%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=SASjs Default 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 ,LogicalServerType=Sps )/*/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 LogicalServerType validity */ %mp_abort( iftrue=( &LogicalServerType ne Sps and &LogicalServerType ne Wks and &LogicalServerType ne Any ) ,mac=&sysmacroname ,msg=%str(Invalid value for LogicalServerType (&LogicalServerType)) ) /** * 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 'ERR' +(-1) "OR: &sysmacroname PATH parameter value must be non-blank"; end; * must have a starting slash ; if ( substr(folderPath,1,1) ne '/' ) then do; put 'ERR' +(-1) "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 'ERR' +(-1) "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 'ERR' +(-1) "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 'ERR' +(-1) "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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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_REQUEST_LOGS"'; put ',var_value="YES"'; put ',var_active=1'; put ',var_desc=''Setting to NO will prevent each request being logged to the'''; put '!!'' MPE_REQUESTS table Default=YES.'';'; 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_xlmap_info'; put '*/'; put 'insert into &lib..mpe_xlmap_info set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_description=''Basel 3 Key Metrics report'''; put ',XLMAP_TARGETLIBDS="&lib..MPE_XLMAP_DATA";'; put '/**'; put '* mpe_xlmap_rules'; put '*/'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:a'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:b'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:b'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:c'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:c'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:d'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:d'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:e'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH 4 R[2]C[0]:f'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[1]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/b'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[2]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/c'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[3]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/d'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[4]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[5]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1/f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[0]C[6]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1a/e'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[1]C[5]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:1a/f'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''MATCH C R[1]C[6]:Common Equity Tier 1 (CET1)'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''ABSOLUTE D10'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/b'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''ABSOLUTE E10'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/c'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[6]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/d'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[8]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/e'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[9]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2/f'''; put ',xlmap_sheet=''/3'''; put ',xlmap_start=''RELATIVE R[10]C[10]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:2a'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''ABSOLUTE H11'''; put ',xlmap_finish=''RELATIVE R[0]C[1]'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-KM1'''; put ',xlmap_range_id=''KM1:3'''; put ',xlmap_sheet=''KM1'''; put ',xlmap_start=''RELATIVE R[12]C[4]'''; put ',xlmap_finish=''ABSOLUTE I13'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-CR2'''; put ',xlmap_range_id=''CR2-sec1'''; put ',xlmap_sheet=''CR2'''; put ',xlmap_start=''ABSOLUTE D8'''; put ',xlmap_finish=''BLANKROW'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''BASEL-CR2'''; put ',xlmap_range_id=''CR2-sec2'''; put ',xlmap_sheet=''CR2'''; put ',xlmap_start=''ABSOLUTE D18'''; put ',xlmap_finish=''LASTDOWN'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''SAMPLE'''; put ',xlmap_range_id=''header'''; put ',xlmap_sheet=''/1'''; put ',xlmap_start=''ABSOLUTE B3'''; put ',xlmap_finish=''ABSOLUTE B8'';'; put 'insert into &lib..mpe_xlmap_rules set'; put 'tx_from=0'; put ',tx_to=''31DEC5999:23:59:59''dt'; put ',xlmap_id=''SAMPLE'''; put ',xlmap_range_id=''data'''; put ',xlmap_sheet=''/1'''; put ',xlmap_start=''ABSOLUTE B13'''; put ',xlmap_finish=''ABSOLUTE E16'';'; 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_XLMAP_INFO'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''XLMAP_ID'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; put ',post_edit_hook=''services/hooks/mpe_xlmap_info_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_XLMAP_RULES'''; put ',num_of_approvals_required=1'; put ',loadtype=''TXTEMPORAL'''; put ',var_txfrom=''TX_FROM'''; put ',var_txto=''TX_TO'''; put ',buskey=''XLMAP_ID XLMAP_RANGE_ID'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; put ',post_edit_hook=''services/hooks/mpe_xlmap_rules_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_XLMAP_DATA'''; put ',num_of_approvals_required=1'; put ',loadtype=''UPDATE'''; put ',buskey=''LOAD_REF XLMAP_ID XLMAP_RANGE_ID ROW_NO COL_NO'''; put ',notes=''Docs: https://docs.datacontroller.io/complex-excel-uploads'''; 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=''Determines which groups can view/edit/approve which tables'''; put ',post_edit_hook=''services/hooks/mpe_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_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_XLMAP_INFO"'; put ',base_col="XLMAP_ID"'; 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_XLMAP_RULES"'; put ',base_col="XLMAP_ID"'; 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=''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_SECURITY"'; 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="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=''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="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 '/* test softselect on numeric var (should be ordered numerically) */'; 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_BESTNUM"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_X_TEST.SOME_BESTNUM"'; 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 'insert into &lib..MPE_VALIDATIONS set'; put 'tx_from=0'; put ',base_lib="&lib"'; put ',base_ds="MPE_XLMAP_INFO"'; put ',base_col="XLMAP_ID"'; put ',rule_type=''SOFTSELECT'''; put ',rule_value="&lib..MPE_XLMAP_RULES.XLMAP_ID"'; 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_ELEVEN'; put '1,2,3 = "Disagree"'; put '4 = "Neither Agree nor Disagree"'; put '5,6,7 = "Agree"'; put ';'; put 'VALUE LIKERT7_SISTERS'; 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_XLMAP_DATA('; put 'LOAD_REF char(32) ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_RANGE_ID char(32) ¬null,'; put 'ROW_NO num ¬null,'; put 'COL_NO num ¬null,'; put 'VALUE_TXT char(4000)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify MPE_XLMAP_DATA;'; put 'index create'; put 'pk_MPE_XLMAP_DATA=(load_ref xlmap_id xlmap_range_id row_no col_no)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_xlmap_info('; put 'tx_from num ¬null,'; put 'tx_to num ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_DESCRIPTION char(1000) ¬null,'; put 'XLMAP_TARGETLIBDS char(41) ¬null'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_xlmap_info;'; put 'index create'; put 'pk_mpe_xlmap_info=(tx_to xlmap_id)'; put '/nomiss unique;'; put 'quit;'; put 'proc sql;'; put 'create table &lib..mpe_xlmap_rules('; put 'tx_from num ¬null,'; put 'tx_to num ¬null,'; put 'XLMAP_ID char(32) ¬null,'; put 'XLMAP_RANGE_ID char(32) ¬null,'; put 'XLMAP_SHEET char(32) ¬null,'; put 'XLMAP_START char(1000) ¬null,'; put 'XLMAP_FINISH char(1000)'; put ');quit;'; put 'proc datasets lib=&lib noprint;'; put 'modify mpe_xlmap_rules;'; put 'index create'; put 'pk_mpe_xlmap_rules=(tx_to xlmap_id xlmap_range_id)'; 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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=SASjs Default 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 ',LogicalServerType=Sps'; 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 '/* check LogicalServerType validity */'; put '%mp_abort('; put 'iftrue=('; put '&LogicalServerType ne Sps'; put 'and &LogicalServerType ne Wks'; put 'and &LogicalServerType ne Any'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for LogicalServerType (&LogicalServerType))'; 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(''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 ''ERR'' +(-1) "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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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=SASjs Default 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 ',LogicalServerType=Sps'; 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 '/* check LogicalServerType validity */'; put '%mp_abort('; put 'iftrue=('; put '&LogicalServerType ne Sps'; put 'and &LogicalServerType ne Wks'; put 'and &LogicalServerType ne Any'; put ')'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid value for LogicalServerType (&LogicalServerType))'; 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(''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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '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 ';'; put '/* get latest reason text */'; put 'create table work.reviews as'; put 'select a.*'; put ',b.reviewed_on_dttm'; put ',b.reviewed_by_nm as approver'; put ',b.review_reason_txt'; put 'from work.submits a'; put 'left join &mpelib..mpe_review b'; put 'on a.table_id=b.table_id'; put 'order by a.table_id desc, b.reviewed_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.reviews;'; put 'by descending table_id descending reviewed_on_dttm;'; put 'if first.table_id;'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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 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 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_getuniquename(prefix=MC);'; put '&prefix.%substr(%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32-%length(&prefix))'; put '%mend mf_getuniquename;'; 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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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_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_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 '%mp_abort('; put 'iftrue=(%mf_existds(&libds)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(&libds could not be found)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_existvar(&libds,FMTROW)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(FMTROW not found in &libds)'; put ')'; 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=:''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 'data _null_;'; put 'set &libds;'; put 'if missing(fmtrow) then do;'; put 'call symputx(''msg'',"missing fmtrow in format: "!!FMTNAME);'; 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 '%local cnt;'; put 'proc sql noprint;'; put 'select count(distinct catx(''|'',type,fmtname,fmtrow)) into: cnt from &libds;'; put '%mp_abort('; put 'iftrue=(&cnt ne %mf_nobs(&libds))'; put ',mac=&sysmacroname'; put ',msg=%str(Non-unique primary key on &libds)'; 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 '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=%sysfunc(datetime())'; 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 '%else %do;'; put '/* is full replace so treat all staged records as new in diff screen */'; put 'data work.outds_mod work.outds_add ;'; put 'set work.&staging_ds;'; put 'output work.outds_add;'; put 'run;'; put '/* previous table will be considered fully deleted */'; put 'data work.outds_del;'; put 'set &lib..&ds;'; put 'run;'; 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 %str(WARN)ING: 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(''LOAD_REF'',TABLE);'; put '/* DIFFTIME is when the DIFF was generated on the frontend */'; put 'call symputx(''DIFFTIME'',DIFFTIME);'; put 'putlog (_all_)(=);'; put 'run;'; put '%global action is_err err_msg 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="&LOAD_REF";'; 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 load_ref)=0)'; put ',mac=&_program'; put ',msg=%str(Missing: difftime orig_libds libds load_ref)'; 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="&LOAD_REF" 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 %str(WARN)ING: &=authcheck &=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/&LOAD_REF/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/&LOAD_REF/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 (has same name as load_ref) */'; put '%let tmplib=%mf_getuniquelibref();'; put 'libname &tmplib "&mpelocapprovals/&LOAD_REF";'; put 'data STAGING_DS;'; put 'set &tmplib..&LOAD_REF;'; 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="&LOAD_REF";'; 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(&LOAD_REF 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(&LOAD_REF 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="&LOAD_REF";'; 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=&LOAD_REF'; 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="&LOAD_REF";'; 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/&LOAD_REF/&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 "&LOAD_REF"'; 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 'data work.outds_del; run;'; put '%end;'; put 'libname approve "&mpelocapprovals/&LOAD_REF";'; 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/&LOAD_REF/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="&LOAD_REF";'; 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(&LOAD_REF 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(&LOAD_REF 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="&LOAD_REF";'; 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=&LOAD_REF'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 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 mpe_dsmeta(libds, outds=dsmeta);'; put '%local ddsd ddld notes lenstmt;'; put '%let lenstmt=length ods_table $18 name $100 value $1000;'; put '%let libds=%upcase(&libds);'; put '%mp_dsmeta(&libds, outds=&outds)'; put 'data _null_;'; put 'set &mpelib..mpe_datadictionary;'; put 'where &dc_dttmtfmt < tx_to & dd_source=%upcase("&libds") & dd_type=''TABLE'';'; put 'call symputx(''ddsd'',dd_shortdesc,''l'');'; put 'call symputx(''ddld'',dd_longdesc,''l'');'; put 'run;'; put 'data &outds;'; put '&lenstmt;'; put 'if last then do;'; put 'ODS_TABLE=''MPE_DATADICTIONARY'';'; put 'NAME=''DD_SHORTDESC'';'; put 'VALUE="&ddsd";'; put 'output;'; put 'NAME=''DD_LONGDESC'';'; put 'VALUE="&ddld";'; put 'output;'; put 'end;'; put 'set &outds end=last;'; put 'output;'; put 'run;'; put 'data _data_;'; put 'set &mpelib..mpe_tables;'; put 'where libref="%scan(&libds,1,.)"'; put '& dsn="%scan(&libds,2,.)"'; put '& &dc_dttmtfmt 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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_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 SOREN 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 '@li CLS_FLG - set to 0 if there are no CLS rules (everything editable)'; put 'else set to 1 (CLS rules exist)'; put '@li ISMAP - set to 1 if the target DS is an excel map target, else 0'; 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 '
versions
'; put 'history of DC versions for this particular table'; 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_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_dsmeta.sas'; put '@li mpe_getlabels.sas'; put '@li mpe_getversions.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 '%let ismap=0;'; put 'proc sql noprint;'; put 'select count(*) into: ismap from &mpelib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&orig_libds" and &dc_dttmtfmt. le TX_TO;'; 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 'if "&orig_libds"="&mpelib..MPE_XLMAP_DATA" or &ismap ne 0 then ismap=1;'; put 'else ismap=0;'; 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 ',&col as tmp_order'; put 'from &lib..&ds'; put 'order by tmp_order;'; put '/* ensure both numerics and char vals are ordered correctly */'; put 'data work.dqdata&x (drop=tmp_order);'; put 'set work.dqdata&x;'; put 'selectbox_order=_n_;'; put 'run;'; 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 '/* order by selectbox_order then the value */'; put 'by base_col selectbox_order rule_data;'; 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 '%mpe_dsmeta(&libds, outds=dsmeta)'; put '%mpe_getversions(&mpelib,'; put '%scan(&orig_libds,1,.),'; put '%scan(&orig_libds,2,.),'; put 'outds=versions'; put ')'; 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,versions)'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 SOREN 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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=getxlmaps; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 getxlmaps.sas'; put '@brief Returns a list of rules and other info for a specific xlmap_id'; put '

Service Inputs

'; put '
getxlmaps_in
'; put '|XLMAP_ID|'; put '|---|'; put '|Sample|'; put '

Service Outputs

'; put '
xlmaprules
'; put 'Filtered output of the dc.MPE_XLMAP_RULES table'; put '|XLMAP_ID|XLMAP_RANGE_ID|XLMAP_SHEET|XLMAP_START|XLMAP_FINISH|'; put '|---|---|---|---|---|'; put '|Sample|Range1|Sheet1|ABSOLUTE A1| |'; put '|Sample|Range2|Sheet1|RELATIVE R[2]C[2]|ABSOLUTE H11|'; put '
xlmapinfo
'; put 'Extra info for a map id'; put '|TARGET_DS|'; put '|---|'; put '|DCXXX.MPE_XLMAP_DATA|'; 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 _null_;'; put 'set work.getxlmaps_in;'; put 'putlog (_all_)(=);'; put 'call symputx(''xlmap_id'',xlmap_id);'; put 'run;'; put 'proc sql noprint;'; put 'create table work.xlmaprules as'; put 'select xlmap_id'; put ',XLMAP_RANGE_ID'; put ',XLMAP_SHEET'; put ',XLMAP_START'; put ',XLMAP_FINISH'; put 'from &mpelib..MPE_XLMAP_RULES'; put 'where &dc_dttmtfmt. lt tx_to and xlmap_id="&xlmap_id"'; put 'order by xlmap_sheet, xlmap_range_id;'; put '%global target_ds;'; put 'select XLMAP_TARGETLIBDS into: target_ds'; put 'from &mpelib..MPE_XLMAP_INFO'; put 'where &dc_dttmtfmt. lt tx_to and xlmap_id="&xlmap_id";'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc)'; put ')'; put 'data work.xlmapinfo;'; put 'target_ds=coalescec("&target_ds","&mpelib..MPE_XLMAP_DATA");'; put 'output;'; put 'stop;'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,xlmaprules)'; put '%webout(OBJ,xlmapinfo)'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 ',reason_txt = symget(''submitted_reason_txt'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 rk;'; 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 'if not missing(RK_UNDERLYING) then call symputx(''rk'',buskey);'; put 'run;'; put '%mp_lockfilecheck(libds=&orig_libds)'; put 'data compare;'; put 'set &libds(drop=&txfrom &txto &processed &rk);'; 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=restore; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mpe_checkrestore(load_ref,'; put 'outresult=ALLOW_RESTORE,'; put 'outreason=REASON'; put ');'; put '%global &outresult &outreason;'; put '%let &outresult=NO;'; put '%let &outreason=NOTFOUND;'; put '/* check if there is actually a version to restore */'; put '%local chk;'; put '%let chk=0;'; put 'proc sql noprint;'; put 'select count(*) into: chk from &dc_libref..mpe_audit'; put 'where load_ref="&load_ref";'; put '%if &chk=0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=No entry for &load_ref in MPE_AUDIT;'; put '%return;'; put '%end;'; put '/* grab user groups */'; put '%local user;'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put '/* check if user is admin */'; put '%local is_admin;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from work.groups'; put 'where groupname="&dc_admin_group";'; put '%if &is_admin>0 %then %do;'; put '%let allow_restore=YES;'; put '%let reason=IS ADMIN;'; put '%return;'; put '%end;'; put '/* check if user has basic access */'; put '%local libds;'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: libds'; put 'from &mpelib..mpe_submit'; put 'where TABLE_ID="&load_ref";'; put '%mpe_accesscheck(&libds,outds=work.access_check'; put ',user=&user'; put ',access_level=EDIT'; put ')'; put '%if %mf_nobs(access_check)=0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=No access in MPE_TABLES;'; put '%return;'; put '%end;'; put '/* check if user has column level security rules */'; put 'proc sql;'; put 'create table work.cls_rules as'; put 'select *'; put 'from &mpelib..mpe_column_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("EDIT",''ALL'')'; put 'and CLS_ACTIVE=1'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from work.groups)'; put 'and CLS_LIBREF="%upcase(&base_lib)"'; put 'and CLS_TABLE="%upcase(&base_ds)";'; put '%if %mf_nobs(work.cls_rules)>0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=User has restrictions in MPE_COLUMN_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.cls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '/* check if user has row level security rules */'; put 'proc sql;'; put 'create table work.rls_rules as'; put 'select *'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("EDIT",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="&base_lib"'; put 'and rls_table="&base_ds"'; put 'and rls_active=1;'; put '%if %mf_nobs(work.rls_rules)>0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=User has restrictions in MPE_ROW_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.rls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %do;'; put '%let allow_restore=YES;'; put '%let reason=CHECKS PASSED;'; put '%end;'; put '%mend mpe_checkrestore;'; 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 ',reason_txt = symget(''submitted_reason_txt'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is creatd with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; 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 '%local vlen&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 '%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 '/** @cond */'; put '%macro mp_stripdiffs(libds'; put ',loadref'; put ',difftable'; put ',filtervar=0'; put ',outds=work.mp_stripdiffs'; 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 '%let libds=%upcase(&libds);'; put '/* safety checks */'; put '%mp_abort(iftrue= (&syscc ne 0)'; put ',mac=&sysmacroname'; put ',msg=%str(SYSCC=&syscc on entry. Clean session required!)'; put ')'; put '%let libds=%upcase(&libds);'; put '%mp_abort(iftrue= (%mf_islibds(&libds)=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Invalid library.dataset reference - %superq(libds))'; put ')'; put '/* set up unique and temporary vars */'; put '%local ds1 ds2 ds3 ds4 ds5 fref1 filterstr;'; put '%let fref1=%mf_getuniquefileref();'; put '%if &filtervar ne 0 %then %let filterstr=%superq(&filtervar);'; put '%else %let filterstr=%str(1=1);'; put '/* get timestamp of the diff to be reverted */'; put '%local ts;'; put 'proc sql noprint;'; put 'select put(processed_dttm,datetime19.6) into: ts'; put 'from &difftable where load_ref="&loadref";'; put '%mp_abort(iftrue= (&sqlobs=0)'; put ',mac=&sysmacroname'; put ',msg=%str(Load ref %superq(loadref) not found!)'; put ')'; put '/* extract diffs for this base table from this timestamp onwards */'; put '%let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_diffs));'; put 'create table &ds1 (drop=libref dsn) as'; put 'select * from &difftable'; put 'where upcase(cats(libref))="%scan(&libds,1,.)"'; put 'and upcase(cats(dsn))="%scan(&libds,2,.)"'; put 'and processed_dttm ge "&ts"dt'; put 'order by processed_dttm desc, key_hash, is_pk;'; put '/* extract key values only */'; put '%let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_pks));'; put '%local keyhash processed;'; put '%let keyhash=%upcase(%mf_getuniquename(prefix=mpsdvar_keyhash));'; put '%let processed=%upcase(%mf_getuniquename(prefix=mpsdvar_processed));'; put 'create table &ds2 as'; put 'select key_hash as &keyhash,'; put 'tgtvar_nm,'; put 'tgtvar_type,'; put 'coalescec(oldval_char,newval_char) as charval,'; put 'coalesce(oldval_num, newval_num) as numval,'; put 'processed_dttm as &processed'; put 'from &ds1'; put 'where is_pk=1'; put 'order by &keyhash, &processed;'; put '/* grab pk values */'; put '%local pk;'; put 'select distinct upcase(tgtvar_nm) into: pk separated by '' '' from &ds2;'; put '%let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_keychar));'; put 'proc transpose data=&ds2(where=(tgtvar_type=''C''))'; put 'out=&ds3(drop=_name_);'; put 'by &keyhash &processed;'; put 'id TGTVAR_NM;'; put 'var charval;'; put 'run;'; put '%let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_keynum));'; put 'proc transpose data=&ds2(where=(tgtvar_type=''N''))'; put 'out=&ds4(drop=_name_);'; put 'by &keyhash &processed;'; put 'id TGTVAR_NM;'; put 'var numval;'; put 'run;'; put '/* shorten the lengths */'; put '%mp_ds2squeeze(&ds3,outds=&ds3)'; put '%mp_ds2squeeze(&ds4,outds=&ds4)'; put '/* now merge to get all key values and de-dup */'; put '%let ds5=%upcase(work.%mf_getuniquename(prefix=mpsd_merged));'; put 'data &ds5;'; put 'length &keyhash $32 &processed 8;'; put 'merge &ds3 &ds4;'; put 'by &keyhash &processed;'; put 'if not missing(&keyhash);'; put 'run;'; put 'proc sort data=&ds5 nodupkey;'; put 'by &pk;'; put 'run;'; put '/* join to base table for preliminary stage DS */'; put 'proc sql;'; put 'create table &outds as select "No " as _____DELETE__THIS__RECORD_____'; put '%do x=1 %to %sysfunc(countw(&pk,%str( )));'; put ',a.%scan(&pk,&x,%str( ))'; put '%end;'; put '%local notpkcols;'; put '%let notpkcols=%upcase(%mf_getvarlist(&libds));'; put '%let notpkcols=%mf_wordsinstr1butnotstr2(str1=¬pkcols,str2=&pk);'; put '%do x=1 %to %sysfunc(countw(¬pkcols,%str( )));'; put ',b.%scan(¬pkcols,&x,%str( ))'; put '%end;'; put 'from &ds5 a'; put 'left join &libds (where=(&filterstr)) b'; put 'on 1=1'; put '%do x=1 %to %sysfunc(countw(&pk,%str( )));'; put 'and a.%scan(&pk,&x,%str( ))=b.%scan(&pk,&x,%str( ))'; put '%end;'; put ';'; put '/* create SAS code to apply to stage_ds */'; put 'data _null_;'; put 'set &ds1;'; put 'file &fref1 lrecl=33000;'; put 'length charval $32767;'; put 'if _n_=1 then put ''proc sql noprint;'';'; put 'by descending processed_dttm key_hash is_pk;'; put 'if move_type=''M'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set " @@;'; put 'end;'; put 'if IS_PK=0 then do;'; put 'put " " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'if not last.is_pk then put '','';'; put 'end;'; put 'else do;'; put 'if first.is_pk then put " where 1=1 " @@;'; put 'put " and " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'end;'; put 'else if move_type=''A'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set _____DELETE__THIS__RECORD_____=''Yes'' where 1=1 "@@;'; put 'end;'; put '/* gating if - as only need PK now */'; put 'if is_pk=1;'; put 'put '' AND '' tgtvar_nm ''='' @@;'; put 'cnt=count(newval_char,''"'');'; put 'charval=quote(trim(substr(newval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put newval_num @@;'; put 'end;'; put 'else if move_type=''D'' then do;'; put 'if first.key_hash then do;'; put 'put "update &outds set _____DELETE__THIS__RECORD_____=''No'' " @@;'; put 'end;'; put 'if IS_PK=0 then do;'; put 'put " ," tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'else do;'; put 'if first.is_pk then put " where 1=1 " @@;'; put 'put " and " tgtvar_nm ''='' @@;'; put 'cnt=count(oldval_char,''"'');'; put 'charval=quote(trim(substr(oldval_char,1,32765-cnt)));'; put 'if tgtvar_type=''C'' then put charval @@;'; put 'else put oldval_num @@;'; put 'end;'; put 'end;'; put 'if last.key_hash then put '';'';'; put 'run;'; put '/* apply the modification statements */'; put '%inc &fref1/source2 lrecl=33000;'; put '%if &mdebug=0 %then %do;'; put 'proc sql;'; put 'drop table &ds1, &ds2, &ds3, &ds4, &ds5;'; put 'file &fref1 clear;'; put '%end;'; put '%else %do;'; put 'data _null_;'; put 'infile &fref1;'; put 'input;'; put 'if _n_=1 then putlog "Contents of SQL adjustments";'; put 'putlog _infile_;'; put 'run;'; put '%end;'; put '%mend mp_stripdiffs;'; put '/** @endcond */'; 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 restore.sas'; put '@brief Restores a data version'; put '@details Only applies if the history is stored in the audit table'; put '

SAS Macros

'; put '@li dc_assignlib.sas'; put '@li mf_nobs.sas'; put '@li mp_abort.sas'; put '@li mp_ds2csv.sas'; put '@li mp_stripdiffs.sas'; put '@li mpeinit.sas'; put '@li mpe_checkrestore.sas'; put '@li mpe_loader.sas'; put '

Service Inputs

'; put '
restore_in
'; put '|LOAD_REF:$32|'; put '|---|'; put '|DCXXXXXX|'; 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 loadref=;'; put 'data _null_;'; put 'set work.restore_in;'; put 'call symputx(''loadref'',load_ref);'; put 'run;'; put '/**'; put '* Check if user has basic access permission to RESTORE the table'; put '*/'; put '%put checking access;'; put '%global allow_restore reason;'; put '%mpe_checkrestore(&loadref,outresult=ALLOW_RESTORE,outreason=REASON)'; put '%mp_abort(iftrue= (&ALLOW_RESTORE ne YES)'; put ',mac=&_program..sas'; put ',msg=%str(Cannot restore because: &reason)'; put ')'; put '/* grab the base DS */'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: tgtds'; put 'from &mpelib..mpe_submit'; put 'where TABLE_ID="&loadref";'; put '/* find the audit table */'; put 'select coalescec(audit_libds,"&mpelib..MPE_AUDIT"), loadtype, var_txto'; put 'into: difftable, :loadtype, :txto'; put 'from &mpelib..MPE_TABLES'; put 'where libref="%scan(&tgtds,1,.)"'; put '& dsn="%scan(&tgtds,2,.)"'; put '& &dc_dttmtfmt0)'; put ',mac=&_program..sas'; put ',msg=%str(syscc=&syscc after stripdiffs)'; put ')'; put '%mp_abort(iftrue= (%mf_nobs(work.mp_stripdiffs)=0)'; put ',mac=&_program..sas'; put ',msg=%str(THERE ARE NO DIFFERENCES TO APPLY)'; put ')'; put '/* create a new load ref */'; 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 */'; put '%let dir=&mpelocapprovals/&mperef;'; put '%mf_mkdir(&dir)'; put 'options notes mprint;'; put 'libname approve "&dir";'; 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 '/* copy the diffs dataset */'; put 'data approve.jsdset;'; put 'length _____DELETE__THIS__RECORD_____ $3;'; put 'if 0 then call missing(_____DELETE__THIS__RECORD_____);'; put 'set work.mp_stripdiffs;'; put 'run;'; put '/* export to csv */'; put '%mp_ds2csv(approve.jsdset'; put ',dlm=COMMA'; put ',outfile="&dir/%trim(&tgtds).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=Restoring &loadref'; 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 work.restore_out;'; put 'loadref="&mperef";'; put 'run;'; put '%webout(OPEN)'; put '%webout(OBJ,restore_out)'; 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=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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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 work.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 '/* ensure the submitter is included on the email */'; put '%local isThere userdisp user_eml;'; put '%let isThere=0;'; put 'select count(*) into: isThere from &syslast where alert_user="&from_user";'; put '%if &isThere=0 %then %do;'; put 'select user_displayname, user_email'; put 'into: userdisp trimmed, :user_eml trimmed'; put 'from &mpelib..mpe_emails'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and user_name="&from_user";'; put 'insert into work.users'; put 'set alert_user="&from_user"'; put ',user_displayname="&userdisp"'; put ',user_email="&user_eml";'; put '%end;'; put '/* if no email / displayname is provided, then extract from metadata */'; put 'data work.emails;'; put 'set work.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 '/* dump contents for debugging */'; put 'if _n_<21 then putlog (_all_)(=);'; put 'run;'; put '%local emails;'; put 'proc sql noprint;'; put 'select quote(trim(user_email)) into: emails separated by '' '' from work.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_xlmapvalidate(mperef,inds,dclib,tgtds);'; put '%local ismap;'; put 'proc sql noprint;'; put 'select count(*) into: ismap'; put 'from &dclib..mpe_xlmap_info'; put 'where XLMAP_TARGETLIBDS="&tgtds" and &dc_dttmtfmt. le TX_TO ;'; put '%if "&tgtds"="&dclib..MPE_XLMAP_DATA" or &ismap>0 %then %do;'; put 'data &inds;'; put 'set &inds;'; put 'LOAD_REF="&mperef";'; put 'run;'; put '%end;'; put '%mend mpe_xlmapvalidate;'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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 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 $2000 fref fref2 $8 file_or_folder $6 filename $255'; 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 ',reason_txt = symget(''submitted_reason_txt'');'; 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 '/* 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 _____DELETE__THIS__RECORD_____ length=$3 &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 warnings */'; 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="!!cats(&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 '/* If a Complex Excel Upload, needs to have the load ref added to the table */'; put '%mpe_xlmapvalidate(&mperef,work.staging_ds,&mpelib,&orig_libds)'; put '/* Run the Post Edit Hook prior to creation of staging folder */'; 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 'vlen=varlen(dsid,i);'; put 'if vartype(dsid,i)=''C'' then header=cats(varnm,'':$char'',vlen,''.'');'; 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 '/**'; put '* there is not much point importing a short length numeric like this,'; put '* eg with best4., as the resulting variable will still be stored as'; put '* length 8. We need a length or format statement to ensure variable'; put '* is creatd with the smaller length...'; put '**/'; put 'else if vlen<8 then header=cats(varnm,'':best'',vlen,''.'');'; 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 '%local vlen&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'') then ref=symget(''_WEBIN_FILEREF1'');'; put 'else if symexist(''sasjs_tables'') then ref=''0ref''; /* no fileref created */'; put 'else ref=''indata1'';'; put 'call symputx(''ref'',ref);'; put 'putlog ref=;'; put 'run;'; put '%mp_binarycopy(inref=&ref,outloc="&dir/_WEBIN_FILEREF1.txt",iftrue=&ref ne 0ref)'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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_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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_SECURITY table'; put '@details Post edit hooks provide additional backend validation against'; put 'user-sourced data. The incoming dataset is always `work.staging_ds` and this'; put 'file is included from the mpe_loader.sas macro.'; put 'Available (at runtime) macro variables:'; put '@li DC_LIBREF - The DC control library for your site'; put '@li LIBREF - The library of the dataset being edited (is assigned)'; put '@li DS - The dataset being edited'; put '**/'; put '/* ensure upcase and check access level values*/'; put '%let errval=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'ACCESS_LEVEL=upcase(ACCESS_LEVEL);'; put 'if ACCESS_LEVEL not in (''EDIT'',''APPROVE'',''VIEW'',''SIGNOFF'',''AUDIT'') then do;'; put 'putlog "ERR" +(-1) "OR: invalid ACCESS_LEVEL - " access_level;'; put 'call symputx(''errval'',1);'; put 'call symputx(''errmsg'',"Invalid ACCESS_LEVEL: "!!access_level);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&errval=1)'; put ',mac=mpe_security_postedit.sas'; put ',msg=%str(&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_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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* PK fields should not be upcased if we are trying to delete records */'; put 'if upcase(_____DELETE__THIS__RECORD_____) ne "YES" then do;'; put 'LIBREF=upcase(LIBREF);'; put 'DSN=upcase(DSN);'; put 'end;'; 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 'rk_underlying=upcase(rk_underlying);'; 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 'DSN=scan(dsn,1,''-'')!!''-FC'';'; put 'end;'; put '/* convert tabs into spaces */'; put 'buskey=translate(buskey," ","09"x);'; put 'rk_underlying=translate(rk_underlying," ","09"x);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 service=mpe_xlmap_info_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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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_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_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 SOREN 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 Post Edit Hook script for the MPE_XLMAP_INFO 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 '

SAS Macros

'; put '@li mf_existds.sas'; put '@li mf_getvarlist.sas'; put '@li mf_wordsinstr1butnotstr2.sas'; put '@li dc_assignlib.sas'; put '@li mp_validatecol.sas'; put '**/'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put '/* apply the first excel map to all cells */'; put 'length tgtds $41;'; put 'retain tgtds;'; put 'drop tgtds is_libds;'; put 'if _n_=1 then do;'; put 'if missing(XLMAP_TARGETLIBDS) then tgtds="&dc_libref..MPE_XLMAP_DATA";'; put 'else tgtds=upcase(XLMAP_TARGETLIBDS);'; put '%mp_validatecol(XLMAP_TARGETLIBDS,LIBDS,is_libds)'; put 'call symputx(''tgtds'',tgtds);'; put 'call symputx(''is_libds'',is_libds);'; put 'end;'; put 'XLMAP_TARGETLIBDS=tgtds;'; put 'run;'; put '%mp_abort(iftrue=(&is_libds ne 1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=Invalid target dataset (&tgtds)'; put ')'; put '/**'; put '* make sure that the supplied target dataset exists and'; put '* has the necessary columns'; put '*/'; put '%dc_assignlib(READ,%scan(&tgtds,1,.))'; put '%mp_abort(iftrue=(%mf_existds(libds=&tgtds) ne 1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=Target dataset (&tgtds) could not be opened'; put ')'; put '%let tgtvars=%upcase(%mf_getvarlist(&tgtds));'; put '%let srcvars=%upcase(%mf_getvarlist(&dc_libref..MPE_XLMAP_DATA));'; put '%let badvars1=%mf_wordsInStr1ButNotStr2(Str1=&srcvars,Str2=&tgtvars);'; put '%let badvars2=%mf_wordsInStr1ButNotStr2(Str1=&tgtvars,Str2=&srcvars);'; put '%mp_abort(iftrue=(%length(&badvars1.X)>1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=%str(Target dataset (&tgtds) has missing vars: &badvars1)'; put ')'; put '%mp_abort(iftrue=(%length(&badvars2.X)>1)'; put ',mac=mpe_xlmap_info_postedit'; put ',msg=%str(Target dataset (&tgtds) has unrecognised vars: &badvars2)'; put ')'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=mpe_xlmap_rules_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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_XLMAP_RULES 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 '**/'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put '/* ensure uppercasing */'; put 'XLMAP_ID=upcase(XLMAP_ID);'; put 'run;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=sample_xlmap_data_postapprove; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 Sample XLMAP Data hook program (sample_xlmap_data_postapprove)'; put '@details This hook script should NOT be modified in place, as the changes'; put 'would be lost in your next Data Controller deployment.'; put 'Instead, create a copy of this hook script and place it OUTSIDE the'; put 'Data Controller metadata folder.'; put 'Available macro variables:'; put '@li LOAD_REF - The Load Reference (unique upload id)'; put '@li ORIG_LIBDS - The target library.dataset that was just loaded'; put '**/'; put 'data _null_;'; put 'set work.staging_ds;'; put 'putlog ''load ref is in the staged data: '' load_ref;'; put 'stop;'; put 'run;'; put '%put the unique identifier (LOAD_REF) is also a macro variable: &LOAD_REF;'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=sample_xlmap_data_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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 Sample XLMAP Data hook program'; put '@details This hook script should NOT be modified in place, as the changes'; put 'would be lost in your next Data Controller deployment.'; put 'Instead, create a copy of this hook script and place it OUTSIDE the'; put 'Data Controller metadata folder.'; 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 target dataset being loaded'; put '**/'; put '%let abort=0;'; put '%let errmsg=;'; put 'data work.staging_ds;'; put 'set work.staging_ds;'; put 'length errmsg $1000;'; put 'drop err:;'; put '/* KM1 validations */'; put 'if XLMAP_ID=''BASEL-KM1'' then do;'; put 'if XLMAP_RANGE_ID=''KM1:a'' & input(value_txt,8.)<100 then do;'; put 'errmsg=''Should be greater than 100'';'; put 'err=1;'; put 'end;'; put 'end;'; put '/* CR2 Validations */'; put 'if XLMAP_ID=''BASEL-CR2'' then do;'; put 'if XLMAP_RANGE_ID=''CR2-sec1'' & row_no=3 & input(value_txt,8.)>0 then do;'; put 'errmsg=''Should be negative'';'; put 'err=1;'; put 'end;'; put 'end;'; put '/* publish error message */'; put 'if err=1 then do;'; put 'errmsg=catx('' '',xlmap_range_id,'':'',value_txt,''->'',errmsg);'; put 'call symputx(''errmsg'',errmsg);'; put 'call symputx(''abort'',1);'; put 'end;'; put 'run;'; put '%mp_abort(iftrue=(&abort ne 0)'; put ',mac=xlmap_data_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 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 'bazaar,#98777b'; put 'beaver,#9f8170'; put 'bisque,#ffe4c4'; put 'blond,#faf0be'; put 'blush,#de5d83'; put 'bole,#79443b'; put 'bone,#e3dac9'; put 'brass,#b5a642'; put 'bronze,#cd7f32'; put 'bubbles,#e7feff'; put 'buff,#f0dc82'; put 'camel,#c19a6b'; put 'canary,#ffff99'; put 'capri,#00bfff'; put 'cardinal,#c41e3a'; put 'carmine,#ff0040'; put 'celadon,#ace1af'; put 'celeste,#b2ffff'; put 'cerise,#de3163'; put 'cerulean,#007ba7'; put 'cherry,#de3163'; put 'chestnut,#cd5c5c'; put 'cinnabar,#e34234'; put 'cinnamon,#d2691e'; put 'citrine,#e4d00a'; put 'cobalt,#0047ab'; put 'coffee,#6f4e37'; put 'copper,#b87333'; put 'coral,#ff7f50'; put 'corn,#fbec5d'; put 'cornsilk,#fff8dc'; put 'cream,#fffdd0'; put 'crimson,#dc143c'; put 'daffodil,#ffff31'; put 'denim,#1560bd'; put 'desert,#c19a6b'; put 'drab,#967117'; put 'ecru,#c2b280'; put 'eggplant,#614051'; put 'eggshell,#f0ead6'; put 'emerald,#50c878'; put 'fallow,#c19a6b'; put 'fawn,#e5aa70'; put 'fern,#71bc78'; put 'flame,#e25822'; put 'flax,#eedc82'; put 'folly,#ff004f'; put 'fuchsia,#ff00ff'; put 'fulvous,#e48400'; put 'gamboge,#e49b0f'; put 'ginger,#b06500'; put 'glaucous,#6082b6'; put 'glitter,#e6e8fa'; put 'gold,#ffd700'; put 'grullo,#a99a86'; put 'icterine,#fcf75e'; put 'indigo,#4b0082'; put 'iris,#5a4fcf'; put 'ivory,#fffff0'; put 'jade,#00a86b'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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_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 mpe_accesscheck('; put 'base_table'; put ',outds=med_accesscheck /* WORK table to contain access details */'; put ',user= /* metadata user to check for */'; put ',access_level=APPROVE'; put ',cntl_lib_var=MPELIB'; put ');'; put '%if &user= %then %let user=%mf_getuser();'; put '%mp_abort('; put 'iftrue=(%index(&outds,.)>0 and %upcase(%scan(&outds,1,.)) ne WORK)'; put ',mac=mpe_accesscheck'; put ',msg=%str(outds should be a WORK table)'; put ')'; put '%mp_abort('; put 'iftrue=(%mf_verifymacvars(base_table user access_level)=0)'; put ',mac=mpe_accesscheck'; put ',msg=%str(Missing base_table/user access_level variables)'; put ')'; put '/* make unique temp table vars */'; put '%local tempds1 tempds2;'; put '%let tempds1=%mf_getuniquename(prefix=usergroups);'; put '%let tempds2=%mf_getuniquename(prefix=tablegroups);'; put '/* get list of user groups */'; put '%mpe_getgroups(user=&user,outds=&tempds1)'; put '/* get list of groups with access for that table */'; put 'proc sql;'; put 'create table &tempds2 as'; put 'select distinct sas_group'; put 'from &&&cntl_lib_var...mpe_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and access_level="&access_level"'; put 'and ('; put '(libref="%scan(&base_table,1,.)" and upcase(dsn)="%scan(&base_table,2,.)")'; put 'or (libref="%scan(&base_table,1,.)" and dsn="*ALL*")'; put 'or (libref="*ALL*")'; put ');'; put '%if &_debug ge 131 %then %do;'; put 'data _null_;'; put 'set &tempds1;'; put 'putlog (_all_)(=);'; put 'run;'; put 'data _null_;'; put 'set &tempds2;'; put 'putlog (_all_)(=);'; put 'run;'; put '%end;'; put 'proc sql;'; put 'create table &outds as'; put 'select * from &tempds1'; put 'where groupname="&mpeadmins"'; put 'or groupname in (select * from &tempds2);'; put '%put &sysmacroname: base_table=&base_table;'; put '%put &sysmacroname: 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_nobs(libds'; put ')/*/STORE SOURCE*/;'; put '%mf_getattrn(&libds,NLOBS)'; put '%mend mf_nobs;'; put '%macro mpe_checkrestore(load_ref,'; put 'outresult=ALLOW_RESTORE,'; put 'outreason=REASON'; put ');'; put '%global &outresult &outreason;'; put '%let &outresult=NO;'; put '%let &outreason=NOTFOUND;'; put '/* check if there is actually a version to restore */'; put '%local chk;'; put '%let chk=0;'; put 'proc sql noprint;'; put 'select count(*) into: chk from &dc_libref..mpe_audit'; put 'where load_ref="&load_ref";'; put '%if &chk=0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=No entry for &load_ref in MPE_AUDIT;'; put '%return;'; put '%end;'; put '/* grab user groups */'; put '%local user;'; put '%let user=%mf_getuser();'; put '%mpe_getgroups(user=&user,outds=work.groups)'; put '/* check if user is admin */'; put '%local is_admin;'; put '%let is_admin=0;'; put 'proc sql;'; put 'select count(*) into: is_admin from work.groups'; put 'where groupname="&dc_admin_group";'; put '%if &is_admin>0 %then %do;'; put '%let allow_restore=YES;'; put '%let reason=IS ADMIN;'; put '%return;'; put '%end;'; put '/* check if user has basic access */'; put '%local libds;'; put 'proc sql noprint;'; put 'select cats(base_lib,''.'',base_ds) into: libds'; put 'from &mpelib..mpe_submit'; put 'where TABLE_ID="&load_ref";'; put '%mpe_accesscheck(&libds,outds=work.access_check'; put ',user=&user'; put ',access_level=EDIT'; put ')'; put '%if %mf_nobs(access_check)=0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=No access in MPE_TABLES;'; put '%return;'; put '%end;'; put '/* check if user has column level security rules */'; put 'proc sql;'; put 'create table work.cls_rules as'; put 'select *'; put 'from &mpelib..mpe_column_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and CLS_SCOPE in ("EDIT",''ALL'')'; put 'and CLS_ACTIVE=1'; put 'and upcase(CLS_GROUP) in (select upcase(groupname) from work.groups)'; put 'and CLS_LIBREF="%upcase(&base_lib)"'; put 'and CLS_TABLE="%upcase(&base_ds)";'; put '%if %mf_nobs(work.cls_rules)>0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=User has restrictions in MPE_COLUMN_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.cls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '/* check if user has row level security rules */'; put 'proc sql;'; put 'create table work.rls_rules as'; put 'select *'; put 'from &mpelib..mpe_row_level_security'; put 'where &dc_dttmtfmt. lt tx_to'; put 'and rls_scope in ("EDIT",''ALL'')'; put 'and upcase(rls_group) in (select upcase(groupname) from work.groups)'; put 'and rls_libref="&base_lib"'; put 'and rls_table="&base_ds"'; put 'and rls_active=1;'; put '%if %mf_nobs(work.rls_rules)>0 %then %do;'; put '%let allow_restore=NO;'; put '%let reason=User has restrictions in MPE_ROW_LEVEL_SECURITY;'; put 'data _null_;'; put 'set work.rls_rules;'; put 'putlog (_all_)(=);'; put 'if _n_>5 then stop;'; put 'run;'; put '%return;'; put '%end;'; put '%else %do;'; put '%let allow_restore=YES;'; put '%let reason=CHECKS PASSED;'; put '%end;'; put '%mend mpe_checkrestore;'; 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 '* 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 mp_abort.sas'; put '@li mpe_checkrestore.sas'; put '

Service Inputs

'; put '
sascontroltable
'; put '@li table table ID or LOAD_REF used to uniquely identify a staged change'; put '

Service Outputs

'; put '
work.jsparams
'; put 'Mainly sourced from MPE_SUBMIT plus some extra cols:'; put '@li LIB_ENGINE Library engine'; put '@li allow_restore YES if a user can restore, else NO'; put '@li REASON reason why a restore is / is no possible'; put '

Data Inputs

'; put '@li MPE_AUDIT'; put '@li MPE_COLUMN_LEVEL_SECURITY'; put '@li MPE_ROW_LEVEL_SECURITY'; put '@li MPE_SUBMIT'; 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 '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 '/**'; put '* Check if user has basic access permission to RESTORE the table'; put '*/'; put '%put checking access;'; put '%global allow_restore reason;'; put '%mpe_checkrestore(&table,outresult=ALLOW_RESTORE,outreason=REASON)'; put 'data work.jsParams;'; put 'set approve1;'; put 'LIB_ENGINE="%mf_getEngine(&base_lib)";'; put 'allow_restore="&allow_restore";'; put 'REASON="&reason";'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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=getversion; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '* 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 getversion.sas'; put '@brief get a specific (previous) version of a particular table'; put '@details Used to fetch a version of a table as at a previous point in time'; put 'Delivered as part of this issue: https://git.datacontroller.io/dc/dc/issues/84'; put '

Service Inputs

'; put '
getversion_input
'; put '|LIBREF:$char8.|DS:$char32.|TS: 8.|'; put '|---|---|---|'; put '|SOMELIB|SOMEDS|1341344.804|'; put '

Service Outputs

'; put '
work.getversion_output
'; put 'The data for a particular version'; put '

SAS Macros

'; put '@li mf_getuser.sas'; put '@li mpeinit.sas'; put '@li mpe_getvars.sas'; put '@version 9.2'; put '@author 4GL Apps Ltd'; put '**/'; put '%mpeinit()'; put '%global LIBREF DS;'; put '/* load parameters */'; put '%mpe_getvars(getversion_input, getversion_input)'; put '%mp_abort(iftrue= (&syscc ne 0 )'; put ',mac=&_program'; put ',msg=%str(Issue on startup)'; put ')'; put '/* todo */'; put '%webout(OPEN)'; put '%webout(OBJ,getversion_output)'; 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=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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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(),8.6);'; 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=##%mf_getuniquefileref(prefix=BTMP);'; 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 work.bitemp5a_lkp (keep=&md5_col)'; put '%if "%substr(&sysver,1,1)" ne "4" & "%substr(&sysver,1,1)" ne "5" %then %do;'; put '/nonote2err'; put '%end;'; put ';'; put 'set work.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=[&temp_table];'; put '%let top_table=[dbo].&base_dsn;'; put '%let flexinow=&SQLNOW;'; put 'create table &base_lib.."&temp_table"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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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..mpe_security table.'; 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 'proc sql;'; put 'create table work.xlmaps as'; put 'select distinct a.XLMAP_ID'; put ',b.XLMAP_DESCRIPTION'; put ',coalescec(b.XLMAP_TARGETLIBDS,"&mpelib..MPE_XLMAP_DATA")'; put 'as XLMAP_TARGETLIBDS'; put 'from &mpelib..MPE_XLMAP_RULES a'; put 'left join &mpelib..MPE_XLMAP_INFO(where=(&dc_dttmtfmt. lt tx_to)) b'; put 'on a.XLMAP_ID=b.XLMAP_ID'; put 'where &dc_dttmtfmt. lt a.tx_to;'; put '/* we don''t want the XLMAP target datasets to be directly editable */'; put 'delete from sasdatasets'; put 'where cats(libref,''.'',dsn) in (select XLMAP_TARGETLIBDS from xlmaps);'; put '%webout(OPEN)'; put '%webout(OBJ,sasDatasets)'; put '%webout(OBJ,saslibs)'; put '%webout(OBJ,globvars)'; put '%webout(ARR,xlmaps)'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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 '*/'; 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 end=last;'; put 'length reason_cd $4032 vtype vtype2 $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 'retain dsid;'; put 'if _n_=1 then 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 'goto endstep;'; put 'end;'; put '/* now we can get the type */'; put 'else vtype=vartype(dsid,vnum);'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Could not open &targetds");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'stop;'; 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'' & OPERATOR_NM in (''='',''>'',''<'',''<='',''>='',''NE'',''GE'',''LE'') then do;'; put 'if 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 'else if subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if OPERATOR_NM =''BETWEEN'' and subpad(upcase(tmp),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put '/* is not valid syntax for IN or NOT IN */'; put 'vnum=varnum(dsid,subpad(tmp,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; 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 'if vtype=''C'' and subpad(upcase(raw_value),1,1) 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 '/* check if the raw_value contains a valid variable NAME */'; put 'vnum=varnum(dsid,subpad(raw_value,1,32));'; put 'if vnum>0 then do;'; put '/* now we can get the type */'; put 'vtype2=vartype(dsid,vnum);'; put '/* check type matches */'; put 'if vtype2=vtype then do;'; put '/* valid target var - exit loop */'; put 'return;'; put 'end;'; put 'else do;'; put 'REASON_CD=cats("Compared Char Type (",vtype2,") is not (",vtype,")");'; put 'putlog REASON_CD= dsid=;'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'goto endstep;'; put 'end;'; put 'end;'; put 'end;'; put 'putlog raw_value3= $hex32.;'; put 'REASON_CD=cats(''Invalid RAW_VALUE:'',raw_value);'; put 'putlog (_all_)(=);'; put 'call symputx(''reason_cd'',reason_cd,''l'');'; put 'call symputx(''nobs'',_n_,''l'');'; put 'output;'; put 'end;'; put 'endstep:'; put 'if last then rc=close(dsid);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 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 mpe_dsmeta(libds, outds=dsmeta);'; put '%local ddsd ddld notes lenstmt;'; put '%let lenstmt=length ods_table $18 name $100 value $1000;'; put '%let libds=%upcase(&libds);'; put '%mp_dsmeta(&libds, outds=&outds)'; put 'data _null_;'; put 'set &mpelib..mpe_datadictionary;'; put 'where &dc_dttmtfmt < tx_to & dd_source=%upcase("&libds") & dd_type=''TABLE'';'; put 'call symputx(''ddsd'',dd_shortdesc,''l'');'; put 'call symputx(''ddld'',dd_longdesc,''l'');'; put 'run;'; put 'data &outds;'; put '&lenstmt;'; put 'if last then do;'; put 'ODS_TABLE=''MPE_DATADICTIONARY'';'; put 'NAME=''DD_SHORTDESC'';'; put 'VALUE="&ddsd";'; put 'output;'; put 'NAME=''DD_LONGDESC'';'; put 'VALUE="&ddld";'; put 'output;'; put 'end;'; put 'set &outds end=last;'; put 'output;'; put 'run;'; put 'data _data_;'; put 'set &mpelib..mpe_tables;'; put 'where libref="%scan(&libds,1,.)"'; put '& dsn="%scan(&libds,2,.)"'; put '& &dc_dttmtfmt0);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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='; put '''Format Type: 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='; put '''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='; put '''More info: https://core.sasjs.io/mddl__sas__cntlout_8sas_source.html'''; 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=1;'; put 'else 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_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 SOREN 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 '
versions
'; put 'history of DC versions for this particular table'; 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_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_dsmeta.sas'; put '@li mpe_getversions.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 'call symputx(''orig_libds'',libds);'; 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 'call missing (of _all_);'; 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 '%mpe_dsmeta(&libds, outds=dsmeta)'; put '%mpe_getversions(&mpelib,'; put '%scan(&orig_libds,1,.),'; put '%scan(&orig_libds,2,.),'; put 'outds=versions'; put ')'; 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,versions)'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 "%str(WARN)ING: 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 SOREN 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 ''ERR'' +(-1) "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 ''ERR'' +(-1) "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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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'; put ',open_passthrough='; put ',sql_options='; 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 and %length(&open_passthrough)=0'; put '%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 domprop_uri authdomain $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 auth domain */'; put 'autrc=metadata_getnasn(connx_uri,"Domain",1,domprop_uri);'; put 'arc=metadata_getattr(domprop_uri,"Name",authdomain);'; put 'if not missing(authdomain) then authdomain=cats(''AUTHDOMAIN='',authdomain);'; put 'call symputx(''authdomain'',authdomain,''l'');'; 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 &authdomain;'; 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 '/* extracted in dc_getsettings */'; put 'dc_activation_key'; put 'dc_licence_key'; put 'dc_locale'; put 'dc_request_logs'; put 'dc_restrict_viewer'; put 'dc_dttmtfmt /* can be overridden in dc_getsettings */'; put '_debug /* automatic variable when provided in URL */'; put 'sasjs_mdebug /* used to show extra info when _debug is enabled */'; 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 '%if "&_debug"="2477" or "&_debug"="fields,log,trace" or "&_debug"="131"'; put '%then %do;'; put '%let sasjs_mdebug=1;'; put '%end;'; 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 'and &DC_REQUEST_LOGS ne NO'; 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 '/* sleep random amount to avoid parallel update attempts */'; put 'call sleep(ranuni(0)*0.1,1);'; 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=411.26896d93e056dcb9-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 ''KCgpPT57InVzZSBzdHJpY3QiO3ZhciBEcj0xMjAwLFJ0PTEyNTIsRGM9Wzg3NCw5MzIsOTM2LDk0OSw5NTAsMTI1MCwxMjUxLDEyNTIsMTI1MywxMjU0LDEyNTUsMTI1NiwxMjU3LDEyNTgsMWU0XSxMMD17MDoxMjUyLDE6NjUwMDEsMjo2NTAwMSw3NzoxZTQsMTI4OjkzMiwxMjk6OTQ5LDEz''@;'; put 'put ''MDoxMzYxLDEzNDo5MzYsMTM2Ojk1MCwxNjE6MTI1MywxNjI6MTI1NCwxNjM6MTI1OCwxNzc6MTI1NSwxNzg6MTI1NiwxODY6MTI1NywyMDQ6MTI1MSwyMjI6ODc0LDIzODoxMjUwLDI1NToxMjUyLDY5OjY5Njl9LGUwPWZ1bmN0aW9uKGUpey0xIT1EYy5pbmRleE9mKGUpJiYoUnQ9TDBbMF09''@;'; put 'put ''ZSl9LE1yPWZ1bmN0aW9uKGUpe0RyPWUsZTAoZSl9O2Z1bmN0aW9uIHIwKCl7TXIoMTIwMCksZnVuY3Rpb24gT2MoKXtlMCgxMjUyKX0oKX1mdW5jdGlvbiB0MChlKXtmb3IodmFyIHQ9W10scj0wLGE9ZS5sZW5ndGg7cjxhOysrcil0W3JdPWUuY2hhckNvZGVBdChyKTtyZXR1cm4gdH1mdW5j''@;'; put 'put ''dGlvbiBhaShlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg+PjE7KytyKXRbcl09U3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlQXQoMipyKzEpKyhlLmNoYXJDb2RlQXQoMipyKTw8OCkpO3JldHVybiB0LmpvaW4oIiIpfXZhciBPZSxRdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkscj1lLmNoYXJDb2RlQXQoMSk7cmV0dXJuIDI1NT09dCYmMjU0PT1yP2Z1bmN0aW9uIEljKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpdFtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIpKyhlLmNoYXJDb2RlQXQoMipyKzEp''@;'; put 'put ''PDw4KSk7cmV0dXJuIHQuam9pbigiIil9KGUuc2xpY2UoMikpOjI1ND09dCYmMjU1PT1yP2FpKGUuc2xpY2UoMikpOjY1Mjc5PT10P2Uuc2xpY2UoMSk6ZX0scGE9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9LEIwPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcu''@;'; put 'put ''ZnJvbUNoYXJDb2RlKHQpfSx6ZT1udWxsLGd0PSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7ZnVuY3Rpb24gZ2EoZSl7Zm9yKHZhciB0PSIiLHI9MCxhPTAsbj0wLGk9MCxzPTAsZj0wLGM9MCxvPTA7bzxlLmxlbmd0''@;'; put 'put ''aDspaT0ocj1lLmNoYXJDb2RlQXQobysrKSk+PjIscz0oMyZyKTw8NHwoYT1lLmNoYXJDb2RlQXQobysrKSk+PjQsZj0oMTUmYSk8PDJ8KG49ZS5jaGFyQ29kZUF0KG8rKykpPj42LGM9NjMmbixpc05hTihhKT9mPWM9NjQ6aXNOYU4obikmJihjPTY0KSx0Kz1ndC5jaGFyQXQoaSkrZ3QuY2hh''@;'; put 'put ''ckF0KHMpK2d0LmNoYXJBdChmKStndC5jaGFyQXQoYyk7cmV0dXJuIHR9ZnVuY3Rpb24gT3IoZSl7dmFyIHQ9IiIsaT0wLHM9MCxmPTAsYz0wO2U9ZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOylpPWd0LmluZGV4T2YoZS5jaGFyQXQobysrKSks''@;'; put 'put ''cz1ndC5pbmRleE9mKGUuY2hhckF0KG8rKykpLHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoaTw8MnxzPj40KSw2NCE9PShmPWd0LmluZGV4T2YoZS5jaGFyQXQobysrKSkpJiYodCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoMTUmcyk8PDR8Zj4+MikpLDY0IT09KGM9Z3QuaW5kZXhPZihlLmNoYXJB''@;'; put 'put ''dChvKyspKSkmJih0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzJmYpPDw2fGMpKTtyZXR1cm4gdH12YXIgU2U9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJ1ZmZlcjwidSImJnR5cGVvZiBwcm9jZXNzPCJ1IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM8InUiJiYhIXByb2Nlc3MudmVyc2lv''@;'; put 'put ''bnMubm9kZX0oKSxvdD1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI8InUiKXt2YXIgZT0hQnVmZmVyLmZyb207aWYoIWUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7ZT0hMH1yZXR1cm4gZT9mdW5jdGlvbih0LHIpe3JldHVybiByP25ldyBCdWZmZXIodCxyKTpuZXcg''@;'; put 'put ''QnVmZmVyKHQpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlcil9cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKTtmdW5jdGlvbiBfdChlKXtyZXR1cm4gU2U/QnVmZmVyLmFsbG9jP0J1ZmZlci5hbGxvYyhlKTpuZXcgQnVmZmVyKGUpOnR5cGVvZiBVaW50OEFycmF5PCJ1Ij9uZXcgVWludDhBcnJheShl''@;'; put 'put ''KTpuZXcgQXJyYXkoZSl9ZnVuY3Rpb24gbmkoZSl7cmV0dXJuIFNlP0J1ZmZlci5hbGxvY1Vuc2FmZT9CdWZmZXIuYWxsb2NVbnNhZmUoZSk6bmV3IEJ1ZmZlcihlKTp0eXBlb2YgVWludDhBcnJheTwidSI/bmV3IFVpbnQ4QXJyYXkoZSk6bmV3IEFycmF5KGUpfXZhciBJcj1mdW5jdGlvbih0''@;'; put 'put ''KXtyZXR1cm4gU2U/b3QodCwiYmluYXJ5Iik6dC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiAyNTUmci5jaGFyQ29kZUF0KDApfSl9O2Z1bmN0aW9uIHd0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKGEpfSkuam9pbigiIik7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0W3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtyXSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gTTAoZSl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3Vw''@;'; put 'put ''cG9ydGVkIik7aWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBNMChuZXcgVWludDhBcnJheShlKSk7Zm9yKHZhciB0PW5ldyBBcnJheShlLmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKXRbcl09ZVtyXTtyZXR1cm4gdH12YXIgZnI9U2U/ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1''@;'; put 'put ''ZmZlci5jb25jYXQoZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih0KT90Om90KHQpfSkpfTpmdW5jdGlvbihlKXtpZih0eXBlb2YgVWludDhBcnJheTwidSIpe3ZhciB0PTAscj0wO2Zvcih0PTA7dDxlLmxlbmd0aDsrK3Qpcis9ZVt0XS5sZW5ndGg7dmFyIGE9bmV3''@;'; put 'put ''IFVpbnQ4QXJyYXkociksbj0wO2Zvcih0PTAscj0wO3Q8ZS5sZW5ndGg7cis9biwrK3QpaWYobj1lW3RdLmxlbmd0aCxlW3RdaW5zdGFuY2VvZiBVaW50OEFycmF5KWEuc2V0KGVbdF0scik7ZWxzZXtpZigic3RyaW5nIj09dHlwZW9mIGVbdF0pdGhyb3cid3RmIjthLnNldChuZXcgVWludDhB''@;'; put 'put ''cnJheShlW3RdKSxyKX1yZXR1cm4gYX1yZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/aTpbXS5zbGljZS5jYWxsKGkpfSkpfSxkcj0vXHUwMDAwL2csd2E9L1tcdTAwMDEtXHUwMDA2XS9nO2Z1bmN0aW9uIGVhKGUpe2Zv''@;'; put 'put ''cih2YXIgdD0iIixyPWUubGVuZ3RoLTE7cj49MDspdCs9ZS5jaGFyQXQoci0tKTtyZXR1cm4gdH1mdW5jdGlvbiBZcihlLHQpe3ZhciByPSIiK2U7cmV0dXJuIHIubGVuZ3RoPj10P3I6amUoIjAiLHQtci5sZW5ndGgpK3J9ZnVuY3Rpb24gVTAoZSx0KXt2YXIgcj0iIitlO3JldHVybiByLmxl''@;'; put 'put ''bmd0aD49dD9yOmplKCIgIix0LXIubGVuZ3RoKStyfWZ1bmN0aW9uIGEwKGUsdCl7dmFyIHI9IiIrZTtyZXR1cm4gci5sZW5ndGg+PXQ/cjpyK2plKCIgIix0LXIubGVuZ3RoKX12YXIgaWk9TWF0aC5wb3coMiwzMik7ZnVuY3Rpb24gcmEoZSx0KXtyZXR1cm4gZT5paXx8ZTwtaWk/ZnVuY3Rp''@;'; put 'put ''b24gYmMoZSx0KXt2YXIgcj0iIitNYXRoLnJvdW5kKGUpO3JldHVybiByLmxlbmd0aD49dD9yOmplKCIwIix0LXIubGVuZ3RoKStyfShlLHQpOmZ1bmN0aW9uIFBjKGUsdCl7dmFyIHI9IiIrZTtyZXR1cm4gci5sZW5ndGg+PXQ/cjpqZSgiMCIsdC1yLmxlbmd0aCkrcn0oTWF0aC5yb3VuZChl''@;'; put 'put ''KSx0KX1mdW5jdGlvbiBuMChlLHQpe3JldHVybiBlLmxlbmd0aD49NysodD10fHwwKSYmMTAzPT0oMzJ8ZS5jaGFyQ29kZUF0KHQpKSYmMTAxPT0oMzJ8ZS5jaGFyQ29kZUF0KHQrMSkpJiYxMTA9PSgzMnxlLmNoYXJDb2RlQXQodCsyKSkmJjEwMT09KDMyfGUuY2hhckNvZGVBdCh0KzMpKSYm''@;'; put 'put ''MTE0PT0oMzJ8ZS5jaGFyQ29kZUF0KHQrNCkpJiY5Nz09KDMyfGUuY2hhckNvZGVBdCh0KzUpKSYmMTA4PT0oMzJ8ZS5jaGFyQ29kZUF0KHQrNikpfXZhciBzaT1bWyJTdW4iLCJTdW5kYXkiXSxbIk1vbiIsIk1vbmRheSJdLFsiVHVlIiwiVHVlc2RheSJdLFsiV2VkIiwiV2VkbmVzZGF5Il0s''@;'; put 'put ''WyJUaHUiLCJUaHVyc2RheSJdLFsiRnJpIiwiRnJpZGF5Il0sWyJTYXQiLCJTYXR1cmRheSJdXSxXMD1bWyJKIiwiSmFuIiwiSmFudWFyeSJdLFsiRiIsIkZlYiIsIkZlYnJ1YXJ5Il0sWyJNIiwiTWFyIiwiTWFyY2giXSxbIkEiLCJBcHIiLCJBcHJpbCJdLFsiTSIsIk1heSIsIk1heSJdLFsi''@;'; put 'put ''SiIsIkp1biIsIkp1bmUiXSxbIkoiLCJKdWwiLCJKdWx5Il0sWyJBIiwiQXVnIiwiQXVndXN0Il0sWyJTIiwiU2VwIiwiU2VwdGVtYmVyIl0sWyJPIiwiT2N0IiwiT2N0b2JlciJdLFsiTiIsIk5vdiIsIk5vdmVtYmVyIl0sWyJEIiwiRGVjIiwiRGVjZW1iZXIiXV0scGU9ezA6IkdlbmVyYWwi''@;'; put 'put ''LDE6IjAiLDI6IjAuMDAiLDM6IiMsIyMwIiw0OiIjLCMjMC4wMCIsOToiMCUiLDEwOiIwLjAwJSIsMTE6IjAuMDBFKzAwIiwxMjoiIyA/Lz8iLDEzOiIjID8/Lz8/IiwxNDoibS9kL3l5IiwxNToiZC1tbW0teXkiLDE2OiJkLW1tbSIsMTc6Im1tbS15eSIsMTg6Img6bW0gQU0vUE0iLDE5OiJo''@;'; put 'put ''Om1tOnNzIEFNL1BNIiwyMDoiaDptbSIsMjE6Img6bW06c3MiLDIyOiJtL2QveXkgaDptbSIsMzc6IiMsIyMwIDsoIywjIzApIiwzODoiIywjIzAgO1tSZWRdKCMsIyMwKSIsMzk6IiMsIyMwLjAwOygjLCMjMC4wMCkiLDQwOiIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCkiLDQ1OiJtbTpzcyIs''@;'; put 'put ''NDY6IltoXTptbTpzcyIsNDc6Im1tc3MuMCIsNDg6IiMjMC4wRSswIiw0OToiQCIsNTY6JyJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4ICJoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiAiJ30sZmk9ezU6MzcsNjozOCw3OjM5LDg6NDAsMjM6MCwyNDowLDI1OjAsMjY6MCwyNzoxNCwy''@;'; put 'put ''ODoxNCwyOToxNCwzMDoxNCwzMToxNCw1MDoxNCw1MToxNCw1MjoxNCw1MzoxNCw1NDoxNCw1NToxNCw1NjoxNCw1NzoxNCw1ODoxNCw1OToxLDYwOjIsNjE6Myw2Mjo0LDY3OjksNjg6MTAsNjk6MTIsNzA6MTMsNzE6MTQsNzI6MTQsNzM6MTUsNzQ6MTYsNzU6MTcsNzY6MjAsNzc6MjEsNzg6''@;'; put 'put ''MjIsNzk6NDUsODA6NDYsODE6NDcsODI6MH0sQmM9ezU6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDYzOiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2OiciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLDY0OiciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLDc6''@;'; put 'put ''JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDY1OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw4OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDY2OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDQxOidfKCogIywj''@;'; put 'put ''IzBfKTtfKCogXFwoIywjIzBcXCk7XygqICItIl8pO18oQF8pJyw0MjonXygiJCIqICMsIyMwXyk7XygiJCIqIFxcKCMsIyMwXFwpO18oIiQiKiAiLSJfKTtfKEBfKScsNDM6J18oKiAjLCMjMC4wMF8pO18oKiBcXCgjLCMjMC4wMFxcKTtfKCogIi0iPz9fKTtfKEBfKScsNDQ6J18oIiQiKiAj''@;'; put 'put ''LCMjMC4wMF8pO18oIiQiKiBcXCgjLCMjMC4wMFxcKTtfKCIkIiogIi0iPz9fKTtfKEBfKSd9O2Z1bmN0aW9uIGkwKGUsdCxyKXtmb3IodmFyIGE9ZTwwPy0xOjEsbj1lKmEsaT0wLHM9MSxmPTAsYz0xLG89MCxsPTAsaD1NYXRoLmZsb29yKG4pO288dCYmKGY9KGg9TWF0aC5mbG9vcihuKSkq''@;'; put 'put ''cytpLGw9aCpvK2MsIShuLWg8NWUtOCkpOyluPTEvKG4taCksaT1zLHM9ZixjPW8sbz1sO2lmKGw+dCYmKG8+dD8obD1jLGY9aSk6KGw9byxmPXMpKSwhcilyZXR1cm5bMCxhKmYsbF07dmFyIHg9TWF0aC5mbG9vcihhKmYvbCk7cmV0dXJuW3gsYSpmLXgqbCxsXX1mdW5jdGlvbiBrdChlLHQs''@;'; put 'put ''cil7aWYoZT4yOTU4NDY1fHxlPDApcmV0dXJuIG51bGw7dmFyIGE9MHxlLG49TWF0aC5mbG9vcig4NjQwMCooZS1hKSksaT0wLHM9W10sZj17RDphLFQ6bix1Ojg2NDAwKihlLWEpLW4seTowLG06MCxkOjAsSDowLE06MCxTOjAscTowfTtpZihNYXRoLmFicyhmLnUpPDFlLTYmJihmLnU9MCks''@;'; put 'put ''dCYmdC5kYXRlMTkwNCYmKGErPTE0NjIpLGYudT4uOTk5OSYmKGYudT0wLDg2NDAwPT0rK24mJihmLlQ9bj0wLCsrYSwrK2YuRCkpLDYwPT09YSlzPXI/WzEzMTcsMTAsMjldOlsxOTAwLDIsMjldLGk9MztlbHNlIGlmKDA9PT1hKXM9cj9bMTMxNyw4LDI5XTpbMTkwMCwxLDBdLGk9NjtlbHNl''@;'; put 'put ''e2E+NjAmJi0tYTt2YXIgYz1uZXcgRGF0ZSgxOTAwLDAsMSk7Yy5zZXREYXRlKGMuZ2V0RGF0ZSgpK2EtMSkscz1bYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKSsxLGMuZ2V0RGF0ZSgpXSxpPWMuZ2V0RGF5KCksYTw2MCYmKGk9KGkrNiklNyksciYmKGk9ZnVuY3Rpb24gWGMoZSx0KXt0''@;'; put 'put ''WzBdLT01ODE7dmFyIHI9ZS5nZXREYXkoKTtyZXR1cm4gZTw2MCYmKHI9KHIrNiklNykscn0oYyxzKSl9cmV0dXJuIGYueT1zWzBdLGYubT1zWzFdLGYuZD1zWzJdLGYuUz1uJTYwLG49TWF0aC5mbG9vcihuLzYwKSxmLk09biU2MCxuPU1hdGguZmxvb3Iobi82MCksZi5IPW4sZi5xPWksZn12''@;'; put 'put ''YXIgY2k9bmV3IERhdGUoMTg5OSwxMSwzMSwwLDAsMCksTWM9Y2kuZ2V0VGltZSgpLFVjPW5ldyBEYXRlKDE5MDAsMiwxLDAsMCwwKTtmdW5jdGlvbiBvaShlLHQpe3ZhciByPWUuZ2V0VGltZSgpO3JldHVybiB0P3ItPTEyNjIzMDRlNTplPj1VYyYmKHIrPTg2NGU1KSwoci0oTWMrNmU0Kihl''@;'; put 'put ''LmdldFRpbWV6b25lT2Zmc2V0KCktY2kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpKS84NjRlNX1mdW5jdGlvbiBIMChlKXtyZXR1cm4tMT09ZS5pbmRleE9mKCIuIik/ZTplLnJlcGxhY2UoLyg/OlwuMCp8KFwuXGQqWzEtOV0pMCspJC8sIiQxIil9ZnVuY3Rpb24ga2EoZSl7dmFyIHIsdD1NYXRo''@;'; put 'put ''LmZsb29yKE1hdGgubG9nKE1hdGguYWJzKGUpKSpNYXRoLkxPRzEwRSk7cmV0dXJuIHI9dD49LTQmJnQ8PS0xP2UudG9QcmVjaXNpb24oMTArdCk6TWF0aC5hYnModCk8PTk/ZnVuY3Rpb24gSGMoZSl7dmFyIHQ9ZTwwPzEyOjExLHI9SDAoZS50b0ZpeGVkKDEyKSk7cmV0dXJuIHIubGVuZ3Ro''@;'; put 'put ''PD10fHwocj1lLnRvUHJlY2lzaW9uKDEwKSkubGVuZ3RoPD10P3I6ZS50b0V4cG9uZW50aWFsKDUpfShlKToxMD09PXQ/ZS50b0ZpeGVkKDEwKS5zdWJzdHIoMCwxMik6ZnVuY3Rpb24gVmMoZSl7dmFyIHQ9SDAoZS50b0ZpeGVkKDExKSk7cmV0dXJuIHQubGVuZ3RoPihlPDA/MTI6MTEpfHwi''@;'; put 'put ''MCI9PT10fHwiLTAiPT09dD9lLnRvUHJlY2lzaW9uKDYpOnR9KGUpLEgwKGZ1bmN0aW9uIFdjKGUpe3JldHVybi0xPT1lLmluZGV4T2YoIkUiKT9lOmUucmVwbGFjZSgvKD86XC4wKnwoXC5cZCpbMS05XSkwKylbRWVdLywiJDFFIikucmVwbGFjZSgvKEVbKy1dKShcZCkkLywiJDEwJDIiKX0o''@;'; put 'put ''ci50b1VwcGVyQ2FzZSgpKSl9ZnVuY3Rpb24gTnQoZSx0KXtzd2l0Y2godHlwZW9mIGUpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gZTtjYXNlImJvb2xlYW4iOnJldHVybiBlPyJUUlVFIjoiRkFMU0UiO2Nhc2UibnVtYmVyIjpyZXR1cm4oMHxlKT09PWU/ZS50b1N0cmluZygxMCk6a2EoZSk7Y2Fz''@;'; put 'put ''ZSJ1bmRlZmluZWQiOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZihudWxsPT1lKXJldHVybiIiO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBScigxNCxvaShlLHQmJnQuZGF0ZTE5MDQpLHQpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgdmFsdWUgaW4gR2VuZXJhbCBmb3JtYXQ6''@;'; put 'put ''ICIrZSl9ZnVuY3Rpb24gR2MoZSx0LHIsYSl7dmFyIGMsbj0iIixpPTAscz0wLGY9ci55LG89MDtzd2l0Y2goZSl7Y2FzZSA5ODpmPXIueSs1NDM7Y2FzZSAxMjE6c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ZiUxMDAsbz0yO2JyZWFrO2RlZmF1bHQ6Yz1mJTFlNCxvPTR9YnJl''@;'; put 'put ''YWs7Y2FzZSAxMDk6c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5tLG89dC5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBXMFtyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBXMFtyLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gVzBbci5tLTFdWzJdfWJyZWFrO2Nhc2UgMTAwOnN3''@;'; put 'put ''aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuZCxvPXQubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gc2lbci5xXVswXTtkZWZhdWx0OnJldHVybiBzaVtyLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPTErKHIuSCsxMSklMTIs''@;'; put 'put ''bz10Lmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIit0fWJyZWFrO2Nhc2UgNzI6c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5ILG89dC5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrdH1icmVhaztjYXNl''@;'; put 'put ''IDc3OnN3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuTSxvPXQubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIG1pbnV0ZSBmb3JtYXQ6ICIrdH1icmVhaztjYXNlIDExNTppZigicyIhPXQmJiJzcyIhPXQmJiIuMCIhPXQmJiIuMDAiIT10JiYiLjAwMCIhPXQpdGhyb3ci''@;'; put 'put ''YmFkIHNlY29uZCBmb3JtYXQ6ICIrdDtyZXR1cm4gMCE9PXIudXx8InMiIT10JiYic3MiIT10PyhzPWE+PTI/Mz09PWE/MWUzOjEwMDoxPT09YT8xMDoxLChpPU1hdGgucm91bmQocyooci5TK3IudSkpKT49NjAqcyYmKGk9MCksInMiPT09dD8wPT09aT8iMCI6IiIraS9zOihuPVlyKGksMith''@;'; put 'put ''KSwic3MiPT09dD9uLnN1YnN0cigwLDIpOiIuIituLnN1YnN0cigyLHQubGVuZ3RoLTEpKSk6WXIoci5TLHQubGVuZ3RoKTtjYXNlIDkwOnN3aXRjaCh0KXtjYXNlIltoXSI6Y2FzZSJbaGhdIjpjPTI0KnIuRCtyLkg7YnJlYWs7Y2FzZSJbbV0iOmNhc2UiW21tXSI6Yz02MCooMjQqci5EK3Iu''@;'; put 'put ''SCkrci5NO2JyZWFrO2Nhc2UiW3NdIjpjYXNlIltzc10iOmM9NjAqKDYwKigyNCpyLkQrci5IKStyLk0pK01hdGgucm91bmQoci5TK3IudSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgYWJzdGltZSBmb3JtYXQ6ICIrdH1vPTM9PT10Lmxlbmd0aD8xOjI7YnJlYWs7Y2FzZSAxMDE6Yz1mLG89''@;'; put 'put ''MX1yZXR1cm4gbz4wP1lyKGMsbyk6IiJ9ZnVuY3Rpb24gRXQoZSl7aWYoZS5sZW5ndGg8PTMpcmV0dXJuIGU7Zm9yKHZhciByPWUubGVuZ3RoJTMsYT1lLnN1YnN0cigwLHIpO3IhPWUubGVuZ3RoO3IrPTMpYSs9KGEubGVuZ3RoPjA/IiwiOiIiKStlLnN1YnN0cihyLDMpO3JldHVybiBhfXZh''@;'; put 'put ''ciBsaT0vJS9nO2Z1bmN0aW9uIHVpKGUsdCl7dmFyIHIsYT1lLmluZGV4T2YoIkUiKS1lLmluZGV4T2YoIi4iKS0xO2lmKGUubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PXQpcmV0dXJuIjAuMEUrMCI7aWYodDwwKXJldHVybiItIit1aShlLC10KTt2YXIgbj1lLmluZGV4T2YoIi4iKTst''@;'; put 'put ''MT09PW4mJihuPWUuaW5kZXhPZigiRSIpKTt2YXIgaT1NYXRoLmZsb29yKE1hdGgubG9nKHQpKk1hdGguTE9HMTBFKSVuO2lmKGk8MCYmKGkrPW4pLC0xPT09KHI9KHQvTWF0aC5wb3coMTAsaSkpLnRvUHJlY2lzaW9uKGErMSsobitpKSVuKSkuaW5kZXhPZigiZSIpKXt2YXIgcz1NYXRoLmZs''@;'; put 'put ''b29yKE1hdGgubG9nKHQpKk1hdGguTE9HMTBFKTtmb3IoLTE9PT1yLmluZGV4T2YoIi4iKT9yPXIuY2hhckF0KDApKyIuIityLnN1YnN0cigxKSsiRSsiKyhzLXIubGVuZ3RoK2kpOnIrPSJFKyIrKHMtaSk7IjAuIj09PXIuc3Vic3RyKDAsMik7KXI9KHI9ci5jaGFyQXQoMCkrci5zdWJzdHIo''@;'; put 'put ''MixuKSsiLiIrci5zdWJzdHIoMituKSkucmVwbGFjZSgvXjArKFsxLTldKS8sIiQxIikucmVwbGFjZSgvXjArXC4vLCIwLiIpO3I9ci5yZXBsYWNlKC9cKy0vLCItIil9cj1yLnJlcGxhY2UoL14oWystXT8pKFxkKilcLihcZCopW0VlXS8sZnVuY3Rpb24oZixjLG8sbCl7cmV0dXJuIGMrbyts''@;'; put 'put ''LnN1YnN0cigwLChuK2kpJW4pKyIuIitsLnN1YnN0cihpKSsiRSJ9KX1lbHNlIHI9dC50b0V4cG9uZW50aWFsKGEpO3JldHVybiBlLm1hdGNoKC9FXCswMCQvKSYmci5tYXRjaCgvZVsrLV1cZCQvKSYmKHI9ci5zdWJzdHIoMCxyLmxlbmd0aC0xKSsiMCIrci5jaGFyQXQoci5sZW5ndGgtMSkp''@;'; put 'put ''LGUubWF0Y2goL0VcLS8pJiZyLm1hdGNoKC9lXCsvKSYmKHI9ci5yZXBsYWNlKC9lXCsvLCJlIikpLHIucmVwbGFjZSgiZSIsIkUiKX12YXIgaGk9LyMgKFw/KykoID8pXC8oID8pKFxkKykvLHhpPS9eIyowKlwuKFswI10rKS8sZGk9L1wpLipbMCNdLyx2aT0vXCgjIyNcKSAjIyNcXD8tIyMj''@;'; put 'put ''Iy87ZnVuY3Rpb24gVHIoZSl7Zm9yKHZhciByLHQ9IiIsYT0wO2EhPWUubGVuZ3RoOysrYSlzd2l0Y2gocj1lLmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzU6YnJlYWs7Y2FzZSA2Mzp0Kz0iICI7YnJlYWs7Y2FzZSA0ODp0Kz0iMCI7YnJlYWs7ZGVmYXVsdDp0Kz1TdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KHIpfXJldHVybiB0fWZ1bmN0aW9uIHBpKGUsdCl7dmFyIHI9TWF0aC5wb3coMTAsdCk7cmV0dXJuIiIrTWF0aC5yb3VuZChlKnIpL3J9ZnVuY3Rpb24gbWkoZSx0KXt2YXIgcj1lLU1hdGguZmxvb3IoZSksYT1NYXRoLnBvdygxMCx0KTtyZXR1cm4gdDwoIiIrTWF0aC5yb3VuZChyKmEpKS5s''@;'; put 'put ''ZW5ndGg/MDpNYXRoLnJvdW5kKHIqYSl9ZnVuY3Rpb24gVXIoZSx0LHIpe2lmKDQwPT09ZS5jaGFyQ29kZUF0KDApJiYhdC5tYXRjaChkaSkpe3ZhciBhPXQucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHI+PTA/VXIoIm4iLGEs''@;'; put 'put ''cik6IigiK1VyKCJuIixhLC1yKSsiKSJ9aWYoNDQ9PT10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSkpcmV0dXJuIGZ1bmN0aW9uICRjKGUsdCxyKXtmb3IodmFyIGE9dC5sZW5ndGgtMTs0ND09PXQuY2hhckNvZGVBdChhLTEpOyktLWE7cmV0dXJuIGx0KGUsdC5zdWJzdHIoMCxhKSxyL01hdGgu''@;'; put 'put ''cG93KDEwLDMqKHQubGVuZ3RoLWEpKSl9KGUsdCxyKTtpZigtMSE9PXQuaW5kZXhPZigiJSIpKXJldHVybiBmdW5jdGlvbiB6YyhlLHQscil7dmFyIGE9dC5yZXBsYWNlKGxpLCIiKSxuPXQubGVuZ3RoLWEubGVuZ3RoO3JldHVybiBsdChlLGEscipNYXRoLnBvdygxMCwyKm4pKStqZSgiJSIs''@;'; put 'put ''bil9KGUsdCxyKTtpZigtMSE9PXQuaW5kZXhPZigiRSIpKXJldHVybiB1aSh0LHIpO2lmKDM2PT09dC5jaGFyQ29kZUF0KDApKXJldHVybiIkIitVcihlLHQuc3Vic3RyKCIgIj09dC5jaGFyQXQoMSk/MjoxKSxyKTt2YXIgbixpLHMsZixjPU1hdGguYWJzKHIpLG89cjwwPyItIjoiIjtpZih0''@;'; put 'put ''Lm1hdGNoKC9eMDArJC8pKXJldHVybiBvK3JhKGMsdC5sZW5ndGgpO2lmKHQubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4iMCI9PT0obj1yYShyLDApKSYmKG49IiIpLG4ubGVuZ3RoPnQubGVuZ3RoP246VHIodC5zdWJzdHIoMCx0Lmxlbmd0aC1uLmxlbmd0aCkpK247aWYoaT10Lm1hdGNoKGhp''@;'; put 'put ''KSlyZXR1cm4gZnVuY3Rpb24gamMoZSx0LHIpe3ZhciBhPXBhcnNlSW50KGVbNF0sMTApLG49TWF0aC5yb3VuZCh0KmEpLGk9TWF0aC5mbG9vcihuL2EpLHM9bi1pKmEsZj1hO3JldHVybiByKygwPT09aT8iIjoiIitpKSsiICIrKDA9PT1zP2plKCIgIixlWzFdLmxlbmd0aCsxK2VbNF0ubGVu''@;'; put 'put ''Z3RoKTpVMChzLGVbMV0ubGVuZ3RoKStlWzJdKyIvIitlWzNdK1lyKGYsZVs0XS5sZW5ndGgpKX0oaSxjLG8pO2lmKHQubWF0Y2goL14jKzArJC8pKXJldHVybiBvK3JhKGMsdC5sZW5ndGgtdC5pbmRleE9mKCIwIikpO2lmKGk9dC5tYXRjaCh4aSkpcmV0dXJuIG49cGkocixpWzFdLmxlbmd0''@;'; put 'put ''aCkucmVwbGFjZSgvXihbXlwuXSspJC8sIiQxLiIrVHIoaVsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK1RyKGlbMV0pKS5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24odix1KXtyZXR1cm4iLiIrdStqZSgiMCIsVHIoaVsxXSkubGVuZ3RoLXUubGVuZ3RoKX0pLC0xIT09dC5pbmRleE9mKCIw''@;'; put 'put ''LiIpP246bi5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKHQ9dC5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLGk9dC5tYXRjaCgvXigwKilcLigjKikkLykpcmV0dXJuIG8rcGkoYyxpWzJdLmxlbmd0aCkucmVwbGFjZSgvXC4oXGQqWzEtOV0pMCokLywiLiQxIikucmVwbGFjZSgvXigtP1xkKikk''@;'; put 'put ''LywiJDEuIikucmVwbGFjZSgvXjBcLi8saVsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKGk9dC5tYXRjaCgvXiN7MSwzfSwjIzAoXC4/KSQvKSlyZXR1cm4gbytFdChyYShjLDApKTtpZihpPXQubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuIHI8MD8iLSIrVXIoZSx0LC1yKTpFdCgi''@;'; put 'put ''IisoTWF0aC5mbG9vcihyKStmdW5jdGlvbiBZYyhlLHQpe3JldHVybiB0PCgiIitNYXRoLnJvdW5kKChlLU1hdGguZmxvb3IoZSkpKk1hdGgucG93KDEwLHQpKSkubGVuZ3RoPzE6MH0ocixpWzFdLmxlbmd0aCkpKSsiLiIrWXIobWkocixpWzFdLmxlbmd0aCksaVsxXS5sZW5ndGgpO2lmKGk9''@;'; put 'put ''dC5tYXRjaCgvXiMsIyosIzAvKSlyZXR1cm4gVXIoZSx0LnJlcGxhY2UoL14jLCMqLC8sIiIpLHIpO2lmKGk9dC5tYXRjaCgvXihbMCNdKykoXFw/LShbMCNdKykpKyQvKSlyZXR1cm4gbj1lYShVcihlLHQucmVwbGFjZSgvW1xcLV0vZywiIikscikpLHM9MCxlYShlYSh0LnJlcGxhY2UoL1xc''@;'; put 'put ''L2csIiIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rpb24odil7cmV0dXJuIHM8bi5sZW5ndGg/bi5jaGFyQXQocysrKToiMCI9PT12PyIwIjoiIn0pKTtpZih0Lm1hdGNoKHZpKSlyZXR1cm4iKCIrKG49VXIoZSwiIyMjIyMjIyMjIyIscikpLnN1YnN0cigwLDMpKyIpICIrbi5zdWJzdHIoMywz''@;'; put 'put ''KSsiLSIrbi5zdWJzdHIoNik7dmFyIGw9IiI7aWYoaT10Lm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gcz1NYXRoLm1pbihpWzRdLmxlbmd0aCw3KSxmPWkwKGMsTWF0aC5wb3coMTAscyktMSwhMSksbj0iIitvLCIgIj09KGw9bHQoIm4iLGlbMV0sZlsxXSkp''@;'; put 'put ''LmNoYXJBdChsLmxlbmd0aC0xKSYmKGw9bC5zdWJzdHIoMCxsLmxlbmd0aC0xKSsiMCIpLG4rPWwraVsyXSsiLyIraVszXSwobD1hMChmWzJdLHMpKS5sZW5ndGg8aVs0XS5sZW5ndGgmJihsPVRyKGlbNF0uc3Vic3RyKGlbNF0ubGVuZ3RoLWwubGVuZ3RoKSkrbCksbis9bDtpZihpPXQubWF0''@;'; put 'put ''Y2goL14jIChbIzA/XSspKCA/KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIHM9TWF0aC5taW4oTWF0aC5tYXgoaVsxXS5sZW5ndGgsaVs0XS5sZW5ndGgpLDcpLG8rKChmPWkwKGMsTWF0aC5wb3coMTAscyktMSwhMCkpWzBdfHwoZlsxXT8iIjoiMCIpKSsiICIrKGZbMV0/VTAoZlsxXSxzKStp''@;'; put 'put ''WzJdKyIvIitpWzNdK2EwKGZbMl0scyk6amUoIiAiLDIqcysxK2lbMl0ubGVuZ3RoK2lbM10ubGVuZ3RoKSk7aWYoaT10Lm1hdGNoKC9eWyMwP10rJC8pKXJldHVybiBuPXJhKHIsMCksdC5sZW5ndGg8PW4ubGVuZ3RoP246VHIodC5zdWJzdHIoMCx0Lmxlbmd0aC1uLmxlbmd0aCkpK247aWYo''@;'; put 'put ''aT10Lm1hdGNoKC9eKFsjMD9dKylcLihbIzBdKykkLykpe249IiIrci50b0ZpeGVkKE1hdGgubWluKGlbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLywiJDEiKSxzPW4uaW5kZXhPZigiLiIpO3ZhciBoPXQuaW5kZXhPZigiLiIpLXMseD10Lmxlbmd0aC1uLmxlbmd0aC1oO3Jl''@;'; put 'put ''dHVybiBUcih0LnN1YnN0cigwLGgpK24rdC5zdWJzdHIodC5sZW5ndGgteCkpfWlmKGk9dC5tYXRjaCgvXjAwLDAwMFwuKFsjMF0qMCkkLykpcmV0dXJuIHM9bWkocixpWzFdLmxlbmd0aCkscjwwPyItIitVcihlLHQsLXIpOkV0KGZ1bmN0aW9uIEpjKGUpe3JldHVybiBlPDIxNDc0ODM2NDcm''@;'; put 'put ''JmU+LTIxNDc0ODM2NDg/IiIrKGU+PTA/MHxlOmUtMXwwKToiIitNYXRoLmZsb29yKGUpfShyKSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbih2KXtyZXR1cm4iMDAsIisodi5sZW5ndGg8Mz9ZcigwLDMtdi5sZW5ndGgpOiIiKSt2fSkrIi4i''@;'; put 'put ''K1lyKHMsaVsxXS5sZW5ndGgpO3N3aXRjaCh0KXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBVcihlLCIjLCMjMC4wMCIscik7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIGQ9RXQocmEoYywwKSk7cmV0dXJuIjAiIT09ZD9vK2Q6IiI7Y2FzZSIjIyMsIyMjLjAw''@;'; put 'put ''IjpyZXR1cm4gVXIoZSwiIyMjLCMjMC4wMCIscikucmVwbGFjZSgvXjBcLi8sIi4iKTtjYXNlIiMsIyMjLjAwIjpyZXR1cm4gVXIoZSwiIywjIzAuMDAiLHIpLnJlcGxhY2UoL14wXC4vLCIuIil9dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBmb3JtYXQgfCIrdCsifCIpfWZ1bmN0aW9u''@;'; put 'put ''IGdpKGUsdCl7dmFyIHIsYT1lLmluZGV4T2YoIkUiKS1lLmluZGV4T2YoIi4iKS0xO2lmKGUubWF0Y2goL14jKzAuMEVcKzAkLykpe2lmKDA9PXQpcmV0dXJuIjAuMEUrMCI7aWYodDwwKXJldHVybiItIitnaShlLC10KTt2YXIgbj1lLmluZGV4T2YoIi4iKTstMT09PW4mJihuPWUuaW5kZXhP''@;'; put 'put ''ZigiRSIpKTt2YXIgaT1NYXRoLmZsb29yKE1hdGgubG9nKHQpKk1hdGguTE9HMTBFKSVuO2lmKGk8MCYmKGkrPW4pLCEocj0odC9NYXRoLnBvdygxMCxpKSkudG9QcmVjaXNpb24oYSsxKyhuK2kpJW4pKS5tYXRjaCgvW0VlXS8pKXt2YXIgcz1NYXRoLmZsb29yKE1hdGgubG9nKHQpKk1hdGgu''@;'; put 'put ''TE9HMTBFKTstMT09PXIuaW5kZXhPZigiLiIpP3I9ci5jaGFyQXQoMCkrIi4iK3Iuc3Vic3RyKDEpKyJFKyIrKHMtci5sZW5ndGgraSk6cis9IkUrIisocy1pKSxyPXIucmVwbGFjZSgvXCstLywiLSIpfXI9ci5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKGYs''@;'; put 'put ''YyxvLGwpe3JldHVybiBjK28rbC5zdWJzdHIoMCwobitpKSVuKSsiLiIrbC5zdWJzdHIoaSkrIkUifSl9ZWxzZSByPXQudG9FeHBvbmVudGlhbChhKTtyZXR1cm4gZS5tYXRjaCgvRVwrMDAkLykmJnIubWF0Y2goL2VbKy1dXGQkLykmJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkrIjAiK3Iu''@;'; put 'put ''Y2hhckF0KHIubGVuZ3RoLTEpKSxlLm1hdGNoKC9FXC0vKSYmci5tYXRjaCgvZVwrLykmJihyPXIucmVwbGFjZSgvZVwrLywiZSIpKSxyLnJlcGxhY2UoImUiLCJFIil9ZnVuY3Rpb24gUXIoZSx0LHIpe2lmKDQwPT09ZS5jaGFyQ29kZUF0KDApJiYhdC5tYXRjaChkaSkpe3ZhciBhPXQucmVw''@;'; put 'put ''bGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHI+PTA/UXIoIm4iLGEscik6IigiK1FyKCJuIixhLC1yKSsiKSJ9aWYoNDQ9PT10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSkpcmV0dXJuIGZ1bmN0aW9uIHFjKGUsdCxyKXtmb3IodmFyIGE9''@;'; put 'put ''dC5sZW5ndGgtMTs0ND09PXQuY2hhckNvZGVBdChhLTEpOyktLWE7cmV0dXJuIGx0KGUsdC5zdWJzdHIoMCxhKSxyL01hdGgucG93KDEwLDMqKHQubGVuZ3RoLWEpKSl9KGUsdCxyKTtpZigtMSE9PXQuaW5kZXhPZigiJSIpKXJldHVybiBmdW5jdGlvbiBaYyhlLHQscil7dmFyIGE9dC5yZXBs''@;'; put 'put ''YWNlKGxpLCIiKSxuPXQubGVuZ3RoLWEubGVuZ3RoO3JldHVybiBsdChlLGEscipNYXRoLnBvdygxMCwyKm4pKStqZSgiJSIsbil9KGUsdCxyKTtpZigtMSE9PXQuaW5kZXhPZigiRSIpKXJldHVybiBnaSh0LHIpO2lmKDM2PT09dC5jaGFyQ29kZUF0KDApKXJldHVybiIkIitRcihlLHQuc3Vi''@;'; put 'put ''c3RyKCIgIj09dC5jaGFyQXQoMSk/MjoxKSxyKTt2YXIgbixpLHMsZixjPU1hdGguYWJzKHIpLG89cjwwPyItIjoiIjtpZih0Lm1hdGNoKC9eMDArJC8pKXJldHVybiBvK1lyKGMsdC5sZW5ndGgpO2lmKHQubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4gbj0iIityLDA9PT1yJiYobj0iIiksbi5s''@;'; put 'put ''ZW5ndGg+dC5sZW5ndGg/bjpUcih0LnN1YnN0cigwLHQubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPXQubWF0Y2goaGkpKXJldHVybiBmdW5jdGlvbiBLYyhlLHQscil7cmV0dXJuIHIrKDA9PT10PyIiOiIiK3QpK2plKCIgIixlWzFdLmxlbmd0aCsyK2VbNF0ubGVuZ3RoKX0oaSxjLG8pO2lm''@;'; put 'put ''KHQubWF0Y2goL14jKzArJC8pKXJldHVybiBvK1lyKGMsdC5sZW5ndGgtdC5pbmRleE9mKCIwIikpO2lmKGk9dC5tYXRjaCh4aSkpcmV0dXJuIG49KG49KCIiK3IpLnJlcGxhY2UoL14oW15cLl0rKSQvLCIkMS4iK1RyKGlbMV0pKS5yZXBsYWNlKC9cLiQvLCIuIitUcihpWzFdKSkpLnJlcGxh''@;'; put 'put ''Y2UoL1wuKFxkKikkLyxmdW5jdGlvbih2LHUpe3JldHVybiIuIit1K2plKCIwIixUcihpWzFdKS5sZW5ndGgtdS5sZW5ndGgpfSksLTEhPT10LmluZGV4T2YoIjAuIik/bjpuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYodD10LnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksaT10Lm1hdGNoKC9e''@;'; put 'put ''KDAqKVwuKCMqKSQvKSlyZXR1cm4gbysoIiIrYykucmVwbGFjZSgvXC4oXGQqWzEtOV0pMCokLywiLiQxIikucmVwbGFjZSgvXigtP1xkKikkLywiJDEuIikucmVwbGFjZSgvXjBcLi8saVsxXS5sZW5ndGg/IjAuIjoiLiIpO2lmKGk9dC5tYXRjaCgvXiN7MSwzfSwjIzAoXC4/KSQvKSlyZXR1''@;'; put 'put ''cm4gbytFdCgiIitjKTtpZihpPXQubWF0Y2goL14jLCMjMFwuKFsjMF0qMCkkLykpcmV0dXJuIHI8MD8iLSIrUXIoZSx0LC1yKTpFdCgiIityKSsiLiIramUoIjAiLGlbMV0ubGVuZ3RoKTtpZihpPXQubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIFFyKGUsdC5yZXBsYWNlKC9eIywjKiwvLCIi''@;'; put 'put ''KSxyKTtpZihpPXQubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIG49ZWEoUXIoZSx0LnJlcGxhY2UoL1tcXC1dL2csIiIpLHIpKSxzPTAsZWEoZWEodC5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHYpe3JldHVybiBzPG4ubGVuZ3Ro''@;'; put 'put ''P24uY2hhckF0KHMrKyk6IjAiPT09dj8iMCI6IiJ9KSk7aWYodC5tYXRjaCh2aSkpcmV0dXJuIigiKyhuPVFyKGUsIiMjIyMjIyMjIyMiLHIpKS5zdWJzdHIoMCwzKSsiKSAiK24uc3Vic3RyKDMsMykrIi0iK24uc3Vic3RyKDYpO3ZhciBsPSIiO2lmKGk9dC5tYXRjaCgvXihbIzA/XSspKCA/''@;'; put 'put ''KVwvKCA/KShbIzA/XSspLykpcmV0dXJuIHM9TWF0aC5taW4oaVs0XS5sZW5ndGgsNyksZj1pMChjLE1hdGgucG93KDEwLHMpLTEsITEpLG49IiIrbywiICI9PShsPWx0KCJuIixpWzFdLGZbMV0pKS5jaGFyQXQobC5sZW5ndGgtMSkmJihsPWwuc3Vic3RyKDAsbC5sZW5ndGgtMSkrIjAiKSxu''@;'; put 'put ''Kz1sK2lbMl0rIi8iK2lbM10sKGw9YTAoZlsyXSxzKSkubGVuZ3RoPGlbNF0ubGVuZ3RoJiYobD1UcihpWzRdLnN1YnN0cihpWzRdLmxlbmd0aC1sLmxlbmd0aCkpK2wpLG4rPWw7aWYoaT10Lm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBzPU1hdGgubWlu''@;'; put 'put ''KE1hdGgubWF4KGlbMV0ubGVuZ3RoLGlbNF0ubGVuZ3RoKSw3KSxvKygoZj1pMChjLE1hdGgucG93KDEwLHMpLTEsITApKVswXXx8KGZbMV0/IiI6IjAiKSkrIiAiKyhmWzFdP1UwKGZbMV0scykraVsyXSsiLyIraVszXSthMChmWzJdLHMpOmplKCIgIiwyKnMrMStpWzJdLmxlbmd0aCtpWzNd''@;'; put 'put ''Lmxlbmd0aCkpO2lmKGk9dC5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gdC5sZW5ndGg8PShuPSIiK3IpLmxlbmd0aD9uOlRyKHQuc3Vic3RyKDAsdC5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9dC5tYXRjaCgvXihbIzBdKylcLihbIzBdKykkLykpe249IiIrci50b0ZpeGVkKE1hdGgubWlu''@;'; put 'put ''KGlbMl0ubGVuZ3RoLDEwKSkucmVwbGFjZSgvKFteMF0pMCskLywiJDEiKSxzPW4uaW5kZXhPZigiLiIpO3ZhciBoPXQuaW5kZXhPZigiLiIpLXMseD10Lmxlbmd0aC1uLmxlbmd0aC1oO3JldHVybiBUcih0LnN1YnN0cigwLGgpK24rdC5zdWJzdHIodC5sZW5ndGgteCkpfWlmKGk9dC5tYXRj''@;'; put 'put ''aCgvXjAwLDAwMFwuKFsjMF0qMCkkLykpcmV0dXJuIHI8MD8iLSIrUXIoZSx0LC1yKTpFdCgiIityKS5yZXBsYWNlKC9eXGQsXGR7M30kLywiMCQmIikucmVwbGFjZSgvXlxkKiQvLGZ1bmN0aW9uKHYpe3JldHVybiIwMCwiKyh2Lmxlbmd0aDwzP1lyKDAsMy12Lmxlbmd0aCk6IiIpK3Z9KSsi''@;'; put 'put ''LiIrWXIoMCxpWzFdLmxlbmd0aCk7c3dpdGNoKHQpe2Nhc2UiIyMjLCMjIyI6Y2FzZSIjIywjIyMiOmNhc2UiIywjIyMiOnZhciBkPUV0KCIiK2MpO3JldHVybiIwIiE9PWQ/bytkOiIiO2RlZmF1bHQ6aWYodC5tYXRjaCgvXC5bMCM/XSokLykpcmV0dXJuIFFyKGUsdC5zbGljZSgwLHQubGFz''@;'; put 'put ''dEluZGV4T2YoIi4iKSkscikrVHIodC5zbGljZSh0Lmxhc3RJbmRleE9mKCIuIikpKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIGZvcm1hdCB8Iit0KyJ8Iil9ZnVuY3Rpb24gbHQoZSx0LHIpe3JldHVybigwfHIpPT09cj9RcihlLHQscik6VXIoZSx0LHIpfXZhciBfaT0vXFtbSGhN''@;'; put 'put ''bVNzXHUwRTBBXHUwRTE5XHUwRTE3XSpcXS87ZnVuY3Rpb24gYnQoZSl7Zm9yKHZhciB0PTAscj0iIixhPSIiO3Q8ZS5sZW5ndGg7KXN3aXRjaChyPWUuY2hhckF0KHQpKXtjYXNlIkciOm4wKGUsdCkmJih0Kz02KSx0Kys7YnJlYWs7Y2FzZSciJzpmb3IoOzM0IT09ZS5jaGFyQ29kZUF0KCsr''@;'; put 'put ''dCkmJnQ8ZS5sZW5ndGg7KTsrK3Q7YnJlYWs7Y2FzZSJcXCI6Y2FzZSJfIjp0Kz0yO2JyZWFrO2Nhc2UiQCI6Kyt0O2JyZWFrO2Nhc2UiQiI6Y2FzZSJiIjppZigiMSI9PT1lLmNoYXJBdCh0KzEpfHwiMiI9PT1lLmNoYXJBdCh0KzEpKXJldHVybiEwO2Nhc2UiTSI6Y2FzZSJEIjpjYXNlIlki''@;'; put 'put ''OmNhc2UiSCI6Y2FzZSJTIjpjYXNlIkUiOmNhc2UibSI6Y2FzZSJkIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6cmV0dXJuITA7Y2FzZSJBIjpjYXNlImEiOmNhc2UiXHU0ZTBhIjppZigiQS9QIj09PWUuc3Vic3RyKHQsMykudG9VcHBlckNhc2UoKXx8IkFNL1BN''@;'; put 'put ''Ij09PWUuc3Vic3RyKHQsNSkudG9VcHBlckNhc2UoKXx8Ilx1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDgiPT09ZS5zdWJzdHIodCw1KS50b1VwcGVyQ2FzZSgpKXJldHVybiEwOysrdDticmVhaztjYXNlIlsiOmZvcihhPXI7Il0iIT09ZS5jaGFyQXQodCsrKSYmdDxlLmxlbmd0aDspYSs9ZS5j''@;'; put 'put ''aGFyQXQodCk7aWYoYS5tYXRjaChfaSkpcmV0dXJuITA7YnJlYWs7Y2FzZSIuIjpjYXNlIjAiOmNhc2UiIyI6Zm9yKDt0PGUubGVuZ3RoJiYoIjAjPy4sRSstJSIuaW5kZXhPZihyPWUuY2hhckF0KCsrdCkpPi0xfHwiXFwiPT1yJiYiLSI9PWUuY2hhckF0KHQrMSkmJiIwIyIuaW5kZXhPZihl''@;'; put 'put ''LmNoYXJBdCh0KzIpKT4tMSk7KTticmVhaztjYXNlIj8iOmZvcig7ZS5jaGFyQXQoKyt0KT09PXI7KTticmVhaztjYXNlIioiOisrdCwoIiAiPT1lLmNoYXJBdCh0KXx8IioiPT1lLmNoYXJBdCh0KSkmJisrdDticmVhaztjYXNlIigiOmNhc2UiKSI6Kyt0O2JyZWFrO2Nhc2UiMSI6Y2FzZSIy''@;'; put 'put ''IjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmZvcig7dDxlLmxlbmd0aCYmIjAxMjM0NTY3ODkiLmluZGV4T2YoZS5jaGFyQXQoKyt0KSk+LTE7KTticmVhaztkZWZhdWx0OisrdH1yZXR1cm4hMX12YXIgd2k9L1xbKD18Pls9XT98PFs+''@;'; put 'put ''PV0/KSgtP1xkKyg/OlwuXGQqKT8pXF0vO2Z1bmN0aW9uIGtpKGUsdCl7aWYobnVsbD09dClyZXR1cm4hMTt2YXIgcj1wYXJzZUZsb2F0KHRbMl0pO3N3aXRjaCh0WzFdKXtjYXNlIj0iOmlmKGU9PXIpcmV0dXJuITA7YnJlYWs7Y2FzZSI+IjppZihlPnIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8''@;'; put 'put ''IjppZihlPHIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8PiI6aWYoZSE9cilyZXR1cm4hMDticmVhaztjYXNlIj49IjppZihlPj1yKXJldHVybiEwO2JyZWFrO2Nhc2UiPD0iOmlmKGU8PXIpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUnIoZSx0LHIpe251bGw9PXImJihyPXt9KTt2YXIgYT0i''@;'; put 'put ''Ijtzd2l0Y2godHlwZW9mIGUpe2Nhc2Uic3RyaW5nIjphPSJtL2QveXkiPT1lJiZyLmRhdGVORj9yLmRhdGVORjplO2JyZWFrO2Nhc2UibnVtYmVyIjpudWxsPT0oYT0xND09ZSYmci5kYXRlTkY/ci5kYXRlTkY6KG51bGwhPXIudGFibGU/ci50YWJsZTpwZSlbZV0pJiYoYT1yLnRhYmxlJiZy''@;'; put 'put ''LnRhYmxlW2ZpW2VdXXx8cGVbZmlbZV1dKSxudWxsPT1hJiYoYT1CY1tlXXx8IkdlbmVyYWwiKX1pZihuMChhLDApKXJldHVybiBOdCh0LHIpO3QgaW5zdGFuY2VvZiBEYXRlJiYodD1vaSh0LHIuZGF0ZTE5MDQpKTt2YXIgbj1mdW5jdGlvbiBybyhlLHQpe3ZhciByPWZ1bmN0aW9uIFFjKGUp''@;'; put 'put ''e2Zvcih2YXIgdD1bXSxyPSExLGE9MCxuPTA7YTxlLmxlbmd0aDsrK2Epc3dpdGNoKGUuY2hhckNvZGVBdChhKSl7Y2FzZSAzNDpyPSFyO2JyZWFrO2Nhc2UgOTU6Y2FzZSA0MjpjYXNlIDkyOisrYTticmVhaztjYXNlIDU5OnRbdC5sZW5ndGhdPWUuc3Vic3RyKG4sYS1uKSxuPWErMX1pZih0''@;'; put 'put ''W3QubGVuZ3RoXT1lLnN1YnN0cihuKSwhMD09PXIpdGhyb3cgbmV3IEVycm9yKCJGb3JtYXQgfCIrZSsifCB1bnRlcm1pbmF0ZWQgc3RyaW5nICIpO3JldHVybiB0fShlKSxhPXIubGVuZ3RoLG49clthLTFdLmluZGV4T2YoIkAiKTtpZihhPDQmJm4+LTEmJi0tYSxyLmxlbmd0aD40KXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiY2Fubm90IGZpbmQgcmlnaHQgZm9ybWF0IGZvciB8IityLmpvaW4oInwiKSsifCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm5bNCw0PT09ci5sZW5ndGh8fG4+LTE/cltyLmxlbmd0aC0xXToiQCJdO3N3aXRjaChyLmxlbmd0aCl7Y2FzZSAxOnI9bj4tMT9bIkdl''@;'; put 'put ''bmVyYWwiLCJHZW5lcmFsIiwiR2VuZXJhbCIsclswXV06W3JbMF0sclswXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAyOnI9bj4tMT9bclswXSxyWzBdLHJbMF0sclsxXV06W3JbMF0sclsxXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAzOnI9bj4tMT9bclswXSxyWzFdLHJbMF0sclsyXV06W3JbMF0s''@;'; put 'put ''clsxXSxyWzJdLCJAIl19dmFyIGk9dD4wP3JbMF06dDwwP3JbMV06clsyXTtpZigtMT09PXJbMF0uaW5kZXhPZigiWyIpJiYtMT09PXJbMV0uaW5kZXhPZigiWyIpKXJldHVyblthLGldO2lmKG51bGwhPXJbMF0ubWF0Y2goL1xbWz08Pl0vKXx8bnVsbCE9clsxXS5tYXRjaCgvXFtbPTw+XS8p''@;'; put 'put ''KXt2YXIgcz1yWzBdLm1hdGNoKHdpKSxmPXJbMV0ubWF0Y2god2kpO3JldHVybiBraSh0LHMpP1thLHJbMF1dOmtpKHQsZik/W2EsclsxXV06W2EscltudWxsIT1zJiZudWxsIT1mPzI6MV1dfXJldHVyblthLGldfShhLHQpO2lmKG4wKG5bMV0pKXJldHVybiBOdCh0LHIpO2lmKCEwPT09dCl0''@;'; put 'put ''PSJUUlVFIjtlbHNlIGlmKCExPT09dCl0PSJGQUxTRSI7ZWxzZSBpZigiIj09PXR8fG51bGw9PXQpcmV0dXJuIiI7cmV0dXJuIGZ1bmN0aW9uIGVvKGUsdCxyLGEpe2Zvcih2YXIgbyxsLGgsbj1bXSxpPSIiLHM9MCxmPSIiLGM9InQiLHg9IkgiO3M8ZS5sZW5ndGg7KXN3aXRjaChmPWUuY2hh''@;'; put 'put ''ckF0KHMpKXtjYXNlIkciOmlmKCFuMChlLHMpKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIGNoYXJhY3RlciAiK2YrIiBpbiAiK2UpO25bbi5sZW5ndGhdPXt0OiJHIix2OiJHZW5lcmFsIn0scys9NzticmVhaztjYXNlJyInOmZvcihpPSIiOzM0IT09KGg9ZS5jaGFyQ29kZUF0KCsr''@;'; put 'put ''cykpJiZzPGUubGVuZ3RoOylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpO25bbi5sZW5ndGhdPXt0OiJ0Iix2Oml9LCsrczticmVhaztjYXNlIlxcIjp2YXIgZD1lLmNoYXJBdCgrK3MpO25bbi5sZW5ndGhdPXt0OiIoIj09PWR8fCIpIj09PWQ/ZDoidCIsdjpkfSwrK3M7YnJlYWs7Y2FzZSJf''@;'; put 'put ''IjpuW24ubGVuZ3RoXT17dDoidCIsdjoiICJ9LHMrPTI7YnJlYWs7Y2FzZSJAIjpuW24ubGVuZ3RoXT17dDoiVCIsdjp0fSwrK3M7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKCIxIj09PWUuY2hhckF0KHMrMSl8fCIyIj09PWUuY2hhckF0KHMrMSkpe2lmKG51bGw9PW8mJm51bGw9PShvPWt0''@;'; put 'put ''KHQsciwiMiI9PT1lLmNoYXJBdChzKzEpKSkpcmV0dXJuIiI7bltuLmxlbmd0aF09e3Q6IlgiLHY6ZS5zdWJzdHIocywyKX0sYz1mLHMrPTI7YnJlYWt9Y2FzZSJNIjpjYXNlIkQiOmNhc2UiWSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6Zj1mLnRvTG93ZXJDYXNlKCk7Y2FzZSJtIjpjYXNl''@;'; put 'put ''ImQiOmNhc2UieSI6Y2FzZSJoIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJnIjppZih0PDB8fG51bGw9PW8mJm51bGw9PShvPWt0KHQscikpKXJldHVybiIiO2ZvcihpPWY7KytzPGUubGVuZ3RoJiZlLmNoYXJBdChzKS50b0xvd2VyQ2FzZSgpPT09ZjspaSs9ZjsibSI9PT1mJiYiaCI9PT1jLnRv''@;'; put 'put ''TG93ZXJDYXNlKCkmJihmPSJNIiksImgiPT09ZiYmKGY9eCksbltuLmxlbmd0aF09e3Q6Zix2Oml9LGM9ZjticmVhaztjYXNlIkEiOmNhc2UiYSI6Y2FzZSJcdTRlMGEiOnZhciB1PXt0OmYsdjpmfTtpZihudWxsPT1vJiYobz1rdCh0LHIpKSwiQS9QIj09PWUuc3Vic3RyKHMsMykudG9VcHBl''@;'; put 'put ''ckNhc2UoKT8obnVsbCE9byYmKHUudj1vLkg+PTEyPyJQIjoiQSIpLHUudD0iVCIseD0iaCIscys9Myk6IkFNL1BNIj09PWUuc3Vic3RyKHMsNSkudG9VcHBlckNhc2UoKT8obnVsbCE9byYmKHUudj1vLkg+PTEyPyJQTSI6IkFNIiksdS50PSJUIixzKz01LHg9ImgiKToiXHU0ZTBhXHU1MzQ4''@;'; put 'put ''L1x1NGUwYlx1NTM0OCI9PT1lLnN1YnN0cihzLDUpLnRvVXBwZXJDYXNlKCk/KG51bGwhPW8mJih1LnY9by5IPj0xMj8iXHU0ZTBiXHU1MzQ4IjoiXHU0ZTBhXHU1MzQ4IiksdS50PSJUIixzKz01LHg9ImgiKToodS50PSJ0IiwrK3MpLG51bGw9PW8mJiJUIj09PXUudClyZXR1cm4iIjtuW24u''@;'; put 'put ''bGVuZ3RoXT11LGM9ZjticmVhaztjYXNlIlsiOmZvcihpPWY7Il0iIT09ZS5jaGFyQXQocysrKSYmczxlLmxlbmd0aDspaSs9ZS5jaGFyQXQocyk7aWYoIl0iIT09aS5zbGljZSgtMSkpdGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcraSsifCI7aWYoaS5tYXRjaChfaSkpe2lmKG51''@;'; put 'put ''bGw9PW8mJm51bGw9PShvPWt0KHQscikpKXJldHVybiIiO25bbi5sZW5ndGhdPXt0OiJaIix2OmkudG9Mb3dlckNhc2UoKX0sYz1pLmNoYXJBdCgxKX1lbHNlIGkuaW5kZXhPZigiJCIpPi0xJiYoaT0oaS5tYXRjaCgvXCQoW14tXFtcXV0qKS8pfHxbXSlbMV18fCIkIixidChlKXx8KG5bbi5s''@;'; put 'put ''ZW5ndGhdPXt0OiJ0Iix2Oml9KSk7YnJlYWs7Y2FzZSIuIjppZihudWxsIT1vKXtmb3IoaT1mOysrczxlLmxlbmd0aCYmIjAiPT09KGY9ZS5jaGFyQXQocykpOylpKz1mO25bbi5sZW5ndGhdPXt0OiJzIix2Oml9O2JyZWFrfWNhc2UiMCI6Y2FzZSIjIjpmb3IoaT1mOysrczxlLmxlbmd0aCYm''@;'; put 'put ''IjAjPy4sRSstJSIuaW5kZXhPZihmPWUuY2hhckF0KHMpKT4tMTspaSs9ZjtuW24ubGVuZ3RoXT17dDoibiIsdjppfTticmVhaztjYXNlIj8iOmZvcihpPWY7ZS5jaGFyQXQoKytzKT09PWY7KWkrPWY7bltuLmxlbmd0aF09e3Q6Zix2Oml9LGM9ZjticmVhaztjYXNlIioiOisrcywoIiAiPT1l''@;'; put 'put ''LmNoYXJBdChzKXx8IioiPT1lLmNoYXJBdChzKSkmJisrczticmVhaztjYXNlIigiOmNhc2UiKSI6bltuLmxlbmd0aF09e3Q6MT09PWE/InQiOmYsdjpmfSwrK3M7YnJlYWs7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNh''@;'; put 'put ''c2UiOSI6Zm9yKGk9ZjtzPGUubGVuZ3RoJiYiMDEyMzQ1Njc4OSIuaW5kZXhPZihlLmNoYXJBdCgrK3MpKT4tMTspaSs9ZS5jaGFyQXQocyk7bltuLmxlbmd0aF09e3Q6IkQiLHY6aX07YnJlYWs7Y2FzZSIgIjpuW24ubGVuZ3RoXT17dDpmLHY6Zn0sKytzO2JyZWFrO2Nhc2UiJCI6bltuLmxl''@;'; put 'put ''bmd0aF09e3Q6InQiLHY6IiQifSwrK3M7YnJlYWs7ZGVmYXVsdDppZigtMT09PSIsJC0rLygpOiFeJid+e308Pj1cdTIwYWNhY2Zpamtsb3BxcnR1dnd4elAiLmluZGV4T2YoZikpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrZisiIGluICIrZSk7bltuLmxlbmd0''@;'; put 'put ''aF09e3Q6InQiLHY6Zn0sKytzfXZhciBULHA9MCxrPTA7Zm9yKHM9bi5sZW5ndGgtMSxjPSJ0IjtzPj0wOy0tcylzd2l0Y2gobltzXS50KXtjYXNlImgiOmNhc2UiSCI6bltzXS50PXgsYz0iaCIscDwxJiYocD0xKTticmVhaztjYXNlInMiOihUPW5bc10udi5tYXRjaCgvXC4wKyQvKSkmJihr''@;'; put 'put ''PU1hdGgubWF4KGssVFswXS5sZW5ndGgtMSkpLHA8MyYmKHA9Myk7Y2FzZSJkIjpjYXNlInkiOmNhc2UiTSI6Y2FzZSJlIjpjPW5bc10udDticmVhaztjYXNlIm0iOiJzIj09PWMmJihuW3NdLnQ9Ik0iLHA8MiYmKHA9MikpO2JyZWFrO2Nhc2UiWCI6YnJlYWs7Y2FzZSJaIjpwPDEmJm5bc10u''@;'; put 'put ''di5tYXRjaCgvW0hoXS8pJiYocD0xKSxwPDImJm5bc10udi5tYXRjaCgvW01tXS8pJiYocD0yKSxwPDMmJm5bc10udi5tYXRjaCgvW1NzXS8pJiYocD0zKX1zd2l0Y2gocCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTpvLnU+PS41JiYoby51PTAsKytvLlMpLG8uUz49NjAmJihvLlM9MCwrK28uTSks''@;'; put 'put ''by5NPj02MCYmKG8uTT0wLCsrby5IKTticmVhaztjYXNlIDI6by51Pj0uNSYmKG8udT0wLCsrby5TKSxvLlM+PTYwJiYoby5TPTAsKytvLk0pfXZhciBOLGc9IiI7Zm9yKHM9MDtzPG4ubGVuZ3RoOysrcylzd2l0Y2gobltzXS50KXtjYXNlInQiOmNhc2UiVCI6Y2FzZSIgIjpjYXNlIkQiOmJy''@;'; put 'put ''ZWFrO2Nhc2UiWCI6bltzXS52PSIiLG5bc10udD0iOyI7YnJlYWs7Y2FzZSJkIjpjYXNlIm0iOmNhc2UieSI6Y2FzZSJoIjpjYXNlIkgiOmNhc2UiTSI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiYiI6Y2FzZSJaIjpuW3NdLnY9R2MobltzXS50LmNoYXJDb2RlQXQoMCksbltzXS52LG8sayksbltz''@;'; put 'put ''XS50PSJ0IjticmVhaztjYXNlIm4iOmNhc2UiPyI6Zm9yKE49cysxO251bGwhPW5bTl0mJigiPyI9PT0oZj1uW05dLnQpfHwiRCI9PT1mfHwoIiAiPT09Znx8InQiPT09ZikmJm51bGwhPW5bTisxXSYmKCI/Ij09PW5bTisxXS50fHwidCI9PT1uW04rMV0udCYmIi8iPT09bltOKzFdLnYpfHwi''@;'; put 'put ''KCI9PT1uW3NdLnQmJigiICI9PT1mfHwibiI9PT1mfHwiKSI9PT1mKXx8InQiPT09ZiYmKCIvIj09PW5bTl0udnx8IiAiPT09bltOXS52JiZudWxsIT1uW04rMV0mJiI/Ij09bltOKzFdLnQpKTspbltzXS52Kz1uW05dLnYsbltOXT17djoiIix0OiI7In0sKytOO2crPW5bc10udixzPU4tMTti''@;'; put 'put ''cmVhaztjYXNlIkciOm5bc10udD0idCIsbltzXS52PU50KHQscil9dmFyIEkseSxNPSIiO2lmKGcubGVuZ3RoPjApezQwPT1nLmNoYXJDb2RlQXQoMCk/KEk9dDwwJiY0NT09PWcuY2hhckNvZGVBdCgwKT8tdDp0LHk9bHQoIm4iLGcsSSkpOih5PWx0KCJuIixnLEk9dDwwJiZhPjE/LXQ6dCks''@;'; put 'put ''STwwJiZuWzBdJiYidCI9PW5bMF0udCYmKHk9eS5zdWJzdHIoMSksblswXS52PSItIituWzBdLnYpKSxOPXkubGVuZ3RoLTE7dmFyIFA9bi5sZW5ndGg7Zm9yKHM9MDtzPG4ubGVuZ3RoOysrcylpZihudWxsIT1uW3NdJiYidCIhPW5bc10udCYmbltzXS52LmluZGV4T2YoIi4iKT4tMSl7UD1z''@;'; put 'put ''O2JyZWFrfXZhciBSPW4ubGVuZ3RoO2lmKFA9PT1uLmxlbmd0aCYmLTE9PT15LmluZGV4T2YoIkUiKSl7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wOy0tcyludWxsPT1uW3NdfHwtMT09PSJuPyIuaW5kZXhPZihuW3NdLnQpfHwoTj49bltzXS52Lmxlbmd0aC0xP25bc10udj15LnN1YnN0cigxKyhO''@;'; put 'put ''LT1uW3NdLnYubGVuZ3RoKSxuW3NdLnYubGVuZ3RoKTpOPDA/bltzXS52PSIiOihuW3NdLnY9eS5zdWJzdHIoMCxOKzEpLE49LTEpLG5bc10udD0idCIsUj1zKTtOPj0wJiZSPG4ubGVuZ3RoJiYobltSXS52PXkuc3Vic3RyKDAsTisxKStuW1JdLnYpfWVsc2UgaWYoUCE9PW4ubGVuZ3RoJiYt''@;'; put 'put ''MT09PXkuaW5kZXhPZigiRSIpKXtmb3IoTj15LmluZGV4T2YoIi4iKS0xLHM9UDtzPj0wOy0tcylpZihudWxsIT1uW3NdJiYtMSE9PSJuPyIuaW5kZXhPZihuW3NdLnQpKXtmb3IobD1uW3NdLnYuaW5kZXhPZigiLiIpPi0xJiZzPT09UD9uW3NdLnYuaW5kZXhPZigiLiIpLTE6bltzXS52Lmxl''@;'; put 'put ''bmd0aC0xLE09bltzXS52LnN1YnN0cihsKzEpO2w+PTA7LS1sKU4+PTAmJigiMCI9PT1uW3NdLnYuY2hhckF0KGwpfHwiIyI9PT1uW3NdLnYuY2hhckF0KGwpKSYmKE09eS5jaGFyQXQoTi0tKStNKTtuW3NdLnY9TSxuW3NdLnQ9InQiLFI9c31mb3IoTj49MCYmUjxuLmxlbmd0aCYmKG5bUl0u''@;'; put 'put ''dj15LnN1YnN0cigwLE4rMSkrbltSXS52KSxOPXkuaW5kZXhPZigiLiIpKzEscz1QO3M8bi5sZW5ndGg7KytzKWlmKG51bGwhPW5bc10mJigtMSE9PSJuPygiLmluZGV4T2YobltzXS50KXx8cz09PVApKXtmb3IobD1uW3NdLnYuaW5kZXhPZigiLiIpPi0xJiZzPT09UD9uW3NdLnYuaW5kZXhP''@;'; put 'put ''ZigiLiIpKzE6MCxNPW5bc10udi5zdWJzdHIoMCxsKTtsPG5bc10udi5sZW5ndGg7KytsKU48eS5sZW5ndGgmJihNKz15LmNoYXJBdChOKyspKTtuW3NdLnY9TSxuW3NdLnQ9InQiLFI9c319fWZvcihzPTA7czxuLmxlbmd0aDsrK3MpbnVsbCE9bltzXSYmIm4/Ii5pbmRleE9mKG5bc10udCk+''@;'; put 'put ''LTEmJihuW3NdLnY9bHQobltzXS50LG5bc10udixJPWE+MSYmdDwwJiZzPjAmJiItIj09PW5bcy0xXS52Py10OnQpLG5bc10udD0idCIpO3ZhciBWPSIiO2ZvcihzPTA7cyE9PW4ubGVuZ3RoOysrcyludWxsIT1uW3NdJiYoVis9bltzXS52KTtyZXR1cm4gVn0oblsxXSx0LHIsblswXSl9ZnVu''@;'; put 'put ''Y3Rpb24gZXQoZSx0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQpe3Q9K3R8fC0xO2Zvcih2YXIgcj0wO3I8MzkyOysrcilpZihudWxsIT1wZVtyXSl7aWYocGVbcl09PWUpe3Q9cjticmVha319ZWxzZSB0PDAmJih0PXIpO3Q8MCYmKHQ9MzkxKX1yZXR1cm4gcGVbdF09ZSx0fWZ1bmN0aW9uIHRh''@;'; put 'put ''KCl7cGU9ZnVuY3Rpb24gTGMoZSl7cmV0dXJuIGV8fChlPXt9KSxlWzBdPSJHZW5lcmFsIixlWzFdPSIwIixlWzJdPSIwLjAwIixlWzNdPSIjLCMjMCIsZVs0XT0iIywjIzAuMDAiLGVbOV09IjAlIixlWzEwXT0iMC4wMCUiLGVbMTFdPSIwLjAwRSswMCIsZVsxMl09IiMgPy8/IixlWzEzXT0i''@;'; put 'put ''IyA/Py8/PyIsZVsxNF09Im0vZC95eSIsZVsxNV09ImQtbW1tLXl5IixlWzE2XT0iZC1tbW0iLGVbMTddPSJtbW0teXkiLGVbMThdPSJoOm1tIEFNL1BNIixlWzE5XT0iaDptbTpzcyBBTS9QTSIsZVsyMF09Img6bW0iLGVbMjFdPSJoOm1tOnNzIixlWzIyXT0ibS9kL3l5IGg6bW0iLGVbMzdd''@;'; put 'put ''PSIjLCMjMCA7KCMsIyMwKSIsZVszOF09IiMsIyMwIDtbUmVkXSgjLCMjMCkiLGVbMzldPSIjLCMjMC4wMDsoIywjIzAuMDApIixlWzQwXT0iIywjIzAuMDA7W1JlZF0oIywjIzAuMDApIixlWzQ1XT0ibW06c3MiLGVbNDZdPSJbaF06bW06c3MiLGVbNDddPSJtbXNzLjAiLGVbNDhdPSIjIzAu''@;'; put 'put ''MEUrMCIsZVs0OV09IkAiLGVbNTZdPSciXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCAiaGgiXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIgIicsZX0oKX12YXIgYW89ezU6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzon''@;'; put 'put ''IiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsODonIiQiIywjIzAuMDBfKTtbUmVkXVxcKCIkIiMsIyMwLjAwXFwpJywyMzoiR2VuZXJhbCIsMjQ6IkdlbmVyYWwiLDI1OiJHZW5lcmFsIiwyNjoiR2VuZXJhbCIsMjc6Im0vZC95eSIsMjg6Im0vZC95eSIsMjk6Im0vZC95eSIsMzA6''@;'; put 'put ''Im0vZC95eSIsMzE6Im0vZC95eSIsMzI6Img6bW06c3MiLDMzOiJoOm1tOnNzIiwzNDoiaDptbTpzcyIsMzU6Img6bW06c3MiLDM2OiJtL2QveXkiLDQxOidfKCogIywjIzBfKTtfKCogKCMsIyMwKTtfKCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogKCMsIyMwKTtf''@;'; put 'put ''KCIkIiogIi0iXyk7XyhAXyknLDQzOidfKCogIywjIzAuMDBfKTtfKCogKCMsIyMwLjAwKTtfKCogIi0iPz9fKTtfKEBfKScsNDQ6J18oIiQiKiAjLCMjMC4wMF8pO18oIiQiKiAoIywjIzAuMDApO18oIiQiKiAiLSI/P18pO18oQF8pJyw1MDoibS9kL3l5Iiw1MToibS9kL3l5Iiw1MjoibS9k''@;'; put 'put ''L3l5Iiw1MzoibS9kL3l5Iiw1NDoibS9kL3l5Iiw1NToibS9kL3l5Iiw1NjoibS9kL3l5Iiw1NzoibS9kL3l5Iiw1ODoibS9kL3l5Iiw1OToiMCIsNjA6IjAuMDAiLDYxOiIjLCMjMCIsNjI6IiMsIyMwLjAwIiw2MzonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7''@;'; put 'put ''W1JlZF1cXCgiJCIjLCMjMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDY2OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDY3OiIwJSIsNjg6IjAuMDAlIiw2OToiIyA/Lz8iLDcwOiIjID8/Lz8/Iiw3MToibS9kL3l5Iiw3MjoibS9kL3l5''@;'; put 'put ''Iiw3MzoiZC1tbW0teXkiLDc0OiJkLW1tbSIsNzU6Im1tbS15eSIsNzY6Img6bW0iLDc3OiJoOm1tOnNzIiw3ODoibS9kL3l5IGg6bW0iLDc5OiJtbTpzcyIsODA6IltoXTptbTpzcyIsODE6Im1tc3MuMCJ9LEVpPS9bZERdK3xbbU1dK3xbeVllRV0rfFtIaF0rfFtTc10rL2csc289ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgZT17dmVyc2lvbjoiMS4yLjAifSxyPWZ1bmN0aW9uIHQoKXtmb3IodmFyIHk9MCxQPW5ldyBBcnJheSgyNTYpLFI9MDsyNTYhPVI7KytSKVBbUl09eT0xJih5PTEmKHk9MSYoeT0xJih5PTEmKHk9MSYoeT0xJih5PTEmKHk9Uik/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMw''@;'; put 'put ''NjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MSk/LTMwNjY3NDkxMl55Pj4+MTp5Pj4+MTty''@;'; put 'put ''ZXR1cm4gdHlwZW9mIEludDMyQXJyYXk8InUiP25ldyBJbnQzMkFycmF5KFApOlB9KCksbj1mdW5jdGlvbiBhKHkpe3ZhciBQPTAsUj0wLFY9MCxYPXR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheSg0MDk2KTpuZXcgQXJyYXkoNDA5Nik7Zm9yKFY9MDsyNTYhPVY7KytWKVhb''@;'; put 'put ''Vl09eVtWXTtmb3IoVj0wOzI1NiE9VjsrK1YpZm9yKFI9eVtWXSxQPTI1NitWO1A8NDA5NjtQKz0yNTYpUj1YW1BdPVI+Pj44XnlbMjU1JlJdO3ZhciBiPVtdO2ZvcihWPTE7MTYhPVY7KytWKWJbVi0xXT10eXBlb2YgSW50MzJBcnJheTwidSI/WC5zdWJhcnJheSgyNTYqViwyNTYqVisyNTYp''@;'; put 'put ''Olguc2xpY2UoMjU2KlYsMjU2KlYrMjU2KTtyZXR1cm4gYn0ociksaT1uWzBdLHM9blsxXSxmPW5bMl0sYz1uWzNdLG89bls0XSxsPW5bNV0saD1uWzZdLHg9bls3XSxkPW5bOF0sdj1uWzldLHU9blsxMF0scD1uWzExXSxrPW5bMTJdLFQ9blsxM10sZz1uWzE0XTtyZXR1cm4gZS50YWJsZT1y''@;'; put 'put ''LGUuYnN0cj1mdW5jdGlvbiBOKHksUCl7Zm9yKHZhciBSPX5QLFY9MCxYPXkubGVuZ3RoO1Y8WDspUj1SPj4+OF5yWzI1NSYoUl55LmNoYXJDb2RlQXQoVisrKSldO3JldHVybn5SfSxlLmJ1Zj1mdW5jdGlvbiBNKHksUCl7Zm9yKHZhciBSPX5QLFY9eS5sZW5ndGgtMTUsWD0wO1g8VjspUj1n''@;'; put 'put ''W3lbWCsrXV4yNTUmUl1eVFt5W1grK11eUj4+OCYyNTVdXmtbeVtYKytdXlI+PjE2JjI1NV1ecFt5W1grK11eUj4+PjI0XV51W3lbWCsrXV1edlt5W1grK11dXmRbeVtYKytdXV54W3lbWCsrXV1eaFt5W1grK11dXmxbeVtYKytdXV5vW3lbWCsrXV1eY1t5W1grK11dXmZbeVtYKytdXV5zW3lb''@;'; put 'put ''WCsrXV1eaVt5W1grK11dXnJbeVtYKytdXTtmb3IoVis9MTU7WDxWOylSPVI+Pj44XnJbMjU1JihSXnlbWCsrXSldO3JldHVybn5SfSxlLnN0cj1mdW5jdGlvbiBJKHksUCl7Zm9yKHZhciBSPX5QLFY9MCxYPXkubGVuZ3RoLGI9MCxlZT0wO1Y8WDspKGI9eS5jaGFyQ29kZUF0KFYrKykpPDEy''@;'; put 'put ''OD9SPVI+Pj44XnJbMjU1JihSXmIpXTpiPDIwNDg/Uj0oUj1SPj4+OF5yWzI1NSYoUl4oMTkyfGI+PjYmMzEpKV0pPj4+OF5yWzI1NSYoUl4oMTI4fDYzJmIpKV06Yj49NTUyOTYmJmI8NTczNDQ/KGI9NjQrKDEwMjMmYiksZWU9MTAyMyZ5LmNoYXJDb2RlQXQoVisrKSxSPShSPShSPShSPVI+''@;'; put 'put ''Pj44XnJbMjU1JihSXigyNDB8Yj4+OCY3KSldKT4+PjheclsyNTUmKFJeKDEyOHxiPj4yJjYzKSldKT4+PjheclsyNTUmKFJeKDEyOHxlZT4+NiYxNXwoMyZiKTw8NCkpXSk+Pj44XnJbMjU1JihSXigxMjh8NjMmZWUpKV0pOlI9KFI9KFI9Uj4+PjheclsyNTUmKFJeKDIyNHxiPj4xMiYxNSkp''@;'; put 'put ''XSk+Pj44XnJbMjU1JihSXigxMjh8Yj4+NiY2MykpXSk+Pj44XnJbMjU1JihSXigxMjh8NjMmYikpXTtyZXR1cm5+Un0sZX0oKSx2ZT1mdW5jdGlvbigpe3ZhciBjLHQ9e307ZnVuY3Rpb24gYShtKXtpZigiLyI9PW0uY2hhckF0KG0ubGVuZ3RoLTEpKXJldHVybi0xPT09bS5zbGljZSgwLC0x''@;'; put 'put ''KS5pbmRleE9mKCIvIik/bTphKG0uc2xpY2UoMCwtMSkpO3ZhciBFPW0ubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PUU/bTptLnNsaWNlKDAsRSsxKX1mdW5jdGlvbiBuKG0pe2lmKCIvIj09bS5jaGFyQXQobS5sZW5ndGgtMSkpcmV0dXJuIG4obS5zbGljZSgwLC0xKSk7dmFyIEU9bS5s''@;'; put 'put ''YXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09RT9tOm0uc2xpY2UoRSsxKX1mdW5jdGlvbiBpKG0sRSl7InN0cmluZyI9PXR5cGVvZiBFJiYoRT1uZXcgRGF0ZShFKSk7dmFyIF89RS5nZXRIb3VycygpO189KF89Xzw8NnxFLmdldE1pbnV0ZXMoKSk8PDV8RS5nZXRTZWNvbmRzKCk+Pj4xLG0u''@;'; put 'put ''d3JpdGVfc2hpZnQoMixfKTt2YXIgdz1FLmdldEZ1bGxZZWFyKCktMTk4MDt3PSh3PXc8PDR8RS5nZXRNb250aCgpKzEpPDw1fEUuZ2V0RGF0ZSgpLG0ud3JpdGVfc2hpZnQoMix3KX1mdW5jdGlvbiBmKG0pe2hyKG0sMCk7Zm9yKHZhciBFPXt9LF89MDttLmw8PW0ubGVuZ3RoLTQ7KXt2YXIg''@;'; put 'put ''dz1tLnJlYWRfc2hpZnQoMiksUz1tLnJlYWRfc2hpZnQoMiksRj1tLmwrUyxMPXt9OzIxNTg5PT09dyYmKDEmKF89bS5yZWFkX3NoaWZ0KDEpKSYmKEwubXRpbWU9bS5yZWFkX3NoaWZ0KDQpKSxTPjUmJigyJl8mJihMLmF0aW1lPW0ucmVhZF9zaGlmdCg0KSksNCZfJiYoTC5jdGltZT1tLnJl''@;'; put 'put ''YWRfc2hpZnQoNCkpKSxMLm10aW1lJiYoTC5tdD1uZXcgRGF0ZSgxZTMqTC5tdGltZSkpKSxtLmw9RixFW3ddPUx9cmV0dXJuIEV9ZnVuY3Rpb24gbygpe3JldHVybiBjfHwoYz17fSl9ZnVuY3Rpb24gbChtLEUpe2lmKDgwPT1tWzBdJiY3NT09bVsxXSlyZXR1cm4gQ2MobSxFKTtpZigxMDk9''@;'; put 'put ''PSgzMnxtWzBdKSYmMTA1PT0oMzJ8bVsxXSkpcmV0dXJuIGZ1bmN0aW9uIE5nKG0sRSl7aWYoIm1pbWUtdmVyc2lvbjoiIT1jZShtLnNsaWNlKDAsMTMpKS50b0xvd2VyQ2FzZSgpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTUFEIGhlYWRlciIpO3ZhciBfPUUmJkUucm9vdHx8IiIs''@;'; put 'put ''dz0oU2UmJkJ1ZmZlci5pc0J1ZmZlcihtKT9tLnRvU3RyaW5nKCJiaW5hcnkiKTpjZShtKSkuc3BsaXQoIlxyXG4iKSxTPTAsRj0iIjtmb3IoUz0wO1M8dy5sZW5ndGg7KytTKWlmKC9eQ29udGVudC1Mb2NhdGlvbjovaS50ZXN0KEY9d1tTXSkmJihGPUYuc2xpY2UoRi5pbmRleE9mKCJmaWxl''@;'; put 'put ''IikpLF98fChfPUYuc2xpY2UoMCxGLmxhc3RJbmRleE9mKCIvIikrMSkpLEYuc2xpY2UoMCxfLmxlbmd0aCkhPV8pKWZvcig7Xy5sZW5ndGg+MCYmKF89KF89Xy5zbGljZSgwLF8ubGVuZ3RoLTEpKS5zbGljZSgwLF8ubGFzdEluZGV4T2YoIi8iKSsxKSxGLnNsaWNlKDAsXy5sZW5ndGgpIT1f''@;'; put 'put ''KTspO3ZhciBMPSh3WzFdfHwiIikubWF0Y2goL2JvdW5kYXJ5PSIoLio/KSIvKTtpZighTCl0aHJvdyBuZXcgRXJyb3IoIk1BRCBjYW5ub3QgZmluZCBib3VuZGFyeSIpO3ZhciB6PSItLSIrKExbMV18fCIiKSxIPXtGaWxlSW5kZXg6W10sRnVsbFBhdGhzOltdfTt5KEgpO3ZhciBxLG5lPTA7''@;'; put 'put ''Zm9yKFM9MDtTPHcubGVuZ3RoOysrUyl7dmFyIGhlPXdbU107aGUhPT16JiZoZSE9PXorIi0tInx8KG5lKysmJlJnKEgsdy5zbGljZShxLFMpLF8pLHE9Uyl9cmV0dXJuIEh9KG0sRSk7aWYobS5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK20ubGVuZ3RoKyIg''@;'; put 'put ''PCA1MTIiKTt2YXIgXyxTLEYsTCx6LFcsdz01MTIsQj1bXSxIPW0uc2xpY2UoMCw1MTIpO2hyKEgsMCk7dmFyIHE9ZnVuY3Rpb24gaChtKXtpZig4MD09bVttLmxdJiY3NT09bVttLmwrMV0pcmV0dXJuWzAsMF07bS5jaGsobGUsIkhlYWRlciBTaWduYXR1cmU6ICIpLG0ubCs9MTY7dmFyIEU9''@;'; put 'put ''bS5yZWFkX3NoaWZ0KDIsInUiKTtyZXR1cm5bbS5yZWFkX3NoaWZ0KDIsInUiKSxFXX0oSCk7c3dpdGNoKF89cVswXSl7Y2FzZSAzOnc9NTEyO2JyZWFrO2Nhc2UgNDp3PTQwOTY7YnJlYWs7Y2FzZSAwOmlmKDA9PXFbMV0pcmV0dXJuIENjKG0sRSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''Ik1ham9yIFZlcnNpb246IEV4cGVjdGVkIDMgb3IgNCBzYXcgIitfKX01MTIhPT13JiZocihIPW0uc2xpY2UoMCx3KSwyOCk7dmFyIG5lPW0uc2xpY2UoMCx3KTshZnVuY3Rpb24geChtLEUpe3ZhciBfO3N3aXRjaChtLmwrPTIsXz1tLnJlYWRfc2hpZnQoMikpe2Nhc2UgOTppZigzIT1FKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IHNhdyAiK18pO2JyZWFrO2Nhc2UgMTI6aWYoNCE9RSl0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgMTIgc2F3ICIrXyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlm''@;'; put 'put ''dDogRXhwZWN0ZWQgOSBvciAxMiBzYXcgIitfKX1tLmNoaygiMDYwMCIsIk1pbmkgU2VjdG9yIFNoaWZ0OiAiKSxtLmNoaygiMDAwMDAwMDAwMDAwIiwiUmVzZXJ2ZWQ6ICIpfShILF8pO3ZhciBoZT1ILnJlYWRfc2hpZnQoNCwiaSIpO2lmKDM9PT1fJiYwIT09aGUpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCIjIERpcmVjdG9yeSBTZWN0b3JzOiBFeHBlY3RlZCAwIHNhdyAiK2hlKTtILmwrPTQsTD1ILnJlYWRfc2hpZnQoNCwiaSIpLEgubCs9NCxILmNoaygiMDAxMDAwMDAiLCJNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZTogIiksej1ILnJlYWRfc2hpZnQoNCwiaSIpLFM9SC5yZWFkX3NoaWZ0KDQs''@;'; put 'put ''ImkiKSxXPUgucmVhZF9zaGlmdCg0LCJpIiksRj1ILnJlYWRfc2hpZnQoNCwiaSIpO2Zvcih2YXIgaWU9LTEsZmU9MDtmZTwxMDkmJiEoKGllPUgucmVhZF9zaGlmdCg0LCJpIikpPDApOysrZmUpQltmZV09aWU7dmFyIF9lPWZ1bmN0aW9uIGQobSxFKXtmb3IodmFyIF89TWF0aC5jZWlsKG0u''@;'; put 'put ''bGVuZ3RoL0UpLTEsdz1bXSxTPTE7UzxfOysrUyl3W1MtMV09bS5zbGljZShTKkUsKFMrMSkqRSk7cmV0dXJuIHdbXy0xXT1tLnNsaWNlKF8qRSksd30obSx3KTtwKFcsRixfZSx3LEIpO3ZhciBWZT1mdW5jdGlvbiBUKG0sRSxfLHcpe3ZhciBTPW0ubGVuZ3RoLEY9W10sTD1bXSx6PVtdLFc9''@;'; put 'put ''W10sQj13LTEsSD0wLHE9MCxuZT0wLGhlPTA7Zm9yKEg9MDtIPFM7KytIKWlmKHo9W10sKG5lPUgrRSk+PVMmJihuZS09UyksIUxbbmVdKXtXPVtdO3ZhciBpZT1bXTtmb3IocT1uZTtxPj0wOyl7aWVbcV09ITAsTFtxXT0hMCx6W3oubGVuZ3RoXT1xLFcucHVzaChtW3FdKTt2YXIgZmU9X1tN''@;'; put 'put ''YXRoLmZsb29yKDQqcS93KV07aWYodzw0KyhoZT00KnEmQikpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitxKyIgNCAiK3cpO2lmKCFtW2ZlXXx8aWVbcT1MdChtW2ZlXSxoZSldKWJyZWFrfUZbbmVdPXtub2Rlczp6LGRhdGE6emkoW1ddKX19cmV0dXJuIEZ9KF9l''@;'; put 'put ''LEwsQix3KTtWZVtMXS5uYW1lPSIhRGlyZWN0b3J5IixTPjAmJnohPT1lZSYmKFZlW3pdLm5hbWU9IiFNaW5pRkFUIiksVmVbQlswXV0ubmFtZT0iIUZBVCIsVmUuZmF0X2FkZHJzPUIsVmUuc3N6PXc7dmFyIG5yPVtdLEJyPVtdLFphPVtdOyhmdW5jdGlvbiBnKG0sRSxfLHcsUyxGLEwseil7''@;'; put 'put ''Zm9yKHZhciBoZSxXPTAsQj13Lmxlbmd0aD8yOjAsSD1FW21dLmRhdGEscT0wLG5lPTA7cTxILmxlbmd0aDtxKz0xMjgpe3ZhciBpZT1ILnNsaWNlKHEscSsxMjgpO2hyKGllLDY0KSxuZT1pZS5yZWFkX3NoaWZ0KDIpLGhlPXUwKGllLDAsbmUtQiksdy5wdXNoKGhlKTt2YXIgZmU9e25hbWU6''@;'; put 'put ''aGUsdHlwZTppZS5yZWFkX3NoaWZ0KDEpLGNvbG9yOmllLnJlYWRfc2hpZnQoMSksTDppZS5yZWFkX3NoaWZ0KDQsImkiKSxSOmllLnJlYWRfc2hpZnQoNCwiaSIpLEM6aWUucmVhZF9zaGlmdCg0LCJpIiksY2xzaWQ6aWUucmVhZF9zaGlmdCgxNiksc3RhdGU6aWUucmVhZF9zaGlmdCg0LCJp''@;'; put 'put ''Iiksc3RhcnQ6MCxzaXplOjB9OzAhPT1pZS5yZWFkX3NoaWZ0KDIpK2llLnJlYWRfc2hpZnQoMikraWUucmVhZF9zaGlmdCgyKStpZS5yZWFkX3NoaWZ0KDIpJiYoZmUuY3Q9TihpZSxpZS5sLTgpKSwwIT09aWUucmVhZF9zaGlmdCgyKStpZS5yZWFkX3NoaWZ0KDIpK2llLnJlYWRfc2hpZnQo''@;'; put 'put ''MikraWUucmVhZF9zaGlmdCgyKSYmKGZlLm10PU4oaWUsaWUubC04KSksZmUuc3RhcnQ9aWUucmVhZF9zaGlmdCg0LCJpIiksZmUuc2l6ZT1pZS5yZWFkX3NoaWZ0KDQsImkiKSxmZS5zaXplPDAmJmZlLnN0YXJ0PDAmJihmZS5zaXplPWZlLnR5cGU9MCxmZS5zdGFydD1lZSxmZS5uYW1lPSIi''@;'; put 'put ''KSw1PT09ZmUudHlwZT8oVz1mZS5zdGFydCxTPjAmJlchPT1lZSYmKEVbV10ubmFtZT0iIVN0cmVhbURhdGEiKSk6ZmUuc2l6ZT49NDA5Nj8oZmUuc3RvcmFnZT0iZmF0Iix2b2lkIDA9PT1FW2ZlLnN0YXJ0XSYmKEVbZmUuc3RhcnRdPWsoXyxmZS5zdGFydCxFLmZhdF9hZGRycyxFLnNzeikp''@;'; put 'put ''LEVbZmUuc3RhcnRdLm5hbWU9ZmUubmFtZSxmZS5jb250ZW50PUVbZmUuc3RhcnRdLmRhdGEuc2xpY2UoMCxmZS5zaXplKSk6KGZlLnN0b3JhZ2U9Im1pbmlmYXQiLGZlLnNpemU8MD9mZS5zaXplPTA6VyE9PWVlJiZmZS5zdGFydCE9PWVlJiZFW1ddJiYoZmUuY29udGVudD11KGZlLEVbV10u''@;'; put 'put ''ZGF0YSwoRVt6XXx8e30pLmRhdGEpKSksZmUuY29udGVudCYmaHIoZmUuY29udGVudCwwKSxGW2hlXT1mZSxMLnB1c2goZmUpfX0pKEwsVmUsX2UsbnIsUyx7fSxCcix6KSxmdW5jdGlvbiB2KG0sRSxfKXtmb3IodmFyIHc9MCxTPTAsRj0wLEw9MCx6PTAsVz1fLmxlbmd0aCxCPVtdLEg9W107''@;'; put 'put ''dzxXOysrdylCW3ddPUhbd109dyxFW3ddPV9bd107Zm9yKDt6PEgubGVuZ3RoOysreilTPW1bdz1IW3pdXS5MLEY9bVt3XS5SLEw9bVt3XS5DLEJbd109PT13JiYoLTEhPT1TJiZCW1NdIT09UyYmKEJbd109QltTXSksLTEhPT1GJiZCW0ZdIT09RiYmKEJbd109QltGXSkpLC0xIT09TCYmKEJb''@;'; put 'put ''TF09dyksLTEhPT1TJiZ3IT1CW3ddJiYoQltTXT1CW3ddLEgubGFzdEluZGV4T2YoUyk8eiYmSC5wdXNoKFMpKSwtMSE9PUYmJnchPUJbd10mJihCW0ZdPUJbd10sSC5sYXN0SW5kZXhPZihGKTx6JiZILnB1c2goRikpO2Zvcih3PTE7dzxXOysrdylCW3ddPT09dyYmKC0xIT09RiYmQltGXSE9''@;'; put 'put ''PUY/Qlt3XT1CW0ZdOi0xIT09UyYmQltTXSE9PVMmJihCW3ddPUJbU10pKTtmb3Iodz0xO3c8VzsrK3cpaWYoMCE9PW1bd10udHlwZSl7aWYoKHo9dykhPUJbel0pZG97RVt3XT1FW3o9Qlt6XV0rIi8iK0Vbd119d2hpbGUoMCE9PXomJi0xIT09Qlt6XSYmeiE9Qlt6XSk7Qlt3XT0tMX1mb3Io''@;'; put 'put ''RVswXSs9Ii8iLHc9MTt3PFc7Kyt3KTIhPT1tW3ddLnR5cGUmJihFW3ddKz0iLyIpfShCcixaYSxuciksbnIuc2hpZnQoKTt2YXIgUWE9e0ZpbGVJbmRleDpCcixGdWxsUGF0aHM6WmF9O3JldHVybiBFJiZFLnJhdyYmKFFhLnJhdz17aGVhZGVyOm5lLHNlY3RvcnM6X2V9KSxRYX1mdW5jdGlv''@;'; put 'put ''biB1KG0sRSxfKXtmb3IodmFyIFM9bS5zaXplLEY9W10sTD1tLnN0YXJ0O18mJlM+MCYmTD49MDspRi5wdXNoKEUuc2xpY2UoTCpiLEwqYitiKSksUy09YixMPUx0KF8sNCpMKTtyZXR1cm4gMD09PUYubGVuZ3RoP0coMCk6ZnIoRikuc2xpY2UoMCxtLnNpemUpfWZ1bmN0aW9uIHAobSxFLF8s''@;'; put 'put ''dyxTKXt2YXIgRj1lZTtpZihtPT09ZWUpe2lmKDAhPT1FKXRocm93IG5ldyBFcnJvcigiRElGQVQgY2hhaW4gc2hvcnRlciB0aGFuIGV4cGVjdGVkIil9ZWxzZSBpZigtMSE9PW0pe3ZhciBMPV9bbV0sej0odz4+PjIpLTE7aWYoIUwpcmV0dXJuO2Zvcih2YXIgVz0wO1c8eiYmKEY9THQoTCw0''@;'; put 'put ''KlcpKSE9PWVlOysrVylTLnB1c2goRik7cChMdChMLHctNCksRS0xLF8sdyxTKX19ZnVuY3Rpb24gayhtLEUsXyx3LFMpe3ZhciBGPVtdLEw9W107U3x8KFM9W10pO3ZhciB6PXctMSxXPTAsQj0wO2ZvcihXPUU7Vz49MDspe1NbV109ITAsRltGLmxlbmd0aF09VyxMLnB1c2gobVtXXSk7dmFy''@;'; put 'put ''IEg9X1tNYXRoLmZsb29yKDQqVy93KV07aWYodzw0KyhCPTQqVyZ6KSl0aHJvdyBuZXcgRXJyb3IoIkZBVCBib3VuZGFyeSBjcm9zc2VkOiAiK1crIiA0ICIrdyk7aWYoIW1bSF0pYnJlYWs7Vz1MdChtW0hdLEIpfXJldHVybntub2RlczpGLGRhdGE6emkoW0xdKX19ZnVuY3Rpb24gTihtLEUp''@;'; put 'put ''e3JldHVybiBuZXcgRGF0ZSgxZTMqKGNyKG0sRSs0KS8xZTcqTWF0aC5wb3coMiwzMikrY3IobSxFKS8xZTctMTE2NDQ0NzM2MDApKX1mdW5jdGlvbiB5KG0sRSl7dmFyIF89RXx8e30sdz1fLnJvb3R8fCJSb290IEVudHJ5IjtpZihtLkZ1bGxQYXRoc3x8KG0uRnVsbFBhdGhzPVtdKSxtLkZp''@;'; put 'put ''bGVJbmRleHx8KG0uRmlsZUluZGV4PVtdKSxtLkZ1bGxQYXRocy5sZW5ndGghPT1tLkZpbGVJbmRleC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpOzA9PT1tLkZ1bGxQYXRocy5sZW5ndGgmJihtLkZ1bGxQYXRoc1swXT13KyIvIixtLkZpbGVJ''@;'; put 'put ''bmRleFswXT17bmFtZTp3LHR5cGU6NX0pLF8uQ0xTSUQmJihtLkZpbGVJbmRleFswXS5jbHNpZD1fLkNMU0lEKSxmdW5jdGlvbiBQKG0pe3ZhciBFPSJceDAxU2gzM3RKNSI7aWYoIXZlLmZpbmQobSwiLyIrRSkpe3ZhciBfPUcoNCk7X1swXT01NSxfWzFdPV9bM109NTAsX1syXT01NCxtLkZp''@;'; put 'put ''bGVJbmRleC5wdXNoKHtuYW1lOkUsdHlwZToyLGNvbnRlbnQ6XyxzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSxtLkZ1bGxQYXRocy5wdXNoKG0uRnVsbFBhdGhzWzBdK0UpLFIobSl9fShtKX1mdW5jdGlvbiBSKG0sRSl7eShtKTtmb3IodmFyIF89ITEsdz0hMSxTPW0uRnVsbFBhdGhzLmxlbmd0''@;'; put 'put ''aC0xO1M+PTA7LS1TKXt2YXIgRj1tLkZpbGVJbmRleFtTXTtzd2l0Y2goRi50eXBlKXtjYXNlIDA6dz9fPSEwOihtLkZpbGVJbmRleC5wb3AoKSxtLkZ1bGxQYXRocy5wb3AoKSk7YnJlYWs7Y2FzZSAxOmNhc2UgMjpjYXNlIDU6dz0hMCxpc05hTihGLlIqRi5MKkYuQykmJihfPSEwKSxGLlI+''@;'; put 'put ''LTEmJkYuTD4tMSYmRi5SPT1GLkwmJihfPSEwKTticmVhaztkZWZhdWx0Ol89ITB9fWlmKF98fEUpe3ZhciBMPW5ldyBEYXRlKDE5ODcsMSwxOSksej0wLFc9T2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlKG51bGwpOnt9LEI9W107Zm9yKFM9MDtTPG0uRnVsbFBhdGhzLmxlbmd0aDsrK1Mp''@;'; put 'put ''V1ttLkZ1bGxQYXRoc1tTXV09ITAsMCE9PW0uRmlsZUluZGV4W1NdLnR5cGUmJkIucHVzaChbbS5GdWxsUGF0aHNbU10sbS5GaWxlSW5kZXhbU11dKTtmb3IoUz0wO1M8Qi5sZW5ndGg7KytTKXt2YXIgSD1hKEJbU11bMF0pOyh3PVdbSF0pfHwoQi5wdXNoKFtILHtuYW1lOm4oSCkucmVwbGFj''@;'; put 'put ''ZSgiLyIsIiIpLHR5cGU6MSxjbHNpZDpkZSxjdDpMLG10OkwsY29udGVudDpudWxsfV0pLFdbSF09ITApfWZvcihCLnNvcnQoZnVuY3Rpb24oaGUsaWUpe3JldHVybiBmdW5jdGlvbiByKG0sRSl7Zm9yKHZhciBfPW0uc3BsaXQoIi8iKSx3PUUuc3BsaXQoIi8iKSxTPTAsRj0wLEw9TWF0aC5t''@;'; put 'put ''aW4oXy5sZW5ndGgsdy5sZW5ndGgpO1M8TDsrK1Mpe2lmKEY9X1tTXS5sZW5ndGgtd1tTXS5sZW5ndGgpcmV0dXJuIEY7aWYoX1tTXSE9d1tTXSlyZXR1cm4gX1tTXTx3W1NdPy0xOjF9cmV0dXJuIF8ubGVuZ3RoLXcubGVuZ3RofShoZVswXSxpZVswXSl9KSxtLkZ1bGxQYXRocz1bXSxtLkZp''@;'; put 'put ''bGVJbmRleD1bXSxTPTA7UzxCLmxlbmd0aDsrK1MpbS5GdWxsUGF0aHNbU109QltTXVswXSxtLkZpbGVJbmRleFtTXT1CW1NdWzFdO2ZvcihTPTA7UzxCLmxlbmd0aDsrK1Mpe3ZhciBxPW0uRmlsZUluZGV4W1NdLG5lPW0uRnVsbFBhdGhzW1NdO2lmKHEubmFtZT1uKG5lKS5yZXBsYWNlKCIv''@;'; put 'put ''IiwiIikscS5MPXEuUj1xLkM9LShxLmNvbG9yPTEpLHEuc2l6ZT1xLmNvbnRlbnQ/cS5jb250ZW50Lmxlbmd0aDowLHEuc3RhcnQ9MCxxLmNsc2lkPXEuY2xzaWR8fGRlLDA9PT1TKXEuQz1CLmxlbmd0aD4xPzE6LTEscS5zaXplPTAscS50eXBlPTU7ZWxzZSBpZigiLyI9PW5lLnNsaWNlKC0x''@;'; put 'put ''KSl7Zm9yKHo9UysxO3o8Qi5sZW5ndGgmJmEobS5GdWxsUGF0aHNbel0pIT1uZTsrK3opO2ZvcihxLkM9ej49Qi5sZW5ndGg/LTE6eix6PVMrMTt6PEIubGVuZ3RoJiZhKG0uRnVsbFBhdGhzW3pdKSE9YShuZSk7Kyt6KTtxLlI9ej49Qi5sZW5ndGg/LTE6eixxLnR5cGU9MX1lbHNlIGEobS5G''@;'; put 'put ''dWxsUGF0aHNbUysxXXx8IiIpPT1hKG5lKSYmKHEuUj1TKzEpLHEudHlwZT0yfX19ZnVuY3Rpb24gVihtLEUpe3ZhciBfPUV8fHt9O2lmKCJtYWQiPT1fLmZpbGVUeXBlKXJldHVybiBmdW5jdGlvbiBiZyhtLEUpe2Zvcih2YXIgXz1FfHx7fSx3PV8uYm91bmRhcnl8fCJTaGVldEpTIixTPVsi''@;'; put 'put ''TUlNRS1WZXJzaW9uOiAxLjAiLCdDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZWxhdGVkOyBib3VuZGFyeT0iJysodz0iLS0tLS0tPSIrdykuc2xpY2UoMikrJyInLCIiLCIiLCIiXSxGPW0uRnVsbFBhdGhzWzBdLEw9Rix6PW0uRmlsZUluZGV4WzBdLFc9MTtXPG0uRnVsbFBhdGhzLmxlbmd0''@;'; put 'put ''aDsrK1cpaWYoTD1tLkZ1bGxQYXRoc1tXXS5zbGljZShGLmxlbmd0aCksKHo9bS5GaWxlSW5kZXhbV10pLnNpemUmJnouY29udGVudCYmIlx4MDFTaDMzdEo1IiE9TCl7TD1MLnJlcGxhY2UoL1tceDAwLVx4MDhceDBCXHgwQ1x4MEUtXHgxRlx4N0UtXHhGRl0vZyxmdW5jdGlvbihfZSl7cmV0''@;'; put 'put ''dXJuIl94IitfZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSsiXyJ9KS5yZXBsYWNlKC9bXHUwMDgwLVx1RkZGRl0vZyxmdW5jdGlvbihfZSl7cmV0dXJuIl91IitfZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSsiXyJ9KTtmb3IodmFyIEI9ei5jb250ZW50LEg9U2UmJkJ1ZmZlci5p''@;'; put 'put ''c0J1ZmZlcihCKT9CLnRvU3RyaW5nKCJiaW5hcnkiKTpjZShCKSxxPTAsbmU9TWF0aC5taW4oMTAyNCxILmxlbmd0aCksaGU9MCxpZT0wO2llPD1uZTsrK2llKShoZT1ILmNoYXJDb2RlQXQoaWUpKT49MzImJmhlPDEyOCYmKytxO3ZhciBmZT1xPj00Km5lLzU7Uy5wdXNoKHcpLFMucHVzaCgi''@;'; put 'put ''Q29udGVudC1Mb2NhdGlvbjogIisoXy5yb290fHwiZmlsZTovLy9DOi9TaGVldEpTLyIpK0wpLFMucHVzaCgiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIisoZmU/InF1b3RlZC1wcmludGFibGUiOiJiYXNlNjQiKSksUy5wdXNoKCJDb250ZW50LVR5cGU6ICIrQ2coeixMKSksUy5wdXNo''@;'; put 'put ''KCIiKSxTLnB1c2goZmU/T2coSCk6RGcoSCkpfXJldHVybiBTLnB1c2godysiLS1cclxuIiksUy5qb2luKCJcclxuIil9KG0sXyk7aWYoInppcCI9PT0oUihtKSxfLmZpbGVUeXBlKSlyZXR1cm4gZnVuY3Rpb24gQWcobSxFKXt2YXIgXz1FfHx7fSx3PVtdLFM9W10sRj1HKDEpLEw9Xy5jb21w''@;'; put 'put ''cmVzc2lvbj84OjAsej0wLEI9MCxIPTAscT0wLG5lPTAsaGU9bS5GdWxsUGF0aHNbMF0saWU9aGUsZmU9bS5GaWxlSW5kZXhbMF0sX2U9W10sVmU9MDtmb3IoQj0xO0I8bS5GdWxsUGF0aHMubGVuZ3RoOysrQilpZihpZT1tLkZ1bGxQYXRoc1tCXS5zbGljZShoZS5sZW5ndGgpLChmZT1tLkZp''@;'; put 'put ''bGVJbmRleFtCXSkuc2l6ZSYmZmUuY29udGVudCYmIlx4MDFTaDMzdEo1IiE9aWUpe3ZhciBDcj1xLG5yPUcoaWUubGVuZ3RoKTtmb3IoSD0wO0g8aWUubGVuZ3RoOysrSCluci53cml0ZV9zaGlmdCgxLDEyNyZpZS5jaGFyQ29kZUF0KEgpKTtucj1uci5zbGljZSgwLG5yLmwpLF9lW25lXT1z''@;'; put 'put ''by5idWYoZmUuY29udGVudCwwKTt2YXIgQnI9ZmUuY29udGVudDs4PT1MJiYoQnI9TyhCcikpLChGPUcoMzApKS53cml0ZV9zaGlmdCg0LDY3MzI0NzUyKSxGLndyaXRlX3NoaWZ0KDIsMjApLEYud3JpdGVfc2hpZnQoMix6KSxGLndyaXRlX3NoaWZ0KDIsTCksZmUubXQ/aShGLGZlLm10KTpG''@;'; put 'put ''LndyaXRlX3NoaWZ0KDQsMCksRi53cml0ZV9zaGlmdCgtNCw4Jno/MDpfZVtuZV0pLEYud3JpdGVfc2hpZnQoNCw4Jno/MDpCci5sZW5ndGgpLEYud3JpdGVfc2hpZnQoNCw4Jno/MDpmZS5jb250ZW50Lmxlbmd0aCksRi53cml0ZV9zaGlmdCgyLG5yLmxlbmd0aCksRi53cml0ZV9zaGlmdCgy''@;'; put 'put ''LDApLHErPUYubGVuZ3RoLHcucHVzaChGKSxxKz1uci5sZW5ndGgsdy5wdXNoKG5yKSxxKz1Cci5sZW5ndGgsdy5wdXNoKEJyKSw4JnomJigoRj1HKDEyKSkud3JpdGVfc2hpZnQoLTQsX2VbbmVdKSxGLndyaXRlX3NoaWZ0KDQsQnIubGVuZ3RoKSxGLndyaXRlX3NoaWZ0KDQsZmUuY29udGVu''@;'; put 'put ''dC5sZW5ndGgpLHErPUYubCx3LnB1c2goRikpLChGPUcoNDYpKS53cml0ZV9zaGlmdCg0LDMzNjM5MjQ4KSxGLndyaXRlX3NoaWZ0KDIsMCksRi53cml0ZV9zaGlmdCgyLDIwKSxGLndyaXRlX3NoaWZ0KDIseiksRi53cml0ZV9zaGlmdCgyLEwpLEYud3JpdGVfc2hpZnQoNCwwKSxGLndyaXRl''@;'; put 'put ''X3NoaWZ0KC00LF9lW25lXSksRi53cml0ZV9zaGlmdCg0LEJyLmxlbmd0aCksRi53cml0ZV9zaGlmdCg0LGZlLmNvbnRlbnQubGVuZ3RoKSxGLndyaXRlX3NoaWZ0KDIsbnIubGVuZ3RoKSxGLndyaXRlX3NoaWZ0KDIsMCksRi53cml0ZV9zaGlmdCgyLDApLEYud3JpdGVfc2hpZnQoMiwwKSxG''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsMCksRi53cml0ZV9zaGlmdCg0LDApLEYud3JpdGVfc2hpZnQoNCxDciksVmUrPUYubCxTLnB1c2goRiksVmUrPW5yLmxlbmd0aCxTLnB1c2gobnIpLCsrbmV9cmV0dXJuKEY9RygyMikpLndyaXRlX3NoaWZ0KDQsMTAxMDEwMjU2KSxGLndyaXRlX3NoaWZ0KDIsMCks''@;'; put 'put ''Ri53cml0ZV9zaGlmdCgyLDApLEYud3JpdGVfc2hpZnQoMixuZSksRi53cml0ZV9zaGlmdCgyLG5lKSxGLndyaXRlX3NoaWZ0KDQsVmUpLEYud3JpdGVfc2hpZnQoNCxxKSxGLndyaXRlX3NoaWZ0KDIsMCksZnIoW2ZyKHcpLGZyKFMpLEZdKX0obSxfKTt2YXIgdz1mdW5jdGlvbihoZSl7Zm9y''@;'; put 'put ''KHZhciBpZT0wLGZlPTAsX2U9MDtfZTxoZS5GaWxlSW5kZXgubGVuZ3RoOysrX2Upe3ZhciBWZT1oZS5GaWxlSW5kZXhbX2VdO2lmKFZlLmNvbnRlbnQpe3ZhciBDcj1WZS5jb250ZW50Lmxlbmd0aDtDcj4wJiYoQ3I8NDA5Nj9pZSs9Q3IrNjM+PjY6ZmUrPUNyKzUxMT4+OSl9fWZvcih2YXIg''@;'; put 'put ''bnI9aGUuRnVsbFBhdGhzLmxlbmd0aCszPj4yLFphPWllKzEyNz4+NyxRYT0oaWUrNz4+MykrZmUrbnIrWmEsWnQ9UWErMTI3Pj43LHRpPVp0PD0xMDk/MDpNYXRoLmNlaWwoKFp0LTEwOSkvMTI3KTtRYStadCt0aSsxMjc+Pjc+WnQ7KXRpPSsrWnQ8PTEwOT8wOk1hdGguY2VpbCgoWnQtMTA5''@;'; put 'put ''KS8xMjcpO3ZhciBtdD1bMSx0aSxadCxaYSxucixmZSxpZSwwXTtyZXR1cm4gaGUuRmlsZUluZGV4WzBdLnNpemU9aWU8PDYsbXRbN109KGhlLkZpbGVJbmRleFswXS5zdGFydD1tdFswXSttdFsxXSttdFsyXSttdFszXSttdFs0XSttdFs1XSkrKG10WzZdKzc+PjMpLG10fShtKSxTPUcod1s3''@;'; put 'put ''XTw8OSksRj0wLEw9MDtmb3IoRj0wO0Y8ODsrK0YpUy53cml0ZV9zaGlmdCgxLHJlW0ZdKTtmb3IoRj0wO0Y8ODsrK0YpUy53cml0ZV9zaGlmdCgyLDApO2ZvcihTLndyaXRlX3NoaWZ0KDIsNjIpLFMud3JpdGVfc2hpZnQoMiwzKSxTLndyaXRlX3NoaWZ0KDIsNjU1MzQpLFMud3JpdGVfc2hp''@;'; put 'put ''ZnQoMiw5KSxTLndyaXRlX3NoaWZ0KDIsNiksRj0wO0Y8MzsrK0YpUy53cml0ZV9zaGlmdCgyLDApO2ZvcihTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LHdbMl0pLFMud3JpdGVfc2hpZnQoNCx3WzBdK3dbMV0rd1syXSt3WzNdLTEpLFMud3JpdGVfc2hpZnQoNCwwKSxTLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsNDA5NiksUy53cml0ZV9zaGlmdCg0LHdbM10/d1swXSt3WzFdK3dbMl0tMTplZSksUy53cml0ZV9zaGlmdCg0LHdbM10pLFMud3JpdGVfc2hpZnQoLTQsd1sxXT93WzBdLTE6ZWUpLFMud3JpdGVfc2hpZnQoNCx3WzFdKSxGPTA7RjwxMDk7KytGKVMud3JpdGVfc2hpZnQo''@;'; put 'put ''LTQsRjx3WzJdP3dbMV0rRjotMSk7aWYod1sxXSlmb3IoTD0wO0w8d1sxXTsrK0wpe2Zvcig7RjwyMzYrMTI3Kkw7KytGKVMud3JpdGVfc2hpZnQoLTQsRjx3WzJdP3dbMV0rRjotMSk7Uy53cml0ZV9zaGlmdCgtNCxMPT09d1sxXS0xP2VlOkwrMSl9dmFyIHo9ZnVuY3Rpb24oaGUpe2ZvcihM''@;'; put 'put ''Kz1oZTtGPEwtMTsrK0YpUy53cml0ZV9zaGlmdCgtNCxGKzEpO2hlJiYoKytGLFMud3JpdGVfc2hpZnQoLTQsZWUpKX07Zm9yKEw9Rj0wLEwrPXdbMV07RjxMOysrRilTLndyaXRlX3NoaWZ0KC00LHVlLkRJRlNFQ1QpO2ZvcihMKz13WzJdO0Y8TDsrK0YpUy53cml0ZV9zaGlmdCgtNCx1ZS5G''@;'; put 'put ''QVRTRUNUKTt6KHdbM10pLHood1s0XSk7Zm9yKHZhciBXPTAsQj0wLEg9bS5GaWxlSW5kZXhbMF07VzxtLkZpbGVJbmRleC5sZW5ndGg7KytXKShIPW0uRmlsZUluZGV4W1ddKS5jb250ZW50JiYhKChCPUguY29udGVudC5sZW5ndGgpPDQwOTYpJiYoSC5zdGFydD1MLHooQis1MTE+PjkpKTtm''@;'; put 'put ''b3Ioeih3WzZdKzc+PjMpOzUxMSZTLmw7KVMud3JpdGVfc2hpZnQoLTQsdWUuRU5ET0ZDSEFJTik7Zm9yKEw9Rj0wLFc9MDtXPG0uRmlsZUluZGV4Lmxlbmd0aDsrK1cpKEg9bS5GaWxlSW5kZXhbV10pLmNvbnRlbnQmJihCPUguY29udGVudC5sZW5ndGgpJiYhKEI+PTQwOTYpJiYoSC5zdGFy''@;'; put 'put ''dD1MLHooQis2Mz4+NikpO2Zvcig7NTExJlMubDspUy53cml0ZV9zaGlmdCgtNCx1ZS5FTkRPRkNIQUlOKTtmb3IoRj0wO0Y8d1s0XTw8MjsrK0Ype3ZhciBxPW0uRnVsbFBhdGhzW0ZdO2lmKHEmJjAhPT1xLmxlbmd0aCl7SD1tLkZpbGVJbmRleFtGXSwwPT09RiYmKEguc3RhcnQ9SC5zaXpl''@;'; put 'put ''P0guc3RhcnQtMTplZSk7dmFyIG5lPTA9PT1GJiZfLnJvb3R8fEgubmFtZTtpZihCPTIqKG5lLmxlbmd0aCsxKSxTLndyaXRlX3NoaWZ0KDY0LG5lLCJ1dGYxNmxlIiksUy53cml0ZV9zaGlmdCgyLEIpLFMud3JpdGVfc2hpZnQoMSxILnR5cGUpLFMud3JpdGVfc2hpZnQoMSxILmNvbG9yKSxT''@;'; put 'put ''LndyaXRlX3NoaWZ0KC00LEguTCksUy53cml0ZV9zaGlmdCgtNCxILlIpLFMud3JpdGVfc2hpZnQoLTQsSC5DKSxILmNsc2lkKVMud3JpdGVfc2hpZnQoMTYsSC5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoVz0wO1c8NDsrK1cpUy53cml0ZV9zaGlmdCg0LDApO1Mud3JpdGVfc2hpZnQoNCxILnN0''@;'; put 'put ''YXRlfHwwKSxTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LDApLFMud3JpdGVfc2hpZnQoNCwwKSxTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LEguc3RhcnQpLFMud3JpdGVfc2hpZnQoNCxILnNpemUpLFMud3JpdGVfc2hpZnQoNCwwKX1lbHNle2ZvcihXPTA7''@;'; put 'put ''VzwxNzsrK1cpUy53cml0ZV9zaGlmdCg0LDApO2ZvcihXPTA7VzwzOysrVylTLndyaXRlX3NoaWZ0KDQsLTEpO2ZvcihXPTA7VzwxMjsrK1cpUy53cml0ZV9zaGlmdCg0LDApfX1mb3IoRj0xO0Y8bS5GaWxlSW5kZXgubGVuZ3RoOysrRilpZigoSD1tLkZpbGVJbmRleFtGXSkuc2l6ZT49NDA5''@;'; put 'put ''NilpZihTLmw9SC5zdGFydCsxPDw5LFNlJiZCdWZmZXIuaXNCdWZmZXIoSC5jb250ZW50KSlILmNvbnRlbnQuY29weShTLFMubCwwLEguc2l6ZSksUy5sKz1ILnNpemUrNTExJi01MTI7ZWxzZXtmb3IoVz0wO1c8SC5zaXplOysrVylTLndyaXRlX3NoaWZ0KDEsSC5jb250ZW50W1ddKTtmb3Io''@;'; put 'put ''OzUxMSZXOysrVylTLndyaXRlX3NoaWZ0KDEsMCl9Zm9yKEY9MTtGPG0uRmlsZUluZGV4Lmxlbmd0aDsrK0YpaWYoKEg9bS5GaWxlSW5kZXhbRl0pLnNpemU+MCYmSC5zaXplPDQwOTYpaWYoU2UmJkJ1ZmZlci5pc0J1ZmZlcihILmNvbnRlbnQpKUguY29udGVudC5jb3B5KFMsUy5sLDAsSC5z''@;'; put 'put ''aXplKSxTLmwrPUguc2l6ZSs2MyYtNjQ7ZWxzZXtmb3IoVz0wO1c8SC5zaXplOysrVylTLndyaXRlX3NoaWZ0KDEsSC5jb250ZW50W1ddKTtmb3IoOzYzJlc7KytXKVMud3JpdGVfc2hpZnQoMSwwKX1pZihTZSlTLmw9Uy5sZW5ndGg7ZWxzZSBmb3IoO1MubDxTLmxlbmd0aDspUy53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDApO3JldHVybiBTfXQudmVyc2lvbj0iMS4yLjEiO3ZhciBLLGI9NjQsZWU9LTIsbGU9ImQwY2YxMWUwYTFiMTFhZTEiLHJlPVsyMDgsMjA3LDE3LDIyNCwxNjEsMTc3LDI2LDIyNV0sZGU9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIix1ZT17TUFYUkVHU0VDVDot''@;'; put 'put ''NixESUZTRUNUOi00LEZBVFNFQ1Q6LTMsRU5ET0ZDSEFJTjplZSxGUkVFU0VDVDotMSxIRUFERVJfU0lHTkFUVVJFOmxlLEhFQURFUl9NSU5PUl9WRVJTSU9OOiIzZTAwIixNQVhSRUdTSUQ6LTYsTk9TVFJFQU06LTEsSEVBREVSX0NMU0lEOmRlLEVudHJ5VHlwZXM6WyJ1bmtub3duIiwic3Rv''@;'; put 'put ''cmFnZSIsInN0cmVhbSIsImxvY2tieXRlcyIsInByb3BlcnR5Iiwicm9vdCJdfTtmdW5jdGlvbiBjZShtKXtmb3IodmFyIEU9bmV3IEFycmF5KG0ubGVuZ3RoKSxfPTA7XzxtLmxlbmd0aDsrK18pRVtfXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG1bX10pO3JldHVybiBFLmpvaW4oIiIpfWZ1bmN0''@;'; put 'put ''aW9uIE8obSl7cmV0dXJuIEs/Sy5kZWZsYXRlUmF3U3luYyhtKTp5ZShtKX1mb3IodmFyIG0sRSxEPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxqPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3''@;'; put 'put ''LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4XSxzZT1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3XSxRPXR5cGVvZiBVaW50OEFy''@;'; put 'put ''cmF5PCJ1IixZPVE/bmV3IFVpbnQ4QXJyYXkoMjU2KTpbXSxFZT0wO0VlPDI1NjsrK0VlKVlbRWVdPSh2b2lkIDAsMjU1JigoRT0xMzk1MzYmKChtPUVlKTw8MXxtPDwxMSl8NTU4MTQ0JihtPDw1fG08PDE1KSk+PjE2fEU+Pjh8RSkpO2Z1bmN0aW9uIEEobSxFKXt2YXIgXz1ZWzI1NSZtXTty''@;'; put 'put ''ZXR1cm4gRTw9OD9fPj4+OC1FOihfPV88PDh8WVttPj44JjI1NV0sRTw9MTY/Xz4+PjE2LUU6KF89Xzw8OHxZW20+PjE2JjI1NV0pPj4+MjQtRSl9ZnVuY3Rpb24gUGUobSxFKXt2YXIgXz03JkUsdz1FPj4+MztyZXR1cm4obVt3XXwoXzw9Nj8wOm1bdysxXTw8OCkpPj4+XyYzfWZ1bmN0aW9u''@;'; put 'put ''IEFlKG0sRSl7dmFyIF89NyZFLHc9RT4+PjM7cmV0dXJuKG1bd118KF88PTU/MDptW3crMV08PDgpKT4+Pl8mN31mdW5jdGlvbiBDZShtLEUpe3ZhciBfPTcmRSx3PUU+Pj4zO3JldHVybihtW3ddfChfPD0zPzA6bVt3KzFdPDw4KSk+Pj5fJjMxfWZ1bmN0aW9uIG9lKG0sRSl7dmFyIF89NyZF''@;'; put 'put ''LHc9RT4+PjM7cmV0dXJuKG1bd118KF88PTE/MDptW3crMV08PDgpKT4+Pl8mMTI3fWZ1bmN0aW9uIHFlKG0sRSxfKXt2YXIgdz03JkUsUz1FPj4+MyxMPW1bU10+Pj53O3JldHVybiBfPDgtd3x8KEx8PW1bUysxXTw8OC13LF88MTYtdyl8fChMfD1tW1MrMl08PDE2LXcsXzwyNC13KXx8KEx8''@;'; put 'put ''PW1bUyszXTw8MjQtdyksTCYoMTw8XyktMX1mdW5jdGlvbiBqcihtLEUsXyl7dmFyIHc9NyZFLFM9RT4+PjM7cmV0dXJuIHc8PTU/bVtTXXw9KDcmXyk8PHc6KG1bU118PV88PHcmMjU1LG1bUysxXT0oNyZfKT4+OC13KSxFKzN9ZnVuY3Rpb24gZnQobSxFLF8pe3JldHVybiBtW0U+Pj4zXXw9''@;'; put 'put ''Xz0oMSZfKTw8KDcmRSksRSsxfWZ1bmN0aW9uIHZ0KG0sRSxfKXt2YXIgUz1FPj4+MztyZXR1cm4gbVtTXXw9MjU1JihfPDw9NyZFKSxtW1MrMV09Xz4+Pj04LEUrOH1mdW5jdGlvbiBKYShtLEUsXyl7dmFyIFM9RT4+PjM7cmV0dXJuIG1bU118PTI1NSYoXzw8PTcmRSksbVtTKzFdPTI1NSYo''@;'; put 'put ''Xz4+Pj04KSxtW1MrMl09Xz4+PjgsRSsxNn1mdW5jdGlvbiBPdChtLEUpe3ZhciBfPW0ubGVuZ3RoLHc9MipfPkU/MipfOkUrNSxTPTA7aWYoXz49RSlyZXR1cm4gbTtpZihTZSl7dmFyIEY9bmkodyk7aWYobS5jb3B5KW0uY29weShGKTtlbHNlIGZvcig7UzxtLmxlbmd0aDsrK1MpRltTXT1t''@;'; put 'put ''W1NdO3JldHVybiBGfWlmKFEpe3ZhciBMPW5ldyBVaW50OEFycmF5KHcpO2lmKEwuc2V0KUwuc2V0KG0pO2Vsc2UgZm9yKDtTPF87KytTKUxbU109bVtTXTtyZXR1cm4gTH1yZXR1cm4gbS5sZW5ndGg9dyxtfWZ1bmN0aW9uIExyKG0pe2Zvcih2YXIgRT1uZXcgQXJyYXkobSksXz0wO188bTsr''@;'; put 'put ''K18pRVtfXT0wO3JldHVybiBFfWZ1bmN0aW9uIHB0KG0sRSxfKXt2YXIgdz0xLFM9MCxGPTAsTD0wLHo9MCxXPW0ubGVuZ3RoLEI9UT9uZXcgVWludDE2QXJyYXkoMzIpOkxyKDMyKTtmb3IoRj0wO0Y8MzI7KytGKUJbRl09MDtmb3IoRj1XO0Y8XzsrK0YpbVtGXT0wO1c9bS5sZW5ndGg7dmFy''@;'; put 'put ''IEg9UT9uZXcgVWludDE2QXJyYXkoVyk6THIoVyk7Zm9yKEY9MDtGPFc7KytGKUJbUz1tW0ZdXSsrLHc8UyYmKHc9UyksSFtGXT0wO2ZvcihCWzBdPTAsRj0xO0Y8PXc7KytGKUJbRisxNl09ej16K0JbRi0xXTw8MTtmb3IoRj0wO0Y8VzsrK0YpMCE9KHo9bVtGXSkmJihIW0ZdPUJbeisxNl0r''@;'; put 'put ''Kyk7dmFyIHE9MDtmb3IoRj0wO0Y8VzsrK0YpaWYoMCE9KHE9bVtGXSkpZm9yKHo9QShIW0ZdLHcpPj53LXEsTD0oMTw8dys0LXEpLTE7TD49MDstLUwpRVt6fEw8PHFdPTE1JnF8Rjw8NDtyZXR1cm4gd312YXIgSXQ9UT9uZXcgVWludDE2QXJyYXkoNTEyKTpMcig1MTIpLHFhPVE/bmV3IFVp''@;'; put 'put ''bnQxNkFycmF5KDMyKTpMcigzMik7aWYoIVEpe2Zvcih2YXIgeXI9MDt5cjw1MTI7Kyt5cilJdFt5cl09MDtmb3IoeXI9MDt5cjwzMjsrK3lyKXFhW3lyXT0wfSFmdW5jdGlvbigpe2Zvcih2YXIgbT1bXSxFPTA7RTwzMjtFKyspbS5wdXNoKDUpO3B0KG0scWEsMzIpO3ZhciBfPVtdO2ZvcihF''@;'; put 'put ''PTA7RTw9MTQzO0UrKylfLnB1c2goOCk7Zm9yKDtFPD0yNTU7RSsrKV8ucHVzaCg5KTtmb3IoO0U8PTI3OTtFKyspXy5wdXNoKDcpO2Zvcig7RTw9Mjg3O0UrKylfLnB1c2goOCk7cHQoXyxJdCwyODgpfSgpO3ZhciBjdD1mdW5jdGlvbigpe2Zvcih2YXIgRT1RP25ldyBVaW50OEFycmF5KDMy''@;'; put 'put ''NzY4KTpbXSxfPTAsdz0wO188c2UubGVuZ3RoLTE7KytfKWZvcig7dzxzZVtfKzFdOysrdylFW3ddPV87Zm9yKDt3PDMyNzY4OysrdylFW3ddPTI5O3ZhciBTPVE/bmV3IFVpbnQ4QXJyYXkoMjU5KTpbXTtmb3IoXz0wLHc9MDtfPGoubGVuZ3RoLTE7KytfKWZvcig7dzxqW18rMV07Kyt3KVNb''@;'; put 'put ''d109XztyZXR1cm4gZnVuY3Rpb24oVyxCKXtyZXR1cm4gVy5sZW5ndGg8OD9mdW5jdGlvbiBGKHosVyl7Zm9yKHZhciBCPTA7Qjx6Lmxlbmd0aDspe3ZhciBIPU1hdGgubWluKDY1NTM1LHoubGVuZ3RoLUIpO2ZvcihXLndyaXRlX3NoaWZ0KDEsKyhCK0g9PXoubGVuZ3RoKSksVy53cml0ZV9z''@;'; put 'put ''aGlmdCgyLEgpLFcud3JpdGVfc2hpZnQoMiw2NTUzNSZ+SCk7SC0tID4wOylXW1cubCsrXT16W0IrK119cmV0dXJuIFcubH0oVyxCKTpmdW5jdGlvbiBMKHosVyl7Zm9yKHZhciBCPTAsSD0wLHE9UT9uZXcgVWludDE2QXJyYXkoMzI3NjgpOltdO0g8ei5sZW5ndGg7KXt2YXIgbmU9TWF0aC5t''@;'; put 'put ''aW4oNjU1MzUsei5sZW5ndGgtSCk7aWYobmU8MTApe2Zvcig3JihCPWpyKFcsQiwrKEgrbmU9PXoubGVuZ3RoKSkpJiYoQis9OC0oNyZCKSksVy5sPUIvOHwwLFcud3JpdGVfc2hpZnQoMixuZSksVy53cml0ZV9zaGlmdCgyLDY1NTM1Jn5uZSk7bmUtLSA+MDspV1tXLmwrK109eltIKytdO0I9''@;'; put 'put ''OCpXLmx9ZWxzZXtCPWpyKFcsQiwrKEgrbmU9PXoubGVuZ3RoKSsyKTtmb3IodmFyIGhlPTA7bmUtLSA+MDspe3ZhciBpZT16W0hdLGZlPS0xLF9lPTA7aWYoKGZlPXFbaGU9MzI3NjcmKGhlPDw1XmllKV0pJiYoKGZlfD0tMzI3NjgmSCk+SCYmKGZlLT0zMjc2OCksZmU8SCkpZm9yKDt6W2Zl''@;'; put 'put ''K19lXT09eltIK19lXSYmX2U8MjUwOykrK19lO2lmKF9lPjIpeyhpZT1TW19lXSk8PTIyP0I9dnQoVyxCLFlbaWUrMV0+PjEpLTE6KHZ0KFcsQiwzKSx2dChXLEIrPTUsWVtpZS0yM10+PjUpLEIrPTMpO3ZhciBWZT1pZTw4PzA6aWUtND4+MjtWZT4wJiYoSmEoVyxCLF9lLWpbaWVdKSxCKz1W''@;'; put 'put ''ZSksQj12dChXLEIsWVtpZT1FW0gtZmVdXT4+MyksQi09Mzt2YXIgQ3I9aWU8ND8wOmllLTI+PjE7Q3I+MCYmKEphKFcsQixILWZlLXNlW2llXSksQis9Q3IpO2Zvcih2YXIgbnI9MDtucjxfZTsrK25yKXFbaGVdPTMyNzY3JkgsaGU9MzI3NjcmKGhlPDw1XnpbSF0pLCsrSDtuZS09X2UtMX1l''@;'; put 'put ''bHNlIGllPD0xNDM/aWUrPTQ4OkI9ZnQoVyxCLDEpLEI9dnQoVyxCLFlbaWVdKSxxW2hlXT0zMjc2NyZILCsrSH1CPXZ0KFcsQiwwKS0xfX1yZXR1cm4gVy5sPShCKzcpLzh8MCxXLmx9KFcsQil9fSgpO2Z1bmN0aW9uIHllKG0pe3ZhciBFPUcoNTArTWF0aC5mbG9vcigxLjEqbS5sZW5ndGgp''@;'; put 'put ''KSxfPWN0KG0sRSk7cmV0dXJuIEUuc2xpY2UoMCxfKX12YXIgWmU9UT9uZXcgVWludDE2QXJyYXkoMzI3NjgpOkxyKDMyNzY4KSxLcj1RP25ldyBVaW50MTZBcnJheSgzMjc2OCk6THIoMzI3NjgpLHNyPVE/bmV3IFVpbnQxNkFycmF5KDEyOCk6THIoMTI4KSxxdD0xLEZjPTE7ZnVuY3Rpb24g''@;'; put 'put ''U2cobSxFKXt2YXIgXz1DZShtLEUpKzI1Nyx3PUNlKG0sRSs9NSkrMSxTPWZ1bmN0aW9uIExlKG0sRSl7dmFyIF89NyZFLHc9RT4+PjM7cmV0dXJuKG1bd118KF88PTQ/MDptW3crMV08PDgpKT4+Pl8mMTV9KG0sRSs9NSkrNDtFKz00O2Zvcih2YXIgRj0wLEw9UT9uZXcgVWludDhBcnJheSgx''@;'; put 'put ''OSk6THIoMTkpLHo9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLFc9MSxCPVE/bmV3IFVpbnQ4QXJyYXkoOCk6THIoOCksSD1RP25ldyBVaW50OEFycmF5KDgpOkxyKDgpLHE9TC5sZW5ndGgsbmU9MDtuZTxTOysrbmUpTFtEW25lXV09Rj1BZShtLEUpLFc8RiYmKFc9''@;'; put 'put ''RiksQltGXSsrLEUrPTM7dmFyIGhlPTA7Zm9yKEJbMF09MCxuZT0xO25lPD1XOysrbmUpSFtuZV09aGU9aGUrQltuZS0xXTw8MTtmb3IobmU9MDtuZTxxOysrbmUpMCE9KGhlPUxbbmVdKSYmKHpbbmVdPUhbaGVdKyspO3ZhciBpZT0wO2ZvcihuZT0wO25lPHE7KytuZSlpZigwIT0oaWU9TFtu''@;'; put 'put ''ZV0pKXtoZT1ZW3pbbmVdXT4+OC1pZTtmb3IodmFyIGZlPSgxPDw3LWllKS0xO2ZlPj0wOy0tZmUpc3JbaGV8ZmU8PGllXT03JmllfG5lPDwzfXZhciBfZT1bXTtmb3IoVz0xO19lLmxlbmd0aDxfK3c7KXN3aXRjaChoZT1zcltvZShtLEUpXSxFKz03JmhlLGhlPj4+PTMpe2Nhc2UgMTY6Zm9y''@;'; put 'put ''KEY9MytQZShtLEUpLEUrPTIsaGU9X2VbX2UubGVuZ3RoLTFdO0YtLSA+MDspX2UucHVzaChoZSk7YnJlYWs7Y2FzZSAxNzpmb3IoRj0zK0FlKG0sRSksRSs9MztGLS0gPjA7KV9lLnB1c2goMCk7YnJlYWs7Y2FzZSAxODpmb3IoRj0xMStvZShtLEUpLEUrPTc7Ri0tID4wOylfZS5wdXNoKDAp''@;'; put 'put ''O2JyZWFrO2RlZmF1bHQ6X2UucHVzaChoZSksVzxoZSYmKFc9aGUpfXZhciBWZT1fZS5zbGljZSgwLF8pLENyPV9lLnNsaWNlKF8pO2ZvcihuZT1fO25lPDI4NjsrK25lKVZlW25lXT0wO2ZvcihuZT13O25lPDMwOysrbmUpQ3JbbmVdPTA7cmV0dXJuIHF0PXB0KFZlLFplLDI4NiksRmM9cHQo''@;'; put 'put ''Q3IsS3IsMzApLEV9ZnVuY3Rpb24geWMobSxFKXt2YXIgdz1mdW5jdGlvbiBGZyhtLEUpe2lmKDM9PW1bMF0mJiEoMyZtWzFdKSlyZXR1cm5bX3QoRSksMl07Zm9yKHZhciBfPTAsdz0wLFM9bmkoRXx8MTw8MTgpLEY9MCxMPVMubGVuZ3RoPj4+MCx6PTAsVz0wOyEoMSZ3KTspaWYodz1BZSht''@;'; put 'put ''LF8pLF8rPTMsdz4+PjEpZm9yKHc+PjE9PTE/KHo9OSxXPTUpOihfPVNnKG0sXyksej1xdCxXPUZjKTs7KXshRSYmTDxGKzMyNzY3JiYoTD0oUz1PdChTLEYrMzI3NjcpKS5sZW5ndGgpO3ZhciBIPXFlKG0sXyx6KSxxPXc+Pj4xPT0xP0l0W0hdOlplW0hdO2lmKF8rPTE1JnEsKHE+Pj49NCk+''@;'; put 'put ''Pj44JjI1NSl7aWYoMjU2PT1xKWJyZWFrO3ZhciBuZT0ocS09MjU3KTw4PzA6cS00Pj4yO25lPjUmJihuZT0wKTt2YXIgaGU9RitqW3FdO25lPjAmJihoZSs9cWUobSxfLG5lKSxfKz1uZSksSD1xZShtLF8sVyksXys9MTUmKHE9dz4+PjE9PTE/cWFbSF06S3JbSF0pO3ZhciBpZT0ocT4+Pj00''@;'; put 'put ''KTw0PzA6cS0yPj4xLGZlPXNlW3FdO2ZvcihpZT4wJiYoZmUrPXFlKG0sXyxpZSksXys9aWUpLCFFJiZMPGhlJiYoTD0oUz1PdChTLGhlKzEwMCkpLmxlbmd0aCk7RjxoZTspU1tGXT1TW0YtZmVdLCsrRn1lbHNlIFNbRisrXT1xfWVsc2V7NyZfJiYoXys9OC0oNyZfKSk7dmFyIEI9bVtfPj4+''@;'; put 'put ''M118bVsxKyhfPj4+MyldPDw4O2lmKF8rPTMyLEI+MClmb3IoIUUmJkw8RitCJiYoTD0oUz1PdChTLEYrQikpLmxlbmd0aCk7Qi0tID4wOylTW0YrK109bVtfPj4+M10sXys9OH1yZXR1cm4gRT9bUyxfKzc+Pj4zXTpbUy5zbGljZSgwLEYpLF8rNz4+PjNdfShtLnNsaWNlKG0ubHx8MCksRSk7''@;'; put 'put ''cmV0dXJuIG0ubCs9d1sxXSx3WzBdfWZ1bmN0aW9uIEFjKG0sRSl7aWYoIW0pdGhyb3cgbmV3IEVycm9yKEUpO3R5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS5lcnJvcihFKX1mdW5jdGlvbiBDYyhtLEUpe3ZhciBfPW07aHIoXywwKTt2YXIgRj17RmlsZUluZGV4OltdLEZ1bGxQYXRoczpb''@;'; put 'put ''XX07eShGLHtyb290OkUucm9vdH0pO2Zvcih2YXIgTD1fLmxlbmd0aC00Oyg4MCE9X1tMXXx8NzUhPV9bTCsxXXx8NSE9X1tMKzJdfHw2IT1fW0wrM10pJiZMPj0wOyktLUw7Xy5sPUwrNCxfLmwrPTQ7dmFyIHo9Xy5yZWFkX3NoaWZ0KDIpO18ubCs9Njt2YXIgVz1fLnJlYWRfc2hpZnQoNCk7''@;'; put 'put ''Zm9yKF8ubD1XLEw9MDtMPHo7KytMKXtfLmwrPTIwO3ZhciBCPV8ucmVhZF9zaGlmdCg0KSxIPV8ucmVhZF9zaGlmdCg0KSxxPV8ucmVhZF9zaGlmdCgyKSxuZT1fLnJlYWRfc2hpZnQoMiksaGU9Xy5yZWFkX3NoaWZ0KDIpO18ubCs9ODt2YXIgaWU9Xy5yZWFkX3NoaWZ0KDQpLGZlPWYoXy5z''@;'; put 'put ''bGljZShfLmwrcSxfLmwrcStuZSkpO18ubCs9cStuZStoZTt2YXIgX2U9Xy5sO18ubD1pZSs0LHlnKF8sQixILEYsZmUpLF8ubD1fZX1yZXR1cm4gRn1mdW5jdGlvbiB5ZyhtLEUsXyx3LFMpe20ubCs9Mjt2YXIgRj1tLnJlYWRfc2hpZnQoMiksTD1tLnJlYWRfc2hpZnQoMiksej1mdW5jdGlv''@;'; put 'put ''biBzKG0pe3ZhciBFPTY1NTM1Jm0ucmVhZF9zaGlmdCgyKSxfPTY1NTM1Jm0ucmVhZF9zaGlmdCgyKSx3PW5ldyBEYXRlLFM9MzEmXyxGPTE1JihfPj4+PTUpO18+Pj49NCx3LnNldE1pbGxpc2Vjb25kcygwKSx3LnNldEZ1bGxZZWFyKF8rMTk4MCksdy5zZXRNb250aChGLTEpLHcuc2V0RGF0''@;'; put 'put ''ZShTKTt2YXIgTD0zMSZFLHo9NjMmKEU+Pj49NSk7cmV0dXJuIHcuc2V0SG91cnMoRT4+Pj02KSx3LnNldE1pbnV0ZXMoeiksdy5zZXRTZWNvbmRzKEw8PDEpLHd9KG0pO2lmKDgyNTcmRil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBlbmNyeXB0aW9uIik7bS5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpO2Zvcih2YXIgQj1tLnJlYWRfc2hpZnQoNCksSD1tLnJlYWRfc2hpZnQoNCkscT1tLnJlYWRfc2hpZnQoMiksbmU9bS5yZWFkX3NoaWZ0KDIpLGhlPSIiLGllPTA7aWU8cTsrK2llKWhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG1bbS5sKytdKTtpZihuZSl7dmFyIGZlPWYobS5zbGljZSht''@;'; put 'put ''LmwsbS5sK25lKSk7KGZlWzIxNTg5XXx8e30pLm10JiYoej1mZVsyMTU4OV0ubXQpLCgoU3x8e30pWzIxNTg5XXx8e30pLm10JiYoej1TWzIxNTg5XS5tdCl9bS5sKz1uZTt2YXIgX2U9bS5zbGljZShtLmwsbS5sK0IpO3N3aXRjaChMKXtjYXNlIDg6X2U9ZnVuY3Rpb24gVShtLEUpe2lmKCFL''@;'; put 'put ''KXJldHVybiB5YyhtLEUpO3ZhciB3PW5ldygwLEsuSW5mbGF0ZVJhdyksUz13Ll9wcm9jZXNzQ2h1bmsobS5zbGljZShtLmwpLHcuX2ZpbmlzaEZsdXNoRmxhZyk7cmV0dXJuIG0ubCs9dy5ieXRlc1JlYWQsU30obSxIKTticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVuc3VwcG9ydGVkIFpJUCBDb21wcmVzc2lvbiBtZXRob2QgIitMKX12YXIgVmU9ITE7OCZGJiYoMTM0Njk1NzYwPT1tLnJlYWRfc2hpZnQoNCkmJihtLnJlYWRfc2hpZnQoNCksVmU9ITApLEI9bS5yZWFkX3NoaWZ0KDQpLEg9bS5yZWFkX3NoaWZ0KDQpKSxCIT1FJiZBYyhWZSwiQmFk''@;'; put 'put ''IGNvbXByZXNzZWQgc2l6ZTogIitFKyIgIT0gIitCKSxIIT1fJiZBYyhWZSwiQmFkIHVuY29tcHJlc3NlZCBzaXplOiAiK18rIiAhPSAiK0gpLHJpKHcsaGUsX2Use3Vuc2FmZTohMCxtdDp6fSl9dmFyIFAwPXtodG06InRleHQvaHRtbCIseG1sOiJ0ZXh0L3htbCIsZ2lmOiJpbWFnZS9naWYi''@;'; put 'put ''LGpwZzoiaW1hZ2UvanBlZyIscG5nOiJpbWFnZS9wbmciLG1zbzoiYXBwbGljYXRpb24veC1tc28iLHRobXg6ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSIsc2gzM3RqNToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07ZnVuY3Rpb24gQ2cobSxFKXtpZihtLmN0eXBlKXJldHVy''@;'; put 'put ''biBtLmN0eXBlO3ZhciBfPW0ubmFtZXx8IiIsdz1fLm1hdGNoKC9cLihbXlwuXSspJC8pO3JldHVybiB3JiZQMFt3WzFdXXx8RSYmKHc9KF89RSkubWF0Y2goL1tcLlxcXShbXlwuXFxdKSskLykpJiZQMFt3WzFdXT9QMFt3WzFdXToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn1mdW5jdGlv''@;'; put 'put ''biBEZyhtKXtmb3IodmFyIEU9Z2EobSksXz1bXSx3PTA7dzxFLmxlbmd0aDt3Kz03NilfLnB1c2goRS5zbGljZSh3LHcrNzYpKTtyZXR1cm4gXy5qb2luKCJcclxuIikrIlxyXG4ifWZ1bmN0aW9uIE9nKG0pe3ZhciBFPW0ucmVwbGFjZSgvW1x4MDAtXHgwOFx4MEJceDBDXHgwRS1ceDFGXHg3''@;'; put 'put ''RS1ceEZGPV0vZyxmdW5jdGlvbihCKXt2YXIgSD1CLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIj0iKygxPT1ILmxlbmd0aD8iMCIrSDpIKX0pOyJcbiI9PShFPUUucmVwbGFjZSgvICQvZ20sIj0yMCIpLnJlcGxhY2UoL1x0JC9nbSwiPTA5IikpLmNo''@;'; put 'put ''YXJBdCgwKSYmKEU9Ij0wRCIrRS5zbGljZSgxKSk7Zm9yKHZhciBfPVtdLHc9KEU9RS5yZXBsYWNlKC9ccig/IVxuKS9nbSwiPTBEIikucmVwbGFjZSgvXG5cbi9nbSwiXG49MEEiKS5yZXBsYWNlKC8oW15cclxuXSlcbi9nbSwiJDE9MEEiKSkuc3BsaXQoIlxyXG4iKSxTPTA7Uzx3Lmxlbmd0''@;'; put 'put ''aDsrK1Mpe3ZhciBGPXdbU107aWYoMCE9Ri5sZW5ndGgpZm9yKHZhciBMPTA7TDxGLmxlbmd0aDspe3ZhciB6PTc2LFc9Ri5zbGljZShMLEwreik7Ij0iPT1XLmNoYXJBdCh6LTEpP3otLToiPSI9PVcuY2hhckF0KHotMik/ei09MjoiPSI9PVcuY2hhckF0KHotMykmJih6LT0zKSxXPUYuc2xp''@;'; put 'put ''Y2UoTCxMK3opLChMKz16KTxGLmxlbmd0aCYmKFcrPSI9IiksXy5wdXNoKFcpfWVsc2UgXy5wdXNoKCIiKX1yZXR1cm4gXy5qb2luKCJcclxuIil9ZnVuY3Rpb24gUmcobSxFLF8pe2Zvcih2YXIgTCx3PSIiLFM9IiIsRj0iIix6PTA7ejwxMDsrK3ope3ZhciBXPUVbel07aWYoIVd8fFcubWF0''@;'; put 'put ''Y2goL15ccyokLykpYnJlYWs7dmFyIEI9Vy5tYXRjaCgvXiguKj8pOlxzKihbXlxzXS4qKSQvKTtpZihCKXN3aXRjaChCWzFdLnRvTG93ZXJDYXNlKCkpe2Nhc2UiY29udGVudC1sb2NhdGlvbiI6dz1CWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHlwZSI6Rj1CWzJdLnRyaW0oKTti''@;'; put 'put ''cmVhaztjYXNlImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciOlM9QlsyXS50cmltKCl9fXN3aXRjaCgrK3osUy50b0xvd2VyQ2FzZSgpKXtjYXNlImJhc2U2NCI6TD1JcihPcihFLnNsaWNlKHopLmpvaW4oIiIpKSk7YnJlYWs7Y2FzZSJxdW90ZWQtcHJpbnRhYmxlIjpMPWZ1bmN0aW9uIEln''@;'; put 'put ''KG0pe2Zvcih2YXIgRT1bXSxfPTA7XzxtLmxlbmd0aDsrK18pe2Zvcih2YXIgdz1tW19dO188PW0ubGVuZ3RoJiYiPSI9PXcuY2hhckF0KHcubGVuZ3RoLTEpOyl3PXcuc2xpY2UoMCx3Lmxlbmd0aC0xKSttWysrX107RS5wdXNoKHcpfWZvcih2YXIgUz0wO1M8RS5sZW5ndGg7KytTKUVbU109''@;'; put 'put ''RVtTXS5yZXBsYWNlKC9bPV1bMC05QS1GYS1mXXsyfS9nLGZ1bmN0aW9uKEYpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KEYuc2xpY2UoMSksMTYpKX0pO3JldHVybiBJcihFLmpvaW4oIlxyXG4iKSl9KEUuc2xpY2UoeikpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJVbnN1cHBvcnRlZCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nICIrUyl9dmFyIEg9cmkobSx3LnNsaWNlKF8ubGVuZ3RoKSxMLHt1bnNhZmU6ITB9KTtGJiYoSC5jdHlwZT1GKX1mdW5jdGlvbiByaShtLEUsXyx3KXt2YXIgUz13JiZ3LnVuc2FmZTtTfHx5KG0pO3ZhciBGPSFTJiZ2''@;'; put 'put ''ZS5maW5kKG0sRSk7aWYoIUYpe3ZhciBMPW0uRnVsbFBhdGhzWzBdO0Uuc2xpY2UoMCxMLmxlbmd0aCk9PUw/TD1FOigiLyIhPUwuc2xpY2UoLTEpJiYoTCs9Ii8iKSxMPShMK0UpLnJlcGxhY2UoIi8vIiwiLyIpKSxGPXtuYW1lOm4oRSksdHlwZToyfSxtLkZpbGVJbmRleC5wdXNoKEYpLG0u''@;'; put 'put ''RnVsbFBhdGhzLnB1c2goTCksU3x8dmUudXRpbHMuY2ZiX2djKG0pfXJldHVybiBGLmNvbnRlbnQ9XyxGLnNpemU9Xz9fLmxlbmd0aDowLHcmJih3LkNMU0lEJiYoRi5jbHNpZD13LkNMU0lEKSx3Lm10JiYoRi5tdD13Lm10KSx3LmN0JiYoRi5jdD13LmN0KSksRn1yZXR1cm4gdC5maW5kPWZ1''@;'; put 'put ''bmN0aW9uIFgobSxFKXt2YXIgXz1tLkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oVyl7cmV0dXJuIFcudG9VcHBlckNhc2UoKX0pLHc9Xy5tYXAoZnVuY3Rpb24oVyl7dmFyIEI9Vy5zcGxpdCgiLyIpO3JldHVybiBCW0IubGVuZ3RoLSgiLyI9PVcuc2xpY2UoLTEpPzI6MSldfSksUz0hMTs0Nz09''@;'; put 'put ''PUUuY2hhckNvZGVBdCgwKT8oUz0hMCxFPV9bMF0uc2xpY2UoMCwtMSkrRSk6Uz0tMSE9PUUuaW5kZXhPZigiLyIpO3ZhciBGPUUudG9VcHBlckNhc2UoKSxMPSEwPT09Uz9fLmluZGV4T2YoRik6dy5pbmRleE9mKEYpO2lmKC0xIT09TClyZXR1cm4gbS5GaWxlSW5kZXhbTF07dmFyIHo9IUYu''@;'; put 'put ''bWF0Y2god2EpO2ZvcihGPUYucmVwbGFjZShkciwiIikseiYmKEY9Ri5yZXBsYWNlKHdhLCIhIikpLEw9MDtMPF8ubGVuZ3RoOysrTClpZigoej9fW0xdLnJlcGxhY2Uod2EsIiEiKTpfW0xdKS5yZXBsYWNlKGRyLCIiKT09Rnx8KHo/d1tMXS5yZXBsYWNlKHdhLCIhIik6d1tMXSkucmVwbGFj''@;'; put 'put ''ZShkciwiIik9PUYpcmV0dXJuIG0uRmlsZUluZGV4W0xdO3JldHVybiBudWxsfSx0LnJlYWQ9ZnVuY3Rpb24gSShtLEUpe3ZhciBfPUUmJkUudHlwZTtzd2l0Y2goX3x8U2UmJkJ1ZmZlci5pc0J1ZmZlcihtKSYmKF89ImJ1ZmZlciIpLF98fCJiYXNlNjQiKXtjYXNlImZpbGUiOnJldHVybiBm''@;'; put 'put ''dW5jdGlvbiBNKG0sRSl7cmV0dXJuIG8oKSxsKGMucmVhZEZpbGVTeW5jKG0pLEUpfShtLEUpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gbChJcihPcihtKSksRSk7Y2FzZSJiaW5hcnkiOnJldHVybiBsKElyKG0pLEUpfXJldHVybiBsKG0sRSl9LHQucGFyc2U9bCx0LndyaXRlPWZ1bmN0aW9uIHhl''@;'; put 'put ''KG0sRSl7dmFyIF89VihtLEUpO3N3aXRjaChFJiZFLnR5cGV8fCJidWZmZXIiKXtjYXNlImZpbGUiOnJldHVybiBvKCksYy53cml0ZUZpbGVTeW5jKEUuZmlsZW5hbWUsXyksXztjYXNlImJpbmFyeSI6cmV0dXJuInN0cmluZyI9PXR5cGVvZiBfP186Y2UoXyk7Y2FzZSJiYXNlNjQiOnJldHVy''@;'; put 'put ''biBnYSgic3RyaW5nIj09dHlwZW9mIF8/XzpjZShfKSk7Y2FzZSJidWZmZXIiOmlmKFNlKXJldHVybiBCdWZmZXIuaXNCdWZmZXIoXyk/XzpvdChfKTtjYXNlImFycmF5IjpyZXR1cm4ic3RyaW5nIj09dHlwZW9mIF8/SXIoXyk6X31yZXR1cm4gX30sdC53cml0ZUZpbGU9ZnVuY3Rpb24gRmUo''@;'; put 'put ''bSxFLF8pe28oKTt2YXIgdz1WKG0sXyk7Yy53cml0ZUZpbGVTeW5jKEUsdyl9LHQudXRpbHM9e2NmYl9uZXc6ZnVuY3Rpb24gUGcobSl7dmFyIEU9e307cmV0dXJuIHkoRSxtKSxFfSxjZmJfYWRkOnJpLGNmYl9kZWw6ZnVuY3Rpb24gTGcobSxFKXt5KG0pO3ZhciBfPXZlLmZpbmQobSxFKTtp''@;'; put 'put ''ZihfKWZvcih2YXIgdz0wO3c8bS5GaWxlSW5kZXgubGVuZ3RoOysrdylpZihtLkZpbGVJbmRleFt3XT09XylyZXR1cm4gbS5GaWxlSW5kZXguc3BsaWNlKHcsMSksbS5GdWxsUGF0aHMuc3BsaWNlKHcsMSksITA7cmV0dXJuITF9LGNmYl9tb3Y6ZnVuY3Rpb24gQmcobSxFLF8pe3kobSk7dmFy''@;'; put 'put ''IHc9dmUuZmluZChtLEUpO2lmKHcpZm9yKHZhciBTPTA7UzxtLkZpbGVJbmRleC5sZW5ndGg7KytTKWlmKG0uRmlsZUluZGV4W1NdPT13KXJldHVybiBtLkZpbGVJbmRleFtTXS5uYW1lPW4oXyksbS5GdWxsUGF0aHNbU109XywhMDtyZXR1cm4hMX0sY2ZiX2djOmZ1bmN0aW9uIE1nKG0pe1Io''@;'; put 'put ''bSwhMCl9LFJlYWRTaGlmdDpBYSxDaGVja0ZpZWxkOmFzLHByZXBfYmxvYjpocixiY29uY2F0OmZyLHVzZV96bGliOmZ1bmN0aW9uIEMobSl7dHJ5e3ZhciBfPW5ldygwLG0uSW5mbGF0ZVJhdyk7aWYoXy5fcHJvY2Vzc0NodW5rKG5ldyBVaW50OEFycmF5KFszLDBdKSxfLl9maW5pc2hGbHVz''@;'; put 'put ''aEZsYWcpLCFfLmJ5dGVzUmVhZCl0aHJvdyBuZXcgRXJyb3IoInpsaWIgZG9lcyBub3QgZXhwb3NlIGJ5dGVzUmVhZCIpO0s9bX1jYXRjaCh3KXtjb25zb2xlLmVycm9yKCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiAiKyh3Lm1lc3NhZ2V8fHcpKX19LF9kZWZsYXRlUmF3OnllLF9pbmZsYXRl''@;'; put 'put ''UmF3OnljLGNvbnN0czp1ZX0sdH0oKTtmdW5jdGlvbiAkZShlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSkscj1bXSxhPTA7YTx0Lmxlbmd0aDsrK2EpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdFthXSkmJnIucHVzaCh0W2FdKTtyZXR1cm4gcn1mdW5jdGlvbiBz''@;'; put 'put ''MChlKXtmb3IodmFyIHQ9W10scj0kZShlKSxhPTA7YSE9PXIubGVuZ3RoOysrYSl0W2VbclthXV1dPXJbYV07cmV0dXJuIHR9dmFyIGMwPW5ldyBEYXRlKDE4OTksMTEsMzAsMCwwLDApO2Z1bmN0aW9uIGlyKGUsdCl7dmFyIHI9ZS5nZXRUaW1lKCk7cmV0dXJuIHQmJihyLT0xMjYzMTY4ZTUp''@;'; put 'put ''LChyLShjMC5nZXRUaW1lKCkrNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktYzAuZ2V0VGltZXpvbmVPZmZzZXQoKSkpKS84NjRlNX12YXIgU2k9bmV3IERhdGUsbG89YzAuZ2V0VGltZSgpKzZlNCooU2kuZ2V0VGltZXpvbmVPZmZzZXQoKS1jMC5nZXRUaW1lem9uZU9mZnNldCgpKSxGaT1T''@;'; put 'put ''aS5nZXRUaW1lem9uZU9mZnNldCgpO2Z1bmN0aW9uIG8wKGUpe3ZhciB0PW5ldyBEYXRlO3JldHVybiB0LnNldFRpbWUoMjQqZSo2MCo2MCoxZTMrbG8pLHQuZ2V0VGltZXpvbmVPZmZzZXQoKSE9PUZpJiZ0LnNldFRpbWUodC5nZXRUaW1lKCkrNmU0Kih0LmdldFRpbWV6b25lT2Zmc2V0KCkt''@;'; put 'put ''RmkpKSx0fWZ1bmN0aW9uIHVvKGUpe3ZhciB0PTAscj0wLGE9ITEsbj1lLm1hdGNoKC9QKFswLTlcLl0rWSk/KFswLTlcLl0rTSk/KFswLTlcLl0rRCk/VChbMC05XC5dK0gpPyhbMC05XC5dK00pPyhbMC05XC5dK1MpPy8pO2lmKCFuKXRocm93IG5ldyBFcnJvcigifCIrZSsifCBpcyBub3Qg''@;'; put 'put ''YW4gSVNPODYwMSBEdXJhdGlvbiIpO2Zvcih2YXIgaT0xO2khPW4ubGVuZ3RoOysraSlpZihuW2ldKXtzd2l0Y2gocj0xLGk+MyYmKGE9ITApLG5baV0uc2xpY2UobltpXS5sZW5ndGgtMSkpe2Nhc2UiWSI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6''@;'; put 'put ''ICIrbltpXS5zbGljZShuW2ldLmxlbmd0aC0xKSk7Y2FzZSJEIjpyKj0yNDtjYXNlIkgiOnIqPTYwO2Nhc2UiTSI6aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE0iKTtyKj02MH10Kz1yKnBhcnNlSW50KG5baV0sMTApfXJldHVybiB0fXZh''@;'; put 'put ''ciB5aT1uZXcgRGF0ZSgiMjAxNy0wMi0xOVQxOTowNjowOS4wMDBaIiksQWk9aXNOYU4oeWkuZ2V0RnVsbFllYXIoKSk/bmV3IERhdGUoIjIvMTkvMTciKTp5aSxobz0yMDE3PT1BaS5nZXRGdWxsWWVhcigpO2Z1bmN0aW9uIFhlKGUsdCl7dmFyIHI9bmV3IERhdGUoZSk7aWYoaG8pcmV0dXJu''@;'; put 'put ''IHQ+MD9yLnNldFRpbWUoci5nZXRUaW1lKCkrNjAqci5nZXRUaW1lem9uZU9mZnNldCgpKjFlMyk6dDwwJiZyLnNldFRpbWUoci5nZXRUaW1lKCktNjAqci5nZXRUaW1lem9uZU9mZnNldCgpKjFlMykscjtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gZTtpZigxOTE3PT1BaS5nZXRGdWxs''@;'; put 'put ''WWVhcigpJiYhaXNOYU4oci5nZXRGdWxsWWVhcigpKSl7dmFyIGE9ci5nZXRGdWxsWWVhcigpO3JldHVybiBlLmluZGV4T2YoIiIrYSk+LTF8fHIuc2V0RnVsbFllYXIoci5nZXRGdWxsWWVhcigpKzEwMCkscn12YXIgbj1lLm1hdGNoKC9cZCsvZyl8fFsiMjAxNyIsIjIiLCIxOSIsIjAiLCIw''@;'; put 'put ''IiwiMCJdLGk9bmV3IERhdGUoK25bMF0sK25bMV0tMSwrblsyXSwrblszXXx8MCwrbls0XXx8MCwrbls1XXx8MCk7cmV0dXJuIGUuaW5kZXhPZigiWiIpPi0xJiYoaT1uZXcgRGF0ZShpLmdldFRpbWUoKS02MCppLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKSksaX1mdW5jdGlvbiBQdChlLHQp''@;'; put 'put ''e2lmKFNlJiZCdWZmZXIuaXNCdWZmZXIoZSkpe2lmKHQpe2lmKDI1NT09ZVswXSYmMjU0PT1lWzFdKXJldHVybiB0dChlLnNsaWNlKDIpLnRvU3RyaW5nKCJ1dGYxNmxlIikpO2lmKDI1ND09ZVsxXSYmMjU1PT1lWzJdKXJldHVybiB0dChhaShlLnNsaWNlKDIpLnRvU3RyaW5nKCJiaW5hcnki''@;'; put 'put ''KSkpfXJldHVybiBlLnRvU3RyaW5nKCJiaW5hcnkiKX1pZih0eXBlb2YgVGV4dERlY29kZXI8InUiKXRyeXtpZih0KXtpZigyNTU9PWVbMF0mJjI1ND09ZVsxXSlyZXR1cm4gdHQobmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpLmRlY29kZShlLnNsaWNlKDIpKSk7aWYoMjU0PT1lWzBdJiYy''@;'; put 'put ''NTU9PWVbMV0pcmV0dXJuIHR0KG5ldyBUZXh0RGVjb2RlcigidXRmLTE2YmUiKS5kZWNvZGUoZS5zbGljZSgyKSkpfXZhciByPXsiXHUyMGFjIjoiXHg4MCIsIlx1MjAxYSI6Ilx4ODIiLFx1MDE5MjoiXHg4MyIsIlx1MjAxZSI6Ilx4ODQiLCJcdTIwMjYiOiJceDg1IiwiXHUyMDIwIjoiXHg4''@;'; put 'put ''NiIsIlx1MjAyMSI6Ilx4ODciLFx1MDJjNjoiXHg4OCIsIlx1MjAzMCI6Ilx4ODkiLFx1MDE2MDoiXHg4YSIsIlx1MjAzOSI6Ilx4OGIiLFx1MDE1MjoiXHg4YyIsXHUwMTdkOiJceDhlIiwiXHUyMDE4IjoiXHg5MSIsIlx1MjAxOSI6Ilx4OTIiLCJcdTIwMWMiOiJceDkzIiwiXHUyMDFkIjoi''@;'; put 'put ''XHg5NCIsIlx1MjAyMiI6Ilx4OTUiLCJcdTIwMTMiOiJceDk2IiwiXHUyMDE0IjoiXHg5NyIsIlx1MDJkYyI6Ilx4OTgiLCJcdTIxMjIiOiJceDk5IixcdTAxNjE6Ilx4OWEiLCJcdTIwM2EiOiJceDliIixcdTAxNTM6Ilx4OWMiLFx1MDE3ZToiXHg5ZSIsXHUwMTc4OiJceDlmIn07cmV0dXJu''@;'; put 'put ''IEFycmF5LmlzQXJyYXkoZSkmJihlPW5ldyBVaW50OEFycmF5KGUpKSxuZXcgVGV4dERlY29kZXIoImxhdGluMSIpLmRlY29kZShlKS5yZXBsYWNlKC9bXHUyMGFjXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHUwMTdk''@;'; put 'put ''XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHUwMTdlXHUwMTc4XS9nLGZ1bmN0aW9uKGkpe3JldHVybiByW2ldfHxpfSl9Y2F0Y2h7fWZvcih2YXIgYT1bXSxuPTA7biE9ZS5sZW5ndGg7KytuKWEucHVzaChT''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKGVbbl0pKTtyZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBNZShlKXtpZih0eXBlb2YgSlNPTjwidSImJiFBcnJheS5pc0FycmF5KGUpKXJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PWUp''@;'; put 'put ''cmV0dXJuIGU7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKGUuZ2V0VGltZSgpKTt2YXIgdD17fTtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKHRbcl09TWUoZVtyXSkpO3JldHVybiB0fWZ1bmN0aW9uIGplKGUs''@;'; put 'put ''dCl7Zm9yKHZhciByPSIiO3IubGVuZ3RoPHQ7KXIrPWU7cmV0dXJuIHJ9ZnVuY3Rpb24gSnIoZSl7dmFyIHQ9TnVtYmVyKGUpO2lmKCFpc05hTih0KSlyZXR1cm4gaXNGaW5pdGUodCk/dDpOYU47aWYoIS9cZC8udGVzdChlKSlyZXR1cm4gdDt2YXIgcj0xLGE9ZS5yZXBsYWNlKC8oW1xkXSks''@;'; put 'put ''KFtcZF0pL2csIiQxJDIiKS5yZXBsYWNlKC9bJF0vZywiIikucmVwbGFjZSgvWyVdL2csZnVuY3Rpb24oKXtyZXR1cm4gcio9MTAwLCIifSk7cmV0dXJuIGlzTmFOKHQ9TnVtYmVyKGEpKSYmKGE9YS5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbihuLGkpe3JldHVybiByPS1yLGl9KSxp''@;'; put 'put ''c05hTih0PU51bWJlcihhKSkpP3Q6dC9yfXZhciB4bz1bImphbnVhcnkiLCJmZWJydWFyeSIsIm1hcmNoIiwiYXByaWwiLCJtYXkiLCJqdW5lIiwianVseSIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9jdG9iZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl07ZnVuY3Rpb24gYWEoZSl7dmFyIHQ9''@;'; put 'put ''bmV3IERhdGUoZSkscj1uZXcgRGF0ZShOYU4pLGE9dC5nZXRZZWFyKCksbj10LmdldE1vbnRoKCksaT10LmdldERhdGUoKTtpZihpc05hTihpKSlyZXR1cm4gcjt2YXIgcz1lLnRvTG93ZXJDYXNlKCk7aWYocy5tYXRjaCgvamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0''@;'; put 'put ''fG5vdnxkZWMvKSl7aWYoKHM9cy5yZXBsYWNlKC9bXmEtel0vZywiIikucmVwbGFjZSgvKFteYS16XXxeKVthcF1tPyhbXmEtel18JCkvLCIiKSkubGVuZ3RoPjMmJi0xPT14by5pbmRleE9mKHMpKXJldHVybiByfWVsc2UgaWYocy5tYXRjaCgvW2Etel0vKSlyZXR1cm4gcjtyZXR1cm4gYTww''@;'; put 'put ''fHxhPjgwOTk/cjoobj4wfHxpPjEpJiYxMDEhPWE/dDplLm1hdGNoKC9bXi0wLTk6LFwvXFxdLyk/cjp0fXZhciB2bz1mdW5jdGlvbigpe3ZhciBlPTU9PSJhYmFjYWJhIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyLGEsbil7aWYoZXx8InN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBhKXJldHVybiByLnNwbGl0KGEpO2Zvcih2YXIgaT1yLnNwbGl0KGEpLHM9W2lbMF1dLGY9MTtmPGkubGVuZ3RoOysrZilzLnB1c2gobikscy5wdXNoKGlbZl0pO3JldHVybiBzfX0oKTtmdW5jdGlvbiBDaShlKXtyZXR1cm4gZT9lLmNvbnRlbnQmJmUudHlwZT9QdChlLmNvbnRlbnQsITAp''@;'; put 'put ''OmUuZGF0YT9RdChlLmRhdGEpOmUuYXNOb2RlQnVmZmVyJiZTZT9RdChlLmFzTm9kZUJ1ZmZlcigpLnRvU3RyaW5nKCJiaW5hcnkiKSk6ZS5hc0JpbmFyeT9RdChlLmFzQmluYXJ5KCkpOmUuX2RhdGEmJmUuX2RhdGEuZ2V0Q29udGVudD9RdChQdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs''@;'; put 'put ''bChlLl9kYXRhLmdldENvbnRlbnQoKSwwKSkpOm51bGw6bnVsbH1mdW5jdGlvbiBEaShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlLmRhdGEpcmV0dXJuIHQwKGUuZGF0YSk7aWYoZS5hc05vZGVCdWZmZXImJlNlKXJldHVybiBlLmFzTm9kZUJ1ZmZlcigpO2lmKGUuX2RhdGEmJmUuX2RhdGEu''@;'; put 'put ''Z2V0Q29udGVudCl7dmFyIHQ9ZS5fZGF0YS5nZXRDb250ZW50KCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3QwKHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfXJldHVybiBlLmNvbnRlbnQmJmUudHlwZT9lLmNvbnRlbnQ6bnVsbH1mdW5jdGlvbiBXcihlLHQpe2Zvcih2YXIg''@;'; put 'put ''cj1lLkZ1bGxQYXRoc3x8JGUoZS5maWxlcyksYT10LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1wvXS9nLCJcXCIpLG49YS5yZXBsYWNlKC9cXC9nLCIvIiksaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgcz1yW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpLnRvTG93ZXJDYXNlKCk7''@;'; put 'put ''aWYoYT09c3x8bj09cylyZXR1cm4gZS5maWxlcz9lLmZpbGVzW3JbaV1dOmUuRmlsZUluZGV4W2ldfXJldHVybiBudWxsfWZ1bmN0aW9uIFYwKGUsdCl7dmFyIHI9V3IoZSx0KTtpZihudWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZmlsZSAiK3QrIiBpbiB6aXAiKTtyZXR1''@;'; put 'put ''cm4gcn1mdW5jdGlvbiBRZShlLHQscil7aWYoIXIpcmV0dXJuIGZ1bmN0aW9uIHBvKGUpe3JldHVybiBlJiYiLmJpbiI9PT1lLm5hbWUuc2xpY2UoLTQpP0RpKGUpOkNpKGUpfShWMChlLHQpKTtpZighdClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIFFlKGUsdCl9Y2F0Y2h7cmV0dXJuIG51bGx9''@;'; put 'put ''fWZ1bmN0aW9uIE5yKGUsdCxyKXtpZighcilyZXR1cm4gQ2koVjAoZSx0KSk7aWYoIXQpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBOcihlLHQpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBPaShlLHQscil7aWYoIXIpcmV0dXJuIERpKFYwKGUsdCkpO2lmKCF0KXJldHVybiBudWxsO3Ry''@;'; put 'put ''eXtyZXR1cm4gT2koZSx0KX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gSWkoZSl7Zm9yKHZhciB0PWUuRnVsbFBhdGhzfHwkZShlLmZpbGVzKSxyPVtdLGE9MDthPHQubGVuZ3RoOysrYSkiLyIhPXRbYV0uc2xpY2UoLTEpJiZyLnB1c2godFthXS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtc''@;'; put 'put ''L10vLCIiKSk7cmV0dXJuIHIuc29ydCgpfWZ1bmN0aW9uIFJpKGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiB2ZS5yZWFkKGUse3R5cGU6ImJhc2U2NCJ9KTtjYXNlImJpbmFyeSI6cmV0dXJuIHZlLnJlYWQoZSx7dHlwZToiYmluYXJ5In0pO2Nhc2UiYnVmZmVyIjpj''@;'; put 'put ''YXNlImFycmF5IjpyZXR1cm4gdmUucmVhZChlLHt0eXBlOiJidWZmZXIifSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK3QudHlwZSl9ZnVuY3Rpb24gU2EoZSx0KXtpZigiLyI9PWUuY2hhckF0KDApKXJldHVybiBlLnNsaWNlKDEpO3ZhciByPXQuc3BsaXQoIi8iKTsi''@;'; put 'put ''LyIhPXQuc2xpY2UoLTEpJiZyLnBvcCgpO2Zvcih2YXIgYT1lLnNwbGl0KCIvIik7MCE9PWEubGVuZ3RoOyl7dmFyIG49YS5zaGlmdCgpOyIuLiI9PT1uP3IucG9wKCk6Ii4iIT09biYmci5wdXNoKG4pfXJldHVybiByLmpvaW4oIi8iKX12YXIgZXI9Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5j''@;'; put 'put ''b2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5cclxuJyxtbz0vKFteIlxzPz5cL10rKVxzKj1ccyooKD86IikoW14iXSopKD86Iil8KD86JykoW14nXSopKD86Jyl8KFteJyI+XHNdKykpL2csTmk9LzxbXC9cP10/W2EtekEtWjAtOTpfLV0rKD86XHMrW14iXHM/PlwvXStccyo9XHMq''@;'; put 'put ''KD86IlteIl0qInwnW14nXSonfFteJyI+XHM9XSspKSpccypbXC9cP10/Pi9nbSx2cj1lci5tYXRjaChOaSk/Tmk6LzxbXj5dKj4vZyxfbz0vPFx3KjovLHdvPS88KFwvPylcdys6LztmdW5jdGlvbiBtZShlLHQscil7Zm9yKHZhciBhPXt9LG49MCxpPTA7biE9PWUubGVuZ3RoJiYzMiE9PShp''@;'; put 'put ''PWUuY2hhckNvZGVBdChuKSkmJjEwIT09aSYmMTMhPT1pOysrbik7aWYodHx8KGFbMF09ZS5zbGljZSgwLG4pKSxuPT09ZS5sZW5ndGgpcmV0dXJuIGE7dmFyIHM9ZS5tYXRjaChtbyksZj0wLGM9IiIsbz0wLGw9IiIsaD0iIix4PTE7aWYocylmb3Iobz0wO28hPXMubGVuZ3RoOysrbyl7Zm9y''@;'; put 'put ''KGg9c1tvXSxpPTA7aSE9aC5sZW5ndGgmJjYxIT09aC5jaGFyQ29kZUF0KGkpOysraSk7Zm9yKGw9aC5zbGljZSgwLGkpLnRyaW0oKTszMj09aC5jaGFyQ29kZUF0KGkrMSk7KSsraTtmb3IoeD0zND09KG49aC5jaGFyQ29kZUF0KGkrMSkpfHwzOT09bj8xOjAsYz1oLnNsaWNlKGkrMSt4LGgu''@;'; put 'put ''bGVuZ3RoLXgpLGY9MDtmIT1sLmxlbmd0aCYmNTghPT1sLmNoYXJDb2RlQXQoZik7KytmKTtpZihmPT09bC5sZW5ndGgpbC5pbmRleE9mKCJfIik+MCYmKGw9bC5zbGljZSgwLGwuaW5kZXhPZigiXyIpKSksYVtsXT1jLHJ8fChhW2wudG9Mb3dlckNhc2UoKV09Yyk7ZWxzZXt2YXIgZD0oNT09''@;'; put 'put ''PWYmJiJ4bWxucyI9PT1sLnNsaWNlKDAsNSk/InhtbG5zIjoiIikrbC5zbGljZShmKzEpO2lmKGFbZF0mJiJleHQiPT1sLnNsaWNlKGYtMyxmKSljb250aW51ZTthW2RdPWMscnx8KGFbZC50b0xvd2VyQ2FzZSgpXT1jKX19cmV0dXJuIGF9ZnVuY3Rpb24gcnQoZSl7cmV0dXJuIGUucmVwbGFj''@;'; put 'put ''ZSh3bywiPCQxIil9dmFyIGJpPXsiJnF1b3Q7IjonIicsIiZhcG9zOyI6IiciLCImZ3Q7IjoiPiIsIiZsdDsiOiI8IiwiJmFtcDsiOiImIn0sRzA9czAoYmkpLEllPWZ1bmN0aW9uKCl7dmFyIGU9LyYoPzpxdW90fGFwb3N8Z3R8bHR8YW1wfCN4PyhbXGRhLWZBLUZdKykpOy9naSx0PS9feChb''@;'; put 'put ''XGRhLWZBLUZdezR9KV8vZ2k7cmV0dXJuIGZ1bmN0aW9uIHIoYSl7dmFyIG49YSsiIixpPW4uaW5kZXhPZigiPCFbQ0RBVEFbIik7aWYoLTE9PWkpcmV0dXJuIG4ucmVwbGFjZShlLGZ1bmN0aW9uKGYsYyl7cmV0dXJuIGJpW2ZdfHxTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMsZi5p''@;'; put 'put ''bmRleE9mKCJ4Iik+LTE/MTY6MTApKXx8Zn0pLnJlcGxhY2UodCxmdW5jdGlvbihmLGMpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMsMTYpKX0pO3ZhciBzPW4uaW5kZXhPZigiXV0+Iik7cmV0dXJuIHIobi5zbGljZSgwLGkpKStuLnNsaWNlKGkrOSxzKStyKG4uc2xp''@;'; put 'put ''Y2UocyszKSl9fSgpLHowPS9bJjw+JyJdL2csTGk9L1tcdTAwMDAtXHUwMDFmXS9nO2Z1bmN0aW9uICQwKGUpe3JldHVybihlKyIiKS5yZXBsYWNlKHowLGZ1bmN0aW9uKHIpe3JldHVybiBHMFtyXX0pLnJlcGxhY2UoL1xuL2csIjxici8+IikucmVwbGFjZShMaSxmdW5jdGlvbihyKXtyZXR1''@;'; put 'put ''cm4iJiN4IisoIjAwMCIrci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpKyI7In0pfXZhciBCaT1mdW5jdGlvbigpe3ZhciBlPS8mIyhcZCspOy9nO2Z1bmN0aW9uIHQocixhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhLDEwKSl9cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZSx0KX19KCk7ZnVuY3Rpb24gV2UoZSl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlITA6Y2FzZSIxIjpjYXNlInRydWUiOmNhc2UiVFJVRSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gajAoZSl7Zm9yKHZhciB0PSIiLHI9MCxh''@;'; put 'put ''PTAsbj0wLGk9MCxzPTAsZj0wO3I8ZS5sZW5ndGg7KShhPWUuY2hhckNvZGVBdChyKyspKTwxMjg/dCs9U3RyaW5nLmZyb21DaGFyQ29kZShhKToobj1lLmNoYXJDb2RlQXQocisrKSxhPjE5MSYmYTwyMjQ/KHM9KDMxJmEpPDw2LHN8PTYzJm4sdCs9U3RyaW5nLmZyb21DaGFyQ29kZShzKSk6''@;'; put 'put ''KGk9ZS5jaGFyQ29kZUF0KHIrKyksYTwyNDA/dCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoMTUmYSk8PDEyfCg2MyZuKTw8Nnw2MyZpKTooZj0oKDcmYSk8PDE4fCg2MyZuKTw8MTJ8KDYzJmkpPDw2fDYzJihzPWUuY2hhckNvZGVBdChyKyspKSktNjU1MzYsdCs9U3RyaW5nLmZyb21DaGFyQ29k''@;'; put 'put ''ZSg1NTI5NisoZj4+PjEwJjEwMjMpKSx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKygxMDIzJmYpKSkpKTtyZXR1cm4gdH1mdW5jdGlvbiBNaShlKXt2YXIgcixhLGYsdD1fdCgyKmUubGVuZ3RoKSxuPTEsaT0wLHM9MDtmb3IoYT0wO2E8ZS5sZW5ndGg7YSs9biluPTEsKGY9ZS5jaGFy''@;'; put 'put ''Q29kZUF0KGEpKTwxMjg/cj1mOmY8MjI0PyhyPTY0KigzMSZmKSsoNjMmZS5jaGFyQ29kZUF0KGErMSkpLG49Mik6ZjwyNDA/KHI9NDA5NiooMTUmZikrNjQqKDYzJmUuY2hhckNvZGVBdChhKzEpKSsoNjMmZS5jaGFyQ29kZUF0KGErMikpLG49Myk6KG49NCxyPTI2MjE0NCooNyZmKSs0MDk2''@;'; put 'put ''Kig2MyZlLmNoYXJDb2RlQXQoYSsxKSkrNjQqKDYzJmUuY2hhckNvZGVBdChhKzIpKSsoNjMmZS5jaGFyQ29kZUF0KGErMykpLHM9NTUyOTYrKChyLT02NTUzNik+Pj4xMCYxMDIzKSxyPTU2MzIwKygxMDIzJnIpKSwwIT09cyYmKHRbaSsrXT0yNTUmcyx0W2krK109cz4+Pjgscz0wKSx0W2kr''@;'; put 'put ''K109ciUyNTYsdFtpKytdPXI+Pj44O3JldHVybiB0LnNsaWNlKDAsaSkudG9TdHJpbmcoInVjczIiKX1mdW5jdGlvbiBVaShlKXtyZXR1cm4gb3QoZSwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX12YXIgbDA9ImZvbyBiYXIgYmF6XHhlMlx4OThceDgzXHhmMFx4OWZceDhkXHhhMyIsQmU9''@;'; put 'put ''U2UmJihVaShsMCk9PWowKGwwKSYmVWl8fE1pKGwwKT09ajAobDApJiZNaSl8fGowLHR0PVNlP2Z1bmN0aW9uKGUpe3JldHVybiBvdChlLCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wLGE9MCxuPTA7cjxlLmxlbmd0aDspc3dpdGNoKGE9''@;'; put 'put ''ZS5jaGFyQ29kZUF0KHIrKyksITApe2Nhc2UgYTwxMjg6dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgYTwyMDQ4OnQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5MisoYT4+NikpKSx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKDYzJmEpKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSBhPj01NTI5NiYmYTw1NzM0NDphLT01NTI5NixuPWUuY2hhckNvZGVBdChyKyspLTU2MzIwKyhhPDwxMCksdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjQwKyhuPj4xOCY3KSkpLHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE0NCsobj4+MTImNjMpKSksdC5wdXNoKFN0''@;'; put 'put ''cmluZy5mcm9tQ2hhckNvZGUoMTI4KyhuPj42JjYzKSkpLHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmbikpKTticmVhaztkZWZhdWx0OnQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDIyNCsoYT4+MTIpKSksdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KyhhPj42''@;'; put 'put ''JjYzKSkpLHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsoNjMmYSkpKX1yZXR1cm4gdC5qb2luKCIiKX0sRmE9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocixhKXt2YXIgbj1yKyJ8IisoYXx8IiIpO3JldHVybiBlW25dP2Vbbl06ZVtuXT1uZXcgUmVnRXhwKCI8''@;'; put 'put ''KD86XFx3KzopPyIrcisnKD86IHhtbDpzcGFjZT0icHJlc2VydmUiKT8oPzpbXj5dKik+KFtcXHNcXFNdKj8pPC8oPzpcXHcrOik/JytyKyI+IixhfHwiIil9fSgpLFdpPWZ1bmN0aW9uKCl7dmFyIGU9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIlx4YjciXSxbInF1b3QiLCciJ10sWyJhcG9z''@;'; put 'put ''IiwiJyJdLFsiZ3QiLCI+Il0sWyJsdCIsIjwiXSxbImFtcCIsIiYiXV0ubWFwKGZ1bmN0aW9uKHQpe3JldHVybltuZXcgUmVnRXhwKCImIit0WzBdKyI7IiwiaWciKSx0WzFdXX0pO3JldHVybiBmdW5jdGlvbihyKXtmb3IodmFyIGE9ci5yZXBsYWNlKC9eW1x0XG5cciBdKy8sIiIpLnJlcGxh''@;'; put 'put ''Y2UoL1tcdFxuXHIgXSskLywiIikucmVwbGFjZSgvPlxzKy9nLCI+IikucmVwbGFjZSgvXHMrPC9nLCI8IikucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIikucmVwbGFjZSgvPFxzKltiQl1bclJdXHMqXC8/Pi9nLCJcbiIpLnJlcGxhY2UoLzxbXj5dKj4vZywiIiksbj0wO248ZS5sZW5ndGg7''@;'; put 'put ''KytuKWE9YS5yZXBsYWNlKGVbbl1bMF0sZVtuXVsxXSk7cmV0dXJuIGF9fSgpLFNvPWZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB2b2lkIDAhPT1lW3JdP2Vbcl06ZVtyXT1uZXcgUmVnRXhwKCI8KD86dnQ6KT8iK3IrIj4oW1xcc1xcU10qPyk8Lyg/OnZ0''@;'; put 'put ''Oik/IityKyI+IiwiZyIpfX0oKSxGbz0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyx5bz0vPCg/OnZ0OikoW14+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIEhpKGUsdCl7dmFyIHI9bWUoZSksYT1lLm1hdGNoKFNvKHIuYmFzZVR5cGUpKXx8W10sbj1bXTtpZihhLmxlbmd0aCE9ci5zaXplKXtp''@;'; put 'put ''Zih0LldURil0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgdmVjdG9yIGxlbmd0aCAiK2EubGVuZ3RoKyIgIT0gIityLnNpemUpO3JldHVybiBufXJldHVybiBhLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIHM9aS5yZXBsYWNlKEZvLCIiKS5tYXRjaCh5byk7cyYmbi5wdXNoKHt2OkJlKHNb''@;'; put 'put ''Ml0pLHQ6c1sxXX0pfSksbn1mdW5jdGlvbiBZMChlKXtpZihTZSYmQnVmZmVyLmlzQnVmZmVyKGUpKXJldHVybiBlLnRvU3RyaW5nKCJ1dGY4Iik7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBlO2lmKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkp''@;'; put 'put ''cmV0dXJuIEJlKHd0KE0wKGUpKSk7dGhyb3cgbmV3IEVycm9yKCJCYWQgaW5wdXQgZm9ybWF0OiBleHBlY3RlZCBCdWZmZXIgb3Igc3RyaW5nIil9dmFyIHlhPS88KFwvPykoW15ccz8+PCFcLzpdKjp8KShbXlxzPzw+OlwvXSspKD86W1xzPzpcL11bXj5dKik/Pi9nbSxycj17Q09SRV9QUk9Q''@;'; put 'put ''UzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiLENVU1RfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2N1c3RvbS1wcm9wZXJ0aWVzIixFWFRf''@;'; put 'put ''UFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXMiLENUOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMiLFJFTFM6Imh0dHA6Ly9zY2hl''@;'; put 'put ''bWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyIsVENNTlQ6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxOC90aHJlYWRlZGNvbW1lbnRzIixkYzoiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEu''@;'; put 'put ''MS8iLGRjdGVybXM6Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iLGRjbWl0eXBlOiJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvIixteDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvbWFjL2V4Y2VsLzIwMDgvbWFpbiIscjoiaHR0cDovL3NjaGVtYXMub3Blbnht''@;'; put 'put ''bGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIsc2pzOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3NoZWV0anMvY29yZS1wcm9wZXJ0aWVzIix2dDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29m''@;'; put 'put ''ZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMiLHhzaToiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLHhzZDoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEifSxTdD1bImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJl''@;'; put 'put ''YWRzaGVldG1sLzIwMDYvbWFpbiIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL3NwcmVhZHNoZWV0bWwvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2Vs''@;'; put 'put ''LzIwMDYvMiJdLEdpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxhPTA7YTxlWzBdLmxlbmd0aDsrK2EpaWYoZVswXVthXSlmb3IodmFyIG49MCxpPWVbMF1bYV0ubGVuZ3RoO248aTtuKz0xMDI0MCl0LnB1c2guYXBwbHkodCxlWzBdW2FdLnNsaWNlKG4sbisxMDI0MCkpO3JldHVybiB0fSx6''@;'; put 'put ''aT1TZT9mdW5jdGlvbihlKXtyZXR1cm4gZVswXS5sZW5ndGg+MCYmQnVmZmVyLmlzQnVmZmVyKGVbMF1bMF0pP0J1ZmZlci5jb25jYXQoZVswXS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih0KT90Om90KHQpfSkpOkdpKGUpfTpHaSwkaT1mdW5jdGlvbihlLHQscil7''@;'; put 'put ''Zm9yKHZhciBhPVtdLG49dDtuPHI7bis9MilhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh1dChlLG4pKSk7cmV0dXJuIGEuam9pbigiIikucmVwbGFjZShkciwiIil9LHUwPVNlP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGUpP2UudG9TdHJpbmcoInV0ZjE2bGUi''@;'; put 'put ''LHQscikucmVwbGFjZShkciwiIik6JGkoZSx0LHIpfTokaSxqaT1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBhPVtdLG49dDtuPHQrcjsrK24pYS5wdXNoKCgiMCIrZVtuXS50b1N0cmluZygxNikpLnNsaWNlKC0yKSk7cmV0dXJuIGEuam9pbigiIil9LEtpPVNlP2Z1bmN0aW9uKGUsdCxyKXty''@;'; put 'put ''ZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGUpP2UudG9TdHJpbmcoImhleCIsdCx0K3IpOmppKGUsdCxyKX06amksWWk9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgYT1bXSxuPXQ7bjxyO24rKylhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpYShlLG4pKSk7cmV0dXJuIGEuam9pbigiIil9LG5h''@;'; put 'put ''PVNlP2Z1bmN0aW9uKHQscixhKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHQpP3QudG9TdHJpbmcoInV0ZjgiLHIsYSk6WWkodCxyLGEpfTpZaSxKaT1mdW5jdGlvbihlLHQpe3ZhciByPWNyKGUsdCk7cmV0dXJuIHI+MD9uYShlLHQrNCx0KzQrci0xKToiIn0sSjA9SmkscWk9ZnVuY3Rpb24o''@;'; put 'put ''ZSx0KXt2YXIgcj1jcihlLHQpO3JldHVybiByPjA/bmEoZSx0KzQsdCs0K3ItMSk6IiJ9LHEwPXFpLFppPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MipjcihlLHQpO3JldHVybiByPjA/bmEoZSx0KzQsdCs0K3ItMSk6IiJ9LFowPVppLFFpPWZ1bmN0aW9uKHQscil7dmFyIGE9Y3IodCxyKTtyZXR1''@;'; put 'put ''cm4gYT4wP3UwKHQscis0LHIrNCthKToiIn0sUTA9UWksZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1jcihlLHQpO3JldHVybiByPjA/bmEoZSx0KzQsdCs0K3IpOiIifSxlbj1lcyxycz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbiBDbyhlLHQpe2Zvcih2YXIgcj0xLTIqKGVbdCs3XT4+''@;'; put 'put ''PjcpLGE9KCgxMjcmZVt0KzddKTw8NCkrKGVbdCs2XT4+PjQmMTUpLG49MTUmZVt0KzZdLGk9NTtpPj0wOy0taSluPTI1NipuK2VbdCtpXTtyZXR1cm4gMjA0Nz09YT8wPT1uP3IqKDEvMCk6TmFOOigwPT1hP2E9LTEwMjI6KGEtPTEwMjMsbis9TWF0aC5wb3coMiw1MikpLHIqTWF0aC5wb3co''@;'; put 'put ''MixhLTUyKSpuKX0oZSx0KX0saDA9cnMscm49ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl9O1NlJiYoSjA9ZnVuY3Rpb24odCxyKXtpZighQnVmZmVyLmlzQnVmZmVyKHQpKXJldHVybiBK''@;'; put 'put ''aSh0LHIpO3ZhciBhPXQucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhPjA/dC50b1N0cmluZygidXRmOCIscis0LHIrNCthLTEpOiIifSxxMD1mdW5jdGlvbih0LHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIodCkpcmV0dXJuIHFpKHQscik7dmFyIGE9dC5yZWFkVUludDMyTEUocik7cmV0dXJuIGE+''@;'; put 'put ''MD90LnRvU3RyaW5nKCJ1dGY4IixyKzQscis0K2EtMSk6IiJ9LFowPWZ1bmN0aW9uKHQscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcih0KSlyZXR1cm4gWmkodCxyKTt2YXIgYT0yKnQucmVhZFVJbnQzMkxFKHIpO3JldHVybiB0LnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K2EtMSl9LFEwPWZ1''@;'; put 'put ''bmN0aW9uKHQscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcih0KSlyZXR1cm4gUWkodCxyKTt2YXIgYT10LnJlYWRVSW50MzJMRShyKTtyZXR1cm4gdC50b1N0cmluZygidXRmMTZsZSIscis0LHIrNCthKX0sZW49ZnVuY3Rpb24odCxyKXtpZighQnVmZmVyLmlzQnVmZmVyKHQpKXJldHVybiBlcyh0''@;'; put 'put ''LHIpO3ZhciBhPXQucmVhZFVJbnQzMkxFKHIpO3JldHVybiB0LnRvU3RyaW5nKCJ1dGY4IixyKzQscis0K2EpfSxoMD1mdW5jdGlvbih0LHIpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIodCk/dC5yZWFkRG91YmxlTEUocik6cnModCxyKX0scm49ZnVuY3Rpb24odCl7cmV0dXJuIEJ1ZmZlci5p''@;'; put 'put ''c0J1ZmZlcih0KXx8QXJyYXkuaXNBcnJheSh0KXx8dHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ0IGluc3RhbmNlb2YgVWludDhBcnJheX0pLHR5cGVvZiBPZTwidSImJmZ1bmN0aW9uIHRzKCl7dTA9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBPZS51dGlscy5kZWNvZGUoMTIwMCxlLnNsaWNlKHQs''@;'; put 'put ''cikpLnJlcGxhY2UoZHIsIiIpfSxuYT1mdW5jdGlvbihlLHQscil7cmV0dXJuIE9lLnV0aWxzLmRlY29kZSg2NTAwMSxlLnNsaWNlKHQscikpfSxKMD1mdW5jdGlvbihlLHQpe3ZhciByPWNyKGUsdCk7cmV0dXJuIHI+MD9PZS51dGlscy5kZWNvZGUoUnQsZS5zbGljZSh0KzQsdCs0K3ItMSkp''@;'; put 'put ''OiIifSxxMD1mdW5jdGlvbihlLHQpe3ZhciByPWNyKGUsdCk7cmV0dXJuIHI+MD9PZS51dGlscy5kZWNvZGUoRHIsZS5zbGljZSh0KzQsdCs0K3ItMSkpOiIifSxaMD1mdW5jdGlvbihlLHQpe3ZhciByPTIqY3IoZSx0KTtyZXR1cm4gcj4wP09lLnV0aWxzLmRlY29kZSgxMjAwLGUuc2xpY2Uo''@;'; put 'put ''dCs0LHQrNCtyLTEpKToiIn0sUTA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1jcihlLHQpO3JldHVybiByPjA/T2UudXRpbHMuZGVjb2RlKDEyMDAsZS5zbGljZSh0KzQsdCs0K3IpKToiIn0sZW49ZnVuY3Rpb24oZSx0KXt2YXIgcj1jcihlLHQpO3JldHVybiByPjA/T2UudXRpbHMuZGVjb2RlKDY1''@;'; put 'put ''MDAxLGUuc2xpY2UodCs0LHQrNCtyKSk6IiJ9fSgpO3ZhciBpYT1mdW5jdGlvbihlLHQpe3JldHVybiBlW3RdfSx1dD1mdW5jdGlvbihlLHQpe3JldHVybiAyNTYqZVt0KzFdK2VbdF19LE9vPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MjU2KmVbdCsxXStlW3RdO3JldHVybiByPDMyNzY4P3I6LTEq''@;'; put 'put ''KDY1NTM1LXIrMSl9LGNyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdCszXSooMTw8MjQpKyhlW3QrMl08PDE2KSsoZVt0KzFdPDw4KStlW3RdfSxMdD1mdW5jdGlvbihlLHQpe3JldHVybiBlW3QrM108PDI0fGVbdCsyXTw8MTZ8ZVt0KzFdPDw4fGVbdF19LElvPWZ1bmN0aW9uKGUsdCl7cmV0''@;'; put 'put ''dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07ZnVuY3Rpb24gQWEoZSx0KXt2YXIgYSxuLHMsZixjLG8scj0iIixpPVtdO3N3aXRjaCh0KXtjYXNlImRiY3MiOmlmKG89dGhpcy5sLFNlJiZCdWZmZXIuaXNCdWZmZXIodGhpcykpcj10aGlzLnNsaWNlKHRoaXMubCx0''@;'; put 'put ''aGlzLmwrMiplKS50b1N0cmluZygidXRmMTZsZSIpO2Vsc2UgZm9yKGM9MDtjPGU7KytjKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUodXQodGhpcyxvKSksbys9MjtlKj0yO2JyZWFrO2Nhc2UidXRmOCI6cj1uYSh0aGlzLHRoaXMubCx0aGlzLmwrZSk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjpyPXUw''@;'; put 'put ''KHRoaXMsdGhpcy5sLHRoaXMubCsoZSo9MikpO2JyZWFrO2Nhc2Uid3N0ciI6aWYoISh0eXBlb2YgT2U8InUiKSlyZXR1cm4gQWEuY2FsbCh0aGlzLGUsImRiY3MiKTtyPU9lLnV0aWxzLmRlY29kZShEcix0aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMiplKSksZSo9MjticmVhaztjYXNlImxw''@;'; put 'put ''c3RyLWFuc2kiOnI9SjAodGhpcyx0aGlzLmwpLGU9NCtjcih0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHN0ci1jcCI6cj1xMCh0aGlzLHRoaXMubCksZT00K2NyKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwd3N0ciI6cj1aMCh0aGlzLHRoaXMubCksZT00KzIqY3IodGhpcyx0aGlzLmwp''@;'; put 'put ''O2JyZWFrO2Nhc2UibHBwNCI6ZT00K2NyKHRoaXMsdGhpcy5sKSxyPVEwKHRoaXMsdGhpcy5sKSwyJmUmJihlKz0yKTticmVhaztjYXNlIjhscHA0IjplPTQrY3IodGhpcyx0aGlzLmwpLHI9ZW4odGhpcyx0aGlzLmwpLDMmZSYmKGUrPTQtKDMmZSkpO2JyZWFrO2Nhc2UiY3N0ciI6Zm9yKGU9''@;'; put 'put ''MCxyPSIiOzAhPT0ocz1pYSh0aGlzLHRoaXMubCtlKyspKTspaS5wdXNoKHBhKHMpKTtyPWkuam9pbigiIik7YnJlYWs7Y2FzZSJfd3N0ciI6Zm9yKGU9MCxyPSIiOzAhPT0ocz11dCh0aGlzLHRoaXMubCtlKSk7KWkucHVzaChwYShzKSksZSs9MjtlKz0yLHI9aS5qb2luKCIiKTticmVhaztj''@;'; put 'put ''YXNlImRiY3MtY29udCI6Zm9yKHI9IiIsbz10aGlzLmwsYz0wO2M8ZTsrK2Mpe2lmKHRoaXMubGVucyYmLTEhPT10aGlzLmxlbnMuaW5kZXhPZihvKSlyZXR1cm4gcz1pYSh0aGlzLG8pLHRoaXMubD1vKzEsZj1BYS5jYWxsKHRoaXMsZS1jLHM/ImRiY3MtY29udCI6InNiY3MtY29udCIpLGku''@;'; put 'put ''am9pbigiIikrZjtpLnB1c2gocGEodXQodGhpcyxvKSkpLG8rPTJ9cj1pLmpvaW4oIiIpLGUqPTI7YnJlYWs7Y2FzZSJjcHN0ciI6aWYodHlwZW9mIE9lPCJ1Iil7cj1PZS51dGlscy5kZWNvZGUoRHIsdGhpcy5zbGljZSh0aGlzLmwsdGhpcy5sK2UpKTticmVha31jYXNlInNiY3MtY29udCI6''@;'; put 'put ''Zm9yKHI9IiIsbz10aGlzLmwsYz0wO2MhPWU7KytjKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YobykpcmV0dXJuIHM9aWEodGhpcyxvKSx0aGlzLmw9bysxLGY9QWEuY2FsbCh0aGlzLGUtYyxzPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxpLmpvaW4oIiIpK2Y7aS5w''@;'; put 'put ''dXNoKHBhKGlhKHRoaXMsbykpKSxvKz0xfXI9aS5qb2luKCIiKTticmVhaztkZWZhdWx0OnN3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGE9aWEodGhpcyx0aGlzLmwpLHRoaXMubCsrLGE7Y2FzZSAyOnJldHVybiBhPSgiaSI9PT10P09vOnV0KSh0aGlzLHRoaXMubCksdGhpcy5sKz0yLGE7Y2Fz''@;'; put 'put ''ZSA0OmNhc2UtNDpyZXR1cm4iaSIhPT10JiYxMjgmdGhpc1t0aGlzLmwrM10/KG49Y3IodGhpcyx0aGlzLmwpLHRoaXMubCs9NCxuKTooYT0oZT4wP0x0OklvKSh0aGlzLHRoaXMubCksdGhpcy5sKz00LGEpO2Nhc2UgODpjYXNlLTg6aWYoImYiPT09dClyZXR1cm4gbj04PT1lP2gwKHRoaXMs''@;'; put 'put ''dGhpcy5sKTpoMChbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlzLmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLDApLHRoaXMubCs9OCxuO2U9ODtjYXNlIDE2OnI9S2ko''@;'; put 'put ''dGhpcyx0aGlzLmwsZSl9fXJldHVybiB0aGlzLmwrPWUscn12YXIgUm89ZnVuY3Rpb24oZSx0LHIpe2Vbcl09MjU1JnQsZVtyKzFdPXQ+Pj44JjI1NSxlW3IrMl09dD4+PjE2JjI1NSxlW3IrM109dD4+PjI0JjI1NX0sTm89ZnVuY3Rpb24oZSx0LHIpe2Vbcl09MjU1JnQsZVtyKzFdPXQ+Pjgm''@;'; put 'put ''MjU1LGVbcisyXT10Pj4xNiYyNTUsZVtyKzNdPXQ+PjI0JjI1NX0sYm89ZnVuY3Rpb24oZSx0LHIpe2Vbcl09MjU1JnQsZVtyKzFdPXQ+Pj44JjI1NX07ZnVuY3Rpb24gUG8oZSx0LHIpe3ZhciBhPTAsbj0wO2lmKCJkYmNzIj09PXIpe2ZvcihuPTA7biE9dC5sZW5ndGg7KytuKWJvKHRoaXMs''@;'; put 'put ''dC5jaGFyQ29kZUF0KG4pLHRoaXMubCsyKm4pO2E9Mip0Lmxlbmd0aH1lbHNlIGlmKCJzYmNzIj09PXIpe2lmKHR5cGVvZiBPZTwidSImJjg3ND09UnQpZm9yKG49MDtuIT10Lmxlbmd0aDsrK24pe3ZhciBpPU9lLnV0aWxzLmVuY29kZShSdCx0LmNoYXJBdChuKSk7dGhpc1t0aGlzLmwrbl09''@;'; put 'put ''aVswXX1lbHNlIGZvcih0PXQucmVwbGFjZSgvW15ceDAwLVx4N0ZdL2csIl8iKSxuPTA7biE9dC5sZW5ndGg7KytuKXRoaXNbdGhpcy5sK25dPTI1NSZ0LmNoYXJDb2RlQXQobik7YT10Lmxlbmd0aH1lbHNle2lmKCJoZXgiPT09cil7Zm9yKDtuPGU7KytuKXRoaXNbdGhpcy5sKytdPXBhcnNl''@;'; put 'put ''SW50KHQuc2xpY2UoMipuLDIqbisyKSwxNil8fDA7cmV0dXJuIHRoaXN9aWYoInV0ZjE2bGUiPT09cil7dmFyIHM9TWF0aC5taW4odGhpcy5sK2UsdGhpcy5sZW5ndGgpO2ZvcihuPTA7bjxNYXRoLm1pbih0Lmxlbmd0aCxlKTsrK24pe3ZhciBmPXQuY2hhckNvZGVBdChuKTt0aGlzW3RoaXMu''@;'; put 'put ''bCsrXT0yNTUmZix0aGlzW3RoaXMubCsrXT1mPj44fWZvcig7dGhpcy5sPHM7KXRoaXNbdGhpcy5sKytdPTA7cmV0dXJuIHRoaXN9c3dpdGNoKGUpe2Nhc2UgMTphPTEsdGhpc1t0aGlzLmxdPTI1NSZ0O2JyZWFrO2Nhc2UgMjphPTIsdGhpc1t0aGlzLmxdPTI1NSZ0LHRoaXNbdGhpcy5sKzFd''@;'; put 'put ''PTI1NSYodD4+Pj04KTticmVhaztjYXNlIDM6YT0zLHRoaXNbdGhpcy5sXT0yNTUmdCx0aGlzW3RoaXMubCsxXT0yNTUmKHQ+Pj49OCksdGhpc1t0aGlzLmwrMl09MjU1Jih0Pj4+PTgpO2JyZWFrO2Nhc2UgNDphPTQsUm8odGhpcyx0LHRoaXMubCk7YnJlYWs7Y2FzZSA4OmlmKGE9OCwiZiI9''@;'; put 'put ''PT1yKXshZnVuY3Rpb24gRG8oZSx0LHIpe3ZhciBhPSh0PDB8fDEvdD09LTEvMD8xOjApPDw3LG49MCxpPTAscz1hPy10OnQ7aXNGaW5pdGUocyk/MD09cz9uPWk9MDoobj1NYXRoLmZsb29yKE1hdGgubG9nKHMpL01hdGguTE4yKSxpPXMqTWF0aC5wb3coMiw1Mi1uKSxuPD0tMTAyMyYmKCFp''@;'; put 'put ''c0Zpbml0ZShpKXx8aTxNYXRoLnBvdygyLDUyKSk/bj0tMTAyMjooaS09TWF0aC5wb3coMiw1Miksbis9MTAyMykpOihuPTIwNDcsaT1pc05hTih0KT8yNjk4NTowKTtmb3IodmFyIGY9MDtmPD01OysrZixpLz0yNTYpZVtyK2ZdPTI1NSZpO2Vbcis2XT0oMTUmbik8PDR8MTUmaSxlW3IrN109''@;'; put 'put ''bj4+NHxhfSh0aGlzLHQsdGhpcy5sKTticmVha31jYXNlIDE2OmJyZWFrO2Nhc2UtNDphPTQsTm8odGhpcyx0LHRoaXMubCl9fXJldHVybiB0aGlzLmwrPWEsdGhpc31mdW5jdGlvbiBhcyhlLHQpe3ZhciByPUtpKHRoaXMsdGhpcy5sLGUubGVuZ3RoPj4xKTtpZihyIT09ZSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IodCsiRXhwZWN0ZWQgIitlKyIgc2F3ICIrcik7dGhpcy5sKz1lLmxlbmd0aD4+MX1mdW5jdGlvbiBocihlLHQpe2UubD10LGUucmVhZF9zaGlmdD1BYSxlLmNoaz1hcyxlLndyaXRlX3NoaWZ0PVBvfWZ1bmN0aW9uIHByKGUsdCl7ZS5sKz10fWZ1bmN0aW9uIEcoZSl7dmFyIHQ9X3Qo''@;'; put 'put ''ZSk7cmV0dXJuIGhyKHQsMCksdH1mdW5jdGlvbiBodChlLHQscil7aWYoZSl7dmFyIGEsbixpO2hyKGUsZS5sfHwwKTtmb3IodmFyIHM9ZS5sZW5ndGgsZj0wLGM9MDtlLmw8czspezEyOCYoZj1lLnJlYWRfc2hpZnQoMSkpJiYoZj0oMTI3JmYpKygoMTI3JmUucmVhZF9zaGlmdCgxKSk8PDcp''@;'; put 'put ''KTt2YXIgbz0kYVtmXXx8JGFbNjU1MzVdO2ZvcihpPTEyNyYoYT1lLnJlYWRfc2hpZnQoMSkpLG49MTtuPDQmJjEyOCZhOysrbilpKz0oMTI3JihhPWUucmVhZF9zaGlmdCgxKSkpPDw3Km47Yz1lLmwraTt2YXIgbD1vLmYmJm8uZihlLGkscik7aWYoZS5sPWMsdChsLG8sZikpcmV0dXJufX19''@;'; put 'put ''ZnVuY3Rpb24gU3IoKXt2YXIgZT1bXSx0PVNlPzI1NjoyMDQ4LHI9ZnVuY3Rpb24obyl7dmFyIGw9RyhvKTtyZXR1cm4gaHIobCwwKSxsfSxhPXIodCksbj1mdW5jdGlvbigpe2EmJihhLmxlbmd0aD5hLmwmJigoYT1hLnNsaWNlKDAsYS5sKSkubD1hLmxlbmd0aCksYS5sZW5ndGg+MCYmZS5w''@;'; put 'put ''dXNoKGEpLGE9bnVsbCl9LGk9ZnVuY3Rpb24obyl7cmV0dXJuIGEmJm88YS5sZW5ndGgtYS5sP2E6KG4oKSxhPXIoTWF0aC5tYXgobysxLHQpKSl9O3JldHVybntuZXh0OmkscHVzaDpmdW5jdGlvbihvKXtuKCksbnVsbD09KGE9bykubCYmKGEubD1hLmxlbmd0aCksaSh0KX0sZW5kOmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIG4oKSxmcihlKX0sX2J1ZnM6ZX19ZnVuY3Rpb24gQ2EoZSx0LHIpe3ZhciBhPU1lKGUpO2lmKHQucz8oYS5jUmVsJiYoYS5jKz10LnMuYyksYS5yUmVsJiYoYS5yKz10LnMucikpOihhLmNSZWwmJihhLmMrPXQuYyksYS5yUmVsJiYoYS5yKz10LnIpKSwhcnx8ci5iaWZm''@;'; put 'put ''PDEyKXtmb3IoO2EuYz49MjU2OylhLmMtPTI1Njtmb3IoO2Eucj49NjU1MzY7KWEuci09NjU1MzZ9cmV0dXJuIGF9ZnVuY3Rpb24gbnMoZSx0LHIpe3ZhciBhPU1lKGUpO3JldHVybiBhLnM9Q2EoYS5zLHQucyxyKSxhLmU9Q2EoYS5lLHQucyxyKSxhfWZ1bmN0aW9uIERhKGUsdCl7aWYoZS5j''@;'; put 'put ''UmVsJiZlLmM8MClmb3IoZT1NZShlKTtlLmM8MDspZS5jKz10Pjg/MTYzODQ6MjU2O2lmKGUuclJlbCYmZS5yPDApZm9yKGU9TWUoZSk7ZS5yPDA7KWUucis9dD44PzEwNDg1NzY6dD41PzY1NTM2OjE2Mzg0O3ZhciByPWdlKGUpO3JldHVybiFlLmNSZWwmJm51bGwhPWUuY1JlbCYmKHI9ZnVu''@;'; put 'put ''Y3Rpb24gTW8oZSl7cmV0dXJuIGUucmVwbGFjZSgvXihbQS1aXSkvLCIkJCQxIil9KHIpKSwhZS5yUmVsJiZudWxsIT1lLnJSZWwmJihyPWZ1bmN0aW9uIExvKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfShyKSkscn1mdW5jdGlvbiB0bihlLHQpe3Jl''@;'; put 'put ''dHVybiAwIT1lLnMucnx8ZS5zLnJSZWx8fGUuZS5yIT0odC5iaWZmPj0xMj8xMDQ4NTc1OnQuYmlmZj49OD82NTUzNjoxNjM4NCl8fGUuZS5yUmVsPzAhPWUucy5jfHxlLnMuY1JlbHx8ZS5lLmMhPSh0LmJpZmY+PTEyPzE2MzgzOjI1NSl8fGUuZS5jUmVsP0RhKGUucyx0LmJpZmYpKyI6IitE''@;'; put 'put ''YShlLmUsdC5iaWZmKTooZS5zLnJSZWw/IiI6IiQiKStLZShlLnMucikrIjoiKyhlLmUuclJlbD8iIjoiJCIpK0tlKGUuZS5yKTooZS5zLmNSZWw/IiI6IiQiKStIZShlLnMuYykrIjoiKyhlLmUuY1JlbD8iIjoiJCIpK0hlKGUuZS5jKX1mdW5jdGlvbiBhbihlKXtyZXR1cm4gcGFyc2VJbnQo''@;'; put 'put ''ZnVuY3Rpb24gQm8oZSl7cmV0dXJuIGUucmVwbGFjZSgvXCQoXGQrKSQvLCIkMSIpfShlKSwxMCktMX1mdW5jdGlvbiBLZShlKXtyZXR1cm4iIisoZSsxKX1mdW5jdGlvbiBubihlKXtmb3IodmFyIHQ9ZnVuY3Rpb24gVW8oZSl7cmV0dXJuIGUucmVwbGFjZSgvXlwkKFtBLVpdKS8sIiQxIil9''@;'; put 'put ''KGUpLHI9MCxhPTA7YSE9PXQubGVuZ3RoOysrYSlyPTI2KnIrdC5jaGFyQ29kZUF0KGEpLTY0O3JldHVybiByLTF9ZnVuY3Rpb24gSGUoZSl7aWYoZTwwKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjb2x1bW4gIitlKTt2YXIgdD0iIjtmb3IoKytlO2U7ZT1NYXRoLmZsb29yKChlLTEpLzI2''@;'; put 'put ''KSl0PVN0cmluZy5mcm9tQ2hhckNvZGUoKGUtMSklMjYrNjUpK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gR2UoZSl7Zm9yKHZhciB0PTAscj0wLGE9MDthPGUubGVuZ3RoOysrYSl7dmFyIG49ZS5jaGFyQ29kZUF0KGEpO24+PTQ4JiZuPD01Nz90PTEwKnQrKG4tNDgpOm4+PTY1JiZuPD05MCYmKHI9''@;'; put 'put ''MjYqcisobi02NCkpfXJldHVybntjOnItMSxyOnQtMX19ZnVuY3Rpb24gZ2UoZSl7Zm9yKHZhciB0PWUuYysxLHI9IiI7dDt0PSh0LTEpLzI2fDApcj1TdHJpbmcuZnJvbUNoYXJDb2RlKCh0LTEpJTI2KzY1KStyO3JldHVybiByKyhlLnIrMSl9ZnVuY3Rpb24gUHIoZSl7dmFyIHQ9ZS5pbmRl''@;'; put 'put ''eE9mKCI6Iik7cmV0dXJuLTE9PXQ/e3M6R2UoZSksZTpHZShlKX06e3M6R2UoZS5zbGljZSgwLHQpKSxlOkdlKGUuc2xpY2UodCsxKSl9fWZ1bmN0aW9uIHdlKGUsdCl7cmV0dXJuIHR5cGVvZiB0PiJ1Inx8Im51bWJlciI9PXR5cGVvZiB0P3dlKGUucyxlLmUpOigic3RyaW5nIiE9dHlwZW9m''@;'; put 'put ''IGUmJihlPWdlKGUpKSwic3RyaW5nIiE9dHlwZW9mIHQmJih0PWdlKHQpKSxlPT10P2U6ZSsiOiIrdCl9ZnVuY3Rpb24gRGUoZSl7dmFyIHQ9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxyPTAsYT0wLG49MCxpPWUubGVuZ3RoO2ZvcihyPTA7YTxpJiYhKChuPWUuY2hhckNvZGVBdChhKS02''@;'; put 'put ''NCk8MXx8bj4yNik7KythKXI9MjYqcituO2Zvcih0LnMuYz0tLXIscj0wO2E8aSYmISgobj1lLmNoYXJDb2RlQXQoYSktNDgpPDB8fG4+OSk7KythKXI9MTAqcituO2lmKHQucy5yPS0tcixhPT09aXx8MTAhPW4pcmV0dXJuIHQuZS5jPXQucy5jLHQuZS5yPXQucy5yLHQ7Zm9yKCsrYSxyPTA7''@;'; put 'put ''YSE9aSYmISgobj1lLmNoYXJDb2RlQXQoYSktNjQpPDF8fG4+MjYpOysrYSlyPTI2KnIrbjtmb3IodC5lLmM9LS1yLHI9MDthIT1pJiYhKChuPWUuY2hhckNvZGVBdChhKS00OCk8MHx8bj45KTsrK2Epcj0xMCpyK247cmV0dXJuIHQuZS5yPS0tcix0fWZ1bmN0aW9uIGF0KGUsdCxyKXtyZXR1''@;'; put 'put ''cm4gbnVsbD09ZXx8bnVsbD09ZS50fHwieiI9PWUudD8iIjp2b2lkIDAhPT1lLnc/ZS53OigiZCI9PWUudCYmIWUueiYmciYmci5kYXRlTkYmJihlLno9ci5kYXRlTkYpLCJlIj09ZS50P3h0W2Uudl18fGUudjpmdW5jdGlvbiBpcyhlLHQpe3ZhciByPSJkIj09ZS50JiZ0IGluc3RhbmNlb2Yg''@;'; put 'put ''RGF0ZTtpZihudWxsIT1lLnopdHJ5e3JldHVybiBlLnc9UnIoZS56LHI/aXIodCk6dCl9Y2F0Y2h7fXRyeXtyZXR1cm4gZS53PVJyKChlLlhGfHx7fSkubnVtRm10SWR8fChyPzE0OjApLHI/aXIodCk6dCl9Y2F0Y2h7cmV0dXJuIiIrdH19KGUsbnVsbD09dD9lLnY6dCkpfWZ1bmN0aW9uIEZ0''@;'; put 'put ''KGUsdCl7dmFyIHI9dCYmdC5zaGVldD90LnNoZWV0OiJTaGVldDEiLGE9e307cmV0dXJuIGFbcl09ZSx7U2hlZXROYW1lczpbcl0sU2hlZXRzOmF9fWZ1bmN0aW9uIHNhKGUsdCl7cmV0dXJuIGZ1bmN0aW9uIHNzKGUsdCxyKXt2YXIgYT1yfHx7fSxuPWU/QXJyYXkuaXNBcnJheShlKTphLmRl''@;'; put 'put ''bnNlO251bGwhPXplJiZudWxsPT1uJiYobj16ZSk7dmFyIGk9ZXx8KG4/W106e30pLHM9MCxmPTA7aWYoaSYmbnVsbCE9YS5vcmlnaW4pe2lmKCJudW1iZXIiPT10eXBlb2YgYS5vcmlnaW4pcz1hLm9yaWdpbjtlbHNle3ZhciBjPSJzdHJpbmciPT10eXBlb2YgYS5vcmlnaW4/R2UoYS5vcmln''@;'; put 'put ''aW4pOmEub3JpZ2luO3M9Yy5yLGY9Yy5jfWlbIiFyZWYiXXx8KGlbIiFyZWYiXT0iQTE6QTEiKX12YXIgbz17czp7YzoxZTcscjoxZTd9LGU6e2M6MCxyOjB9fTtpZihpWyIhcmVmIl0pe3ZhciBsPURlKGlbIiFyZWYiXSk7by5zLmM9bC5zLmMsby5zLnI9bC5zLnIsby5lLmM9TWF0aC5tYXgo''@;'; put 'put ''by5lLmMsbC5lLmMpLG8uZS5yPU1hdGgubWF4KG8uZS5yLGwuZS5yKSwtMT09cyYmKG8uZS5yPXM9bC5lLnIrMSl9Zm9yKHZhciBoPTA7aCE9dC5sZW5ndGg7KytoKWlmKHRbaF0pe2lmKCFBcnJheS5pc0FycmF5KHRbaF0pKXRocm93IG5ldyBFcnJvcigiYW9hX3RvX3NoZWV0IGV4cGVjdHMg''@;'; put 'put ''YW4gYXJyYXkgb2YgYXJyYXlzIik7Zm9yKHZhciB4PTA7eCE9dFtoXS5sZW5ndGg7Kyt4KWlmKCEodHlwZW9mIHRbaF1beF0+InUiKSl7dmFyIGQ9e3Y6dFtoXVt4XX0sdj1zK2gsdT1mK3g7aWYoby5zLnI+diYmKG8ucy5yPXYpLG8ucy5jPnUmJihvLnMuYz11KSxvLmUucjx2JiYoby5lLnI9''@;'; put 'put ''diksby5lLmM8dSYmKG8uZS5jPXUpLCF0W2hdW3hdfHwib2JqZWN0IiE9dHlwZW9mIHRbaF1beF18fEFycmF5LmlzQXJyYXkodFtoXVt4XSl8fHRbaF1beF1pbnN0YW5jZW9mIERhdGUpaWYoQXJyYXkuaXNBcnJheShkLnYpJiYoZC5mPXRbaF1beF1bMV0sZC52PWQudlswXSksbnVsbD09PWQu''@;'; put 'put ''dilpZihkLmYpZC50PSJuIjtlbHNlIGlmKGEubnVsbEVycm9yKWQudD0iZSIsZC52PTA7ZWxzZXtpZighYS5zaGVldFN0dWJzKWNvbnRpbnVlO2QudD0ieiJ9ZWxzZSJudW1iZXIiPT10eXBlb2YgZC52P2QudD0ibiI6ImJvb2xlYW4iPT10eXBlb2YgZC52P2QudD0iYiI6ZC52IGluc3RhbmNl''@;'; put 'put ''b2YgRGF0ZT8oZC56PWEuZGF0ZU5GfHxwZVsxNF0sYS5jZWxsRGF0ZXM/KGQudD0iZCIsZC53PVJyKGQueixpcihkLnYpKSk6KGQudD0ibiIsZC52PWlyKGQudiksZC53PVJyKGQueixkLnYpKSk6ZC50PSJzIjtlbHNlIGQ9dFtoXVt4XTtpZihuKWlbdl18fChpW3ZdPVtdKSxpW3ZdW3VdJiZp''@;'; put 'put ''W3ZdW3VdLnomJihkLno9aVt2XVt1XS56KSxpW3ZdW3VdPWQ7ZWxzZXt2YXIgcD1nZSh7Yzp1LHI6dn0pO2lbcF0mJmlbcF0ueiYmKGQuej1pW3BdLnopLGlbcF09ZH19fXJldHVybiBvLnMuYzwxZTcmJihpWyIhcmVmIl09d2UobykpLGl9KG51bGwsZSx0KX1mdW5jdGlvbiBtcihlKXt2YXIg''@;'; put 'put ''dD1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIDA9PT10PyIiOmUucmVhZF9zaGlmdCh0LCJkYmNzIil9ZnVuY3Rpb24gVm8oZSl7cmV0dXJue2ljaDplLnJlYWRfc2hpZnQoMiksaWZudDplLnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIHNuKGUsdCl7dmFyIHI9ZS5sLGE9ZS5yZWFkX3NoaWZ0KDEp''@;'; put 'put ''LG49bXIoZSksaT1bXSxzPXt0Om4saDpufTtpZigxJmEpe2Zvcih2YXIgZj1lLnJlYWRfc2hpZnQoNCksYz0wO2MhPWY7KytjKWkucHVzaChWbyhlKSk7cy5yPWl9ZWxzZSBzLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4gZS5sPXIrdCxzfXZhciBHbz1zbjtmdW5jdGlvbiBIcihlKXt2YXIg''@;'; put 'put ''dD1lLnJlYWRfc2hpZnQoNCkscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIHIrPWUucmVhZF9zaGlmdCgxKTw8MTYsZS5sKysse2M6dCxpU3R5bGVSZWY6cn19ZnVuY3Rpb24gTXQoZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiB0Kz1lLnJlYWRfc2hpZnQoMSk8PDE2LGUubCsrLHtj''@;'; put 'put ''Oi0xLGlTdHlsZVJlZjp0fX12YXIgJG89bXI7ZnVuY3Rpb24gZm4oZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiAwPT09dHx8NDI5NDk2NzI5NT09PXQ/IiI6ZS5yZWFkX3NoaWZ0KHQsImRiY3MiKX12YXIgam89bXIsb249Zm47ZnVuY3Rpb24gdW4oZSl7dmFyIHQ9ZS5zbGljZShl''@;'; put 'put ''LmwsZS5sKzQpLHI9MSZ0WzBdLGE9MiZ0WzBdO2UubCs9NDt2YXIgbj0wPT09YT9oMChbMCwwLDAsMCwyNTImdFswXSx0WzFdLHRbMl0sdFszXV0sMCk6THQodCwwKT4+MjtyZXR1cm4gcj9uLzEwMDpufWZ1bmN0aW9uIG9zKGUpe3ZhciB0PXtzOnt9LGU6e319O3JldHVybiB0LnMucj1lLnJl''@;'; put 'put ''YWRfc2hpZnQoNCksdC5lLnI9ZS5yZWFkX3NoaWZ0KDQpLHQucy5jPWUucmVhZF9zaGlmdCg0KSx0LmUuYz1lLnJlYWRfc2hpZnQoNCksdH12YXIgV3Q9b3M7ZnVuY3Rpb24gZ3IoZSl7aWYoZS5sZW5ndGgtZS5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIGUu''@;'; put 'put ''cmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gbHMoZSx0KXt2YXIgYT1lLnJlYWRfc2hpZnQoNCk7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4iIjtjYXNlIDQyOTQ5NjcyOTU6Y2FzZSA0Mjk0OTY3Mjk0OnJldHVybnsyOiJCSVRNQVAiLDM6Ik1FVEFGSUxFUElDVCIsODoiRElCIiwxNDoiRU5I''@;'; put 'put ''TUVUQUZJTEUifVtlLnJlYWRfc2hpZnQoNCldfHwiIn1pZihhPjQwMCl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENsaXBib2FyZDogIithLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGUubC09NCxlLnJlYWRfc2hpZnQoMCwxPT10PyJscHN0ciI6Imxwd3N0ciIpfXZhciBobj0yLEFyPTMs''@;'; put 'put ''dXM9MTIsaHM9ODEsYWw9WzgwLGhzXSx4bj17MTp7bjoiQ29kZVBhZ2UiLHQ6aG59LDI6e246IkNhdGVnb3J5Iix0OjgwfSwzOntuOiJQcmVzZW50YXRpb25Gb3JtYXQiLHQ6ODB9LDQ6e246IkJ5dGVDb3VudCIsdDpBcn0sNTp7bjoiTGluZUNvdW50Iix0OkFyfSw2OntuOiJQYXJhZ3JhcGhD''@;'; put 'put ''b3VudCIsdDpBcn0sNzp7bjoiU2xpZGVDb3VudCIsdDpBcn0sODp7bjoiTm90ZUNvdW50Iix0OkFyfSw5OntuOiJIaWRkZW5Db3VudCIsdDpBcn0sMTA6e246Ik11bHRpbWVkaWFDbGlwQ291bnQiLHQ6QXJ9LDExOntuOiJTY2FsZUNyb3AiLHQ6MTF9LDEyOntuOiJIZWFkaW5nUGFpcnMiLHQ6''@;'; put 'put ''NDEwOH0sMTM6e246IlRpdGxlc09mUGFydHMiLHQ6NDEyNn0sMTQ6e246Ik1hbmFnZXIiLHQ6ODB9LDE1OntuOiJDb21wYW55Iix0OjgwfSwxNjp7bjoiTGlua3NVcFRvRGF0ZSIsdDoxMX0sMTc6e246IkNoYXJhY3RlckNvdW50Iix0OkFyfSwxOTp7bjoiU2hhcmVkRG9jIix0OjExfSwyMjp7''@;'; put 'put ''bjoiSHlwZXJsaW5rc0NoYW5nZWQiLHQ6MTF9LDIzOntuOiJBcHBWZXJzaW9uIix0OkFyLHA6InZlcnNpb24ifSwyNDp7bjoiRGlnU2lnIix0OjY1fSwyNjp7bjoiQ29udGVudFR5cGUiLHQ6ODB9LDI3OntuOiJDb250ZW50U3RhdHVzIix0OjgwfSwyODp7bjoiTGFuZ3VhZ2UiLHQ6ODB9LDI5''@;'; put 'put ''OntuOiJWZXJzaW9uIix0OjgwfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxlIix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0sZG49ezE6e246IkNvZGVQYWdlIix0OmhufSwyOntuOiJUaXRsZSIsdDo4MH0sMzp7bjoiU3ViamVjdCIsdDo4''@;'; put 'put ''MH0sNDp7bjoiQXV0aG9yIix0OjgwfSw1OntuOiJLZXl3b3JkcyIsdDo4MH0sNjp7bjoiQ29tbWVudHMiLHQ6ODB9LDc6e246IlRlbXBsYXRlIix0OjgwfSw4OntuOiJMYXN0QXV0aG9yIix0OjgwfSw5OntuOiJSZXZOdW1iZXIiLHQ6ODB9LDEwOntuOiJFZGl0VGltZSIsdDo2NH0sMTE6e246''@;'; put 'put ''Ikxhc3RQcmludGVkIix0OjY0fSwxMjp7bjoiQ3JlYXRlZERhdGUiLHQ6NjR9LDEzOntuOiJNb2RpZmllZERhdGUiLHQ6NjR9LDE0OntuOiJQYWdlQ291bnQiLHQ6QXJ9LDE1OntuOiJXb3JkQ291bnQiLHQ6QXJ9LDE2OntuOiJDaGFyQ291bnQiLHQ6QXJ9LDE3OntuOiJUaHVtYm5haWwiLHQ6''@;'; put 'put ''NzF9LDE4OntuOiJBcHBsaWNhdGlvbiIsdDo4MH0sMTk6e246IkRvY1NlY3VyaXR5Iix0OkFyfSwyNTU6e30sMjE0NzQ4MzY0ODp7bjoiTG9jYWxlIix0OjE5fSwyMTQ3NDgzNjUxOntuOiJCZWhhdmlvciIsdDoxOX0sMTkxOTA1NDQzNDp7fX0seHM9ezE6IlVTIiwyOiJDQSIsMzoiIiw3OiJS''@;'; put 'put ''VSIsMjA6IkVHIiwzMDoiR1IiLDMxOiJOTCIsMzI6IkJFIiwzMzoiRlIiLDM0OiJFUyIsMzY6IkhVIiwzOToiSVQiLDQxOiJDSCIsNDM6IkFUIiw0NDoiR0IiLDQ1OiJESyIsNDY6IlNFIiw0NzoiTk8iLDQ4OiJQTCIsNDk6IkRFIiw1MjoiTVgiLDU1OiJCUiIsNjE6IkFVIiw2NDoiTloiLDY2''@;'; put 'put ''OiJUSCIsODE6IkpQIiw4MjoiS1IiLDg0OiJWTiIsODY6IkNOIiw5MDoiVFIiLDEwNToiSlMiLDIxMzoiRFoiLDIxNjoiTUEiLDIxODoiTFkiLDM1MToiUFQiLDM1NDoiSVMiLDM1ODoiRkkiLDQyMDoiQ1oiLDg4NjoiVFciLDk2MToiTEIiLDk2MjoiSk8iLDk2MzoiU1kiLDk2NDoiSVEiLDk2''@;'; put 'put ''NToiS1ciLDk2NjoiU0EiLDk3MToiQUUiLDk3MjoiSUwiLDk3NDoiUUEiLDk4MToiSVIiLDY1NTM1OiJVUyJ9LG5sPVtudWxsLCJzb2xpZCIsIm1lZGl1bUdyYXkiLCJkYXJrR3JheSIsImxpZ2h0R3JheSIsImRhcmtIb3Jpem9udGFsIiwiZGFya1ZlcnRpY2FsIiwiZGFya0Rvd24iLCJkYXJr''@;'; put 'put ''VXAiLCJkYXJrR3JpZCIsImRhcmtUcmVsbGlzIiwibGlnaHRIb3Jpem9udGFsIiwibGlnaHRWZXJ0aWNhbCIsImxpZ2h0RG93biIsImxpZ2h0VXAiLCJsaWdodEdyaWQiLCJsaWdodFRyZWxsaXMiLCJncmF5MTI1IiwiZ3JheTA2MjUiXTtmdW5jdGlvbiBpbChlKXtyZXR1cm4gZS5tYXAoZnVu''@;'; put 'put ''Y3Rpb24odCl7cmV0dXJuW3Q+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdF19KX12YXIgVnQ9TWUoaWwoWzAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1''@;'; put 'put ''LDgzODg2MDgsMzI3NjgsMTI4LDg0MjEzNzYsODM4ODczNiwzMjg5NiwxMjYzMjI1Niw4NDIxNTA0LDEwMDY2NDMxLDEwMDQwMTY2LDE2Nzc3MTY0LDEzNDM0ODc5LDY2ODQ3NzQsMTY3NDQ1NzYsMjYzMTYsMTM0MjE4MjMsMTI4LDE2NzExOTM1LDE2Nzc2OTYwLDY1NTM1LDgzODg3MzYsODM4''@;'; put 'put ''ODYwOCwzMjg5NiwyNTUsNTI0NzksMTM0MzQ4NzksMTM0MzQ4MjgsMTY3NzcxMTMsMTAwNzk0ODcsMTY3NTEwNTIsMTM0MDg3NjcsMTY3NjQwNTcsMzM2ODcwMywzMzk0NzY0LDEwMDc5MjMyLDE2NzYzOTA0LDE2NzUwODQ4LDE2NzM3NzkyLDY3MTA5MzcsOTg2ODk1MCwxMzE1OCwzMzgxNjA2''@;'; put 'put ''LDEzMDU2LDMzNTUzOTIsMTAwNDAwNjQsMTAwNDAxNjYsMzM1NTU0NSwzMzU1NDQzLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pKSx4dD17MDoiI05VTEwhIiw3OiIjRElWLzAhIiwxNToiI1ZBTFVFISIsMjM6IiNSRUYhIiwyOToiI05BTUU/IiwzNjoiI05V''@;'; put 'put ''TSEiLDQyOiIjTi9BIiw0MzoiI0dFVFRJTkdfREFUQSIsMjU1OiIjV1RGPyJ9LGRzPXsiI05VTEwhIjowLCIjRElWLzAhIjo3LCIjVkFMVUUhIjoxNSwiI1JFRiEiOjIzLCIjTkFNRT8iOjI5LCIjTlVNISI6MzYsIiNOL0EiOjQyLCIjR0VUVElOR19EQVRBIjo0MywiI1dURj8iOjI1NX0sdm49''@;'; put 'put ''eyJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNh''@;'; put 'put ''dGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbCI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZp''@;'; put 'put ''Y2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCI6InNoZWV0cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNl''@;'; put 'put ''bC53b3Jrc2hlZXQiOiJzaGVldHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhXcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbCI6ImNoYXJ0cyIsImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5tcy1leGNlbC5jaGFydHNoZWV0IjoiY2hhcnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQreG1sIjoibWFjcm9zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXQiOiJtYWNyb3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuaW50bG1h''@;'; put 'put ''Y3Jvc2hlZXQiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4TXMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZGlhbG9nc2hlZXQreG1sIjoiZGlhbG9ncyIsImFwcGxpY2F0aW9uL3Zu''@;'; put 'put ''ZC5tcy1leGNlbC5kaWFsb2dzaGVldCI6ImRpYWxvZ3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRTdHJpbmdzK3htbCI6InN0cnMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hhcmVkU3RyaW5ncyI6InN0''@;'; put 'put ''cnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIjoic3R5bGVzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnN0eWxlcyI6InN0eWxlcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNr''@;'; put 'put ''YWdlLmNvcmUtcHJvcGVydGllcyt4bWwiOiJjb3JlcHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sIjoiY3VzdHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50''@;'; put 'put ''LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sIjoiZXh0cHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tWG1sUHJvcGVydGllcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNw''@;'; put 'put ''cmVhZHNoZWV0bWwuY3VzdG9tUHJvcGVydHkiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sIjoiY29tbWVudHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHMiOiJjb21tZW50''@;'; put 'put ''cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50aHJlYWRlZGNvbW1lbnRzK3htbCI6InRocmVhZGVkY29tbWVudHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGVyc29uK3htbCI6InBlb3BsZSIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5z''@;'; put 'put ''cHJlYWRzaGVldG1sLnNoZWV0TWV0YWRhdGEreG1sIjoibWV0YWRhdGEiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YSI6Im1ldGFkYXRhIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90VGFibGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxm''@;'; put 'put ''b3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydCt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFy''@;'; put 'put ''dGNvbG9yc3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRzdHlsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2FsY0NoYWluIjoiY2FsY2No''@;'; put 'put ''YWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNhbGNDaGFpbit4bWwiOiJjYWxjY2hhaW5zIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucHJpbnRlclNl''@;'; put 'put ''dHRpbmdzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZlWCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hdHRhY2hlZFRvb2xiYXJzIjoiVE9ETyIsImFwcGxpY2F0''@;'; put 'put ''aW9uL3ZuZC5tcy1leGNlbC5jb25uZWN0aW9ucyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmV4dGVybmFsTGluayI6Imxp''@;'; put 'put ''bmtzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxMaW5rK3htbCI6ImxpbmtzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0aW9uIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5t''@;'; put 'put ''cy1leGNlbC5waXZvdENhY2hlUmVjb3JkcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlRGVmaW5pdGlvbit4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmlj''@;'; put 'put ''ZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5xdWVyeVRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5''@;'; put 'put ''VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC51c2VyTmFtZXMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uSGVhZGVycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25Mb2ciOiJUT0RPIiwiYXBwbGlj''@;'; put 'put ''YXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25IZWFkZXJzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbkxvZyt4bWwiOiJUT0RP''@;'; put 'put ''IiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlck5hbWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVTaW5nbGVDZWxscyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQu''@;'; put 'put ''bXMtZXhjZWwuc2xpY2VyK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53c1NvcnRNYXAiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlIjoiVE9ETyIsImFw''@;'; put 'put ''cGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sIjoidGhlbWVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lT3ZlcnJpZGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lQ2FjaGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3Zu''@;'; put 'put ''ZC5tcy1vZmZpY2UudmJhUHJvamVjdCI6InZiYSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdFNpZ25hdHVyZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZvbGF0aWxlRGVwZW5kZW5jaWVzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlRGVwZW5kZW5jaWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29udHJvbHByb3BlcnRpZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vk''@;'; put 'put ''b2N1bWVudC5tb2RlbCtkYXRhIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5TdXJ2ZXkreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbCI6ImRyYXdpbmdzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54''@;'; put 'put ''bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3Blbnht''@;'; put 'put ''bGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5y''@;'; put 'put ''ZWxhdGlvbnNoaXBzK3htbCI6InJlbHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQub2xlT2JqZWN0IjoiVE9ETyIsImltYWdlL3BuZyI6IlRPRE8iLHNoZWV0OiJqcyJ9LGtlPXtXQjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29m''@;'; put 'put ''ZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsU0hFRVQ6Imh0dHA6Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLEhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVu''@;'; put 'put ''eG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGluayIsVk1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFhQQVRIOiJodHRwOi8vc2NoZW1h''@;'; put 'put ''cy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1BhdGgiLFhNSVNTOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3Np''@;'; put 'put ''bmciLFhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGluayIsQ1hNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlw''@;'; put 'put ''cy9jdXN0b21YbWwiLENYTUxQOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzIixDTU5UOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9y''@;'; put 'put ''ZWxhdGlvbnNoaXBzL2NvbW1lbnRzIixDT1JFX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixFWFRfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9y''@;'; put 'put ''Zy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIsQ1VTVF9QUk9QUzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcyIsU1NUOiJodHRw''@;'; put 'put ''Oi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiLFNUWToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiLFRIRU1F''@;'; put 'put ''OiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIixDSEFSVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydCIsQ0hBUlRF''@;'; put 'put ''WDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNC9yZWxhdGlvbnNoaXBzL2NoYXJ0RXgiLENTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXQiLFdTOlsiaHR0cDovL3Nj''@;'; put 'put ''aGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCJdLERTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1s''@;'; put 'put ''Zm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RpYWxvZ3NoZWV0IixNUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsTWFjcm9zaGVldCIsSU1HOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0''@;'; put 'put ''cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlIixEUkFXOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmciLFhMTUVUQToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1h''@;'; put 'put ''dHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGVldE1ldGFkYXRhIixUQ01OVDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudCIsUEVPUExFOiJodHRwOi8vc2NoZW1hcy5taWNy''@;'; put 'put ''b3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvcGVyc29uIixWQkE6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0In07ZnVuY3Rpb24gT2EoZSl7dmFyIHQ9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVy''@;'; put 'put ''biBlLnNsaWNlKDAsdCsxKSsiX3JlbHMvIitlLnNsaWNlKHQrMSkrIi5yZWxzIn1mdW5jdGlvbiBJYShlLHQpe3ZhciByPXsiIWlkIjp7fX07aWYoIWUpcmV0dXJuIHI7Ii8iIT09dC5jaGFyQXQoMCkmJih0PSIvIit0KTt2YXIgYT17fTtyZXR1cm4oZS5tYXRjaCh2cil8fFtdKS5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKG4pe3ZhciBpPW1lKG4pO2lmKCI8UmVsYXRpb25zaGlwIj09PWlbMF0pe3ZhciBzPXt9O3MuVHlwZT1pLlR5cGUscy5UYXJnZXQ9aS5UYXJnZXQscy5JZD1pLklkLGkuVGFyZ2V0TW9kZSYmKHMuVGFyZ2V0TW9kZT1pLlRhcmdldE1vZGUpO3ZhciBmPSJFeHRlcm5hbCI9PT1p''@;'; put 'put ''LlRhcmdldE1vZGU/aS5UYXJnZXQ6U2EoaS5UYXJnZXQsdCk7cltmXT1zLGFbaS5JZF09c319KSxyWyIhaWQiXT1hLHJ9dmFyIGNsPSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IixWcj1bWyJjcDpjYXRlZ29yeSIsIkNhdGVnb3J5Il0sWyJjcDpjb250''@;'; put 'put ''ZW50U3RhdHVzIiwiQ29udGVudFN0YXR1cyJdLFsiY3A6a2V5d29yZHMiLCJLZXl3b3JkcyJdLFsiY3A6bGFzdE1vZGlmaWVkQnkiLCJMYXN0QXV0aG9yIl0sWyJjcDpsYXN0UHJpbnRlZCIsIkxhc3RQcmludGVkIl0sWyJjcDpyZXZpc2lvbiIsIlJldk51bWJlciJdLFsiY3A6dmVyc2lvbiIs''@;'; put 'put ''IlZlcnNpb24iXSxbImRjOmNyZWF0b3IiLCJBdXRob3IiXSxbImRjOmRlc2NyaXB0aW9uIiwiQ29tbWVudHMiXSxbImRjOmlkZW50aWZpZXIiLCJJZGVudGlmaWVyIl0sWyJkYzpsYW5ndWFnZSIsIkxhbmd1YWdlIl0sWyJkYzpzdWJqZWN0IiwiU3ViamVjdCJdLFsiZGM6dGl0bGUiLCJUaXRs''@;'; put 'put ''ZSJdLFsiZGN0ZXJtczpjcmVhdGVkIiwiQ3JlYXRlZERhdGUiLCJkYXRlIl0sWyJkY3Rlcm1zOm1vZGlmaWVkIiwiTW9kaWZpZWREYXRlIiwiZGF0ZSJdXSxkbD1mdW5jdGlvbigpe2Zvcih2YXIgZT1uZXcgQXJyYXkoVnIubGVuZ3RoKSx0PTA7dDxWci5sZW5ndGg7Kyt0KXt2YXIgcj1Wclt0''@;'; put 'put ''XSxhPSIoPzoiK3JbMF0uc2xpY2UoMCxyWzBdLmluZGV4T2YoIjoiKSkrIjopIityWzBdLnNsaWNlKHJbMF0uaW5kZXhPZigiOiIpKzEpO2VbdF09bmV3IFJlZ0V4cCgiPCIrYSsiW14+XSo+KFtcXHNcXFNdKj8pPC8iK2ErIj4iKX1yZXR1cm4gZX0oKTtmdW5jdGlvbiBtcyhlKXt2YXIgdD17''@;'; put 'put ''fTtlPUJlKGUpO2Zvcih2YXIgcj0wO3I8VnIubGVuZ3RoOysrcil7dmFyIGE9VnJbcl0sbj1lLm1hdGNoKGRsW3JdKTtudWxsIT1uJiZuLmxlbmd0aD4wJiYodFthWzFdXT1JZShuWzFdKSksImRhdGUiPT09YVsyXSYmdFthWzFdXSYmKHRbYVsxXV09WGUodFthWzFdXSkpfXJldHVybiB0fXZh''@;'; put 'put ''ciBYdD1bWyJBcHBsaWNhdGlvbiIsIkFwcGxpY2F0aW9uIiwic3RyaW5nIl0sWyJBcHBWZXJzaW9uIiwiQXBwVmVyc2lvbiIsInN0cmluZyJdLFsiQ29tcGFueSIsIkNvbXBhbnkiLCJzdHJpbmciXSxbIkRvY1NlY3VyaXR5IiwiRG9jU2VjdXJpdHkiLCJzdHJpbmciXSxbIk1hbmFnZXIiLCJN''@;'; put 'put ''YW5hZ2VyIiwic3RyaW5nIl0sWyJIeXBlcmxpbmtzQ2hhbmdlZCIsIkh5cGVybGlua3NDaGFuZ2VkIiwiYm9vbCJdLFsiU2hhcmVkRG9jIiwiU2hhcmVkRG9jIiwiYm9vbCJdLFsiTGlua3NVcFRvRGF0ZSIsIkxpbmtzVXBUb0RhdGUiLCJib29sIl0sWyJTY2FsZUNyb3AiLCJTY2FsZUNyb3Ai''@;'; put 'put ''LCJib29sIl0sWyJIZWFkaW5nUGFpcnMiLCJIZWFkaW5nUGFpcnMiLCJyYXciXSxbIlRpdGxlc09mUGFydHMiLCJUaXRsZXNPZlBhcnRzIiwicmF3Il1dO2Z1bmN0aW9uIHdzKGUsdCxyLGEpe3ZhciBuPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgZSluPUhpKGUsYSk7ZWxzZSBmb3IodmFyIGk9''@;'; put 'put ''MDtpPGUubGVuZ3RoOysraSluPW4uY29uY2F0KGVbaV0ubWFwKGZ1bmN0aW9uKGwpe3JldHVybnt2Omx9fSkpO3ZhciBzPSJzdHJpbmciPT10eXBlb2YgdD9IaSh0LGEpLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gbC52fSk6dCxmPTAsYz0wO2lmKHMubGVuZ3RoPjApZm9yKHZhciBvPTA7byE9''@;'; put 'put ''PW4ubGVuZ3RoO28rPTIpe3N3aXRjaChjPStuW28rMV0udixuW29dLnYpe2Nhc2UiV29ya3NoZWV0cyI6Y2FzZSJcdTVkZTVcdTRmNWNcdTg4NjgiOmNhc2UiXHUwNDFiXHUwNDM4XHUwNDQxXHUwNDQyXHUwNDRiIjpjYXNlIlx1MDYyM1x1MDY0OFx1MDYzMVx1MDYyN1x1MDY0MiBcdTA2Mjdc''@;'; put 'put ''dTA2NDRcdTA2MzlcdTA2NDVcdTA2NDQiOmNhc2UiXHUzMGVmXHUzMGZjXHUzMGFmXHUzMGI3XHUzMGZjXHUzMGM4IjpjYXNlIlx1MDVkMlx1MDVkY1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkNVx1MDVlYSBcdTA1ZTJcdTA1ZDFcdTA1ZDVcdTA1ZDNcdTA1ZDQiOmNhc2UiQXJiZWl0c2JsXHhl''@;'; put 'put ''NHR0ZXIiOmNhc2UiXHhjN2FsXHUwMTMxXHUwMTVmbWEgU2F5ZmFsYXJcdTAxMzEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY1x4ZTFsY3VsbyI6Y2FzZSJQbGFuaWxoYXMiOmNhc2UiUmVnbmVhcmsiOmNhc2UiSG9qYXMg''@;'; put 'put ''ZGUgY1x4ZTFsY3VsbyI6Y2FzZSJXZXJrYmxhZGVuIjpyLldvcmtzaGVldHM9YyxyLlNoZWV0TmFtZXM9cy5zbGljZShmLGYrYyk7YnJlYWs7Y2FzZSJOYW1lZCBSYW5nZXMiOmNhc2UiUmFuZ29zIGNvbiBub21icmUiOmNhc2UiXHU1NDBkXHU1MjRkXHU0ZWQ4XHUzMDRkXHU0ZTAwXHU4OWE3''@;'; put 'put ''IjpjYXNlIkJlbmFubnRlIEJlcmVpY2hlIjpjYXNlIk5hdm5naXZuZSBvbXJceGU1ZGVyIjpyLk5hbWVkUmFuZ2VzPWMsci5EZWZpbmVkTmFtZXM9cy5zbGljZShmLGYrYyk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjpyLkNoYXJ0c2hlZXRzPWMsci5DaGFydE5hbWVzPXMu''@;'; put 'put ''c2xpY2UoZixmK2MpfWYrPWN9fXZhciBfbixwbD0vPFtePl0rPltePF0qL2csZ249e1RpdGxlOiJUaXRsZSIsU3ViamVjdDoiU3ViamVjdCIsQXV0aG9yOiJBdXRob3IiLEtleXdvcmRzOiJLZXl3b3JkcyIsQ29tbWVudHM6IkRlc2NyaXB0aW9uIixMYXN0QXV0aG9yOiJMYXN0QXV0aG9yIixS''@;'; put 'put ''ZXZOdW1iZXI6IlJldmlzaW9uIixBcHBsaWNhdGlvbjoiQXBwTmFtZSIsTGFzdFByaW50ZWQ6Ikxhc3RQcmludGVkIixDcmVhdGVkRGF0ZToiQ3JlYXRlZCIsTW9kaWZpZWREYXRlOiJMYXN0U2F2ZWQiLENhdGVnb3J5OiJDYXRlZ29yeSIsTWFuYWdlcjoiTWFuYWdlciIsQ29tcGFueToiQ29t''@;'; put 'put ''cGFueSIsQXBwVmVyc2lvbjoiVmVyc2lvbiIsQ29udGVudFN0YXR1czoiQ29udGVudFN0YXR1cyIsSWRlbnRpZmllcjoiSWRlbnRpZmllciIsTGFuZ3VhZ2U6Ikxhbmd1YWdlIn07ZnVuY3Rpb24gZ2woZSx0LHIpe19ufHwoX249czAoZ24pKSxlW3Q9X25bdF18fHRdPXJ9ZnVuY3Rpb24gd24o''@;'; put 'put ''ZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBuZXcgRGF0ZSgxZTMqKHIvMWU3Kk1hdGgucG93KDIsMzIpK3QvMWU3LTExNjQ0NDczNjAwKSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIFRzKGUsdCxyKXt2YXIgYT1l''@;'; put 'put ''Lmwsbj1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihyKWZvcig7ZS5sLWEmMzspKytlLmw7cmV0dXJuIG59ZnVuY3Rpb24gU3MoZSx0LHIpe3ZhciBhPWUucmVhZF9zaGlmdCgwLCJscHdzdHIiKTtyZXR1cm4gciYmKGUubCs9NC0oYS5sZW5ndGgrMSYzKSYzKSxhfWZ1bmN0aW9uIEZz''@;'; put 'put ''KGUsdCxyKXtyZXR1cm4gMzE9PT10P1NzKGUpOlRzKGUsMCxyKX1mdW5jdGlvbiBrbihlLHQscil7cmV0dXJuIEZzKGUsdCwhMT09PXI/MDo0KX1mdW5jdGlvbiBGbChlKXt2YXIgdD1lLmwscj1fMChlLGhzKTtyZXR1cm4gMD09ZVtlLmxdJiYwPT1lW2UubCsxXSYmZS5sLXQmMiYmKGUubCs9''@;'; put 'put ''MiksW3IsXzAoZSxBcildfWZ1bmN0aW9uIHlzKGUsdCl7Zm9yKHZhciByPWUucmVhZF9zaGlmdCg0KSxhPXt9LG49MDtuIT1yOysrbil7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLHM9ZS5yZWFkX3NoaWZ0KDQpO2FbaV09ZS5yZWFkX3NoaWZ0KHMsMTIwMD09PXQ/InV0ZjE2bGUiOiJ1dGY4Iiku''@;'; put 'put ''cmVwbGFjZShkciwiIikucmVwbGFjZSh3YSwiISIpLDEyMDA9PT10JiZzJTImJihlLmwrPTIpfXJldHVybiAzJmUubCYmKGUubD1lLmw+PjM8PDIpLGF9ZnVuY3Rpb24gQXMoZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLHI9ZS5zbGljZShlLmwsZS5sK3QpO3JldHVybiBlLmwrPXQsKDMmdCk+''@;'; put 'put ''MCYmKGUubCs9NC0oMyZ0KSYzKSxyfWZ1bmN0aW9uIF8wKGUsdCxyKXt2YXIgbixhPWUucmVhZF9zaGlmdCgyKSxpPXJ8fHt9O2lmKGUubCs9Mix0IT09dXMmJmEhPT10JiYtMT09PWFsLmluZGV4T2YodCkmJig0MTI2IT0oNjU1MzQmdCl8fDQxMjYhPSg2NTUzNCZhKSkpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJFeHBlY3RlZCB0eXBlICIrdCsiIHNhdyAiK2EpO3N3aXRjaCh0PT09dXM/YTp0KXtjYXNlIDI6cmV0dXJuIG49ZS5yZWFkX3NoaWZ0KDIsImkiKSxpLnJhd3x8KGUubCs9MiksbjtjYXNlIDM6cmV0dXJuIGUucmVhZF9zaGlmdCg0LCJpIik7Y2FzZSAxMTpyZXR1cm4gMCE9PWUucmVh''@;'; put 'put ''ZF9zaGlmdCg0KTtjYXNlIDE5OnJldHVybiBlLnJlYWRfc2hpZnQoNCk7Y2FzZSAzMDpyZXR1cm4gVHMoZSwwLDQpLnJlcGxhY2UoZHIsIiIpO2Nhc2UgMzE6cmV0dXJuIFNzKGUpO2Nhc2UgNjQ6cmV0dXJuIHduKGUpO2Nhc2UgNjU6cmV0dXJuIEFzKGUpO2Nhc2UgNzE6cmV0dXJuIGZ1bmN0''@;'; put 'put ''aW9uIEFsKGUpe3ZhciB0PXt9O3JldHVybiB0LlNpemU9ZS5yZWFkX3NoaWZ0KDQpLGUubCs9dC5TaXplKzMtKHQuU2l6ZS0xKSU0LHR9KGUpO2Nhc2UgODA6cmV0dXJuIGtuKGUsYSwhaS5yYXcpLnJlcGxhY2UoZHIsIiIpO2Nhc2UgODE6cmV0dXJuIGZ1bmN0aW9uIEVsKGUsdCl7aWYoIXQp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJWdFVuYWxpZ25lZFN0cmluZyBtdXN0IGhhdmUgcG9zaXRpdmUgbGVuZ3RoIik7cmV0dXJuIEZzKGUsdCwwKX0oZSxhKS5yZXBsYWNlKGRyLCIiKTtjYXNlIDQxMDg6cmV0dXJuIGZ1bmN0aW9uIHlsKGUpe2Zvcih2YXIgdD1lLnJlYWRfc2hpZnQoNCkscj1bXSxh''@;'; put 'put ''PTA7YTx0LzI7KythKXIucHVzaChGbChlKSk7cmV0dXJuIHJ9KGUpO2Nhc2UgNDEyNjpjYXNlIDQxMjc6cmV0dXJuIDQxMjc9PWE/ZnVuY3Rpb24gVGwoZSl7Zm9yKHZhciB0PWUucmVhZF9zaGlmdCg0KSxyPVtdLGE9MDthIT10OysrYSl7dmFyIG49ZS5sO3JbYV09ZS5yZWFkX3NoaWZ0KDAs''@;'; put 'put ''Imxwd3N0ciIpLnJlcGxhY2UoZHIsIiIpLGUubC1uJjImJihlLmwrPTIpfXJldHVybiByfShlKTpmdW5jdGlvbiBTbChlKXtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLHI9W10sYT0wO2EhPXQ7KythKXJbYV09ZS5yZWFkX3NoaWZ0KDAsImxwc3RyLWNwIikucmVwbGFjZShkciwiIik7cmV0''@;'; put 'put ''dXJuIHJ9KGUpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIit0KyIgIithKX19ZnVuY3Rpb24gRHMoZSx0KXt2YXIgcj1lLmwsYT1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCksaT1bXSxzPTAsZj0wLGM9LTEs''@;'; put 'put ''bz17fTtmb3Iocz0wO3MhPW47KytzKXt2YXIgbD1lLnJlYWRfc2hpZnQoNCksaD1lLnJlYWRfc2hpZnQoNCk7aVtzXT1bbCxoK3JdfWkuc29ydChmdW5jdGlvbihULGcpe3JldHVybiBUWzFdLWdbMV19KTt2YXIgeD17fTtmb3Iocz0wO3MhPW47KytzKXtpZihlLmwhPT1pW3NdWzFdKXt2YXIg''@;'; put 'put ''ZD0hMDtpZihzPjAmJnQpc3dpdGNoKHRbaVtzLTFdWzBdXS50KXtjYXNlIDI6ZS5sKzI9PT1pW3NdWzFdJiYoZS5sKz0yLGQ9ITEpO2JyZWFrO2Nhc2UgODA6Y2FzZSA0MTA4OmUubDw9aVtzXVsxXSYmKGUubD1pW3NdWzFdLGQ9ITEpfWlmKCghdHx8MD09cykmJmUubDw9aVtzXVsxXSYmKGQ9''@;'; put 'put ''ITEsZS5sPWlbc11bMV0pLGQpdGhyb3cgbmV3IEVycm9yKCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzICIraVtzXVsxXSsiIGF0ICIrZS5sKyIgOiIrcyl9aWYodCl7dmFyIHY9dFtpW3NdWzBdXTtpZih4W3Yubl09XzAoZSx2LnQse3JhdzohMH0pLCJ2ZXJzaW9uIj09PXYucCYmKHhb''@;'; put 'put ''di5uXT1TdHJpbmcoeFt2Lm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKDY1NTM1Jnhbdi5uXSkpLnNsaWNlKC00KSksIkNvZGVQYWdlIj09di5uKXN3aXRjaCh4W3Yubl0pe2Nhc2UgMDp4W3Yubl09MTI1MjtjYXNlIDg3NDpjYXNlIDkzMjpjYXNlIDkzNjpjYXNlIDk0OTpjYXNlIDk1MDpj''@;'; put 'put ''YXNlIDEyNTA6Y2FzZSAxMjUxOmNhc2UgMTI1MzpjYXNlIDEyNTQ6Y2FzZSAxMjU1OmNhc2UgMTI1NjpjYXNlIDEyNTc6Y2FzZSAxMjU4OmNhc2UgMWU0OmNhc2UgMTIwMDpjYXNlIDEyMDE6Y2FzZSAxMjUyOmNhc2UgNjVlMzpjYXNlLTUzNjpjYXNlIDY1MDAxOmNhc2UtNTM1Ok1yKGY9eFt2''@;'; put 'put ''Lm5dPj4+MCY2NTUzNSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvZGVQYWdlOiAiK3hbdi5uXSl9fWVsc2UgaWYoMT09PWlbc11bMF0pe2lmKGY9eC5Db2RlUGFnZT1fMChlLGhuKSxNcihmKSwtMSE9PWMpe3ZhciB1PWUubDtlLmw9aVtjXVsxXSxvPXlz''@;'; put 'put ''KGUsZiksZS5sPXV9fWVsc2UgaWYoMD09PWlbc11bMF0pe2lmKDA9PT1mKXtjPXMsZS5sPWlbcysxXVsxXTtjb250aW51ZX1vPXlzKGUsZil9ZWxzZXt2YXIgayxwPW9baVtzXVswXV07c3dpdGNoKGVbZS5sXSl7Y2FzZSA2NTplLmwrPTQsaz1BcyhlKTticmVhaztjYXNlIDMwOmNhc2UgMzE6''@;'; put 'put ''ZS5sKz00LGs9a24oZSxlW2UubC00XSkucmVwbGFjZSgvXHUwMDAwKyQvLCIiKTticmVhaztjYXNlIDM6ZS5sKz00LGs9ZS5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIDE5OmUubCs9NCxrPWUucmVhZF9zaGlmdCg0KTticmVhaztjYXNlIDU6ZS5sKz00LGs9ZS5yZWFkX3NoaWZ0KDgs''@;'; put 'put ''ImYiKTticmVhaztjYXNlIDExOmUubCs9NCxrPUplKGUsNCk7YnJlYWs7Y2FzZSA2NDplLmwrPTQsaz1YZSh3bihlKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVucGFyc2VkIHZhbHVlOiAiK2VbZS5sXSl9eFtwXT1rfX1yZXR1cm4gZS5sPXIrYSx4fWZ1bmN0aW9uIFJzKGUs''@;'; put 'put ''dCxyKXt2YXIgYT1lLmNvbnRlbnQ7aWYoIWEpcmV0dXJue307aHIoYSwwKTt2YXIgbixpLHMsZixjPTA7YS5jaGsoImZlZmYiLCJCeXRlIE9yZGVyOiAiKSxhLnJlYWRfc2hpZnQoMik7dmFyIG89YS5yZWFkX3NoaWZ0KDQpLGw9YS5yZWFkX3NoaWZ0KDE2KTtpZihsIT09dmUudXRpbHMuY29u''@;'; put 'put ''c3RzLkhFQURFUl9DTFNJRCYmbCE9PXIpdGhyb3cgbmV3IEVycm9yKCJCYWQgUHJvcGVydHlTZXQgQ0xTSUQgIitsKTtpZigxIT09KG49YS5yZWFkX3NoaWZ0KDQpKSYmMiE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgI1NldHM6ICIrbik7aWYoaT1hLnJlYWRfc2hpZnQoMTYp''@;'; put 'put ''LGY9YS5yZWFkX3NoaWZ0KDQpLDE9PT1uJiZmIT09YS5sKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoOiAiK2YrIiAhPT0gIithLmwpOzI9PT1uJiYocz1hLnJlYWRfc2hpZnQoMTYpLGM9YS5yZWFkX3NoaWZ0KDQpKTt2YXIgdixoPURzKGEsdCkseD17U3lzdGVtSWRlbnRpZmll''@;'; put 'put ''cjpvfTtmb3IodmFyIGQgaW4gaCl4W2RdPWhbZF07aWYoeC5GTVRJRD1pLDE9PT1uKXJldHVybiB4O2lmKGMtYS5sPT0yJiYoYS5sKz0yKSxhLmwhPT1jKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrYS5sKyIgIT09ICIrYyk7dHJ5e3Y9RHMoYSxudWxsKX1jYXRjaHt9''@;'; put 'put ''Zm9yKGQgaW4gdil4W2RdPXZbZF07cmV0dXJuIHguRk1USUQ9W2ksc10seH1mdW5jdGlvbiB5dChlLHQpe3JldHVybiBlLnJlYWRfc2hpZnQodCksbnVsbH1mdW5jdGlvbiBKZShlLHQpe3JldHVybiAxPT09ZS5yZWFkX3NoaWZ0KHQpfWZ1bmN0aW9uIHRyKGUpe3JldHVybiBlLnJlYWRfc2hp''@;'; put 'put ''ZnQoMiwidSIpfWZ1bmN0aW9uIGJzKGUsdCl7cmV0dXJuIGZ1bmN0aW9uIE9sKGUsdCxyKXtmb3IodmFyIGE9W10sbj1lLmwrdDtlLmw8bjspYS5wdXNoKHIoZSxuLWUubCkpO2lmKG4hPT1lLmwpdGhyb3cgbmV3IEVycm9yKCJTbHVycCBlcnJvciIpO3JldHVybiBhfShlLHQsdHIpfWZ1bmN0''@;'; put 'put ''aW9uIFJhKGUsdCxyKXt2YXIgYT1lLnJlYWRfc2hpZnQociYmci5iaWZmPj0xMj8yOjEpLG49InNiY3MtY29udCIsaT1EcjtyJiZyLmJpZmY+PTgmJihEcj0xMjAwKSxyJiY4IT1yLmJpZmY/MTI9PXIuYmlmZiYmKG49IndzdHIiKTplLnJlYWRfc2hpZnQoMSkmJihuPSJkYmNzLWNvbnQiKSxy''@;'; put 'put ''LmJpZmY+PTImJnIuYmlmZjw9NSYmKG49ImNwc3RyIik7dmFyIGY9YT9lLnJlYWRfc2hpZnQoYSxuKToiIjtyZXR1cm4gRHI9aSxmfWZ1bmN0aW9uIFJsKGUpe3ZhciB0PURyO0RyPTEyMDA7dmFyIGMscj1lLnJlYWRfc2hpZnQoMiksYT1lLnJlYWRfc2hpZnQoMSksbj00JmEsaT04JmEscz0x''@;'; put 'put ''KygxJmEpLGY9MCxvPXt9O2kmJihmPWUucmVhZF9zaGlmdCgyKSksbiYmKGM9ZS5yZWFkX3NoaWZ0KDQpKTt2YXIgaD0wPT09cj8iIjplLnJlYWRfc2hpZnQociwyPT1zPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKTtyZXR1cm4gaSYmKGUubCs9NCpmKSxuJiYoZS5sKz1jKSxvLnQ9aCxpfHwo''@;'; put 'put ''by5yYXc9Ijx0PiIrby50KyI8L3Q+IixvLnI9by50KSxEcj10LG99ZnVuY3Rpb24gR3QoZSx0LHIpe2lmKHIpe2lmKHIuYmlmZj49MiYmci5iaWZmPD01KXJldHVybiBlLnJlYWRfc2hpZnQodCwiY3BzdHIiKTtpZihyLmJpZmY+PTEyKXJldHVybiBlLnJlYWRfc2hpZnQodCwiZGJjcy1jb250''@;'; put 'put ''Iil9dmFyIG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLnJlYWRfc2hpZnQodCwwPT09bj8ic2Jjcy1jb250IjoiZGJjcy1jb250Iil9ZnVuY3Rpb24gTmEoZSx0LHIpe3ZhciBhPWUucmVhZF9zaGlmdChyJiYyPT1yLmJpZmY/MToyKTtyZXR1cm4gMD09PWE/KGUubCsrLCIiKTpHdChlLGEs''@;'; put 'put ''cil9ZnVuY3Rpb24genQoZSx0LHIpe2lmKHIuYmlmZj41KXJldHVybiBOYShlLDAscik7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiAwPT09YT8oZS5sKyssIiIpOmUucmVhZF9zaGlmdChhLHIuYmlmZjw9NHx8IWUubGVucz8iY3BzdHIiOiJzYmNzLWNvbnQiKX1mdW5jdGlvbiB3MChl''@;'; put 'put ''KXt2YXIgdD1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIHQ+MD9lLnJlYWRfc2hpZnQodCwidXRmMTZsZSIpLnJlcGxhY2UoZHIsIiIpOiIifWZ1bmN0aW9uIE1zKGUpe3JldHVybltlLnJlYWRfc2hpZnQoMSksZS5yZWFkX3NoaWZ0KDEpLGUucmVhZF9zaGlmdCgxKSxlLnJlYWRfc2hpZnQoMSld''@;'; put 'put ''fWZ1bmN0aW9uIFVzKGUsdCl7dmFyIHI9TXMoZSk7cmV0dXJuIHJbM109MCxyfWZ1bmN0aW9uIG50KGUpe3JldHVybntyOmUucmVhZF9zaGlmdCgyKSxjOmUucmVhZF9zaGlmdCgyKSxpeGZlOmUucmVhZF9zaGlmdCgyKX19ZnVuY3Rpb24gVmwoZSx0LHIpe3ZhciBhPXIuYmlmZj44PzQ6Mjty''@;'; put 'put ''ZXR1cm5bZS5yZWFkX3NoaWZ0KGEpLGUucmVhZF9zaGlmdChhLCJpIiksZS5yZWFkX3NoaWZ0KGEsImkiKV19ZnVuY3Rpb24gV3MoZSl7cmV0dXJuW2UucmVhZF9zaGlmdCgyKSx1bihlKV19ZnVuY3Rpb24gazAoZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3Jl''@;'; put 'put ''dHVybntzOntjOmUucmVhZF9zaGlmdCgyKSxyOnR9LGU6e2M6ZS5yZWFkX3NoaWZ0KDIpLHJ9fX1mdW5jdGlvbiBWcyhlKXt2YXIgdD1lLnJlYWRfc2hpZnQoMikscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6ZS5yZWFkX3NoaWZ0KDEpLHI6dH0sZTp7YzplLnJlYWRfc2hpZnQoMSks''@;'; put 'put ''cn19fXZhciBHbD1WcztmdW5jdGlvbiBYcyhlKXtlLmwrPTQ7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTEyLFtyLHQsYV19ZnVuY3Rpb24gX3IoZSl7ZS5sKz0yLGUubCs9ZS5yZWFkX3NoaWZ0KDIpfXZhciBq''@;'; put 'put ''bD17MDpfciw0Ol9yLDU6X3IsNjpfciw3OmZ1bmN0aW9uICRsKGUpe3JldHVybiBlLmwrPTQsZS5jZj1lLnJlYWRfc2hpZnQoMikse319LDg6X3IsOTpfciwxMDpfciwxMTpfciwxMjpfciwxMzpmdW5jdGlvbiB6bChlKXt2YXIgdD17fTtyZXR1cm4gZS5sKz00LGUubCs9MTYsdC5mU2hhcmVk''@;'; put 'put ''Tm90ZT1lLnJlYWRfc2hpZnQoMiksZS5sKz00LHR9LDE0Ol9yLDE1Ol9yLDE2Ol9yLDE3Ol9yLDE4Ol9yLDE5Ol9yLDIwOl9yLDIxOlhzfTtmdW5jdGlvbiBFMChlLHQpe3ZhciByPXtCSUZGVmVyOjAsZHQ6MH07c3dpdGNoKHIuQklGRlZlcj1lLnJlYWRfc2hpZnQoMiksKHQtPTIpPj0yJiYo''@;'; put 'put ''ci5kdD1lLnJlYWRfc2hpZnQoMiksZS5sLT0yKSxyLkJJRkZWZXIpe2Nhc2UgMTUzNjpjYXNlIDEyODA6Y2FzZSAxMDI0OmNhc2UgNzY4OmNhc2UgNTEyOmNhc2UgMjpjYXNlIDc6YnJlYWs7ZGVmYXVsdDppZih0PjYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIEJJRkYgVmVyICIrci5C''@;'; put 'put ''SUZGVmVyKX1yZXR1cm4gZS5yZWFkX3NoaWZ0KHQpLHJ9ZnVuY3Rpb24gR3MoZSx0LHIpe3ZhciBhPTA7ciYmMj09ci5iaWZmfHwoYT1lLnJlYWRfc2hpZnQoMikpO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gciYmMj09ci5iaWZmJiYoYT0xLShuPj4xNSksbiY9MzI3NjcpLFt7VW5z''@;'; put 'put ''eW5jZWQ6MSZhLER5WmVybzooMiZhKT4+MSxFeEFzYzooNCZhKT4+MixFeERzYzooOCZhKT4+M30sbl19dmFyIHd1PXp0O2Z1bmN0aW9uIHpzKGUsdCxyKXt2YXIgYT1lLmwrdCxuPTghPXIuYmlmZiYmci5iaWZmPzI6NCxpPWUucmVhZF9zaGlmdChuKSxzPWUucmVhZF9zaGlmdChuKSxmPWUu''@;'; put 'put ''cmVhZF9zaGlmdCgyKSxjPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sPWEse3M6e3I6aSxjOmZ9LGU6e3I6cyxjfX19ZnVuY3Rpb24ganMoZSx0LHIpe3ZhciBhPW50KGUpOygyPT1yLmJpZmZ8fDk9PXQpJiYrK2UubDt2YXIgbj1mdW5jdGlvbiBJbChlKXt2YXIgdD1lLnJlYWRfc2hpZnQo''@;'; put 'put ''MSk7cmV0dXJuIDE9PT1lLnJlYWRfc2hpZnQoMSk/dDoxPT09dH0oZSk7cmV0dXJuIGEudmFsPW4sYS50PSEwPT09bnx8ITE9PT1uPyJiIjoiZSIsYX12YXIgS3M9ZnVuY3Rpb24gSGwoZSx0LHIpe3JldHVybiAwPT09dD8iIjp6dChlLDAscil9O2Z1bmN0aW9uIFlzKGUsdCxyKXt2YXIgbixh''@;'; put 'put ''PWUucmVhZF9zaGlmdCgyKSxpPXtmQnVpbHRJbjoxJmEsZldhbnRBZHZpc2U6YT4+PjEmMSxmV2FudFBpY3Q6YT4+PjImMSxmT2xlOmE+Pj4zJjEsZk9sZUxpbms6YT4+PjQmMSxjZjphPj4+NSYxMDIzLGZJY29uOmE+Pj4xNSYxfTtyZXR1cm4gMTQ4NDk9PT1yLnNiY2NoJiYobj1mdW5jdGlv''@;'; put 'put ''biBYbChlLHQscil7ZS5sKz00O3ZhciBhPWUubCsodC09NCksbj1SYShlLDAsciksaT1lLnJlYWRfc2hpZnQoMik7aWYoaSE9PShhLT1lLmwpKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIEFkZGluVWRmOiBwYWRkaW5nID0gIithKyIgIT0gIitpKTtyZXR1cm4gZS5sKz1pLG59KGUsdC0y''@;'; put 'put ''LHIpKSxpLmJvZHk9bnx8ZS5yZWFkX3NoaWZ0KHQtMiksInN0cmluZyI9PXR5cGVvZiBuJiYoaS5OYW1lPW4pLGl9dmFyIE51PVsiX3hsbm0uQ29uc29saWRhdGVfQXJlYSIsIl94bG5tLkF1dG9fT3BlbiIsIl94bG5tLkF1dG9fQ2xvc2UiLCJfeGxubS5FeHRyYWN0IiwiX3hsbm0uRGF0YWJh''@;'; put 'put ''c2UiLCJfeGxubS5Dcml0ZXJpYSIsIl94bG5tLlByaW50X0FyZWEiLCJfeGxubS5QcmludF9UaXRsZXMiLCJfeGxubS5SZWNvcmRlciIsIl94bG5tLkRhdGFfRm9ybSIsIl94bG5tLkF1dG9fQWN0aXZhdGUiLCJfeGxubS5BdXRvX0RlYWN0aXZhdGUiLCJfeGxubS5TaGVldF9UaXRsZSIsIl94''@;'; put 'put ''bG5tLl9GaWx0ZXJEYXRhYmFzZSJdO2Z1bmN0aW9uIEpzKGUsdCxyKXt2YXIgYT1lLmwrdCxuPWUucmVhZF9zaGlmdCgyKSxpPWUucmVhZF9zaGlmdCgxKSxzPWUucmVhZF9zaGlmdCgxKSxmPWUucmVhZF9zaGlmdChyJiYyPT1yLmJpZmY/MToyKSxjPTA7KCFyfHxyLmJpZmY+PTUpJiYoNSE9''@;'; put 'put ''ci5iaWZmJiYoZS5sKz0yKSxjPWUucmVhZF9zaGlmdCgyKSw1PT1yLmJpZmYmJihlLmwrPTIpLGUubCs9NCk7dmFyIG89R3QoZSxzLHIpOzMyJm4mJihvPU51W28uY2hhckNvZGVBdCgwKV0pO3ZhciBsPWEtZS5sO3ImJjI9PXIuYmlmZiYmLS1sO3ZhciBoPWEhPWUubCYmMCE9PWYmJmw+MD9m''@;'; put 'put ''dW5jdGlvbiBLZChlLHQscixhKXt2YXIgcyxuPWUubCt0LGk9SGEoZSxhLHIpO3JldHVybiBuIT09ZS5sJiYocz1XYShlLG4tZS5sLGkscikpLFtpLHNdfShlLGwscixmKTpbXTtyZXR1cm57Y2hLZXk6aSxOYW1lOm8saXRhYjpjLHJnY2U6aH19ZnVuY3Rpb24gcXMoZSx0LHIpe2lmKHIuYmlm''@;'; put 'put ''Zjw4KXJldHVybiBmdW5jdGlvbiBidShlLHQscil7Mz09ZVtlLmwrMV0mJmVbZS5sXSsrO3ZhciBhPVJhKGUsMCxyKTtyZXR1cm4gMz09YS5jaGFyQ29kZUF0KDApP2Euc2xpY2UoMSk6YX0oZSwwLHIpO2Zvcih2YXIgYT1bXSxuPWUubCt0LGk9ZS5yZWFkX3NoaWZ0KHIuYmlmZj44PzQ6Mik7''@;'; put 'put ''MCE9aS0tOylhLnB1c2goVmwoZSwwLHIpKTtpZihlLmwhPW4pdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIrZS5sKyIgIT0gIituKTtyZXR1cm4gYX1mdW5jdGlvbiBacyhlLHQscil7dmFyIGE9R2woZSw2KTtzd2l0Y2goci5iaWZmKXtjYXNlIDI6ZS5sKyssdC09NzticmVh''@;'; put 'put ''aztjYXNlIDM6Y2FzZSA0OmUubCs9Mix0LT04O2JyZWFrO2RlZmF1bHQ6ZS5sKz02LHQtPTEyfXJldHVyblthLCRkKGUsdCxyKV19dmFyIFh1PXs4OmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5sK3Q7ZS5sKz0xMDt2YXIgYT1lLnJlYWRfc2hpZnQoMik7ZS5sKz00LGUubCs9MixlLmwrPTIsZS5s''@;'; put 'put ''Kz0yLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGUubCs9bixlLmw9cix7Zm10OmF9fX07ZnVuY3Rpb24gUXMoZSx0LHIpe2lmKCFyLmNlbGxTdHlsZXMpcmV0dXJuIHByKGUsdCk7dmFyIGE9ciYmci5iaWZmPj0xMj80OjIsbj1lLnJlYWRfc2hpZnQoYSksaT1lLnJlYWRf''@;'; put 'put ''c2hpZnQoYSkscz1lLnJlYWRfc2hpZnQoYSksZj1lLnJlYWRfc2hpZnQoYSksYz1lLnJlYWRfc2hpZnQoMik7Mj09YSYmKGUubCs9Mik7dmFyIG89e3M6bixlOmksdzpzLGl4ZmU6ZixmbGFnczpjfTtyZXR1cm4oci5iaWZmPj01fHwhci5iaWZmKSYmKG8ubGV2ZWw9Yz4+OCY3KSxvfXZhciBp''@;'; put 'put ''aD1udCxzaD1icyxmaD1OYSxtaD1bMiwzLDQ4LDQ5LDEzMSwxMzksMTQwLDI0NV0sVG49ZnVuY3Rpb24oKXt2YXIgZT17MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1NywxMjA6OTUw''@;'; put 'put ''LDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyNyw4Ojg2NSw5OjQzNywxMDo4NTAsMTE6NDM3LDEzOjQzNywxNDo4NTAs''@;'; put 'put ''MTU6NDM3LDE2Ojg1MCwxNzo0MzcsMTg6ODUwLDE5OjkzMiwyMDo4NTAsMjE6NDM3LDIyOjg1MCwyMzo4NjUsMjQ6NDM3LDI1OjQzNywyNjo4NTAsMjc6NDM3LDI4Ojg2MywyOTo4NTAsMzE6ODUyLDM0Ojg1MiwzNTo4NTIsMzY6ODYwLDM3Ojg1MCwzODo4NjYsNTU6ODUwLDY0Ojg1Miw3Nzo5''@;'; put 'put ''MzYsNzg6OTQ5LDc5Ojk1MCw4MDo4NzQsODc6MTI1Miw4ODoxMjUyLDg5OjEyNTIsMTA4Ojg2MywxMzQ6NzM3LDEzNTo4NTIsMTM2Ojg1NywyMDQ6MTI1NywyNTU6MTY5Njl9LHQ9czAoezE6NDM3LDI6ODUwLDM6MTI1Miw0OjFlNCwxMDA6ODUyLDEwMTo4NjYsMTAyOjg2NSwxMDM6ODYxLDEw''@;'; put 'put ''NDo4OTUsMTA1OjYyMCwxMDY6NzM3LDEwNzo4NTcsMTIwOjk1MCwxMjE6OTQ5LDEyMjo5MzYsMTIzOjkzMiwxMjQ6ODc0LDEyNToxMjU1LDEyNjoxMjU2LDE1MDoxMDAwNywxNTE6MTAwMjksMTUyOjEwMDA2LDIwMDoxMjUwLDIwMToxMjUxLDIwMjoxMjU0LDIwMzoxMjUzLDA6MjAxMjd9KTtm''@;'; put 'put ''dW5jdGlvbiBhKGYsYyl7dmFyIG89Y3x8e307by5kYXRlTkZ8fChvLmRhdGVORj0ieXl5eW1tZGQiKTt2YXIgbD1zYShmdW5jdGlvbiByKGYsYyl7dmFyIG89W10sbD1fdCgxKTtzd2l0Y2goYy50eXBlKXtjYXNlImJhc2U2NCI6bD1JcihPcihmKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmw9SXIo''@;'; put 'put ''Zik7YnJlYWs7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOmw9Zn1ocihsLDApO3ZhciBoPWwucmVhZF9zaGlmdCgxKSx4PSEhKDEzNiZoKSxkPSExLHY9ITE7c3dpdGNoKGgpe2Nhc2UgMjpjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAyNDU6YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmQ9''@;'; put 'put ''ITAseD0hMDticmVhaztjYXNlIDE0MDp2PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogIitoLnRvU3RyaW5nKDE2KSl9dmFyIHU9MCxwPTUyMTsyPT1oJiYodT1sLnJlYWRfc2hpZnQoMikpLGwubCs9MywyIT1oJiYodT1sLnJlYWRf''@;'; put 'put ''c2hpZnQoNCkpLHU+MTA0ODU3NiYmKHU9MWU2KSwyIT1oJiYocD1sLnJlYWRfc2hpZnQoMikpO3ZhciBrPWwucmVhZF9zaGlmdCgyKSxUPWMuY29kZXBhZ2V8fDEyNTI7MiE9aCYmKGwubCs9MTYsbC5yZWFkX3NoaWZ0KDEpLDAhPT1sW2wubF0mJihUPWVbbFtsLmxdXSksbC5sKz0xLGwubCs9''@;'; put 'put ''MiksdiYmKGwubCs9MzYpO2Zvcih2YXIgZz1bXSxOPXt9LE09TWF0aC5taW4obC5sZW5ndGgsMj09aD81MjE6cC0xMC0oZD8yNjQ6MCkpLEk9dj8zMjoxMTtsLmw8TSYmMTMhPWxbbC5sXTspc3dpdGNoKE49e30sTi5uYW1lPU9lLnV0aWxzLmRlY29kZShULGwuc2xpY2UobC5sLGwubCtJKSku''@;'; put 'put ''cmVwbGFjZSgvW1x1MDAwMFxyXG5dLiokL2csIiIpLGwubCs9SSxOLnR5cGU9U3RyaW5nLmZyb21DaGFyQ29kZShsLnJlYWRfc2hpZnQoMSkpLDIhPWgmJiF2JiYoTi5vZmZzZXQ9bC5yZWFkX3NoaWZ0KDQpKSxOLmxlbj1sLnJlYWRfc2hpZnQoMSksMj09aCYmKE4ub2Zmc2V0PWwucmVhZF9z''@;'; put 'put ''aGlmdCgyKSksTi5kZWM9bC5yZWFkX3NoaWZ0KDEpLE4ubmFtZS5sZW5ndGgmJmcucHVzaChOKSwyIT1oJiYobC5sKz12PzEzOjE0KSxOLnR5cGUpe2Nhc2UiQiI6KCFkfHw4IT1OLmxlbikmJmMuV1RGJiZjb25zb2xlLmxvZygiU2tpcHBpbmcgIitOLm5hbWUrIjoiK04udHlwZSk7YnJlYWs7''@;'; put 'put ''Y2FzZSJHIjpjYXNlIlAiOmMuV1RGJiZjb25zb2xlLmxvZygiU2tpcHBpbmcgIitOLm5hbWUrIjoiK04udHlwZSk7YnJlYWs7Y2FzZSIrIjpjYXNlIjAiOmNhc2UiQCI6Y2FzZSJDIjpjYXNlIkQiOmNhc2UiRiI6Y2FzZSJJIjpjYXNlIkwiOmNhc2UiTSI6Y2FzZSJOIjpjYXNlIk8iOmNhc2Ui''@;'; put 'put ''VCI6Y2FzZSJZIjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBGaWVsZCBUeXBlOiAiK04udHlwZSl9aWYoMTMhPT1sW2wubF0mJihsLmw9cC0xKSwxMyE9PWwucmVhZF9zaGlmdCgxKSl0aHJvdyBuZXcgRXJyb3IoIkRCRiBUZXJtaW5hdG9yIG5vdCBmb3VuZCAiK2wu''@;'; put 'put ''bCsiICIrbFtsLmxdKTtsLmw9cDt2YXIgeT0wLFA9MDtmb3Iob1swXT1bXSxQPTA7UCE9Zy5sZW5ndGg7KytQKW9bMF1bUF09Z1tQXS5uYW1lO2Zvcig7dS0tID4wOylpZig0MiE9PWxbbC5sXSlmb3IoKytsLmwsb1srK3ldPVtdLFA9MCxQPTA7UCE9Zy5sZW5ndGg7KytQKXt2YXIgUj1sLnNs''@;'; put 'put ''aWNlKGwubCxsLmwrZ1tQXS5sZW4pO2wubCs9Z1tQXS5sZW4saHIoUiwwKTt2YXIgVj1PZS51dGlscy5kZWNvZGUoVCxSKTtzd2l0Y2goZ1tQXS50eXBlKXtjYXNlIkMiOlYudHJpbSgpLmxlbmd0aCYmKG9beV1bUF09Vi5yZXBsYWNlKC9ccyskLywiIikpO2JyZWFrO2Nhc2UiRCI6b1t5XVtQ''@;'; put 'put ''XT04PT09Vi5sZW5ndGg/bmV3IERhdGUoK1Yuc2xpY2UoMCw0KSwrVi5zbGljZSg0LDYpLTEsK1Yuc2xpY2UoNiw4KSk6VjticmVhaztjYXNlIkYiOm9beV1bUF09cGFyc2VGbG9hdChWLnRyaW0oKSk7YnJlYWs7Y2FzZSIrIjpjYXNlIkkiOm9beV1bUF09dj8yMTQ3NDgzNjQ4XlIucmVhZF9z''@;'; put 'put ''aGlmdCgtNCwiaSIpOlIucmVhZF9zaGlmdCg0LCJpIik7YnJlYWs7Y2FzZSJMIjpzd2l0Y2goVi50cmltKCkudG9VcHBlckNhc2UoKSl7Y2FzZSJZIjpjYXNlIlQiOm9beV1bUF09ITA7YnJlYWs7Y2FzZSJOIjpjYXNlIkYiOm9beV1bUF09ITE7YnJlYWs7Y2FzZSIiOmNhc2UiPyI6YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnJlY29nbml6ZWQgTDp8IitWKyJ8Iil9YnJlYWs7Y2FzZSJNIjppZigheCl0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbmV4cGVjdGVkIE1FTU8gZm9yIHR5cGUgIitoLnRvU3RyaW5nKDE2KSk7b1t5XVtQXT0iIyNNRU1PIyMiKyh2P3BhcnNl''@;'; put 'put ''SW50KFYudHJpbSgpLDEwKTpSLnJlYWRfc2hpZnQoNCkpO2JyZWFrO2Nhc2UiTiI6KFY9Vi5yZXBsYWNlKC9cdTAwMDAvZywiIikudHJpbSgpKSYmIi4iIT1WJiYob1t5XVtQXT0rVnx8MCk7YnJlYWs7Y2FzZSJAIjpvW3ldW1BdPW5ldyBEYXRlKFIucmVhZF9zaGlmdCgtOCwiZiIpLTYyMTM1''@;'; put 'put ''NjgzMmU1KTticmVhaztjYXNlIlQiOm9beV1bUF09bmV3IERhdGUoODY0ZTUqKFIucmVhZF9zaGlmdCg0KS0yNDQwNTg4KStSLnJlYWRfc2hpZnQoNCkpO2JyZWFrO2Nhc2UiWSI6b1t5XVtQXT1SLnJlYWRfc2hpZnQoNCwiaSIpLzFlNCtSLnJlYWRfc2hpZnQoNCwiaSIpLzFlNCpNYXRoLnBv''@;'; put 'put ''dygyLDMyKTticmVhaztjYXNlIk8iOm9beV1bUF09LVIucmVhZF9zaGlmdCgtOCwiZiIpO2JyZWFrO2Nhc2UiQiI6aWYoZCYmOD09Z1tQXS5sZW4pe29beV1bUF09Ui5yZWFkX3NoaWZ0KDgsImYiKTticmVha31jYXNlIkciOmNhc2UiUCI6Ui5sKz1nW1BdLmxlbjticmVhaztjYXNlIjAiOmlm''@;'; put 'put ''KCJfTnVsbEZsYWdzIj09PWdbUF0ubmFtZSlicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVuc3VwcG9ydGVkIGRhdGEgdHlwZSAiK2dbUF0udHlwZSl9fWVsc2UgbC5sKz1rO2lmKDIhPWgmJmwubDxsLmxlbmd0aCYmMjYhPWxbbC5sKytdKXRocm93IG5ldyBFcnJvcigiREJG''@;'; put 'put ''IEVPRiBNYXJrZXIgbWlzc2luZyAiKyhsLmwtMSkrIiBvZiAiK2wubGVuZ3RoKyIgIitsW2wubC0xXS50b1N0cmluZygxNikpO3JldHVybiBjJiZjLnNoZWV0Um93cyYmKG89by5zbGljZSgwLGMuc2hlZXRSb3dzKSksYy5EQkY9ZyxvfShmLG8pLG8pO3JldHVybiBsWyIhY29scyJdPW8uREJG''@;'; put 'put ''Lm1hcChmdW5jdGlvbihoKXtyZXR1cm57d2NoOmgubGVuLERCRjpofX0pLGRlbGV0ZSBvLkRCRixsfXZhciBpPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtyZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gbihmLGMpe3RyeXtyZXR1cm4gRnQoYShmLGMpLGMpfWNhdGNoKG8pe2lm''@;'; put 'put ''KGMmJmMuV1RGKXRocm93IG99cmV0dXJue1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fX0sdG9fc2hlZXQ6YSxmcm9tX3NoZWV0OmZ1bmN0aW9uIHMoZixjKXt2YXIgbz1jfHx7fTtpZigrby5jb2RlcGFnZT49MCYmTXIoK28uY29kZXBhZ2UpLCJzdHJpbmciPT1vLnR5cGUpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZyIpO3ZhciBsPVNyKCksaD1mdW5jdGlvbiBOMChlLHQpe2lmKG51bGw9PWV8fG51bGw9PWVbIiFyZWYiXSlyZXR1cm5bXTt2YXIgcj17dDoibiIsdjowfSxhPTAsbj0xLGk9W10scz0wLGY9IiIsYz17czp7cjowLGM6MH0sZTp7cjow''@;'; put 'put ''LGM6MH19LG89dHx8e30sbD1udWxsIT1vLnJhbmdlP28ucmFuZ2U6ZVsiIXJlZiJdO3N3aXRjaCgxPT09by5oZWFkZXI/YT0xOiJBIj09PW8uaGVhZGVyP2E9MjpBcnJheS5pc0FycmF5KG8uaGVhZGVyKT9hPTM6bnVsbD09by5oZWFkZXImJihhPTApLHR5cGVvZiBsKXtjYXNlInN0cmluZyI6''@;'; put 'put ''Yz1EZShsKTticmVhaztjYXNlIm51bWJlciI6KGM9RGUoZVsiIXJlZiJdKSkucy5yPWw7YnJlYWs7ZGVmYXVsdDpjPWx9YT4wJiYobj0wKTt2YXIgaD1LZShjLnMucikseD1bXSxkPVtdLHY9MCx1PTAscD1BcnJheS5pc0FycmF5KGUpLGs9Yy5zLnIsVD0wLGc9e307cCYmIWVba10mJihlW2td''@;'; put 'put ''PVtdKTt2YXIgTj1vLnNraXBIaWRkZW4mJmVbIiFjb2xzIl18fFtdLE09by5za2lwSGlkZGVuJiZlWyIhcm93cyJdfHxbXTtmb3IoVD1jLnMuYztUPD1jLmUuYzsrK1QpaWYoIShOW1RdfHx7fSkuaGlkZGVuKXN3aXRjaCh4W1RdPUhlKFQpLHI9cD9lW2tdW1RdOmVbeFtUXStoXSxhKXtjYXNl''@;'; put 'put ''IDE6aVtUXT1ULWMucy5jO2JyZWFrO2Nhc2UgMjppW1RdPXhbVF07YnJlYWs7Y2FzZSAzOmlbVF09by5oZWFkZXJbVC1jLnMuY107YnJlYWs7ZGVmYXVsdDppZihudWxsPT1yJiYocj17dzoiX19FTVBUWSIsdDoicyJ9KSxmPXM9YXQocixudWxsLG8pLHU9Z1tzXXx8MCl7ZG97Zj1zKyJfIit1''@;'; put 'put ''Kyt9d2hpbGUoZ1tmXSk7Z1tzXT11LGdbZl09MX1lbHNlIGdbc109MTtpW1RdPWZ9Zm9yKGs9Yy5zLnIrbjtrPD1jLmUucjsrK2spaWYoIShNW2tdfHx7fSkuaGlkZGVuKXt2YXIgST1fYyhlLGMsayx4LGEsaSxwLG8pOyghMT09PUkuaXNlbXB0eXx8KDE9PT1hPyExIT09by5ibGFua3Jvd3M6''@;'; put 'put ''by5ibGFua3Jvd3MpKSYmKGRbdisrXT1JLnJvdyl9cmV0dXJuIGQubGVuZ3RoPXYsZH0oZix7aGVhZGVyOjEscmF3OiEwLGNlbGxEYXRlczohMH0pLHg9aFswXSxkPWguc2xpY2UoMSksdj1mWyIhY29scyJdfHxbXSx1PTAscD0wLGs9MCxUPTE7Zm9yKHU9MDt1PHgubGVuZ3RoOysrdSlpZigo''@;'; put 'put ''KHZbdV18fHt9KS5EQkZ8fHt9KS5uYW1lKXhbdV09dlt1XS5EQkYubmFtZSwrK2s7ZWxzZSBpZihudWxsIT14W3VdKXtpZigrK2ssIm51bWJlciI9PXR5cGVvZiB4W3VdJiYoeFt1XT14W3VdLnRvU3RyaW5nKDEwKSksInN0cmluZyIhPXR5cGVvZiB4W3VdKXRocm93IG5ldyBFcnJvcigiREJG''@;'; put 'put ''IEludmFsaWQgY29sdW1uIG5hbWUgIit4W3VdKyIgfCIrdHlwZW9mIHhbdV0rInwiKTtpZih4LmluZGV4T2YoeFt1XSkhPT11KWZvcihwPTA7cDwxMDI0OysrcClpZigtMT09eC5pbmRleE9mKHhbdV0rIl8iK3ApKXt4W3VdKz0iXyIrcDticmVha319dmFyIGc9RGUoZlsiIXJlZiJdKSxOPVtd''@;'; put 'put ''LE09W10sST1bXTtmb3IodT0wO3U8PWcuZS5jLWcucy5jOysrdSl7dmFyIHk9IiIsUD0iIixSPTAsVj1bXTtmb3IocD0wO3A8ZC5sZW5ndGg7KytwKW51bGwhPWRbcF1bdV0mJlYucHVzaChkW3BdW3VdKTtpZigwIT1WLmxlbmd0aCYmbnVsbCE9eFt1XSl7Zm9yKHA9MDtwPFYubGVuZ3RoOysr''@;'; put 'put ''cCl7c3dpdGNoKHR5cGVvZiBWW3BdKXtjYXNlIm51bWJlciI6UD0iQiI7YnJlYWs7Y2FzZSJzdHJpbmciOmRlZmF1bHQ6UD0iQyI7YnJlYWs7Y2FzZSJib29sZWFuIjpQPSJMIjticmVhaztjYXNlIm9iamVjdCI6UD1WW3BdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyJ9Uj1NYXRoLm1heChSLFN0''@;'; put 'put ''cmluZyhWW3BdKS5sZW5ndGgpLHk9eSYmeSE9UD8iQyI6UH1SPjI1MCYmKFI9MjUwKSwiQyI9PShQPSgodlt1XXx8e30pLkRCRnx8e30pLnR5cGUpJiZ2W3VdLkRCRi5sZW4+UiYmKFI9dlt1XS5EQkYubGVuKSwiQiI9PXkmJiJOIj09UCYmKHk9Ik4iLElbdV09dlt1XS5EQkYuZGVjLFI9dlt1''@;'; put 'put ''XS5EQkYubGVuKSxNW3VdPSJDIj09eXx8Ik4iPT1QP1I6aVt5XXx8MCxUKz1NW3VdLE5bdV09eX1lbHNlIE5bdV09Ij8ifXZhciBYPWwubmV4dCgzMik7Zm9yKFgud3JpdGVfc2hpZnQoNCwzMTg5MDI1NzYpLFgud3JpdGVfc2hpZnQoNCxkLmxlbmd0aCksWC53cml0ZV9zaGlmdCgyLDI5Nisz''@;'; put 'put ''MiprKSxYLndyaXRlX3NoaWZ0KDIsVCksdT0wO3U8NDsrK3UpWC53cml0ZV9zaGlmdCg0LDApO2ZvcihYLndyaXRlX3NoaWZ0KDQsKCt0W1J0XXx8Myk8PDgpLHU9MCxwPTA7dTx4Lmxlbmd0aDsrK3UpaWYobnVsbCE9eFt1XSl7dmFyIGI9bC5uZXh0KDMyKSxlZT0oeFt1XS5zbGljZSgtMTAp''@;'; put 'put ''KyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIikuc2xpY2UoMCwxMSk7Yi53cml0ZV9zaGlmdCgxLGVlLCJzYmNzIiksYi53cml0ZV9zaGlmdCgxLCI/Ij09Tlt1XT8iQyI6Tlt1XSwic2JjcyIpLGIud3JpdGVfc2hpZnQoNCxwKSxiLndyaXRlX3NoaWZ0KDEsTVt1XXx8aVtOW3VdXXx8MCksYi53''@;'; put 'put ''cml0ZV9zaGlmdCgxLElbdV18fDApLGIud3JpdGVfc2hpZnQoMSwyKSxiLndyaXRlX3NoaWZ0KDQsMCksYi53cml0ZV9zaGlmdCgxLDApLGIud3JpdGVfc2hpZnQoNCwwKSxiLndyaXRlX3NoaWZ0KDQsMCkscCs9TVt1XXx8aVtOW3VdXXx8MH12YXIgbGU9bC5uZXh0KDI2NCk7Zm9yKGxlLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsMTMpLHU9MDt1PDY1OysrdSlsZS53cml0ZV9zaGlmdCg0LDApO2Zvcih1PTA7dTxkLmxlbmd0aDsrK3Upe3ZhciByZT1sLm5leHQoVCk7Zm9yKHJlLndyaXRlX3NoaWZ0KDEsMCkscD0wO3A8eC5sZW5ndGg7KytwKWlmKG51bGwhPXhbcF0pc3dpdGNoKE5bcF0pe2Nhc2Ui''@;'; put 'put ''TCI6cmUud3JpdGVfc2hpZnQoMSxudWxsPT1kW3VdW3BdPzYzOmRbdV1bcF0/ODQ6NzApO2JyZWFrO2Nhc2UiQiI6cmUud3JpdGVfc2hpZnQoOCxkW3VdW3BdfHwwLCJmIik7YnJlYWs7Y2FzZSJOIjp2YXIgZGU9IjAiO2ZvcigibnVtYmVyIj09dHlwZW9mIGRbdV1bcF0mJihkZT1kW3VdW3Bd''@;'; put 'put ''LnRvRml4ZWQoSVtwXXx8MCkpLGs9MDtrPE1bcF0tZGUubGVuZ3RoOysraylyZS53cml0ZV9zaGlmdCgxLDMyKTtyZS53cml0ZV9zaGlmdCgxLGRlLCJzYmNzIik7YnJlYWs7Y2FzZSJEIjpkW3VdW3BdPyhyZS53cml0ZV9zaGlmdCg0LCgiMDAwMCIrZFt1XVtwXS5nZXRGdWxsWWVhcigpKS5z''@;'; put 'put ''bGljZSgtNCksInNiY3MiKSxyZS53cml0ZV9zaGlmdCgyLCgiMDAiKyhkW3VdW3BdLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSwic2JjcyIpLHJlLndyaXRlX3NoaWZ0KDIsKCIwMCIrZFt1XVtwXS5nZXREYXRlKCkpLnNsaWNlKC0yKSwic2JjcyIpKTpyZS53cml0ZV9zaGlmdCg4LCIwMDAw''@;'; put 'put ''MDAwMCIsInNiY3MiKTticmVhaztjYXNlIkMiOnZhciB1ZT1TdHJpbmcobnVsbCE9ZFt1XVtwXT9kW3VdW3BdOiIiKS5zbGljZSgwLE1bcF0pO2ZvcihyZS53cml0ZV9zaGlmdCgxLHVlLCJzYmNzIiksaz0wO2s8TVtwXS11ZS5sZW5ndGg7KytrKXJlLndyaXRlX3NoaWZ0KDEsMzIpfX1yZXR1''@;'; put 'put ''cm4gbC5uZXh0KDEpLndyaXRlX3NoaWZ0KDEsMjYpLGwuZW5kKCl9fX0oKSxlZj1mdW5jdGlvbigpe3ZhciBlPXtBQToiXHhjMCIsQkE6Ilx4YzEiLENBOiJceGMyIixEQToxOTUsSEE6Ilx4YzQiLEpBOjE5NyxBRToiXHhjOCIsQkU6Ilx4YzkiLENFOiJceGNhIixIRToiXHhjYiIsQUk6Ilx4''@;'; put 'put ''Y2MiLEJJOiJceGNkIixDSToiXHhjZSIsSEk6Ilx4Y2YiLEFPOiJceGQyIixCTzoiXHhkMyIsQ086Ilx4ZDQiLERPOjIxMyxITzoiXHhkNiIsQVU6Ilx4ZDkiLEJVOiJceGRhIixDVToiXHhkYiIsSFU6Ilx4ZGMiLEFhOiJceGUwIixCYToiXHhlMSIsQ2E6Ilx4ZTIiLERhOjIyNyxIYToiXHhl''@;'; put 'put ''NCIsSmE6MjI5LEFlOiJceGU4IixCZToiXHhlOSIsQ2U6Ilx4ZWEiLEhlOiJceGViIixBaToiXHhlYyIsQmk6Ilx4ZWQiLENpOiJceGVlIixIaToiXHhlZiIsQW86Ilx4ZjIiLEJvOiJceGYzIixDbzoiXHhmNCIsRG86MjQ1LEhvOiJceGY2IixBdToiXHhmOSIsQnU6Ilx4ZmEiLEN1OiJceGZi''@;'; put 'put ''IixIdToiXHhmYyIsS0M6Ilx4YzciLEtjOiJceGU3IixxOiJceGU2Iix6OiJcdTAxNTMiLGE6Ilx4YzYiLGo6Ilx1MDE1MiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUTox''@;'; put 'put ''ODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sdD1uZXcgUmVnRXhw''@;'; put 'put ''KCJceDFiTigiKyRlKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpLHI9ZnVuY3Rpb24oeCxkKXt2YXIgdj1lW2RdO3JldHVybiJudW1iZXIiPT10eXBlb2Ygdj9CMCh2KTp2fSxhPWZ1bmN0aW9u''@;'; put 'put ''KHgsZCx2KXt2YXIgdT1kLmNoYXJDb2RlQXQoMCktMzI8PDR8di5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiA1OT09dT94OkIwKHUpfTtmdW5jdGlvbiBpKHgsZCl7dmFyIFgsdj14LnNwbGl0KC9bXG5ccl0rLyksdT0tMSxwPS0xLGs9MCxUPTAsZz1bXSxOPVtdLE09bnVsbCxJPXt9LHk9W10s''@;'; put 'put ''UD1bXSxSPVtdLFY9MDtmb3IoK2QuY29kZXBhZ2U+PTAmJk1yKCtkLmNvZGVwYWdlKTtrIT09di5sZW5ndGg7KytrKXtWPTA7dmFyIHJlLGI9dltrXS50cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csYSkucmVwbGFjZSh0LHIpLGVlPWIucmVwbGFjZSgv''@;'; put 'put ''OzsvZywiXDAiKS5zcGxpdCgiOyIpLm1hcChmdW5jdGlvbihEKXtyZXR1cm4gRC5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSk7aWYoYi5sZW5ndGg+MClzd2l0Y2goZWVbMF0pe2Nhc2UiSUQiOmNhc2UiRSI6Y2FzZSJCIjpjYXNlIk8iOmNhc2UiVyI6YnJlYWs7Y2FzZSJQIjoiUCI9PWVlWzFd''@;'; put 'put ''LmNoYXJBdCgwKSYmTi5wdXNoKGIuc2xpY2UoMykucmVwbGFjZSgvOzsvZywiOyIpKTticmVhaztjYXNlIkMiOnZhciBkZT0hMSx1ZT0hMSxGZT0hMSxjZT0hMSx4ZT0tMSxLPS0xO2ZvcihUPTE7VDxlZS5sZW5ndGg7KytUKXN3aXRjaChlZVtUXS5jaGFyQXQoMCkpe2Nhc2UiQSI6Y2FzZSJH''@;'; put 'put ''IjpicmVhaztjYXNlIlgiOnA9cGFyc2VJbnQoZWVbVF0uc2xpY2UoMSkpLTEsdWU9ITA7YnJlYWs7Y2FzZSJZIjpmb3IodT1wYXJzZUludChlZVtUXS5zbGljZSgxKSktMSx1ZXx8KHA9MCksWD1nLmxlbmd0aDtYPD11OysrWClnW1hdPVtdO2JyZWFrO2Nhc2UiSyI6JyInPT09KHJlPWVlW1Rd''@;'; put 'put ''LnNsaWNlKDEpKS5jaGFyQXQoMCk/cmU9cmUuc2xpY2UoMSxyZS5sZW5ndGgtMSk6IlRSVUUiPT09cmU/cmU9ITA6IkZBTFNFIj09PXJlP3JlPSExOmlzTmFOKEpyKHJlKSk/aXNOYU4oYWEocmUpLmdldERhdGUoKSl8fChyZT1YZShyZSkpOihyZT1KcihyZSksbnVsbCE9PU0mJmJ0KE0pJiYo''@;'; put 'put ''cmU9bzAocmUpKSksdHlwZW9mIE9lPCJ1IiYmInN0cmluZyI9PXR5cGVvZiByZSYmInN0cmluZyIhPShkfHx7fSkudHlwZSYmKGR8fHt9KS5jb2RlcGFnZSYmKHJlPU9lLnV0aWxzLmRlY29kZShkLmNvZGVwYWdlLHJlKSksZGU9ITA7YnJlYWs7Y2FzZSJFIjpjZT0hMDt2YXIgQz11YShlZVtU''@;'; put 'put ''XS5zbGljZSgxKSx7cjp1LGM6cH0pO2dbdV1bcF09W2dbdV1bcF0sQ107YnJlYWs7Y2FzZSJTIjpGZT0hMCxnW3VdW3BdPVtnW3VdW3BdLCJTNVMiXTticmVhaztjYXNlIlIiOnhlPXBhcnNlSW50KGVlW1RdLnNsaWNlKDEpKS0xO2JyZWFrO2Nhc2UiQyI6Sz1wYXJzZUludChlZVtUXS5zbGlj''@;'; put 'put ''ZSgxKSktMTticmVhaztkZWZhdWx0OmlmKGQmJmQuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrYil9aWYoZGUmJihnW3VdW3BdJiYyPT1nW3VdW3BdLmxlbmd0aD9nW3VdW3BdWzBdPXJlOmdbdV1bcF09cmUsTT1udWxsKSxGZSl7aWYoY2UpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIFU9eGU+LTEmJmdbeGVdW0tdO2lmKCFVfHwhVVsxXSl0aHJvdyBuZXcgRXJyb3IoIlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGZpbmQgYmFzZSIpO2dbdV1bcF1bMV09a2YoVVsxXSx7cjp1LXhl''@;'; put 'put ''LGM6cC1LfSl9YnJlYWs7Y2FzZSJGIjp2YXIgTz0wO2ZvcihUPTE7VDxlZS5sZW5ndGg7KytUKXN3aXRjaChlZVtUXS5jaGFyQXQoMCkpe2Nhc2UiWCI6cD1wYXJzZUludChlZVtUXS5zbGljZSgxKSktMSwrK087YnJlYWs7Y2FzZSJZIjpmb3IodT1wYXJzZUludChlZVtUXS5zbGljZSgxKSkt''@;'; put 'put ''MSxYPWcubGVuZ3RoO1g8PXU7KytYKWdbWF09W107YnJlYWs7Y2FzZSJNIjpWPXBhcnNlSW50KGVlW1RdLnNsaWNlKDEpKS8yMDticmVhaztjYXNlIkYiOmNhc2UiRyI6Y2FzZSJTIjpjYXNlIkQiOmNhc2UiTiI6YnJlYWs7Y2FzZSJQIjpNPU5bcGFyc2VJbnQoZWVbVF0uc2xpY2UoMSkpXTti''@;'; put 'put ''cmVhaztjYXNlIlciOmZvcihSPWVlW1RdLnNsaWNlKDEpLnNwbGl0KCIgIiksWD1wYXJzZUludChSWzBdLDEwKTtYPD1wYXJzZUludChSWzFdLDEwKTsrK1gpVj1wYXJzZUludChSWzJdLDEwKSxQW1gtMV09MD09PVY/e2hpZGRlbjohMH06e3djaDpWfSxLdChQW1gtMV0pO2JyZWFrO2Nhc2Ui''@;'; put 'put ''QyI6UFtwPXBhcnNlSW50KGVlW1RdLnNsaWNlKDEpKS0xXXx8KFBbcF09e30pO2JyZWFrO2Nhc2UiUiI6eVt1PXBhcnNlSW50KGVlW1RdLnNsaWNlKDEpKS0xXXx8KHlbdV09e30pLFY+MD8oeVt1XS5ocHQ9Vix5W3VdLmhweD1vYShWKSk6MD09PVYmJih5W3VdLmhpZGRlbj0hMCk7YnJlYWs7''@;'; put 'put ''ZGVmYXVsdDppZihkJiZkLldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK2IpfU88MSYmKE09bnVsbCk7YnJlYWs7ZGVmYXVsdDppZihkJiZkLldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK2IpfX1yZXR1cm4geS5sZW5ndGg+MCYmKElbIiFyb3dz''@;'; put 'put ''Il09eSksUC5sZW5ndGg+MCYmKElbIiFjb2xzIl09UCksZCYmZC5zaGVldFJvd3MmJihnPWcuc2xpY2UoMCxkLnNoZWV0Um93cykpLFtnLEldfWZ1bmN0aW9uIHMoeCxkKXt2YXIgdj1mdW5jdGlvbiBuKHgsZCl7c3dpdGNoKGQudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBpKE9yKHgpLGQp''@;'; put 'put ''O2Nhc2UiYmluYXJ5IjpyZXR1cm4gaSh4LGQpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gaShTZSYmQnVmZmVyLmlzQnVmZmVyKHgpP3gudG9TdHJpbmcoImJpbmFyeSIpOnd0KHgpLGQpO2Nhc2UiYXJyYXkiOnJldHVybiBpKFB0KHgpLGQpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5''@;'; put 'put ''cGUgIitkLnR5cGUpfSh4LGQpLHA9dlsxXSxrPXNhKHZbMF0sZCk7cmV0dXJuICRlKHApLmZvckVhY2goZnVuY3Rpb24oVCl7a1tUXT1wW1RdfSksa31mdW5jdGlvbiBjKHgsZCx2LHUpe3ZhciBwPSJDO1kiKyh2KzEpKyI7WCIrKHUrMSkrIjtLIjtzd2l0Y2goeC50KXtjYXNlIm4iOnArPXgu''@;'; put 'put ''dnx8MCx4LmYmJiF4LkYmJihwKz0iO0UiK0luKHguZix7cjp2LGM6dX0pKTticmVhaztjYXNlImIiOnArPXgudj8iVFJVRSI6IkZBTFNFIjticmVhaztjYXNlImUiOnArPXgud3x8eC52O2JyZWFrO2Nhc2UiZCI6cCs9JyInKyh4Lnd8fHgudikrJyInO2JyZWFrO2Nhc2UicyI6cCs9JyInK3gu''@;'; put 'put ''di5yZXBsYWNlKC8iL2csIiIpLnJlcGxhY2UoLzsvZywiOzsiKSsnIid9cmV0dXJuIHB9cmV0dXJuIGVbInwiXT0yNTQse3RvX3dvcmtib29rOmZ1bmN0aW9uIGYoeCxkKXtyZXR1cm4gRnQocyh4LGQpLGQpfSx0b19zaGVldDpzLGZyb21fc2hlZXQ6ZnVuY3Rpb24gaCh4LGQpe3ZhciBrLHY9''@;'; put 'put ''WyJJRDtQV1hMO047RSJdLHU9W10scD1EZSh4WyIhcmVmIl0pLFQ9QXJyYXkuaXNBcnJheSh4KSxnPSJcclxuIjt2LnB1c2goIlA7UEdlbmVyYWwiKSx2LnB1c2goIkY7UDA7REcwRzg7TTI1NSIpLHhbIiFjb2xzIl0mJmZ1bmN0aW9uIG8oeCxkKXtkLmZvckVhY2goZnVuY3Rpb24odix1KXt2''@;'; put 'put ''YXIgcD0iRjtXIisodSsxKSsiICIrKHUrMSkrIiAiO3YuaGlkZGVuP3ArPSIwIjooIm51bWJlciI9PXR5cGVvZiB2LndpZHRoJiYhdi53cHgmJih2LndweD1QYSh2LndpZHRoKSksIm51bWJlciI9PXR5cGVvZiB2LndweCYmIXYud2NoJiYodi53Y2g9TGEodi53cHgpKSwibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIHYud2NoJiYocCs9TWF0aC5yb3VuZCh2LndjaCkpKSwiICIhPXAuY2hhckF0KHAubGVuZ3RoLTEpJiZ4LnB1c2gocCl9KX0odix4WyIhY29scyJdKSx4WyIhcm93cyJdJiZmdW5jdGlvbiBsKHgsZCl7ZC5mb3JFYWNoKGZ1bmN0aW9uKHYsdSl7dmFyIHA9IkY7Ijt2LmhpZGRlbj9wKz0i''@;'; put 'put ''TTA7Ijp2LmhwdD9wKz0iTSIrMjAqdi5ocHQrIjsiOnYuaHB4JiYocCs9Ik0iKzIwKkJhKHYuaHB4KSsiOyIpLHAubGVuZ3RoPjImJngucHVzaChwKyJSIisodSsxKSl9KX0odix4WyIhcm93cyJdKSx2LnB1c2goIkI7WSIrKHAuZS5yLXAucy5yKzEpKyI7WCIrKHAuZS5jLXAucy5jKzEpKyI7''@;'; put 'put ''RCIrW3Aucy5jLHAucy5yLHAuZS5jLHAuZS5yXS5qb2luKCIgIikpO2Zvcih2YXIgTj1wLnMucjtOPD1wLmUucjsrK04pZm9yKHZhciBNPXAucy5jO008PXAuZS5jOysrTSl7dmFyIEk9Z2Uoe3I6TixjOk19KTsoaz1UPyh4W05dfHxbXSlbTV06eFtJXSkmJihudWxsIT1rLnZ8fGsuZiYmIWsu''@;'; put 'put ''RikmJnUucHVzaChjKGssMCxOLE0pKX1yZXR1cm4gdi5qb2luKGcpK2crdS5qb2luKGcpK2crIkUiK2d9fX0oKSxyZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoaSxzKXtmb3IodmFyIGY9aS5zcGxpdCgiXG4iKSxjPS0xLG89LTEsbD0wLGg9W107bCE9PWYubGVuZ3RoOysrbClpZigiQk9UIiE9''@;'; put 'put ''PWZbbF0udHJpbSgpKXtpZighKGM8MCkpe2Zvcih2YXIgeD1mW2xdLnRyaW0oKS5zcGxpdCgiLCIpLGQ9eFswXSx2PXhbMV0sdT1mWysrbF18fCIiOzEmKHUubWF0Y2goL1siXS9nKXx8W10pLmxlbmd0aCYmbDxmLmxlbmd0aC0xOyl1Kz0iXG4iK2ZbKytsXTtzd2l0Y2godT11LnRyaW0oKSwr''@;'; put 'put ''ZCl7Y2FzZS0xOmlmKCJCT1QiPT09dSl7aFsrK2NdPVtdLG89MDtjb250aW51ZX1pZigiRU9EIiE9PXUpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRElGIHNwZWNpYWwgY29tbWFuZCAiK3UpO2JyZWFrO2Nhc2UgMDpoW2NdW29dPSJUUlVFIj09PXV8fCJGQUxTRSIhPT11JiYoaXNO''@;'; put 'put ''YU4oSnIodikpP2lzTmFOKGFhKHYpLmdldERhdGUoKSk/djpYZSh2KTpKcih2KSksKytvO2JyZWFrO2Nhc2UgMToodT0odT11LnNsaWNlKDEsdS5sZW5ndGgtMSkpLnJlcGxhY2UoLyIiL2csJyInKSkmJnUubWF0Y2goL149Ii4qIiQvKSYmKHU9dS5zbGljZSgyLC0xKSksaFtjXVtvKytdPSIi''@;'; put 'put ''IT09dT91Om51bGx9aWYoIkVPRCI9PT11KWJyZWFrfX1lbHNlIGhbKytjXT1bXSxvPTA7cmV0dXJuIHMmJnMuc2hlZXRSb3dzJiYoaD1oLnNsaWNlKDAscy5zaGVldFJvd3MpKSxofWZ1bmN0aW9uIHIoaSxzKXtyZXR1cm4gc2EoZnVuY3Rpb24gZShpLHMpe3N3aXRjaChzLnR5cGUpe2Nhc2Ui''@;'; put 'put ''YmFzZTY0IjpyZXR1cm4gdChPcihpKSxzKTtjYXNlImJpbmFyeSI6cmV0dXJuIHQoaSxzKTtjYXNlImJ1ZmZlciI6cmV0dXJuIHQoU2UmJkJ1ZmZlci5pc0J1ZmZlcihpKT9pLnRvU3RyaW5nKCJiaW5hcnkiKTp3dChpKSxzKTtjYXNlImFycmF5IjpyZXR1cm4gdChQdChpKSxzKX10aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrcy50eXBlKX0oaSxzKSxzKX1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gYShpLHMpe3JldHVybiBGdChyKGkscykscyl9LHRvX3NoZWV0OnIsZnJvbV9zaGVldDpmdW5jdGlvbigpe3ZhciBpPWZ1bmN0aW9uKGMsbyxsLGgseCl7Yy5w''@;'; put 'put ''dXNoKG8pLGMucHVzaChsKyIsIitoKSxjLnB1c2goJyInK3gucmVwbGFjZSgvIi9nLCciIicpKyciJyl9LHM9ZnVuY3Rpb24oYyxvLGwsaCl7Yy5wdXNoKG8rIiwiK2wpLGMucHVzaCgxPT1vPyciJytoLnJlcGxhY2UoLyIvZywnIiInKSsnIic6aCl9O3JldHVybiBmdW5jdGlvbihjKXt2YXIg''@;'; put 'put ''aCxvPVtdLGw9RGUoY1siIXJlZiJdKSx4PUFycmF5LmlzQXJyYXkoYyk7aShvLCJUQUJMRSIsMCwxLCJzaGVldGpzIiksaShvLCJWRUNUT1JTIiwwLGwuZS5yLWwucy5yKzEsIiIpLGkobywiVFVQTEVTIiwwLGwuZS5jLWwucy5jKzEsIiIpLGkobywiREFUQSIsMCwwLCIiKTtmb3IodmFyIGQ9''@;'; put 'put ''bC5zLnI7ZDw9bC5lLnI7KytkKXtzKG8sLTEsMCwiQk9UIik7Zm9yKHZhciB2PWwucy5jO3Y8PWwuZS5jOysrdil7dmFyIHU9Z2Uoe3I6ZCxjOnZ9KTtpZihoPXg/KGNbZF18fFtdKVt2XTpjW3VdKXN3aXRjaChoLnQpe2Nhc2UibiI6dmFyIHA9aC53OyFwJiZudWxsIT1oLnYmJihwPWgudiks''@;'; put 'put ''bnVsbD09cD9zKG8sMSwwLGguZiYmIWguRj8iPSIraC5mOiIiKTpzKG8sMCxwLCJWIik7YnJlYWs7Y2FzZSJiIjpzKG8sMCxoLnY/MTowLGgudj8iVFJVRSI6IkZBTFNFIik7YnJlYWs7Y2FzZSJzIjpzKG8sMSwwLGlzTmFOKGgudik/aC52Oic9IicraC52KyciJyk7YnJlYWs7Y2FzZSJkIjpo''@;'; put 'put ''Lnd8fChoLnc9UnIoaC56fHxwZVsxNF0saXIoWGUoaC52KSkpKSxzKG8sMCxoLncsIlYiKTticmVhaztkZWZhdWx0OnMobywxLDAsIiIpfWVsc2UgcyhvLDEsMCwiIil9fXJldHVybiBzKG8sLTEsMCwiRU9EIiksby5qb2luKCJcclxuIil9fSgpfX0oKSx0Zj1mdW5jdGlvbigpe2Z1bmN0aW9u''@;'; put 'put ''IGUoaCl7cmV0dXJuIGgucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZywiXG4iKX1mdW5jdGlvbiB0KGgpe3JldHVybiBoLnJlcGxhY2UoL1xcL2csIlxcYiIpLnJlcGxhY2UoLzovZywiXFxjIikucmVwbGFjZSgvXG4vZywiXFxuIil9ZnVu''@;'; put 'put ''Y3Rpb24gYShoLHgpe3JldHVybiBzYShmdW5jdGlvbiByKGgseCl7Zm9yKHZhciBkPWguc3BsaXQoIlxuIiksdj0tMSx1PS0xLHA9MCxrPVtdO3AhPT1kLmxlbmd0aDsrK3Ape3ZhciBUPWRbcF0udHJpbSgpLnNwbGl0KCI6Iik7aWYoImNlbGwiPT09VFswXSl7dmFyIGc9R2UoVFsxXSk7aWYo''@;'; put 'put ''ay5sZW5ndGg8PWcucilmb3Iodj1rLmxlbmd0aDt2PD1nLnI7Kyt2KWtbdl18fChrW3ZdPVtdKTtzd2l0Y2godj1nLnIsdT1nLmMsVFsyXSl7Y2FzZSJ0IjprW3ZdW3VdPWUoVFszXSk7YnJlYWs7Y2FzZSJ2IjprW3ZdW3VdPStUWzNdO2JyZWFrO2Nhc2UidnRmIjp2YXIgTj1UW1QubGVuZ3Ro''@;'; put 'put ''LTFdO2Nhc2UidnRjIjprW3ZdW3VdPSJubCI9PT1UWzNdPyEhK1RbNF06K1RbNF0sInZ0ZiI9PVRbMl0mJihrW3ZdW3VdPVtrW3ZdW3VdLE5dKX19fXJldHVybiB4JiZ4LnNoZWV0Um93cyYmKGs9ay5zbGljZSgwLHguc2hlZXRSb3dzKSksa30oaCx4KSx4KX12YXIgaT1bInNvY2lhbGNhbGM6''@;'; put 'put ''dmVyc2lvbjoxLjUiLCJNSU1FLVZlcnNpb246IDEuMCIsIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZSJdLmpvaW4oIlxuIikscz1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250''@;'; put 'put ''ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKCJcbiIpKyJcbiIsZj1bIiMgU29jaWFsQ2FsYyBTcHJlYWRzaGVldCBDb250cm9sIFNhdmUiLCJwYXJ0OnNoZWV0Il0uam9pbigiXG4iKSxjPSItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS0iO2Z1''@;'; put 'put ''bmN0aW9uIG8oaCl7aWYoIWh8fCFoWyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZhciB2LHg9W10sZD1bXSx1PSIiLHA9UHIoaFsiIXJlZiJdKSxrPUFycmF5LmlzQXJyYXkoaCksVD1wLnMucjtUPD1wLmUucjsrK1QpZm9yKHZhciBnPXAucy5jO2c8PXAuZS5jOysrZylpZih1PWdlKHtyOlQsYzpn''@;'; put 'put ''fSksKHY9az8oaFtUXXx8W10pW2ddOmhbdV0pJiZudWxsIT12LnYmJiJ6IiE9PXYudCl7c3dpdGNoKGQ9WyJjZWxsIix1LCJ0Il0sdi50KXtjYXNlInMiOmNhc2Uic3RyIjpkLnB1c2godCh2LnYpKTticmVhaztjYXNlIm4iOnYuZj8oZFsyXT0idnRmIixkWzNdPSJuIixkWzRdPXYudixkWzVd''@;'; put 'put ''PXQodi5mKSk6KGRbMl09InYiLGRbM109di52KTticmVhaztjYXNlImIiOmRbMl09InZ0Iisodi5mPyJmIjoiYyIpLGRbM109Im5sIixkWzRdPXYudj8iMSI6IjAiLGRbNV09dCh2LmZ8fCh2LnY/IlRSVUUiOiJGQUxTRSIpKTticmVhaztjYXNlImQiOnZhciBOPWlyKFhlKHYudikpO2RbMl09''@;'; put 'put ''InZ0YyIsZFszXT0ibmQiLGRbNF09IiIrTixkWzVdPXYud3x8UnIodi56fHxwZVsxNF0sTik7YnJlYWs7Y2FzZSJlIjpjb250aW51ZX14LnB1c2goZC5qb2luKCI6IikpfXJldHVybiB4LnB1c2goInNoZWV0OmM6IisocC5lLmMtcC5zLmMrMSkrIjpyOiIrKHAuZS5yLXAucy5yKzEpKyI6dHZm''@;'; put 'put ''OjEiKSx4LnB1c2goInZhbHVlZm9ybWF0OjE6dGV4dC13aWtpIikseC5qb2luKCJcbiIpfXJldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiBuKGgseCl7cmV0dXJuIEZ0KGEoaCx4KSx4KX0sdG9fc2hlZXQ6YSxmcm9tX3NoZWV0OmZ1bmN0aW9uIGwoaCl7cmV0dXJuW2kscyxmLHMsbyhoKSxj''@;'; put 'put ''XS5qb2luKCJcbiIpfX19KCksY2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGwsaCx4LGQsdil7di5yYXc/aFt4XVtkXT1sOiIiPT09bHx8KGhbeF1bZF09IlRSVUUiPT09bHx8IkZBTFNFIiE9PWwmJihpc05hTihKcihsKSk/aXNOYU4oYWEobCkuZ2V0RGF0ZSgpKT9sOlhlKGwpOkpyKGwpKSl9''@;'; put 'put ''dmFyIHI9ezQ0OiIsIiw5OiJcdCIsNTk6IjsiLDEyNDoifCJ9LGE9ezQ0OjMsOToyLDU5OjEsMTI0OjB9O2Z1bmN0aW9uIG4obCl7Zm9yKHZhciBoPXt9LHg9ITEsZD0wLHY9MDtkPGwubGVuZ3RoOysrZCkzND09KHY9bC5jaGFyQ29kZUF0KGQpKT94PSF4OiF4JiZ2IGluIHImJihoW3ZdPSho''@;'; put 'put ''W3ZdfHwwKSsxKTtmb3IoZCBpbiB2PVtdLGgpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsZCkmJnYucHVzaChbaFtkXSxkXSk7aWYoIXYubGVuZ3RoKWZvcihkIGluIGg9YSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCxkKSYmdi5wdXNoKFto''@;'; put 'put ''W2RdLGRdKTtyZXR1cm4gdi5zb3J0KGZ1bmN0aW9uKHUscCl7cmV0dXJuIHVbMF0tcFswXXx8YVt1WzFdXS1hW3BbMV1dfSksclt2LnBvcCgpWzFdXXx8NDR9ZnVuY3Rpb24gcyhsLGgpe3JldHVybiFofHwhaC5QUk58fGguRlN8fCJzZXA9Ij09bC5zbGljZSgwLDQpfHxsLmluZGV4T2YoIlx0''@;'; put 'put ''Iik+PTB8fGwuaW5kZXhPZigiLCIpPj0wfHxsLmluZGV4T2YoIjsiKT49MD9mdW5jdGlvbiBpKGwsaCl7dmFyIHg9aHx8e30sZD0iIjtudWxsIT16ZSYmbnVsbD09eC5kZW5zZSYmKHguZGVuc2U9emUpO3ZhciB2PXguZGVuc2U/W106e30sdT17czp7YzowLHI6MH0sZTp7YzowLHI6MH19OyJz''@;'; put 'put ''ZXA9Ij09bC5zbGljZSgwLDQpPzEzPT1sLmNoYXJDb2RlQXQoNSkmJjEwPT1sLmNoYXJDb2RlQXQoNik/KGQ9bC5jaGFyQXQoNCksbD1sLnNsaWNlKDcpKToxMz09bC5jaGFyQ29kZUF0KDUpfHwxMD09bC5jaGFyQ29kZUF0KDUpPyhkPWwuY2hhckF0KDQpLGw9bC5zbGljZSg2KSk6ZD1uKGwu''@;'; put 'put ''c2xpY2UoMCwxMDI0KSk6ZD14JiZ4LkZTP3guRlM6bihsLnNsaWNlKDAsMTAyNCkpO3ZhciBwPTAsaz0wLFQ9MCxnPTAsTj0wLE09ZC5jaGFyQ29kZUF0KDApLEk9ITEseT0wLFA9bC5jaGFyQ29kZUF0KDApO2w9bC5yZXBsYWNlKC9cclxuL2dtLCJcbiIpO3ZhciBSPW51bGwhPXguZGF0ZU5G''@;'; put 'put ''P2Z1bmN0aW9uIG5vKGUpe3ZhciB0PSJudW1iZXIiPT10eXBlb2YgZT9wZVtlXTplO3JldHVybiB0PXQucmVwbGFjZShFaSwiKFxcZCspIiksbmV3IFJlZ0V4cCgiXiIrdCsiJCIpfSh4LmRhdGVORik6bnVsbDtmdW5jdGlvbiBWKCl7dmFyIFg9bC5zbGljZShnLE4pLGI9e307aWYoJyInPT1Y''@;'; put 'put ''LmNoYXJBdCgwKSYmJyInPT1YLmNoYXJBdChYLmxlbmd0aC0xKSYmKFg9WC5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLDA9PT1YLmxlbmd0aCliLnQ9InoiO2Vsc2UgaWYoeC5yYXcpYi50PSJzIixiLnY9WDtlbHNlIGlmKDA9PT1YLnRyaW0oKS5sZW5ndGgpYi50PSJzIixiLnY9''@;'; put 'put ''WDtlbHNlIGlmKDYxPT1YLmNoYXJDb2RlQXQoMCkpMzQ9PVguY2hhckNvZGVBdCgxKSYmMzQ9PVguY2hhckNvZGVBdChYLmxlbmd0aC0xKT8oYi50PSJzIixiLnY9WC5zbGljZSgyLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpOmZ1bmN0aW9uIFJ4KGUpe3JldHVybiAxIT1lLmxlbmd0aH0oWCk/''@;'; put 'put ''KGIudD0ibiIsYi5mPVguc2xpY2UoMSkpOihiLnQ9InMiLGIudj1YKTtlbHNlIGlmKCJUUlVFIj09WCliLnQ9ImIiLGIudj0hMDtlbHNlIGlmKCJGQUxTRSI9PVgpYi50PSJiIixiLnY9ITE7ZWxzZSBpZihpc05hTihUPUpyKFgpKSlpZighaXNOYU4oYWEoWCkuZ2V0RGF0ZSgpKXx8UiYmWC5t''@;'; put 'put ''YXRjaChSKSl7Yi56PXguZGF0ZU5GfHxwZVsxNF07dmFyIGVlPTA7UiYmWC5tYXRjaChSKSYmKFg9ZnVuY3Rpb24gaW8oZSx0LHIpe3ZhciBhPS0xLG49LTEsaT0tMSxzPS0xLGY9LTEsYz0tMTsodC5tYXRjaChFaSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGgseCl7dmFyIGQ9cGFyc2VJbnQo''@;'; put 'put ''clt4KzFdLDEwKTtzd2l0Y2goaC50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKSl7Y2FzZSJ5IjphPWQ7YnJlYWs7Y2FzZSJkIjppPWQ7YnJlYWs7Y2FzZSJoIjpzPWQ7YnJlYWs7Y2FzZSJzIjpjPWQ7YnJlYWs7Y2FzZSJtIjpzPj0wP2Y9ZDpuPWR9fSksYz49MCYmLTE9PWYmJm4+PTAmJihmPW4s''@;'; put 'put ''bj0tMSk7dmFyIG89KCIiKyhhPj0wP2E6KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpKSkuc2xpY2UoLTQpKyItIisoIjAwIisobj49MT9uOjEpKS5zbGljZSgtMikrIi0iKygiMDAiKyhpPj0xP2k6MSkpLnNsaWNlKC0yKTs3PT1vLmxlbmd0aCYmKG89IjAiK28pLDg9PW8ubGVuZ3RoJiYobz0i''@;'; put 'put ''MjAiK28pO3ZhciBsPSgiMDAiKyhzPj0wP3M6MCkpLnNsaWNlKC0yKSsiOiIrKCIwMCIrKGY+PTA/ZjowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisoYz49MD9jOjApKS5zbGljZSgtMik7cmV0dXJuLTE9PXMmJi0xPT1mJiYtMT09Yz9vOi0xPT1hJiYtMT09biYmLTE9PWk/bDpvKyJUIitsfSgw''@;'; put 'put ''LHguZGF0ZU5GLFgubWF0Y2goUil8fFtdKSxlZT0xKSx4LmNlbGxEYXRlcz8oYi50PSJkIixiLnY9WGUoWCxlZSkpOihiLnQ9Im4iLGIudj1pcihYZShYLGVlKSkpLCExIT09eC5jZWxsVGV4dCYmKGIudz1ScihiLnosYi52IGluc3RhbmNlb2YgRGF0ZT9pcihiLnYpOmIudikpLHguY2VsbE5G''@;'; put 'put ''fHxkZWxldGUgYi56fWVsc2UgYi50PSJzIixiLnY9WDtlbHNlIGIudD0ibiIsITEhPT14LmNlbGxUZXh0JiYoYi53PVgpLGIudj1UO2lmKCJ6Ij09Yi50fHwoeC5kZW5zZT8odltwXXx8KHZbcF09W10pLHZbcF1ba109Yik6dltnZSh7YzprLHI6cH0pXT1iKSxQPWwuY2hhckNvZGVBdChnPU4r''@;'; put 'put ''MSksdS5lLmM8ayYmKHUuZS5jPWspLHUuZS5yPHAmJih1LmUucj1wKSx5PT1NKSsraztlbHNlIGlmKGs9MCwrK3AseC5zaGVldFJvd3MmJnguc2hlZXRSb3dzPD1wKXJldHVybiEwfWU6Zm9yKDtOPGwubGVuZ3RoOysrTilzd2l0Y2goeT1sLmNoYXJDb2RlQXQoTikpe2Nhc2UgMzQ6MzQ9PT1Q''@;'; put 'put ''JiYoST0hSSk7YnJlYWs7Y2FzZSBNOmNhc2UgMTA6Y2FzZSAxMzppZighSSYmVigpKWJyZWFrIGV9cmV0dXJuIE4tZz4wJiZWKCksdlsiIXJlZiJdPXdlKHUpLHZ9KGwsaCk6c2EoZnVuY3Rpb24gdChsLGgpe3ZhciB4PWh8fHt9LGQ9W107aWYoIWx8fDA9PT1sLmxlbmd0aClyZXR1cm4gZDtm''@;'; put 'put ''b3IodmFyIHY9bC5zcGxpdCgvW1xyXG5dLyksdT12Lmxlbmd0aC0xO3U+PTAmJjA9PT12W3VdLmxlbmd0aDspLS11O2Zvcih2YXIgcD0xMCxrPTAsVD0wO1Q8PXU7KytUKS0xPT0oaz12W1RdLmluZGV4T2YoIiAiKSk/az12W1RdLmxlbmd0aDprKysscD1NYXRoLm1heChwLGspO2ZvcihUPTA7''@;'; put 'put ''VDw9dTsrK1Qpe2RbVF09W107dmFyIGc9MDtmb3IoZSh2W1RdLnNsaWNlKDAscCkudHJpbSgpLGQsVCxnLHgpLGc9MTtnPD0odltUXS5sZW5ndGgtcCkvMTArMTsrK2cpZSh2W1RdLnNsaWNlKHArMTAqKGctMSkscCsxMCpnKS50cmltKCksZCxULGcseCl9cmV0dXJuIHguc2hlZXRSb3dzJiYo''@;'; put 'put ''ZD1kLnNsaWNlKDAseC5zaGVldFJvd3MpKSxkfShsLGgpLGgpfWZ1bmN0aW9uIGYobCxoKXt2YXIgeD0iIixkPSJzdHJpbmciPT1oLnR5cGU/WzAsMCwwLDBdOktuKGwsaCk7c3dpdGNoKGgudHlwZSl7Y2FzZSJiYXNlNjQiOng9T3IobCk7YnJlYWs7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5n''@;'; put 'put ''Ijp4PWw7YnJlYWs7Y2FzZSJidWZmZXIiOng9NjUwMDE9PWguY29kZXBhZ2U/bC50b1N0cmluZygidXRmOCIpOmguY29kZXBhZ2UmJnR5cGVvZiBPZTwidSI/T2UudXRpbHMuZGVjb2RlKGguY29kZXBhZ2UsbCk6U2UmJkJ1ZmZlci5pc0J1ZmZlcihsKT9sLnRvU3RyaW5nKCJiaW5hcnkiKTp3''@;'; put 'put ''dChsKTticmVhaztjYXNlImFycmF5Ijp4PVB0KGwpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2gudHlwZSl9cmV0dXJuIDIzOT09ZFswXSYmMTg3PT1kWzFdJiYxOTE9PWRbMl0/eD1CZSh4LnNsaWNlKDMpKToic3RyaW5nIiE9aC50eXBlJiYi''@;'; put 'put ''YnVmZmVyIiE9aC50eXBlJiY2NTAwMT09aC5jb2RlcGFnZT94PUJlKHgpOiJiaW5hcnkiPT1oLnR5cGUmJnR5cGVvZiBPZTwidSImJmguY29kZXBhZ2UmJih4PU9lLnV0aWxzLmRlY29kZShoLmNvZGVwYWdlLE9lLnV0aWxzLmVuY29kZSgyODU5MSx4KSkpLCJzb2NpYWxjYWxjOnZlcnNpb246''@;'; put 'put ''Ij09eC5zbGljZSgwLDE5KT90Zi50b19zaGVldCgic3RyaW5nIj09aC50eXBlP3g6QmUoeCksaCk6cyh4LGgpfXJldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiBjKGwsaCl7cmV0dXJuIEZ0KGYobCxoKSxoKX0sdG9fc2hlZXQ6Zixmcm9tX3NoZWV0OmZ1bmN0aW9uIG8obCl7Zm9yKHZhciBk''@;'; put 'put ''LGg9W10seD1EZShsWyIhcmVmIl0pLHY9QXJyYXkuaXNBcnJheShsKSx1PXgucy5yO3U8PXguZS5yOysrdSl7Zm9yKHZhciBwPVtdLGs9eC5zLmM7azw9eC5lLmM7KytrKXt2YXIgVD1nZSh7cjp1LGM6a30pO2lmKChkPXY/KGxbdV18fFtdKVtrXTpsW1RdKSYmbnVsbCE9ZC52KXtmb3IodmFy''@;'; put 'put ''IGc9KGQud3x8KGF0KGQpLGQudyl8fCIiKS5zbGljZSgwLDEwKTtnLmxlbmd0aDwxMDspZys9IiAiO3AucHVzaChnKygwPT09az8iICI6IiIpKX1lbHNlIHAucHVzaCgiICAgICAgICAgICIpfWgucHVzaChwLmpvaW4oIiIpKX1yZXR1cm4gaC5qb2luKCJcbiIpfX19KCksanQ9ZnVuY3Rpb24o''@;'; put 'put ''KXtmdW5jdGlvbiBlKEMsVSxPKXtpZihDKXtocihDLEMubHx8MCk7Zm9yKHZhciBEPU8uRW51bXx8eGU7Qy5sPEMubGVuZ3RoOyl7dmFyIGo9Qy5yZWFkX3NoaWZ0KDIpLHNlPURbal18fERbNjU1MzVdLFo9Qy5yZWFkX3NoaWZ0KDIpLFE9Qy5sK1osWT1zZS5mJiZzZS5mKEMsWixPKTtpZihD''@;'; put 'put ''Lmw9USxVKFksc2UsaikpcmV0dXJufX19ZnVuY3Rpb24gcihDLFUpe2lmKCFDKXJldHVybiBDO3ZhciBPPVV8fHt9O251bGwhPXplJiZudWxsPT1PLmRlbnNlJiYoTy5kZW5zZT16ZSk7dmFyIEQ9Ty5kZW5zZT9bXTp7fSxqPSJTaGVldDEiLHNlPSIiLFo9MCxRPXt9LFk9W10sRWU9W10sQT17''@;'; put 'put ''czp7cjowLGM6MH0sZTp7cjowLGM6MH19LFBlPU8uc2hlZXRSb3dzfHwwO2lmKDA9PUNbMl0mJig4PT1DWzNdfHw5PT1DWzNdKSYmQy5sZW5ndGg+PTE2JiY1PT1DWzE0XSYmMTA4PT09Q1sxNV0pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBXb3JrcyAzIGZvciBNYWMgZmlsZSIpO2lm''@;'; put 'put ''KDI9PUNbMl0pTy5FbnVtPXhlLGUoQyxmdW5jdGlvbihvZSxxZSxqcil7c3dpdGNoKGpyKXtjYXNlIDA6Ty52ZXJzPW9lLG9lPj00MDk2JiYoTy5xcHJvPSEwKTticmVhaztjYXNlIDY6QT1vZTticmVhaztjYXNlIDIwNDpvZSYmKHNlPW9lKTticmVhaztjYXNlIDIyMjpzZT1vZTticmVhaztj''@;'; put 'put ''YXNlIDE1OmNhc2UgNTE6Ty5xcHJvfHwob2VbMV0udj1vZVsxXS52LnNsaWNlKDEpKTtjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxNjoxND09anImJiEoMTEyJn5vZVsyXSkmJigxNSZvZVsyXSk+MSYmKDE1Jm9lWzJdKTwxNSYmKG9lWzFdLno9Ty5kYXRlTkZ8fHBlWzE0XSxPLmNlbGxEYXRlcyYm''@;'; put 'put ''KG9lWzFdLnQ9ImQiLG9lWzFdLnY9bzAob2VbMV0udikpKSxPLnFwcm8mJm9lWzNdPlomJihEWyIhcmVmIl09d2UoQSksUVtqXT1ELFkucHVzaChqKSxEPU8uZGVuc2U/W106e30sQT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LFo9b2VbM10saj1zZXx8IlNoZWV0IisoWisxKSxzZT0iIik7''@;'; put 'put ''dmFyIGZ0PU8uZGVuc2U/KERbb2VbMF0ucl18fFtdKVtvZVswXS5jXTpEW2dlKG9lWzBdKV07aWYoZnQpe2Z0LnQ9b2VbMV0udCxmdC52PW9lWzFdLnYsbnVsbCE9b2VbMV0ueiYmKGZ0Lno9b2VbMV0ueiksbnVsbCE9b2VbMV0uZiYmKGZ0LmY9b2VbMV0uZik7YnJlYWt9Ty5kZW5zZT8oRFtv''@;'; put 'put ''ZVswXS5yXXx8KERbb2VbMF0ucl09W10pLERbb2VbMF0ucl1bb2VbMF0uY109b2VbMV0pOkRbZ2Uob2VbMF0pXT1vZVsxXX19LE8pO2Vsc2V7aWYoMjYhPUNbMl0mJjE0IT1DWzJdKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIExPVFVTIEJPRiAiK0NbMl0pO08uRW51bT1LLDE0PT1D''@;'; put 'put ''WzJdJiYoTy5xcHJvPSEwLEMubD0wKSxlKEMsZnVuY3Rpb24ob2UscWUsanIpe3N3aXRjaChqcil7Y2FzZSAyMDQ6aj1vZTticmVhaztjYXNlIDIyOm9lWzFdLnY9b2VbMV0udi5zbGljZSgxKTtjYXNlIDIzOmNhc2UgMjQ6Y2FzZSAyNTpjYXNlIDM3OmNhc2UgMzk6Y2FzZSA0MDppZihvZVsz''@;'; put 'put ''XT5aJiYoRFsiIXJlZiJdPXdlKEEpLFFbal09RCxZLnB1c2goaiksRD1PLmRlbnNlP1tdOnt9LEE9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSxqPSJTaGVldCIrKChaPW9lWzNdKSsxKSksUGU+MCYmb2VbMF0ucj49UGUpYnJlYWs7Ty5kZW5zZT8oRFtvZVswXS5yXXx8KERbb2VbMF0ucl09''@;'; put 'put ''W10pLERbb2VbMF0ucl1bb2VbMF0uY109b2VbMV0pOkRbZ2Uob2VbMF0pXT1vZVsxXSxBLmUuYzxvZVswXS5jJiYoQS5lLmM9b2VbMF0uYyksQS5lLnI8b2VbMF0uciYmKEEuZS5yPW9lWzBdLnIpO2JyZWFrO2Nhc2UgMjc6b2VbMTRlM10mJihFZVtvZVsxNGUzXVswXV09b2VbMTRlM11bMV0p''@;'; put 'put ''O2JyZWFrO2Nhc2UgMTUzNzpFZVtvZVswXV09b2VbMV0sb2VbMF09PVomJihqPW9lWzFdKX19LE8pfWlmKERbIiFyZWYiXT13ZShBKSxRW3NlfHxqXT1ELFkucHVzaChzZXx8aiksIUVlLmxlbmd0aClyZXR1cm57U2hlZXROYW1lczpZLFNoZWV0czpRfTtmb3IodmFyIEFlPXt9LExlPVtdLENl''@;'; put 'put ''PTA7Q2U8RWUubGVuZ3RoOysrQ2UpUVtZW0NlXV0/KExlLnB1c2goRWVbQ2VdfHxZW0NlXSksQWVbRWVbQ2VdXT1RW0VlW0NlXV18fFFbWVtDZV1dKTooTGUucHVzaChFZVtDZV0pLEFlW0VlW0NlXV09eyIhcmVmIjoiQTEifSk7cmV0dXJue1NoZWV0TmFtZXM6TGUsU2hlZXRzOkFlfX1mdW5j''@;'; put 'put ''dGlvbiBvKEMsVSxPKXt2YXIgRD1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDAsMF07cmV0dXJuIE8ucXBybyYmMjA3NjghPU8udmVycz8oRFswXS5jPUMucmVhZF9zaGlmdCgxKSxEWzNdPUMucmVhZF9zaGlmdCgxKSxEWzBdLnI9Qy5yZWFkX3NoaWZ0KDIpLEMubCs9Mik6KERbMl09Qy5yZWFk''@;'; put 'put ''X3NoaWZ0KDEpLERbMF0uYz1DLnJlYWRfc2hpZnQoMiksRFswXS5yPUMucmVhZF9zaGlmdCgyKSksRH1mdW5jdGlvbiBsKEMsVSxPKXt2YXIgRD1DLmwrVSxqPW8oQywwLE8pO2lmKGpbMV0udD0icyIsMjA3Njg9PU8udmVycyl7Qy5sKys7dmFyIHNlPUMucmVhZF9zaGlmdCgxKTtyZXR1cm4g''@;'; put 'put ''alsxXS52PUMucmVhZF9zaGlmdChzZSwidXRmOCIpLGp9cmV0dXJuIE8ucXBybyYmQy5sKyssalsxXS52PUMucmVhZF9zaGlmdChELUMubCwiY3N0ciIpLGp9ZnVuY3Rpb24gaChDLFUsTyl7dmFyIEQ9Ryg3K08ubGVuZ3RoKTtELndyaXRlX3NoaWZ0KDEsMjU1KSxELndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''VSksRC53cml0ZV9zaGlmdCgyLEMpLEQud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBqPTA7ajxELmxlbmd0aDsrK2ope3ZhciBzZT1PLmNoYXJDb2RlQXQoaik7RC53cml0ZV9zaGlmdCgxLHNlPj0xMjg/OTU6c2UpfXJldHVybiBELndyaXRlX3NoaWZ0KDEsMCksRH1mdW5jdGlvbiBkKEMs''@;'; put 'put ''VSxPKXt2YXIgRD1HKDcpO3JldHVybiBELndyaXRlX3NoaWZ0KDEsMjU1KSxELndyaXRlX3NoaWZ0KDIsVSksRC53cml0ZV9zaGlmdCgyLEMpLEQud3JpdGVfc2hpZnQoMixPLCJpIiksRH1mdW5jdGlvbiB1KEMsVSxPKXt2YXIgRD1HKDEzKTtyZXR1cm4gRC53cml0ZV9zaGlmdCgxLDI1NSks''@;'; put 'put ''RC53cml0ZV9zaGlmdCgyLFUpLEQud3JpdGVfc2hpZnQoMixDKSxELndyaXRlX3NoaWZ0KDgsTywiZiIpLER9ZnVuY3Rpb24gayhDLFUsTyl7dmFyIEQ9MzI3NjgmVTtyZXR1cm4gVT0oRD9DOjApKygoVSY9LTMyNzY5KT49ODE5Mj9VLTE2Mzg0OlUpLChEPyIiOiIkIikrKE8/SGUoVSk6S2Uo''@;'; put 'put ''VSkpfXZhciBUPXs1MTpbIkZBTFNFIiwwXSw1MjpbIlRSVUUiLDBdLDcwOlsiTEVOIiwxXSw4MDpbIlNVTSIsNjldLDgxOlsiQVZFUkFHRUEiLDY5XSw4MjpbIkNPVU5UQSIsNjldLDgzOlsiTUlOQSIsNjldLDg0OlsiTUFYQSIsNjldLDExMTpbIlQiLDFdfSxnPVsiIiwiIiwiIiwiIiwiIiwi''@;'; put 'put ''IiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gTShDKXt2YXIgVT1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBVWzBdLnI9Qy5yZWFkX3No''@;'; put 'put ''aWZ0KDIpLFVbM109Q1tDLmwrK10sVVswXS5jPUNbQy5sKytdLFV9ZnVuY3Rpb24geShDLFUsTyxEKXt2YXIgaj1HKDYrRC5sZW5ndGgpO2oud3JpdGVfc2hpZnQoMixDKSxqLndyaXRlX3NoaWZ0KDEsTyksai53cml0ZV9zaGlmdCgxLFUpLGoud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciBz''@;'; put 'put ''ZT0wO3NlPEQubGVuZ3RoOysrc2Upe3ZhciBaPUQuY2hhckNvZGVBdChzZSk7ai53cml0ZV9zaGlmdCgxLFo+PTEyOD85NTpaKX1yZXR1cm4gai53cml0ZV9zaGlmdCgxLDApLGp9ZnVuY3Rpb24gUihDLFUpe3ZhciBPPU0oQyksRD1DLnJlYWRfc2hpZnQoNCksaj1DLnJlYWRfc2hpZnQoNCks''@;'; put 'put ''c2U9Qy5yZWFkX3NoaWZ0KDIpO2lmKDY1NTM1PT1zZSlyZXR1cm4gMD09PUQmJjMyMjEyMjU0NzI9PT1qPyhPWzFdLnQ9ImUiLE9bMV0udj0xNSk6MD09PUQmJjM0ODk2NjA5Mjg9PT1qPyhPWzFdLnQ9ImUiLE9bMV0udj00Mik6T1sxXS52PTAsTzt2YXIgWj0zMjc2OCZzZTtyZXR1cm4gc2U9''@;'; put 'put ''KDMyNzY3JnNlKS0xNjQ0NixPWzFdLnY9KDEtMipaKSooaipNYXRoLnBvdygyLHNlKzMyKStEKk1hdGgucG93KDIsc2UpKSxPfWZ1bmN0aW9uIFYoQyxVLE8sRCl7dmFyIGo9RygxNCk7aWYoai53cml0ZV9zaGlmdCgyLEMpLGoud3JpdGVfc2hpZnQoMSxPKSxqLndyaXRlX3NoaWZ0KDEsVSks''@;'; put 'put ''MD09RClyZXR1cm4gai53cml0ZV9zaGlmdCg0LDApLGoud3JpdGVfc2hpZnQoNCwwKSxqLndyaXRlX3NoaWZ0KDIsNjU1MzUpLGo7dmFyIHNlPTAsWj0wLFk9MDtyZXR1cm4gRDwwJiYoc2U9MSxEPS1EKSxaPTB8TWF0aC5sb2cyKEQpLDIxNDc0ODM2NDgmKFk9KEQvPU1hdGgucG93KDIsWi0z''@;'; put 'put ''MSkpPj4+MCl8fCgrK1osWT0oRC89Mik+Pj4wKSxELT1ZLFl8PTIxNDc0ODM2NDgsWT4+Pj0wLEQqPU1hdGgucG93KDIsMzIpLGoud3JpdGVfc2hpZnQoNCxEPj4+MCksai53cml0ZV9zaGlmdCg0LFkpLGoud3JpdGVfc2hpZnQoMixaKz0xNjM4Mysoc2U/MzI3Njg6MCkpLGp9ZnVuY3Rpb24g''@;'; put 'put ''ZWUoQyxVKXt2YXIgTz1NKEMpLEQ9Qy5yZWFkX3NoaWZ0KDgsImYiKTtyZXR1cm4gT1sxXS52PUQsT31mdW5jdGlvbiByZShDLFUpe3JldHVybiAwPT1DW0MubCtVLTFdP0MucmVhZF9zaGlmdChVLCJjc3RyIik6IiJ9ZnVuY3Rpb24gY2UoQyxVKXt2YXIgTz1HKDUrQy5sZW5ndGgpO08ud3Jp''@;'; put 'put ''dGVfc2hpZnQoMiwxNGUzKSxPLndyaXRlX3NoaWZ0KDIsVSk7Zm9yKHZhciBEPTA7RDxDLmxlbmd0aDsrK0Qpe3ZhciBqPUMuY2hhckNvZGVBdChEKTtPW08ubCsrXT1qPjEyNz85NTpqfXJldHVybiBPW08ubCsrXT0wLE99dmFyIHhlPXswOntuOiJCT0YiLGY6dHJ9LDE6e246IkVPRiJ9LDI6''@;'; put 'put ''e246IkNBTENNT0RFIn0sMzp7bjoiQ0FMQ09SREVSIn0sNDp7bjoiU1BMSVQifSw1OntuOiJTWU5DIn0sNjp7bjoiUkFOR0UiLGY6ZnVuY3Rpb24gZihDLFUsTyl7dmFyIEQ9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtyZXR1cm4gOD09VSYmTy5xcHJvPyhELnMuYz1DLnJlYWRfc2hpZnQo''@;'; put 'put ''MSksQy5sKyssRC5zLnI9Qy5yZWFkX3NoaWZ0KDIpLEQuZS5jPUMucmVhZF9zaGlmdCgxKSxDLmwrKyxELmUucj1DLnJlYWRfc2hpZnQoMiksRCk6KEQucy5jPUMucmVhZF9zaGlmdCgyKSxELnMucj1DLnJlYWRfc2hpZnQoMiksMTI9PVUmJk8ucXBybyYmKEMubCs9MiksRC5lLmM9Qy5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpLEQuZS5yPUMucmVhZF9zaGlmdCgyKSwxMj09VSYmTy5xcHJvJiYoQy5sKz0yKSw2NTUzNT09RC5zLmMmJihELnMuYz1ELmUuYz1ELnMucj1ELmUucj0wKSxEKX19LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRXTyJ9LDEwOntuOiJDT0xXMiJ9LDEx''@;'; put 'put ''OntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6ZnVuY3Rpb24geChDLFUsTyl7dmFyIEQ9byhDLDAsTyk7cmV0dXJuIERbMV0udj1DLnJlYWRfc2hpZnQoMiwiaSIpLER9fSwxNDp7bjoiTlVNQkVSIixmOmZ1bmN0aW9uIHYoQyxVLE8pe3ZhciBEPW8oQywwLE8p''@;'; put 'put ''O3JldHVybiBEWzFdLnY9Qy5yZWFkX3NoaWZ0KDgsImYiKSxEfX0sMTU6e246IkxBQkVMIixmOmx9LDE2OntuOiJGT1JNVUxBIixmOmZ1bmN0aW9uIHAoQyxVLE8pe3ZhciBEPUMubCtVLGo9byhDLDAsTyk7aWYoalsxXS52PUMucmVhZF9zaGlmdCg4LCJmIiksTy5xcHJvKUMubD1EO2Vsc2V7''@;'; put 'put ''dmFyIHNlPUMucmVhZF9zaGlmdCgyKTsoZnVuY3Rpb24gTihDLFUpe2hyKEMsMCk7Zm9yKHZhciBPPVtdLEQ9MCxqPSIiLHNlPSIiLFo9IiIsUT0iIjtDLmw8Qy5sZW5ndGg7KXt2YXIgWT1DW0MubCsrXTtzd2l0Y2goWSl7Y2FzZSAwOk8ucHVzaChDLnJlYWRfc2hpZnQoOCwiZiIpKTticmVh''@;'; put 'put ''aztjYXNlIDE6c2U9ayhVWzBdLmMsQy5yZWFkX3NoaWZ0KDIpLCEwKSxqPWsoVVswXS5yLEMucmVhZF9zaGlmdCgyKSwhMSksTy5wdXNoKHNlK2opO2JyZWFrO2Nhc2UgMjp2YXIgRWU9ayhVWzBdLmMsQy5yZWFkX3NoaWZ0KDIpLCEwKSxBPWsoVVswXS5yLEMucmVhZF9zaGlmdCgyKSwhMSk7''@;'; put 'put ''c2U9ayhVWzBdLmMsQy5yZWFkX3NoaWZ0KDIpLCEwKSxqPWsoVVswXS5yLEMucmVhZF9zaGlmdCgyKSwhMSksTy5wdXNoKEVlK0ErIjoiK3NlK2opO2JyZWFrO2Nhc2UgMzppZihDLmw8Qy5sZW5ndGgpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiV0sxIHByZW1hdHVyZSBmb3JtdWxhIGVu''@;'; put 'put ''ZCIpO2JyZWFrO2Nhc2UgNDpPLnB1c2goIigiK08ucG9wKCkrIikiKTticmVhaztjYXNlIDU6Ty5wdXNoKEMucmVhZF9zaGlmdCgyKSk7YnJlYWs7Y2FzZSA2OmZvcih2YXIgUGU9IiI7WT1DW0MubCsrXTspUGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoWSk7Ty5wdXNoKCciJytQZS5yZXBsYWNl''@;'; put 'put ''KC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIDg6Ty5wdXNoKCItIitPLnBvcCgpKTticmVhaztjYXNlIDIzOk8ucHVzaCgiKyIrTy5wb3AoKSk7YnJlYWs7Y2FzZSAyMjpPLnB1c2goIk5PVCgiK08ucG9wKCkrIikiKTticmVhaztjYXNlIDIwOmNhc2UgMjE6UT1PLnBvcCgpLFo9Ty5wb3Ao''@;'; put 'put ''KSxPLnB1c2goWyJBTkQiLCJPUiJdW1ktMjBdKyIoIitaKyIsIitRKyIpIik7YnJlYWs7ZGVmYXVsdDppZihZPDMyJiZnW1ldKVE9Ty5wb3AoKSxaPU8ucG9wKCksTy5wdXNoKForZ1tZXStRKTtlbHNle2lmKCFUW1ldKXJldHVybiBZPD03P2NvbnNvbGUuZXJyb3IoIldLMSBpbnZhbGlkIG9w''@;'; put 'put ''Y29kZSAiK1kudG9TdHJpbmcoMTYpKTpZPD0yND9jb25zb2xlLmVycm9yKCJXSzEgdW5zdXBwb3J0ZWQgb3AgIitZLnRvU3RyaW5nKDE2KSk6WTw9MzA/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrWS50b1N0cmluZygxNikpOlk8PTExNT9jb25zb2xlLmVycm9yKCJXSzEg''@;'; put 'put ''dW5zdXBwb3J0ZWQgZnVuY3Rpb24gb3Bjb2RlICIrWS50b1N0cmluZygxNikpOmNvbnNvbGUuZXJyb3IoIldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlICIrWS50b1N0cmluZygxNikpO2lmKDY5PT0oRD1UW1ldWzFdKSYmKEQ9Q1tDLmwrK10pLEQ+Ty5sZW5ndGgpcmV0dXJuIHZvaWQgY29uc29s''@;'; put 'put ''ZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIDB4IitZLnRvU3RyaW5nKDE2KSsiOnwiK08uam9pbigifCIpKyJ8Iik7dmFyIEFlPU8uc2xpY2UoLUQpO08ubGVuZ3RoLT1ELE8ucHVzaChUW1ldWzBdKyIoIitBZS5qb2luKCIsIikrIikiKX19fTE9PU8ubGVuZ3RoP1VbMV0uZj0iIitP''@;'; put 'put ''WzBdOmNvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSB8IitPLmpvaW4oInwiKSsifCIpfSkoQy5zbGljZShDLmwsQy5sK3NlKSxqKSxDLmwrPXNlfXJldHVybiBqfX0sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoiU1JBTkdF''@;'; put 'put ''In0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBST1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFCRUxGTVQi''@;'; put 'put ''fSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTENDT1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjpsfSw1NTp7''@;'; put 'put ''bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYyOntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0s''@;'; put 'put ''Njg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9''@;'; put 'put ''LDEwNTp7bjoiTVJBTkdFUz8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpyZX0sMjIyOntuOiJTSEVFVE5BTUVMUCIsZjpmdW5jdGlvbiBkZShDLFUpe3ZhciBPPUNbQy5sKytdO08+VS0xJiYoTz1VLTEpO2Zvcih2YXIgRD0iIjtELmxlbmd0aDxPOylEKz1TdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KENbQy5sKytdKTtyZXR1cm4gRH19LDY1NTM1OntuOiIifX0sSz17MDp7bjoiQk9GIn0sMTp7bjoiRU9GIn0sMjp7bjoiUEFTU1dPUkQifSwzOntuOiJDQUxDU0VUIn0sNDp7bjoiV0lORE9XU0VUIn0sNTp7bjoiU0hFRVRDRUxMUFRSIn0sNjp7bjoiU0hFRVRMQVlPVVQifSw3OntuOiJDT0xV''@;'; put 'put ''TU5XSURUSCJ9LDg6e246IkhJRERFTkNPTFVNTiJ9LDk6e246IlVTRVJSQU5HRSJ9LDEwOntuOiJTWVNURU1SQU5HRSJ9LDExOntuOiJaRVJPRk9SQ0UifSwxMjp7bjoiU09SVEtFWURJUiJ9LDEzOntuOiJGSUxFU0VBTCJ9LDE0OntuOiJEQVRBRklMTE5VTVMifSwxNTp7bjoiUFJJTlRNQUlO''@;'; put 'put ''In0sMTY6e246IlBSSU5UU1RSSU5HIn0sMTc6e246IkdSQVBITUFJTiJ9LDE4OntuOiJHUkFQSFNUUklORyJ9LDE5OntuOiI/PyJ9LDIwOntuOiJFUlJDRUxMIn0sMjE6e246Ik5BQ0VMTCJ9LDIyOntuOiJMQUJFTDE2IixmOmZ1bmN0aW9uIEkoQyxVKXt2YXIgTz1NKEMpO3JldHVybiBPWzFd''@;'; put 'put ''LnQ9InMiLE9bMV0udj1DLnJlYWRfc2hpZnQoVS00LCJjc3RyIiksT319LDIzOntuOiJOVU1CRVIxNyIsZjpSfSwyNDp7bjoiTlVNQkVSMTgiLGY6ZnVuY3Rpb24gUChDLFUpe3ZhciBPPU0oQyk7T1sxXS52PUMucmVhZF9zaGlmdCgyKTt2YXIgRD1PWzFdLnY+PjE7aWYoMSZPWzFdLnYpc3dp''@;'; put 'put ''dGNoKDcmRCl7Y2FzZSAwOkQ9NWUzKihEPj4zKTticmVhaztjYXNlIDE6RD01MDAqKEQ+PjMpO2JyZWFrO2Nhc2UgMjpEPShEPj4zKS8yMDticmVhaztjYXNlIDM6RD0oRD4+MykvMjAwO2JyZWFrO2Nhc2UgNDpEPShEPj4zKS8yZTM7YnJlYWs7Y2FzZSA1OkQ9KEQ+PjMpLzJlNDticmVhaztj''@;'; put 'put ''YXNlIDY6RD0oRD4+MykvMTY7YnJlYWs7Y2FzZSA3OkQ9KEQ+PjMpLzY0fXJldHVybiBPWzFdLnY9RCxPfX0sMjU6e246IkZPUk1VTEExOSIsZjpmdW5jdGlvbiBYKEMsVSl7dmFyIE89UihDKTtyZXR1cm4gQy5sKz1VLTE0LE99fSwyNjp7bjoiRk9STVVMQTFBIn0sMjc6e246IlhGT1JNQVQi''@;'; put 'put ''LGY6ZnVuY3Rpb24gRmUoQyxVKXtmb3IodmFyIE89e30sRD1DLmwrVTtDLmw8RDspe3ZhciBqPUMucmVhZF9zaGlmdCgyKTtpZigxNGUzPT1qKXtmb3IoT1tqXT1bMCwiIl0sT1tqXVswXT1DLnJlYWRfc2hpZnQoMik7Q1tDLmxdOylPW2pdWzFdKz1TdHJpbmcuZnJvbUNoYXJDb2RlKENbQy5s''@;'; put 'put ''XSksQy5sKys7Qy5sKyt9fXJldHVybiBPfX0sMjg6e246IkRUTEFCRUxNSVNDIn0sMjk6e246IkRUTEFCRUxDRUxMIn0sMzA6e246IkdSQVBIV0lORE9XIn0sMzE6e246IkNQQSJ9LDMyOntuOiJMUExBVVRPIn0sMzM6e246IlFVRVJZIn0sMzQ6e246IkhJRERFTlNIRUVUIn0sMzU6e246Ij8/''@;'; put 'put ''In0sMzc6e246Ik5VTUJFUjI1IixmOmZ1bmN0aW9uIGIoQyxVKXt2YXIgTz1NKEMpLEQ9Qy5yZWFkX3NoaWZ0KDQpO3JldHVybiBPWzFdLnY9RD4+NixPfX0sMzg6e246Ij8/In0sMzk6e246Ik5VTUJFUjI3IixmOmVlfSw0MDp7bjoiRk9STVVMQTI4IixmOmZ1bmN0aW9uIGxlKEMsVSl7dmFy''@;'; put 'put ''IE89ZWUoQyk7cmV0dXJuIEMubCs9VS0xMCxPfX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0sMTYzOntuOiI/PyJ9LDE3NDp7''@;'; put 'put ''bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpyZX0s''@;'; put 'put ''MjA1OntuOiI/PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/''@;'; put 'put ''PyJ9LDI2ODp7bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoiPz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7''@;'; put 'put ''bjoiPz8ifSw2NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2''@;'; put 'put ''NjE6e246Ij8/In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNTM3OntuOiJTSEVFVElORk9RUCIsZjpmdW5jdGlvbiB1ZShDLFUsTyl7aWYoTy5xcHJvJiYhKFU8MjEpKXt2YXIgRD1DLnJlYWRfc2hpZnQoMSk7cmV0''@;'; put 'put ''dXJuIEMubCs9MTcsQy5sKz0xLEMubCs9MixbRCxDLnJlYWRfc2hpZnQoVS0yMSwiY3N0ciIpXX19fSwxNjAwOntuOiI/PyJ9LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9LDIwNDg6e246''@;'; put 'put ''Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fTtyZXR1cm57c2hlZXRfdG9fd2sxOmZ1bmN0aW9uIGEoQyxVKXt2YXIgTz1V''@;'; put 'put ''fHx7fTtpZigrTy5jb2RlcGFnZT49MCYmTXIoK08uY29kZXBhZ2UpLCJzdHJpbmciPT1PLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgV0sxIHRvIEpTIHN0cmluZyIpO3ZhciBEPVNyKCksaj1EZShDWyIhcmVmIl0pLHNlPUFycmF5LmlzQXJyYXkoQyksWj1bXTthZShELDAs''@;'; put 'put ''ZnVuY3Rpb24gaShDKXt2YXIgVT1HKDIpO3JldHVybiBVLndyaXRlX3NoaWZ0KDIsQyksVX0oMTAzMCkpLGFlKEQsNixmdW5jdGlvbiBjKEMpe3ZhciBVPUcoOCk7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixDLnMuYyksVS53cml0ZV9zaGlmdCgyLEMucy5yKSxVLndyaXRlX3NoaWZ0KDIsQy5l''@;'; put 'put ''LmMpLFUud3JpdGVfc2hpZnQoMixDLmUuciksVX0oaikpO2Zvcih2YXIgUT1NYXRoLm1pbihqLmUuciw4MTkxKSxZPWoucy5yO1k8PVE7KytZKWZvcih2YXIgRWU9S2UoWSksQT1qLnMuYztBPD1qLmUuYzsrK0Epe1k9PT1qLnMuciYmKFpbQV09SGUoQSkpO3ZhciBBZT1zZT8oQ1tZXXx8W10p''@;'; put 'put ''W0FdOkNbWltBXStFZV07QWUmJiJ6IiE9QWUudCYmKCJuIj09QWUudD8oMHxBZS52KT09QWUudiYmQWUudj49LTMyNzY4JiZBZS52PD0zMjc2Nz9hZShELDEzLGQoWSxBLEFlLnYpKTphZShELDE0LHUoWSxBLEFlLnYpKTphZShELDE1LGgoWSxBLGF0KEFlKS5zbGljZSgwLDIzOSkpKSl9cmV0''@;'; put 'put ''dXJuIGFlKEQsMSksRC5lbmQoKX0sYm9va190b193azM6ZnVuY3Rpb24gbihDLFUpe3ZhciBPPVV8fHt9O2lmKCtPLmNvZGVwYWdlPj0wJiZNcigrTy5jb2RlcGFnZSksInN0cmluZyI9PU8udHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFy''@;'; put 'put ''IEQ9U3IoKTthZShELDAsZnVuY3Rpb24gcyhDKXt2YXIgVT1HKDI2KTtVLndyaXRlX3NoaWZ0KDIsNDA5NiksVS53cml0ZV9zaGlmdCgyLDQpLFUud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIE89MCxEPTAsaj0wLHNlPTA7c2U8Qy5TaGVldE5hbWVzLmxlbmd0aDsrK3NlKXt2YXIgUT1DLlNo''@;'; put 'put ''ZWV0c1tDLlNoZWV0TmFtZXNbc2VdXTtpZihRJiZRWyIhcmVmIl0peysrajt2YXIgWT1QcihRWyIhcmVmIl0pO088WS5lLnImJihPPVkuZS5yKSxEPFkuZS5jJiYoRD1ZLmUuYyl9fXJldHVybiBPPjgxOTEmJihPPTgxOTEpLFUud3JpdGVfc2hpZnQoMixPKSxVLndyaXRlX3NoaWZ0KDEsaiks''@;'; put 'put ''VS53cml0ZV9zaGlmdCgxLEQpLFUud3JpdGVfc2hpZnQoMiwwKSxVLndyaXRlX3NoaWZ0KDIsMCksVS53cml0ZV9zaGlmdCgxLDEpLFUud3JpdGVfc2hpZnQoMSwyKSxVLndyaXRlX3NoaWZ0KDQsMCksVS53cml0ZV9zaGlmdCg0LDApLFV9KEMpKTtmb3IodmFyIGo9MCxzZT0wO2o8Qy5TaGVl''@;'; put 'put ''dE5hbWVzLmxlbmd0aDsrK2opKEMuU2hlZXRzW0MuU2hlZXROYW1lc1tqXV18fHt9KVsiIXJlZiJdJiZhZShELDI3LGNlKEMuU2hlZXROYW1lc1tqXSxzZSsrKSk7dmFyIFo9MDtmb3Ioaj0wO2o8Qy5TaGVldE5hbWVzLmxlbmd0aDsrK2ope3ZhciBRPUMuU2hlZXRzW0MuU2hlZXROYW1lc1tq''@;'; put 'put ''XV07aWYoUSYmUVsiIXJlZiJdKXtmb3IodmFyIFk9RGUoUVsiIXJlZiJdKSxFZT1BcnJheS5pc0FycmF5KFEpLEE9W10sUGU9TWF0aC5taW4oWS5lLnIsODE5MSksQWU9WS5zLnI7QWU8PVBlOysrQWUpZm9yKHZhciBMZT1LZShBZSksQ2U9WS5zLmM7Q2U8PVkuZS5jOysrQ2Upe0FlPT09WS5z''@;'; put 'put ''LnImJihBW0NlXT1IZShDZSkpO3ZhciBxZT1FZT8oUVtBZV18fFtdKVtDZV06UVtBW0NlXStMZV07cWUmJiJ6IiE9cWUudCYmKCJuIj09cWUudD9hZShELDIzLFYoQWUsQ2UsWixxZS52KSk6YWUoRCwyMix5KEFlLENlLFosYXQocWUpLnNsaWNlKDAsMjM5KSkpKX0rK1p9fXJldHVybiBhZShE''@;'; put 'put ''LDEpLEQuZW5kKCl9LHRvX3dvcmtib29rOmZ1bmN0aW9uIHQoQyxVKXtzd2l0Y2goVS50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIHIoSXIoT3IoQykpLFUpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gcihJcihDKSxVKTtjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6cmV0dXJuIHIoQyxVKX10aHJv''@;'; put 'put ''dyJVbnN1cHBvcnRlZCB0eXBlICIrVS50eXBlfX19KCksd2g9ZnVuY3Rpb24oKXt2YXIgZT1GYSgidCIpLHQ9RmEoInJQciIpO2Z1bmN0aW9uIHIoaSl7dmFyIHM9aS5tYXRjaChlKTtpZighcylyZXR1cm57dDoicyIsdjoiIn07dmFyIGY9e3Q6InMiLHY6SWUoc1sxXSl9LGM9aS5tYXRjaCh0''@;'; put 'put ''KTtyZXR1cm4gYyYmKGYucz1mdW5jdGlvbiBfaChlKXt2YXIgdD17fSxyPWUubWF0Y2godnIpLGE9MCxuPSExO2lmKHIpZm9yKDthIT1yLmxlbmd0aDsrK2Epe3ZhciBpPW1lKHJbYV0pO3N3aXRjaChpWzBdLnJlcGxhY2UoL1x3KjovZywiIikpe2Nhc2UiPGNvbmRlbnNlIjpjYXNlIjxleHRl''@;'; put 'put ''bmQiOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHNoYWRvdz4iOmNhc2UiPHNoYWRvdy8+Ijp0LnNoYWRvdz0xO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZigiMSI9PWkudmFsKWJyZWFrO3QuY3A9TDBbcGFyc2VJbnQoaS52''@;'; put 'put ''YWwsMTApXTticmVhaztjYXNlIjxvdXRsaW5lIjppZighaS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6dC5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9udCI6dC5uYW1lPWkudmFsO2JyZWFrO2Nhc2UiPHN6Ijp0LnN6''@;'; put 'put ''PWkudmFsO2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+Ijp0LnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1IjppZighaS52YWwpYnJlYWs7c3dpdGNoKGkudmFsKXtjYXNlImRvdWJsZSI6''@;'; put 'put ''dC51dmFsPSJkb3VibGUiO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6dC51dmFsPSJzaW5nbGUtYWNjb3VudGluZyI7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjp0LnV2YWw9ImRvdWJsZS1hY2NvdW50aW5nIn1jYXNlIjx1PiI6Y2FzZSI8dS8+Ijp0LnU9MTticmVhaztjYXNl''@;'; put 'put ''IjwvdT4iOmJyZWFrO2Nhc2UiPGIiOmlmKCIwIj09aS52YWwpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6dC5iPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZigiMCI9PWkudmFsKWJyZWFrO2Nhc2UiPGk+IjpjYXNlIjxpLz4iOnQuaT0xO2JyZWFrO2Nhc2UiPC9pPiI6''@;'; put 'put ''YnJlYWs7Y2FzZSI8Y29sb3IiOmkucmdiJiYodC5jb2xvcj1pLnJnYi5zbGljZSgyLDgpKTticmVhaztjYXNlIjxjb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6dC5mYW1pbHk9aS52YWw7YnJlYWs7Y2FzZSI8ZmFtaWx5PiI6Y2FzZSI8''@;'; put 'put ''ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOnQudmFsaWduPWkudmFsO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbj4iOmNhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6Y2FzZSI8c2NoZW1lIjpjYXNlIjxzY2hlbWU+IjpjYXNlIjxzY2hl''@;'; put 'put ''bWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bj0hMDticmVhaztjYXNlIjwvZXh0PiI6bj0hMTticmVhaztkZWZhdWx0OmlmKDQ3IT09aVswXS5jaGFyQ29kZUF0KDEpJiYhbil0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlVucmVjb2duaXplZCByaWNoIGZvcm1hdCAiK2lbMF0pfX1yZXR1cm4gdH0oY1sxXSkpLGZ9dmFyIGE9LzwoPzpcdys6KT9yPi9nLG49LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIHMucmVwbGFjZShhLCIiKS5zcGxpdChuKS5tYXAocikuZmls''@;'; put 'put ''dGVyKGZ1bmN0aW9uKGYpe3JldHVybiBmLnZ9KX19KCksa2g9ZnVuY3Rpb24oKXt2YXIgdD0vKFxyXG58XG4pL2c7ZnVuY3Rpb24gYShuKXt2YXIgaT1bW10sbi52LFtdXTtyZXR1cm4gbi52PyhuLnMmJmZ1bmN0aW9uIHIobixpLHMpe3ZhciBmPVtdO24udSYmZi5wdXNoKCJ0ZXh0LWRlY29y''@;'; put 'put ''YXRpb246IHVuZGVybGluZTsiKSxuLnV2YWwmJmYucHVzaCgidGV4dC11bmRlcmxpbmUtc3R5bGU6IituLnV2YWwrIjsiKSxuLnN6JiZmLnB1c2goImZvbnQtc2l6ZToiK24uc3orInB0OyIpLG4ub3V0bGluZSYmZi5wdXNoKCJ0ZXh0LWVmZmVjdDogb3V0bGluZTsiKSxuLnNoYWRvdyYmZi5w''@;'; put 'put ''dXNoKCJ0ZXh0LXNoYWRvdzogYXV0bzsiKSxpLnB1c2goJzxzcGFuIHN0eWxlPSInK2Yuam9pbigiIikrJyI+Jyksbi5iJiYoaS5wdXNoKCI8Yj4iKSxzLnB1c2goIjwvYj4iKSksbi5pJiYoaS5wdXNoKCI8aT4iKSxzLnB1c2goIjwvaT4iKSksbi5zdHJpa2UmJihpLnB1c2goIjxzPiIpLHMu''@;'; put 'put ''cHVzaCgiPC9zPiIpKTt2YXIgYz1uLnZhbGlnbnx8IiI7InN1cGVyc2NyaXB0Ij09Y3x8InN1cGVyIj09Yz9jPSJzdXAiOiJzdWJzY3JpcHQiPT1jJiYoYz0ic3ViIiksIiIhPWMmJihpLnB1c2goIjwiK2MrIj4iKSxzLnB1c2goIjwvIitjKyI+IikpLHMucHVzaCgiPC9zcGFuPiIpfShuLnMs''@;'; put 'put ''aVswXSxpWzJdKSxpWzBdLmpvaW4oIiIpK2lbMV0ucmVwbGFjZSh0LCI8YnIvPiIpK2lbMl0uam9pbigiIikpOiIifXJldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gaS5tYXAoYSkuam9pbigiIil9fSgpLEVoPS88KD86XHcrOik/dFtePl0qPihbXjxdKik8XC8oPzpcdys6KT90Pi9nLFRoPS88''@;'; put 'put ''KD86XHcrOik/cj4vLFNoPS88KD86XHcrOik/clBoLio/PihbXHNcU10qPyk8XC8oPzpcdys6KT9yUGg+L2c7ZnVuY3Rpb24gU24oZSx0KXt2YXIgcj0hdHx8dC5jZWxsSFRNTCxhPXt9O3JldHVybiBlPyhlLm1hdGNoKC9eXHMqPCg/Olx3KzopP3RbXj5dKj4vKT8oYS50PUllKEJlKGUuc2xp''@;'; put 'put ''Y2UoZS5pbmRleE9mKCI+IikrMSkuc3BsaXQoLzxcLyg/Olx3KzopP3Q+LylbMF18fCIiKSksYS5yPUJlKGUpLHImJihhLmg9JDAoYS50KSkpOmUubWF0Y2goVGgpJiYoYS5yPUJlKGUpLGEudD1JZShCZSgoZS5yZXBsYWNlKFNoLCIiKS5tYXRjaChFaCl8fFtdKS5qb2luKCIiKS5yZXBsYWNl''@;'; put 'put ''KHZyLCIiKSkpLHImJihhLmg9a2god2goYS5yKSkpKSxhKTp7dDoiIn19dmFyIEZoPS88KD86XHcrOik/c3N0KFtePl0qKT4oW1xzXFNdKik8XC8oPzpcdys6KT9zc3Q+Lyx5aD0vPCg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi9nLEFoPS88XC8oPzpcdys6KT8oPzpzaXxzc3RJdGVtKT4vO2Z1''@;'; put 'put ''bmN0aW9uIG5mKGUpe2lmKHR5cGVvZiBPZTwidSIpcmV0dXJuIE9lLnV0aWxzLmVuY29kZShSdCxlKTtmb3IodmFyIHQ9W10scj1lLnNwbGl0KCIiKSxhPTA7YTxyLmxlbmd0aDsrK2EpdFthXT1yW2FdLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHR9ZnVuY3Rpb24gZHQoZSx0KXt2YXIgcj17fTty''@;'; put 'put ''ZXR1cm4gci5NYWpvcj1lLnJlYWRfc2hpZnQoMiksci5NaW5vcj1lLnJlYWRfc2hpZnQoMiksdD49NCYmKGUubCs9dC00KSxyfWZ1bmN0aW9uIExoKGUpe2Zvcih2YXIgdD1lLnJlYWRfc2hpZnQoNCkscj1lLmwrdC00LGE9e30sbj1lLnJlYWRfc2hpZnQoNCksaT1bXTtuLS0gPjA7KWkucHVz''@;'; put 'put ''aCh7dDplLnJlYWRfc2hpZnQoNCksdjplLnJlYWRfc2hpZnQoMCwibHBwNCIpfSk7aWYoYS5uYW1lPWUucmVhZF9zaGlmdCgwLCJscHA0IiksYS5jb21wcz1pLGUubCE9cil0aHJvdyBuZXcgRXJyb3IoIkJhZCBEYXRhU3BhY2VNYXBFbnRyeTogIitlLmwrIiAhPSAiK3IpO3JldHVybiBhfWZ1''@;'; put 'put ''bmN0aW9uIHNmKGUsdCl7dmFyIHI9ZS5sK3QsYT17fTthLkZsYWdzPTYzJmUucmVhZF9zaGlmdCg0KSxlLmwrPTQsYS5BbGdJRD1lLnJlYWRfc2hpZnQoNCk7dmFyIG49ITE7c3dpdGNoKGEuQWxnSUQpe2Nhc2UgMjYxMjY6Y2FzZSAyNjEyNzpjYXNlIDI2MTI4Om49MzY9PWEuRmxhZ3M7YnJl''@;'; put 'put ''YWs7Y2FzZSAyNjYyNTpuPTQ9PWEuRmxhZ3M7YnJlYWs7Y2FzZSAwOm49MTY9PWEuRmxhZ3N8fDQ9PWEuRmxhZ3N8fDM2PT1hLkZsYWdzO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAiK2EuQWxnSUR9aWYoIW4pdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJFbmNyeXB0aW9uIEZsYWdzL0FsZ0lEIG1pc21hdGNoIik7cmV0dXJuIGEuQWxnSURIYXNoPWUucmVhZF9zaGlmdCg0KSxhLktleVNpemU9ZS5yZWFkX3NoaWZ0KDQpLGEuUHJvdmlkZXJUeXBlPWUucmVhZF9zaGlmdCg0KSxlLmwrPTgsYS5DU1BOYW1lPWUucmVhZF9zaGlmdChyLWUubD4+''@;'; put 'put ''MSwidXRmMTZsZSIpLGUubD1yLGF9ZnVuY3Rpb24gZmYoZSx0KXt2YXIgcj17fSxhPWUubCt0O3JldHVybiBlLmwrPTQsci5TYWx0PWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixyLlZlcmlmaWVyPWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixlLnJlYWRfc2hpZnQoNCksci5WZXJp''@;'; put 'put ''Zmllckhhc2g9ZS5zbGljZShlLmwsYSksZS5sPWEscn1mdW5jdGlvbiBWaChlKXtpZigzNiE9KDYzJmUucmVhZF9zaGlmdCg0KSkpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uSW5mbyBtaXNtYXRjaCIpO3ZhciByPWUucmVhZF9zaGlmdCg0KTtyZXR1cm57dDoiU3RkIixoOnNmKGUsciks''@;'; put 'put ''djpmZihlLGUubGVuZ3RoLWUubCl9fWZ1bmN0aW9uIFhoKCl7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIEdoKGUpe3ZhciB0PVsic2FsdFNpemUiLCJibG9ja1NpemUiLCJrZXlCaXRzIiwiaGFzaFNp''@;'; put 'put ''emUiLCJjaXBoZXJBbGdvcml0aG0iLCJjaXBoZXJDaGFpbmluZyIsImhhc2hBbGdvcml0aG0iLCJzYWx0VmFsdWUiXTtlLmwrPTQ7dmFyIHI9ZS5yZWFkX3NoaWZ0KGUubGVuZ3RoLWUubCwidXRmOCIpLGE9e307cmV0dXJuIHIucmVwbGFjZSh2cixmdW5jdGlvbihpKXt2YXIgcz1tZShpKTtz''@;'; put 'put ''d2l0Y2gocnQoc1swXSkpe2Nhc2UiPD94bWwiOmNhc2UiPGVuY3J5cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6Y2FzZSI8L2tleUVuY3J5cHRvcnM+IjpjYXNlIjwva2V5RW5jcnlwdG9yPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6dC5mb3JFYWNoKGZ1bmN0aW9uKGYpe2FbZl09c1tmXX0p''@;'; put 'put ''O2JyZWFrO2Nhc2UiPGRhdGFJbnRlZ3JpdHkiOmEuZW5jcnlwdGVkSG1hY0tleT1zLmVuY3J5cHRlZEhtYWNLZXksYS5lbmNyeXB0ZWRIbWFjVmFsdWU9cy5lbmNyeXB0ZWRIbWFjVmFsdWU7YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9ycz4iOmNhc2UiPGtleUVuY3J5cHRvcnMiOmEuZW5jcz1b''@;'; put 'put ''XTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3IiOmEudXJpPXMudXJpO2JyZWFrO2Nhc2UiPGVuY3J5cHRlZEtleSI6YS5lbmNzLnB1c2gocyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBzWzBdfX0pLGF9dmFyIGNmPWZ1bmN0aW9uKCl7dmFyIGU9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwx''@;'; put 'put ''MjgsMCwxOTAsMTUsMCwxOTEsMTUsMF0sdD1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10scj1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3NjEsMzE1ODUs''@;'; put 'put ''NjMxNzAsNjQ5MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4NDg1LDU2OTcw''@;'; put 'put ''LDQ0MzQxLDE5MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwxNzgyNCwzNTY0''@;'; put 'put ''OCwxNjk3LDMzOTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2MjEwLDUyNDIw''@;'; put 'put ''LDM1MjQxLDg4MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0sbj1mdW5jdGlvbihzLGYpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gMjU1JihzLzJ8MTI4KnMpfShzXmYpfTtyZXR1cm4gZnVuY3Rpb24ocyl7Zm9yKHZhciBmPW5mKHMpLGM9ZnVu''@;'; put 'put ''Y3Rpb24ocyl7Zm9yKHZhciBmPXRbcy5sZW5ndGgtMV0sYz0xMDQsbz1zLmxlbmd0aC0xO28+PTA7LS1vKWZvcih2YXIgbD1zW29dLGg9MDs3IT1oOysraCk2NCZsJiYoZl49cltjXSksbCo9MiwtLWM7cmV0dXJuIGZ9KGYpLG89Zi5sZW5ndGgsbD1fdCgxNiksaD0wOzE2IT1oOysraClsW2hd''@;'; put 'put ''PTA7dmFyIHY7Zm9yKCEoMSZ+bykmJihsW29dPW4oZVswXSxjPj44KSxsWy0tb109bihmW2YubGVuZ3RoLTFdLDI1NSZjKSk7bz4wOylsWy0tb109bihmW29dLGM+PjgpLGxbLS1vXT1uKGZbb10sMjU1JmMpO2ZvcihvPTE1LHY9MTUtZi5sZW5ndGg7dj4wOylsW29dPW4oZVt2XSxjPj44KSwt''@;'; put 'put ''LXYsbFstLW9dPW4oZltvXSwyNTUmYyksLS1vLC0tdjtyZXR1cm4gbH19KCk7dmFyIG9mPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShuLGkpe3N3aXRjaChpLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gdChPcihuKSxpKTtjYXNlImJpbmFyeSI6cmV0dXJuIHQobixpKTtjYXNlImJ1ZmZlciI6''@;'; put 'put ''cmV0dXJuIHQoU2UmJkJ1ZmZlci5pc0J1ZmZlcihuKT9uLnRvU3RyaW5nKCJiaW5hcnkiKTp3dChuKSxpKTtjYXNlImFycmF5IjpyZXR1cm4gdChQdChuKSxpKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIraS50eXBlKX1mdW5jdGlvbiB0KG4saSl7dmFyIGY9KGl8fHt9''@;'; put 'put ''KS5kZW5zZT9bXTp7fSxjPW4ubWF0Y2goL1xcdHJvd2QuKj9cXHJvd1xiL2cpO2lmKCFjLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlJURiBtaXNzaW5nIHRhYmxlIik7dmFyIG89e3M6e2M6MCxyOjB9LGU6e2M6MCxyOmMubGVuZ3RoLTF9fTtyZXR1cm4gYy5mb3JFYWNoKGZ1bmN0aW9uKGws''@;'; put 'put ''aCl7QXJyYXkuaXNBcnJheShmKSYmKGZbaF09W10pO2Zvcih2YXIgdix4PS9cXFx3K1xiL2csZD0wLHU9LTE7dj14LmV4ZWMobCk7KXtpZigiXFxjZWxsIj09PXZbMF0pe3ZhciBwPWwuc2xpY2UoZCx4Lmxhc3RJbmRleC12WzBdLmxlbmd0aCk7aWYoIiAiPT1wWzBdJiYocD1wLnNsaWNlKDEp''@;'; put 'put ''KSwrK3UscC5sZW5ndGgpe3ZhciBrPXt2OnAsdDoicyJ9O0FycmF5LmlzQXJyYXkoZik/ZltoXVt1XT1rOmZbZ2Uoe3I6aCxjOnV9KV09a319ZD14Lmxhc3RJbmRleH11Pm8uZS5jJiYoby5lLmM9dSl9KSxmWyIhcmVmIl09d2UobyksZn1yZXR1cm57dG9fd29ya2Jvb2s6ZnVuY3Rpb24gcihu''@;'; put 'put ''LGkpe3JldHVybiBGdChlKG4saSksaSl9LHRvX3NoZWV0OmUsZnJvbV9zaGVldDpmdW5jdGlvbiBhKG4pe2Zvcih2YXIgZixpPVsie1xccnRmMVxcYW5zaSJdLHM9RGUoblsiIXJlZiJdKSxjPUFycmF5LmlzQXJyYXkobiksbz1zLnMucjtvPD1zLmUucjsrK28pe2kucHVzaCgiXFx0cm93ZFxc''@;'; put 'put ''dHJhdXRvZml0MSIpO2Zvcih2YXIgbD1zLnMuYztsPD1zLmUuYzsrK2wpaS5wdXNoKCJcXGNlbGx4IisobCsxKSk7Zm9yKGkucHVzaCgiXFxwYXJkXFxpbnRibCIpLGw9cy5zLmM7bDw9cy5lLmM7KytsKXt2YXIgaD1nZSh7cjpvLGM6bH0pOyhmPWM/KG5bb118fFtdKVtsXTpuW2hdKSYmKG51''@;'; put 'put ''bGwhPWYudnx8Zi5mJiYhZi5GKSYmKGkucHVzaCgiICIrKGYud3x8KGF0KGYpLGYudykpKSxpLnB1c2goIlxcY2VsbCIpKX1pLnB1c2goIlxccGFyZFxcaW50YmxcXHJvdyIpfXJldHVybiBpLmpvaW4oIiIpKyJ9In19fSgpO2Z1bmN0aW9uIGJhKGUpe2Zvcih2YXIgdD0wLHI9MTszIT10Oysr''@;'; put 'put ''dClyPTI1NipyKyhlW3RdPjI1NT8yNTU6ZVt0XTwwPzA6ZVt0XSk7cmV0dXJuIHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSl9ZnVuY3Rpb24gVDAoZSx0KXtpZigwPT09dClyZXR1cm4gZTt2YXIgcj1mdW5jdGlvbiBRaChlKXt2YXIgdD1lWzBdLzI1NSxyPWVbMV0vMjU1''@;'; put 'put ''LGE9ZVsyXS8yNTUsbj1NYXRoLm1heCh0LHIsYSksaT1NYXRoLm1pbih0LHIsYSkscz1uLWk7aWYoMD09PXMpcmV0dXJuWzAsMCx0XTt2YXIgYyxmPTAsbz1uK2k7c3dpdGNoKGM9cy8obz4xPzItbzpvKSxuKXtjYXNlIHQ6Zj0oKHItYSkvcys2KSU2O2JyZWFrO2Nhc2UgcjpmPShhLXQpL3Mr''@;'; put 'put ''MjticmVhaztjYXNlIGE6Zj0odC1yKS9zKzR9cmV0dXJuW2YvNixjLG8vMl19KGZ1bmN0aW9uIFpoKGUpe3ZhciB0PWUuc2xpY2UoIiMiPT09ZVswXT8xOjApLnNsaWNlKDAsNik7cmV0dXJuW3BhcnNlSW50KHQuc2xpY2UoMCwyKSwxNikscGFyc2VJbnQodC5zbGljZSgyLDQpLDE2KSxwYXJz''@;'; put 'put ''ZUludCh0LnNsaWNlKDQsNiksMTYpXX0oZSkpO3JldHVybiByWzJdPXQ8MD9yWzJdKigxK3QpOjEtKDEtclsyXSkqKDEtdCksYmEoZnVuY3Rpb24gZTEoZSl7dmFyIGMscj1lWzFdLGE9ZVsyXSxuPTIqciooYTwuNT9hOjEtYSksaT1hLW4vMixzPVtpLGksaV0sZj02KmVbMF07aWYoMCE9PXIp''@;'; put 'put ''c3dpdGNoKDB8Zil7Y2FzZSAwOmNhc2UgNjpjPW4qZixzWzBdKz1uLHNbMV0rPWM7YnJlYWs7Y2FzZSAxOnNbMF0rPWM9biooMi1mKSxzWzFdKz1uO2JyZWFrO2Nhc2UgMjpjPW4qKGYtMiksc1sxXSs9bixzWzJdKz1jO2JyZWFrO2Nhc2UgMzpzWzFdKz1jPW4qKDQtZiksc1syXSs9bjticmVh''@;'; put 'put ''aztjYXNlIDQ6Yz1uKihmLTQpLHNbMl0rPW4sc1swXSs9YzticmVhaztjYXNlIDU6c1syXSs9Yz1uKig2LWYpLHNbMF0rPW59Zm9yKHZhciBvPTA7MyE9bzsrK28pc1tvXT1NYXRoLnJvdW5kKDI1NSpzW29dKTtyZXR1cm4gc30ocikpfXZhciBsZj02LHIxPTE1LHQxPTEsd3I9bGY7ZnVuY3Rp''@;'; put 'put ''b24gUGEoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUrTWF0aC5yb3VuZCgxMjgvd3IpLzI1Nikqd3IpfWZ1bmN0aW9uIExhKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTUpL3dyKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIFMwKGUpe3JldHVybiBNYXRoLnJvdW5kKChlKndyKzUpL3dyKjI1NikvMjU2''@;'; put 'put ''fWZ1bmN0aW9uIHluKGUpe3JldHVybiBTMChMYShQYShlKSkpfWZ1bmN0aW9uIEFuKGUpe3ZhciB0PU1hdGguYWJzKGUteW4oZSkpLHI9d3I7aWYodD4uMDA1KWZvcih3cj10MTt3cjxyMTsrK3dyKU1hdGguYWJzKGUteW4oZSkpPD10JiYodD1NYXRoLmFicyhlLXluKGUpKSxyPXdyKTt3cj1y''@;'; put 'put ''fWZ1bmN0aW9uIEt0KGUpe2Uud2lkdGg/KGUud3B4PVBhKGUud2lkdGgpLGUud2NoPUxhKGUud3B4KSxlLk1EVz13cik6ZS53cHg/KGUud2NoPUxhKGUud3B4KSxlLndpZHRoPVMwKGUud2NoKSxlLk1EVz13cik6Im51bWJlciI9PXR5cGVvZiBlLndjaCYmKGUud2lkdGg9UzAoZS53Y2gpLGUu''@;'; put 'put ''d3B4PVBhKGUud2lkdGgpLGUuTURXPXdyKSxlLmN1c3RvbVdpZHRoJiZkZWxldGUgZS5jdXN0b21XaWR0aH12YXIgdWY9OTY7ZnVuY3Rpb24gQmEoZSl7cmV0dXJuIDk2KmUvdWZ9ZnVuY3Rpb24gb2EoZSl7cmV0dXJuIGUqdWYvOTZ9dmFyIG4xPXtOb25lOiJub25lIixTb2xpZDoic29saWQi''@;'; put 'put ''LEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFn''@;'; put 'put ''Q3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRH''@;'; put 'put ''cmlkIn0sRjA9WyJudW1GbXRJZCIsImZpbGxJZCIsImZvbnRJZCIsImJvcmRlcklkIiwieGZJZCJdLHkwPVsiYXBwbHlBbGlnbm1lbnQiLCJhcHBseUJvcmRlciIsImFwcGx5RmlsbCIsImFwcGx5Rm9udCIsImFwcGx5TnVtYmVyRm9ybWF0IiwiYXBwbHlQcm90ZWN0aW9uIiwicGl2b3RCdXR0''@;'; put 'put ''b24iLCJxdW90ZVByZWZpeCJdLGgxPWZ1bmN0aW9uKCl7dmFyIHQ9LzwoPzpcdys6KT9udW1GbXRzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP251bUZtdHM+LyxyPS88KD86XHcrOik/Y2VsbFhmcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsWGZzPi8sYT0vPCg/Olx3Kzop''@;'; put 'put ''P2ZpbGxzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZpbGxzPi8sbj0vPCg/Olx3KzopP2ZvbnRzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZvbnRzPi8saT0vPCg/Olx3KzopP2JvcmRlcnMoW14+XSopPltcU1xzXSo/PFwvKD86XHcrOik/Ym9yZGVycz4vO3JldHVybiBmdW5j''@;'; put 'put ''dGlvbihmLGMsbyl7dmFyIGgsbD17fTtyZXR1cm4gZj8oKGg9KGY9Zi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwiIikucmVwbGFjZSgvPCFET0NUWVBFW15cW10qXFtbXlxdXSpcXT4vZ20sIiIpKS5tYXRjaCh0KSkmJmZ1bmN0aW9uIGMxKGUsdCxyKXt0Lk51bWJlckZtdD1bXTtm''@;'; put 'put ''b3IodmFyIGE9JGUocGUpLG49MDtuPGEubGVuZ3RoOysrbil0Lk51bWJlckZtdFthW25dXT1wZVthW25dXTt2YXIgaT1lWzBdLm1hdGNoKHZyKTtpZihpKWZvcihuPTA7bjxpLmxlbmd0aDsrK24pe3ZhciBzPW1lKGlbbl0pO3N3aXRjaChydChzWzBdKSl7Y2FzZSI8bnVtRm10cyI6Y2FzZSI8''@;'; put 'put ''L251bUZtdHM+IjpjYXNlIjxudW1GbXRzLz4iOmNhc2UiPG51bUZtdHM+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp2YXIgZj1JZShCZShzLmZvcm1hdENvZGUpKSxjPXBhcnNlSW50KHMubnVtRm10SWQsMTApO2lmKHQuTnVtYmVyRm10W2NdPWYsYz4wKXtpZihjPjM5''@;'; put 'put ''Mil7Zm9yKGM9MzkyO2M+NjAmJm51bGwhPXQuTnVtYmVyRm10W2NdOy0tYyk7dC5OdW1iZXJGbXRbY109Zn1ldChmLGMpfWJyZWFrO2RlZmF1bHQ6aWYoci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gbnVtRm10cyIpfX19KGgsbCxvKSwoaD1mLm1hdGNo''@;'; put 'put ''KG4pKSYmZnVuY3Rpb24gZjEoZSx0LHIsYSl7dC5Gb250cz1bXTt2YXIgbj17fSxpPSExOyhlWzBdLm1hdGNoKHZyKXx8W10pLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGY9bWUocyk7c3dpdGNoKHJ0KGZbMF0pKXtjYXNlIjxmb250cyI6Y2FzZSI8Zm9udHM+IjpjYXNlIjwvZm9udHM+Ijpj''@;'; put 'put ''YXNlIjxmb250IjpjYXNlIjxmb250PiI6Y2FzZSI8bmFtZS8+IjpjYXNlIjwvbmFtZT4iOmNhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmNhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpjYXNlIjxzY2hlbWUvPiI6Y2Fz''@;'; put 'put ''ZSI8L3NjaGVtZT4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+Ijp0LkZvbnRzLnB1c2gobiksbj17fTticmVhaztjYXNlIjxuYW1lIjpmLnZh''@;'; put 'put ''bCYmKG4ubmFtZT1CZShmLnZhbCkpO2JyZWFrO2Nhc2UiPGIiOm4uYm9sZD1mLnZhbD9XZShmLnZhbCk6MTticmVhaztjYXNlIjxiLz4iOm4uYm9sZD0xO2JyZWFrO2Nhc2UiPGkiOm4uaXRhbGljPWYudmFsP1dlKGYudmFsKToxO2JyZWFrO2Nhc2UiPGkvPiI6bi5pdGFsaWM9MTticmVhaztj''@;'; put 'put ''YXNlIjx1Ijpzd2l0Y2goZi52YWwpe2Nhc2Uibm9uZSI6bi51bmRlcmxpbmU9MDticmVhaztjYXNlInNpbmdsZSI6bi51bmRlcmxpbmU9MTticmVhaztjYXNlImRvdWJsZSI6bi51bmRlcmxpbmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOm4udW5kZXJsaW5lPTMzO2JyZWFrO2Nh''@;'; put 'put ''c2UiZG91YmxlQWNjb3VudGluZyI6bi51bmRlcmxpbmU9MzR9YnJlYWs7Y2FzZSI8dS8+IjpuLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiPHN0cmlrZSI6bi5zdHJpa2U9Zi52YWw/V2UoZi52YWwpOjE7YnJlYWs7Y2FzZSI8c3RyaWtlLz4iOm4uc3RyaWtlPTE7YnJlYWs7Y2FzZSI8b3V0bGlu''@;'; put 'put ''ZSI6bi5vdXRsaW5lPWYudmFsP1dlKGYudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6bi5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8c2hhZG93IjpuLnNoYWRvdz1mLnZhbD9XZShmLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6bi5zaGFkb3c9MTticmVhaztjYXNlIjxjb25kZW5z''@;'; put 'put ''ZSI6bi5jb25kZW5zZT1mLnZhbD9XZShmLnZhbCk6MTticmVhaztjYXNlIjxjb25kZW5zZS8+IjpuLmNvbmRlbnNlPTE7YnJlYWs7Y2FzZSI8ZXh0ZW5kIjpuLmV4dGVuZD1mLnZhbD9XZShmLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6bi5leHRlbmQ9MTticmVhaztjYXNlIjxzeiI6''@;'; put 'put ''Zi52YWwmJihuLnN6PStmLnZhbCk7YnJlYWs7Y2FzZSI8dmVydEFsaWduIjpmLnZhbCYmKG4udmVydEFsaWduPWYudmFsKTticmVhaztjYXNlIjxmYW1pbHkiOmYudmFsJiYobi5mYW1pbHk9cGFyc2VJbnQoZi52YWwsMTApKTticmVhaztjYXNlIjxzY2hlbWUiOmYudmFsJiYobi5zY2hlbWU9''@;'; put 'put ''Zi52YWwpO2JyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09Zi52YWwpYnJlYWs7Zi5jb2RlcGFnZT1MMFtwYXJzZUludChmLnZhbCwxMCldO2JyZWFrO2Nhc2UiPGNvbG9yIjppZihuLmNvbG9yfHwobi5jb2xvcj17fSksZi5hdXRvJiYobi5jb2xvci5hdXRvPVdlKGYuYXV0bykpLGYucmdi''@;'; put 'put ''KW4uY29sb3IucmdiPWYucmdiLnNsaWNlKC02KTtlbHNlIGlmKGYuaW5kZXhlZCl7bi5jb2xvci5pbmRleD1wYXJzZUludChmLmluZGV4ZWQsMTApO3ZhciBjPVZ0W24uY29sb3IuaW5kZXhdOzgxPT1uLmNvbG9yLmluZGV4JiYoYz1WdFsxXSksY3x8KGM9VnRbMV0pLG4uY29sb3IucmdiPWNb''@;'; put 'put ''MF0udG9TdHJpbmcoMTYpK2NbMV0udG9TdHJpbmcoMTYpK2NbMl0udG9TdHJpbmcoMTYpfWVsc2UgZi50aGVtZSYmKG4uY29sb3IudGhlbWU9cGFyc2VJbnQoZi50aGVtZSwxMCksZi50aW50JiYobi5jb2xvci50aW50PXBhcnNlRmxvYXQoZi50aW50KSksZi50aGVtZSYmci50aGVtZUVsZW1l''@;'; put 'put ''bnRzJiZyLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiYobi5jb2xvci5yZ2I9VDAoci50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtuLmNvbG9yLnRoZW1lXS5yZ2Isbi5jb2xvci50aW50fHwwKSkpO2JyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPGV4dCI6aT0hMDticmVhaztj''@;'; put 'put ''YXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOmNhc2UiPC9leHQ+IjppPSExO2JyZWFrO2RlZmF1bHQ6aWYoYSYmYS5XVEYmJiFpKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrZlswXSsiIGluIGZvbnRzIil9fSl9KGgsbCxjLG8pLChoPWYubWF0Y2goYSkpJiZmdW5jdGlvbiBzMShl''@;'; put 'put ''LHQscixhKXt0LkZpbGxzPVtdO3ZhciBuPXt9LGk9ITE7KGVbMF0ubWF0Y2godnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgZj1tZShzKTtzd2l0Y2gocnQoZlswXSkpe2Nhc2UiPGZpbGxzIjpjYXNlIjxmaWxscz4iOmNhc2UiPC9maWxscz4iOmNhc2UiPC9maWxsPiI6Y2FzZSI8''@;'; put 'put ''Z3JhZGllbnRGaWxsPiI6Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6Y2FzZSI8YmdDb2xvci8+IjpjYXNlIjwvYmdDb2xvcj4iOmNhc2UiPGZnQ29sb3IvPiI6Y2FzZSI8L2ZnQ29sb3I+IjpjYXNlIjxzdG9wIjpjYXNlIjxzdG9wLz4iOmNhc2UiPC9zdG9wPiI6''@;'; put 'put ''Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGZpbGw+IjpjYXNlIjxmaWxsIjpjYXNlIjxmaWxsLz4iOnQuRmlsbHMucHVzaChuPXt9KTticmVhaztjYXNlIjxn''@;'; put 'put ''cmFkaWVudEZpbGwiOmNhc2UiPC9ncmFkaWVudEZpbGw+Ijp0LkZpbGxzLnB1c2gobiksbj17fTticmVhaztjYXNlIjxwYXR0ZXJuRmlsbCI6Y2FzZSI8cGF0dGVybkZpbGw+IjpmLnBhdHRlcm5UeXBlJiYobi5wYXR0ZXJuVHlwZT1mLnBhdHRlcm5UeXBlKTticmVhaztjYXNlIjxiZ0NvbG9y''@;'; put 'put ''IjpuLmJnQ29sb3J8fChuLmJnQ29sb3I9e30pLGYuaW5kZXhlZCYmKG4uYmdDb2xvci5pbmRleGVkPXBhcnNlSW50KGYuaW5kZXhlZCwxMCkpLGYudGhlbWUmJihuLmJnQ29sb3IudGhlbWU9cGFyc2VJbnQoZi50aGVtZSwxMCkpLGYudGludCYmKG4uYmdDb2xvci50aW50PXBhcnNlRmxvYXQo''@;'; put 'put ''Zi50aW50KSksZi5yZ2ImJihuLmJnQ29sb3IucmdiPWYucmdiLnNsaWNlKC02KSk7YnJlYWs7Y2FzZSI8ZmdDb2xvciI6bi5mZ0NvbG9yfHwobi5mZ0NvbG9yPXt9KSxmLnRoZW1lJiYobi5mZ0NvbG9yLnRoZW1lPXBhcnNlSW50KGYudGhlbWUsMTApKSxmLnRpbnQmJihuLmZnQ29sb3IudGlu''@;'; put 'put ''dD1wYXJzZUZsb2F0KGYudGludCkpLG51bGwhPWYucmdiJiYobi5mZ0NvbG9yLnJnYj1mLnJnYi5zbGljZSgtNikpO2JyZWFrO2Nhc2UiPGV4dCI6aT0hMDticmVhaztjYXNlIjwvZXh0PiI6aT0hMTticmVhaztkZWZhdWx0OmlmKGEmJmEuV1RGJiYhaSl0aHJvdyBuZXcgRXJyb3IoInVucmVj''@;'; put 'put ''b2duaXplZCAiK2ZbMF0rIiBpbiBmaWxscyIpfX0pfShoLGwsMCxvKSwoaD1mLm1hdGNoKGkpKSYmZnVuY3Rpb24gaTEoZSx0LHIsYSl7dC5Cb3JkZXJzPVtdO3ZhciBuPXt9LGk9ITE7KGVbMF0ubWF0Y2godnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgZj1tZShzKTtzd2l0Y2go''@;'; put 'put ''cnQoZlswXSkpe2Nhc2UiPGJvcmRlcnMiOmNhc2UiPGJvcmRlcnM+IjpjYXNlIjwvYm9yZGVycz4iOmNhc2UiPC9ib3JkZXI+IjpjYXNlIjxsZWZ0Lz4iOmNhc2UiPGxlZnQiOmNhc2UiPGxlZnQ+IjpjYXNlIjwvbGVmdD4iOmNhc2UiPHJpZ2h0Lz4iOmNhc2UiPHJpZ2h0IjpjYXNlIjxyaWdo''@;'; put 'put ''dD4iOmNhc2UiPC9yaWdodD4iOmNhc2UiPHRvcC8+IjpjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOmNhc2UiPC90b3A+IjpjYXNlIjxib3R0b20vPiI6Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpjYXNlIjwvYm90dG9tPiI6Y2FzZSI8ZGlhZ29uYWwiOmNhc2UiPGRpYWdvbmFsPiI6Y2Fz''@;'; put 'put ''ZSI8ZGlhZ29uYWwvPiI6Y2FzZSI8L2RpYWdvbmFsPiI6Y2FzZSI8aG9yaXpvbnRhbCI6Y2FzZSI8aG9yaXpvbnRhbD4iOmNhc2UiPGhvcml6b250YWwvPiI6Y2FzZSI8L2hvcml6b250YWw+IjpjYXNlIjx2ZXJ0aWNhbCI6Y2FzZSI8dmVydGljYWw+IjpjYXNlIjx2ZXJ0aWNhbC8+IjpjYXNl''@;'; put 'put ''IjwvdmVydGljYWw+IjpjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjpjYXNlIjxzdGFydC8+IjpjYXNlIjwvc3RhcnQ+IjpjYXNlIjxlbmQiOmNhc2UiPGVuZD4iOmNhc2UiPGVuZC8+IjpjYXNlIjwvZW5kPiI6Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6Y2FzZSI8Y29sb3IvPiI6Y2Fz''@;'; put 'put ''ZSI8L2NvbG9yPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6bj17fSxmLmRpYWdvbmFsVXAmJihuLmRpYWdvbmFsVXA9V2UoZi5kaWFnb25hbFVwKSksZi5kaWFn''@;'; put 'put ''b25hbERvd24mJihuLmRpYWdvbmFsRG93bj1XZShmLmRpYWdvbmFsRG93bikpLHQuQm9yZGVycy5wdXNoKG4pO2JyZWFrO2Nhc2UiPGV4dCI6aT0hMDticmVhaztjYXNlIjwvZXh0PiI6aT0hMTticmVhaztkZWZhdWx0OmlmKGEmJmEuV1RGJiYhaSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2du''@;'; put 'put ''aXplZCAiK2ZbMF0rIiBpbiBib3JkZXJzIil9fSl9KGgsbCwwLG8pLChoPWYubWF0Y2gocikpJiZmdW5jdGlvbiBsMShlLHQscil7dC5DZWxsWGY9W107dmFyIGEsbj0hMTsoZVswXS5tYXRjaCh2cil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBzPW1lKGkpLGY9MDtzd2l0Y2gocnQo''@;'; put 'put ''c1swXSkpe2Nhc2UiPGNlbGxYZnMiOmNhc2UiPGNlbGxYZnM+IjpjYXNlIjxjZWxsWGZzLz4iOmNhc2UiPC9jZWxsWGZzPiI6Y2FzZSI8L3hmPiI6Y2FzZSI8L2FsaWdubWVudD4iOmNhc2UiPHByb3RlY3Rpb24iOmNhc2UiPC9wcm90ZWN0aW9uPiI6Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNl''@;'; put 'put ''IjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Zm9yKGRlbGV0ZShhPXMpWzBdLGY9MDtmPEYwLmxlbmd0aDsrK2YpYVtGMFtmXV0mJihhW0YwW2ZdXT1wYXJzZUludChhW0YwW2ZdXSwxMCkpO2ZvcihmPTA7Zjx5MC5s''@;'; put 'put ''ZW5ndGg7KytmKWFbeTBbZl1dJiYoYVt5MFtmXV09V2UoYVt5MFtmXV0pKTtpZih0Lk51bWJlckZtdCYmYS5udW1GbXRJZD4zOTIpZm9yKGY9MzkyO2Y+NjA7LS1mKWlmKHQuTnVtYmVyRm10W2EubnVtRm10SWRdPT10Lk51bWJlckZtdFtmXSl7YS5udW1GbXRJZD1mO2JyZWFrfXQuQ2VsbFhm''@;'; put 'put ''LnB1c2goYSk7YnJlYWs7Y2FzZSI8YWxpZ25tZW50IjpjYXNlIjxhbGlnbm1lbnQvPiI6dmFyIGM9e307cy52ZXJ0aWNhbCYmKGMudmVydGljYWw9cy52ZXJ0aWNhbCkscy5ob3Jpem9udGFsJiYoYy5ob3Jpem9udGFsPXMuaG9yaXpvbnRhbCksbnVsbCE9cy50ZXh0Um90YXRpb24mJihjLnRl''@;'; put 'put ''eHRSb3RhdGlvbj1zLnRleHRSb3RhdGlvbikscy5pbmRlbnQmJihjLmluZGVudD1zLmluZGVudCkscy53cmFwVGV4dCYmKGMud3JhcFRleHQ9V2Uocy53cmFwVGV4dCkpLGEuYWxpZ25tZW50PWM7YnJlYWs7Y2FzZSI8QWx0ZXJuYXRlQ29udGVudCI6Y2FzZSI8ZXh0IjpuPSEwO2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9BbHRlcm5hdGVDb250ZW50PiI6Y2FzZSI8L2V4dD4iOm49ITE7YnJlYWs7ZGVmYXVsdDppZihyJiZyLldURiYmIW4pdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY2VsbFhmcyIpfX0pfShoLGwsbyksbCk6bH19KCksZzE9cHIsdzE9cHIsUDE9WyI8L2E6''@;'; put 'put ''bHQxPiIsIjwvYTpkazE+IiwiPC9hOmx0Mj4iLCI8L2E6ZGsyPiIsIjwvYTphY2NlbnQxPiIsIjwvYTphY2NlbnQyPiIsIjwvYTphY2NlbnQzPiIsIjwvYTphY2NlbnQ0PiIsIjwvYTphY2NlbnQ1PiIsIjwvYTphY2NlbnQ2PiIsIjwvYTpobGluaz4iLCI8L2E6Zm9sSGxpbms+Il07ZnVuY3Rp''@;'; put 'put ''b24gTDEoZSx0LHIpe3QudGhlbWVFbGVtZW50cy5jbHJTY2hlbWU9W107dmFyIGE9e307KGVbMF0ubWF0Y2godnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1tZShuKTtzd2l0Y2goaVswXSl7Y2FzZSI8YTpjbHJTY2hlbWUiOmNhc2UiPC9hOmNsclNjaGVtZT4iOmJyZWFrO2Nh''@;'; put 'put ''c2UiPGE6c3JnYkNsciI6YS5yZ2I9aS52YWw7YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOmEucmdiPWkubGFzdENscjticmVhaztjYXNlIjxhOmRrMT4iOmNhc2UiPC9hOmRrMT4iOmNhc2UiPGE6bHQxPiI6Y2FzZSI8L2E6bHQxPiI6Y2FzZSI8YTpkazI+IjpjYXNlIjwvYTpkazI+IjpjYXNlIjxh''@;'; put 'put ''Omx0Mj4iOmNhc2UiPC9hOmx0Mj4iOmNhc2UiPGE6YWNjZW50MT4iOmNhc2UiPC9hOmFjY2VudDE+IjpjYXNlIjxhOmFjY2VudDI+IjpjYXNlIjwvYTphY2NlbnQyPiI6Y2FzZSI8YTphY2NlbnQzPiI6Y2FzZSI8L2E6YWNjZW50Mz4iOmNhc2UiPGE6YWNjZW50ND4iOmNhc2UiPC9hOmFjY2Vu''@;'; put 'put ''dDQ+IjpjYXNlIjxhOmFjY2VudDU+IjpjYXNlIjwvYTphY2NlbnQ1PiI6Y2FzZSI8YTphY2NlbnQ2PiI6Y2FzZSI8L2E6YWNjZW50Nj4iOmNhc2UiPGE6aGxpbms+IjpjYXNlIjwvYTpobGluaz4iOmNhc2UiPGE6Zm9sSGxpbms+IjpjYXNlIjwvYTpmb2xIbGluaz4iOiIvIj09PWlbMF0uY2hh''@;'; put 'put ''ckF0KDEpPyh0LnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW1AxLmluZGV4T2YoaVswXSldPWEsYT17fSk6YS5uYW1lPWlbMF0uc2xpY2UoMyxpWzBdLmxlbmd0aC0xKTticmVhaztkZWZhdWx0OmlmKHImJnIuV1RGKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICIraVswXSsiIGluIGNs''@;'; put 'put ''clNjaGVtZSIpfX0pfWZ1bmN0aW9uIEIxKCl7fWZ1bmN0aW9uIE0xKCl7fXZhciBVMT0vPGE6Y2xyU2NoZW1lKFtePl0qKT5bXHNcU10qPFwvYTpjbHJTY2hlbWU+LyxXMT0vPGE6Zm9udFNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Zm9udFNjaGVtZT4vLEgxPS88YTpmbXRTY2hlbWUoW14+''@;'; put 'put ''XSopPltcc1xTXSo8XC9hOmZtdFNjaGVtZT4vLFgxPS88YTp0aGVtZUVsZW1lbnRzKFtePl0qKT5bXHNcU10qPFwvYTp0aGVtZUVsZW1lbnRzPi87ZnVuY3Rpb24gdmYoZSx0KXsoIWV8fDA9PT1lLmxlbmd0aCkmJihlPWZ1bmN0aW9uIERuKGUsdCl7aWYodCYmdC50aGVtZVhMU1gpcmV0dXJu''@;'; put 'put ''IHQudGhlbWVYTFNYO2lmKGUmJiJzdHJpbmciPT10eXBlb2YgZS5yYXcpcmV0dXJuIGUucmF3O3ZhciByPVtlcl07cmV0dXJuIHJbci5sZW5ndGhdPSc8YTp0aGVtZSB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIgbmFtZT0i''@;'; put 'put ''T2ZmaWNlIFRoZW1lIj4nLHJbci5sZW5ndGhdPSI8YTp0aGVtZUVsZW1lbnRzPiIscltyLmxlbmd0aF09JzxhOmNsclNjaGVtZSBuYW1lPSJPZmZpY2UiPicscltyLmxlbmd0aF09JzxhOmRrMT48YTpzeXNDbHIgdmFsPSJ3aW5kb3dUZXh0IiBsYXN0Q2xyPSIwMDAwMDAiLz48L2E6ZGsxPics''@;'; put 'put ''cltyLmxlbmd0aF09JzxhOmx0MT48YTpzeXNDbHIgdmFsPSJ3aW5kb3ciIGxhc3RDbHI9IkZGRkZGRiIvPjwvYTpsdDE+JyxyW3IubGVuZ3RoXT0nPGE6ZGsyPjxhOnNyZ2JDbHIgdmFsPSIxRjQ5N0QiLz48L2E6ZGsyPicscltyLmxlbmd0aF09JzxhOmx0Mj48YTpzcmdiQ2xyIHZhbD0iRUVF''@;'; put 'put ''Q0UxIi8+PC9hOmx0Mj4nLHJbci5sZW5ndGhdPSc8YTphY2NlbnQxPjxhOnNyZ2JDbHIgdmFsPSI0RjgxQkQiLz48L2E6YWNjZW50MT4nLHJbci5sZW5ndGhdPSc8YTphY2NlbnQyPjxhOnNyZ2JDbHIgdmFsPSJDMDUwNEQiLz48L2E6YWNjZW50Mj4nLHJbci5sZW5ndGhdPSc8YTphY2NlbnQz''@;'; put 'put ''PjxhOnNyZ2JDbHIgdmFsPSI5QkJCNTkiLz48L2E6YWNjZW50Mz4nLHJbci5sZW5ndGhdPSc8YTphY2NlbnQ0PjxhOnNyZ2JDbHIgdmFsPSI4MDY0QTIiLz48L2E6YWNjZW50ND4nLHJbci5sZW5ndGhdPSc8YTphY2NlbnQ1PjxhOnNyZ2JDbHIgdmFsPSI0QkFDQzYiLz48L2E6YWNjZW50NT4n''@;'; put 'put ''LHJbci5sZW5ndGhdPSc8YTphY2NlbnQ2PjxhOnNyZ2JDbHIgdmFsPSJGNzk2NDYiLz48L2E6YWNjZW50Nj4nLHJbci5sZW5ndGhdPSc8YTpobGluaz48YTpzcmdiQ2xyIHZhbD0iMDAwMEZGIi8+PC9hOmhsaW5rPicscltyLmxlbmd0aF09JzxhOmZvbEhsaW5rPjxhOnNyZ2JDbHIgdmFsPSI4''@;'; put 'put ''MDAwODAiLz48L2E6Zm9sSGxpbms+JyxyW3IubGVuZ3RoXT0iPC9hOmNsclNjaGVtZT4iLHJbci5sZW5ndGhdPSc8YTpmb250U2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxyW3IubGVuZ3RoXT0iPGE6bWFqb3JGb250PiIscltyLmxlbmd0aF09JzxhOmxhdGluIHR5cGVmYWNlPSJDYW1icmlhIi8+''@;'; put 'put ''JyxyW3IubGVuZ3RoXT0nPGE6ZWEgdHlwZWZhY2U9IiIvPicscltyLmxlbmd0aF09JzxhOmNzIHR5cGVmYWNlPSIiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSnBhbiIgdHlwZWZhY2U9Ilx1ZmYyZFx1ZmYzMyBcdWZmMzBcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWYiLz4nLHJb''@;'; put 'put ''ci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJI''@;'; put 'put ''YW50IiB0eXBlZmFjZT0iXHU2NWIwXHU3ZDMwXHU2NjBlXHU5YWQ0Ii8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkFyYWIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IlRpbWVzIE5ldyBS''@;'; put 'put ''b21hbiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0i''@;'; put 'put ''VnJpbmRhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9Ik1vb2xCb3JhbiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBl''@;'; put 'put ''ZmFjZT0iVHVuZ2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0''@;'; put 'put ''eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlh''@;'; put 'put ''Ii8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5cGVmYWNlPSJNYW5nYWwiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9Ikdh''@;'; put 'put ''dXRhbWkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlN5cmMiIHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJPcnlh''@;'; put 'put ''IiB0eXBlZmFjZT0iS2FsaW5nYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3Jp''@;'; put 'put ''cHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+''@;'; put 'put ''JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxyW3IubGVuZ3RoXT0iPC9hOm1ham9yRm9udD4iLHJbci5sZW5ndGhd''@;'; put 'put ''PSI8YTptaW5vckZvbnQ+IixyW3IubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbGlicmkiLz4nLHJbci5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0''@;'; put 'put ''eXBlZmFjZT0iXHVmZjJkXHVmZjMzIFx1ZmYzMFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0iXHViOWQxXHVjNzQwIFx1YWNlMFx1YjUxNSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5z''@;'; put 'put ''IiB0eXBlZmFjZT0iXHU1YjhiXHU0ZjUzIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSJcdTY1YjBcdTdkMzBcdTY2MGVcdTlhZDQiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVu''@;'; put 'put ''Z3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhlYnIiIHR5cGVmYWNlPSJBcmlhbCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFpIiB0eXBlZmFjZT0iVGFob21hIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkV0aGkiIHR5cGVmYWNlPSJOeWFsYSIvPicscltyLmxl''@;'; put 'put ''bmd0aF09JzxhOmZvbnQgc2NyaXB0PSJCZW5nIiB0eXBlZmFjZT0iVnJpbmRhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1anIiIHR5cGVmYWNlPSJTaHJ1dGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS2htciIgdHlwZWZhY2U9IkRhdW5QZW5oIi8+Jyxy''@;'; put 'put ''W3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+''@;'; put 'put ''JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3Jp''@;'; put 'put ''cHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIgdHlwZWZhY2U9Ik1WIEJvbGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1hbmdhbCIvPicscltyLmxlbmd0''@;'; put 'put ''aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUYW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3Nh''@;'; put 'put ''Ii8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJE''@;'; put 'put ''b2tDaGFtcGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3Jp''@;'; put 'put ''cHQ9IlZpZXQiIHR5cGVmYWNlPSJBcmlhbCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJVaWdoIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFVpZ2h1ciIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHZW9yIiB0eXBlZmFjZT0iU3lsZmFlbiIvPicscltyLmxlbmd0aF09''@;'; put 'put ''IjwvYTptaW5vckZvbnQ+IixyW3IubGVuZ3RoXT0iPC9hOmZvbnRTY2hlbWU+IixyW3IubGVuZ3RoXT0nPGE6Zm10U2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxyW3IubGVuZ3RoXT0iPGE6ZmlsbFN0eWxlTHN0PiIscltyLmxlbmd0aF09JzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJw''@;'; put 'put ''aENsciIvPjwvYTpzb2xpZEZpbGw+JyxyW3IubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLHJbci5sZW5ndGhdPSI8YTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNTAwMDAiLz48''@;'; put 'put ''YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjM1MDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjM3MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6''@;'; put 'put ''Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMTUwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixyW3IubGVuZ3Ro''@;'; put 'put ''XT0nPGE6bGluIGFuZz0iMTYyMDAwMDAiIHNjYWxlZD0iMSIvPicscltyLmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLHJbci5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicscltyLmxlbmd0aF09IjxhOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6''@;'; put 'put ''c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxMDAwMDAiLz48YTpzaGFkZSB2YWw9IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjEzMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJw''@;'; put 'put ''aENsciI+PGE6dGludCB2YWw9IjUwMDAwIi8+PGE6c2hhZGUgdmFsPSIxMDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6bGluIGFuZz0iMTYyMDAwMDAiIHNjYWxlZD0i''@;'; put 'put ''MCIvPicscltyLmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLHJbci5sZW5ndGhdPSI8L2E6ZmlsbFN0eWxlTHN0PiIscltyLmxlbmd0aF09IjxhOmxuU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0nPGE6bG4gdz0iOTUyNSIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRG''@;'; put 'put ''aWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9Ijk1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMTA1MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxyW3IubGVuZ3RoXT0nPGE6bG4gdz0iMjU0MDAi''@;'; put 'put ''IGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLHJbci5sZW5ndGhdPSc8YTpsbiB3PSIzODEwMCIgY2FwPSJmbGF0IiBjbXBk''@;'; put 'put ''PSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicscltyLmxlbmd0aF09IjwvYTpsblN0eWxlTHN0PiIscltyLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlTHN0''@;'; put 'put ''PiIscltyLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIwMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAw''@;'; put 'put ''MDAwMCI+PGE6YWxwaGEgdmFsPSIzODAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPGE6ZWZm''@;'; put 'put ''ZWN0THN0PiIscltyLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM1MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hk''@;'; put 'put ''dz4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBk''@;'; put 'put ''aXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicscltyLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0nPGE6c2Nl''@;'; put 'put ''bmUzZD48YTpjYW1lcmEgcHJzdD0ib3J0aG9ncmFwaGljRnJvbnQiPjxhOnJvdCBsYXQ9IjAiIGxvbj0iMCIgcmV2PSIwIi8+PC9hOmNhbWVyYT48YTpsaWdodFJpZyByaWc9InRocmVlUHQiIGRpcj0idCI+PGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjEyMDAwMDAiLz48L2E6bGlnaHRS''@;'; put 'put ''aWc+PC9hOnNjZW5lM2Q+JyxyW3IubGVuZ3RoXT0nPGE6c3AzZD48YTpiZXZlbFQgdz0iNjM1MDAiIGg9IjI1NDAwIi8+PC9hOnNwM2Q+JyxyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZUxzdD4iLHJbci5sZW5ndGhdPSI8YTpiZ0Zp''@;'; put 'put ''bGxTdHlsZUxzdD4iLHJbci5sZW5ndGhdPSc8YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPicscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6''@;'; put 'put ''Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSI0MDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRp''@;'; put 'put ''bnQgdmFsPSI0NTAwMCIvPjxhOnNoYWRlIHZhbD0iOTkwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iMjAwMDAiLz48''@;'; put 'put ''YTpzYXRNb2QgdmFsPSIyNTUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6cGF0aCBwYXRoPSJjaXJjbGUiPjxhOmZpbGxUb1JlY3QgbD0iNTAwMDAiIHQ9Ii04MDAwMCIgcj0iNTAwMDAiIGI9IjE4MDAwMCIvPjwv''@;'; put 'put ''YTpwYXRoPicscltyLmxlbmd0aF09IjwvYTpncmFkRmlsbD4iLHJbci5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicscltyLmxlbmd0aF09IjxhOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQg''@;'; put 'put ''dmFsPSI4MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIzMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjIwMDAwMCIvPjwv''@;'; put 'put ''YTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iNTAwMDAiIHI9IjUwMDAwIiBiPSI1MDAwMCIvPjwvYTpwYXRoPicscltyLmxlbmd0aF09IjwvYTpn''@;'; put 'put ''cmFkRmlsbD4iLHJbci5sZW5ndGhdPSI8L2E6YmdGaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPC9hOmZtdFNjaGVtZT4iLHJbci5sZW5ndGhdPSI8L2E6dGhlbWVFbGVtZW50cz4iLHJbci5sZW5ndGhdPSI8YTpvYmplY3REZWZhdWx0cz4iLHJbci5sZW5ndGhdPSI8YTpzcERlZj4iLHJb''@;'; put 'put ''ci5sZW5ndGhdPSc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjEiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjMiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJl''@;'; put 'put ''Zj48YTplZmZlY3RSZWYgaWR4PSIyIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9Imx0MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLHJbci5sZW5ndGhdPSI8L2E6c3BEZWY+IixyW3Iu''@;'; put 'put ''bGVuZ3RoXT0iPGE6bG5EZWY+IixyW3IubGVuZ3RoXT0nPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PSIyIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PSIwIj48YTpzY2hlbWVDbHIgdmFs''@;'; put 'put ''PSJhY2NlbnQxIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9Im1pbm9yIj48YTpzY2hlbWVDbHIgdmFsPSJ0eDEiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+JyxyW3IubGVu''@;'; put 'put ''Z3RoXT0iPC9hOmxuRGVmPiIscltyLmxlbmd0aF09IjwvYTpvYmplY3REZWZhdWx0cz4iLHJbci5sZW5ndGhdPSI8YTpleHRyYUNsclNjaGVtZUxzdC8+IixyW3IubGVuZ3RoXT0iPC9hOnRoZW1lPiIsci5qb2luKCIiKX0oKSk7dmFyIHIsYT17fTtpZighKHI9ZS5tYXRjaChYMSkpKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigidGhlbWVFbGVtZW50cyBub3QgZm91bmQgaW4gdGhlbWUiKTtyZXR1cm4gZnVuY3Rpb24gVjEoZSx0LHIpe3ZhciBhO3QudGhlbWVFbGVtZW50cz17fSxbWyJjbHJTY2hlbWUiLFUxLEwxXSxbImZvbnRTY2hlbWUiLFcxLEIxXSxbImZtdFNjaGVtZSIsSDEsTTFdXS5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKG4pe2lmKCEoYT1lLm1hdGNoKG5bMV0pKSl0aHJvdyBuZXcgRXJyb3IoblswXSsiIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7blsyXShhLHQscil9KX0oclswXSxhLHQpLGEucmF3PWUsYX1mdW5jdGlvbiBZMShlKXt2YXIgdD1lLnJlYWRfc2hpZnQoMikscj1l''@;'; put 'put ''LnJlYWRfc2hpZnQoMiktNCxhPVt0XTtzd2l0Y2godCl7Y2FzZSA0OmNhc2UgNTpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzphWzFdPWZ1bmN0aW9uICQxKGUpe3ZhciB0PXt9O3N3aXRjaCh0LnhjbHJUeXBlPWUucmVhZF9zaGlmdCgyKSx0Lm5UaW50U2hh''@;'; put 'put ''ZGU9ZS5yZWFkX3NoaWZ0KDIpLHQueGNsclR5cGUpe2Nhc2UgMDpjYXNlIDQ6ZS5sKz00O2JyZWFrO2Nhc2UgMTp0LnhjbHJWYWx1ZT1mdW5jdGlvbiBqMShlLHQpe3JldHVybiBwcihlLHQpfShlLDQpO2JyZWFrO2Nhc2UgMjp0LnhjbHJWYWx1ZT1NcyhlKTticmVhaztjYXNlIDM6dC54Y2xy''@;'; put 'put ''VmFsdWU9ZnVuY3Rpb24gejEoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCg0KX0oZSl9cmV0dXJuIGUubCs9OCx0fShlKTticmVhaztjYXNlIDY6YVsxXT1mdW5jdGlvbiBLMShlLHQpe3JldHVybiBwcihlLHQpfShlLHIpO2JyZWFrO2Nhc2UgMTQ6Y2FzZSAxNTphWzFdPWUucmVhZF9zaGlmdCgx''@;'; put 'put ''PT09cj8xOjIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiAiK3QrIiAiK3IpfXJldHVybiBhfWZ1bmN0aW9uIHExKGUsdCl7dC5mb3JFYWNoKGZ1bmN0aW9uKHIpe30pfWZ1bmN0aW9uIGdmKGUsdCxyLGEpe3ZhciBpLG49QXJyYXku''@;'; put 'put ''aXNBcnJheShlKTt0LmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGY9R2Uocy5yZWYpO2lmKG4/KGVbZi5yXXx8KGVbZi5yXT1bXSksaT1lW2Yucl1bZi5jXSk6aT1lW3MucmVmXSwhaSl7aT17dDoieiJ9LG4/ZVtmLnJdW2YuY109aTplW3MucmVmXT1pO3ZhciBjPURlKGVbIiFyZWYiXXx8IkJE''@;'; put 'put ''V0dPMTAwMDAwMTpBMSIpO2Mucy5yPmYuciYmKGMucy5yPWYuciksYy5lLnI8Zi5yJiYoYy5lLnI9Zi5yKSxjLnMuYz5mLmMmJihjLnMuYz1mLmMpLGMuZS5jPGYuYyYmKGMuZS5jPWYuYyk7dmFyIG89d2UoYyk7byE9PWVbIiFyZWYiXSYmKGVbIiFyZWYiXT1vKX1pLmN8fChpLmM9W10pO3Zh''@;'; put 'put ''ciBsPXthOnMuYXV0aG9yLHQ6cy50LHI6cy5yLFQ6cn07cy5oJiYobC5oPXMuaCk7Zm9yKHZhciBoPWkuYy5sZW5ndGgtMTtoPj0wOy0taCl7aWYoIXImJmkuY1toXS5UKXJldHVybjtyJiYhaS5jW2hdLlQmJmkuYy5zcGxpY2UoaCwxKX1pZihyJiZhKWZvcihoPTA7aDxhLmxlbmd0aDsrK2gp''@;'; put 'put ''aWYobC5hPT1hW2hdLmlkKXtsLmE9YVtoXS5uYW1lfHxsLmE7YnJlYWt9aS5jLnB1c2gobCl9KX12YXIgd3g9bXIsU3g9ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdCIsdWE9ZnVuY3Rpb24oKXt2YXIgZT0vKF58W15BLVphLXpfXSlSKFxbPy0/XGQrXF18WzEtOV1cZCp8''@;'; put 'put ''KUMoXFs/LT9cZCtcXXxbMS05XVxkKnwpKD8hW0EtWmEtejAtOV9dKS9nLHQ9e3I6MCxjOjB9O2Z1bmN0aW9uIHIoYSxuLGkscyl7dmFyIGY9ITEsYz0hMTswPT1pLmxlbmd0aD9jPSEwOiJbIj09aS5jaGFyQXQoMCkmJihjPSEwLGk9aS5zbGljZSgxLC0xKSksMD09cy5sZW5ndGg/Zj0hMDoi''@;'; put 'put ''WyI9PXMuY2hhckF0KDApJiYoZj0hMCxzPXMuc2xpY2UoMSwtMSkpO3ZhciBvPWkubGVuZ3RoPjA/MHxwYXJzZUludChpLDEwKTowLGw9cy5sZW5ndGg+MD8wfHBhcnNlSW50KHMsMTApOjA7cmV0dXJuIGY/bCs9dC5jOi0tbCxjP28rPXQucjotLW8sbisoZj8iIjoiJCIpK0hlKGwpKyhjPyIi''@;'; put 'put ''OiIkIikrS2Uobyl9cmV0dXJuIGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQ9aSxuLnJlcGxhY2UoZSxyKX19KCksT249LyhefFteLl9BLVowLTldKShbJF0/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxkezR9fDEwNFswLTddXGR7''@;'; put 'put ''M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkoPyFbXy5cKEEtWmEtejAtOV0pL2csSW49ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gdC5yZXBsYWNlKE9uLGZ1bmN0aW9uKGEsbixpLHMsZixjKXt2YXIgbz1ubihz''@;'; put 'put ''KS0oaT8wOnIuYyksbD1hbihjKS0oZj8wOnIucik7cmV0dXJuIG4rIlIiKygwPT1sPyIiOmY/bCsxOiJbIitsKyJdIikrIkMiKygwPT1vPyIiOmk/bysxOiJbIitvKyJdIil9KX19KCk7ZnVuY3Rpb24ga2YoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKE9uLGZ1bmN0aW9uKHIsYSxuLGkscyxmKXty''@;'; put 'put ''ZXR1cm4gYSsoIiQiPT1uP24raTpIZShubihpKSt0LmMpKSsoIiQiPT1zP3MrZjpLZShhbihmKSt0LnIpKX0pfWZ1bmN0aW9uIEl4KGUsdCxyKXt2YXIgbj1Qcih0KS5zLGk9R2Uocik7cmV0dXJuIGtmKGUse3I6aS5yLW4ucixjOmkuYy1uLmN9KX1mdW5jdGlvbiBFZihlKXtyZXR1cm4gZS5y''@;'; put 'put ''ZXBsYWNlKC9feGxmblwuL2csIiIpfWZ1bmN0aW9uIGFyKGUpe2UubCs9MX1mdW5jdGlvbiBBdChlLHQpe3ZhciByPWUucmVhZF9zaGlmdCgxPT10PzE6Mik7cmV0dXJuWzE2MzgzJnIscj4+MTQmMSxyPj4xNSYxXX1mdW5jdGlvbiBUZihlLHQscil7dmFyIGE9MjtpZihyKXtpZihyLmJpZmY+''@;'; put 'put ''PTImJnIuYmlmZjw9NSlyZXR1cm4gU2YoZSk7MTI9PXIuYmlmZiYmKGE9NCl9dmFyIG49ZS5yZWFkX3NoaWZ0KGEpLGk9ZS5yZWFkX3NoaWZ0KGEpLHM9QXQoZSwyKSxmPUF0KGUsMik7cmV0dXJue3M6e3I6bixjOnNbMF0sY1JlbDpzWzFdLHJSZWw6c1syXX0sZTp7cjppLGM6ZlswXSxjUmVs''@;'; put 'put ''OmZbMV0sclJlbDpmWzJdfX19ZnVuY3Rpb24gU2YoZSl7dmFyIHQ9QXQoZSwyKSxyPUF0KGUsMiksYT1lLnJlYWRfc2hpZnQoMSksbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJue3M6e3I6dFswXSxjOmEsY1JlbDp0WzFdLHJSZWw6dFsyXX0sZTp7cjpyWzBdLGM6bixjUmVsOnJbMV0sclJlbDpy''@;'; put 'put ''WzJdfX19ZnVuY3Rpb24gRmYoZSx0LHIpe2lmKHImJnIuYmlmZj49MiYmci5iaWZmPD01KXJldHVybiBmdW5jdGlvbiBieChlKXt2YXIgdD1BdChlLDIpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybntyOnRbMF0sYzpyLGNSZWw6dFsxXSxyUmVsOnRbMl19fShlKTt2YXIgYT1lLnJlYWRfc2hp''@;'; put 'put ''ZnQociYmMTI9PXIuYmlmZj80OjIpLG49QXQoZSwyKTtyZXR1cm57cjphLGM6blswXSxjUmVsOm5bMV0sclJlbDpuWzJdfX1mdW5jdGlvbiBQeChlKXt2YXIgdD1lLnJlYWRfc2hpZnQoMikscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJue3I6dCxjOjI1NSZyLGZRdW90ZWQ6ISEoMTYzODQmciks''@;'; put 'put ''Y1JlbDpyPj4xNSxyUmVsOnI+PjE1fX1mdW5jdGlvbiB5ZihlKXt2YXIgdD0xJmVbZS5sKzFdO3JldHVybiBlLmwrPTQsW3QsMV19ZnVuY3Rpb24gQWYoZSl7cmV0dXJuW2UucmVhZF9zaGlmdCgxKSxlLnJlYWRfc2hpZnQoMSldfWZ1bmN0aW9uIGxkKGUsdCl7dmFyIHI9W2UucmVhZF9zaGlm''@;'; put 'put ''dCgxKV07aWYoMTI9PXQpc3dpdGNoKHJbMF0pe2Nhc2UgMjpyWzBdPTQ7YnJlYWs7Y2FzZSA0OnJbMF09MTY7YnJlYWs7Y2FzZSAwOnJbMF09MTticmVhaztjYXNlIDE6clswXT0yfXN3aXRjaChyWzBdKXtjYXNlIDQ6clsxXT1KZShlLDEpPyJUUlVFIjoiRkFMU0UiLDEyIT10JiYoZS5sKz03''@;'; put 'put ''KTticmVhaztjYXNlIDM3OmNhc2UgMTY6clsxXT14dFtlW2UubF1dLGUubCs9MTI9PXQ/NDo4O2JyZWFrO2Nhc2UgMDplLmwrPTg7YnJlYWs7Y2FzZSAxOnJbMV09Z3IoZSk7YnJlYWs7Y2FzZSAyOnJbMV09enQoZSwwLHtiaWZmOnQ+MCYmdDw4PzI6dH0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJCYWQgU2VyQXI6ICIrclswXSl9cmV0dXJuIHJ9ZnVuY3Rpb24gdWQoZSx0LHIpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoMTI9PXIuYmlmZj80OjIpLG49W10saT0wO2khPWE7KytpKW4ucHVzaCgoMTI9PXIuYmlmZj9XdDprMCkoZSw4KSk7cmV0dXJuIG59ZnVuY3Rpb24g''@;'; put 'put ''aGQoZSx0LHIpe3ZhciBhPTAsbj0wOzEyPT1yLmJpZmY/KGE9ZS5yZWFkX3NoaWZ0KDQpLG49ZS5yZWFkX3NoaWZ0KDQpKToobj0xK2UucmVhZF9zaGlmdCgxKSxhPTErZS5yZWFkX3NoaWZ0KDIpKSxyLmJpZmY+PTImJnIuYmlmZjw4JiYoLS1hLDA9PS0tbiYmKG49MjU2KSk7Zm9yKHZhciBp''@;'; put 'put ''PTAscz1bXTtpIT1hJiYoc1tpXT1bXSk7KytpKWZvcih2YXIgZj0wO2YhPW47KytmKXNbaV1bZl09bGQoZSxyLmJpZmYpO3JldHVybiBzfWZ1bmN0aW9uIFVhKGUsdCxyKXtyZXR1cm4gZS5sKz0yLFtQeChlKV19ZnVuY3Rpb24gUm4oZSl7cmV0dXJuIGUubCs9NixbXX1mdW5jdGlvbiBDZihl''@;'; put 'put ''KXtyZXR1cm4gZS5sKz0yLFt0cihlKSwxJmUucmVhZF9zaGlmdCgyKV19dmFyIFJkPVsiRGF0YSIsIkFsbCIsIkhlYWRlcnMiLCI/PyIsIj9EYXRhMiIsIj8/IiwiP0RhdGFIZWFkZXJzIiwiPz8iLCJUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/RGF0YVRvdGFscyIsIj8/IiwiPz8iLCI/PyIs''@;'; put 'put ''Ij9DdXJyZW50Il0sRGY9ezE6e246IlB0Z0V4cCIsZjpmdW5jdGlvbiBuZChlLHQscil7cmV0dXJuIGUubCsrLHImJjEyPT1yLmJpZmY/W2UucmVhZF9zaGlmdCg0LCJpIiksMF06W2UucmVhZF9zaGlmdCgyKSxlLnJlYWRfc2hpZnQociYmMj09ci5iaWZmPzE6MildfX0sMjp7bjoiUHRnVGJs''@;'; put 'put ''IixmOnByfSwzOntuOiJQdGdBZGQiLGY6YXJ9LDQ6e246IlB0Z1N1YiIsZjphcn0sNTp7bjoiUHRnTXVsIixmOmFyfSw2OntuOiJQdGdEaXYiLGY6YXJ9LDc6e246IlB0Z1Bvd2VyIixmOmFyfSw4OntuOiJQdGdDb25jYXQiLGY6YXJ9LDk6e246IlB0Z0x0IixmOmFyfSwxMDp7bjoiUHRnTGUi''@;'; put 'put ''LGY6YXJ9LDExOntuOiJQdGdFcSIsZjphcn0sMTI6e246IlB0Z0dlIixmOmFyfSwxMzp7bjoiUHRnR3QiLGY6YXJ9LDE0OntuOiJQdGdOZSIsZjphcn0sMTU6e246IlB0Z0lzZWN0IixmOmFyfSwxNjp7bjoiUHRnVW5pb24iLGY6YXJ9LDE3OntuOiJQdGdSYW5nZSIsZjphcn0sMTg6e246IlB0''@;'; put 'put ''Z1VwbHVzIixmOmFyfSwxOTp7bjoiUHRnVW1pbnVzIixmOmFyfSwyMDp7bjoiUHRnUGVyY2VudCIsZjphcn0sMjE6e246IlB0Z1BhcmVuIixmOmFyfSwyMjp7bjoiUHRnTWlzc0FyZyIsZjphcn0sMjM6e246IlB0Z1N0ciIsZjpmdW5jdGlvbiBvZChlLHQscil7cmV0dXJuIGUubCsrLFJhKGUs''@;'; put 'put ''MCxyKX19LDI2OntuOiJQdGdTaGVldCIsZjpmdW5jdGlvbiBQZChlLHQscil7cmV0dXJuIGUubCs9NSxlLmwrPTIsZS5sKz0yPT1yLmJpZmY/MTo0LFsiUFRHU0hFRVQiXX19LDI3OntuOiJQdGdFbmRTaGVldCIsZjpmdW5jdGlvbiBMZChlLHQscil7cmV0dXJuIGUubCs9Mj09ci5iaWZmPzQ6''@;'; put 'put ''NSxbIlBUR0VORFNIRUVUIl19fSwyODp7bjoiUHRnRXJyIixmOmZ1bmN0aW9uIGlkKGUpe3JldHVybiBlLmwrKyx4dFtlLnJlYWRfc2hpZnQoMSldfX0sMjk6e246IlB0Z0Jvb2wiLGY6ZnVuY3Rpb24gZmQoZSl7cmV0dXJuIGUubCsrLDAhPT1lLnJlYWRfc2hpZnQoMSl9fSwzMDp7bjoiUHRn''@;'; put 'put ''SW50IixmOmZ1bmN0aW9uIHNkKGUpe3JldHVybiBlLmwrKyxlLnJlYWRfc2hpZnQoMil9fSwzMTp7bjoiUHRnTnVtIixmOmZ1bmN0aW9uIGNkKGUpe3JldHVybiBlLmwrKyxncihlKX19LDMyOntuOiJQdGdBcnJheSIsZjpmdW5jdGlvbiBYeChlLHQscil7dmFyIGE9KDk2JmVbZS5sKytdKT4+''@;'; put 'put ''NTtyZXR1cm4gZS5sKz0yPT1yLmJpZmY/NjoxMj09ci5iaWZmPzE0OjcsW2FdfX0sMzM6e246IlB0Z0Z1bmMiLGY6ZnVuY3Rpb24gZWQoZSx0LHIpe3ZhciBhPSg5NiZlW2UubF0pPj41O2UubCs9MTt2YXIgbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPD0zPzE6Mik7cmV0dXJuW2F2W25dLFJm''@;'; put 'put ''W25dLGFdfX0sMzQ6e246IlB0Z0Z1bmNWYXIiLGY6ZnVuY3Rpb24gcmQoZSx0LHIpe3ZhciBhPWVbZS5sKytdLG49ZS5yZWFkX3NoaWZ0KDEpLGk9ciYmci5iaWZmPD0zP1s4OD09YT8tMTowLGUucmVhZF9zaGlmdCgxKV06ZnVuY3Rpb24gdGQoZSl7cmV0dXJuW2VbZS5sKzFdPj43LDMyNzY3''@;'; put 'put ''JmUucmVhZF9zaGlmdCgyKV19KGUpO3JldHVybltuLCgwPT09aVswXT9SZjp0dilbaVsxXV1dfX0sMzU6e246IlB0Z05hbWUiLGY6ZnVuY3Rpb24geGQoZSx0LHIpe3ZhciBhPWUucmVhZF9zaGlmdCgxKT4+PjUmMyxpPWUucmVhZF9zaGlmdCghcnx8ci5iaWZmPj04PzQ6Mik7c3dpdGNoKHIu''@;'; put 'put ''YmlmZil7Y2FzZSAyOmUubCs9NTticmVhaztjYXNlIDM6Y2FzZSA0OmUubCs9ODticmVhaztjYXNlIDU6ZS5sKz0xMn1yZXR1cm5bYSwwLGldfX0sMzY6e246IlB0Z1JlZiIsZjpmdW5jdGlvbiBxeChlLHQscil7dmFyIGE9KDk2JmVbZS5sXSk+PjU7cmV0dXJuIGUubCs9MSxbYSxGZihlLDAs''@;'; put 'put ''cildfX0sMzc6e246IlB0Z0FyZWEiLGY6ZnVuY3Rpb24gTXgoZSx0LHIpe3JldHVyblsoOTYmZVtlLmwrK10pPj41LFRmKGUsMCxyKV19fSwzODp7bjoiUHRnTWVtQXJlYSIsZjpmdW5jdGlvbiBwZChlLHQscil7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiBlLmwrPXImJjI9''@;'; put 'put ''PXIuYmlmZj8zOjQsW2EsZS5yZWFkX3NoaWZ0KHImJjI9PXIuYmlmZj8xOjIpXX19LDM5OntuOiJQdGdNZW1FcnIiLGY6cHJ9LDQwOntuOiJQdGdNZW1Ob01lbSIsZjpwcn0sNDE6e246IlB0Z01lbUZ1bmMiLGY6ZnVuY3Rpb24gbWQoZSx0LHIpe3JldHVybltlLnJlYWRfc2hpZnQoMSk+Pj41''@;'; put 'put ''JjMsZS5yZWFkX3NoaWZ0KHImJjI9PXIuYmlmZj8xOjIpXX19LDQyOntuOiJQdGdSZWZFcnIiLGY6ZnVuY3Rpb24gZ2QoZSx0LHIpe3ZhciBhPWUucmVhZF9zaGlmdCgxKT4+PjUmMztyZXR1cm4gZS5sKz00LHIuYmlmZjw4JiZlLmwtLSwxMj09ci5iaWZmJiYoZS5sKz0yKSxbYV19fSw0Mzp7''@;'; put 'put ''bjoiUHRnQXJlYUVyciIsZjpmdW5jdGlvbiBXeChlLHQscil7dmFyIGE9KDk2JmVbZS5sKytdKT4+NTtyZXR1cm4gZS5sKz1yJiZyLmJpZmY+OD8xMjpyLmJpZmY8OD82OjgsW2FdfX0sNDQ6e246IlB0Z1JlZk4iLGY6ZnVuY3Rpb24gWngoZSx0LHIpe3ZhciBhPSg5NiZlW2UubF0pPj41O2Uu''@;'; put 'put ''bCs9MTt2YXIgbj1mdW5jdGlvbiBMeChlLHQscil7dmFyIGE9ciYmci5iaWZmP3IuYmlmZjo4O2lmKGE+PTImJmE8PTUpcmV0dXJuIGZ1bmN0aW9uIEJ4KGUpe3ZhciB0PWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgxKSxhPSgzMjc2OCZ0KT4+MTUsbj0oMTYzODQmdCk+PjE0O3Jl''@;'; put 'put ''dHVybiB0Jj0xNjM4MywxPT1hJiZ0Pj04MTkyJiYodC09MTYzODQpLDE9PW4mJnI+PTEyOCYmKHItPTI1Nikse3I6dCxjOnIsY1JlbDpuLHJSZWw6YX19KGUpO3ZhciBuPWUucmVhZF9zaGlmdChhPj0xMj80OjIpLGk9ZS5yZWFkX3NoaWZ0KDIpLHM9KDE2Mzg0JmkpPj4xNCxmPSgzMjc2OCZp''@;'; put 'put ''KT4+MTU7aWYoaSY9MTYzODMsMT09Zilmb3IoO24+NTI0Mjg3OyluLT0xMDQ4NTc2O2lmKDE9PXMpZm9yKDtpPjgxOTE7KWktPTE2Mzg0O3JldHVybntyOm4sYzppLGNSZWw6cyxyUmVsOmZ9fShlLDAscik7cmV0dXJuW2Esbl19fSw0NTp7bjoiUHRnQXJlYU4iLGY6ZnVuY3Rpb24gVngoZSx0''@;'; put 'put ''LHIpe3ZhciBhPSg5NiZlW2UubCsrXSk+PjUsbj1mdW5jdGlvbiBOeChlLHQscil7aWYoci5iaWZmPDgpcmV0dXJuIFNmKGUpO3ZhciBhPWUucmVhZF9zaGlmdCgxMj09ci5iaWZmPzQ6Miksbj1lLnJlYWRfc2hpZnQoMTI9PXIuYmlmZj80OjIpLGk9QXQoZSwyKSxzPUF0KGUsMik7cmV0dXJu''@;'; put 'put ''e3M6e3I6YSxjOmlbMF0sY1JlbDppWzFdLHJSZWw6aVsyXX0sZTp7cjpuLGM6c1swXSxjUmVsOnNbMV0sclJlbDpzWzJdfX19KGUsMCxyKTtyZXR1cm5bYSxuXX19LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpmdW5jdGlvbiBCZChlKXtyZXR1cm5bZS5yZWFkX3NoaWZ0KDEpPj4+NSYzLGUucmVh''@;'; put 'put ''ZF9zaGlmdCgyKV19fSw0Nzp7bjoiUHRnTWVtTm9NZW1OIixmOmZ1bmN0aW9uIE1kKGUpe3JldHVybltlLnJlYWRfc2hpZnQoMSk+Pj41JjMsZS5yZWFkX3NoaWZ0KDIpXX19LDU3OntuOiJQdGdOYW1lWCIsZjpmdW5jdGlvbiBkZChlLHQscil7cmV0dXJuIDU9PXIuYmlmZj9mdW5jdGlvbiB2''@;'; put 'put ''ZChlKXt2YXIgdD1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMiwiaSIpO2UubCs9ODt2YXIgYT1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubCs9MTIsW3QscixhXX0oZSk6W2UucmVhZF9zaGlmdCgxKT4+PjUmMyxlLnJlYWRfc2hpZnQoMiksZS5yZWFkX3NoaWZ0KDQp''@;'; put 'put ''XX19LDU4OntuOiJQdGdSZWYzZCIsZjpmdW5jdGlvbiBReChlLHQscil7dmFyIGE9KDk2JmVbZS5sXSk+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gciYmNT09ci5iaWZmJiYoZS5sKz0xMiksW2EsbixGZihlLDAscildfX0sNTk6e246IlB0Z0FyZWEzZCIsZjpmdW5j''@;'; put 'put ''dGlvbiBVeChlLHQscil7dmFyIGE9KDk2JmVbZS5sKytdKT4+NSxuPWUucmVhZF9zaGlmdCgyLCJpIik7aWYociYmNT09PXIuYmlmZillLmwrPTEyO3JldHVyblthLG4sVGYoZSwwLHIpXX19LDYwOntuOiJQdGdSZWZFcnIzZCIsZjpmdW5jdGlvbiBfZChlLHQscil7dmFyIGE9KDk2JmVbZS5s''@;'; put 'put ''KytdKT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTQ7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6aT0xNTticmVhaztjYXNlIDEyOmk9Nn1yZXR1cm4gZS5sKz1pLFthLG5dfX0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpmdW5jdGlvbiBIeChlLHQscil7dmFyIGE9KDk2JmVbZS5sKytdKT4+''@;'; put 'put ''NSxuPWUucmVhZF9zaGlmdCgyKSxpPTg7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6ZS5sKz0xMixpPTY7YnJlYWs7Y2FzZSAxMjppPTEyfXJldHVybiBlLmwrPWksW2Esbl19fSwyNTU6e319LFdkPXs2NDozMiw5NjozMiw2NTozMyw5NzozMyw2NjozNCw5ODozNCw2NzozNSw5OTozNSw2''@;'; put 'put ''ODozNiwxMDA6MzYsNjk6MzcsMTAxOjM3LDcwOjM4LDEwMjozOCw3MTozOSwxMDM6MzksNzI6NDAsMTA0OjQwLDczOjQxLDEwNTo0MSw3NDo0MiwxMDY6NDIsNzU6NDMsMTA3OjQzLDc2OjQ0LDEwODo0NCw3Nzo0NSwxMDk6NDUsNzg6NDYsMTEwOjQ2LDc5OjQ3LDExMTo0Nyw4ODozNCwxMjA6''@;'; put 'put ''MzQsODk6NTcsMTIxOjU3LDkwOjU4LDEyMjo1OCw5MTo1OSwxMjM6NTksOTI6NjAsMTI0OjYwLDkzOjYxLDEyNTo2MX0sSGQ9ezE6e246IlB0Z0VsZkxlbCIsZjpDZn0sMjp7bjoiUHRnRWxmUnciLGY6VWF9LDM6e246IlB0Z0VsZkNvbCIsZjpVYX0sNjp7bjoiUHRnRWxmUndWIixmOlVhfSw3''@;'; put 'put ''OntuOiJQdGdFbGZDb2xWIixmOlVhfSwxMDp7bjoiUHRnRWxmUmFkaWNhbCIsZjpVYX0sMTE6e246IlB0Z0VsZlJhZGljYWxTIixmOlJufSwxMzp7bjoiUHRnRWxmQ29sUyIsZjpSbn0sMTU6e246IlB0Z0VsZkNvbFNWIixmOlJufSwxNjp7bjoiUHRnRWxmUmFkaWNhbExlbCIsZjpDZn0sMjU6''@;'; put 'put ''e246IlB0Z0xpc3QiLGY6ZnVuY3Rpb24gTmQoZSl7ZS5sKz0yO3ZhciB0PWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSxhPWUucmVhZF9zaGlmdCg0KSxuPWUucmVhZF9zaGlmdCgyKSxpPWUucmVhZF9zaGlmdCgyKTtyZXR1cm57aXh0aTp0LGNvbHR5cGU6MyZyLHJ0OlJkW3I+''@;'; put 'put ''PjImMzFdLGlkeDphLGM6bixDOml9fX0sMjk6e246IlB0Z1N4TmFtZSIsZjpmdW5jdGlvbiBiZChlKXtyZXR1cm4gZS5sKz0yLFtlLnJlYWRfc2hpZnQoNCldfX0sMjU1Ont9fSxWZD17MDp7bjoiUHRnQXR0ck5vb3AiLGY6ZnVuY3Rpb24gVWQoZSl7cmV0dXJuIGUubCs9NCxbMCwwXX19LDE6''@;'; put 'put ''e246IlB0Z0F0dHJTZW1pIixmOmZ1bmN0aW9uIEt4KGUsdCxyKXt2YXIgYT0yNTUmZVtlLmwrMV0/MTowO3JldHVybiBlLmwrPXImJjI9PXIuYmlmZj8zOjQsW2FdfX0sMjp7bjoiUHRnQXR0cklmIixmOmZ1bmN0aW9uICR4KGUsdCxyKXt2YXIgYT0yNTUmZVtlLmwrMV0/MTowO3JldHVybiBl''@;'; put 'put ''LmwrPTIsW2EsZS5yZWFkX3NoaWZ0KHImJjI9PXIuYmlmZj8xOjIpXX19LDQ6e246IlB0Z0F0dHJDaG9vc2UiLGY6ZnVuY3Rpb24gR3goZSx0LHIpe2UubCs9Mjtmb3IodmFyIGE9ZS5yZWFkX3NoaWZ0KHImJjI9PXIuYmlmZj8xOjIpLG49W10saT0wO2k8PWE7KytpKW4ucHVzaChlLnJlYWRf''@;'; put 'put ''c2hpZnQociYmMj09ci5iaWZmPzE6MikpO3JldHVybiBufX0sODp7bjoiUHRnQXR0ckdvdG8iLGY6ZnVuY3Rpb24gengoZSx0LHIpe3ZhciBhPTI1NSZlW2UubCsxXT8xOjA7cmV0dXJuIGUubCs9MixbYSxlLnJlYWRfc2hpZnQociYmMj09ci5iaWZmPzE6MildfX0sMTY6e246IlB0Z0F0dHJT''@;'; put 'put ''dW0iLGY6ZnVuY3Rpb24gYWQoZSx0LHIpe2UubCs9ciYmMj09ci5iaWZmPzM6NH19LDMyOntuOiJQdGdBdHRyQmF4Y2VsIixmOnlmfSwzMzp7bjoiUHRnQXR0ckJheGNlbCIsZjp5Zn0sNjQ6e246IlB0Z0F0dHJTcGFjZSIsZjpmdW5jdGlvbiBZeChlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDIp''@;'; put 'put ''LEFmKGUpfX0sNjU6e246IlB0Z0F0dHJTcGFjZVNlbWkiLGY6ZnVuY3Rpb24gSngoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCgyKSxBZihlKX19LDEyODp7bjoiUHRnQXR0cklmRXJyb3IiLGY6ZnVuY3Rpb24gangoZSl7dmFyIHQ9MjU1JmVbZS5sKzFdPzE6MDtyZXR1cm4gZS5sKz0yLFt0LGUu''@;'; put 'put ''cmVhZF9zaGlmdCgyKV19fSwyNTU6e319O2Z1bmN0aW9uIFdhKGUsdCxyLGEpe2lmKGEuYmlmZjw4KXJldHVybiBwcihlLHQpO2Zvcih2YXIgbj1lLmwrdCxpPVtdLHM9MDtzIT09ci5sZW5ndGg7KytzKXN3aXRjaChyW3NdWzBdKXtjYXNlIlB0Z0FycmF5IjpyW3NdWzFdPWhkKGUsMCxhKSxp''@;'; put 'put ''LnB1c2gocltzXVsxXSk7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhIjpyW3NdWzJdPXVkKGUsMCxhKSxpLnB1c2gocltzXVsyXSk7YnJlYWs7Y2FzZSJQdGdFeHAiOmEmJjEyPT1hLmJpZmYmJihyW3NdWzFdWzFdPWUucmVhZF9zaGlmdCg0KSxpLnB1c2gocltzXVsxXSkpO2JyZWFrO2Nhc2UiUHRn''@;'; put 'put ''TGlzdCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjp0aHJvdyJVbnN1cHBvcnRlZCAiK3Jbc11bMF19cmV0dXJuIDAhPSh0PW4tZS5sKSYmaS5wdXNoKHByKGUsdCkpLGl9ZnVuY3Rpb24gSGEoZSx0LHIpe2Zvcih2YXIgbixpLGE9ZS5s''@;'; put 'put ''K3Qscz1bXTthIT1lLmw7KXQ9YS1lLmwsbj1EZltpPWVbZS5sXV18fERmW1dkW2ldXSwoMjQ9PT1pfHwyNT09PWkpJiYobj0oMjQ9PT1pP0hkOlZkKVtlW2UubCsxXV0pLG4mJm4uZj9zLnB1c2goW24ubixuLmYoZSx0LHIpXSk6cHIoZSx0KTtyZXR1cm4gc31mdW5jdGlvbiBYZChlKXtmb3Io''@;'; put 'put ''dmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXtmb3IodmFyIGE9ZVtyXSxuPVtdLGk9MDtpPGEubGVuZ3RoOysraSl7dmFyIHM9YVtpXTtuLnB1c2gocz8yPT09c1swXT8nIicrc1sxXS5yZXBsYWNlKC8iL2csJyIiJykrJyInOnNbMV06IiIpfXQucHVzaChuLmpvaW4oIiwiKSl9cmV0dXJu''@;'; put 'put ''IHQuam9pbigiOyIpfXZhciBHZD17UHRnQWRkOiIrIixQdGdDb25jYXQ6IiYiLFB0Z0RpdjoiLyIsUHRnRXE6Ij0iLFB0Z0dlOiI+PSIsUHRnR3Q6Ij4iLFB0Z0xlOiI8PSIsUHRnTHQ6IjwiLFB0Z011bDoiKiIsUHRnTmU6Ijw+IixQdGdQb3dlcjoiXiIsUHRnU3ViOiItIn07ZnVuY3Rpb24g''@;'; put 'put ''T2YoZSx0LHIpe2lmKCFlKXJldHVybiJTSDMzVEpTRVJSMCI7aWYoci5iaWZmPjgmJighZS5YVEl8fCFlLlhUSVt0XSkpcmV0dXJuIGUuU2hlZXROYW1lc1t0XTtpZighZS5YVEkpcmV0dXJuIlNIMzNUSlNFUlI2Ijt2YXIgYT1lLlhUSVt0XTtpZihyLmJpZmY8OClyZXR1cm4gdD4xZTQmJih0''@;'; put 'put ''LT02NTUzNiksdDwwJiYodD0tdCksMD09dD8iIjplLlhUSVt0LTFdO2lmKCFhKXJldHVybiJTSDMzVEpTRVJSMSI7dmFyIG49IiI7aWYoci5iaWZmPjgpc3dpdGNoKGVbYVswXV1bMF0pe2Nhc2UgMzU3OnJldHVybiBuPS0xPT1hWzFdPyIjUkVGIjplLlNoZWV0TmFtZXNbYVsxXV0sYVsxXT09''@;'; put 'put ''YVsyXT9uOm4rIjoiK2UuU2hlZXROYW1lc1thWzJdXTtjYXNlIDM1ODpyZXR1cm4gbnVsbCE9ci5TSUQ/ZS5TaGVldE5hbWVzW3IuU0lEXToiU0gzM1RKU1NBTUUiK2VbYVswXV1bMF07ZGVmYXVsdDpyZXR1cm4iU0gzM1RKU1NSQyIrZVthWzBdXVswXX1zd2l0Y2goZVthWzBdXVswXVswXSl7''@;'; put 'put ''Y2FzZSAxMDI1OnJldHVybiBuPS0xPT1hWzFdPyIjUkVGIjplLlNoZWV0TmFtZXNbYVsxXV18fCJTSDMzVEpTRVJSMyIsYVsxXT09YVsyXT9uOm4rIjoiK2UuU2hlZXROYW1lc1thWzJdXTtjYXNlIDE0ODQ5OnJldHVybiBlW2FbMF1dLnNsaWNlKDEpLm1hcChmdW5jdGlvbihpKXtyZXR1cm4g''@;'; put 'put ''aS5OYW1lfSkuam9pbigiOzsiKTtkZWZhdWx0OnJldHVybiBlW2FbMF1dWzBdWzNdPyhuPS0xPT1hWzFdPyIjUkVGIjplW2FbMF1dWzBdWzNdW2FbMV1dfHwiU0gzM1RKU0VSUjQiLGFbMV09PWFbMl0/bjpuKyI6IitlW2FbMF1dWzBdWzNdW2FbMl1dKToiU0gzM1RKU0VSUjIifX1mdW5jdGlv''@;'; put 'put ''biBJZihlLHQscil7dmFyIGE9T2YoZSx0LHIpO3JldHVybiIjUkVGIj09YT9hOmZ1bmN0aW9uIHpkKGUsdCl7aWYoIShlfHx0JiZ0LmJpZmY8PTUmJnQuYmlmZj49MikpdGhyb3cgbmV3IEVycm9yKCJlbXB0eSBzaGVldCBuYW1lIik7cmV0dXJuL1teXHdcdTRFMDAtXHU5RkZGXHUzMDQwLVx1''@;'; put 'put ''MzBGRl0vLnRlc3QoZSk/IiciK2UrIiciOmV9KGEscil9ZnVuY3Rpb24ga3IoZSx0LHIsYSxuKXt2YXIgYyxvLGwsZCxpPW4mJm4uYmlmZnx8OCxzPXtzOntjOjAscjowfSxlOntjOjAscjowfX0sZj1bXSxoPTAseD0wLHY9IiI7aWYoIWVbMF18fCFlWzBdWzBdKXJldHVybiIiO2Zvcih2YXIg''@;'; put 'put ''dT0tMSxwPSIiLGs9MCxUPWVbMF0ubGVuZ3RoO2s8VDsrK2spe3ZhciBnPWVbMF1ba107c3dpdGNoKGdbMF0pe2Nhc2UiUHRnVW1pbnVzIjpmLnB1c2goIi0iK2YucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMiOmYucHVzaCgiKyIrZi5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50Ijpm''@;'; put 'put ''LnB1c2goZi5wb3AoKSsiJSIpO2JyZWFrO2Nhc2UiUHRnQWRkIjpjYXNlIlB0Z0NvbmNhdCI6Y2FzZSJQdGdEaXYiOmNhc2UiUHRnRXEiOmNhc2UiUHRnR2UiOmNhc2UiUHRnR3QiOmNhc2UiUHRnTGUiOmNhc2UiUHRnTHQiOmNhc2UiUHRnTXVsIjpjYXNlIlB0Z05lIjpjYXNlIlB0Z1Bvd2Vy''@;'; put 'put ''IjpjYXNlIlB0Z1N1YiI6aWYoYz1mLnBvcCgpLG89Zi5wb3AoKSx1Pj0wKXtzd2l0Y2goZVswXVt1XVsxXVswXSl7Y2FzZSAwOnA9amUoIiAiLGVbMF1bdV1bMV1bMV0pO2JyZWFrO2Nhc2UgMTpwPWplKCJcciIsZVswXVt1XVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihwPSIiLG4uV1RGKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVt1XVsxXVswXSl9bys9cCx1PS0xfWYucHVzaChvK0dkW2dbMF1dK2MpO2JyZWFrO2Nhc2UiUHRnSXNlY3QiOmM9Zi5wb3AoKSxvPWYucG9wKCksZi5wdXNoKG8rIiAiK2MpO2JyZWFrO2Nhc2UiUHRnVW5p''@;'; put 'put ''b24iOmM9Zi5wb3AoKSxvPWYucG9wKCksZi5wdXNoKG8rIiwiK2MpO2JyZWFrO2Nhc2UiUHRnUmFuZ2UiOmM9Zi5wb3AoKSxvPWYucG9wKCksZi5wdXNoKG8rIjoiK2MpO2JyZWFrO2Nhc2UiUHRnQXR0ckNob29zZSI6Y2FzZSJQdGdBdHRyR290byI6Y2FzZSJQdGdBdHRySWYiOmNhc2UiUHRn''@;'; put 'put ''QXR0cklmRXJyb3IiOmNhc2UiUHRnQXR0ckJheGNlbCI6Y2FzZSJQdGdBdHRyU2VtaSI6Y2FzZSJQdGdNZW1BcmVhIjpjYXNlIlB0Z1RibCI6Y2FzZSJQdGdNZW1FcnIiOmNhc2UiUHRnTWVtQXJlYU4iOmNhc2UiUHRnTWVtTm9NZW1OIjpjYXNlIlB0Z0F0dHJOb29wIjpjYXNlIlB0Z1NoZWV0''@;'; put 'put ''IjpjYXNlIlB0Z0VuZFNoZWV0IjpjYXNlIlB0Z01lbUZ1bmMiOmNhc2UiUHRnTWVtTm9NZW0iOmJyZWFrO2Nhc2UiUHRnUmVmIjpsPUNhKGdbMV1bMV0scyxuKSxmLnB1c2goRGEobCxpKSk7YnJlYWs7Y2FzZSJQdGdSZWZOIjpsPXI/Q2EoZ1sxXVsxXSxyLG4pOmdbMV1bMV0sZi5wdXNoKERh''@;'; put 'put ''KGwsaSkpO2JyZWFrO2Nhc2UiUHRnUmVmM2QiOmg9Z1sxXVsxXSxsPUNhKGdbMV1bMl0scyxuKSx2PUlmKGEsaCxuKSxmLnB1c2godisiISIrRGEobCxpKSk7YnJlYWs7Y2FzZSJQdGdGdW5jIjpjYXNlIlB0Z0Z1bmNWYXIiOnZhciBNPWdbMV1bMF0sST1nWzFdWzFdO018fChNPTApO3ZhciB5''@;'; put 'put ''PTA9PShNJj0xMjcpP1tdOmYuc2xpY2UoLU0pO2YubGVuZ3RoLT1NLCJVc2VyIj09PUkmJihJPXkuc2hpZnQoKSksZi5wdXNoKEkrIigiK3kuam9pbigiLCIpKyIpIik7YnJlYWs7Y2FzZSJQdGdCb29sIjpmLnB1c2goZ1sxXT8iVFJVRSI6IkZBTFNFIik7YnJlYWs7Y2FzZSJQdGdJbnQiOmNh''@;'; put 'put ''c2UiUHRnRXJyIjpmLnB1c2goZ1sxXSk7YnJlYWs7Y2FzZSJQdGdOdW0iOmYucHVzaChTdHJpbmcoZ1sxXSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjpmLnB1c2goJyInK2dbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSJQdGdBcmVhTiI6ZD1ucyhnWzFdWzFdLHI/e3M6cn06''@;'; put 'put ''cyxuKSxmLnB1c2godG4oZCxuKSk7YnJlYWs7Y2FzZSJQdGdBcmVhIjpkPW5zKGdbMV1bMV0scyxuKSxmLnB1c2godG4oZCxuKSk7YnJlYWs7Y2FzZSJQdGdBcmVhM2QiOmQ9Z1sxXVsyXSx2PUlmKGEsaD1nWzFdWzFdLG4pLGYucHVzaCh2KyIhIit0bihkLG4pKTticmVhaztjYXNlIlB0Z0F0''@;'; put 'put ''dHJTdW0iOmYucHVzaCgiU1VNKCIrZi5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UiUHRnTmFtZSI6dmFyIFA9KGEubmFtZXN8fFtdKVsoeD1nWzFdWzJdKS0xXXx8KGFbMF18fFtdKVt4XSxSPVA/UC5OYW1lOiJTSDMzVEpTTkFNRSIrU3RyaW5nKHgpO1ImJiJfeGxmbi4iPT1SLnNsaWNlKDAsNikm''@;'; put 'put ''JiFuLnhsZm4mJihSPVIuc2xpY2UoNikpLGYucHVzaChSKTticmVhaztjYXNlIlB0Z05hbWVYIjp2YXIgWCxWPWdbMV1bMV07aWYoeD1nWzFdWzJdLCEobi5iaWZmPD01KSl7dmFyIGI9IiI7aWYoMTQ4NDk9PSgoYVtWXXx8W10pWzBdfHxbXSlbMF18fCgxMDI1PT0oKGFbVl18fFtdKVswXXx8''@;'; put 'put ''W10pWzBdP2FbVl1beF0mJmFbVl1beF0uaXRhYj4wJiYoYj1hLlNoZWV0TmFtZXNbYVtWXVt4XS5pdGFiLTFdKyIhIik6Yj1hLlNoZWV0TmFtZXNbeC0xXSsiISIpLGFbVl0mJmFbVl1beF0pYis9YVtWXVt4XS5OYW1lO2Vsc2UgaWYoYVswXSYmYVswXVt4XSliKz1hWzBdW3hdLk5hbWU7ZWxz''@;'; put 'put ''ZXt2YXIgZWU9KE9mKGEsVixuKXx8IiIpLnNwbGl0KCI7OyIpO2VlW3gtMV0/Yj1lZVt4LTFdOmIrPSJTSDMzVEpTRVJSWCJ9Zi5wdXNoKGIpO2JyZWFrfVY8MCYmKFY9LVYpLGFbVl0mJihYPWFbVl1beF0pLFh8fChYPXtOYW1lOiJTSDMzVEpTRVJSWSJ9KSxmLnB1c2goWC5OYW1lKTticmVh''@;'; put 'put ''aztjYXNlIlB0Z1BhcmVuIjp2YXIgbGU9IigiLHJlPSIpIjtpZih1Pj0wKXtzd2l0Y2gocD0iIixlWzBdW3VdWzFdWzBdKXtjYXNlIDI6bGU9amUoIiAiLGVbMF1bdV1bMV1bMV0pK2xlO2JyZWFrO2Nhc2UgMzpsZT1qZSgiXHIiLGVbMF1bdV1bMV1bMV0pK2xlO2JyZWFrO2Nhc2UgNDpyZT1q''@;'; put 'put ''ZSgiICIsZVswXVt1XVsxXVsxXSkrcmU7YnJlYWs7Y2FzZSA1OnJlPWplKCJcciIsZVswXVt1XVsxXVsxXSkrcmU7YnJlYWs7ZGVmYXVsdDppZihuLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK2VbMF1bdV1bMV1bMF0pfXU9LTF9Zi5wdXNoKGxl''@;'; put 'put ''K2YucG9wKCkrcmUpO2JyZWFrO2Nhc2UiUHRnUmVmRXJyIjpjYXNlIlB0Z1JlZkVycjNkIjpjYXNlIlB0Z0FyZWFFcnIiOmNhc2UiUHRnQXJlYUVycjNkIjpmLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOnZhciBkZT17YzpyLmMscjpyLnJ9O2lmKGEuc2hhcmVkZltnZShsPXtj''@;'; put 'put ''OmdbMV1bMV0scjpnWzFdWzBdfSldKXt2YXIgdWU9YS5zaGFyZWRmW2dlKGwpXTtmLnB1c2goa3IodWUsMCxkZSxhLG4pKX1lbHNle3ZhciBGZT0hMTtmb3IoYz0wO2MhPWEuYXJyYXlmLmxlbmd0aDsrK2MpaWYoIShsLmM8KG89YS5hcnJheWZbY10pWzBdLnMuY3x8bC5jPm9bMF0uZS5jfHxs''@;'; put 'put ''LnI8b1swXS5zLnJ8fGwucj5vWzBdLmUucikpe2YucHVzaChrcihvWzFdLDAsZGUsYSxuKSksRmU9ITA7YnJlYWt9RmV8fGYucHVzaChnWzFdKX1icmVhaztjYXNlIlB0Z0FycmF5IjpmLnB1c2goInsiK1hkKGdbMV0pKyJ9Iik7YnJlYWs7Y2FzZSJQdGdBdHRyU3BhY2UiOmNhc2UiUHRnQXR0''@;'; put 'put ''clNwYWNlU2VtaSI6dT1rO2JyZWFrO2Nhc2UiUHRnTWlzc0FyZyI6Zi5wdXNoKCIiKTticmVhaztjYXNlIlB0Z0xpc3QiOmYucHVzaCgiVGFibGUiK2dbMV0uaWR4KyJbIyIrZ1sxXS5ydCsiXSIpO2JyZWFrO2Nhc2UiUHRnRWxmQ29sIjpjYXNlIlB0Z0VsZkNvbFMiOmNhc2UiUHRnRWxmQ29s''@;'; put 'put ''U1YiOmNhc2UiUHRnRWxmQ29sViI6Y2FzZSJQdGdFbGZMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbCI6Y2FzZSJQdGdFbGZSYWRpY2FsTGVsIjpjYXNlIlB0Z0VsZlJhZGljYWxTIjpjYXNlIlB0Z0VsZlJ3IjpjYXNlIlB0Z0VsZlJ3ViI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBFTEZz''@;'; put 'put ''Iik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBGb3JtdWxhIFRva2VuOiAiK1N0cmluZyhnKSl9aWYoMyE9bi5iaWZmJiZ1Pj0wJiYtMT09WyJQdGdBdHRyU3BhY2UiLCJQdGdBdHRyU3BhY2VTZW1pIiwiUHRnQXR0ckdvdG8iXS5pbmRleE9mKGVbMF1ba11bMF0pKXt2''@;'; put 'put ''YXIgeGU9ITA7c3dpdGNoKChnPWVbMF1bdV0pWzFdWzBdKXtjYXNlIDQ6eGU9ITE7Y2FzZSAwOnA9amUoIiAiLGdbMV1bMV0pO2JyZWFrO2Nhc2UgNTp4ZT0hMTtjYXNlIDE6cD1qZSgiXHIiLGdbMV1bMV0pO2JyZWFrO2RlZmF1bHQ6aWYocD0iIixuLldURil0aHJvdyBuZXcgRXJyb3IoIlVu''@;'; put 'put ''ZXhwZWN0ZWQgUHRnQXR0clNwYWNlVHlwZSAiK2dbMV1bMF0pfWYucHVzaCgoeGU/cDoiIikrZi5wb3AoKSsoeGU/IiI6cCkpLHU9LTF9fWlmKGYubGVuZ3RoPjEmJm4uV1RGKXRocm93IG5ldyBFcnJvcigiYmFkIGZvcm11bGEgc3RhY2siKTtyZXR1cm4gZlswXX1mdW5jdGlvbiAkZChlLHQs''@;'; put 'put ''cil7dmFyIGksYT1lLmwrdCxuPTI9PXIuYmlmZj8xOjIscz1lLnJlYWRfc2hpZnQobik7aWYoNjU1MzU9PXMpcmV0dXJuW1tdLHByKGUsdC0yKV07dmFyIGY9SGEoZSxzLHIpO3JldHVybiB0IT09cytuJiYoaT1XYShlLHQtcy1uLGYscikpLGUubD1hLFtmLGldfWZ1bmN0aW9uIFlkKGUsdCxy''@;'; put 'put ''KXt2YXIgbixhPWUubCt0LGk9ZS5yZWFkX3NoaWZ0KDIpLHM9SGEoZSxpLHIpO3JldHVybiA2NTUzNT09aT9bW10scHIoZSx0LTIpXToodCE9PWkrMiYmKG49V2EoZSxhLWktMixzLHIpKSxbcyxuXSl9ZnVuY3Rpb24gTm4oZSx0LHIpe3ZhciBhPWUubCt0LG49bnQoZSk7Mj09ci5iaWZmJiYr''@;'; put 'put ''K2UubDt2YXIgaT1mdW5jdGlvbiBKZChlKXt2YXIgdDtpZig2NTUzNSE9PXV0KGUsZS5sKzYpKXJldHVybltncihlKSwibiJdO3N3aXRjaChlW2UubF0pe2Nhc2UgMDpyZXR1cm4gZS5sKz04LFsiU3RyaW5nIiwicyJdO2Nhc2UgMTpyZXR1cm4gdD0xPT09ZVtlLmwrMl0sZS5sKz04LFt0LCJi''@;'; put 'put ''Il07Y2FzZSAyOnJldHVybiB0PWVbZS5sKzJdLGUubCs9OCxbdCwiZSJdO2Nhc2UgMzpyZXR1cm4gZS5sKz04LFsiIiwicyJdfXJldHVybltdfShlKSxzPWUucmVhZF9zaGlmdCgxKTsyIT1yLmJpZmYmJihlLnJlYWRfc2hpZnQoMSksci5iaWZmPj01JiZlLnJlYWRfc2hpZnQoNCkpO3ZhciBm''@;'; put 'put ''PWZ1bmN0aW9uIGpkKGUsdCxyKXt2YXIgaSxhPWUubCt0LG49Mj09ci5iaWZmPzE6MixzPWUucmVhZF9zaGlmdChuKTtpZig2NTUzNT09cylyZXR1cm5bW10scHIoZSx0LTIpXTt2YXIgZj1IYShlLHMscik7cmV0dXJuIHQhPT1zK24mJihpPVdhKGUsdC1zLW4sZixyKSksZS5sPWEsW2YsaV19''@;'; put 'put ''KGUsYS1lLmwscik7cmV0dXJue2NlbGw6bix2YWw6aVswXSxmb3JtdWxhOmYsc2hhcmVkOnM+PjMmMSx0dDppWzFdfX1mdW5jdGlvbiBBMChlLHQscil7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLG49SGEoZSxhLHIpLGk9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybltuLGk+MD9XYShlLGksbixyKTpu''@;'; put 'put ''dWxsXX12YXIgUWQ9QTAsQzA9QTAsZXY9QTAscnY9QTAsdHY9ezA6IkJFRVAiLDE6Ik9QRU4iLDI6Ik9QRU4uTElOS1MiLDM6IkNMT1NFLkFMTCIsNDoiU0FWRSIsNToiU0FWRS5BUyIsNjoiRklMRS5ERUxFVEUiLDc6IlBBR0UuU0VUVVAiLDg6IlBSSU5UIiw5OiJQUklOVEVSLlNFVFVQIiwx''@;'; put 'put ''MDoiUVVJVCIsMTE6Ik5FVy5XSU5ET1ciLDEyOiJBUlJBTkdFLkFMTCIsMTM6IldJTkRPVy5TSVpFIiwxNDoiV0lORE9XLk1PVkUiLDE1OiJGVUxMIiwxNjoiQ0xPU0UiLDE3OiJSVU4iLDIyOiJTRVQuUFJJTlQuQVJFQSIsMjM6IlNFVC5QUklOVC5USVRMRVMiLDI0OiJTRVQuUEFHRS5CUkVB''@;'; put 'put ''SyIsMjU6IlJFTU9WRS5QQUdFLkJSRUFLIiwyNjoiRk9OVCIsMjc6IkRJU1BMQVkiLDI4OiJQUk9URUNULkRPQ1VNRU5UIiwyOToiUFJFQ0lTSU9OIiwzMDoiQTEuUjFDMSIsMzE6IkNBTENVTEFURS5OT1ciLDMyOiJDQUxDVUxBVElPTiIsMzQ6IkRBVEEuRklORCIsMzU6IkVYVFJBQ1QiLDM2''@;'; put 'put ''OiJEQVRBLkRFTEVURSIsMzc6IlNFVC5EQVRBQkFTRSIsMzg6IlNFVC5DUklURVJJQSIsMzk6IlNPUlQiLDQwOiJEQVRBLlNFUklFUyIsNDE6IlRBQkxFIiw0MjoiRk9STUFULk5VTUJFUiIsNDM6IkFMSUdOTUVOVCIsNDQ6IlNUWUxFIiw0NToiQk9SREVSIiw0NjoiQ0VMTC5QUk9URUNUSU9O''@;'; put 'put ''Iiw0NzoiQ09MVU1OLldJRFRIIiw0ODoiVU5ETyIsNDk6IkNVVCIsNTA6IkNPUFkiLDUxOiJQQVNURSIsNTI6IkNMRUFSIiw1MzoiUEFTVEUuU1BFQ0lBTCIsNTQ6IkVESVQuREVMRVRFIiw1NToiSU5TRVJUIiw1NjoiRklMTC5SSUdIVCIsNTc6IkZJTEwuRE9XTiIsNjE6IkRFRklORS5OQU1F''@;'; put 'put ''Iiw2MjoiQ1JFQVRFLk5BTUVTIiw2MzoiRk9STVVMQS5HT1RPIiw2NDoiRk9STVVMQS5GSU5EIiw2NToiU0VMRUNULkxBU1QuQ0VMTCIsNjY6IlNIT1cuQUNUSVZFLkNFTEwiLDY3OiJHQUxMRVJZLkFSRUEiLDY4OiJHQUxMRVJZLkJBUiIsNjk6IkdBTExFUlkuQ09MVU1OIiw3MDoiR0FMTEVS''@;'; put 'put ''WS5MSU5FIiw3MToiR0FMTEVSWS5QSUUiLDcyOiJHQUxMRVJZLlNDQVRURVIiLDczOiJDT01CSU5BVElPTiIsNzQ6IlBSRUZFUlJFRCIsNzU6IkFERC5PVkVSTEFZIiw3NjoiR1JJRExJTkVTIiw3NzoiU0VULlBSRUZFUlJFRCIsNzg6IkFYRVMiLDc5OiJMRUdFTkQiLDgwOiJBVFRBQ0guVEVY''@;'; put 'put ''VCIsODE6IkFERC5BUlJPVyIsODI6IlNFTEVDVC5DSEFSVCIsODM6IlNFTEVDVC5QTE9ULkFSRUEiLDg0OiJQQVRURVJOUyIsODU6Ik1BSU4uQ0hBUlQiLDg2OiJPVkVSTEFZIiw4NzoiU0NBTEUiLDg4OiJGT1JNQVQuTEVHRU5EIiw4OToiRk9STUFULlRFWFQiLDkwOiJFRElULlJFUEVBVCIs''@;'; put 'put ''OTE6IlBBUlNFIiw5MjoiSlVTVElGWSIsOTM6IkhJREUiLDk0OiJVTkhJREUiLDk1OiJXT1JLU1BBQ0UiLDk2OiJGT1JNVUxBIiw5NzoiRk9STVVMQS5GSUxMIiw5ODoiRk9STVVMQS5BUlJBWSIsOTk6IkRBVEEuRklORC5ORVhUIiwxMDA6IkRBVEEuRklORC5QUkVWIiwxMDE6IkZPUk1VTEEu''@;'; put 'put ''RklORC5ORVhUIiwxMDI6IkZPUk1VTEEuRklORC5QUkVWIiwxMDM6IkFDVElWQVRFIiwxMDQ6IkFDVElWQVRFLk5FWFQiLDEwNToiQUNUSVZBVEUuUFJFViIsMTA2OiJVTkxPQ0tFRC5ORVhUIiwxMDc6IlVOTE9DS0VELlBSRVYiLDEwODoiQ09QWS5QSUNUVVJFIiwxMDk6IlNFTEVDVCIsMTEw''@;'; put 'put ''OiJERUxFVEUuTkFNRSIsMTExOiJERUxFVEUuRk9STUFUIiwxMTI6IlZMSU5FIiwxMTM6IkhMSU5FIiwxMTQ6IlZQQUdFIiwxMTU6IkhQQUdFIiwxMTY6IlZTQ1JPTEwiLDExNzoiSFNDUk9MTCIsMTE4OiJBTEVSVCIsMTE5OiJORVciLDEyMDoiQ0FOQ0VMLkNPUFkiLDEyMToiU0hPVy5DTElQ''@;'; put 'put ''Qk9BUkQiLDEyMjoiTUVTU0FHRSIsMTI0OiJQQVNURS5MSU5LIiwxMjU6IkFQUC5BQ1RJVkFURSIsMTI2OiJERUxFVEUuQVJST1ciLDEyNzoiUk9XLkhFSUdIVCIsMTI4OiJGT1JNQVQuTU9WRSIsMTI5OiJGT1JNQVQuU0laRSIsMTMwOiJGT1JNVUxBLlJFUExBQ0UiLDEzMToiU0VORC5LRVlT''@;'; put 'put ''IiwxMzI6IlNFTEVDVC5TUEVDSUFMIiwxMzM6IkFQUExZLk5BTUVTIiwxMzQ6IlJFUExBQ0UuRk9OVCIsMTM1OiJGUkVFWkUuUEFORVMiLDEzNjoiU0hPVy5JTkZPIiwxMzc6IlNQTElUIiwxMzg6Ik9OLldJTkRPVyIsMTM5OiJPTi5EQVRBIiwxNDA6IkRJU0FCTEUuSU5QVVQiLDE0MjoiT1VU''@;'; put 'put ''TElORSIsMTQzOiJMSVNULk5BTUVTIiwxNDQ6IkZJTEUuQ0xPU0UiLDE0NToiU0FWRS5XT1JLQk9PSyIsMTQ2OiJEQVRBLkZPUk0iLDE0NzoiQ09QWS5DSEFSVCIsMTQ4OiJPTi5USU1FIiwxNDk6IldBSVQiLDE1MDoiRk9STUFULkZPTlQiLDE1MToiRklMTC5VUCIsMTUyOiJGSUxMLkxFRlQi''@;'; put 'put ''LDE1MzoiREVMRVRFLk9WRVJMQVkiLDE1NToiU0hPUlQuTUVOVVMiLDE1OToiU0VULlVQREFURS5TVEFUVVMiLDE2MToiQ09MT1IuUEFMRVRURSIsMTYyOiJERUxFVEUuU1RZTEUiLDE2MzoiV0lORE9XLlJFU1RPUkUiLDE2NDoiV0lORE9XLk1BWElNSVpFIiwxNjY6IkNIQU5HRS5MSU5LIiwx''@;'; put 'put ''Njc6IkNBTENVTEFURS5ET0NVTUVOVCIsMTY4OiJPTi5LRVkiLDE2OToiQVBQLlJFU1RPUkUiLDE3MDoiQVBQLk1PVkUiLDE3MToiQVBQLlNJWkUiLDE3MjoiQVBQLk1JTklNSVpFIiwxNzM6IkFQUC5NQVhJTUlaRSIsMTc0OiJCUklORy5UTy5GUk9OVCIsMTc1OiJTRU5ELlRPLkJBQ0siLDE4''@;'; put 'put ''NToiTUFJTi5DSEFSVC5UWVBFIiwxODY6Ik9WRVJMQVkuQ0hBUlQuVFlQRSIsMTg3OiJTRUxFQ1QuRU5EIiwxODg6Ik9QRU4uTUFJTCIsMTg5OiJTRU5ELk1BSUwiLDE5MDoiU1RBTkRBUkQuRk9OVCIsMTkxOiJDT05TT0xJREFURSIsMTkyOiJTT1JULlNQRUNJQUwiLDE5MzoiR0FMTEVSWS4z''@;'; put 'put ''RC5BUkVBIiwxOTQ6IkdBTExFUlkuM0QuQ09MVU1OIiwxOTU6IkdBTExFUlkuM0QuTElORSIsMTk2OiJHQUxMRVJZLjNELlBJRSIsMTk3OiJWSUVXLjNEIiwxOTg6IkdPQUwuU0VFSyIsMTk5OiJXT1JLR1JPVVAiLDIwMDoiRklMTC5HUk9VUCIsMjAxOiJVUERBVEUuTElOSyIsMjAyOiJQUk9N''@;'; put 'put ''T1RFIiwyMDM6IkRFTU9URSIsMjA0OiJTSE9XLkRFVEFJTCIsMjA2OiJVTkdST1VQIiwyMDc6Ik9CSkVDVC5QUk9QRVJUSUVTIiwyMDg6IlNBVkUuTkVXLk9CSkVDVCIsMjA5OiJTSEFSRSIsMjEwOiJTSEFSRS5OQU1FIiwyMTE6IkRVUExJQ0FURSIsMjEyOiJBUFBMWS5TVFlMRSIsMjEzOiJB''@;'; put 'put ''U1NJR04uVE8uT0JKRUNUIiwyMTQ6Ik9CSkVDVC5QUk9URUNUSU9OIiwyMTU6IkhJREUuT0JKRUNUIiwyMTY6IlNFVC5FWFRSQUNUIiwyMTc6IkNSRUFURS5QVUJMSVNIRVIiLDIxODoiU1VCU0NSSUJFLlRPIiwyMTk6IkFUVFJJQlVURVMiLDIyMDoiU0hPVy5UT09MQkFSIiwyMjI6IlBSSU5U''@;'; put 'put ''LlBSRVZJRVciLDIyMzoiRURJVC5DT0xPUiIsMjI0OiJTSE9XLkxFVkVMUyIsMjI1OiJGT1JNQVQuTUFJTiIsMjI2OiJGT1JNQVQuT1ZFUkxBWSIsMjI3OiJPTi5SRUNBTEMiLDIyODoiRURJVC5TRVJJRVMiLDIyOToiREVGSU5FLlNUWUxFIiwyNDA6IkxJTkUuUFJJTlQiLDI0MzoiRU5URVIu''@;'; put 'put ''REFUQSIsMjQ5OiJHQUxMRVJZLlJBREFSIiwyNTA6Ik1FUkdFLlNUWUxFUyIsMjUxOiJFRElUSU9OLk9QVElPTlMiLDI1MjoiUEFTVEUuUElDVFVSRSIsMjUzOiJQQVNURS5QSUNUVVJFLkxJTksiLDI1NDoiU1BFTExJTkciLDI1NjoiWk9PTSIsMjU5OiJJTlNFUlQuT0JKRUNUIiwyNjA6IldJ''@;'; put 'put ''TkRPVy5NSU5JTUlaRSIsMjY1OiJTT1VORC5OT1RFIiwyNjY6IlNPVU5ELlBMQVkiLDI2NzoiRk9STUFULlNIQVBFIiwyNjg6IkVYVEVORC5QT0xZR09OIiwyNjk6IkZPUk1BVC5BVVRPIiwyNzI6IkdBTExFUlkuM0QuQkFSIiwyNzM6IkdBTExFUlkuM0QuU1VSRkFDRSIsMjc0OiJGSUxMLkFV''@;'; put 'put ''VE8iLDI3NjoiQ1VTVE9NSVpFLlRPT0xCQVIiLDI3NzoiQURELlRPT0wiLDI3ODoiRURJVC5PQkpFQ1QiLDI3OToiT04uRE9VQkxFQ0xJQ0siLDI4MDoiT04uRU5UUlkiLDI4MToiV09SS0JPT0suQUREIiwyODI6IldPUktCT09LLk1PVkUiLDI4MzoiV09SS0JPT0suQ09QWSIsMjg0OiJXT1JL''@;'; put 'put ''Qk9PSy5PUFRJT05TIiwyODU6IlNBVkUuV09SS1NQQUNFIiwyODg6IkNIQVJULldJWkFSRCIsMjg5OiJERUxFVEUuVE9PTCIsMjkwOiJNT1ZFLlRPT0wiLDI5MToiV09SS0JPT0suU0VMRUNUIiwyOTI6IldPUktCT09LLkFDVElWQVRFIiwyOTM6IkFTU0lHTi5UTy5UT09MIiwyOTU6IkNPUFku''@;'; put 'put ''VE9PTCIsMjk2OiJSRVNFVC5UT09MIiwyOTc6IkNPTlNUUkFJTi5OVU1FUklDIiwyOTg6IlBBU1RFLlRPT0wiLDMwMjoiV09SS0JPT0suTkVXIiwzMDU6IlNDRU5BUklPLkNFTExTIiwzMDY6IlNDRU5BUklPLkRFTEVURSIsMzA3OiJTQ0VOQVJJTy5BREQiLDMwODoiU0NFTkFSSU8uRURJVCIs''@;'; put 'put ''MzA5OiJTQ0VOQVJJTy5TSE9XIiwzMTA6IlNDRU5BUklPLlNIT1cuTkVYVCIsMzExOiJTQ0VOQVJJTy5TVU1NQVJZIiwzMTI6IlBJVk9ULlRBQkxFLldJWkFSRCIsMzEzOiJQSVZPVC5GSUVMRC5QUk9QRVJUSUVTIiwzMTQ6IlBJVk9ULkZJRUxEIiwzMTU6IlBJVk9ULklURU0iLDMxNjoiUElW''@;'; put 'put ''T1QuQURELkZJRUxEUyIsMzE4OiJPUFRJT05TLkNBTENVTEFUSU9OIiwzMTk6Ik9QVElPTlMuRURJVCIsMzIwOiJPUFRJT05TLlZJRVciLDMyMToiQURESU4uTUFOQUdFUiIsMzIyOiJNRU5VLkVESVRPUiIsMzIzOiJBVFRBQ0guVE9PTEJBUlMiLDMyNDoiVkJBQWN0aXZhdGUiLDMyNToiT1BU''@;'; put 'put ''SU9OUy5DSEFSVCIsMzI4OiJWQkEuSU5TRVJULkZJTEUiLDMzMDoiVkJBLlBST0NFRFVSRS5ERUZJTklUSU9OIiwzMzY6IlJPVVRJTkcuU0xJUCIsMzM4OiJST1VURS5ET0NVTUVOVCIsMzM5OiJNQUlMLkxPR09OIiwzNDI6IklOU0VSVC5QSUNUVVJFIiwzNDM6IkVESVQuVE9PTCIsMzQ0OiJH''@;'; put 'put ''QUxMRVJZLkRPVUdITlVUIiwzNTA6IkNIQVJULlRSRU5EIiwzNTI6IlBJVk9ULklURU0uUFJPUEVSVElFUyIsMzU0OiJXT1JLQk9PSy5JTlNFUlQiLDM1NToiT1BUSU9OUy5UUkFOU0lUSU9OIiwzNTY6Ik9QVElPTlMuR0VORVJBTCIsMzcwOiJGSUxURVIuQURWQU5DRUQiLDM3MzoiTUFJTC5B''@;'; put 'put ''REQuTUFJTEVSIiwzNzQ6Ik1BSUwuREVMRVRFLk1BSUxFUiIsMzc1OiJNQUlMLlJFUExZIiwzNzY6Ik1BSUwuUkVQTFkuQUxMIiwzNzc6Ik1BSUwuRk9SV0FSRCIsMzc4OiJNQUlMLk5FWFQuTEVUVEVSIiwzNzk6IkRBVEEuTEFCRUwiLDM4MDoiSU5TRVJULlRJVExFIiwzODE6IkZPTlQuUFJP''@;'; put 'put ''UEVSVElFUyIsMzgyOiJNQUNSTy5PUFRJT05TIiwzODM6IldPUktCT09LLkhJREUiLDM4NDoiV09SS0JPT0suVU5ISURFIiwzODU6IldPUktCT09LLkRFTEVURSIsMzg2OiJXT1JLQk9PSy5OQU1FIiwzODg6IkdBTExFUlkuQ1VTVE9NIiwzOTA6IkFERC5DSEFSVC5BVVRPRk9STUFUIiwzOTE6''@;'; put 'put ''IkRFTEVURS5DSEFSVC5BVVRPRk9STUFUIiwzOTI6IkNIQVJULkFERC5EQVRBIiwzOTM6IkFVVE8uT1VUTElORSIsMzk0OiJUQUIuT1JERVIiLDM5NToiU0hPVy5ESUFMT0ciLDM5NjoiU0VMRUNULkFMTCIsMzk3OiJVTkdST1VQLlNIRUVUUyIsMzk4OiJTVUJUT1RBTC5DUkVBVEUiLDM5OToi''@;'; put 'put ''U1VCVE9UQUwuUkVNT1ZFIiw0MDA6IlJFTkFNRS5PQkpFQ1QiLDQxMjoiV09SS0JPT0suU0NST0xMIiw0MTM6IldPUktCT09LLk5FWFQiLDQxNDoiV09SS0JPT0suUFJFViIsNDE1OiJXT1JLQk9PSy5UQUIuU1BMSVQiLDQxNjoiRlVMTC5TQ1JFRU4iLDQxNzoiV09SS0JPT0suUFJPVEVDVCIs''@;'; put 'put ''NDIwOiJTQ1JPTExCQVIuUFJPUEVSVElFUyIsNDIxOiJQSVZPVC5TSE9XLlBBR0VTIiw0MjI6IlRFWFQuVE8uQ09MVU1OUyIsNDIzOiJGT1JNQVQuQ0hBUlRUWVBFIiw0MjQ6IkxJTksuRk9STUFUIiw0MjU6IlRSQUNFUi5ESVNQTEFZIiw0MzA6IlRSQUNFUi5OQVZJR0FURSIsNDMxOiJUUkFD''@;'; put 'put ''RVIuQ0xFQVIiLDQzMjoiVFJBQ0VSLkVSUk9SIiw0MzM6IlBJVk9ULkZJRUxELkdST1VQIiw0MzQ6IlBJVk9ULkZJRUxELlVOR1JPVVAiLDQzNToiQ0hFQ0tCT1guUFJPUEVSVElFUyIsNDM2OiJMQUJFTC5QUk9QRVJUSUVTIiw0Mzc6IkxJU1RCT1guUFJPUEVSVElFUyIsNDM4OiJFRElUQk9Y''@;'; put 'put ''LlBST1BFUlRJRVMiLDQzOToiUElWT1QuUkVGUkVTSCIsNDQwOiJMSU5LLkNPTUJPIiw0NDE6Ik9QRU4uVEVYVCIsNDQyOiJISURFLkRJQUxPRyIsNDQzOiJTRVQuRElBTE9HLkZPQ1VTIiw0NDQ6IkVOQUJMRS5PQkpFQ1QiLDQ0NToiUFVTSEJVVFRPTi5QUk9QRVJUSUVTIiw0NDY6IlNFVC5E''@;'; put 'put ''SUFMT0cuREVGQVVMVCIsNDQ3OiJGSUxURVIiLDQ0ODoiRklMVEVSLlNIT1cuQUxMIiw0NDk6IkNMRUFSLk9VVExJTkUiLDQ1MDoiRlVOQ1RJT04uV0laQVJEIiw0NTE6IkFERC5MSVNULklURU0iLDQ1MjoiU0VULkxJU1QuSVRFTSIsNDUzOiJSRU1PVkUuTElTVC5JVEVNIiw0NTQ6IlNFTEVD''@;'; put 'put ''VC5MSVNULklURU0iLDQ1NToiU0VULkNPTlRST0wuVkFMVUUiLDQ1NjoiU0FWRS5DT1BZLkFTIiw0NTg6Ik9QVElPTlMuTElTVFMuQUREIiw0NTk6Ik9QVElPTlMuTElTVFMuREVMRVRFIiw0NjA6IlNFUklFUy5BWEVTIiw0NjE6IlNFUklFUy5YIiw0NjI6IlNFUklFUy5ZIiw0NjM6IkVSUk9S''@;'; put 'put ''QkFSLlgiLDQ2NDoiRVJST1JCQVIuWSIsNDY1OiJGT1JNQVQuQ0hBUlQiLDQ2NjoiU0VSSUVTLk9SREVSIiw0Njc6Ik1BSUwuTE9HT0ZGIiw0Njg6IkNMRUFSLlJPVVRJTkcuU0xJUCIsNDY5OiJBUFAuQUNUSVZBVEUuTUlDUk9TT0ZUIiw0NzA6Ik1BSUwuRURJVC5NQUlMRVIiLDQ3MToiT04u''@;'; put 'put ''U0hFRVQiLDQ3MjoiU1RBTkRBUkQuV0lEVEgiLDQ3MzoiU0NFTkFSSU8uTUVSR0UiLDQ3NDoiU1VNTUFSWS5JTkZPIiw0NzU6IkZJTkQuRklMRSIsNDc2OiJBQ1RJVkUuQ0VMTC5GT05UIiw0Nzc6IkVOQUJMRS5USVBXSVpBUkQiLDQ3ODoiVkJBLk1BS0UuQURESU4iLDQ4MDoiSU5TRVJUREFU''@;'; put 'put ''QVRBQkxFIiw0ODE6IldPUktHUk9VUC5PUFRJT05TIiw0ODI6Ik1BSUwuU0VORC5NQUlMRVIiLDQ4NToiQVVUT0NPUlJFQ1QiLDQ4OToiUE9TVC5ET0NVTUVOVCIsNDkxOiJQSUNLTElTVCIsNDkzOiJWSUVXLlNIT1ciLDQ5NDoiVklFVy5ERUZJTkUiLDQ5NToiVklFVy5ERUxFVEUiLDUwOToi''@;'; put 'put ''U0hFRVQuQkFDS0dST1VORCIsNTEwOiJJTlNFUlQuTUFQLk9CSkVDVCIsNTExOiJPUFRJT05TLk1FTk9OTyIsNTE3OiJNU09DSEVDS1MiLDUxODoiTk9STUFMIiw1MTk6IkxBWU9VVCIsNTIwOiJSTS5QUklOVC5BUkVBIiw1MjE6IkNMRUFSLlBSSU5ULkFSRUEiLDUyMjoiQURELlBSSU5ULkFS''@;'; put 'put ''RUEiLDUyMzoiTU9WRS5CUksiLDU0NToiSElERUNVUlIuTk9URSIsNTQ2OiJISURFQUxMLk5PVEVTIiw1NDc6IkRFTEVURS5OT1RFIiw1NDg6IlRSQVZFUlNFLk5PVEVTIiw1NDk6IkFDVElWQVRFLk5PVEVTIiw2MjA6IlBST1RFQ1QuUkVWSVNJT05TIiw2MjE6IlVOUFJPVEVDVC5SRVZJU0lP''@;'; put 'put ''TlMiLDY0NzoiT1BUSU9OUy5NRSIsNjUzOiJXRUIuUFVCTElTSCIsNjY3OiJORVdXRUJRVUVSWSIsNjczOiJQSVZPVC5UQUJMRS5DSEFSVCIsNzUzOiJPUFRJT05TLlNBVkUiLDc1NToiT1BUSU9OUy5TUEVMTCIsODA4OiJISURFQUxMLklOS0FOTk9UUyJ9LFJmPXswOiJDT1VOVCIsMToiSUYi''@;'; put 'put ''LDI6IklTTkEiLDM6IklTRVJST1IiLDQ6IlNVTSIsNToiQVZFUkFHRSIsNjoiTUlOIiw3OiJNQVgiLDg6IlJPVyIsOToiQ09MVU1OIiwxMDoiTkEiLDExOiJOUFYiLDEyOiJTVERFViIsMTM6IkRPTExBUiIsMTQ6IkZJWEVEIiwxNToiU0lOIiwxNjoiQ09TIiwxNzoiVEFOIiwxODoiQVRBTiIs''@;'; put 'put ''MTk6IlBJIiwyMDoiU1FSVCIsMjE6IkVYUCIsMjI6IkxOIiwyMzoiTE9HMTAiLDI0OiJBQlMiLDI1OiJJTlQiLDI2OiJTSUdOIiwyNzoiUk9VTkQiLDI4OiJMT09LVVAiLDI5OiJJTkRFWCIsMzA6IlJFUFQiLDMxOiJNSUQiLDMyOiJMRU4iLDMzOiJWQUxVRSIsMzQ6IlRSVUUiLDM1OiJGQUxT''@;'; put 'put ''RSIsMzY6IkFORCIsMzc6Ik9SIiwzODoiTk9UIiwzOToiTU9EIiw0MDoiRENPVU5UIiw0MToiRFNVTSIsNDI6IkRBVkVSQUdFIiw0MzoiRE1JTiIsNDQ6IkRNQVgiLDQ1OiJEU1RERVYiLDQ2OiJWQVIiLDQ3OiJEVkFSIiw0ODoiVEVYVCIsNDk6IkxJTkVTVCIsNTA6IlRSRU5EIiw1MToiTE9H''@;'; put 'put ''RVNUIiw1MjoiR1JPV1RIIiw1MzoiR09UTyIsNTQ6IkhBTFQiLDU1OiJSRVRVUk4iLDU2OiJQViIsNTc6IkZWIiw1ODoiTlBFUiIsNTk6IlBNVCIsNjA6IlJBVEUiLDYxOiJNSVJSIiw2MjoiSVJSIiw2MzoiUkFORCIsNjQ6Ik1BVENIIiw2NToiREFURSIsNjY6IlRJTUUiLDY3OiJEQVkiLDY4''@;'; put 'put ''OiJNT05USCIsNjk6IllFQVIiLDcwOiJXRUVLREFZIiw3MToiSE9VUiIsNzI6Ik1JTlVURSIsNzM6IlNFQ09ORCIsNzQ6Ik5PVyIsNzU6IkFSRUFTIiw3NjoiUk9XUyIsNzc6IkNPTFVNTlMiLDc4OiJPRkZTRVQiLDc5OiJBQlNSRUYiLDgwOiJSRUxSRUYiLDgxOiJBUkdVTUVOVCIsODI6IlNF''@;'; put 'put ''QVJDSCIsODM6IlRSQU5TUE9TRSIsODQ6IkVSUk9SIiw4NToiU1RFUCIsODY6IlRZUEUiLDg3OiJFQ0hPIiw4ODoiU0VULk5BTUUiLDg5OiJDQUxMRVIiLDkwOiJERVJFRiIsOTE6IldJTkRPV1MiLDkyOiJTRVJJRVMiLDkzOiJET0NVTUVOVFMiLDk0OiJBQ1RJVkUuQ0VMTCIsOTU6IlNFTEVD''@;'; put 'put ''VElPTiIsOTY6IlJFU1VMVCIsOTc6IkFUQU4yIiw5ODoiQVNJTiIsOTk6IkFDT1MiLDEwMDoiQ0hPT1NFIiwxMDE6IkhMT09LVVAiLDEwMjoiVkxPT0tVUCIsMTAzOiJMSU5LUyIsMTA0OiJJTlBVVCIsMTA1OiJJU1JFRiIsMTA2OiJHRVQuRk9STVVMQSIsMTA3OiJHRVQuTkFNRSIsMTA4OiJT''@;'; put 'put ''RVQuVkFMVUUiLDEwOToiTE9HIiwxMTA6IkVYRUMiLDExMToiQ0hBUiIsMTEyOiJMT1dFUiIsMTEzOiJVUFBFUiIsMTE0OiJQUk9QRVIiLDExNToiTEVGVCIsMTE2OiJSSUdIVCIsMTE3OiJFWEFDVCIsMTE4OiJUUklNIiwxMTk6IlJFUExBQ0UiLDEyMDoiU1VCU1RJVFVURSIsMTIxOiJDT0RF''@;'; put 'put ''IiwxMjI6Ik5BTUVTIiwxMjM6IkRJUkVDVE9SWSIsMTI0OiJGSU5EIiwxMjU6IkNFTEwiLDEyNjoiSVNFUlIiLDEyNzoiSVNURVhUIiwxMjg6IklTTlVNQkVSIiwxMjk6IklTQkxBTksiLDEzMDoiVCIsMTMxOiJOIiwxMzI6IkZPUEVOIiwxMzM6IkZDTE9TRSIsMTM0OiJGU0laRSIsMTM1OiJG''@;'; put 'put ''UkVBRExOIiwxMzY6IkZSRUFEIiwxMzc6IkZXUklURUxOIiwxMzg6IkZXUklURSIsMTM5OiJGUE9TIiwxNDA6IkRBVEVWQUxVRSIsMTQxOiJUSU1FVkFMVUUiLDE0MjoiU0xOIiwxNDM6IlNZRCIsMTQ0OiJEREIiLDE0NToiR0VULkRFRiIsMTQ2OiJSRUZURVhUIiwxNDc6IlRFWFRSRUYiLDE0''@;'; put 'put ''ODoiSU5ESVJFQ1QiLDE0OToiUkVHSVNURVIiLDE1MDoiQ0FMTCIsMTUxOiJBREQuQkFSIiwxNTI6IkFERC5NRU5VIiwxNTM6IkFERC5DT01NQU5EIiwxNTQ6IkVOQUJMRS5DT01NQU5EIiwxNTU6IkNIRUNLLkNPTU1BTkQiLDE1NjoiUkVOQU1FLkNPTU1BTkQiLDE1NzoiU0hPVy5CQVIiLDE1''@;'; put 'put ''ODoiREVMRVRFLk1FTlUiLDE1OToiREVMRVRFLkNPTU1BTkQiLDE2MDoiR0VULkNIQVJULklURU0iLDE2MToiRElBTE9HLkJPWCIsMTYyOiJDTEVBTiIsMTYzOiJNREVURVJNIiwxNjQ6Ik1JTlZFUlNFIiwxNjU6Ik1NVUxUIiwxNjY6IkZJTEVTIiwxNjc6IklQTVQiLDE2ODoiUFBNVCIsMTY5''@;'; put 'put ''OiJDT1VOVEEiLDE3MDoiQ0FOQ0VMLktFWSIsMTcxOiJGT1IiLDE3MjoiV0hJTEUiLDE3MzoiQlJFQUsiLDE3NDoiTkVYVCIsMTc1OiJJTklUSUFURSIsMTc2OiJSRVFVRVNUIiwxNzc6IlBPS0UiLDE3ODoiRVhFQ1VURSIsMTc5OiJURVJNSU5BVEUiLDE4MDoiUkVTVEFSVCIsMTgxOiJIRUxQ''@;'; put 'put ''IiwxODI6IkdFVC5CQVIiLDE4MzoiUFJPRFVDVCIsMTg0OiJGQUNUIiwxODU6IkdFVC5DRUxMIiwxODY6IkdFVC5XT1JLU1BBQ0UiLDE4NzoiR0VULldJTkRPVyIsMTg4OiJHRVQuRE9DVU1FTlQiLDE4OToiRFBST0RVQ1QiLDE5MDoiSVNOT05URVhUIiwxOTE6IkdFVC5OT1RFIiwxOTI6Ik5P''@;'; put 'put ''VEUiLDE5MzoiU1RERVZQIiwxOTQ6IlZBUlAiLDE5NToiRFNUREVWUCIsMTk2OiJEVkFSUCIsMTk3OiJUUlVOQyIsMTk4OiJJU0xPR0lDQUwiLDE5OToiRENPVU5UQSIsMjAwOiJERUxFVEUuQkFSIiwyMDE6IlVOUkVHSVNURVIiLDIwNDoiVVNET0xMQVIiLDIwNToiRklOREIiLDIwNjoiU0VB''@;'; put 'put ''UkNIQiIsMjA3OiJSRVBMQUNFQiIsMjA4OiJMRUZUQiIsMjA5OiJSSUdIVEIiLDIxMDoiTUlEQiIsMjExOiJMRU5CIiwyMTI6IlJPVU5EVVAiLDIxMzoiUk9VTkRET1dOIiwyMTQ6IkFTQyIsMjE1OiJEQkNTIiwyMTY6IlJBTksiLDIxOToiQUREUkVTUyIsMjIwOiJEQVlTMzYwIiwyMjE6IlRP''@;'; put 'put ''REFZIiwyMjI6IlZEQiIsMjIzOiJFTFNFIiwyMjQ6IkVMU0UuSUYiLDIyNToiRU5ELklGIiwyMjY6IkZPUi5DRUxMIiwyMjc6Ik1FRElBTiIsMjI4OiJTVU1QUk9EVUNUIiwyMjk6IlNJTkgiLDIzMDoiQ09TSCIsMjMxOiJUQU5IIiwyMzI6IkFTSU5IIiwyMzM6IkFDT1NIIiwyMzQ6IkFUQU5I''@;'; put 'put ''IiwyMzU6IkRHRVQiLDIzNjoiQ1JFQVRFLk9CSkVDVCIsMjM3OiJWT0xBVElMRSIsMjM4OiJMQVNULkVSUk9SIiwyMzk6IkNVU1RPTS5VTkRPIiwyNDA6IkNVU1RPTS5SRVBFQVQiLDI0MToiRk9STVVMQS5DT05WRVJUIiwyNDI6IkdFVC5MSU5LLklORk8iLDI0MzoiVEVYVC5CT1giLDI0NDoi''@;'; put 'put ''SU5GTyIsMjQ1OiJHUk9VUCIsMjQ2OiJHRVQuT0JKRUNUIiwyNDc6IkRCIiwyNDg6IlBBVVNFIiwyNTE6IlJFU1VNRSIsMjUyOiJGUkVRVUVOQ1kiLDI1MzoiQURELlRPT0xCQVIiLDI1NDoiREVMRVRFLlRPT0xCQVIiLDI1NToiVXNlciIsMjU2OiJSRVNFVC5UT09MQkFSIiwyNTc6IkVWQUxV''@;'; put 'put ''QVRFIiwyNTg6IkdFVC5UT09MQkFSIiwyNTk6IkdFVC5UT09MIiwyNjA6IlNQRUxMSU5HLkNIRUNLIiwyNjE6IkVSUk9SLlRZUEUiLDI2MjoiQVBQLlRJVExFIiwyNjM6IldJTkRPVy5USVRMRSIsMjY0OiJTQVZFLlRPT0xCQVIiLDI2NToiRU5BQkxFLlRPT0wiLDI2NjoiUFJFU1MuVE9PTCIs''@;'; put 'put ''MjY3OiJSRUdJU1RFUi5JRCIsMjY4OiJHRVQuV09SS0JPT0siLDI2OToiQVZFREVWIiwyNzA6IkJFVEFESVNUIiwyNzE6IkdBTU1BTE4iLDI3MjoiQkVUQUlOViIsMjczOiJCSU5PTURJU1QiLDI3NDoiQ0hJRElTVCIsMjc1OiJDSElJTlYiLDI3NjoiQ09NQklOIiwyNzc6IkNPTkZJREVOQ0Ui''@;'; put 'put ''LDI3ODoiQ1JJVEJJTk9NIiwyNzk6IkVWRU4iLDI4MDoiRVhQT05ESVNUIiwyODE6IkZESVNUIiwyODI6IkZJTlYiLDI4MzoiRklTSEVSIiwyODQ6IkZJU0hFUklOViIsMjg1OiJGTE9PUiIsMjg2OiJHQU1NQURJU1QiLDI4NzoiR0FNTUFJTlYiLDI4ODoiQ0VJTElORyIsMjg5OiJIWVBHRU9N''@;'; put 'put ''RElTVCIsMjkwOiJMT0dOT1JNRElTVCIsMjkxOiJMT0dJTlYiLDI5MjoiTkVHQklOT01ESVNUIiwyOTM6Ik5PUk1ESVNUIiwyOTQ6Ik5PUk1TRElTVCIsMjk1OiJOT1JNSU5WIiwyOTY6Ik5PUk1TSU5WIiwyOTc6IlNUQU5EQVJESVpFIiwyOTg6Ik9ERCIsMjk5OiJQRVJNVVQiLDMwMDoiUE9J''@;'; put 'put ''U1NPTiIsMzAxOiJURElTVCIsMzAyOiJXRUlCVUxMIiwzMDM6IlNVTVhNWTIiLDMwNDoiU1VNWDJNWTIiLDMwNToiU1VNWDJQWTIiLDMwNjoiQ0hJVEVTVCIsMzA3OiJDT1JSRUwiLDMwODoiQ09WQVIiLDMwOToiRk9SRUNBU1QiLDMxMDoiRlRFU1QiLDMxMToiSU5URVJDRVBUIiwzMTI6IlBF''@;'; put 'put ''QVJTT04iLDMxMzoiUlNRIiwzMTQ6IlNURVlYIiwzMTU6IlNMT1BFIiwzMTY6IlRURVNUIiwzMTc6IlBST0IiLDMxODoiREVWU1EiLDMxOToiR0VPTUVBTiIsMzIwOiJIQVJNRUFOIiwzMjE6IlNVTVNRIiwzMjI6IktVUlQiLDMyMzoiU0tFVyIsMzI0OiJaVEVTVCIsMzI1OiJMQVJHRSIsMzI2''@;'; put 'put ''OiJTTUFMTCIsMzI3OiJRVUFSVElMRSIsMzI4OiJQRVJDRU5USUxFIiwzMjk6IlBFUkNFTlRSQU5LIiwzMzA6Ik1PREUiLDMzMToiVFJJTU1FQU4iLDMzMjoiVElOViIsMzM0OiJNT1ZJRS5DT01NQU5EIiwzMzU6IkdFVC5NT1ZJRSIsMzM2OiJDT05DQVRFTkFURSIsMzM3OiJQT1dFUiIsMzM4''@;'; put 'put ''OiJQSVZPVC5BREQuREFUQSIsMzM5OiJHRVQuUElWT1QuVEFCTEUiLDM0MDoiR0VULlBJVk9ULkZJRUxEIiwzNDE6IkdFVC5QSVZPVC5JVEVNIiwzNDI6IlJBRElBTlMiLDM0MzoiREVHUkVFUyIsMzQ0OiJTVUJUT1RBTCIsMzQ1OiJTVU1JRiIsMzQ2OiJDT1VOVElGIiwzNDc6IkNPVU5UQkxB''@;'; put 'put ''TksiLDM0ODoiU0NFTkFSSU8uR0VUIiwzNDk6Ik9QVElPTlMuTElTVFMuR0VUIiwzNTA6IklTUE1UIiwzNTE6IkRBVEVESUYiLDM1MjoiREFURVNUUklORyIsMzUzOiJOVU1CRVJTVFJJTkciLDM1NDoiUk9NQU4iLDM1NToiT1BFTi5ESUFMT0ciLDM1NjoiU0FWRS5ESUFMT0ciLDM1NzoiVklF''@;'; put 'put ''Vy5HRVQiLDM1ODoiR0VUUElWT1REQVRBIiwzNTk6IkhZUEVSTElOSyIsMzYwOiJQSE9ORVRJQyIsMzYxOiJBVkVSQUdFQSIsMzYyOiJNQVhBIiwzNjM6Ik1JTkEiLDM2NDoiU1RERVZQQSIsMzY1OiJWQVJQQSIsMzY2OiJTVERFVkEiLDM2NzoiVkFSQSIsMzY4OiJCQUhUVEVYVCIsMzY5OiJU''@;'; put 'put ''SEFJREFZT0ZXRUVLIiwzNzA6IlRIQUlESUdJVCIsMzcxOiJUSEFJTU9OVEhPRllFQVIiLDM3MjoiVEhBSU5VTVNPVU5EIiwzNzM6IlRIQUlOVU1TVFJJTkciLDM3NDoiVEhBSVNUUklOR0xFTkdUSCIsMzc1OiJJU1RIQUlESUdJVCIsMzc2OiJST1VOREJBSFRET1dOIiwzNzc6IlJPVU5EQkFI''@;'; put 'put ''VFVQIiwzNzg6IlRIQUlZRUFSIiwzNzk6IlJURCIsMzgwOiJDVUJFVkFMVUUiLDM4MToiQ1VCRU1FTUJFUiIsMzgyOiJDVUJFTUVNQkVSUFJPUEVSVFkiLDM4MzoiQ1VCRVJBTktFRE1FTUJFUiIsMzg0OiJIRVgyQklOIiwzODU6IkhFWDJERUMiLDM4NjoiSEVYMk9DVCIsMzg3OiJERUMyQklO''@;'; put 'put ''IiwzODg6IkRFQzJIRVgiLDM4OToiREVDMk9DVCIsMzkwOiJPQ1QyQklOIiwzOTE6Ik9DVDJIRVgiLDM5MjoiT0NUMkRFQyIsMzkzOiJCSU4yREVDIiwzOTQ6IkJJTjJPQ1QiLDM5NToiQklOMkhFWCIsMzk2OiJJTVNVQiIsMzk3OiJJTURJViIsMzk4OiJJTVBPV0VSIiwzOTk6IklNQUJTIiw0''@;'; put 'put ''MDA6IklNU1FSVCIsNDAxOiJJTUxOIiw0MDI6IklNTE9HMiIsNDAzOiJJTUxPRzEwIiw0MDQ6IklNU0lOIiw0MDU6IklNQ09TIiw0MDY6IklNRVhQIiw0MDc6IklNQVJHVU1FTlQiLDQwODoiSU1DT05KVUdBVEUiLDQwOToiSU1BR0lOQVJZIiw0MTA6IklNUkVBTCIsNDExOiJDT01QTEVYIiw0''@;'; put 'put ''MTI6IklNU1VNIiw0MTM6IklNUFJPRFVDVCIsNDE0OiJTRVJJRVNTVU0iLDQxNToiRkFDVERPVUJMRSIsNDE2OiJTUVJUUEkiLDQxNzoiUVVPVElFTlQiLDQxODoiREVMVEEiLDQxOToiR0VTVEVQIiw0MjA6IklTRVZFTiIsNDIxOiJJU09ERCIsNDIyOiJNUk9VTkQiLDQyMzoiRVJGIiw0MjQ6''@;'; put 'put ''IkVSRkMiLDQyNToiQkVTU0VMSiIsNDI2OiJCRVNTRUxLIiw0Mjc6IkJFU1NFTFkiLDQyODoiQkVTU0VMSSIsNDI5OiJYSVJSIiw0MzA6IlhOUFYiLDQzMToiUFJJQ0VNQVQiLDQzMjoiWUlFTERNQVQiLDQzMzoiSU5UUkFURSIsNDM0OiJSRUNFSVZFRCIsNDM1OiJESVNDIiw0MzY6IlBSSUNF''@;'; put 'put ''RElTQyIsNDM3OiJZSUVMRERJU0MiLDQzODoiVEJJTExFUSIsNDM5OiJUQklMTFBSSUNFIiw0NDA6IlRCSUxMWUlFTEQiLDQ0MToiUFJJQ0UiLDQ0MjoiWUlFTEQiLDQ0MzoiRE9MTEFSREUiLDQ0NDoiRE9MTEFSRlIiLDQ0NToiTk9NSU5BTCIsNDQ2OiJFRkZFQ1QiLDQ0NzoiQ1VNUFJJTkMi''@;'; put 'put ''LDQ0ODoiQ1VNSVBNVCIsNDQ5OiJFREFURSIsNDUwOiJFT01PTlRIIiw0NTE6IllFQVJGUkFDIiw0NTI6IkNPVVBEQVlCUyIsNDUzOiJDT1VQREFZUyIsNDU0OiJDT1VQREFZU05DIiw0NTU6IkNPVVBOQ0QiLDQ1NjoiQ09VUE5VTSIsNDU3OiJDT1VQUENEIiw0NTg6IkRVUkFUSU9OIiw0NTk6''@;'; put 'put ''Ik1EVVJBVElPTiIsNDYwOiJPRERMUFJJQ0UiLDQ2MToiT0RETFlJRUxEIiw0NjI6Ik9EREZQUklDRSIsNDYzOiJPRERGWUlFTEQiLDQ2NDoiUkFOREJFVFdFRU4iLDQ2NToiV0VFS05VTSIsNDY2OiJBTU9SREVHUkMiLDQ2NzoiQU1PUkxJTkMiLDQ2ODoiQ09OVkVSVCIsNzI0OiJTSEVFVEpT''@;'; put 'put ''Iiw0Njk6IkFDQ1JJTlQiLDQ3MDoiQUNDUklOVE0iLDQ3MToiV09SS0RBWSIsNDcyOiJORVRXT1JLREFZUyIsNDczOiJHQ0QiLDQ3NDoiTVVMVElOT01JQUwiLDQ3NToiTENNIiw0NzY6IkZWU0NIRURVTEUiLDQ3NzoiQ1VCRUtQSU1FTUJFUiIsNDc4OiJDVUJFU0VUIiw0Nzk6IkNVQkVTRVRD''@;'; put 'put ''T1VOVCIsNDgwOiJJRkVSUk9SIiw0ODE6IkNPVU5USUZTIiw0ODI6IlNVTUlGUyIsNDgzOiJBVkVSQUdFSUYiLDQ4NDoiQVZFUkFHRUlGUyJ9LGF2PXsyOjEsMzoxLDEwOjAsMTU6MSwxNjoxLDE3OjEsMTg6MSwxOTowLDIwOjEsMjE6MSwyMjoxLDIzOjEsMjQ6MSwyNToxLDI2OjEsMjc6Miwz''@;'; put 'put ''MDoyLDMxOjMsMzI6MSwzMzoxLDM0OjAsMzU6MCwzODoxLDM5OjIsNDA6Myw0MTozLDQyOjMsNDM6Myw0NDozLDQ1OjMsNDc6Myw0ODoyLDUzOjEsNjE6Myw2MzowLDY1OjMsNjY6Myw2NzoxLDY4OjEsNjk6MSw3MDoxLDcxOjEsNzI6MSw3MzoxLDc0OjAsNzU6MSw3NjoxLDc3OjEsNzk6Miw4''@;'; put 'put ''MDoyLDgzOjEsODU6MCw4NjoxLDg5OjAsOTA6MSw5NDowLDk1OjAsOTc6Miw5ODoxLDk5OjEsMTAxOjMsMTAyOjMsMTA1OjEsMTA2OjEsMTA4OjIsMTExOjEsMTEyOjEsMTEzOjEsMTE0OjEsMTE3OjIsMTE4OjEsMTE5OjQsMTIxOjEsMTI2OjEsMTI3OjEsMTI4OjEsMTI5OjEsMTMwOjEsMTMx''@;'; put 'put ''OjEsMTMzOjEsMTM0OjEsMTM1OjEsMTM2OjIsMTM3OjIsMTM4OjIsMTQwOjEsMTQxOjEsMTQyOjMsMTQzOjQsMTQ0OjQsMTYxOjEsMTYyOjEsMTYzOjEsMTY0OjEsMTY1OjIsMTcyOjEsMTc1OjIsMTc2OjIsMTc3OjMsMTc4OjIsMTc5OjEsMTg0OjEsMTg2OjEsMTg5OjMsMTkwOjEsMTk1OjMs''@;'; put 'put ''MTk2OjMsMTk3OjEsMTk4OjEsMTk5OjMsMjAxOjEsMjA3OjQsMjEwOjMsMjExOjEsMjEyOjIsMjEzOjIsMjE0OjEsMjE1OjEsMjI1OjAsMjI5OjEsMjMwOjEsMjMxOjEsMjMyOjEsMjMzOjEsMjM0OjEsMjM1OjMsMjQ0OjEsMjQ3OjQsMjUyOjIsMjU3OjEsMjYxOjEsMjcxOjEsMjczOjQsMjc0''@;'; put 'put ''OjIsMjc1OjIsMjc2OjIsMjc3OjMsMjc4OjMsMjc5OjEsMjgwOjMsMjgxOjMsMjgyOjMsMjgzOjEsMjg0OjEsMjg1OjIsMjg2OjQsMjg3OjMsMjg4OjIsMjg5OjQsMjkwOjMsMjkxOjMsMjkyOjMsMjkzOjQsMjk0OjEsMjk1OjMsMjk2OjEsMjk3OjMsMjk4OjEsMjk5OjIsMzAwOjMsMzAxOjMs''@;'; put 'put ''MzAyOjQsMzAzOjIsMzA0OjIsMzA1OjIsMzA2OjIsMzA3OjIsMzA4OjIsMzA5OjMsMzEwOjIsMzExOjIsMzEyOjIsMzEzOjIsMzE0OjIsMzE1OjIsMzE2OjQsMzI1OjIsMzI2OjIsMzI3OjIsMzI4OjIsMzMxOjIsMzMyOjIsMzM3OjIsMzQyOjEsMzQzOjEsMzQ2OjIsMzQ3OjEsMzUwOjQsMzUx''@;'; put 'put ''OjMsMzUyOjEsMzUzOjIsMzYwOjEsMzY4OjEsMzY5OjEsMzcwOjEsMzcxOjEsMzcyOjEsMzczOjEsMzc0OjEsMzc1OjEsMzc2OjEsMzc3OjEsMzc4OjEsMzgyOjMsMzg1OjEsMzkyOjEsMzkzOjEsMzk2OjIsMzk3OjIsMzk4OjIsMzk5OjEsNDAwOjEsNDAxOjEsNDAyOjEsNDAzOjEsNDA0OjEs''@;'; put 'put ''NDA1OjEsNDA2OjEsNDA3OjEsNDA4OjEsNDA5OjEsNDEwOjEsNDE0OjQsNDE1OjEsNDE2OjEsNDE3OjIsNDIwOjEsNDIxOjEsNDIyOjIsNDI0OjEsNDI1OjIsNDI2OjIsNDI3OjIsNDI4OjIsNDMwOjMsNDM4OjMsNDM5OjMsNDQwOjMsNDQzOjIsNDQ0OjIsNDQ1OjIsNDQ2OjIsNDQ3OjYsNDQ4''@;'; put 'put ''OjYsNDQ5OjIsNDUwOjIsNDY0OjIsNDY4OjMsNDc2OjIsNDc5OjEsNDgwOjIsNjU1MzU6MH07ZnVuY3Rpb24gTmYoZSl7cmV0dXJuIm9mOiI9PWUuc2xpY2UoMCwzKSYmKGU9ZS5zbGljZSgzKSksNjE9PWUuY2hhckNvZGVBdCgwKSYmNjE9PShlPWUuc2xpY2UoMSkpLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihlPWUuc2xpY2UoMSkpLChlPShlPShlPWUucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSkucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbih0LHIpe3JldHVybiByLnJlcGxhY2UoL1wuL2csIiIpfSkpLnJlcGxh''@;'; put 'put ''Y2UoL1xbLigjW0EtWl0qWz8hXSlcXS9nLCIkMSIpKS5yZXBsYWNlKC9bO35dL2csIiwiKS5yZXBsYWNlKC9cfC9nLCI7Iil9ZnVuY3Rpb24gYm4oZSl7dmFyIHQ9ZS5zcGxpdCgiOiIpO3JldHVyblt0WzBdLnNwbGl0KCIuIilbMF0sdFswXS5zcGxpdCgiLiIpWzFdKyh0Lmxlbmd0aD4xPyI6''@;'; put 'put ''IisodFsxXS5zcGxpdCgiLiIpWzFdfHx0WzFdLnNwbGl0KCIuIilbMF0pOiIiKV19dmFyIFZhPXt9LGhhPXt9O2Z1bmN0aW9uIFl0KGUsdCl7aWYoZSl7dmFyIHI9Wy43LC43LC43NSwuNzUsLjMsLjNdOyJ4bG1sIj09dCYmKHI9WzEsMSwxLDEsLjUsLjVdKSxudWxsPT1lLmxlZnQmJihlLmxl''@;'; put 'put ''ZnQ9clswXSksbnVsbD09ZS5yaWdodCYmKGUucmlnaHQ9clsxXSksbnVsbD09ZS50b3AmJihlLnRvcD1yWzJdKSxudWxsPT1lLmJvdHRvbSYmKGUuYm90dG9tPXJbM10pLG51bGw9PWUuaGVhZGVyJiYoZS5oZWFkZXI9cls0XSksbnVsbD09ZS5mb290ZXImJihlLmZvb3Rlcj1yWzVdKX19ZnVu''@;'; put 'put ''Y3Rpb24gYmYoZSx0LHIsYSxuLGkpe3RyeXthLmNlbGxORiYmKGUuej1wZVt0XSl9Y2F0Y2goZil7aWYoYS5XVEYpdGhyb3cgZn1pZigieiIhPT1lLnR8fGEuY2VsbFN0eWxlcyl7aWYoImQiPT09ZS50JiYic3RyaW5nIj09dHlwZW9mIGUudiYmKGUudj1YZShlLnYpKSwoIWF8fCExIT09YS5j''@;'; put 'put ''ZWxsVGV4dCkmJiJ6IiE9PWUudCl0cnl7aWYobnVsbD09cGVbdF0mJmV0KGFvW3RdfHwiR2VuZXJhbCIsdCksImUiPT09ZS50KWUudz1lLnd8fHh0W2Uudl07ZWxzZSBpZigwPT09dClpZigibiI9PT1lLnQpZS53PSgwfGUudik9PT1lLnY/ZS52LnRvU3RyaW5nKDEwKTprYShlLnYpO2Vsc2Ug''@;'; put 'put ''aWYoImQiPT09ZS50KXt2YXIgcz1pcihlLnYpO2Uudz0oMHxzKT09PXM/cy50b1N0cmluZygxMCk6a2Eocyl9ZWxzZXtpZih2b2lkIDA9PT1lLnYpcmV0dXJuIiI7ZS53PU50KGUudixoYSl9ZWxzZSBlLnc9UnIodCwiZCI9PT1lLnQ/aXIoZS52KTplLnYsaGEpfWNhdGNoKGYpe2lmKGEuV1RG''@;'; put 'put ''KXRocm93IGZ9aWYoYS5jZWxsU3R5bGVzJiZudWxsIT1yKXRyeXtlLnM9aS5GaWxsc1tyXSxlLnMuZmdDb2xvciYmZS5zLmZnQ29sb3IudGhlbWUmJiFlLnMuZmdDb2xvci5yZ2ImJihlLnMuZmdDb2xvci5yZ2I9VDAobi50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtlLnMuZmdDb2xvci50aGVt''@;'; put 'put ''ZV0ucmdiLGUucy5mZ0NvbG9yLnRpbnR8fDApLGEuV1RGJiYoZS5zLmZnQ29sb3IucmF3X3JnYj1uLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW2Uucy5mZ0NvbG9yLnRoZW1lXS5yZ2IpKSxlLnMuYmdDb2xvciYmZS5zLmJnQ29sb3IudGhlbWUmJihlLnMuYmdDb2xvci5yZ2I9VDAobi50aGVt''@;'; put 'put ''ZUVsZW1lbnRzLmNsclNjaGVtZVtlLnMuYmdDb2xvci50aGVtZV0ucmdiLGUucy5iZ0NvbG9yLnRpbnR8fDApLGEuV1RGJiYoZS5zLmJnQ29sb3IucmF3X3JnYj1uLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW2Uucy5iZ0NvbG9yLnRoZW1lXS5yZ2IpKX1jYXRjaChmKXtpZihhLldURiYmaS5G''@;'; put 'put ''aWxscyl0aHJvdyBmfX19dmFyIHN2PS88KD86XHc6KT9tZXJnZUNlbGwgcmVmPSJbQS1aMC05Ol0rIlxzKltcL10/Pi9nLGZ2PS88KD86XHcrOik/c2hlZXREYXRhW14+XSo+KFtcc1xTXSopPFwvKD86XHcrOik/c2hlZXREYXRhPi8sY3Y9LzwoPzpcdzopP2h5cGVybGluayBbXj5dKj4vZ20s''@;'; put 'put ''b3Y9LyIoXHcqOlx3KikiLyxsdj0vPCg/Olx3Oik/Y29sXGJbXj5dKltcL10/Pi9nLHV2PS88KD86XHc6KT9hdXRvRmlsdGVyW14+XSooW1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9hdXRvRmlsdGVyKT4vZyxodj0vPCg/Olx3Oik/cGFnZU1hcmdpbnNbXj5dKlwvPi9nLFBmPS88KD86XHc6''@;'; put 'put ''KT9zaGVldFByXGIoPzpbXj5hLXpdW14+XSopP1wvPi8seHY9LzwoPzpcdzopP3NoZWV0UHJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRQcik+Lyxkdj0vPCg/Olx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9zaGVldFZpZXdz''@;'; put 'put ''KT4vO2Z1bmN0aW9uIExuKGUsdCxyLGEpe3ZhciBuPW1lKGUpO3IuU2hlZXRzW2FdfHwoci5TaGVldHNbYV09e30pLG4uY29kZU5hbWUmJihyLlNoZWV0c1thXS5Db2RlTmFtZT1JZShCZShuLmNvZGVOYW1lKSkpfXZhciBEdj0vPCg/Olx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9c''@;'; put 'put ''Lz8+LyxOdj1mdW5jdGlvbigpe3ZhciBlPS88KD86XHcrOik/Y1sgXC8+XS8sdD0vPFwvKD86XHcrOik/cm93Pi8scj0vcj1bIiddKFteIiddKilbIiddLyxhPS88KD86XHcrOik/aXM+KFtcU1xzXSo/KTxcLyg/Olx3KzopP2lzPi8sbj0vcmVmPVsiJ10oW14iJ10qKVsiJ10vLGk9RmEoInYi''@;'; put 'put ''KSxzPUZhKCJmIik7cmV0dXJuIGZ1bmN0aW9uKGMsbyxsLGgseCxkKXtmb3IodmFyIEkseSxWLFgscmUsdj0wLHU9IiIscD1bXSxrPVtdLFQ9MCxnPTAsTj0wLE09IiIsUD0wLFI9MCxiPTAsZWU9MCxsZT1BcnJheS5pc0FycmF5KGQuQ2VsbFhmKSxkZT1bXSx1ZT1bXSxGZT1BcnJheS5pc0Fy''@;'; put 'put ''cmF5KG8pLGNlPVtdLHhlPXt9LEs9ITEsQz0hIWwuc2hlZXRTdHVicyxVPWMuc3BsaXQodCksTz0wLEQ9VS5sZW5ndGg7TyE9RDsrK08pe3ZhciBqPSh1PVVbT10udHJpbSgpKS5sZW5ndGg7aWYoMCE9PWope3ZhciBzZT0wO2U6Zm9yKHY9MDt2PGo7Kyt2KXN3aXRjaCh1W3ZdKXtjYXNlIj4i''@;'; put 'put ''OmlmKCIvIiE9dVt2LTFdKXsrK3Y7YnJlYWsgZX1pZihsJiZsLmNlbGxTdHlsZXMpe2lmKFA9bnVsbCE9KHk9bWUodS5zbGljZShzZSx2KSwhMCkpLnI/cGFyc2VJbnQoeS5yLDEwKTpQKzEsUj0tMSxsLnNoZWV0Um93cyYmbC5zaGVldFJvd3M8UCljb250aW51ZTt4ZT17fSxLPSExLHkuaHQm''@;'; put 'put ''JihLPSEwLHhlLmhwdD1wYXJzZUZsb2F0KHkuaHQpLHhlLmhweD1vYSh4ZS5ocHQpKSwiMSI9PXkuaGlkZGVuJiYoSz0hMCx4ZS5oaWRkZW49ITApLG51bGwhPXkub3V0bGluZUxldmVsJiYoSz0hMCx4ZS5sZXZlbD0reS5vdXRsaW5lTGV2ZWwpLEsmJihjZVtQLTFdPXhlKX1icmVhaztjYXNl''@;'; put 'put ''IjwiOnNlPXZ9aWYoc2U+PXYpYnJlYWs7aWYoUD1udWxsIT0oeT1tZSh1LnNsaWNlKHNlLHYpLCEwKSkucj9wYXJzZUludCh5LnIsMTApOlArMSxSPS0xLCEobC5zaGVldFJvd3MmJmwuc2hlZXRSb3dzPFApKXtoLnMucj5QLTEmJihoLnMucj1QLTEpLGguZS5yPFAtMSYmKGguZS5yPVAtMSks''@;'; put 'put ''bCYmbC5jZWxsU3R5bGVzJiYoeGU9e30sSz0hMSx5Lmh0JiYoSz0hMCx4ZS5ocHQ9cGFyc2VGbG9hdCh5Lmh0KSx4ZS5ocHg9b2EoeGUuaHB0KSksIjEiPT15LmhpZGRlbiYmKEs9ITAseGUuaGlkZGVuPSEwKSxudWxsIT15Lm91dGxpbmVMZXZlbCYmKEs9ITAseGUubGV2ZWw9K3kub3V0bGlu''@;'; put 'put ''ZUxldmVsKSxLJiYoY2VbUC0xXT14ZSkpLHA9dS5zbGljZSh2KS5zcGxpdChlKTtmb3IodmFyIFo9MDtaIT1wLmxlbmd0aCYmIjwiPT1wW1pdLnRyaW0oKS5jaGFyQXQoMCk7KytaKTtmb3IocD1wLnNsaWNlKFopLHY9MDt2IT1wLmxlbmd0aDsrK3YpaWYoMCE9PSh1PXBbdl0udHJpbSgpKS5s''@;'; put 'put ''ZW5ndGgpe2lmKGs9dS5tYXRjaChyKSxUPXYsZz0wLE49MCx1PSI8YyAiKygiPCI9PXUuc2xpY2UoMCwxKT8iPiI6IiIpK3UsbnVsbCE9ayYmMj09PWsubGVuZ3RoKXtmb3IoVD0wLE09a1sxXSxnPTA7ZyE9TS5sZW5ndGgmJiEoKE49TS5jaGFyQ29kZUF0KGcpLTY0KTwxfHxOPjI2KTsrK2cp''@;'; put 'put ''VD0yNipUK047Uj0tLVR9ZWxzZSsrUjtmb3IoZz0wO2chPXUubGVuZ3RoJiY2MiE9PXUuY2hhckNvZGVBdChnKTsrK2cpO2lmKCsrZywoeT1tZSh1LnNsaWNlKDAsZyksITApKS5yfHwoeS5yPWdlKHtyOlAtMSxjOlJ9KSksST17dDoiIn0sbnVsbCE9KGs9KE09dS5zbGljZShnKSkubWF0Y2go''@;'; put 'put ''aSkpJiYiIiE9PWtbMV0mJihJLnY9SWUoa1sxXSkpLGwuY2VsbEZvcm11bGEpe2lmKG51bGwhPShrPU0ubWF0Y2gocykpJiYiIiE9PWtbMV0pe2lmKEkuZj1JZShCZShrWzFdKSkucmVwbGFjZSgvXHJcbi9nLCJcbiIpLGwueGxmbnx8KEkuZj1FZihJLmYpKSxrWzBdLmluZGV4T2YoJ3Q9ImFy''@;'; put 'put ''cmF5IicpPi0xKUkuRj0oTS5tYXRjaChuKXx8W10pWzFdLEkuRi5pbmRleE9mKCI6Iik+LTEmJmRlLnB1c2goW0RlKEkuRiksSS5GXSk7ZWxzZSBpZihrWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7WD1tZShrWzBdKTt2YXIgUT1JZShCZShrWzFdKSk7bC54bGZufHwoUT1FZihRKSks''@;'; put 'put ''dWVbcGFyc2VJbnQoWC5zaSwxMCldPVtYLFEseS5yXX19ZWxzZShrPU0ubWF0Y2goLzxmW14+XSpcLz4vKSkmJnVlWyhYPW1lKGtbMF0pKS5zaV0mJihJLmY9SXgodWVbWC5zaV1bMV0sdWVbWC5zaV1bMl0seS5yKSk7dmFyIFk9R2UoeS5yKTtmb3IoZz0wO2c8ZGUubGVuZ3RoOysrZylZLnI+''@;'; put 'put ''PWRlW2ddWzBdLnMuciYmWS5yPD1kZVtnXVswXS5lLnImJlkuYz49ZGVbZ11bMF0ucy5jJiZZLmM8PWRlW2ddWzBdLmUuYyYmKEkuRj1kZVtnXVsxXSl9aWYobnVsbD09eS50JiZ2b2lkIDA9PT1JLnYpaWYoSS5mfHxJLkYpSS52PTAsSS50PSJuIjtlbHNle2lmKCFDKWNvbnRpbnVlO0kudD0i''@;'; put 'put ''eiJ9ZWxzZSBJLnQ9eS50fHwibiI7c3dpdGNoKGgucy5jPlImJihoLnMuYz1SKSxoLmUuYzxSJiYoaC5lLmM9UiksSS50KXtjYXNlIm4iOmlmKCIiPT1JLnZ8fG51bGw9PUkudil7aWYoIUMpY29udGludWU7SS50PSJ6In1lbHNlIEkudj1wYXJzZUZsb2F0KEkudik7YnJlYWs7Y2FzZSJzIjpp''@;'; put 'put ''Zih0eXBlb2YgSS52PiJ1Iil7aWYoIUMpY29udGludWU7SS50PSJ6In1lbHNlIFY9VmFbcGFyc2VJbnQoSS52LDEwKV0sSS52PVYudCxJLnI9Vi5yLGwuY2VsbEhUTUwmJihJLmg9Vi5oKTticmVhaztjYXNlInN0ciI6SS50PSJzIixJLnY9bnVsbCE9SS52P0JlKEkudik6IiIsbC5jZWxsSFRN''@;'; put 'put ''TCYmKEkuaD0kMChJLnYpKTticmVhaztjYXNlImlubGluZVN0ciI6az1NLm1hdGNoKGEpLEkudD0icyIsbnVsbCE9ayYmKFY9U24oa1sxXSkpPyhJLnY9Vi50LGwuY2VsbEhUTUwmJihJLmg9Vi5oKSk6SS52PSIiO2JyZWFrO2Nhc2UiYiI6SS52PVdlKEkudik7YnJlYWs7Y2FzZSJkIjpsLmNl''@;'; put 'put ''bGxEYXRlcz9JLnY9WGUoSS52LDEpOihJLnY9aXIoWGUoSS52LDEpKSxJLnQ9Im4iKTticmVhaztjYXNlImUiOighbHx8ITEhPT1sLmNlbGxUZXh0KSYmKEkudz1JLnYpLEkudj1kc1tJLnZdfWlmKGI9ZWU9MCxyZT1udWxsLGxlJiZ2b2lkIDAhPT15LnMmJm51bGwhPShyZT1kLkNlbGxYZlt5''@;'; put 'put ''LnNdKSYmKG51bGwhPXJlLm51bUZtdElkJiYoYj1yZS5udW1GbXRJZCksbC5jZWxsU3R5bGVzJiZudWxsIT1yZS5maWxsSWQmJihlZT1yZS5maWxsSWQpKSxiZihJLGIsZWUsbCx4LGQpLGwuY2VsbERhdGVzJiZsZSYmIm4iPT1JLnQmJmJ0KHBlW2JdKSYmKEkudD0iZCIsSS52PW8wKEkudikp''@;'; put 'put ''LHkuY20mJmwueGxtZXRhKXt2YXIgRWU9KGwueGxtZXRhLkNlbGx8fFtdKVsreS5jbS0xXTtFZSYmIlhMREFQUiI9PUVlLnR5cGUmJihJLkQ9ITApfWlmKEZlKXt2YXIgQT1HZSh5LnIpO29bQS5yXXx8KG9bQS5yXT1bXSksb1tBLnJdW0EuY109SX1lbHNlIG9beS5yXT1JfX19fWNlLmxlbmd0''@;'; put 'put ''aD4wJiYob1siIXJvd3MiXT1jZSl9fSgpLE12PVd0O2Z1bmN0aW9uIEJmKGUpe3JldHVybltNdChlKSxncihlKSwibiJdfXZhciBrMj1XdCxNZj1bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImhlYWRlciIsImZvb3RlciJdO3ZhciBCbj1bWyJhbGxvd1JlZnJlc2hRdWVyeSIsITEs''@;'; put 'put ''ImJvb2wiXSxbImF1dG9Db21wcmVzc1BpY3R1cmVzIiwhMCwiYm9vbCJdLFsiYmFja3VwRmlsZSIsITEsImJvb2wiXSxbImNoZWNrQ29tcGF0aWJpbGl0eSIsITEsImJvb2wiXSxbIkNvZGVOYW1lIiwiIl0sWyJkYXRlMTkwNCIsITEsImJvb2wiXSxbImRlZmF1bHRUaGVtZVZlcnNpb24iLDAs''@;'; put 'put ''ImludCJdLFsiZmlsdGVyUHJpdmFjeSIsITEsImJvb2wiXSxbImhpZGVQaXZvdEZpZWxkTGlzdCIsITEsImJvb2wiXSxbInByb21wdGVkU29sdXRpb25zIiwhMSwiYm9vbCJdLFsicHVibGlzaEl0ZW1zIiwhMSwiYm9vbCJdLFsicmVmcmVzaEFsbENvbm5lY3Rpb25zIiwhMSwiYm9vbCJdLFsi''@;'; put 'put ''c2F2ZUV4dGVybmFsTGlua1ZhbHVlcyIsITAsImJvb2wiXSxbInNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzIiwhMCwiYm9vbCJdLFsic2hvd0lua0Fubm90YXRpb24iLCEwLCJib29sIl0sWyJzaG93T2JqZWN0cyIsImFsbCJdLFsic2hvd1Bpdm90Q2hhcnRGaWx0ZXIiLCExLCJib29sIl0s''@;'; put 'put ''WyJ1cGRhdGVMaW5rcyIsInVzZXJTZXQiXV0sYXA9W1siYWN0aXZlVGFiIiwwLCJpbnQiXSxbImF1dG9GaWx0ZXJEYXRlR3JvdXBpbmciLCEwLCJib29sIl0sWyJmaXJzdFNoZWV0IiwwLCJpbnQiXSxbIm1pbmltaXplZCIsITEsImJvb2wiXSxbInNob3dIb3Jpem9udGFsU2Nyb2xsIiwhMCwi''@;'; put 'put ''Ym9vbCJdLFsic2hvd1NoZWV0VGFicyIsITAsImJvb2wiXSxbInNob3dWZXJ0aWNhbFNjcm9sbCIsITAsImJvb2wiXSxbInRhYlJhdGlvIiw2MDAsImludCJdLFsidmlzaWJpbGl0eSIsInZpc2libGUiXV0sbnA9W10saXA9W1siY2FsY0NvbXBsZXRlZCIsInRydWUiXSxbImNhbGNNb2RlIiwi''@;'; put 'put ''YXV0byJdLFsiY2FsY09uU2F2ZSIsInRydWUiXSxbImNvbmN1cnJlbnRDYWxjIiwidHJ1ZSJdLFsiZnVsbENhbGNPbkxvYWQiLCJmYWxzZSJdLFsiZnVsbFByZWNpc2lvbiIsInRydWUiXSxbIml0ZXJhdGUiLCJmYWxzZSJdLFsiaXRlcmF0ZUNvdW50IiwiMTAwIl0sWyJpdGVyYXRlRGVsdGEi''@;'; put 'put ''LCIwLjAwMSJdLFsicmVmTW9kZSIsIkExIl1dO2Z1bmN0aW9uIFVmKGUsdCl7Zm9yKHZhciByPTA7ciE9ZS5sZW5ndGg7KytyKWZvcih2YXIgYT1lW3JdLG49MDtuIT10Lmxlbmd0aDsrK24pe3ZhciBpPXRbbl07aWYobnVsbD09YVtpWzBdXSlhW2lbMF1dPWlbMV07ZWxzZSBzd2l0Y2goaVsy''@;'; put 'put ''XSl7Y2FzZSJib29sIjoic3RyaW5nIj09dHlwZW9mIGFbaVswXV0mJihhW2lbMF1dPVdlKGFbaVswXV0pKTticmVhaztjYXNlImludCI6InN0cmluZyI9PXR5cGVvZiBhW2lbMF1dJiYoYVtpWzBdXT1wYXJzZUludChhW2lbMF1dLDEwKSl9fX1mdW5jdGlvbiBXZihlLHQpe2Zvcih2YXIgcj0w''@;'; put 'put ''O3IhPXQubGVuZ3RoOysrcil7dmFyIGE9dFtyXTtpZihudWxsPT1lW2FbMF1dKWVbYVswXV09YVsxXTtlbHNlIHN3aXRjaChhWzJdKXtjYXNlImJvb2wiOiJzdHJpbmciPT10eXBlb2YgZVthWzBdXSYmKGVbYVswXV09V2UoZVthWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijoic3RyaW5nIj09dHlw''@;'; put 'put ''ZW9mIGVbYVswXV0mJihlW2FbMF1dPXBhcnNlSW50KGVbYVswXV0sMTApKX19fWZ1bmN0aW9uIEhmKGUpe1dmKGUuV0JQcm9wcyxCbiksV2YoZS5DYWxjUHIsaXApLFVmKGUuV0JWaWV3LGFwKSxVZihlLlNoZWV0cyxucCksaGEuZGF0ZTE5MDQ9V2UoZS5XQlByb3BzLmRhdGUxOTA0KX12YXIg''@;'; put 'put ''ZnA9Il1bKj8vXFwiLnNwbGl0KCIiKTt2YXIgb3A9Lzxcdys6d29ya2Jvb2svO2Z1bmN0aW9uIHZwKGUsdCl7dmFyIHI9e307cmV0dXJuIGUucmVhZF9zaGlmdCg0KSxyLkFyY2hJRD1lLnJlYWRfc2hpZnQoNCksZS5sKz10LTgscn1mdW5jdGlvbiBTcChlLHQscixhLG4saSxzLGYpe3JldHVy''@;'; put 'put ''biIuYmluIj09PXQuc2xpY2UoLTQpP2Z1bmN0aW9uIE0yKGUsdCxyLGEsbixpLHMpe2lmKCFlKXJldHVybiBlO3ZhciBmPXR8fHt9O2F8fChhPXsiIWlkIjp7fX0pLG51bGwhPXplJiZudWxsPT1mLmRlbnNlJiYoZi5kZW5zZT16ZSk7dmFyIG8sdix1LHAsayxULGcsTixNLEksYz1mLmRlbnNl''@;'; put 'put ''P1tdOnt9LGw9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0saD1bXSx4PSExLGQ9ITEseT1bXTtmLmJpZmY9MTIsZlsiIXJvdyJdPTA7dmFyIFA9MCxSPSExLFY9W10sWD17fSxiPWYuc3VwYm9va3N8fG4uc3VwYm9va3N8fFtbXV07aWYoYi5zaGFyZWRmPVgsYi5hcnJheWY9VixiLlNo''@;'; put 'put ''ZWV0TmFtZXM9bi5TaGVldE5hbWVzfHxuLlNoZWV0cy5tYXAoZnVuY3Rpb24oeGUpe3JldHVybiB4ZS5uYW1lfSksIWYuc3VwYm9va3MmJihmLnN1cGJvb2tzPWIsbi5OYW1lcykpZm9yKHZhciBlZT0wO2VlPG4uTmFtZXMubGVuZ3RoOysrZWUpYlswXVtlZSsxXT1uLk5hbWVzW2VlXTt2YXIg''@;'; put 'put ''dWUsRmUsbGU9W10scmU9W10sZGU9ITE7aWYoJGFbMTZdPXtuOiJCcnRTaG9ydFJlYWwiLGY6QmZ9LGh0KGUsZnVuY3Rpb24oSyxDLFUpe2lmKCFkKXN3aXRjaChVKXtjYXNlIDE0ODpvPUs7YnJlYWs7Y2FzZSAwOnY9SyxmLnNoZWV0Um93cyYmZi5zaGVldFJvd3M8PXYuciYmKGQ9ITApLE09''@;'; put 'put ''S2Uoaz12LnIpLGZbIiFyb3ciXT12LnIsKEsuaGlkZGVufHxLLmhwdHx8bnVsbCE9Sy5sZXZlbCkmJihLLmhwdCYmKEsuaHB4PW9hKEsuaHB0KSkscmVbSy5yXT1LKTticmVhaztjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA2OmNhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6''@;'; put 'put ''Y2FzZSAxMTpjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpjYXNlIDYyOnN3aXRjaCh1PXt0OktbMl19LEtbMl0pe2Nhc2UibiI6dS52PUtbMV07YnJlYWs7Y2FzZSJzIjp1LnY9KE49VmFbS1sxXV0pLnQsdS5yPU4ucjticmVhaztjYXNlImIiOnUudj0h''@;'; put 'put ''IUtbMV07YnJlYWs7Y2FzZSJlIjp1LnY9S1sxXSwhMSE9PWYuY2VsbFRleHQmJih1Lnc9eHRbdS52XSk7YnJlYWs7Y2FzZSJzdHIiOnUudD0icyIsdS52PUtbMV07YnJlYWs7Y2FzZSJpcyI6dS50PSJzIix1LnY9S1sxXS50fWlmKChwPXMuQ2VsbFhmW0tbMF0uaVN0eWxlUmVmXSkmJmJmKHUs''@;'; put 'put ''cC5udW1GbXRJZCxudWxsLGYsaSxzKSxUPS0xPT1LWzBdLmM/VCsxOktbMF0uYyxmLmRlbnNlPyhjW2tdfHwoY1trXT1bXSksY1trXVtUXT11KTpjW0hlKFQpK01dPXUsZi5jZWxsRm9ybXVsYSl7Zm9yKFI9ITEsUD0wO1A8Vi5sZW5ndGg7KytQKXt2YXIgTz1WW1BdO3Yucj49T1swXS5zLnIm''@;'; put 'put ''JnYucjw9T1swXS5lLnImJlQ+PU9bMF0ucy5jJiZUPD1PWzBdLmUuYyYmKHUuRj13ZShPWzBdKSxSPSEwKX0hUiYmSy5sZW5ndGg+MyYmKHUuZj1LWzNdKX1pZihsLnMucj52LnImJihsLnMucj12LnIpLGwucy5jPlQmJihsLnMuYz1UKSxsLmUucjx2LnImJihsLmUucj12LnIpLGwuZS5jPFQm''@;'; put 'put ''JihsLmUuYz1UKSxmLmNlbGxEYXRlcyYmcCYmIm4iPT11LnQmJmJ0KHBlW3AubnVtRm10SWRdKSl7dmFyIEQ9a3QodS52KTtEJiYodS50PSJkIix1LnY9bmV3IERhdGUoRC55LEQubS0xLEQuZCxELkgsRC5NLEQuUyxELnUpKX11ZSYmKCJYTERBUFIiPT11ZS50eXBlJiYodS5EPSEwKSx1ZT12''@;'; put 'put ''b2lkIDApLEZlJiYoRmU9dm9pZCAwKTticmVhaztjYXNlIDE6Y2FzZSAxMjppZighZi5zaGVldFN0dWJzfHx4KWJyZWFrO3U9e3Q6InoiLHY6dm9pZCAwfSxUPS0xPT1LWzBdLmM/VCsxOktbMF0uYyxmLmRlbnNlPyhjW2tdfHwoY1trXT1bXSksY1trXVtUXT11KTpjW0hlKFQpK01dPXUsbC5z''@;'; put 'put ''LnI+di5yJiYobC5zLnI9di5yKSxsLnMuYz5UJiYobC5zLmM9VCksbC5lLnI8di5yJiYobC5lLnI9di5yKSxsLmUuYzxUJiYobC5lLmM9VCksdWUmJigiWExEQVBSIj09dWUudHlwZSYmKHUuRD0hMCksdWU9dm9pZCAwKSxGZSYmKEZlPXZvaWQgMCk7YnJlYWs7Y2FzZSAxNzY6eS5wdXNoKEsp''@;'; put 'put ''O2JyZWFrO2Nhc2UgNDk6dWU9KChmLnhsbWV0YXx8e30pLkNlbGx8fFtdKVtLLTFdO2JyZWFrO2Nhc2UgNDk0OnZhciBqPWFbIiFpZCJdW0sucmVsSWRdO2ZvcihqPyhLLlRhcmdldD1qLlRhcmdldCxLLmxvYyYmKEsuVGFyZ2V0Kz0iIyIrSy5sb2MpLEsuUmVsPWopOiIiPT1LLnJlbElkJiYo''@;'; put 'put ''Sy5UYXJnZXQ9IiMiK0subG9jKSxrPUsucmZ4LnMucjtrPD1LLnJmeC5lLnI7KytrKWZvcihUPUsucmZ4LnMuYztUPD1LLnJmeC5lLmM7KytUKWYuZGVuc2U/KGNba118fChjW2tdPVtdKSxjW2tdW1RdfHwoY1trXVtUXT17dDoieiIsdjp2b2lkIDB9KSxjW2tdW1RdLmw9Syk6KGc9Z2Uoe2M6''@;'; put 'put ''VCxyOmt9KSxjW2ddfHwoY1tnXT17dDoieiIsdjp2b2lkIDB9KSxjW2ddLmw9Syk7YnJlYWs7Y2FzZSA0MjY6aWYoIWYuY2VsbEZvcm11bGEpYnJlYWs7Vi5wdXNoKEspLChJPWYuZGVuc2U/Y1trXVtUXTpjW0hlKFQpK01dKS5mPWtyKEtbMV0sMCx7cjp2LnIsYzpUfSxiLGYpLEkuRj13ZShL''@;'; put 'put ''WzBdKTticmVhaztjYXNlIDQyNzppZighZi5jZWxsRm9ybXVsYSlicmVhaztYW2dlKEtbMF0ucyldPUtbMV0sKEk9Zi5kZW5zZT9jW2tdW1RdOmNbSGUoVCkrTV0pLmY9a3IoS1sxXSwwLHtyOnYucixjOlR9LGIsZik7YnJlYWs7Y2FzZSA2MDppZighZi5jZWxsU3R5bGVzKWJyZWFrO2Zvcig7''@;'; put 'put ''Sy5lPj1LLnM7KWxlW0suZS0tXT17d2lkdGg6Sy53LzI1NixoaWRkZW46ISEoMSZLLmZsYWdzKSxsZXZlbDpLLmxldmVsfSxkZXx8KGRlPSEwLEFuKEsudy8yNTYpKSxLdChsZVtLLmUrMV0pO2JyZWFrO2Nhc2UgMTYxOmNbIiFhdXRvZmlsdGVyIl09e3JlZjp3ZShLKX07YnJlYWs7Y2FzZSA0''@;'; put 'put ''NzY6Y1siIW1hcmdpbnMiXT1LO2JyZWFrO2Nhc2UgMTQ3Om4uU2hlZXRzW3JdfHwobi5TaGVldHNbcl09e30pLEsubmFtZSYmKG4uU2hlZXRzW3JdLkNvZGVOYW1lPUsubmFtZSksKEsuYWJvdmV8fEsubGVmdCkmJihjWyIhb3V0bGluZSJdPXthYm92ZTpLLmFib3ZlLGxlZnQ6Sy5sZWZ0fSk7''@;'; put 'put ''YnJlYWs7Y2FzZSAxMzc6bi5WaWV3c3x8KG4uVmlld3M9W3t9XSksbi5WaWV3c1swXXx8KG4uVmlld3NbMF09e30pLEsuUlRMJiYobi5WaWV3c1swXS5SVEw9ITApO2JyZWFrO2Nhc2UgNDg1OmNhc2UgNjQ6Y2FzZSAxMDUzOmNhc2UgMTUxOmNhc2UgMTUyOmNhc2UgMTc1OmNhc2UgNjQ0OmNh''@;'; put 'put ''c2UgNjI1OmNhc2UgNTYyOmNhc2UgMzk2OmNhc2UgMTExMjpjYXNlIDExNDY6Y2FzZSA0NzE6Y2FzZSAxMDUwOmNhc2UgNjQ5OmNhc2UgMTEwNTpjYXNlIDU4OTpjYXNlIDYwNzpjYXNlIDU2NDpjYXNlIDEwNTU6Y2FzZSAxNjg6Y2FzZSAxNzQ6Y2FzZSAxMTgwOmNhc2UgNDk5OmNhc2UgNTA3''@;'; put 'put ''OmNhc2UgNTUwOmNhc2UgMTcxOmNhc2UgMTY3OmNhc2UgMTE3NzpjYXNlIDE2OTpjYXNlIDExODE6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA2NjE6Y2FzZSA2Mzk6Y2FzZSA0Nzg6Y2FzZSA1Mzc6Y2FzZSA0Nzc6Y2FzZSA1MzY6Y2FzZSAxMTAzOmNhc2UgNjgwOmNhc2UgMTEwNDpjYXNlIDEw''@;'; put 'put ''MjQ6Y2FzZSA2NjM6Y2FzZSA1MzU6Y2FzZSA2Nzg6Y2FzZSA1MDQ6Y2FzZSAxMDQzOmNhc2UgNDI4OmNhc2UgMTcwOmNhc2UgMzA3MjpjYXNlIDUwOmNhc2UgMjA3MDpjYXNlIDEwNDU6YnJlYWs7Y2FzZSAzNTp4PSEwO2JyZWFrO2Nhc2UgMzY6eD0hMTticmVhaztjYXNlIDM3OmgucHVzaChV''@;'; put 'put ''KSx4PSEwO2JyZWFrO2Nhc2UgMzg6aC5wb3AoKSx4PSExO2JyZWFrO2RlZmF1bHQ6aWYoIUMuVCYmKCF4fHxmLldURikpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrVS50b1N0cmluZygxNikpfX0sZiksZGVsZXRlIGYuc3VwYm9va3MsZGVsZXRlIGZbIiFyb3ciXSwh''@;'; put 'put ''Y1siIXJlZiJdJiYobC5zLnI8MmU2fHxvJiYoby5lLnI+MHx8by5lLmM+MHx8by5zLnI+MHx8by5zLmM+MCkpJiYoY1siIXJlZiJdPXdlKG98fGwpKSxmLnNoZWV0Um93cyYmY1siIXJlZiJdKXt2YXIgY2U9RGUoY1siIXJlZiJdKTtmLnNoZWV0Um93czw9K2NlLmUuciYmKGNlLmUucj1mLnNo''@;'; put 'put ''ZWV0Um93cy0xLGNlLmUucj5sLmUuciYmKGNlLmUucj1sLmUuciksY2UuZS5yPGNlLnMuciYmKGNlLnMucj1jZS5lLnIpLGNlLmUuYz5sLmUuYyYmKGNlLmUuYz1sLmUuYyksY2UuZS5jPGNlLnMuYyYmKGNlLnMuYz1jZS5lLmMpLGNbIiFmdWxscmVmIl09Y1siIXJlZiJdLGNbIiFyZWYiXT13''@;'; put 'put ''ZShjZSkpfXJldHVybiB5Lmxlbmd0aD4wJiYoY1siIW1lcmdlcyJdPXkpLGxlLmxlbmd0aD4wJiYoY1siIWNvbHMiXT1sZSkscmUubGVuZ3RoPjAmJihjWyIhcm93cyJdPXJlKSxjfShlLGEscixuLGkscyxmKTpmdW5jdGlvbiB2dihlLHQscixhLG4saSxzKXtpZighZSlyZXR1cm4gZTthfHwo''@;'; put 'put ''YT17IiFpZCI6e319KSxudWxsIT16ZSYmbnVsbD09dC5kZW5zZSYmKHQuZGVuc2U9emUpO3ZhciBmPXQuZGVuc2U/W106e30sYz17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxvPSIiLGw9IiIsaD1lLm1hdGNoKGZ2KTtoPyhvPWUuc2xpY2UoMCxoLmluZGV4KSxsPWUuc2xpY2UoaC5p''@;'; put 'put ''bmRleCtoWzBdLmxlbmd0aCkpOm89bD1lO3ZhciB4PW8ubWF0Y2goUGYpO3g/TG4oeFswXSwwLG4scik6KHg9by5tYXRjaCh4dikpJiZmdW5jdGlvbiBtdihlLHQscixhLG4pe0xuKGUuc2xpY2UoMCxlLmluZGV4T2YoIj4iKSksMCxhLG4pfSh4WzBdLDAsMCxuLHIpO3ZhciBkPShvLm1hdGNo''@;'; put 'put ''KC88KD86XHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O2lmKGQ+MCl7dmFyIHY9by5zbGljZShkLGQrNTApLm1hdGNoKG92KTt2JiZmdW5jdGlvbiBpdihlLHQpe3ZhciByPURlKHQpO3Iucy5yPD1yLmUuciYmci5zLmM8PXIuZS5jJiZyLnMucj49MCYmci5zLmM+PTAmJihl''@;'; put 'put ''WyIhcmVmIl09d2UocikpfShmLHZbMV0pfXZhciB1PW8ubWF0Y2goZHYpO3UmJnVbMV0mJmZ1bmN0aW9uIE92KGUsdCl7dC5WaWV3c3x8KHQuVmlld3M9W3t9XSksKGUubWF0Y2goRHYpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihyLGEpe3ZhciBuPW1lKHIpO3QuVmlld3NbYV18fCh0LlZpZXdz''@;'; put 'put ''W2FdPXt9KSwrbi56b29tU2NhbGUmJih0LlZpZXdzW2FdLnpvb209K24uem9vbVNjYWxlKSxXZShuLnJpZ2h0VG9MZWZ0KSYmKHQuVmlld3NbYV0uUlRMPSEwKX0pfSh1WzFdLG4pO3ZhciBwPVtdO2lmKHQuY2VsbFN0eWxlcyl7dmFyIGs9by5tYXRjaChsdik7ayYmZnVuY3Rpb24gRnYoZSx0''@;'; put 'put ''KXtmb3IodmFyIHI9ITEsYT0wO2EhPXQubGVuZ3RoOysrYSl7dmFyIG49bWUodFthXSwhMCk7bi5oaWRkZW4mJihuLmhpZGRlbj1XZShuLmhpZGRlbikpO3ZhciBpPXBhcnNlSW50KG4ubWluLDEwKS0xLHM9cGFyc2VJbnQobi5tYXgsMTApLTE7Zm9yKG4ub3V0bGluZUxldmVsJiYobi5sZXZl''@;'; put 'put ''bD0rbi5vdXRsaW5lTGV2ZWx8fDApLGRlbGV0ZSBuLm1pbixkZWxldGUgbi5tYXgsbi53aWR0aD0rbi53aWR0aCwhciYmbi53aWR0aCYmKHI9ITAsQW4obi53aWR0aCkpLEt0KG4pO2k8PXM7KWVbaSsrXT1NZShuKX19KHAsayl9aCYmTnYoaFsxXSxmLHQsYyxpLHMpO3ZhciBUPWwubWF0Y2go''@;'; put 'put ''dXYpO1QmJihmWyIhYXV0b2ZpbHRlciJdPWZ1bmN0aW9uIEF2KGUpe3JldHVybntyZWY6KGUubWF0Y2goL3JlZj0iKFteIl0qKSIvKXx8W10pWzFdfX0oVFswXSkpO3ZhciBnPVtdLE49bC5tYXRjaChzdik7aWYoTilmb3IoZD0wO2QhPU4ubGVuZ3RoOysrZClnW2RdPURlKE5bZF0uc2xpY2Uo''@;'; put 'put ''TltkXS5pbmRleE9mKCciJykrMSkpO3ZhciBNPWwubWF0Y2goY3YpO00mJmZ1bmN0aW9uIEV2KGUsdCxyKXtmb3IodmFyIGE9QXJyYXkuaXNBcnJheShlKSxuPTA7biE9dC5sZW5ndGg7KytuKXt2YXIgaT1tZShCZSh0W25dKSwhMCk7aWYoIWkucmVmKXJldHVybjt2YXIgcz0oKHJ8fHt9KVsi''@;'; put 'put ''IWlkIl18fFtdKVtpLmlkXTtzPyhpLlRhcmdldD1zLlRhcmdldCxpLmxvY2F0aW9uJiYoaS5UYXJnZXQrPSIjIitJZShpLmxvY2F0aW9uKSkpOihpLlRhcmdldD0iIyIrSWUoaS5sb2NhdGlvbikscz17VGFyZ2V0OmkuVGFyZ2V0LFRhcmdldE1vZGU6IkludGVybmFsIn0pLGkuUmVsPXMsaS50''@;'; put 'put ''b29sdGlwJiYoaS5Ub29sdGlwPWkudG9vbHRpcCxkZWxldGUgaS50b29sdGlwKTtmb3IodmFyIGY9RGUoaS5yZWYpLGM9Zi5zLnI7Yzw9Zi5lLnI7KytjKWZvcih2YXIgbz1mLnMuYztvPD1mLmUuYzsrK28pe3ZhciBsPWdlKHtjOm8scjpjfSk7YT8oZVtjXXx8KGVbY109W10pLGVbY11bb118''@;'; put 'put ''fChlW2NdW29dPXt0OiJ6Iix2OnZvaWQgMH0pLGVbY11bb10ubD1pKTooZVtsXXx8KGVbbF09e3Q6InoiLHY6dm9pZCAwfSksZVtsXS5sPWkpfX19KGYsTSxhKTt2YXIgST1sLm1hdGNoKGh2KTtpZihJJiYoZlsiIW1hcmdpbnMiXT1mdW5jdGlvbiBUdihlKXt2YXIgdD17fTtyZXR1cm5bImxl''@;'; put 'put ''ZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImhlYWRlciIsImZvb3RlciJdLmZvckVhY2goZnVuY3Rpb24ocil7ZVtyXSYmKHRbcl09cGFyc2VGbG9hdChlW3JdKSl9KSx0fShtZShJWzBdKSkpLCFmWyIhcmVmIl0mJmMuZS5jPj1jLnMuYyYmYy5lLnI+PWMucy5yJiYoZlsiIXJlZiJdPXdl''@;'; put 'put ''KGMpKSx0LnNoZWV0Um93cz4wJiZmWyIhcmVmIl0pe3ZhciB5PURlKGZbIiFyZWYiXSk7dC5zaGVldFJvd3M8PSt5LmUuciYmKHkuZS5yPXQuc2hlZXRSb3dzLTEseS5lLnI+Yy5lLnImJih5LmUucj1jLmUucikseS5lLnI8eS5zLnImJih5LnMucj15LmUucikseS5lLmM+Yy5lLmMmJih5LmUu''@;'; put 'put ''Yz1jLmUuYykseS5lLmM8eS5zLmMmJih5LnMuYz15LmUuYyksZlsiIWZ1bGxyZWYiXT1mWyIhcmVmIl0sZlsiIXJlZiJdPXdlKHkpKX1yZXR1cm4gcC5sZW5ndGg+MCYmKGZbIiFjb2xzIl09cCksZy5sZW5ndGg+MCYmKGZbIiFtZXJnZXMiXT1nKSxmfShlLGEscixuLGkscyxmKX12YXIgR2Es''@;'; put 'put ''emY9LyhbXHc6XSspPSgoPzoiKShbXiJdKikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZywkZj0vKFtcdzpdKyk9KCg/OiIpKD86W14iXSopKD86Iil8KD86JykoPzpbXiddKikoPzonKSkvO2Z1bmN0aW9uIFpyKGUsdCl7dmFyIHI9ZS5zcGxpdCgvXHMrLyksYT1bXTtpZih0fHwoYVswXT1y''@;'; put 'put ''WzBdKSwxPT09ci5sZW5ndGgpcmV0dXJuIGE7dmFyIGkscyxjLG49ZS5tYXRjaCh6Zik7aWYobilmb3IoYz0wO2MhPW4ubGVuZ3RoOysrYyktMT09PShzPShpPW5bY10ubWF0Y2goJGYpKVsxXS5pbmRleE9mKCI6IikpP2FbaVsxXV09aVsyXS5zbGljZSgxLGlbMl0ubGVuZ3RoLTEpOmFbInht''@;'; put 'put ''bG5zOiI9PT1pWzFdLnNsaWNlKDAsNik/InhtbG5zIitpWzFdLnNsaWNlKDYpOmlbMV0uc2xpY2UocysxKV09aVsyXS5zbGljZSgxLGlbMl0ubGVuZ3RoLTEpO3JldHVybiBhfWZ1bmN0aW9uIEhwKGUpe3ZhciByPXt9O2lmKDE9PT1lLnNwbGl0KC9ccysvKS5sZW5ndGgpcmV0dXJuIHI7dmFy''@;'; put 'put ''IG4saSxmLGE9ZS5tYXRjaCh6Zik7aWYoYSlmb3IoZj0wO2YhPWEubGVuZ3RoOysrZiktMT09PShpPShuPWFbZl0ubWF0Y2goJGYpKVsxXS5pbmRleE9mKCI6IikpP3JbblsxXV09blsyXS5zbGljZSgxLG5bMl0ubGVuZ3RoLTEpOnJbInhtbG5zOiI9PT1uWzFdLnNsaWNlKDAsNik/InhtbG5z''@;'; put 'put ''IituWzFdLnNsaWNlKDYpOm5bMV0uc2xpY2UoaSsxKV09blsyXS5zbGljZSgxLG5bMl0ubGVuZ3RoLTEpO3JldHVybiByfWZ1bmN0aW9uIFhwKGUsdCxyLGEpe3ZhciBuPWE7c3dpdGNoKChyWzBdLm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4i''@;'; put 'put ''Om49V2UoYSk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOm49cGFyc2VJbnQoYSwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6bj1wYXJzZUZsb2F0KGEpO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRlVGltZS50eiI6bj1YZShhKTticmVhaztjYXNlImk4IjpjYXNlInN0cmluZyI6''@;'; put 'put ''Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IityWzBdKX1lW0llKHQpXT1ufWZ1bmN0aW9uIHpwKGUsdCxyKXtpZihyLmNlbGxTdHlsZXMmJnQuSW50ZXJpb3Ipe3ZhciBhPXQuSW50ZXJp''@;'; put 'put ''b3I7YS5QYXR0ZXJuJiYoYS5wYXR0ZXJuVHlwZT1uMVthLlBhdHRlcm5dfHxhLlBhdHRlcm4pfWVbdC5JRF09dH1mdW5jdGlvbiAkcChlLHQscixhLG4saSxzLGYsYyxvKXt2YXIgbD0iR2VuZXJhbCIsaD1hLlN0eWxlSUQseD17fTtvPW98fHt9O3ZhciBkPVtdLHY9MDtmb3Iodm9pZCAwPT09''@;'; put 'put ''aCYmZiYmKGg9Zi5TdHlsZUlEKSx2b2lkIDA9PT1oJiZzJiYoaD1zLlN0eWxlSUQpO3ZvaWQgMCE9PWlbaF0mJihpW2hdLm5mJiYobD1pW2hdLm5mKSxpW2hdLkludGVyaW9yJiZkLnB1c2goaVtoXS5JbnRlcmlvciksaVtoXS5QYXJlbnQpOyloPWlbaF0uUGFyZW50O3N3aXRjaChyLlR5cGUp''@;'; put 'put ''e2Nhc2UiQm9vbGVhbiI6YS50PSJiIixhLnY9V2UoZSk7YnJlYWs7Y2FzZSJTdHJpbmciOmEudD0icyIsYS5yPUJpKEllKGUpKSxhLnY9ZS5pbmRleE9mKCI8Iik+LTE/SWUodHx8ZSkucmVwbGFjZSgvPC4qPz4vZywiIik6YS5yO2JyZWFrO2Nhc2UiRGF0ZVRpbWUiOiJaIiE9ZS5zbGljZSgt''@;'; put 'put ''MSkmJihlKz0iWiIpLGEudj0oWGUoZSktbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMCkpKS84NjRlNSxhLnYhPWEudj9hLnY9SWUoZSk6YS52PDYwJiYoYS52PWEudi0xKSwoIWx8fCJHZW5lcmFsIj09bCkmJihsPSJ5eXl5LW1tLWRkIik7Y2FzZSJOdW1iZXIiOnZvaWQgMD09PWEudiYm''@;'; put 'put ''KGEudj0rZSksYS50fHwoYS50PSJuIik7YnJlYWs7Y2FzZSJFcnJvciI6YS50PSJlIixhLnY9ZHNbZV0sITEhPT1vLmNlbGxUZXh0JiYoYS53PWUpO2JyZWFrO2RlZmF1bHQ6IiI9PWUmJiIiPT10P2EudD0ieiI6KGEudD0icyIsYS52PUJpKHR8fGUpKX1pZihmdW5jdGlvbiBHcChlLHQscil7''@;'; put 'put ''aWYoInoiIT09ZS50KXtpZighcnx8ITEhPT1yLmNlbGxUZXh0KXRyeXtlLnc9ImUiPT09ZS50P2Uud3x8eHRbZS52XToiR2VuZXJhbCI9PT10PyJuIj09PWUudD8oMHxlLnYpPT09ZS52P2Uudi50b1N0cmluZygxMCk6a2EoZS52KTpOdChlLnYpOmZ1bmN0aW9uIFZwKGUsdCl7dmFyIHI9R2Fb''@;'; put 'put ''ZV18fEllKGUpO3JldHVybiJHZW5lcmFsIj09PXI/TnQodCk6UnIocix0KX0odHx8IkdlbmVyYWwiLGUudil9Y2F0Y2goaSl7aWYoci5XVEYpdGhyb3cgaX10cnl7dmFyIGE9R2FbdF18fHR8fCJHZW5lcmFsIjtpZihyLmNlbGxORiYmKGUuej1hKSxyLmNlbGxEYXRlcyYmIm4iPT1lLnQmJmJ0''@;'; put 'put ''KGEpKXt2YXIgbj1rdChlLnYpO24mJihlLnQ9ImQiLGUudj1uZXcgRGF0ZShuLnksbi5tLTEsbi5kLG4uSCxuLk0sbi5TLG4udSkpfX1jYXRjaChpKXtpZihyLldURil0aHJvdyBpfX19KGEsbCxvKSwhMSE9PW8uY2VsbEZvcm11bGEpaWYoYS5Gb3JtdWxhKXt2YXIgdT1JZShhLkZvcm11bGEp''@;'; put 'put ''OzYxPT11LmNoYXJDb2RlQXQoMCkmJih1PXUuc2xpY2UoMSkpLGEuZj11YSh1LG4pLGRlbGV0ZSBhLkZvcm11bGEsIlJDIj09YS5BcnJheVJhbmdlP2EuRj11YSgiUkM6UkMiLG4pOmEuQXJyYXlSYW5nZSYmKGEuRj11YShhLkFycmF5UmFuZ2UsbiksYy5wdXNoKFtEZShhLkYpLGEuRl0pKX1l''@;'; put 'put ''bHNlIGZvcih2PTA7djxjLmxlbmd0aDsrK3Ypbi5yPj1jW3ZdWzBdLnMuciYmbi5yPD1jW3ZdWzBdLmUuciYmbi5jPj1jW3ZdWzBdLnMuYyYmbi5jPD1jW3ZdWzBdLmUuYyYmKGEuRj1jW3ZdWzFdKTtvLmNlbGxTdHlsZXMmJihkLmZvckVhY2goZnVuY3Rpb24ocCl7IXgucGF0dGVyblR5cGUm''@;'; put 'put ''JnAucGF0dGVyblR5cGUmJih4LnBhdHRlcm5UeXBlPXAucGF0dGVyblR5cGUpfSksYS5zPXgpLHZvaWQgMCE9PWEuU3R5bGVJRCYmKGEuaXhmZT1hLlN0eWxlSUQpfWZ1bmN0aW9uIGpwKGUpe2UudD1lLnZ8fCIiLGUudD1lLnQucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2cs''@;'; put 'put ''IlxuIiksZS52PWUudz1lLml4ZmU9dm9pZCAwfWZ1bmN0aW9uIE1uKGUsdCl7dmFyIHI9dHx8e307dGEoKTt2YXIgYT1RdChZMChlKSk7KCJiaW5hcnkiPT1yLnR5cGV8fCJhcnJheSI9PXIudHlwZXx8ImJhc2U2NCI9PXIudHlwZSkmJihhPXR5cGVvZiBPZTwidSI/T2UudXRpbHMuZGVjb2Rl''@;'; put 'put ''KDY1MDAxLHQwKGEpKTpCZShhKSk7dmFyIG49YS5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksaT0hMTtpZigoMTAyMyYobj1uLnJlcGxhY2UoLyIuKj8iL2csIiIpKS5pbmRleE9mKCI+IikpPk1hdGgubWluKDEwMjMmbi5pbmRleE9mKCIsIiksMTAyMyZuLmluZGV4T2YoIjsiKSkpe3Zh''@;'; put 'put ''ciBzPU1lKHIpO3JldHVybiBzLnR5cGU9InN0cmluZyIsY2EudG9fd29ya2Jvb2soYSxzKX1pZigtMT09bi5pbmRleE9mKCI8P3htbCIpJiZbImh0bWwiLCJ0YWJsZSIsImhlYWQiLCJtZXRhIiwic2NyaXB0Iiwic3R5bGUiLCJkaXYiXS5mb3JFYWNoKGZ1bmN0aW9uKHFlKXtuLmluZGV4T2Yo''@;'; put 'put ''IjwiK3FlKT49MCYmKGk9ITApfSksaSlyZXR1cm4gZnVuY3Rpb24gRG0oZSx0KXt2YXIgcj1lLm1hdGNoKC88dGFibGVbXHNcU10qPz5bXHNcU10qPzxcL3RhYmxlPi9naSk7aWYoIXJ8fDA9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8''@;'; put 'put ''dGFibGU+Iik7aWYoMT09ci5sZW5ndGgpcmV0dXJuIEZ0KEpmKHJbMF0sdCksdCk7dmFyIGE9e1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKG4saSl7ZWkoYSxKZihuLHQpLCJTaGVldCIrKGkrMSkpfSksYX0oYSxyKTtHYT17IkdlbmVyYWwgTnVt''@;'; put 'put ''YmVyIjoiR2VuZXJhbCIsIkdlbmVyYWwgRGF0ZSI6cGVbMjJdLCJMb25nIERhdGUiOiJkZGRkLCBtbW1tIGRkLCB5eXl5IiwiTWVkaXVtIERhdGUiOnBlWzE1XSwiU2hvcnQgRGF0ZSI6cGVbMTRdLCJMb25nIFRpbWUiOnBlWzE5XSwiTWVkaXVtIFRpbWUiOnBlWzE4XSwiU2hvcnQgVGltZSI6''@;'; put 'put ''cGVbMjBdLEN1cnJlbmN5OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLEZpeGVkOnBlWzJdLFN0YW5kYXJkOnBlWzRdLFBlcmNlbnQ6cGVbMTBdLFNjaWVudGlmaWM6cGVbMTFdLCJZZXMvTm8iOiciWWVzIjsiWWVzIjsiTm8iO0AnLCJUcnVlL0ZhbHNlIjonIlRydWUi''@;'; put 'put ''OyJUcnVlIjsiRmFsc2UiO0AnLCJPbi9PZmYiOiciWWVzIjsiWWVzIjsiTm8iO0AnfTt2YXIgZixvLGM9W107bnVsbCE9emUmJm51bGw9PXIuZGVuc2UmJihyLmRlbnNlPXplKTt2YXIgdWUsbD17fSxoPVtdLHg9ci5kZW5zZT9bXTp7fSxkPSIiLHY9e30sdT17fSxwPVpyKCc8RGF0YSBzczpU''@;'; put 'put ''eXBlPSJTdHJpbmciPicpLGs9MCxUPTAsZz0wLE49e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sTT17fSxJPXt9LHk9IiIsUD0wLFI9W10sVj17fSxYPXt9LGI9MCxlZT1bXSxsZT1bXSxyZT17fSxkZT1bXSxGZT0hMSxjZT1bXSx4ZT1bXSxLPXt9LEM9MCxVPTAsTz17U2hlZXRzOltd''@;'; put 'put ''LFdCUHJvcHM6e2RhdGUxOTA0OiExfX0sRD17fTt5YS5sYXN0SW5kZXg9MCxhPWEucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpO2Zvcih2YXIgaj0iIjtmPXlhLmV4ZWMoYSk7KXN3aXRjaChmWzNdPShqPWZbM10pLnRvTG93ZXJDYXNlKCkpe2Nhc2UiZGF0YSI6aWYoImRhdGEi''@;'; put 'put ''PT1qKXtpZigiLyI9PT1mWzFdKXtpZigobz1jLnBvcCgpKVswXSE9PWZbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrby5qb2luKCJ8IikpfWVsc2UiLyIhPT1mWzBdLmNoYXJBdChmWzBdLmxlbmd0aC0yKSYmYy5wdXNoKFtmWzNdLCEwXSk7YnJlYWt9aWYoY1tjLmxlbmd0aC0x''@;'; put 'put ''XVsxXSlicmVhazsiLyI9PT1mWzFdPyRwKGEuc2xpY2UoayxmLmluZGV4KSx5LHAsImNvbW1lbnQiPT1jW2MubGVuZ3RoLTFdWzBdP3JlOnYse2M6VCxyOmd9LE0sZGVbVF0sdSxjZSxyKTooeT0iIixwPVpyKGZbMF0pLGs9Zi5pbmRleCtmWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjpp''@;'; put 'put ''ZigiLyI9PT1mWzFdKWlmKGxlLmxlbmd0aD4wJiYodi5jPWxlKSwoIXIuc2hlZXRSb3dzfHxyLnNoZWV0Um93cz5nKSYmdm9pZCAwIT09di52JiYoci5kZW5zZT8oeFtnXXx8KHhbZ109W10pLHhbZ11bVF09dik6eFtIZShUKStLZShnKV09diksdi5IUmVmJiYodi5sPXtUYXJnZXQ6SWUodi5I''@;'; put 'put ''UmVmKX0sdi5IUmVmU2NyZWVuVGlwJiYodi5sLlRvb2x0aXA9di5IUmVmU2NyZWVuVGlwKSxkZWxldGUgdi5IUmVmLGRlbGV0ZSB2LkhSZWZTY3JlZW5UaXApLCh2Lk1lcmdlQWNyb3NzfHx2Lk1lcmdlRG93bikmJihDPVQrKDB8cGFyc2VJbnQodi5NZXJnZUFjcm9zcywxMCkpLFU9ZysoMHxw''@;'; put 'put ''YXJzZUludCh2Lk1lcmdlRG93biwxMCkpLFIucHVzaCh7czp7YzpULHI6Z30sZTp7YzpDLHI6VX19KSksci5zaGVldFN0dWJzKWlmKHYuTWVyZ2VBY3Jvc3N8fHYuTWVyZ2VEb3duKXtmb3IodmFyIHNlPVQ7c2U8PUM7KytzZSlmb3IodmFyIFo9ZztaPD1VOysrWikoc2U+VHx8Wj5nKSYmKHIu''@;'; put 'put ''ZGVuc2U/KHhbWl18fCh4W1pdPVtdKSx4W1pdW3NlXT17dDoieiJ9KTp4W0hlKHNlKStLZShaKV09e3Q6InoifSk7VD1DKzF9ZWxzZSsrVDtlbHNlIHYuTWVyZ2VBY3Jvc3M/VD1DKzE6KytUO2Vsc2Uodj1IcChmWzBdKSkuSW5kZXgmJihUPSt2LkluZGV4LTEpLFQ8Ti5zLmMmJihOLnMuYz1U''@;'; put 'put ''KSxUPk4uZS5jJiYoTi5lLmM9VCksIi8+Ij09PWZbMF0uc2xpY2UoLTIpJiYrK1QsbGU9W107YnJlYWs7Y2FzZSJyb3ciOiIvIj09PWZbMV18fCIvPiI9PT1mWzBdLnNsaWNlKC0yKT8oZzxOLnMuciYmKE4ucy5yPWcpLGc+Ti5lLnImJihOLmUucj1nKSwiLz4iPT09ZlswXS5zbGljZSgtMikm''@;'; put 'put ''Jih1PVpyKGZbMF0pKS5JbmRleCYmKGc9K3UuSW5kZXgtMSksVD0wLCsrZyk6KCh1PVpyKGZbMF0pKS5JbmRleCYmKGc9K3UuSW5kZXgtMSksSz17fSwoIjAiPT11LkF1dG9GaXRIZWlnaHR8fHUuSGVpZ2h0KSYmKEsuaHB4PXBhcnNlSW50KHUuSGVpZ2h0LDEwKSxLLmhwdD1CYShLLmhweCks''@;'; put 'put ''eGVbZ109SyksIjEiPT11LkhpZGRlbiYmKEsuaGlkZGVuPSEwLHhlW2ddPUspKTticmVhaztjYXNlIndvcmtzaGVldCI6aWYoIi8iPT09ZlsxXSl7aWYoKG89Yy5wb3AoKSlbMF0hPT1mWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKTtoLnB1c2goZCksTi5z''@;'; put 'put ''LnI8PU4uZS5yJiZOLnMuYzw9Ti5lLmMmJih4WyIhcmVmIl09d2UoTiksci5zaGVldFJvd3MmJnIuc2hlZXRSb3dzPD1OLmUuciYmKHhbIiFmdWxscmVmIl09eFsiIXJlZiJdLE4uZS5yPXIuc2hlZXRSb3dzLTEseFsiIXJlZiJdPXdlKE4pKSksUi5sZW5ndGgmJih4WyIhbWVyZ2VzIl09Uiks''@;'; put 'put ''ZGUubGVuZ3RoPjAmJih4WyIhY29scyJdPWRlKSx4ZS5sZW5ndGg+MCYmKHhbIiFyb3dzIl09eGUpLGxbZF09eH1lbHNlIE49e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sZz1UPTAsYy5wdXNoKFtmWzNdLCExXSksbz1acihmWzBdKSxkPUllKG8uTmFtZSkseD1yLmRlbnNlP1tdOnt9''@;'; put 'put ''LFI9W10sY2U9W10seGU9W10sTy5TaGVldHMucHVzaChEPXtuYW1lOmQsSGlkZGVuOjB9KTticmVhaztjYXNlInRhYmxlIjppZigiLyI9PT1mWzFdKXtpZigobz1jLnBvcCgpKVswXSE9PWZbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrby5qb2luKCJ8IikpfWVsc2V7aWYoIi8+''@;'; put 'put ''Ij09ZlswXS5zbGljZSgtMikpYnJlYWs7Yy5wdXNoKFtmWzNdLCExXSksZGU9W10sRmU9ITF9YnJlYWs7Y2FzZSJzdHlsZSI6Ii8iPT09ZlsxXT96cChNLEkscik6ST1acihmWzBdKTticmVhaztjYXNlIm51bWJlcmZvcm1hdCI6SS5uZj1JZShacihmWzBdKS5Gb3JtYXR8fCJHZW5lcmFsIiks''@;'; put 'put ''R2FbSS5uZl0mJihJLm5mPUdhW0kubmZdKTtmb3IodmFyIFE9MDszOTIhPVEmJnBlW1FdIT1JLm5mOysrUSk7aWYoMzkyPT1RKWZvcihRPTU3OzM5MiE9UTsrK1EpaWYobnVsbD09cGVbUV0pe2V0KEkubmYsUSk7YnJlYWt9YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKCJ0YWJsZSIhPT1jW2MubGVu''@;'; put 'put ''Z3RoLTFdWzBdKWJyZWFrO2lmKCh1ZT1acihmWzBdKSkuSGlkZGVuJiYodWUuaGlkZGVuPSEwLGRlbGV0ZSB1ZS5IaWRkZW4pLHVlLldpZHRoJiYodWUud3B4PXBhcnNlSW50KHVlLldpZHRoLDEwKSksIUZlJiZ1ZS53cHg+MTApe0ZlPSEwLHdyPWxmO2Zvcih2YXIgWT0wO1k8ZGUubGVuZ3Ro''@;'; put 'put ''OysrWSlkZVtZXSYmS3QoZGVbWV0pfUZlJiZLdCh1ZSksZGVbdWUuSW5kZXgtMXx8ZGUubGVuZ3RoXT11ZTtmb3IodmFyIEVlPTA7RWU8K3VlLlNwYW47KytFZSlkZVtkZS5sZW5ndGhdPU1lKHVlKTticmVhaztjYXNlIm5hbWVkcmFuZ2UiOmlmKCIvIj09PWZbMV0pYnJlYWs7Ty5OYW1lc3x8''@;'; put 'put ''KE8uTmFtZXM9W10pO3ZhciBBPW1lKGZbMF0pLFBlPXtOYW1lOkEuTmFtZSxSZWY6dWEoQS5SZWZlcnNUby5zbGljZSgxKSx7cjowLGM6MH0pfTtPLlNoZWV0cy5sZW5ndGg+MCYmKFBlLlNoZWV0PU8uU2hlZXRzLmxlbmd0aC0xKSxPLk5hbWVzLnB1c2goUGUpO2JyZWFrO2Nhc2UibmFtZWRj''@;'; put 'put ''ZWxsIjpjYXNlImIiOmNhc2UiaSI6Y2FzZSJ1IjpjYXNlInMiOmNhc2UiZW0iOmNhc2UiaDIiOmNhc2UiaDMiOmNhc2Uic3ViIjpjYXNlInN1cCI6Y2FzZSJzcGFuIjpjYXNlImFsaWdubWVudCI6Y2FzZSJib3JkZXJzIjpjYXNlImJvcmRlciI6Y2FzZSJwcm90ZWN0aW9uIjpjYXNlInBhcmFn''@;'; put 'put ''cmFwaHMiOmNhc2UibmFtZSI6Y2FzZSJwaXhlbHNwZXJpbmNoIjpjYXNlIm51bGwiOmJyZWFrO2Nhc2UiZm9udCI6aWYoIi8+Ij09PWZbMF0uc2xpY2UoLTIpKWJyZWFrOyIvIj09PWZbMV0/eSs9YS5zbGljZShQLGYuaW5kZXgpOlA9Zi5pbmRleCtmWzBdLmxlbmd0aDticmVhaztjYXNlImlu''@;'; put 'put ''dGVyaW9yIjppZighci5jZWxsU3R5bGVzKWJyZWFrO0kuSW50ZXJpb3I9WnIoZlswXSk7YnJlYWs7Y2FzZSJhdXRob3IiOmNhc2UidGl0bGUiOmNhc2UiZGVzY3JpcHRpb24iOmNhc2UiY3JlYXRlZCI6Y2FzZSJrZXl3b3JkcyI6Y2FzZSJzdWJqZWN0IjpjYXNlImNhdGVnb3J5IjpjYXNlImNv''@;'; put 'put ''bXBhbnkiOmNhc2UibGFzdGF1dGhvciI6Y2FzZSJsYXN0c2F2ZWQiOmNhc2UibGFzdHByaW50ZWQiOmNhc2UidmVyc2lvbiI6Y2FzZSJyZXZpc2lvbiI6Y2FzZSJ0b3RhbHRpbWUiOmNhc2UiaHlwZXJsaW5rYmFzZSI6Y2FzZSJtYW5hZ2VyIjpjYXNlImNvbnRlbnRzdGF0dXMiOmNhc2UiaWRl''@;'; put 'put ''bnRpZmllciI6Y2FzZSJsYW5ndWFnZSI6Y2FzZSJhcHBuYW1lIjppZigiLz4iPT09ZlswXS5zbGljZSgtMikpYnJlYWs7Ii8iPT09ZlsxXT9nbChWLGosYS5zbGljZShiLGYuaW5kZXgpKTpiPWYuaW5kZXgrZlswXS5sZW5ndGg7YnJlYWs7Y2FzZSJzdHlsZXMiOmNhc2Uid29ya2Jvb2siOmlm''@;'; put 'put ''KCIvIj09PWZbMV0pe2lmKChvPWMucG9wKCkpWzBdIT09ZlszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBjLnB1c2goW2ZbM10sITFdKTticmVhaztjYXNlImNvbW1lbnQiOmlmKCIvIj09PWZbMV0pe2lmKChvPWMucG9wKCkpWzBdIT09ZlszXSl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSk7anAocmUpLGxlLnB1c2gocmUpfWVsc2UgYy5wdXNoKFtmWzNdLCExXSkscmU9e2E6KG89WnIoZlswXSkpLkF1dGhvcn07YnJlYWs7Y2FzZSJhdXRvZmlsdGVyIjppZigiLyI9PT1mWzFdKXtpZigobz1jLnBvcCgpKVsw''@;'; put 'put ''XSE9PWZbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrby5qb2luKCJ8IikpfWVsc2UgaWYoIi8iIT09ZlswXS5jaGFyQXQoZlswXS5sZW5ndGgtMikpe3ZhciBBZT1acihmWzBdKTt4WyIhYXV0b2ZpbHRlciJdPXtyZWY6dWEoQWUuUmFuZ2UpLnJlcGxhY2UoL1wkL2csIiIpfSxj''@;'; put 'put ''LnB1c2goW2ZbM10sITBdKX1icmVhaztjYXNlImRhdGF2YWxpZGF0aW9uIjppZigiLyI9PT1mWzFdKXtpZigobz1jLnBvcCgpKVswXSE9PWZbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrby5qb2luKCJ8IikpfWVsc2UiLyIhPT1mWzBdLmNoYXJBdChmWzBdLmxlbmd0aC0yKSYm''@;'; put 'put ''Yy5wdXNoKFtmWzNdLCEwXSk7YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25zIjpjYXNlImRvY3VtZW50cHJvcGVydGllcyI6Y2FzZSJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiOmNhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6Y2FzZSJwaXZvdHRhYmxlIjpjYXNlInBpdm90Y2FjaGUi''@;'; put 'put ''OmNhc2UibmFtZXMiOmNhc2UibWFwaW5mbyI6Y2FzZSJwYWdlYnJlYWtzIjpjYXNlInF1ZXJ5dGFibGUiOmNhc2Uic29ydGluZyI6Y2FzZSJzY2hlbWEiOmNhc2UiY29uZGl0aW9uYWxmb3JtYXR0aW5nIjpjYXNlInNtYXJ0dGFndHlwZSI6Y2FzZSJzbWFydHRhZ3MiOmNhc2UiZXhjZWx3b3Jr''@;'; put 'put ''Ym9vayI6Y2FzZSJ3b3JrYm9va29wdGlvbnMiOmNhc2Uid29ya3NoZWV0b3B0aW9ucyI6aWYoIi8iPT09ZlsxXSl7aWYoKG89Yy5wb3AoKSlbMF0hPT1mWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIi8iIT09ZlswXS5jaGFyQXQoZlswXS5sZW5n''@;'; put 'put ''dGgtMikmJmMucHVzaChbZlszXSwhMF0pO2JyZWFrO2RlZmF1bHQ6aWYoMD09Yy5sZW5ndGgmJiJkb2N1bWVudCI9PWZbM118fDA9PWMubGVuZ3RoJiYidW9mIj09ZlszXSlyZXR1cm4gY2MoYSxyKTt2YXIgTGU9ITA7c3dpdGNoKGNbYy5sZW5ndGgtMV1bMF0pe2Nhc2Uib2ZmaWNlZG9jdW1l''@;'; put 'put ''bnRzZXR0aW5ncyI6c3dpdGNoKGZbM10pe2Nhc2UiYWxsb3dwbmciOmNhc2UicmVtb3ZlcGVyc29uYWxpbmZvcm1hdGlvbiI6Y2FzZSJkb3dubG9hZGNvbXBvbmVudHMiOmNhc2UibG9jYXRpb25vZmNvbXBvbmVudHMiOmNhc2UiY29sb3JzIjpjYXNlImNvbG9yIjpjYXNlImluZGV4IjpjYXNl''@;'; put 'put ''InJnYiI6Y2FzZSJ0YXJnZXRzY3JlZW5zaXplIjpjYXNlInJlYWRvbmx5cmVjb21tZW5kZWQiOmJyZWFrO2RlZmF1bHQ6TGU9ITF9YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25zIjpzd2l0Y2goZlszXSl7Y2FzZSJ0b29sYmFyIjpjYXNlImhpZGVvZmZpY2Vsb2dvIjpjYXNlInNwcmVhZHNo''@;'; put 'put ''ZWV0YXV0b2ZpdCI6Y2FzZSJsYWJlbCI6Y2FzZSJjYXB0aW9uIjpjYXNlIm1heGhlaWdodCI6Y2FzZSJtYXh3aWR0aCI6Y2FzZSJuZXh0c2hlZXRudW1iZXIiOmJyZWFrO2RlZmF1bHQ6TGU9ITF9YnJlYWs7Y2FzZSJleGNlbHdvcmtib29rIjpzd2l0Y2goZlszXSl7Y2FzZSJkYXRlMTkwNCI6''@;'; put 'put ''Ty5XQlByb3BzLmRhdGUxOTA0PSEwO2JyZWFrO2Nhc2Uid2luZG93aGVpZ2h0IjpjYXNlIndpbmRvd3dpZHRoIjpjYXNlIndpbmRvd3RvcHgiOmNhc2Uid2luZG93dG9weSI6Y2FzZSJ0YWJyYXRpbyI6Y2FzZSJwcm90ZWN0c3RydWN0dXJlIjpjYXNlInByb3RlY3R3aW5kb3ciOmNhc2UicHJv''@;'; put 'put ''dGVjdHdpbmRvd3MiOmNhc2UiYWN0aXZlc2hlZXQiOmNhc2UiZGlzcGxheWlua25vdGVzIjpjYXNlImZpcnN0dmlzaWJsZXNoZWV0IjpjYXNlInN1cGJvb2siOmNhc2Uic2hlZXRuYW1lIjpjYXNlInNoZWV0aW5kZXgiOmNhc2Uic2hlZXRpbmRleGZpcnN0IjpjYXNlInNoZWV0aW5kZXhsYXN0''@;'; put 'put ''IjpjYXNlImRsbCI6Y2FzZSJhY2NlcHRsYWJlbHNpbmZvcm11bGFzIjpjYXNlImRvbm90c2F2ZWxpbmt2YWx1ZXMiOmNhc2UiaXRlcmF0aW9uIjpjYXNlIm1heGl0ZXJhdGlvbnMiOmNhc2UibWF4Y2hhbmdlIjpjYXNlInBhdGgiOmNhc2UieGN0IjpjYXNlImNvdW50IjpjYXNlInNlbGVjdGVk''@;'; put 'put ''c2hlZXRzIjpjYXNlImNhbGN1bGF0aW9uIjpjYXNlInVuY2FsY2VkIjpjYXNlInN0YXJ0dXBwcm9tcHQiOmNhc2UiY3JuIjpjYXNlImV4dGVybm5hbWUiOmNhc2UiZm9ybXVsYSI6Y2FzZSJjb2xmaXJzdCI6Y2FzZSJjb2xsYXN0IjpjYXNlIndhbnRhZHZpc2UiOmNhc2UiYm9vbGVhbiI6Y2Fz''@;'; put 'put ''ZSJlcnJvciI6Y2FzZSJ0ZXh0IjpjYXNlIm9sZSI6Y2FzZSJub2F1dG9yZWNvdmVyIjpjYXNlInB1Ymxpc2hvYmplY3RzIjpjYXNlImRvbm90Y2FsY3VsYXRlYmVmb3Jlc2F2ZSI6Y2FzZSJudW1iZXIiOmNhc2UicmVmbW9kZXIxYzEiOmNhc2UiZW1iZWRzYXZlc21hcnR0YWdzIjpicmVhaztk''@;'; put 'put ''ZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2Uid29ya2Jvb2tvcHRpb25zIjpzd2l0Y2goZlszXSl7Y2FzZSJvd2N2ZXJzaW9uIjpjYXNlImhlaWdodCI6Y2FzZSJ3aWR0aCI6YnJlYWs7ZGVmYXVsdDpMZT0hMX1icmVhaztjYXNlIndvcmtzaGVldG9wdGlvbnMiOnN3aXRjaChmWzNdKXtjYXNlInZp''@;'; put 'put ''c2libGUiOmlmKCIvPiIhPT1mWzBdLnNsaWNlKC0yKSlpZigiLyI9PT1mWzFdKXN3aXRjaChhLnNsaWNlKGIsZi5pbmRleCkpe2Nhc2UiU2hlZXRIaWRkZW4iOkQuSGlkZGVuPTE7YnJlYWs7Y2FzZSJTaGVldFZlcnlIaWRkZW4iOkQuSGlkZGVuPTJ9ZWxzZSBiPWYuaW5kZXgrZlswXS5sZW5n''@;'; put 'put ''dGg7YnJlYWs7Y2FzZSJoZWFkZXIiOnhbIiFtYXJnaW5zIl18fFl0KHhbIiFtYXJnaW5zIl09e30sInhsbWwiKSxpc05hTigrbWUoZlswXSkuTWFyZ2luKXx8KHhbIiFtYXJnaW5zIl0uaGVhZGVyPSttZShmWzBdKS5NYXJnaW4pO2JyZWFrO2Nhc2UiZm9vdGVyIjp4WyIhbWFyZ2lucyJdfHxZ''@;'; put 'put ''dCh4WyIhbWFyZ2lucyJdPXt9LCJ4bG1sIiksaXNOYU4oK21lKGZbMF0pLk1hcmdpbil8fCh4WyIhbWFyZ2lucyJdLmZvb3Rlcj0rbWUoZlswXSkuTWFyZ2luKTticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgQ2U9bWUoZlswXSk7eFsiIW1hcmdpbnMiXXx8WXQoeFsiIW1hcmdpbnMiXT17''@;'; put 'put ''fSwieGxtbCIpLGlzTmFOKCtDZS5Ub3ApfHwoeFsiIW1hcmdpbnMiXS50b3A9K0NlLlRvcCksaXNOYU4oK0NlLkxlZnQpfHwoeFsiIW1hcmdpbnMiXS5sZWZ0PStDZS5MZWZ0KSxpc05hTigrQ2UuUmlnaHQpfHwoeFsiIW1hcmdpbnMiXS5yaWdodD0rQ2UuUmlnaHQpLGlzTmFOKCtDZS5Cb3R0''@;'; put 'put ''b20pfHwoeFsiIW1hcmdpbnMiXS5ib3R0b209K0NlLkJvdHRvbSk7YnJlYWs7Y2FzZSJkaXNwbGF5cmlnaHR0b2xlZnQiOk8uVmlld3N8fChPLlZpZXdzPVtdKSxPLlZpZXdzWzBdfHwoTy5WaWV3c1swXT17fSksTy5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6Y2Fz''@;'; put 'put ''ZSJmcm96ZW5ub3NwbGl0IjpjYXNlInNwbGl0aG9yaXpvbnRhbCI6Y2FzZSJzcGxpdHZlcnRpY2FsIjpjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6Y2FzZSJhY3RpdmVyb3ciOmNhc2UiYWN0aXZlY29sIjpjYXNlInRvcHJvd2JvdHRvbXBhbmUiOmNhc2UibGVmdGNvbHVtbnJpZ2h0cGFu''@;'; put 'put ''ZSI6Y2FzZSJ1bnN5bmNlZCI6Y2FzZSJwcmludCI6Y2FzZSJwcmludGVycm9ycyI6Y2FzZSJwYW5lcyI6Y2FzZSJzY2FsZSI6Y2FzZSJwYW5lIjpjYXNlIm51bWJlciI6Y2FzZSJsYXlvdXQiOmNhc2UicGFnZXNldHVwIjpjYXNlInNlbGVjdGVkIjpjYXNlInByb3RlY3RvYmplY3RzIjpjYXNl''@;'; put 'put ''ImVuYWJsZXNlbGVjdGlvbiI6Y2FzZSJwcm90ZWN0c2NlbmFyaW9zIjpjYXNlInZhbGlkcHJpbnRlcmluZm8iOmNhc2UiaG9yaXpvbnRhbHJlc29sdXRpb24iOmNhc2UidmVydGljYWxyZXNvbHV0aW9uIjpjYXNlIm51bWJlcm9mY29waWVzIjpjYXNlImFjdGl2ZXBhbmUiOmNhc2UidG9wcm93''@;'; put 'put ''dmlzaWJsZSI6Y2FzZSJsZWZ0Y29sdW1udmlzaWJsZSI6Y2FzZSJmaXR0b3BhZ2UiOmNhc2UicmFuZ2VzZWxlY3Rpb24iOmNhc2UicGFwZXJzaXplaW5kZXgiOmNhc2UicGFnZWxheW91dHpvb20iOmNhc2UicGFnZWJyZWFrem9vbSI6Y2FzZSJmaWx0ZXJvbiI6Y2FzZSJmaXR3aWR0aCI6Y2Fz''@;'; put 'put ''ZSJmaXRoZWlnaHQiOmNhc2UiY29tbWVudHNsYXlvdXQiOmNhc2Uiem9vbSI6Y2FzZSJsZWZ0dG9yaWdodCI6Y2FzZSJncmlkbGluZXMiOmNhc2UiYWxsb3dzb3J0IjpjYXNlImFsbG93ZmlsdGVyIjpjYXNlImFsbG93aW5zZXJ0cm93cyI6Y2FzZSJhbGxvd2RlbGV0ZXJvd3MiOmNhc2UiYWxs''@;'; put 'put ''b3dpbnNlcnRjb2xzIjpjYXNlImFsbG93ZGVsZXRlY29scyI6Y2FzZSJhbGxvd2luc2VydGh5cGVybGlua3MiOmNhc2UiYWxsb3dmb3JtYXRjZWxscyI6Y2FzZSJhbGxvd3NpemVjb2xzIjpjYXNlImFsbG93c2l6ZXJvd3MiOmNhc2UidGFiY29sb3JpbmRleCI6Y2FzZSJkb25vdGRpc3BsYXlo''@;'; put 'put ''ZWFkaW5ncyI6Y2FzZSJzaG93cGFnZWxheW91dHpvb20iOmNhc2UiYmxhY2thbmR3aGl0ZSI6Y2FzZSJkb25vdGRpc3BsYXl6ZXJvcyI6Y2FzZSJkaXNwbGF5cGFnZWJyZWFrIjpjYXNlInJvd2NvbGhlYWRpbmdzIjpjYXNlImRvbm90ZGlzcGxheW91dGxpbmUiOmNhc2Uibm9vcmllbnRhdGlv''@;'; put 'put ''biI6Y2FzZSJhbGxvd3VzZXBpdm90dGFibGVzIjpjYXNlInplcm9oZWlnaHQiOmNhc2Uidmlld2FibGVyYW5nZSI6Y2FzZSJzZWxlY3Rpb24iOmNhc2UicHJvdGVjdGNvbnRlbnRzIjpicmVhaztjYXNlIm5vc3VtbWFyeXJvd3NiZWxvd2RldGFpbCI6eFsiIW91dGxpbmUiXXx8KHhbIiFvdXRs''@;'; put 'put ''aW5lIl09e30pLHhbIiFvdXRsaW5lIl0uYWJvdmU9ITA7YnJlYWs7Y2FzZSJub3N1bW1hcnljb2x1bW5zcmlnaHRkZXRhaWwiOnhbIiFvdXRsaW5lIl18fCh4WyIhb3V0bGluZSJdPXt9KSx4WyIhb3V0bGluZSJdLmxlZnQ9ITA7YnJlYWs7ZGVmYXVsdDpMZT0hMX1icmVhaztjYXNlInBpdm90''@;'; put 'put ''dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKGZbM10pe2Nhc2UiaW1tZWRpYXRlaXRlbXNvbmRyb3AiOmNhc2Uic2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCI6Y2FzZSJjb21wYWN0cm93aW5kZW50IjpjYXNlImxvY2F0aW9uIjpjYXNlInBpdm90ZmllbGQiOmNhc2Uib3JpZW50YXRp''@;'; put 'put ''b24iOmNhc2UibGF5b3V0Zm9ybSI6Y2FzZSJsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uIjpjYXNlImxheW91dGNvbXBhY3Ryb3ciOmNhc2UicG9zaXRpb24iOmNhc2UicGl2b3RpdGVtIjpjYXNlImRhdGF0eXBlIjpjYXNlImRhdGFmaWVsZCI6Y2FzZSJzb3VyY2VuYW1lIjpjYXNlInBhcmVudGZp''@;'; put 'put ''ZWxkIjpjYXNlInB0bGluZWl0ZW1zIjpjYXNlInB0bGluZWl0ZW0iOmNhc2UiY291bnRvZnNhbWVpdGVtcyI6Y2FzZSJpdGVtIjpjYXNlIml0ZW10eXBlIjpjYXNlInB0c291cmNlIjpjYXNlImNhY2hlaW5kZXgiOmNhc2UiY29uc29saWRhdGlvbnJlZmVyZW5jZSI6Y2FzZSJmaWxlbmFtZSI6''@;'; put 'put ''Y2FzZSJyZWZlcmVuY2UiOmNhc2Uibm9jb2x1bW5ncmFuZCI6Y2FzZSJub3Jvd2dyYW5kIjpjYXNlImJsYW5rbGluZWFmdGVyaXRlbXMiOmNhc2UiaGlkZGVuIjpjYXNlInN1YnRvdGFsIjpjYXNlImJhc2VmaWVsZCI6Y2FzZSJtYXBjaGlsZGl0ZW1zIjpjYXNlImZ1bmN0aW9uIjpjYXNlInJl''@;'; put 'put ''ZnJlc2hvbmZpbGVvcGVuIjpjYXNlInByaW50c2V0dGl0bGVzIjpjYXNlIm1lcmdlbGFiZWxzIjpjYXNlImRlZmF1bHR2ZXJzaW9uIjpjYXNlInJlZnJlc2huYW1lIjpjYXNlInJlZnJlc2hkYXRlIjpjYXNlInJlZnJlc2hkYXRlY29weSI6Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmNhc2Ui''@;'; put 'put ''dmVyc2lvbmxhc3R1cGRhdGUiOmNhc2UidmVyc2lvbnVwZGF0ZWFibGVtaW4iOmNhc2UidmVyc2lvbnJlZnJlc2hhYmxlbWluIjpjYXNlImNhbGN1bGF0aW9uIjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2UicGFnZWJyZWFrcyI6c3dpdGNoKGZbM10pe2Nhc2UiY29sYnJlYWtzIjpj''@;'; put 'put ''YXNlImNvbGJyZWFrIjpjYXNlInJvd2JyZWFrcyI6Y2FzZSJyb3dicmVhayI6Y2FzZSJjb2xzdGFydCI6Y2FzZSJjb2xlbmQiOmNhc2Uicm93ZW5kIjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6c3dpdGNoKGZbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6''@;'; put 'put ''Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpjYXNlImF1dG9maWx0ZXJhbmQiOmNhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKGZbM10pe2Nhc2UiaWQiOmNhc2UiYXV0b2Zvcm1hdGZvbnQiOmNhc2UiYXV0b2Zvcm1h''@;'; put 'put ''dHBhdHRlcm4iOmNhc2UicXVlcnlzb3VyY2UiOmNhc2UicXVlcnl0eXBlIjpjYXNlImVuYWJsZXJlZGlyZWN0aW9ucyI6Y2FzZSJyZWZyZXNoZWRpbnhsOSI6Y2FzZSJ1cmxzdHJpbmciOmNhc2UiaHRtbHRhYmxlcyI6Y2FzZSJjb25uZWN0aW9uIjpjYXNlImNvbW1hbmR0ZXh0IjpjYXNlInJl''@;'; put 'put ''ZnJlc2hpbmZvIjpjYXNlIm5vdGl0bGVzIjpjYXNlIm5leHRpZCI6Y2FzZSJjb2x1bW5pbmZvIjpjYXNlIm92ZXJ3cml0ZWNlbGxzIjpjYXNlImRvbm90cHJvbXB0Zm9yZmlsZSI6Y2FzZSJ0ZXh0d2l6YXJkc2V0dGluZ3MiOmNhc2Uic291cmNlIjpjYXNlIm51bWJlciI6Y2FzZSJkZWNpbWFs''@;'; put 'put ''IjpjYXNlInRob3VzYW5kc2VwYXJhdG9yIjpjYXNlInRyYWlsaW5nbWludXNudW1iZXJzIjpjYXNlImZvcm1hdHNldHRpbmdzIjpjYXNlImZpZWxkdHlwZSI6Y2FzZSJkZWxpbWl0ZXJzIjpjYXNlInRhYiI6Y2FzZSJjb21tYSI6Y2FzZSJhdXRvZm9ybWF0bmFtZSI6Y2FzZSJ2ZXJzaW9ubGFz''@;'; put 'put ''dGVkaXQiOmNhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOnN3aXRjaChmWzNdKXtjYXNlInJhbmdlIjpjYXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRlc2NlbmRpbmciOmNh''@;'; put 'put ''c2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVzc2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1dGhpZGUiOmNh''@;'; put 'put ''c2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1h''@;'; put 'put ''dHRpbmciOnN3aXRjaChmWzNdKXtjYXNlInJhbmdlIjpjYXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRlc2NlbmRpbmciOmNhc2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVz''@;'; put 'put ''c2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImNlbGxyYW5nZWxpc3QiOmNhc2UiaW5wdXRtZXNzYWdlIjpjYXNlImlucHV0dGl0bGUiOmNhc2UiY29tYm9oaWRlIjpjYXNlImlucHV0aGlkZSI6Y2FzZSJjb25kaXRpb24iOmNhc2UicXVhbGlmaWVyIjpjYXNlInVzZWJsYW5rIjpjYXNlInZh''@;'; put 'put ''bHVlMSI6Y2FzZSJ2YWx1ZTIiOmNhc2UiZm9ybWF0IjpicmVhaztkZWZhdWx0OkxlPSExfWJyZWFrO2Nhc2UibWFwaW5mbyI6Y2FzZSJzY2hlbWEiOmNhc2UiZGF0YSI6c3dpdGNoKGZbM10pe2Nhc2UibWFwIjpjYXNlImVudHJ5IjpjYXNlInJhbmdlIjpjYXNlInhwYXRoIjpjYXNlImZpZWxk''@;'; put 'put ''IjpjYXNlInhzZHR5cGUiOmNhc2UiZmlsdGVyb24iOmNhc2UiYWdncmVnYXRlIjpjYXNlImVsZW1lbnR0eXBlIjpjYXNlImF0dHJpYnV0ZXR5cGUiOmNhc2Uic2NoZW1hIjpjYXNlImVsZW1lbnQiOmNhc2UiY29tcGxleHR5cGUiOmNhc2UiZGF0YXR5cGUiOmNhc2UiYWxsIjpjYXNlImF0dHJp''@;'; put 'put ''YnV0ZSI6Y2FzZSJleHRlbmRzIjpjYXNlInJvdyI6YnJlYWs7ZGVmYXVsdDpMZT0hMX1icmVhaztjYXNlInNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpMZT0hMX1pZihMZXx8ZlszXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighY1tjLmxlbmd0aC0xXVsxXSl0aHJvdyJVbnJlY29nbml6''@;'; put 'put ''ZWQgdGFnOiAiK2ZbM10rInwiK2Muam9pbigifCIpO2lmKCJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiPT09Y1tjLmxlbmd0aC0xXVswXSl7aWYoIi8+Ij09PWZbMF0uc2xpY2UoLTIpKWJyZWFrOyIvIj09PWZbMV0/WHAoWCxqLGVlLGEuc2xpY2UoYixmLmluZGV4KSk6KGVlPWYsYj1mLmlu''@;'; put 'put ''ZGV4K2ZbMF0ubGVuZ3RoKTticmVha31pZihyLldURil0aHJvdyJVbnJlY29nbml6ZWQgdGFnOiAiK2ZbM10rInwiK2Muam9pbigifCIpfXZhciBvZT17fTtyZXR1cm4hci5ib29rU2hlZXRzJiYhci5ib29rUHJvcHMmJihvZS5TaGVldHM9bCksb2UuU2hlZXROYW1lcz1oLG9lLldvcmtib29r''@;'; put 'put ''PU8sb2UuU1NGPU1lKHBlKSxvZS5Qcm9wcz1WLG9lLkN1c3Rwcm9wcz1YLG9lfWZ1bmN0aW9uIFVuKGUsdCl7c3dpdGNoKCRuKHQ9dHx8e30pLHQudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gTW4oT3IoZSksdCk7Y2FzZSJiaW5hcnkiOmNhc2UiYnVmZmVyIjpjYXNlImZp''@;'; put 'put ''bGUiOnJldHVybiBNbihlLHQpO2Nhc2UiYXJyYXkiOnJldHVybiBNbih3dChlKSx0KX19dmFyIGZtPVs2MCwxMDg0LDIwNjYsMjE2NSwyMTc1XTtmdW5jdGlvbiBjbShlLHQscixhLG4pe3ZhciBpPWEscz1bXSxmPXIuc2xpY2Uoci5sLHIubCtpKTtpZihuJiZuLmVuYyYmbi5lbmMuaW5zaXR1''@;'; put 'put ''JiZmLmxlbmd0aD4wKXN3aXRjaChlKXtjYXNlIDk6Y2FzZSA1MjE6Y2FzZSAxMDMzOmNhc2UgMjA1NzpjYXNlIDQ3OmNhc2UgNDA1OmNhc2UgMjI1OmNhc2UgNDA2OmNhc2UgMzEyOmNhc2UgNDA0OmNhc2UgMTA6Y2FzZSAxMzM6YnJlYWs7ZGVmYXVsdDpuLmVuYy5pbnNpdHUoZil9cy5wdXNo''@;'; put 'put ''KGYpLHIubCs9aTtmb3IodmFyIGM9dXQocixyLmwpLG89V25bY10sbD0wO251bGwhPW8mJmZtLmluZGV4T2YoYyk+LTE7KWk9dXQocixyLmwrMiksbD1yLmwrNCwyMDY2PT1jP2wrPTQ6KDIxNjU9PWN8fDIxNzU9PWMpJiYobCs9MTIpLGY9ci5zbGljZShsLHIubCs0K2kpLHMucHVzaChmKSxy''@;'; put 'put ''LmwrPTQraSxvPVduW2M9dXQocixyLmwpXTt2YXIgaD1mcihzKTtocihoLDApO3ZhciB4PTA7aC5sZW5zPVtdO2Zvcih2YXIgZD0wO2Q8cy5sZW5ndGg7KytkKWgubGVucy5wdXNoKHgpLHgrPXNbZF0ubGVuZ3RoO2lmKGgubGVuZ3RoPGEpdGhyb3ciWExTIFJlY29yZCAweCIrZS50b1N0cmlu''@;'; put 'put ''ZygxNikrIiBUcnVuY2F0ZWQ6ICIraC5sZW5ndGgrIiA8ICIrYTtyZXR1cm4gdC5mKGgsaC5sZW5ndGgsbil9ZnVuY3Rpb24gaXQoZSx0LHIpe2lmKCJ6IiE9PWUudCYmZS5YRil7dmFyIGE9MDt0cnl7YT1lLnp8fGUuWEYubnVtRm10SWR8fDAsdC5jZWxsTkYmJihlLno9cGVbYV0pfWNhdGNo''@;'; put 'put ''KGkpe2lmKHQuV1RGKXRocm93IGl9aWYoIXR8fCExIT09dC5jZWxsVGV4dCl0cnl7ZS53PSJlIj09PWUudD9lLnd8fHh0W2Uudl06MD09PWF8fCJHZW5lcmFsIj09YT8ibiI9PT1lLnQ/KDB8ZS52KT09PWUudj9lLnYudG9TdHJpbmcoMTApOmthKGUudik6TnQoZS52KTpScihhLGUudix7ZGF0''@;'; put 'put ''ZTE5MDQ6ISFyLGRhdGVORjp0JiZ0LmRhdGVORn0pfWNhdGNoKGkpe2lmKHQuV1RGKXRocm93IGl9aWYodC5jZWxsRGF0ZXMmJmEmJiJuIj09ZS50JiZidChwZVthXXx8U3RyaW5nKGEpKSl7dmFyIG49a3QoZS52KTtuJiYoZS50PSJkIixlLnY9bmV3IERhdGUobi55LG4ubS0xLG4uZCxuLkgs''@;'; put 'put ''bi5NLG4uUyxuLnUpKX19fWZ1bmN0aW9uIE8wKGUsdCxyKXtyZXR1cm57djplLGl4ZmU6dCx0OnJ9fXZhciB6YT17U0k6ImUwODU5ZmYyZjk0ZjY4MTBhYjkxMDgwMDJiMjdiM2Q5IixEU0k6IjAyZDVjZGQ1OWMyZTFiMTA5Mzk3MDgwMDJiMmNmOWFlIixVREk6IjA1ZDVjZGQ1OWMyZTFiMTA5''@;'; put 'put ''Mzk3MDgwMDJiMmNmOWFlIn07ZnVuY3Rpb24gS2YoZSx0KXt2YXIgcixhLG4saTtpZih0fHwodD17fSksJG4odCkscjAoKSx0LmNvZGVwYWdlJiZlMCh0LmNvZGVwYWdlKSxlLkZ1bGxQYXRocyl7aWYodmUuZmluZChlLCIvZW5jcnlwdGlvbiIpKXRocm93IG5ldyBFcnJvcigiRmlsZSBpcyBw''@;'; put 'put ''YXNzd29yZC1wcm90ZWN0ZWQiKTtyPXZlLmZpbmQoZSwiIUNvbXBPYmoiKSxhPXZlLmZpbmQoZSwiL1dvcmtib29rIil8fHZlLmZpbmQoZSwiL0Jvb2siKX1lbHNle3N3aXRjaCh0LnR5cGUpe2Nhc2UiYmFzZTY0IjplPUlyKE9yKGUpKTticmVhaztjYXNlImJpbmFyeSI6ZT1JcihlKTticmVh''@;'; put 'put ''aztjYXNlImJ1ZmZlciI6YnJlYWs7Y2FzZSJhcnJheSI6QXJyYXkuaXNBcnJheShlKXx8KGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfWhyKGUsMCksYT17Y29udGVudDplfX1pZihyJiZmdW5jdGlvbiBzbShlKXt2YXIgdD17fSxyPWUuY29udGVudDtpZihyLmw9MjgsdC5BbnNp''@;'; put 'put ''VXNlclR5cGU9ci5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSx0LkFuc2lDbGlwYm9hcmRGb3JtYXQ9ZnVuY3Rpb24gcW8oZSl7cmV0dXJuIGxzKGUsMSl9KHIpLHIubGVuZ3RoLXIubDw9NClyZXR1cm4gdDt2YXIgYT1yLnJlYWRfc2hpZnQoNCk7aWYoMD09YXx8YT40MHx8KHIubC09NCx0''@;'; put 'put ''LlJlc2VydmVkMT1yLnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpLHIubGVuZ3RoLXIubDw9NCl8fDE5MDc1MDU2NTIhPT0oYT1yLnJlYWRfc2hpZnQoNCkpfHwodC5Vbmljb2RlQ2xpcGJvYXJkRm9ybWF0PWZ1bmN0aW9uIFpvKGUpe3JldHVybiBscyhlLDIpfShyKSwwPT0oYT1yLnJlYWRf''@;'; put 'put ''c2hpZnQoNCkpfHxhPjQwKSlyZXR1cm4gdDtyLmwtPTQsdC5SZXNlcnZlZDI9ci5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfShyKSx0LmJvb2tQcm9wcyYmIXQuYm9va1NoZWV0cyluPXt9O2Vsc2V7dmFyIHM9U2U/ImJ1ZmZlciI6ImFycmF5IjtpZihhJiZhLmNvbnRlbnQpbj1mdW5jdGlvbiBv''@;'; put 'put ''bShlLHQpe3ZhciByPXtvcHRzOnt9fSxhPXt9O251bGwhPXplJiZudWxsPT10LmRlbnNlJiYodC5kZW5zZT16ZSk7dmFyIGgsZCx1LHAsZyxOLG49dC5kZW5zZT9bXTp7fSxpPXt9LHM9e30sZj1udWxsLGM9W10sbz0iIixsPXt9LHg9IiIsaz17fSxUPVtdLE09W10sST1bXSx5PXtTaGVldHM6''@;'; put 'put ''W10sV0JQcm9wczp7ZGF0ZTE5MDQ6ITF9LFZpZXdzOlt7fV19LFA9e30sUj1mdW5jdGlvbih5ZSl7cmV0dXJuIHllPDg/VnRbeWVdOnllPDY0JiZJW3llLThdfHxWdFt5ZV19LFg9ZnVuY3Rpb24oeWUsWmUsS3Ipe2lmKCEoSz4xfHxLci5zaGVldFJvd3MmJnllLnI+PUtyLnNoZWV0Um93cykp''@;'; put 'put ''e2lmKEtyLmNlbGxTdHlsZXMmJlplLlhGJiZaZS5YRi5kYXRhJiZmdW5jdGlvbih5ZSxaZSxLcil7dmFyIHF0LHNyPVplLlhGLmRhdGE7c3ImJnNyLnBhdHRlcm5UeXBlJiZLciYmS3IuY2VsbFN0eWxlcyYmKFplLnM9e30sWmUucy5wYXR0ZXJuVHlwZT1zci5wYXR0ZXJuVHlwZSwocXQ9YmEo''@;'; put 'put ''Uihzci5pY3ZGb3JlKSkpJiYoWmUucy5mZ0NvbG9yPXtyZ2I6cXR9KSwocXQ9YmEoUihzci5pY3ZCYWNrKSkpJiYoWmUucy5iZ0NvbG9yPXtyZ2I6cXR9KSl9KDAsWmUsS3IpLGRlbGV0ZSBaZS5peGZlLGRlbGV0ZSBaZS5YRixoPXllLHg9Z2UoeWUpLCghc3x8IXMuc3x8IXMuZSkmJihzPXtz''@;'; put 'put ''OntyOjAsYzowfSxlOntyOjAsYzowfX0pLHllLnI8cy5zLnImJihzLnMucj15ZS5yKSx5ZS5jPHMucy5jJiYocy5zLmM9eWUuYykseWUucisxPnMuZS5yJiYocy5lLnI9eWUucisxKSx5ZS5jKzE+cy5lLmMmJihzLmUuYz15ZS5jKzEpLEtyLmNlbGxGb3JtdWxhJiZaZS5mKWZvcih2YXIgc3I9''@;'; put 'put ''MDtzcjxULmxlbmd0aDsrK3NyKWlmKCEoVFtzcl1bMF0ucy5jPnllLmN8fFRbc3JdWzBdLnMucj55ZS5yfHxUW3NyXVswXS5lLmM8eWUuY3x8VFtzcl1bMF0uZS5yPHllLnIpKXtaZS5GPXdlKFRbc3JdWzBdKSwoVFtzcl1bMF0ucy5jIT15ZS5jfHxUW3NyXVswXS5zLnIhPXllLnIpJiZkZWxl''@;'; put 'put ''dGUgWmUuZixaZS5mJiYoWmUuZj0iIitrcihUW3NyXVsxXSwwLHllLGNlLGIpKTticmVha31Lci5kZW5zZT8oblt5ZS5yXXx8KG5beWUucl09W10pLG5beWUucl1beWUuY109WmUpOm5beF09WmV9fSxiPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjprLGFycmF5ZjpULHJydGFi''@;'; put 'put ''aWQ6W10sbGFzdHVzZXI6IiIsYmlmZjo4LGNvZGVwYWdlOjAsd2lubG9ja2VkOjAsY2VsbFN0eWxlczohIXQmJiEhdC5jZWxsU3R5bGVzLFdURjohIXQmJiEhdC53dGZ9O3QucGFzc3dvcmQmJihiLnBhc3N3b3JkPXQucGFzc3dvcmQpO3ZhciBlZSxsZT1bXSxyZT1bXSxkZT1bXSx1ZT1bXSxG''@;'; put 'put ''ZT0hMSxjZT1bXTtjZS5TaGVldE5hbWVzPWIuc25hbWVzLGNlLnNoYXJlZGY9Yi5zaGFyZWRmLGNlLmFycmF5Zj1iLmFycmF5ZixjZS5uYW1lcz1bXSxjZS5YVEk9W107dmFyIEQseGU9MCxLPTAsQz0wLFU9W10sTz1bXTtiLmNvZGVwYWdlPTEyMDAsTXIoMTIwMCk7Zm9yKHZhciBqPSExO2Uu''@;'; put 'put ''bDxlLmxlbmd0aC0xOyl7dmFyIHNlPWUubCxaPWUucmVhZF9zaGlmdCgyKTtpZigwPT09WiYmMTA9PT14ZSlicmVhazt2YXIgUT1lLmw9PT1lLmxlbmd0aD8wOmUucmVhZF9zaGlmdCgyKSxZPVduW1pdO2lmKFkmJlkuZil7aWYodC5ib29rU2hlZXRzJiYxMzM9PT14ZSYmMTMzIT09WilicmVh''@;'; put 'put ''aztpZih4ZT1aLDI9PT1ZLnJ8fDEyPT1ZLnIpe3ZhciBFZT1lLnJlYWRfc2hpZnQoMik7aWYoUS09MiwhYi5lbmMmJkVlIT09WiYmKCgyNTUmRWUpPDw4fEVlPj44KSE9PVopdGhyb3cgbmV3IEVycm9yKCJydCBtaXNtYXRjaDogIitFZSsiIT0iK1opOzEyPT1ZLnImJihlLmwrPTEwLFEtPTEw''@;'; put 'put ''KX12YXIgQT17fTtpZihBPTEwPT09Wj9ZLmYoZSxRLGIpOmNtKFosWSxlLFEsYiksMD09SyYmLTE9PT1bOSw1MjEsMTAzMywyMDU3XS5pbmRleE9mKHhlKSljb250aW51ZTtzd2l0Y2goWil7Y2FzZSAzNDpyLm9wdHMuRGF0ZTE5MDQ9eS5XQlByb3BzLmRhdGUxOTA0PUE7YnJlYWs7Y2FzZSAx''@;'; put 'put ''MzQ6ci5vcHRzLldyaXRlUHJvdGVjdD0hMDticmVhaztjYXNlIDQ3OmlmKGIuZW5jfHwoZS5sPTApLGIuZW5jPUEsIXQucGFzc3dvcmQpdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpO2lmKG51bGw9PUEudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0''@;'; put 'put ''aW9uIHNjaGVtZSB1bnN1cHBvcnRlZCIpO2lmKCFBLnZhbGlkKXRocm93IG5ldyBFcnJvcigiUGFzc3dvcmQgaXMgaW5jb3JyZWN0Iik7YnJlYWs7Y2FzZSA5MjpiLmxhc3R1c2VyPUE7YnJlYWs7Y2FzZSA2Njp2YXIgUGU9TnVtYmVyKEEpO3N3aXRjaChQZSl7Y2FzZSAyMTAxMDpQZT0xMjAw''@;'; put 'put ''O2JyZWFrO2Nhc2UgMzI3Njg6UGU9MWU0O2JyZWFrO2Nhc2UgMzI3Njk6UGU9MTI1Mn1NcihiLmNvZGVwYWdlPVBlKSxqPSEwO2JyZWFrO2Nhc2UgMzE3OmIucnJ0YWJpZD1BO2JyZWFrO2Nhc2UgMjU6Yi53aW5sb2NrZWQ9QTticmVhaztjYXNlIDQzOTpyLm9wdHMuUmVmcmVzaEFsbD1BO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMTI6ci5vcHRzLkNhbGNDb3VudD1BO2JyZWFrO2Nhc2UgMTY6ci5vcHRzLkNhbGNEZWx0YT1BO2JyZWFrO2Nhc2UgMTc6ci5vcHRzLkNhbGNJdGVyPUE7YnJlYWs7Y2FzZSAxMzpyLm9wdHMuQ2FsY01vZGU9QTticmVhaztjYXNlIDE0OnIub3B0cy5DYWxjUHJlY2lzaW9uPUE7''@;'; put 'put ''YnJlYWs7Y2FzZSA5NTpyLm9wdHMuQ2FsY1NhdmVSZWNhbGM9QTticmVhaztjYXNlIDE1OmIuQ2FsY1JlZk1vZGU9QTticmVhaztjYXNlIDIyMTE6ci5vcHRzLkZ1bGxDYWxjPUE7YnJlYWs7Y2FzZSAxMjk6QS5mRGlhbG9nJiYoblsiIXR5cGUiXT0iZGlhbG9nIiksQS5mQmVsb3d8fCgoblsi''@;'; put 'put ''IW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5hYm92ZT0hMCksQS5mUmlnaHR8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5sZWZ0PSEwKTticmVhaztjYXNlIDIyNDpNLnB1c2goQSk7YnJlYWs7Y2FzZSA0MzA6Y2UucHVzaChbQV0pLGNlW2NlLmxlbmd0aC0x''@;'; put 'put ''XS5YVEk9W107YnJlYWs7Y2FzZSAzNTpjYXNlIDU0NzpjZVtjZS5sZW5ndGgtMV0ucHVzaChBKTticmVhaztjYXNlIDI0OmNhc2UgNTM2OkQ9e05hbWU6QS5OYW1lLFJlZjprcihBLnJnY2UsMCxudWxsLGNlLGIpfSxBLml0YWI+MCYmKEQuU2hlZXQ9QS5pdGFiLTEpLGNlLm5hbWVzLnB1c2go''@;'; put 'put ''RCksY2VbMF18fChjZVswXT1bXSxjZVswXS5YVEk9W10pLGNlW2NlLmxlbmd0aC0xXS5wdXNoKEEpLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT1BLk5hbWUmJkEuaXRhYj4wJiZBLnJnY2UmJkEucmdjZVswXSYmQS5yZ2NlWzBdWzBdJiYiUHRnQXJlYTNkIj09QS5yZ2NlWzBdWzBdWzBdJiYo''@;'; put 'put ''T1tBLml0YWItMV09e3JlZjp3ZShBLnJnY2VbMF1bMF1bMV1bMl0pfSk7YnJlYWs7Y2FzZSAyMjpiLkV4dGVybkNvdW50PUE7YnJlYWs7Y2FzZSAyMzowPT1jZS5sZW5ndGgmJihjZVswXT1bXSxjZVswXS5YVEk9W10pLGNlW2NlLmxlbmd0aC0xXS5YVEk9Y2VbY2UubGVuZ3RoLTFdLlhUSS5j''@;'; put 'put ''b25jYXQoQSksY2UuWFRJPWNlLlhUSS5jb25jYXQoQSk7YnJlYWs7Y2FzZSAyMTk2OmlmKGIuYmlmZjw4KWJyZWFrO251bGwhPUQmJihELkNvbW1lbnQ9QVsxXSk7YnJlYWs7Y2FzZSAxODpuWyIhcHJvdGVjdCJdPUE7YnJlYWs7Y2FzZSAxOTowIT09QSYmYi5XVEYmJmNvbnNvbGUuZXJyb3Io''@;'; put 'put ''IlBhc3N3b3JkIHZlcmlmaWVyOiAiK0EpO2JyZWFrO2Nhc2UgMTMzOmlbQS5wb3NdPUEsYi5zbmFtZXMucHVzaChBLm5hbWUpO2JyZWFrO2Nhc2UgMTA6aWYoLS1LKWJyZWFrO2lmKHMuZSl7aWYocy5lLnI+MCYmcy5lLmM+MCl7aWYocy5lLnItLSxzLmUuYy0tLG5bIiFyZWYiXT13ZShzKSx0''@;'; put 'put ''LnNoZWV0Um93cyYmdC5zaGVldFJvd3M8PXMuZS5yKXt2YXIgQWU9cy5lLnI7cy5lLnI9dC5zaGVldFJvd3MtMSxuWyIhZnVsbHJlZiJdPW5bIiFyZWYiXSxuWyIhcmVmIl09d2Uocykscy5lLnI9QWV9cy5lLnIrKyxzLmUuYysrfWxlLmxlbmd0aD4wJiYoblsiIW1lcmdlcyJdPWxlKSxyZS5s''@;'; put 'put ''ZW5ndGg+MCYmKG5bIiFvYmplY3RzIl09cmUpLGRlLmxlbmd0aD4wJiYoblsiIWNvbHMiXT1kZSksdWUubGVuZ3RoPjAmJihuWyIhcm93cyJdPXVlKSx5LlNoZWV0cy5wdXNoKFApfSIiPT09bz9sPW46YVtvXT1uLG49dC5kZW5zZT9bXTp7fTticmVhaztjYXNlIDk6Y2FzZSA1MjE6Y2FzZSAx''@;'; put 'put ''MDMzOmNhc2UgMjA1NzppZig4PT09Yi5iaWZmJiYoYi5iaWZmPXs5OjIsNTIxOjMsMTAzMzo0fVtaXXx8ezUxMjoyLDc2ODozLDEwMjQ6NCwxMjgwOjUsMTUzNjo4LDI6Miw3OjJ9W0EuQklGRlZlcl18fDgpLGIuYmlmZmd1ZXNzPTA9PUEuQklGRlZlciwwPT1BLkJJRkZWZXImJjQwOTY9PUEu''@;'; put 'put ''ZHQmJihiLmJpZmY9NSxqPSEwLE1yKGIuY29kZXBhZ2U9Mjg1OTEpKSw4PT1iLmJpZmYmJjA9PUEuQklGRlZlciYmMTY9PUEuZHQmJihiLmJpZmY9MiksSysrKWJyZWFrO2lmKG49dC5kZW5zZT9bXTp7fSxiLmJpZmY8OCYmIWomJihqPSEwLE1yKGIuY29kZXBhZ2U9dC5jb2RlcGFnZXx8MTI1''@;'; put 'put ''MikpLGIuYmlmZjw1fHwwPT1BLkJJRkZWZXImJjQwOTY9PUEuZHQpeyIiPT09byYmKG89IlNoZWV0MSIpLHM9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTt2YXIgTGU9e3BvczplLmwtUSxuYW1lOm99O2lbTGUucG9zXT1MZSxiLnNuYW1lcy5wdXNoKG8pfWVsc2Ugbz0oaVtzZV18fHtuYW1l''@;'; put 'put ''OiIifSkubmFtZTszMj09QS5kdCYmKG5bIiF0eXBlIl09ImNoYXJ0IiksNjQ9PUEuZHQmJihuWyIhdHlwZSJdPSJtYWNybyIpLGxlPVtdLHJlPVtdLGIuYXJyYXlmPVQ9W10sZGU9W10sdWU9W10sRmU9ITEsUD17SGlkZGVuOihpW3NlXXx8e2hzOjB9KS5ocyxuYW1lOm99O2JyZWFrO2Nhc2Ug''@;'; put 'put ''NTE1OmNhc2UgMzpjYXNlIDI6ImNoYXJ0Ij09blsiIXR5cGUiXSYmKHQuZGVuc2U/KG5bQS5yXXx8W10pW0EuY106bltnZSh7YzpBLmMscjpBLnJ9KV0pJiYrK0EuYyxnPXtpeGZlOkEuaXhmZSxYRjpNW0EuaXhmZV18fHt9LHY6QS52YWwsdDoibiJ9LEM+MCYmKGcuej1VW2cuaXhmZT4+OCY2''@;'; put 'put ''M10pLGl0KGcsdCxyLm9wdHMuRGF0ZTE5MDQpLFgoe2M6QS5jLHI6QS5yfSxnLHQpO2JyZWFrO2Nhc2UgNTpjYXNlIDUxNzpnPXtpeGZlOkEuaXhmZSxYRjpNW0EuaXhmZV0sdjpBLnZhbCx0OkEudH0sQz4wJiYoZy56PVVbZy5peGZlPj44JjYzXSksaXQoZyx0LHIub3B0cy5EYXRlMTkwNCks''@;'; put 'put ''WCh7YzpBLmMscjpBLnJ9LGcsdCk7YnJlYWs7Y2FzZSA2Mzg6Zz17aXhmZTpBLml4ZmUsWEY6TVtBLml4ZmVdLHY6QS5ya251bSx0OiJuIn0sQz4wJiYoZy56PVVbZy5peGZlPj44JjYzXSksaXQoZyx0LHIub3B0cy5EYXRlMTkwNCksWCh7YzpBLmMscjpBLnJ9LGcsdCk7YnJlYWs7Y2FzZSAx''@;'; put 'put ''ODk6Zm9yKHZhciBDZT1BLmM7Q2U8PUEuQzsrK0NlKXt2YXIgb2U9QS5ya3JlY1tDZS1BLmNdWzBdO2c9e2l4ZmU6b2UsWEY6TVtvZV0sdjpBLnJrcmVjW0NlLUEuY11bMV0sdDoibiJ9LEM+MCYmKGcuej1VW2cuaXhmZT4+OCY2M10pLGl0KGcsdCxyLm9wdHMuRGF0ZTE5MDQpLFgoe2M6Q2Us''@;'; put 'put ''cjpBLnJ9LGcsdCl9YnJlYWs7Y2FzZSA2OmNhc2UgNTE4OmNhc2UgMTAzMDppZigiU3RyaW5nIj09QS52YWwpe2Y9QTticmVha31pZigoZz1PMChBLnZhbCxBLmNlbGwuaXhmZSxBLnR0KSkuWEY9TVtnLml4ZmVdLHQuY2VsbEZvcm11bGEpe3ZhciBxZT1BLmZvcm11bGE7aWYocWUmJnFlWzBd''@;'; put 'put ''JiZxZVswXVswXSYmIlB0Z0V4cCI9PXFlWzBdWzBdWzBdKXt2YXIganI9cWVbMF1bMF1bMV1bMF0sZnQ9cWVbMF1bMF1bMV1bMV0sdnQ9Z2Uoe3I6anIsYzpmdH0pO2tbdnRdP2cuZj0iIitrcihBLmZvcm11bGEsMCxBLmNlbGwsY2UsYik6Zy5GPSgodC5kZW5zZT8obltqcl18fFtdKVtmdF06''@;'; put 'put ''blt2dF0pfHx7fSkuRn1lbHNlIGcuZj0iIitrcihBLmZvcm11bGEsMCxBLmNlbGwsY2UsYil9Qz4wJiYoZy56PVVbZy5peGZlPj44JjYzXSksaXQoZyx0LHIub3B0cy5EYXRlMTkwNCksWChBLmNlbGwsZyx0KSxmPUE7YnJlYWs7Y2FzZSA3OmNhc2UgNTE5OmlmKCFmKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiU3RyaW5nIHJlY29yZCBleHBlY3RzIEZvcm11bGEiKTtmLnZhbD1BLChnPU8wKEEsZi5jZWxsLml4ZmUsInMiKSkuWEY9TVtnLml4ZmVdLHQuY2VsbEZvcm11bGEmJihnLmY9IiIra3IoZi5mb3JtdWxhLDAsZi5jZWxsLGNlLGIpKSxDPjAmJihnLno9VVtnLml4ZmU+PjgmNjNdKSxpdChn''@;'; put 'put ''LHQsci5vcHRzLkRhdGUxOTA0KSxYKGYuY2VsbCxnLHQpLGY9bnVsbDticmVhaztjYXNlIDMzOmNhc2UgNTQ1OlQucHVzaChBKTt2YXIgSmE9Z2UoQVswXS5zKTtpZihkPXQuZGVuc2U/KG5bQVswXS5zLnJdfHxbXSlbQVswXS5zLmNdOm5bSmFdLHQuY2VsbEZvcm11bGEmJmQpe2lmKCFmfHwh''@;'; put 'put ''SmF8fCFkKWJyZWFrO2QuZj0iIitrcihBWzFdLDAsQVswXSxjZSxiKSxkLkY9d2UoQVswXSl9YnJlYWs7Y2FzZSAxMjEyOmlmKCF0LmNlbGxGb3JtdWxhKWJyZWFrO2lmKHgpe2lmKCFmKWJyZWFrO2tbZ2UoZi5jZWxsKV09QVswXSwoKGQ9dC5kZW5zZT8obltmLmNlbGwucl18fFtdKVtmLmNl''@;'; put 'put ''bGwuY106bltnZShmLmNlbGwpXSl8fHt9KS5mPSIiK2tyKEFbMF0sMCxoLGNlLGIpfWJyZWFrO2Nhc2UgMjUzOmc9TzAoY1tBLmlzc3RdLnQsQS5peGZlLCJzIiksY1tBLmlzc3RdLmgmJihnLmg9Y1tBLmlzc3RdLmgpLGcuWEY9TVtnLml4ZmVdLEM+MCYmKGcuej1VW2cuaXhmZT4+OCY2M10p''@;'; put 'put ''LGl0KGcsdCxyLm9wdHMuRGF0ZTE5MDQpLFgoe2M6QS5jLHI6QS5yfSxnLHQpO2JyZWFrO2Nhc2UgNTEzOnQuc2hlZXRTdHVicyYmKGc9e2l4ZmU6QS5peGZlLFhGOk1bQS5peGZlXSx0OiJ6In0sQz4wJiYoZy56PVVbZy5peGZlPj44JjYzXSksaXQoZyx0LHIub3B0cy5EYXRlMTkwNCksWCh7''@;'; put 'put ''YzpBLmMscjpBLnJ9LGcsdCkpO2JyZWFrO2Nhc2UgMTkwOmlmKHQuc2hlZXRTdHVicylmb3IodmFyIE90PUEuYztPdDw9QS5DOysrT3Qpe3ZhciBMcj1BLml4ZmVbT3QtQS5jXTtnPXtpeGZlOkxyLFhGOk1bTHJdLHQ6InoifSxDPjAmJihnLno9VVtnLml4ZmU+PjgmNjNdKSxpdChnLHQsci5v''@;'; put 'put ''cHRzLkRhdGUxOTA0KSxYKHtjOk90LHI6QS5yfSxnLHQpfWJyZWFrO2Nhc2UgMjE0OmNhc2UgNTE2OmNhc2UgNDooZz1PMChBLnZhbCxBLml4ZmUsInMiKSkuWEY9TVtnLml4ZmVdLEM+MCYmKGcuej1VW2cuaXhmZT4+OCY2M10pLGl0KGcsdCxyLm9wdHMuRGF0ZTE5MDQpLFgoe2M6QS5jLHI6''@;'; put 'put ''QS5yfSxnLHQpO2JyZWFrO2Nhc2UgMDpjYXNlIDUxMjoxPT09SyYmKHM9QSk7YnJlYWs7Y2FzZSAyNTI6Yz1BO2JyZWFrO2Nhc2UgMTA1NDppZig0PT1iLmJpZmYpe1VbQysrXT1BWzFdO2Zvcih2YXIgcHQ9MDtwdDxDKzE2MyYmcGVbcHRdIT1BWzFdOysrcHQpO3B0Pj0xNjMmJmV0KEFbMV0s''@;'; put 'put ''QysxNjMpfWVsc2UgZXQoQVsxXSxBWzBdKTticmVhaztjYXNlIDMwOlVbQysrXT1BO2Zvcih2YXIgSXQ9MDtJdDxDKzE2MyYmcGVbSXRdIT1BOysrSXQpO0l0Pj0xNjMmJmV0KEEsQysxNjMpO2JyZWFrO2Nhc2UgMjI5OmxlPWxlLmNvbmNhdChBKTticmVhaztjYXNlIDkzOnJlW0EuY21vWzBd''@;'; put 'put ''XT1iLmxhc3RvYmo9QTticmVhaztjYXNlIDQzODpiLmxhc3RvYmouVHhPPUE7YnJlYWs7Y2FzZSAxMjc6Yi5sYXN0b2JqLkltRGF0YT1BO2JyZWFrO2Nhc2UgNDQwOmZvcihwPUFbMF0ucy5yO3A8PUFbMF0uZS5yOysrcClmb3IodT1BWzBdLnMuYzt1PD1BWzBdLmUuYzsrK3UpKGQ9dC5kZW5z''@;'; put 'put ''ZT8obltwXXx8W10pW3VdOm5bZ2Uoe2M6dSxyOnB9KV0pJiYoZC5sPUFbMV0pO2JyZWFrO2Nhc2UgMjA0ODpmb3IocD1BWzBdLnMucjtwPD1BWzBdLmUucjsrK3ApZm9yKHU9QVswXS5zLmM7dTw9QVswXS5lLmM7Kyt1KShkPXQuZGVuc2U/KG5bcF18fFtdKVt1XTpuW2dlKHtjOnUscjpwfSld''@;'; put 'put ''KSYmZC5sJiYoZC5sLlRvb2x0aXA9QVsxXSk7YnJlYWs7Y2FzZSAyODppZihiLmJpZmY8PTUmJmIuYmlmZj49MilicmVhaztkPXQuZGVuc2U/KG5bQVswXS5yXXx8W10pW0FbMF0uY106bltnZShBWzBdKV07dmFyIHFhPXJlW0FbMl1dO2R8fCh0LmRlbnNlPyhuW0FbMF0ucl18fChuW0FbMF0u''@;'; put 'put ''cl09W10pLGQ9bltBWzBdLnJdW0FbMF0uY109e3Q6InoifSk6ZD1uW2dlKEFbMF0pXT17dDoieiJ9LHMuZS5yPU1hdGgubWF4KHMuZS5yLEFbMF0ucikscy5zLnI9TWF0aC5taW4ocy5zLnIsQVswXS5yKSxzLmUuYz1NYXRoLm1heChzLmUuYyxBWzBdLmMpLHMucy5jPU1hdGgubWluKHMucy5j''@;'; put 'put ''LEFbMF0uYykpLGQuY3x8KGQuYz1bXSksZC5jLnB1c2goe2E6QVsxXSx0OnFhLlR4Ty50fSk7YnJlYWs7Y2FzZSAyMTczOnExKDAsQS5leHQpO2JyZWFrO2Nhc2UgMTI1OmlmKCFiLmNlbGxTdHlsZXMpYnJlYWs7Zm9yKDtBLmU+PUEuczspZGVbQS5lLS1dPXt3aWR0aDpBLncvMjU2LGxldmVs''@;'; put 'put ''OkEubGV2ZWx8fDAsaGlkZGVuOiEhKDEmQS5mbGFncyl9LEZlfHwoRmU9ITAsQW4oQS53LzI1NikpLEt0KGRlW0EuZSsxXSk7YnJlYWs7Y2FzZSA1MjA6dmFyIHlyPXt9O251bGwhPUEubGV2ZWwmJih1ZVtBLnJdPXlyLHlyLmxldmVsPUEubGV2ZWwpLEEuaGlkZGVuJiYodWVbQS5yXT15cix5''@;'; put 'put ''ci5oaWRkZW49ITApLEEuaHB0JiYodWVbQS5yXT15cix5ci5ocHQ9QS5ocHQseXIuaHB4PW9hKEEuaHB0KSk7YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA0MTpuWyIhbWFyZ2lucyJdfHxZdChuWyIhbWFyZ2lucyJdPXt9KSxuWyIhbWFyZ2lucyJdW3szODoibGVmdCIsMzk6''@;'; put 'put ''InJpZ2h0Iiw0MDoidG9wIiw0MToiYm90dG9tIn1bWl1dPUE7YnJlYWs7Y2FzZSAxNjE6blsiIW1hcmdpbnMiXXx8WXQoblsiIW1hcmdpbnMiXT17fSksblsiIW1hcmdpbnMiXS5oZWFkZXI9QS5oZWFkZXIsblsiIW1hcmdpbnMiXS5mb290ZXI9QS5mb290ZXI7YnJlYWs7Y2FzZSA1NzQ6QS5S''@;'; put 'put ''VEwmJih5LlZpZXdzWzBdLlJUTD0hMCk7YnJlYWs7Y2FzZSAxNDY6ST1BO2JyZWFrO2Nhc2UgMjE5ODplZT1BO2JyZWFrO2Nhc2UgMTQwOk49QTticmVhaztjYXNlIDQ0MjpvP1AuQ29kZU5hbWU9QXx8UC5uYW1lOnkuV0JQcm9wcy5Db2RlTmFtZT1BfHwiVGhpc1dvcmtib29rIn19ZWxzZSBZ''@;'; put 'put ''fHxjb25zb2xlLmVycm9yKCJNaXNzaW5nIEluZm8gZm9yIFhMUyBSZWNvcmQgMHgiK1oudG9TdHJpbmcoMTYpKSxlLmwrPVF9cmV0dXJuIHIuU2hlZXROYW1lcz0kZShpKS5zb3J0KGZ1bmN0aW9uKGN0LHllKXtyZXR1cm4gTnVtYmVyKGN0KS1OdW1iZXIoeWUpfSkubWFwKGZ1bmN0aW9uKGN0''@;'; put 'put ''KXtyZXR1cm4gaVtjdF0ubmFtZX0pLHQuYm9va1NoZWV0c3x8KHIuU2hlZXRzPWEpLCFyLlNoZWV0TmFtZXMubGVuZ3RoJiZsWyIhcmVmIl0/KHIuU2hlZXROYW1lcy5wdXNoKCJTaGVldDEiKSxyLlNoZWV0cyYmKHIuU2hlZXRzLlNoZWV0MT1sKSk6ci5QcmVhbWJsZT1sLHIuU2hlZXRzJiZP''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oY3QseWUpe3IuU2hlZXRzW3IuU2hlZXROYW1lc1t5ZV1dWyIhYXV0b2ZpbHRlciJdPWN0fSksci5TdHJpbmdzPWMsci5TU0Y9TWUocGUpLGIuZW5jJiYoci5FbmNyeXB0aW9uPWIuZW5jKSxlZSYmKHIuVGhlbWVzPWVlKSxyLk1ldGFkYXRhPXt9LHZvaWQgMCE9''@;'; put 'put ''PU4mJihyLk1ldGFkYXRhLkNvdW50cnk9TiksY2UubmFtZXMubGVuZ3RoPjAmJih5Lk5hbWVzPWNlLm5hbWVzKSxyLldvcmtib29rPXkscn0oYS5jb250ZW50LHQpO2Vsc2UgaWYoKGk9dmUuZmluZChlLCJQZXJmZWN0T2ZmaWNlX01BSU4iKSkmJmkuY29udGVudCluPWp0LnRvX3dvcmtib29r''@;'; put 'put ''KGkuY29udGVudCwodC50eXBlPXMsdCkpO2Vsc2V7aWYoIShpPXZlLmZpbmQoZSwiTmF0aXZlQ29udGVudF9NQUlOIikpfHwhaS5jb250ZW50KXRocm93KGk9dmUuZmluZChlLCJNTjAiKSkmJmkuY29udGVudD9uZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFdvcmtzIDQgZm9yIE1hYyBmaWxlIik6''@;'; put 'put ''bmV3IEVycm9yKCJDYW5ub3QgZmluZCBXb3JrYm9vayBzdHJlYW0iKTtuPWp0LnRvX3dvcmtib29rKGkuY29udGVudCwodC50eXBlPXMsdCkpfXQuYm9va1ZCQSYmZS5GdWxsUGF0aHMmJnZlLmZpbmQoZSwiL19WQkFfUFJPSkVDVF9DVVIvVkJBL2RpciIpJiYobi52YmFyYXc9ZnVuY3Rpb24g''@;'; put 'put ''RngoZSl7dmFyIHQ9dmUudXRpbHMuY2ZiX25ldyh7cm9vdDoiUiJ9KTtyZXR1cm4gZS5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihyLGEpe2lmKCIvIiE9PXIuc2xpY2UoLTEpJiZyLm1hdGNoKC9fVkJBX1BST0pFQ1RfQ1VSLykpe3ZhciBuPXIucmVwbGFjZSgvXlteXC9dKi8sIlIiKS5y''@;'; put 'put ''ZXBsYWNlKC9cL19WQkFfUFJPSkVDVF9DVVJcdTAwMDAqLywiIik7dmUudXRpbHMuY2ZiX2FkZCh0LG4sZS5GaWxlSW5kZXhbYV0uY29udGVudCl9fSksdmUud3JpdGUodCl9KGUpKX12YXIgZj17fTtyZXR1cm4gZS5GdWxsUGF0aHMmJmZ1bmN0aW9uIGxtKGUsdCxyKXt2YXIgYT12ZS5maW5k''@;'; put 'put ''KGUsIi8hRG9jdW1lbnRTdW1tYXJ5SW5mb3JtYXRpb24iKTtpZihhJiZhLnNpemU+MCl0cnl7dmFyIG49UnMoYSx4bix6YS5EU0kpO2Zvcih2YXIgaSBpbiBuKXRbaV09bltpXX1jYXRjaChvKXtpZihyLldURil0aHJvdyBvfXZhciBzPXZlLmZpbmQoZSwiLyFTdW1tYXJ5SW5mb3JtYXRpb24i''@;'; put 'put ''KTtpZihzJiZzLnNpemU+MCl0cnl7dmFyIGY9UnMocyxkbix6YS5TSSk7Zm9yKHZhciBjIGluIGYpbnVsbD09dFtjXSYmKHRbY109ZltjXSl9Y2F0Y2gobyl7aWYoci5XVEYpdGhyb3cgb310LkhlYWRpbmdQYWlycyYmdC5UaXRsZXNPZlBhcnRzJiYod3ModC5IZWFkaW5nUGFpcnMsdC5UaXRs''@;'; put 'put ''ZXNPZlBhcnRzLHQsciksZGVsZXRlIHQuSGVhZGluZ1BhaXJzLGRlbGV0ZSB0LlRpdGxlc09mUGFydHMpfShlLGYsdCksbi5Qcm9wcz1uLkN1c3Rwcm9wcz1mLHQuYm9va0ZpbGVzJiYobi5jZmI9ZSksbn12YXIgJGE9ezA6e2Y6ZnVuY3Rpb24gUHYoZSx0KXt2YXIgcj17fSxhPWUubCt0O3Iu''@;'; put 'put ''cj1lLnJlYWRfc2hpZnQoNCksZS5sKz00O3ZhciBuPWUucmVhZF9zaGlmdCgyKTtlLmwrPTE7dmFyIGk9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLmw9YSw3JmkmJihyLmxldmVsPTcmaSksMTYmaSYmKHIuaGlkZGVuPSEwKSwzMiZpJiYoci5ocHQ9bi8yMCkscn19LDE6e2Y6ZnVuY3Rpb24g''@;'; put 'put ''WHYoZSl7cmV0dXJuW0hyKGUpXX19LDI6e2Y6ZnVuY3Rpb24gYzIoZSl7cmV0dXJuW0hyKGUpLHVuKGUpLCJuIl19fSwzOntmOmZ1bmN0aW9uIHF2KGUpe3JldHVybltIcihlKSxlLnJlYWRfc2hpZnQoMSksImUiXX19LDQ6e2Y6ZnVuY3Rpb24ganYoZSl7cmV0dXJuW0hyKGUpLGUucmVhZF9z''@;'; put 'put ''aGlmdCgxKSwiYiJdfX0sNTp7ZjpmdW5jdGlvbiBpMihlKXtyZXR1cm5bSHIoZSksZ3IoZSksIm4iXX19LDY6e2Y6ZnVuY3Rpb24geDIoZSl7cmV0dXJuW0hyKGUpLG1yKGUpLCJzdHIiXX19LDc6e2Y6ZnVuY3Rpb24gcjIoZSl7cmV0dXJuW0hyKGUpLGUucmVhZF9zaGlmdCg0KSwicyJdfX0s''@;'; put 'put ''ODp7ZjpmdW5jdGlvbiB3MihlLHQscil7dmFyIGE9ZS5sK3Qsbj1IcihlKTtuLnI9clsiIXJvdyJdO3ZhciBzPVtuLG1yKGUpLCJzdHIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIGY9QzAoZSxhLWUubCxyKTtzWzNdPWtyKGYsMCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9YTty''@;'; put 'put ''ZXR1cm4gc319LDk6e2Y6ZnVuY3Rpb24gXzIoZSx0LHIpe3ZhciBhPWUubCt0LG49SHIoZSk7bi5yPXJbIiFyb3ciXTt2YXIgcz1bbixncihlKSwibiJdO2lmKHIuY2VsbEZvcm11bGEpe2UubCs9Mjt2YXIgZj1DMChlLGEtZS5sLHIpO3NbM109a3IoZiwwLG4sci5zdXBib29rcyxyKX1lbHNl''@;'; put 'put ''IGUubD1hO3JldHVybiBzfX0sMTA6e2Y6ZnVuY3Rpb24gbTIoZSx0LHIpe3ZhciBhPWUubCt0LG49SHIoZSk7bi5yPXJbIiFyb3ciXTt2YXIgcz1bbixlLnJlYWRfc2hpZnQoMSksImIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIGY9QzAoZSxhLWUubCxyKTtzWzNdPWtyKGYsMCxu''@;'; put 'put ''LHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9YTtyZXR1cm4gc319LDExOntmOmZ1bmN0aW9uIGcyKGUsdCxyKXt2YXIgYT1lLmwrdCxuPUhyKGUpO24ucj1yWyIhcm93Il07dmFyIHM9W24sZS5yZWFkX3NoaWZ0KDEpLCJlIl07aWYoci5jZWxsRm9ybXVsYSl7ZS5sKz0yO3ZhciBmPUMwKGUsYS1l''@;'; put 'put ''Lmwscik7c1szXT1rcihmLDAsbixyLnN1cGJvb2tzLHIpfWVsc2UgZS5sPWE7cmV0dXJuIHN9fSwxMjp7ZjpmdW5jdGlvbiB6dihlKXtyZXR1cm5bTXQoZSldfX0sMTM6e2Y6ZnVuY3Rpb24gbDIoZSl7cmV0dXJuW010KGUpLHVuKGUpLCJuIl19fSwxNDp7ZjpmdW5jdGlvbiBRdihlKXtyZXR1''@;'; put 'put ''cm5bTXQoZSksZS5yZWFkX3NoaWZ0KDEpLCJlIl19fSwxNTp7ZjpmdW5jdGlvbiBZdihlKXtyZXR1cm5bTXQoZSksZS5yZWFkX3NoaWZ0KDEpLCJiIl19fSwxNjp7ZjpCZn0sMTc6e2Y6ZnVuY3Rpb24gdjIoZSl7cmV0dXJuW010KGUpLG1yKGUpLCJzdHIiXX19LDE4OntmOmZ1bmN0aW9uIGEy''@;'; put 'put ''KGUpe3JldHVybltNdChlKSxlLnJlYWRfc2hpZnQoNCksInMiXX19LDE5OntmOnNufSwyMDp7fSwyMTp7fSwyMjp7fSwyMzp7fSwyNDp7fSwyNTp7fSwyNjp7fSwyNzp7fSwyODp7fSwyOTp7fSwzMDp7fSwzMTp7fSwzMjp7fSwzMzp7fSwzNDp7fSwzNTp7VDoxfSwzNjp7VDotMX0sMzc6e1Q6''@;'; put 'put ''MX0sMzg6e1Q6LTF9LDM5OntmOmZ1bmN0aW9uIHBwKGUsdCxyKXt2YXIgYT1lLmwrdDtlLmwrPTQsZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCg0KSxpPWpvKGUpLHM9ZXYoZSwwLHIpLGY9Zm4oZSk7ZS5sPWE7dmFyIGM9e05hbWU6aSxQdGc6c307cmV0dXJuIG48MjY4NDM1NDU1JiYoYy5T''@;'; put 'put ''aGVldD1uKSxmJiYoYy5Db21tZW50PWYpLGN9fSw0MDp7fSw0Mjp7fSw0Mzp7ZjpmdW5jdGlvbiB2MShlLHQscil7dmFyIGE9e307YS5zej1lLnJlYWRfc2hpZnQoMikvMjA7dmFyIG49ZnVuY3Rpb24gWW8oZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLmwrKyx7ZkJvbGQ6MSZ0''@;'; put 'put ''LGZJdGFsaWM6MiZ0LGZVbmRlcmxpbmU6NCZ0LGZTdHJpa2VvdXQ6OCZ0LGZPdXRsaW5lOjE2JnQsZlNoYWRvdzozMiZ0LGZDb25kZW5zZTo2NCZ0LGZFeHRlbmQ6MTI4JnR9fShlKTtzd2l0Y2gobi5mSXRhbGljJiYoYS5pdGFsaWM9MSksbi5mQ29uZGVuc2UmJihhLmNvbmRlbnNlPTEpLG4u''@;'; put 'put ''ZkV4dGVuZCYmKGEuZXh0ZW5kPTEpLG4uZlNoYWRvdyYmKGEuc2hhZG93PTEpLG4uZk91dGxpbmUmJihhLm91dGxpbmU9MSksbi5mU3RyaWtlb3V0JiYoYS5zdHJpa2U9MSksNzAwPT09ZS5yZWFkX3NoaWZ0KDIpJiYoYS5ib2xkPTEpLGUucmVhZF9zaGlmdCgyKSl7Y2FzZSAxOmEudmVydEFs''@;'; put 'put ''aWduPSJzdXBlcnNjcmlwdCI7YnJlYWs7Y2FzZSAyOmEudmVydEFsaWduPSJzdWJzY3JpcHQifXZhciBzPWUucmVhZF9zaGlmdCgxKTswIT1zJiYoYS51bmRlcmxpbmU9cyk7dmFyIGY9ZS5yZWFkX3NoaWZ0KDEpO2Y+MCYmKGEuZmFtaWx5PWYpO3ZhciBjPWUucmVhZF9zaGlmdCgxKTtzd2l0''@;'; put 'put ''Y2goYz4wJiYoYS5jaGFyc2V0PWMpLGUubCsrLGEuY29sb3I9ZnVuY3Rpb24gS28oZSl7dmFyIHQ9e30sYT1lLnJlYWRfc2hpZnQoMSk+Pj4xLG49ZS5yZWFkX3NoaWZ0KDEpLGk9ZS5yZWFkX3NoaWZ0KDIsImkiKSxzPWUucmVhZF9zaGlmdCgxKSxmPWUucmVhZF9zaGlmdCgxKSxjPWUucmVh''@;'; put 'put ''ZF9zaGlmdCgxKTtzd2l0Y2goZS5sKyssYSl7Y2FzZSAwOnQuYXV0bz0xO2JyZWFrO2Nhc2UgMTp0LmluZGV4PW47dmFyIG89VnRbbl07byYmKHQucmdiPWJhKG8pKTticmVhaztjYXNlIDI6dC5yZ2I9YmEoW3MsZixjXSk7YnJlYWs7Y2FzZSAzOnQudGhlbWU9bn1yZXR1cm4gMCE9aSYmKHQu''@;'; put 'put ''dGludD1pPjA/aS8zMjc2NzppLzMyNzY4KSx0fShlKSxlLnJlYWRfc2hpZnQoMSkpe2Nhc2UgMTphLnNjaGVtZT0ibWFqb3IiO2JyZWFrO2Nhc2UgMjphLnNjaGVtZT0ibWlub3IifXJldHVybiBhLm5hbWU9bXIoZSksYX19LDQ0OntmOmZ1bmN0aW9uIHgxKGUsdCl7cmV0dXJuW2UucmVhZF9z''@;'; put 'put ''aGlmdCgyKSxtcihlKV19fSw0NTp7ZjpnMX0sNDY6e2Y6dzF9LDQ3OntmOmZ1bmN0aW9uIF8xKGUsdCl7dmFyIHI9ZS5sK3QsYT1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubD1yLHtpeGZlOmEsbnVtRm10SWQ6bn19fSw0ODp7fSw0OTp7ZjpmdW5jdGlvbiBI''@;'; put 'put ''byhlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQsImkiKX19LDUwOnt9LDUxOntmOmZ1bmN0aW9uIGV4KGUpe2Zvcih2YXIgdD1bXSxyPWUucmVhZF9zaGlmdCg0KTtyLS0gPjA7KXQucHVzaChbZS5yZWFkX3NoaWZ0KDQpLGUucmVhZF9zaGlmdCg0KV0pO3JldHVybiB0fX0sNTI6e1Q6MX0sNTM6''@;'; put 'put ''e1Q6LTF9LDU0OntUOjF9LDU1OntUOi0xfSw1Njp7VDoxfSw1Nzp7VDotMX0sNTg6e30sNTk6e30sNjA6e2Y6UXN9LDYyOntmOmZ1bmN0aW9uIGgyKGUpe3JldHVybltIcihlKSxzbihlKSwiaXMiXX19LDYzOntmOmZ1bmN0aW9uIG94KGUpe3ZhciB0PXt9O3QuaT1lLnJlYWRfc2hpZnQoNCk7''@;'; put 'put ''dmFyIHI9e307ci5yPWUucmVhZF9zaGlmdCg0KSxyLmM9ZS5yZWFkX3NoaWZ0KDQpLHQucj1nZShyKTt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIDImYSYmKHQubD0iMSIpLDgmYSYmKHQuYT0iMSIpLHR9fSw2NDp7ZjpmdW5jdGlvbiBMMigpe319LDY1Ont9LDY2Ont9LDY3Ont9LDY4''@;'; put 'put ''Ont9LDY5Ont9LDcwOnt9LDEyODp7fSwxMjk6e1Q6MX0sMTMwOntUOi0xfSwxMzE6e1Q6MSxmOnByLHA6MH0sMTMyOntUOi0xfSwxMzM6e1Q6MX0sMTM0OntUOi0xfSwxMzU6e1Q6MX0sMTM2OntUOi0xfSwxMzc6e1Q6MSxmOmZ1bmN0aW9uIFIyKGUpe3ZhciB0PWUucmVhZF9zaGlmdCgyKTty''@;'; put 'put ''ZXR1cm4gZS5sKz0yOCx7UlRMOjMyJnR9fX0sMTM4OntUOi0xfSwxMzk6e1Q6MX0sMTQwOntUOi0xfSwxNDE6e1Q6MX0sMTQyOntUOi0xfSwxNDM6e1Q6MX0sMTQ0OntUOi0xfSwxNDU6e1Q6MX0sMTQ2OntUOi0xfSwxNDc6e2Y6ZnVuY3Rpb24gSHYoZSx0KXt2YXIgcj17fSxhPWVbZS5sXTty''@;'; put 'put ''ZXR1cm4rK2UubCxyLmFib3ZlPSEoNjQmYSksci5sZWZ0PSEoMTI4JmEpLGUubCs9MTgsci5uYW1lPSRvKGUsdC0xOSkscn19LDE0ODp7ZjpNdixwOjE2fSwxNTE6e2Y6ZnVuY3Rpb24geTIoKXt9fSwxNTI6e30sMTUzOntmOmZ1bmN0aW9uIHhwKGUsdCl7dmFyIHI9e30sYT1lLnJlYWRfc2hp''@;'; put 'put ''ZnQoNCk7ci5kZWZhdWx0VGhlbWVWZXJzaW9uPWUucmVhZF9zaGlmdCg0KTt2YXIgbj10Pjg/bXIoZSk6IiI7cmV0dXJuIG4ubGVuZ3RoPjAmJihyLkNvZGVOYW1lPW4pLHIuYXV0b0NvbXByZXNzUGljdHVyZXM9ISEoNjU1MzYmYSksci5iYWNrdXBGaWxlPSEhKDY0JmEpLHIuY2hlY2tDb21w''@;'; put 'put ''YXRpYmlsaXR5PSEhKDQwOTYmYSksci5kYXRlMTkwND0hISgxJmEpLHIuZmlsdGVyUHJpdmFjeT0hISg4JmEpLHIuaGlkZVBpdm90RmllbGRMaXN0PSEhKDEwMjQmYSksci5wcm9tcHRlZFNvbHV0aW9ucz0hISgxNiZhKSxyLnB1Ymxpc2hJdGVtcz0hISgyMDQ4JmEpLHIucmVmcmVzaEFsbENv''@;'; put 'put ''bm5lY3Rpb25zPSEhKDI2MjE0NCZhKSxyLnNhdmVFeHRlcm5hbExpbmtWYWx1ZXM9ISEoMTI4JmEpLHIuc2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXM9ISEoNCZhKSxyLnNob3dJbmtBbm5vdGF0aW9uPSEhKDMyJmEpLHIuc2hvd09iamVjdHM9WyJhbGwiLCJwbGFjZWhvbGRlcnMiLCJub25l''@;'; put 'put ''Il1bYT4+MTMmM10sci5zaG93UGl2b3RDaGFydEZpbHRlcj0hISgzMjc2OCZhKSxyLnVwZGF0ZUxpbmtzPVsidXNlclNldCIsIm5ldmVyIiwiYWx3YXlzIl1bYT4+OCYzXSxyfX0sMTU0Ont9LDE1NTp7fSwxNTY6e2Y6ZnVuY3Rpb24gdXAoZSx0KXt2YXIgcj17fTtyZXR1cm4gci5IaWRkZW49''@;'; put 'put ''ZS5yZWFkX3NoaWZ0KDQpLHIuaVRhYklEPWUucmVhZF9zaGlmdCg0KSxyLnN0clJlbElEPW9uKGUsdC04KSxyLm5hbWU9bXIoZSkscn19LDE1Nzp7fSwxNTg6e30sMTU5OntUOjEsZjpmdW5jdGlvbiBPaChlKXtyZXR1cm5bZS5yZWFkX3NoaWZ0KDQpLGUucmVhZF9zaGlmdCg0KV19fSwxNjA6''@;'; put 'put ''e1Q6LTF9LDE2MTp7VDoxLGY6V3R9LDE2Mjp7VDotMX0sMTYzOntUOjF9LDE2NDp7VDotMX0sMTY1OntUOjF9LDE2Njp7VDotMX0sMTY3Ont9LDE2ODp7fSwxNjk6e30sMTcwOnt9LDE3MTp7fSwxNzI6e1Q6MX0sMTczOntUOi0xfSwxNzQ6e30sMTc1Ont9LDE3Njp7ZjprMn0sMTc3OntUOjF9''@;'; put 'put ''LDE3ODp7VDotMX0sMTc5OntUOjF9LDE4MDp7VDotMX0sMTgxOntUOjF9LDE4Mjp7VDotMX0sMTgzOntUOjF9LDE4NDp7VDotMX0sMTg1OntUOjF9LDE4Njp7VDotMX0sMTg3OntUOjF9LDE4ODp7VDotMX0sMTg5OntUOjF9LDE5MDp7VDotMX0sMTkxOntUOjF9LDE5Mjp7VDotMX0sMTkzOntU''@;'; put 'put ''OjF9LDE5NDp7VDotMX0sMTk1OntUOjF9LDE5Njp7VDotMX0sMTk3OntUOjF9LDE5ODp7VDotMX0sMTk5OntUOjF9LDIwMDp7VDotMX0sMjAxOntUOjF9LDIwMjp7VDotMX0sMjAzOntUOjF9LDIwNDp7VDotMX0sMjA1OntUOjF9LDIwNjp7VDotMX0sMjA3OntUOjF9LDIwODp7VDotMX0sMjA5''@;'; put 'put ''OntUOjF9LDIxMDp7VDotMX0sMjExOntUOjF9LDIxMjp7VDotMX0sMjEzOntUOjF9LDIxNDp7VDotMX0sMjE1OntUOjF9LDIxNjp7VDotMX0sMjE3OntUOjF9LDIxODp7VDotMX0sMjE5OntUOjF9LDIyMDp7VDotMX0sMjIxOntUOjF9LDIyMjp7VDotMX0sMjIzOntUOjF9LDIyNDp7VDotMX0s''@;'; put 'put ''MjI1OntUOjF9LDIyNjp7VDotMX0sMjI3OntUOjF9LDIyODp7VDotMX0sMjI5OntUOjF9LDIzMDp7VDotMX0sMjMxOntUOjF9LDIzMjp7VDotMX0sMjMzOntUOjF9LDIzNDp7VDotMX0sMjM1OntUOjF9LDIzNjp7VDotMX0sMjM3OntUOjF9LDIzODp7VDotMX0sMjM5OntUOjF9LDI0MDp7VDot''@;'; put 'put ''MX0sMjQxOntUOjF9LDI0Mjp7VDotMX0sMjQzOntUOjF9LDI0NDp7VDotMX0sMjQ1OntUOjF9LDI0Njp7VDotMX0sMjQ3OntUOjF9LDI0ODp7VDotMX0sMjQ5OntUOjF9LDI1MDp7VDotMX0sMjUxOntUOjF9LDI1Mjp7VDotMX0sMjUzOntUOjF9LDI1NDp7VDotMX0sMjU1OntUOjF9LDI1Njp7''@;'; put 'put ''VDotMX0sMjU3OntUOjF9LDI1ODp7VDotMX0sMjU5OntUOjF9LDI2MDp7VDotMX0sMjYxOntUOjF9LDI2Mjp7VDotMX0sMjYzOntUOjF9LDI2NDp7VDotMX0sMjY1OntUOjF9LDI2Njp7VDotMX0sMjY3OntUOjF9LDI2ODp7VDotMX0sMjY5OntUOjF9LDI3MDp7VDotMX0sMjcxOntUOjF9LDI3''@;'; put 'put ''Mjp7VDotMX0sMjczOntUOjF9LDI3NDp7VDotMX0sMjc1OntUOjF9LDI3Njp7VDotMX0sMjc3Ont9LDI3ODp7VDoxfSwyNzk6e1Q6LTF9LDI4MDp7VDoxfSwyODE6e1Q6LTF9LDI4Mjp7VDoxfSwyODM6e1Q6MX0sMjg0OntUOi0xfSwyODU6e1Q6MX0sMjg2OntUOi0xfSwyODc6e1Q6MX0sMjg4''@;'; put 'put ''OntUOi0xfSwyODk6e1Q6MX0sMjkwOntUOi0xfSwyOTE6e1Q6MX0sMjkyOntUOi0xfSwyOTM6e1Q6MX0sMjk0OntUOi0xfSwyOTU6e1Q6MX0sMjk2OntUOi0xfSwyOTc6e1Q6MX0sMjk4OntUOi0xfSwyOTk6e1Q6MX0sMzAwOntUOi0xfSwzMDE6e1Q6MX0sMzAyOntUOi0xfSwzMDM6e1Q6MX0s''@;'; put 'put ''MzA0OntUOi0xfSwzMDU6e1Q6MX0sMzA2OntUOi0xfSwzMDc6e1Q6MX0sMzA4OntUOi0xfSwzMDk6e1Q6MX0sMzEwOntUOi0xfSwzMTE6e1Q6MX0sMzEyOntUOi0xfSwzMTM6e1Q6LTF9LDMxNDp7VDoxfSwzMTU6e1Q6LTF9LDMxNjp7VDoxfSwzMTc6e1Q6LTF9LDMxODp7VDoxfSwzMTk6e1Q6''@;'; put 'put ''LTF9LDMyMDp7VDoxfSwzMjE6e1Q6LTF9LDMyMjp7VDoxfSwzMjM6e1Q6LTF9LDMyNDp7VDoxfSwzMjU6e1Q6LTF9LDMyNjp7VDoxfSwzMjc6e1Q6LTF9LDMyODp7VDoxfSwzMjk6e1Q6LTF9LDMzMDp7VDoxfSwzMzE6e1Q6LTF9LDMzMjp7VDoxfSwzMzM6e1Q6LTF9LDMzNDp7VDoxfSwzMzU6''@;'; put 'put ''e2Y6ZnVuY3Rpb24gWjEoZSx0KXtyZXR1cm57ZmxhZ3M6ZS5yZWFkX3NoaWZ0KDQpLHZlcnNpb246ZS5yZWFkX3NoaWZ0KDQpLG5hbWU6bXIoZSl9fX0sMzM2OntUOi0xfSwzMzc6e2Y6ZnVuY3Rpb24gYXgoZSl7cmV0dXJuIGUubCs9NCwwIT1lLnJlYWRfc2hpZnQoNCl9LFQ6MX0sMzM4OntU''@;'; put 'put ''Oi0xfSwzMzk6e1Q6MX0sMzQwOntUOi0xfSwzNDE6e1Q6MX0sMzQyOntUOi0xfSwzNDM6e1Q6MX0sMzQ0OntUOi0xfSwzNDU6e1Q6MX0sMzQ2OntUOi0xfSwzNDc6e1Q6MX0sMzQ4OntUOi0xfSwzNDk6e1Q6MX0sMzUwOntUOi0xfSwzNTE6e30sMzUyOnt9LDM1Mzp7VDoxfSwzNTQ6e1Q6LTF9''@;'; put 'put ''LDM1NTp7Zjpvbn0sMzU3Ont9LDM1ODp7fSwzNTk6e30sMzYwOntUOjF9LDM2MTp7fSwzNjI6e2Y6cXN9LDM2Mzp7fSwzNjQ6e30sMzY2Ont9LDM2Nzp7fSwzNjg6e30sMzY5Ont9LDM3MDp7fSwzNzE6e30sMzcyOntUOjF9LDM3Mzp7VDotMX0sMzc0OntUOjF9LDM3NTp7VDotMX0sMzc2OntU''@;'; put 'put ''OjF9LDM3Nzp7VDotMX0sMzc4OntUOjF9LDM3OTp7VDotMX0sMzgwOntUOjF9LDM4MTp7VDotMX0sMzgyOntUOjF9LDM4Mzp7VDotMX0sMzg0OntUOjF9LDM4NTp7VDotMX0sMzg2OntUOjF9LDM4Nzp7VDotMX0sMzg4OntUOjF9LDM4OTp7VDotMX0sMzkwOntUOjF9LDM5MTp7VDotMX0sMzky''@;'; put 'put ''OntUOjF9LDM5Mzp7VDotMX0sMzk0OntUOjF9LDM5NTp7VDotMX0sMzk2Ont9LDM5Nzp7fSwzOTg6e30sMzk5Ont9LDQwMDp7fSw0MDE6e1Q6MX0sNDAzOnt9LDQwNDp7fSw0MDU6e30sNDA2Ont9LDQwNzp7fSw0MDg6e30sNDA5Ont9LDQxMDp7fSw0MTE6e30sNDEyOnt9LDQxMzp7fSw0MTQ6''@;'; put 'put ''e30sNDE1Ont9LDQxNjp7fSw0MTc6e30sNDE4Ont9LDQxOTp7fSw0MjA6e30sNDIxOnt9LDQyMjp7VDoxfSw0MjM6e1Q6MX0sNDI0OntUOi0xfSw0MjU6e1Q6LTF9LDQyNjp7ZjpmdW5jdGlvbiBBMihlLHQscil7dmFyIGE9ZS5sK3Qsbj1vcyhlKSxpPWUucmVhZF9zaGlmdCgxKSxzPVtuXTtp''@;'; put 'put ''ZihzWzJdPWksci5jZWxsRm9ybXVsYSl7dmFyIGY9UWQoZSxhLWUubCxyKTtzWzFdPWZ9ZWxzZSBlLmw9YTtyZXR1cm4gc319LDQyNzp7ZjpmdW5jdGlvbiBDMihlLHQscil7dmFyIGE9ZS5sK3QsaT1bV3QoZSwxNildO2lmKHIuY2VsbEZvcm11bGEpe3ZhciBzPXJ2KGUsYS1lLmwscik7aVsx''@;'; put 'put ''XT1zLGUubD1hfWVsc2UgZS5sPWE7cmV0dXJuIGl9fSw0Mjg6e30sNDI5OntUOjF9LDQzMDp7VDotMX0sNDMxOntUOjF9LDQzMjp7VDotMX0sNDMzOntUOjF9LDQzNDp7VDotMX0sNDM1OntUOjF9LDQzNjp7VDotMX0sNDM3OntUOjF9LDQzODp7VDotMX0sNDM5OntUOjF9LDQ0MDp7VDotMX0s''@;'; put 'put ''NDQxOntUOjF9LDQ0Mjp7VDotMX0sNDQzOntUOjF9LDQ0NDp7VDotMX0sNDQ1OntUOjF9LDQ0Njp7VDotMX0sNDQ3OntUOjF9LDQ0ODp7VDotMX0sNDQ5OntUOjF9LDQ1MDp7VDotMX0sNDUxOntUOjF9LDQ1Mjp7VDotMX0sNDUzOntUOjF9LDQ1NDp7VDotMX0sNDU1OntUOjF9LDQ1Njp7VDot''@;'; put 'put ''MX0sNDU3OntUOjF9LDQ1ODp7VDotMX0sNDU5OntUOjF9LDQ2MDp7VDotMX0sNDYxOntUOjF9LDQ2Mjp7VDotMX0sNDYzOntUOjF9LDQ2NDp7VDotMX0sNDY1OntUOjF9LDQ2Njp7VDotMX0sNDY3OntUOjF9LDQ2ODp7VDotMX0sNDY5OntUOjF9LDQ3MDp7VDotMX0sNDcxOnt9LDQ3Mjp7fSw0''@;'; put 'put ''NzM6e1Q6MX0sNDc0OntUOi0xfSw0NzU6e30sNDc2OntmOmZ1bmN0aW9uIE8yKGUpe3ZhciB0PXt9O3JldHVybiBNZi5mb3JFYWNoKGZ1bmN0aW9uKHIpe3Rbcl09Z3IoZSl9KSx0fX0sNDc3Ont9LDQ3ODp7fSw0Nzk6e1Q6MX0sNDgwOntUOi0xfSw0ODE6e1Q6MX0sNDgyOntUOi0xfSw0ODM6''@;'; put 'put ''e1Q6MX0sNDg0OntUOi0xfSw0ODU6e2Y6ZnVuY3Rpb24gV3YoKXt9fSw0ODY6e1Q6MX0sNDg3OntUOi0xfSw0ODg6e1Q6MX0sNDg5OntUOi0xfSw0OTA6e1Q6MX0sNDkxOntUOi0xfSw0OTI6e1Q6MX0sNDkzOntUOi0xfSw0OTQ6e2Y6ZnVuY3Rpb24gUzIoZSx0KXt2YXIgcj1lLmwrdCxhPVd0''@;'; put 'put ''KGUsMTYpLG49Zm4oZSksaT1tcihlKSxzPW1yKGUpLGY9bXIoZSk7ZS5sPXI7dmFyIGM9e3JmeDphLHJlbElkOm4sbG9jOmksZGlzcGxheTpmfTtyZXR1cm4gcyYmKGMuVG9vbHRpcD1zKSxjfX0sNDk1OntUOjF9LDQ5Njp7VDotMX0sNDk3OntUOjF9LDQ5ODp7VDotMX0sNDk5Ont9LDUwMDp7''@;'; put 'put ''VDoxfSw1MDE6e1Q6LTF9LDUwMjp7VDoxfSw1MDM6e1Q6LTF9LDUwNDp7fSw1MDU6e1Q6MX0sNTA2OntUOi0xfSw1MDc6e30sNTA4OntUOjF9LDUwOTp7VDotMX0sNTEwOntUOjF9LDUxMTp7VDotMX0sNTEyOnt9LDUxMzp7fSw1MTQ6e1Q6MX0sNTE1OntUOi0xfSw1MTY6e1Q6MX0sNTE3OntU''@;'; put 'put ''Oi0xfSw1MTg6e1Q6MX0sNTE5OntUOi0xfSw1MjA6e1Q6MX0sNTIxOntUOi0xfSw1MjI6e30sNTIzOnt9LDUyNDp7fSw1MjU6e30sNTI2Ont9LDUyNzp7fSw1Mjg6e1Q6MX0sNTI5OntUOi0xfSw1MzA6e1Q6MX0sNTMxOntUOi0xfSw1MzI6e1Q6MX0sNTMzOntUOi0xfSw1MzQ6e30sNTM1Ont9''@;'; put 'put ''LDUzNjp7fSw1Mzc6e30sNTM4OntUOjF9LDUzOTp7VDotMX0sNTQwOntUOjF9LDU0MTp7VDotMX0sNTQyOntUOjF9LDU0ODp7fSw1NDk6e30sNTUwOntmOm9ufSw1NTE6e30sNTUyOnt9LDU1Mzp7fSw1NTQ6e1Q6MX0sNTU1OntUOi0xfSw1NTY6e1Q6MX0sNTU3OntUOi0xfSw1NTg6e1Q6MX0s''@;'; put 'put ''NTU5OntUOi0xfSw1NjA6e1Q6MX0sNTYxOntUOi0xfSw1NjI6e30sNTY0Ont9LDU2NTp7VDoxfSw1NjY6e1Q6LTF9LDU2OTp7VDoxfSw1NzA6e1Q6LTF9LDU3Mjp7fSw1NzM6e1Q6MX0sNTc0OntUOi0xfSw1Nzc6e30sNTc4Ont9LDU3OTp7fSw1ODA6e30sNTgxOnt9LDU4Mjp7fSw1ODM6e30s''@;'; put 'put ''NTg0Ont9LDU4NTp7fSw1ODY6e30sNTg3Ont9LDU4ODp7VDotMX0sNTg5Ont9LDU5MDp7VDoxfSw1OTE6e1Q6LTF9LDU5Mjp7VDoxfSw1OTM6e1Q6LTF9LDU5NDp7VDoxfSw1OTU6e1Q6LTF9LDU5Njp7fSw1OTc6e1Q6MX0sNTk4OntUOi0xfSw1OTk6e1Q6MX0sNjAwOntUOi0xfSw2MDE6e1Q6''@;'; put 'put ''MX0sNjAyOntUOi0xfSw2MDM6e1Q6MX0sNjA0OntUOi0xfSw2MDU6e1Q6MX0sNjA2OntUOi0xfSw2MDc6e30sNjA4OntUOjF9LDYwOTp7VDotMX0sNjEwOnt9LDYxMTp7VDoxfSw2MTI6e1Q6LTF9LDYxMzp7VDoxfSw2MTQ6e1Q6LTF9LDYxNTp7VDoxfSw2MTY6e1Q6LTF9LDYxNzp7VDoxfSw2''@;'; put 'put ''MTg6e1Q6LTF9LDYxOTp7VDoxfSw2MjA6e1Q6LTF9LDYyNTp7fSw2MjY6e1Q6MX0sNjI3OntUOi0xfSw2Mjg6e1Q6MX0sNjI5OntUOi0xfSw2MzA6e1Q6MX0sNjMxOntUOi0xfSw2MzI6e2Y6d3h9LDYzMzp7VDoxfSw2MzQ6e1Q6LTF9LDYzNTp7VDoxLGY6ZnVuY3Rpb24gZ3goZSl7dmFyIHQ9''@;'; put 'put ''e307dC5pYXV0aG9yPWUucmVhZF9zaGlmdCg0KTt2YXIgcj1XdChlLDE2KTtyZXR1cm4gdC5yZng9ci5zLHQucmVmPWdlKHIucyksZS5sKz0xNix0fX0sNjM2OntUOi0xfSw2Mzc6e2Y6R299LDYzODp7VDoxfSw2Mzk6e30sNjQwOntUOi0xfSw2NDE6e1Q6MX0sNjQyOntUOi0xfSw2NDM6e1Q6''@;'; put 'put ''MX0sNjQ0Ont9LDY0NTp7VDotMX0sNjQ2OntUOjF9LDY0ODp7VDoxfSw2NDk6e30sNjUwOntUOi0xfSw2NTE6e2Y6ZnVuY3Rpb24gZXAoZSx0KXtyZXR1cm4gZS5sKz0xMCx7bmFtZTptcihlKX19fSw2NTI6e30sNjUzOntUOjF9LDY1NDp7VDotMX0sNjU1OntUOjF9LDY1Njp7VDotMX0sNjU3''@;'; put 'put ''OntUOjF9LDY1ODp7VDotMX0sNjU5Ont9LDY2MDp7VDoxfSw2NjE6e30sNjYyOntUOi0xfSw2NjM6e30sNjY0OntUOjF9LDY2NTp7fSw2NjY6e1Q6LTF9LDY2Nzp7fSw2Njg6e30sNjY5Ont9LDY3MTp7VDoxfSw2NzI6e1Q6LTF9LDY3Mzp7VDoxfSw2NzQ6e1Q6LTF9LDY3NTp7fSw2NzY6e30s''@;'; put 'put ''Njc3Ont9LDY3ODp7fSw2Nzk6e30sNjgwOnt9LDY4MTp7fSwxMDI0Ont9LDEwMjU6e30sMTAyNjp7VDoxfSwxMDI3OntUOi0xfSwxMDI4OntUOjF9LDEwMjk6e1Q6LTF9LDEwMzA6e30sMTAzMTp7VDoxfSwxMDMyOntUOi0xfSwxMDMzOntUOjF9LDEwMzQ6e1Q6LTF9LDEwMzU6e30sMTAzNjp7''@;'; put 'put ''fSwxMDM3Ont9LDEwMzg6e1Q6MX0sMTAzOTp7VDotMX0sMTA0MDp7fSwxMDQxOntUOjF9LDEwNDI6e1Q6LTF9LDEwNDM6e30sMTA0NDp7fSwxMDQ1Ont9LDEwNDY6e1Q6MX0sMTA0Nzp7VDotMX0sMTA0ODp7VDoxfSwxMDQ5OntUOi0xfSwxMDUwOnt9LDEwNTE6e1Q6MX0sMTA1Mjp7VDoxfSwx''@;'; put 'put ''MDUzOntmOmZ1bmN0aW9uIEIyKCl7fX0sMTA1NDp7VDoxfSwxMDU1Ont9LDEwNTY6e1Q6MX0sMTA1Nzp7VDotMX0sMTA1ODp7VDoxfSwxMDU5OntUOi0xfSwxMDYxOnt9LDEwNjI6e1Q6MX0sMTA2Mzp7VDotMX0sMTA2NDp7VDoxfSwxMDY1OntUOi0xfSwxMDY2OntUOjF9LDEwNjc6e1Q6LTF9''@;'; put 'put ''LDEwNjg6e1Q6MX0sMTA2OTp7VDotMX0sMTA3MDp7VDoxfSwxMDcxOntUOi0xfSwxMDcyOntUOjF9LDEwNzM6e1Q6LTF9LDEwNzU6e1Q6MX0sMTA3Njp7VDotMX0sMTA3Nzp7VDoxfSwxMDc4OntUOi0xfSwxMDc5OntUOjF9LDEwODA6e1Q6LTF9LDEwODE6e1Q6MX0sMTA4Mjp7VDotMX0sMTA4''@;'; put 'put ''Mzp7VDoxfSwxMDg0OntUOi0xfSwxMDg1Ont9LDEwODY6e1Q6MX0sMTA4Nzp7VDotMX0sMTA4ODp7VDoxfSwxMDg5OntUOi0xfSwxMDkwOntUOjF9LDEwOTE6e1Q6LTF9LDEwOTI6e1Q6MX0sMTA5Mzp7VDotMX0sMTA5NDp7VDoxfSwxMDk1OntUOi0xfSwxMDk2Ont9LDEwOTc6e1Q6MX0sMTA5''@;'; put 'put ''ODp7fSwxMDk5OntUOi0xfSwxMTAwOntUOjF9LDExMDE6e1Q6LTF9LDExMDI6e30sMTEwMzp7fSwxMTA0Ont9LDExMDU6e30sMTExMTp7fSwxMTEyOnt9LDExMTM6e1Q6MX0sMTExNDp7VDotMX0sMTExNTp7VDoxfSwxMTE2OntUOi0xfSwxMTE3Ont9LDExMTg6e1Q6MX0sMTExOTp7VDotMX0s''@;'; put 'put ''MTEyMDp7VDoxfSwxMTIxOntUOi0xfSwxMTIyOntUOjF9LDExMjM6e1Q6LTF9LDExMjQ6e1Q6MX0sMTEyNTp7VDotMX0sMTEyNjp7fSwxMTI4OntUOjF9LDExMjk6e1Q6LTF9LDExMzA6e30sMTEzMTp7VDoxfSwxMTMyOntUOi0xfSwxMTMzOntUOjF9LDExMzQ6e1Q6LTF9LDExMzU6e1Q6MX0s''@;'; put 'put ''MTEzNjp7VDotMX0sMTEzNzp7VDoxfSwxMTM4OntUOi0xfSwxMTM5OntUOjF9LDExNDA6e1Q6LTF9LDExNDE6e30sMTE0Mjp7VDoxfSwxMTQzOntUOi0xfSwxMTQ0OntUOjF9LDExNDU6e1Q6LTF9LDExNDY6e30sMTE0Nzp7VDoxfSwxMTQ4OntUOi0xfSwxMTQ5OntUOjF9LDExNTA6e1Q6LTF9''@;'; put 'put ''LDExNTI6e1Q6MX0sMTE1Mzp7VDotMX0sMTE1NDp7VDotMX0sMTE1NTp7VDotMX0sMTE1Njp7VDotMX0sMTE1Nzp7VDoxfSwxMTU4OntUOi0xfSwxMTU5OntUOjF9LDExNjA6e1Q6LTF9LDExNjE6e1Q6MX0sMTE2Mjp7VDotMX0sMTE2Mzp7VDoxfSwxMTY0OntUOi0xfSwxMTY1OntUOjF9LDEx''@;'; put 'put ''NjY6e1Q6LTF9LDExNjc6e1Q6MX0sMTE2ODp7VDotMX0sMTE2OTp7VDoxfSwxMTcwOntUOi0xfSwxMTcxOnt9LDExNzI6e1Q6MX0sMTE3Mzp7VDotMX0sMTE3Nzp7fSwxMTc4OntUOjF9LDExODA6e30sMTE4MTp7fSwxMTgyOnt9LDIwNDg6e1Q6MX0sMjA0OTp7VDotMX0sMjA1MDp7fSwyMDUx''@;'; put 'put ''OntUOjF9LDIwNTI6e1Q6LTF9LDIwNTM6e30sMjA1NDp7fSwyMDU1OntUOjF9LDIwNTY6e1Q6LTF9LDIwNTc6e1Q6MX0sMjA1ODp7VDotMX0sMjA2MDp7fSwyMDY3Ont9LDIwNjg6e1Q6MX0sMjA2OTp7VDotMX0sMjA3MDp7fSwyMDcxOnt9LDIwNzI6e1Q6MX0sMjA3Mzp7VDotMX0sMjA3NTp7''@;'; put 'put ''fSwyMDc2Ont9LDIwNzc6e1Q6MX0sMjA3ODp7VDotMX0sMjA3OTp7fSwyMDgwOntUOjF9LDIwODE6e1Q6LTF9LDIwODI6e30sMjA4Mzp7VDoxfSwyMDg0OntUOi0xfSwyMDg1OntUOjF9LDIwODY6e1Q6LTF9LDIwODc6e1Q6MX0sMjA4ODp7VDotMX0sMjA4OTp7VDoxfSwyMDkwOntUOi0xfSwy''@;'; put 'put ''MDkxOnt9LDIwOTI6e30sMjA5Mzp7VDoxfSwyMDk0OntUOi0xfSwyMDk1Ont9LDIwOTY6e1Q6MX0sMjA5Nzp7VDotMX0sMjA5ODp7VDoxfSwyMDk5OntUOi0xfSwyMTAwOntUOjF9LDIxMDE6e1Q6LTF9LDIxMDI6e30sMjEwMzp7VDoxfSwyMTA0OntUOi0xfSwyMTA1Ont9LDIxMDY6e1Q6MX0s''@;'; put 'put ''MjEwNzp7VDotMX0sMjEwODp7fSwyMTA5OntUOjF9LDIxMTA6e1Q6LTF9LDIxMTE6e1Q6MX0sMjExMjp7VDotMX0sMjExMzp7VDoxfSwyMTE0OntUOi0xfSwyMTE1Ont9LDIxMTY6e30sMjExNzp7fSwyMTE4OntUOjF9LDIxMTk6e1Q6LTF9LDIxMjA6e30sMjEyMTp7VDoxfSwyMTIyOntUOi0x''@;'; put 'put ''fSwyMTIzOntUOjF9LDIxMjQ6e1Q6LTF9LDIxMjU6e30sMjEyNjp7VDoxfSwyMTI3OntUOi0xfSwyMTI4Ont9LDIxMjk6e1Q6MX0sMjEzMDp7VDotMX0sMjEzMTp7VDoxfSwyMTMyOntUOi0xfSwyMTMzOntUOjF9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e1Q6MX0sMjEzODp7VDot''@;'; put 'put ''MX0sMjEzOTp7VDoxfSwyMTQwOntUOi0xfSwyMTQxOnt9LDMwNzI6e30sMzA3Mzp7fSw0MDk2OntUOjF9LDQwOTc6e1Q6LTF9LDUwMDI6e1Q6MX0sNTAwMzp7VDotMX0sNTA4MTp7VDoxfSw1MDgyOntUOi0xfSw1MDgzOnt9LDUwODQ6e1Q6MX0sNTA4NTp7VDotMX0sNTA4Njp7VDoxfSw1MDg3''@;'; put 'put ''OntUOi0xfSw1MDg4Ont9LDUwODk6e30sNTA5MDp7fSw1MDkyOntUOjF9LDUwOTM6e1Q6LTF9LDUwOTQ6e30sNTA5NTp7VDoxfSw1MDk2OntUOi0xfSw1MDk3Ont9LDUwOTk6e30sNjU1MzU6e246IiJ9fSxXbj17Njp7ZjpObn0sMTA6e2Y6eXR9LDEyOntmOnRyfSwxMzp7Zjp0cn0sMTQ6e2Y6''@;'; put 'put ''SmV9LDE1OntmOkplfSwxNjp7Zjpncn0sMTc6e2Y6SmV9LDE4OntmOkplfSwxOTp7Zjp0cn0sMjA6e2Y6S3N9LDIxOntmOktzfSwyMzp7Zjpxc30sMjQ6e2Y6SnN9LDI1OntmOkplfSwyNjp7fSwyNzp7fSwyODp7ZjpmdW5jdGlvbiBVdShlLHQscil7cmV0dXJuIGZ1bmN0aW9uIE11KGUsdCxy''@;'; put 'put ''KXtpZighKHIuYmlmZjw4KSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLHM9ZS5yZWFkX3NoaWZ0KDIpLGY9enQoZSwwLHIpO3JldHVybiByLmJpZmY8OCYmZS5yZWFkX3NoaWZ0KDEpLFt7cjphLGM6bn0sZixzLGldfX0oZSwwLHIp''@;'; put 'put ''fX0sMjk6e30sMzQ6e2Y6SmV9LDM1OntmOllzfSwzODp7Zjpncn0sMzk6e2Y6Z3J9LDQwOntmOmdyfSw0MTp7Zjpncn0sNDI6e2Y6SmV9LDQzOntmOkplfSw0Nzp7ZjpmdW5jdGlvbiBxaChlLHQscil7dmFyIGE9e1R5cGU6ci5iaWZmPj04P2UucmVhZF9zaGlmdCgyKTowfTtyZXR1cm4gYS5U''@;'; put 'put ''eXBlP2Z1bmN0aW9uIEpoKGUsdCxyKXt2YXIgYT1yfHx7fTtyZXR1cm4gYS5JbmZvPWUucmVhZF9zaGlmdCgyKSxlLmwtPTIsYS5EYXRhPTE9PT1hLkluZm8/ZnVuY3Rpb24gJGgoZSl7dmFyIHQ9e30scj10LkVuY3J5cHRpb25WZXJzaW9uSW5mbz1kdChlLDQpO2lmKDEhPXIuTWFqb3J8fDEh''@;'; put 'put ''PXIuTWlub3IpdGhyb3cidW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAiK3IuTWFqb3IrIiA6ICIrci5NaW5vcjtyZXR1cm4gdC5TYWx0PWUucmVhZF9zaGlmdCgxNiksdC5FbmNyeXB0ZWRWZXJpZmllcj1lLnJlYWRfc2hpZnQoMTYpLHQuRW5jcnlwdGVkVmVyaWZpZXJIYXNoPWUucmVhZF9z''@;'; put 'put ''aGlmdCgxNiksdH0oZSk6ZnVuY3Rpb24gemgoZSx0KXt2YXIgcj17fSxhPXIuRW5jcnlwdGlvblZlcnNpb25JbmZvPWR0KGUsNCk7aWYodC09NCwyIT1hLk1pbm9yKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogIithLk1pbm9yKTtpZihhLk1ham9y''@;'; put 'put ''PjR8fGEuTWFqb3I8Mil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICIrYS5NYWpvcik7ci5GbGFncz1lLnJlYWRfc2hpZnQoNCksdC09NDt2YXIgbj1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIHQtPTQsci5FbmNyeXB0aW9uSGVhZGVyPXNmKGUsbiks''@;'; put 'put ''ci5FbmNyeXB0aW9uVmVyaWZpZXI9ZmYoZSx0LT1uKSxyfShlLHQpLGF9KGUsdC0yLGEpOmZ1bmN0aW9uIFloKGUsdCxyLGEpe3ZhciBuPXtrZXk6dHIoZSksdmVyaWZpY2F0aW9uQnl0ZXM6dHIoZSl9O3IucGFzc3dvcmQmJihuLnZlcmlmaWVyPWZ1bmN0aW9uIEZuKGUpe3ZhciByLGksdD0w''@;'; put 'put ''LGE9bmYoZSksbj1hLmxlbmd0aCsxO2Zvcigocj1fdChuKSlbMF09YS5sZW5ndGgsaT0xO2khPW47KytpKXJbaV09YVtpLTFdO2ZvcihpPW4tMTtpPj0wOy0taSl0PSgoMTYzODQmdD8xOjApfHQ8PDEmMzI3NjcpXnJbaV07cmV0dXJuIDUyODExXnR9KHIucGFzc3dvcmQpKSxhLnZhbGlkPW4u''@;'; put 'put ''dmVyaWZpY2F0aW9uQnl0ZXM9PT1uLnZlcmlmaWVyLGEudmFsaWQmJihhLmluc2l0dT1mdW5jdGlvbihlKXt2YXIgdD0wLHI9Y2YoZSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBuPWZ1bmN0aW9uKGUsdCxyLGEsbil7dmFyIGkscztmb3Iobnx8KG49dCksYXx8KGE9Y2YoIiIpKSxpPTA7aSE9''@;'; put 'put ''dC5sZW5ndGg7KytpKXM9dFtpXSxuW2ldPXM9MjU1Jigoc149YVtyXSk+PjV8czw8MyksKytyO3JldHVybltuLHIsYV19KDAsYSx0LHIpO3JldHVybiB0PW5bMV0sblswXX19KHIucGFzc3dvcmQpKX0oZSwwLHIsYSksYX19LDQ5OntmOmZ1bmN0aW9uIGh1KGUsdCxyKXt2YXIgYT17ZHlIZWln''@;'; put 'put ''aHQ6ZS5yZWFkX3NoaWZ0KDIpLGZsOmUucmVhZF9zaGlmdCgyKX07c3dpdGNoKHImJnIuYmlmZnx8OCl7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpjYXNlIDQ6ZS5sKz0yO2JyZWFrO2RlZmF1bHQ6ZS5sKz0xMH1yZXR1cm4gYS5uYW1lPVJhKGUsMCxyKSxhfX0sNTE6e2Y6dHJ9LDYwOnt9LDYxOntm''@;'; put 'put ''OmZ1bmN0aW9uIGZ1KGUpe3JldHVybntQb3M6W2UucmVhZF9zaGlmdCgyKSxlLnJlYWRfc2hpZnQoMildLERpbTpbZS5yZWFkX3NoaWZ0KDIpLGUucmVhZF9zaGlmdCgyKV0sRmxhZ3M6ZS5yZWFkX3NoaWZ0KDIpLEN1clRhYjplLnJlYWRfc2hpZnQoMiksRmlyc3RUYWI6ZS5yZWFkX3NoaWZ0''@;'; put 'put ''KDIpLFNlbGVjdGVkOmUucmVhZF9zaGlmdCgyKSxUYWJSYXRpbzplLnJlYWRfc2hpZnQoMil9fX0sNjQ6e2Y6SmV9LDY1OntmOmZ1bmN0aW9uIHV1KCl7fX0sNjY6e2Y6dHJ9LDc3Ont9LDgwOnt9LDgxOnt9LDgyOnt9LDg1OntmOnRyfSw4OTp7fSw5MDp7fSw5MTp7fSw5Mjp7ZjpmdW5jdGlv''@;'; put 'put ''biBKbChlLHQscil7aWYoci5lbmMpcmV0dXJuIGUubCs9dCwiIjt2YXIgYT1lLmwsbj16dChlLDAscik7cmV0dXJuIGUucmVhZF9zaGlmdCh0K2EtZS5sKSxufX0sOTM6e2Y6ZnVuY3Rpb24gVnUoZSx0LHIpe2lmKHImJnIuYmlmZjw4KXJldHVybiBmdW5jdGlvbiBHdShlLHQscil7ZS5sKz00''@;'; put 'put ''O3ZhciBhPWUucmVhZF9zaGlmdCgyKSxuPWUucmVhZF9zaGlmdCgyKSxpPWUucmVhZF9zaGlmdCgyKTtlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTY7dmFyIHM9W107cmV0dXJuIHMucHVzaCgoWHVbYV18fHByKShl''@;'; put 'put ''LHQtPTM2LHIpKSx7Y21vOltuLGEsaV0sZnQ6c319KGUsdCxyKTt2YXIgYT1YcyhlKSxuPWZ1bmN0aW9uIEtsKGUsdCl7Zm9yKHZhciByPWUubCt0LGE9W107ZS5sPHI7KXt2YXIgbj1lLnJlYWRfc2hpZnQoMik7ZS5sLT0yO3RyeXthLnB1c2goamxbbl0oZSxyLWUubCkpfWNhdGNoe3JldHVy''@;'; put 'put ''biBlLmw9cixhfX1yZXR1cm4gZS5sIT1yJiYoZS5sPXIpLGF9KGUsdC0yMik7cmV0dXJue2NtbzphLGZ0Om59fX0sOTQ6e30sOTU6e2Y6SmV9LDk2Ont9LDk3Ont9LDk5OntmOkplfSwxMjU6e2Y6UXN9LDEyODp7ZjpmdW5jdGlvbiBBdShlKXtlLmwrPTQ7dmFyIHQ9W2UucmVhZF9zaGlmdCgy''@;'; put 'put ''KSxlLnJlYWRfc2hpZnQoMildO2lmKDAhPT10WzBdJiZ0WzBdLS0sMCE9PXRbMV0mJnRbMV0tLSx0WzBdPjd8fHRbMV0+Nyl0aHJvdyBuZXcgRXJyb3IoIkJhZCBHdXR0ZXJzOiAiK3Quam9pbigifCIpKTtyZXR1cm4gdH19LDEyOTp7ZjpmdW5jdGlvbiBabChlLHQscil7dmFyIGE9ciYmOD09''@;'; put 'put ''ci5iaWZmfHwyPT10P2UucmVhZF9zaGlmdCgyKTooZS5sKz10LDApO3JldHVybntmRGlhbG9nOjE2JmEsZkJlbG93OjY0JmEsZlJpZ2h0OjEyOCZhfX19LDEzMDp7Zjp0cn0sMTMxOntmOkplfSwxMzI6e2Y6SmV9LDEzMzp7ZjpmdW5jdGlvbiBRbChlLHQscil7dmFyIGE9ZS5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpLG49MyZlLnJlYWRfc2hpZnQoMSksaT1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGkpe2Nhc2UgMDppPSJXb3Jrc2hlZXQiO2JyZWFrO2Nhc2UgMTppPSJNYWNyb3NoZWV0IjticmVhaztjYXNlIDI6aT0iQ2hhcnRzaGVldCI7YnJlYWs7Y2FzZSA2Omk9IlZCQU1vZHVsZSJ9dmFyIHM9UmEo''@;'; put 'put ''ZSwwLHIpO3JldHVybiAwPT09cy5sZW5ndGgmJihzPSJTaGVldDEiKSx7cG9zOmEsaHM6bixkdDppLG5hbWU6c319fSwxMzQ6e30sMTQwOntmOmZ1bmN0aW9uIEp1KGUpe3ZhciByLHQ9WzAsMF07cmV0dXJuIHI9ZS5yZWFkX3NoaWZ0KDIpLHRbMF09eHNbcl18fHIscj1lLnJlYWRfc2hpZnQo''@;'; put 'put ''MiksdFsxXT14c1tyXXx8cix0fX0sMTQxOntmOnRyfSwxNDQ6e30sMTQ2OntmOmZ1bmN0aW9uIFF1KGUpe2Zvcih2YXIgdD1lLnJlYWRfc2hpZnQoMikscj1bXTt0LS0gPjA7KXIucHVzaChVcyhlKSk7cmV0dXJuIHJ9fSwxNTE6e30sMTUyOnt9LDE1Mzp7fSwxNTQ6e30sMTU1Ont9LDE1Njp7''@;'; put 'put ''Zjp0cn0sMTU3Ont9LDE1ODp7fSwxNjA6e2Y6c2h9LDE2MTp7ZjpmdW5jdGlvbiB0aChlLHQpe3ZhciByPXt9O3JldHVybiB0PDMyfHwoZS5sKz0xNixyLmhlYWRlcj1ncihlKSxyLmZvb3Rlcj1ncihlKSxlLmwrPTIpLHJ9fSwxNzQ6e30sMTc1Ont9LDE3Njp7fSwxNzc6e30sMTc4Ont9LDE4''@;'; put 'put ''MDp7fSwxODE6e30sMTgyOnt9LDE4NDp7fSwxODU6e30sMTg5OntmOmZ1bmN0aW9uIFR1KGUsdCl7Zm9yKHZhciByPWUubCt0LTIsYT1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1bXTtlLmw8cjspaS5wdXNoKFdzKGUpKTtpZihlLmwhPT1yKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''TXVsUksgcmVhZCBlcnJvciIpO3ZhciBzPWUucmVhZF9zaGlmdCgyKTtpZihpLmxlbmd0aCE9cy1uKzEpdGhyb3cgbmV3IEVycm9yKCJNdWxSSyBsZW5ndGggbWlzbWF0Y2giKTtyZXR1cm57cjphLGM6bixDOnMscmtyZWM6aX19fSwxOTA6e2Y6ZnVuY3Rpb24gU3UoZSx0KXtmb3IodmFyIHI9''@;'; put 'put ''ZS5sK3QtMixhPWUucmVhZF9zaGlmdCgyKSxuPWUucmVhZF9zaGlmdCgyKSxpPVtdO2UubDxyOylpLnB1c2goZS5yZWFkX3NoaWZ0KDIpKTtpZihlLmwhPT1yKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgcmVhZCBlcnJvciIpO3ZhciBzPWUucmVhZF9zaGlmdCgyKTtpZihpLmxlbmd0aCE9''@;'; put 'put ''cy1uKzEpdGhyb3cgbmV3IEVycm9yKCJNdWxCbGFuayBsZW5ndGggbWlzbWF0Y2giKTtyZXR1cm57cjphLGM6bixDOnMsaXhmZTppfX19LDE5Mzp7Zjp5dH0sMTk3Ont9LDE5ODp7fSwxOTk6e30sMjAwOnt9LDIwMTp7fSwyMDI6e2Y6SmV9LDIwMzp7fSwyMDQ6e30sMjA1Ont9LDIwNjp7fSwy''@;'; put 'put ''MDc6e30sMjA4Ont9LDIwOTp7fSwyMTA6e30sMjExOnt9LDIxMzp7fSwyMTU6e30sMjE2Ont9LDIxNzp7fSwyMTg6e2Y6dHJ9LDIyMDp7fSwyMjE6e2Y6SmV9LDIyMjp7fSwyMjQ6e2Y6ZnVuY3Rpb24geXUoZSx0LHIpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDIpLGEu''@;'; put 'put ''bnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDIpLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLGEuZlN0eWxlPWEuZmxhZ3M+PjImMSxhLmRhdGE9ZnVuY3Rpb24gRnUoZSx0LHIsYSl7dmFyIG49e30saT1lLnJlYWRfc2hpZnQoNCkscz1lLnJlYWRfc2hpZnQoNCksZj1lLnJlYWRfc2hpZnQoNCksYz1l''@;'; put 'put ''LnJlYWRfc2hpZnQoMik7cmV0dXJuIG4ucGF0dGVyblR5cGU9bmxbZj4+MjZdLGEuY2VsbFN0eWxlcyYmKG4uYWxjPTcmaSxuLmZXcmFwPWk+PjMmMSxuLmFsY1Y9aT4+NCY3LG4uZkp1c3RMYXN0PWk+PjcmMSxuLnRyb3Q9aT4+OCYyNTUsbi5jSW5kZW50PWk+PjE2JjE1LG4uZlNocmlua1Rv''@;'; put 'put ''Rml0PWk+PjIwJjEsbi5pUmVhZE9yZGVyPWk+PjIyJjIsbi5mQXRyTnVtPWk+PjI2JjEsbi5mQXRyRm50PWk+PjI3JjEsbi5mQXRyQWxjPWk+PjI4JjEsbi5mQXRyQmRyPWk+PjI5JjEsbi5mQXRyUGF0PWk+PjMwJjEsbi5mQXRyUHJvdD1pPj4zMSYxLG4uZGdMZWZ0PTE1JnMsbi5kZ1JpZ2h0''@;'; put 'put ''PXM+PjQmMTUsbi5kZ1RvcD1zPj44JjE1LG4uZGdCb3R0b209cz4+MTImMTUsbi5pY3ZMZWZ0PXM+PjE2JjEyNyxuLmljdlJpZ2h0PXM+PjIzJjEyNyxuLmdyYml0RGlhZz1zPj4zMCYzLG4uaWN2VG9wPTEyNyZmLG4uaWN2Qm90dG9tPWY+PjcmMTI3LG4uaWN2RGlhZz1mPj4xNCYxMjcsbi5k''@;'; put 'put ''Z0RpYWc9Zj4+MjEmMTUsbi5pY3ZGb3JlPTEyNyZjLG4uaWN2QmFjaz1jPj43JjEyNyxuLmZzeEJ1dHRvbj1jPj4xNCYxKSxufShlLDAsMCxyKSxhfX0sMjI1OntmOmZ1bmN0aW9uIFlsKGUsdCl7cmV0dXJuIDA9PT10fHxlLnJlYWRfc2hpZnQoMiksMTIwMH19LDIyNjp7Zjp5dH0sMjI3Ont9''@;'; put 'put ''LDIyOTp7ZjpmdW5jdGlvbiBXdShlLHQpe2Zvcih2YXIgcj1bXSxhPWUucmVhZF9zaGlmdCgyKTthLS07KXIucHVzaChrMChlKSk7cmV0dXJuIHJ9fSwyMzM6e30sMjM1Ont9LDIzNjp7fSwyMzc6e30sMjM5Ont9LDI0MDp7fSwyNDE6e30sMjQyOnt9LDI0NDp7fSwyNDU6e30sMjQ2Ont9LDI0''@;'; put 'put ''Nzp7fSwyNDg6e30sMjQ5Ont9LDI1MTp7fSwyNTI6e2Y6ZnVuY3Rpb24gcnUoZSx0KXtmb3IodmFyIHI9ZS5sK3QsYT1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCksaT1bXSxzPTA7cyE9biYmZS5sPHI7KytzKWkucHVzaChSbChlKSk7cmV0dXJuIGkuQ291bnQ9YSxpLlVuaXF1''@;'; put 'put ''ZT1uLGl9fSwyNTM6e2Y6ZnVuY3Rpb24gZHUoZSl7dmFyIHQ9bnQoZSk7cmV0dXJuIHQuaXNzdD1lLnJlYWRfc2hpZnQoNCksdH19LDI1NTp7ZjpmdW5jdGlvbiBhdShlLHQpe3ZhciByPXt9O3JldHVybiByLmRzc3Q9ZS5yZWFkX3NoaWZ0KDIpLGUubCs9dC0yLHJ9fSwyNTY6e30sMjU5Ont9''@;'; put 'put ''LDI5MDp7fSwzMTE6e30sMzEyOnt9LDMxNTp7fSwzMTc6e2Y6YnN9LDMxODp7fSwzMTk6e30sMzIwOnt9LDMzMDp7fSwzMzE6e30sMzMzOnt9LDMzNDp7fSwzMzU6e30sMzM2Ont9LDMzNzp7fSwzMzg6e30sMzM5Ont9LDM0MDp7fSwzNTE6e30sMzUyOntmOkplfSwzNTM6e2Y6eXR9LDQwMTp7''@;'; put 'put ''fSw0MDI6e30sNDAzOnt9LDQwNDp7fSw0MDU6e30sNDA2Ont9LDQwNzp7fSw0MDg6e30sNDI1Ont9LDQyNjp7fSw0Mjc6e30sNDI4Ont9LDQyOTp7fSw0MzA6e2Y6ZnVuY3Rpb24gUnUoZSx0LHIpe3ZhciBhPWUubCt0LG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpO2lmKHIu''@;'; put 'put ''c2JjY2g9aSwxMDI1PT1pfHwxNDg0OT09aSlyZXR1cm5baSxuXTtpZihpPDF8fGk+MjU1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6ICIraSk7Zm9yKHZhciBzPUd0KGUsaSksZj1bXTthPmUubDspZi5wdXNoKE5hKGUpKTtyZXR1cm5baSxuLHMsZl19fSw0MzE6''@;'; put 'put ''e2Y6SmV9LDQzMjp7fSw0MzM6e30sNDM0Ont9LDQzNzp7fSw0Mzg6e2Y6ZnVuY3Rpb24genUoZSx0LHIpe3ZhciBhPWUubCxuPSIiO3RyeXtlLmwrPTQsLTE9PVswLDUsNywxMSwxMiwxNF0uaW5kZXhPZigoci5sYXN0b2JqfHx7Y21vOlswLDBdfSkuY21vWzFdKT9lLmwrPTY6ZnVuY3Rpb24g''@;'; put 'put ''YmwoZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpO2UubCsrO3ZhciByPWUucmVhZF9zaGlmdCgyKTtlLmwrPTJ9KGUpO3ZhciBmPWUucmVhZF9zaGlmdCgyKTtlLnJlYWRfc2hpZnQoMiksdHIoZSk7dmFyIGM9ZS5yZWFkX3NoaWZ0KDIpO2UubCs9Yztmb3IodmFyIG89MTtvPGUubGVucy5sZW5n''@;'; put 'put ''dGgtMTsrK28pe2lmKGUubC1hIT1lLmxlbnNbb10pdGhyb3cgbmV3IEVycm9yKCJUeE86IGJhZCBjb250aW51ZSByZWNvcmQiKTt2YXIgbD1lW2UubF07aWYoKG4rPUd0KGUsZS5sZW5zW28rMV0tZS5sZW5zW29dLTEpKS5sZW5ndGg+PShsP2Y6MipmKSlicmVha31pZihuLmxlbmd0aCE9PWYm''@;'; put 'put ''Jm4ubGVuZ3RoIT09MipmKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitmKyIgIT0gIituLmxlbmd0aCk7cmV0dXJuIGUubD1hK3Qse3Q6bn19Y2F0Y2h7cmV0dXJuIGUubD1hK3Qse3Q6bn19fX0sNDM5OntmOkplfSw0NDA6e2Y6ZnVuY3Rpb24gJHUoZSx0KXt2YXIgcj1rMChlKTtlLmwr''@;'; put 'put ''PTE2O3ZhciBhPWZ1bmN0aW9uIE1sKGUsdCl7dmFyIHI9ZS5sK3QsYT1lLnJlYWRfc2hpZnQoNCk7aWYoMiE9PWEpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgc3RyZWFtVmVyc2lvbjogIithKTt2YXIgbj1lLnJlYWRfc2hpZnQoMik7ZS5sKz0yO3ZhciBpLHMsZixjLGwsaCxvPSIi''@;'; put 'put ''OzE2Jm4mJihpPXcwKGUpKSwxMjgmbiYmKHM9dzAoZSkpLCEoMjU3Jn5uKSYmKGY9dzAoZSkpLDE9PSgyNTcmbikmJihjPWZ1bmN0aW9uIEJsKGUsdCl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDE2KTtzd2l0Y2gocil7Y2FzZSJlMGM5ZWE3OWY5YmFjZTExOGM4MjAwYWEwMDRiYTkwYiI6cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIFBsKGUpe3ZhciB0PWUucmVhZF9zaGlmdCg0KSxyPWUubCxhPSExO3Q+MjQmJihlLmwrPXQtMjQsIjc5NTg4MWY0M2IxZDdmNDhhZjJjODI1ZGM0ODUyNzYzIj09PWUucmVhZF9zaGlmdCgxNikmJihhPSEwKSxlLmw9cik7dmFyIG49ZS5yZWFkX3NoaWZ0KChhP3QtMjQ6dCk+''@;'; put 'put ''PjEsInV0ZjE2bGUiKS5yZXBsYWNlKGRyLCIiKTtyZXR1cm4gYSYmKGUubCs9MjQpLG59KGUpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiBmdW5jdGlvbiBMbChlKXtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLHI9IiI7dC0tID4wOylyKz0iLi4vIjt2''@;'; put 'put ''YXIgYT1lLnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpO2lmKGUubCs9Miw1NzAwNSE9ZS5yZWFkX3NoaWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7aWYoMD09PWUucmVhZF9zaGlmdCg0KSlyZXR1cm4gcithLnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgaT1lLnJl''@;'; put 'put ''YWRfc2hpZnQoNCk7aWYoMyE9ZS5yZWFkX3NoaWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7cmV0dXJuIHIrZS5yZWFkX3NoaWZ0KGk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKGRyLCIiKX0oZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE1v''@;'; put 'put ''bmlrZXIgIityKX19KGUpKSw4Jm4mJihvPXcwKGUpKSwzMiZuJiYobD1lLnJlYWRfc2hpZnQoMTYpKSw2NCZuJiYoaD13bihlKSksZS5sPXI7dmFyIHg9c3x8Znx8Y3x8IiI7eCYmbyYmKHgrPSIjIitvKSx4fHwoeD0iIyIrbyksMiZuJiYiLyI9PXguY2hhckF0KDApJiYiLyIhPXguY2hhckF0''@;'; put 'put ''KDEpJiYoeD0iZmlsZTovLyIreCk7dmFyIGQ9e1RhcmdldDp4fTtyZXR1cm4gbCYmKGQuZ3VpZD1sKSxoJiYoZC50aW1lPWgpLGkmJihkLlRvb2x0aXA9aSksZH0oZSx0LTI0KTtyZXR1cm5bcixhXX19LDQ0MTp7fSw0NDI6e2Y6TmF9LDQ0Mzp7fSw0NDQ6e2Y6dHJ9LDQ0NTp7fSw0NDY6e30s''@;'; put 'put ''NDQ4OntmOnl0fSw0NDk6e2Y6ZnVuY3Rpb24gc3UoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCgyKSxlLnJlYWRfc2hpZnQoNCl9LHI6Mn0sNDUwOntmOnl0fSw1MTI6e2Y6enN9LDUxMzp7ZjppaH0sNTE1OntmOmZ1bmN0aW9uIE91KGUsdCxyKXtyLmJpZmZndWVzcyYmMj09ci5iaWZmJiYoci5i''@;'; put 'put ''aWZmPTUpO3ZhciBhPW50KGUpLG49Z3IoZSk7cmV0dXJuIGEudmFsPW4sYX19LDUxNjp7ZjpmdW5jdGlvbiBwdShlLHQscil7ci5iaWZmZ3Vlc3MmJjI9PXIuYmlmZiYmKHIuYmlmZj01KTt2YXIgbj1udChlKTsyPT1yLmJpZmYmJmUubCsrO3ZhciBpPU5hKGUsMCxyKTtyZXR1cm4gbi52YWw9''@;'; put 'put ''aSxufX0sNTE3OntmOmpzfSw1MTk6e2Y6Zmh9LDUyMDp7ZjpmdW5jdGlvbiBudShlKXt2YXIgdD17fTt0LnI9ZS5yZWFkX3NoaWZ0KDIpLHQuYz1lLnJlYWRfc2hpZnQoMiksdC5jbnQ9ZS5yZWFkX3NoaWZ0KDIpLXQuYzt2YXIgcj1lLnJlYWRfc2hpZnQoMik7ZS5sKz00O3ZhciBhPWUucmVh''@;'; put 'put ''ZF9zaGlmdCgxKTtyZXR1cm4gZS5sKz0zLDcmYSYmKHQubGV2ZWw9NyZhKSwzMiZhJiYodC5oaWRkZW49ITApLDY0JmEmJih0LmhwdD1yLzIwKSx0fX0sNTIzOnt9LDU0NTp7Zjpac30sNTQ5OntmOkdzfSw1NjY6e30sNTc0OntmOmZ1bmN0aW9uIG91KGUsdCxyKXtyZXR1cm4gciYmci5iaWZm''@;'; put 'put ''Pj0yJiZyLmJpZmY8NT97fTp7UlRMOjY0JmUucmVhZF9zaGlmdCgyKX19fSw2Mzg6e2Y6ZnVuY3Rpb24gRXUoZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLGE9V3MoZSk7cmV0dXJue3I6dCxjOnIsaXhmZTphWzBdLHJrbnVtOmFbMV19fX0sNjU5Ont9LDEwNDg6''@;'; put 'put ''e30sMTA1NDp7ZjpmdW5jdGlvbiBndShlLHQscil7cmV0dXJuW2UucmVhZF9zaGlmdCgyKSx6dChlLDAscildfX0sMTA4NDp7fSwxMjEyOntmOmZ1bmN0aW9uIEx1KGUsdCxyKXt2YXIgYT1WcyhlKTtlLmwrKzt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW1lkKGUsdC09OCxyKSxuLGFd''@;'; put 'put ''fX0sMjA0ODp7ZjpmdW5jdGlvbiBLdShlLHQpe2UucmVhZF9zaGlmdCgyKTt2YXIgcj1rMChlKSxhPWUucmVhZF9zaGlmdCgodC0xMCkvMiwiZGJjcy1jb250Iik7cmV0dXJuW3IsYT1hLnJlcGxhY2UoZHIsIiIpXX19LDIwNDk6e30sMjA1MDp7fSwyMDUxOnt9LDIwNTI6e30sMjA1Mzp7fSwy''@;'; put 'put ''MDU0Ont9LDIwNTU6e30sMjA1Njp7fSwyMDU3OntmOkUwfSwyMDU4Ont9LDIwNTk6e30sMjA2MDp7fSwyMDYxOnt9LDIwNjI6e30sMjA2Mzp7fSwyMDY0Ont9LDIwNjY6e30sMjA2Nzp7fSwyMTI4Ont9LDIxMjk6e30sMjEzMDp7fSwyMTMxOnt9LDIxMzI6e30sMjEzMzp7fSwyMTM0Ont9LDIx''@;'; put 'put ''MzU6e30sMjEzNjp7fSwyMTM3Ont9LDIxMzg6e30sMjE0Njp7fSwyMTQ3OntyOjEyfSwyMTQ4Ont9LDIxNDk6e30sMjE1MDp7fSwyMTUxOntmOnl0fSwyMTUyOnt9LDIxNTQ6e30sMjE1NTp7fSwyMTU2Ont9LDIxNjE6e30sMjE2Mjp7fSwyMTY0Ont9LDIxNjU6e30sMjE2Njp7fSwyMTY3Ont9''@;'; put 'put ''LDIxNjg6e30sMjE2OTp7fSwyMTcwOnt9LDIxNzE6e30sMjE3Mjp7ZjpmdW5jdGlvbiBlaChlKXtlLmwrPTI7dmFyIHQ9e2N4ZnM6MCxjcmM6MH07cmV0dXJuIHQuY3hmcz1lLnJlYWRfc2hpZnQoMiksdC5jcmM9ZS5yZWFkX3NoaWZ0KDQpLHR9LHI6MTJ9LDIxNzM6e2Y6ZnVuY3Rpb24gSjEo''@;'; put 'put ''ZSx0KXtlLmwrPTI7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO2UubCs9Mjtmb3IodmFyIG49ZS5yZWFkX3NoaWZ0KDIpLGk9W107bi0tID4wOylpLnB1c2goWTEoZSkpO3JldHVybntpeGZlOmEsZXh0Oml9fSxyOjEyfSwyMTc0Ont9LDIxNzU6e30sMjE4MDp7fSwyMTgxOnt9LDIxODI6e30sMjE4''@;'; put 'put ''Mzp7fSwyMTg0Ont9LDIxODU6e30sMjE4Njp7fSwyMTg3Ont9LDIxODg6e2Y6SmUscjoxMn0sMjE4OTp7fSwyMTkwOntyOjEyfSwyMTkxOnt9LDIxOTI6e30sMjE5NDp7fSwyMTk1Ont9LDIxOTY6e2Y6ZnVuY3Rpb24gUHUoZSx0LHIpe2lmKCEoci5iaWZmPDgpKXt2YXIgYT1lLnJlYWRfc2hp''@;'; put 'put ''ZnQoMiksbj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuW0d0KGUsYSxyKSxHdChlLG4scildfWUubCs9dH0scjoxMn0sMjE5Nzp7fSwyMTk4OntmOmZ1bmN0aW9uIEcxKGUsdCxyKXt2YXIgYT1lLmwrdDtpZigxMjQyMjYhPT1lLnJlYWRfc2hpZnQoNCkpe2lmKCFyLmNlbGxTdHlsZXMpcmV0dXJu''@;'; put 'put ''IHZvaWQoZS5sPWEpO3ZhciBzLGk9ZS5zbGljZShlLmwpO2UubD1hO3RyeXtzPVJpKGkse3R5cGU6ImFycmF5In0pfWNhdGNoe3JldHVybn12YXIgZj1OcihzLCJ0aGVtZS90aGVtZS90aGVtZTEueG1sIiwhMCk7aWYoZilyZXR1cm4gdmYoZixyKX19LHI6MTJ9LDIxOTk6e30sMjIwMDp7fSwy''@;'; put 'put ''MjAxOnt9LDIyMDI6e2Y6ZnVuY3Rpb24gQnUoZSl7cmV0dXJuWzAhPT1lLnJlYWRfc2hpZnQoNCksMCE9PWUucmVhZF9zaGlmdCg0KSxlLnJlYWRfc2hpZnQoNCldfSxyOjEyfSwyMjAzOntmOnl0fSwyMjA0Ont9LDIyMDU6e30sMjIwNjp7fSwyMjA3Ont9LDIyMTE6e2Y6ZnVuY3Rpb24gaXUo''@;'; put 'put ''ZSl7dmFyIHQ9ZnVuY3Rpb24gV2woZSl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTgse3R5cGU6dCxmbGFnczpyfX0oZSk7aWYoMjIxMSE9dC50eXBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBGdXR1cmUgUmVjb3JkICIrdC50eXBlKTty''@;'; put 'put ''ZXR1cm4gMCE9PWUucmVhZF9zaGlmdCg0KX19LDIyMTI6e30sMjIxMzp7fSwyMjE0Ont9LDIyMTU6e30sNDA5Nzp7fSw0MDk4Ont9LDQwOTk6e30sNDEwMjp7fSw0MTAzOnt9LDQxMDU6e30sNDEwNjp7fSw0MTA3Ont9LDQxMDg6e30sNDEwOTp7fSw0MTE2Ont9LDQxMTc6e30sNDExODp7fSw0''@;'; put 'put ''MTE5Ont9LDQxMjA6e30sNDEyMTp7fSw0MTIyOnt9LDQxMjM6e30sNDEyNDp7fSw0MTI1Ont9LDQxMjY6e30sNDEyNzp7fSw0MTI4Ont9LDQxMjk6e30sNDEzMDp7fSw0MTMyOnt9LDQxMzM6e30sNDEzNDp7Zjp0cn0sNDEzNTp7fSw0MTQ2Ont9LDQxNDc6e30sNDE0ODp7fSw0MTQ5Ont9LDQx''@;'; put 'put ''NTQ6e30sNDE1Njp7fSw0MTU3Ont9LDQxNTg6e30sNDE1OTp7fSw0MTYwOnt9LDQxNjE6e30sNDE2Mzp7fSw0MTY0OntmOmZ1bmN0aW9uIGFoKGUsdCxyKXt2YXIgYT17YXJlYTohMX07aWYoNSE9ci5iaWZmKXJldHVybiBlLmwrPXQsYTt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGUu''@;'; put 'put ''bCs9MywxNiZuJiYoYS5hcmVhPSEwKSxhfX0sNDE2NTp7fSw0MTY2Ont9LDQxNjg6e30sNDE3MDp7fSw0MTcxOnt9LDQxNzQ6e30sNDE3NTp7fSw0MTc2Ont9LDQxNzc6e30sNDE4Nzp7fSw0MTg4OntmOmZ1bmN0aW9uIFp1KGUpe2Zvcih2YXIgdD1lLnJlYWRfc2hpZnQoMikscj1bXTt0LS0g''@;'; put 'put ''PjA7KXIucHVzaChVcyhlKSk7cmV0dXJuIHJ9fSw0MTg5Ont9LDQxOTE6e30sNDE5Mjp7fSw0MTkzOnt9LDQxOTQ6e30sNDE5NTp7fSw0MTk2Ont9LDQxOTc6e30sNDE5ODp7fSw0MTk5Ont9LDQyMDA6e30sMDp7Zjp6c30sMTp7fSwyOntmOmZ1bmN0aW9uIGhoKGUpe3ZhciB0PW50KGUpOysr''@;'; put 'put ''ZS5sO3ZhciByPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gdC50PSJuIix0LnZhbD1yLHR9fSwzOntmOmZ1bmN0aW9uIGxoKGUpe3ZhciB0PW50KGUpOysrZS5sO3ZhciByPWdyKGUpO3JldHVybiB0LnQ9Im4iLHQudmFsPXIsdH19LDQ6e2Y6ZnVuY3Rpb24gb2goZSx0LHIpe3IuYmlmZmd1ZXNz''@;'; put 'put ''JiY1PT1yLmJpZmYmJihyLmJpZmY9Mik7dmFyIGE9bnQoZSk7KytlLmw7dmFyIG49enQoZSwwLHIpO3JldHVybiBhLnQ9InN0ciIsYS52YWw9bixhfX0sNTp7Zjpqc30sNzp7ZjpmdW5jdGlvbiBkaChlKXt2YXIgdD1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIDA9PT10PyhlLmwrKywiIik6ZS5y''@;'; put 'put ''ZWFkX3NoaWZ0KHQsInNiY3MtY29udCIpfX0sODp7fSw5OntmOkUwfSwxMTp7fSwyMjp7Zjp0cn0sMzA6e2Y6d3V9LDMxOnt9LDMyOnt9LDMzOntmOlpzfSwzNjp7fSwzNzp7ZjpHc30sNTA6e2Y6ZnVuY3Rpb24gdmgoZSx0KXtlLmwrPTYsZS5sKz0yLGUubCs9MSxlLmwrPTMsZS5sKz0xLGUu''@;'; put 'put ''bCs9dC0xM319LDYyOnt9LDUyOnt9LDY3Ont9LDY4OntmOnRyfSw2OTp7fSw4Njp7fSwxMjY6e30sMTI3OntmOmZ1bmN0aW9uIGNoKGUpe3ZhciB0PWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSxhPWUucmVhZF9zaGlmdCg0KSxuPXtmbXQ6dCxlbnY6cixsZW46YSxkYXRhOmUu''@;'; put 'put ''c2xpY2UoZS5sLGUubCthKX07cmV0dXJuIGUubCs9YSxufX0sMTM1Ont9LDEzNjp7fSwxMzc6e30sMTQ1Ont9LDE0ODp7fSwxNDk6e30sMTUwOnt9LDE2OTp7fSwxNzE6e30sMTg4Ont9LDE5MTp7fSwxOTI6e30sMTk0Ont9LDE5NTp7fSwyMTQ6e2Y6ZnVuY3Rpb24gcGgoZSx0LHIpe3ZhciBh''@;'; put 'put ''PWUubCt0LG49bnQoZSksaT1lLnJlYWRfc2hpZnQoMikscz1HdChlLGkscik7cmV0dXJuIGUubD1hLG4udD0ic3RyIixuLnZhbD1zLG59fSwyMjM6e30sMjM0Ont9LDM1NDp7fSw0MjE6e30sNTE4OntmOk5ufSw1MjE6e2Y6RTB9LDUzNjp7ZjpKc30sNTQ3OntmOllzfSw1NjE6e30sNTc5Ont9''@;'; put 'put ''LDEwMzA6e2Y6Tm59LDEwMzM6e2Y6RTB9LDEwOTE6e30sMjE1Nzp7fSwyMTYzOnt9LDIxNzc6e30sMjI0MDp7fSwyMjQxOnt9LDIyNDI6e30sMjI0Mzp7fSwyMjQ0Ont9LDIyNDU6e30sMjI0Njp7fSwyMjQ3Ont9LDIyNDg6e30sMjI0OTp7fSwyMjUwOnt9LDIyNTE6e30sMjI2Mjp7cjoxMn0s''@;'; put 'put ''MjkyODI6e319O2Z1bmN0aW9uIGFlKGUsdCxyLGEpe3ZhciBuPXQ7aWYoIWlzTmFOKG4pKXt2YXIgaT1hfHwocnx8W10pLmxlbmd0aHx8MCxzPWUubmV4dCg0KTtzLndyaXRlX3NoaWZ0KDIsbikscy53cml0ZV9zaGlmdCgyLGkpLGk+MCYmcm4ocikmJmUucHVzaChyKX19ZnVuY3Rpb24gSmYo''@;'; put 'put ''ZSx0KXt2YXIgcj10fHx7fTtudWxsIT16ZSYmbnVsbD09ci5kZW5zZSYmKHIuZGVuc2U9emUpO3ZhciBhPXIuZGVuc2U/W106e30sbj0oZT1lLnJlcGxhY2UoLzwhLS0uKj8tLT4vZywiIikpLm1hdGNoKC88dGFibGUvaSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIEhUTUw6IGNv''@;'; put 'put ''dWxkIG5vdCBmaW5kIDx0YWJsZT4iKTt2YXIgaT1lLm1hdGNoKC88XC90YWJsZS9pKSxzPW4uaW5kZXgsZj1pJiZpLmluZGV4fHxlLmxlbmd0aCxjPXZvKGUuc2xpY2UocyxmKSwvKDo/PHRyW14+XSo+KS9pLCI8dHI+Iiksbz0tMSxsPTAsaD0wLHg9MCxkPXtzOntyOjFlNyxjOjFlN30sZTp7''@;'; put 'put ''cjowLGM6MH19LHY9W107Zm9yKHM9MDtzPGMubGVuZ3RoOysrcyl7dmFyIHU9Y1tzXS50cmltKCkscD11LnNsaWNlKDAsMykudG9Mb3dlckNhc2UoKTtpZigiPHRyIiE9cCl7aWYoIjx0ZCI9PXB8fCI8dGgiPT1wKXt2YXIgaz11LnNwbGl0KC88XC90W2RoXT4vaSk7Zm9yKGY9MDtmPGsubGVu''@;'; put 'put ''Z3RoOysrZil7dmFyIFQ9a1tmXS50cmltKCk7aWYoVC5tYXRjaCgvPHRbZGhdL2kpKXtmb3IodmFyIGc9VCxOPTA7IjwiPT1nLmNoYXJBdCgwKSYmKE49Zy5pbmRleE9mKCI+IikpPi0xOylnPWcuc2xpY2UoTisxKTtmb3IodmFyIE09MDtNPHYubGVuZ3RoOysrTSl7dmFyIEk9dltNXTtJLnMu''@;'; put 'put ''Yz09bCYmSS5zLnI8byYmbzw9SS5lLnImJihsPUkuZS5jKzEsTT0tMSl9dmFyIHk9bWUoVC5zbGljZSgwLFQuaW5kZXhPZigiPiIpKSk7eD15LmNvbHNwYW4/K3kuY29sc3BhbjoxLCgoaD0reS5yb3dzcGFuKT4xfHx4PjEpJiZ2LnB1c2goe3M6e3I6byxjOmx9LGU6e3I6bysoaHx8MSktMSxj''@;'; put 'put ''OmwreC0xfX0pO3ZhciBQPXkudHx8eVsiZGF0YS10Il18fCIiO2lmKCFnLmxlbmd0aCl7bCs9eDtjb250aW51ZX1pZihnPVdpKGcpLGQucy5yPm8mJihkLnMucj1vKSxkLmUucjxvJiYoZC5lLnI9byksZC5zLmM+bCYmKGQucy5jPWwpLGQuZS5jPGwmJihkLmUuYz1sKSwhZy5sZW5ndGgpe2wr''@;'; put 'put ''PXg7Y29udGludWV9dmFyIFI9e3Q6InMiLHY6Z307ci5yYXd8fCFnLnRyaW0oKS5sZW5ndGh8fCJzIj09UHx8KCJUUlVFIj09PWc/Uj17dDoiYiIsdjohMH06IkZBTFNFIj09PWc/Uj17dDoiYiIsdjohMX06aXNOYU4oSnIoZykpP2lzTmFOKGFhKGcpLmdldERhdGUoKSl8fChSPXt0OiJkIix2''@;'; put 'put ''OlhlKGcpfSxyLmNlbGxEYXRlc3x8KFI9e3Q6Im4iLHY6aXIoUi52KX0pLFIuej1yLmRhdGVORnx8cGVbMTRdKTpSPXt0OiJuIix2OkpyKGcpfSksci5kZW5zZT8oYVtvXXx8KGFbb109W10pLGFbb11bbF09Uik6YVtnZSh7cjpvLGM6bH0pXT1SLGwrPXh9fX19ZWxzZXtpZigrK28sci5zaGVl''@;'; put 'put ''dFJvd3MmJnIuc2hlZXRSb3dzPD1vKXstLW87YnJlYWt9bD0wfX1yZXR1cm4gYVsiIXJlZiJdPXdlKGQpLHYubGVuZ3RoJiYoYVsiIW1lcmdlcyJdPXYpLGF9ZnVuY3Rpb24gUm0oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bXHRcclxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2csIiAiKS5y''@;'; put 'put ''ZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24oYSxuKXtyZXR1cm4gQXJyYXkocGFyc2VJbnQobiwxMCkrMSkuam9pbigiICIpfSkucmVwbGFjZSgvPHRleHQ6dGFiW14+XSpcLz4vZywiXHQiKS5yZXBsYWNlKC88''@;'; put 'put ''dGV4dDpsaW5lLWJyZWFrXC8+L2csIlxuIik7cmV0dXJuW0llKHQucmVwbGFjZSgvPFtePl0qPi9nLCIiKSldfXZhciBpYz17ZGF5OlsiZCIsImRkIl0sbW9udGg6WyJtIiwibW0iXSx5ZWFyOlsieSIsInl5Il0saG91cnM6WyJoIiwiaGgiXSxtaW51dGVzOlsibSIsIm1tIl0sc2Vjb25kczpb''@;'; put 'put ''InMiLCJzcyJdLCJhbS1wbSI6WyJBL1AiLCJBTS9QTSJdLCJkYXktb2Ytd2VlayI6WyJkZGQiLCJkZGRkIl0sZXJhOlsiZSIsImVlIl0scXVhcnRlcjpbIlxcUW0iLCdtXFwidGggcXVhcnRlciInXX07ZnVuY3Rpb24gc2MoZSx0KXt2YXIgcj10fHx7fTtudWxsIT16ZSYmbnVsbD09ci5kZW5z''@;'; put 'put ''ZSYmKHIuZGVuc2U9emUpO3ZhciBpLHMsbCxoLHUscCxhPVkwKGUpLG49W10sZj17bmFtZToiIn0sYz0iIixvPTAseD17fSxkPVtdLHY9ci5kZW5zZT9bXTp7fSxrPXt2YWx1ZToiIn0sVD0iIixnPTAsTT1bXSxJPS0xLHk9LTEsUD17czp7cjoxZTYsYzoxZTd9LGU6e3I6MCxjOjB9fSxSPTAs''@;'; put 'put ''Vj17fSxYPVtdLGI9e30sZWU9MCxsZT0wLHJlPVtdLGRlPTEsdWU9MSxGZT1bXSxjZT17TmFtZXM6W119LHhlPXt9LEs9WyIiLCIiXSxDPVtdLFU9e30sTz0iIixEPTAsaj0hMSxzZT0hMSxaPTA7Zm9yKHlhLmxhc3RJbmRleD0wLGE9YS5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nbSwi''@;'; put 'put ''IikucmVwbGFjZSgvPCFET0NUWVBFW15cW10qXFtbXlxdXSpcXT4vZ20sIiIpO3U9eWEuZXhlYyhhKTspc3dpdGNoKHVbM109dVszXS5yZXBsYWNlKC9fLiokLywiIikpe2Nhc2UidGFibGUiOmNhc2UiXHU1ZGU1XHU0ZjVjXHU4ODY4IjoiLyI9PT11WzFdPyh2WyIhcmVmIl09UC5lLmM+PVAu''@;'; put 'put ''cy5jJiZQLmUucj49UC5zLnI/d2UoUCk6IkExOkExIixyLnNoZWV0Um93cz4wJiZyLnNoZWV0Um93czw9UC5lLnImJih2WyIhZnVsbHJlZiJdPXZbIiFyZWYiXSxQLmUucj1yLnNoZWV0Um93cy0xLHZbIiFyZWYiXT13ZShQKSksWC5sZW5ndGgmJih2WyIhbWVyZ2VzIl09WCkscmUubGVuZ3Ro''@;'; put 'put ''JiYodlsiIXJvd3MiXT1yZSksbC5uYW1lPWwuXHU1NDBkXHU3OWYwfHxsLm5hbWUsdHlwZW9mIEpTT048InUiJiZKU09OLnN0cmluZ2lmeShsKSxkLnB1c2gobC5uYW1lKSx4W2wubmFtZV09dixzZT0hMSk6Ii8iIT09dVswXS5jaGFyQXQodVswXS5sZW5ndGgtMikmJihsPW1lKHVbMF0sITEp''@;'; put 'put ''LEk9eT0tMSxQLnMucj1QLnMuYz0xZTcsUC5lLnI9UC5lLmM9MCx2PXIuZGVuc2U/W106e30sWD1bXSxyZT1bXSxzZT0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOiIvIj09PXVbMV0/LS1SOisrUjticmVhaztjYXNlInRhYmxlLXJvdyI6Y2FzZSJcdTg4NGMiOmlmKCIvIj09PXVb''@;'; put 'put ''MV0pe0krPWRlLGRlPTE7YnJlYWt9aWYoKGg9bWUodVswXSwhMSkpLlx1ODg0Y1x1NTNmNz9JPWguXHU4ODRjXHU1M2Y3LTE6LTE9PUkmJihJPTApLChkZT0raFsibnVtYmVyLXJvd3MtcmVwZWF0ZWQiXXx8MSk8MTApZm9yKFo9MDtaPGRlOysrWilSPjAmJihyZVtJK1pdPXtsZXZlbDpSfSk7''@;'; put 'put ''eT0tMTticmVhaztjYXNlImNvdmVyZWQtdGFibGUtY2VsbCI6Ii8iIT09dVsxXSYmKyt5LHIuc2hlZXRTdHVicyYmKHIuZGVuc2U/KHZbSV18fCh2W0ldPVtdKSx2W0ldW3ldPXt0OiJ6In0pOnZbZ2Uoe3I6SSxjOnl9KV09e3Q6InoifSksVD0iIixNPVtdO2JyZWFrO2Nhc2UidGFibGUtY2Vs''@;'; put 'put ''bCI6Y2FzZSJcdTY1NzBcdTYzNmUiOmlmKCIvIj09PXVbMF0uY2hhckF0KHVbMF0ubGVuZ3RoLTIpKSsreSxrPW1lKHVbMF0sITEpLHVlPXBhcnNlSW50KGtbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCkscD17dDoieiIsdjpudWxsfSxrLmZvcm11bGEmJjAhPXIuY2VsbEZv''@;'; put 'put ''cm11bGEmJihwLmY9TmYoSWUoay5mb3JtdWxhKSkpLCJzdHJpbmciPT0oay5cdTY1NzBcdTYzNmVcdTdjN2JcdTU3OGJ8fGtbInZhbHVlLXR5cGUiXSkmJihwLnQ9InMiLHAudj1JZShrWyJzdHJpbmctdmFsdWUiXXx8IiIpLHIuZGVuc2U/KHZbSV18fCh2W0ldPVtdKSx2W0ldW3ldPXApOnZb''@;'; put 'put ''Z2Uoe3I6SSxjOnl9KV09cCkseSs9dWUtMTtlbHNlIGlmKCIvIiE9PXVbMV0pe1Q9IiIsZz0wLE09W10sdWU9MTt2YXIgUT1kZT9JK2RlLTE6STtpZigrK3k+UC5lLmMmJihQLmUuYz15KSx5PFAucy5jJiYoUC5zLmM9eSksSTxQLnMuciYmKFAucy5yPUkpLFE+UC5lLnImJihQLmUucj1RKSxD''@;'; put 'put ''PVtdLFU9e30scD17dDooaz1tZSh1WzBdLCExKSkuXHU2NTcwXHU2MzZlXHU3YzdiXHU1NzhifHxrWyJ2YWx1ZS10eXBlIl0sdjpudWxsfSxyLmNlbGxGb3JtdWxhKWlmKGsuZm9ybXVsYSYmKGsuZm9ybXVsYT1JZShrLmZvcm11bGEpKSxrWyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5l''@;'; put 'put ''ZCJdJiZrWyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYoZWU9cGFyc2VJbnQoa1sibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsbGU9cGFyc2VJbnQoa1sibnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQiXSwxMCl8fDAscC5GPXdlKGI9e3M6e3I6SSxjOnl9''@;'; put 'put ''LGU6e3I6SStlZS0xLGM6eStsZS0xfX0pLEZlLnB1c2goW2IscC5GXSkpLGsuZm9ybXVsYSlwLmY9TmYoay5mb3JtdWxhKTtlbHNlIGZvcihaPTA7WjxGZS5sZW5ndGg7KytaKUk+PUZlW1pdWzBdLnMuciYmSTw9RmVbWl1bMF0uZS5yJiZ5Pj1GZVtaXVswXS5zLmMmJnk8PUZlW1pdWzBdLmUu''@;'; put 'put ''YyYmKHAuRj1GZVtaXVsxXSk7c3dpdGNoKChrWyJudW1iZXItY29sdW1ucy1zcGFubmVkIl18fGtbIm51bWJlci1yb3dzLXNwYW5uZWQiXSkmJihlZT1wYXJzZUludChrWyJudW1iZXItcm93cy1zcGFubmVkIl0sMTApfHwwLGxlPXBhcnNlSW50KGtbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQi''@;'; put 'put ''XSwxMCl8fDAsWC5wdXNoKGI9e3M6e3I6SSxjOnl9LGU6e3I6SStlZS0xLGM6eStsZS0xfX0pKSxrWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYodWU9cGFyc2VJbnQoa1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSwxMCkpLHAudCl7Y2FzZSJib29sZWFuIjpwLnQ9ImIiLHAudj1X''@;'; put 'put ''ZShrWyJib29sZWFuLXZhbHVlIl0pO2JyZWFrO2Nhc2UiZmxvYXQiOmNhc2UicGVyY2VudGFnZSI6Y2FzZSJjdXJyZW5jeSI6cC50PSJuIixwLnY9cGFyc2VGbG9hdChrLnZhbHVlKTticmVhaztjYXNlImRhdGUiOnAudD0iZCIscC52PVhlKGtbImRhdGUtdmFsdWUiXSksci5jZWxsRGF0ZXN8''@;'; put 'put ''fChwLnQ9Im4iLHAudj1pcihwLnYpKSxwLno9Im0vZC95eSI7YnJlYWs7Y2FzZSJ0aW1lIjpwLnQ9Im4iLHAudj11byhrWyJ0aW1lLXZhbHVlIl0pLzg2NDAwLHIuY2VsbERhdGVzJiYocC50PSJkIixwLnY9bzAocC52KSkscC56PSJISDpNTTpTUyI7YnJlYWs7Y2FzZSJudW1iZXIiOnAudD0i''@;'; put 'put ''biIscC52PXBhcnNlRmxvYXQoay5cdTY1NzBcdTYzNmVcdTY1NzBcdTUwM2MpO2JyZWFrO2RlZmF1bHQ6aWYoInN0cmluZyIhPT1wLnQmJiJ0ZXh0IiE9PXAudCYmcC50KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSAiK3AudCk7cC50PSJzIixudWxsIT1rWyJzdHJp''@;'; put 'put ''bmctdmFsdWUiXSYmKFQ9SWUoa1sic3RyaW5nLXZhbHVlIl0pLE09W10pfX1lbHNle2lmKGo9ITEsInMiPT09cC50JiYocC52PVR8fCIiLE0ubGVuZ3RoJiYocC5SPU0pLGo9MD09ZykseGUuVGFyZ2V0JiYocC5sPXhlKSxDLmxlbmd0aD4wJiYocC5jPUMsQz1bXSksVCYmITEhPT1yLmNlbGxU''@;'; put 'put ''ZXh0JiYocC53PVQpLGomJihwLnQ9InoiLGRlbGV0ZSBwLnYpLCghanx8ci5zaGVldFN0dWJzKSYmIShyLnNoZWV0Um93cyYmci5zaGVldFJvd3M8PUkpKWZvcih2YXIgWT0wO1k8ZGU7KytZKXtpZih1ZT1wYXJzZUludChrWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdfHwiMSIsMTApLHIu''@;'; put 'put ''ZGVuc2UpZm9yKHZbSStZXXx8KHZbSStZXT1bXSksdltJK1ldW3ldPTA9PVk/cDpNZShwKTstLXVlPjA7KXZbSStZXVt5K3VlXT1NZShwKTtlbHNlIGZvcih2W2dlKHtyOkkrWSxjOnl9KV09cDstLXVlPjA7KXZbZ2Uoe3I6SStZLGM6eSt1ZX0pXT1NZShwKTtQLmUuYzw9eSYmKFAuZS5jPXkp''@;'; put 'put ''fXkrPSh1ZT1wYXJzZUludChrWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdfHwiMSIsMTApKS0xLHVlPTAscD17fSxUPSIiLE09W119eGU9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIlx1NzUzNVx1NWI1MFx1ODg2OFx1NjgzY1x1NjU4N1x1''@;'; put 'put ''Njg2MyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSJcdTRlM2JcdTRmNTMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKCIvIj09PXVbMV0pe2lmKChpPW4ucG9wKCkpWzBdIT09dVszXSl0aHJvdyJCYWQgc3Rh''@;'; put 'put ''dGU6ICIraX1lbHNlIi8iIT09dVswXS5jaGFyQXQodVswXS5sZW5ndGgtMikmJm4ucHVzaChbdVszXSwhMF0pO2JyZWFrO2Nhc2UiYW5ub3RhdGlvbiI6aWYoIi8iPT09dVsxXSl7aWYoKGk9bi5wb3AoKSlbMF0hPT11WzNdKXRocm93IkJhZCBzdGF0ZTogIitpO1UudD1ULE0ubGVuZ3RoJiYo''@;'; put 'put ''VS5SPU0pLFUuYT1PLEMucHVzaChVKX1lbHNlIi8iIT09dVswXS5jaGFyQXQodVswXS5sZW5ndGgtMikmJm4ucHVzaChbdVszXSwhMV0pO089IiIsRD0wLFQ9IiIsZz0wLE09W107YnJlYWs7Y2FzZSJjcmVhdG9yIjoiLyI9PT11WzFdP089YS5zbGljZShELHUuaW5kZXgpOkQ9dS5pbmRleCt1''@;'; put 'put ''WzBdLmxlbmd0aDticmVhaztjYXNlIm1ldGEiOmNhc2UiXHU1MTQzXHU2NTcwXHU2MzZlIjpjYXNlInNldHRpbmdzIjpjYXNlImNvbmZpZy1pdGVtLXNldCI6Y2FzZSJjb25maWctaXRlbS1tYXAtaW5kZXhlZCI6Y2FzZSJjb25maWctaXRlbS1tYXAtZW50cnkiOmNhc2UiY29uZmlnLWl0ZW0t''@;'; put 'put ''bWFwLW5hbWVkIjpjYXNlInNoYXBlcyI6Y2FzZSJmcmFtZSI6Y2FzZSJ0ZXh0LWJveCI6Y2FzZSJpbWFnZSI6Y2FzZSJkYXRhLXBpbG90LXRhYmxlcyI6Y2FzZSJsaXN0LXN0eWxlIjpjYXNlImZvcm0iOmNhc2UiZGRlLWxpbmtzIjpjYXNlImV2ZW50LWxpc3RlbmVycyI6Y2FzZSJjaGFydCI6''@;'; put 'put ''aWYoIi8iPT09dVsxXSl7aWYoKGk9bi5wb3AoKSlbMF0hPT11WzNdKXRocm93IkJhZCBzdGF0ZTogIitpfWVsc2UiLyIhPT11WzBdLmNoYXJBdCh1WzBdLmxlbmd0aC0yKSYmbi5wdXNoKFt1WzNdLCExXSk7VD0iIixnPTAsTT1bXTticmVhaztjYXNlInNjaWVudGlmaWMtbnVtYmVyIjpjYXNl''@;'; put 'put ''ImN1cnJlbmN5LXN5bWJvbCI6Y2FzZSJjdXJyZW5jeS1zdHlsZSI6Y2FzZSJzY3JpcHQiOmNhc2UibGlicmFyaWVzIjpjYXNlImF1dG9tYXRpYy1zdHlsZXMiOmNhc2UiZGVmYXVsdC1zdHlsZSI6Y2FzZSJwYWdlLWxheW91dCI6Y2FzZSJzdHlsZSI6Y2FzZSJtYXAiOmNhc2UiZm9udC1mYWNl''@;'; put 'put ''IjpjYXNlInBhcmFncmFwaC1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLXByb3BlcnRpZXMiOmNhc2UidGFibGUtY29sdW1uLXByb3BlcnRpZXMiOmNhc2UidGFibGUtcm93LXByb3BlcnRpZXMiOmNhc2UidGFibGUtY2VsbC1wcm9wZXJ0aWVzIjpjYXNlImZyYWN0aW9uIjpjYXNlImJvb2xlYW4t''@;'; put 'put ''c3R5bGUiOmNhc2UiYm9vbGVhbiI6Y2FzZSJ0ZXh0LXN0eWxlIjpjYXNlInRleHQtY29udGVudCI6Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOmNhc2UiZW1iZWRkZWQtdGV4dCI6Y2FzZSJib2R5IjpjYXNlIlx1NzUzNVx1NWI1MFx1ODg2OFx1NjgzYyI6Y2FzZSJmb3JtcyI6Y2FzZSJ0YWJsZS1j''@;'; put 'put ''b2x1bW4iOmNhc2UidGFibGUtaGVhZGVyLXJvd3MiOmNhc2UidGFibGUtcm93cyI6Y2FzZSJ0YWJsZS1jb2x1bW4tZ3JvdXAiOmNhc2UidGFibGUtaGVhZGVyLWNvbHVtbnMiOmNhc2UidGFibGUtY29sdW1ucyI6Y2FzZSJudWxsLWRhdGUiOmNhc2UiZ3JhcGhpYy1wcm9wZXJ0aWVzIjpjYXNl''@;'; put 'put ''ImNhbGN1bGF0aW9uLXNldHRpbmdzIjpjYXNlIm5hbWVkLWV4cHJlc3Npb25zIjpjYXNlImxhYmVsLXJhbmdlIjpjYXNlImxhYmVsLXJhbmdlcyI6Y2FzZSJuYW1lZC1leHByZXNzaW9uIjpjYXNlInNvcnQiOmNhc2Uic29ydC1ieSI6Y2FzZSJzb3J0LWdyb3VwcyI6Y2FzZSJ0YWIiOmNhc2Ui''@;'; put 'put ''bGluZS1icmVhayI6Y2FzZSJzcGFuIjpjYXNlInMiOmNhc2UiZGF0ZSI6Y2FzZSJvYmplY3QiOmNhc2UidGl0bGUiOmNhc2UiXHU2ODA3XHU5ODk4IjpjYXNlImRlc2MiOmNhc2UiYmluYXJ5LWRhdGEiOmNhc2UidGFibGUtc291cmNlIjpjYXNlInNjZW5hcmlvIjpjYXNlIml0ZXJhdGlvbiI6''@;'; put 'put ''Y2FzZSJjb250ZW50LXZhbGlkYXRpb25zIjpjYXNlImNvbnRlbnQtdmFsaWRhdGlvbiI6Y2FzZSJoZWxwLW1lc3NhZ2UiOmNhc2UiZXJyb3ItbWVzc2FnZSI6Y2FzZSJkYXRhYmFzZS1yYW5nZXMiOmNhc2UiZmlsdGVyIjpjYXNlImZpbHRlci1hbmQiOmNhc2UiZmlsdGVyLW9yIjpjYXNlImZp''@;'; put 'put ''bHRlci1jb25kaXRpb24iOmNhc2UibGlzdC1sZXZlbC1zdHlsZS1idWxsZXQiOmNhc2UibGlzdC1sZXZlbC1zdHlsZS1udW1iZXIiOmNhc2UibGlzdC1sZXZlbC1wcm9wZXJ0aWVzIjpjYXNlInNlbmRlci1maXJzdG5hbWUiOmNhc2Uic2VuZGVyLWxhc3RuYW1lIjpjYXNlInNlbmRlci1pbml0''@;'; put 'put ''aWFscyI6Y2FzZSJzZW5kZXItdGl0bGUiOmNhc2Uic2VuZGVyLXBvc2l0aW9uIjpjYXNlInNlbmRlci1lbWFpbCI6Y2FzZSJzZW5kZXItcGhvbmUtcHJpdmF0ZSI6Y2FzZSJzZW5kZXItZmF4IjpjYXNlInNlbmRlci1jb21wYW55IjpjYXNlInNlbmRlci1waG9uZS13b3JrIjpjYXNlInNlbmRl''@;'; put 'put ''ci1zdHJlZXQiOmNhc2Uic2VuZGVyLWNpdHkiOmNhc2Uic2VuZGVyLXBvc3RhbC1jb2RlIjpjYXNlInNlbmRlci1jb3VudHJ5IjpjYXNlInNlbmRlci1zdGF0ZS1vci1wcm92aW5jZSI6Y2FzZSJhdXRob3ItbmFtZSI6Y2FzZSJhdXRob3ItaW5pdGlhbHMiOmNhc2UiY2hhcHRlciI6Y2FzZSJm''@;'; put 'put ''aWxlLW5hbWUiOmNhc2UidGVtcGxhdGUtbmFtZSI6Y2FzZSJzaGVldC1uYW1lIjpjYXNlImV2ZW50LWxpc3RlbmVyIjpjYXNlImluaXRpYWwtY3JlYXRvciI6Y2FzZSJjcmVhdGlvbi1kYXRlIjpjYXNlInByaW50LWRhdGUiOmNhc2UiZ2VuZXJhdG9yIjpjYXNlImRvY3VtZW50LXN0YXRpc3Rp''@;'; put 'put ''YyI6Y2FzZSJ1c2VyLWRlZmluZWQiOmNhc2UiZWRpdGluZy1kdXJhdGlvbiI6Y2FzZSJlZGl0aW5nLWN5Y2xlcyI6Y2FzZSJjb25maWctaXRlbSI6Y2FzZSJwYWdlLW51bWJlciI6Y2FzZSJwYWdlLWNvdW50IjpjYXNlInRpbWUiOmNhc2UiY2VsbC1yYW5nZS1zb3VyY2UiOmNhc2UiZGV0ZWN0''@;'; put 'put ''aXZlIjpjYXNlIm9wZXJhdGlvbiI6Y2FzZSJoaWdobGlnaHRlZC1yYW5nZSI6Y2FzZSJkYXRhLXBpbG90LXRhYmxlIjpjYXNlInNvdXJjZS1jZWxsLXJhbmdlIjpjYXNlInNvdXJjZS1zZXJ2aWNlIjpjYXNlImRhdGEtcGlsb3QtZmllbGQiOmNhc2UiZGF0YS1waWxvdC1sZXZlbCI6Y2FzZSJk''@;'; put 'put ''YXRhLXBpbG90LXN1YnRvdGFscyI6Y2FzZSJkYXRhLXBpbG90LXN1YnRvdGFsIjpjYXNlImRhdGEtcGlsb3QtbWVtYmVycyI6Y2FzZSJkYXRhLXBpbG90LW1lbWJlciI6Y2FzZSJkYXRhLXBpbG90LWRpc3BsYXktaW5mbyI6Y2FzZSJkYXRhLXBpbG90LXNvcnQtaW5mbyI6Y2FzZSJkYXRhLXBp''@;'; put 'put ''bG90LWxheW91dC1pbmZvIjpjYXNlImRhdGEtcGlsb3QtZmllbGQtcmVmZXJlbmNlIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXBzIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAiOmNhc2UiZGF0YS1waWxvdC1ncm91cC1tZW1iZXIiOmNhc2UicmVjdCI6Y2FzZSJkZGUtY29ubmVjdGlvbi1kZWNscyI6''@;'; put 'put ''Y2FzZSJkZGUtY29ubmVjdGlvbi1kZWNsIjpjYXNlImRkZS1saW5rIjpjYXNlImRkZS1zb3VyY2UiOmNhc2UicHJvcGVydGllcyI6Y2FzZSJwcm9wZXJ0eSI6Y2FzZSJ0YWJsZS1wcm90ZWN0aW9uIjpjYXNlImRhdGEtcGlsb3QtZ3JhbmQtdG90YWwiOmNhc2Uib2ZmaWNlLWRvY3VtZW50LWNv''@;'; put 'put ''bW1vbi1hdHRycyI6YnJlYWs7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UicGVyY2VudGFnZS1zdHlsZSI6Y2FzZSJkYXRlLXN0eWxlIjpjYXNlInRpbWUtc3R5bGUiOmlmKCIvIj09PXVbMV0pe2lmKFZbZi5uYW1lXT1jLChpPW4ucG9wKCkpWzBdIT09dVszXSl0aHJvdyJCYWQgc3RhdGU6ICIr''@;'; put 'put ''aX1lbHNlIi8iIT09dVswXS5jaGFyQXQodVswXS5sZW5ndGgtMikmJihjPSIiLGY9bWUodVswXSwhMSksbi5wdXNoKFt1WzNdLCEwXSkpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImRheSI6Y2FzZSJtb250aCI6Y2FzZSJ5ZWFyIjpjYXNlImVyYSI6Y2FzZSJkYXktb2Ytd2VlayI6Y2FzZSJ3''@;'; put 'put ''ZWVrLW9mLXllYXIiOmNhc2UicXVhcnRlciI6Y2FzZSJob3VycyI6Y2FzZSJtaW51dGVzIjpjYXNlInNlY29uZHMiOmNhc2UiYW0tcG0iOnN3aXRjaChuW24ubGVuZ3RoLTFdWzBdKXtjYXNlInRpbWUtc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6cz1tZSh1WzBdLCExKSxjKz1pY1t1WzNdXVsi''@;'; put 'put ''bG9uZyI9PT1zLnN0eWxlPzE6MF19YnJlYWs7Y2FzZSJ0ZXh0IjppZigiLz4iPT09dVswXS5zbGljZSgtMikpYnJlYWs7aWYoIi8iPT09dVsxXSlzd2l0Y2gobltuLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpjKz1h''@;'; put 'put ''LnNsaWNlKG8sdS5pbmRleCl9ZWxzZSBvPXUuaW5kZXgrdVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5nZSI6Sz1ibigocz1tZSh1WzBdLCExKSlbImNlbGwtcmFuZ2UtYWRkcmVzcyJdKTt2YXIgRWU9e05hbWU6cy5uYW1lLFJlZjpLWzBdKyIhIitLWzFdfTtzZSYmKEVlLlNoZWV0''@;'; put 'put ''PWQubGVuZ3RoKSxjZS5OYW1lcy5wdXNoKEVlKTticmVhaztjYXNlInAiOmNhc2UiXHU2NTg3XHU2NzJjXHU0ZTMyIjppZihbIm1hc3Rlci1zdHlsZXMiXS5pbmRleE9mKG5bbi5sZW5ndGgtMV1bMF0pPi0xKWJyZWFrO2lmKCIvIiE9PXVbMV18fGsmJmtbInN0cmluZy12YWx1ZSJdKW1lKHVb''@;'; put 'put ''MF0sITEpLGc9dS5pbmRleCt1WzBdLmxlbmd0aDtlbHNle3ZhciBBPVJtKGEuc2xpY2UoZyx1LmluZGV4KSk7VD0oVC5sZW5ndGg+MD9UKyJcbiI6IiIpK0FbMF19YnJlYWs7Y2FzZSJkYXRhYmFzZS1yYW5nZSI6aWYoIi8iPT09dVsxXSlicmVhazt0cnl7eFsoSz1ibihtZSh1WzBdKVsidGFy''@;'; put 'put ''Z2V0LXJhbmdlLWFkZHJlc3MiXSkpWzBdXVsiIWF1dG9maWx0ZXIiXT17cmVmOktbMV19fWNhdGNoe31icmVhaztjYXNlImEiOmlmKCIvIiE9PXVbMV0pe2lmKCEoeGU9bWUodVswXSwhMSkpLmhyZWYpYnJlYWs7eGUuVGFyZ2V0PUllKHhlLmhyZWYpLGRlbGV0ZSB4ZS5ocmVmLCIjIj09eGUu''@;'; put 'put ''VGFyZ2V0LmNoYXJBdCgwKSYmeGUuVGFyZ2V0LmluZGV4T2YoIi4iKT4tMT8oSz1ibih4ZS5UYXJnZXQuc2xpY2UoMSkpLHhlLlRhcmdldD0iIyIrS1swXSsiISIrS1sxXSk6eGUuVGFyZ2V0Lm1hdGNoKC9eXC5cLltcXFwvXS8pJiYoeGUuVGFyZ2V0PXhlLlRhcmdldC5zbGljZSgzKSl9YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDpzd2l0Y2godVsyXSl7Y2FzZSJkYzoiOmNhc2UiY2FsY2V4dDoiOmNhc2UibG9leHQ6IjpjYXNlIm9vbzoiOmNhc2UiY2hhcnRvb286IjpjYXNlImRyYXc6IjpjYXNlInN0eWxlOiI6Y2FzZSJjaGFydDoiOmNhc2UiZm9ybToiOmNhc2UidW9mOiI6Y2FzZSJcdTg4Njg6Ijpj''@;'; put 'put ''YXNlIlx1NWI1NzoiOmJyZWFrO2RlZmF1bHQ6aWYoci5XVEYpdGhyb3cgbmV3IEVycm9yKHUpfX12YXIgUGU9e1NoZWV0czp4LFNoZWV0TmFtZXM6ZCxXb3JrYm9vazpjZX07cmV0dXJuIHIuYm9va1NoZWV0cyYmZGVsZXRlIFBlLlNoZWV0cyxQZX1mdW5jdGlvbiBjYyhlLHQpe3JldHVybiBz''@;'; put 'put ''YyhlLHQpfWZ1bmN0aW9uIEp0KGUpe3JldHVybiBuZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCl9ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIHR5cGVvZiBUZXh0RGVjb2RlcjwidSI/KG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKGUpOkJlKHd0KGUpKX1mdW5j''@;'; put 'put ''dGlvbiBEdChlKXt2YXIgdD1lLnJlZHVjZShmdW5jdGlvbihuLGkpe3JldHVybiBuK2kubGVuZ3RofSwwKSxyPW5ldyBVaW50OEFycmF5KHQpLGE9MDtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Iuc2V0KG4sYSksYSs9bi5sZW5ndGh9KSxyfWZ1bmN0aW9uIHVjKGUpe3JldHVybiAx''@;'; put 'put ''Njg0MzAwOSooKGU9KDg1ODk5MzQ1OSYoZS09ZT4+MSYxNDMxNjU1NzY1KSkrKGU+PjImODU4OTkzNDU5KSkrKGU+PjQpJjI1MjY0NTEzNSk+Pj4yNH1mdW5jdGlvbiBLYShlLHQpe3ZhciByPXQ/dFswXTowLGE9MTI3JmVbcl07ZTppZihlW3IrK10+PTEyOCYmKGF8PSgxMjcmZVtyXSk8PDcs''@;'; put 'put ''ZVtyKytdPDEyOHx8KGF8PSgxMjcmZVtyXSk8PDE0LGVbcisrXTwxMjgpfHwoYXw9KDEyNyZlW3JdKTw8MjEsZVtyKytdPDEyOCl8fChhKz0oMTI3JmVbcl0pKk1hdGgucG93KDIsMjgpLCsrcixlW3IrK108MTI4KXx8KGErPSgxMjcmZVtyXSkqTWF0aC5wb3coMiwzNSksKytyLGVbcisrXTwx''@;'; put 'put ''MjgpfHwoYSs9KDEyNyZlW3JdKSpNYXRoLnBvdygyLDQyKSwrK3IsZVtyKytdPDEyOCkpKWJyZWFrIGU7cmV0dXJuIHQmJih0WzBdPXIpLGF9ZnVuY3Rpb24gWWUoZSl7dmFyIHQ9MCxyPTEyNyZlW3RdO2U6aWYoZVt0KytdPj0xMjgpe2lmKHJ8PSgxMjcmZVt0XSk8PDcsZVt0KytdPDEyOHx8''@;'; put 'put ''KHJ8PSgxMjcmZVt0XSk8PDE0LGVbdCsrXTwxMjgpfHwocnw9KDEyNyZlW3RdKTw8MjEsZVt0KytdPDEyOCkpYnJlYWsgZTtyfD0oMTI3JmVbdF0pPDwyOH1yZXR1cm4gcn1mdW5jdGlvbiBSZShlKXtmb3IodmFyIHQ9W10scj1bMF07clswXTxlLmxlbmd0aDspe3ZhciBmLGE9clswXSxuPUth''@;'; put 'put ''KGUsciksaT03Jm4scz0wO2lmKDA9PShuPU1hdGguZmxvb3Iobi84KSkpYnJlYWs7c3dpdGNoKGkpe2Nhc2UgMDpmb3IodmFyIGM9clswXTtlW3JbMF0rK10+PTEyODspO2Y9ZS5zbGljZShjLHJbMF0pO2JyZWFrO2Nhc2UgNTpmPWUuc2xpY2UoclswXSxyWzBdKyhzPTQpKSxyWzBdKz1zO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMTpmPWUuc2xpY2UoclswXSxyWzBdKyhzPTgpKSxyWzBdKz1zO2JyZWFrO2Nhc2UgMjpzPUthKGUsciksZj1lLnNsaWNlKHJbMF0sclswXStzKSxyWzBdKz1zO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQQiBUeXBlICIuY29uY2F0KGksIiBmb3IgRmllbGQgIiku''@;'; put 'put ''Y29uY2F0KG4sIiBhdCBvZmZzZXQgIikuY29uY2F0KGEpKX12YXIgbz17ZGF0YTpmLHR5cGU6aX07bnVsbD09dFtuXT90W25dPVtvXTp0W25dLnB1c2gobyl9cmV0dXJuIHR9ZnVuY3Rpb24gVm4oZSx0KXtyZXR1cm4gZT8ubWFwKGZ1bmN0aW9uKHIpe3JldHVybiB0KHIuZGF0YSl9KXx8W119''@;'; put 'put ''ZnVuY3Rpb24gTW0oZSx0KXtpZigwIT1lKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTbmFwcHkgY2h1bmsgdHlwZSAiLmNvbmNhdChlKSk7Zm9yKHZhciByPVswXSxhPUthKHQsciksbj1bXTtyWzBdPHQubGVuZ3RoOyl7dmFyIGk9MyZ0W3JbMF1dO2lmKDAhPWkpe3ZhciBjPTAsbz0w''@;'; put 'put ''O2lmKDE9PWk/KG89NCsodFtyWzBdXT4+MiY3KSxjPSgyMjQmdFtyWzBdKytdKTw8MyxjfD10W3JbMF0rK10pOihvPTErKHRbclswXSsrXT4+MiksMj09aT8oYz10W3JbMF1dfHRbclswXSsxXTw8OCxyWzBdKz0yKTooYz0odFtyWzBdXXx0W3JbMF0rMV08PDh8dFtyWzBdKzJdPDwxNnx0W3Jb''@;'; put 'put ''MF0rM108PDI0KT4+PjAsclswXSs9NCkpLG49W0R0KG4pXSwwPT1jKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBvZmZzZXQgMCIpO2lmKGM+blswXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG9mZnNldCBiZXlvbmQgbGVuZ3RoIik7aWYobz49Yylmb3Iobi5wdXNoKG5bMF0u''@;'; put 'put ''c2xpY2UoLWMpKSxvLT1jO28+PW5bbi5sZW5ndGgtMV0ubGVuZ3RoOyluLnB1c2gobltuLmxlbmd0aC0xXSksby09bltuLmxlbmd0aC0xXS5sZW5ndGg7bi5wdXNoKG5bMF0uc2xpY2UoLWMsLWMrbykpfWVsc2V7dmFyIHM9dFtyWzBdKytdPj4yO2lmKHM8NjApKytzO2Vsc2V7dmFyIGY9cy01''@;'; put 'put ''OTtzPXRbclswXV0sZj4xJiYoc3w9dFtyWzBdKzFdPDw4KSxmPjImJihzfD10W3JbMF0rMl08PDE2KSxmPjMmJihzfD10W3JbMF0rM108PDI0KSxzPj4+PTAscysrLHJbMF0rPWZ9bi5wdXNoKHQuc2xpY2UoclswXSxyWzBdK3MpKSxyWzBdKz1zfX12YXIgbD1EdChuKTtpZihsLmxlbmd0aCE9''@;'; put 'put ''YSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgbGVuZ3RoOiAiLmNvbmNhdChsLmxlbmd0aCwiICE9ICIpLmNvbmNhdChhKSk7cmV0dXJuIGx9ZnVuY3Rpb24gSG0oZSx0LHIpe3N3aXRjaChlWzBdKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uIFVtKGUs''@;'; put 'put ''dCxyLGEpe3ZhciBoLG49SnQoZSksaT1uLmdldFVpbnQzMig0LCEwKSxzPShhPjE/MTI6OCkrNCp1YyhpJihhPjE/MzQ3MDozOTgpKSxmPS0xLGM9LTEsbz1OYU4sbD1uZXcgRGF0ZSgyMDAxLDAsMSk7c3dpdGNoKDUxMiZpJiYoZj1uLmdldFVpbnQzMihzLCEwKSxzKz00KSxzKz00KnVjKGkm''@;'; put 'put ''KGE+MT8xMjI4ODo0MDk2KSksMTYmaSYmKGM9bi5nZXRVaW50MzIocywhMCkscys9NCksMzImaSYmKG89bi5nZXRGbG9hdDY0KHMsITApLHMrPTgpLDY0JmkmJihsLnNldFRpbWUobC5nZXRUaW1lKCkrMWUzKm4uZ2V0RmxvYXQ2NChzLCEwKSkscys9OCksZVsyXSl7Y2FzZSAwOmJyZWFrO2Nh''@;'; put 'put ''c2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OnRbY119O2JyZWFrO2Nhc2UgNTpoPXt0OiJkIix2Omx9O2JyZWFrO2Nhc2UgNjpoPXt0OiJiIix2Om8+MH07YnJlYWs7Y2FzZSA3Omg9e3Q6Im4iLHY6by84NjQwMH07YnJlYWs7Y2FzZSA4Omg9e3Q6ImUiLHY6MH07''@;'; put 'put ''YnJlYWs7Y2FzZSA5OmlmKGY+LTEpaD17dDoicyIsdjpyW2ZdfTtlbHNlIGlmKGM+LTEpaD17dDoicyIsdjp0W2NdfTtlbHNle2lmKGlzTmFOKG8pKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlICIuY29uY2F0KGUuc2xpY2UoMCw0KSkpO2g9e3Q6Im4iLHY6b319YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSAiLmNvbmNhdChlLnNsaWNlKDAsNCkpKX1yZXR1cm4gaH0oZSx0LHIsZVswXSk7Y2FzZSA1OnJldHVybiBmdW5jdGlvbiBXbShlLHQscil7dmFyIGgsYT1KdChlKSxuPWEuZ2V0VWludDMyKDgsITApLGk9''@;'; put 'put ''MTIscz0tMSxmPS0xLGM9TmFOLG89TmFOLGw9bmV3IERhdGUoMjAwMSwwLDEpO3N3aXRjaCgxJm4mJihjPWZ1bmN0aW9uIExtKGUsdCl7Zm9yKHZhciByPSgxMjcmZVt0KzE1XSk8PDd8ZVt0KzE0XT4+MSxhPTEmZVt0KzE0XSxuPXQrMTM7bj49dDstLW4pYT0yNTYqYStlW25dO3JldHVybigx''@;'; put 'put ''MjgmZVt0KzE1XT8tYTphKSpNYXRoLnBvdygxMCxyLTYxNzYpfShlLGkpLGkrPTE2KSwyJm4mJihvPWEuZ2V0RmxvYXQ2NChpLCEwKSxpKz04KSw0Jm4mJihsLnNldFRpbWUobC5nZXRUaW1lKCkrMWUzKmEuZ2V0RmxvYXQ2NChpLCEwKSksaSs9OCksOCZuJiYoZj1hLmdldFVpbnQzMihpLCEw''@;'; put 'put ''KSxpKz00KSwxNiZuJiYocz1hLmdldFVpbnQzMihpLCEwKSxpKz00KSxlWzFdKXtjYXNlIDA6YnJlYWs7Y2FzZSAyOmNhc2UgMTA6aD17dDoibiIsdjpjfTticmVhaztjYXNlIDM6aD17dDoicyIsdjp0W2ZdfTticmVhaztjYXNlIDU6aD17dDoiZCIsdjpsfTticmVhaztjYXNlIDY6aD17dDoi''@;'; put 'put ''YiIsdjpvPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Om8vODY0MDB9O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZighKHM+LTEpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlICIuY29uY2F0KGVbMV0sIiA6ICIpLmNvbmNhdCgzMSZu''@;'; put 'put ''LCIgOiAiKS5jb25jYXQoZS5zbGljZSgwLDQpKSk7aD17dDoicyIsdjpyW3NdfTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlICIuY29uY2F0KGVbMV0sIiA6ICIpLmNvbmNhdCgzMSZuLCIgOiAiKS5jb25jYXQoZS5zbGljZSgwLDQpKSl9cmV0''@;'; put 'put ''dXJuIGh9KGUsdCxyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgcGF5bG9hZCB2ZXJzaW9uICIuY29uY2F0KGVbMF0pKX19ZnVuY3Rpb24gRXIoZSl7cmV0dXJuIEthKFJlKGUpWzFdWzBdLmRhdGEpfWZ1bmN0aW9uIGhjKGUsdCl7dmFyIHI9UmUodC5kYXRhKSxhPVll''@;'; put 'put ''KHJbMV1bMF0uZGF0YSksaT1bXTtyZXR1cm4oclszXXx8W10pLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGY9UmUocy5kYXRhKSxjPVllKGZbMV1bMF0uZGF0YSk+Pj4wO3N3aXRjaChhKXtjYXNlIDE6aVtjXT1IbihmWzNdWzBdLmRhdGEpO2JyZWFrO2Nhc2UgODp2YXIgbD1SZShlW0VyKGZb''@;'; put 'put ''OV1bMF0uZGF0YSldWzBdLmRhdGEpLGg9ZVtFcihsWzFdWzBdLmRhdGEpXVswXSx4PVllKGgubWV0YVsxXVswXS5kYXRhKTtpZigyMDAxIT14KXRocm93IG5ldyBFcnJvcigiMjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdCh4KSk7dmFyIGQ9UmUoaC5kYXRhKTtpW2NdPWRb''@;'; put 'put ''M10ubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBIbih2LmRhdGEpfSkuam9pbigiIil9fSksaX1mdW5jdGlvbiB6bShlLHQpe3ZhciBhPXsiIXJlZiI6IkExIn0sbj1lW0VyKFJlKHQuZGF0YSlbMl1bMF0uZGF0YSldLGk9WWUoblswXS5tZXRhWzFdWzBdLmRhdGEpO2lmKDYwMDEhPWkpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCI2MDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvICIuY29uY2F0KGkpKTtyZXR1cm4gZnVuY3Rpb24gR20oZSx0LHIpe3ZhciBhLG49UmUodC5kYXRhKSxpPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX07aWYoaS5lLnI9KFllKG5bNl1bMF0uZGF0YSk+Pj4wKS0xLGkuZS5y''@;'; put 'put ''PDApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdyB2YXJpbnQgIi5jb25jYXQobls2XVswXS5kYXRhKSk7aWYoaS5lLmM9KFllKG5bN11bMF0uZGF0YSk+Pj4wKS0xLGkuZS5jPDApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbCB2YXJpbnQgIi5jb25jYXQobls3XVswXS5kYXRhKSk7''@;'; put 'put ''clsiIXJlZiJdPXdlKGkpO3ZhciBzPVJlKG5bNF1bMF0uZGF0YSksZj1oYyhlLGVbRXIoc1s0XVswXS5kYXRhKV1bMF0pLGM9bnVsbCE9KGE9c1sxN10pJiZhWzBdP2hjKGUsZVtFcihzWzE3XVswXS5kYXRhKV1bMF0pOltdLG89UmUoc1szXVswXS5kYXRhKSxsPTA7b1sxXS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKGgpe3ZhciB4PVJlKGguZGF0YSksZD1lW0VyKHhbMl1bMF0uZGF0YSldWzBdLHY9WWUoZC5tZXRhWzFdWzBdLmRhdGEpO2lmKDYwMDIhPXYpdGhyb3cgbmV3IEVycm9yKCI2MDAxIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvICIuY29uY2F0KHYpKTt2YXIgdT1mdW5jdGlvbiBYbShl''@;'; put 'put ''LHQpe3ZhciByLGE9UmUodC5kYXRhKSxuPW51bGwhPShyPWE/Lls3XSkmJnJbMF0/WWUoYVs3XVswXS5kYXRhKT4+PjA+MD8xOjA6LTEsaT1WbihhWzVdLGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbiBWbShlLHQpe3ZhciByLGEsbixpLHMsZixjLG8sbCxoLHgsZCx2LHUsTixNLHA9UmUo''@;'; put 'put ''ZSksaz1ZZShwWzFdWzBdLmRhdGEpPj4+MCxUPVllKHBbMl1bMF0uZGF0YSk+Pj4wLGc9KG51bGw9PShhPW51bGw9PShyPXBbOF0pP3ZvaWQgMDpyWzBdKT92b2lkIDA6YS5kYXRhKSYmWWUocFs4XVswXS5kYXRhKT4wfHwhMTtpZihudWxsIT0oaT1udWxsPT0obj1wWzddKT92b2lkIDA6blsw''@;'; put 'put ''XSkmJmkuZGF0YSYmMCE9dClOPW51bGw9PShmPW51bGw9PShzPXBbN10pP3ZvaWQgMDpzWzBdKT92b2lkIDA6Zi5kYXRhLE09bnVsbD09KG89bnVsbD09KGM9cFs2XSk/dm9pZCAwOmNbMF0pP3ZvaWQgMDpvLmRhdGE7ZWxzZXtpZihudWxsPT0oaD1udWxsPT0obD1wWzRdKT92b2lkIDA6bFsw''@;'; put 'put ''XSl8fCFoLmRhdGF8fDE9PXQpdGhyb3ciTlVNQkVSUyBUaWxlIG1pc3NpbmcgIi5jb25jYXQodCwiIGNlbGwgc3RvcmFnZSIpO049bnVsbD09KGQ9bnVsbD09KHg9cFs0XSk/dm9pZCAwOnhbMF0pP3ZvaWQgMDpkLmRhdGEsTT1udWxsPT0odT1udWxsPT0odj1wWzNdKT92b2lkIDA6dlswXSk/''@;'; put 'put ''dm9pZCAwOnUuZGF0YX1mb3IodmFyIEk9Zz80OjEseT1KdChOKSxQPVtdLFI9MDtSPE4ubGVuZ3RoLzI7KytSKXt2YXIgVj15LmdldFVpbnQxNigyKlIsITApO1Y8NjU1MzUmJlAucHVzaChbUixWXSl9aWYoUC5sZW5ndGghPVQpdGhyb3ciRXhwZWN0ZWQgIi5jb25jYXQoVCwiIGNlbGxzLCBm''@;'; put 'put ''b3VuZCAiKS5jb25jYXQoUC5sZW5ndGgpO3ZhciBYPVtdO2ZvcihSPTA7UjxQLmxlbmd0aC0xOysrUilYW1BbUl1bMF1dPU0uc3ViYXJyYXkoUFtSXVsxXSpJLFBbUisxXVsxXSpJKTtyZXR1cm4gUC5sZW5ndGg+PTEmJihYW1BbUC5sZW5ndGgtMV1bMF1dPU0uc3ViYXJyYXkoUFtQLmxlbmd0''@;'; put 'put ''aC0xXVsxXSpJKSkse1I6ayxjZWxsczpYfX0ocyxuKX0pO3JldHVybntucm93czpZZShhWzRdWzBdLmRhdGEpPj4+MCxkYXRhOmkucmVkdWNlKGZ1bmN0aW9uKHMsZil7cmV0dXJuIHNbZi5SXXx8KHNbZi5SXT1bXSksZi5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7aWYoc1tmLlJdW29d''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiRHVwbGljYXRlIGNlbGwgcj0iLmNvbmNhdChmLlIsIiBjPSIpLmNvbmNhdChvKSk7c1tmLlJdW29dPWN9KSxzfSxbXSl9fSgwLGQpO3UuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHAsayl7cC5mb3JFYWNoKGZ1bmN0aW9uKFQsZyl7dmFyIE49Z2Uoe3I6bCtrLGM6''@;'; put 'put ''Z30pLE09SG0oVCxmLGMpO00mJihyW05dPU0pfSl9KSxsKz11Lm5yb3dzfSl9KGUsblswXSxhKSxhfWZ1bmN0aW9uIHpuKGUpe3ZhciB0LHIsYSxuLGk9e30scz1bXTtpZihlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMubWF0Y2goL1wuaXdwdjIvKSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb24iKX0pLGUuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYy5uYW1lLm1hdGNoKC9cLml3YSQvKSl7dmFyIG8sbDt0cnl7bz1mdW5jdGlvbiB6cihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KXt2YXIgYT1l''@;'; put 'put ''W3IrK10sbj1lW3JdfGVbcisxXTw8OHxlW3IrMl08PDE2O3QucHVzaChNbShhLGUuc2xpY2Uocis9MyxyK24pKSkscis9bn1pZihyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJkYXRhIGlzIG5vdCBhIHZhbGlkIGZyYW1lZCBzdHJlYW0hIik7cmV0dXJuIER0KHQpfShjLmNvbnRlbnQp''@;'; put 'put ''fWNhdGNoKGgpe3JldHVybiBjb25zb2xlLmxvZygiPz8gIitjLmNvbnRlbnQubGVuZ3RoKyIgIisoaC5tZXNzYWdlfHxoKSl9dHJ5e2w9ZnVuY3Rpb24gR3IoZSl7Zm9yKHZhciB0LHI9W10sYT1bMF07YVswXTxlLmxlbmd0aDspe3ZhciBuPUthKGUsYSksaT1SZShlLnNsaWNlKGFbMF0sYVsw''@;'; put 'put ''XStuKSk7YVswXSs9bjt2YXIgcz17aWQ6WWUoaVsxXVswXS5kYXRhKSxtZXNzYWdlczpbXX07aVsyXS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBjPVJlKGYuZGF0YSksbz1ZZShjWzNdWzBdLmRhdGEpO3MubWVzc2FnZXMucHVzaCh7bWV0YTpjLGRhdGE6ZS5zbGljZShhWzBdLGFbMF0rbyl9''@;'; put 'put ''KSxhWzBdKz1vfSksbnVsbCE9KHQ9aVszXSkmJnRbMF0mJihzLm1lcmdlPVllKGlbM11bMF0uZGF0YSk+Pj4wPjApLHIucHVzaChzKX1yZXR1cm4gcn0obyl9Y2F0Y2goaCl7cmV0dXJuIGNvbnNvbGUubG9nKCIjIyAiKyhoLm1lc3NhZ2V8fGgpKX1sLmZvckVhY2goZnVuY3Rpb24oaCl7aVto''@;'; put 'put ''LmlkXT1oLm1lc3NhZ2VzLHMucHVzaChoLmlkKX0pfX0pLCFzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaGFzIG5vIG1lc3NhZ2VzIik7dmFyIGY9KG51bGw9PShuPW51bGw9PShhPW51bGw9PShyPW51bGw9PSh0PWk/LlsxXSk/dm9pZCAwOnRbMF0pP3ZvaWQgMDpyLm1ldGEpP3Zv''@;'; put 'put ''aWQgMDphWzFdKT92b2lkIDA6blswXS5kYXRhKSYmMT09WWUoaVsxXVswXS5tZXRhWzFdWzBdLmRhdGEpJiZpWzFdWzBdO2lmKGZ8fHMuZm9yRWFjaChmdW5jdGlvbihjKXtpW2NdLmZvckVhY2goZnVuY3Rpb24obyl7aWYoMT09WWUoby5tZXRhWzFdWzBdLmRhdGEpPj4+MCl7aWYoZil0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIkRvY3VtZW50IGhhcyBtdWx0aXBsZSByb290cyIpO2Y9b319KX0pLCFmKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgRG9jdW1lbnQgcm9vdCIpO3JldHVybiBmdW5jdGlvbiBqbShlLHQpe3ZhciByPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX07aWYoVm4oUmUo''@;'; put 'put ''dC5kYXRhKVsxXSxFcikuZm9yRWFjaChmdW5jdGlvbihpKXtlW2ldLmZvckVhY2goZnVuY3Rpb24ocyl7aWYoMj09WWUocy5tZXRhWzFdWzBdLmRhdGEpKXt2YXIgYz1mdW5jdGlvbiAkbShlLHQpe3ZhciByLGE9UmUodC5kYXRhKSxuPXtuYW1lOm51bGwhPShyPWFbMV0pJiZyWzBdP0huKGFb''@;'; put 'put ''MV1bMF0uZGF0YSk6IiIsc2hlZXRzOltdfTtyZXR1cm4gVm4oYVsyXSxFcikuZm9yRWFjaChmdW5jdGlvbihzKXtlW3NdLmZvckVhY2goZnVuY3Rpb24oZil7NmUzPT1ZZShmLm1ldGFbMV1bMF0uZGF0YSkmJm4uc2hlZXRzLnB1c2goem0oZSxmKSl9KX0pLG59KGUscyk7Yy5zaGVldHMuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihvLGwpe2VpKHIsbywwPT1sP2MubmFtZTpjLm5hbWUrIl8iK2wsITApfSl9fSl9KSwwPT1yLlNoZWV0TmFtZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRW1wdHkgTlVNQkVSUyBmaWxlIik7cmV0dXJuIHJ9KGksZil9ZnVuY3Rpb24gJG4oZSl7IWZ1bmN0aW9uIHhj''@;'; put 'put ''KGUpe3JldHVybiBmdW5jdGlvbihyKXtmb3IodmFyIGE9MDthIT1lLmxlbmd0aDsrK2Epe3ZhciBuPWVbYV07dm9pZCAwPT09cltuWzBdXSYmKHJbblswXV09blsxXSksIm4iPT09blsyXSYmKHJbblswXV09TnVtYmVyKHJbblswXV0pKX19fShbWyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwh''@;'; put 'put ''MF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRSb3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJi''@;'; put 'put ''b29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKGUpfWZ1bmN0aW9uIEptKGUpe3JldHVybiBrZS5XUy5pbmRleE9mKGUpPi0xPyJzaGVldCI6a2UuQ1MmJmU9PWtlLkNTPyJjaGFydCI6a2UuRFMmJmU9PWtlLkRTPyJkaWFsb2ciOmtlLk1T''@;'; put 'put ''JiZlPT1rZS5NUz8ibWFjcm8iOmUmJmUubGVuZ3RoP2U6InNoZWV0In1mdW5jdGlvbiBabShlLHQscixhLG4saSxzLGYsYyxvLGwsaCl7dHJ5e2lbYV09SWEoTnIoZSxyLCEwKSx0KTt2YXIgZCx4PVFlKGUsdCk7c3dpdGNoKGYpe2Nhc2Uic2hlZXQiOmQ9U3AoeCx0LG4sYyxpW2FdLG8sbCxo''@;'; put 'put ''KTticmVhaztjYXNlImNoYXJ0IjppZighKGQ9ZnVuY3Rpb24gRnAoZSx0LHIsYSxuLGkscyxmKXtyZXR1cm4iLmJpbiI9PT10LnNsaWNlKC00KT9mdW5jdGlvbiBycChlLHQscixhLG4pe2lmKCFlKXJldHVybiBlO2F8fChhPXsiIWlkIjp7fX0pO3ZhciBpPXsiIXR5cGUiOiJjaGFydCIsIiFk''@;'; put 'put ''cmF3ZWwiOm51bGwsIiFyZWwiOiIifSxzPVtdLGY9ITE7cmV0dXJuIGh0KGUsZnVuY3Rpb24obyxsLGgpe3N3aXRjaChoKXtjYXNlIDU1MDppWyIhcmVsIl09bzticmVhaztjYXNlIDY1MTpuLlNoZWV0c1tyXXx8KG4uU2hlZXRzW3JdPXt9KSxvLm5hbWUmJihuLlNoZWV0c1tyXS5Db2RlTmFt''@;'; put 'put ''ZT1vLm5hbWUpO2JyZWFrO2Nhc2UgNTYyOmNhc2UgNjUyOmNhc2UgNjY5OmNhc2UgNjc5OmNhc2UgNTUxOmNhc2UgNTUyOmNhc2UgNDc2OmNhc2UgMzA3MjpicmVhaztjYXNlIDM1OmY9ITA7YnJlYWs7Y2FzZSAzNjpmPSExO2JyZWFrO2Nhc2UgMzc6cy5wdXNoKGgpO2JyZWFrO2Nhc2UgMzg6''@;'; put 'put ''cy5wb3AoKTticmVhaztkZWZhdWx0OmlmKGwuVD4wKXMucHVzaChoKTtlbHNlIGlmKGwuVDwwKXMucG9wKCk7ZWxzZSBpZighZnx8dC5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIraC50b1N0cmluZygxNikpfX0sdCksYVsiIWlkIl1baVsiIXJlbCJdXSYmKGlb''@;'; put 'put ''IiFkcmF3ZWwiXT1hWyIhaWQiXVtpWyIhcmVsIl1dKSxpfShlLGEscixuLGkpOmZ1bmN0aW9uIFoyKGUsdCxyLGEsbil7aWYoIWUpcmV0dXJuIGU7YXx8KGE9eyIhaWQiOnt9fSk7dmFyIHMsaT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sZj1lLm1hdGNoKFBm''@;'; put 'put ''KTtyZXR1cm4gZiYmTG4oZlswXSwwLG4sciksKHM9ZS5tYXRjaCgvZHJhd2luZyByOmlkPSIoLio/KSIvKSkmJihpWyIhcmVsIl09c1sxXSksYVsiIWlkIl1baVsiIXJlbCJdXSYmKGlbIiFkcmF3ZWwiXT1hWyIhaWQiXVtpWyIhcmVsIl1dKSxpfShlLDAscixuLGkpfSh4LHQsbixjLGlbYV0s''@;'; put 'put ''bykpfHwhZFsiIWRyYXdlbCJdKWJyZWFrO3ZhciB2PVNhKGRbIiFkcmF3ZWwiXS5UYXJnZXQsdCksdT1PYSh2KSxwPWZ1bmN0aW9uIGh4KGUsdCl7aWYoIWUpcmV0dXJuIj8/Ijt2YXIgcj0oZS5tYXRjaCgvPGM6Y2hhcnQgW14+XSpyOmlkPSIoW14iXSopIi8pfHxbIiIsIiJdKVsxXTtyZXR1''@;'; put 'put ''cm4gdFsiIWlkIl1bcl0uVGFyZ2V0fShOcihlLHYsITApLElhKE5yKGUsdSwhMCksdikpLGs9U2EocCx2KSxUPU9hKGspO2Q9ZnVuY3Rpb24gcTIoZSx0LHIsYSxuLGkpe3ZhciBzPWl8fHsiIXR5cGUiOiJjaGFydCJ9O2lmKCFlKXJldHVybiBpO3ZhciBmPTAsYz0wLG89IkEiLGw9e3M6e3I6''@;'; put 'put ''MmU2LGM6MmU2fSxlOntyOjAsYzowfX07cmV0dXJuKGUubWF0Y2goLzxjOm51bUNhY2hlPltcc1xTXSo/PFwvYzpudW1DYWNoZT4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgeD1mdW5jdGlvbiBKMihlKXt2YXIgYSx0PVtdLHI9ZS5tYXRjaCgvXjxjOm51bUNhY2hlPi8pOyhl''@;'; put 'put ''Lm1hdGNoKC88YzpwdCBpZHg9IihcZCopIj4oLio/KTxcL2M6cHQ+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIHM9aS5tYXRjaCgvPGM6cHQgaWR4PSIoXGQqPykiPjxjOnY+KC4qKTxcL2M6dj48XC9jOnB0Pi8pO3MmJih0WytzWzFdXT1yPytzWzJdOnNbMl0pfSk7dmFyIG49''@;'; put 'put ''SWUoKGUubWF0Y2goLzxjOmZvcm1hdENvZGU+KFtcc1xTXSo/KTxcL2M6Zm9ybWF0Q29kZT4vKXx8WyIiLCJHZW5lcmFsIl0pWzFdKTtyZXR1cm4oZS5tYXRjaCgvPGM6Zj4oLio/KTxcL2M6Zj4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihpKXthPWkucmVwbGFjZSgvPC4qPz4vZywiIil9''@;'; put 'put ''KSxbdCxuLGFdfShoKTtsLnMucj1sLnMuYz0wLGwuZS5jPWYsbz1IZShmKSx4WzBdLmZvckVhY2goZnVuY3Rpb24oZCx2KXtzW28rS2UodildPXt0OiJuIix2OmQsejp4WzFdfSxjPXZ9KSxsLmUucjxjJiYobC5lLnI9YyksKytmfSksZj4wJiYoc1siIXJlZiJdPXdlKGwpKSxzfShOcihlLGss''@;'; put 'put ''ITApLDAsMCxJYShOcihlLFQsITApLGspLDAsZCk7YnJlYWs7Y2FzZSJtYWNybyI6ZD1mdW5jdGlvbiB5cChlLHQscixhLG4saSxzLGYpe3JldHVybiB0LnNsaWNlKC00KSx7IiF0eXBlIjoibWFjcm8ifX0oMCx0KTticmVhaztjYXNlImRpYWxvZyI6ZD1mdW5jdGlvbiBBcChlLHQscixhLG4s''@;'; put 'put ''aSxzLGYpe3JldHVybiB0LnNsaWNlKC00KSx7IiF0eXBlIjoiZGlhbG9nIn19KDAsdCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrZil9c1thXT1kO3ZhciBnPVtdO2kmJmlbYV0mJiRlKGlbYV0pLmZvckVhY2goZnVuY3Rpb24oTil7''@;'; put 'put ''dmFyIE09IiI7aWYoaVthXVtOXS5UeXBlPT1rZS5DTU5UKXtNPVNhKGlbYV1bTl0uVGFyZ2V0LHQpO3ZhciBJPWZ1bmN0aW9uIElwKGUsdCxyKXtyZXR1cm4iLmJpbiI9PT10LnNsaWNlKC00KT9mdW5jdGlvbiBFeChlLHQpe3ZhciByPVtdLGE9W10sbj17fSxpPSExO3JldHVybiBodChlLGZ1''@;'; put 'put ''bmN0aW9uKGYsYyxvKXtzd2l0Y2gobyl7Y2FzZSA2MzI6YS5wdXNoKGYpO2JyZWFrO2Nhc2UgNjM1Om49ZjticmVhaztjYXNlIDYzNzpuLnQ9Zi50LG4uaD1mLmgsbi5yPWYucjticmVhaztjYXNlIDYzNjppZihuLmF1dGhvcj1hW24uaWF1dGhvcl0sZGVsZXRlIG4uaWF1dGhvcix0LnNoZWV0''@;'; put 'put ''Um93cyYmbi5yZngmJnQuc2hlZXRSb3dzPD1uLnJmeC5yKWJyZWFrO24udHx8KG4udD0iIiksZGVsZXRlIG4ucmZ4LHIucHVzaChuKTticmVhaztjYXNlIDMwNzI6Y2FzZSAzNzpjYXNlIDM4OmJyZWFrO2Nhc2UgMzU6aT0hMDticmVhaztjYXNlIDM2Omk9ITE7YnJlYWs7ZGVmYXVsdDppZigh''@;'; put 'put ''Yy5UJiYoIWl8fHQuV1RGKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitvLnRvU3RyaW5nKDE2KSl9fSkscn0oZSxyKTpmdW5jdGlvbiB4eChlLHQpe2lmKGUubWF0Y2goLzwoPzpcdys6KT9jb21tZW50cyAqXC8+LykpcmV0dXJuW107dmFyIHI9W10sYT1bXSxuPWUu''@;'; put 'put ''bWF0Y2goLzwoPzpcdys6KT9hdXRob3JzPihbXHNcU10qKTxcLyg/Olx3KzopP2F1dGhvcnM+Lyk7biYmblsxXSYmblsxXS5zcGxpdCgvPFwvXHcqOj9hdXRob3I+LykuZm9yRWFjaChmdW5jdGlvbihzKXtpZigiIiE9PXMmJiIiIT09cy50cmltKCkpe3ZhciBmPXMubWF0Y2goLzwoPzpcdys6''@;'; put 'put ''KT9hdXRob3JbXj5dKj4oLiopLyk7ZiYmci5wdXNoKGZbMV0pfX0pO3ZhciBpPWUubWF0Y2goLzwoPzpcdys6KT9jb21tZW50TGlzdD4oW1xzXFNdKik8XC8oPzpcdys6KT9jb21tZW50TGlzdD4vKTtyZXR1cm4gaSYmaVsxXSYmaVsxXS5zcGxpdCgvPFwvXHcqOj9jb21tZW50Pi8pLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24ocyl7aWYoIiIhPT1zJiYiIiE9PXMudHJpbSgpKXt2YXIgZj1zLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePl0qPi8pO2lmKGYpe3ZhciBjPW1lKGZbMF0pLG89e2F1dGhvcjpjLmF1dGhvcklkJiZyW2MuYXV0aG9ySWRdfHwic2hlZXRqc2dob3N0IixyZWY6Yy5yZWYs''@;'; put 'put ''Z3VpZDpjLmd1aWR9LGw9R2UoYy5yZWYpO2lmKCEodC5zaGVldFJvd3MmJnQuc2hlZXRSb3dzPD1sLnIpKXt2YXIgaD1zLm1hdGNoKC88KD86XHcrOik/dGV4dD4oW1xzXFNdKik8XC8oPzpcdys6KT90ZXh0Pi8pLHg9ISFoJiYhIWhbMV0mJlNuKGhbMV0pfHx7cjoiIix0OiIiLGg6IiJ9O28u''@;'; put 'put ''cj14LnIsIjx0PjwvdD4iPT14LnImJih4LnQ9eC5oPSIiKSxvLnQ9KHgudHx8IiIpLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLHQuY2VsbEhUTUwmJihvLmg9eC5oKSxhLnB1c2gobyl9fX19KSxhfShlLHIpfShRZShlLE0sITApLE0sYyk7aWYoIUl8fCFJLmxl''@;'; put 'put ''bmd0aClyZXR1cm47Z2YoZCxJLCExKX1pW2FdW05dLlR5cGU9PWtlLlRDTU5UJiYoTT1TYShpW2FdW05dLlRhcmdldCx0KSxnPWcuY29uY2F0KGZ1bmN0aW9uIGR4KGUsdCl7dmFyIHI9W10sYT0hMSxuPXt9LGk9MDtyZXR1cm4gZS5yZXBsYWNlKHZyLGZ1bmN0aW9uKGYsYyl7dmFyIG89bWUo''@;'; put 'put ''Zik7c3dpdGNoKHJ0KG9bMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxUaHJlYWRlZENvbW1lbnRzIjpjYXNlIjwvVGhyZWFkZWRDb21tZW50cz4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpicmVhaztjYXNlIjx0aHJlYWRlZENv''@;'; put 'put ''bW1lbnQiOm49e2F1dGhvcjpvLnBlcnNvbklkLGd1aWQ6by5pZCxyZWY6by5yZWYsVDoxfTticmVhaztjYXNlIjwvdGhyZWFkZWRDb21tZW50PiI6bnVsbCE9bi50JiZyLnB1c2gobik7YnJlYWs7Y2FzZSI8dGV4dD4iOmNhc2UiPHRleHQiOmk9YytmLmxlbmd0aDticmVhaztjYXNlIjwvdGV4''@;'; put 'put ''dD4iOm4udD1lLnNsaWNlKGksYykucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UoL1xyL2csIlxuIik7YnJlYWs7Y2FzZSI8bWVudGlvbnMiOmNhc2UiPG1lbnRpb25zPiI6Y2FzZSI8ZXh0IjphPSEwO2JyZWFrO2Nhc2UiPC9tZW50aW9ucz4iOmNhc2UiPC9leHQ+IjphPSExO2JyZWFr''@;'; put 'put ''O2RlZmF1bHQ6aWYoIWEmJnQuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrb1swXSsiIGluIHRocmVhZGVkIGNvbW1lbnRzIil9cmV0dXJuIGZ9KSxyfShRZShlLE0sITApLGMpKSl9KSxnJiZnLmxlbmd0aCYmZ2YoZCxnLCEwLGMucGVvcGxlfHxbXSl9Y2F0Y2goTil7aWYo''@;'; put 'put ''Yy5XVEYpdGhyb3cgTn19ZnVuY3Rpb24gJHIoZSl7cmV0dXJuIi8iPT1lLmNoYXJBdCgwKT9lLnNsaWNlKDEpOmV9ZnVuY3Rpb24gUW0oZSx0KXtpZih0YSgpLCRuKHQ9dHx8e30pLFdyKGUsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpfHxXcihlLCJvYmplY3RkYXRhLnhtbCIpKXJldHVybiBm''@;'; put 'put ''dW5jdGlvbiBmYyhlLHQpe3Q9dHx8e30sV3IoZSwiTUVUQS1JTkYvbWFuaWZlc3QueG1sIikmJmZ1bmN0aW9uIG9sKGUsdCl7Zm9yKHZhciBhLG4scj1ZMChlKTthPXlhLmV4ZWMocik7KXN3aXRjaChhWzNdKXtjYXNlIm1hbmlmZXN0IjpicmVhaztjYXNlImZpbGUtZW50cnkiOmlmKCIvIj09''@;'; put 'put ''KG49bWUoYVswXSwhMSkpLnBhdGgmJm4udHlwZSE9PWNsKXRocm93IG5ldyBFcnJvcigiVGhpcyBPcGVuRG9jdW1lbnQgaXMgbm90IGEgc3ByZWFkc2hlZXQiKTticmVhaztjYXNlImVuY3J5cHRpb24tZGF0YSI6Y2FzZSJhbGdvcml0aG0iOmNhc2Uic3RhcnQta2V5LWdlbmVyYXRpb24iOmNh''@;'; put 'put ''c2Uia2V5LWRlcml2YXRpb24iOnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRpb24iKTtkZWZhdWx0OmlmKHQmJnQuV1RGKXRocm93IGF9fShRZShlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSx0KTt2YXIgcj1OcihlLCJjb250ZW50LnhtbCIpO2lmKCFyKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiTWlzc2luZyBjb250ZW50LnhtbCBpbiBPRFMgLyBVT0YgZmlsZSIpO3ZhciBhPXNjKEJlKHIpLHQpO3JldHVybiBXcihlLCJtZXRhLnhtbCIpJiYoYS5Qcm9wcz1tcyhRZShlLCJtZXRhLnhtbCIpKSksYX0oZSx0KTtpZihXcihlLCJJbmRleC9Eb2N1bWVudC5pd2EiKSl7''@;'; put 'put ''aWYodHlwZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiTlVNQkVSUyBmaWxlIHBhcnNpbmcgcmVxdWlyZXMgVWludDhBcnJheSBzdXBwb3J0Iik7aWYoZS5GaWxlSW5kZXgpcmV0dXJuIHpuKGUpO3ZhciByPXZlLnV0aWxzLmNmYl9uZXcoKTtyZXR1cm4gSWkoZSkuZm9yRWFj''@;'; put 'put ''aChmdW5jdGlvbihsZSl7IWZ1bmN0aW9uIFRlKGUsdCxyKXtpZihlLkZ1bGxQYXRocyl7dmFyIGE7aWYoInN0cmluZyI9PXR5cGVvZiByKXJldHVybiBhPVNlP290KHIpOmZ1bmN0aW9uIE5jKGUpe2Zvcih2YXIgdD1bXSxyPTAsYT1lLmxlbmd0aCsyNTAsbj1fdChlLmxlbmd0aCsyNTUpLGk9''@;'; put 'put ''MDtpPGUubGVuZ3RoOysraSl7dmFyIHM9ZS5jaGFyQ29kZUF0KGkpO2lmKHM8MTI4KW5bcisrXT1zO2Vsc2UgaWYoczwyMDQ4KW5bcisrXT0xOTJ8cz4+NiYzMSxuW3IrK109MTI4fDYzJnM7ZWxzZSBpZihzPj01NTI5NiYmczw1NzM0NCl7cz02NCsoMTAyMyZzKTt2YXIgZj0xMDIzJmUuY2hh''@;'; put 'put ''ckNvZGVBdCgrK2kpO25bcisrXT0yNDB8cz4+OCY3LG5bcisrXT0xMjh8cz4+MiY2MyxuW3IrK109MTI4fGY+PjYmMTV8KDMmcyk8PDQsbltyKytdPTEyOHw2MyZmfWVsc2UgbltyKytdPTIyNHxzPj4xMiYxNSxuW3IrK109MTI4fHM+PjYmNjMsbltyKytdPTEyOHw2MyZzO3I+YSYmKHQucHVz''@;'; put 'put ''aChuLnNsaWNlKDAscikpLHI9MCxuPV90KDY1NTM1KSxhPTY1NTMwKX1yZXR1cm4gdC5wdXNoKG4uc2xpY2UoMCxyKSksZnIodCl9KHIpLHZlLnV0aWxzLmNmYl9hZGQoZSx0LGEpO3ZlLnV0aWxzLmNmYl9hZGQoZSx0LHIpfWVsc2UgZS5maWxlKHQscil9KHIsbGUsT2koZSxsZSkpfSksem4o''@;'; put 'put ''cil9aWYoIVdyKGUsIltDb250ZW50X1R5cGVzXS54bWwiKSl0aHJvdyBXcihlLCJpbmRleC54bWwuZ3oiKT9uZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgMDggZmlsZSIpOldyKGUsImluZGV4LnhtbCIpP25ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOSBmaWxlIik6bmV3''@;'; put 'put ''IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgZmlsZSIpO3ZhciBzLGYsYT1JaShlKSxuPWZ1bmN0aW9uIGZsKGUpe3ZhciB0PXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sdGhyZWFkZWRjb21t''@;'; put 'put ''ZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10sbWV0YWRhdGE6W10scGVvcGxlOltdLFRPRE86W10seG1sbnM6IiJ9O2lmKCFlfHwhZS5tYXRjaCly''@;'; put 'put ''ZXR1cm4gdDt2YXIgcj17fTtpZigoZS5tYXRjaCh2cil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBuPW1lKGEpO3N3aXRjaChuWzBdLnJlcGxhY2UoX28sIjwiKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8VHlwZXMiOnQueG1sbnM9blsieG1sbnMiKyhuWzBdLm1hdGNoKC88KFx3''@;'; put 'put ''Kyk6Lyl8fFsiIiwiIl0pWzFdXTticmVhaztjYXNlIjxEZWZhdWx0IjpyW24uRXh0ZW5zaW9uXT1uLkNvbnRlbnRUeXBlO2JyZWFrO2Nhc2UiPE92ZXJyaWRlIjp2b2lkIDAhPT10W3ZuW24uQ29udGVudFR5cGVdXSYmdFt2bltuLkNvbnRlbnRUeXBlXV0ucHVzaChuLlBhcnROYW1lKX19KSx0''@;'; put 'put ''LnhtbG5zIT09cnIuQ1QpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIit0LnhtbG5zKTtyZXR1cm4gdC5jYWxjY2hhaW49dC5jYWxjY2hhaW5zLmxlbmd0aD4wP3QuY2FsY2NoYWluc1swXToiIix0LnNzdD10LnN0cnMubGVuZ3RoPjA/dC5zdHJzWzBdOiIiLHQuc3R5bGU9''@;'; put 'put ''dC5zdHlsZXMubGVuZ3RoPjA/dC5zdHlsZXNbMF06IiIsdC5kZWZhdWx0cz1yLGRlbGV0ZSB0LmNhbGNjaGFpbnMsdH0oTnIoZSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIpKSxpPSExO2lmKDA9PT1uLndvcmtib29rcy5sZW5ndGgmJlFlKGUsZj0ieGwvd29ya2Jvb2sueG1sIiwhMCkmJm4ud29y''@;'; put 'put ''a2Jvb2tzLnB1c2goZiksMD09PW4ud29ya2Jvb2tzLmxlbmd0aCl7aWYoIVFlKGUsZj0ieGwvd29ya2Jvb2suYmluIiwhMCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB3b3JrYm9vayIpO24ud29ya2Jvb2tzLnB1c2goZiksaT0hMH0iYmluIj09bi53b3JrYm9va3NbMF0uc2xp''@;'; put 'put ''Y2UoLTMpJiYoaT0hMCk7dmFyIGM9e30sbz17fTtpZighdC5ib29rU2hlZXRzJiYhdC5ib29rUHJvcHMpe2lmKFZhPVtdLG4uc3N0KXRyeXtWYT1mdW5jdGlvbiBPcChlLHQscil7cmV0dXJuIi5iaW4iPT09dC5zbGljZSgtNCk/ZnVuY3Rpb24gSWgoZSx0KXt2YXIgcj1bXSxhPSExO3JldHVy''@;'; put 'put ''biBodChlLGZ1bmN0aW9uKGkscyxmKXtzd2l0Y2goZil7Y2FzZSAxNTk6ci5Db3VudD1pWzBdLHIuVW5pcXVlPWlbMV07YnJlYWs7Y2FzZSAxOTpyLnB1c2goaSk7YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTphPSEwO2JyZWFrO2Nhc2UgMzY6YT0hMTticmVhaztkZWZhdWx0Omlm''@;'; put 'put ''KCFhfHx0LldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitmLnRvU3RyaW5nKDE2KSl9fSkscn0oZSxyKTpmdW5jdGlvbiBDaChlLHQpe3ZhciByPVtdLGE9IiI7aWYoIWUpcmV0dXJuIHI7dmFyIG49ZS5tYXRjaChGaCk7aWYobil7YT1uWzJdLnJlcGxhY2UoeWgs''@;'; put 'put ''IiIpLnNwbGl0KEFoKTtmb3IodmFyIGk9MDtpIT1hLmxlbmd0aDsrK2kpe3ZhciBzPVNuKGFbaV0udHJpbSgpLHQpO251bGwhPXMmJihyW3IubGVuZ3RoXT1zKX1uPW1lKG5bMV0pLHIuQ291bnQ9bi5jb3VudCxyLlVuaXF1ZT1uLnVuaXF1ZUNvdW50fXJldHVybiByfShlLHIpfShRZShlLCRy''@;'; put 'put ''KG4uc3N0KSksbi5zc3QsdCl9Y2F0Y2gobGUpe2lmKHQuV1RGKXRocm93IGxlfXQuY2VsbFN0eWxlcyYmbi50aGVtZXMubGVuZ3RoJiYoYz1mdW5jdGlvbiBEcChlLHQscil7cmV0dXJuIHZmKGUscil9KE5yKGUsbi50aGVtZXNbMF0ucmVwbGFjZSgvXlwvLywiIiksITApfHwiIiwwLHQpKSxu''@;'; put 'put ''LnN0eWxlJiYobz1mdW5jdGlvbiBDcChlLHQscixhKXtyZXR1cm4iLmJpbiI9PT10LnNsaWNlKC00KT9mdW5jdGlvbiBTMShlLHQscil7dmFyIGE9e051bWJlckZtdDpbXX07Zm9yKHZhciBuIGluIHBlKWEuTnVtYmVyRm10W25dPXBlW25dO2EuQ2VsbFhmPVtdLGEuRm9udHM9W107dmFyIGk9''@;'; put 'put ''W10scz0hMTtyZXR1cm4gaHQoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNDQ6YS5OdW1iZXJGbXRbY1swXV09Y1sxXSxldChjWzFdLGNbMF0pO2JyZWFrO2Nhc2UgNDM6YS5Gb250cy5wdXNoKGMpLG51bGwhPWMuY29sb3IudGhlbWUmJnQmJnQudGhlbWVFbGVtZW50cyYmdC50''@;'; put 'put ''aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKGMuY29sb3IucmdiPVQwKHQudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbYy5jb2xvci50aGVtZV0ucmdiLGMuY29sb3IudGludHx8MCkpO2JyZWFrO2Nhc2UgMTAyNTpjYXNlIDQ1OmNhc2UgNDY6Y2FzZSA0ODpjYXNlIDUwNzpjYXNlIDU3MjpjYXNl''@;'; put 'put ''IDQ3NTpjYXNlIDExNzE6Y2FzZSAyMTAyOmNhc2UgMTEzMDpjYXNlIDUxMjpjYXNlIDIwOTU6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgNDc6NjE3PT1pW2kubGVuZ3RoLTFdJiZhLkNlbGxYZi5wdXNoKGMpO2JyZWFrO2Nhc2UgMzU6cz0hMDticmVhaztjYXNlIDM2OnM9ITE7YnJlYWs7Y2FzZSAz''@;'; put 'put ''NzppLnB1c2gobCkscz0hMDticmVhaztjYXNlIDM4OmkucG9wKCkscz0hMTticmVhaztkZWZhdWx0OmlmKG8uVD4wKWkucHVzaChsKTtlbHNlIGlmKG8uVDwwKWkucG9wKCk7ZWxzZSBpZighc3x8ci5XVEYmJjM3IT1pW2kubGVuZ3RoLTFdKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBy''@;'; put 'put ''ZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19KSxhfShlLHIsYSk6aDEoZSxyLGEpfShRZShlLCRyKG4uc3R5bGUpKSxuLnN0eWxlLGMsdCkpfW4ubGlua3MubWFwKGZ1bmN0aW9uKGxlKXt0cnl7cmV0dXJuIElhKE5yKGUsT2EoJHIobGUpKSksbGUpLGZ1bmN0aW9uIE5wKGUsdCxyLGEpe3Jl''@;'; put 'put ''dHVybiIuYmluIj09PXIuc2xpY2UoLTQpP2Z1bmN0aW9uIHV4KGUsdCxyLGEpe2lmKCFlKXJldHVybiBlO3ZhciBuPWF8fHt9LGk9ITE7aHQoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgMzU5OmNhc2UgMzYzOmNhc2UgMzY0OmNhc2UgMzY2OmNhc2UgMzY3OmNhc2UgMzY4OmNh''@;'; put 'put ''c2UgMzY5OmNhc2UgMzcwOmNhc2UgMzcxOmNhc2UgNDcyOmNhc2UgNTc3OmNhc2UgNTc4OmNhc2UgNTc5OmNhc2UgNTgwOmNhc2UgNTgxOmNhc2UgNTgyOmNhc2UgNTgzOmNhc2UgNTg0OmNhc2UgNTg1OmNhc2UgNTg2OmNhc2UgNTg3OmJyZWFrO2Nhc2UgMzU6aT0hMDticmVhaztjYXNlIDM2''@;'; put 'put ''Omk9ITE7YnJlYWs7ZGVmYXVsdDppZighby5UJiYoIWl8fG4uV1RGKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitsLnRvU3RyaW5nKDE2KSl9fSxuKX0oZSwwLDAsYSk6dm9pZCAwfShRZShlLCRyKGxlKSksMCxsZSx0KX1jYXRjaHt9fSk7dmFyIGw9ZnVuY3Rpb24g''@;'; put 'put ''VHAoZSx0LHIpe3JldHVybiIuYmluIj09PXQuc2xpY2UoLTQpP2Z1bmN0aW9uIG1wKGUsdCl7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSx4bWxuczoiIn0sYT1bXSxuPSExO3R8fCh0PXt9KSx0LmJpZmY9MTI7dmFyIGk9W10s''@;'; put 'put ''cz1bW11dO3JldHVybiBzLlNoZWV0TmFtZXM9W10scy5YVEk9W10sJGFbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOnZwfSxodChlLGZ1bmN0aW9uKGMsbyxsKXtzd2l0Y2gobCl7Y2FzZSAxNTY6cy5TaGVldE5hbWVzLnB1c2goYy5uYW1lKSxyLlNoZWV0cy5wdXNoKGMpO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTUzOnIuV0JQcm9wcz1jO2JyZWFrO2Nhc2UgMzk6bnVsbCE9Yy5TaGVldCYmKHQuU0lEPWMuU2hlZXQpLGMuUmVmPWtyKGMuUHRnLDAsbnVsbCxzLHQpLGRlbGV0ZSB0LlNJRCxkZWxldGUgYy5QdGcsaS5wdXNoKGMpO2JyZWFrO2Nhc2UgMTAzNjpjYXNlIDM2MTpjYXNlIDIwNzE6Y2FzZSAx''@;'; put 'put ''NTg6Y2FzZSAxNDM6Y2FzZSA2NjQ6Y2FzZSAzNTM6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDUzNDpjYXNlIDY3NzpjYXNlIDE1NzpjYXNlIDYxMDpjYXNlIDIwNTA6Y2FzZSAxNTU6Y2FzZSA1NDg6Y2FzZSA2NzY6Y2FzZSAxMjg6Y2FzZSA2NjU6Y2FzZSAyMTI4OmNhc2UgMjEyNTpjYXNl''@;'; put 'put ''IDU0OTpjYXNlIDIwNTM6Y2FzZSA1OTY6Y2FzZSAyMDc2OmNhc2UgMjA3NTpjYXNlIDIwODI6Y2FzZSAzOTc6Y2FzZSAxNTQ6Y2FzZSAxMTE3OmNhc2UgNTUzOmNhc2UgMjA5MTpjYXNlIDE2OmJyZWFrO2Nhc2UgMzU3OmNhc2UgMzU4OmNhc2UgMzU1OmNhc2UgNjY3OnNbMF0ubGVuZ3RoP3Mu''@;'; put 'put ''cHVzaChbbCxjXSk6c1swXT1bbCxjXSxzW3MubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIDM2MjowPT09cy5sZW5ndGgmJihzWzBdPVtdLHNbMF0uWFRJPVtdKSxzW3MubGVuZ3RoLTFdLlhUST1zW3MubGVuZ3RoLTFdLlhUSS5jb25jYXQoYykscy5YVEk9cy5YVEkuY29uY2F0KGMpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMzU6Y2FzZSAzNzphLnB1c2gobCksbj0hMDticmVhaztjYXNlIDM2OmNhc2UgMzg6YS5wb3AoKSxuPSExO2JyZWFrO2RlZmF1bHQ6aWYoIW8uVCYmKCFufHx0LldURiYmMzchPWFbYS5sZW5ndGgtMV0mJjM1IT1hW2EubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhw''@;'; put 'put ''ZWN0ZWQgcmVjb3JkIDB4IitsLnRvU3RyaW5nKDE2KSl9fSx0KSxIZihyKSxyLk5hbWVzPWksci5zdXBib29rcz1zLHJ9KGUscik6ZnVuY3Rpb24gbHAoZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGZpbGUiKTt2YXIgcj17QXBwVmVyc2lvbjp7fSxXQlByb3Bz''@;'; put 'put ''Ont9LFdCVmlldzpbXSxTaGVldHM6W10sQ2FsY1ByOnt9LE5hbWVzOltdLHhtbG5zOiIifSxhPSExLG49InhtbG5zIixpPXt9LHM9MDtpZihlLnJlcGxhY2UodnIsZnVuY3Rpb24oYyxvKXt2YXIgbD1tZShjKTtzd2l0Y2gocnQobFswXSkpe2Nhc2UiPD94bWwiOmNhc2UiPC93b3JrYm9vaz4i''@;'; put 'put ''OmNhc2UiPGZpbGVWZXJzaW9uLz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmNhc2UiPGZpbGVTaGFyaW5nIjpjYXNlIjxmaWxlU2hhcmluZy8+IjpjYXNlIjwvd29ya2Jvb2tQcj4iOmNhc2UiPHdvcmtib29rUHJvdGVjdGlvbiI6Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uLz4iOmNhc2UiPGJv''@;'; put 'put ''b2tWaWV3cyI6Y2FzZSI8Ym9va1ZpZXdzPiI6Y2FzZSI8L2Jvb2tWaWV3cz4iOmNhc2UiPC93b3JrYm9va1ZpZXc+IjpjYXNlIjxzaGVldHMiOmNhc2UiPHNoZWV0cz4iOmNhc2UiPC9zaGVldHM+IjpjYXNlIjwvc2hlZXQ+IjpjYXNlIjxmdW5jdGlvbkdyb3VwcyI6Y2FzZSI8ZnVuY3Rpb25H''@;'; put 'put ''cm91cHMvPiI6Y2FzZSI8ZnVuY3Rpb25Hcm91cCI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzIjpjYXNlIjwvZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2VzPiI6Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2UiOmNhc2UiPGRlZmluZWROYW1lcy8+IjpjYXNlIjxk''@;'; put 'put ''ZWZpbmVkTmFtZS8+IjpjYXNlIjwvY2FsY1ByPiI6Y2FzZSI8b2xlU2l6ZSI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cyI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3IjpjYXNlIjwvY3Vz''@;'; put 'put ''dG9tV29ya2Jvb2tWaWV3PiI6Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6Y2FzZSI8cGl2b3RDYWNoZSI6Y2FzZSI8c21hcnRUYWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpjYXNlIjxzbWFydFRhZ1R5cGVzIjpjYXNlIjxzbWFy''@;'; put 'put ''dFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpjYXNlIjxzbWFydFRhZ1R5cGUiOmNhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6Y2FzZSI8ZmlsZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmpl''@;'; put 'put ''Y3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpjYXNlIjxBcmNoSUQiOmNhc2UiPHJl''@;'; put 'put ''dmlzaW9uUHRyIjpicmVhaztjYXNlIjx3b3JrYm9vayI6Yy5tYXRjaChvcCkmJihuPSJ4bWxucyIrYy5tYXRjaCgvPChcdyspOi8pWzFdKSxyLnhtbG5zPWxbbl07YnJlYWs7Y2FzZSI8ZmlsZVZlcnNpb24iOmRlbGV0ZSBsWzBdLHIuQXBwVmVyc2lvbj1sO2JyZWFrO2Nhc2UiPHdvcmtib29r''@;'; put 'put ''UHIiOmNhc2UiPHdvcmtib29rUHIvPiI6Qm4uZm9yRWFjaChmdW5jdGlvbihoKXtpZihudWxsIT1sW2hbMF1dKXN3aXRjaChoWzJdKXtjYXNlImJvb2wiOnIuV0JQcm9wc1toWzBdXT1XZShsW2hbMF1dKTticmVhaztjYXNlImludCI6ci5XQlByb3BzW2hbMF1dPXBhcnNlSW50KGxbaFswXV0s''@;'; put 'put ''MTApO2JyZWFrO2RlZmF1bHQ6ci5XQlByb3BzW2hbMF1dPWxbaFswXV19fSksbC5jb2RlTmFtZSYmKHIuV0JQcm9wcy5Db2RlTmFtZT1CZShsLmNvZGVOYW1lKSk7YnJlYWs7Y2FzZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIGxbMF0sci5XQlZpZXcucHVz''@;'; put 'put ''aChsKTticmVhaztjYXNlIjxzaGVldCI6c3dpdGNoKGwuc3RhdGUpe2Nhc2UiaGlkZGVuIjpsLkhpZGRlbj0xO2JyZWFrO2Nhc2UidmVyeUhpZGRlbiI6bC5IaWRkZW49MjticmVhaztkZWZhdWx0OmwuSGlkZGVuPTB9ZGVsZXRlIGwuc3RhdGUsbC5uYW1lPUllKEJlKGwubmFtZSkpLGRlbGV0''@;'; put 'put ''ZSBsWzBdLHIuU2hlZXRzLnB1c2gobCk7YnJlYWs7Y2FzZSI8ZGVmaW5lZE5hbWVzPiI6Y2FzZSI8ZGVmaW5lZE5hbWVzIjpjYXNlIjxleHQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+IjphPSEwO2JyZWFrO2Nhc2UiPC9kZWZpbmVkTmFtZXM+Ijpj''@;'; put 'put ''YXNlIjwvZXh0PiI6Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjphPSExO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lIjooaT17fSkuTmFtZT1CZShsLm5hbWUpLGwuY29tbWVudCYmKGkuQ29tbWVudD1sLmNvbW1lbnQpLGwubG9jYWxTaGVldElkJiYoaS5TaGVldD0rbC5sb2NhbFNoZWV0SWQp''@;'; put 'put ''LFdlKGwuaGlkZGVufHwiMCIpJiYoaS5IaWRkZW49ITApLHM9bytjLmxlbmd0aDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWU+IjppLlJlZj1JZShCZShlLnNsaWNlKHMsbykpKSxyLk5hbWVzLnB1c2goaSk7YnJlYWs7Y2FzZSI8Y2FsY1ByIjpjYXNlIjxjYWxjUHIvPiI6ZGVsZXRlIGxbMF0s''@;'; put 'put ''ci5DYWxjUHI9bDticmVhaztkZWZhdWx0OmlmKCFhJiZ0LldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2xbMF0rIiBpbiB3b3JrYm9vayIpfXJldHVybiBjfSksLTE9PT1TdC5pbmRleE9mKHIueG1sbnMpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIr''@;'; put 'put ''ci54bWxucyk7cmV0dXJuIEhmKHIpLHJ9KGUscil9KFFlKGUsJHIobi53b3JrYm9va3NbMF0pKSxuLndvcmtib29rc1swXSx0KSxoPXt9LHg9IiI7bi5jb3JlcHJvcHMubGVuZ3RoJiYoKHg9UWUoZSwkcihuLmNvcmVwcm9wc1swXSksITApKSYmKGg9bXMoeCkpLDAhPT1uLmV4dHByb3BzLmxl''@;'; put 'put ''bmd0aCYmKHg9UWUoZSwkcihuLmV4dHByb3BzWzBdKSwhMCkpJiZmdW5jdGlvbiB2bChlLHQscil7dmFyIGE9e307dHx8KHQ9e30pLGU9QmUoZSksWHQuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0oZS5tYXRjaChGYShuWzBdKSl8fFtdKVsxXTtzd2l0Y2goblsyXSl7Y2FzZSJzdHJpbmci''@;'; put 'put ''OmkmJih0W25bMV1dPUllKGkpKTticmVhaztjYXNlImJvb2wiOnRbblsxXV09InRydWUiPT09aTticmVhaztjYXNlInJhdyI6dmFyIHM9ZS5tYXRjaChuZXcgUmVnRXhwKCI8IituWzBdKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrblswXSsiPiIpKTtzJiZzLmxlbmd0aD4wJiYoYVtuWzFdXT1z''@;'; put 'put ''WzFdKX19KSxhLkhlYWRpbmdQYWlycyYmYS5UaXRsZXNPZlBhcnRzJiZ3cyhhLkhlYWRpbmdQYWlycyxhLlRpdGxlc09mUGFydHMsdCxyKX0oeCxoLHQpKTt2YXIgZD17fTsoIXQuYm9va1NoZWV0c3x8dC5ib29rUHJvcHMpJiYwIT09bi5jdXN0cHJvcHMubGVuZ3RoJiYoeD1OcihlLCRyKG4u''@;'; put 'put ''Y3VzdHByb3BzWzBdKSwhMCkpJiYoZD1mdW5jdGlvbiBtbChlLHQpe3ZhciByPXt9LGE9IiIsbj1lLm1hdGNoKHBsKTtpZihuKWZvcih2YXIgaT0wO2khPW4ubGVuZ3RoOysraSl7dmFyIHM9bltpXSxmPW1lKHMpO3N3aXRjaChmWzBdKXtjYXNlIjw/eG1sIjpjYXNlIjxQcm9wZXJ0aWVzIjpi''@;'; put 'put ''cmVhaztjYXNlIjxwcm9wZXJ0eSI6YT1JZShmLm5hbWUpO2JyZWFrO2Nhc2UiPC9wcm9wZXJ0eT4iOmE9bnVsbDticmVhaztkZWZhdWx0OmlmKDA9PT1zLmluZGV4T2YoIjx2dDoiKSl7dmFyIGM9cy5zcGxpdCgiPiIpLG89Y1swXS5zbGljZSg0KSxsPWNbMV07c3dpdGNoKG8pe2Nhc2UibHBz''@;'; put 'put ''dHIiOmNhc2UiYnN0ciI6Y2FzZSJscHdzdHIiOmNhc2UiY3kiOmNhc2UiZXJyb3IiOnJbYV09SWUobCk7YnJlYWs7Y2FzZSJib29sIjpyW2FdPVdlKGwpO2JyZWFrO2Nhc2UiaTEiOmNhc2UiaTIiOmNhc2UiaTQiOmNhc2UiaTgiOmNhc2UiaW50IjpjYXNlInVpbnQiOnJbYV09cGFyc2VJbnQo''@;'; put 'put ''bCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJyOCI6Y2FzZSJkZWNpbWFsIjpyW2FdPXBhcnNlRmxvYXQobCk7YnJlYWs7Y2FzZSJmaWxldGltZSI6Y2FzZSJkYXRlIjpyW2FdPVhlKGwpO2JyZWFrO2RlZmF1bHQ6aWYoIi8iPT1vLnNsaWNlKC0xKSlicmVhazt0LldURiYmdHlwZW9mIGNvbnNv''@;'; put 'put ''bGU8InUiJiZjb25zb2xlLndhcm4oIlVuZXhwZWN0ZWQiLHMsbyxjKX19ZWxzZSBpZigiPC8iIT09cy5zbGljZSgwLDIpJiZ0LldURil0aHJvdyBuZXcgRXJyb3Iocyl9fXJldHVybiByfSh4LHQpKTt2YXIgdj17fTtpZigodC5ib29rU2hlZXRzfHx0LmJvb2tQcm9wcykmJihsLlNoZWV0cz9z''@;'; put 'put ''PWwuU2hlZXRzLm1hcChmdW5jdGlvbihyZSl7cmV0dXJuIHJlLm5hbWV9KTpoLldvcmtzaGVldHMmJmguU2hlZXROYW1lcy5sZW5ndGg+MCYmKHM9aC5TaGVldE5hbWVzKSx0LmJvb2tQcm9wcyYmKHYuUHJvcHM9aCx2LkN1c3Rwcm9wcz1kKSx0LmJvb2tTaGVldHMmJnR5cGVvZiBzPCJ1IiYm''@;'; put 'put ''KHYuU2hlZXROYW1lcz1zKSx0LmJvb2tTaGVldHM/di5TaGVldE5hbWVzOnQuYm9va1Byb3BzKSlyZXR1cm4gdjtzPXt9O3ZhciB1PXt9O3QuYm9va0RlcHMmJm4uY2FsY2NoYWluJiYodT1mdW5jdGlvbiBScChlLHQscil7cmV0dXJuIi5iaW4iPT09dC5zbGljZSgtNCk/ZnVuY3Rpb24gbHgo''@;'; put 'put ''ZSx0LHIpe3ZhciBhPVtdO3JldHVybiBodChlLGZ1bmN0aW9uKHMsZixjKXtpZig2Mz09PWMpYS5wdXNoKHMpO2Vsc2UgaWYoIWYuVCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitjLnRvU3RyaW5nKDE2KSl9KSxhfShlKTpmdW5jdGlvbiBjeChlKXt2YXIgdD1bXTtp''@;'; put 'put ''ZighZSlyZXR1cm4gdDt2YXIgcj0xO3JldHVybihlLm1hdGNoKHZyKXx8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIG49bWUoYSk7c3dpdGNoKG5bMF0pe2Nhc2UiPD94bWwiOmNhc2UiPGNhbGNDaGFpbiI6Y2FzZSI8Y2FsY0NoYWluPiI6Y2FzZSI8L2NhbGNDaGFpbj4iOmJyZWFrO2Nh''@;'; put 'put ''c2UiPGMiOmRlbGV0ZSBuWzBdLG4uaT9yPW4uaTpuLmk9cix0LnB1c2gobil9fSksdH0oZSl9KFFlKGUsJHIobi5jYWxjY2hhaW4pKSxuLmNhbGNjaGFpbikpO3ZhciBULGcscD0wLGs9e30sTj1sLlNoZWV0cztoLldvcmtzaGVldHM9Ti5sZW5ndGgsaC5TaGVldE5hbWVzPVtdO2Zvcih2YXIg''@;'; put 'put ''TT0wO00hPU4ubGVuZ3RoOysrTSloLlNoZWV0TmFtZXNbTV09TltNXS5uYW1lO3ZhciBJPWk/ImJpbiI6InhtbCIseT1uLndvcmtib29rc1swXS5sYXN0SW5kZXhPZigiLyIpLFA9KG4ud29ya2Jvb2tzWzBdLnNsaWNlKDAseSsxKSsiX3JlbHMvIituLndvcmtib29rc1swXS5zbGljZSh5KzEp''@;'; put 'put ''KyIucmVscyIpLnJlcGxhY2UoL15cLy8sIiIpO1dyKGUsUCl8fChQPSJ4bC9fcmVscy93b3JrYm9vay4iK0krIi5yZWxzIik7dmFyIFI9SWEoTnIoZSxQLCEwKSxQLnJlcGxhY2UoL19yZWxzLiovLCJzNXMiKSk7KG4ubWV0YWRhdGF8fFtdKS5sZW5ndGg+PTEmJih0LnhsbWV0YT1mdW5jdGlv''@;'; put 'put ''biBicChlLHQscil7cmV0dXJuIi5iaW4iPT09dC5zbGljZSgtNCk/ZnVuY3Rpb24gaXgoZSx0LHIpe3ZhciBhPXtUeXBlczpbXSxDZWxsOltdLFZhbHVlOltdfSxuPXJ8fHt9LGk9W10scz0hMSxmPTI7cmV0dXJuIGh0KGUsZnVuY3Rpb24oYyxvLGwpe3N3aXRjaChsKXtjYXNlIDMzNTphLlR5''@;'; put 'put ''cGVzLnB1c2goe25hbWU6Yy5uYW1lfSk7YnJlYWs7Y2FzZSA1MTpjLmZvckVhY2goZnVuY3Rpb24oaCl7MT09Zj9hLkNlbGwucHVzaCh7dHlwZTphLlR5cGVzW2hbMF0tMV0ubmFtZSxpbmRleDpoWzFdfSk6MD09ZiYmYS5WYWx1ZS5wdXNoKHt0eXBlOmEuVHlwZXNbaFswXS0xXS5uYW1lLGlu''@;'; put 'put ''ZGV4OmhbMV19KX0pO2JyZWFrO2Nhc2UgMzM3OmY9Yz8xOjA7YnJlYWs7Y2FzZSAzMzg6Zj0yO2JyZWFrO2Nhc2UgMzU6aS5wdXNoKGwpLHM9ITA7YnJlYWs7Y2FzZSAzNjppLnBvcCgpLHM9ITE7YnJlYWs7ZGVmYXVsdDppZighby5UJiYoIXN8fG4uV1RGJiYzNSE9aVtpLmxlbmd0aC0xXSkp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX0pLGF9KGUsMCxyKTpmdW5jdGlvbiBmeChlLHQscil7dmFyIGE9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119O2lmKCFlKXJldHVybiBhO3ZhciBzLG49ITEsaT0yO3JldHVybiBlLnJlcGxh''@;'; put 'put ''Y2UodnIsZnVuY3Rpb24oZil7dmFyIGM9bWUoZik7c3dpdGNoKHJ0KGNbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjxtZXRhZGF0YSI6Y2FzZSI8L21ldGFkYXRhPiI6Y2FzZSI8bWV0YWRhdGFUeXBlcyI6Y2FzZSI8L21ldGFkYXRhVHlwZXM+IjpjYXNlIjwvbWV0YWRhdGFUeXBlPiI6Y2FzZSI8''@;'; put 'put ''L2Z1dHVyZU1ldGFkYXRhPiI6Y2FzZSI8Yms+IjpjYXNlIjwvYms+IjpjYXNlIjwvcmM+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8bWV0YWRhdGFUeXBlIjphLlR5cGVzLnB1c2goe25hbWU6Yy5uYW1l''@;'; put 'put ''fSk7YnJlYWs7Y2FzZSI8ZnV0dXJlTWV0YWRhdGEiOmZvcih2YXIgbz0wO288YS5UeXBlcy5sZW5ndGg7KytvKWEuVHlwZXNbb10ubmFtZT09Yy5uYW1lJiYocz1hLlR5cGVzW29dKTticmVhaztjYXNlIjxyYyI6MT09aT9hLkNlbGwucHVzaCh7dHlwZTphLlR5cGVzW2MudC0xXS5uYW1lLGlu''@;'; put 'put ''ZGV4OitjLnZ9KTowPT1pJiZhLlZhbHVlLnB1c2goe3R5cGU6YS5UeXBlc1tjLnQtMV0ubmFtZSxpbmRleDorYy52fSk7YnJlYWs7Y2FzZSI8Y2VsbE1ldGFkYXRhIjppPTE7YnJlYWs7Y2FzZSI8L2NlbGxNZXRhZGF0YT4iOmNhc2UiPC92YWx1ZU1ldGFkYXRhPiI6aT0yO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PHZhbHVlTWV0YWRhdGEiOmk9MDticmVhaztjYXNlIjxleHQiOm49ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOm49ITE7YnJlYWs7Y2FzZSI8cnZiIjppZighcylicmVhaztzLm9mZnNldHN8fChzLm9mZnNldHM9W10pLHMub2Zmc2V0cy5wdXNoKCtjLmkpO2JyZWFrO2RlZmF1bHQ6aWYoIW4mJnIu''@;'; put 'put ''V1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrY1swXSsiIGluIG1ldGFkYXRhIil9cmV0dXJuIGZ9KSxhfShlLDAscil9KFFlKGUsJHIobi5tZXRhZGF0YVswXSkpLG4ubWV0YWRhdGFbMF0sdCkpLChuLnBlb3BsZXx8W10pLmxlbmd0aD49MSYmKHQucGVvcGxlPWZ1bmN0aW9u''@;'; put 'put ''IHB4KGUsdCl7dmFyIHI9W10sYT0hMTtyZXR1cm4gZS5yZXBsYWNlKHZyLGZ1bmN0aW9uKGkpe3ZhciBzPW1lKGkpO3N3aXRjaChydChzWzBdKSl7Y2FzZSI8P3htbCI6Y2FzZSI8cGVyc29uTGlzdCI6Y2FzZSI8L3BlcnNvbkxpc3Q+IjpjYXNlIjwvcGVyc29uPiI6Y2FzZSI8ZXh0THN0Ijpj''@;'; put 'put ''YXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPHBlcnNvbiI6ci5wdXNoKHtuYW1lOnMuZGlzcGxheW5hbWUsaWQ6cy5pZH0pO2JyZWFrO2Nhc2UiPGV4dCI6YT0hMDticmVhaztjYXNlIjwvZXh0PiI6YT0hMTticmVhaztkZWZhdWx0Omlm''@;'; put 'put ''KCFhJiZ0LldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3NbMF0rIiBpbiB0aHJlYWRlZCBjb21tZW50cyIpfXJldHVybiBpfSkscn0oUWUoZSwkcihuLnBlb3BsZVswXSkpLHQpKSxSJiYoUj1mdW5jdGlvbiBxbShlLHQpe2lmKCFlKXJldHVybiAwO3RyeXtlPXQubWFwKGZ1''@;'; put 'put ''bmN0aW9uKGEpe3JldHVybiBhLmlkfHwoYS5pZD1hLnN0clJlbElEKSxbYS5uYW1lLGVbIiFpZCJdW2EuaWRdLlRhcmdldCxKbShlWyIhaWQiXVthLmlkXS5UeXBlKV19KX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gZSYmMCE9PWUubGVuZ3RoP2U6bnVsbH0oUixsLlNoZWV0cykpO3ZhciBW''@;'; put 'put ''PVFlKGUsInhsL3dvcmtzaGVldHMvc2hlZXQueG1sIiwhMCk/MTowO2U6Zm9yKHA9MDtwIT1oLldvcmtzaGVldHM7KytwKXt2YXIgWD0ic2hlZXQiO2lmKFImJlJbcF0/KFQ9InhsLyIrUltwXVsxXS5yZXBsYWNlKC9bXC9dP3hsXC8vLCIiKSxXcihlLFQpfHwoVD1SW3BdWzFdKSxXcihlLFQp''@;'; put 'put ''fHwoVD1QLnJlcGxhY2UoL19yZWxzXC8uKiQvLCIiKStSW3BdWzFdKSxYPVJbcF1bMl0pOlQ9KFQ9InhsL3dvcmtzaGVldHMvc2hlZXQiKyhwKzEtVikrIi4iK0kpLnJlcGxhY2UoL3NoZWV0MFwuLywic2hlZXQuIiksZz1ULnJlcGxhY2UoL14oLiopKFwvKShbXlwvXSopJC8sIiQxL19yZWxz''@;'; put 'put ''LyQzLnJlbHMiKSx0JiZudWxsIT10LnNoZWV0cylzd2l0Y2godHlwZW9mIHQuc2hlZXRzKXtjYXNlIm51bWJlciI6aWYocCE9dC5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoaC5TaGVldE5hbWVzW3BdLnRvTG93ZXJDYXNlKCkhPXQuc2hlZXRzLnRvTG93ZXJDYXNl''@;'; put 'put ''KCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkodC5zaGVldHMpKXtmb3IodmFyIGI9ITEsZWU9MDtlZSE9dC5zaGVldHMubGVuZ3RoOysrZWUpIm51bWJlciI9PXR5cGVvZiB0LnNoZWV0c1tlZV0mJnQuc2hlZXRzW2VlXT09cCYmKGI9''@;'; put 'put ''MSksInN0cmluZyI9PXR5cGVvZiB0LnNoZWV0c1tlZV0mJnQuc2hlZXRzW2VlXS50b0xvd2VyQ2FzZSgpPT1oLlNoZWV0TmFtZXNbcF0udG9Mb3dlckNhc2UoKSYmKGI9MSk7aWYoIWIpY29udGludWUgZX19Wm0oZSxULGcsaC5TaGVldE5hbWVzW3BdLHAsayxzLFgsdCxsLGMsbyl9cmV0dXJu''@;'; put 'put ''IHY9e0RpcmVjdG9yeTpuLFdvcmtib29rOmwsUHJvcHM6aCxDdXN0cHJvcHM6ZCxEZXBzOnUsU2hlZXRzOnMsU2hlZXROYW1lczpoLlNoZWV0TmFtZXMsU3RyaW5nczpWYSxTdHlsZXM6byxUaGVtZXM6YyxTU0Y6TWUocGUpfSx0JiZ0LmJvb2tGaWxlcyYmKGUuZmlsZXM/KHYua2V5cz1hLHYu''@;'; put 'put ''ZmlsZXM9ZS5maWxlcyk6KHYua2V5cz1bXSx2LmZpbGVzPXt9LGUuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24obGUscmUpe2xlPWxlLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpLHYua2V5cy5wdXNoKGxlKSx2LmZpbGVzW2xlXT1lLkZpbGVJbmRleFtyZV19KSkpLHQmJnQuYm9v''@;'; put 'put ''a1ZCQSYmKG4udmJhLmxlbmd0aD4wP3YudmJhcmF3PVFlKGUsJHIobi52YmFbMF0pLCEwKTpuLmRlZmF1bHRzJiZuLmRlZmF1bHRzLmJpbj09PVN4JiYodi52YmFyYXc9UWUoZSwieGwvdmJhUHJvamVjdC5iaW4iLCEwKSkpLHZ9ZnVuY3Rpb24gZWcoZSx0KXt2YXIgcj10fHx7fSxhPSJXb3Jr''@;'; put 'put ''Ym9vayIsbj12ZS5maW5kKGUsYSk7dHJ5e2lmKCEobj12ZS5maW5kKGUsYT0iLyFEYXRhU3BhY2VzL1ZlcnNpb24iKSl8fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrYSk7aWYoZnVuY3Rpb24gUGgoZSl7dmFyIHQ9e307dC5p''@;'; put 'put ''ZD1lLnJlYWRfc2hpZnQoMCwibHBwNCIpLHQuUj1kdChlLDQpLHQuVT1kdChlLDQpLHQuVz1kdChlLDQpfShuLmNvbnRlbnQpLCEobj12ZS5maW5kKGUsYT0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCIpKXx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRl''@;'; put 'put ''ZCBmaWxlIG1pc3NpbmcgIithKTt2YXIgaT1mdW5jdGlvbiBCaChlKXt2YXIgdD1bXTtlLmwrPTQ7Zm9yKHZhciByPWUucmVhZF9zaGlmdCg0KTtyLS0gPjA7KXQucHVzaChMaChlKSk7cmV0dXJuIHR9KG4uY29udGVudCk7aWYoMSE9PWkubGVuZ3RofHwxIT09aVswXS5jb21wcy5sZW5ndGh8''@;'; put 'put ''fDAhPT1pWzBdLmNvbXBzWzBdLnR8fCJTdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlIiE9PWlbMF0ubmFtZXx8IkVuY3J5cHRlZFBhY2thZ2UiIT09aVswXS5jb21wc1swXS52KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkICIrYSk7aWYoIShuPXZlLmZpbmQo''@;'; put 'put ''ZSxhPSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlSW5mby9TdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlIikpfHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK2EpO3ZhciBzPWZ1bmN0aW9uIE1oKGUpe3ZhciB0PVtdO2UubCs9NDtm''@;'; put 'put ''b3IodmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3ItLSA+MDspdC5wdXNoKGUucmVhZF9zaGlmdCgwLCJscHA0IikpO3JldHVybiB0fShuLmNvbnRlbnQpO2lmKDEhPXMubGVuZ3RofHwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIhPXNbMF0pdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNy''@;'; put 'put ''eXB0ZWQgZmlsZSBiYWQgIithKTtpZighKG49dmUuZmluZChlLGE9Ii8hRGF0YVNwYWNlcy9UcmFuc2Zvcm1JbmZvL1N0cm9uZ0VuY3J5cHRpb25UcmFuc2Zvcm0vIVByaW1hcnkiKSl8fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5n''@;'; put 'put ''ICIrYSk7IWZ1bmN0aW9uIFdoKGUpe3ZhciB0PWZ1bmN0aW9uIFVoKGUpe3ZhciB0PXt9O3JldHVybiBlLnJlYWRfc2hpZnQoNCksZS5sKz00LHQuaWQ9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSx0Lm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSx0LlI9ZHQoZSw0KSx0LlU9ZHQoZSw0KSx0''@;'; put 'put ''Llc9ZHQoZSw0KSx0fShlKTtpZih0LmVuYW1lPWUucmVhZF9zaGlmdCgwLCI4bHBwNCIpLHQuYmxrc3o9ZS5yZWFkX3NoaWZ0KDQpLHQuY21vZGU9ZS5yZWFkX3NoaWZ0KDQpLDQhPWUucmVhZF9zaGlmdCg0KSl0aHJvdyBuZXcgRXJyb3IoIkJhZCAhUHJpbWFyeSByZWNvcmQiKTtyZXR1cm4g''@;'; put 'put ''dH0obi5jb250ZW50KX1jYXRjaHt9aWYoIShuPXZlLmZpbmQoZSxhPSIvRW5jcnlwdGlvbkluZm8iKSl8fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrYSk7dmFyIGY9ZnVuY3Rpb24gSGgoZSl7dmFyIHQ9ZHQoZSk7c3dpdGNo''@;'; put 'put ''KHQuTWlub3Ipe2Nhc2UgMjpyZXR1cm5bdC5NaW5vcixWaChlKV07Y2FzZSAzOnJldHVyblt0Lk1pbm9yLFhoKCldO2Nhc2UgNDpyZXR1cm5bdC5NaW5vcixHaChlKV19dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSB1bnJlY29nbml6ZWQgVmVyc2lvbjogIit0Lk1p''@;'; put 'put ''bm9yKX0obi5jb250ZW50KTtpZighKG49dmUuZmluZChlLGE9Ii9FbmNyeXB0ZWRQYWNrYWdlIikpfHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK2EpO2lmKDQ9PWZbMF0mJnR5cGVvZiBkZWNyeXB0X2FnaWxlPCJ1IilyZXR1''@;'; put 'put ''cm4gZGVjcnlwdF9hZ2lsZShmWzFdLG4uY29udGVudCxyLnBhc3N3b3JkfHwiIixyKTtpZigyPT1mWzBdJiZ0eXBlb2YgZGVjcnlwdF9zdGQ3NjwidSIpcmV0dXJuIGRlY3J5cHRfc3RkNzYoZlsxXSxuLmNvbnRlbnQsci5wYXNzd29yZHx8IiIscik7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlz''@;'; put 'put ''IHBhc3N3b3JkLXByb3RlY3RlZCIpfWZ1bmN0aW9uIEtuKGUsdCl7dmFyIHI9IiI7c3dpdGNoKCh0fHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSxlWzddXTtjYXNlImJhc2U2NCI6''@;'; put 'put ''cj1PcihlLnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6cj1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyh0JiZ0LnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW3IuY2hhckNvZGVBdCgwKSxyLmNoYXJDb2RlQXQoMSksci5jaGFy''@;'; put 'put ''Q29kZUF0KDIpLHIuY2hhckNvZGVBdCgzKSxyLmNoYXJDb2RlQXQoNCksci5jaGFyQ29kZUF0KDUpLHIuY2hhckNvZGVBdCg2KSxyLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIHZjKGUsdCl7dmFyIHI9MDtlOmZvcig7cjxlLmxlbmd0aDspc3dpdGNoKGUuY2hhckNvZGVBdChyKSl7Y2FzZSAx''@;'; put 'put ''MDpjYXNlIDEzOmNhc2UgMzI6KytyO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIFVuKGUuc2xpY2UociksdCk7ZGVmYXVsdDpicmVhayBlfXJldHVybiBjYS50b193b3JrYm9vayhlLHQpfWZ1bmN0aW9uIFluKGUsdCxyLGEpe3JldHVybiBhPyhyLnR5cGU9InN0cmluZyIsY2EudG9fd29ya2Jvb2so''@;'; put 'put ''ZSxyKSk6Y2EudG9fd29ya2Jvb2sodCxyKX1mdW5jdGlvbiBJMChlLHQpe3IwKCk7dmFyIHI9dHx8e307aWYodHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBJMChuZXcgVWludDhBcnJheShlKSwoKHI9TWUocikpLnR5cGU9ImFycmF5Iixy''@;'; put 'put ''KSk7dHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSYmIXIudHlwZSYmKHIudHlwZT10eXBlb2YgRGVubzwidSI/ImJ1ZmZlciI6ImFycmF5Iik7dmFyIG4sYT1lLGk9ITE7aWYoci5jZWxsU3R5bGVzJiYoci5jZWxsTkY9ITAsci5zaGVldFN0dWJzPSEwKSxo''@;'; put 'put ''YT17fSxyLmRhdGVORiYmKGhhLmRhdGVORj1yLmRhdGVORiksci50eXBlfHwoci50eXBlPVNlJiZCdWZmZXIuaXNCdWZmZXIoZSk/ImJ1ZmZlciI6ImJhc2U2NCIpLCJmaWxlIj09ci50eXBlJiYoci50eXBlPVNlPyJidWZmZXIiOiJiaW5hcnkiLGE9ZnVuY3Rpb24gY28oZSl7aWYodHlwZW9m''@;'; put 'put ''IERlbm88InUiKXJldHVybiBEZW5vLnJlYWRGaWxlU3luYyhlKTtpZih0eXBlb2YgJDwidSImJnR5cGVvZiBGaWxlPCJ1IiYmdHlwZW9mIEZvbGRlcjwidSIpdHJ5e3ZhciB0PUZpbGUoZSk7dC5vcGVuKCJyIiksdC5lbmNvZGluZz0iYmluYXJ5Ijt2YXIgcj10LnJlYWQoKTtyZXR1cm4gdC5j''@;'; put 'put ''bG9zZSgpLHJ9Y2F0Y2goYSl7aWYoIWEubWVzc2FnZXx8IWEubWVzc2FnZS5tYXRjaCgvb25zdHJ1Y3QvKSl0aHJvdyBhfXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGFjY2VzcyBmaWxlICIrZSl9KGUpLHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmIVNlJiYoci50eXBlPSJhcnJheSIpKSwic3Ry''@;'; put 'put ''aW5nIj09ci50eXBlJiYoaT0hMCxyLnR5cGU9ImJpbmFyeSIsci5jb2RlcGFnZT02NTAwMSxhPWZ1bmN0aW9uIGZnKGUpe3JldHVybiBlLm1hdGNoKC9bXlx4MDAtXHg3Rl0vKT90dChlKTplfShlKSksImFycmF5Ij09ci50eXBlJiZ0eXBlb2YgVWludDhBcnJheTwidSImJmUgaW5zdGFuY2Vv''@;'; put 'put ''ZiBVaW50OEFycmF5JiZ0eXBlb2YgQXJyYXlCdWZmZXI8InUiKXt2YXIgcz1uZXcgQXJyYXlCdWZmZXIoMyksZj1uZXcgVWludDhBcnJheShzKTtpZihmLmZvbz0iYmFyIiwhZi5mb28pcmV0dXJuKHI9TWUocikpLnR5cGU9ImFycmF5IixJMChNMChhKSxyKX1zd2l0Y2goKG49S24oYSxyKSlb''@;'; put 'put ''MF0pe2Nhc2UgMjA4OmlmKDIwNz09PW5bMV0mJjE3PT09blsyXSYmMjI0PT09blszXSYmMTYxPT09bls0XSYmMTc3PT09bls1XSYmMjY9PT1uWzZdJiYyMjU9PT1uWzddKXJldHVybiBmdW5jdGlvbiBhZyhlLHQpe3JldHVybiB2ZS5maW5kKGUsIkVuY3J5cHRlZFBhY2thZ2UiKT9lZyhlLHQp''@;'; put 'put ''OktmKGUsdCl9KHZlLnJlYWQoYSxyKSxyKTticmVhaztjYXNlIDk6aWYoblsxXTw9OClyZXR1cm4gS2YoYSxyKTticmVhaztjYXNlIDYwOnJldHVybiBVbihhLHIpO2Nhc2UgNzM6aWYoNzM9PT1uWzFdJiY0Mj09PW5bMl0mJjA9PT1uWzNdKXRocm93IG5ldyBFcnJvcigiVElGRiBJbWFnZSBG''@;'; put 'put ''aWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7aWYoNjg9PT1uWzFdKXJldHVybiBmdW5jdGlvbiBnaChlLHQpe3ZhciByPXR8fHt9LGE9ISFyLldURjtyLldURj0hMDt0cnl7dmFyIG49ZWYudG9fd29ya2Jvb2soZSxyKTtyZXR1cm4gci5XVEY9YSxufWNhdGNoKGkpe2lmKHIuV1RGPWEsIWku''@;'; put 'put ''bWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykmJmEpdGhyb3cgaTtyZXR1cm4gY2EudG9fd29ya2Jvb2soZSx0KX19KGEscik7YnJlYWs7Y2FzZSA4NDppZig2NT09PW5bMV0mJjY2PT09blsyXSYmNzY9PT1uWzNdKXJldHVybiByZi50b193b3JrYm9vayhhLHIpO2JyZWFrO2Nh''@;'; put 'put ''c2UgODA6cmV0dXJuIDc1PT09blsxXSYmblsyXTw5JiZuWzNdPDk/ZnVuY3Rpb24gbmcoZSx0KXt2YXIgYT1lLG49dHx8e307cmV0dXJuIG4udHlwZXx8KG4udHlwZT1TZSYmQnVmZmVyLmlzQnVmZmVyKGUpPyJidWZmZXIiOiJiYXNlNjQiKSxRbShSaShhLG4pLG4pfShhLHIpOlluKGUsYSxy''@;'; put 'put ''LGkpO2Nhc2UgMjM5OnJldHVybiA2MD09PW5bM10/VW4oYSxyKTpZbihlLGEscixpKTtjYXNlIDI1NTppZigyNTQ9PT1uWzFdKXJldHVybiBmdW5jdGlvbiBzZyhlLHQpe3ZhciByPWU7cmV0dXJuImJhc2U2NCI9PXQudHlwZSYmKHI9T3IocikpLHI9T2UudXRpbHMuZGVjb2RlKDEyMDAsci5z''@;'; put 'put ''bGljZSgyKSwic3RyIiksdC50eXBlPSJiaW5hcnkiLHZjKHIsdCl9KGEscik7aWYoMD09PW5bMV0mJjI9PT1uWzJdJiYwPT09blszXSlyZXR1cm4ganQudG9fd29ya2Jvb2soYSxyKTticmVhaztjYXNlIDA6aWYoMD09PW5bMV0mJihuWzJdPj0yJiYwPT09blszXXx8MD09PW5bMl0mJig4PT09''@;'; put 'put ''blszXXx8OT09PW5bM10pKSlyZXR1cm4ganQudG9fd29ya2Jvb2soYSxyKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIFRuLnRvX3dvcmtib29rKGEscik7Y2FzZSAxMjM6aWYoOTI9PT1uWzFdJiYxMTQ9PT1uWzJdJiYxMTY9PT1uWzNdKXJldHVybiBv''@;'; put 'put ''Zi50b193b3JrYm9vayhhLHIpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBmdW5jdGlvbiBpZyhlLHQpe3ZhciByPSIiLGE9S24oZSx0KTtzd2l0Y2godC50eXBlKXtjYXNlImJhc2U2NCI6cj1PcihlKTticmVhaztjYXNlImJpbmFyeSI6cj1lO2JyZWFrO2Nhc2UiYnVm''@;'; put 'put ''ZmVyIjpyPWUudG9TdHJpbmcoImJpbmFyeSIpO2JyZWFrO2Nhc2UiYXJyYXkiOnI9UHQoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrdC50eXBlKX1yZXR1cm4gMjM5PT1hWzBdJiYxODc9PWFbMV0mJjE5MT09YVsyXSYmKHI9QmUocikpLHQu''@;'; put 'put ''dHlwZT0iYmluYXJ5Iix2YyhyLHQpfShhLHIpO2Nhc2UgMTM3OmlmKDgwPT09blsxXSYmNzg9PT1uWzJdJiY3MT09PW5bM10pdGhyb3cgbmV3IEVycm9yKCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpfXJldHVybiBtaC5pbmRleE9mKG5bMF0pPi0xJiZuWzJdPD0xMiYm''@;'; put 'put ''blszXTw9MzE/VG4udG9fd29ya2Jvb2soYSxyKTpZbihlLGEscixpKX1mdW5jdGlvbiBfYyhlLHQscixhLG4saSxzLGYpe3ZhciBjPUtlKHIpLG89Zi5kZWZ2YWwsbD1mLnJhd3x8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLCJyYXciKSxoPSEwLHg9MT09PW4/W106''@;'; put 'put ''e307aWYoMSE9PW4paWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoeCwiX19yb3dOdW1fXyIse3ZhbHVlOnIsZW51bWVyYWJsZTohMX0pfWNhdGNoe3guX19yb3dOdW1fXz1yfWVsc2UgeC5fX3Jvd051bV9fPXI7aWYoIXN8fGVbcl0pZm9yKHZhciBk''@;'; put 'put ''PXQucy5jO2Q8PXQuZS5jOysrZCl7dmFyIHY9cz9lW3JdW2RdOmVbYVtkXStjXTtpZih2b2lkIDAhPT12JiZ2b2lkIDAhPT12LnQpe3ZhciB1PXYudjtzd2l0Y2godi50KXtjYXNlInoiOmlmKG51bGw9PXUpYnJlYWs7Y29udGludWU7Y2FzZSJlIjp1PTA9PXU/bnVsbDp2b2lkIDA7YnJlYWs7''@;'; put 'put ''Y2FzZSJzIjpjYXNlImQiOmNhc2UiYiI6Y2FzZSJuIjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHR5cGUgIit2LnQpfWlmKG51bGwhPWlbZF0pe2lmKG51bGw9PXUpaWYoImUiPT12LnQmJm51bGw9PT11KXhbaVtkXV09bnVsbDtlbHNlIGlmKHZvaWQgMCE9''@;'; put 'put ''PW8peFtpW2RdXT1vO2Vsc2V7aWYoIWx8fG51bGwhPT11KWNvbnRpbnVlO3hbaVtkXV09bnVsbH1lbHNlIHhbaVtkXV09bCYmKCJuIiE9PXYudHx8Im4iPT09di50JiYhMSE9PWYucmF3TnVtYmVycyk/dTphdCh2LHUsZik7bnVsbCE9dSYmKGg9ITEpfX1lbHNle2lmKHZvaWQgMD09PW8pY29u''@;'; put 'put ''dGludWU7bnVsbCE9aVtkXSYmKHhbaVtkXV09byl9fXJldHVybntyb3c6eCxpc2VtcHR5Omh9fWZ1bmN0aW9uIGVpKGUsdCxyLGEpe3ZhciBuPTE7aWYoIXIpZm9yKDtuPD02NTUzNSYmLTEhPWUuU2hlZXROYW1lcy5pbmRleE9mKHI9IlNoZWV0IituKTsrK24scj12b2lkIDApO2lmKCFyfHxl''@;'; put 'put ''LlNoZWV0TmFtZXMubGVuZ3RoPj02NTUzNSl0aHJvdyBuZXcgRXJyb3IoIlRvbyBtYW55IHdvcmtzaGVldHMiKTtpZihhJiZlLlNoZWV0TmFtZXMuaW5kZXhPZihyKT49MCl7dmFyIGk9ci5tYXRjaCgvKF4uKj8pKFxkKykkLyk7bj1pJiYraVsyXXx8MDt2YXIgcz1pJiZpWzFdfHxyO2Zvcigr''@;'; put 'put ''K247bjw9NjU1MzUmJi0xIT1lLlNoZWV0TmFtZXMuaW5kZXhPZihyPXMrbik7KytuKTt9aWYoZnVuY3Rpb24gVmYoZSx0KXtpZihlLmxlbmd0aD4zMSl7aWYodClyZXR1cm4hMTt0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWVzIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKX12YXIgcj0hMDty''@;'; put 'put ''ZXR1cm4gZnAuZm9yRWFjaChmdW5jdGlvbihhKXtpZigtMSE9ZS5pbmRleE9mKGEpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKTtyPSExfX0pLHJ9KHIpLGUuU2hlZXROYW1lcy5pbmRleE9mKHIpPj0wKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiV29ya3NoZWV0IHdpdGggbmFtZSB8IityKyJ8IGFscmVhZHkgZXhpc3RzISIpO3JldHVybiBlLlNoZWV0TmFtZXMucHVzaChyKSxlLlNoZWV0c1tyXT10LHJ9YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmV9KT0+e2NvbnN0e2RhdGE6dCxvcHRzOnJ9PWU7dHJ5''@;'; put 'put ''e2NvbnN0IGE9STAodCxyKTtwb3N0TWVzc2FnZSh7ZXZlbnQ6InJlYWRpbmdfZW5kIix3b3JrYm9vazphfSl9Y2F0Y2goYSl7YS5tZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoInBhc3N3b3JkIikmJnBvc3RNZXNzYWdlKHtlcnJvcjphfSl9fSl9KSgpOw=='';'; put 'run;'; put '%sasjsout(JS64)'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %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 ''ZWY9ImltYWdlcy9mYXZpY29uLmljbyIvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzLjZlNjgzOWZiODY2OWMxMTguY3NzIj48L2hlYWQ+CgogIDwhLS0KICAgICMjIFNBU0pTIEFkYXB0ZXIgY29uZmlnIGRldGFpbHMgIyMKCiAgICAqIGFwcExvYzogVGhlIGxvY2F0''@;'; put 'put ''aW9uIGluIG1ldGFkYXRhIG9yIFNBUyBkcml2ZSB3aGVyZSBEQyB3aWxsIGJlIGRlcGxveWVkCiAgICAqIHNlcnZlclR5cGU6IGVpdGhlciBTQVM5LCBTQVNWSVlBIG9yIFNBU0pTCiAgICAqIGxvZ2luTWVjaGFuaXNtOiBVc2UgJ0RlZmF1bHQnIGZvciByZWd1bGFyICh1c2VyL3Bhc3MpIGxv''@;'; put 'put ''Z2lucywgb3IgJ1JlZGlyZWN0ZWQnIGZvciAyRkEvU1NPCiAgICAqIGRlYnVnOiBXaGV0aGVyIHRvIGVuYWJsZSBkZWJ1ZyBvbiBzdGFydHVwCgogICAgIyMgVml5YSBvbmx5IHNldHRpbmdzICMjCiAgICAqIGFkbWluR3JvdXA6IFRoaXMgZ3JvdXAgd2lsbCBoYXZlIHVucmVzdHJpY3RlZCBh''@;'; put 'put ''Y2Nlc3MgKFZpeWEgT25seSkKICAgICogZGNQYXRoOiBUaGUgcGh5c2ljYWwgbG9jYXRpb24gaW4gd2hpY2ggdG8gZGVwbG95IHRoZSBzdGFnaW5nIGFyZWEgKFZpeWEgb25seSkKICAgICogdXNlQ29tcHV0ZUFwaTogQ29ubmVjdGlvbiBtZXRob2QgKFZpeWEgb25seSkKICAgICogY29udGV4''@;'; put 'put ''dE5hbWU6IENvbXB1dGUgQ29udGV4dCAoVml5YSBvbmx5KQoKICAtLT4KCiAgPHNhc2pzIHNlcnZlcnVybD0iIiBhcHBsb2M9Ii9QdWJsaWMvYXBwL2RjIiBzZXJ2ZXJ0eXBlPSJTQVNKUyIgbG9naW5tZWNoYW5pc209IkRlZmF1bHQiIGRlYnVnPSJmYWxzZSIgdXNlY29tcHV0ZWFwaT0idHJ1''@;'; put 'put ''ZSIgY29udGV4dG5hbWU9IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCIgYWRtaW5ncm91cD0ic2VjLXNhczktcHJkLWludC1zYXNwbGF0Zm9ybS0zMDAxMTRzYXNqcyIgZGNwYXRoPSIvdG1wL2RjIiBob3RsaWNlbmNla2V5PSJub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlv''@;'; put 'put ''biI+CiAgPC9zYXNqcz4KCiAgPGJvZHkgY2RzLXRoZW1lPSJsaWdodCIgY2xhc3M9Im0tMCI+CiAgICA8bXktYXBwPjwvbXktYXBwPgogIDxzY3JpcHQgc3JjPSJydW50aW1lLjYwOTVjMDhhNjVmMjUzZjEuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9InBvbHlmaWxs''@;'; put 'put ''cy45ZWMxYTU2YThkZDE5OGNmLmpzIiB0eXBlPSJtb2R1bGUiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJzY3JpcHRzLmY0MThkN2U3MWRiZmQzMDkuanMiIGRlZmVyPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJtYWluLmRiYTY2MDBmNDhhODU1NDMuanMiIHR5cGU9Im1vZHVsZSI+PC9zY3JpcHQ+''@;'; put 'put ''PC9ib2R5Pgo8L2h0bWw+Cg=='';'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear; %let service=main.dba6600f48a85543-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 ''KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s3OTJdLHszNzQ4MjpmdW5jdGlvbihRZSl7UWUuZXhwb3J0cz1mdW5jdGlvbihNZSl7dmFyIFI9e307ZnVuY3Rpb24gb2UoeCl7aWYoUlt4XSlyZXR1cm4g''@;'; put 'put ''Ult4XS5leHBvcnRzO3ZhciBtPVJbeF09e2k6eCxsOiExLGV4cG9ydHM6e319O3JldHVybiBNZVt4XS5jYWxsKG0uZXhwb3J0cyxtLG0uZXhwb3J0cyxvZSksbS5sPSEwLG0uZXhwb3J0c31yZXR1cm4gb2UubT1NZSxvZS5jPVIsb2UuZD1mdW5jdGlvbih4LG0sc2Upe29lLm8oeCxtKXx8T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KHgsbSx7ZW51bWVyYWJsZTohMCxnZXQ6c2V9KX0sb2Uucj1mdW5jdGlvbih4KXt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoeCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxvZS50PWZ1bmN0aW9uKHgsbSl7aWYoMSZtJiYoeD1vZSh4KSksOCZtfHw0Jm0mJiJvYmplY3QiPT10eXBlb2YgeCYmeCYmeC5fX2VzTW9kdWxlKXJldHVybiB4O3ZhciBzZT1PYmplY3QuY3JlYXRlKG51''@;'; put 'put ''bGwpO2lmKG9lLnIoc2UpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZSwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6eH0pLDImbSYmInN0cmluZyIhPXR5cGVvZiB4KWZvcih2YXIgTSBpbiB4KW9lLmQoc2UsTSxmdW5jdGlvbihPKXtyZXR1cm4geFtPXX0uYmluZChudWxsLE0pKTty''@;'; put 'put ''ZXR1cm4gc2V9LG9lLm49ZnVuY3Rpb24oeCl7dmFyIG09eCYmeC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHguZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4geH07cmV0dXJuIG9lLmQobSwiYSIsbSksbX0sb2Uubz1mdW5jdGlvbih4LG0pe3JldHVybiBPYmplY3QucHJvdG90eXBl''@;'; put 'put ''Lmhhc093blByb3BlcnR5LmNhbGwoeCxtKX0sb2UucD0iIixvZShvZS5zPSIuL3Byb2plY3RzL2ljb25zL3NyYy9pbmRleC50cyIpfSh7Ii4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1hcGkudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5k''@;'; put 'put ''ICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSLkNsYXJpdHlJY29uc0FwaT12b2lkIDA7dmFyIHg9b2UoCi8qISAuL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyICovCiIuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLG09e30sc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBNKCl7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTS5zaW5nbGVJbnN0YW5jZXx8''@;'; put 'put ''KE0uc2luZ2xlSW5zdGFuY2U9bmV3IE0pLE0uc2luZ2xlSW5zdGFuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksTS5wcm90b3R5cGUudmFsaWRhdGVOYW1lPWZ1bmN0aW9uKE8pe2lmKDA9PT1PLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNoYXBlIG5hbWUgb3IgYWxpYXMg''@;'; put 'put ''bXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmchIik7aWYoL1xzLy50ZXN0KE8pKXRocm93IG5ldyBFcnJvcigiU2hhcGUgbmFtZSBvciBhbGlhcyBtdXN0IG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMhIik7cmV0dXJuITB9LE0ucHJvdG90eXBlLm5vcm1hbGl6ZVNoYXBl''@;'; put 'put ''TmFtZT1mdW5jdGlvbihPKXtyZXR1cm4gTy50b0xvd2VyQ2FzZSgpfSxNLnByb3RvdHlwZS5zZXRJY29uVGVtcGxhdGU9ZnVuY3Rpb24oTyxJKXt2YXIgaj1JLnRyaW0oKTt0aGlzLnZhbGlkYXRlTmFtZShPKSYmKE89dGhpcy5ub3JtYWxpemVTaGFwZU5hbWUoTyksbVtPXSYmZGVsZXRlIG1b''@;'; put 'put ''T10sbVtPXT1qLHguU2hhcGVUZW1wbGF0ZU9ic2VydmVyLmluc3RhbmNlLmVtaXRDaGFuZ2VzKE8saikpfSxNLnByb3RvdHlwZS5zZXRJY29uQWxpYXNlcz1mdW5jdGlvbihPLEksail7Zm9yKHZhciBHPTAsRD1qO0c8RC5sZW5ndGg7RysrKXt2YXIgVD1EW0ddO3RoaXMudmFsaWRhdGVOYW1l''@;'; put 'put ''KFQpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoTyxULHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT1tJXX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19LE0ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihPKXtpZigib2JqZWN0IiE9dHlwZW9mIE8pdGhyb3cgbmV3IEVycm9yKCdUaGUg''@;'; put 'put ''YXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QgbGl0ZXJhbCBwYXNzZWQgaW4gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOlxuICAgICAgICAgICAgICAgIHsgInNoYXBlLW5hbWUiOiAic2hhcGUtdGVtcGxhdGUiIH0nKTtmb3IodmFyIEkgaW4gTylPLmhhc093blByb3BlcnR5KEkpJiZ0aGlzLnNl''@;'; put 'put ''dEljb25UZW1wbGF0ZShJLE9bSV0pfSxNLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oTyl7cmV0dXJuISFtW3RoaXMubm9ybWFsaXplU2hhcGVOYW1lKE8pXX0sTS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKE8pe2lmKCFPKXJldHVybiBtO2lmKCJzdHJpbmciIT10eXBlb2YgTyl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJPbmx5IHN0cmluZyBhcmd1bWVudCBpcyBhbGxvd2VkIGluIHRoaXMgbWV0aG9kLiIpO3JldHVybiBtW3RoaXMubm9ybWFsaXplU2hhcGVOYW1lKE8pXX0sTS5wcm90b3R5cGUuYWxpYXM9ZnVuY3Rpb24oTyl7aWYoIm9iamVjdCIhPXR5cGVvZiBPKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cignVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0IGxpdGVyYWwgcGFzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0dGVybjpcbiAgICAgICAgICAgICAgICB7ICJzaGFwZS1uYW1lIjogWyJhbGlhcy1uYW1lIiwgLi4uXSB9Jyk7Zm9yKHZhciBJIGluIE8paWYoTy5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eShJKSl7aWYoIW0uaGFzT3duUHJvcGVydHkoSSkpdGhyb3cgbmV3IEVycm9yKCdBbiBpY29uICInK0krIlwiIHlvdSBhcmUgdHJ5aW5nIHRvIHNldCBhbGlhc2VzIHRvIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIENsYXJpdHkgSWNvbnMgc2V0cyEiKTt0aGlzLnNldEljb25BbGlhc2VzKG0sSSxP''@;'; put 'put ''W0ldKX19LE19KCk7Ui5DbGFyaXR5SWNvbnNBcGk9c2V9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2pl''@;'; put 'put ''Y3RzL2ljb25zL3NyYy9jbHItaWNvbnMtZWxlbWVudC50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0''@;'; put 'put ''cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuQ2xhcml0eUljb25FbGVtZW50PXZvaWQgMDt2YXIgeD1vZSgKLyohIC4vY2xyLWljb25zLWFwaSAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvY2xyLWljb25zLWFwaS50cyIpLG09b2UoCi8q''@;'; put 'put ''ISAuL3V0aWxzL3NoYXBlLXRlbXBsYXRlLW9ic2VydmVyICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyIpLHNlPTAsTT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7TS5jbGFzc05hbWU9ImlzLW9mZi1zY3JlZW4iO3ZhciBP''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIEhUTUxFbGVtZW50LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gSSgpe3ZhciBqPU8uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBqLmNsckljb25VbmlxSWQ9Il9jbHJfaWNvbl8iK3NlLHNlKyssan0ib2JqZWN0Ij09dHlwZW9mIFJlZmxl''@;'; put 'put ''Y3QmJihPPWZ1bmN0aW9uKCl7cmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KEhUTUxFbGVtZW50LGFyZ3VtZW50cyx0aGlzLmNvbnN0cnVjdG9yKX0pLFIuQ2xhcml0eUljb25FbGVtZW50PUksSS5vYnNlcnZlZEF0dHJpYnV0ZXM9WyJzaGFwZSIsInNpemUiLCJ0aXRsZSJdLChJLnByb3RvdHlw''@;'; put 'put ''ZT1PYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpJfX0pKS5jb25zdHJ1Y3Rvcj1JLEkucHJvdG90eXBlLl9hcHBlbmRDdXN0b21UaXRsZT1mdW5jdGlvbigpe3ZhciBqPU0uY2xvbmVOb2Rl''@;'; put 'put ''KCExKTtqLmlkPXRoaXMuY2xySWNvblVuaXFJZCxqLnRleHRDb250ZW50PXRoaXMuY3VycmVudFRpdGxlQXR0clZhbCx0aGlzLmFwcGVuZENoaWxkKGopfSxJLnByb3RvdHlwZS5fc2V0SWNvblNpemU9ZnVuY3Rpb24oail7IU51bWJlcihqKXx8TnVtYmVyKGopPDA/KHRoaXMuc3R5bGUud2lk''@;'; put 'put ''dGg9bnVsbCx0aGlzLnN0eWxlLmhlaWdodD1udWxsKToodGhpcy5zdHlsZS53aWR0aD1qKyJweCIsdGhpcy5zdHlsZS5oZWlnaHQ9aisicHgiKX0sSS5wcm90b3R5cGUuX25vcm1hbGl6ZVNoYXBlPWZ1bmN0aW9uKGope3JldHVybiBqLnNwbGl0KC9ccy8pWzBdLnRvTG93ZXJDYXNlKCl9LEku''@;'; put 'put ''cHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIGo9dGhpcztpZih0aGlzLmdldEF0dHJpYnV0ZSgicm9sZSIpfHx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsIm5vbmUiKSx0aGlzLmhhc0F0dHJpYnV0ZSgic2l6ZSIpKXt2YXIgRz10aGlzLmdldEF0dHJpYnV0ZSgi''@;'; put 'put ''c2l6ZSIpO3RoaXMuY3VycmVudFNpemVBdHRyVmFsIT09RyYmKHRoaXMuY3VycmVudFNpemVBdHRyVmFsPUcsdGhpcy5fc2V0SWNvblNpemUoRykpfWlmKHRoaXMuaGFzQXR0cmlidXRlKCJzaGFwZSIpKXt2YXIgRD10aGlzLl9ub3JtYWxpemVTaGFwZSh0aGlzLmdldEF0dHJpYnV0ZSgic2hh''@;'; put 'put ''cGUiKSk7aWYodGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbj1tLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyhELGZ1bmN0aW9uKHope2ouX2luamVjdFRlbXBsYXRlKHopfSksdGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPUQsIXguQ2xhcml0eUljb25z''@;'; put 'put ''QXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpKXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTt2YXIgVD14LkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZS5nZXQodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsKTtpZihUPT09dGhpcy5jdXJyZW50''@;'; put 'put ''U2hhcGVUZW1wbGF0ZSlyZXR1cm47dGhpcy5jdXJyZW50U2hhcGVUZW1wbGF0ZT1UfWlmKHRoaXMuaGFzQXR0cmlidXRlKCJ0aXRsZSIpKXt2YXIgRT10aGlzLmdldEF0dHJpYnV0ZSgidGl0bGUiKTtpZih0aGlzLmN1cnJlbnRUaXRsZUF0dHJWYWwhPT1FJiYodGhpcy5jdXJyZW50VGl0bGVB''@;'; put 'put ''dHRyVmFsPUUpLCF0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpcmV0dXJufXRoaXMuX2luamVjdFRlbXBsYXRlKCl9LEkucHJvdG90eXBlLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaz1mdW5jdGlvbihqLEcsRCl7dmFyIFQ9dGhpcztpZigic2l6ZSI9PT1qJiZ0aGlzLl9zZXRJY29uU2l6ZShE''@;'; put 'put ''KSwic2hhcGUiPT09ail7aWYodGhpcy5jdXJyZW50U2hhcGVBdHRyVmFsPXRoaXMuX25vcm1hbGl6ZVNoYXBlKEQpLHRoaXMuX3NoYXBlVGVtcGxhdGVTdWJzY3JpcHRpb24mJih0aGlzLl9zaGFwZVRlbXBsYXRlU3Vic2NyaXB0aW9uKCksdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlv''@;'; put 'put ''bj1tLlNoYXBlVGVtcGxhdGVPYnNlcnZlci5pbnN0YW5jZS5zdWJzY3JpYmVUbyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwsZnVuY3Rpb24oRSl7VC5faW5qZWN0VGVtcGxhdGUoRSl9KSksIXguQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmhhcyh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwp''@;'; put 'put ''KXJldHVybiB2b2lkIHRoaXMuX2luamVjdEVycm9yVGVtcGxhdGUoKTt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXguQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCh0aGlzLmN1cnJlbnRTaGFwZUF0dHJWYWwpfSJ0aXRsZSI9PT1qJiYodGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsPUQs''@;'; put 'put ''IXRoaXMuY3VycmVudFNoYXBlQXR0clZhbCl8fHRoaXMuX2luamVjdFRlbXBsYXRlKCl9LEkucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWZ1bmN0aW9uKCl7dGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbiYmdGhpcy5fc2hhcGVUZW1wbGF0ZVN1YnNjcmlwdGlvbigpfSxJ''@;'; put 'put ''LnByb3RvdHlwZS5fc2V0QXJpYUxhYmVsbGVkQnk9ZnVuY3Rpb24oKXt2YXIgaj10aGlzLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IiksRD10aGlzLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpfHx0aGlzO2o/aiYmai5pbmRleE9mKHRoaXMuY2xySWNvblVuaXFJZCk8MCYmRC5zZXRBdHRy''@;'; put 'put ''aWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsaisiICIrdGhpcy5jbHJJY29uVW5pcUlkKTpELnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0aGlzLmNsckljb25VbmlxSWQpfSxJLnByb3RvdHlwZS5faW5qZWN0VGVtcGxhdGU9ZnVuY3Rpb24oail7aiYmaiE9PXRoaXMuY3VycmVudFNo''@;'; put 'put ''YXBlVGVtcGxhdGUmJih0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPWopLHRoaXMuaW5uZXJIVE1MPXRoaXMuY3VycmVudFNoYXBlVGVtcGxhdGUsdGhpcy5jdXJyZW50VGl0bGVBdHRyVmFsJiYodGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKSx0aGlzLl9hcHBlbmRDdXN0b21UaXRsZSgpKX0s''@;'; put 'put ''SS5wcm90b3R5cGUuX2luamVjdEVycm9yVGVtcGxhdGU9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRTaGFwZVRlbXBsYXRlPXguQ2xhcml0eUljb25zQXBpLmluc3RhbmNlLmdldCgiZXJyb3IiKSx0aGlzLl9pbmplY3RUZW1wbGF0ZSgpfX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRz''@;'; put 'put ''IjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL2luZGV4LnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8q''@;'; put 'put ''ISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUi5DbGFyaXR5SWNvbnM9dm9pZCAwO3ZhciB4PW9lKAovKiEgLi9jbHItaWNvbnMtYXBpICovCiIu''@;'; put 'put ''L3Byb2plY3RzL2ljb25zL3NyYy9jbHItaWNvbnMtYXBpLnRzIiksbT1vZSgKLyohIC4vY2xyLWljb25zLWVsZW1lbnQgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL2Nsci1pY29ucy1lbGVtZW50LnRzIiksc2U9b2UoCi8qISAuL3NoYXBlcy9jb3JlLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9p''@;'; put 'put ''Y29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIiksTT14LkNsYXJpdHlJY29uc0FwaS5pbnN0YW5jZTtSLkNsYXJpdHlJY29ucz1NLE0uYWRkKHNlLkNvcmVTaGFwZXMpLHR5cGVvZiB3aW5kb3c8InUiJiYod2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKXx8KHdpbmRv''@;'; put 'put ''dy5DbGFyaXR5SWNvbnM9TSksY3VzdG9tRWxlbWVudHMuZ2V0KCJjbHItaWNvbiIpfHxjdXN0b21FbGVtZW50cy5kZWZpbmUoImNsci1pY29uIixtLkNsYXJpdHlJY29uRWxlbWVudCkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzIjoKLyohKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUi5Db3JlU2hhcGVzPVIuQ2xyU2hhcGVBcnJvdz1SLkNs''@;'; put 'put ''clNoYXBlU3RlcEZvcndhcmQyPVIuQ2xyU2hhcGVFeWVIaWRlPVIuQ2xyU2hhcGVFeWU9Ui5DbHJTaGFwZUV2ZW50PVIuQ2xyU2hhcGVDYWxlbmRhcj1SLkNsclNoYXBlQW5nbGVEb3VibGU9Ui5DbHJTaGFwZVZpZXdDb2x1bW5zPVIuQ2xyU2hhcGVTZWFyY2g9Ui5DbHJTaGFwZVZtQnVnPVIu''@;'; put 'put ''Q2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPVIuQ2xyU2hhcGVGaWx0ZXJHcmlkPVIuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPVIuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9Ui5DbHJTaGFwZUNsb3VkPVIuQ2xyU2hhcGVJbWFnZT1SLkNsclNoYXBlQmVsbD1SLkNsclNoYXBlRm9sZGVy''@;'; put 'put ''T3Blbj1SLkNsclNoYXBlRm9sZGVyPVIuQ2xyU2hhcGVBbmdsZT1SLkNsclNoYXBlVXNlcj1SLkNsclNoYXBlQmFycz1SLkNsclNoYXBlSGVscEluZm89Ui5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD1SLkNsclNoYXBlRXJyb3JTdGFuZGFyZD1SLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPVIu''@;'; put 'put ''Q2xyU2hhcGVJbmZvU3RhbmRhcmQ9Ui5DbHJTaGFwZUluZm9DaXJjbGU9Ui5DbHJTaGFwZUNoZWNrQ2lyY2xlPVIuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT1SLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT1SLkNsclNoYXBlVGltZXM9Ui5DbHJTaGFwZUNoZWNrPVIuQ2xyU2hhcGVD''@;'; put 'put ''b2c9Ui5DbHJTaGFwZUhvbWU9Ui5DbHJTaGFwZVVua25vd25TdGF0dXM9dm9pZCAwO3ZhciB4PW9lKAovKiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksbT1vZSgKLyohIC4uL3V0aWxzL3N2''@;'; put 'put ''Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1IuQ2xyU2hhcGVVbmtub3duU3RhdHVzPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4''@;'; put 'put ''PSIxNy41OCIgY3k9IjI2LjIzIiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI0LjcsMTNhNS4xOCw1LjE4LDAsMCwwLTIuMTYtMy41Niw3LjI2LDcuMjYsMCwwLDAtNS43MS0xLjA5QTExLjM0''@;'; put 'put ''LDExLjM0LDAsMCwwLDEyLDEwLjQ0LDEsMSwwLDEsMCwxMy4yNiwxMmE5LjMyLDkuMzIsMCwwLDEsMy45NC0xLjcyLDUuMjksNS4yOSwwLDAsMSw0LjE2Ljc0LDMuMjEsMy4yMSwwLDAsMSwxLjM1LDIuMTljLjMzLDIuNjktMy4xOSwzLjc1LTUuMzIsNC4xNGwtLjgyLjE1djQuMzZhMSwxLDAs''@;'; put 'put ''MCwwLDIsMFYxOS4xN0MyNC42MSwxNy43OSwyNC44OCwxNC40MSwyNC43LDEzWiIvPicpLFIuQ2xyU2hhcGVIb21lPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuNzEsMTcuMjlsLTE1LTE1YTEsMSwwLDAs''@;'; put 'put ''MC0xLjQxLDBsLTE1LDE1YTEsMSwwLDAsMCwxLjQxLDEuNDFMMTgsNC40MSwzMi4yOSwxOC43MWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjgsMzJoLTVWMjJIMTNW''@;'; put 'put ''MzJIOFYxOEw2LDIwVjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NmwtMi0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywxOWExLDEsMCwwLDEtLjcxLS4yOUwxOCw0''@;'; put 'put ''LjQxLDMuNzEsMTguNzFhMSwxLDAsMCwxLTEuNDEtMS40MWwxNS0xNWExLDEsMCwwLDEsMS40MSwwbDE1LDE1QTEsMSwwLDAsMSwzMywxOVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTgsNy43OSw2LDE5Ljgz''@;'; put 'put ''VjMyYTIsMiwwLDAsMCwyLDJoN1YyNGg2VjM0aDdhMiwyLDAsMCwwLDItMlYxOS43NloiLz4nKSxSLkNsclNoYXBlQ29nPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMSwxMWMtMy45LDAtNywzLjEtNyw3''@;'; 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 ''dCIgZD0iTTI2Ljg1LDEuMTQsMjEuMTMsMTFBMS4yOCwxLjI4LDAsMCwwLDIyLjIzLDEzSDMzLjY4QTEuMjgsMS4yOCwwLDAsMCwzNC43OCwxMUwyOS4wNiwxLjE0QTEuMjgsMS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFIuQ2xyU2hhcGVDaGVjaz0oMCxtLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEzLjcyLDI3LjY5LDMuMjksMTcuMjdhMSwxLDAsMCwxLDEuNDEtMS40MWw5LDlMMzEuMjksNy4yOWExLDEsMCwwLDEsMS40MSwxLjQxWiIvPicpLFIuQ2xyU2hhcGVUaW1lcz0oMCxtLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlhMSwxLDAsMSwwLDEu''@;'; put 'put ''NDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nKSxSLkNsclNoYXBlRXhjbGFtYXRpb25UcmlhbmdsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIxLjMyYTEu''@;'; put 'put ''MywxLjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4zLDEuMywwLDAsMCwxOCwyMS4zMloiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBjeD0iMTcuOTUiIGN5PSIyNC4yNyIgcj0i''@;'; put 'put ''MS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0''@;'; put 'put ''LTQuNDNabS0xLjc4LDEuOTRhMSwxLDAsMCwxLS44Ni40OUg4LjIxYTEsMSwwLDAsMS0uODgtMS40OEwxNy4wNyw4LjU1YTEsMSwwLDAsMSwxLjc2LDBsOS43NCwxNy45NEExLDEsMCwwLDEsMjguNTUsMjcuNDhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLjMzLDI1LjU0LDIwLjU5LDcuNmEzLDMsMCwwLDAtNS4yNywwTDUuNTcsMjUuNTRBMywzLDAsMCwwLDguMjEsMzBIMjcuNjlhMywzLDAsMCwwLDIuNjQtNC40M1pNMTYuNDYsMTIuNzRhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40''@;'; put 'put ''OSwwLDEsMS0zLDBaTTE4LDI2LjI1YTEuNzIsMS43MiwwLDEsMSwxLjcyLTEuNzJBMS43MiwxLjcyLDAsMCwxLDE4LDI2LjI1WiIvPicpLFIuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''ZD0iTTE4LDIwLjA3YTEuMywxLjMsMCwwLDEtMS4zLTEuM3YtNmExLjMsMS4zLDAsMSwxLDIuNiwwdjZBMS4zLDEuMywwLDAsMSwxOCwyMC4wN1oiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBjeD0iMTcuOTUi''@;'; put 'put ''IGN5PSIyMy4wMiIgcj0iMS41Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40''@;'; put 'put ''OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNS41WiIvPicpLFIuQ2xyU2hhcGVDaGVja0NpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCwwLDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0i''@;'; put 'put ''TTE2LjM0LDIzLjc0bC01LTVhMSwxLDAsMCwxLDEuNDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDE4QTEyLDEyLDAsMSwx''@;'; put 'put ''LDE4LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywxNy4xNmExLjQsMS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+JyksUi5DbHJTaGFwZUluZm9DaXJjbGU9KDAsbS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgIGN4PSIxNy45MyIgY3k9IjExLjkiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAgZD0iTTIxLDIzSDE5VjE1SDE2YTEsMSwwLDAsMCwwLDJo''@;'; put 'put ''MXY2SDE1YTEsMSwwLDEsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptMCwyMkExMCwxMCww''@;'; put 'put ''LDEsMSwyOCwxOCwxMCwxMCwwLDAsMSwxOCwyOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0tMiw1LjE1YTIsMiwwLDEsMSwyLDJBMiwy''@;'; put 'put ''LDAsMCwxLDE1LjksMTEuMTVaTTIzLDI0YTEsMSwwLDAsMS0xLDFIMTVhMSwxLDAsMSwxLDAtMmgyVjE3SDE2YTEsMSwwLDAsMSwwLTJoNHY4aDJBMSwxLDAsMCwxLDIzLDI0WiIvPicpLFIuQ2xyU2hhcGVJbmZvU3RhbmRhcmQ9KDAsbS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE3Ljk3IiBjeT0iMTAuNDUiIHI9IjEuNCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjEsMjVIMTlWMTQuMUgxNmExLDEsMCwwLDAsMCwy''@;'; put 'put ''aDFWMjVIMTVhMSwxLDAsMCwwLDAsMmg2YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwx''@;'; put 'put ''NCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWm0tLjEsNS4yOGEyLDIsMCwxLDEt''@;'; put 'put ''MiwyQTIsMiwwLDAsMSwxNy45LDcuMzhabTMuNiwyMS4yNWgtN2ExLjQsMS40LDAsMSwxLDAtMi44aDIuMXYtOS4ySDE1YTEuNCwxLjQsMCwxLDEsMC0yLjhoNC40djEyaDIuMWExLjQsMS40LDAsMSwxLDAsMi44WiIvPicpLFIuQ2xyU2hhcGVTdWNjZXNzU3RhbmRhcmQ9KDAsbS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOCwxMi4xYTEsMSwwLDAsMC0xLjQxLDBMMTUuNDksMjMuMTVsLTYtNkExLDEsMCwwLDAsOCwxOC41M0wxNS40OSwyNiwyOCwxMy41MkExLDEsMCwwLDAsMjgsMTIuMVoiLz5cbiAgICAgICAgICAgICAg''@;'; put 'put ''ICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWk0yOC40NSwxMi42MywxNS4zMSwyNS43Niw3LjU1LDE4YTEuNCwxLjQsMCwwLDEsMi0ybDUuNzgsNS43OEwyNi40NywxMC42NWEx''@;'; put 'put ''LjQsMS40LDAsMSwxLDIsMloiLz4nKSxSLkNsclNoYXBlRXJyb3JTdGFuZGFyZD0oMCxtLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTgiIGN5PSIyNi4wNiIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjIuNjFhMSwxLDAsMCwxLTEtMXYtMTJhMSwxLDAsMSwxLDIsMHYxMkExLDEsMCwwLDEsMTgsMjIuNjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWk0xNi42LDguOGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI4LjZhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjguNloiLz4n''@;'; put 'put ''KSxSLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+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+JyksUi5DbHJTaGFwZUhlbHBJbmZvPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4zOSwyNS40NWExLDEsMCwwLDAtMS4zOC4yOWMtMS40''@;'; 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 ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlQmFycz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDI5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEs''@;'; put 'put ''MCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsMTlINGExLDEsMCwwLDEsMC0ySDMyYTEsMSwwLDAsMSwwLDJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0zMiw5SDRBMSwxLDAsMCwxLDQsN0gzMmExLDEsMCwwLDEsMCwyWiIvPicpLFIuQ2xyU2hhcGVVc2VyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwxN2E3LDcsMCwxLDAtNy03QTcsNywwLDAsMCwxOCwxN1pNMTgsNWE1LDUsMCwxLDEt''@;'; 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 ''cz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlQW5nbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS41MiwyMi41''@;'; put 'put ''MiwxOCwxMC42LDYuNDgsMjIuNTJhMS43LDEuNywwLDAsMCwyLjQ1LDIuMzZMMTgsMTUuNDlsOS4wOCw5LjM5YTEuNywxLjcsMCwwLDAsMi40NS0yLjM2WiIvPicpLFIuQ2xyU2hhcGVGb2xkZXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; 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 ''JyksUi5DbHJTaGFwZUZvbGRlck9wZW49KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwyLjU5LDAsMCwwLTIuMjUsMS41Miwx''@;'; 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 ''ZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlQmVsbD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLjUxLDI3Ljgz''@;'; 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+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFIuQ2xyU2hhcGVJbWFnZT0oMCxt''@;'; 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 ''Y2xyLWktYmFkZ2UiLz4nKSxSLkNsclNoYXBlQ2xvdWQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy4xNCwzM0gxMC42MkM1LjY3LDMzLDEsMjguMTksMSwyMy4xYTEwLDEwLDAsMCwxLDgtOS43NSwxMC4x''@;'; 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 ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFIuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWw9KDAsbS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAg''@;'; put 'put ''ICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzEuMSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMy0tYmFkZ2VkIiAv''@;'; put 'put ''PlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiAgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtNC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFIuQ2xyU2hhcGVFbGxpcHNpc1ZlcnRpY2FsPSgwLG0uY2xySWNvblNWRyko''@;'; put 'put ''JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''LS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2VkIiAvPlxuICAgICAgICAgICAgPGNp''@;'; put 'put ''cmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlRmlsdGVyR3JpZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCww''@;'; put 'put ''LDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjha''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTgsMTF2MS4xMmEuNS41LDAsMCwwLC4xNS4zNWw3LjI4LDcuMzZhLjUuNSwwLDAsMSwuMTUuMzV2Ni44OWEuNS41LDAsMCwwLC4yOC40NWwzLjk1LDEuNDFhLjUuNSww''@;'; put 'put ''LDAsMCwuNzItLjQ1bDAtOC4zOWEuNTQuNTQsMCwwLDEsLjE4LS4zNWw3LjEyLTcuMjVhLjUuNSwwLDAsMCwuMTUtLjM1VjExWiIvPicpLFIuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0xIiBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCww''@;'; put 'put ''LTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCww''@;'; put 'put ''LDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0''@;'; put 'put ''LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVs''@;'; put 'put ''My45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxSLkNsclNoYXBlVm1CdWc9KDAsbS5jbHJJY29uU1ZHKSgnPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiByeD0iMyIg''@;'; put 'put ''ZmlsbD0iI2ZmZmZmZiIgb3BhY2l0eT0iMC4xNSIgc3R5bGU9Imlzb2xhdGlvbjppc29sYXRlIi8+PHBhdGggZD0iTTMuNzksMTQuODNhMS4wOSwxLjA5LDAsMCwwLTEuNDctLjU2LDEuMDksMS4wOSwwLDAsMC0uNTQsMS40OWwyLjQ3LDUuNGMuMzkuODUuOCwxLjI5LDEuNTcsMS4yOVM3LDIy''@;'; put 'put ''LDcuMzksMjEuMTZsMi4xNy00Ljc3YS4zMy4zMywwLDAsMSwuMzEtLjIuMzUuMzUsMCwwLDEsLjM1LjM1djQuNjFhMS4xNSwxLjE1LDAsMCwwLDEuMTQsMS4zLDEuMTcsMS4xNywwLDAsMCwxLjE3LTEuM1YxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEu''@;'; put 'put ''MTgsMS4ydjMuNzdhMS4xNywxLjE3LDAsMSwwLDIuMzIsMFYxNy4zOGExLjE1LDEuMTUsMCwwLDEsMS4yMi0xLjIsMS4xMywxLjEzLDAsMCwxLDEuMTgsMS4ydjMuNzdhMS4xNiwxLjE2LDAsMSwwLDIuMzEsMFYxNi44NmEyLjY5LDIuNjksMCwwLDAtMi43OC0yLjY5LDMuNTcsMy41NywwLDAs''@;'; put 'put ''MC0yLjQ3LDEuMDUsMi43NSwyLjc1LDAsMCwwLTIuMzgtMS4wNUEzLjkzLDMuOTMsMCwwLDAsMTIsMTUuMjJhMi44MiwyLjgyLDAsMCwwLTIuMDgtMS4wNUEyLjU1LDIuNTUsMCwwLDAsNy40LDE1Ljg5TDUuODIsMTkuNjNsLTItNC44IiBmaWxsPSIjZmZmZmZmIi8+PHBhdGggZD0iTTMzLDE0''@;'; put 'put ''LjE4QTEuMTQsMS4xNCwwLDAsMCwzMS45LDE1bC0xLjE5LDMuNzNMMjkuNSwxNS4wNWExLjE4LDEuMTgsMCwwLDAtMS4xNS0uODdoLS4xYTEuMiwxLjIsMCwwLDAtMS4xNS44N2wtMS4xOSwzLjcxLTEuMTgtMy43MWExLjE1LDEuMTUsMCwwLDAtMS4xMS0uODcsMS4wOCwxLjA4LDAsMCwwLTEu''@;'; put 'put ''MTIsMS4wNywxLjY4LDEuNjgsMCwwLDAsLjEuNTRsMiw1LjdhMS4yNywxLjI3LDAsMCwwLDEuMjcsMSwxLjI0LDEuMjQsMCwwLDAsMS4yLS45M2wxLjItMy42NCwxLjIsMy42NGExLjI1LDEuMjUsMCwwLDAsMS4yNi45M0ExLjI3LDEuMjcsMCwwLDAsMzIsMjEuNUwzNCwxNS43M2ExLjc3LDEu''@;'; put 'put ''NzcsMCwwLDAsLjA4LS40OEExLjA3LDEuMDcsMCwwLDAsMzMsMTQuMThaIiBmaWxsPSIjZmZmZmZmIi8+JyksUi5DbHJTaGFwZVNlYXJjaD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjMzLDUuMDVBMTAu''@;'; put 'put ''OTUsMTAuOTUsMCwxLDEsNS4zOSwxNiwxMSwxMSwwLDAsMSwxNi4zMyw1LjA1bTAtMi4wNWExMywxMywwLDEsMCwxMywxMywxMywxMywwLDAsMC0xMy0xM1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTM1''@;'; put 'put ''LDMzLjI5bC03LjM3LTcuNDItMS40MiwxLjQxLDcuMzcsNy40MkExLDEsMCwxLDAsMzUsMzMuMjlaIi8+JyksUi5DbHJTaGFwZVZpZXdDb2x1bW5zPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsNUg1QTIs''@;'; put 'put ''MiwwLDAsMCwzLDdWMjlhMiwyLDAsMCwwLDIsMkgzMWEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMxLDVaTTEzLDI5SDVWN2g4Wm0xMCwwSDE1VjdoOFoiLz4nKSxSLkNsclNoYXBlQW5nbGVEb3VibGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOSwxOS40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCw4LjgzLDcuNzEsMTkuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCw2LDI5LjcxLDE3LjcxQTEsMSwwLDAsMSwyOSwxOS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI5LDMwLjQxYTEsMSwwLDAsMS0uNzEtLjI5TDE4LDE5LjgzLDcuNzEsMzAuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCwxNywyOS43MSwyOC43MUExLDEsMCwwLDEsMjksMzAuNDFaIi8+JyksUi5DbHJTaGFwZUNhbGVuZGFyPSgw''@;'; put 'put ''LG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuMjUsNkgyOVY4aDNWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEu''@;'; 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 ''MS4yOCwwLDAsMCwyNi44NSwxLjE0WiIvPicpLFIuQ2xyU2hhcGVFdmVudD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE2LjE3LDI1Ljg2LDEwLjgxLDIwLjVhMSwxLDAsMCwxLDEuNDEtMS40MUwxNi4xNywy''@;'; 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+JyksUi5DbHJTaGFwZUV5ZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4y''@;'; put 'put ''My05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44''@;'; put 'put ''LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAsMSwwLDI1LDE4''@;'; put 'put ''LDYuODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwxLDE4LjA5LDIyLjg5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy42Miwx''@;'; put 'put ''Ny41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcsMjMuMjksNCwxOGMzLTUuMjks''@;'; put 'put ''OC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTguMDkiIGN5PSIxOC4wMyIgcj0i''@;'; put 'put ''Ni44NiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPicpLFIuQ2xyU2hhcGVFeWVIaWRlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS4xOSwyMC40QTYuNzgsNi43OCwwLDAsMCwyNS42MiwxOGE2Ljg2LDYuODYsMCwwLDAtNi44Ni02Ljg2LDYuNzksNi43''@;'; 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 ''LDAsMS01Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFIuQ2xyU2hhcGVTdGVwRm9yd2FyZDI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0i''@;'; put 'put ''TTcuMDgsNi41MmExLjY4LDEuNjgsMCwwLDAsMCwyLjRMMTYuNTEsMTgsNy4xMiwyNy4wOGExLjcsMS43LDAsMCwwLDIuMzYsMi40NGgwTDIxLjQsMTgsOS40OCw2LjQ3QTEuNjksMS42OSwwLDAsMCw3LjA4LDYuNTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIgLz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0ExLjcsMS43LDAsMCwwLDI2LjQ5LDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlQXJyb3c9KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LjY2LDE1LjYxLDE4LDYsOC4zNCwxNS42MUExLDEsMCwxLDAsOS43NSwxN0wxNyw5LjgxVjI4Ljk0YTEsMSwwLDEsMCwyLDBWOS44MUwyNi4yNSwxN2ExLDEsMCwwLDAsMS40MS0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiLz4nKSxSLkNvcmVTaGFwZXM9eyJ1bmtub3duLXN0YXR1cyI6Ui5DbHJTaGFwZVVua25vd25TdGF0dXMsaG9tZTpSLkNsclNoYXBlSG9tZSxjb2c6Ui5DbHJTaGFwZUNvZyxjaGVjazpSLkNsclNoYXBlQ2hlY2ssdGltZXM6Ui5DbHJTaGFwZVRpbWVzLCJleGNsYW1hdGlv''@;'; put 'put ''bi10cmlhbmdsZSI6Ui5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGUsImV4Y2xhbWF0aW9uLWNpcmNsZSI6Ui5DbHJTaGFwZUV4Y2xhbWF0aW9uQ2lyY2xlLCJjaGVjay1jaXJjbGUiOlIuQ2xyU2hhcGVDaGVja0NpcmNsZSwiaW5mby1jaXJjbGUiOlIuQ2xyU2hhcGVJbmZvQ2lyY2xlLCJp''@;'; put 'put ''bmZvLXN0YW5kYXJkIjpSLkNsclNoYXBlSW5mb1N0YW5kYXJkLCJzdWNjZXNzLXN0YW5kYXJkIjpSLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkLCJlcnJvci1zdGFuZGFyZCI6Ui5DbHJTaGFwZUVycm9yU3RhbmRhcmQsIndhcm5pbmctc3RhbmRhcmQiOlIuQ2xyU2hhcGVXYXJuaW5nU3RhbmRh''@;'; put 'put ''cmQsImhlbHAtaW5mbyI6Ui5DbHJTaGFwZUhlbHBJbmZvLGJhcnM6Ui5DbHJTaGFwZUJhcnMsdXNlcjpSLkNsclNoYXBlVXNlcixhbmdsZTpSLkNsclNoYXBlQW5nbGUsZm9sZGVyOlIuQ2xyU2hhcGVGb2xkZXIsImZvbGRlci1vcGVuIjpSLkNsclNoYXBlRm9sZGVyT3BlbixiZWxsOlIuQ2xy''@;'; put 'put ''U2hhcGVCZWxsLGltYWdlOlIuQ2xyU2hhcGVJbWFnZSxjbG91ZDpSLkNsclNoYXBlQ2xvdWQsImVsbGlwc2lzLWhvcml6b250YWwiOlIuQ2xyU2hhcGVFbGxpcHNpc0hvcml6b250YWwsImVsbGlwc2lzLXZlcnRpY2FsIjpSLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbCwiZmlsdGVyLWdyaWQi''@;'; put 'put ''OlIuQ2xyU2hhcGVGaWx0ZXJHcmlkLCJmaWx0ZXItZ3JpZC1jaXJjbGUiOlIuQ2xyU2hhcGVGaWx0ZXJHcmlkQ2lyY2xlLCJ2bS1idWciOlIuQ2xyU2hhcGVWbUJ1ZyxzZWFyY2g6Ui5DbHJTaGFwZVNlYXJjaCwidmlldy1jb2x1bW5zIjpSLkNsclNoYXBlVmlld0NvbHVtbnMsImFuZ2xlLWRv''@;'; put 'put ''dWJsZSI6Ui5DbHJTaGFwZUFuZ2xlRG91YmxlLGNhbGVuZGFyOlIuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpSLkNsclNoYXBlRXZlbnQsZXllOlIuQ2xyU2hhcGVFeWUsImV5ZS1oaWRlIjpSLkNsclNoYXBlRXllSGlkZSwic3RlcC1mb3J3YXJkLTIiOlIuQ2xyU2hhcGVTdGVwRm9yd2FyZDIs''@;'; put 'put ''YXJyb3c6Ui5DbHJTaGFwZUFycm93fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJob3VzZSIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuaG9tZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsInNldHRpbmdzIiwoMCx4LmRlc2Ny''@;'; put 'put ''aXB0b3JDb25maWcpKFIuQ29yZVNoYXBlcy5jb2cpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJzdWNjZXNzIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlcy5jaGVjaykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImNsb3NlIiwo''@;'; put 'put ''MCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlcy50aW1lcykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsIndhcm5pbmciLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi10cmlhbmdsZSJdKSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KFIuQ29yZVNoYXBlcywiZXJyb3IiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzWyJleGNsYW1hdGlvbi1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImluZm8iLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVz''@;'; put 'put ''WyJpbmZvLWNpcmNsZSJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuQ29yZVNoYXBlcywibWVudSIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuYmFycykpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImF2YXRhciIsKDAseC5kZXNjcmlwdG9yQ29u''@;'; put 'put ''ZmlnKShSLkNvcmVTaGFwZXMudXNlcikpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImNhcmV0IiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlcy5hbmdsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImRpcmVjdG9yeSIsKDAseC5k''@;'; put 'put ''ZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuZm9sZGVyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuQ29yZVNoYXBlcywibm90aWZpY2F0aW9uIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlcy5iZWxsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuQ29yZVNoYXBl''@;'; put 'put ''cywiY29sbGFwc2UiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzWyJhbmdsZS1kb3VibGUiXSkpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''Ki8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSLmRlc2NyaXB0b3JDb25maWc9dm9pZCAwLFIuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlv''@;'; put 'put ''biB4KG0pe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTptfX19LCIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zaGFwZS10ZW1wbGF0ZS1vYnNlcnZlci50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuU2hhcGVUZW1wbGF0ZU9ic2VydmVyPVIuY2hh''@;'; put 'put ''bmdlSGFuZGxlckNhbGxiYWNrcz12b2lkIDAsUi5jaGFuZ2VIYW5kbGVyQ2FsbGJhY2tzPXt9O3ZhciB4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbSgpe3RoaXMuY2FsbGJhY2tzPVIuY2hhbmdlSGFuZGxlckNhbGxiYWNrc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sImluc3RhbmNl''@;'; put 'put ''Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0uc2luZ2xlSW5zdGFuY2V8fChtLnNpbmdsZUluc3RhbmNlPW5ldyBtKSxtLnNpbmdsZUluc3RhbmNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG0ucHJvdG90eXBlLnN1YnNjcmliZVRvPWZ1bmN0aW9uKHNlLE0pe3ZhciBPPXRo''@;'; put 'put ''aXM7cmV0dXJuIHRoaXMuY2FsbGJhY2tzW3NlXT8tMT09PXRoaXMuY2FsbGJhY2tzW3NlXS5pbmRleE9mKE0pJiZ0aGlzLmNhbGxiYWNrc1tzZV0ucHVzaChNKTp0aGlzLmNhbGxiYWNrc1tzZV09W01dLGZ1bmN0aW9uKCl7dmFyIEk9Ty5jYWxsYmFja3Nbc2VdLmluZGV4T2YoTSk7Ty5jYWxs''@;'; put 'put ''YmFja3Nbc2VdLnNwbGljZShJLDEpLDA9PT1PLmNhbGxiYWNrc1tzZV0ubGVuZ3RoJiZkZWxldGUgTy5jYWxsYmFja3Nbc2VdfX0sbS5wcm90b3R5cGUuZW1pdENoYW5nZXM9ZnVuY3Rpb24oc2UsTSl7dGhpcy5jYWxsYmFja3Nbc2VdJiZ0aGlzLmNhbGxiYWNrc1tzZV0ubWFwKGZ1bmN0aW9u''@;'; put 'put ''KE8pe08oTSl9KX0sbX0oKTtSLlNoYXBlVGVtcGxhdGVPYnNlcnZlcj14fSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAg''@;'; put 'put ''ICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRz''@;'; put 'put ''IGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSLmNsckljb25TVkc9dm9pZCAwO1IuY2xySWNvblNWRz1mdW5jdGlvbiBNKE8pe3ZhciBJPSIiO3JldHVybiBPLmluZGV4T2YoIi0t''@;'; put 'put ''YmFkZ2VkIik+LTEmJihJKz0iY2FuLWJhZGdlICIpLE8uaW5kZXhPZigiLS1hbGVydGVkIik+LTEmJihJKz0iY2FuLWFsZXJ0ICIpLE8uaW5kZXhPZigiY2xyLWktc29saWQiKT4tMSYmKEkrPSJoYXMtc29saWQgIiksKEk/JzxzdmcgdmVyc2lvbj0iMS4xIiBjbGFzcz0iJytJKyciIHZpZXdC''@;'; put 'put ''b3g9IjAgMCAzNiAzNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPic6''@;'; put 'put ''JzxzdmcgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzYgMzYiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiXG4gICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZm9jdXNh''@;'; put 'put ''YmxlPSJmYWxzZSIgcm9sZT0iaW1nIj4nKStPKyI8L3N2Zz4ifX19KX0sODA2ODU6ZnVuY3Rpb24oUWUpe1FlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3ZhciBSPXt9O2Z1bmN0aW9uIG9lKHgpe2lmKFJbeF0pcmV0dXJuIFJbeF0uZXhwb3J0czt2YXIgbT1SW3hdPXtpOngsbDohMSxleHBvcnRz''@;'; put 'put ''Ont9fTtyZXR1cm4gTWVbeF0uY2FsbChtLmV4cG9ydHMsbSxtLmV4cG9ydHMsb2UpLG0ubD0hMCxtLmV4cG9ydHN9cmV0dXJuIG9lLm09TWUsb2UuYz1SLG9lLmQ9ZnVuY3Rpb24oeCxtLHNlKXtvZS5vKHgsbSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LG0se2VudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OnNlfSl9LG9lLnI9ZnVuY3Rpb24oeCl7dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KX0sb2UudD1mdW5jdGlvbih4LG0pe2lmKDEmbSYmKHg9b2UoeCkpLDgmbXx8NCZtJiYib2JqZWN0Ij09dHlwZW9mIHgmJngmJnguX19lc01vZHVsZSlyZXR1cm4geDt2YXIgc2U9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihvZS5yKHNlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoc2Us''@;'; put 'put ''ImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnh9KSwyJm0mJiJzdHJpbmciIT10eXBlb2YgeClmb3IodmFyIE0gaW4geClvZS5kKHNlLE0sZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119LmJpbmQobnVsbCxNKSk7cmV0dXJuIHNlfSxvZS5uPWZ1bmN0aW9uKHgpe3ZhciBtPXgmJnguX19l''@;'; put 'put ''c01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB4LmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHh9O3JldHVybiBvZS5kKG0sImEiLG0pLG19LG9lLm89ZnVuY3Rpb24oeCxtKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsbSl9LG9lLnA9IiIsb2Uob2Uu''@;'; put 'put ''cz0iLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2FsbC1zaGFwZXMudHMiKX0oeyIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAg''@;'; put 'put ''ICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvYWxsLXNoYXBlcy50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihN''@;'; put 'put ''ZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuQWxsU2hhcGVzPXZvaWQgMDt2YXIgeD1vZSgKLyohIC4vY2hhcnQtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRz''@;'; put 'put ''IiksbT1vZSgKLyohIC4vY29tbWVyY2Utc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIiksc2U9b2UoCi8qISAuL2NvcmUtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKSxNPW9lKAov''@;'; put 'put ''KiEgLi9lc3NlbnRpYWwtc2hhcGVzICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvZXNzZW50aWFsLXNoYXBlcy50cyIpLE89b2UoCi8qISAuL21lZGlhLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyIpLEk9b2UoCi8qISAuL3Nv''@;'; put 'put ''Y2lhbC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIiksaj1vZSgKLyohIC4vdGVjaG5vbG9neS1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZWNobm9sb2d5LXNoYXBlcy50cyIpLEc9b2UoCi8qISAuL3RleHQt''@;'; put 'put ''ZWRpdC1zaGFwZXMgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZXh0LWVkaXQtc2hhcGVzLnRzIiksRD1vZSgKLyohIC4vdHJhdmVsLXNoYXBlcyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiKSxUPVtzZS5Db3JlU2hhcGVzLG0uQ29t''@;'; put 'put ''bWVyY2VTaGFwZXMsTS5Fc3NlbnRpYWxTaGFwZXMsTy5NZWRpYVNoYXBlcyxJLlNvY2lhbFNoYXBlcyxqLlRlY2hub2xvZ3lTaGFwZXMsRC5UcmF2ZWxTaGFwZXMseC5DaGFydFNoYXBlcyxHLlRleHRFZGl0U2hhcGVzXSxFPXt9O1IuQWxsU2hhcGVzPUU7Zm9yKHZhciB6PTAsTj1UO3o8Ti5s''@;'; put 'put ''ZW5ndGg7eisrKXt2YXIgQj1OW3pdO2Zvcih2YXIgWiBpbiBCKUIuaGFzT3duUHJvcGVydHkoWikmJihFW1pdPUJbWl0pfXR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChFKX0sIi4vcHJvamVj''@;'; put 'put ''dHMvaWNvbnMvc3JjL3NoYXBlcy9jaGFydC1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY2hhcnQtc2hhcGVzLnRzICoq''@;'; put 'put ''KiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxSLkNoYXJ0U2hhcGVzPVIuQ2xyU2hhcGVCZWxsQ3VydmU9Ui5DbHJTaGFwZVRpY2tDaGFydD1SLkNsclNoYXBlU2NhdHRlclBsb3Q9Ui5DbHJTaGFwZVBpZUNoYXJ0PVIuQ2xyU2hhcGVMaW5lQ2hhcnQ9Ui5DbHJTaGFwZUhlYXRNYXA9Ui5DbHJTaGFwZUdy''@;'; put 'put ''aWRDaGFydD1SLkNsclNoYXBlQ3VydmVDaGFydD1SLkNsclNoYXBlQ2xvdWRDaGFydD1SLkNsclNoYXBlQnViYmxlQ2hhcnQ9Ui5DbHJTaGFwZUJveFBsb3Q9Ui5DbHJTaGFwZUJhckNoYXJ0PVIuQ2xyU2hhcGVBeGlzQ2hhcnQ9dm9pZCAwO3ZhciB4PW9lKAovKiEgLi4vdXRpbHMvZGVzY3Jp''@;'; put 'put ''cHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksbT1vZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1IuQ2xyU2hh''@;'; put 'put ''cGVBeGlzQ2hhcnQ9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMxIDQgMzEgTCAzMiAzMSBDIDMz''@;'; 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 ''MzMuNjg0IDEzLjAwNCBDIDM0LjY2OSAxMy4wMzYgMzUuMzE5IDExLjk5MSAzNC44NTUgMTEuMTIyIEMgMzQuODM0IDExLjA4MSAzNC44MSAxMS4wNDIgMzQuNzg0IDExLjAwNCBMIDI5LjA2NCAxLjE0NCBDIDI4LjU3IDAuMjk5IDI3LjM0OCAwLjI5OSAyNi44NTQgMS4xNDQgWiIvPicpLFIu''@;'; put 'put ''Q2xyU2hhcGVCYXJDaGFydD0oMCxtLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1SDRBMiwyLDAsMCwwLDIsN1YyOWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWN0EyLDIsMCwwLDAsMzIsNVpN''@;'; 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 ''TCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiPjwvcGF0aD4nKSxSLkNsclNoYXBlQm94UGxvdD0oMCxtLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiw1''@;'; 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+JyksUi5DbHJTaGFwZUJ1YmJsZUNoYXJ0PSgwLG0u''@;'; 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+JyksUi5DbHJTaGFwZUNsb3VkQ2hhcnQ9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsNUg0''@;'; 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+PC9wYXRoPicpLFIuQ2xyU2hhcGVDdXJ2ZUNoYXJ0PSgwLG0uY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1''@;'; 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 ''KSxSLkNsclNoYXBlR3JpZENoYXJ0PSgwLG0uY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDE3SDRhMiwyLDAsMCwxLTItMlY4QTIsMiwwLDAsMSw0LDZIMTVhMiwyLDAsMCwxLDIsMnY3QTIsMiwwLDAsMSwx''@;'; 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+JyksUi5DbHJTaGFwZUhlYXRNYXA9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNIDMyIDUgTCA0IDUgQyAyLjg5NSA1IDIgNS44OTUgMiA3IEwgMiAyOSBDIDIgMzAuMTA1IDIuODk1IDMx''@;'; 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+PC9wYXRoPicpLFIuQ2xyU2hhcGVMaW5lQ2hhcnQ9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; 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+JyksUi5DbHJTaGFwZVBpZUNoYXJ0PSgwLG0uY2xySWNvblNWRyko''@;'; 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+PC9wYXRoPicpLFIuQ2xyU2hhcGVTY2F0dGVy''@;'; put 'put ''UGxvdD0oMCxtLmNsckljb25TVkcpKCdcbiAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0gMzIgNSBMIDQgNSBDIDIuODk1IDUgMiA1Ljg5NSAyIDcgTCAyIDI5IEMgMiAzMC4xMDUgMi44OTUgMzEgNCAzMSBMIDMyIDMxIEMgMzMuMTA1IDMx''@;'; 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 ''IDExLjEyMiBDIDM0LjgzNCAxMS4wODEgMzQuODEgMTEuMDQyIDM0Ljc4NCAxMS4wMDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz5cbiAgPHJlY3Qgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2IiBmaWxsLW9wYWNpdHk9IjAiLz4nKSxS''@;'; put 'put ''LkNsclNoYXBlVGlja0NoYXJ0PSgwLG0uY2xySWNvblNWRykoJ1xuICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTSAzMiA1IEwgNCA1IEMgMi44OTUgNSAyIDUuODk1IDIgNyBMIDIgMjkgQyAyIDMwLjEwNSAyLjg5NSAzMSA0IDMxIEwgMzIg''@;'; 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 ''MDQgTCAyOS4wNjQgMS4xNDQgQyAyOC41NyAwLjI5OSAyNy4zNDggMC4yOTkgMjYuODU0IDEuMTQ0IFoiLz4nKSxSLkNsclNoYXBlQmVsbEN1cnZlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyOUgzQTEsMSwwLDEsMSwzLDI3SDMzQTEsMSwwLDEsMSwzMywyOVoiIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMywyNWgtLjYyYTguMTEsOC4xMSwwLDAsMS04LTYuNjdDMjMuNjIsMTQuNDQsMjEuODksNy45NCwxOCw3Ljk0cy01LjY5LDYuNTEtNi4zOCwxMC4zOWE4LjExLDguMTEsMCwwLDEtOCw2LjY1SDNhMSwxLDAs''@;'; put 'put ''MSwxLDAtMmguNkE2LjExLDYuMTEsMCwwLDAsOS42LDE4YzEuNDEtNy44OCw0LjMtMTIsOC4zNS0xMnM2LjkzLDQuMTYsOC4zMywxMmE2LjExLDYuMTEsMCwwLDAsNiw1SDMzYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxS''@;'; put 'put ''LkNoYXJ0U2hhcGVzPXsiYXhpcy1jaGFydCI6Ui5DbHJTaGFwZUF4aXNDaGFydCwiYmFyLWNoYXJ0IjpSLkNsclNoYXBlQmFyQ2hhcnQsImJ1YmJsZS1jaGFydCI6Ui5DbHJTaGFwZUJ1YmJsZUNoYXJ0LCJjbG91ZC1jaGFydCI6Ui5DbHJTaGFwZUNsb3VkQ2hhcnQsImN1cnZlLWNoYXJ0IjpS''@;'; put 'put ''LkNsclNoYXBlQ3VydmVDaGFydCwiZ3JpZC1jaGFydCI6Ui5DbHJTaGFwZUdyaWRDaGFydCwibGluZS1jaGFydCI6Ui5DbHJTaGFwZUxpbmVDaGFydCwicGllLWNoYXJ0IjpSLkNsclNoYXBlUGllQ2hhcnQsInRpY2stY2hhcnQiOlIuQ2xyU2hhcGVUaWNrQ2hhcnQsInNjYXR0ZXItcGxvdCI6''@;'; put 'put ''Ui5DbHJTaGFwZVNjYXR0ZXJQbG90LCJib3gtcGxvdCI6Ui5DbHJTaGFwZUJveFBsb3QsImhlYXQtbWFwIjpSLkNsclNoYXBlSGVhdE1hcCwiYmVsbC1jdXJ2ZSI6Ui5DbHJTaGFwZUJlbGxDdXJ2ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuQ2hhcnRTaGFwZXMsImFuYWx5dGljcyIsKDAs''@;'; put 'put ''eC5kZXNjcmlwdG9yQ29uZmlnKShSLkNoYXJ0U2hhcGVzWyJsaW5lLWNoYXJ0Il0pKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoUi5DaGFydFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvY29tbWVyY2Utc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvbW1lcmNlLXNoYXBlcy50cyAq''@;'; put 'put ''KiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUiwi''@;'; put 'put ''X19lc01vZHVsZSIse3ZhbHVlOiEwfSksUi5Db21tZXJjZVNoYXBlcz1SLkNsclNoYXBlRmFjdG9yeT1SLkNsclNoYXBlRW1wbG95ZWU9Ui5DbHJTaGFwZUVtcGxveWVlR3JvdXA9Ui5DbHJTaGFwZVJ1YmxlPVIuQ2xyU2hhcGVQZXNvPVIuQ2xyU2hhcGVDb2luQmFnPVIuQ2xyU2hhcGVCaXRj''@;'; put 'put ''b2luPVIuQ2xyU2hhcGVZZW49Ui5DbHJTaGFwZVdvbj1SLkNsclNoYXBlUnVwZWU9Ui5DbHJTaGFwZVBvdW5kPVIuQ2xyU2hhcGVFQ2hlY2s9Ui5DbHJTaGFwZURvbGxhckJpbGw9Ui5DbHJTaGFwZUJhbms9Ui5DbHJTaGFwZUNyZWRpdENhcmQ9Ui5DbHJTaGFwZURvbGxhcj1SLkNsclNoYXBl''@;'; put 'put ''RXVybz1SLkNsclNoYXBlU3RvcmU9Ui5DbHJTaGFwZVdhbGxldD1SLkNsclNoYXBlU2hvcHBpbmdDYXJ0PVIuQ2xyU2hhcGVQaWdneUJhbms9Ui5DbHJTaGFwZVNob3BwaW5nQmFnPVIuQ2xyU2hhcGVDYWxjdWxhdG9yPXZvaWQgMDt2YXIgeD1vZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3It''@;'; put 'put ''Y29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLG09b2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtSLkNsclNoYXBlQ2Fs''@;'; put 'put ''Y3VsYXRvcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI4LDJIOEEyLDIsMCwwLDAsNiw0VjMyYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwyOCwyWk04LDMyVjRIMjhWMzJa''@;'; 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+JyksUi5DbHJTaGFwZVNob3BwaW5nQmFnPSgwLG0uY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjUsMTJWOS4wNWE3LDcsMCwxLDAtMTQsMHY3YTEsMSwwLDAsMCwyLDBWMTRoOFYxMkgxM1Y5LjA1YTUsNSwwLDEsMSwxMCwwVjE2YTEsMSwwLDEsMCwyLDBWMTRoNVYzMkg2VjE0SDlWMTJI''@;'; put 'put ''NFYzMi4wOUExLjkxLDEuOTEsMCwwLDAsNS45MSwzNEgzMC4wOUExLjkxLDEuOTEsMCwwLDAsMzIsMzIuMDlWMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTMsOS4yMmE1LDUsMCwxLDEsMTAsMFYxMmgyVjkuMjJh''@;'; put 'put ''Nyw3LDAsMSwwLTE0LDBWMTJoMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNSwxMnYzLjFhMSwxLDAsMSwxLTIsMFYxMkgxM3YzLjFhMSwxLDAsMCwxLTIsMFYxMkg0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAs''@;'; put 'put ''MCwwLDItMlYxMloiLz4nKSxSLkNsclNoYXBlUGlnZ3lCYW5rPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTkuNzIsMTAuNDdhMTEuNjUsMTEuNjUsMCwwLDAtNi4zMS41MkEuOC44LDAsMSwwLDE0LDEyLjQ4''@;'; 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+JyksUi5DbHJTaGFwZVNob3BwaW5nQ2FydD0oMCxtLmNsckljb25TVkcpKCc8''@;'; 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 ''LWJhZGdlIiAvPicpLFIuQ2xyU2hhcGVXYWxsZXQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwxNUgzMVY5YTEsMSwwLDAsMC0xLTFINmExLDEsMCwwLDEtMS0uODJWNi44MkExLDEsMCwwLDEsNiw2SDI5''@;'; put 'put ''LjU4YTEsMSwwLDAsMCwwLTJINkEzLDMsMCwwLDAsMyw3YTMuMDgsMy4wOCwwLDAsMCwwLC4zNlYyNy45M0E0LjEsNC4xLDAsMCwwLDcuMTMsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNWgxYTEsMSwwLDAsMCwxLTFWMTZBMSwxLDAsMCwwLDMyLDE1Wk0yOSwzMEg3LjEzQTIuMTEsMi4xMSwwLDAs''@;'; put 'put ''MSw1LDI3LjkzVjkuODhBMy4xMSwzLjExLDAsMCwwLDYsMTBIMjl2NUgyMmE1LDUsMCwwLDAsMCwxMGg3Wm0yLTdIMjJhMywzLDAsMCwxLDAtNkgzMVoiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGN4PSIyMy4wMSIg''@;'; put 'put ''Y3k9IjIwIiByPSIxLjUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi45NCwxNEgzMVY5YTEsMSwwLDAsMC0xLTFINkExLDEsMCwwLDEsNSw3SDVWN0ExLDEsMCwwLDEsNiw2SDI5LjZhMSwxLDAsMSwwLDAtMkg2QTIu''@;'; put 'put ''OTQsMi45NCwwLDAsMCwzLDYuODh2MjFBNC4xMyw0LjEzLDAsMCwwLDcuMTUsMzJIMzBhMSwxLDAsMCwwLDEtMVYyNmgxLjk0YS45My45MywwLDAsMCwxLS45MXYtMTBBMS4wOCwxLjA4LDAsMCwwLDMyLjk0LDE0Wk0zMiwyNGwtOC41OCwwYTMuODcsMy44NywwLDAsMS0zLjczLTQsMy44Nywz''@;'; put 'put ''Ljg3LDAsMCwxLDMuNzMtNEwzMiwxNloiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgY3g9IjI0LjA0IiBjeT0iMTkuOTIiIHI9IjEuNSIvPicpLFIuQ2xyU2hhcGVTdG9yZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFz''@;'; 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 ''LDEuNDhMMjYuMTksMTdhMi43MSwyLjcxLDAsMCwxLTQuMzcsMEwyMSwxNS44OGwwLDBWMTQuNEwyMCw2aDQuNDVMMjcsMTQuNFoiLz4nKSxSLkNsclNoYXBlRXVybz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTMxLjQ4LDI4LjQ5YTEsMSwwLDAsMC0xLjM4LS4zMkExMiwxMiwwLDAsMSwxMi40NSwyMkgyNC4xNmExLDEsMCwwLDAsMC0ySDExLjkzYTExLjE2LDExLjE2LDAsMCwxLDAtNEgyNC4xNmExLDEsMCwwLDAsMC0ySDEyLjQ1QTEyLDEyLDAsMCwxLDMwLjA2LDcuOGExLDEsMCwwLDAsMS4wNi0x''@;'; put 'put ''LjdBMTQsMTQsMCwwLDAsMTAuMzQsMTRIMy41NGExLDEsMCwxLDAsMCwySDkuOTFhMTQsMTQsMCwwLDAtLjE2LDIsMTQsMTQsMCwwLDAsLjE2LDJIMy41NGExLDEsMCwxLDAsMCwyaDYuOGExNCwxNCwwLDAsMCwyMC44Myw3Ljg3QTEsMSwwLDAsMCwzMS40OCwyOC40OVoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTcuNDIsMjUuMTZBMTAuODgsMTAuODgsMCwwLDEsOS4yMywyMUg1Ljg0YTEsMSwwLDAsMSwwLTJoM2MwLS4zNS0uMDUtLjcx''@;'; put 'put ''LS4wNS0xLjA3czAtLjYzLDAtLjkzaC0zYTEsMSwwLDAsMSwwLTJIOS4xOUExMC44NiwxMC44NiwwLDAsMSwyNS4zOCw4LjY5YTEuMjUsMS4yNSwwLDAsMS0xLjMyLDIuMTJBOC4zNiw4LjM2LDAsMCwwLDExLjgyLDE1aDkuMzZhMSwxLDAsMCwxLDAsMkgxMS4zM2E3LjcyLDcuNzIsMCwwLDAs''@;'; put 'put ''MCwyaDkuODJhMSwxLDAsMCwxLDAsMkgxMS44N2E4LjM2LDguMzYsMCwwLDAsMTIuMjIsNCwxLjI1LDEuMjUsMCwxLDEsMS4zMywyLjEyWiIvPicpLFIuQ2xyU2hhcGVEb2xsYXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; 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 ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTEzLjk0LDEyLjQ4YTIuMzEsMi4zMSwwLDAsMCwxLDIuODcsNi41Myw2LjUzLDAsMCwwLDIuMzIuOTJWMTAuNTVDMTUuMTYsMTAuOCwxNC4xOSwxMS44NCwxMy45NCwxMi40OFoiLz4nKSxSLkNsclNo''@;'; put 'put ''YXBlQ3JlZGl0Q2FyZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMiwwLDEySDRMNCw4Wk00LDI4VjI0SDMydjRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjciIHk9IjMiIHdpZHRoPSIyMiIgaGVpZ2h0PSIzMCIgcng9IjAuOTYiIHJ5PSIwLjk2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikgcm90YXRlKDkwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBz''@;'; put 'put ''dHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwy''@;'; put 'put ''LDAsMCwwLDMyLDZabTAsMThINFYyMEgzMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZUJhbms9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMuNSwxMy41NiwxOCw1LjIzbDE0LjUsOC4zM2ExLDEsMCwwLDAsMS0xLjczTDE4LDIu''@;'; 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 ''YXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxSLkNsclNoYXBlRG9sbGFyQmlsbD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDhINGEyLDIsMCwwLDAtMiwyVjI2YTIsMiwwLDAsMCwyLDJIMzJh''@;'; put 'put ''MiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCw2YTQuMjUsNC4yNSwwLDAsMS0zLjktNEgzMlptMCwxLjYydjQuODNBNS44Nyw1Ljg3LDAsMCwwLDI2LjQ5LDI2aC0xN0E1Ljg3LDUuODcsMCwwLDAsNCwyMC40NFYxNS42QTUuODcsNS44NywwLDAsMCw5LjUxLDEwaDE3QTUuODcs''@;'; put 'put ''NS44NywwLDAsMCwzMiwxNS42Wk03LjksMTBBNC4yNSw0LjI1LDAsMCwxLDQsMTRWMTBaTTQsMjIuMDZBNC4yNSw0LjI1LDAsMCwxLDcuOSwyNkg0Wk0yOC4xLDI2QTQuMjUsNC4yNSwwLDAsMSwzMiwyMi4wNlYyNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMTAuODVjLTMuNDcsMC02LjMsMy4yMS02LjMsNy4xNXMyLjgzLDcuMTUsNi4zLDcuMTUsNi4zLTMuMjEsNi4zLTcuMTVTMjEuNDcsMTAuODUsMTgsMTAuODVabTAsMTIuNjljLTIuNTksMC00LjctMi40OS00LjctNS41NXMyLjExLTUuNTUs''@;'; put 'put ''NC43LTUuNTUsNC43LDIuNDksNC43LDUuNTVTMjAuNTksMjMuNTUsMTgsMjMuNTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIsOEg0YTIsMiwwLDAsMC0yLDJWMjZhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAs''@;'; put 'put ''Mi0yVjEwQTIsMiwwLDAsMCwzMiw4Wk00LDI2VjIxLjE1QTUuMTgsNS4xOCwwLDAsMSw4Ljc5LDI2Wk00LDE0Ljg1VjEwSDguNzlBNS4xOCw1LjE4LDAsMCwxLDQsMTQuODVaTTE4LDI1LjE1Yy0zLjQ3LDAtNi4zLTMuMjEtNi4zLTcuMTVzMi44My03LjE1LDYuMy03LjE1LDYuMywzLjIxLDYu''@;'; put 'put ''Myw3LjE1UzIxLjQ3LDI1LjE1LDE4LDI1LjE1Wk0zMiwyNkgyNy4yNUE1LjE4LDUuMTgsMCwwLDEsMzIsMjEuMTVabTAtMTEuMTVBNS4xOCw1LjE4LDAsMCwxLDI3LjI1LDEwSDMyWiIvPlxuICAgICAgICAgICAgPGVsbGlwc2UgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MiIgY3g9IjE4IiBjeT0iMTgiIHJ4PSI0IiByeT0iNC43MiIvPicpLFIuQ2xyU2hhcGVFQ2hlY2s9KDAsbS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjE1IiBoZWlnaHQ9IjIiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMCIgeT0iMjEiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTM0''@;'; put 'put ''LDhIMTIuOTNhOC4zNSw4LjM1LDAsMCwxLC43OSwySDMzVjI2SDNWMTkuOWE3LjgzLDcuODMsMCwwLDEtMi0xLjM0VjI3YTEsMSwwLDAsMCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTQiIGQ9Ik02LjU3LDE4LjY4YTYuMTcsNi4xNywwLDAsMCw0LjMyLTEuNTksMS4yLDEuMiwwLDAsMCwuMzYtLjg0LDEuMDgsMS4wOCwwLDAsMC0xLjA5LTEuMTEsMSwxLDAsMCwwLS43MS4yNSw0LjMyLDQuMzIsMCwwLDEtMi44NCwxLDMuMzUsMy4zNSwwLDAsMS0z''@;'; put 'put ''LjQ2LTNoNy41M0ExLjI5LDEuMjksMCwwLDAsMTIsMTIuMDYsNS42OCw1LjY4LDAsMCwwLDYuMjcsNi4xNCw2LDYsMCwwLDAsLjQsMTIuNHYwQTYsNiwwLDAsMCw2LjU3LDE4LjY4Wk02LjI1LDguMzljMS44MiwwLDIuODcsMS4zOSwzLDMuMTZIMy4xM0MzLjM4LDkuNjksNC41Niw4LjM5LDYu''@;'; put 'put ''MjUsOC4zOVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCw4SDEyLjkxYTguNjEsOC42MSwwLDAsMSwxLjIsNC4zOSw4LDgsMCwwLDEtNy43OCw4LjI3QTcuNTEsNy41MSwwLDAsMSwxLDE4LjQxVjI3YTEsMSwwLDAs''@;'; put 'put ''MCwxLDFIMzRhMSwxLDAsMCwwLDEtMVY5QTEsMSwwLDAsMCwzNCw4Wk0zMSwyM0gyMFYyMUgzMVptMC01SDE2VjE2SDMxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYuNTcsMTguNjhBNiw2LDAsMCwxLC40LDEyLjQ0''@;'; put 'put ''djBBNiw2LDAsMCwxLDYuMjcsNi4xNCw1LjY4LDUuNjgsMCwwLDEsMTIsMTIuMDZhMS4yOSwxLjI5LDAsMCwxLTEuMywxLjMySDMuMTVhMy4zNSwzLjM1LDAsMCwwLDMuNDYsMyw0LjMyLDQuMzIsMCwwLDAsMi44NC0xLDEsMSwwLDAsMSwuNzEtLjI1LDEuMDgsMS4wOCwwLDAsMSwxLjA5LDEu''@;'; put 'put ''MTEsMS4yLDEuMiwwLDAsMS0uMzYuODRBNi4xNyw2LjE3LDAsMCwxLDYuNTcsMTguNjhaTTkuMywxMS41NWMtLjE4LTEuNzctMS4yMy0zLjE2LTMtMy4xNnMtMi44NywxLjMtMy4xMiwzLjE2WiIvPicpLFIuQ2xyU2hhcGVQb3VuZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjksMzBIMTMuNEE4LjQ1LDguNDUsMCwwLDAsMTUsMjQuNjVWMjFoNC4zMWExLDEsMCwwLDAsMC0ySDE1VjExLjMxQTUuMjQsNS4yNCwwLDAsMSwyMC4yMSw2LDUuMTksNS4xOSwwLDAsMSwyNCw3LjczYTEsMSwwLDAsMCwx''@;'; put 'put ''LjQ4LTEuMzVBNy4xOSw3LjE5LDAsMCwwLDEzLDExLjMxVjE5SDguNzJhMSwxLDAsMSwwLDAsMkgxM3YzLjY1QzEzLDI5LjM4LDEwLjEyLDMwLDEwLDMwYTEsMSwwLDAsMCwuMTcsMkgyNy45YTEsMSwwLDEsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LjUsMjUuOTJIMTEuNzRhMS4yNSwxLjI1LDAsMCwxLS4yMi0yLjQ4Yy4xNSwwLDEuNzItLjQ5LDEuNzItMy41NFYxOWgtMi41YTEsMSwwLDAsMSwwLTJoMi41VjExLjg4YTUu''@;'; put 'put ''ODUsNS44NSwwLDAsMSw1LjcyLTYsNS42Myw1LjYzLDAsMCwxLDQuMjEsMS45NEExLjI1LDEuMjUsMCwxLDEsMjEuMyw5LjUxLDMuMDgsMy4wOCwwLDAsMCwxOSw4LjQyYTMuMzUsMy4zNSwwLDAsMC0zLjIyLDMuNDZWMTdoM2ExLDEsMCwwLDEsMCwyaC0zdjIuOUE3LjY1LDcuNjUsMCwwLDEs''@;'; put 'put ''MTUsMjUuNDJIMjQuNWExLjI1LDEuMjUsMCwwLDEsMCwyLjVaIi8+JyksUi5DbHJTaGFwZVJ1cGVlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjgsOEgyNC4xNEE3LjUyLDcuNTIsMCwwLDAsMjIuNiw2SDI4''@;'; put 'put ''YTEsMSwwLDAsMCwwLTJIMTBhMSwxLDAsMCwwLDAsMmg3LjU1YTUuNDIsNS40MiwwLDAsMSw0LjIsMkgxMGExLDEsMCwwLDAsMCwySDIyLjc5QTUuNTQsNS41NCwwLDAsMSwyMywxMS41MSw1LjQ4LDUuNDgsMCwwLDEsMTcuNTUsMTdIMTEuMTRhMSwxLDAsMCwwLS43NSwxLjY2TDIyLjA2LDMy''@;'; put 'put ''YTEsMSwwLDEsMCwxLjUtMS4zMkwxMy4zNSwxOWg0LjIxYTcuNTEsNy41MSwwLDAsMCw3LjMtOUgyOGExLDEsMCwwLDAsMC0yWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYs''@;'; put 'put ''MTYsMCwwLDAsMTgsMlptNS44OCw5SDI2YTEsMSwwLDAsMSwwLDJIMjQuMjZjMCwuMDYsMCwuMTIsMCwuMTlhNi4wOSw2LjA5LDAsMCwxLTYsNi4yaC0ybDYuODIsOC4wNmExLjI1LDEuMjUsMCwwLDEtMS45MSwxLjYyTDEyLjYzLDE4Ljk0YTEuMjUsMS4yNSwwLDAsMSwxLTIuMDZoNC43MWEz''@;'; put 'put ''LjU5LDMuNTksMCwwLDAsMy40OC0zLjY5YzAtLjA3LDAtLjEzLDAtLjJoLTlhMSwxLDAsMCwxLDAtMmg4LjMyYTMuNDEsMy40MSwwLDAsMC0yLjc4LTEuNUgxMi43NWExLjI1LDEuMjUsMCwwLDEsMC0yLjVIMjZhMSwxLDAsMCwxLDAsMkgyMi42OEE2LjIzLDYuMjMsMCwwLDEsMjMuODgsMTFa''@;'; put 'put ''Ii8+JyksUi5DbHJTaGFwZVdvbj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE4SDI4Ljc1bC41LTJIMzNhMSwxLDAsMCwwLDAtMkgyOS43NGwyLjE3LTguNzZBMSwxLDAsMCwwLDMwLDQuNzZMMjcuNjgs''@;'; 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 ''LDIuNDIuNjRsLTEsMy42OEgyOWExLDEsMCwwLDEsMCwySDI3LjI0bC0uNTMsMkgyOWExLDEsMCwwLDEsMCwyWiIvPicpLFIuQ2xyU2hhcGVZZW49KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOS4zNCw0LjU1''@;'; put 'put ''YTEsMSwwLDEsMC0xLjY3LTEuMUwxOCwxOC4yMyw4LjMzLDMuNDVhMSwxLDAsMCwwLTEuNjcsMS4xTDE3LDIwLjM1VjIyLjJIMTJhLjguOCwwLDAsMCwwLDEuNmg1djIuNEgxMmEuOC44LDAsMCwwLDAsMS42aDVWMzJhMSwxLDAsMCwwLDIsMFYyNy44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYy''@;'; put 'put ''My44aDVhLjguOCwwLDAsMCwwLTEuNkgxOVYyMC4zNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTguMDcsNy45MUwxOS43NCwyMEgyMmExLDEs''@;'; put 'put ''MCwwLDEsMCwySDE5LjI1djJIMjJhMSwxLDAsMCwxLDAsMkgxOS4yNXYyLjc1YTEuMjUsMS4yNSwwLDAsMS0yLjUsMFYyNkgxNGExLDEsMCwxLDEsMC0yaDIuNzVWMjJIMTRhMSwxLDAsMSwxLDAtMmgyLjI2TDkuOTMsOS45MWExLjI1LDEuMjUsMCwxLDEsMi4xMi0xLjMzTDE4LDE4LjA4bDUu''@;'; put 'put ''OTUtOS40OWExLjI1LDEuMjUsMCwxLDEsMi4xMiwxLjMzWiIvPicpLFIuQ2xyU2hhcGVCaXRjb2luPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNC4xMSwxNi44OEE1LjQ5LDUuNDksMCwwLDAsMjEsN1Y0YTEsMSwwLDAsMC0yLDBWN0gxNlY0YTEsMSwwLDAsMC0yLDBWN0gxMWExLDEs''@;'; put 'put ''MCwwLDAtMSwxVjI4YTEsMSwwLDAsMCwxLDFoM3YzYTEsMSwwLDAsMCwyLDBWMjloM3YzYTEsMSwwLDAsMCwyLDBWMjloLjA4QTYuMDcsNi4wNywwLDAsMCwyNywyMi44MXYtLjYyQTYuMjUsNi4yNSwwLDAsMCwyNC4xMSwxNi44OFpNMTIsOWg4LjY5YTMuNTksMy41OSwwLDAsMSwzLjQzLDIu''@;'; put 'put ''MzZBMy41MSwzLjUxLDAsMCwxLDIwLjc5LDE2SDEyWk0yNSwyMi44MUE0LjA4LDQuMDgsMCwwLDEsMjEuMDYsMjdIMTJWMThoOS4wNkE0LjA4LDQuMDgsMCwwLDEsMjUsMjIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0yMS4xOCwxOC40N0gxNC41djZoNi42OGEyLjcsMi43LDAsMCwwLDIuNjMtMi43N3YtLjQ4QTIuNzEsMi43MSwwLDAsMCwyMS4xOCwxOC40N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsMTMuNzVh''@;'; put 'put ''Mi4yNCwyLjI0LDAsMCwwLTIuMjMtMi4yNUgxNC41VjE2aDYuM0EyLjIyLDIuMjIsMCwwLDAsMjMsMTMuNzVaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAs''@;'; put 'put ''MTgsMlptOC4zMSwxOS43M0E1LjIyLDUuMjIsMCwwLDEsMjEuMTgsMjdIMjF2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTd2MS45YTEsMSwwLDAsMS0yLDBWMjdIMTMuMjVBMS4yNSwxLjI1LDAsMCwxLDEyLDI1Ljc1VjE3LjIzaDB2LTdBMS4yNSwxLjI1LDAsMCwxLDEzLjI1LDlIMTVWNy4wN2Ex''@;'; put 'put ''LDEsMCwwLDEsMiwwVjloMlY3LjA3YTEsMSwwLDAsMSwyLDBWOWE0LjcyLDQuNzIsMCwwLDEsMy4yLDgsNS4zMSw1LjMxLDAsMCwxLDIuMTEsNC4yNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksUi5DbHJTaGFwZUNvaW5CYWc9KDAsbS5jbHJJY29uU1ZH''@;'; 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 ''N2ExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNiIgLz4nKSxSLkNsclNoYXBlUGVzbz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTMuMkgyNy44OUE2LjgxLDYuODEsMCwwLDAsMjgsMTJhNy44NSw3Ljg1LDAsMCwwLS4xLTEuMTlo''@;'; put 'put ''Mi45M2EuOC44LDAsMCwwLDAtMS42SDI3LjQ2QTguNDQsOC40NCwwLDAsMCwxOS41Nyw0SDExYTEsMSwwLDAsMC0xLDFWOS4ySDdhLjguOCwwLDAsMCwwLDEuNmgzdjIuNEg3YS44LjgsMCwwLDAsMCwxLjZoM1YzMWExLDEsMCwwLDAsMiwwVjIwaDcuNTdhOC40NSw4LjQ1LDAsMCwwLDcuODkt''@;'; put 'put ''NS4ySDMxYS44LjgsMCwwLDAsMC0xLjZaTTEyLDZoNy41N2E2LjUxLDYuNTEsMCwwLDEsNS42OCwzLjJIMTJabTAsNC44SDI1Ljg3YTUuNiw1LjYsMCwwLDEsMCwyLjRIMTJaTTE5LjU3LDE4SDEyVjE0LjhIMjUuMjVBNi41MSw2LjUxLDAsMCwxLDE5LjU3LDE4WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4LDEzLjhWMTZoOS40NWE1LjI2LDUuMjYsMCwwLDAsLjA4LS44OSw0LjcyLDQuNzIsMCwwLDAtLjItMS4zMVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE0LjE4''@;'; put 'put ''LDE5LjdoNS4xOWE0LjI4LDQuMjgsMCwwLDAsMy41LTEuOUgxNC4xOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+PHBhdGggZD0iTTE5LjM3LDEwLjUxSDE0LjE4VjEyaDguMzdBNC4yMSw0LjIxLDAsMCwwLDE5LjM3LDEwLjUxWiIgY2xhc3M9ImNsci1pLXNv''@;'; put 'put ''bGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNjcsMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwxNy42NywyWm0xMC41LDE1LjhIMjUuN2E2Ljg3LDYuODcsMCwwLDEtNi4zMyw0LjRIMTQuMTh2Ni41NGExLjI1LDEuMjUsMCwxLDEtMi41LDBWMTcuOEg4Ljc2''@;'; put 'put ''YS45LjksMCwxLDEsMC0xLjhoMi45MlYxMy44SDguNzZhLjkuOSwwLDEsMSwwLTEuOGgyLjkyVjkuMjZBMS4yNSwxLjI1LDAsMCwxLDEyLjkzLDhoNi40NGE2Ljg0LDYuODQsMCwwLDEsNi4xNSw0aDIuNjVhLjkuOSwwLDAsMSwwLDEuOEgyNi4wOWE2LjkxLDYuOTEsMCwwLDEsLjEyLDEuMyw2''@;'; put 'put ''LjgsNi44LDAsMCwxLS4wNi45aDJhLjkuOSwwLDAsMSwwLDEuOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksUi5DbHJTaGFwZVJ1YmxlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC41NywyMEE4LjIzLDguMjMsMCwwLDAsMjksMTJhOC4yMyw4''@;'; put 'put ''LjIzLDAsMCwwLTguNDMtOEgxMmExLDEsMCwwLDAtMSwxVjE4SDlhMSwxLDAsMCwwLDAsMmgydjJIOWExLDEsMCwwLDAsMCwyaDJ2N2ExLDEsMCwwLDAsMiwwVjI0aDlhMSwxLDAsMCwwLDAtMkgxM1YyMFpNMTMsNmg3LjU3QTYuMjQsNi4yNCwwLDAsMSwyNywxMmE2LjIzLDYuMjMsMCwwLDEt''@;'; put 'put ''Ni40Myw2SDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIwLjc1LDkuMjVIMTV2OC44MWg1Ljc5YTQuNjYsNC42NiwwLDAsMCw0Ljg2LTQuNEE0LjY1LDQuNjUsMCwwLDAsMjAuNzUsOS4yNVoiIGNsYXNzPSJjbHItaS1zb2xpZCBj''@;'; put 'put ''bHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMi43NSwxOC41NkgxNVYyMmg4LjI5YTEsMSwwLDAsMSwwLDJIMTV2NWExLjI1LDEuMjUsMCwwLDEtMi41LDBWMjRIMTEuMjVhMSwxLDAsMCwxLDAtMmgxLjIxVjIw''@;'; put 'put ''LjU2SDExLjI1YTEuMjUsMS4yNSwwLDAsMSwwLTIuNWgxLjIxVjhhMS4yNSwxLjI1LDAsMCwxLDEuMjUtMS4yNWg3YTcuMTQsNy4xNCwwLDAsMSw3LjM2LDYuOUE3LjE1LDcuMTUsMCwwLDEsMjAuNzUsMjAuNTZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicp''@;'; put 'put ''LFIuQ2xyU2hhcGVFbXBsb3llZUdyb3VwPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOC40MiwxNi4zMWE1LjcsNS43LDAsMSwxLDUuNzYtNS43QTUuNzQsNS43NCwwLDAsMSwxOC40MiwxNi4zMVptMC05LjRhMy43LDMuNywwLDEsMCwzLjc2LDMuN0EzLjc0LDMuNzQsMCwwLDAsMTgu''@;'; 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 ''LDEsMUgzMi44MWExLDEsMCwwLDAsMS0xVjIyLjI2QTEsMSwwLDAsMCwzMi44MSwyMS4yNlptLTEsMTAuMzZIMTcuNjRWMjMuMjZoNi4zdi45MWExLDEsMCwwLDAsMiwwdi0uOTFoNS44N1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTciLz4nKSxSLkNsclNoYXBlRW1w''@;'; put 'put ''bG95ZWU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE2LjQzLDE2LjY5YTcsNywwLDEsMSw3LTdBNyw3LDAsMCwxLDE2LjQzLDE2LjY5Wm0wLTExLjkyYTUsNSwwLDEsMCw1LDVBNSw1LDAsMCwwLDE2LjQzLDQuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMSIvPlxuICA8cGF0aCBkPSJNMjIsMTcuOUEyNS40MSwyNS40MSwwLDAsMCw1Ljg4LDE5LjU3YTQuMDYsNC4wNiwwLDAsMC0yLjMxLDMuNjhWMjkuMmExLDEsMCwxLDAsMiwwVjIzLjI1YTIsMiwwLDAsMSwxLjE2LTEuODYsMjIuOTEsMjIuOTEsMCwwLDEsOS43LTIuMTEsMjMuNTgsMjMu''@;'; put 'put ''NTgsMCwwLDEsNS41Ny42NloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxyZWN0IHg9IjIyLjE0IiB5PSIyNy40MSIgd2lkdGg9IjYuMTQiIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxu''@;'; put 'put ''ICA8cGF0aCBkPSJNMzMuMTcsMjEuNDdIMjh2Mmg0LjE3djguMzdIMThWMjMuNDdoNi4zdi40MmExLDEsMCwwLDAsMiwwVjIwYTEsMSwwLDAsMC0yLDB2MS40N0gxN2ExLDEsMCwwLDAtMSwxVjMyLjg0YTEsMSwwLDAsMCwxLDFIMzMuMTdhMSwxLDAsMCwwLDEtMVYyMi40N0ExLDEsMCwwLDAs''@;'; put 'put ''MzMuMTcsMjEuNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICBcbiAgPGNpcmNsZSBjeD0iMTYuODYiIGN5PSI5LjczIiByPSI2LjQ2IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjIxIiB5PSIy''@;'; put 'put ''OCIgd2lkdGg9IjciIGhlaWdodD0iMS40IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xNSwzMHYzYTEsMSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVYyM2ExLDEsMCwwLDAtMS0xSDI2VjIwLjUzYTEsMSwwLDAsMC0yLDBWMjJIMjJW''@;'; put 'put ''MTguNDJBMzIuMTIsMzIuMTIsMCwwLDAsMTYuODYsMThhMjYsMjYsMCwwLDAtMTEsMi4zOSwzLjI4LDMuMjgsMCwwLDAtMS44OCwzVjMwWm0xNywySDE3VjI0aDd2LjQyYTEsMSwwLDAsMCwyLDBWMjRoNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxSLkNs''@;'; put 'put ''clNoYXBlRmFjdG9yeT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzMuNDcsNy4zN2ExLDEsMCwwLDAtMSwuMDZMMjMsMTMuNzdWOC4yNmExLDEsMCwwLDAtMS42NC0uNzdMMTMuNDgsMTRIMTBWNC42MmExLDEsMCwwLDAtLjc4LTFsLTQtLjlhMSwxLDAsMCwwLS44NS4yQTEsMSwwLDAs''@;'; 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 ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLFIuQ29tbWVyY2VTaGFwZXM9e2NhbGN1bGF0b3I6Ui5DbHJTaGFwZUNhbGN1bGF0b3IsInBpZ2d5LWJhbmsiOlIuQ2xyU2hhcGVQaWdneUJhbmssInNob3BwaW5nLWJhZyI6Ui5DbHJTaGFwZVNob3BwaW5nQmFnLCJz''@;'; put 'put ''aG9wcGluZy1jYXJ0IjpSLkNsclNoYXBlU2hvcHBpbmdDYXJ0LHdhbGxldDpSLkNsclNoYXBlV2FsbGV0LHN0b3JlOlIuQ2xyU2hhcGVTdG9yZSxldXJvOlIuQ2xyU2hhcGVFdXJvLGRvbGxhcjpSLkNsclNoYXBlRG9sbGFyLHBlc286Ui5DbHJTaGFwZVBlc28sImNyZWRpdC1jYXJkIjpSLkNs''@;'; put 'put ''clNoYXBlQ3JlZGl0Q2FyZCxiYW5rOlIuQ2xyU2hhcGVCYW5rLCJkb2xsYXItYmlsbCI6Ui5DbHJTaGFwZURvbGxhckJpbGwsImUtY2hlY2siOlIuQ2xyU2hhcGVFQ2hlY2sscG91bmQ6Ui5DbHJTaGFwZVBvdW5kLHJ1cGVlOlIuQ2xyU2hhcGVSdXBlZSx3b246Ui5DbHJTaGFwZVdvbix5ZW46''@;'; put 'put ''Ui5DbHJTaGFwZVllbixiaXRjb2luOlIuQ2xyU2hhcGVCaXRjb2luLHJ1YmxlOlIuQ2xyU2hhcGVSdWJsZSwiY29pbi1iYWciOlIuQ2xyU2hhcGVDb2luQmFnLCJlbXBsb3llZS1ncm91cCI6Ui5DbHJTaGFwZUVtcGxveWVlR3JvdXAsZW1wbG95ZWU6Ui5DbHJTaGFwZUVtcGxveWVlLGZhY3Rv''@;'; put 'put ''cnk6Ui5DbHJTaGFwZUZhY3Rvcnl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvbW1lcmNlU2hhcGVzLCJzYXZpbmdzIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29tbWVyY2VTaGFwZXNbInBpZ2d5LWJhbmsiXSkpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChSLkNvbW1lcmNlU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpc''@;'; put 'put ''CiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL2NvcmUtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMg''@;'; put 'put ''Zm91bmQgKi9mdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuQ29yZVNoYXBlcz1SLkNsclNoYXBlQXJyb3c9Ui5DbHJTaGFwZVN0ZXBGb3J3YXJkMj1SLkNsclNoYXBlRXllSGlkZT1SLkNsclNo''@;'; put 'put ''YXBlRXllPVIuQ2xyU2hhcGVFdmVudD1SLkNsclNoYXBlQ2FsZW5kYXI9Ui5DbHJTaGFwZUFuZ2xlRG91YmxlPVIuQ2xyU2hhcGVWaWV3Q29sdW1ucz1SLkNsclNoYXBlU2VhcmNoPVIuQ2xyU2hhcGVWbUJ1Zz1SLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT1SLkNsclNoYXBlRmlsdGVyR3Jp''@;'; put 'put ''ZD1SLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD1SLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsPVIuQ2xyU2hhcGVDbG91ZD1SLkNsclNoYXBlSW1hZ2U9Ui5DbHJTaGFwZUJlbGw9Ui5DbHJTaGFwZUZvbGRlck9wZW49Ui5DbHJTaGFwZUZvbGRlcj1SLkNsclNoYXBlQW5nbGU9Ui5DbHJT''@;'; put 'put ''aGFwZVVzZXI9Ui5DbHJTaGFwZUJhcnM9Ui5DbHJTaGFwZUhlbHBJbmZvPVIuQ2xyU2hhcGVXYXJuaW5nU3RhbmRhcmQ9Ui5DbHJTaGFwZUVycm9yU3RhbmRhcmQ9Ui5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZD1SLkNsclNoYXBlSW5mb1N0YW5kYXJkPVIuQ2xyU2hhcGVJbmZvQ2lyY2xlPVIu''@;'; put 'put ''Q2xyU2hhcGVDaGVja0NpcmNsZT1SLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9Ui5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9Ui5DbHJTaGFwZVRpbWVzPVIuQ2xyU2hhcGVDaGVjaz1SLkNsclNoYXBlQ29nPVIuQ2xyU2hhcGVIb21lPVIuQ2xyU2hhcGVVbmtub3duU3RhdHVzPXZv''@;'; put 'put ''aWQgMDt2YXIgeD1vZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLG09b2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRp''@;'; put 'put ''bHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtSLkNsclNoYXBlVW5rbm93blN0YXR1cz0oMCxtLmNsckljb25TVkcpKCc8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBjeD0iMTcuNTgiIGN5PSIyNi4yMyIgcj0iMS40Ii8+XG4gICAgICAgICAgICAg''@;'; put 'put ''ICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNC43LDEzYTUuMTgsNS4xOCwwLDAsMC0yLjE2LTMuNTYsNy4yNiw3LjI2LDAsMCwwLTUuNzEtMS4wOUExMS4zNCwxMS4zNCwwLDAsMCwxMiwxMC40NCwxLDEsMCwxLDAsMTMuMjYsMTJhOS4z''@;'; put 'put ''Miw5LjMyLDAsMCwxLDMuOTQtMS43Miw1LjI5LDUuMjksMCwwLDEsNC4xNi43NCwzLjIxLDMuMjEsMCwwLDEsMS4zNSwyLjE5Yy4zMywyLjY5LTMuMTksMy43NS01LjMyLDQuMTRsLS44Mi4xNXY0LjM2YTEsMSwwLDAsMCwyLDBWMTkuMTdDMjQuNjEsMTcuNzksMjQuODgsMTQuNDEsMjQuNywx''@;'; put 'put ''M1oiLz4nKSxSLkNsclNoYXBlSG9tZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLjcxLDE3LjI5bC0xNS0xNWExLDEsMCwwLDAtMS40MSwwbC0xNSwxNWExLDEsMCwwLDAsMS40MSwxLjQxTDE4LDQuNDEs''@;'; put 'put ''MzIuMjksMTguNzFhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LDMyaC01VjIySDEzVjMySDhWMThMNiwyMFYzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTkuNzZsLTItMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTlhMSwxLDAsMCwxLS43MS0uMjlMMTgsNC40MSwzLjcxLDE4LjcxYTEsMSwwLDAsMS0xLjQxLTEuNDFsMTUtMTVhMSwx''@;'; put 'put ''LDAsMCwxLDEuNDEsMGwxNSwxNUExLDEsMCwwLDEsMzMsMTlaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTE4LDcuNzksNiwxOS44M1YzMmEyLDIsMCwwLDAsMiwyaDdWMjRoNlYzNGg3YTIsMiwwLDAsMCwyLTJW''@;'; put 'put ''MTkuNzZaIi8+JyksUi5DbHJTaGFwZUNvZz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LjEsMTFjLTMuOSwwLTcsMy4xLTcsN3MzLjEsNyw3LDdjMy45LDAsNy0zLjEsNy03UzIyLDExLDE4LjEsMTF6IE0x''@;'; 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 ''Mi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxSLkNsclNoYXBlQ2hlY2s9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0xMy43MiwyNy42OSwzLjI5LDE3LjI3YTEsMSwwLDAsMSwxLjQxLTEuNDFsOSw5TDMxLjI5LDcuMjlhMSwxLDAsMCwxLDEuNDEsMS40MVoiLz4nKSxSLkNsclNoYXBlVGltZXM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xOS40MSwxOGw4LjI5LTguMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSw5LjcxLDguMjlBMSwxLDAsMCwwLDguMjksOS43MUwxNi41OSwxOCw4LjI5LDI2LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsOC4yOSw4LjI5YTEsMSwwLDAsMCwxLjQxLTEu''@;'; put 'put ''NDFaIi8+JyksUi5DbHJTaGFwZUV4Y2xhbWF0aW9uVHJpYW5nbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMS4zMmExLjMsMS4zLDAsMCwwLDEuMy0xLjNWMTRhMS4zLDEuMywwLDEsMC0yLjYsMHY2''@;'; put 'put ''QTEuMywxLjMsMCwwLDAsMTgsMjEuMzJaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgY3g9IjE3Ljk1IiBjeT0iMjQuMjciIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0tMS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEs''@;'; put 'put ''MCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3''@;'; put 'put ''LjZhMywzLDAsMCwwLTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0x''@;'; put 'put ''LjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNi4yNVoiLz4nKSxSLkNsclNoYXBlRXhjbGFtYXRpb25DaXJjbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAs''@;'; put 'put ''MCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEu''@;'; put 'put ''MywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgY3g9IjE3Ljk1IiBjeT0iMjMuMDIiIHI9IjEuNSIvPlxuICAgICAgICAgICAgICAgIDxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabS0xLjQ5LDZhMS40OSwxLjQ5LDAsMCwxLDMsMHY2Ljg5YTEuNDksMS40OSwwLDEsMS0zLDBaTTE4LDI1LjVhMS43MiwxLjcyLDAsMSwxLDEu''@;'; put 'put ''NzItMS43MkExLjcyLDEuNzIsMCwwLDEsMTgsMjUuNVoiLz4nKSxSLkNsclNoYXBlQ2hlY2tDaXJjbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCww''@;'; put 'put ''LDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xNi4zNCwyMy43NGwtNS01YTEsMSwwLDAsMSwxLjQxLTEuNDFsMy41OSwz''@;'; put 'put ''LjU5LDYuNzgtNi43OGExLDEsMCwwLDEsMS40MSwxLjQxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMCwxOEExMiwxMiwwLDEsMSwxOCw2LDEyLDEyLDAsMCwxLDMwLDE4Wm0tNC43Ny0yLjE2YTEuNCwxLjQs''@;'; put 'put ''MCwwLDAtMi0ybC02Ljc3LDYuNzdMMTMsMTcuMTZhMS40LDEuNCwwLDAsMC0yLDJsNS40NSw1LjQ1WiIvPicpLFIuQ2xyU2hhcGVJbmZvQ2lyY2xlPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiICBjeD0iMTcuOTMi''@;'; put 'put ''IGN5PSIxMS45IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgIGQ9Ik0yMSwyM0gxOVYxNUgxNmExLDEsMCwwLDAsMCwyaDF2NkgxNWExLDEsMCwxLDAsMCwyaDZhMSwxLDAsMCwwLDAtMloiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEs''@;'; put 'put ''MSwwLDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0yaDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nKSxSLkNsclNoYXBlSW5mb1N0YW5kYXJkPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGN4PSIxNy45NyIg''@;'; put 'put ''Y3k9IjEwLjQ1IiByPSIxLjQiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTIxLDI1SDE5VjE0LjFIMTZhMSwxLDAsMCwwLDAsMmgxVjI1SDE1YTEsMSwwLDAsMCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPlxu''@;'; put 'put ''ICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEu''@;'; put 'put ''NCwwLDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nKSxSLkNsclNoYXBlU3VjY2Vzc1N0YW5kYXJkPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgsMTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgt''@;'; put 'put ''MSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEuNCwwLDEsMSwyLDJaIi8+JyksUi5DbHJTaGFwZUVycm9yU3RhbmRh''@;'; put 'put ''cmQ9KDAsbS5jbHJJY29uU1ZHKSgnPGNpcmNsZSBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgY3g9IjE4IiBjeT0iMjYuMDYiIHI9IjEuMzMiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQs''@;'; put 'put ''MTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAs''@;'; put 'put ''MCwwLDE4LDIuMVpNMTYuNiw4LjhhMS40LDEuNCwwLDAsMSwyLjgsMHYxMmExLjQsMS40LDAsMCwxLTIuOCwwWk0xOCwyOC42YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI4LjZaIi8+JyksUi5DbHJTaGFwZVdhcm5pbmdTdGFuZGFyZD0oMCxtLmNsckljb25TVkcp''@;'; 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 ''LDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1WiIvPicpLFIuQ2xyU2hhcGVIZWxwSW5mbz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMzksMjUuNDVhMSwxLDAsMCwwLTEuMzguMjljLTEuNDEsMi4xNi00LDQuODEtNi4zMSw1LjdzLTQuMTIuNTctNC44NCwwYy0uMzEt''@;'; 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 ''Ui5DbHJTaGFwZUJhcnM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMiwyOUg0YTEsMSwwLDAsMSwwLTJIMzJhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMyLDE5SDRhMSwxLDAsMCwxLDAtMkgzMmExLDEsMCwwLDEsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMzIsOUg0QTEsMSwwLDAsMSw0''@;'; put 'put ''LDdIMzJhMSwxLDAsMCwxLDAsMloiLz4nKSxSLkNsclNoYXBlVXNlcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNyw3LDAsMSwwLTctN0E3LDcsMCwwLDAsMTgsMTdaTTE4LDVhNSw1LDAsMSwxLTUsNUE1LDUsMCwwLDEsMTgsNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; 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+JyksUi5DbHJTaGFwZUFuZ2xlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40NSwyLjM2''@;'; put 'put ''TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nKSxSLkNsclNoYXBlRm9sZGVyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiww''@;'; 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+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFIuQ2xyU2hhcGVGb2xkZXJPcGVuPSgwLG0uY2xySWNvblNWRykoJzxw''@;'; 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+JyksUi5DbHJTaGFwZUJlbGw9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMi41MSwyNy44M0ExNC40LDE0LjQsMCwwLDEsMzAsMjQuOWExMi42MywxMi42MywwLDAsMS0x''@;'; 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 ''IDxjaXJjbGUgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlSW1hZ2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDRINEEyLDIsMCwwLDAsMiw2''@;'; 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+JyksUi5DbHJTaGFwZUNsb3VkPSgwLG0uY2xySWNv''@;'; 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 ''LTItLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxSLkNsclNoYXBlRWxsaXBz''@;'; put 'put ''aXNIb3Jpem9udGFsPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSI0LjkiIGN5PSIxOCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMxLjEiIGN5PSIx''@;'; put 'put ''OCIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIg''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlRWxsaXBzaXNWZXJ0aWNhbD0oMCxtLmNsckljb25TVkcpKCc8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEi''@;'; put 'put ''IHI9IjIuOSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45IiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xLS1iYWRnZWQiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTItLWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4IiBjeT0iMzEuMSIgcj0iMi45IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0zLS1iYWRnZWQiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiIC8+''@;'; put 'put ''JyksUi5DbHJTaGFwZUZpbHRlckdyaWQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNSwyNS44NmwyLDFWMjAuMjdhMSwxLDAsMCwwLS4yOS0uN0wxMC4yMywxM0gyNS43OWwtNi40Nyw2LjU3YTEsMSwwLDAs''@;'; put 'put ''MC0uMjkuN0wxOSwyOGwyLDFWMjAuNjhMMjcuNTgsMTRBMS40NiwxLjQ2LDAsMCwwLDI4LDEzVjEyYTEsMSwwLDAsMC0xLTFIOWExLDEsMCwwLDAtMSwxdjFhMS40NiwxLjQ2LDAsMCwwLC40MiwxTDE1LDIwLjY4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWwwLTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4x''@;'; put 'put ''Mi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nKSxSLkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE1LDI1Ljg2bDIsMVYyMC4yN2ExLDEsMCwwLDAtLjI5''@;'; put 'put ''LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFMMTUsMjAuNjhaIi8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBj''@;'; put 'put ''bGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNOCwxMXYxLjEyYS41LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCww''@;'; put 'put ''LDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+JyksUi5DbHJTaGFwZVZtQnVnPSgwLG0uY2xySWNvblNWRykoJzxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuMTUiIHN0eWxlPSJpc29sYXRp''@;'; put 'put ''b246aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjc5LDE0LjgzYTEuMDksMS4wOSwwLDAsMC0xLjQ3LS41NiwxLjA5LDEuMDksMCwwLDAtLjU0LDEuNDlsMi40Nyw1LjRjLjM5Ljg1LjgsMS4yOSwxLjU3LDEuMjlTNywyMiw3LjM5LDIxLjE2bDIuMTctNC43N2EuMzMuMzMsMCwwLDEsLjMxLS4yLjM1''@;'; put 'put ''LjM1LDAsMCwxLC4zNS4zNXY0LjYxYTEuMTUsMS4xNSwwLDAsMCwxLjE0LDEuMywxLjE3LDEuMTcsMCwwLDAsMS4xNy0xLjNWMTcuMzhhMS4xNSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTcsMS4xNywwLDEsMCwyLjMyLDBWMTcuMzhhMS4x''@;'; put 'put ''NSwxLjE1LDAsMCwxLDEuMjItMS4yLDEuMTMsMS4xMywwLDAsMSwxLjE4LDEuMnYzLjc3YTEuMTYsMS4xNiwwLDEsMCwyLjMxLDBWMTYuODZhMi42OSwyLjY5LDAsMCwwLTIuNzgtMi42OSwzLjU3LDMuNTcsMCwwLDAtMi40NywxLjA1LDIuNzUsMi43NSwwLDAsMC0yLjM4LTEuMDVBMy45Mywz''@;'; put 'put ''LjkzLDAsMCwwLDEyLDE1LjIyYTIuODIsMi44MiwwLDAsMC0yLjA4LTEuMDVBMi41NSwyLjU1LDAsMCwwLDcuNCwxNS44OUw1LjgyLDE5LjYzbC0yLTQuOCIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0zMywxNC4xOEExLjE0LDEuMTQsMCwwLDAsMzEuOSwxNWwtMS4xOSwzLjczTDI5LjUs''@;'; put 'put ''MTUuMDVhMS4xOCwxLjE4LDAsMCwwLTEuMTUtLjg3aC0uMWExLjIsMS4yLDAsMCwwLTEuMTUuODdsLTEuMTksMy43MS0xLjE4LTMuNzFhMS4xNSwxLjE1LDAsMCwwLTEuMTEtLjg3LDEuMDgsMS4wOCwwLDAsMC0xLjEyLDEuMDcsMS42OCwxLjY4LDAsMCwwLC4xLjU0bDIsNS43YTEuMjcsMS4y''@;'; put 'put ''NywwLDAsMCwxLjI3LDEsMS4yNCwxLjI0LDAsMCwwLDEuMi0uOTNsMS4yLTMuNjQsMS4yLDMuNjRhMS4yNSwxLjI1LDAsMCwwLDEuMjYuOTNBMS4yNywxLjI3LDAsMCwwLDMyLDIxLjVMMzQsMTUuNzNhMS43NywxLjc3LDAsMCwwLC4wOC0uNDhBMS4wNywxLjA3LDAsMCwwLDMzLDE0LjE4WiIg''@;'; put 'put ''ZmlsbD0iI2ZmZmZmZiIvPicpLFIuQ2xyU2hhcGVTZWFyY2g9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4zMyw1LjA1QTEwLjk1LDEwLjk1LDAsMSwxLDUuMzksMTYsMTEsMTEsMCwwLDEsMTYuMzMsNS4w''@;'; put 'put ''NW0wLTIuMDVhMTMsMTMsMCwxLDAsMTMsMTMsMTMsMTMsMCwwLDAtMTMtMTNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zNSwzMy4yOWwtNy4zNy03LjQyLTEuNDIsMS40MSw3LjM3LDcuNDJBMSwxLDAs''@;'; put 'put ''MSwwLDM1LDMzLjI5WiIvPicpLFIuQ2xyU2hhcGVWaWV3Q29sdW1ucz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDVINUEyLDIsMCwwLDAsMyw3VjI5YTIsMiwwLDAsMCwyLDJIMzFhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY3QTIsMiwwLDAsMCwzMSw1Wk0xMywyOUg1VjdoOFptMTAsMEgxNVY3aDhaIi8+JyksUi5DbHJTaGFwZUFuZ2xlRG91YmxlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjksMTkuNDFhMSwxLDAsMCwxLS43''@;'; put 'put ''MS0uMjlMMTgsOC44Myw3LjcxLDE5LjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsNiwyOS43MSwxNy43MUExLDEsMCwwLDEsMjksMTkuNDFaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOSwzMC40MWEx''@;'; put 'put ''LDEsMCwwLDEtLjcxLS4yOUwxOCwxOS44Myw3LjcxLDMwLjEyYTEsMSwwLDAsMS0xLjQxLTEuNDFMMTgsMTcsMjkuNzEsMjguNzFBMSwxLDAsMCwxLDI5LDMwLjQxWiIvPicpLFIuQ2xyU2hhcGVDYWxlbmRhcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; 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 ''LTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz4nKSxSLkNsclNoYXBlRXZlbnQ9''@;'; put 'put ''KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+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 ''b2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFIuQ2xyU2hhcGVFeWU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjYyLDE3LjUzYy0zLjM3LTYuMjMtOS4yOC0xMC0xNS44Mi0xMFM1LjM0LDExLjMsMiwxNy41M0wxLjcyLDE4''@;'; put 'put ''bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMHMxMi40Ni0zLjcyLDE1LjgyLTEwbC4yNi0uNDhaTTE3LjgsMjYuNDNDMTIuMTcsMjYuNDMsNywyMy4yOSw0LDE4YzMtNS4yOSw4LjE3LTguNDMsMTMuOC04LjQzUzI4LjU0LDEyLjcyLDMxLjU5LDE4QzI4LjU0LDIzLjI5LDIzLjQy''@;'; put 'put ''LDI2LjQzLDE3LjgsMjYuNDNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjA5LDExLjE3QTYuODYsNi44NiwwLDEsMCwyNSwxOCw2Ljg2LDYuODYsMCwwLDAsMTguMDksMTEuMTdabTAsMTEuNzJBNC44Niw0''@;'; put 'put ''Ljg2LDAsMSwxLDIzLDE4LDQuODcsNC44NywwLDAsMSwxOC4wOSwyMi44OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywy''@;'; put 'put ''LDE3LjUzTDEuNzIsMThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjgu''@;'; put 'put ''NTQsMjMuMjksMjMuNDIsMjYuNDMsMTcuOCwyNi40M1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIi''@;'; put 'put ''Lz4nKSxSLkNsclNoYXBlRXllSGlkZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0''@;'; 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 ''Ny4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz4nKSxSLkNsclNoYXBlU3RlcEZvcndhcmQyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjA4LDYuNTJhMS42OCwxLjY4LDAsMCwwLDAsMi40TDE2LjUxLDE4LDcu''@;'; put 'put ''MTIsMjcuMDhhMS43LDEuNywwLDAsMCwyLjM2LDIuNDRoMEwyMS40LDE4LDkuNDgsNi40N0ExLjY5LDEuNjksMCwwLDAsNy4wOCw2LjUyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTI2LjQ5LDVhMS43LDEuNywwLDAsMC0xLjcsMS43''@;'; put 'put ''VjI5LjNhMS43LDEuNywwLDAsMCwzLjQsMFY2LjdBMS43LDEuNywwLDAsMCwyNi40OSw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZUFycm93PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy42NiwxNS42MSwxOCw2LDgu''@;'; put 'put ''MzQsMTUuNjFBMSwxLDAsMSwwLDkuNzUsMTdMMTcsOS44MVYyOC45NGExLDEsMCwxLDAsMiwwVjkuODFMMjYuMjUsMTdhMSwxLDAsMCwwLDEuNDEtMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+JyksUi5Db3JlU2hhcGVzPXsidW5rbm93bi1zdGF0''@;'; put 'put ''dXMiOlIuQ2xyU2hhcGVVbmtub3duU3RhdHVzLGhvbWU6Ui5DbHJTaGFwZUhvbWUsY29nOlIuQ2xyU2hhcGVDb2csY2hlY2s6Ui5DbHJTaGFwZUNoZWNrLHRpbWVzOlIuQ2xyU2hhcGVUaW1lcywiZXhjbGFtYXRpb24tdHJpYW5nbGUiOlIuQ2xyU2hhcGVFeGNsYW1hdGlvblRyaWFuZ2xlLCJl''@;'; put 'put ''eGNsYW1hdGlvbi1jaXJjbGUiOlIuQ2xyU2hhcGVFeGNsYW1hdGlvbkNpcmNsZSwiY2hlY2stY2lyY2xlIjpSLkNsclNoYXBlQ2hlY2tDaXJjbGUsImluZm8tY2lyY2xlIjpSLkNsclNoYXBlSW5mb0NpcmNsZSwiaW5mby1zdGFuZGFyZCI6Ui5DbHJTaGFwZUluZm9TdGFuZGFyZCwic3VjY2Vz''@;'; put 'put ''cy1zdGFuZGFyZCI6Ui5DbHJTaGFwZVN1Y2Nlc3NTdGFuZGFyZCwiZXJyb3Itc3RhbmRhcmQiOlIuQ2xyU2hhcGVFcnJvclN0YW5kYXJkLCJ3YXJuaW5nLXN0YW5kYXJkIjpSLkNsclNoYXBlV2FybmluZ1N0YW5kYXJkLCJoZWxwLWluZm8iOlIuQ2xyU2hhcGVIZWxwSW5mbyxiYXJzOlIuQ2xy''@;'; put 'put ''U2hhcGVCYXJzLHVzZXI6Ui5DbHJTaGFwZVVzZXIsYW5nbGU6Ui5DbHJTaGFwZUFuZ2xlLGZvbGRlcjpSLkNsclNoYXBlRm9sZGVyLCJmb2xkZXItb3BlbiI6Ui5DbHJTaGFwZUZvbGRlck9wZW4sYmVsbDpSLkNsclNoYXBlQmVsbCxpbWFnZTpSLkNsclNoYXBlSW1hZ2UsY2xvdWQ6Ui5DbHJT''@;'; put 'put ''aGFwZUNsb3VkLCJlbGxpcHNpcy1ob3Jpem9udGFsIjpSLkNsclNoYXBlRWxsaXBzaXNIb3Jpem9udGFsLCJlbGxpcHNpcy12ZXJ0aWNhbCI6Ui5DbHJTaGFwZUVsbGlwc2lzVmVydGljYWwsImZpbHRlci1ncmlkIjpSLkNsclNoYXBlRmlsdGVyR3JpZCwiZmlsdGVyLWdyaWQtY2lyY2xlIjpS''@;'; put 'put ''LkNsclNoYXBlRmlsdGVyR3JpZENpcmNsZSwidm0tYnVnIjpSLkNsclNoYXBlVm1CdWcsc2VhcmNoOlIuQ2xyU2hhcGVTZWFyY2gsInZpZXctY29sdW1ucyI6Ui5DbHJTaGFwZVZpZXdDb2x1bW5zLCJhbmdsZS1kb3VibGUiOlIuQ2xyU2hhcGVBbmdsZURvdWJsZSxjYWxlbmRhcjpSLkNsclNo''@;'; put 'put ''YXBlQ2FsZW5kYXIsZXZlbnQ6Ui5DbHJTaGFwZUV2ZW50LGV5ZTpSLkNsclNoYXBlRXllLCJleWUtaGlkZSI6Ui5DbHJTaGFwZUV5ZUhpZGUsInN0ZXAtZm9yd2FyZC0yIjpSLkNsclNoYXBlU3RlcEZvcndhcmQyLGFycm93OlIuQ2xyU2hhcGVBcnJvd30sT2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFIuQ29yZVNoYXBlcywiaG91c2UiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzLmhvbWUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJzZXR0aW5ncyIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuY29nKSksT2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KFIuQ29yZVNoYXBlcywic3VjY2VzcyIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuY2hlY2spKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJjbG9zZSIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMudGltZXMpKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJ3YXJuaW5nIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tdHJpYW5nbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImVycm9yIiwoMCx4LmRlc2NyaXB0b3JD''@;'; put 'put ''b25maWcpKFIuQ29yZVNoYXBlc1siZXhjbGFtYXRpb24tY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJpbmZvIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNoYXBlc1siaW5mby1jaXJjbGUiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNv''@;'; put 'put ''cmVTaGFwZXMsIm1lbnUiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzLmJhcnMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJhdmF0YXIiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzLnVzZXIpKSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoUi5Db3JlU2hhcGVzLCJjYXJldCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuYW5nbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Db3JlU2hhcGVzLCJkaXJlY3RvcnkiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Db3JlU2hhcGVzLmZvbGRlcikpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsIm5vdGlmaWNhdGlvbiIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkNvcmVTaGFwZXMuYmVsbCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkNvcmVTaGFwZXMsImNvbGxhcHNlIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuQ29yZVNo''@;'; put 'put ''YXBlc1siYW5nbGUtZG91YmxlIl0pKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJv''@;'; put 'put ''amVjdHMvaWNvbnMvc3JjL3NoYXBlcy9lc3NlbnRpYWwtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE1l''@;'; put 'put ''LFIsb2UpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUi5DbHJTaGFwZUxvZ291dD1SLkNsclNoYXBlTG9naW49Ui5DbHJTaGFwZUhlbHA9Ui5DbHJTaGFwZUNvcHk9Ui5DbHJTaGFwZUNoaWxkQXJyb3c9Ui5DbHJTaGFwZUNp''@;'; put 'put ''cmNsZUFycm93PVIuQ2xyU2hhcGVBbGFybUNsb2NrPVIuQ2xyU2hhcGVDbG9jaz1SLkNsclNoYXBlSGlzdG9yeT1SLkNsclNoYXBlVGFncz1SLkNsclNoYXBlVGFnPVIuQ2xyU2hhcGVUcmFzaD1SLkNsclNoYXBlVGltZXNDaXJjbGU9Ui5DbHJTaGFwZUJhbj1SLkNsclNoYXBlUGx1c0NpcmNs''@;'; put 'put ''ZT1SLkNsclNoYXBlTWludXNDaXJjbGU9Ui5DbHJTaGFwZU1pbnVzPVIuQ2xyU2hhcGVQbHVzPVIuQ2xyU2hhcGVGaWxlPVIuQ2xyU2hhcGVQaW49Ui5DbHJTaGFwZUZpbHRlcj1SLkNsclNoYXBlUG9wT3V0PVIuQ2xyU2hhcGVVc2Vycz1SLkNsclNoYXBlVW5sb2NrPVIuQ2xyU2hhcGVMb2Nr''@;'; put 'put ''PVIuQ2xyU2hhcGVVcGxvYWQ9Ui5DbHJTaGFwZURvd25sb2FkPVIuQ2xyU2hhcGVMaWdodGJ1bGI9Ui5DbHJTaGFwZVZpZXdDYXJkcz1SLkNsclNoYXBlVmlld0xpc3Q9Ui5DbHJTaGFwZVN5bmM9Ui5DbHJTaGFwZVJlZnJlc2g9Ui5DbHJTaGFwZU5vdGU9Ui5DbHJTaGFwZVBlbmNpbD1SLkNs''@;'; put 'put ''clNoYXBlVGhlcm1vbWV0ZXI9Ui5DbHJTaGFwZUJ1Zz1SLkNsclNoYXBlU2Npc3NvcnM9Ui5DbHJTaGFwZUFzdGVyaXNrPVIuQ2xyU2hhcGVCb29rPVIuQ2xyU2hhcGVPYmplY3RzPVIuQ2xyU2hhcGVSZXNpemU9Ui5DbHJTaGFwZUN1cnNvckhhbmRDbGljaz1SLkNsclNoYXBlQ3Vyc29ySGFu''@;'; put 'put ''ZD1SLkNsclNoYXBlQ3Vyc29yQXJyb3c9Ui5DbHJTaGFwZUdyaWRWaWV3PVIuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj1SLkNsclNoYXBlTmV3PVIuQ2xyU2hhcGVBbGFybU9mZj1SLkNsclNoYXBlUGluYm9hcmQ9Ui5DbHJTaGFwZUFkZFRleHQ9dm9pZCAwLFIuQ2xyU2hhcGVDbG9uZT1S''@;'; put 'put ''LkNsclNoYXBlQ3Vyc29yTW92ZT1SLkNsclNoYXBlV2FuZD1SLkNsclNoYXBlU3VuPVIuQ2xyU2hhcGVNb29uPVIuQ2xyU2hhcGVGaWx0ZXIyPVIuQ2xyU2hhcGVEcmFnSGFuZGxlPVIuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQ9Ui5DbHJTaGFwZUNvbG9yUGlja2VyPVIuQ2xyU2hhcGVCcmll''@;'; put 'put ''ZmNhc2U9Ui5DbHJTaGFwZUV4cGFuZENhcmQ9Ui5DbHJTaGFwZUNvbGxhcHNlQ2FyZD1SLkNsclNoYXBlU29ydEJ5PVIuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Mj1SLkNsclNoYXBlQWNjZXNzaWJpbGl0eTE9Ui5DbHJTaGFwZVNocmluaz1SLkNsclNoYXBlUGFwZXJjbGlwPVIuQ2xyU2hhcGVG''@;'; put 'put ''aWxlR3JvdXA9Ui5DbHJTaGFwZVJlcGVhdD1SLkNsclNoYXBlSWRCYWRnZT1SLkNsclNoYXBlQmFsYW5jZT1SLkNsclNoYXBlT3JnYW5pemF0aW9uPVIuQ2xyU2hhcGVOb0FjY2Vzcz1SLkNsclNoYXBlSG91cmdsYXNzPVIuQ2xyU2hhcGVGbGFtZT1SLkNsclNoYXBlVGFyZ2V0PVIuQ2xyU2hh''@;'; put 'put ''cGVCdWxsc2V5ZT1SLkNsclNoYXBlV3JlbmNoPVIuQ2xyU2hhcGVCb2x0PVIuQ2xyU2hhcGVMaWJyYXJ5PVIuQ2xyU2hhcGVLZXk9Ui5DbHJTaGFwZVpvb21PdXQ9Ui5DbHJTaGFwZVpvb21Jbj1SLkNsclNoYXBlV2luZG93UmVzdG9yZT1SLkNsclNoYXBlV2luZG93TWluPVIuQ2xyU2hhcGVX''@;'; put 'put ''aW5kb3dNYXg9Ui5DbHJTaGFwZVdpbmRvd0Nsb3NlPVIuQ2xyU2hhcGVUb29scz1SLkNsclNoYXBlU3dpdGNoPVIuQ2xyU2hhcGVUd29XYXlBcnJvd3M9Ui5DbHJTaGFwZUZpbGVTZXR0aW5ncz1SLkNsclNoYXBlU2Nyb2xsPVIuQ2xyU2hhcGVVbmRvPVIuQ2xyU2hhcGVSZWRvPVIuQ2xyU2hh''@;'; put 'put ''cGVMaXN0PVIuQ2xyU2hhcGVGaXJld2FsbD1SLkNsclNoYXBlQ2xpcGJvYXJkPVIuQ2xyU2hhcGVTbGlkZXI9Ui5DbHJTaGFwZVdvcmxkPVIuQ2xyU2hhcGVQcmludGVyPXZvaWQgMCxSLkVzc2VudGlhbFNoYXBlcz1SLkNsclNoYXBlQ29sb3JQYWxldHRlPVIuQ2xyU2hhcGVGaXJzdEFpZD1S''@;'; put 'put ''LkNsclNoYXBlQmV0YT1SLkNsclNoYXBlRG90Q2lyY2xlPVIuQ2xyU2hhcGVDaXJjbGU9Ui5DbHJTaGFwZUNyb3NzaGFpcnM9Ui5DbHJTaGFwZVZvbHVtZT1SLkNsclNoYXBlVGFibGU9Ui5DbHJTaGFwZVNub3dmbGFrZT1SLkNsclNoYXBlRnVlbD1SLkNsclNoYXBlRm9ybT1SLkNsclNoYXBl''@;'; put 'put ''RmlzaD1SLkNsclNoYXBlVHJlZT1SLkNsclNoYXBlUmVjeWNsZT1SLkNsclNoYXBlRmlsdGVyT2ZmPVIuQ2xyU2hhcGVGaWxlWmlwPVIuQ2xyU2hhcGVDdXJzb3JIYW5kT3Blbj1SLkNsclNoYXBlQ3Vyc29ySGFuZEdyYWI9Ui5DbHJTaGFwZVRyZWVWaWV3PVIuQ2xyU2hhcGVQb3J0cmFpdD1S''@;'; put 'put ''LkNsclNoYXBlUGFzdGU9Ui5DbHJTaGFwZUxhbmRzY2FwZT1SLkNsclNoYXBlRXJhc2VyPVIuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPVIuQ2xyU2hhcGVEZXRhaWxzPXZvaWQgMDt2YXIgeD1vZSgKLyohIC4uL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnICovCiIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy91dGlscy9kZXNjcmlwdG9yLWNvbmZpZy50cyIpLG09b2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKSxzZT1vZSgKLyohIC4vY29yZS1zaGFwZXMgKi8KIi4vcHJvamVjdHMv''@;'; put 'put ''aWNvbnMvc3JjL3NoYXBlcy9jb3JlLXNoYXBlcy50cyIpO1IuQ2xyU2hhcGVBZGRUZXh0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMjFIMTNhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xMiwxNmExLDEsMCwwLDAsMSwxSDMxYTEsMSwwLDAsMCwwLTJIMTNBMSwxLDAsMCwwLDEyLDE2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yNywyN0gxM2ExLDEsMCwwLDAsMCwySDI3YTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTE1Ljg5LDlhMSwxLDAsMCwwLTEtMUgxMFYz''@;'; put 'put ''LjIxYTEsMSwwLDAsMC0yLDBWOEgyLjg5YTEsMSwwLDAsMCwwLDJIOHY1LjIxYTEsMSwwLDAsMCwyLDBWMTBoNC44OUExLDEsMCwwLDAsMTUuODksOVoiLz4nKSxSLkNsclNoYXBlUGluYm9hcmQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMCw2LDMwLDYsNkgyMlY0SDZBMiwyLDAsMCwwLDQsNlYzMGEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTRIMzBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTMz''@;'; put 'put ''LjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDcsN2ExLDEsMCwxLDAsMS40MS0xLjQxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMi4xLDExLjE5bC43LjVMMjYuNDYsOCwyNSw2LjU2LDIyLjUx''@;'; put 'put ''LDkuMTNjLTItLjg3LTQuMzUuMTQtNS45MiwxLjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MiwxLjY4LTUuOTNsMi41NC0yLjU3TDI3Ljg4LDkuMzgsMjQuMjEsMTMuMWwuNDkuNjlj''@;'; put 'put ''Ljc2LDEsLjI1LDIuMzctLjQxLDMuMzNMMTguNzcsMTEuNkMxOS44NCwxMC44NiwyMS4xNSwxMC41LDIyLjEsMTEuMTlaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzAsMzAsNiwzMCw2LDZIMjJWNEg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0SDMwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTMzLjU3LDkuMzNsLTctN2ExLDEsMCwwLDAtMS40MSwxLjQxbDEuMzgsMS4zOC00LDRjLTIt''@;'; put 'put ''Ljg3LTQuMzUuMTQtNS45MiwxLjY4bC0uNzIuNzEsMy41NCwzLjU0LTMuNjcsMy42NywxLjQxLDEuNDEsMy42Ny0zLjY3TDI0LjM3LDIwbC43MS0uNzJjMS41NC0xLjU3LDIuNTUtMy45MSwxLjY4LTUuOTJsNC00LDEuMzgsMS4zOGExLDEsMCwxLDAsMS40MS0xLjQxWiIvPicpLFIuQ2xyU2hh''@;'; put 'put ''cGVBbGFybU9mZj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLjQ3LDMuODRhNS43OCw1Ljc4LDAsMCwwLTcuMzctLjYzLDE2LjA4LDE2LjA4LDAsMCwxLDguMiw3LjY1QTUuNzMsNS43MywwLDAsMCwzMS40''@;'; 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 ''MTYsNC4xN0wzMiwzMS45LDMsMi44WiIvPicpLFIuQ2xyU2hhcGVOZXc9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNC41OSwyM2wtNC4wOC01LDQtNC45YTEuODIsMS44MiwwLDAsMCwuMjMtMS45NEExLjkz''@;'; put 'put ''LDEuOTMsMCwwLDAsMzIuOTQsMTBoLTMxQTEuOTEsMS45MSwwLDAsMCwwLDExLjg4VjI0LjEzQTEuOTEsMS45MSwwLDAsMCwxLjk0LDI2SDMzLjA1YTEuOTMsMS45MywwLDAsMCwxLjc3LTEuMDlBMS44MiwxLjgyLDAsMCwwLDM0LjU5LDIzWk0yLDI0VjEySDMyLjc4bC00Ljg0LDUuOTNMMzIu''@;'; put 'put ''ODUsMjRaIi8+XG4gICAgICAgICAgICA8cG9seWdvbiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIHBvaW50cz0iOS4zOSAxOS4zNSA2LjEzIDE1IDUgMTUgNSAyMS4xOCA2LjEzIDIxLjE4IDYuMTMgMTYuODQgOS4zOSAyMS4xOCAxMC41MSAyMS4xOCAxMC41''@;'; put 'put ''MSAxNSA5LjM5IDE1IDkuMzkgMTkuMzUiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgcG9pbnRzPSIxMi4xOCAyMS4xOCAxNi44NCAyMS4xOCAxNi44NCAyMC4xNiAxMy4zMSAyMC4xNiAxMy4zMSAxOC41NSAxNi41''@;'; put 'put ''IDE4LjU1IDE2LjUgMTcuNTIgMTMuMzEgMTcuNTIgMTMuMzEgMTYuMDMgMTYuODQgMTYuMDMgMTYuODQgMTUgMTIuMTggMTUgMTIuMTggMjEuMTgiLz5cbiAgICAgICAgICAgIDxwb2x5Z29uICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgcG9pbnRzPSIyNC41''@;'; put 'put ''MiAxOS40MyAyMy4wNiAxNSAyMS44NCAxNSAyMC4zNyAxOS40MyAxOS4wNSAxNSAxNy44MiAxNSAxOS43OCAyMS4xOCAyMC44OSAyMS4xOCAyMi40NSAxNi41OSAyNCAyMS4xOCAyNS4xMyAyMS4xOCAyNy4wOCAxNSAyNS44NSAxNSAyNC41MiAxOS40MyIvPlxuICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTM0LjExLDI0LjQ5bC0zLjkyLTYuNjIsMy44OC02LjM1QTEsMSwwLDAsMCwzMy4yMiwxMEgyYTIsMiwwLDAsMC0yLDJWMjRhMiwyLDAsMCwwLDIsMkgzMy4yNUExLDEsMCwwLDAsMzQuMTEsMjQuNDlabS0yMy42LTMu''@;'; put 'put ''MzFIOS4zOUw2LjEzLDE2Ljg0djQuMzVINVYxNUg2LjEzbDMuMjcsNC4zNVYxNWgxLjEyWk0xNi44NCwxNkgxMy4zMXYxLjQ5aDMuMnYxaC0zLjJ2MS42MWgzLjUzdjFIMTIuMThWMTVoNC42NVptOC4yOSw1LjE2SDI0bC0xLjU1LTQuNTlMMjAuOSwyMS4xOEgxOS43OGwtMi02LjE4SDE5bDEu''@;'; put 'put ''MzIsNC40M0wyMS44NCwxNWgxLjIybDEuNDYsNC40M0wyNS44NSwxNWgxLjIzWiIvPicpLFIuQ2xyU2hhcGVCdWJibGVFeGNsYW1hdGlvbj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44Miww''@;'; put 'put ''LTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUzLDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0yOC4yOSwyNC42MWExLDEsMCwwLDAtLjMyLjczbDAsNS4z''@;'; put 'put ''NC00LjM4LTIuNzlhMSwxLDAsMCwwLS44My0uMTFBMTYsMTYsMCwwLDEsMTgsMjguNWMtNy43MiwwLTE0LTUuMzgtMTQtMTJzNi4yOC0xMiwxNC0xMiwxNCw1LjM4LDE0LDEyQTExLjA4LDExLjA4LDAsMCwxLDI4LjI5LDI0LjYxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwyMC42M2ExLDEsMCwwLDAsMS0xVjguNDhhMSwxLDAsMSwwLTIsMFYxOS42MUExLDEsMCwwLDAsMTgsMjAuNjNaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIiBjeD0iMTgiIGN5PSIyNC4wNCIgcj0iMS4zMyIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE4LDIuNWMtOC44MiwwLTE2LDYuMjgtMTYsMTRzNy4xOCwxNCwxNiwxNGExOCwxOCwwLDAsMCw0Ljg4LS42OGw1LjUz''@;'; put 'put ''LDMuNTJhMSwxLDAsMCwwLDEuNTQtLjg0bDAtNi43M2ExMywxMywwLDAsMCw0LTkuMjdDMzQsOC43OCwyNi44MiwyLjUsMTgsMi41Wk0xNi45Myw5LjEzYTEuNDEsMS40MSwwLDEsMSwyLjgxLDBWMTguOWExLjQxLDEuNDEsMCwxLDEtMi44MSwwWm0xLjQxLDE3LjM1YTEuODcsMS44NywwLDEs''@;'; put 'put ''MSwxLjg3LTEuODdBMS44NywxLjg3LDAsMCwxLDE4LjM0LDI2LjQ3WiIvPicpLFIuQ2xyU2hhcGVHcmlkVmlldz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LDRINkEyLDIsMCwwLDAsNCw2djhhMiwyLDAs''@;'; put 'put ''MCwwLDIsMmg4YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMTQsNFpNNiwxNFY2aDh2OFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAsNEgyMmEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMmg4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMzAsNFpNMjIsMTRWNmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE0LDIwSDZhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJoOGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjIyQTIsMiwwLDAsMCwxNCwyMFpNNiwzMFYyMmg4djhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMwLDIwSDIyYTIsMiwwLDAsMC0yLDJ2OGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYyMkEyLDIs''@;'; put 'put ''MCwwLDAsMzAsMjBaTTIyLDMwVjIyaDh2OFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjQiIHk9IjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcng9IjIiIHJ5PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiB4PSIyMCIgeT0iNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiByeD0iMiIgcnk9IjIiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIHg9IjQiIHk9IjIwIiB3aWR0aD0iMTIi''@;'; put 'put ''IGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ4PSIyIiByeT0iMiIvPicpLFIuQ2xyU2hhcGVDdXJzb3JBcnJvdz0o''@;'; put 'put ''MCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE0LjU4LDMyLjMxYTEsMSwwLDAsMS0uOTQtLjY1TDQsNS42NUExLDEsMCwwLDEsNS4yNSw0LjM3bDI2LDkuNjhhMSwxLDAsMCwxLS4wNSwxLjg5bC04LjM2LDIuNTcs''@;'; put 'put ''OC4zLDguM2ExLDEsMCwwLDEsMCwxLjQxbC0zLjI2LDMuMjZhMSwxLDAsMCwxLS43MS4yOWgwYTEsMSwwLDAsMS0uNzEtLjI5bC04LjMzLTguMzMtMi42LDguNDVhMSwxLDAsMCwxLS45My43MVptMy4wOS0xMmExLDEsMCwwLDEsLjcxLjI5bDguNzksOC43OUwyOSwyNy41MWwtOC43Ni04Ljc2''@;'; put 'put ''YTEsMSwwLDAsMSwuNDEtMS42Nmw3LjEzLTIuMkw2LjYsN2w3Ljg5LDIxLjJMMTYuNzEsMjFhMSwxLDAsMCwxLC43MS0uNjhaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjksMTIuMzYsMy44OCwzQTEsMSwwLDAsMCwy''@;'; put 'put ''LjU5LDQuMjhMMTIsMjkuNDRhMSwxLDAsMCwwLDEuODktLjA1bDIuNjktOC43NSw5LjEyLDguOWExLDEsMCwwLDAsMS40MSwwbDIuMzUtMi4zNWExLDEsMCwwLDAsMC0xLjQxbC05LjA5LTguODZMMjksMTQuMjVBMSwxLDAsMCwwLDI5LDEyLjM2WiIvPicpLFIuQ2xyU2hhcGVDdXJzb3JIYW5k''@;'; put 'put ''PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuNzQsMTUuMTlhMTMuNjYsMTMuNjYsMCwwLDAtNi44Ny0zLjgzQTI2LDI2LDAsMCwwLDE4LDEwLjU4VjUuMjhBMy40LDMuNCwwLDAsMCwxNC41LDIsMy40LDMu''@;'; put 'put ''NCwwLDAsMCwxMSw1LjI4djEwTDkuNCwxMy43YTMuNzcsMy43NywwLDAsMC01LjI4LDBBMy42NywzLjY3LDAsMCwwLDMsMTYuMzNhMy42LDMuNiwwLDAsMCwxLDIuNTZsNC42Niw1LjUyYTExLjUzLDExLjUzLDAsMCwwLDEuNDMsNCwxMC4xMiwxMC4xMiwwLDAsMCwyLDIuNTR2MS45MmExLjA3''@;'; put 'put ''LDEuMDcsMCwwLDAsMSwxLjA4SDI3YTEuMDcsMS4wNywwLDAsMCwxLTEuMDh2LTIuN2ExMi44MSwxMi44MSwwLDAsMCwzLTguMzZ2LTZBMSwxLDAsMCwwLDMwLjc0LDE1LjE5Wk0yOSwyMS44NmExMC43MiwxMC43MiwwLDAsMS0yLjYsNy4yNiwxLjExLDEuMTEsMCwwLDAtLjQuNzJWMzJIMTQu''@;'; put 'put ''MTRWMzAuNTJhMSwxLDAsMCwwLS40NC0uODMsNy4yNiw3LjI2LDAsMCwxLTEuODItMi4yMyw5LjE0LDkuMTQsMCwwLDEtMS4yLTMuNTIsMSwxLDAsMCwwLS4yMy0uNTlMNS41MywxNy41M2ExLjcsMS43LDAsMCwxLDAtMi40MiwxLjc2LDEuNzYsMCwwLDEsMi40NywwbDMsM3YzLjE0bDItMVY1''@;'; put 'put ''LjI4QTEuNDIsMS40MiwwLDAsMSwxNC41LDQsMS40MiwxLjQyLDAsMCwxLDE2LDUuMjh2MTEuOGwyLC40M1YxMi41OWEyNC4yNywyNC4yNywwLDAsMSwyLjUxLjE4VjE4bDEuNi4zNVYxM2MuNDEuMDguODMuMTcsMS4yNi4yOGExNC44OCwxNC44OCwwLDAsMSwxLjUzLjQ5djUuMTVsMS42LjM1''@;'; put 'put ''VjE0LjVBMTEuMDYsMTEuMDYsMCwwLDEsMjksMTYuMjNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjguNjksMTQuMzN2NC44M2wtMi0uNDNWMTMuMjRhMTYuMTksMTYuMTksMCwwLDAtMi4zMy0uODR2NS44MmwtMi0u''@;'; put 'put ''NDNWMTJjLTEuMS0uMTgtMi4xOC0uMy0zLjA4LS4zNnY1LjUxbC0yLS40M1YxMS40OGgwVjQuMzRhMi41MywyLjUzLDAsMCwwLTIuNi0yLjQzLDIuNTMsMi41MywwLDAsMC0yLjYsMi40M1YxNy4yN2gwdjIuNTlsLTIsMVYxNS42TDcuNzUsMTMuMjFhMi44MywyLjgzLDAsMCwwLTQsMCwyLjkz''@;'; put 'put ''LDIuOTMsMCwwLDAsMCw0LjA5bDYsNy4xYTEwLjgyLDEwLjgyLDAsMCwwLDEuMzksNC4yMiw4LjQyLDguNDIsMCwwLDAsMi4yMSwyLjczdjIuNTZIMjcuNzlWMzAuNjJhMTIuNTQsMTIuNTQsMCwwLDAsMy04LjV2LTZBMTAsMTAsMCwwLDAsMjguNjksMTQuMzNaIi8+JyksUi5DbHJTaGFwZUN1''@;'; put 'put ''cnNvckhhbmRDbGljaz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLjQsMTcuNmMtMS44LTEuOS00LjItMy4yLTYuNy0zLjdjLTEuMS0wLjMtMi4yLTAuNS0zLjMtMC42YzIuOC0zLjMsMi4zLTguMy0xLTEx''@;'; put 'put ''LjFzLTguMy0yLjMtMTEuMSwxcy0yLjMsOC4zLDEsMTEuMVxuICAgICAgICAgICAgICAgICAgICBjMC42LDAuNSwxLjIsMC45LDEuOCwxLjF2Mi4ybC0xLjYtMS41Yy0xLjQtMS40LTMuNy0xLjQtNS4yLDBjLTEuNCwxLjQtMS41LDMuNi0wLjEsNWw0LjYsNS40YzAuMiwxLjQsMC43LDIuNywx''@;'; put 'put ''LjQsMy45XG4gICAgICAgICAgICAgICAgICAgIGMwLjUsMC45LDEuMiwxLjgsMS45LDIuNXYxLjljMCwwLjYsMC40LDEsMSwxaDEzLjZjMC41LDAsMS0wLjUsMS0xdi0yLjZjMS45LTIuMywyLjktNS4yLDIuOS04LjF2LTUuOFxuICAgICAgICAgICAgICAgICAgICBDMzAuNywxNy45LDMwLjYs''@;'; put 'put ''MTcuNywzMC40LDE3LjZ6IE04LjQsOC4yYzAtMy4zLDIuNy01LjksNi01LjhjMy4zLDAsNS45LDIuNyw1LjgsNmMwLDEuOC0wLjgsMy40LTIuMiw0LjVWNy45XG4gICAgICAgICAgICAgICAgICAgIGMtMC4xLTEuOC0xLjYtMy4yLTMuNC0zLjJjLTEuOC0wLjEtMy40LDEuNC0zLjQsMy4ydjUu''@;'; put 'put ''MkM5LjUsMTIuMSw4LjUsMTAuMiw4LjQsOC4yTDguNCw4LjJ6IE0yOC43LDI0YzAuMSwyLjYtMC44LDUuMS0yLjUsNy4xXG4gICAgICAgICAgICAgICAgICAgIGMtMC4yLDAuMi0wLjQsMC40LTAuNCwwLjd2Mi4xSDE0LjJ2LTEuNGMwLTAuMy0wLjItMC42LTAuNC0wLjhjLTAuNy0wLjYtMS4z''@;'; put 'put ''LTEuMy0xLjgtMi4yYy0wLjYtMS0xLTIuMi0xLjItMy40XG4gICAgICAgICAgICAgICAgICAgIGMwLTAuMi0wLjEtMC40LTAuMi0wLjZsLTQuOC01LjdjLTAuMy0wLjMtMC41LTAuNy0wLjUtMS4yYzAtMC40LDAuMi0wLjksMC41LTEuMmMwLjctMC42LDEuNy0wLjYsMi40LDBsMi45LDIuOXYz''@;'; put 'put ''bDEuOS0xVjcuOVxuICAgICAgICAgICAgICAgICAgICBjMC4xLTAuNywwLjctMS4zLDEuNS0xLjJjMC43LDAsMS40LDAuNSwxLjQsMS4ydjExLjVsMiwwLjR2LTQuNmMwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMwLjcsMCwxLjQsMC4xLDIuMSwwLjJ2NS4xbDEuNiwwLjN2LTUuMlxuICAgICAg''@;'; put 'put ''ICAgICAgICAgICAgICBsMS4yLDAuM2MwLjUsMC4xLDEsMC4zLDEuNSwwLjV2NWwxLjYsMC4zdi00LjZjMC45LDAuNCwxLjcsMSwyLjQsMS43TDI4LjcsMjR6Ii8+JyksUi5DbHJTaGFwZVJlc2l6ZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgZD0iTTE5LDRhMSwxLDAsMCwwLDAsMmg5LjU5bC05LjI1LDkuMjVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMCw3LjQxVjE3YTEsMSwwLDAsMCwyLDBWNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0y''@;'; put 'put ''IiBkPSJNNCwxOWExLDEsMCwwLDEsMiwwdjkuNTlsOS4yNS05LjI1YTEsMSwwLDEsMSwxLjQxLDEuNDFMNy40MSwzMEgxN2ExLDEsMCwwLDEsMCwySDRaIi8+JyksUi5DbHJTaGFwZU9iamVjdHM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0xNi4wOCwxNC45YTEwLjQxLDEwLjQxLDAsMCwxLDEuODctLjcxbC00LTEwLjc3YTIsMiwwLDAsMC0zLjc1LDBMMiwyNS4yNkEyLDIsMCwwLDAsMy45MiwyOGg2Ljk0YTEwLDEwLDAsMCwxLS41Mi0ySDMuOTJMMTIuMDYsNC4xMloiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIsOUgyMmEyLDIsMCwwLDAtMiwydjIuODVjLjIzLDAsLjQ2LDAsLjY5LDBBMTAuNTEsMTAuNTEsMCwwLDEsMjIsMTMuOVYxMUgzMlYyMUgzMC42NWExMC40MiwxMC40MiwwLDAsMSwuNDUsMkgzMmEy''@;'; put 'put ''LDIsMCwwLDAsMi0yVjExQTIsMiwwLDAsMCwzMiw5WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0yMC42OSwxNS44MWE4LjUsOC41LDAsMSwwLDguNSw4LjVBOC41MSw4LjUxLDAsMCwwLDIwLjY5LDE1LjgxWm0w''@;'; put 'put ''LDE1YTYuNSw2LjUsMCwxLDEsNi41LTYuNUE2LjUxLDYuNTEsMCwwLDEsMjAuNjksMzAuODFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTAuNjUsMjQuNDRhOS41MSw5LjUxLDAsMCwxLDcuMDYtOS4xN0wxMywzYTEs''@;'; put 'put ''MSwwLDAsMC0xLjg3LDBMMi4wNywyNi41NkExLDEsMCwwLDAsMywyNy45Mmg4LjMyQTkuNDQsOS40NCwwLDAsMSwxMC42NSwyNC40NFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMiwxMEgyMGExLDEsMCwwLDAtMSwx''@;'; put 'put ''djRhOS40Myw5LjQzLDAsMCwxLDEwLjYzLDlIMzJhMSwxLDAsMCwwLDEtMVYxMUExLDEsMCwwLDAsMzIsMTBaIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGN4PSIyMC4xNSIgY3k9IjI0LjQ0IiByPSI3LjUiLz4nKSxSLkNs''@;'; put 'put ''clNoYXBlQm9vaz0oMCxtLmNsckljb25TVkcpKCc8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgeD0iMTAiIHk9IjUuMiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEuNTUiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0yIiBkPSJNMjksOEg5Ljg2QTEuODksMS44OSwwLDAsMSw4LDYsMiwyLDAsMCwxLDkuODYsNEgyOWExLDEsMCwwLDAsMC0ySDkuODZBNCw0LDAsMCwwLDYsNmE0LjE0LDQuMTQsMCwwLDAsMCwuNDksMSwxLDAsMCwwLDAsLjI0VjMwYTQsNCwwLDAsMCwzLjg2LDRIMjlh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVY5LjI1czAtLjA2LDAtLjA5LDAtLjA2LDAtLjA5QTEuMDcsMS4wNywwLDAsMCwyOSw4Wk0yOCwzMkg5Ljg2QTIsMiwwLDAsMSw4LDMwVjkuNTVBMy42MywzLjYzLDAsMCwwLDkuODYsMTBIMjhaIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0xIiB4PSIxMCIgeT0iNS4yIiB3aWR0aD0iMTgiIGhlaWdodD0iMS41NSIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTI5LDhIOS44NkExLjg5LDEuODksMCwwLDEsOCw2LDIsMiwwLDAsMSw5''@;'; put 'put ''Ljg2LDRIMjlhMSwxLDAsMSwwLDAtMkg5Ljg2QTQsNCwwLDAsMCw2LDZhNC4xNCw0LjE0LDAsMCwwLDAsLjQ5LDEsMSwwLDAsMCwwLC4yNFYzMGE0LDQsMCwwLDAsMy44Niw0SDI5YTEsMSwwLDAsMCwxLTFWOS4yNXMwLS4wNiwwLS4wOSwwLS4wNiwwLS4wOUExLjA3LDEuMDcsMCwwLDAsMjks''@;'; put 'put ''OFoiLz4nKSxSLkNsclNoYXBlQXN0ZXJpc2s9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yOC44OSwyMC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00''@;'; put 'put ''LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQsMS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMs''@;'; put 'put ''MCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaTTI4LjI0LDI0YTEsMSwwLDAsMS0xLjM3LjM2TDE5LDE5Ljc1VjI5YTEsMSwwLDAsMS0yLDBWMTkuNzVMOS4xMywyNC4zNmExLDEsMCwwLDEtMS0xLjcyTDE2LDE4bC03LjktNC42NGExLDEsMCwxLDEsMS0xLjcy''@;'; put 'put ''TDE3LDE2LjI1VjdhMSwxLDAsMCwxLDIsMHY5LjI1bDcuODctNC42MmExLDEsMCwwLDEsMSwxLjcyTDIwLDE4bDcuOSw0LjY0QTEsMSwwLDAsMSwyOC4yNCwyNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yOC44OSwy''@;'; put 'put ''MC45MWwtNS0yLjkxLDQuODctMi44NmEzLjExLDMuMTEsMCwwLDAsMS4xNC0xLjA4LDMsMywwLDAsMC00LjA5LTQuMTVMMjEsMTIuNzZWN2EzLDMsMCwwLDAtNiwwdjUuNzZMMTAuMTUsOS45MWEzLDMsMCwxLDAtMyw1LjE4bDUsMi45MUw3LjIsMjAuODZhMy4xMSwzLjExLDAsMCwwLTEuMTQs''@;'; put 'put ''MS4wOCwzLDMsMCwwLDAsNC4wOSw0LjE0TDE1LDIzLjI0VjI4LjlhMywzLDAsMCwwLDIsMi45NEEzLDMsMCwwLDAsMjEsMjlWMjMuMjRsNC44NSwyLjg1YTMsMywwLDEsMCwzLTUuMThaIi8+JyksUi5DbHJTaGFwZVNjaXNzb3JzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIlxuICAgICAgICAgICAgZD0iTTI0LjA2LDE4LjE4bDkuNjEtOC43N2ExLDEsMCwwLDAtLjA5LTEuNTVsLTIuMjQtMS42YTMuNTcsMy41NywwLDAsMC00LjI4LjEyTDE1Ljg4LDE1LjNsLTMuMjYtMi41MmE1LjQ1LDUuNDUsMCwxLDAtMSwx''@;'; put 'put ''Ljc3bDIuNjIsMkwxMCwyMGE1LjQ4LDUuNDgsMCwxLDAsMS41OSwxLjI5TDI4LjMsNy45NGExLjU3LDEuNTcsMCwwLDEsMS44OC0uMDVsMS4yMy44OEwyMS4xLDE4LjE5bDEwLjMxLDkuNC0xLjIzLjg4YTEuNTcsMS41NywwLDAsMS0xLjg4LS4wNWwtOS44MS03Ljg1TDE3LDIxLjkzbDEwLjA2''@;'; put 'put ''LDhhMy41NywzLjU3LDAsMCwwLDQuMjkuMTJsMi4yNC0xLjZhMSwxLDAsMCwwLC4wOS0xLjU1Wk03LjQ1LDE0LjU0YTMuNDYsMy40NiwwLDEsMSwzLjQ1LTMuNDZBMy40NiwzLjQ2LDAsMCwxLDcuNDUsMTQuNTRabTAsMTMuNzJBMy40NiwzLjQ2LDAsMSwxLDEwLjksMjQuOCwzLjQ2LDMuNDYs''@;'; put 'put ''MCwwLDEsNy40NSwyOC4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy44MSw4LjEzLDMxLjYzLDYuNDhhMS45MiwxLjkyLDAsMCwwLTIuMzYsMEwxMCwyMi4wNmE1LjQ2LDUuNDYsMCwxLDAsMiwxLjgxbDMuOS0z''@;'; put 'put ''LjEyTDI5LjI3LDMxLjUyYTEuOTIsMS45MiwwLDAsMCwyLjM2LDBsMi4xOC0xLjY0TDIwLjk0LDE5Wk03LjQ1LDI5Ljc1YTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NywyLjg3LDAsMCwxLDcuNDUsMjkuNzVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQg''@;'; put 'put ''Y2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTQuMywxNS4yNCwxMiwxMy4zOGE1LjQ2LDUuNDYsMCwxLDAtMiwxLjgxTDEyLjE2LDE3Wm0tNi44NS0yYTIuODYsMi44NiwwLDEsMSwyLjg2LTIuODZBMi44NiwyLjg2LDAsMCwxLDcuNDUsMTMuMjNaIi8+JyksUi5DbHJTaGFwZUJ1Zz0oMCxtLmNs''@;'; 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 ''MDYsOS4wNiwwLDAsMC0xLjE5LDEuMThBNS44NSw1Ljg1LDAsMCwwLDE4LDQuM2E1LjkxLDUuOTEsMCwwLDAtMy4xNywxLjE5LDkuMiw5LjIsMCwwLDAtMS4yMi0xLjIxLDcuNDksNy40OSwwLDAsMC0xLjMyLS44MywxLjY4LDEuNjgsMCwxLDAtMS4xMSwxLjgzWiIvPicpLFIuQ2xyU2hhcGVU''@;'; put 'put ''aGVybW9tZXRlcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTE5LDIzLjE3VjExLjQ2SDE3VjIzLjJhMywzLDAsMSwwLDIsMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMTVhMSwxLDAsMCwwLDAtMkgyMy45MlYxMUgyNmExLDEsMCwwLDAsMC0ySDIzLjkyVjhhNiw2LDAsMCwwLTEyLDBWMjAuODFhOCw4LDAsMSwwLDEyLS4yVjE5SDI2YTEsMSwwLDAsMCwwLTJIMjMuOTJWMTVaTTI0LDI2YTYsNiwwLDEsMS0xMC4z''@;'; put 'put ''Ni00LjEybC4yNy0uMjlWOGE0LDQsMCwwLDEsOCwwVjIxLjQ0bC4zLjI5QTYsNiwwLDAsMSwyNCwyNloiLz4nKSxSLkNsclNoYXBlUGVuY2lsPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMuODcsOC4zMiwy''@;'; put 'put ''OCwyLjQyYTIuMDcsMi4wNywwLDAsMC0yLjkyLDBMNC4yNywyMy4ybC0xLjksOC4yYTIuMDYsMi4wNiwwLDAsMCwyLDIuNSwyLjE0LDIuMTQsMCwwLDAsLjQzLDBMMTMuMDksMzIsMzMuODcsMTEuMjRBMi4wNywyLjA3LDAsMCwwLDMzLjg3LDguMzJaTTEyLjA5LDMwLjIsNC4zMiwzMS44M2wx''@;'; put 'put ''Ljc3LTcuNjJMMjEuNjYsOC43bDYsNlpNMjksMTMuMjVsLTYtNiwzLjQ4LTMuNDYsNS45LDZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTQuMjIsMjMuMmwtMS45LDguMmEyLjA2LDIuMDYsMCwwLDAsMiwyLjUs''@;'; put 'put ''Mi4xNCwyLjE0LDAsMCwwLC40MywwTDEzLDMyLDI4Ljg0LDE2LjIyLDIwLDcuNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzMuODIsOC4zMmwtNS45LTUuOWEyLjA3LDIuMDcsMCwwLDAtMi45MiwwTDIxLjcy''@;'; put 'put ''LDUuN2w4LjgzLDguODMsMy4yOC0zLjI4QTIuMDcsMi4wNywwLDAsMCwzMy44Miw4LjMyWiIvPicpLFIuQ2xyU2hhcGVOb3RlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOCwzMEg2VjhIMTkuMjJsMi0ySDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTVsLTIsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjUzLDUuODQsMzAuMTYsMi40N2ExLjYxLDEuNjEsMCwwLDAtMi4yOCwwTDE0LjE3LDE2LjI2bC0xLjExLDQuODFBMS42MSwxLjYxLDAs''@;'; put 'put ''MCwwLDE0LjYzLDIzLDEuNjksMS42OSwwLDAsMCwxNSwyM2w0Ljg1LTEuMDdMMzMuNTMsOC4xMkExLjYxLDEuNjEsMCwwLDAsMzMuNTMsNS44NFpNMTguODEsMjAuMDhsLTMuNjYuODFMMTYsMTcuMjYsMjYuMzIsNi44N2wyLjgyLDIuODJaTTMwLjI3LDguNTYsMjcuNDUsNS43NCwyOSw0LjE2''@;'; put 'put ''LDMxLjg0LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMyw2LjQsMjkuMywyLjdhMS43MSwxLjcxLDAsMCwwLTIuMzYsMEwyMy42NSw2SDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIs''@;'; put 'put ''MiwwLDAsMCwyLTJWMTEuNzZsMy0zQTEuNjcsMS42NywwLDAsMCwzMyw2LjRaTTE4LjgzLDIwLjEzbC00LjE5LjkzLDEtNC4xNSw5LjU1LTkuNTcsMy4yMywzLjIzWk0yOS41LDkuNDMsMjYuMjcsNi4ybDEuODUtMS44NSwzLjIzLDMuMjNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVSZWZyZXNoPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjIuNCwxMS42NWExLjA5LDEuMDksMCwwLDAsMS4wOSwxLjA5SDM0LjQzVjEuODFhMS4wOSwxLjA5LDAs''@;'; put 'put ''MSwwLTIuMTksMFY4Ljk1YTE2LjQxLDE2LjQxLDAsMSwwLDEuNDcsMTUuODYsMS4xMiwxLjEyLDAsMCwwLTIuMDUtLjksMTQuMTgsMTQuMTgsMCwxLDEtMS4wNS0xMy4zNkgyMy41QTEuMDksMS4wOSwwLDAsMCwyMi40LDExLjY1WiIvPicpLFIuQ2xyU2hhcGVTeW5jPSgwLG0uY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuODQsMTUuNzJhMSwxLDAsMSwwLTIsLjI5QTEzLjE1LDEzLjE1LDAsMCwxLDMxLDE3Ljk0LDEzLDEzLDAsMCwxLDguNywyN2g1LjM2YTEsMSwwLDAsMCwwLTJoLTl2OWExLDEsMCwxLDAs''@;'; put 'put ''MiwwVjI4LjJBMTUsMTUsMCwwLDAsMzIuODQsMTUuNzJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC4wNiwxQTEuMDUsMS4wNSwwLDAsMCwyOSwyVjcuODNBMTQuOTQsMTQuOTQsMCwwLDAsMywxNy45''@;'; put 'put ''NGExNS4xNiwxNS4xNiwwLDAsMCwuMiwyLjQ4LDEsMSwwLDAsMCwxLC44NGguMTZhMSwxLDAsMCwwLC44Mi0xLjE1QTEzLjIzLDEzLjIzLDAsMCwxLDUsMTcuOTRhMTMsMTMsMCwwLDEsMTMtMTNBMTIuODcsMTIuODcsMCwwLDEsMjcuNDQsOUgyMi4wNmExLDEsMCwwLDAsMCwySDMxVjJBMSwx''@;'; put 'put ''LDAsMCwwLDMwLjA2LDFaIi8+JyksUi5DbHJTaGFwZVZpZXdMaXN0PSgwLG0uY2xySWNvblNWRykoJzxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiB4PSIyIiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGgg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik03LDEwSDMxYTEsMSwwLDAsMCwwLTJIN2ExLDEsMCwwLDAsMCwyWiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyIiB5PSIx''@;'; put 'put ''NCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiBkPSJNMzEsMTRIN2ExLDEsMCwwLDAsMCwySDMxYTEsMSwwLDAsMCwwLTJaIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgY2xh''@;'; put 'put ''c3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIHg9IjIiIHk9IjIwIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0zMSwyMEg3YTEsMSwwLDAsMCww''@;'; put 'put ''LDJIMzFhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgeD0iMiIgeT0iMjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgZD0iTTMxLDI2SDdhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPicpLFIuQ2xyU2hhcGVWaWV3Q2FyZHM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9''@;'; put 'put ''Ik0xNSwxN0g0YTIsMiwwLDAsMS0yLTJWOEEyLDIsMCwwLDEsNCw2SDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMTdaTTQsOHY3SDE1VjhaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMiwx''@;'; put 'put ''N0gyMWEyLDIsMCwwLDEtMi0yVjhhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDE3Wk0yMSw4djdIMzJWOFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTE1LDMwSDRh''@;'; put 'put ''MiwyLDAsMCwxLTItMlYyMWEyLDIsMCwwLDEsMi0ySDE1YTIsMiwwLDAsMSwyLDJ2N0EyLDIsMCwwLDEsMTUsMzBaTTQsMjF2N0gxNVYyMVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTMyLDMwSDIxYTIs''@;'; put 'put ''MiwwLDAsMS0yLTJWMjFhMiwyLDAsMCwxLDItMkgzMmEyLDIsMCwwLDEsMiwydjdBMiwyLDAsMCwxLDMyLDMwWk0yMSwyMXY3SDMyVjIxWiIvPicpLFIuQ2xyU2hhcGVMaWdodGJ1bGI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDIuMjVhMTEsMTEsMCwwLDAtMTEsMTEsMTAuNjgs''@;'; 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 ''LS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC00LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxSLkNsclNoYXBlRG93bmxvYWQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMSwzMUg1YTEsMSwwLDAsMCwwLDJI''@;'; 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+JyksUi5DbHJTaGFwZVVwbG9hZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMxLDMxSDVhMSwxLDAsMCwwLDAsMkgzMWExLDEsMCwwLDAsMC0yWiIvPlxuICAg''@;'; 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 ''NVoiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNiIgcj0iNSIvPicpLFIuQ2xyU2hhcGVMb2NrPSgwLG0uY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTguMDksMjAuNTlBMi40MSwyLjQxLDAsMCwwLDE3LDI1LjE0VjI4aDJWMjUuMjNhMi40MSwyLjQxLDAsMCwwLS45MS00LjY0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMjYsMTVWMTAuNzJhOC4yLDguMiwwLDAsMC04LTguMzYsOC4yLDguMiwwLDAsMC04LDguMzZWMTVIN1YzMmEyLDIsMCwwLDAsMiwySDI3YTIsMiwwLDAsMCwyLTJWMTVaTTEyLDEwLjcyYTYuMiw2LjIsMCwwLDEsNi02LjM2LDYuMiw2LjIs''@;'; put 'put ''MCwwLDEsNiw2LjM2VjE1SDEyWk05LDMyVjE3SDI3VjMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0yNiwxNVYxMC43MmE4LjIsOC4yLDAsMCwwLTgtOC4zNiw4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUg3VjMy''@;'; put 'put ''YTIsMiwwLDAsMCwyLDJIMjdhMiwyLDAsMCwwLDItMlYxNVpNMTksMjUuMjNWMjhIMTdWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVpNMjQsMTVIMTJWMTAuNzJhNi4yLDYuMiwwLDAsMSw2LTYuMzYsNi4yLDYuMiwwLDAsMSw2LDYuMzZaIi8+JyksUi5DbHJTaGFwZVVubG9jaz0oMCxtLmNs''@;'; put 'put ''ckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTEyLDI1LjE0VjI4aDJWMjUuMjNhMi40MiwyLjQyLDAsMSwwLTItLjA5WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgyMFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIs''@;'; put 'put ''MCwwLDAsMjYsMlpNMjIsMTdWMzJINFYxN1oiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMmE4LjIsOC4yLDAsMCwwLTgsOC4zNlYxNUgyVjMyYTIsMiwwLDAsMCwyLDJIMjJhMiwyLDAsMCwwLDItMlYxNUgy''@;'; put 'put ''MFYxMC4zNkE2LjIsNi4yLDAsMCwxLDI2LDRhNi4yLDYuMiwwLDAsMSw2LDYuMzZ2Ni44M2ExLDEsMCwwLDAsMiwwVjEwLjM2QTguMiw4LjIsMCwwLDAsMjYsMlpNMTQsMjUuMjNWMjhIMTJWMjUuMTRhMi40LDIuNCwwLDEsMSwyLC4wOVoiLz4nKSxSLkNsclNoYXBlVXNlcnM9KDAsbS5jbHJJ''@;'; 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 ''YWRnZWQgY2xyLWktc29saWQtcGF0aC03LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlUG9wT3V0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcsMzNI''@;'; put 'put ''NWEyLDIsMCwwLDEtMi0yVjlBMiwyLDAsMCwxLDUsN0gxNVY5SDVWMzFIMjdWMjFoMlYzMUEyLDIsMCwwLDEsMjcsMzNaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwzYTEsMSwwLDAsMCwwLDJIMjku''@;'; put 'put ''NTlMMTUuNzQsMTguODVhMSwxLDAsMSwwLDEuNDEsMS40MUwzMSw2LjQxVjE4YTEsMSwwLDAsMCwyLDBWM1oiLz4nKSxSLkNsclNoYXBlRmlsdGVyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMsNEgzQTEs''@;'; put 'put ''MSwwLDAsMCwyLDVWNi42N2ExLjc5LDEuNzksMCwwLDAsLjUzLDEuMjdMMTQsMTkuNTh2MTAuMmwyLC43NlYxOWExLDEsMCwwLDAtLjI5LS43MUw0LDYuNTlWNkgzMnYuNjFMMjAuMzMsMTguMjlBMSwxLDAsMCwwLDIwLDE5bDAsMTMuMjFMMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSww''@;'; put 'put ''LDAsMCwzNCw2LjdWNUExLDEsMCwwLDAsMzMsNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjIsMzNWMTkuNUwzMy40Nyw4QTEuODEsMS44MSwwLDAsMCwzNCw2LjdWNWExLDEsMCwwLDAtMS0xSDNBMSwxLDAs''@;'; put 'put ''MCwwLDIsNVY2LjY3YTEuNzksMS43OSwwLDAsMCwuNTMsMS4yN0wxNCwxOS41OHYxMC4yWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy40OCw0aC0zMUEuNTIuNTIsMCwwLDAsMiw0LjUyVjYuMjRhMS4zMywxLjMzLDAsMCwwLC4zOS45NWwxMiwxMnYxMGw3LjI1LDMuNjFWMTku''@;'; put 'put ''MTdsMTItMTJBMS4zNSwxLjM1LDAsMCwwLDM0LDYuMjZWNC41MkEuNTIuNTIsMCwwLDAsMzMuNDgsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZVBpbj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMzLDE2LjU5YTEsMSwwLDAsMS0uNzEtLjI5TDE5LjcsMy43MWExLDEsMCwwLDEsMS40MS0xLjQxTDMzLjcxLDE0Ljg5QTEsMSwwLDAsMSwzMywxNi41OVoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMiIgZD0iTTI4LjUyLDE1LjU2bC0xLjQxLTEuNDEtNy4yLDcuMmExLDEsMCwwLDAtLjI1LDEsOSw5LDAsMCwxLTEuNTMsOC4wOUw1LjU4LDE3Ljg3YTksOSwwLDAsMSw4LjA5LTEuNTMsMSwxLDAsMCwwLDEtLjI1bDcuMi03LjJMMjAuNDQsNy40OGwtNi43OSw2Ljc5''@;'; put 'put ''QTEwLjk0LDEwLjk0LDAsMCwwLDMuNDEsMTcuMTFhMSwxLDAsMCwwLDAsMS40Mmw2LjMzLDYuMzNMMi4yOSwzMi4yOWExLDEsMCwxLDAsMS40MSwxLjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4y''@;'; put 'put ''NFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzMsMTYuNzFhMSwxLDAsMCwxLS43MS0uMjlMMTkuNywzLjgyYTEsMSwwLDAsMSwxLjQxLTEuNDFMMzMuNzEsMTVBMSwxLDAsMCwxLDMzLDE2LjcxWiIvPlxuICAg''@;'; put 'put ''ICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yMC40NCw3LjU5bC02Ljc5LDYuNzlBMTAuOTQsMTAuOTQsMCwwLDAsMy40MSwxNy4yMmExLDEsMCwwLDAsMCwxLjQyTDkuNzMsMjUsMi4yOSwzMi40MWExLDEsMCwxLDAsMS40MSwx''@;'; put 'put ''LjQxbDcuNDQtNy40NCw2LjMzLDYuMzNhMSwxLDAsMCwwLC43MS4yOWgwYTEsMSwwLDAsMCwuNzEtLjMsMTEsMTEsMCwwLDAsMi44NC0xMC4yNGw2Ljc5LTYuNzlaIi8+JyksUi5DbHJTaGFwZUZpbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWkt''@;'; 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 ''MTEuNWMwLjcsMCwxLjMtMC41LDEuMy0xLjJjMC0wLjMtMC4xLTAuNS0wLjItMC44bC01LjctOS45Yy0wLjQtMC42LTEuMS0wLjgtMS44LTAuNUMyNy4xLDAuOCwyNywxLDI2LjksMS4xeiIvPicpLFIuQ2xyU2hhcGVQbHVzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAsMTdIMTlWNmExLDEsMCwxLDAtMiwwVjE3SDZhMSwxLDAsMCwwLTEsMSwuOTEuOTEsMCwwLDAsMSwuOTRIMTdWMzBhMSwxLDAsMSwwLDIsMFYxOUgzMGExLDEsMCwwLDAsMS0xQTEsMSwwLDAsMCwzMCwxN1oiLz4nKSxSLkNsclNo''@;'; put 'put ''YXBlTWludXM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDE3SDEwYTEsMSwwLDAsMCwwLDJIMjZhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVNaW51c0NpcmNsZT0oMCxtLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MjQsMTdIMTJhMSwxLDAsMCwwLDAsMkgyNGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm02LDE3LjVIMTJhMS41''@;'; put 'put ''LDEuNSwwLDAsMSwwLTNIMjRhMS41LDEuNSwwLDAsMSwwLDNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVQbHVzQ2lyY2xlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi4xNywxN0gxOVY5LjgzYTEsMSwwLDAsMC0yLDBWMTdI''@;'; put 'put ''OS44M2ExLDEsMCwwLDAsMCwySDE3djcuMTdhMSwxLDAsMCwwLDIsMFYxOWg3LjE3YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCww''@;'; put 'put ''LDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMThBMTYsMTYsMCwxLDEsMTgsMiwxNiwxNiwwLDAsMSwzNCwxOFptLTgu''@;'; put 'put ''NDEtMS41SDE5LjVWMTAuNDFhMS41LDEuNSwwLDAsMC0zLDBWMTYuNUgxMC40MWExLjUsMS41LDAsMCwwLDAsM0gxNi41djYuMDlhMS41LDEuNSwwLDAsMCwzLDBWMTkuNWg2LjA5YTEuNSwxLjUsMCwwLDAsMC0zWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicp''@;'; put 'put ''LFIuQ2xyU2hhcGVCYW49KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTQsMThBMTMuOTMsMTMuOTMsMCwwLDEsNy40Myw4Ljg1TDI3LjE1''@;'; put 'put ''LDI4LjU3QTE0LDE0LDAsMCwxLDQsMThabTI0LjU3LDkuMTVMOC44NSw3LjQzQTE0LDE0LDAsMCwxLDI4LjU3LDI3LjE1WiIvPicpLFIuQ2xyU2hhcGVUaW1lc0NpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTE5LjYxLDE4bDQuODYtNC44NmExLDEsMCwwLDAtMS40MS0xLjQxTDE4LjIsMTYuNTRsLTQuODktNC44OWExLDEsMCwwLDAtMS40MSwxLjQxTDE2Ljc4LDE4LDEyLDIyLjcyYTEsMSwwLDEsMCwxLjQxLDEuNDFsNC43Ny00Ljc3LDQuNzQsNC43NGExLDEsMCwwLDAsMS40MS0xLjQxWiIv''@;'; put 'put ''PlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz5cbiAgICAg''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm04LDIyLjFhMS40LDEuNCwwLDAsMS0yLDJsLTYtNkwxMiwyNi4xMmExLjQsMS40LDAsMSwxLTItMkwxNiwxOC4w''@;'; put 'put ''OCw5LjgzLDExLjg2YTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE2LjFsNi4xNy02LjE3YTEuNCwxLjQsMCwxLDEsMiwyTDIwLDE4LjA4WiIvPicpLFIuQ2xyU2hhcGVUcmFzaD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTI3LjE0LDM0SDguODZBMi45MywyLjkzLDAsMCwxLDYsMzFWMTEuMjNIOFYzMWEuOTMuOTMsMCwwLDAsLjg2LDFIMjcuMTRBLjkzLjkzLDAsMCwwLDI4LDMxVjExLjIzaDJWMzFBMi45MywyLjkzLDAsMCwxLDI3LjE0LDM0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzAuNzgsOUg1QTEsMSwwLDAsMSw1LDdIMzAuNzhhMSwxLDAsMCwxLDAsMloiLz5cbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMjEiIHk9IjEz''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMyIgeT0iMTMiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ii8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIGQ9Ik0yMyw1Ljg2SDIxLjFWNEgxNC45VjUuODZIMTNWNGEyLDIsMCwwLDEsMS45LTJoNi4yQTIsMiwwLDAsMSwyMyw0WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik02LDlWMzFhMi45MywyLjkzLDAsMCwwLDIuODYsM0gyNy4wOUEyLjkzLDIuOTMsMCwwLDAsMzAsMzFWOVptOSwyMEgxM1YxNGgyWm04LDBIMjFWMTRoMloiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMzAu''@;'; put 'put ''NzMsNUgyM1Y0QTIsMiwwLDAsMCwyMSwyaC02LjJBMiwyLDAsMCwwLDEzLDRWNUg1QTEsMSwwLDEsMCw1LDdIMzAuNzNhMSwxLDAsMCwwLDAtMloiLz4nKSxSLkNsclNoYXBlVGFnPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEwLjUyIiBjeT0iMTAuNTIiIHI9IjEuNDMiIGNsYXNz''@;'; 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 ''LTEtLWJhZGdlZCIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzAiIGN5PSI2LjMzIiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFIuQ2xyU2hhcGVUYWdzPSgwLG0uY2xySWNvblNWRykoJzxw''@;'; 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+JyksUi5DbHJTaGFwZUhpc3Rvcnk9KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDkuODNhMSwxLDAsMCwwLTEsMXY4LjcybDUuOSw0QTEsMSwwLDAsMCwyNCwyMS44OGwtNS0zLjM5VjEwLjgzQTEsMSwwLDAsMCwxOCw5LjgzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LjA5LDE2LjA5LDAsMCwwLDQsMTAuMjZWNS4yYTEsMSwwLDAsMC0yLDBWMTRoOC44YTEsMSwwLDAsMCwwLTJINS4zNUExNCwxNCwwLDEsMSw4LjU4LDI4LjM1YTEsMSwwLDAsMC0xLjM1LDEuNDhBMTYsMTYsMCwxLDAsMTgsMloiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+JyksUi5DbHJTaGFwZUNsb2NrPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFz''@;'; 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 ''LDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiIGNsYXNzPSJjbHItaS1zb2xpZC0tYWxlcnRlZCBjbHItaS1zb2xpZC1wYXRoLTEtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiLz4nKSxSLkNsclNoYXBlQWxhcm1DbG9jaz0oMCxtLmNsckljb25TVkcpKCc8''@;'; 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 ''LjQ5LDIxLjQzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFIuQ2xyU2hhcGVDaXJjbGVBcnJvdz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMwQTE0LDE0LDAsMSwxLDMy''@;'; put 'put ''LDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4wOCw4LjI2bC03LjYxLDcuNjFhMSwxLDAsMSwwLDEuNDEsMS40MUwxNywxMi4xOHYxNWExLDEsMCwwLDAsMiwwVjEybDUu''@;'; put 'put ''MjgsNS4yOGExLDEsMCwxLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTgsMTUuNTdhMS40MywxLjQzLDAsMCwxLTIs''@;'; put 'put ''MEwxOS40LDEzVjI3LjE0YTEuNCwxLjQsMCwwLDEtMi44LDB2LTE0bC00LjQzLDQuNDNhMS40LDEuNCwwLDAsMS0yLTJMMTguMDgsNy43LDI2LDE1LjU5QTEuNCwxLjQsMCwwLDEsMjYsMTcuNTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksUi5DbHJTaGFw''@;'; put 'put ''ZUNoaWxkQXJyb3c9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjgyLDE1LjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQxTDI3LjIsMjFIOVYzLjc4YTEsMSwwLDEsMC0yLDBWMjFhMiwyLDAsMCwwLDIsMkgyNy4xNWwtMy43NCwzLjc1YTEsMSwwLDAsMCwwLDEuNDEs''@;'; put 'put ''MSwxLDAsMCwwLC43LjI5LDEsMSwwLDAsMCwuNzEtLjI5TDMxLDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZUNvcHk9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjUsN2gtMTlBMS41LDEuNSwwLDAsMCw5LDguNXYy''@;'; put 'put ''NEExLjUsMS41LDAsMCwwLDEwLjUsMzRoMTlBMS41LDEuNSwwLDAsMCwzMSwzMi41VjguNUExLjUsMS41LDAsMCwwLDI5LjUsN1pNMjksMzJIMTFWOUgyOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjYsMy41''@;'; put 'put ''QTEuNSwxLjUsMCwwLDAsMjQuNSwySDUuNUExLjUsMS41LDAsMCwwLDQsMy41djI0QTEuNSwxLjUsMCwwLDAsNS41LDI5SDZWNEgyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcsMy41NkExLjU2LDEuNTYs''@;'; put 'put ''MCwwLDAsMjUuNDMsMkg1LjU3QTEuNTYsMS41NiwwLDAsMCw0LDMuNTZWMjguNDRBMS41NiwxLjU2LDAsMCwwLDUuNTcsMzBoLjUyVjQuMDdIMjdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSI4IiB5PSI2IiB3aWR0aD0i''@;'; put 'put ''MjMiIGhlaWdodD0iMjgiIHJ4PSIxLjUiIHJ5PSIxLjUiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxSLkNsclNoYXBlSGVscD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm0wLDMw''@;'; 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 ''OS43OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxSLkNsclNoYXBlTG9naW49KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMkgyOFYzMEgxMlYyMC4ySDEwVjMwYTIsMiwwLDAsMCwyLDJIMjhhMiwyLDAsMCwwLDIt''@;'; put 'put ''MlY2QTIsMiwwLDAsMCwyOCw0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTUuMTIsMTguNDZhMSwxLDAsMSwwLDEuNDEsMS40MWw1Ljc5LTUuNzlMMTYuNTQsOC4yOWExLDEsMCwwLDAtMS40MSwxLjQxTDE4''@;'; put 'put ''LjUsMTNINGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFIMTguNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LDRIMTJhMiwyLDAsMCwwLTIsMnY3aDguNUwxNS4xMiw5LjcxYTEsMSwwLDAsMSwxLjQx''@;'; put 'put ''LTEuNDFsNS43OSw1Ljc5LTUuNzksNS43OWExLDEsMCwwLDEtMS40MS0xLjQxTDE4LjUsMTVIMTBWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDI4LDRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggZD0iTTEwLDEzSDRhMSwxLDAsMCwwLTEsMSwxLDEsMCwwLDAsMSwxaDZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVMb2dvdXQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTcsNkgyM3Y5LjhoMlY2YTIsMiwwLDAsMC0y''@;'; put 'put ''LTJIN0EyLDIsMCwwLDAsNSw2VjMwYTIsMiwwLDAsMCwyLDJIMjNhMiwyLDAsMCwwLDItMkg3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC4xNiwxNy4yOGExLDEsMCwwLDAtMS40MSwxLjQxTDMwLjEzLDIy''@;'; put 'put ''SDE1LjYzYTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWgxNC41bC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjMsNEg3QTIsMiwwLDAs''@;'; put 'put ''MCw1LDZWMzBhMiwyLDAsMCwwLDIsMkgyM2EyLDIsMCwwLDAsMi0yVjI0SDE1LjYzYTEsMSwwLDAsMS0xLTEsMSwxLDAsMCwxLDEtMUgyNVY2QTIsMiwwLDAsMCwyMyw0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4''@;'; put 'put ''LjE2LDE3LjI4YTEsMSwwLDAsMC0xLjQxLDEuNDFMMzAuMTMsMjJIMjV2Mmg1LjEzbC0zLjM4LDMuNDZhMSwxLDAsMSwwLDEuNDEsMS40MUwzNCwyMy4wN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxSLkNsclNoYXBlUHJpbnRlcj0oMCxtLmNsckljb25T''@;'; 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 ''MzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFIuQ2xyU2hhcGVXb3JsZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTQsMThhMTkuMzgsMTkuMzgsMCwwLDAtLjQzLTRo''@;'; 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 ''c29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFIuQ2xyU2hhcGVTbGlkZXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEyLjM3QTQsNCwwLDAsMCw5LDguNDhWNUExLDEsMCwxLDAsNyw1VjguNDhhNCw0LDAsMCwwLDAsNy43''@;'; put 'put ''OFYzMWExLDEsMCwxLDAsMiwwVjE2LjI2QTQsNCwwLDAsMCwxMiwxMi4zN1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSw4LDE0LjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDE1LjgzYTQsNCww''@;'; put 'put ''LDAsMC0zLTMuODlWNWExLDEsMCwxLDAtMiwwdjYuOTRhNCw0LDAsMCwwLDAsNy43OFYzMWExLDEsMCwxLDAsMiwwVjE5LjcyQTQsNCwwLDAsMCwzMiwxNS44M1ptLTQsMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyOCwxNy44N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjIsMjQuNWE0LDQsMCwwLDAtMy0zLjg5VjVhMSwxLDAsMSwwLTIsMFYyMC42MWE0LDQsMCwwLDAsMCw3Ljc4VjMxYTEsMSwwLDEsMCwyLDBWMjguMzlBNCw0LDAsMCwwLDIyLDI0LjVabS00LDJhMiwyLDAsMSwxLDItMkEyLDIs''@;'; put 'put ''MCwwLDEsMTgsMjYuNTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTksOS4yOVY1QTEsMSwwLDEsMCw3LDVWOS4zYTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxNS40M0EzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsOSw5LjI5WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LDIxLjQ1VjVhMSwxLDAsMSwwLTIsMFYyMS40N2EzLjIyLDMuMjIsMCwwLDAsMCw2LjExVjMxYTEsMSwwLDEsMCwyLDBWMjcuNmEzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI5LDEyLjc1VjVhMSwxLDAsMSwwLTIsMHY3Ljc2YTMuMjIsMy4yMiwwLDAsMCwwLDYuMTFWMzFhMSwxLDAsMSwwLDIsMFYxOC44OWEzLjIyLDMu''@;'; put 'put ''MjIsMCwwLDAsMC02LjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIvPicpLFIuQ2xyU2hhcGVDbGlwYm9hcmQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjI5LDVIMjdWN2gyVjMySDdWN0g5VjVIN0ExLjc1LDEuNzUsMCwwLDAsNSw2LjY5VjMyLjMx''@;'; 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 ''Ui5DbHJTaGFwZUZpcmV3YWxsPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNNCw4SDMydjUuMDhIMjMuOHYtNEgyMnY0SDE0di00SDEydjRINFptMCw3SDMy''@;'; 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 ''bGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFIuQ2xyU2hhcGVMaXN0PSgwLG0uY2xySWNvblNWRykoJzxyZWN0IHg9IjE1IiB5PSI4IiB3aWR0aD0iOSIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAg''@;'; 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 ''LWJhZGdlZCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFIuQ2xyU2hhcGVSZWRvPSgwLG0uY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0yNCw0LjIyYTEsMSwwLDAsMC0xLjQxLDEuNDJsNS41Niw1LjQ5aC0xM0ExMSwxMSwwLDAsMCwxMC4wNywzMiwxLDEsMCwwLDAsMTEsMzAuMThhOSw5LDAsMCwxLTUtOCw5LjA4LDkuMDgsMCwwLDEsOS4xMy05aDEzbC01LjU0LDUuNDhBMSwxLDAsMCwwLDI0LDIwbDgtNy45MVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVVbmRvPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMC44NywxMS4xNGgtMTNsNS41Ni01LjQ5QTEsMSwwLDAsMCwxMiw0LjIyTDQsMTIuMTMsMTIsMjBhMSwxLDAsMCwwLDEuNDEtMS40''@;'; put 'put ''Mkw3Ljg2LDEzLjE0aDEzYTkuMDgsOS4wOCwwLDAsMSw5LjEzLDksOSw5LDAsMCwxLTUsOEExLDEsMCwwLDAsMjUuOTMsMzJhMTEsMTEsMCwwLDAtNS4wNi0yMC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVTY3JvbGw9KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDExLjEyVjYuNThhNC41LDQuNSwwLDAsMC00LjUtNC41aC0xNkE0LjUsNC41LDAsMCwwLDksNi41OHYyM2EyLjUsMi41LDAsMSwxLTUsMFYyNkg3LjE5VjI0SDJ2NS41QTQuNSw0LjUsMCwwLDAsNi41LDM0SDI1LjU4YTQuNSw0LjUsMCwwLDAs''@;'; 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 ''IGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlRmlsZVNldHRpbmdzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy44MywyMy40M2ExLjE2LDEu''@;'; 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+JyksUi5DbHJTaGFwZVR3b1dheUFycm93''@;'; put 'put ''cz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjMuNDMsMTYuODNBMSwxLDAsMCwwLDIyLDE4LjI0TDI1LjcyLDIySDcuODNhMSwxLDAsMCwwLDAsMkgyNS43MkwyMiwyNy43YTEsMSwwLDEsMCwxLjQyLDEuNDFMMjkuNTMsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4yNCwxOC40NWExLDEsMCwwLDAsLjcxLTEuNzFMMTAuMjQsMTNIMjguMTJhMSwxLDAsMCwwLDAtMkgxMC4yNGwzLjcxLTMuNzNhMSwxLDAsMCwwLTEuNDItMS40MUw2LjQyLDEybDYuMTEsNi4xNEExLDEsMCwwLDAsMTMu''@;'; put 'put ''MjQsMTguNDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlU3dpdGNoPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LjcxLDE0SDIwLjkyVjEySDUuNzFMOS40Miw4LjI3QTEsMSwwLDEsMCw4LDYuODZMMS44OSwxMyw4LDE5''@;'; put 'put ''LjE0YTEsMSwwLDEsMCwxLjQyLTEuNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMjMiIHk9IjEyIiB3aWR0aD0iMyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI4IiB5PSIxMiIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjcuOTIsMTcuODZhMSwxLDAsMCwwLTEuNDIsMS40MUwzMC4y''@;'; put 'put ''MSwyM0gxNXYySDMwLjIxTDI2LjUsMjguNzRhMSwxLDAsMSwwLDEuNDIsMS40TDM0LDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMCIgeT0iMjMiIHdpZHRoPSIzIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iNiIgeT0iMjMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFIuQ2xyU2hhcGVUb29scz0oMCxtLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMjAsMTRIMTZhMSwxLDAsMCwwLTEsMXY2YTEsMSwwLDAsMCwxLDFoNGExLDEsMCwwLDAsMS0xVjE1QTEsMSwwLDAsMCwyMCwxNFptLS40LDYuNkgxNi40VjE1LjRoMy4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBkPSJNMzMuNzEsMTIuMzgsMjkuNjIsOC4yOUExLDEsMCwwLDAsMjguOTIsOGgtNVY2LjA1QTIsMiwwLDAsMCwyMiw0SDEzLjg0QTEuOTIsMS45MiwwLDAsMCwxMiw2LjA1VjhINy4wOGExLDEsMCwwLDAtLjcxLjI5TDIuMjksMTIuMzhhMSwxLDAsMCwwLS4yOS43MVYy''@;'; put 'put ''OGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTMuMDhBMSwxLDAsMCwwLDMzLjcxLDEyLjM4Wk0xNCw2aDhWOEgxNFpNMzIsMTdIMjJ2MS45M0gzMlYyOEg0VjE4LjkzSDE0VjE3SDRWMTMuNUw3LjUsMTBoMjFMMzIsMTMuNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTYuNCIgeT0iMTUuNCIgd2lkdGg9IjMuMiIgaGVpZ2h0PSI1LjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEsMjFhMSwxLDAsMCwxLTEsMUgx''@;'; put 'put ''NmExLDEsMCwwLDEtMS0xVjE5SDJ2OWEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMTlIMjFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjcxLDEyLjM4LDI5LjYyLDguMjlBMSwxLDAsMCwwLDI4Ljky''@;'; put 'put ''LDhoLTVWNi4wNUEyLDIsMCwwLDAsMjIsNEgxMy44NEExLjkyLDEuOTIsMCwwLDAsMTIsNi4wNVY4SDcuMDhhMSwxLDAsMCwwLS43MS4yOUwyLjI5LDEyLjM4YTEsMSwwLDAsMC0uMjkuNzFWMTdIMTVWMTVhMSwxLDAsMCwxLDEtMWg0YTEsMSwwLDAsMSwxLDF2MkgzNFYxMy4wOEExLDEsMCww''@;'; put 'put ''LDAsMzMuNzEsMTIuMzhaTTIyLDhIMTRWNmg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlV2luZG93Q2xvc2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE5LjQxLDE4bDcuMjktNy4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4''@;'; put 'put ''LDE2LjU5LDEwLjcxLDkuMjlhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxOCw5LjI5LDI1LjI5YTEsMSwwLDEsMCwxLjQxLDEuNDFMMTgsMTkuNDFsNy4yOSw3LjI5YTEsMSwwLDAsMCwxLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4n''@;'; put 'put ''KSxSLkNsclNoYXBlV2luZG93TWF4PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNy44OSw5aC0yMGEyLDIsMCwwLDAtMiwyVjI1YTIsMiwwLDAsMCwyLDJoMjBhMiwyLDAsMCwwLDItMlYxMUEyLDIsMCwwLDAsMjcuODksOVptLTIwLDE2VjExaDIwVjI1WiIgY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZVdpbmRvd01pbj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjdIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxSLkNsclNoYXBlV2luZG93UmVzdG9yZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsOEgxNGEyLDIsMCwwLDAtMiwydjJoMlYxMEgyOFYyMEgyNnYyaDJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMjgsOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLDE0SDhhMiwyLDAsMCwwLTIsMlYyNmEyLDIsMCwwLDAsMiwySDIyYTIsMiwwLDAsMCwyLTJWMTZBMiwyLDAsMCwwLDIyLDE0Wk04LDI2VjE2SDIyVjI2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTIiIC8+JyksUi5DbHJTaGFwZVpvb21Jbj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTYsNEExMiwxMiwwLDEsMCwyOCwxNiwxMiwxMiwwLDAsMCwxNiw0Wm0wLDIxLjkxQTEwLDEwLDAsMSwxLDI2LDE2LDEwLDEwLDAsMCwxLDE2LDI1LjkxWiIgY2xhc3M9ImNsci1pLW91dGxp''@;'; put 'put ''bmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNzEsMjkuNjlsLTUuMTctNS4xN0ExMy42OCwxMy42OCwwLDAsMSwyNS4xNSwyNmw1LjE1LDUuMTVhMSwxLDAsMCwwLDEuNDEtMS40MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIxLDE1SDE3VjExYTEsMSwwLDAsMC0yLDB2NEgxMWExLDEsMCwwLDAsMCwyaDR2NGExLDEsMCwwLDAsMiwwVjE3aDRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAv''@;'; put 'put ''PicpLFIuQ2xyU2hhcGVab29tT3V0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNiw0QTEyLDEyLDAsMSwwLDI4LDE2LDEyLDEyLDAsMCwwLDE2LDRabTAsMjEuOTFBMTAsMTAsMCwxLDEsMjYsMTYsMTAsMTAsMCwwLDEsMTYsMjUuOTFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMS43MSwyOS42OWwtNS4xNy01LjE3QTEzLjY4LDEzLjY4LDAsMCwxLDI1LjE1LDI2bDUuMTUsNS4xNWExLDEsMCwwLDAsMS40MS0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTIiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjAsMTVIMTJhMSwxLDAsMCwwLDAsMmg4YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlS2V5PSgwLG0uY2xySWNvblNWRykoJzxyZWN0IHg9IjYuMzMi''@;'; 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+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlTGlicmFyeT0oMCxtLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMzMuNDgsMjkuNjMsMjYuNzQsMTEuODJhMiwyLDAsMCwwLTIuNTgtMS4xNkwyMSwxMS44NVY4LjkyQTEuOTIsMS45MiwwLDAsMCwxOS4wOCw3SDE0VjQuOTJBMS45MiwxLjkyLDAsMCwwLDEyLjA4LDNINUEyLDIsMCwwLDAsMyw1VjMyYTEsMSwwLDAsMCwxLDFIMjBh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVYxOS4yN2w1LDEzLjIxYTEsMSwwLDAsMCwxLjI5LjU4bDUuNjEtMi4xNGExLDEsMCwwLDAsLjU4LTEuMjlaTTEyLDguODNWMzFINVY1aDdaTTE5LDMxSDE0VjloNVptOC41MS0uMjVMMjEuMTMsMTMuOTJsMy43NC0xLjQyLDYuMzksMTYuODNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi43NSwzSDUuMjVBMS4xNSwxLjE1LDAsMCwwLDQsNFYzM0gxNFY0QTEuMTUsMS4xNSwwLDAsMCwxMi43NSwzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43NywzMS4wOWwtNi45NC0xOC4zYTEsMSwwLDAsMC0xLjI5LS41OEwyMiwxMy41OVY5YTEsMSwwLDAsMC0xLTFIMTZWMzNoNlYxNC42OUwyOC45MywzM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksUi5DbHJT''@;'; put 'put ''aGFwZUJvbHQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUyLDM0aC0zYTEsMSwwLDAsMS0uODgtMS40NEwxMi41NSwyMUg2YTEsMSwwLDAsMS0uODUtMS41NGwxMC42OC0xN0ExLDEsMCwwLDEsMTYuNjQsMkgzMC4wN2ExLDEsMCwwLDEsLjc3LDEuNjlMMjEuNzgsMTRoNS4zOGEx''@;'; put 'put ''LDEsMCwwLDEsLjczLDEuNjZsLTE2LjYzLDE4QTEsMSwwLDAsMSwxMC41MiwzNFpNOS4xOCwzMmguOTFMMjQuODYsMTZIMTkuNTlhMSwxLDAsMCwxLS43Ny0xLjY5TDI3Ljg4LDRIMTcuMTlMNy43NywxOUgxNC4yYTEsMSwwLDAsMSwuODgsMS40NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjgsMi4yOUEuNDkuNDksMCwwLDAsMzAuMzUsMkgxNi40MmEuNS41LDAsMCwwLS40Mi4yM2wtMTAuNzEsMTdBLjQ5LjQ5LDAsMCwwLDUuNywyMGg3LjY3TDYuNiwzMy4yNWEuNTIuNTIsMCwwLDAsLjQ2Ljc1''@;'; put 'put ''aDNhLjUuNSwwLDAsMCwuMzctLjE2TDI4LDE0Ljg1YS41LjUsMCwwLDAtLjM3LS44NUgyMC44OUwzMC43MiwyLjgyQS40OS40OSwwLDAsMCwzMC44LDIuMjlaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVXcmVuY2g9KDAsbS5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBhdGggZD0iTTMzLjE4LDI2LjExLDIwLjM1LDEzLjI4QTkuMjgsOS4yOCwwLDAsMCw3LjU0LDIuNzlsLTEuMzQuNTksNS4zOCw1LjM4TDguNzYsMTEuNTksMy4zOCw2LjIxLDIuNzksNy41NEE5LjI3LDkuMjcsMCwwLDAsMTMuMjgsMjAuMzVMMjYuMTEsMzMuMThhMiwyLDAsMCww''@;'; put 'put ''LDIuODMsMGw0LjI0LTQuMjRBMiwyLDAsMCwwLDMzLjE4LDI2LjExWm0tNS42Niw1LjY2TDEzLjg4LDE4LjEybC0uNTcuMTZhNy4yNyw3LjI3LDAsMCwxLTkuMzEtNyw3LjIsNy4yLDAsMCwxLC4xNS0xLjQ4bDQuNjEsNC42MSw1LjY2LTUuNjZMOS44MSw0LjE1YTcuMjcsNy4yNywwLDAsMSw4''@;'; put 'put ''LjQ3LDkuMTZsLS4xNi41N0wzMS43NywyNy41M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjcuMTMiIGN5PSIyNy4wOSIgcj0iMS4zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuMjEgMjcuMTIpIHJv''@;'; put 'put ''dGF0ZSgtNDUpIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy43MywyNy43MiwxOS42NywxMy42NmE4Ljc5LDguNzksMCwwLDAtMTItMTAuNUwxMyw4LjUzLDguNTMsMTMsMy4xNiw3LjY3YTguNzksOC43OSww''@;'; put 'put ''LDAsMCwxMC41LDEyTDI3LjcyLDMzLjczYTEuMDcsMS4wNywwLDAsMCwxLjUsMGw0LjUxLTQuNTFBMS4wNywxLjA3LDAsMCwwLDMzLjczLDI3LjcyWk0yOSwyOWExLjM4LDEuMzgsMCwxLDEsMC0yQTEuMzgsMS4zOCwwLDAsMSwyOSwyOVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xp''@;'; put 'put ''ZC1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZUJ1bGxzZXllPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyYTE1LjkyLDE1LjkyLDAsMCwwLTQuMjUuNTlsLjc3LDEuODZhMTQuMDcsMTQuMDcsMCwxLDEtMTAsMTBsLTEuODYtLjc4QTE2LDE2LDAsMSwwLDE4LDJaIiBjbGFzcz0iY2xy''@;'; 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 ''MDksNC4wOSwwLDAsMSwxNiwxNC40NkwxMy41MywxMlY4LjUxYS41LjUsMCwwLDAtLjE1LS4zNUw3Ljc5LDIuNTdhLjUuNSwwLDAsMC0uODUuMzV2NEgzYS41LjUsMCwwLDAtLjM1Ljg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxSLkNsclNoYXBlVGFy''@;'; put 'put ''Z2V0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0xOCw3LjJBMTAuOCwxMC44LDAsMSwwLDI4LjgsMTgsMTAuODEsMTAuODEsMCwwLDAsMTgsNy4yWm0wLDIwQTkuMiw5LjIsMCwxLDEsMjcuMiwxOCw5LjIxLDkuMjEsMCwwLDEsMTgsMjcuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDEyLjMxQTUuNjksNS42OSwwLDEsMCwyMy42OSwxOCw1LjY5LDUuNjksMCwwLDAsMTgsMTIuMzFabTAsOS43N0E0LjA5LDQuMDksMCwxLDEsMjIuMDksMTgsNC4wOSw0LjA5LDAsMCwxLDE4LDIyLjA5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSI0LjA5IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDcuODNBMTAuMTcsMTAuMTcs''@;'; put 'put ''MCwxLDAsMjguMTcsMTgsMTAuMTgsMTAuMTgsMCwwLDAsMTgsNy44M1ptMCwxNkE1Ljg4LDUuODgsMCwxLDEsMjMuODgsMTgsNS44OCw1Ljg4LDAsMCwxLDE4LDIzLjg4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''OCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMjcuODNBMTEuODMsMTEuODMsMCwxLDEsMjkuODMsMTgsMTEuODUsMTEuODUsMCwwLDEsMTgsMjkuODNaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPicpLFIuQ2xyU2hhcGVGbGFtZT0o''@;'; put 'put ''MCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMywxNi42NmMtMS4xOS0yLjA5LTcuOTQtMTQuMTUtNy45NC0xNC4xNWExLDEsMCwwLDAtMS43NSwwbC02LDEwLjY0LTMtNS4yOGExLDEsMCwwLDAtMS43NSwwUzUuNCwxNy43OCw0LjQyLDE5LjVBOS4zLDkuMywwLDAsMCwzLDI0LjYxQzMs''@;'; 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 ''LS4wOGMuNjMtMS4xMSw0LjIzLTcuNDgsNC4yMy03LjQ4YS41LjUsMCwwLDEsLjg3LDBzMy42LDYuMzgsNC4yMyw3LjQ4QTUuODMsNS44MywwLDAsMSwyNywyNS43NkMyNywzMiwyMi4xLDMyLDIxLjQ4LDMyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxS''@;'; put 'put ''LkNsclNoYXBlSG91cmdsYXNzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkgyNlYyNC45MWE2LjY3LDYuNjcsMCwwLDAtMi42OS01LjMzbC0xLjI4LTFBNi4zNiw2LjM2LDAsMCwwLDIxLDE4aDBhNi4yOSw2LjI5LDAsMCwwLDEtLjYybDEuMjgtMUE2LjY3LDYuNjcsMCwwLDAs''@;'; 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+JyksUi5DbHJTaGFwZU5vQWNjZXNzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0''@;'; put 'put ''LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4xNSwxNUg4Ljg1QTEuODUsMS44NSwwLDAsMCw3''@;'; put 'put ''LDE2Ljg1djIuMjlBMS44NSwxLjg1LDAsMCwwLDguODUsMjFIMjcuMTVBMS44NSwxLjg1LDAsMCwwLDI5LDE5LjE1VjE2Ljg1QTEuODUsMS44NSwwLDAsMCwyNy4xNSwxNVptLjI1LDQuMTVhLjI1LjI1LDAsMCwxLS4yNS4yNUg4Ljg1YS4yNS4yNSwwLDAsMS0uMjUtLjI1VjE2Ljg1YS4yNS4y''@;'; put 'put ''NSwwLDAsMSwuMjUtLjI1SDI3LjE1YS4yNS4yNSwwLDAsMSwuMjUuMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJaTTI5LjE1LDIwSDYu''@;'; put 'put ''ODVBLjg1Ljg1LDAsMCwxLDYsMTkuMTVWMTYuODVBLjg1Ljg1LDAsMCwxLDYuODUsMTZIMjkuMTVhLjg1Ljg1LDAsMCwxLC44NS44NXYyLjI5QS44NS44NSwwLDAsMSwyOS4xNSwyMFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZU9yZ2Fu''@;'; put 'put ''aXphdGlvbj0oMCxtLmNsckljb25TVkcpKCc8cG9seWdvbiBwb2ludHM9IjkuOCAxOC44IDI2LjIgMTguOCAyNi4yIDIxLjg4IDI3LjggMjEuODggMjcuOCAxNy4yIDE4LjggMTcuMiAxOC44IDE0IDE3LjIgMTQgMTcuMiAxNy4yIDguMiAxNy4yIDguMiAyMS44OCA5LjggMjEuODggOS44IDE4''@;'; put 'put ''LjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE0LDIzSDRhMiwyLDAsMCwwLTIsMnY2YTIsMiwwLDAsMCwyLDJIMTRhMiwyLDAsMCwwLDItMlYyNUEyLDIsMCwwLDAsMTQsMjNaTTQsMzFWMjVIMTR2NloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMyLDIzSDIyYTIsMiwwLDAsMC0yLDJ2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjVBMiwyLDAsMCwwLDMyLDIzWk0yMiwzMVYyNUgzMnY2WiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMsMTNIMjNhMiwyLDAsMCwwLDItMlY1YTIsMiwwLDAsMC0yLTJIMTNhMiwyLDAsMCwwLTIsMnY2QTIsMiwwLDAsMCwxMywxM1ptMC04SDIzdjZIMTNaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz5cbiAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz0iOS44IDE4LjggMjYuMiAxOC44IDI2LjIgMjEuODggMjcuOCAyMS44OCAyNy44IDE3LjIgMTguOCAxNy4yIDE4LjggMTQgMTcuMiAxNCAxNy4yIDE3LjIgOC4yIDE3LjIgOC4yIDIx''@;'; put 'put ''Ljg4IDkuOCAyMS44OCA5LjggMTguOCIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIiIHk9IjIzIiB3aWR0aD0iMTQiIGhlaWdodD0iMTAiIHJ4PSIyIiByeT0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMSIgeT0iMyIgd2lkdGg9IjE0''@;'; put 'put ''IiBoZWlnaHQ9IjEwIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIC8+JyksUi5DbHJTaGFwZUJhbGFuY2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LDMzSDEyYTEsMSwwLDAsMSwwLTJIMjRhMSwxLDAsMCwxLDAsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iMTciIHk9IjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIyLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0i''@;'; put 'put ''TTI4LDdIOEExLDEsMCwwLDEsOCw1SDI4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNi45MywyNC43OWE3LjIzLDcuMjMsMCwwLDEtNS44MS0yLjg5bC0uNi0uOCwxLjU5LTEuMjEu''@;'; put 'put ''Ni44YTUuMjgsNS4yOCwwLDAsMCw4LjQyLDBsLjYtLjgsMS41OSwxLjIxLS42LjhBNy4yMyw3LjIzLDAsMCwxLDI2LjkzLDI0Ljc5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzAuNTEsMTkuMjVhLjguOCww''@;'; put 'put ''LDAsMS0uNzMtLjQ4TDI2LjkzLDEyLjJsLTIuODUsNi41N2EuOC44LDAsMCwxLTEuNDctLjY0TDI2LjIsOS44N2EuODMuODMsMCwwLDEsMS40NywwbDMuNTgsOC4yNmEuOC44LDAsMCwxLS43MywxLjEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+XG4g''@;'; put 'put ''ICAgICAgICAgICA8cGF0aCBkPSJNOS42OCwyNC43OUE3LjIzLDcuMjMsMCwwLDEsMy44OCwyMS45bC0uNi0uOEw0Ljg2LDE5LjlsLjYuOGE1LjI4LDUuMjgsMCwwLDAsOC40MiwwbC42LS44LDEuNTksMS4yMS0uNi44QTcuMjMsNy4yMywwLDAsMSw5LjY4LDI0Ljc5WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuMjYsMTkuMjVhLjguOCwwLDAsMS0uNzMtLjQ4TDkuNjgsMTIuMiw2Ljg0LDE4Ljc3YS44LjgsMCwwLDEtMS40Ny0uNjRMOC45NSw5Ljg3YS44My44MywwLDAsMSwxLjQ3LDBMMTQsMTgu''@;'; put 'put ''MTNhLjguOCwwLDAsMS0uNzMsMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC03IiAvPicpLFIuQ2xyU2hhcGVJZEJhZGdlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyMmE0LjIzLDQuMjMsMCwxLDAtNC4yMy00LjIzQTQuMjMsNC4yMywwLDAs''@;'; 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+JyksUi5DbHJTaGFwZVJlcGVhdD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMTQuMTVBMy4xNywzLjE3LDAsMCwxLDkuMTcsMTFIMjguNGwtNC4y''@;'; put 'put ''OCw0LjU0YTEsMSwwLDEsMCwxLjQ2LDEuMzdMMzIuMDksMTAsMjUuNTgsMy4wOWExLDEsMCwxLDAtMS40NiwxLjM3TDI4LjQsOUg5LjE3QTUuMTcsNS4xNywwLDAsMCw0LDE0LjE1djYuMWwyLTIuMTJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMiIgZD0iTTMwLDIxLjg1QTMuMTcsMy4xNywwLDAsMSwyNi44MywyNUg3LjZsNC4yOC00LjU0YTEsMSwwLDEsMC0xLjQ2LTEuMzdMMy45MSwyNmw2LjUxLDYuOTFhMSwxLDAsMSwwLDEuNDYtMS4zN0w3LjYsMjdIMjYuODNBNS4xNyw1LjE3LDAsMCwwLDMyLDIxLjg1di02''@;'; put 'put ''LjFsLTIsMi4xMloiLz4nKSxSLkNsclNoYXBlRmlsZUdyb3VwPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzEsMzRIMTNhMSwxLDAsMCwxLTEtMVYxMWExLDEsMCwwLDEsMS0xSDMxYTEsMSwwLDAsMSwxLDFW''@;'; put 'put ''MzNBMSwxLDAsMCwxLDMxLDM0Wk0xNCwzMkgzMFYxMkgxNFoiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIxNiIgeT0iMTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyIi8+XG4gICAgICAgICAgICA8cmVjdCBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgeD0iMTYiIHk9IjIwIiB3aWR0aD0iMTIiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIHg9IjE2IiB5PSIyNCIgd2lkdGg9IjEyIiBoZWln''@;'; put 'put ''aHQ9IjIiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiBkPSJNNiwyNFY0SDI0VjNhMSwxLDAsMCwwLTEtMUg1QTEsMSwwLDAsMCw0LDNWMjVhMSwxLDAsMCwwLDEsMUg2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIGQ9Ik0xMCwyOFY4SDI4VjdhMSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIg''@;'; put 'put ''ZD0iTTMxLDEwSDEzYTEsMSwwLDAsMC0xLDFWMzNhMSwxLDAsMCwwLDEsMUgzMWExLDEsMCwwLDAsMS0xVjExQTEsMSwwLDAsMCwzMSwxMFpNMjgsMjZIMTZWMjRIMjhabTAtNEgxNlYyMEgyOFptMC00SDE2VjE2SDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMiIgZD0iTTYsMjRWNEgyNFYzYTEsMSwwLDAsMC0xLTFINUExLDEsMCwwLDAsNCwzVjI1YTEsMSwwLDAsMCwxLDFINloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xMCwyOFY4SDI4Vjdh''@;'; put 'put ''MSwxLDAsMCwwLTEtMUg5QTEsMSwwLDAsMCw4LDdWMjlhMSwxLDAsMCwwLDEsMWgxWiIvPicpLFIuQ2xyU2hhcGVQYXBlcmNsaXA9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik04LjQyLDMyLjZBNi4zLDYuMyww''@;'; put 'put ''LDAsMSw0LDMwLjc5bC0uMTMtLjEzQTYuMiw2LjIsMCwwLDEsMiwyNi4yMiw2Ljc3LDYuNzcsMCwwLDEsNCwyMS40TDE5LjUsNi4wN2E4LjY3LDguNjcsMCwwLDEsMTIuMTUtLjM1QTgsOCwwLDAsMSwzNCwxMS40NGE5LDksMCwwLDEtMi43LDYuMzZMMTcuMzcsMzEuNkExLDEsMCwxLDEsMTYs''@;'; put 'put ''MzAuMThMMjkuODksMTYuMzhBNyw3LDAsMCwwLDMyLDExLjQ0YTYsNiwwLDAsMC0xLjc2LTQuMyw2LjY3LDYuNjcsMCwwLDAtOS4zNC4zNUw1LjQ1LDIyLjgyQTQuNzgsNC43OCwwLDAsMCw0LDI2LjIyYTQuMjEsNC4yMSwwLDAsMCwxLjI0LDNsLjEzLjEzYTQuNjQsNC42NCwwLDAsMCw2LjUt''@;'; put 'put ''LjIxTDI1LjIyLDE1Ljk0QTIuNywyLjcsMCwwLDAsMjYsMTRhMi4zNSwyLjM1LDAsMCwwLS42OS0xLjY4LDIuNjEsMi42MSwwLDAsMC0zLjY2LjEzbC05LjIsOS4xMmExLDEsMCwxLDEtMS40MS0xLjQyTDIwLjI4LDExYTQuNjIsNC42MiwwLDAsMSw2LjQ4LS4xM0E0LjMzLDQuMzMsMCwwLDEs''@;'; put 'put ''MjgsMTRhNC42OCw0LjY4LDAsMCwxLTEuNDEsMy4zNEwxMy4yOCwzMC41OEE2LjkxLDYuOTEsMCwwLDEsOC40MiwzMi42WiIvPicpLFIuQ2xyU2hhcGVTaHJpbms9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0z''@;'; put 'put ''MiwxNUgyMi40MWw5LjI1LTkuMjVhMSwxLDAsMCwwLTEuNDEtMS40MUwyMSwxMy41OVY0YTEsMSwwLDAsMC0yLDBWMTdIMzJhMSwxLDAsMCwwLDAtMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNNCwxOWExLDEs''@;'; put 'put ''MCwwLDAsMCwyaDkuNTlMNC4zMywzMC4yNWExLDEsMCwxLDAsMS40MSwxLjQxTDE1LDIyLjQxVjMyYTEsMSwwLDAsMCwyLDBWMTlaIi8+JyksUi5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC40NCwzMS45NGE3LjMxLDcuMzEsMCwwLDEtNS43''@;'; 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 ''Nyw2LjUxYTEsMSwwLDAsMCwuODcsMS4xMWguMTJhMSwxLDAsMCwwLDEtLjg4bC45LTcuNjJhMSwxLDAsMCwwLS4yNS0uNzhBMSwxLDAsMCwwLDI2LjgxLDE4LjE4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlQWNjZXNzaWJpbGl0eTI9''@;'; put 'put ''KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjA2LDExaC0yNGExLDEsMCwxLDAsMCwySDE0djkuNjVzMCwwLDAsMGwtMy43NSwxMGExLDEsMCwwLDAsLjU4LDEuMjksMS4xMywxLjEzLDAsMCwwLC4zNi4wNiwxLDEsMCwwLDAsLjkzLS42NUwxNS42MiwyNGg0Ljc2bDMuNTIsOS4zNWEx''@;'; put 'put ''LDEsMCwwLDAsLjkzLjY1LDEuMTMsMS4xMywwLDAsMCwuMzYtLjA2LDEsMSwwLDAsMCwuNTgtMS4yOUwyMiwyMi42OHMwLDAsMCwwVjEzaDguMDZhMSwxLDAsMSwwLDAtMlpNMjAsMjJIMTZWMTNoNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTE4LDEwYTQsNCwwLDEsMC00LTRBNCw0LDAsMCwwLDE4LDEwWm0wLTZhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTcu''@;'; put 'put ''OTYiIGN5PSI1IiByPSIzIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDEwSDZhMSwxLDAsMCwwLDAsMmg4djguMzZzMCwwLDAsMEwxMC4xMSwzMy4xN2ExLDEsMCwwLDAsLjY2LDEuMjUsMS41NSwxLjU1LDAsMCww''@;'; put 'put ''LC4yOSwwLDEsMSwwLDAsMCwxLS43MWwzLjI5LTEwLjg0aDUuMzhMMjQsMzMuNzVhMSwxLDAsMCwwLDEsLjcxLDEuNTUsMS41NSwwLDAsMCwuMjksMCwxLDEsMCwwLDAsLjY2LTEuMjVMMjIsMjAuNHMwLDAsMCwwVjEyaDhhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHIt''@;'; put 'put ''aS1zb2xpZC1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZVNvcnRCeT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjguNTQsMTNINy40NmExLDEsMCwwLDEsMC0ySDI4LjU0YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xNywxOUg3LjQ2YTEsMSwwLDAsMSwwLTJIMjEuMTdhMSwxLDAsMCwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjc0LDI1SDcuNDZhMSwxLDAsMCwxLDAt''@;'; put 'put ''Mmg2LjI4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlQ29sbGFwc2VDYXJkPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywyMUgzYTEsMSwwLDAsMC0xLDF2NmExLDEsMCwwLDAsMSwxSDMzYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWMjJBMSwxLDAsMCwwLDMzLDIxWm0tMSw2SDRWMjNIMzJaIiAgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC4yMmw1LjY1LTUuNjVhLjgxLjgxLDAsMCwwLDAtMS4xNC44LjgsMCwwLDAt''@;'; put 'put ''MS4xMywwTDE4LDE4bC00LjUyLTQuNTJhLjguOCwwLDAsMC0xLjEzLDAsLjgxLjgxLDAsMCwwLDAsMS4xNFoiICBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjIybDUuNjUtNS42NWEuODEuODEsMCwwLDAs''@;'; put 'put ''MC0xLjE0LjguOCwwLDAsMC0xLjEzLDBMMTgsMTIsMTMuNDgsNy40M2EuOC44LDAsMCwwLTEuMTMsMCwuODEuODEsMCwwLDAsMCwxLjE0WiIgIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cmVjdCB4PSIyIiB5PSIyMiIgd2lkdGg9''@;'; put 'put ''IjMyIiBoZWlnaHQ9IjgiIHJ4PSIxIiByeT0iMSIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyMC43bC01Ljc5LTUuNzlhMSwxLDAsMCwxLDAtMS40MSwxLDEsMCwwLDEsMS40MSwwTDE4LDE3Ljg3bDQuMzgtNC4z''@;'; put 'put ''N2ExLDEsMCwwLDEsMS40MSwwLDEsMSwwLDAsMSwwLDEuNDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE0LjUsMTIuMjEsOC43MWExLDEsMCwwLDEsMC0xLjQyLDEsMSwwLDAsMSwxLjQxLDBMMTgsMTEuNjds''@;'; put 'put ''NC4zOC00LjM4YTEsMSwwLDAsMSwxLjQxLDAsMSwxLDAsMCwxLDAsMS40MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIC8+JyksUi5DbHJTaGFwZUV4cGFuZENhcmQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDZIM0ExLDEsMCwwLDAsMiw3VjI5YTEs''@;'; put 'put ''MSwwLDAsMCwxLDFIMzNhMSwxLDAsMCwwLDEtMVY3QTEsMSwwLDAsMCwzMyw2Wk0zMiwyOEg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEzLjQ4LDE1Ljg2LDE4LDExLjM0bDQuNTIsNC41MmEuNzcu''@;'; put 'put ''NzcsMCwwLDAsLjU2LjI0LjgxLjgxLDAsMCwwLC41Ny0xLjM3TDE4LDkuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTMuNDgsMjEuODYsMTgsMTcu''@;'; put 'put ''MzRsNC41Miw0LjUyYS43Ny43NywwLDAsMCwuNTYuMjQuODEuODEsMCwwLDAsLjU3LTEuMzdMMTgsMTUuMDhsLTUuNjUsNS42NWEuOC44LDAsMSwwLDEuMTMsMS4xM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJN''@;'; put 'put ''MzMsNkgzQTEsMSwwLDAsMCwyLDdWMjlhMSwxLDAsMCwwLDEsMUgzM2ExLDEsMCwwLDAsMS0xVjdBMSwxLDAsMCwwLDMzLDZaTTIzLjc5LDIxLjQxYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTdsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsMTQuMiwyMy43''@;'; put 'put ''OSwyMEExLDEsMCwwLDEsMjMuNzksMjEuNDFabTAtNi4yYTEsMSwwLDAsMS0xLjQxLDBMMTgsMTAuODNsLTQuMzgsNC4zOGExLDEsMCwwLDEtMS40MSwwLDEsMSwwLDAsMSwwLTEuNDJMMTgsOGw1Ljc5LDUuNzlBMSwxLDAsMCwxLDIzLjc5LDE1LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNs''@;'; put 'put ''ci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlQnJpZWZjYXNlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiwyOGEwLDAsMCwwLDEsMCwwSDRWMjEuMzJhNy4xLDcuMSwwLDAsMS0yLTEuNDNWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjE5Ljg5YTYuNzQs''@;'; put 'put ''Ni43NCwwLDAsMS0yLDEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yNSwyMi40YTEsMSwwLDAsMCwxLTFWMTUuOTRIMjRWMThIMTR2MkgyNHYxLjRBMSwxLDAsMCwwLDI1LDIyLjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBj''@;'; put 'put ''bHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0zMyw2SDI0VjQuMzhBMi40MiwyLjQyLDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQyLDIuNDIsMCwwLDAsMTIsNC4zOFY2SDNBMSwxLDAsMCwwLDIsN3Y4YTUsNSwwLDAsMCw1LDVoM3YxLjRhMSwxLDAsMCwwLDIsMFYxNS45NEgxMFYx''@;'; put 'put ''OEg3YTMsMywwLDAsMS0zLTNWOEgzMnY3YTMsMywwLDAsMS0zLDNIMjh2MmgxYTUsNSwwLDAsMCw1LTVWN0ExLDEsMCwwLDAsMzMsNlpNMjIsNkgxNFY0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMTFhLjQzLjQzLDAsMCwxLC40NC40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTMwLDE4QTQuMDYsNC4wNiwwLDAsMCwzNCwxNFY2SDI0VjQuNDNBMi40NCwyLjQ0LDAsMCwwLDIxLjU1LDJoLTcuMUEyLjQ0LDIuNDQsMCwwLDAsMTIsNC40M1Y2SDJ2OEE0LjA2LDQuMDYsMCwwLDAsNi4wNSwxOGg0VjE1LjkyaDJ2NS43''@;'; put 'put ''YTEsMSwwLDEsMS0yLDBWMjAuMDZINi4wNkE2LjA2LDYuMDYsMCwwLDEsMiwxOC40OXY5LjQ1YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxOC40OWE2LDYsMCwwLDEtNC4wNiwxLjU3SDI4VjE4Wk0xNCw0LjQzQS40NS40NSwwLDAsMSwxNC40NSw0aDcuMWEuNDUuNDUsMCwwLDEs''@;'; put 'put ''LjQ1LjQzVjZIMTRaTTI2LDIxLjYyYTEsMSwwLDEsMS0yLDBWMjAuMDZIMTRWMThIMjRWMTUuOTJoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZUNvbG9yUGlja2VyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMC4wNWE1''@;'; put 'put ''LjA3LDUuMDcsMCwwLDAsLjEtNy4xN0E1LjA2LDUuMDYsMCwwLDAsMjYsM0wyMC43OCw4LjE1YTIuMTMsMi4xMywwLDAsMS0zLDBsLS42Ny0uNjdMMTUuNzIsOC45MiwyNy4wOCwyMC4yOGwxLjQyLTEuNDItLjY3LS42N2EyLjEzLDIuMTMsMCwwLDEsMC0zWk0yNi40NCwxMy44YTQuMDcsNC4w''@;'; put 'put ''NywwLDAsMC0xLjA4LDEuOTJsLTUuMDgtNS4wOEE0LjA3LDQuMDcsMCwwLDAsMjIuMiw5LjU2bDUuMTYtNS4xN2EzLjA5LDMuMDksMCwwLDEsNC4zNS0uMSwzLjA5LDMuMDksMCwwLDEtLjEsNC4zNVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBh''@;'; put 'put ''dGggZD0iTTcuMywzMS41MWEyLDIsMCwxLDEtMi44My0yLjgzTDE4LjU4LDE0LjU3bC0xLjQyLTEuNDFMMy4wNSwyNy4yN2E0LDQsMCwwLDAtLjY4LDQuOEwuODksMzMuNTVBMSwxLDAsMCwwLC44OSwzNWExLDEsMCwwLDAsMS40MiwwbDEuNDMtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42''@;'; put 'put ''LDQuMDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwyMi44MiwxOC44MSwyMS40MSwxNy40WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMzMuNzMsMi4xMWE0LjA5LDQuMDksMCwwLDAtNS43Ni4xTDIyLjgxLDcuMzhhMy4xMywzLjEzLDAs''@;'; put 'put ''MCwxLTQuMy4xMUwxNy4wOSw4LjkxLDI3LDE4Ljc5bDEuNDItMS40MkEzLjE4LDMuMTgsMCwwLDEsMjguNDYsMTNsNS4xNy01LjE3QTQuMDgsNC4wOCwwLDAsMCwzMy43MywyLjExWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0yMi4xOCwx''@;'; put 'put ''Ni43OSw3LjQ2LDMxLjUxYTIsMiwwLDEsMS0yLjgyLTIuODNMMTkuMzUsMTRsLTEuNDEtMS40MUwzLjIyLDI3LjI3YTQsNCwwLDAsMC0uNjgsNC44TDEuMDYsMzMuNTVhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsMS40MSwwbDEuNDQtMS40NGEzLjkzLDMuOTMsMCwwLDAsMi4wOS42LDQu''@;'; put 'put ''MDYsNC4wNiwwLDAsMCwyLjg4LTEuMkwyMy42LDE4LjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlQ29weVRvQ2xpcGJvYXJkPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi42LDRIMjEuNTVhMy44OSwzLjg5LDAsMCwwLTcu''@;'; put 'put ''MzEsMEgxMy40QTIuNDEsMi40MSwwLDAsMCwxMSw2LjRWMTBIMjVWNi40QTIuNDEsMi40MSwwLDAsMCwyMi42LDRaTTIzLDhIMTNWNi4yNUEuMjUuMjUsMCwwLDEsMTMuMjUsNmgyLjY5bC4xMi0xLjExQTEuMjQsMS4yNCwwLDAsMSwxNi42MSw0YTIsMiwwLDAsMSwzLjE1LDEuMThsLjA5Ljg0''@;'; put 'put ''aDIuOWEuMjUuMjUsMCwwLDEsLjI1LjI1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG48cGF0aCBkPSJNMzMuMjUsMTguMDZIMjEuMzNsMi44NC0yLjgzYTEsMSwwLDEsMC0xLjQyLTEuNDJMMTcuNSwxOS4wNmw1LjI1LDUuMjVhMSwxLDAsMCwwLC43''@;'; put 'put ''MS4yOSwxLDEsMCwwLDAsLjcxLTEuN2wtMi44NC0yLjg0SDMzLjI1YTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbjxwYXRoIGQ9Ik0yOSwxNmgyVjYuNjhBMS42NiwxLjY2LDAsMCwwLDI5LjM1LDVIMjcuMDhWN0gyOVoiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuPHBhdGggZD0iTTI5LDMxSDdWN0g5VjVINi42NEExLjY2LDEuNjYsMCwwLDAsNSw2LjY3VjMxLjMyQTEuNjYsMS42NiwwLDAsMCw2LjY1LDMzSDI5LjM2QTEuNjYsMS42NiwwLDAsMCwzMSwzMS4zM1YyMi4wNkgy''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFIuQ2xyU2hhcGVEcmFnSGFuZGxlPSgwLG0uY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjE1IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; put 'put ''IC8+PGNpcmNsZSBjeD0iMTUiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48Y2lyY2xlIGN4PSIyMSIgY3k9IjEyIiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUg''@;'; put 'put ''Y3g9IjIxIiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBjeD0iMjEiIGN5PSIxOCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIxNSIgY3k9''@;'; put 'put ''IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFIuQ2xyU2hhcGVGaWx0ZXIyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMywxMUgzYTEsMSwwLDAsMCwwLDJIMzNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRs''@;'; put 'put ''aW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI4LDE3SDhhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG48cGF0aCBkPSJNMjMsMjNIMTNhMSwxLDAsMCwwLDAsMkgyM2Ex''@;'; put 'put ''LDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksUi5DbHJTaGFwZU1vb249KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDI3LjE5YTEsMSwwLDAsMC0xLS41NmMtLjI4LDAtLjU2LDAtLjg1LDBBMTEsMTEsMCwwLDEsMjQu''@;'; put 'put ''OTIsNS42MWExLDEsMCwwLDAsLjYxLTEsMSwxLDAsMCwwLS42Ny0uOTEsMTQuNywxNC43LDAsMCwwLTUtLjg3LDE1LjEyLDE1LjEyLDAsMCwwLDAsMzAuMjQsMTQuNzgsMTQuNzgsMCwwLDAsMTEtNC44MUExLDEsMCwwLDAsMzEsMjcuMTlaTTE5Ljg5LDMxLjEyYTEzLjEyLDEzLjEyLDAsMCwx''@;'; put 'put ''LDAtMjYuMjQsMTEuODEsMTEuODEsMCwwLDEsMiwuMTYsMTMsMTMsMCwwLDAsNS43MiwyMy41M0ExMi43NSwxMi43NSwwLDAsMSwxOS44OSwzMS4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuPHBhdGggZD0iTTI5LjIsMjYuNzJBMTIuMDcsMTIu''@;'; put 'put ''MDcsMCwwLDEsMjIuOSw0LjQ0LDEzLjY4LDEzLjY4LDAsMCwwLDE5LjQ5LDRhMTQsMTQsMCwwLDAsMCwyOCwxMy44MiwxMy44MiwwLDAsMCwxMC45LTUuMzRBMTEuNzEsMTEuNzEsMCwwLDEsMjkuMiwyNi43MloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+Jyks''@;'; put 'put ''Ui5DbHJTaGFwZVN1bj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsNi4zMWExLDEsMCwwLDAsMS0xVjEuOTFhMSwxLDAsMCwwLTIsMHYzLjRBMSwxLDAsMCwwLDE4LDYuMzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbjxwYXRoIGQ9Ik0x''@;'; 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 ''OC40QTEsMSwwLDAsMCwyNy42LDkuODFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC04IiAvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjEwIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC05IiAvPicpLFIuQ2xyU2hhcGVXYW5kPSgwLG0uY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzQuMSw0LDMxLjcxLDEuNmExLjgzLDEuODMsMCwwLDAtMS4zMS0uNTRoMGEyLjA1LDIuMDUsMCwwLDAtMS40NS42MkwxLjc2LDI5LjIzQTIsMiwwLDAsMCwxLjY4LDMybDIuNCwy''@;'; put 'put ''LjQzQTEuODMsMS44MywwLDAsMCw1LjM5LDM1aDBhMi4wNSwyLjA1LDAsMCwwLDEuNDUtLjYyTDM0LDYuNzlBMiwyLDAsMCwwLDM0LjEsNFpNNS40MiwzMi45MywzLjE2LDMwLjY1aDBMMjQuMTEsOS40M2wyLjI1LDIuMjhaTTMyLjYxLDUuMzlsLTUuMTIsNS4xOEwyNS4yNCw4LjI5bDUuMTMt''@;'; put 'put ''NS4yLDIuMjUsMi4yOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzIuNTMsMjAuNDdsMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMy0xLjEzbC0yLjA5LDIuMDktMi4wOS0yLjA5YS44LjgsMCwwLDAtMS4xMywx''@;'; put 'put ''LjEzbDIuMDksMi4wOS0yLjA5LDIuMDlhLjguOCwwLDAsMCwxLjEzLDEuMTNsMi4wOS0yLjA5LDIuMDksMi4wOWEuOC44LDAsMCwwLDEuMTMtMS4xM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMTQuNzgsNi41''@;'; put 'put ''MWEuOC44LDAsMCwwLDEuMTMsMEwxNy40LDVsMS40OSwxLjQ5QS44LjgsMCwwLDAsMjAsNS4zOEwxOC41NCwzLjg5LDIwLDIuNGEuOC44LDAsMCwwLTEuMTMtMS4xM0wxNy40LDIuNzYsMTUuOTEsMS4yN0EuOC44LDAsMSwwLDE0Ljc4LDIuNGwxLjQ5LDEuNDlMMTQuNzgsNS4zOEEuOC44LDAs''@;'; put 'put ''MCwwLDE0Ljc4LDYuNTFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgZD0iTTguMzMsMTUuMjZhLjguOCwwLDAsMCwxLjEzLDBsMS4xNi0xLjE2LDEuMTYsMS4xNmEuOC44LDAsMSwwLDEuMTMtMS4xM0wxMS43NiwxM2wx''@;'; put 'put ''LjE2LTEuMTZhLjguOCwwLDEsMC0xLjEzLTEuMTNsLTEuMTYsMS4xNkw5LjQ2LDEwLjY4YS44LjgsMCwxLDAtMS4xMywxLjEzTDkuNDksMTMsOC4zMywxNC4xM0EuOC44LDAsMCwwLDguMzMsMTUuMjZaIi8+JyksUi5DbHJTaGFwZUN1cnNvck1vdmU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTI4Ljg1LDEyLjg5YTEsMSwwLDAsMC0xLjQyLDAsMSwxLDAsMCwwLDAsMS40MUwzMC4xNCwxN0gxOVY1Ljg2bDIuNjksMi43YTEsMSwwLDAsMCwxLjQxLDAsMSwxLDAsMCwwLDAtMS40MkwxOCwyLDEyLjg5LDcuMTVhMSwxLDAsMCwwLS4yOS43MSwxLDEsMCwwLDAsMS43MS43TDE3LDUu''@;'; put 'put ''ODZWMTdINS44NmwyLjctMi42OWExLDEsMCwwLDAsMC0xLjQxLDEsMSwwLDAsMC0xLjQyLDBMMiwxOGw1LjE0LDUuMTFhMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjctMS43MUw1Ljg2LDE5SDE3VjMwLjE0bC0yLjY5LTIuN2ExLDEsMCwwLDAtMS43MS43LDEsMSwwLDAsMCwuMjkuNzFM''@;'; put 'put ''MTgsMzRsNS4xMS01LjE0YTEsMSwwLDAsMCwwLTEuNDIsMSwxLDAsMCwwLTEuNDEsMEwxOSwzMC4xNFYxOUgzMC4xNGwtMi43LDIuNjlhMSwxLDAsMCwwLC43LDEuNzEsMSwxLDAsMCwwLC43MS0uMjlMMzQsMThaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz4nKSxSLkNsclNoYXBlQ2xvbmU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTYsNkgyMnY0aDJWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMjJINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxw''@;'; put 'put ''YXRoIGQ9Ik0zMCwxMkgxNGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlYxNEEyLDIsMCwwLDAsMzAsMTJabTAsMThIMTRWMTRIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cG9seWdvbiBwb2ludHM9IjIx''@;'; put 'put ''IDI4IDIzIDI4IDIzIDIzIDI4IDIzIDI4IDIxIDIzIDIxIDIzIDE2IDIxIDE2IDIxIDIxIDE2IDIxIDE2IDIzIDIxIDIzIDIxIDI4IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjQsMTBWNmEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCww''@;'; put 'put ''LDQsNlYyMmEyLDIsMCwwLDAsMiwyaDRWMTJhMiwyLDAsMCwxLDItMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDEySDE0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjE0QTIsMiwwLDAsMCwz''@;'; put 'put ''MCwxMlpNMjgsMjNIMjN2NUgyMVYyM0gxNlYyMWg1VjE2aDJ2NWg1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlRGV0YWlscz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCww''@;'; put 'put ''LDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZabTAsMjJINFY4SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTksMTRIMjdhMSwxLDAsMCwwLDAtMkg5YTEsMSwwLDAsMCwwLDJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNOSwxOEgyN2ExLDEsMCwwLDAsMC0ySDlhMSwxLDAsMCwwLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik05LDIySDE5YTEsMSwwLDAsMCwwLTJIOWExLDEsMCww''@;'; put 'put ''LDAsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xOSwyMkg5YTEsMSwwLDAsMSwwLTJIMTlhMSwx''@;'; put 'put ''LDAsMCwxLDAsMlptOC00SDlhMSwxLDAsMCwxLDAtMkgyN2ExLDEsMCwwLDEsMCwyWm0wLTRIOWExLDEsMCwwLDEsMC0ySDI3YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVEcmFnSGFuZGxlQ29ybmVyPSgwLG0u''@;'; put 'put ''Y2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMjQiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PGNpcmNsZSBjeD0iMTgiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIg''@;'; put 'put ''Lz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxjaXJjbGUgY3g9IjI0IiBjeT0iMTIiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PGNpcmNsZSBj''@;'; put 'put ''eD0iMjQiIGN5PSIyNCIgcj0iMS41IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48Y2lyY2xlIGN4PSIyNCIgY3k9IjE4IiByPSIxLjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFIuQ2xyU2hhcGVFcmFzZXI9''@;'; put 'put ''KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM1LjYyLDEyYTIuODIsMi44MiwwLDAsMC0uODQtMkwyNy40OSwyLjY1YTIuOSwyLjksMCwwLDAtNCwwTDIuODMsMjMuMjhhMi44NCwyLjg0LDAsMCwwLDAsNEw3LjUzLDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0ySDE2Ljc0''@;'; put 'put ''bDE4LTE4QTIuODIsMi44MiwwLDAsMCwzNS42MiwxMlpNMTMuOTEsMzJIMTAuMzZMNC4yNSwyNS44OWEuODQuODQsMCwwLDEsMC0xLjE5bDUuNTEtNS41Miw4LjQ5LDguNDhaTTMzLjM3LDEyLjU0LDE5LjY2LDI2LjI1bC04LjQ4LTguNDksMTMuNy0xMy43YS44Ni44NiwwLDAsMSwxLjE5LDBs''@;'; put 'put ''Ny4zLDcuMjlhLjg2Ljg2LDAsMCwxLC4yNS42QS44Mi44MiwwLDAsMSwzMy4zNywxMi41NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwzMkgxNS4zM0wxOSwyOC4zN2wtOS45LTkuOUwzLjU0LDI0YTEuODMsMS44MywwLDAsMCww''@;'; put 'put ''LDIuNkw5LDMySDNhMSwxLDAsMCwwLDAsMkgyOGExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzQuMDgsMTAuNjVsLTcuMy03LjNhMS44MywxLjgzLDAsMCwwLTIuNiwwTDEwLjQ3LDE3LjA2bDkuOSw5LjlMMzQuMDgs''@;'; put 'put ''MTMuMjVBMS44NSwxLjg1LDAsMCwwLDM0LjA4LDEwLjY1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlTGFuZHNjYXBlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwy''@;'; put 'put ''SDMyYTIsMiwwLDAsMCwyLTJWOEEyLDIsMCwwLDAsMzIsNlptMCwyMkg0VjhIMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyMmEuODIuODIsMCwwLDAsLjU1LS4yMS44LjgsMCwwLDAsMC0xLjEzTDcuODMsMTguOEgyOC4xN2wt''@;'; put 'put ''MS43MiwxLjg2YS44LjgsMCwwLDAsMCwxLjEzQS44Mi44MiwwLDAsMCwyNywyMmEuNzguNzgsMCwwLDAsLjU4LS4yNkwzMS4wOSwxOGwtMy40Ny0zLjc0YS43OS43OSwwLDAsMC0xLjEzLDAsLjguOCwwLDAsMCwwLDEuMTNsMS43MiwxLjg2SDcuODNsMS43Mi0xLjg2YS44LjgsMCwwLDAsMC0x''@;'; put 'put ''LjEzLjc5Ljc5LDAsMCwwLTEuMTMsMEw0LjkxLDE4bDMuNDcsMy43NEEuNzguNzgsMCwwLDAsOSwyMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWOEEyLDIsMCwwLDAsMzIsNlpNMjcuNzcsMjEuODhhMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNywxLDEsMCwwLDEtLjA2LTEuNDFMMjcuNzEsMTlIOC4yOUw5LjcsMjAuNTJhMSwxLDAsMCwxLS4wNiwxLjQxQTEsMSwwLDAsMSw5LDIyLjJhMSwxLDAsMCwxLS43My0u''@;'; put 'put ''MzJMNC42NCwxOGwzLjU5LTMuODhBMSwxLDAsMCwxLDkuNywxNS40OEw4LjI5LDE3SDI3LjcxTDI2LjMsMTUuNDhhMSwxLDAsMCwxLDEuNDctMS4zNkwzMS4zNiwxOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZVBhc3RlPSgwLG0uY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwxMkgyNnYyaDR2MmgyVjE0QTIsMiwwLDAsMCwzMCwxMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDMwSDI4djJoMmEyLDIsMCwwLDAsMi0yVjI2SDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDIyVjZhMiwyLDAsMCwwLTItMkg2QTIsMiwwLDAsMCw0LDZWMjJh''@;'; put 'put ''MiwyLDAsMCwwLDIsMkgyMkEyLDIsMCwwLDAsMjQsMjJaTTYsNkgyMlYyMkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHJlY3QgeD0iMjAiIHk9IjMwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz48cGF0aCBkPSJNMzAsMTJIMjZ2Mmg0djJoMlYxNEEyLDIsMCwwLDAsMzAsMTJaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxyZWN0IHg9IjMwIiB5PSIxOCIgd2lkdGg9IjIiIGhlaWdodD0iNiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzAsMzBIMjh2MmgyYTIsMiwwLDAsMCwyLTJWMjZIMzBaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPjxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPjxyZWN0IHg9IjIwIiB5PSIzMCIgd2lkdGg9IjYiIGhlaWdodD0i''@;'; put 'put ''MiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNSIgLz48cGF0aCBkPSJNMTQsMjZIMTJ2NGEyLDIsMCwwLDAsMiwyaDRWMzBIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC02IiAvPicpLFIuQ2xyU2hhcGVQb3J0cmFpdD0oMCxtLmNsckljb25T''@;'; put 'put ''VkcpKCc8cGF0aCBkPSJNMTUuMzQsMjYuNDVhLjguOCwwLDAsMC0xLjEzLDAsLjc5Ljc5LDAsMCwwLDAsMS4xM0wxOCwzMS4wOWwzLjc0LTMuNDdhLjc5Ljc5LDAsMCwwLC4wNS0xLjEzLjguOCwwLDAsMC0xLjEzLDBMMTguOCwyOC4xN1Y3LjgzbDEuODYsMS43MmEuOC44LDAsMSwwLDEuMDgt''@;'; put 'put ''MS4xN0wxOCw0LjkxLDE0LjI2LDguMzhhLjc5Ljc5LDAsMCwwLDAsMS4xMy44LjgsMCwwLDAsMS4xMywwTDE3LjIsNy44M1YyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOCwySDhBMiwyLDAsMCwwLDYsNFYzMmEyLDIsMCww''@;'; put 'put ''LDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMjgsMlptMCwzMEg4VjRIMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjgsMkg4QTIsMiwwLDAsMCw2LDRWMzJhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjRBMiwyLDAsMCwwLDI4LDJaTTIwLjUyLDI2LjNhMSwxLDAsMCwxLDEuMzYsMS40N0wxOCwzMS4zNmwtMy44OC0zLjU5YTEsMSwwLDAsMSwxLjM2LTEuNDdMMTcsMjcuNzFWOC4yOUwxNS40OCw5LjdhMSwxLDAsMCwxLTEuMzYtMS40N0wxOCw0LjY0bDMuODgsMy41OWExLDEsMCwwLDEsLjA1''@;'; put 'put ''LDEuNDEsMSwxLDAsMCwxLS43My4zMiwxLDEsMCwwLDEtLjY4LS4yNkwxOSw4LjI5VjI3LjcxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlVHJlZVZpZXc9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDMySDExYTEsMSwwLDAs''@;'; 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+JyksUi5DbHJTaGFwZUN1cnNvckhhbmRHcmFiPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOC4wOSw5Ljc0YTQsNCwwLDAs''@;'; put 'put ''MC0xLjE2LjE5Yy0uMTktMS4yNC0xLjU1LTIuMTgtMy4yNy0yLjE4QTQsNCwwLDAsMCwyMi4xMyw4LDMuMzcsMy4zNywwLDAsMCwxOSw2LjNhMy40NSwzLjQ1LDAsMCwwLTIuODcsMS4zMiwzLjY1LDMuNjUsMCwwLDAtMS44OS0uNTFBMy4wNSwzLjA1LDAsMCwwLDExLDkuODl2LjkxYy0xLjA2''@;'; put 'put ''LjQtNC4xMSwxLjgtNC45MSw0Ljg0cy4zNCw4LDIuNjksMTEuNzhhMjUuMjEsMjUuMjEsMCwwLDAsNS45LDYuNDEuOS45LDAsMCwwLC41My4xN0gyNS41NWEuOTIuOTIsMCwwLDAsLjU1LS4xOSwxMy4xMywxMy4xMywwLDAsMCwzLjc1LTYuMTNBMjUuOCwyNS44LDAsMCwwLDMxLjQxLDE4di01''@;'; put 'put ''LjVBMy4wOCwzLjA4LDAsMCwwLDI4LjA5LDkuNzRaTTI5LjYxLDE4YTI0LDI0LDAsMCwxLTEuNDcsOS4xNUExMi40NiwxMi40NiwwLDAsMSwyNS4yLDMyLjJIMTUuNDdhMjMuNzUsMjMuNzUsMCwwLDEtNS4yLTUuNzJjLTIuMzctMy44Ni0zLTguMjMtMi40OC0xMC4zOUE1LjcsNS43LDAsMCwx''@;'; put 'put ''LDExLDEyLjc2djcuNjVhLjkuOSwwLDAsMCwxLjgsMFY5Ljg5YzAtLjQ3LjU5LTEsMS40Ni0xczEuNDkuNTIsMS40OSwxdjUuNzJoMS44VjguODFjMC0uMjguNTgtLjcxLDEuNDYtLjcxczEuNTMuNDgsMS41My43NXY2Ljg5aDEuOFYxMGwuMTctLjEyYTIuMSwyLjEsMCwwLDEsMS4xOC0uMzJj''@;'; put 'put ''LjkzLDAsMS41LjQ0LDEuNS42OGwwLDYuNUgyN1YxMS44N2ExLjkxLDEuOTEsMCwwLDEsMS4xMi0uMzNjLjg2LDAsMS41Mi41MSwxLjUyLjk0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksUi5DbHJTaGFwZUN1cnNvckhhbmRPcGVuPSgwLG0uY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGQ9Ik0zMS40Niw4LjU3QTMuMTEsMy4xMSwwLDAsMCwyNyw1Ljc1YTMuMTksMy4xOSwwLDAsMC00LjY2LTIuNjQsMy4yOSwzLjI5LDAsMCwwLTYuNDItLjc2LDMuMjMsMy4yMywwLDAsMC0xLjY2LS40NkEzLjI3LDMuMjcsMCwwLDAsMTEsNS4xOFYxNy44NGMtMS4y''@;'; put 'put ''OC0xLjYtMi41My0zLjE4LTIuNzItMy40NUEzLjE5LDMuMTksMCwwLDAsNS41NiwxMi45YTMuMzcsMy4zNywwLDAsMC0zLjQ3LDMuNDhDMi4xOCwxOC4xOCw1LjY2LDI0LjU0LDgsMjhjMy41NCw1LjI0LDYuOTIsNiw3LjA3LDZsLjE4LDBIMjUuNTlhLjkyLjkyLDAsMCwwLC41NS0uMTksMTMu''@;'; put 'put ''MTMsMTMuMTMsMCwwLDAsMy43NS02LjEzYzEtMy4wOSwxLjUzLTcuNTMsMS41OC0xMy41NlpNMjguMTgsMjcuMTJhMTIuNDYsMTIuNDYsMCwwLDEtMi45NCw1LjA4SDE1LjMzYy0uNDctLjE0LTMuMDctMS4xLTUuODctNS4yNVMzLjk0LDE3LjI3LDMuODksMTYuMjlhMS41LDEuNSwwLDAsMSwu''@;'; put 'put ''NDUtMS4xMywxLjUyLDEuNTIsMCwwLDEsMS4xNC0uNDYsMS40MywxLjQzLDAsMCwxLDEuMzIuNzFjLjI5LjQzLDIuMzYsMywzLjU3LDQuNTNMMTIuOCwxOC4zVjUuMThhMS40OCwxLjQ4LDAsMSwxLDIuOTUsMFYxNi4zMmgxLjh2LTEzYTEuNTEsMS41MSwwLDAsMSwzLDBWMTYuNDVoMS44VjZh''@;'; put 'put ''MS40MywxLjQzLDAsMSwxLDIuODUsMFYxNy40NEgyN1Y4LjU0YTEuMzMsMS4zMywwLDAsMSwyLjY1LDB2NS41NUMyOS42MiwyMCwyOS4xNCwyNC4yMSwyOC4xOCwyNy4xMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVGaWxlWmlw''@;'; put 'put ''PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwzMC4yVjEybC04LjEtNy45SDcuOEM2LjgsNC4xLDYsNC45LDYsNmMwLDAsMCwwLDAsMHYyNC4yYzAsMSwwLjcsMS44LDEuNywxLjhjMCwwLDAuMSwwLDAuMSwwaDIwLjNcblx0XHRjMSwwLDEuOC0wLjcsMS44LTEuN0MzMCwzMC4zLDMw''@;'; 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 ''MkgxNy4yeiBNMjEuOSwxMlY2LjVsNS43LDUuNUgyMS45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlRmlsdGVyT2ZmPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCw2LjRDMzQsNS42LDMzLjMsNSwzMi41LDVIMTAuM2wyLDJI''@;'; put 'put ''MzJ2MC42bC05LjYsOS42bDEuNCwxLjRMMzMuNCw5QzMzLjgsOC42LDM0LDguMSwzNCw3LjZWNi41QzM0LDYuNSwzNCw2LjQsMzQsNi40eiJcblx0XHQgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIuNywzbDIsMmgtMUMyLjksNC45LDIu''@;'; put 'put ''MSw1LjUsMiw2LjN2MS4xYzAsMC41LDAuMiwxLDAuNiwxLjRMMTQsMjAuMnYxMC4zbDEuOSwwLjhWMTkuNEw0LDcuNVY3aDIuN0wyMCwyMC4zdjEyLjlsMiwwLjhcblx0XHRjMCwwLDAsMCwwLTAuMVYyMi4zbDEwLjEsMTAuMWwxLjQtMS40TDQuMSwxLjZMMi43LDN6IiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjMuOSwxOC42TDEwLjMsNS4xaDIyLjJDMzMuMyw1LDM0LDUuNiwzNCw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUtMC4yLDEtMC42LDEuNEwyMy45LDE4LjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29s''@;'; put 'put ''aWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMy41LDMxTDQuMSwxLjZMMi42LDNsMi4xLDIuMUgzLjVDMi43LDUsMiw1LjYsMiw2LjRjMCwwLDAsMCwwLDAuMXYxLjFjMCwwLjUsMC4yLDEsMC42LDEuNEwxNCwyMC41djEwLjFsOCwzLjRWMjIuNFxuXHRsMTAuMSwxMC4xTDMzLjUsMzF6IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVSZWN5Y2xlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjQsMTcuNGMwLjIsMC4xLDAuMywwLjEsMC41LDAuMWMwLjIsMCwwLjQtMC4xLDAuNS0wLjFsNy00LjFjMC4zLTAuMiwwLjUtMC41LDAu''@;'; 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 ''LjEsMjguOCwyMS45LDI4LjUsMjEuNywyOC40eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlVHJlZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuNiwxMS43QzI5LjIsNS44LDI0LDEuNywxOCwxLjdjLTcuMiwwLTEzLDUuOC0x''@;'; put 'put ''MywxM2MwLDYuOCw1LjMsMTIuNCwxMiwxMi45djVjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMXYtNXYtMlYyMlxuXHRjMCwwLDAsMCwwLTAuMXYtMy42bDQuNy00LjdjMC40LTAuNCwwLjQtMSwwLTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxOSwxNS42di0zbC0zLjMtMy4zYy0wLjQtMC40''@;'; put 'put ''LTEtMC40LTEuNCwwXG5cdGMtMC40LDAuNC0wLjQsMSwwLDEuNGwyLjcsMi43djYuMmwtMy44LTMuOGMtMC40LTAuNC0xLTAuNC0xLjQsMGMtMC40LDAuNC0wLjQsMSwwLDEuNGw1LjIsNS4ydjMuMmMtNS42LTAuNS0xMC01LjItMTAtMTAuOVxuXHRjMC02LjEsNC45LTExLDExLTExczExLDQu''@;'; put 'put ''OSwxMSwxMWMwLDQuOS0zLjMsOS4yLTgsMTAuNnYyLjFDMjgsMjUuNywzMi4zLDE4LjcsMzAuNiwxMS43eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTE4LDJDMTAuOCwxLjcsNC44LDcuMyw0LjUsMTQuNUM0LjIsMjEuNyw5LjgsMjcu''@;'; put 'put ''NywxNywyOHYtNS4ybC01LjItNS4yYy0wLjQtMC40LTAuNC0xLDAtMS40YzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwbDMuOCwzLjh2LTYuMmwtMi43LTIuN2MtMC40LTAuNC0wLjQtMSwwLTEuNGMwLjQtMC40LDEtMC40LDEuNCwwYzAsMCwwLDAsMCwwbDMuMywzLjN2M2wz''@;'; put 'put ''LjMtMy4zYzAuNC0wLjQsMS0wLjQsMS40LDBcblx0YzAsMCwwLDAsMCwwYzAuNCwwLjQsMC40LDEsMCwxLjRMMTksMTguOFYyOGM3LjItMC4zLDEyLjgtNi4zLDEyLjUtMTMuNVMyNS4yLDEuNywxOCwyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBk''@;'; put 'put ''PSJNMTgsMjhjLTAuMywwLTAuNiwwLTEsMHY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTF2LTVDMTguNywyOCwxOC4zLDI4LDE4LDI4eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlRmlzaD0oMCxtLmNsckljb25TVkcpKCc8Y2lyY2xl''@;'; put 'put ''IGN4PSIxMS40OSIgY3k9IjE3LjUiIHI9IjEuNSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLjQ4LDkuMjlhMSwxLDAsMCwwLTEsMGMtMy4zNywyLTUuOTEsNS44MS02LjksNy40NUwyNC44NSwxOHMtMSwxLjYyLTEsMS42MmMtMS43''@;'; put 'put ''NiwyLjQ5LTUuMSw2LjM2LTguNzksNi4zNi00LjY1LDAtOC43NS02LjE1LTkuODQtNy45NCwxLjA5LTEuNzksNS4xOC03Ljk0LDkuODQtNy45NCwzLjU0LDAsNi43NywzLjU4LDguNTgsNi4wN2wuMjgtLjQ4cy4zNi0uNTEuOTMtMS4yNUMyMi43MiwxMS42NCwxOS4xOCw4LjA2LDE1LDguMDZj''@;'; put 'put ''LTYuNTksMC0xMS42Nyw5LjA3LTExLjg4LDkuNDZMMi44OSwxOGwuMjcuNDhjLjIxLjM5LDUuMjksOS40NiwxMS44OCw5LjQ2LDUuMDYsMCw5LjIyLTUuMzQsMTEtOEMyNiwyMCwyNy4xOCwxOCwyNy4xOCwxOGgwbC4wNy0uMTFhMTguMDYsMTguMDYsMCwwLDEsMS44OC0yLjc1czAsMCwwLDBh''@;'; put 'put ''MjAuMzEsMjAuMzEsMCwwLDEsMi44Ni0zVjIzLjg4YTIwLjkzLDIwLjkzLDAsMCwxLTMuNjEtNGwtLjE2LjI2aDBsLTEsMS41OWExOC43NCwxOC43NCwwLDAsMCw1LjIxLDQuOTUsMSwxLDAsMCwwLC41LjE0LDEuMTMsMS4xMywwLDAsMCwuNS0uMTMsMSwxLDAsMCwwLC41LS44N1YxMC4xNkEx''@;'; put 'put ''LDEsMCwwLDAsMzMuNDgsOS4yOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVGb3JtPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMSwxMkg3YTEsMSwwLDAsMS0xLTFWN0ExLDEsMCwwLDEsNyw2SDIxYTEsMSwwLDAsMSwx''@;'; put 'put ''LDF2NEExLDEsMCwwLDEsMjEsMTJaTTgsMTBIMjBWNy45NEg4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTIxLDE0LjA4SDdhMSwxLDAsMCwwLTEsMVYxOWExLDEsMCwwLDAsMSwxSDE4LjM2TDIyLDE2LjNWMTUuMDhBMSwxLDAsMCww''@;'; put 'put ''LDIxLDE0LjA4Wk0yMCwxOEg4VjE2SDIwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTExLjA2LDMxLjUxdi0uMDZsLjMyLTEuMzlINFY0aDIwVjE0LjI1TDI2LDEyLjM2VjNhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDNWMzFh''@;'; put 'put ''MSwxLDAsMCwwLDEsMWg4QTMuNDQsMy40NCwwLDAsMSwxMS4wNiwzMS41MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxOS4xN2wtLjc4Ljc5QTEsMSwwLDAsMCwyMiwxOS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik02LDI2Ljk0YTEsMSwwLDAsMCwxLDFoNC44NGwuMy0xLjMuMTMtLjU1LDAtLjA1SDhWMjRoNi4zNGwyLTJIN2ExLDEsMCwwLDAtMSwxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMz''@;'; put 'put ''LjQ5LDE2LjY3LDMwLjEyLDEzLjNhMS42MSwxLjYxLDAsMCwwLTIuMjgsMGgwTDE0LjEzLDI3LjA5LDEzLDMxLjlhMS42MSwxLjYxLDAsMCwwLDEuMjYsMS45LDEuNTUsMS41NSwwLDAsMCwuMzEsMCwxLjE1LDEuMTUsMCwwLDAsLjM3LDBsNC44NS0xLjA3TDMzLjQ5LDE5YTEuNiwxLjYsMCww''@;'; put 'put ''LDAsMC0yLjI3Wk0xOC43NywzMC45MWwtMy42Ni44MUwxNiwyOC4wOSwyNi4yOCwxNy43bDIuODIsMi44MlpNMzAuMjMsMTkuMzlsLTIuODItMi44MkwyOSwxNWwyLjg0LDIuODRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxSLkNsclNoYXBlRnVl''@;'; put 'put ''bD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjAuMTIsMzRINS45QTIuODEsMi44MSwwLDAsMSwzLDMxLjE5VjQuODZBMi45LDIuOSwwLDAsMSw2LDIuMDdIMjAuMjJBMi43MiwyLjcyLDAsMCwxLDIzLDQuODZWMzEuMTlBMi44MiwyLjgyLDAsMCwxLDIwLjEyLDM0Wk01LjksNEEuODcu''@;'; put 'put ''ODcsMCwwLDAsNSw0Ljg2VjMxLjE5YS44Ny44NywwLDAsMCwuODcuODdIMjAuMTJhLjk0Ljk0LDAsMCwwLC45NS0uODdWNC44NkEuOTQuOTQsMCwwLDAsMjAuMTIsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yOS41MywzNEEzLjUs''@;'; put 'put ''My41LDAsMCwxLDI2LDMwLjVWMjNhMiwyLDAsMCwwLTItMkgyMi41N2ExLDEsMCwwLDEsMC0ySDI0YTQsNCwwLDAsMSw0LDRWMzAuNWExLjUsMS41LDAsMCwwLDMsMFYxNy4zbC0zLjEzLTdBMi4yOSwyLjI5LDAsMCwwLDI1LjgsOWgtLjczYTEsMSwwLDEsMSwwLTJoLjczYTQuMyw0LjMsMCww''@;'; put 'put ''LDEsMy45MywyLjU1bDMuMjEsNy4xNmExLDEsMCwwLDEsLjA5LjQxVjMwLjVBMy41LDMuNSwwLDAsMSwyOS41MywzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xOCw5SDhBMSwxLDAsMSwxLDgsN0gxOGExLDEsMCwwLDEsMCwyWiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDEzSDhBMSwxLDAsMSwxLDgsMTFIMThBMSwxLDAsMSwxLDE4LDEzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI1LDEyLjA4YTEs''@;'; put 'put ''MSwwLDAsMS0xLTF2LTZhMSwxLDAsMCwxLDIsMHY2QTEsMSwwLDAsMSwyNSwxMi4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPicpLFIuQ2xyU2hhcGVTbm93Zmxha2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA1LDMzLjYxYTEsMSww''@;'; 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 ''YXRoIGQ9Ik0yOS44OCwxNS4zN2EuODIuODIsMCwwLDEtLjI2LDBMMjQuOCwxNGwxLjI5LTQuODNBMSwxLDAsMSwxLDI4LDkuNzNsLS43OCwyLjg5LDIuOS43OGExLDEsMCwwLDEtLjI2LDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOSIgLz4nKSxSLkNsclNo''@;'; put 'put ''YXBlVGFibGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTgsMzRhMSwxLDAsMCwxLTEtMVYyLjkyYTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDgsMzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTcsMzMuOTJhMSwxLDAs''@;'; put 'put ''MCwxLTEtMVY5LjFhMSwxLDAsMSwxLDIsMFYzMi45MkExLDEsMCwwLDEsMTcsMzMuOTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjYsMzRhMSwxLDAsMCwxLTEtMVY5YTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDI2LDM0WiIg''@;'; put 'put ''Y2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMzLjExLDE4aC0yNWExLDEsMCwxLDEsMC0yaDI1YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzMuMSwyNi45''@;'; put 'put ''NEg4LjFBMSwxLDAsMSwxLDguMSwyNWgyNWExLDEsMCwxLDEsMCwxLjkyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMzLDguOTJIM0ExLDEsMCwxLDEsMyw3SDMzYTEsMSwwLDEsMSwwLDEuOTRaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxSLkNsclNoYXBlVm9sdW1lPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNS44OCwzMkgxMmE0LDQsMCwwLDEtNC00VjExLjQ2TDIuMzEsNS43N2ExLDEsMCwwLDEtLjIyLTEuMDlBMSwxLDAsMCwxLDMsNC4wNkgyOC44NmExLDEsMCww''@;'; put 'put ''LDEsMSwxVjI4QTQsNCwwLDAsMSwyNS44OCwzMlpNNS40Myw2bDQuMjgsNC4zNGEuNzUuNzUsMCwwLDEsLjIxLjYzdjE3QTIuMTMsMi4xMywwLDAsMCwxMiwzMEgyNS44OEEyLjEsMi4xLDAsMCwwLDI4LDI4VjZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMzMsMTZhMSwxLDAsMCwxLTEtMVY2SDI4Ljg2YS45Mi45MiwwLDAsMS0xLS45LDEsMSwwLDAsMSwxLTFIMzNhMSwxLDAsMCwxLDEsMVYxNUExLDEsMCwwLDEsMzMsMTZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJN''@;'; put 'put ''MjQsMTFIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTI0LDE1SDIxYTEsMSwwLDEsMSwwLTJIMjRhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0yNCwxOUgxOGExLDEsMCwxLDEsMC0ySDI0YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjQsMjdIMThhMSwxLDAsMSwxLDAtMkgyNGExLDEsMCwxLDEsMCwy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+PHBhdGggZD0iTTI0LDIzSDIxQTEsMSwwLDEsMSwyMSwyMUgyNEExLDEsMCwxLDEsMjQsMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNyIgLz4nKSxSLkNsclNoYXBlQ3Jv''@;'; put 'put ''c3NoYWlycz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjlBMTEsMTEsMCwxLDEsMjksMTgsMTEsMTEsMCwwLDEsMTgsMjlaTTE4LDlhOSw5LDAsMSwwLDksOUE5LDksMCwwLDAsMTgsOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xOCwyM2E1LDUsMCwxLDEsNS01QTUsNSwwLDAsMSwxOCwyM1ptMC04YTMsMywwLDEsMCwzLDNBMywzLDAsMCwwLDE4LDE1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDlhMSwxLDAsMCwxLTEtMVYyLjhhMSwxLDAsMCwx''@;'; put 'put ''LDIsMFY4QTEsMSwwLDAsMSwxOCw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTE4LDM0YTEsMSwwLDAsMS0xLTFWMjhhMSwxLDAsMCwxLDIsMHY1QTEsMSwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik04LDE5SDMuMTdhMSwxLDAsMCwxLDAtMkg4YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzMuMSwxOUgyOGExLDEsMCwwLDEsMC0yaDUuMWExLDEsMCwwLDEsMCwy''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksUi5DbHJTaGFwZUNpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQs''@;'; put 'put ''MTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+JyksUi5DbHJT''@;'; put 'put ''aGFwZURvdENpcmNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTFhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCww''@;'; put 'put ''LDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVCZXRhPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik03LjIxLDE0LjA3aDNhMS42MSwxLjYx''@;'; 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+XG4nKSxSLkNsclNoYXBlRmlyc3RBaWQ9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDIzLjkxVjQuNUEyLjUsMi41LDAsMCwwLDIxLjQxLDJoLTdhMi41LDIuNSwwLDAsMC0yLjUsMi41VjZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwy''@;'; put 'put ''LDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wk0xMy45MSw0LjVhLjUuNSwwLDAsMSwuNS0uNWg3YS41LjUsMCwwLDEsLjUuNVY2aC04Wk00LDI4VjhIMzJWMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjAuMTUsMjUuMkgx''@;'; put 'put ''Ni43NGExLjMsMS4zLDAsMCwxLTEuMy0xLjNWMjEuMmgtMi43YTEuMywxLjMsMCwwLDEtMS4zLTEuM1YxNi41YTEuMywxLjMsMCwwLDEsMS4zLTEuM2gyLjdWMTIuNWExLjMsMS4zLDAsMCwxLDEuMy0xLjNoMy40MWExLjMsMS4zLDAsMCwxLDEuMjksMS4zdjIuN2gyLjcxYTEuMywxLjMsMCww''@;'; put 'put ''LDEsMS4yOSwxLjN2My40YTEuMywxLjMsMCwwLDEtMS4yOSwxLjNIMjEuNDR2Mi43QTEuMywxLjMsMCwwLDEsMjAuMTUsMjUuMlpNMTcsMjMuNmgyLjgxdi00aDRWMTYuOGgtNHYtNEgxN3Y0SDEzdjIuOGg0Wm03LjExLTYuOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUt''@;'; put 'put ''cGF0aC0yIi8+XG5cbiAgPHBhdGggZD0iTTMyLDZIMjMuOTFWNC41QTIuNSwyLjUsMCwwLDAsMjEuNDEsMmgtN2EyLjUsMi41LDAsMCwwLTIuNSwyLjVWNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTEzLjkxLDQu''@;'; put 'put ''NWEuNS41LDAsMCwxLC41LS41aDdhLjUuNSwwLDAsMSwuNS41VjZoLThaTTI0LjY0LDE5LjlhLjUuNSwwLDAsMS0uNS41aC0zLjV2My41YS41LjUsMCwwLDEtLjUuNWgtMy40YS41LjUsMCwwLDEtLjUtLjVWMjAuNGgtMy41YS41LjUsMCwwLDEtLjUtLjVWMTYuNWEuNS41LDAsMCwxLC41LS41''@;'; put 'put ''aDMuNVYxMi41YS41LjUsMCwwLDEsLjUtLjVoMy40YS41LjUsMCwwLDEsLjUuNVYxNmgzLjVhLjUuNSwwLDAsMSwuNS41WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICAnKSxSLkNsclNoYXBlQ29sb3JQYWxldHRlPSgwLG0uY2xySWNvblNWRykoJzxwYXRo''@;'; 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 ''My4yLDAsMCwxLDEuNjktMS43NiwzLDMsMCwwLDEsNCwxLjJBMi41NCwyLjU0LDAsMCwxLDI1Ljc5LDIwWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPicpLFIuRXNzZW50aWFsU2hhcGVzPXsiYWRkLXRleHQiOlIuQ2xyU2hhcGVBZGRUZXh0LCJhbGFybS1vZmYi''@;'; put 'put ''OlIuQ2xyU2hhcGVBbGFybU9mZixwaW5ib2FyZDpSLkNsclNoYXBlUGluYm9hcmQsbmV3OlIuQ2xyU2hhcGVOZXcsImJ1YmJsZS1leGNsYW1hdGlvbiI6Ui5DbHJTaGFwZUJ1YmJsZUV4Y2xhbWF0aW9uLCJncmlkLXZpZXciOlIuQ2xyU2hhcGVHcmlkVmlldywiY3Vyc29yLWFycm93IjpSLkNs''@;'; put 'put ''clNoYXBlQ3Vyc29yQXJyb3csImN1cnNvci1oYW5kIjpSLkNsclNoYXBlQ3Vyc29ySGFuZCwiY3Vyc29yLWhhbmQtY2xpY2siOlIuQ2xyU2hhcGVDdXJzb3JIYW5kQ2xpY2ssImN1cnNvci1oYW5kLWdyYWIiOlIuQ2xyU2hhcGVDdXJzb3JIYW5kR3JhYiwiY3Vyc29yLWhhbmQtb3BlbiI6Ui5D''@;'; put 'put ''bHJTaGFwZUN1cnNvckhhbmRPcGVuLCJjdXJzb3ItbW92ZSI6Ui5DbHJTaGFwZUN1cnNvck1vdmUsImZpcnN0LWFpZCI6Ui5DbHJTaGFwZUZpcnN0QWlkLHJlc2l6ZTpSLkNsclNoYXBlUmVzaXplLG9iamVjdHM6Ui5DbHJTaGFwZU9iamVjdHMsYm9vazpSLkNsclNoYXBlQm9vayxhc3Rlcmlz''@;'; put 'put ''azpSLkNsclNoYXBlQXN0ZXJpc2ssYnVnOlIuQ2xyU2hhcGVCdWcsc2Npc3NvcnM6Ui5DbHJTaGFwZVNjaXNzb3JzLHRoZXJtb21ldGVyOlIuQ2xyU2hhcGVUaGVybW9tZXRlcixwZW5jaWw6Ui5DbHJTaGFwZVBlbmNpbCxub3RlOlIuQ2xyU2hhcGVOb3RlLHJlZnJlc2g6Ui5DbHJTaGFwZVJl''@;'; put 'put ''ZnJlc2gsc3luYzpSLkNsclNoYXBlU3luYywidmlldy1saXN0IjpSLkNsclNoYXBlVmlld0xpc3QsInZpZXctY2FyZHMiOlIuQ2xyU2hhcGVWaWV3Q2FyZHMsInRyZWUtdmlldyI6Ui5DbHJTaGFwZVRyZWVWaWV3LGxpZ2h0YnVsYjpSLkNsclNoYXBlTGlnaHRidWxiLGRvd25sb2FkOlIuQ2xy''@;'; put 'put ''U2hhcGVEb3dubG9hZCx1cGxvYWQ6Ui5DbHJTaGFwZVVwbG9hZCxsb2NrOlIuQ2xyU2hhcGVMb2NrLHVubG9jazpSLkNsclNoYXBlVW5sb2NrLHVzZXJzOlIuQ2xyU2hhcGVVc2VycywicG9wLW91dCI6Ui5DbHJTaGFwZVBvcE91dCxmaWx0ZXI6Ui5DbHJTaGFwZUZpbHRlcixwaW46Ui5DbHJT''@;'; put 'put ''aGFwZVBpbixmaWxlOlIuQ2xyU2hhcGVGaWxlLHBsdXM6Ui5DbHJTaGFwZVBsdXMsbWludXM6Ui5DbHJTaGFwZU1pbnVzLCJtaW51cy1jaXJjbGUiOlIuQ2xyU2hhcGVNaW51c0NpcmNsZSwicGx1cy1jaXJjbGUiOlIuQ2xyU2hhcGVQbHVzQ2lyY2xlLGJhbjpSLkNsclNoYXBlQmFuLCJ0aW1l''@;'; put 'put ''cy1jaXJjbGUiOlIuQ2xyU2hhcGVUaW1lc0NpcmNsZSx0cmFzaDpSLkNsclNoYXBlVHJhc2gsY2lyY2xlOlIuQ2xyU2hhcGVDaXJjbGUsdGFnOlIuQ2xyU2hhcGVUYWcsdGFnczpSLkNsclNoYXBlVGFncyxoaXN0b3J5OlIuQ2xyU2hhcGVIaXN0b3J5LGNsb2NrOlIuQ2xyU2hhcGVDbG9jaywi''@;'; put 'put ''YWxhcm0tY2xvY2siOlIuQ2xyU2hhcGVBbGFybUNsb2NrLGFycm93OnNlLkNsclNoYXBlQXJyb3csImNpcmNsZS1hcnJvdyI6Ui5DbHJTaGFwZUNpcmNsZUFycm93LCJjaGlsZC1hcnJvdyI6Ui5DbHJTaGFwZUNoaWxkQXJyb3csY29weTpSLkNsclNoYXBlQ29weSxoZWxwOlIuQ2xyU2hhcGVI''@;'; put 'put ''ZWxwLGxvZ2luOlIuQ2xyU2hhcGVMb2dpbixsb2dvdXQ6Ui5DbHJTaGFwZUxvZ291dCxwcmludGVyOlIuQ2xyU2hhcGVQcmludGVyLHdvcmxkOlIuQ2xyU2hhcGVXb3JsZCxzbGlkZXI6Ui5DbHJTaGFwZVNsaWRlcixjbGlwYm9hcmQ6Ui5DbHJTaGFwZUNsaXBib2FyZCxmaXJld2FsbDpSLkNs''@;'; put 'put ''clNoYXBlRmlyZXdhbGwsbGlzdDpSLkNsclNoYXBlTGlzdCxyZWRvOlIuQ2xyU2hhcGVSZWRvLHVuZG86Ui5DbHJTaGFwZVVuZG8sc2Nyb2xsOlIuQ2xyU2hhcGVTY3JvbGwsImZpbGUtc2V0dGluZ3MiOlIuQ2xyU2hhcGVGaWxlU2V0dGluZ3MsInR3by13YXktYXJyb3dzIjpSLkNsclNoYXBl''@;'; put 'put ''VHdvV2F5QXJyb3dzLHN3aXRjaDpSLkNsclNoYXBlU3dpdGNoLHRvb2xzOlIuQ2xyU2hhcGVUb29scywid2luZG93LWNsb3NlIjpSLkNsclNoYXBlV2luZG93Q2xvc2UsIndpbmRvdy1tYXgiOlIuQ2xyU2hhcGVXaW5kb3dNYXgsIndpbmRvdy1taW4iOlIuQ2xyU2hhcGVXaW5kb3dNaW4sIndp''@;'; put 'put ''bmRvdy1yZXN0b3JlIjpSLkNsclNoYXBlV2luZG93UmVzdG9yZSwiem9vbS1pbiI6Ui5DbHJTaGFwZVpvb21Jbiwiem9vbS1vdXQiOlIuQ2xyU2hhcGVab29tT3V0LGtleTpSLkNsclNoYXBlS2V5LGxpYnJhcnk6Ui5DbHJTaGFwZUxpYnJhcnksYm9sdDpSLkNsclNoYXBlQm9sdCx3cmVuY2g6''@;'; put 'put ''Ui5DbHJTaGFwZVdyZW5jaCxidWxsc2V5ZTpSLkNsclNoYXBlQnVsbHNleWUsdGFyZ2V0OlIuQ2xyU2hhcGVUYXJnZXQsZmxhbWU6Ui5DbHJTaGFwZUZsYW1lLGhvdXJnbGFzczpSLkNsclNoYXBlSG91cmdsYXNzLCJuby1hY2Nlc3MiOlIuQ2xyU2hhcGVOb0FjY2Vzcyxvcmdhbml6YXRpb246''@;'; put 'put ''Ui5DbHJTaGFwZU9yZ2FuaXphdGlvbixiYWxhbmNlOlIuQ2xyU2hhcGVCYWxhbmNlLCJpZC1iYWRnZSI6Ui5DbHJTaGFwZUlkQmFkZ2UscmVwZWF0OlIuQ2xyU2hhcGVSZXBlYXQsImZpbGUtZ3JvdXAiOlIuQ2xyU2hhcGVGaWxlR3JvdXAscGFwZXJjbGlwOlIuQ2xyU2hhcGVQYXBlcmNsaXAs''@;'; put 'put ''c2hyaW5rOlIuQ2xyU2hhcGVTaHJpbmssImFjY2Vzc2liaWxpdHktMSI6Ui5DbHJTaGFwZUFjY2Vzc2liaWxpdHkxLCJhY2Nlc3NpYmlsaXR5LTIiOlIuQ2xyU2hhcGVBY2Nlc3NpYmlsaXR5Miwic29ydC1ieSI6Ui5DbHJTaGFwZVNvcnRCeSwiY29sbGFwc2UtY2FyZCI6Ui5DbHJTaGFwZUNv''@;'; put 'put ''bGxhcHNlQ2FyZCwiZXhwYW5kLWNhcmQiOlIuQ2xyU2hhcGVFeHBhbmRDYXJkLGJyaWVmY2FzZTpSLkNsclNoYXBlQnJpZWZjYXNlLCJjb2xvci1waWNrZXIiOlIuQ2xyU2hhcGVDb2xvclBpY2tlciwiY29weS10by1jbGlwYm9hcmQiOlIuQ2xyU2hhcGVDb3B5VG9DbGlwYm9hcmQsImZpbHRl''@;'; put 'put ''ci0yIjpSLkNsclNoYXBlRmlsdGVyMiwiZHJhZy1oYW5kbGUiOlIuQ2xyU2hhcGVEcmFnSGFuZGxlLG1vb246Ui5DbHJTaGFwZU1vb24sc3VuOlIuQ2xyU2hhcGVTdW4sd2FuZDpSLkNsclNoYXBlV2FuZCxjbG9uZTpSLkNsclNoYXBlQ2xvbmUsZGV0YWlsczpSLkNsclNoYXBlRGV0YWlscywi''@;'; put 'put ''ZHJhZy1oYW5kbGUtY29ybmVyIjpSLkNsclNoYXBlRHJhZ0hhbmRsZUNvcm5lcixlcmFzZXI6Ui5DbHJTaGFwZUVyYXNlcixsYW5kc2NhcGU6Ui5DbHJTaGFwZUxhbmRzY2FwZSxwYXN0ZTpSLkNsclNoYXBlUGFzdGUscG9ydHJhaXQ6Ui5DbHJTaGFwZVBvcnRyYWl0LCJmaWxlLXppcCI6Ui5D''@;'; put 'put ''bHJTaGFwZUZpbGVaaXAsImZpbHRlci1vZmYiOlIuQ2xyU2hhcGVGaWx0ZXJPZmYscmVjeWNsZTpSLkNsclNoYXBlUmVjeWNsZSx0cmVlOlIuQ2xyU2hhcGVUcmVlLGZpc2g6Ui5DbHJTaGFwZUZpc2gsZm9ybTpSLkNsclNoYXBlRm9ybSxmdWVsOlIuQ2xyU2hhcGVGdWVsLHNub3dmbGFrZTpS''@;'; put 'put ''LkNsclNoYXBlU25vd2ZsYWtlLHRhYmxlOlIuQ2xyU2hhcGVUYWJsZSwiZG90LWNpcmNsZSI6Ui5DbHJTaGFwZURvdENpcmNsZSx2b2x1bWU6Ui5DbHJTaGFwZVZvbHVtZSxjcm9zc2hhaXJzOlIuQ2xyU2hhcGVDcm9zc2hhaXJzLGJldGE6Ui5DbHJTaGFwZUJldGEsImNvbG9yLXBhbGV0dGUi''@;'; put 'put ''OlIuQ2xyU2hhcGVDb2xvclBhbGV0dGV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkVzc2VudGlhbFNoYXBlcywiZWRpdCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5wZW5jaWwpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsIm5v''@;'; put 'put ''dGUtZWRpdCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5ub3RlKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuRXNzZW50aWFsU2hhcGVzLCJncm91cCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy51c2VycykpLE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShSLkVzc2VudGlhbFNoYXBlcywiZG9jdW1lbnQiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Fc3NlbnRpYWxTaGFwZXMuZmlsZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkVzc2VudGlhbFNoYXBlcywiYWRkIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuRXNzZW50''@;'; put 'put ''aWFsU2hhcGVzLnBsdXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsImNhbmNlbCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5iYW4pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsInJlbW92ZSIsKDAs''@;'; put 'put ''eC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlc1sidGltZXMtY2lyY2xlIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsInNpZ24taW4iLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Fc3NlbnRpYWxTaGFwZXMubG9naW4pKSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsInNpZ24tb3V0IiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuRXNzZW50aWFsU2hhcGVzLmxvZ291dCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkVzc2VudGlhbFNoYXBlcywibGlnaHRuaW5nIiwoMCx4LmRlc2NyaXB0b3JDb25maWcp''@;'; put 'put ''KFIuRXNzZW50aWFsU2hhcGVzLmJvbHQpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsImZsb3ctY2hhcnQiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Fc3NlbnRpYWxTaGFwZXMub3JnYW5pemF0aW9uKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuRXNzZW50''@;'; put 'put ''aWFsU2hhcGVzLCJhbGVydCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlc1siYnViYmxlLWV4Y2xhbWF0aW9uIl0pKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsInBpbm5lZCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlh''@;'; put 'put ''bFNoYXBlcy5waW5ib2FyZCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLkVzc2VudGlhbFNoYXBlcywiYXR0YWNobWVudCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5wYXBlcmNsaXApKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMs''@;'; put 'put ''ImF0dGFjaG1lbnQiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5Fc3NlbnRpYWxTaGFwZXMucGFwZXJjbGlwKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuRXNzZW50aWFsU2hhcGVzLCJyZXNpemUtZG93biIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5zaHJp''@;'; put 'put ''bmspKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5Fc3NlbnRpYWxTaGFwZXMsInJlc2l6ZS11cCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLkVzc2VudGlhbFNoYXBlcy5yZXNpemUpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYm''@;'; put 'put ''d2luZG93LkNsYXJpdHlJY29ucy5hZGQoUi5Fc3NlbnRpYWxTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL21lZGlhLXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAg''@;'; put 'put ''ICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9tZWRpYS1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlv''@;'; put 'put ''bihNZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuTWVkaWFTaGFwZXM9Ui5DbHJTaGFwZU1pY3JvcGhvbmVNdXRlPVIuQ2xyU2hhcGVNaWNyb3Bob25lPVIuQ2xyU2hhcGVWaWRlb0dhbGxlcnk9Ui5DbHJTaGFw''@;'; put 'put ''ZVJlcGxheU9uZT1SLkNsclNoYXBlUmVwbGF5QWxsPVIuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9Ui5DbHJTaGFwZU11c2ljTm90ZT1SLkNsclNoYXBlRmlsbVN0cmlwPVIuQ2xyU2hhcGVIZWFkcGhvbmVzPVIuQ2xyU2hhcGVWb2x1bWVNdXRlPVIuQ2xyU2hhcGVWb2x1bWVVcD1SLkNsclNoYXBl''@;'; put 'put ''Vm9sdW1lRG93bj1SLkNsclNoYXBlU2h1ZmZsZT1SLkNsclNoYXBlVmlkZW9DYW1lcmE9Ui5DbHJTaGFwZUNhbWVyYT1SLkNsclNoYXBlRmFzdEZvcndhcmQ9Ui5DbHJTaGFwZVJld2luZD1SLkNsclNoYXBlUG93ZXI9Ui5DbHJTaGFwZVN0b3A9Ui5DbHJTaGFwZVN0ZXBGb3J3YXJkPVIuQ2xy''@;'; put 'put ''U2hhcGVQYXVzZT1SLkNsclNoYXBlUGxheT12b2lkIDA7dmFyIHg9b2UoCi8qISAuLi91dGlscy9zdmctdGFnLWdlbmVyYXRvciAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IudHMiKTtSLkNsclNoYXBlUGxheT0oMCx4LmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTguMDcsMzEuNkEyLjA3LDIuMDcsMCwwLDEsNiwyOS41M1Y2LjMyQTIuMDcsMi4wNywwLDAsMSw5LDQuNDdMMzIuMjEsMTYuMDhhMi4wNywyLjA3LDAsMCwxLDAsMy43TDksMzEuMzhBMi4wNiwyLjA2LDAs''@;'; put 'put ''MCwxLDguMDcsMzEuNlptMC0yNS4zNEw4LDYuMzJWMjkuNTNsLjEuMDZMMzEuMzEsMThhLjA2LjA2LDAsMCwwLDAtLjA2WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4xNiwxNi4wOCw4Ljk0LDQuNDdBMi4w''@;'; put 'put ''NywyLjA3LDAsMCwwLDYsNi4zMlYyOS41M2EyLjA2LDIuMDYsMCwwLDAsMywxLjg1TDMyLjE2LDE5Ljc3YTIuMDcsMi4wNywwLDAsMCwwLTMuN1oiLz4nKSxSLkNsclNoYXBlUGF1c2U9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIGQ9Ik0xMi45MywzMkg2LjA3QTIuMDcsMi4wNywwLDAsMSw0LDI5LjkzVjYuMDdBMi4wNywyLjA3LDAsMCwxLDYuMDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwxNSw2LjA3VjI5LjkzQTIuMDcsMi4wNywwLDAsMSwxMi45MywzMlpNMTMsNkg2VjMwaDdaIi8+XG4gICAgICAgICAg''@;'; put 'put ''ICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yOS45MywzMkgyMy4wN0EyLjA3LDIuMDcsMCwwLDEsMjEsMjkuOTNWNi4wN0EyLjA3LDIuMDcsMCwwLDEsMjMuMDcsNGg2Ljg3QTIuMDcsMi4wNywwLDAsMSwzMiw2LjA3VjI5LjkzQTIu''@;'; put 'put ''MDcsMi4wNywwLDAsMSwyOS45MywzMlpNMzAsNkgyM1YzMGg3WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIHg9IjMuOTUiIHk9IjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+XG4g''@;'; put 'put ''ICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgeD0iMjAuOTUiIHk9IjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIyOCIgcng9IjIuMDciIHJ5PSIyLjA3Ii8+JyksUi5DbHJTaGFwZVN0ZXBGb3J3YXJkPSgwLHguY2xySWNvblNWRykoJzxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNNSwzMi4yM2EyLDIsMCwwLDEtMi0yVjUuNzdBMiwyLDAsMCwxLDYuMTcsNC4xNEwyMy4yMywxNi4zOGEyLDIsMCwwLDEsMCwzLjI1aDBMNi4xNywzMS44NkEyLDIsMCwwLDEsNSwzMi4yM1pNNSw1Ljc3''@;'; put 'put ''VjMwLjIzTDIyLjA3LDE4WiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMzEsMzJIMjhhMiwyLDAsMCwxLTItMlY2YTIsMiwwLDAsMSwyLTJoM2EyLDIsMCwwLDEsMiwyVjMwQTIsMiwwLDAsMSwzMSwzMlpN''@;'; put 'put ''MjgsNlYzMGgzVjZaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTUsMzEuOWEyLDIsMCwwLDEtMi0yVjUuNDRBMiwyLDAsMCwxLDYuMTIsMy44MUwyMy4xOCwxNmEyLDIsMCwwLDEsMCwzLjI1aDBMNi4xMiwzMS41''@;'; put 'put ''MkEyLDIsMCwwLDEsNSwzMS45WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIHg9IjI1Ljk1IiB5PSIzLjY3IiB3aWR0aD0iNyIgaGVpZ2h0PSIyOCIgcng9IjIiIHJ5PSIyIi8+JyksUi5DbHJTaGFwZVN0b3A9KDAseC5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMCwzMkg2YTIsMiwwLDAsMS0yLTJWNkEyLDIsMCwwLDEsNiw0SDMwYTIsMiwwLDAsMSwyLDJWMzBBMiwyLDAsMCwxLDMwLDMyWk02LDZWMzBIMzBWNloiLz5cbiAgICAgICAg''@;'; put 'put ''ICAgICAgICA8cmVjdCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiB4PSIzLjk2IiB5PSI0IiB3aWR0aD0iMjcuOTkiIGhlaWdodD0iMjgiIHJ4PSIyIiByeT0iMiIvPicpLFIuQ2xyU2hhcGVQb3dlcj0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; 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 ''LS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlUmV3aW5kPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTcuMDksMzEuNThsLTE1LjMyLTEyYTIsMiwwLDAs''@;'; put 'put ''MSwwLTMuMTVsMTUuMzItMTJhMS45MywxLjkzLDAsMCwxLDIuMDYtLjIyQTEuNzcsMS43NywwLDAsMSwyMCw2djYuN0wzMC44Myw0LjQyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzQsNlYzMGEyLDIsMCwwLDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4y''@;'; put 'put ''MkwyMCwyMy4zMVYzMGExLjc3LDEuNzcsMCwwLDEtLjg1LDEuNzksMS45NCwxLjk0LDAsMCwxLTIuMDYtLjIyWk0zMiwzMGwuMDYtMjRMMTgsMTYuOFY2TDMsMTgsMTgsMzBWMTkuMloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEi''@;'; put 'put ''IGQ9Ik0xNi45MiwzMS41OCwxLjYsMTkuNTdhMiwyLDAsMCwxLDAtMy4xNWwxNS4zMi0xMkExLjkzLDEuOTMsMCwwLDEsMTksNC4yLDEuODksMS44OSwwLDAsMSwyMCw2djYuN0wzMC42Niw0LjQyYTEuOTMsMS45MywwLDAsMSwyLjA2LS4yMkEyLDIsMCwwLDEsMzMuODMsNlYzMGEyLDIsMCww''@;'; put 'put ''LDEtMS4xMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMkwyMCwyMy4zMVYzMGExLjg5LDEuODksMCwwLDEtMSwxLjc5LDEuOTQsMS45NCwwLDAsMS0yLjA2LS4yMloiLz4nKSxSLkNsclNoYXBlRmFzdEZvcndhcmQ9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91''@;'; put 'put ''dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xNy43NywzMS45MmEyLDIsMCwwLDEtLjg2LS4yQTEuODEsMS44MSwwLDAsMSwxNiwyOS45M3YtNi43TDUuMjQsMzEuNWExLjk0LDEuOTQsMCwwLDEtMi4wNi4yMiwyLDIsMCwwLDEtMS4xMS0xLjc5di0yNEEyLDIsMCwwLDEsMy4xOCw0''@;'; put 'put ''LjEyYTEuOTMsMS45MywwLDAsMSwyLjA2LjIyTDE2LDEyLjYxVjUuOTFhMS44MSwxLjgxLDAsMCwxLC45MS0xLjc5QTEuOTMsMS45MywwLDAsMSwxOSw0LjM0bDE1LjMyLDEyYTIsMiwwLDAsMSwwLDMuMTVMMTksMzEuNUEyLDIsMCwwLDEsMTcuNzcsMzEuOTJabTAtMTIuOFYyOS45M2wxNS4y''@;'; put 'put ''Ni0xMi0xNS4zMi0xMiwuMDYsMTAuODFMNCw1LjkxdjI0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTE3LjcxLDMyYTIsMiwwLDAsMS0uODYtLjJBMS43NywxLjc3LDAsMCwxLDE2LDMwdi02LjdMNS4xNywzMS41OGEx''@;'; put 'put ''Ljk0LDEuOTQsMCwwLDEtMi4wNi4yMkEyLDIsMCwwLDEsMiwzMFY2QTIsMiwwLDAsMSwzLjExLDQuMmExLjkzLDEuOTMsMCwwLDEsMi4wNi4yMkwxNiwxMi42OVY2YTEuNzcsMS43NywwLDAsMSwuODUtMS43OSwxLjkzLDEuOTMsMCwwLDEsMi4wNi4yMmwxNS4zMiwxMmEyLDIsMCwwLDEsMCwz''@;'; put 'put ''LjE1bC0xNS4zMiwxMkEyLDIsMCwwLDEsMTcuNzEsMzJaIi8+JyksUi5DbHJTaGFwZUNhbWVyYT0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwyLDAsMCwwLDIxLjc4LDRIMTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCww''@;'; put 'put ''LDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFptMCwyMkg0VjEwaDguNjdsMS41NS00aDcuNTZsMS41NSw0SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9''@;'; put 'put ''Ik05LDE5YTksOSwwLDEsMCw5LTlBOSw5LDAsMCwwLDksMTlabTE2LjQsMEE3LjQsNy40LDAsMSwxLDE4LDExLjYsNy40MSw3LjQxLDAsMCwxLDI1LjQsMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTkuMzcs''@;'; put 'put ''MTIuODNhLjguOCwwLDAsMC0uOC0uOEg2LjE3YS44LjgsMCwwLDAsMCwxLjZoMi40QS44LjgsMCwwLDAsOS4zNywxMi44M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTIuMzQsMTlhNS41Nyw1LjU3LDAsMCww''@;'; put 'put ''LDMuMjQsNWwuODUtMS4zN2E0LDQsMCwxLDEsNC4xMS02LjYxbC44Ni0xLjM4QTUuNTYsNS41NiwwLDAsMCwxMi4zNCwxOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsOEgyNC43TDIzLjY0LDUuMjhBMiwy''@;'; put 'put ''LDAsMCwwLDIxLjc4LDRIMTQuMjJhMiwyLDAsMCwwLTEuODcsMS4yOEwxMS4zLDhINGEyLDIsMCwwLDAtMiwyVjMwYTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlYxMEEyLDIsMCwwLDAsMzIsOFpNNi4xNywxMy42M2EuOC44LDAsMCwxLDAtMS42aDIuNGEuOC44LDAsMCwxLDAsMS42''@;'; put 'put ''Wk0xOCwyOGE5LDksMCwxLDEsOS05QTksOSwwLDAsMSwxOCwyOFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4xMSwxOS4wNmE3LjA3LDcuMDcsMCwwLDAsNC4xMSw2LjQxbDEuMDktMS43NGE1LDUsMCwxLDEsNS4y''@;'; put 'put ''Mi04LjM5bDEuMDktMS43NmE3LjA2LDcuMDYsMCwwLDAtMTEuNTEsNS40OFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiLz4nKSxSLkNsclNoYXBlVmlkZW9DYW1lcmE9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0zNCwxMC4zNGEyLjExLDIuMTEsMCwwLDAtMS4xNi0xLjksMiwyLDAsMCwwLTIuMTMuMTVMMjYsMTEuNlY4YTIsMiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjRhMiwyLDAsMCwwLDItMlYyNC40bDQuNjQsM2EyLjA3LDIuMDcs''@;'; put 'put ''MCwwLDAsMi4yLjJBMi4xMSwyLjExLDAsMCwwLDM0LDI1LjY2Wk0zMS45MywyNS43N2MtLjA2LDAtLjExLDAtLjE5LS4wNkwyNCwyMC43N1YyOEg2YTIsMiwwLDAsMS0yLTJWMTBBMiwyLDAsMCwxLDYsOEgyNHY3LjIzbDcuOC01YS4xMS4xMSwwLDAsMSwuMTMsMCwuMTEuMTEsMCwwLDEsLjA3''@;'; put 'put ''LjExVjI1LjY2QS4xMS4xMSwwLDAsMSwzMS45MywyNS43N1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMi4zLDkuMzUsMjYsMTIuOVY4YTIsMiwwLDAsMC0yLTJINmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0''@;'; put 'put ''LDRIMjRhMiwyLDAsMCwwLDItMlYyMy4wOGw2LjMsMy41NUExLjEsMS4xLDAsMCwwLDM0LDI1Ljc3VjEwLjJBMS4xLDEuMSwwLDAsMCwzMi4zLDkuMzVaIi8+JyksUi5DbHJTaGFwZVNodWZmbGU9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTEiIGQ9Ik0yMS42MSwxMWg4LjYybC0zLjMsMy4zYTEsMSwwLDEsMCwxLjQxLDEuNDJMMzQsMTAuMDhsLS43MS0uNzFoMEwyOC4zNCw0LjQzYTEsMSwwLDAsMC0xLjQxLDEuNDJMMzAuMTEsOUgyMWExLDEsMCwwLDAtLjg2LjVMMTcuNSwxNC4wOWwxLjE2LDJaIi8+XG4gICAg''@;'; put 'put ''ICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTExLjA3LDI1LjA3SDNhMSwxLDAsMCwwLDAsMmg4LjY1YTEsMSwwLDAsMCwuODYtLjVMMTUuMTgsMjIsMTQsMjBaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgZD0iTTI4LjM0LDIwLjE3YTEsMSwwLDAsMC0xLjQxLDEuNDJsMy41LDMuNUgyMS42MUwxMi41MSw5LjUzYTEsMSwwLDAsMC0uODYtLjVIM2ExLDEsMCwxLDAsMCwyaDguMDdsOS4xLDE1LjU1YTEsMSwwLDAsMCwuODYuNUgyOS45bC0zLDNhMSwx''@;'; put 'put ''LDAsMCwwLDEuNDEsMS40Mmw0Ljk1LTQuOTRoMGwuNzEtLjcxWiIvPicpLFIuQ2xyU2hhcGVWb2x1bWVEb3duPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjMuNDEsMjUuMTFhMSwxLDAsMCwxLS41NC0xLjg1''@;'; put 'put ''LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43M0E4LjIxLDguMjEsMCwwLDEsMjMuOTQsMjUsMSwxLDAsMCwxLDIzLjQxLDI1LjExWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0xOCwz''@;'; put 'put ''MmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5LjIybDcuMzMtNy40MUEyLDIsMCwwLDEsMjAsNlYzMGEyLDIsMCwwLDEtMS4yNCwxLjg1QTIsMiwwLDAsMSwxOCwzMlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4yOEwxOCwz''@;'; put 'put ''MFY2bC03LjY1LDcuNjhhMSwxLDAsMCwxLS43MS4zWk0xOCw2WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTIzLjQxLDI1LjExYTEsMSwwLDAsMS0uNTQtMS44NSw2LjIxLDYuMjEsMCwwLDAtLjE5LTEwLjY1LDEsMSww''@;'; put 'put ''LDEsMSwxLTEuNzNBOC4yMSw4LjIxLDAsMCwxLDIzLjk0LDI1LDEsMSwwLDAsMSwyMy40MSwyNS4xMVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOC4zNCwzLjg3LDksMTJIM2ExLDEsMCwwLDAtMSwxVjIzYTEsMSww''@;'; put 'put ''LDAsMCwxLDFIOC44M2w5LjUxLDguM0ExLDEsMCwwLDAsMjAsMzEuNTVWNC42MkExLDEsMCwwLDAsMTguMzQsMy44N1oiLz4nKSxSLkNsclNoYXBlVm9sdW1lVXA9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''My40MSwyNS4yNWExLDEsMCwwLDEtLjU0LTEuODUsNi4yMSw2LjIxLDAsMCwwLS4xOS0xMC42NSwxLDEsMCwxLDEsMS0xLjczLDguMjEsOC4yMSwwLDAsMSwuMjQsMTQuMDZBMSwxLDAsMCwxLDIzLjQxLDI1LjI1WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUg''@;'; put 'put ''Y2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQsMjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIGQ9Ik0xOCwzMi4wNmEyLDIsMCwwLDEtMS40Mi0uNTlMOS4xNCwyNEg0YTIsMiwwLDAsMS0yLTJWMTRhMiwyLDAsMCwxLDItMkg5LjIybDcuMzMtNy4zOUEyLDIsMCwwLDEsMjAsNnYyNGEyLDIsMCwwLDEt''@;'; put 'put ''MS4yNCwxLjg1QTIsMiwwLDAsMSwxOCwzMi4wNlpNNCwxNHY4SDkuNTZhMSwxLDAsMCwxLC43MS4zTDE4LDMwLjA2VjZMMTAuMzUsMTMuN2ExLDEsMCwwLDEtLjcxLjNaTTE4LDZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBk''@;'; put 'put ''PSJNMjMuNDEsMjUuMjVhMSwxLDAsMCwxLS41NC0xLjg1LDYuMjEsNi4yMSwwLDAsMC0uMTktMTAuNjUsMSwxLDAsMSwxLDEtMS43Myw4LjIxLDguMjEsMCwwLDEsLjI0LDE0LjA2QTEsMSwwLDAsMSwyMy40MSwyNS4yNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xp''@;'; put 'put ''ZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0yNS42MiwzMS4xOGExLDEsMCwwLDEtLjQ1LTEuODlBMTIuNDQsMTIuNDQsMCwwLDAsMjUsNi44OWExLDEsMCwxLDEsLjg3LTEuOCwxNC40NCwxNC40NCwwLDAsMSwuMjQsMjZBMSwxLDAsMCwxLDI1LjYyLDMxLjE4WiIvPlxuICAgICAgICAgICAg''@;'; put 'put ''PHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgZD0iTTE4LjMzLDQsOS4wNywxMmgtNmExLDEsMCwwLDAtMSwxdjkuOTJhMSwxLDAsMCwwLDEsMUg4Ljg4bDkuNDYsOC4yNEExLDEsMCwwLDAsMjAsMzEuNDNWNC43MkExLDEsMCwwLDAsMTguMzMsNFoiLz4nKSxS''@;'; put 'put ''LkNsclNoYXBlVm9sdW1lTXV0ZT0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMuNjEsNi40MSw5LjE5LDEySDRhMiwyLDAsMCwwLTIsMnY4YTIsMiwwLDAsMCwyLDJIOS4xNGw3LjQxLDcuNDdBMiwyLDAsMCww''@;'; 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+JyksUi5DbHJTaGFwZUhlYWRwaG9uZXM9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwzQTE0LjI3LDE0LjI3LDAsMCwwLDQsMTcuNVYzMUg5LjJBMi43NCwyLjc0LDAsMCwwLDEyLDI4LjMz''@;'; put 'put ''VjIxLjY3QTIuNzQsMi43NCwwLDAsMCw5LjIsMTlINlYxNy41QTEyLjI3LDEyLjI3LDAsMCwxLDE4LDUsMTIuMjcsMTIuMjcsMCwwLDEsMzAsMTcuNVYxOUgyNi44QTIuNzQsMi43NCwwLDAsMCwyNCwyMS42N3Y2LjY3QTIuNzQsMi43NCwwLDAsMCwyNi44LDMxSDMyVjE3LjVBMTQuMjcsMTQu''@;'; put 'put ''MjcsMCwwLDAsMTgsM1pNOS4yLDIxYS43NS43NSwwLDAsMSwuOC42N3Y2LjY3YS43NS43NSwwLDAsMS0uOC42N0g2VjIxWk0yNiwyOC4zM1YyMS42N2EuNzUuNzUsMCwwLDEsLjgtLjY3SDMwdjhIMjYuOEEuNzUuNzUsMCwwLDEsMjYsMjguMzNaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFz''@;'; put 'put ''cz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMTgsM0ExNC4yNywxNC4yNywwLDAsMCw0LDE3LjVWMzFIOC4yQTEuNzQsMS43NCwwLDAsMCwxMCwyOS4zM1YyMi42N0ExLjc0LDEuNzQsMCwwLDAsOC4yLDIxSDZWMTcuNUExMi4yNywxMi4yNywwLDAsMSwxOCw1LDEyLjI3''@;'; put 'put ''LDEyLjI3LDAsMCwxLDMwLDE3LjVWMjFIMjcuOEExLjc0LDEuNzQsMCwwLDAsMjYsMjIuNjd2Ni42N0ExLjc0LDEuNzQsMCwwLDAsMjcuOCwzMUgzMlYxNy41QTE0LjI3LDE0LjI3LDAsMCwwLDE4LDNaIi8+JyksUi5DbHJTaGFwZUZpbG1TdHJpcD0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBj''@;'; 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 ''LFIuQ2xyU2hhcGVNdXNpY05vdGU9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiXG4gICAgICAgICAgICAgICAgZD0iTTMxLjY4LDYuMTZjLTEuOTItMy4zLTEwLjYtNC0xMS41OC00LjA5TDE5LDJWMjIuMzRhNS44OSw1''@;'; put 'put ''Ljg5LDAsMCwwLS44Mi0uNTYsOC4zMyw4LjMzLDAsMCwwLTYuNTMtLjQxQzcuNTcsMjIuNyw0LjkyLDI2LjUsNS43OCwyOS44NGE1LjMzLDUuMzMsMCwwLDAsMi42NiwzLjMyLDcuNDgsNy40OCwwLDAsMCwzLjYxLjg4QTkuNTQsOS41NCwwLDAsMCwxNSwzMy41N2MzLjY3LTEuMTgsNi4xNy00''@;'; put 'put ''LjMzLDYuMDYtNy4zNlY5LjM0YTI5LjE0LDI5LjE0LDAsMCwxLDYuNTUsMS40MywxLDEsMCwxLDAsLjcyLTEuODdBMzEuMzcsMzEuMzcsMCwwLDAsMjEsNy4zM1Y0LjE3YzMuMzMuMzYsOCwxLjM4LDguOTIsMywyLDMuNDEtMi4zMyw3LjM2LTIuMzcsNy40YTEsMSwwLDAsMCwxLjMzLDEuNDlD''@;'; put 'put ''MjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2Wk0xNC4zNSwzMS42N2E2LjQzLDYuNDMsMCwwLDEtNS0uMjYsMy4zMSwzLjMxLDAsMCwxLTEuNjktMi4wN2MtLjYtMi4zMywxLjQ1LTUuMDUsNC41OC02LjA2YTcuNTIsNy41MiwwLDAsMSwyLjMtLjM3LDUuNTIsNS41MiwwLDAsMSwyLjY1''@;'; put 'put ''LjYyLDMuMzEsMy4zMSwwLDAsMSwxLjY5LDIuMDdDMTkuNTQsMjcuOTQsMTcuNDksMzAuNjYsMTQuMzUsMzEuNjdaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIlxuICAgICAgICAgICAgICAgIGQ9Ik0zMS42OCw2LjE2Yy0xLjky''@;'; put 'put ''LTMuMy0xMC42LTQtMTEuNTgtNC4wOUwxOSwyVjIyLjI5YTUuODgsNS44OCwwLDAsMC0uODEtLjU1LDguMzMsOC4zMywwLDAsMC02LjUzLS40MWMtNC4xMiwxLjMzLTYuNzcsNS4xMy01LjkxLDguNDdhNS4zMyw1LjMzLDAsMCwwLDIuNjYsMy4zMiw3LjQ4LDcuNDgsMCwwLDAsMy42MS44OEE5''@;'; put 'put ''LjU0LDkuNTQsMCwwLDAsMTUsMzMuNTJjMy43LTEuMTksNi4yLTQuMzcsNi4wNi03LjQyLDAsMCwwLDAsMCwwVjguNDljMSwuMTIsMi4zNy4zMywzLjgyLjY0YTExLjE3LDExLjE3LDAsMCwxLDQuMDYsMS40NmMxLC42Ni4zOCwxLjkuMzMsMmExMS44LDExLjgsMCwwLDEtMS42NiwyLDEsMSww''@;'; put 'put ''LDAsMCwxLjMzLDEuNDlDMjkuMTUsMTUuODUsMzQuNSwxMSwzMS42OCw2LjE2WiIvPicpLFIuQ2xyU2hhcGVJbWFnZUdhbGxlcnk9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjEyLDEwSDMuODhBMS44OCwxLjg4LDAsMCwwLDIsMTEuODhWMzAuMTJBMS44OCwxLjg4LDAsMCwwLDMu''@;'; put 'put ''ODgsMzJIMzIuMTJBMS44OCwxLjg4LDAsMCwwLDM0LDMwLjEyVjExLjg4QTEuODgsMS44OCwwLDAsMCwzMi4xMiwxMFpNMzIsMzBINFYxMkgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik04LjU2LDE5LjQ1YTMsMywwLDEsMC0zLTNB''@;'; put 'put ''MywzLDAsMCwwLDguNTYsMTkuNDVabTAtNC42QTEuNiwxLjYsMCwxLDEsNywxNi40NSwxLjYsMS42LDAsMCwxLDguNTYsMTQuODVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNNy45LDI4bDYtNiwzLjE4LDMuMThMMTQuMjYsMjhoMmw3''@;'; put 'put ''LjQ2LTcuNDZMMzAsMjYuNzd2LTJMMjQuMiwxOWEuNzEuNzEsMCwwLDAtMSwwbC01LjE2LDUuMTZMMTQuMzcsMjAuNWEuNzEuNzEsMCwwLDAtMSwwTDUuOTIsMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSww''@;'; put 'put ''LDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMyLjEyLDdWN2ExLDEsMCwwLDAtMS0xaC0yNmExLDEsMCwwLDAtMSwxaDBWOGgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMC4xNCwzaDBhMSwxLDAsMCwwLTEtMWgtMjJhMSwxLDAsMCwwLTEsMWgwVjRoMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwx''@;'; put 'put ''LDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMi4xMiwxMEgzLjg4QTEuODgsMS44OCwwLDAsMCwyLDExLjg4VjMwLjEyQTEuODgsMS44OCwwLDAsMCwzLjg4LDMySDMyLjEyQTEuODgsMS44OCwwLDAsMCwzNCwz''@;'; put 'put ''MC4xMlYxMS44OEExLjg4LDEuODgsMCwwLDAsMzIuMTIsMTBaTTguNTYsMTMuNDVhMywzLDAsMSwxLTMsM0EzLDMsMCwwLDEsOC41NiwxMy40NVpNMzAsMjhoLTI0bDcuNDYtNy40N2EuNzEuNzEsMCwwLDEsMSwwbDMuNjgsMy42OEwyMy4yMSwxOWEuNzEuNzEsMCwwLDEsMSwwTDMwLDI0Ljc5''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlUmVwbGF5QWxsPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNy40NiwyNi4yMmExLjQsMS40LDAsMCwwLDEtLjQybDUuNTktNS41NmExLjQzLDEuNDMsMCwwLDAsLjQyLTEsMS40Niwx''@;'; put 'put ''LjQ2LDAsMCwwLS40Mi0xbC01LjU5LTUuNTZhMS40MywxLjQzLDAsMCwwLTIuNDQsMVYyNC43OWExLjQxLDEuNDEsMCwwLDAsLjg4LDEuMzJBMS41NCwxLjU0LDAsMCwwLDE3LjQ2LDI2LjIyWm0uMTYtMTIuMTYsNS4xOSw1LjE2LTUuMTksNS4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCwwLC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4zMywxLDEsMCwwLDAtLjA3LTEuNDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEu''@;'; put 'put ''NzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZVJlcGxheU9uZT0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTks''@;'; put 'put ''MjcuMjdhMSwxLDAsMCwwLDEtMVYxNGExLDEsMCwwLDAtMS0xSDE5YTMuOCwzLjgsMCwwLDAtMS4xLjIzbC0yLC42MmEuOTIuOTIsMCwwLDAtLjcyLjg2Ljg4Ljg4LDAsMCwwLC44OC44NiwxLjQ2LDEuNDYsMCwwLDAsLjQzLS4wOEwxOCwxNS4wN3YxMS4yQTEsMSwwLDAsMCwxOSwyNy4yN1oi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0xOC4wNiw1aC02LjdsMi45Mi0yLjY0QTEsMSwwLDAsMCwxMi45NC44OEw3LjMyLDYsMTIuOTQsMTFhMSwxLDAsMCwwLC42Ny4yNiwxLDEsMCwwLDAsLjc0LS4zMywxLDEsMCwwLDAtLjA3LTEu''@;'; put 'put ''NDJMMTEuNDYsN2g2LjZBMTEuNzgsMTEuNzgsMCwxLDEsNy43MSwyNC40MSwxLDEsMCwwLDAsNiwyNS4zNiwxMy43OCwxMy43OCwwLDEsMCwxOC4wNiw1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZVZpZGVvR2FsbGVyeT0oMCx4''@;'; put 'put ''LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIuMTIsMTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0zMiwzMEg0VjEy''@;'; put 'put ''SDMyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLjE0LDNoMGExLDEsMCwwLDAtMS0xaC0yMmExLDEsMCwwLDAtMSwxaDBWNGgyNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9''@;'; put 'put ''Ik0zMi4xMiw3VjdhMSwxLDAsMCwwLTEtMWgtMjZhMSwxLDAsMCwwLTEsMWgwVjhoMjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTIuODIsMjYuNzlhMS43NCwxLjc0LDAsMCwwLC45My4yOCwxLjY4LDEuNjgsMCwwLDAsLjY5LS4x''@;'; put 'put ''NWw5Ljc3LTQuMzZhMS42OSwxLjY5LDAsMCwwLDAtMy4xTDE0LjQ0LDE1LjFhMS43LDEuNywwLDAsMC0yLjM5LDEuNTV2OC43MkExLjcsMS43LDAsMCwwLDEyLjgyLDI2Ljc5Wm0uNjMtMTAuMTRhLjI5LjI5LDAsMCwxLC4xNC0uMjUuMy4zLDAsMCwxLC4xNiwwLC4yNy4yNywwLDAsMSwuMTIs''@;'; put 'put ''MGw5Ljc3LDQuMzVhLjI5LjI5LDAsMCwxLC4xOC4yOC4yOC4yOCwwLDAsMS0uMTguMjdsLTkuNzcsNC4zNmEuMjguMjgsMCwwLDEtLjI4LDAsLjMxLjMxLDAsMCwxLS4xNC0uMjVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzIuMTIs''@;'; put 'put ''MTBIMy44OEExLjg4LDEuODgsMCwwLDAsMiwxMS44OFYzMC4xMkExLjg4LDEuODgsMCwwLDAsMy44OCwzMkgzMi4xMkExLjg4LDEuODgsMCwwLDAsMzQsMzAuMTJWMTEuODhBMS44OCwxLjg4LDAsMCwwLDMyLjEyLDEwWk0yNC4xOCwyMS44M2wtOS43Nyw0LjM2QTEsMSwwLDAsMSwxMywyNS4y''@;'; put 'put ''OFYxNi41NmExLDEsMCwwLDEsMS40MS0uOTFMMjQuMTgsMjBBMSwxLDAsMCwxLDI0LjE4LDIxLjgzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAuMTQsM2gwYTEsMSwwLDAsMC0xLTFoLTIyYTEsMSwwLDAsMC0xLDFoMFY0aDI0WiIgY2xh''@;'; put 'put ''c3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMzIuMTIsN1Y3YTEsMSwwLDAsMC0xLTFoLTI2YTEsMSwwLDAsMC0xLDFoMFY4aDI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlTWljcm9waG9uZT0o''@;'; put 'put ''MCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMjRjMy45LDAsNy0zLjEsNy03VjljMC0zLjktMy4xLTctNy03cy03LDMuMS03LDd2OEMxMSwyMC45LDE0LjEsMjQsMTgsMjR6IE0xMyw5YzAtMi44LDIuMi01LDUtNXM1LDIuMiw1LDV2OFxuXHRcdGMwLDIuOC0yLjIsNS01LDVzLTUtMi4y''@;'; put 'put ''LTUtNVY5eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMwLDE3aC0yYzAsNS41LTQuNSwxMC0xMCwxMFM4LDIyLjUsOCwxN0g2YzAsNi4zLDQuOCwxMS40LDExLDExLjlWMzJoLTNjLTAuNiwwLTEsMC40LTEsMXMwLjQsMSwxLDFoOGMw''@;'; put 'put ''LjYsMCwxLTAuNCwxLTFcblx0XHRzLTAuNC0xLTEtMWgtM3YtMy4xQzI1LjIsMjguNCwzMCwyMy4zLDMwLDE3eiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTE4LDI0YzMuOSwwLDctMy4xLDctN1Y5YzAtMy45LTMuMS03LTctN3MtNywz''@;'; put 'put ''LjEtNyw3djhDMTEsMjAuOSwxNC4xLDI0LDE4LDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzAsMTdoLTJjMCw1LjUtNC41LDEwLTEwLDEwUzgsMjIuNSw4LDE3SDZjMCw2LjMsNC44LDExLjQsMTEsMTEuOVYzMmgtM2MtMC42LDAtMSww''@;'; put 'put ''LjQtMSwxczAuNCwxLDEsMWg4YzAuNiwwLDEtMC40LDEtMVxuXHRcdHMtMC40LTEtMS0xaC0zdi0zLjFDMjUuMiwyOC40LDMwLDIzLjMsMzAsMTd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVNaWNyb3Bob25lTXV0ZT0oMCx4LmNscklj''@;'; 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+JyksUi5NZWRpYVNoYXBlcz17cGxheTpSLkNsclNoYXBlUGxheSxwYXVzZTpSLkNsclNoYXBlUGF1c2UsInN0ZXAtZm9yd2FyZCI6Ui5DbHJTaGFwZVN0ZXBGb3J3YXJkLHN0b3A6Ui5DbHJTaGFwZVN0b3AscG93ZXI6''@;'; put 'put ''Ui5DbHJTaGFwZVBvd2VyLHJld2luZDpSLkNsclNoYXBlUmV3aW5kLCJmYXN0LWZvcndhcmQiOlIuQ2xyU2hhcGVGYXN0Rm9yd2FyZCxjYW1lcmE6Ui5DbHJTaGFwZUNhbWVyYSwidmlkZW8tY2FtZXJhIjpSLkNsclNoYXBlVmlkZW9DYW1lcmEsc2h1ZmZsZTpSLkNsclNoYXBlU2h1ZmZsZSwi''@;'; put 'put ''dm9sdW1lLXVwIjpSLkNsclNoYXBlVm9sdW1lVXAsInZvbHVtZS1kb3duIjpSLkNsclNoYXBlVm9sdW1lRG93biwidm9sdW1lLW11dGUiOlIuQ2xyU2hhcGVWb2x1bWVNdXRlLGhlYWRwaG9uZXM6Ui5DbHJTaGFwZUhlYWRwaG9uZXMsImZpbG0tc3RyaXAiOlIuQ2xyU2hhcGVGaWxtU3RyaXAs''@;'; put 'put ''Im11c2ljLW5vdGUiOlIuQ2xyU2hhcGVNdXNpY05vdGUsImltYWdlLWdhbGxlcnkiOlIuQ2xyU2hhcGVJbWFnZUdhbGxlcnksInJlcGxheS1hbGwiOlIuQ2xyU2hhcGVSZXBsYXlBbGwsInJlcGxheS1vbmUiOlIuQ2xyU2hhcGVSZXBsYXlPbmUsInZpZGVvLWdhbGxlcnkiOlIuQ2xyU2hhcGVW''@;'; put 'put ''aWRlb0dhbGxlcnksbWljcm9waG9uZTpSLkNsclNoYXBlTWljcm9waG9uZSwibWljcm9waG9uZS1tdXRlIjpSLkNsclNoYXBlTWljcm9waG9uZU11dGV9LHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25z''@;'; put 'put ''LmFkZChSLk1lZGlhU2hhcGVzKX0sIi4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNv''@;'; put 'put ''bnMvc3JjL3NoYXBlcy9zb2NpYWwtc2hhcGVzLnRzICoqKiEKICAgICAgICAgICAgICAgICAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksUi5Tb2NpYWxTaGFwZXM9Ui5DbHJTaGFwZUhhc2h0YWc9Ui5DbHJTaGFwZUNyb3duPVIuQ2xyU2hhcGVUaHVtYnNEb3duPVIuQ2xyU2hhcGVUaHVtYnNVcD1SLkNsclNoYXBlU2FkRmFjZT1SLkNs''@;'; put 'put ''clNoYXBlTmV1dHJhbEZhY2U9Ui5DbHJTaGFwZUhhcHB5RmFjZT1SLkNsclNoYXBlUGljdHVyZT1SLkNsclNoYXBlQ2hhdEJ1YmJsZT1SLkNsclNoYXBlVGFsa0J1YmJsZXM9Ui5DbHJTaGFwZUhlYXJ0QnJva2VuPVIuQ2xyU2hhcGVIZWFydD1SLkNsclNoYXBlSW5ib3g9Ui5DbHJTaGFwZUZs''@;'; put 'put ''YWc9Ui5DbHJTaGFwZVRhc2tzPVIuQ2xyU2hhcGVFbnZlbG9wZT1SLkNsclNoYXBlQm9va21hcms9Ui5DbHJTaGFwZUhhbGZTdGFyPVIuQ2xyU2hhcGVTdGFyPVIuQ2xyU2hhcGVTaGFyZT12b2lkIDA7dmFyIHg9b2UoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9q''@;'; put 'put ''ZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxtPW9lKAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIiksc2U9b2UoCi8qISAuL2NvcmUtc2hhcGVzICovCiIu''@;'; put 'put ''L3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvY29yZS1zaGFwZXMudHMiKTtSLkNsclNoYXBlU2hhcmU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0yNy41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQs''@;'; put 'put ''MTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1LDAsMSwwLDUtNVptMC0yMGEzLDMsMCwxLDEtMywzQTMs''@;'; put 'put ''MywwLDAsMSwyNy41Myw0Wk03LDIxYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDcsMjFaTTI3LjUzLDMyYTMsMywwLDEsMSwzLTNBMywzLDAsMCwxLDI3LjUzLDMyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0y''@;'; put 'put ''Ny41MywyNGE1LDUsMCwwLDAtMy42LDEuNTVMMTEuNzQsMTkuNDVhNC40Nyw0LjQ3LDAsMCwwLDAtMi44bDEyLjIxLTYuMjFhNS4xMiw1LjEyLDAsMSwwLTEuMDctMS43TDEwLjc5LDE0Ljg5YTUsNSwwLDEsMCwwLDYuMzNsMTIuMDYsNi4wN0E0LjkzLDQuOTMsMCwwLDAsMjIuNTQsMjlhNSw1''@;'; put 'put ''LDAsMSwwLDUtNVoiLz4nKSxSLkNsclNoYXBlU3Rhcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI3LjE5LDM0YTIuMjIsMi4yMiwwLDAsMS0xLjI0LS4zOGwtNy40Ni01YS4yMi4yMiwwLDAsMC0uMjUsMGwt''@;'; put 'put ''Ny40Niw1QTIuMjIsMi4yMiwwLDAsMSw3LjQsMzEuMjFsMi40NS04LjY0YS4yMy4yMywwLDAsMC0uMDgtLjI0TDIuNzEsMTYuNzhhMi4yMiwyLjIyLDAsMCwxLDEuMjktNGw5LS4zNGEuMjMuMjMsMCwwLDAsLjItLjE1bDMuMS04LjQzYTIuMjIsMi4yMiwwLDAsMSw0LjE3LDBsMy4xLDguNDNh''@;'; put 'put ''LjIzLjIzLDAsMCwwLC4yLjE1bDksLjM0YTIuMjIsMi4yMiwwLDAsMSwxLjI5LDRMMjcsMjIuMzNhLjIyLjIyLDAsMCwwLS4wOC4yNGwyLjQ1LDguNjRBMi4yMywyLjIzLDAsMCwxLDI3LjE5LDM0Wm0tOC44Mi03LjQyQTIuMjEsMi4yMSwwLDAsMSwxOS42LDI3bDcuNDYsNWEuMjIuMjIsMCww''@;'; put 'put ''LDAsLjM0LS4yNWwtMi40NS04LjY0YTIuMjEsMi4yMSwwLDAsMSwuNzctMi4zNWw3LjA2LTUuNTVhLjIyLjIyLDAsMCwwLS4xMy0uNGwtOS0uMzRhMi4yMiwyLjIyLDAsMCwxLTItMS40NmwtMy4xLTguNDNhLjIyLjIyLDAsMCwwLS40MiwwTDE1LjA2LDEzYTIuMjIsMi4yMiwwLDAsMS0yLDEu''@;'; put 'put ''NDZsLTksLjM0YS4yMi4yMiwwLDAsMC0uMTMuNEwxMSwyMC43NmEyLjIyLDIuMjIsMCwwLDEsLjc3LDIuMzVMOS4zMywzMS43NWEuMjEuMjEsMCwwLDAsLjA4LjI0LjIuMiwwLDAsMCwuMjYsMGw3LjQ2LTVBMi4yMiwyLjIyLDAsMCwxLDE4LjM2LDI2LjYyWiIvPlxuICAgICAgICAgICAgICAg''@;'; put 'put ''IDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zNCwxNi43OGEyLjIyLDIuMjIsMCwwLDAtMS4yOS00bC05LS4zNGEuMjMuMjMsMCwwLDEtLjItLjE1TDIwLjQsMy44OWEyLjIyLDIuMjIsMCwwLDAtNC4xNywwbC0zLjEsOC40M2EuMjMuMjMsMCwwLDEt''@;'; put 'put ''LjIuMTVsLTksLjM0YTIuMjIsMi4yMiwwLDAsMC0xLjI5LDRsNy4wNiw1LjU1YS4yMy4yMywwLDAsMSwuMDguMjRMNy4zNSwzMS4yMWEyLjIyLDIuMjIsMCwwLDAsMy4zOCwyLjQ1bDcuNDYtNWEuMjIuMjIsMCwwLDEsLjI1LDBsNy40Niw1YTIuMiwyLjIsMCwwLDAsMi41NSwwLDIuMiwyLjIs''@;'; put 'put ''MCwwLDAsLjgzLTIuNGwtMi40NS04LjY0YS4yMi4yMiwwLDAsMSwuMDgtLjI0WiIvPicpLFIuQ2xyU2hhcGVIYWxmU3Rhcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTM0LDE2Ljc4YTIuMjIsMi4yMiwwLDAs''@;'; put 'put ''MC0xLjI5LTRsLTktLjM0YS4yMy4yMywwLDAsMS0uMi0uMTVMMjAuNCwzLjg5YTIuMjIsMi4yMiwwLDAsMC00LjE3LDBsLTMuMSw4LjQzYS4yMy4yMywwLDAsMS0uMi4xNWwtOSwuMzRhMi4yMiwyLjIyLDAsMCwwLTEuMjksNGw3LjA2LDUuNTVhLjIyLjIyLDAsMCwxLC4wOC4yNEw3LjM1LDMx''@;'; put 'put ''LjIxQTIuMjMsMi4yMywwLDAsMCw5LjQ5LDM0YTIuMjIsMi4yMiwwLDAsMCwxLjI0LS4zOGw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIyLDIuMjIsMCwwLDAsMy4zOC0yLjQ1bC0yLjQ1LTguNjRhLjIzLjIzLDAsMCwxLC4wOC0uMjRaTTE4LjMzLDI2LjYyaDBhMi4yMSwy''@;'; put 'put ''LjIxLDAsMCwwLTEuMjQuMzhMOS42MiwzMmEuMjIuMjIsMCwwLDEtLjM0LS4yNWwyLjQ1LTguNjRBMi4yMSwyLjIxLDAsMCwwLDExLDIwLjc2TDMuOSwxNS4yMWEuMjIuMjIsMCwwLDEsLjEzLS40bDktLjM0QTIuMjIsMi4yMiwwLDAsMCwxNSwxM2wzLjEtOC40M2EuMi4yLDAsMCwxLC4yMS0u''@;'; put 'put ''MTVoMFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQsMTYuNzhhMi4yMiwyLjIyLDAsMCwwLTEuMjktNGwtOS0uMzRhLjIzLjIzLDAsMCwxLS4yLS4xNUwyMC40LDMuODlhMi4yMiwyLjIyLDAsMCwwLTQuMTcs''@;'; put 'put ''MGwtMy4xLDguNDNhLjIzLjIzLDAsMCwxLS4yLjE1bC05LC4zNGEyLjIyLDIuMjIsMCwwLDAtMS4yOSw0bDcuMDYsNS41NWEuMjMuMjMsMCwwLDEsLjA4LjI0TDcuMzUsMzEuMjFhMi4yMiwyLjIyLDAsMCwwLDMuMzgsMi40NWw3LjQ2LTVhLjIyLjIyLDAsMCwxLC4yNSwwbDcuNDYsNWEyLjIs''@;'; put 'put ''Mi4yLDAsMCwwLDIuNTUsMCwyLjIsMi4yLDAsMCwwLC44My0yLjRsLTIuNDUtOC42NGEuMjIuMjIsMCwwLDEsLjA4LS4yNFpNMjQuOSwyMy4xMWwyLjQ1LDguNjRBLjIyLjIyLDAsMCwxLDI3LDMybC03LjQ2LTVhMi4yMSwyLjIxLDAsMCwwLTEuMjQtLjM4aDBWNC40NGgwYS4yLjIsMCwwLDEs''@;'; put 'put ''LjIxLjE1TDIxLjYyLDEzYTIuMjIsMi4yMiwwLDAsMCwyLDEuNDZsOSwuMzRhLjIyLjIyLDAsMCwxLC4xMy40bC03LjA2LDUuNTVBMi4yMSwyLjIxLDAsMCwwLDI0LjksMjMuMTFaIi8+JyksUi5DbHJTaGFwZUJvb2ttYXJrPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjYsMzRhMiwyLDAsMCwxLTEuNDEtLjU4TDE4LDI2LjgybC02LjU0LDYuNTJBMiwyLDAsMCwxLDgsMzEuOTNWNGEyLDIsMCwwLDEsMi0ySDI2YTIsMiwwLDAsMSwyLDJWMzJhMiwyLDAsMCwxLTIsMlptMC0yaDBWNEgxMFYzMS45M0wx''@;'; put 'put ''OCwyNFoiLz5cbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMjYsMkgxMEEyLDIsMCwwLDAsOCw0VjMxLjkzYTIsMiwwLDAsMCwzLjQyLDEuNDFsNi41NC02LjUyLDYuNjMsNi42QTIsMiwwLDAsMCwyOCwzMlY0QTIsMiww''@;'; put 'put ''LDAsMCwyNiwyWiIvPicpLFIuQ2xyU2hhcGVFbnZlbG9wZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIs''@;'; 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+JyksUi5DbHJT''@;'; put 'put ''aGFwZVRhc2tzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjkuMjksMzRINi43MUExLjcsMS43LDAsMCwxLDUsMzIuMzFWNi42OUExLjc1LDEuNzUsMCwwLDEsNyw1SDlWN0g3VjMySDI5VjdIMjdWNWgyLjI1''@;'; 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 ''LWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlRmxhZz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTYsMzRhMSwxLDAsMCwxLTEt''@;'; put 'put ''MVYzQTEsMSwwLDAsMSw3LDNWMzNBMSwxLDAsMCwxLDYsMzRaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0zMC41NSwzLjgyYTEsMSwwLDAsMC0xLDAsMTQuOSwxNC45LDAsMCwxLTYuMTMsMS4xNiwxMy4x''@;'; put 'put ''MSwxMy4xMSwwLDAsMS01LjE4LTEuNDksMTIuNzgsMTIuNzgsMCwwLDAtNS0xLjQ1QTEwLjg2LDEwLjg2LDAsMCwwLDksMi44NVY1LjA4QTguOCw4LjgsMCwwLDEsMTMuMjUsNGExMS4yMiwxMS4yMiwwLDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjZBMTguNzUsMTguNzUs''@;'; put 'put ''MCwwLDAsMjksNi4xMlYxOC45NWExNi4xNiwxNi4xNiwwLDAsMS01LjU4LjkzLDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OSwxMi43OCwxMi43OCwwLDAsMC01LTEuNDVBMTAuODYsMTAuODYsMCwwLDAsOSwxNy43OVYyMGE4LjgsOC44LDAsMCwxLDQuMjUtMS4wOCwxMS4yMiwxMS4yMiww''@;'; put 'put ''LDAsMSw0LjIsMS4yOCwxNC44NCwxNC44NCwwLDAsMCw2LDEuNjYsMTYuNzksMTYuNzksMCwwLDAsNy0xLjM3LDEsMSwwLDAsMCwuNTUtLjg5VjQuNjdBMSwxLDAsMCwwLDMwLjU1LDMuODJaIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlk''@;'; put 'put ''LXBhdGgtMSIgZD0iTTUuOTIsMmExLDEsMCwwLDAtMSwxVjMzYTEsMSwwLDAsMCwyLDBWM0ExLDEsMCwwLDAsNS45MiwyWiIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0zMC41LDMuODJhMSwxLDAsMCwwLTEsMCwx''@;'; put 'put ''NC45LDE0LjksMCwwLDEtNi4xMywxLjE2LDEzLjExLDEzLjExLDAsMCwxLTUuMTgtMS40OUExMi43OCwxMi43OCwwLDAsMCwxMy4yLDIsMTAuODYsMTAuODYsMCwwLDAsOSwyLjg1VjIwYTguOCw4LjgsMCwwLDEsNC4yNS0xLjA4LDExLjIyLDExLjIyLDAsMCwxLDQuMiwxLjI4LDE0Ljg0LDE0''@;'; put 'put ''Ljg0LDAsMCwwLDYsMS42NiwxNi43OSwxNi43OSwwLDAsMCw3LTEuMzcsMSwxLDAsMCwwLC41NS0uODlWNC42N0ExLDEsMCwwLDAsMzAuNSwzLjgyWiIvPicpLFIuQ2xyU2hhcGVJbmJveD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMjMsMTMuMDlhMSwxLDAsMCwwLDAsMS40MUwx''@;'; put 'put ''OCwyMC4zbDUuNzktNS43OWExLDEsMCwwLDAtMS40MS0xLjQxTDE5LDE2LjQ3VjJBMSwxLDAsMCwwLDE4LDFhMSwxLDAsMCwwLTEsMXYxNC41bC0zLjM4LTMuMzhBMSwxLDAsMCwwLDEyLjIzLDEzLjA5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41LDVIMjJWN2g3VjIxSDIzLjYxbC0uMS44OWE1LjQyLDUuNDIsMCwwLDEtMTAuNzcsMGwtLjEtLjg5SDdWN2g3VjVINi41QTEuNSwxLjUsMCwwLDAsNSw2LjV2MjVBMS41LDEuNSwwLDAsMCw2LjUsMzNoMjNBMS41LDEuNSwwLDAsMCwzMSwzMS41VjYu''@;'; put 'put ''NUExLjUsMS41LDAsMCwwLDI5LjUsNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4yMywxMy4wOWExLDEsMCwwLDAsMCwxLjQx''@;'; put 'put ''TDE4LDIwLjNsNS43OS01Ljc5YTEsMSwwLDAsMC0xLjQxLTEuNDFMMTksMTYuNDdWMkExLDEsMCwwLDAsMTgsMWExLDEsMCwwLDAtMSwxdjE0LjVsLTMuMzgtMy4zOEExLDEsMCwwLDAsMTIuMjMsMTMuMDlaIiBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMCwxMy41YTcuNTIsNy41MiwwLDAsMS0xLS4wN1YyMUgyMy42MWwtLjEuODlhNS40Miw1LjQyLDAsMCwxLTEwLjc3LDBsLS4xLS44OUg3VjdoN1Y1SDYuNUExLjUsMS41LDAsMCwwLDUsNi41djI1QTEuNSwxLjUsMCwwLDAs''@;'; put 'put ''Ni41LDMzaDIzQTEuNSwxLjUsMCwwLDAsMzEsMzEuNVYxMy40M0E3LjUyLDcuNTIsMCwwLDEsMzAsMTMuNVpNMjksMzFIN1YyM2gzLjkxYTcuNDIsNy40MiwwLDAsMCwxNC40NCwwSDI5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUtLWJhZGdlZCBjbHItaS1vdXRsaW5lLXBhdGgtMi0tYmFkZ2Vk''@;'; put 'put ''Ii8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiIGNsYXNzPSJjbHItaS1vdXRsaW5lLS1iYWRnZWQgY2xyLWktb3V0bGluZS1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFIuQ2xyU2hhcGVIZWFydD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJN''@;'; put 'put ''MTgsMzIuNDNhMSwxLDAsMCwxLS42MS0uMjFDMTEuODMsMjcuOSw4LDI0LjE4LDUuMzIsMjAuNTEsMS45LDE1LjgyLDEuMTIsMTEuNDksMyw3LjY0YzEuMzQtMi43NSw1LjE5LTUsOS42OS0zLjY5QTkuODcsOS44NywwLDAsMSwxOCw3LjcyYTkuODcsOS44NywwLDAsMSw1LjMxLTMuNzdjNC40''@;'; put 'put ''OS0xLjI5LDguMzUuOTQsOS42OSwzLjY5LDEuODgsMy44NSwxLjEsOC4xOC0yLjMyLDEyLjg3QzI4LDI0LjE4LDI0LjE3LDI3LjksMTguNjEsMzIuMjJBMSwxLDAsMCwxLDE4LDMyLjQzWk0xMC4xMyw1LjU4QTUuOSw1LjksMCwwLDAsNC44LDguNTFjLTEuNTUsMy4xOC0uODUsNi43MiwyLjE0''@;'; put 'put ''LDEwLjgxQTU3LjEzLDU3LjEzLDAsMCwwLDE4LDMwLjE2LDU3LjEzLDU3LjEzLDAsMCwwLDI5LjA2LDE5LjMzYzMtNC4xLDMuNjktNy42NCwyLjE0LTEwLjgxLTEtMi00LTMuNTktNy4zNC0yLjY1YTgsOCwwLDAsMC00Ljk0LDQuMiwxLDEsMCwwLDEtMS44NSwwLDcuOTMsNy45MywwLDAsMC00''@;'; put 'put ''Ljk0LTQuMkE3LjMxLDcuMzEsMCwwLDAsMTAuMTMsNS41OFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMsNy42NGMtMS4zNC0yLjc1LTUuMi01LTkuNjktMy42OUE5Ljg3LDkuODcsMCwwLDAsMTgsNy43MmE5''@;'; put 'put ''Ljg3LDkuODcsMCwwLDAtNS4zMS0zLjc3QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwxLDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEs''@;'; put 'put ''MTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxSLkNsclNoYXBlSGVhcnRCcm9rZW49KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLDcuNjRjLTEuMzQtMi43NS01LjA5LTUtOS42OS0zLjY5YTkuODcsOS44''@;'; put 'put ''NywwLDAsMC02LDQuODQsMTguOSwxOC45LDAsMCwwLTIuMjMsNS4zM2w1LjI4LDIuMzQtNC42LDQuMzcsMy40OSw0LjEsMS41Mi0xLjNMMTguNTQsMjFsNS40LTUuMTNMMTcuNTgsMTNBMTYuMjMsMTYuMjMsMCwwLDEsMTkuNzUsOC45YTcuNjgsNy42OCwwLDAsMSw0LjExLTNjMy4zNC0uODks''@;'; put 'put ''Ni4zNC42LDcuMzQsMi42NSwxLjU1LDMuMTguODUsNi43Mi0yLjE0LDEwLjgxQTU3LjE2LDU3LjE2LDAsMCwxLDE4LDMwLjE2LDU3LjE2LDU3LjE2LDAsMCwxLDYuOTQsMTkuMzNjLTMtNC4xLTMuNjktNy42NC0yLjE0LTEwLjgxYTUuOSw1LjksMCwwLDEsNS4zMy0yLjkzLDcuMzEsNy4zMSww''@;'; put 'put ''LDAsMSwyLC4yOSw3LjcsNy43LDAsMCwxLDMuMzgsMmwuMTUtLjNhMTAuNjYsMTAuNjYsMCwwLDEsMS0xLjQxLDkuNjQsOS42NCwwLDAsMC0zLjk0LTIuMjJDOC4yLDIuNjYsNC4zNCw0Ljg5LDMsNy42NGMtMS44OCwzLjg1LTEuMSw4LjE4LDIuMzIsMTIuODdDOCwyNC4xOCwxMS44MywyNy45''@;'; put 'put ''LDE3LjM5LDMyLjIyYTEsMSwwLDAsMCwxLjIzLDBjNS41NS00LjMxLDkuMzktOCwxMi4wNy0xMS43MUMzNC4xLDE1LjgyLDM0Ljg4LDExLjQ5LDMzLDcuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLDcu''@;'; put 'put ''NjRjLTEuMzQtMi43NS01LjItNS05LjY5LTMuNjlBMTEuNTUsMTEuNTUsMCwwLDAsMTguMTksNy41YTE2Ljg5LDE2Ljg5LDAsMCwwLTIuNDgsNC41NkwyMi4yNywxNSwxNi43LDIwLjI2LDE5LDIzbC0xLjU3LDEuMzQtMy42LTQuMjIsNC43NC00LjUxLTUuNDQtMi40MWExOS40OSwxOS40OSww''@;'; put 'put ''LDAsMSwyLjMtNS41LDE0Ljc3LDE0Ljc3LDAsMCwxLDEuMDYtMS41NGwuMDYsMGE5LjY2LDkuNjYsMCwwLDAtMy44OS0yLjE4QzguMTksMi42Niw0LjM0LDQuODksMyw3LjY0Yy0xLjg4LDMuODUtMS4xLDguMTgsMi4zMiwxMi44N0M4LDI0LjE4LDExLjgzLDI3LjksMTcuMzksMzIuMjJhMSwx''@;'; put 'put ''LDAsMCwwLDEuMjMsMGM1LjU1LTQuMzEsOS4zOS04LDEyLjA3LTExLjcxQzM0LjEsMTUuODIsMzQuODgsMTEuNDksMzMsNy42NFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxSLkNsclNoYXBlVGFsa0J1YmJsZXM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; 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 ''NiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0zLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz4nKSxSLkNsclNoYXBlQ2hhdEJ1YmJsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMi41Yy04LjgyLDAtMTYsNi4yOC0xNiwxNHM3LjE4LDE0''@;'; 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 ''aS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPicpLFIuQ2xyU2hhcGVQaWN0dXJlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMiw0SDRBMiwyLDAsMCwwLDIsNlYzMGEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWNkEy''@;'; 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 ''PGNpcmNsZSBjeD0iMzAiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIvPicpLFIuQ2xyU2hhcGVIYXBweUZhY2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAs''@;'; put 'put ''MzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMC44OSIgY3k9IjEzLjg5IiByPSIyIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMDUiIGN5PSIxMy44OSIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4xMywy''@;'; put 'put ''OC4yMWE4LjY3LDguNjcsMCwwLDAsOC4yNi02SDkuODdBOC42Nyw4LjY3LDAsMCwwLDE4LjEzLDI4LjIxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCww''@;'; put 'put ''LDE4LDJaTTguODksMTMuODlhMiwyLDAsMSwxLDIsMkEyLDIsMCwwLDEsOC44OSwxMy44OVptOS4yNCwxNC4zMmE4LjY3LDguNjcsMCwwLDEtOC4yNi02SDI2LjM4QTguNjcsOC42NywwLDAsMSwxOC4xMywyOC4yMVptNi45My0xMi4zMmEyLDIsMCwxLDEsMi0yQTIsMiwwLDAsMSwyNS4wNSwx''@;'; put 'put ''NS44OVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxSLkNsclNoYXBlTmV1dHJhbEZhY2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjA1LDIyLjA2aC0xMmExLDEsMCwwLDAsMCwyaDEyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIyNS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMS4xNiIgY3k9IjE0LjI4IiByPSIxLjgiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm03LjA1LDIxLjA2YTEsMSwwLDAsMS0xLDFoLTEyYTEsMSwwLDAsMSwwLTJoMTJBMSwxLDAsMCwxLDI1''@;'; put 'put ''LjA1LDIzLjA2Wk0yNywxNC4yOGExLjgsMS44LDAsMSwxLTEuOC0xLjhBMS44LDEuOCwwLDAsMSwyNywxNC4yOFptLTE1LjgsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjE2LDE2LjA4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIv''@;'; put 'put ''PicpLFIuQ2xyU2hhcGVTYWRGYWNlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQsMTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRs''@;'; put 'put ''aW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjUuMTYiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEuNDEiIGN5PSIxNC4yOCIgcj0iMS44IiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LjE2LDIwYTksOSwwLDAsMC03LjMzLDMuNzgsMSwxLDAsMSwwLDEuNjMsMS4xNiw3LDcsMCwwLDEsMTEuMzEtLjEzLDEsMSwwLDAsMCwxLjYtMS4yQTksOSwwLDAsMCwxOC4x''@;'; put 'put ''NiwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwyWm05LDEyLjI4YTEuOCwxLjgsMCwxLDEtMS44LTEuOEExLjgsMS44LDAsMCwxLDI3LDE0''@;'; put 'put ''LjI4Wm0tMTUuNTUsMS44YTEuOCwxLjgsMCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDExLjQxLDE2LjA4Wm0xNCw3LjUzYTEsMSwwLDAsMS0xLjYsMS4yLDcsNywwLDAsMC0xMS4zMS4xMywxLDEsMCwxLDEtMS42My0xLjE2LDksOSwwLDAsMSwxNC41NC0uMTdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+JyksUi5DbHJTaGFwZVRodW1ic1VwPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNCwyNmMtMi45MiwxLjgyLTcuMyw0LTkuMzcsNGgtNmExNi42OCwxNi42OCwwLDAsMS0zLjMxLTYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsNCwxNmg5VjZh''@;'; put 'put ''Mi4wNSwyLjA1LDAsMCwxLDEuMjYtMS42OWMuNzcsMiwyLjYyLDYuNTcsNC4yMyw4LjcyQTExLjM5LDExLjM5LDAsMCwwLDI0LDE2LjkxVjE0Ljc4YTkuMTMsOS4xMywwLDAsMS0zLjkxLTNjLTEuODgtMi41MS00LjI5LTkuMTEtNC4zMS05LjE3QTEsMSwwLDAsMCwxNC41OSwyQzEzLjI1LDIu''@;'; put 'put ''MzgsMTEsMy42LDExLDZ2OEgzYTEsMSwwLDAsMC0xLDEsMjksMjksMCwwLDAsMS40LDkuNjJjMS44OSw1LjQsNC4xLDcuMTQsNC4yLDcuMjJhMSwxLDAsMCwwLC42MS4yMWg2LjQyYzIuNDMsMCw2LjU1LTIsOS4zNy0zLjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1w''@;'; put 'put ''YXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzQsMzFIMjdhMSwxLDAsMCwxLTEtMVYxNGExLDEsMCwwLDEsMS0xaDdabS02LTJoNFYxNUgyOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjYz''@;'; put 'put ''LDEyLjEyQzE3LjUxLDkuMjgsMTQuODgsMiwxNC44OCwyUzEyLDIuODMsMTIsNS4yNVYxNUgyLjIzYTI5LjQ2LDI5LjQ2LDAsMCwwLDEuNDQsOS43NEM1LjYxLDMwLjI3LDcuOCwzMiw3LjgsMzJoNi44NkMxNi45LDMyLDIxLDMwLjA2LDI0LDI4LjMxVjE1LjUxQTEwLjg0LDEwLjg0LDAsMCwx''@;'; put 'put ''LDE5LjYzLDEyLjEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNywxM2ExLDEsMCwwLDAtMSwxVjMwYTEsMSwwLDAsMCwxLDFoN1YxM1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+''@;'; put 'put ''JyksUi5DbHJTaGFwZVRodW1ic0Rvd249KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEyLDEwYzIuOTItMS44Miw3LjMtNCw5LjM3LTRoNmExNi42OCwxNi42OCwwLDAsMSwzLjMxLDYuMDhBMjYuNzEsMjYuNzEsMCwwLDEsMzIsMjBIMjNWMzBhMi4wNSwyLjA1LDAsMCwxLTEuMjYsMS42''@;'; put 'put ''OWMtLjc3LTItMi42Mi02LjU3LTQuMjMtOC43MkExMS4zOSwxMS4zOSwwLDAsMCwxMiwxOS4wOXYyLjEzYTkuMTMsOS4xMywwLDAsMSwzLjkxLDNjMS44OCwyLjUxLDQuMjksOS4xMSw0LjMxLDkuMTdhMSwxLDAsMCwwLDEuMTkuNjNDMjIuNzUsMzMuNjIsMjUsMzIuNCwyNSwzMFYyMmg4YTEs''@;'; put 'put ''MSwwLDAsMCwxLTEsMjksMjksMCwwLDAtMS40LTkuNjJjLTEuODktNS40LTQuMS03LjE0LTQuMi03LjIyQTEsMSwwLDAsMCwyNy43OSw0SDIxLjM3QzE4Ljk0LDQsMTQuODMsNiwxMiw3LjYzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAg''@;'; put 'put ''ICAgICA8cGF0aCBkPSJNMiw1SDlhMSwxLDAsMCwxLDEsMVYyMmExLDEsMCwwLDEtMSwxSDJaTTgsN0g0VjIxSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNi4zNywyMy44NGMyLjEyLDIuODQsNC43Niwx''@;'; put 'put ''MC4wNyw0Ljc2LDEwLjA3UzI0LDMzLjEzLDI0LDMwLjcxVjIxaDkuNzdhMjkuNDYsMjkuNDYsMCwwLDAtMS40NC05Ljc0QzMwLjM5LDUuNjgsMjguMiw0LDI4LjIsNEgyMS4zNUMxOS4xLDQsMTUsNS45LDEyLDcuNjV2MTIuOEExMC44NCwxMC44NCwwLDAsMSwxNi4zNywyMy44NFoiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNOSwyM2ExLDEsMCwwLDAsMS0xVjZBMSwxLDAsMCwwLDksNUgyVjIzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlQ3Jvd249KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik00LDEzLjMzQTEuMzksMS4zOSwwLDEsMCwyLjYsMTQuNzIsMS4zOSwxLjM5LDAsMCwwLDQsMTMuMzNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuODEsMTUuODRhMjAuMzUs''@;'; 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+XG4gICcpLFIuQ2xyU2hhcGVIYXNodGFnPSgwLG0u''@;'; put 'put ''Y2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzIsMTJIMjUuMzRsMS41NS03Ljc0YTEsMSwwLDAsMC0yLS4zOUwyMy4zLDEySDE1LjExbDEuNTUtNy43NGExLDEsMCwwLDAtMi0uMzlMMTMuMDcsMTJINmExLDEsMCwwLDAsMCwyaDYuNjdsLTEuNiw4SDRhMSwxLDAsMCwwLDAsMmg2LjY2TDku''@;'; put 'put ''MTEsMzEuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjY4LjY4LDAsMCwwLC4yLDAsMSwxLDAsMCwwLDEtLjhMMTIuNywyNGg4LjE5bC0xLjU1LDcuNzRhMSwxLDAsMCwwLC43OSwxLjE3LjYyLjYyLDAsMCwwLC4xOSwwLDEsMSwwLDAsMCwxLS44TDIyLjkzLDI0SDMwYTEsMSwwLDAsMCwwLTJIMjMu''@;'; put 'put ''MzNsMS42MS04SDMyYTEsMSwwLDAsMCwwLTJaTTIxLjI5LDIySDEzLjFsMS42MS04SDIyLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuXG4gIDxwYXRoIGQ9Ik0zMS44NywxMEgyNi4zMmwxLTQuODNBMSwxLDAsMCwwLDI2LjM1LDRoLTJhMSwxLDAs''@;'; put 'put ''MCwwLTEsLjc4TDIyLjMzLDEwaC01LjRsMS00LjgzQTEsMSwwLDAsMCwxNyw0SDE1YTEsMSwwLDAsMC0xLC43OEwxMywxMEg3YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJoNS41NUwxMC41LDIyaC02YTEsMSwwLDAsMC0xLC44bC0uNDEsMmExLDEsMCwwLDAsMSwxLjJI''@;'; put 'put ''OS42OGwtMSw0LjgzYTEsMSwwLDAsMCwxLDEuMTdoMmExLDEsMCwwLDAsLjk1LS43OEwxMy42NywyNmg1LjRsLTEsNC44M0ExLDEsMCwwLDAsMTksMzJoMmExLDEsMCwwLDAsMS0uNzhMMjMuMDUsMjZoNmExLDEsMCwwLDAsMS0uOGwuNC0yYTEsMSwwLDAsMC0xLTEuMkgyMy44N2wxLjYzLTho''@;'; put 'put ''NmExLDEsMCwwLDAsMS0uOGwuNDEtMkExLDEsMCwwLDAsMzEuODcsMTBabS0xMiwxMmgtNS40bDEuNjQtOGg1LjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICcpLFIuU29jaWFsU2hhcGVzPXtjcm93bjpSLkNsclNoYXBlQ3Jvd24sc2hhcmU6Ui5DbHJT''@;'; put 'put ''aGFwZVNoYXJlLHN0YXI6Ui5DbHJTaGFwZVN0YXIsImhhbGYtc3RhciI6Ui5DbHJTaGFwZUhhbGZTdGFyLGJvb2ttYXJrOlIuQ2xyU2hhcGVCb29rbWFyayxlbnZlbG9wZTpSLkNsclNoYXBlRW52ZWxvcGUsY2FsZW5kYXI6c2UuQ2xyU2hhcGVDYWxlbmRhcixldmVudDpzZS5DbHJTaGFwZUV2''@;'; put 'put ''ZW50LHRhc2tzOlIuQ2xyU2hhcGVUYXNrcyxmbGFnOlIuQ2xyU2hhcGVGbGFnLGluYm94OlIuQ2xyU2hhcGVJbmJveCxoYXNodGFnOlIuQ2xyU2hhcGVIYXNodGFnLGhlYXJ0OlIuQ2xyU2hhcGVIZWFydCwiaGVhcnQtYnJva2VuIjpSLkNsclNoYXBlSGVhcnRCcm9rZW4sInRhbGstYnViYmxl''@;'; put 'put ''cyI6Ui5DbHJTaGFwZVRhbGtCdWJibGVzLCJjaGF0LWJ1YmJsZSI6Ui5DbHJTaGFwZUNoYXRCdWJibGUscGljdHVyZTpSLkNsclNoYXBlUGljdHVyZSwiaGFwcHktZmFjZSI6Ui5DbHJTaGFwZUhhcHB5RmFjZSwibmV1dHJhbC1mYWNlIjpSLkNsclNoYXBlTmV1dHJhbEZhY2UsInNhZC1mYWNl''@;'; put 'put ''IjpSLkNsclNoYXBlU2FkRmFjZSwidGh1bWJzLXVwIjpSLkNsclNoYXBlVGh1bWJzVXAsInRodW1icy1kb3duIjpSLkNsclNoYXBlVGh1bWJzRG93bn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuU29jaWFsU2hhcGVzLCJmYXZvcml0ZSIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlNvY2lh''@;'; put 'put ''bFNoYXBlcy5zdGFyKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuU29jaWFsU2hhcGVzLCJlbWFpbCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlNvY2lhbFNoYXBlcy5lbnZlbG9wZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLlNvY2lhbFNoYXBlcywiZGF0ZSIsKDAseC5kZXNjcmlw''@;'; put 'put ''dG9yQ29uZmlnKShSLlNvY2lhbFNoYXBlcy5jYWxlbmRhcikpLHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuaGFzT3duUHJvcGVydHkoIkNsYXJpdHlJY29ucyIpJiZ3aW5kb3cuQ2xhcml0eUljb25zLmFkZChSLlNvY2lhbFNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMv''@;'; put 'put ''dGVjaG5vbG9neS1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICAgICAgICAgICAgICAgICAhKioqIC4vcHJvamVjdHMvaWNvbnMvc3JjL3NoYXBlcy90ZWNobm9sb2d5LXNoYXBlcy50cyAqKiohCiAg''@;'; put 'put ''ICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2Vz''@;'; put 'put ''TW9kdWxlIix7dmFsdWU6ITB9KSxSLkNsclNoYXBlVk1XQXBwPVIuQ2xyU2hhcGVWTT1SLkNsclNoYXBlUm91dGVyPVIuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPVIuQ2xyU2hhcGVOZXR3b3JrU2V0dGluZ3M9Ui5DbHJTaGFwZU5ldHdvcmtHbG9iZT1SLkNsclNoYXBlVGFibGV0PVIuQ2xyU2hh''@;'; put 'put ''cGVNb2JpbGU9Ui5DbHJTaGFwZUJhdHRlcnk9Ui5DbHJTaGFwZUFwcGxpY2F0aW9uPVIuQ2xyU2hhcGVDb2RlPVIuQ2xyU2hhcGVUZXJtaW5hbD1SLkNsclNoYXBlRGlzcGxheT1SLkNsclNoYXBlQ29tcHV0ZXI9Ui5DbHJTaGFwZUZsb3BweT1SLkNsclNoYXBlUGx1Z2luPVIuQ2xyU2hhcGVE''@;'; put 'put ''b3dubG9hZENsb3VkPVIuQ2xyU2hhcGVVcGxvYWRDbG91ZD1SLkNsclNoYXBlRXhwb3J0PVIuQ2xyU2hhcGVJbXBvcnQ9Ui5DbHJTaGFwZVNoaWVsZFg9Ui5DbHJTaGFwZVNoaWVsZD1SLkNsclNoYXBlU2hpZWxkQ2hlY2s9Ui5DbHJTaGFwZVJlc291cmNlUG9vbD1SLkNsclNoYXBlRGF0YUNs''@;'; put 'put ''dXN0ZXI9Ui5DbHJTaGFwZU1lbW9yeT1SLkNsclNoYXBlQ1BVPVIuQ2xyU2hhcGVCdWlsZGluZz1SLkNsclNoYXBlQXBwbGljYXRpb25zPVIuQ2xyU2hhcGVDbHVzdGVyPVIuQ2xyU2hhcGVTdG9yYWdlPVIuQ2xyU2hhcGVIb3N0PVIuQ2xyU2hhcGVEYXNoYm9hcmQ9Ui5DbHJTaGFwZU1vdXNl''@;'; put 'put ''PVIuQ2xyU2hhcGVLZXlib2FyZD1SLkNsclNoYXBlRGV2aWNlcz1SLkNsclNoYXBlQmFja3VwPVIuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlPVIuQ2xyU2hhcGVIYXJkRGlzaz1SLkNsclNoYXBlUmFja1NlcnZlcj1SLkNsclNoYXBlV2lmaT1SLkNsclNoYXBlQnVuZGxlPVIuQ2xyU2hhcGVCbG9j''@;'; put 'put ''a3NHcm91cD1SLkNsclNoYXBlQmxvY2s9Ui5DbHJTaGFwZUxheWVycz1SLkNsclNoYXBlVW5pbnN0YWxsPVIuQ2xyU2hhcGVJbnN0YWxsPVIuQ2xyU2hhcGVOb1dpZmk9Ui5DbHJTaGFwZVBob25lSGFuZHNldD1SLkNsclNoYXBlUnVsZXJQZW5jaWw9dm9pZCAwLFIuVGVjaG5vbG9neVNoYXBl''@;'; put 'put ''cz1SLkNsclNoYXBlRmlsZVNoYXJlMj1SLkNsclNoYXBlQ2lDZD1SLkNsclNoYXBlQW5pbWF0aW9uPVIuQ2xyU2hhcGVUYXBlRHJpdmU9Ui5DbHJTaGFwZU1lZGlhQ2hhbmdlcj1SLkNsckNvbnRyb2xMdW49Ui5DbHJTaGFwZVBvZD1SLkNsclNoYXBlTm9kZT1SLkNsclNoYXBlTmFtZXNwYWNl''@;'; put 'put ''PVIuQ2xyU2hhcGVOb2Rlcz1SLkNsclNoYXBlTm9kZUdyb3VwPVIuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj1SLkNsclNoYXBlSG9zdEdyb3VwPVIuQ2xyU2hhcGVTcXVpZD1SLkNsclNoYXBlQ2FwYWNpdG9yPVIuQ2xyU2hhcGVSZXNpc3Rvcj1SLkNsclNoYXBlSW5kdWN0b3I9Ui5DbHJTaGFw''@;'; put 'put ''ZVJhZGFyPVIuQ2xyU2hhcGVVc2I9Ui5DbHJTaGFwZVFyQ29kZT1SLkNsclNoYXBlRmlsZVNoYXJlPVIuQ2xyU2hhcGVDb250YWluZXJWb2x1bWU9Ui5DbHJTaGFwZUNvbnRhaW5lcj1SLkNsclNoYXBlQ2REdmQ9Ui5DbHJTaGFwZUJhckNvZGU9Ui5DbHJTaGFwZUF0b209Ui5DbHJTaGFwZUFz''@;'; put 'put ''c2lnblVzZXI9Ui5DbHJTaGFwZVByb2Nlc3NPblZNPVIuQ2xyU2hhcGVCbHVldG9vdGhPZmY9Ui5DbHJTaGFwZUJsdWV0b290aD1SLkNsclNoYXBlU1NEPVIuQ2xyU2hhcGVOVk1lPVIuQ2xyU2hhcGVIYXJkRHJpdmVEaXNrcz1SLkNsclNoYXBlSGFyZERyaXZlPVIuQ2xyU2hhcGVBZG1pbmlz''@;'; put 'put ''dHJhdG9yPVIuQ2xyU2hhcGVGbGFzaz1SLkNsclNoYXBlSGVsaXg9Ui5DbHJTaGFwZURlcGxveT1SLkNsclNoYXBlQ2xvdWRUcmFmZmljPVIuQ2xyU2hhcGVDbG91ZFNjYWxlPVIuQ2xyU2hhcGVDbG91ZE5ldHdvcms9Ui5DbHJTaGFwZVVubGluaz1SLkNsclNoYXBlTGluaz1SLkNsclNoYXBl''@;'; put 'put ''RGlzY29ubmVjdD1SLkNsclNoYXBlQ29ubmVjdD1SLkNsclNoYXBlVW5hcmNoaXZlPVIuQ2xyU2hhcGVBcmNoaXZlPVIuQ2xyU2hhcGVDZXJ0aWZpY2F0ZT12b2lkIDA7dmFyIHg9b2UoCi8qISAuLi91dGlscy9kZXNjcmlwdG9yLWNvbmZpZyAqLwoiLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRp''@;'; put 'put ''bHMvZGVzY3JpcHRvci1jb25maWcudHMiKSxtPW9lKAovKiEgLi4vdXRpbHMvc3ZnLXRhZy1nZW5lcmF0b3IgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL3N2Zy10YWctZ2VuZXJhdG9yLnRzIik7Ui5DbHJTaGFwZVJ1bGVyUGVuY2lsPSgwLG0uY2xySWNvblNWRykoJzxwb2x5Z29u''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBwb2ludHM9IjkgMTcuNDEgOSAyNyAxOC41OSAyNyAxNi41OSAyNSAxMSAyNSAxMSAxOS40MSA5IDE3LjQxIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMiIgZD0iTTM0Ljg3LDMyLjI5LDMyLDI5LjM4VjMySDRWMjcuODVINnYtMS42SDRWMTkuNkg2VjE4SDRWMTEuNkg2VjEwSDRWNC40MUwxOS45NCwyMC4yNlYxNy40NEwzLjcxLDEuMjlBMSwxLDAsMCwwLDIsMlYzM2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVoi''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjQsMzBoNGEyLDIsMCwwLDAsMi0yVjguN0wyNy43LDQuNDdhMiwyLDAsMCwwLTEuNzYtMWgwYTIsMiwwLDAsMC0xLjc2LDEuMDhMMjIsOC43MlYyOEEyLDIsMCwwLDAs''@;'; put 'put ''MjQsMzBaTTI0LDkuMmwxLjk0LTMuNzdMMjgsOS4yMVYyNEgyNFptMCwxNi40M2g0djIuNDRIMjRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzQuODcsMzIuMjEsMzAsMjcuMzdWOC43NUwyNy43LDQuNTJhMiwyLDAs''@;'; put 'put ''MCwwLTMuNTQsMEwyMiw4Ljc2VjE5LjQxTDMuNzEsMS4yMUExLDEsMCwwLDAsMiwxLjkyVjEwSDQuMTd2MS42SDJWMThINC4xN3YxLjZIMnY2LjY1SDQuMTd2MS42SDJ2NS4wN2ExLDEsMCwwLDAsMSwxSDM0LjE2YTEsMSwwLDAsMCwuNzEtMS43MVpNMTAsMjZWMTYuOTRMMTkuMDcsMjZabTE4''@;'; put 'put ''LDIuMTFIMjRWMjUuNjhoNFptMC00SDI0VjkuMjVsMS45NC0zLjc3TDI4LDkuMjZaIi8+XG4nKSxSLkNsclNoYXBlUGhvbmVIYW5kc2V0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMjcuNzMsMzUuNDRhNC43''@;'; put 'put ''Miw0LjcyLDAsMCwxLTEtLjExLDMzLjkxLDMzLjkxLDAsMCwxLTE2LjYyLTguNzUsMzIuNzEsMzIuNzEsMCwwLDEtOS0xNi4yNUE0LjU4LDQuNTgsMCwwLDEsMi40Niw2LjA1bDQtMy44NUEyLDIsMCwwLDEsOCwxLjY2YTIsMiwwLDAsMSwxLjQ1Ljg3bDUsNy4zOWExLjYsMS42LDAsMCwxLS4x''@;'; put 'put ''MSwxLjlsLTIuNTEsM2ExOC45NCwxOC45NCwwLDAsMCw0LjE3LDUuODloMGExOS4yNiwxOS4yNiwwLDAsMCw2LjA3LDQuMDlsMy4xMS0yLjQ3YTEuNjQsMS42NCwwLDAsMSwxLjg2LS4xMmw3LjU1LDQuODhBMiwyLDAsMCwxLDM1LDMwLjJsLTMuOSwzLjg2QTQuNzQsNC43NCwwLDAsMSwyNy43''@;'; put 'put ''MywzNS40NFpNNy44NCwzLjY0bC00LDMuODVhMi41NCwyLjU0LDAsMCwwLS43NSwyLjQsMzAuNywzMC43LDAsMCwwLDguNDEsMTUuMjYsMzEuOSwzMS45LDAsMCwwLDE1LjY0LDguMjMsMi43NSwyLjc1LDAsMCwwLDIuNS0uNzRsMy45LTMuODYtNy4yOS00LjcxLTMuMzQsMi42NmExLDEsMCww''@;'; put 'put ''LDEtLjkyLjE3LDIwLjA2LDIwLjA2LDAsMCwxLTcuMzYtNC43NWgwYTE5LjQ5LDE5LjQ5LDAsMCwxLTQuODctNy4yQTEsMSwwLDAsMSwxMCwxNGwyLjctMy4yM1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xNS4yMiwy''@;'; put 'put ''MC42NGEyMC4zNywyMC4zNywwLDAsMCw3LjQsNC43OWwzLjc3LTNhLjY3LjY3LDAsMCwxLC43NiwwbDcsNC41MWEyLDIsMCwwLDEsLjMzLDMuMThsLTMuMjgsMy4yNGE0LDQsMCwwLDEtMy42MywxLjA3LDM1LjA5LDM1LjA5LDAsMCwxLTE3LjE1LTlBMzMuNzksMzMuNzksMCwwLDEsMS4xNSw4''@;'; put 'put ''LjZhMy43OCwzLjc4LDAsMCwxLDEuMS0zLjU1bDMuNC0zLjI4YTIsMiwwLDAsMSwzLjEyLjMyTDEzLjQzLDlhLjYzLjYzLDAsMCwxLDAsLjc1bC0zLjA3LDMuNjlBMTkuNzUsMTkuNzUsMCwwLDAsMTUuMjIsMjAuNjRaIi8+XG4nKSxSLkNsclNoYXBlTm9XaWZpPSgwLG0uY2xySWNvblNWRyko''@;'; 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 ''NiwwLDAsMSwxNC4yNSwxNmwzLjYsMy42YTEzLjM5LDEzLjM5LDAsMCwwLTYuNzksMS45MywxLjUsMS41LDAsMCwwLS40NiwyLjA5bC4xLjE2YTEuNTIsMS41MiwwLDAsMCwyLjA2LjQ0LDEwLjIsMTAuMiwwLDAsMSw5LS43TDI5LDMwLjc1bDEuNDEtMS40MS0yNi0yNloiLz5cbicpLFIuQ2xy''@;'; put 'put ''U2hhcGVJbnN0YWxsPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzAuOTIsOEgyNi41NWExLDEsMCwwLDAsMCwySDMxVjMwSDVWMTBIOS4zOGExLDEsMCwwLDAsMC0ySDUuMDhBMiwyLDAsMCwwLDMsMTBWMzBh''@;'; 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 ''MS4xNFoiLz5cbicpLFIuQ2xyU2hhcGVVbmluc3RhbGw9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xMS4yOSwyNi43MmExLDEsMCwwLDAsMS40MSwwTDE4LDIxLjQ5bDUuMyw1LjIzQTEsMSwwLDAsMCwyNC43''@;'; 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 ''ZS1wYXRoLTMtLWFsZXJ0ZWQgY2xyLWktYWxlcnQiIGQ9Ik0yNi44NSwxLjE0LDIxLjEzLDExQTEuMjgsMS4yOCwwLDAsMCwyMi4yMywxM0gzMy42OEExLjI4LDEuMjgsMCwwLDAsMzQuNzgsMTFMMjkuMDYsMS4xNEExLjI4LDEuMjgsMCwwLDAsMjYuODUsMS4xNFoiLz5cbicpLFIuQ2xyU2hh''@;'; put 'put ''cGVMYXllcnM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWEx''@;'; put 'put ''LDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVpNNS4zNCwxMi4xNmwxMi42Niw2LDEyLjY2LTZMMTgsNi4xOFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiBkPSJNMTgsMjYuMTZhMSwxLDAs''@;'; put 'put ''MCwxLS40My0uMUwyLjU3LDE5YTEsMSwwLDEsMSwuODUtMS44MUwxOCwyNC4wNmwxNC41Ny02Ljg5QTEsMSwwLDEsMSwzMy40MywxOWwtMTUsNy4wOUExLDEsMCwwLDEsMTgsMjYuMTZaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBh''@;'; put 'put ''dGgtMyIgZD0iTTE4LDMyLjA3YTEsMSwwLDAsMS0uNDMtLjFsLTE1LTcuMDlhMSwxLDAsMCwxLC44NS0xLjgxTDE4LDMwbDE0LjU3LTYuODlhMSwxLDAsMSwxLC44NSwxLjgxTDE4LjQzLDMyQTEsMSwwLDAsMSwxOCwzMi4wN1oiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1z''@;'; put 'put ''b2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyMC4yNWExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwwLTEuODFsMTUtNy4wOWExLDEsMCwwLDEsLjg1LDBsMTUsNy4wOWExLDEsMCwwLDEsMCwxLjgxbC0xNSw3LjA5QTEsMSwwLDAsMSwxOCwyMC4yNVoiLz5cbiAg''@;'; put 'put ''ICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIGQ9Ik0xOCwyNi4xNmExLDEsMCwwLDEtLjQzLS4xTDIuNTcsMTlhMSwxLDAsMSwxLC44NS0xLjgxTDE4LDI0LjA2bDE0LjU3LTYuODlBMSwxLDAsMSwxLDMzLjQzLDE5bC0xNSw3LjA5QTEsMSww''@;'; put 'put ''LDAsMSwxOCwyNi4xNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0xOCwzMi4wN2ExLDEsMCwwLDEtLjQzLS4xbC0xNS03LjA5YTEsMSwwLDAsMSwuODUtMS44MUwxOCwzMGwxNC41Ny02Ljg5YTEsMSwwLDEsMSwuODUs''@;'; put 'put ''MS44MUwxOC40MywzMkExLDEsMCwwLDEsMTgsMzIuMDdaIi8+XG4nKSxSLkNsclNoYXBlQmxvY2s9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQyLDkuMDlsLTEzLTZhMSwxLDAsMCwwLS44NCwwbC0xMyw2QTEsMSwwLDAsMCw0LDEwVjI3YTEsMSwwLDAsMCwuNTguOTFsMTMsNmEx''@;'; 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+JyksUi5DbHJTaGFwZUJsb2Nrc0dyb3VwPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy41MywxOC43NiwyNi42LDE1LjU3VjYuNDNBMSwxLDAsMCwwLDI2LDUuNTNsLTcuNS0z''@;'; 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 ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMS0tYmFkZ2VkIiAvPlxuPGNpcmNsZSBjeD0iMjkuOTgiIGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTItLWJhZGdlZCBjbHItaS1iYWRnZSIgLz4nKSxSLkNsclNoYXBlQnVuZGxlPSgwLG0uY2xy''@;'; put 'put ''SWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEsMSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwu''@;'; put 'put ''ODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEyLjkxWk01LDEyLjEzLDE2LDE3LjRWMzEuNDZMNSwyNi4y''@;'; put 'put ''Wk0xOCwzMS40NVYxNy4zNmwxMy02LjI5djE0LjFaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiBkPSJNMzIuNDMsOC4zNWwtMTMtNi4yMWExLDEsMCwwLDAtLjg3LDBsLTE1LDcuMjRhMSwxLDAsMCwwLS41Ny45VjI2LjgzYTEs''@;'; put 'put ''MSwwLDAsMCwuNi45MmwxMyw2LjE5YTEsMSwwLDAsMCwuODcsMGwxNS03LjI0YTEsMSwwLDAsMCwuNTctLjlWOS4yNUExLDEsMCwwLDAsMzIuNDMsOC4zNVpNMTksNC4xNSwyOS45Myw5LjM3bC01LjA1LDIuNDRMMTQuMjEsNi40NlpNMTcsMTUuNjQsNiwxMC40MWw1LjktMi44NUwyMi42LDEy''@;'; put 'put ''LjkxWm0xLDE1LjhWMTcuMzZsMTMtNi4yOXYxNC4xWiIvPlxuJyksUi5DbHJTaGFwZVdpZmk9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zMy41NSw4LjJhMjguMSwyOC4xLDAsMCwwLTMxLjExLjA4QTEsMSww''@;'; 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 ''MiwxLjUyLDAsMCwwLDIuMDYuNDQsMTAuMjcsMTAuMjcsMCwwLDEsMTAuNDIsMCwxLjUyLDEuNTIsMCwwLDAsMi4wNi0uNDVsLjEtLjE2QTEuNDksMS40OSwwLDAsMCwyNC44OCwyMS40OVoiLz5cbicpLFIuQ2xyU2hhcGVSYWNrU2VydmVyPSgwLG0uY2xySWNvblNWRykoJzxyZWN0IGNsYXNz''@;'; 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 ''KSxSLkNsclNoYXBlSGFyZERpc2s9KDAsbS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMiIvPlxuICAgICAgICAgICAgPHJlY3QgY2xh''@;'; 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 ''MlYyMlptMjgsNUgyNlYyNWg0WiIvPlxuJyksUi5DbHJTaGFwZUJhY2t1cFJlc3RvcmU9KDAsbS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGluZS1wYXRoLTEtLWFsZXJ0ZWQiIHg9IjYiIHk9IjIyIiB3aWR0aD0iMjQiIGhlaWdo''@;'; 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 ''LDEsMCwyLDBWNmw0LDMuOTVBMSwxLDAsMSwwLDI0LjM4LDguNUwxOCwyLjE2LDExLjYxLDguNUExLDEsMCwwLDAsMTMsOS45MloiLz5cbicpLFIuQ2xyU2hhcGVCYWNrdXA9KDAsbS5jbHJJY29uU1ZHKSgnPHJlY3QgY2xhc3M9ImNsci1pLW91dGxpbmUtLWFsZXJ0ZWQgY2xyLWktb3V0bGlu''@;'; 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 ''ICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgZD0iTTIsMjR2NmEyLDIsMCwwLDAsMiwySDMyYTIsMiwwLDAsMCwyLTJWMjRabTI4LDRIMjZWMjZoNFoiLz5cbicpLFIuQ2xyU2hhcGVEZXZpY2VzPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzIsMTNIMjRhMiwyLDAsMCwwLTIsMlYzMGEyLDIsMCwwLDAsMiwyaDhhMiwyLDAsMCwwLDItMlYxNUEyLDIsMCwwLDAsMzIsMTNabTAsMlYyNkgyNFYxNVpNMjQsMzBWMjcuNmg4VjMwWiIvPlxuICAgICAgICAgICAgPHBh''@;'; put 'put ''dGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9Ik0yMCwyMkg0VjZIMjh2NWgyVjZhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMkgyMFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0zIiBkPSJNMjAsMjZIOWExLDEsMCwwLDAsMCwySDIwWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMyLDEzSDI0YTIsMiwwLDAsMC0yLDJWMzBhMiwyLDAsMCwwLDIsMmg4YTIsMiwwLDAs''@;'; put 'put ''MCwyLTJWMTVBMiwyLDAsMCwwLDMyLDEzWm0wLDJWMjhIMjRWMTVaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMjgsNEg0QTIsMiwwLDAsMCwyLDZWMjJhMiwyLDAsMCwwLDIsMmg4djJIOS4zMkExLjIsMS4yLDAsMCww''@;'; put 'put ''LDgsMjdhMS4yLDEuMiwwLDAsMCwxLjMyLDFIMTkuOTJ2LS4zN0gyMFYyMkg0VjZIMjh2NWgyVjZBMiwyLDAsMCwwLDI4LDRaIi8+XG4nKSxSLkNsclNoYXBlS2V5Ym9hcmQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEi''@;'; 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 ''N0g5Wm0wLTRIN1YxM0g5Wm0yLDJoMnYySDExWm0xMy44OCw3SDExLjEzVjIySDI0Ljg4Wk0yNSwxOUgyM1YxN2gyWm0wLTRIMjNWMTNoMlptMy45NCw5SDI3VjIyaDEuOTRaTTI5LDE5SDI3VjE3aDJabTAtNEgyN1YxM2gyWiIvPlxuJyksUi5DbHJTaGFwZU1vdXNlPSgwLG0uY2xySWNvblNW''@;'; put 'put ''RykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMzRBMTAsMTAsMCwwLDEsOCwyNFYxMmExMCwxMCwwLDAsMSwyMCwwVjI0QTEwLDEwLDAsMCwxLDE4LDM0Wk0xOCw0YTgsOCwwLDAsMC04LDhWMjRhOCw4LDAsMCwwLDE2LDBWMTJBOCw4''@;'; put 'put ''LDAsMCwwLDE4LDRaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgZD0iTTE4LDE1YTEsMSwwLDAsMS0xLTFWMTBhMSwxLDAsMCwxLDIsMHY0QTEsMSwwLDAsMSwxOCwxNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0xOCwyQTEwLDEwLDAsMCwwLDgsMTJWMjRhMTAsMTAsMCwwLDAsMjAsMFYxMkExMCwxMCwwLDAsMCwxOCwyWm0xLjMsMTEuNDRhMS4zLDEuMywwLDAsMS0yLjYsMFYxMGExLjMsMS4zLDAsMCwxLDIuNiwwWiIvPlxuJyksUi5D''@;'; put 'put ''bHJTaGFwZURhc2hib2FyZD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTI1LjE4LDEyLjMybC01LjkxLDUuODFhMywzLDAsMSwwLDEuNDEsMS40Mmw1LjkyLTUuODFaIi8+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 ''Z2UiIGN4PSIzMCIgY3k9IjYiIHI9IjUiLz5cbicpLFIuQ2xyU2hhcGVIb3N0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMTgsMjQuM2EyLjQ4LDIuNDgsMCwxLDAsMi40OCwyLjQ3QTIuNDgsMi40OCwwLDAs''@;'; 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 ''Z2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiBjeD0iMzAiIGN5PSI1LjkiIHI9IjUiLz5cbicpLFIuQ2xyU2hhcGVTdG9yYWdlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiBkPSJNMzMs''@;'; 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 ''LTItLWJhZGdlZCBjbHItaS1iYWRnZSIgY3g9IjMwIiBjeT0iNS44NiIgcj0iNSIvPlxuJyksUi5DbHJTaGFwZUNsdXN0ZXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjM2LDhIMjcuNXYySDMxVjMwSDI3LjV2MkgzM1Y5LjY3QTEuNjUsMS42NSwwLDAsMCwzMS4zNiw4WiIgY2xh''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVBcHBsaWNhdGlvbnM9KDAsbS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI4IDggNCA4IDQg''@;'; 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 ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC05LS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZUJ1aWxkaW5nPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOS44''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVDUFU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjA4LDIzLjA3aC0xMXYxLjVIMjMuODNhLjc1Ljc1LDAsMCwwLC43''@;'; 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 ''Wk0yNSwyMy44MUExLjE4LDEuMTgsMCwwLDEsMjQsMjVIMTNWMjNIMjNWMTFoMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZU1lbW9yeT0oMCxtLmNsckljb25TVkcpKCc8cmVjdCB4PSI4IiB5PSIxMiIgd2lkdGg9IjQi''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVEYXRhQ2x1c3Rlcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNSw0LjA4QzIyLjc3LDQuMDgsMTksNS40LDE5LDcu''@;'; 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 ''PSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTUtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxSLkNsclNoYXBlUmVzb3VyY2VQb29sPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMxLjczYTE0LDE0LDAsMCwx''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVTaGllbGRDaGVjaz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYu''@;'; put 'put ''NjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwzLjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUu''@;'; put 'put ''MDUsMTMuNjYtMTguNDVWNy41OVpNMzAsMTUuOTNjMCwxMS0xMCwxNS42MS0xMiwxNi40My0yLS44Mi0xMi01LjQ0LTEyLTE2LjQzVjkuMTRhNDcuNTQsNDcuNTQsMCwwLDAsNi4xOC0yLjI1LDQ4LjIzLDQ4LjIzLDAsMCwwLDUuODItMyw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLDNBNDcuNTQs''@;'; put 'put ''NDcuNTQsMCwwLDAsMzAsOS4xNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTAuODgsMTYuODdhMSwxLDAsMCwwLTEuNDEsMS40MWw2LDZMMjYuNCwxMy43N0ExLDEsMCwwLDAsMjUsMTIuMzNsLTkuNDcsOS4x''@;'; put 'put ''OVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuMjUsNy40YTQzLjc5LDQzLjc5LDAsMCwxLTYuNjItMi4zNSw0NSw0NSwwLDAsMS02LjA4LTMuMjFMMTgsMS41bC0uNTQuMzVhNDUsNDUsMCwwLDEtNi4wOCwz''@;'; put 'put ''LjIxQTQzLjc5LDQzLjc5LDAsMCwxLDQuNzUsNy40TDQsNy41OXY4LjM0YzAsMTMuMzksMTMuNTMsMTguNCwxMy42NiwxOC40NWwuMzQuMTIuMzQtLjEyYy4xNCwwLDEzLjY2LTUuMDUsMTMuNjYtMTguNDVWNy41OVptLTQuNTcsNi42NUwxNS41MSwyNC45LDkuMTksMTguNTdhMS40LDEuNCww''@;'; put 'put ''LDAsMSwyLTJMMTUuNTQsMjEsMjQuNzMsMTJhMS40LDEuNCwwLDEsMSwyLDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIi8+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVTaGllbGQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43''@;'; 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 ''ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZVNoaWVsZFg9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjI1LDcuNGE0My43OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUs''@;'; put 'put ''MCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4xMmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1''@;'; put 'put ''VjcuNTlaTTMwLDE1LjkzYzAsMTEtMTAsMTUuNjEtMTIsMTYuNDMtMi0uODItMTItNS40NC0xMi0xNi40M1Y5LjE0YTQ3LjU0LDQ3LjU0LDAsMCwwLDYuMTgtMi4yNSw0OC4yMyw0OC4yMywwLDAsMCw1LjgyLTMsNDguMjMsNDguMjMsMCwwLDAsNS44MiwzQTQ3LjU0LDQ3LjU0LDAsMCwwLDMw''@;'; put 'put ''LDkuMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTIyLjgxLDEwLjc5LDE4LDE1LjYxbC00LjgxLTQuODFhMSwxLDAsMCwwLTEuNDEsMS40MUwxNi41OSwxN2wtNC44MSw0LjgxYTEsMSwwLDEsMCwxLjQxLDEu''@;'; put 'put ''NDFMMTgsMTguNDNsNC44MSw0LjgxYTEsMSwwLDAsMCwxLjQxLTEuNDFMMTkuNDEsMTdsNC44MS00LjgxYTEsMSwwLDAsMC0xLjQxLTEuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMxLjI1LDcuNGE0My43''@;'; put 'put ''OSw0My43OSwwLDAsMS02LjYyLTIuMzUsNDUsNDUsMCwwLDEtNi4wOC0zLjIxTDE4LDEuNWwtLjU0LjM1YTQ1LDQ1LDAsMCwxLTYuMDgsMy4yMUE0My43OSw0My43OSwwLDAsMSw0Ljc1LDcuNEw0LDcuNTl2OC4zNGMwLDEzLjM5LDEzLjUzLDE4LjQsMTMuNjYsMTguNDVsLjM0LjEyLjM0LS4x''@;'; put 'put ''MmMuMTQsMCwxMy42Ni01LjA1LDEzLjY2LTE4LjQ1VjcuNTlaTTI0LjUxLDIxLjU1YTEuNCwxLjQsMCwwLDEtMiwyTDE4LDE5bC00LjUzLDQuNTNhMS40MywxLjQzLDAsMCwxLTIsMCwxLjQsMS40LDAsMCwxLDAtMkwxNiwxN2wtNC41My00LjUzYTEuNCwxLjQsMCwxLDEsMi0yTDE4LDE1bDQu''@;'; put 'put ''NTMtNC41M2ExLjQsMS40LDAsMCwxLDIsMkwyMCwxN1oiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZUltcG9ydD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjgsNEgxNC44N0w4LDEwLjg2VjE1aDJWMTMuNjFoNy42''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVFeHBvcnQ9KDAsbS5jbHJJY29uU1ZH''@;'; 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 ''IGN5PSI2IiByPSI1IiBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIvPlxuICAgICAgICAnKSxSLkNsclNoYXBlVXBsb2FkQ2xvdWQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEs''@;'; 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 ''Ui5DbHJTaGFwZURvd25sb2FkQ2xvdWQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMwLjMxLDEzYzAtLjEsMC0uMjEsMC0uMzJhMTAuMjYsMTAuMjYsMCwwLDAtMTAuNDUtMTAsMTAuNDcsMTAuNDcsMCwwLDAtOS42LDYuMUE5LjY1LDkuNjUsMCwwLDAsMTAuODksMjhhMywzLDAsMCwx''@;'; 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 ''ICAgICAnKSxSLkNsclNoYXBlUGx1Z2luPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS44MSwxNkgyOVY4LjgzYTIsMiwwLDAsMC0yLTJIMjFBNS4xNCw1LjE0LDAsMCwwLDE2LjUxLDIsNSw1LDAsMCwwLDExLDYuODNINGEyLDIsMCwwLDAtMiwyVjE3SDQuODFBMy4xMywzLjEzLDAs''@;'; 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 ''ZWQgY2xyLWktc29saWQtcGF0aC0xLS1iYWRnZWQiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImNsci1pLXNvbGlkLS1iYWRnZWQgY2xyLWktc29saWQtcGF0aC0yLS1iYWRnZWQgY2xyLWktYmFkZ2UiLz5cbiAgICAgICAgJyksUi5DbHJTaGFw''@;'; put 'put ''ZUZsb3BweT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcuMzYsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjguNzhaTTI1LDMwSDExVjIySDI1Wm01LDBIMjdWMjJhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhINlY2aDR2''@;'; 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 ''bGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMS0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAgICAgICAnKSxSLkNsclNoYXBlQ29tcHV0ZXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI5LjYgMjIuODggOS42IDEwLjYgMjQuNCAxMC42IDI1Ljk4IDkgOCA5IDgg''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVEaXNwbGF5PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMi41LDNIMy41QTEuNSwx''@;'; 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+XG4gICAgICAgICcpLFIu''@;'; put 'put ''Q2xyU2hhcGVUZXJtaW5hbD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsNUg0QTIsMiwwLDAsMCwyLDdWMjlhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjdBMiwyLDAsMCwwLDMyLDVaTTQsN0gzMlY5LjJINFpNNCwyOVYxMC44SDMyVjI5WiIgY2xhc3M9ImNsci1pLW91''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVDb2RlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMy43MSwxMi41OWExLDEsMCwwLDAtMS4zOS0uMjZMNS43OSwxNi43OGExLDEsMCwwLDAsMCwxLjY1bDYuNTMsNC40NWExLDEsMCwxLDAsMS4xMy0x''@;'; 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 ''bGluZS1wYXRoLTQtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZUFwcGxpY2F0aW9uPSgwLG0uY2xySWNvblNWRykoJzxyZWN0IHg9IjUiIHk9IjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxMyIgeT0iNyIgd2lkdGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9''@;'; put 'put ''ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRaTTQsNkgzMnY0LjJINFpNNCwzMFYxMS44SDMyVjMw''@;'; put 'put ''WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzIsNEg0QTIsMiwwLDAsMCwyLDZWMzBhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjZBMiwyLDAsMCwwLDMyLDRabTAsNi4ySDRWNkgzMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI1IiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD0iOSIgeT0iNyIgd2lk''@;'; put 'put ''dGg9IjIiIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSI3IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAn''@;'; put 'put ''KSxSLkNsclNoYXBlQmF0dGVyeT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTguNTksMTEuNzdhMSwxLDAsMCwwLTEuNzMsMWwyLjUsNC4zNC02LjA3LTEsNS4yOSwxMC41OWExLDEsMCwwLDAsMS43OS0uODlsLTMuNTMtNy4wOCw2LjM4LDEuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVNb2JpbGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTEsNkgyNVYyNEgxMVpt''@;'; put 'put ''MCwyNFYyNkgyNXY0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSIxNyIgeT0iMjciIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAg''@;'; put 'put ''ICAgICAgICAgPHBhdGggZD0iTTI1LDRIMTFBMiwyLDAsMCwwLDksNlYzMGEyLDIsMCwwLDAsMiwySDI1YTIsMiwwLDAsMCwyLTJWNkEyLDIsMCwwLDAsMjUsNFpNMTksMzBIMTdWMjhoMlptLTgtNFY2SDI1VjI2WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5c''@;'; put 'put ''biAgICAgICAgJyksUi5DbHJTaGFwZVRhYmxldD0oMCxtLmNsckljb25TVkcpKCc8cmVjdCB4PSIxNyIgeT0iMjkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLDJINkEy''@;'; put 'put ''LDIsMCwwLDAsNCw0VjMyYTIsMiwwLDAsMCwyLDJIMzBhMiwyLDAsMCwwLDItMlY0QTIsMiwwLDAsMCwzMCwyWm0wLDJWMjYuMzhINlY0Wk02LDMyVjI4SDMwdjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0z''@;'; put 'put ''MCwySDZBMiwyLDAsMCwwLDQsNFYzMmEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWNEEyLDIsMCwwLDAsMzAsMlpNMTksMzJIMTdWMzBoMlpNNiwyOFY0SDMwVjI4WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz5cbiAgICAgICAgJyksUi5DbHJTaGFw''@;'; put 'put ''ZU5ldHdvcmtHbG9iZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjYuNTgsMzJoLTE4YTEsMSwwLDEsMCwwLDJoMThhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE3Ljc1LDJh''@;'; 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+XG4gICAgICAgICcpLFIuQ2xy''@;'; put 'put ''U2hhcGVOZXR3b3JrU2V0dGluZ3M9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjg1LDI3LjQ0YTIuMjksMi4yOSwwLDAsMCwxLjc0LTEuNjhjLjU0LS4xNCwxLjA2LS4zMiwxLjU5LS41MXYtMS4yYTIuNzcsMi43NywwLDAsMSwuMDYtLjUxLDE3LjQ0LDE3LjQ0LDAsMCwxLTEuODIu''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVOZXR3b3JrU3dpdGNoPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy45MSwxOC40NywzMC43''@;'; 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 ''ICAgIDxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgIGNsYXNzPSJjbHItaS1zb2xpZC0tYmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMi0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlUm91dGVyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOCwx''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVWTT0oMCxtLmNs''@;'; 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 ''YmFkZ2VkIGNsci1pLXNvbGlkLXBhdGgtMy0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlVk1XQXBwPSgwLG0uY2xySWNvblNWRykoJzxwb2x5Z29uIHBvaW50cz0iMjggMjIgMzAgMjIgMzAgMzAgMjIgMzAgMjIgMjggMjAgMjggMjAgMzIgMzIgMzIgMzIg''@;'; 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+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktb3V0bGluZS0tYmFkZ2VkIGNsci1pLW91dGxpbmUtcGF0aC0xMC0tYmFkZ2VkIGNsci1pLWJhZGdlIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlQ2VydGlmaWNh''@;'; put 'put ''dGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMTlsLjU3LS43LjkzLTEuMTRMMjAuNDEsMjhINFY4SDMybDAsOC41NmE4LjQxLDguNDEsMCwwLDEsMiwxLjgxVjhBMiwyLDAsMCwwLDMyLDZaIiBjbGFzcz0iY2xyLWkt''@;'; 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+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PSIzMCIgY3k9IjYiIHI9IjUiICBjbGFzcz0iY2xyLWktc29saWQtLWJhZGdlZCBjbHItaS1zb2xpZC1wYXRoLTMtLWJhZGdlZCBjbHItaS1iYWRnZSIgLz5cbiAgICAgICAgJyksUi5DbHJT''@;'; put 'put ''aGFwZUFyY2hpdmU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDMySDdWMjJINVYzMmEyLDIsMCwwLDAsMiwySDI5YTIsMiwwLDAsMCwyLTJWMjJIMjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x''@;'; put 'put ''NCwyNGExLDEsMCwwLDAsMSwxaDZhMSwxLDAsMCwwLDAtMkgxNUExLDEsMCwwLDAsMTQsMjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNCwxOEg2VjE0aDRhMywzLDAsMCwxLS42OC0xLjg3czAtLjA5LDAt''@;'; put 'put ''LjEzSDUuNUExLjUsMS41LDAsMCwwLDQsMTMuNVYyMEgxNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNBMywzLDAsMCwxLDI2LDE0aDR2NEgyMmwtMiwySDMyVjEz''@;'; put 'put ''LjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMTgsMTkuMThsNi4zOC02LjM1QTEsMSwwLDEsMCwyMywxMS40MWwtNCwzLjk1VjNhMSwxLDAsMSwwLTIsMHYxMi40bC00''@;'; put 'put ''LTMuOTVhMSwxLDAsMCwwLTEuNDEsMS40MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE5LjQxLDIwLjYsMTgsMjJsLTEuNDEtMS40TDE2LDIwSDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjIwSDIwWk0yMiwyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDAsMSwwLTJoNkExLDEsMCwwLDEsMjIsMjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMwLjUsMTJIMjYuNjZzMCwuMDksMCwuMTNhMywzLDAsMCwx''@;'; put 'put ''LS44OCwyLjEyTDIyLDE4SDMyVjEzLjVBMS41LDEuNSwwLDAsMCwzMC41LDEyWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4yLDE0LjI1YTMsMywwLDAsMS0uODgtMi4xMnMwLS4wOSwwLS4xM0g1LjVBMS41LDEu''@;'; put 'put ''NSwwLDAsMCw0LDEzLjVWMThIMTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0zIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDE5LjE4bDYuMzgtNi4zNUExLDEsMCwxLDAsMjMsMTEuNDFsLTQsMy45NVYzYTEsMSwwLDEsMC0yLDB2MTIuNGwtNC0zLjk1YTEs''@;'; put 'put ''MSwwLDAsMC0xLjQxLDEuNDJaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC00IiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlVW5hcmNoaXZlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOSwzMkg3VjIySDVWMzJhMiwyLDAsMCwwLDIsMkgyOWEyLDIsMCwwLDAs''@;'; 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 ''MSwwLDAsMCwxMyw5LjU1WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZUNvbm5lY3Q9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDI4LjIzQTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxNC4xNWE2LjI1LDYu''@;'; put 'put ''MjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLDVIMjJhNi4yMiw2LjIyLDAsMCwwLDYuMjItNUgzNFpNMTcuMDgsMjJIMTQuMTVhNC4xNyw0LjE3LDAsMCwxLTQuMzEtNCw0LjE3LDQuMTcsMCwwLDEsNC4zMS00aDIuOTRaTTIyLDIySDE5VjE0aDNhNC4xNyw0''@;'; put 'put ''LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjIsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNywxMkgxNC4xNWE2LjI1LDYuMjUsMCwwLDAtNi4yMSw1SDJ2Mkg3LjkzYTYuMjIsNi4yMiww''@;'; put 'put ''LDAsMCw2LjIyLDVIMTdaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTI4LjIzLDE3QTYuMjUsNi4yNSwwLDAsMCwyMiwxMkgxOVYyNGgzYTYuMjIsNi4yMiwwLDAsMCw2LjIyLTVIMzRWMTdaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''c29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlRGlzY29ubmVjdD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTIuMTcsNkE2LjIxLDYuMjEsMCwwLDAsNiwxMUgyLjEzdjJINmE2LjIzLDYuMjMsMCwwLDAsNi4yMSw1SDE3VjZaTTE1LjEsMTZI''@;'; put 'put ''MTIuMTdhNC4yLDQuMiwwLDAsMS00LjMxLTQsNC4xNyw0LjE3LDAsMCwxLDQuMzEtNEgxNS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzMuOTIsMjNIMzAuMTRhNi4yNSw2LjI1LDAsMCwwLTYuMjEtNUgx''@;'; put 'put ''OXYySDE0YTEsMSwwLDEsMCwwLDJoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAsNi4yMi01aDMuNzZabS0xMCw1SDIxVjIwaDIuOTRhNC4xNyw0LjE3LDAsMCwxLDQuMzEsNEE0LjE3LDQuMTcsMCwwLDEsMjMuOTQsMjhaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiw2YTYuMjEsNi4yMSwwLDAsMC02LjIxLDVIMnYySDUuODNBNi4yMyw2LjIzLDAsMCwwLDEyLDE4SDE3VjZaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0''@;'; put 'put ''aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTMzLjc5LDIzSDMwLjE0YTYuMjUsNi4yNSwwLDAsMC02LjIxLTVIMTl2MkgxNGExLDEsMCwwLDAtMSwxLDEsMSwwLDAsMCwxLDFoNXY0SDE0YTEsMSwwLDAsMC0xLDEsMSwxLDAsMCwwLDEsMWg1djJoNC45NGE2LjIzLDYuMjMsMCwwLDAs''@;'; put 'put ''Ni4yMi01aDMuNjRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlTGluaz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTcuNiwyNC4zMmwtMi40NiwyLjQ0YTQsNCwwLDAsMS01LjYyLDAsMy45MiwzLjkyLDAsMCwx''@;'; put 'put ''LDAtNS41NWw0LjY5LTQuNjVhNCw0LDAsMCwxLDUuNjIsMCwzLjg2LDMuODYsMCwwLDEsMSwxLjcxQTIsMiwwLDAsMCwyMS4xLDE4bDEuMjktMS4yOGE1Ljg5LDUuODksMCwwLDAtMS4xNS0xLjYyLDYsNiwwLDAsMC04LjQ0LDBMOC4xLDE5Ljc5YTUuOTEsNS45MSwwLDAsMCwwLDguMzksNiw2''@;'; put 'put ''LDAsMCwwLDguNDQsMGwzLjY1LTMuNjJjLS4xNywwLS4zMywwLS41LDBBOCw4LDAsMCwxLDE3LjYsMjQuMzJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOC42MSw3LjgyYTYsNiwwLDAsMC04LjQ0LDBsLTMu''@;'; put 'put ''NjUsMy42MmMuMTcsMCwuMzMsMCwuNDksMGgwYTgsOCwwLDAsMSwyLjEuMjhsMi40Ni0yLjQ0YTQsNCwwLDAsMSw1LjYyLDAsMy45MiwzLjkyLDAsMCwxLDAsNS41NWwtNC42OSw0LjY1YTQsNCwwLDAsMS01LjYyLDAsMy44NiwzLjg2LDAsMCwxLTEtMS43MSwyLDIsMCwwLDAtLjI4LjIzbC0x''@;'; put 'put ''LjI5LDEuMjhhNS44OSw1Ljg5LDAsMCwwLDEuMTUsMS42Miw2LDYsMCwwLDAsOC40NCwwbDQuNjktNC42NWE1LjkyLDUuOTIsMCwwLDAsMC04LjM5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVVbmxpbms9KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUsNSwzLjU5LDYuNDFsOSw5TDguMSwxOS43OWE1LjkxLDUuOTEsMCwwLDAsMCw4LjM5LDYsNiwwLDAsMCw4LjQ0LDBMMjEsMjMuNzhsOC42Myw4LjYzTDMxLDMxWk0xNS4xMywyNi43NmE0LDQsMCwwLDEtNS42MiwwLDMuOTIsMy45MiwwLDAsMSww''@;'; put 'put ''LTUuNTVMMTQsMTYuNzlsNS41OCw1LjU4WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjEuNTMsOS4yMmE0LDQsMCwwLDEsNS42MiwwLDMuOTIsMy45MiwwLDAsMSwwLDUuNTVsLTQuNzksNC43NkwyMy43OCwy''@;'; put 'put ''MWw0Ljc5LTQuNzZhNS45Miw1LjkyLDAsMCwwLDAtOC4zOSw2LDYsMCwwLDAtOC40NCwwbC00Ljc2LDQuNzRMMTYuNzgsMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgJyksUi5DbHJTaGFwZUNsb3VkTmV0d29yaz0oMCxtLmNscklj''@;'; put 'put ''b25TVkcpKCc8cGF0aCBkPSJNMzAuNzEsMTUuMTh2LTFBMTEuMjgsMTEuMjgsMCwwLDAsMTkuNTYsMi44M2gtLjExYTExLjI4LDExLjI4LDAsMCwwLTExLDguOTMsNy40Nyw3LjQ3LDAsMCwwLDAsMTQuOTRIMjkuMTNhNS44Niw1Ljg2LDAsMCwwLDEuNTgtMTEuNTJaTTI5LjEzLDI0LjdIOC40''@;'; put 'put ''NmE1LjQ3LDUuNDcsMCwxLDEsMC0xMC45NGgxLjY5bC4xMS0uODdhOS4yNyw5LjI3LDAsMCwxLDE4LjQ1LDEuM3YxLjI4YzAsLjA5LDAsLjE4LDAsLjI3bC0uMDcsMS4xNS45NC4xMWEzLjg2LDMuODYsMCwwLDEtLjQzLDcuNzFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yOS41OCwzMS4xOEgxOC44NXYtMi40aC0ydjIuNEg2LjA4YTEsMSwwLDAsMCwwLDJoMjMuNWExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+XG4gICAgICAgICcpLFIu''@;'; put 'put ''Q2xyU2hhcGVDbG91ZFNjYWxlPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LjMyLDExLjExSDcuODRMOCwxMC4yNEE3LjE5LDcuMTksMCwwLDEsMTUuMDcsNGguMDdhNy4xNSw3LjE1LDAsMCwxLDQuNzEsMS44MywxMS4xLDExLjEsMCwwLDEsMy4wOS42NEE5LjE4LDkuMTgsMCwwLDAs''@;'; put 'put ''MTUuMTYsMmgtLjA5QTkuMiw5LjIsMCwwLDAsNi4xMyw5LjExLDYuMTUsNi4xNSwwLDAsMCwyLjMzLDE5Ljk1LDguMDksOC4wOSwwLDAsMSwzLDE3LjcxYTQuMTIsNC4xMiwwLDAsMS0uODEtMi40NEE0LjE2LDQuMTYsMCwwLDEsNi4zMiwxMS4xMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTEwLjQsMTYuOTFoMS41MkwxMiwxNmE3LjE5LDcuMTksMCwwLDEsNy4xMi02LjI1aC4wN2E3LjE3LDcuMTcsMCwwLDEsNS43LDIuOTIsMTEuMDUsMTEuMDUsMCwwLDEsMi43Mi43Nyw5LjIsOS4yLDAsMCwwLTgu''@;'; put 'put ''NC01LjY5aC0uMDlhOS4yLDkuMiwwLDAsMC04Ljk0LDcuMTIsNi4xNSw2LjE1LDAsMCwwLTMuNjQsMTEsOC4xMSw4LjExLDAsMCwxLC43OS0yLDQuMTQsNC4xNCwwLDAsMSwzLTdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGQ9Ik0zMi40MiwyNC40N3YtLjYyYTkuMTgsOS4xOCwwLDAsMC0xOC4xMy0yLjE2QTYuMTYsNi4xNiwwLDAsMCwxNC40OCwzNEgzMWE0Ljg4LDQuODgsMCwwLDAsMS40Ni05LjUzWk0zMSwzMkgxNC40OGE0LjE2LDQuMTYsMCwxLDEsMC04LjMySDE2bC4xMS0uODdhNy4xOSw3LjE5LDAs''@;'; put 'put ''MCwxLDcuMTItNi4yNWguMDdhNy4yMSw3LjIxLDAsMCwxLDcuMTIsNy4yNXYxYzAsLjA3LDAsLjEzLDAsLjJsLS4wNywxLjExLjk0LjExQTIuODgsMi44OCwwLDAsMSwzMSwzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPlxuICAgICAgICAnKSxSLkNs''@;'; put 'put ''clNoYXBlQ2xvdWRUcmFmZmljPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi41NCwyMC44MmEuODguODgsMCwwLDAtLjg4LS44OEgyMC43NWwxLjEtMS4xQS44OC44OCwwLDAsMCwyMC42LDE3LjZsLTMuMjEsMy4yMkwyMC42LDI0YS44OC44OCwwLDEsMCwxLjI1LTEuMjRMMjAuNzYs''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVEZXBsb3k9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRo''@;'; put 'put ''LTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAsMCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgZD0iTTExLjU0LDEwLjczbC05LDUuMTdhMSwxLDAsMCwwLS41Ljg3djExYTEsMSwwLDAsMCwuNS44N2w5LDUuMTVhMSwxLDAsMCwwLDEsMGw5LTUuMTVhMSwxLDAsMCwwLC41LS44N3YtMTFhMSwxLDAsMCwwLS41LS44N2wtOS01LjE3QTEsMSwwLDAsMCwxMS41NCwxMC43M1pN''@;'; put 'put ''MTEsMzEuMDhsLTctNFYxOC40NGw3LDRaTTEyLDIxLDQuODEsMTYuODcsMTIsMTIuNzhsNy4yMSw0LjEyWm04LDYuMDktNyw0VjIyLjQ0bDctNFoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMywySDIyLjFhMSwxLDAs''@;'; put 'put ''MCwwLDAsMmg4LjUzbC04LjgyLDlhMSwxLDAsMSwwLDEuNDMsMS40TDMyLDUuNDZWMTMuOWExLDEsMCwwLDAsMiwwVjNBMSwxLDAsMCwwLDMzLDJaIi8+XG4gICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiBkPSJNMTIuNDYsMTAuNzNhMSwx''@;'; put 'put ''LDAsMCwwLTEsMGwtOC42OCw1TDEyLDIxbDkuMTktNS4yNloiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiIGQ9Ik0yLDI3LjczYTEsMSwwLDAsMCwuNS44N0wxMSwzMy40NnYtMTFMMiwxNy4yOFoiLz5cbiAgICAgICAgICAgIDxw''@;'; put 'put ''YXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTQiIGQ9Ik0xMywzMy40Nmw4LjUtNC44NmExLDEsMCwwLDAsLjUtLjg3VjE3LjI5bC05LDUuMTVaIi8+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVIZWxpeD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWkt''@;'; 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 ''MjQuMzFsNi0zLjg4QS45MS45MSwwLDEsMSwyNSwyMmwtNiwzLjg4YS45MS45MSwwLDAsMS0xLjI2LS4yN1pNMjksMjQuMzRsLTksNS43OGEuOTEuOTEsMCwxLDEtMS0xLjUzbDktNS43OGEuOTEuOTEsMCwxLDEsMSwxLjUzWiIvPlxuICAgICAgICAnKSxSLkNsclNoYXBlRmxhc2s9KDAsbS5j''@;'; put 'put ''bHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjQzLDI3LjI4LDIzLDE0Ljg0VjRoMWExLDEsMCwwLDAsMC0ySDEyYTEsMSwwLDAsMCwwLDJoMVYxNC44NEw0LjUxLDI3LjM2QTQuMjksNC4yOSwwLDAsMCw1LDMyLjgsNC4zOCw0LjM4LDAsMCwwLDguMTUsMzRIMjhhNC4yNCw0LjI0LDAsMCwwLDMu''@;'; put 'put ''NDItNi43MlpNMjkuODUsMzFhMi42MiwyLjYyLDAsMCwxLTIsMUg4YTIuMiwyLjIsMCwwLDEtMi4wNi0xLjQxLDIuNjgsMi42OCwwLDAsMSwuMjktMi4xN2wzLTQuNDQsMTQsMC0xLjMxLTJIMTAuNTdMMTUsMTUuNDZWNGg2VjE1LjQ2bDguODQsMTMuMDVBMi4yMywyLjIzLDAsMCwxLDI5Ljg1''@;'; put 'put ''LDMxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMzEuNDksMjcuNCwyMywxNC45NFY0aDFhMSwxLDAsMCwwLDAtMkgxMi4wOGExLDEsMCwwLDAsMCwySDEzVjE0Ljk0TDQuNTgsMjcuMzFhNC4zMSw0LjMxLDAs''@;'; put 'put ''MCwwLS43OCwzQTQuMjMsNC4yMywwLDAsMCw4LDM0SDI3Ljg2QTQuMzYsNC4zNiwwLDAsMCwzMSwzMi44LDQuMjMsNC4yMywwLDAsMCwzMS40OSwyNy40Wk0xNSwxNS40OVY0aDZWMTUuNDlMMjYuMTUsMjNIOS44NVoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+''@;'; put 'put ''XG4gICAgICAgICcpLFIuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNC42OCwxNC44MWE2Ljc2LDYuNzYsMCwxLDEsNi43Ni02Ljc1QTYuNzcsNi43NywwLDAsMSwxNC42OCwxNC44MVptMC0xMS41MWE0Ljc2LDQuNzYsMCwxLDAsNC43Niw0Ljc2''@;'; 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+XG4gICAgICAgICcpLFIuQ2xyU2hhcGVIYXJkRHJpdmU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDhhMiwyLDAsMCwwLTItMkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0y''@;'; 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 ''aC0xIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlSGFyZERyaXZlRGlza3M9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDUuNzRBMS43NCwxLjc0LDAsMCwwLDI0LjI2LDRIMy43NEExLjc0LDEuNzQsMCwwLDAsMiw1Ljc0VjIwLjI2QTEuNzQsMS43NCwwLDAsMCwzLjc0LDIySDRW''@;'; 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 ''IiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlTlZNZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjcsMjJWMTRhMiwyLDAsMCwwLTItMkgxMWEyLDIsMCwwLDAtMiwydjhhMiwyLDAsMCwwLDIsMkgyNUEyLDIsMCwwLDAsMjcsMjJaTTExLDE0SDI1djhIMTFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSI2IiB3aWR0aD0iNCIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjI1LjAxIiB5PSI2''@;'; put 'put ''IiB3aWR0aD0iMS45NyIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LjgsOEgxNi44N1Y2aC0xMUw3Ljc4LDQuMDhhMSwxLDAsMCwwLDAtMS40MiwxLDEsMCwwLDAtMS40MSwwTDIsNyw2LjM3''@;'; put 'put ''LDExLjRhMSwxLDAsMCwwLDEuNDEsMCwxLDEsMCwwLDAsMC0xLjQxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+XG4gICAgICAgICAgICA8cGF0aCBkPSJNMjkuNjEsMjQuNjhhMSwxLDAsMCwwLTEuNDEsMCwxLDEsMCwwLDAsMCwxLjQyTDMwLjEsMjhI''@;'; put 'put ''MTl2MkgzMC4ybC0yLDJhMSwxLDAsMCwwLDAsMS40MSwxLDEsMCwwLDAsLjcuMjksMSwxLDAsMCwwLC43MS0uMjlMMzQsMjkuMDVaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz5cbiAgICAgICAgICAgIDxyZWN0IHg9IjEzIiB5PSIyOCIgd2lkdGg9IjQi''@;'; put 'put ''IGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PSI5IiB5PSIyOCIgd2lkdGg9IjEuOTciIGhlaWdodD0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTciIC8+XG4gICAg''@;'; put 'put ''ICAgICcpLFIuQ2xyU2hhcGVTU0Q9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDZINEEyLDIsMCwwLDAsMiw4VjI4YTIsMiwwLDAsMCwyLDJIMzJhMiwyLDAsMCwwLDItMlY4QTIsMiwwLDAsMCwzMiw2Wm0wLDIySDRWOEgzMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; 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 ''aC0yIiAvPlxuICAgICAgICAnKSxSLkNsclNoYXBlQmx1ZXRvb3RoPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yNi42NCwyNS4yNywxOSwxNy41MywxOSwzLDI1LjIxLDkuNGwtNS42NSw1Ljc5TDIxLDE2LjYybDUuNjgtNS44MmEyLDIsMCwwLDAsMC0yLjc4TDIwLjQ4LDEuN0EyLjA4''@;'; put 'put ''LDIuMDgsMCwwLDAsMTguODUsMSwyLDIsMCwwLDAsMTcsM1YxNS4zOEwxMC4wNSw4LjI3QTEsMSwwLDAsMCw4LjYyLDkuNjZMMTYuNzksMTgsOS4wNiwyNmExLDEsMCwwLDAsMCwxLjQxLDEsMSwwLDAsMCwuNy4yOSwxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzM2EyLjA3LDIuMDcsMCww''@;'; put 'put ''LDAsLjcxLDEuNjJBMiwyLDAsMCwwLDE5LDM1YTEuOTQsMS45NCwwLDAsMCwxLjQyLS42bDYuMjMtNi4zOEEyLDIsMCwwLDAsMjYuNjQsMjUuMjdaTTE5LDMzLjA1VjIwLjI5bDYuMjEsNi4zNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPlxuICA8cGF0''@;'; put 'put ''aCBkPSJNMjYuNTIsMjQuNTJsLTUuNjUtNS44My0xLjQ2LTEuNXYtMTJMMjMuNzksOS43bC0zLjYsMy43MSwyLjI0LDIuMjksNC4wOS00LjIyYTIuNTQsMi41NCwwLDAsMCwwLTMuNTZMMjAuNTcsMS43OEEyLjU0LDIuNTQsMCwwLDAsMTYuMiwzLjU1VjEzLjg2bC01LjUzLTUuN2ExLjYsMS42''@;'; put 'put ''LDAsMSwwLTIuMywyLjIzTDE1Ljc1LDE4bC03LDcuMTlhMS42LDEuNiwwLDAsMCwwLDIuMjYsMS42MywxLjYzLDAsMCwwLDEuMTIuNDUsMS41OCwxLjU4LDAsMCwwLDEuMTUtLjQ5bDUuMTEtNS4yN1YzMi40NWEyLjUzLDIuNTMsMCwwLDAsMS41OSwyLjM2LDIuNDQsMi40NCwwLDAsMCwuOTUu''@;'; put 'put ''MTksMi41NiwyLjU2LDAsMCwwLDEuODMtLjc3bDUuOTUtNi4xNUEyLjU0LDIuNTQsMCwwLDAsMjYuNTIsMjQuNTJaTTE5LjQsMzAuODNWMjEuNzdsNC4zOSw0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlQmx1ZXRvb3RoT2ZmPSgw''@;'; put 'put ''LG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xOSwzLDI1LjIyLDkuNGwtNS42Niw1LjhMMjEsMTYuNjNsNS42OC01LjgzYTIsMiwwLDAsMCwwLTIuNzhMMjAuNDgsMS43QTIsMiwwLDAsMCwxOC44NSwxLDIsMiwwLDAsMCwxNywzdjExLjRsMiwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTQuNzcsNSwzLjM2LDYuNDIsMTUuODksMTksOS4wNiwyNmExLDEsMCwwLDAsLjcxLDEuNywxLDEsMCwwLDAsLjcyLS4zMUwxNywyMC42OFYzMi45NGEyLjA4LDIuMDgsMCwwLDAsLjcxLDEuNjNBMiwyLDAsMCwwLDE5LDM1YTIsMiwwLDAs''@;'; put 'put ''MCwxLjQyLS42bDUuNDEtNS41NCwzLjU0LDMuNTNMMzAuNzcsMzFaTTE5LDMzLjA1di0xMWw1LjQxLDUuNDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTkuMzEsNS4xNywyMy43LDkuN2wtMy41OSwzLjcxLDIuMjQsMi4yOSw0LjA5''@;'; put 'put ''LTQuMjJhMi41NiwyLjU2LDAsMCwwLDAtMy41NmwtNi02LjE0YTIuNTEsMi41MSwwLDAsMC0yLjc3LS41OSwyLjU0LDIuNTQsMCwwLDAtMS42LDIuMzZ2MTBsMy4yMSwzLjIxWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNNC41LDUsMy4wOSw2''@;'; put 'put ''LjQyLDE1LjE3LDE4LjUxLDguNywyNS4xOUExLjYsMS42LDAsMCwwLDkuODUsMjcuOSwxLjU3LDEuNTcsMCwwLDAsMTEsMjcuNDFsNS4xMS01LjI3VjMyLjQ1YTIuNTQsMi41NCwwLDAsMCwxLjYsMi4zNiwyLjQ0LDIuNDQsMCwwLDAsLjk1LjE5LDIuNTUsMi41NSwwLDAsMCwxLjgyLS43N2w1''@;'; put 'put ''LjEyLTUuMjksMy40OSwzLjQ4TDMwLjUsMzFaTTE5LjgxLDMwLjgzVjIyLjY1bDQsNFoiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZVByb2Nlc3NPblZNPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCww''@;'; put 'put ''LDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0LjQ4LDAsMCwwLDI3LjM3LDcuMzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0''@;'; put 'put ''TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAsMCwzMy40OSwyNi4yOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik00LjMxLDE3LjA4YTEuMDYsMS4wNiwwLDAsMCwuNDQuMTYsMSwxLDAs''@;'; put 'put ''MCwwLDEuMTItLjg1QTEyLjIxLDEyLjIxLDAsMCwxLDE4LjY5LDUuODRMMTYuNDUsNy4zN2ExLDEsMCwwLDAsLjQ3LDEuNzlBMSwxLDAsMCwwLDE3LjU2LDlsNS4zMy0zLjY2TDE4LjMzLjc2YTEsMSwwLDEsMC0xLjM5LDEuMzhsMS43LDEuN0ExNC4yLDE0LjIsMCwwLDAsMy44OSwxNi4xMiwx''@;'; put 'put ''LDEsMCwwLDAsNC4zMSwxNy4wOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMS43MywyOS45M2ExMiwxMiwwLDAsMS00Ljg0LjUxLDEyLjMsMTIuMywwLDAsMS05LjU3LTYuM2wyLjQ5LjkzYTEsMSwwLDAsMCwuNjktMS44NGwtNC41''@;'; put 'put ''OS0xLjdoMEw0LjQ0LDIxLDMuMzMsMjcuMzVhMSwxLDAsMCwwLC43OSwxLjEzbC4xNywwYTEsMSwwLDAsMCwxLS44MWwuNDItMi40YTE0LjMsMTQuMywwLDAsMCwxMSw3LjE0LDEzLjkxLDEzLjkxLDAsMCwwLDUuNjMtLjYsMSwxLDAsMCwwLS42LTEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMiwxM0gxNGExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''NCIgLz4nKSxSLkNsclNoYXBlQXNzaWduVXNlcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTdhNy40Niw3LjQ2LDAsMSwwLTcuNDUtNy40NkE3LjQ2LDcuNDYsMCwwLDAsMTgsMTdaTTE4LDQuMDdhNS40Niw1LjQ2LDAsMSwxLTUuNDUsNS40NUE1LjQ2LDUuNDYsMCwwLDEsMTgs''@;'; 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 ''LXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxSLkNsclNoYXBlQXRvbT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTgsMTQuMDVhNCw0LDAsMSwwLDQsNEE0LDQsMCwwLDAsMTgsMTQuMDVabTAsNi40NGEyLjQyLDIuNDIsMCwxLDEsMi40Mi0yLjQyQTIuNDIsMi40MiwwLDAs''@;'; 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 ''ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlQmFyQ29kZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNNSw3QTEsMSwwLDAsMCw0LDhWMzBhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw1LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSw3QTEsMSwwLDAsMCw4LDhWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCw5LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTMsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMTMsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0xNyw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwxNyw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTIxLDdhMSwxLDAsMCwwLTEsMVYyNmExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDIxLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMjUsN2ExLDEsMCwwLDAtMSwxVjI2YTEsMSwwLDAs''@;'; put 'put ''MCwyLDBWOEExLDEsMCwwLDAsMjUsN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPjxwYXRoIGQ9Ik0yOSw3YTEsMSwwLDAsMC0xLDFWMjZhMSwxLDAsMCwwLDIsMFY4QTEsMSwwLDAsMCwyOSw3WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTciIC8+PHBhdGggZD0iTTMzLDdhMSwxLDAsMCwwLTEsMVYzMGExLDEsMCwwLDAsMiwwVjhBMSwxLDAsMCwwLDMzLDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtOCIgLz4nKSxSLkNsclNoYXBlQ2REdmQ9KDAsbS5jbHJJY29uU1ZHKSgnPHBh''@;'; 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+JyksUi5DbHJTaGFwZUNvbnRhaW5lcj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzIsMzBINGEyLDIsMCwwLDEtMi0yVjhBMiwyLDAsMCwxLDQsNkgzMmEyLDIsMCwwLDEsMiwyVjI4QTIsMiwwLDAsMSwzMiwzMFpNNCw4VjI4SDMyVjhaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNOSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44LjgsMCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSw5LDI1LjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJN''@;'; put 'put ''MTQuOTIsMjUuM2EuOC44LDAsMCwxLS44LS44di0xM2EuOC44LDAsMCwxLDEuNiwwdjEzQS44LjgsMCwwLDEsMTQuOTIsMjUuM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0yMSwyNS4zYS44LjgsMCwwLDEtLjgtLjh2LTEzYS44Ljgs''@;'; put 'put ''MCwwLDEsMS42LDB2MTNBLjguOCwwLDAsMSwyMSwyNS4zWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTI3LDI1LjNhLjguOCwwLDAsMS0uOC0uOHYtMTNhLjguOCwwLDAsMSwxLjYsMHYxM0EuOC44LDAsMCwxLDI3LDI1LjNaIiBjbGFz''@;'; put 'put ''cz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIgLz48cGF0aCBkPSJNMzIsNkg0QTIsMiwwLDAsMCwyLDhWMjhhMiwyLDAsMCwwLDIsMkgzMmEyLDIsMCwwLDAsMi0yVjhBMiwyLDAsMCwwLDMyLDZaTTkuNjMsMjQuMjNhLjc5Ljc5LDAsMCwxLS44MS43N0EuNzkuNzksMCww''@;'; put 'put ''LDEsOCwyNC4yM1YxMS43N0EuNzkuNzksMCwwLDEsOC44MiwxMWEuNzkuNzksMCwwLDEsLjgxLjc3Wm02LDBhLjc5Ljc5LDAsMCwxLS44Mi43Ny43OS43OSwwLDAsMS0uODEtLjc3VjExLjc3YS43OS43OSwwLDAsMSwuODEtLjc3Ljc5Ljc5LDAsMCwxLC44Mi43N1ptNi4yMSwwYS43OS43OSww''@;'; put 'put ''LDAsMS0uODIuNzcuNzkuNzksMCwwLDEtLjgxLS43N1YxMS43N2EuNzkuNzksMCwwLDEsLjgxLS43Ny43OS43OSwwLDAsMSwuODIuNzdabTYuMTIsMGEuNzkuNzksMCwwLDEtLjgyLjc3Ljc5Ljc5LDAsMCwxLS44MS0uNzdWMTEuNzdhLjc5Ljc5LDAsMCwxLC44MS0uNzcuNzkuNzksMCwwLDEs''@;'; put 'put ''LjgyLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlQ29udGFpbmVyVm9sdW1lPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik04LDE3LjU4YTMyLjM1LDMyLjM1LDAsMCwwLDYuMy45Miw0LjEzLDQuMTMsMCwwLDEsLjkyLTEuMzcs''@;'; 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+JyksUi5DbHJTaGFwZUZpbGVTaGFyZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAsOUgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOWEyLDIsMCwwLDAsMiwySDMwYTIsMiwwLDAsMCwyLTJWMTFB''@;'; put 'put ''MiwyLDAsMCwwLDMwLDlabTAsMjBINlYxM2g3LjMxYTIsMiwwLDAsMCwyLTJINlY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjEuOTEsMjIuNDhhMi4wNiwyLjA2LDAs''@;'; put 'put ''MCwwLTEuNDQuNjJsLTUuNzItMi42NlYyMGw1LjY2LTIuNjVhMi4wOCwyLjA4LDAsMSwwLC4wNi0yLjk0LDIuMTIsMi4xMiwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVsLjA4LS4wOCw1LjY3LDIuNjZ2LjNhMi4wOSwyLjA5LDAsMSwwLDIu''@;'; put 'put ''MDgtMi4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTMwLDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjlhMiwyLDAsMCwwLDIsMkgzMGEyLDIsMCwwLDAsMi0yVjExQTIsMiwwLDAs''@;'; put 'put ''MCwzMCw5Wk02LDdoNi40OWwyLjcyLDRINlpNMjEuOTQsMjYuNjRhMi4wOSwyLjA5LDAsMCwxLTIuMTEtMi4wNmwwLS4zLTUuNjctMi42Ni0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMDgsMi4wOCwwLDEsMSwuNTgsMS40NkwxNC43NSwyMHYuNDds''@;'; put 'put ''NS43MiwyLjY2YTIuMDcsMi4wNywwLDEsMSwxLjQ3LDMuNTRaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVRckNvZGU9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTUuNiw0QTEuNiwxLjYsMCwwLDAsNCw1LjZWMTJoOFY0Wk0xMCwx''@;'; 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+JyksUi5DbHJTaGFwZVVzYj0oMCxtLmNsckljb25T''@;'; 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 ''MSIgLz4nKSxSLkNsclNoYXBlUmFkYXI9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLDE4YzAsNy43LTYuMywxNC0xNCwxNGMtNy43LDAtMTQtNi4zLTE0LTE0QzQsMTAuNiw5LjcsNC41LDE3LjEsNHYzLjdjLTUuNywwLjUtOS45LDUuNS05LjQsMTEuMnM1LjUsOS45LDExLjIsOS40''@;'; put 'put ''XG5cdGM1LjMtMC41LDkuNC00LjksOS40LTEwLjNoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zcy04LjMtMy43LTguMy04LjNjMC00LjIsMy4xLTcuOCw3LjMtOC4zdjQuNGMtMS44LDAuNC0zLjEsMi0zLjEsMy45XG5cdGMwLDIuMiwxLjgsNCw0LDRzNC0xLjgsNC00YzAtMS44LTEuMy0zLjQt''@;'; put 'put ''My0zLjhWMi4xQzE4LjYsMiwxOC4zLDIsMTgsMkM5LjIsMiwyLDkuMiwyLDE4czcuMiwxNiwxNiwxNnMxNi03LjIsMTYtMTZIMzJ6IE0yMCwxOFxuXHRjMCwxLjEtMC45LDItMiwycy0yLTAuOS0yLTJzMC45LTIsMi0yUzIwLDE2LjksMjAsMTh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzIsMThjMCw3LjctNi4yLDE0LTE0LDE0UzQsMjUuOCw0LDE4YzAtNy40LDUuNy0xMy41LDEzLjEtMTR2My43Yy01LjcsMC41LTkuOCw1LjUtOS4zLDExLjJzNS41LDkuOCwxMS4yLDkuM1xuXHRcdGM1LjMtMC41LDkuMy00LjksOS4zLTEw''@;'; put 'put ''LjJoLTJjMCw0LjYtMy43LDguMy04LjMsOC4zUzkuNywyMi42LDkuNywxOGMwLTQuMiwzLjItNy44LDcuMy04LjJ2NC40Yy0yLjEsMC42LTMuNCwyLjctMi45LDQuOVxuXHRcdGMwLjYsMi4xLDIuNywzLjQsNC45LDIuOWMyLjEtMC42LDMuNC0yLjcsMi45LTQuOWMtMC40LTEuNC0xLjUtMi41''@;'; put 'put ''LTIuOS0yLjlWMmMtMC40LDAtMC43LDAtMS4xLDBjLTguOCwwLTE2LDcuMi0xNiwxNlxuXHRcdGMwLDguOCw3LjIsMTYsMTYsMTZzMTYtNy4yLDE2LTE2YzAsMCwwLDAsMCwwSDMyeiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlSW5kdWN0''@;'; put 'put ''b3I9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjMxLDI1LjgxYy0xLjc1LDAtMy0yLjQ5LTMtNmExMi43OSwxMi43OSwwLDAsMSwxLjcyLTYuNywyLjU3LDIuNTcsMCwwLDAtMy43OSwwQTEyLjc5LDEyLjc5LDAsMCwxLDIxLDE5Ljc2YzAsMy41Ni0xLjIzLDYtMyw2cy0zLTIuNDkt''@;'; put 'put ''My02YTEyLjc5LDEyLjc5LDAsMCwxLDEuNzItNi43LDIuNTcsMi41NywwLDAsMC0zLjc5LDAsMTIuNzksMTIuNzksMCwwLDEsMS43Miw2LjdjMCwzLjU2LTEuMjMsNi0zLDZzLTMtMi40OS0zLTZhMTIuODgsMTIuODgsMCwwLDEsMS43MS02LjcsMi43LDIuNywwLDAsMC0xLjg5LS44N0M3LjEs''@;'; put 'put ''MTIuMTksNS42OSwxMy43LDUsMTZsLS4yMy43SDJhMSwxLDAsMCwxLDAtMkgzLjI5YzEuMS0yLjgzLDMuMDYtNC41NSw1LjI0LTQuNTVhNC42Nyw0LjY3LDAsMCwxLDMuMTYsMS4zMiw0LjYyLDQuNjIsMCwwLDEsMy4xNS0xLjMyQTQuNjUsNC42NSwwLDAsMSwxOCwxMS41MWE0LjQzLDQuNDMs''@;'; put 'put ''MCwwLDEsNi4zMSwwLDQuNjcsNC42NywwLDAsMSwzLjE2LTEuMzJjMi4xOCwwLDQuMTQsMS43Miw1LjI0LDQuNTVIMzRhMSwxLDAsMCwxLDAsMkgzMS4yOGwtLjIzLS43Yy0uNzQtMi4zNC0yLjE1LTMuODUtMy41OC0zLjg1YTIuNywyLjcsMCwwLDAtMS44OS44NywxMi44OCwxMi44OCwwLDAs''@;'; put 'put ''MSwxLjcxLDYuN0MyNy4yOSwyMy4zMiwyNi4wNywyNS44MSwyNC4zMSwyNS44MVpNMTgsMTQuOTNhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEuNzEsMCwwLDAsMTgsMTQuOTNabTYuMzEsMGExMS43MSwxMS43''@;'; put 'put ''MSwwLDAsMC0xLDQuODNjMCwyLjU0LjY2LDMuNzUsMSw0LC4zMi0uMjcsMS0xLjQ4LDEtNEExMS43MSwxMS43MSwwLDAsMCwyNC4zMSwxNC45M1ptLTEyLjYyLDBhMTEuNzEsMTEuNzEsMCwwLDAtMSw0LjgzYzAsMi41NC42NiwzLjc1LDEsNCwuMzItLjI3LDEtMS40OCwxLTRBMTEuNzEsMTEu''@;'; put 'put ''NzEsMCwwLDAsMTEuNjksMTQuOTNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlUmVzaXN0b3I9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LjQzLDI2LjM0aDBBMS40NywxLjQ3LDAsMCwxLDI4LDI1LjIyTDI0Ljg2LDEz''@;'; put 'put ''LjE1LDIxLjc0LDI1LjIyYTEuNDksMS40OSwwLDAsMS0xLjQ1LDEuMTJoMGExLjQ5LDEuNDksMCwwLDEtMS40Ni0xLjEyTDE1LjcxLDEzLjE1LDEyLjYsMjUuMjJhMS41MSwxLjUxLDAsMCwxLTIuOTEsMEw2LjU3LDEzLjE1LDUuMjIsMTguMzdIMmExLDEsMCwwLDEsMC0ySDMuNjdsMS40NS01''@;'; put 'put ''LjU5QTEuNDgsMS40OCwwLDAsMSw2LjU3LDkuNjZoMEExLjQ3LDEuNDcsMCwwLDEsOCwxMC43OGwzLjEyLDEyLjA3LDMuMTItMTIuMDdhMS40OSwxLjQ5LDAsMCwxLDEuNDUtMS4xMmgwYTEuNDksMS40OSwwLDAsMSwxLjQ2LDEuMTJsMy4xMiwxMi4wNywzLjEyLTEyLjA3YTEuNSwxLjUsMCww''@;'; put 'put ''LDEsMi45LDBsMy4xMiwxMi4wNywxLjM1LTUuMjJIMzRhMSwxLDAsMCwxLDAsMkgzMi4zM2wtMS40NSw1LjU5QTEuNDgsMS40OCwwLDAsMSwyOS40MywyNi4zNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVDYXBhY2l0b3I9KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE1LDM0LjA2YTEsMSwwLDAsMS0xLTFWMy4xNWExLDEsMCwxLDEsMiwwVjMzLjA2QTEsMSwwLDAsMSwxNSwzNC4wNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yMSwzNC4wNmExLDEsMCww''@;'; put 'put ''LDEtMS0xVjMuMTVhMSwxLDAsMSwxLDIsMFYzMy4wNkExLDEsMCwwLDEsMjEsMzQuMDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMTQuNDYsMTlIM2ExLDEsMCwwLDEsMC0ySDE0LjQ2YTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xy''@;'; put 'put ''LWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzMsMTlIMjEuNTRhMSwxLDAsMCwxLDAtMkgzM2ExLDEsMCwwLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksUi5DbHJTaGFwZVNxdWlkPSgwLG0uY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xOCw3YTEsMSwwLDAsMS0xLTFWMy4xOWExLDEsMCwwLDEsMiwwVjZBMSwxLDAsMCwxLDE4LDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMTgsMzRhMSwxLDAsMCwxLTEtMVYzMGExLDEsMCwwLDEsMiww''@;'; put 'put ''djNBMSwxLDAsMCwxLDE4LDM0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTcuNDEsMThsMS43OC0xLjc3YTEsMSwwLDEsMC0xLjQyLTEuNDJMNiwxNi41OSw0LjIzLDE0LjgxYTEsMSwwLDEsMC0xLjQyLDEuNDJMNC41OSwxOCwyLjgx''@;'; put 'put ''LDE5Ljc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUw2LDE5LjQxbDEuNzcsMS43OGExLDEsMCwwLDAsMS40MiwwLDEsMSwwLDAsMCwwLTEuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBk''@;'; put 'put ''PSJNNiwxMy43NmwuMzYtLjM2YTMsMywwLDAsMSwyLjExLS44OCwxMSwxMSwwLDAsMSwxOSwwLDMsMywwLDAsMSwyLjEyLjg4bC4zNi4zNi4yLS4yYTEzLDEzLDAsMCwwLTI0LjQsMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPjxwYXRoIGQ9Ik0zMCwy''@;'; put 'put ''Mi4yNGwtLjM2LjM2YTMsMywwLDAsMS0yLjEyLjg4LDExLDExLDAsMCwxLTE5LDAsMywzLDAsMCwxLTIuMTItLjg4TDYsMjIuMjRsLS4yLjJhMTMsMTMsMCwwLDAsMjQuNCwwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQxLDE4''@;'; put 'put ''bDEuNzgtMS43N2ExLDEsMCwwLDAtMS40Mi0xLjQyTDMwLDE2LjU5bC0xLjc3LTEuNzhhMSwxLDAsMSwwLTEuNDIsMS40MkwyOC41OSwxOGwtMS43OCwxLjc3YTEsMSwwLDAsMCwwLDEuNDIsMSwxLDAsMCwwLC43MS4yOSwxLDEsMCwwLDAsLjcxLS4yOUwzMCwxOS40MWwxLjc3LDEuNzhhMSwx''@;'; put 'put ''LDAsMCwwLDEuNDIsMCwxLDEsMCwwLDAsMC0xLjQyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiIC8+JyksUi5DbHJTaGFwZUhvc3RHcm91cD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjEuMDgsMzRoLTE0QTEuMDgsMS4wOCwwLDAsMSw2LDMzVjEy''@;'; 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 ''IiBkPSJNMjQuMDgsMjAgTDIyLjA4LDIwIEwyMi4wOCwyIEwxMS4wOCwyIEwxMS4wOCwwIEwyMy4wOCwwIEMyMy42MzIyODQ3LDAgMjQuMDgsMC40NDc3MTUyNSAyNC4wOCwxIEwyNC4wOCwyMCBaIiAvPicpLFIuQ2xyU2hhcGVTdG9yYWdlQWRhcHRlcj0oMCxtLmNsckljb25TVkcpKCc8cGF0''@;'; put 'put ''aCBkPSJNNi4wNiwzMGExLDEsMCwwLDEtMS0xVjhoLTJhMSwxLDAsMCwxLDAtMmg0VjI5QTEsMSwwLDAsMSw2LjA2LDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTMwLjA2LDI3aC0yNVY5aDI1YTMsMywwLDAsMSwzLDNWMjRB''@;'; put 'put ''MywzLDAsMCwxLDMwLjA2LDI3Wm0tMjMtMmgyM2ExLDEsMCwwLDAsMS0xVjEyYTEsMSwwLDAsMC0xLTFoLTIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHJlY3QgeD0iMjIuMDYiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSIyIiBjbGFzcz0i''@;'; put 'put ''Y2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIyMi4wNiIgeT0iMTQiIHdpZHRoPSI2IiBoZWlnaHQ9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0xOS4wNiwyMmgtOFYyMGg3VjE0aDJ2''@;'; put 'put ''N0ExLDEsMCwwLDEsMTkuMDYsMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLFIuQ2xyU2hhcGVOb2RlR3JvdXA9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMzLjUzLDIxLjU4bC00Ljk0LTIuODNWMTMuMDlhMSwxLDAsMCwwLS41MS0uODdM''@;'; put 'put ''MjIuNjQsOS4xYTEsMSwwLDAsMC0xLDBMMTYuMiwxMi4yMmExLDEsMCwwLDAtLjUxLjg3djUuNjZsLTQuOTQsMi44M2ExLDEsMCwwLDAtLjUuODd2Ni4yNGExLDEsMCwwLDAsLjUuODZsNS40NSwzLjEyYTEsMSwwLDAsMCwxLDBsNC45NS0yLjgzLDQuOTUsMi44M2ExLDEsMCwwLDAsLjUuMTQs''@;'; put 'put ''MSwxLDAsMCwwLC40OS0uMTRsNS40NS0zLjEyYTEsMSwwLDAsMCwuNS0uODZWMjIuNDVBMSwxLDAsMCwwLDMzLjUzLDIxLjU4Wk0yMi4xNCwxMS4xMmw0LjQ1LDIuNTVWMTlsLTQuNDYsMi41Ni00LjQ0LTIuNlYxMy42N1pNMTYuNjksMzAuNjVsLTQuNDQtMi41NFYyM2w0LjY4LTIuNjgsNC40''@;'; put 'put ''LDIuNTdWMjhaTTMyLDI4LjExbC00LjQ0LDIuNTRMMjIuOTMsMjhWMjIuOTNsNC40Ni0yLjU3TDMyLDIzWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTcsMjcuNDNhMSwxLDAsMCwxLTEtMVYxOS45QTEsMSwwLDAsMSw2LjUsMTls''@;'; put 'put ''NC45NS0yLjgzVjEwLjU0YTEsMSwwLDAsMSwuNS0uODdsNS4yMS0zYTEsMSwwLDAsMSwxLjM3LjM3LDEsMSwwLDAsMS0uMzgsMS4zN2wtNC43LDIuNjh2NS42NmExLDEsMCwwLDEtLjUxLjg3TDgsMjAuNDh2NS45NUExLDEsMCwwLDEsNywyNy40M1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zLDI1LjA1YTEsMSwwLDAsMS0xLTFWMTcuNTNhMSwxLDAsMCwxLC41LS44Nmw1LTIuODRWOC4xN0ExLDEsMCwwLDEsOCw3LjMxbDUuMjUtM2ExLDEsMCwwLDEsMSwxLjc0TDkuNDUsOC43NXY1LjY2YTEsMSwwLDAsMS0uNTEuODdM''@;'; put 'put ''NCwxOC4xMXY1Ljk0QTEsMSwwLDAsMSwzLDI1LjA1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxSLkNsclNoYXBlTm9kZXM9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEwLjUsMzQuMjksMiwyOS4zOVYxOS41OGw4LjUtNC45LDguNSw0Ljl2''@;'; put 'put ''OS44MVpNNCwyOC4yMywxMC41LDMyLDE3LDI4LjIzVjIwLjc0TDEwLjUsMTcsNCwyMC43NFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yNS41LDM0LjI5LDE3LDI5LjM5VjE5LjU4bDguNS00LjksOC41LDQuOXY5LjgxWk0xOSwy''@;'; put 'put ''OC4yMywyNS41LDMyLDMyLDI4LjIzVjIwLjc0TDI1LjUsMTcsMTksMjAuNzRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTgsMjEuMzJsLTguNS00LjlWNi42MUwxOCwxLjcxbDguNSw0Ljl2OS44MVptLTYuNS02LjA2TDE4LDE5''@;'; put 'put ''bDYuNS0zLjc1VjcuNzdMMTgsNCwxMS41LDcuNzdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPicpLFIuQ2xyU2hhcGVOYW1lc3BhY2U9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI3LDQuMThhMSwxLDAsMSwwLTEsMS43M2w2LDMuNDdWMjYuNjJs''@;'; put 'put ''LTYsMy40N2ExLDEsMCwwLDAtLjM3LDEuMzYsMSwxLDAsMCwwLDEuMzcuMzdsNy00LjA1VjguMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNOS42OCwyOS45LDQsMjYuNjJWOS4zOEw5LjY4LDYuMWExLDEsMCwxLDAtMS0xLjcz''@;'; put 'put ''TDIsOC4yM1YyNy43N2w2LjY4LDMuODZhMSwxLDAsMCwwLDEuMzctLjM3QTEsMSwwLDAsMCw5LjY4LDI5LjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMTAsMTJWMjRhMiwyLDAsMCwwLDIsMkgyNGEyLDIsMCwwLDAsMi0yVjEy''@;'; put 'put ''YTIsMiwwLDAsMC0yLTJIMTJBMiwyLDAsMCwwLDEwLDEyWm03LDB2NUgxMlYxMlptLTUsN2g1djVIMTJabTcsNVYxOWg1djVabTUtN0gxOVYxMmg1WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz4nKSxSLkNsclNoYXBlTm9kZT0oMCxtLmNsckljb25TVkcp''@;'; put 'put ''KCc8cGF0aCBkPSJNMTgsMzAuNjYsNywyNC4zM1YxMS42N0wxOCw1LjM0bDExLDYuMzNWMjQuMzNaTTksMjMuMThsOSw1LjE3LDktNS4xN1YxMi44MkwxOCw3LjY1LDksMTIuODJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPicpLFIuQ2xyU2hhcGVQb2Q9''@;'; put 'put ''KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI2LDMySDEwYTYsNiwwLDAsMS02LTZWMTBhNiw2LDAsMCwxLDYtNkgyNmE2LDYsMCwwLDEsNiw2VjI2QTYsNiwwLDAsMSwyNiwzMlpNMTAsNmE0LDQsMCwwLDAtNCw0VjI2YTQsNCwwLDAsMCw0LDRIMjZhNCw0LDAsMCwwLDQtNFYxMGE0LDQs''@;'; put 'put ''MCwwLDAtNC00WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiLz5cbiAgPHBhdGggZD0iTTI2LjU2LDE1SDE1LjQ0QTEuNDMsMS40MywwLDAsMCwxNCwxNi40NHY4LjEyQTEuNDMsMS40MywwLDAsMCwxNS40NCwyNkgyNi41NkExLjQzLDEuNDMsMCwwLDAsMjgs''@;'; put 'put ''MjQuNTZWMTYuNDRBMS40MywxLjQzLDAsMCwwLDI2LjU2LDE1Wk0yNiwyNEgxNlYxN0gyNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0xMi40LDE5SDEwVjEySDIwdjEuNGgydi0yQTEuNDMsMS40MywwLDAsMCwyMC41NiwxMEg5''@;'; put 'put ''LjQ0QTEuNDMsMS40MywwLDAsMCw4LDExLjQ0djguMTJBMS40MywxLjQzLDAsMCwwLDkuNDQsMjFoM1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIi8+JyksUi5DbHJDb250cm9sTHVuPSgwLG0uY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNOCwyNC41OWEy''@;'; 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 ''bGVydGVkIGNsci1pLXNvbGlkLXBhdGgtMy0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxSLkNsclNoYXBlTWVkaWFDaGFuZ2VyPSgwLG0uY2xySWNvblNWRykoJ1xuICA8cGF0aCBkPSJNMzAsNEg2QTIsMiwwLDAsMCw0LDZWMzBhMiwyLDAsMCwwLDIsMkg3Ljg4djEuNTdhMSwxLDAs''@;'; 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+XG4gICcpLFIuQ2xyU2hhcGVUYXBlRHJpdmU9KDAsbS5jbHJJY29uU1ZHKSgnXG4gIDxwYXRoIGQ9Ik0zMiw2SDRBMiwyLDAsMCwwLDIsOFYyOGEyLDIsMCwwLDAsMiwySDMyYTIsMiww''@;'; 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 ''MCwyNi44NSwxLjE0WiIgY2xhc3M9ImNsci1pLXNvbGlkLS1hbGVydGVkIGNsci1pLXNvbGlkLXBhdGgtNC0tYWxlcnRlZCBjbHItaS1hbGVydCIvPlxuICAnKSxSLkNsclNoYXBlQW5pbWF0aW9uPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMC4xNiwzMS43MWE0LjQsNC40LDAsMCwx''@;'; put 'put ''LTQuNjQtMUE0LjM0LDQuMzQsMCwwLDEsNC4yMywyNy42YTQuNDEsNC40MSwwLDAsMSwuMTgtMS4yLDExLjYxLDExLjYxLDAsMCwxLTEtMi41Niw2LjQsNi40LDAsMCwwLDkuMzMsOC42M0ExMS41NSwxMS41NSwwLDAsMSwxMC4xNiwzMS43MVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1p''@;'; put 'put ''LW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0xOC40MSwyNy42OGE3LjYxLDcuNjEsMCwwLDEtOS4wOC0xLjI2LDcuNTgsNy41OCwwLDAsMS0xLjI3LTkuMDYsMTQuMjYsMTQuMjYsMCwwLDEtLjM3LTIuODUsOS41OCw5LjU4LDAsMCwwLC4yMiwxMy4zMyw5LjYzLDkuNjMsMCwwLDAs''@;'; put 'put ''MTMuMzUuMjJBMTQuNDYsMTQuNDYsMCwwLDEsMTguNDEsMjcuNjhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNjYsMjYuMjFhMTIuMSwxMi4xLDAsMSwxLDguNTctMy41NGgwQTEyLjExLDEyLjExLDAsMCwxLDIxLjY2LDI2''@;'; put 'put ''LjIxWk0yMS42Niw0QTEwLjExLDEwLjExLDAsMCwwLDExLjU0LDE0LjExYTEwLDEwLDAsMCwwLDMsNy4xNCwxMC4xMiwxMC4xMiwwLDAsMCwxNC4zMSwwQTEwLjExLDEwLjExLDAsMCwwLDIxLjY2LDRabTcuODYsMThoMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0''@;'; put 'put ''aC0zIi8+XG4gIFxuICA8cGF0aCBkPSJNMy41LDIzLjc3YTYuNDEsNi40MSwwLDAsMCw5LjMzLDguNjdBMTEuNjUsMTEuNjUsMCwwLDEsMy41LDIzLjc3WiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNNy42OCwxNC41M2E5LjYsOS42LDAs''@;'; put 'put ''MCwwLDEzLjQsMTMuN0ExNC4xMSwxNC4xMSwwLDAsMSw3LjY4LDE0LjUzWiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNMjEuNzgsMkExMi4xMiwxMi4xMiwwLDEsMSw5LjY2LDE0LjE1LDEyLjEyLDEyLjEyLDAsMCwxLDIxLjc4LDIiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTMiLz5cbiAgJyksUi5DbHJTaGFwZUNpQ2Q9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIzLjUzLDE5LjgxYTcuNDUsNy40NSwwLDAsMS0xLjY1LS4xOCwxMC40OCwxMC40OCwwLDAsMSwuNzIsMi4xM2MuMywwLC42MSwwLC45''@;'; 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 ''LDEuMWguMTFhMSwxLDAsMCwwLDEtLjlsLjQyLTQuMDZhMSwxLDAsMCwwLTEuMDYtMS4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz4nKSxSLkNsclNoYXBlRmlsZVNoYXJlMj0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNMjUsNEg3LjgzQTEuODks''@;'; put 'put ''MS44OSwwLDAsMCw2LDUuOTFWMzAuMDlBMS44OSwxLjg5LDAsMCwwLDcuODMsMzJIMjguMTdBMS44NywxLjg3LDAsMCwwLDMwLDMwLjA5VjlaTTI0LDUuNzgsMjguMiwxMEgyNFpNOCwzMFY2SDIydjZoNlYzMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+''@;'; put 'put ''XG4gIDxwYXRoIGQ9Ik0yMiwyMS44MWEyLjExLDIuMTEsMCwwLDAtMS40NC42MmwtNS43Mi0yLjY2di0uNDRsNS42Ni0yLjY1YTIuMDgsMi4wOCwwLDEsMCwuMDYtMi45NGgwYTIuMTQsMi4xNCwwLDAsMC0uNjQsMS40OHYuMjNsLTUuNjQsMi42NmEyLjA4LDIuMDgsMCwxLDAtLjA4LDIuOTVs''@;'; put 'put ''LjA4LS4wOCw1LjY3LDIuNjZ2LjNBMi4wOSwyLjA5LDAsMSwwLDIyLDIxLjg0WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgXG4gIDxwYXRoIGQ9Ik0yNSw0LjA2SDcuODNBMS44OSwxLjg5LDAsMCwwLDYsNlYzMC4xNWExLjg5LDEuODksMCwwLDAs''@;'; put 'put ''MS44MywxLjkxSDI4LjE3QTEuODcsMS44NywwLDAsMCwzMCwzMC4xNVY5Wk0yMiwyNmEyLjA5LDIuMDksMCwwLDEtMi4xLTIuMDh2LS4zTDE0LjI3LDIxbC0uMDguMDhhMi4wOCwyLjA4LDAsMSwxLC4wOC0yLjk1bDUuNjQtMi42NnYtLjIzYTIuMTQsMi4xNCwwLDAsMSwuNjQtMS40OGgwYTIu''@;'; put 'put ''MDgsMi4wOCwwLDEsMS0uMDYsMi45NGwtNS42NiwyLjY1di40NGw1LjcyLDIuNjZBMi4xMSwyLjExLDAsMCwxLDIyLDIxLjgxbDAsMEEyLjA5LDIuMDksMCwwLDEsMjIsMjZabTItMTZWNS44NGw0LjIsNC4yMloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiLz4nKSxS''@;'; put 'put ''LlRlY2hub2xvZ3lTaGFwZXM9eyJydWxlci1wZW5jaWwiOlIuQ2xyU2hhcGVSdWxlclBlbmNpbCwicGhvbmUtaGFuZHNldCI6Ui5DbHJTaGFwZVBob25lSGFuZHNldCwibm8td2lmaSI6Ui5DbHJTaGFwZU5vV2lmaSxpbnN0YWxsOlIuQ2xyU2hhcGVJbnN0YWxsLHVuaW5zdGFsbDpSLkNsclNo''@;'; put 'put ''YXBlVW5pbnN0YWxsLGxheWVyczpSLkNsclNoYXBlTGF5ZXJzLGJsb2NrOlIuQ2xyU2hhcGVCbG9jaywiYmxvY2tzLWdyb3VwIjpSLkNsclNoYXBlQmxvY2tzR3JvdXAsYnVuZGxlOlIuQ2xyU2hhcGVCdW5kbGUsd2lmaTpSLkNsclNoYXBlV2lmaSwicmFjay1zZXJ2ZXIiOlIuQ2xyU2hhcGVS''@;'; put 'put ''YWNrU2VydmVyLCJoYXJkLWRpc2siOlIuQ2xyU2hhcGVIYXJkRGlzaywiYmFja3VwLXJlc3RvcmUiOlIuQ2xyU2hhcGVCYWNrdXBSZXN0b3JlLGJhY2t1cDpSLkNsclNoYXBlQmFja3VwLGRldmljZXM6Ui5DbHJTaGFwZURldmljZXMsa2V5Ym9hcmQ6Ui5DbHJTaGFwZUtleWJvYXJkLG1vdXNl''@;'; put 'put ''OlIuQ2xyU2hhcGVNb3VzZSxkYXNoYm9hcmQ6Ui5DbHJTaGFwZURhc2hib2FyZCxob3N0OlIuQ2xyU2hhcGVIb3N0LHN0b3JhZ2U6Ui5DbHJTaGFwZVN0b3JhZ2UsY2x1c3RlcjpSLkNsclNoYXBlQ2x1c3RlcixhcHBsaWNhdGlvbnM6Ui5DbHJTaGFwZUFwcGxpY2F0aW9ucyxidWlsZGluZzpS''@;'; put 'put ''LkNsclNoYXBlQnVpbGRpbmcsY3B1OlIuQ2xyU2hhcGVDUFUsbWVtb3J5OlIuQ2xyU2hhcGVNZW1vcnksImRhdGEtY2x1c3RlciI6Ui5DbHJTaGFwZURhdGFDbHVzdGVyLCJyZXNvdXJjZS1wb29sIjpSLkNsclNoYXBlUmVzb3VyY2VQb29sLHNoaWVsZDpSLkNsclNoYXBlU2hpZWxkLCJzaGll''@;'; put 'put ''bGQtY2hlY2siOlIuQ2xyU2hhcGVTaGllbGRDaGVjaywic2hpZWxkLXgiOlIuQ2xyU2hhcGVTaGllbGRYLGltcG9ydDpSLkNsclNoYXBlSW1wb3J0LGV4cG9ydDpSLkNsclNoYXBlRXhwb3J0LCJ1cGxvYWQtY2xvdWQiOlIuQ2xyU2hhcGVVcGxvYWRDbG91ZCwiZG93bmxvYWQtY2xvdWQiOlIu''@;'; put 'put ''Q2xyU2hhcGVEb3dubG9hZENsb3VkLHBsdWdpbjpSLkNsclNoYXBlUGx1Z2luLGZsb3BweTpSLkNsclNoYXBlRmxvcHB5LGNvbXB1dGVyOlIuQ2xyU2hhcGVDb21wdXRlcixkaXNwbGF5OlIuQ2xyU2hhcGVEaXNwbGF5LHRlcm1pbmFsOlIuQ2xyU2hhcGVUZXJtaW5hbCxjb2RlOlIuQ2xyU2hh''@;'; put 'put ''cGVDb2RlLGFwcGxpY2F0aW9uOlIuQ2xyU2hhcGVBcHBsaWNhdGlvbixiYXR0ZXJ5OlIuQ2xyU2hhcGVCYXR0ZXJ5LG1vYmlsZTpSLkNsclNoYXBlTW9iaWxlLHRhYmxldDpSLkNsclNoYXBlVGFibGV0LCJuZXR3b3JrLWdsb2JlIjpSLkNsclNoYXBlTmV0d29ya0dsb2JlLCJuZXR3b3JrLXNl''@;'; put 'put ''dHRpbmdzIjpSLkNsclNoYXBlTmV0d29ya1NldHRpbmdzLCJuZXR3b3JrLXN3aXRjaCI6Ui5DbHJTaGFwZU5ldHdvcmtTd2l0Y2gscm91dGVyOlIuQ2xyU2hhcGVSb3V0ZXIsdm06Ui5DbHJTaGFwZVZNLCJ2bXctYXBwIjpSLkNsclNoYXBlVk1XQXBwLGNlcnRpZmljYXRlOlIuQ2xyU2hhcGVD''@;'; put 'put ''ZXJ0aWZpY2F0ZSxhcmNoaXZlOlIuQ2xyU2hhcGVBcmNoaXZlLHVuYXJjaGl2ZTpSLkNsclNoYXBlVW5hcmNoaXZlLGNvbm5lY3Q6Ui5DbHJTaGFwZUNvbm5lY3QsZGlzY29ubmVjdDpSLkNsclNoYXBlRGlzY29ubmVjdCxsaW5rOlIuQ2xyU2hhcGVMaW5rLHVubGluazpSLkNsclNoYXBlVW5s''@;'; put 'put ''aW5rLCJjbG91ZC1uZXR3b3JrIjpSLkNsclNoYXBlQ2xvdWROZXR3b3JrLCJjbG91ZC1zY2FsZSI6Ui5DbHJTaGFwZUNsb3VkU2NhbGUsImNsb3VkLXRyYWZmaWMiOlIuQ2xyU2hhcGVDbG91ZFRyYWZmaWMsImNvbnRyb2wtbHVuIjpSLkNsckNvbnRyb2xMdW4sZGVwbG95OlIuQ2xyU2hhcGVE''@;'; put 'put ''ZXBsb3ksaGVsaXg6Ui5DbHJTaGFwZUhlbGl4LGZsYXNrOlIuQ2xyU2hhcGVGbGFzayxhZG1pbmlzdHJhdG9yOlIuQ2xyU2hhcGVBZG1pbmlzdHJhdG9yLCJoYXJkLWRyaXZlIjpSLkNsclNoYXBlSGFyZERyaXZlLCJoYXJkLWRyaXZlLWRpc2tzIjpSLkNsclNoYXBlSGFyZERyaXZlRGlza3Ms''@;'; put 'put ''bnZtZTpSLkNsclNoYXBlTlZNZSxzc2Q6Ui5DbHJTaGFwZVNTRCxibHVldG9vdGg6Ui5DbHJTaGFwZUJsdWV0b290aCwiYmx1ZXRvb3RoLW9mZiI6Ui5DbHJTaGFwZUJsdWV0b290aE9mZiwicHJvY2Vzcy1vbi12bSI6Ui5DbHJTaGFwZVByb2Nlc3NPblZNLCJhc3NpZ24tdXNlciI6Ui5DbHJT''@;'; put 'put ''aGFwZUFzc2lnblVzZXIsYXRvbTpSLkNsclNoYXBlQXRvbSwiYmFyLWNvZGUiOlIuQ2xyU2hhcGVCYXJDb2RlLCJjZC1kdmQiOlIuQ2xyU2hhcGVDZER2ZCxjb250YWluZXI6Ui5DbHJTaGFwZUNvbnRhaW5lciwiY29udGFpbmVyLXZvbHVtZSI6Ui5DbHJTaGFwZUNvbnRhaW5lclZvbHVtZSwi''@;'; put 'put ''ZmlsZS1zaGFyZSI6Ui5DbHJTaGFwZUZpbGVTaGFyZSwicXItY29kZSI6Ui5DbHJTaGFwZVFyQ29kZSx1c2I6Ui5DbHJTaGFwZVVzYixyYWRhcjpSLkNsclNoYXBlUmFkYXIsY2FwYWNpdG9yOlIuQ2xyU2hhcGVDYXBhY2l0b3Isc3F1aWQ6Ui5DbHJTaGFwZVNxdWlkLGluZHVjdG9yOlIuQ2xy''@;'; put 'put ''U2hhcGVJbmR1Y3RvcixyZXNpc3RvcjpSLkNsclNoYXBlUmVzaXN0b3IsImhvc3QtZ3JvdXAiOlIuQ2xyU2hhcGVIb3N0R3JvdXAsInN0b3JhZ2UtYWRhcHRlciI6Ui5DbHJTaGFwZVN0b3JhZ2VBZGFwdGVyLCJub2RlLWdyb3VwIjpSLkNsclNoYXBlTm9kZUdyb3VwLG5vZGVzOlIuQ2xyU2hh''@;'; put 'put ''cGVOb2RlcyxuYW1lc3BhY2U6Ui5DbHJTaGFwZU5hbWVzcGFjZSxub2RlOlIuQ2xyU2hhcGVOb2RlLHBvZDpSLkNsclNoYXBlUG9kLCJtZWRpYS1jaGFuZ2VyIjpSLkNsclNoYXBlTWVkaWFDaGFuZ2VyLCJ0YXBlLWRyaXZlIjpSLkNsclNoYXBlVGFwZURyaXZlLGFuaW1hdGlvbjpSLkNsclNo''@;'; put 'put ''YXBlQW5pbWF0aW9uLCJjaS1jZCI6Ui5DbHJTaGFwZUNpQ2QsImZpbGUtc2hhcmUtMiI6Ui5DbHJTaGFwZUZpbGVTaGFyZTJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLlRlY2hub2xvZ3lTaGFwZXMsInNlcnZlciIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlRlY2hub2xvZ3lTaGFwZXMu''@;'; put 'put ''aG9zdCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLlRlY2hub2xvZ3lTaGFwZXMsImNvbW1hbmQiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5UZWNobm9sb2d5U2hhcGVzLnRlcm1pbmFsKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuVGVjaG5vbG9neVNoYXBlcywibW9iaWxlLXBob25l''@;'; put 'put ''IiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuVGVjaG5vbG9neVNoYXBlcy5tb2JpbGUpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5UZWNobm9sb2d5U2hhcGVzLCJsaWNlbnNlIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuVGVjaG5vbG9neVNoYXBlcy5jZXJ0aWZpY2F0ZSkpLE9iamVj''@;'; put 'put ''dC5kZWZpbmVQcm9wZXJ0eShSLlRlY2hub2xvZ3lTaGFwZXMsImRpc2Nvbm5lY3RlZCIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlRlY2hub2xvZ3lTaGFwZXNbIm5vLXdpZmkiXSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLlRlY2hub2xvZ3lTaGFwZXMsInJlY2VpdmVyIiwoMCx4LmRl''@;'; put 'put ''c2NyaXB0b3JDb25maWcpKFIuVGVjaG5vbG9neVNoYXBlc1sicGhvbmUtaGFuZHNldCJdKSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuVGVjaG5vbG9neVNoYXBlcywiZGVzaWduIiwoMCx4LmRlc2NyaXB0b3JDb25maWcpKFIuVGVjaG5vbG9neVNoYXBlc1sicnVsZXItcGVuY2lsIl0pKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoUi5UZWNobm9sb2d5U2hhcGVzLCJkbmEiLCgwLHguZGVzY3JpcHRvckNvbmZpZykoUi5UZWNobm9sb2d5U2hhcGVzLmhlbGl4KSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuVGVjaG5vbG9neVNoYXBlcywiZm9sZGVyLXNoYXJlIiwoMCx4LmRlc2NyaXB0''@;'; put 'put ''b3JDb25maWcpKFIuVGVjaG5vbG9neVNoYXBlc1siZmlsZS1zaGFyZSJdKSksdHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKFIuVGVjaG5vbG9neVNoYXBlcyl9LCIuL3Byb2plY3RzL2ljb25z''@;'; put 'put ''L3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy9zaGFwZXMvdGV4dC1lZGl0LXNoYXBlcy50''@;'; put 'put ''cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuVGV4dEVkaXRTaGFwZXM9Ui5DbHJTaGFwZVN1cGVyc2NyaXB0PVIuQ2xyU2hhcGVTdWJzY3JpcHQ9Ui5DbHJTaGFwZVN0cmlrZXRocm91Z2g9Ui5DbHJTaGFwZUluZGVudD1SLkNsclNoYXBlT3V0ZGVudD1SLkNsclNoYXBlSGlnaGxpZ2h0''@;'; put 'put ''ZXI9Ui5DbHJTaGFwZVRleHRDb2xvcj1SLkNsclNoYXBlTGFuZ3VhZ2U9Ui5DbHJTaGFwZUFsaWduVG9wPVIuQ2xyU2hhcGVBbGlnbk1pZGRsZT1SLkNsclNoYXBlQWxpZ25Cb3R0b209Ui5DbHJTaGFwZVVuZGVybGluZT1SLkNsclNoYXBlVGV4dD1SLkNsclNoYXBlQWxpZ25SaWdodFRleHQ9''@;'; put 'put ''Ui5DbHJTaGFwZUJsb2NrUXVvdGU9Ui5DbHJTaGFwZVBhaW50Um9sbGVyPVIuQ2xyU2hhcGVOdW1iZXJMaXN0PVIuQ2xyU2hhcGVBbGlnbkxlZnRUZXh0PVIuQ2xyU2hhcGVKdXN0aWZ5VGV4dD1SLkNsclNoYXBlSXRhbGljPVIuQ2xyU2hhcGVBbGlnblJpZ2h0PVIuQ2xyU2hhcGVBbGlnbkxl''@;'; put 'put ''ZnQ9Ui5DbHJTaGFwZUFsaWduQ2VudGVyPVIuQ2xyU2hhcGVGb250U2l6ZT1SLkNsclNoYXBlQ2hlY2tib3hMaXN0PVIuQ2xyU2hhcGVDZW50ZXJUZXh0PVIuQ2xyU2hhcGVCdWxsZXRMaXN0PVIuQ2xyU2hhcGVCb2xkPXZvaWQgMDt2YXIgeD1vZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2Vu''@;'; put 'put ''ZXJhdG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1IuQ2xyU2hhcGVCb2xkPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yMi40MywxNy41NGE0LjY3LDQuNjcsMCwwLDAsMi44LTQuMzd2LS4wNmE0LjQzLDQuNDMsMCwwLDAtMS4z''@;'; put 'put ''MS0zLjI1LDcuMDksNy4wOSwwLDAsMC01LjEzLTEuNzNoLTdBMS43MSwxLjcxLDAsMCwwLDEwLDkuODZWMjZhMS43MiwxLjcyLDAsMCwwLDEuNzQsMS43NGg3LjMzYzQuMzcsMCw3LjI1LTEuODgsNy4yNS01LjM4VjIyLjNDMjYuMzIsMTkuNjQsMjQuNzMsMTguMzIsMjIuNDMsMTcuNTRaTTEz''@;'; put 'put ''LjY4LDExLjRoNC41NGMyLDAsMy4xNS44OSwzLjE1LDIuMzN2LjA2YzAsMS42OC0xLjM2LDIuNDktMy4zOCwyLjQ5SDEzLjY4Wk0yMi4zNywyMmMwLDEuNTktMS4zMSwyLjQzLTMuNDYsMi40M0gxMy42OFYxOS42Mmg1YzIuNDksMCwzLjY5Ljg4LDMuNjksMi4zN1oiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVCdWxsZXRMaXN0PSgwLHguY2xySWNvblNWRykoJzxjaXJjbGUgY3g9IjUuMjEiIGN5PSI5LjE3IiByPSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48Y2lyY2xlIGN4PSI1''@;'; put 'put ''LjIxIiBjeT0iMTcuMTciIHI9IjIiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxjaXJjbGUgY3g9IjUuMjEiIGN5PSIyNS4xNyIgcj0iMiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBhdGggZD0iTTMyLjQyLDlh''@;'; put 'put ''MSwxLDAsMCwwLTEtMUgxMHYySDMxLjQyQTEsMSwwLDAsMCwzMi40Miw5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+PHBhdGggZD0iTTMxLjQyLDE2SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01IiAvPjxwYXRoIGQ9Ik0zMS40MiwyNEgxMHYySDMxLjQyYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNiIgLz4nKSxSLkNsclNoYXBlQ2VudGVyVGV4dD0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzAuODgs''@;'; put 'put ''OEg1LjEyYTEuMSwxLjEsMCwwLDAsMCwyLjJIMzAuODhhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0yNS41LDE2LjJhMS4xLDEuMSwwLDEsMCwwLTIuMmgtMTVhMS4xLDEuMSwwLDEsMCwwLDIuMloi''@;'; put 'put ''IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMC4yNSwyMEg1Ljc1YTEuMSwxLjEsMCwwLDAsMCwyLjJoMjQuNWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+PHBh''@;'; put 'put ''dGggZD0iTTI0Ljg4LDI2SDExLjEyYTEuMSwxLjEsMCwxLDAsMCwyLjJIMjQuODhhMS4xLDEuMSwwLDEsMCwwLTIuMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFIuQ2xyU2hhcGVDaGVja2JveExpc3Q9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGgg''@;'; put 'put ''ZD0iTTMxLjQzLDE2SDEwdjJIMzEuNDNhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMS40MywyNEgxMHYySDMxLjQzYTEsMSwwLDAsMCwwLTJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5l''@;'; put 'put ''LXBhdGgtMiIgLz48cGF0aCBkPSJNMTUuNDUsMTBoMTZhMSwxLDAsMCwwLDAtMmgtMTRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMTcuNSwzLjQyYTEuMDksMS4wOSwwLDAsMC0xLjU1LDBMNy44OSwxMS40OCw0LjUxLDcuODRBMS4x''@;'; put 'put ''LDEuMSwwLDEsMCwyLjksOS4zNGw0Ljk0LDUuM0wxNy41LDVBMS4xLDEuMSwwLDAsMCwxNy41LDMuNDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz4nKSxSLkNsclNoYXBlRm9udFNpemU9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIxLDkuMDhB''@;'; put 'put ''MS4xMywxLjEzLDAsMCwwLDE5Ljg2LDhINC42MmExLjEsMS4xLDAsMSwwLDAsMi4xOUgxMVYyN2ExLjA5LDEuMDksMCwwLDAsMi4xNywwVjEwLjE5aDYuNjlBMS4xNCwxLjE0LDAsMCwwLDIxLDkuMDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0''@;'; put 'put ''aCBkPSJNMzAuNjcsMTVIMjEuMTVhMS4xLDEuMSwwLDEsMCwwLDIuMTlIMjVWMjYuNWExLjA5LDEuMDksMCwwLDAsMi4xNywwVjE3LjIzaDMuNTRhMS4xLDEuMSwwLDEsMCwwLTIuMTlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBl''@;'; put 'put ''QWxpZ25DZW50ZXI9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDIwSDE5VjE2aDZhMSwxLDAsMCwwLDEtMVY3YTEsMSwwLDAsMC0xLTFIMTlWMmExLDEsMCwwLDAtMiwwVjZIMTFhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwxLDFoNnY0SDVhMSwxLDAsMCwwLTEsMXY4YTEsMSww''@;'; put 'put ''LDAsMCwxLDFIMTd2NGExLDEsMCwwLDAsMiwwVjMwSDMxYTEsMSwwLDAsMCwxLTFWMjFBMSwxLDAsMCwwLDMxLDIwWk0xMiwxNFY4SDI0djZaTTMwLDI4SDZWMjJIMzBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz4nKSxSLkNsclNoYXBlQWxpZ25MZWZ0''@;'; put 'put ''PSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik01LDFBMSwxLDAsMCwwLDQsMlYzNGExLDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDUsMVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwyMEg4VjMwSDMxYTEsMSwwLDAsMCwxLTFW''@;'; put 'put ''MjFBMSwxLDAsMCwwLDMxLDIwWm0tMSw4SDEwVjIySDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHBhdGggZD0iTTI0LDE1VjdhMSwxLDAsMCwwLTEtMUg4VjE2SDIzQTEsMSwwLDAsMCwyNCwxNVptLTItMUgxMFY4SDIyWiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksUi5DbHJTaGFwZUFsaWduUmlnaHQ9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLDFhMSwxLDAsMCwwLTEsMVYzNGExLDEsMCwwLDAsMiwwVjJBMSwxLDAsMCwwLDMxLDFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHIt''@;'; put 'put ''aS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNNCwyMXY4YTEsMSwwLDAsMCwxLDFIMjhWMjBINUExLDEsMCwwLDAsNCwyMVptMiwxSDI2djZINloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMiw3djhhMSwxLDAsMCwwLDEsMUgy''@;'; put 'put ''OFY2SDEzQTEsMSwwLDAsMCwxMiw3Wm0yLDFIMjZ2NkgxNFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPicpLFIuQ2xyU2hhcGVJdGFsaWM9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI0LjQyLDhIMTcuMWExLjEsMS4xLDAsMSwwLDAsMi4xOWgy''@;'; put 'put ''LjEzTDEzLjExLDI1LjU1SDEwLjQ3YTEuMSwxLjEsMCwxLDAsMCwyLjE5SDE3LjhhMS4xLDEuMSwwLDEsMCwwLTIuMTlIMTUuNTFsNi4xMy0xNS4zNmgyLjc4YTEuMSwxLjEsMCwxLDAsMC0yLjE5WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+JyksUi5D''@;'; put 'put ''bHJTaGFwZUp1c3RpZnlUZXh0PSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik02LDEwLjJIMzEuNzVhMS4xLDEuMSwwLDEsMCwwLTIuMkg2YTEuMSwxLjEsMCwxLDAsMCwyLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzEuNzUs''@;'; put 'put ''MTRINmExLjEsMS4xLDAsMSwwLDAsMi4ySDMxLjc1YTEuMSwxLjEsMCwxLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzEuMTIsMjBINi42MmExLjEsMS4xLDAsMSwwLDAsMi4yaDI0LjVhMS4xLDEuMSwwLDEsMCwwLTIu''@;'; put 'put ''MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAvPjxwYXRoIGQ9Ik0zMC40NSwyNS44M0g2LjZhMS4xLDEuMSwwLDAsMCwwLDIuMkgzMC40NWExLjEsMS4xLDAsMCwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQi''@;'; put 'put ''IC8+JyksUi5DbHJTaGFwZUFsaWduTGVmdFRleHQ9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTIwLjI1LDI2SDZ2Mi4ySDIwLjI1YTEuMSwxLjEsMCwwLDAsMC0yLjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMjgsMjBINnYy''@;'; put 'put ''LjJIMjhBMS4xLDEuMSwwLDAsMCwyOCwyMFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0yMi42LDE1LjFBMS4xLDEuMSwwLDAsMCwyMS41LDE0SDZ2Mi4ySDIxLjVBMS4xLDEuMSwwLDAsMCwyMi42LDE1LjFaIiBjbGFzcz0iY2xyLWkt''@;'; put 'put ''b3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMjkuMjUsOEg2djIuMkgyOS4yNWExLjEsMS4xLDAsMSwwLDAtMi4yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTQiIC8+JyksUi5DbHJTaGFwZU51bWJlckxpc3Q9KDAseC5jbHJJY29u''@;'; put 'put ''U1ZHKSgnPHBvbHlnb24gcG9pbnRzPSI1LjQ2IDcuNDEgNS40NiAxMS41NiA2LjY1IDExLjU2IDYuNjUgNi4wNSA1LjcgNi4wNSA0LjA1IDcuMTYgNC41MiA4IDUuNDYgNy40MSIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTUuNTcsMTQu''@;'; put 'put ''ODJhLjc2Ljc2LDAsMCwxLC44My43M2MwLC4zOC0uMjEuNzQtLjg3LDEuMjdsLTIsMS41N3YxSDcuNjdWMTguMjhINS4zM2wxLS43N2MxLS43LDEuMjgtMS4yNywxLjI4LTJhMS44MywxLjgzLDAsMCwwLTItMS43NiwyLjYzLDIuNjMsMCwwLDAtMi4xNCwxLjA4bC43Ni43M0ExLjc1LDEuNzUs''@;'; put 'put ''MCwwLDEsNS41NywxNC44MloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik02LjU2LDI0LjY0YTEuMzIsMS4zMiwwLDAsMCwxLTEuMjdjMC0uODctLjc4LTEuNTEtMi0xLjUxYTIuNjEsMi42MSwwLDAsMC0yLjEsMWwuNjkuNzJhMS43OCwx''@;'; put 'put ''Ljc4LDAsMCwxLDEuMy0uNjRjLjU0LDAsLjkyLjI2LjkyLjY2cy0uMzYuNjItMSwuNjJINC43OXYxaC42NGMuNzQsMCwxLjA3LjIxLDEuMDcuNjNzLS4zNS42OC0xLC42OGEyLDIsMCwwLDEtMS40Ni0uNjVsLS43Ljc4YTIuODUsMi44NSwwLDAsMCwyLjIxLjkzYzEuMjksMCwyLjEzLS42OSwy''@;'; put 'put ''LjEzLTEuNjRBMS4zMywxLjMzLDAsMCwwLDYuNTYsMjQuNjRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJNMzIuNDIsOWExLDEsMCwwLDAtMS0xSDEwdjJIMzEuNDJBMSwxLDAsMCwwLDMyLjQyLDlaIiBjbGFzcz0iY2xyLWktb3V0bGlu''@;'; put 'put ''ZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIgLz48cGF0aCBkPSJNMzEuNDIsMTZIMTB2MkgzMS40MmExLDEsMCwwLDAsMC0yWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiIC8+PHBhdGggZD0iTTMxLjQyLDI0SDEwdjJIMzEuNDJhMSwxLDAsMCwwLDAtMloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02IiAvPicpLFIuQ2xyU2hhcGVQYWludFJvbGxlcj0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzEsMTBWNGEyLDIsMCwwLDAtMi0ySDZBMiwyLDAsMCwwLDQsNHY2YTIsMiwwLDAsMCwyLDJIMjlBMiwyLDAsMCwwLDMx''@;'; put 'put ''LDEwWk02LDRIMjl2Nkg2WiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4yOUwxOC43LDE2LjU0YTEsMSwwLDAsMC0uNywxVjE5SDE2VjMzYTIsMiwwLDAsMCwyLDJoMmEyLDIsMCwwLDAsMi0yVjE5SDIwdi0uNzNMMzMu''@;'; put 'put ''MywxNGExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMyw2Wk0yMCwzM0gxOFYyMWgyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIC8+PHJlY3QgeD0iNCIgeT0iMiIgd2lkdGg9IjI3IiBoZWlnaHQ9IjEwIiByeD0iMSIgcnk9IjEiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIC8+PHBhdGggZD0iTTMzLDZIMzJ2Ni4yNEwxOC43MSwxNi40NWExLDEsMCwwLDAtLjcxLDFWMTlIMTZWMzRhMSwxLDAsMCwwLDEsMWg0YTEsMSwwLDAsMCwxLTFWMTlIMjB2LS44MkwzMy4yOSwxNEExLDEsMCwwLDAsMzQsMTNWN0ExLDEsMCww''@;'; put 'put ''LDAsMzMsNloiIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZUJsb2NrUXVvdGU9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTExLjg2LDE2LjU1YTQuMzEsNC4zMSwwLDAsMC0yLjExLjU2LDE0LjQ0LDE0LjQ0LDAsMCwxLDQuMzYtNiwx''@;'; put 'put ''LjEsMS4xLDAsMCwwLTEuNC0xLjdjLTQsMy4yNS01Ljc4LDcuNzUtNS43OCwxMC41NEE1LjA4LDUuMDgsMCwwLDAsMTAsMjQuNThhNC40LDQuNCwwLDAsMCwxLjg4LjQ0LDQuMjQsNC4yNCwwLDEsMCwwLTguNDdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz48cGF0aCBkPSJNMjMsMTYuNTVhNC4yOSw0LjI5LDAsMCwwLTIuMTEuNTYsMTQuNSwxNC41LDAsMCwxLDQuMzUtNiwxLjEsMS4xLDAsMSwwLTEuMzktMS43Yy00LDMuMjUtNS43OCw3Ljc1LTUuNzgsMTAuNTRhNS4wOCw1LjA4LDAsMCwwLDMsNC42MUE0LjM3LDQuMzcsMCwwLDAsMjMsMjVh''@;'; put 'put ''NC4yNCw0LjI0LDAsMSwwLDAtOC40N1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dD0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNjUsMjcuMWExLjEsMS4xLDAsMCwwLDEuMSwxLjFIMzBWMjZI''@;'; put 'put ''MTUuNzVBMS4xLDEuMSwwLDAsMCwxNC42NSwyNy4xWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHBhdGggZD0iTTYuOSwyMS4xQTEuMSwxLjEsMCwwLDAsOCwyMi4ySDMwVjIwSDhBMS4xLDEuMSwwLDAsMCw2LjksMjEuMVoiIGNsYXNzPSJjbHItaS1v''@;'; put 'put ''dXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xMy40LDE1LjFhMS4xLDEuMSwwLDAsMCwxLjEsMS4xSDMwVjE0SDE0LjVBMS4xLDEuMSwwLDAsMCwxMy40LDE1LjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz48cGF0aCBkPSJN''@;'; put 'put ''Ni43NSw4YTEuMSwxLjEsMCwxLDAsMCwyLjJIMzBWOFoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiAvPicpLFIuQ2xyU2hhcGVUZXh0PSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xMi4xOSw4Ljg0YTEuNDUsMS40NSwwLDAsMC0xLjQtMWgtLjEyYTEu''@;'; put 'put ''NDYsMS40NiwwLDAsMC0xLjQyLDFMMS4xNCwyNi41NmExLjI5LDEuMjksMCwwLDAtLjE0LjU5LDEsMSwwLDAsMCwxLDEsMS4xMiwxLjEyLDAsMCwwLDEuMDgtLjc3bDIuMDgtNC42NWgxMWwyLjA4LDQuNTlhMS4yNCwxLjI0LDAsMCwwLDEuMTIuODMsMS4wOCwxLjA4LDAsMCwwLDEuMDgtMS4w''@;'; put 'put ''OCwxLjY0LDEuNjQsMCwwLDAtLjE0LS41N1pNNi4wOCwyMC43MWw0LjU5LTEwLjIyLDQuNiwxMC4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMi4yNCwxNC43OEE2LjM1LDYuMzUsMCwwLDAsMjcuNiwxMy4yYTExLjM2LDExLjM2''@;'; put 'put ''LDAsMCwwLTQuNywxLDEsMSwwLDAsMC0uNTguODksMSwxLDAsMCwwLC45NC45MiwxLjIzLDEuMjMsMCwwLDAsLjM5LS4wOCw4Ljg3LDguODcsMCwwLDEsMy43Mi0uODFjMi43LDAsNC4yOCwxLjMzLDQuMjgsMy45MnYuNWExNS4yOSwxNS4yOSwwLDAsMC00LjQyLS42MWMtMy42NCwwLTYuMTQs''@;'; put 'put ''MS42MS02LjE0LDQuNjR2LjA1YzAsMi45NSwyLjcsNC40OCw1LjM3LDQuNDhhNi4yOSw2LjI5LDAsMCwwLDUuMTktMi40OFYyNi45YTEsMSwwLDAsMCwxLDEsMSwxLDAsMCwwLDEtMS4wNlYxOUE1LjcxLDUuNzEsMCwwLDAsMzIuMjQsMTQuNzhabS0uNTYsNy43YzAsMi4yOC0yLjE3LDMuODkt''@;'; put 'put ''NC44MSwzLjg5LTEuOTQsMC0zLjYxLTEuMDYtMy42MS0yLjg2di0uMDZjMC0xLjgsMS41LTMsNC4yLTNhMTUuMiwxNS4yLDAsMCwxLDQuMjIuNjFaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz4nKSxSLkNsclNoYXBlVW5kZXJsaW5lPSgwLHguY2xySWNv''@;'; put 'put ''blNWRykoJzxwYXRoIGQ9Ik0xOCwyOC4xN2M1LjA4LDAsOC40OC0zLjA4LDguNDgtOVY4LjU0YTEuMTUsMS4xNSwwLDEsMC0yLjMsMHYxMC44YzAsNC40NC0yLjM4LDYuNzEtNi4xMyw2Ljcxcy02LjIxLTIuNDctNi4yMS02Ljg1VjguNTRhMS4xNSwxLjE1LDAsMSwwLTIuMywwdjEwLjhDOS41''@;'; put 'put ''MywyNS4wOSwxMywyOC4xNywxOCwyOC4xN1oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik0zMSwzMEg1YTEuMTEsMS4xMSwwLDAsMCwwLDIuMjFIMzFBMS4xMSwxLjExLDAsMCwwLDMxLDMwWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xy''@;'; put 'put ''LWktb3V0bGluZS1wYXRoLTIiIC8+JyksUi5DbHJTaGFwZUFsaWduQm90dG9tPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zNCwzMEgyYTEsMSwwLDAsMCwwLDJIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPjxwYXRo''@;'; put 'put ''IGQ9Ik0xNiw1YTEsMSwwLDAsMC0xLTFIN0ExLDEsMCwwLDAsNiw1VjI4SDE2Wk0xNCwyNkg4VjZoNloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0zMCwxM2ExLDEsMCwwLDAtMS0xSDIxYTEsMSwwLDAsMC0xLDFWMjhIMzBaTTI4LDI2''@;'; put 'put ''SDIyVjE0aDZaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlQWxpZ25NaWRkbGU9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTM0LDE3SDMwVjExYTEsMSwwLDAsMC0xLTFIMjFhMSwxLDAsMCwwLTEsMXY2SDE2VjVhMSwxLDAs''@;'; put 'put ''MCwwLTEtMUg3QTEsMSwwLDAsMCw2LDVWMTdIMmExLDEsMCwwLDAsMCwySDZWMzFhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTloNHY2YTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjE5aDRhMSwxLDAsMCwwLDAtMlpNMTQsMzBIOFY2aDZabTE0LTZIMjJWMTJoNloiIGNs''@;'; put 'put ''YXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIiAvPicpLFIuQ2xyU2hhcGVBbGlnblRvcD0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMzQsNEgyQTEsMSwwLDAsMCwyLDZIMzRhMSwxLDAsMCwwLDAtMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxp''@;'; put 'put ''bmUtcGF0aC0xIiAvPjxwYXRoIGQ9Ik02LDMxYTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xVjhINlpNOCwxMGg2VjMwSDhaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMjAsMjNhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwx''@;'; put 'put ''LTFWOEgyMFptMi0xM2g2VjIySDIyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiIC8+JyksUi5DbHJTaGFwZUxhbmd1YWdlPSgwLHguY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0zMCwzSDE0djVoMlY1aDE0YzAuNiwwLDEsMC40LDEsMXYxMWMwLDAuNi0wLjQs''@;'; 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+JyksUi5DbHJTaGFwZVRleHRDb2xvcj0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTkuNDcsMy44NGExLjQ1LDEuNDUsMCwwLDAtMS40LTFIMThhMS40NSwxLjQ1LDAsMCwwLTEu''@;'; put 'put ''NDIsMUw4LjQyLDIxLjU2YTEuMzUsMS4zNSwwLDAsMC0uMTQuNTksMSwxLDAsMCwwLDEsMSwxLjExLDEuMTEsMCwwLDAsMS4wOC0uNzdsMi4wOC00LjY1aDExbDIuMDgsNC41OWExLjI0LDEuMjQsMCwwLDAsMS4xMi44MywxLjA4LDEuMDgsMCwwLDAsMS4wOC0xLjA4LDEuNTksMS41OSwwLDAs''@;'; put 'put ''MC0uMTQtLjU3Wk0xMy4zNiwxNS43MSwxOCw1LjQ5bDQuNiwxMC4yMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxyZWN0IHg9IjQuMDYiIHk9IjI1IiB3aWR0aD0iMjgiIGhlaWdodD0iOCIgcng9IjIiIHJ5PSIyIiBjbGFzcz0iY2xyLWktb3V0''@;'; put 'put ''bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLFIuQ2xyU2hhcGVIaWdobGlnaHRlcj0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTUuODIsMjYuMDZhMSwxLDAsMCwxLS43MS0uMjlMOC42NywxOS4zM2ExLDEsMCwwLDEtLjI5LS43MSwxLDEsMCwwLDEsLjI5LS43MUwyMywzLjU0''@;'; put 'put ''YTUuNTUsNS41NSwwLDEsMSw3Ljg1LDcuODZMMTYuNTMsMjUuNzdBMSwxLDAsMCwxLDE1LjgyLDI2LjA2Wm0tNS03LjQ0LDUsNUwyOS40OCwxMGEzLjU0LDMuNTQsMCwwLDAsMC01LDMuNjMsMy42MywwLDAsMC01LDBaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgt''@;'; put 'put ''MSIvPlxuICA8cGF0aCBkPSJNMTAuMzgsMjguMjhBMSwxLDAsMCwxLDkuNjcsMjhMNi40NSwyNC43N2ExLDEsMCwwLDEtLjIyLTEuMDlsMi4yMi01LjQ0YTEsMSwwLDAsMSwxLjYzLS4zM2w2LjQ1LDYuNDRBMSwxLDAsMCwxLDE2LjIsMjZsLTUuNDQsMi4yMkExLjMzLDEuMzMsMCwwLDEsMTAu''@;'; put 'put ''MzgsMjguMjhaTTguMzMsMjMuODJsMi4yOSwyLjI4LDMuNDMtMS40TDkuNzQsMjAuMzlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPlxuICA8cGF0aCBkPSJNOC45NCwzMGgtNWExLDEsMCwwLDEtLjg0LTEuNTVsMy4yMi00Ljk0YTEsMSwwLDAsMSwxLjU1''@;'; put 'put ''LS4xNmwzLjIxLDMuMjJhMSwxLDAsMCwxLC4wNiwxLjM1TDkuNywyOS42NEExLDEsMCwwLDEsOC45NCwzMFpNNS43OCwyOEg4LjQ3TDksMjcuMzRsLTEuNy0xLjdaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cmVjdCB4PSIzLjA2IiB5PSIzMSIg''@;'; put 'put ''d2lkdGg9IjMwIiBoZWlnaHQ9IjMiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00Ii8+JyksUi5DbHJTaGFwZU91dGRlbnQ9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMxLjA2LDloLTI2YTEsMSwwLDEsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNz''@;'; put 'put ''PSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxNGgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDE5''@;'; put 'put ''aC0xN2ExLDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMyIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNs''@;'; put 'put ''ci1pLW91dGxpbmUtcGF0aC00Ii8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwyOWgtMjZhMSwxLDAsMCwxLDAtMmgyNmExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTUiLz5cbiAgPHBhdGggZD0iTTkuNTYsMjIuNTRhMSwxLDAsMCwxLS43LS4z''@;'; put 'put ''TDQuNjEsMThsNC4yNS00LjI0YTEsMSwwLDAsMSwxLjQxLDEuNDFMNy40NCwxOGwyLjgzLDIuODNhMSwxLDAsMCwxLS43MSwxLjcxWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTYiLz4nKSxSLkNsclNoYXBlSW5kZW50PSgwLHguY2xySWNvblNWRykoJzxwYXRo''@;'; put 'put ''IGQ9Ik0zMS4wNiw5aC0yNmExLDEsMCwxLDEsMC0yaDI2YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMTRoLTE3YTEsMSwwLDAsMSwwLTJoMTdhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIi8+XG4gIDxwYXRoIGQ9Ik0zMS4wNiwxOWgtMTdhMSwxLDAsMCwxLDAtMmgxN2ExLDEsMCwxLDEsMCwyWiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTMiLz5cbiAgPHBhdGggZD0iTTMxLjA2LDI0aC0xN2Ex''@;'; put 'put ''LDEsMCwwLDEsMC0yaDE3YTEsMSwwLDEsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNCIvPlxuICA8cGF0aCBkPSJNMzEuMDYsMjloLTI2YTEsMSwwLDAsMSwwLTJoMjZhMSwxLDAsMSwxLDAsMloiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC01Ii8+XG4gIDxwYXRoIGQ9Ik01LjU2LDIyLjU0YTEsMSwwLDAsMS0uNy0xLjcxTDcuNjgsMTgsNC44NiwxNS4xN2ExLDEsMCwwLDEsMC0xLjQxLDEsMSwwLDAsMSwxLjQxLDBMMTAuNTEsMTgsNi4yNywyMi4yNEExLDEsMCwwLDEsNS41NiwyMi41NFoiIGNsYXNzPSJjbHIt''@;'; put 'put ''aS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC02Ii8+JyksUi5DbHJTaGFwZVN0cmlrZXRocm91Z2g9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTMyLjg4LDE5LjkyaC0zMGExLDEsMCwxLDEsMC0yaDMwYTEsMSwwLDAsMSwwLDJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; 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 ''OS4zMSwyNy4yLDYsNiwwLDAsMCwxMiwyNi41N2E0LjYyLDQuNjIsMCwwLDAsMi0xLjc0VjI2YS44Ni44NiwwLDAsMCwuODYuODZIMTVhLjg2Ljg2LDAsMCwwLC44Ni0uODZWMjJaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtNSIvPicpLFIuQ2xyU2hhcGVTdWJz''@;'; put 'put ''Y3JpcHQ9KDAseC5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE0LjU1LDE4bDYuOCw4LjZhMS4xNywxLjE3LDAsMCwxLS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NEwxMywxOS45MSw2LjYsMjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45''@;'; put 'put ''TDExLjU1LDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4xNywxLjE3LDAsMCwxLDYuNjMsOGw2LjQ0LDguMTNMMTkuNSw4YTEuMTcsMS4xNywwLDAsMSwuOTItLjQ0aDBhMS4xNywxLjE3LDAsMCwxLC45MiwxLjlaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1v''@;'; put 'put ''dXRsaW5lLXBhdGgtMSIvPlxuICA8cGF0aCBkPSJNMjMsMzEuOCwyNy40OSwyOGE5LjksOS45LDAsMCwwLDEuODgtMi4wNUEzLjQ0LDMuNDQsMCwwLDAsMzAsMjRhMi4zNSwyLjM1LDAsMCwwLS4zNS0xLjI3LDIuNDQsMi40NCwwLDAsMC0xLS44NCwyLjksMi45LDAsMCwwLTEuMjYtLjI4LDMu''@;'; put 'put ''MzYsMy4zNiwwLDAsMC0xLjgzLjUsNS42NCw1LjY0LDAsMCwwLTEuNDgsMS40MmwtMS0uODFhNS4xMSw1LjExLDAsMCwxLDQuMzYtMi4zNyw0LjM1LDQuMzUsMCwwLDEsMiwuNDUsMy40MywzLjQzLDAsMCwxLDIsMy4xOCw0LjQ1LDQuNDUsMCwwLDEtLjY4LDIuMzUsMTAuOSwxMC45LDAsMCwx''@;'; put 'put ''LTIuMjQsMi40NmwtMy4yNCwyLjgxSDMxLjVWMzNIMjNaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIvPicpLFIuQ2xyU2hhcGVTdXBlcnNjcmlwdD0oMCx4LmNsckljb25TVkcpKCc8cGF0aCBkPSJNMTQuNDMsMThsNi43OSw4LjZhMS4xNywxLjE3LDAsMCwx''@;'; put 'put ''LS45MiwxLjloMGExLjE3LDEuMTcsMCwwLDEtLjkyLS40NGwtNi40NC04LjEzTDYuNDcsMjhhMS4xNywxLjE3LDAsMCwxLS45Mi40NGgwYTEuMTcsMS4xNywwLDAsMS0uOTItMS45TDExLjQzLDE4bC02LjgtOC42YTEuMTcsMS4xNywwLDAsMSwuOTItMS45aDBBMS4yLDEuMiwwLDAsMSw2LjUx''@;'; put 'put ''LDhsNi40Myw4LjEzTDE5LjM4LDhhMS4xNywxLjE3LDAsMCwxLC45Mi0uNDRoMGExLjE3LDEuMTcsMCwwLDEsLjkyLDEuOVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0xIi8+XG4gIDxwYXRoIGQ9Ik0yMi44NSwxNC40N2w0LjUxLTMuODVhOS4zNyw5LjM3LDAs''@;'; put 'put ''MCwwLDEuODgtMiwzLjQzLDMuNDMsMCwwLDAsLjU5LTEuODYsMi4yNywyLjI3LDAsMCwwLS4zNi0xLjI3LDIuMzgsMi4zOCwwLDAsMC0uOTUtLjgzLDIuNzcsMi43NywwLDAsMC0xLjI2LS4yOSwzLjM5LDMuMzksMCwwLDAtMS44My41LDUuODMsNS44MywwLDAsMC0xLjQ5LDEuNDJsLTEtLjgx''@;'; put 'put ''YTUuMTIsNS4xMiwwLDAsMSw0LjM2LTIuMzcsNC4zNiw0LjM2LDAsMCwxLDIsLjQ1LDMuNDcsMy40NywwLDAsMSwyLDMuMThBNC40NCw0LjQ0LDAsMCwxLDMwLjU4LDlhMTEuMTQsMTEuMTQsMCwwLDEtMi4yNCwyLjQ2TDI1LjEsMTQuMzFoNi4yOHYxLjMzSDIyLjg1WiIgY2xhc3M9ImNsci1p''@;'; put 'put ''LW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiLz4nKSxSLlRleHRFZGl0U2hhcGVzPXtib2xkOlIuQ2xyU2hhcGVCb2xkLCJidWxsZXQtbGlzdCI6Ui5DbHJTaGFwZUJ1bGxldExpc3QsImNoZWNrYm94LWxpc3QiOlIuQ2xyU2hhcGVDaGVja2JveExpc3QsIm51bWJlci1saXN0IjpSLkNs''@;'; put 'put ''clNoYXBlTnVtYmVyTGlzdCwiZm9udC1zaXplIjpSLkNsclNoYXBlRm9udFNpemUsaXRhbGljOlIuQ2xyU2hhcGVJdGFsaWMsImp1c3RpZnktdGV4dCI6Ui5DbHJTaGFwZUp1c3RpZnlUZXh0LCJjZW50ZXItdGV4dCI6Ui5DbHJTaGFwZUNlbnRlclRleHQsImFsaWduLWxlZnQtdGV4dCI6Ui5D''@;'; put 'put ''bHJTaGFwZUFsaWduTGVmdFRleHQsImFsaWduLXJpZ2h0LXRleHQiOlIuQ2xyU2hhcGVBbGlnblJpZ2h0VGV4dCwicGFpbnQtcm9sbGVyIjpSLkNsclNoYXBlUGFpbnRSb2xsZXIsImJsb2NrLXF1b3RlIjpSLkNsclNoYXBlQmxvY2tRdW90ZSx0ZXh0OlIuQ2xyU2hhcGVUZXh0LHVuZGVybGlu''@;'; put 'put ''ZTpSLkNsclNoYXBlVW5kZXJsaW5lLCJhbGlnbi1jZW50ZXIiOlIuQ2xyU2hhcGVBbGlnbkNlbnRlciwiYWxpZ24tbGVmdCI6Ui5DbHJTaGFwZUFsaWduTGVmdCwiYWxpZ24tcmlnaHQiOlIuQ2xyU2hhcGVBbGlnblJpZ2h0LCJhbGlnbi1ib3R0b20iOlIuQ2xyU2hhcGVBbGlnbkJvdHRvbSwi''@;'; put 'put ''YWxpZ24tbWlkZGxlIjpSLkNsclNoYXBlQWxpZ25NaWRkbGUsImFsaWduLXRvcCI6Ui5DbHJTaGFwZUFsaWduVG9wLGxhbmd1YWdlOlIuQ2xyU2hhcGVMYW5ndWFnZSwidGV4dC1jb2xvciI6Ui5DbHJTaGFwZVRleHRDb2xvcixoaWdobGlnaHRlcjpSLkNsclNoYXBlSGlnaGxpZ2h0ZXIsaW5k''@;'; put 'put ''ZW50OlIuQ2xyU2hhcGVJbmRlbnQsb3V0ZGVudDpSLkNsclNoYXBlT3V0ZGVudCxzdHJpa2V0aHJvdWdoOlIuQ2xyU2hhcGVTdHJpa2V0aHJvdWdoLHN1YnNjcmlwdDpSLkNsclNoYXBlU3Vic2NyaXB0LHN1cGVyc2NyaXB0OlIuQ2xyU2hhcGVTdXBlcnNjcmlwdH0sdHlwZW9mIHdpbmRvdzwi''@;'; put 'put ''dSImJndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgiQ2xhcml0eUljb25zIikmJndpbmRvdy5DbGFyaXR5SWNvbnMuYWRkKFIuVGV4dEVkaXRTaGFwZXMpfSwiLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvc2hhcGVzL3RyYXZlbC1zaGFwZXMudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq''@;'; put 'put ''KioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSLlRyYXZlbFNoYXBlcz1SLkNsclNoYXBlT25Ib2xpZGF5PVIuQ2xyU2hhcGVU''@;'; put 'put ''cmFpbGVyPVIuQ2xyU2hhcGVGZXJyeT1SLkNsclNoYXBlQ2FyYXZhbj1SLkNsclNoYXBlQ2FtcGVydmFuPVIuQ2xyU2hhcGVCb2F0PVIuQ2xyU2hhcGVCaWN5Y2xlPVIuQ2xyU2hhcGVNYXBNYXJrZXI9Ui5DbHJTaGFwZUNvbXBhc3M9Ui5DbHJTaGFwZU1hcD1SLkNsclNoYXBlQ2FyPVIuQ2xy''@;'; put 'put ''U2hhcGVBaXJwbGFuZT1SLkNsclNoYXBlVHJ1Y2s9dm9pZCAwO3ZhciB4PW9lKAovKiEgLi4vdXRpbHMvZGVzY3JpcHRvci1jb25maWcgKi8KIi4vcHJvamVjdHMvaWNvbnMvc3JjL3V0aWxzL2Rlc2NyaXB0b3ItY29uZmlnLnRzIiksbT1vZSgKLyohIC4uL3V0aWxzL3N2Zy10YWctZ2VuZXJh''@;'; put 'put ''dG9yICovCiIuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyIpO1IuQ2xyU2hhcGVUcnVjaz0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCww''@;'; put 'put ''LTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwxLDAsMCwwLDEsMUg0VjhIMjRWMTkuN2E2LjQ1LDYuNDUsMCwwLDEsMS41Ni0uMmMuMTUsMCwuMjksMCwuNDQsMFYxNGg0YTIsMiwwLDAsMSwyLDJ2MUgyOHYyaDR2NUgyOS42YTQuNTQsNC41NCwwLDAsMC04LjM0LDBIMTQuNDNhNC41LDQuNSww''@;'; put 'put ''LDAsMC00LjE3LTIuNzZBNC4zOCw0LjM4LDAsMSwwLDE0LjcyLDI2SDIxYTQuNDksNC40OSwwLDAsMCw4LjkyLDBIMzNhMSwxLDAsMCwwLDEtMVYxNkE0LDQsMCwwLDAsMzAsMTJaTTEwLjI2LDI4YTIuMzgsMi4zOCwwLDEsMSwwLTQuNzUsMi4zOCwyLjM4LDAsMSwxLDAsNC43NVptMTUuMTcs''@;'; put 'put ''MGEyLjM4LDIuMzgsMCwxLDEsMi41LTIuMzdBMi40NCwyLjQ0LDAsMCwxLDI1LjQzLDI4WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTMwLDEySDI2VjdhMSwxLDAsMCwwLTEtMUgzQTEsMSwwLDAsMCwyLDdWMjVhMSwx''@;'; put 'put ''LDAsMCwwLDEsMUg0VjhIMjRWMjEuNDlBNC40NSw0LjQ1LDAsMCwwLDIxLjI1LDI0SDE0LjQzYTQuNSw0LjUsMCwwLDAtNC4xNy0yLjc2QTQuMzgsNC4zOCwwLDEsMCwxNC43MiwyNkgyMWE0LjQ4LDQuNDgsMCwwLDAsOC45MSwwSDM0VjE2QTQsNCwwLDAsMCwzMCwxMlpNMTAuMjYsMjhhMi4z''@;'; put 'put ''OCwyLjM4LDAsMSwxLDAtNC43NSwyLjM4LDIuMzgsMCwxLDEsMCw0Ljc1Wm0xNS4xNywwYTIuMzgsMi4zOCwwLDEsMSwyLjUtMi4zN0EyLjQ0LDIuNDQsMCwwLDEsMjUuNDIsMjhaTTMyLDE3SDI2VjE0aDRhMiwyLDAsMCwxLDIsMloiLz4nKSxSLkNsclNoYXBlQWlycGxhbmU9KDAsbS5jbHJJ''@;'; put 'put ''Y29uU1ZHKSgnPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIGQ9Ik0zNS43Nyw4LjE2YTIuNDMsMi40MywwLDAsMC0xLjktMkwyOCw0Ljg3YTQuNSw0LjUsMCwwLDAtMy42NS43OUw3LDE4LjMsMi4xNCwxOC4xQTEuODYsMS44NiwwLDAsMCwuOTEsMjEu''@;'; put 'put ''NDFsNSwzLjkzYy42LjczLDEsLjU5LDEwLjkzLTQuODJsLjkzLDkuNDJhMS4zNiwxLjM2LDAsMCwwLC44NSwxLjE4LDEuNDMsMS40MywwLDAsMCwuNTQuMSwxLjU0LDEuNTQsMCwwLDAsMS0uNDFsMi4zOS0yLjE4YTEuNTIsMS41MiwwLDAsMCwuNDYtLjgzTDI1LjIsMTUuOWMzLjU3LTIsNi45''@;'; put 'put ''NS0zLjg4LDkuMzYtNS4yNUEyLjQzLDIuNDMsMCwwLDAsMzUuNzcsOC4xNlptLTIuMi43NWMtMi41LDEuNDItNiwzLjQxLTkuNzYsNS40N2wtLjQxLjIzTDIxLjA3LDI3LjI4bC0xLjQ3LDEuMzRMMTguNSwxNy4zMiwxNy4xNywxOEMxMCwyMiw3LjYxLDIzLjE2LDYuNzksMjMuNTJsLTQuMy0z''@;'; put 'put ''LjQxLDUuMDguMjIsMTgtMTMuMDZhMi41MSwyLjUxLDAsMCwxLDItLjQ1bDUuODUsMS4yNmEuNDMuNDMsMCwwLDEsLjM1LjM3QS40Mi40MiwwLDAsMSwzMy41Nyw4LjkxWiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTIiIGQ9''@;'; put 'put ''Ik03LDEyLjU0bDMuNTYsMSwxLjY0LTEuMTktNC0xLjE2TDEwLDEwLjA5bDUuNDctLjE2LDIuMy0xLjY3TDEwLDguNWExLjI1LDEuMjUsMCwwLDAtLjcuMTdMNi42NywxMC4yQTEuMjgsMS4yOCwwLDAsMCw3LDEyLjU0WiIvPlxuICAgICAgICAgICAgPHBhdGggY2xhc3M9ImNsci1pLXNvbGlk''@;'; put 'put ''IGNsci1pLXNvbGlkLXBhdGgtMSIgZD0iTTYuMjUsMTEuNSwxMiwxMy4xNmw2LjMyLTQuNTktOS4wNy4yNkEuNTIuNTIsMCwwLDAsOSw4LjkxTDYuMTMsMTAuNTZBLjUxLjUxLDAsMCwwLDYuMjUsMTEuNVoiLz5cbiAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJjbHItaS1zb2xpZCBjbHItaS1z''@;'; put 'put ''b2xpZC1wYXRoLTIiIGQ9Ik0zNC41Miw2LjM2LDI4LjIyLDVhMy43OCwzLjc4LDAsMCwwLTMuMDcuNjdMNi4xMiwxOS41bC00LjU3LS4yYTEuMjUsMS4yNSwwLDAsMC0uODMsMi4yMmw0LjQ1LDMuNTNhLjU1LjU1LDAsMCwwLC41My4wOWMxLjI3LS40OSw2LTMsMTEuNTktNi4wN2wxLjEyLDEx''@;'; put 'put ''LjUxYS41NS41NSwwLDAsMCwuOS4zN2wyLjUtMi4wOGEuNzYuNzYsMCwwLDAsLjI2LS40NWwyLjM3LTEzLjI5YzQtMi4yMiw3LjgyLTQuMzcsMTAuNTEtNS44OUExLjU1LDEuNTUsMCwwLDAsMzQuNTIsNi4zNloiLz4nKSxSLkNsclNoYXBlQ2FyPSgwLG0uY2xySWNvblNWRykoJzxyZWN0IGNs''@;'; 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+JyksUi5DbHJTaGFwZU1hcD0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgZD0i''@;'; put 'put ''TTMzLjU5LDYuMTlBMSwxLDAsMCwwLDMyLjcsNkwyMy4wOSw5LDEzLjQ2LDQuMTFhMSwxLDAsMCwwLS44NCwwTDIuNjIsOC4yQTEsMSwwLDAsMCwyLDkuMTNWMjkuNjFhMSwxLDAsMCwwLDEuMzguOTJMMTMsMjYuNThsOS41OSw0LjkyYTEsMSwwLDAsMCwuNDYuMTEsMSwxLDAsMCwwLC4zLDBs''@;'; put 'put ''MTAtMy4xMmExLDEsMCwwLDAsLjctMVY3QTEsMSwwLDAsMCwzMy41OSw2LjE5Wk0zMiwyNi43NWwtOC4zMiwyLjZWMjcuMDZoLTEuNnYybC04LjQtNC4zMVYyMy4wNmgtMS42djEuNzJMNCwyOC4xMVY5Ljc5bDguMDgtMy4zM1Y4LjgxaDEuNlY2LjQ3bDguNCw0LjN2Mi4xaDEuNlYxMUwzMiw4''@;'; put 'put ''LjM2WiIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiB4PSIyMi4wOCIgeT0iMTUuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5l''@;'; put 'put ''IGNsci1pLW91dGxpbmUtcGF0aC0zIiB4PSIyMi4wOCIgeT0iMjEuMDYiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC00IiB4PSIxMi4wOCIgeT0iMTEuMDYiIHdpZHRoPSIx''@;'; put 'put ''LjYiIGhlaWdodD0iMy44MSIvPlxuICAgICAgICAgICAgICAgIDxyZWN0IGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC01IiB4PSIxMi4wOCIgeT0iMTcuMTMiIHdpZHRoPSIxLjYiIGhlaWdodD0iMy43NSIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPSJj''@;'; put 'put ''bHItaS1zb2xpZCBjbHItaS1zb2xpZC1wYXRoLTEiIGQ9Ik0zMy4zMSw3LjM1LDI1LDkuOTRWMTRIMjNWMTAuMjlMMTQsNS42OFY5SDEyVjUuMjdsLTkuNjcsNEEuNTMuNTMsMCwwLDAsMiw5Ljc1VjMwLjQ1YS41My41MywwLDAsMCwuNzQuNDlMMTIsMjcuMTJWMjNoMnY0LjUzbDksNC42MVYy''@;'; put 'put ''OGgydjMuNzlsOC42My0yLjdhLjUzLjUzLDAsMCwwLC4zNy0uNTFWNy44NkEuNTMuNTMsMCwwLDAsMzMuMzEsNy4zNVpNMTQsMjFIMTJWMTdoMlptMC02SDEyVjExaDJaTTI1LDI2SDIzVjIyaDJabTAtNkgyM1YxNmgyWiIvPicpLFIuQ2xyU2hhcGVDb21wYXNzPSgwLG0uY2xySWNvblNWRyko''@;'; put 'put ''JzxwYXRoIGQ9Ik0yMC44MiwxNS4zMWgwTDEwLjQ2LDljLS40Ni0uMjYtMS4xMS4zNy0uODYuODRsNi4xNSwxMC41NiwxMC41Niw2LjE1YS42Ni42NiwwLDAsMCwuODQtLjg2Wm0tNCw0LDMtMyw0LjU1LDcuNDRaIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIg''@;'; put 'put ''Lz5cbiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTEsMjkuOTVWMjkuNTNIMTd2Mi40MkExNCwxNCwwLDAsMSw0LjA1LDE5SDYuNDdWMTdINC4wNUExNCwxNCwwLDAsMSwxNyw0LjA1VjYuNDdoMlY0LjA1QTE0LDE0LDAsMCwx''@;'; put 'put ''LDMxLjk1LDE3SDI5LjUzdjJoMi40MkExNCwxNCwwLDAsMSwxOSwzMS45NVoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPlxuICAgICAgICAgICAgPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNNi40NywxOUg0''@;'; put 'put ''LjA1YzAtLjMzLS4wNS0uNjYtLjA1LTFzMC0uNjcuMDUtMUg2LjQ3Wk0xNyw0LjA1Yy4zMywwLC42Ni0uMDUsMS0uMDVzLjY3LDAsMSwuMDVWNi40N0gxN1ptMiwyNy45Yy0uMzMsMC0uNjYuMDUtMSwuMDVzLS42NywwLTEtLjA1VjI5LjUzaDJabTgtNS41OGEuNTkuNTksMCwwLDEtLjY5LjE2''@;'; put 'put ''TDE1Ljc1LDIwLjM4LDkuNiw5LjgyYy0uMjUtLjQ3LjM5LTEuMS44Ni0uODRsMTAuMzcsNi4zM2gwbDYuMzMsMTAuMzdBLjU5LjU5LDAsMCwxLDI3LDI2LjM3Wk0yOS41MywxOVYxN2gyLjQyYzAsLjMzLjA1LjY2LjA1LDFzMCwuNjctLjA1LDFaIiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWkt''@;'; put 'put ''c29saWQtcGF0aC0xIiAvPlxuICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIxNi43NyAxOS4zNSAyNC4zNSAyMy43NyAxOS44IDE2LjMzIDE2Ljc3IDE5LjM1IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVNYXBNYXJrZXI9KDAsbS5j''@;'; 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 ''IjYiIHI9IjUiLz4nKSxSLkNsclNoYXBlQmljeWNsZT0oMCxtLmNsckljb25TVkcpKCc8cGF0aCBkPSJNOC41LDI5LjY1QTYuNTEsNi41MSwwLDAsMSwyLDIzLjE1YTYuMzksNi4zOSwwLDAsMSw2LjUtNi4zNkE2LjM5LDYuMzksMCwwLDEsMTUsMjMuMTUsNi41MSw2LjUxLDAsMCwxLDguNSwy''@;'; 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 ''MiwxLjMsMC41LDEuOCwwLjhsMS42LTMuMmgxMEwyNC43LDE2Ljd6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC01IiAvPicpLFIuQ2xyU2hhcGVCb2F0PSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0yOS4xLDI3LjFDMjgsMjcsMjYuOSwyNy40LDI2LDI4LjJjLTEu''@;'; 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 ''MmMwLjcsMCwxLjMsMC40LDEuNywxTDI2LDE1LjhjMC42LDEsMC4yLDIuMi0wLjcsMi43QzI1LDE4LjcsMjQuNiwxOC44LDI0LjMsMTguOVxuXHRMMjQuMywxOC45eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtNCIgLz4nKSxSLkNsclNoYXBlQ2FtcGVydmFuPSgwLG0u''@;'; 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+JyksUi5DbHJTaGFwZUNhcmF2YW49KDAs''@;'; put 'put ''bS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTEzLjUsMjFDMTEsMjEsOSwyMyw5LDI1LjVzMiw0LjUsNC41LDQuNWMyLjUsMCw0LjUtMiw0LjUtNC41QzE4LDIzLDE2LDIxLDEzLjUsMjF6IE0xMy41LDI4Yy0xLjQsMC0yLjUtMS4xLTIuNS0yLjVcblx0XHRzMS4xLTIuNSwyLjUtMi41czIuNSwx''@;'; put 'put ''LjEsMi41LDIuNVMxNC45LDI4LDEzLjUsMjh6IiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEtMS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywy''@;'; put 'put ''LDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRcdGMtMC42LDAtMS0wLjQtMS0xVjljMC0wLjYsMC40LTEsMS0xaDE4LjhjMC40LDAsMC43LDAuMiwwLjksMC41bDQuMiw3LjVjMC4xLDAuMSwwLjEsMC4zLDAuMSwwLjVWMjRoLTRWMTJoLTd2OGgydi02aDN2MTBoLTN2MmgxM1xuXHRc''@;'; put 'put ''dGMwLjYsMCwxLTAuNCwxLTFTMzMuNiwyNCwzMywyNHoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0yIiAvPjxwYXRoIGQ9Ik0xNiwxMkg3djZoOVYxMnogTTE0LDE2SDl2LTJoNVYxNnoiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0z''@;'; put 'put ''IiAvPjxwYXRoIGQ9Ik0xMy41LDMwQzExLDMwLDksMjgsOSwyNS41czItNC41LDQuNS00LjVzNC41LDIsNC41LDQuNUMxOCwyOCwxNiwzMCwxMy41LDMweiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMzMsMjRoLTJ2LTcuNWMwLTAuNS0wLjEt''@;'; put 'put ''MS0wLjQtMS41bC00LjItNy41Yy0wLjUtMS0xLjUtMS41LTIuNi0xLjVINUMzLjMsNiwyLDcuMywyLDl2MTRjMCwxLjcsMS4zLDMsMywzaDJ2LTJINVxuXHRjLTAuNiwwLTEtMC40LTEtMVY5YzAtMC42LDAuNC0xLDEtMWgxOC44YzAuNCwwLDAuNywwLjIsMC45LDAuNWw0LjIsNy41YzAuMSww''@;'; put 'put ''LjEsMC4xLDAuMywwLjEsMC41VjI0aC00VjEyaC03djhoMnYtNmgzdjEwaC0zdjJoMTNcblx0YzAuNiwwLDEtMC40LDEtMVMzMy42LDI0LDMzLDI0eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMiIgLz48cGF0aCBkPSJNMTYsMThIN3YtNmg5VjE4eiIgY2xhc3M9ImNs''@;'; put 'put ''ci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMyIgLz4nKSxSLkNsclNoYXBlRmVycnk9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTI5LDI1LjFjLTEuMiwwLTIuMywwLjQtMy4zLDEuMWMwLDAsMCwwLDAsMGMtMS4xLDEuMS0zLDEuMS00LjEsMGMtMC45LTAuOC0yLjEtMS4yLTMuMy0x''@;'; 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 ''MTB6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVUcmFpbGVyPSgwLG0uY2xySWNvblNWRykoJzxwYXRoIGQ9Ik0xNSwxOS4yYy0zLjIsMC01LjgsMi42LTUuOCw1LjhzMi42LDUuOCw1LjgsNS44czUuOC0yLjYsNS44LTUuOFMxOC4yLDE5''@;'; put 'put ''LjIsMTUsMTkuMnogTTE1LDI5LjJjLTIuMywwLTQuMi0xLjktNC4yLTQuMlxuXHRcdHMxLjktNC4yLDQuMi00LjJzNC4yLDEuOSw0LjIsNC4yUzE3LjMsMjkuMiwxNSwyOS4yeiIgY2xhc3M9ImNsci1pLW91dGxpbmUgY2xyLWktb3V0bGluZS1wYXRoLTEiIC8+PHJlY3QgeD0iMTQiIHk9IjI0''@;'; put 'put ''IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBjbGFzcz0iY2xyLWktb3V0bGluZSBjbHItaS1vdXRsaW5lLXBhdGgtMiIgLz48cGF0aCBkPSJNMzMsOUgydjEzLjFjMCwwLDAsMCwwLDBDMiwyNC4zLDMuNywyNiw1LjksMjZIN3YtMkg1LjljLTEsMC0xLjgtMC44LTEuOS0xLjlWMTVoMjJ2Ny4xYzAs''@;'; put 'put ''MS0wLjgsMS44LTEuOSwxLjlIMjN2MmgxLjFcblx0XHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjExaDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiBNMjYsMTNINHYtMmgyMlYxM3oiIGNsYXNzPSJjbHItaS1vdXRsaW5lIGNsci1pLW91dGxpbmUtcGF0aC0zIiAv''@;'; put 'put ''PjxwYXRoIGQ9Ik0zMyw5SDJ2MTMuMWMwLDAsMCwwLDAsMEMyLDI0LjMsMy43LDI2LDUuOSwyNkg3di0ySDUuOWMtMSwwLTEuOC0wLjgtMS45LTEuOVYxNWgyMnY3LjFjMCwxLTAuOCwxLjgtMS45LDEuOUgyM3YyaDEuMVxuXHRjMCwwLDAsMCwwLDBjMi4xLDAsMy44LTEuNywzLjgtMy45VjEx''@;'; put 'put ''aDVjMC42LDAsMS0wLjQsMS0xUzMzLjYsOSwzMyw5eiIgY2xhc3M9ImNsci1pLXNvbGlkIGNsci1pLXNvbGlkLXBhdGgtMSIgLz48cGF0aCBkPSJNMTUsMTkuMmMtMy4yLDAtNS44LDIuNi01LjgsNS44czIuNiw1LjgsNS44LDUuOHM1LjgtMi42LDUuOC01LjhsMCwwQzIwLjgsMjEuOCwxOC4y''@;'; put 'put ''LDE5LjIsMTUsMTkuMnogTTE2LDI2aC0ydi0yaDJWMjZ6IiBjbGFzcz0iY2xyLWktc29saWQgY2xyLWktc29saWQtcGF0aC0yIiAvPicpLFIuQ2xyU2hhcGVPbkhvbGlkYXk9KDAsbS5jbHJJY29uU1ZHKSgnPHBhdGggZD0iTTE4LjA4LDIuMzRjLTguODIsMC0xNiw2LjI4LTE2LDE0czcuMTgs''@;'; 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 ''ZCBjbHItaS1zb2xpZC1wYXRoLTEiLz5cbiAgJyksUi5UcmF2ZWxTaGFwZXM9e3RydWNrOlIuQ2xyU2hhcGVUcnVjayxhaXJwbGFuZTpSLkNsclNoYXBlQWlycGxhbmUsY2FyOlIuQ2xyU2hhcGVDYXIsbWFwOlIuQ2xyU2hhcGVNYXAsY29tcGFzczpSLkNsclNoYXBlQ29tcGFzcywibWFwLW1h''@;'; put 'put ''cmtlciI6Ui5DbHJTaGFwZU1hcE1hcmtlcixiaWN5Y2xlOlIuQ2xyU2hhcGVCaWN5Y2xlLGJvYXQ6Ui5DbHJTaGFwZUJvYXQsY2FtcGVydmFuOlIuQ2xyU2hhcGVDYW1wZXJ2YW4sY2FyYXZhbjpSLkNsclNoYXBlQ2FyYXZhbixmZXJyeTpSLkNsclNoYXBlRmVycnksdHJhaWxlcjpSLkNsclNo''@;'; put 'put ''YXBlVHJhaWxlciwib24taG9saWRheSI6Ui5DbHJTaGFwZU9uSG9saWRheX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFIuVHJhdmVsU2hhcGVzLCJwbGFuZSIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlRyYXZlbFNoYXBlcy5haXJwbGFuZSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSLlRy''@;'; put 'put ''YXZlbFNoYXBlcywiYXV0byIsKDAseC5kZXNjcmlwdG9yQ29uZmlnKShSLlRyYXZlbFNoYXBlcy5jYXIpKSx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lmhhc093blByb3BlcnR5KCJDbGFyaXR5SWNvbnMiKSYmd2luZG93LkNsYXJpdHlJY29ucy5hZGQoUi5UcmF2ZWxTaGFwZXMpfSwiLi9w''@;'; put 'put ''cm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3JpcHRvci1jb25maWcudHMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgICAgICAgICAgICAgICAgICEqKiogLi9wcm9qZWN0cy9pY29ucy9zcmMvdXRpbHMvZGVzY3Jp''@;'; put 'put ''cHRvci1jb25maWcudHMgKioqIQogICAgICAgICAgICAgICAgICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShSLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxSLmRlc2NyaXB0b3JDb25maWc9dm9pZCAwLFIuZGVzY3JpcHRvckNvbmZpZz1mdW5jdGlvbiB4KG0pe3JldHVybntlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTptfX19LCIuL3By''@;'; put 'put ''b2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFnLWdlbmVyYXRvci50cyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAgICAgICAgICAgICAgICAgISoqKiAuL3Byb2plY3RzL2ljb25zL3NyYy91dGlscy9zdmctdGFn''@;'; put 'put ''LWdlbmVyYXRvci50cyAqKiohCiAgICAgICAgICAgICAgICAgIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9mdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0cmljdCI7T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KFIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFIuY2xySWNvblNWRz12b2lkIDA7Ui5jbHJJY29uU1ZHPWZ1bmN0aW9uIE0oTyl7dmFyIEk9IiI7cmV0dXJuIE8uaW5kZXhPZigiLS1iYWRnZWQiKT4tMSYmKEkrPSJjYW4tYmFkZ2UgIiksTy5pbmRleE9mKCItLWFsZXJ0''@;'; put 'put ''ZWQiKT4tMSYmKEkrPSJjYW4tYWxlcnQgIiksTy5pbmRleE9mKCJjbHItaS1zb2xpZCIpPi0xJiYoSSs9Imhhcy1zb2xpZCAiKSwoST8nPHN2ZyB2ZXJzaW9uPSIxLjEiIGNsYXNzPSInK0krJyIgdmlld0JveD0iMCAwIDM2IDM2IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0''@;'; put 'put ''IlxuICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGZvY3VzYWJsZT0iZmFsc2UiIHJvbGU9ImltZyI+JzonPHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzNiAzNiIgcHJlc2VydmVB''@;'; put 'put ''c3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmb2N1c2FibGU9ImZhbHNlIiByb2xlPSJpbWciPicpK08rIjwvc3ZnPiJ9fX0pfSwxODcxMzoo''@;'; put 'put ''UWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPXt9O1IucihvZSksUi5kKG9lLHthcnJheUF2ZzooKT0+RVplLGFycmF5RWFjaDooKT0+VG4sYXJyYXlGaWx0ZXI6KCk9PkZoLGFycmF5RmxhdHRlbjooKT0+ZTFlLGFycmF5TWFwOigpPT54cyxhcnJheU1heDooKT0+TVplLGFycmF5TWlu''@;'; put 'put ''OigpPT54WmUsYXJyYXlSZWR1Y2U6KCk9Pk1jLGFycmF5U3VtOigpPT5RMGUsYXJyYXlVbmlxdWU6KCk9PlFZLGV4dGVuZEFycmF5OigpPT5KWSxnZXREaWZmZXJlbmNlT2ZBcnJheXM6KCk9PmVXLGdldEludGVyc2VjdGlvbk9mQXJyYXlzOigpPT5UWmUsZ2V0VW5pb25PZkFycmF5czooKT0+''@;'; put 'put ''a1plLHBpdm90OigpPT5HTSxzdHJpbmdUb0FycmF5OigpPT50Vyx0bzJkQXJyYXk6KCk9PkowZX0pO3ZhciB4PXt9O1Iucih4KSxSLmQoeCx7X2luamVjdFByb2R1Y3RJbmZvOigpPT5zMWUsaXNEZWZpbmVkOigpPT5zbyxpc0VtcHR5OigpPT5vYyxpc1JlZ0V4cDooKT0+dDFlLGlzVW5kZWZp''@;'; put 'put ''bmVkOigpPT5kbCxzdHJpbmdpZnk6KCk9PmljfSk7dmFyIG09e307Ui5yKG0pLFIuZChtLHtlcXVhbHNJZ25vcmVDYXNlOigpPT5SWmUsaXNQZXJjZW50VmFsdWU6KCk9PmlXLHJhbmRvbVN0cmluZzooKT0+clcsc2FuaXRpemU6KCk9PkpSLHN0cmlwVGFnczooKT0+c1csc3Vic3RpdHV0ZToo''@;'; put 'put ''KT0+b1csdG9VcHBlckNhc2VGaXJzdDooKT0+STB9KTt2YXIgc2U9e307Ui5yKHNlKSxSLmQoc2Use0hUTUxfQ0hBUkFDVEVSUzooKT0+eTFlLGFkZENsYXNzOigpPT5taSxhZGRFdmVudDooKT0+aVllLGNsZWFyVGV4dFNlbGVjdGlvbjooKT0+bVcsY2xvc2VzdDooKT0+SW0sY2xvc2VzdERv''@;'; put 'put ''d246KCk9PlhNLGVtcHR5OigpPT5zZixmYXN0SW5uZXJIVE1MOigpPT5aOCxmYXN0SW5uZXJUZXh0OigpPT5PbSxnZXRDYXJldFBvc2l0aW9uOigpPT5nVyxnZXRDb21wdXRlZFN0eWxlOigpPT54NCxnZXRDc3NUcmFuc2Zvcm06KCk9PmxZZSxnZXRGcmFtZUVsZW1lbnQ6KCk9Pm0xZSxnZXRN''@;'; put 'put ''YXhpbXVtU2Nyb2xsTGVmdDooKT0+QzFlLGdldE1heGltdW1TY3JvbGxUb3A6KCk9PncxZSxnZXRQYXJlbnQ6KCk9PnAxZSxnZXRQYXJlbnRXaW5kb3c6KCk9Pno4LGdldFNjcm9sbExlZnQ6KCk9PmZXLGdldFNjcm9sbFRvcDooKT0+dEwsZ2V0U2Nyb2xsYWJsZUVsZW1lbnQ6KCk9PkpNLGdl''@;'; put 'put ''dFNjcm9sbGJhcldpZHRoOigpPT5FdSxnZXRTZWxlY3Rpb25FbmRQb3NpdGlvbjooKT0+UzFlLGdldFNlbGVjdGlvblRleHQ6KCk9PnNZZSxnZXRTdHlsZTooKT0+cmIsZ2V0VHJpbW1pbmdDb250YWluZXI6KCk9Plk4LGdldFdpbmRvd1Njcm9sbExlZnQ6KCk9PmVMLGdldFdpbmRvd1Njcm9s''@;'; put 'put ''bFRvcDooKT0+aFcsaGFzQWNjZXNzVG9QYXJlbnRXaW5kb3c6KCk9Pm5ZZSxoYXNDbGFzczooKT0+WW8saGFzSG9yaXpvbnRhbFNjcm9sbGJhcjooKT0+eDFlLGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOigpPT5NMWUsaW5kZXg6KCk9PnYxZSxpbm5lckhlaWdodDooKT0+VzgsaW5uZXJXaWR0aDoo''@;'; put 'put ''KT0+cFcsaXNDaGlsZE9mOigpPT5SbSxpc0RldGFjaGVkOigpPT5fVyxpc0lucHV0OigpPT50eCxpc091dHNpZGVJbnB1dDooKT0+ckwsaXNUaGlzSG90Q2hpbGQ6KCk9PmcxZSxpc1Zpc2libGU6KCk9PlBtLG1ha2VFbGVtZW50Q29udGVudEVkaXRhYmxlQW5kU2VsZWN0SXRzQ29udGVudDoo''@;'; put 'put ''KT0+YlcsbWF0Y2hlc0NTU1J1bGVzOigpPT5yWWUsb2JzZXJ2ZVZpc2liaWxpdHlDaGFuZ2VPbmNlOigpPT5FMWUsb2Zmc2V0OigpPT54dSxvdXRlckhlaWdodDooKT0+Wmwsb3V0ZXJXaWR0aDooKT0+V2Esb3ZlcmxheUNvbnRhaW5zRWxlbWVudDooKT0+TG0scmVtb3ZlQXR0cmlidXRlOigp''@;'; put 'put ''PT5VOCxyZW1vdmVDbGFzczooKT0+bHMscmVtb3ZlQ29udGVudEVkaXRhYmxlRnJvbUVsZW1lbnRBbmREZXNlbGVjdDooKT0+eVcscmVtb3ZlRXZlbnQ6KCk9Pm9ZZSxyZW1vdmVUZXh0Tm9kZXM6KCk9PmRXLHJlc2V0Q3NzVHJhbnNmb3JtOigpPT5leCxydW5XaXRoU2VsZWN0ZWRDb250ZW5k''@;'; put 'put ''RWRpdGFibGVFbGVtZW50OigpPT5UMWUsc2VsZWN0RWxlbWVudElmQWxsb3dlZDooKT0+Y1llLHNldEF0dHJpYnV0ZTooKT0+Vm8sc2V0Q2FyZXRQb3NpdGlvbjooKT0+UU0sc2V0T3ZlcmxheVBvc2l0aW9uOigpPT5uTH0pO3ZhciBNPXt9O1IucihNKSxSLmQoTSx7Y3Vycnk6KCk9PkExZSxj''@;'; put 'put ''dXJyeVJpZ2h0OigpPT5oWWUsZGVib3VuY2U6KCk9PmlMLGZhc3RDYWxsOigpPT5vTCxpc0Z1bmN0aW9uOigpPT5obCxwYXJ0aWFsOigpPT53VyxwaXBlOigpPT5kWWUsdGhyb3R0bGU6KCk9PmsxZSx0aHJvdHRsZUFmdGVySGl0czooKT0+dVllfSk7dmFyIE89e307Ui5yKE8pLFIuZChPLHtj''@;'; put 'put ''bG9uZTooKT0+SGgsY3JlYXRlT2JqZWN0UHJvcExpc3RlbmVyOigpPT5WaCxkZWVwQ2xvbmU6KCk9PlIwLGRlZXBFeHRlbmQ6KCk9Pm54LGRlZXBPYmplY3RTaXplOigpPT5sTCxkZWZpbmVHZXR0ZXI6KCk9PkkzLGR1Y2tTY2hlbWE6KCk9PmliLGV4dGVuZDooKT0+RmMsZ2V0UHJvcGVydHk6''@;'; put 'put ''KCk9PkQxZSxoYXNPd25Qcm9wZXJ0eTooKT0+WWwsaW5oZXJpdDooKT0+RDMsaXNPYmplY3Q6KCk9Pl9zLGlzT2JqZWN0RXF1YWw6KCk9PnNMLG1peGluOigpPT5ybCxvYmplY3RFYWNoOigpPT5DcyxzZXRQcm9wZXJ0eTooKT0+YUx9KTt2YXIgST17fTtSLnIoSSksUi5kKEkse2NhbmNlbEFu''@;'; put 'put ''aW1hdGlvbkZyYW1lOigpPT5yeCxnZXRDb21wYXJpc29uRnVuY3Rpb246KCk9PlIxZSxpc0NTUjooKT0+STFlLGlzVG91Y2hTdXBwb3J0ZWQ6KCk9PkNXLHJlcXVlc3RBbmltYXRpb25GcmFtZTooKT0+Y0x9KTt2YXIgaj17fTtSLnIoaiksUi5kKGose2lzQ2hyb21lOigpPT5TVyxpc0Nocm9t''@;'; put 'put ''ZVdlYktpdDooKT0+UDFlLGlzRWRnZTooKT0+TjFlLGlzRWRnZVdlYktpdDooKT0+ZlllLGlzRmlyZWZveDooKT0+dUwsaXNGaXJlZm94V2ViS2l0OigpPT5GMWUsaXNJT1M6KCk9PnhXLGlzSXBhZE9TOigpPT5FVyxpc0xpbnV4T1M6KCk9PnBZZSxpc01hY09TOigpPT5peCxpc01vYmlsZUJy''@;'; put 'put ''b3dzZXI6KCk9PlQ0LGlzU2FmYXJpOigpPT5NVyxpc1dpbmRvd3NPUzooKT0+VFcsc2V0QnJvd3Nlck1ldGE6KCk9PkwxZSxzZXRQbGF0Zm9ybU1ldGE6KCk9Pk8xZX0pO3ZhciBHPXt9O1IucihHKSxSLmQoRyx7S0VZX0NPREVTOigpPT53byxpc0N0cmxLZXk6KCk9Pm1ZZSxpc0N0cmxNZXRh''@;'; put 'put ''S2V5OigpPT5WMWUsaXNGdW5jdGlvbktleTooKT0+a1csaXNLZXk6KCk9PmFiLGlzUHJpbnRhYmxlQ2hhcjooKT0+SDFlfSk7dmFyIEQ9e307Ui5yKEQpLFIuZChELHtpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDooKT0+Rm0saXNMZWZ0Q2xpY2s6KCk9PmRMLGlzUmlnaHRDbGljazoo''@;'; put 'put ''KT0+Tm0sb2Zmc2V0UmVsYXRpdmVUbzooKT0+QjFlLHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjooKT0+amh9KTt2YXIgVD17fTtSLnIoVCksUi5kKFQse19kYXRhVG9IVE1MOigpPT5IVyxodG1sVG9HcmlkU2V0dGluZ3M6KCk9PksxZSxpbnN0YW5jZVRvSFRNTDooKT0+Tld9KTt2YXIgRT17''@;'; put 'put ''fTtSLnIoRSksUi5kKEUse2NsYW1wOigpPT5IYSxpc051bWVyaWM6KCk9PkwwLGlzTnVtZXJpY0xpa2U6KCk9PlgxZSxyYW5nZUVhY2g6KCk9PmdvLHJhbmdlRWFjaFJldmVyc2U6KCk9PmJMLHZhbHVlQWNjb3JkaW5nUGVyY2VudDooKT0+Vld9KTt2YXIgej17fTtSLnIoeiksUi5kKHose2Nv''@;'; put 'put ''dW50Rmlyc3RSb3dLZXlzOigpPT5TRyxjcmVhdGVFbXB0eVNwcmVhZHNoZWV0RGF0YTooKT0+RyRlLGNyZWF0ZVNwcmVhZHNoZWV0RGF0YTooKT0+WSRlLGNyZWF0ZVNwcmVhZHNoZWV0T2JqZWN0RGF0YTooKT0+VyRlLGRhdGFSb3dUb0NoYW5nZXNBcnJheTooKT0+Q0csaXNBcnJheU9mQXJy''@;'; put 'put ''YXlzOigpPT5xZGUsaXNBcnJheU9mT2JqZWN0czooKT0+S2RlLHNwcmVhZHNoZWV0Q29sdW1uSW5kZXg6KCk9PlokZSxzcHJlYWRzaGVldENvbHVtbkxhYmVsOigpPT56TH0pO3ZhciBOPXt9O1IucihOKSxSLmQoTix7Q0hFQ0tCT1hfQ0hFQ0tFRDooKT0+ZXEsQ0hFQ0tCT1hfUkVOREVSRVJf''@;'; put 'put ''TkFNRVNQQUNFOigpPT5RJCxDSEVDS0JPWF9VTkNIRUNLRUQ6KCk9PnRxLENPTlRFWFRNRU5VX0lURU1TX0FERF9DT01NRU5UOigpPT5lJCxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlQ6KCk9PmkkLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9CT1RUT006KCk9PmQkLENPTlRFWFRN''@;'; put 'put ''RU5VX0lURU1TX0FMSUdOTUVOVF9DRU5URVI6KCk9PnMkLENPTlRFWFRNRU5VX0lURU1TX0FMSUdOTUVOVF9KVVNUSUZZOigpPT5sJCxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfTEVGVDooKT0+byQsQ09OVEVYVE1FTlVfSVRFTVNfQUxJR05NRU5UX01JRERMRTooKT0+dSQsQ09OVEVY''@;'; put 'put ''VE1FTlVfSVRFTVNfQUxJR05NRU5UX1JJR0hUOigpPT5hJCxDT05URVhUTUVOVV9JVEVNU19BTElHTk1FTlRfVE9QOigpPT5jJCxDT05URVhUTUVOVV9JVEVNU19CT1JERVJTOigpPT5oJCxDT05URVhUTUVOVV9JVEVNU19CT1JERVJTX0JPVFRPTTooKT0+ZyQsQ09OVEVYVE1FTlVfSVRFTVNf''@;'; put 'put ''Qk9SREVSU19MRUZUOigpPT5tJCxDT05URVhUTUVOVV9JVEVNU19CT1JERVJTX1JJR0hUOigpPT5wJCxDT05URVhUTUVOVV9JVEVNU19CT1JERVJTX1RPUDooKT0+ZiQsQ09OVEVYVE1FTlVfSVRFTVNfQ0xFQVJfQ09MVU1OOigpPT5aRyxDT05URVhUTUVOVV9JVEVNU19DT1BZOigpPT5ZRyxD''@;'; put 'put ''T05URVhUTUVOVV9JVEVNU19DT1BZX0NPTFVNTl9IRUFERVJTX09OTFk6KCk9PiRHLENPTlRFWFRNRU5VX0lURU1TX0NPUFlfV0lUSF9DT0xVTU5fR1JPVVBfSEVBREVSUzooKT0+R0csQ09OVEVYVE1FTlVfSVRFTVNfQ09QWV9XSVRIX0NPTFVNTl9IRUFERVJTOigpPT5XRyxDT05URVhUTUVO''@;'; put 'put ''VV9JVEVNU19DVVQ6KCk9PnFHLENPTlRFWFRNRU5VX0lURU1TX0VESVRfQ09NTUVOVDooKT0+dCQsQ09OVEVYVE1FTlVfSVRFTVNfRlJFRVpFX0NPTFVNTjooKT0+S0csQ09OVEVYVE1FTlVfSVRFTVNfSElERV9DT0xVTU46KCk9PnkkLENPTlRFWFRNRU5VX0lURU1TX0hJREVfUk9XOigpPT5D''@;'; put 'put ''JCxDT05URVhUTUVOVV9JVEVNU19JTlNFUlRfTEVGVDooKT0+TkcsQ09OVEVYVE1FTlVfSVRFTVNfSU5TRVJUX1JJR0hUOigpPT5IRyxDT05URVhUTUVOVV9JVEVNU19NRVJHRV9DRUxMUzooKT0+SkcsQ09OVEVYVE1FTlVfSVRFTVNfTkVTVEVEX1JPV1NfREVUQUNIX0NISUxEOigpPT5iJCxD''@;'; put 'put ''T05URVhUTUVOVV9JVEVNU19ORVNURURfUk9XU19JTlNFUlRfQ0hJTEQ6KCk9Pl8kLENPTlRFWFRNRU5VX0lURU1TX05PX0lURU1TOigpPT5PRyxDT05URVhUTUVOVV9JVEVNU19SRUFEX09OTFk6KCk9PlVHLENPTlRFWFRNRU5VX0lURU1TX1JFQURfT05MWV9DT01NRU5UOigpPT5yJCxDT05U''@;'; put 'put ''RVhUTUVOVV9JVEVNU19SRURPOigpPT56RyxDT05URVhUTUVOVV9JVEVNU19SRU1PVkVfQk9SREVSUzooKT0+diQsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0NPTFVNTjooKT0+QkcsQ09OVEVYVE1FTlVfSVRFTVNfUkVNT1ZFX0NPTU1FTlQ6KCk9Pm4kLENPTlRFWFRNRU5VX0lURU1TX1JF''@;'; put 'put ''TU9WRV9ST1c6KCk9PlZHLENPTlRFWFRNRU5VX0lURU1TX1JPV19BQk9WRTooKT0+UEcsQ09OVEVYVE1FTlVfSVRFTVNfUk9XX0JFTE9XOigpPT5GRyxDT05URVhUTUVOVV9JVEVNU19TSE9XX0NPTFVNTjooKT0+dyQsQ09OVEVYVE1FTlVfSVRFTVNfU0hPV19ST1c6KCk9PlMkLENPTlRFWFRN''@;'; put 'put ''RU5VX0lURU1TX1VORE86KCk9PmpHLENPTlRFWFRNRU5VX0lURU1TX1VORlJFRVpFX0NPTFVNTjooKT0+WEcsQ09OVEVYVE1FTlVfSVRFTVNfVU5NRVJHRV9DRUxMUzooKT0+UUcsQ09OVEVYVF9NRU5VX0lURU1TX05BTUVTUEFDRTooKT0+bGhlLEZJTFRFUlNfQlVUVE9OU19DQU5DRUw6KCk9''@;'; put 'put ''PnEkLEZJTFRFUlNfQlVUVE9OU19DTEVBUjooKT0+RyQsRklMVEVSU19CVVRUT05TX09LOigpPT4kJCxGSUxURVJTX0JVVFRPTlNfUExBQ0VIT0xERVJfU0VBUkNIOigpPT5LJCxGSUxURVJTX0JVVFRPTlNfUExBQ0VIT0xERVJfU0VDT05EX1ZBTFVFOigpPT5KJCxGSUxURVJTX0JVVFRPTlNf''@;'; put 'put ''UExBQ0VIT0xERVJfVkFMVUU6KCk9PlgkLEZJTFRFUlNfQlVUVE9OU19TRUxFQ1RfQUxMOigpPT5XJCxGSUxURVJTX0NPTkRJVElPTlNfQUZURVI6KCk9PkgkLEZJTFRFUlNfQ09ORElUSU9OU19CRUZPUkU6KCk9PlYkLEZJTFRFUlNfQ09ORElUSU9OU19CRUdJTlNfV0lUSDooKT0+ayQsRklM''@;'; put 'put ''VEVSU19DT05ESVRJT05TX0JFVFdFRU46KCk9PkYkLEZJTFRFUlNfQ09ORElUSU9OU19CWV9WQUxVRTooKT0+eHFlLEZJTFRFUlNfQ09ORElUSU9OU19DT05UQUlOUzooKT0+RCQsRklMVEVSU19DT05ESVRJT05TX0VNUFRZOigpPT5NJCxGSUxURVJTX0NPTkRJVElPTlNfRU5EU19XSVRIOigp''@;'; put 'put ''PT5BJCxGSUxURVJTX0NPTkRJVElPTlNfRVFVQUw6KCk9PkUkLEZJTFRFUlNfQ09ORElUSU9OU19HUkVBVEVSX1RIQU46KCk9PlIkLEZJTFRFUlNfQ09ORElUSU9OU19HUkVBVEVSX1RIQU5fT1JfRVFVQUw6KCk9PkwkLEZJTFRFUlNfQ09ORElUSU9OU19MRVNTX1RIQU46KCk9Pk8kLEZJTFRF''@;'; put 'put ''UlNfQ09ORElUSU9OU19MRVNTX1RIQU5fT1JfRVFVQUw6KCk9PlAkLEZJTFRFUlNfQ09ORElUSU9OU19OQU1FU1BBQ0U6KCk9PnNjLEZJTFRFUlNfQ09ORElUSU9OU19OT05FOigpPT5LTCxGSUxURVJTX0NPTkRJVElPTlNfTk9UX0JFVFdFRU46KCk9Pk4kLEZJTFRFUlNfQ09ORElUSU9OU19O''@;'; put 'put ''T1RfQ09OVEFJTjooKT0+SSQsRklMVEVSU19DT05ESVRJT05TX05PVF9FTVBUWTooKT0+eCQsRklMVEVSU19DT05ESVRJT05TX05PVF9FUVVBTDooKT0+VCQsRklMVEVSU19DT05ESVRJT05TX1RPREFZOigpPT5CJCxGSUxURVJTX0NPTkRJVElPTlNfVE9NT1JST1c6KCk9PmokLEZJTFRFUlNf''@;'; put 'put ''Q09ORElUSU9OU19ZRVNURVJEQVk6KCk9PnokLEZJTFRFUlNfRElWU19GSUxURVJfQllfQ09ORElUSU9OOigpPT5VJCxGSUxURVJTX0RJVlNfRklMVEVSX0JZX1ZBTFVFOigpPT5aJCxGSUxURVJTX0xBQkVMU19DT05KVU5DVElPTjooKT0+WSQsRklMVEVSU19MQUJFTFNfRElTSlVOQ1RJT046''@;'; put 'put ''KCk9PlhMLEZJTFRFUlNfTkFNRVNQQUNFOigpPT5jMSxGSUxURVJTX1ZBTFVFU19CTEFOS19DRUxMUzooKT0+Skx9KTt2YXIgQj17fTtmdW5jdGlvbiBaKGwsYyxhLGQsaCxmLHYpe3RyeXt2YXIgUz1sW2ZdKHYpLFY9Uy52YWx1ZX1jYXRjaChRKXtyZXR1cm4gdm9pZCBhKFEpfVMuZG9uZT9j''@;'; put 'put ''KFYpOlByb21pc2UucmVzb2x2ZShWKS50aGVuKGQsaCl9ZnVuY3Rpb24gWShsKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGgpe3ZhciBmPWwuYXBwbHkoYyxhKTtmdW5jdGlvbiB2KFYpe1ooZixkLGgsdixT''@;'; put 'put ''LCJuZXh0IixWKX1mdW5jdGlvbiBTKFYpe1ooZixkLGgsdixTLCJ0aHJvdyIsVil9dih2b2lkIDApfSl9fVIucihCKSxSLmQoQix7Z2V0Tm9ybWFsaXplZERhdGU6KCk9PlMyZX0pO2xldCBxPW51bGwsZWU9MTtjb25zdCByZT1TeW1ib2woIlNJR05BTCIpO2Z1bmN0aW9uIGllKGwpe2NvbnN0''@;'; put 'put ''IGM9cTtyZXR1cm4gcT1sLGN9ZnVuY3Rpb24gRihsKXtpZigoIWNlKGwpfHxsLmRpcnR5KSYmKGwuZGlydHl8fGwubGFzdENsZWFuRXBvY2ghPT1lZSkpe2lmKCFsLnByb2R1Y2VyTXVzdFJlY29tcHV0ZShsKSYmIXAobCkpcmV0dXJuIGwuZGlydHk9ITEsdm9pZChsLmxhc3RDbGVhbkVwb2No''@;'; put 'put ''PWVlKTtsLnByb2R1Y2VyUmVjb21wdXRlVmFsdWUobCksbC5kaXJ0eT0hMSxsLmxhc3RDbGVhbkVwb2NoPWVlfX1mdW5jdGlvbiBwKGwpe2hlKGwpO2ZvcihsZXQgYz0wO2M8bC5wcm9kdWNlck5vZGUubGVuZ3RoO2MrKyl7Y29uc3QgYT1sLnByb2R1Y2VyTm9kZVtjXSxkPWwucHJvZHVjZXJM''@;'; put 'put ''YXN0UmVhZFZlcnNpb25bY107aWYoZCE9PWEudmVyc2lvbnx8KEYoYSksZCE9PWEudmVyc2lvbikpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gdGUobCxjKXtpZihmdW5jdGlvbiBTZShsKXtsLmxpdmVDb25zdW1lck5vZGU/Pz1bXSxsLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzPz89W119''@;'; put 'put ''KGwpLGhlKGwpLDE9PT1sLmxpdmVDb25zdW1lck5vZGUubGVuZ3RoKWZvcihsZXQgZD0wO2Q8bC5wcm9kdWNlck5vZGUubGVuZ3RoO2QrKyl0ZShsLnByb2R1Y2VyTm9kZVtkXSxsLnByb2R1Y2VySW5kZXhPZlRoaXNbZF0pO2NvbnN0IGE9bC5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aC0xO2lm''@;'; put 'put ''KGwubGl2ZUNvbnN1bWVyTm9kZVtjXT1sLmxpdmVDb25zdW1lck5vZGVbYV0sbC5saXZlQ29uc3VtZXJJbmRleE9mVGhpc1tjXT1sLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzW2FdLGwubGl2ZUNvbnN1bWVyTm9kZS5sZW5ndGgtLSxsLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzLmxlbmd0aC0t''@;'; put 'put ''LGM8bC5saXZlQ29uc3VtZXJOb2RlLmxlbmd0aCl7Y29uc3QgZD1sLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzW2NdLGg9bC5saXZlQ29uc3VtZXJOb2RlW2NdO2hlKGgpLGgucHJvZHVjZXJJbmRleE9mVGhpc1tkXT1jfX1mdW5jdGlvbiBjZShsKXtyZXR1cm4gbC5jb25zdW1lcklzQWx3YXlz''@;'; put 'put ''TGl2ZXx8KGw/LmxpdmVDb25zdW1lck5vZGU/Lmxlbmd0aD8/MCk+MH1mdW5jdGlvbiBoZShsKXtsLnByb2R1Y2VyTm9kZT8/PVtdLGwucHJvZHVjZXJJbmRleE9mVGhpcz8/PVtdLGwucHJvZHVjZXJMYXN0UmVhZFZlcnNpb24/Pz1bXX1sZXQgVWU9bnVsbDtmdW5jdGlvbiBzdChsKXtyZXR1''@;'; put 'put ''cm4iZnVuY3Rpb24iPT10eXBlb2YgbH1mdW5jdGlvbiB4dChsKXtjb25zdCBhPWwoZD0+e0Vycm9yLmNhbGwoZCksZC5zdGFjaz0obmV3IEVycm9yKS5zdGFja30pO3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksYS5wcm90b3R5cGUuY29uc3RydWN0''@;'; put 'put ''b3I9YSxhfWNvbnN0IEZ0PXh0KGw9PmZ1bmN0aW9uKGEpe2wodGhpcyksdGhpcy5tZXNzYWdlPWE/YCR7YS5sZW5ndGh9IGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4ke2EubWFwKChkLGgpPT5gJHtoKzF9KSAke2QudG9TdHJpbmcoKX1gKS5qb2luKCJcbiAgIil9''@;'; put 'put ''YDoiIix0aGlzLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuZXJyb3JzPWF9KTtmdW5jdGlvbiBPdChsLGMpe2lmKGwpe2NvbnN0IGE9bC5pbmRleE9mKGMpOzA8PWEmJmwuc3BsaWNlKGEsMSl9fWNsYXNzIEt0e2NvbnN0cnVjdG9yKGMpe3RoaXMuaW5pdGlhbFRlYXJkb3duPWMs''@;'; put 'put ''dGhpcy5jbG9zZWQ9ITEsdGhpcy5fcGFyZW50YWdlPW51bGwsdGhpcy5fZmluYWxpemVycz1udWxsfXVuc3Vic2NyaWJlKCl7bGV0IGM7aWYoIXRoaXMuY2xvc2VkKXt0aGlzLmNsb3NlZD0hMDtjb25zdHtfcGFyZW50YWdlOmF9PXRoaXM7aWYoYSlpZih0aGlzLl9wYXJlbnRhZ2U9bnVsbCxB''@;'; put 'put ''cnJheS5pc0FycmF5KGEpKWZvcihjb25zdCBmIG9mIGEpZi5yZW1vdmUodGhpcyk7ZWxzZSBhLnJlbW92ZSh0aGlzKTtjb25zdHtpbml0aWFsVGVhcmRvd246ZH09dGhpcztpZihzdChkKSl0cnl7ZCgpfWNhdGNoKGYpe2M9ZiBpbnN0YW5jZW9mIEZ0P2YuZXJyb3JzOltmXX1jb25zdHtfZmlu''@;'; put 'put ''YWxpemVyczpofT10aGlzO2lmKGgpe3RoaXMuX2ZpbmFsaXplcnM9bnVsbDtmb3IoY29uc3QgZiBvZiBoKXRyeXt5bihmKX1jYXRjaCh2KXtjPWM/P1tdLHYgaW5zdGFuY2VvZiBGdD9jPVsuLi5jLC4uLnYuZXJyb3JzXTpjLnB1c2godil9fWlmKGMpdGhyb3cgbmV3IEZ0KGMpfX1hZGQoYyl7''@;'; put 'put ''dmFyIGE7aWYoYyYmYyE9PXRoaXMpaWYodGhpcy5jbG9zZWQpeW4oYyk7ZWxzZXtpZihjIGluc3RhbmNlb2YgS3Qpe2lmKGMuY2xvc2VkfHxjLl9oYXNQYXJlbnQodGhpcykpcmV0dXJuO2MuX2FkZFBhcmVudCh0aGlzKX0odGhpcy5fZmluYWxpemVycz1udWxsIT09KGE9dGhpcy5fZmluYWxp''@;'; put 'put ''emVycykmJnZvaWQgMCE9PWE/YTpbXSkucHVzaChjKX19X2hhc1BhcmVudChjKXtjb25zdHtfcGFyZW50YWdlOmF9PXRoaXM7cmV0dXJuIGE9PT1jfHxBcnJheS5pc0FycmF5KGEpJiZhLmluY2x1ZGVzKGMpfV9hZGRQYXJlbnQoYyl7Y29uc3R7X3BhcmVudGFnZTphfT10aGlzO3RoaXMuX3Bh''@;'; put 'put ''cmVudGFnZT1BcnJheS5pc0FycmF5KGEpPyhhLnB1c2goYyksYSk6YT9bYSxjXTpjfV9yZW1vdmVQYXJlbnQoYyl7Y29uc3R7X3BhcmVudGFnZTphfT10aGlzO2E9PT1jP3RoaXMuX3BhcmVudGFnZT1udWxsOkFycmF5LmlzQXJyYXkoYSkmJk90KGEsYyl9cmVtb3ZlKGMpe2NvbnN0e19maW5h''@;'; put 'put ''bGl6ZXJzOmF9PXRoaXM7YSYmT3QoYSxjKSxjIGluc3RhbmNlb2YgS3QmJmMuX3JlbW92ZVBhcmVudCh0aGlzKX19S3QuRU1QVFk9KCgpPT57Y29uc3QgbD1uZXcgS3Q7cmV0dXJuIGwuY2xvc2VkPSEwLGx9KSgpO2NvbnN0IGJuPUt0LkVNUFRZO2Z1bmN0aW9uIEJ0KGwpe3JldHVybiBsIGlu''@;'; put 'put ''c3RhbmNlb2YgS3R8fGwmJiJjbG9zZWQiaW4gbCYmc3QobC5yZW1vdmUpJiZzdChsLmFkZCkmJnN0KGwudW5zdWJzY3JpYmUpfWZ1bmN0aW9uIHluKGwpe3N0KGwpP2woKTpsLnVuc3Vic2NyaWJlKCl9Y29uc3QgTm49e29uVW5oYW5kbGVkRXJyb3I6bnVsbCxvblN0b3BwZWROb3RpZmljYXRp''@;'; put 'put ''b246bnVsbCxQcm9taXNlOnZvaWQgMCx1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nOiExLHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDohMX0sbm49e3NldFRpbWVvdXQobCxjLC4uLmEpe2NvbnN0e2RlbGVnYXRlOmR9PW5uO3JldHVybiBkPy5zZXRUaW1lb3V0P2Quc2V0''@;'; put 'put ''VGltZW91dChsLGMsLi4uYSk6c2V0VGltZW91dChsLGMsLi4uYSl9LGNsZWFyVGltZW91dChsKXtjb25zdHtkZWxlZ2F0ZTpjfT1ubjtyZXR1cm4oYz8uY2xlYXJUaW1lb3V0fHxjbGVhclRpbWVvdXQpKGwpfSxkZWxlZ2F0ZTp2b2lkIDB9O2Z1bmN0aW9uIEduKGwpe25uLnNldFRpbWVvdXQo''@;'; put 'put ''KCk9Pntjb25zdHtvblVuaGFuZGxlZEVycm9yOmN9PU5uO2lmKCFjKXRocm93IGw7YyhsKX0pfWZ1bmN0aW9uIFluKCl7fWNvbnN0IGZ0PXd0KCJDIix2b2lkIDAsdm9pZCAwKTtmdW5jdGlvbiB3dChsLGMsYSl7cmV0dXJue2tpbmQ6bCx2YWx1ZTpjLGVycm9yOmF9fWxldCBqdD1udWxsO2Z1''@;'; put 'put ''bmN0aW9uIG10KGwpe2lmKE5uLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpe2NvbnN0IGM9IWp0O2lmKGMmJihqdD17ZXJyb3JUaHJvd246ITEsZXJyb3I6bnVsbH0pLGwoKSxjKXtjb25zdHtlcnJvclRocm93bjphLGVycm9yOmR9PWp0O2lmKGp0PW51bGwsYSl0aHJv''@;'; put 'put ''dyBkfX1lbHNlIGwoKX1jbGFzcyBwbiBleHRlbmRzIEt0e2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy5pc1N0b3BwZWQ9ITEsYz8odGhpcy5kZXN0aW5hdGlvbj1jLEJ0KGMpJiZjLmFkZCh0aGlzKSk6dGhpcy5kZXN0aW5hdGlvbj16dH1zdGF0aWMgY3JlYXRlKGMsYSxkKXtyZXR1cm4g''@;'; put 'put ''bmV3IFR0KGMsYSxkKX1uZXh0KGMpe3RoaXMuaXNTdG9wcGVkP3huKGZ1bmN0aW9uIGhuKGwpe3JldHVybiB3dCgiTiIsbCx2b2lkIDApfShjKSx0aGlzKTp0aGlzLl9uZXh0KGMpfWVycm9yKGMpe3RoaXMuaXNTdG9wcGVkP3huKGZ1bmN0aW9uIGRuKGwpe3JldHVybiB3dCgiRSIsdm9pZCAw''@;'; put 'put ''LGwpfShjKSx0aGlzKToodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fZXJyb3IoYykpfWNvbXBsZXRlKCl7dGhpcy5pc1N0b3BwZWQ/eG4oZnQsdGhpcyk6KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfXVuc3Vic2NyaWJlKCl7dGhpcy5jbG9zZWR8fCh0aGlzLmlzU3RvcHBl''@;'; put 'put ''ZD0hMCxzdXBlci51bnN1YnNjcmliZSgpLHRoaXMuZGVzdGluYXRpb249bnVsbCl9X25leHQoYyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGMpfV9lcnJvcihjKXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihjKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19X2NvbXBsZXRlKCl7dHJ5''@;'; put 'put ''e3RoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19fWNvbnN0IG50PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO2Z1bmN0aW9uIEV0KGwsYyl7cmV0dXJuIG50LmNhbGwobCxjKX1jbGFzcyBlbntjb25zdHJ1Y3RvcihjKXt0aGlzLnBhcnRpYWxP''@;'; put 'put ''YnNlcnZlcj1jfW5leHQoYyl7Y29uc3R7cGFydGlhbE9ic2VydmVyOmF9PXRoaXM7aWYoYS5uZXh0KXRyeXthLm5leHQoYyl9Y2F0Y2goZCl7eXQoZCl9fWVycm9yKGMpe2NvbnN0e3BhcnRpYWxPYnNlcnZlcjphfT10aGlzO2lmKGEuZXJyb3IpdHJ5e2EuZXJyb3IoYyl9Y2F0Y2goZCl7eXQo''@;'; put 'put ''ZCl9ZWxzZSB5dChjKX1jb21wbGV0ZSgpe2NvbnN0e3BhcnRpYWxPYnNlcnZlcjpjfT10aGlzO2lmKGMuY29tcGxldGUpdHJ5e2MuY29tcGxldGUoKX1jYXRjaChhKXt5dChhKX19fWNsYXNzIFR0IGV4dGVuZHMgcG57Y29uc3RydWN0b3IoYyxhLGQpe2xldCBoO2lmKHN1cGVyKCksc3QoYyl8''@;'; put 'put ''fCFjKWg9e25leHQ6Yz8/dm9pZCAwLGVycm9yOmE/P3ZvaWQgMCxjb21wbGV0ZTpkPz92b2lkIDB9O2Vsc2V7bGV0IGY7dGhpcyYmTm4udXNlRGVwcmVjYXRlZE5leHRDb250ZXh0PyhmPU9iamVjdC5jcmVhdGUoYyksZi51bnN1YnNjcmliZT0oKT0+dGhpcy51bnN1YnNjcmliZSgpLGg9e25l''@;'; put 'put ''eHQ6Yy5uZXh0JiZFdChjLm5leHQsZiksZXJyb3I6Yy5lcnJvciYmRXQoYy5lcnJvcixmKSxjb21wbGV0ZTpjLmNvbXBsZXRlJiZFdChjLmNvbXBsZXRlLGYpfSk6aD1jfXRoaXMuZGVzdGluYXRpb249bmV3IGVuKGgpfX1mdW5jdGlvbiB5dChsKXtObi51c2VEZXByZWNhdGVkU3luY2hyb25v''@;'; put 'put ''dXNFcnJvckhhbmRsaW5nP2Z1bmN0aW9uIEh0KGwpe05uLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJmp0JiYoanQuZXJyb3JUaHJvd249ITAsanQuZXJyb3I9bCl9KGwpOkduKGwpfWZ1bmN0aW9uIHhuKGwsYyl7Y29uc3R7b25TdG9wcGVkTm90aWZpY2F0aW9uOmF9''@;'; put 'put ''PU5uO2EmJm5uLnNldFRpbWVvdXQoKCk9PmEobCxjKSl9Y29uc3QgenQ9e2Nsb3NlZDohMCxuZXh0OlluLGVycm9yOmZ1bmN0aW9uICR0KGwpe3Rocm93IGx9LGNvbXBsZXRlOllufSxfbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJs''@;'; put 'put ''ZSI7ZnVuY3Rpb24gT24obCl7cmV0dXJuIGx9ZnVuY3Rpb24gUG4obCl7cmV0dXJuIDA9PT1sLmxlbmd0aD9PbjoxPT09bC5sZW5ndGg/bFswXTpmdW5jdGlvbihhKXtyZXR1cm4gbC5yZWR1Y2UoKGQsaCk9PmgoZCksYSl9fWxldCBDbj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe2Em''@;'; put 'put ''Jih0aGlzLl9zdWJzY3JpYmU9YSl9bGlmdChhKXtjb25zdCBkPW5ldyBsO3JldHVybiBkLnNvdXJjZT10aGlzLGQub3BlcmF0b3I9YSxkfXN1YnNjcmliZShhLGQsaCl7Y29uc3QgZj1mdW5jdGlvbiB4aShsKXtyZXR1cm4gbCYmbCBpbnN0YW5jZW9mIHBufHxmdW5jdGlvbiBKbihsKXtyZXR1''@;'; put 'put ''cm4gbCYmc3QobC5uZXh0KSYmc3QobC5lcnJvcikmJnN0KGwuY29tcGxldGUpfShsKSYmQnQobCl9KGEpP2E6bmV3IFR0KGEsZCxoKTtyZXR1cm4gbXQoKCk9Pntjb25zdHtvcGVyYXRvcjp2LHNvdXJjZTpTfT10aGlzO2YuYWRkKHY/di5jYWxsKGYsUyk6Uz90aGlzLl9zdWJzY3JpYmUoZik6''@;'; put 'put ''dGhpcy5fdHJ5U3Vic2NyaWJlKGYpKX0pLGZ9X3RyeVN1YnNjcmliZShhKXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZShhKX1jYXRjaChkKXthLmVycm9yKGQpfX1mb3JFYWNoKGEsZCl7cmV0dXJuIG5ldyhkPVh0KGQpKSgoaCxmKT0+e2NvbnN0IHY9bmV3IFR0KHtuZXh0OlM9Pnt0cnl7''@;'; put 'put ''YShTKX1jYXRjaChWKXtmKFYpLHYudW5zdWJzY3JpYmUoKX19LGVycm9yOmYsY29tcGxldGU6aH0pO3RoaXMuc3Vic2NyaWJlKHYpfSl9X3N1YnNjcmliZShhKXt2YXIgZDtyZXR1cm4gbnVsbD09PShkPXRoaXMuc291cmNlKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5zdWJzY3JpYmUoYSl9W19u''@;'; put 'put ''XSgpe3JldHVybiB0aGlzfXBpcGUoLi4uYSl7cmV0dXJuIFBuKGEpKHRoaXMpfXRvUHJvbWlzZShhKXtyZXR1cm4gbmV3KGE9WHQoYSkpKChkLGgpPT57bGV0IGY7dGhpcy5zdWJzY3JpYmUodj0+Zj12LHY9PmgodiksKCk9PmQoZikpfSl9fXJldHVybiBsLmNyZWF0ZT1jPT5uZXcgbChjKSxs''@;'; put 'put ''fSkoKTtmdW5jdGlvbiBYdChsKXt2YXIgYztyZXR1cm4gbnVsbCE9PShjPWw/P05uLlByb21pc2UpJiZ2b2lkIDAhPT1jP2M6UHJvbWlzZX1jb25zdCBhbj14dChsPT5mdW5jdGlvbigpe2wodGhpcyksdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpcy5tZXNzYWdlPSJv''@;'; put 'put ''YmplY3QgdW5zdWJzY3JpYmVkIn0pO2xldCB0bj0oKCk9PntjbGFzcyBsIGV4dGVuZHMgQ257Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuY2xvc2VkPSExLHRoaXMuY3VycmVudE9ic2VydmVycz1udWxsLHRoaXMub2JzZXJ2ZXJzPVtdLHRoaXMuaXNTdG9wcGVkPSExLHRoaXMuaGFzRXJy''@;'; put 'put ''b3I9ITEsdGhpcy50aHJvd25FcnJvcj1udWxsfWxpZnQoYSl7Y29uc3QgZD1uZXcgdWkodGhpcyx0aGlzKTtyZXR1cm4gZC5vcGVyYXRvcj1hLGR9X3Rocm93SWZDbG9zZWQoKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgYW59bmV4dChhKXttdCgoKT0+e2lmKHRoaXMuX3Rocm93SWZDbG9z''@;'; put 'put ''ZWQoKSwhdGhpcy5pc1N0b3BwZWQpe3RoaXMuY3VycmVudE9ic2VydmVyc3x8KHRoaXMuY3VycmVudE9ic2VydmVycz1BcnJheS5mcm9tKHRoaXMub2JzZXJ2ZXJzKSk7Zm9yKGNvbnN0IGQgb2YgdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKWQubmV4dChhKX19KX1lcnJvcihhKXttdCgoKT0+e2lm''@;'; put 'put ''KHRoaXMuX3Rocm93SWZDbG9zZWQoKSwhdGhpcy5pc1N0b3BwZWQpe3RoaXMuaGFzRXJyb3I9dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy50aHJvd25FcnJvcj1hO2NvbnN0e29ic2VydmVyczpkfT10aGlzO2Zvcig7ZC5sZW5ndGg7KWQuc2hpZnQoKS5lcnJvcihhKX19KX1jb21wbGV0ZSgpe210''@;'; put 'put ''KCgpPT57aWYodGhpcy5fdGhyb3dJZkNsb3NlZCgpLCF0aGlzLmlzU3RvcHBlZCl7dGhpcy5pc1N0b3BwZWQ9ITA7Y29uc3R7b2JzZXJ2ZXJzOmF9PXRoaXM7Zm9yKDthLmxlbmd0aDspYS5zaGlmdCgpLmNvbXBsZXRlKCl9fSl9dW5zdWJzY3JpYmUoKXt0aGlzLmlzU3RvcHBlZD10aGlzLmNs''@;'; put 'put ''b3NlZD0hMCx0aGlzLm9ic2VydmVycz10aGlzLmN1cnJlbnRPYnNlcnZlcnM9bnVsbH1nZXQgb2JzZXJ2ZWQoKXt2YXIgYTtyZXR1cm4obnVsbD09PShhPXRoaXMub2JzZXJ2ZXJzKXx8dm9pZCAwPT09YT92b2lkIDA6YS5sZW5ndGgpPjB9X3RyeVN1YnNjcmliZShhKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''dGhyb3dJZkNsb3NlZCgpLHN1cGVyLl90cnlTdWJzY3JpYmUoYSl9X3N1YnNjcmliZShhKXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoYSksdGhpcy5faW5uZXJTdWJzY3JpYmUoYSl9X2lubmVyU3Vic2NyaWJlKGEpe2NvbnN0e2hh''@;'; put 'put ''c0Vycm9yOmQsaXNTdG9wcGVkOmgsb2JzZXJ2ZXJzOmZ9PXRoaXM7cmV0dXJuIGR8fGg/Ym46KHRoaXMuY3VycmVudE9ic2VydmVycz1udWxsLGYucHVzaChhKSxuZXcgS3QoKCk9Pnt0aGlzLmN1cnJlbnRPYnNlcnZlcnM9bnVsbCxPdChmLGEpfSkpfV9jaGVja0ZpbmFsaXplZFN0YXR1c2Vz''@;'; put 'put ''KGEpe2NvbnN0e2hhc0Vycm9yOmQsdGhyb3duRXJyb3I6aCxpc1N0b3BwZWQ6Zn09dGhpcztkP2EuZXJyb3IoaCk6ZiYmYS5jb21wbGV0ZSgpfWFzT2JzZXJ2YWJsZSgpe2NvbnN0IGE9bmV3IENuO3JldHVybiBhLnNvdXJjZT10aGlzLGF9fXJldHVybiBsLmNyZWF0ZT0oYyxhKT0+bmV3IHVp''@;'; put 'put ''KGMsYSksbH0pKCk7Y2xhc3MgdWkgZXh0ZW5kcyB0bntjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKCksdGhpcy5kZXN0aW5hdGlvbj1jLHRoaXMuc291cmNlPWF9bmV4dChjKXt2YXIgYSxkO251bGw9PT0oZD1udWxsPT09KGE9dGhpcy5kZXN0aW5hdGlvbil8fHZvaWQgMD09PWE/dm9pZCAwOmEu''@;'; put 'put ''bmV4dCl8fHZvaWQgMD09PWR8fGQuY2FsbChhLGMpfWVycm9yKGMpe3ZhciBhLGQ7bnVsbD09PShkPW51bGw9PT0oYT10aGlzLmRlc3RpbmF0aW9uKXx8dm9pZCAwPT09YT92b2lkIDA6YS5lcnJvcil8fHZvaWQgMD09PWR8fGQuY2FsbChhLGMpfWNvbXBsZXRlKCl7dmFyIGMsYTtudWxsPT09''@;'; put 'put ''KGE9bnVsbD09PShjPXRoaXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvbXBsZXRlKXx8dm9pZCAwPT09YXx8YS5jYWxsKGMpfV9zdWJzY3JpYmUoYyl7dmFyIGEsZDtyZXR1cm4gbnVsbCE9PShkPW51bGw9PT0oYT10aGlzLnNvdXJjZSl8fHZvaWQgMD09PWE/dm9pZCAw''@;'; put 'put ''OmEuc3Vic2NyaWJlKGMpKSYmdm9pZCAwIT09ZD9kOmJufX1jbGFzcyBBciBleHRlbmRzIHRue2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy5fdmFsdWU9Y31nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfV9zdWJzY3JpYmUoYyl7Y29uc3QgYT1zdXBlci5fc3Vic2NyaWJl''@;'; put 'put ''KGMpO3JldHVybiFhLmNsb3NlZCYmYy5uZXh0KHRoaXMuX3ZhbHVlKSxhfWdldFZhbHVlKCl7Y29uc3R7aGFzRXJyb3I6Yyx0aHJvd25FcnJvcjphLF92YWx1ZTpkfT10aGlzO2lmKGMpdGhyb3cgYTtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLGR9bmV4dChjKXtzdXBlci5uZXh0KHRo''@;'; put 'put ''aXMuX3ZhbHVlPWMpfX1mdW5jdGlvbiBocihsKXtyZXR1cm4gc3QobD8ubGlmdCl9ZnVuY3Rpb24gZGkobCl7cmV0dXJuIGM9PntpZihocihjKSlyZXR1cm4gYy5saWZ0KGZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gbChhLHRoaXMpfWNhdGNoKGQpe3RoaXMuZXJyb3IoZCl9fSk7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19ZnVuY3Rpb24gZmkobCxjLGEsZCxoKXtyZXR1cm4gbmV3IGhvKGwsYyxhLGQsaCl9Y2xhc3MgaG8gZXh0ZW5kcyBwbntjb25zdHJ1Y3RvcihjLGEsZCxoLGYsdil7c3VwZXIoYyksdGhpcy5vbkZp''@;'; put 'put ''bmFsaXplPWYsdGhpcy5zaG91bGRVbnN1YnNjcmliZT12LHRoaXMuX25leHQ9YT9mdW5jdGlvbihTKXt0cnl7YShTKX1jYXRjaChWKXtjLmVycm9yKFYpfX06c3VwZXIuX25leHQsdGhpcy5fZXJyb3I9aD9mdW5jdGlvbihTKXt0cnl7aChTKX1jYXRjaChWKXtjLmVycm9yKFYpfWZpbmFsbHl7''@;'; put 'put ''dGhpcy51bnN1YnNjcmliZSgpfX06c3VwZXIuX2Vycm9yLHRoaXMuX2NvbXBsZXRlPWQ/ZnVuY3Rpb24oKXt0cnl7ZCgpfWNhdGNoKFMpe2MuZXJyb3IoUyl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTpzdXBlci5fY29tcGxldGV9dW5zdWJzY3JpYmUoKXt2YXIgYztpZighdGhpcy5z''@;'; put 'put ''aG91bGRVbnN1YnNjcmliZXx8dGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKXtjb25zdHtjbG9zZWQ6YX09dGhpcztzdXBlci51bnN1YnNjcmliZSgpLCFhJiYobnVsbD09PShjPXRoaXMub25GaW5hbGl6ZSl8fHZvaWQgMD09PWN8fGMuY2FsbCh0aGlzKSl9fX1mdW5jdGlvbiBicihsLGMpe3Jl''@;'; put 'put ''dHVybiBkaSgoYSxkKT0+e2xldCBoPTA7YS5zdWJzY3JpYmUoZmkoZCxmPT57ZC5uZXh0KGwuY2FsbChjLGYsaCsrKSl9KSl9KX1jb25zdCBsbz0iaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyI7Y2xhc3MgVW4gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGZ1bmN0''@;'; put 'put ''aW9uIFhpKGwsYyl7cmV0dXJuYE5HMCR7TWF0aC5hYnMobCl9JHtjPyI6ICIrYzoiIn1gfShjLGEpKSx0aGlzLmNvZGU9Y319ZnVuY3Rpb24gem8obCl7cmV0dXJue3RvU3RyaW5nOmx9LnRvU3RyaW5nKCl9Y29uc3QgdXM9Il9fcGFyYW1ldGVyc19fIjtmdW5jdGlvbiAkdShsLGMsYSl7cmV0''@;'; put 'put ''dXJuIHpvKCgpPT57Y29uc3QgZD1mdW5jdGlvbiBGdShsKXtyZXR1cm4gZnVuY3Rpb24oLi4uYSl7aWYobCl7Y29uc3QgZD1sKC4uLmEpO2Zvcihjb25zdCBoIGluIGQpdGhpc1toXT1kW2hdfX19KGMpO2Z1bmN0aW9uIGgoLi4uZil7aWYodGhpcyBpbnN0YW5jZW9mIGgpcmV0dXJuIGQuYXBw''@;'; put 'put ''bHkodGhpcyxmKSx0aGlzO2NvbnN0IHY9bmV3IGgoLi4uZik7cmV0dXJuIFMuYW5ub3RhdGlvbj12LFM7ZnVuY3Rpb24gUyhWLFEsZGUpe2NvbnN0IHBlPVYuaGFzT3duUHJvcGVydHkodXMpP1ZbdXNdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWLHVzLHt2YWx1ZTpbXX0pW3VzXTtmb3IoO3Bl''@;'; put 'put ''Lmxlbmd0aDw9ZGU7KXBlLnB1c2gobnVsbCk7cmV0dXJuKHBlW2RlXT1wZVtkZV18fFtdKS5wdXNoKHYpLFZ9fXJldHVybiBhJiYoaC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSkpLGgucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPWwsaC5hbm5vdGF0aW9uQ2xzPWgsaH0p''@;'; put 'put ''fWNvbnN0IEJzPWdsb2JhbFRoaXM7ZnVuY3Rpb24gY28obCl7Zm9yKGxldCBjIGluIGwpaWYobFtjXT09PWNvKXJldHVybiBjO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gYXUobCxjKXtmb3IoY29uc3Qg''@;'; put 'put ''YSBpbiBjKWMuaGFzT3duUHJvcGVydHkoYSkmJiFsLmhhc093blByb3BlcnR5KGEpJiYobFthXT1jW2FdKX1mdW5jdGlvbiBfcihsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJuIGw7aWYoQXJyYXkuaXNBcnJheShsKSlyZXR1cm4iWyIrbC5tYXAoX3IpLmpvaW4oIiwgIikrIl0iO2lm''@;'; put 'put ''KG51bGw9PWwpcmV0dXJuIiIrbDtpZihsLm92ZXJyaWRkZW5OYW1lKXJldHVybmAke2wub3ZlcnJpZGRlbk5hbWV9YDtpZihsLm5hbWUpcmV0dXJuYCR7bC5uYW1lfWA7Y29uc3QgYz1sLnRvU3RyaW5nKCk7aWYobnVsbD09YylyZXR1cm4iIitjO2NvbnN0IGE9Yy5pbmRleE9mKCJcbiIpO3Jl''@;'; put 'put ''dHVybi0xPT09YT9jOmMuc3Vic3RyaW5nKDAsYSl9ZnVuY3Rpb24gS2QobCxjKXtyZXR1cm4gbnVsbD09bHx8IiI9PT1sP251bGw9PT1jPyIiOmM6bnVsbD09Y3x8IiI9PT1jP2w6bCsiICIrY31jb25zdCBfMT1jbyh7X19mb3J3YXJkX3JlZl9fOmNvfSk7ZnVuY3Rpb24gdGEobCl7cmV0dXJu''@;'; put 'put ''IGwuX19mb3J3YXJkX3JlZl9fPXRhLGwudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gX3IodGhpcygpKX0sbH1mdW5jdGlvbiBraShsKXtyZXR1cm4gQ2wobCk/bCgpOmx9ZnVuY3Rpb24gQ2wobCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGwmJmwuaGFzT3duUHJvcGVydHkoXzEpJiZs''@;'; put 'put ''Ll9fZm9yd2FyZF9yZWZfXz09PXRhfWZ1bmN0aW9uIGlyKGwpe3JldHVybnt0b2tlbjpsLnRva2VuLHByb3ZpZGVkSW46bC5wcm92aWRlZElufHxudWxsLGZhY3Rvcnk6bC5mYWN0b3J5LHZhbHVlOnZvaWQgMH19ZnVuY3Rpb24gc2kobCl7cmV0dXJue3Byb3ZpZGVyczpsLnByb3ZpZGVyc3x8''@;'; put 'put ''W10saW1wb3J0czpsLmltcG9ydHN8fFtdfX1mdW5jdGlvbiBxdShsKXtyZXR1cm4gY2cobCx2aSl8fGNnKGwseG8pfWZ1bmN0aW9uIGNnKGwsYyl7cmV0dXJuIGwuaGFzT3duUHJvcGVydHkoYyk/bFtjXTpudWxsfWZ1bmN0aW9uIFpuKGwpe3JldHVybiBsJiYobC5oYXNPd25Qcm9wZXJ0eShS''@;'; put 'put ''aSl8fGwuaGFzT3duUHJvcGVydHkoUGwpKT9sW1JpXTpudWxsfWNvbnN0IHZpPWNvKHtcdTAyNzVwcm92OmNvfSksUmk9Y28oe1x1MDI3NWluajpjb30pLHhvPWNvKHtuZ0luamVjdGFibGVEZWY6Y299KSxQbD1jbyh7bmdJbmplY3RvckRlZjpjb30pO2NsYXNzICRye2NvbnN0cnVjdG9yKGMs''@;'; put 'put ''YSl7dGhpcy5fZGVzYz1jLHRoaXMubmdNZXRhZGF0YU5hbWU9IkluamVjdGlvblRva2VuIix0aGlzLlx1MDI3NXByb3Y9dm9pZCAwLCJudW1iZXIiPT10eXBlb2YgYT90aGlzLl9fTkdfRUxFTUVOVF9JRF9fPWE6dm9pZCAwIT09YSYmKHRoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46dGhpcyxw''@;'; put 'put ''cm92aWRlZEluOmEucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6YS5mYWN0b3J5fSkpfWdldCBtdWx0aSgpe3JldHVybiB0aGlzfXRvU3RyaW5nKCl7cmV0dXJuYEluamVjdGlvblRva2VuICR7dGhpcy5fZGVzY31gfX1mdW5jdGlvbiB0ZChsKXtyZXR1cm4gbCYmISFsLlx1MDI3NXByb3Zp''@;'; put 'put ''ZGVyc31jb25zdCBoMj1jbyh7XHUwMjc1Y21wOmNvfSksUGY9Y28oe1x1MDI3NWRpcjpjb30pLEU1PWNvKHtcdTAyNzVwaXBlOmNvfSksbmQ9Y28oe1x1MDI3NW1vZDpjb30pLGJzPWNvKHtcdTAyNzVmYWM6Y299KSx2cD1jbyh7X19OR19FTEVNRU5UX0lEX186Y299KSxuOT1jbyh7X19OR19F''@;'; put 'put ''TlZfSURfXzpjb30pO2Z1bmN0aW9uICRvKGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgbD9sOm51bGw9PWw/IiI6U3RyaW5nKGwpfWZ1bmN0aW9uIGFhKGwsYyl7dGhyb3cgbmV3IFVuKC0yMDEsITEpfXZhciBEaT1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkRlZmF1bHQ9MF09IkRlZmF1bHQi''@;'; put 'put ''LGxbbC5Ib3N0PTFdPSJIb3N0IixsW2wuU2VsZj0yXT0iU2VsZiIsbFtsLlNraXBTZWxmPTRdPSJTa2lwU2VsZiIsbFtsLk9wdGlvbmFsPThdPSJPcHRpb25hbCIsbH0oRGl8fHt9KTtsZXQgUm87ZnVuY3Rpb24gdWcoKXtyZXR1cm4gUm99ZnVuY3Rpb24gSWEobCl7Y29uc3QgYz1SbztyZXR1''@;'; put 'put ''cm4gUm89bCxjfWZ1bmN0aW9uIHJkKGwsYyxhKXtjb25zdCBkPXF1KGwpO3JldHVybiBkJiYicm9vdCI9PWQucHJvdmlkZWRJbj92b2lkIDA9PT1kLnZhbHVlP2QudmFsdWU9ZC5mYWN0b3J5KCk6ZC52YWx1ZTphJkRpLk9wdGlvbmFsP251bGw6dm9pZCAwIT09Yz9jOnZvaWQgYWEoKX1jb25z''@;'; put 'put ''dCBwMD17fSxrYz0iX19OR19ESV9GTEFHX18iLEtsPSJuZ1RlbXBUb2tlblBhdGgiLHl5PS9cbi9nbSx5YT0iX19zb3VyY2UiO2xldCBGZjtmdW5jdGlvbiBpZChsKXtjb25zdCBjPUZmO3JldHVybiBGZj1sLGN9ZnVuY3Rpb24gWjAobCxjPURpLkRlZmF1bHQpe2lmKHZvaWQgMD09PUZmKXRo''@;'; put 'put ''cm93IG5ldyBVbigtMjAzLCExKTtyZXR1cm4gbnVsbD09PUZmP3JkKGwsdm9pZCAwLGMpOkZmLmdldChsLGMmRGkuT3B0aW9uYWw/bnVsbDp2b2lkIDAsYyl9ZnVuY3Rpb24gY3IobCxjPURpLkRlZmF1bHQpe3JldHVybih1ZygpfHxaMCkoa2kobCksYyl9ZnVuY3Rpb24gWnIobCxjPURpLkRl''@;'; put 'put ''ZmF1bHQpe3JldHVybiBjcihsLGRnKGMpKX1mdW5jdGlvbiBkZyhsKXtyZXR1cm4gdHlwZW9mIGw+InUifHwibnVtYmVyIj09dHlwZW9mIGw/bDoobC5vcHRpb25hbCYmOCl8KGwuaG9zdCYmMSl8KGwuc2VsZiYmMil8KGwuc2tpcFNlbGYmJjQpfWZ1bmN0aW9uIGhnKGwpe2NvbnN0IGM9W107''@;'; put 'put ''Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDthKyspe2NvbnN0IGQ9a2kobFthXSk7aWYoQXJyYXkuaXNBcnJheShkKSl7aWYoMD09PWQubGVuZ3RoKXRocm93IG5ldyBVbig5MDAsITEpO2xldCBoLGY9RGkuRGVmYXVsdDtmb3IobGV0IHY9MDt2PGQubGVuZ3RoO3YrKyl7Y29uc3QgUz1kW3ZdLFY9''@;'; put 'put ''ZjIoUyk7Im51bWJlciI9PXR5cGVvZiBWPy0xPT09Vj9oPVMudG9rZW46Znw9VjpoPVN9Yy5wdXNoKGNyKGgsZikpfWVsc2UgYy5wdXNoKGNyKGQpKX1yZXR1cm4gY31mdW5jdGlvbiB1dShsLGMpe3JldHVybiBsW2tjXT1jLGwucHJvdG90eXBlW2tjXT1jLGx9ZnVuY3Rpb24gZjIobCl7cmV0''@;'; put 'put ''dXJuIGxba2NdfWNvbnN0IFkwPXV1KCR1KCJPcHRpb25hbCIpLDgpLHkxPXV1KCR1KCJTa2lwU2VsZiIpLDQpO2Z1bmN0aW9uIEFjKGwsYyl7cmV0dXJuIGwuaGFzT3duUHJvcGVydHkoYnMpP2xbYnNdOm51bGx9ZnVuY3Rpb24gTmYobCxjKXtsLmZvckVhY2goYT0+QXJyYXkuaXNBcnJheShh''@;'; put 'put ''KT9OZihhLGMpOmMoYSkpfWZ1bmN0aW9uIHphKGwsYyxhKXtjPj1sLmxlbmd0aD9sLnB1c2goYSk6bC5zcGxpY2UoYywwLGEpfWZ1bmN0aW9uIGpjKGwsYyl7cmV0dXJuIGM+PWwubGVuZ3RoLTE/bC5wb3AoKTpsLnNwbGljZShjLDEpWzBdfWZ1bmN0aW9uIE51KGwsYyxhKXtsZXQgZD1RZChs''@;'; put 'put ''LGMpO3JldHVybiBkPj0wP2xbMXxkXT1hOihkPX5kLGZ1bmN0aW9uIHM5KGwsYyxhLGQpe2xldCBoPWwubGVuZ3RoO2lmKGg9PWMpbC5wdXNoKGEsZCk7ZWxzZSBpZigxPT09aClsLnB1c2goZCxsWzBdKSxsWzBdPWE7ZWxzZXtmb3IoaC0tLGwucHVzaChsW2gtMV0sbFtoXSk7aD5jOylsW2hd''@;'; put 'put ''PWxbaC0yXSxoLS07bFtjXT1hLGxbYysxXT1kfX0obCxkLGMsYSkpLGR9ZnVuY3Rpb24gazUobCxjKXtjb25zdCBhPVFkKGwsYyk7aWYoYT49MClyZXR1cm4gbFsxfGFdfWZ1bmN0aW9uIFFkKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIFcwKGwsYyxhKXtsZXQgZD0wLGg9bC5sZW5ndGg+PmE7Zm9y''@;'; put 'put ''KDtoIT09ZDspe2NvbnN0IGY9ZCsoaC1kPj4xKSx2PWxbZjw8YV07aWYoYz09PXYpcmV0dXJuIGY8PGE7dj5jP2g9ZjpkPWYrMX1yZXR1cm5+KGg8PGEpfShsLGMsMSl9Y29uc3QgSnU9e30sQXM9W10sZWg9bmV3ICRyKCIiKSxIZj1uZXcgJHIoIiIsLTEpLEE1PW5ldyAkcigiIik7Y2xhc3Mg''@;'; put 'put ''Z2d7Z2V0KGMsYT1wMCl7aWYoYT09PXAwKXtjb25zdCBkPW5ldyBFcnJvcihgTnVsbEluamVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAke19yKGMpfSFgKTt0aHJvdyBkLm5hbWU9Ik51bGxJbmplY3RvckVycm9yIixkfXJldHVybiBhfX12YXIgVmY9ZnVuY3Rpb24obCl7cmV0dXJuIGxb''@;'; put 'put ''bC5PblB1c2g9MF09Ik9uUHVzaCIsbFtsLkRlZmF1bHQ9MV09IkRlZmF1bHQiLGx9KFZmfHx7fSksZmE9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLGxbbC5Ob25lPTJdPSJOb25lIixsW2wuU2hhZG93RG9tPTNdPSJTaGFkb3dEb20iLGx9KGZhfHx7fSks''@;'; put 'put ''am49ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5Ob25lPTBdPSJOb25lIixsW2wuU2lnbmFsQmFzZWQ9MV09IlNpZ25hbEJhc2VkIixsW2wuSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm09Ml09Ikhhc0RlY29yYXRvcklucHV0VHJhbnNmb3JtIixsfShqbnx8e30pO2Z1bmN0aW9uIE15KGwsYyxh''@;'; put 'put ''KXtsZXQgZD1sLmxlbmd0aDtmb3IoOzspe2NvbnN0IGg9bC5pbmRleE9mKGMsYSk7aWYoLTE9PT1oKXJldHVybiBoO2lmKDA9PT1ofHxsLmNoYXJDb2RlQXQoaC0xKTw9MzIpe2NvbnN0IGY9Yy5sZW5ndGg7aWYoaCtmPT09ZHx8bC5jaGFyQ29kZUF0KGgrZik8PTMyKXJldHVybiBofWE9aCsx''@;'; put 'put ''fX1mdW5jdGlvbiB3cChsLGMsYSl7bGV0IGQ9MDtmb3IoO2Q8YS5sZW5ndGg7KXtjb25zdCBoPWFbZF07aWYoIm51bWJlciI9PXR5cGVvZiBoKXtpZigwIT09aClicmVhaztkKys7Y29uc3QgZj1hW2QrK10sdj1hW2QrK10sUz1hW2QrK107bC5zZXRBdHRyaWJ1dGUoYyx2LFMsZil9ZWxzZXtj''@;'; put 'put ''b25zdCBmPWgsdj1hWysrZF07dmcoZik/bC5zZXRQcm9wZXJ0eShjLGYsdik6bC5zZXRBdHRyaWJ1dGUoYyxmLHYpLGQrK319cmV0dXJuIGR9ZnVuY3Rpb24gbWcobCl7cmV0dXJuIDM9PT1sfHw0PT09bHx8Nj09PWx9ZnVuY3Rpb24gdmcobCl7cmV0dXJuIDY0PT09bC5jaGFyQ29kZUF0KDAp''@;'; put 'put ''fWZ1bmN0aW9uIG0yKGwsYyl7aWYobnVsbCE9PWMmJjAhPT1jLmxlbmd0aClpZihudWxsPT09bHx8MD09PWwubGVuZ3RoKWw9Yy5zbGljZSgpO2Vsc2V7bGV0IGE9LTE7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspe2NvbnN0IGg9Y1tkXTsibnVtYmVyIj09dHlwZW9mIGg/YT1oOjA9PT1h''@;'; put 'put ''fHxENShsLGEsaCxudWxsLC0xPT09YXx8Mj09PWE/Y1srK2RdOm51bGwpfX1yZXR1cm4gbH1mdW5jdGlvbiBENShsLGMsYSxkLGgpe2xldCBmPTAsdj1sLmxlbmd0aDtpZigtMT09PWMpdj0tMTtlbHNlIGZvcig7ZjxsLmxlbmd0aDspe2NvbnN0IFM9bFtmKytdO2lmKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgUyl7aWYoUz09PWMpe3Y9LTE7YnJlYWt9aWYoUz5jKXt2PWYtMTticmVha319fWZvcig7ZjxsLmxlbmd0aDspe2NvbnN0IFM9bFtmXTtpZigibnVtYmVyIj09dHlwZW9mIFMpYnJlYWs7aWYoUz09PWEpe2lmKG51bGw9PT1kKXJldHVybiB2b2lkKG51bGwhPT1oJiYobFtmKzFdPWgpKTtp''@;'; put 'put ''ZihkPT09bFtmKzFdKXJldHVybiB2b2lkKGxbZisyXT1oKX1mKyssbnVsbCE9PWQmJmYrKyxudWxsIT09aCYmZisrfS0xIT09diYmKGwuc3BsaWNlKHYsMCxjKSxmPXYrMSksbC5zcGxpY2UoZisrLDAsYSksbnVsbCE9PWQmJmwuc3BsaWNlKGYrKywwLGQpLG51bGwhPT1oJiZsLnNwbGljZShm''@;'; put 'put ''KyssMCxoKX1jb25zdCBhOT0ibmctdGVtcGxhdGUiO2Z1bmN0aW9uIEk1KGwsYyxhLGQpe2xldCBoPTA7aWYoZCl7Zm9yKDtoPGMubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGNbaF07aCs9MilpZigiY2xhc3MiPT09Y1toXSYmLTEhPT1NeShjW2grMV0udG9Mb3dlckNhc2UoKSxhLDApKXJl''@;'; put 'put ''dHVybiEwfWVsc2UgaWYoQ3AobCkpcmV0dXJuITE7aWYoaD1jLmluZGV4T2YoMSxoKSxoPi0xKXtsZXQgZjtmb3IoOysraDxjLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZihmPWNbaF0pOylpZihmLnRvTG93ZXJDYXNlKCk9PT1hKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIENwKGwpe3Jl''@;'; put 'put ''dHVybiA0PT09bC50eXBlJiZsLnZhbHVlIT09YTl9ZnVuY3Rpb24gaHUobCxjLGEpe3JldHVybiBjPT09KDQhPT1sLnR5cGV8fGE/bC52YWx1ZTphOSl9ZnVuY3Rpb24geHkobCxjLGEpe2xldCBkPTQ7Y29uc3QgaD1sLmF0dHJzLGY9bnVsbCE9PWg/ZnVuY3Rpb24gYzkobCl7Zm9yKGxldCBj''@;'; put 'put ''PTA7YzxsLmxlbmd0aDtjKyspaWYobWcobFtjXSkpcmV0dXJuIGM7cmV0dXJuIGwubGVuZ3RofShoKTowO2xldCB2PSExO2ZvcihsZXQgUz0wO1M8Yy5sZW5ndGg7UysrKXtjb25zdCBWPWNbU107aWYoIm51bWJlciIhPXR5cGVvZiBWKXtpZighdilpZig0JmQpe2lmKGQ9MnwxJmQsIiIhPT1W''@;'; put 'put ''JiYhaHUobCxWLGEpfHwiIj09PVYmJjE9PT1jLmxlbmd0aCl7aWYoRmwoZCkpcmV0dXJuITE7dj0hMH19ZWxzZSBpZig4JmQpe2lmKG51bGw9PT1ofHwhSTUobCxoLFYsYSkpe2lmKEZsKGQpKXJldHVybiExO3Y9ITB9fWVsc2V7Y29uc3QgUT1jWysrU10sZGU9QmYoVixoLENwKGwpLGEpO2lm''@;'; put 'put ''KC0xPT09ZGUpe2lmKEZsKGQpKXJldHVybiExO3Y9ITA7Y29udGludWV9aWYoIiIhPT1RKXtsZXQgcGU7aWYocGU9ZGU+Zj8iIjpoW2RlKzFdLnRvTG93ZXJDYXNlKCksMiZkJiZRIT09cGUpe2lmKEZsKGQpKXJldHVybiExO3Y9ITB9fX19ZWxzZXtpZighdiYmIUZsKGQpJiYhRmwoVikpcmV0''@;'; put 'put ''dXJuITE7aWYodiYmRmwoVikpY29udGludWU7dj0hMSxkPVZ8MSZkfX1yZXR1cm4gRmwoZCl8fHZ9ZnVuY3Rpb24gRmwobCl7cmV0dXJuISgxJmwpfWZ1bmN0aW9uIEJmKGwsYyxhLGQpe2lmKG51bGw9PT1jKXJldHVybi0xO2xldCBoPTA7aWYoZHx8IWEpe2xldCBmPSExO2Zvcig7aDxjLmxl''@;'; put 'put ''bmd0aDspe2NvbnN0IHY9Y1toXTtpZih2PT09bClyZXR1cm4gaDtpZigzPT09dnx8Nj09PXYpZj0hMDtlbHNle2lmKDE9PT12fHwyPT09dil7bGV0IFM9Y1srK2hdO2Zvcig7InN0cmluZyI9PXR5cGVvZiBTOylTPWNbKytoXTtjb250aW51ZX1pZig0PT09dilicmVhaztpZigwPT09dil7aCs9''@;'; put 'put ''NDtjb250aW51ZX19aCs9Zj8xOjJ9cmV0dXJuLTF9cmV0dXJuIGZ1bmN0aW9uIHU5KGwsYyl7bGV0IGE9bC5pbmRleE9mKDQpO2lmKGE+LTEpZm9yKGErKzthPGwubGVuZ3RoOyl7Y29uc3QgZD1sW2FdO2lmKCJudW1iZXIiPT10eXBlb2YgZClyZXR1cm4tMTtpZihkPT09YylyZXR1cm4gYTth''@;'; put 'put ''Kyt9cmV0dXJuLTF9KGMsbCl9ZnVuY3Rpb24gU3AobCxjLGE9ITEpe2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKHh5KGwsY1tkXSxhKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFeShsLGMpe2U6Zm9yKGxldCBhPTA7YTxjLmxlbmd0aDthKyspe2NvbnN0IGQ9Y1thXTtpZihs''@;'; put 'put ''Lmxlbmd0aD09PWQubGVuZ3RoKXtmb3IobGV0IGg9MDtoPGwubGVuZ3RoO2grKylpZihsW2hdIT09ZFtoXSljb250aW51ZSBlO3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBkOShsLGMpe3JldHVybiBsPyI6bm90KCIrYy50cmltKCkrIikiOmN9ZnVuY3Rpb24gVHkobCl7bGV0IGM9bFsw''@;'; put 'put ''XSxhPTEsZD0yLGg9IiIsZj0hMTtmb3IoO2E8bC5sZW5ndGg7KXtsZXQgdj1sW2FdO2lmKCJzdHJpbmciPT10eXBlb2YgdilpZigyJmQpe2NvbnN0IFM9bFsrK2FdO2grPSJbIit2KyhTLmxlbmd0aD4wPyc9IicrUysnIic6IiIpKyJdIn1lbHNlIDgmZD9oKz0iLiIrdjo0JmQmJihoKz0iICIr''@;'; put 'put ''dik7ZWxzZSIiIT09aCYmIUZsKHYpJiYoYys9ZDkoZixoKSxoPSIiKSxkPXYsZj1mfHwhRmwoZCk7YSsrfXJldHVybiIiIT09aCYmKGMrPWQ5KGYsaCkpLGN9ZnVuY3Rpb24gU3IobCl7cmV0dXJuIHpvKCgpPT57Y29uc3QgYz1SNShsKSxhPXsuLi5jLGRlY2xzOmwuZGVjbHMsdmFyczpsLnZh''@;'; put 'put ''cnMsdGVtcGxhdGU6bC50ZW1wbGF0ZSxjb25zdHM6bC5jb25zdHN8fG51bGwsbmdDb250ZW50U2VsZWN0b3JzOmwubmdDb250ZW50U2VsZWN0b3JzLG9uUHVzaDpsLmNoYW5nZURldGVjdGlvbj09PVZmLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURlZnM6bnVsbCxkZXBlbmRlbmNp''@;'; put 'put ''ZXM6Yy5zdGFuZGFsb25lJiZsLmRlcGVuZGVuY2llc3x8bnVsbCxnZXRTdGFuZGFsb25lSW5qZWN0b3I6bnVsbCxzaWduYWxzOmwuc2lnbmFscz8/ITEsZGF0YTpsLmRhdGF8fHt9LGVuY2Fwc3VsYXRpb246bC5lbmNhcHN1bGF0aW9ufHxmYS5FbXVsYXRlZCxzdHlsZXM6bC5zdHlsZXN8fEFz''@;'; put 'put ''LF86bnVsbCxzY2hlbWFzOmwuc2NoZW1hc3x8bnVsbCx0VmlldzpudWxsLGlkOiIifTtRdShhKTtjb25zdCBkPWwuZGVwZW5kZW5jaWVzO3JldHVybiBhLmRpcmVjdGl2ZURlZnM9YmcoZCwhMSksYS5waXBlRGVmcz1iZyhkLCEwKSxhLmlkPWZ1bmN0aW9uIEF5KGwpe2xldCBjPTA7Y29uc3Qg''@;'; put 'put ''YT1bbC5zZWxlY3RvcnMsbC5uZ0NvbnRlbnRTZWxlY3RvcnMsbC5ob3N0VmFycyxsLmhvc3RBdHRycyxsLmNvbnN0cyxsLnZhcnMsbC5kZWNscyxsLmVuY2Fwc3VsYXRpb24sbC5zdGFuZGFsb25lLGwuc2lnbmFscyxsLmV4cG9ydEFzLEpTT04uc3RyaW5naWZ5KGwuaW5wdXRzKSxKU09OLnN0''@;'; put 'put ''cmluZ2lmeShsLm91dHB1dHMpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGwudHlwZS5wcm90b3R5cGUpLCEhbC5jb250ZW50UXVlcmllcywhIWwudmlld1F1ZXJ5XS5qb2luKCJ8Iik7Zm9yKGNvbnN0IGggb2YgYSljPU1hdGguaW11bCgzMSxjKStoLmNoYXJDb2RlQXQoMCl8MDtyZXR1''@;'; put 'put ''cm4gYys9MjE0NzQ4MzY0OCwiYyIrY30oYSksYX0pfWZ1bmN0aW9uIHYyKGwpe3JldHVybiBtcyhsKXx8TmwobCl9ZnVuY3Rpb24gX2cobCl7cmV0dXJuIG51bGwhPT1sfWZ1bmN0aW9uIGVpKGwpe3JldHVybiB6bygoKT0+KHt0eXBlOmwudHlwZSxib290c3RyYXA6bC5ib290c3RyYXB8fEFz''@;'; put 'put ''LGRlY2xhcmF0aW9uczpsLmRlY2xhcmF0aW9uc3x8QXMsaW1wb3J0czpsLmltcG9ydHN8fEFzLGV4cG9ydHM6bC5leHBvcnRzfHxBcyx0cmFuc2l0aXZlQ29tcGlsZVNjb3BlczpudWxsLHNjaGVtYXM6bC5zY2hlbWFzfHxudWxsLGlkOmwuaWR8fG51bGx9KSl9ZnVuY3Rpb24gTXAobCxjKXtp''@;'; put 'put ''ZihudWxsPT1sKXJldHVybiBKdTtjb25zdCBhPXt9O2Zvcihjb25zdCBkIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShkKSl7Y29uc3QgaD1sW2RdO2xldCBmLHYsUz1qbi5Ob25lO0FycmF5LmlzQXJyYXkoaCk/KFM9aFswXSxmPWhbMV0sdj1oWzJdPz9mKTooZj1oLHY9aCksYz8oYVtmXT1T''@;'; put 'put ''IT09am4uTm9uZT9bZCxTXTpkLGNbZl09dik6YVtmXT1kfXJldHVybiBhfWZ1bmN0aW9uIGdyKGwpe3JldHVybiB6bygoKT0+e2NvbnN0IGM9UjUobCk7cmV0dXJuIFF1KGMpLGN9KX1mdW5jdGlvbiB3YShsKXtyZXR1cm57dHlwZTpsLnR5cGUsbmFtZTpsLm5hbWUsZmFjdG9yeTpudWxsLHB1''@;'; put 'put ''cmU6ITEhPT1sLnB1cmUsc3RhbmRhbG9uZTohMD09PWwuc3RhbmRhbG9uZSxvbkRlc3Ryb3k6bC50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24gbXMobCl7cmV0dXJuIGxbaDJdfHxudWxsfWZ1bmN0aW9uIE5sKGwpe3JldHVybiBsW1BmXXx8bnVsbH1mdW5jdGlv''@;'; put 'put ''biB2YyhsKXtyZXR1cm4gbFtFNV18fG51bGx9ZnVuY3Rpb24gemMobCxjKXtjb25zdCBhPWxbbmRdfHxudWxsO2lmKCFhJiYhMD09PWMpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7X3IobCl9IGRvZXMgbm90IGhhdmUgJ1x1MDI3NW1vZCcgcHJvcGVydHkuYCk7cmV0dXJuIGF9ZnVuY3Rpb24g''@;'; put 'put ''UjUobCl7Y29uc3QgYz17fTtyZXR1cm57dHlwZTpsLnR5cGUscHJvdmlkZXJzUmVzb2x2ZXI6bnVsbCxmYWN0b3J5Om51bGwsaG9zdEJpbmRpbmdzOmwuaG9zdEJpbmRpbmdzfHxudWxsLGhvc3RWYXJzOmwuaG9zdFZhcnN8fDAsaG9zdEF0dHJzOmwuaG9zdEF0dHJzfHxudWxsLGNvbnRlbnRR''@;'; put 'put ''dWVyaWVzOmwuY29udGVudFF1ZXJpZXN8fG51bGwsZGVjbGFyZWRJbnB1dHM6YyxpbnB1dFRyYW5zZm9ybXM6bnVsbCxpbnB1dENvbmZpZzpsLmlucHV0c3x8SnUsZXhwb3J0QXM6bC5leHBvcnRBc3x8bnVsbCxzdGFuZGFsb25lOiEwPT09bC5zdGFuZGFsb25lLHNpZ25hbHM6ITA9PT1sLnNp''@;'; put 'put ''Z25hbHMsc2VsZWN0b3JzOmwuc2VsZWN0b3JzfHxBcyx2aWV3UXVlcnk6bC52aWV3UXVlcnl8fG51bGwsZmVhdHVyZXM6bC5mZWF0dXJlc3x8bnVsbCxzZXRJbnB1dDpudWxsLGZpbmRIb3N0RGlyZWN0aXZlRGVmczpudWxsLGhvc3REaXJlY3RpdmVzOm51bGwsaW5wdXRzOk1wKGwuaW5wdXRz''@;'; put 'put ''LGMpLG91dHB1dHM6TXAobC5vdXRwdXRzKSxkZWJ1Z0luZm86bnVsbH19ZnVuY3Rpb24gUXUobCl7bC5mZWF0dXJlcz8uZm9yRWFjaChjPT5jKGwpKX1mdW5jdGlvbiBiZyhsLGMpe2lmKCFsKXJldHVybiBudWxsO2NvbnN0IGE9Yz92Yzp2MjtyZXR1cm4oKT0+KCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBsP2woKTpsKS5tYXAoZD0+YShkKSkuZmlsdGVyKF9nKX1mdW5jdGlvbiBEeSguLi5sKXtyZXR1cm57XHUwMjc1cHJvdmlkZXJzOm9kKDAsbCksXHUwMjc1ZnJvbU5nTW9kdWxlOiEwfX1mdW5jdGlvbiBvZChsLC4uLmMpe2NvbnN0IGE9W10sZD1uZXcgU2V0O2xldCBoO2NvbnN0IGY9dj0+''@;'; put 'put ''e2EucHVzaCh2KX07cmV0dXJuIE5mKGMsdj0+e2NvbnN0IFM9djt4cChTLGYsW10sZCkmJihofHw9W10saC5wdXNoKFMpKX0pLHZvaWQgMCE9PWgmJmY5KGgsZiksYX1mdW5jdGlvbiBmOShsLGMpe2ZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKXtjb25zdHtuZ01vZHVsZTpkLHByb3ZpZGVy''@;'; put 'put ''czpofT1sW2FdO0w1KGgsZj0+e2MoZixkKX0pfX1mdW5jdGlvbiB4cChsLGMsYSxkKXtpZighKGw9a2kobCkpKXJldHVybiExO2xldCBoPW51bGwsZj1abihsKTtjb25zdCB2PSFmJiZtcyhsKTtpZihmfHx2KXtpZih2JiYhdi5zdGFuZGFsb25lKXJldHVybiExO2g9bH1lbHNle2NvbnN0IFY9''@;'; put 'put ''bC5uZ01vZHVsZTtpZihmPVpuKFYpLCFmKXJldHVybiExO2g9Vn1jb25zdCBTPWQuaGFzKGgpO2lmKHYpe2lmKFMpcmV0dXJuITE7aWYoZC5hZGQoaCksdi5kZXBlbmRlbmNpZXMpe2NvbnN0IFY9ImZ1bmN0aW9uIj09dHlwZW9mIHYuZGVwZW5kZW5jaWVzP3YuZGVwZW5kZW5jaWVzKCk6di5k''@;'; put 'put ''ZXBlbmRlbmNpZXM7Zm9yKGNvbnN0IFEgb2YgVil4cChRLGMsYSxkKX19ZWxzZXtpZighZilyZXR1cm4hMTt7aWYobnVsbCE9Zi5pbXBvcnRzJiYhUyl7bGV0IFE7ZC5hZGQoaCk7dHJ5e05mKGYuaW1wb3J0cyxkZT0+e3hwKGRlLGMsYSxkKSYmKFF8fD1bXSxRLnB1c2goZGUpKX0pfWZpbmFs''@;'; put 'put ''bHl7fXZvaWQgMCE9PVEmJmY5KFEsYyl9aWYoIVMpe2NvbnN0IFE9QWMoaCl8fCgoKT0+bmV3IGgpO2Moe3Byb3ZpZGU6aCx1c2VGYWN0b3J5OlEsZGVwczpBc30saCksYyh7cHJvdmlkZTpBNSx1c2VWYWx1ZTpoLG11bHRpOiEwfSxoKSxjKHtwcm92aWRlOmVoLHVzZVZhbHVlOigpPT5jciho''@;'; put 'put ''KSxtdWx0aTohMH0saCl9Y29uc3QgVj1mLnByb3ZpZGVycztpZihudWxsIT1WJiYhUyl7Y29uc3QgUT1sO0w1KFYsZGU9PntjKGRlLFEpfSl9fX1yZXR1cm4gaCE9PWwmJnZvaWQgMCE9PWwucHJvdmlkZXJzfWZ1bmN0aW9uIEw1KGwsYyl7Zm9yKGxldCBhIG9mIGwpdGQoYSkmJihhPWEuXHUw''@;'; put 'put ''Mjc1cHJvdmlkZXJzKSxBcnJheS5pc0FycmF5KGEpP0w1KGEsYyk6YyhhKX1jb25zdCBJeT1jbyh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6Y299KTtmdW5jdGlvbiBPNShsKXtyZXR1cm4gbnVsbCE9PWwmJiJvYmplY3QiPT10eXBlb2YgbCYmSXkgaW4gbH1mdW5jdGlvbiBiMihsKXtyZXR1''@;'; put 'put ''cm4iZnVuY3Rpb24iPT10eXBlb2YgbH1jb25zdCBGNT1uZXcgJHIoIiIpLGpmPXt9LFJ5PXt9O2xldCBONTtmdW5jdGlvbiB6Zigpe3JldHVybiB2b2lkIDA9PT1ONSYmKE41PW5ldyBnZyksTjV9Y2xhc3MgWGx7fWNsYXNzIHcxIGV4dGVuZHMgWGx7Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0''@;'; put 'put ''aGlzLl9kZXN0cm95ZWR9Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoKSx0aGlzLnBhcmVudD1hLHRoaXMuc291cmNlPWQsdGhpcy5zY29wZXM9aCx0aGlzLnJlY29yZHM9bmV3IE1hcCx0aGlzLl9uZ09uRGVzdHJveUhvb2tzPW5ldyBTZXQsdGhpcy5fb25EZXN0cm95SG9va3M9W10sdGhp''@;'; put 'put ''cy5fZGVzdHJveWVkPSExLHdnKGMsdj0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodikpLHRoaXMucmVjb3Jkcy5zZXQoSGYsVWYodm9pZCAwLHRoaXMpKSxoLmhhcygiZW52aXJvbm1lbnQiKSYmdGhpcy5yZWNvcmRzLnNldChYbCxVZih2b2lkIDAsdGhpcykpO2NvbnN0IGY9dGhpcy5yZWNvcmRz''@;'; put 'put ''LmdldChGNSk7bnVsbCE9ZiYmInN0cmluZyI9PXR5cGVvZiBmLnZhbHVlJiZ0aGlzLnNjb3Blcy5hZGQoZi52YWx1ZSksdGhpcy5pbmplY3RvckRlZlR5cGVzPW5ldyBTZXQodGhpcy5nZXQoQTUsQXMsRGkuU2VsZikpfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMu''@;'; put 'put ''X2Rlc3Ryb3llZD0hMDtjb25zdCBjPWllKG51bGwpO3RyeXtmb3IoY29uc3QgZCBvZiB0aGlzLl9uZ09uRGVzdHJveUhvb2tzKWQubmdPbkRlc3Ryb3koKTtjb25zdCBhPXRoaXMuX29uRGVzdHJveUhvb2tzO3RoaXMuX29uRGVzdHJveUhvb2tzPVtdO2Zvcihjb25zdCBkIG9mIGEpZCgpfWZp''@;'; put 'put ''bmFsbHl7dGhpcy5yZWNvcmRzLmNsZWFyKCksdGhpcy5fbmdPbkRlc3Ryb3lIb29rcy5jbGVhcigpLHRoaXMuaW5qZWN0b3JEZWZUeXBlcy5jbGVhcigpLGllKGMpfX1vbkRlc3Ryb3koYyl7cmV0dXJuIHRoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCksdGhpcy5fb25EZXN0cm95SG9va3MucHVz''@;'; put 'put ''aChjKSwoKT0+dGhpcy5yZW1vdmVPbkRlc3Ryb3koYyl9cnVuSW5Db250ZXh0KGMpe3RoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCk7Y29uc3QgYT1pZCh0aGlzKSxkPUlhKHZvaWQgMCk7dHJ5e3JldHVybiBjKCl9ZmluYWxseXtpZChhKSxJYShkKX19Z2V0KGMsYT1wMCxkPURpLkRlZmF1bHQp''@;'; put 'put ''e2lmKHRoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCksYy5oYXNPd25Qcm9wZXJ0eShuOSkpcmV0dXJuIGNbbjldKHRoaXMpO2Q9ZGcoZCk7Y29uc3QgZj1pZCh0aGlzKSx2PUlhKHZvaWQgMCk7dHJ5e2lmKCEoZCZEaS5Ta2lwU2VsZikpe2xldCBWPXRoaXMucmVjb3Jkcy5nZXQoYyk7aWYodm9p''@;'; put 'put ''ZCAwPT09Vil7Y29uc3QgUT1mdW5jdGlvbiBPeShsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbHx8Im9iamVjdCI9PXR5cGVvZiBsJiZsIGluc3RhbmNlb2YgJHJ9KGMpJiZxdShjKTtWPVEmJnRoaXMuaW5qZWN0YWJsZURlZkluU2NvcGUoUSk/VWYoeWcoYyksamYpOm51bGwsdGhpcy5y''@;'; put 'put ''ZWNvcmRzLnNldChjLFYpfWlmKG51bGwhPVYpcmV0dXJuIHRoaXMuaHlkcmF0ZShjLFYpfXJldHVybihkJkRpLlNlbGY/emYoKTp0aGlzLnBhcmVudCkuZ2V0KGMsYT1kJkRpLk9wdGlvbmFsJiZhPT09cDA/bnVsbDphKX1jYXRjaChTKXtpZigiTnVsbEluamVjdG9yRXJyb3IiPT09Uy5uYW1l''@;'; put 'put ''KXtpZigoU1tLbF09U1tLbF18fFtdKS51bnNoaWZ0KF9yKGMpKSxmKXRocm93IFM7cmV0dXJuIGZ1bmN0aW9uIGZnKGwsYyxhLGQpe2NvbnN0IGg9bFtLbF07dGhyb3cgY1t5YV0mJmgudW5zaGlmdChjW3lhXSksbC5tZXNzYWdlPWZ1bmN0aW9uIHlwKGwsYyxhLGQ9bnVsbCl7bD1sJiYiXG4i''@;'; put 'put ''PT09bC5jaGFyQXQoMCkmJiJcdTAyNzUiPT1sLmNoYXJBdCgxKT9sLnNsaWNlKDIpOmw7bGV0IGg9X3IoYyk7aWYoQXJyYXkuaXNBcnJheShjKSloPWMubWFwKF9yKS5qb2luKCIgLT4gIik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGMpe2xldCBmPVtdO2ZvcihsZXQgdiBpbiBjKWlmKGMu''@;'; put 'put ''aGFzT3duUHJvcGVydHkodikpe2xldCBTPWNbdl07Zi5wdXNoKHYrIjoiKygic3RyaW5nIj09dHlwZW9mIFM/SlNPTi5zdHJpbmdpZnkoUyk6X3IoUykpKX1oPWB7JHtmLmpvaW4oIiwgIil9fWB9cmV0dXJuYCR7YX0ke2Q/IigiK2QrIikiOiIifVske2h9XTogJHtsLnJlcGxhY2UoeXksIlxu''@;'; put 'put ''ICAiKX1gfSgiXG4iK2wubWVzc2FnZSxoLGEsZCksbC5uZ1Rva2VuUGF0aD1oLGxbS2xdPW51bGwsbH0oUyxjLCJSM0luamVjdG9yRXJyb3IiLHRoaXMuc291cmNlKX10aHJvdyBTfWZpbmFsbHl7SWEodiksaWQoZil9fXJlc29sdmVJbmplY3RvckluaXRpYWxpemVycygpe2NvbnN0IGM9aWUo''@;'; put 'put ''bnVsbCksYT1pZCh0aGlzKSxkPUlhKHZvaWQgMCk7dHJ5e2NvbnN0IGY9dGhpcy5nZXQoZWgsQXMsRGkuU2VsZik7Zm9yKGNvbnN0IHYgb2YgZil2KCl9ZmluYWxseXtpZChhKSxJYShkKSxpZShjKX19dG9TdHJpbmcoKXtjb25zdCBjPVtdLGE9dGhpcy5yZWNvcmRzO2Zvcihjb25zdCBkIG9m''@;'; put 'put ''IGEua2V5cygpKWMucHVzaChfcihkKSk7cmV0dXJuYFIzSW5qZWN0b3JbJHtjLmpvaW4oIiwgIil9XWB9YXNzZXJ0Tm90RGVzdHJveWVkKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBVbigyMDUsITEpfXByb2Nlc3NQcm92aWRlcihjKXtsZXQgYT1iMihjPWtpKGMpKT9jOmtpKGMm''@;'; put 'put ''JmMucHJvdmlkZSk7Y29uc3QgZD1mdW5jdGlvbiBINShsKXtyZXR1cm4gTzUobCk/VWYodm9pZCAwLGwudXNlVmFsdWUpOlVmKHY5KGwpLGpmKX0oYyk7aWYoIWIyKGMpJiYhMD09PWMubXVsdGkpe2xldCBoPXRoaXMucmVjb3Jkcy5nZXQoYSk7aHx8KGg9VWYodm9pZCAwLGpmLCEwKSxoLmZh''@;'; put 'put ''Y3Rvcnk9KCk9PmhnKGgubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQoYSxoKSksYT1jLGgubXVsdGkucHVzaChjKX10aGlzLnJlY29yZHMuc2V0KGEsZCl9aHlkcmF0ZShjLGEpe2NvbnN0IGQ9aWUobnVsbCk7dHJ5e3JldHVybiBhLnZhbHVlPT09amYmJihhLnZhbHVlPVJ5LGEudmFsdWU9YS5m''@;'; put 'put ''YWN0b3J5KCkpLCJvYmplY3QiPT10eXBlb2YgYS52YWx1ZSYmYS52YWx1ZSYmZnVuY3Rpb24gXzkobCl7cmV0dXJuIG51bGwhPT1sJiYib2JqZWN0Ij09dHlwZW9mIGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLm5nT25EZXN0cm95fShhLnZhbHVlKSYmdGhpcy5fbmdPbkRlc3Ryb3lIb29rcy5h''@;'; put 'put ''ZGQoYS52YWx1ZSksYS52YWx1ZX1maW5hbGx5e2llKGQpfX1pbmplY3RhYmxlRGVmSW5TY29wZShjKXtpZighYy5wcm92aWRlZEluKXJldHVybiExO2NvbnN0IGE9a2koYy5wcm92aWRlZEluKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/ImFueSI9PT1hfHx0aGlzLnNjb3Blcy5oYXMoYSk6''@;'; put 'put ''dGhpcy5pbmplY3RvckRlZlR5cGVzLmhhcyhhKX1yZW1vdmVPbkRlc3Ryb3koYyl7Y29uc3QgYT10aGlzLl9vbkRlc3Ryb3lIb29rcy5pbmRleE9mKGMpOy0xIT09YSYmdGhpcy5fb25EZXN0cm95SG9va3Muc3BsaWNlKGEsMSl9fWZ1bmN0aW9uIHlnKGwpe2NvbnN0IGM9cXUobCksYT1udWxs''@;'; put 'put ''IT09Yz9jLmZhY3Rvcnk6QWMobCk7aWYobnVsbCE9PWEpcmV0dXJuIGE7aWYobCBpbnN0YW5jZW9mICRyKXRocm93IG5ldyBVbigyMDQsITEpO2lmKGwgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gZnVuY3Rpb24gbTkobCl7aWYobC5sZW5ndGg+MCl0aHJvdyBuZXcgVW4oMjA0LCExKTtj''@;'; put 'put ''b25zdCBhPWZ1bmN0aW9uIGppKGwpe3JldHVybiBsJiYobFt2aV18fGxbeG9dKXx8bnVsbH0obCk7cmV0dXJuIG51bGwhPT1hPygpPT5hLmZhY3RvcnkobCk6KCk9Pm5ldyBsfShsKTt0aHJvdyBuZXcgVW4oMjA0LCExKX1mdW5jdGlvbiB2OShsLGMsYSl7bGV0IGQ7aWYoYjIobCkpe2NvbnN0''@;'; put 'put ''IGg9a2kobCk7cmV0dXJuIEFjKGgpfHx5ZyhoKX1pZihPNShsKSlkPSgpPT5raShsLnVzZVZhbHVlKTtlbHNlIGlmKGZ1bmN0aW9uIGc5KGwpe3JldHVybiEoIWx8fCFsLnVzZUZhY3RvcnkpfShsKSlkPSgpPT5sLnVzZUZhY3RvcnkoLi4uaGcobC5kZXBzfHxbXSkpO2Vsc2UgaWYoZnVuY3Rp''@;'; put 'put ''b24gcDkobCl7cmV0dXJuISghbHx8IWwudXNlRXhpc3RpbmcpfShsKSlkPSgpPT5jcihraShsLnVzZUV4aXN0aW5nKSk7ZWxzZXtjb25zdCBoPWtpKGwmJihsLnVzZUNsYXNzfHxsLnByb3ZpZGUpKTtpZighZnVuY3Rpb24gTHkobCl7cmV0dXJuISFsLmRlcHN9KGwpKXJldHVybiBBYyhoKXx8''@;'; put 'put ''eWcoaCk7ZD0oKT0+bmV3IGgoLi4uaGcobC5kZXBzKSl9cmV0dXJuIGR9ZnVuY3Rpb24gVWYobCxjLGE9ITEpe3JldHVybntmYWN0b3J5OmwsdmFsdWU6YyxtdWx0aTphP1tdOnZvaWQgMH19ZnVuY3Rpb24gd2cobCxjKXtmb3IoY29uc3QgYSBvZiBsKUFycmF5LmlzQXJyYXkoYSk/d2coYSxj''@;'; put 'put ''KTphJiZ0ZChhKT93ZyhhLlx1MDI3NXByb3ZpZGVycyxjKTpjKGEpfWZ1bmN0aW9uIGcwKGwsYyl7bCBpbnN0YW5jZW9mIHcxJiZsLmFzc2VydE5vdERlc3Ryb3llZCgpO2NvbnN0IGQ9aWQobCksaD1JYSh2b2lkIDApO3RyeXtyZXR1cm4gYygpfWZpbmFsbHl7aWQoZCksSWEoaCl9fWZ1bmN0''@;'; put 'put ''aW9uIGI5KCl7cmV0dXJuIHZvaWQgMCE9PXVnKCl8fG51bGwhPWZ1bmN0aW9uIHd5KCl7cmV0dXJuIEZmfSgpfWNvbnN0IGo1PUZ1bmN0aW9uO2NvbnN0IEthPTAsd2k9MSxfbz0yLEVsPTMsUWw9NCxnbD01LGJjPTYsbTA9NyxDYT04LFRsPTksRzA9MTAsVW89MTEsQzI9MTIsVHA9MTMscHU9''@;'; put 'put ''MTQsWGE9MTUsa3A9MTYsUzI9MTcsQzE9MTgsSHU9MTkscmg9MjAsaWg9MjEsQ2c9MjIsTTI9MjMsS289MjUsejU9MSxEYz03LFpmPTksa2w9MTA7dmFyIFNnPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuTm9uZT0wXT0iTm9uZSIsbFtsLkhhc1RyYW5zcGxhbnRlZFZpZXdzPTJdPSJIYXNUcmFu''@;'; put 'put ''c3BsYW50ZWRWaWV3cyIsbH0oU2d8fHt9KTtmdW5jdGlvbiBVYyhsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKSYmIm9iamVjdCI9PXR5cGVvZiBsW3o1XX1mdW5jdGlvbiBaYyhsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKSYmITA9PT1sW3o1XX1mdW5jdGlvbiB5YyhsKXtyZXR1cm4hISg0''@;'; put 'put ''JmwuZmxhZ3MpfWZ1bmN0aW9uIHgyKGwpe3JldHVybiBsLmNvbXBvbmVudE9mZnNldD4tMX1mdW5jdGlvbiB2MChsKXtyZXR1cm4hKDEmfmwuZmxhZ3MpfWZ1bmN0aW9uIGVjKGwpe3JldHVybiEhbC50ZW1wbGF0ZX1mdW5jdGlvbiBEcChsKXtyZXR1cm4hISg1MTImbFtfb10pfWNsYXNzICRG''@;'; put 'put ''e2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLnByZXZpb3VzVmFsdWU9Yyx0aGlzLmN1cnJlbnRWYWx1ZT1hLHRoaXMuZmlyc3RDaGFuZ2U9ZH1pc0ZpcnN0Q2hhbmdlKCl7cmV0dXJuIHRoaXMuZmlyc3RDaGFuZ2V9fWZ1bmN0aW9uIGJUKGwsYyxhLGQpe251bGwhPT1jP2MuYXBwbHlWYWx1ZVRv''@;'; put 'put ''SW5wdXRTaWduYWwoYyxkKTpsW2FdPWR9ZnVuY3Rpb24gSmEoKXtyZXR1cm4geVR9ZnVuY3Rpb24geVQobCl7cmV0dXJuIGwudHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJihsLnNldElucHV0PUtGKSxxRn1mdW5jdGlvbiBxRigpe2NvbnN0IGw9Q1QodGhpcyksYz1sPy5jdXJyZW50O2lm''@;'; put 'put ''KGMpe2NvbnN0IGE9bC5wcmV2aW91cztpZihhPT09SnUpbC5wcmV2aW91cz1jO2Vsc2UgZm9yKGxldCBkIGluIGMpYVtkXT1jW2RdO2wuY3VycmVudD1udWxsLHRoaXMubmdPbkNoYW5nZXMoYyl9fWZ1bmN0aW9uIEtGKGwsYyxhLGQsaCl7Y29uc3QgZj10aGlzLmRlY2xhcmVkSW5wdXRzW2Rd''@;'; put 'put ''LHY9Q1QobCl8fGZ1bmN0aW9uIFhGKGwsYyl7cmV0dXJuIGxbd1RdPWN9KGwse3ByZXZpb3VzOkp1LGN1cnJlbnQ6bnVsbH0pLFM9di5jdXJyZW50fHwodi5jdXJyZW50PXt9KSxWPXYucHJldmlvdXMsUT1WW2ZdO1NbZl09bmV3ICRGKFEmJlEuY3VycmVudFZhbHVlLGEsVj09PUp1KSxiVChs''@;'; put 'put ''LGMsaCxhKX1KYS5uZ0luaGVyaXQ9ITA7Y29uc3Qgd1Q9Il9fbmdTaW1wbGVDaGFuZ2VzX18iO2Z1bmN0aW9uIENUKGwpe3JldHVybiBsW3dUXXx8bnVsbH1jb25zdCBsaD1mdW5jdGlvbihsLGMsYSl7fTtsZXQgTVQ9ITE7ZnVuY3Rpb24gUmEobCl7Zm9yKDtBcnJheS5pc0FycmF5KGwpOyls''@;'; put 'put ''PWxbS2FdO3JldHVybiBsfWZ1bmN0aW9uIE1nKGwsYyl7cmV0dXJuIFJhKGNbbF0pfWZ1bmN0aW9uIGUwKGwsYyl7cmV0dXJuIFJhKGNbbC5pbmRleF0pfWZ1bmN0aW9uIFc1KGwsYyl7cmV0dXJuIGwuZGF0YVtjXX1mdW5jdGlvbiBJcChsLGMpe3JldHVybiBsW2NdfWZ1bmN0aW9uICQwKGws''@;'; put 'put ''Yyl7Y29uc3QgYT1jW2xdO3JldHVybiBVYyhhKT9hOmFbS2FdfWZ1bmN0aW9uIGp5KGwpe3JldHVybiEoMTI4Jn5sW19vXSl9ZnVuY3Rpb24gY2gobCxjKXtyZXR1cm4gbnVsbD09Yz9udWxsOmxbY119ZnVuY3Rpb24genkobCl7bFtTMl09MH1mdW5jdGlvbiBuTihsKXsxMDI0JmxbX29dfHwo''@;'; put 'put ''bFtfb118PTEwMjQsankobCkmJkc1KGwpKX1mdW5jdGlvbiBDOShsKXtyZXR1cm4hISg5MjE2JmxbX29dfHxsW00yXT8uZGlydHkpfWZ1bmN0aW9uIFp5KGwpe2xbRzBdLmNoYW5nZURldGVjdGlvblNjaGVkdWxlcj8ubm90aWZ5KDEpLEM5KGwpP0c1KGwpOjY0JmxbX29dJiYoZnVuY3Rpb24g''@;'; put 'put ''UUYoKXtyZXR1cm4gTVR9KCk/KGxbX29dfD0xMDI0LEc1KGwpKTpsW0cwXS5jaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXI/Lm5vdGlmeSgpKX1mdW5jdGlvbiBHNShsKXtsW0cwXS5jaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXI/Lm5vdGlmeSgpO2xldCBjPVJwKGwpO2Zvcig7bnVsbCE9PWMmJiEo''@;'; put 'put ''ODE5MiZjW19vXSkmJihjW19vXXw9ODE5MixqeShjKSk7KWM9UnAoYyl9ZnVuY3Rpb24gUzkobCxjKXtpZighKDI1NiZ+bFtfb10pKXRocm93IG5ldyBVbig5MTEsITEpO251bGw9PT1sW2loXSYmKGxbaWhdPVtdKSxsW2loXS5wdXNoKGMpfWZ1bmN0aW9uIFJwKGwpe2NvbnN0IGM9bFtFbF07''@;'; put 'put ''cmV0dXJuIFpjKGMpP2NbRWxdOmN9Y29uc3QgWG89e2xGcmFtZTpSVChudWxsKSxiaW5kaW5nc0VuYWJsZWQ6ITAsc2tpcEh5ZHJhdGlvblJvb3RUTm9kZTpudWxsfTtmdW5jdGlvbiBrVCgpe3JldHVybiBYby5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24geGcoKXtyZXR1cm4gbnVsbCE9PVhv''@;'; put 'put ''LnNraXBIeWRyYXRpb25Sb290VE5vZGV9ZnVuY3Rpb24gSHIoKXtyZXR1cm4gWG8ubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIE9zKCl7cmV0dXJuIFhvLmxGcmFtZS50Vmlld31mdW5jdGlvbiBfdChsKXtyZXR1cm4gWG8ubEZyYW1lLmNvbnRleHRMVmlldz1sLGxbQ2FdfWZ1bmN0aW9uIGJ0KGwp''@;'; put 'put ''e3JldHVybiBYby5sRnJhbWUuY29udGV4dExWaWV3PW51bGwsbH1mdW5jdGlvbiBTYSgpe2xldCBsPVl5KCk7Zm9yKDtudWxsIT09bCYmNjQ9PT1sLnR5cGU7KWw9bC5wYXJlbnQ7cmV0dXJuIGx9ZnVuY3Rpb24gWXkoKXtyZXR1cm4gWG8ubEZyYW1lLmN1cnJlbnRUTm9kZX1mdW5jdGlvbiB1''@;'; put 'put ''aChsLGMpe2NvbnN0IGE9WG8ubEZyYW1lO2EuY3VycmVudFROb2RlPWwsYS5pc1BhcmVudD1jfWZ1bmN0aW9uIFd5KCl7cmV0dXJuIFhvLmxGcmFtZS5pc1BhcmVudH1mdW5jdGlvbiBHeSgpe1hvLmxGcmFtZS5pc1BhcmVudD0hMX1mdW5jdGlvbiB0MCgpe2NvbnN0IGw9WG8ubEZyYW1lO2xl''@;'; put 'put ''dCBjPWwuYmluZGluZ1Jvb3RJbmRleDtyZXR1cm4tMT09PWMmJihjPWwuYmluZGluZ1Jvb3RJbmRleD1sLnRWaWV3LmJpbmRpbmdTdGFydEluZGV4KSxjfWZ1bmN0aW9uIEUyKCl7cmV0dXJuIFhvLmxGcmFtZS5iaW5kaW5nSW5kZXh9ZnVuY3Rpb24gYWQoKXtyZXR1cm4gWG8ubEZyYW1lLmJp''@;'; put 'put ''bmRpbmdJbmRleCsrfWZ1bmN0aW9uIFQyKGwpe2NvbnN0IGM9WG8ubEZyYW1lLGE9Yy5iaW5kaW5nSW5kZXg7cmV0dXJuIGMuYmluZGluZ0luZGV4PWMuYmluZGluZ0luZGV4K2wsYX1mdW5jdGlvbiBoTihsLGMpe2NvbnN0IGE9WG8ubEZyYW1lO2EuYmluZGluZ0luZGV4PWEuYmluZGluZ1Jv''@;'; put 'put ''b3RJbmRleD1sLCR5KGMpfWZ1bmN0aW9uICR5KGwpe1hvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg9bH1mdW5jdGlvbiBxeShsKXtjb25zdCBjPVhvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg7cmV0dXJuLTE9PT1jP251bGw6bFtjXX1mdW5jdGlvbiBLeSgpe3JldHVybiBY''@;'; put 'put ''by5sRnJhbWUuY3VycmVudFF1ZXJ5SW5kZXh9ZnVuY3Rpb24gWWYobCl7WG8ubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4PWx9ZnVuY3Rpb24gWHkobCl7Y29uc3QgYz1sW3dpXTtyZXR1cm4gMj09PWMudHlwZT9jLmRlY2xUTm9kZToxPT09Yy50eXBlP2xbZ2xdOm51bGx9ZnVuY3Rpb24geDko''@;'; put 'put ''bCxjLGEpe2lmKGEmRGkuU2tpcFNlbGYpe2xldCBoPWMsZj1sO2Zvcig7IShoPWgucGFyZW50LG51bGwhPT1ofHxhJkRpLkhvc3R8fChoPVh5KGYpLG51bGw9PT1ofHwoZj1mW3B1XSwxMCZoLnR5cGUpKSk7KTtpZihudWxsPT09aClyZXR1cm4hMTtjPWgsbD1mfWNvbnN0IGQ9WG8ubEZyYW1l''@;'; put 'put ''PVdmKCk7cmV0dXJuIGQuY3VycmVudFROb2RlPWMsZC5sVmlldz1sLCEwfWZ1bmN0aW9uIHE1KGwpe2NvbnN0IGM9V2YoKSxhPWxbd2ldO1hvLmxGcmFtZT1jLGMuY3VycmVudFROb2RlPWEuZmlyc3RDaGlsZCxjLmxWaWV3PWwsYy50Vmlldz1hLGMuY29udGV4dExWaWV3PWwsYy5iaW5kaW5n''@;'; put 'put ''SW5kZXg9YS5iaW5kaW5nU3RhcnRJbmRleCxjLmluSTE4bj0hMX1mdW5jdGlvbiBXZigpe2NvbnN0IGw9WG8ubEZyYW1lLGM9bnVsbD09PWw/bnVsbDpsLmNoaWxkO3JldHVybiBudWxsPT09Yz9SVChsKTpjfWZ1bmN0aW9uIFJUKGwpe2NvbnN0IGM9e2N1cnJlbnRUTm9kZTpudWxsLGlzUGFy''@;'; put 'put ''ZW50OiEwLGxWaWV3Om51bGwsdFZpZXc6bnVsbCxzZWxlY3RlZEluZGV4Oi0xLGNvbnRleHRMVmlldzpudWxsLGVsZW1lbnREZXB0aENvdW50OjAsY3VycmVudE5hbWVzcGFjZTpudWxsLGN1cnJlbnREaXJlY3RpdmVJbmRleDotMSxiaW5kaW5nUm9vdEluZGV4Oi0xLGJpbmRpbmdJbmRleDot''@;'; put 'put ''MSxjdXJyZW50UXVlcnlJbmRleDowLHBhcmVudDpsLGNoaWxkOm51bGwsaW5JMThuOiExfTtyZXR1cm4gbnVsbCE9PWwmJihsLmNoaWxkPWMpLGN9ZnVuY3Rpb24gRTkoKXtjb25zdCBsPVhvLmxGcmFtZTtyZXR1cm4gWG8ubEZyYW1lPWwucGFyZW50LGwuY3VycmVudFROb2RlPW51bGwsbC5s''@;'; put 'put ''Vmlldz1udWxsLGx9Y29uc3QgTFQ9RTk7ZnVuY3Rpb24gRWcoKXtjb25zdCBsPUU5KCk7bC5pc1BhcmVudD0hMCxsLnRWaWV3PW51bGwsbC5zZWxlY3RlZEluZGV4PS0xLGwuY29udGV4dExWaWV3PW51bGwsbC5lbGVtZW50RGVwdGhDb3VudD0wLGwuY3VycmVudERpcmVjdGl2ZUluZGV4PS0x''@;'; put 'put ''LGwuY3VycmVudE5hbWVzcGFjZT1udWxsLGwuYmluZGluZ1Jvb3RJbmRleD0tMSxsLmJpbmRpbmdJbmRleD0tMSxsLmN1cnJlbnRRdWVyeUluZGV4PTB9ZnVuY3Rpb24gV2MoKXtyZXR1cm4gWG8ubEZyYW1lLnNlbGVjdGVkSW5kZXh9ZnVuY3Rpb24gTHAobCl7WG8ubEZyYW1lLnNlbGVjdGVk''@;'; put 'put ''SW5kZXg9bH1mdW5jdGlvbiBwYSgpe2NvbnN0IGw9WG8ubEZyYW1lO3JldHVybiBXNShsLnRWaWV3LGwuc2VsZWN0ZWRJbmRleCl9bGV0IFBUPSEwO2Z1bmN0aW9uIEs1KCl7cmV0dXJuIFBUfWZ1bmN0aW9uIGRoKGwpe1BUPWx9ZnVuY3Rpb24gVDkobCxjKXtmb3IobGV0IGE9Yy5kaXJlY3Rp''@;'; put 'put ''dmVTdGFydCxkPWMuZGlyZWN0aXZlRW5kO2E8ZDthKyspe2NvbnN0IGY9bC5kYXRhW2FdLnR5cGUucHJvdG90eXBlLHtuZ0FmdGVyQ29udGVudEluaXQ6dixuZ0FmdGVyQ29udGVudENoZWNrZWQ6UyxuZ0FmdGVyVmlld0luaXQ6VixuZ0FmdGVyVmlld0NoZWNrZWQ6USxuZ09uRGVzdHJveTpk''@;'; put 'put ''ZX09Zjt2JiYobC5jb250ZW50SG9va3M/Pz1bXSkucHVzaCgtYSx2KSxTJiYoKGwuY29udGVudEhvb2tzPz89W10pLnB1c2goYSxTKSwobC5jb250ZW50Q2hlY2tIb29rcz8/PVtdKS5wdXNoKGEsUykpLFYmJihsLnZpZXdIb29rcz8/PVtdKS5wdXNoKC1hLFYpLFEmJigobC52aWV3SG9va3M/''@;'; put 'put ''Pz1bXSkucHVzaChhLFEpLChsLnZpZXdDaGVja0hvb2tzPz89W10pLnB1c2goYSxRKSksbnVsbCE9ZGUmJihsLmRlc3Ryb3lIb29rcz8/PVtdKS5wdXNoKGEsZGUpfX1mdW5jdGlvbiBrOShsLGMsYSl7RlQobCxjLDMsYSl9ZnVuY3Rpb24gQTkobCxjLGEsZCl7KDMmbFtfb10pPT09YSYmRlQo''@;'; put 'put ''bCxjLGEsZCl9ZnVuY3Rpb24gUXkobCxjKXtsZXQgYT1sW19vXTsoMyZhKT09PWMmJihhJj0xNjM4MyxhKz0xLGxbX29dPWEpfWZ1bmN0aW9uIEZUKGwsYyxhLGQpe2NvbnN0IGY9ZD8/LTEsdj1jLmxlbmd0aC0xO2xldCBTPTA7Zm9yKGxldCBWPXZvaWQgMCE9PWQ/NjU1MzUmbFtTMl06MDtW''@;'; put 'put ''PHY7VisrKWlmKCJudW1iZXIiPT10eXBlb2YgY1tWKzFdKXtpZihTPWNbVl0sbnVsbCE9ZCYmUz49ZClicmVha31lbHNlIGNbVl08MCYmKGxbUzJdKz02NTUzNiksKFM8Znx8LTE9PWYpJiYoYk4obCxhLGMsViksbFtTMl09KDQyOTQ5MDE3NjAmbFtTMl0pK1YrMiksVisrfWZ1bmN0aW9uIE5U''@;'; put 'put ''KGwsYyl7bGgoNCxsLGMpO2NvbnN0IGE9aWUobnVsbCk7dHJ5e2MuY2FsbChsKX1maW5hbGx5e2llKGEpLGxoKDUsbCxjKX19ZnVuY3Rpb24gYk4obCxjLGEsZCl7Y29uc3QgaD1hW2RdPDAsZj1hW2QrMV0sUz1sW2g/LWFbZF06YVtkXV07aD9sW19vXT4+MTQ8bFtTMl0+PjE2JiYoMyZsW19v''@;'; put 'put ''XSk9PT1jJiYobFtfb10rPTE2Mzg0LE5UKFMsZikpOk5UKFMsZil9Y29uc3QgT3A9LTE7Y2xhc3MgcTB7Y29uc3RydWN0b3IoYyxhLGQpe3RoaXMuZmFjdG9yeT1jLHRoaXMucmVzb2x2aW5nPSExLHRoaXMuY2FuU2VlVmlld1Byb3ZpZGVycz1hLHRoaXMuaW5qZWN0SW1wbD1kfX1mdW5jdGlv''@;'; put 'put ''biBEOShsKXtyZXR1cm4gbCE9PU9wfWZ1bmN0aW9uIFg1KGwpe3JldHVybiAzMjc2NyZsfWZ1bmN0aW9uIEo1KGwsYyl7bGV0IGE9ZnVuY3Rpb24geE4obCl7cmV0dXJuIGw+PjE2fShsKSxkPWM7Zm9yKDthPjA7KWQ9ZFtwdV0sYS0tO3JldHVybiBkfWxldCB0dz0hMDtmdW5jdGlvbiBJOShs''@;'; put 'put ''KXtjb25zdCBjPXR3O3JldHVybiB0dz1sLGN9Y29uc3QgUjk9MjU1LG53PTU7bGV0IEVOPTA7Y29uc3QgaGg9e307ZnVuY3Rpb24gTDkobCxjKXtjb25zdCBhPU85KGwsYyk7aWYoLTEhPT1hKXJldHVybiBhO2NvbnN0IGQ9Y1t3aV07ZC5maXJzdENyZWF0ZVBhc3MmJihsLmluamVjdG9ySW5k''@;'; put 'put ''ZXg9Yy5sZW5ndGgscncoZC5kYXRhLGwpLHJ3KGMsbnVsbCkscncoZC5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0IGg9VGcobCxjKSxmPWwuaW5qZWN0b3JJbmRleDtpZihEOShoKSl7Y29uc3Qgdj1YNShoKSxTPUo1KGgsYyksVj1TW3dpXS5kYXRhO2ZvcihsZXQgUT0wO1E8ODtRKyspY1tmK1Fd''@;'; put 'put ''PVNbditRXXxWW3YrUV19cmV0dXJuIGNbZis4XT1oLGZ9ZnVuY3Rpb24gcncobCxjKXtsLnB1c2goMCwwLDAsMCwwLDAsMCwwLGMpfWZ1bmN0aW9uIE85KGwsYyl7cmV0dXJuLTE9PT1sLmluamVjdG9ySW5kZXh8fGwucGFyZW50JiZsLnBhcmVudC5pbmplY3RvckluZGV4PT09bC5pbmplY3Rv''@;'; put 'put ''ckluZGV4fHxudWxsPT09Y1tsLmluamVjdG9ySW5kZXgrOF0/LTE6bC5pbmplY3RvckluZGV4fWZ1bmN0aW9uIFRnKGwsYyl7aWYobC5wYXJlbnQmJi0xIT09bC5wYXJlbnQuaW5qZWN0b3JJbmRleClyZXR1cm4gbC5wYXJlbnQuaW5qZWN0b3JJbmRleDtsZXQgYT0wLGQ9bnVsbCxoPWM7Zm9y''@;'; put 'put ''KDtudWxsIT09aDspe2lmKGQ9Y2QoaCksbnVsbD09PWQpcmV0dXJuIE9wO2lmKGErKyxoPWhbcHVdLC0xIT09ZC5pbmplY3RvckluZGV4KXJldHVybiBkLmluamVjdG9ySW5kZXh8YTw8MTZ9cmV0dXJuIE9wfWZ1bmN0aW9uIE0xKGwsYyxhKXshZnVuY3Rpb24gVE4obCxjLGEpe2xldCBkOyJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgYT9kPWEuY2hhckNvZGVBdCgwKXx8MDphLmhhc093blByb3BlcnR5KHZwKSYmKGQ9YVt2cF0pLG51bGw9PWQmJihkPWFbdnBdPUVOKyspO2NvbnN0IGg9ZCZSOTtjLmRhdGFbbCsoaD4+bncpXXw9MTw8aH0obCxjLGEpfWZ1bmN0aW9uIEhUKGwsYyxhKXtpZihhJkRp''@;'; put 'put ''Lk9wdGlvbmFsfHx2b2lkIDAhPT1sKXJldHVybiBsO2FhKCl9ZnVuY3Rpb24gbGQobCxjLGEsZCl7aWYoYSZEaS5PcHRpb25hbCYmdm9pZCAwPT09ZCYmKGQ9bnVsbCksIShhJihEaS5TZWxmfERpLkhvc3QpKSl7Y29uc3QgaD1sW1RsXSxmPUlhKHZvaWQgMCk7dHJ5e3JldHVybiBoP2guZ2V0''@;'; put 'put ''KGMsZCxhJkRpLk9wdGlvbmFsKTpyZChjLGQsYSZEaS5PcHRpb25hbCl9ZmluYWxseXtJYShmKX19cmV0dXJuIEhUKGQsMCxhKX1mdW5jdGlvbiBWVChsLGMsYSxkPURpLkRlZmF1bHQsaCl7aWYobnVsbCE9PWwpe2lmKDIwNDgmY1tfb10mJiEoZCZEaS5TZWxmKSl7Y29uc3Qgdj1mdW5jdGlv''@;'; put 'put ''biAkZihsLGMsYSxkLGgpe2xldCBmPWwsdj1jO2Zvcig7bnVsbCE9PWYmJm51bGwhPT12JiYyMDQ4JnZbX29dJiYhKDUxMiZ2W19vXSk7KXtjb25zdCBTPWtnKGYsdixhLGR8RGkuU2VsZixoaCk7aWYoUyE9PWhoKXJldHVybiBTO2xldCBWPWYucGFyZW50O2lmKCFWKXtjb25zdCBRPXZbcmhd''@;'; put 'put ''O2lmKFEpe2NvbnN0IGRlPVEuZ2V0KGEsaGgsZCk7aWYoZGUhPT1oaClyZXR1cm4gZGV9Vj1jZCh2KSx2PXZbcHVdfWY9Vn1yZXR1cm4gaH0obCxjLGEsZCxoaCk7aWYodiE9PWhoKXJldHVybiB2fWNvbnN0IGY9a2cobCxjLGEsZCxoaCk7aWYoZiE9PWhoKXJldHVybiBmfXJldHVybiBsZChj''@;'; put 'put ''LGEsZCxoKX1mdW5jdGlvbiBrZyhsLGMsYSxkLGgpe2NvbnN0IGY9ZnVuY3Rpb24gVmwobCl7aWYoInN0cmluZyI9PXR5cGVvZiBsKXJldHVybiBsLmNoYXJDb2RlQXQoMCl8fDA7Y29uc3QgYz1sLmhhc093blByb3BlcnR5KHZwKT9sW3ZwXTp2b2lkIDA7cmV0dXJuIm51bWJlciI9PXR5cGVv''@;'; put 'put ''ZiBjP2M+PTA/YyZSOTpfMDpjfShhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZil7aWYoIXg5KGMsbCxkKSlyZXR1cm4gZCZEaS5Ib3N0P0hUKGgsMCxkKTpsZChjLGEsZCxoKTt0cnl7bGV0IHY7aWYodj1mKGQpLG51bGwhPXZ8fGQmRGkuT3B0aW9uYWwpcmV0dXJuIHY7YWEoKX1maW5hbGx5''@;'; put 'put ''e0xUKCl9fWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBmKXtsZXQgdj1udWxsLFM9TzkobCxjKSxWPU9wLFE9ZCZEaS5Ib3N0P2NbWGFdW2dsXTpudWxsO2ZvcigoLTE9PT1TfHxkJkRpLlNraXBTZWxmKSYmKFY9LTE9PT1TP1RnKGwsYyk6Y1tTKzhdLFYhPT1PcCYmRGcoZCwhMSk/KHY9Y1t3''@;'; put 'put ''aV0sUz1YNShWKSxjPUo1KFYsYykpOlM9LTEpOy0xIT09Uzspe2NvbnN0IGRlPWNbd2ldO2lmKEFnKGYsUyxkZS5kYXRhKSl7Y29uc3QgcGU9QlQoUyxjLGEsdixkLFEpO2lmKHBlIT09aGgpcmV0dXJuIHBlfVY9Y1tTKzhdLFYhPT1PcCYmRGcoZCxjW3dpXS5kYXRhW1MrOF09PT1RKSYmQWco''@;'; put 'put ''ZixTLGMpPyh2PWRlLFM9WDUoViksYz1KNShWLGMpKTpTPS0xfX1yZXR1cm4gaH1mdW5jdGlvbiBCVChsLGMsYSxkLGgsZil7Y29uc3Qgdj1jW3dpXSxTPXYuZGF0YVtsKzhdLGRlPVA5KFMsdixhLG51bGw9PWQ/eDIoUykmJnR3OmQhPXYmJiEhKDMmUy50eXBlKSxoJkRpLkhvc3QmJmY9PT1T''@;'; put 'put ''KTtyZXR1cm4gbnVsbCE9PWRlP1BwKGMsdixkZSxTKTpoaH1mdW5jdGlvbiBQOShsLGMsYSxkLGgpe2NvbnN0IGY9bC5wcm92aWRlckluZGV4ZXMsdj1jLmRhdGEsUz0xMDQ4NTc1JmYsVj1sLmRpcmVjdGl2ZVN0YXJ0LGRlPWY+PjIwLENlPWg/UytkZTpsLmRpcmVjdGl2ZUVuZDtmb3IobGV0''@;'; put 'put ''IE9lPWQ/UzpTK2RlO09lPENlO09lKyspe2NvbnN0IFllPXZbT2VdO2lmKE9lPFYmJmE9PT1ZZXx8T2U+PVYmJlllLnR5cGU9PT1hKXJldHVybiBPZX1pZihoKXtjb25zdCBPZT12W1ZdO2lmKE9lJiZlYyhPZSkmJk9lLnR5cGU9PT1hKXJldHVybiBWfXJldHVybiBudWxsfWZ1bmN0aW9uIFBw''@;'; put 'put ''KGwsYyxhLGQpe2xldCBoPWxbYV07Y29uc3QgZj1jLmRhdGE7aWYoZnVuY3Rpb24geU4obCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBxMH0oaCkpe2NvbnN0IHY9aDt2LnJlc29sdmluZyYmZnVuY3Rpb24gYnkobCxjKXt0aHJvdyBjJiZjLmpvaW4oIiA+ICIpLG5ldyBVbigtMjAwLGwpfShmdW5j''@;'; put 'put ''dGlvbiB5byhsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbD9sLm5hbWV8fGwudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIGwmJm51bGwhPWwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnR5cGU/bC50eXBlLm5hbWV8fGwudHlwZS50b1N0cmluZygpOiRvKGwpfShmW2FdKSk7Y29uc3Qg''@;'; put 'put ''Uz1JOSh2LmNhblNlZVZpZXdQcm92aWRlcnMpO3YucmVzb2x2aW5nPSEwO2NvbnN0IFE9di5pbmplY3RJbXBsP0lhKHYuaW5qZWN0SW1wbCk6bnVsbDt4OShsLGQsRGkuRGVmYXVsdCk7dHJ5e2g9bFthXT12LmZhY3Rvcnkodm9pZCAwLGYsbCxkKSxjLmZpcnN0Q3JlYXRlUGFzcyYmYT49ZC5k''@;'; put 'put ''aXJlY3RpdmVTdGFydCYmZnVuY3Rpb24gX04obCxjLGEpe2NvbnN0e25nT25DaGFuZ2VzOmQsbmdPbkluaXQ6aCxuZ0RvQ2hlY2s6Zn09Yy50eXBlLnByb3RvdHlwZTtpZihkKXtjb25zdCB2PXlUKGMpOyhhLnByZU9yZGVySG9va3M/Pz1bXSkucHVzaChsLHYpLChhLnByZU9yZGVyQ2hlY2tI''@;'; put 'put ''b29rcz8/PVtdKS5wdXNoKGwsdil9aCYmKGEucHJlT3JkZXJIb29rcz8/PVtdKS5wdXNoKDAtbCxoKSxmJiYoKGEucHJlT3JkZXJIb29rcz8/PVtdKS5wdXNoKGwsZiksKGEucHJlT3JkZXJDaGVja0hvb2tzPz89W10pLnB1c2gobCxmKSl9KGEsZlthXSxjKX1maW5hbGx5e251bGwhPT1RJiZJ''@;'; put 'put ''YShRKSxJOShTKSx2LnJlc29sdmluZz0hMSxMVCgpfX1yZXR1cm4gaH1mdW5jdGlvbiBBZyhsLGMsYSl7cmV0dXJuISEoYVtjKyhsPj5udyldJjE8PGwpfWZ1bmN0aW9uIERnKGwsYyl7cmV0dXJuIShsJkRpLlNlbGZ8fGwmRGkuSG9zdCYmYyl9Y2xhc3MgR2N7Y29uc3RydWN0b3IoYyxhKXt0''@;'; put 'put ''aGlzLl90Tm9kZT1jLHRoaXMuX2xWaWV3PWF9Z2V0KGMsYSxkKXtyZXR1cm4gVlQodGhpcy5fdE5vZGUsdGhpcy5fbFZpZXcsYyxkZyhkKSxhKX19ZnVuY3Rpb24gXzAoKXtyZXR1cm4gbmV3IEdjKFNhKCksSHIoKSl9ZnVuY3Rpb24gTGEobCl7cmV0dXJuIHpvKCgpPT57Y29uc3QgYz1sLnBy''@;'; put 'put ''b3RvdHlwZS5jb25zdHJ1Y3RvcixhPWNbYnNdfHxBMihjKSxkPU9iamVjdC5wcm90b3R5cGU7bGV0IGg9T2JqZWN0LmdldFByb3RvdHlwZU9mKGwucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcjtmb3IoO2gmJmghPT1kOyl7Y29uc3QgZj1oW2JzXXx8QTIoaCk7aWYoZiYmZiE9PWEpcmV0dXJuIGY7''@;'; put 'put ''aD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoaCl9cmV0dXJuIGY9Pm5ldyBmfSl9ZnVuY3Rpb24gQTIobCl7cmV0dXJuIENsKGwpPygpPT57Y29uc3QgYz1BMihraShsKSk7cmV0dXJuIGMmJmMoKX06QWMobCl9ZnVuY3Rpb24gY2QobCl7Y29uc3QgYz1sW3dpXSxhPWMudHlwZTtyZXR1cm4gMj09''@;'; put 'put ''PWE/Yy5kZWNsVE5vZGU6MT09PWE/bFtnbF06bnVsbH1mdW5jdGlvbiBEMihsKXtyZXR1cm4gZnVuY3Rpb24ga04obCxjKXtpZigiY2xhc3MiPT09YylyZXR1cm4gbC5jbGFzc2VzO2lmKCJzdHlsZSI9PT1jKXJldHVybiBsLnN0eWxlcztjb25zdCBhPWwuYXR0cnM7aWYoYSl7Y29uc3QgZD1h''@;'; put 'put ''Lmxlbmd0aDtsZXQgaD0wO2Zvcig7aDxkOyl7Y29uc3QgZj1hW2hdO2lmKG1nKGYpKWJyZWFrO2lmKDA9PT1mKWgrPTI7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGYpZm9yKGgrKztoPGQmJiJzdHJpbmciPT10eXBlb2YgYVtoXTspaCsrO2Vsc2V7aWYoZj09PWMpcmV0dXJuIGFbaCsxXTto''@;'; put 'put ''Kz0yfX19cmV0dXJuIG51bGx9KFNhKCksbCl9ZnVuY3Rpb24gY3cobCxjPW51bGwsYT1udWxsLGQpe2NvbnN0IGg9TnAobCxjLGEsZCk7cmV0dXJuIGgucmVzb2x2ZUluamVjdG9ySW5pdGlhbGl6ZXJzKCksaH1mdW5jdGlvbiBOcChsLGM9bnVsbCxhPW51bGwsZCxoPW5ldyBTZXQpe2NvbnN0''@;'; put 'put ''IGY9W2F8fEFzLER5KGwpXTtyZXR1cm4gZD1kfHwoIm9iamVjdCI9PXR5cGVvZiBsP3ZvaWQgMDpfcihsKSksbmV3IHcxKGYsY3x8emYoKSxkfHxudWxsLGgpfWxldCBNYT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlRIUk9XX0lGX05PVF9GT1VORD1wMH1zdGF0aWN7dGhpcy5OVUxMPW5l''@;'; put 'put ''dyBnZ31zdGF0aWMgY3JlYXRlKGEsZCl7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gY3coe25hbWU6IiJ9LGQsYSwiIik7e2NvbnN0IGg9YS5uYW1lPz8iIjtyZXR1cm4gY3coe25hbWU6aH0sYS5wYXJlbnQsYS5wcm92aWRlcnMsaCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rv''@;'; put 'put ''a2VuOmwscHJvdmlkZWRJbjoiYW55IixmYWN0b3J5OigpPT5jcihIZil9KX1zdGF0aWN7dGhpcy5fX05HX0VMRU1FTlRfSURfXz0tMX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIExnKGwpe3JldHVybiBsLm5nT3JpZ2luYWxFcnJvcn1jbGFzcyBmaHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnNv''@;'; put 'put ''bGU9Y29uc29sZX1oYW5kbGVFcnJvcihjKXtjb25zdCBhPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKGMpO3RoaXMuX2NvbnNvbGUuZXJyb3IoIkVSUk9SIixjKSxhJiZ0aGlzLl9jb25zb2xlLmVycm9yKCJPUklHSU5BTCBFUlJPUiIsYSl9X2ZpbmRPcmlnaW5hbEVycm9yKGMpe2xldCBhPWMm''@;'; put 'put ''JkxnKGMpO2Zvcig7YSYmTGcoYSk7KWE9TGcoYSk7cmV0dXJuIGF8fG51bGx9fWNvbnN0IFpUPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+WnIoZmgpLmhhbmRsZUVycm9yLmJpbmQodm9pZCAwKX0pO2xldCBPZz0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLl9f''@;'; put 'put ''TkdfRUxFTUVOVF9JRF9fPUtmfXN0YXRpY3t0aGlzLl9fTkdfRU5WX0lEX189YT0+YX19cmV0dXJuIGx9KSgpO2NsYXNzIHFmIGV4dGVuZHMgT2d7Y29uc3RydWN0b3IoYyl7c3VwZXIoKSx0aGlzLl9sVmlldz1jfW9uRGVzdHJveShjKXtyZXR1cm4gUzkodGhpcy5fbFZpZXcsYyksKCk9PmZ1''@;'; put 'put ''bmN0aW9uIE05KGwsYyl7aWYobnVsbD09PWxbaWhdKXJldHVybjtjb25zdCBhPWxbaWhdLmluZGV4T2YoYyk7LTEhPT1hJiZsW2loXS5zcGxpY2UoYSwxKX0odGhpcy5fbFZpZXcsYyl9fWZ1bmN0aW9uIEtmKCl7cmV0dXJuIG5ldyBxZihIcigpKX1mdW5jdGlvbiBJTigpe3JldHVybiBIcChT''@;'; put 'put ''YSgpLEhyKCkpfWZ1bmN0aW9uIEhwKGwsYyl7cmV0dXJuIG5ldyBOaShlMChsLGMpKX1sZXQgTmk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLm5hdGl2ZUVsZW1lbnQ9YX1zdGF0aWN7dGhpcy5fX05HX0VMRU1FTlRfSURfXz1JTn19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIFdU''@;'; put 'put ''KGwpe3JldHVybiBsIGluc3RhbmNlb2YgTmk/bC5uYXRpdmVFbGVtZW50Omx9ZnVuY3Rpb24gdXcobCl7cmV0dXJuIGM9PntzZXRUaW1lb3V0KGwsdm9pZCAwLGMpfX1jb25zdCBEcj1jbGFzcyBSTiBleHRlbmRzIHRue2NvbnN0cnVjdG9yKGM9ITEpe3N1cGVyKCksdGhpcy5kZXN0cm95UmVm''@;'; put 'put ''PXZvaWQgMCx0aGlzLl9faXNBc3luYz1jLGI5KCkmJih0aGlzLmRlc3Ryb3lSZWY9WnIoT2cse29wdGlvbmFsOiEwfSk/P3ZvaWQgMCl9ZW1pdChjKXtjb25zdCBhPWllKG51bGwpO3RyeXtzdXBlci5uZXh0KGMpfWZpbmFsbHl7aWUoYSl9fXN1YnNjcmliZShjLGEsZCl7bGV0IGg9YyxmPWF8''@;'; put 'put ''fCgoKT0+bnVsbCksdj1kO2lmKGMmJiJvYmplY3QiPT10eXBlb2YgYyl7Y29uc3QgVj1jO2g9Vi5uZXh0Py5iaW5kKFYpLGY9Vi5lcnJvcj8uYmluZChWKSx2PVYuY29tcGxldGU/LmJpbmQoVil9dGhpcy5fX2lzQXN5bmMmJihmPXV3KGYpLGgmJihoPXV3KGgpKSx2JiYodj11dyh2KSkpO2Nv''@;'; put 'put ''bnN0IFM9c3VwZXIuc3Vic2NyaWJlKHtuZXh0OmgsZXJyb3I6Zixjb21wbGV0ZTp2fSk7cmV0dXJuIGMgaW5zdGFuY2VvZiBLdCYmYy5hZGQoUyksU319O2Z1bmN0aW9uIExOKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbU3ltYm9sLml0ZXJhdG9yXSgpfWNsYXNzIHgxe2dldCBjaGFuZ2VzKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2NoYW5nZXM/Pz1uZXcgRHJ9Y29uc3RydWN0b3IoYz0hMSl7dGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk9Yyx0aGlzLmRpcnR5PSEwLHRoaXMuX29uRGlydHk9dm9pZCAwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fY2hhbmdlc0RldGVjdGVkPSExLHRoaXMuX2No''@;'; put 'put ''YW5nZXM9dm9pZCAwLHRoaXMubGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBhPXgxLnByb3RvdHlwZTthW1N5bWJvbC5pdGVyYXRvcl18fChhW1N5bWJvbC5pdGVyYXRvcl09TE4pfWdldChjKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1tjXX1tYXAoYyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3Jlc3VsdHMubWFwKGMpfWZpbHRlcihjKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIoYyl9ZmluZChjKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maW5kKGMpfXJlZHVjZShjLGEpe3JldHVybiB0aGlzLl9yZXN1bHRzLnJlZHVjZShjLGEpfWZvckVhY2goYyl7dGhp''@;'; put 'put ''cy5fcmVzdWx0cy5mb3JFYWNoKGMpfXNvbWUoYyl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuc29tZShjKX10b0FycmF5KCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuc2xpY2UoKX10b1N0cmluZygpe3JldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9cmVzZXQoYyxhKXt0aGlzLmRpcnR5PSEx''@;'; put 'put ''O2NvbnN0IGQ9ZnVuY3Rpb24gZHUobCl7cmV0dXJuIGwuZmxhdChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfShjKTsodGhpcy5fY2hhbmdlc0RldGVjdGVkPSFmdW5jdGlvbiBwMihsLGMsYSl7aWYobC5sZW5ndGghPT1jLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGQ9MDtkPGwubGVuZ3Ro''@;'; put 'put ''O2QrKyl7bGV0IGg9bFtkXSxmPWNbZF07aWYoYSYmKGg9YShoKSxmPWEoZikpLGYhPT1oKXJldHVybiExfXJldHVybiEwfSh0aGlzLl9yZXN1bHRzLGQsYSkpJiYodGhpcy5fcmVzdWx0cz1kLHRoaXMubGVuZ3RoPWQubGVuZ3RoLHRoaXMubGFzdD1kW3RoaXMubGVuZ3RoLTFdLHRoaXMuZmly''@;'; put 'put ''c3Q9ZFswXSl9bm90aWZ5T25DaGFuZ2VzKCl7dm9pZCAwIT09dGhpcy5fY2hhbmdlcyYmKHRoaXMuX2NoYW5nZXNEZXRlY3RlZHx8IXRoaXMuX2VtaXREaXN0aW5jdENoYW5nZXNPbmx5KSYmdGhpcy5fY2hhbmdlcy5lbWl0KHRoaXMpfW9uRGlydHkoYyl7dGhpcy5fb25EaXJ0eT1jfXNldERp''@;'; put 'put ''cnR5KCl7dGhpcy5kaXJ0eT0hMCx0aGlzLl9vbkRpcnR5Py4oKX1kZXN0cm95KCl7dm9pZCAwIT09dGhpcy5fY2hhbmdlcyYmKHRoaXMuX2NoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9jaGFuZ2VzLnVuc3Vic2NyaWJlKCkpfX1mdW5jdGlvbiBWOShsKXtyZXR1cm4hKDEyOCZ+bC5mbGFncyl9''@;'; put 'put ''Y29uc3QgZHc9bmV3IE1hcDtsZXQgUE49MDtjb25zdCBmdz0iX19uZ0NvbnRleHRfXyI7ZnVuY3Rpb24gJGMobCxjKXtVYyhjKT8obFtmd109Y1tIdV0sZnVuY3Rpb24gTk4obCl7ZHcuc2V0KGxbSHVdLGwpfShjKSk6bFtmd109Y31mdW5jdGlvbiBRVChsKXtyZXR1cm4gdGsobFtDMl0pfWZ1''@;'; put 'put ''bmN0aW9uIGVrKGwpe3JldHVybiB0ayhsW1FsXSl9ZnVuY3Rpb24gdGsobCl7Zm9yKDtudWxsIT09bCYmIVpjKGwpOylsPWxbUWxdO3JldHVybiBsfWxldCBndztmdW5jdGlvbiBYZigpe2lmKHZvaWQgMCE9PWd3KXJldHVybiBndztpZih0eXBlb2YgZG9jdW1lbnQ8InUiKXJldHVybiBkb2N1''@;'; put 'put ''bWVudDt0aHJvdyBuZXcgVW4oMjEwLCExKX1jb25zdCBVOT1uZXcgJHIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PmVIfSksZUg9Im5nIixsaz1uZXcgJHIoIiIpLElvPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicGxhdGZvcm0iLGZhY3Rvcnk6KCk9PiJ1bmtub3duIn0pLGNr''@;'; put 'put ''PW5ldyAkcigiIiksSGc9bmV3ICRyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5YZigpLmJvZHk/LnF1ZXJ5U2VsZWN0b3IoIltuZ0NzcE5vbmNlXSIpPy5nZXRBdHRyaWJ1dGUoIm5nQ3NwTm9uY2UiKXx8bnVsbH0pO2xldCBkaz0oKT0+bnVsbDtmdW5jdGlvbiB5dyhsLGMs''@;'; put 'put ''YT0hMSl7cmV0dXJuIGRrKGwsYyxhKX1jb25zdCBwaz1uZXcgJHIoIiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PiExfSk7bGV0ICQ5LHE5O2Z1bmN0aW9uIGpnKGwpe3JldHVybiBmdW5jdGlvbiB4dygpe2lmKHZvaWQgMD09PSQ5JiYoJDk9bnVsbCxCcy50cnVzdGVkVHlwZXMp''@;'; put 'put ''KXRyeXskOT1Ccy50cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyIix7Y3JlYXRlSFRNTDpsPT5sLGNyZWF0ZVNjcmlwdDpsPT5sLGNyZWF0ZVNjcmlwdFVSTDpsPT5sfSl9Y2F0Y2h7fXJldHVybiAkOX0oKT8uY3JlYXRlSFRNTChsKXx8bH1mdW5jdGlvbiBFdygpe2lmKHZvaWQg''@;'; put 'put ''MD09PXE5JiYocTk9bnVsbCxCcy50cnVzdGVkVHlwZXMpKXRyeXtxOT1Ccy50cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyI3Vuc2FmZS1ieXBhc3MiLHtjcmVhdGVIVE1MOmw9PmwsY3JlYXRlU2NyaXB0Omw9PmwsY3JlYXRlU2NyaXB0VVJMOmw9Pmx9KX1jYXRjaHt9cmV0dXJu''@;'; put 'put ''IHE5fWZ1bmN0aW9uIG1rKGwpe3JldHVybiBFdygpPy5jcmVhdGVIVE1MKGwpfHxsfWZ1bmN0aW9uIF9rKGwpe3JldHVybiBFdygpPy5jcmVhdGVTY3JpcHRVUkwobCl8fGx9Y2xhc3MgYmt7Y29uc3RydWN0b3IoYyl7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5''@;'; put 'put ''PWN9dG9TdHJpbmcoKXtyZXR1cm5gU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogJHt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHl9IChzZWUgJHtsb30pYH19ZnVuY3Rpb24gcGgobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBiaz9sLmNoYW5n''@;'; put 'put ''aW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6bH1mdW5jdGlvbiB6cChsLGMpe2NvbnN0IGE9ZnVuY3Rpb24geWsobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBiayYmbC5nZXRUeXBlTmFtZSgpfHxudWxsfShsKTtpZihudWxsIT1hJiZhIT09Yyl7aWYoIlJlc291cmNlVVJMIj09PWEm''@;'; put 'put ''JiJVUkwiPT09YylyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoYFJlcXVpcmVkIGEgc2FmZSAke2N9LCBnb3QgYSAke2F9IChzZWUgJHtsb30pYCl9cmV0dXJuIGE9PT1jfWNsYXNzIHdre2NvbnN0cnVjdG9yKGMpe3RoaXMuaW5lcnREb2N1bWVudEhlbHBlcj1jfWdldEluZXJ0Qm9keUVsZW1l''@;'; put 'put ''bnQoYyl7Yz0iPGJvZHk+PHJlbW92ZT48L3JlbW92ZT4iK2M7dHJ5e2NvbnN0IGE9KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoamcoYyksInRleHQvaHRtbCIpLmJvZHk7cmV0dXJuIG51bGw9PT1hP3RoaXMuaW5lcnREb2N1bWVudEhlbHBlci5nZXRJbmVydEJvZHlF''@;'; put 'put ''bGVtZW50KGMpOihhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCksYSl9Y2F0Y2h7cmV0dXJuIG51bGx9fX1jbGFzcyB5SHtjb25zdHJ1Y3RvcihjKXt0aGlzLmRlZmF1bHREb2M9Yyx0aGlzLmluZXJ0RG9jdW1lbnQ9dGhpcy5kZWZhdWx0RG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxE''@;'; put 'put ''b2N1bWVudCgic2FuaXRpemF0aW9uLWluZXJ0Iil9Z2V0SW5lcnRCb2R5RWxlbWVudChjKXtjb25zdCBhPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiBhLmlubmVySFRNTD1qZyhjKSxhfX1jb25zdCB3SD0vXig/IWphdmFzY3JpcHQ6KSg/Olth''@;'; put 'put ''LXowLTkrLi1dKzp8W14mOlwvPyNdKig/OltcLz8jXXwkKSkvaTtmdW5jdGlvbiBrdyhsKXtyZXR1cm4obD1TdHJpbmcobCkpLm1hdGNoKHdIKT9sOiJ1bnNhZmU6IitsfWZ1bmN0aW9uIFIyKGwpe2NvbnN0IGM9e307Zm9yKGNvbnN0IGEgb2YgbC5zcGxpdCgiLCIpKWNbYV09ITA7cmV0dXJu''@;'; put 'put ''IGN9ZnVuY3Rpb24gbzYoLi4ubCl7Y29uc3QgYz17fTtmb3IoY29uc3QgYSBvZiBsKWZvcihjb25zdCBkIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09ITApO3JldHVybiBjfWNvbnN0IFNrPVIyKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksTWs9UjIoImNvbGdyb3VwLGRkLGR0''@;'; put 'put ''LGxpLHAsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdHIiKSx4az1SMigicnAscnQiKSxBdz1vNihTayxvNihNayxSMigiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24s''@;'; put 'put ''Zm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksbzYoeGssUjIoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4s''@;'; put 'put ''ZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSxvNih4ayxNaykpLER3PVIyKCJiYWNrZ3JvdW5kLGNp''@;'; put 'put ''dGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxFaz1vNihEdyxSMigiYWJicixhY2Nlc3NrZXksYWxpZ24sYWx0LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxj''@;'; put 'put ''b2xzcGFuLGNvbXBhY3QsY29udHJvbHMsY29vcmRzLGRhdGV0aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhyZWZsYW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvb3AsbWVkaWEs''@;'; put 'put ''bXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVuLHByZWxvYWQscmVsLHJldixyb2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcsc2hhcGUsc2l6ZSxzaXplcyxzcGFuLHNyY2xhbmcsc3Jjc2V0LHN0YXJ0LHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0''@;'; put 'put ''eXBlLHVzZW1hcCx2YWxpZ24sdmFsdWUsdnNwYWNlLHdpZHRoIiksUjIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCxhcmlhLWF0b21pYyxhcmlhLWF1dG9jb21wbGV0ZSxhcmlhLWJ1c3ksYXJpYS1jaGVja2VkLGFyaWEtY29sY291bnQsYXJpYS1jb2xpbmRleCxhcmlhLWNvbHNwYW4sYXJpYS1j''@;'; put 'put ''b250cm9scyxhcmlhLWN1cnJlbnQsYXJpYS1kZXNjcmliZWRieSxhcmlhLWRldGFpbHMsYXJpYS1kaXNhYmxlZCxhcmlhLWRyb3BlZmZlY3QsYXJpYS1lcnJvcm1lc3NhZ2UsYXJpYS1leHBhbmRlZCxhcmlhLWZsb3d0byxhcmlhLWdyYWJiZWQsYXJpYS1oYXNwb3B1cCxhcmlhLWhpZGRlbixh''@;'; put 'put ''cmlhLWludmFsaWQsYXJpYS1rZXlzaG9ydGN1dHMsYXJpYS1sYWJlbCxhcmlhLWxhYmVsbGVkYnksYXJpYS1sZXZlbCxhcmlhLWxpdmUsYXJpYS1tb2RhbCxhcmlhLW11bHRpbGluZSxhcmlhLW11bHRpc2VsZWN0YWJsZSxhcmlhLW9yaWVudGF0aW9uLGFyaWEtb3ducyxhcmlhLXBsYWNlaG9s''@;'; put 'put ''ZGVyLGFyaWEtcG9zaW5zZXQsYXJpYS1wcmVzc2VkLGFyaWEtcmVhZG9ubHksYXJpYS1yZWxldmFudCxhcmlhLXJlcXVpcmVkLGFyaWEtcm9sZWRlc2NyaXB0aW9uLGFyaWEtcm93Y291bnQsYXJpYS1yb3dpbmRleCxhcmlhLXJvd3NwYW4sYXJpYS1zZWxlY3RlZCxhcmlhLXNldHNpemUsYXJp''@;'; put 'put ''YS1zb3J0LGFyaWEtdmFsdWVtYXgsYXJpYS12YWx1ZW1pbixhcmlhLXZhbHVlbm93LGFyaWEtdmFsdWV0ZXh0IikpLENIPVIyKCJzY3JpcHQsc3R5bGUsdGVtcGxhdGUiKTtjbGFzcyBUa3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSExLHRoaXMuYnVmPVtdfXNhbml0''@;'; put 'put ''aXplQ2hpbGRyZW4oYyl7bGV0IGE9Yy5maXJzdENoaWxkLGQ9ITAsaD1bXTtmb3IoO2E7KWlmKGEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9kPXRoaXMuc3RhcnRFbGVtZW50KGEpOmEubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGEubm9kZVZhbHVlKTp0aGlz''@;'; put 'put ''LnNhbml0aXplZFNvbWV0aGluZz0hMCxkJiZhLmZpcnN0Q2hpbGQpaC5wdXNoKGEpLGE9eEgoYSk7ZWxzZSBmb3IoO2E7KXthLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChhKTtsZXQgZj1NSChhKTtpZihmKXthPWY7YnJlYWt9YT1oLnBvcCgpfXJldHVy''@;'; put 'put ''biB0aGlzLmJ1Zi5qb2luKCIiKX1zdGFydEVsZW1lbnQoYyl7Y29uc3QgYT1rayhjKS50b0xvd2VyQ2FzZSgpO2lmKCFBdy5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsIUNILmhhc093blByb3BlcnR5KGEpO3RoaXMuYnVmLnB1c2goIjwiKSx0''@;'; put 'put ''aGlzLmJ1Zi5wdXNoKGEpO2NvbnN0IGQ9Yy5hdHRyaWJ1dGVzO2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtjb25zdCBmPWQuaXRlbShoKSx2PWYubmFtZSxTPXYudG9Mb3dlckNhc2UoKTtpZighRWsuaGFzT3duUHJvcGVydHkoUykpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwO2Nv''@;'; put 'put ''bnRpbnVlfWxldCBWPWYudmFsdWU7RHdbU10mJihWPWt3KFYpKSx0aGlzLmJ1Zi5wdXNoKCIgIix2LCc9IicsRGsoViksJyInKX1yZXR1cm4gdGhpcy5idWYucHVzaCgiPiIpLCEwfWVuZEVsZW1lbnQoYyl7Y29uc3QgYT1rayhjKS50b0xvd2VyQ2FzZSgpO0F3Lmhhc093blByb3BlcnR5KGEp''@;'; put 'put ''JiYhU2suaGFzT3duUHJvcGVydHkoYSkmJih0aGlzLmJ1Zi5wdXNoKCI8LyIpLHRoaXMuYnVmLnB1c2goYSksdGhpcy5idWYucHVzaCgiPiIpKX1jaGFycyhjKXt0aGlzLmJ1Zi5wdXNoKERrKGMpKX19ZnVuY3Rpb24gTUgobCl7Y29uc3QgYz1sLm5leHRTaWJsaW5nO2lmKGMmJmwhPT1jLnBy''@;'; put 'put ''ZXZpb3VzU2libGluZyl0aHJvdyBBayhjKTtyZXR1cm4gY31mdW5jdGlvbiB4SChsKXtjb25zdCBjPWwuZmlyc3RDaGlsZDtpZihjJiZmdW5jdGlvbiBTSChsLGMpe3JldHVybihsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGMpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZ''@;'; put 'put ''KSE9PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZfShsLGMpKXRocm93IEFrKGMpO3JldHVybiBjfWZ1bmN0aW9uIGtrKGwpe2NvbnN0IGM9bC5ub2RlTmFtZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGM/YzoiRk9STSJ9ZnVuY3Rpb24gQWsobCl7cmV0dXJuIG5ldyBFcnJv''@;'; put 'put ''cihgRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgZWxlbWVudCBpcyBjbG9iYmVyZWQ6ICR7bC5vdXRlckhUTUx9YCl9Y29uc3QgRUg9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLFRIPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBEayhsKXtyZXR1cm4gbC5y''@;'; put 'put ''ZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShFSCxmdW5jdGlvbihjKXtyZXR1cm4iJiMiKygxMDI0KihjLmNoYXJDb2RlQXQoMCktNTUyOTYpKyhjLmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyJ9KS5yZXBsYWNlKFRILGZ1bmN0aW9uKGMpe3JldHVybiImIyIrYy5jaGFyQ29k''@;'; put 'put ''ZUF0KDApKyI7In0pLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWxldCBLOTtmdW5jdGlvbiBJdyhsKXtyZXR1cm4iY29udGVudCJpbiBsJiZmdW5jdGlvbiBBSChsKXtyZXR1cm4gbC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09''@;'; put 'put ''bC5ub2RlTmFtZX0obCk/bC5jb250ZW50Om51bGx9dmFyIFVnPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuTk9ORT0wXT0iTk9ORSIsbFtsLkhUTUw9MV09IkhUTUwiLGxbbC5TVFlMRT0yXT0iU1RZTEUiLGxbbC5TQ1JJUFQ9M109IlNDUklQVCIsbFtsLlVSTD00XT0iVVJMIixsW2wuUkVTT1VS''@;'; put 'put ''Q0VfVVJMPTVdPSJSRVNPVVJDRV9VUkwiLGx9KFVnfHx7fSk7ZnVuY3Rpb24gWnAobCl7Y29uc3QgYz1zNigpO3JldHVybiBjP21rKGMuc2FuaXRpemUoVWcuSFRNTCxsKXx8IiIpOnpwKGwsIkhUTUwiKT9tayhwaChsKSk6ZnVuY3Rpb24ga0gobCxjKXtsZXQgYT1udWxsO3RyeXtLOT1LOXx8''@;'; put 'put ''ZnVuY3Rpb24gVHcobCl7Y29uc3QgYz1uZXcgeUgobCk7cmV0dXJuIGZ1bmN0aW9uIENrKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoamcoIiIpLCJ0ZXh0L2h0bWwiKX1jYXRjaHtyZXR1cm4hMX19KCk/bmV3IHdrKGMpOmN9KGwpO2xldCBk''@;'; put 'put ''PWM/U3RyaW5nKGMpOiIiO2E9SzkuZ2V0SW5lcnRCb2R5RWxlbWVudChkKTtsZXQgaD01LGY9ZDtkb3tpZigwPT09aCl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlzIHVuc3RhYmxlIik7aC0tLGQ9ZixmPWEuaW5uZXJIVE1MLGE9''@;'; put 'put ''SzkuZ2V0SW5lcnRCb2R5RWxlbWVudChkKX13aGlsZShkIT09Zik7cmV0dXJuIGpnKChuZXcgVGspLnNhbml0aXplQ2hpbGRyZW4oSXcoYSl8fGEpKX1maW5hbGx5e2lmKGEpe2NvbnN0IGQ9SXcoYSl8fGE7Zm9yKDtkLmZpcnN0Q2hpbGQ7KWQucmVtb3ZlQ2hpbGQoZC5maXJzdENoaWxkKX19''@;'; put 'put ''fShYZigpLCRvKGwpKX1mdW5jdGlvbiBSdyhsKXtjb25zdCBjPXM2KCk7cmV0dXJuIGM/Yy5zYW5pdGl6ZShVZy5VUkwsbCl8fCIiOnpwKGwsIlVSTCIpP3BoKGwpOmt3KCRvKGwpKX1mdW5jdGlvbiBJayhsKXtjb25zdCBjPXM2KCk7aWYoYylyZXR1cm4gX2soYy5zYW5pdGl6ZShVZy5SRVNP''@;'; put 'put ''VVJDRV9VUkwsbCl8fCIiKTtpZih6cChsLCJSZXNvdXJjZVVSTCIpKXJldHVybiBfayhwaChsKSk7dGhyb3cgbmV3IFVuKDkwNCwhMSl9ZnVuY3Rpb24gczYoKXtjb25zdCBsPUhyKCk7cmV0dXJuIGwmJmxbRzBdLnNhbml0aXplcn1jb25zdCBQSD0vXj58Xi0+fDwhLS18LS0+fC0tIT58PCEt''@;'; put 'put ''JC9nLEZIPS8oPHw+KS9nLE5IPSJcdTIwMGIkMVx1MjAwYiI7ZnVuY3Rpb24gSHcobCl7cmV0dXJuIGwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld31mdW5jdGlvbiBRZihsKXtyZXR1cm4gbC5vd25lckRvY3VtZW50fWZ1bmN0aW9uIEswKGwpe3JldHVybiBsIGluc3RhbmNlb2YgRnVuY3Rp''@;'; put 'put ''b24/bCgpOmx9dmFyIGUzPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLGxbbC5EYXNoQ2FzZT0yXT0iRGFzaENhc2UiLGx9KGUzfHx7fSk7bGV0IFZ3O2Z1bmN0aW9uIEJ3KGwsYyl7cmV0dXJuIFZ3KGwsYyl9ZnVuY3Rpb24gWWcobCxjLGEsZCxoKXtp''@;'; put 'put ''ZihudWxsIT1kKXtsZXQgZix2PSExO1pjKGQpP2Y9ZDpVYyhkKSYmKHY9ITAsZD1kW0thXSk7Y29uc3QgUz1SYShkKTswPT09bCYmbnVsbCE9PWE/bnVsbD09aD90dihjLGEsUyk6cXAoYyxhLFMsaHx8bnVsbCwhMCk6MT09PWwmJm51bGwhPT1hP3FwKGMsYSxTLGh8fG51bGwsITApOjI9PT1s''@;'; put 'put ''P2Z1bmN0aW9uIGQ2KGwsYyxhKXtjb25zdCBkPXQzKGwsYyk7ZCYmZnVuY3Rpb24gbDYobCxjLGEsZCl7bC5yZW1vdmVDaGlsZChjLGEsZCl9KGwsZCxjLGEpfShjLFMsdik6Mz09PWwmJmMuZGVzdHJveU5vZGUoUyksbnVsbCE9ZiYmZnVuY3Rpb24gcUgobCxjLGEsZCxoKXtjb25zdCBmPWFb''@;'; put 'put ''RGNdO2YhPT1SYShhKSYmWWcoYyxsLGQsZixoKTtmb3IobGV0IFM9a2w7UzxhLmxlbmd0aDtTKyspe2NvbnN0IFY9YVtTXTtudihWW3dpXSxWLGwsYyxkLGYpfX0oYyxsLGYsYSxoKX19ZnVuY3Rpb24gencobCxjKXtyZXR1cm4gbC5jcmVhdGVDb21tZW50KGZ1bmN0aW9uIFpnKGwpe3JldHVy''@;'; put 'put ''biBsLnJlcGxhY2UoUEgsYz0+Yy5yZXBsYWNlKEZILE5IKSl9KGMpKX1mdW5jdGlvbiBHcChsLGMsYSl7cmV0dXJuIGwuY3JlYXRlRWxlbWVudChjLGEpfWZ1bmN0aW9uIEJrKGwsYyl7Y1tHMF0uY2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVyPy5ub3RpZnkoMSksbnYobCxjLGNbVW9dLDIsbnVs''@;'; put 'put ''bCxudWxsKX1mdW5jdGlvbiBadyhsLGMpe2NvbnN0IGE9bFtaZl0sZD1hLmluZGV4T2YoYyk7YS5zcGxpY2UoZCwxKX1mdW5jdGlvbiBhNihsLGMpe2lmKGwubGVuZ3RoPD1rbClyZXR1cm47Y29uc3QgYT1rbCtjLGQ9bFthXTtpZihkKXtjb25zdCBoPWRba3BdO251bGwhPT1oJiZoIT09bCYm''@;'; put 'put ''WncoaCxkKSxjPjAmJihsW2EtMV1bUWxdPWRbUWxdKTtjb25zdCBmPWpjKGwsa2wrYyk7IWZ1bmN0aW9uIFZrKGwsYyl7QmsobCxjKSxjW0thXT1udWxsLGNbZ2xdPW51bGx9KGRbd2ldLGQpO2NvbnN0IHY9ZltDMV07bnVsbCE9PXYmJnYuZGV0YWNoVmlldyhmW3dpXSksZFtFbF09bnVsbCxk''@;'; put 'put ''W1FsXT1udWxsLGRbX29dJj0tMTI5fXJldHVybiBkfWZ1bmN0aW9uICRwKGwsYyl7aWYoISgyNTYmY1tfb10pKXtjb25zdCBhPWNbVW9dO2EuZGVzdHJveU5vZGUmJm52KGwsYyxhLDMsbnVsbCxudWxsKSxmdW5jdGlvbiBZSChsKXtsZXQgYz1sW0MyXTtpZighYylyZXR1cm4gWXcobFt3aV0s''@;'; put 'put ''bCk7Zm9yKDtjOyl7bGV0IGE9bnVsbDtpZihVYyhjKSlhPWNbQzJdO2Vsc2V7Y29uc3QgZD1jW2tsXTtkJiYoYT1kKX1pZighYSl7Zm9yKDtjJiYhY1tRbF0mJmMhPT1sOylVYyhjKSYmWXcoY1t3aV0sYyksYz1jW0VsXTtudWxsPT09YyYmKGM9bCksVWMoYykmJll3KGNbd2ldLGMpLGE9YyYm''@;'; put 'put ''Y1tRbF19Yz1hfX0oYyl9fWZ1bmN0aW9uIFl3KGwsYyl7aWYoMjU2JmNbX29dKXJldHVybjtjb25zdCBhPWllKG51bGwpO3RyeXtjW19vXSY9LTEyOSxjW19vXXw9MjU2LGNbTTJdJiZmdW5jdGlvbiB3KGwpe2lmKGhlKGwpLGNlKGwpKWZvcihsZXQgYz0wO2M8bC5wcm9kdWNlck5vZGUubGVu''@;'; put 'put ''Z3RoO2MrKyl0ZShsLnByb2R1Y2VyTm9kZVtjXSxsLnByb2R1Y2VySW5kZXhPZlRoaXNbY10pO2wucHJvZHVjZXJOb2RlLmxlbmd0aD1sLnByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uLmxlbmd0aD1sLnByb2R1Y2VySW5kZXhPZlRoaXMubGVuZ3RoPTAsbC5saXZlQ29uc3VtZXJOb2RlJiYobC5s''@;'; put 'put ''aXZlQ29uc3VtZXJOb2RlLmxlbmd0aD1sLmxpdmVDb25zdW1lckluZGV4T2ZUaGlzLmxlbmd0aD0wKX0oY1tNMl0pLGZ1bmN0aW9uIEdIKGwsYyl7bGV0IGE7aWYobnVsbCE9bCYmbnVsbCE9KGE9bC5kZXN0cm95SG9va3MpKWZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCs9Mil7Y29uc3QgaD1j''@;'; put 'put ''W2FbZF1dO2lmKCEoaCBpbnN0YW5jZW9mIHEwKSl7Y29uc3QgZj1hW2QrMV07aWYoQXJyYXkuaXNBcnJheShmKSlmb3IobGV0IHY9MDt2PGYubGVuZ3RoO3YrPTIpe2NvbnN0IFM9aFtmW3ZdXSxWPWZbdisxXTtsaCg0LFMsVik7dHJ5e1YuY2FsbChTKX1maW5hbGx5e2xoKDUsUyxWKX19ZWxz''@;'; put 'put ''ZXtsaCg0LGgsZik7dHJ5e2YuY2FsbChoKX1maW5hbGx5e2xoKDUsaCxmKX19fX19KGwsYyksZnVuY3Rpb24gamsobCxjKXtjb25zdCBhPWwuY2xlYW51cCxkPWNbbTBdO2lmKG51bGwhPT1hKWZvcihsZXQgZj0wO2Y8YS5sZW5ndGgtMTtmKz0yKWlmKCJzdHJpbmciPT10eXBlb2YgYVtmXSl7''@;'; put 'put ''Y29uc3Qgdj1hW2YrM107dj49MD9kW3ZdKCk6ZFstdl0udW5zdWJzY3JpYmUoKSxmKz0yfWVsc2UgYVtmXS5jYWxsKGRbYVtmKzFdXSk7bnVsbCE9PWQmJihjW20wXT1udWxsKTtjb25zdCBoPWNbaWhdO2lmKG51bGwhPT1oKXtjW2loXT1udWxsO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7Zisr''@;'; put 'put ''KSgwLGhbZl0pKCl9fShsLGMpLDE9PT1jW3dpXS50eXBlJiZjW1VvXS5kZXN0cm95KCk7Y29uc3QgZD1jW2twXTtpZihudWxsIT09ZCYmWmMoY1tFbF0pKXtkIT09Y1tFbF0mJlp3KGQsYyk7Y29uc3QgaD1jW0MxXTtudWxsIT09aCYmaC5kZXRhY2hWaWV3KGwpfSFmdW5jdGlvbiBITihsKXtk''@;'; put 'put ''dy5kZWxldGUobFtIdV0pfShjKX1maW5hbGx5e2llKGEpfX1mdW5jdGlvbiBldihsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uIFd3KGwsYyxhKXtsZXQgZD1jO2Zvcig7bnVsbCE9PWQmJjQwJmQudHlwZTspZD0oYz1kKS5wYXJlbnQ7aWYobnVsbD09PWQpcmV0dXJuIGFbS2FdO3tjb25zdHtjb21w''@;'; put 'put ''b25lbnRPZmZzZXQ6aH09ZDtpZihoPi0xKXtjb25zdHtlbmNhcHN1bGF0aW9uOmZ9PWwuZGF0YVtkLmRpcmVjdGl2ZVN0YXJ0K2hdO2lmKGY9PT1mYS5Ob25lfHxmPT09ZmEuRW11bGF0ZWQpcmV0dXJuIG51bGx9cmV0dXJuIGUwKGQsYSl9fShsLGMucGFyZW50LGEpfWZ1bmN0aW9uIHFwKGws''@;'; put 'put ''YyxhLGQsaCl7bC5pbnNlcnRCZWZvcmUoYyxhLGQsaCl9ZnVuY3Rpb24gdHYobCxjLGEpe2wuYXBwZW5kQ2hpbGQoYyxhKX1mdW5jdGlvbiB6ayhsLGMsYSxkLGgpe251bGwhPT1kP3FwKGwsYyxhLGQsaCk6dHYobCxjLGEpfWZ1bmN0aW9uIHQzKGwsYyl7cmV0dXJuIGwucGFyZW50Tm9kZShj''@;'; put 'put ''KX1mdW5jdGlvbiB1NihsLGMsYSl7cmV0dXJuIG4zKGwsYyxhKX1sZXQgcXcsbjM9ZnVuY3Rpb24gJHcobCxjLGEpe3JldHVybiA0MCZsLnR5cGU/ZTAobCxhKTpudWxsfTtmdW5jdGlvbiBtdShsLGMsYSxkKXtjb25zdCBoPWV2KGwsZCxjKSxmPWNbVW9dLFM9dTYoZC5wYXJlbnR8fGNbZ2xd''@;'; put 'put ''LGQsYyk7aWYobnVsbCE9aClpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgVj0wO1Y8YS5sZW5ndGg7VisrKXprKGYsaCxhW1ZdLFMsITEpO2Vsc2UgemsoZixoLGEsUywhMSk7dm9pZCAwIT09cXcmJnF3KGYsZCxjLGEsaCl9ZnVuY3Rpb24gcjMobCxjKXtpZihudWxsIT09Yyl7Y29uc3Qg''@;'; put 'put ''YT1jLnR5cGU7aWYoMyZhKXJldHVybiBlMChjLGwpO2lmKDQmYSlyZXR1cm4gWHcoLTEsbFtjLmluZGV4XSk7aWYoOCZhKXtjb25zdCBkPWMuY2hpbGQ7aWYobnVsbCE9PWQpcmV0dXJuIHIzKGwsZCk7e2NvbnN0IGg9bFtjLmluZGV4XTtyZXR1cm4gWmMoaCk/WHcoLTEsaCk6UmEoaCl9fWlm''@;'; put 'put ''KDMyJmEpcmV0dXJuIEJ3KGMsbCkoKXx8UmEobFtjLmluZGV4XSk7e2NvbnN0IGQ9VWsobCxjKTtyZXR1cm4gbnVsbCE9PWQ/QXJyYXkuaXNBcnJheShkKT9kWzBdOnIzKFJwKGxbWGFdKSxkKTpyMyhsLGMubmV4dCl9fXJldHVybiBudWxsfWZ1bmN0aW9uIFVrKGwsYyl7cmV0dXJuIG51bGwh''@;'; put 'put ''PT1jP2xbWGFdW2dsXS5wcm9qZWN0aW9uW2MucHJvamVjdGlvbl06bnVsbH1mdW5jdGlvbiBYdyhsLGMpe2NvbnN0IGE9a2wrbCsxO2lmKGE8Yy5sZW5ndGgpe2NvbnN0IGQ9Y1thXSxoPWRbd2ldLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PWgpcmV0dXJuIHIzKGQsaCl9cmV0dXJuIGNbRGNdfWZ1''@;'; put 'put ''bmN0aW9uIEp3KGwsYyxhLGQsaCxmLHYpe2Zvcig7bnVsbCE9YTspe2NvbnN0IFM9ZFthLmluZGV4XSxWPWEudHlwZTtpZih2JiYwPT09YyYmKFMmJiRjKFJhKFMpLGQpLGEuZmxhZ3N8PTIpLDMyJn5hLmZsYWdzKWlmKDgmVilKdyhsLGMsYS5jaGlsZCxkLGgsZiwhMSksWWcoYyxsLGgsUyxm''@;'; put 'put ''KTtlbHNlIGlmKDMyJlYpe2NvbnN0IFE9QncoYSxkKTtsZXQgZGU7Zm9yKDtkZT1RKCk7KVlnKGMsbCxoLGRlLGYpO1lnKGMsbCxoLFMsZil9ZWxzZSAxNiZWP1lrKGwsYyxkLGEsaCxmKTpZZyhjLGwsaCxTLGYpO2E9dj9hLnByb2plY3Rpb25OZXh0OmEubmV4dH19ZnVuY3Rpb24gbnYobCxj''@;'; put 'put ''LGEsZCxoLGYpe0p3KGEsZCxsLmZpcnN0Q2hpbGQsYyxoLGYsITEpfWZ1bmN0aW9uIFlrKGwsYyxhLGQsaCxmKXtjb25zdCB2PWFbWGFdLFY9dltnbF0ucHJvamVjdGlvbltkLnByb2plY3Rpb25dO2lmKEFycmF5LmlzQXJyYXkoVikpZm9yKGxldCBRPTA7UTxWLmxlbmd0aDtRKyspWWcoYyxs''@;'; put 'put ''LGgsVltRXSxmKTtlbHNle2xldCBRPVY7Y29uc3QgZGU9dltFbF07VjkoZCkmJihRLmZsYWdzfD0xMjgpLEp3KGwsYyxRLGRlLGgsZiwhMCl9fWZ1bmN0aW9uICRrKGwsYyxhKXsiIj09PWE/bC5yZW1vdmVBdHRyaWJ1dGUoYywiY2xhc3MiKTpsLnNldEF0dHJpYnV0ZShjLCJjbGFzcyIsYSl9''@;'; put 'put ''ZnVuY3Rpb24gcWsobCxjLGEpe2NvbnN0e21lcmdlZEF0dHJzOmQsY2xhc3NlczpoLHN0eWxlczpmfT1hO251bGwhPT1kJiZ3cChsLGMsZCksbnVsbCE9PWgmJiRrKGwsYyxoKSxudWxsIT09ZiYmZnVuY3Rpb24gR2sobCxjLGEpe2wuc2V0QXR0cmlidXRlKGMsInN0eWxlIixhKX0obCxjLGYp''@;'; put 'put ''fWNvbnN0IG9zPXt9O2Z1bmN0aW9uIF9lKGw9MSl7UXcoT3MoKSxIcigpLFdjKCkrbCwhMSl9ZnVuY3Rpb24gUXcobCxjLGEsZCl7aWYoIWQpaWYoMyZ+Y1tfb10pe2NvbnN0IGY9bC5wcmVPcmRlckhvb2tzO251bGwhPT1mJiZBOShjLGYsMCxhKX1lbHNle2NvbnN0IGY9bC5wcmVPcmRlckNo''@;'; put 'put ''ZWNrSG9va3M7bnVsbCE9PWYmJms5KGMsZixhKX1McChhKX1mdW5jdGlvbiBKZShsLGM9RGkuRGVmYXVsdCl7Y29uc3QgYT1IcigpO3JldHVybiBudWxsPT09YT9jcihsLGMpOlZUKFNhKCksYSxraShsKSxjKX1mdW5jdGlvbiBYayhsLGMsYSxkLGgsZil7Y29uc3Qgdj1pZShudWxsKTt0cnl7''@;'; put 'put ''bGV0IFM9bnVsbDtoJmpuLlNpZ25hbEJhc2VkJiYoUz1jW2RdW3JlXSksbnVsbCE9PVMmJnZvaWQgMCE9PVMudHJhbnNmb3JtRm4mJihmPVMudHJhbnNmb3JtRm4oZikpLGgmam4uSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm0mJihmPWwuaW5wdXRUcmFuc2Zvcm1zW2RdLmNhbGwoYyxmKSks''@;'; put 'put ''bnVsbCE9PWwuc2V0SW5wdXQ/bC5zZXRJbnB1dChjLFMsZixhLGQpOmJUKGMsUyxkLGYpfWZpbmFsbHl7aWUodil9fWZ1bmN0aW9uIHJ2KGwsYyxhLGQsaCxmLHYsUyxWLFEsZGUpe2NvbnN0IHBlPWMuYmx1ZXByaW50LnNsaWNlKCk7cmV0dXJuIHBlW0thXT1oLHBlW19vXT0yMDR8ZCwobnVs''@;'; put 'put ''bCE9PVF8fGwmJjIwNDgmbFtfb10pJiYocGVbX29dfD0yMDQ4KSx6eShwZSkscGVbRWxdPXBlW3B1XT1sLHBlW0NhXT1hLHBlW0cwXT12fHxsJiZsW0cwXSxwZVtVb109U3x8bCYmbFtVb10scGVbVGxdPVZ8fGwmJmxbVGxdfHxudWxsLHBlW2dsXT1mLHBlW0h1XT1mdW5jdGlvbiBGTigpe3Jl''@;'; put 'put ''dHVybiBQTisrfSgpLHBlW2JjXT1kZSxwZVtyaF09USxwZVtYYV09Mj09Yy50eXBlP2xbWGFdOnBlLHBlfWZ1bmN0aW9uIFdnKGwsYyxhLGQsaCl7bGV0IGY9bC5kYXRhW2NdO2lmKG51bGw9PT1mKWY9ZnVuY3Rpb24gZUMobCxjLGEsZCxoKXtjb25zdCBmPVl5KCksdj1XeSgpLFY9bC5kYXRh''@;'; put 'put ''W2NdPWZ1bmN0aW9uIHJBKGwsYyxhLGQsaCxmKXtsZXQgdj1jP2MuaW5qZWN0b3JJbmRleDotMSxTPTA7cmV0dXJuIHhnKCkmJihTfD0xMjgpLHt0eXBlOmEsaW5kZXg6ZCxpbnNlcnRCZWZvcmVJbmRleDpudWxsLGluamVjdG9ySW5kZXg6dixkaXJlY3RpdmVTdGFydDotMSxkaXJlY3RpdmVF''@;'; put 'put ''bmQ6LTEsZGlyZWN0aXZlU3R5bGluZ0xhc3Q6LTEsY29tcG9uZW50T2Zmc2V0Oi0xLHByb3BlcnR5QmluZGluZ3M6bnVsbCxmbGFnczpTLHByb3ZpZGVySW5kZXhlczowLHZhbHVlOmgsYXR0cnM6ZixtZXJnZWRBdHRyczpudWxsLGxvY2FsTmFtZXM6bnVsbCxpbml0aWFsSW5wdXRzOnZvaWQg''@;'; put 'put ''MCxpbnB1dHM6bnVsbCxvdXRwdXRzOm51bGwsdFZpZXc6bnVsbCxuZXh0Om51bGwscHJldjpudWxsLHByb2plY3Rpb25OZXh0Om51bGwsY2hpbGQ6bnVsbCxwYXJlbnQ6Yyxwcm9qZWN0aW9uOm51bGwsc3R5bGVzOm51bGwsc3R5bGVzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbFN0eWxlczp2''@;'; put 'put ''b2lkIDAsY2xhc3NlczpudWxsLGNsYXNzZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsQ2xhc3Nlczp2b2lkIDAsY2xhc3NCaW5kaW5nczowLHN0eWxlQmluZGluZ3M6MH19KDAsdj9mOmYmJmYucGFyZW50LGEsYyxkLGgpO3JldHVybiBudWxsPT09bC5maXJzdENoaWxkJiYobC5maXJzdENo''@;'; put 'put ''aWxkPVYpLG51bGwhPT1mJiYodj9udWxsPT1mLmNoaWxkJiZudWxsIT09Vi5wYXJlbnQmJihmLmNoaWxkPVYpOm51bGw9PT1mLm5leHQmJihmLm5leHQ9VixWLnByZXY9ZikpLFZ9KGwsYyxhLGQsaCksZnVuY3Rpb24gZE4oKXtyZXR1cm4gWG8ubEZyYW1lLmluSTE4bn0oKSYmKGYuZmxhZ3N8''@;'; put 'put ''PTMyKTtlbHNlIGlmKDY0JmYudHlwZSl7Zi50eXBlPWEsZi52YWx1ZT1kLGYuYXR0cnM9aDtjb25zdCB2PWZ1bmN0aW9uICQ1KCl7Y29uc3QgbD1Yby5sRnJhbWUsYz1sLmN1cnJlbnRUTm9kZTtyZXR1cm4gbC5pc1BhcmVudD9jOmMucGFyZW50fSgpO2YuaW5qZWN0b3JJbmRleD1udWxsPT09''@;'; put 'put ''dj8tMTp2LmluamVjdG9ySW5kZXh9cmV0dXJuIHVoKGYsITApLGZ9ZnVuY3Rpb24gaDYobCxjLGEsZCl7aWYoMD09PWEpcmV0dXJuLTE7Y29uc3QgaD1jLmxlbmd0aDtmb3IobGV0IGY9MDtmPGE7ZisrKWMucHVzaChkKSxsLmJsdWVwcmludC5wdXNoKGQpLGwuZGF0YS5wdXNoKG51bGwpO3Jl''@;'; put 'put ''dHVybiBofWZ1bmN0aW9uIEprKGwsYyxhLGQsaCl7Y29uc3QgZj1XYygpLHY9MiZkO3RyeXtMcCgtMSksdiYmYy5sZW5ndGg+S28mJlF3KGwsYyxLbywhMSksbGgodj8yOjAsaCksYShkLGgpfWZpbmFsbHl7THAoZiksbGgodj8zOjEsaCl9fWZ1bmN0aW9uIHRDKGwsYyxhKXtpZih5YyhjKSl7''@;'; put 'put ''Y29uc3QgZD1pZShudWxsKTt0cnl7Y29uc3QgZj1jLmRpcmVjdGl2ZUVuZDtmb3IobGV0IHY9Yy5kaXJlY3RpdmVTdGFydDt2PGY7disrKXtjb25zdCBTPWwuZGF0YVt2XTtTLmNvbnRlbnRRdWVyaWVzJiZTLmNvbnRlbnRRdWVyaWVzKDEsYVt2XSx2KX19ZmluYWxseXtpZShkKX19fWZ1bmN0''@;'; put 'put ''aW9uIG5DKGwsYyxhKXtrVCgpJiYoZnVuY3Rpb24gb1YobCxjLGEsZCl7Y29uc3QgaD1hLmRpcmVjdGl2ZVN0YXJ0LGY9YS5kaXJlY3RpdmVFbmQ7eDIoYSkmJmZ1bmN0aW9uIGRWKGwsYyxhKXtjb25zdCBkPWUwKGMsbCksaD1pdihhKTtsZXQgdj0xNjthLnNpZ25hbHM/dj00MDk2OmEub25Q''@;'; put 'put ''dXNoJiYodj02NCk7Y29uc3QgUz1mNihsLHJ2KGwsaCxudWxsLHYsZCxjLG51bGwsbFtHMF0ucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKGQsYSksbnVsbCxudWxsLG51bGwpKTtsW2MuaW5kZXhdPVN9KGMsYSxsLmRhdGFbaCthLmNvbXBvbmVudE9mZnNldF0pLGwuZmlyc3RDcmVh''@;'; put 'put ''dGVQYXNzfHxMOShhLGMpLCRjKGQsYyk7Y29uc3Qgdj1hLmluaXRpYWxJbnB1dHM7Zm9yKGxldCBTPWg7UzxmO1MrKyl7Y29uc3QgVj1sLmRhdGFbU10sUT1QcChjLGwsUyxhKTskYyhRLGMpLG51bGwhPT12JiZvdigwLFMtaCxRLFYsMCx2KSxlYyhWKSYmKCQwKGEuaW5kZXgsYylbQ2FdPVBw''@;'; put 'put ''KGMsbCxTLGEpKX19KGwsYyxhLGUwKGEsYykpLCEoNjQmfmEuZmxhZ3MpJiZhQShsLGMsYSkpfWZ1bmN0aW9uIHJDKGwsYyxhPWUwKXtjb25zdCBkPWMubG9jYWxOYW1lcztpZihudWxsIT09ZCl7bGV0IGg9Yy5pbmRleCsxO2ZvcihsZXQgZj0wO2Y8ZC5sZW5ndGg7Zis9Mil7Y29uc3Qgdj1k''@;'; put 'put ''W2YrMV0sUz0tMT09PXY/YShjLGwpOmxbdl07bFtoKytdPVN9fX1mdW5jdGlvbiBpdihsKXtjb25zdCBjPWwudFZpZXc7cmV0dXJuIG51bGw9PT1jfHxjLmluY29tcGxldGVGaXJzdFBhc3M/bC50Vmlldz1pQygxLG51bGwsbC50ZW1wbGF0ZSxsLmRlY2xzLGwudmFycyxsLmRpcmVjdGl2ZURl''@;'; put 'put ''ZnMsbC5waXBlRGVmcyxsLnZpZXdRdWVyeSxsLnNjaGVtYXMsbC5jb25zdHMsbC5pZCk6Y31mdW5jdGlvbiBpQyhsLGMsYSxkLGgsZix2LFMsVixRLGRlKXtjb25zdCBwZT1LbytkLENlPXBlK2gsT2U9ZnVuY3Rpb24gWEgobCxjKXtjb25zdCBhPVtdO2ZvcihsZXQgZD0wO2Q8YztkKyspYS5w''@;'; put 'put ''dXNoKGQ8bD9udWxsOm9zKTtyZXR1cm4gYX0ocGUsQ2UpLFllPSJmdW5jdGlvbiI9PXR5cGVvZiBRP1EoKTpRO3JldHVybiBPZVt3aV09e3R5cGU6bCxibHVlcHJpbnQ6T2UsdGVtcGxhdGU6YSxxdWVyaWVzOm51bGwsdmlld1F1ZXJ5OlMsZGVjbFROb2RlOmMsZGF0YTpPZS5zbGljZSgpLmZp''@;'; put 'put ''bGwobnVsbCxwZSksYmluZGluZ1N0YXJ0SW5kZXg6cGUsZXhwYW5kb1N0YXJ0SW5kZXg6Q2UsaG9zdEJpbmRpbmdPcENvZGVzOm51bGwsZmlyc3RDcmVhdGVQYXNzOiEwLGZpcnN0VXBkYXRlUGFzczohMCxzdGF0aWNWaWV3UXVlcmllczohMSxzdGF0aWNDb250ZW50UXVlcmllczohMSxwcmVP''@;'; put 'put ''cmRlckhvb2tzOm51bGwscHJlT3JkZXJDaGVja0hvb2tzOm51bGwsY29udGVudEhvb2tzOm51bGwsY29udGVudENoZWNrSG9va3M6bnVsbCx2aWV3SG9va3M6bnVsbCx2aWV3Q2hlY2tIb29rczpudWxsLGRlc3Ryb3lIb29rczpudWxsLGNsZWFudXA6bnVsbCxjb250ZW50UXVlcmllczpudWxs''@;'; put 'put ''LGNvbXBvbmVudHM6bnVsbCxkaXJlY3RpdmVSZWdpc3RyeToiZnVuY3Rpb24iPT10eXBlb2YgZj9mKCk6ZixwaXBlUmVnaXN0cnk6ImZ1bmN0aW9uIj09dHlwZW9mIHY/digpOnYsZmlyc3RDaGlsZDpudWxsLHNjaGVtYXM6Vixjb25zdHM6WWUsaW5jb21wbGV0ZUZpcnN0UGFzczohMSxzc3JJ''@;'; put 'put ''ZDpkZX19bGV0IFFrPSgpPT5udWxsO2Z1bmN0aW9uIGlBKGwsYyxhLGQsaCl7Zm9yKGxldCBmIGluIGMpe2lmKCFjLmhhc093blByb3BlcnR5KGYpKWNvbnRpbnVlO2NvbnN0IHY9Y1tmXTtpZih2b2lkIDA9PT12KWNvbnRpbnVlO2Q/Pz17fTtsZXQgUyxWPWpuLk5vbmU7QXJyYXkuaXNBcnJh''@;'; put 'put ''eSh2KT8oUz12WzBdLFY9dlsxXSk6Uz12O2xldCBRPWY7aWYobnVsbCE9PWgpe2lmKCFoLmhhc093blByb3BlcnR5KGYpKWNvbnRpbnVlO1E9aFtmXX0wPT09bD9vQShkLGEsUSxTLFYpOm9BKGQsYSxRLFMpfXJldHVybiBkfWZ1bmN0aW9uIG9BKGwsYyxhLGQsaCl7bGV0IGY7bC5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eShhKT8oZj1sW2FdKS5wdXNoKGMsZCk6Zj1sW2FdPVtjLGRdLHZvaWQgMCE9PWgmJmYucHVzaChoKX1mdW5jdGlvbiByMChsLGMsYSxkLGgsZix2LFMpe2NvbnN0IFY9ZTAoYyxhKTtsZXQgZGUsUT1jLmlucHV0czshUyYmbnVsbCE9USYmKGRlPVFbZF0pPyh1QyhsLGEsZGUsZCxo''@;'; put 'put ''KSx4MihjKSYmZnVuY3Rpb24gblYobCxjKXtjb25zdCBhPSQwKGMsbCk7MTYmYVtfb118fChhW19vXXw9NjQpfShhLGMuaW5kZXgpKTozJmMudHlwZSYmKGQ9ZnVuY3Rpb24gdFYobCl7cmV0dXJuImNsYXNzIj09PWw/ImNsYXNzTmFtZSI6ImZvciI9PT1sPyJodG1sRm9yIjoiZm9ybWFjdGlv''@;'; put 'put ''biI9PT1sPyJmb3JtQWN0aW9uIjoiaW5uZXJIdG1sIj09PWw/ImlubmVySFRNTCI6InJlYWRvbmx5Ij09PWw/InJlYWRPbmx5IjoidGFiaW5kZXgiPT09bD8idGFiSW5kZXgiOmx9KGQpLGg9bnVsbCE9dj92KGgsYy52YWx1ZXx8IiIsZCk6aCxmLnNldFByb3BlcnR5KFYsZCxoKSl9ZnVuY3Rp''@;'; put 'put ''b24gb0MobCxjLGEsZCl7aWYoa1QoKSl7Y29uc3QgaD1udWxsPT09ZD9udWxsOnsiIjotMX0sZj1mdW5jdGlvbiBzVihsLGMpe2NvbnN0IGE9bC5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgZD1udWxsLGg9bnVsbDtpZihhKWZvcihsZXQgZj0wO2Y8YS5sZW5ndGg7ZisrKXtjb25zdCB2PWFbZl07''@;'; put 'put ''aWYoU3AoYyx2LnNlbGVjdG9ycywhMSkpaWYoZHx8KGQ9W10pLGVjKHYpKWlmKG51bGwhPT12LmZpbmRIb3N0RGlyZWN0aXZlRGVmcyl7Y29uc3QgUz1bXTtoPWh8fG5ldyBNYXAsdi5maW5kSG9zdERpcmVjdGl2ZURlZnModixTLGgpLGQudW5zaGlmdCguLi5TLHYpLGFDKGwsYyxTLmxlbmd0''@;'; put 'put ''aCl9ZWxzZSBkLnVuc2hpZnQodiksYUMobCxjLDApO2Vsc2UgaD1ofHxuZXcgTWFwLHYuZmluZEhvc3REaXJlY3RpdmVEZWZzPy4odixkLGgpLGQucHVzaCh2KX1yZXR1cm4gbnVsbD09PWQ/bnVsbDpbZCxoXX0obCxhKTtsZXQgdixTO251bGw9PT1mP3Y9Uz1udWxsOlt2LFNdPWYsbnVsbCE9''@;'; put 'put ''PXYmJnNDKGwsYyxhLHYsaCxTKSxoJiZmdW5jdGlvbiBhVihsLGMsYSl7aWYoYyl7Y29uc3QgZD1sLmxvY2FsTmFtZXM9W107Zm9yKGxldCBoPTA7aDxjLmxlbmd0aDtoKz0yKXtjb25zdCBmPWFbY1toKzFdXTtpZihudWxsPT1mKXRocm93IG5ldyBVbigtMzAxLCExKTtkLnB1c2goY1toXSxm''@;'; put 'put ''KX19fShhLGQsaCl9YS5tZXJnZWRBdHRycz1tMihhLm1lcmdlZEF0dHJzLGEuYXR0cnMpfWZ1bmN0aW9uIHNDKGwsYyxhLGQsaCxmKXtmb3IobGV0IFE9MDtRPGQubGVuZ3RoO1ErKylNMShMOShhLGMpLGwsZFtRXS50eXBlKTshZnVuY3Rpb24gY1YobCxjLGEpe2wuZmxhZ3N8PTEsbC5kaXJl''@;'; put 'put ''Y3RpdmVTdGFydD1jLGwuZGlyZWN0aXZlRW5kPWMrYSxsLnByb3ZpZGVySW5kZXhlcz1jfShhLGwuZGF0YS5sZW5ndGgsZC5sZW5ndGgpO2ZvcihsZXQgUT0wO1E8ZC5sZW5ndGg7USsrKXtjb25zdCBkZT1kW1FdO2RlLnByb3ZpZGVyc1Jlc29sdmVyJiZkZS5wcm92aWRlcnNSZXNvbHZlcihk''@;'; put 'put ''ZSl9bGV0IHY9ITEsUz0hMSxWPWg2KGwsYyxkLmxlbmd0aCxudWxsKTtmb3IobGV0IFE9MDtRPGQubGVuZ3RoO1ErKyl7Y29uc3QgZGU9ZFtRXTthLm1lcmdlZEF0dHJzPW0yKGEubWVyZ2VkQXR0cnMsZGUuaG9zdEF0dHJzKSx1VihsLGEsYyxWLGRlKSxsVihWLGRlLGgpLG51bGwhPT1kZS5j''@;'; put 'put ''b250ZW50UXVlcmllcyYmKGEuZmxhZ3N8PTQpLChudWxsIT09ZGUuaG9zdEJpbmRpbmdzfHxudWxsIT09ZGUuaG9zdEF0dHJzfHwwIT09ZGUuaG9zdFZhcnMpJiYoYS5mbGFnc3w9NjQpO2NvbnN0IHBlPWRlLnR5cGUucHJvdG90eXBlOyF2JiYocGUubmdPbkNoYW5nZXN8fHBlLm5nT25Jbml0''@;'; put 'put ''fHxwZS5uZ0RvQ2hlY2spJiYoKGwucHJlT3JkZXJIb29rcz8/PVtdKS5wdXNoKGEuaW5kZXgpLHY9ITApLCFTJiYocGUubmdPbkNoYW5nZXN8fHBlLm5nRG9DaGVjaykmJigobC5wcmVPcmRlckNoZWNrSG9va3M/Pz1bXSkucHVzaChhLmluZGV4KSxTPSEwKSxWKyt9IWZ1bmN0aW9uIGVWKGws''@;'; put 'put ''YyxhKXtjb25zdCBoPWMuZGlyZWN0aXZlRW5kLGY9bC5kYXRhLHY9Yy5hdHRycyxTPVtdO2xldCBWPW51bGwsUT1udWxsO2ZvcihsZXQgZGU9Yy5kaXJlY3RpdmVTdGFydDtkZTxoO2RlKyspe2NvbnN0IHBlPWZbZGVdLENlPWE/YS5nZXQocGUpOm51bGwsWWU9Q2U/Q2Uub3V0cHV0czpudWxs''@;'; put 'put ''O1Y9aUEoMCxwZS5pbnB1dHMsZGUsVixDZT9DZS5pbnB1dHM6bnVsbCksUT1pQSgxLHBlLm91dHB1dHMsZGUsUSxZZSk7Y29uc3QgZXQ9bnVsbD09PVZ8fG51bGw9PT12fHxDcChjKT9udWxsOmNBKFYsZGUsdik7Uy5wdXNoKGV0KX1udWxsIT09ViYmKFYuaGFzT3duUHJvcGVydHkoImNsYXNz''@;'; put 'put ''IikmJihjLmZsYWdzfD04KSxWLmhhc093blByb3BlcnR5KCJzdHlsZSIpJiYoYy5mbGFnc3w9MTYpKSxjLmluaXRpYWxJbnB1dHM9UyxjLmlucHV0cz1WLGMub3V0cHV0cz1RfShsLGEsZil9ZnVuY3Rpb24gYUEobCxjLGEpe2NvbnN0IGQ9YS5kaXJlY3RpdmVTdGFydCxoPWEuZGlyZWN0aXZl''@;'; put 'put ''RW5kLGY9YS5pbmRleCx2PWZ1bmN0aW9uIGZOKCl7cmV0dXJuIFhvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXh9KCk7dHJ5e0xwKGYpO2ZvcihsZXQgUz1kO1M8aDtTKyspe2NvbnN0IFY9bC5kYXRhW1NdLFE9Y1tTXTskeShTKSwobnVsbCE9PVYuaG9zdEJpbmRpbmdzfHwwIT09Vi5o''@;'; put 'put ''b3N0VmFyc3x8bnVsbCE9PVYuaG9zdEF0dHJzKSYmbEEoVixRKX19ZmluYWxseXtMcCgtMSksJHkodil9fWZ1bmN0aW9uIGxBKGwsYyl7bnVsbCE9PWwuaG9zdEJpbmRpbmdzJiZsLmhvc3RCaW5kaW5ncygxLGMpfWZ1bmN0aW9uIGFDKGwsYyxhKXtjLmNvbXBvbmVudE9mZnNldD1hLChsLmNv''@;'; put 'put ''bXBvbmVudHM/Pz1bXSkucHVzaChjLmluZGV4KX1mdW5jdGlvbiBsVihsLGMsYSl7aWYoYSl7aWYoYy5leHBvcnRBcylmb3IobGV0IGQ9MDtkPGMuZXhwb3J0QXMubGVuZ3RoO2QrKylhW2MuZXhwb3J0QXNbZF1dPWw7ZWMoYykmJihhWyIiXT1sKX19ZnVuY3Rpb24gdVYobCxjLGEsZCxoKXts''@;'; put 'put ''LmRhdGFbZF09aDtjb25zdCBmPWguZmFjdG9yeXx8KGguZmFjdG9yeT1BYyhoLnR5cGUpKSx2PW5ldyBxMChmLGVjKGgpLEplKTtsLmJsdWVwcmludFtkXT12LGFbZF09dixmdW5jdGlvbiBzQShsLGMsYSxkLGgpe2NvbnN0IGY9aC5ob3N0QmluZGluZ3M7aWYoZil7bGV0IHY9bC5ob3N0Qmlu''@;'; put 'put ''ZGluZ09wQ29kZXM7bnVsbD09PXYmJih2PWwuaG9zdEJpbmRpbmdPcENvZGVzPVtdKTtjb25zdCBTPX5jLmluZGV4OyhmdW5jdGlvbiBpVihsKXtsZXQgYz1sLmxlbmd0aDtmb3IoO2M+MDspe2NvbnN0IGE9bFstLWNdO2lmKCJudW1iZXIiPT10eXBlb2YgYSYmYTwwKXJldHVybiBhfXJldHVy''@;'; put 'put ''biAwfSkodikhPVMmJnYucHVzaChTKSx2LnB1c2goYSxkLGYpfX0obCxjLGQsaDYobCxhLGguaG9zdFZhcnMsb3MpLGgpfWZ1bmN0aW9uIGhkKGwsYyxhLGQsaCxmKXtjb25zdCB2PWUwKGwsYyk7IWZ1bmN0aW9uIGxDKGwsYyxhLGQsaCxmLHYpe2lmKG51bGw9PWYpbC5yZW1vdmVBdHRyaWJ1''@;'; put 'put ''dGUoYyxoLGEpO2Vsc2V7Y29uc3QgUz1udWxsPT12PyRvKGYpOnYoZixkfHwiIixoKTtsLnNldEF0dHJpYnV0ZShjLGgsUyxhKX19KGNbVW9dLHYsZixsLnZhbHVlLGEsZCxoKX1mdW5jdGlvbiBvdihsLGMsYSxkLGgsZil7Y29uc3Qgdj1mW2NdO2lmKG51bGwhPT12KWZvcihsZXQgUz0wO1M8''@;'; put 'put ''di5sZW5ndGg7KVhrKGQsYSx2W1MrK10sdltTKytdLHZbUysrXSx2W1MrK10pfWZ1bmN0aW9uIGNBKGwsYyxhKXtsZXQgZD1udWxsLGg9MDtmb3IoO2g8YS5sZW5ndGg7KXtjb25zdCBmPWFbaF07aWYoMCE9PWYpaWYoNSE9PWYpe2lmKCJudW1iZXIiPT10eXBlb2YgZilicmVhaztpZihsLmhh''@;'; put 'put ''c093blByb3BlcnR5KGYpKXtudWxsPT09ZCYmKGQ9W10pO2NvbnN0IHY9bFtmXTtmb3IobGV0IFM9MDtTPHYubGVuZ3RoO1MrPTMpaWYodltTXT09PWMpe2QucHVzaChmLHZbUysxXSx2W1MrMl0sYVtoKzFdKTticmVha319aCs9Mn1lbHNlIGgrPTI7ZWxzZSBoKz00fXJldHVybiBkfWZ1bmN0''@;'; put 'put ''aW9uIGNDKGwsYyxhLGQpe3JldHVybltsLCEwLDAsYyxudWxsLGQsbnVsbCxhLG51bGwsbnVsbF19ZnVuY3Rpb24gdUEobCxjKXtjb25zdCBhPWwuY29udGVudFF1ZXJpZXM7aWYobnVsbCE9PWEpe2NvbnN0IGQ9aWUobnVsbCk7dHJ5e2ZvcihsZXQgaD0wO2g8YS5sZW5ndGg7aCs9Mil7Y29u''@;'; put 'put ''c3Qgdj1hW2grMV07aWYoLTEhPT12KXtjb25zdCBTPWwuZGF0YVt2XTtZZihhW2hdKSxTLmNvbnRlbnRRdWVyaWVzKDIsY1t2XSx2KX19fWZpbmFsbHl7aWUoZCl9fX1mdW5jdGlvbiBmNihsLGMpe3JldHVybiBsW0MyXT9sW1RwXVtRbF09YzpsW0MyXT1jLGxbVHBdPWMsY31mdW5jdGlvbiBz''@;'; put 'put ''dihsLGMsYSl7WWYoMCk7Y29uc3QgZD1pZShudWxsKTt0cnl7YyhsLGEpfWZpbmFsbHl7aWUoZCl9fWZ1bmN0aW9uIGRBKGwpe3JldHVybiBsW20wXXx8KGxbbTBdPVtdKX1mdW5jdGlvbiBwNihsKXtyZXR1cm4gbC5jbGVhbnVwfHwobC5jbGVhbnVwPVtdKX1mdW5jdGlvbiBLcChsLGMsYSl7''@;'; put 'put ''cmV0dXJuKG51bGw9PT1sfHxlYyhsKSkmJihhPWZ1bmN0aW9uIEJ5KGwpe2Zvcig7QXJyYXkuaXNBcnJheShsKTspe2lmKCJvYmplY3QiPT10eXBlb2YgbFt6NV0pcmV0dXJuIGw7bD1sW0thXX1yZXR1cm4gbnVsbH0oYVtjLmluZGV4XSkpLGFbVW9dfWZ1bmN0aW9uIEdnKGwsYyl7Y29uc3Qg''@;'; put 'put ''YT1sW1RsXSxkPWE/YS5nZXQoZmgsbnVsbCk6bnVsbDtkJiZkLmhhbmRsZUVycm9yKGMpfWZ1bmN0aW9uIHVDKGwsYyxhLGQsaCl7Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDspe2NvbnN0IHY9YVtmKytdLFM9YVtmKytdLFY9YVtmKytdO1hrKGwuZGF0YVt2XSxjW3ZdLGQsUyxWLGgpfX1mdW5j''@;'; put 'put ''dGlvbiBnaChsLGMsYSl7Y29uc3QgZD1NZyhjLGwpOyFmdW5jdGlvbiBIayhsLGMsYSl7bC5zZXRWYWx1ZShjLGEpfShsW1VvXSxkLGEpfWZ1bmN0aW9uIGZWKGwsYyl7Y29uc3QgYT0kMChjLGwpLGQ9YVt3aV07IWZ1bmN0aW9uIHBWKGwsYyl7Zm9yKGxldCBhPWMubGVuZ3RoO2E8bC5ibHVl''@;'; put 'put ''cHJpbnQubGVuZ3RoO2ErKyljLnB1c2gobC5ibHVlcHJpbnRbYV0pfShkLGEpO2NvbnN0IGg9YVtLYV07bnVsbCE9PWgmJm51bGw9PT1hW2JjXSYmKGFbYmNdPXl3KGgsYVtUbF0pKSxkQyhkLGEsYVtDYV0pfWZ1bmN0aW9uIGRDKGwsYyxhKXtxNShjKTt0cnl7Y29uc3QgZD1sLnZpZXdRdWVy''@;'; put 'put ''eTtudWxsIT09ZCYmc3YoMSxkLGEpO2NvbnN0IGg9bC50ZW1wbGF0ZTtudWxsIT09aCYmSmsobCxjLGgsMSxhKSxsLmZpcnN0Q3JlYXRlUGFzcyYmKGwuZmlyc3RDcmVhdGVQYXNzPSExKSxjW0MxXT8uZmluaXNoVmlld0NyZWF0aW9uKGwpLGwuc3RhdGljQ29udGVudFF1ZXJpZXMmJnVBKGws''@;'; put 'put ''YyksbC5zdGF0aWNWaWV3UXVlcmllcyYmc3YoMixsLnZpZXdRdWVyeSxhKTtjb25zdCBmPWwuY29tcG9uZW50cztudWxsIT09ZiYmZnVuY3Rpb24gZ1YobCxjKXtmb3IobGV0IGE9MDthPGMubGVuZ3RoO2ErKylmVihsLGNbYV0pfShjLGYpfWNhdGNoKGQpe3Rocm93IGwuZmlyc3RDcmVhdGVQ''@;'; put 'put ''YXNzJiYobC5pbmNvbXBsZXRlRmlyc3RQYXNzPSEwLGwuZmlyc3RDcmVhdGVQYXNzPSExKSxkfWZpbmFsbHl7Y1tfb10mPS01LEVnKCl9fWZ1bmN0aW9uICRnKGwsYyl7cmV0dXJuIWN8fG51bGw9PT1jLmZpcnN0Q2hpbGR8fFY5KGwpfWZ1bmN0aW9uIHY2KGwsYyxhLGQ9ITApe2NvbnN0IGg9''@;'; put 'put ''Y1t3aV07aWYoZnVuY3Rpb24gVXcobCxjLGEsZCl7Y29uc3QgaD1rbCtkLGY9YS5sZW5ndGg7ZD4wJiYoYVtoLTFdW1FsXT1jKSxkPGYta2w/KGNbUWxdPWFbaF0semEoYSxrbCtkLGMpKTooYS5wdXNoKGMpLGNbUWxdPW51bGwpLGNbRWxdPWE7Y29uc3Qgdj1jW2twXTtudWxsIT09diYmYSE9''@;'; put 'put ''PXYmJmZ1bmN0aW9uIFdIKGwsYyl7Y29uc3QgYT1sW1pmXTtjW1hhXSE9PWNbRWxdW0VsXVtYYV0mJihsW19vXXw9U2cuSGFzVHJhbnNwbGFudGVkVmlld3MpLG51bGw9PT1hP2xbWmZdPVtjXTphLnB1c2goYyl9KHYsYyk7Y29uc3QgUz1jW0MxXTtudWxsIT09UyYmUy5pbnNlcnRWaWV3KGwp''@;'; put 'put ''LFp5KGMpLGNbX29dfD0xMjh9KGgsYyxsLGEpLGQpe2NvbnN0IHY9WHcoYSxsKSxTPWNbVW9dLFY9dDMoUyxsW0RjXSk7bnVsbCE9PVYmJmZ1bmN0aW9uIFpIKGwsYyxhLGQsaCxmKXtkW0thXT1oLGRbZ2xdPWMsbnYobCxkLGEsMSxoLGYpfShoLGxbZ2xdLFMsYyxWLHYpfWNvbnN0IGY9Y1ti''@;'; put 'put ''Y107bnVsbCE9PWYmJm51bGwhPT1mLmZpcnN0Q2hpbGQmJihmLmZpcnN0Q2hpbGQ9bnVsbCl9ZnVuY3Rpb24gXzYobCxjLGEsZCxoPSExKXtmb3IoO251bGwhPT1hOyl7Y29uc3QgZj1jW2EuaW5kZXhdO251bGwhPT1mJiZkLnB1c2goUmEoZikpLFpjKGYpJiZoQShmLGQpO2NvbnN0IHY9YS50''@;'; put 'put ''eXBlO2lmKDgmdilfNihsLGMsYS5jaGlsZCxkKTtlbHNlIGlmKDMyJnYpe2NvbnN0IFM9QncoYSxjKTtsZXQgVjtmb3IoO1Y9UygpOylkLnB1c2goVil9ZWxzZSBpZigxNiZ2KXtjb25zdCBTPVVrKGMsYSk7aWYoQXJyYXkuaXNBcnJheShTKSlkLnB1c2goLi4uUyk7ZWxzZXtjb25zdCBWPVJw''@;'; put 'put ''KGNbWGFdKTtfNihWW3dpXSxWLFMsZCwhMCl9fWE9aD9hLnByb2plY3Rpb25OZXh0OmEubmV4dH1yZXR1cm4gZH1mdW5jdGlvbiBoQShsLGMpe2ZvcihsZXQgYT1rbDthPGwubGVuZ3RoO2ErKyl7Y29uc3QgZD1sW2FdLGg9ZFt3aV0uZmlyc3RDaGlsZDtudWxsIT09aCYmXzYoZFt3aV0sZCxo''@;'; put 'put ''LGMpfWxbRGNdIT09bFtLYV0mJmMucHVzaChsW0RjXSl9bGV0IGZBPVtdO2NvbnN0IGJWPXt2ZXJzaW9uOjAsbGFzdENsZWFuRXBvY2g6MCxkaXJ0eTohMSxwcm9kdWNlck5vZGU6dm9pZCAwLHByb2R1Y2VyTGFzdFJlYWRWZXJzaW9uOnZvaWQgMCxwcm9kdWNlckluZGV4T2ZUaGlzOnZvaWQg''@;'; put 'put ''MCxuZXh0UHJvZHVjZXJJbmRleDowLGxpdmVDb25zdW1lck5vZGU6dm9pZCAwLGxpdmVDb25zdW1lckluZGV4T2ZUaGlzOnZvaWQgMCxjb25zdW1lckFsbG93U2lnbmFsV3JpdGVzOiExLGNvbnN1bWVySXNBbHdheXNMaXZlOiExLHByb2R1Y2VyTXVzdFJlY29tcHV0ZTooKT0+ITEscHJvZHVj''@;'; put 'put ''ZXJSZWNvbXB1dGVWYWx1ZTooKT0+e30sY29uc3VtZXJNYXJrZWREaXJ0eTooKT0+e30sY29uc3VtZXJPblNpZ25hbFJlYWQ6KCk9Pnt9LGNvbnN1bWVySXNBbHdheXNMaXZlOiEwLGNvbnN1bWVyTWFya2VkRGlydHk6bD0+e0c1KGwubFZpZXcpfSxjb25zdW1lck9uU2lnbmFsUmVhZCgpe3Ro''@;'; put 'put ''aXMubFZpZXdbTTJdPXRoaXN9fSxwQT0xMDA7ZnVuY3Rpb24gYXYobCxjPSEwLGE9MCl7Y29uc3QgZD1sW0cwXSxoPWQucmVuZGVyZXJGYWN0b3J5O2guYmVnaW4/LigpO3RyeXshZnVuY3Rpb24geVYobCxjKXtmQyhsLGMpO2xldCBhPTA7Zm9yKDtDOShsKTspe2lmKGE9PT1wQSl0aHJvdyBu''@;'; put 'put ''ZXcgVW4oMTAzLCExKTthKyssZkMobCwxKX19KGwsYSl9Y2F0Y2godil7dGhyb3cgYyYmR2cobCx2KSx2fWZpbmFsbHl7aC5lbmQ/LigpLGQuaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpfX1mdW5jdGlvbiB3VihsLGMsYSxkKXtjb25zdCBoPWNbX29dO2lmKCEoMjU2Jn5oKSlyZXR1cm47''@;'; put 'put ''Y1tHMF0uaW5saW5lRWZmZWN0UnVubmVyPy5mbHVzaCgpLHE1KGMpO2xldCB2PW51bGwsUz1udWxsOyhmdW5jdGlvbiBDVihsKXtyZXR1cm4gMiE9PWwudHlwZX0pKGwpJiYoUz1mdW5jdGlvbiBtVihsKXtyZXR1cm4gbFtNMl0/P2Z1bmN0aW9uIHZWKGwpe2NvbnN0IGM9ZkEucG9wKCk/P09i''@;'; put 'put ''amVjdC5jcmVhdGUoYlYpO3JldHVybiBjLmxWaWV3PWwsY30obCl9KGMpLHY9ZnVuY3Rpb24gayhsKXtyZXR1cm4gbCYmKGwubmV4dFByb2R1Y2VySW5kZXg9MCksaWUobCl9KFMpKTt0cnl7enkoYyksZnVuY3Rpb24gRFQobCl7cmV0dXJuIFhvLmxGcmFtZS5iaW5kaW5nSW5kZXg9bH0obC5i''@;'; put 'put ''aW5kaW5nU3RhcnRJbmRleCksbnVsbCE9PWEmJkprKGwsYyxhLDIsZCk7Y29uc3QgVj0hKDMmfmgpO2lmKFYpe2NvbnN0IHBlPWwucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1wZSYmazkoYyxwZSxudWxsKX1lbHNle2NvbnN0IHBlPWwucHJlT3JkZXJIb29rcztudWxsIT09cGUmJkE5KGMs''@;'; put 'put ''cGUsMCxudWxsKSxReShjLDApfWlmKGZ1bmN0aW9uIFNWKGwpe2ZvcihsZXQgYz1RVChsKTtudWxsIT09YztjPWVrKGMpKXtpZighKGNbX29dJlNnLkhhc1RyYW5zcGxhbnRlZFZpZXdzKSljb250aW51ZTtjb25zdCBhPWNbWmZdO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtuTihhW2Rd''@;'; put 'put ''KX19fShjKSxnQShjLDApLG51bGwhPT1sLmNvbnRlbnRRdWVyaWVzJiZ1QShsLGMpLFYpe2NvbnN0IHBlPWwuY29udGVudENoZWNrSG9va3M7bnVsbCE9PXBlJiZrOShjLHBlKX1lbHNle2NvbnN0IHBlPWwuY29udGVudEhvb2tzO251bGwhPT1wZSYmQTkoYyxwZSwxKSxReShjLDEpfSFmdW5j''@;'; put 'put ''dGlvbiBLSChsLGMpe2NvbnN0IGE9bC5ob3N0QmluZGluZ09wQ29kZXM7aWYobnVsbCE9PWEpdHJ5e2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBoPWFbZF07aWYoaDwwKUxwKH5oKTtlbHNle2NvbnN0IGY9aCx2PWFbKytkXSxTPWFbKytkXTtoTih2LGYpLFMoMixjW2ZdKX19''@;'; put 'put ''fWZpbmFsbHl7THAoLTEpfX0obCxjKTtjb25zdCBRPWwuY29tcG9uZW50cztudWxsIT09USYmdkEoYyxRLDApO2NvbnN0IGRlPWwudmlld1F1ZXJ5O2lmKG51bGwhPT1kZSYmc3YoMixkZSxkKSxWKXtjb25zdCBwZT1sLnZpZXdDaGVja0hvb2tzO251bGwhPT1wZSYmazkoYyxwZSl9ZWxzZXtj''@;'; put 'put ''b25zdCBwZT1sLnZpZXdIb29rcztudWxsIT09cGUmJkE5KGMscGUsMiksUXkoYywyKX1pZighMD09PWwuZmlyc3RVcGRhdGVQYXNzJiYobC5maXJzdFVwZGF0ZVBhc3M9ITEpLGNbQ2ddKXtmb3IoY29uc3QgcGUgb2YgY1tDZ10pcGUoKTtjW0NnXT1udWxsfWNbX29dJj0tNzN9Y2F0Y2goVil7''@;'; put 'put ''dGhyb3cgRzUoYyksVn1maW5hbGx5e251bGwhPT1TJiYoZnVuY3Rpb24gXyhsLGMpe2lmKGllKGMpLGwmJnZvaWQgMCE9PWwucHJvZHVjZXJOb2RlJiZ2b2lkIDAhPT1sLnByb2R1Y2VySW5kZXhPZlRoaXMmJnZvaWQgMCE9PWwucHJvZHVjZXJMYXN0UmVhZFZlcnNpb24pe2lmKGNlKGwpKWZv''@;'; put 'put ''cihsZXQgYT1sLm5leHRQcm9kdWNlckluZGV4O2E8bC5wcm9kdWNlck5vZGUubGVuZ3RoO2ErKyl0ZShsLnByb2R1Y2VyTm9kZVthXSxsLnByb2R1Y2VySW5kZXhPZlRoaXNbYV0pO2Zvcig7bC5wcm9kdWNlck5vZGUubGVuZ3RoPmwubmV4dFByb2R1Y2VySW5kZXg7KWwucHJvZHVjZXJOb2Rl''@;'; put 'put ''LnBvcCgpLGwucHJvZHVjZXJMYXN0UmVhZFZlcnNpb24ucG9wKCksbC5wcm9kdWNlckluZGV4T2ZUaGlzLnBvcCgpfX0oUyx2KSxmdW5jdGlvbiBfVihsKXtsLmxWaWV3W00yXSE9PWwmJihsLmxWaWV3PW51bGwsZkEucHVzaChsKSl9KFMpKSxFZygpfX1mdW5jdGlvbiBnQShsLGMpe2Zvcihs''@;'; put 'put ''ZXQgYT1RVChsKTtudWxsIT09YTthPWVrKGEpKWZvcihsZXQgZD1rbDtkPGEubGVuZ3RoO2QrKyltQShhW2RdLGMpfWZ1bmN0aW9uIE1WKGwsYyxhKXttQSgkMChjLGwpLGEpfWZ1bmN0aW9uIG1BKGwsYyl7ankobCkmJmZDKGwsYyl9ZnVuY3Rpb24gZkMobCxjKXtjb25zdCBkPWxbd2ldLGg9''@;'; put 'put ''bFtfb10sZj1sW00yXTtsZXQgdj0hISgwPT09YyYmMTYmaCk7aWYodnx8PSEhKDY0JmgmJjA9PT1jKSx2fHw9ISEoMTAyNCZoKSx2fHw9ISghZj8uZGlydHl8fCFwKGYpKSxmJiYoZi5kaXJ0eT0hMSksbFtfb10mPS05MjE3LHYpd1YoZCxsLGQudGVtcGxhdGUsbFtDYV0pO2Vsc2UgaWYoODE5''@;'; put 'put ''MiZoKXtnQShsLDEpO2NvbnN0IFM9ZC5jb21wb25lbnRzO251bGwhPT1TJiZ2QShsLFMsMSl9fWZ1bmN0aW9uIHZBKGwsYyxhKXtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrKylNVihsLGNbZF0sYSl9ZnVuY3Rpb24gYjYobCl7Zm9yKGxbRzBdLmNoYW5nZURldGVjdGlvblNjaGVkdWxlcj8u''@;'; put 'put ''bm90aWZ5KCk7bDspe2xbX29dfD02NDtjb25zdCBjPVJwKGwpO2lmKERwKGwpJiYhYylyZXR1cm4gbDtsPWN9cmV0dXJuIG51bGx9Y2xhc3MgeTZ7Z2V0IHJvb3ROb2Rlcygpe2NvbnN0IGM9dGhpcy5fbFZpZXcsYT1jW3dpXTtyZXR1cm4gXzYoYSxjLGEuZmlyc3RDaGlsZCxbXSl9Y29uc3Ry''@;'; put 'put ''dWN0b3IoYyxhLGQ9ITApe3RoaXMuX2xWaWV3PWMsdGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3PWEsdGhpcy5ub3RpZnlFcnJvckhhbmRsZXI9ZCx0aGlzLl9hcHBSZWY9bnVsbCx0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1nZXQgY29udGV4dCgpe3JldHVybiB0aGlzLl9sVmll''@;'; put 'put ''d1tDYV19c2V0IGNvbnRleHQoYyl7dGhpcy5fbFZpZXdbQ2FdPWN9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiEoMjU2Jn50aGlzLl9sVmlld1tfb10pfWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRv''@;'; put 'put ''Vmlld0NvbnRhaW5lcil7Y29uc3QgYz10aGlzLl9sVmlld1tFbF07aWYoWmMoYykpe2NvbnN0IGE9Y1s4XSxkPWE/YS5pbmRleE9mKHRoaXMpOi0xO2Q+LTEmJihhNihjLGQpLGpjKGEsZCkpfXRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfSRwKHRoaXMuX2xWaWV3W3dpXSx0aGlz''@;'; put 'put ''Ll9sVmlldyl9b25EZXN0cm95KGMpe1M5KHRoaXMuX2xWaWV3LGMpfW1hcmtGb3JDaGVjaygpe2I2KHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3W19vXSY9LTEyOX1yZWF0dGFjaCgpe1p5KHRoaXMuX2xWaWV3KSx0aGlzLl9sVmll''@;'; put 'put ''d1tfb118PTEyOH1kZXRlY3RDaGFuZ2VzKCl7dGhpcy5fbFZpZXdbX29dfD0xMDI0LGF2KHRoaXMuX2xWaWV3LHRoaXMubm90aWZ5RXJyb3JIYW5kbGVyKX1jaGVja05vQ2hhbmdlcygpe31hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IFVuKDkw''@;'; put 'put ''MiwhMSk7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJlZigpe3RoaXMuX2FwcFJlZj1udWxsLEJrKHRoaXMuX2xWaWV3W3dpXSx0aGlzLl9sVmlldyl9YXR0YWNoVG9BcHBSZWYoYyl7aWYodGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXIpdGhyb3cg''@;'; put 'put ''bmV3IFVuKDkwMiwhMSk7dGhpcy5fYXBwUmVmPWMsWnkodGhpcy5fbFZpZXcpfX1sZXQgVWE9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5fX05HX0VMRU1FTlRfSURfXz1UVn19cmV0dXJuIGx9KSgpO2NvbnN0IHhWPVVhLEVWPWNsYXNzIGV4dGVuZHMgeFZ7Y29uc3RydWN0b3IoYyxhLGQp''@;'; put 'put ''e3N1cGVyKCksdGhpcy5fZGVjbGFyYXRpb25MVmlldz1jLHRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lcj1hLHRoaXMuZWxlbWVudFJlZj1kfWdldCBzc3JJZCgpe3JldHVybiB0aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIudFZpZXc/LnNzcklkfHxudWxsfWNyZWF0ZUVtYmVkZGVkVmll''@;'; put 'put ''dyhjLGEpe3JldHVybiB0aGlzLmNyZWF0ZUVtYmVkZGVkVmlld0ltcGwoYyxhKX1jcmVhdGVFbWJlZGRlZFZpZXdJbXBsKGMsYSxkKXtjb25zdCBoPWZ1bmN0aW9uIGc2KGwsYyxhLGQpe2NvbnN0IGg9aWUobnVsbCk7dHJ5e2NvbnN0IGY9Yy50VmlldyxWPXJ2KGwsZixhLDQwOTYmbFtfb10/''@;'; put 'put ''NDA5NjoxNixudWxsLGMsbnVsbCxudWxsLGQ/LmluamVjdG9yPz9udWxsLGQ/LmVtYmVkZGVkVmlld0luamVjdG9yPz9udWxsLGQ/LmRlaHlkcmF0ZWRWaWV3Pz9udWxsKTtWW2twXT1sW2MuaW5kZXhdO2NvbnN0IGRlPWxbQzFdO3JldHVybiBudWxsIT09ZGUmJihWW0MxXT1kZS5jcmVhdGVF''@;'; put 'put ''bWJlZGRlZFZpZXcoZikpLGRDKGYsVixhKSxWfWZpbmFsbHl7aWUoaCl9fSh0aGlzLl9kZWNsYXJhdGlvbkxWaWV3LHRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lcixjLHtlbWJlZGRlZFZpZXdJbmplY3RvcjphLGRlaHlkcmF0ZWRWaWV3OmR9KTtyZXR1cm4gbmV3IHk2KGgpfX07ZnVuY3Rp''@;'; put 'put ''b24gVFYoKXtyZXR1cm4gbHYoU2EoKSxIcigpKX1mdW5jdGlvbiBsdihsLGMpe3JldHVybiA0JmwudHlwZT9uZXcgRVYoYyxsLEhwKGwsYykpOm51bGx9Y2xhc3MgZnZ7fWNsYXNzIEtWe31jbGFzcyBFQXt9Y2xhc3MgUVZ7cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoYyl7dGhyb3cgZnVuY3Rp''@;'; put 'put ''b24gWFYobCl7Y29uc3QgYz1FcnJvcihgTm8gY29tcG9uZW50IGZhY3RvcnkgZm91bmQgZm9yICR7X3IobCl9LmApO3JldHVybiBjLm5nQ29tcG9uZW50PWwsY30oYyl9fWxldCBLZz0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLk5VTEw9bmV3IFFWfX1yZXR1cm4gbH0pKCk7Y2xhc3MgeDZ7''@;'; put 'put ''fWxldCBkcz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5kZXN0cm95Tm9kZT1udWxsfXN0YXRpY3t0aGlzLl9fTkdfRUxFTUVOVF9JRF9fPSgpPT5mdW5jdGlvbiBlQigpe2NvbnN0IGw9SHIoKSxhPSQwKFNhKCkuaW5kZXgsbCk7cmV0dXJuKFVjKGEpP2E6bClbVW9dfSgpfX1y''@;'; put 'put ''ZXR1cm4gbH0pKCksdEI9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm51bGx9KX19cmV0dXJuIGx9KSgpO2NvbnN0IHlDPXt9LFRBPW5ldyBTZXQ7ZnVuY3Rpb24gbWgobCl7VEEuaGFzKGwpfHwo''@;'; put 'put ''VEEuYWRkKGwpLHBlcmZvcm1hbmNlPy5tYXJrPy4oIm1hcmtfZmVhdHVyZV91c2FnZSIse2RldGFpbDp7ZmVhdHVyZTpsfX0pKX1mdW5jdGlvbiBrQSguLi5sKXt9Y2xhc3MgTW97Y29uc3RydWN0b3Ioe2VuYWJsZUxvbmdTdGFja1RyYWNlOmM9ITEsc2hvdWxkQ29hbGVzY2VFdmVudENoYW5n''@;'; put 'put ''ZURldGVjdGlvbjphPSExLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOmQ9ITF9KXtpZih0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IERyKCExKSx0aGlz''@;'; put 'put ''Lm9uTWljcm90YXNrRW1wdHk9bmV3IERyKCExKSx0aGlzLm9uU3RhYmxlPW5ldyBEcighMSksdGhpcy5vbkVycm9yPW5ldyBEcighMSksdHlwZW9mIFpvbmU+InUiKXRocm93IG5ldyBVbig5MDgsITEpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtjb25zdCBoPXRoaXM7aC5fbmVzdGluZz0w''@;'; put 'put ''LGguX291dGVyPWguX2lubmVyPVpvbmUuY3VycmVudCxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYoaC5faW5uZXI9aC5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLGMmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKGguX2lubmVyPWguX2lubmVy''@;'; put 'put ''LmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksaC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPSFkJiZhLGguc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb249ZCxoLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxoLm5hdGl2ZVJlcXVlc3RB''@;'; put 'put ''bmltYXRpb25GcmFtZT1mdW5jdGlvbiBuQigpe2NvbnN0IGw9ImZ1bmN0aW9uIj09dHlwZW9mIEJzLnJlcXVlc3RBbmltYXRpb25GcmFtZTtsZXQgYz1Cc1tsPyJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOiJzZXRUaW1lb3V0Il0sYT1Cc1tsPyJjYW5jZWxBbmltYXRpb25GcmFtZSI6ImNsZWFy''@;'; put 'put ''VGltZW91dCJdO2lmKHR5cGVvZiBab25lPCJ1IiYmYyYmYSl7Y29uc3QgZD1jW1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtkJiYoYz1kKTtjb25zdCBoPWFbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO2gmJihhPWgpfXJldHVybntuYXRpdmVSZXF1''@;'; put 'put ''ZXN0QW5pbWF0aW9uRnJhbWU6YyxuYXRpdmVDYW5jZWxBbmltYXRpb25GcmFtZTphfX0oKS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsZnVuY3Rpb24gb0IobCl7Y29uc3QgYz0oKT0+eyFmdW5jdGlvbiBpQihsKXtsLmlzQ2hlY2tTdGFibGVSdW5uaW5nfHwtMSE9PWwubGFzdFJlcXVl''@;'; put 'put ''c3RBbmltYXRpb25GcmFtZUlkfHwobC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9bC5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY2FsbChCcywoKT0+e2wuZmFrZVRvcEV2ZW50VGFza3x8KGwuZmFrZVRvcEV2ZW50VGFzaz1ab25lLnJvb3Quc2NoZWR1bGVFdmVudFRhc2soImZh''@;'; put 'put ''a2VUb3BFdmVudFRhc2siLCgpPT57bC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9LTEsQ0MobCksbC5pc0NoZWNrU3RhYmxlUnVubmluZz0hMCx3QyhsKSxsLmlzQ2hlY2tTdGFibGVSdW5uaW5nPSExfSx2b2lkIDAsKCk9Pnt9LCgpPT57fSkpLGwuZmFrZVRvcEV2ZW50VGFzay5pbnZv''@;'; put 'put ''a2UoKX0pLENDKGwpKX0obCl9O2wuX2lubmVyPWwuX2lubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazooYSxkLGgsZix2LFMpPT57aWYoZnVuY3Rpb24gc0IobCl7cmV0dXJuISghQXJyYXkuaXNBcnJheShsKXx8MSE9''@;'; put 'put ''PWwubGVuZ3RoKSYmITA9PT1sWzBdLmRhdGE/Ll9faWdub3JlX25nX3pvbmVfX30oUykpcmV0dXJuIGEuaW52b2tlVGFzayhoLGYsdixTKTt0cnl7cmV0dXJuIHB2KGwpLGEuaW52b2tlVGFzayhoLGYsdixTKX1maW5hbGx5eyhsLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb24m''@;'; put 'put ''JiJldmVudFRhc2siPT09Zi50eXBlfHxsLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmYygpLEFBKGwpfX0sb25JbnZva2U6KGEsZCxoLGYsdixTLFYpPT57dHJ5e3JldHVybiBwdihsKSxhLmludm9rZShoLGYsdixTLFYpfWZpbmFsbHl7bC5zaG91bGRDb2FsZXNjZVJ1bkNo''@;'; put 'put ''YW5nZURldGVjdGlvbiYmYygpLEFBKGwpfX0sb25IYXNUYXNrOihhLGQsaCxmKT0+e2EuaGFzVGFzayhoLGYpLGQ9PT1oJiYoIm1pY3JvVGFzayI9PWYuY2hhbmdlPyhsLl9oYXNQZW5kaW5nTWljcm90YXNrcz1mLm1pY3JvVGFzayxDQyhsKSx3QyhsKSk6Im1hY3JvVGFzayI9PWYuY2hhbmdl''@;'; put 'put ''JiYobC5oYXNQZW5kaW5nTWFjcm90YXNrcz1mLm1hY3JvVGFzaykpfSxvbkhhbmRsZUVycm9yOihhLGQsaCxmKT0+KGEuaGFuZGxlRXJyb3IoaCxmKSxsLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5sLm9uRXJyb3IuZW1pdChmKSksITEpfSl9KGgpfXN0YXRpYyBpc0luQW5ndWxhclpvbmUoKXty''@;'; put 'put ''ZXR1cm4gdHlwZW9mIFpvbmU8InUiJiYhMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX1zdGF0aWMgYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpe2lmKCFNby5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgVW4oOTA5LCExKX1zdGF0aWMgYXNzZXJ0Tm90SW5Bbmd1bGFyWm9u''@;'; put 'put ''ZSgpe2lmKE1vLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBVbig5MDksITEpfXJ1bihjLGEsZCl7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bihjLGEsZCl9cnVuVGFzayhjLGEsZCxoKXtjb25zdCBmPXRoaXMuX2lubmVyLHY9Zi5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIr''@;'; put 'put ''aCxjLHJCLGtBLGtBKTt0cnl7cmV0dXJuIGYucnVuVGFzayh2LGEsZCl9ZmluYWxseXtmLmNhbmNlbFRhc2sodil9fXJ1bkd1YXJkZWQoYyxhLGQpe3JldHVybiB0aGlzLl9pbm5lci5ydW5HdWFyZGVkKGMsYSxkKX1ydW5PdXRzaWRlQW5ndWxhcihjKXtyZXR1cm4gdGhpcy5fb3V0ZXIucnVu''@;'; put 'put ''KGMpfX1jb25zdCByQj17fTtmdW5jdGlvbiB3QyhsKXtpZigwPT1sLl9uZXN0aW5nJiYhbC5oYXNQZW5kaW5nTWljcm90YXNrcyYmIWwuaXNTdGFibGUpdHJ5e2wuX25lc3RpbmcrKyxsLm9uTWljcm90YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKGwuX25lc3RpbmctLSwhbC5oYXNQ''@;'; put 'put ''ZW5kaW5nTWljcm90YXNrcyl0cnl7bC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bC5vblN0YWJsZS5lbWl0KG51bGwpKX1maW5hbGx5e2wuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBDQyhsKXtsLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSEhKGwuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzfHwobC5zaG91''@;'; put 'put ''bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9ufHxsLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmLTEhPT1sLmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZCl9ZnVuY3Rpb24gcHYobCl7bC5fbmVzdGluZysrLGwuaXNTdGFibGUmJihsLmlzU3RhYmxlPSExLGwub25V''@;'; put 'put ''bnN0YWJsZS5lbWl0KG51bGwpKX1mdW5jdGlvbiBBQShsKXtsLl9uZXN0aW5nLS0sd0MobCl9Y2xhc3MgREF7Y29uc3RydWN0b3IoKXt0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFi''@;'; put 'put ''bGU9bmV3IERyLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgRHIsdGhpcy5vblN0YWJsZT1uZXcgRHIsdGhpcy5vbkVycm9yPW5ldyBEcn1ydW4oYyxhLGQpe3JldHVybiBjLmFwcGx5KGEsZCl9cnVuR3VhcmRlZChjLGEsZCl7cmV0dXJuIGMuYXBwbHkoYSxkKX1ydW5PdXRzaWRlQW5ndWxh''@;'; put 'put ''cihjKXtyZXR1cm4gYygpfXJ1blRhc2soYyxhLGQsaCl7cmV0dXJuIGMuYXBwbHkoYSxkKX19dmFyIGkzPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuRWFybHlSZWFkPTBdPSJFYXJseVJlYWQiLGxbbC5Xcml0ZT0xXT0iV3JpdGUiLGxbbC5NaXhlZFJlYWRXcml0ZT0yXT0iTWl4ZWRSZWFkV3Jp''@;'; put 'put ''dGUiLGxbbC5SZWFkPTNdPSJSZWFkIixsfShpM3x8e30pO2NvbnN0IFNDPXtkZXN0cm95KCl7fX07ZnVuY3Rpb24gZ3YobCxjKXshYyYmZnVuY3Rpb24geTIobCl7aWYoIWI5KCkpdGhyb3cgbmV3IFVuKC0yMDMsITEpfSgpO2NvbnN0IGE9Yz8uaW5qZWN0b3I/P1pyKE1hKTtpZighZnVuY3Rp''@;'; put 'put ''b24gZGQobCl7cmV0dXJuImJyb3dzZXIiPT09KGw/P1pyKE1hKSkuZ2V0KElvKX0oYSkpcmV0dXJuIFNDO21oKCJOZ0FmdGVyTmV4dFJlbmRlciIpO2NvbnN0IGQ9YS5nZXQoRTYpLGg9ZC5oYW5kbGVyPz89bmV3IExBLGY9Yz8ucGhhc2U/P2kzLk1peGVkUmVhZFdyaXRlLHY9KCk9PntoLnVu''@;'; put 'put ''cmVnaXN0ZXIoViksUygpfSxTPWEuZ2V0KE9nKS5vbkRlc3Ryb3kodiksVj1nMChhLCgpPT5uZXcgUkEoZiwoKT0+e3YoKSxsKCl9KSk7cmV0dXJuIGgucmVnaXN0ZXIoVikse2Rlc3Ryb3k6dn19Y2xhc3MgUkF7Y29uc3RydWN0b3IoYyxhKXt0aGlzLnBoYXNlPWMsdGhpcy5jYWxsYmFja0Zu''@;'; put 'put ''PWEsdGhpcy56b25lPVpyKE1vKSx0aGlzLmVycm9ySGFuZGxlcj1acihmaCx7b3B0aW9uYWw6ITB9KSxacihmdix7b3B0aW9uYWw6ITB9KT8ubm90aWZ5KDEpfWludm9rZSgpe3RyeXt0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIodGhpcy5jYWxsYmFja0ZuKX1jYXRjaChjKXt0aGlzLmVy''@;'; put 'put ''cm9ySGFuZGxlcj8uaGFuZGxlRXJyb3IoYyl9fX1jbGFzcyBMQXtjb25zdHJ1Y3Rvcigpe3RoaXMuZXhlY3V0aW5nQ2FsbGJhY2tzPSExLHRoaXMuYnVja2V0cz17W2kzLkVhcmx5UmVhZF06bmV3IFNldCxbaTMuV3JpdGVdOm5ldyBTZXQsW2kzLk1peGVkUmVhZFdyaXRlXTpuZXcgU2V0LFtp''@;'; put 'put ''My5SZWFkXTpuZXcgU2V0fSx0aGlzLmRlZmVycmVkQ2FsbGJhY2tzPW5ldyBTZXR9cmVnaXN0ZXIoYyl7KHRoaXMuZXhlY3V0aW5nQ2FsbGJhY2tzP3RoaXMuZGVmZXJyZWRDYWxsYmFja3M6dGhpcy5idWNrZXRzW2MucGhhc2VdKS5hZGQoYyl9dW5yZWdpc3RlcihjKXt0aGlzLmJ1Y2tldHNb''@;'; put 'put ''Yy5waGFzZV0uZGVsZXRlKGMpLHRoaXMuZGVmZXJyZWRDYWxsYmFja3MuZGVsZXRlKGMpfWV4ZWN1dGUoKXt0aGlzLmV4ZWN1dGluZ0NhbGxiYWNrcz0hMDtmb3IoY29uc3QgYyBvZiBPYmplY3QudmFsdWVzKHRoaXMuYnVja2V0cykpZm9yKGNvbnN0IGEgb2YgYylhLmludm9rZSgpO3RoaXMu''@;'; put 'put ''ZXhlY3V0aW5nQ2FsbGJhY2tzPSExO2Zvcihjb25zdCBjIG9mIHRoaXMuZGVmZXJyZWRDYWxsYmFja3MpdGhpcy5idWNrZXRzW2MucGhhc2VdLmFkZChjKTt0aGlzLmRlZmVycmVkQ2FsbGJhY2tzLmNsZWFyKCl9ZGVzdHJveSgpe2Zvcihjb25zdCBjIG9mIE9iamVjdC52YWx1ZXModGhpcy5i''@;'; put 'put ''dWNrZXRzKSljLmNsZWFyKCk7dGhpcy5kZWZlcnJlZENhbGxiYWNrcy5jbGVhcigpfX1sZXQgRTY9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcj1udWxsLHRoaXMuaW50ZXJuYWxDYWxsYmFja3M9W119ZXhlY3V0ZSgpe3RoaXMuZXhlY3V0ZUludGVybmFsQ2FsbGJh''@;'; put 'put ''Y2tzKCksdGhpcy5oYW5kbGVyPy5leGVjdXRlKCl9ZXhlY3V0ZUludGVybmFsQ2FsbGJhY2tzKCl7Y29uc3QgYT1bLi4udGhpcy5pbnRlcm5hbENhbGxiYWNrc107dGhpcy5pbnRlcm5hbENhbGxiYWNrcy5sZW5ndGg9MDtmb3IoY29uc3QgZCBvZiBhKWQoKX1uZ09uRGVzdHJveSgpe3RoaXMu''@;'; put 'put ''aGFuZGxlcj8uZGVzdHJveSgpLHRoaXMuaGFuZGxlcj1udWxsLHRoaXMuaW50ZXJuYWxDYWxsYmFja3MubGVuZ3RoPTB9c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgbH0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24g''@;'; put 'put ''dnYobCxjLGEpe2xldCBkPWE/bC5zdHlsZXM6bnVsbCxoPWE/bC5jbGFzc2VzOm51bGwsZj0wO2lmKG51bGwhPT1jKWZvcihsZXQgdj0wO3Y8Yy5sZW5ndGg7disrKXtjb25zdCBTPWNbdl07Im51bWJlciI9PXR5cGVvZiBTP2Y9UzoxPT1mP2g9S2QoaCxTKToyPT1mJiYoZD1LZChkLFMrIjog''@;'; put 'put ''IitjWysrdl0rIjsiKSl9YT9sLnN0eWxlcz1kOmwuc3R5bGVzV2l0aG91dEhvc3Q9ZCxhP2wuY2xhc3Nlcz1oOmwuY2xhc3Nlc1dpdGhvdXRIb3N0PWh9Y2xhc3MgRkEgZXh0ZW5kcyBLZ3tjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMubmdNb2R1bGU9Y31yZXNvbHZlQ29tcG9uZW50RmFj''@;'; put 'put ''dG9yeShjKXtjb25zdCBhPW1zKGMpO3JldHVybiBuZXcgQTYoYSx0aGlzLm5nTW9kdWxlKX19ZnVuY3Rpb24gTkEobCl7Y29uc3QgYz1bXTtmb3IoY29uc3QgYSBpbiBsKXtpZighbC5oYXNPd25Qcm9wZXJ0eShhKSljb250aW51ZTtjb25zdCBkPWxbYV07dm9pZCAwIT09ZCYmYy5wdXNoKHtw''@;'; put 'put ''cm9wTmFtZTpBcnJheS5pc0FycmF5KGQpP2RbMF06ZCx0ZW1wbGF0ZU5hbWU6YX0pfXJldHVybiBjfWNsYXNzIF92e2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5pbmplY3Rvcj1jLHRoaXMucGFyZW50SW5qZWN0b3I9YX1nZXQoYyxhLGQpe2Q9ZGcoZCk7Y29uc3QgaD10aGlzLmluamVjdG9yLmdl''@;'; put 'put ''dChjLHlDLGQpO3JldHVybiBoIT09eUN8fGE9PT15Qz9oOnRoaXMucGFyZW50SW5qZWN0b3IuZ2V0KGMsYSxkKX19Y2xhc3MgQTYgZXh0ZW5kcyBFQXtnZXQgaW5wdXRzKCl7Y29uc3QgYz10aGlzLmNvbXBvbmVudERlZixhPWMuaW5wdXRUcmFuc2Zvcm1zLGQ9TkEoYy5pbnB1dHMpO2lmKG51''@;'; put 'put ''bGwhPT1hKWZvcihjb25zdCBoIG9mIGQpYS5oYXNPd25Qcm9wZXJ0eShoLnByb3BOYW1lKSYmKGgudHJhbnNmb3JtPWFbaC5wcm9wTmFtZV0pO3JldHVybiBkfWdldCBvdXRwdXRzKCl7cmV0dXJuIE5BKHRoaXMuY29tcG9uZW50RGVmLm91dHB1dHMpfWNvbnN0cnVjdG9yKGMsYSl7c3VwZXIo''@;'; put 'put ''KSx0aGlzLmNvbXBvbmVudERlZj1jLHRoaXMubmdNb2R1bGU9YSx0aGlzLmNvbXBvbmVudFR5cGU9Yy50eXBlLHRoaXMuc2VsZWN0b3I9ZnVuY3Rpb24ga3kobCl7cmV0dXJuIGwubWFwKFR5KS5qb2luKCIsIil9KGMuc2VsZWN0b3JzKSx0aGlzLm5nQ29udGVudFNlbGVjdG9ycz1jLm5nQ29u''@;'; put 'put ''dGVudFNlbGVjdG9ycz9jLm5nQ29udGVudFNlbGVjdG9yczpbXSx0aGlzLmlzQm91bmRUb01vZHVsZT0hIWF9Y3JlYXRlKGMsYSxkLGgpe2NvbnN0IGY9aWUobnVsbCk7dHJ5e2xldCB2PShoPWh8fHRoaXMubmdNb2R1bGUpaW5zdGFuY2VvZiBYbD9oOmg/LmluamVjdG9yO3YmJm51bGwhPT10''@;'; put 'put ''aGlzLmNvbXBvbmVudERlZi5nZXRTdGFuZGFsb25lSW5qZWN0b3ImJih2PXRoaXMuY29tcG9uZW50RGVmLmdldFN0YW5kYWxvbmVJbmplY3Rvcih2KXx8dik7Y29uc3QgUz12P25ldyBfdihjLHYpOmMsVj1TLmdldCh4NixudWxsKTtpZihudWxsPT09Vil0aHJvdyBuZXcgVW4oNDA3LCExKTtj''@;'; put 'put ''b25zdCBRPVMuZ2V0KHRCLG51bGwpLENlPXtyZW5kZXJlckZhY3Rvcnk6VixzYW5pdGl6ZXI6USxpbmxpbmVFZmZlY3RSdW5uZXI6bnVsbCxhZnRlclJlbmRlckV2ZW50TWFuYWdlcjpTLmdldChFNixudWxsKSxjaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZXI6Uy5nZXQoZnYsbnVsbCl9LE9lPVYu''@;'; put 'put ''Y3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksWWU9dGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdWzBdfHwiZGl2IixldD1kP2Z1bmN0aW9uIEpIKGwsYyxhLGQpe2NvbnN0IGY9ZC5nZXQocGssITEpfHxhPT09ZmEuU2hhZG93RG9tLHY9bC5zZWxlY3RSb290RWxl''@;'; put 'put ''bWVudChjLGYpO3JldHVybiBmdW5jdGlvbiBRSChsKXtRayhsKX0odiksdn0oT2UsZCx0aGlzLmNvbXBvbmVudERlZi5lbmNhcHN1bGF0aW9uLFMpOkdwKE9lLFllLGZ1bmN0aW9uIHVCKGwpe2NvbnN0IGM9bC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09Yz8ic3ZnIjoibWF0aCI9PT1j''@;'; put 'put ''PyJtYXRoIjpudWxsfShZZSkpO2xldCBkdD01MTI7dGhpcy5jb21wb25lbnREZWYuc2lnbmFscz9kdHw9NDA5Njp0aGlzLmNvbXBvbmVudERlZi5vblB1c2h8fChkdHw9MTYpO2xldCBodD1udWxsO251bGwhPT1ldCYmKGh0PXl3KGV0LFMsITApKTtjb25zdCBNdD1pQygwLG51bGwsbnVsbCwx''@;'; put 'put ''LDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLFF0PXJ2KG51bGwsTXQsbnVsbCxkdCxudWxsLG51bGwsQ2UsT2UsUyxudWxsLGh0KTtsZXQgbG4sdm47cTUoUXQpO3RyeXtjb25zdCB3bj10aGlzLmNvbXBvbmVudERlZjtsZXQgbnIsdnI9bnVsbDt3bi5maW5kSG9zdERpcmVjdGl2''@;'; put 'put ''ZURlZnM/KG5yPVtdLHZyPW5ldyBNYXAsd24uZmluZEhvc3REaXJlY3RpdmVEZWZzKHduLG5yLHZyKSxuci5wdXNoKHduKSk6bnI9W3duXTtjb25zdCBNaT1mdW5jdGlvbiBoQihsLGMpe2NvbnN0IGE9bFt3aV0sZD1LbztyZXR1cm4gbFtkXT1jLFdnKGEsZCwyLCIjaG9zdCIsbnVsbCl9KFF0''@;'; put 'put ''LGV0KSxQaT1mdW5jdGlvbiBmQihsLGMsYSxkLGgsZix2KXtjb25zdCBTPWhbd2ldOyFmdW5jdGlvbiBwQihsLGMsYSxkKXtmb3IoY29uc3QgaCBvZiBsKWMubWVyZ2VkQXR0cnM9bTIoYy5tZXJnZWRBdHRycyxoLmhvc3RBdHRycyk7bnVsbCE9PWMubWVyZ2VkQXR0cnMmJih2dihjLGMubWVy''@;'; put 'put ''Z2VkQXR0cnMsITApLG51bGwhPT1hJiZxayhkLGEsYykpfShkLGwsYyx2KTtsZXQgVj1udWxsO251bGwhPT1jJiYoVj15dyhjLGhbVGxdKSk7Y29uc3QgUT1mLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihjLGEpO2xldCBkZT0xNjthLnNpZ25hbHM/ZGU9NDA5NjphLm9uUHVzaCYm''@;'; put 'put ''KGRlPTY0KTtjb25zdCBwZT1ydihoLGl2KGEpLG51bGwsZGUsaFtsLmluZGV4XSxsLGYsUSxudWxsLG51bGwsVik7cmV0dXJuIFMuZmlyc3RDcmVhdGVQYXNzJiZhQyhTLGwsZC5sZW5ndGgtMSksZjYoaCxwZSksaFtsLmluZGV4XT1wZX0oTWksZXQsd24sbnIsUXQsQ2UsT2UpO3ZuPVc1KE10''@;'; put 'put ''LEtvKSxldCYmZnVuY3Rpb24gbUIobCxjLGEsZCl7aWYoZCl3cChsLGEsWyJuZy12ZXJzaW9uIiwiMTcuMy4xMSJdKTtlbHNle2NvbnN0e2F0dHJzOmgsY2xhc3NlczpmfT1mdW5jdGlvbiBTbyhsKXtjb25zdCBjPVtdLGE9W107bGV0IGQ9MSxoPTI7Zm9yKDtkPGwubGVuZ3RoOyl7bGV0IGY9''@;'; put 'put ''bFtkXTtpZigic3RyaW5nIj09dHlwZW9mIGYpMj09PWg/IiIhPT1mJiZjLnB1c2goZixsWysrZF0pOjg9PT1oJiZhLnB1c2goZik7ZWxzZXtpZighRmwoaCkpYnJlYWs7aD1mfWQrK31yZXR1cm57YXR0cnM6YyxjbGFzc2VzOmF9fShjLnNlbGVjdG9yc1swXSk7aCYmd3AobCxhLGgpLGYmJmYu''@;'; put 'put ''bGVuZ3RoPjAmJiRrKGwsYSxmLmpvaW4oIiAiKSl9fShPZSx3bixldCxkKSx2b2lkIDAhPT1hJiZmdW5jdGlvbiB2QihsLGMsYSl7Y29uc3QgZD1sLnByb2plY3Rpb249W107Zm9yKGxldCBoPTA7aDxjLmxlbmd0aDtoKyspe2NvbnN0IGY9YVtoXTtkLnB1c2gobnVsbCE9Zj9BcnJheS5mcm9t''@;'; put 'put ''KGYpOm51bGwpfX0odm4sdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnMsYSksbG49ZnVuY3Rpb24gZ0IobCxjLGEsZCxoLGYpe2NvbnN0IHY9U2EoKSxTPWhbd2ldLFY9ZTAodixoKTtzQyhTLGgsdixhLG51bGwsZCk7Zm9yKGxldCBkZT0wO2RlPGEubGVuZ3RoO2RlKyspJGMoUHAoaCxTLHYuZGly''@;'; put 'put ''ZWN0aXZlU3RhcnQrZGUsdiksaCk7YUEoUyxoLHYpLFYmJiRjKFYsaCk7Y29uc3QgUT1QcChoLFMsdi5kaXJlY3RpdmVTdGFydCt2LmNvbXBvbmVudE9mZnNldCx2KTtpZihsW0NhXT1oW0NhXT1RLG51bGwhPT1mKWZvcihjb25zdCBkZSBvZiBmKWRlKFEsYyk7cmV0dXJuIHRDKFMsdixoKSxR''@;'; put 'put ''fShQaSx3bixucix2cixRdCxbX0JdKSxkQyhNdCxRdCxudWxsKX1maW5hbGx5e0VnKCl9cmV0dXJuIG5ldyBkQih0aGlzLmNvbXBvbmVudFR5cGUsbG4sSHAodm4sUXQpLFF0LHZuKX1maW5hbGx5e2llKGYpfX19Y2xhc3MgZEIgZXh0ZW5kcyBLVntjb25zdHJ1Y3RvcihjLGEsZCxoLGYpe3N1''@;'; put 'put ''cGVyKCksdGhpcy5sb2NhdGlvbj1kLHRoaXMuX3Jvb3RMVmlldz1oLHRoaXMuX3ROb2RlPWYsdGhpcy5wcmV2aW91c0lucHV0VmFsdWVzPW51bGwsdGhpcy5pbnN0YW5jZT1hLHRoaXMuaG9zdFZpZXc9dGhpcy5jaGFuZ2VEZXRlY3RvclJlZj1uZXcgeTYoaCx2b2lkIDAsITEpLHRoaXMuY29t''@;'; put 'put ''cG9uZW50VHlwZT1jfXNldElucHV0KGMsYSl7Y29uc3QgZD10aGlzLl90Tm9kZS5pbnB1dHM7bGV0IGg7aWYobnVsbCE9PWQmJihoPWRbY10pKXtpZih0aGlzLnByZXZpb3VzSW5wdXRWYWx1ZXM/Pz1uZXcgTWFwLHRoaXMucHJldmlvdXNJbnB1dFZhbHVlcy5oYXMoYykmJk9iamVjdC5pcyh0''@;'; put 'put ''aGlzLnByZXZpb3VzSW5wdXRWYWx1ZXMuZ2V0KGMpLGEpKXJldHVybjtjb25zdCBmPXRoaXMuX3Jvb3RMVmlldzt1QyhmW3dpXSxmLGgsYyxhKSx0aGlzLnByZXZpb3VzSW5wdXRWYWx1ZXMuc2V0KGMsYSksYjYoJDAodGhpcy5fdE5vZGUuaW5kZXgsZikpfX1nZXQgaW5qZWN0b3IoKXtyZXR1''@;'; put 'put ''cm4gbmV3IEdjKHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuaG9zdFZpZXcuZGVzdHJveSgpfW9uRGVzdHJveShjKXt0aGlzLmhvc3RWaWV3Lm9uRGVzdHJveShjKX19ZnVuY3Rpb24gX0IoKXtjb25zdCBsPVNhKCk7VDkoSHIoKVt3aV0sbCl9bGV0IGhzPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuX19OR19FTEVNRU5UX0lEX189YkJ9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBiQigpe3JldHVybiBCQShTYSgpLEhyKCkpfWNvbnN0IHlCPWhzLEhBPWNsYXNzIGV4dGVuZHMgeUJ7Y29uc3RydWN0b3IoYyxhLGQpe3N1cGVyKCksdGhpcy5fbENvbnRh''@;'; put 'put ''aW5lcj1jLHRoaXMuX2hvc3RUTm9kZT1hLHRoaXMuX2hvc3RMVmlldz1kfWdldCBlbGVtZW50KCl7cmV0dXJuIEhwKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpfWdldCBpbmplY3Rvcigpe3JldHVybiBuZXcgR2ModGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0''@;'; put 'put ''IHBhcmVudEluamVjdG9yKCl7Y29uc3QgYz1UZyh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KTtpZihEOShjKSl7Y29uc3QgYT1KNShjLHRoaXMuX2hvc3RMVmlldyksZD1YNShjKTtyZXR1cm4gbmV3IEdjKGFbd2ldLmRhdGFbZCs4XSxhKX1yZXR1cm4gbmV3IEdjKG51bGwsdGhp''@;'; put 'put ''cy5faG9zdExWaWV3KX1jbGVhcigpe2Zvcig7dGhpcy5sZW5ndGg+MDspdGhpcy5yZW1vdmUodGhpcy5sZW5ndGgtMSl9Z2V0KGMpe2NvbnN0IGE9VkEodGhpcy5fbENvbnRhaW5lcik7cmV0dXJuIG51bGwhPT1hJiZhW2NdfHxudWxsfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbENvbnRh''@;'; put 'put ''aW5lci5sZW5ndGgta2x9Y3JlYXRlRW1iZWRkZWRWaWV3KGMsYSxkKXtsZXQgaCxmOyJudW1iZXIiPT10eXBlb2YgZD9oPWQ6bnVsbCE9ZCYmKGg9ZC5pbmRleCxmPWQuaW5qZWN0b3IpO2NvbnN0IFM9Yy5jcmVhdGVFbWJlZGRlZFZpZXdJbXBsKGF8fHt9LGYsbnVsbCk7cmV0dXJuIHRoaXMu''@;'; put 'put ''aW5zZXJ0SW1wbChTLGgsJGcodGhpcy5faG9zdFROb2RlLG51bGwpKSxTfWNyZWF0ZUNvbXBvbmVudChjLGEsZCxoLGYpe2NvbnN0IHY9YyYmIWZ1bmN0aW9uIHBpKGwpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsfShjKTtsZXQgUztpZih2KVM9YTtlbHNle2NvbnN0IFllPWF8fHt9O1M9''@;'; put 'put ''WWUuaW5kZXgsZD1ZZS5pbmplY3RvcixoPVllLnByb2plY3RhYmxlTm9kZXMsZj1ZZS5lbnZpcm9ubWVudEluamVjdG9yfHxZZS5uZ01vZHVsZVJlZn1jb25zdCBWPXY/YzpuZXcgQTYobXMoYykpLFE9ZHx8dGhpcy5wYXJlbnRJbmplY3RvcjtpZighZiYmbnVsbD09Vi5uZ01vZHVsZSl7Y29u''@;'; put 'put ''c3QgZXQ9KHY/UTp0aGlzLnBhcmVudEluamVjdG9yKS5nZXQoWGwsbnVsbCk7ZXQmJihmPWV0KX1tcyhWLmNvbXBvbmVudFR5cGU/P3t9KTtjb25zdCBPZT1WLmNyZWF0ZShRLGgsbnVsbCxmKTtyZXR1cm4gdGhpcy5pbnNlcnRJbXBsKE9lLmhvc3RWaWV3LFMsJGcodGhpcy5faG9zdFROb2Rl''@;'; put 'put ''LG51bGwpKSxPZX1pbnNlcnQoYyxhKXtyZXR1cm4gdGhpcy5pbnNlcnRJbXBsKGMsYSwhMCl9aW5zZXJ0SW1wbChjLGEsZCl7Y29uc3QgaD1jLl9sVmlldztpZihmdW5jdGlvbiB4VChsKXtyZXR1cm4gWmMobFtFbF0pfShoKSl7Y29uc3QgUz10aGlzLmluZGV4T2YoYyk7aWYoLTEhPT1TKXRo''@;'; put 'put ''aXMuZGV0YWNoKFMpO2Vsc2V7Y29uc3QgVj1oW0VsXSxRPW5ldyBIQShWLFZbZ2xdLFZbRWxdKTtRLmRldGFjaChRLmluZGV4T2YoYykpfX1jb25zdCBmPXRoaXMuX2FkanVzdEluZGV4KGEpLHY9dGhpcy5fbENvbnRhaW5lcjtyZXR1cm4gdjYodixoLGYsZCksYy5hdHRhY2hUb1ZpZXdDb250''@;'; put 'put ''YWluZXJSZWYoKSx6YShUQyh2KSxmLGMpLGN9bW92ZShjLGEpe3JldHVybiB0aGlzLmluc2VydChjLGEpfWluZGV4T2YoYyl7Y29uc3QgYT1WQSh0aGlzLl9sQ29udGFpbmVyKTtyZXR1cm4gbnVsbCE9PWE/YS5pbmRleE9mKGMpOi0xfXJlbW92ZShjKXtjb25zdCBhPXRoaXMuX2FkanVzdElu''@;'; put 'put ''ZGV4KGMsLTEpLGQ9YTYodGhpcy5fbENvbnRhaW5lcixhKTtkJiYoamMoVEModGhpcy5fbENvbnRhaW5lciksYSksJHAoZFt3aV0sZCkpfWRldGFjaChjKXtjb25zdCBhPXRoaXMuX2FkanVzdEluZGV4KGMsLTEpLGQ9YTYodGhpcy5fbENvbnRhaW5lcixhKTtyZXR1cm4gZCYmbnVsbCE9amMo''@;'; put 'put ''VEModGhpcy5fbENvbnRhaW5lciksYSk/bmV3IHk2KGQpOm51bGx9X2FkanVzdEluZGV4KGMsYT0wKXtyZXR1cm4gYz8/dGhpcy5sZW5ndGgrYX19O2Z1bmN0aW9uIFZBKGwpe3JldHVybiBsWzhdfWZ1bmN0aW9uIFRDKGwpe3JldHVybiBsWzhdfHwobFs4XT1bXSl9ZnVuY3Rpb24gQkEobCxj''@;'; put 'put ''KXtsZXQgYTtjb25zdCBkPWNbbC5pbmRleF07cmV0dXJuIFpjKGQpP2E9ZDooYT1jQyhkLGMsbnVsbCxsKSxjW2wuaW5kZXhdPWEsZjYoYyxhKSksa0MoYSxjLGwsZCksbmV3IEhBKGEsbCxjKX1sZXQga0M9ZnVuY3Rpb24gQUMobCxjLGEsZCl7aWYobFtEY10pcmV0dXJuO2xldCBoO2g9OCZh''@;'; put 'put ''LnR5cGU/UmEoZCk6ZnVuY3Rpb24gd0IobCxjKXtjb25zdCBhPWxbVW9dLGQ9YS5jcmVhdGVDb21tZW50KCIiKSxoPWUwKGMsbCk7cmV0dXJuIHFwKGEsdDMoYSxoKSxkLGZ1bmN0aW9uIEd3KGwsYyl7cmV0dXJuIGwubmV4dFNpYmxpbmcoYyl9KGEsaCksITEpLGR9KGMsYSksbFtEY109aH0s''@;'; put 'put ''YnY9KCk9PiExO2NsYXNzIERDe2NvbnN0cnVjdG9yKGMpe3RoaXMucXVlcnlMaXN0PWMsdGhpcy5tYXRjaGVzPW51bGx9Y2xvbmUoKXtyZXR1cm4gbmV3IERDKHRoaXMucXVlcnlMaXN0KX1zZXREaXJ0eSgpe3RoaXMucXVlcnlMaXN0LnNldERpcnR5KCl9fWNsYXNzIHl2e2NvbnN0cnVjdG9y''@;'; put 'put ''KGM9W10pe3RoaXMucXVlcmllcz1jfWNyZWF0ZUVtYmVkZGVkVmlldyhjKXtjb25zdCBhPWMucXVlcmllcztpZihudWxsIT09YSl7Y29uc3QgZD1udWxsIT09Yy5jb250ZW50UXVlcmllcz9jLmNvbnRlbnRRdWVyaWVzWzBdOmEubGVuZ3RoLGg9W107Zm9yKGxldCBmPTA7ZjxkO2YrKyl7Y29u''@;'; put 'put ''c3Qgdj1hLmdldEJ5SW5kZXgoZik7aC5wdXNoKHRoaXMucXVlcmllc1t2LmluZGV4SW5EZWNsYXJhdGlvblZpZXddLmNsb25lKCkpfXJldHVybiBuZXcgeXYoaCl9cmV0dXJuIG51bGx9aW5zZXJ0VmlldyhjKXt0aGlzLmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKGMpfWRldGFjaFZpZXcoYyl7''@;'; put 'put ''dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyhjKX1maW5pc2hWaWV3Q3JlYXRpb24oYyl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyhjKX1kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyhjKXtmb3IobGV0IGE9MDthPHRoaXMucXVlcmllcy5sZW5ndGg7YSsrKW51bGwhPT1PQyhjLGEp''@;'; put 'put ''Lm1hdGNoZXMmJnRoaXMucXVlcmllc1thXS5zZXREaXJ0eSgpfX1jbGFzcyBqQXtjb25zdHJ1Y3RvcihjLGEsZD1udWxsKXt0aGlzLmZsYWdzPWEsdGhpcy5yZWFkPWQsdGhpcy5wcmVkaWNhdGU9InN0cmluZyI9PXR5cGVvZiBjP2Z1bmN0aW9uIFdBKGwpe3JldHVybiBsLnNwbGl0KCIsIiku''@;'; put 'put ''bWFwKGM9PmMudHJpbSgpKX0oYyk6Y319Y2xhc3MgSUN7Y29uc3RydWN0b3IoYz1bXSl7dGhpcy5xdWVyaWVzPWN9ZWxlbWVudFN0YXJ0KGMsYSl7Zm9yKGxldCBkPTA7ZDx0aGlzLnF1ZXJpZXMubGVuZ3RoO2QrKyl0aGlzLnF1ZXJpZXNbZF0uZWxlbWVudFN0YXJ0KGMsYSl9ZWxlbWVudEVu''@;'; put 'put ''ZChjKXtmb3IobGV0IGE9MDthPHRoaXMucXVlcmllcy5sZW5ndGg7YSsrKXRoaXMucXVlcmllc1thXS5lbGVtZW50RW5kKGMpfWVtYmVkZGVkVFZpZXcoYyl7bGV0IGE9bnVsbDtmb3IobGV0IGQ9MDtkPHRoaXMubGVuZ3RoO2QrKyl7Y29uc3QgaD1udWxsIT09YT9hLmxlbmd0aDowLGY9dGhp''@;'; put 'put ''cy5nZXRCeUluZGV4KGQpLmVtYmVkZGVkVFZpZXcoYyxoKTtmJiYoZi5pbmRleEluRGVjbGFyYXRpb25WaWV3PWQsbnVsbCE9PWE/YS5wdXNoKGYpOmE9W2ZdKX1yZXR1cm4gbnVsbCE9PWE/bmV3IElDKGEpOm51bGx9dGVtcGxhdGUoYyxhKXtmb3IobGV0IGQ9MDtkPHRoaXMucXVlcmllcy5s''@;'; put 'put ''ZW5ndGg7ZCsrKXRoaXMucXVlcmllc1tkXS50ZW1wbGF0ZShjLGEpfWdldEJ5SW5kZXgoYyl7cmV0dXJuIHRoaXMucXVlcmllc1tjXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMucXVlcmllcy5sZW5ndGh9dHJhY2soYyl7dGhpcy5xdWVyaWVzLnB1c2goYyl9fWNsYXNzIFJDe2NvbnN0cnVj''@;'; put 'put ''dG9yKGMsYT0tMSl7dGhpcy5tZXRhZGF0YT1jLHRoaXMubWF0Y2hlcz1udWxsLHRoaXMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz0tMSx0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSExLHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSEwLHRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PWF9ZWxlbWVu''@;'; put 'put ''dFN0YXJ0KGMsYSl7dGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGEpJiZ0aGlzLm1hdGNoVE5vZGUoYyxhKX1lbGVtZW50RW5kKGMpe3RoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PT09Yy5pbmRleCYmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSExKX10ZW1wbGF0ZShjLGEpe3RoaXMuZWxlbWVu''@;'; put 'put ''dFN0YXJ0KGMsYSl9ZW1iZWRkZWRUVmlldyhjLGEpe3JldHVybiB0aGlzLmlzQXBwbHlpbmdUb05vZGUoYyk/KHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITAsdGhpcy5hZGRNYXRjaCgtYy5pbmRleCxhKSxuZXcgUkModGhpcy5tZXRhZGF0YSkpOm51bGx9aXNBcHBseWluZ1RvTm9kZShjKXtp''@;'; put 'put ''Zih0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZSYmMSZ+dGhpcy5tZXRhZGF0YS5mbGFncyl7Y29uc3QgYT10aGlzLl9kZWNsYXJhdGlvbk5vZGVJbmRleDtsZXQgZD1jLnBhcmVudDtmb3IoO251bGwhPT1kJiY4JmQudHlwZSYmZC5pbmRleCE9PWE7KWQ9ZC5wYXJlbnQ7cmV0dXJuIGE9PT0obnVs''@;'; put 'put ''bCE9PWQ/ZC5pbmRleDotMSl9cmV0dXJuIHRoaXMuX2FwcGxpZXNUb05leHROb2RlfW1hdGNoVE5vZGUoYyxhKXtjb25zdCBkPXRoaXMubWV0YWRhdGEucHJlZGljYXRlO2lmKEFycmF5LmlzQXJyYXkoZCkpZm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspe2NvbnN0IGY9ZFtoXTt0aGlzLm1h''@;'; put 'put ''dGNoVE5vZGVXaXRoUmVhZE9wdGlvbihjLGEseEIoYSxmKSksdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24oYyxhLFA5KGEsYyxmLCExLCExKSl9ZWxzZSBkPT09VWE/NCZhLnR5cGUmJnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGMsYSwtMSk6dGhpcy5tYXRjaFROb2RlV2l0''@;'; put 'put ''aFJlYWRPcHRpb24oYyxhLFA5KGEsYyxkLCExLCExKSl9bWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKGMsYSxkKXtpZihudWxsIT09ZCl7Y29uc3QgaD10aGlzLm1ldGFkYXRhLnJlYWQ7aWYobnVsbCE9PWgpaWYoaD09PU5pfHxoPT09aHN8fGg9PT1VYSYmNCZhLnR5cGUpdGhpcy5hZGRNYXRj''@;'; put 'put ''aChhLmluZGV4LC0yKTtlbHNle2NvbnN0IGY9UDkoYSxjLGgsITEsITEpO251bGwhPT1mJiZ0aGlzLmFkZE1hdGNoKGEuaW5kZXgsZil9ZWxzZSB0aGlzLmFkZE1hdGNoKGEuaW5kZXgsZCl9fWFkZE1hdGNoKGMsYSl7bnVsbD09PXRoaXMubWF0Y2hlcz90aGlzLm1hdGNoZXM9W2MsYV06dGhp''@;'; put 'put ''cy5tYXRjaGVzLnB1c2goYyxhKX19ZnVuY3Rpb24geEIobCxjKXtjb25zdCBhPWwubG9jYWxOYW1lcztpZihudWxsIT09YSlmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrPTIpaWYoYVtkXT09PWMpcmV0dXJuIGFbZCsxXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBFQihsLGMsYSxkKXtyZXR1cm4t''@;'; put 'put ''MT09PWE/ZnVuY3Rpb24gekEobCxjKXtyZXR1cm4gMTEmbC50eXBlP0hwKGwsYyk6NCZsLnR5cGU/bHYobCxjKTpudWxsfShjLGwpOi0yPT09YT9mdW5jdGlvbiBMQyhsLGMsYSl7cmV0dXJuIGE9PT1OaT9IcChjLGwpOmE9PT1VYT9sdihjLGwpOmE9PT1ocz9CQShjLGwpOnZvaWQgMH0obCxj''@;'; put 'put ''LGQpOlBwKGwsbFt3aV0sYSxjKX1mdW5jdGlvbiBYZyhsLGMsYSxkKXtjb25zdCBoPWNbQzFdLnF1ZXJpZXNbZF07aWYobnVsbD09PWgubWF0Y2hlcyl7Y29uc3QgZj1sLmRhdGEsdj1hLm1hdGNoZXMsUz1bXTtmb3IobGV0IFY9MDtudWxsIT09diYmVjx2Lmxlbmd0aDtWKz0yKXtjb25zdCBR''@;'; put 'put ''PXZbVl07Uy5wdXNoKFE8MD9udWxsOkVCKGMsZltRXSx2W1YrMV0sYS5tZXRhZGF0YS5yZWFkKSl9aC5tYXRjaGVzPVN9cmV0dXJuIGgubWF0Y2hlc31mdW5jdGlvbiBENihsLGMsYSxkKXtjb25zdCBoPWwucXVlcmllcy5nZXRCeUluZGV4KGEpLGY9aC5tYXRjaGVzO2lmKG51bGwhPT1mKXtj''@;'; put 'put ''b25zdCB2PVhnKGwsYyxoLGEpO2ZvcihsZXQgUz0wO1M8Zi5sZW5ndGg7Uys9Mil7Y29uc3QgVj1mW1NdO2lmKFY+MClkLnB1c2godltTLzJdKTtlbHNle2NvbnN0IFE9ZltTKzFdLGRlPWNbLVZdO2ZvcihsZXQgcGU9a2w7cGU8ZGUubGVuZ3RoO3BlKyspe2NvbnN0IENlPWRlW3BlXTtDZVtr''@;'; put 'put ''cF09PT1DZVtFbF0mJkQ2KENlW3dpXSxDZSxRLGQpfWlmKG51bGwhPT1kZVtaZl0pe2NvbnN0IHBlPWRlW1pmXTtmb3IobGV0IENlPTA7Q2U8cGUubGVuZ3RoO0NlKyspe2NvbnN0IE9lPXBlW0NlXTtENihPZVt3aV0sT2UsUSxkKX19fX19cmV0dXJuIGR9ZnVuY3Rpb24gVUEobCxjLGEpe2Nv''@;'; put 'put ''bnN0IGQ9bmV3IHgxKCEoNCZ+YSkpO3JldHVybiBmdW5jdGlvbiBuQShsLGMsYSxkKXtjb25zdCBoPWRBKGMpO2gucHVzaChhKSxsLmZpcnN0Q3JlYXRlUGFzcyYmcDYobCkucHVzaChkLGgubGVuZ3RoLTEpfShsLGMsZCxkLmRlc3Ryb3kpLChjW0MxXT8/PW5ldyB5dikucXVlcmllcy5wdXNo''@;'; put 'put ''KG5ldyBEQyhkKSktMX1mdW5jdGlvbiBHQShsLGMsYSl7bnVsbD09PWwucXVlcmllcyYmKGwucXVlcmllcz1uZXcgSUMpLGwucXVlcmllcy50cmFjayhuZXcgUkMoYyxhKSl9ZnVuY3Rpb24gT0MobCxjKXtyZXR1cm4gbC5xdWVyaWVzLmdldEJ5SW5kZXgoYyl9ZnVuY3Rpb24gJEEobCxjKXtj''@;'; put 'put ''b25zdCBhPWxbd2ldLGQ9T0MoYSxjKTtyZXR1cm4gZC5jcm9zc2VzTmdUZW1wbGF0ZT9ENihhLGwsYyxbXSk6WGcoYSxsLGQsYyl9ZnVuY3Rpb24gS0EobCl7cmV0dXJuIGZ1bmN0aW9uIHd2KGwpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsJiZ2b2lkIDAhPT1sW3JlXX0obCkmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBsLnNldH1mdW5jdGlvbiBlbyhsKXtsZXQgYz1mdW5jdGlvbiBWQyhsKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGwucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn0obC50eXBlKSxhPSEwO2NvbnN0IGQ9W2xdO2Zvcig7Yzspe2xldCBoO2lmKGVjKGwpKWg9Yy5c''@;'; put 'put ''dTAyNzVjbXB8fGMuXHUwMjc1ZGlyO2Vsc2V7aWYoYy5cdTAyNzVjbXApdGhyb3cgbmV3IFVuKDkwMywhMSk7aD1jLlx1MDI3NWRpcn1pZihoKXtpZihhKXtkLnB1c2goaCk7Y29uc3Qgdj1sO3YuaW5wdXRzPVA2KGwuaW5wdXRzKSx2LmlucHV0VHJhbnNmb3Jtcz1QNihsLmlucHV0VHJhbnNm''@;'; put 'put ''b3Jtcyksdi5kZWNsYXJlZElucHV0cz1QNihsLmRlY2xhcmVkSW5wdXRzKSx2Lm91dHB1dHM9UDYobC5vdXRwdXRzKTtjb25zdCBTPWguaG9zdEJpbmRpbmdzO1MmJkwyKGwsUyk7Y29uc3QgVj1oLnZpZXdRdWVyeSxRPWguY29udGVudFF1ZXJpZXM7aWYoViYmb0QobCxWKSxRJiZOQihsLFEp''@;'; put 'put ''LGlEKGwsaCksYXUobC5vdXRwdXRzLGgub3V0cHV0cyksZWMoaCkmJmguZGF0YS5hbmltYXRpb24pe2NvbnN0IGRlPWwuZGF0YTtkZS5hbmltYXRpb249KGRlLmFuaW1hdGlvbnx8W10pLmNvbmNhdChoLmRhdGEuYW5pbWF0aW9uKX19Y29uc3QgZj1oLmZlYXR1cmVzO2lmKGYpZm9yKGxldCB2''@;'; put 'put ''PTA7djxmLmxlbmd0aDt2Kyspe2NvbnN0IFM9Zlt2XTtTJiZTLm5nSW5oZXJpdCYmUyhsKSxTPT09ZW8mJihhPSExKX19Yz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYyl9IWZ1bmN0aW9uIEZCKGwpe2xldCBjPTAsYT1udWxsO2ZvcihsZXQgZD1sLmxlbmd0aC0xO2Q+PTA7ZC0tKXtjb25zdCBo''@;'; put 'put ''PWxbZF07aC5ob3N0VmFycz1jKz1oLmhvc3RWYXJzLGguaG9zdEF0dHJzPW0yKGguaG9zdEF0dHJzLGE9bTIoYSxoLmhvc3RBdHRycykpfX0oZCl9ZnVuY3Rpb24gaUQobCxjKXtmb3IoY29uc3QgYSBpbiBjLmlucHV0cyl7aWYoIWMuaW5wdXRzLmhhc093blByb3BlcnR5KGEpfHxsLmlucHV0''@;'; put 'put ''cy5oYXNPd25Qcm9wZXJ0eShhKSljb250aW51ZTtjb25zdCBkPWMuaW5wdXRzW2FdO2lmKHZvaWQgMCE9PWQmJihsLmlucHV0c1thXT1kLGwuZGVjbGFyZWRJbnB1dHNbYV09Yy5kZWNsYXJlZElucHV0c1thXSxudWxsIT09Yy5pbnB1dFRyYW5zZm9ybXMpKXtjb25zdCBoPUFycmF5LmlzQXJy''@;'; put 'put ''YXkoZCk/ZFswXTpkO2lmKCFjLmlucHV0VHJhbnNmb3Jtcy5oYXNPd25Qcm9wZXJ0eShoKSljb250aW51ZTtsLmlucHV0VHJhbnNmb3Jtcz8/PXt9LGwuaW5wdXRUcmFuc2Zvcm1zW2hdPWMuaW5wdXRUcmFuc2Zvcm1zW2hdfX19ZnVuY3Rpb24gUDYobCl7cmV0dXJuIGw9PT1KdT97fTpsPT09''@;'; put 'put ''QXM/W106bH1mdW5jdGlvbiBvRChsLGMpe2NvbnN0IGE9bC52aWV3UXVlcnk7bC52aWV3UXVlcnk9YT8oZCxoKT0+e2MoZCxoKSxhKGQsaCl9OmN9ZnVuY3Rpb24gTkIobCxjKXtjb25zdCBhPWwuY29udGVudFF1ZXJpZXM7bC5jb250ZW50UXVlcmllcz1hPyhkLGgsZik9PntjKGQsaCxmKSxh''@;'; put 'put ''KGQsaCxmKX06Y31mdW5jdGlvbiBMMihsLGMpe2NvbnN0IGE9bC5ob3N0QmluZGluZ3M7bC5ob3N0QmluZGluZ3M9YT8oZCxoKT0+e2MoZCxoKSxhKGQsaCl9OmN9ZnVuY3Rpb24gQTEobCl7Y29uc3QgYz1hPT57Y29uc3QgZD0oQXJyYXkuaXNBcnJheShsKT9sOmwoKSkubWFwKGg9PiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBoP3tkaXJlY3RpdmU6a2koaCksaW5wdXRzOkp1LG91dHB1dHM6SnV9OntkaXJlY3RpdmU6a2koaC5kaXJlY3RpdmUpLGlucHV0czphRChoLmlucHV0cyksb3V0cHV0czphRChoLm91dHB1dHMpfSk7bnVsbD09PWEuaG9zdERpcmVjdGl2ZXM/KGEuZmluZEhvc3REaXJl''@;'; put 'put ''Y3RpdmVEZWZzPXNELGEuaG9zdERpcmVjdGl2ZXM9ZCk6YS5ob3N0RGlyZWN0aXZlcy51bnNoaWZ0KC4uLmQpfTtyZXR1cm4gYy5uZ0luaGVyaXQ9ITAsY31mdW5jdGlvbiBzRChsLGMsYSl7aWYobnVsbCE9PWwuaG9zdERpcmVjdGl2ZXMpZm9yKGNvbnN0IGQgb2YgbC5ob3N0RGlyZWN0aXZl''@;'; put 'put ''cyl7Y29uc3QgaD1ObChkLmRpcmVjdGl2ZSk7akIoaC5kZWNsYXJlZElucHV0cyxkLmlucHV0cyksc0QoaCxjLGEpLGEuc2V0KGgsZCksYy5wdXNoKGgpfX1mdW5jdGlvbiBhRChsKXtpZih2b2lkIDA9PT1sfHwwPT09bC5sZW5ndGgpcmV0dXJuIEp1O2NvbnN0IGM9e307Zm9yKGxldCBhPTA7''@;'; put 'put ''YTxsLmxlbmd0aDthKz0yKWNbbFthXV09bFthKzFdO3JldHVybiBjfWZ1bmN0aW9uIGpCKGwsYyl7Zm9yKGNvbnN0IGEgaW4gYyljLmhhc093blByb3BlcnR5KGEpJiYobFtjW2FdXT1sW2FdKX1mdW5jdGlvbiBRYShsKXtjb25zdCBjPWwuaW5wdXRDb25maWcsYT17fTtmb3IoY29uc3QgZCBp''@;'; put 'put ''biBjKWlmKGMuaGFzT3duUHJvcGVydHkoZCkpe2NvbnN0IGg9Y1tkXTtBcnJheS5pc0FycmF5KGgpJiZoWzNdJiYoYVtkXT1oWzNdKX1sLmlucHV0VHJhbnNmb3Jtcz1hfWNsYXNzIGEze31jbGFzcyBBbHt9Y2xhc3MgVHYgZXh0ZW5kcyBhM3tjb25zdHJ1Y3RvcihjLGEsZCl7c3VwZXIoKSx0''@;'; put 'put ''aGlzLl9wYXJlbnQ9YSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPVtdLHRoaXMuZGVzdHJveUNicz1bXSx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uZXcgRkEodGhpcyk7Y29uc3QgaD16YyhjKTt0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPUswKGguYm9vdHN0cmFwKSx0aGlz''@;'; put 'put ''Ll9yM0luamVjdG9yPU5wKGMsYSxbe3Byb3ZpZGU6YTMsdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6S2csdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9LC4uLmRdLF9yKGMpLG5ldyBTZXQoWyJlbnZpcm9ubWVudCJdKSksdGhpcy5fcjNJbmplY3Rvci5yZXNvbHZlSW5q''@;'; put 'put ''ZWN0b3JJbml0aWFsaXplcnMoKSx0aGlzLmluc3RhbmNlPXRoaXMuX3IzSW5qZWN0b3IuZ2V0KGMpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9yM0luamVjdG9yfWRlc3Ryb3koKXtjb25zdCBjPXRoaXMuX3IzSW5qZWN0b3I7IWMuZGVzdHJveWVkJiZjLmRlc3Ryb3koKSx0aGlzLmRl''@;'; put 'put ''c3Ryb3lDYnMuZm9yRWFjaChhPT5hKCkpLHRoaXMuZGVzdHJveUNicz1udWxsfW9uRGVzdHJveShjKXt0aGlzLmRlc3Ryb3lDYnMucHVzaChjKX19Y2xhc3Mga3YgZXh0ZW5kcyBBbHtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT1jfWNyZWF0ZShjKXtyZXR1cm4gbmV3''@;'; put 'put ''IFR2KHRoaXMubW9kdWxlVHlwZSxjLFtdKX19Y2xhc3MgRjYgZXh0ZW5kcyBhM3tjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBGQSh0aGlzKSx0aGlzLmluc3RhbmNlPW51bGw7Y29uc3QgYT1uZXcgdzEoWy4uLmMucHJvdmlkZXJzLHtw''@;'; put 'put ''cm92aWRlOmEzLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOktnLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sYy5wYXJlbnR8fHpmKCksYy5kZWJ1Z05hbWUsbmV3IFNldChbImVudmlyb25tZW50Il0pKTt0aGlzLmluamVjdG9yPWEsYy5ydW5FbnZpcm9ubWVudElu''@;'; put 'put ''aXRpYWxpemVycyYmYS5yZXNvbHZlSW5qZWN0b3JJbml0aWFsaXplcnMoKX1kZXN0cm95KCl7dGhpcy5pbmplY3Rvci5kZXN0cm95KCl9b25EZXN0cm95KGMpe3RoaXMuaW5qZWN0b3Iub25EZXN0cm95KGMpfX1mdW5jdGlvbiBKcChsLGMsYT1udWxsKXtyZXR1cm4gbmV3IEY2KHtwcm92aWRl''@;'; put 'put ''cnM6bCxwYXJlbnQ6YyxkZWJ1Z05hbWU6YSxydW5FbnZpcm9ubWVudEluaXRpYWxpemVyczohMH0pLmluamVjdG9yfWxldCBPMj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy50YXNrSWQ9MCx0aGlzLnBlbmRpbmdUYXNrcz1uZXcgU2V0LHRoaXMuaGFzUGVuZGluZ1Rhc2tzPW5l''@;'; put 'put ''dyBBcighMSl9Z2V0IF9oYXNQZW5kaW5nVGFza3MoKXtyZXR1cm4gdGhpcy5oYXNQZW5kaW5nVGFza3MudmFsdWV9YWRkKCl7dGhpcy5faGFzUGVuZGluZ1Rhc2tzfHx0aGlzLmhhc1BlbmRpbmdUYXNrcy5uZXh0KCEwKTtjb25zdCBhPXRoaXMudGFza0lkKys7cmV0dXJuIHRoaXMucGVuZGlu''@;'; put 'put ''Z1Rhc2tzLmFkZChhKSxhfXJlbW92ZShhKXt0aGlzLnBlbmRpbmdUYXNrcy5kZWxldGUoYSksMD09PXRoaXMucGVuZGluZ1Rhc2tzLnNpemUmJnRoaXMuX2hhc1BlbmRpbmdUYXNrcyYmdGhpcy5oYXNQZW5kaW5nVGFza3MubmV4dCghMSl9bmdPbkRlc3Ryb3koKXt0aGlzLnBlbmRpbmdUYXNr''@;'; put 'put ''cy5jbGVhcigpLHRoaXMuX2hhc1BlbmRpbmdUYXNrcyYmdGhpcy5oYXNQZW5kaW5nVGFza3MubmV4dCghMSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3''@;'; put 'put ''NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gQXYobCl7cmV0dXJuISFCQyhsKSYmKEFycmF5LmlzQXJyYXkobCl8fCEobCBpbnN0YW5jZW9mIE1hcCkmJlN5bWJvbC5pdGVyYXRvciBpbiBsKX1mdW5jdGlvbiBCQyhsKXtyZXR1cm4gbnVsbCE9PWwmJigi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgbHx8Im9iamVjdCI9PXR5cGVvZiBsKX1mdW5jdGlvbiB2aChsLGMsYSl7cmV0dXJuIGxbY109YX1mdW5jdGlvbiB0YyhsLGMsYSl7cmV0dXJuIU9iamVjdC5pcyhsW2NdLGEpJiYobFtjXT1hLCEwKX1mdW5jdGlvbiBsMyhsLGMsYSxkKXtjb25zdCBoPXRjKGws''@;'; put 'put ''YyxhKTtyZXR1cm4gdGMobCxjKzEsZCl8fGh9ZnVuY3Rpb24gSXYobCxjLGEsZCxoKXtjb25zdCBmPWwzKGwsYyxhLGQpO3JldHVybiB0YyhsLGMrMixoKXx8Zn1mdW5jdGlvbiBEMShsLGMsYSxkLGgsZil7Y29uc3Qgdj1sMyhsLGMsYSxkKTtyZXR1cm4gbDMobCxjKzIsaCxmKXx8dn1mdW5j''@;'; put 'put ''dGlvbiBndChsLGMsYSxkLGgsZix2LFMpe2NvbnN0IFY9SHIoKSxRPU9zKCksZGU9bCtLbyxwZT1RLmZpcnN0Q3JlYXRlUGFzcz9mdW5jdGlvbiBqQyhsLGMsYSxkLGgsZix2LFMsVil7Y29uc3QgUT1jLmNvbnN0cyxkZT1XZyhjLGwsNCx2fHxudWxsLGNoKFEsUykpO29DKGMsYSxkZSxjaChR''@;'; put 'put ''LFYpKSxUOShjLGRlKTtjb25zdCBwZT1kZS50Vmlldz1pQygyLGRlLGQsaCxmLGMuZGlyZWN0aXZlUmVnaXN0cnksYy5waXBlUmVnaXN0cnksbnVsbCxjLnNjaGVtYXMsUSxudWxsKTtyZXR1cm4gbnVsbCE9PWMucXVlcmllcyYmKGMucXVlcmllcy50ZW1wbGF0ZShjLGRlKSxwZS5xdWVyaWVz''@;'; put 'put ''PWMucXVlcmllcy5lbWJlZGRlZFRWaWV3KGRlKSksZGV9KGRlLFEsVixjLGEsZCxoLGYsdik6US5kYXRhW2RlXTt1aChwZSwhMSk7Y29uc3QgQ2U9aEQoUSxWLHBlLGwpO0s1KCkmJm11KFEsVixDZSxwZSksJGMoQ2UsVik7Y29uc3QgT2U9Y0MoQ2UsVixDZSxwZSk7cmV0dXJuIFZbZGVdPU9l''@;'; put 'put ''LGY2KFYsT2UpLGZ1bmN0aW9uIG8wKGwsYyxhKXtyZXR1cm4gYnYobCxjLGEpfShPZSxwZSxWKSx2MChwZSkmJm5DKFEsVixwZSksbnVsbCE9diYmckMoVixwZSxTKSxndH1sZXQgaEQ9ZnVuY3Rpb24gekMobCxjLGEsZCl7cmV0dXJuIGRoKCEwKSxjW1VvXS5jcmVhdGVDb21tZW50KCIiKX07''@;'; put 'put ''ZnVuY3Rpb24gdXIobCxjLGEsZCl7Y29uc3QgaD1IcigpO3JldHVybiB0YyhoLGFkKCksYykmJihPcygpLGhkKHBhKCksaCxsLGMsYSxkKSksdXJ9ZnVuY3Rpb24gZWwobCxjLGEsZCl7cmV0dXJuIHRjKGwsYWQoKSxhKT9jKyRvKGEpK2Q6b3N9ZnVuY3Rpb24gd3MobCxjKXtyZXR1cm4gbDw8''@;'; put 'put ''MTd8Yzw8Mn1mdW5jdGlvbiBQYShsKXtyZXR1cm4gbD4+MTcmMzI3Njd9ZnVuY3Rpb24gUDIobCl7cmV0dXJuIDJ8bH1mdW5jdGlvbiBJMShsKXtyZXR1cm4oMTMxMDY4JmwpPj4yfWZ1bmN0aW9uIG9uKGwsYyl7cmV0dXJuLTEzMTA2OSZsfGM8PDJ9ZnVuY3Rpb24gc24obCl7cmV0dXJuIDF8''@;'; put 'put ''bH1mdW5jdGlvbiB0cihsLGMsYSxkKXtjb25zdCBoPWxbYSsxXSxmPW51bGw9PT1jO2xldCB2PWQ/UGEoaCk6STEoaCksUz0hMTtmb3IoOzAhPT12JiYoITE9PT1TfHxmKTspe2NvbnN0IFE9bFt2KzFdO01yKGxbdl0sYykmJihTPSEwLGxbdisxXT1kP3NuKFEpOlAyKFEpKSx2PWQ/UGEoUSk6''@;'; put 'put ''STEoUSl9UyYmKGxbYSsxXT1kP1AyKGgpOnNuKGgpKX1mdW5jdGlvbiBNcihsLGMpe3JldHVybiBudWxsPT09bHx8bnVsbD09Y3x8KEFycmF5LmlzQXJyYXkobCk/bFsxXTpsKT09PWN8fCEoIUFycmF5LmlzQXJyYXkobCl8fCJzdHJpbmciIT10eXBlb2YgYykmJlFkKGwsYyk+PTB9Y29uc3Qg''@;'; put 'put ''RnI9e3RleHRFbmQ6MCxrZXk6MCxrZXlFbmQ6MCx2YWx1ZTowLHZhbHVlRW5kOjB9O2Z1bmN0aW9uIExyKGwpe3JldHVybiBsLnN1YnN0cmluZyhGci5rZXksRnIua2V5RW5kKX1mdW5jdGlvbiBBbyhsLGMpe2NvbnN0IGE9RnIudGV4dEVuZDtyZXR1cm4gYT09PWM/LTE6KGM9RnIua2V5RW5k''@;'; put 'put ''PWZ1bmN0aW9uIEMwKGwsYyxhKXtmb3IoO2M8YSYmbC5jaGFyQ29kZUF0KGMpPjMyOyljKys7cmV0dXJuIGN9KGwsRnIua2V5PWMsYSksWXMobCxjLGEpKX1mdW5jdGlvbiBZcyhsLGMsYSl7Zm9yKDtjPGEmJmwuY2hhckNvZGVBdChjKTw9MzI7KWMrKztyZXR1cm4gY31mdW5jdGlvbiBSZShs''@;'; put 'put ''LGMsYSl7Y29uc3QgZD1IcigpO3JldHVybiB0YyhkLGFkKCksYykmJnIwKE9zKCkscGEoKSxkLGwsYyxkW1VvXSxhLCExKSxSZX1mdW5jdGlvbiBwZChsLGMsYSxkLGgpe2NvbnN0IHY9aD8iY2xhc3MiOiJzdHlsZSI7dUMobCxhLGMuaW5wdXRzW3ZdLHYsZCl9ZnVuY3Rpb24gZ2QobCxjLGEp''@;'; put 'put ''e3JldHVybiBGMihsLGMsYSwhMSksZ2R9ZnVuY3Rpb24gcHIobCxjKXtyZXR1cm4gRjIobCxjLG51bGwsITApLHByfWZ1bmN0aW9uIHUzKGwsYyl7Zm9yKGxldCBhPWZ1bmN0aW9uIGdpKGwpe3JldHVybiBmdW5jdGlvbiBlcyhsKXtGci5rZXk9MCxGci5rZXlFbmQ9MCxGci52YWx1ZT0wLEZy''@;'; put 'put ''LnZhbHVlRW5kPTAsRnIudGV4dEVuZD1sLmxlbmd0aH0obCksQW8obCxZcyhsLDAsRnIudGV4dEVuZCkpfShjKTthPj0wO2E9QW8oYyxhKSlOdShsLExyKGMpLCEwKX1mdW5jdGlvbiBGMihsLGMsYSxkKXtjb25zdCBoPUhyKCksZj1PcygpLHY9VDIoMik7Zi5maXJzdFVwZGF0ZVBhc3MmJmZl''@;'; put 'put ''ZShmLGwsdixkKSxjIT09b3MmJnRjKGgsdixjKSYmZ2VlKGYsZi5kYXRhW1djKCldLGgsaFtVb10sbCxoW3YrMV09ZnVuY3Rpb24gRW1lKGwsYyl7cmV0dXJuIG51bGw9PWx8fCIiPT09bHx8KCJzdHJpbmciPT10eXBlb2YgYz9sKz1jOiJvYmplY3QiPT10eXBlb2YgbCYmKGw9X3IocGgobCkp''@;'; put 'put ''KSksbH0oYyxhKSxkLHYpfWZ1bmN0aW9uIGhlZShsLGMpe3JldHVybiBjPj1sLmV4cGFuZG9TdGFydEluZGV4fWZ1bmN0aW9uIGZlZShsLGMsYSxkKXtjb25zdCBoPWwuZGF0YTtpZihudWxsPT09aFthKzFdKXtjb25zdCBmPWhbV2MoKV0sdj1oZWUobCxhKTt2ZWUoZixkKSYmbnVsbD09PWMm''@;'; put 'put ''JiF2JiYoYz0hMSksYz1mdW5jdGlvbiBibWUobCxjLGEsZCl7Y29uc3QgaD1xeShsKTtsZXQgZj1kP2MucmVzaWR1YWxDbGFzc2VzOmMucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PWgpMD09PShkP2MuY2xhc3NCaW5kaW5nczpjLnN0eWxlQmluZGluZ3MpJiYoYT0kQyhhPUtCKG51bGwsbCxj''@;'; put 'put ''LGEsZCksYy5hdHRycyxkKSxmPW51bGwpO2Vsc2V7Y29uc3Qgdj1jLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09dnx8bFt2XSE9PWgpaWYoYT1LQihoLGwsYyxhLGQpLG51bGw9PT1mKXtsZXQgVj1mdW5jdGlvbiB5bWUobCxjLGEpe2NvbnN0IGQ9YT9jLmNsYXNzQmluZGluZ3M6Yy5z''@;'; put 'put ''dHlsZUJpbmRpbmdzO2lmKDAhPT1JMShkKSlyZXR1cm4gbFtQYShkKV19KGwsYyxkKTt2b2lkIDAhPT1WJiZBcnJheS5pc0FycmF5KFYpJiYoVj1LQihudWxsLGwsYyxWWzFdLGQpLFY9JEMoVixjLmF0dHJzLGQpLGZ1bmN0aW9uIHdtZShsLGMsYSxkKXtsW1BhKGE/Yy5jbGFzc0JpbmRpbmdz''@;'; put 'put ''OmMuc3R5bGVCaW5kaW5ncyldPWR9KGwsYyxkLFYpKX1lbHNlIGY9ZnVuY3Rpb24gQ21lKGwsYyxhKXtsZXQgZDtjb25zdCBoPWMuZGlyZWN0aXZlRW5kO2ZvcihsZXQgZj0xK2MuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7ZjxoO2YrKylkPSRDKGQsbFtmXS5ob3N0QXR0cnMsYSk7cmV0dXJuICRD''@;'; put 'put ''KGQsYy5hdHRycyxhKX0obCxjLGQpfXJldHVybiB2b2lkIDAhPT1mJiYoZD9jLnJlc2lkdWFsQ2xhc3Nlcz1mOmMucmVzaWR1YWxTdHlsZXM9ZiksYX0oaCxmLGMsZCksZnVuY3Rpb24gdW4obCxjLGEsZCxoLGYpe2xldCB2PWY/Yy5jbGFzc0JpbmRpbmdzOmMuc3R5bGVCaW5kaW5ncyxTPVBh''@;'; put 'put ''KHYpLFY9STEodik7bFtkXT1hO2xldCBkZSxRPSExO2lmKEFycmF5LmlzQXJyYXkoYSk/KGRlPWFbMV0sKG51bGw9PT1kZXx8UWQoYSxkZSk+MCkmJihRPSEwKSk6ZGU9YSxoKWlmKDAhPT1WKXtjb25zdCBDZT1QYShsW1MrMV0pO2xbZCsxXT13cyhDZSxTKSwwIT09Q2UmJihsW0NlKzFdPW9u''@;'; put 'put ''KGxbQ2UrMV0sZCkpLGxbUysxXT1mdW5jdGlvbiBGYShsLGMpe3JldHVybiAxMzEwNzEmbHxjPDwxN30obFtTKzFdLGQpfWVsc2UgbFtkKzFdPXdzKFMsMCksMCE9PVMmJihsW1MrMV09b24obFtTKzFdLGQpKSxTPWQ7ZWxzZSBsW2QrMV09d3MoViwwKSwwPT09Uz9TPWQ6bFtWKzFdPW9uKGxb''@;'; put 'put ''VisxXSxkKSxWPWQ7USYmKGxbZCsxXT1QMihsW2QrMV0pKSx0cihsLGRlLGQsITApLHRyKGwsZGUsZCwhMSksZnVuY3Rpb24gUm4obCxjLGEsZCxoKXtjb25zdCBmPWg/bC5yZXNpZHVhbENsYXNzZXM6bC5yZXNpZHVhbFN0eWxlcztudWxsIT1mJiYic3RyaW5nIj09dHlwZW9mIGMmJlFkKGYs''@;'; put 'put ''Yyk+PTAmJihhW2QrMV09c24oYVtkKzFdKSl9KGMsZGUsbCxkLGYpLHY9d3MoUyxWKSxmP2MuY2xhc3NCaW5kaW5ncz12OmMuc3R5bGVCaW5kaW5ncz12fShoLGYsYyxhLHYsZCl9fWZ1bmN0aW9uIEtCKGwsYyxhLGQsaCl7bGV0IGY9bnVsbDtjb25zdCB2PWEuZGlyZWN0aXZlRW5kO2xldCBT''@;'; put 'put ''PWEuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7Zm9yKC0xPT09Uz9TPWEuZGlyZWN0aXZlU3RhcnQ6UysrO1M8diYmKGY9Y1tTXSxkPSRDKGQsZi5ob3N0QXR0cnMsaCksZiE9PWwpOylTKys7cmV0dXJuIG51bGwhPT1sJiYoYS5kaXJlY3RpdmVTdHlsaW5nTGFzdD1TKSxkfWZ1bmN0aW9uICRDKGws''@;'; put 'put ''YyxhKXtjb25zdCBkPWE/MToyO2xldCBoPS0xO2lmKG51bGwhPT1jKWZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKXtjb25zdCB2PWNbZl07Im51bWJlciI9PXR5cGVvZiB2P2g9djpoPT09ZCYmKEFycmF5LmlzQXJyYXkobCl8fChsPXZvaWQgMD09PWw/W106WyIiLGxdKSxOdShsLHYsISFh''@;'; put 'put ''fHxjWysrZl0pKX1yZXR1cm4gdm9pZCAwPT09bD9udWxsOmx9ZnVuY3Rpb24gZ2VlKGwsYyxhLGQsaCxmLHYsUyl7aWYoISgzJmMudHlwZSkpcmV0dXJuO2NvbnN0IFY9bC5kYXRhLFE9VltTKzFdLGRlPWZ1bmN0aW9uIG1uKGwpe3JldHVybiEoMSZ+bCl9KFEpP21lZShWLGMsYSxoLEkxKFEp''@;'; put 'put ''LHYpOnZvaWQgMDt2RChkZSl8fCh2RChmKXx8ZnVuY3Rpb24gTGMobCl7cmV0dXJuISgyJn5sKX0oUSkmJihmPW1lZShWLG51bGwsYSxoLFMsdikpLGZ1bmN0aW9uIFdrKGwsYyxhLGQsaCl7aWYoYyloP2wuYWRkQ2xhc3MoYSxkKTpsLnJlbW92ZUNsYXNzKGEsZCk7ZWxzZXtsZXQgZj0tMT09''@;'; put 'put ''PWQuaW5kZXhPZigiLSIpP3ZvaWQgMDplMy5EYXNoQ2FzZTtudWxsPT1oP2wucmVtb3ZlU3R5bGUoYSxkLGYpOigic3RyaW5nIj09dHlwZW9mIGgmJmguZW5kc1dpdGgoIiFpbXBvcnRhbnQiKSYmKGg9aC5zbGljZSgwLC0xMCksZnw9ZTMuSW1wb3J0YW50KSxsLnNldFN0eWxlKGEsZCxoLGYp''@;'; put 'put ''KX19KGQsdixNZyhXYygpLGEpLGgsZikpfWZ1bmN0aW9uIG1lZShsLGMsYSxkLGgsZil7Y29uc3Qgdj1udWxsPT09YztsZXQgUztmb3IoO2g+MDspe2NvbnN0IFY9bFtoXSxRPUFycmF5LmlzQXJyYXkoViksZGU9UT9WWzFdOlYscGU9bnVsbD09PWRlO2xldCBDZT1hW2grMV07Q2U9PT1vcyYm''@;'; put 'put ''KENlPXBlP0FzOnZvaWQgMCk7bGV0IE9lPXBlP2s1KENlLGQpOmRlPT09ZD9DZTp2b2lkIDA7aWYoUSYmIXZEKE9lKSYmKE9lPWs1KFYsZCkpLHZEKE9lKSYmKFM9T2UsdikpcmV0dXJuIFM7Y29uc3QgWWU9bFtoKzFdO2g9dj9QYShZZSk6STEoWWUpfWlmKG51bGwhPT1jKXtsZXQgVj1mP2Mu''@;'; put 'put ''cmVzaWR1YWxDbGFzc2VzOmMucmVzaWR1YWxTdHlsZXM7bnVsbCE9ViYmKFM9azUoVixkKSl9cmV0dXJuIFN9ZnVuY3Rpb24gdkQobCl7cmV0dXJuIHZvaWQgMCE9PWx9ZnVuY3Rpb24gdmVlKGwsYyl7cmV0dXJuISEobC5mbGFncyYoYz84OjE2KSl9ZnVuY3Rpb24gX2VlKGwsYyxhKXshZnVu''@;'; put 'put ''Y3Rpb24gTjIobCxjLGEsZCl7Y29uc3QgaD1PcygpLGY9VDIoMik7aC5maXJzdFVwZGF0ZVBhc3MmJmZlZShoLG51bGwsZixkKTtjb25zdCB2PUhyKCk7aWYoYSE9PW9zJiZ0Yyh2LGYsYSkpe2NvbnN0IFM9aC5kYXRhW1djKCldO2lmKHZlZShTLGQpJiYhaGVlKGgsZikpe2xldCBWPWQ/Uy5j''@;'; put 'put ''bGFzc2VzV2l0aG91dEhvc3Q6Uy5zdHlsZXNXaXRob3V0SG9zdDtudWxsIT09ViYmKGE9S2QoVixhfHwiIikpLHBkKGgsUyx2LGEsZCl9ZWxzZSFmdW5jdGlvbiB4bWUobCxjLGEsZCxoLGYsdixTKXtoPT09b3MmJihoPUFzKTtsZXQgVj0wLFE9MCxkZT0wPGgubGVuZ3RoP2hbMF06bnVsbCxw''@;'; put 'put ''ZT0wPGYubGVuZ3RoP2ZbMF06bnVsbDtmb3IoO251bGwhPT1kZXx8bnVsbCE9PXBlOyl7Y29uc3QgQ2U9VjxoLmxlbmd0aD9oW1YrMV06dm9pZCAwLE9lPVE8Zi5sZW5ndGg/ZltRKzFdOnZvaWQgMDtsZXQgZXQsWWU9bnVsbDtkZT09PXBlPyhWKz0yLFErPTIsQ2UhPT1PZSYmKFllPXBlLGV0''@;'; put 'put ''PU9lKSk6bnVsbD09PXBlfHxudWxsIT09ZGUmJmRlPHBlPyhWKz0yLFllPWRlKTooUSs9MixZZT1wZSxldD1PZSksbnVsbCE9PVllJiZnZWUobCxjLGEsZCxZZSxldCx2LFMpLGRlPVY8aC5sZW5ndGg/aFtWXTpudWxsLHBlPVE8Zi5sZW5ndGg/ZltRXTpudWxsfX0oaCxTLHYsdltVb10sdltm''@;'; put 'put ''KzFdLHZbZisxXT1mdW5jdGlvbiBTbWUobCxjLGEpe2lmKG51bGw9PWF8fCIiPT09YSlyZXR1cm4gQXM7Y29uc3QgZD1bXSxoPXBoKGEpO2lmKEFycmF5LmlzQXJyYXkoaCkpZm9yKGxldCBmPTA7ZjxoLmxlbmd0aDtmKyspbChkLGhbZl0sITApO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBo''@;'; put 'put ''KWZvcihjb25zdCBmIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShmKSYmbChkLGYsaFtmXSk7ZWxzZSJzdHJpbmciPT10eXBlb2YgaCYmYyhkLGgpO3JldHVybiBkfShsLGMsYSksZCxmKX19KE51LHUzLGVsKEhyKCksbCxjLGEpLCEwKX1mdW5jdGlvbiBnZShsLGMsYSxkKXtjb25zdCBoPUhyKCks''@;'; put 'put ''Zj1PcygpLHY9S28rbCxTPWhbVW9dLFY9Zi5maXJzdENyZWF0ZVBhc3M/ZnVuY3Rpb24gJG1lKGwsYyxhLGQsaCxmKXtjb25zdCB2PWMuY29uc3RzLFY9V2coYyxsLDIsZCxjaCh2LGgpKTtyZXR1cm4gb0MoYyxhLFYsY2godixmKSksbnVsbCE9PVYuYXR0cnMmJnZ2KFYsVi5hdHRycywhMSks''@;'; put 'put ''bnVsbCE9PVYubWVyZ2VkQXR0cnMmJnZ2KFYsVi5tZXJnZWRBdHRycywhMCksbnVsbCE9PWMucXVlcmllcyYmYy5xdWVyaWVzLmVsZW1lbnRTdGFydChjLFYpLFZ9KHYsZixoLGMsYSxkKTpmLmRhdGFbdl0sUT1DZWUoZixoLFYsUyxjLGwpO2hbdl09UTtjb25zdCBkZT12MChWKTtyZXR1cm4g''@;'; put 'put ''dWgoViwhMCkscWsoUyxRLFYpLCFmdW5jdGlvbiBONihsKXtyZXR1cm4hKDMyJn5sLmZsYWdzKX0oVikmJks1KCkmJm11KGYsaCxRLFYpLDA9PT1mdW5jdGlvbiByTigpe3JldHVybiBYby5sRnJhbWUuZWxlbWVudERlcHRoQ291bnR9KCkmJiRjKFEsaCksZnVuY3Rpb24gaU4oKXtYby5sRnJh''@;'; put 'put ''bWUuZWxlbWVudERlcHRoQ291bnQrK30oKSxkZSYmKG5DKGYsaCxWKSx0QyhmLFYsaCkpLG51bGwhPT1kJiZyQyhoLFYpLGdlfWZ1bmN0aW9uIG1lKCl7bGV0IGw9U2EoKTtXeSgpP0d5KCk6KGw9bC5wYXJlbnQsdWgobCwhMSkpO2NvbnN0IGM9bDsoZnVuY3Rpb24gb04obCl7cmV0dXJuIFhv''@;'; put 'put ''LnNraXBIeWRyYXRpb25Sb290VE5vZGU9PT1sfSkoYykmJmZ1bmN0aW9uIGNOKCl7WG8uc2tpcEh5ZHJhdGlvblJvb3RUTm9kZT1udWxsfSgpLGZ1bmN0aW9uIFRUKCl7WG8ubEZyYW1lLmVsZW1lbnREZXB0aENvdW50LS19KCk7Y29uc3QgYT1PcygpO3JldHVybiBhLmZpcnN0Q3JlYXRlUGFz''@;'; put 'put ''cyYmKFQ5KGEsbCkseWMobCkmJmEucXVlcmllcy5lbGVtZW50RW5kKGwpKSxudWxsIT1jLmNsYXNzZXNXaXRob3V0SG9zdCYmZnVuY3Rpb24gQ04obCl7cmV0dXJuISEoOCZsLmZsYWdzKX0oYykmJnBkKGEsYyxIcigpLGMuY2xhc3Nlc1dpdGhvdXRIb3N0LCEwKSxudWxsIT1jLnN0eWxlc1dp''@;'; put 'put ''dGhvdXRIb3N0JiZmdW5jdGlvbiBTTihsKXtyZXR1cm4hISgxNiZsLmZsYWdzKX0oYykmJnBkKGEsYyxIcigpLGMuc3R5bGVzV2l0aG91dEhvc3QsITEpLG1lfWZ1bmN0aW9uIFl0KGwsYyxhLGQpe3JldHVybiBnZShsLGMsYSxkKSxtZSgpLFl0fWxldCBDZWU9KGwsYyxhLGQsaCxmKT0+KGRo''@;'; put 'put ''KCEwKSxHcChkLGgsZnVuY3Rpb24gT1QoKXtyZXR1cm4gWG8ubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9KCkpKTtmdW5jdGlvbiBWcihsLGMsYSl7Y29uc3QgZD1IcigpLGg9T3MoKSxmPWwrS28sdj1oLmZpcnN0Q3JlYXRlUGFzcz9mdW5jdGlvbiBYbWUobCxjLGEsZCxoKXtjb25zdCBmPWMu''@;'; put 'put ''Y29uc3RzLHY9Y2goZixkKSxTPVdnKGMsbCw4LCJuZy1jb250YWluZXIiLHYpO3JldHVybiBudWxsIT09diYmdnYoUyx2LCEwKSxvQyhjLGEsUyxjaChmLGgpKSxudWxsIT09Yy5xdWVyaWVzJiZjLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGMsUyksU30oZixoLGQsYyxhKTpoLmRhdGFbZl07dWgo''@;'; put 'put ''diwhMCk7Y29uc3QgUz1TZWUoaCxkLHYsbCk7cmV0dXJuIGRbZl09UyxLNSgpJiZtdShoLGQsUyx2KSwkYyhTLGQpLHYwKHYpJiYobkMoaCxkLHYpLHRDKGgsdixkKSksbnVsbCE9YSYmckMoZCx2KSxWcn1mdW5jdGlvbiBCcigpe2xldCBsPVNhKCk7Y29uc3QgYz1PcygpO3JldHVybiBXeSgp''@;'; put 'put ''P0d5KCk6KGw9bC5wYXJlbnQsdWgobCwhMSkpLGMuZmlyc3RDcmVhdGVQYXNzJiYoVDkoYyxsKSx5YyhsKSYmYy5xdWVyaWVzLmVsZW1lbnRFbmQobCkpLEJyfWZ1bmN0aW9uIHpsKGwsYyxhKXtyZXR1cm4gVnIobCxjLGEpLEJyKCksemx9bGV0IFNlZT0obCxjLGEsZCk9PihkaCghMCksenco''@;'; put 'put ''Y1tVb10sIiIpKTtmdW5jdGlvbiBTbigpe3JldHVybiBIcigpfWZ1bmN0aW9uIGQzKGwsYyxhKXtjb25zdCBkPUhyKCk7cmV0dXJuIHRjKGQsYWQoKSxjKSYmcjAoT3MoKSxwYSgpLGQsbCxjLGRbVW9dLGEsITApLGQzfWZ1bmN0aW9uIHRqKGwsYyxhKXtjb25zdCBkPUhyKCk7aWYodGMoZCxh''@;'; put 'put ''ZCgpLGMpKXtjb25zdCBmPU9zKCksdj1wYSgpO3IwKGYsdixkLGwsYyxLcChxeShmLmRhdGEpLHYsZCksYSwhMCl9cmV0dXJuIHRqfWNvbnN0IGo2PXZvaWQgMDt2YXIgdDVlPVsiZW4iLFtbImEiLCJwIl0sWyJBTSIsIlBNIl0sajZdLFtbIkFNIiwiUE0iXSxqNixqNl0sW1siUyIsIk0iLCJU''@;'; put 'put ''IiwiVyIsIlQiLCJGIiwiUyJdLFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLFsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZy''@;'; put 'put ''IiwiU2EiXV0sajYsW1siSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNo''@;'; put 'put ''IiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl1dLGo2LFtbIkIiLCJBIl0sWyJCQyIsIkFEIl0sWyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXV0sMCxbNiwwXSxbIk0vZC95eSIsIk1N''@;'; put 'put ''TSBkLCB5IiwiTU1NTSBkLCB5IiwiRUVFRSwgTU1NTSBkLCB5Il0sWyJoOm1tIGEiLCJoOm1tOnNzIGEiLCJoOm1tOnNzIGEgeiIsImg6bW06c3MgYSB6enp6Il0sWyJ7MX0sIHswfSIsajYsInsxfSAnYXQnIHswfSIsajZdLFsiLiIsIiwiLCI7IiwiJSIsIisiLCItIiwiRSIsIlx4ZDciLCJc''@;'; put 'put ''dTIwMzAiLCJcdTIyMWUiLCJOYU4iLCI6Il0sWyIjLCMjMC4jIyMiLCIjLCMjMCUiLCJceGE0IywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gZTVlKGwpe2NvbnN0IGE9TWF0aC5mbG9vcihNYXRoLmFicyhsKSksZD1sLnRvU3RyaW5nKCku''@;'; put 'put ''cmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09YSYmMD09PWQ/MTo1fV07bGV0IEh2PXt9O2Z1bmN0aW9uIE0wKGwpe2NvbnN0IGM9ZnVuY3Rpb24gcjVlKGwpe3JldHVybiBsLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIil9KGwpO2xldCBhPXhlZShjKTtp''@;'; put 'put ''ZihhKXJldHVybiBhO2NvbnN0IGQ9Yy5zcGxpdCgiLSIpWzBdO2lmKGE9eGVlKGQpLGEpcmV0dXJuIGE7aWYoImVuIj09PWQpcmV0dXJuIHQ1ZTt0aHJvdyBuZXcgVW4oNzAxLCExKX1mdW5jdGlvbiB4ZWUobCl7cmV0dXJuIGwgaW4gSHZ8fChIdltsXT1Ccy5uZyYmQnMubmcuY29tbW9uJiZC''@;'; put 'put ''cy5uZy5jb21tb24ubG9jYWxlcyYmQnMubmcuY29tbW9uLmxvY2FsZXNbbF0pLEh2W2xdfXZhciBjbD1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsbFtsLkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLGxbbC5EYXlQZXJpb2RzU3Rh''@;'; put 'put ''bmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLGxbbC5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0IixsW2wuRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIixsW2wuTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLGxbbC5Nb250aHNTdGFuZGFsb25lPTZdPSJN''@;'; put 'put ''b250aHNTdGFuZGFsb25lIixsW2wuRXJhcz03XT0iRXJhcyIsbFtsLkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsbFtsLldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIixsW2wuRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLGxbbC5UaW1lRm9ybWF0PTExXT0iVGlt''@;'; put 'put ''ZUZvcm1hdCIsbFtsLkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLGxbbC5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsbFtsLk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIixsW2wuQ3VycmVuY3lDb2RlPTE1XT0iQ3VycmVuY3lDb2RlIixsW2wu''@;'; put 'put ''Q3VycmVuY3lTeW1ib2w9MTZdPSJDdXJyZW5jeVN5bWJvbCIsbFtsLkN1cnJlbmN5TmFtZT0xN109IkN1cnJlbmN5TmFtZSIsbFtsLkN1cnJlbmNpZXM9MThdPSJDdXJyZW5jaWVzIixsW2wuRGlyZWN0aW9uYWxpdHk9MTldPSJEaXJlY3Rpb25hbGl0eSIsbFtsLlBsdXJhbENhc2U9MjBdPSJQ''@;'; put 'put ''bHVyYWxDYXNlIixsW2wuRXh0cmFEYXRhPTIxXT0iRXh0cmFEYXRhIixsfShjbHx8e30pO2NvbnN0IFZ2PSJlbi1VUyI7bGV0IEVlZT1WdjtmdW5jdGlvbiBJdChsLGMsYSxkKXtjb25zdCBoPUhyKCksZj1PcygpLHY9U2EoKTtyZXR1cm4gb2ooZixoLGhbVW9dLHYsbCxjLGQpLEl0fWZ1bmN0''@;'; put 'put ''aW9uIGlqKGwsYyl7Y29uc3QgYT1TYSgpLGQ9SHIoKSxoPU9zKCk7cmV0dXJuIG9qKGgsZCxLcChxeShoLmRhdGEpLGEsZCksYSxsLGMpLGlqfWZ1bmN0aW9uIG9qKGwsYyxhLGQsaCxmLHYpe2NvbnN0IFM9djAoZCksUT1sLmZpcnN0Q3JlYXRlUGFzcyYmcDYobCksZGU9Y1tDYV0scGU9ZEEo''@;'; put 'put ''Yyk7bGV0IENlPSEwO2lmKDMmZC50eXBlfHx2KXtjb25zdCBldD1lMChkLGMpLGR0PXY/dihldCk6ZXQsaHQ9cGUubGVuZ3RoLE10PXY/bG49PnYoUmEobG5bZC5pbmRleF0pKTpkLmluZGV4O2xldCBRdD1udWxsO2lmKCF2JiZTJiYoUXQ9ZnVuY3Rpb24gUTVlKGwsYyxhLGQpe2NvbnN0IGg9''@;'; put 'put ''bC5jbGVhbnVwO2lmKG51bGwhPWgpZm9yKGxldCBmPTA7ZjxoLmxlbmd0aC0xO2YrPTIpe2NvbnN0IHY9aFtmXTtpZih2PT09YSYmaFtmKzFdPT09ZCl7Y29uc3QgUz1jW20wXSxWPWhbZisyXTtyZXR1cm4gUy5sZW5ndGg+Vj9TW1ZdOm51bGx9InN0cmluZyI9PXR5cGVvZiB2JiYoZis9Mil9''@;'; put 'put ''cmV0dXJuIG51bGx9KGwsYyxoLGQuaW5kZXgpKSxudWxsIT09UXQpKFF0Ll9fbmdMYXN0TGlzdGVuZXJGbl9ffHxRdCkuX19uZ05leHRMaXN0ZW5lckZuX189ZixRdC5fX25nTGFzdExpc3RlbmVyRm5fXz1mLENlPSExO2Vsc2V7Zj1RZWUoZCxjLGRlLGYsITEpO2NvbnN0IGxuPWEubGlzdGVu''@;'; put 'put ''KGR0LGgsZik7cGUucHVzaChmLGxuKSxRJiZRLnB1c2goaCxNdCxodCxodCsxKX19ZWxzZSBmPVFlZShkLGMsZGUsZiwhMSk7Y29uc3QgT2U9ZC5vdXRwdXRzO2xldCBZZTtpZihDZSYmbnVsbCE9PU9lJiYoWWU9T2VbaF0pKXtjb25zdCBldD1ZZS5sZW5ndGg7aWYoZXQpZm9yKGxldCBkdD0w''@;'; put 'put ''O2R0PGV0O2R0Kz0yKXtjb25zdCB2bj1jW1llW2R0XV1bWWVbZHQrMV1dLnN1YnNjcmliZShmKSx3bj1wZS5sZW5ndGg7cGUucHVzaChmLHZuKSxRJiZRLnB1c2goaCxkLmluZGV4LHduLC0od24rMSkpfX19ZnVuY3Rpb24gSmVlKGwsYyxhLGQpe2NvbnN0IGg9aWUobnVsbCk7dHJ5e3JldHVy''@;'; put 'put ''biBsaCg2LGMsYSksITEhPT1hKGQpfWNhdGNoKGYpe3JldHVybiBHZyhsLGYpLCExfWZpbmFsbHl7bGgoNyxjLGEpLGllKGgpfX1mdW5jdGlvbiBRZWUobCxjLGEsZCxoKXtyZXR1cm4gZnVuY3Rpb24gZih2KXtpZih2PT09RnVuY3Rpb24pcmV0dXJuIGQ7YjYobC5jb21wb25lbnRPZmZzZXQ+''@;'; put 'put ''LTE/JDAobC5pbmRleCxjKTpjKTtsZXQgVj1KZWUoYyxhLGQsdiksUT1mLl9fbmdOZXh0TGlzdGVuZXJGbl9fO2Zvcig7UTspVj1KZWUoYyxhLFEsdikmJlYsUT1RLl9fbmdOZXh0TGlzdGVuZXJGbl9fO3JldHVybiBoJiYhMT09PVYmJnYucHJldmVudERlZmF1bHQoKSxWfX1mdW5jdGlvbiBO''@;'; put 'put ''ZShsPTEpe3JldHVybiBmdW5jdGlvbiBwTihsKXtyZXR1cm4oWG8ubEZyYW1lLmNvbnRleHRMVmlldz1mdW5jdGlvbiBVeShsLGMpe2Zvcig7bD4wOyljPWNbcHVdLGwtLTtyZXR1cm4gY30obCxYby5sRnJhbWUuY29udGV4dExWaWV3KSlbQ2FdfShsKX1mdW5jdGlvbiBlNmUobCxjKXtsZXQg''@;'; put 'put ''YT1udWxsO2NvbnN0IGQ9ZnVuY3Rpb24gbDkobCl7Y29uc3QgYz1sLmF0dHJzO2lmKG51bGwhPWMpe2NvbnN0IGE9Yy5pbmRleE9mKDUpO2lmKCEoMSZhKSlyZXR1cm4gY1thKzFdfXJldHVybiBudWxsfShsKTtmb3IobGV0IGg9MDtoPGMubGVuZ3RoO2grKyl7Y29uc3QgZj1jW2hdO2lmKCIq''@;'; put 'put ''IiE9PWYpe2lmKG51bGw9PT1kP1NwKGwsZiwhMCk6RXkoZCxmKSlyZXR1cm4gaH1lbHNlIGE9aH1yZXR1cm4gYX1mdW5jdGlvbiBIaShsKXtjb25zdCBjPUhyKClbWGFdW2dsXTtpZighYy5wcm9qZWN0aW9uKXtjb25zdCBkPWMucHJvamVjdGlvbj1mdW5jdGlvbiBKZChsLGMpe2NvbnN0IGE9''@;'; put 'put ''W107Zm9yKGxldCBkPTA7ZDxsO2QrKylhLnB1c2goYyk7cmV0dXJuIGF9KGw/bC5sZW5ndGg6MSxudWxsKSxoPWQuc2xpY2UoKTtsZXQgZj1jLmNoaWxkO2Zvcig7bnVsbCE9PWY7KXtjb25zdCB2PWw/ZTZlKGYsbCk6MDtudWxsIT09diYmKGhbdl0/aFt2XS5wcm9qZWN0aW9uTmV4dD1mOmRb''@;'; put 'put ''dl09ZixoW3ZdPWYpLGY9Zi5uZXh0fX19ZnVuY3Rpb24gSXIobCxjPTAsYSl7Y29uc3QgZD1IcigpLGg9T3MoKSxmPVdnKGgsS28rbCwxNixudWxsLGF8fG51bGwpO251bGw9PT1mLnByb2plY3Rpb24mJihmLnByb2plY3Rpb249YyksR3koKSwoIWRbYmNdfHx4ZygpKSYmMzImfmYuZmxhZ3Mm''@;'; put 'put ''JmZ1bmN0aW9uICRIKGwsYyxhKXtZayhjW1VvXSwwLGMsYSxldihsLGEsYyksdTYoYS5wYXJlbnR8fGNbZ2xdLGEsYykpfShoLGQsZil9ZnVuY3Rpb24gejYobCxjLGEpe3JldHVybiB0UyhsLCIiLGMsIiIsYSksejZ9ZnVuY3Rpb24gdFMobCxjLGEsZCxoKXtjb25zdCBmPUhyKCksdj1lbChm''@;'; put 'put ''LGMsYSxkKTtyZXR1cm4gdiE9PW9zJiZyMChPcygpLHBhKCksZixsLHYsZltVb10saCwhMSksdFN9ZnVuY3Rpb24gdHMobCxjLGEsZCl7IWZ1bmN0aW9uIFlBKGwsYyxhLGQpe2NvbnN0IGg9T3MoKTtpZihoLmZpcnN0Q3JlYXRlUGFzcyl7Y29uc3QgZj1TYSgpO0dBKGgsbmV3IGpBKGMsYSxk''@;'; put 'put ''KSxmLmluZGV4KSxmdW5jdGlvbiBUQihsLGMpe2NvbnN0IGE9bC5jb250ZW50UXVlcmllc3x8KGwuY29udGVudFF1ZXJpZXM9W10pO2MhPT0oYS5sZW5ndGg/YVthLmxlbmd0aC0xXTotMSkmJmEucHVzaChsLnF1ZXJpZXMubGVuZ3RoLTEsYyl9KGgsbCksISgyJn5hKSYmKGguc3RhdGljQ29u''@;'; put 'put ''dGVudFF1ZXJpZXM9ITApfXJldHVybiBVQShoLEhyKCksYSl9KGwsYyxhLGQpfWZ1bmN0aW9uIEhvKGwsYyxhKXshZnVuY3Rpb24gWkEobCxjLGEpe2NvbnN0IGQ9T3MoKTtyZXR1cm4gZC5maXJzdENyZWF0ZVBhc3MmJihHQShkLG5ldyBqQShsLGMsYSksLTEpLCEoMiZ+YykmJihkLnN0YXRp''@;'; put 'put ''Y1ZpZXdRdWVyaWVzPSEwKSksVUEoZCxIcigpLGMpfShsLGMsYSl9ZnVuY3Rpb24gbGkobCl7Y29uc3QgYz1IcigpLGE9T3MoKSxkPUt5KCk7WWYoZCsxKTtjb25zdCBoPU9DKGEsZCk7aWYobC5kaXJ0eSYmZnVuY3Rpb24gdE4obCl7cmV0dXJuISg0Jn5sW19vXSl9KGMpPT09ISgyJn5oLm1l''@;'; put 'put ''dGFkYXRhLmZsYWdzKSl7aWYobnVsbD09PWgubWF0Y2hlcylsLnJlc2V0KFtdKTtlbHNle2NvbnN0IGY9JEEoYyxkKTtsLnJlc2V0KGYsV1QpLGwubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gY2koKXtyZXR1cm4gZnVuY3Rpb24gSTYobCxjKXtyZXR1cm4g''@;'; put 'put ''bFtDMV0ucXVlcmllc1tjXS5xdWVyeUxpc3R9KEhyKCksS3koKSl9ZnVuY3Rpb24gR2kobCl7cmV0dXJuIElwKGZ1bmN0aW9uIHVOKCl7cmV0dXJuIFhvLmxGcmFtZS5jb250ZXh0TFZpZXd9KCksS28rbCl9ZnVuY3Rpb24gUGUobCxjPSIiKXtjb25zdCBhPUhyKCksZD1PcygpLGg9bCtLbyxm''@;'; put 'put ''PWQuZmlyc3RDcmVhdGVQYXNzP1dnKGQsaCwxLGMsbnVsbCk6ZC5kYXRhW2hdLHY9dnRlKGQsYSxmLGMsbCk7YVtoXT12LEs1KCkmJm11KGQsYSx2LGYpLHVoKGYsITEpfWxldCB2dGU9KGwsYyxhLGQsaCk9PihkaCghMCksZnVuY3Rpb24gV3AobCxjKXtyZXR1cm4gbC5jcmVhdGVUZXh0KGMp''@;'; put 'put ''fShjW1VvXSxkKSk7ZnVuY3Rpb24gbHIobCl7cmV0dXJuIG1yKCIiLGwsIiIpLGxyfWZ1bmN0aW9uIG1yKGwsYyxhKXtjb25zdCBkPUhyKCksaD1lbChkLGwsYyxhKTtyZXR1cm4gaCE9PW9zJiZnaChkLFdjKCksaCksbXJ9ZnVuY3Rpb24gX3UobCxjLGEsZCxoKXtjb25zdCBmPUhyKCksdj1m''@;'; put 'put ''dW5jdGlvbiB0bChsLGMsYSxkLGgsZil7Y29uc3QgUz1sMyhsLEUyKCksYSxoKTtyZXR1cm4gVDIoMiksUz9jKyRvKGEpK2QrJG8oaCkrZjpvc30oZixsLGMsYSxkLGgpO3JldHVybiB2IT09b3MmJmdoKGYsV2MoKSx2KSxfdX1mdW5jdGlvbiBIMihsLGMsYSxkLGgsZix2KXtjb25zdCBTPUhy''@;'; put 'put ''KCksVj1mdW5jdGlvbiBSYyhsLGMsYSxkLGgsZix2LFMpe2NvbnN0IFE9SXYobCxFMigpLGEsaCx2KTtyZXR1cm4gVDIoMyksUT9jKyRvKGEpK2QrJG8oaCkrZiskbyh2KStTOm9zfShTLGwsYyxhLGQsaCxmLHYpO3JldHVybiBWIT09b3MmJmdoKFMsV2MoKSxWKSxIMn1mdW5jdGlvbiBDRChs''@;'; put 'put ''LGMsYSxkLGgsZix2LFMsVil7Y29uc3QgUT1IcigpLGRlPWZ1bmN0aW9uIE9hKGwsYyxhLGQsaCxmLHYsUyxWLFEpe2NvbnN0IHBlPUQxKGwsRTIoKSxhLGgsdixWKTtyZXR1cm4gVDIoNCkscGU/YyskbyhhKStkKyRvKGgpK2YrJG8odikrUyskbyhWKStROm9zfShRLGwsYyxhLGQsaCxmLHYs''@;'; put 'put ''UyxWKTtyZXR1cm4gZGUhPT1vcyYmZ2goUSxXYygpLGRlKSxDRH1mdW5jdGlvbiBZcihsLGMsYSl7S0EoYykmJihjPWMoKSk7Y29uc3QgZD1IcigpO3JldHVybiB0YyhkLGFkKCksYykmJnIwKE9zKCkscGEoKSxkLGwsYyxkW1VvXSxhLCExKSxZcn1mdW5jdGlvbiBHcihsLGMpe2NvbnN0IGE9''@;'; put 'put ''S0EobCk7cmV0dXJuIGEmJmwuc2V0KGMpLGF9ZnVuY3Rpb24gV3IobCxjKXtjb25zdCBhPUhyKCksZD1PcygpLGg9U2EoKTtyZXR1cm4gb2ooZCxhLGFbVW9dLGgsbCxjKSxXcn1mdW5jdGlvbiBzaihsLGMsYSxkLGgpe2lmKGw9a2kobCksQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IGY9MDtm''@;'; put 'put ''PGwubGVuZ3RoO2YrKylzaihsW2ZdLGMsYSxkLGgpO2Vsc2V7Y29uc3QgZj1PcygpLHY9SHIoKSxTPVNhKCk7bGV0IFY9YjIobCk/bDpraShsLnByb3ZpZGUpO2NvbnN0IFE9djkobCksZGU9MTA0ODU3NSZTLnByb3ZpZGVySW5kZXhlcyxwZT1TLmRpcmVjdGl2ZVN0YXJ0LENlPVMucHJvdmlk''@;'; put 'put ''ZXJJbmRleGVzPj4yMDtpZihiMihsKXx8IWwubXVsdGkpe2NvbnN0IE9lPW5ldyBxMChRLGgsSmUpLFllPWxqKFYsYyxoP2RlOmRlK0NlLHBlKTstMT09PVllPyhNMShMOShTLHYpLGYsViksYWooZixsLGMubGVuZ3RoKSxjLnB1c2goViksUy5kaXJlY3RpdmVTdGFydCsrLFMuZGlyZWN0aXZl''@;'; put 'put ''RW5kKyssaCYmKFMucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxhLnB1c2goT2UpLHYucHVzaChPZSkpOihhW1llXT1PZSx2W1llXT1PZSl9ZWxzZXtjb25zdCBPZT1saihWLGMsZGUrQ2UscGUpLFllPWxqKFYsYyxkZSxkZStDZSksZHQ9WWU+PTAmJmFbWWVdO2lmKGgmJiFkdHx8IWgmJiEo''@;'; put 'put ''T2U+PTAmJmFbT2VdKSl7TTEoTDkoUyx2KSxmLFYpO2NvbnN0IGh0PWZ1bmN0aW9uIGI2ZShsLGMsYSxkLGgpe2NvbnN0IGY9bmV3IHEwKGwsYSxKZSk7cmV0dXJuIGYubXVsdGk9W10sZi5pbmRleD1jLGYuY29tcG9uZW50UHJvdmlkZXJzPTAsU3RlKGYsaCxkJiYhYSksZn0oaD9fNmU6djZl''@;'; put 'put ''LGEubGVuZ3RoLGgsZCxRKTshaCYmZHQmJihhW1llXS5wcm92aWRlckZhY3Rvcnk9aHQpLGFqKGYsbCxjLmxlbmd0aCwwKSxjLnB1c2goViksUy5kaXJlY3RpdmVTdGFydCsrLFMuZGlyZWN0aXZlRW5kKyssaCYmKFMucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxhLnB1c2goaHQpLHYucHVz''@;'; put 'put ''aChodCl9ZWxzZSBhaihmLGwsT2U+LTE/T2U6WWUsU3RlKGFbaD9ZZTpPZV0sUSwhaCYmZCkpOyFoJiZkJiZkdCYmYVtZZV0uY29tcG9uZW50UHJvdmlkZXJzKyt9fX1mdW5jdGlvbiBhaihsLGMsYSxkKXtjb25zdCBoPWIyKGMpLGY9ZnVuY3Rpb24gUDUobCl7cmV0dXJuISFsLnVzZUNsYXNz''@;'; put 'put ''fShjKTtpZihofHxmKXtjb25zdCBWPShmP2tpKGMudXNlQ2xhc3MpOmMpLnByb3RvdHlwZS5uZ09uRGVzdHJveTtpZihWKXtjb25zdCBRPWwuZGVzdHJveUhvb2tzfHwobC5kZXN0cm95SG9va3M9W10pO2lmKCFoJiZjLm11bHRpKXtjb25zdCBkZT1RLmluZGV4T2YoYSk7LTE9PT1kZT9RLnB1''@;'; put 'put ''c2goYSxbZCxWXSk6UVtkZSsxXS5wdXNoKGQsVil9ZWxzZSBRLnB1c2goYSxWKX19fWZ1bmN0aW9uIFN0ZShsLGMsYSl7cmV0dXJuIGEmJmwuY29tcG9uZW50UHJvdmlkZXJzKyssbC5tdWx0aS5wdXNoKGMpLTF9ZnVuY3Rpb24gbGoobCxjLGEsZCl7Zm9yKGxldCBoPWE7aDxkO2grKylpZihj''@;'; put 'put ''W2hdPT09bClyZXR1cm4gaDtyZXR1cm4tMX1mdW5jdGlvbiB2NmUobCxjLGEsZCl7cmV0dXJuIGNqKHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIF82ZShsLGMsYSxkKXtjb25zdCBoPXRoaXMubXVsdGk7bGV0IGY7aWYodGhpcy5wcm92aWRlckZhY3Rvcnkpe2NvbnN0IHY9dGhpcy5wcm92aWRl''@;'; put 'put ''ckZhY3RvcnkuY29tcG9uZW50UHJvdmlkZXJzLFM9UHAoYSxhW3dpXSx0aGlzLnByb3ZpZGVyRmFjdG9yeS5pbmRleCxkKTtmPVMuc2xpY2UoMCx2KSxjaihoLGYpO2ZvcihsZXQgVj12O1Y8Uy5sZW5ndGg7VisrKWYucHVzaChTW1ZdKX1lbHNlIGY9W10sY2ooaCxmKTtyZXR1cm4gZn1mdW5j''@;'; put 'put ''dGlvbiBjaihsLGMpe2ZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKWMucHVzaCgoMCxsW2FdKSgpKTtyZXR1cm4gY31mdW5jdGlvbiBaaShsLGM9W10pe3JldHVybiBhPT57YS5wcm92aWRlcnNSZXNvbHZlcj0oZCxoKT0+ZnVuY3Rpb24gbTZlKGwsYyxhKXtjb25zdCBkPU9zKCk7aWYoZC5m''@;'; put 'put ''aXJzdENyZWF0ZVBhc3Mpe2NvbnN0IGg9ZWMobCk7c2ooYSxkLmRhdGEsZC5ibHVlcHJpbnQsaCwhMCksc2ooYyxkLmRhdGEsZC5ibHVlcHJpbnQsaCwhMSl9fShkLGg/aChsKTpsLGMpfX1sZXQgeTZlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5faW5qZWN0b3I9YSx0aGlz''@;'; put 'put ''LmNhY2hlZEluamVjdG9ycz1uZXcgTWFwfWdldE9yQ3JlYXRlU3RhbmRhbG9uZUluamVjdG9yKGEpe2lmKCFhLnN0YW5kYWxvbmUpcmV0dXJuIG51bGw7aWYoIXRoaXMuY2FjaGVkSW5qZWN0b3JzLmhhcyhhKSl7Y29uc3QgZD1vZCgwLGEudHlwZSksaD1kLmxlbmd0aD4wP0pwKFtkXSx0aGlz''@;'; put 'put ''Ll9pbmplY3RvcixgU3RhbmRhbG9uZVske2EudHlwZS5uYW1lfV1gKTpudWxsO3RoaXMuY2FjaGVkSW5qZWN0b3JzLnNldChhLGgpfXJldHVybiB0aGlzLmNhY2hlZEluamVjdG9ycy5nZXQoYSl9bmdPbkRlc3Ryb3koKXt0cnl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jYWNoZWRJbmplY3RvcnMu''@;'; put 'put ''dmFsdWVzKCkpbnVsbCE9PWEmJmEuZGVzdHJveSgpfWZpbmFsbHl7dGhpcy5jYWNoZWRJbmplY3RvcnMuY2xlYXIoKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxwcm92aWRlZEluOiJlbnZpcm9ubWVudCIsZmFjdG9yeTooKT0+bmV3IGwoY3IoWGwpKX0pfX1yZXR1cm4g''@;'; put 'put ''bH0pKCk7ZnVuY3Rpb24gU0QobCl7bWgoIk5nU3RhbmRhbG9uZSIpLGwuZ2V0U3RhbmRhbG9uZUluamVjdG9yPWM9PmMuZ2V0KHk2ZSkuZ2V0T3JDcmVhdGVTdGFuZGFsb25lSW5qZWN0b3IobCl9ZnVuY3Rpb24gbGEobCxjLGEpe2NvbnN0IGQ9dDAoKStsLGg9SHIoKTtyZXR1cm4gaFtkXT09''@;'; put 'put ''PW9zP3ZoKGgsZCxhP2MuY2FsbChhKTpjKCkpOmZ1bmN0aW9uIEJsKGwsYyl7cmV0dXJuIGxbY119KGgsZCl9ZnVuY3Rpb24gaDMobCxjLGEsZCl7cmV0dXJuIHh0ZShIcigpLHQwKCksbCxjLGEsZCl9ZnVuY3Rpb24gZjMobCxjLGEsZCxoKXtyZXR1cm4gRXRlKEhyKCksdDAoKSxsLGMsYSxk''@;'; put 'put ''LGgpfWZ1bmN0aW9uIG5TKGwsYyxhLGQsaCxmKXtyZXR1cm4gVHRlKEhyKCksdDAoKSxsLGMsYSxkLGgsZil9ZnVuY3Rpb24geEQobCxjLGEsZCxoLGYsdil7cmV0dXJuIGZ1bmN0aW9uIGt0ZShsLGMsYSxkLGgsZix2LFMsVil7Y29uc3QgUT1jK2E7cmV0dXJuIEQxKGwsUSxoLGYsdixTKT92''@;'; put 'put ''aChsLFErNCxWP2QuY2FsbChWLGgsZix2LFMpOmQoaCxmLHYsUykpOnJTKGwsUSs0KX0oSHIoKSx0MCgpLGwsYyxhLGQsaCxmLHYpfWZ1bmN0aW9uIHJTKGwsYyl7Y29uc3QgYT1sW2NdO3JldHVybiBhPT09b3M/dm9pZCAwOmF9ZnVuY3Rpb24geHRlKGwsYyxhLGQsaCxmKXtjb25zdCB2PWMr''@;'; put 'put ''YTtyZXR1cm4gdGMobCx2LGgpP3ZoKGwsdisxLGY/ZC5jYWxsKGYsaCk6ZChoKSk6clMobCx2KzEpfWZ1bmN0aW9uIEV0ZShsLGMsYSxkLGgsZix2KXtjb25zdCBTPWMrYTtyZXR1cm4gbDMobCxTLGgsZik/dmgobCxTKzIsdj9kLmNhbGwodixoLGYpOmQoaCxmKSk6clMobCxTKzIpfWZ1bmN0''@;'; put 'put ''aW9uIFR0ZShsLGMsYSxkLGgsZix2LFMpe2NvbnN0IFY9YythO3JldHVybiBJdihsLFYsaCxmLHYpP3ZoKGwsViszLFM/ZC5jYWxsKFMsaCxmLHYpOmQoaCxmLHYpKTpyUyhsLFYrMyl9ZnVuY3Rpb24gZ2EobCxjKXtjb25zdCBhPU9zKCk7bGV0IGQ7Y29uc3QgaD1sK0tvO2EuZmlyc3RDcmVh''@;'; put 'put ''dGVQYXNzPyhkPWZ1bmN0aW9uIGs2ZShsLGMpe2lmKGMpZm9yKGxldCBhPWMubGVuZ3RoLTE7YT49MDthLS0pe2NvbnN0IGQ9Y1thXTtpZihsPT09ZC5uYW1lKXJldHVybiBkfX0oYyxhLnBpcGVSZWdpc3RyeSksYS5kYXRhW2hdPWQsZC5vbkRlc3Ryb3kmJihhLmRlc3Ryb3lIb29rcz8/PVtd''@;'; put 'put ''KS5wdXNoKGgsZC5vbkRlc3Ryb3kpKTpkPWEuZGF0YVtoXTtjb25zdCBmPWQuZmFjdG9yeXx8KGQuZmFjdG9yeT1BYyhkLnR5cGUpKSxTPUlhKEplKTt0cnl7Y29uc3QgVj1JOSghMSksUT1mKCk7cmV0dXJuIEk5KFYpLGZ1bmN0aW9uIGk2ZShsLGMsYSxkKXthPj1sLmRhdGEubGVuZ3RoJiYo''@;'; put 'put ''bC5kYXRhW2FdPW51bGwsbC5ibHVlcHJpbnRbYV09bnVsbCksY1thXT1kfShhLEhyKCksaCxRKSxRfWZpbmFsbHl7SWEoUyl9fWZ1bmN0aW9uIFVsKGwsYyxhKXtjb25zdCBkPWwrS28saD1IcigpLGY9SXAoaCxkKTtyZXR1cm4gaVMoaCxkKT94dGUoaCx0MCgpLGMsZi50cmFuc2Zvcm0sYSxm''@;'; put 'put ''KTpmLnRyYW5zZm9ybShhKX1mdW5jdGlvbiBVNihsLGMsYSxkKXtjb25zdCBoPWwrS28sZj1IcigpLHY9SXAoZixoKTtyZXR1cm4gaVMoZixoKT9FdGUoZix0MCgpLGMsdi50cmFuc2Zvcm0sYSxkLHYpOnYudHJhbnNmb3JtKGEsZCl9ZnVuY3Rpb24gdWoobCxjLGEsZCxoKXtjb25zdCBmPWwr''@;'; put 'put ''S28sdj1IcigpLFM9SXAodixmKTtyZXR1cm4gaVModixmKT9UdGUodix0MCgpLGMsUy50cmFuc2Zvcm0sYSxkLGgsUyk6Uy50cmFuc2Zvcm0oYSxkLGgpfWZ1bmN0aW9uIGlTKGwsYyl7cmV0dXJuIGxbd2ldLmRhdGFbY10ucHVyZX1mdW5jdGlvbiBidShsLGMpe3JldHVybiBsdihsLGMpfWxl''@;'; put 'put ''dCBZdGU9KCgpPT57Y2xhc3MgbHtsb2coYSl7Y29uc29sZS5sb2coYSl9d2FybihhKXtjb25zb2xlLndhcm4oYSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1''@;'; put 'put ''MDI3NWZhYyxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KX19cmV0dXJuIGx9KSgpO2NvbnN0IEt0ZT1uZXcgJHIoIiIpLGtEPW5ldyAkcigiIik7bGV0IF9qLG1qPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuX25nWm9uZT1hLHRoaXMucmVnaXN0cnk9ZCx0aGlzLl9wZW5k''@;'; put 'put ''aW5nQ291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLF9qfHwoZnVuY3Rpb24gUzhlKGwpe19qPWx9KGgpLGguYWRkVG9XaW5kb3coZCkpLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLGEucnVuKCgpPT57''@;'; put 'put ''dGhpcy50YXNrVHJhY2tpbmdab25lPXR5cGVvZiBab25lPiJ1Ij9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pfV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9pc1pvbmVTdGFi''@;'; put 'put ''bGU9ITF9fSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e01vLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxxdWV1ZU1pY3JvdGFzaygoKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9y''@;'; put 'put ''dW5DYWxsYmFja3NJZlJlYWR5KCl9KX19KX0pfWluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnQrPTEsdGhpcy5fcGVuZGluZ0NvdW50fWRlY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpe2lmKHRoaXMuX3BlbmRpbmdDb3VudC09MSx0aGlz''@;'; put 'put ''Ll9wZW5kaW5nQ291bnQ8MCl0aHJvdyBuZXcgRXJyb3IoInBlbmRpbmcgYXN5bmMgcmVxdWVzdHMgYmVsb3cgemVybyIpO3JldHVybiB0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCksdGhpcy5fcGVuZGluZ0NvdW50fWlzU3RhYmxlKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09''@;'; put 'put ''PXRoaXMuX3BlbmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc31fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpe2lmKHRoaXMuaXNTdGFibGUoKSlxdWV1ZU1pY3JvdGFzaygoKT0+e2Zvcig7MCE9PXRoaXMuX2NhbGxiYWNrcy5sZW5ndGg7KXtsZXQgYT10aGlzLl9j''@;'; put 'put ''YWxsYmFja3MucG9wKCk7Y2xlYXJUaW1lb3V0KGEudGltZW91dElkKSxhLmRvbmVDYigpfX0pO2Vsc2V7bGV0IGE9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcihkPT4hZC51cGRhdGVDYnx8IWQudXBkYXRlQ2IoYSl8fChjbGVh''@;'; put 'put ''clRpbWVvdXQoZC50aW1lb3V0SWQpLCExKSl9fWdldFBlbmRpbmdUYXNrcygpe3JldHVybiB0aGlzLnRhc2tUcmFja2luZ1pvbmU/dGhpcy50YXNrVHJhY2tpbmdab25lLm1hY3JvVGFza3MubWFwKGE9Pih7c291cmNlOmEuc291cmNlLGNyZWF0aW9uTG9jYXRpb246YS5jcmVhdGlvbkxvY2F0''@;'; put 'put ''aW9uLGRhdGE6YS5kYXRhfSkpOltdfWFkZENhbGxiYWNrKGEsZCxoKXtsZXQgZj0tMTtkJiZkPjAmJihmPXNldFRpbWVvdXQoKCk9Pnt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcih2PT52LnRpbWVvdXRJZCE9PWYpLGEoKX0sZCkpLHRoaXMuX2NhbGxiYWNrcy5wdXNo''@;'; put 'put ''KHtkb25lQ2I6YSx0aW1lb3V0SWQ6Zix1cGRhdGVDYjpofSl9d2hlblN0YWJsZShhLGQsaCl7aWYoaCYmIXRoaXMudGFza1RyYWNraW5nWm9uZSl0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgdHJhY2tpbmcgem9uZSBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4gdXBkYXRlIGNhbGxiYWNrIHRv''@;'; put 'put ''IHdoZW5TdGFibGUoKS4gSXMgInpvbmUuanMvcGx1Z2lucy90YXNrLXRyYWNraW5nIiBsb2FkZWQ/Jyk7dGhpcy5hZGRDYWxsYmFjayhhLGQsaCksdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfWdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fXJl''@;'; put 'put ''Z2lzdGVyQXBwbGljYXRpb24oYSl7dGhpcy5yZWdpc3RyeS5yZWdpc3RlckFwcGxpY2F0aW9uKGEsdGhpcyl9dW5yZWdpc3RlckFwcGxpY2F0aW9uKGEpe3RoaXMucmVnaXN0cnkudW5yZWdpc3RlckFwcGxpY2F0aW9uKGEpfWZpbmRQcm92aWRlcnMoYSxkLGgpe3JldHVybltdfXN0YXRpY3t0''@;'; put 'put ''aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKE1vKSxjcih2aiksY3Ioa0QpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBsfSkoKSx2aj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9y''@;'; put 'put ''KCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXB9cmVnaXN0ZXJBcHBsaWNhdGlvbihhLGQpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQoYSxkKX11bnJlZ2lzdGVyQXBwbGljYXRpb24oYSl7dGhpcy5fYXBwbGljYXRpb25zLmRlbGV0ZShhKX11bnJlZ2lzdGVyQWxsQXBwbGljYXRpb25zKCl7''@;'; put 'put ''dGhpcy5fYXBwbGljYXRpb25zLmNsZWFyKCl9Z2V0VGVzdGFiaWxpdHkoYSl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQoYSl8fG51bGx9Z2V0QWxsVGVzdGFiaWxpdGllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9Z2V0QWxsUm9vdEVs''@;'; put 'put ''ZW1lbnRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKGEsZD0hMCl7cmV0dXJuIF9qPy5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyxhLGQpPz9udWxsfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihk''@;'; put 'put ''KXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicGxhdGZvcm0ifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBsUyhsKXtyZXR1cm4hIWwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLnRoZW59''@;'; put 'put ''ZnVuY3Rpb24gWHRlKGwpe3JldHVybiEhbCYmImZ1bmN0aW9uIj09dHlwZW9mIGwuc3Vic2NyaWJlfWNvbnN0IGJqPW5ldyAkcigiIik7bGV0IHlqPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuZG9uZT0hMSx0aGlzLmRvbmVQcm9taXNlPW5l''@;'; put 'put ''dyBQcm9taXNlKChhLGQpPT57dGhpcy5yZXNvbHZlPWEsdGhpcy5yZWplY3Q9ZH0pLHRoaXMuYXBwSW5pdHM9WnIoYmose29wdGlvbmFsOiEwfSk/P1tdfXJ1bkluaXRpYWxpemVycygpe2lmKHRoaXMuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGE9W107Zm9yKGNvbnN0IGggb2YgdGhpcy5h''@;'; put 'put ''cHBJbml0cyl7Y29uc3QgZj1oKCk7aWYobFMoZikpYS5wdXNoKGYpO2Vsc2UgaWYoWHRlKGYpKXtjb25zdCB2PW5ldyBQcm9taXNlKChTLFYpPT57Zi5zdWJzY3JpYmUoe2NvbXBsZXRlOlMsZXJyb3I6Vn0pfSk7YS5wdXNoKHYpfX1jb25zdCBkPSgpPT57dGhpcy5kb25lPSEwLHRoaXMucmVz''@;'; put 'put ''b2x2ZSgpfTtQcm9taXNlLmFsbChhKS50aGVuKCgpPT57ZCgpfSkuY2F0Y2goaD0+e3RoaXMucmVqZWN0KGgpfSksMD09PWEubGVuZ3RoJiZkKCksdGhpcy5pbml0aWFsaXplZD0hMH1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3Ro''@;'; put 'put ''aXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjb25zdCB3aj1uZXcgJHIoIiIpO2Z1bmN0aW9uIGVuZShsLGMpe3JldHVybiBBcnJheS5pc0FycmF5KGMpP2MucmVkdWNlKGVuZSxsKTp7Li4ubCwu''@;'; put 'put ''Li5jfX1sZXQgdDQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl9ydW5uaW5nVGljaz0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl92aWV3cz1bXSx0aGlzLmludGVybmFsRXJy''@;'; put 'put ''b3JIYW5kbGVyPVpyKFpUKSx0aGlzLmFmdGVyUmVuZGVyRWZmZWN0TWFuYWdlcj1acihFNiksdGhpcy5leHRlcm5hbFRlc3RWaWV3cz1uZXcgU2V0LHRoaXMuYmVmb3JlUmVuZGVyPW5ldyB0bix0aGlzLmFmdGVyVGljaz1uZXcgdG4sdGhpcy5jb21wb25lbnRUeXBlcz1bXSx0aGlzLmNvbXBv''@;'; put 'put ''bmVudHM9W10sdGhpcy5pc1N0YWJsZT1acihPMikuaGFzUGVuZGluZ1Rhc2tzLnBpcGUoYnIoYT0+IWEpKSx0aGlzLl9pbmplY3Rvcj1acihYbCl9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMuX2luamVjdG9yfWJvb3Rz''@;'; put 'put ''dHJhcChhLGQpe2NvbnN0IGg9YSBpbnN0YW5jZW9mIEVBO2lmKCF0aGlzLl9pbmplY3Rvci5nZXQoeWopLmRvbmUpdGhyb3chaCYmZnVuY3Rpb24gdGgobCl7Y29uc3QgYz1tcyhsKXx8TmwobCl8fHZjKGwpO3JldHVybiBudWxsIT09YyYmYy5zdGFuZGFsb25lfShhKSxuZXcgVW4oNDA1LCEx''@;'; put 'put ''KTtsZXQgdjt2PWg/YTp0aGlzLl9pbmplY3Rvci5nZXQoS2cpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGEpLHRoaXMuY29tcG9uZW50VHlwZXMucHVzaCh2LmNvbXBvbmVudFR5cGUpO2NvbnN0IFM9ZnVuY3Rpb24gTThlKGwpe3JldHVybiBsLmlzQm91bmRUb01vZHVsZX0odik/dm9pZCAw''@;'; put 'put ''OnRoaXMuX2luamVjdG9yLmdldChhMyksUT12LmNyZWF0ZShNYS5OVUxMLFtdLGR8fHYuc2VsZWN0b3IsUyksZGU9US5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHBlPVEuaW5qZWN0b3IuZ2V0KEt0ZSxudWxsKTtyZXR1cm4gcGU/LnJlZ2lzdGVyQXBwbGljYXRpb24oZGUpLFEub25EZXN0cm95''@;'; put 'put ''KCgpPT57dGhpcy5kZXRhY2hWaWV3KFEuaG9zdFZpZXcpLEFEKHRoaXMuY29tcG9uZW50cyxRKSxwZT8udW5yZWdpc3RlckFwcGxpY2F0aW9uKGRlKX0pLHRoaXMuX2xvYWRDb21wb25lbnQoUSksUX10aWNrKCl7dGhpcy5fdGljayghMCl9X3RpY2soYSl7aWYodGhpcy5fcnVubmluZ1RpY2sp''@;'; put 'put ''dGhyb3cgbmV3IFVuKDEwMSwhMSk7Y29uc3QgZD1pZShudWxsKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITAsdGhpcy5kZXRlY3RDaGFuZ2VzSW5BdHRhY2hlZFZpZXdzKGEpfWNhdGNoKGgpe3RoaXMuaW50ZXJuYWxFcnJvckhhbmRsZXIoaCl9ZmluYWxseXt0aGlzLmFmdGVyVGljay5uZXh0''@;'; put 'put ''KCksdGhpcy5fcnVubmluZ1RpY2s9ITEsaWUoZCl9fWRldGVjdENoYW5nZXNJbkF0dGFjaGVkVmlld3MoYSl7bGV0IGQ9MDtjb25zdCBoPXRoaXMuYWZ0ZXJSZW5kZXJFZmZlY3RNYW5hZ2VyO2Zvcig7Oyl7aWYoZD09PXBBKXRocm93IG5ldyBVbigxMDMsITEpO2lmKGEpe2NvbnN0IGY9MD09''@;'; put 'put ''PWQ7dGhpcy5iZWZvcmVSZW5kZXIubmV4dChmKTtmb3IobGV0e19sVmlldzp2LG5vdGlmeUVycm9ySGFuZGxlcjpTfW9mIHRoaXMuX3ZpZXdzKUU4ZSh2LGYsUyl9aWYoZCsrLGguZXhlY3V0ZUludGVybmFsQ2FsbGJhY2tzKCksIVsuLi50aGlzLmV4dGVybmFsVGVzdFZpZXdzLmtleXMoKSwu''@;'; put 'put ''Li50aGlzLl92aWV3c10uc29tZSgoe19sVmlldzpmfSk9PkNqKGYpKSYmKGguZXhlY3V0ZSgpLCFbLi4udGhpcy5leHRlcm5hbFRlc3RWaWV3cy5rZXlzKCksLi4udGhpcy5fdmlld3NdLnNvbWUoKHtfbFZpZXc6Zn0pPT5DaihmKSkpKWJyZWFrfX1hdHRhY2hWaWV3KGEpe2NvbnN0IGQ9YTt0''@;'; put 'put ''aGlzLl92aWV3cy5wdXNoKGQpLGQuYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyhhKXtjb25zdCBkPWE7QUQodGhpcy5fdmlld3MsZCksZC5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQoYSl7dGhpcy5hdHRhY2hWaWV3KGEuaG9zdFZpZXcpLHRoaXMudGljaygpLHRo''@;'; put 'put ''aXMuY29tcG9uZW50cy5wdXNoKGEpO2NvbnN0IGQ9dGhpcy5faW5qZWN0b3IuZ2V0KHdqLFtdKTtbLi4udGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzLC4uLmRdLmZvckVhY2goaD0+aChhKSl9bmdPbkRlc3Ryb3koKXtpZighdGhpcy5fZGVzdHJveWVkKXRyeXt0aGlzLl9kZXN0cm95TGlzdGVu''@;'; put 'put ''ZXJzLmZvckVhY2goYT0+YSgpKSx0aGlzLl92aWV3cy5zbGljZSgpLmZvckVhY2goYT0+YS5kZXN0cm95KCkpfWZpbmFsbHl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdfX1vbkRl''@;'; put 'put ''c3Ryb3koYSl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaChhKSwoKT0+QUQodGhpcy5fZGVzdHJveUxpc3RlbmVycyxhKX1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBVbig0MDYsITEpO2NvbnN0IGE9dGhpcy5faW5qZWN0b3I7YS5kZXN0cm95JiYh''@;'; put 'put ''YS5kZXN0cm95ZWQmJmEuZGVzdHJveSgpfWdldCB2aWV3Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofXdhcm5JZkRlc3Ryb3llZCgpe31zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7''@;'; put 'put ''dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBBRChsLGMpe2NvbnN0IGE9bC5pbmRleE9mKGMpO2E+LTEmJmwuc3BsaWNlKGEsMSl9ZnVuY3Rpb24gRThlKGwsYyxhKXshYyYmIUNqKGwpfHxmdW5jdGlvbiBUOGUo''@;'; put 'put ''bCxjLGEpe2xldCBkO2E/KGQ9MCxsW19vXXw9MTAyNCk6ZD02NCZsW19vXT8wOjEsYXYobCxjLGQpfShsLGEsYyl9ZnVuY3Rpb24gQ2oobCl7cmV0dXJuIEM5KGwpfWNsYXNzIGs4ZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMubmdNb2R1bGVGYWN0b3J5PWMsdGhpcy5jb21wb25lbnRGYWN0b3Jp''@;'; put 'put ''ZXM9YX19bGV0IHRuZT0oKCk9PntjbGFzcyBse2NvbXBpbGVNb2R1bGVTeW5jKGEpe3JldHVybiBuZXcga3YoYSl9Y29tcGlsZU1vZHVsZUFzeW5jKGEpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5jb21waWxlTW9kdWxlU3luYyhhKSl9Y29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVu''@;'; put 'put ''dHNTeW5jKGEpe2NvbnN0IGQ9dGhpcy5jb21waWxlTW9kdWxlU3luYyhhKSxmPUswKHpjKGEpLmRlY2xhcmF0aW9ucykucmVkdWNlKCh2LFMpPT57Y29uc3QgVj1tcyhTKTtyZXR1cm4gViYmdi5wdXNoKG5ldyBBNihWKSksdn0sW10pO3JldHVybiBuZXcgazhlKGQsZil9Y29tcGlsZU1vZHVs''@;'; put 'put ''ZUFuZEFsbENvbXBvbmVudHNBc3luYyhhKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jKGEpKX1jbGVhckNhY2hlKCl7fWNsZWFyQ2FjaGVGb3IoYSl7fWdldE1vZHVsZUlkKGEpe31zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxJOGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuem9uZT1acihNbyks''@;'; put 'put ''dGhpcy5hcHBsaWNhdGlvblJlZj1acih0NCl9aW5pdGlhbGl6ZSgpe3RoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb258fCh0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPXRoaXMuem9uZS5vbk1pY3JvdGFza0VtcHR5LnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMu''@;'; put 'put ''em9uZS5ydW4oKCk9Pnt0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKX0pfX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0''@;'; put 'put ''YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gUjhlKCl7Y29uc3QgbD1acihNbyksYz1acihmaCk7cmV0dXJuIGE9PmwucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PmMuaGFu''@;'; put 'put ''ZGxlRXJyb3IoYSkpfWxldCBPOGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuc3Vic2NyaXB0aW9uPW5ldyBLdCx0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuem9uZT1acihNbyksdGhpcy5wZW5kaW5nVGFza3M9WnIoTzIpfWluaXRpYWxpemUoKXtpZih0aGlzLmluaXRpYWxp''@;'; put 'put ''emVkKXJldHVybjt0aGlzLmluaXRpYWxpemVkPSEwO2xldCBhPW51bGw7IXRoaXMuem9uZS5pc1N0YWJsZSYmIXRoaXMuem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIXRoaXMuem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyYmKGE9dGhpcy5wZW5kaW5nVGFza3MuYWRkKCkpLHRoaXMuem9u''@;'; put 'put ''ZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnpvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpPT57TW8uYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLHF1ZXVlTWljcm90YXNrKCgpPT57bnVsbCE9PWEmJiF0aGlzLnpvbmUuaGFzUGVuZGluZ01hY3Jv''@;'; put 'put ''dGFza3MmJiF0aGlzLnpvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MmJih0aGlzLnBlbmRpbmdUYXNrcy5yZW1vdmUoYSksYT1udWxsKX0pfSkpfSksdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSgoKT0+e01vLmFzc2VydEluQW5ndWxhclpvbmUo''@;'; put 'put ''KSxhPz89dGhpcy5wZW5kaW5nVGFza3MuYWRkKCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjps''@;'; put 'put ''LGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO2NvbnN0IFYyPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+WnIoVjIsRGkuT3B0aW9uYWx8RGkuU2tpcFNlbGYpfHxmdW5jdGlvbiBQOGUoKXtyZXR1cm4gdHlwZW9m''@;'; put 'put ''ICRsb2NhbGl6ZTwidSImJiRsb2NhbGl6ZS5sb2NhbGV8fFZ2fSgpfSksU2o9bmV3ICRyKCIiKTtsZXQgb25lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5faW5qZWN0b3I9YSx0aGlzLl9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJv''@;'; put 'put ''eWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkoYSxkKXtjb25zdCBoPWZ1bmN0aW9uIElBKGw9InpvbmUuanMiLGMpe3JldHVybiJub29wIj09PWw/bmV3IERBOiJ6b25lLmpzIj09PWw/bmV3IE1vKGMpOmx9KGQ/Lm5nWm9uZSxmdW5jdGlvbiBpbmUobCl7cmV0dXJue2VuYWJsZUxvbmdT''@;'; put 'put ''dGFja1RyYWNlOiExLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246bD8uZXZlbnRDb2FsZXNjaW5nPz8hMSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjpsPy5ydW5Db2FsZXNjaW5nPz8hMX19KHtldmVudENvYWxlc2Npbmc6ZD8ubmdab25lRXZlbnRDb2FsZXNj''@;'; put 'put ''aW5nLHJ1bkNvYWxlc2Npbmc6ZD8ubmdab25lUnVuQ29hbGVzY2luZ30pKTtyZXR1cm4gaC5ydW4oKCk9Pntjb25zdCBmPWZ1bmN0aW9uIGNEKGwsYyxhKXtyZXR1cm4gbmV3IFR2KGwsYyxhKX0oYS5tb2R1bGVUeXBlLHRoaXMuaW5qZWN0b3IsZnVuY3Rpb24gcm5lKGwpe3JldHVyblt7cHJv''@;'; put 'put ''dmlkZTpNbyx1c2VGYWN0b3J5Omx9LHtwcm92aWRlOmVoLG11bHRpOiEwLHVzZUZhY3Rvcnk6KCk9Pntjb25zdCBjPVpyKEk4ZSx7b3B0aW9uYWw6ITB9KTtyZXR1cm4oKT0+Yy5pbml0aWFsaXplKCl9fSx7cHJvdmlkZTplaCxtdWx0aTohMCx1c2VGYWN0b3J5OigpPT57Y29uc3QgYz1acihP''@;'; put 'put ''OGUpO3JldHVybigpPT57Yy5pbml0aWFsaXplKCl9fX0se3Byb3ZpZGU6WlQsdXNlRmFjdG9yeTpSOGV9XX0oKCk9PmgpKSx2PWYuaW5qZWN0b3IuZ2V0KGZoLG51bGwpO3JldHVybiBoLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57Y29uc3QgUz1oLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OlY9''@;'; put 'put ''Pnt2LmhhbmRsZUVycm9yKFYpfX0pO2Yub25EZXN0cm95KCgpPT57QUQodGhpcy5fbW9kdWxlcyxmKSxTLnVuc3Vic2NyaWJlKCl9KX0pLGZ1bmN0aW9uIFF0ZShsLGMsYSl7dHJ5e2NvbnN0IGQ9YSgpO3JldHVybiBsUyhkKT9kLmNhdGNoKGg9Pnt0aHJvdyBjLnJ1bk91dHNpZGVBbmd1bGFy''@;'; put 'put ''KCgpPT5sLmhhbmRsZUVycm9yKGgpKSxofSk6ZH1jYXRjaChkKXt0aHJvdyBjLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5sLmhhbmRsZUVycm9yKGQpKSxkfX0odixoLCgpPT57Y29uc3QgUz1mLmluamVjdG9yLmdldCh5aik7cmV0dXJuIFMucnVuSW5pdGlhbGl6ZXJzKCksUy5kb25lUHJvbWlz''@;'; put 'put ''ZS50aGVuKCgpPT4oZnVuY3Rpb24gVGVlKGwpeyJzdHJpbmciPT10eXBlb2YgbCYmKEVlZT1sLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikpfShmLmluamVjdG9yLmdldChWMixWdil8fFZ2KSx0aGlzLl9tb2R1bGVEb0Jvb3RzdHJhcChmKSxmKSl9KX0pfWJvb3RzdHJhcE1vZHVs''@;'; put 'put ''ZShhLGQ9W10pe2NvbnN0IGg9ZW5lKHt9LGQpO3JldHVybiBmdW5jdGlvbiBEOGUobCxjLGEpe2NvbnN0IGQ9bmV3IGt2KGEpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZCl9KDAsMCxhKS50aGVuKGY9PnRoaXMuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeShmLGgpKX1fbW9kdWxlRG9Cb290c3Ry''@;'; put 'put ''YXAoYSl7Y29uc3QgZD1hLmluamVjdG9yLmdldCh0NCk7aWYoYS5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MClhLl9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2goaD0+ZC5ib290c3RyYXAoaCkpO2Vsc2V7aWYoIWEuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgVW4o''@;'; put 'put ''LTQwMywhMSk7YS5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGQpfXRoaXMuX21vZHVsZXMucHVzaChhKX1vbkRlc3Ryb3koYSl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKGEpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJv''@;'; put 'put ''eWVkKXRocm93IG5ldyBVbig0MDQsITEpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKGQ9PmQuZGVzdHJveSgpKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzLmZvckVhY2goZD0+ZCgpKTtjb25zdCBhPXRoaXMuX2luamVjdG9yLmdldChTaixudWxsKTthJiYoYS5mb3JFYWNoKGQ9PmQo''@;'; put 'put ''KSksYS5jbGVhcigpKSx0aGlzLl9kZXN0cm95ZWQ9ITB9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IoTWEpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46''@;'; put 'put ''bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pfX1yZXR1cm4gbH0pKCksaW09bnVsbDtjb25zdCBzbmU9bmV3ICRyKCIiKTtmdW5jdGlvbiBhbmUobCxjLGE9W10pe2NvbnN0IGQ9YFBsYXRmb3JtOiAke2N9YCxoPW5ldyAkcihkKTtyZXR1cm4oZj1bXSk9Pnts''@;'; put 'put ''ZXQgdj1NaigpO2lmKCF2fHx2LmluamVjdG9yLmdldChzbmUsITEpKXtjb25zdCBTPVsuLi5hLC4uLmYse3Byb3ZpZGU6aCx1c2VWYWx1ZTohMH1dO2w/bChTKTpmdW5jdGlvbiBIOGUobCl7aWYoaW0mJiFpbS5nZXQoc25lLCExKSl0aHJvdyBuZXcgVW4oNDAwLCExKTsoZnVuY3Rpb24gSnRl''@;'; put 'put ''KCl7IWZ1bmN0aW9uIG90KGwpe1VlPWx9KCgpPT57dGhyb3cgbmV3IFVuKDYwMCwhMSl9KX0pKCksaW09bDtjb25zdCBjPWwuZ2V0KG9uZSk7KGZ1bmN0aW9uIGNuZShsKXtsLmdldChsayxudWxsKT8uZm9yRWFjaChhPT5hKCkpfSkobCl9KGZ1bmN0aW9uIGxuZShsPVtdLGMpe3JldHVybiBN''@;'; put 'put ''YS5jcmVhdGUoe25hbWU6Yyxwcm92aWRlcnM6W3twcm92aWRlOkY1LHVzZVZhbHVlOiJwbGF0Zm9ybSJ9LHtwcm92aWRlOlNqLHVzZVZhbHVlOm5ldyBTZXQoWygpPT5pbT1udWxsXSl9LC4uLmxdfSl9KFMsZCkpfXJldHVybiBmdW5jdGlvbiBWOGUobCl7Y29uc3QgYz1NaigpO2lmKCFjKXRo''@;'; put 'put ''cm93IG5ldyBVbig0MDEsITEpO3JldHVybiBjfSgpfX1mdW5jdGlvbiBNaigpe3JldHVybiBpbT8uZ2V0KG9uZSk/P251bGx9bGV0IGNhPSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuX19OR19FTEVNRU5UX0lEX189ajhlfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gajhlKGwpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbiB6OGUobCxjLGEpe2lmKHgyKGwpJiYhYSl7Y29uc3QgZD0kMChsLmluZGV4LGMpO3JldHVybiBuZXcgeTYoZCxkKX1yZXR1cm4gNDcmbC50eXBlP25ldyB5NihjW1hhXSxjKTpudWxsfShTYSgpLEhyKCksISgxNiZ+bCkpfWNsYXNzIHBuZXtjb25zdHJ1Y3Rvcigpe31zdXBwb3J0''@;'; put 'put ''cyhjKXtyZXR1cm4gQXYoYyl9Y3JlYXRlKGMpe3JldHVybiBuZXcgRzhlKGMpfX1jb25zdCBXOGU9KGwsYyk9PmM7Y2xhc3MgRzhle2NvbnN0cnVjdG9yKGMpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3By''@;'; put 'put ''ZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9''@;'; put 'put ''bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj1jfHxXOGV9Zm9yRWFjaEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5faXRIZWFkO251bGwhPT1hO2E9''@;'; put 'put ''YS5fbmV4dCljKGEpfWZvckVhY2hPcGVyYXRpb24oYyl7bGV0IGE9dGhpcy5faXRIZWFkLGQ9dGhpcy5fcmVtb3ZhbHNIZWFkLGg9MCxmPW51bGw7Zm9yKDthfHxkOyl7Y29uc3Qgdj0hZHx8YSYmYS5jdXJyZW50SW5kZXg8bW5lKGQsaCxmKT9hOmQsUz1tbmUodixoLGYpLFY9di5jdXJyZW50''@;'; put 'put ''SW5kZXg7aWYodj09PWQpaC0tLGQ9ZC5fbmV4dFJlbW92ZWQ7ZWxzZSBpZihhPWEuX25leHQsbnVsbD09di5wcmV2aW91c0luZGV4KWgrKztlbHNle2Z8fChmPVtdKTtjb25zdCBRPVMtaCxkZT1WLWg7aWYoUSE9ZGUpe2ZvcihsZXQgQ2U9MDtDZTxRO0NlKyspe2NvbnN0IE9lPUNlPGYubGVu''@;'; put 'put ''Z3RoP2ZbQ2VdOmZbQ2VdPTAsWWU9T2UrQ2U7ZGU8PVllJiZZZTxRJiYoZltDZV09T2UrMSl9Zlt2LnByZXZpb3VzSW5kZXhdPWRlLVF9fVMhPT1WJiZjKHYsUyxWKX19Zm9yRWFjaFByZXZpb3VzSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9wcmV2aW91c0l0SGVhZDtudWxsIT09YTthPWEu''@;'; put 'put ''X25leHRQcmV2aW91cyljKGEpfWZvckVhY2hBZGRlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09YTthPWEuX25leHRBZGRlZCljKGEpfWZvckVhY2hNb3ZlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1hO2E9YS5fbmV4''@;'; put 'put ''dE1vdmVkKWMoYSl9Zm9yRWFjaFJlbW92ZWRJdGVtKGMpe2xldCBhO2ZvcihhPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09YTthPWEuX25leHRSZW1vdmVkKWMoYSl9Zm9yRWFjaElkZW50aXR5Q2hhbmdlKGMpe2xldCBhO2ZvcihhPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7bnVsbCE9''@;'; put 'put ''PWE7YT1hLl9uZXh0SWRlbnRpdHlDaGFuZ2UpYyhhKX1kaWZmKGMpe2lmKG51bGw9PWMmJihjPVtdKSwhQXYoYykpdGhyb3cgbmV3IFVuKDkwMCwhMSk7cmV0dXJuIHRoaXMuY2hlY2soYyk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayhjKXt0aGlzLl9yZXNldCgpO2xldCBoLGYsdixh''@;'; put 'put ''PXRoaXMuX2l0SGVhZCxkPSExO2lmKEFycmF5LmlzQXJyYXkoYykpe3RoaXMubGVuZ3RoPWMubGVuZ3RoO2ZvcihsZXQgUz0wO1M8dGhpcy5sZW5ndGg7UysrKWY9Y1tTXSx2PXRoaXMuX3RyYWNrQnlGbihTLGYpLG51bGwhPT1hJiZPYmplY3QuaXMoYS50cmFja0J5SWQsdik/KGQmJihhPXRo''@;'; put 'put ''aXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGEsZix2LFMpKSxPYmplY3QuaXMoYS5pdGVtLGYpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShhLGYpKTooYT10aGlzLl9taXNtYXRjaChhLGYsdixTKSxkPSEwKSxhPWEuX25leHR9ZWxzZSBoPTAsZnVuY3Rpb24gV0IobCxjKXtpZihBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGwpKWZvcihsZXQgYT0wO2E8bC5sZW5ndGg7YSsrKWMobFthXSk7ZWxzZXtjb25zdCBhPWxbU3ltYm9sLml0ZXJhdG9yXSgpO2xldCBkO2Zvcig7IShkPWEubmV4dCgpKS5kb25lOyljKGQudmFsdWUpfX0oYyxTPT57dj10aGlzLl90cmFja0J5Rm4oaCxTKSxudWxsIT09YSYmT2JqZWN0''@;'; put 'put ''LmlzKGEudHJhY2tCeUlkLHYpPyhkJiYoYT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihhLFMsdixoKSksT2JqZWN0LmlzKGEuaXRlbSxTKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoYSxTKSk6KGE9dGhpcy5fbWlzbWF0Y2goYSxTLHYsaCksZD0hMCksYT1hLl9uZXh0LGgrK30pLHRoaXMu''@;'; put 'put ''bGVuZ3RoPWg7cmV0dXJuIHRoaXMuX3RydW5jYXRlKGEpLHRoaXMuY29sbGVjdGlvbj1jLHRoaXMuaXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8''@;'; put 'put ''bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgYztmb3IoYz10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0KWMuX25leHRQcmV2aW91cz1jLl9uZXh0O2ZvcihjPXRoaXMuX2FkZGl0''@;'; put 'put ''aW9uc0hlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0QWRkZWQpYy5wcmV2aW91c0luZGV4PWMuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCxjPXRoaXMuX21vdmVzSGVhZDtudWxsIT09YztjPWMuX25leHRNb3ZlZCljLnByZXZpb3Vz''@;'; put 'put ''SW5kZXg9Yy5jdXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21h''@;'; put 'put ''dGNoKGMsYSxkLGgpe2xldCBmO3JldHVybiBudWxsPT09Yz9mPXRoaXMuX2l0VGFpbDooZj1jLl9wcmV2LHRoaXMuX3JlbW92ZShjKSksbnVsbCE9PShjPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KGQsbnVsbCkpPyhPYmplY3Qu''@;'; put 'put ''aXMoYy5pdGVtLGEpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShjLGEpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIoYyxmLGgpKTpudWxsIT09KGM9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChkLGgpKT8oT2JqZWN0LmlzKGMuaXRlbSxhKXx8''@;'; put 'put ''dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoYyxhKSx0aGlzLl9tb3ZlQWZ0ZXIoYyxmLGgpKTpjPXRoaXMuX2FkZEFmdGVyKG5ldyAkOGUoYSxkKSxmLGgpLGN9X3ZlcmlmeVJlaW5zZXJ0aW9uKGMsYSxkLGgpe2xldCBmPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91''@;'; put 'put ''bmxpbmtlZFJlY29yZHMuZ2V0KGQsbnVsbCk7cmV0dXJuIG51bGwhPT1mP2M9dGhpcy5fcmVpbnNlcnRBZnRlcihmLGMuX3ByZXYsaCk6Yy5jdXJyZW50SW5kZXghPWgmJihjLmN1cnJlbnRJbmRleD1oLHRoaXMuX2FkZFRvTW92ZXMoYyxoKSksY31fdHJ1bmNhdGUoYyl7Zm9yKDtudWxsIT09''@;'; put 'put ''Yzspe2NvbnN0IGE9Yy5fbmV4dDt0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayhjKSksYz1hfW51bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5jbGVhcigpLG51bGwhPT10aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25z''@;'; put 'put ''VGFpbC5fbmV4dEFkZGVkPW51bGwpLG51bGwhPT10aGlzLl9tb3Zlc1RhaWwmJih0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faXRUYWlsJiYodGhpcy5faXRUYWlsLl9uZXh0PW51bGwpLG51bGwhPT10aGlzLl9yZW1vdmFsc1RhaWwmJih0aGlzLl9yZW1v''@;'; put 'put ''dmFsc1RhaWwuX25leHRSZW1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsJiYodGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGwpfV9yZWluc2VydEFmdGVyKGMsYSxkKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRz''@;'; put 'put ''JiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKGMpO2NvbnN0IGg9Yy5fcHJldlJlbW92ZWQsZj1jLl9uZXh0UmVtb3ZlZDtyZXR1cm4gbnVsbD09PWg/dGhpcy5fcmVtb3ZhbHNIZWFkPWY6aC5fbmV4dFJlbW92ZWQ9ZixudWxsPT09Zj90aGlzLl9yZW1vdmFsc1RhaWw9aDpmLl9wcmV2''@;'; put 'put ''UmVtb3ZlZD1oLHRoaXMuX2luc2VydEFmdGVyKGMsYSxkKSx0aGlzLl9hZGRUb01vdmVzKGMsZCksY31fbW92ZUFmdGVyKGMsYSxkKXtyZXR1cm4gdGhpcy5fdW5saW5rKGMpLHRoaXMuX2luc2VydEFmdGVyKGMsYSxkKSx0aGlzLl9hZGRUb01vdmVzKGMsZCksY31fYWRkQWZ0ZXIoYyxhLGQp''@;'; put 'put ''e3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcihjLGEsZCksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPWM6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPWMsY31faW5zZXJ0QWZ0ZXIoYyxhLGQpe2NvbnN0IGg9''@;'; put 'put ''bnVsbD09PWE/dGhpcy5faXRIZWFkOmEuX25leHQ7cmV0dXJuIGMuX25leHQ9aCxjLl9wcmV2PWEsbnVsbD09PWg/dGhpcy5faXRUYWlsPWM6aC5fcHJldj1jLG51bGw9PT1hP3RoaXMuX2l0SGVhZD1jOmEuX25leHQ9YyxudWxsPT09dGhpcy5fbGlua2VkUmVjb3JkcyYmKHRoaXMuX2xpbmtl''@;'; put 'put ''ZFJlY29yZHM9bmV3IGduZSksdGhpcy5fbGlua2VkUmVjb3Jkcy5wdXQoYyksYy5jdXJyZW50SW5kZXg9ZCxjfV9yZW1vdmUoYyl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKGMpKX1fdW5saW5rKGMpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9s''@;'; put 'put ''aW5rZWRSZWNvcmRzLnJlbW92ZShjKTtjb25zdCBhPWMuX3ByZXYsZD1jLl9uZXh0O3JldHVybiBudWxsPT09YT90aGlzLl9pdEhlYWQ9ZDphLl9uZXh0PWQsbnVsbD09PWQ/dGhpcy5faXRUYWlsPWE6ZC5fcHJldj1hLGN9X2FkZFRvTW92ZXMoYyxhKXtyZXR1cm4gYy5wcmV2aW91c0luZGV4''@;'; put 'put ''PT09YXx8KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzSGVhZD1jOnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPWMpLGN9X2FkZFRvUmVtb3ZhbHMoYyl7cmV0dXJuIG51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtl''@;'; put 'put ''ZFJlY29yZHM9bmV3IGduZSksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dChjKSxjLmN1cnJlbnRJbmRleD1udWxsLGMuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD1jLGMuX3ByZXZSZW1v''@;'; put 'put ''dmVkPW51bGwpOihjLl9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9YyksY31fYWRkSWRlbnRpdHlDaGFuZ2UoYyxhKXtyZXR1cm4gYy5pdGVtPWEsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFp''@;'; put 'put ''bD1udWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPWM6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPWMsY319Y2xhc3MgJDhle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5pdGVtPWMsdGhpcy50cmFja0J5''@;'; put 'put ''SWQ9YSx0aGlzLmN1cnJlbnRJbmRleD1udWxsLHRoaXMucHJldmlvdXNJbmRleD1udWxsLHRoaXMuX25leHRQcmV2aW91cz1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldkR1cD1udWxsLHRoaXMuX25leHREdXA9bnVsbCx0aGlzLl9wcmV2UmVtb3ZlZD1u''@;'; put 'put ''dWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dEFkZGVkPW51bGwsdGhpcy5fbmV4dE1vdmVkPW51bGwsdGhpcy5fbmV4dElkZW50aXR5Q2hhbmdlPW51bGx9fWNsYXNzIHE4ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2hlYWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9YWRkKGMpe251''@;'; put 'put ''bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9YyxjLl9uZXh0RHVwPW51bGwsYy5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD1jLGMuX3ByZXZEdXA9dGhpcy5fdGFpbCxjLl9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD1jKX1nZXQoYyxhKXtsZXQgZDtm''@;'; put 'put ''b3IoZD10aGlzLl9oZWFkO251bGwhPT1kO2Q9ZC5fbmV4dER1cClpZigobnVsbD09PWF8fGE8PWQuY3VycmVudEluZGV4KSYmT2JqZWN0LmlzKGQudHJhY2tCeUlkLGMpKXJldHVybiBkO3JldHVybiBudWxsfXJlbW92ZShjKXtjb25zdCBhPWMuX3ByZXZEdXAsZD1jLl9uZXh0RHVwO3JldHVy''@;'; put 'put ''biBudWxsPT09YT90aGlzLl9oZWFkPWQ6YS5fbmV4dER1cD1kLG51bGw9PT1kP3RoaXMuX3RhaWw9YTpkLl9wcmV2RHVwPWEsbnVsbD09PXRoaXMuX2hlYWR9fWNsYXNzIGduZXtjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9cHV0KGMpe2NvbnN0IGE9Yy50cmFja0J5SWQ7bGV0IGQ9''@;'; put 'put ''dGhpcy5tYXAuZ2V0KGEpO2R8fChkPW5ldyBxOGUsdGhpcy5tYXAuc2V0KGEsZCkpLGQuYWRkKGMpfWdldChjLGEpe2NvbnN0IGg9dGhpcy5tYXAuZ2V0KGMpO3JldHVybiBoP2guZ2V0KGMsYSk6bnVsbH1yZW1vdmUoYyl7Y29uc3QgYT1jLnRyYWNrQnlJZDtyZXR1cm4gdGhpcy5tYXAuZ2V0''@;'; put 'put ''KGEpLnJlbW92ZShjKSYmdGhpcy5tYXAuZGVsZXRlKGEpLGN9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubWFwLnNpemV9Y2xlYXIoKXt0aGlzLm1hcC5jbGVhcigpfX1mdW5jdGlvbiBtbmUobCxjLGEpe2NvbnN0IGQ9bC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1kKXJldHVybiBk''@;'; put 'put ''O2xldCBoPTA7cmV0dXJuIGEmJmQ8YS5sZW5ndGgmJihoPWFbZF0pLGQrYytofWNsYXNzIHZuZXtjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyhjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIE1hcHx8QkMoYyl9Y3JlYXRlKCl7cmV0dXJuIG5ldyBLOGV9fWNsYXNzIEs4ZXtjb25zdHJ1Y3Rvcigpe3Ro''@;'; put 'put ''aXMuX3JlY29yZHM9bmV3IE1hcCx0aGlzLl9tYXBIZWFkPW51bGwsdGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9wcmV2aW91c01hcEhlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMu''@;'; put 'put ''X2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbH1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNI''@;'; put 'put ''ZWFkfWZvckVhY2hJdGVtKGMpe2xldCBhO2ZvcihhPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0KWMoYSl9Zm9yRWFjaFByZXZpb3VzSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0UHJldmlvdXMpYyhhKX1mb3JFYWNo''@;'; put 'put ''Q2hhbmdlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0Q2hhbmdlZCljKGEpfWZvckVhY2hBZGRlZEl0ZW0oYyl7bGV0IGE7Zm9yKGE9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09YTthPWEuX25leHRBZGRlZCljKGEpfWZvckVhY2hS''@;'; put 'put ''ZW1vdmVkSXRlbShjKXtsZXQgYTtmb3IoYT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWE7YT1hLl9uZXh0UmVtb3ZlZCljKGEpfWRpZmYoYyl7aWYoYyl7aWYoIShjIGluc3RhbmNlb2YgTWFwfHxCQyhjKSkpdGhyb3cgbmV3IFVuKDkwMCwhMSl9ZWxzZSBjPW5ldyBNYXA7cmV0dXJuIHRo''@;'; put 'put ''aXMuY2hlY2soYyk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayhjKXt0aGlzLl9yZXNldCgpO2xldCBhPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNoKGMsKGQsaCk9PntpZihhJiZhLmtleT09PWgpdGhpcy5fbWF5YmVBZGRUb0NoYW5n''@;'; put 'put ''ZXMoYSxkKSx0aGlzLl9hcHBlbmRBZnRlcj1hLGE9YS5fbmV4dDtlbHNle2NvbnN0IGY9dGhpcy5fZ2V0T3JDcmVhdGVSZWNvcmRGb3JLZXkoaCxkKTthPXRoaXMuX2luc2VydEJlZm9yZU9yQXBwZW5kKGEsZil9fSksYSl7YS5fcHJldiYmKGEuX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVt''@;'; put 'put ''b3ZhbHNIZWFkPWE7Zm9yKGxldCBkPWE7bnVsbCE9PWQ7ZD1kLl9uZXh0UmVtb3ZlZClkPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUoZC5rZXkpLGQuX25leHRSZW1vdmVkPWQuX25leHQsZC5wcmV2aW91c1ZhbHVlPWQuY3VycmVu''@;'; put 'put ''dFZhbHVlLGQuY3VycmVudFZhbHVlPW51bGwsZC5fcHJldj1udWxsLGQuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRB''@;'; put 'put ''ZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9X2luc2VydEJlZm9yZU9yQXBwZW5kKGMsYSl7aWYoYyl7Y29uc3QgZD1jLl9wcmV2O3JldHVybiBhLl9uZXh0PWMsYS5fcHJldj1kLGMuX3ByZXY9YSxkJiYoZC5fbmV4dD1hKSxjPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9YSksdGhp''@;'; put 'put ''cy5fYXBwZW5kQWZ0ZXI9YyxjfXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9YSxhLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWEsdGhpcy5fYXBwZW5kQWZ0ZXI9YSxudWxsfV9nZXRPckNyZWF0ZVJlY29yZEZvcktleShj''@;'; put 'put ''LGEpe2lmKHRoaXMuX3JlY29yZHMuaGFzKGMpKXtjb25zdCBoPXRoaXMuX3JlY29yZHMuZ2V0KGMpO3RoaXMuX21heWJlQWRkVG9DaGFuZ2VzKGgsYSk7Y29uc3QgZj1oLl9wcmV2LHY9aC5fbmV4dDtyZXR1cm4gZiYmKGYuX25leHQ9diksdiYmKHYuX3ByZXY9ZiksaC5fbmV4dD1udWxsLGgu''@;'; put 'put ''X3ByZXY9bnVsbCxofWNvbnN0IGQ9bmV3IFg4ZShjKTtyZXR1cm4gdGhpcy5fcmVjb3Jkcy5zZXQoYyxkKSxkLmN1cnJlbnRWYWx1ZT1hLHRoaXMuX2FkZFRvQWRkaXRpb25zKGQpLGR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgYztmb3IodGhpcy5fcHJldmlvdXNNYXBIZWFkPXRo''@;'; put 'put ''aXMuX21hcEhlYWQsYz10aGlzLl9wcmV2aW91c01hcEhlYWQ7bnVsbCE9PWM7Yz1jLl9uZXh0KWMuX25leHRQcmV2aW91cz1jLl9uZXh0O2ZvcihjPXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT1jO2M9Yy5fbmV4dENoYW5nZWQpYy5wcmV2aW91c1ZhbHVlPWMuY3VycmVudFZhbHVlO2Zvcihj''@;'; put 'put ''PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9YztjPWMuX25leHRBZGRlZCljLnByZXZpb3VzVmFsdWU9Yy5jdXJyZW50VmFsdWU7dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlz''@;'; put 'put ''Ll9yZW1vdmFsc0hlYWQ9bnVsbH19X21heWJlQWRkVG9DaGFuZ2VzKGMsYSl7T2JqZWN0LmlzKGEsYy5jdXJyZW50VmFsdWUpfHwoYy5wcmV2aW91c1ZhbHVlPWMuY3VycmVudFZhbHVlLGMuY3VycmVudFZhbHVlPWEsdGhpcy5fYWRkVG9DaGFuZ2VzKGMpKX1fYWRkVG9BZGRpdGlvbnMoYyl7''@;'; put 'put ''bnVsbD09PXRoaXMuX2FkZGl0aW9uc0hlYWQ/dGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPWM6KHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1jLHRoaXMuX2FkZGl0aW9uc1RhaWw9Yyl9X2FkZFRvQ2hhbmdlcyhjKXtudWxsPT09dGhpcy5fY2hhbmdlc0hl''@;'; put 'put ''YWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9YzoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPWMsdGhpcy5fY2hhbmdlc1RhaWw9Yyl9X2ZvckVhY2goYyxhKXtjIGluc3RhbmNlb2YgTWFwP2MuZm9yRWFjaChhKTpPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGQ9''@;'; put 'put ''PmEoY1tkXSxkKSl9fWNsYXNzIFg4ZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmtleT1jLHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRk''@;'; put 'put ''ZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fWZ1bmN0aW9uIF9uZSgpe3JldHVybiBuZXcgWTYoW25ldyBwbmVdKX1sZXQgWTY9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLHByb3ZpZGVkSW46InJv''@;'; put 'put ''b3QiLGZhY3Rvcnk6X25lfSl9Y29uc3RydWN0b3IoYSl7dGhpcy5mYWN0b3JpZXM9YX1zdGF0aWMgY3JlYXRlKGEsZCl7aWYobnVsbCE9ZCl7Y29uc3QgaD1kLmZhY3Rvcmllcy5zbGljZSgpO2E9YS5jb25jYXQoaCl9cmV0dXJuIG5ldyBsKGEpfXN0YXRpYyBleHRlbmQoYSl7cmV0dXJue3By''@;'; put 'put ''b3ZpZGU6bCx1c2VGYWN0b3J5OmQ9PmwuY3JlYXRlKGEsZHx8X25lKCkpLGRlcHM6W1tsLG5ldyB5MSxuZXcgWTBdXX19ZmluZChhKXtjb25zdCBkPXRoaXMuZmFjdG9yaWVzLmZpbmQoaD0+aC5zdXBwb3J0cyhhKSk7aWYobnVsbCE9ZClyZXR1cm4gZDt0aHJvdyBuZXcgVW4oOTAxLCExKX19''@;'; put 'put ''cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIGJuZSgpe3JldHVybiBuZXcgY1MoW25ldyB2bmVdKX1sZXQgY1M9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6Ym5lfSl9Y29uc3RydWN0b3IoYSl7dGhpcy5mYWN0''@;'; put 'put ''b3JpZXM9YX1zdGF0aWMgY3JlYXRlKGEsZCl7aWYoZCl7Y29uc3QgaD1kLmZhY3Rvcmllcy5zbGljZSgpO2E9YS5jb25jYXQoaCl9cmV0dXJuIG5ldyBsKGEpfXN0YXRpYyBleHRlbmQoYSl7cmV0dXJue3Byb3ZpZGU6bCx1c2VGYWN0b3J5OmQ9PmwuY3JlYXRlKGEsZHx8Ym5lKCkpLGRlcHM6''@;'; put 'put ''W1tsLG5ldyB5MSxuZXcgWTBdXX19ZmluZChhKXtjb25zdCBkPXRoaXMuZmFjdG9yaWVzLmZpbmQoaD0+aC5zdXBwb3J0cyhhKSk7aWYoZClyZXR1cm4gZDt0aHJvdyBuZXcgVW4oOTAxLCExKX19cmV0dXJuIGx9KSgpO2NvbnN0IGU3ZT1hbmUobnVsbCwiY29yZSIsW10pO2xldCB0N2U9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IodDQpKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe30pfX1yZXR1cm4gbH0pKCk7''@;'; put 'put ''ZnVuY3Rpb24geDAobCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgbD9sOm51bGwhPWwmJiJmYWxzZSIhPT1sfWZ1bmN0aW9uIGpuZShsKXtjb25zdCBjPWllKG51bGwpO3RyeXtyZXR1cm4gbCgpfWZpbmFsbHl7aWUoYyl9fWxldCBVbmU9bnVsbDtmdW5jdGlvbiBvbSgpe3JldHVybiBVbmV9''@;'; put 'put ''Y2xhc3MgSDdle31jb25zdCB6cz1uZXcgJHIoIiIpO2xldCBJaj0oKCk9PntjbGFzcyBse2hpc3RvcnlHbyhhKXt0aHJvdyBuZXcgRXJyb3IoIiIpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0''@;'; put 'put ''b2tlbjpsLGZhY3Rvcnk6KCk9PlpyKEI3ZSkscHJvdmlkZWRJbjoicGxhdGZvcm0ifSl9fXJldHVybiBsfSkoKTtjb25zdCBWN2U9bmV3ICRyKCIiKTtsZXQgQjdlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBJantjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fZG9jPVpyKHpzKSx0aGlzLl9s''@;'; put 'put ''b2NhdGlvbj13aW5kb3cubG9jYXRpb24sdGhpcy5faGlzdG9yeT13aW5kb3cuaGlzdG9yeX1nZXRCYXNlSHJlZkZyb21ET00oKXtyZXR1cm4gb20oKS5nZXRCYXNlSHJlZih0aGlzLl9kb2MpfW9uUG9wU3RhdGUoYSl7Y29uc3QgZD1vbSgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2Rv''@;'; put 'put ''Yywid2luZG93Iik7cmV0dXJuIGQuYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLGEsITEpLCgpPT5kLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixhKX1vbkhhc2hDaGFuZ2UoYSl7Y29uc3QgZD1vbSgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7''@;'; put 'put ''cmV0dXJuIGQuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsYSwhMSksKCk9PmQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsYSl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5fbG9jYXRpb24ucHJv''@;'; put 'put ''dG9jb2x9Z2V0IGhvc3RuYW1lKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lfWdldCBwb3J0KCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLnBhdGhuYW1lfWdldCBzZWFyY2goKXtyZXR1cm4gdGhpcy5fbG9j''@;'; put 'put ''YXRpb24uc2VhcmNofWdldCBoYXNoKCl7cmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKGEpe3RoaXMuX2xvY2F0aW9uLnBhdGhuYW1lPWF9cHVzaFN0YXRlKGEsZCxoKXt0aGlzLl9oaXN0b3J5LnB1c2hTdGF0ZShhLGQsaCl9cmVwbGFjZVN0YXRlKGEsZCxoKXt0aGlz''@;'; put 'put ''Ll9oaXN0b3J5LnJlcGxhY2VTdGF0ZShhLGQsaCl9Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28oYT0wKXt0aGlzLl9oaXN0b3J5LmdvKGEpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTooKT0+bmV3IGwscHJvdmlkZWRJbjoicGxhdGZvcm0ifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBSaihsLGMpe2lmKDA9''@;'; put 'put ''PWwubGVuZ3RoKXJldHVybiBjO2lmKDA9PWMubGVuZ3RoKXJldHVybiBsO2xldCBhPTA7cmV0dXJuIGwuZW5kc1dpdGgoIi8iKSYmYSsrLGMuc3RhcnRzV2l0aCgiLyIpJiZhKyssMj09YT9sK2Muc3Vic3RyaW5nKDEpOjE9PWE/bCtjOmwrIi8iK2N9ZnVuY3Rpb24gWm5lKGwpe2NvbnN0IGM9''@;'; put 'put ''bC5tYXRjaCgvI3xcP3wkLyksYT1jJiZjLmluZGV4fHxsLmxlbmd0aDtyZXR1cm4gbC5zbGljZSgwLGEtKCIvIj09PWxbYS0xXT8xOjApKStsLnNsaWNlKGEpfWZ1bmN0aW9uIG40KGwpe3JldHVybiBsJiYiPyIhPT1sWzBdPyI/IitsOmx9bGV0IFc2PSgoKT0+e2NsYXNzIGx7aGlzdG9yeUdv''@;'; put 'put ''KGEpe3Rocm93IG5ldyBFcnJvcigiIil9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTooKT0+WnIoV25lKSxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7''@;'; put 'put ''Y29uc3QgWW5lPW5ldyAkcigiIik7bGV0IFduZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgVzZ7Y29uc3RydWN0b3IoYSxkKXtzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249YSx0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSx0aGlzLl9iYXNlSHJlZj1kPz90aGlzLl9wbGF0Zm9ybUxv''@;'; put 'put ''Y2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpPz9acih6cykubG9jYXRpb24/Lm9yaWdpbj8/IiJ9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLmxlbmd0aDspdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucG9wKCkoKX1vblBvcFN0YXRlKGEpe3RoaXMuX3JlbW92''@;'; put 'put ''ZUxpc3RlbmVyRm5zLnB1c2godGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKGEpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKGEpKX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wcmVwYXJlRXh0ZXJuYWxVcmwoYSl7cmV0dXJuIFJqKHRo''@;'; put 'put ''aXMuX2Jhc2VIcmVmLGEpfXBhdGgoYT0hMSl7Y29uc3QgZD10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK240KHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uc2VhcmNoKSxoPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gaCYmYT9gJHtkfSR7aH1gOmR9cHVzaFN0YXRl''@;'; put 'put ''KGEsZCxoLGYpe2NvbnN0IHY9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwoaCtuNChmKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUoYSxkLHYpfXJlcGxhY2VTdGF0ZShhLGQsaCxmKXtjb25zdCB2PXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGgrbjQoZikpO3RoaXMuX3BsYXRm''@;'; put 'put ''b3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKGEsZCx2KX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0U3RhdGUoKX1o''@;'; put 'put ''aXN0b3J5R28oYT0wKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhpc3RvcnlHbz8uKGEpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKElqKSxjcihZbmUsOCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6''@;'; put 'put ''bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpLGo3ZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgVzZ7Y29uc3RydWN0b3IoYSxkKXtzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249YSx0aGlzLl9iYXNlSHJlZj0iIix0aGlzLl9yZW1vdmVMaXN0ZW5lckZu''@;'; put 'put ''cz1bXSxudWxsIT1kJiYodGhpcy5fYmFzZUhyZWY9ZCl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLmxlbmd0aDspdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucG9wKCkoKX1vblBvcFN0YXRlKGEpe3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnB1c2godGhpcy5f''@;'; put 'put ''cGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKGEpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKGEpKX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wYXRoKGE9ITEpe2NvbnN0IGQ9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoPz8iIyI7cmV0dXJu''@;'; put 'put ''IGQubGVuZ3RoPjA/ZC5zdWJzdHJpbmcoMSk6ZH1wcmVwYXJlRXh0ZXJuYWxVcmwoYSl7Y29uc3QgZD1Saih0aGlzLl9iYXNlSHJlZixhKTtyZXR1cm4gZC5sZW5ndGg+MD8iIyIrZDpkfXB1c2hTdGF0ZShhLGQsaCxmKXtsZXQgdj10aGlzLnByZXBhcmVFeHRlcm5hbFVybChoK240KGYpKTsw''@;'; put 'put ''PT12Lmxlbmd0aCYmKHY9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUoYSxkLHYpfXJlcGxhY2VTdGF0ZShhLGQsaCxmKXtsZXQgdj10aGlzLnByZXBhcmVFeHRlcm5hbFVybChoK240KGYpKTswPT12Lmxlbmd0aCYmKHY9''@;'; put 'put ''dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUoYSxkLHYpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9Z2V0U3RhdGUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWhpc3RvcnlHbyhhPTApe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGlzdG9yeUdvPy4oYSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IoSWopLGNyKFluZSw4KSl9''@;'; put 'put ''fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCksbWQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9zdWJqZWN0PW5ldyBEcix0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnM9W10sdGhpcy5fdXJsQ2hh''@;'; put 'put ''bmdlU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fbG9jYXRpb25TdHJhdGVneT1hO2NvbnN0IGQ9dGhpcy5fbG9jYXRpb25TdHJhdGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX2Jhc2VQYXRoPWZ1bmN0aW9uIFo3ZShsKXtpZihuZXcgUmVnRXhwKCJeKGh0dHBzPzopPy8vIikudGVzdChsKSl7Y29u''@;'; put 'put ''c3RbLGFdPWwuc3BsaXQoL1wvXC9bXlwvXSsvKTtyZXR1cm4gYX1yZXR1cm4gbH0oWm5lKEduZShkKSkpLHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kub25Qb3BTdGF0ZShoPT57dGhpcy5fc3ViamVjdC5lbWl0KHt1cmw6dGhpcy5wYXRoKCEwKSxwb3A6ITAsc3RhdGU6aC5zdGF0ZSx0eXBlOmgu''@;'; put 'put ''dHlwZX0pfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzPVtdfXBhdGgoYT0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX2xvY2F0aW9uU3RyYXRlZ3kucGF0aChhKSl9Z2V0U3Rh''@;'; put 'put ''dGUoKXtyZXR1cm4gdGhpcy5fbG9jYXRpb25TdHJhdGVneS5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKGEsZD0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZShhK240KGQpKX1ub3JtYWxpemUoYSl7cmV0dXJuIGwuc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0''@;'; put 'put ''aW9uIFU3ZShsLGMpe2lmKCFsfHwhYy5zdGFydHNXaXRoKGwpKXJldHVybiBjO2NvbnN0IGE9Yy5zdWJzdHJpbmcobC5sZW5ndGgpO3JldHVybiIiPT09YXx8WyIvIiwiOyIsIj8iLCIjIl0uaW5jbHVkZXMoYVswXSk/YTpjfSh0aGlzLl9iYXNlUGF0aCxHbmUoYSkpKX1wcmVwYXJlRXh0ZXJu''@;'; put 'put ''YWxVcmwoYSl7cmV0dXJuIGEmJiIvIiE9PWFbMF0mJihhPSIvIithKSx0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnByZXBhcmVFeHRlcm5hbFVybChhKX1nbyhhLGQ9IiIsaD1udWxsKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnB1c2hTdGF0ZShoLCIiLGEsZCksdGhpcy5fbm90aWZ5VXJsQ2hh''@;'; put 'put ''bmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGErbjQoZCkpLGgpfXJlcGxhY2VTdGF0ZShhLGQ9IiIsaD1udWxsKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShoLCIiLGEsZCksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFy''@;'; put 'put ''ZUV4dGVybmFsVXJsKGErbjQoZCkpLGgpfWZvcndhcmQoKXt0aGlzLl9sb2NhdGlvblN0cmF0ZWd5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5iYWNrKCl9aGlzdG9yeUdvKGE9MCl7dGhpcy5fbG9jYXRpb25TdHJhdGVneS5oaXN0b3J5R28/LihhKX1vblVybENo''@;'; put 'put ''YW5nZShhKXtyZXR1cm4gdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLnB1c2goYSksdGhpcy5fdXJsQ2hhbmdlU3Vic2NyaXB0aW9uPz89dGhpcy5zdWJzY3JpYmUoZD0+e3RoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyhkLnVybCxkLnN0YXRlKX0pLCgpPT57Y29uc3QgZD10aGlzLl91''@;'; put 'put ''cmxDaGFuZ2VMaXN0ZW5lcnMuaW5kZXhPZihhKTt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuc3BsaWNlKGQsMSksMD09PXRoaXMuX3VybENoYW5nZUxpc3RlbmVycy5sZW5ndGgmJih0aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCksdGhpcy5fdXJsQ2hhbmdlU3Vi''@;'; put 'put ''c2NyaXB0aW9uPW51bGwpfX1fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKGE9IiIsZCl7dGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmZvckVhY2goaD0+aChhLGQpKX1zdWJzY3JpYmUoYSxkLGgpe3JldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDphLGVycm9yOmQsY29tcGxl''@;'; put 'put ''dGU6aH0pfXN0YXRpY3t0aGlzLm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zPW40fXN0YXRpY3t0aGlzLmpvaW5XaXRoU2xhc2g9Ump9c3RhdGlje3RoaXMuc3RyaXBUcmFpbGluZ1NsYXNoPVpuZX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcihXNikp''@;'; put 'put ''fX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6KCk9PmZ1bmN0aW9uIHo3ZSgpe3JldHVybiBuZXcgbWQoY3IoVzYpKX0oKSxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gR25lKGwpe3JldHVybiBsLnJlcGxhY2UoL1wvaW5kZXgu''@;'; put 'put ''aHRtbCQvLCIiKX12YXIgd3U9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5Gb3JtYXQ9MF09IkZvcm1hdCIsbFtsLlN0YW5kYWxvbmU9MV09IlN0YW5kYWxvbmUiLGx9KHd1fHx7fSkseGE9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5OYXJyb3c9MF09Ik5hcnJvdyIsbFtsLkFiYnJldmlhdGVkPTFd''@;'; put 'put ''PSJBYmJyZXZpYXRlZCIsbFtsLldpZGU9Ml09IldpZGUiLGxbbC5TaG9ydD0zXT0iU2hvcnQiLGx9KHhhfHx7fSksTDE9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5TaG9ydD0wXT0iU2hvcnQiLGxbbC5NZWRpdW09MV09Ik1lZGl1bSIsbFtsLkxvbmc9Ml09IkxvbmciLGxbbC5GdWxsPTNdPSJG''@;'; put 'put ''dWxsIixsfShMMXx8e30pO2Z1bmN0aW9uIExqKGwsYyxhKXtjb25zdCBkPU0wKGwpLGY9eWgoW2RbY2wuRGF5c0Zvcm1hdF0sZFtjbC5EYXlzU3RhbmRhbG9uZV1dLGMpO3JldHVybiB5aChmLGEpfWZ1bmN0aW9uIE9qKGwsYyxhKXtjb25zdCBkPU0wKGwpLGY9eWgoW2RbY2wuTW9udGhzRm9y''@;'; put 'put ''bWF0XSxkW2NsLk1vbnRoc1N0YW5kYWxvbmVdXSxjKTtyZXR1cm4geWgoZixhKX1mdW5jdGlvbiB5aChsLGMpe2ZvcihsZXQgYT1jO2E+LTE7YS0tKWlmKHR5cGVvZiBsW2FdPCJ1IilyZXR1cm4gbFthXTt0aHJvdyBuZXcgRXJyb3IoIkxvY2FsZSBkYXRhIEFQSTogbG9jYWxlIGRhdGEgdW5k''@;'; put 'put ''ZWZpbmVkIil9ZnVuY3Rpb24gbnJlKGwsYyl7Yz1lbmNvZGVVUklDb21wb25lbnQoYyk7Zm9yKGNvbnN0IGEgb2YgbC5zcGxpdCgiOyIpKXtjb25zdCBkPWEuaW5kZXhPZigiPSIpLFtoLGZdPS0xPT1kP1thLCIiXTpbYS5zbGljZSgwLGQpLGEuc2xpY2UoZCsxKV07aWYoaC50cmltKCk9PT1j''@;'; put 'put ''KXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZil9cmV0dXJuIG51bGx9Y29uc3QgWmo9L1xzKy8scnJlPVtdO2xldCBKYz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5fbmdFbD1hLHRoaXMuX3JlbmRlcmVyPWQsdGhpcy5pbml0aWFsQ2xhc3Nlcz1ycmUsdGhpcy5zdGF0''@;'; put 'put ''ZU1hcD1uZXcgTWFwfXNldCBrbGFzcyhhKXt0aGlzLmluaXRpYWxDbGFzc2VzPW51bGwhPWE/YS50cmltKCkuc3BsaXQoWmopOnJyZX1zZXQgbmdDbGFzcyhhKXt0aGlzLnJhd0NsYXNzPSJzdHJpbmciPT10eXBlb2YgYT9hLnRyaW0oKS5zcGxpdChaaik6YX1uZ0RvQ2hlY2soKXtmb3IoY29u''@;'; put 'put ''c3QgZCBvZiB0aGlzLmluaXRpYWxDbGFzc2VzKXRoaXMuX3VwZGF0ZVN0YXRlKGQsITApO2NvbnN0IGE9dGhpcy5yYXdDbGFzcztpZihBcnJheS5pc0FycmF5KGEpfHxhIGluc3RhbmNlb2YgU2V0KWZvcihjb25zdCBkIG9mIGEpdGhpcy5fdXBkYXRlU3RhdGUoZCwhMCk7ZWxzZSBpZihudWxs''@;'; put 'put ''IT1hKWZvcihjb25zdCBkIG9mIE9iamVjdC5rZXlzKGEpKXRoaXMuX3VwZGF0ZVN0YXRlKGQsISFhW2RdKTt0aGlzLl9hcHBseVN0YXRlRGlmZigpfV91cGRhdGVTdGF0ZShhLGQpe2NvbnN0IGg9dGhpcy5zdGF0ZU1hcC5nZXQoYSk7dm9pZCAwIT09aD8oaC5lbmFibGVkIT09ZCYmKGguY2hh''@;'; put 'put ''bmdlZD0hMCxoLmVuYWJsZWQ9ZCksaC50b3VjaGVkPSEwKTp0aGlzLnN0YXRlTWFwLnNldChhLHtlbmFibGVkOmQsY2hhbmdlZDohMCx0b3VjaGVkOiEwfSl9X2FwcGx5U3RhdGVEaWZmKCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5zdGF0ZU1hcCl7Y29uc3QgZD1hWzBdLGg9YVsxXTtoLmNoYW5n''@;'; put 'put ''ZWQ/KHRoaXMuX3RvZ2dsZUNsYXNzKGQsaC5lbmFibGVkKSxoLmNoYW5nZWQ9ITEpOmgudG91Y2hlZHx8KGguZW5hYmxlZCYmdGhpcy5fdG9nZ2xlQ2xhc3MoZCwhMSksdGhpcy5zdGF0ZU1hcC5kZWxldGUoZCkpLGgudG91Y2hlZD0hMX19X3RvZ2dsZUNsYXNzKGEsZCl7KGE9YS50cmltKCkp''@;'; put 'put ''Lmxlbmd0aD4wJiZhLnNwbGl0KFpqKS5mb3JFYWNoKGg9PntkP3RoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxoKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsaCl9KX1zdGF0aWN7dGhpcy5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSksSmUoZHMpKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsIm5nQ2xhc3MiLCIiXV0saW5wdXRzOntrbGFzczpbam4uTm9uZSwiY2xhc3MiLCJrbGFzcyJdLG5nQ2xhc3M6Im5nQ2xh''@;'; put 'put ''c3MifSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSkoKTtjbGFzcyBBOWV7Y29uc3RydWN0b3IoYyxhLGQsaCl7dGhpcy4kaW1wbGljaXQ9Yyx0aGlzLm5nRm9yT2Y9YSx0aGlzLmluZGV4PWQsdGhpcy5jb3VudD1ofWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFz''@;'; put 'put ''dCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19bGV0IFZzPSgoKT0+e2NsYXNzIGx7c2V0IG5nRm9yT2YoYSl7dGhpcy5fbmdGb3JPZj1hLHRoaXMuX25nRm9yT2ZE''@;'; put 'put ''aXJ0eT0hMH1zZXQgbmdGb3JUcmFja0J5KGEpe3RoaXMuX3RyYWNrQnlGbj1hfWdldCBuZ0ZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fdHJhY2tCeUZufWNvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLl92aWV3Q29udGFpbmVyPWEsdGhpcy5fdGVtcGxhdGU9ZCx0aGlzLl9kaWZmZXJzPWgsdGhp''@;'; put 'put ''cy5fbmdGb3JPZj1udWxsLHRoaXMuX25nRm9yT2ZEaXJ0eT0hMCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdGb3JUZW1wbGF0ZShhKXthJiYodGhpcy5fdGVtcGxhdGU9YSl9bmdEb0NoZWNrKCl7aWYodGhpcy5fbmdGb3JPZkRpcnR5KXt0aGlzLl9uZ0Zvck9mRGlydHk9ITE7Y29uc3QgYT10''@;'; put 'put ''aGlzLl9uZ0Zvck9mOyF0aGlzLl9kaWZmZXImJmEmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKGEpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSkpfWlmKHRoaXMuX2RpZmZlcil7Y29uc3QgYT10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ0Zvck9mKTthJiZ0aGlzLl9hcHBs''@;'; put 'put ''eUNoYW5nZXMoYSl9fV9hcHBseUNoYW5nZXMoYSl7Y29uc3QgZD10aGlzLl92aWV3Q29udGFpbmVyO2EuZm9yRWFjaE9wZXJhdGlvbigoaCxmLHYpPT57aWYobnVsbD09aC5wcmV2aW91c0luZGV4KWQuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyBBOWUoaC5pdGVtLHRo''@;'; put 'put ''aXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT12P3ZvaWQgMDp2KTtlbHNlIGlmKG51bGw9PXYpZC5yZW1vdmUobnVsbD09PWY/dm9pZCAwOmYpO2Vsc2UgaWYobnVsbCE9PWYpe2NvbnN0IFM9ZC5nZXQoZik7ZC5tb3ZlKFMsdiksb3JlKFMsaCl9fSk7Zm9yKGxldCBoPTAsZj1kLmxlbmd0aDto''@;'; put 'put ''PGY7aCsrKXtjb25zdCBTPWQuZ2V0KGgpLmNvbnRleHQ7Uy5pbmRleD1oLFMuY291bnQ9ZixTLm5nRm9yT2Y9dGhpcy5fbmdGb3JPZn1hLmZvckVhY2hJZGVudGl0eUNoYW5nZShoPT57b3JlKGQuZ2V0KGguY3VycmVudEluZGV4KSxoKX0pfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJk''@;'; put 'put ''KGEsZCl7cmV0dXJuITB9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoaHMpLEplKFVhKSxKZShZNikpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmdGb3IiLCIiLCJuZ0Zvck9mIiwiIl1dLGlu''@;'; put 'put ''cHV0czp7bmdGb3JPZjoibmdGb3JPZiIsbmdGb3JUcmFja0J5OiJuZ0ZvclRyYWNrQnkiLG5nRm9yVGVtcGxhdGU6Im5nRm9yVGVtcGxhdGUifSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBvcmUobCxjKXtsLmNvbnRleHQuJGltcGxpY2l0PWMuaXRlbX1sZXQgJGk9''@;'; put 'put ''KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuX3ZpZXdDb250YWluZXI9YSx0aGlzLl9jb250ZXh0PW5ldyBEOWUsdGhpcy5fdGhlblRlbXBsYXRlUmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmPW51bGwsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVmll''@;'; put 'put ''d1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1kfXNldCBuZ0lmKGEpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0PXRoaXMuX2NvbnRleHQubmdJZj1hLHRoaXMuX3VwZGF0ZVZpZXcoKX1zZXQgbmdJZlRoZW4oYSl7c3JlKCJuZ0lmVGhlbiIsYSksdGhpcy5fdGhlblRlbXBsYXRlUmVm''@;'; put 'put ''PWEsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKGEpe3NyZSgibmdJZkVsc2UiLGEpLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj1hLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfV91cGRhdGVWaWV3KCl7dGhpcy5f''@;'; put 'put ''Y29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVk''@;'; put 'put ''Vmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3Zp''@;'; put 'put ''ZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGEsZCl7cmV0dXJuITB9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCko''@;'; put 'put ''SmUoaHMpLEplKFVhKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ0lmIiwiIl1dLGlucHV0czp7bmdJZjoibmdJZiIsbmdJZlRoZW46Im5nSWZUaGVuIixuZ0lmRWxzZToibmdJZkVsc2UifSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSko''@;'; put 'put ''KTtjbGFzcyBEOWV7Y29uc3RydWN0b3IoKXt0aGlzLiRpbXBsaWNpdD1udWxsLHRoaXMubmdJZj1udWxsfX1mdW5jdGlvbiBzcmUobCxjKXtpZihjJiYhYy5jcmVhdGVFbWJlZGRlZFZpZXcpdGhyb3cgbmV3IEVycm9yKGAke2x9IG11c3QgYmUgYSBUZW1wbGF0ZVJlZiwgYnV0IHJlY2VpdmVk''@;'; put 'put ''ICcke19yKGMpfScuYCl9Y2xhc3MgWWp7Y29uc3RydWN0b3IoYyxhKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPWMsdGhpcy5fdGVtcGxhdGVSZWY9YSx0aGlzLl9jcmVhdGVkPSExfWNyZWF0ZSgpe3RoaXMuX2NyZWF0ZWQ9ITAsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRl''@;'; put 'put ''ZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYpfWRlc3Ryb3koKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX1lbmZvcmNlU3RhdGUoYyl7YyYmIXRoaXMuX2NyZWF0ZWQ/dGhpcy5jcmVhdGUoKTohYyYmdGhpcy5fY3JlYXRlZCYmdGhpcy5kZXN0cm95KCl9''@;'; put 'put ''fWxldCB3aD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFZpZXdzPVtdLHRoaXMuX2RlZmF1bHRVc2VkPSExLHRoaXMuX2Nhc2VDb3VudD0wLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITF9c2V0IG5nU3dpdGNoKGEp''@;'; put 'put ''e3RoaXMuX25nU3dpdGNoPWEsMD09PXRoaXMuX2Nhc2VDb3VudCYmdGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCEwKX1fYWRkQ2FzZSgpe3JldHVybiB0aGlzLl9jYXNlQ291bnQrK31fYWRkRGVmYXVsdChhKXt0aGlzLl9kZWZhdWx0Vmlld3MucHVzaChhKX1fbWF0Y2hDYXNlKGEpe2NvbnN0''@;'; put 'put ''IGQ9YT09PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkfHw9ZCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RD''@;'; put 'put ''YXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLGR9X3VwZGF0ZURlZmF1bHRDYXNlcyhhKXtpZih0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoPjAmJmEhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9''@;'; put 'put ''YTtmb3IoY29uc3QgZCBvZiB0aGlzLl9kZWZhdWx0Vmlld3MpZC5lbmZvcmNlU3RhdGUoYSl9fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2gi''@;'; put 'put ''LCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSkoKSxwMz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLm5nU3dpdGNoPWgsaC5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IFlqKGEsZCl9bmdEb0NoZWNrKCl7''@;'; put 'put ''dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhpcy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoaHMpLEplKFVhKSxKZSh3aCw5KSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRp''@;'; put 'put ''cj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9LHN0YW5kYWxvbmU6ITB9KX19cmV0dXJuIGx9KSgpLGxyZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLl9uZ0VsPWEs''@;'; put 'put ''dGhpcy5fZGlmZmVycz1kLHRoaXMuX3JlbmRlcmVyPWgsdGhpcy5fbmdTdHlsZT1udWxsLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ1N0eWxlKGEpe3RoaXMuX25nU3R5bGU9YSwhdGhpcy5fZGlmZmVyJiZhJiYodGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChhKS5jcmVhdGUoKSl9''@;'; put 'put ''bmdEb0NoZWNrKCl7aWYodGhpcy5fZGlmZmVyKXtjb25zdCBhPXRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX25nU3R5bGUpO2EmJnRoaXMuX2FwcGx5Q2hhbmdlcyhhKX19X3NldFN0eWxlKGEsZCl7Y29uc3RbaCxmXT1hLnNwbGl0KCIuIiksdj0tMT09PWguaW5kZXhPZigiLSIpP3ZvaWQgMDpl''@;'; put 'put ''My5EYXNoQ2FzZTtudWxsIT1kP3RoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxoLGY/YCR7ZH0ke2Z9YDpkLHYpOnRoaXMuX3JlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxoLHYpfV9hcHBseUNoYW5nZXMoYSl7YS5m''@;'; put 'put ''b3JFYWNoUmVtb3ZlZEl0ZW0oZD0+dGhpcy5fc2V0U3R5bGUoZC5rZXksbnVsbCkpLGEuZm9yRWFjaEFkZGVkSXRlbShkPT50aGlzLl9zZXRTdHlsZShkLmtleSxkLmN1cnJlbnRWYWx1ZSkpLGEuZm9yRWFjaENoYW5nZWRJdGVtKGQ9PnRoaXMuX3NldFN0eWxlKGQua2V5LGQuY3VycmVudFZh''@;'; put 'put ''bHVlKSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoTmkpLEplKGNTKSxKZShkcykpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmdTdHlsZSIsIiJdXSxpbnB1dHM6e25nU3R5bGU6Im5nU3R5''@;'; put 'put ''bGUifSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSkoKSx2ZD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9YSx0aGlzLl92aWV3UmVmPW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dD1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxl''@;'; put 'put ''dD1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldEluamVjdG9yPW51bGx9bmdPbkNoYW5nZXMoYSl7aWYodGhpcy5fc2hvdWxkUmVjcmVhdGVWaWV3KGEpKXtjb25zdCBkPXRoaXMuX3ZpZXdDb250YWluZXJSZWY7aWYodGhpcy5fdmlld1JlZiYmZC5yZW1vdmUoZC5pbmRleE9mKHRoaXMuX3Zp''@;'; put 'put ''ZXdSZWYpKSwhdGhpcy5uZ1RlbXBsYXRlT3V0bGV0KXJldHVybiB2b2lkKHRoaXMuX3ZpZXdSZWY9bnVsbCk7Y29uc3QgaD10aGlzLl9jcmVhdGVDb250ZXh0Rm9yd2FyZFByb3h5KCk7dGhpcy5fdmlld1JlZj1kLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQsaCx7''@;'; put 'put ''aW5qZWN0b3I6dGhpcy5uZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I/P3ZvaWQgMH0pfX1fc2hvdWxkUmVjcmVhdGVWaWV3KGEpe3JldHVybiEhYS5uZ1RlbXBsYXRlT3V0bGV0fHwhIWEubmdUZW1wbGF0ZU91dGxldEluamVjdG9yfV9jcmVhdGVDb250ZXh0Rm9yd2FyZFByb3h5KCl7cmV0dXJu''@;'; put 'put ''IG5ldyBQcm94eSh7fSx7c2V0OihhLGQsaCk9PiEhdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCYmUmVmbGVjdC5zZXQodGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCxkLGgpLGdldDooYSxkLGgpPT57aWYodGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dClyZXR1cm4gUmVmbGVj''@;'; put 'put ''dC5nZXQodGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCxkLGgpfX0pfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGhzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0''@;'; put 'put ''bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0IixuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3I6Im5nVGVtcGxhdGVPdXRsZXRJbmplY3RvciJ9LHN0YW5kYWxv''@;'; put 'put ''bmU6ITAsZmVhdHVyZXM6W0phXX0pfX1yZXR1cm4gbH0pKCk7Y2xhc3MgTzlle2NyZWF0ZVN1YnNjcmlwdGlvbihjLGEpe3JldHVybiBqbmUoKCk9PmMuc3Vic2NyaWJlKHtuZXh0OmEsZXJyb3I6ZD0+e3Rocm93IGR9fSkpfWRpc3Bvc2UoYyl7am5lKCgpPT5jLnVuc3Vic2NyaWJlKCkpfX1j''@;'; put 'put ''bGFzcyBQOWV7Y3JlYXRlU3Vic2NyaXB0aW9uKGMsYSl7cmV0dXJuIGMudGhlbihhLGQ9Pnt0aHJvdyBkfSl9ZGlzcG9zZShjKXt9fWNvbnN0IEY5ZT1uZXcgUDllLE45ZT1uZXcgTzllO2xldCBwUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX2xhdGVzdFZhbHVlPW51bGws''@;'; put 'put ''dGhpcy5tYXJrRm9yQ2hlY2tPblZhbHVlVXBkYXRlPSEwLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsLHRoaXMuX3N0cmF0ZWd5PW51bGwsdGhpcy5fcmVmPWF9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX2Rpc3Bvc2UoKSx0aGlzLl9yZWY9''@;'; put 'put ''bnVsbH10cmFuc2Zvcm0oYSl7aWYoIXRoaXMuX29iail7aWYoYSl0cnl7dGhpcy5tYXJrRm9yQ2hlY2tPblZhbHVlVXBkYXRlPSExLHRoaXMuX3N1YnNjcmliZShhKX1maW5hbGx5e3RoaXMubWFya0ZvckNoZWNrT25WYWx1ZVVwZGF0ZT0hMH1yZXR1cm4gdGhpcy5fbGF0ZXN0VmFsdWV9cmV0''@;'; put 'put ''dXJuIGEhPT10aGlzLl9vYmo/KHRoaXMuX2Rpc3Bvc2UoKSx0aGlzLnRyYW5zZm9ybShhKSk6dGhpcy5fbGF0ZXN0VmFsdWV9X3N1YnNjcmliZShhKXt0aGlzLl9vYmo9YSx0aGlzLl9zdHJhdGVneT10aGlzLl9zZWxlY3RTdHJhdGVneShhKSx0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fc3Ry''@;'; put 'put ''YXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uKGEsZD0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUoYSxkKSl9X3NlbGVjdFN0cmF0ZWd5KGEpe2lmKGxTKGEpKXJldHVybiBGOWU7aWYoWHRlKGEpKXJldHVybiBOOWU7dGhyb3cgZnVuY3Rpb24gajIobCxjKXtyZXR1cm4gbmV3IFVuKDIxMDAsITEp''@;'; put 'put ''fSgpfV9kaXNwb3NlKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKGEsZCl7YT09PXRoaXMuX29iaiYmKHRoaXMu''@;'; put 'put ''X2xhdGVzdFZhbHVlPWQsdGhpcy5tYXJrRm9yQ2hlY2tPblZhbHVlVXBkYXRlJiZ0aGlzLl9yZWY/Lm1hcmtGb3JDaGVjaygpKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShjYSwxNikpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtu''@;'; put 'put ''YW1lOiJhc3luYyIsdHlwZTpsLHB1cmU6ITEsc3RhbmRhbG9uZTohMH0pfX1yZXR1cm4gbH0pKCksV2o9KCgpPT57Y2xhc3MgbHt0cmFuc2Zvcm0oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEsbnVsbCwyKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhk''@;'; put 'put ''fHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cGlwZT13YSh7bmFtZToianNvbiIsdHlwZTpsLHB1cmU6ITEsc3RhbmRhbG9uZTohMH0pfX1yZXR1cm4gbH0pKCksJEQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmRpZmZlcnM9YSx0aGlzLmtleVZhbHVlcz1bXSx0aGlzLmNvbXBh''@;'; put 'put ''cmVGbj1jcmV9dHJhbnNmb3JtKGEsZD1jcmUpe2lmKCFhfHwhKGEgaW5zdGFuY2VvZiBNYXApJiYib2JqZWN0IiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dGhpcy5kaWZmZXI/Pz10aGlzLmRpZmZlcnMuZmluZChhKS5jcmVhdGUoKTtjb25zdCBoPXRoaXMuZGlmZmVyLmRpZmYoYSksZj1kIT09''@;'; put 'put ''dGhpcy5jb21wYXJlRm47cmV0dXJuIGgmJih0aGlzLmtleVZhbHVlcz1bXSxoLmZvckVhY2hJdGVtKHY9Pnt0aGlzLmtleVZhbHVlcy5wdXNoKGZ1bmN0aW9uIHE5ZShsLGMpe3JldHVybntrZXk6bCx2YWx1ZTpjfX0odi5rZXksdi5jdXJyZW50VmFsdWUpKX0pKSwoaHx8ZikmJih0aGlzLmtl''@;'; put 'put ''eVZhbHVlcy5zb3J0KGQpLHRoaXMuY29tcGFyZUZuPWQpLHRoaXMua2V5VmFsdWVzfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGNTLDE2KSl9fXN0YXRpY3t0aGlzLlx1MDI3NXBpcGU9d2Eoe25hbWU6ImtleXZhbHVlIix0eXBlOmwscHVy''@;'; put 'put ''ZTohMSxzdGFuZGFsb25lOiEwfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBjcmUobCxjKXtjb25zdCBhPWwua2V5LGQ9Yy5rZXk7aWYoYT09PWQpcmV0dXJuIDA7aWYodm9pZCAwPT09YSlyZXR1cm4gMTtpZih2b2lkIDA9PT1kKXJldHVybi0xO2lmKG51bGw9PT1hKXJldHVybiAxO2lmKG51''@;'; put 'put ''bGw9PT1kKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmInN0cmluZyI9PXR5cGVvZiBkKXJldHVybiBhPGQ/LTE6MTtpZigibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgZClyZXR1cm4gYS1kO2lmKCJib29sZWFuIj09dHlwZW9mIGEmJiJib29sZWFuIj09dHlw''@;'; put 'put ''ZW9mIGQpcmV0dXJuIGE8ZD8tMToxO2NvbnN0IGg9U3RyaW5nKGEpLGY9U3RyaW5nKGQpO3JldHVybiBoPT1mPzA6aDxmPy0xOjF9bGV0IG9vPSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3''@;'; put 'put ''NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHt9KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIG1hKGwpe3JldHVybiJicm93c2VyIj09PWx9ZnVuY3Rpb24gZHJlKGwpe3JldHVybiJzZXJ2ZXIiPT09bH1sZXQgbnZlPSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1cHJvdj1pcih7dG9rZW46bCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5tYShacihJbykpP25ldyBydmUoWnIoenMpLHdpbmRvdyk6bmV3IG92ZX0pfX1yZXR1cm4gbH0pKCk7Y2xhc3MgcnZle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5kb2N1bWVudD1jLHRoaXMud2luZG93''@;'; put 'put ''PWEsdGhpcy5vZmZzZXQ9KCk9PlswLDBdfXNldE9mZnNldChjKXt0aGlzLm9mZnNldD1BcnJheS5pc0FycmF5KGMpPygpPT5jOmN9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm5bdGhpcy53aW5kb3cuc2Nyb2xsWCx0aGlzLndpbmRvdy5zY3JvbGxZXX1zY3JvbGxUb1Bvc2l0aW9uKGMpe3Ro''@;'; put 'put ''aXMud2luZG93LnNjcm9sbFRvKGNbMF0sY1sxXSl9c2Nyb2xsVG9BbmNob3IoYyl7Y29uc3QgYT1mdW5jdGlvbiBpdmUobCxjKXtjb25zdCBhPWwuZ2V0RWxlbWVudEJ5SWQoYyl8fGwuZ2V0RWxlbWVudHNCeU5hbWUoYylbMF07aWYoYSlyZXR1cm4gYTtpZigiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''bC5jcmVhdGVUcmVlV2Fsa2VyJiZsLmJvZHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLmJvZHkuYXR0YWNoU2hhZG93KXtjb25zdCBkPWwuY3JlYXRlVHJlZVdhbGtlcihsLmJvZHksTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQpO2xldCBoPWQuY3VycmVudE5vZGU7Zm9yKDtoOyl7Y29uc3QgZj1o''@;'; put 'put ''LnNoYWRvd1Jvb3Q7aWYoZil7Y29uc3Qgdj1mLmdldEVsZW1lbnRCeUlkKGMpfHxmLnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPSIke2N9Il1gKTtpZih2KXJldHVybiB2fWg9ZC5uZXh0Tm9kZSgpfX1yZXR1cm4gbnVsbH0odGhpcy5kb2N1bWVudCxjKTthJiYodGhpcy5zY3JvbGxUb0VsZW1lbnQo''@;'; put 'put ''YSksYS5mb2N1cygpKX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24oYyl7dGhpcy53aW5kb3cuaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbj1jfXNjcm9sbFRvRWxlbWVudChjKXtjb25zdCBhPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD1hLmxlZnQrdGhpcy53aW5kb3cucGFnZVhP''@;'; put 'put ''ZmZzZXQsaD1hLnRvcCt0aGlzLndpbmRvdy5wYWdlWU9mZnNldCxmPXRoaXMub2Zmc2V0KCk7dGhpcy53aW5kb3cuc2Nyb2xsVG8oZC1mWzBdLGgtZlsxXSl9fWNsYXNzIG92ZXtzZXRPZmZzZXQoYyl7fWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuWzAsMF19c2Nyb2xsVG9Qb3NpdGlvbihj''@;'; put 'put ''KXt9c2Nyb2xsVG9BbmNob3IoYyl7fXNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbihjKXt9fWNsYXNzIGhyZXt9Y2xhc3MgTHZlIGV4dGVuZHMgSDdle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnN1cHBvcnRzRE9NRXZlbnRzPSEwfX1jbGFzcyBLaiBleHRlbmRz''@;'; put 'put ''IEx2ZXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshZnVuY3Rpb24gTjdlKGwpe1VuZT8/PWx9KG5ldyBLail9b25BbmRDYW5jZWwoYyxhLGQpe3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoYSxkKSwoKT0+e2MucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGQpfX1kaXNwYXRjaEV2ZW50KGMsYSl7Yy5k''@;'; put 'put ''aXNwYXRjaEV2ZW50KGEpfXJlbW92ZShjKXtjLnBhcmVudE5vZGUmJmMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKX1jcmVhdGVFbGVtZW50KGMsYSl7cmV0dXJuKGE9YXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSkuY3JlYXRlRWxlbWVudChjKX1jcmVhdGVIdG1sRG9jdW1lbnQoKXty''@;'; put 'put ''ZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUiKX1nZXREZWZhdWx0RG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnR9aXNFbGVtZW50Tm9kZShjKXtyZXR1cm4gYy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfWlzU2hhZG93Um9v''@;'; put 'put ''dChjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9Z2V0R2xvYmFsRXZlbnRUYXJnZXQoYyxhKXtyZXR1cm4id2luZG93Ij09PWE/d2luZG93OiJkb2N1bWVudCI9PT1hP2M6ImJvZHkiPT09YT9jLmJvZHk6bnVsbH1nZXRCYXNlSHJlZihjKXtjb25zdCBhPWZ1bmN0aW9u''@;'; put 'put ''IE92ZSgpe3JldHVybiB2Uz12U3x8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpLHZTP3ZTLmdldEF0dHJpYnV0ZSgiaHJlZiIpOm51bGx9KCk7cmV0dXJuIG51bGw9PWE/bnVsbDpmdW5jdGlvbiBQdmUobCl7cmV0dXJuIG5ldyBVUkwobCxkb2N1bWVudC5iYXNlVVJJKS5wYXRobmFt''@;'; put 'put ''ZX0oYSl9cmVzZXRCYXNlRWxlbWVudCgpe3ZTPW51bGx9Z2V0VXNlckFnZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZShjKXtyZXR1cm4gbnJlKGRvY3VtZW50LmNvb2tpZSxjKX19bGV0IHZTPW51bGwsTnZlPSgoKT0+e2NsYXNzIGx7YnVpbGQoKXty''@;'; put 'put ''ZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NvbnN0IFhqPW5ldyAkcigi''@;'; put 'put ''Iik7bGV0IHdyZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5fem9uZT1kLHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luPW5ldyBNYXAsYS5mb3JFYWNoKGg9PntoLm1hbmFnZXI9dGhpc30pLHRoaXMuX3BsdWdpbnM9YS5zbGljZSgpLnJldmVyc2UoKX1hZGRFdmVudExpc3Rl''@;'; put 'put ''bmVyKGEsZCxoKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihkKS5hZGRFdmVudExpc3RlbmVyKGEsZCxoKX1nZXRab25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9X2ZpbmRQbHVnaW5Gb3IoYSl7bGV0IGQ9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KGEpO2lmKGQpcmV0dXJuIGQ7aWYo''@;'; put 'put ''ZD10aGlzLl9wbHVnaW5zLmZpbmQoZj0+Zi5zdXBwb3J0cyhhKSksIWQpdGhyb3cgbmV3IFVuKDUxMDEsITEpO3JldHVybiB0aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5zZXQoYSxkKSxkfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKFhqKSxj''@;'; put 'put ''cihNbykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NsYXNzIENyZXtjb25zdHJ1Y3RvcihjKXt0aGlzLl9kb2M9Y319Y29uc3QgSmo9Im5nLWFwcC1pZCI7bGV0IFNyZT0oKCk9PntjbGFzcyBse2NvbnN0''@;'; put 'put ''cnVjdG9yKGEsZCxoLGY9e30pe3RoaXMuZG9jPWEsdGhpcy5hcHBJZD1kLHRoaXMubm9uY2U9aCx0aGlzLnBsYXRmb3JtSWQ9Zix0aGlzLnN0eWxlUmVmPW5ldyBNYXAsdGhpcy5ob3N0Tm9kZXM9bmV3IFNldCx0aGlzLnN0eWxlTm9kZXNJbkRPTT10aGlzLmNvbGxlY3RTZXJ2ZXJSZW5kZXJl''@;'; put 'put ''ZFN0eWxlcygpLHRoaXMucGxhdGZvcm1Jc1NlcnZlcj1kcmUoZiksdGhpcy5yZXNldEhvc3ROb2RlcygpfWFkZFN0eWxlcyhhKXtmb3IoY29uc3QgZCBvZiBhKTE9PT10aGlzLmNoYW5nZVVzYWdlQ291bnQoZCwxKSYmdGhpcy5vblN0eWxlQWRkZWQoZCl9cmVtb3ZlU3R5bGVzKGEpe2Zvcihj''@;'; put 'put ''b25zdCBkIG9mIGEpdGhpcy5jaGFuZ2VVc2FnZUNvdW50KGQsLTEpPD0wJiZ0aGlzLm9uU3R5bGVSZW1vdmVkKGQpfW5nT25EZXN0cm95KCl7Y29uc3QgYT10aGlzLnN0eWxlTm9kZXNJbkRPTTthJiYoYS5mb3JFYWNoKGQ9PmQucmVtb3ZlKCkpLGEuY2xlYXIoKSk7Zm9yKGNvbnN0IGQgb2Yg''@;'; put 'put ''dGhpcy5nZXRBbGxTdHlsZXMoKSl0aGlzLm9uU3R5bGVSZW1vdmVkKGQpO3RoaXMucmVzZXRIb3N0Tm9kZXMoKX1hZGRIb3N0KGEpe3RoaXMuaG9zdE5vZGVzLmFkZChhKTtmb3IoY29uc3QgZCBvZiB0aGlzLmdldEFsbFN0eWxlcygpKXRoaXMuYWRkU3R5bGVUb0hvc3QoYSxkKX1yZW1vdmVI''@;'; put 'put ''b3N0KGEpe3RoaXMuaG9zdE5vZGVzLmRlbGV0ZShhKX1nZXRBbGxTdHlsZXMoKXtyZXR1cm4gdGhpcy5zdHlsZVJlZi5rZXlzKCl9b25TdHlsZUFkZGVkKGEpe2Zvcihjb25zdCBkIG9mIHRoaXMuaG9zdE5vZGVzKXRoaXMuYWRkU3R5bGVUb0hvc3QoZCxhKX1vblN0eWxlUmVtb3ZlZChhKXtj''@;'; put 'put ''b25zdCBkPXRoaXMuc3R5bGVSZWY7ZC5nZXQoYSk/LmVsZW1lbnRzPy5mb3JFYWNoKGg9PmgucmVtb3ZlKCkpLGQuZGVsZXRlKGEpfWNvbGxlY3RTZXJ2ZXJSZW5kZXJlZFN0eWxlcygpe2NvbnN0IGE9dGhpcy5kb2MuaGVhZD8ucXVlcnlTZWxlY3RvckFsbChgc3R5bGVbJHtKan09IiR7dGhp''@;'; put 'put ''cy5hcHBJZH0iXWApO2lmKGE/Lmxlbmd0aCl7Y29uc3QgZD1uZXcgTWFwO3JldHVybiBhLmZvckVhY2goaD0+e251bGwhPWgudGV4dENvbnRlbnQmJmQuc2V0KGgudGV4dENvbnRlbnQsaCl9KSxkfXJldHVybiBudWxsfWNoYW5nZVVzYWdlQ291bnQoYSxkKXtjb25zdCBoPXRoaXMuc3R5bGVS''@;'; put 'put ''ZWY7aWYoaC5oYXMoYSkpe2NvbnN0IGY9aC5nZXQoYSk7cmV0dXJuIGYudXNhZ2UrPWQsZi51c2FnZX1yZXR1cm4gaC5zZXQoYSx7dXNhZ2U6ZCxlbGVtZW50czpbXX0pLGR9Z2V0U3R5bGVFbGVtZW50KGEsZCl7Y29uc3QgaD10aGlzLnN0eWxlTm9kZXNJbkRPTSxmPWg/LmdldChkKTtpZihm''@;'; put 'put ''Py5wYXJlbnROb2RlPT09YSlyZXR1cm4gaC5kZWxldGUoZCksZi5yZW1vdmVBdHRyaWJ1dGUoSmopLGY7e2NvbnN0IHY9dGhpcy5kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gdGhpcy5ub25jZSYmdi5zZXRBdHRyaWJ1dGUoIm5vbmNlIix0aGlzLm5vbmNlKSx2LnRleHRDb250''@;'; put 'put ''ZW50PWQsdGhpcy5wbGF0Zm9ybUlzU2VydmVyJiZ2LnNldEF0dHJpYnV0ZShKaix0aGlzLmFwcElkKSxhLmFwcGVuZENoaWxkKHYpLHZ9fWFkZFN0eWxlVG9Ib3N0KGEsZCl7Y29uc3QgaD10aGlzLmdldFN0eWxlRWxlbWVudChhLGQpLGY9dGhpcy5zdHlsZVJlZix2PWYuZ2V0KGQpPy5lbGVt''@;'; put 'put ''ZW50czt2P3YucHVzaChoKTpmLnNldChkLHtlbGVtZW50czpbaF0sdXNhZ2U6MX0pfXJlc2V0SG9zdE5vZGVzKCl7Y29uc3QgYT10aGlzLmhvc3ROb2RlczthLmNsZWFyKCksYS5hZGQodGhpcy5kb2MuaGVhZCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXco''@;'; put 'put ''ZHx8bCkoY3IoenMpLGNyKFU5KSxjcihIZyw4KSxjcihJbykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NvbnN0IFFqPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDov''@;'; put 'put ''L3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLG1hdGg6Imh0dHA6Ly93d3cudzMub3Jn''@;'; put 'put ''LzE5OTgvTWF0aE1MLyJ9LGV6PS8lQ09NUCUvZyxqdmU9bmV3ICRyKCIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4hMH0pO2Z1bmN0aW9uIHhyZShsLGMpe3JldHVybiBjLm1hcChhPT5hLnJlcGxhY2UoZXosbCkpfWxldCB0ej0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEs''@;'; put 'put ''ZCxoLGYsdixTLFYsUT1udWxsKXt0aGlzLmV2ZW50TWFuYWdlcj1hLHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1kLHRoaXMuYXBwSWQ9aCx0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3k9Zix0aGlzLmRvYz12LHRoaXMucGxhdGZvcm1JZD1TLHRoaXMubmdab25lPVYsdGhpcy5ub25jZT1R''@;'; put 'put ''LHRoaXMucmVuZGVyZXJCeUNvbXBJZD1uZXcgTWFwLHRoaXMucGxhdGZvcm1Jc1NlcnZlcj1kcmUoUyksdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IG56KGEsdixWLHRoaXMucGxhdGZvcm1Jc1NlcnZlcil9Y3JlYXRlUmVuZGVyZXIoYSxkKXtpZighYXx8IWQpcmV0dXJuIHRoaXMuZGVmYXVs''@;'; put 'put ''dFJlbmRlcmVyO3RoaXMucGxhdGZvcm1Jc1NlcnZlciYmZC5lbmNhcHN1bGF0aW9uPT09ZmEuU2hhZG93RG9tJiYoZD17Li4uZCxlbmNhcHN1bGF0aW9uOmZhLkVtdWxhdGVkfSk7Y29uc3QgaD10aGlzLmdldE9yQ3JlYXRlUmVuZGVyZXIoYSxkKTtyZXR1cm4gaCBpbnN0YW5jZW9mIFRyZT9o''@;'; put 'put ''LmFwcGx5VG9Ib3N0KGEpOmggaW5zdGFuY2VvZiByeiYmaC5hcHBseVN0eWxlcygpLGh9Z2V0T3JDcmVhdGVSZW5kZXJlcihhLGQpe2NvbnN0IGg9dGhpcy5yZW5kZXJlckJ5Q29tcElkO2xldCBmPWguZ2V0KGQuaWQpO2lmKCFmKXtjb25zdCB2PXRoaXMuZG9jLFM9dGhpcy5uZ1pvbmUsVj10''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlcixRPXRoaXMuc2hhcmVkU3R5bGVzSG9zdCxkZT10aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3kscGU9dGhpcy5wbGF0Zm9ybUlzU2VydmVyO3N3aXRjaChkLmVuY2Fwc3VsYXRpb24pe2Nhc2UgZmEuRW11bGF0ZWQ6Zj1uZXcgVHJlKFYsUSxkLHRoaXMuYXBw''@;'; put 'put ''SWQsZGUsdixTLHBlKTticmVhaztjYXNlIGZhLlNoYWRvd0RvbTpyZXR1cm4gbmV3IFl2ZShWLFEsYSxkLHYsUyx0aGlzLm5vbmNlLHBlKTtkZWZhdWx0OmY9bmV3IHJ6KFYsUSxkLGRlLHYsUyxwZSl9aC5zZXQoZC5pZCxmKX1yZXR1cm4gZn1uZ09uRGVzdHJveSgpe3RoaXMucmVuZGVyZXJC''@;'; put 'put ''eUNvbXBJZC5jbGVhcigpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKHdyZSksY3IoU3JlKSxjcihVOSksY3IoanZlKSxjcih6cyksY3IoSW8pLGNyKE1vKSxjcihIZykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZh''@;'; put 'put ''Y3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NsYXNzIG56e2NvbnN0cnVjdG9yKGMsYSxkLGgpe3RoaXMuZXZlbnRNYW5hZ2VyPWMsdGhpcy5kb2M9YSx0aGlzLm5nWm9uZT1kLHRoaXMucGxhdGZvcm1Jc1NlcnZlcj1oLHRoaXMuZGF0YT1PYmplY3QuY3JlYXRlKG51bGwpLHRo''@;'; put 'put ''aXMudGhyb3dPblN5bnRoZXRpY1Byb3BzPSEwLHRoaXMuZGVzdHJveU5vZGU9bnVsbH1kZXN0cm95KCl7fWNyZWF0ZUVsZW1lbnQoYyxhKXtyZXR1cm4gYT90aGlzLmRvYy5jcmVhdGVFbGVtZW50TlMoUWpbYV18fGEsYyk6dGhpcy5kb2MuY3JlYXRlRWxlbWVudChjKX1jcmVhdGVDb21tZW50''@;'; put 'put ''KGMpe3JldHVybiB0aGlzLmRvYy5jcmVhdGVDb21tZW50KGMpfWNyZWF0ZVRleHQoYyl7cmV0dXJuIHRoaXMuZG9jLmNyZWF0ZVRleHROb2RlKGMpfWFwcGVuZENoaWxkKGMsYSl7KEVyZShjKT9jLmNvbnRlbnQ6YykuYXBwZW5kQ2hpbGQoYSl9aW5zZXJ0QmVmb3JlKGMsYSxkKXtjJiYoRXJl''@;'; put 'put ''KGMpP2MuY29udGVudDpjKS5pbnNlcnRCZWZvcmUoYSxkKX1yZW1vdmVDaGlsZChjLGEpe2MmJmMucmVtb3ZlQ2hpbGQoYSl9c2VsZWN0Um9vdEVsZW1lbnQoYyxhKXtsZXQgZD0ic3RyaW5nIj09dHlwZW9mIGM/dGhpcy5kb2MucXVlcnlTZWxlY3RvcihjKTpjO2lmKCFkKXRocm93IG5ldyBV''@;'; put 'put ''bigtNTEwNCwhMSk7cmV0dXJuIGF8fChkLnRleHRDb250ZW50PSIiKSxkfXBhcmVudE5vZGUoYyl7cmV0dXJuIGMucGFyZW50Tm9kZX1uZXh0U2libGluZyhjKXtyZXR1cm4gYy5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUoYyxhLGQsaCl7aWYoaCl7YT1oKyI6IithO2NvbnN0IGY9UWpbaF07''@;'; put 'put ''Zj9jLnNldEF0dHJpYnV0ZU5TKGYsYSxkKTpjLnNldEF0dHJpYnV0ZShhLGQpfWVsc2UgYy5zZXRBdHRyaWJ1dGUoYSxkKX1yZW1vdmVBdHRyaWJ1dGUoYyxhLGQpe2lmKGQpe2NvbnN0IGg9UWpbZF07aD9jLnJlbW92ZUF0dHJpYnV0ZU5TKGgsYSk6Yy5yZW1vdmVBdHRyaWJ1dGUoYCR7ZH06''@;'; put 'put ''JHthfWApfWVsc2UgYy5yZW1vdmVBdHRyaWJ1dGUoYSl9YWRkQ2xhc3MoYyxhKXtjLmNsYXNzTGlzdC5hZGQoYSl9cmVtb3ZlQ2xhc3MoYyxhKXtjLmNsYXNzTGlzdC5yZW1vdmUoYSl9c2V0U3R5bGUoYyxhLGQsaCl7aCYoZTMuRGFzaENhc2V8ZTMuSW1wb3J0YW50KT9jLnN0eWxlLnNldFBy''@;'; put 'put ''b3BlcnR5KGEsZCxoJmUzLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6Yy5zdHlsZVthXT1kfXJlbW92ZVN0eWxlKGMsYSxkKXtkJmUzLkRhc2hDYXNlP2Muc3R5bGUucmVtb3ZlUHJvcGVydHkoYSk6Yy5zdHlsZVthXT0iIn1zZXRQcm9wZXJ0eShjLGEsZCl7bnVsbCE9YyYmKGNbYV09ZCl9''@;'; put 'put ''c2V0VmFsdWUoYyxhKXtjLm5vZGVWYWx1ZT1hfWxpc3RlbihjLGEsZCl7aWYoInN0cmluZyI9PXR5cGVvZiBjJiYhKGM9b20oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLmRvYyxjKSkpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgJHtjfSBmb3IgZXZlbnQg''@;'; put 'put ''JHthfWApO3JldHVybiB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsYSx0aGlzLmRlY29yYXRlUHJldmVudERlZmF1bHQoZCkpfWRlY29yYXRlUHJldmVudERlZmF1bHQoYyl7cmV0dXJuIGE9PntpZigiX19uZ1Vud3JhcF9fIj09PWEpcmV0dXJuIGM7ITE9PT0odGhpcy5w''@;'; put 'put ''bGF0Zm9ybUlzU2VydmVyP3RoaXMubmdab25lLnJ1bkd1YXJkZWQoKCk9PmMoYSkpOmMoYSkpJiZhLnByZXZlbnREZWZhdWx0KCl9fX1mdW5jdGlvbiBFcmUobCl7cmV0dXJuIlRFTVBMQVRFIj09PWwudGFnTmFtZSYmdm9pZCAwIT09bC5jb250ZW50fWNsYXNzIFl2ZSBleHRlbmRzIG56e2Nv''@;'; put 'put ''bnN0cnVjdG9yKGMsYSxkLGgsZix2LFMsVil7c3VwZXIoYyxmLHYsViksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWEsdGhpcy5ob3N0RWw9ZCx0aGlzLnNoYWRvd1Jvb3Q9ZC5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFk''@;'; put 'put ''b3dSb290KTtjb25zdCBRPXhyZShoLmlkLGguc3R5bGVzKTtmb3IoY29uc3QgZGUgb2YgUSl7Y29uc3QgcGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtTJiZwZS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixTKSxwZS50ZXh0Q29udGVudD1kZSx0aGlzLnNoYWRvd1Jvb3QuYXBwZW5k''@;'; put 'put ''Q2hpbGQocGUpfX1ub2RlT3JTaGFkb3dSb290KGMpe3JldHVybiBjPT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OmN9YXBwZW5kQ2hpbGQoYyxhKXtyZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KGMpLGEpfWluc2VydEJlZm9yZShjLGEsZCl7cmV0''@;'; put 'put ''dXJuIHN1cGVyLmluc2VydEJlZm9yZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QoYyksYSxkKX1yZW1vdmVDaGlsZChjLGEpe3JldHVybiBzdXBlci5yZW1vdmVDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QoYyksYSl9cGFyZW50Tm9kZShjKXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290''@;'; put 'put ''KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KGMpKSl9ZGVzdHJveSgpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9fWNsYXNzIHJ6IGV4dGVuZHMgbnp7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyxWKXtzdXBlcihjLGYs''@;'; put 'put ''dixTKSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9YSx0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3k9aCx0aGlzLnN0eWxlcz1WP3hyZShWLGQuc3R5bGVzKTpkLnN0eWxlc31hcHBseVN0eWxlcygpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXModGhpcy5zdHlsZXMpfWRlc3Ry''@;'; put 'put ''b3koKXt0aGlzLnJlbW92ZVN0eWxlc09uQ29tcERlc3Ryb3kmJnRoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVTdHlsZXModGhpcy5zdHlsZXMpfX1jbGFzcyBUcmUgZXh0ZW5kcyByentjb25zdHJ1Y3RvcihjLGEsZCxoLGYsdixTLFYpe2NvbnN0IFE9aCsiLSIrZC5pZDtzdXBlcihjLGEs''@;'; put 'put ''ZCxmLHYsUyxWLFEpLHRoaXMuY29udGVudEF0dHI9ZnVuY3Rpb24genZlKGwpe3JldHVybiJfbmdjb250ZW50LSVDT01QJSIucmVwbGFjZShleixsKX0oUSksdGhpcy5ob3N0QXR0cj1mdW5jdGlvbiBVdmUobCl7cmV0dXJuIl9uZ2hvc3QtJUNPTVAlIi5yZXBsYWNlKGV6LGwpfShRKX1hcHBs''@;'; put 'put ''eVRvSG9zdChjKXt0aGlzLmFwcGx5U3R5bGVzKCksdGhpcy5zZXRBdHRyaWJ1dGUoYyx0aGlzLmhvc3RBdHRyLCIiKX1jcmVhdGVFbGVtZW50KGMsYSl7Y29uc3QgZD1zdXBlci5jcmVhdGVFbGVtZW50KGMsYSk7cmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZShkLHRoaXMuY29udGVudEF0dHIs''@;'; put 'put ''IiIpLGR9fWxldCBXdmU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIENyZXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1zdXBwb3J0cyhhKXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKGEsZCxoKXtyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKGQsaCwhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRM''@;'; put 'put ''aXN0ZW5lcihhLGQsaCl9cmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGQsaCl7cmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLGgpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKHpzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rv''@;'; put 'put ''a2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCk7Y29uc3Qga3JlPVsiYWx0IiwiY29udHJvbCIsIm1ldGEiLCJzaGlmdCJdLEd2ZT17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJceDdmIjoiRGVsZXRlIiwiXHgxYiI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVz''@;'; put 'put ''YzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sJHZlPXthbHQ6bD0+bC5hbHRLZXksY29udHJvbDpsPT5sLmN0cmxL''@;'; put 'put ''ZXksbWV0YTpsPT5sLm1ldGFLZXksc2hpZnQ6bD0+bC5zaGlmdEtleX07bGV0IHF2ZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgQ3Jle2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXN1cHBvcnRzKGEpe3JldHVybiBudWxsIT1sLnBhcnNlRXZlbnROYW1lKGEpfWFkZEV2ZW50TGlzdGVuZXIoYSxk''@;'; put 'put ''LGgpe2NvbnN0IGY9bC5wYXJzZUV2ZW50TmFtZShkKSx2PWwuZXZlbnRDYWxsYmFjayhmLmZ1bGxLZXksaCx0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+b20oKS5vbkFuZENhbmNlbChhLGYuZG9tRXZl''@;'; put 'put ''bnROYW1lLHYpKX1zdGF0aWMgcGFyc2VFdmVudE5hbWUoYSl7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxoPWQuc2hpZnQoKTtpZigwPT09ZC5sZW5ndGh8fCJrZXlkb3duIiE9PWgmJiJrZXl1cCIhPT1oKXJldHVybiBudWxsO2NvbnN0IGY9bC5fbm9ybWFsaXplS2V5KGQu''@;'; put 'put ''cG9wKCkpO2xldCB2PSIiLFM9ZC5pbmRleE9mKCJjb2RlIik7aWYoUz4tMSYmKGQuc3BsaWNlKFMsMSksdj0iY29kZS4iKSxrcmUuZm9yRWFjaChRPT57Y29uc3QgZGU9ZC5pbmRleE9mKFEpO2RlPi0xJiYoZC5zcGxpY2UoZGUsMSksdis9USsiLiIpfSksdis9ZiwwIT1kLmxlbmd0aHx8MD09''@;'; put 'put ''PWYubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IFY9e307cmV0dXJuIFYuZG9tRXZlbnROYW1lPWgsVi5mdWxsS2V5PXYsVn1zdGF0aWMgbWF0Y2hFdmVudEZ1bGxLZXlDb2RlKGEsZCl7bGV0IGg9R3ZlW2Eua2V5XXx8YS5rZXksZj0iIjtyZXR1cm4gZC5pbmRleE9mKCJjb2RlLiIpPi0xJiYo''@;'; put 'put ''aD1hLmNvZGUsZj0iY29kZS4iKSwhKG51bGw9PWh8fCFoKSYmKGg9aC50b0xvd2VyQ2FzZSgpLCIgIj09PWg/aD0ic3BhY2UiOiIuIj09PWgmJihoPSJkb3QiKSxrcmUuZm9yRWFjaCh2PT57diE9PWgmJigwLCR2ZVt2XSkoYSkmJihmKz12KyIuIil9KSxmKz1oLGY9PT1kKX1zdGF0aWMgZXZl''@;'; put 'put ''bnRDYWxsYmFjayhhLGQsaCl7cmV0dXJuIGY9PntsLm1hdGNoRXZlbnRGdWxsS2V5Q29kZShmLGEpJiZoLnJ1bkd1YXJkZWQoKCk9PmQoZikpfX1zdGF0aWMgX25vcm1hbGl6ZUtleShhKXtyZXR1cm4iZXNjIj09PWE/ImVzY2FwZSI6YX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''ZCl7cmV0dXJuIG5ldyhkfHxsKShjcih6cykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NvbnN0IERyZT1be3Byb3ZpZGU6SW8sdXNlVmFsdWU6ImJyb3dzZXIifSx7cHJvdmlkZTpsayx1c2VWYWx1ZTpm''@;'; put 'put ''dW5jdGlvbiBLdmUoKXtLai5tYWtlQ3VycmVudCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6enMsdXNlRmFjdG9yeTpmdW5jdGlvbiBKdmUoKXtyZXR1cm4gZnVuY3Rpb24gUU4obCl7Z3c9bH0oZG9jdW1lbnQpLGRvY3VtZW50fSxkZXBzOltdfV0sUXZlPWFuZShlN2UsImJyb3dzZXIiLERyZSks''@;'; put 'put ''ZV9lPW5ldyAkcigiIiksSXJlPVt7cHJvdmlkZTprRCx1c2VDbGFzczpjbGFzcyBGdmV7YWRkVG9XaW5kb3coYyl7QnMuZ2V0QW5ndWxhclRlc3RhYmlsaXR5PShkLGg9ITApPT57Y29uc3QgZj1jLmZpbmRUZXN0YWJpbGl0eUluVHJlZShkLGgpO2lmKG51bGw9PWYpdGhyb3cgbmV3IFVuKDUx''@;'; put 'put ''MDMsITEpO3JldHVybiBmfSxCcy5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcz0oKT0+Yy5nZXRBbGxUZXN0YWJpbGl0aWVzKCksQnMuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz0oKT0+Yy5nZXRBbGxSb290RWxlbWVudHMoKSxCcy5mcmFtZXdvcmtTdGFiaWxpemVyc3x8KEJzLmZyYW1l''@;'; put 'put ''d29ya1N0YWJpbGl6ZXJzPVtdKSxCcy5mcmFtZXdvcmtTdGFiaWxpemVycy5wdXNoKGQ9Pntjb25zdCBoPUJzLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCk7bGV0IGY9aC5sZW5ndGg7Y29uc3Qgdj1mdW5jdGlvbigpe2YtLSwwPT1mJiZkKCl9O2guZm9yRWFjaChTPT57Uy53aGVuU3Rh''@;'; put 'put ''YmxlKHYpfSl9KX1maW5kVGVzdGFiaWxpdHlJblRyZWUoYyxhLGQpe3JldHVybiBudWxsPT1hP251bGw6Yy5nZXRUZXN0YWJpbGl0eShhKT8/KGQ/b20oKS5pc1NoYWRvd1Jvb3QoYSk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUoYyxhLmhvc3QsITApOnRoaXMuZmluZFRlc3RhYmlsaXR5''@;'; put 'put ''SW5UcmVlKGMsYS5wYXJlbnRFbGVtZW50LCEwKTpudWxsKX19LGRlcHM6W119LHtwcm92aWRlOkt0ZSx1c2VDbGFzczptaixkZXBzOltNbyx2aixrRF19LHtwcm92aWRlOm1qLHVzZUNsYXNzOm1qLGRlcHM6W01vLHZqLGtEXX1dLFJyZT1be3Byb3ZpZGU6RjUsdXNlVmFsdWU6InJvb3QifSx7''@;'; put 'put ''cHJvdmlkZTpmaCx1c2VGYWN0b3J5OmZ1bmN0aW9uIFh2ZSgpe3JldHVybiBuZXcgZmh9LGRlcHM6W119LHtwcm92aWRlOlhqLHVzZUNsYXNzOld2ZSxtdWx0aTohMCxkZXBzOlt6cyxNbyxJb119LHtwcm92aWRlOlhqLHVzZUNsYXNzOnF2ZSxtdWx0aTohMCxkZXBzOlt6c119LHR6LFNyZSx3''@;'; put 'put ''cmUse3Byb3ZpZGU6eDYsdXNlRXhpc3Rpbmc6dHp9LHtwcm92aWRlOmhyZSx1c2VDbGFzczpOdmUsZGVwczpbXX0sW11dO2xldCBMcmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt9c3RhdGljIHdpdGhTZXJ2ZXJUcmFuc2l0aW9uKGEpe3JldHVybntuZ01vZHVsZTpsLHByb3ZpZGVy''@;'; put 'put ''czpbe3Byb3ZpZGU6VTksdXNlVmFsdWU6YS5hcHBJZH1dfX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcihlX2UsMTIpKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe3Byb3Zp''@;'; put 'put ''ZGVyczpbLi4uUnJlLC4uLklyZV0saW1wb3J0czpbb28sdDdlXX0pfX1yZXR1cm4gbH0pKCksdF9lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5fZG9jPWF9Z2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5fZG9jLnRpdGxlfXNldFRpdGxlKGEpe3RoaXMuX2RvYy50aXRsZT1hfHwi''@;'; put 'put ''In1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcih6cykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO1IoMzc0ODIpLFIoODA2''@;'; put 'put ''ODUpO2NvbnN0IGl6PXtmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119fSxIbj17cm9vdFBhcmFtOiIiLGRjTGliOiIiLHhsbWFwczpbXSxlZGl0b3I6e3N0YXJ0dXBTZXQ6ITEsdHJlZU5vZGVM''@;'; put 'put ''aWJyYXJpZXM6W10sbGlic0FuZFRhYmxlczpbXSxsaWJyYXJpZXM6W10sbGlicmFyeToiIix0YWJsZToiIixmaWx0ZXI6e2NvbHM6W10sdmFsczpbXSxncm91cExvZ2ljOiIiLHdoZXJlQ2xhdXNlOiIiLGxpYmRzOiIiLGNsYXVzZXM6W10scXVlcnk6W119fSx2aWV3ZXI6e3N0YXJ0dXBTZXQ6''@;'; put 'put ''ITEsdGFibGVzU2V0OiExLGxpYnJhcmllczpbXSx0YWJsZXM6bnVsbCxsaWJyYXJ5OiIiLHRhYmxlOiIiLGxpYmluZm86W10sbGlicmFyaWVzU2VhcmNoOiIiLGZpbHRlcjp7Y29sczpbXSx2YWxzOltdLGdyb3VwTG9naWM6IiIsd2hlcmVDbGF1c2U6IiIsbGliZHM6IiIsY2xhdXNlczpbXSxx''@;'; put 'put ''dWVyeTpbXX0sY3VycmVudFNlbGVjdGlvbjoiIn0sdmlld2JveGVzOnt9LGxpbmVhZ2U6e2xpYnJhcnlMaXN0OltdLHRhYmxlc0xpc3Q6W10sY29sdW1uc0xpc3Q6W10sbGlicmFyaWVzU2VhcmNoOiIiLGxpYjoiIix0YWJsZToiIixjb2x1bW46IiIsY3VycmVudExpbmVhZ2VQYXRoTGliVGFi''@;'; put 'put ''bGU6IiIsY3VycmVudExpbmVhZ2VQYXRoQ29sdW1uOiIifSxtZXRhZGF0YTp7bWV0YURhdGFMaXN0OnZvaWQgMCxtZXRhRGF0YVNlYXJjaDoiIixtZXRhT2JqZWN0TGlzdDpbXSxtZXRhT2JqZWN0U2VhcmNoOiIiLG1ldGFSZXBvc2l0b3JpZXM6dm9pZCAwLHNlbGVjdGVkUmVwb3NpdG9yeToi''@;'; put 'put ''In0sdml5YUFwaTp7Y29sbGVjdGlvbnNMaXN0OnZvaWQgMCxjb2xsZWN0aW9uc1NlYXJjaDoiIixzZWxlY3RlZFJlcG9zaXRvcnk6IiJ9LHVzZXJuYXY6e3VzZXJMaXN0OnZvaWQgMCx1c2VyU2VhcmNoOiIiLGdyb3VwTGlzdDp2b2lkIDAsZ3JvdXBTZWFyY2g6IiIscm9sZUxpc3Q6dm9pZCAw''@;'; put 'put ''LHJvbGVTZWFyY2g6IiJ9LG9wZXJhdG9yczp7bnVtT3BlcmF0b3JzOlsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkJFVFdFRU4iLCJJTiIsIk5PVCBJTiIsIk5FIl0sY2hhck9wZXJhdG9yczpbIj0iLCI8IiwiPiIsIjw9IiwiPj0iLCJDT05UQUlOUyIsIklOIiwiTk9UIElOIiwiTkUiXX0saGFu''@;'; put 'put ''ZHNvbnRhYmxlOntkYXJrVGFibGVIZWFkZXJDbGFzczoiZGFya1RIIn19O3ZhciBhcz1SKDk3NTg2KSxOcmU9Ui5uKGFzKTtmdW5jdGlvbiBIcmUobCxjKXtzd2l0Y2gobCl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJl''@;'; put 'put ''dHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYSxkKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYSxkLGgpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihhLGQsaCxmKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYSxkLGgsZix2KXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYSxkLGgs''@;'; put 'put ''Zix2LFMpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihhLGQsaCxmLHYsUyxWKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYSxkLGgsZix2LFMsVixRKXtyZXR1cm4gYy5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYSxkLGgsZix2LFMsVixRLGRlKXtyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMTA6cmV0dXJuIGZ1bmN0aW9uKGEsZCxoLGYsdixTLFYsUSxkZSxwZSl7cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gX2FyaXR5IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciBubyBncmVhdGVyIHRoYW4gdGVuIil9fWZ1bmN0aW9uIHNtKGwpe3JldHVybiBudWxsIT1sJiYib2JqZWN0Ij09dHlwZW9mIGwmJiEwPT09''@;'; put 'put ''bFsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIl19ZnVuY3Rpb24gbzQobCl7cmV0dXJuIGZ1bmN0aW9uIGMoYSl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxzbShhKT9jOmwuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBadihsKXtyZXR1cm4gZnVuY3Rpb24gYyhhLGQp''@;'; put 'put ''e3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGM7Y2FzZSAxOnJldHVybiBzbShhKT9jOm80KGZ1bmN0aW9uKGgpe3JldHVybiBsKGEsaCl9KTtkZWZhdWx0OnJldHVybiBzbShhKSYmc20oZCk/YzpzbShhKT9vNChmdW5jdGlvbihoKXtyZXR1cm4gbChoLGQpfSk6c20o''@;'; put 'put ''ZCk/bzQoZnVuY3Rpb24oaCl7cmV0dXJuIGwoYSxoKX0pOmwoYSxkKX19fWZ1bmN0aW9uIFZyZShsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBkPVtdLGg9MCxmPWwsdj0wLFM9ITE7djxjLmxlbmd0aHx8aDxhcmd1bWVudHMubGVuZ3RoOyl7dmFyIFY7djxjLmxlbmd0aCYmKCFz''@;'; put 'put ''bShjW3ZdKXx8aD49YXJndW1lbnRzLmxlbmd0aCk/Vj1jW3ZdOihWPWFyZ3VtZW50c1toXSxoKz0xKSxkW3ZdPVYsc20oVik/Uz0hMDpmLT0xLHYrPTF9cmV0dXJuIVMmJmY8PTA/YS5hcHBseSh0aGlzLGQpOkhyZShNYXRoLm1heCgwLGYpLFZyZShsLGQsYSkpfX1jb25zdCBCcmU9WnYoZnVu''@;'; put 'put ''Y3Rpb24oYyxhKXtyZXR1cm4gMT09PWM/bzQoYSk6SHJlKGMsVnJlKGMsW10sYSkpfSksSkQ9WnYoZnVuY3Rpb24oYyxhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGN8fG51bGwhPWEmJihhLmNvbnN0cnVjdG9yPT09Y3x8Ik9iamVjdCI9PT1jLm5hbWUmJiJvYmplY3QiPT10eXBlb2YgYSl9KTtm''@;'; put 'put ''dW5jdGlvbiBRRChsLGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxsKX12YXIganJlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7Y29uc3QgenJlPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1qcmUuY2FsbChhcmd1bWVu''@;'; put 'put ''dHMpP2Z1bmN0aW9uKGMpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09anJlLmNhbGwoYyl9OmZ1bmN0aW9uKGMpe3JldHVybiBRRCgiY2FsbGVlIixjKX19KCksbF9lPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGMpe3JldHVybiBudWxsIT1jJiZjLmxlbmd0aD49MCYmIltvYmplY3Qg''@;'; put 'put ''QXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKX07ZnVuY3Rpb24gVXJlKGwpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGwpfXZhciBkX2U9bzQoZnVuY3Rpb24oYyl7cmV0dXJuIG51bGwhPWMmJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBjWyJmYW50YXN5LWxhbmQvZW1wdHkiXT9jWyJmYW50YXN5LWxhbmQvZW1wdHkiXSgpOm51bGwhPWMmJm51bGwhPWMuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmNvbnN0cnVjdG9yWyJmYW50YXN5LWxhbmQvZW1wdHkiXT9jLmNvbnN0cnVjdG9yWyJm''@;'; put 'put ''YW50YXN5LWxhbmQvZW1wdHkiXSgpOm51bGwhPWMmJiJmdW5jdGlvbiI9PXR5cGVvZiBjLmVtcHR5P2MuZW1wdHkoKTpudWxsIT1jJiZudWxsIT1jLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgYy5jb25zdHJ1Y3Rvci5lbXB0eT9jLmNvbnN0cnVjdG9yLmVtcHR5KCk6bF9lKGMp''@;'; put 'put ''P1tdOlVyZShjKT8iIjpmdW5jdGlvbiBjX2UobCl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCl9KGMpP3t9OnpyZShjKT9mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCk6ZnVuY3Rpb24gdV9lKGwpe3ZhciBjPU9iamVjdC5w''@;'; put 'put ''cm90b3R5cGUudG9TdHJpbmcuY2FsbChsKTtyZXR1cm4iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iPT09Y3x8IltvYmplY3QgSW50OEFycmF5XSI9PT1jfHwiW29iamVjdCBVaW50OEFycmF5XSI9PT1jfHwiW29iamVjdCBJbnQxNkFycmF5XSI9PT1jfHwiW29iamVjdCBVaW50MTZBcnJh''@;'; put 'put ''eV0iPT09Y3x8IltvYmplY3QgSW50MzJBcnJheV0iPT09Y3x8IltvYmplY3QgVWludDMyQXJyYXldIj09PWN8fCJbb2JqZWN0IEZsb2F0MzJBcnJheV0iPT09Y3x8IltvYmplY3QgRmxvYXQ2NEFycmF5XSI9PT1jfHwiW29iamVjdCBCaWdJbnQ2NEFycmF5XSI9PT1jfHwiW29iamVjdCBCaWdV''@;'; put 'put ''aW50NjRBcnJheV0iPT09Y30oYyk/Yy5jb25zdHJ1Y3Rvci5mcm9tKCIiKTp2b2lkIDB9KTtjb25zdCBoX2U9ZF9lO2Z1bmN0aW9uIFpyZShsKXtmb3IodmFyIGEsYz1bXTshKGE9bC5uZXh0KCkpLmRvbmU7KWMucHVzaChhLnZhbHVlKTtyZXR1cm4gY31mdW5jdGlvbiBZcmUobCxjLGEpe2Zv''@;'; put 'put ''cih2YXIgZD0wLGg9YS5sZW5ndGg7ZDxoOyl7aWYobChjLGFbZF0pKXJldHVybiEwO2QrPTF9cmV0dXJuITF9Y29uc3Qgb3o9ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6ZnVuY3Rpb24gcF9lKGwsYyl7cmV0dXJuIGw9PT1jPzAhPT1sfHwxL2w9PTEvYzpsIT1sJiZj''@;'; put 'put ''IT1jfTt2YXIgZ19lPSF7dG9TdHJpbmc6bnVsbH0ucHJvcGVydHlJc0VudW1lcmFibGUoInRvU3RyaW5nIiksV3JlPVsiY29uc3RydWN0b3IiLCJ2YWx1ZU9mIiwiaXNQcm90b3R5cGVPZiIsInRvU3RyaW5nIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd25Qcm9wZXJ0eSIsInRvTG9j''@;'; put 'put ''YWxlU3RyaW5nIl0sR3JlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksbV9lPWZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDspe2lmKGNbZF09PT1hKXJldHVybiEwO2QrPTF9cmV0dXJuITF9O2NvbnN0ICRy''@;'; put 'put ''ZT1vNCgiZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LmtleXN8fEdyZT9mdW5jdGlvbihjKXtpZihPYmplY3QoYykhPT1jKXJldHVybltdO3ZhciBhLGQsaD1bXSxmPUdyZSYmenJlKGMpO2ZvcihhIGluIGMpUUQoYSxjKSYmKCFmfHwibGVuZ3RoIiE9PWEpJiYoaFtoLmxlbmd0aF09YSk7aWYo''@;'; put 'put ''Z19lKWZvcihkPVdyZS5sZW5ndGgtMTtkPj0wOylRRChhPVdyZVtkXSxjKSYmIW1fZShoLGEpJiYoaFtoLmxlbmd0aF09YSksZC09MTtyZXR1cm4gaH06ZnVuY3Rpb24oYyl7cmV0dXJuIE9iamVjdChjKSE9PWM/W106T2JqZWN0LmtleXMoYyl9KSxxcmU9bzQoZnVuY3Rpb24oYyl7cmV0dXJu''@;'; put 'put ''IG51bGw9PT1jPyJOdWxsIjp2b2lkIDA9PT1jPyJVbmRlZmluZWQiOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKS5zbGljZSg4LC0xKX0pO2Z1bmN0aW9uIEtyZShsLGMsYSxkKXt2YXIgaD1acmUobCk7ZnVuY3Rpb24gdihTLFYpe3JldHVybiBzeihTLFYsYS5zbGljZSgpLGQu''@;'; put 'put ''c2xpY2UoKSl9cmV0dXJuIVlyZShmdW5jdGlvbihTLFYpe3JldHVybiFZcmUodixWLFMpfSxacmUoYyksaCl9ZnVuY3Rpb24gc3oobCxjLGEsZCl7aWYob3oobCxjKSlyZXR1cm4hMDt2YXIgaD1xcmUobCk7aWYoaCE9PXFyZShjKSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbFsi''@;'; put 'put ''ZmFudGFzeS1sYW5kL2VxdWFscyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgY1siZmFudGFzeS1sYW5kL2VxdWFscyJdKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmxbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShjKSYmImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IGNbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSYmY1siZmFudGFzeS1sYW5kL2VxdWFscyJdKGwpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsLmVxdWFsc3x8ImZ1bmN0aW9uIj09dHlwZW9mIGMuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsLmVxdWFscyYmbC5lcXVhbHMoYykmJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBjLmVxdWFscyYmYy5lcXVhbHMobCk7c3dpdGNoKGgpe2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uIGZfZShsKXt2YXIgYz1TdHJp''@;'; put 'put ''bmcobCkubWF0Y2goL15mdW5jdGlvbiAoXHcqKS8pO3JldHVybiBudWxsPT1jPyIiOmNbMV19KGwuY29uc3RydWN0b3IpKXJldHVybiBsPT09YzticmVhaztjYXNlIkJvb2xlYW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6aWYodHlwZW9mIGwhPXR5cGVvZiBjfHwhb3oobC52YWx1ZU9m''@;'; put 'put ''KCksYy52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIW96KGwudmFsdWVPZigpLGMudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gbC5uYW1lPT09Yy5uYW1lJiZsLm1lc3NhZ2U9PT1jLm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGwu''@;'; put 'put ''c291cmNlIT09Yy5zb3VyY2V8fGwuZ2xvYmFsIT09Yy5nbG9iYWx8fGwuaWdub3JlQ2FzZSE9PWMuaWdub3JlQ2FzZXx8bC5tdWx0aWxpbmUhPT1jLm11bHRpbGluZXx8bC5zdGlja3khPT1jLnN0aWNreXx8bC51bmljb2RlIT09Yy51bmljb2RlKXJldHVybiExfWZvcih2YXIgZj1hLmxlbmd0''@;'; put 'put ''aC0xO2Y+PTA7KXtpZihhW2ZdPT09bClyZXR1cm4gZFtmXT09PWM7Zi09MX1zd2l0Y2goaCl7Y2FzZSJNYXAiOnJldHVybiBsLnNpemU9PT1jLnNpemUmJktyZShsLmVudHJpZXMoKSxjLmVudHJpZXMoKSxhLmNvbmNhdChbbF0pLGQuY29uY2F0KFtjXSkpO2Nhc2UiU2V0IjpyZXR1cm4gbC5z''@;'; put 'put ''aXplPT09Yy5zaXplJiZLcmUobC52YWx1ZXMoKSxjLnZhbHVlcygpLGEuY29uY2F0KFtsXSksZC5jb25jYXQoW2NdKSk7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjpjYXNlIkJvb2xlYW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6Y2FzZSJEYXRlIjpjYXNl''@;'; put 'put ''IkVycm9yIjpjYXNlIlJlZ0V4cCI6Y2FzZSJJbnQ4QXJyYXkiOmNhc2UiVWludDhBcnJheSI6Y2FzZSJVaW50OENsYW1wZWRBcnJheSI6Y2FzZSJJbnQxNkFycmF5IjpjYXNlIlVpbnQxNkFycmF5IjpjYXNlIkludDMyQXJyYXkiOmNhc2UiVWludDMyQXJyYXkiOmNhc2UiRmxvYXQzMkFycmF5''@;'; put 'put ''IjpjYXNlIkZsb2F0NjRBcnJheSI6Y2FzZSJBcnJheUJ1ZmZlciI6YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX12YXIgdj0kcmUobCk7aWYodi5sZW5ndGghPT0kcmUoYykubGVuZ3RoKXJldHVybiExO3ZhciBTPWEuY29uY2F0KFtsXSksVj1kLmNvbmNhdChbY10pO2ZvcihmPXYubGVuZ3RoLTE7''@;'; put 'put ''Zj49MDspe3ZhciBRPXZbZl07aWYoIVFEKFEsYyl8fCFzeihjW1FdLGxbUV0sUyxWKSlyZXR1cm4hMTtmLT0xfXJldHVybiEwfWNvbnN0IHlfZT1adihmdW5jdGlvbihjLGEpe3JldHVybiBzeihjLGEsW10sW10pfSksWHJlPW80KGZ1bmN0aW9uKGMpe3JldHVybiBudWxsIT1jJiZ5X2UoYyxo''@;'; put 'put ''X2UoYykpfSk7ZnVuY3Rpb24gYlMobCl7cmV0dXJuIG51bGw9PWx9ZnVuY3Rpb24gYW0obCl7cmV0dXJuIGJTKGwpfHxYcmUobCl9ZnVuY3Rpb24gYXoobCl7cmV0dXJuIEpEKFN0cmluZyxsKX1mdW5jdGlvbiBlSShsKXtyZXR1cm4gSkQoT2JqZWN0LGwpfWZ1bmN0aW9uIFFyZShsKXtyZXR1''@;'; put 'put ''cm4gSkQoTWFwLGwpfWZ1bmN0aW9uIGVpZShsLGMpe3JldHVybiBsIT09Y31mdW5jdGlvbiB0aWUobCxjKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkobCk9PT1KU09OLnN0cmluZ2lmeShjKX1mdW5jdGlvbiBuaWUobCl7Y29uc3QgYz1uZXcgTWFwO2Zvcihjb25zdFthLGRdb2YgbClRcmUoZCk/''@;'; put 'put ''Yy5zZXQoYSxuaWUoZCkpOmMuc2V0KGEsZCk7cmV0dXJuIGN9ZnVuY3Rpb24gRV9lKGwpe3N3aXRjaCghMCl7Y2FzZSBRcmUobCk6cmV0dXJuIG5pZShsKTtjYXNlIGVJKGwpJiYhQXJyYXkuaXNBcnJheShsKTpyZXR1cm4gRzYoe30sbCk7ZGVmYXVsdDpyZXR1cm4gSlNPTi5wYXJzZShKU09O''@;'; put 'put ''LnN0cmluZ2lmeShsKSl9fWZ1bmN0aW9uIEc2KC4uLmwpe2NvbnN0IGM9e307cmV0dXJuIGwubWFwKGE9PmVJKGEpP3suLi5hfTp7fSkuZm9yRWFjaChhPT57T2JqZWN0LmtleXMoYSkuZm9yRWFjaChkPT57Y29uc3QgaD1hW2RdO2NbZF09QXJyYXkuaXNBcnJheShoKT9BcnJheS5mcm9tKGgp''@;'; put 'put ''OmVJKGgpP0c2KGNbZF18fHt9LGgpOmh9KX0pLGN9ZnVuY3Rpb24gaWllKGw9d2luZG93KXtyZXR1cm4hYlMobCl9Y29uc3QgUl9lPU51bWJlci5pc0ludGVnZXJ8fGZ1bmN0aW9uKGMpe3JldHVybigwfGMpPT09Y30sT19lPVp2KGZ1bmN0aW9uKGMsYSl7dmFyIGQ9YzwwP2EubGVuZ3RoK2M6''@;'; put 'put ''YztyZXR1cm4gVXJlKGEpP2EuY2hhckF0KGQpOmFbZF19KSxGX2U9WnYoZnVuY3Rpb24oYyxhKXtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZCl7Zm9yKHZhciB2LGg9YSxmPTA7ZjxkLmxlbmd0aDspe2lmKG51bGw9PWgpcmV0dXJuO2g9Ul9lKHY9ZFtmXSk/T19lKHYsaCk6aFt2XSxmKz0xfXJl''@;'; put 'put ''dHVybiBofSl9KSxIX2U9WnYoZnVuY3Rpb24oYyxhKXtyZXR1cm4gRl9lKFtjXSxhKVswXX0pLEJfZT1CcmUoMiwobCxjKT0+dm9pZCAwIT09SF9lKGwsYykpLG9pZT1CX2UoeyJAQGZ1bmN0aW9uYWwvcGxhY2Vob2xkZXIiOiEwfSx3aW5kb3cpO2xldCB0SSxzaWUsbHosY3o7ZnVuY3Rpb24g''@;'; put 'put ''YWllKGw9ITApe2lmKCFsfHwhdEkpe2NvbnN0IGM9ZG9jdW1lbnQmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltuZy12ZXJzaW9uXSIpO3RJPWM/IiIrYy5nZXRBdHRyaWJ1dGUoIm5nLXZlcnNpb24iKTp2b2lkIDB9cmV0dXJuIHRJfWZ1bmN0aW9uIHpfZShsPSEwKXtyZXR1cm4gbCYmdEl8''@;'; put 'put ''fChzaWU9d2luZG93Py5hbmd1bGFyPy52ZXJzaW9uPy5mdWxsKSxzaWV9ZnVuY3Rpb24gbGllKGw9ITApe3JldHVybiBsJiZsenx8KGx6PXdpbmRvdz8uQ0RTPy5fcmVhY3Q/LnZlcnNpb24/d2luZG93LkNEUy5fcmVhY3QudmVyc2lvbjpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1y''@;'; put 'put ''ZWFjdHJvb3RdLCBbZGF0YS1yZWFjdGlkXSIpPyJ1bmtub3duIHZlcnNpb24iOnZvaWQgMCksbHp9ZnVuY3Rpb24gY2llKGw9ITApe2lmKCFsfHwhY3ope2NvbnN0IGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiKiIpO2xldCBhO2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKGNb''@;'; put 'put ''ZF0uX192dWVfXyl7YT1jW2RdO2JyZWFrfWN6PWE/InVua25vd24gdmVyc2lvbiI6dm9pZCAwfXJldHVybiBjen1mdW5jdGlvbiAkNihsKXtyZXR1cm4gbC5yZXBsYWNlKC9bQS1aXS9nLGM9PiItIitjLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGhpZShsKXtyZXR1cm4gbC5jaGFyQXQoMCku''@;'; put 'put ''dG9VcHBlckNhc2UoKStsLnNsaWNlKDEpfWNvbnN0IHFfZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXtpZih0aGlzLnN1cHBvcnRzPXtqczohMH0sIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCJjZHMtc3VwcG9ydHMiKXx8Im5vLWpzIj09PWRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRl''@;'; put 'put ''KCJjZHMtc3VwcG9ydHMiKSl7Y29uc3QgbD0kNihPYmplY3Qua2V5cyh0aGlzLnN1cHBvcnRzKS5yZWR1Y2UoKGMsYSk9PmAke2N9ICR7dGhpcy5zdXBwb3J0c1thXT9hOiJuby0iK2F9YCwiIikpLnRyaW0oKTtkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgiY2RzLXN1cHBvcnRzIixsKX19''@;'; put 'put ''fTtjbGFzcyBxNntzdGF0aWMgbG9nKC4uLmMpe2h6KCkmJmR6KCkmJmNvbnNvbGUubG9nKC4uLmMpfXN0YXRpYyB3YXJuKC4uLmMpe2h6KCkmJmR6KCkmJmNvbnNvbGUud2FybiguLi5jKX1zdGF0aWMgZXJyb3IoLi4uYyl7aHooKSYmZHooKSYmY29uc29sZS5lcnJvciguLi5jKX19ZnVuY3Rp''@;'; put 'put ''b24gZHooKXtyZXR1cm4hb2llKFsiamFzbWluZSJdKX1mdW5jdGlvbiBoeigpe3JldHVybiF3aW5kb3cuQ0RTLmVudmlyb25tZW50LnByb2R1Y3Rpb259ZnVuY3Rpb24gZ2llKCl7aWllKCkmJih3aW5kb3cuQ0RTPXdpbmRvdy5DRFN8fHtfdmVyc2lvbjpbXSxfcmVhY3Q6e3ZlcnNpb246dm9p''@;'; put 'put ''ZCAwfSxfc3VwcG9ydHM6cV9lLnN1cHBvcnRzLF9pc1N0YXRlUHJveGllZDohMSxfc3RhdGU6e2ZvY3VzVHJhcEl0ZW1zOltdLGxheWVyRWxlbWVudHM6W10saTE4blJlZ2lzdHJ5Ont9LGVsZW1lbnRSZWdpc3RyeTp7fSxpY29uUmVnaXN0cnk6e30sbW90aW9uUmVnaXN0cnk6e319LGVudmly''@;'; put 'put ''b25tZW50Ontwcm9kdWN0aW9uOiExfSxnZXREZXRhaWxzOm1pZSxsb2dEZXRhaWxzOktfZX0sZnVuY3Rpb24oKXtjb25zdCBsPSI2LjEyLjAiO3dpbmRvdy5DRFMuX3ZlcnNpb24uaW5kZXhPZihsKTwwJiYod2luZG93LkNEUy5fdmVyc2lvbi5wdXNoKGwpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0''@;'; put 'put ''b3IoImJvZHkiKT8uc2V0QXR0cmlidXRlKCJjZHMtdmVyc2lvbiIsd2luZG93LkNEUy5fdmVyc2lvbi5qb2luKCIgIikpKSx3aW5kb3cuQ0RTLl92ZXJzaW9uLmxlbmd0aD4xJiZxNi53YXJuKCJSdW5uaW5nIG1vcmUgdGhhbiBvbmUgdmVyc2lvbiBvZiBDbGFyaXR5IGNhbiBjYXVzZSB1bmV4''@;'; put 'put ''cGVjdGVkIGlzc3Vlcy4gUGxlYXNlIGVuc3VyZSBvbmx5IG9uZSB2ZXJzaW9uIGlzIGxvYWRlZC4iKX0oKSx3aW5kb3cuQ0RTLl9pc1N0YXRlUHJveGllZHx8KHdpbmRvdy5DRFMuX2lzU3RhdGVQcm94aWVkPSEwLHdpbmRvdy5DRFMuX3N0YXRlPW5ldyBQcm94eSh3aW5kb3cuQ0RTLl9zdGF0''@;'; put 'put ''ZSx7c2V0OihsLGMsYSk9Pntjb25zdCBkPXtrZXk6YyxwcmV2OndpbmRvdy5DRFMuX3N0YXRlW2NdLGN1cnJlbnQ6YX07cmV0dXJuIGxbY109YSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiQ0RTX1NUQVRFX1VQREFURSIse2RldGFpbDpkfSkpLCEwfX0pKSl9ZnVu''@;'; put 'put ''Y3Rpb24gbWllKCl7cmV0dXJue3ZlcnNpb25zOndpbmRvdy5DRFMuX3ZlcnNpb24sZW52aXJvbm1lbnQ6d2luZG93LkNEUy5lbnZpcm9ubWVudCx1c2VyQWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdXBwb3J0czp3aW5kb3cuQ0RTLl9zdXBwb3J0cyxhbmd1bGFyVmVyc2lvbjphaWUoITEp''@;'; put 'put ''LGFuZ3VsYXJKU1ZlcnNpb246el9lKCExKSxyZWFjdFZlcnNpb246bGllKCExKSx2dWVWZXJzaW9uOmNpZSghMSksc3RhdGU6ey4uLndpbmRvdy5DRFMuX3N0YXRlLGljb25SZWdpc3RyeTpPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5pY29uUmVnaXN0cnkpLG1vdGlvblJlZ2lzdHJ5''@;'; put 'put ''Ok9iamVjdC5rZXlzKHdpbmRvdy5DRFMuX3N0YXRlLm1vdGlvblJlZ2lzdHJ5KSxmb2N1c1RyYXBSZWdpc3RyeTpPYmplY3Qua2V5cyh3aW5kb3cuQ0RTLl9zdGF0ZS5mb2N1c1RyYXBJdGVtcy5tYXAobD0+bC5mb2N1c1RyYXBJZCkpfX19ZnVuY3Rpb24gS19lKCl7cTYubG9nKEpTT04uc3Ry''@;'; put 'put ''aW5naWZ5KG1pZSgpLG51bGwsMikpfWNvbnN0IFhfZT1CcmUoMywobCxjLGEpPT57IWZ1bmN0aW9uIGpfZShsLGMpe3JldHVybiBjfHwoYz13aW5kb3cmJndpbmRvdy5jdXN0b21FbGVtZW50cyksIWN8fCEhYy5nZXQobCl9KGwpfHxmdW5jdGlvbiBVX2UoKXtyZXR1cm4gd2luZG93Py5sb2Nh''@;'; put 'put ''dGlvbj8uaHJlZj8uaW5jbHVkZXMoImxvY2FsaG9zdDo2MDA2Iil9KCk/KGEuZGVmaW5lKGwsYyksZ2llKCksd2luZG93JiYhT2JqZWN0LmtleXMod2luZG93LkNEUy5fc3RhdGUuZWxlbWVudFJlZ2lzdHJ5KS5zb21lKGQ9PmQ9PT1sKSYmKHdpbmRvdy5DRFMuX3N0YXRlLmVsZW1lbnRSZWdp''@;'; put 'put ''c3RyeT17Li4ud2luZG93LkNEUy5fc3RhdGUuZWxlbWVudFJlZ2lzdHJ5LFtsXTp7fX0pKTpxNi53YXJuKGwrIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiKX0pO2Z1bmN0aW9uIHZpZShsLGMpe2lpZSgpJiZvaWUoWyJjdXN0b21FbGVtZW50cyJdKSYmWF9lKGwsYyx3aW5kb3cuY3Vz''@;'; put 'put ''dG9tRWxlbWVudHMpfWZ1bmN0aW9uIF9sKGwsYyxhLGQpe3ZhciB2LGg9YXJndW1lbnRzLmxlbmd0aCxmPWg8Mz9jOm51bGw9PT1kP2Q9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGEpOmQ7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''UmVmbGVjdC5kZWNvcmF0ZSlmPVJlZmxlY3QuZGVjb3JhdGUobCxjLGEsZCk7ZWxzZSBmb3IodmFyIFM9bC5sZW5ndGgtMTtTPj0wO1MtLSkodj1sW1NdKSYmKGY9KGg8Mz92KGYpOmg+Mz92KGMsYSxmKTp2KGMsYSkpfHxmKTtyZXR1cm4gaD4zJiZmJiZPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''YyxhLGYpLGZ9ZnVuY3Rpb24gbG0obCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBsbT8odGhpcy52PWwsdGhpcyk6bmV3IGxtKGwpfWZ1bmN0aW9uIHdpZShsKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90''@;'; put 'put ''IGRlZmluZWQuIik7dmFyIGEsYz1sW1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gYz9jLmNhbGwobCk6KGw9ZnVuY3Rpb24gbXoobCl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGE9YyYmbFtjXSxkPTA7aWYoYSlyZXR1cm4gYS5jYWxsKGwp''@;'; put 'put ''O2lmKGwmJiJudW1iZXIiPT10eXBlb2YgbC5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbCYmZD49bC5sZW5ndGgmJihsPXZvaWQgMCkse3ZhbHVlOmwmJmxbZCsrXSxkb25lOiFsfX19O3Rocm93IG5ldyBUeXBlRXJyb3IoYz8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4i''@;'; put 'put ''OiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9KGwpLGE9e30sZCgibmV4dCIpLGQoInRocm93IiksZCgicmV0dXJuIiksYVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sYSk7ZnVuY3Rpb24gZChmKXthW2ZdPWxbZl0mJmZ1bmN0aW9uKHYp''@;'; put 'put ''e3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihTLFYpeyFmdW5jdGlvbiBoKGYsdixTLFYpe1Byb21pc2UucmVzb2x2ZShWKS50aGVuKGZ1bmN0aW9uKFEpe2Yoe3ZhbHVlOlEsZG9uZTpTfSl9LHYpfShTLFYsKHY9bFtmXSh2KSkuZG9uZSx2LnZhbHVlKX0pfX19ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN1cHByZXNzZWRFcnJvciYmU3VwcHJlc3NlZEVycm9yO2xldCBDaWU9ITE7ZnVuY3Rpb24gX2JlKGwpe2lmKChsPU1hdGgudHJ1bmMobCl8fDApPDAmJihsKz10aGlzLmxlbmd0aCksIShsPDB8fGw+PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpc1tsXX1pZighQ2llKXtDaWU9ITA7Y29u''@;'; put 'put ''c3QgbD1SZWZsZWN0LmdldFByb3RvdHlwZU9mKEludDhBcnJheSk7Zm9yKGNvbnN0IGMgb2ZbQXJyYXksU3RyaW5nLGxdKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSwiYXQiLHt2YWx1ZTpfYmUsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KX1s''@;'; put 'put ''ZXQgU2llPSExLE1pZT0hMTtmdW5jdGlvbiB4aWUobCxjLGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGEse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0F0dHJpYnV0ZShjKT90aGlzLmdldEF0dHJpYnV0ZShjKTpudWxsfSxz''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oZCl7bnVsbCE9PWQ/dGhpcy5zZXRBdHRyaWJ1dGUoYyxkKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZShjKX19KX1TaWV8fEVsZW1lbnQucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJyb2xlIil8fCh4aWUoRWxlbWVudC5wcm90b3R5cGUsInJvbGUiLCJyb2xlIiksU2llPSEw''@;'; put 'put ''KSxNaWV8fEVsZW1lbnQucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJhcmlhTGFiZWwiKXx8KE1pZT0hMCxbIkFjdGl2ZURlc2NlbmRhbnQiLCJBdG9taWMiLCJBdXRvQ29tcGxldGUiLCJCdXN5IiwiQ2hlY2tlZCIsIkNvbENvdW50IiwiQ29sSW5kZXgiLCJDb2xTcGFuIiwiQ29udHJvbHMi''@;'; put 'put ''LCJDdXJyZW50IiwiRGVzY3JpYmVkQnkiLCJEZXRhaWxzIiwiRGlzYWJsZWQiLCJFcnJvck1lc3NhZ2UiLCJFeHBhbmRlZCIsIkZsb3dUbyIsIkhhc1BvcHVwIiwiSGlkZGVuIiwiSW52YWxpZCIsIktleVNob3J0Y3V0cyIsIkxhYmVsIiwiTGFiZWxsZWRCeSIsIkxldmVsIiwiTGl2ZSIsIk1v''@;'; put 'put ''ZGFsIiwiTXVsdGlMaW5lIiwiTXVsdGlTZWxlY3RhYmxlIiwiT3JpZW50YXRpb24iLCJPd25zIiwiUGxhY2Vob2xkZXIiLCJQb3NJblNldCIsIlByZXNzZWQiLCJSZWFkT25seSIsIlJlbGV2YW50IiwiUmVxdWlyZWQiLCJSb2xlRGVzY3JpcHRpb24iLCJSb3dDb3VudCIsIlJvd0luZGV4Iiwi''@;'; put 'put ''Um93U3BhbiIsIlNlbGVjdGVkIiwiU2V0U2l6ZSIsIlNvcnQiLCJWYWx1ZU1heCIsIlZhbHVlTWluIiwiVmFsdWVOb3ciLCJWYWx1ZVRleHQiXS5mb3JFYWNoKGw9PnhpZShFbGVtZW50LnByb3RvdHlwZSwiYXJpYS0iK2wudG9Mb3dlckNhc2UoKSwiYXJpYSIrbCkpKTtjb25zdCBuST13aW5k''@;'; put 'put ''b3csdno9bkkuU2hhZG93Um9vdCYmKHZvaWQgMD09PW5JLlNoYWR5Q1NTfHxuSS5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsX3o9U3ltYm9sKCksRWll''@;'; put 'put ''PW5ldyBXZWFrTWFwO2NsYXNzIFRpZXtjb25zdHJ1Y3RvcihjLGEsZCl7aWYodGhpcy5fJGNzc1Jlc3VsdCQ9ITAsZCE9PV96KXRocm93IEVycm9yKCJDU1NSZXN1bHQgaXMgbm90IGNvbnN0cnVjdGFibGUuIFVzZSBgdW5zYWZlQ1NTYCBvciBgY3NzYCBpbnN0ZWFkLiIpO3RoaXMuY3NzVGV4''@;'; put 'put ''dD1jLHRoaXMudD1hfWdldCBzdHlsZVNoZWV0KCl7bGV0IGM9dGhpcy5vO2NvbnN0IGE9dGhpcy50O2lmKHZ6JiZ2b2lkIDA9PT1jKXtjb25zdCBkPXZvaWQgMCE9PWEmJjE9PT1hLmxlbmd0aDtkJiYoYz1FaWUuZ2V0KGEpKSx2b2lkIDA9PT1jJiYoKHRoaXMubz1jPW5ldyBDU1NTdHlsZVNo''@;'; put 'put ''ZWV0KS5yZXBsYWNlU3luYyh0aGlzLmNzc1RleHQpLGQmJkVpZS5zZXQoYSxjKSl9cmV0dXJuIGN9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jc3NUZXh0fX1jb25zdCBiej0obCwuLi5jKT0+e2NvbnN0IGE9MT09PWwubGVuZ3RoP2xbMF06Yy5yZWR1Y2UoKGQsaCxmKT0+ZCsodj0+e2lmKCEw''@;'; put 'put ''PT09di5fJGNzc1Jlc3VsdCQpcmV0dXJuIHYuY3NzVGV4dDtpZigibnVtYmVyIj09dHlwZW9mIHYpcmV0dXJuIHY7dGhyb3cgRXJyb3IoIlZhbHVlIHBhc3NlZCB0byAnY3NzJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2NzcycgZnVuY3Rpb24gcmVzdWx0OiAiK3YrIi4gVXNlICd1bnNhZmVDU1Mn''@;'; put 'put ''IHRvIHBhc3Mgbm9uLWxpdGVyYWwgdmFsdWVzLCBidXQgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LiIpfSkoaCkrbFtmKzFdLGxbMF0pO3JldHVybiBuZXcgVGllKGEsbCxfeil9LGtpZT12ej9sPT5sOmw9PmwgaW5zdGFuY2VvZiBDU1NTdHlsZVNoZWV0PyhjPT57bGV0IGE9''@;'; put 'put ''IiI7Zm9yKGNvbnN0IGQgb2YgYy5jc3NSdWxlcylhKz1kLmNzc1RleHQ7cmV0dXJuKGw9Pm5ldyBUaWUoInN0cmluZyI9PXR5cGVvZiBsP2w6bCsiIix2b2lkIDAsX3opKShhKX0pKGwpOmw7dmFyIHl6O2NvbnN0IHJJPXdpbmRvdyxBaWU9ckkudHJ1c3RlZFR5cGVzLHdiZT1BaWU/QWllLmVt''@;'; put 'put ''cHR5U2NyaXB0OiIiLERpZT1ySS5yZWFjdGl2ZUVsZW1lbnRQb2x5ZmlsbFN1cHBvcnQsd3o9e3RvQXR0cmlidXRlKGwsYyl7c3dpdGNoKGMpe2Nhc2UgQm9vbGVhbjpsPWw/d2JlOm51bGw7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTpsPW51bGw9PWw/bDpKU09OLnN0cmluZ2lmeShs''@;'; put 'put ''KX1yZXR1cm4gbH0sZnJvbUF0dHJpYnV0ZShsLGMpe2xldCBhPWw7c3dpdGNoKGMpe2Nhc2UgQm9vbGVhbjphPW51bGwhPT1sO2JyZWFrO2Nhc2UgTnVtYmVyOmE9bnVsbD09PWw/bnVsbDpOdW1iZXIobCk7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTp0cnl7YT1KU09OLnBhcnNlKGwp''@;'; put 'put ''fWNhdGNoe2E9bnVsbH19cmV0dXJuIGF9fSxJaWU9KGwsYyk9PmMhPT1sJiYoYz09Y3x8bD09bCksQ3o9e2F0dHJpYnV0ZTohMCx0eXBlOlN0cmluZyxjb252ZXJ0ZXI6d3oscmVmbGVjdDohMSxoYXNDaGFuZ2VkOklpZX0sU3o9ImZpbmFsaXplZCI7Y2xhc3MgWXYgZXh0ZW5kcyBIVE1MRWxl''@;'; put 'put ''bWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fJEVpPW5ldyBNYXAsdGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITEsdGhpcy5oYXNVcGRhdGVkPSExLHRoaXMuXyRFbD1udWxsLHRoaXMuXyRFdSgpfXN0YXRpYyBhZGRJbml0aWFsaXplcihjKXt2YXIgYTt0aGlzLmZpbmFsaXplKCksKG51''@;'; put 'put ''bGwhPT0oYT10aGlzLmgpJiZ2b2lkIDAhPT1hP2E6dGhpcy5oPVtdKS5wdXNoKGMpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7dGhpcy5maW5hbGl6ZSgpO2NvbnN0IGM9W107cmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXMuZm9yRWFjaCgoYSxkKT0+e2NvbnN0IGg9dGhp''@;'; put 'put ''cy5fJEVwKGQsYSk7dm9pZCAwIT09aCYmKHRoaXMuXyRFdi5zZXQoaCxkKSxjLnB1c2goaCkpfSksY31zdGF0aWMgY3JlYXRlUHJvcGVydHkoYyxhPUN6KXtpZihhLnN0YXRlJiYoYS5hdHRyaWJ1dGU9ITEpLHRoaXMuZmluYWxpemUoKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLnNldChjLGEp''@;'; put 'put ''LCFhLm5vQWNjZXNzb3ImJiF0aGlzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShjKSl7Y29uc3QgZD0ic3ltYm9sIj09dHlwZW9mIGM/U3ltYm9sKCk6Il9fIitjLGg9dGhpcy5nZXRQcm9wZXJ0eURlc2NyaXB0b3IoYyxkLGEpO3ZvaWQgMCE9PWgmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0''@;'; put 'put ''aGlzLnByb3RvdHlwZSxjLGgpfX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGMsYSxkKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbYV19LHNldChoKXtjb25zdCBmPXRoaXNbY107dGhpc1thXT1oLHRoaXMucmVxdWVzdFVwZGF0ZShjLGYsZCl9LGNvbmZpZ3VyYWJsZTohMCxlbnVt''@;'; put 'put ''ZXJhYmxlOiEwfX1zdGF0aWMgZ2V0UHJvcGVydHlPcHRpb25zKGMpe3JldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLmdldChjKXx8Q3p9c3RhdGljIGZpbmFsaXplKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShTeikpcmV0dXJuITE7dGhpc1tTel09ITA7Y29uc3QgYz1PYmplY3QuZ2V0''@;'; put 'put ''UHJvdG90eXBlT2YodGhpcyk7aWYoYy5maW5hbGl6ZSgpLHZvaWQgMCE9PWMuaCYmKHRoaXMuaD1bLi4uYy5oXSksdGhpcy5lbGVtZW50UHJvcGVydGllcz1uZXcgTWFwKGMuZWxlbWVudFByb3BlcnRpZXMpLHRoaXMuXyRFdj1uZXcgTWFwLHRoaXMuaGFzT3duUHJvcGVydHkoInByb3BlcnRp''@;'; put 'put ''ZXMiKSl7Y29uc3QgYT10aGlzLnByb3BlcnRpZXMsZD1bLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSksLi4uT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhhKV07Zm9yKGNvbnN0IGggb2YgZCl0aGlzLmNyZWF0ZVByb3BlcnR5KGgsYVtoXSl9cmV0dXJuIHRoaXMuZWxlbWVu''@;'; put 'put ''dFN0eWxlcz10aGlzLmZpbmFsaXplU3R5bGVzKHRoaXMuc3R5bGVzKSwhMH1zdGF0aWMgZmluYWxpemVTdHlsZXMoYyl7Y29uc3QgYT1bXTtpZihBcnJheS5pc0FycmF5KGMpKXtjb25zdCBkPW5ldyBTZXQoYy5mbGF0KDEvMCkucmV2ZXJzZSgpKTtmb3IoY29uc3QgaCBvZiBkKWEudW5zaGlm''@;'; put 'put ''dChraWUoaCkpfWVsc2Ugdm9pZCAwIT09YyYmYS5wdXNoKGtpZShjKSk7cmV0dXJuIGF9c3RhdGljIF8kRXAoYyxhKXtjb25zdCBkPWEuYXR0cmlidXRlO3JldHVybiExPT09ZD92b2lkIDA6InN0cmluZyI9PXR5cGVvZiBkP2Q6InN0cmluZyI9PXR5cGVvZiBjP2MudG9Mb3dlckNhc2UoKTp2''@;'; put 'put ''b2lkIDB9XyRFdSgpe3ZhciBjO3RoaXMuXyRFXz1uZXcgUHJvbWlzZShhPT50aGlzLmVuYWJsZVVwZGF0aW5nPWEpLHRoaXMuXyRBTD1uZXcgTWFwLHRoaXMuXyRFZygpLHRoaXMucmVxdWVzdFVwZGF0ZSgpLG51bGw9PT0oYz10aGlzLmNvbnN0cnVjdG9yLmgpfHx2b2lkIDA9PT1jfHxjLmZv''@;'; put 'put ''ckVhY2goYT0+YSh0aGlzKSl9YWRkQ29udHJvbGxlcihjKXt2YXIgYSxkOyhudWxsIT09KGE9dGhpcy5fJEVTKSYmdm9pZCAwIT09YT9hOnRoaXMuXyRFUz1bXSkucHVzaChjKSx2b2lkIDAhPT10aGlzLnJlbmRlclJvb3QmJnRoaXMuaXNDb25uZWN0ZWQmJihudWxsPT09KGQ9Yy5ob3N0Q29u''@;'; put 'put ''bmVjdGVkKXx8dm9pZCAwPT09ZHx8ZC5jYWxsKGMpKX1yZW1vdmVDb250cm9sbGVyKGMpe3ZhciBhO251bGw9PT0oYT10aGlzLl8kRVMpfHx2b2lkIDA9PT1hfHxhLnNwbGljZSh0aGlzLl8kRVMuaW5kZXhPZihjKT4+PjAsMSl9XyRFZygpe3RoaXMuY29uc3RydWN0b3IuZWxlbWVudFByb3Bl''@;'; put 'put ''cnRpZXMuZm9yRWFjaCgoYyxhKT0+e3RoaXMuaGFzT3duUHJvcGVydHkoYSkmJih0aGlzLl8kRWkuc2V0KGEsdGhpc1thXSksZGVsZXRlIHRoaXNbYV0pfSl9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBjO2NvbnN0IGE9bnVsbCE9PShjPXRoaXMuc2hhZG93Um9vdCkmJnZvaWQgMCE9PWM/Yzp0''@;'; put 'put ''aGlzLmF0dGFjaFNoYWRvdyh0aGlzLmNvbnN0cnVjdG9yLnNoYWRvd1Jvb3RPcHRpb25zKTtyZXR1cm4oKGwsYyk9Pnt2ej9sLmFkb3B0ZWRTdHlsZVNoZWV0cz1jLm1hcChhPT5hIGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldD9hOmEuc3R5bGVTaGVldCk6Yy5mb3JFYWNoKGE9Pntjb25zdCBk''@;'; put 'put ''PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksaD1uSS5saXROb25jZTt2b2lkIDAhPT1oJiZkLnNldEF0dHJpYnV0ZSgibm9uY2UiLGgpLGQudGV4dENvbnRlbnQ9YS5jc3NUZXh0LGwuYXBwZW5kQ2hpbGQoZCl9KX0pKGEsdGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50U3R5bGVzKSxh''@;'; put 'put ''fWNvbm5lY3RlZENhbGxiYWNrKCl7dmFyIGM7dm9pZCAwPT09dGhpcy5yZW5kZXJSb290JiYodGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpKSx0aGlzLmVuYWJsZVVwZGF0aW5nKCEwKSxudWxsPT09KGM9dGhpcy5fJEVTKXx8dm9pZCAwPT09Y3x8Yy5mb3JFYWNoKGE9''@;'; put 'put ''Pnt2YXIgZDtyZXR1cm4gbnVsbD09PShkPWEuaG9zdENvbm5lY3RlZCl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuY2FsbChhKX0pfWVuYWJsZVVwZGF0aW5nKGMpe31kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBjO251bGw9PT0oYz10aGlzLl8kRVMpfHx2b2lkIDA9PT1jfHxjLmZvckVhY2go''@;'; put 'put ''YT0+e3ZhciBkO3JldHVybiBudWxsPT09KGQ9YS5ob3N0RGlzY29ubmVjdGVkKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5jYWxsKGEpfSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGMsYSxkKXt0aGlzLl8kQUsoYyxkKX1fJEVPKGMsYSxkPUN6KXt2YXIgaDtjb25zdCBmPXRoaXMuY29uc3Ry''@;'; put 'put ''dWN0b3IuXyRFcChjLGQpO2lmKHZvaWQgMCE9PWYmJiEwPT09ZC5yZWZsZWN0KXtjb25zdCB2PSh2b2lkIDAhPT0obnVsbD09PShoPWQuY29udmVydGVyKXx8dm9pZCAwPT09aD92b2lkIDA6aC50b0F0dHJpYnV0ZSk/ZC5jb252ZXJ0ZXI6d3opLnRvQXR0cmlidXRlKGEsZC50eXBlKTt0aGlz''@;'; put 'put ''Ll8kRWw9YyxudWxsPT12P3RoaXMucmVtb3ZlQXR0cmlidXRlKGYpOnRoaXMuc2V0QXR0cmlidXRlKGYsdiksdGhpcy5fJEVsPW51bGx9fV8kQUsoYyxhKXt2YXIgZDtjb25zdCBoPXRoaXMuY29uc3RydWN0b3IsZj1oLl8kRXYuZ2V0KGMpO2lmKHZvaWQgMCE9PWYmJnRoaXMuXyRFbCE9PWYp''@;'; put 'put ''e2NvbnN0IHY9aC5nZXRQcm9wZXJ0eU9wdGlvbnMoZiksUz0iZnVuY3Rpb24iPT10eXBlb2Ygdi5jb252ZXJ0ZXI/e2Zyb21BdHRyaWJ1dGU6di5jb252ZXJ0ZXJ9OnZvaWQgMCE9PShudWxsPT09KGQ9di5jb252ZXJ0ZXIpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLmZyb21BdHRyaWJ1dGUpP3Yu''@;'; put 'put ''Y29udmVydGVyOnd6O3RoaXMuXyRFbD1mLHRoaXNbZl09Uy5mcm9tQXR0cmlidXRlKGEsdi50eXBlKSx0aGlzLl8kRWw9bnVsbH19cmVxdWVzdFVwZGF0ZShjLGEsZCl7bGV0IGg9ITA7dm9pZCAwIT09YyYmKCgoZD1kfHx0aGlzLmNvbnN0cnVjdG9yLmdldFByb3BlcnR5T3B0aW9ucyhjKSku''@;'; put 'put ''aGFzQ2hhbmdlZHx8SWllKSh0aGlzW2NdLGEpPyh0aGlzLl8kQUwuaGFzKGMpfHx0aGlzLl8kQUwuc2V0KGMsYSksITA9PT1kLnJlZmxlY3QmJnRoaXMuXyRFbCE9PWMmJih2b2lkIDA9PT10aGlzLl8kRUMmJih0aGlzLl8kRUM9bmV3IE1hcCksdGhpcy5fJEVDLnNldChjLGQpKSk6aD0hMSks''@;'; put 'put ''IXRoaXMuaXNVcGRhdGVQZW5kaW5nJiZoJiYodGhpcy5fJEVfPXRoaXMuXyRFaigpKX1fJEVqKCl7dmFyIGM9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtjLmlzVXBkYXRlUGVuZGluZz0hMDt0cnl7eWllbGQgYy5fJEVffWNhdGNoKGQpe1Byb21pc2UucmVqZWN0KGQpfWNvbnN0IGE9Yy5z''@;'; put 'put ''Y2hlZHVsZVVwZGF0ZSgpO3JldHVybiBudWxsIT1hJiYoeWllbGQgYSksIWMuaXNVcGRhdGVQZW5kaW5nfSkoKX1zY2hlZHVsZVVwZGF0ZSgpe3JldHVybiB0aGlzLnBlcmZvcm1VcGRhdGUoKX1wZXJmb3JtVXBkYXRlKCl7dmFyIGM7aWYoIXRoaXMuaXNVcGRhdGVQZW5kaW5nKXJldHVybjt0''@;'; put 'put ''aGlzLl8kRWkmJih0aGlzLl8kRWkuZm9yRWFjaCgoaCxmKT0+dGhpc1tmXT1oKSx0aGlzLl8kRWk9dm9pZCAwKTtsZXQgYT0hMTtjb25zdCBkPXRoaXMuXyRBTDt0cnl7YT10aGlzLnNob3VsZFVwZGF0ZShkKSxhPyh0aGlzLndpbGxVcGRhdGUoZCksbnVsbD09PShjPXRoaXMuXyRFUyl8fHZv''@;'; put 'put ''aWQgMD09PWN8fGMuZm9yRWFjaChoPT57dmFyIGY7cmV0dXJuIG51bGw9PT0oZj1oLmhvc3RVcGRhdGUpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLmNhbGwoaCl9KSx0aGlzLnVwZGF0ZShkKSk6dGhpcy5fJEVrKCl9Y2F0Y2goaCl7dGhyb3cgYT0hMSx0aGlzLl8kRWsoKSxofWEmJnRoaXMuXyRB''@;'; put 'put ''RShkKX13aWxsVXBkYXRlKGMpe31fJEFFKGMpe3ZhciBhO251bGw9PT0oYT10aGlzLl8kRVMpfHx2b2lkIDA9PT1hfHxhLmZvckVhY2goZD0+e3ZhciBoO3JldHVybiBudWxsPT09KGg9ZC5ob3N0VXBkYXRlZCl8fHZvaWQgMD09PWg/dm9pZCAwOmguY2FsbChkKX0pLHRoaXMuaGFzVXBkYXRl''@;'; put 'put ''ZHx8KHRoaXMuaGFzVXBkYXRlZD0hMCx0aGlzLmZpcnN0VXBkYXRlZChjKSksdGhpcy51cGRhdGVkKGMpfV8kRWsoKXt0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdl''@;'; put 'put ''dFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuXyRFX31zaG91bGRVcGRhdGUoYyl7cmV0dXJuITB9dXBkYXRlKGMpe3ZvaWQgMCE9PXRoaXMuXyRFQyYmKHRoaXMuXyRFQy5mb3JFYWNoKChhLGQpPT50aGlzLl8kRU8oZCx0aGlzW2RdLGEpKSx0aGlzLl8kRUM9dm9pZCAwKSx0aGlzLl8k''@;'; put 'put ''RWsoKX11cGRhdGVkKGMpe31maXJzdFVwZGF0ZWQoYyl7fX12YXIgTXo7WXZbU3pdPSEwLFl2LmVsZW1lbnRQcm9wZXJ0aWVzPW5ldyBNYXAsWXYuZWxlbWVudFN0eWxlcz1bXSxZdi5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9LERpZT8uKHtSZWFjdGl2ZUVsZW1lbnQ6WXZ9KSwo''@;'; put 'put ''bnVsbCE9PSh5ej1ySS5yZWFjdGl2ZUVsZW1lbnRWZXJzaW9ucykmJnZvaWQgMCE9PXl6P3l6OnJJLnJlYWN0aXZlRWxlbWVudFZlcnNpb25zPVtdKS5wdXNoKCIxLjYuMyIpO2NvbnN0IGlJPXdpbmRvdyxXdj1pSS50cnVzdGVkVHlwZXMsUmllPVd2P1d2LmNyZWF0ZVBvbGljeSgibGl0LWh0''@;'; put 'put ''bWwiLHtjcmVhdGVIVE1MOmw9Pmx9KTp2b2lkIDAsb0k9IiRsaXQkIixzND1gbGl0JCR7KE1hdGgucmFuZG9tKCkrIiIpLnNsaWNlKDkpfSRgLHh6PSI/IitzNCxDYmU9YDwke3h6fT5gLEs2PWRvY3VtZW50LHlTPSgpPT5LNi5jcmVhdGVDb21tZW50KCIiKSx3Uz1sPT5udWxsPT09bHx8Im9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBsJiYiZnVuY3Rpb24iIT10eXBlb2YgbCxMaWU9QXJyYXkuaXNBcnJheSxFej0iWyBcdFxuXGZccl0iLENTPS88KD86KCEtLXxcL1teYS16QS1aXSl8KFwvP1thLXpBLVpdW14+XHNdKil8KFwvPyQpKS9nLFBpZT0vLS0+L2csRmllPS8+L2csWDY9UmVnRXhwKGA+fCR7''@;'; put 'put ''RXp9KD86KFteXFxzIic+PS9dKykoJHtFen0qPSR7RXp9Kig/OlteIFx0XG5cZlxyIidcYDw+PV18KCJ8Jyl8KSl8JClgLCJnIiksTmllPS8nL2csSGllPS8iL2csVmllPS9eKD86c2NyaXB0fHN0eWxlfHRleHRhcmVhfHRpdGxlKSQvaSxCaWU9bD0+KGMsLi4uYSk9Pih7XyRsaXRUeXBlJDps''@;'; put 'put ''LHN0cmluZ3M6Yyx2YWx1ZXM6YX0pLFR6PUJpZSgxKSxTYmU9QmllKDIpLEd2PVN5bWJvbC5mb3IoImxpdC1ub0NoYW5nZSIpLEN1PVN5bWJvbC5mb3IoImxpdC1ub3RoaW5nIiksamllPW5ldyBXZWFrTWFwLEo2PUs2LmNyZWF0ZVRyZWVXYWxrZXIoSzYsMTI5LG51bGwsITEpO2Z1bmN0aW9u''@;'; put 'put ''IHppZShsLGMpe2lmKCFBcnJheS5pc0FycmF5KGwpfHwhbC5oYXNPd25Qcm9wZXJ0eSgicmF3IikpdGhyb3cgRXJyb3IoImludmFsaWQgdGVtcGxhdGUgc3RyaW5ncyBhcnJheSIpO3JldHVybiB2b2lkIDAhPT1SaWU/UmllLmNyZWF0ZUhUTUwoYyk6Y31jbGFzcyBTU3tjb25zdHJ1Y3Rvcih7''@;'; put 'put ''c3RyaW5nczpjLF8kbGl0VHlwZSQ6YX0sZCl7bGV0IGg7dGhpcy5wYXJ0cz1bXTtsZXQgZj0wLHY9MDtjb25zdCBTPWMubGVuZ3RoLTEsVj10aGlzLnBhcnRzLFtRLGRlXT0oKGwsYyk9Pntjb25zdCBhPWwubGVuZ3RoLTEsZD1bXTtsZXQgaCxmPTI9PT1jPyI8c3ZnPiI6IiIsdj1DUztmb3Io''@;'; put 'put ''bGV0IFM9MDtTPGE7UysrKXtjb25zdCBWPWxbU107bGV0IFEsZGUscGU9LTEsQ2U9MDtmb3IoO0NlPFYubGVuZ3RoJiYodi5sYXN0SW5kZXg9Q2UsZGU9di5leGVjKFYpLG51bGwhPT1kZSk7KUNlPXYubGFzdEluZGV4LHY9PT1DUz8iIS0tIj09PWRlWzFdP3Y9UGllOnZvaWQgMCE9PWRlWzFd''@;'; put 'put ''P3Y9RmllOnZvaWQgMCE9PWRlWzJdPyhWaWUudGVzdChkZVsyXSkmJihoPVJlZ0V4cCgiPC8iK2RlWzJdLCJnIikpLHY9WDYpOnZvaWQgMCE9PWRlWzNdJiYodj1YNik6dj09PVg2PyI+Ij09PWRlWzBdPyh2PWg/P0NTLHBlPS0xKTp2b2lkIDA9PT1kZVsxXT9wZT0tMjoocGU9di5sYXN0SW5k''@;'; put 'put ''ZXgtZGVbMl0ubGVuZ3RoLFE9ZGVbMV0sdj12b2lkIDA9PT1kZVszXT9YNjonIic9PT1kZVszXT9IaWU6TmllKTp2PT09SGllfHx2PT09TmllP3Y9WDY6dj09PVBpZXx8dj09PUZpZT92PUNTOih2PVg2LGg9dm9pZCAwKTtjb25zdCBPZT12PT09WDYmJmxbUysxXS5zdGFydHNXaXRoKCIvPiIp''@;'; put 'put ''PyIgIjoiIjtmKz12PT09Q1M/VitDYmU6cGU+PTA/KGQucHVzaChRKSxWLnNsaWNlKDAscGUpK29JK1Yuc2xpY2UocGUpK3M0K09lKTpWK3M0KygtMj09PXBlPyhkLnB1c2godm9pZCAwKSxTKTpPZSl9cmV0dXJuW3ppZShsLGYrKGxbYV18fCI8Pz4iKSsoMj09PWM/Ijwvc3ZnPiI6IiIpKSxk''@;'; put 'put ''XX0pKGMsYSk7aWYodGhpcy5lbD1TUy5jcmVhdGVFbGVtZW50KFEsZCksSjYuY3VycmVudE5vZGU9dGhpcy5lbC5jb250ZW50LDI9PT1hKXtjb25zdCBwZT10aGlzLmVsLmNvbnRlbnQsQ2U9cGUuZmlyc3RDaGlsZDtDZS5yZW1vdmUoKSxwZS5hcHBlbmQoLi4uQ2UuY2hpbGROb2Rlcyl9Zm9y''@;'; put 'put ''KDtudWxsIT09KGg9SjYubmV4dE5vZGUoKSkmJlYubGVuZ3RoPFM7KXtpZigxPT09aC5ub2RlVHlwZSl7aWYoaC5oYXNBdHRyaWJ1dGVzKCkpe2NvbnN0IHBlPVtdO2Zvcihjb25zdCBDZSBvZiBoLmdldEF0dHJpYnV0ZU5hbWVzKCkpaWYoQ2UuZW5kc1dpdGgob0kpfHxDZS5zdGFydHNXaXRo''@;'; put 'put ''KHM0KSl7Y29uc3QgT2U9ZGVbdisrXTtpZihwZS5wdXNoKENlKSx2b2lkIDAhPT1PZSl7Y29uc3QgWWU9aC5nZXRBdHRyaWJ1dGUoT2UudG9Mb3dlckNhc2UoKStvSSkuc3BsaXQoczQpLGV0PS8oWy4/QF0pPyguKikvLmV4ZWMoT2UpO1YucHVzaCh7dHlwZToxLGluZGV4OmYsbmFtZTpldFsy''@;'; put 'put ''XSxzdHJpbmdzOlllLGN0b3I6Ii4iPT09ZXRbMV0/WWllOiI/Ij09PWV0WzFdP1dpZToiQCI9PT1ldFsxXT9HaWU6TVN9KX1lbHNlIFYucHVzaCh7dHlwZTo2LGluZGV4OmZ9KX1mb3IoY29uc3QgQ2Ugb2YgcGUpaC5yZW1vdmVBdHRyaWJ1dGUoQ2UpfWlmKFZpZS50ZXN0KGgudGFnTmFtZSkp''@;'; put 'put ''e2NvbnN0IHBlPWgudGV4dENvbnRlbnQuc3BsaXQoczQpLENlPXBlLmxlbmd0aC0xO2lmKENlPjApe2gudGV4dENvbnRlbnQ9V3Y/V3YuZW1wdHlTY3JpcHQ6IiI7Zm9yKGxldCBPZT0wO09lPENlO09lKyspaC5hcHBlbmQocGVbT2VdLHlTKCkpLEo2Lm5leHROb2RlKCksVi5wdXNoKHt0eXBl''@;'; put 'put ''OjIsaW5kZXg6KytmfSk7aC5hcHBlbmQocGVbQ2VdLHlTKCkpfX19ZWxzZSBpZig4PT09aC5ub2RlVHlwZSlpZihoLmRhdGE9PT14eilWLnB1c2goe3R5cGU6MixpbmRleDpmfSk7ZWxzZXtsZXQgcGU9LTE7Zm9yKDstMSE9PShwZT1oLmRhdGEuaW5kZXhPZihzNCxwZSsxKSk7KVYucHVzaCh7''@;'; put 'put ''dHlwZTo3LGluZGV4OmZ9KSxwZSs9czQubGVuZ3RoLTF9ZisrfX1zdGF0aWMgY3JlYXRlRWxlbWVudChjLGEpe2NvbnN0IGQ9SzYuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gZC5pbm5lckhUTUw9YyxkfX1mdW5jdGlvbiBRNihsLGMsYT1sLGQpe3ZhciBoLGYsdixTO2lmKGM9''@;'; put 'put ''PT1HdilyZXR1cm4gYztsZXQgVj12b2lkIDAhPT1kP251bGw9PT0oaD1hLl8kQ28pfHx2b2lkIDA9PT1oP3ZvaWQgMDpoW2RdOmEuXyRDbDtjb25zdCBRPXdTKGMpP3ZvaWQgMDpjLl8kbGl0RGlyZWN0aXZlJDtyZXR1cm4gVj8uY29uc3RydWN0b3IhPT1RJiYobnVsbD09PShmPVY/Ll8kQU8p''@;'; put 'put ''fHx2b2lkIDA9PT1mfHxmLmNhbGwoViwhMSksdm9pZCAwPT09UT9WPXZvaWQgMDooVj1uZXcgUShsKSxWLl8kQVQobCxhLGQpKSx2b2lkIDAhPT1kPyhudWxsIT09KHY9KFM9YSkuXyRDbykmJnZvaWQgMCE9PXY/djpTLl8kQ289W10pW2RdPVY6YS5fJENsPVYpLHZvaWQgMCE9PVYmJihjPVE2''@;'; put 'put ''KGwsVi5fJEFTKGwsYy52YWx1ZXMpLFYsZCkpLGN9Y2xhc3MgWmlle2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fJEFWPVtdLHRoaXMuXyRBTj12b2lkIDAsdGhpcy5fJEFEPWMsdGhpcy5fJEFNPWF9Z2V0IHBhcmVudE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFNLnBhcmVudE5vZGV9Z2V0IF8kQVUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fJEFNLl8kQVV9dShjKXt2YXIgYTtjb25zdHtlbDp7Y29udGVudDpkfSxwYXJ0czpofT10aGlzLl8kQUQsZj0obnVsbCE9PShhPWM/LmNyZWF0aW9uU2NvcGUpJiZ2b2lkIDAhPT1hP2E6SzYpLmltcG9ydE5vZGUoZCwhMCk7SjYuY3VycmVudE5vZGU9ZjtsZXQgdj1K''@;'; put 'put ''Ni5uZXh0Tm9kZSgpLFM9MCxWPTAsUT1oWzBdO2Zvcig7dm9pZCAwIT09UTspe2lmKFM9PT1RLmluZGV4KXtsZXQgZGU7Mj09PVEudHlwZT9kZT1uZXcgJHYodix2Lm5leHRTaWJsaW5nLHRoaXMsYyk6MT09PVEudHlwZT9kZT1uZXcgUS5jdG9yKHYsUS5uYW1lLFEuc3RyaW5ncyx0aGlzLGMp''@;'; put 'put ''OjY9PT1RLnR5cGUmJihkZT1uZXcgJGllKHYsdGhpcyxjKSksdGhpcy5fJEFWLnB1c2goZGUpLFE9aFsrK1ZdfVMhPT1RPy5pbmRleCYmKHY9SjYubmV4dE5vZGUoKSxTKyspfXJldHVybiBKNi5jdXJyZW50Tm9kZT1LNixmfXYoYyl7bGV0IGE9MDtmb3IoY29uc3QgZCBvZiB0aGlzLl8kQVYp''@;'; put 'put ''dm9pZCAwIT09ZCYmKHZvaWQgMCE9PWQuc3RyaW5ncz8oZC5fJEFJKGMsZCxhKSxhKz1kLnN0cmluZ3MubGVuZ3RoLTIpOmQuXyRBSShjW2FdKSksYSsrfX1jbGFzcyAkdntjb25zdHJ1Y3RvcihjLGEsZCxoKXt2YXIgZjt0aGlzLnR5cGU9Mix0aGlzLl8kQUg9Q3UsdGhpcy5fJEFOPXZvaWQg''@;'; put 'put ''MCx0aGlzLl8kQUE9Yyx0aGlzLl8kQUI9YSx0aGlzLl8kQU09ZCx0aGlzLm9wdGlvbnM9aCx0aGlzLl8kQ3A9bnVsbD09PShmPWg/LmlzQ29ubmVjdGVkKXx8dm9pZCAwPT09Znx8Zn1nZXQgXyRBVSgpe3ZhciBjLGE7cmV0dXJuIG51bGwhPT0oYT1udWxsPT09KGM9dGhpcy5fJEFNKXx8dm9p''@;'; put 'put ''ZCAwPT09Yz92b2lkIDA6Yy5fJEFVKSYmdm9pZCAwIT09YT9hOnRoaXMuXyRDcH1nZXQgcGFyZW50Tm9kZSgpe2xldCBjPXRoaXMuXyRBQS5wYXJlbnROb2RlO2NvbnN0IGE9dGhpcy5fJEFNO3JldHVybiB2b2lkIDAhPT1hJiYxMT09PWM/Lm5vZGVUeXBlJiYoYz1hLnBhcmVudE5vZGUpLGN9''@;'; put 'put ''Z2V0IHN0YXJ0Tm9kZSgpe3JldHVybiB0aGlzLl8kQUF9Z2V0IGVuZE5vZGUoKXtyZXR1cm4gdGhpcy5fJEFCfV8kQUkoYyxhPXRoaXMpe2M9UTYodGhpcyxjLGEpLHdTKGMpP2M9PT1DdXx8bnVsbD09Y3x8IiI9PT1jPyh0aGlzLl8kQUghPT1DdSYmdGhpcy5fJEFSKCksdGhpcy5fJEFIPUN1''@;'; put 'put ''KTpjIT09dGhpcy5fJEFIJiZjIT09R3YmJnRoaXMuXyhjKTp2b2lkIDAhPT1jLl8kbGl0VHlwZSQ/dGhpcy5nKGMpOnZvaWQgMCE9PWMubm9kZVR5cGU/dGhpcy4kKGMpOihsPT5MaWUobCl8fCJmdW5jdGlvbiI9PXR5cGVvZiBsPy5bU3ltYm9sLml0ZXJhdG9yXSkoYyk/dGhpcy5UKGMpOnRo''@;'; put 'put ''aXMuXyhjKX1rKGMpe3JldHVybiB0aGlzLl8kQUEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyx0aGlzLl8kQUIpfSQoYyl7dGhpcy5fJEFIIT09YyYmKHRoaXMuXyRBUigpLHRoaXMuXyRBSD10aGlzLmsoYykpfV8oYyl7dGhpcy5fJEFIIT09Q3UmJndTKHRoaXMuXyRBSCk/dGhpcy5fJEFB''@;'; put 'put ''Lm5leHRTaWJsaW5nLmRhdGE9Yzp0aGlzLiQoSzYuY3JlYXRlVGV4dE5vZGUoYykpLHRoaXMuXyRBSD1jfWcoYyl7dmFyIGE7Y29uc3R7dmFsdWVzOmQsXyRsaXRUeXBlJDpofT1jLGY9Im51bWJlciI9PXR5cGVvZiBoP3RoaXMuXyRBQyhjKToodm9pZCAwPT09aC5lbCYmKGguZWw9U1MuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCh6aWUoaC5oLGguaFswXSksdGhpcy5vcHRpb25zKSksaCk7aWYoKG51bGw9PT0oYT10aGlzLl8kQUgpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLl8kQUQpPT09Zil0aGlzLl8kQUgudihkKTtlbHNle2NvbnN0IHY9bmV3IFppZShmLHRoaXMpLFM9di51KHRoaXMub3B0aW9ucyk7''@;'; put 'put ''di52KGQpLHRoaXMuJChTKSx0aGlzLl8kQUg9dn19XyRBQyhjKXtsZXQgYT1qaWUuZ2V0KGMuc3RyaW5ncyk7cmV0dXJuIHZvaWQgMD09PWEmJmppZS5zZXQoYy5zdHJpbmdzLGE9bmV3IFNTKGMpKSxhfVQoYyl7TGllKHRoaXMuXyRBSCl8fCh0aGlzLl8kQUg9W10sdGhpcy5fJEFSKCkpO2Nv''@;'; put 'put ''bnN0IGE9dGhpcy5fJEFIO2xldCBkLGg9MDtmb3IoY29uc3QgZiBvZiBjKWg9PT1hLmxlbmd0aD9hLnB1c2goZD1uZXcgJHYodGhpcy5rKHlTKCkpLHRoaXMuayh5UygpKSx0aGlzLHRoaXMub3B0aW9ucykpOmQ9YVtoXSxkLl8kQUkoZiksaCsrO2g8YS5sZW5ndGgmJih0aGlzLl8kQVIoZCYm''@;'; put 'put ''ZC5fJEFCLm5leHRTaWJsaW5nLGgpLGEubGVuZ3RoPWgpfV8kQVIoYz10aGlzLl8kQUEubmV4dFNpYmxpbmcsYSl7dmFyIGQ7Zm9yKG51bGw9PT0oZD10aGlzLl8kQVApfHx2b2lkIDA9PT1kfHxkLmNhbGwodGhpcywhMSwhMCxhKTtjJiZjIT09dGhpcy5fJEFCOyl7Y29uc3QgaD1jLm5leHRT''@;'; put 'put ''aWJsaW5nO2MucmVtb3ZlKCksYz1ofX1zZXRDb25uZWN0ZWQoYyl7dmFyIGE7dm9pZCAwPT09dGhpcy5fJEFNJiYodGhpcy5fJENwPWMsbnVsbD09PShhPXRoaXMuXyRBUCl8fHZvaWQgMD09PWF8fGEuY2FsbCh0aGlzLGMpKX19Y2xhc3MgTVN7Y29uc3RydWN0b3IoYyxhLGQsaCxmKXt0aGlz''@;'; put 'put ''LnR5cGU9MSx0aGlzLl8kQUg9Q3UsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLmVsZW1lbnQ9Yyx0aGlzLm5hbWU9YSx0aGlzLl8kQU09aCx0aGlzLm9wdGlvbnM9ZixkLmxlbmd0aD4yfHwiIiE9PWRbMF18fCIiIT09ZFsxXT8odGhpcy5fJEFIPUFycmF5KGQubGVuZ3RoLTEpLmZpbGwobmV3IFN0''@;'; put 'put ''cmluZyksdGhpcy5zdHJpbmdzPWQpOnRoaXMuXyRBSD1DdX1nZXQgdGFnTmFtZSgpe3JldHVybiB0aGlzLmVsZW1lbnQudGFnTmFtZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGMsYT10aGlzLGQsaCl7Y29uc3QgZj10aGlzLnN0cmluZ3M7bGV0IHY9ITE7aWYodm9p''@;'; put 'put ''ZCAwPT09ZiljPVE2KHRoaXMsYyxhLDApLHY9IXdTKGMpfHxjIT09dGhpcy5fJEFIJiZjIT09R3YsdiYmKHRoaXMuXyRBSD1jKTtlbHNle2NvbnN0IFM9YztsZXQgVixRO2ZvcihjPWZbMF0sVj0wO1Y8Zi5sZW5ndGgtMTtWKyspUT1RNih0aGlzLFNbZCtWXSxhLFYpLFE9PT1HdiYmKFE9dGhp''@;'; put 'put ''cy5fJEFIW1ZdKSx2fHwodj0hd1MoUSl8fFEhPT10aGlzLl8kQUhbVl0pLFE9PT1DdT9jPUN1OmMhPT1DdSYmKGMrPShRPz8iIikrZltWKzFdKSx0aGlzLl8kQUhbVl09UX12JiYhaCYmdGhpcy5qKGMpfWooYyl7Yz09PUN1P3RoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUodGhpcy5uYW1l''@;'; put 'put ''KTp0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSxjPz8iIil9fWNsYXNzIFlpZSBleHRlbmRzIE1Te2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9M31qKGMpe3RoaXMuZWxlbWVudFt0aGlzLm5hbWVdPWM9PT1DdT92b2lkIDA6Y319Y29uc3Qg''@;'; put 'put ''TWJlPVd2P1d2LmVtcHR5U2NyaXB0OiIiO2NsYXNzIFdpZSBleHRlbmRzIE1Te2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9NH1qKGMpe2MmJmMhPT1DdT90aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSxNYmUpOnRoaXMuZWxlbWVudC5yZW1v''@;'; put 'put ''dmVBdHRyaWJ1dGUodGhpcy5uYW1lKX19Y2xhc3MgR2llIGV4dGVuZHMgTVN7Y29uc3RydWN0b3IoYyxhLGQsaCxmKXtzdXBlcihjLGEsZCxoLGYpLHRoaXMudHlwZT01fV8kQUkoYyxhPXRoaXMpe3ZhciBkO2lmKChjPW51bGwhPT0oZD1RNih0aGlzLGMsYSwwKSkmJnZvaWQgMCE9PWQ/ZDpD''@;'; put 'put ''dSk9PT1HdilyZXR1cm47Y29uc3QgaD10aGlzLl8kQUgsZj1jPT09Q3UmJmghPT1DdXx8Yy5jYXB0dXJlIT09aC5jYXB0dXJlfHxjLm9uY2UhPT1oLm9uY2V8fGMucGFzc2l2ZSE9PWgucGFzc2l2ZSx2PWMhPT1DdSYmKGg9PT1DdXx8Zik7ZiYmdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlz''@;'; put 'put ''dGVuZXIodGhpcy5uYW1lLHRoaXMsaCksdiYmdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5uYW1lLHRoaXMsYyksdGhpcy5fJEFIPWN9aGFuZGxlRXZlbnQoYyl7dmFyIGEsZDsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fJEFIP3RoaXMuXyRBSC5jYWxsKG51bGwhPT0oZD1u''@;'; put 'put ''dWxsPT09KGE9dGhpcy5vcHRpb25zKXx8dm9pZCAwPT09YT92b2lkIDA6YS5ob3N0KSYmdm9pZCAwIT09ZD9kOnRoaXMuZWxlbWVudCxjKTp0aGlzLl8kQUguaGFuZGxlRXZlbnQoYyl9fWNsYXNzICRpZXtjb25zdHJ1Y3RvcihjLGEsZCl7dGhpcy5lbGVtZW50PWMsdGhpcy50eXBlPTYsdGhp''@;'; put 'put ''cy5fJEFOPXZvaWQgMCx0aGlzLl8kQU09YSx0aGlzLm9wdGlvbnM9ZH1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1fJEFJKGMpe1E2KHRoaXMsYyl9fWNvbnN0IHFpZT1pSS5saXRIdG1sUG9seWZpbGxTdXBwb3J0O3FpZT8uKFNTLCR2KSwobnVsbCE9PShNej1pSS5saXRIdG1s''@;'; put 'put ''VmVyc2lvbnMpJiZ2b2lkIDAhPT1Nej9NejppSS5saXRIdG1sVmVyc2lvbnM9W10pLnB1c2goIjIuOC4wIik7Y29uc3QgS2llPShsLGMsYSk9Pnt2YXIgZCxoO2NvbnN0IGY9bnVsbCE9PShkPWE/LnJlbmRlckJlZm9yZSkmJnZvaWQgMCE9PWQ/ZDpjO2xldCB2PWYuXyRsaXRQYXJ0JDtpZih2''@;'; put 'put ''b2lkIDA9PT12KXtjb25zdCBTPW51bGwhPT0oaD1hPy5yZW5kZXJCZWZvcmUpJiZ2b2lkIDAhPT1oP2g6bnVsbDtmLl8kbGl0UGFydCQ9dj1uZXcgJHYoYy5pbnNlcnRCZWZvcmUoeVMoKSxTKSxTLHZvaWQgMCxhPz97fSl9cmV0dXJuIHYuXyRBSShsKSx2fTt2YXIga3osQXo7Y2xhc3MgcXYg''@;'; put 'put ''ZXh0ZW5kcyBZdntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZW5kZXJPcHRpb25zPXtob3N0OnRoaXN9LHRoaXMuXyREbz12b2lkIDB9Y3JlYXRlUmVuZGVyUm9vdCgpe3ZhciBjLGE7Y29uc3QgZD1zdXBlci5jcmVhdGVSZW5kZXJSb290KCk7cmV0dXJuIG51bGwh''@;'; put 'put ''PT0oYz0oYT10aGlzLnJlbmRlck9wdGlvbnMpLnJlbmRlckJlZm9yZSkmJnZvaWQgMCE9PWN8fChhLnJlbmRlckJlZm9yZT1kLmZpcnN0Q2hpbGQpLGR9dXBkYXRlKGMpe2NvbnN0IGE9dGhpcy5yZW5kZXIoKTt0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLnJlbmRlck9wdGlvbnMuaXNDb25uZWN0''@;'; put 'put ''ZWQ9dGhpcy5pc0Nvbm5lY3RlZCksc3VwZXIudXBkYXRlKGMpLHRoaXMuXyREbz1LaWUoYSx0aGlzLnJlbmRlclJvb3QsdGhpcy5yZW5kZXJPcHRpb25zKX1jb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBjO3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShjPXRoaXMuXyREbyl8fHZv''@;'; put 'put ''aWQgMD09PWN8fGMuc2V0Q29ubmVjdGVkKCEwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciBjO3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PShjPXRoaXMuXyREbyl8fHZvaWQgMD09PWN8fGMuc2V0Q29ubmVjdGVkKCExKX1yZW5kZXIoKXtyZXR1cm4gR3Z9fXF2LmZp''@;'; put 'put ''bmFsaXplZD0hMCxxdi5fJGxpdEVsZW1lbnQkPSEwLG51bGw9PT0oa3o9Z2xvYmFsVGhpcy5saXRFbGVtZW50SHlkcmF0ZVN1cHBvcnQpfHx2b2lkIDA9PT1renx8a3ouY2FsbChnbG9iYWxUaGlzLHtMaXRFbGVtZW50OnF2fSk7Y29uc3QgWGllPWdsb2JhbFRoaXMubGl0RWxlbWVudFBvbHlm''@;'; put 'put ''aWxsU3VwcG9ydDtYaWU/Lih7TGl0RWxlbWVudDpxdn0pLChudWxsIT09KEF6PWdsb2JhbFRoaXMubGl0RWxlbWVudFZlcnNpb25zKSYmdm9pZCAwIT09QXo/QXo6Z2xvYmFsVGhpcy5saXRFbGVtZW50VmVyc2lvbnM9W10pLnB1c2goIjMuMy4zIik7Y29uc3QgSmllPWJ6YEBjaGFyc2V0ICJV''@;'; 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 ''YXktZm9udC1zaXplLGNhbGMoNDAgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0LDUwMCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRp''@;'; put 'put ''c3BsYXktbGluZS1oZWlnaHQsMS4xZW0pO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nLC0uMDEyNWVtKX1bY2RzLXRleHQqPWRpc3BsYXldOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dp''@;'; put 'put ''ZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQsMS4xZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdl''@;'; put 'put ''bSl9W2Nkcy10ZXh0Kj1kaXNwbGF5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCwxLjFlbSkgLSAxZW0pLyAyKSkqLTEp''@;'; put 'put ''IC0gLjA0NGVtKX1bY2RzLXRleHQqPXRpdGxlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZSxjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFw''@;'; put 'put ''aHktdGl0bGUtZm9udC13ZWlnaHQsNTAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4zMzMzMzNlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxldHRlci1zcGFjaW5nLC0uMDA4''@;'; put 'put ''MzMzMzNlbSl9W2Nkcy10ZXh0Kj10aXRsZV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4zMzMzMzNlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXRpdGxlXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFl''@;'; put 'put ''bSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxj''@;'; put 'put ''KCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQsMS4zMzMzMzNlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXNlY3Rpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUsY2Fs''@;'; put 'put ''YygyMCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQsNTAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdo''@;'; put 'put ''dCwxLjJlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcsLS4wMWVtKX1bY2RzLXRleHQqPXNlY3Rpb25dOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRv''@;'; put 'put ''bTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQsMS4yZW0pIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1zZWN0''@;'; put 'put ''aW9uXTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2Nl''@;'; put 'put ''bmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCwxLjJlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRl''@;'; put 'put ''eHQqPXN1YnNlY3Rpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemUsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNl''@;'; put 'put ''Y3Rpb24tZm9udC13ZWlnaHQsNTAwKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCwxLjVlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcsLS4w''@;'; put 'put ''MTI1ZW0pfVtjZHMtdGV4dCo9c3Vic2VjdGlvbl06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCwxLjVlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25dOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNh''@;'; put 'put ''bGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0p''@;'; put 'put ''KSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0LDEuNWVtKSAtIDFlbSkvIDIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9Ym9keV17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWln''@;'; put 'put ''aHQsNDAwKTtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplLGNhbGMoMTQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFj''@;'; put 'put ''aW5nLC0uMDA3MTQyODZlbSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQsMS40Mjg1NzE0ZW0pfVtjZHMtdGV4dCo9Ym9keV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90''@;'; put 'put ''dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3MTRlbSkgLSAxZW0pLyAyKSkqLTEpICsgLjFlbSl9W2Nkcy10ZXh0Kj1i''@;'; put 'put ''b2R5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2Nl''@;'; put 'put ''bmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCwxLjQyODU3MTRlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1ib2R5''@;'; put 'put ''W2Nkcy10ZXh0Kj1ib2R5XTo6YWZ0ZXIsYm9keVtjZHMtdGV4dCo9Ym9keV06OmJlZm9yZXtjb250ZW50Om5vbmV9W2Nkcy10ZXh0Kj1tZXNzYWdlXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC1zaXplLGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1iYXNlLDIwKSkpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtd2VpZ2h0LGNhbGMoNDAwICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFw''@;'; put 'put ''aHktbWVzc2FnZS1saW5lLWhlaWdodCwxLjVlbSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGV0dGVyLXNwYWNpbmcsLS4wMTI1ZW0pfVtjZHMtdGV4dCo9bWVzc2FnZV06OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0''@;'; put 'put ''OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCwxLjVlbSkgLSAxZW0pLyAyKSkqLTEpICsg''@;'; put 'put ''LjAzN2VtKX1bY2RzLXRleHQqPW1lc3NhZ2VdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0LDEuNWVtKSAtIDFlbSkvIDIp''@;'; put 'put ''KSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUsY2FsYygxMyAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCw0MDApO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25k''@;'; put 'put ''YXJ5LWxldHRlci1zcGFjaW5nLC0uMDA3NjkyZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdo''@;'; put 'put ''dCwuMTQ3NWVtKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQsMS4yMzA3N2VtKSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XTo6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdo''@;'; put 'put ''dDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQsLjE3MDNlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHkteC1oZWlnaHQsLjUxN2VtKSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0LDEuMjMwNzdlbSkgLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHR+PWxpbmtde2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlw''@;'; put 'put ''b2dyYXBoeS1saW5rLWNvbG9yLHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDAsIzAwNzlhZCkpIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIWltcG9ydGFudDtsaW5lLWhlaWdodDppbmhlcml0IWltcG9ydGFudDtmb250LXNpemU6aW5oZXJpdCFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy10ZXh0fj1saW5rXTpmb2N1c3tvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSxIaWdobGlnaHQgc29saWQgMnB4KTtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0LDFweCl9''@;'; put 'put ''W2Nkcy10ZXh0fj1saW5rXTpob3Zlcntjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci1ob3Zlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwLCMwMDYwOGEpKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saW5rXTp2aXNpdGVkOm5vdChbY2RzLXRleHR+''@;'; put 'put ''PXN0YXRpY10pe2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci02MDAsIzNiNDBjZSkpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGlj''@;'; put 'put ''XSk6aG92ZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTcwMCwjMjQyOWMyKSkhaW1wb3J0YW50fUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjAp''@;'; put 'put ''e1tjZHMtdGV4dD1saW5rXTpmb2N1c3tvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS13ZWJraXQsNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yKX19W2Nkcy10ZXh0fj1jb2RlXXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRh''@;'; put 'put ''bmdlcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDAsI2UwMjIwMCkpO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MS4xZW19W2Nkcy1kaXZpZGVyXXtkaXNwbGF5OmJsb2NrO2hlaWdodDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAsY2FsYygx''@;'; put 'put ''ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcix2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDAsI2NiZDRkOCkpIDAgMCAwIHZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCxjYWxjKDEgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIGluc2V0fVtjZHMtdGV4dH49bGlnaHRde2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1saWdodCwzMDApIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLXRleHR+PWp1c3RpZnlde3RleHQtYWxpZ246anVzdGlmeSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1sZWZ0XXt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fVtjZHMtdGV4dH49cmlnaHRde3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fVtjZHMtdGV4dH49Y2VudGVyXXt0''@;'; put 'put ''ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saGVde3BhZGRpbmc6LjA1cHggMH1bY2RzLXRleHR+PWxoZV06OmJlZm9yZXtjb250ZW50OiIiO21hcmdpbi10b3A6LS4xMjRlbTtkaXNwbGF5OmJsb2NrO2hlaWdodDowfVtjZHMtdGV4dH49bGhlXTo6YWZ0ZXJ7Y29udGVu''@;'; put 'put ''dDoiIjttYXJnaW4tYm90dG9tOi0uMjIxZW07ZGlzcGxheTpibG9jaztoZWlnaHQ6MH1bY2RzLXRleHQqPWgyXSxbY2RzLXRleHQqPWgzXXtmb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBO''@;'; put 'put ''ZXh0Iiwgc2Fucy1zZXJpZik7Zm9udC1zaXplOjEuNHJlbTtmb250LXdlaWdodDoyMDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7bGluZS1oZWlnaHQ6MS43MTQzZW07bGV0dGVyLXNwYWNpbmc6LS4wMTc4NTdlbX1bY2RzLXRleHQqPWgyXTo6YmVmb3Jl''@;'; put 'put ''e2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCwuMTQ3NWVtKSArIGNhbGMoKDEuNzE0M2VtIC0gMWVtKS8gMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10''@;'; put 'put ''ZXh0Kj1oMl06OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVlbSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''YXNjZW5kZXItaGVpZ2h0LC4xNzAzZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0LC41MTdlbSkpICsgY2FsYygoMS43MTQzZW0gLSAxZW0pLyAyKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWgzXXtmb250LXNpemU6MS4xcmVtO2xpbmUtaGVpZ2h0OjEuMDkw''@;'; put 'put ''OWVtO2xldHRlci1zcGFjaW5nOi0uMDEzNjM2ZW19W2Nkcy10ZXh0Kj1oM106OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQsLjE0NzVl''@;'; put 'put ''bSkgKyBjYWxjKCgxLjA5MDllbSAtIDFlbSkvIDIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDNdOjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRv''@;'; put 'put ''cC1nYXAtaGVpZ2h0LC4xNDc1ZW0pIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCwuMTcwM2VtKSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCwuNTE3ZW0pKSArIGNhbGMoKDEuMDkwOWVtIC0gMWVtKS8gMikpKi0xKSAtIC4wNDRl''@;'; put 'put ''bSl9Omhvc3R7YWxsOmluaXRpYWw7ZGlzcGxheTpibG9jazt2aXNpYmlsaXR5OmluaGVyaXQ7Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7Y29udGFpbjpsYXlvdXQ7''@;'; put 'put ''Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnR9Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmluaGVyaXQhaW1wb3J0YW50fXNsb3R7Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFt''@;'; put 'put ''aWx5LCAiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0Iiwgc2Fucy1zZXJpZik7ZGlzcGxheTpjb250ZW50cyFpbXBvcnRhbnR9OjpzbG90dGVkKCope2ZvbnQtZmFtaWx5OmluaGVyaXQ7Ym94LXNpemluZzppbmhlcml0fTo6c2xvdHRlZCgqKTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMCx2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDAsIzRmNjE2OSkpfTpob3N0KFtfaXMtYW5jaG9yXSksOmhvc3QoW3JvbGU9YnV0dG9uXSl7Y3Vyc29yOnBvaW50ZXIhaW1wb3J0YW50fTpob3N0KFtfaXMtYW5jaG9y''@;'; put 'put ''XSkgOjpzbG90dGVkKCopLDpob3N0KFtyb2xlPWJ1dHRvbl0pIDo6c2xvdHRlZCgqKXtjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9YnV0dG9uXVtkaXNhYmxlZF0pe2N1cnNvcjpub3QtYWxsb3dlZCFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9YnV0dG9uXVtkaXNhYmxlZF0p''@;'; put 'put ''IDo6c2xvdHRlZCgqKXtjdXJzb3I6bm90LWFsbG93ZWQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoW2hpZGRlbl0pLFtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Omhvc3QoW2hpZGRlbio9ZmFsc2VdKXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH06aG9zdChb''@;'; put 'put ''cm9sZT1kaWFsb2ddW2hpZGRlbl0pLDpob3N0KFtyb2xlPWRpYWxvZ11baGlkZGVuXSkgOjpzbG90dGVkKCope2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudH06aG9zdChbcm9sZT1kaWFsb2ddW2hpZGRlbio9ZmFsc2VdKSw6aG9zdChbcm9sZT1k''@;'; put 'put ''aWFsb2ddW2hpZGRlbio9ZmFsc2VdKSA6OnNsb3R0ZWQoKil7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudH06aG9zdChbX2ZvY3VzZWRdKSAuaW5wdXQsOmhvc3QoW19mb2N1c2VkXSkgW2ZvY3VzYWJsZV0sOmhvc3QoW3RhYmluZGV4PSIwIl06Zm9jdXMpLDpob3N0KFt0YWJpbmRleD0i''@;'; put 'put ''MCJdOmZvY3VzKSBbZm9jdXNhYmxlXSxbdGFiaW5kZXg9IjAiXVtmb2N1c2FibGVdOmZvY3Vze291dGxpbmU6SGlnaGxpZ2h0IHNvbGlkIDJweDtvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWlu''@;'; put 'put ''dGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0LDFweCl9YDtmdW5jdGlvbiBEeihsKXtyZXR1cm5gY2FsYygoJHtsfSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpICogMXJlbSlgfWNsYXNzIEFiZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMuZm49Yyx0aGlzLnN1YnNjcmlwdGlvbnM9YX11bnN1YnNj''@;'; put 'put ''cmliZSgpe2NvbnN0IGM9dGhpcy5zdWJzY3JpcHRpb25zLmluZGV4T2YodGhpcyk7LTEhPT1jJiZ0aGlzLnN1YnNjcmlwdGlvbnMuc3BsaWNlKGMsMSl9fWNvbnN0IEl6PW5ldyBjbGFzcyBEYmV7Y29uc3RydWN0b3IoKXt0aGlzLnN1YnNjcmlwdGlvbnM9W119c3Vic2NyaWJlKGMpe2NvbnN0''@;'; put 'put ''IGE9bmV3IEFiZShjLHRoaXMuc3Vic2NyaXB0aW9ucyk7cmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGEpLGF9ZW1pdChjKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLmZuKGMpKX10b0V2ZW50T2JzZXJ2YWJsZSgpe3JldHVybiB0aGlzfX07SXoubGlzdGVuZXI9ZG9j''@;'; put 'put ''dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiQ0RTX1NUQVRFX1VQREFURSIsbD0+SXouZW1pdChsLmRldGFpbCkpO2NsYXNzIFN1e3N0YXRpYyBnZXQgc3RhdGUoKXtyZXR1cm4gZ2llKCksd2luZG93LkNEUy5fc3RhdGV9c3RhdGljIGdldFZhbHVlKGMpe3JldHVybiBTdS5zdGF0ZVtjXX1zdGF0''@;'; put 'put ''aWMgc2V0VmFsdWUoYyxhKXtTdS5zdGF0ZVtjXT1hfXN0YXRpYyBsb2coKXtxNi5sb2coSlNPTi5zdHJpbmdpZnkoU3Uuc3RhdGUsbnVsbCwyKSl9fVN1LnN0YXRlVXBkYXRlcz1Jei50b0V2ZW50T2JzZXJ2YWJsZSgpO2NvbnN0IEliZT0obCxjKT0+Im1ldGhvZCI9PT1jLmtpbmQmJmMuZGVz''@;'; put 'put ''Y3JpcHRvciYmISgidmFsdWUiaW4gYy5kZXNjcmlwdG9yKT97Li4uYyxmaW5pc2hlcihhKXthLmNyZWF0ZVByb3BlcnR5KGMua2V5LGwpfX06e2tpbmQ6ImZpZWxkIixrZXk6U3ltYm9sKCkscGxhY2VtZW50OiJvd24iLGRlc2NyaXB0b3I6e30sb3JpZ2luYWxLZXk6Yy5rZXksaW5pdGlhbGl6''@;'; put 'put ''ZXIoKXsiZnVuY3Rpb24iPT10eXBlb2YgYy5pbml0aWFsaXplciYmKHRoaXNbYy5rZXldPWMuaW5pdGlhbGl6ZXIuY2FsbCh0aGlzKSl9LGZpbmlzaGVyKGEpe2EuY3JlYXRlUHJvcGVydHkoYy5rZXksbCl9fSxSYmU9KGwsYyxhKT0+e2MuY29uc3RydWN0b3IuY3JlYXRlUHJvcGVydHkoYSxs''@;'; put 'put ''KX07ZnVuY3Rpb24gUWllKGwpe3JldHVybihjLGEpPT52b2lkIDAhPT1hP1JiZShsLGMsYSk6SWJlKGwsYyl9ZnVuY3Rpb24gbm9lKGwsYyl7c3dpdGNoKGMmJmMudHlwZSl7Y2FzZSBBcnJheTpjYXNlIE9iamVjdDpyZXR1cm57cmVmbGVjdDohMSwuLi5jfTtjYXNlIFN0cmluZzpyZXR1cm57''@;'; put 'put ''cmVmbGVjdDohMCxhdHRyaWJ1dGU6JDYobCksY29udmVydGVyOnt0b0F0dHJpYnV0ZTphPT5hfHxudWxsfSwuLi5jfTtjYXNlIE51bWJlcjpyZXR1cm57cmVmbGVjdDohMCxhdHRyaWJ1dGU6JDYobCksLi4uY307Y2FzZSBCb29sZWFuOnJldHVybntyZWZsZWN0OiEwLGF0dHJpYnV0ZTokNihs''@;'; put 'put ''KSxjb252ZXJ0ZXI6e3RvQXR0cmlidXRlOmE9PmE/IiI6bnVsbCxmcm9tQXR0cmlidXRlOmE9PmZ1bmN0aW9uIE5iZShsKXtyZXR1cm4gbnVsbCE9bCYmIiIrbCE9ImZhbHNlIn0oYSl9LC4uLmN9O2Nhc2UgRGF0ZTpyZXR1cm57cmVmbGVjdDohMSxjb252ZXJ0ZXI6e2Zyb21BdHRyaWJ1dGU6''@;'; put 'put ''YT0+bmV3IERhdGUoYSl9LC4uLmN9O2RlZmF1bHQ6cmV0dXJuey4uLmN9fX1mdW5jdGlvbiB3YyhsKXtyZXR1cm4oYyxhKT0+KGw/LnJlcXVpcmVkJiZmdW5jdGlvbiBIYmUobCxjLGEpe2NvbnN0IGQ9bC5maXJzdFVwZGF0ZWQ7bC5maXJzdFVwZGF0ZWQ9ZnVuY3Rpb24oaCl7aWYoYSYmYS5y''@;'; put 'put ''ZXF1aXJlZCYmYW0odGhpc1tjXSkpe2NvbnN0IGY9YS5yZXF1aXJlZE1lc3NhZ2V8fGZ1bmN0aW9uKHY9Indhcm5pbmciLFMsVil7Y29uc3QgUT1WLnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuYCR7aGllKHYpfTogJHtTfSBpcyByZXF1aXJlZCB0byB1c2UgJHtRfSBjb21wb25lbnQuIFNl''@;'; put 'put ''dCB0aGUgSlMgUHJvcGVydHkgb3IgSFRNTCBBdHRyaWJ1dGUuXG5cbmArKGFpZSgpP2BBbmd1bGFyOiA8JHtRfSBbJHtTfV09Ii4uLiI+PC8ke1F9PlxuYDoiIikrKGNpZSgpP2BWdWU6IDwke1F9IDoke1N9PSIuLi4iPjwvJHtRfT5cbmA6IiIpKyhsaWUoKT9gUmVhY3Q6IDwke2Z1bmN0aW9u''@;'; put 'put ''IFlfZShsKXtyZXR1cm4gaGllKGZ1bmN0aW9uIFpfZShsKXtyZXR1cm4gbC5zcGxpdCgiLSIpLm1hcCgoYyxhKT0+YT9jLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Muc2xpY2UoMSkudG9Mb3dlckNhc2UoKTpjKS5qb2luKCIiKX0obCkpfShRKX0gJHtkZT1TLGRlLnN0YXJ0c1dpdGgoImFy''@;'; put 'put ''aWEiKT8kNihkZSk6ZGV9PXsuLi59IC8+XG5gOiIiKStgSFRNTDogPCR7UX0gJHskNihTKX09Ii4uLiI+PC8ke1F9PlxuSmF2YVNjcmlwdDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignJHtRfScpLiR7U30gPSAnLi4uJztcblxuYDt2YXIgZGV9KGEucmVxdWlyZWQsYyx0aGlzLnRhZ05hbWUp''@;'; put 'put ''O2lmKCJlcnJvciI9PT1hLnJlcXVpcmVkKXRocm93IEVycm9yKGYpO3E2Lndhcm4oZix0aGlzKX1kJiZkLmNhbGwodGhpcyxoKX19KGMsYSxsKSxRaWUobm9lKGEsbCkpKGMsYSkpfWZ1bmN0aW9uIHJvZShsKXtyZXR1cm4oYyxhKT0+e2NvbnN0IGQ9bm9lKGEsbCk7cmV0dXJuIGQmJihkLnJl''@;'; put 'put ''ZmxlY3Q9ISFsPy5yZWZsZWN0JiZsLnJlZmxlY3QsZC5yZWZsZWN0JiYhbD8uYXR0cmlidXRlJiYoZC5hdHRyaWJ1dGU9Il8iKyQ2KGEpKSksUWllKGQpKGMsYSl9fXZhciBqYmU9YnpgQGtleWZyYW1lcyBmYWRlSW5BbmRPdXR7MCUsdG97b3BhY2l0eTowfTc1JXtvcGFjaXR5OjF9fTpob3N0''@;'; put 'put ''ey0tY29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVt''@;'; put 'put ''IC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03LGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246bWlkZGxlO2ZpbGw6dmFyKC0tY29sb3IpO2NvbG9yOnZhcigtLWNvbG9yKTtjb250YWluOnN0cmljdDtjdXJzb3I6aW5oZXJpdH1zdmd7ZGlzcGxheTpibG9ja306aG9zdChbc2l6ZSo9eHNdKXtoZWln''@;'; put 'put ''aHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTUsY2FsYyg4ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSl9Omhvc3QoW3NpemUqPXNtXSl7aGVpZ2h0''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTcsY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyxjYWxjKDE2ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKX06aG9zdChbc2l6ZSo9bWRdKXtoZWln''@;'; put 'put ''aHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSxjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4taGVpZ2h0OnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtOSxjYWxjKDI0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05LGNhbGMoMjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj1sZ10pe2hl''@;'; put 'put ''aWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExLGNhbGMoMzYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEsY2FsYygzNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhlaWdodDp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExLGNhbGMoMzYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExLGNhbGMoMzYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtzaXplKj14''@;'; put 'put ''bF0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyLGNhbGMoNDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIsY2FsYyg0OCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7bWluLWhl''@;'; put 'put ''aWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyLGNhbGMoNDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyLGNhbGMoNDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtz''@;'; put 'put ''aXplKj14eGxdKXtoZWlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkp''@;'; put 'put ''O3dpZHRoOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyxjYWxjKDY0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSxjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpKTttaW4taGVpZ2h0''@;'; put 'put ''OmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyxjYWxjKDY0ICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSxjYWxjKDggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpKTttaW4td2lkdGg6Y2FsYyh2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzLGNhbGMoNjQgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01LGNhbGMoOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSkpfTpob3N0KFtzaXplKj1maXRdKXtoZWln''@;'; put 'put ''aHQ6YXV0bzt3aWR0aDphdXRvO2NvbnRhaW46bGF5b3V0fTpob3N0KFtzdGF0dXM9c3VjY2Vzc10pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCwgIzQyODEwZSkpfTpob3N0KFtzdGF0dXM9ZGFuZ2VyXSl7''@;'; put 'put ''LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlciwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwLCAjZTAyMjAwKSl9Omhvc3QoW3N0YXR1cz13YXJuaW5nXSl7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyaywgdmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1jb2xvci1vY2hyZS04MDAsICNhMzY1MDApKX06aG9zdChbc3RhdHVzPWluZm9dKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlhZCkpfTpob3N0KFtzdGF0dXM9bmV1dHJhbF0pey0tY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDAsICM0ZjYxNjkpKX06aG9zdChbaW52ZXJzZV0pey0tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwLCAjY2JkNGQ4KX06aG9zdChbZGly''@;'; put 'put ''ZWN0aW9uPXVwXSl7dHJhbnNmb3JtOnJvdGF0ZSgwKX06aG9zdChbZGlyZWN0aW9uPWRvd25dKXt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9Omhvc3QoW2RpcmVjdGlvbj1yaWdodF0pe3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTpob3N0KFtkaXJlY3Rpb249bGVmdF0pe3RyYW5zZm9ybTpy''@;'; put 'put ''b3RhdGUoMjcwZGVnKX06aG9zdChbZmxpcD1ob3Jpem9udGFsXSl7dHJhbnNmb3JtOnNjYWxlKC0xKSByb3RhdGVYKDE4MGRlZyl9Omhvc3QoW2ZsaXA9dmVydGljYWxdKXt0cmFuc2Zvcm06c2NhbGUoLTEpIHJvdGF0ZVkoMTgwZGVnKX0uYWxlcnQsLmJhZGdle2ZpbGw6dmFyKC0tYmFkZ2Ut''@;'; put 'put ''Y29sb3IsdmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIsdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwLCNlMDIyMDApKSl9Omhvc3QoW2JhZGdlPXN1Y2Nlc3NdKXstLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2VzcywgdmFyKC0tY2RzLWdsb2JhbC1j''@;'; put 'put ''b2xvci1ncmVlbi03MDAsICM0MjgxMGUpKX06aG9zdChbYmFkZ2U9ZGFuZ2VyXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlciwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwLCAjZTAyMjAwKSl9Omhvc3QoW2JhZGdlKj13YXJuaW5nXSl7LS1iYWRn''@;'; put 'put ''ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyaywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDAsICNhMzY1MDApKX06aG9zdChbYmFkZ2U9aW5oZXJpdF0pey0tYmFkZ2UtY29sb3I6Y3VycmVudENvbG9yfTpob3N0KFtiYWRnZT1pbmZvXSl7LS1iYWRn''@;'; put 'put ''ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8sIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDAsICMwMDc5YWQpKX06aG9zdChbYmFkZ2U9bmV1dHJhbF0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLCB2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LWNvbG9yLWNvbnN0cnVjdGlvbi02MDAsICM0ZjYxNjkpKX06aG9zdChbYmFkZ2U9aW5oZXJpdC10cmlhbmdsZV0pey0tYmFkZ2UtY29sb3I6Y3VycmVudENvbG9yfTpob3N0KFtiYWRnZV1baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIsIHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTcwMCwgI2UwMjIwMCkpfTpob3N0KFtiYWRnZT1zdWNjZXNzXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwLCAjNDI4MTBlKSl9Omhv''@;'; put 'put ''c3QoW2JhZGdlKj13YXJuaW5nXVtpbnZlcnNlXSl7LS1iYWRnZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyaywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDAsICNhMzY1MDApKX06aG9zdChbYmFkZ2UqPWluaGVyaXRdW2ludmVyc2VdKXstLWJhZGdl''@;'; put 'put ''LWNvbG9yOmN1cnJlbnRDb2xvcn06aG9zdChbYmFkZ2U9aW5mb11baW52ZXJzZV0pey0tYmFkZ2UtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwLCAjMDA3OWFkKSl9LmNkcy1pbnRlcm5hbC1kb3QtMXthbmltYXRpb246''@;'; put 'put ''ZmFkZUluQW5kT3V0IDEuOHMgZWFzZS1pbiAwcyBpbmZpbml0ZX0uY2RzLWludGVybmFsLWRvdC0ye2FuaW1hdGlvbjpmYWRlSW5BbmRPdXQgMS44cyBlYXNlLW91dCAuNDIycyBpbmZpbml0ZX0uY2RzLWludGVybmFsLWRvdC0ze2FuaW1hdGlvbjpmYWRlSW5BbmRPdXQgMS44cyBlYXNlLW91''@;'; put 'put ''dCAuNjc1cyBpbmZpbml0ZX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb24pey5jZHMtaW50ZXJuYWwtZG90LTEsLmNkcy1pbnRlcm5hbC1kb3QtMiwuY2RzLWludGVybmFsLWRvdC0ze2FuaW1hdGlvbjpub25lfX1gO2NvbnN0IHpiZT1bInVua25vd24iLHtvdXRsaW5lOic8Y2lyY2xl''@;'; put 'put ''IGNsYXNzPSJjZHMtaW50ZXJuYWwtZG90LTMiIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMiIgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY2xhc3M9ImNkcy1pbnRlcm5hbC1kb3QtMSIgY3g9IjQuOSIgY3k9IjE4''@;'; put 'put ''IiByPSIyLjkiLz4nfV07Y2xhc3MgV3N7c3RhdGljIGdldCByZWdpc3RyeSgpe3JldHVybnt1bmtub3duOnpiZVsxXSwuLi5TdS5zdGF0ZS5pY29uUmVnaXN0cnl9fXN0YXRpYyBhZGRJY29ucyguLi5jKXtTdS5zdGF0ZS5pY29uUmVnaXN0cnk9ey4uLlN1LnN0YXRlLmljb25SZWdpc3RyeSwu''@;'; put 'put ''Li5PYmplY3QuZnJvbUVudHJpZXMoYy5maWx0ZXIoKFthXSk9PiFXcy5yZWdpc3RyeVthXSkpfX1zdGF0aWMgYWRkQWxpYXNlcyguLi5jKXtjb25zdCBhPWMuZmlsdGVyKChbZF0pPT5Xcy5yZWdpc3RyeVtkXSkuZmxhdE1hcCgoW2QsaF0pPT5oLm1hcChmPT5bZixXcy5yZWdpc3RyeVtkXV0p''@;'; put 'put ''KTtTdS5zdGF0ZS5pY29uUmVnaXN0cnk9ey4uLlN1LnN0YXRlLmljb25SZWdpc3RyeSwuLi5PYmplY3QuZnJvbUVudHJpZXMoYSl9fXN0YXRpYyBnZXRJY29uTmFtZUZyb21TaGFwZShjKXtyZXR1cm4gY1swXX19dmFyIG0zLGw7ZnVuY3Rpb24gV2JlKGwsYyl7bGV0IGE9IiI7c3dpdGNoKGZ1''@;'; put 'put ''bmN0aW9uIFViZShsKXtzd2l0Y2goITApe2Nhc2UgYW0obCk6cmV0dXJuIG0zLk5pbFNpemVWYWx1ZTtjYXNlIGZ1bmN0aW9uIGlvZShsKXtyZXR1cm5bInh4cyIsInhzIiwic20iLCJtZCIsImxnIiwieGwiLCJ4eGwiXS5pbmRleE9mKGwpPi0xfShsKTpyZXR1cm4gbTMuVmFsaWRTaXplU3Ry''@;'; put 'put ''aW5nO2Nhc2UgZnVuY3Rpb24gSnJlKGwpe3JldHVybiBheihsKSYmIVhyZShsLnRyaW0oKSkmJitsPT0rbH0obCk6cmV0dXJuIG0zLlZhbGlkTnVtZXJpY1N0cmluZztkZWZhdWx0OnJldHVybiBtMy5CYWRTaXplVmFsdWV9fShmdW5jdGlvbiBaYmUobCl7cmV0dXJuIGFtKGwpPyIiOmZ1bmN0''@;'; put 'put ''aW9uIFdfZShsLGMsYT0iIil7Y29uc3QgZD1sLnNwbGl0KCIgIiksaD0iIj09PWE/ZC5maWx0ZXIoZj0+ZiE9PWMpOmQubWFwKGY9PmY9PT1jP2E6Zik7cmV0dXJuIGgubGVuZ3RoPjA/aC5qb2luKCIgIik6IiJ9KGwsImZpdCIpfShjKSkpe2Nhc2UgbTMuVmFsaWROdW1lcmljU3RyaW5nOnJl''@;'; put 'put ''dHVybiBhPUR6KHBhcnNlSW50KGMpKSx2b2lkIGZ1bmN0aW9uIFRiZShsLC4uLmMpe2MuZm9yRWFjaCgoW2EsZF0pPT57bC5zdHlsZVthXT1kfSl9KGwsLi4uZnVuY3Rpb24gWWJlKGwsYyl7cmV0dXJuIWJTKGwpJiZsLmluZGV4T2YoImZpdCIpPi0xP1tbIndpZHRoIiwiYXV0byJdLFsiaGVp''@;'; put 'put ''Z2h0IiwiYXV0byJdLFsibWluLXdpZHRoIixjXSxbIm1pbi1oZWlnaHQiLGNdXTpbWyJ3aWR0aCIsY10sWyJoZWlnaHQiLGNdLFsibWluLXdpZHRoIixjXSxbIm1pbi1oZWlnaHQiLGNdXX0oYyxhKSk7Y2FzZSBtMy5WYWxpZFNpemVTdHJpbmc6Y2FzZSBtMy5OaWxTaXplVmFsdWU6cmV0dXJu''@;'; put 'put ''IHZvaWQgZnVuY3Rpb24ga2JlKGwsLi4uYyl7Yy5mb3JFYWNoKGE9PntsLnN0eWxlW2FdPSIifSl9KGwsIndpZHRoIiwiaGVpZ2h0IiwibWluLXdpZHRoIiwibWluLWhlaWdodCIpO2RlZmF1bHQ6cmV0dXJufX1mdW5jdGlvbiBSeihsKXtyZXR1cm4gbC5iYWRnZSYmKCJpbmhlcml0LXRyaWFu''@;'; put 'put ''Z2xlIj09PWwuYmFkZ2V8fCJ3YXJuaW5nLXRyaWFuZ2xlIj09PWwuYmFkZ2UpfShsPW0zfHwobTM9e30pKS5CYWRTaXplVmFsdWU9ImJhZC12YWx1ZSIsbC5WYWxpZFNpemVTdHJpbmc9InZhbHVlLWlzLXN0cmluZyIsbC5WYWxpZE51bWVyaWNTdHJpbmc9InZhbHVlLWlzLW51bWVyaWMiLGwu''@;'; put 'put ''TmlsU2l6ZVZhbHVlPSJ2YWx1ZS1pcy1uaWwiO2NsYXNzIHoyIGV4dGVuZHMgcXZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3NoYXBlPSJ1bmtub3duIix0aGlzLnNvbGlkPSExLHRoaXMuaW52ZXJzZT0hMX1zdGF0aWMgZ2V0IHN0eWxlcygpe3JldHVybltKaWUs''@;'; put 'put ''amJlXX1nZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy5fc2hhcGV9c2V0IHNoYXBlKGMpe2lmKGZ1bmN0aW9uIE1fZShsLGMpe3JldHVybiFhbShsKSYmZWllKGwsYyl9KGMsdGhpcy5fc2hhcGUpKXtjb25zdCBhPXRoaXMuX3NoYXBlO3RoaXMuX3NoYXBlPWMsdGhpcy5yZXF1ZXN0VXBkYXRlKCJz''@;'; put 'put ''aGFwZSIsYSl9fWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9c2V0IHNpemUoYyl7aWYoZnVuY3Rpb24gU19lKGwsYyl7cmV0dXJuIGZ1bmN0aW9uIENfZShsKXtyZXR1cm4gSkQoU3RyaW5nLGwpfHxiUyhsKX0obCkmJmVpZShsLGMpfShjLHRoaXMuX3NpemUpKXtjb25zdCBhPXRoaXMu''@;'; put 'put ''X3NpemU7dGhpcy5fc2l6ZT1jLFdiZSh0aGlzLGMpLHRoaXMucmVxdWVzdFVwZGF0ZSgic2l6ZSIsYSl9fXVwZGF0ZWQoYyl7aWYoYy5oYXMoImlubmVyT2Zmc2V0IikmJnRoaXMuaW5uZXJPZmZzZXQ+MCl7Y29uc3QgYT1EeigtMSp0aGlzLmlubmVyT2Zmc2V0KSxkPWBjYWxjKDEwMCUgKyAk''@;'; put 'put ''e0R6KDIqdGhpcy5pbm5lck9mZnNldCl9KWA7dGhpcy5zdmcuc3R5bGUud2lkdGg9ZCx0aGlzLnN2Zy5zdHlsZS5oZWlnaHQ9ZCx0aGlzLnN2Zy5zdHlsZS5tYXJnaW49YCR7YX0gMCAwICR7YX1gfX1maXJzdFVwZGF0ZWQoYyl7aWYoc3VwZXIuZmlyc3RVcGRhdGVkKGMpLHRoaXMuaXNDb25u''@;'; put 'put ''ZWN0ZWQpe2xldCBhPSJ1bmtub3duIjt0aGlzLnN1YnNjcmlwdGlvbj1TdS5zdGF0ZVVwZGF0ZXMuc3Vic2NyaWJlKGQ9PnsiaWNvblJlZ2lzdHJ5Ij09PWQua2V5JiZXcy5yZWdpc3RyeVt0aGlzLnNoYXBlXSYmYSE9PXRoaXMuc2hhcGUmJihhPXRoaXMuc2hhcGUsdGhpcy5yZXF1ZXN0VXBk''@;'; put 'put ''YXRlKCJzaGFwZSIpKX0pfX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCl9cmVuZGVyKCl7cmV0dXJuIGF6KFdzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdKT9UemA8c3BhbiAuaW5uZXJIVE1M''@;'; put 'put ''PSIke1dzLnJlZ2lzdHJ5W3RoaXMuc2hhcGVdfSI+PC9zcGFuPmA6U2JlYDxzdmcgLmlubmVySFRNTD0iJHtmdW5jdGlvbiAkYmUobCl7Y29uc3QgYz1Xcy5yZWdpc3RyeVtsLnNoYXBlXT8/V3MucmVnaXN0cnkudW5rbm93bjtsZXQgYT1sLnNvbGlkJiZjLnNvbGlkP2Muc29saWQ6Yy5vdXRs''@;'; put 'put ''aW5lO3JldHVybiBsLmJhZGdlJiYhUnoobCkmJihhPWwuc29saWQ/Yy5zb2xpZEJhZGdlZD8/YTpjLm91dGxpbmVCYWRnZWQ/P2EpLFJ6KGwpJiYoYT1sLnNvbGlkP2Muc29saWRBbGVydGVkPz9hOmMub3V0bGluZUFsZXJ0ZWQ/P2EpLGF9KHRoaXMpK2Z1bmN0aW9uIEdiZShsKXtsZXQgYz0i''@;'; put 'put ''IjtyZXR1cm4gbC5iYWRnZSYmUnoobCk/Yz0nPHBhdGggZD0iTTI2Ljg1IDEuMTRMMjEuMTMgMTFhMS4yOCAxLjI4IDAgMDAxLjEgMmgxMS40NWExLjI4IDEuMjggMCAwMDEuMS0ybC01LjcyLTkuODZhMS4yOCAxLjI4IDAgMDAtMi4yMSAweiIgY2xhc3M9ImFsZXJ0IiAvPic6bC5iYWRnZSYm''@;'; put 'put ''KGM9JzxjaXJjbGUgY3g9IjMwIiBjeT0iNiIgcj0iNSIgY2xhc3M9ImJhZGdlIiAvPicpLGN9KHRoaXMpfSIgdmlld0JveD0iMCAwIDM2IDM2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3N2Zz5gfX1mdW5jdGlvbiB4UyhsKXtyZXR1''@;'; put 'put ''cm4hIWwmJihsIGluc3RhbmNlb2YgQ258fHN0KGwubGlmdCkmJnN0KGwuc3Vic2NyaWJlKSl9X2woW3djKHt0eXBlOlN0cmluZ30pXSx6Mi5wcm90b3R5cGUsInNoYXBlIixudWxsKSxfbChbd2Moe3R5cGU6U3RyaW5nfSldLHoyLnByb3RvdHlwZSwic2l6ZSIsbnVsbCksX2woW3djKHt0eXBl''@;'; put 'put ''OlN0cmluZ30pXSx6Mi5wcm90b3R5cGUsImRpcmVjdGlvbiIsdm9pZCAwKSxfbChbd2Moe3R5cGU6U3RyaW5nfSldLHoyLnByb3RvdHlwZSwiZmxpcCIsdm9pZCAwKSxfbChbd2Moe3R5cGU6Qm9vbGVhbn0pXSx6Mi5wcm90b3R5cGUsInNvbGlkIix2b2lkIDApLF9sKFt3Yyh7dHlwZTpTdHJp''@;'; put 'put ''bmd9KV0sejIucHJvdG90eXBlLCJzdGF0dXMiLHZvaWQgMCksX2woW3djKHt0eXBlOkJvb2xlYW59KV0sejIucHJvdG90eXBlLCJpbnZlcnNlIix2b2lkIDApLF9sKFt3Yyh7dHlwZTpTdHJpbmd9KV0sejIucHJvdG90eXBlLCJiYWRnZSIsdm9pZCAwKSxfbChbcm9lKHt0eXBlOk51bWJlcn0p''@;'; put 'put ''XSx6Mi5wcm90b3R5cGUsImlubmVyT2Zmc2V0Iix2b2lkIDApLF9sKFtmdW5jdGlvbiBCYmUobCxjKXtyZXR1cm4oKHtmaW5pc2hlcjpsLGRlc2NyaXB0b3I6Y30pPT4oYSxkKT0+e3ZhciBoO2lmKHZvaWQgMD09PWQpe2NvbnN0IGY9bnVsbCE9PShoPWEub3JpZ2luYWxLZXkpJiZ2b2lkIDAh''@;'; put 'put ''PT1oP2g6YS5rZXksdj1udWxsIT1jP3traW5kOiJtZXRob2QiLHBsYWNlbWVudDoicHJvdG90eXBlIixrZXk6ZixkZXNjcmlwdG9yOmMoYS5rZXkpfTp7Li4uYSxrZXk6Zn07cmV0dXJuIG51bGwhPWwmJih2LmZpbmlzaGVyPWZ1bmN0aW9uKFMpe2woUyxmKX0pLHZ9e2NvbnN0IGY9YS5jb25z''@;'; put 'put ''dHJ1Y3Rvcjt2b2lkIDAhPT1jJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxkLGMoZCkpLGw/LihmLGQpfX0pKHtkZXNjcmlwdG9yOmE9Pntjb25zdCBkPXtnZXQoKXt2YXIgaCxmO3JldHVybiBudWxsIT09KGY9bnVsbD09PShoPXRoaXMucmVuZGVyUm9vdCl8fHZvaWQgMD09PWg/dm9pZCAw''@;'; put 'put ''OmgucXVlcnlTZWxlY3RvcihsKSkmJnZvaWQgMCE9PWY/ZjpudWxsfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07aWYoYyl7Y29uc3QgaD0ic3ltYm9sIj09dHlwZW9mIGE/U3ltYm9sKCk6Il9fIithO2QuZ2V0PWZ1bmN0aW9uKCl7dmFyIGYsdjtyZXR1cm4gdm9pZCAwPT09dGhp''@;'; put 'put ''c1toXSYmKHRoaXNbaF09bnVsbCE9PSh2PW51bGw9PT0oZj10aGlzLnJlbmRlclJvb3QpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnF1ZXJ5U2VsZWN0b3IobCkpJiZ2b2lkIDAhPT12P3Y6bnVsbCksdGhpc1toXX19cmV0dXJuIGR9fSl9KCJzdmciKV0sejIucHJvdG90eXBlLCJzdmciLHZvaWQg''@;'; put 'put ''MCksdmllKCJjZHMtaWNvbiIsejIpO2NvbnN0IEx6PWw9PmwmJiJudW1iZXIiPT10eXBlb2YgbC5sZW5ndGgmJiJmdW5jdGlvbiIhPXR5cGVvZiBsO2Z1bmN0aW9uIG9vZShsKXtyZXR1cm4gc3QobD8udGhlbil9ZnVuY3Rpb24gc29lKGwpe3JldHVybiBzdChsW19uXSl9ZnVuY3Rpb24gYW9l''@;'; put 'put ''KGwpe3JldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciYmc3QobD8uW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSl9ZnVuY3Rpb24gbG9lKGwpe3JldHVybiBuZXcgVHlwZUVycm9yKGBZb3UgcHJvdmlkZWQgJHtudWxsIT09bCYmIm9iamVjdCI9PXR5cGVvZiBsPyJhbiBpbnZhbGlkIG9iamVjdCI6''@;'; put 'put ''YCcke2x9J2B9IHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuYCl9Y29uc3QgY29lPWZ1bmN0aW9uIHR5ZSgpe3JldHVybiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifSgpO2Z1bmN0aW9uIHVvZShsKXtyZXR1cm4gc3QobD8uW2NvZV0pfWZ1bmN0aW9uIGRvZShsKXtyZXR1cm4gZnVuY3Rpb24geWllKGwsYyxhKXtpZighU3ltYm9sLmFz''@;'; put 'put ''eW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGgsZD1hLmFwcGx5KGwsY3x8W10pLGY9W107cmV0dXJuIGg9e30sUygibmV4dCIpLFMoInRocm93IiksUygicmV0dXJuIixmdW5jdGlvbiB2KE9lKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oWWUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoWWUpLnRoZW4oT2UscGUpfX0pLGhbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGg7ZnVuY3Rpb24gUyhPZSxZZSl7ZFtPZV0mJihoW09lXT1mdW5jdGlvbihldCl7cmV0dXJuIG5ldyBQ''@;'; put 'put ''cm9taXNlKGZ1bmN0aW9uKGR0LGh0KXtmLnB1c2goW09lLGV0LGR0LGh0XSk+MXx8VihPZSxldCl9KX0sWWUmJihoW09lXT1ZZShoW09lXSkpKX1mdW5jdGlvbiBWKE9lLFllKXt0cnl7IWZ1bmN0aW9uIFEoT2Upe09lLnZhbHVlIGluc3RhbmNlb2YgbG0/UHJvbWlzZS5yZXNvbHZlKE9lLnZh''@;'; put 'put ''bHVlLnYpLnRoZW4oZGUscGUpOkNlKGZbMF1bMl0sT2UpfShkW09lXShZZSkpfWNhdGNoKGV0KXtDZShmWzBdWzNdLGV0KX19ZnVuY3Rpb24gZGUoT2Upe1YoIm5leHQiLE9lKX1mdW5jdGlvbiBwZShPZSl7VigidGhyb3ciLE9lKX1mdW5jdGlvbiBDZShPZSxZZSl7T2UoWWUpLGYuc2hpZnQo''@;'; put 'put ''KSxmLmxlbmd0aCYmVihmWzBdWzBdLGZbMF1bMV0pfX0odGhpcyxhcmd1bWVudHMsZnVuY3Rpb24qKCl7Y29uc3QgYT1sLmdldFJlYWRlcigpO3RyeXtmb3IoOzspe2NvbnN0e3ZhbHVlOmQsZG9uZTpofT15aWVsZCBsbShhLnJlYWQoKSk7aWYoaClyZXR1cm4geWllbGQgbG0odm9pZCAwKTt5''@;'; put 'put ''aWVsZCB5aWVsZCBsbShkKX19ZmluYWxseXthLnJlbGVhc2VMb2NrKCl9fSl9ZnVuY3Rpb24gaG9lKGwpe3JldHVybiBzdChsPy5nZXRSZWFkZXIpfWZ1bmN0aW9uIEUwKGwpe2lmKGwgaW5zdGFuY2VvZiBDbilyZXR1cm4gbDtpZihudWxsIT1sKXtpZihzb2UobCkpcmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IG55ZShsKXtyZXR1cm4gbmV3IENuKGM9Pntjb25zdCBhPWxbX25dKCk7aWYoc3QoYS5zdWJzY3JpYmUpKXJldHVybiBhLnN1YnNjcmliZShjKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJs''@;'; put 'put ''ZSIpfSl9KGwpO2lmKEx6KGwpKXJldHVybiBmdW5jdGlvbiByeWUobCl7cmV0dXJuIG5ldyBDbihjPT57Zm9yKGxldCBhPTA7YTxsLmxlbmd0aCYmIWMuY2xvc2VkO2ErKyljLm5leHQobFthXSk7Yy5jb21wbGV0ZSgpfSl9KGwpO2lmKG9vZShsKSlyZXR1cm4gZnVuY3Rpb24gaXllKGwpe3Jl''@;'; put 'put ''dHVybiBuZXcgQ24oYz0+e2wudGhlbihhPT57Yy5jbG9zZWR8fChjLm5leHQoYSksYy5jb21wbGV0ZSgpKX0sYT0+Yy5lcnJvcihhKSkudGhlbihudWxsLEduKX0pfShsKTtpZihhb2UobCkpcmV0dXJuIGZvZShsKTtpZih1b2UobCkpcmV0dXJuIGZ1bmN0aW9uIG95ZShsKXtyZXR1cm4gbmV3''@;'; put 'put ''IENuKGM9Pntmb3IoY29uc3QgYSBvZiBsKWlmKGMubmV4dChhKSxjLmNsb3NlZClyZXR1cm47Yy5jb21wbGV0ZSgpfSl9KGwpO2lmKGhvZShsKSlyZXR1cm4gZnVuY3Rpb24gc3llKGwpe3JldHVybiBmb2UoZG9lKGwpKX0obCl9dGhyb3cgbG9lKGwpfWZ1bmN0aW9uIGZvZShsKXtyZXR1cm4g''@;'; put 'put ''bmV3IENuKGM9PnsoZnVuY3Rpb24gYXllKGwsYyl7dmFyIGEsZCxoLGY7cmV0dXJuIGZ1bmN0aW9uIF9pZShsLGMsYSxkKXtyZXR1cm4gbmV3KGF8fChhPVByb21pc2UpKShmdW5jdGlvbihmLHYpe2Z1bmN0aW9uIFMoZGUpe3RyeXtRKGQubmV4dChkZSkpfWNhdGNoKHBlKXt2KHBlKX19ZnVu''@;'; put 'put ''Y3Rpb24gVihkZSl7dHJ5e1EoZC50aHJvdyhkZSkpfWNhdGNoKHBlKXt2KHBlKX19ZnVuY3Rpb24gUShkZSl7ZGUuZG9uZT9mKGRlLnZhbHVlKTpmdW5jdGlvbiBoKGYpe3JldHVybiBmIGluc3RhbmNlb2YgYT9mOm5ldyBhKGZ1bmN0aW9uKHYpe3YoZil9KX0oZGUudmFsdWUpLnRoZW4oUyxW''@;'; put 'put ''KX1RKChkPWQuYXBwbHkobCxjfHxbXSkpLm5leHQoKSl9KX0odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RyeXtmb3IoYT13aWUobCk7IShkPXlpZWxkIGEubmV4dCgpKS5kb25lOylpZihjLm5leHQoZC52YWx1ZSksYy5jbG9zZWQpcmV0dXJufWNhdGNoKHYpe2g9e2Vycm9yOnZ9''@;'; put 'put ''fWZpbmFsbHl7dHJ5e2QmJiFkLmRvbmUmJihmPWEucmV0dXJuKSYmKHlpZWxkIGYuY2FsbChhKSl9ZmluYWxseXtpZihoKXRocm93IGguZXJyb3J9fWMuY29tcGxldGUoKX0pfSkobCxjKS5jYXRjaChhPT5jLmVycm9yKGEpKX0pfWZ1bmN0aW9uIGE0KGwsYyxhLGQ9MCxoPSExKXtjb25zdCBm''@;'; put 'put ''PWMuc2NoZWR1bGUoZnVuY3Rpb24oKXthKCksaD9sLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsZCkpOnRoaXMudW5zdWJzY3JpYmUoKX0sZCk7aWYobC5hZGQoZiksIWgpcmV0dXJuIGZ9ZnVuY3Rpb24gcG9lKGwsYz0wKXtyZXR1cm4gZGkoKGEsZCk9PnthLnN1YnNjcmliZShmaShkLGg9PmE0''@;'; put 'put ''KGQsbCwoKT0+ZC5uZXh0KGgpLGMpLCgpPT5hNChkLGwsKCk9PmQuY29tcGxldGUoKSxjKSxoPT5hNChkLGwsKCk9PmQuZXJyb3IoaCksYykpKX0pfWZ1bmN0aW9uIGdvZShsLGM9MCl7cmV0dXJuIGRpKChhLGQpPT57ZC5hZGQobC5zY2hlZHVsZSgoKT0+YS5zdWJzY3JpYmUoZCksYykpfSl9''@;'; put 'put ''ZnVuY3Rpb24gbW9lKGwsYyl7aWYoIWwpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgQ24oYT0+e2E0KGEsYywoKT0+e2NvbnN0IGQ9bFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTthNChhLGMsKCk9PntkLm5leHQoKS50aGVuKGg9PntoLmRv''@;'; put 'put ''bmU/YS5jb21wbGV0ZSgpOmEubmV4dChoLnZhbHVlKX0pfSwwLCEwKX0pfSl9ZnVuY3Rpb24gUWMobCxjKXtyZXR1cm4gYz9mdW5jdGlvbiBmeWUobCxjKXtpZihudWxsIT1sKXtpZihzb2UobCkpcmV0dXJuIGZ1bmN0aW9uIGx5ZShsLGMpe3JldHVybiBFMChsKS5waXBlKGdvZShjKSxwb2Uo''@;'; put 'put ''YykpfShsLGMpO2lmKEx6KGwpKXJldHVybiBmdW5jdGlvbiB1eWUobCxjKXtyZXR1cm4gbmV3IENuKGE9PntsZXQgZD0wO3JldHVybiBjLnNjaGVkdWxlKGZ1bmN0aW9uKCl7ZD09PWwubGVuZ3RoP2EuY29tcGxldGUoKTooYS5uZXh0KGxbZCsrXSksYS5jbG9zZWR8fHRoaXMuc2NoZWR1bGUo''@;'; put 'put ''KSl9KX0pfShsLGMpO2lmKG9vZShsKSlyZXR1cm4gZnVuY3Rpb24gY3llKGwsYyl7cmV0dXJuIEUwKGwpLnBpcGUoZ29lKGMpLHBvZShjKSl9KGwsYyk7aWYoYW9lKGwpKXJldHVybiBtb2UobCxjKTtpZih1b2UobCkpcmV0dXJuIGZ1bmN0aW9uIGR5ZShsLGMpe3JldHVybiBuZXcgQ24oYT0+''@;'; put 'put ''e2xldCBkO3JldHVybiBhNChhLGMsKCk9PntkPWxbY29lXSgpLGE0KGEsYywoKT0+e2xldCBoLGY7dHJ5eyh7dmFsdWU6aCxkb25lOmZ9PWQubmV4dCgpKX1jYXRjaCh2KXtyZXR1cm4gdm9pZCBhLmVycm9yKHYpfWY/YS5jb21wbGV0ZSgpOmEubmV4dChoKX0sMCwhMCl9KSwoKT0+c3QoZD8u''@;'; put 'put ''cmV0dXJuKSYmZC5yZXR1cm4oKX0pfShsLGMpO2lmKGhvZShsKSlyZXR1cm4gZnVuY3Rpb24gaHllKGwsYyl7cmV0dXJuIG1vZShkb2UobCksYyl9KGwsYyl9dGhyb3cgbG9lKGwpfShsLGMpOkUwKGwpfWZ1bmN0aW9uIHZvZShsKXtyZXR1cm4gbCYmc3QobC5zY2hlZHVsZSl9ZnVuY3Rpb24g''@;'; put 'put ''T3oobCl7cmV0dXJuIGxbbC5sZW5ndGgtMV19ZnVuY3Rpb24gX29lKGwpe3JldHVybiBzdChPeihsKSk/bC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gRVMobCl7cmV0dXJuIHZvZShPeihsKSk/bC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gT28oLi4ubCl7cmV0dXJuIFFjKGwsRVMobCkpfWNvbnN0''@;'; put 'put ''e2lzQXJyYXk6Z3llfT1BcnJheSx7Z2V0UHJvdG90eXBlT2Y6bXllLHByb3RvdHlwZTp2eWUsa2V5czpfeWV9PU9iamVjdDtmdW5jdGlvbiBib2UobCl7aWYoMT09PWwubGVuZ3RoKXtjb25zdCBjPWxbMF07aWYoZ3llKGMpKXJldHVybnthcmdzOmMsa2V5czpudWxsfTtpZihmdW5jdGlvbiBi''@;'; put 'put ''eWUobCl7cmV0dXJuIGwmJiJvYmplY3QiPT10eXBlb2YgbCYmbXllKGwpPT09dnllfShjKSl7Y29uc3QgYT1feWUoYyk7cmV0dXJue2FyZ3M6YS5tYXAoZD0+Y1tkXSksa2V5czphfX19cmV0dXJue2FyZ3M6bCxrZXlzOm51bGx9fWNvbnN0e2lzQXJyYXk6eXllfT1BcnJheTtmdW5jdGlvbiBQ''@;'; put 'put ''eihsKXtyZXR1cm4gYnIoYz0+ZnVuY3Rpb24gd3llKGwsYyl7cmV0dXJuIHl5ZShjKT9sKC4uLmMpOmwoYyl9KGwsYykpfWZ1bmN0aW9uIHlvZShsLGMpe3JldHVybiBsLnJlZHVjZSgoYSxkLGgpPT4oYVtkXT1jW2hdLGEpLHt9KX1mdW5jdGlvbiBUUyguLi5sKXtjb25zdCBjPUVTKGwpLGE9''@;'; put 'put ''X29lKGwpLHthcmdzOmQsa2V5czpofT1ib2UobCk7aWYoMD09PWQubGVuZ3RoKXJldHVybiBRYyhbXSxjKTtjb25zdCBmPW5ldyBDbihmdW5jdGlvbiBDeWUobCxjLGE9T24pe3JldHVybiBkPT57d29lKGMsKCk9Pntjb25zdHtsZW5ndGg6aH09bCxmPW5ldyBBcnJheShoKTtsZXQgdj1oLFM9''@;'; put 'put ''aDtmb3IobGV0IFY9MDtWPGg7VisrKXdvZShjLCgpPT57Y29uc3QgUT1RYyhsW1ZdLGMpO2xldCBkZT0hMTtRLnN1YnNjcmliZShmaShkLHBlPT57ZltWXT1wZSxkZXx8KGRlPSEwLFMtLSksU3x8ZC5uZXh0KGEoZi5zbGljZSgpKSl9LCgpPT57LS12fHxkLmNvbXBsZXRlKCl9KSl9LGQpfSxk''@;'; put 'put ''KX19KGQsYyxoP3Y9PnlvZShoLHYpOk9uKSk7cmV0dXJuIGE/Zi5waXBlKFB6KGEpKTpmfWZ1bmN0aW9uIHdvZShsLGMsYSl7bD9hNChhLGwsYyk6YygpfWNvbnN0IHNJPXh0KGw9PmZ1bmN0aW9uKCl7bCh0aGlzKSx0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXMubWVzc2FnZT0ibm8gZWxl''@;'; put 'put ''bWVudHMgaW4gc2VxdWVuY2UifSk7ZnVuY3Rpb24gczAobCxjLGE9MS8wKXtyZXR1cm4gc3QoYyk/czAoKGQsaCk9PmJyKChmLHYpPT5jKGQsZixoLHYpKShFMChsKGQsaCkpKSxhKTooIm51bWJlciI9PXR5cGVvZiBjJiYoYT1jKSxkaSgoZCxoKT0+ZnVuY3Rpb24gU3llKGwsYyxhLGQsaCxm''@;'; put 'put ''LHYsUyl7Y29uc3QgVj1bXTtsZXQgUT0wLGRlPTAscGU9ITE7Y29uc3QgQ2U9KCk9PntwZSYmIVYubGVuZ3RoJiYhUSYmYy5jb21wbGV0ZSgpfSxPZT1ldD0+UTxkP1llKGV0KTpWLnB1c2goZXQpLFllPWV0PT57ZiYmYy5uZXh0KGV0KSxRKys7bGV0IGR0PSExO0UwKGEoZXQsZGUrKykpLnN1''@;'; put 'put ''YnNjcmliZShmaShjLGh0PT57aD8uKGh0KSxmP09lKGh0KTpjLm5leHQoaHQpfSwoKT0+e2R0PSEwfSx2b2lkIDAsKCk9PntpZihkdCl0cnl7Zm9yKFEtLTtWLmxlbmd0aCYmUTxkOyl7Y29uc3QgaHQ9Vi5zaGlmdCgpO3Y/YTQoYyx2LCgpPT5ZZShodCkpOlllKGh0KX1DZSgpfWNhdGNoKGh0''@;'; put 'put ''KXtjLmVycm9yKGh0KX19KSl9O3JldHVybiBsLnN1YnNjcmliZShmaShjLE9lLCgpPT57cGU9ITAsQ2UoKX0pKSwoKT0+e1M/LigpfX0oZCxoLGwsYSkpKX1mdW5jdGlvbiBLdihsPTEvMCl7cmV0dXJuIHMwKE9uLGwpfWZ1bmN0aW9uIEZ6KC4uLmwpe3JldHVybiBmdW5jdGlvbiBNeWUoKXty''@;'; put 'put ''ZXR1cm4gS3YoMSl9KCkoUWMobCxFUyhsKSkpfWZ1bmN0aW9uIENvZShsKXtyZXR1cm4gbmV3IENuKGM9PntFMChsKCkpLnN1YnNjcmliZShjKX0pfWZ1bmN0aW9uIGFJKGwsYyl7Y29uc3QgYT1zdChsKT9sOigpPT5sLGQ9aD0+aC5lcnJvcihhKCkpO3JldHVybiBuZXcgQ24oYz9oPT5jLnNj''@;'; put 'put ''aGVkdWxlKGQsMCxoKTpkKX1jb25zdCBVMj1uZXcgQ24obD0+bC5jb21wbGV0ZSgpKTtmdW5jdGlvbiBOeigpe3JldHVybiBkaSgobCxjKT0+e2xldCBhPW51bGw7bC5fcmVmQ291bnQrKztjb25zdCBkPWZpKGMsdm9pZCAwLHZvaWQgMCx2b2lkIDAsKCk9PntpZighbHx8bC5fcmVmQ291bnQ8''@;'; put 'put ''PTB8fDA8LS1sLl9yZWZDb3VudClyZXR1cm4gdm9pZChhPW51bGwpO2NvbnN0IGg9bC5fY29ubmVjdGlvbixmPWE7YT1udWxsLGgmJighZnx8aD09PWYpJiZoLnVuc3Vic2NyaWJlKCksYy51bnN1YnNjcmliZSgpfSk7bC5zdWJzY3JpYmUoZCksZC5jbG9zZWR8fChhPWwuY29ubmVjdCgpKX0p''@;'; put 'put ''fWNsYXNzIEh6IGV4dGVuZHMgQ257Y29uc3RydWN0b3IoYyxhKXtzdXBlcigpLHRoaXMuc291cmNlPWMsdGhpcy5zdWJqZWN0RmFjdG9yeT1hLHRoaXMuX3N1YmplY3Q9bnVsbCx0aGlzLl9yZWZDb3VudD0wLHRoaXMuX2Nvbm5lY3Rpb249bnVsbCxocihjKSYmKHRoaXMubGlmdD1jLmxpZnQp''@;'; put 'put ''fV9zdWJzY3JpYmUoYyl7cmV0dXJuIHRoaXMuZ2V0U3ViamVjdCgpLnN1YnNjcmliZShjKX1nZXRTdWJqZWN0KCl7Y29uc3QgYz10aGlzLl9zdWJqZWN0O3JldHVybighY3x8Yy5pc1N0b3BwZWQpJiYodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9''@;'; put 'put ''X3RlYXJkb3duKCl7dGhpcy5fcmVmQ291bnQ9MDtjb25zdHtfY29ubmVjdGlvbjpjfT10aGlzO3RoaXMuX3N1YmplY3Q9dGhpcy5fY29ubmVjdGlvbj1udWxsLGM/LnVuc3Vic2NyaWJlKCl9Y29ubmVjdCgpe2xldCBjPXRoaXMuX2Nvbm5lY3Rpb247aWYoIWMpe2M9dGhpcy5fY29ubmVjdGlv''@;'; put 'put ''bj1uZXcgS3Q7Y29uc3QgYT10aGlzLmdldFN1YmplY3QoKTtjLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUoZmkoYSx2b2lkIDAsKCk9Pnt0aGlzLl90ZWFyZG93bigpLGEuY29tcGxldGUoKX0sZD0+e3RoaXMuX3RlYXJkb3duKCksYS5lcnJvcihkKX0sKCk9PnRoaXMuX3RlYXJkb3duKCkp''@;'; put 'put ''KSksYy5jbG9zZWQmJih0aGlzLl9jb25uZWN0aW9uPW51bGwsYz1LdC5FTVBUWSl9cmV0dXJuIGN9cmVmQ291bnQoKXtyZXR1cm4gTnooKSh0aGlzKX19ZnVuY3Rpb24gSjAobCxjKXtyZXR1cm4gZGkoKGEsZCk9PntsZXQgaD1udWxsLGY9MCx2PSExO2NvbnN0IFM9KCk9PnYmJiFoJiZkLmNv''@;'; put 'put ''bXBsZXRlKCk7YS5zdWJzY3JpYmUoZmkoZCxWPT57aD8udW5zdWJzY3JpYmUoKTtsZXQgUT0wO2NvbnN0IGRlPWYrKztFMChsKFYsZGUpKS5zdWJzY3JpYmUoaD1maShkLHBlPT5kLm5leHQoYz9jKFYscGUsZGUsUSsrKTpwZSksKCk9PntoPW51bGwsUygpfSkpfSwoKT0+e3Y9ITAsUygpfSkp''@;'; put 'put ''fSl9ZnVuY3Rpb24gWjIobCl7cmV0dXJuIGw8PTA/KCk9PlUyOmRpKChjLGEpPT57bGV0IGQ9MDtjLnN1YnNjcmliZShmaShhLGg9PnsrK2Q8PWwmJihhLm5leHQoaCksbDw9ZCYmYS5jb21wbGV0ZSgpKX0pKX0pfWZ1bmN0aW9uIGw0KC4uLmwpe2NvbnN0IGM9RVMobCk7cmV0dXJuIGRpKChh''@;'; put 'put ''LGQpPT57KGM/RnoobCxhLGMpOkZ6KGwsYSkpLnN1YnNjcmliZShkKX0pfWZ1bmN0aW9uIFphKGwsYyl7cmV0dXJuIGRpKChhLGQpPT57bGV0IGg9MDthLnN1YnNjcmliZShmaShkLGY9PmwuY2FsbChjLGYsaCsrKSYmZC5uZXh0KGYpKSl9KX1mdW5jdGlvbiBsSShsKXtyZXR1cm4gZGkoKGMs''@;'; put 'put ''YSk9PntsZXQgZD0hMTtjLnN1YnNjcmliZShmaShhLGg9PntkPSEwLGEubmV4dChoKX0sKCk9PntkfHxhLm5leHQobCksYS5jb21wbGV0ZSgpfSkpfSl9ZnVuY3Rpb24gU29lKGw9RXllKXtyZXR1cm4gZGkoKGMsYSk9PntsZXQgZD0hMTtjLnN1YnNjcmliZShmaShhLGg9PntkPSEwLGEubmV4''@;'; put 'put ''dChoKX0sKCk9PmQ/YS5jb21wbGV0ZSgpOmEuZXJyb3IobCgpKSkpfSl9ZnVuY3Rpb24gRXllKCl7cmV0dXJuIG5ldyBzSX1mdW5jdGlvbiBjbShsLGMpe2NvbnN0IGE9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gZD0+ZC5waXBlKGw/WmEoKGgsZik9PmwoaCxmLGQpKTpPbixaMigxKSxh''@;'; put 'put ''P2xJKGMpOlNvZSgoKT0+bmV3IHNJKSl9ZnVuY3Rpb24gWHYobCxjKXtyZXR1cm4gc3QoYyk/czAobCxjLDEpOnMwKGwsMSl9ZnVuY3Rpb24gTXUobCxjLGEpe2NvbnN0IGQ9c3QobCl8fGN8fGE/e25leHQ6bCxlcnJvcjpjLGNvbXBsZXRlOmF9Omw7cmV0dXJuIGQ/ZGkoKGgsZik9Pnt2YXIg''@;'; put 'put ''djtudWxsPT09KHY9ZC5zdWJzY3JpYmUpfHx2b2lkIDA9PT12fHx2LmNhbGwoZCk7bGV0IFM9ITA7aC5zdWJzY3JpYmUoZmkoZixWPT57dmFyIFE7bnVsbD09PShRPWQubmV4dCl8fHZvaWQgMD09PVF8fFEuY2FsbChkLFYpLGYubmV4dChWKX0sKCk9Pnt2YXIgVjtTPSExLG51bGw9PT0oVj1k''@;'; put 'put ''LmNvbXBsZXRlKXx8dm9pZCAwPT09Vnx8Vi5jYWxsKGQpLGYuY29tcGxldGUoKX0sVj0+e3ZhciBRO1M9ITEsbnVsbD09PShRPWQuZXJyb3IpfHx2b2lkIDA9PT1RfHxRLmNhbGwoZCxWKSxmLmVycm9yKFYpfSwoKT0+e3ZhciBWLFE7UyYmKG51bGw9PT0oVj1kLnVuc3Vic2NyaWJlKXx8dm9p''@;'; put 'put ''ZCAwPT09Vnx8Vi5jYWxsKGQpKSxudWxsPT09KFE9ZC5maW5hbGl6ZSl8fHZvaWQgMD09PVF8fFEuY2FsbChkKX0pKX0pOk9ufWZ1bmN0aW9uIEp2KGwpe3JldHVybiBkaSgoYyxhKT0+e2xldCBmLGQ9bnVsbCxoPSExO2Q9Yy5zdWJzY3JpYmUoZmkoYSx2b2lkIDAsdm9pZCAwLHY9PntmPUUw''@;'; put 'put ''KGwodixKdihsKShjKSkpLGQ/KGQudW5zdWJzY3JpYmUoKSxkPW51bGwsZi5zdWJzY3JpYmUoYSkpOmg9ITB9KSksaCYmKGQudW5zdWJzY3JpYmUoKSxkPW51bGwsZi5zdWJzY3JpYmUoYSkpfSl9ZnVuY3Rpb24gVnoobCl7cmV0dXJuIGw8PTA/KCk9PlUyOmRpKChjLGEpPT57bGV0IGQ9W107''@;'; put 'put ''Yy5zdWJzY3JpYmUoZmkoYSxoPT57ZC5wdXNoKGgpLGw8ZC5sZW5ndGgmJmQuc2hpZnQoKX0sKCk9Pntmb3IoY29uc3QgaCBvZiBkKWEubmV4dChoKTthLmNvbXBsZXRlKCl9LHZvaWQgMCwoKT0+e2Q9bnVsbH0pKX0pfWZ1bmN0aW9uIGtTKGwpe3JldHVybiBkaSgoYyxhKT0+e3RyeXtjLnN1''@;'; put 'put ''YnNjcmliZShhKX1maW5hbGx5e2EuYWRkKGwpfX0pfWZ1bmN0aW9uIFQwKGwpe3JldHVybiBkaSgoYyxhKT0+e0UwKGwpLnN1YnNjcmliZShmaShhLCgpPT5hLmNvbXBsZXRlKCksWW4pKSwhYS5jbG9zZWQmJmMuc3Vic2NyaWJlKGEpfSl9Y29uc3QgTXM9InByaW1hcnkiLEFTPVN5bWJvbCgi''@;'; put 'put ''Um91dGVUaXRsZSIpO2NsYXNzIEl5ZXtjb25zdHJ1Y3RvcihjKXt0aGlzLnBhcmFtcz1jfHx7fX1oYXMoYyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnBhcmFtcyxjKX1nZXQoYyl7aWYodGhpcy5oYXMoYykpe2NvbnN0IGE9dGhpcy5wYXJhbXNb''@;'; put 'put ''Y107cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YVswXTphfXJldHVybiBudWxsfWdldEFsbChjKXtpZih0aGlzLmhhcyhjKSl7Y29uc3QgYT10aGlzLnBhcmFtc1tjXTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOlthXX1yZXR1cm5bXX1nZXQga2V5cygpe3JldHVybiBPYmplY3Qua2V5cyh0''@;'; put 'put ''aGlzLnBhcmFtcyl9fWZ1bmN0aW9uIFF2KGwpe3JldHVybiBuZXcgSXllKGwpfWZ1bmN0aW9uIFJ5ZShsLGMsYSl7Y29uc3QgZD1hLnBhdGguc3BsaXQoIi8iKTtpZihkLmxlbmd0aD5sLmxlbmd0aHx8ImZ1bGwiPT09YS5wYXRoTWF0Y2gmJihjLmhhc0NoaWxkcmVuKCl8fGQubGVuZ3RoPGwu''@;'; put 'put ''bGVuZ3RoKSlyZXR1cm4gbnVsbDtjb25zdCBoPXt9O2ZvcihsZXQgZj0wO2Y8ZC5sZW5ndGg7ZisrKXtjb25zdCB2PWRbZl0sUz1sW2ZdO2lmKHYuc3RhcnRzV2l0aCgiOiIpKWhbdi5zdWJzdHJpbmcoMSldPVM7ZWxzZSBpZih2IT09Uy5wYXRoKXJldHVybiBudWxsfXJldHVybntjb25zdW1l''@;'; put 'put ''ZDpsLnNsaWNlKDAsZC5sZW5ndGgpLHBvc1BhcmFtczpofX1mdW5jdGlvbiB2MyhsLGMpe2NvbnN0IGE9bD9CeihsKTp2b2lkIDAsZD1jP0J6KGMpOnZvaWQgMDtpZighYXx8IWR8fGEubGVuZ3RoIT1kLmxlbmd0aClyZXR1cm4hMTtsZXQgaDtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrKylp''@;'; put 'put ''ZihoPWFbZl0sIU1vZShsW2hdLGNbaF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEJ6KGwpe3JldHVyblsuLi5PYmplY3Qua2V5cyhsKSwuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGwpXX1mdW5jdGlvbiBNb2UobCxjKXtpZihBcnJheS5pc0FycmF5KGwpJiZBcnJheS5p''@;'; put 'put ''c0FycmF5KGMpKXtpZihsLmxlbmd0aCE9PWMubGVuZ3RoKXJldHVybiExO2NvbnN0IGE9Wy4uLmxdLnNvcnQoKSxkPVsuLi5jXS5zb3J0KCk7cmV0dXJuIGEuZXZlcnkoKGgsZik9PmRbZl09PT1oKX1yZXR1cm4gbD09PWN9ZnVuY3Rpb24geG9lKGwpe3JldHVybiBsLmxlbmd0aD4wP2xbbC5s''@;'; put 'put ''ZW5ndGgtMV06bnVsbH1mdW5jdGlvbiB1bShsKXtyZXR1cm4geFMobCk/bDpsUyhsKT9RYyhQcm9taXNlLnJlc29sdmUobCkpOk9vKGwpfWNvbnN0IE95ZT17ZXhhY3Q6ZnVuY3Rpb24ga29lKGwsYyxhKXtpZighZTgobC5zZWdtZW50cyxjLnNlZ21lbnRzKXx8IWNJKGwuc2VnbWVudHMsYy5z''@;'; put 'put ''ZWdtZW50cyxhKXx8bC5udW1iZXJPZkNoaWxkcmVuIT09Yy5udW1iZXJPZkNoaWxkcmVuKXJldHVybiExO2Zvcihjb25zdCBkIGluIGMuY2hpbGRyZW4paWYoIWwuY2hpbGRyZW5bZF18fCFrb2UobC5jaGlsZHJlbltkXSxjLmNoaWxkcmVuW2RdLGEpKXJldHVybiExO3JldHVybiEwfSxzdWJz''@;'; put 'put ''ZXQ6QW9lfSxFb2U9e2V4YWN0OmZ1bmN0aW9uIFB5ZShsLGMpe3JldHVybiB2MyhsLGMpfSxzdWJzZXQ6ZnVuY3Rpb24gRnllKGwsYyl7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aDw9T2JqZWN0LmtleXMobCkubGVuZ3RoJiZPYmplY3Qua2V5cyhjKS5ldmVyeShhPT5Nb2UobFthXSxj''@;'; put 'put ''W2FdKSl9LGlnbm9yZWQ6KCk9PiEwfTtmdW5jdGlvbiBUb2UobCxjLGEpe3JldHVybiBPeWVbYS5wYXRoc10obC5yb290LGMucm9vdCxhLm1hdHJpeFBhcmFtcykmJkVvZVthLnF1ZXJ5UGFyYW1zXShsLnF1ZXJ5UGFyYW1zLGMucXVlcnlQYXJhbXMpJiYhKCJleGFjdCI9PT1hLmZyYWdtZW50''@;'; put 'put ''JiZsLmZyYWdtZW50IT09Yy5mcmFnbWVudCl9ZnVuY3Rpb24gQW9lKGwsYyxhKXtyZXR1cm4gRG9lKGwsYyxjLnNlZ21lbnRzLGEpfWZ1bmN0aW9uIERvZShsLGMsYSxkKXtpZihsLnNlZ21lbnRzLmxlbmd0aD5hLmxlbmd0aCl7Y29uc3QgaD1sLnNlZ21lbnRzLnNsaWNlKDAsYS5sZW5ndGgp''@;'; put 'put ''O3JldHVybiEoIWU4KGgsYSl8fGMuaGFzQ2hpbGRyZW4oKXx8IWNJKGgsYSxkKSl9aWYobC5zZWdtZW50cy5sZW5ndGg9PT1hLmxlbmd0aCl7aWYoIWU4KGwuc2VnbWVudHMsYSl8fCFjSShsLnNlZ21lbnRzLGEsZCkpcmV0dXJuITE7Zm9yKGNvbnN0IGggaW4gYy5jaGlsZHJlbilpZighbC5j''@;'; put 'put ''aGlsZHJlbltoXXx8IUFvZShsLmNoaWxkcmVuW2hdLGMuY2hpbGRyZW5baF0sZCkpcmV0dXJuITE7cmV0dXJuITB9e2NvbnN0IGg9YS5zbGljZSgwLGwuc2VnbWVudHMubGVuZ3RoKSxmPWEuc2xpY2UobC5zZWdtZW50cy5sZW5ndGgpO3JldHVybiEhKGU4KGwuc2VnbWVudHMsaCkmJmNJKGwu''@;'; put 'put ''c2VnbWVudHMsaCxkKSYmbC5jaGlsZHJlbltNc10pJiZEb2UobC5jaGlsZHJlbltNc10sYyxmLGQpfX1mdW5jdGlvbiBjSShsLGMsYSl7cmV0dXJuIGMuZXZlcnkoKGQsaCk9PkVvZVthXShsW2hdLnBhcmFtZXRlcnMsZC5wYXJhbWV0ZXJzKSl9Y2xhc3MgZV97Y29uc3RydWN0b3IoYz1uZXcg''@;'; put 'put ''bmwoW10se30pLGE9e30sZD1udWxsKXt0aGlzLnJvb3Q9Yyx0aGlzLnF1ZXJ5UGFyYW1zPWEsdGhpcy5mcmFnbWVudD1kfWdldCBxdWVyeVBhcmFtTWFwKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXA/Pz1Rdih0aGlzLnF1ZXJ5UGFyYW1zKSx0aGlzLl9xdWVyeVBhcmFtTWFwfXRvU3Ry''@;'; put 'put ''aW5nKCl7cmV0dXJuIFZ5ZS5zZXJpYWxpemUodGhpcyl9fWNsYXNzIG5se2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5zZWdtZW50cz1jLHRoaXMuY2hpbGRyZW49YSx0aGlzLnBhcmVudD1udWxsLE9iamVjdC52YWx1ZXMoYSkuZm9yRWFjaChkPT5kLnBhcmVudD10aGlzKX1oYXNDaGlsZHJlbigp''@;'; put 'put ''e3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH1nZXQgbnVtYmVyT2ZDaGlsZHJlbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNoaWxkcmVuKS5sZW5ndGh9dG9TdHJpbmcoKXtyZXR1cm4gdUkodGhpcyl9fWNsYXNzIERTe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5wYXRoPWMsdGhp''@;'; put 'put ''cy5wYXJhbWV0ZXJzPWF9Z2V0IHBhcmFtZXRlck1hcCgpe3JldHVybiB0aGlzLl9wYXJhbWV0ZXJNYXA/Pz1Rdih0aGlzLnBhcmFtZXRlcnMpLHRoaXMuX3BhcmFtZXRlck1hcH10b1N0cmluZygpe3JldHVybiBMb2UodGhpcyl9fWZ1bmN0aW9uIGU4KGwsYyl7cmV0dXJuIGwubGVuZ3RoPT09''@;'; put 'put ''Yy5sZW5ndGgmJmwuZXZlcnkoKGEsZCk9PmEucGF0aD09PWNbZF0ucGF0aCl9bGV0IHRfPSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTooKT0+''@;'; put 'put ''bmV3IGp6LHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjbGFzcyBqentwYXJzZShjKXtjb25zdCBhPW5ldyBLeWUoYyk7cmV0dXJuIG5ldyBlXyhhLnBhcnNlUm9vdFNlZ21lbnQoKSxhLnBhcnNlUXVlcnlQYXJhbXMoKSxhLnBhcnNlRnJhZ21lbnQoKSl9c2VyaWFsaXplKGMp''@;'; put 'put ''e2NvbnN0IGE9YC8ke0lTKGMucm9vdCwhMCl9YCxkPWZ1bmN0aW9uIHp5ZShsKXtjb25zdCBjPU9iamVjdC5lbnRyaWVzKGwpLm1hcCgoW2EsZF0pPT5BcnJheS5pc0FycmF5KGQpP2QubWFwKGg9PmAke2RJKGEpfT0ke2RJKGgpfWApLmpvaW4oIiYiKTpgJHtkSShhKX09JHtkSShkKX1gKS5m''@;'; put 'put ''aWx0ZXIoYT0+YSk7cmV0dXJuIGMubGVuZ3RoP2A/JHtjLmpvaW4oIiYiKX1gOiIifShjLnF1ZXJ5UGFyYW1zKSxoPSJzdHJpbmciPT10eXBlb2YgYy5mcmFnbWVudD9gIyR7ZnVuY3Rpb24gQnllKGwpe3JldHVybiBlbmNvZGVVUkkobCl9KGMuZnJhZ21lbnQpfWA6IiI7cmV0dXJuYCR7YX0k''@;'; put 'put ''e2R9JHtofWB9fWNvbnN0IFZ5ZT1uZXcgano7ZnVuY3Rpb24gdUkobCl7cmV0dXJuIGwuc2VnbWVudHMubWFwKGM9PkxvZShjKSkuam9pbigiLyIpfWZ1bmN0aW9uIElTKGwsYyl7aWYoIWwuaGFzQ2hpbGRyZW4oKSlyZXR1cm4gdUkobCk7aWYoYyl7Y29uc3QgYT1sLmNoaWxkcmVuW01zXT9J''@;'; put 'put ''UyhsLmNoaWxkcmVuW01zXSwhMSk6IiIsZD1bXTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2gsZl0pPT57aCE9PU1zJiZkLnB1c2goYCR7aH06JHtJUyhmLCExKX1gKX0pLGQubGVuZ3RoPjA/YCR7YX0oJHtkLmpvaW4oIi8vIil9KWA6YX17Y29uc3QgYT1m''@;'; put 'put ''dW5jdGlvbiBIeWUobCxjKXtsZXQgYT1bXTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2QsaF0pPT57ZD09PU1zJiYoYT1hLmNvbmNhdChjKGgsZCkpKX0pLE9iamVjdC5lbnRyaWVzKGwuY2hpbGRyZW4pLmZvckVhY2goKFtkLGhdKT0+e2QhPT1NcyYmKGE9''@;'; put 'put ''YS5jb25jYXQoYyhoLGQpKSl9KSxhfShsLChkLGgpPT5oPT09TXM/W0lTKGwuY2hpbGRyZW5bTXNdLCExKV06W2Ake2h9OiR7SVMoZCwhMSl9YF0pO3JldHVybiAxPT09T2JqZWN0LmtleXMobC5jaGlsZHJlbikubGVuZ3RoJiZudWxsIT1sLmNoaWxkcmVuW01zXT9gJHt1SShsKX0vJHthWzBd''@;'; put 'put ''fWA6YCR7dUkobCl9Lygke2Euam9pbigiLy8iKX0pYH19ZnVuY3Rpb24gSW9lKGwpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQobCkucmVwbGFjZSgvJTQwL2csIkAiKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpfWZ1bmN0''@;'; put 'put ''aW9uIGRJKGwpe3JldHVybiBJb2UobCkucmVwbGFjZSgvJTNCL2dpLCI7Iil9ZnVuY3Rpb24genoobCl7cmV0dXJuIElvZShsKS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKS5yZXBsYWNlKC8lMjYvZ2ksIiYiKX1mdW5jdGlvbiBoSShsKXtyZXR1cm4gZGVjb2Rl''@;'; put 'put ''VVJJQ29tcG9uZW50KGwpfWZ1bmN0aW9uIFJvZShsKXtyZXR1cm4gaEkobC5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9ZnVuY3Rpb24gTG9lKGwpe3JldHVybmAke3p6KGwucGF0aCl9JHtmdW5jdGlvbiBqeWUobCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGwpLm1hcCgoW2MsYV0pPT5gOyR7enoo''@;'; put 'put ''Yyl9PSR7enooYSl9YCkuam9pbigiIil9KGwucGFyYW1ldGVycyl9YH1jb25zdCBVeWU9L15bXlwvKCk/OyNdKy87ZnVuY3Rpb24gVXoobCl7Y29uc3QgYz1sLm1hdGNoKFV5ZSk7cmV0dXJuIGM/Y1swXToiIn1jb25zdCBaeWU9L15bXlwvKCk/Oz0jXSsvLFd5ZT0vXltePT8mI10rLywkeWU9''@;'; put 'put ''L15bXiYjXSsvO2NsYXNzIEt5ZXtjb25zdHJ1Y3RvcihjKXt0aGlzLnVybD1jLHRoaXMucmVtYWluaW5nPWN9cGFyc2VSb290U2VnbWVudCgpe3JldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbCgiLyIpLCIiPT09dGhpcy5yZW1haW5pbmd8fHRoaXMucGVla1N0YXJ0c1dpdGgoIj8iKXx8dGhp''@;'; put 'put ''cy5wZWVrU3RhcnRzV2l0aCgiIyIpP25ldyBubChbXSx7fSk6bmV3IG5sKFtdLHRoaXMucGFyc2VDaGlsZHJlbigpKX1wYXJzZVF1ZXJ5UGFyYW1zKCl7Y29uc3QgYz17fTtpZih0aGlzLmNvbnN1bWVPcHRpb25hbCgiPyIpKWRve3RoaXMucGFyc2VRdWVyeVBhcmFtKGMpfXdoaWxlKHRoaXMu''@;'; put 'put ''Y29uc3VtZU9wdGlvbmFsKCImIikpO3JldHVybiBjfXBhcnNlRnJhZ21lbnQoKXtyZXR1cm4gdGhpcy5jb25zdW1lT3B0aW9uYWwoIiMiKT9kZWNvZGVVUklDb21wb25lbnQodGhpcy5yZW1haW5pbmcpOm51bGx9cGFyc2VDaGlsZHJlbigpe2lmKCIiPT09dGhpcy5yZW1haW5pbmcpcmV0dXJu''@;'; put 'put ''e307dGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKTtjb25zdCBjPVtdO2Zvcih0aGlzLnBlZWtTdGFydHNXaXRoKCIoIil8fGMucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvIikmJiF0aGlzLnBlZWtTdGFydHNXaXRoKCIvLyIpJiYhdGhpcy5wZWVrU3Rh''@;'; put 'put ''cnRzV2l0aCgiLygiKTspdGhpcy5jYXB0dXJlKCIvIiksYy5wdXNoKHRoaXMucGFyc2VTZWdtZW50KCkpO2xldCBhPXt9O3RoaXMucGVla1N0YXJ0c1dpdGgoIi8oIikmJih0aGlzLmNhcHR1cmUoIi8iKSxhPXRoaXMucGFyc2VQYXJlbnMoITApKTtsZXQgZD17fTtyZXR1cm4gdGhpcy5wZWVr''@;'; put 'put ''U3RhcnRzV2l0aCgiKCIpJiYoZD10aGlzLnBhcnNlUGFyZW5zKCExKSksKGMubGVuZ3RoPjB8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD4wKSYmKGRbTXNdPW5ldyBubChjLGEpKSxkfXBhcnNlU2VnbWVudCgpe2NvbnN0IGM9VXoodGhpcy5yZW1haW5pbmcpO2lmKCIiPT09YyYmdGhpcy5wZWVr''@;'; put 'put ''U3RhcnRzV2l0aCgiOyIpKXRocm93IG5ldyBVbig0MDA5LCExKTtyZXR1cm4gdGhpcy5jYXB0dXJlKGMpLG5ldyBEUyhoSShjKSx0aGlzLnBhcnNlTWF0cml4UGFyYW1zKCkpfXBhcnNlTWF0cml4UGFyYW1zKCl7Y29uc3QgYz17fTtmb3IoO3RoaXMuY29uc3VtZU9wdGlvbmFsKCI7Iik7KXRo''@;'; put 'put ''aXMucGFyc2VQYXJhbShjKTtyZXR1cm4gY31wYXJzZVBhcmFtKGMpe2NvbnN0IGE9ZnVuY3Rpb24gWXllKGwpe2NvbnN0IGM9bC5tYXRjaChaeWUpO3JldHVybiBjP2NbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtpZighYSlyZXR1cm47dGhpcy5jYXB0dXJlKGEpO2xldCBkPSIiO2lmKHRoaXMu''@;'; put 'put ''Y29uc3VtZU9wdGlvbmFsKCI9Iikpe2NvbnN0IGg9VXoodGhpcy5yZW1haW5pbmcpO2gmJihkPWgsdGhpcy5jYXB0dXJlKGQpKX1jW2hJKGEpXT1oSShkKX1wYXJzZVF1ZXJ5UGFyYW0oYyl7Y29uc3QgYT1mdW5jdGlvbiBHeWUobCl7Y29uc3QgYz1sLm1hdGNoKFd5ZSk7cmV0dXJuIGM/Y1sw''@;'; put 'put ''XToiIn0odGhpcy5yZW1haW5pbmcpO2lmKCFhKXJldHVybjt0aGlzLmNhcHR1cmUoYSk7bGV0IGQ9IiI7aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj0iKSl7Y29uc3Qgdj1mdW5jdGlvbiBxeWUobCl7Y29uc3QgYz1sLm1hdGNoKCR5ZSk7cmV0dXJuIGM/Y1swXToiIn0odGhpcy5yZW1haW5p''@;'; put 'put ''bmcpO3YmJihkPXYsdGhpcy5jYXB0dXJlKGQpKX1jb25zdCBoPVJvZShhKSxmPVJvZShkKTtpZihjLmhhc093blByb3BlcnR5KGgpKXtsZXQgdj1jW2hdO0FycmF5LmlzQXJyYXkodil8fCh2PVt2XSxjW2hdPXYpLHYucHVzaChmKX1lbHNlIGNbaF09Zn1wYXJzZVBhcmVucyhjKXtjb25zdCBh''@;'; put 'put ''PXt9O2Zvcih0aGlzLmNhcHR1cmUoIigiKTshdGhpcy5jb25zdW1lT3B0aW9uYWwoIikiKSYmdGhpcy5yZW1haW5pbmcubGVuZ3RoPjA7KXtjb25zdCBkPVV6KHRoaXMucmVtYWluaW5nKSxoPXRoaXMucmVtYWluaW5nW2QubGVuZ3RoXTtpZigiLyIhPT1oJiYiKSIhPT1oJiYiOyIhPT1oKXRo''@;'; put 'put ''cm93IG5ldyBVbig0MDEwLCExKTtsZXQgZjtkLmluZGV4T2YoIjoiKT4tMT8oZj1kLnNsaWNlKDAsZC5pbmRleE9mKCI6IikpLHRoaXMuY2FwdHVyZShmKSx0aGlzLmNhcHR1cmUoIjoiKSk6YyYmKGY9TXMpO2NvbnN0IHY9dGhpcy5wYXJzZUNoaWxkcmVuKCk7YVtmXT0xPT09T2JqZWN0Lmtl''@;'; put 'put ''eXModikubGVuZ3RoP3ZbTXNdOm5ldyBubChbXSx2KSx0aGlzLmNvbnN1bWVPcHRpb25hbCgiLy8iKX1yZXR1cm4gYX1wZWVrU3RhcnRzV2l0aChjKXtyZXR1cm4gdGhpcy5yZW1haW5pbmcuc3RhcnRzV2l0aChjKX1jb25zdW1lT3B0aW9uYWwoYyl7cmV0dXJuISF0aGlzLnBlZWtTdGFydHNX''@;'; put 'put ''aXRoKGMpJiYodGhpcy5yZW1haW5pbmc9dGhpcy5yZW1haW5pbmcuc3Vic3RyaW5nKGMubGVuZ3RoKSwhMCl9Y2FwdHVyZShjKXtpZighdGhpcy5jb25zdW1lT3B0aW9uYWwoYykpdGhyb3cgbmV3IFVuKDQwMTEsITEpfX1mdW5jdGlvbiBPb2UobCl7cmV0dXJuIGwuc2VnbWVudHMubGVuZ3Ro''@;'; put 'put ''PjA/bmV3IG5sKFtdLHtbTXNdOmx9KTpsfWZ1bmN0aW9uIFBvZShsKXtjb25zdCBjPXt9O2Zvcihjb25zdFtkLGhdb2YgT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikpe2NvbnN0IGY9UG9lKGgpO2lmKGQ9PT1NcyYmMD09PWYuc2VnbWVudHMubGVuZ3RoJiZmLmhhc0NoaWxkcmVuKCkpZm9y''@;'; put 'put ''KGNvbnN0W3YsU11vZiBPYmplY3QuZW50cmllcyhmLmNoaWxkcmVuKSljW3ZdPVM7ZWxzZShmLnNlZ21lbnRzLmxlbmd0aD4wfHxmLmhhc0NoaWxkcmVuKCkpJiYoY1tkXT1mKX1yZXR1cm4gZnVuY3Rpb24gWHllKGwpe2lmKDE9PT1sLm51bWJlck9mQ2hpbGRyZW4mJmwuY2hpbGRyZW5bTXNd''@;'; put 'put ''KXtjb25zdCBjPWwuY2hpbGRyZW5bTXNdO3JldHVybiBuZXcgbmwobC5zZWdtZW50cy5jb25jYXQoYy5zZWdtZW50cyksYy5jaGlsZHJlbil9cmV0dXJuIGx9KG5ldyBubChsLnNlZ21lbnRzLGMpKX1mdW5jdGlvbiBuXyhsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIGVffWZ1bmN0aW9uIEZvZShs''@;'; put 'put ''KXtsZXQgYztjb25zdCBoPU9vZShmdW5jdGlvbiBhKGYpe2NvbnN0IHY9e307Zm9yKGNvbnN0IFYgb2YgZi5jaGlsZHJlbil7Y29uc3QgUT1hKFYpO3ZbVi5vdXRsZXRdPVF9Y29uc3QgUz1uZXcgbmwoZi51cmwsdik7cmV0dXJuIGY9PT1sJiYoYz1TKSxTfShsLnJvb3QpKTtyZXR1cm4gYz8/''@;'; put 'put ''aH1mdW5jdGlvbiBOb2UobCxjLGEsZCl7bGV0IGg9bDtmb3IoO2gucGFyZW50OyloPWgucGFyZW50O2lmKDA9PT1jLmxlbmd0aClyZXR1cm4gWnooaCxoLGgsYSxkKTtjb25zdCBmPWZ1bmN0aW9uIFF5ZShsKXtpZigic3RyaW5nIj09dHlwZW9mIGxbMF0mJjE9PT1sLmxlbmd0aCYmIi8iPT09''@;'; put 'put ''bFswXSlyZXR1cm4gbmV3IFZvZSghMCwwLGwpO2xldCBjPTAsYT0hMTtjb25zdCBkPWwucmVkdWNlKChoLGYsdik9PntpZigib2JqZWN0Ij09dHlwZW9mIGYmJm51bGwhPWYpe2lmKGYub3V0bGV0cyl7Y29uc3QgUz17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZi5vdXRsZXRzKS5mb3JFYWNo''@;'; put 'put ''KChbVixRXSk9PntTW1ZdPSJzdHJpbmciPT10eXBlb2YgUT9RLnNwbGl0KCIvIik6UX0pLFsuLi5oLHtvdXRsZXRzOlN9XX1pZihmLnNlZ21lbnRQYXRoKXJldHVyblsuLi5oLGYuc2VnbWVudFBhdGhdfXJldHVybiJzdHJpbmciIT10eXBlb2YgZj9bLi4uaCxmXTowPT09dj8oZi5zcGxpdCgi''@;'; put 'put ''LyIpLmZvckVhY2goKFMsVik9PnswPT1WJiYiLiI9PT1TfHwoMD09ViYmIiI9PT1TP2E9ITA6Ii4uIj09PVM/YysrOiIiIT1TJiZoLnB1c2goUykpfSksaCk6Wy4uLmgsZl19LFtdKTtyZXR1cm4gbmV3IFZvZShhLGMsZCl9KGMpO2lmKGYudG9Sb290KCkpcmV0dXJuIFp6KGgsaCxuZXcgbmwo''@;'; put 'put ''W10se30pLGEsZCk7Y29uc3Qgdj1mdW5jdGlvbiBld2UobCxjLGEpe2lmKGwuaXNBYnNvbHV0ZSlyZXR1cm4gbmV3IHBJKGMsITAsMCk7aWYoIWEpcmV0dXJuIG5ldyBwSShjLCExLE5hTik7aWYobnVsbD09PWEucGFyZW50KXJldHVybiBuZXcgcEkoYSwhMCwwKTtjb25zdCBkPWZJKGwuY29t''@;'; put 'put ''bWFuZHNbMF0pPzA6MTtyZXR1cm4gZnVuY3Rpb24gdHdlKGwsYyxhKXtsZXQgZD1sLGg9YyxmPWE7Zm9yKDtmPmg7KXtpZihmLT1oLGQ9ZC5wYXJlbnQsIWQpdGhyb3cgbmV3IFVuKDQwMDUsITEpO2g9ZC5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyBwSShkLCExLGgtZil9KGEsYS5zZWdt''@;'; put 'put ''ZW50cy5sZW5ndGgtMStkLGwubnVtYmVyT2ZEb3VibGVEb3RzKX0oZixoLGwpLFM9di5wcm9jZXNzQ2hpbGRyZW4/TFModi5zZWdtZW50R3JvdXAsdi5pbmRleCxmLmNvbW1hbmRzKTpCb2Uodi5zZWdtZW50R3JvdXAsdi5pbmRleCxmLmNvbW1hbmRzKTtyZXR1cm4gWnooaCx2LnNlZ21lbnRH''@;'; put 'put ''cm91cCxTLGEsZCl9ZnVuY3Rpb24gZkkobCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBsJiZudWxsIT1sJiYhbC5vdXRsZXRzJiYhbC5zZWdtZW50UGF0aH1mdW5jdGlvbiBSUyhsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGwmJm51bGwhPWwmJmwub3V0bGV0c31mdW5jdGlvbiBaeihsLGMs''@;'; put 'put ''YSxkLGgpe2xldCB2LGY9e307ZCYmT2JqZWN0LmVudHJpZXMoZCkuZm9yRWFjaCgoW1YsUV0pPT57ZltWXT1BcnJheS5pc0FycmF5KFEpP1EubWFwKGRlPT5gJHtkZX1gKTpgJHtRfWB9KSx2PWw9PT1jP2E6SG9lKGwsYyxhKTtjb25zdCBTPU9vZShQb2UodikpO3JldHVybiBuZXcgZV8oUyxm''@;'; put 'put ''LGgpfWZ1bmN0aW9uIEhvZShsLGMsYSl7Y29uc3QgZD17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMobC5jaGlsZHJlbikuZm9yRWFjaCgoW2gsZl0pPT57ZFtoXT1mPT09Yz9hOkhvZShmLGMsYSl9KSxuZXcgbmwobC5zZWdtZW50cyxkKX1jbGFzcyBWb2V7Y29uc3RydWN0b3IoYyxhLGQpe2lm''@;'; put 'put ''KHRoaXMuaXNBYnNvbHV0ZT1jLHRoaXMubnVtYmVyT2ZEb3VibGVEb3RzPWEsdGhpcy5jb21tYW5kcz1kLGMmJmQubGVuZ3RoPjAmJmZJKGRbMF0pKXRocm93IG5ldyBVbig0MDAzLCExKTtjb25zdCBoPWQuZmluZChSUyk7aWYoaCYmaCE9PXhvZShkKSl0aHJvdyBuZXcgVW4oNDAwNCwhMSl9''@;'; put 'put ''dG9Sb290KCl7cmV0dXJuIHRoaXMuaXNBYnNvbHV0ZSYmMT09PXRoaXMuY29tbWFuZHMubGVuZ3RoJiYiLyI9PXRoaXMuY29tbWFuZHNbMF19fWNsYXNzIHBJe2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLnNlZ21lbnRHcm91cD1jLHRoaXMucHJvY2Vzc0NoaWxkcmVuPWEsdGhpcy5pbmRleD1k''@;'; put 'put ''fX1mdW5jdGlvbiBCb2UobCxjLGEpe2lmKGw/Pz1uZXcgbmwoW10se30pLDA9PT1sLnNlZ21lbnRzLmxlbmd0aCYmbC5oYXNDaGlsZHJlbigpKXJldHVybiBMUyhsLGMsYSk7Y29uc3QgZD1mdW5jdGlvbiByd2UobCxjLGEpe2xldCBkPTAsaD1jO2NvbnN0IGY9e21hdGNoOiExLHBhdGhJbmRl''@;'; put 'put ''eDowLGNvbW1hbmRJbmRleDowfTtmb3IoO2g8bC5zZWdtZW50cy5sZW5ndGg7KXtpZihkPj1hLmxlbmd0aClyZXR1cm4gZjtjb25zdCB2PWwuc2VnbWVudHNbaF0sUz1hW2RdO2lmKFJTKFMpKWJyZWFrO2NvbnN0IFY9YCR7U31gLFE9ZDxhLmxlbmd0aC0xP2FbZCsxXTpudWxsO2lmKGg+MCYm''@;'; put 'put ''dm9pZCAwPT09VilicmVhaztpZihWJiZRJiYib2JqZWN0Ij09dHlwZW9mIFEmJnZvaWQgMD09PVEub3V0bGV0cyl7aWYoIXpvZShWLFEsdikpcmV0dXJuIGY7ZCs9Mn1lbHNle2lmKCF6b2UoVix7fSx2KSlyZXR1cm4gZjtkKyt9aCsrfXJldHVybnttYXRjaDohMCxwYXRoSW5kZXg6aCxjb21t''@;'; put 'put ''YW5kSW5kZXg6ZH19KGwsYyxhKSxoPWEuc2xpY2UoZC5jb21tYW5kSW5kZXgpO2lmKGQubWF0Y2gmJmQucGF0aEluZGV4PGwuc2VnbWVudHMubGVuZ3RoKXtjb25zdCBmPW5ldyBubChsLnNlZ21lbnRzLnNsaWNlKDAsZC5wYXRoSW5kZXgpLHt9KTtyZXR1cm4gZi5jaGlsZHJlbltNc109bmV3''@;'; put 'put ''IG5sKGwuc2VnbWVudHMuc2xpY2UoZC5wYXRoSW5kZXgpLGwuY2hpbGRyZW4pLExTKGYsMCxoKX1yZXR1cm4gZC5tYXRjaCYmMD09PWgubGVuZ3RoP25ldyBubChsLnNlZ21lbnRzLHt9KTpkLm1hdGNoJiYhbC5oYXNDaGlsZHJlbigpP1l6KGwsYyxhKTpkLm1hdGNoP0xTKGwsMCxoKTpZeihs''@;'; put 'put ''LGMsYSl9ZnVuY3Rpb24gTFMobCxjLGEpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbmV3IG5sKGwuc2VnbWVudHMse30pO3tjb25zdCBkPWZ1bmN0aW9uIG53ZShsKXtyZXR1cm4gUlMobFswXSk/bFswXS5vdXRsZXRzOntbTXNdOmx9fShhKSxoPXt9O2lmKE9iamVjdC5rZXlzKGQpLnNvbWUo''@;'; put 'put ''Zj0+ZiE9PU1zKSYmbC5jaGlsZHJlbltNc10mJjE9PT1sLm51bWJlck9mQ2hpbGRyZW4mJjA9PT1sLmNoaWxkcmVuW01zXS5zZWdtZW50cy5sZW5ndGgpe2NvbnN0IGY9TFMobC5jaGlsZHJlbltNc10sYyxhKTtyZXR1cm4gbmV3IG5sKGwuc2VnbWVudHMsZi5jaGlsZHJlbil9cmV0dXJuIE9i''@;'; put 'put ''amVjdC5lbnRyaWVzKGQpLmZvckVhY2goKFtmLHZdKT0+eyJzdHJpbmciPT10eXBlb2YgdiYmKHY9W3ZdKSxudWxsIT09diYmKGhbZl09Qm9lKGwuY2hpbGRyZW5bZl0sYyx2KSl9KSxPYmplY3QuZW50cmllcyhsLmNoaWxkcmVuKS5mb3JFYWNoKChbZix2XSk9Pnt2b2lkIDA9PT1kW2ZdJiYo''@;'; put 'put ''aFtmXT12KX0pLG5ldyBubChsLnNlZ21lbnRzLGgpfX1mdW5jdGlvbiBZeihsLGMsYSl7Y29uc3QgZD1sLnNlZ21lbnRzLnNsaWNlKDAsYyk7bGV0IGg9MDtmb3IoO2g8YS5sZW5ndGg7KXtjb25zdCBmPWFbaF07aWYoUlMoZikpe2NvbnN0IFY9aXdlKGYub3V0bGV0cyk7cmV0dXJuIG5ldyBu''@;'; put 'put ''bChkLFYpfWlmKDA9PT1oJiZmSShhWzBdKSl7ZC5wdXNoKG5ldyBEUyhsLnNlZ21lbnRzW2NdLnBhdGgsam9lKGFbMF0pKSksaCsrO2NvbnRpbnVlfWNvbnN0IHY9UlMoZik/Zi5vdXRsZXRzW01zXTpgJHtmfWAsUz1oPGEubGVuZ3RoLTE/YVtoKzFdOm51bGw7diYmUyYmZkkoUyk/KGQucHVz''@;'; put 'put ''aChuZXcgRFModixqb2UoUykpKSxoKz0yKTooZC5wdXNoKG5ldyBEUyh2LHt9KSksaCsrKX1yZXR1cm4gbmV3IG5sKGQse30pfWZ1bmN0aW9uIGl3ZShsKXtjb25zdCBjPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhsKS5mb3JFYWNoKChbYSxkXSk9Pnsic3RyaW5nIj09dHlwZW9mIGQmJihk''@;'; put 'put ''PVtkXSksbnVsbCE9PWQmJihjW2FdPVl6KG5ldyBubChbXSx7fSksMCxkKSl9KSxjfWZ1bmN0aW9uIGpvZShsKXtjb25zdCBjPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhsKS5mb3JFYWNoKChbYSxkXSk9PmNbYV09YCR7ZH1gKSxjfWZ1bmN0aW9uIHpvZShsLGMsYSl7cmV0dXJuIGw9PWEu''@;'; put 'put ''cGF0aCYmdjMoYyxhLnBhcmFtZXRlcnMpfWNvbnN0IE9TPSJpbXBlcmF0aXZlIjt2YXIgWHM9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5OYXZpZ2F0aW9uU3RhcnQ9MF09Ik5hdmlnYXRpb25TdGFydCIsbFtsLk5hdmlnYXRpb25FbmQ9MV09Ik5hdmlnYXRpb25FbmQiLGxbbC5OYXZpZ2F0aW9u''@;'; put 'put ''Q2FuY2VsPTJdPSJOYXZpZ2F0aW9uQ2FuY2VsIixsW2wuTmF2aWdhdGlvbkVycm9yPTNdPSJOYXZpZ2F0aW9uRXJyb3IiLGxbbC5Sb3V0ZXNSZWNvZ25pemVkPTRdPSJSb3V0ZXNSZWNvZ25pemVkIixsW2wuUmVzb2x2ZVN0YXJ0PTVdPSJSZXNvbHZlU3RhcnQiLGxbbC5SZXNvbHZlRW5kPTZd''@;'; put 'put ''PSJSZXNvbHZlRW5kIixsW2wuR3VhcmRzQ2hlY2tTdGFydD03XT0iR3VhcmRzQ2hlY2tTdGFydCIsbFtsLkd1YXJkc0NoZWNrRW5kPThdPSJHdWFyZHNDaGVja0VuZCIsbFtsLlJvdXRlQ29uZmlnTG9hZFN0YXJ0PTldPSJSb3V0ZUNvbmZpZ0xvYWRTdGFydCIsbFtsLlJvdXRlQ29uZmlnTG9h''@;'; put 'put ''ZEVuZD0xMF09IlJvdXRlQ29uZmlnTG9hZEVuZCIsbFtsLkNoaWxkQWN0aXZhdGlvblN0YXJ0PTExXT0iQ2hpbGRBY3RpdmF0aW9uU3RhcnQiLGxbbC5DaGlsZEFjdGl2YXRpb25FbmQ9MTJdPSJDaGlsZEFjdGl2YXRpb25FbmQiLGxbbC5BY3RpdmF0aW9uU3RhcnQ9MTNdPSJBY3RpdmF0aW9u''@;'; put 'put ''U3RhcnQiLGxbbC5BY3RpdmF0aW9uRW5kPTE0XT0iQWN0aXZhdGlvbkVuZCIsbFtsLlNjcm9sbD0xNV09IlNjcm9sbCIsbFtsLk5hdmlnYXRpb25Ta2lwcGVkPTE2XT0iTmF2aWdhdGlvblNraXBwZWQiLGx9KFhzfHx7fSk7Y2xhc3MgXzN7Y29uc3RydWN0b3IoYyxhKXt0aGlzLmlkPWMsdGhp''@;'; put 'put ''cy51cmw9YX19Y2xhc3MgZ0kgZXh0ZW5kcyBfM3tjb25zdHJ1Y3RvcihjLGEsZD0iaW1wZXJhdGl2ZSIsaD1udWxsKXtzdXBlcihjLGEpLHRoaXMudHlwZT1Ycy5OYXZpZ2F0aW9uU3RhcnQsdGhpcy5uYXZpZ2F0aW9uVHJpZ2dlcj1kLHRoaXMucmVzdG9yZWRTdGF0ZT1ofXRvU3RyaW5nKCl7''@;'; put 'put ''cmV0dXJuYE5hdmlnYXRpb25TdGFydChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nKWB9fWNsYXNzIGIzIGV4dGVuZHMgXzN7Y29uc3RydWN0b3IoYyxhLGQpe3N1cGVyKGMsYSksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1kLHRoaXMudHlwZT1Ycy5OYXZpZ2F0aW9uRW5kfXRv''@;'; put 'put ''U3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9JylgfX12YXIgX2Q9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5SZWRpcmVjdD0wXT0iUmVkaXJl''@;'; put 'put ''Y3QiLGxbbC5TdXBlcnNlZGVkQnlOZXdOYXZpZ2F0aW9uPTFdPSJTdXBlcnNlZGVkQnlOZXdOYXZpZ2F0aW9uIixsW2wuTm9EYXRhRnJvbVJlc29sdmVyPTJdPSJOb0RhdGFGcm9tUmVzb2x2ZXIiLGxbbC5HdWFyZFJlamVjdGVkPTNdPSJHdWFyZFJlamVjdGVkIixsfShfZHx8e30pLG1JPWZ1''@;'; put 'put ''bmN0aW9uKGwpe3JldHVybiBsW2wuSWdub3JlZFNhbWVVcmxOYXZpZ2F0aW9uPTBdPSJJZ25vcmVkU2FtZVVybE5hdmlnYXRpb24iLGxbbC5JZ25vcmVkQnlVcmxIYW5kbGluZ1N0cmF0ZWd5PTFdPSJJZ25vcmVkQnlVcmxIYW5kbGluZ1N0cmF0ZWd5IixsfShtSXx8e30pO2NsYXNzIHJfIGV4''@;'; put 'put ''dGVuZHMgXzN7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoYyxhKSx0aGlzLnJlYXNvbj1kLHRoaXMuY29kZT1oLHRoaXMudHlwZT1Ycy5OYXZpZ2F0aW9uQ2FuY2VsfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25DYW5jZWwoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9''@;'; put 'put ''JylgfX1jbGFzcyBpXyBleHRlbmRzIF8ze2NvbnN0cnVjdG9yKGMsYSxkLGgpe3N1cGVyKGMsYSksdGhpcy5yZWFzb249ZCx0aGlzLmNvZGU9aCx0aGlzLnR5cGU9WHMuTmF2aWdhdGlvblNraXBwZWR9fWNsYXNzIHZJIGV4dGVuZHMgXzN7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoYyxh''@;'; put 'put ''KSx0aGlzLmVycm9yPWQsdGhpcy50YXJnZXQ9aCx0aGlzLnR5cGU9WHMuTmF2aWdhdGlvbkVycm9yfXRvU3RyaW5nKCl7cmV0dXJuYE5hdmlnYXRpb25FcnJvcihpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCBlcnJvcjogJHt0aGlzLmVycm9yfSlgfX1jbGFzcyBVb2UgZXh0''@;'; put 'put ''ZW5kcyBfM3tjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9ZCx0aGlzLnN0YXRlPWgsdGhpcy50eXBlPVhzLlJvdXRlc1JlY29nbml6ZWR9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVzUmVjb2duaXplZChpZDogJHt0aGlzLmlkfSwgdXJsOiAn''@;'; put 'put ''JHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0ZTogJHt0aGlzLnN0YXRlfSlgfX1jbGFzcyBvd2UgZXh0ZW5kcyBfM3tjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9ZCx0''@;'; put 'put ''aGlzLnN0YXRlPWgsdGhpcy50eXBlPVhzLkd1YXJkc0NoZWNrU3RhcnR9dG9TdHJpbmcoKXtyZXR1cm5gR3VhcmRzQ2hlY2tTdGFydChpZDogJHt0aGlzLmlkfSwgdXJsOiAnJHt0aGlzLnVybH0nLCB1cmxBZnRlclJlZGlyZWN0czogJyR7dGhpcy51cmxBZnRlclJlZGlyZWN0c30nLCBzdGF0''@;'; put 'put ''ZTogJHt0aGlzLnN0YXRlfSlgfX1jbGFzcyBzd2UgZXh0ZW5kcyBfM3tjb25zdHJ1Y3RvcihjLGEsZCxoLGYpe3N1cGVyKGMsYSksdGhpcy51cmxBZnRlclJlZGlyZWN0cz1kLHRoaXMuc3RhdGU9aCx0aGlzLnNob3VsZEFjdGl2YXRlPWYsdGhpcy50eXBlPVhzLkd1YXJkc0NoZWNrRW5kfXRv''@;'; put 'put ''U3RyaW5nKCl7cmV0dXJuYEd1YXJkc0NoZWNrRW5kKGlkOiAke3RoaXMuaWR9LCB1cmw6ICcke3RoaXMudXJsfScsIHVybEFmdGVyUmVkaXJlY3RzOiAnJHt0aGlzLnVybEFmdGVyUmVkaXJlY3RzfScsIHN0YXRlOiAke3RoaXMuc3RhdGV9LCBzaG91bGRBY3RpdmF0ZTogJHt0aGlzLnNob3Vs''@;'; put 'put ''ZEFjdGl2YXRlfSlgfX1jbGFzcyBhd2UgZXh0ZW5kcyBfM3tjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEpLHRoaXMudXJsQWZ0ZXJSZWRpcmVjdHM9ZCx0aGlzLnN0YXRlPWgsdGhpcy50eXBlPVhzLlJlc29sdmVTdGFydH10b1N0cmluZygpe3JldHVybmBSZXNvbHZlU3RhcnQoaWQ6''@;'; put 'put ''ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgbHdlIGV4dGVuZHMgXzN7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoYyxhKSx0aGlzLnVy''@;'; put 'put ''bEFmdGVyUmVkaXJlY3RzPWQsdGhpcy5zdGF0ZT1oLHRoaXMudHlwZT1Ycy5SZXNvbHZlRW5kfXRvU3RyaW5nKCl7cmV0dXJuYFJlc29sdmVFbmQoaWQ6ICR7dGhpcy5pZH0sIHVybDogJyR7dGhpcy51cmx9JywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICcke3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHN9''@;'; put 'put ''Jywgc3RhdGU6ICR7dGhpcy5zdGF0ZX0pYH19Y2xhc3MgY3dle2NvbnN0cnVjdG9yKGMpe3RoaXMucm91dGU9Yyx0aGlzLnR5cGU9WHMuUm91dGVDb25maWdMb2FkU3RhcnR9dG9TdHJpbmcoKXtyZXR1cm5gUm91dGVDb25maWdMb2FkU3RhcnQocGF0aDogJHt0aGlzLnJvdXRlLnBhdGh9KWB9''@;'; put 'put ''fWNsYXNzIHV3ZXtjb25zdHJ1Y3RvcihjKXt0aGlzLnJvdXRlPWMsdGhpcy50eXBlPVhzLlJvdXRlQ29uZmlnTG9hZEVuZH10b1N0cmluZygpe3JldHVybmBSb3V0ZUNvbmZpZ0xvYWRFbmQocGF0aDogJHt0aGlzLnJvdXRlLnBhdGh9KWB9fWNsYXNzIGR3ZXtjb25zdHJ1Y3RvcihjKXt0aGlz''@;'; put 'put ''LnNuYXBzaG90PWMsdGhpcy50eXBlPVhzLkNoaWxkQWN0aXZhdGlvblN0YXJ0fXRvU3RyaW5nKCl7cmV0dXJuYENoaWxkQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFz''@;'; put 'put ''cyBod2V7Y29uc3RydWN0b3IoYyl7dGhpcy5zbmFwc2hvdD1jLHRoaXMudHlwZT1Ycy5DaGlsZEFjdGl2YXRpb25FbmR9dG9TdHJpbmcoKXtyZXR1cm5gQ2hpbGRBY3RpdmF0aW9uRW5kKHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25m''@;'; put 'put ''aWcucGF0aHx8IiJ9JylgfX1jbGFzcyBmd2V7Y29uc3RydWN0b3IoYyl7dGhpcy5zbmFwc2hvdD1jLHRoaXMudHlwZT1Ycy5BY3RpdmF0aW9uU3RhcnR9dG9TdHJpbmcoKXtyZXR1cm5gQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICcke3RoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25h''@;'; put 'put ''cHNob3Qucm91dGVDb25maWcucGF0aHx8IiJ9JylgfX1jbGFzcyBwd2V7Y29uc3RydWN0b3IoYyl7dGhpcy5zbmFwc2hvdD1jLHRoaXMudHlwZT1Ycy5BY3RpdmF0aW9uRW5kfXRvU3RyaW5nKCl7cmV0dXJuYEFjdGl2YXRpb25FbmQocGF0aDogJyR7dGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZp''@;'; put 'put ''ZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIn0nKWB9fWNsYXNzIFpvZXtjb25zdHJ1Y3RvcihjLGEsZCl7dGhpcy5yb3V0ZXJFdmVudD1jLHRoaXMucG9zaXRpb249YSx0aGlzLmFuY2hvcj1kLHRoaXMudHlwZT1Ycy5TY3JvbGx9dG9TdHJpbmcoKXtyZXR1cm5gU2Nyb2xs''@;'; put 'put ''KGFuY2hvcjogJyR7dGhpcy5hbmNob3J9JywgcG9zaXRpb246ICcke3RoaXMucG9zaXRpb24/YCR7dGhpcy5wb3NpdGlvblswXX0sICR7dGhpcy5wb3NpdGlvblsxXX1gOm51bGx9JylgfX1jbGFzcyBXent9Y2xhc3MgR3p7Y29uc3RydWN0b3IoYyl7dGhpcy51cmw9Y319Y2xhc3MgZ3dle2Nv''@;'; put 'put ''bnN0cnVjdG9yKCl7dGhpcy5vdXRsZXQ9bnVsbCx0aGlzLnJvdXRlPW51bGwsdGhpcy5pbmplY3Rvcj1udWxsLHRoaXMuY2hpbGRyZW49bmV3IFBTLHRoaXMuYXR0YWNoUmVmPW51bGx9fWxldCBQUz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5jb250ZXh0cz1uZXcgTWFwfW9u''@;'; put 'put ''Q2hpbGRPdXRsZXRDcmVhdGVkKGEsZCl7Y29uc3QgaD10aGlzLmdldE9yQ3JlYXRlQ29udGV4dChhKTtoLm91dGxldD1kLHRoaXMuY29udGV4dHMuc2V0KGEsaCl9b25DaGlsZE91dGxldERlc3Ryb3llZChhKXtjb25zdCBkPXRoaXMuZ2V0Q29udGV4dChhKTtkJiYoZC5vdXRsZXQ9bnVsbCxk''@;'; put 'put ''LmF0dGFjaFJlZj1udWxsKX1vbk91dGxldERlYWN0aXZhdGVkKCl7Y29uc3QgYT10aGlzLmNvbnRleHRzO3JldHVybiB0aGlzLmNvbnRleHRzPW5ldyBNYXAsYX1vbk91dGxldFJlQXR0YWNoZWQoYSl7dGhpcy5jb250ZXh0cz1hfWdldE9yQ3JlYXRlQ29udGV4dChhKXtsZXQgZD10aGlzLmdl''@;'; put 'put ''dENvbnRleHQoYSk7cmV0dXJuIGR8fChkPW5ldyBnd2UsdGhpcy5jb250ZXh0cy5zZXQoYSxkKSksZH1nZXRDb250ZXh0KGEpe3JldHVybiB0aGlzLmNvbnRleHRzLmdldChhKXx8bnVsbH1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlj''@;'; put 'put ''e3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjbGFzcyBZb2V7Y29uc3RydWN0b3IoYyl7dGhpcy5fcm9vdD1jfWdldCByb290KCl7cmV0dXJuIHRoaXMuX3Jvb3QudmFsdWV9cGFyZW50KGMp''@;'; put 'put ''e2NvbnN0IGE9dGhpcy5wYXRoRnJvbVJvb3QoYyk7cmV0dXJuIGEubGVuZ3RoPjE/YVthLmxlbmd0aC0yXTpudWxsfWNoaWxkcmVuKGMpe2NvbnN0IGE9JHooYyx0aGlzLl9yb290KTtyZXR1cm4gYT9hLmNoaWxkcmVuLm1hcChkPT5kLnZhbHVlKTpbXX1maXJzdENoaWxkKGMpe2NvbnN0IGE9''@;'; put 'put ''JHooYyx0aGlzLl9yb290KTtyZXR1cm4gYSYmYS5jaGlsZHJlbi5sZW5ndGg+MD9hLmNoaWxkcmVuWzBdLnZhbHVlOm51bGx9c2libGluZ3MoYyl7Y29uc3QgYT1xeihjLHRoaXMuX3Jvb3QpO3JldHVybiBhLmxlbmd0aDwyP1tdOmFbYS5sZW5ndGgtMl0uY2hpbGRyZW4ubWFwKGg9PmgudmFs''@;'; put 'put ''dWUpLmZpbHRlcihoPT5oIT09Yyl9cGF0aEZyb21Sb290KGMpe3JldHVybiBxeihjLHRoaXMuX3Jvb3QpLm1hcChhPT5hLnZhbHVlKX19ZnVuY3Rpb24gJHoobCxjKXtpZihsPT09Yy52YWx1ZSlyZXR1cm4gYztmb3IoY29uc3QgYSBvZiBjLmNoaWxkcmVuKXtjb25zdCBkPSR6KGwsYSk7aWYo''@;'; put 'put ''ZClyZXR1cm4gZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBxeihsLGMpe2lmKGw9PT1jLnZhbHVlKXJldHVybltjXTtmb3IoY29uc3QgYSBvZiBjLmNoaWxkcmVuKXtjb25zdCBkPXF6KGwsYSk7aWYoZC5sZW5ndGgpcmV0dXJuIGQudW5zaGlmdChjKSxkfXJldHVybltdfWNsYXNzIFkye2NvbnN0''@;'; put 'put ''cnVjdG9yKGMsYSl7dGhpcy52YWx1ZT1jLHRoaXMuY2hpbGRyZW49YX10b1N0cmluZygpe3JldHVybmBUcmVlTm9kZSgke3RoaXMudmFsdWV9KWB9fWZ1bmN0aW9uIG9fKGwpe2NvbnN0IGM9e307cmV0dXJuIGwmJmwuY2hpbGRyZW4uZm9yRWFjaChhPT5jW2EudmFsdWUub3V0bGV0XT1hKSxj''@;'; put 'put ''fWNsYXNzIFdvZSBleHRlbmRzIFlvZXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMpLHRoaXMuc25hcHNob3Q9YSxKeih0aGlzLGMpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuc25hcHNob3QudG9TdHJpbmcoKX19ZnVuY3Rpb24gR29lKGwpe2NvbnN0IGM9ZnVuY3Rpb24gbXdlKGwpe2NvbnN0''@;'; put 'put ''IGY9bmV3IFh6KFtdLHt9LHt9LCIiLHt9LE1zLGwsbnVsbCx7fSk7cmV0dXJuIG5ldyAkb2UoIiIsbmV3IFkyKGYsW10pKX0obCksYT1uZXcgQXIoW25ldyBEUygiIix7fSldKSxkPW5ldyBBcih7fSksaD1uZXcgQXIoe30pLGY9bmV3IEFyKHt9KSx2PW5ldyBBcigiIiksUz1uZXcgT2MoYSxk''@;'; put 'put ''LGYsdixoLE1zLGwsYy5yb290KTtyZXR1cm4gUy5zbmFwc2hvdD1jLnJvb3QsbmV3IFdvZShuZXcgWTIoUyxbXSksYyl9Y2xhc3MgT2N7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyxWKXt0aGlzLnVybFN1YmplY3Q9Yyx0aGlzLnBhcmFtc1N1YmplY3Q9YSx0aGlzLnF1ZXJ5UGFyYW1zU3Vi''@;'; put 'put ''amVjdD1kLHRoaXMuZnJhZ21lbnRTdWJqZWN0PWgsdGhpcy5kYXRhU3ViamVjdD1mLHRoaXMub3V0bGV0PXYsdGhpcy5jb21wb25lbnQ9Uyx0aGlzLl9mdXR1cmVTbmFwc2hvdD1WLHRoaXMudGl0bGU9dGhpcy5kYXRhU3ViamVjdD8ucGlwZShicihRPT5RW0FTXSkpPz9Pbyh2b2lkIDApLHRo''@;'; put 'put ''aXMudXJsPWMsdGhpcy5wYXJhbXM9YSx0aGlzLnF1ZXJ5UGFyYW1zPWQsdGhpcy5mcmFnbWVudD1oLHRoaXMuZGF0YT1mfWdldCByb3V0ZUNvbmZpZygpe3JldHVybiB0aGlzLl9mdXR1cmVTbmFwc2hvdC5yb3V0ZUNvbmZpZ31nZXQgcm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5y''@;'; put 'put ''b290fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGFyZW50KHRoaXMpfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0Q2hpbGQodGhpcyl9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRo''@;'; put 'put ''aXMpfWdldCBwYXRoRnJvbVJvb3QoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucGF0aEZyb21Sb290KHRoaXMpfWdldCBwYXJhbU1hcCgpe3JldHVybiB0aGlzLl9wYXJhbU1hcD8/PXRoaXMucGFyYW1zLnBpcGUoYnIoYz0+UXYoYykpKSx0aGlzLl9wYXJhbU1hcH1nZXQgcXVlcnlQYXJh''@;'; put 'put ''bU1hcCgpe3JldHVybiB0aGlzLl9xdWVyeVBhcmFtTWFwPz89dGhpcy5xdWVyeVBhcmFtcy5waXBlKGJyKGM9PlF2KGMpKSksdGhpcy5fcXVlcnlQYXJhbU1hcH10b1N0cmluZygpe3JldHVybiB0aGlzLnNuYXBzaG90P3RoaXMuc25hcHNob3QudG9TdHJpbmcoKTpgRnV0dXJlKCR7dGhpcy5f''@;'; put 'put ''ZnV0dXJlU25hcHNob3R9KWB9fWZ1bmN0aW9uIEt6KGwsYyxhPSJlbXB0eU9ubHkiKXtsZXQgZDtjb25zdHtyb3V0ZUNvbmZpZzpofT1sO3JldHVybiBkPW51bGw9PT1jfHwiYWx3YXlzIiE9PWEmJiIiIT09aD8ucGF0aCYmKGMuY29tcG9uZW50fHxjLnJvdXRlQ29uZmlnPy5sb2FkQ29tcG9u''@;'; put 'put ''ZW50KT97cGFyYW1zOnsuLi5sLnBhcmFtc30sZGF0YTp7Li4ubC5kYXRhfSxyZXNvbHZlOnsuLi5sLmRhdGEsLi4ubC5fcmVzb2x2ZWREYXRhPz97fX19OntwYXJhbXM6ey4uLmMucGFyYW1zLC4uLmwucGFyYW1zfSxkYXRhOnsuLi5jLmRhdGEsLi4ubC5kYXRhfSxyZXNvbHZlOnsuLi5sLmRh''@;'; put 'put ''dGEsLi4uYy5kYXRhLC4uLmg/LmRhdGEsLi4ubC5fcmVzb2x2ZWREYXRhfX0saCYmS29lKGgpJiYoZC5yZXNvbHZlW0FTXT1oLnRpdGxlKSxkfWNsYXNzIFh6e2dldCB0aXRsZSgpe3JldHVybiB0aGlzLmRhdGE/LltBU119Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyxWLFEpe3RoaXMudXJs''@;'; put 'put ''PWMsdGhpcy5wYXJhbXM9YSx0aGlzLnF1ZXJ5UGFyYW1zPWQsdGhpcy5mcmFnbWVudD1oLHRoaXMuZGF0YT1mLHRoaXMub3V0bGV0PXYsdGhpcy5jb21wb25lbnQ9Uyx0aGlzLnJvdXRlQ29uZmlnPVYsdGhpcy5fcmVzb2x2ZT1RfWdldCByb290KCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRl''@;'; put 'put ''LnJvb3R9Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXJlbnQodGhpcyl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuZmlyc3RDaGlsZCh0aGlzKX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuY2hpbGRyZW4o''@;'; put 'put ''dGhpcyl9Z2V0IHBhdGhGcm9tUm9vdCgpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXRoRnJvbVJvb3QodGhpcyl9Z2V0IHBhcmFtTWFwKCl7cmV0dXJuIHRoaXMuX3BhcmFtTWFwPz89UXYodGhpcy5wYXJhbXMpLHRoaXMuX3BhcmFtTWFwfWdldCBxdWVyeVBhcmFtTWFwKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3F1ZXJ5UGFyYW1NYXA/Pz1Rdih0aGlzLnF1ZXJ5UGFyYW1zKSx0aGlzLl9xdWVyeVBhcmFtTWFwfXRvU3RyaW5nKCl7cmV0dXJuYFJvdXRlKHVybDonJHt0aGlzLnVybC5tYXAoZD0+ZC50b1N0cmluZygpKS5qb2luKCIvIil9JywgcGF0aDonJHt0aGlzLnJvdXRlQ29uZmlnP3Ro''@;'; put 'put ''aXMucm91dGVDb25maWcucGF0aDoiIn0nKWB9fWNsYXNzICRvZSBleHRlbmRzIFlvZXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGEpLHRoaXMudXJsPWMsSnoodGhpcyxhKX10b1N0cmluZygpe3JldHVybiBxb2UodGhpcy5fcm9vdCl9fWZ1bmN0aW9uIEp6KGwsYyl7Yy52YWx1ZS5fcm91dGVy''@;'; put 'put ''U3RhdGU9bCxjLmNoaWxkcmVuLmZvckVhY2goYT0+SnoobCxhKSl9ZnVuY3Rpb24gcW9lKGwpe2NvbnN0IGM9bC5jaGlsZHJlbi5sZW5ndGg+MD9gIHsgJHtsLmNoaWxkcmVuLm1hcChxb2UpLmpvaW4oIiwgIil9IH0gYDoiIjtyZXR1cm5gJHtsLnZhbHVlfSR7Y31gfWZ1bmN0aW9uIFF6KGwp''@;'; put 'put ''e2lmKGwuc25hcHNob3Qpe2NvbnN0IGM9bC5zbmFwc2hvdCxhPWwuX2Z1dHVyZVNuYXBzaG90O2wuc25hcHNob3Q9YSx2MyhjLnF1ZXJ5UGFyYW1zLGEucXVlcnlQYXJhbXMpfHxsLnF1ZXJ5UGFyYW1zU3ViamVjdC5uZXh0KGEucXVlcnlQYXJhbXMpLGMuZnJhZ21lbnQhPT1hLmZyYWdtZW50''@;'; put 'put ''JiZsLmZyYWdtZW50U3ViamVjdC5uZXh0KGEuZnJhZ21lbnQpLHYzKGMucGFyYW1zLGEucGFyYW1zKXx8bC5wYXJhbXNTdWJqZWN0Lm5leHQoYS5wYXJhbXMpLGZ1bmN0aW9uIEx5ZShsLGMpe2lmKGwubGVuZ3RoIT09Yy5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTA7YTxsLmxlbmd0aDsr''@;'; put 'put ''K2EpaWYoIXYzKGxbYV0sY1thXSkpcmV0dXJuITE7cmV0dXJuITB9KGMudXJsLGEudXJsKXx8bC51cmxTdWJqZWN0Lm5leHQoYS51cmwpLHYzKGMuZGF0YSxhLmRhdGEpfHxsLmRhdGFTdWJqZWN0Lm5leHQoYS5kYXRhKX1lbHNlIGwuc25hcHNob3Q9bC5fZnV0dXJlU25hcHNob3QsbC5kYXRh''@;'; put 'put ''U3ViamVjdC5uZXh0KGwuX2Z1dHVyZVNuYXBzaG90LmRhdGEpfWZ1bmN0aW9uIGVVKGwsYyl7Y29uc3QgYT12MyhsLnBhcmFtcyxjLnBhcmFtcykmJmZ1bmN0aW9uIE55ZShsLGMpe3JldHVybiBlOChsLGMpJiZsLmV2ZXJ5KChhLGQpPT52MyhhLnBhcmFtZXRlcnMsY1tkXS5wYXJhbWV0ZXJz''@;'; put 'put ''KSl9KGwudXJsLGMudXJsKTtyZXR1cm4gYSYmISghbC5wYXJlbnQhPSFjLnBhcmVudCkmJighbC5wYXJlbnR8fGVVKGwucGFyZW50LGMucGFyZW50KSl9ZnVuY3Rpb24gS29lKGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgbC50aXRsZXx8bnVsbD09PWwudGl0bGV9bGV0IGM0PSgoKT0+e2Ns''@;'; put 'put ''YXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5uYW1lPU1zLHRoaXMuYWN0aXZhdGVFdmVudHM9bmV3IERyLHRoaXMuZGVhY3RpdmF0ZUV2ZW50cz1uZXcgRHIsdGhpcy5hdHRhY2hFdmVudHM9bmV3IERyLHRoaXMu''@;'; put 'put ''ZGV0YWNoRXZlbnRzPW5ldyBEcix0aGlzLnBhcmVudENvbnRleHRzPVpyKFBTKSx0aGlzLmxvY2F0aW9uPVpyKGhzKSx0aGlzLmNoYW5nZURldGVjdG9yPVpyKGNhKSx0aGlzLmVudmlyb25tZW50SW5qZWN0b3I9WnIoWGwpLHRoaXMuaW5wdXRCaW5kZXI9WnIoX0kse29wdGlvbmFsOiEwfSks''@;'; put 'put ''dGhpcy5zdXBwb3J0c0JpbmRpbmdUb0NvbXBvbmVudElucHV0cz0hMH1nZXQgYWN0aXZhdGVkQ29tcG9uZW50UmVmKCl7cmV0dXJuIHRoaXMuYWN0aXZhdGVkfW5nT25DaGFuZ2VzKGEpe2lmKGEubmFtZSl7Y29uc3R7Zmlyc3RDaGFuZ2U6ZCxwcmV2aW91c1ZhbHVlOmh9PWEubmFtZTtpZihk''@;'; put 'put ''KXJldHVybjt0aGlzLmlzVHJhY2tlZEluUGFyZW50Q29udGV4dHMoaCkmJih0aGlzLmRlYWN0aXZhdGUoKSx0aGlzLnBhcmVudENvbnRleHRzLm9uQ2hpbGRPdXRsZXREZXN0cm95ZWQoaCkpLHRoaXMuaW5pdGlhbGl6ZU91dGxldFdpdGhOYW1lKCl9fW5nT25EZXN0cm95KCl7dGhpcy5pc1Ry''@;'; put 'put ''YWNrZWRJblBhcmVudENvbnRleHRzKHRoaXMubmFtZSkmJnRoaXMucGFyZW50Q29udGV4dHMub25DaGlsZE91dGxldERlc3Ryb3llZCh0aGlzLm5hbWUpLHRoaXMuaW5wdXRCaW5kZXI/LnVuc3Vic2NyaWJlRnJvbVJvdXRlRGF0YSh0aGlzKX1pc1RyYWNrZWRJblBhcmVudENvbnRleHRzKGEp''@;'; put 'put ''e3JldHVybiB0aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQoYSk/Lm91dGxldD09PXRoaXN9bmdPbkluaXQoKXt0aGlzLmluaXRpYWxpemVPdXRsZXRXaXRoTmFtZSgpfWluaXRpYWxpemVPdXRsZXRXaXRoTmFtZSgpe2lmKHRoaXMucGFyZW50Q29udGV4dHMub25DaGlsZE91dGxldENy''@;'; put 'put ''ZWF0ZWQodGhpcy5uYW1lLHRoaXMpLHRoaXMuYWN0aXZhdGVkKXJldHVybjtjb25zdCBhPXRoaXMucGFyZW50Q29udGV4dHMuZ2V0Q29udGV4dCh0aGlzLm5hbWUpO2E/LnJvdXRlJiYoYS5hdHRhY2hSZWY/dGhpcy5hdHRhY2goYS5hdHRhY2hSZWYsYS5yb3V0ZSk6dGhpcy5hY3RpdmF0ZVdp''@;'; put 'put ''dGgoYS5yb3V0ZSxhLmluamVjdG9yKSl9Z2V0IGlzQWN0aXZhdGVkKCl7cmV0dXJuISF0aGlzLmFjdGl2YXRlZH1nZXQgY29tcG9uZW50KCl7aWYoIXRoaXMuYWN0aXZhdGVkKXRocm93IG5ldyBVbig0MDEyLCExKTtyZXR1cm4gdGhpcy5hY3RpdmF0ZWQuaW5zdGFuY2V9Z2V0IGFjdGl2YXRl''@;'; put 'put ''ZFJvdXRlKCl7aWYoIXRoaXMuYWN0aXZhdGVkKXRocm93IG5ldyBVbig0MDEyLCExKTtyZXR1cm4gdGhpcy5fYWN0aXZhdGVkUm91dGV9Z2V0IGFjdGl2YXRlZFJvdXRlRGF0YSgpe3JldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZT90aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRh''@;'; put 'put ''Ont9fWRldGFjaCgpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgVW4oNDAxMiwhMSk7dGhpcy5sb2NhdGlvbi5kZXRhY2goKTtjb25zdCBhPXRoaXMuYWN0aXZhdGVkO3JldHVybiB0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5kZXRhY2hF''@;'; put 'put ''dmVudHMuZW1pdChhLmluc3RhbmNlKSxhfWF0dGFjaChhLGQpe3RoaXMuYWN0aXZhdGVkPWEsdGhpcy5fYWN0aXZhdGVkUm91dGU9ZCx0aGlzLmxvY2F0aW9uLmluc2VydChhLmhvc3RWaWV3KSx0aGlzLmlucHV0QmluZGVyPy5iaW5kQWN0aXZhdGVkUm91dGVUb091dGxldENvbXBvbmVudCh0''@;'; put 'put ''aGlzKSx0aGlzLmF0dGFjaEV2ZW50cy5lbWl0KGEuaW5zdGFuY2UpfWRlYWN0aXZhdGUoKXtpZih0aGlzLmFjdGl2YXRlZCl7Y29uc3QgYT10aGlzLmNvbXBvbmVudDt0aGlzLmFjdGl2YXRlZC5kZXN0cm95KCksdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxs''@;'; put 'put ''LHRoaXMuZGVhY3RpdmF0ZUV2ZW50cy5lbWl0KGEpfX1hY3RpdmF0ZVdpdGgoYSxkKXtpZih0aGlzLmlzQWN0aXZhdGVkKXRocm93IG5ldyBVbig0MDEzLCExKTt0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1hO2NvbnN0IGg9dGhpcy5sb2NhdGlvbix2PWEuc25hcHNob3QuY29tcG9uZW50LFM9dGhp''@;'; put 'put ''cy5wYXJlbnRDb250ZXh0cy5nZXRPckNyZWF0ZUNvbnRleHQodGhpcy5uYW1lKS5jaGlsZHJlbixWPW5ldyB0VShhLFMsaC5pbmplY3Rvcik7dGhpcy5hY3RpdmF0ZWQ9aC5jcmVhdGVDb21wb25lbnQodix7aW5kZXg6aC5sZW5ndGgsaW5qZWN0b3I6VixlbnZpcm9ubWVudEluamVjdG9yOmQ/''@;'; put 'put ''P3RoaXMuZW52aXJvbm1lbnRJbmplY3Rvcn0pLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksdGhpcy5pbnB1dEJpbmRlcj8uYmluZEFjdGl2YXRlZFJvdXRlVG9PdXRsZXRDb21wb25lbnQodGhpcyksdGhpcy5hY3RpdmF0ZUV2ZW50cy5lbWl0KHRoaXMuYWN0aXZhdGVkLmlu''@;'; put 'put ''c3RhbmNlKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0saW5wdXRzOntuYW1lOiJuYW1lIn0sb3V0cHV0czp7YWN0aXZhdGVFdmVu''@;'; put 'put ''dHM6ImFjdGl2YXRlIixkZWFjdGl2YXRlRXZlbnRzOiJkZWFjdGl2YXRlIixhdHRhY2hFdmVudHM6ImF0dGFjaCIsZGV0YWNoRXZlbnRzOiJkZXRhY2gifSxleHBvcnRBczpbIm91dGxldCJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W0phXX0pfX1yZXR1cm4gbH0pKCk7Y2xhc3MgdFV7X19u''@;'; put 'put ''Z091dGxldEluamVjdG9yKGMpe3JldHVybiBuZXcgdFUodGhpcy5yb3V0ZSx0aGlzLmNoaWxkQ29udGV4dHMsYyl9Y29uc3RydWN0b3IoYyxhLGQpe3RoaXMucm91dGU9Yyx0aGlzLmNoaWxkQ29udGV4dHM9YSx0aGlzLnBhcmVudD1kfWdldChjLGEpe3JldHVybiBjPT09T2M/dGhpcy5yb3V0''@;'; put 'put ''ZTpjPT09UFM/dGhpcy5jaGlsZENvbnRleHRzOnRoaXMucGFyZW50LmdldChjLGEpfX1jb25zdCBfST1uZXcgJHIoIiIpO2xldCBYb2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMub3V0bGV0RGF0YVN1YnNjcmlwdGlvbnM9bmV3IE1hcH1iaW5kQWN0aXZhdGVkUm91dGVUb091''@;'; put 'put ''dGxldENvbXBvbmVudChhKXt0aGlzLnVuc3Vic2NyaWJlRnJvbVJvdXRlRGF0YShhKSx0aGlzLnN1YnNjcmliZVRvUm91dGVEYXRhKGEpfXVuc3Vic2NyaWJlRnJvbVJvdXRlRGF0YShhKXt0aGlzLm91dGxldERhdGFTdWJzY3JpcHRpb25zLmdldChhKT8udW5zdWJzY3JpYmUoKSx0aGlzLm91''@;'; put 'put ''dGxldERhdGFTdWJzY3JpcHRpb25zLmRlbGV0ZShhKX1zdWJzY3JpYmVUb1JvdXRlRGF0YShhKXtjb25zdHthY3RpdmF0ZWRSb3V0ZTpkfT1hLGg9VFMoW2QucXVlcnlQYXJhbXMsZC5wYXJhbXMsZC5kYXRhXSkucGlwZShKMCgoW2YsdixTXSxWKT0+KFM9ey4uLmYsLi4udiwuLi5TfSwwPT09''@;'; put 'put ''Vj9PbyhTKTpQcm9taXNlLnJlc29sdmUoUykpKSkuc3Vic2NyaWJlKGY9PntpZighYS5pc0FjdGl2YXRlZHx8IWEuYWN0aXZhdGVkQ29tcG9uZW50UmVmfHxhLmFjdGl2YXRlZFJvdXRlIT09ZHx8bnVsbD09PWQuY29tcG9uZW50KXJldHVybiB2b2lkIHRoaXMudW5zdWJzY3JpYmVGcm9tUm91''@;'; put 'put ''dGVEYXRhKGEpO2NvbnN0IHY9ZnVuY3Rpb24gRjdlKGwpe2NvbnN0IGM9bXMobCk7aWYoIWMpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgQTYoYyk7cmV0dXJue2dldCBzZWxlY3Rvcigpe3JldHVybiBhLnNlbGVjdG9yfSxnZXQgdHlwZSgpe3JldHVybiBhLmNvbXBvbmVudFR5cGV9LGdldCBp''@;'; put 'put ''bnB1dHMoKXtyZXR1cm4gYS5pbnB1dHN9LGdldCBvdXRwdXRzKCl7cmV0dXJuIGEub3V0cHV0c30sZ2V0IG5nQ29udGVudFNlbGVjdG9ycygpe3JldHVybiBhLm5nQ29udGVudFNlbGVjdG9yc30sZ2V0IGlzU3RhbmRhbG9uZSgpe3JldHVybiBjLnN0YW5kYWxvbmV9LGdldCBpc1NpZ25hbCgp''@;'; put 'put ''e3JldHVybiBjLnNpZ25hbHN9fX0oZC5jb21wb25lbnQpO2lmKHYpZm9yKGNvbnN0e3RlbXBsYXRlTmFtZTpTfW9mIHYuaW5wdXRzKWEuYWN0aXZhdGVkQ29tcG9uZW50UmVmLnNldElucHV0KFMsZltTXSk7ZWxzZSB0aGlzLnVuc3Vic2NyaWJlRnJvbVJvdXRlRGF0YShhKX0pO3RoaXMub3V0''@;'; put 'put ''bGV0RGF0YVN1YnNjcmlwdGlvbnMuc2V0KGEsaCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gRlMo''@;'; put 'put ''bCxjLGEpe2lmKGEmJmwuc2hvdWxkUmV1c2VSb3V0ZShjLnZhbHVlLGEudmFsdWUuc25hcHNob3QpKXtjb25zdCBkPWEudmFsdWU7ZC5fZnV0dXJlU25hcHNob3Q9Yy52YWx1ZTtjb25zdCBoPWZ1bmN0aW9uIF93ZShsLGMsYSl7cmV0dXJuIGMuY2hpbGRyZW4ubWFwKGQ9Pntmb3IoY29uc3Qg''@;'; put 'put ''aCBvZiBhLmNoaWxkcmVuKWlmKGwuc2hvdWxkUmV1c2VSb3V0ZShkLnZhbHVlLGgudmFsdWUuc25hcHNob3QpKXJldHVybiBGUyhsLGQsaCk7cmV0dXJuIEZTKGwsZCl9KX0obCxjLGEpO3JldHVybiBuZXcgWTIoZCxoKX17aWYobC5zaG91bGRBdHRhY2goYy52YWx1ZSkpe2NvbnN0IGY9bC5y''@;'; put 'put ''ZXRyaWV2ZShjLnZhbHVlKTtpZihudWxsIT09Zil7Y29uc3Qgdj1mLnJvdXRlO3JldHVybiB2LnZhbHVlLl9mdXR1cmVTbmFwc2hvdD1jLnZhbHVlLHYuY2hpbGRyZW49Yy5jaGlsZHJlbi5tYXAoUz0+RlMobCxTKSksdn19Y29uc3QgZD1mdW5jdGlvbiBid2UobCl7cmV0dXJuIG5ldyBPYyhu''@;'; put 'put ''ZXcgQXIobC51cmwpLG5ldyBBcihsLnBhcmFtcyksbmV3IEFyKGwucXVlcnlQYXJhbXMpLG5ldyBBcihsLmZyYWdtZW50KSxuZXcgQXIobC5kYXRhKSxsLm91dGxldCxsLmNvbXBvbmVudCxsKX0oYy52YWx1ZSksaD1jLmNoaWxkcmVuLm1hcChmPT5GUyhsLGYpKTtyZXR1cm4gbmV3IFkyKGQs''@;'; put 'put ''aCl9fWNvbnN0IEpvZT0ibmdOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IiO2Z1bmN0aW9uIFFvZShsLGMpe2NvbnN0e3JlZGlyZWN0VG86YSxuYXZpZ2F0aW9uQmVoYXZpb3JPcHRpb25zOmR9PW5fKGMpP3tyZWRpcmVjdFRvOmMsbmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9uczp2b2lkIDB9OmMs''@;'; put 'put ''aD1lc2UoITEsX2QuUmVkaXJlY3QpO3JldHVybiBoLnVybD1hLGgubmF2aWdhdGlvbkJlaGF2aW9yT3B0aW9ucz1kLGh9ZnVuY3Rpb24gZXNlKGwsYyl7Y29uc3QgYT1uZXcgRXJyb3IoYE5hdmlnYXRpb25DYW5jZWxpbmdFcnJvcjogJHtsfHwiIn1gKTtyZXR1cm4gYVtKb2VdPSEwLGEuY2Fu''@;'; put 'put ''Y2VsbGF0aW9uQ29kZT1jLGF9ZnVuY3Rpb24gdHNlKGwpe3JldHVybiEhbCYmbFtKb2VdfWxldCBuc2U9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0''@;'; put 'put ''b3JzOltbIm5nLWNvbXBvbmVudCJdXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltTRF0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJll0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltjNF0sZW5jYXBzdWxhdGlvbjoyfSl9fXJldHVybiBsfSko''@;'; put 'put ''KTtmdW5jdGlvbiBuVShsKXtjb25zdCBjPWwuY2hpbGRyZW4mJmwuY2hpbGRyZW4ubWFwKG5VKSxhPWM/ey4uLmwsY2hpbGRyZW46Y306ey4uLmx9O3JldHVybiFhLmNvbXBvbmVudCYmIWEubG9hZENvbXBvbmVudCYmKGN8fGEubG9hZENoaWxkcmVuKSYmYS5vdXRsZXQmJmEub3V0bGV0IT09''@;'; put 'put ''TXMmJihhLmNvbXBvbmVudD1uc2UpLGF9ZnVuY3Rpb24geTMobCl7cmV0dXJuIGwub3V0bGV0fHxNc31mdW5jdGlvbiBOUyhsKXtpZighbClyZXR1cm4gbnVsbDtpZihsLnJvdXRlQ29uZmlnPy5faW5qZWN0b3IpcmV0dXJuIGwucm91dGVDb25maWcuX2luamVjdG9yO2ZvcihsZXQgYz1sLnBh''@;'; put 'put ''cmVudDtjO2M9Yy5wYXJlbnQpe2NvbnN0IGE9Yy5yb3V0ZUNvbmZpZztpZihhPy5fbG9hZGVkSW5qZWN0b3IpcmV0dXJuIGEuX2xvYWRlZEluamVjdG9yO2lmKGE/Ll9pbmplY3RvcilyZXR1cm4gYS5faW5qZWN0b3J9cmV0dXJuIG51bGx9Y2xhc3MgVHdle2NvbnN0cnVjdG9yKGMsYSxkLGgs''@;'; put 'put ''Zil7dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3k9Yyx0aGlzLmZ1dHVyZVN0YXRlPWEsdGhpcy5jdXJyU3RhdGU9ZCx0aGlzLmZvcndhcmRFdmVudD1oLHRoaXMuaW5wdXRCaW5kaW5nRW5hYmxlZD1mfWFjdGl2YXRlKGMpe2NvbnN0IGE9dGhpcy5mdXR1cmVTdGF0ZS5fcm9vdCxkPXRoaXMuY3Vy''@;'; put 'put ''clN0YXRlP3RoaXMuY3VyclN0YXRlLl9yb290Om51bGw7dGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYSxkLGMpLFF6KHRoaXMuZnV0dXJlU3RhdGUucm9vdCksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGEsZCxjKX1kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLGQpe2NvbnN0IGg9b18o''@;'; put 'put ''YSk7Yy5jaGlsZHJlbi5mb3JFYWNoKGY9Pntjb25zdCB2PWYudmFsdWUub3V0bGV0O3RoaXMuZGVhY3RpdmF0ZVJvdXRlcyhmLGhbdl0sZCksZGVsZXRlIGhbdl19KSxPYmplY3QudmFsdWVzKGgpLmZvckVhY2goZj0+e3RoaXMuZGVhY3RpdmF0ZVJvdXRlQW5kSXRzQ2hpbGRyZW4oZixkKX0p''@;'; put 'put ''fWRlYWN0aXZhdGVSb3V0ZXMoYyxhLGQpe2NvbnN0IGg9Yy52YWx1ZSxmPWE/YS52YWx1ZTpudWxsO2lmKGg9PT1mKWlmKGguY29tcG9uZW50KXtjb25zdCB2PWQuZ2V0Q29udGV4dChoLm91dGxldCk7diYmdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLHYuY2hpbGRyZW4pfWVsc2Ug''@;'; put 'put ''dGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLGQpO2Vsc2UgZiYmdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihhLGQpfWRlYWN0aXZhdGVSb3V0ZUFuZEl0c0NoaWxkcmVuKGMsYSl7Yy52YWx1ZS5jb21wb25lbnQmJnRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnNob3Vs''@;'; put 'put ''ZERldGFjaChjLnZhbHVlLnNuYXBzaG90KT90aGlzLmRldGFjaEFuZFN0b3JlUm91dGVTdWJ0cmVlKGMsYSk6dGhpcy5kZWFjdGl2YXRlUm91dGVBbmRPdXRsZXQoYyxhKX1kZXRhY2hBbmRTdG9yZVJvdXRlU3VidHJlZShjLGEpe2NvbnN0IGQ9YS5nZXRDb250ZXh0KGMudmFsdWUub3V0bGV0''@;'; put 'put ''KSxoPWQmJmMudmFsdWUuY29tcG9uZW50P2QuY2hpbGRyZW46YSxmPW9fKGMpO2Zvcihjb25zdCB2IG9mIE9iamVjdC52YWx1ZXMoZikpdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih2LGgpO2lmKGQmJmQub3V0bGV0KXtjb25zdCB2PWQub3V0bGV0LmRldGFjaCgpLFM9ZC5j''@;'; put 'put ''aGlsZHJlbi5vbk91dGxldERlYWN0aXZhdGVkKCk7dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kuc3RvcmUoYy52YWx1ZS5zbmFwc2hvdCx7Y29tcG9uZW50UmVmOnYscm91dGU6Yyxjb250ZXh0czpTfSl9fWRlYWN0aXZhdGVSb3V0ZUFuZE91dGxldChjLGEpe2NvbnN0IGQ9YS5nZXRDb250ZXh0''@;'; put 'put ''KGMudmFsdWUub3V0bGV0KSxoPWQmJmMudmFsdWUuY29tcG9uZW50P2QuY2hpbGRyZW46YSxmPW9fKGMpO2Zvcihjb25zdCB2IG9mIE9iamVjdC52YWx1ZXMoZikpdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih2LGgpO2QmJihkLm91dGxldCYmKGQub3V0bGV0LmRlYWN0aXZh''@;'; put 'put ''dGUoKSxkLmNoaWxkcmVuLm9uT3V0bGV0RGVhY3RpdmF0ZWQoKSksZC5hdHRhY2hSZWY9bnVsbCxkLnJvdXRlPW51bGwpfWFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLGQpe2NvbnN0IGg9b18oYSk7Yy5jaGlsZHJlbi5mb3JFYWNoKGY9Pnt0aGlzLmFjdGl2YXRlUm91dGVzKGYsaFtmLnZhbHVl''@;'; put 'put ''Lm91dGxldF0sZCksdGhpcy5mb3J3YXJkRXZlbnQobmV3IHB3ZShmLnZhbHVlLnNuYXBzaG90KSl9KSxjLmNoaWxkcmVuLmxlbmd0aCYmdGhpcy5mb3J3YXJkRXZlbnQobmV3IGh3ZShjLnZhbHVlLnNuYXBzaG90KSl9YWN0aXZhdGVSb3V0ZXMoYyxhLGQpe2NvbnN0IGg9Yy52YWx1ZSxmPWE/''@;'; put 'put ''YS52YWx1ZTpudWxsO2lmKFF6KGgpLGg9PT1mKWlmKGguY29tcG9uZW50KXtjb25zdCB2PWQuZ2V0T3JDcmVhdGVDb250ZXh0KGgub3V0bGV0KTt0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxhLHYuY2hpbGRyZW4pfWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGMsYSxkKTtlbHNl''@;'; put 'put ''IGlmKGguY29tcG9uZW50KXtjb25zdCB2PWQuZ2V0T3JDcmVhdGVDb250ZXh0KGgub3V0bGV0KTtpZih0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRBdHRhY2goaC5zbmFwc2hvdCkpe2NvbnN0IFM9dGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3kucmV0cmlldmUoaC5zbmFwc2hvdCk7dGhp''@;'; put 'put ''cy5yb3V0ZVJldXNlU3RyYXRlZ3kuc3RvcmUoaC5zbmFwc2hvdCxudWxsKSx2LmNoaWxkcmVuLm9uT3V0bGV0UmVBdHRhY2hlZChTLmNvbnRleHRzKSx2LmF0dGFjaFJlZj1TLmNvbXBvbmVudFJlZix2LnJvdXRlPVMucm91dGUudmFsdWUsdi5vdXRsZXQmJnYub3V0bGV0LmF0dGFjaChTLmNv''@;'; put 'put ''bXBvbmVudFJlZixTLnJvdXRlLnZhbHVlKSxReihTLnJvdXRlLnZhbHVlKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXMoYyxudWxsLHYuY2hpbGRyZW4pfWVsc2V7Y29uc3QgUz1OUyhoLnNuYXBzaG90KTt2LmF0dGFjaFJlZj1udWxsLHYucm91dGU9aCx2LmluamVjdG9yPVMsdi5vdXRsZXQm''@;'; put 'put ''JnYub3V0bGV0LmFjdGl2YXRlV2l0aChoLHYuaW5qZWN0b3IpLHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyhjLG51bGwsdi5jaGlsZHJlbil9fWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGMsbnVsbCxkKX19Y2xhc3MgcnNle2NvbnN0cnVjdG9yKGMpe3RoaXMucGF0aD1jLHRoaXMu''@;'; put 'put ''cm91dGU9dGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGgtMV19fWNsYXNzIGJJe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5jb21wb25lbnQ9Yyx0aGlzLnJvdXRlPWF9fWZ1bmN0aW9uIGt3ZShsLGMsYSl7Y29uc3QgZD1sLl9yb290O3JldHVybiBIUyhkLGM/Yy5fcm9vdDpudWxsLGEsW2QudmFs''@;'; put 'put ''dWVdKX1mdW5jdGlvbiBzXyhsLGMpe2NvbnN0IGE9U3ltYm9sKCksZD1jLmdldChsLGEpO3JldHVybiBkPT09YT8iZnVuY3Rpb24iIT10eXBlb2YgbHx8ZnVuY3Rpb24gS3UobCl7cmV0dXJuIG51bGwhPT1xdShsKX0obCk/Yy5nZXQobCk6bDpkfWZ1bmN0aW9uIEhTKGwsYyxhLGQsaD17Y2Fu''@;'; put 'put ''RGVhY3RpdmF0ZUNoZWNrczpbXSxjYW5BY3RpdmF0ZUNoZWNrczpbXX0pe2NvbnN0IGY9b18oYyk7cmV0dXJuIGwuY2hpbGRyZW4uZm9yRWFjaCh2PT57KGZ1bmN0aW9uIER3ZShsLGMsYSxkLGg9e2NhbkRlYWN0aXZhdGVDaGVja3M6W10sY2FuQWN0aXZhdGVDaGVja3M6W119KXtjb25zdCBm''@;'; put 'put ''PWwudmFsdWUsdj1jP2MudmFsdWU6bnVsbCxTPWE/YS5nZXRDb250ZXh0KGwudmFsdWUub3V0bGV0KTpudWxsO2lmKHYmJmYucm91dGVDb25maWc9PT12LnJvdXRlQ29uZmlnKXtjb25zdCBWPWZ1bmN0aW9uIEl3ZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpcmV0dXJuIGEobCxj''@;'; put 'put ''KTtzd2l0Y2goYSl7Y2FzZSJwYXRoUGFyYW1zQ2hhbmdlIjpyZXR1cm4hZTgobC51cmwsYy51cmwpO2Nhc2UicGF0aFBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFlOChsLnVybCxjLnVybCl8fCF2MyhsLnF1ZXJ5UGFyYW1zLGMucXVlcnlQYXJhbXMpO2Nhc2UiYWx3YXlzIjpy''@;'; put 'put ''ZXR1cm4hMDtjYXNlInBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFlVShsLGMpfHwhdjMobC5xdWVyeVBhcmFtcyxjLnF1ZXJ5UGFyYW1zKTtkZWZhdWx0OnJldHVybiFlVShsLGMpfX0odixmLGYucm91dGVDb25maWcucnVuR3VhcmRzQW5kUmVzb2x2ZXJzKTtWP2guY2FuQWN0''@;'; put 'put ''aXZhdGVDaGVja3MucHVzaChuZXcgcnNlKGQpKTooZi5kYXRhPXYuZGF0YSxmLl9yZXNvbHZlZERhdGE9di5fcmVzb2x2ZWREYXRhKSxIUyhsLGMsZi5jb21wb25lbnQ/Uz9TLmNoaWxkcmVuOm51bGw6YSxkLGgpLFYmJlMmJlMub3V0bGV0JiZTLm91dGxldC5pc0FjdGl2YXRlZCYmaC5jYW5E''@;'; put 'put ''ZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IGJJKFMub3V0bGV0LmNvbXBvbmVudCx2KSl9ZWxzZSB2JiZWUyhjLFMsaCksaC5jYW5BY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyByc2UoZCkpLEhTKGwsbnVsbCxmLmNvbXBvbmVudD9TP1MuY2hpbGRyZW46bnVsbDphLGQsaCl9KSh2LGZbdi52YWx1''@;'; put 'put ''ZS5vdXRsZXRdLGEsZC5jb25jYXQoW3YudmFsdWVdKSxoKSxkZWxldGUgZlt2LnZhbHVlLm91dGxldF19KSxPYmplY3QuZW50cmllcyhmKS5mb3JFYWNoKChbdixTXSk9PlZTKFMsYS5nZXRDb250ZXh0KHYpLGgpKSxofWZ1bmN0aW9uIFZTKGwsYyxhKXtjb25zdCBkPW9fKGwpLGg9bC52YWx1''@;'; put 'put ''ZTtPYmplY3QuZW50cmllcyhkKS5mb3JFYWNoKChbZix2XSk9PntWUyh2LGguY29tcG9uZW50P2M/Yy5jaGlsZHJlbi5nZXRDb250ZXh0KGYpOm51bGw6YyxhKX0pLGEuY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyBiSShoLmNvbXBvbmVudCYmYyYmYy5vdXRsZXQmJmMub3V0bGV0Lmlz''@;'; put 'put ''QWN0aXZhdGVkP2Mub3V0bGV0LmNvbXBvbmVudDpudWxsLGgpKX1mdW5jdGlvbiBCUyhsKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbH1mdW5jdGlvbiBpc2UobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBzSXx8IkVtcHR5RXJyb3IiPT09bD8ubmFtZX1jb25zdCB5ST1TeW1ib2woIklOSVRJ''@;'; put 'put ''QUxfVkFMVUUiKTtmdW5jdGlvbiBhXygpe3JldHVybiBKMChsPT5UUyhsLm1hcChjPT5jLnBpcGUoWjIoMSksbDQoeUkpKSkpLnBpcGUoYnIoYz0+e2Zvcihjb25zdCBhIG9mIGMpaWYoITAhPT1hKXtpZihhPT09eUkpcmV0dXJuIHlJO2lmKCExPT09YXx8YSBpbnN0YW5jZW9mIGVfKXJldHVy''@;'; put 'put ''biBhfXJldHVybiEwfSksWmEoYz0+YyE9PXlJKSxaMigxKSkpfWZ1bmN0aW9uIG9zZShsKXtyZXR1cm4gZnVuY3Rpb24gcm4oLi4ubCl7cmV0dXJuIFBuKGwpfShNdShjPT57aWYobl8oYykpdGhyb3cgUW9lKDAsYyl9KSxicihjPT4hMD09PWMpKX1jbGFzcyByVXtjb25zdHJ1Y3RvcihjKXt0''@;'; put 'put ''aGlzLnNlZ21lbnRHcm91cD1jfHxudWxsfX1jbGFzcyBpVSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGMpe3N1cGVyKCksdGhpcy51cmxUcmVlPWN9fWZ1bmN0aW9uIGxfKGwpe3JldHVybiBhSShuZXcgclUobCkpfWNsYXNzIEt3ZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMudXJsU2VyaWFs''@;'; put 'put ''aXplcj1jLHRoaXMudXJsVHJlZT1hfWxpbmVyYWxpemVTZWdtZW50cyhjLGEpe2xldCBkPVtdLGg9YS5yb290O2Zvcig7Oyl7aWYoZD1kLmNvbmNhdChoLnNlZ21lbnRzKSwwPT09aC5udW1iZXJPZkNoaWxkcmVuKXJldHVybiBPbyhkKTtpZihoLm51bWJlck9mQ2hpbGRyZW4+MXx8IWguY2hp''@;'; put 'put ''bGRyZW5bTXNdKXJldHVybiBhSShuZXcgVW4oNGUzLCExKSk7aD1oLmNoaWxkcmVuW01zXX19YXBwbHlSZWRpcmVjdENvbW1hbmRzKGMsYSxkKXtjb25zdCBoPXRoaXMuYXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoYSx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoYSksYyxkKTtpZihhLnN0''@;'; put 'put ''YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgaVUoaCk7cmV0dXJuIGh9YXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoYyxhLGQsaCl7Y29uc3QgZj10aGlzLmNyZWF0ZVNlZ21lbnRHcm91cChjLGEucm9vdCxkLGgpO3JldHVybiBuZXcgZV8oZix0aGlzLmNyZWF0ZVF1ZXJ5UGFyYW1zKGEucXVl''@;'; put 'put ''cnlQYXJhbXMsdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSxhLmZyYWdtZW50KX1jcmVhdGVRdWVyeVBhcmFtcyhjLGEpe2NvbnN0IGQ9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKGMpLmZvckVhY2goKFtoLGZdKT0+e2lmKCJzdHJpbmciPT10eXBlb2YgZiYmZi5zdGFydHNXaXRoKCI6Iikp''@;'; put 'put ''e2NvbnN0IFM9Zi5zdWJzdHJpbmcoMSk7ZFtoXT1hW1NdfWVsc2UgZFtoXT1mfSksZH1jcmVhdGVTZWdtZW50R3JvdXAoYyxhLGQsaCl7Y29uc3QgZj10aGlzLmNyZWF0ZVNlZ21lbnRzKGMsYS5zZWdtZW50cyxkLGgpO2xldCB2PXt9O3JldHVybiBPYmplY3QuZW50cmllcyhhLmNoaWxkcmVu''@;'; put 'put ''KS5mb3JFYWNoKChbUyxWXSk9Pnt2W1NdPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKGMsVixkLGgpfSksbmV3IG5sKGYsdil9Y3JlYXRlU2VnbWVudHMoYyxhLGQsaCl7cmV0dXJuIGEubWFwKGY9PmYucGF0aC5zdGFydHNXaXRoKCI6Iik/dGhpcy5maW5kUG9zUGFyYW0oYyxmLGgpOnRoaXMu''@;'; put 'put ''ZmluZE9yUmV0dXJuKGYsZCkpfWZpbmRQb3NQYXJhbShjLGEsZCl7Y29uc3QgaD1kW2EucGF0aC5zdWJzdHJpbmcoMSldO2lmKCFoKXRocm93IG5ldyBVbig0MDAxLCExKTtyZXR1cm4gaH1maW5kT3JSZXR1cm4oYyxhKXtsZXQgZD0wO2Zvcihjb25zdCBoIG9mIGEpe2lmKGgucGF0aD09PWMu''@;'; put 'put ''cGF0aClyZXR1cm4gYS5zcGxpY2UoZCksaDtkKyt9cmV0dXJuIGN9fWNvbnN0IG9VPXttYXRjaGVkOiExLGNvbnN1bWVkU2VnbWVudHM6W10scmVtYWluaW5nU2VnbWVudHM6W10scGFyYW1ldGVyczp7fSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX07ZnVuY3Rpb24gWHdlKGwsYyxhLGQs''@;'; put 'put ''aCl7Y29uc3QgZj1zVShsLGMsYSk7cmV0dXJuIGYubWF0Y2hlZD8oZD1mdW5jdGlvbiB3d2UobCxjKXtyZXR1cm4gbC5wcm92aWRlcnMmJiFsLl9pbmplY3RvciYmKGwuX2luamVjdG9yPUpwKGwucHJvdmlkZXJzLGMsYFJvdXRlOiAke2wucGF0aH1gKSksbC5faW5qZWN0b3I/P2N9KGMsZCks''@;'; put 'put ''ZnVuY3Rpb24gR3dlKGwsYyxhLGQpe2NvbnN0IGg9Yy5jYW5NYXRjaDtyZXR1cm4gaCYmMCE9PWgubGVuZ3RoP09vKGgubWFwKHY9Pntjb25zdCBTPXNfKHYsbCk7cmV0dXJuIHVtKGZ1bmN0aW9uIE53ZShsKXtyZXR1cm4gbCYmQlMobC5jYW5NYXRjaCl9KFMpP1MuY2FuTWF0Y2goYyxhKTpn''@;'; put 'put ''MChsLCgpPT5TKGMsYSkpKX0pKS5waXBlKGFfKCksb3NlKCkpOk9vKCEwKX0oZCxjLGEpLnBpcGUoYnIodj0+ITA9PT12P2Y6ey4uLm9VfSkpKTpPbyhmKX1mdW5jdGlvbiBzVShsLGMsYSl7aWYoIioqIj09PWMucGF0aClyZXR1cm4gZnVuY3Rpb24gSndlKGwpe3JldHVybnttYXRjaGVkOiEw''@;'; put 'put ''LHBhcmFtZXRlcnM6bC5sZW5ndGg+MD94b2UobCkucGFyYW1ldGVyczp7fSxjb25zdW1lZFNlZ21lbnRzOmwscmVtYWluaW5nU2VnbWVudHM6W10scG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319fShhKTtpZigiIj09PWMucGF0aClyZXR1cm4iZnVsbCI9PT1jLnBhdGhNYXRjaCYmKGwuaGFz''@;'; put 'put ''Q2hpbGRyZW4oKXx8YS5sZW5ndGg+MCk/ey4uLm9VfTp7bWF0Y2hlZDohMCxjb25zdW1lZFNlZ21lbnRzOltdLHJlbWFpbmluZ1NlZ21lbnRzOmEscGFyYW1ldGVyczp7fSxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX07Y29uc3QgaD0oYy5tYXRjaGVyfHxSeWUpKGEsbCxjKTtpZighaCly''@;'; put 'put ''ZXR1cm57Li4ub1V9O2NvbnN0IGY9e307T2JqZWN0LmVudHJpZXMoaC5wb3NQYXJhbXM/P3t9KS5mb3JFYWNoKChbUyxWXSk9PntmW1NdPVYucGF0aH0pO2NvbnN0IHY9aC5jb25zdW1lZC5sZW5ndGg+MD97Li4uZiwuLi5oLmNvbnN1bWVkW2guY29uc3VtZWQubGVuZ3RoLTFdLnBhcmFtZXRl''@;'; put 'put ''cnN9OmY7cmV0dXJue21hdGNoZWQ6ITAsY29uc3VtZWRTZWdtZW50czpoLmNvbnN1bWVkLHJlbWFpbmluZ1NlZ21lbnRzOmEuc2xpY2UoaC5jb25zdW1lZC5sZW5ndGgpLHBhcmFtZXRlcnM6dixwb3NpdGlvbmFsUGFyYW1TZWdtZW50czpoLnBvc1BhcmFtcz8/e319fWZ1bmN0aW9uIHNzZShs''@;'; put 'put ''LGMsYSxkKXtyZXR1cm4gYS5sZW5ndGg+MCYmZnVuY3Rpb24gdENlKGwsYyxhKXtyZXR1cm4gYS5zb21lKGQ9PndJKGwsYyxkKSYmeTMoZCkhPT1Ncyl9KGwsYSxkKT97c2VnbWVudEdyb3VwOm5ldyBubChjLGVDZShkLG5ldyBubChhLGwuY2hpbGRyZW4pKSksc2xpY2VkU2VnbWVudHM6W119''@;'; put 'put ''OjA9PT1hLmxlbmd0aCYmZnVuY3Rpb24gbkNlKGwsYyxhKXtyZXR1cm4gYS5zb21lKGQ9PndJKGwsYyxkKSl9KGwsYSxkKT97c2VnbWVudEdyb3VwOm5ldyBubChsLnNlZ21lbnRzLFF3ZShsLGEsZCxsLmNoaWxkcmVuKSksc2xpY2VkU2VnbWVudHM6YX06e3NlZ21lbnRHcm91cDpuZXcgbmwo''@;'; put 'put ''bC5zZWdtZW50cyxsLmNoaWxkcmVuKSxzbGljZWRTZWdtZW50czphfX1mdW5jdGlvbiBRd2UobCxjLGEsZCl7Y29uc3QgaD17fTtmb3IoY29uc3QgZiBvZiBhKWlmKHdJKGwsYyxmKSYmIWRbeTMoZildKXtjb25zdCB2PW5ldyBubChbXSx7fSk7aFt5MyhmKV09dn1yZXR1cm57Li4uZCwuLi5o''@;'; put 'put ''fX1mdW5jdGlvbiBlQ2UobCxjKXtjb25zdCBhPXt9O2FbTXNdPWM7Zm9yKGNvbnN0IGQgb2YgbClpZigiIj09PWQucGF0aCYmeTMoZCkhPT1Ncyl7Y29uc3QgaD1uZXcgbmwoW10se30pO2FbeTMoZCldPWh9cmV0dXJuIGF9ZnVuY3Rpb24gd0kobCxjLGEpe3JldHVybighKGwuaGFzQ2hpbGRy''@;'; put 'put ''ZW4oKXx8Yy5sZW5ndGg+MCl8fCJmdWxsIiE9PWEucGF0aE1hdGNoKSYmIiI9PT1hLnBhdGh9Y2xhc3Mgb0Nle31jbGFzcyBsQ2V7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyl7dGhpcy5pbmplY3Rvcj1jLHRoaXMuY29uZmlnTG9hZGVyPWEsdGhpcy5yb290Q29tcG9uZW50VHlwZT1kLHRo''@;'; put 'put ''aXMuY29uZmlnPWgsdGhpcy51cmxUcmVlPWYsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PXYsdGhpcy51cmxTZXJpYWxpemVyPVMsdGhpcy5hcHBseVJlZGlyZWN0cz1uZXcgS3dlKHRoaXMudXJsU2VyaWFsaXplcix0aGlzLnVybFRyZWUpLHRoaXMuYWJzb2x1dGVSZWRpcmVjdENv''@;'; put 'put ''dW50PTAsdGhpcy5hbGxvd1JlZGlyZWN0cz0hMH1ub01hdGNoRXJyb3IoYyl7cmV0dXJuIG5ldyBVbig0MDAyLGAnJHtjLnNlZ21lbnRHcm91cH0nYCl9cmVjb2duaXplKCl7Y29uc3QgYz1zc2UodGhpcy51cmxUcmVlLnJvb3QsW10sW10sdGhpcy5jb25maWcpLnNlZ21lbnRHcm91cDtyZXR1''@;'; put 'put ''cm4gdGhpcy5tYXRjaChjKS5waXBlKGJyKGE9Pntjb25zdCBkPW5ldyBYeihbXSxPYmplY3QuZnJlZXplKHt9KSxPYmplY3QuZnJlZXplKHsuLi50aGlzLnVybFRyZWUucXVlcnlQYXJhbXN9KSx0aGlzLnVybFRyZWUuZnJhZ21lbnQse30sTXMsdGhpcy5yb290Q29tcG9uZW50VHlwZSxudWxs''@;'; put 'put ''LHt9KSxoPW5ldyBZMihkLGEpLGY9bmV3ICRvZSgiIixoKSx2PWZ1bmN0aW9uIEp5ZShsLGMsYT1udWxsLGQ9bnVsbCl7cmV0dXJuIE5vZShGb2UobCksYyxhLGQpfShkLFtdLHRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcyx0aGlzLnVybFRyZWUuZnJhZ21lbnQpO3JldHVybiB2LnF1ZXJ5UGFy''@;'; put 'put ''YW1zPXRoaXMudXJsVHJlZS5xdWVyeVBhcmFtcyxmLnVybD10aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHYpLHRoaXMuaW5oZXJpdFBhcmFtc0FuZERhdGEoZi5fcm9vdCxudWxsKSx7c3RhdGU6Zix0cmVlOnZ9fSkpfW1hdGNoKGMpe3JldHVybiB0aGlzLnByb2Nlc3NTZWdtZW50R3Jv''@;'; put 'put ''dXAodGhpcy5pbmplY3Rvcix0aGlzLmNvbmZpZyxjLE1zKS5waXBlKEp2KGQ9PntpZihkIGluc3RhbmNlb2YgaVUpcmV0dXJuIHRoaXMudXJsVHJlZT1kLnVybFRyZWUsdGhpcy5tYXRjaChkLnVybFRyZWUucm9vdCk7dGhyb3cgZCBpbnN0YW5jZW9mIHJVP3RoaXMubm9NYXRjaEVycm9yKGQp''@;'; put 'put ''OmR9KSl9aW5oZXJpdFBhcmFtc0FuZERhdGEoYyxhKXtjb25zdCBkPWMudmFsdWUsaD1LeihkLGEsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KTtkLnBhcmFtcz1PYmplY3QuZnJlZXplKGgucGFyYW1zKSxkLmRhdGE9T2JqZWN0LmZyZWV6ZShoLmRhdGEpLGMuY2hpbGRyZW4uZm9y''@;'; put 'put ''RWFjaChmPT50aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKGYsZCkpfXByb2Nlc3NTZWdtZW50R3JvdXAoYyxhLGQsaCl7cmV0dXJuIDA9PT1kLnNlZ21lbnRzLmxlbmd0aCYmZC5oYXNDaGlsZHJlbigpP3RoaXMucHJvY2Vzc0NoaWxkcmVuKGMsYSxkKTp0aGlzLnByb2Nlc3NTZWdtZW50KGMs''@;'; put 'put ''YSxkLGQuc2VnbWVudHMsaCwhMCkucGlwZShicihmPT5mIGluc3RhbmNlb2YgWTI/W2ZdOltdKSl9cHJvY2Vzc0NoaWxkcmVuKGMsYSxkKXtjb25zdCBoPVtdO2Zvcihjb25zdCBmIG9mIE9iamVjdC5rZXlzKGQuY2hpbGRyZW4pKSJwcmltYXJ5Ij09PWY/aC51bnNoaWZ0KGYpOmgucHVzaChm''@;'; put 'put ''KTtyZXR1cm4gUWMoaCkucGlwZShYdihmPT57Y29uc3Qgdj1kLmNoaWxkcmVuW2ZdLFM9ZnVuY3Rpb24geHdlKGwsYyl7Y29uc3QgYT1sLmZpbHRlcihkPT55MyhkKT09PWMpO3JldHVybiBhLnB1c2goLi4ubC5maWx0ZXIoZD0+eTMoZCkhPT1jKSksYX0oYSxmKTtyZXR1cm4gdGhpcy5wcm9j''@;'; put 'put ''ZXNzU2VnbWVudEdyb3VwKGMsUyx2LGYpfSksZnVuY3Rpb24ga3llKGwsYyl7cmV0dXJuIGRpKGZ1bmN0aW9uIFR5ZShsLGMsYSxkLGgpe3JldHVybihmLHYpPT57bGV0IFM9YSxWPWMsUT0wO2Yuc3Vic2NyaWJlKGZpKHYsZGU9Pntjb25zdCBwZT1RKys7Vj1TP2woVixkZSxwZSk6KFM9ITAs''@;'; put 'put ''ZGUpLGQmJnYubmV4dChWKX0saCYmKCgpPT57UyYmdi5uZXh0KFYpLHYuY29tcGxldGUoKX0pKSl9fShsLGMsYXJndW1lbnRzLmxlbmd0aD49MiwhMCkpfSgoZix2KT0+KGYucHVzaCguLi52KSxmKSksbEkobnVsbCksZnVuY3Rpb24gQXllKGwsYyl7Y29uc3QgYT1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''Pj0yO3JldHVybiBkPT5kLnBpcGUobD9aYSgoaCxmKT0+bChoLGYsZCkpOk9uLFZ6KDEpLGE/bEkoYyk6U29lKCgpPT5uZXcgc0kpKX0oKSxzMChmPT57aWYobnVsbD09PWYpcmV0dXJuIGxfKGQpO2NvbnN0IHY9YXNlKGYpO3JldHVybiBmdW5jdGlvbiBjQ2UobCl7bC5zb3J0KChjLGEpPT5j''@;'; put 'put ''LnZhbHVlLm91dGxldD09PU1zPy0xOmEudmFsdWUub3V0bGV0PT09TXM/MTpjLnZhbHVlLm91dGxldC5sb2NhbGVDb21wYXJlKGEudmFsdWUub3V0bGV0KSl9KHYpLE9vKHYpfSkpfXByb2Nlc3NTZWdtZW50KGMsYSxkLGgsZix2KXtyZXR1cm4gUWMoYSkucGlwZShYdihTPT50aGlzLnByb2Nl''@;'; put 'put ''c3NTZWdtZW50QWdhaW5zdFJvdXRlKFMuX2luamVjdG9yPz9jLGEsUyxkLGgsZix2KS5waXBlKEp2KFY9PntpZihWIGluc3RhbmNlb2YgclUpcmV0dXJuIE9vKG51bGwpO3Rocm93IFZ9KSkpLGNtKFM9PiEhUyksSnYoUz0+e2lmKGlzZShTKSlyZXR1cm4gZnVuY3Rpb24gaUNlKGwsYyxhKXty''@;'; put 'put ''ZXR1cm4gMD09PWMubGVuZ3RoJiYhbC5jaGlsZHJlblthXX0oZCxoLGYpP09vKG5ldyBvQ2UpOmxfKGQpO3Rocm93IFN9KSl9cHJvY2Vzc1NlZ21lbnRBZ2FpbnN0Um91dGUoYyxhLGQsaCxmLHYsUyl7cmV0dXJuIGZ1bmN0aW9uIHJDZShsLGMsYSxkKXtyZXR1cm4hISh5MyhsKT09PWR8fGQh''@;'; put 'put ''PT1NcyYmd0koYyxhLGwpKSYmc1UoYyxsLGEpLm1hdGNoZWR9KGQsaCxmLHYpP3ZvaWQgMD09PWQucmVkaXJlY3RUbz90aGlzLm1hdGNoU2VnbWVudEFnYWluc3RSb3V0ZShjLGgsZCxmLHYpOnRoaXMuYWxsb3dSZWRpcmVjdHMmJlM/dGhpcy5leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlVXNp''@;'; put 'put ''bmdSZWRpcmVjdChjLGgsYSxkLGYsdik6bF8oaCk6bF8oaCl9ZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QoYyxhLGQsaCxmLHYpe2NvbnN0e21hdGNoZWQ6Uyxjb25zdW1lZFNlZ21lbnRzOlYscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6USxyZW1haW5pbmdTZWdtZW50''@;'; put 'put ''czpkZX09c1UoYSxoLGYpO2lmKCFTKXJldHVybiBsXyhhKTtoLnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpJiYodGhpcy5hYnNvbHV0ZVJlZGlyZWN0Q291bnQrKyx0aGlzLmFic29sdXRlUmVkaXJlY3RDb3VudD4zMSYmKHRoaXMuYWxsb3dSZWRpcmVjdHM9ITEpKTtjb25zdCBwZT10aGlz''@;'; put 'put ''LmFwcGx5UmVkaXJlY3RzLmFwcGx5UmVkaXJlY3RDb21tYW5kcyhWLGgucmVkaXJlY3RUbyxRKTtyZXR1cm4gdGhpcy5hcHBseVJlZGlyZWN0cy5saW5lcmFsaXplU2VnbWVudHMoaCxwZSkucGlwZShzMChDZT0+dGhpcy5wcm9jZXNzU2VnbWVudChjLGQsYSxDZS5jb25jYXQoZGUpLHYsITEp''@;'; put 'put ''KSl9bWF0Y2hTZWdtZW50QWdhaW5zdFJvdXRlKGMsYSxkLGgsZil7Y29uc3Qgdj1Yd2UoYSxkLGgsYyk7cmV0dXJuIioqIj09PWQucGF0aCYmKGEuY2hpbGRyZW49e30pLHYucGlwZShKMChTPT5TLm1hdGNoZWQ/dGhpcy5nZXRDaGlsZENvbmZpZyhjPWQuX2luamVjdG9yPz9jLGQsaCkucGlw''@;'; put 'put ''ZShKMCgoe3JvdXRlczpWfSk9Pntjb25zdCBRPWQuX2xvYWRlZEluamVjdG9yPz9jLHtjb25zdW1lZFNlZ21lbnRzOmRlLHJlbWFpbmluZ1NlZ21lbnRzOnBlLHBhcmFtZXRlcnM6Q2V9PVMsT2U9bmV3IFh6KGRlLENlLE9iamVjdC5mcmVlemUoey4uLnRoaXMudXJsVHJlZS5xdWVyeVBhcmFt''@;'; put 'put ''c30pLHRoaXMudXJsVHJlZS5mcmFnbWVudCxmdW5jdGlvbiBkQ2UobCl7cmV0dXJuIGwuZGF0YXx8e319KGQpLHkzKGQpLGQuY29tcG9uZW50Pz9kLl9sb2FkZWRDb21wb25lbnQ/P251bGwsZCxmdW5jdGlvbiBoQ2UobCl7cmV0dXJuIGwucmVzb2x2ZXx8e319KGQpKSx7c2VnbWVudEdyb3Vw''@;'; put 'put ''OlllLHNsaWNlZFNlZ21lbnRzOmV0fT1zc2UoYSxkZSxwZSxWKTtpZigwPT09ZXQubGVuZ3RoJiZZZS5oYXNDaGlsZHJlbigpKXJldHVybiB0aGlzLnByb2Nlc3NDaGlsZHJlbihRLFYsWWUpLnBpcGUoYnIoaHQ9Pm51bGw9PT1odD9udWxsOm5ldyBZMihPZSxodCkpKTtpZigwPT09Vi5sZW5n''@;'; put 'put ''dGgmJjA9PT1ldC5sZW5ndGgpcmV0dXJuIE9vKG5ldyBZMihPZSxbXSkpO2NvbnN0IGR0PXkzKGQpPT09ZjtyZXR1cm4gdGhpcy5wcm9jZXNzU2VnbWVudChRLFYsWWUsZXQsZHQ/TXM6ZiwhMCkucGlwZShicihodD0+bmV3IFkyKE9lLGh0IGluc3RhbmNlb2YgWTI/W2h0XTpbXSkpKX0pKTps''@;'; put 'put ''XyhhKSkpfWdldENoaWxkQ29uZmlnKGMsYSxkKXtyZXR1cm4gYS5jaGlsZHJlbj9Pbyh7cm91dGVzOmEuY2hpbGRyZW4saW5qZWN0b3I6Y30pOmEubG9hZENoaWxkcmVuP3ZvaWQgMCE9PWEuX2xvYWRlZFJvdXRlcz9Pbyh7cm91dGVzOmEuX2xvYWRlZFJvdXRlcyxpbmplY3RvcjphLl9sb2Fk''@;'; put 'put ''ZWRJbmplY3Rvcn0pOmZ1bmN0aW9uIFd3ZShsLGMsYSxkKXtjb25zdCBoPWMuY2FuTG9hZDtyZXR1cm4gdm9pZCAwPT09aHx8MD09PWgubGVuZ3RoP09vKCEwKTpPbyhoLm1hcCh2PT57Y29uc3QgUz1zXyh2LGwpO3JldHVybiB1bShmdW5jdGlvbiBMd2UobCl7cmV0dXJuIGwmJkJTKGwuY2Fu''@;'; put 'put ''TG9hZCl9KFMpP1MuY2FuTG9hZChjLGEpOmcwKGwsKCk9PlMoYyxhKSkpfSkpLnBpcGUoYV8oKSxvc2UoKSl9KGMsYSxkKS5waXBlKHMwKGg9Pmg/dGhpcy5jb25maWdMb2FkZXIubG9hZENoaWxkcmVuKGMsYSkucGlwZShNdShmPT57YS5fbG9hZGVkUm91dGVzPWYucm91dGVzLGEuX2xvYWRl''@;'; put 'put ''ZEluamVjdG9yPWYuaW5qZWN0b3J9KSk6ZnVuY3Rpb24gcXdlKGwpe3JldHVybiBhSShlc2UoITEsX2QuR3VhcmRSZWplY3RlZCkpfSgpKSk6T28oe3JvdXRlczpbXSxpbmplY3RvcjpjfSl9fWZ1bmN0aW9uIHVDZShsKXtjb25zdCBjPWwudmFsdWUucm91dGVDb25maWc7cmV0dXJuIGMmJiIi''@;'; put 'put ''PT09Yy5wYXRofWZ1bmN0aW9uIGFzZShsKXtjb25zdCBjPVtdLGE9bmV3IFNldDtmb3IoY29uc3QgZCBvZiBsKXtpZighdUNlKGQpKXtjLnB1c2goZCk7Y29udGludWV9Y29uc3QgaD1jLmZpbmQoZj0+ZC52YWx1ZS5yb3V0ZUNvbmZpZz09PWYudmFsdWUucm91dGVDb25maWcpO3ZvaWQgMCE9''@;'; put 'put ''PWg/KGguY2hpbGRyZW4ucHVzaCguLi5kLmNoaWxkcmVuKSxhLmFkZChoKSk6Yy5wdXNoKGQpfWZvcihjb25zdCBkIG9mIGEpe2NvbnN0IGg9YXNlKGQuY2hpbGRyZW4pO2MucHVzaChuZXcgWTIoZC52YWx1ZSxoKSl9cmV0dXJuIGMuZmlsdGVyKGQ9PiFhLmhhcyhkKSl9ZnVuY3Rpb24gbHNl''@;'; put 'put ''KGwpe2NvbnN0IGM9bC5jaGlsZHJlbi5tYXAoYT0+bHNlKGEpKS5mbGF0KCk7cmV0dXJuW2wsLi4uY119ZnVuY3Rpb24gYVUobCl7cmV0dXJuIEowKGM9Pntjb25zdCBhPWwoYyk7cmV0dXJuIGE/UWMoYSkucGlwZShicigoKT0+YykpOk9vKGMpfSl9bGV0IGNzZT0oKCk9PntjbGFzcyBse2J1''@;'; put 'put ''aWxkVGl0bGUoYSl7bGV0IGQsaD1hLnJvb3Q7Zm9yKDt2b2lkIDAhPT1oOylkPXRoaXMuZ2V0UmVzb2x2ZWRUaXRsZUZvclJvdXRlKGgpPz9kLGg9aC5jaGlsZHJlbi5maW5kKGY9PmYub3V0bGV0PT09TXMpO3JldHVybiBkfWdldFJlc29sdmVkVGl0bGVGb3JSb3V0ZShhKXtyZXR1cm4gYS5k''@;'; put 'put ''YXRhW0FTXX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OigpPT5acihfQ2UpLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxfQ2U9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bCBleHRlbmRzIGNzZXtjb25zdHJ1Y3RvcihhKXtzdXBlcigpLHRoaXMudGl0bGU9YX11cGRhdGVUaXRsZShhKXtjb25zdCBkPXRoaXMuYnVpbGRUaXRsZShhKTt2b2lkIDAhPT1kJiZ0aGlzLnRpdGxlLnNldFRpdGxlKGQpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1''@;'; put 'put ''cm4gbmV3KGR8fGwpKGNyKHRfZSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO2NvbnN0IGNfPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+KHt9''@;'; put 'put ''KX0pLHVfPW5ldyAkcigiIik7bGV0IGxVPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmNvbXBvbmVudExvYWRlcnM9bmV3IFdlYWtNYXAsdGhpcy5jaGlsZHJlbkxvYWRlcnM9bmV3IFdlYWtNYXAsdGhpcy5jb21waWxlcj1acih0bmUpfWxvYWRDb21wb25lbnQoYSl7aWYodGhp''@;'; put 'put ''cy5jb21wb25lbnRMb2FkZXJzLmdldChhKSlyZXR1cm4gdGhpcy5jb21wb25lbnRMb2FkZXJzLmdldChhKTtpZihhLl9sb2FkZWRDb21wb25lbnQpcmV0dXJuIE9vKGEuX2xvYWRlZENvbXBvbmVudCk7dGhpcy5vbkxvYWRTdGFydExpc3RlbmVyJiZ0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXIo''@;'; put 'put ''YSk7Y29uc3QgZD11bShhLmxvYWRDb21wb25lbnQoKSkucGlwZShicih1c2UpLE11KGY9Pnt0aGlzLm9uTG9hZEVuZExpc3RlbmVyJiZ0aGlzLm9uTG9hZEVuZExpc3RlbmVyKGEpLGEuX2xvYWRlZENvbXBvbmVudD1mfSksa1MoKCk9Pnt0aGlzLmNvbXBvbmVudExvYWRlcnMuZGVsZXRlKGEp''@;'; put 'put ''fSkpLGg9bmV3IEh6KGQsKCk9Pm5ldyB0bikucGlwZShOeigpKTtyZXR1cm4gdGhpcy5jb21wb25lbnRMb2FkZXJzLnNldChhLGgpLGh9bG9hZENoaWxkcmVuKGEsZCl7aWYodGhpcy5jaGlsZHJlbkxvYWRlcnMuZ2V0KGQpKXJldHVybiB0aGlzLmNoaWxkcmVuTG9hZGVycy5nZXQoZCk7aWYo''@;'; put 'put ''ZC5fbG9hZGVkUm91dGVzKXJldHVybiBPbyh7cm91dGVzOmQuX2xvYWRlZFJvdXRlcyxpbmplY3RvcjpkLl9sb2FkZWRJbmplY3Rvcn0pO3RoaXMub25Mb2FkU3RhcnRMaXN0ZW5lciYmdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyKGQpO2NvbnN0IGY9ZnVuY3Rpb24gYkNlKGwsYyxhLGQpe3Jl''@;'; put 'put ''dHVybiB1bShsLmxvYWRDaGlsZHJlbigpKS5waXBlKGJyKHVzZSksczAoaD0+aCBpbnN0YW5jZW9mIEFsfHxBcnJheS5pc0FycmF5KGgpP09vKGgpOlFjKGMuY29tcGlsZU1vZHVsZUFzeW5jKGgpKSksYnIoaD0+e2QmJmQobCk7bGV0IGYsdixTPSExO3JldHVybiBBcnJheS5pc0FycmF5KGgp''@;'; put 'put ''Pyh2PWgsITApOihmPWguY3JlYXRlKGEpLmluamVjdG9yLHY9Zi5nZXQodV8sW10se29wdGlvbmFsOiEwLHNlbGY6ITB9KS5mbGF0KCkpLHtyb3V0ZXM6di5tYXAoblUpLGluamVjdG9yOmZ9fSkpfShkLHRoaXMuY29tcGlsZXIsYSx0aGlzLm9uTG9hZEVuZExpc3RlbmVyKS5waXBlKGtTKCgp''@;'; put 'put ''PT57dGhpcy5jaGlsZHJlbkxvYWRlcnMuZGVsZXRlKGQpfSkpLHY9bmV3IEh6KGYsKCk9Pm5ldyB0bikucGlwZShOeigpKTtyZXR1cm4gdGhpcy5jaGlsZHJlbkxvYWRlcnMuc2V0KGQsdiksdn1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3Rh''@;'; put 'put ''dGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiB1c2UobCl7cmV0dXJuIGZ1bmN0aW9uIHlDZShsKXtyZXR1cm4gbCYmIm9iamVjdCI9PXR5cGVvZiBsJiYiZGVmYXVsdCJp''@;'; put 'put ''biBsfShsKT9sLmRlZmF1bHQ6bH1sZXQgY1U9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OigpPT5acih3Q2UpLHByb3ZpZGVkSW46InJvb3Qi''@;'; put 'put ''fSl9fXJldHVybiBsfSkoKSx3Q2U9KCgpPT57Y2xhc3MgbHtzaG91bGRQcm9jZXNzVXJsKGEpe3JldHVybiEwfWV4dHJhY3QoYSl7cmV0dXJuIGF9bWVyZ2UoYSxkKXtyZXR1cm4gYX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3Ro''@;'; put 'put ''aXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjb25zdCBkc2U9bmV3ICRyKCIiKSxoc2U9bmV3ICRyKCIiKTtmdW5jdGlvbiBDQ2UobCxjLGEpe2NvbnN0IGQ9bC5nZXQoaHNlKSxoPWwuZ2V0KHpz''@;'; put 'put ''KTtyZXR1cm4gbC5nZXQoTW8pLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57aWYoIWguc3RhcnRWaWV3VHJhbnNpdGlvbnx8ZC5za2lwTmV4dFRyYW5zaXRpb24pcmV0dXJuIGQuc2tpcE5leHRUcmFuc2l0aW9uPSExLG5ldyBQcm9taXNlKFE9PnNldFRpbWVvdXQoUSkpO2xldCBmO2NvbnN0IHY9''@;'; put 'put ''bmV3IFByb21pc2UoUT0+e2Y9UX0pLFM9aC5zdGFydFZpZXdUcmFuc2l0aW9uKCgpPT4oZigpLGZ1bmN0aW9uIFNDZShsKXtyZXR1cm4gbmV3IFByb21pc2UoYz0+e2d2KGMse2luamVjdG9yOmx9KX0pfShsKSkpLHtvblZpZXdUcmFuc2l0aW9uQ3JlYXRlZDpWfT1kO3JldHVybiBWJiZnMChs''@;'; put 'put ''LCgpPT5WKHt0cmFuc2l0aW9uOlMsZnJvbTpjLHRvOmF9KSksdn0pfWxldCBDST0oKCk9PntjbGFzcyBse2dldCBoYXNSZXF1ZXN0ZWROYXZpZ2F0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5hdmlnYXRpb25JZH1jb25zdHJ1Y3Rvcigpe3RoaXMuY3VycmVudE5hdmlnYXRpb249bnVsbCx0aGlz''@;'; put 'put ''LmN1cnJlbnRUcmFuc2l0aW9uPW51bGwsdGhpcy5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb249bnVsbCx0aGlzLmV2ZW50cz1uZXcgdG4sdGhpcy50cmFuc2l0aW9uQWJvcnRTdWJqZWN0PW5ldyB0bix0aGlzLmNvbmZpZ0xvYWRlcj1acihsVSksdGhpcy5lbnZpcm9ubWVudEluamVjdG9yPVpy''@;'; put 'put ''KFhsKSx0aGlzLnVybFNlcmlhbGl6ZXI9WnIodF8pLHRoaXMucm9vdENvbnRleHRzPVpyKFBTKSx0aGlzLmxvY2F0aW9uPVpyKG1kKSx0aGlzLmlucHV0QmluZGluZ0VuYWJsZWQ9bnVsbCE9PVpyKF9JLHtvcHRpb25hbDohMH0pLHRoaXMudGl0bGVTdHJhdGVneT1acihjc2UpLHRoaXMub3B0''@;'; put 'put ''aW9ucz1acihjXyx7b3B0aW9uYWw6ITB9KXx8e30sdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PXRoaXMub3B0aW9ucy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5fHwiZW1wdHlPbmx5Iix0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3k9WnIoY1UpLHRoaXMuY3JlYXRlVmlld1RyYW5z''@;'; put 'put ''aXRpb249WnIoZHNlLHtvcHRpb25hbDohMH0pLHRoaXMubmF2aWdhdGlvbklkPTAsdGhpcy5hZnRlclByZWFjdGl2YXRpb249KCk9Pk9vKHZvaWQgMCksdGhpcy5yb290Q29tcG9uZW50VHlwZT1udWxsLHRoaXMuY29uZmlnTG9hZGVyLm9uTG9hZEVuZExpc3RlbmVyPWg9PnRoaXMuZXZlbnRz''@;'; put 'put ''Lm5leHQobmV3IHV3ZShoKSksdGhpcy5jb25maWdMb2FkZXIub25Mb2FkU3RhcnRMaXN0ZW5lcj1oPT50aGlzLmV2ZW50cy5uZXh0KG5ldyBjd2UoaCkpfWNvbXBsZXRlKCl7dGhpcy50cmFuc2l0aW9ucz8uY29tcGxldGUoKX1oYW5kbGVOYXZpZ2F0aW9uUmVxdWVzdChhKXtjb25zdCBkPSsr''@;'; put 'put ''dGhpcy5uYXZpZ2F0aW9uSWQ7dGhpcy50cmFuc2l0aW9ucz8ubmV4dCh7Li4udGhpcy50cmFuc2l0aW9ucy52YWx1ZSwuLi5hLGlkOmR9KX1zZXR1cE5hdmlnYXRpb25zKGEsZCxoKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9ucz1uZXcgQXIoe2lkOjAsY3VycmVudFVybFRyZWU6ZCxjdXJyZW50''@;'; put 'put ''UmF3VXJsOmQsZXh0cmFjdGVkVXJsOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5leHRyYWN0KGQpLHVybEFmdGVyUmVkaXJlY3RzOnRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5leHRyYWN0KGQpLHJhd1VybDpkLGV4dHJhczp7fSxyZXNvbHZlOm51bGwscmVqZWN0Om51bGwscHJvbWlzZTpQ''@;'; put 'put ''cm9taXNlLnJlc29sdmUoITApLHNvdXJjZTpPUyxyZXN0b3JlZFN0YXRlOm51bGwsY3VycmVudFNuYXBzaG90Omguc25hcHNob3QsdGFyZ2V0U25hcHNob3Q6bnVsbCxjdXJyZW50Um91dGVyU3RhdGU6aCx0YXJnZXRSb3V0ZXJTdGF0ZTpudWxsLGd1YXJkczp7Y2FuQWN0aXZhdGVDaGVja3M6''@;'; put 'put ''W10sY2FuRGVhY3RpdmF0ZUNoZWNrczpbXX0sZ3VhcmRzUmVzdWx0Om51bGx9KSx0aGlzLnRyYW5zaXRpb25zLnBpcGUoWmEoZj0+MCE9PWYuaWQpLGJyKGY9Pih7Li4uZixleHRyYWN0ZWRVcmw6dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5LmV4dHJhY3QoZi5yYXdVcmwpfSkpLEowKGY9Pnts''@;'; put 'put ''ZXQgdj0hMSxTPSExO3JldHVybiBPbyhmKS5waXBlKEowKFY9PntpZih0aGlzLm5hdmlnYXRpb25JZD5mLmlkKXJldHVybiB0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKGYsIiIsX2QuU3VwZXJzZWRlZEJ5TmV3TmF2aWdhdGlvbiksVTI7dGhpcy5jdXJyZW50VHJhbnNpdGlvbj1m''@;'; put 'put ''LHRoaXMuY3VycmVudE5hdmlnYXRpb249e2lkOlYuaWQsaW5pdGlhbFVybDpWLnJhd1VybCxleHRyYWN0ZWRVcmw6Vi5leHRyYWN0ZWRVcmwsdHJpZ2dlcjpWLnNvdXJjZSxleHRyYXM6Vi5leHRyYXMscHJldmlvdXNOYXZpZ2F0aW9uOnRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uP3su''@;'; put 'put ''Li50aGlzLmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbixwcmV2aW91c05hdmlnYXRpb246bnVsbH06bnVsbH07Y29uc3QgUT0hYS5uYXZpZ2F0ZWR8fHRoaXMuaXNVcGRhdGluZ0ludGVybmFsU3RhdGUoKXx8dGhpcy5pc1VwZGF0ZWRCcm93c2VyVXJsKCk7aWYoIVEmJiJyZWxvYWQiIT09KFYu''@;'; put 'put ''ZXh0cmFzLm9uU2FtZVVybE5hdmlnYXRpb24/P2Eub25TYW1lVXJsTmF2aWdhdGlvbikpe2NvbnN0IHBlPSIiO3JldHVybiB0aGlzLmV2ZW50cy5uZXh0KG5ldyBpXyhWLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoVi5yYXdVcmwpLHBlLG1JLklnbm9yZWRTYW1lVXJsTmF2aWdh''@;'; put 'put ''dGlvbikpLFYucmVzb2x2ZShudWxsKSxVMn1pZih0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChWLnJhd1VybCkpcmV0dXJuIE9vKFYpLnBpcGUoSjAocGU9Pntjb25zdCBDZT10aGlzLnRyYW5zaXRpb25zPy5nZXRWYWx1ZSgpO3JldHVybiB0aGlzLmV2ZW50cy5u''@;'; put 'put ''ZXh0KG5ldyBnSShwZS5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHBlLmV4dHJhY3RlZFVybCkscGUuc291cmNlLHBlLnJlc3RvcmVkU3RhdGUpKSxDZSE9PXRoaXMudHJhbnNpdGlvbnM/LmdldFZhbHVlKCk/VTI6UHJvbWlzZS5yZXNvbHZlKHBlKX0pLGZ1bmN0aW9uIGZDZShs''@;'; put 'put ''LGMsYSxkLGgsZil7cmV0dXJuIHMwKHY9PmZ1bmN0aW9uIHNDZShsLGMsYSxkLGgsZix2PSJlbXB0eU9ubHkiKXtyZXR1cm4gbmV3IGxDZShsLGMsYSxkLGgsdixmKS5yZWNvZ25pemUoKX0obCxjLGEsZCx2LmV4dHJhY3RlZFVybCxoLGYpLnBpcGUoYnIoKHtzdGF0ZTpTLHRyZWU6Vn0pPT4o''@;'; put 'put ''ey4uLnYsdGFyZ2V0U25hcHNob3Q6Uyx1cmxBZnRlclJlZGlyZWN0czpWfSkpKSl9KHRoaXMuZW52aXJvbm1lbnRJbmplY3Rvcix0aGlzLmNvbmZpZ0xvYWRlcix0aGlzLnJvb3RDb21wb25lbnRUeXBlLGEuY29uZmlnLHRoaXMudXJsU2VyaWFsaXplcix0aGlzLnBhcmFtc0luaGVyaXRhbmNl''@;'; put 'put ''U3RyYXRlZ3kpLE11KHBlPT57Zi50YXJnZXRTbmFwc2hvdD1wZS50YXJnZXRTbmFwc2hvdCxmLnVybEFmdGVyUmVkaXJlY3RzPXBlLnVybEFmdGVyUmVkaXJlY3RzLHRoaXMuY3VycmVudE5hdmlnYXRpb249ey4uLnRoaXMuY3VycmVudE5hdmlnYXRpb24sZmluYWxVcmw6cGUudXJsQWZ0ZXJS''@;'; put 'put ''ZWRpcmVjdHN9O2NvbnN0IENlPW5ldyBVb2UocGUuaWQsdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShwZS5leHRyYWN0ZWRVcmwpLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUocGUudXJsQWZ0ZXJSZWRpcmVjdHMpLHBlLnRhcmdldFNuYXBzaG90KTt0aGlzLmV2ZW50cy5uZXh0''@;'; put 'put ''KENlKX0pKTtpZihRJiZ0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChWLmN1cnJlbnRSYXdVcmwpKXtjb25zdHtpZDpwZSxleHRyYWN0ZWRVcmw6Q2Usc291cmNlOk9lLHJlc3RvcmVkU3RhdGU6WWUsZXh0cmFzOmV0fT1WLGR0PW5ldyBnSShwZSx0aGlzLnVybFNl''@;'; put 'put ''cmlhbGl6ZXIuc2VyaWFsaXplKENlKSxPZSxZZSk7dGhpcy5ldmVudHMubmV4dChkdCk7Y29uc3QgaHQ9R29lKHRoaXMucm9vdENvbXBvbmVudFR5cGUpLnNuYXBzaG90O3JldHVybiB0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPWY9ey4uLlYsdGFyZ2V0U25hcHNob3Q6aHQsdXJsQWZ0ZXJSZWRp''@;'; put 'put ''cmVjdHM6Q2UsZXh0cmFzOnsuLi5ldCxza2lwTG9jYXRpb25DaGFuZ2U6ITEscmVwbGFjZVVybDohMX19LHRoaXMuY3VycmVudE5hdmlnYXRpb24uZmluYWxVcmw9Q2UsT28oZil9e2NvbnN0IHBlPSIiO3JldHVybiB0aGlzLmV2ZW50cy5uZXh0KG5ldyBpXyhWLmlkLHRoaXMudXJsU2VyaWFs''@;'; put 'put ''aXplci5zZXJpYWxpemUoVi5leHRyYWN0ZWRVcmwpLHBlLG1JLklnbm9yZWRCeVVybEhhbmRsaW5nU3RyYXRlZ3kpKSxWLnJlc29sdmUobnVsbCksVTJ9fSksTXUoVj0+e2NvbnN0IFE9bmV3IG93ZShWLmlkLHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoVi5leHRyYWN0ZWRVcmwpLHRo''@;'; put 'put ''aXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoVi51cmxBZnRlclJlZGlyZWN0cyksVi50YXJnZXRTbmFwc2hvdCk7dGhpcy5ldmVudHMubmV4dChRKX0pLGJyKFY9Pih0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPWY9ey4uLlYsZ3VhcmRzOmt3ZShWLnRhcmdldFNuYXBzaG90LFYuY3VycmVudFNu''@;'; put 'put ''YXBzaG90LHRoaXMucm9vdENvbnRleHRzKX0sZikpLGZ1bmN0aW9uIEh3ZShsLGMpe3JldHVybiBzMChhPT57Y29uc3R7dGFyZ2V0U25hcHNob3Q6ZCxjdXJyZW50U25hcHNob3Q6aCxndWFyZHM6e2NhbkFjdGl2YXRlQ2hlY2tzOmYsY2FuRGVhY3RpdmF0ZUNoZWNrczp2fX09YTtyZXR1cm4g''@;'; put 'put ''MD09PXYubGVuZ3RoJiYwPT09Zi5sZW5ndGg/T28oey4uLmEsZ3VhcmRzUmVzdWx0OiEwfSk6ZnVuY3Rpb24gVndlKGwsYyxhLGQpe3JldHVybiBRYyhsKS5waXBlKHMwKGg9PmZ1bmN0aW9uIFl3ZShsLGMsYSxkLGgpe2NvbnN0IGY9YyYmYy5yb3V0ZUNvbmZpZz9jLnJvdXRlQ29uZmlnLmNh''@;'; put 'put ''bkRlYWN0aXZhdGU6bnVsbDtyZXR1cm4gZiYmMCE9PWYubGVuZ3RoP09vKGYubWFwKFM9Pntjb25zdCBWPU5TKGMpPz9oLFE9c18oUyxWKTtyZXR1cm4gdW0oZnVuY3Rpb24gRndlKGwpe3JldHVybiBsJiZCUyhsLmNhbkRlYWN0aXZhdGUpfShRKT9RLmNhbkRlYWN0aXZhdGUobCxjLGEsZCk6''@;'; put 'put ''ZzAoViwoKT0+UShsLGMsYSxkKSkpLnBpcGUoY20oKSl9KSkucGlwZShhXygpKTpPbyghMCl9KGguY29tcG9uZW50LGgucm91dGUsYSxjLGQpKSxjbShoPT4hMCE9PWgsITApKX0odixkLGgsbCkucGlwZShzMChTPT5TJiZmdW5jdGlvbiBSd2UobCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2Yg''@;'; put 'put ''bH0oUyk/ZnVuY3Rpb24gQndlKGwsYyxhLGQpe3JldHVybiBRYyhjKS5waXBlKFh2KGg9PkZ6KGZ1bmN0aW9uIHp3ZShsLGMpe3JldHVybiBudWxsIT09bCYmYyYmYyhuZXcgZHdlKGwpKSxPbyghMCl9KGgucm91dGUucGFyZW50LGQpLGZ1bmN0aW9uIGp3ZShsLGMpe3JldHVybiBudWxsIT09''@;'; put 'put ''bCYmYyYmYyhuZXcgZndlKGwpKSxPbyghMCl9KGgucm91dGUsZCksZnVuY3Rpb24gWndlKGwsYyxhKXtjb25zdCBkPWNbYy5sZW5ndGgtMV0sZj1jLnNsaWNlKDAsYy5sZW5ndGgtMSkucmV2ZXJzZSgpLm1hcCh2PT5mdW5jdGlvbiBBd2UobCl7Y29uc3QgYz1sLnJvdXRlQ29uZmlnP2wucm91''@;'; put 'put ''dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZDpudWxsO3JldHVybiBjJiYwIT09Yy5sZW5ndGg/e25vZGU6bCxndWFyZHM6Y306bnVsbH0odikpLmZpbHRlcih2PT5udWxsIT09dikubWFwKHY9PkNvZSgoKT0+T28odi5ndWFyZHMubWFwKFY9Pntjb25zdCBRPU5TKHYubm9kZSk/P2EsZGU9c18o''@;'; put 'put ''VixRKTtyZXR1cm4gdW0oZnVuY3Rpb24gUHdlKGwpe3JldHVybiBsJiZCUyhsLmNhbkFjdGl2YXRlQ2hpbGQpfShkZSk/ZGUuY2FuQWN0aXZhdGVDaGlsZChkLGwpOmcwKFEsKCk9PmRlKGQsbCkpKS5waXBlKGNtKCkpfSkpLnBpcGUoYV8oKSkpKTtyZXR1cm4gT28oZikucGlwZShhXygpKX0o''@;'; put 'put ''bCxoLnBhdGgsYSksZnVuY3Rpb24gVXdlKGwsYyxhKXtjb25zdCBkPWMucm91dGVDb25maWc/Yy5yb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZTpudWxsO2lmKCFkfHwwPT09ZC5sZW5ndGgpcmV0dXJuIE9vKCEwKTtjb25zdCBoPWQubWFwKGY9PkNvZSgoKT0+e2NvbnN0IHY9TlMoYyk/P2EsUz1z''@;'; put 'put ''XyhmLHYpO3JldHVybiB1bShmdW5jdGlvbiBPd2UobCl7cmV0dXJuIGwmJkJTKGwuY2FuQWN0aXZhdGUpfShTKT9TLmNhbkFjdGl2YXRlKGMsbCk6ZzAodiwoKT0+UyhjLGwpKSkucGlwZShjbSgpKX0pKTtyZXR1cm4gT28oaCkucGlwZShhXygpKX0obCxoLnJvdXRlLGEpKSksY20oaD0+ITAh''@;'; put 'put ''PT1oLCEwKSl9KGQsZixsLGMpOk9vKFMpKSxicihTPT4oey4uLmEsZ3VhcmRzUmVzdWx0OlN9KSkpfSl9KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcixWPT50aGlzLmV2ZW50cy5uZXh0KFYpKSxNdShWPT57aWYoZi5ndWFyZHNSZXN1bHQ9Vi5ndWFyZHNSZXN1bHQsbl8oVi5ndWFyZHNSZXN1''@;'; put 'put ''bHQpKXRocm93IFFvZSgwLFYuZ3VhcmRzUmVzdWx0KTtjb25zdCBRPW5ldyBzd2UoVi5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKFYuZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKFYudXJsQWZ0ZXJSZWRpcmVjdHMpLFYudGFyZ2V0U25hcHNob3Qs''@;'; put 'put ''ISFWLmd1YXJkc1Jlc3VsdCk7dGhpcy5ldmVudHMubmV4dChRKX0pLFphKFY9PiEhVi5ndWFyZHNSZXN1bHR8fCh0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9uKFYsIiIsX2QuR3VhcmRSZWplY3RlZCksITEpKSxhVShWPT57aWYoVi5ndWFyZHMuY2FuQWN0aXZhdGVDaGVja3MubGVu''@;'; put 'put ''Z3RoKXJldHVybiBPbyhWKS5waXBlKE11KFE9Pntjb25zdCBkZT1uZXcgYXdlKFEuaWQsdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShRLmV4dHJhY3RlZFVybCksdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShRLnVybEFmdGVyUmVkaXJlY3RzKSxRLnRhcmdldFNuYXBzaG90KTt0''@;'; put 'put ''aGlzLmV2ZW50cy5uZXh0KGRlKX0pLEowKFE9PntsZXQgZGU9ITE7cmV0dXJuIE9vKFEpLnBpcGUoZnVuY3Rpb24gcENlKGwsYyl7cmV0dXJuIHMwKGE9Pntjb25zdHt0YXJnZXRTbmFwc2hvdDpkLGd1YXJkczp7Y2FuQWN0aXZhdGVDaGVja3M6aH19PWE7aWYoIWgubGVuZ3RoKXJldHVybiBP''@;'; put 'put ''byhhKTtjb25zdCBmPW5ldyBTZXQoaC5tYXAoVj0+Vi5yb3V0ZSkpLHY9bmV3IFNldDtmb3IoY29uc3QgViBvZiBmKWlmKCF2LmhhcyhWKSlmb3IoY29uc3QgUSBvZiBsc2UoVikpdi5hZGQoUSk7bGV0IFM9MDtyZXR1cm4gUWModikucGlwZShYdihWPT5mLmhhcyhWKT9mdW5jdGlvbiBnQ2Uo''@;'; put 'put ''bCxjLGEsZCl7Y29uc3QgaD1sLnJvdXRlQ29uZmlnLGY9bC5fcmVzb2x2ZTtyZXR1cm4gdm9pZCAwIT09aD8udGl0bGUmJiFLb2UoaCkmJihmW0FTXT1oLnRpdGxlKSxmdW5jdGlvbiBtQ2UobCxjLGEsZCl7Y29uc3QgaD1CeihsKTtpZigwPT09aC5sZW5ndGgpcmV0dXJuIE9vKHt9KTtjb25z''@;'; put 'put ''dCBmPXt9O3JldHVybiBRYyhoKS5waXBlKHMwKHY9PmZ1bmN0aW9uIHZDZShsLGMsYSxkKXtjb25zdCBoPU5TKGMpPz9kLGY9c18obCxoKTtyZXR1cm4gdW0oZi5yZXNvbHZlP2YucmVzb2x2ZShjLGEpOmcwKGgsKCk9PmYoYyxhKSkpfShsW3ZdLGMsYSxkKS5waXBlKGNtKCksTXUoUz0+e2Zb''@;'; put 'put ''dl09U30pKSksVnooMSksZnVuY3Rpb24gRHllKGwpe3JldHVybiBicigoKT0+bCl9KGYpLEp2KHY9PmlzZSh2KT9VMjphSSh2KSkpfShmLGwsYyxkKS5waXBlKGJyKHY9PihsLl9yZXNvbHZlZERhdGE9dixsLmRhdGE9S3oobCxsLnBhcmVudCxhKS5yZXNvbHZlLG51bGwpKSl9KFYsZCxsLGMp''@;'; put 'put ''OihWLmRhdGE9S3ooVixWLnBhcmVudCxsKS5yZXNvbHZlLE9vKHZvaWQgMCkpKSxNdSgoKT0+UysrKSxWeigxKSxzMChWPT5TPT09di5zaXplP09vKGEpOlUyKSl9KX0odGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciksTXUoe25leHQ6KCk9''@;'; put 'put ''PmRlPSEwLGNvbXBsZXRlOigpPT57ZGV8fHRoaXMuY2FuY2VsTmF2aWdhdGlvblRyYW5zaXRpb24oUSwiIixfZC5Ob0RhdGFGcm9tUmVzb2x2ZXIpfX0pKX0pLE11KFE9Pntjb25zdCBkZT1uZXcgbHdlKFEuaWQsdGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShRLmV4dHJhY3RlZFVybCks''@;'; put 'put ''dGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShRLnVybEFmdGVyUmVkaXJlY3RzKSxRLnRhcmdldFNuYXBzaG90KTt0aGlzLmV2ZW50cy5uZXh0KGRlKX0pKX0pLGFVKFY9Pntjb25zdCBRPWRlPT57Y29uc3QgcGU9W107ZGUucm91dGVDb25maWc/LmxvYWRDb21wb25lbnQmJiFkZS5yb3V0''@;'; put 'put ''ZUNvbmZpZy5fbG9hZGVkQ29tcG9uZW50JiZwZS5wdXNoKHRoaXMuY29uZmlnTG9hZGVyLmxvYWRDb21wb25lbnQoZGUucm91dGVDb25maWcpLnBpcGUoTXUoQ2U9PntkZS5jb21wb25lbnQ9Q2V9KSxicigoKT0+e30pKSk7Zm9yKGNvbnN0IENlIG9mIGRlLmNoaWxkcmVuKXBlLnB1c2goLi4u''@;'; put 'put ''UShDZSkpO3JldHVybiBwZX07cmV0dXJuIFRTKFEoVi50YXJnZXRTbmFwc2hvdC5yb290KSkucGlwZShsSShudWxsKSxaMigxKSl9KSxhVSgoKT0+dGhpcy5hZnRlclByZWFjdGl2YXRpb24oKSksSjAoKCk9Pntjb25zdHtjdXJyZW50U25hcHNob3Q6Vix0YXJnZXRTbmFwc2hvdDpRfT1mLGRl''@;'; put 'put ''PXRoaXMuY3JlYXRlVmlld1RyYW5zaXRpb24/Lih0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsVi5yb290LFEucm9vdCk7cmV0dXJuIGRlP1FjKGRlKS5waXBlKGJyKCgpPT5mKSk6T28oZil9KSxicihWPT57Y29uc3QgUT1mdW5jdGlvbiB2d2UobCxjLGEpe2NvbnN0IGQ9RlMobCxjLl9yb290''@;'; put 'put ''LGE/YS5fcm9vdDp2b2lkIDApO3JldHVybiBuZXcgV29lKGQsYyl9KGEucm91dGVSZXVzZVN0cmF0ZWd5LFYudGFyZ2V0U25hcHNob3QsVi5jdXJyZW50Um91dGVyU3RhdGUpO3JldHVybiB0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPWY9ey4uLlYsdGFyZ2V0Um91dGVyU3RhdGU6UX0sdGhpcy5j''@;'; put 'put ''dXJyZW50TmF2aWdhdGlvbi50YXJnZXRSb3V0ZXJTdGF0ZT1RLGZ9KSxNdSgoKT0+e3RoaXMuZXZlbnRzLm5leHQobmV3IFd6KX0pLCgobCxjLGEsZCk9PmJyKGg9PihuZXcgVHdlKGMsaC50YXJnZXRSb3V0ZXJTdGF0ZSxoLmN1cnJlbnRSb3V0ZXJTdGF0ZSxhLGQpLmFjdGl2YXRlKGwpLGgp''@;'; put 'put ''KSkodGhpcy5yb290Q29udGV4dHMsYS5yb3V0ZVJldXNlU3RyYXRlZ3ksVj0+dGhpcy5ldmVudHMubmV4dChWKSx0aGlzLmlucHV0QmluZGluZ0VuYWJsZWQpLFoyKDEpLE11KHtuZXh0OlY9Pnt2PSEwLHRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uPXRoaXMuY3VycmVudE5hdmlnYXRp''@;'; put 'put ''b24sdGhpcy5ldmVudHMubmV4dChuZXcgYjMoVi5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKFYuZXh0cmFjdGVkVXJsKSx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKFYudXJsQWZ0ZXJSZWRpcmVjdHMpKSksdGhpcy50aXRsZVN0cmF0ZWd5Py51cGRhdGVUaXRsZShWLnRh''@;'; put 'put ''cmdldFJvdXRlclN0YXRlLnNuYXBzaG90KSxWLnJlc29sdmUoITApfSxjb21wbGV0ZTooKT0+e3Y9ITB9fSksVDAodGhpcy50cmFuc2l0aW9uQWJvcnRTdWJqZWN0LnBpcGUoTXUoVj0+e3Rocm93IFZ9KSkpLGtTKCgpPT57IXYmJiFTJiZ0aGlzLmNhbmNlbE5hdmlnYXRpb25UcmFuc2l0aW9u''@;'; put 'put ''KGYsIiIsX2QuU3VwZXJzZWRlZEJ5TmV3TmF2aWdhdGlvbiksdGhpcy5jdXJyZW50VHJhbnNpdGlvbj8uaWQ9PT1mLmlkJiYodGhpcy5jdXJyZW50TmF2aWdhdGlvbj1udWxsLHRoaXMuY3VycmVudFRyYW5zaXRpb249bnVsbCl9KSxKdihWPT57aWYoUz0hMCx0c2UoVikpdGhpcy5ldmVudHMu''@;'; put 'put ''bmV4dChuZXcgcl8oZi5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGYuZXh0cmFjdGVkVXJsKSxWLm1lc3NhZ2UsVi5jYW5jZWxsYXRpb25Db2RlKSksZnVuY3Rpb24geXdlKGwpe3JldHVybiB0c2UobCkmJm5fKGwudXJsKX0oVik/dGhpcy5ldmVudHMubmV4dChuZXcgR3ooVi51''@;'; put 'put ''cmwpKTpmLnJlc29sdmUoITEpO2Vsc2V7dGhpcy5ldmVudHMubmV4dChuZXcgdkkoZi5pZCx0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKGYuZXh0cmFjdGVkVXJsKSxWLGYudGFyZ2V0U25hcHNob3Q/P3ZvaWQgMCkpO3RyeXtmLnJlc29sdmUoYS5lcnJvckhhbmRsZXIoVikpfWNhdGNo''@;'; put 'put ''KFEpe3RoaXMub3B0aW9ucy5yZXNvbHZlTmF2aWdhdGlvblByb21pc2VPbkVycm9yP2YucmVzb2x2ZSghMSk6Zi5yZWplY3QoUSl9fXJldHVybiBVMn0pKX0pKX1jYW5jZWxOYXZpZ2F0aW9uVHJhbnNpdGlvbihhLGQsaCl7Y29uc3QgZj1uZXcgcl8oYS5pZCx0aGlzLnVybFNlcmlhbGl6ZXIu''@;'; put 'put ''c2VyaWFsaXplKGEuZXh0cmFjdGVkVXJsKSxkLGgpO3RoaXMuZXZlbnRzLm5leHQoZiksYS5yZXNvbHZlKCExKX1pc1VwZGF0aW5nSW50ZXJuYWxTdGF0ZSgpe3JldHVybiB0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPy5leHRyYWN0ZWRVcmwudG9TdHJpbmcoKSE9PXRoaXMuY3VycmVudFRyYW5z''@;'; put 'put ''aXRpb24/LmN1cnJlbnRVcmxUcmVlLnRvU3RyaW5nKCl9aXNVcGRhdGVkQnJvd3NlclVybCgpe3JldHVybiB0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UodGhpcy5sb2NhdGlvbi5wYXRoKCEwKSkpLnRvU3RyaW5nKCkhPT10aGlzLmN1''@;'; put 'put ''cnJlbnRUcmFuc2l0aW9uPy5leHRyYWN0ZWRVcmwudG9TdHJpbmcoKSYmIXRoaXMuY3VycmVudFRyYW5zaXRpb24/LmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2V9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXBy''@;'; put 'put ''b3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gTUNlKGwpe3JldHVybiBsIT09T1N9bGV0IHhDZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3''@;'; put 'put ''KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6KCk9PlpyKFRDZSkscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO2NsYXNzIEVDZXtzaG91bGREZXRhY2goYyl7cmV0dXJuITF9c3RvcmUoYyxhKXt9c2hvdWxkQXR0YWNoKGMpe3JldHVy''@;'; put 'put ''biExfXJldHJpZXZlKGMpe3JldHVybiBudWxsfXNob3VsZFJldXNlUm91dGUoYyxhKXtyZXR1cm4gYy5yb3V0ZUNvbmZpZz09PWEucm91dGVDb25maWd9fWxldCBUQ2U9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEVDZXtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9KCgpPT57bGV0IGE7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKGgpe3JldHVybihhfHwoYT1MYShsKSkpKGh8fGwpfX0pKCl9c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxmc2U9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OigpPT5acihrQ2UpLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxrQ2U9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGZzZXtjb25zdHJ1Y3Rv''@;'; put 'put ''cigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sb2NhdGlvbj1acihtZCksdGhpcy51cmxTZXJpYWxpemVyPVpyKHRfKSx0aGlzLm9wdGlvbnM9WnIoY18se29wdGlvbmFsOiEwfSl8fHt9LHRoaXMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbj10aGlzLm9wdGlvbnMuY2FuY2VsZWRO''@;'; put 'put ''YXZpZ2F0aW9uUmVzb2x1dGlvbnx8InJlcGxhY2UiLHRoaXMudXJsSGFuZGxpbmdTdHJhdGVneT1acihjVSksdGhpcy51cmxVcGRhdGVTdHJhdGVneT10aGlzLm9wdGlvbnMudXJsVXBkYXRlU3RyYXRlZ3l8fCJkZWZlcnJlZCIsdGhpcy5jdXJyZW50VXJsVHJlZT1uZXcgZV8sdGhpcy5yYXdV''@;'; put 'put ''cmxUcmVlPXRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5jdXJyZW50UGFnZUlkPTAsdGhpcy5sYXN0U3VjY2Vzc2Z1bElkPS0xLHRoaXMucm91dGVyU3RhdGU9R29lKG51bGwpLHRoaXMuc3RhdGVNZW1lbnRvPXRoaXMuY3JlYXRlU3RhdGVNZW1lbnRvKCl9Z2V0Q3VycmVudFVybFRyZWUoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5jdXJyZW50VXJsVHJlZX1nZXRSYXdVcmxUcmVlKCl7cmV0dXJuIHRoaXMucmF3VXJsVHJlZX1yZXN0b3JlZFN0YXRlKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uZ2V0U3RhdGUoKX1nZXQgYnJvd3NlclBhZ2VJZCgpe3JldHVybiJjb21wdXRlZCIhPT10aGlzLmNhbmNlbGVk''@;'; put 'put ''TmF2aWdhdGlvblJlc29sdXRpb24/dGhpcy5jdXJyZW50UGFnZUlkOnRoaXMucmVzdG9yZWRTdGF0ZSgpPy5cdTAyNzVyb3V0ZXJQYWdlSWQ/P3RoaXMuY3VycmVudFBhZ2VJZH1nZXRSb3V0ZXJTdGF0ZSgpe3JldHVybiB0aGlzLnJvdXRlclN0YXRlfWNyZWF0ZVN0YXRlTWVtZW50bygpe3Jl''@;'; put 'put ''dHVybntyYXdVcmxUcmVlOnRoaXMucmF3VXJsVHJlZSxjdXJyZW50VXJsVHJlZTp0aGlzLmN1cnJlbnRVcmxUcmVlLHJvdXRlclN0YXRlOnRoaXMucm91dGVyU3RhdGV9fXJlZ2lzdGVyTm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdlTGlzdGVuZXIoYSl7cmV0dXJuIHRoaXMubG9jYXRpb24u''@;'; put 'put ''c3Vic2NyaWJlKGQ9PnsicG9wc3RhdGUiPT09ZC50eXBlJiZhKGQudXJsLGQuc3RhdGUpfSl9aGFuZGxlUm91dGVyRXZlbnQoYSxkKXtpZihhIGluc3RhbmNlb2YgZ0kpdGhpcy5zdGF0ZU1lbWVudG89dGhpcy5jcmVhdGVTdGF0ZU1lbWVudG8oKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBpXyl0''@;'; put 'put ''aGlzLnJhd1VybFRyZWU9ZC5pbml0aWFsVXJsO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIFVvZSl7aWYoImVhZ2VyIj09PXRoaXMudXJsVXBkYXRlU3RyYXRlZ3kmJiFkLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2Upe2NvbnN0IGg9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKGQuZmlu''@;'; put 'put ''YWxVcmwsZC5pbml0aWFsVXJsKTt0aGlzLnNldEJyb3dzZXJVcmwoaCxkKX19ZWxzZSBhIGluc3RhbmNlb2YgV3o/KHRoaXMuY3VycmVudFVybFRyZWU9ZC5maW5hbFVybCx0aGlzLnJhd1VybFRyZWU9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKGQuZmluYWxVcmwsZC5pbml0aWFs''@;'; put 'put ''VXJsKSx0aGlzLnJvdXRlclN0YXRlPWQudGFyZ2V0Um91dGVyU3RhdGUsImRlZmVycmVkIj09PXRoaXMudXJsVXBkYXRlU3RyYXRlZ3kmJihkLmV4dHJhcy5za2lwTG9jYXRpb25DaGFuZ2V8fHRoaXMuc2V0QnJvd3NlclVybCh0aGlzLnJhd1VybFRyZWUsZCkpKTphIGluc3RhbmNlb2Ygcl8m''@;'; put 'put ''JihhLmNvZGU9PT1fZC5HdWFyZFJlamVjdGVkfHxhLmNvZGU9PT1fZC5Ob0RhdGFGcm9tUmVzb2x2ZXIpP3RoaXMucmVzdG9yZUhpc3RvcnkoZCk6YSBpbnN0YW5jZW9mIHZJP3RoaXMucmVzdG9yZUhpc3RvcnkoZCwhMCk6YSBpbnN0YW5jZW9mIGIzJiYodGhpcy5sYXN0U3VjY2Vzc2Z1bElk''@;'; put 'put ''PWEuaWQsdGhpcy5jdXJyZW50UGFnZUlkPXRoaXMuYnJvd3NlclBhZ2VJZCl9c2V0QnJvd3NlclVybChhLGQpe2NvbnN0IGg9dGhpcy51cmxTZXJpYWxpemVyLnNlcmlhbGl6ZShhKTtpZih0aGlzLmxvY2F0aW9uLmlzQ3VycmVudFBhdGhFcXVhbFRvKGgpfHxkLmV4dHJhcy5yZXBsYWNlVXJs''@;'; put 'put ''KXtjb25zdCB2PXsuLi5kLmV4dHJhcy5zdGF0ZSwuLi50aGlzLmdlbmVyYXRlTmdSb3V0ZXJTdGF0ZShkLmlkLHRoaXMuYnJvd3NlclBhZ2VJZCl9O3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGgsIiIsdil9ZWxzZXtjb25zdCBmPXsuLi5kLmV4dHJhcy5zdGF0ZSwuLi50aGlzLmdlbmVy''@;'; put 'put ''YXRlTmdSb3V0ZXJTdGF0ZShkLmlkLHRoaXMuYnJvd3NlclBhZ2VJZCsxKX07dGhpcy5sb2NhdGlvbi5nbyhoLCIiLGYpfX1yZXN0b3JlSGlzdG9yeShhLGQ9ITEpe2lmKCJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24pe2NvbnN0IGY9dGhpcy5jdXJyZW50''@;'; put 'put ''UGFnZUlkLXRoaXMuYnJvd3NlclBhZ2VJZDswIT09Zj90aGlzLmxvY2F0aW9uLmhpc3RvcnlHbyhmKTp0aGlzLmN1cnJlbnRVcmxUcmVlPT09YS5maW5hbFVybCYmMD09PWYmJih0aGlzLnJlc2V0U3RhdGUoYSksdGhpcy5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKSl9ZWxzZSJyZXBsYWNl''@;'; put 'put ''Ij09PXRoaXMuY2FuY2VsZWROYXZpZ2F0aW9uUmVzb2x1dGlvbiYmKGQmJnRoaXMucmVzZXRTdGF0ZShhKSx0aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpKX1yZXNldFN0YXRlKGEpe3RoaXMucm91dGVyU3RhdGU9dGhpcy5zdGF0ZU1lbWVudG8ucm91dGVyU3RhdGUsdGhpcy5jdXJy''@;'; put 'put ''ZW50VXJsVHJlZT10aGlzLnN0YXRlTWVtZW50by5jdXJyZW50VXJsVHJlZSx0aGlzLnJhd1VybFRyZWU9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKHRoaXMuY3VycmVudFVybFRyZWUsYS5maW5hbFVybD8/dGhpcy5yYXdVcmxUcmVlKX1yZXNldFVybFRvQ3VycmVudFVybFRyZWUo''@;'; put 'put ''KXt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHRoaXMucmF3VXJsVHJlZSksIiIsdGhpcy5nZW5lcmF0ZU5nUm91dGVyU3RhdGUodGhpcy5sYXN0U3VjY2Vzc2Z1bElkLHRoaXMuY3VycmVudFBhZ2VJZCkpfWdlbmVyYXRlTmdSb3V0ZXJT''@;'; put 'put ''dGF0ZShhLGQpe3JldHVybiJjb21wdXRlZCI9PT10aGlzLmNhbmNlbGVkTmF2aWdhdGlvblJlc29sdXRpb24/e25hdmlnYXRpb25JZDphLFx1MDI3NXJvdXRlclBhZ2VJZDpkfTp7bmF2aWdhdGlvbklkOmF9fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz0oKCk9PntsZXQgYTtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oaCl7cmV0dXJuKGF8fChhPUxhKGwpKSkoaHx8bCl9fSkoKX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO3ZhciBqUz1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLkNPTVBMRVRF''@;'; put 'put ''PTBdPSJDT01QTEVURSIsbFtsLkZBSUxFRD0xXT0iRkFJTEVEIixsW2wuUkVESVJFQ1RJTkc9Ml09IlJFRElSRUNUSU5HIixsfShqU3x8e30pO2Z1bmN0aW9uIHBzZShsLGMpe2wuZXZlbnRzLnBpcGUoWmEoYT0+YSBpbnN0YW5jZW9mIGIzfHxhIGluc3RhbmNlb2Ygcl98fGEgaW5zdGFuY2Vv''@;'; put 'put ''ZiB2SXx8YSBpbnN0YW5jZW9mIGlfKSxicihhPT5hIGluc3RhbmNlb2YgYjN8fGEgaW5zdGFuY2VvZiBpXz9qUy5DT01QTEVURTphIGluc3RhbmNlb2Ygcl8mJihhLmNvZGU9PT1fZC5SZWRpcmVjdHx8YS5jb2RlPT09X2QuU3VwZXJzZWRlZEJ5TmV3TmF2aWdhdGlvbik/alMuUkVESVJFQ1RJ''@;'; put 'put ''Tkc6alMuRkFJTEVEKSxaYShhPT5hIT09alMuUkVESVJFQ1RJTkcpLFoyKDEpKS5zdWJzY3JpYmUoKCk9PntjKCl9KX1mdW5jdGlvbiBBQ2UobCl7dGhyb3cgbH1jb25zdCBEQ2U9e3BhdGhzOiJleGFjdCIsZnJhZ21lbnQ6Imlnbm9yZWQiLG1hdHJpeFBhcmFtczoiaWdub3JlZCIscXVlcnlQ''@;'; put 'put ''YXJhbXM6ImV4YWN0In0sSUNlPXtwYXRoczoic3Vic2V0IixmcmFnbWVudDoiaWdub3JlZCIsbWF0cml4UGFyYW1zOiJpZ25vcmVkIixxdWVyeVBhcmFtczoic3Vic2V0In07bGV0IEpzPSgoKT0+e2NsYXNzIGx7Z2V0IGN1cnJlbnRVcmxUcmVlKCl7cmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2Vy''@;'; put 'put ''LmdldEN1cnJlbnRVcmxUcmVlKCl9Z2V0IHJhd1VybFRyZWUoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuZ2V0UmF3VXJsVHJlZSgpfWdldCBldmVudHMoKXtyZXR1cm4gdGhpcy5fZXZlbnRzfWdldCByb3V0ZXJTdGF0ZSgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5nZXRSb3V0ZXJT''@;'; put 'put ''dGF0ZSgpfWNvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlZD0hMSx0aGlzLmlzTmdab25lRW5hYmxlZD0hMSx0aGlzLmNvbnNvbGU9WnIoWXRlKSx0aGlzLnN0YXRlTWFuYWdlcj1acihmc2UpLHRoaXMub3B0aW9ucz1acihjXyx7b3B0aW9uYWw6ITB9KXx8e30sdGhpcy5wZW5kaW5nVGFza3M9''@;'; put 'put ''WnIoTzIpLHRoaXMudXJsVXBkYXRlU3RyYXRlZ3k9dGhpcy5vcHRpb25zLnVybFVwZGF0ZVN0cmF0ZWd5fHwiZGVmZXJyZWQiLHRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zPVpyKENJKSx0aGlzLnVybFNlcmlhbGl6ZXI9WnIodF8pLHRoaXMubG9jYXRpb249WnIobWQpLHRoaXMudXJsSGFu''@;'; put 'put ''ZGxpbmdTdHJhdGVneT1acihjVSksdGhpcy5fZXZlbnRzPW5ldyB0bix0aGlzLmVycm9ySGFuZGxlcj10aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyfHxBQ2UsdGhpcy5uYXZpZ2F0ZWQ9ITEsdGhpcy5yb3V0ZVJldXNlU3RyYXRlZ3k9WnIoeENlKSx0aGlzLm9uU2FtZVVybE5hdmlnYXRpb249''@;'; put 'put ''dGhpcy5vcHRpb25zLm9uU2FtZVVybE5hdmlnYXRpb258fCJpZ25vcmUiLHRoaXMuY29uZmlnPVpyKHVfLHtvcHRpb25hbDohMH0pPy5mbGF0KCk/P1tdLHRoaXMuY29tcG9uZW50SW5wdXRCaW5kaW5nRW5hYmxlZD0hIVpyKF9JLHtvcHRpb25hbDohMH0pLHRoaXMuZXZlbnRzU3Vic2NyaXB0''@;'; put 'put ''aW9uPW5ldyBLdCx0aGlzLmlzTmdab25lRW5hYmxlZD1acihNbylpbnN0YW5jZW9mIE1vJiZNby5pc0luQW5ndWxhclpvbmUoKSx0aGlzLnJlc2V0Q29uZmlnKHRoaXMuY29uZmlnKSx0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5zZXR1cE5hdmlnYXRpb25zKHRoaXMsdGhpcy5jdXJyZW50''@;'; put 'put ''VXJsVHJlZSx0aGlzLnJvdXRlclN0YXRlKS5zdWJzY3JpYmUoe2Vycm9yOmE9Pnt0aGlzLmNvbnNvbGUud2FybihhKX19KSx0aGlzLnN1YnNjcmliZVRvTmF2aWdhdGlvbkV2ZW50cygpfXN1YnNjcmliZVRvTmF2aWdhdGlvbkV2ZW50cygpe2NvbnN0IGE9dGhpcy5uYXZpZ2F0aW9uVHJhbnNp''@;'; put 'put ''dGlvbnMuZXZlbnRzLnN1YnNjcmliZShkPT57dHJ5e2NvbnN0IGg9dGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY3VycmVudFRyYW5zaXRpb24sZj10aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5jdXJyZW50TmF2aWdhdGlvbjtpZihudWxsIT09aCYmbnVsbCE9PWYpaWYodGhpcy5zdGF0''@;'; put 'put ''ZU1hbmFnZXIuaGFuZGxlUm91dGVyRXZlbnQoZCxmKSxkIGluc3RhbmNlb2Ygcl8mJmQuY29kZSE9PV9kLlJlZGlyZWN0JiZkLmNvZGUhPT1fZC5TdXBlcnNlZGVkQnlOZXdOYXZpZ2F0aW9uKXRoaXMubmF2aWdhdGVkPSEwO2Vsc2UgaWYoZCBpbnN0YW5jZW9mIGIzKXRoaXMubmF2aWdhdGVk''@;'; put 'put ''PSEwO2Vsc2UgaWYoZCBpbnN0YW5jZW9mIEd6KXtjb25zdCB2PXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShkLnVybCxoLmN1cnJlbnRSYXdVcmwpLFM9e2luZm86aC5leHRyYXMuaW5mbyxza2lwTG9jYXRpb25DaGFuZ2U6aC5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlLHJlcGxh''@;'; put 'put ''Y2VVcmw6ImVhZ2VyIj09PXRoaXMudXJsVXBkYXRlU3RyYXRlZ3l8fE1DZShoLnNvdXJjZSl9O3RoaXMuc2NoZWR1bGVOYXZpZ2F0aW9uKHYsT1MsbnVsbCxTLHtyZXNvbHZlOmgucmVzb2x2ZSxyZWplY3Q6aC5yZWplY3QscHJvbWlzZTpoLnByb21pc2V9KX0oZnVuY3Rpb24gTENlKGwpe3Jl''@;'; put 'put ''dHVybiEobCBpbnN0YW5jZW9mIFd6fHxsIGluc3RhbmNlb2YgR3opfSkoZCkmJnRoaXMuX2V2ZW50cy5uZXh0KGQpfWNhdGNoKGgpe3RoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLnRyYW5zaXRpb25BYm9ydFN1YmplY3QubmV4dChoKX19KTt0aGlzLmV2ZW50c1N1YnNjcmlwdGlvbi5hZGQo''@;'; put 'put ''YSl9cmVzZXRSb290Q29tcG9uZW50VHlwZShhKXt0aGlzLnJvdXRlclN0YXRlLnJvb3QuY29tcG9uZW50PWEsdGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMucm9vdENvbXBvbmVudFR5cGU9YX1pbml0aWFsTmF2aWdhdGlvbigpe3RoaXMuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCks''@;'; put 'put ''dGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuaGFzUmVxdWVzdGVkTmF2aWdhdGlvbnx8dGhpcy5uYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyKHRoaXMubG9jYXRpb24ucGF0aCghMCksT1MsdGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZWRTdGF0ZSgpKX1zZXRVcExvY2F0aW9uQ2hhbmdlTGlz''@;'; put 'put ''dGVuZXIoKXt0aGlzLm5vblJvdXRlckN1cnJlbnRFbnRyeUNoYW5nZVN1YnNjcmlwdGlvbj8/PXRoaXMuc3RhdGVNYW5hZ2VyLnJlZ2lzdGVyTm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdlTGlzdGVuZXIoKGEsZCk9PntzZXRUaW1lb3V0KCgpPT57dGhpcy5uYXZpZ2F0ZVRvU3luY1dpdGhC''@;'; put 'put ''cm93c2VyKGEsInBvcHN0YXRlIixkKX0sMCl9KX1uYXZpZ2F0ZVRvU3luY1dpdGhCcm93c2VyKGEsZCxoKXtjb25zdCBmPXtyZXBsYWNlVXJsOiEwfSx2PWg/Lm5hdmlnYXRpb25JZD9oOm51bGw7aWYoaCl7Y29uc3QgVj17Li4uaH07ZGVsZXRlIFYubmF2aWdhdGlvbklkLGRlbGV0ZSBWLlx1''@;'; put 'put ''MDI3NXJvdXRlclBhZ2VJZCwwIT09T2JqZWN0LmtleXMoVikubGVuZ3RoJiYoZi5zdGF0ZT1WKX1jb25zdCBTPXRoaXMucGFyc2VVcmwoYSk7dGhpcy5zY2hlZHVsZU5hdmlnYXRpb24oUyxkLHYsZil9Z2V0IHVybCgpe3JldHVybiB0aGlzLnNlcmlhbGl6ZVVybCh0aGlzLmN1cnJlbnRVcmxU''@;'; put 'put ''cmVlKX1nZXRDdXJyZW50TmF2aWdhdGlvbigpe3JldHVybiB0aGlzLm5hdmlnYXRpb25UcmFuc2l0aW9ucy5jdXJyZW50TmF2aWdhdGlvbn1nZXQgbGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uKCl7cmV0dXJuIHRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLmxhc3RTdWNjZXNzZnVsTmF2aWdh''@;'; put 'put ''dGlvbn1yZXNldENvbmZpZyhhKXt0aGlzLmNvbmZpZz1hLm1hcChuVSksdGhpcy5uYXZpZ2F0ZWQ9ITF9bmdPbkRlc3Ryb3koKXt0aGlzLmRpc3Bvc2UoKX1kaXNwb3NlKCl7dGhpcy5uYXZpZ2F0aW9uVHJhbnNpdGlvbnMuY29tcGxldGUoKSx0aGlzLm5vblJvdXRlckN1cnJlbnRFbnRyeUNo''@;'; put 'put ''YW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMubm9uUm91dGVyQ3VycmVudEVudHJ5Q2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5ub25Sb3V0ZXJDdXJyZW50RW50cnlDaGFuZ2VTdWJzY3JpcHRpb249dm9pZCAwKSx0aGlzLmRpc3Bvc2VkPSEwLHRoaXMuZXZlbnRzU3Vic2Ny''@;'; put 'put ''aXB0aW9uLnVuc3Vic2NyaWJlKCl9Y3JlYXRlVXJsVHJlZShhLGQ9e30pe2NvbnN0e3JlbGF0aXZlVG86aCxxdWVyeVBhcmFtczpmLGZyYWdtZW50OnYscXVlcnlQYXJhbXNIYW5kbGluZzpTLHByZXNlcnZlRnJhZ21lbnQ6Vn09ZCxRPVY/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDp2''@;'; put 'put ''O2xldCBwZSxkZT1udWxsO3N3aXRjaChTKXtjYXNlIm1lcmdlIjpkZT17Li4udGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtcywuLi5mfTticmVhaztjYXNlInByZXNlcnZlIjpkZT10aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zO2JyZWFrO2RlZmF1bHQ6ZGU9Znx8bnVsbH1u''@;'; put 'put ''dWxsIT09ZGUmJihkZT10aGlzLnJlbW92ZUVtcHR5UHJvcHMoZGUpKTt0cnl7cGU9Rm9lKGg/aC5zbmFwc2hvdDp0aGlzLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3QpfWNhdGNoeygic3RyaW5nIiE9dHlwZW9mIGFbMF18fCFhWzBdLnN0YXJ0c1dpdGgoIi8iKSkmJihhPVtdKSxwZT10aGlz''@;'; put 'put ''LmN1cnJlbnRVcmxUcmVlLnJvb3R9cmV0dXJuIE5vZShwZSxhLGRlLFE/P251bGwpfW5hdmlnYXRlQnlVcmwoYSxkPXtza2lwTG9jYXRpb25DaGFuZ2U6ITF9KXtjb25zdCBoPW5fKGEpP2E6dGhpcy5wYXJzZVVybChhKSxmPXRoaXMudXJsSGFuZGxpbmdTdHJhdGVneS5tZXJnZShoLHRoaXMu''@;'; put 'put ''cmF3VXJsVHJlZSk7cmV0dXJuIHRoaXMuc2NoZWR1bGVOYXZpZ2F0aW9uKGYsT1MsbnVsbCxkKX1uYXZpZ2F0ZShhLGQ9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pe3JldHVybiBmdW5jdGlvbiBSQ2UobCl7Zm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspaWYobnVsbD09bFtjXSl0aHJvdyBu''@;'; put 'put ''ZXcgVW4oNDAwOCwhMSl9KGEpLHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmNyZWF0ZVVybFRyZWUoYSxkKSxkKX1zZXJpYWxpemVVcmwoYSl7cmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUoYSl9cGFyc2VVcmwoYSl7dHJ5e3JldHVybiB0aGlzLnVybFNlcmlhbGl6ZXIucGFy''@;'; put 'put ''c2UoYSl9Y2F0Y2h7cmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5wYXJzZSgiLyIpfX1pc0FjdGl2ZShhLGQpe2xldCBoO2lmKGg9ITA9PT1kP3suLi5EQ2V9OiExPT09ZD97Li4uSUNlfTpkLG5fKGEpKXJldHVybiBUb2UodGhpcy5jdXJyZW50VXJsVHJlZSxhLGgpO2NvbnN0IGY9dGhpcy5w''@;'; put 'put ''YXJzZVVybChhKTtyZXR1cm4gVG9lKHRoaXMuY3VycmVudFVybFRyZWUsZixoKX1yZW1vdmVFbXB0eVByb3BzKGEpe3JldHVybiBPYmplY3QuZW50cmllcyhhKS5yZWR1Y2UoKGQsW2gsZl0pPT4obnVsbCE9ZiYmKGRbaF09ZiksZCkse30pfXNjaGVkdWxlTmF2aWdhdGlvbihhLGQsaCxmLHYp''@;'; put 'put ''e2lmKHRoaXMuZGlzcG9zZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7bGV0IFMsVixRO3Y/KFM9di5yZXNvbHZlLFY9di5yZWplY3QsUT12LnByb21pc2UpOlE9bmV3IFByb21pc2UoKHBlLENlKT0+e1M9cGUsVj1DZX0pO2NvbnN0IGRlPXRoaXMucGVuZGluZ1Rhc2tzLmFkZCgpO3Jl''@;'; put 'put ''dHVybiBwc2UodGhpcywoKT0+e3F1ZXVlTWljcm90YXNrKCgpPT50aGlzLnBlbmRpbmdUYXNrcy5yZW1vdmUoZGUpKX0pLHRoaXMubmF2aWdhdGlvblRyYW5zaXRpb25zLmhhbmRsZU5hdmlnYXRpb25SZXF1ZXN0KHtzb3VyY2U6ZCxyZXN0b3JlZFN0YXRlOmgsY3VycmVudFVybFRyZWU6dGhp''@;'; put 'put ''cy5jdXJyZW50VXJsVHJlZSxjdXJyZW50UmF3VXJsOnRoaXMuY3VycmVudFVybFRyZWUscmF3VXJsOmEsZXh0cmFzOmYscmVzb2x2ZTpTLHJlamVjdDpWLHByb21pc2U6USxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5y''@;'; put 'put ''b3V0ZXJTdGF0ZX0pLFEuY2F0Y2gocGU9PlByb21pc2UucmVqZWN0KHBlKSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJy''@;'; put 'put ''b290In0pfX1yZXR1cm4gbH0pKCksazA9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyl7dGhpcy5yb3V0ZXI9YSx0aGlzLnJvdXRlPWQsdGhpcy50YWJJbmRleEF0dHJpYnV0ZT1oLHRoaXMucmVuZGVyZXI9Zix0aGlzLmVsPXYsdGhpcy5sb2NhdGlvblN0cmF0ZWd5PVMs''@;'; put 'put ''dGhpcy5ocmVmPW51bGwsdGhpcy5jb21tYW5kcz1udWxsLHRoaXMub25DaGFuZ2VzPW5ldyB0bix0aGlzLnByZXNlcnZlRnJhZ21lbnQ9ITEsdGhpcy5za2lwTG9jYXRpb25DaGFuZ2U9ITEsdGhpcy5yZXBsYWNlVXJsPSExO2NvbnN0IFY9di5uYXRpdmVFbGVtZW50LnRhZ05hbWU/LnRvTG93''@;'; put 'put ''ZXJDYXNlKCk7dGhpcy5pc0FuY2hvckVsZW1lbnQ9ImEiPT09Vnx8ImFyZWEiPT09Vix0aGlzLmlzQW5jaG9yRWxlbWVudD90aGlzLnN1YnNjcmlwdGlvbj1hLmV2ZW50cy5zdWJzY3JpYmUoUT0+e1EgaW5zdGFuY2VvZiBiMyYmdGhpcy51cGRhdGVIcmVmKCl9KTp0aGlzLnNldFRhYkluZGV4''@;'; put 'put ''SWZOb3RPbk5hdGl2ZUVsKCIwIil9c2V0VGFiSW5kZXhJZk5vdE9uTmF0aXZlRWwoYSl7bnVsbCE9dGhpcy50YWJJbmRleEF0dHJpYnV0ZXx8dGhpcy5pc0FuY2hvckVsZW1lbnR8fHRoaXMuYXBwbHlBdHRyaWJ1dGVWYWx1ZSgidGFiaW5kZXgiLGEpfW5nT25DaGFuZ2VzKGEpe3RoaXMuaXNB''@;'; put 'put ''bmNob3JFbGVtZW50JiZ0aGlzLnVwZGF0ZUhyZWYoKSx0aGlzLm9uQ2hhbmdlcy5uZXh0KHRoaXMpfXNldCByb3V0ZXJMaW5rKGEpe251bGwhPWE/KHRoaXMuY29tbWFuZHM9QXJyYXkuaXNBcnJheShhKT9hOlthXSx0aGlzLnNldFRhYkluZGV4SWZOb3RPbk5hdGl2ZUVsKCIwIikpOih0aGlz''@;'; put 'put ''LmNvbW1hbmRzPW51bGwsdGhpcy5zZXRUYWJJbmRleElmTm90T25OYXRpdmVFbChudWxsKSl9b25DbGljayhhLGQsaCxmLHYpe2NvbnN0IFM9dGhpcy51cmxUcmVlO3JldHVybiEhKG51bGw9PT1TfHx0aGlzLmlzQW5jaG9yRWxlbWVudCYmKDAhPT1hfHxkfHxofHxmfHx2fHwic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIHRoaXMudGFyZ2V0JiYiX3NlbGYiIT10aGlzLnRhcmdldCkpfHwodGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChTLHtza2lwTG9jYXRpb25DaGFuZ2U6dGhpcy5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDp0aGlzLnJlcGxhY2VVcmwsc3RhdGU6dGhpcy5zdGF0ZSxpbmZv''@;'; put 'put ''OnRoaXMuaW5mb30pLCF0aGlzLmlzQW5jaG9yRWxlbWVudCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKX11cGRhdGVIcmVmKCl7Y29uc3QgYT10aGlzLnVybFRyZWU7dGhpcy5ocmVmPW51bGwhPT1hJiZ0aGlzLmxvY2F0aW9uU3RyYXRlZ3k/dGhpcy5s''@;'; put 'put ''b2NhdGlvblN0cmF0ZWd5Py5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKGEpKTpudWxsO2NvbnN0IGQ9bnVsbD09PXRoaXMuaHJlZj9udWxsOmZ1bmN0aW9uIFJrKGwsYyxhKXtyZXR1cm4gZnVuY3Rpb24gT0gobCxjKXtyZXR1cm4ic3JjIj09PWMmJigiZW1i''@;'; put 'put ''ZWQiPT09bHx8ImZyYW1lIj09PWx8fCJpZnJhbWUiPT09bHx8Im1lZGlhIj09PWx8fCJzY3JpcHQiPT09bCl8fCJocmVmIj09PWMmJigiYmFzZSI9PT1sfHwibGluayI9PT1sKT9JazpSd30oYyxhKShsKX0odGhpcy5ocmVmLHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJD''@;'; put 'put ''YXNlKCksImhyZWYiKTt0aGlzLmFwcGx5QXR0cmlidXRlVmFsdWUoImhyZWYiLGQpfWFwcGx5QXR0cmlidXRlVmFsdWUoYSxkKXtjb25zdCBoPXRoaXMucmVuZGVyZXIsZj10aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7bnVsbCE9PWQ/aC5zZXRBdHRyaWJ1dGUoZixhLGQpOmgucmVtb3ZlQXR0cmli''@;'; put 'put ''dXRlKGYsYSl9Z2V0IHVybFRyZWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuY29tbWFuZHM/bnVsbDp0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHRoaXMuY29tbWFuZHMse3JlbGF0aXZlVG86dm9pZCAwIT09dGhpcy5yZWxhdGl2ZVRvP3RoaXMucmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5''@;'; put 'put ''UGFyYW1zOnRoaXMucXVlcnlQYXJhbXMsZnJhZ21lbnQ6dGhpcy5mcmFnbWVudCxxdWVyeVBhcmFtc0hhbmRsaW5nOnRoaXMucXVlcnlQYXJhbXNIYW5kbGluZyxwcmVzZXJ2ZUZyYWdtZW50OnRoaXMucHJlc2VydmVGcmFnbWVudH0pfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihk''@;'; put 'put ''KXtyZXR1cm4gbmV3KGR8fGwpKEplKEpzKSxKZShPYyksRDIoInRhYmluZGV4IiksSmUoZHMpLEplKE5pKSxKZShXNikpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwicm91dGVyTGluayIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5j''@;'; put 'put ''dGlvbihkLGgpezEmZCYmSXQoImNsaWNrIixmdW5jdGlvbih2KXtyZXR1cm4gaC5vbkNsaWNrKHYuYnV0dG9uLHYuY3RybEtleSx2LnNoaWZ0S2V5LHYuYWx0S2V5LHYubWV0YUtleSl9KSwyJmQmJnVyKCJ0YXJnZXQiLGgudGFyZ2V0KX0saW5wdXRzOnt0YXJnZXQ6InRhcmdldCIscXVlcnlQ''@;'; put 'put ''YXJhbXM6InF1ZXJ5UGFyYW1zIixmcmFnbWVudDoiZnJhZ21lbnQiLHF1ZXJ5UGFyYW1zSGFuZGxpbmc6InF1ZXJ5UGFyYW1zSGFuZGxpbmciLHN0YXRlOiJzdGF0ZSIsaW5mbzoiaW5mbyIscmVsYXRpdmVUbzoicmVsYXRpdmVUbyIscHJlc2VydmVGcmFnbWVudDpbam4uSGFzRGVjb3JhdG9y''@;'; put 'put ''SW5wdXRUcmFuc2Zvcm0sInByZXNlcnZlRnJhZ21lbnQiLCJwcmVzZXJ2ZUZyYWdtZW50Iix4MF0sc2tpcExvY2F0aW9uQ2hhbmdlOltqbi5IYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSwic2tpcExvY2F0aW9uQ2hhbmdlIiwic2tpcExvY2F0aW9uQ2hhbmdlIix4MF0scmVwbGFjZVVybDpb''@;'; put 'put ''am4uSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm0sInJlcGxhY2VVcmwiLCJyZXBsYWNlVXJsIix4MF0scm91dGVyTGluazoicm91dGVyTGluayJ9LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W1FhLEphXX0pfX1yZXR1cm4gbH0pKCkselM9KCgpPT57Y2xhc3MgbHtnZXQgaXNBY3RpdmUoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5faXNBY3RpdmV9Y29uc3RydWN0b3IoYSxkLGgsZix2KXt0aGlzLnJvdXRlcj1hLHRoaXMuZWxlbWVudD1kLHRoaXMucmVuZGVyZXI9aCx0aGlzLmNkcj1mLHRoaXMubGluaz12LHRoaXMuY2xhc3Nlcz1bXSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLnJvdXRlckxpbmtBY3Rp''@;'; put 'put ''dmVPcHRpb25zPXtleGFjdDohMX0sdGhpcy5pc0FjdGl2ZUNoYW5nZT1uZXcgRHIsdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb249YS5ldmVudHMuc3Vic2NyaWJlKFM9PntTIGluc3RhbmNlb2YgYjMmJnRoaXMudXBkYXRlKCl9KX1uZ0FmdGVyQ29udGVudEluaXQoKXtPbyh0aGlzLmxp''@;'; put 'put ''bmtzLmNoYW5nZXMsT28obnVsbCkpLnBpcGUoS3YoKSkuc3Vic2NyaWJlKGE9Pnt0aGlzLnVwZGF0ZSgpLHRoaXMuc3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpfSl9c3Vic2NyaWJlVG9FYWNoTGlua09uQ2hhbmdlcygpe3RoaXMubGlua0lucHV0Q2hhbmdlc1N1YnNjcmlwdGlvbj8u''@;'; put 'put ''dW5zdWJzY3JpYmUoKTtjb25zdCBhPVsuLi50aGlzLmxpbmtzLnRvQXJyYXkoKSx0aGlzLmxpbmtdLmZpbHRlcihkPT4hIWQpLm1hcChkPT5kLm9uQ2hhbmdlcyk7dGhpcy5saW5rSW5wdXRDaGFuZ2VzU3Vic2NyaXB0aW9uPVFjKGEpLnBpcGUoS3YoKSkuc3Vic2NyaWJlKGQ9Pnt0aGlzLl9p''@;'; put 'put ''c0FjdGl2ZSE9PXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKShkKSYmdGhpcy51cGRhdGUoKX0pfXNldCByb3V0ZXJMaW5rQWN0aXZlKGEpe2NvbnN0IGQ9QXJyYXkuaXNBcnJheShhKT9hOmEuc3BsaXQoIiAiKTt0aGlzLmNsYXNzZXM9ZC5maWx0ZXIoaD0+ISFoKX1uZ09uQ2hhbmdl''@;'; put 'put ''cyhhKXt0aGlzLnVwZGF0ZSgpfW5nT25EZXN0cm95KCl7dGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmxpbmtJbnB1dENoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCl9dXBkYXRlKCl7IXRoaXMubGlua3N8fCF0aGlzLnJvdXRlci5uYXZp''@;'; put 'put ''Z2F0ZWR8fHF1ZXVlTWljcm90YXNrKCgpPT57Y29uc3QgYT10aGlzLmhhc0FjdGl2ZUxpbmtzKCk7dGhpcy5jbGFzc2VzLmZvckVhY2goZD0+e2E/dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxkKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRo''@;'; put 'put ''aXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LGQpfSksYSYmdm9pZCAwIT09dGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmU/dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsImFyaWEtY3VycmVudCIsdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUu''@;'; put 'put ''dG9TdHJpbmcoKSk6dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsImFyaWEtY3VycmVudCIpLHRoaXMuX2lzQWN0aXZlIT09YSYmKHRoaXMuX2lzQWN0aXZlPWEsdGhpcy5jZHIubWFya0ZvckNoZWNrKCksdGhpcy5pc0FjdGl2ZUNoYW5n''@;'; put 'put ''ZS5lbWl0KGEpKX0pfWlzTGlua0FjdGl2ZShhKXtjb25zdCBkPWZ1bmN0aW9uIE9DZShsKXtyZXR1cm4hIWwucGF0aHN9KHRoaXMucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMpP3RoaXMucm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6dGhpcy5yb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucy5leGFjdHx8''@;'; put 'put ''ITE7cmV0dXJuIGg9Pntjb25zdCBmPWgudXJsVHJlZTtyZXR1cm4hIWYmJmEuaXNBY3RpdmUoZixkKX19aGFzQWN0aXZlTGlua3MoKXtjb25zdCBhPXRoaXMuaXNMaW5rQWN0aXZlKHRoaXMucm91dGVyKTtyZXR1cm4gdGhpcy5saW5rJiZhKHRoaXMubGluayl8fHRoaXMubGlua3Muc29tZShh''@;'; put 'put ''KX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShKcyksSmUoTmkpLEplKGRzKSxKZShjYSksSmUoazAsOCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwicm91dGVyTGlua0FjdGl2ZSIsIiJdXSxj''@;'; put 'put ''b250ZW50UXVlcmllczpmdW5jdGlvbihkLGgsZil7aWYoMSZkJiZ0cyhmLGswLDUpLDImZCl7bGV0IHY7bGkodj1jaSgpKSYmKGgubGlua3M9dil9fSxpbnB1dHM6e3JvdXRlckxpbmtBY3RpdmVPcHRpb25zOiJyb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyIsYXJpYUN1cnJlbnRXaGVuQWN0aXZl''@;'; put 'put ''OiJhcmlhQ3VycmVudFdoZW5BY3RpdmUiLHJvdXRlckxpbmtBY3RpdmU6InJvdXRlckxpbmtBY3RpdmUifSxvdXRwdXRzOntpc0FjdGl2ZUNoYW5nZToiaXNBY3RpdmVDaGFuZ2UifSxleHBvcnRBczpbInJvdXRlckxpbmtBY3RpdmUiXSxzdGFuZGFsb25lOiEwLGZlYXR1cmVzOltKYV19KX19''@;'; put 'put ''cmV0dXJuIGx9KSgpO2NsYXNzIGdzZXt9bGV0IFBDZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5yb3V0ZXI9YSx0aGlzLmluamVjdG9yPWgsdGhpcy5wcmVsb2FkaW5nU3RyYXRlZ3k9Zix0aGlzLmxvYWRlcj12fXNldFVwUHJlbG9hZGluZygpe3RoaXMuc3Vi''@;'; put 'put ''c2NyaXB0aW9uPXRoaXMucm91dGVyLmV2ZW50cy5waXBlKFphKGE9PmEgaW5zdGFuY2VvZiBiMyksWHYoKCk9PnRoaXMucHJlbG9hZCgpKSkuc3Vic2NyaWJlKCgpPT57fSl9cHJlbG9hZCgpe3JldHVybiB0aGlzLnByb2Nlc3NSb3V0ZXModGhpcy5pbmplY3Rvcix0aGlzLnJvdXRlci5jb25m''@;'; put 'put ''aWcpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9cHJvY2Vzc1JvdXRlcyhhLGQpe2NvbnN0IGg9W107Zm9yKGNvbnN0IGYgb2YgZCl7Zi5wcm92aWRlcnMmJiFmLl9pbmplY3RvciYmKGYuX2luamVjdG9yPUpwKGYucHJv''@;'; put 'put ''dmlkZXJzLGEsYFJvdXRlOiAke2YucGF0aH1gKSk7Y29uc3Qgdj1mLl9pbmplY3Rvcj8/YSxTPWYuX2xvYWRlZEluamVjdG9yPz92OyhmLmxvYWRDaGlsZHJlbiYmIWYuX2xvYWRlZFJvdXRlcyYmdm9pZCAwPT09Zi5jYW5Mb2FkfHxmLmxvYWRDb21wb25lbnQmJiFmLl9sb2FkZWRDb21wb25l''@;'; put 'put ''bnQpJiZoLnB1c2godGhpcy5wcmVsb2FkQ29uZmlnKHYsZikpLChmLmNoaWxkcmVufHxmLl9sb2FkZWRSb3V0ZXMpJiZoLnB1c2godGhpcy5wcm9jZXNzUm91dGVzKFMsZi5jaGlsZHJlbj8/Zi5fbG9hZGVkUm91dGVzKSl9cmV0dXJuIFFjKGgpLnBpcGUoS3YoKSl9cHJlbG9hZENvbmZpZyhh''@;'; put 'put ''LGQpe3JldHVybiB0aGlzLnByZWxvYWRpbmdTdHJhdGVneS5wcmVsb2FkKGQsKCk9PntsZXQgaDtoPWQubG9hZENoaWxkcmVuJiZ2b2lkIDA9PT1kLmNhbkxvYWQ/dGhpcy5sb2FkZXIubG9hZENoaWxkcmVuKGEsZCk6T28obnVsbCk7Y29uc3QgZj1oLnBpcGUoczAodj0+bnVsbD09PXY/T28o''@;'; put 'put ''dm9pZCAwKTooZC5fbG9hZGVkUm91dGVzPXYucm91dGVzLGQuX2xvYWRlZEluamVjdG9yPXYuaW5qZWN0b3IsdGhpcy5wcm9jZXNzUm91dGVzKHYuaW5qZWN0b3I/P2Esdi5yb3V0ZXMpKSkpO3JldHVybiBkLmxvYWRDb21wb25lbnQmJiFkLl9sb2FkZWRDb21wb25lbnQ/UWMoW2YsdGhpcy5s''@;'; put 'put ''b2FkZXIubG9hZENvbXBvbmVudChkKV0pLnBpcGUoS3YoKSk6Zn0pfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKEpzKSxjcih0bmUpLGNyKFhsKSxjcihnc2UpLGNyKGxVKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmws''@;'; put 'put ''ZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgdVU9bmV3ICRyKCIiKTtsZXQgbXNlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2PXt9KXt0aGlzLnVybFNlcmlhbGl6ZXI9YSx0aGlzLnRyYW5zaXRpb25zPWQsdGhp''@;'; put 'put ''cy52aWV3cG9ydFNjcm9sbGVyPWgsdGhpcy56b25lPWYsdGhpcy5vcHRpb25zPXYsdGhpcy5sYXN0SWQ9MCx0aGlzLmxhc3RTb3VyY2U9ImltcGVyYXRpdmUiLHRoaXMucmVzdG9yZWRJZD0wLHRoaXMuc3RvcmU9e30sdGhpcy5lbnZpcm9ubWVudEluamVjdG9yPVpyKFhsKSx2LnNjcm9sbFBv''@;'; put 'put ''c2l0aW9uUmVzdG9yYXRpb258fD0iZGlzYWJsZWQiLHYuYW5jaG9yU2Nyb2xsaW5nfHw9ImRpc2FibGVkIn1pbml0KCl7ImRpc2FibGVkIiE9PXRoaXMub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2V0SGlzdG9yeVNjcm9sbFJlc3Rv''@;'; put 'put ''cmF0aW9uKCJtYW51YWwiKSx0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj10aGlzLmNyZWF0ZVNjcm9sbEV2ZW50cygpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uPXRoaXMuY29uc3VtZVNjcm9sbEV2ZW50cygpfWNyZWF0ZVNjcm9sbEV2ZW50cygpe3JldHVybiB0aGlzLnRy''@;'; put 'put ''YW5zaXRpb25zLmV2ZW50cy5zdWJzY3JpYmUoYT0+e2EgaW5zdGFuY2VvZiBnST8odGhpcy5zdG9yZVt0aGlzLmxhc3RJZF09dGhpcy52aWV3cG9ydFNjcm9sbGVyLmdldFNjcm9sbFBvc2l0aW9uKCksdGhpcy5sYXN0U291cmNlPWEubmF2aWdhdGlvblRyaWdnZXIsdGhpcy5yZXN0b3JlZElk''@;'; put 'put ''PWEucmVzdG9yZWRTdGF0ZT9hLnJlc3RvcmVkU3RhdGUubmF2aWdhdGlvbklkOjApOmEgaW5zdGFuY2VvZiBiMz8odGhpcy5sYXN0SWQ9YS5pZCx0aGlzLnNjaGVkdWxlU2Nyb2xsRXZlbnQoYSx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoYS51cmxBZnRlclJlZGlyZWN0cykuZnJhZ21lbnQp''@;'; put 'put ''KTphIGluc3RhbmNlb2YgaV8mJmEuY29kZT09PW1JLklnbm9yZWRTYW1lVXJsTmF2aWdhdGlvbiYmKHRoaXMubGFzdFNvdXJjZT12b2lkIDAsdGhpcy5yZXN0b3JlZElkPTAsdGhpcy5zY2hlZHVsZVNjcm9sbEV2ZW50KGEsdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKGEudXJsKS5mcmFnbWVu''@;'; put 'put ''dCkpfSl9Y29uc3VtZVNjcm9sbEV2ZW50cygpe3JldHVybiB0aGlzLnRyYW5zaXRpb25zLmV2ZW50cy5zdWJzY3JpYmUoYT0+e2EgaW5zdGFuY2VvZiBab2UmJihhLnBvc2l0aW9uPyJ0b3AiPT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24/dGhpcy52aWV3cG9ydFNj''@;'; put 'put ''cm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0pOiJlbmFibGVkIj09PXRoaXMub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihhLnBvc2l0aW9uKTphLmFuY2hvciYmImVuYWJsZWQiPT09dGhpcy5vcHRp''@;'; put 'put ''b25zLmFuY2hvclNjcm9sbGluZz90aGlzLnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9BbmNob3IoYS5hbmNob3IpOiJkaXNhYmxlZCIhPT10aGlzLm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbiYmdGhpcy52aWV3cG9ydFNjcm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oWzAsMF0p''@;'; put 'put ''KX0pfXNjaGVkdWxlU2Nyb2xsRXZlbnQoYSxkKXt2YXIgaD10aGlzO3RoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcihZKGZ1bmN0aW9uKigpe3lpZWxkIG5ldyBQcm9taXNlKGY9PntzZXRUaW1lb3V0KCgpPT57ZigpfSksZ3YoKCk9PntmKCl9LHtpbmplY3RvcjpoLmVudmlyb25tZW50SW5q''@;'; put 'put ''ZWN0b3J9KX0pLGguem9uZS5ydW4oKCk9PntoLnRyYW5zaXRpb25zLmV2ZW50cy5uZXh0KG5ldyBab2UoYSwicG9wc3RhdGUiPT09aC5sYXN0U291cmNlP2guc3RvcmVbaC5yZXN0b3JlZElkXTpudWxsLGQpKX0pfSkpfW5nT25EZXN0cm95KCl7dGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRp''@;'; put 'put ''b24/LnVuc3Vic2NyaWJlKCksdGhpcy5zY3JvbGxFdmVudHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpeyFmdW5jdGlvbiBLaygpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCIpfSgpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92''@;'; put 'put ''PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIHczKGwsYyl7cmV0dXJue1x1MDI3NWtpbmQ6bCxcdTAyNzVwcm92aWRlcnM6Y319ZnVuY3Rpb24gX3NlKCl7Y29uc3QgbD1acihNYSk7cmV0dXJuIGM9Pntjb25zdCBhPWwuZ2V0KHQ0KTtp''@;'; put 'put ''ZihjIT09YS5jb21wb25lbnRzWzBdKXJldHVybjtjb25zdCBkPWwuZ2V0KEpzKSxoPWwuZ2V0KGJzZSk7MT09PWwuZ2V0KGRVKSYmZC5pbml0aWFsTmF2aWdhdGlvbigpLGwuZ2V0KHlzZSxudWxsLERpLk9wdGlvbmFsKT8uc2V0VXBQcmVsb2FkaW5nKCksbC5nZXQodVUsbnVsbCxEaS5PcHRp''@;'; put 'put ''b25hbCk/LmluaXQoKSxkLnJlc2V0Um9vdENvbXBvbmVudFR5cGUoYS5jb21wb25lbnRUeXBlc1swXSksaC5jbG9zZWR8fChoLm5leHQoKSxoLmNvbXBsZXRlKCksaC51bnN1YnNjcmliZSgpKX19Y29uc3QgYnNlPW5ldyAkcigiIix7ZmFjdG9yeTooKT0+bmV3IHRufSksZFU9bmV3ICRyKCIi''@;'; put 'put ''LHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT4xfSkseXNlPW5ldyAkcigiIik7ZnVuY3Rpb24gVkNlKGwpe3JldHVybiB3MygwLFt7cHJvdmlkZTp5c2UsdXNlRXhpc3Rpbmc6UENlfSx7cHJvdmlkZTpnc2UsdXNlRXhpc3Rpbmc6bH1dKX1mdW5jdGlvbiBqQ2UobCl7cmV0dXJuIHcz''@;'; put 'put ''KDksW3twcm92aWRlOmRzZSx1c2VWYWx1ZTpDQ2V9LHtwcm92aWRlOmhzZSx1c2VWYWx1ZTp7c2tpcE5leHRUcmFuc2l0aW9uOiEhbD8uc2tpcEluaXRpYWxUcmFuc2l0aW9uLC4uLmx9fV0pfWNvbnN0IHdzZT1uZXcgJHIoIlJPVVRFUl9GT1JST09UX0dVQVJEIiksekNlPVttZCx7cHJvdmlk''@;'; put 'put ''ZTp0Xyx1c2VDbGFzczpqen0sSnMsUFMse3Byb3ZpZGU6T2MsdXNlRmFjdG9yeTpmdW5jdGlvbiB2c2UobCl7cmV0dXJuIGwucm91dGVyU3RhdGUucm9vdH0sZGVwczpbSnNdfSxsVSxbXV07bGV0IENjPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7fXN0YXRpYyBmb3JSb290KGEsZCl7''@;'; put 'put ''cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJzOlt6Q2UsW10se3Byb3ZpZGU6dV8sbXVsdGk6ITAsdXNlVmFsdWU6YX0se3Byb3ZpZGU6d3NlLHVzZUZhY3Rvcnk6V0NlLGRlcHM6W1tKcyxuZXcgWTAsbmV3IHkxXV19LHtwcm92aWRlOmNfLHVzZVZhbHVlOmR8fHt9fSxkPy51c2VIYXNoP3tw''@;'; put 'put ''cm92aWRlOlc2LHVzZUNsYXNzOmo3ZX06e3Byb3ZpZGU6VzYsdXNlQ2xhc3M6V25lfSx7cHJvdmlkZTp1VSx1c2VGYWN0b3J5OigpPT57Y29uc3QgbD1acihudmUpLGM9WnIoTW8pLGE9WnIoY18pLGQ9WnIoQ0kpLGg9WnIodF8pO3JldHVybiBhLnNjcm9sbE9mZnNldCYmbC5zZXRPZmZzZXQo''@;'; put 'put ''YS5zY3JvbGxPZmZzZXQpLG5ldyBtc2UoaCxkLGwsYyxhKX19LGQ/LnByZWxvYWRpbmdTdHJhdGVneT9WQ2UoZC5wcmVsb2FkaW5nU3RyYXRlZ3kpLlx1MDI3NXByb3ZpZGVyczpbXSxkPy5pbml0aWFsTmF2aWdhdGlvbj9HQ2UoZCk6W10sZD8uYmluZFRvQ29tcG9uZW50SW5wdXRzP3czKDgs''@;'; put 'put ''W1hvZSx7cHJvdmlkZTpfSSx1c2VFeGlzdGluZzpYb2V9XSkuXHUwMjc1cHJvdmlkZXJzOltdLGQ/LmVuYWJsZVZpZXdUcmFuc2l0aW9ucz9qQ2UoKS5cdTAyNzVwcm92aWRlcnM6W10sW3twcm92aWRlOkNzZSx1c2VGYWN0b3J5Ol9zZX0se3Byb3ZpZGU6d2osbXVsdGk6ITAsdXNlRXhpc3Rp''@;'; put 'put ''bmc6Q3NlfV1dfX1zdGF0aWMgZm9yQ2hpbGQoYSl7cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJzOlt7cHJvdmlkZTp1XyxtdWx0aTohMCx1c2VWYWx1ZTphfV19fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKHdzZSw4KSl9fXN0YXRpY3t0''@;'; put 'put ''aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHt9KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIFdDZShsKXtyZXR1cm4iZ3VhcmRlZCJ9ZnVuY3Rpb24gR0NlKGwpe3JldHVyblsiZGlzYWJsZWQiPT09bC5pbml0aWFsTmF2aWdhdGlvbj93MygzLFt7''@;'; put 'put ''cHJvdmlkZTpiaixtdWx0aTohMCx1c2VGYWN0b3J5OigpPT57Y29uc3QgYz1acihKcyk7cmV0dXJuKCk9PntjLnNldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lcigpfX19LHtwcm92aWRlOmRVLHVzZVZhbHVlOjJ9XSkuXHUwMjc1cHJvdmlkZXJzOltdLCJlbmFibGVkQmxvY2tpbmciPT09bC5p''@;'; put 'put ''bml0aWFsTmF2aWdhdGlvbj93MygyLFt7cHJvdmlkZTpkVSx1c2VWYWx1ZTowfSx7cHJvdmlkZTpiaixtdWx0aTohMCxkZXBzOltNYV0sdXNlRmFjdG9yeTpjPT57Y29uc3QgYT1jLmdldChWN2UsUHJvbWlzZS5yZXNvbHZlKCkpO3JldHVybigpPT5hLnRoZW4oKCk9Pm5ldyBQcm9taXNlKGQ9''@;'; put 'put ''Pntjb25zdCBoPWMuZ2V0KEpzKSxmPWMuZ2V0KGJzZSk7cHNlKGgsKCk9PntkKCEwKX0pLGMuZ2V0KENJKS5hZnRlclByZWFjdGl2YXRpb249KCk9PihkKCEwKSxmLmNsb3NlZD9Pbyh2b2lkIDApOmYpLGguaW5pdGlhbE5hdmlnYXRpb24oKX0pKX19XSkuXHUwMjc1cHJvdmlkZXJzOltdXX1j''@;'; put 'put ''b25zdCBDc2U9bmV3ICRyKCIiKTt2YXIgZF89ZnVuY3Rpb24obCl7cmV0dXJuIGwubGlnaHQ9ImxpZ2h0IixsLmRhcms9ImRhcmsiLGx9KGRffHx7fSksU3NlPVIoNTUxODgpLHFDZT1SKDc4NzU1KTtjb25zdCBoVT17dXNlcnNfYWxsb3dlZDoxLHZpZXdlcl9yb3dzX2FsbG93ZWQ6MTUsZWRp''@;'; put 'put ''dG9yX3Jvd3NfYWxsb3dlZDoxNSxzdGFnZV9yb3dzX2FsbG93ZWQ6MS8wLGhpc3Rvcnlfcm93c19hbGxvd2VkOjE1LHN1Ym1pdF9yb3dzX2xpbWl0OjUsdmlld2JveF9saW1pdDoxLGxpbmVhZ2VfZGFpbHlfbGltaXQ6Myx0YWJsZXNfaW5fbGlicmFyeV9saW1pdDozNSx2aWV3Ym94OiEwLGZp''@;'; put 'put ''bGVVcGxvYWQ6ITAsZWRpdFJlY29yZDohMCxhZGRSZWNvcmQ6ITB9O3ZhciBiZD1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLnZpZXdlcl9yb3dzX2FsbG93ZWQ9MF09InZpZXdlcl9yb3dzX2FsbG93ZWQiLGxbbC5lZGl0b3Jfcm93c19hbGxvd2VkPTFdPSJlZGl0b3Jfcm93c19hbGxvd2VkIixs''@;'; put 'put ''W2wuc3RhZ2Vfcm93c19hbGxvd2VkPTJdPSJzdGFnZV9yb3dzX2FsbG93ZWQiLGxbbC5oaXN0b3J5X3Jvd3NfYWxsb3dlZD0zXT0iaGlzdG9yeV9yb3dzX2FsbG93ZWQiLGxbbC5zdWJtaXRfcm93c19saW1pdD00XT0ic3VibWl0X3Jvd3NfbGltaXQiLGxbbC50YWJsZXNfaW5fbGlicmFyeV9s''@;'; put 'put ''aW1pdD01XT0idGFibGVzX2luX2xpYnJhcnlfbGltaXQiLGxbbC52aWV3Ym94PTZdPSJ2aWV3Ym94IixsW2wudmlld2JveF9saW1pdD03XT0idmlld2JveF9saW1pdCIsbFtsLmxpbmVhZ2VfZGFpbHlfbGltaXQ9OF09ImxpbmVhZ2VfZGFpbHlfbGltaXQiLGxbbC5maWxlVXBsb2FkPTldPSJm''@;'; put 'put ''aWxlVXBsb2FkIixsW2wuZWRpdFJlY29yZD0xMF09ImVkaXRSZWNvcmQiLGxbbC5hZGRSZWNvcmQ9MTFdPSJhZGRSZWNvcmQiLGx9KGJkfHx7fSkseWQ9UigzNzM0KSxNc2U9Ui5uKHlkKSxCdT1SKDEzMjQ3KTtsZXQgdDg9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe31zZXREY0FkYXB0''@;'; put 'put ''ZXJTZXR0aW5ncyhhKXt0aGlzLmRjQWRhcHRlclNldHRpbmdzPWF9Z2V0RGNBZGFwdGVyU2V0dGluZ3MoKXtyZXR1cm4gdGhpcy5kY0FkYXB0ZXJTZXR0aW5nc31zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJv''@;'; put 'put ''dj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxmVT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy51c2VyQ2hhbmdlPW5ldyB0bn1zZXQgdXNlcihhKXt0aGlzLl91c2VyPWEsdGhpcy51c2VyQ2hhbmdlLm5l''@;'; put 'put ''eHQoYSl9Z2V0IHVzZXIoKXtyZXR1cm4gdGhpcy5fdXNlcn1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBsfSkoKTtjbGFzcyBT''@;'; put 'put ''SXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdFNldHRpbmdzPXtwZXJzaXN0U2VsZWN0ZWRUaGVtZTohMCxzZWxlY3RlZFRoZW1lOmRfLmxpZ2h0fSx0aGlzLnNldHRpbmdzPW5ldyBBcih0aGlzLmRlZmF1bHRTZXR0aW5ncyksdGhpcy5yZXN0b3JlQXBwU2V0dGluZ3MoKX1yZXN0b3JlQXBw''@;'; put 'put ''U2V0dGluZ3MoKXt0cnl7Y29uc3QgYz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYXBwLXNldHRpbmdzIik7aWYoYyl7Y29uc3QgYT1KU09OLnBhcnNlKGMpO3RoaXMuc2V0QXBwU2V0dGluZ3MoYSl9ZWxzZSBjb25zb2xlLmluZm8oIk5vIGFwcCBzZXR0aW5ncyBzdG9yZWQgaW4gdGhlIGxvY2Fs''@;'; put 'put ''U3RvcmFnZSwgd2Ugd2lsbCBzZXQgdG8gZGVmYXVsdCB2YWx1ZXMuIil9Y2F0Y2goYyl7Y29uc29sZS53YXJuKCJFcnJvciByZXN0b3Jpbmcgc2V0dGluZ3MgZnJvbSBsb2NhbCBzdG9yZ2FlLiIsYyl9fXN0b3JlQXBwU2V0dGluZ3MoKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYXBwLXNldHRp''@;'; put 'put ''bmdzIixKU09OLnN0cmluZ2lmeSh0aGlzLnNldHRpbmdzLnZhbHVlKSl9c2V0QXBwU2V0dGluZ3MoYyl7dGhpcy5zZXR0aW5ncy5uZXh0KHsuLi50aGlzLnNldHRpbmdzLnZhbHVlLC4uLmN9KSx0aGlzLnN0b3JlQXBwU2V0dGluZ3MoKX19bGV0IERsPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0''@;'; put 'put ''b3IoYSl7dGhpcy5hcHBTZXR0aW5nc1NlcnZpY2U9YSx0aGlzLm9uU2lkZWJhclRvZ2dsZT1uZXcgRHIsdGhpcy5vblN0YXJ0dXBEYXRhTG9hZGVkPW5ldyBEcix0aGlzLm9uU2hvd0Fib3J0TW9kYWw9bmV3IERyLHRoaXMub25SZXF1ZXN0c01vZGFsT3Blbj1uZXcgRHIsdGhpcy5vbkRlbW9M''@;'; put 'put ''aW1pdE1vZGFsU2hvdz1uZXcgRHIsdGhpcy52aWV3TGFzdFVybD1udWxsLHRoaXMuc2lkZWJhckNsb3NlTGltaXQ9MTI4MCx0aGlzLmRhcmtNb2RlPW5ldyBBcighMSl9dG9nZ2xlRGFya01vZGUoYSl7dGhpcy5kYXJrTW9kZS5uZXh0KGEpLGE/ZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUo''@;'; put 'put ''ImNkcy10aGVtZSIsImRhcmsiKTpkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgiY2RzLXRoZW1lIiwibGlnaHQiKSx0aGlzLmFwcFNldHRpbmdzU2VydmljZS5zZXRBcHBTZXR0aW5ncyh7c2VsZWN0ZWRUaGVtZTphP2RfLmRhcms6ZF8ubGlnaHR9KX1zaG93RGVtb0xpbWl0TW9kYWwoYSl7''@;'; put 'put ''dGhpcy5vbkRlbW9MaW1pdE1vZGFsU2hvdy5lbWl0KGEpfXNob3dJbmZvTW9kYWwoYT0iSW5mbyIsZCl7dGhpcy5vblNob3dBYm9ydE1vZGFsLmVtaXQoe21vZGFsVGl0bGU6YSxtZXNzYWdlOmQsc2FzU2VydmljZToiIixkZXRhaWxzOm51bGx9KX1zaG93QWJvcnRNb2RhbChhLGQsaCxmPXZv''@;'; put 'put ''aWQgMCl7aHx8KGg9bnVsbCk7bGV0IHY9e3Nhc1NlcnZpY2U6YSxtZXNzYWdlOmQsZGV0YWlsczpofTtmJiYodi5tb2RhbFRpdGxlPWYpLHRoaXMub25TaG93QWJvcnRNb2RhbC5lbWl0KHYpfW9wZW5SZXF1ZXN0c01vZGFsKCl7dGhpcy5vblJlcXVlc3RzTW9kYWxPcGVuLmVtaXQoITApfWNh''@;'; put 'put ''dGNoUmVzcG9uc2VFcnJvcihhLGQpe2xldCBoPSJTQVMgU2VydmljZSBlcnJvciBvY3VycmVkIjtpZihkLmVycm9yKXtsZXQgZjtoPWQuZXJyb3IubWVzc2FnZSxkLmVycm9yLmRldGFpbHMmJmQuZXJyb3IuZGV0YWlscy5sb2cmJihmPWQuZXJyb3IuZGV0YWlscy5sb2cpLCghaHx8aC50cmlt''@;'; put 'put ''KCkubGVuZ3RoPDEpJiYoaD0iU0FTIFNlcnZpY2UgZXJyb3Igb2N1cnJlZCIpLHRoaXMuc2hvd0Fib3J0TW9kYWwoYSxoLHtMT0c6Zn0sIlJlcXVlc3QgZXJyb3IiKX1lbHNlIHRoaXMuc2hvd0Fib3J0TW9kYWwoYSxoKX10b2dnbGVTaWRlYmFyKCl7dGhpcy5vblNpZGViYXJUb2dnbGUuZW1p''@;'; put 'put ''dCgpfWNsb3NlU2lkZWJhcigpe3dpbmRvdy5pbm5lcldpZHRoPHRoaXMuc2lkZWJhckNsb3NlTGltaXQmJnRoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoe29wZW46ITF9KX1vcGVuU2lkZWJhcigpe3RoaXMub25TaWRlYmFyVG9nZ2xlLmVtaXQoe29wZW46ITB9KX1zdGFydHVwRGF0YUxvYWRl''@;'; put 'put ''ZCgpe3RoaXMub25TdGFydHVwRGF0YUxvYWRlZC5lbWl0KCl9ZGlzcGF0Y2hFdmVudChhKXtsZXQgZDsiZnVuY3Rpb24iPT10eXBlb2YgRXZlbnQ/ZD1uZXcgRXZlbnQoYSk6KGQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IiksZC5pbml0RXZlbnQoYSwhMCwhMCkpLHdpbmRvdy5kaXNw''@;'; put 'put ''YXRjaEV2ZW50KGQpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKFNJKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7Y2xh''@;'; put 'put ''c3MgTUl7fWNsYXNzIHhJe31jbGFzcyBDaHtjb25zdHJ1Y3RvcihjKXt0aGlzLm5vcm1hbGl6ZWROYW1lcz1uZXcgTWFwLHRoaXMubGF6eVVwZGF0ZT1udWxsLGM/InN0cmluZyI9PXR5cGVvZiBjP3RoaXMubGF6eUluaXQ9KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxjLnNwbGl0KCJcbiIp''@;'; put 'put ''LmZvckVhY2goYT0+e2NvbnN0IGQ9YS5pbmRleE9mKCI6Iik7aWYoZD4wKXtjb25zdCBoPWEuc2xpY2UoMCxkKSxmPWgudG9Mb3dlckNhc2UoKSx2PWEuc2xpY2UoZCsxKS50cmltKCk7dGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKGgsZiksdGhpcy5oZWFkZXJzLmhhcyhmKT90aGlzLmhl''@;'; put 'put ''YWRlcnMuZ2V0KGYpLnB1c2godik6dGhpcy5oZWFkZXJzLnNldChmLFt2XSl9fSl9OnR5cGVvZiBIZWFkZXJzPCJ1IiYmYyBpbnN0YW5jZW9mIEhlYWRlcnM/KHRoaXMuaGVhZGVycz1uZXcgTWFwLGMuZm9yRWFjaCgoYSxkKT0+e3RoaXMuc2V0SGVhZGVyRW50cmllcyhkLGEpfSkpOnRoaXMu''@;'; put 'put ''bGF6eUluaXQ9KCk9Pnt0aGlzLmhlYWRlcnM9bmV3IE1hcCxPYmplY3QuZW50cmllcyhjKS5mb3JFYWNoKChbYSxkXSk9Pnt0aGlzLnNldEhlYWRlckVudHJpZXMoYSxkKX0pfTp0aGlzLmhlYWRlcnM9bmV3IE1hcH1oYXMoYyl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5oYXMo''@;'; put 'put ''Yy50b0xvd2VyQ2FzZSgpKX1nZXQoYyl7dGhpcy5pbml0KCk7Y29uc3QgYT10aGlzLmhlYWRlcnMuZ2V0KGMudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGEmJmEubGVuZ3RoPjA/YVswXTpudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1l''@;'; put 'put ''cy52YWx1ZXMoKSl9Z2V0QWxsKGMpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuZ2V0KGMudG9Mb3dlckNhc2UoKSl8fG51bGx9YXBwZW5kKGMsYSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6Yyx2YWx1ZTphLG9wOiJhIn0pfXNldChjLGEpe3JldHVybiB0aGlzLmNsb25lKHtu''@;'; put 'put ''YW1lOmMsdmFsdWU6YSxvcDoicyJ9KX1kZWxldGUoYyxhKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTpjLHZhbHVlOmEsb3A6ImQifSl9bWF5YmVTZXROb3JtYWxpemVkTmFtZShjLGEpe3RoaXMubm9ybWFsaXplZE5hbWVzLmhhcyhhKXx8dGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGEsYyl9''@;'; put 'put ''aW5pdCgpe3RoaXMubGF6eUluaXQmJih0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgQ2g/dGhpcy5jb3B5RnJvbSh0aGlzLmxhenlJbml0KTp0aGlzLmxhenlJbml0KCksdGhpcy5sYXp5SW5pdD1udWxsLHRoaXMubGF6eVVwZGF0ZSYmKHRoaXMubGF6eVVwZGF0ZS5mb3JFYWNoKGM9PnRoaXMu''@;'; put 'put ''YXBwbHlVcGRhdGUoYykpLHRoaXMubGF6eVVwZGF0ZT1udWxsKSl9Y29weUZyb20oYyl7Yy5pbml0KCksQXJyYXkuZnJvbShjLmhlYWRlcnMua2V5cygpKS5mb3JFYWNoKGE9Pnt0aGlzLmhlYWRlcnMuc2V0KGEsYy5oZWFkZXJzLmdldChhKSksdGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGEs''@;'; put 'put ''Yy5ub3JtYWxpemVkTmFtZXMuZ2V0KGEpKX0pfWNsb25lKGMpe2NvbnN0IGE9bmV3IENoO3JldHVybiBhLmxhenlJbml0PXRoaXMubGF6eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiBDaD90aGlzLmxhenlJbml0OnRoaXMsYS5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtd''@;'; put 'put ''KS5jb25jYXQoW2NdKSxhfWFwcGx5VXBkYXRlKGMpe2NvbnN0IGE9Yy5uYW1lLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGMub3Ape2Nhc2UiYSI6Y2FzZSJzIjpsZXQgZD1jLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgZCYmKGQ9W2RdKSwwPT09ZC5sZW5ndGgpcmV0dXJuO3RoaXMubWF5YmVT''@;'; put 'put ''ZXROb3JtYWxpemVkTmFtZShjLm5hbWUsYSk7Y29uc3QgaD0oImEiPT09Yy5vcD90aGlzLmhlYWRlcnMuZ2V0KGEpOnZvaWQgMCl8fFtdO2gucHVzaCguLi5kKSx0aGlzLmhlYWRlcnMuc2V0KGEsaCk7YnJlYWs7Y2FzZSJkIjpjb25zdCBmPWMudmFsdWU7aWYoZil7bGV0IHY9dGhpcy5oZWFk''@;'; put 'put ''ZXJzLmdldChhKTtpZighdilyZXR1cm47dj12LmZpbHRlcihTPT4tMT09PWYuaW5kZXhPZihTKSksMD09PXYubGVuZ3RoPyh0aGlzLmhlYWRlcnMuZGVsZXRlKGEpLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShhKSk6dGhpcy5oZWFkZXJzLnNldChhLHYpfWVsc2UgdGhpcy5oZWFkZXJz''@;'; put 'put ''LmRlbGV0ZShhKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUoYSl9fXNldEhlYWRlckVudHJpZXMoYyxhKXtjb25zdCBkPShBcnJheS5pc0FycmF5KGEpP2E6W2FdKS5tYXAoZj0+Zi50b1N0cmluZygpKSxoPWMudG9Mb3dlckNhc2UoKTt0aGlzLmhlYWRlcnMuc2V0KGgsZCksdGhpcy5t''@;'; put 'put ''YXliZVNldE5vcm1hbGl6ZWROYW1lKGMsaCl9Zm9yRWFjaChjKXt0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubm9ybWFsaXplZE5hbWVzLmtleXMoKSkuZm9yRWFjaChhPT5jKHRoaXMubm9ybWFsaXplZE5hbWVzLmdldChhKSx0aGlzLmhlYWRlcnMuZ2V0KGEpKSl9fWNsYXNzIEtDZXtl''@;'; put 'put ''bmNvZGVLZXkoYyl7cmV0dXJuIHhzZShjKX1lbmNvZGVWYWx1ZShjKXtyZXR1cm4geHNlKGMpfWRlY29kZUtleShjKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGMpfWRlY29kZVZhbHVlKGMpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYyl9fWNvbnN0IEpDZT0vJShcZFthLWYwLTld''@;'; put 'put ''KS9naSxRQ2U9ezQwOiJAIiwiM0EiOiI6IiwyNDoiJCIsIjJDIjoiLCIsIjNCIjoiOyIsIjNEIjoiPSIsIjNGIjoiPyIsIjJGIjoiLyJ9O2Z1bmN0aW9uIHhzZShsKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGwpLnJlcGxhY2UoSkNlLChjLGEpPT5RQ2VbYV0/P2MpfWZ1bmN0aW9uIEVJ''@;'; put 'put ''KGwpe3JldHVybmAke2x9YH1jbGFzcyBkbXtjb25zdHJ1Y3RvcihjPXt9KXtpZih0aGlzLnVwZGF0ZXM9bnVsbCx0aGlzLmNsb25lRnJvbT1udWxsLHRoaXMuZW5jb2Rlcj1jLmVuY29kZXJ8fG5ldyBLQ2UsYy5mcm9tU3RyaW5nKXtpZihjLmZyb21PYmplY3QpdGhyb3cgbmV3IEVycm9yKCJD''@;'; put 'put ''YW5ub3Qgc3BlY2lmeSBib3RoIGZyb21TdHJpbmcgYW5kIGZyb21PYmplY3QuIik7dGhpcy5tYXA9ZnVuY3Rpb24gWENlKGwsYyl7Y29uc3QgYT1uZXcgTWFwO3JldHVybiBsLmxlbmd0aD4wJiZsLnJlcGxhY2UoL15cPy8sIiIpLnNwbGl0KCImIikuZm9yRWFjaChoPT57Y29uc3QgZj1oLmlu''@;'; put 'put ''ZGV4T2YoIj0iKSxbdixTXT0tMT09Zj9bYy5kZWNvZGVLZXkoaCksIiJdOltjLmRlY29kZUtleShoLnNsaWNlKDAsZikpLGMuZGVjb2RlVmFsdWUoaC5zbGljZShmKzEpKV0sVj1hLmdldCh2KXx8W107Vi5wdXNoKFMpLGEuc2V0KHYsVil9KSxhfShjLmZyb21TdHJpbmcsdGhpcy5lbmNvZGVy''@;'; put 'put ''KX1lbHNlIGMuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyhjLmZyb21PYmplY3QpLmZvckVhY2goYT0+e2NvbnN0IGQ9Yy5mcm9tT2JqZWN0W2FdLGg9QXJyYXkuaXNBcnJheShkKT9kLm1hcChFSSk6W0VJKGQpXTt0aGlzLm1hcC5zZXQoYSxoKX0pKTp0aGlzLm1h''@;'; put 'put ''cD1udWxsfWhhcyhjKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuaGFzKGMpfWdldChjKXt0aGlzLmluaXQoKTtjb25zdCBhPXRoaXMubWFwLmdldChjKTtyZXR1cm4gYT9hWzBdOm51bGx9Z2V0QWxsKGMpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLm1hcC5nZXQoYyl8fG51bGx9a2V5''@;'; put 'put ''cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubWFwLmtleXMoKSl9YXBwZW5kKGMsYSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOmMsdmFsdWU6YSxvcDoiYSJ9KX1hcHBlbmRBbGwoYyl7Y29uc3QgYT1bXTtyZXR1cm4gT2JqZWN0LmtleXMoYykuZm9yRWFjaChkPT57''@;'; put 'put ''Y29uc3QgaD1jW2RdO0FycmF5LmlzQXJyYXkoaCk/aC5mb3JFYWNoKGY9PnthLnB1c2goe3BhcmFtOmQsdmFsdWU6ZixvcDoiYSJ9KX0pOmEucHVzaCh7cGFyYW06ZCx2YWx1ZTpoLG9wOiJhIn0pfSksdGhpcy5jbG9uZShhKX1zZXQoYyxhKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06Yyx2''@;'; put 'put ''YWx1ZTphLG9wOiJzIn0pfWRlbGV0ZShjLGEpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTpjLHZhbHVlOmEsb3A6ImQifSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5rZXlzKCkubWFwKGM9Pntjb25zdCBhPXRoaXMuZW5jb2Rlci5lbmNvZGVLZXkoYyk7cmV0dXJuIHRo''@;'; put 'put ''aXMubWFwLmdldChjKS5tYXAoZD0+YSsiPSIrdGhpcy5lbmNvZGVyLmVuY29kZVZhbHVlKGQpKS5qb2luKCImIil9KS5maWx0ZXIoYz0+IiIhPT1jKS5qb2luKCImIil9Y2xvbmUoYyl7Y29uc3QgYT1uZXcgZG0oe2VuY29kZXI6dGhpcy5lbmNvZGVyfSk7cmV0dXJuIGEuY2xvbmVGcm9tPXRo''@;'; put 'put ''aXMuY2xvbmVGcm9tfHx0aGlzLGEudXBkYXRlcz0odGhpcy51cGRhdGVzfHxbXSkuY29uY2F0KGMpLGF9aW5pdCgpe251bGw9PT10aGlzLm1hcCYmKHRoaXMubWFwPW5ldyBNYXApLG51bGwhPT10aGlzLmNsb25lRnJvbSYmKHRoaXMuY2xvbmVGcm9tLmluaXQoKSx0aGlzLmNsb25lRnJvbS5r''@;'; put 'put ''ZXlzKCkuZm9yRWFjaChjPT50aGlzLm1hcC5zZXQoYyx0aGlzLmNsb25lRnJvbS5tYXAuZ2V0KGMpKSksdGhpcy51cGRhdGVzLmZvckVhY2goYz0+e3N3aXRjaChjLm9wKXtjYXNlImEiOmNhc2UicyI6Y29uc3QgYT0oImEiPT09Yy5vcD90aGlzLm1hcC5nZXQoYy5wYXJhbSk6dm9pZCAwKXx8''@;'; put 'put ''W107YS5wdXNoKEVJKGMudmFsdWUpKSx0aGlzLm1hcC5zZXQoYy5wYXJhbSxhKTticmVhaztjYXNlImQiOmlmKHZvaWQgMD09PWMudmFsdWUpe3RoaXMubWFwLmRlbGV0ZShjLnBhcmFtKTticmVha317bGV0IGQ9dGhpcy5tYXAuZ2V0KGMucGFyYW0pfHxbXTtjb25zdCBoPWQuaW5kZXhPZihF''@;'; put 'put ''SShjLnZhbHVlKSk7LTEhPT1oJiZkLnNwbGljZShoLDEpLGQubGVuZ3RoPjA/dGhpcy5tYXAuc2V0KGMucGFyYW0sZCk6dGhpcy5tYXAuZGVsZXRlKGMucGFyYW0pfX19KSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fWNsYXNzIGVTZXtjb25zdHJ1Y3Rvcigpe3RoaXMubWFw''@;'; put 'put ''PW5ldyBNYXB9c2V0KGMsYSl7cmV0dXJuIHRoaXMubWFwLnNldChjLGEpLHRoaXN9Z2V0KGMpe3JldHVybiB0aGlzLm1hcC5oYXMoYyl8fHRoaXMubWFwLnNldChjLGMuZGVmYXVsdFZhbHVlKCkpLHRoaXMubWFwLmdldChjKX1kZWxldGUoYyl7cmV0dXJuIHRoaXMubWFwLmRlbGV0ZShjKSx0''@;'; put 'put ''aGlzfWhhcyhjKXtyZXR1cm4gdGhpcy5tYXAuaGFzKGMpfWtleXMoKXtyZXR1cm4gdGhpcy5tYXAua2V5cygpfX1mdW5jdGlvbiBFc2UobCl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJmwgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn1mdW5jdGlvbiBUc2UobCl7cmV0dXJuIHR5cGVv''@;'; put 'put ''ZiBCbG9iPCJ1IiYmbCBpbnN0YW5jZW9mIEJsb2J9ZnVuY3Rpb24ga3NlKGwpe3JldHVybiB0eXBlb2YgRm9ybURhdGE8InUiJiZsIGluc3RhbmNlb2YgRm9ybURhdGF9Y2xhc3MgVVN7Y29uc3RydWN0b3IoYyxhLGQsaCl7bGV0IGY7aWYodGhpcy51cmw9YSx0aGlzLmJvZHk9bnVsbCx0aGlz''@;'; put 'put ''LnJlcG9ydFByb2dyZXNzPSExLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucmVzcG9uc2VUeXBlPSJqc29uIix0aGlzLm1ldGhvZD1jLnRvVXBwZXJDYXNlKCksZnVuY3Rpb24gdFNlKGwpe3N3aXRjaChsKXtjYXNlIkRFTEVURSI6Y2FzZSJHRVQiOmNhc2UiSEVBRCI6Y2FzZSJPUFRJ''@;'; put 'put ''T05TIjpjYXNlIkpTT05QIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0odGhpcy5tZXRob2QpfHxoPyh0aGlzLmJvZHk9dm9pZCAwIT09ZD9kOm51bGwsZj1oKTpmPWQsZiYmKHRoaXMucmVwb3J0UHJvZ3Jlc3M9ISFmLnJlcG9ydFByb2dyZXNzLHRoaXMud2l0aENyZWRlbnRpYWxzPSEh''@;'; put 'put ''Zi53aXRoQ3JlZGVudGlhbHMsZi5yZXNwb25zZVR5cGUmJih0aGlzLnJlc3BvbnNlVHlwZT1mLnJlc3BvbnNlVHlwZSksZi5oZWFkZXJzJiYodGhpcy5oZWFkZXJzPWYuaGVhZGVycyksZi5jb250ZXh0JiYodGhpcy5jb250ZXh0PWYuY29udGV4dCksZi5wYXJhbXMmJih0aGlzLnBhcmFtcz1m''@;'; put 'put ''LnBhcmFtcyksdGhpcy50cmFuc2ZlckNhY2hlPWYudHJhbnNmZXJDYWNoZSksdGhpcy5oZWFkZXJzPz89bmV3IENoLHRoaXMuY29udGV4dD8/PW5ldyBlU2UsdGhpcy5wYXJhbXMpe2NvbnN0IHY9dGhpcy5wYXJhbXMudG9TdHJpbmcoKTtpZigwPT09di5sZW5ndGgpdGhpcy51cmxXaXRoUGFy''@;'; put 'put ''YW1zPWE7ZWxzZXtjb25zdCBTPWEuaW5kZXhPZigiPyIpO3RoaXMudXJsV2l0aFBhcmFtcz1hKygtMT09PVM/Ij8iOlM8YS5sZW5ndGgtMT8iJiI6IiIpK3Z9fWVsc2UgdGhpcy5wYXJhbXM9bmV3IGRtLHRoaXMudXJsV2l0aFBhcmFtcz1hfXNlcmlhbGl6ZUJvZHkoKXtyZXR1cm4gbnVsbD09''@;'; put 'put ''PXRoaXMuYm9keT9udWxsOiJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5fHxFc2UodGhpcy5ib2R5KXx8VHNlKHRoaXMuYm9keSl8fGtzZSh0aGlzLmJvZHkpfHxmdW5jdGlvbiBuU2UobCl7cmV0dXJuIHR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiJiZsIGluc3RhbmNlb2YgVVJMU2VhcmNo''@;'; put 'put ''UGFyYW1zfSh0aGlzLmJvZHkpP3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBkbT90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJp''@;'; put 'put ''bmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxrc2UodGhpcy5ib2R5KT9udWxsOlRzZSh0aGlzLmJvZHkpP3RoaXMuYm9keS50eXBlfHxudWxsOkVzZSh0aGlzLmJvZHkpP251bGw6''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIGRtPyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5i''@;'; put 'put ''b2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUoYz17fSl7Y29uc3QgYT1jLm1ldGhvZHx8dGhpcy5tZXRob2QsZD1jLnVybHx8dGhpcy51cmwsaD1jLnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsZj1jLnRyYW5zZmVy''@;'; put 'put ''Q2FjaGU/P3RoaXMudHJhbnNmZXJDYWNoZSx2PXZvaWQgMCE9PWMuYm9keT9jLmJvZHk6dGhpcy5ib2R5LFM9Yy53aXRoQ3JlZGVudGlhbHM/P3RoaXMud2l0aENyZWRlbnRpYWxzLFY9Yy5yZXBvcnRQcm9ncmVzcz8/dGhpcy5yZXBvcnRQcm9ncmVzcztsZXQgUT1jLmhlYWRlcnN8fHRoaXMu''@;'; put 'put ''aGVhZGVycyxkZT1jLnBhcmFtc3x8dGhpcy5wYXJhbXM7Y29uc3QgcGU9Yy5jb250ZXh0Pz90aGlzLmNvbnRleHQ7cmV0dXJuIHZvaWQgMCE9PWMuc2V0SGVhZGVycyYmKFE9T2JqZWN0LmtleXMoYy5zZXRIZWFkZXJzKS5yZWR1Y2UoKENlLE9lKT0+Q2Uuc2V0KE9lLGMuc2V0SGVhZGVyc1tP''@;'; put 'put ''ZV0pLFEpKSxjLnNldFBhcmFtcyYmKGRlPU9iamVjdC5rZXlzKGMuc2V0UGFyYW1zKS5yZWR1Y2UoKENlLE9lKT0+Q2Uuc2V0KE9lLGMuc2V0UGFyYW1zW09lXSksZGUpKSxuZXcgVVMoYSxkLHYse3BhcmFtczpkZSxoZWFkZXJzOlEsY29udGV4dDpwZSxyZXBvcnRQcm9ncmVzczpWLHJlc3Bv''@;'; put 'put ''bnNlVHlwZTpoLHdpdGhDcmVkZW50aWFsczpTLHRyYW5zZmVyQ2FjaGU6Zn0pfX12YXIgaG09ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5TZW50PTBdPSJTZW50IixsW2wuVXBsb2FkUHJvZ3Jlc3M9MV09IlVwbG9hZFByb2dyZXNzIixsW2wuUmVzcG9uc2VIZWFkZXI9Ml09IlJlc3BvbnNlSGVh''@;'; put 'put ''ZGVyIixsW2wuRG93bmxvYWRQcm9ncmVzcz0zXT0iRG93bmxvYWRQcm9ncmVzcyIsbFtsLlJlc3BvbnNlPTRdPSJSZXNwb25zZSIsbFtsLlVzZXI9NV09IlVzZXIiLGx9KGhtfHx7fSk7Y2xhc3MgcFV7Y29uc3RydWN0b3IoYyxhPVpTLk9rLGQ9Ik9LIil7dGhpcy5oZWFkZXJzPWMuaGVhZGVy''@;'; put 'put ''c3x8bmV3IENoLHRoaXMuc3RhdHVzPXZvaWQgMCE9PWMuc3RhdHVzP2Muc3RhdHVzOmEsdGhpcy5zdGF0dXNUZXh0PWMuc3RhdHVzVGV4dHx8ZCx0aGlzLnVybD1jLnVybHx8bnVsbCx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMH19Y2xhc3MgVEkgZXh0ZW5kcyBw''@;'; put 'put ''VXtjb25zdHJ1Y3RvcihjPXt9KXtzdXBlcihjKSx0aGlzLnR5cGU9aG0uUmVzcG9uc2VIZWFkZXJ9Y2xvbmUoYz17fSl7cmV0dXJuIG5ldyBUSSh7aGVhZGVyczpjLmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09Yy5zdGF0dXM/Yy5zdGF0dXM6dGhpcy5zdGF0dXMsc3Rh''@;'; put 'put ''dHVzVGV4dDpjLnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6Yy51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgbjggZXh0ZW5kcyBwVXtjb25zdHJ1Y3RvcihjPXt9KXtzdXBlcihjKSx0aGlzLnR5cGU9aG0uUmVzcG9uc2UsdGhpcy5ib2R5PXZvaWQgMCE9PWMuYm9keT9j''@;'; put 'put ''LmJvZHk6bnVsbH1jbG9uZShjPXt9KXtyZXR1cm4gbmV3IG44KHtib2R5OnZvaWQgMCE9PWMuYm9keT9jLmJvZHk6dGhpcy5ib2R5LGhlYWRlcnM6Yy5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PWMuc3RhdHVzP2Muc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6''@;'; put 'put ''Yy5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOmMudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIGhfIGV4dGVuZHMgcFV7Y29uc3RydWN0b3IoYyl7c3VwZXIoYywwLCJVbmtub3duIEVycm9yIiksdGhpcy5uYW1lPSJIdHRwRXJyb3JSZXNwb25zZSIsdGhpcy5vaz0hMSx0''@;'; put 'put ''aGlzLm1lc3NhZ2U9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwP2BIdHRwIGZhaWx1cmUgZHVyaW5nIHBhcnNpbmcgZm9yICR7Yy51cmx8fCIodW5rbm93biB1cmwpIn1gOmBIdHRwIGZhaWx1cmUgcmVzcG9uc2UgZm9yICR7Yy51cmx8fCIodW5rbm93biB1cmwpIn06ICR7Yy5z''@;'; put 'put ''dGF0dXN9ICR7Yy5zdGF0dXNUZXh0fWAsdGhpcy5lcnJvcj1jLmVycm9yfHxudWxsfX12YXIgWlM9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5Db250aW51ZT0xMDBdPSJDb250aW51ZSIsbFtsLlN3aXRjaGluZ1Byb3RvY29scz0xMDFdPSJTd2l0Y2hpbmdQcm90b2NvbHMiLGxbbC5Qcm9jZXNz''@;'; put 'put ''aW5nPTEwMl09IlByb2Nlc3NpbmciLGxbbC5FYXJseUhpbnRzPTEwM109IkVhcmx5SGludHMiLGxbbC5Paz0yMDBdPSJPayIsbFtsLkNyZWF0ZWQ9MjAxXT0iQ3JlYXRlZCIsbFtsLkFjY2VwdGVkPTIwMl09IkFjY2VwdGVkIixsW2wuTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uPTIwM109''@;'; put 'put ''Ik5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbiIsbFtsLk5vQ29udGVudD0yMDRdPSJOb0NvbnRlbnQiLGxbbC5SZXNldENvbnRlbnQ9MjA1XT0iUmVzZXRDb250ZW50IixsW2wuUGFydGlhbENvbnRlbnQ9MjA2XT0iUGFydGlhbENvbnRlbnQiLGxbbC5NdWx0aVN0YXR1cz0yMDddPSJNdWx0''@;'; put 'put ''aVN0YXR1cyIsbFtsLkFscmVhZHlSZXBvcnRlZD0yMDhdPSJBbHJlYWR5UmVwb3J0ZWQiLGxbbC5JbVVzZWQ9MjI2XT0iSW1Vc2VkIixsW2wuTXVsdGlwbGVDaG9pY2VzPTMwMF09Ik11bHRpcGxlQ2hvaWNlcyIsbFtsLk1vdmVkUGVybWFuZW50bHk9MzAxXT0iTW92ZWRQZXJtYW5lbnRseSIs''@;'; put 'put ''bFtsLkZvdW5kPTMwMl09IkZvdW5kIixsW2wuU2VlT3RoZXI9MzAzXT0iU2VlT3RoZXIiLGxbbC5Ob3RNb2RpZmllZD0zMDRdPSJOb3RNb2RpZmllZCIsbFtsLlVzZVByb3h5PTMwNV09IlVzZVByb3h5IixsW2wuVW51c2VkPTMwNl09IlVudXNlZCIsbFtsLlRlbXBvcmFyeVJlZGlyZWN0PTMw''@;'; put 'put ''N109IlRlbXBvcmFyeVJlZGlyZWN0IixsW2wuUGVybWFuZW50UmVkaXJlY3Q9MzA4XT0iUGVybWFuZW50UmVkaXJlY3QiLGxbbC5CYWRSZXF1ZXN0PTQwMF09IkJhZFJlcXVlc3QiLGxbbC5VbmF1dGhvcml6ZWQ9NDAxXT0iVW5hdXRob3JpemVkIixsW2wuUGF5bWVudFJlcXVpcmVkPTQwMl09''@;'; put 'put ''IlBheW1lbnRSZXF1aXJlZCIsbFtsLkZvcmJpZGRlbj00MDNdPSJGb3JiaWRkZW4iLGxbbC5Ob3RGb3VuZD00MDRdPSJOb3RGb3VuZCIsbFtsLk1ldGhvZE5vdEFsbG93ZWQ9NDA1XT0iTWV0aG9kTm90QWxsb3dlZCIsbFtsLk5vdEFjY2VwdGFibGU9NDA2XT0iTm90QWNjZXB0YWJsZSIsbFts''@;'; put 'put ''LlByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZD00MDddPSJQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQiLGxbbC5SZXF1ZXN0VGltZW91dD00MDhdPSJSZXF1ZXN0VGltZW91dCIsbFtsLkNvbmZsaWN0PTQwOV09IkNvbmZsaWN0IixsW2wuR29uZT00MTBdPSJHb25lIixsW2wuTGVuZ3Ro''@;'; put 'put ''UmVxdWlyZWQ9NDExXT0iTGVuZ3RoUmVxdWlyZWQiLGxbbC5QcmVjb25kaXRpb25GYWlsZWQ9NDEyXT0iUHJlY29uZGl0aW9uRmFpbGVkIixsW2wuUGF5bG9hZFRvb0xhcmdlPTQxM109IlBheWxvYWRUb29MYXJnZSIsbFtsLlVyaVRvb0xvbmc9NDE0XT0iVXJpVG9vTG9uZyIsbFtsLlVuc3Vw''@;'; put 'put ''cG9ydGVkTWVkaWFUeXBlPTQxNV09IlVuc3VwcG9ydGVkTWVkaWFUeXBlIixsW2wuUmFuZ2VOb3RTYXRpc2ZpYWJsZT00MTZdPSJSYW5nZU5vdFNhdGlzZmlhYmxlIixsW2wuRXhwZWN0YXRpb25GYWlsZWQ9NDE3XT0iRXhwZWN0YXRpb25GYWlsZWQiLGxbbC5JbUFUZWFwb3Q9NDE4XT0iSW1B''@;'; put 'put ''VGVhcG90IixsW2wuTWlzZGlyZWN0ZWRSZXF1ZXN0PTQyMV09Ik1pc2RpcmVjdGVkUmVxdWVzdCIsbFtsLlVucHJvY2Vzc2FibGVFbnRpdHk9NDIyXT0iVW5wcm9jZXNzYWJsZUVudGl0eSIsbFtsLkxvY2tlZD00MjNdPSJMb2NrZWQiLGxbbC5GYWlsZWREZXBlbmRlbmN5PTQyNF09IkZhaWxl''@;'; put 'put ''ZERlcGVuZGVuY3kiLGxbbC5Ub29FYXJseT00MjVdPSJUb29FYXJseSIsbFtsLlVwZ3JhZGVSZXF1aXJlZD00MjZdPSJVcGdyYWRlUmVxdWlyZWQiLGxbbC5QcmVjb25kaXRpb25SZXF1aXJlZD00MjhdPSJQcmVjb25kaXRpb25SZXF1aXJlZCIsbFtsLlRvb01hbnlSZXF1ZXN0cz00MjldPSJU''@;'; put 'put ''b29NYW55UmVxdWVzdHMiLGxbbC5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U9NDMxXT0iUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlIixsW2wuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM9NDUxXT0iVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnMiLGxbbC5JbnRlcm5hbFNlcnZl''@;'; put 'put ''ckVycm9yPTUwMF09IkludGVybmFsU2VydmVyRXJyb3IiLGxbbC5Ob3RJbXBsZW1lbnRlZD01MDFdPSJOb3RJbXBsZW1lbnRlZCIsbFtsLkJhZEdhdGV3YXk9NTAyXT0iQmFkR2F0ZXdheSIsbFtsLlNlcnZpY2VVbmF2YWlsYWJsZT01MDNdPSJTZXJ2aWNlVW5hdmFpbGFibGUiLGxbbC5HYXRl''@;'; put 'put ''d2F5VGltZW91dD01MDRdPSJHYXRld2F5VGltZW91dCIsbFtsLkh0dHBWZXJzaW9uTm90U3VwcG9ydGVkPTUwNV09Ikh0dHBWZXJzaW9uTm90U3VwcG9ydGVkIixsW2wuVmFyaWFudEFsc29OZWdvdGlhdGVzPTUwNl09IlZhcmlhbnRBbHNvTmVnb3RpYXRlcyIsbFtsLkluc3VmZmljaWVudFN0''@;'; put 'put ''b3JhZ2U9NTA3XT0iSW5zdWZmaWNpZW50U3RvcmFnZSIsbFtsLkxvb3BEZXRlY3RlZD01MDhdPSJMb29wRGV0ZWN0ZWQiLGxbbC5Ob3RFeHRlbmRlZD01MTBdPSJOb3RFeHRlbmRlZCIsbFtsLk5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkPTUxMV09Ik5ldHdvcmtBdXRoZW50aWNhdGlv''@;'; put 'put ''blJlcXVpcmVkIixsfShaU3x8e30pO2Z1bmN0aW9uIGdVKGwsYyl7cmV0dXJue2JvZHk6YyxoZWFkZXJzOmwuaGVhZGVycyxjb250ZXh0OmwuY29udGV4dCxvYnNlcnZlOmwub2JzZXJ2ZSxwYXJhbXM6bC5wYXJhbXMscmVwb3J0UHJvZ3Jlc3M6bC5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5''@;'; put 'put ''cGU6bC5yZXNwb25zZVR5cGUsd2l0aENyZWRlbnRpYWxzOmwud2l0aENyZWRlbnRpYWxzLHRyYW5zZmVyQ2FjaGU6bC50cmFuc2ZlckNhY2hlfX1sZXQgbVU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmhhbmRsZXI9YX1yZXF1ZXN0KGEsZCxoPXt9KXtsZXQgZjtpZihhIGlu''@;'; put 'put ''c3RhbmNlb2YgVVMpZj1hO2Vsc2V7bGV0IFYsUTtWPWguaGVhZGVycyBpbnN0YW5jZW9mIENoP2guaGVhZGVyczpuZXcgQ2goaC5oZWFkZXJzKSxoLnBhcmFtcyYmKFE9aC5wYXJhbXMgaW5zdGFuY2VvZiBkbT9oLnBhcmFtczpuZXcgZG0oe2Zyb21PYmplY3Q6aC5wYXJhbXN9KSksZj1uZXcg''@;'; put 'put ''VVMoYSxkLHZvaWQgMCE9PWguYm9keT9oLmJvZHk6bnVsbCx7aGVhZGVyczpWLGNvbnRleHQ6aC5jb250ZXh0LHBhcmFtczpRLHJlcG9ydFByb2dyZXNzOmgucmVwb3J0UHJvZ3Jlc3MscmVzcG9uc2VUeXBlOmgucmVzcG9uc2VUeXBlfHwianNvbiIsd2l0aENyZWRlbnRpYWxzOmgud2l0aENy''@;'; put 'put ''ZWRlbnRpYWxzLHRyYW5zZmVyQ2FjaGU6aC50cmFuc2ZlckNhY2hlfSl9Y29uc3Qgdj1PbyhmKS5waXBlKFh2KFY9PnRoaXMuaGFuZGxlci5oYW5kbGUoVikpKTtpZihhIGluc3RhbmNlb2YgVVN8fCJldmVudHMiPT09aC5vYnNlcnZlKXJldHVybiB2O2NvbnN0IFM9di5waXBlKFphKFY9PlYg''@;'; put 'put ''aW5zdGFuY2VvZiBuOCkpO3N3aXRjaChoLm9ic2VydmV8fCJib2R5Iil7Y2FzZSJib2R5Ijpzd2l0Y2goZi5yZXNwb25zZVR5cGUpe2Nhc2UiYXJyYXlidWZmZXIiOnJldHVybiBTLnBpcGUoYnIoVj0+e2lmKG51bGwhPT1WLmJvZHkmJiEoVi5ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIp''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiBWLmJvZHl9KSk7Y2FzZSJibG9iIjpyZXR1cm4gUy5waXBlKGJyKFY9PntpZihudWxsIT09Vi5ib2R5JiYhKFYuYm9keSBpbnN0YW5jZW9mIEJsb2IpKXRocm93IG5ldyBFcnJvcigiUmVz''@;'; put 'put ''cG9uc2UgaXMgbm90IGEgQmxvYi4iKTtyZXR1cm4gVi5ib2R5fSkpO2Nhc2UidGV4dCI6cmV0dXJuIFMucGlwZShicihWPT57aWYobnVsbCE9PVYuYm9keSYmInN0cmluZyIhPXR5cGVvZiBWLmJvZHkpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBzdHJpbmcuIik7cmV0dXJu''@;'; put 'put ''IFYuYm9keX0pKTtkZWZhdWx0OnJldHVybiBTLnBpcGUoYnIoVj0+Vi5ib2R5KSl9Y2FzZSJyZXNwb25zZSI6cmV0dXJuIFM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7aC5vYnNlcnZlfX1gKX19ZGVsZXRlKGEsZD17fSl7''@;'; put 'put ''cmV0dXJuIHRoaXMucmVxdWVzdCgiREVMRVRFIixhLGQpfWdldChhLGQ9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkdFVCIsYSxkKX1oZWFkKGEsZD17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSEVBRCIsYSxkKX1qc29ucChhLGQpe3JldHVybiB0aGlzLnJlcXVlc3QoIkpTT05QIixhLHtw''@;'; put 'put ''YXJhbXM6KG5ldyBkbSkuYXBwZW5kKGQsIkpTT05QX0NBTExCQUNLIiksb2JzZXJ2ZToiYm9keSIscmVzcG9uc2VUeXBlOiJqc29uIn0pfW9wdGlvbnMoYSxkPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJPUFRJT05TIixhLGQpfXBhdGNoKGEsZCxoPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0''@;'; put 'put ''KCJQQVRDSCIsYSxnVShoLGQpKX1wb3N0KGEsZCxoPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQT1NUIixhLGdVKGgsZCkpfXB1dChhLGQsaD17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUFVUIixhLGdVKGgsZCkpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4g''@;'; put 'put ''bmV3KGR8fGwpKGNyKE1JKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gRHNlKGwsYyl7cmV0dXJuIGMobCl9ZnVuY3Rpb24gYVNlKGwsYyl7cmV0dXJuKGEsZCk9PmMuaW50ZXJjZXB0KGEs''@;'; put 'put ''e2hhbmRsZTpoPT5sKGgsZCl9KX1jb25zdCBjU2U9bmV3ICRyKCIiKSxZUz1uZXcgJHIoIiIpLElzZT1uZXcgJHIoIiIpLFJzZT1uZXcgJHIoIiIpO2Z1bmN0aW9uIHVTZSgpe2xldCBsPW51bGw7cmV0dXJuKGMsYSk9PntudWxsPT09bCYmKGw9KFpyKGNTZSx7b3B0aW9uYWw6ITB9KT8/W10p''@;'; put 'put ''LnJlZHVjZVJpZ2h0KGFTZSxEc2UpKTtjb25zdCBkPVpyKE8yKSxoPWQuYWRkKCk7cmV0dXJuIGwoYyxhKS5waXBlKGtTKCgpPT5kLnJlbW92ZShoKSkpfX1sZXQgTHNlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBNSXtjb25zdHJ1Y3RvcihhLGQpe3N1cGVyKCksdGhpcy5iYWNrZW5kPWEsdGhp''@;'; put 'put ''cy5pbmplY3Rvcj1kLHRoaXMuY2hhaW49bnVsbCx0aGlzLnBlbmRpbmdUYXNrcz1acihPMik7Y29uc3QgaD1acihSc2Use29wdGlvbmFsOiEwfSk7dGhpcy5iYWNrZW5kPWg/P2F9aGFuZGxlKGEpe2lmKG51bGw9PT10aGlzLmNoYWluKXtjb25zdCBoPUFycmF5LmZyb20obmV3IFNldChbLi4u''@;'; put 'put ''dGhpcy5pbmplY3Rvci5nZXQoWVMpLC4uLnRoaXMuaW5qZWN0b3IuZ2V0KElzZSxbXSldKSk7dGhpcy5jaGFpbj1oLnJlZHVjZVJpZ2h0KChmLHYpPT5mdW5jdGlvbiBsU2UobCxjLGEpe3JldHVybihkLGgpPT5nMChhLCgpPT5jKGQsZj0+bChmLGgpKSl9KGYsdix0aGlzLmluamVjdG9yKSxE''@;'; put 'put ''c2UpfWNvbnN0IGQ9dGhpcy5wZW5kaW5nVGFza3MuYWRkKCk7cmV0dXJuIHRoaXMuY2hhaW4oYSxoPT50aGlzLmJhY2tlbmQuaGFuZGxlKGgpKS5waXBlKGtTKCgpPT50aGlzLnBlbmRpbmdUYXNrcy5yZW1vdmUoZCkpKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJu''@;'; put 'put ''IG5ldyhkfHxsKShjcih4SSksY3IoWGwpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBsfSkoKTtjb25zdCBnU2U9L15cKVxdXH0nLD9cbi87bGV0IFBzZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMu''@;'; put 'put ''eGhyRmFjdG9yeT1hfWhhbmRsZShhKXtpZigiSlNPTlAiPT09YS5tZXRob2QpdGhyb3cgbmV3IFVuKC0yODAwLCExKTtjb25zdCBkPXRoaXMueGhyRmFjdG9yeTtyZXR1cm4oZC5cdTAyNzVsb2FkSW1wbD9RYyhkLlx1MDI3NWxvYWRJbXBsKCkpOk9vKG51bGwpKS5waXBlKEowKCgpPT5uZXcg''@;'; put 'put ''Q24oZj0+e2NvbnN0IHY9ZC5idWlsZCgpO2lmKHYub3BlbihhLm1ldGhvZCxhLnVybFdpdGhQYXJhbXMpLGEud2l0aENyZWRlbnRpYWxzJiYodi53aXRoQ3JlZGVudGlhbHM9ITApLGEuaGVhZGVycy5mb3JFYWNoKChldCxkdCk9PnYuc2V0UmVxdWVzdEhlYWRlcihldCxkdC5qb2luKCIsIikp''@;'; put 'put ''KSxhLmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8di5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhYS5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IGV0PWEuZGV0ZWN0Q29udGVudFR5cGVIZWFkZXIoKTtudWxs''@;'; put 'put ''IT09ZXQmJnYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixldCl9aWYoYS5yZXNwb25zZVR5cGUpe2NvbnN0IGV0PWEucmVzcG9uc2VUeXBlLnRvTG93ZXJDYXNlKCk7di5yZXNwb25zZVR5cGU9Impzb24iIT09ZXQ/ZXQ6InRleHQifWNvbnN0IFM9YS5zZXJpYWxpemVCb2R5KCk7''@;'; put 'put ''bGV0IFY9bnVsbDtjb25zdCBRPSgpPT57aWYobnVsbCE9PVYpcmV0dXJuIFY7Y29uc3QgZXQ9di5zdGF0dXNUZXh0fHwiT0siLGR0PW5ldyBDaCh2LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxodD1mdW5jdGlvbiBtU2UobCl7cmV0dXJuInJlc3BvbnNlVVJMImluIGwmJmwucmVzcG9uc2VV''@;'; put 'put ''Ukw/bC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChsLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9sLmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0odil8fGEudXJsO3JldHVybiBWPW5ldyBUSSh7aGVhZGVyczpkdCxzdGF0dXM6di5zdGF0dXMs''@;'; put 'put ''c3RhdHVzVGV4dDpldCx1cmw6aHR9KSxWfSxkZT0oKT0+e2xldHtoZWFkZXJzOmV0LHN0YXR1czpkdCxzdGF0dXNUZXh0Omh0LHVybDpNdH09USgpLFF0PW51bGw7ZHQhPT1aUy5Ob0NvbnRlbnQmJihRdD10eXBlb2Ygdi5yZXNwb25zZT4idSI/di5yZXNwb25zZVRleHQ6di5yZXNwb25zZSks''@;'; put 'put ''MD09PWR0JiYoZHQ9UXQ/WlMuT2s6MCk7bGV0IGxuPWR0Pj0yMDAmJmR0PDMwMDtpZigianNvbiI9PT1hLnJlc3BvbnNlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBRdCl7Y29uc3Qgdm49UXQ7UXQ9UXQucmVwbGFjZShnU2UsIiIpO3RyeXtRdD0iIiE9PVF0P0pTT04ucGFyc2UoUXQpOm51bGx9''@;'; put 'put ''Y2F0Y2god24pe1F0PXZuLGxuJiYobG49ITEsUXQ9e2Vycm9yOnduLHRleHQ6UXR9KX19bG4/KGYubmV4dChuZXcgbjgoe2JvZHk6UXQsaGVhZGVyczpldCxzdGF0dXM6ZHQsc3RhdHVzVGV4dDpodCx1cmw6TXR8fHZvaWQgMH0pKSxmLmNvbXBsZXRlKCkpOmYuZXJyb3IobmV3IGhfKHtlcnJv''@;'; put 'put ''cjpRdCxoZWFkZXJzOmV0LHN0YXR1czpkdCxzdGF0dXNUZXh0Omh0LHVybDpNdHx8dm9pZCAwfSkpfSxwZT1ldD0+e2NvbnN0e3VybDpkdH09USgpLGh0PW5ldyBoXyh7ZXJyb3I6ZXQsc3RhdHVzOnYuc3RhdHVzfHwwLHN0YXR1c1RleHQ6di5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIs''@;'; put 'put ''dXJsOmR0fHx2b2lkIDB9KTtmLmVycm9yKGh0KX07bGV0IENlPSExO2NvbnN0IE9lPWV0PT57Q2V8fChmLm5leHQoUSgpKSxDZT0hMCk7bGV0IGR0PXt0eXBlOmhtLkRvd25sb2FkUHJvZ3Jlc3MsbG9hZGVkOmV0LmxvYWRlZH07ZXQubGVuZ3RoQ29tcHV0YWJsZSYmKGR0LnRvdGFsPWV0LnRv''@;'; put 'put ''dGFsKSwidGV4dCI9PT1hLnJlc3BvbnNlVHlwZSYmdi5yZXNwb25zZVRleHQmJihkdC5wYXJ0aWFsVGV4dD12LnJlc3BvbnNlVGV4dCksZi5uZXh0KGR0KX0sWWU9ZXQ9PntsZXQgZHQ9e3R5cGU6aG0uVXBsb2FkUHJvZ3Jlc3MsbG9hZGVkOmV0LmxvYWRlZH07ZXQubGVuZ3RoQ29tcHV0YWJs''@;'; put 'put ''ZSYmKGR0LnRvdGFsPWV0LnRvdGFsKSxmLm5leHQoZHQpfTtyZXR1cm4gdi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixkZSksdi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIscGUpLHYuYWRkRXZlbnRMaXN0ZW5lcigidGltZW91dCIscGUpLHYuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLHBl''@;'; put 'put ''KSxhLnJlcG9ydFByb2dyZXNzJiYodi5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsT2UpLG51bGwhPT1TJiZ2LnVwbG9hZCYmdi51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLFllKSksdi5zZW5kKFMpLGYubmV4dCh7dHlwZTpobS5TZW50fSksKCk9Pnt2LnJlbW92ZUV2''@;'; put 'put ''ZW50TGlzdGVuZXIoImVycm9yIixwZSksdi5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIscGUpLHYucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZGUpLHYucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGltZW91dCIscGUpLGEucmVwb3J0UHJvZ3Jlc3MmJih2LnJlbW92ZUV2ZW50TGlzdGVu''@;'; put 'put ''ZXIoInByb2dyZXNzIixPZSksbnVsbCE9PVMmJnYudXBsb2FkJiZ2LnVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsWWUpKSx2LnJlYWR5U3RhdGUhPT12LkRPTkUmJnYuYWJvcnQoKX19KSkpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3''@;'; put 'put ''KGR8fGwpKGNyKGhyZSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2NvbnN0IGJVPW5ldyAkcigiIiksRnNlPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+IlhTUkYtVE9LRU4i''@;'; put 'put ''fSksTnNlPW5ldyAkcigiIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+IlgtWFNSRi1UT0tFTiJ9KTtjbGFzcyBIc2V7fWxldCBiU2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5kb2M9YSx0aGlzLnBsYXRmb3JtPWQsdGhpcy5jb29raWVOYW1lPWgsdGhp''@;'; put 'put ''cy5sYXN0Q29va2llU3RyaW5nPSIiLHRoaXMubGFzdFRva2VuPW51bGwsdGhpcy5wYXJzZUNvdW50PTB9Z2V0VG9rZW4oKXtpZigic2VydmVyIj09PXRoaXMucGxhdGZvcm0pcmV0dXJuIG51bGw7Y29uc3QgYT10aGlzLmRvYy5jb29raWV8fCIiO3JldHVybiBhIT09dGhpcy5sYXN0Q29va2ll''@;'; put 'put ''U3RyaW5nJiYodGhpcy5wYXJzZUNvdW50KyssdGhpcy5sYXN0VG9rZW49bnJlKGEsdGhpcy5jb29raWVOYW1lKSx0aGlzLmxhc3RDb29raWVTdHJpbmc9YSksdGhpcy5sYXN0VG9rZW59c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IoenMpLGNy''@;'; put 'put ''KElvKSxjcihGc2UpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiB5U2UobCxjKXtjb25zdCBhPWwudXJsLnRvTG93ZXJDYXNlKCk7aWYoIVpyKGJVKXx8IkdFVCI9PT1sLm1ldGhvZHx8IkhF''@;'; put 'put ''QUQiPT09bC5tZXRob2R8fGEuc3RhcnRzV2l0aCgiaHR0cDovLyIpfHxhLnN0YXJ0c1dpdGgoImh0dHBzOi8vIikpcmV0dXJuIGMobCk7Y29uc3QgZD1acihIc2UpLmdldFRva2VuKCksaD1acihOc2UpO3JldHVybiBudWxsIT1kJiYhbC5oZWFkZXJzLmhhcyhoKSYmKGw9bC5jbG9uZSh7aGVh''@;'; put 'put ''ZGVyczpsLmhlYWRlcnMuc2V0KGgsZCl9KSksYyhsKX12YXIgZm09ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5JbnRlcmNlcHRvcnM9MF09IkludGVyY2VwdG9ycyIsbFtsLkxlZ2FjeUludGVyY2VwdG9ycz0xXT0iTGVnYWN5SW50ZXJjZXB0b3JzIixsW2wuQ3VzdG9tWHNyZkNvbmZpZ3VyYXRp''@;'; put 'put ''b249Ml09IkN1c3RvbVhzcmZDb25maWd1cmF0aW9uIixsW2wuTm9Yc3JmUHJvdGVjdGlvbj0zXT0iTm9Yc3JmUHJvdGVjdGlvbiIsbFtsLkpzb25wU3VwcG9ydD00XT0iSnNvbnBTdXBwb3J0IixsW2wuUmVxdWVzdHNNYWRlVmlhUGFyZW50PTVdPSJSZXF1ZXN0c01hZGVWaWFQYXJlbnQiLGxb''@;'; put 'put ''bC5GZXRjaD02XT0iRmV0Y2giLGx9KGZtfHx7fSk7ZnVuY3Rpb24gcjgobCxjKXtyZXR1cm57XHUwMjc1a2luZDpsLFx1MDI3NXByb3ZpZGVyczpjfX1mdW5jdGlvbiB3U2UoLi4ubCl7Y29uc3QgYz1bbVUsUHNlLExzZSx7cHJvdmlkZTpNSSx1c2VFeGlzdGluZzpMc2V9LHtwcm92aWRlOnhJ''@;'; put 'put ''LHVzZUV4aXN0aW5nOlBzZX0se3Byb3ZpZGU6WVMsdXNlVmFsdWU6eVNlLG11bHRpOiEwfSx7cHJvdmlkZTpiVSx1c2VWYWx1ZTohMH0se3Byb3ZpZGU6SHNlLHVzZUNsYXNzOmJTZX1dO2Zvcihjb25zdCBhIG9mIGwpYy5wdXNoKC4uLmEuXHUwMjc1cHJvdmlkZXJzKTtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gXzIobCl7cmV0dXJue1x1MDI3NXByb3ZpZGVyczpsfX0oYyl9Y29uc3QgVnNlPW5ldyAkcigiIik7bGV0IFNTZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6''@;'; put 'put ''bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7cHJvdmlkZXJzOlt3U2UocjgoZm0uTGVnYWN5SW50ZXJjZXB0b3JzLFt7cHJvdmlkZTpWc2UsdXNlRmFjdG9yeTp1U2V9LHtwcm92aWRlOllTLHVzZUV4aXN0aW5nOlZzZSxtdWx0aTohMH1dKSldfSl9fXJldHVybiBsfSkoKSxHc2U9KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuaHR0cD1hLHRoaXMuYXBwU3RvcmVTZXJ2aWNlPWQsdGhpcy51cmw9IiIsdGhpcy5kcml2ZVVybD0iIix0aGlzLmh0dHBPcHRpb25zPXt3aXRoQ3JlZGVudGlhbHM6ITB9fXNldHVwKCl7Y29uc3QgYT10aGlzLmFwcFN0b3JlU2Vydmlj''@;'; put 'put ''ZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpO3RoaXMudXJsPWAke2E/LnNlcnZlclVybHx8IiJ9L1NBU2pzQXBpYCx0aGlzLmRyaXZlVXJsPWAke3RoaXMudXJsfS9kcml2ZWB9Z2V0U2VydmVySW5mbygpe3JldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJsfS9pbmZvYCl9Z2V0RmlsZUZy''@;'; put 'put ''b21Ecml2ZShhKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmRyaXZlVXJsfS9maWxlLz9fZmlsZVBhdGg9JHthfWAsdGhpcy5odHRwT3B0aW9ucyl9Z2V0Rm9sZGVyQ29udGVudHNGcm9tRHJpdmUoYSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZm9sZGVy''@;'; put 'put ''P19mb2xkZXJQYXRoPSR7YX1gLHRoaXMuaHR0cE9wdGlvbnMpfWdldEZpbGVUcmVlRnJvbURyaXZlKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5kcml2ZVVybH0vZmlsZXRyZWVgLHRoaXMuaHR0cE9wdGlvbnMpfWdldEZpbGVGcm9tRmlsZVRyZWUoYSl7cmV0dXJuIG5ldyBQcm9t''@;'; put 'put ''aXNlKChkLGgpPT57dGhpcy5nZXRGaWxlVHJlZUZyb21Ecml2ZSgpLnN1YnNjcmliZShmPT57Y29uc3QgUz10aGlzLmZpbmRJblRyZWUoZi50cmVlLGEpO2QoUyl9KX0pfWZpbmRJblRyZWUoYSxkKXtpZihhLnJlbGF0aXZlUGF0aD09PWQpcmV0dXJuIGE7Zm9yKGxldCBoIG9mIGEuY2hpbGRy''@;'; put 'put ''ZW4pe2NvbnN0IGY9dGhpcy5maW5kSW5UcmVlKGgsZCk7aWYoZilyZXR1cm4gZn19c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IobVUpLGNyKHQ4KSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3''@;'; put 'put ''NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCksdmE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyl7dGhpcy5hcHBTdG9yZVNlcnZpY2U9YSx0aGlzLnVzZXJTZXJ2aWNlPWQsdGhpcy5ldmVudFNlcnZpY2U9aCx0aGlzLnNhc2pzU2VydmljZT1mLHRo''@;'; put 'put ''aXMubG9nZ2VyU2VydmljZT12LHRoaXMucm91dGVyPVMsdGhpcy5sb2FkU3RhcnR1cFNlcnZpY2VFbWl0dGVyPW5ldyBEcix0aGlzLmluY29ycmVjdFNpdGVJZEVtaXR0ZXI9bmV3IERyLHRoaXMucmVxdWVzdFNpdGVJZEVtaXR0ZXI9bmV3IERyLHRoaXMuc2FzanNBZGFwdGVyPW5ldyhNc2Uo''@;'; put 'put ''KSksdGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITEsdGhpcy5zaG91bGRMb2dpbj1uZXcgQXIoITEpLHRoaXMubGljZW5zZV9zaXRlX2lkPW5ldyBBcihudWxsKX1zYXNTZXJ2aWNlSW5pdCgpe2lmKHRoaXMuZGNBZGFwdGVyU2V0dGluZ3M9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFw''@;'; put 'put ''dGVyU2V0dGluZ3MoKSx0aGlzLnNhc2pzU2VydmljZS5zZXR1cCgpLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Mpe3N3aXRjaCh0aGlzLnNhc2pzQWRhcHRlcj1uZXcoTXNlKCkpKHRoaXMuZGNBZGFwdGVyU2V0dGluZ3MpLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3Muc2VydmVyVHlwZSl7Y2FzZSBC''@;'; put 'put ''dS5ZLlNhc1ZpeWE6dGhpcy5jaGVja1ZpeWFEZXBsb3kodGhpcy5kY0FkYXB0ZXJTZXR0aW5ncy5hcHBMb2N8fCIiKTticmVhaztjYXNlIEJ1LlkuU2FzOTp0aGlzLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuZW1pdCgpO2JyZWFrO2Nhc2UgQnUuWS5TYXNqczp0aGlzLmNoZWNrU2FzanNE''@;'; put 'put ''ZXBsb3koKX0iUmVkaXJlY3RlZCI9PT10aGlzLmdldFNhc2pzQ29uZmlnKCkubG9naW5NZWNoYW5pc20mJnRoaXMuc2hvdWxkTG9naW4uc3Vic2NyaWJlKGE9PnthJiZ0aGlzLnNhc2pzQWRhcHRlci5sb2dJbigpLnRoZW4oZD0+e2NvbnNvbGUubG9nKCJyZXMiLGQpfSl9KX1lbHNlIHRoaXMu''@;'; put 'put ''ZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQWRhcHRlciBzZXR0aW5ncyAoaW5kZXguaHRtbCkgYXJlIG5vdCBwcmVzZW50LiIpfXJlcXVlc3QoYSxkLGgsZil7cmV0dXJuIGZ8fChmPXt9KSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nUmVxdWVzdERhdGEoYT0ic2VydmljZXMv''@;'; put 'put ''IithLGQpLG5ldyBQcm9taXNlKCh2LFMpPT57dGhpcy5zYXNqc0FkYXB0ZXIucmVxdWVzdChhLGQsaCwoKT0+e3RoaXMuc2hvdWxkTG9naW4ubmV4dCghMCl9KS50aGVuKFY9Pntjb25zdCBRPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc1JlcXVlc3RzKCkuZmluZChkZT0+ZGUuc2VydmljZUxp''@;'; put 'put ''bms9PT1hKTtpZighMT09PVYubG9naW4mJih0aGlzLnNob3VsZExvZ2luLm5leHQoITApLFMoe2FkYXB0ZXJSZXNwb25zZTohMSxsb2c6UT8ubG9nRmlsZX0pKSwhdGhpcy51c2VyU2VydmljZS51c2VyJiZWLk1GX0dFVFVTRVImJih0aGlzLnVzZXJTZXJ2aWNlLnVzZXI9e3VzZXJuYW1lOlYu''@;'; put 'put ''TUZfR0VUVVNFUn0pLFYuU1lTU0lURSYmKHRoaXMucmVxdWVzdFNpdGVJZEVtaXR0ZXIuZW1pdChWLlNZU1NJVEUpLHRoaXMuZ2V0TGljZW5zZVNpdGVJZCgpLmxlbmd0aD4wJiYodGhpcy5nZXRMaWNlbnNlU2l0ZUlkKCkuaW5jbHVkZXMoVi5TWVNTSVRFKXx8dGhpcy5pbmNvcnJlY3RTaXRl''@;'; put 'put ''SWRFbWl0dGVyLmVtaXQoVi5TWVNTSVRFKSkpLDQwND09PVYuc3RhdHVzJiZTKHthZGFwdGVyUmVzcG9uc2U6e01FU1NBR0U6Vi5ib2R5fHwiU0FTIFJlc3BvbmRlZCB3aXRoIGVycm9yIn0sbG9nOlE/LmxvZ0ZpbGV9KSx0eXBlb2YgVi5zYXNqc0Fib3J0PCJ1Iil7Y29uc3QgZGU9VixwZT1k''@;'; put 'put ''ZS5zYXNqc0Fib3J0WzBdLk1TRyxDZT1kZS5zYXNqc0Fib3J0WzBdLk1BQztpZihwZS5pbmNsdWRlcygiRGF0YV9Db250cm9sbGVyX1NldHRpbmdzKFN0b3JlZFByb2Nlc3MpIG5vdCBmb3VuZCIpKXJldHVybiB0aGlzLmV2ZW50U2VydmljZS5zdGFydHVwRGF0YUxvYWRlZCgpLHRoaXMucm91''@;'; put 'put ''dGVyLm5hdmlnYXRlQnlVcmwoIi9kZXBsb3kiKSx2b2lkIFMoe2FkYXB0ZXJSZXNwb25zZTp7ZXJyb3I6cGV9LGxvZzpRPy5sb2dGaWxlfSk7Zj8uc3VwcHJlc3NTdWNjZXNzQWJvcnRNb2RhbHx8dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoYS5yZXBsYWNlKCJzZXJ2aWNlcy8i''@;'; put 'put ''LCIiKSxwZSx7U1lTV0FSTklOR1RFWFQ6ZGUuU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhUOmRlLlNZU0VSUk9SVEVYVCxNQUM6Q2V9KSxTKHthZGFwdGVyUmVzcG9uc2U6e2Vycm9yOnBlfSxsb2c6UT8ubG9nRmlsZX0pfXYoe2FkYXB0ZXJSZXNwb25zZTpWLGxvZzpRPy5sb2dGaWxlfSl9''@;'; put 'put ''LFY9Pntjb25zb2xlLmVycm9yKFYpO2NvbnN0IFE9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzUmVxdWVzdHMoKS5maW5kKGRlPT5kZS5zZXJ2aWNlTGluaz09PWEpO2lmKFYuZXJyb3Ipe2xldCBwZSxkZT1WLmVycm9yLm1lc3NhZ2U7Vi5lcnJvci5kZXRhaWxzJiZWLmVycm9yLmRldGFpbHMu''@;'; put 'put ''bG9nJiYocGU9Vi5lcnJvci5kZXRhaWxzLmxvZyksKCFkZXx8ZGUudHJpbSgpLmxlbmd0aDwxKSYmKGRlPSJTQVMgU2VydmljZSBlcnJvciBvY3VycmVkIiksZj8uc3VwcHJlc3NFcnJvckFib3J0TW9kYWx8fHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKGEsZGUse0xPRzpwZX0s''@;'; put 'put ''IlJlcXVlc3QgZXJyb3IiKSxTKHthZGFwdGVyUmVzcG9uc2U6e2Vycm9yOmRlfSxsb2c6UT8ubG9nRmlsZX0pfVMoe2FkYXB0ZXJSZXNwb25zZTpWLGxvZzpRPy5sb2dGaWxlfSl9KX0pfXVwbG9hZEZpbGUoYSxkLGgpe3JldHVybiBuZXcgUHJvbWlzZSgoZix2KT0+e3RoaXMuc2FzanNBZGFw''@;'; put 'put ''dGVyLnVwbG9hZEZpbGUoYSxkLGgpLnRoZW4oUz0+e2NvbnN0IFY9dGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzUmVxdWVzdHMoKS5maW5kKFE9PiJzZXJ2aWNlcy9lZGl0b3JzL2xvYWRmaWxlIj09PVEuc2VydmljZUxpbmspO2Yoe2FkYXB0ZXJSZXNwb25zZTpTLGxvZzpWPy5sb2dGaWxlfSl9''@;'; put 'put ''LFM9Pntjb25zdCBWPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc1JlcXVlc3RzKCkuZmluZChRPT4ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSI9PT1RLnNlcnZpY2VMaW5rKTt2KHtyZXNwb25zZTpTLGxvZzpWPy5sb2dGaWxlfSl9KX0pfWxvZ2luKGEsZCl7dmFyIGg9dGhpcztyZXR1cm4g''@;'; put 'put ''WShmdW5jdGlvbiooKXtjb25zdCBmPWguZ2V0U2VydmVyVHlwZSgpPT09QnUuWS5TYXNqcz8iY2xpZW50SUQxIjp2b2lkIDA7cmV0dXJuIGguc2FzanNBZGFwdGVyLmxvZ0luKGEsZCxmKS50aGVuKHY9Pih2LmlzTG9nZ2VkSW4mJihoLnVzZXJTZXJ2aWNlLnVzZXI9e3VzZXJuYW1lOnYudXNl''@;'; put 'put ''ck5hbWV9LGguYXBwTG9jQ2hlY2tQZW5kaW5nJiYoaC5jaGVja1ZpeWFEZXBsb3koaC5kY0FkYXB0ZXJTZXR0aW5ncz8uYXBwTG9jfHwiIiksaC5hcHBMb2NDaGVja1BlbmRpbmc9ITEpKSxoLnNob3VsZExvZ2luLm5leHQoIXYuaXNMb2dnZWRJbiksdi5pc0xvZ2dlZEluKSx2PT4oY29uc29s''@;'; put 'put ''ZS5lcnJvcih2KSxoLnNob3VsZExvZ2luLm5leHQoITApLCExKSkuY2F0Y2godj0+KDQwMz09PXYmJmNvbnNvbGUuZXJyb3IoIkludmFsaWQgaG9zdCIpLCExKSl9KSgpfWdldExpY2Vuc2VTaXRlSWQoKXtyZXR1cm4gdGhpcy5saWNlbnNlX3NpdGVfaWQudmFsdWV8fFtdfXNldExpY2Vuc2VT''@;'; put 'put ''aXRlSWQoYSl7dGhpcy5saWNlbnNlX3NpdGVfaWQubmV4dCgib2JqZWN0Ij09dHlwZW9mIGE/YTpbYV0pfWNoZWNrU2FzanNEZXBsb3koKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2NvbnN0IGg9YCR7YS5nZXRTYXNqc0NvbmZpZygpLmFwcExvY30vc2VydmljZXMvYWRtaW5g''@;'; put 'put ''O2Euc2FzanNTZXJ2aWNlLmdldEZvbGRlckNvbnRlbnRzRnJvbURyaXZlKGgpLnN1YnNjcmliZShmPT57Zi5maWxlcy5pbmNsdWRlcygibWFrZWRhdGEuc2FzIik/KGEuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksYS5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpKToo''@;'; put 'put ''YS5sb2FkU3RhcnR1cFNlcnZpY2VFbWl0dGVyLmVtaXQoKSxhLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiZhLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvIikpfSxmPT57Zi5lcnJvci5pbmNsdWRlcygiVW5hdXRob3JpemVkIik/KGEuc2hvdWxkTG9naW4ubmV4dCghMCksYS5zaG91''@;'; put 'put ''bGRMb2dpbi5zdWJzY3JpYmUodj0+eyExPT09diYmbG9jYXRpb24ucmVsb2FkKCl9KSk6Zi5lcnJvci5pbmNsdWRlcygiRm9sZGVyIGRvZXNuJ3QgZXhpc3QuIikmJihjb25zb2xlLndhcm4oIlNBU2pzIFNBUyBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9j''@;'; put 'put ''LiIpLGEuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksYS5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpKX0pfSkoKX1zYXNqc01ha2VkYXRhQ2hlY2tpbmcoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBkPVkoZnVuY3Rpb24qKGgsZil7YS5jaGVja2luZ0ludGVydmFsPXNldEludGVydmFsKFkoZnVuY3Rpb24qKCl7YS5zYXNqc01ha2VkYXRhU3VjY2Vzc2Z1bGwoKS50aGVuKHY9Pnt2JiYoY2xlYXJJbnRlcnZhbChhLmNoZWNraW5nSW50ZXJ2YWwpLGgodikpfSkuY2F0Y2godj0+e2Ns''@;'; put 'put ''ZWFySW50ZXJ2YWwoYS5jaGVja2luZ0ludGVydmFsKSxmKHYpfSl9KSwxZTMpfSk7cmV0dXJuIGZ1bmN0aW9uKGgsZil7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9KSgpfXNhc2pzTWFrZWRhdGFTdWNjZXNzZnVsbCgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24q''@;'; put 'put ''KCl7cmV0dXJuIG5ldyBQcm9taXNlKChkLGgpPT57Y29uc3Qgdj1gJHthLmdldFNhc2pzQ29uZmlnKCkuYXBwTG9jfS9zZXJ2aWNlcy9hZG1pbmA7YS5zYXNqc1NlcnZpY2UuZ2V0Rm9sZGVyQ29udGVudHNGcm9tRHJpdmUodikuc3Vic2NyaWJlKFM9PntTLmZpbGVzLmluY2x1ZGVzKCJtYWtl''@;'; put 'put ''ZGF0YS5zYXMiKT9kKCExKTpkKCEwKX0sUz0+e1MuZXJyb3IuaW5jbHVkZXMoIkZvbGRlciBkb2Vzbid0IGV4aXN0LiIpJiZoKCl9KX0pfSkoKX1jaGVja1ZpeWFEZXBsb3koYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgZj0hMTtmPXR5cGVvZiBkLnNhc2pzQWRhcHRl''@;'; put 'put ''ci5nZXRGb2xkZXI8InUiP3lpZWxkIGQuYXBwTG9jQ2hlY2soYSk6eWllbGQgZC5hcHBMb2NDaGVja1ByZUF4aW9zZEFkYXB0ZXIoYSksZiYmZC5sb2FkU3RhcnR1cFNlcnZpY2VFbWl0dGVyLmVtaXQoKX0pKCl9YXBwTG9jQ2hlY2soYSl7dmFyIGQ9dGhpcztyZXR1cm4gbmV3IFByb21pc2Uo''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgaD1ZKGZ1bmN0aW9uKihmLHYpe2xldCBWLFM9ITE7dHJ5e1Y9eWllbGQgZC5zYXNqc0FkYXB0ZXIuZ2V0Rm9sZGVyKGEpfWNhdGNoKFEpeyJMb2dpblJlcXVpcmVkRXJyb3IiPT09US5uYW1lPyhkLmFwcExvY0NoZWNrUGVuZGluZz0hMCxkLnNob3VsZExvZ2luLm5l''@;'; put 'put ''eHQoITApLGYoITEpKTpTPSEwfWlmKFMpcmV0dXJuIGNvbnNvbGUud2FybigiVml5YSBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLGQuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksZC5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxv''@;'; put 'put ''eSIpLGYoITEpO2YoITApfSk7cmV0dXJuIGZ1bmN0aW9uKGYsdil7cmV0dXJuIGguYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9YXBwTG9jQ2hlY2tQcmVBeGlvc2RBZGFwdGVyKGEpe3JldHVybiBuZXcgUHJvbWlzZSgoZCxoKT0+e2xldCB2PSExO3JldHVybiBmZXRjaChgL2ZvbGRlcnMv''@;'; put 'put ''Zm9sZGVycy9AaXRlbT9wYXRoPSR7YX1gKS50aGVuKFM9Pig0MDQ9PT1TLnN0YXR1cyYmKHY9ITApLFMudGV4dCgpKSkudGhlbihTPT57aWYodGhpcy5pc0xvZ2luUmVxdWlyZWQoUykpdGhpcy5hcHBMb2NDaGVja1BlbmRpbmc9ITAsdGhpcy5zaG91bGRMb2dpbi5uZXh0KCEwKTtlbHNle2lm''@;'; put 'put ''KHYpcmV0dXJuIGNvbnNvbGUud2FybigiVml5YSBzZXJ2aWNlcyBhcmUgbm90IHByZXNlbnQgb24gdGhlIGN1cnJlbnQgYXBwTG9jLiIpLHRoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLGQoITEpO2xldCBW''@;'; put 'put ''PW51bGw7dHJ5e1Y9SlNPTi5wYXJzZShTKX1jYXRjaHt9aWYoViYmVi5odHRwU3RhdHVzQ29kZSYmNDA0PT09Vi5odHRwU3RhdHVzQ29kZSlyZXR1cm4gY29uc29sZS53YXJuKCJWaXlhIHNlcnZpY2VzIGFyZSBub3QgcHJlc2VudCBvbiB0aGUgY3VycmVudCBhcHBMb2MuIiksdGhpcy5ldmVu''@;'; put 'put ''dFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKSx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvZGVwbG95IiksZCghMSk7ZCghMCl9fSkuY2F0Y2goUz0+e2QoITEpfSl9KX1pc0xvZ2luUmVxdWlyZWQoYSl7cmV0dXJuLzxmb3JtLithY3Rpb249IiguKkxvZ29uW14iXSopLio+L2dtLnRl''@;'; put 'put ''c3QoYSl9bG9nb3V0KCl7dGhpcy5zYXNqc0FkYXB0ZXIubG9nT3V0KCkudGhlbigoKT0+e2xvY2F0aW9uLnJlbG9hZCgpfSl9Z2V0U2FzanNDb25maWcoKXtyZXR1cm4gdGhpcy5zYXNqc0FkYXB0ZXIuZ2V0U2FzanNDb25maWcoKX1nZXRTYXNSZXF1ZXN0cygpe3JldHVybiB0aGlzLnNhc2pz''@;'; put 'put ''QWRhcHRlci5nZXRTYXNSZXF1ZXN0cygpfXNldERlYnVnU3RhdGUoYSl7dGhpcy5zYXNqc0FkYXB0ZXIuc2V0RGVidWdTdGF0ZShhKX1nZXRTYXNqc0luc3RhbmNlKCl7cmV0dXJuIHRoaXMuc2FzanNBZGFwdGVyfWdldFNlcnZlclR5cGUoKXtjb25zdCBhPXRoaXMuc2FzanNBZGFwdGVyLmdl''@;'; put 'put ''dFNhc2pzQ29uZmlnKCk7cmV0dXJuIGEuc2VydmVyVHlwZT9hLnNlcnZlclR5cGU6IlNBU1ZJWUEifWdldEV4ZWN1dGlvblBhdGgoKXtjb25zdCBhPXRoaXMuc2FzanNBZGFwdGVyLmdldFNhc2pzQ29uZmlnKCk7c3dpdGNoKGEuc2VydmVyVHlwZSl7Y2FzZSBCdS5ZLlNhc1ZpeWE6cmV0dXJu''@;'; put 'put ''IGEucGF0aFNBU1ZpeWE7Y2FzZSBCdS5ZLlNhczk6cmV0dXJuIGEucGF0aFNBUzk7Y2FzZSBCdS5ZLlNhc2pzOnJldHVybiBhLnBhdGhTQVNKU319c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IodDgpLGNyKGZVKSxjcihEbCksY3IoR3NlKSxj''@;'; put 'put ''cihPMSksY3IoSnMpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKSxPMT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuaW5qZWN0b3I9YX1sb2coYSxkKXt0aGlz''@;'; put 'put ''LmluamVjdFNhc1NlcnZpY2UoKSx0aGlzLnNhc2pzQ29uZmlnPy5kZWJ1ZyYmKGQ/Y29uc29sZS5sb2coYSxkKTpjb25zb2xlLmxvZyhhKSl9ZXJyb3IoYSxkKXtjb25zb2xlLmVycm9yKGEsZCl9bG9nUmVxdWVzdERhdGEoYSxkKXtpZih0aGlzLmxvZygiLS0tIEFkYXB0ZXIgUmVxdWVzdCBJ''@;'; put 'put ''bnB1dCAtLS0iKSx0aGlzLmxvZyhhKSxkKXtmb3IobGV0IGggb2YgT2JqZWN0LmtleXMoZCkpdGhpcy5sb2coaCxkW2hdKTt0aGlzLmxvZygiLS0tLS0tIil9ZWxzZSB0aGlzLmxvZygibm8gZGF0YSBzZW50Iil9aW5qZWN0U2FzU2VydmljZSgpe2lmKCF0aGlzLnNhc2pzQ29uZmlnKXtjb25z''@;'; put 'put ''dCBhPXRoaXMuaW5qZWN0b3IuZ2V0KHZhKTt0aGlzLnNhc2pzQ29uZmlnPWEuZ2V0U2FzanNDb25maWcoKX19c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IoTWEpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5''@;'; put 'put ''OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjb25zdCAkc2U9ZnVuY3Rpb24gSVNlKGwsYyl7cmV0dXJuIGw9PT1jfHxsIT1sJiZjIT1jfSxBST1mdW5jdGlvbiBSU2UobCxjKXtmb3IodmFyIGE9bC5sZW5ndGg7YS0tOylpZigkc2UobFthXVswXSxjKSly''@;'; put 'put ''ZXR1cm4gYTtyZXR1cm4tMX07dmFyIE9TZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGZfKGwpe3ZhciBjPS0xLGE9bnVsbD09bD8wOmwubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytjPGE7KXt2YXIgZD1sW2NdO3RoaXMuc2V0KGRbMF0sZFsxXSl9fWZfLnByb3RvdHlwZS5j''@;'; put 'put ''bGVhcj1mdW5jdGlvbiBBU2UoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxmXy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIFBTZShsKXt2YXIgYz10aGlzLl9fZGF0YV9fLGE9QUkoYyxsKTtyZXR1cm4hKGE8MHx8KGE9PWMubGVuZ3RoLTE/Yy5wb3AoKTpPU2UuY2FsbChjLGEs''@;'; put 'put ''MSksLS10aGlzLnNpemUsMCkpfSxmXy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIE5TZShsKXt2YXIgYz10aGlzLl9fZGF0YV9fLGE9QUkoYyxsKTtyZXR1cm4gYTwwP3ZvaWQgMDpjW2FdWzFdfSxmXy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFZTZShsKXtyZXR1cm4gQUkodGhpcy5fX2RhdGFf''@;'; put 'put ''XyxsKT4tMX0sZl8ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBqU2UobCxjKXt2YXIgYT10aGlzLl9fZGF0YV9fLGQ9QUkoYSxsKTtyZXR1cm4gZDwwPygrK3RoaXMuc2l6ZSxhLnB1c2goW2wsY10pKTphW2RdWzFdPWMsdGhpc307Y29uc3QgREk9Zl8scXNlPSJvYmplY3QiPT10eXBlb2YgZ2xv''@;'; put 'put ''YmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbDt2YXIgSlNlPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGY7Y29uc3QgQzM9cXNlfHxKU2V8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkscG09QzMuU3ltYm9s''@;'; put 'put ''O3ZhciBLc2U9T2JqZWN0LnByb3RvdHlwZSx0TWU9S3NlLmhhc093blByb3BlcnR5LG5NZT1Lc2UudG9TdHJpbmcsV1M9cG0/cG0udG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBzTWU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgWHNlPXBtP3BtLnRvU3RyaW5nVGFnOnZvaWQgMDtjb25z''@;'; put 'put ''dCBwXz1mdW5jdGlvbiBkTWUobCl7cmV0dXJuIG51bGw9PWw/dm9pZCAwPT09bD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6WHNlJiZYc2UgaW4gT2JqZWN0KGwpP2Z1bmN0aW9uIHJNZShsKXt2YXIgYz10TWUuY2FsbChsLFdTKSxhPWxbV1NdO3RyeXtsW1dTXT12b2lk''@;'; put 'put ''IDA7dmFyIGQ9ITB9Y2F0Y2h7fXZhciBoPW5NZS5jYWxsKGwpO3JldHVybiBkJiYoYz9sW1dTXT1hOmRlbGV0ZSBsW1dTXSksaH0obCk6ZnVuY3Rpb24gYU1lKGwpe3JldHVybiBzTWUuY2FsbChsKX0obCl9LEdTPWZ1bmN0aW9uIGhNZShsKXt2YXIgYz10eXBlb2YgbDtyZXR1cm4gbnVsbCE9''@;'; put 'put ''bCYmKCJvYmplY3QiPT1jfHwiZnVuY3Rpb24iPT1jKX0sSnNlPWZ1bmN0aW9uIHZNZShsKXtpZighR1MobCkpcmV0dXJuITE7dmFyIGM9cF8obCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09Y3x8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09Y3x8IltvYmplY3QgQXN5bmNGdW5j''@;'; put 'put ''dGlvbl0iPT1jfHwiW29iamVjdCBQcm94eV0iPT1jfSx5VT1DM1siX19jb3JlLWpzX3NoYXJlZF9fIl07dmFyIFFzZT1mdW5jdGlvbigpe3ZhciBsPS9bXi5dKyQvLmV4ZWMoeVUmJnlVLmtleXMmJnlVLmtleXMuSUVfUFJPVE98fCIiKTtyZXR1cm4gbD8iU3ltYm9sKHNyYylfMS4iK2w6IiJ9''@;'; put 'put ''KCk7dmFyIENNZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7Y29uc3QgaTg9ZnVuY3Rpb24gU01lKGwpe2lmKG51bGwhPWwpe3RyeXtyZXR1cm4gQ01lLmNhbGwobCl9Y2F0Y2h7fXRyeXtyZXR1cm4gbCsiIn1jYXRjaHt9fXJldHVybiIifTt2YXIgeE1lPS9eXFtvYmplY3QgLis/Q29u''@;'; put 'put ''c3RydWN0b3JcXSQvLERNZT1SZWdFeHAoIl4iK0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9u''@;'; put 'put ''KS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2NvbnN0IFJNZT1mdW5jdGlvbiBJTWUobCl7cmV0dXJuISghR1MobCl8fGZ1bmN0aW9uIGJNZShsKXtyZXR1cm4hIVFzZSYmUXNlIGluIGx9KGwpKSYmKEpzZShsKT9ETWU6eE1lKS50ZXN0KGk4KGwpKX0sbzg9''@;'; put 'put ''ZnVuY3Rpb24gUE1lKGwsYyl7dmFyIGE9ZnVuY3Rpb24gTE1lKGwsYyl7cmV0dXJuIGw/LltjXX0obCxjKTtyZXR1cm4gUk1lKGEpP2E6dm9pZCAwfSwkUz1vOChDMywiTWFwIikscVM9bzgoT2JqZWN0LCJjcmVhdGUiKTt2YXIgWk1lPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7''@;'; put 'put ''dmFyICRNZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGdfKGwpe3ZhciBjPS0xLGE9bnVsbD09bD8wOmwubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytjPGE7KXt2YXIgZD1sW2NdO3RoaXMuc2V0KGRbMF0sZFsxXSl9fWdfLnByb3RvdHlwZS5jbGVhcj1mdW5j''@;'; put 'put ''dGlvbiBITWUoKXt0aGlzLl9fZGF0YV9fPXFTP3FTKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxnXy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIEJNZShsKXt2YXIgYz10aGlzLmhhcyhsKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bbF07cmV0dXJuIHRoaXMuc2l6ZS09Yz8xOjAsY30sZ18ucHJv''@;'; put 'put ''dG90eXBlLmdldD1mdW5jdGlvbiBZTWUobCl7dmFyIGM9dGhpcy5fX2RhdGFfXztpZihxUyl7dmFyIGE9Y1tsXTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1hP3ZvaWQgMDphfXJldHVybiBaTWUuY2FsbChjLGwpP2NbbF06dm9pZCAwfSxnXy5wcm90b3R5cGUuaGFzPWZ1''@;'; put 'put ''bmN0aW9uIHFNZShsKXt2YXIgYz10aGlzLl9fZGF0YV9fO3JldHVybiBxUz92b2lkIDAhPT1jW2xdOiRNZS5jYWxsKGMsbCl9LGdfLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gSk1lKGwsYyl7dmFyIGE9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhsKT8wOjEsYVts''@;'; put 'put ''XT1xUyYmdm9pZCAwPT09Yz8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6Yyx0aGlzfTtjb25zdCBlYWU9Z18sSUk9ZnVuY3Rpb24gaXhlKGwsYyl7dmFyIGE9bC5fX2RhdGFfXztyZXR1cm4gZnVuY3Rpb24gbnhlKGwpe3ZhciBjPXR5cGVvZiBsO3JldHVybiJzdHJpbmciPT1jfHwibnVt''@;'; put 'put ''YmVyIj09Y3x8InN5bWJvbCI9PWN8fCJib29sZWFuIj09Yz8iX19wcm90b19fIiE9PWw6bnVsbD09PWx9KGMpP2FbInN0cmluZyI9PXR5cGVvZiBjPyJzdHJpbmciOiJoYXNoIl06YS5tYXB9O2Z1bmN0aW9uIG1fKGwpe3ZhciBjPS0xLGE9bnVsbD09bD8wOmwubGVuZ3RoO2Zvcih0aGlzLmNs''@;'; put 'put ''ZWFyKCk7KytjPGE7KXt2YXIgZD1sW2NdO3RoaXMuc2V0KGRbMF0sZFsxXSl9fW1fLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBleGUoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBlYWUsbWFwOm5ldygkU3x8REkpLHN0cmluZzpuZXcgZWFlfX0sbV8ucHJvdG90eXBl''@;'; put 'put ''LmRlbGV0ZT1mdW5jdGlvbiBveGUobCl7dmFyIGM9SUkodGhpcyxsKS5kZWxldGUobCk7cmV0dXJuIHRoaXMuc2l6ZS09Yz8xOjAsY30sbV8ucHJvdG90eXBlLmdldD1mdW5jdGlvbiBheGUobCl7cmV0dXJuIElJKHRoaXMsbCkuZ2V0KGwpfSxtXy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIGN4''@;'; put 'put ''ZShsKXtyZXR1cm4gSUkodGhpcyxsKS5oYXMobCl9LG1fLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gZHhlKGwsYyl7dmFyIGE9SUkodGhpcyxsKSxkPWEuc2l6ZTtyZXR1cm4gYS5zZXQobCxjKSx0aGlzLnNpemUrPWEuc2l6ZT09ZD8wOjEsdGhpc307Y29uc3Qgd1U9bV87ZnVuY3Rpb24gdl8o''@;'; put 'put ''bCl7dmFyIGM9dGhpcy5fX2RhdGFfXz1uZXcgREkobCk7dGhpcy5zaXplPWMuc2l6ZX12Xy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gVVNlKCl7dGhpcy5fX2RhdGFfXz1uZXcgREksdGhpcy5zaXplPTB9LHZfLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gWVNlKGwpe3ZhciBjPXRoaXMu''@;'; put 'put ''X19kYXRhX18sYT1jLmRlbGV0ZShsKTtyZXR1cm4gdGhpcy5zaXplPWMuc2l6ZSxhfSx2Xy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIEdTZShsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQobCl9LHZfLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gcVNlKGwpe3JldHVybiB0aGlzLl9fZGF0YV9f''@;'; put 'put ''LmhhcyhsKX0sdl8ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBweGUobCxjKXt2YXIgYT10aGlzLl9fZGF0YV9fO2lmKGEgaW5zdGFuY2VvZiBESSl7dmFyIGQ9YS5fX2RhdGFfXztpZighJFN8fGQubGVuZ3RoPDE5OSlyZXR1cm4gZC5wdXNoKFtsLGNdKSx0aGlzLnNpemU9KythLnNpemUsdGhp''@;'; put 'put ''czthPXRoaXMuX19kYXRhX189bmV3IHdVKGQpfXJldHVybiBhLnNldChsLGMpLHRoaXMuc2l6ZT1hLnNpemUsdGhpc307Y29uc3QgbXhlPXZfO3ZhciBieGU9ZnVuY3Rpb24oKXt0cnl7dmFyIGw9bzgoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBsKHt9LCIiLHt9KSxsfWNhdGNo''@;'; put 'put ''e319KCk7Y29uc3QgdGFlPWJ4ZSxuYWU9ZnVuY3Rpb24geXhlKGwsYyxhKXsiX19wcm90b19fIj09YyYmdGFlP3RhZShsLGMse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmEsd3JpdGFibGU6ITB9KTpsW2NdPWF9O3ZhciBDeGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eTtjb25zdCByYWU9ZnVuY3Rpb24gU3hlKGwsYyxhKXt2YXIgZD1sW2NdOyghQ3hlLmNhbGwobCxjKXx8ISRzZShkLGEpfHx2b2lkIDA9PT1hJiYhKGMgaW4gbCkpJiZuYWUobCxjLGEpfSxSST1mdW5jdGlvbiBNeGUobCxjLGEsZCl7dmFyIGg9IWE7YXx8KGE9e30pO2Zvcih2YXIg''@;'; put 'put ''Zj0tMSx2PWMubGVuZ3RoOysrZjx2Oyl7dmFyIFM9Y1tmXSxWPWQ/ZChhW1NdLGxbU10sUyxhLGwpOnZvaWQgMDt2b2lkIDA9PT1WJiYoVj1sW1NdKSxoP25hZShhLFMsVik6cmFlKGEsUyxWKX1yZXR1cm4gYX0sX189ZnVuY3Rpb24gVHhlKGwpe3JldHVybiBudWxsIT1sJiYib2JqZWN0Ij09''@;'; put 'put ''dHlwZW9mIGx9LGlhZT1mdW5jdGlvbiBBeGUobCl7cmV0dXJuIF9fKGwpJiYiW29iamVjdCBBcmd1bWVudHNdIj09cF8obCl9O3ZhciBvYWU9T2JqZWN0LnByb3RvdHlwZSxEeGU9b2FlLmhhc093blByb3BlcnR5LEl4ZT1vYWUucHJvcGVydHlJc0VudW1lcmFibGUsUnhlPWlhZShmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBhcmd1bWVudHN9KCkpP2lhZTpmdW5jdGlvbihsKXtyZXR1cm4gX18obCkmJkR4ZS5jYWxsKGwsImNhbGxlZSIpJiYhSXhlLmNhbGwobCwiY2FsbGVlIil9O2NvbnN0IEx4ZT1SeGUsYl89QXJyYXkuaXNBcnJheTt2YXIgc2FlPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYm''@;'; put 'put ''ZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsYWFlPXNhZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLGxhZT1hYWUmJmFhZS5leHBvcnRzPT09c2FlP0MzLkJ1ZmZlcjp2b2lkIDA7Y29uc3QgY2FlPShsYWU/bGFl''@;'; put 'put ''LmlzQnVmZmVyOnZvaWQgMCl8fGZ1bmN0aW9uIFB4ZSgpe3JldHVybiExfTt2YXIganhlPS9eKD86MHxbMS05XVxkKikkLztjb25zdCBVeGU9ZnVuY3Rpb24genhlKGwsYyl7dmFyIGE9dHlwZW9mIGw7cmV0dXJuISEoYz1jPz85MDA3MTk5MjU0NzQwOTkxKSYmKCJudW1iZXIiPT1hfHwic3lt''@;'; put 'put ''Ym9sIiE9YSYmanhlLnRlc3QobCkpJiZsPi0xJiZsJTE9PTAmJmw8Y30sdWFlPWZ1bmN0aW9uIFl4ZShsKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGwmJmw+LTEmJmwlMT09MCYmbDw9OTAwNzE5OTI1NDc0MDk5MX07dmFyIElsPXt9O0lsWyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1JbFsi''@;'; put 'put ''W29iamVjdCBGbG9hdDY0QXJyYXldIl09SWxbIltvYmplY3QgSW50OEFycmF5XSJdPUlsWyJbb2JqZWN0IEludDE2QXJyYXldIl09SWxbIltvYmplY3QgSW50MzJBcnJheV0iXT1JbFsiW29iamVjdCBVaW50OEFycmF5XSJdPUlsWyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPUlsWyJb''@;'; put 'put ''b2JqZWN0IFVpbnQxNkFycmF5XSJdPUlsWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElsWyJbb2JqZWN0IEFyZ3VtZW50c10iXT1JbFsiW29iamVjdCBBcnJheV0iXT1JbFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JbFsiW29iamVjdCBCb29sZWFuXSJdPUlsWyJbb2JqZWN0IERhdGFW''@;'; put 'put ''aWV3XSJdPUlsWyJbb2JqZWN0IERhdGVdIl09SWxbIltvYmplY3QgRXJyb3JdIl09SWxbIltvYmplY3QgRnVuY3Rpb25dIl09SWxbIltvYmplY3QgTWFwXSJdPUlsWyJbb2JqZWN0IE51bWJlcl0iXT1JbFsiW29iamVjdCBPYmplY3RdIl09SWxbIltvYmplY3QgUmVnRXhwXSJdPUlsWyJbb2Jq''@;'; put 'put ''ZWN0IFNldF0iXT1JbFsiW29iamVjdCBTdHJpbmddIl09SWxbIltvYmplY3QgV2Vha01hcF0iXT0hMTtjb25zdCBDVT1mdW5jdGlvbiBfRWUobCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBsKGMpfX07dmFyIGRhZT0ib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJmV4cG9ydHMmJiFleHBv''@;'; put 'put ''cnRzLm5vZGVUeXBlJiZleHBvcnRzLEtTPWRhZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlLFNVPUtTJiZLUy5leHBvcnRzPT09ZGFlJiZxc2UucHJvY2Vzcztjb25zdCB5Xz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gS1MmJktTLnJl''@;'; put 'put ''cXVpcmUmJktTLnJlcXVpcmUoInV0aWwiKS50eXBlc3x8U1UmJlNVLmJpbmRpbmcmJlNVLmJpbmRpbmcoInV0aWwiKX1jYXRjaHt9fSgpO3ZhciBoYWU9eV8mJnlfLmlzVHlwZWRBcnJheTtjb25zdCBDRWU9aGFlP0NVKGhhZSk6ZnVuY3Rpb24gbUVlKGwpe3JldHVybiBfXyhsKSYmdWFlKGwu''@;'; put 'put ''bGVuZ3RoKSYmISFJbFtwXyhsKV19O3ZhciBNRWU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBmYWU9ZnVuY3Rpb24geEVlKGwsYyl7dmFyIGE9Yl8obCksZD0hYSYmTHhlKGwpLGg9IWEmJiFkJiZjYWUobCksZj0hYSYmIWQmJiFoJiZDRWUobCksdj1hfHxkfHxofHxm''@;'; put 'put ''LFM9dj9mdW5jdGlvbiB4eGUobCxjKXtmb3IodmFyIGE9LTEsZD1BcnJheShsKTsrK2E8bDspZFthXT1jKGEpO3JldHVybiBkfShsLmxlbmd0aCxTdHJpbmcpOltdLFY9Uy5sZW5ndGg7Zm9yKHZhciBRIGluIGwpKGN8fE1FZS5jYWxsKGwsUSkpJiYoIXZ8fCEoImxlbmd0aCI9PVF8fGgmJigi''@;'; put 'put ''b2Zmc2V0Ij09UXx8InBhcmVudCI9PVEpfHxmJiYoImJ1ZmZlciI9PVF8fCJieXRlTGVuZ3RoIj09UXx8ImJ5dGVPZmZzZXQiPT1RKXx8VXhlKFEsVikpKSYmUy5wdXNoKFEpO3JldHVybiBTfTt2YXIgRUVlPU9iamVjdC5wcm90b3R5cGU7Y29uc3QgTVU9ZnVuY3Rpb24gVEVlKGwpe3ZhciBj''@;'; put 'put ''PWwmJmwuY29uc3RydWN0b3I7cmV0dXJuIGw9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGMmJmMucHJvdG90eXBlfHxFRWUpfSxwYWU9ZnVuY3Rpb24ga0VlKGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBsKGMoYSkpfX0sREVlPXBhZShPYmplY3Qua2V5cyxPYmplY3QpO3ZhciBSRWU9''@;'; put 'put ''T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtjb25zdCBnYWU9ZnVuY3Rpb24gUEVlKGwpe3JldHVybiBudWxsIT1sJiZ1YWUobC5sZW5ndGgpJiYhSnNlKGwpfSx4VT1mdW5jdGlvbiBGRWUobCl7cmV0dXJuIGdhZShsKT9mYWUobCk6ZnVuY3Rpb24gTEVlKGwpe2lmKCFNVShsKSly''@;'; put 'put ''ZXR1cm4gREVlKGwpO3ZhciBjPVtdO2Zvcih2YXIgYSBpbiBPYmplY3QobCkpUkVlLmNhbGwobCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmYy5wdXNoKGEpO3JldHVybiBjfShsKX07dmFyIHpFZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2NvbnN0IFpFZT1mdW5jdGlvbiBVRWUo''@;'; put 'put ''bCl7aWYoIUdTKGwpKXJldHVybiBmdW5jdGlvbiBWRWUobCl7dmFyIGM9W107aWYobnVsbCE9bClmb3IodmFyIGEgaW4gT2JqZWN0KGwpKWMucHVzaChhKTtyZXR1cm4gY30obCk7dmFyIGM9TVUobCksYT1bXTtmb3IodmFyIGQgaW4gbCkiY29uc3RydWN0b3IiPT1kJiYoY3x8IXpFZS5jYWxs''@;'; put 'put ''KGwsZCkpfHxhLnB1c2goZCk7cmV0dXJuIGF9LEVVPWZ1bmN0aW9uIFlFZShsKXtyZXR1cm4gZ2FlKGwpP2ZhZShsLCEwKTpaRWUobCl9O3ZhciBtYWU9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyx2YWU9bWFlJiYib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsX2FlPXZhZSYmdmFlLmV4cG9ydHM9PT1tYWU/QzMuQnVmZmVyOnZvaWQgMCxiYWU9X2FlP19hZS5hbGxvY1Vuc2FmZTp2b2lkIDA7Y29uc3QgeWFlPWZ1bmN0aW9uIHRUZSgpe3JldHVybltdfTt2YXIg''@;'; put 'put ''clRlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsd2FlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaVRlPXdhZT9mdW5jdGlvbihsKXtyZXR1cm4gbnVsbD09bD9bXToobD1PYmplY3QobCksZnVuY3Rpb24gUUVlKGwsYyl7Zm9yKHZhciBhPS0xLGQ9bnVsbD09''@;'; put 'put ''bD8wOmwubGVuZ3RoLGg9MCxmPVtdOysrYTxkOyl7dmFyIHY9bFthXTtjKHYsYSxsKSYmKGZbaCsrXT12KX1yZXR1cm4gZn0od2FlKGwpLGZ1bmN0aW9uKGMpe3JldHVybiByVGUuY2FsbChsLGMpfSkpfTp5YWU7Y29uc3QgVFU9aVRlLENhZT1mdW5jdGlvbiBhVGUobCxjKXtmb3IodmFyIGE9''@;'; put 'put ''LTEsZD1jLmxlbmd0aCxoPWwubGVuZ3RoOysrYTxkOylsW2grYV09Y1thXTtyZXR1cm4gbH0sU2FlPXBhZShPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KTt2YXIgdVRlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24obCl7Zm9yKHZhciBjPVtdO2w7KUNhZShjLFRV''@;'; put 'put ''KGwpKSxsPVNhZShsKTtyZXR1cm4gY306eWFlO2NvbnN0IE1hZT11VGUseGFlPWZ1bmN0aW9uIGZUZShsLGMsYSl7dmFyIGQ9YyhsKTtyZXR1cm4gYl8obCk/ZDpDYWUoZCxhKGwpKX0sZ1RlPWZ1bmN0aW9uIHBUZShsKXtyZXR1cm4geGFlKGwseFUsVFUpfSx2VGU9ZnVuY3Rpb24gbVRlKGwp''@;'; put 'put ''e3JldHVybiB4YWUobCxFVSxNYWUpfSxrVT1vOChDMywiRGF0YVZpZXciKSxBVT1vOChDMywiUHJvbWlzZSIpLERVPW84KEMzLCJTZXQiKSxJVT1vOChDMywiV2Vha01hcCIpO3ZhciBFYWU9IltvYmplY3QgTWFwXSIsVGFlPSJbb2JqZWN0IFByb21pc2VdIixrYWU9IltvYmplY3QgU2V0XSIs''@;'; put 'put ''QWFlPSJbb2JqZWN0IFdlYWtNYXBdIixEYWU9IltvYmplY3QgRGF0YVZpZXddIixTVGU9aTgoa1UpLE1UZT1pOCgkUykseFRlPWk4KEFVKSxFVGU9aTgoRFUpLFRUZT1pOChJVSksczg9cF87KGtVJiZzOChuZXcga1UobmV3IEFycmF5QnVmZmVyKDEpKSkhPURhZXx8JFMmJnM4KG5ldyAkUykh''@;'; put 'put ''PUVhZXx8QVUmJnM4KEFVLnJlc29sdmUoKSkhPVRhZXx8RFUmJnM4KG5ldyBEVSkhPWthZXx8SVUmJnM4KG5ldyBJVSkhPUFhZSkmJihzOD1mdW5jdGlvbihsKXt2YXIgYz1wXyhsKSxhPSJbb2JqZWN0IE9iamVjdF0iPT1jP2wuY29uc3RydWN0b3I6dm9pZCAwLGQ9YT9pOChhKToiIjtpZihk''@;'; put 'put ''KXN3aXRjaChkKXtjYXNlIFNUZTpyZXR1cm4gRGFlO2Nhc2UgTVRlOnJldHVybiBFYWU7Y2FzZSB4VGU6cmV0dXJuIFRhZTtjYXNlIEVUZTpyZXR1cm4ga2FlO2Nhc2UgVFRlOnJldHVybiBBYWV9cmV0dXJuIGN9KTtjb25zdCBSVT1zODt2YXIgQVRlPU9iamVjdC5wcm90b3R5cGUuaGFzT3du''@;'; put 'put ''UHJvcGVydHk7Y29uc3QgSWFlPUMzLlVpbnQ4QXJyYXksTFU9ZnVuY3Rpb24gTFRlKGwpe3ZhciBjPW5ldyBsLmNvbnN0cnVjdG9yKGwuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBJYWUoYykuc2V0KG5ldyBJYWUobCkpLGN9O3ZhciBGVGU9L1x3KiQvO3ZhciBSYWU9cG0/cG0ucHJvdG90eXBl''@;'; put 'put ''OnZvaWQgMCxMYWU9UmFlP1JhZS52YWx1ZU9mOnZvaWQgMDtjb25zdCBja2U9ZnVuY3Rpb24gbGtlKGwsYyxhKXt2YXIgZD1sLmNvbnN0cnVjdG9yO3N3aXRjaChjKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gTFUobCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltv''@;'; put 'put ''YmplY3QgRGF0ZV0iOnJldHVybiBuZXcgZCgrbCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuIGZ1bmN0aW9uIE9UZShsLGMpe3ZhciBhPWM/TFUobC5idWZmZXIpOmwuYnVmZmVyO3JldHVybiBuZXcgbC5jb25zdHJ1Y3RvcihhLGwuYnl0ZU9mZnNldCxsLmJ5dGVMZW5ndGgpfShs''@;'; put 'put ''LGEpO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNh''@;'; put 'put ''c2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiBmdW5jdGlvbiBqVGUobCxjKXt2YXIgYT1jP0xVKGwuYnVmZmVyKTpsLmJ1ZmZlcjtyZXR1cm4gbmV3IGwuY29uc3RydWN0b3Io''@;'; put 'put ''YSxsLmJ5dGVPZmZzZXQsbC5sZW5ndGgpfShsLGEpO2Nhc2UiW29iamVjdCBNYXBdIjpjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBkO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBkKGwpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpy''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gTlRlKGwpe3ZhciBjPW5ldyBsLmNvbnN0cnVjdG9yKGwuc291cmNlLEZUZS5leGVjKGwpKTtyZXR1cm4gYy5sYXN0SW5kZXg9bC5sYXN0SW5kZXgsY30obCk7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOnJldHVybiBmdW5jdGlvbiBWVGUobCl7cmV0dXJuIExhZT9PYmpl''@;'; put 'put ''Y3QoTGFlLmNhbGwobCkpOnt9fShsKX19O3ZhciBPYWU9T2JqZWN0LmNyZWF0ZSx1a2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7fXJldHVybiBmdW5jdGlvbihjKXtpZighR1MoYykpcmV0dXJue307aWYoT2FlKXJldHVybiBPYWUoYyk7bC5wcm90b3R5cGU9Yzt2YXIgYT1uZXcgbDtyZXR1''@;'; put 'put ''cm4gbC5wcm90b3R5cGU9dm9pZCAwLGF9fSgpO2NvbnN0IGRrZT11a2U7dmFyIFBhZT15XyYmeV8uaXNNYXA7Y29uc3QgX2tlPVBhZT9DVShQYWUpOmZ1bmN0aW9uIGdrZShsKXtyZXR1cm4gX18obCkmJiJbb2JqZWN0IE1hcF0iPT1SVShsKX07dmFyIEZhZT15XyYmeV8uaXNTZXQ7Y29uc3Qg''@;'; put 'put ''U2tlPUZhZT9DVShGYWUpOmZ1bmN0aW9uIHlrZShsKXtyZXR1cm4gX18obCkmJiJbb2JqZWN0IFNldF0iPT1SVShsKX07dmFyIE5hZT0iW29iamVjdCBBcmd1bWVudHNdIixIYWU9IltvYmplY3QgRnVuY3Rpb25dIixWYWU9IltvYmplY3QgT2JqZWN0XSIsYmw9e307YmxbTmFlXT1ibFsiW29i''@;'; put 'put ''amVjdCBBcnJheV0iXT1ibFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1ibFsiW29iamVjdCBEYXRhVmlld10iXT1ibFsiW29iamVjdCBCb29sZWFuXSJdPWJsWyJbb2JqZWN0IERhdGVdIl09YmxbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWJsWyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1i''@;'; put 'put ''bFsiW29iamVjdCBJbnQ4QXJyYXldIl09YmxbIltvYmplY3QgSW50MTZBcnJheV0iXT1ibFsiW29iamVjdCBJbnQzMkFycmF5XSJdPWJsWyJbb2JqZWN0IE1hcF0iXT1ibFsiW29iamVjdCBOdW1iZXJdIl09YmxbVmFlXT1ibFsiW29iamVjdCBSZWdFeHBdIl09YmxbIltvYmplY3QgU2V0XSJd''@;'; put 'put ''PWJsWyJbb2JqZWN0IFN0cmluZ10iXT1ibFsiW29iamVjdCBTeW1ib2xdIl09YmxbIltvYmplY3QgVWludDhBcnJheV0iXT1ibFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1ibFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1ibFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxibFsi''@;'; put 'put ''W29iamVjdCBFcnJvcl0iXT1ibFtIYWVdPWJsWyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7Y29uc3QgS2tlPWZ1bmN0aW9uIExJKGwsYyxhLGQsaCxmKXt2YXIgdixTPTEmYyxWPTImYyxRPTQmYztpZihhJiYodj1oP2EobCxkLGgsZik6YShsKSksdm9pZCAwIT09dilyZXR1cm4gdjtpZighR1Mo''@;'; put 'put ''bCkpcmV0dXJuIGw7dmFyIGRlPWJfKGwpO2lmKGRlKXtpZih2PWZ1bmN0aW9uIERUZShsKXt2YXIgYz1sLmxlbmd0aCxhPW5ldyBsLmNvbnN0cnVjdG9yKGMpO3JldHVybiBjJiYic3RyaW5nIj09dHlwZW9mIGxbMF0mJkFUZS5jYWxsKGwsImluZGV4IikmJihhLmluZGV4PWwuaW5kZXgsYS5p''@;'; put 'put ''bnB1dD1sLmlucHV0KSxhfShsKSwhUylyZXR1cm4gZnVuY3Rpb24gWEVlKGwsYyl7dmFyIGE9LTEsZD1sLmxlbmd0aDtmb3IoY3x8KGM9QXJyYXkoZCkpOysrYTxkOyljW2FdPWxbYV07cmV0dXJuIGN9KGwsdil9ZWxzZXt2YXIgcGU9UlUobCksQ2U9cGU9PUhhZXx8IltvYmplY3QgR2VuZXJh''@;'; put 'put ''dG9yRnVuY3Rpb25dIj09cGU7aWYoY2FlKGwpKXJldHVybiBmdW5jdGlvbiBxRWUobCxjKXtpZihjKXJldHVybiBsLnNsaWNlKCk7dmFyIGE9bC5sZW5ndGgsZD1iYWU/YmFlKGEpOm5ldyBsLmNvbnN0cnVjdG9yKGEpO3JldHVybiBsLmNvcHkoZCksZH0obCxTKTtpZihwZT09VmFlfHxwZT09''@;'; put 'put ''TmFlfHxDZSYmIWgpe2lmKHY9Vnx8Q2U/e306ZnVuY3Rpb24gaGtlKGwpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBsLmNvbnN0cnVjdG9yfHxNVShsKT97fTpka2UoU2FlKGwpKX0obCksIVMpcmV0dXJuIFY/ZnVuY3Rpb24gZFRlKGwsYyl7cmV0dXJuIFJJKGwsTWFlKGwpLGMpfShsLGZ1''@;'; put 'put ''bmN0aW9uIFdFZShsLGMpe3JldHVybiBsJiZSSShjLEVVKGMpLGwpfSh2LGwpKTpmdW5jdGlvbiBvVGUobCxjKXtyZXR1cm4gUkkobCxUVShsKSxjKX0obCxmdW5jdGlvbiBORWUobCxjKXtyZXR1cm4gbCYmUkkoYyx4VShjKSxsKX0odixsKSl9ZWxzZXtpZighYmxbcGVdKXJldHVybiBoP2w6''@;'; put 'put ''e307dj1ja2UobCxwZSxTKX19Znx8KGY9bmV3IG14ZSk7dmFyIE9lPWYuZ2V0KGwpO2lmKE9lKXJldHVybiBPZTtmLnNldChsLHYpLFNrZShsKT9sLmZvckVhY2goZnVuY3Rpb24oZHQpe3YuYWRkKExJKGR0LGMsYSxkdCxsLGYpKX0pOl9rZShsKSYmbC5mb3JFYWNoKGZ1bmN0aW9uKGR0LGh0''@;'; put 'put ''KXt2LnNldChodCxMSShkdCxjLGEsaHQsbCxmKSl9KTt2YXIgZXQ9ZGU/dm9pZCAwOihRP1Y/dlRlOmdUZTpWP0VVOnhVKShsKTtyZXR1cm4gZnVuY3Rpb24gdnhlKGwsYyl7Zm9yKHZhciBhPS0xLGQ9bnVsbD09bD8wOmwubGVuZ3RoOysrYTxkJiYhMSE9PWMobFthXSxhLGwpOyk7fShldHx8''@;'; put 'put ''bCxmdW5jdGlvbihkdCxodCl7ZXQmJihkdD1sW2h0PWR0XSkscmFlKHYsaHQsTEkoZHQsYyxhLGh0LGwsZikpfSksdn0sT0k9ZnVuY3Rpb24gUWtlKGwpe3JldHVybiBLa2UobCw1KX07dmFyIGVBZT1SKDc4ODU1KTtsZXQgZXU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2hv''@;'; put 'put ''d25MaWJyYXJpZXM9NTAsdGhpcy5sb2FkTW9yZUNvdW50PTUwLHRoaXMuaXNNaWNyb3NvZnQ9ITEsdGhpcy5pc01pY3Jvc29mdD10aGlzLmlzSUVvckVER0UoKSxjb25zb2xlLmxvZygiSXMgSUUgb3IgRWRnZT8iLHRoaXMuaXNNaWNyb3NvZnQpfWNvbnZlcnRKc0RhdGVUb1Nhc0RhdGUoYSxk''@;'; put 'put ''PSJkYXlzIil7bGV0IGgsZj0wO2g9YSBpbnN0YW5jZW9mIERhdGU/YTpuZXcgRGF0ZShhKSxmPW5ldyBEYXRlKERhdGUuVVRDKGguZ2V0RnVsbFllYXIoKSxoLmdldE1vbnRoKCksaC5nZXREYXRlKCksaC5nZXRIb3VycygpLGguZ2V0TWludXRlcygpLGguZ2V0U2Vjb25kcygpKSkudmFsdWVP''@;'; put 'put ''ZigpO2NvbnN0IFY9ZiszMTU2MTkyZTU7c3dpdGNoKGQpe2Nhc2UiZGF5cyI6e2xldCBRPVYvODY0ZTU7cmV0dXJuIFE9TWF0aC5hYnMoUSksUT1NYXRoLmZsb29yKFEpLFF9Y2FzZSJzZWNvbmRzIjpyZXR1cm4gVi8xZTN9cmV0dXJuIDB9Y29udmVydFNhc0RheXNUb0pzRGF0ZShhLGQ9ImRh''@;'; put 'put ''eXMiKXtpZigibnVtYmVyIiE9dHlwZW9mIGEmJihhPXBhcnNlRmxvYXQoYSkpLCJzZWNvbmRzIj09PWQpe2xldCBTPTFlMyphLTMxNTYxOTJlNTtyZXR1cm4gUys9NjAqbmV3IERhdGUoUykuZ2V0VGltZXpvbmVPZmZzZXQoKSoxZTMsbmV3IERhdGUoUyl9cmV0dXJuIG5ldyBEYXRlKDg2NGU1''@;'; put 'put ''KmEtMzE1NjE5MmU1KX10cmVlT25GaWx0ZXIoYSxkKXtsZXQgaD1hLnNlYXJjaFN0cmluZz9hLnNlYXJjaFN0cmluZzoiIixmPWQuc3BsaXQoIi4iKVswXSx2PWQuc3BsaXQoIi4iKVsxXSxTPWYrIkFsbCI7YVtmXSYmKGFbU118fChhW1NdPXRoaXMuZGVlcENsb25lKGFbZl0pKSxhW2ZdPXRo''@;'; put 'put ''aXMuZGVlcENsb25lKGFbU10pLGgubGVuZ3RoPjAmJihhW2ZdPWFbZl0uZmlsdGVyKHY/Vj0+Vlt2XS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGgudG9Mb3dlckNhc2UoKSk6Vj0+Vi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGgudG9Mb3dlckNhc2UoKSkpKSl9bGlicmFyeU9uRmlsdGVyKGEs''@;'; put 'put ''ZCxoKXtkLmxlbmd0aD4wP2EuZm9yRWFjaChmPT57ZltoXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGQudG9Mb3dlckNhc2UoKSk/KGYuaGlkZGVuPSExLGYuaW5Gb3JlZ3JvdW5kPSEwKTooZi5oaWRkZW49ITAsZi5pbkZvcmVncm91bmQ9ITEpfSk6KHRoaXMucmVzZXRBcnJheUZpbHRlcihh''@;'; put 'put ''KSx0aGlzLmRpc3BsYXlMaWJyYXJpZXMoYSkpfWRpc3BsYXlMaWJyYXJpZXMoYSxkKXtkP3RoaXMuc2hvd25MaWJyYXJpZXMrPXRoaXMubG9hZE1vcmVDb3VudDoodGhpcy5zaG93bkxpYnJhcmllcz01MCx0aGlzLnJlc2V0TGlicmFyeUZvcmVncm91bmQoYSkpO2ZvcihsZXQgaD0wO2g8YS5s''@;'; put 'put ''ZW5ndGgmJmghPT10aGlzLnNob3duTGlicmFyaWVzO2grKylhW2hdLmluRm9yZWdyb3VuZD0hMH1yZXNldExpYnJhcnlGb3JlZ3JvdW5kKGEpe2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWFbZF0uaW5Gb3JlZ3JvdW5kPSExfW1ldGFPYmplY3RPbkZpbHRlcihhLGQsaCl7ZC5sZW5ndGg+''@;'; put 'put ''MD8odGhpcy5yZXNldEFycmF5RmlsdGVyKGEpLGEuZm9yRWFjaChmPT57ZltoXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGQudG9Mb3dlckNhc2UoKSl8fChmLmhpZGRlbj0hMCl9KSk6dGhpcy5yZXNldEFycmF5RmlsdGVyKGEpfXJlc2V0QXJyYXlGaWx0ZXIoYSl7YS5mb3JFYWNoKGQ9Pntk''@;'; put 'put ''LmhpZGRlbj0hMSxkLmluRm9yZWdyb3VuZCYmZGVsZXRlIGQuaW5Gb3JlZ3JvdW5kfSl9aXNJRW9yRURHRSgpe3ZhciBhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybiBhLmluZGV4T2YoIk1TSUUgIik+MHx8KGEuaW5kZXhPZigiVHJpZGVudC8iKT4wPyhhLmluZGV4T2YoInJ2''@;'; put 'put ''OiIpLCEwKTphLmluZGV4T2YoIkVkZ2UvIik+MCl9Y29udmVydE9iamVjdHNUb0FycmF5KGEsZD0hMSl7cmV0dXJuIGQmJihhPXRoaXMuZGVlcENsb25lKGEpKSxhLm1hcChoPT5PYmplY3Qua2V5cyhoKS5tYXAoZj0+aFtmXSkpfWFkZExlYWRpbmdaZXJvKGEpe3JldHVybiJzdHJpbmciIT10''@;'; put 'put ''eXBlb2YgYSYmKGE9YS50b1N0cmluZygpKSxhLmxlbmd0aDwyPyIwIithOmF9ZGVsZXRlS2V5c0FuZEhhc2goYSxkLGg9ITApe2NvbnN0IGY9aD90aGlzLmRlZXBDbG9uZShhKTphO2ZvcihsZXQgdiBvZiBkKWRlbGV0ZSBmW3ZdO3JldHVybiBlQWUoSlNPTi5zdHJpbmdpZnkoZikpLnRvU3Ry''@;'; put 'put ''aW5nKCl9ZG93bmxvYWRUZXh0RmlsZShhLGQpe2NvbnN0IGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2guc2V0QXR0cmlidXRlKCJocmVmIiwiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQoZCkpLGguc2V0QXR0cmlidXRlKCJkb3dubG9h''@;'; put 'put ''ZCIsYSsiLnR4dCIpLGguc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoKSxoLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChoKX1jb252ZXJ0QXJyYXlWYWx1ZXMoYSxkKXtpZihhLmxlbmd0aDwxKXJldHVybltdO3N3aXRjaChkKXtjYXNl''@;'; put 'put ''Im51bWJlciI6cmV0dXJuIGEubWFwKGg9PjEqaCk7Y2FzZSJzdHJpbmciOnJldHVybiBhLnRvU3RyaW5nKCkuc3BsaXQoIiwiKX19ZGVib3VuY2VDYWxsKGEsZCl7Y2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KSx0aGlzLmRlYm91bmNlVGltZW91dD1zZXRUaW1lb3V0KGQsYSl9''@;'; put 'put ''ZGVlcENsb25lKGEpe3JldHVybiBPSShhKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSko''@;'; put 'put ''KSxBMD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTKXt0aGlzLmxvZ2dlclNlcnZpY2U9YSx0aGlzLmFwcFN0b3JlU2VydmljZT1kLHRoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5zYXNTZXJ2aWNlPWYsdGhpcy5oZWxwZXJTZXJ2aWNlPXYsdGhpcy5yb3V0ZXI9Uyx0aGlz''@;'; put 'put ''LnVzZXJDb3VudExpbWl0YXRpb249ITEsdGhpcy5saWNlbnNlS2V5RGF0YT1udWxsLHRoaXMuX2xpY2VuY2VTdGF0ZT1oVSx0aGlzLmFsbEZlYXR1cmVzT249e3ZpZXdlcl9yb3dzX2FsbG93ZWQ6MS8wLGVkaXRvcl9yb3dzX2FsbG93ZWQ6MS8wLHN0YWdlX3Jvd3NfYWxsb3dlZDoxLzAsaGlz''@;'; put 'put ''dG9yeV9yb3dzX2FsbG93ZWQ6MS8wLHN1Ym1pdF9yb3dzX2xpbWl0OjEvMCx0YWJsZXNfaW5fbGlicmFyeV9saW1pdDoxLzAsdmlld2JveF9saW1pdDoxLzAsbGluZWFnZV9kYWlseV9saW1pdDoxLzAsdmlld2JveDohMCxmaWxlVXBsb2FkOiEwLGVkaXRSZWNvcmQ6ITAsYWRkUmVjb3JkOiEw''@;'; put 'put ''fSx0aGlzLmZyZWVUaWVyTGljZW5jZURhdGE9e2RlbW86ITAsaG90X2xpY2Vuc2Vfa2V5OnRoaXMuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCk/LmhvdExpY2VuY2VLZXksdXNlcnNfYWxsb3dlZDp0aGlzLl9saWNlbmNlU3RhdGUudXNlcnNfYWxsb3dlZHx8MSx2YWxp''@;'; put 'put ''ZF91bnRpbDphcygpLmFkZCgxLCJ5ZWFyIikuZm9ybWF0KCJZWVlZLU1NLUREIiksc2l0ZV9pZDoiIixzaXRlX2lkX211bHRpcGxlOltdfSx0aGlzLmlzQXBwQWN0aXZhdGVkPW5ldyBBcihudWxsKSx0aGlzLmlzQXBwT3ZlckNhcGFjaXR5PW5ldyBBcighMSksdGhpcy5jdXJyZW50VXNlckNh''@;'; put 'put ''blJlZ2lzdGVyPW5ldyBBcighMSksdGhpcy5hcHBMb2NrZWQ9bmV3IEFyKCExKSx0aGlzLmxpY2Vuc2VFeHBpcmVzSW5EYXlzPW5ldyBBcihudWxsKSx0aGlzLmlzQXBwRnJlZVRpZXI9bmV3IEFyKCExKSx0aGlzLmxpY2VuY2VQcm9ibGVtPW5ldyBBcihudWxsKSx0aGlzLmhvdF9saWNlbnNl''@;'; put 'put ''X2tleT1uZXcgQXIodm9pZCAwKSx0aGlzLmxpY2VuY2VTdGF0ZT1uZXcgQXIodGhpcy5fbGljZW5jZVN0YXRlKSx0aGlzLnNhc1NlcnZpY2UuaW5jb3JyZWN0U2l0ZUlkRW1pdHRlci5zdWJzY3JpYmUoVj0+e2lmKG51bGwhPT10aGlzLmlzQXBwQWN0aXZhdGVkLnZhbHVlJiYhdGhpcy5pc0Fw''@;'; put 'put ''cEZyZWVUaWVyLnZhbHVlKXtjb25zdCBRPWAvbGljZW5zaW5nL2tleT9lcnJvcj1taXNzbWF0Y2gmbWlzc21hdGNoSWQ9JHtWfSZmb3JjZT10cnVlYDt0aGlzLmxpY2VuY2VQcm9ibGVtLm5leHQoUSksdGhpcy5kZWFjdGl2YXRlQXBwKFEpfX0pfWFjdGl2YXRpb24oYSl7dmFyIGQ9dGhpczty''@;'; put 'put ''ZXR1cm4gWShmdW5jdGlvbiooKXtkLmZyZWVUaWVyTGljZW5jZURhdGEuaG90X2xpY2Vuc2Vfa2V5PWQuYXBwU3RvcmVTZXJ2aWNlLmdldERjQWRhcHRlclNldHRpbmdzKCk/LmhvdExpY2VuY2VLZXkseWllbGQgZC5zZXRTdGFydHVwc2VydmljZVJ1bGVzKGEpLHlpZWxkIGQubGljZW5zaW5n''@;'; put 'put ''KGEuZ2xvYnZhcnMsYS5TWVNTSVRFKX0pKCl9c2V0U3RhcnR1cHNlcnZpY2VSdWxlcyhhKXt0aGlzLl9saWNlbmNlU3RhdGUuZWRpdFJlY29yZD0iWUVTIiE9PWEuZ2xvYnZhcnNbMF0uRENfUkVTVFJJQ1RfRURJVFJFQ09SRH1saWNlbnNpbmcoYSxkKXt2YXIgaD10aGlzO3JldHVybiBZKGZ1''@;'; put 'put ''bmN0aW9uKigpe2lmKCFhfHwhYVswXSl7Y29uc3Qgdj0nRXJyb3IgZ2V0dGluZyAiR2xvYnZhcnMiIGZyb20gc3RhcnR1cHNlcnZpY2UgcmVzcG9uc2UuJztyZXR1cm4gY29uc29sZS5lcnJvcih2KSxoLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQgaC5yb3V0ZXIubmF2aWdhdGVCeVVy''@;'; put 'put ''bChgL2xpY2Vuc2luZy9rZXk/ZXJyb3I9aW52YWxpZCZkZXRhaWxzPSR7YnRvYSh2KX1gKX1sZXQgZj1hWzBdO3JldHVybiB2b2lkIDA9PT1mLkxJQ0VOQ0VfS0VZfHx2b2lkIDA9PT1mLkFDVElWQVRJT05fS0VZfHxudWxsPT1mLlJFR0lTVEVSQ09VTlR8fG51bGw9PWYuSVNSRUdJU1RFUkVE''@;'; put 'put ''Pyhjb25zb2xlLmVycm9yKCJTb21lIG9mIGdsb2J2YXJzIGFyZSBub3QgcHJlc2VudCIpLGguaXNBcHBBY3RpdmF0ZWQubmV4dCghMSksdm9pZCBoLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsIlNvbWUgb2YgdGhlIGdsb2J2YXJzIGFyZSBub3QgcHJlc2VudCBpbiB0aGUg''@;'; put 'put ''c3RhcnR1cHNlcnZpY2UiKSk6Zi5MSUNFTkNFX0tFWSYmZi5BQ1RJVkFUSU9OX0tFWT8oaC5saWNlbmNlS2V5PWYuTElDRU5DRV9LRVksaC5hY3RpdmF0aW9uS2V5PWYuQUNUSVZBVElPTl9LRVksdm9pZCh5aWVsZCBoLmRlY3J5cHRMaWNlbnNlS2V5KGYuTElDRU5DRV9LRVksZi5BQ1RJVkFU''@;'; put 'put ''SU9OX0tFWSkudGhlbihmdW5jdGlvbigpe3ZhciB2PVkoZnVuY3Rpb24qKFMpe3lpZWxkIGguYXBwbGljYXRpb25BY3RpdmF0aW9uKFMsZixkKX0pO3JldHVybiBmdW5jdGlvbihTKXtyZXR1cm4gdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGZ1bmN0aW9uKCl7dmFyIHY9WShmdW5jdGlv''@;'; put 'put ''biooUyl7Y29uc3QgVj1gRXJyb3IgZGVjcnlwdGluZyBsaWNlbnNlIGtleS4gJHtTfWA7Y29uc29sZS5lcnJvcihWKTtjb25zdCBRPWAvbGljZW5zaW5nL2tleT9lcnJvcj1pbnZhbGlkJmRldGFpbHM9JHtidG9hKFYpfSZmb3JjZT10cnVlYDtoLmxpY2VuY2VQcm9ibGVtLm5leHQoUSksaC5y''@;'; put 'put ''b3V0ZXIubmF2aWdhdGVCeVVybChRKSxzZXRUaW1lb3V0KCgpPT5oLmFwcGxpY2F0aW9uQWN0aXZhdGlvbihoLmZyZWVUaWVyTGljZW5jZURhdGEsZixkLCEwKSl9KTtyZXR1cm4gZnVuY3Rpb24oUyl7cmV0dXJuIHYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSkpKTp5aWVsZCBoLmFwcGxp''@;'; put 'put ''Y2F0aW9uQWN0aXZhdGlvbihoLmZyZWVUaWVyTGljZW5jZURhdGEsZixkKX0pKCl9YXBwbGljYXRpb25BY3RpdmF0aW9uKGEsZCxoLGYpe2Z8fChmPSExKSx0aGlzLnNldFNpdGVJZChhKSwhYS5kZW1vJiZkJiZoJiZ0aGlzLmhhbmRsZVNpdGVJZE1pc3NtYXRjaChhLGQsaCxmKTtsZXQgdj12''@;'; put 'put ''b2lkIDAhPT1hLmhvdF9saWNlbnNlX2tleT9hLmhvdF9saWNlbnNlX2tleTp0aGlzLmhvdF9saWNlbnNlX2tleS52YWx1ZTt2fHwodj10aGlzLmFwcFN0b3JlU2VydmljZS5nZXREY0FkYXB0ZXJTZXR0aW5ncygpPy5ob3RMaWNlbmNlS2V5KSx0aGlzLmhvdF9saWNlbnNlX2tleS5uZXh0KHYp''@;'; put 'put ''LHRoaXMudXNlckNvdW50TGltaXRhdGlvbiYmdGhpcy5oYW5kbGVVc2Vyc0FsbG93ZWQoYSksdGhpcy5saWNlbnNlS2V5RGF0YT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGEpLHdpbmRvdy5hcHBpbmZvKCk7Y29uc3R7ZXhwaXJ5X2RhdGU6UyxkYXlzVG9FeHBpcnk6Vn09dGhpcy5j''@;'; put 'put ''YWxjdWxhdGVFeHBpcnkoYSk7aWYod2luZG93LmxpY2Vuc2VFeHBpcmVzSW49Vix0aGlzLmxpY2Vuc2VFeHBpcmVzSW5EYXlzLm5leHQoViksVjw9MClyZXR1cm4gY29uc29sZS5lcnJvcigiTGljZW5zZSBrZXkgaGFzIGV4cGlyZWQiKSx2b2lkKGQmJmgmJnRoaXMuaGFuZGxlRXhwaXJ5KFMs''@;'; put 'put ''ZCxoLGYpKTt0aGlzLmlzQXBwRnJlZVRpZXIubmV4dCghIWEuZGVtbyksZCYmdGhpcy5oYW5kbGVVc2VyUmVnaXN0cmF0aW9uKGEsZCxmKSx0aGlzLmRlY29kZUxpY2VuY2VGZWF0dXJlcyhhKSx0aGlzLmxpY2VuY2VTdGF0ZS5uZXh0KHRoaXMuX2xpY2VuY2VTdGF0ZSl9ZGVjb2RlTGljZW5j''@;'; put 'put ''ZUZlYXR1cmVzKGEpe2lmKCFhLmZlYXR1cmVzKXtpZihhLmRlbW8pcmV0dXJuO3JldHVybiB2b2lkKHRoaXMuX2xpY2VuY2VTdGF0ZT10aGlzLmFsbEZlYXR1cmVzT24pfWNvbnN0IGQ9YS5mZWF0dXJlcy5zcGxpdCgiLCIpO3RoaXMuX2xpY2VuY2VTdGF0ZT17Li4udGhpcy5fbGljZW5jZVN0''@;'; put 'put ''YXRlLHZpZXdlcl9yb3dzX2FsbG93ZWQ6dGhpcy5wYXJzZUZlYXR1cmVWYWx1ZShkW2JkLnZpZXdlcl9yb3dzX2FsbG93ZWRdKSxlZGl0b3Jfcm93c19hbGxvd2VkOnRoaXMucGFyc2VGZWF0dXJlVmFsdWUoZFtiZC5lZGl0b3Jfcm93c19hbGxvd2VkXSksc3RhZ2Vfcm93c19hbGxvd2VkOnRo''@;'; put 'put ''aXMucGFyc2VGZWF0dXJlVmFsdWUoZFtiZC5zdGFnZV9yb3dzX2FsbG93ZWRdKSxoaXN0b3J5X3Jvd3NfYWxsb3dlZDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGRbYmQuaGlzdG9yeV9yb3dzX2FsbG93ZWRdKSxzdWJtaXRfcm93c19saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGRbYmQu''@;'; put 'put ''c3VibWl0X3Jvd3NfbGltaXRdKSx0YWJsZXNfaW5fbGlicmFyeV9saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGRbYmQudGFibGVzX2luX2xpYnJhcnlfbGltaXRdKSx2aWV3Ym94X2xpbWl0OnRoaXMucGFyc2VGZWF0dXJlVmFsdWUoZFtiZC52aWV3Ym94X2xpbWl0XSksbGluZWFnZV9k''@;'; put 'put ''YWlseV9saW1pdDp0aGlzLnBhcnNlRmVhdHVyZVZhbHVlKGRbYmQubGluZWFnZV9kYWlseV9saW1pdF0pLHZpZXdib3g6dGhpcy5wYXJzZUZlYXR1cmVUb2dnbGUoZFtiZC52aWV3Ym94XSksZmlsZVVwbG9hZDp0aGlzLnBhcnNlRmVhdHVyZVRvZ2dsZShkW2JkLmZpbGVVcGxvYWRdKSxlZGl0''@;'; put 'put ''UmVjb3JkOnRoaXMucGFyc2VGZWF0dXJlVG9nZ2xlKGRbYmQuZWRpdFJlY29yZF0pLGFkZFJlY29yZDp0aGlzLnBhcnNlRmVhdHVyZVRvZ2dsZShkW2JkLmFkZFJlY29yZF0pfSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKCJMaWNlbmNlIHN0YXRlOiIsdGhpcy5fbGljZW5jZVN0YXRlKX1wYXJz''@;'; put 'put ''ZUZlYXR1cmVWYWx1ZShhKXtyZXR1cm4iLSI9PT1hPzEvMDpwYXJzZUludChhKX1wYXJzZUZlYXR1cmVUb2dnbGUoYSl7cmV0dXJuISFwYXJzZUludChhKX1kZWNyeXB0TGljZW5zZUtleShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKCl7dmFyIGY9WShmdW5j''@;'; put 'put ''dGlvbioodixTKXtpZighd2luZG93LmNyeXB0b3x8IXdpbmRvdy5jcnlwdG8uc3VidGxlKXRyeXtsZXQgQ2U9YXRvYihhLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikpO3YoSlNPTi5wYXJzZShDZSkpfWNhdGNoKENlKXtTKCJFcnJvciBwYXJzaW5nIGh0dHAgbGljZW5zZSBrZXkgZGF0''@;'; put 'put ''YS4gIitDZSl9bGV0IFEsVj15aWVsZCBoLmJhc2U2NFRvQXJyYXlCdWZmZXIoYSkuY2F0Y2goQ2U9PntTKENlKX0pO2NvbnN0IGRlPXlpZWxkIGguYmFzZTY0VG9BcnJheUJ1ZmZlcihkKS5jYXRjaChDZT0+e1MoQ2UpfSk7aWYoIWRlKXJldHVybiB2b2lkIFMoIk1pc3NpbmcgYWN0aXZhdGlv''@;'; put 'put ''biBrZXkiKTtsZXQgcGU7UT1kZTt0cnl7cGU9eWllbGQgd2luZG93LmNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJwa2NzOCIsUSx7bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0yNTYifSwhMCxbImRlY3J5cHQiXSl9Y2F0Y2goQ2Upe1MoIlVuYWJsZSB0byBpbXBvcnQgZGVjcnlwdGlvbiBr''@;'; put 'put ''ZXk6ICIrQ2UpfWlmKHBlKWlmKFYpdHJ5e3dpbmRvdy5jcnlwdG8uc3VidGxlLmRlY3J5cHQoe25hbWU6IlJTQS1PQUVQIixoYXNoOntuYW1lOiJTSEEtMjU2In19LHBlLFYpLnRoZW4oQ2U9PntsZXQgT2U9KG5ldyBxQ2UuVGV4dERlY29kZXIpLmRlY29kZShDZSk7dHJ5e3YoSlNPTi5wYXJz''@;'; put 'put ''ZShPZSkpfWNhdGNoKFllKXtTKCJFcnJvciBwYXJzaW5nIGxpY2Vuc2Uga2V5IGRhdGEuICIrWWUpfX0sQ2U9PntTKENlKX0pfWNhdGNoKENlKXtTKENlKX1lbHNlIFMoIkxpY2Vuc2Uga2V5IGJ5dGVzIG1pc3NpbmciKTtlbHNlIFMoIlVuYWJsZSB0byBpbXBvcnQgZGVjcnlwdGlvbiBrZXki''@;'; put 'put ''KX0pO3JldHVybiBmdW5jdGlvbih2LFMpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpfWdldEhvdExpY2Vuc2VLZXkoKXtyZXR1cm4gdGhpcy5ob3RfbGljZW5zZV9rZXkudmFsdWV9Z2V0TGljZW5zZUtleURhdGEoKXtyZXR1cm4gdGhpcy5saWNlbnNlS2V5RGF0YX1kZWFj''@;'; put 'put ''dGl2YXRlQXBwKGEpe3RoaXMuX2xpY2VuY2VTdGF0ZT1oVSx0aGlzLmFwcGxpY2F0aW9uQWN0aXZhdGlvbih0aGlzLmZyZWVUaWVyTGljZW5jZURhdGEpLGEmJnRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYSl9Y2hlY2tMaW5lYWdlTGltaXQoYSl7aWYodGhpcy5saWNlbmNlU3RhdGUudmFs''@;'; put 'put ''dWUubGluZWFnZV9kYWlseV9saW1pdD09PTEvMClyZXR1cm4hMTtjb25zdCBkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJsaW5lYWdlX3JlbmRlcnMiKSxoPWFzKCkudmFsdWVPZigpO2lmKCFkKXJldHVybiBhfHx0aGlzLnNldExpbmVhZ2VSZW5kZXIoaCwxKSwhMTtjb25zdCBmPXBhcnNlSW50''@;'; put 'put ''KGQuc3BsaXQoIiwiKVswXSksdj1wYXJzZUludChkLnNwbGl0KCIsIilbMV0pO3JldHVybiBhcyhmKS5pc1NhbWUoYXMoKSwiZGF5Iik/dj49dGhpcy5saWNlbmNlU3RhdGUudmFsdWUubGluZWFnZV9kYWlseV9saW1pdHx8KGF8fHRoaXMuc2V0TGluZWFnZVJlbmRlcihoLHYrMSksITEpOihh''@;'; put 'put ''fHx0aGlzLnNldExpbmVhZ2VSZW5kZXIoaCwxKSwhMSl9c2V0TGluZWFnZVJlbmRlcihhLGQpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJsaW5lYWdlX3JlbmRlcnMiLGAke2F9LCR7ZH1gKX1iYXNlNjRUb0FycmF5QnVmZmVyKGEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbigpe3ZhciBk''@;'; put 'put ''PVkoZnVuY3Rpb24qKGgsZil7aChTc2UuRChhKSl9KTtyZXR1cm4gZnVuY3Rpb24oaCxmKXtyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKX1hcnJheUJ1ZmZlclRvQmFzZTY0KGEpe3JldHVybiBuZXcgUHJvbWlzZSgoZCxoKT0+e2QoU3NlLmwoYSkpfSl9c2V0U2l0ZUlkKGEp''@;'; put 'put ''e2Euc2l0ZV9pZF9tdWx0aXBsZT90aGlzLnNhc1NlcnZpY2Uuc2V0TGljZW5zZVNpdGVJZChhLnNpdGVfaWRfbXVsdGlwbGUpOmEuc2l0ZV9pZCYmdGhpcy5zYXNTZXJ2aWNlLnNldExpY2Vuc2VTaXRlSWQoYS5zaXRlX2lkKX1oYW5kbGVTaXRlSWRNaXNzbWF0Y2goYSxkLGgsZil7bGV0IHY9''@;'; put 'put ''ITEsUz0hMTtpZigoIWEuc2l0ZV9pZHx8YS5zaXRlX2lkIT09aCkmJih2PSEwKSwoIWEuc2l0ZV9pZF9tdWx0aXBsZXx8IWEuc2l0ZV9pZF9tdWx0aXBsZS5pbmNsdWRlcyhoKSkmJihTPSEwKSx2JiZTKXJldHVybiBjb25zb2xlLmVycm9yKCJUaGUga2V5IHByb3ZpZGVkIGlzIGZvciBkaWZm''@;'; put 'put ''ZXJlbnQgb3JnYW5pemF0aW9uLiIpLHZvaWQgc2V0VGltZW91dCgoKT0+e2NvbnN0IFY9Ii9saWNlbnNpbmcva2V5P2Vycm9yPW1pc3NtYXRjaCZmb3JjZT10cnVlIjt0aGlzLmxpY2VuY2VQcm9ibGVtLm5leHQoViksdGhpcy5fbGljZW5jZVN0YXRlPWhVLHRoaXMuYXBwbGljYXRpb25BY3Rp''@;'; put 'put ''dmF0aW9uKHRoaXMuZnJlZVRpZXJMaWNlbmNlRGF0YSxkLGgsITApLGZ8fHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoVil9KX1jYWxjdWxhdGVFeHBpcnkoYSl7bGV0IGQ9YXMoYS52YWxpZF91bnRpbCwiWVlZWS1NTS1ERCIpLnN0YXJ0T2YoImRheSIpLGg9YXMoKS5zdGFydE9mKCJkYXki''@;'; put 'put ''KSxmPWQuZGlmZihoLCJkYXlzIik7cmV0dXJue2V4cGlyeV9kYXRlOmQsZGF5c1RvRXhwaXJ5OmZ9fWhhbmRsZUV4cGlyeShhLGQsaCxmKXtzZXRUaW1lb3V0KCgpPT57Y29uc3Qgdj1gL2xpY2Vuc2luZy9rZXk/Zm9yY2U9dHJ1ZSZlcnJvcj1leHBpcmVkJmRldGFpbHM9JHtidG9hKCJFeHBp''@;'; put 'put ''cnkgZGF0ZTogIithLmZvcm1hdCgiREQvTU0vWVlZWSIpKX1gO3RoaXMubGljZW5jZVByb2JsZW0ubmV4dCh2KSx0aGlzLmFwcGxpY2F0aW9uQWN0aXZhdGlvbih0aGlzLmZyZWVUaWVyTGljZW5jZURhdGEsZCxoLCEwKSxmfHx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHYpfSl9aGFuZGxl''@;'; put 'put ''VXNlcnNBbGxvd2VkKGEpe2EuZGVtbyYmdm9pZCAwIT09dGhpcy5fbGljZW5jZVN0YXRlLnVzZXJzX2FsbG93ZWQmJihhLnVzZXJzX2FsbG93ZWQ9YS51c2Vyc19hbGxvd2VkPjA/YS51c2Vyc19hbGxvd2VkOnRoaXMuX2xpY2VuY2VTdGF0ZS51c2Vyc19hbGxvd2VkKSx0aGlzLl9saWNlbmNl''@;'; put 'put ''U3RhdGUudXNlcnNfYWxsb3dlZD1hLnVzZXJzX2FsbG93ZWR9aGFuZGxlVXNlclJlZ2lzdHJhdGlvbihhLGQsaCl7aWYodGhpcy51c2VyQ291bnRMaW1pdGF0aW9uJiYoZC5SRUdJU1RFUkNPVU5UPmEudXNlcnNfYWxsb3dlZD8oY29uc29sZS53YXJuKCJBcHAgaGFzIG1vcmUgdXNlcnMgcmVn''@;'; put 'put ''aXN0ZXJlZCB0aGVuIGxpY2Vuc2VkLiIpLHRoaXMuaXNBcHBPdmVyQ2FwYWNpdHkubmV4dCghMCkpOmQuUkVHSVNURVJDT1VOVD09PWEudXNlcnNfYWxsb3dlZCYmY29uc29sZS53YXJuKCJBcHAgaGFzIGhpdCBsaW1pdCBvZiB1c2VycyByZWdpc3RlcmVkLiIpKSwxIT09ZC5JU1JFR0lTVEVS''@;'; put 'put ''RUQpcmV0dXJuIGQuUkVHSVNURVJDT1VOVDxhLnVzZXJzX2FsbG93ZWR8fCF0aGlzLnVzZXJDb3VudExpbWl0YXRpb24/KGNvbnNvbGUubG9nKCJVc2VyIGNhbiByZWdpc3RlciIpLHRoaXMuY3VycmVudFVzZXJDYW5SZWdpc3Rlci5uZXh0KCEwKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQo''@;'; put 'put ''ITEpLHZvaWQoaHx8dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy9yZWdpc3RlciIpKSk6KHRoaXMuY3VycmVudFVzZXJDYW5SZWdpc3Rlci5uZXh0KCExKSx0aGlzLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpLHZvaWQoaHx8dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgi''@;'; put 'put ''L2xpY2Vuc2luZy9saW1pdCIpKSk7dGhpcy5pc0FwcEFjdGl2YXRlZC5uZXh0KCEwKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcihPMSksY3IodDgpLGNyKERsKSxjcih2YSksY3IoZXUpLGNyKEpzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXBy''@;'; put 'put ''b3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCksUEk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLnNhc1Nl''@;'; put 'put ''cnZpY2U9aCx0aGlzLmxvZ2dlclNlcnZpY2U9Zix0aGlzLmFwcFNldHRpbmdzU2VydmljZT12LHRoaXMucm91dGVyPVMsdGhpcy5hcHBTdG9yZVNlcnZpY2U9Vix0aGlzLnN5c3NpdGU9bmV3IEFyKG51bGwpLHRoaXMuZW52aXJvbm1lbnRJbmZvPXt9LHRoaXMuc3Vic2NyaWJlKCksdGhpcy5y''@;'; put 'put ''b3V0ZXIuZXZlbnRzLnN1YnNjcmliZShkZT0+e2RlIGluc3RhbmNlb2YgYjMmJiIvZGVwbG95Ij09PWRlLnVybCYmdGhpcy5ldmVudFNlcnZpY2Uuc3RhcnR1cERhdGFMb2FkZWQoKX0pO2NvbnN0IFE9dGhpcy5hcHBTZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MudmFsdWU7US5wZXJzaXN0U2Vs''@;'; put 'put ''ZWN0ZWRUaGVtZSYmdGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlRGFya01vZGUoUS5zZWxlY3RlZFRoZW1lIT09ZF8ubGlnaHQmJlEuc2VsZWN0ZWRUaGVtZT09PWRfLmRhcmspfXNhc1NlcnZpY2VJbml0KCl7dGhpcy5zYXNTZXJ2aWNlLnNhc1NlcnZpY2VJbml0KCl9c3Vic2NyaWJlKCl7dGhp''@;'; put 'put ''cy5zYXNTZXJ2aWNlLmxvYWRTdGFydHVwU2VydmljZUVtaXR0ZXIuc3Vic2NyaWJlKCgpPT57dGhpcy5zdGFydFVwRGF0YSgpfSksdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3RTaXRlSWRFbWl0dGVyLnN1YnNjcmliZShhPT57dGhpcy5wYXRjaFN5c3NpdGUoYSl9KX1nZXRFbnZpcm9ubWVudElu''@;'; put 'put ''Zm8oKXtyZXR1cm4gdGhpcy5lbnZpcm9ubWVudEluZm99cGF0Y2hTeXNzaXRlKGEpe2xldCBkPXRoaXMuc3lzc2l0ZS5nZXRWYWx1ZSgpO2QmJihkLmluY2x1ZGVzKGEpfHwoZC5wdXNoKGEpLHRoaXMuc3lzc2l0ZS5uZXh0KGQpKSl9c3RhcnRVcERhdGEoKXt2YXIgYT10aGlzO3JldHVybiBZ''@;'; put 'put ''KGZ1bmN0aW9uKigpe2xldCBkPSExO3lpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvc3RhcnR1cHNlcnZpY2UiLG51bGwpLnRoZW4oZnVuY3Rpb24oKXt2YXIgaD1ZKGZ1bmN0aW9uKihmKXthLnN5c3NpdGUubmV4dChbZi5hZGFwdGVyUmVzcG9uc2UuU1lTU0lURV0pO2xldCB2''@;'; put 'put ''PVtdO2lmKCghZi5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnN8fGYuYWRhcHRlclJlc3BvbnNlLmdsb2J2YXJzJiYhZi5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnNbMF0pJiZ2LnB1c2goIkdsb2J2YXJzIiksZi5hZGFwdGVyUmVzcG9uc2Uuc2FzZGF0YXNldHN8fHYucHVzaCgiU2FzZGF0YXNl''@;'; put 'put ''dHMiKSxmLmFkYXB0ZXJSZXNwb25zZS5zYXNsaWJzfHx2LnB1c2goIlNhc2xpYnMiKSxmLmFkYXB0ZXJSZXNwb25zZS54bG1hcHN8fHYucHVzaCgiWExNYXBzIiksdi5sZW5ndGg+MClyZXR1cm4gZD0hMCxhLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsYCR7di5qb2luKCIs''@;'; put 'put ''ICIpfSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHN0YXJ0dXBzZXJ2aWNlYCksdm9pZCBhLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLm5leHQoITEpO2NvbnN0IFM9YS5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3MoKTthLmVudmlyb25tZW50SW5mbz17U1lTU0lU''@;'; put 'put ''RTpmLmFkYXB0ZXJSZXNwb25zZS5TWVNTSVRFLFNZU1NDUEw6Zi5hZGFwdGVyUmVzcG9uc2UuU1lTU0NQTCxTWVNUQ1BJUEhPU1ROQU1FOmYuYWRhcHRlclJlc3BvbnNlLlNZU1RDUElQSE9TVE5BTUUsU1lTVkxPTkc6Zi5hZGFwdGVyUmVzcG9uc2UuU1lTVkxPTkcsTUVNU0laRTpmLmFkYXB0''@;'; put 'put ''ZXJSZXNwb25zZS5NRU1TSVpFLFNZU1BST0NFU1NNT0RFOmYuYWRhcHRlclJlc3BvbnNlLlNZU1BST0NFU1NNT0RFLFNZU0hPU1ROQU1FOmYuYWRhcHRlclJlc3BvbnNlLlNZU0hPU1ROQU1FLFNZU1VTRVJJRDpmLmFkYXB0ZXJSZXNwb25zZS5TWVNVU0VSSUQsU1lTSE9TVElORk9MT05HOmYu''@;'; put 'put ''YWRhcHRlclJlc3BvbnNlLlNZU0hPU1RJTkZPTE9ORyxTWVNFTkNPRElORzpmLmFkYXB0ZXJSZXNwb25zZS5TWVNFTkNPRElORyxBVVRPRVhFQzpmLmFkYXB0ZXJSZXNwb25zZS5BVVRPRVhFQyxJU0FETUlOOmYuYWRhcHRlclJlc3BvbnNlLmdsb2J2YXJzWzBdLklTQURNSU4sRENfQURNSU5f''@;'; put 'put ''R1JPVVA6Zi5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnNbMF0uRENfQURNSU5fR1JPVVAsQVBQX0xPQzpTPy5hcHBMb2N9O2xldCBkZSxwZSxWPWYuYWRhcHRlclJlc3BvbnNlLnNhc2RhdGFzZXRzLFE9e307Zm9yKGxldCBldCBvZiBWKVFbZXQuTElCUkVGXXx8KFFbZXQuTElCUkVGXT1bXSks''@;'; put 'put ''UVtldC5MSUJSRUZdLnB1c2goZXQuRFNOKTtsZXQgQ2U9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShRKSksT2U9W107Zm9yKGxldCBldCBvZiBPYmplY3Qua2V5cyhDZSkpT2UucHVzaCh7TElCUkFSWVJFRjpldCx0YWJsZXM6Q2VbZXRdfSk7bGV0IFllPU9lO2RlPVEscGU9T2JqZWN0Lmtl''@;'; put 'put ''eXMoUSksdm9pZCAwIT09ZGUmJihIbi5lZGl0b3IubGlic0FuZFRhYmxlcz1kZSksSG4ueGxtYXBzPWYuYWRhcHRlclJlc3BvbnNlLnhsbWFwcy5tYXAoZXQ9Pih7aWQ6ZXRbMF0sZGVzY3JpcHRpb246ZXRbMV0sdGFyZ2V0RFM6ZXRbMl19KSksSG4uZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVz''@;'; put 'put ''PVllLEhuLmVkaXRvci5saWJyYXJpZXM9cGUsSG4uZWRpdG9yLnN0YXJ0dXBTZXQ9ITAsSG4uZGNMaWI9Zi5hZGFwdGVyUmVzcG9uc2UuZ2xvYnZhcnNbMF0uRENMSUIseWllbGQgYS5saWNlbmNlU2VydmljZS5hY3RpdmF0aW9uKGYuYWRhcHRlclJlc3BvbnNlKX0pO3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihmKXtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKS5jYXRjaChoPT57ZD0hMCxhLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJFcnJvciIsIlRoZXJlIGlzIGFuIGlzc3VlIHdpdGggc3RhcnR1cHNlcnZpY2UgcmVzcG9uc2UiKSxhLmxpY2VuY2VTZXJ2aWNlLmlzQXBw''@;'; put 'put ''QWN0aXZhdGVkLm5leHQoITEpfSksYS5sb2dnZXJTZXJ2aWNlLmxvZygiQWN0aXZhdGVkOiIsYS5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC52YWx1ZSksZHx8KGEuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksYS5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC52''@;'; put 'put ''YWx1ZT9hLnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpJiZhLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvaG9tZSIpOiFhLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiYhYS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSYmYS5yb3V0ZXIubmF2aWdhdGVCeVVy''@;'; put 'put ''bCgiL2xpY2Vuc2luZy9rZXk/ZXJyb3I9bWlzc2luZyZmb3JjZT10cnVlIikpfSkoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcihBMCksY3IoRGwpLGNyKHZhKSxjcihPMSksY3IoU0kpLGNyKEpzKSxjcih0OCkpfX1zdGF0aWN7dGhpcy5c''@;'; put 'put ''dTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpLEJhZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5fcmVuZGVyZXI9YSx0aGlzLl9lbGVtZW50UmVmPWQsdGhpcy5vbkNoYW5nZT1oPT57fSx0aGlzLm9uVG91Y2hlZD0o''@;'; put 'put ''KT0+e319c2V0UHJvcGVydHkoYSxkKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsYSxkKX1yZWdpc3Rlck9uVG91Y2hlZChhKXt0aGlzLm9uVG91Y2hlZD1hfXJlZ2lzdGVyT25DaGFuZ2UoYSl7dGhpcy5vbkNoYW5nZT1hfXNldERp''@;'; put 'put ''c2FibGVkU3RhdGUoYSl7dGhpcy5zZXRQcm9wZXJ0eSgiZGlzYWJsZWQiLGEpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGRzKSxKZShOaSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bH0pfX1yZXR1cm4gbH0pKCksYTg9''@;'; put 'put ''KCgpPT57Y2xhc3MgbCBleHRlbmRzIEJhZXtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9KCgpPT57bGV0IGE7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybihhfHwoYT1MYShsKSkpKGh8fGwpfX0pKCl9c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsZmVhdHVyZXM6W2VvXX0pfX1yZXR1''@;'; put 'put ''cm4gbH0pKCk7Y29uc3QgUzM9bmV3ICRyKCIiKSxuQWU9e3Byb3ZpZGU6UzMsdXNlRXhpc3Rpbmc6dGEoKCk9PlEwKSxtdWx0aTohMH07bGV0IFEwPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhOHt3cml0ZVZhbHVlKGEpe3RoaXMuc2V0UHJvcGVydHkoImNoZWNrZWQiLGEpfXN0YXRpY3t0aGlz''@;'; put 'put ''Llx1MDI3NWZhYz0oKCk9PntsZXQgYTtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuKGF8fChhPUxhKGwpKSkoaHx8bCl9fSkoKX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbE5hbWUiLCIi''@;'; put 'put ''XSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0KCJjaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBoLm9uQ2hhbmdlKHYu''@;'; put 'put ''dGFyZ2V0LmNoZWNrZWQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25Ub3VjaGVkKCl9KX0sZmVhdHVyZXM6W1ppKFtuQWVdKSxlb119KX19cmV0dXJuIGx9KSgpO2NvbnN0IHJBZT17cHJvdmlkZTpTMyx1c2VFeGlzdGluZzp0YSgoKT0+dWwpLG11bHRpOiEwfSxvQWU9bmV3ICRy''@;'; put 'put ''KCIiKTtsZXQgdWw9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEJhZXtjb25zdHJ1Y3RvcihhLGQsaCl7c3VwZXIoYSxkKSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9aCx0aGlzLl9jb21wb3Npbmc9ITEsbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSFm''@;'; put 'put ''dW5jdGlvbiBpQWUoKXtjb25zdCBsPW9tKCk/b20oKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdChsLnRvTG93ZXJDYXNlKCkpfSgpKX13cml0ZVZhbHVlKGEpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixhPz8iIil9X2hhbmRsZUlucHV0KGEpeyghdGhp''@;'; put 'put ''cy5fY29tcG9zaXRpb25Nb2RlfHx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJiF0aGlzLl9jb21wb3NpbmcpJiZ0aGlzLm9uQ2hhbmdlKGEpfV9jb21wb3NpdGlvblN0YXJ0KCl7dGhpcy5fY29tcG9zaW5nPSEwfV9jb21wb3NpdGlvbkVuZChhKXt0aGlzLl9jb21wb3Npbmc9ITEsdGhpcy5fY29t''@;'; put 'put ''cG9zaXRpb25Nb2RlJiZ0aGlzLm9uQ2hhbmdlKGEpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGRzKSxKZShOaSksSmUob0FlLDgpKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbImlucHV0IiwiZm9y''@;'; put 'put ''bUNvbnRyb2xOYW1lIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsImZvcm1Db250cm9sIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwibmdNb2Rl''@;'; put 'put ''bCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsIm5nTW9kZWwiLCIiXSxbIiIsIm5nRGVmYXVsdENvbnRyb2wiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MSZkJiZJdCgiaW5wdXQiLGZ1bmN0aW9uKHYpe3JldHVybiBoLl9oYW5kbGVJbnB1dCh2LnRhcmdl''@;'; put 'put ''dC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vblRvdWNoZWQoKX0pKCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbigpe3JldHVybiBoLl9jb21wb3NpdGlvblN0YXJ0KCl9KSgiY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKHYpe3JldHVybiBoLl9jb21wb3NpdGlvbkVu''@;'; put 'put ''ZCh2LnRhcmdldC52YWx1ZSl9KX0sZmVhdHVyZXM6W1ppKFtyQWVdKSxlb119KX19cmV0dXJuIGx9KSgpO2NvbnN0IGEwPW5ldyAkcigiIiksbW09bmV3ICRyKCIiKTtmdW5jdGlvbiBaYWUobCl7cmV0dXJuIGZ1bmN0aW9uIGdtKGwpe3JldHVybiBudWxsPT1sfHwoInN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBsfHxBcnJheS5pc0FycmF5KGwpKSYmMD09PWwubGVuZ3RofShsLnZhbHVlKT97cmVxdWlyZWQ6ITB9Om51bGx9ZnVuY3Rpb24gWWFlKGwpe3JldHVybiEwPT09bC52YWx1ZT9udWxsOntyZXF1aXJlZDohMH19ZnVuY3Rpb24gRkkobCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gS2FlKGwpe3Jl''@;'; put 'put ''dHVybiBudWxsIT1sfWZ1bmN0aW9uIFhhZShsKXtyZXR1cm4gbFMobCk/UWMobCk6bH1mdW5jdGlvbiBKYWUobCl7bGV0IGM9e307cmV0dXJuIGwuZm9yRWFjaChhPT57Yz1udWxsIT1hP3suLi5jLC4uLmF9OmN9KSwwPT09T2JqZWN0LmtleXMoYykubGVuZ3RoP251bGw6Y31mdW5jdGlvbiBR''@;'; put 'put ''YWUobCxjKXtyZXR1cm4gYy5tYXAoYT0+YShsKSl9ZnVuY3Rpb24gZWxlKGwpe3JldHVybiBsLm1hcChjPT5mdW5jdGlvbiBhQWUobCl7cmV0dXJuIWwudmFsaWRhdGV9KGMpP2M6YT0+Yy52YWxpZGF0ZShhKSl9ZnVuY3Rpb24gUFUobCl7cmV0dXJuIG51bGwhPWw/ZnVuY3Rpb24gdGxlKGwp''@;'; put 'put ''e2lmKCFsKXJldHVybiBudWxsO2NvbnN0IGM9bC5maWx0ZXIoS2FlKTtyZXR1cm4gMD09Yy5sZW5ndGg/bnVsbDpmdW5jdGlvbihhKXtyZXR1cm4gSmFlKFFhZShhLGMpKX19KGVsZShsKSk6bnVsbH1mdW5jdGlvbiBGVShsKXtyZXR1cm4gbnVsbCE9bD9mdW5jdGlvbiBubGUobCl7aWYoIWwp''@;'; put 'put ''cmV0dXJuIG51bGw7Y29uc3QgYz1sLmZpbHRlcihLYWUpO3JldHVybiAwPT1jLmxlbmd0aD9udWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbiB0QWUoLi4ubCl7Y29uc3QgYz1fb2UobCkse2FyZ3M6YSxrZXlzOmR9PWJvZShsKSxoPW5ldyBDbihmPT57Y29uc3R7bGVuZ3RoOnZ9PWE7''@;'; put 'put ''aWYoIXYpcmV0dXJuIHZvaWQgZi5jb21wbGV0ZSgpO2NvbnN0IFM9bmV3IEFycmF5KHYpO2xldCBWPXYsUT12O2ZvcihsZXQgZGU9MDtkZTx2O2RlKyspe2xldCBwZT0hMTtFMChhW2RlXSkuc3Vic2NyaWJlKGZpKGYsQ2U9PntwZXx8KHBlPSEwLFEtLSksU1tkZV09Q2V9LCgpPT5WLS0sdm9p''@;'; put 'put ''ZCAwLCgpPT57KCFWfHwhcGUpJiYoUXx8Zi5uZXh0KGQ/eW9lKGQsUyk6UyksZi5jb21wbGV0ZSgpKX0pKX19KTtyZXR1cm4gYz9oLnBpcGUoUHooYykpOmh9KFFhZShhLGMpLm1hcChYYWUpKS5waXBlKGJyKEphZSkpfX0oZWxlKGwpKTpudWxsfWZ1bmN0aW9uIHJsZShsLGMpe3JldHVybiBu''@;'; put 'put ''dWxsPT09bD9bY106QXJyYXkuaXNBcnJheShsKT9bLi4ubCxjXTpbbCxjXX1mdW5jdGlvbiBOVShsKXtyZXR1cm4gbD9BcnJheS5pc0FycmF5KGwpP2w6W2xdOltdfWZ1bmN0aW9uIE5JKGwsYyl7cmV0dXJuIEFycmF5LmlzQXJyYXkobCk/bC5pbmNsdWRlcyhjKTpsPT09Y31mdW5jdGlvbiBz''@;'; put 'put ''bGUobCxjKXtjb25zdCBhPU5VKGMpO3JldHVybiBOVShsKS5mb3JFYWNoKGg9PntOSShhLGgpfHxhLnB1c2goaCl9KSxhfWZ1bmN0aW9uIGFsZShsLGMpe3JldHVybiBOVShjKS5maWx0ZXIoYT0+IU5JKGwsYSkpfWNsYXNzIGxsZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9''@;'; put 'put ''W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPVtdLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlk''@;'; put 'put ''Om51bGx9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlz''@;'; put 'put ''LmNvbnRyb2wuZGlzYWJsZWQ6bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY29udHJvbD90aGlzLmNvbnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGlydHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVsbH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5z''@;'; put 'put ''dGF0dXNDaGFuZ2VzOm51bGx9Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X3NldFZhbGlkYXRvcnMoYyl7dGhpcy5fcmF3VmFsaWRhdG9ycz1jfHxbXSx0aGlzLl9jb21w''@;'; put 'put ''b3NlZFZhbGlkYXRvckZuPVBVKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfV9zZXRBc3luY1ZhbGlkYXRvcnMoYyl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPWN8fFtdLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1GVSh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0''@;'; put 'put ''b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9yZWdpc3Rlck9uRGVzdHJveShjKXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MucHVzaChjKX1f''@;'; put 'put ''aW52b2tlT25EZXN0cm95Q2FsbGJhY2tzKCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2goYz0+YygpKSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119cmVzZXQoYz12b2lkIDApe3RoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KGMpfWhhc0Vycm9yKGMsYSl7cmV0''@;'; put 'put ''dXJuISF0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5oYXNFcnJvcihjLGEpfWdldEVycm9yKGMsYSl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZ2V0RXJyb3IoYyxhKTpudWxsfX1jbGFzcyBlMSBleHRlbmRzIGxsZXtnZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiBudWxs''@;'; put 'put ''fWdldCBwYXRoKCl7cmV0dXJuIG51bGx9fWNsYXNzIHQxIGV4dGVuZHMgbGxle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLm5hbWU9bnVsbCx0aGlzLnZhbHVlQWNjZXNzb3I9bnVsbH19Y2xhc3MgY2xle2NvbnN0cnVjdG9yKGMpe3Ro''@;'; put 'put ''aXMuX2NkPWN9Z2V0IGlzVG91Y2hlZCgpe3JldHVybiEhdGhpcy5fY2Q/LmNvbnRyb2w/LnRvdWNoZWR9Z2V0IGlzVW50b3VjaGVkKCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8udW50b3VjaGVkfWdldCBpc1ByaXN0aW5lKCl7cmV0dXJuISF0aGlzLl9jZD8uY29udHJvbD8ucHJpc3Rp''@;'; put 'put ''bmV9Z2V0IGlzRGlydHkoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy5kaXJ0eX1nZXQgaXNWYWxpZCgpe3JldHVybiEhdGhpcy5fY2Q/LmNvbnRyb2w/LnZhbGlkfWdldCBpc0ludmFsaWQoKXtyZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy5pbnZhbGlkfWdldCBpc1BlbmRpbmcoKXty''@;'; put 'put ''ZXR1cm4hIXRoaXMuX2NkPy5jb250cm9sPy5wZW5kaW5nfWdldCBpc1N1Ym1pdHRlZCgpe3JldHVybiEhdGhpcy5fY2Q/LnN1Ym1pdHRlZH19bGV0IF9hPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBjbGV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUodDEsMikpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJuZ01vZGVsIiwiIl0sWyIiLCJmb3JtQ29udHJvbCIsIiJdXSxob3N0VmFyczoxNCxob3N0Qmlu''@;'; put 'put ''ZGluZ3M6ZnVuY3Rpb24oZCxoKXsyJmQmJnByKCJuZy11bnRvdWNoZWQiLGguaXNVbnRvdWNoZWQpKCJuZy10b3VjaGVkIixoLmlzVG91Y2hlZCkoIm5nLXByaXN0aW5lIixoLmlzUHJpc3RpbmUpKCJuZy1kaXJ0eSIsaC5pc0RpcnR5KSgibmctdmFsaWQiLGguaXNWYWxpZCkoIm5nLWludmFs''@;'; put 'put ''aWQiLGguaXNJbnZhbGlkKSgibmctcGVuZGluZyIsaC5pc1BlbmRpbmcpfSxmZWF0dXJlczpbZW9dfSl9fXJldHVybiBsfSkoKSxsOD0oKCk9PntjbGFzcyBsIGV4dGVuZHMgY2xle2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1''@;'; put 'put ''cm4gbmV3KGR8fGwpKEplKGUxLDEwKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl0sWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl0sWyIiLCJuZ01vZGVsR3JvdXAiLCIiXSxbIiIsImZvcm1Hcm91cCIsIiJdLFsiZm9y''@;'; put 'put ''bSIsMywibmdOb0Zvcm0iLCIiXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0VmFyczoxNixob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsyJmQmJnByKCJuZy11bnRvdWNoZWQiLGguaXNVbnRvdWNoZWQpKCJuZy10b3VjaGVkIixoLmlzVG91Y2hlZCkoIm5nLXByaXN0aW5lIixoLmlzUHJpc3Rp''@;'; put 'put ''bmUpKCJuZy1kaXJ0eSIsaC5pc0RpcnR5KSgibmctdmFsaWQiLGguaXNWYWxpZCkoIm5nLWludmFsaWQiLGguaXNJbnZhbGlkKSgibmctcGVuZGluZyIsaC5pc1BlbmRpbmcpKCJuZy1zdWJtaXR0ZWQiLGguaXNTdWJtaXR0ZWQpfSxmZWF0dXJlczpbZW9dfSl9fXJldHVybiBsfSkoKTtjb25z''@;'; put 'put ''dCBYUz0iVkFMSUQiLFZJPSJJTlZBTElEIix3Xz0iUEVORElORyIsSlM9IkRJU0FCTEVEIjtmdW5jdGlvbiBCVShsKXtyZXR1cm4oQkkobCk/bC52YWxpZGF0b3JzOmwpfHxudWxsfWZ1bmN0aW9uIGpVKGwsYyl7cmV0dXJuKEJJKGMpP2MuYXN5bmNWYWxpZGF0b3JzOmwpfHxudWxsfWZ1bmN0''@;'; put 'put ''aW9uIEJJKGwpe3JldHVybiBudWxsIT1sJiYhQXJyYXkuaXNBcnJheShsKSYmIm9iamVjdCI9PXR5cGVvZiBsfWNsYXNzIHpVe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLl9wZW5kaW5nVG91''@;'; put 'put ''Y2hlZD0hMSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX3BhcmVudD1udWxsLHRoaXMucHJpc3RpbmU9ITAsdGhpcy50b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fYXNzaWduVmFsaWRhdG9ycyhjKSx0aGlzLl9hc3NpZ25Bc3luY1ZhbGlk''@;'; put 'put ''YXRvcnMoYSl9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IoYyl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPWN9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2Vk''@;'; put 'put ''QXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNWYWxpZGF0b3IoYyl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1jfWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PVhT''@;'; put 'put ''fWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09Vkl9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PXdffWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PUpTfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09SlN9Z2V0IGRpcnR5KCl7''@;'; put 'put ''cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVudG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnMo''@;'; put 'put ''Yyl7dGhpcy5fYXNzaWduVmFsaWRhdG9ycyhjKX1zZXRBc3luY1ZhbGlkYXRvcnMoYyl7dGhpcy5fYXNzaWduQXN5bmNWYWxpZGF0b3JzKGMpfWFkZFZhbGlkYXRvcnMoYyl7dGhpcy5zZXRWYWxpZGF0b3JzKHNsZShjLHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnMo''@;'; put 'put ''Yyl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoc2xlKGMsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKSl9cmVtb3ZlVmFsaWRhdG9ycyhjKXt0aGlzLnNldFZhbGlkYXRvcnMoYWxlKGMsdGhpcy5fcmF3VmFsaWRhdG9ycykpfXJlbW92ZUFzeW5jVmFsaWRhdG9ycyhjKXt0aGlzLnNldEFzeW5j''@;'; put 'put ''VmFsaWRhdG9ycyhhbGUoYyx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IoYyl7cmV0dXJuIE5JKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsYyl9aGFzQXN5bmNWYWxpZGF0b3IoYyl7cmV0dXJuIE5JKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyxjKX1jbGVhclZhbGlkYXRv''@;'; put 'put ''cnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQoYz17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIWMub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKGMp''@;'; put 'put ''fW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKGM9PmMubWFya0FsbEFzVG91Y2hlZCgpKX1tYXJrQXNVbnRvdWNoZWQoYz17fSl7dGhpcy50b3VjaGVkPSExLHRoaXMuX3BlbmRpbmdUb3VjaGVkPSExLHRoaXMu''@;'; put 'put ''X2ZvckVhY2hDaGlsZChhPT57YS5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoYyl9bWFya0FzRGlydHkoYz17fSl7dGhpcy5wcmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiFjLm9u''@;'; put 'put ''bHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkoYyl9bWFya0FzUHJpc3RpbmUoYz17fSl7dGhpcy5wcmlzdGluZT0hMCx0aGlzLl9wZW5kaW5nRGlydHk9ITEsdGhpcy5fZm9yRWFjaENoaWxkKGE9PnthLm1hcmtBc1ByaXN0aW5lKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50''@;'; put 'put ''JiYhYy5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZShjKX1tYXJrQXNQZW5kaW5nKGM9e30pe3RoaXMuc3RhdHVzPXdfLCExIT09Yy5lbWl0RXZlbnQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0''@;'; put 'put ''aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyhjKX1kaXNhYmxlKGM9e30pe2NvbnN0IGE9dGhpcy5fcGFyZW50TWFya2VkRGlydHkoYy5vbmx5U2VsZik7dGhpcy5zdGF0dXM9SlMsdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoZD0+e2QuZGlzYWJsZSh7Li4uYyxvbmx5U2Vs''@;'; put 'put ''ZjohMH0pfSksdGhpcy5fdXBkYXRlVmFsdWUoKSwhMSE9PWMuZW1pdEV2ZW50JiYodGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cykpLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyh7Li4uYyxza2lwUHJpc3RpbmVDaGVj''@;'; put 'put ''azphfSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGQ9PmQoITApKX1lbmFibGUoYz17fSl7Y29uc3QgYT10aGlzLl9wYXJlbnRNYXJrZWREaXJ0eShjLm9ubHlTZWxmKTt0aGlzLnN0YXR1cz1YUyx0aGlzLl9mb3JFYWNoQ2hpbGQoZD0+e2QuZW5hYmxlKHsuLi5jLG9ubHlTZWxm''@;'; put 'put ''OiEwfSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDpjLmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyh7Li4uYyxza2lwUHJpc3RpbmVDaGVjazphfSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKGQ9PmQoITEpKX1f''@;'; put 'put ''dXBkYXRlQW5jZXN0b3JzKGMpe3RoaXMuX3BhcmVudCYmIWMub25seVNlbGYmJih0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjKSxjLnNraXBQcmlzdGluZUNoZWNrfHx0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVk''@;'; put 'put ''KCkpfXNldFBhcmVudChjKXt0aGlzLl9wYXJlbnQ9Y31nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoYz17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2Vs''@;'; put 'put ''RXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSwodGhpcy5zdGF0dXM9PT1YU3x8dGhpcy5zdGF0dXM9PT13XykmJnRoaXMuX3J1bkFzeW5jVmFsaWRhdG9yKGMuZW1pdEV2ZW50''@;'; put 'put ''KSksITEhPT1jLmVtaXRFdmVudCYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjKX1fdXBk''@;'; put 'put ''YXRlVHJlZVZhbGlkaXR5KGM9e2VtaXRFdmVudDohMH0pe3RoaXMuX2ZvckVhY2hDaGlsZChhPT5hLl91cGRhdGVUcmVlVmFsaWRpdHkoYykpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OmMuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMo''@;'; put 'put ''KXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/SlM6WFN9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcihjKXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0''@;'; put 'put ''YXR1cz13Xyx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7Y29uc3QgYT1YYWUodGhpcy5hc3luY1ZhbGlkYXRvcih0aGlzKSk7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uPWEuc3Vic2NyaWJlKGQ9Pnt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0''@;'; put 'put ''b3I9ITEsdGhpcy5zZXRFcnJvcnMoZCx7ZW1pdEV2ZW50OmN9KX0pfX1fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKXt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24mJih0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9oYXNP''@;'; put 'put ''d25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEpfXNldEVycm9ycyhjLGE9e30pe3RoaXMuZXJyb3JzPWMsdGhpcy5fdXBkYXRlQ29udHJvbHNFcnJvcnMoITEhPT1hLmVtaXRFdmVudCl9Z2V0KGMpe2xldCBhPWM7cmV0dXJuIG51bGw9PWF8fChBcnJheS5pc0FycmF5KGEpfHwoYT1hLnNwbGl0''@;'; put 'put ''KCIuIikpLDA9PT1hLmxlbmd0aCk/bnVsbDphLnJlZHVjZSgoZCxoKT0+ZCYmZC5fZmluZChoKSx0aGlzKX1nZXRFcnJvcihjLGEpe2NvbnN0IGQ9YT90aGlzLmdldChhKTp0aGlzO3JldHVybiBkJiZkLmVycm9ycz9kLmVycm9yc1tjXTpudWxsfWhhc0Vycm9yKGMsYSl7cmV0dXJuISF0aGlz''@;'; put 'put ''LmdldEVycm9yKGMsYSl9Z2V0IHJvb3QoKXtsZXQgYz10aGlzO2Zvcig7Yy5fcGFyZW50OyljPWMuX3BhcmVudDtyZXR1cm4gY31fdXBkYXRlQ29udHJvbHNFcnJvcnMoYyl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksYyYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhp''@;'; put 'put ''cy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyhjKX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3IERyLHRoaXMuc3RhdHVzQ2hhbmdlcz1uZXcgRHJ9X2NhbGN1bGF0ZVN0YXR1cygpe3JldHVybiB0aGlzLl9h''@;'; put 'put ''bGxDb250cm9sc0Rpc2FibGVkKCk/SlM6dGhpcy5lcnJvcnM/Vkk6dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yfHx0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMod18pP3dfOnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhWSSk/Vkk6WFN9X2FueUNvbnRyb2xzSGF2ZVN0''@;'; put 'put ''YXR1cyhjKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoYT0+YS5zdGF0dXM9PT1jKX1fYW55Q29udHJvbHNEaXJ0eSgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyhjPT5jLmRpcnR5KX1fYW55Q29udHJvbHNUb3VjaGVkKCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGM9PmMudG91Y2hl''@;'; put 'put ''ZCl9X3VwZGF0ZVByaXN0aW5lKGM9e30pe3RoaXMucHJpc3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKGMpfV91cGRhdGVUb3VjaGVkKGM9e30pe3RoaXMudG91Y2hlZD10aGlzLl9h''@;'; put 'put ''bnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiFjLm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoYyl9X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKGMpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT1jfV9zZXRVcGRhdGVTdHJhdGVneShjKXtCSShjKSYm''@;'; put 'put ''bnVsbCE9Yy51cGRhdGVPbiYmKHRoaXMuX3VwZGF0ZU9uPWMudXBkYXRlT24pfV9wYXJlbnRNYXJrZWREaXJ0eShjKXtyZXR1cm4hYyYmISghdGhpcy5fcGFyZW50fHwhdGhpcy5fcGFyZW50LmRpcnR5KSYmIXRoaXMuX3BhcmVudC5fYW55Q29udHJvbHNEaXJ0eSgpfV9maW5kKGMpe3JldHVy''@;'; put 'put ''biBudWxsfV9hc3NpZ25WYWxpZGF0b3JzKGMpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9QXJyYXkuaXNBcnJheShjKT9jLnNsaWNlKCk6Yyx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPWZ1bmN0aW9uIGRBZShsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKT9QVShsKTpsfHxudWxsfSh0aGlzLl9y''@;'; put 'put ''YXdWYWxpZGF0b3JzKX1fYXNzaWduQXN5bmNWYWxpZGF0b3JzKGMpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1BcnJheS5pc0FycmF5KGMpP2Muc2xpY2UoKTpjLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1mdW5jdGlvbiBoQWUobCl7cmV0dXJuIEFycmF5LmlzQXJyYXkobCk/''@;'; put 'put ''RlUobCk6bHx8bnVsbH0odGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX19Y2xhc3MgakkgZXh0ZW5kcyB6VXtjb25zdHJ1Y3RvcihjLGEsZCl7c3VwZXIoQlUoYSksalUoZCxhKSksdGhpcy5jb250cm9scz1jLHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5''@;'; put 'put ''KGEpLHRoaXMuX3NldFVwQ29udHJvbHMoKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDohIXRoaXMuYXN5bmNWYWxpZGF0b3J9KX1yZWdpc3RlckNvbnRyb2woYyxhKXtyZXR1cm4gdGhpcy5jb250cm9sc1tjXT90aGlzLmNvbnRyb2xzW2NdOih0''@;'; put 'put ''aGlzLmNvbnRyb2xzW2NdPWEsYS5zZXRQYXJlbnQodGhpcyksYS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSxhKX1hZGRDb250cm9sKGMsYSxkPXt9KXt0aGlzLnJlZ2lzdGVyQ29udHJvbChjLGEpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxp''@;'; put 'put ''ZGl0eSh7ZW1pdEV2ZW50OmQuZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9cmVtb3ZlQ29udHJvbChjLGE9e30pe3RoaXMuY29udHJvbHNbY10mJnRoaXMuY29udHJvbHNbY10uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksZGVsZXRlIHRoaXMuY29u''@;'; put 'put ''dHJvbHNbY10sdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6YS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKGMsYSxkPXt9KXt0aGlzLmNvbnRyb2xzW2NdJiZ0aGlzLmNvbnRyb2xzW2NdLl9yZWdpc3Rlck9uQ29sbGVjdGlv''@;'; put 'put ''bkNoYW5nZSgoKT0+e30pLGRlbGV0ZSB0aGlzLmNvbnRyb2xzW2NdLGEmJnRoaXMucmVnaXN0ZXJDb250cm9sKGMsYSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZC5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1jb250YWlucyhjKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShjKSYmdGhpcy5jb250cm9sc1tjXS5lbmFibGVkfXNldFZhbHVlKGMsYT17fSl7KGZ1bmN0aW9uIGhsZShsLGMsYSl7bC5fZm9yRWFjaENoaWxkKChkLGgpPT57aWYodm9pZCAwPT09YVtoXSl0aHJvdyBuZXcgVW4oMTAwMiwiIil9KX0p''@;'; put 'put ''KHRoaXMsMCxjKSxPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGQ9PnsoZnVuY3Rpb24gZGxlKGwsYyxhKXtjb25zdCBkPWwuY29udHJvbHM7aWYoIShjP09iamVjdC5rZXlzKGQpOmQpLmxlbmd0aCl0aHJvdyBuZXcgVW4oMWUzLCIiKTtpZighZFthXSl0aHJvdyBuZXcgVW4oMTAwMSwiIil9KSh0''@;'; put 'put ''aGlzLCEwLGQpLHRoaXMuY29udHJvbHNbZF0uc2V0VmFsdWUoY1tkXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmEuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoYSl9cGF0Y2hWYWx1ZShjLGE9e30pe251bGwhPWMmJihPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGQ9''@;'; put 'put ''Pntjb25zdCBoPXRoaXMuY29udHJvbHNbZF07aCYmaC5wYXRjaFZhbHVlKGNbZF0se29ubHlTZWxmOiEwLGVtaXRFdmVudDphLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGEpKX1yZXNldChjPXt9LGE9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgoZCxoKT0+e2Qu''@;'; put 'put ''cmVzZXQoYz9jW2hdOm51bGwse29ubHlTZWxmOiEwLGVtaXRFdmVudDphLmVtaXRFdmVudH0pfSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoYSksdGhpcy5fdXBkYXRlVG91Y2hlZChhKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoYSl9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fcmVk''@;'; put 'put ''dWNlQ2hpbGRyZW4oe30sKGMsYSxkKT0+KGNbZF09YS5nZXRSYXdWYWx1ZSgpLGMpKX1fc3luY1BlbmRpbmdDb250cm9scygpe2xldCBjPXRoaXMuX3JlZHVjZUNoaWxkcmVuKCExLChhLGQpPT4hIWQuX3N5bmNQZW5kaW5nQ29udHJvbHMoKXx8YSk7cmV0dXJuIGMmJnRoaXMudXBkYXRlVmFs''@;'; put 'put ''dWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITB9KSxjfV9mb3JFYWNoQ2hpbGQoYyl7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaChhPT57Y29uc3QgZD10aGlzLmNvbnRyb2xzW2FdO2QmJmMoZCxhKX0pfV9zZXRVcENvbnRyb2xzKCl7dGhpcy5fZm9yRWFjaENoaWxkKGM9Pntj''@;'; put 'put ''LnNldFBhcmVudCh0aGlzKSxjLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl9yZWR1Y2VWYWx1ZSgpfV9hbnlDb250cm9scyhjKXtmb3IoY29uc3RbYSxkXW9mIE9iamVjdC5lbnRy''@;'; put 'put ''aWVzKHRoaXMuY29udHJvbHMpKWlmKHRoaXMuY29udGFpbnMoYSkmJmMoZCkpcmV0dXJuITA7cmV0dXJuITF9X3JlZHVjZVZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LChhLGQsaCk9PigoZC5lbmFibGVkfHx0aGlzLmRpc2FibGVkKSYmKGFbaF09ZC52YWx1ZSksYSkp''@;'; put 'put ''fV9yZWR1Y2VDaGlsZHJlbihjLGEpe2xldCBkPWM7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZCgoaCxmKT0+e2Q9YShkLGgsZil9KSxkfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7Zm9yKGNvbnN0IGMgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpaWYodGhpcy5jb250cm9sc1tjXS5l''@;'; put 'put ''bmFibGVkKXJldHVybiExO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH1fZmluZChjKXtyZXR1cm4gdGhpcy5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShjKT90aGlzLmNvbnRyb2xzW2NdOm51bGx9fWNvbnN0IGM4PW5ldyAkcigiQ2Fs''@;'; put 'put ''bFNldERpc2FibGVkU3RhdGUiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5RU30pLFFTPSJhbHdheXMiO2Z1bmN0aW9uIGVNKGwsYyxhPVFTKXtVVShsLGMpLGMudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKGwudmFsdWUpLChsLmRpc2FibGVkfHwiYWx3YXlzIj09PWEpJiZjLnZh''@;'; put 'put ''bHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZT8uKGwuZGlzYWJsZWQpLGZ1bmN0aW9uIGdBZShsLGMpe2MudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGE9PntsLl9wZW5kaW5nVmFsdWU9YSxsLl9wZW5kaW5nQ2hhbmdlPSEwLGwuX3BlbmRpbmdEaXJ0eT0hMCwiY2hhbmdlIj09''@;'; put 'put ''PWwudXBkYXRlT24mJmZsZShsLGMpfSl9KGwsYyksZnVuY3Rpb24gdkFlKGwsYyl7Y29uc3QgYT0oZCxoKT0+e2MudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKGQpLGgmJmMudmlld1RvTW9kZWxVcGRhdGUoZCl9O2wucmVnaXN0ZXJPbkNoYW5nZShhKSxjLl9yZWdpc3Rlck9uRGVzdHJveSgo''@;'; put 'put ''KT0+e2wuX3VucmVnaXN0ZXJPbkNoYW5nZShhKX0pfShsLGMpLGZ1bmN0aW9uIG1BZShsLGMpe2MudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uVG91Y2hlZCgoKT0+e2wuX3BlbmRpbmdUb3VjaGVkPSEwLCJibHVyIj09PWwudXBkYXRlT24mJmwuX3BlbmRpbmdDaGFuZ2UmJmZsZShsLGMpLCJz''@;'; put 'put ''dWJtaXQiIT09bC51cGRhdGVPbiYmbC5tYXJrQXNUb3VjaGVkKCl9KX0obCxjKSxmdW5jdGlvbiBwQWUobCxjKXtpZihjLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSl7Y29uc3QgYT1kPT57Yy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoZCl9O2wucmVnaXN0ZXJPbkRp''@;'; put 'put ''c2FibGVkQ2hhbmdlKGEpLGMuX3JlZ2lzdGVyT25EZXN0cm95KCgpPT57bC5fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoYSl9KX19KGwsYyl9ZnVuY3Rpb24gWkkobCxjKXtsLmZvckVhY2goYT0+e2EucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmYS5yZWdpc3Rlck9uVmFsaWRhdG9y''@;'; put 'put ''Q2hhbmdlKGMpfSl9ZnVuY3Rpb24gVVUobCxjKXtjb25zdCBhPWZ1bmN0aW9uIGlsZShsKXtyZXR1cm4gbC5fcmF3VmFsaWRhdG9yc30obCk7bnVsbCE9PWMudmFsaWRhdG9yP2wuc2V0VmFsaWRhdG9ycyhybGUoYSxjLnZhbGlkYXRvcikpOiJmdW5jdGlvbiI9PXR5cGVvZiBhJiZsLnNldFZh''@;'; put 'put ''bGlkYXRvcnMoW2FdKTtjb25zdCBkPWZ1bmN0aW9uIG9sZShsKXtyZXR1cm4gbC5fcmF3QXN5bmNWYWxpZGF0b3JzfShsKTtudWxsIT09Yy5hc3luY1ZhbGlkYXRvcj9sLnNldEFzeW5jVmFsaWRhdG9ycyhybGUoZCxjLmFzeW5jVmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGQmJmwu''@;'; put 'put ''c2V0QXN5bmNWYWxpZGF0b3JzKFtkXSk7Y29uc3QgaD0oKT0+bC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7WkkoYy5fcmF3VmFsaWRhdG9ycyxoKSxaSShjLl9yYXdBc3luY1ZhbGlkYXRvcnMsaCl9ZnVuY3Rpb24gZmxlKGwsYyl7bC5fcGVuZGluZ0RpcnR5JiZsLm1hcmtBc0RpcnR5KCks''@;'; put 'put ''bC5zZXRWYWx1ZShsLl9wZW5kaW5nVmFsdWUse2VtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLGMudmlld1RvTW9kZWxVcGRhdGUobC5fcGVuZGluZ1ZhbHVlKSxsLl9wZW5kaW5nQ2hhbmdlPSExfWNvbnN0IENBZT17cHJvdmlkZTplMSx1c2VFeGlzdGluZzp0YSgoKT0+TTMpfSx0TT1Qcm9t''@;'; put 'put ''aXNlLnJlc29sdmUoKTtsZXQgTTM9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGUxe2NvbnN0cnVjdG9yKGEsZCxoKXtzdXBlcigpLHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGU9aCx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLl9kaXJlY3RpdmVzPW5ldyBTZXQsdGhpcy5uZ1N1Ym1pdD1uZXcgRHIs''@;'; put 'put ''dGhpcy5mb3JtPW5ldyBqSSh7fSxQVShhKSxGVShkKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0aCgpe3JldHVybltdfWdldCBj''@;'; put 'put ''b250cm9scygpe3JldHVybiB0aGlzLmZvcm0uY29udHJvbHN9YWRkQ29udHJvbChhKXt0TS50aGVuKCgpPT57Y29uc3QgZD10aGlzLl9maW5kQ29udGFpbmVyKGEucGF0aCk7YS5jb250cm9sPWQucmVnaXN0ZXJDb250cm9sKGEubmFtZSxhLmNvbnRyb2wpLGVNKGEuY29udHJvbCxhLHRoaXMu''@;'; put 'put ''Y2FsbFNldERpc2FibGVkU3RhdGUpLGEuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLmFkZChhKX0pfWdldENvbnRyb2woYSl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoYS5wYXRoKX1yZW1vdmVDb250cm9sKGEpe3RNLnRoZW4o''@;'; put 'put ''KCk9Pntjb25zdCBkPXRoaXMuX2ZpbmRDb250YWluZXIoYS5wYXRoKTtkJiZkLnJlbW92ZUNvbnRyb2woYS5uYW1lKSx0aGlzLl9kaXJlY3RpdmVzLmRlbGV0ZShhKX0pfWFkZEZvcm1Hcm91cChhKXt0TS50aGVuKCgpPT57Y29uc3QgZD10aGlzLl9maW5kQ29udGFpbmVyKGEucGF0aCksaD1u''@;'; put 'put ''ZXcgakkoe30pOyhmdW5jdGlvbiBwbGUobCxjKXtVVShsLGMpfSkoaCxhKSxkLnJlZ2lzdGVyQ29udHJvbChhLm5hbWUsaCksaC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pfXJlbW92ZUZvcm1Hcm91cChhKXt0TS50aGVuKCgpPT57Y29uc3QgZD10aGlzLl9maW5k''@;'; put 'put ''Q29udGFpbmVyKGEucGF0aCk7ZCYmZC5yZW1vdmVDb250cm9sKGEubmFtZSl9KX1nZXRGb3JtR3JvdXAoYSl7cmV0dXJuIHRoaXMuZm9ybS5nZXQoYS5wYXRoKX11cGRhdGVNb2RlbChhLGQpe3RNLnRoZW4oKCk9Pnt0aGlzLmZvcm0uZ2V0KGEucGF0aCkuc2V0VmFsdWUoZCl9KX1zZXRWYWx1''@;'; put 'put ''ZShhKXt0aGlzLmNvbnRyb2wuc2V0VmFsdWUoYSl9b25TdWJtaXQoYSl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLGZ1bmN0aW9uIGdsZShsLGMpe2wuX3N5bmNQZW5kaW5nQ29udHJvbHMoKSxjLmZvckVhY2goYT0+e2NvbnN0IGQ9YS5jb250cm9sOyJzdWJtaXQiPT09ZC51cGRhdGVPbiYm''@;'; put 'put ''ZC5fcGVuZGluZ0NoYW5nZSYmKGEudmlld1RvTW9kZWxVcGRhdGUoZC5fcGVuZGluZ1ZhbHVlKSxkLl9wZW5kaW5nQ2hhbmdlPSExKX0pfSh0aGlzLmZvcm0sdGhpcy5fZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KGEpLCJkaWFsb2ciPT09YT8udGFyZ2V0Py5tZXRob2R9b25SZXNl''@;'; put 'put ''dCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKGE9dm9pZCAwKXt0aGlzLmZvcm0ucmVzZXQoYSksdGhpcy5zdWJtaXR0ZWQ9ITF9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZudWxsIT10aGlzLm9wdGlvbnMudXBkYXRlT24mJih0aGlzLmZvcm0uX3VwZGF0ZU9uPXRo''@;'; put 'put ''aXMub3B0aW9ucy51cGRhdGVPbil9X2ZpbmRDb250YWluZXIoYSl7cmV0dXJuIGEucG9wKCksYS5sZW5ndGg/dGhpcy5mb3JtLmdldChhKTp0aGlzLmZvcm19c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoYTAsMTApLEplKG1tLDEwKSxKZShj''@;'; put 'put ''OCw4KSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywiZm9ybUdyb3VwIiwiIl0sWyJuZy1mb3JtIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MSZkJiZJdCgic3VibWl0''@;'; put 'put ''IixmdW5jdGlvbih2KXtyZXR1cm4gaC5vblN1Ym1pdCh2KX0pKCJyZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vblJlc2V0KCl9KX0saW5wdXRzOntvcHRpb25zOltqbi5Ob25lLCJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBv''@;'; put 'put ''cnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltaaShbQ0FlXSksZW9dfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBtbGUobCxjKXtjb25zdCBhPWwuaW5kZXhPZihjKTthPi0xJiZsLnNwbGljZShhLDEpfWZ1bmN0aW9uIHZsZShsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGwmJm51bGwhPT1s''@;'; put 'put ''JiYyPT09T2JqZWN0LmtleXMobCkubGVuZ3RoJiYidmFsdWUiaW4gbCYmImRpc2FibGVkImluIGx9Y29uc3QgR1U9Y2xhc3MgZXh0ZW5kcyB6VXtjb25zdHJ1Y3RvcihjPW51bGwsYSxkKXtzdXBlcihCVShhKSxqVShkLGEpKSx0aGlzLmRlZmF1bHRWYWx1ZT1udWxsLHRoaXMuX29uQ2hhbmdl''@;'; put 'put ''PVtdLHRoaXMuX3BlbmRpbmdDaGFuZ2U9ITEsdGhpcy5fYXBwbHlGb3JtU3RhdGUoYyksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koYSksdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5j''@;'; put 'put ''VmFsaWRhdG9yfSksQkkoYSkmJihhLm5vbk51bGxhYmxlfHxhLmluaXRpYWxWYWx1ZUlzRGVmYXVsdCkmJih0aGlzLmRlZmF1bHRWYWx1ZT12bGUoYyk/Yy52YWx1ZTpjKX1zZXRWYWx1ZShjLGE9e30pe3RoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWMsdGhpcy5fb25DaGFuZ2UubGVu''@;'; put 'put ''Z3RoJiYhMSE9PWEuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKGQ9PmQodGhpcy52YWx1ZSwhMSE9PWEuZW1pdFZpZXdUb01vZGVsQ2hhbmdlKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGEpfXBhdGNoVmFsdWUoYyxhPXt9KXt0aGlzLnNldFZh''@;'; put 'put ''bHVlKGMsYSl9cmVzZXQoYz10aGlzLmRlZmF1bHRWYWx1ZSxhPXt9KXt0aGlzLl9hcHBseUZvcm1TdGF0ZShjKSx0aGlzLm1hcmtBc1ByaXN0aW5lKGEpLHRoaXMubWFya0FzVW50b3VjaGVkKGEpLHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSxhKSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExfV91''@;'; put 'put ''cGRhdGVWYWx1ZSgpe31fYW55Q29udHJvbHMoYyl7cmV0dXJuITF9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH1yZWdpc3Rlck9uQ2hhbmdlKGMpe3RoaXMuX29uQ2hhbmdlLnB1c2goYyl9X3VucmVnaXN0ZXJPbkNoYW5nZShjKXttbGUodGhpcy5fb25DaGFu''@;'; put 'put ''Z2UsYyl9cmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKGMpe3RoaXMuX29uRGlzYWJsZWRDaGFuZ2UucHVzaChjKX1fdW5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoYyl7bWxlKHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UsYyl9X2ZvckVhY2hDaGlsZChjKXt9X3N5bmNQZW5kaW5nQ29udHJvbHMo''@;'; put 'put ''KXtyZXR1cm4hKCJzdWJtaXQiIT09dGhpcy51cGRhdGVPbnx8KHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0aGlzLm1hcmtBc1RvdWNoZWQoKSwhdGhpcy5fcGVuZGluZ0NoYW5nZSl8fCh0aGlzLnNldFZhbHVlKHRoaXMuX3Bl''@;'; put 'put ''bmRpbmdWYWx1ZSx7b25seVNlbGY6ITAsZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksMCkpfV9hcHBseUZvcm1TdGF0ZShjKXt2bGUoYyk/KHRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPWMudmFsdWUsYy5kaXNhYmxlZD90aGlzLmRpc2FibGUoe29ubHlTZWxmOiEwLGVtaXRFdmVu''@;'; put 'put ''dDohMX0pOnRoaXMuZW5hYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSk6dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9Y319LHhBZT17cHJvdmlkZTp0MSx1c2VFeGlzdGluZzp0YSgoKT0+dWEpfSxibGU9UHJvbWlzZS5yZXNvbHZlKCk7bGV0IHVhPSgoKT0+e2NsYXNzIGwg''@;'; put 'put ''ZXh0ZW5kcyB0MXtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj12LHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGU9Uyx0aGlzLmNvbnRyb2w9bmV3IEdVLHRoaXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy5uYW1lPSIiLHRoaXMudXBkYXRlPW5l''@;'; put 'put ''dyBEcix0aGlzLl9wYXJlbnQ9YSx0aGlzLl9zZXRWYWxpZGF0b3JzKGQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhoKSx0aGlzLnZhbHVlQWNjZXNzb3I9ZnVuY3Rpb24gV1UobCxjKXtpZighYylyZXR1cm4gbnVsbDtsZXQgYSxkLGg7cmV0dXJuIEFycmF5LmlzQXJyYXkoYyksYy5mb3JF''@;'; put 'put ''YWNoKGY9PntmLmNvbnN0cnVjdG9yPT09dWw/YT1mOmZ1bmN0aW9uIHlBZShsKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGwuY29uc3RydWN0b3IpPT09YTh9KGYpP2Q9ZjpoPWZ9KSxofHxkfHxhfHxudWxsfSgwLGYpfW5nT25DaGFuZ2VzKGEpe2lmKHRoaXMuX2NoZWNrRm9yRXJy''@;'; put 'put ''b3JzKCksIXRoaXMuX3JlZ2lzdGVyZWR8fCJuYW1lImluIGEpe2lmKHRoaXMuX3JlZ2lzdGVyZWQmJih0aGlzLl9jaGVja05hbWUoKSx0aGlzLmZvcm1EaXJlY3RpdmUpKXtjb25zdCBkPWEubmFtZS5wcmV2aW91c1ZhbHVlO3RoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVDb250cm9sKHtuYW1l''@;'; put 'put ''OmQscGF0aDp0aGlzLl9nZXRQYXRoKGQpfSl9dGhpcy5fc2V0VXBDb250cm9sKCl9ImlzRGlzYWJsZWQiaW4gYSYmdGhpcy5fdXBkYXRlRGlzYWJsZWQoYSksZnVuY3Rpb24gWVUobCxjKXtpZighbC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtjb25zdCBhPWwubW9kZWw7cmV0''@;'; put 'put ''dXJuISFhLmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhjLGEuY3VycmVudFZhbHVlKX0oYSx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYm''@;'; put 'put ''dGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fZ2V0UGF0aCh0aGlzLm5hbWUpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfXZpZXdUb01vZGVs''@;'; put 'put ''VXBkYXRlKGEpe3RoaXMudmlld01vZGVsPWEsdGhpcy51cGRhdGUuZW1pdChhKX1fc2V0VXBDb250cm9sKCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKSx0aGlzLl9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0''@;'; put 'put ''aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5jb250cm9sLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9pc1N0YW5kYWxvbmUoKXtyZXR1cm4hdGhpcy5f''@;'; put 'put ''cGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9X3NldFVwU3RhbmRhbG9uZSgpe2VNKHRoaXMuY29udHJvbCx0aGlzLHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGUpLHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6''@;'; put 'put ''ITF9KX1fY2hlY2tGb3JFcnJvcnMoKXt0aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5fY2hlY2tOYW1lKCl9X2NoZWNrUGFyZW50VHlwZSgpe31fY2hlY2tOYW1lKCl7dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubmFtZSYmKHRoaXMubmFtZT10''@;'; put 'put ''aGlzLm9wdGlvbnMubmFtZSksdGhpcy5faXNTdGFuZGFsb25lKCl9X3VwZGF0ZVZhbHVlKGEpe2JsZS50aGVuKCgpPT57dGhpcy5jb250cm9sLnNldFZhbHVlKGEse2VtaXRWaWV3VG9Nb2RlbENoYW5nZTohMX0pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPy5tYXJrRm9yQ2hlY2soKX0pfV91''@;'; put 'put ''cGRhdGVEaXNhYmxlZChhKXtjb25zdCBkPWEuaXNEaXNhYmxlZC5jdXJyZW50VmFsdWUsaD0wIT09ZCYmeDAoZCk7YmxlLnRoZW4oKCk9PntoJiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IWgmJnRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy5jb250''@;'; put 'put ''cm9sLmVuYWJsZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPy5tYXJrRm9yQ2hlY2soKX0pfV9nZXRQYXRoKGEpe3JldHVybiB0aGlzLl9wYXJlbnQ/ZnVuY3Rpb24gekkobCxjKXtyZXR1cm5bLi4uYy5wYXRoLGxdfShhLHRoaXMuX3BhcmVudCk6W2FdfXN0YXRpY3t0aGlzLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGUxLDkpLEplKGEwLDEwKSxKZShtbSwxMCksSmUoUzMsMTApLEplKGNhLDgpLEplKGM4LDgpKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsIm5nTW9kZWwiLCIiLDMsImZvcm1Db250cm9s''@;'; put 'put ''TmFtZSIsIiIsMywiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntuYW1lOiJuYW1lIixpc0Rpc2FibGVkOltqbi5Ob25lLCJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxtb2RlbDpbam4uTm9uZSwibmdNb2RlbCIsIm1vZGVsIl0sb3B0aW9uczpbam4uTm9uZSwibmdNb2RlbE9wdGlvbnMiLCJv''@;'; put 'put ''cHRpb25zIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdNb2RlbCJdLGZlYXR1cmVzOltaaShbeEFlXSksZW8sSmFdfSl9fXJldHVybiBsfSkoKSx1OD0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4g''@;'; put 'put ''bmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsIm5nTmF0aXZlVmFsaWRhdGUiLCIiXV0saG9zdEF0dHJzOlsibm92YWxpZGF0ZSIsIiJdfSl9fXJldHVybiBsfSkoKTtjb25zdCBFQWU9e3Byb3Zp''@;'; put 'put ''ZGU6UzMsdXNlRXhpc3Rpbmc6dGEoKCk9PldJKSxtdWx0aTohMH07bGV0IFdJPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhOHt3cml0ZVZhbHVlKGEpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixhPz8iIil9cmVnaXN0ZXJPbkNoYW5nZShhKXt0aGlzLm9uQ2hhbmdlPWQ9PnthKCIiPT1kP251''@;'; put 'put ''bGw6cGFyc2VGbG9hdChkKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz0oKCk9PntsZXQgYTtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuKGF8fChhPUxhKGwpKSkoaHx8bCl9fSkoKX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwi''@;'; put 'put ''bnVtYmVyIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0KCJpbnB1dCIsZnVuY3Rpb24o''@;'; put 'put ''dil7cmV0dXJuIGgub25DaGFuZ2Uodi50YXJnZXQudmFsdWUpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25Ub3VjaGVkKCl9KX0sZmVhdHVyZXM6W1ppKFtFQWVdKSxlb119KX19cmV0dXJuIGx9KSgpO2NvbnN0IFRBZT17cHJvdmlkZTpTMyx1c2VFeGlzdGluZzp0YSgoKT0+R0kp''@;'; put 'put ''LG11bHRpOiEwfTtsZXQga0FlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9hY2Nlc3NvcnM9W119YWRkKGEsZCl7dGhpcy5fYWNjZXNzb3JzLnB1c2goW2EsZF0pfXJlbW92ZShhKXtmb3IobGV0IGQ9dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO2Q+PTA7LS1kKWlmKHRoaXMu''@;'; put 'put ''X2FjY2Vzc29yc1tkXVsxXT09PWEpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNzb3JzLnNwbGljZShkLDEpfXNlbGVjdChhKXt0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaChkPT57dGhpcy5faXNTYW1lR3JvdXAoZCxhKSYmZFsxXSE9PWEmJmRbMV0uZmlyZVVuY2hlY2soYS52YWx1ZSl9KX1faXNT''@;'; put 'put ''YW1lR3JvdXAoYSxkKXtyZXR1cm4hIWFbMF0uY29udHJvbCYmYVswXS5fcGFyZW50PT09ZC5fY29udHJvbC5fcGFyZW50JiZhWzFdLm5hbWU9PT1kLm5hbWV9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9''@;'; put 'put ''aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCksR0k9KCgpPT57Y2xhc3MgbCBleHRlbmRzIGE4e2NvbnN0cnVjdG9yKGEsZCxoLGYpe3N1cGVyKGEsZCksdGhpcy5fcmVnaXN0cnk9aCx0aGlzLl9pbmplY3Rvcj1mLHRoaXMu''@;'; put 'put ''c2V0RGlzYWJsZWRTdGF0ZUZpcmVkPSExLHRoaXMub25DaGFuZ2U9KCk9Pnt9LHRoaXMuY2FsbFNldERpc2FibGVkU3RhdGU9WnIoYzgse29wdGlvbmFsOiEwfSk/P1FTfW5nT25Jbml0KCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmplY3Rvci5nZXQodDEpLHRoaXMuX2NoZWNrTmFtZSgpLHRo''@;'; put 'put ''aXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpfXdyaXRlVmFsdWUoYSl7dGhpcy5fc3RhdGU9YT09PXRoaXMudmFsdWUsdGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdGhpcy5fc3RhdGUpfXJlZ2lz''@;'; put 'put ''dGVyT25DaGFuZ2UoYSl7dGhpcy5fZm49YSx0aGlzLm9uQ2hhbmdlPSgpPT57YSh0aGlzLnZhbHVlKSx0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyl9fXNldERpc2FibGVkU3RhdGUoYSl7KHRoaXMuc2V0RGlzYWJsZWRTdGF0ZUZpcmVkfHxhfHwid2hlbkRpc2FibGVkRm9yTGVnYWN5Q29k''@;'; put 'put ''ZSI9PT10aGlzLmNhbGxTZXREaXNhYmxlZFN0YXRlKSYmdGhpcy5zZXRQcm9wZXJ0eSgiZGlzYWJsZWQiLGEpLHRoaXMuc2V0RGlzYWJsZWRTdGF0ZUZpcmVkPSEwfWZpcmVVbmNoZWNrKGEpe3RoaXMud3JpdGVWYWx1ZShhKX1fY2hlY2tOYW1lKCl7IXRoaXMubmFtZSYmdGhpcy5mb3JtQ29u''@;'; put 'put ''dHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGRzKSxKZShOaSksSmUoa0FlKSxKZShNYSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3Rv''@;'; put 'put ''cnM6W1siaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhZGlvIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0''@;'; put 'put ''KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25DaGFuZ2UoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBoLm9uVG91Y2hlZCgpfSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOlta''@;'; put 'put ''aShbVEFlXSksZW9dfSl9fXJldHVybiBsfSkoKTtjb25zdCBxVT1uZXcgJHIoIiIpLFBBZT17cHJvdmlkZTpTMyx1c2VFeGlzdGluZzp0YSgoKT0+VzIpLG11bHRpOiEwfTtmdW5jdGlvbiBNbGUobCxjKXtyZXR1cm4gbnVsbD09bD9gJHtjfWA6KGMmJiJvYmplY3QiPT10eXBlb2YgYyYmKGM9''@;'; put 'put ''Ik9iamVjdCIpLGAke2x9OiAke2N9YC5zbGljZSgwLDUwKSl9bGV0IFcyPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBhOHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2Jq''@;'; put 'put ''ZWN0LmlzfXNldCBjb21wYXJlV2l0aChhKXt0aGlzLl9jb21wYXJlV2l0aD1hfXdyaXRlVmFsdWUoYSl7dGhpcy52YWx1ZT1hO2NvbnN0IGg9TWxlKHRoaXMuX2dldE9wdGlvbklkKGEpLGEpO3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixoKX1yZWdpc3Rlck9uQ2hhbmdlKGEpe3RoaXMub25D''@;'; put 'put ''aGFuZ2U9ZD0+e3RoaXMudmFsdWU9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoZCksYSh0aGlzLnZhbHVlKX19X3JlZ2lzdGVyT3B0aW9uKCl7cmV0dXJuKHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpfV9nZXRPcHRpb25JZChhKXtmb3IoY29uc3QgZCBvZiB0aGlzLl9vcHRpb25NYXAua2V5''@;'; put 'put ''cygpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZCksYSkpcmV0dXJuIGQ7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKGEpe2NvbnN0IGQ9ZnVuY3Rpb24gRkFlKGwpe3JldHVybiBsLnNwbGl0KCI6IilbMF19KGEpO3JldHVybiB0aGlzLl9vcHRpb25NYXAu''@;'; put 'put ''aGFzKGQpP3RoaXMuX29wdGlvbk1hcC5nZXQoZCk6YX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9KCgpPT57bGV0IGE7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybihhfHwoYT1MYShsKSkpKGh8fGwpfX0pKCl9c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbInNl''@;'; put 'put ''bGVjdCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MSZkJiZJdCgi''@;'; put 'put ''Y2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gaC5vbkNoYW5nZSh2LnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gaC5vblRvdWNoZWQoKX0pfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltaaShbUEFlXSksZW9dfSl9fXJldHVy''@;'; put 'put ''biBsfSkoKSxHMj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLl9lbGVtZW50PWEsdGhpcy5fcmVuZGVyZXI9ZCx0aGlzLl9zZWxlY3Q9aCx0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9c2V0IG5nVmFsdWUoYSl7bnVs''@;'; put 'put ''bCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsYSksdGhpcy5fc2V0RWxlbWVudFZhbHVlKE1sZSh0aGlzLmlkLGEpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zZXQgdmFsdWUoYSl7dGhpcy5fc2V0RWxl''@;'; put 'put ''bWVudFZhbHVlKGEpLHRoaXMuX3NlbGVjdCYmdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKX1fc2V0RWxlbWVudFZhbHVlKGEpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLGEpfW5nT25EZXN0''@;'; put 'put ''cm95KCl7dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuZGVsZXRlKHRoaXMuaWQpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKE5pKSxK''@;'; put 'put ''ZShkcyksSmUoVzIsOSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1sib3B0aW9uIl1dLGlucHV0czp7bmdWYWx1ZToibmdWYWx1ZSIsdmFsdWU6InZhbHVlIn19KX19cmV0dXJuIGx9KSgpO2NvbnN0IE5BZT17cHJvdmlkZTpTMyx1c2VFeGlzdGluZzp0''@;'; put 'put ''YSgoKT0+bk0pLG11bHRpOiEwfTtmdW5jdGlvbiB4bGUobCxjKXtyZXR1cm4gbnVsbD09bD9gJHtjfWA6KCJzdHJpbmciPT10eXBlb2YgYyYmKGM9YCcke2N9J2ApLGMmJiJvYmplY3QiPT10eXBlb2YgYyYmKGM9Ik9iamVjdCIpLGAke2x9OiAke2N9YC5zbGljZSgwLDUwKSl9bGV0IG5NPSgo''@;'; put 'put ''KT0+e2NsYXNzIGwgZXh0ZW5kcyBhOHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNldCBjb21wYXJlV2l0aChhKXt0aGlzLl9jb21wYXJlV2l0aD1h''@;'; put 'put ''fXdyaXRlVmFsdWUoYSl7bGV0IGQ7aWYodGhpcy52YWx1ZT1hLEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGg9YS5tYXAoZj0+dGhpcy5fZ2V0T3B0aW9uSWQoZikpO2Q9KGYsdik9PntmLl9zZXRTZWxlY3RlZChoLmluZGV4T2Yodi50b1N0cmluZygpKT4tMSl9fWVsc2UgZD0oaCxmKT0+e2gu''@;'; put 'put ''X3NldFNlbGVjdGVkKCExKX07dGhpcy5fb3B0aW9uTWFwLmZvckVhY2goZCl9cmVnaXN0ZXJPbkNoYW5nZShhKXt0aGlzLm9uQ2hhbmdlPWQ9Pntjb25zdCBoPVtdLGY9ZC5zZWxlY3RlZE9wdGlvbnM7aWYodm9pZCAwIT09Zil7Y29uc3Qgdj1mO2ZvcihsZXQgUz0wO1M8di5sZW5ndGg7Uysr''@;'; put 'put ''KXtjb25zdCBRPXRoaXMuX2dldE9wdGlvblZhbHVlKHZbU10udmFsdWUpO2gucHVzaChRKX19ZWxzZXtjb25zdCB2PWQub3B0aW9ucztmb3IobGV0IFM9MDtTPHYubGVuZ3RoO1MrKyl7Y29uc3QgVj12W1NdO2lmKFYuc2VsZWN0ZWQpe2NvbnN0IFE9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoVi52''@;'; put 'put ''YWx1ZSk7aC5wdXNoKFEpfX19dGhpcy52YWx1ZT1oLGEoaCl9fV9yZWdpc3Rlck9wdGlvbihhKXtjb25zdCBkPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLnNldChkLGEpLGR9X2dldE9wdGlvbklkKGEpe2Zvcihjb25zdCBkIG9mIHRoaXMu''@;'; put 'put ''X29wdGlvbk1hcC5rZXlzKCkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChkKS5fdmFsdWUsYSkpcmV0dXJuIGQ7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKGEpe2NvbnN0IGQ9ZnVuY3Rpb24gSEFlKGwpe3JldHVybiBsLnNwbGl0KCI6IilbMF19KGEpO3Jl''@;'; put 'put ''dHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGQpP3RoaXMuX29wdGlvbk1hcC5nZXQoZCkuX3ZhbHVlOmF9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPSgoKT0+e2xldCBhO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4oYXx8KGE9TGEobCkpKShofHxsKX19KSgpfXN0YXRpY3t0aGlzLlx1MDI3NWRp''@;'; put 'put ''cj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpm''@;'; put 'put ''dW5jdGlvbihkLGgpezEmZCYmSXQoImNoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIGgub25DaGFuZ2Uodi50YXJnZXQpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25Ub3VjaGVkKCl9KX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbWmkoW05B''@;'; put 'put ''ZV0pLGVvXX0pfX1yZXR1cm4gbH0pKCksJDI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5fZWxlbWVudD1hLHRoaXMuX3JlbmRlcmVyPWQsdGhpcy5fc2VsZWN0PWgsdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMp''@;'; put 'put ''KX1zZXQgbmdWYWx1ZShhKXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl92YWx1ZT1hLHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh4bGUodGhpcy5pZCxhKSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKGEpe3RoaXMuX3NlbGVjdD8odGhp''@;'; put 'put ''cy5fdmFsdWU9YSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoeGxlKHRoaXMuaWQsYSkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpOnRoaXMuX3NldEVsZW1lbnRWYWx1ZShhKX1fc2V0RWxlbWVudFZhbHVlKGEpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5''@;'; put 'put ''KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLGEpfV9zZXRTZWxlY3RlZChhKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInNlbGVjdGVkIixhKX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVj''@;'; put 'put ''dC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSksSmUoZHMpLEplKG5NLDkpKX19c3RhdGlje3RoaXMuXHUw''@;'; put 'put ''Mjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSl9fXJldHVybiBsfSkoKSxkOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPUZJfW5nT25DaGFuZ2VzKGEpe2lm''@;'; put 'put ''KHRoaXMuaW5wdXROYW1lIGluIGEpe2NvbnN0IGQ9dGhpcy5ub3JtYWxpemVJbnB1dChhW3RoaXMuaW5wdXROYW1lXS5jdXJyZW50VmFsdWUpO3RoaXMuX2VuYWJsZWQ9dGhpcy5lbmFibGVkKGQpLHRoaXMuX3ZhbGlkYXRvcj10aGlzLl9lbmFibGVkP3RoaXMuY3JlYXRlVmFsaWRhdG9yKGQp''@;'; put 'put ''OkZJLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfX12YWxpZGF0ZShhKXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKGEpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoYSl7dGhpcy5fb25DaGFuZ2U9YX1lbmFibGVkKGEpe3JldHVybiBudWxsIT1hfXN0YXRpY3t0aGlzLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxmZWF0dXJlczpbSmFdfSl9fXJldHVybiBsfSkoKTtjb25zdCBqQWU9e3Byb3ZpZGU6YTAsdXNlRXhpc3Rpbmc6dGEoKCk9PlhVKSxtdWx0aTohMH0sekFlPXtwcm92aWRl''@;'; put 'put ''OmEwLHVzZUV4aXN0aW5nOnRhKCgpPT5KVSksbXVsdGk6ITB9O2xldCBYVT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgZDh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaW5wdXROYW1lPSJyZXF1aXJlZCIsdGhpcy5ub3JtYWxpemVJbnB1dD14MCx0aGlzLmNyZWF0ZVZh''@;'; put 'put ''bGlkYXRvcj1hPT5aYWV9ZW5hYmxlZChhKXtyZXR1cm4gYX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9KCgpPT57bGV0IGE7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybihhfHwoYT1MYShsKSkpKGh8fGwpfX0pKCl9c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltb''@;'; put 'put ''IiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbIiIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsiIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3gi''@;'; put 'put ''XV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsyJmQmJnVyKCJyZXF1aXJlZCIsaC5fZW5hYmxlZD8iIjpudWxsKX0saW5wdXRzOntyZXF1aXJlZDoicmVxdWlyZWQifSxmZWF0dXJlczpbWmkoW2pBZV0pLGVvXX0pfX1yZXR1cm4gbH0pKCksSlU9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bCBleHRlbmRzIFhVe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNyZWF0ZVZhbGlkYXRvcj1hPT5ZYWV9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPSgoKT0+e2xldCBhO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4oYXx8KGE9TGEobCkpKShofHxsKX19KSgpfXN0YXRp''@;'; put 'put ''Y3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlu''@;'; put 'put ''cHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MiZkJiZ1cigicmVxdWlyZWQiLGguX2VuYWJsZWQ/IiI6bnVsbCl9LGZlYXR1cmVzOltaaShbekFlXSksZW9dfSl9fXJldHVybiBs''@;'; put 'put ''fSkoKSxPbGU9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe30pfX1yZXR1cm4gbH0pKCkscmM9KCgpPT57Y2xh''@;'; put 'put ''c3MgbHtzdGF0aWMgd2l0aENvbmZpZyhhKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6W3twcm92aWRlOmM4LHVzZVZhbHVlOmEuY2FsbFNldERpc2FibGVkU3RhdGU/P1FTfV19fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbT2xlXX0pfX1yZXR1cm4gbH0pKCksJEFlPSgoKT0+e2NsYXNzIGx7c3RhdGljIHdpdGhDb25maWcoYSl7cmV0dXJue25nTW9kdWxlOmwscHJvdmlkZXJzOlt7cHJvdmlkZTpxVSx1''@;'; put 'put ''c2VWYWx1ZTphLndhcm5Pbk5nTW9kZWxXaXRoRm9ybUNvbnRyb2w/PyJhbHdheXMifSx7cHJvdmlkZTpjOCx1c2VWYWx1ZTphLmNhbGxTZXREaXNhYmxlZFN0YXRlPz9RU31dfX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W09sZV19KX19cmV0dXJuIGx9KSgpO2NvbnN0IENfPVsiYW5nbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjkuNTIsMjIuNTIsMTgsMTAuNiw2LjQ4LDIyLjUyYTEuNywxLjcsMCwwLDAsMi40''@;'; put 'put ''NSwyLjM2TDE4LDE1LjQ5bDkuMDgsOS4zOWExLjcsMS43LDAsMCwwLDIuNDUtMi4zNloiLz4nfV0sU2g9WyJleGNsYW1hdGlvbi1jaXJjbGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTgsNkExMiwxMiwwLDEsMCwzMCwxOCwxMiwxMiwwLDAsMCwxOCw2Wm0wLDIyQTEwLDEwLDAsMSwxLDI4LDE4''@;'; put 'put ''LDEwLDEwLDAsMCwxLDE4LDI4WiIvPjxwYXRoIGQ9Ik0xOCwyMC4wN2ExLjMsMS4zLDAsMCwxLTEuMy0xLjN2LTZhMS4zLDEuMywwLDEsMSwyLjYsMHY2QTEuMywxLjMsMCwwLDEsMTgsMjAuMDdaIi8+PGNpcmNsZSBjeD0iMTcuOTUiIGN5PSIyMy4wMiIgcj0iMS41Ii8+Jyxzb2xpZDonPHBh''@;'; put 'put ''dGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIsMTIsMCwwLDAsMTgsNlptLTEuNDksNmExLjQ5LDEuNDksMCwwLDEsMywwdjYuODlhMS40OSwxLjQ5LDAsMSwxLTMsMFpNMTgsMjUuNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43MiwwLDAsMSwxOCwyNS41WiIvPid9''@;'; put 'put ''XSxNaD1bImNoZWNrLWNpcmNsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+PHBhdGggZD0iTTE2LjM0LDIzLjc0bC01LTVhMSwxLDAsMCwxLDEu''@;'; put 'put ''NDEtMS40MWwzLjU5LDMuNTksNi43OC02Ljc4YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTMwLDE4QTEyLDEyLDAsMSwxLDE4LDYsMTIsMTIsMCwwLDEsMzAsMThabS00Ljc3LTIuMTZhMS40LDEuNCwwLDAsMC0yLTJsLTYuNzcsNi43N0wxMywxNy4xNmExLjQs''@;'; put 'put ''MS40LDAsMCwwLTIsMmw1LjQ1LDUuNDVaIi8+J31dLFBsZT1bImVsbGlwc2lzLWhvcml6b250YWwiLHtvdXRsaW5lOic8Y2lyY2xlIGN4PSIzMS4xIiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjE4IiBjeT0iMTgiIHI9IjIuOSIvPjxjaXJjbGUgY3g9IjQuOSIgY3k9IjE4IiByPSIy''@;'; put 'put ''LjkiLz4nLG91dGxpbmVCYWRnZWQ6JzxjaXJjbGUgY3g9IjMxLjEiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iNC45IiBjeT0iMTgiIHI9IjIuOSIvPid9XSxyTT1bIndpbmRvdy1jbG9zZSIse291dGxpbmU6JzxwYXRoIGQ9''@;'; put 'put ''Ik0xOS40MSwxOGw3LjI5LTcuMjlhMSwxLDAsMCwwLTEuNDEtMS40MUwxOCwxNi41OSwxMC43MSw5LjI5YTEsMSwwLDAsMC0xLjQxLDEuNDFMMTYuNTksMTgsOS4yOSwyNS4yOWExLDEsMCwxLDAsMS40MSwxLjQxTDE4LDE5LjQxbDcuMjksNy4yOWExLDEsMCwwLDAsMS40MS0xLjQxWiIvPid9''@;'; put 'put ''XSxxQWU9WyJldmVudCIse291dGxpbmU6JzxwYXRoIGQ9Ik0xNi4xNywyNS44NiwxMC44MSwyMC41YTEsMSwwLDAsMSwxLjQxLTEuNDFMMTYuMTcsMjNsOC42NC04LjY0YTEsMSwwLDAsMSwxLjQxLDEuNDFaIi8+PHBhdGggZD0iTTMyLjI1LDZIMjlWOGgzVjMwSDRWOEg3VjZIMy43NUExLjc4''@;'; put 'put ''LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjcuODFBMS43OCwxLjc4LDAsMCwwLDMyLjI1LDZaIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAs''@;'; put 'put ''MCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0yNiwxMGExLDEsMCwwLDAsMS0xVjNhMSwxLDAsMCwwLTIsMFY5QTEsMSwwLDAsMCwyNiwxMFoiLz48cmVjdCB4PSIxMyIgeT0iNiIgd2lkdGg9IjEwIiBoZWlnaHQ9IjIiLz4nLG91dGxpbmVBbGVydGVkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCww''@;'; put 'put ''LDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTEwLjgxLDIwLjVsNS4zNiw1LjM2TDI2LjIyLDE1LjgxYTEsMSwwLDAsMCwuMjMtLjQxSDIzLjhMMTYuMTcsMjNsLTMuOTQtMy45NGExLDEsMCwwLDAtMS40MSwxLjQxWiIvPjxwb2x5Z29uIHBvaW50''@;'; put 'put ''cz0iMjEuMjkgNiAxMyA2IDEzIDggMjAuMTQgOCAyMS4yOSA2Ii8+PHBhdGggZD0iTTMzLjY4LDE1LjRIMzJWMzBINFY4SDdWNkgzLjc1QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTUu''@;'; put 'put ''MzhaIi8+JyxvdXRsaW5lQmFkZ2VkOic8cGF0aCBkPSJNMTAuODEsMjAuNWw1LjM2LDUuMzZMMjYuMjIsMTUuODFhMSwxLDAsMCwwLTEuNDEtMS40MUwxNi4xNywyM2wtMy45NC0zLjk0YTEsMSwwLDAsMC0xLjQxLDEuNDFaIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEs''@;'; put 'put ''MCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEwWiIvPjxwYXRoIGQ9Ik0zMiwxMy4yMlYzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVYxMi4zNEE3LjQ1LDcuNDUs''@;'; put 'put ''MCwwLDEsMzIsMTMuMjJaIi8+PHBhdGggZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTI2LDEwYTEs''@;'; put 'put ''MSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPjxwYXRoIGQ9Ik0zMi4yNSw2aC00VjlhMi4yLDIuMiwwLDAsMS00LjQsMFY2SDEyLjJWOUEyLjIsMi4yLDAsMCwxLDcuOCw5VjZoLTRBMS43OCwxLjc4LDAsMCwwLDIsNy44MVYzMC4xOUExLjc4LDEuNzgs''@;'; put 'put ''MCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2Wk0yNS45NCwxNi41OGwtOS42Nyw5LjY3TDExLDIwLjk0QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEs''@;'; put 'put ''MS45MywxLjkzWiIvPicsc29saWRBbGVydGVkOic8cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTMzLjY4LDE1LjRIMjYuM2ExLjM0LDEuMzQsMCwwLDEtLjM2LDEuMThsLTkuNjcsOS42N0wxMSwyMC45''@;'; put 'put ''NEExLjM2LDEuMzYsMCwwLDEsMTIuOSwxOWwzLjM4LDMuMzgsNy03aC0xQTMuNjgsMy42OCwwLDAsMSwxOSw5Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVB''@;'; put 'put ''MS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4y''@;'; put 'put ''LDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVabS00LjA2LDMuMDgtOS42Nyw5LjY3TDExLDIwLjk0''@;'; put 'put ''QTEuMzYsMS4zNiwwLDAsMSwxMi45LDE5bDMuMzgsMy4zOEwyNCwxNC42NmExLjM2LDEuMzYsMCwxLDEsMS45MywxLjkzWiIvPid9XSxLQWU9WyJjYWxlbmRhciIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMi4yNSw2SDI5VjhoM1YzMEg0VjhIN1Y2SDMuNzVBMS43OCwxLjc4LDAsMCwwLDIsNy44''@;'; put 'put ''MVYzMC4xOUExLjc4LDEuNzgsMCwwLDAsMy43NSwzMmgyOC41QTEuNzgsMS43OCwwLDAsMCwzNCwzMC4xOVY3LjgxQTEuNzgsMS43OCwwLDAsMCwzMi4yNSw2WiIvPjxyZWN0IHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3aWR0aD0iMiIg''@;'; put 'put ''aGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTkiIHdpZHRoPSIy''@;'; put 'put ''IiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IiB4PSIxNCIgeT0iMjQiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cGF0aCBkPSJNMTAsMTBhMSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBa''@;'; put 'put ''Ii8+PHBhdGggZD0iTTI2LDEwYTEsMSwwLDAsMCwxLTFWM2ExLDEsMCwwLDAtMiwwVjlBMSwxLDAsMCwwLDI2LDEwWiIvPjxyZWN0IHg9IjEzIiB5PSI2IiB3aWR0aD0iMTAiIGhlaWdodD0iMiIvPicsb3V0bGluZUFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40SDMyVjMwSDRWOEg3VjZI''@;'; put 'put ''My43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4WiIvPjxyZWN0IHg9IjgiIHk9IjE0IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE0IiB3aWR0aD0i''@;'; put 'put ''MiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMTkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMTkiIHdpZHRo''@;'; put 'put ''PSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSI4IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIyNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIyNCIgd2lk''@;'; put 'put ''dGg9IjIiIGhlaWdodD0iMiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cG9seWdvbiBwb2ludHM9IjIxLjI5IDYgMTMgNiAxMyA4IDIwLjE0IDggMjEuMjkgNiIvPicsb3V0bGluZUJhZGdlZDonPHBhdGggZD0i''@;'; put 'put ''TTMyLDEzLjIyVjMwSDRWOEg3VjZIMy43NUExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjEyLjM0QTcuNDUsNy40NSwwLDAsMSwzMiwxMy4yMloiLz48cmVjdCB4PSI4IiB5PSIxNCIgd2lk''@;'; put 'put ''dGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjE0IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjIwIiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjI2IiB5PSIxNCIgd2lkdGg9IjIiIGhlaWdodD0iMiIvPjxyZWN0IHg9IjgiIHk9IjE5IiB3''@;'; put 'put ''aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMTQiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjAiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iMjYiIHk9IjE5IiB3aWR0aD0iMiIgaGVpZ2h0PSIyIi8+PHJlY3QgeD0iOCIgeT0iMjQi''@;'; put 'put ''IHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIxNCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyMCIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cmVjdCB4PSIyNiIgeT0iMjQiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiLz48cGF0aCBkPSJNMTAsMTBh''@;'; put 'put ''MSwxLDAsMCwwLDEtMVYzQTEsMSwwLDAsMCw5LDNWOUExLDEsMCwwLDAsMTAsMTBaIi8+PHBhdGggZD0iTTIyLjUsNkgxM1Y4aDkuNzhBNy40OSw3LjQ5LDAsMCwxLDIyLjUsNloiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzIuMjUsNmgtNFY5YTIuMiwyLjIsMCwxLDEtNC40LDBWNkgxMi4yVjlB''@;'; put 'put ''Mi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWNy44MUExLjc4LDEuNzgsMCwwLDAsMzIuMjUsNlpNMTAsMjZIOFYyNGgyWm0wLTVIOFYxOWgyWm0w''@;'; put 'put ''LTVIOFYxNGgyWm02LDEwSDE0VjI0aDJabTAtNUgxNFYxOWgyWm0wLTVIMTRWMTRoMlptNiwxMEgyMFYyNGgyWm0wLTVIMjBWMTloMlptMC01SDIwVjE0aDJabTYsMTBIMjZWMjRoMlptMC01SDI2VjE5aDJabTAtNUgyNlYxNGgyWiIvPjxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNB''@;'; put 'put ''MSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMjYsMTBhMSwxLDAsMCwwLDEtMVYzYTEsMSwwLDAsMC0yLDBWOUExLDEsMCwwLDAsMjYsMTBaIi8+Jyxzb2xpZEFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjgsMy42OCwwLDAsMSwxOSw5''@;'; put 'put ''Ljg5TDIxLjI5LDZIMTIuMlY5QTIuMiwyLjIsMCwwLDEsNy44LDlWNmgtNEExLjc4LDEuNzgsMCwwLDAsMiw3LjgxVjMwLjE5QTEuNzgsMS43OCwwLDAsMCwzLjc1LDMyaDI4LjVBMS43OCwxLjc4LDAsMCwwLDM0LDMwLjE5VjE1LjM4Wk0xMCwyNkg4VjI0aDJabTAtNUg4VjE5aDJabTAtNUg4''@;'; put 'put ''VjE0aDJabTYsMTBIMTRWMjRoMlptMC01SDE0VjE5aDJabTAtNUgxNFYxNGgyWm02LDEwSDIwVjI0aDJabTAtNUgyMFYxOWgyWm02LDVIMjZWMjRoMlptMC01SDI2VjE5aDJaIi8+PHBhdGggZD0iTTEwLDEwYTEsMSwwLDAsMCwxLTFWM0ExLDEsMCwwLDAsOSwzVjlBMSwxLDAsMCwwLDEwLDEw''@;'; put 'put ''WiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0xMCwxMGExLDEsMCwwLDAsMS0xVjNBMSwxLDAsMCwwLDksM1Y5QTEsMSwwLDAsMCwxMCwxMFoiLz48cGF0aCBkPSJNMzAsMTMuNUE3LjUsNy41LDAsMCwxLDIyLjUsNkgxMi4yVjlBMi4yLDIuMiwwLDAsMSw3LjgsOVY2aC00QTEuNzgsMS43''@;'; put 'put ''OCwwLDAsMCwyLDcuODFWMzAuMTlBMS43OCwxLjc4LDAsMCwwLDMuNzUsMzJoMjguNUExLjc4LDEuNzgsMCwwLDAsMzQsMzAuMTlWMTIuMzRBNy40NSw3LjQ1LDAsMCwxLDMwLDEzLjVaTTEwLDI2SDhWMjRoMlptMC01SDhWMTloMlptMC01SDhWMTRoMlptNiwxMEgxNFYyNGgyWm0wLTVIMTRW''@;'; put 'put ''MTloMlptMC01SDE0VjE0aDJabTYsMTBIMjBWMjRoMlptMC01SDIwVjE5aDJabTAtNUgyMFYxNGgyWm02LDEwSDI2VjI0aDJabTAtNUgyNlYxOWgyWm0wLTVIMjZWMTRoMloiLz4nfV0sWEFlPVsiZm9sZGVyLW9wZW4iLHtvdXRsaW5lOic8cGF0aCBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcx''@;'; put 'put ''LDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAs''@;'; put 'put ''MCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaTTI5LjU1LDI5SDYuOWwzLjg4LTEzLjgxYS42Ni42NiwwLDAsMSwuMzgtLjI0SDMzLjQ5WiIvPicsb3V0bGluZUFsZXJ0''@;'; put 'put ''ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40aC0uM0wyOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNGg5LjQyQTMuNjcsMy42NywwLDAsMSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSww''@;'; put 'put ''LDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEs''@;'; put 'put ''MzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0zNS4zMiwxMy43NEExLjcxLDEuNzEsMCwwLDAsMzMuODcsMTNIMTEuMTdhMi41OSwy''@;'; put 'put ''LjU5LDAsMCwwLTIuMjUsMS41MiwxLDEsMCwwLDAsMCwuMTRMNiwyNVY3aDYuNDlsMi42MSwzLjU5YTEsMSwwLDAsMCwuODEuNDFoOC41MmE3LjQ5LDcuNDksMCwwLDEtMS4yOS0ySDE2LjQyTDE0LjExLDUuODJBMiwyLDAsMCwwLDEyLjQ5LDVINkEyLDIsMCwwLDAsNCw3VjI5LjY5QTEuMzcs''@;'; put 'put ''MS4zNywwLDAsMCw1LjQxLDMxSDMwLjM0YTEsMSwwLDAsMCwxLS43Mmw0LjE5LTE1LjFBMS42NCwxLjY0LDAsMCwwLDM1LjMyLDEzLjc0Wk0yOS41NSwyOUg2LjlsMy44OC0xMy44MWEuNjYuNjYsMCwwLDEsLjM4LS4yNEgzMy40OVoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzUuMzIsMTMuNzRB''@;'; put 'put ''MS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxSDMyYTIsMiwwLDAsMC0yLTJIMTYuNDJMMTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2''@;'; put 'put ''QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMUExLjY0LDEuNjQsMCwwLDAsMzUuMzIsMTMuNzRaIi8+Jyxzb2xpZEFsZXJ0ZWQ6JzxwYXRoIGQ9Ik0zMy42OCwxNS40SDIyLjIzQTMuNjksMy42OSwwLDAs''@;'; put 'put ''MSwxOSwxMy41NmEzLjYzLDMuNjMsMCwwLDEtLjI2LS41NkgxMS4xN2EyLjU5LDIuNTksMCwwLDAtMi4yNSwxLjUyLDEsMSwwLDAsMCwwLC4xNEw2LDI1VjdoNi40OWwyLjYxLDMuNTlhMSwxLDAsMCwwLC44MS40MWgyLjczQTMuNjYsMy42NiwwLDAsMSwxOSw5Ljg5TDE5LjU2LDlIMTYuNDJM''@;'; put 'put ''MTQuMTEsNS44MkEyLDIsMCwwLDAsMTIuNDksNUg2QTIsMiwwLDAsMCw0LDdWMjkuNjlBMS4zNywxLjM3LDAsMCwwLDUuNDEsMzFIMzAuMzRhMSwxLDAsMCwwLDEtLjcybDQuMTktMTUuMWExLjY4LDEuNjgsMCwwLDAsLjA3LS4zMkEzLjY3LDMuNjcsMCwwLDEsMzMuNjgsMTUuNFoiLz4nLHNv''@;'; put 'put ''bGlkQmFkZ2VkOic8cGF0aCBkPSJNMzUuMzIsMTMuNzRBMS43MSwxLjcxLDAsMCwwLDMzLjg3LDEzSDExLjE3YTIuNTksMi41OSwwLDAsMC0yLjI1LDEuNTIsMSwxLDAsMCwwLDAsLjE0TDYsMjVWN2g2LjQ5bDIuNjEsMy41OWExLDEsMCwwLDAsLjgxLjQxaDguNTJhNy40OSw3LjQ5LDAsMCwx''@;'; put 'put ''LTEuMzEtMkgxNi40MkwxNC4xMSw1LjgyQTIsMiwwLDAsMCwxMi40OSw1SDZBMiwyLDAsMCwwLDQsN1YyOS42OUExLjM3LDEuMzcsMCwwLDAsNS40MSwzMUgzMC4zNGExLDEsMCwwLDAsMS0uNzJsNC4xOS0xNS4xQTEuNjQsMS42NCwwLDAsMCwzNS4zMiwxMy43NFoiLz4nfV0sSkFlPVsiZXll''@;'; put 'put ''LWhpZGUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMjUuMTksMjAuNEE2Ljc4LDYuNzgsMCwwLDAsMjUuNjIsMThhNi44Niw2Ljg2LDAsMCwwLTYuODYtNi44Niw2Ljc5LDYuNzksMCwwLDAtMi4zNy40M0wxOCwxMy4yM2E0Ljc4LDQuNzgsMCwwLDEsLjc0LS4wNkE0Ljg3LDQuODcsMCwwLDEsMjMu''@;'; put 'put ''NjIsMThhNC43OSw0Ljc5LDAsMCwxLS4wNi43NFoiLz48cGF0aCBkPSJNMzQuMjksMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwYTE2LjgyLDE2LjgyLDAsMCwwLTUuMjQuODVMMTQuODQsMTBhMTQuNzgsMTQuNzgsMCwwLDEsMy42My0uNDdjNS42MywwLDEwLjc1LDMuMTQsMTMu''@;'; put 'put ''OCw4LjQzYTE3Ljc1LDE3Ljc1LDAsMCwxLTQuMzcsNS4xbDEuNDIsMS40MmExOS45MywxOS45MywwLDAsMCw1LTZsLjI2LS40OFoiLz48cGF0aCBkPSJNNC44Nyw1Ljc4bDQuNDYsNC40NmExOS41MiwxOS41MiwwLDAsMC02LjY5LDcuMjlMMi4zOCwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgs''@;'; put 'put ''MTAsMTUuODIsMTBhMTYuOTMsMTYuOTMsMCwwLDAsNy4zNy0xLjY5bDUsNSwxLjc1LTEuNS0yNi0yNlptOS43NSw5Ljc1LDYuNjUsNi42NWE0LjgxLDQuODEsMCwwLDEtMi41LjcyQTQuODcsNC44NywwLDAsMSwxMy45LDE4LDQuODEsNC44MSwwLDAsMSwxNC42MiwxNS41M1ptLTEuNDUtMS40''@;'; put 'put ''NWE2Ljg1LDYuODUsMCwwLDAsOS41NSw5LjU1bDEuNiwxLjZhMTQuOTEsMTQuOTEsMCwwLDEtNS44NiwxLjJjLTUuNjMsMC0xMC43NS0zLjE0LTEzLjgtOC40M2ExNy4yOSwxNy4yOSwwLDAsMSw2LjEyLTYuM1oiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTguMzcsMTEuMTdBNi43OSw2Ljc5LDAs''@;'; put 'put ''MCwwLDE2LDExLjZsOC44LDguOEE2Ljc4LDYuNzgsMCwwLDAsMjUuMjMsMTgsNi44Niw2Ljg2LDAsMCwwLDE4LjM3LDExLjE3WiIvPjxwYXRoIGQ9Ik0zNC4yOSwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBhMTYuODIsMTYuODIsMCwwLDAtNS4yNC44NUwxNC44NCwxMGExNC43''@;'; put 'put ''OCwxNC43OCwwLDAsMSwzLjYzLS40N2M1LjYzLDAsMTAuNzUsMy4xNCwxMy44LDguNDNhMTcuNzUsMTcuNzUsMCwwLDEtNC4zNyw1LjFsMS40MiwxLjQyYTE5LjkzLDE5LjkzLDAsMCwwLDUtNmwuMjYtLjQ4WiIvPjxwYXRoIGQ9Ik00Ljg3LDUuNzhsNC40Niw0LjQ2YTE5LjUyLDE5LjUyLDAs''@;'; put 'put ''MCwwLTYuNjksNy4yOUwyLjM4LDE4bC4yNi40OGMzLjM3LDYuMjMsOS4yOCwxMCwxNS44MiwxMGExNi45MywxNi45MywwLDAsMCw3LjM3LTEuNjlsNSw1LDEuNzUtMS41LTI2LTI2Wm04LjMsOC4zYTYuODUsNi44NSwwLDAsMCw5LjU1LDkuNTVsMS42LDEuNmExNC45MSwxNC45MSwwLDAsMS01''@;'; put 'put ''Ljg2LDEuMmMtNS42MywwLTEwLjc1LTMuMTQtMTMuOC04LjQzYTE3LjI5LDE3LjI5LDAsMCwxLDYuMTItNi4zWiIvPid9XSxRQWU9WyJleWUiLHtvdXRsaW5lOic8cGF0aCBkPSJNMzMuNjIsMTcuNTNjLTMuMzctNi4yMy05LjI4LTEwLTE1LjgyLTEwUzUuMzQsMTEuMywyLDE3LjUzTDEuNzIs''@;'; put 'put ''MThsLjI2LjQ4YzMuMzcsNi4yMyw5LjI4LDEwLDE1LjgyLDEwczEyLjQ2LTMuNzIsMTUuODItMTBsLjI2LS40OFpNMTcuOCwyNi40M0MxMi4xNywyNi40Myw3LDIzLjI5LDQsMThjMy01LjI5LDguMTctOC40MywxMy44LTguNDNTMjguNTQsMTIuNzIsMzEuNTksMThDMjguNTQsMjMuMjksMjMu''@;'; put 'put ''NDIsMjYuNDMsMTcuOCwyNi40M1oiLz48cGF0aCBkPSJNMTguMDksMTEuMTdBNi44Niw2Ljg2LDAsMSwwLDI1LDE4LDYuODYsNi44NiwwLDAsMCwxOC4wOSwxMS4xN1ptMCwxMS43MkE0Ljg2LDQuODYsMCwxLDEsMjMsMTgsNC44Nyw0Ljg3LDAsMCwxLDE4LjA5LDIyLjg5WiIvPicsc29saWQ6''@;'; put 'put ''JzxwYXRoIGQ9Ik0zMy42MiwxNy41M2MtMy4zNy02LjIzLTkuMjgtMTAtMTUuODItMTBTNS4zNCwxMS4zLDIsMTcuNTNMMS43MiwxOGwuMjYuNDhjMy4zNyw2LjIzLDkuMjgsMTAsMTUuODIsMTBzMTIuNDYtMy43MiwxNS44Mi0xMGwuMjYtLjQ4Wk0xNy44LDI2LjQzQzEyLjE3LDI2LjQzLDcs''@;'; put 'put ''MjMuMjksNCwxOGMzLTUuMjksOC4xNy04LjQzLDEzLjgtOC40M1MyOC41NCwxMi43MiwzMS41OSwxOEMyOC41NCwyMy4yOSwyMy40MiwyNi40MywxNy44LDI2LjQzWiIvPjxjaXJjbGUgY3g9IjE4LjA5IiBjeT0iMTguMDMiIHI9IjYuODYiLz4nfV0sZURlPVsiZWxsaXBzaXMtdmVydGljYWwi''@;'; put 'put ''LHtvdXRsaW5lOic8Y2lyY2xlIGN4PSIxOCIgY3k9IjQuOSIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iMTgiIGN5PSIxOCIgcj0iMi45Ii8+PGNpcmNsZSBjeD0iMTgiIGN5PSIzMS4xIiByPSIyLjkiLz4nLG91dGxpbmVCYWRnZWQ6JzxjaXJjbGUgY3g9IjE4IiBjeT0iNC45IiByPSIyLjkiLz48''@;'; put 'put ''Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIyLjkiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjMxLjEiIHI9IjIuOSIvPid9XSx0RGU9WyJ2aWV3LWNvbHVtbnMiLHtvdXRsaW5lOic8cGF0aCBkPSJNMzEsNUg1QTIsMiwwLDAsMCwzLDdWMjlhMiwyLDAsMCwwLDIsMkgzMWEyLDIsMCwwLDAsMi0y''@;'; put 'put ''VjdBMiwyLDAsMCwwLDMxLDVaTTEzLDI5SDVWN2g4Wm0xMCwwSDE1VjdoOFoiLz4nfV0sbkRlPVsiYXJyb3ciLHtvdXRsaW5lOic8cGF0aCBkPSJNMjcuNjYsMTUuNjEsMTgsNiw4LjM0LDE1LjYxQTEsMSwwLDEsMCw5Ljc1LDE3TDE3LDkuODFWMjguOTRhMSwxLDAsMSwwLDIsMFY5LjgxTDI2''@;'; put 'put ''LjI1LDE3YTEsMSwwLDAsMCwxLjQxLTEuNDJaIi8+J31dLEZsZT1bInRpbWVzIix7b3V0bGluZTonPHBhdGggZD0iTTE5LjQxLDE4bDguMjktOC4yOWExLDEsMCwwLDAtMS40MS0xLjQxTDE4LDE2LjU5LDkuNzEsOC4yOUExLDEsMCwwLDAsOC4yOSw5LjcxTDE2LjU5LDE4LDguMjksMjYuMjlh''@;'; put 'put ''MSwxLDAsMSwwLDEuNDEsMS40MUwxOCwxOS40MWw4LjI5LDguMjlhMSwxLDAsMCwwLDEuNDEtMS40MVoiLz4nfV0sckRlPVsic3RlcC1mb3J3YXJkLTIiLHtvdXRsaW5lOic8cGF0aCBkPSJNNy4wOCw2LjUyYTEuNjgsMS42OCwwLDAsMCwwLDIuNEwxNi41MSwxOCw3LjEyLDI3LjA4YTEuNywx''@;'; put 'put ''LjcsMCwwLDAsMi4zNiwyLjQ0aDBMMjEuNCwxOCw5LjQ4LDYuNDdBMS42OSwxLjY5LDAsMCwwLDcuMDgsNi41MloiLz48cGF0aCBkPSJNMjYuNDksNWExLjcsMS43LDAsMCwwLTEuNywxLjdWMjkuM2ExLjcsMS43LDAsMCwwLDMuNCwwVjYuN0ExLjcsMS43LDAsMCwwLDI2LjQ5LDVaIi8+J31d''@;'; put 'put ''LE5sZT1bImFuZ2xlLWRvdWJsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik0yOSwxOS40MWExLDEsMCwwLDEtLjcxLS4yOUwxOCw4LjgzLDcuNzEsMTkuMTJhMSwxLDAsMCwxLTEuNDEtMS40MUwxOCw2LDI5LjcxLDE3LjcxQTEsMSwwLDAsMSwyOSwxOS40MVoiLz48cGF0aCBkPSJNMjksMzAuNDFh''@;'; put 'put ''MSwxLDAsMCwxLS43MS0uMjlMMTgsMTkuODMsNy43MSwzMC4xMmExLDEsMCwwLDEtMS40MS0xLjQxTDE4LDE3LDI5LjcxLDI4LjcxQTEsMSwwLDAsMSwyOSwzMC40MVoiLz4nfV0saURlPVsiZmlsdGVyLWdyaWQtY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE1LDI1Ljg2bDIsMVYyMC4y''@;'; put 'put ''N2ExLDEsMCwwLDAtLjI5LS43TDEwLjIzLDEzSDI1Ljc5bC02LjQ3LDYuNTdhMSwxLDAsMCwwLS4yOS43TDE5LDI4bDIsMVYyMC42OEwyNy41OCwxNEExLjQ2LDEuNDYsMCwwLDAsMjgsMTNWMTJhMSwxLDAsMCwwLTEtMUg5YTEsMSwwLDAsMC0xLDF2MWExLjQ2LDEuNDYsMCwwLDAsLjQyLDFM''@;'; put 'put ''MTUsMjAuNjhaIi8+PHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTgsMkExNiwxNiwwLDEsMCwzNCwxOCwxNiwxNiwwLDAsMCwxOCwy''@;'; put 'put ''Wm0wLDMwQTE0LDE0LDAsMSwxLDMyLDE4LDE0LDE0LDAsMCwxLDE4LDMyWiIvPjxwYXRoIGQ9Ik04LDExdjEuMTJhLjUuNSwwLDAsMCwuMTUuMzVsNy4yOCw3LjM2YS41LjUsMCwwLDEsLjE1LjM1djYuODlhLjUuNSwwLDAsMCwuMjguNDVsMy45NSwxLjQxYS41LjUsMCwwLDAsLjcyLS40NWww''@;'; put 'put ''LTguMzlhLjU0LjU0LDAsMCwxLC4xOC0uMzVsNy4xMi03LjI1YS41LjUsMCwwLDAsLjE1LS4zNVYxMVoiLz4nfV0sb0RlPVsiZmlsdGVyLWdyaWQiLHtvdXRsaW5lOic8cGF0aCBkPSJNMTUsMjUuODZsMiwxVjIwLjI3YTEsMSwwLDAsMC0uMjktLjdMMTAuMjMsMTNIMjUuNzlsLTYuNDcsNi41''@;'; put 'put ''N2ExLDEsMCwwLDAtLjI5LjdMMTksMjhsMiwxVjIwLjY4TDI3LjU4LDE0QTEuNDYsMS40NiwwLDAsMCwyOCwxM1YxMmExLDEsMCwwLDAtMS0xSDlhMSwxLDAsMCwwLTEsMXYxYTEuNDYsMS40NiwwLDAsMCwuNDIsMUwxNSwyMC42OFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNOCwxMXYxLjEyYS41''@;'; put 'put ''LjUsMCwwLDAsLjE1LjM1bDcuMjgsNy4zNmEuNS41LDAsMCwxLC4xNS4zNXY2Ljg5YS41LjUsMCwwLDAsLjI4LjQ1bDMuOTUsMS40MWEuNS41LDAsMCwwLC43Mi0uNDVsMC04LjM5YS41NC41NCwwLDAsMSwuMTgtLjM1bDcuMTItNy4yNWEuNS41LDAsMCwwLC4xNS0uMzVWMTFaIi8+J31dLFFV''@;'; put 'put ''PVsiZXJyb3Itc3RhbmRhcmQiLHtvdXRsaW5lOic8Y2lyY2xlIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+PHBhdGggZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiww''@;'; put 'put ''LDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAsMCwxOCw0WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwyLjFhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMTgsMi4xWk0xNi42LDguOGExLjQsMS40LDAsMCwxLDIuOCww''@;'; put 'put ''djEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI4LjZhMS44LDEuOCwwLDEsMSwxLjgtMS44QTEuOCwxLjgsMCwwLDEsMTgsMjguNloiLz4nfV0sc0RlPVsiaGVscCIse291dGxpbmU6JzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabTAsMzBBMTQs''@;'; put 'put ''MTQsMCwxLDEsMzIsMTgsMTQsMTQsMCwwLDEsMTgsMzJaIi8+PHBhdGggZD0iTTE4LjI5LDguOTJhNy4zOCw3LjM4LDAsMCwwLTUuNzIsMi41NywxLDEsMCwwLDAtLjMyLjcxLjkyLjkyLDAsMCwwLC45NS45MiwxLjA4LDEuMDgsMCwwLDAsLjcxLS4yOSw1LjcsNS43LDAsMCwxLDQuMzMtMmMy''@;'; put 'put ''LjM2LDAsMy44MywxLjUyLDMuODMsMy40MXYuMDVjMCwyLjIxLTEuNzYsMy40NC00LjU0LDMuNjVhLjguOCwwLDAsMC0uNzYuOTJzMCwyLjMyLDAsMi43NWExLDEsMCwwLDAsMSwuOWguMTFhMSwxLDAsMCwwLC45LTFWMTkuNDVjMy0uNDIsNS40My0yLDUuNDMtNS4yOHYtLjA1QzI0LjE4LDEx''@;'; put 'put ''LjEyLDIxLjg0LDguOTIsMTguMjksOC45MloiLz48Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIiIHI9IjEuMjUiLz4nLG91dGxpbmVCYWRnZWQ6JzxwYXRoIGQ9Ik0yNC4xOCwxNC4xN3YtLjA1YzAtMy0yLjM0LTUuMi01Ljg4LTUuMmE3LjM4LDcuMzgsMCwwLDAtNS43MiwyLjU3LDEsMSww''@;'; put 'put ''LDAsMC0uMzIuNzEuOTIuOTIsMCwwLDAsLjk1LjkyLDEuMDgsMS4wOCwwLDAsMCwuNzEtLjI5LDUuNyw1LjcsMCwwLDEsNC4zMy0yYzIuMzYsMCwzLjgzLDEuNTIsMy44MywzLjQxdi4wNWMwLDIuMjEtMS43NiwzLjQ0LTQuNTQsMy42NWEuOC44LDAsMCwwLS43Ni45MnMwLDIuMzIsMCwyLjc1''@;'; put 'put ''YTEsMSwwLDAsMCwxLC45aC4xMWExLDEsMCwwLDAsLjktMVYxOS40NUMyMS43NSwxOSwyNC4xOCwxNy40NSwyNC4xOCwxNC4xN1oiLz48Y2lyY2xlIGN4PSIxNy43OCIgY3k9IjI2LjIiIHI9IjEuMjUiLz48cGF0aCBkPSJNMzMuMTIsMTIuODFhNy40Myw3LjQzLDAsMCwxLTEuOTEuNTgsMTQu''@;'; put 'put ''MDUsMTQuMDUsMCwxLDEtOC42LTguNiw3LjQ0LDcuNDQsMCwwLDEsLjU4LTEuOTEsMTYuMDYsMTYuMDYsMCwxLDAsOS45Myw5LjkzWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCwyQTE2LDE2LDAsMSwwLDM0LDE4LDE2LDE2LDAsMCwwLDE4LDJabS0uMjIsMjUuODVhMS42NSwxLjY1LDAsMSwx''@;'; put 'put ''LDEuNjUtMS42NUExLjY1LDEuNjUsMCwwLDEsMTcuNzgsMjcuODVabTEuMzctOC4wNnYxLjcyYTEuMzcsMS4zNywwLDAsMS0xLjMsMS4zNmgtLjExYTEuMzQsMS4zNCwwLDAsMS0xLjM5LTEuM2MwLS40NCwwLTIuNzYsMC0yLjc2YTEuMTksMS4xOSwwLDAsMSwxLjEyLTEuMzFjMS41Ny0uMTIs''@;'; put 'put ''NC4xOC0uNyw0LjE4LTMuMjUsMC0xLjgzLTEuNDEtMy4wNy0zLjQzLTMuMDdhNS4zMSw1LjMxLDAsMCwwLTQsMS45MiwxLjM2LDEuMzYsMCwwLDEtMi4zNS0uOSwxLjQzLDEuNDMsMCwwLDEsLjQzLTEsNy43Nyw3Ljc3LDAsMCwxLDYtMi42OWMzLjcsMCw2LjI4LDIuMyw2LjI4LDUuNkMyNC41''@;'; put 'put ''OCwxNy4xNiwyMi42MSwxOS4yLDE5LjE1LDE5Ljc5WiIvPicsc29saWRCYWRnZWQ6JzxwYXRoIGQ9Ik0zMy4xMiwxMi44MWE3LjQ5LDcuNDksMCwwLDEtOS45My05LjkzLDE2LjA2LDE2LjA2LDAsMSwwLDkuOTMsOS45M1ptLTE1LjM0LDE1YTEuNjUsMS42NSwwLDEsMSwxLjY1LTEuNjVBMS42''@;'; put 'put ''NSwxLjY1LDAsMCwxLDE3Ljc4LDI3Ljg1Wm0xLjM3LTguMDZ2MS43MmExLjM3LDEuMzcsMCwwLDEtMS4zLDEuMzZoLS4xMWExLjM0LDEuMzQsMCwwLDEtMS4zOS0xLjNjMC0uNDQsMC0yLjc2LDAtMi43NmExLjE5LDEuMTksMCwwLDEsMS4xMi0xLjMxYzEuNTctLjEyLDQuMTgtLjcsNC4xOC0z''@;'; put 'put ''LjI1LDAtMS44My0xLjQxLTMuMDctMy40My0zLjA3YTUuMzEsNS4zMSwwLDAsMC00LDEuOTIsMS4zNiwxLjM2LDAsMCwxLTIuMzUtLjksMS40MywxLjQzLDAsMCwxLC40My0xLDcuNzcsNy43NywwLDAsMSw2LTIuNjljMy43LDAsNi4yOCwyLjMsNi4yOCw1LjZDMjQuNTgsMTcuMTYsMjIuNjEs''@;'; put 'put ''MTkuMiwxOS4xNSwxOS43OVoiLz4nfV0sYURlPVsiaW5mby1zdGFuZGFyZCIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE3Ljk3IiBjeT0iMTAuNDUiIHI9IjEuNCIvPjxwYXRoIGQ9Ik0yMSwyNUgxOVYxNC4xSDE2YTEsMSwwLDAsMCwwLDJoMVYyNUgxNWExLDEsMCwwLDAsMCwyaDZhMSwxLDAs''@;'; put 'put ''MCwwLDAtMloiLz48cGF0aCBkPSJNMTgsMzRBMTYsMTYsMCwxLDEsMzQsMTgsMTYsMTYsMCwwLDEsMTgsMzRaTTE4LDRBMTQsMTQsMCwxLDAsMzIsMTgsMTQsMTQsMCwwLDAsMTgsNFoiLz4nLHNvbGlkOic8cGF0aCBkPSJNMTgsMi4xYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDE4''@;'; put 'put ''LDIuMVptLS4xLDUuMjhhMiwyLDAsMSwxLTIsMkEyLDIsMCwwLDEsMTcuOSw3LjM4Wm0zLjYsMjEuMjVoLTdhMS40LDEuNCwwLDEsMSwwLTIuOGgyLjF2LTkuMkgxNWExLjQsMS40LDAsMSwxLDAtMi44aDQuNHYxMmgyLjFhMS40LDEuNCwwLDEsMSwwLDIuOFoiLz4nfV0sbERlPVsibm90ZSIs''@;'; put 'put ''e291dGxpbmU6JzxwYXRoIGQ9Ik0yOCwzMEg2VjhIMTkuMjJsMi0ySDZBMiwyLDAsMCwwLDQsOFYzMGEyLDIsMCwwLDAsMiwySDI4YTIsMiwwLDAsMCwyLTJWMTVsLTIsMloiLz48cGF0aCBkPSJNMzMuNTMsNS44NCwzMC4xNiwyLjQ3YTEuNjEsMS42MSwwLDAsMC0yLjI4LDBMMTQuMTcsMTYu''@;'; put 'put ''MjZsLTEuMTEsNC44MUExLjYxLDEuNjEsMCwwLDAsMTQuNjMsMjMsMS42OSwxLjY5LDAsMCwwLDE1LDIzbDQuODUtMS4wN0wzMy41Myw4LjEyQTEuNjEsMS42MSwwLDAsMCwzMy41Myw1Ljg0Wk0xOC44MSwyMC4wOGwtMy42Ni44MUwxNiwxNy4yNiwyNi4zMiw2Ljg3bDIuODIsMi44MlpNMzAu''@;'; put 'put ''MjcsOC41NiwyNy40NSw1Ljc0LDI5LDQuMTYsMzEuODQsN1oiLz4nLHNvbGlkOic8cGF0aCBkPSJNMzMsNi40LDI5LjMsMi43YTEuNzEsMS43MSwwLDAsMC0yLjM2LDBMMjMuNjUsNkg2QTIsMiwwLDAsMCw0LDhWMzBhMiwyLDAsMCwwLDIsMkgyOGEyLDIsMCwwLDAsMi0yVjExLjc2bDMtM0Ex''@;'; put 'put ''LjY3LDEuNjcsMCwwLDAsMzMsNi40Wk0xOC44MywyMC4xM2wtNC4xOS45MywxLTQuMTUsOS41NS05LjU3LDMuMjMsMy4yM1pNMjkuNSw5LjQzLDI2LjI3LDYuMmwxLjg1LTEuODUsMy4yMywzLjIzWiIvPid9XSxIbGU9WyJzdWNjZXNzLXN0YW5kYXJkIix7b3V0bGluZTonPHBhdGggZD0iTTE4''@;'; put 'put ''LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlptMCwzMEExNCwxNCwwLDEsMSwzMiwxOCwxNCwxNCwwLDAsMSwxOCwzMloiLz48cGF0aCBkPSJNMjgsMTIuMWExLDEsMCwwLDAtMS40MSwwTDE1LjQ5LDIzLjE1bC02LTZBMSwxLDAsMCwwLDgsMTguNTNMMTUuNDksMjYsMjgs''@;'; put 'put ''MTMuNTJBMSwxLDAsMCwwLDI4LDEyLjFaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDJBMTYsMTYsMCwxLDAsMzQsMTgsMTYsMTYsMCwwLDAsMTgsMlpNMjguNDUsMTIuNjMsMTUuMzEsMjUuNzYsNy41NSwxOGExLjQsMS40LDAsMCwxLDItMmw1Ljc4LDUuNzhMMjYuNDcsMTAuNjVhMS40LDEu''@;'; put 'put ''NCwwLDEsMSwyLDJaIi8+J31dLGNEZT1bIndhcm5pbmctc3RhbmRhcmQiLHtvdXRsaW5lOic8Y2lyY2xlIGN4PSIxOCIgY3k9IjI2LjA2IiByPSIxLjMzIi8+PHBhdGggZD0iTTE4LDIyLjYxYTEsMSwwLDAsMS0xLTF2LTEyYTEsMSwwLDEsMSwyLDB2MTJBMSwxLDAsMCwxLDE4LDIyLjYxWiIv''@;'; put 'put ''PjxwYXRoIGQ9Ik0xNS4wNjIwNzgyLDEuNjgxMTk2IEMxNS42Mjk4ODE5LDAuNjQ5MjY2MzU1IDE2LjcxMDkwOTEsMC4wMTAyMjE5Mzk2IDE3Ljg4NSwwLjAxMDIyMTkzOTYgQzE5LjA1OTA5MDksMC4wMTAyMjE5Mzk2IDIwLjE0MDExODEsMC42NDkyNjYzNTUgMjAuNzA4NjQzMywxLjY4MjUy''@;'; put 'put ''MTI5IEwzNC41OTg2NDQsMjcuMjQyNTIyNSBDMzUuMTQwNzc0NiwyOC4yNDAxMzk3IDM1LjExNzQzNDUsMjkuNDQ5NTM3MyAzNC41MzcyMTYxLDMwLjQyNTQ5NDMgQzMzLjk1Njk5NzcsMzEuNDAxNDUxNCAzMi45MDU2NzEsMzEuOTk5Njk4NCAzMS43NywzMiBMNC4wMjIzOTMyMywzMS45OTk3''@;'; put 'put ''NDkyIEMyLjg3NDA5MDA5LDMyLjAyNTQ2OTkgMS43OTkwMjg0MywzMS40Mzc1NzUzIDEuMjAxMDYzMzUsMzAuNDU2OTEyNiBDMC42MDMwOTgyNjUsMjkuNDc2MjQ5OSAwLjU3Mjc3Nzg5OSwyOC4yNTEzMTc5IDEuMTIyMDc4MTgsMjcuMjQxMTk2IEwxNS4wNjIwNzgyLDEuNjgxMTk2IFogTTIu''@;'; put 'put ''ODc4NTA3NjcsMjguMTk3NzI4MiBDMi42NzA2MDk2NiwyOC41ODAwMzc2IDIuNjgyMDk3NSwyOS4wNDQxNDIzIDIuOTA4NjU1NywyOS40MTU2OTc3IEMzLjEzNTIxMzksMjkuNzg3MjUzMiAzLjU0MjUzNTQsMzAuMDA5OTk1OSA0LDMwIEwzMS43Njk3MzQ0LDMwIEMzMi4xOTk5MTkxLDI5Ljk5''@;'; put 'put ''OTg4NTggMzIuNTk4MjQ3OCwyOS43NzMyMjA4IDMyLjgxODA4MjEsMjkuNDAzNDQ4MiBDMzMuMDM3OTE2NCwyOS4wMzM2NzU3IDMzLjA0Njc1OTUsMjguNTc1NDU2NyAzMi44NDEzNTY3LDI4LjE5NzQ3ODcgTDE4Ljk1Mzg3MzksMi42NDIwODE5NSBDMTguNzM5NDIzNiwyLjI1MjM0NDM2IDE4''@;'; put 'put ''LjMyOTg0MTksMi4wMTAyMjE5NCAxNy44ODUsMi4wMTAyMjE5NCBDMTcuNDQwNjg4OSwyLjAxMDIyMTk0IDE3LjAzMTU1MzgsMi4yNTE3NjY5MiAxNi44MTY4OTQ2LDIuNjQwNjg3NTMgTDIuODc4NTA3NjcsMjguMTk3NzI4MiBaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTM0LjYsMjkuMjEsMjAu''@;'; put 'put ''NzEsMy42NWEzLjIyLDMuMjIsMCwwLDAtNS42NiwwTDEuMTcsMjkuMjFBMy4yMiwzLjIyLDAsMCwwLDQsMzRIMzEuNzdhMy4yMiwzLjIyLDAsMCwwLDIuODMtNC43NVpNMTYuNiwxMGExLjQsMS40LDAsMCwxLDIuOCwwdjEyYTEuNCwxLjQsMCwwLDEtMi44LDBaTTE4LDI5Ljg1YTEuOCwxLjgs''@;'; put 'put ''MCwxLDEsMS44LTEuOEExLjgsMS44LDAsMCwxLDE4LDI5Ljg1WiIvPid9XSx1RGU9WyJpbmZvLWNpcmNsZSIse291dGxpbmU6JzxjaXJjbGUgY3g9IjE3LjkzIiBjeT0iMTEuOSIgcj0iMS40Ii8+PHBhdGggZD0iTTIxLDIzSDE5VjE1SDE2YTEsMSwwLDAsMCwwLDJoMXY2SDE1YTEsMSwwLDEs''@;'; put 'put ''MCwwLDJoNmExLDEsMCwwLDAsMC0yWiIvPjxwYXRoIGQ9Ik0xOCw2QTEyLDEyLDAsMSwwLDMwLDE4LDEyLDEyLDAsMCwwLDE4LDZabTAsMjJBMTAsMTAsMCwxLDEsMjgsMTgsMTAsMTAsMCwwLDEsMTgsMjhaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDZBMTIsMTIsMCwxLDAsMzAsMTgsMTIs''@;'; put 'put ''MTIsMCwwLDAsMTgsNlptLTIsNS4xNWEyLDIsMCwxLDEsMiwyQTIsMiwwLDAsMSwxNS45LDExLjE1Wk0yMywyNGExLDEsMCwwLDEtMSwxSDE1YTEsMSwwLDEsMSwwLTJoMlYxN0gxNmExLDEsMCwwLDEsMC0yaDR2OGgyQTEsMSwwLDAsMSwyMywyNFoiLz4nfV0sZERlPVsiY2lyY2xlIix7b3V0''@;'; put 'put ''bGluZTonPHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0Wk0xOCw0QTE0LDE0LDAsMSwwLDMyLDE4LDE0LDE0LDAsMCwwLDE4LDRaIi8+Jyxzb2xpZDonPHBhdGggZD0iTTE4LDM0QTE2LDE2LDAsMSwxLDM0LDE4LDE2LDE2LDAsMCwxLDE4LDM0WiIv''@;'; put 'put ''Pid9XSxoRGU9WyJkb3QtY2lyY2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDExYTcsNywwLDEsMS03LDcsNyw3LDAsMCwxLDctNyIvPjxwYXRoIGQ9Ik0xOCwzNEExNiwxNiwwLDEsMSwzNCwxOCwxNiwxNiwwLDAsMSwxOCwzNFpNMTgsNEExNCwxNCwwLDEsMCwzMiwxOCwxNCwxNCwwLDAs''@;'; put 'put ''MCwxOCw0WiIvPid9XTtjbGFzcyBnRGUgZXh0ZW5kcyBLdHtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKCl9c2NoZWR1bGUoYyxhPTApe3JldHVybiB0aGlzfX1jb25zdCBLST17c2V0SW50ZXJ2YWwobCxjLC4uLmEpe2NvbnN0e2RlbGVnYXRlOmR9PUtJO3JldHVybiBkPy5zZXRJbnRlcnZhbD9k''@;'; put 'put ''LnNldEludGVydmFsKGwsYywuLi5hKTpzZXRJbnRlcnZhbChsLGMsLi4uYSl9LGNsZWFySW50ZXJ2YWwobCl7Y29uc3R7ZGVsZWdhdGU6Y309S0k7cmV0dXJuKGM/LmNsZWFySW50ZXJ2YWx8fGNsZWFySW50ZXJ2YWwpKGwpfSxkZWxlZ2F0ZTp2b2lkIDB9O2NsYXNzIHRaIGV4dGVuZHMgZ0Rl''@;'; put 'put ''e2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYyxhKSx0aGlzLnNjaGVkdWxlcj1jLHRoaXMud29yaz1hLHRoaXMucGVuZGluZz0hMX1zY2hlZHVsZShjLGE9MCl7dmFyIGQ7aWYodGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT1jO2NvbnN0IGg9dGhpcy5pZCxmPXRoaXMuc2NoZWR1''@;'; put 'put ''bGVyO3JldHVybiBudWxsIT1oJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKGYsaCxhKSksdGhpcy5wZW5kaW5nPSEwLHRoaXMuZGVsYXk9YSx0aGlzLmlkPW51bGwhPT0oZD10aGlzLmlkKSYmdm9pZCAwIT09ZD9kOnRoaXMucmVxdWVzdEFzeW5jSWQoZix0aGlzLmlkLGEpLHRoaXN9''@;'; put 'put ''cmVxdWVzdEFzeW5jSWQoYyxhLGQ9MCl7cmV0dXJuIEtJLnNldEludGVydmFsKGMuZmx1c2guYmluZChjLHRoaXMpLGQpfXJlY3ljbGVBc3luY0lkKGMsYSxkPTApe2lmKG51bGwhPWQmJnRoaXMuZGVsYXk9PT1kJiYhMT09PXRoaXMucGVuZGluZylyZXR1cm4gYTtudWxsIT1hJiZLSS5jbGVh''@;'; put 'put ''ckludGVydmFsKGEpfWV4ZWN1dGUoYyxhKXtpZih0aGlzLmNsb3NlZClyZXR1cm4gbmV3IEVycm9yKCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uIik7dGhpcy5wZW5kaW5nPSExO2NvbnN0IGQ9dGhpcy5fZXhlY3V0ZShjLGEpO2lmKGQpcmV0dXJuIGQ7ITE9PT10aGlzLnBlbmRpbmcm''@;'; put 'put ''Jm51bGwhPXRoaXMuaWQmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsdGhpcy5pZCxudWxsKSl9X2V4ZWN1dGUoYyxhKXtsZXQgaCxkPSExO3RyeXt0aGlzLndvcmsoYyl9Y2F0Y2goZil7ZD0hMCxoPWZ8fG5ldyBFcnJvcigiU2NoZWR1bGVkIGFjdGlvbiB0''@;'; put 'put ''aHJldyBmYWxzeSBlcnJvciIpfWlmKGQpcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSxofXVuc3Vic2NyaWJlKCl7aWYoIXRoaXMuY2xvc2VkKXtjb25zdHtpZDpjLHNjaGVkdWxlcjphfT10aGlzLHthY3Rpb25zOmR9PWE7dGhpcy53b3JrPXRoaXMuc3RhdGU9dGhpcy5zY2hlZHVsZXI9bnVs''@;'; put 'put ''bCx0aGlzLnBlbmRpbmc9ITEsT3QoZCx0aGlzKSxudWxsIT1jJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKGEsYyxudWxsKSksdGhpcy5kZWxheT1udWxsLHN1cGVyLnVuc3Vic2NyaWJlKCl9fX1jb25zdCBuWj17bm93OigpPT4oblouZGVsZWdhdGV8fERhdGUpLm5vdygpLGRlbGVn''@;'; put 'put ''YXRlOnZvaWQgMH07Y2xhc3MgaU17Y29uc3RydWN0b3IoYyxhPWlNLm5vdyl7dGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yPWMsdGhpcy5ub3c9YX1zY2hlZHVsZShjLGE9MCxkKXtyZXR1cm4gbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLGMpLnNjaGVkdWxlKGQsYSl9fWlNLm5v''@;'; put 'put ''dz1uWi5ub3c7Y2xhc3MgclogZXh0ZW5kcyBpTXtjb25zdHJ1Y3RvcihjLGE9aU0ubm93KXtzdXBlcihjLGEpLHRoaXMuYWN0aW9ucz1bXSx0aGlzLl9hY3RpdmU9ITF9Zmx1c2goYyl7Y29uc3R7YWN0aW9uczphfT10aGlzO2lmKHRoaXMuX2FjdGl2ZSlyZXR1cm4gdm9pZCBhLnB1c2goYyk7''@;'; put 'put ''bGV0IGQ7dGhpcy5fYWN0aXZlPSEwO2Rve2lmKGQ9Yy5leGVjdXRlKGMuc3RhdGUsYy5kZWxheSkpYnJlYWt9d2hpbGUoYz1hLnNoaWZ0KCkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxkKXtmb3IoO2M9YS5zaGlmdCgpOyljLnVuc3Vic2NyaWJlKCk7dGhyb3cgZH19fWNvbnN0IFhJPW5ldyByWih0''@;'; put 'put ''WiksbURlPVhJO2Z1bmN0aW9uIGg4KGwsYz1YSSl7cmV0dXJuIGRpKChhLGQpPT57bGV0IGg9bnVsbCxmPW51bGwsdj1udWxsO2NvbnN0IFM9KCk9PntpZihoKXtoLnVuc3Vic2NyaWJlKCksaD1udWxsO2NvbnN0IFE9ZjtmPW51bGwsZC5uZXh0KFEpfX07ZnVuY3Rpb24gVigpe2NvbnN0IFE9''@;'; put 'put ''ditsLGRlPWMubm93KCk7aWYoZGU8USlyZXR1cm4gaD10aGlzLnNjaGVkdWxlKHZvaWQgMCxRLWRlKSx2b2lkIGQuYWRkKGgpO1MoKX1hLnN1YnNjcmliZShmaShkLFE9PntmPVEsdj1jLm5vdygpLGh8fChoPWMuc2NoZWR1bGUoVixsKSxkLmFkZChoKSl9LCgpPT57UygpLGQuY29tcGxldGUo''@;'; put 'put ''KX0sdm9pZCAwLCgpPT57Zj1oPW51bGx9KSl9KX1jb25zdCB2RGU9WyJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIl0sX0RlPVsiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSxiRGU9WyJvbiIsIm9mZiJdO2Z1bmN0aW9uIHdkKGwsYyxhLGQpe2lmKHN0KGEp''@;'; put 'put ''JiYoZD1hLGE9dm9pZCAwKSxkKXJldHVybiB3ZChsLGMsYSkucGlwZShQeihkKSk7Y29uc3RbaCxmXT1mdW5jdGlvbiBDRGUobCl7cmV0dXJuIHN0KGwuYWRkRXZlbnRMaXN0ZW5lcikmJnN0KGwucmVtb3ZlRXZlbnRMaXN0ZW5lcil9KGwpP19EZS5tYXAodj0+Uz0+bFt2XShjLFMsYSkpOmZ1''@;'; put 'put ''bmN0aW9uIHlEZShsKXtyZXR1cm4gc3QobC5hZGRMaXN0ZW5lcikmJnN0KGwucmVtb3ZlTGlzdGVuZXIpfShsKT92RGUubWFwKFZsZShsLGMpKTpmdW5jdGlvbiB3RGUobCl7cmV0dXJuIHN0KGwub24pJiZzdChsLm9mZil9KGwpP2JEZS5tYXAoVmxlKGwsYykpOltdO2lmKCFoJiZMeihsKSly''@;'; put 'put ''ZXR1cm4gczAodj0+d2QodixjLGEpKShFMChsKSk7aWYoIWgpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBldmVudCB0YXJnZXQiKTtyZXR1cm4gbmV3IENuKHY9Pntjb25zdCBTPSguLi5WKT0+di5uZXh0KDE8Vi5sZW5ndGg/VjpWWzBdKTtyZXR1cm4gaChTKSwoKT0+ZihTKX0pfWZ1''@;'; put 'put ''bmN0aW9uIFZsZShsLGMpe3JldHVybiBhPT5kPT5sW2FdKGMsZCl9Y2xhc3Mgb00gZXh0ZW5kcyB0bntjb25zdHJ1Y3RvcihjPTEvMCxhPTEvMCxkPW5aKXtzdXBlcigpLHRoaXMuX2J1ZmZlclNpemU9Yyx0aGlzLl93aW5kb3dUaW1lPWEsdGhpcy5fdGltZXN0YW1wUHJvdmlkZXI9ZCx0aGlz''@;'; put 'put ''Ll9idWZmZXI9W10sdGhpcy5faW5maW5pdGVUaW1lV2luZG93PSEwLHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz1hPT09MS8wLHRoaXMuX2J1ZmZlclNpemU9TWF0aC5tYXgoMSxjKSx0aGlzLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsYSl9bmV4dChjKXtjb25zdHtpc1N0b3BwZWQ6YSxfYnVm''@;'; put 'put ''ZmVyOmQsX2luZmluaXRlVGltZVdpbmRvdzpoLF90aW1lc3RhbXBQcm92aWRlcjpmLF93aW5kb3dUaW1lOnZ9PXRoaXM7YXx8KGQucHVzaChjKSwhaCYmZC5wdXNoKGYubm93KCkrdikpLHRoaXMuX3RyaW1CdWZmZXIoKSxzdXBlci5uZXh0KGMpfV9zdWJzY3JpYmUoYyl7dGhpcy5fdGhyb3dJ''@;'; put 'put ''ZkNsb3NlZCgpLHRoaXMuX3RyaW1CdWZmZXIoKTtjb25zdCBhPXRoaXMuX2lubmVyU3Vic2NyaWJlKGMpLHtfaW5maW5pdGVUaW1lV2luZG93OmQsX2J1ZmZlcjpofT10aGlzLGY9aC5zbGljZSgpO2ZvcihsZXQgdj0wO3Y8Zi5sZW5ndGgmJiFjLmNsb3NlZDt2Kz1kPzE6MiljLm5leHQoZlt2''@;'; put 'put ''XSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoYyksYX1fdHJpbUJ1ZmZlcigpe2NvbnN0e19idWZmZXJTaXplOmMsX3RpbWVzdGFtcFByb3ZpZGVyOmEsX2J1ZmZlcjpkLF9pbmZpbml0ZVRpbWVXaW5kb3c6aH09dGhpcyxmPShoPzE6MikqYztpZihjPDEvMCYmZjxkLmxl''@;'; put 'put ''bmd0aCYmZC5zcGxpY2UoMCxkLmxlbmd0aC1mKSwhaCl7Y29uc3Qgdj1hLm5vdygpO2xldCBTPTA7Zm9yKGxldCBWPTE7VjxkLmxlbmd0aCYmZFtWXTw9djtWKz0yKVM9VjtTJiZkLnNwbGljZSgwLFMrMSl9fX1mdW5jdGlvbiBzTSguLi5sKXtjb25zdCBjPUVTKGwpLGE9ZnVuY3Rpb24gcHll''@;'; put 'put ''KGwsYyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBPeihsKT9sLnBvcCgpOmN9KGwsMS8wKSxkPWw7cmV0dXJuIGQubGVuZ3RoPzE9PT1kLmxlbmd0aD9FMChkWzBdKTpLdihhKShRYyhkLGMpKTpVMn12YXIgbnM9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5TdGF0ZT0wXT0iU3RhdGUiLGxbbC5U''@;'; put 'put ''cmFuc2l0aW9uPTFdPSJUcmFuc2l0aW9uIixsW2wuU2VxdWVuY2U9Ml09IlNlcXVlbmNlIixsW2wuR3JvdXA9M109Ikdyb3VwIixsW2wuQW5pbWF0ZT00XT0iQW5pbWF0ZSIsbFtsLktleWZyYW1lcz01XT0iS2V5ZnJhbWVzIixsW2wuU3R5bGU9Nl09IlN0eWxlIixsW2wuVHJpZ2dlcj03XT0i''@;'; put 'put ''VHJpZ2dlciIsbFtsLlJlZmVyZW5jZT04XT0iUmVmZXJlbmNlIixsW2wuQW5pbWF0ZUNoaWxkPTldPSJBbmltYXRlQ2hpbGQiLGxbbC5BbmltYXRlUmVmPTEwXT0iQW5pbWF0ZVJlZiIsbFtsLlF1ZXJ5PTExXT0iUXVlcnkiLGxbbC5TdGFnZ2VyPTEyXT0iU3RhZ2dlciIsbH0obnN8fHt9KTtj''@;'; put 'put ''b25zdCB1ND0iKiI7ZnVuY3Rpb24gQ2QobCxjKXtyZXR1cm57dHlwZTpucy5UcmlnZ2VyLG5hbWU6bCxkZWZpbml0aW9uczpjLG9wdGlvbnM6e319fWZ1bmN0aW9uIGp1KGwsYz1udWxsKXtyZXR1cm57dHlwZTpucy5BbmltYXRlLHN0eWxlczpjLHRpbWluZ3M6bH19ZnVuY3Rpb24gRnMobCl7''@;'; put 'put ''cmV0dXJue3R5cGU6bnMuU3R5bGUsc3R5bGVzOmwsb2Zmc2V0Om51bGx9fWZ1bmN0aW9uIEpJKGwsYyxhKXtyZXR1cm57dHlwZTpucy5TdGF0ZSxuYW1lOmwsc3R5bGVzOmMsb3B0aW9uczphfX1mdW5jdGlvbiBNRGUobCl7cmV0dXJue3R5cGU6bnMuS2V5ZnJhbWVzLHN0ZXBzOmx9fWZ1bmN0''@;'; put 'put ''aW9uIFNjKGwsYyxhPW51bGwpe3JldHVybnt0eXBlOm5zLlRyYW5zaXRpb24sZXhwcjpsLGFuaW1hdGlvbjpjLG9wdGlvbnM6YX19Y2xhc3MgYU17Y29uc3RydWN0b3IoYz0wLGE9MCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtd''@;'; put 'put ''LHRoaXMuX29yaWdpbmFsT25Eb25lRm5zPVtdLHRoaXMuX29yaWdpbmFsT25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9wb3NpdGlvbj0wLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9''@;'; put 'put ''YythfV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goYz0+YygpKSx0aGlzLl9vbkRvbmVGbnM9W10pfW9uU3RhcnQoYyl7dGhpcy5fb3JpZ2luYWxPblN0YXJ0Rm5zLnB1c2goYyksdGhpcy5fb25TdGFydEZucy5w''@;'; put 'put ''dXNoKGMpfW9uRG9uZShjKXt0aGlzLl9vcmlnaW5hbE9uRG9uZUZucy5wdXNoKGMpLHRoaXMuX29uRG9uZUZucy5wdXNoKGMpfW9uRGVzdHJveShjKXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaChjKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9aW5pdCgpe31wbGF5KCl7dGhp''@;'; put 'put ''cy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0KCksdGhpcy50cmlnZ2VyTWljcm90YXNrKCkpLHRoaXMuX3N0YXJ0ZWQ9ITB9dHJpZ2dlck1pY3JvdGFzaygpe3F1ZXVlTWljcm90YXNrKCgpPT50aGlzLl9vbkZpbmlzaCgpKX1fb25TdGFydCgpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFj''@;'; put 'put ''aChjPT5jKCkpLHRoaXMuX29uU3RhcnRGbnM9W119cGF1c2UoKXt9cmVzdGFydCgpe31maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5oYXNTdGFydGVkKCl8fHRoaXMuX29uU3RhcnQoKSx0aGlzLmZp''@;'; put 'put ''bmlzaCgpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fb25TdGFydEZucz10aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMsdGhpcy5fb25Eb25lRm5z''@;'; put 'put ''PXRoaXMuX29yaWdpbmFsT25Eb25lRm5zfXNldFBvc2l0aW9uKGMpe3RoaXMuX3Bvc2l0aW9uPXRoaXMudG90YWxUaW1lP2MqdGhpcy50b3RhbFRpbWU6MX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZT90aGlzLl9wb3NpdGlvbi90aGlzLnRvdGFsVGltZToxfXRyaWdnZXJD''@;'; put 'put ''YWxsYmFjayhjKXtjb25zdCBhPSJzdGFydCI9PWM/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7YS5mb3JFYWNoKGQ9PmQoKSksYS5sZW5ndGg9MH19Y2xhc3MgQmxle2NvbnN0cnVjdG9yKGMpe3RoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX2Zp''@;'; put 'put ''bmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPTAsdGhpcy5wbGF5ZXJzPWM7bGV0IGE9MCxkPTAsaD0wO2NvbnN0IGY9dGhpcy5wbGF5ZXJzLmxlbmd0''@;'; put 'put ''aDswPT1mP3F1ZXVlTWljcm90YXNrKCgpPT50aGlzLl9vbkZpbmlzaCgpKTp0aGlzLnBsYXllcnMuZm9yRWFjaCh2PT57di5vbkRvbmUoKCk9PnsrK2E9PWYmJnRoaXMuX29uRmluaXNoKCl9KSx2Lm9uRGVzdHJveSgoKT0+eysrZD09ZiYmdGhpcy5fb25EZXN0cm95KCl9KSx2Lm9uU3RhcnQo''@;'; put 'put ''KCk9PnsrK2g9PWYmJnRoaXMuX29uU3RhcnQoKX0pfSksdGhpcy50b3RhbFRpbWU9dGhpcy5wbGF5ZXJzLnJlZHVjZSgodixTKT0+TWF0aC5tYXgodixTLnRvdGFsVGltZSksMCl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMu''@;'; put 'put ''Zm9yRWFjaChjPT5jKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMucGxheWVycy5mb3JFYWNoKGM9PmMuaW5pdCgpKX1vblN0YXJ0KGMpe3RoaXMuX29uU3RhcnRGbnMucHVzaChjKX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlz''@;'; put 'put ''Ll9vblN0YXJ0Rm5zLmZvckVhY2goYz0+YygpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdKX1vbkRvbmUoYyl7dGhpcy5fb25Eb25lRm5zLnB1c2goYyl9b25EZXN0cm95KGMpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKGMpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1wbGF5KCl7''@;'; put 'put ''dGhpcy5wYXJlbnRQbGF5ZXJ8fHRoaXMuaW5pdCgpLHRoaXMuX29uU3RhcnQoKSx0aGlzLnBsYXllcnMuZm9yRWFjaChjPT5jLnBsYXkoKSl9cGF1c2UoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChjPT5jLnBhdXNlKCkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChjPT5jLnJlc3Rh''@;'; put 'put ''cnQoKSl9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaChjPT5jLmZpbmlzaCgpKX1kZXN0cm95KCl7dGhpcy5fb25EZXN0cm95KCl9X29uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9vbkZpbmlzaCgpLHRo''@;'; put 'put ''aXMucGxheWVycy5mb3JFYWNoKGM9PmMuZGVzdHJveSgpKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaChjPT5jKCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaChjPT5jLnJlc2V0KCkpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5p''@;'; put 'put ''c2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKGMpe2NvbnN0IGE9Yyp0aGlzLnRvdGFsVGltZTt0aGlzLnBsYXllcnMuZm9yRWFjaChkPT57Y29uc3QgaD1kLnRvdGFsVGltZT9NYXRoLm1pbigxLGEvZC50b3RhbFRpbWUpOjE7ZC5zZXRQb3NpdGlvbihoKX0pfWdldFBvc2l0''@;'; put 'put ''aW9uKCl7Y29uc3QgYz10aGlzLnBsYXllcnMucmVkdWNlKChhLGQpPT5udWxsPT09YXx8ZC50b3RhbFRpbWU+YS50b3RhbFRpbWU/ZDphLG51bGwpO3JldHVybiBudWxsIT1jP2MuZ2V0UG9zaXRpb24oKTowfWJlZm9yZURlc3Ryb3koKXt0aGlzLnBsYXllcnMuZm9yRWFjaChjPT57Yy5iZWZv''@;'; put 'put ''cmVEZXN0cm95JiZjLmJlZm9yZURlc3Ryb3koKX0pfXRyaWdnZXJDYWxsYmFjayhjKXtjb25zdCBhPSJzdGFydCI9PWM/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7YS5mb3JFYWNoKGQ9PmQoKSksYS5sZW5ndGg9MH19bGV0IG9aO3RyeXtvWj10eXBlb2YgSW50bDwidSImJklu''@;'; put 'put ''dGwudjhCcmVha0l0ZXJhdG9yfWNhdGNoe29aPSExfWxldCBjTSxzWixsTT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX3BsYXRmb3JtSWQ9YSx0aGlzLmlzQnJvd3Nlcj10aGlzLl9wbGF0Zm9ybUlkP21hKHRoaXMuX3BsYXRmb3JtSWQpOiJvYmplY3QiPT10eXBlb2YgZG9j''@;'; put 'put ''dW1lbnQmJiEhZG9jdW1lbnQsdGhpcy5FREdFPXRoaXMuaXNCcm93c2VyJiYvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLlRSSURFTlQ9dGhpcy5pc0Jyb3dzZXImJi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5CTElOSz10''@;'; put 'put ''aGlzLmlzQnJvd3NlciYmISghd2luZG93LmNocm9tZSYmIW9aKSYmdHlwZW9mIENTUzwidSImJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5XRUJLSVQ9dGhpcy5pc0Jyb3dzZXImJi9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF0aGlzLkJMSU5LJiYh''@;'; put 'put ''dGhpcy5FREdFJiYhdGhpcy5UUklERU5ULHRoaXMuSU9TPXRoaXMuaXNCcm93c2VyJiYvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmISgiTVNTdHJlYW0iaW4gd2luZG93KSx0aGlzLkZJUkVGT1g9dGhpcy5pc0Jyb3dzZXImJi8oZmlyZWZveHxtaW5lZmll''@;'; put 'put ''bGQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkFORFJPSUQ9dGhpcy5pc0Jyb3dzZXImJi9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuVFJJREVOVCx0aGlzLlNBRkFSST10aGlzLmlzQnJvd3NlciYmL3NhZmFyaS9pLnRlc3QobmF2aWdhdG9y''@;'; put 'put ''LnVzZXJBZ2VudCkmJnRoaXMuV0VCS0lUfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKElvKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1''@;'; put 'put ''cm4gbH0pKCk7ZnVuY3Rpb24gTV8obCl7cmV0dXJuIGZ1bmN0aW9uIEFEZSgpe2lmKG51bGw9PWNNJiZ0eXBlb2Ygd2luZG93PCJ1Iil0cnl7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OigpPT5jTT0h''@;'; put 'put ''MH0pKX1maW5hbGx5e2NNPWNNfHwhMX1yZXR1cm4gY019KCk/bDohIWwuY2FwdHVyZX1mdW5jdGlvbiB6bGUobCl7aWYoZnVuY3Rpb24gSURlKCl7aWYobnVsbD09c1ope2NvbnN0IGw9dHlwZW9mIGRvY3VtZW50PCJ1Ij9kb2N1bWVudC5oZWFkOm51bGw7c1o9ISghbHx8IWwuY3JlYXRlU2hh''@;'; put 'put ''ZG93Um9vdCYmIWwuYXR0YWNoU2hhZG93KX1yZXR1cm4gc1p9KCkpe2NvbnN0IGM9bC5nZXRSb290Tm9kZT9sLmdldFJvb3ROb2RlKCk6bnVsbDtpZih0eXBlb2YgU2hhZG93Um9vdDwidSImJlNoYWRvd1Jvb3QmJmMgaW5zdGFuY2VvZiBTaGFkb3dSb290KXJldHVybiBjfXJldHVybiBudWxs''@;'; put 'put ''fWZ1bmN0aW9uIGVSKGwpe3JldHVybiBsLmNvbXBvc2VkUGF0aD9sLmNvbXBvc2VkUGF0aCgpWzBdOmwudGFyZ2V0fWxldCB0SWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9wbGF0Zm9ybT1hfWlzRGlzYWJsZWQoYSl7cmV0dXJuIGEuaGFzQXR0cmlidXRlKCJkaXNhYmxl''@;'; put 'put ''ZCIpfWlzVmlzaWJsZShhKXtyZXR1cm4gZnVuY3Rpb24gckllKGwpe3JldHVybiEhKGwub2Zmc2V0V2lkdGh8fGwub2Zmc2V0SGVpZ2h0fHwiZnVuY3Rpb24iPT10eXBlb2YgbC5nZXRDbGllbnRSZWN0cyYmbC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9KGEpJiYidmlzaWJsZSI9PT1nZXRD''@;'; put 'put ''b21wdXRlZFN0eWxlKGEpLnZpc2liaWxpdHl9aXNUYWJiYWJsZShhKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiExO2NvbnN0IGQ9ZnVuY3Rpb24gbkllKGwpe3RyeXtyZXR1cm4gbC5mcmFtZUVsZW1lbnR9Y2F0Y2h7cmV0dXJuIG51bGx9fShmdW5jdGlvbiBkSWUobCl7''@;'; put 'put ''cmV0dXJuIGwub3duZXJEb2N1bWVudCYmbC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9KGEpKTtpZihkJiYoLTE9PT1XbGUoZCl8fCF0aGlzLmlzVmlzaWJsZShkKSkpcmV0dXJuITE7bGV0IGg9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGY9V2xlKGEpO3JldHVybiBhLmhh''@;'; put 'put ''c0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIik/LTEhPT1mOiEoImlmcmFtZSI9PT1ofHwib2JqZWN0Ij09PWh8fHRoaXMuX3BsYXRmb3JtLldFQktJVCYmdGhpcy5fcGxhdGZvcm0uSU9TJiYhZnVuY3Rpb24gY0llKGwpe2xldCBjPWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxhPSJpbnB1''@;'; put 'put ''dCI9PT1jJiZsLnR5cGU7cmV0dXJuInRleHQiPT09YXx8InBhc3N3b3JkIj09PWF8fCJzZWxlY3QiPT09Y3x8InRleHRhcmVhIj09PWN9KGEpKSYmKCJhdWRpbyI9PT1oPyEhYS5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikmJi0xIT09ZjoidmlkZW8iPT09aD8tMSE9PWYmJihudWxsIT09Znx8''@;'; put 'put ''dGhpcy5fcGxhdGZvcm0uRklSRUZPWHx8YS5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikpOmEudGFiSW5kZXg+PTApfWlzRm9jdXNhYmxlKGEsZCl7cmV0dXJuIGZ1bmN0aW9uIHVJZShsKXtyZXR1cm4hZnVuY3Rpb24gb0llKGwpe3JldHVybiBmdW5jdGlvbiBhSWUobCl7cmV0dXJuImlucHV0''@;'; put 'put ''Ij09bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfShsKSYmImhpZGRlbiI9PWwudHlwZX0obCkmJihmdW5jdGlvbiBpSWUobCl7bGV0IGM9bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1jfHwic2VsZWN0Ij09PWN8fCJidXR0b24iPT09Y3x8InRleHRhcmVhIj09PWN9''@;'; put 'put ''KGwpfHxmdW5jdGlvbiBzSWUobCl7cmV0dXJuIGZ1bmN0aW9uIGxJZShsKXtyZXR1cm4iYSI9PWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0obCkmJmwuaGFzQXR0cmlidXRlKCJocmVmIil9KGwpfHxsLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fFlsZShsKSl9KGEpJiYhdGhp''@;'; put 'put ''cy5pc0Rpc2FibGVkKGEpJiYoZD8uaWdub3JlVmlzaWJpbGl0eXx8dGhpcy5pc1Zpc2libGUoYSkpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKGxNKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1''@;'; put 'put ''MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gWWxlKGwpe2lmKCFsLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dm9pZCAwPT09bC50YWJJbmRleClyZXR1cm4hMTtsZXQgYz1sLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtyZXR1cm4hKCFjfHxp''@;'; put 'put ''c05hTihwYXJzZUludChjLDEwKSkpfWZ1bmN0aW9uIFdsZShsKXtpZighWWxlKGwpKXJldHVybiBudWxsO2NvbnN0IGM9cGFyc2VJbnQobC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fCIiLDEwKTtyZXR1cm4gaXNOYU4oYyk/LTE6Y31jbGFzcyBHbGV7Z2V0IGVuYWJsZWQoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5fZW5hYmxlZH1zZXQgZW5hYmxlZChjKXt0aGlzLl9lbmFibGVkPWMsdGhpcy5fc3RhcnRBbmNob3ImJnRoaXMuX2VuZEFuY2hvciYmKHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KGMsdGhpcy5fc3RhcnRBbmNob3IpLHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KGMsdGhpcy5f''@;'; put 'put ''ZW5kQW5jaG9yKSl9Y29uc3RydWN0b3IoYyxhLGQsaCxmPSExKXt0aGlzLl9lbGVtZW50PWMsdGhpcy5fY2hlY2tlcj1hLHRoaXMuX25nWm9uZT1kLHRoaXMuX2RvY3VtZW50PWgsdGhpcy5faGFzQXR0YWNoZWQ9ITEsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyPSgpPT50aGlzLmZvY3VzTGFz''@;'; put 'put ''dFRhYmJhYmxlRWxlbWVudCgpLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpLHRoaXMuX2VuYWJsZWQ9ITAsZnx8dGhpcy5hdHRhY2hBbmNob3JzKCl9ZGVzdHJveSgpe2NvbnN0IGM9dGhpcy5fc3RhcnRBbmNob3IsYT10aGlzLl9l''@;'; put 'put ''bmRBbmNob3I7YyYmKGMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lciksYy5yZW1vdmUoKSksYSYmKGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpLGEucmVtb3ZlKCkpLHRoaXMuX3N0YXJ0QW5j''@;'; put 'put ''aG9yPXRoaXMuX2VuZEFuY2hvcj1udWxsLHRoaXMuX2hhc0F0dGFjaGVkPSExfWF0dGFjaEFuY2hvcnMoKXtyZXR1cm4hIXRoaXMuX2hhc0F0dGFjaGVkfHwodGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc3RhcnRBbmNob3J8fCh0aGlzLl9zdGFydEFuY2hvcj10''@;'; put 'put ''aGlzLl9jcmVhdGVBbmNob3IoKSx0aGlzLl9zdGFydEFuY2hvci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSksdGhpcy5fZW5kQW5jaG9yfHwodGhpcy5fZW5kQW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX2VuZEFuY2hvci5hZGRF''@;'; put 'put ''dmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5lbmRBbmNob3JMaXN0ZW5lcikpfSksdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvcix0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LnBhcmVu''@;'; put 'put ''dE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2VuZEFuY2hvcix0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKSx0aGlzLl9oYXNBdHRhY2hlZD0hMCksdGhpcy5faGFzQXR0YWNoZWQpfWZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoYyl7cmV0dXJuIG5ldyBQcm9taXNlKGE9Pnt0aGlzLl9l''@;'; put 'put ''eGVjdXRlT25TdGFibGUoKCk9PmEodGhpcy5mb2N1c0luaXRpYWxFbGVtZW50KGMpKSl9KX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KGMpe3JldHVybiBuZXcgUHJvbWlzZShhPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpPT5hKHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxl''@;'; put 'put ''RWxlbWVudChjKSkpfSl9Zm9jdXNMYXN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KGMpe3JldHVybiBuZXcgUHJvbWlzZShhPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpPT5hKHRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KGMpKSl9KX1fZ2V0UmVnaW9uQm91bmRhcnkoYyl7Y29u''@;'; put 'put ''c3QgYT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtjZGstZm9jdXMtcmVnaW9uLSR7Y31dLCBbY2RrRm9jdXNSZWdpb24ke2N9XSwgW2Nkay1mb2N1cy0ke2N9XWApO3JldHVybiJzdGFydCI9PWM/YS5sZW5ndGg/YVswXTp0aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0''@;'; put 'put ''aGlzLl9lbGVtZW50KTphLmxlbmd0aD9hW2EubGVuZ3RoLTFdOnRoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudCl9Zm9jdXNJbml0aWFsRWxlbWVudChjKXtjb25zdCBhPXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiW2Nkay1mb2N1cy1pbml0aWFsXSwgW2Nk''@;'; put 'put ''a0ZvY3VzSW5pdGlhbF0iKTtpZihhKXtpZighdGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShhKSl7Y29uc3QgZD10aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChhKTtyZXR1cm4gZD8uZm9jdXMoYyksISFkfXJldHVybiBhLmZvY3VzKGMpLCEwfXJldHVybiB0aGlzLmZvY3VzRmlyc3RU''@;'; put 'put ''YWJiYWJsZUVsZW1lbnQoYyl9Zm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChjKXtjb25zdCBhPXRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCJzdGFydCIpO3JldHVybiBhJiZhLmZvY3VzKGMpLCEhYX1mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoYyl7Y29uc3QgYT10aGlzLl9nZXRSZWdpb25C''@;'; put 'put ''b3VuZGFyeSgiZW5kIik7cmV0dXJuIGEmJmEuZm9jdXMoYyksISFhfWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX2hhc0F0dGFjaGVkfV9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChjKXtpZih0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKGMpJiZ0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUo''@;'; put 'put ''YykpcmV0dXJuIGM7Y29uc3QgYT1jLmNoaWxkcmVuO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBoPWFbZF0ubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREU/dGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoYVtkXSk6bnVsbDtpZihoKXJldHVybiBo''@;'; put 'put ''fXJldHVybiBudWxsfV9nZXRMYXN0VGFiYmFibGVFbGVtZW50KGMpe2lmKHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoYykmJnRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZShjKSlyZXR1cm4gYztjb25zdCBhPWMuY2hpbGRyZW47Zm9yKGxldCBkPWEubGVuZ3RoLTE7ZD49MDtkLS0pe2NvbnN0''@;'; put 'put ''IGg9YVtkXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KGFbZF0pOm51bGw7aWYoaClyZXR1cm4gaH1yZXR1cm4gbnVsbH1fY3JlYXRlQW5jaG9yKCl7Y29uc3QgYz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50''@;'; put 'put ''KCJkaXYiKTtyZXR1cm4gdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodGhpcy5fZW5hYmxlZCxjKSxjLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxjLmNsYXNzTGlzdC5hZGQoImNkay1mb2N1cy10cmFwLWFuY2hvciIpLGMuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRl''@;'; put 'put ''biIsInRydWUiKSxjfV90b2dnbGVBbmNob3JUYWJJbmRleChjLGEpe2M/YS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpOmEucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpfXRvZ2dsZUFuY2hvcnMoYyl7dGhpcy5fc3RhcnRBbmNob3ImJnRoaXMuX2VuZEFuY2hvciYmKHRoaXMuX3Rv''@;'; put 'put ''Z2dsZUFuY2hvclRhYkluZGV4KGMsdGhpcy5fc3RhcnRBbmNob3IpLHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KGMsdGhpcy5fZW5kQW5jaG9yKSl9X2V4ZWN1dGVPblN0YWJsZShjKXt0aGlzLl9uZ1pvbmUuaXNTdGFibGU/YygpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKFoyKDEp''@;'; put 'put ''KS5zdWJzY3JpYmUoYyl9fWxldCBhWj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLl9jaGVja2VyPWEsdGhpcy5fbmdab25lPWQsdGhpcy5fZG9jdW1lbnQ9aH1jcmVhdGUoYSxkPSExKXtyZXR1cm4gbmV3IEdsZShhLHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRo''@;'; put 'put ''aXMuX2RvY3VtZW50LGQpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKHRJZSksY3IoTW8pLGNyKHpzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0p''@;'; put 'put ''fX1yZXR1cm4gbH0pKCksJGxlPSgoKT0+e2NsYXNzIGx7Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5mb2N1c1RyYXA/LmVuYWJsZWR8fCExfXNldCBlbmFibGVkKGEpe3RoaXMuZm9jdXNUcmFwJiYodGhpcy5mb2N1c1RyYXAuZW5hYmxlZD1hKX1jb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5f''@;'; put 'put ''ZWxlbWVudFJlZj1hLHRoaXMuX2ZvY3VzVHJhcEZhY3Rvcnk9ZCx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCxacihsTSkuaXNCcm93c2VyJiYodGhpcy5mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVt''@;'; put 'put ''ZW50LCEwKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvY3VzVHJhcD8uZGVzdHJveSgpLHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCYmKHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpLHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1udWxsKX1uZ0FmdGVy''@;'; put 'put ''Q29udGVudEluaXQoKXt0aGlzLmZvY3VzVHJhcD8uYXR0YWNoQW5jaG9ycygpLHRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuX2NhcHR1cmVGb2N1cygpfW5nRG9DaGVjaygpe3RoaXMuZm9jdXNUcmFwJiYhdGhpcy5mb2N1c1RyYXAuaGFzQXR0YWNoZWQoKSYmdGhpcy5mb2N1c1RyYXAuYXR0YWNo''@;'; put 'put ''QW5jaG9ycygpfW5nT25DaGFuZ2VzKGEpe2NvbnN0IGQ9YS5hdXRvQ2FwdHVyZTtkJiYhZC5maXJzdENoYW5nZSYmdGhpcy5hdXRvQ2FwdHVyZSYmdGhpcy5mb2N1c1RyYXA/Lmhhc0F0dGFjaGVkKCkmJnRoaXMuX2NhcHR1cmVGb2N1cygpfV9jYXB0dXJlRm9jdXMoKXt0aGlzLl9wcmV2aW91''@;'; put 'put ''c2x5Rm9jdXNlZEVsZW1lbnQ9ZnVuY3Rpb24gUkRlKCl7bGV0IGw9dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQ/ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDpudWxsO2Zvcig7bCYmbC5zaGFkb3dSb290Oyl7Y29uc3QgYz1sLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtpZihjPT09bCli''@;'; put 'put ''cmVhaztsPWN9cmV0dXJuIGx9KCksdGhpcy5mb2N1c1RyYXA/LmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSksSmUoYVopLEplKHpzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1n''@;'; put 'put ''cih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjZGtUcmFwRm9jdXMiLCIiXV0saW5wdXRzOntlbmFibGVkOltqbi5IYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSwiY2RrVHJhcEZvY3VzIiwiZW5hYmxlZCIseDBdLGF1dG9DYXB0dXJlOltqbi5IYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSwi''@;'; put 'put ''Y2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiLCJhdXRvQ2FwdHVyZSIseDBdfSxleHBvcnRBczpbImNka1RyYXBGb2N1cyJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W1FhLEphXX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gcDgobCxjPTApe3JldHVybiBmdW5jdGlvbiB2SWUobCl7cmV0dXJu''@;'; put 'put ''IWlzTmFOKHBhcnNlRmxvYXQobCkpJiYhaXNOYU4oTnVtYmVyKGwpKX0obCk/TnVtYmVyKGwpOmN9ZnVuY3Rpb24gUDEobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBOaT9sLm5hdGl2ZUVsZW1lbnQ6bH1jb25zdCBkTT17c2NoZWR1bGUobCl7bGV0IGM9cmVxdWVzdEFuaW1hdGlvbkZyYW1lLGE9''@;'; put 'put ''Y2FuY2VsQW5pbWF0aW9uRnJhbWU7Y29uc3R7ZGVsZWdhdGU6ZH09ZE07ZCYmKGM9ZC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsYT1kLmNhbmNlbEFuaW1hdGlvbkZyYW1lKTtjb25zdCBoPWMoZj0+e2E9dm9pZCAwLGwoZil9KTtyZXR1cm4gbmV3IEt0KCgpPT5hPy4oaCkpfSxyZXF1ZXN0QW5p''@;'; put 'put ''bWF0aW9uRnJhbWUoLi4ubCl7Y29uc3R7ZGVsZWdhdGU6Y309ZE07cmV0dXJuKGM/LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8cmVxdWVzdEFuaW1hdGlvbkZyYW1lKSguLi5sKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWUoLi4ubCl7Y29uc3R7ZGVsZWdhdGU6Y309ZE07cmV0dXJuKGM/LmNhbmNl''@;'; put 'put ''bEFuaW1hdGlvbkZyYW1lfHxjYW5jZWxBbmltYXRpb25GcmFtZSkoLi4ubCl9LGRlbGVnYXRlOnZvaWQgMH0scWxlPW5ldyBjbGFzcyB5SWUgZXh0ZW5kcyByWntmbHVzaChjKXt0aGlzLl9hY3RpdmU9ITA7Y29uc3QgYT10aGlzLl9zY2hlZHVsZWQ7dGhpcy5fc2NoZWR1bGVkPXZvaWQgMDtj''@;'; put 'put ''b25zdHthY3Rpb25zOmR9PXRoaXM7bGV0IGg7Yz1jfHxkLnNoaWZ0KCk7ZG97aWYoaD1jLmV4ZWN1dGUoYy5zdGF0ZSxjLmRlbGF5KSlicmVha313aGlsZSgoYz1kWzBdKSYmYy5pZD09PWEmJmQuc2hpZnQoKSk7aWYodGhpcy5fYWN0aXZlPSExLGgpe2Zvcig7KGM9ZFswXSkmJmMuaWQ9PT1h''@;'; put 'put ''JiZkLnNoaWZ0KCk7KWMudW5zdWJzY3JpYmUoKTt0aHJvdyBofX19KGNsYXNzIGJJZSBleHRlbmRzIHRae2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYyxhKSx0aGlzLnNjaGVkdWxlcj1jLHRoaXMud29yaz1hfXJlcXVlc3RBc3luY0lkKGMsYSxkPTApe3JldHVybiBudWxsIT09ZCYmZD4wP3N1''@;'; put 'put ''cGVyLnJlcXVlc3RBc3luY0lkKGMsYSxkKTooYy5hY3Rpb25zLnB1c2godGhpcyksYy5fc2NoZWR1bGVkfHwoYy5fc2NoZWR1bGVkPWRNLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+Yy5mbHVzaCh2b2lkIDApKSkpfXJlY3ljbGVBc3luY0lkKGMsYSxkPTApe3ZhciBoO2lmKG51bGwhPWQ/''@;'; put 'put ''ZD4wOnRoaXMuZGVsYXk+MClyZXR1cm4gc3VwZXIucmVjeWNsZUFzeW5jSWQoYyxhLGQpO2NvbnN0e2FjdGlvbnM6Zn09YztudWxsIT1hJiYobnVsbD09PShoPWZbZi5sZW5ndGgtMV0pfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmlkKSE9PWEmJihkTS5jYW5jZWxBbmltYXRpb25GcmFtZShhKSxj''@;'; put 'put ''Ll9zY2hlZHVsZWQ9dm9pZCAwKX19KTtsZXQgbFosd0llPTE7Y29uc3QgdFI9e307ZnVuY3Rpb24gS2xlKGwpe3JldHVybiBsIGluIHRSJiYoZGVsZXRlIHRSW2xdLCEwKX1jb25zdCBDSWU9e3NldEltbWVkaWF0ZShsKXtjb25zdCBjPXdJZSsrO3JldHVybiB0UltjXT0hMCxsWnx8KGxaPVBy''@;'; put 'put ''b21pc2UucmVzb2x2ZSgpKSxsWi50aGVuKCgpPT5LbGUoYykmJmwoKSksY30sY2xlYXJJbW1lZGlhdGUobCl7S2xlKGwpfX0se3NldEltbWVkaWF0ZTpTSWUsY2xlYXJJbW1lZGlhdGU6TUllfT1DSWUsblI9e3NldEltbWVkaWF0ZSguLi5sKXtjb25zdHtkZWxlZ2F0ZTpjfT1uUjtyZXR1cm4o''@;'; put 'put ''Yz8uc2V0SW1tZWRpYXRlfHxTSWUpKC4uLmwpfSxjbGVhckltbWVkaWF0ZShsKXtjb25zdHtkZWxlZ2F0ZTpjfT1uUjtyZXR1cm4oYz8uY2xlYXJJbW1lZGlhdGV8fE1JZSkobCl9LGRlbGVnYXRlOnZvaWQgMH07bmV3IGNsYXNzIEVJZSBleHRlbmRzIHJae2ZsdXNoKGMpe3RoaXMuX2FjdGl2''@;'; put 'put ''ZT0hMDtjb25zdCBhPXRoaXMuX3NjaGVkdWxlZDt0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO2NvbnN0e2FjdGlvbnM6ZH09dGhpcztsZXQgaDtjPWN8fGQuc2hpZnQoKTtkb3tpZihoPWMuZXhlY3V0ZShjLnN0YXRlLGMuZGVsYXkpKWJyZWFrfXdoaWxlKChjPWRbMF0pJiZjLmlkPT09YSYmZC5z''@;'; put 'put ''aGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsaCl7Zm9yKDsoYz1kWzBdKSYmYy5pZD09PWEmJmQuc2hpZnQoKTspYy51bnN1YnNjcmliZSgpO3Rocm93IGh9fX0oY2xhc3MgeEllIGV4dGVuZHMgdFp7Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLGEpLHRoaXMuc2NoZWR1bGVyPWMsdGhpcy53''@;'; put 'put ''b3JrPWF9cmVxdWVzdEFzeW5jSWQoYyxhLGQ9MCl7cmV0dXJuIG51bGwhPT1kJiZkPjA/c3VwZXIucmVxdWVzdEFzeW5jSWQoYyxhLGQpOihjLmFjdGlvbnMucHVzaCh0aGlzKSxjLl9zY2hlZHVsZWR8fChjLl9zY2hlZHVsZWQ9blIuc2V0SW1tZWRpYXRlKGMuZmx1c2guYmluZChjLHZvaWQg''@;'; put 'put ''MCkpKSl9cmVjeWNsZUFzeW5jSWQoYyxhLGQ9MCl7dmFyIGg7aWYobnVsbCE9ZD9kPjA6dGhpcy5kZWxheT4wKXJldHVybiBzdXBlci5yZWN5Y2xlQXN5bmNJZChjLGEsZCk7Y29uc3R7YWN0aW9uczpmfT1jO251bGwhPWEmJihudWxsPT09KGg9ZltmLmxlbmd0aC0xXSl8fHZvaWQgMD09PWg/''@;'; put 'put ''dm9pZCAwOmguaWQpIT09YSYmKG5SLmNsZWFySW1tZWRpYXRlKGEpLGMuX3NjaGVkdWxlZD09PWEmJihjLl9zY2hlZHVsZWQ9dm9pZCAwKSl9fSk7ZnVuY3Rpb24gWGxlKGw9MCxjLGE9bURlKXtsZXQgZD0tMTtyZXR1cm4gbnVsbCE9YyYmKHZvZShjKT9hPWM6ZD1jKSxuZXcgQ24oaD0+e2xl''@;'; put 'put ''dCBmPWZ1bmN0aW9uIEFJZShsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTihsKX0obCk/K2wtYS5ub3coKTpsO2Y8MCYmKGY9MCk7bGV0IHY9MDtyZXR1cm4gYS5zY2hlZHVsZShmdW5jdGlvbigpe2guY2xvc2VkfHwoaC5uZXh0KHYrKyksMDw9ZD90aGlzLnNjaGVkdWxlKHZv''@;'; put 'put ''aWQgMCxkKTpoLmNvbXBsZXRlKCkpfSxmKX0pfWZ1bmN0aW9uIGNaKGwsYz1YSSl7cmV0dXJuIGZ1bmN0aW9uIGtJZShsKXtyZXR1cm4gZGkoKGMsYSk9PntsZXQgZD0hMSxoPW51bGwsZj1udWxsLHY9ITE7Y29uc3QgUz0oKT0+e2lmKGY/LnVuc3Vic2NyaWJlKCksZj1udWxsLGQpe2Q9ITE7''@;'; put 'put ''Y29uc3QgUT1oO2g9bnVsbCxhLm5leHQoUSl9diYmYS5jb21wbGV0ZSgpfSxWPSgpPT57Zj1udWxsLHYmJmEuY29tcGxldGUoKX07Yy5zdWJzY3JpYmUoZmkoYSxRPT57ZD0hMCxoPVEsZnx8RTAobChRKSkuc3Vic2NyaWJlKGY9ZmkoYSxTLFYpKX0sKCk9Pnt2PSEwLCghZHx8IWZ8fGYuY2xv''@;'; put 'put ''c2VkKSYmYS5jb21wbGV0ZSgpfSkpfSl9KCgpPT5YbGUobCxjKSl9Y29uc3QgTEllPW5ldyAkcigiY2RrLWRpci1kb2MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIE9JZSgpe3JldHVybiBacih6cyl9fSksUEllPS9eKGFyfGNrYnxkdnxoZXxpd3xmYXxucW98cHN8c2R8''@;'; put 'put ''dWd8dXJ8eWl8LipbLV9dKEFkbG18QXJhYnxIZWJyfE5rb298Um9oZ3xUaGFhKSkoPyEuKlstX10oTGF0bnxDeXJsKSgkfC18XykpKCR8LXxfKS9pO2xldCBnOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMudmFsdWU9Imx0ciIsdGhpcy5jaGFuZ2U9bmV3IERyLGEmJih0aGlz''@;'; put 'put ''LnZhbHVlPWZ1bmN0aW9uIEZJZShsKXtjb25zdCBjPWw/LnRvTG93ZXJDYXNlKCl8fCIiO3JldHVybiJhdXRvIj09PWMmJnR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3I/Lmxhbmd1YWdlP1BJZS50ZXN0KG5hdmlnYXRvci5sYW5ndWFnZSk/InJ0bCI6Imx0ciI6InJ0bCI9PT1jPyJy''@;'; put 'put ''dGwiOiJsdHIifSgoYS5ib2R5P2EuYm9keS5kaXI6bnVsbCl8fChhLmRvY3VtZW50RWxlbWVudD9hLmRvY3VtZW50RWxlbWVudC5kaXI6bnVsbCl8fCJsdHIiKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXty''@;'; put 'put ''ZXR1cm4gbmV3KGR8fGwpKGNyKExJZSw4KSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCksaE09KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5fbmdab25l''@;'; put 'put ''PWEsdGhpcy5fcGxhdGZvcm09ZCx0aGlzLl9zY3JvbGxlZD1uZXcgdG4sdGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fc2Nyb2xsZWRDb3VudD0wLHRoaXMuc2Nyb2xsQ29udGFpbmVycz1uZXcgTWFwLHRoaXMuX2RvY3VtZW50PWh9cmVnaXN0ZXIoYSl7dGhpcy5zY3JvbGxD''@;'; put 'put ''b250YWluZXJzLmhhcyhhKXx8dGhpcy5zY3JvbGxDb250YWluZXJzLnNldChhLGEuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KGEpKSl9ZGVyZWdpc3RlcihhKXtjb25zdCBkPXRoaXMuc2Nyb2xsQ29udGFpbmVycy5nZXQoYSk7ZCYmKGQudW5z''@;'; put 'put ''dWJzY3JpYmUoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZGVsZXRlKGEpKX1zY3JvbGxlZChhPTIwKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyP25ldyBDbihkPT57dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9ufHx0aGlzLl9hZGRHbG9iYWxMaXN0ZW5lcigpO2NvbnN0IGg9YT4w''@;'; put 'put ''P3RoaXMuX3Njcm9sbGVkLnBpcGUoY1ooYSkpLnN1YnNjcmliZShkKTp0aGlzLl9zY3JvbGxlZC5zdWJzY3JpYmUoZCk7cmV0dXJuIHRoaXMuX3Njcm9sbGVkQ291bnQrKywoKT0+e2gudW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxlZENvdW50LS0sdGhpcy5fc2Nyb2xsZWRDb3VudHx8dGhp''@;'; put 'put ''cy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKX19KTpPbygpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZm9yRWFjaCgoYSxkKT0+dGhpcy5kZXJlZ2lzdGVyKGQpKSx0aGlzLl9zY3JvbGxlZC5jb21wbGV0ZSgpfWFuY2Vz''@;'; put 'put ''dG9yU2Nyb2xsZWQoYSxkKXtjb25zdCBoPXRoaXMuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKGEpO3JldHVybiB0aGlzLnNjcm9sbGVkKGQpLnBpcGUoWmEoZj0+IWZ8fGguaW5kZXhPZihmKT4tMSkpfWdldEFuY2VzdG9yU2Nyb2xsQ29udGFpbmVycyhhKXtjb25zdCBkPVtdO3JldHVy''@;'; put 'put ''biB0aGlzLnNjcm9sbENvbnRhaW5lcnMuZm9yRWFjaCgoaCxmKT0+e3RoaXMuX3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQoZixhKSYmZC5wdXNoKGYpfSksZH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbGFibGVDb250YWlu''@;'; put 'put ''c0VsZW1lbnQoYSxkKXtsZXQgaD1QMShkKSxmPWEuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7ZG97aWYoaD09ZilyZXR1cm4hMH13aGlsZShoPWgucGFyZW50RWxlbWVudCk7cmV0dXJuITF9X2FkZEdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPXRoaXMu''@;'; put 'put ''X25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+d2QodGhpcy5fZ2V0V2luZG93KCkuZG9jdW1lbnQsInNjcm9sbCIpLnN1YnNjcmliZSgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCgpKSl9X3JlbW92ZUdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uJiYodGhpcy5f''@;'; put 'put ''Z2xvYmFsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPW51bGwpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKE1vKSxjcihsTSksY3IoenMsOCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWly''@;'; put 'put ''KHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpLGRaPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuX3BsYXRmb3JtPWEsdGhpcy5fY2hhbmdlPW5ldyB0bix0aGlzLl9jaGFuZ2VMaXN0ZW5lcj1mPT57dGhp''@;'; put 'put ''cy5fY2hhbmdlLm5leHQoZil9LHRoaXMuX2RvY3VtZW50PWgsZC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2lmKGEuaXNCcm93c2VyKXtjb25zdCBmPXRoaXMuX2dldFdpbmRvdygpO2YuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksZi5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgpPT50aGlzLl92aWV3cG9ydFNpemU9bnVsbCl9KX1uZ09uRGVzdHJveSgpe2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcil7Y29uc3QgYT10aGlzLl9nZXRX''@;'; put 'put ''aW5kb3coKTthLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKX10aGlzLl9jaGFuZ2UuY29tcGxldGUoKX1nZXRWaWV3cG9ydFNpemUo''@;'; put 'put ''KXt0aGlzLl92aWV3cG9ydFNpemV8fHRoaXMuX3VwZGF0ZVZpZXdwb3J0U2l6ZSgpO2NvbnN0IGE9e3dpZHRoOnRoaXMuX3ZpZXdwb3J0U2l6ZS53aWR0aCxoZWlnaHQ6dGhpcy5fdmlld3BvcnRTaXplLmhlaWdodH07cmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8KHRoaXMuX3Zp''@;'; put 'put ''ZXdwb3J0U2l6ZT1udWxsKSxhfWdldFZpZXdwb3J0UmVjdCgpe2NvbnN0IGE9dGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkse3dpZHRoOmQsaGVpZ2h0Omh9PXRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJue3RvcDphLnRvcCxsZWZ0OmEubGVmdCxib3R0b206YS50b3AraCxy''@;'; put 'put ''aWdodDphLmxlZnQrZCxoZWlnaHQ6aCx3aWR0aDpkfX1nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm57dG9wOjAsbGVmdDowfTtjb25zdCBhPXRoaXMuX2RvY3VtZW50LGQ9dGhpcy5fZ2V0V2luZG93KCksaD1hLmRvY3VtZW50''@;'; put 'put ''RWxlbWVudCxmPWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDotZi50b3B8fGEuYm9keS5zY3JvbGxUb3B8fGQuc2Nyb2xsWXx8aC5zY3JvbGxUb3B8fDAsbGVmdDotZi5sZWZ0fHxhLmJvZHkuc2Nyb2xsTGVmdHx8ZC5zY3JvbGxYfHxoLnNjcm9sbExlZnR8fDB9fWNoYW5n''@;'; put 'put ''ZShhPTIwKXtyZXR1cm4gYT4wP3RoaXMuX2NoYW5nZS5waXBlKGNaKGEpKTp0aGlzLl9jaGFuZ2V9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fV91cGRhdGVWaWV3cG9ydFNpemUoKXtjb25zdCBhPXRoaXMuX2dldFdpbmRvdygpO3RoaXMu''@;'; put 'put ''X3ZpZXdwb3J0U2l6ZT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/e3dpZHRoOmEuaW5uZXJXaWR0aCxoZWlnaHQ6YS5pbm5lckhlaWdodH06e3dpZHRoOjAsaGVpZ2h0OjB9fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKGxNKSxjcihNbyks''@;'; put 'put ''Y3IoenMsOCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpLEtJZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8''@;'; put 'put ''fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7fSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBoWihsLGMsYSl7Zm9yKGxldCBkIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShkKSl7Y29uc3QgaD1jW2RdO2g/bC5zZXRQcm9w''@;'; put 'put ''ZXJ0eShkLGgsYT8uaGFzKGQpPyJpbXBvcnRhbnQiOiIiKTpsLnJlbW92ZVByb3BlcnR5KGQpfXJldHVybiBsfWZ1bmN0aW9uIHhfKGwsYyl7Y29uc3QgYT1jPyIiOiJub25lIjtoWihsLnN0eWxlLHsidG91Y2gtYWN0aW9uIjpjPyIiOiJub25lIiwiLXdlYmtpdC11c2VyLWRyYWciOmM/IiI6''@;'; put 'put ''Im5vbmUiLCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiOmM/IiI6InRyYW5zcGFyZW50IiwidXNlci1zZWxlY3QiOmEsIi1tcy11c2VyLXNlbGVjdCI6YSwiLXdlYmtpdC11c2VyLXNlbGVjdCI6YSwiLW1vei11c2VyLXNlbGVjdCI6YX0pfWZ1bmN0aW9uIGljZShsLGMsYSl7aFoobC5z''@;'; put 'put ''dHlsZSx7cG9zaXRpb246Yz8iIjoiZml4ZWQiLHRvcDpjPyIiOiIwIixvcGFjaXR5OmM/IiI6IjAiLGxlZnQ6Yz8iIjoiLTk5OWVtIn0sYSl9ZnVuY3Rpb24gclIobCxjKXtyZXR1cm4gYyYmIm5vbmUiIT1jP2wrIiAiK2M6bH1mdW5jdGlvbiBvY2UobCxjKXtsLnN0eWxlLndpZHRoPWAke2Mu''@;'; put 'put ''d2lkdGh9cHhgLGwuc3R5bGUuaGVpZ2h0PWAke2MuaGVpZ2h0fXB4YCxsLnN0eWxlLnRyYW5zZm9ybT1pUihjLmxlZnQsYy50b3ApfWZ1bmN0aW9uIGlSKGwsYyl7cmV0dXJuYHRyYW5zbGF0ZTNkKCR7TWF0aC5yb3VuZChsKX1weCwgJHtNYXRoLnJvdW5kKGMpfXB4LCAwKWB9ZnVuY3Rpb24g''@;'; put 'put ''ZloobCl7Y29uc3QgYz1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt0b3A6Yy50b3AscmlnaHQ6Yy5yaWdodCxib3R0b206Yy5ib3R0b20sbGVmdDpjLmxlZnQsd2lkdGg6Yy53aWR0aCxoZWlnaHQ6Yy5oZWlnaHQseDpjLngseTpjLnl9fWZ1bmN0aW9uIHBaKGwsYyxhKXtjb25z''@;'; put 'put ''dHt0b3A6ZCxib3R0b206aCxsZWZ0OmYscmlnaHQ6dn09bDtyZXR1cm4gYT49ZCYmYTw9aCYmYz49ZiYmYzw9dn1mdW5jdGlvbiBmTShsLGMsYSl7bC50b3ArPWMsbC5ib3R0b209bC50b3ArbC5oZWlnaHQsbC5sZWZ0Kz1hLGwucmlnaHQ9bC5sZWZ0K2wud2lkdGh9ZnVuY3Rpb24gc2NlKGws''@;'; put 'put ''YyxhLGQpe2NvbnN0e3RvcDpoLHJpZ2h0OmYsYm90dG9tOnYsbGVmdDpTLHdpZHRoOlYsaGVpZ2h0OlF9PWwsZGU9VipjLHBlPVEqYztyZXR1cm4gZD5oLXBlJiZkPHYrcGUmJmE+Uy1kZSYmYTxmK2RlfWNsYXNzIGFjZXtjb25zdHJ1Y3RvcihjKXt0aGlzLl9kb2N1bWVudD1jLHRoaXMucG9z''@;'; put 'put ''aXRpb25zPW5ldyBNYXB9Y2xlYXIoKXt0aGlzLnBvc2l0aW9ucy5jbGVhcigpfWNhY2hlKGMpe3RoaXMuY2xlYXIoKSx0aGlzLnBvc2l0aW9ucy5zZXQodGhpcy5fZG9jdW1lbnQse3Njcm9sbFBvc2l0aW9uOnRoaXMuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpfSksYy5mb3JFYWNoKGE9''@;'; put 'put ''Pnt0aGlzLnBvc2l0aW9ucy5zZXQoYSx7c2Nyb2xsUG9zaXRpb246e3RvcDphLnNjcm9sbFRvcCxsZWZ0OmEuc2Nyb2xsTGVmdH0sY2xpZW50UmVjdDpmWihhKX0pfSl9aGFuZGxlU2Nyb2xsKGMpe2NvbnN0IGE9ZVIoYyksZD10aGlzLnBvc2l0aW9ucy5nZXQoYSk7aWYoIWQpcmV0dXJuIG51''@;'; put 'put ''bGw7Y29uc3QgaD1kLnNjcm9sbFBvc2l0aW9uO2xldCBmLHY7aWYoYT09PXRoaXMuX2RvY3VtZW50KXtjb25zdCBRPXRoaXMuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO2Y9US50b3Asdj1RLmxlZnR9ZWxzZSBmPWEuc2Nyb2xsVG9wLHY9YS5zY3JvbGxMZWZ0O2NvbnN0IFM9aC50b3At''@;'; put 'put ''ZixWPWgubGVmdC12O3JldHVybiB0aGlzLnBvc2l0aW9ucy5mb3JFYWNoKChRLGRlKT0+e1EuY2xpZW50UmVjdCYmYSE9PWRlJiZhLmNvbnRhaW5zKGRlKSYmZk0oUS5jbGllbnRSZWN0LFMsVil9KSxoLnRvcD1mLGgubGVmdD12LHt0b3A6UyxsZWZ0OlZ9fWdldFZpZXdwb3J0U2Nyb2xsUG9z''@;'; put 'put ''aXRpb24oKXtyZXR1cm57dG9wOndpbmRvdy5zY3JvbGxZLGxlZnQ6d2luZG93LnNjcm9sbFh9fX1mdW5jdGlvbiBsY2UobCl7Y29uc3QgYz1sLmNsb25lTm9kZSghMCksYT1jLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZF0iKSxkPWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtjLnJlbW92ZUF0dHJp''@;'; put 'put ''YnV0ZSgiaWQiKTtmb3IobGV0IGg9MDtoPGEubGVuZ3RoO2grKylhW2hdLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTtyZXR1cm4iY2FudmFzIj09PWQ/ZGNlKGwsYyk6KCJpbnB1dCI9PT1kfHwic2VsZWN0Ij09PWR8fCJ0ZXh0YXJlYSI9PT1kKSYmdWNlKGwsYyksY2NlKCJjYW52YXMiLGwsYyxk''@;'; put 'put ''Y2UpLGNjZSgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiLGwsYyx1Y2UpLGN9ZnVuY3Rpb24gY2NlKGwsYyxhLGQpe2NvbnN0IGg9Yy5xdWVyeVNlbGVjdG9yQWxsKGwpO2lmKGgubGVuZ3RoKXtjb25zdCBmPWEucXVlcnlTZWxlY3RvckFsbChsKTtmb3IobGV0IHY9MDt2PGgubGVuZ3RoO3Yr''@;'; put 'put ''KylkKGhbdl0sZlt2XSl9fWxldCBKSWU9MDtmdW5jdGlvbiB1Y2UobCxjKXsiZmlsZSIhPT1jLnR5cGUmJihjLnZhbHVlPWwudmFsdWUpLCJyYWRpbyI9PT1jLnR5cGUmJmMubmFtZSYmKGMubmFtZT1gbWF0LWNsb25lLSR7Yy5uYW1lfS0ke0pJZSsrfWApfWZ1bmN0aW9uIGRjZShsLGMpe2Nv''@;'; put 'put ''bnN0IGE9Yy5nZXRDb250ZXh0KCIyZCIpO2lmKGEpdHJ5e2EuZHJhd0ltYWdlKGwsMCwwKX1jYXRjaHt9fWZ1bmN0aW9uIGhjZShsLGMpe2NvbnN0IGE9bC5yb290Tm9kZXM7aWYoMT09PWEubGVuZ3RoJiZhWzBdLm5vZGVUeXBlPT09Yy5FTEVNRU5UX05PREUpcmV0dXJuIGFbMF07Y29uc3Qg''@;'; put 'put ''ZD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLmZvckVhY2goaD0+ZC5hcHBlbmRDaGlsZChoKSksZH1mdW5jdGlvbiBmY2UobCl7Y29uc3QgYz1sLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibXMiKT4tMT8xOjFlMztyZXR1cm4gcGFyc2VGbG9hdChsKSpjfWZ1bmN0aW9uIGdaKGws''@;'; put 'put ''Yyl7cmV0dXJuIGwuZ2V0UHJvcGVydHlWYWx1ZShjKS5zcGxpdCgiLCIpLm1hcChkPT5kLnRyaW0oKSl9Y29uc3QgZVJlPW5ldyBTZXQoWyJwb3NpdGlvbiJdKTtjbGFzcyB0UmV7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyxWLFEpe3RoaXMuX2RvY3VtZW50PWMsdGhpcy5fcm9vdEVsZW1l''@;'; put 'put ''bnQ9YSx0aGlzLl9kaXJlY3Rpb249ZCx0aGlzLl9pbml0aWFsRG9tUmVjdD1oLHRoaXMuX3ByZXZpZXdUZW1wbGF0ZT1mLHRoaXMuX3ByZXZpZXdDbGFzcz12LHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlPVMsdGhpcy5faW5pdGlhbFRyYW5zZm9ybT1WLHRoaXMuX3pJbmRleD1RfWF0dGFj''@;'; put 'put ''aChjKXt0aGlzLl9wcmV2aWV3PXRoaXMuX2NyZWF0ZVByZXZpZXcoKSxjLmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXcpLCJzaG93UG9wb3ZlciJpbiB0aGlzLl9wcmV2aWV3JiZ0aGlzLl9wcmV2aWV3LnNob3dQb3BvdmVyKCl9ZGVzdHJveSgpe3RoaXMuX3ByZXZpZXcucmVtb3ZlKCksdGhp''@;'; put 'put ''cy5fcHJldmlld0VtYmVkZGVkVmlldz8uZGVzdHJveSgpLHRoaXMuX3ByZXZpZXc9dGhpcy5fcHJldmlld0VtYmVkZGVkVmlldz1udWxsfXNldFRyYW5zZm9ybShjKXt0aGlzLl9wcmV2aWV3LnN0eWxlLnRyYW5zZm9ybT1jfWdldEJvdW5kaW5nQ2xpZW50UmVjdCgpe3JldHVybiB0aGlzLl9w''@;'; put 'put ''cmV2aWV3LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWFkZENsYXNzKGMpe3RoaXMuX3ByZXZpZXcuY2xhc3NMaXN0LmFkZChjKX1nZXRUcmFuc2l0aW9uRHVyYXRpb24oKXtyZXR1cm4gZnVuY3Rpb24gUUllKGwpe2NvbnN0IGM9Z2V0Q29tcHV0ZWRTdHlsZShsKSxhPWdaKGMsInRyYW5zaXRp''@;'; put 'put ''b24tcHJvcGVydHkiKSxkPWEuZmluZChTPT4idHJhbnNmb3JtIj09PVN8fCJhbGwiPT09Uyk7aWYoIWQpcmV0dXJuIDA7Y29uc3QgaD1hLmluZGV4T2YoZCksZj1nWihjLCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiksdj1nWihjLCJ0cmFuc2l0aW9uLWRlbGF5Iik7cmV0dXJuIGZjZShmW2hdKStm''@;'; put 'put ''Y2UodltoXSl9KHRoaXMuX3ByZXZpZXcpfWFkZEV2ZW50TGlzdGVuZXIoYyxhKXt0aGlzLl9wcmV2aWV3LmFkZEV2ZW50TGlzdGVuZXIoYyxhKX1yZW1vdmVFdmVudExpc3RlbmVyKGMsYSl7dGhpcy5fcHJldmlldy5yZW1vdmVFdmVudExpc3RlbmVyKGMsYSl9X2NyZWF0ZVByZXZpZXcoKXtj''@;'; put 'put ''b25zdCBjPXRoaXMuX3ByZXZpZXdUZW1wbGF0ZSxhPXRoaXMuX3ByZXZpZXdDbGFzcyxkPWM/Yy50ZW1wbGF0ZTpudWxsO2xldCBoO2lmKGQmJmMpe2NvbnN0IGY9Yy5tYXRjaFNpemU/dGhpcy5faW5pdGlhbERvbVJlY3Q6bnVsbCx2PWMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZp''@;'; put 'put ''ZXcoZCxjLmNvbnRleHQpO3YuZGV0ZWN0Q2hhbmdlcygpLGg9aGNlKHYsdGhpcy5fZG9jdW1lbnQpLHRoaXMuX3ByZXZpZXdFbWJlZGRlZFZpZXc9dixjLm1hdGNoU2l6ZT9vY2UoaCxmKTpoLnN0eWxlLnRyYW5zZm9ybT1pUih0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS54LHRoaXMuX3Bp''@;'; put 'put ''Y2t1cFBvc2l0aW9uT25QYWdlLnkpfWVsc2UgaD1sY2UodGhpcy5fcm9vdEVsZW1lbnQpLG9jZShoLHRoaXMuX2luaXRpYWxEb21SZWN0KSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtJiYoaC5zdHlsZS50cmFuc2Zvcm09dGhpcy5faW5pdGlhbFRyYW5zZm9ybSk7cmV0dXJuIGhaKGguc3R5bGUs''@;'; put 'put ''eyJwb2ludGVyLWV2ZW50cyI6Im5vbmUiLG1hcmdpbjoiMCIscG9zaXRpb246ImZpeGVkIix0b3A6IjAiLGxlZnQ6IjAiLCJ6LWluZGV4Ijp0aGlzLl96SW5kZXgrIiJ9LGVSZSkseF8oaCwhMSksaC5jbGFzc0xpc3QuYWRkKCJjZGstZHJhZy1wcmV2aWV3IiksaC5zZXRBdHRyaWJ1dGUoInBv''@;'; put 'put ''cG92ZXIiLCJtYW51YWwiKSxoLnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLl9kaXJlY3Rpb24pLGEmJihBcnJheS5pc0FycmF5KGEpP2EuZm9yRWFjaChmPT5oLmNsYXNzTGlzdC5hZGQoZikpOmguY2xhc3NMaXN0LmFkZChhKSksaH19Y29uc3QgcGNlPU1fKHtwYXNzaXZlOiEwfSksb1I9TV8o''@;'; put 'put ''e3Bhc3NpdmU6ITF9KSxnY2U9TV8oe3Bhc3NpdmU6ITEsY2FwdHVyZTohMH0pLG1jZT1uZXcgU2V0KFsicG9zaXRpb24iXSk7Y2xhc3MgclJle2dldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZHx8ISghdGhpcy5fZHJvcENvbnRhaW5lcnx8IXRoaXMuX2Ryb3BDb250YWluZXIu''@;'; put 'put ''ZGlzYWJsZWQpfXNldCBkaXNhYmxlZChjKXtjIT09dGhpcy5fZGlzYWJsZWQmJih0aGlzLl9kaXNhYmxlZD1jLHRoaXMuX3RvZ2dsZU5hdGl2ZURyYWdJbnRlcmFjdGlvbnMoKSx0aGlzLl9oYW5kbGVzLmZvckVhY2goYT0+eF8oYSxjKSkpfWNvbnN0cnVjdG9yKGMsYSxkLGgsZix2KXt0aGlz''@;'; put 'put ''Ll9jb25maWc9YSx0aGlzLl9kb2N1bWVudD1kLHRoaXMuX25nWm9uZT1oLHRoaXMuX3ZpZXdwb3J0UnVsZXI9Zix0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5PXYsdGhpcy5fcGFzc2l2ZVRyYW5zZm9ybT17eDowLHk6MH0sdGhpcy5fYWN0aXZlVHJhbnNmb3JtPXt4OjAseTowfSx0aGlzLl9oYXNT''@;'; put 'put ''dGFydGVkRHJhZ2dpbmc9ITEsdGhpcy5fbW92ZUV2ZW50cz1uZXcgdG4sdGhpcy5fcG9pbnRlck1vdmVTdWJzY3JpcHRpb249S3QuRU1QVFksdGhpcy5fcG9pbnRlclVwU3Vic2NyaXB0aW9uPUt0LkVNUFRZLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1LdC5FTVBUWSx0aGlzLl9yZXNpemVT''@;'; put 'put ''dWJzY3JpcHRpb249S3QuRU1QVFksdGhpcy5fYm91bmRhcnlFbGVtZW50PW51bGwsdGhpcy5fbmF0aXZlSW50ZXJhY3Rpb25zRW5hYmxlZD0hMCx0aGlzLl9oYW5kbGVzPVtdLHRoaXMuX2Rpc2FibGVkSGFuZGxlcz1uZXcgU2V0LHRoaXMuX2RpcmVjdGlvbj0ibHRyIix0aGlzLmRyYWdTdGFy''@;'; put 'put ''dERlbGF5PTAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5iZWZvcmVTdGFydGVkPW5ldyB0bix0aGlzLnN0YXJ0ZWQ9bmV3IHRuLHRoaXMucmVsZWFzZWQ9bmV3IHRuLHRoaXMuZW5kZWQ9bmV3IHRuLHRoaXMuZW50ZXJlZD1uZXcgdG4sdGhpcy5leGl0ZWQ9bmV3IHRuLHRoaXMuZHJvcHBlZD1u''@;'; put 'put ''ZXcgdG4sdGhpcy5tb3ZlZD10aGlzLl9tb3ZlRXZlbnRzLHRoaXMuX3BvaW50ZXJEb3duPVM9PntpZih0aGlzLmJlZm9yZVN0YXJ0ZWQubmV4dCgpLHRoaXMuX2hhbmRsZXMubGVuZ3RoKXtjb25zdCBWPXRoaXMuX2dldFRhcmdldEhhbmRsZShTKTtWJiYhdGhpcy5fZGlzYWJsZWRIYW5kbGVz''@;'; put 'put ''LmhhcyhWKSYmIXRoaXMuZGlzYWJsZWQmJnRoaXMuX2luaXRpYWxpemVEcmFnU2VxdWVuY2UoVixTKX1lbHNlIHRoaXMuZGlzYWJsZWR8fHRoaXMuX2luaXRpYWxpemVEcmFnU2VxdWVuY2UodGhpcy5fcm9vdEVsZW1lbnQsUyl9LHRoaXMuX3BvaW50ZXJNb3ZlPVM9Pntjb25zdCBWPXRoaXMu''@;'; put 'put ''X2dldFBvaW50ZXJQb3NpdGlvbk9uUGFnZShTKTtpZighdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nKXtpZihNYXRoLmFicyhWLngtdGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2UueCkrTWF0aC5hYnMoVi55LXRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLnkpPj10aGlzLl9jb25maWcuZHJh''@;'; put 'put ''Z1N0YXJ0VGhyZXNob2xkKXtjb25zdCBPZT1EYXRlLm5vdygpPj10aGlzLl9kcmFnU3RhcnRUaW1lK3RoaXMuX2dldERyYWdTdGFydERlbGF5KFMpLFllPXRoaXMuX2Ryb3BDb250YWluZXI7aWYoIU9lKXJldHVybiB2b2lkIHRoaXMuX2VuZERyYWdTZXF1ZW5jZShTKTsoIVllfHwhWWUuaXNE''@;'; put 'put ''cmFnZ2luZygpJiYhWWUuaXNSZWNlaXZpbmcoKSkmJihTLmNhbmNlbGFibGUmJlMucHJldmVudERlZmF1bHQoKSx0aGlzLl9oYXNTdGFydGVkRHJhZ2dpbmc9ITAsdGhpcy5fbmdab25lLnJ1bigoKT0+dGhpcy5fc3RhcnREcmFnU2VxdWVuY2UoUykpKX1yZXR1cm59Uy5jYW5jZWxhYmxlJiZT''@;'; put 'put ''LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgUT10aGlzLl9nZXRDb25zdHJhaW5lZFBvaW50ZXJQb3NpdGlvbihWKTtpZih0aGlzLl9oYXNNb3ZlZD0hMCx0aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb249Vix0aGlzLl91cGRhdGVQb2ludGVyRGlyZWN0aW9uRGVsdGEoUSksdGhpcy5fZHJv''@;'; put 'put ''cENvbnRhaW5lcil0aGlzLl91cGRhdGVBY3RpdmVEcm9wQ29udGFpbmVyKFEsVik7ZWxzZXtjb25zdCBkZT10aGlzLmNvbnN0cmFpblBvc2l0aW9uP3RoaXMuX2luaXRpYWxEb21SZWN0OnRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLHBlPXRoaXMuX2FjdGl2ZVRyYW5zZm9ybTtwZS54PVEu''@;'; put 'put ''eC1kZS54K3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueCxwZS55PVEueS1kZS55K3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueSx0aGlzLl9hcHBseVJvb3RFbGVtZW50VHJhbnNmb3JtKHBlLngscGUueSl9dGhpcy5fbW92ZUV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoJiZ0aGlzLl9uZ1pvbmUucnVu''@;'; put 'put ''KCgpPT57dGhpcy5fbW92ZUV2ZW50cy5uZXh0KHtzb3VyY2U6dGhpcyxwb2ludGVyUG9zaXRpb246USxldmVudDpTLGRpc3RhbmNlOnRoaXMuX2dldERyYWdEaXN0YW5jZShRKSxkZWx0YTp0aGlzLl9wb2ludGVyRGlyZWN0aW9uRGVsdGF9KX0pfSx0aGlzLl9wb2ludGVyVXA9Uz0+e3RoaXMu''@;'; put 'put ''X2VuZERyYWdTZXF1ZW5jZShTKX0sdGhpcy5fbmF0aXZlRHJhZ1N0YXJ0PVM9PntpZih0aGlzLl9oYW5kbGVzLmxlbmd0aCl7Y29uc3QgVj10aGlzLl9nZXRUYXJnZXRIYW5kbGUoUyk7ViYmIXRoaXMuX2Rpc2FibGVkSGFuZGxlcy5oYXMoVikmJiF0aGlzLmRpc2FibGVkJiZTLnByZXZlbnRE''@;'; put 'put ''ZWZhdWx0KCl9ZWxzZSB0aGlzLmRpc2FibGVkfHxTLnByZXZlbnREZWZhdWx0KCl9LHRoaXMud2l0aFJvb3RFbGVtZW50KGMpLndpdGhQYXJlbnQoYS5wYXJlbnREcmFnUmVmfHxudWxsKSx0aGlzLl9wYXJlbnRQb3NpdGlvbnM9bmV3IGFjZShkKSx2LnJlZ2lzdGVyRHJhZ0l0ZW0odGhpcyl9''@;'; put 'put ''Z2V0UGxhY2Vob2xkZXJFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyfWdldFJvb3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3Jvb3RFbGVtZW50fWdldFZpc2libGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaXNEcmFnZ2luZygpP3RoaXMuZ2V0UGxhY2Vob2xkZXJFbGVtZW50KCk6''@;'; put 'put ''dGhpcy5nZXRSb290RWxlbWVudCgpfXdpdGhIYW5kbGVzKGMpe3RoaXMuX2hhbmRsZXM9Yy5tYXAoZD0+UDEoZCkpLHRoaXMuX2hhbmRsZXMuZm9yRWFjaChkPT54XyhkLHRoaXMuZGlzYWJsZWQpKSx0aGlzLl90b2dnbGVOYXRpdmVEcmFnSW50ZXJhY3Rpb25zKCk7Y29uc3QgYT1uZXcgU2V0''@;'; put 'put ''O3JldHVybiB0aGlzLl9kaXNhYmxlZEhhbmRsZXMuZm9yRWFjaChkPT57dGhpcy5faGFuZGxlcy5pbmRleE9mKGQpPi0xJiZhLmFkZChkKX0pLHRoaXMuX2Rpc2FibGVkSGFuZGxlcz1hLHRoaXN9d2l0aFByZXZpZXdUZW1wbGF0ZShjKXtyZXR1cm4gdGhpcy5fcHJldmlld1RlbXBsYXRlPWMs''@;'; put 'put ''dGhpc313aXRoUGxhY2Vob2xkZXJUZW1wbGF0ZShjKXtyZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZT1jLHRoaXN9d2l0aFJvb3RFbGVtZW50KGMpe2NvbnN0IGE9UDEoYyk7cmV0dXJuIGEhPT10aGlzLl9yb290RWxlbWVudCYmKHRoaXMuX3Jvb3RFbGVtZW50JiZ0aGlzLl9yZW1v''@;'; put 'put ''dmVSb290RWxlbWVudExpc3RlbmVycyh0aGlzLl9yb290RWxlbWVudCksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57YS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLG9SKSxhLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRo''@;'; put 'put ''aXMuX3BvaW50ZXJEb3duLHBjZSksYS5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX25hdGl2ZURyYWdTdGFydCxvUil9KSx0aGlzLl9pbml0aWFsVHJhbnNmb3JtPXZvaWQgMCx0aGlzLl9yb290RWxlbWVudD1hKSx0eXBlb2YgU1ZHRWxlbWVudDwidSImJnRoaXMuX3Jvb3RF''@;'; put 'put ''bGVtZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudCYmKHRoaXMuX293bmVyU1ZHRWxlbWVudD10aGlzLl9yb290RWxlbWVudC5vd25lclNWR0VsZW1lbnQpLHRoaXN9d2l0aEJvdW5kYXJ5RWxlbWVudChjKXtyZXR1cm4gdGhpcy5fYm91bmRhcnlFbGVtZW50PWM/UDEoYyk6bnVsbCx0aGlzLl9y''@;'; put 'put ''ZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSxjJiYodGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKDEwKS5zdWJzY3JpYmUoKCk9PnRoaXMuX2NvbnRhaW5JbnNpZGVCb3VuZGFyeU9uUmVzaXplKCkpKSx0aGlzfXdpdGhQYXJlbnQoYyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3BhcmVudERyYWdSZWY9Yyx0aGlzfWRpc3Bvc2UoKXt0aGlzLl9yZW1vdmVSb290RWxlbWVudExpc3RlbmVycyh0aGlzLl9yb290RWxlbWVudCksdGhpcy5pc0RyYWdnaW5nKCkmJnRoaXMuX3Jvb3RFbGVtZW50Py5yZW1vdmUoKSx0aGlzLl9hbmNob3I/LnJlbW92ZSgp''@;'; put 'put ''LHRoaXMuX2Rlc3Ryb3lQcmV2aWV3KCksdGhpcy5fZGVzdHJveVBsYWNlaG9sZGVyKCksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5yZW1vdmVEcmFnSXRlbSh0aGlzKSx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLmJlZm9yZVN0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnN0YXJ0ZWQuY29t''@;'; put 'put ''cGxldGUoKSx0aGlzLnJlbGVhc2VkLmNvbXBsZXRlKCksdGhpcy5lbmRlZC5jb21wbGV0ZSgpLHRoaXMuZW50ZXJlZC5jb21wbGV0ZSgpLHRoaXMuZXhpdGVkLmNvbXBsZXRlKCksdGhpcy5kcm9wcGVkLmNvbXBsZXRlKCksdGhpcy5fbW92ZUV2ZW50cy5jb21wbGV0ZSgpLHRoaXMuX2hhbmRs''@;'; put 'put ''ZXM9W10sdGhpcy5fZGlzYWJsZWRIYW5kbGVzLmNsZWFyKCksdGhpcy5fZHJvcENvbnRhaW5lcj12b2lkIDAsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcGFyZW50UG9zaXRpb25zLmNsZWFyKCksdGhpcy5fYm91bmRhcnlFbGVtZW50PXRoaXMuX3Jvb3RF''@;'; put 'put ''bGVtZW50PXRoaXMuX293bmVyU1ZHRWxlbWVudD10aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRlPXRoaXMuX3ByZXZpZXdUZW1wbGF0ZT10aGlzLl9hbmNob3I9dGhpcy5fcGFyZW50RHJhZ1JlZj1udWxsfWlzRHJhZ2dpbmcoKXtyZXR1cm4gdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nJiZ0aGlz''@;'; put 'put ''Ll9kcmFnRHJvcFJlZ2lzdHJ5LmlzRHJhZ2dpbmcodGhpcyl9cmVzZXQoKXt0aGlzLl9yb290RWxlbWVudC5zdHlsZS50cmFuc2Zvcm09dGhpcy5faW5pdGlhbFRyYW5zZm9ybXx8IiIsdGhpcy5fYWN0aXZlVHJhbnNmb3JtPXt4OjAseTowfSx0aGlzLl9wYXNzaXZlVHJhbnNmb3JtPXt4OjAs''@;'; put 'put ''eTowfX1kaXNhYmxlSGFuZGxlKGMpeyF0aGlzLl9kaXNhYmxlZEhhbmRsZXMuaGFzKGMpJiZ0aGlzLl9oYW5kbGVzLmluZGV4T2YoYyk+LTEmJih0aGlzLl9kaXNhYmxlZEhhbmRsZXMuYWRkKGMpLHhfKGMsITApKX1lbmFibGVIYW5kbGUoYyl7dGhpcy5fZGlzYWJsZWRIYW5kbGVzLmhhcyhj''@;'; put 'put ''KSYmKHRoaXMuX2Rpc2FibGVkSGFuZGxlcy5kZWxldGUoYykseF8oYyx0aGlzLmRpc2FibGVkKSl9d2l0aERpcmVjdGlvbihjKXtyZXR1cm4gdGhpcy5fZGlyZWN0aW9uPWMsdGhpc31fd2l0aERyb3BDb250YWluZXIoYyl7dGhpcy5fZHJvcENvbnRhaW5lcj1jfWdldEZyZWVEcmFnUG9zaXRp''@;'; put 'put ''b24oKXtjb25zdCBjPXRoaXMuaXNEcmFnZ2luZygpP3RoaXMuX2FjdGl2ZVRyYW5zZm9ybTp0aGlzLl9wYXNzaXZlVHJhbnNmb3JtO3JldHVybnt4OmMueCx5OmMueX19c2V0RnJlZURyYWdQb3NpdGlvbihjKXtyZXR1cm4gdGhpcy5fYWN0aXZlVHJhbnNmb3JtPXt4OjAseTowfSx0aGlzLl9w''@;'; put 'put ''YXNzaXZlVHJhbnNmb3JtLng9Yy54LHRoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueT1jLnksdGhpcy5fZHJvcENvbnRhaW5lcnx8dGhpcy5fYXBwbHlSb290RWxlbWVudFRyYW5zZm9ybShjLngsYy55KSx0aGlzfXdpdGhQcmV2aWV3Q29udGFpbmVyKGMpe3JldHVybiB0aGlzLl9wcmV2aWV3Q29u''@;'; put 'put ''dGFpbmVyPWMsdGhpc31fc29ydEZyb21MYXN0UG9pbnRlclBvc2l0aW9uKCl7Y29uc3QgYz10aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb247YyYmdGhpcy5fZHJvcENvbnRhaW5lciYmdGhpcy5fdXBkYXRlQWN0aXZlRHJvcENvbnRhaW5lcih0aGlzLl9nZXRDb25zdHJhaW5lZFBvaW50''@;'; put 'put ''ZXJQb3NpdGlvbihjKSxjKX1fcmVtb3ZlTGlzdGVuZXJzKCl7dGhpcy5fcG9pbnRlck1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9wb2ludGVyVXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlz''@;'; put 'put ''Ll9nZXRTaGFkb3dSb290KCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IixfY2UsZ2NlKX1fZGVzdHJveVByZXZpZXcoKXt0aGlzLl9wcmV2aWV3Py5kZXN0cm95KCksdGhpcy5fcHJldmlldz1udWxsfV9kZXN0cm95UGxhY2Vob2xkZXIoKXt0aGlzLl9wbGFjZWhvbGRlcj8u''@;'; put 'put ''cmVtb3ZlKCksdGhpcy5fcGxhY2Vob2xkZXJSZWY/LmRlc3Ryb3koKSx0aGlzLl9wbGFjZWhvbGRlcj10aGlzLl9wbGFjZWhvbGRlclJlZj1udWxsfV9lbmREcmFnU2VxdWVuY2UoYyl7aWYodGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5pc0RyYWdnaW5nKHRoaXMpJiYodGhpcy5fcmVtb3ZlTGlz''@;'; put 'put ''dGVuZXJzKCksdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5zdG9wRHJhZ2dpbmcodGhpcyksdGhpcy5fdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucygpLHRoaXMuX2hhbmRsZXMmJih0aGlzLl9yb290RWxlbWVudC5zdHlsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvcj10aGlzLl9yb290RWxl''@;'; put 'put ''bWVudFRhcEhpZ2hsaWdodCksdGhpcy5faGFzU3RhcnRlZERyYWdnaW5nKSlpZih0aGlzLnJlbGVhc2VkLm5leHQoe3NvdXJjZTp0aGlzLGV2ZW50OmN9KSx0aGlzLl9kcm9wQ29udGFpbmVyKXRoaXMuX2Ryb3BDb250YWluZXIuX3N0b3BTY3JvbGxpbmcoKSx0aGlzLl9hbmltYXRlUHJldmll''@;'; put 'put ''d1RvUGxhY2Vob2xkZXIoKS50aGVuKCgpPT57dGhpcy5fY2xlYW51cERyYWdBcnRpZmFjdHMoYyksdGhpcy5fY2xlYW51cENhY2hlZERpbWVuc2lvbnMoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnN0b3BEcmFnZ2luZyh0aGlzKX0pO2Vsc2V7dGhpcy5fcGFzc2l2ZVRyYW5zZm9ybS54PXRo''@;'; put 'put ''aXMuX2FjdGl2ZVRyYW5zZm9ybS54O2NvbnN0IGE9dGhpcy5fZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGMpO3RoaXMuX3Bhc3NpdmVUcmFuc2Zvcm0ueT10aGlzLl9hY3RpdmVUcmFuc2Zvcm0ueSx0aGlzLl9uZ1pvbmUucnVuKCgpPT57dGhpcy5lbmRlZC5uZXh0KHtzb3VyY2U6dGhpcyxk''@;'; put 'put ''aXN0YW5jZTp0aGlzLl9nZXREcmFnRGlzdGFuY2UoYSksZHJvcFBvaW50OmEsZXZlbnQ6Y30pfSksdGhpcy5fY2xlYW51cENhY2hlZERpbWVuc2lvbnMoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnN0b3BEcmFnZ2luZyh0aGlzKX19X3N0YXJ0RHJhZ1NlcXVlbmNlKGMpe3BNKGMpJiYodGhp''@;'; put 'put ''cy5fbGFzdFRvdWNoRXZlbnRUaW1lPURhdGUubm93KCkpLHRoaXMuX3RvZ2dsZU5hdGl2ZURyYWdJbnRlcmFjdGlvbnMoKTtjb25zdCBhPXRoaXMuX2dldFNoYWRvd1Jvb3QoKSxkPXRoaXMuX2Ryb3BDb250YWluZXI7aWYoYSYmdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57''@;'; put 'put ''YS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsX2NlLGdjZSl9KSxkKXtjb25zdCBoPXRoaXMuX3Jvb3RFbGVtZW50LGY9aC5wYXJlbnROb2RlLHY9dGhpcy5fcGxhY2Vob2xkZXI9dGhpcy5fY3JlYXRlUGxhY2Vob2xkZXJFbGVtZW50KCksUz10aGlzLl9hbmNob3I9dGhpcy5fYW5j''@;'; put 'put ''aG9yfHx0aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKTtmLmluc2VydEJlZm9yZShTLGgpLHRoaXMuX2luaXRpYWxUcmFuc2Zvcm09aC5zdHlsZS50cmFuc2Zvcm18fCIiLHRoaXMuX3ByZXZpZXc9bmV3IHRSZSh0aGlzLl9kb2N1bWVudCx0aGlzLl9yb290RWxlbWVudCx0aGlzLl9k''@;'; put 'put ''aXJlY3Rpb24sdGhpcy5faW5pdGlhbERvbVJlY3QsdGhpcy5fcHJldmlld1RlbXBsYXRlfHxudWxsLHRoaXMucHJldmlld0NsYXNzfHxudWxsLHRoaXMuX3BpY2t1cFBvc2l0aW9uT25QYWdlLHRoaXMuX2luaXRpYWxUcmFuc2Zvcm0sdGhpcy5fY29uZmlnLnpJbmRleHx8MWUzKSx0aGlzLl9w''@;'; put 'put ''cmV2aWV3LmF0dGFjaCh0aGlzLl9nZXRQcmV2aWV3SW5zZXJ0aW9uUG9pbnQoZixhKSksaWNlKGgsITEsbWNlKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYucmVwbGFjZUNoaWxkKHYsaCkpLHRoaXMuc3RhcnRlZC5uZXh0KHtzb3VyY2U6dGhpcyxldmVudDpjfSksZC5zdGFy''@;'; put 'put ''dCgpLHRoaXMuX2luaXRpYWxDb250YWluZXI9ZCx0aGlzLl9pbml0aWFsSW5kZXg9ZC5nZXRJdGVtSW5kZXgodGhpcyl9ZWxzZSB0aGlzLnN0YXJ0ZWQubmV4dCh7c291cmNlOnRoaXMsZXZlbnQ6Y30pLHRoaXMuX2luaXRpYWxDb250YWluZXI9dGhpcy5faW5pdGlhbEluZGV4PXZvaWQgMDt0''@;'; put 'put ''aGlzLl9wYXJlbnRQb3NpdGlvbnMuY2FjaGUoZD9kLmdldFNjcm9sbGFibGVQYXJlbnRzKCk6W10pfV9pbml0aWFsaXplRHJhZ1NlcXVlbmNlKGMsYSl7dGhpcy5fcGFyZW50RHJhZ1JlZiYmYS5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBkPXRoaXMuaXNEcmFnZ2luZygpLGg9cE0oYSksZj0h''@;'; put 'put ''aCYmMCE9PWEuYnV0dG9uLHY9dGhpcy5fcm9vdEVsZW1lbnQsUz1lUihhKSxWPSFoJiZ0aGlzLl9sYXN0VG91Y2hFdmVudFRpbWUmJnRoaXMuX2xhc3RUb3VjaEV2ZW50VGltZSs4MDA+RGF0ZS5ub3coKSxRPWg/ZnVuY3Rpb24gZkllKGwpe2NvbnN0IGM9bC50b3VjaGVzJiZsLnRvdWNoZXNb''@;'; put 'put ''MF18fGwuY2hhbmdlZFRvdWNoZXMmJmwuY2hhbmdlZFRvdWNoZXNbMF07cmV0dXJuISghY3x8LTEhPT1jLmlkZW50aWZpZXJ8fG51bGwhPWMucmFkaXVzWCYmMSE9PWMucmFkaXVzWHx8bnVsbCE9Yy5yYWRpdXNZJiYxIT09Yy5yYWRpdXNZKX0oYSk6ZnVuY3Rpb24gaEllKGwpe3JldHVybiAw''@;'; put 'put ''PT09bC5idXR0b25zfHwwPT09bC5kZXRhaWx9KGEpO2lmKFMmJlMuZHJhZ2dhYmxlJiYibW91c2Vkb3duIj09PWEudHlwZSYmYS5wcmV2ZW50RGVmYXVsdCgpLGR8fGZ8fFZ8fFEpcmV0dXJuO2lmKHRoaXMuX2hhbmRsZXMubGVuZ3RoKXtjb25zdCBDZT12LnN0eWxlO3RoaXMuX3Jvb3RFbGVt''@;'; put 'put ''ZW50VGFwSGlnaGxpZ2h0PUNlLndlYmtpdFRhcEhpZ2hsaWdodENvbG9yfHwiIixDZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvcj0idHJhbnNwYXJlbnQifXRoaXMuX2hhc1N0YXJ0ZWREcmFnZ2luZz10aGlzLl9oYXNNb3ZlZD0hMSx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLl9pbml0''@;'; put 'put ''aWFsRG9tUmVjdD10aGlzLl9yb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9wb2ludGVyTW92ZVN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnBvaW50ZXJNb3ZlLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyTW92ZSksdGhpcy5fcG9pbnRlclVwU3Vi''@;'; put 'put ''c2NyaXB0aW9uPXRoaXMuX2RyYWdEcm9wUmVnaXN0cnkucG9pbnRlclVwLnN1YnNjcmliZSh0aGlzLl9wb2ludGVyVXApLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnNjcm9sbGVkKHRoaXMuX2dldFNoYWRvd1Jvb3QoKSkuc3Vic2NyaWJlKENlPT50''@;'; put 'put ''aGlzLl91cGRhdGVPblNjcm9sbChDZSkpLHRoaXMuX2JvdW5kYXJ5RWxlbWVudCYmKHRoaXMuX2JvdW5kYXJ5UmVjdD1mWih0aGlzLl9ib3VuZGFyeUVsZW1lbnQpKTtjb25zdCBkZT10aGlzLl9wcmV2aWV3VGVtcGxhdGU7dGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQ9ZGUmJmRlLnRl''@;'; put 'put ''bXBsYXRlJiYhZGUubWF0Y2hTaXplP3t4OjAseTowfTp0aGlzLl9nZXRQb2ludGVyUG9zaXRpb25JbkVsZW1lbnQodGhpcy5faW5pdGlhbERvbVJlY3QsYyxhKTtjb25zdCBwZT10aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZT10aGlzLl9sYXN0S25vd25Qb2ludGVyUG9zaXRpb249dGhpcy5f''@;'; put 'put ''Z2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGEpO3RoaXMuX3BvaW50ZXJEaXJlY3Rpb25EZWx0YT17eDowLHk6MH0sdGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlPXt4OnBlLngseTpwZS55fSx0aGlzLl9kcmFnU3RhcnRUaW1lPURhdGUubm93KCksdGhpcy5fZHJh''@;'; put 'put ''Z0Ryb3BSZWdpc3RyeS5zdGFydERyYWdnaW5nKHRoaXMsYSl9X2NsZWFudXBEcmFnQXJ0aWZhY3RzKGMpe2ljZSh0aGlzLl9yb290RWxlbWVudCwhMCxtY2UpLHRoaXMuX2FuY2hvci5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0aGlzLl9yb290RWxlbWVudCx0aGlzLl9hbmNob3IpLHRoaXMu''@;'; put 'put ''X2Rlc3Ryb3lQcmV2aWV3KCksdGhpcy5fZGVzdHJveVBsYWNlaG9sZGVyKCksdGhpcy5faW5pdGlhbERvbVJlY3Q9dGhpcy5fYm91bmRhcnlSZWN0PXRoaXMuX3ByZXZpZXdSZWN0PXRoaXMuX2luaXRpYWxUcmFuc2Zvcm09dm9pZCAwLHRoaXMuX25nWm9uZS5ydW4oKCk9Pntjb25zdCBhPXRo''@;'; put 'put ''aXMuX2Ryb3BDb250YWluZXIsZD1hLmdldEl0ZW1JbmRleCh0aGlzKSxoPXRoaXMuX2dldFBvaW50ZXJQb3NpdGlvbk9uUGFnZShjKSxmPXRoaXMuX2dldERyYWdEaXN0YW5jZShoKSx2PWEuX2lzT3ZlckNvbnRhaW5lcihoLngsaC55KTt0aGlzLmVuZGVkLm5leHQoe3NvdXJjZTp0aGlzLGRp''@;'; put 'put ''c3RhbmNlOmYsZHJvcFBvaW50OmgsZXZlbnQ6Y30pLHRoaXMuZHJvcHBlZC5uZXh0KHtpdGVtOnRoaXMsY3VycmVudEluZGV4OmQscHJldmlvdXNJbmRleDp0aGlzLl9pbml0aWFsSW5kZXgsY29udGFpbmVyOmEscHJldmlvdXNDb250YWluZXI6dGhpcy5faW5pdGlhbENvbnRhaW5lcixpc1Bv''@;'; put 'put ''aW50ZXJPdmVyQ29udGFpbmVyOnYsZGlzdGFuY2U6Zixkcm9wUG9pbnQ6aCxldmVudDpjfSksYS5kcm9wKHRoaXMsZCx0aGlzLl9pbml0aWFsSW5kZXgsdGhpcy5faW5pdGlhbENvbnRhaW5lcix2LGYsaCxjKSx0aGlzLl9kcm9wQ29udGFpbmVyPXRoaXMuX2luaXRpYWxDb250YWluZXJ9KX1f''@;'; put 'put ''dXBkYXRlQWN0aXZlRHJvcENvbnRhaW5lcih7eDpjLHk6YX0se3g6ZCx5Omh9KXtsZXQgZj10aGlzLl9pbml0aWFsQ29udGFpbmVyLl9nZXRTaWJsaW5nQ29udGFpbmVyRnJvbVBvc2l0aW9uKHRoaXMsYyxhKTshZiYmdGhpcy5fZHJvcENvbnRhaW5lciE9PXRoaXMuX2luaXRpYWxDb250YWlu''@;'; put 'put ''ZXImJnRoaXMuX2luaXRpYWxDb250YWluZXIuX2lzT3ZlckNvbnRhaW5lcihjLGEpJiYoZj10aGlzLl9pbml0aWFsQ29udGFpbmVyKSxmJiZmIT09dGhpcy5fZHJvcENvbnRhaW5lciYmdGhpcy5fbmdab25lLnJ1bigoKT0+e3RoaXMuZXhpdGVkLm5leHQoe2l0ZW06dGhpcyxjb250YWluZXI6''@;'; put 'put ''dGhpcy5fZHJvcENvbnRhaW5lcn0pLHRoaXMuX2Ryb3BDb250YWluZXIuZXhpdCh0aGlzKSx0aGlzLl9kcm9wQ29udGFpbmVyPWYsdGhpcy5fZHJvcENvbnRhaW5lci5lbnRlcih0aGlzLGMsYSxmPT09dGhpcy5faW5pdGlhbENvbnRhaW5lciYmZi5zb3J0aW5nRGlzYWJsZWQ/dGhpcy5faW5p''@;'; put 'put ''dGlhbEluZGV4OnZvaWQgMCksdGhpcy5lbnRlcmVkLm5leHQoe2l0ZW06dGhpcyxjb250YWluZXI6ZixjdXJyZW50SW5kZXg6Zi5nZXRJdGVtSW5kZXgodGhpcyl9KX0pLHRoaXMuaXNEcmFnZ2luZygpJiYodGhpcy5fZHJvcENvbnRhaW5lci5fc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShk''@;'; put 'put ''LGgpLHRoaXMuX2Ryb3BDb250YWluZXIuX3NvcnRJdGVtKHRoaXMsYyxhLHRoaXMuX3BvaW50ZXJEaXJlY3Rpb25EZWx0YSksdGhpcy5jb25zdHJhaW5Qb3NpdGlvbj90aGlzLl9hcHBseVByZXZpZXdUcmFuc2Zvcm0oYyxhKTp0aGlzLl9hcHBseVByZXZpZXdUcmFuc2Zvcm0oYy10aGlzLl9w''@;'; put 'put ''aWNrdXBQb3NpdGlvbkluRWxlbWVudC54LGEtdGhpcy5fcGlja3VwUG9zaXRpb25JbkVsZW1lbnQueSkpfV9hbmltYXRlUHJldmlld1RvUGxhY2Vob2xkZXIoKXtpZighdGhpcy5faGFzTW92ZWQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGM9dGhpcy5fcGxhY2Vob2xkZXIuZ2V0''@;'; put 'put ''Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fcHJldmlldy5hZGRDbGFzcygiY2RrLWRyYWctYW5pbWF0aW5nIiksdGhpcy5fYXBwbHlQcmV2aWV3VHJhbnNmb3JtKGMubGVmdCxjLnRvcCk7Y29uc3QgYT10aGlzLl9wcmV2aWV3LmdldFRyYW5zaXRpb25EdXJhdGlvbigpO3JldHVybiAwPT09''@;'; put 'put ''YT9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pm5ldyBQcm9taXNlKGQ9Pntjb25zdCBoPXY9PnsoIXZ8fGVSKHYpPT09dGhpcy5fcHJldmlldyYmInRyYW5zZm9ybSI9PT12LnByb3BlcnR5TmFtZSkmJih0aGlzLl9wcmV2aWV3Py5yZW1vdmVF''@;'; put 'put ''dmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixoKSxkKCksY2xlYXJUaW1lb3V0KGYpKX0sZj1zZXRUaW1lb3V0KGgsMS41KmEpO3RoaXMuX3ByZXZpZXcuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsaCl9KSl9X2NyZWF0ZVBsYWNlaG9sZGVyRWxlbWVudCgpe2NvbnN0IGM9''@;'; put 'put ''dGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZSxhPWM/Yy50ZW1wbGF0ZTpudWxsO2xldCBkO3JldHVybiBhPyh0aGlzLl9wbGFjZWhvbGRlclJlZj1jLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGEsYy5jb250ZXh0KSx0aGlzLl9wbGFjZWhvbGRlclJlZi5kZXRlY3RDaGFuZ2Vz''@;'; put 'put ''KCksZD1oY2UodGhpcy5fcGxhY2Vob2xkZXJSZWYsdGhpcy5fZG9jdW1lbnQpKTpkPWxjZSh0aGlzLl9yb290RWxlbWVudCksZC5zdHlsZS5wb2ludGVyRXZlbnRzPSJub25lIixkLmNsYXNzTGlzdC5hZGQoImNkay1kcmFnLXBsYWNlaG9sZGVyIiksZH1fZ2V0UG9pbnRlclBvc2l0aW9uSW5F''@;'; put 'put ''bGVtZW50KGMsYSxkKXtjb25zdCBoPWE9PT10aGlzLl9yb290RWxlbWVudD9udWxsOmEsZj1oP2guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6Yyx2PXBNKGQpP2QudGFyZ2V0VG91Y2hlc1swXTpkLFM9dGhpcy5fZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO3JldHVybnt4OmYubGVmdC1j''@;'; put 'put ''LmxlZnQrKHYucGFnZVgtZi5sZWZ0LVMubGVmdCkseTpmLnRvcC1jLnRvcCsodi5wYWdlWS1mLnRvcC1TLnRvcCl9fV9nZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoYyl7Y29uc3QgYT10aGlzLl9nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCksZD1wTShjKT9jLnRvdWNoZXNbMF18fGMuY2hh''@;'; put 'put ''bmdlZFRvdWNoZXNbMF18fHtwYWdlWDowLHBhZ2VZOjB9OmMsaD1kLnBhZ2VYLWEubGVmdCxmPWQucGFnZVktYS50b3A7aWYodGhpcy5fb3duZXJTVkdFbGVtZW50KXtjb25zdCB2PXRoaXMuX293bmVyU1ZHRWxlbWVudC5nZXRTY3JlZW5DVE0oKTtpZih2KXtjb25zdCBTPXRoaXMuX293bmVy''@;'; put 'put ''U1ZHRWxlbWVudC5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBTLng9aCxTLnk9ZixTLm1hdHJpeFRyYW5zZm9ybSh2LmludmVyc2UoKSl9fXJldHVybnt4OmgseTpmfX1fZ2V0Q29uc3RyYWluZWRQb2ludGVyUG9zaXRpb24oYyl7Y29uc3QgYT10aGlzLl9kcm9wQ29udGFpbmVyP3RoaXMuX2Ry''@;'; put 'put ''b3BDb250YWluZXIubG9ja0F4aXM6bnVsbDtsZXR7eDpkLHk6aH09dGhpcy5jb25zdHJhaW5Qb3NpdGlvbj90aGlzLmNvbnN0cmFpblBvc2l0aW9uKGMsdGhpcyx0aGlzLl9pbml0aWFsRG9tUmVjdCx0aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudCk6YztpZigieCI9PT10aGlzLmxvY2tB''@;'; put 'put ''eGlzfHwieCI9PT1hP2g9dGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2UueS0odGhpcy5jb25zdHJhaW5Qb3NpdGlvbj90aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudC55OjApOigieSI9PT10aGlzLmxvY2tBeGlzfHwieSI9PT1hKSYmKGQ9dGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2Uu''@;'; put 'put ''eC0odGhpcy5jb25zdHJhaW5Qb3NpdGlvbj90aGlzLl9waWNrdXBQb3NpdGlvbkluRWxlbWVudC54OjApKSx0aGlzLl9ib3VuZGFyeVJlY3Qpe2NvbnN0e3g6Zix5OnZ9PXRoaXMuY29uc3RyYWluUG9zaXRpb24/e3g6MCx5OjB9OnRoaXMuX3BpY2t1cFBvc2l0aW9uSW5FbGVtZW50LFM9dGhp''@;'; put 'put ''cy5fYm91bmRhcnlSZWN0LHt3aWR0aDpWLGhlaWdodDpRfT10aGlzLl9nZXRQcmV2aWV3UmVjdCgpLGRlPVMudG9wK3YscGU9Uy5ib3R0b20tKFEtdik7ZD12Y2UoZCxTLmxlZnQrZixTLnJpZ2h0LShWLWYpKSxoPXZjZShoLGRlLHBlKX1yZXR1cm57eDpkLHk6aH19X3VwZGF0ZVBvaW50ZXJE''@;'; put 'put ''aXJlY3Rpb25EZWx0YShjKXtjb25zdHt4OmEseTpkfT1jLGg9dGhpcy5fcG9pbnRlckRpcmVjdGlvbkRlbHRhLGY9dGhpcy5fcG9pbnRlclBvc2l0aW9uQXRMYXN0RGlyZWN0aW9uQ2hhbmdlLHY9TWF0aC5hYnMoYS1mLngpLFM9TWF0aC5hYnMoZC1mLnkpO3JldHVybiB2PnRoaXMuX2NvbmZp''@;'; put 'put ''Zy5wb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkJiYoaC54PWE+Zi54PzE6LTEsZi54PWEpLFM+dGhpcy5fY29uZmlnLnBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQmJihoLnk9ZD5mLnk/MTotMSxmLnk9ZCksaH1fdG9nZ2xlTmF0aXZlRHJhZ0ludGVyYWN0aW9ucygpe2lm''@;'; put 'put ''KCF0aGlzLl9yb290RWxlbWVudHx8IXRoaXMuX2hhbmRsZXMpcmV0dXJuO2NvbnN0IGM9dGhpcy5faGFuZGxlcy5sZW5ndGg+MHx8IXRoaXMuaXNEcmFnZ2luZygpO2MhPT10aGlzLl9uYXRpdmVJbnRlcmFjdGlvbnNFbmFibGVkJiYodGhpcy5fbmF0aXZlSW50ZXJhY3Rpb25zRW5hYmxlZD1j''@;'; put 'put ''LHhfKHRoaXMuX3Jvb3RFbGVtZW50LGMpKX1fcmVtb3ZlUm9vdEVsZW1lbnRMaXN0ZW5lcnMoYyl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLG9SKSxjLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3du''@;'; put 'put ''LHBjZSksYy5yZW1vdmVFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLHRoaXMuX25hdGl2ZURyYWdTdGFydCxvUil9X2FwcGx5Um9vdEVsZW1lbnRUcmFuc2Zvcm0oYyxhKXtjb25zdCBkPWlSKGMsYSksaD10aGlzLl9yb290RWxlbWVudC5zdHlsZTtudWxsPT10aGlzLl9pbml0aWFsVHJhbnNm''@;'; put 'put ''b3JtJiYodGhpcy5faW5pdGlhbFRyYW5zZm9ybT1oLnRyYW5zZm9ybSYmIm5vbmUiIT1oLnRyYW5zZm9ybT9oLnRyYW5zZm9ybToiIiksaC50cmFuc2Zvcm09clIoZCx0aGlzLl9pbml0aWFsVHJhbnNmb3JtKX1fYXBwbHlQcmV2aWV3VHJhbnNmb3JtKGMsYSl7Y29uc3QgZD10aGlzLl9wcmV2''@;'; put 'put ''aWV3VGVtcGxhdGU/LnRlbXBsYXRlP3ZvaWQgMDp0aGlzLl9pbml0aWFsVHJhbnNmb3JtLGg9aVIoYyxhKTt0aGlzLl9wcmV2aWV3LnNldFRyYW5zZm9ybShyUihoLGQpKX1fZ2V0RHJhZ0Rpc3RhbmNlKGMpe2NvbnN0IGE9dGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2U7cmV0dXJuIGE/e3g6''@;'; put 'put ''Yy54LWEueCx5OmMueS1hLnl9Ont4OjAseTowfX1fY2xlYW51cENhY2hlZERpbWVuc2lvbnMoKXt0aGlzLl9ib3VuZGFyeVJlY3Q9dGhpcy5fcHJldmlld1JlY3Q9dm9pZCAwLHRoaXMuX3BhcmVudFBvc2l0aW9ucy5jbGVhcigpfV9jb250YWluSW5zaWRlQm91bmRhcnlPblJlc2l6ZSgpe2xl''@;'; put 'put ''dHt4OmMseTphfT10aGlzLl9wYXNzaXZlVHJhbnNmb3JtO2lmKDA9PT1jJiYwPT09YXx8dGhpcy5pc0RyYWdnaW5nKCl8fCF0aGlzLl9ib3VuZGFyeUVsZW1lbnQpcmV0dXJuO2NvbnN0IGQ9dGhpcy5fcm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaD10aGlzLl9ib3VuZGFy''@;'; put 'put ''eUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoMD09PWgud2lkdGgmJjA9PT1oLmhlaWdodHx8MD09PWQud2lkdGgmJjA9PT1kLmhlaWdodClyZXR1cm47Y29uc3QgZj1oLmxlZnQtZC5sZWZ0LHY9ZC5yaWdodC1oLnJpZ2h0LFM9aC50b3AtZC50b3AsVj1kLmJvdHRvbS1oLmJv''@;'; put 'put ''dHRvbTtoLndpZHRoPmQud2lkdGg/KGY+MCYmKGMrPWYpLHY+MCYmKGMtPXYpKTpjPTAsaC5oZWlnaHQ+ZC5oZWlnaHQ/KFM+MCYmKGErPVMpLFY+MCYmKGEtPVYpKTphPTAsKGMhPT10aGlzLl9wYXNzaXZlVHJhbnNmb3JtLnh8fGEhPT10aGlzLl9wYXNzaXZlVHJhbnNmb3JtLnkpJiZ0aGlz''@;'; put 'put ''LnNldEZyZWVEcmFnUG9zaXRpb24oe3k6YSx4OmN9KX1fZ2V0RHJhZ1N0YXJ0RGVsYXkoYyl7Y29uc3QgYT10aGlzLmRyYWdTdGFydERlbGF5O3JldHVybiJudW1iZXIiPT10eXBlb2YgYT9hOnBNKGMpP2EudG91Y2g6YT9hLm1vdXNlOjB9X3VwZGF0ZU9uU2Nyb2xsKGMpe2NvbnN0IGE9dGhp''@;'; put 'put ''cy5fcGFyZW50UG9zaXRpb25zLmhhbmRsZVNjcm9sbChjKTtpZihhKXtjb25zdCBkPWVSKGMpO3RoaXMuX2JvdW5kYXJ5UmVjdCYmZCE9PXRoaXMuX2JvdW5kYXJ5RWxlbWVudCYmZC5jb250YWlucyh0aGlzLl9ib3VuZGFyeUVsZW1lbnQpJiZmTSh0aGlzLl9ib3VuZGFyeVJlY3QsYS50b3As''@;'; put 'put ''YS5sZWZ0KSx0aGlzLl9waWNrdXBQb3NpdGlvbk9uUGFnZS54Kz1hLmxlZnQsdGhpcy5fcGlja3VwUG9zaXRpb25PblBhZ2UueSs9YS50b3AsdGhpcy5fZHJvcENvbnRhaW5lcnx8KHRoaXMuX2FjdGl2ZVRyYW5zZm9ybS54LT1hLmxlZnQsdGhpcy5fYWN0aXZlVHJhbnNmb3JtLnktPWEudG9w''@;'; put 'put ''LHRoaXMuX2FwcGx5Um9vdEVsZW1lbnRUcmFuc2Zvcm0odGhpcy5fYWN0aXZlVHJhbnNmb3JtLngsdGhpcy5fYWN0aXZlVHJhbnNmb3JtLnkpKX19X2dldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50UG9zaXRpb25zLnBvc2l0aW9ucy5nZXQodGhpcy5fZG9j''@;'; put 'put ''dW1lbnQpPy5zY3JvbGxQb3NpdGlvbnx8dGhpcy5fcGFyZW50UG9zaXRpb25zLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKX1fZ2V0U2hhZG93Um9vdCgpe3JldHVybiB2b2lkIDA9PT10aGlzLl9jYWNoZWRTaGFkb3dSb290JiYodGhpcy5fY2FjaGVkU2hhZG93Um9vdD16bGUodGhpcy5f''@;'; put 'put ''cm9vdEVsZW1lbnQpKSx0aGlzLl9jYWNoZWRTaGFkb3dSb290fV9nZXRQcmV2aWV3SW5zZXJ0aW9uUG9pbnQoYyxhKXtjb25zdCBkPXRoaXMuX3ByZXZpZXdDb250YWluZXJ8fCJnbG9iYWwiO2lmKCJwYXJlbnQiPT09ZClyZXR1cm4gYztpZigiZ2xvYmFsIj09PWQpe2NvbnN0IGg9dGhpcy5f''@;'; put 'put ''ZG9jdW1lbnQ7cmV0dXJuIGF8fGguZnVsbHNjcmVlbkVsZW1lbnR8fGgud2Via2l0RnVsbHNjcmVlbkVsZW1lbnR8fGgubW96RnVsbFNjcmVlbkVsZW1lbnR8fGgubXNGdWxsc2NyZWVuRWxlbWVudHx8aC5ib2R5fXJldHVybiBQMShkKX1fZ2V0UHJldmlld1JlY3QoKXtyZXR1cm4oIXRoaXMu''@;'; put 'put ''X3ByZXZpZXdSZWN0fHwhdGhpcy5fcHJldmlld1JlY3Qud2lkdGgmJiF0aGlzLl9wcmV2aWV3UmVjdC5oZWlnaHQpJiYodGhpcy5fcHJldmlld1JlY3Q9dGhpcy5fcHJldmlldz90aGlzLl9wcmV2aWV3LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOnRoaXMuX2luaXRpYWxEb21SZWN0KSx0aGlz''@;'; put 'put ''Ll9wcmV2aWV3UmVjdH1fZ2V0VGFyZ2V0SGFuZGxlKGMpe3JldHVybiB0aGlzLl9oYW5kbGVzLmZpbmQoYT0+Yy50YXJnZXQmJihjLnRhcmdldD09PWF8fGEuY29udGFpbnMoYy50YXJnZXQpKSl9fWZ1bmN0aW9uIHZjZShsLGMsYSl7cmV0dXJuIE1hdGgubWF4KGMsTWF0aC5taW4oYSxsKSl9''@;'; put 'put ''ZnVuY3Rpb24gcE0obCl7cmV0dXJuInQiPT09bC50eXBlWzBdfWZ1bmN0aW9uIF9jZShsKXtsLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gYmNlKGwsYyxhKXtjb25zdCBkPWdNKGMsbC5sZW5ndGgtMSksaD1nTShhLGwubGVuZ3RoLTEpO2lmKGQ9PT1oKXJldHVybjtjb25zdCBmPWxbZF0s''@;'; put 'put ''dj1oPGQ/LTE6MTtmb3IobGV0IFM9ZDtTIT09aDtTKz12KWxbU109bFtTK3ZdO2xbaF09Zn1mdW5jdGlvbiBnTShsLGMpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKGMsbCkpfWNsYXNzIG9SZXtjb25zdHJ1Y3RvcihjLGEpe3RoaXMuX2VsZW1lbnQ9Yyx0aGlzLl9kcmFnRHJvcFJlZ2lz''@;'; put 'put ''dHJ5PWEsdGhpcy5faXRlbVBvc2l0aW9ucz1bXSx0aGlzLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIsdGhpcy5fcHJldmlvdXNTd2FwPXtkcmFnOm51bGwsZGVsdGE6MCxvdmVybGFwczohMX19c3RhcnQoYyl7dGhpcy53aXRoSXRlbXMoYyl9c29ydChjLGEsZCxoKXtjb25zdCBmPXRoaXMuX2l0''@;'; put 'put ''ZW1Qb3NpdGlvbnMsdj10aGlzLl9nZXRJdGVtSW5kZXhGcm9tUG9pbnRlclBvc2l0aW9uKGMsYSxkLGgpO2lmKC0xPT09diYmZi5sZW5ndGg+MClyZXR1cm4gbnVsbDtjb25zdCBTPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24sVj1mLmZpbmRJbmRleChkdD0+ZHQuZHJhZz09PWMp''@;'; put 'put ''LFE9Zlt2XSxwZT1RLmNsaWVudFJlY3QsQ2U9Vj52PzE6LTEsT2U9dGhpcy5fZ2V0SXRlbU9mZnNldFB4KGZbVl0uY2xpZW50UmVjdCxwZSxDZSksWWU9dGhpcy5fZ2V0U2libGluZ09mZnNldFB4KFYsZixDZSksZXQ9Zi5zbGljZSgpO3JldHVybiBiY2UoZixWLHYpLGYuZm9yRWFjaCgoZHQs''@;'; put 'put ''aHQpPT57aWYoZXRbaHRdPT09ZHQpcmV0dXJuO2NvbnN0IE10PWR0LmRyYWc9PT1jLFF0PU10P09lOlllLGxuPU10P2MuZ2V0UGxhY2Vob2xkZXJFbGVtZW50KCk6ZHQuZHJhZy5nZXRSb290RWxlbWVudCgpO2R0Lm9mZnNldCs9UXQsUz8obG4uc3R5bGUudHJhbnNmb3JtPXJSKGB0cmFuc2xh''@;'; put 'put ''dGUzZCgke01hdGgucm91bmQoZHQub2Zmc2V0KX1weCwgMCwgMClgLGR0LmluaXRpYWxUcmFuc2Zvcm0pLGZNKGR0LmNsaWVudFJlY3QsMCxRdCkpOihsbi5zdHlsZS50cmFuc2Zvcm09clIoYHRyYW5zbGF0ZTNkKDAsICR7TWF0aC5yb3VuZChkdC5vZmZzZXQpfXB4LCAwKWAsZHQuaW5pdGlh''@;'; put 'put ''bFRyYW5zZm9ybSksZk0oZHQuY2xpZW50UmVjdCxRdCwwKSl9KSx0aGlzLl9wcmV2aW91c1N3YXAub3ZlcmxhcHM9cFoocGUsYSxkKSx0aGlzLl9wcmV2aW91c1N3YXAuZHJhZz1RLmRyYWcsdGhpcy5fcHJldmlvdXNTd2FwLmRlbHRhPVM/aC54OmgueSx7cHJldmlvdXNJbmRleDpWLGN1cnJl''@;'; put 'put ''bnRJbmRleDp2fX1lbnRlcihjLGEsZCxoKXtjb25zdCBmPW51bGw9PWh8fGg8MD90aGlzLl9nZXRJdGVtSW5kZXhGcm9tUG9pbnRlclBvc2l0aW9uKGMsYSxkKTpoLHY9dGhpcy5fYWN0aXZlRHJhZ2dhYmxlcyxTPXYuaW5kZXhPZihjKSxWPWMuZ2V0UGxhY2Vob2xkZXJFbGVtZW50KCk7bGV0''@;'; put 'put ''IFE9dltmXTtpZihRPT09YyYmKFE9dltmKzFdKSwhUSYmKG51bGw9PWZ8fC0xPT09Znx8Zjx2Lmxlbmd0aC0xKSYmdGhpcy5fc2hvdWxkRW50ZXJBc0ZpcnN0Q2hpbGQoYSxkKSYmKFE9dlswXSksUz4tMSYmdi5zcGxpY2UoUywxKSxRJiYhdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5pc0RyYWdn''@;'; put 'put ''aW5nKFEpKXtjb25zdCBkZT1RLmdldFJvb3RFbGVtZW50KCk7ZGUucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoVixkZSksdi5zcGxpY2UoZiwwLGMpfWVsc2UgUDEodGhpcy5fZWxlbWVudCkuYXBwZW5kQ2hpbGQoViksdi5wdXNoKGMpO1Yuc3R5bGUudHJhbnNmb3JtPSIiLHRoaXMuX2Nh''@;'; put 'put ''Y2hlSXRlbVBvc2l0aW9ucygpfXdpdGhJdGVtcyhjKXt0aGlzLl9hY3RpdmVEcmFnZ2FibGVzPWMuc2xpY2UoKSx0aGlzLl9jYWNoZUl0ZW1Qb3NpdGlvbnMoKX13aXRoU29ydFByZWRpY2F0ZShjKXt0aGlzLl9zb3J0UHJlZGljYXRlPWN9cmVzZXQoKXt0aGlzLl9hY3RpdmVEcmFnZ2FibGVz''@;'; put 'put ''LmZvckVhY2goYz0+e2NvbnN0IGE9Yy5nZXRSb290RWxlbWVudCgpO2lmKGEpe2NvbnN0IGQ9dGhpcy5faXRlbVBvc2l0aW9ucy5maW5kKGg9PmguZHJhZz09PWMpPy5pbml0aWFsVHJhbnNmb3JtO2Euc3R5bGUudHJhbnNmb3JtPWR8fCIifX0pLHRoaXMuX2l0ZW1Qb3NpdGlvbnM9W10sdGhp''@;'; put 'put ''cy5fYWN0aXZlRHJhZ2dhYmxlcz1bXSx0aGlzLl9wcmV2aW91c1N3YXAuZHJhZz1udWxsLHRoaXMuX3ByZXZpb3VzU3dhcC5kZWx0YT0wLHRoaXMuX3ByZXZpb3VzU3dhcC5vdmVybGFwcz0hMX1nZXRBY3RpdmVJdGVtc1NuYXBzaG90KCl7cmV0dXJuIHRoaXMuX2FjdGl2ZURyYWdnYWJsZXN9''@;'; put 'put ''Z2V0SXRlbUluZGV4KGMpe3JldHVybigiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYicnRsIj09PXRoaXMuZGlyZWN0aW9uP3RoaXMuX2l0ZW1Qb3NpdGlvbnMuc2xpY2UoKS5yZXZlcnNlKCk6dGhpcy5faXRlbVBvc2l0aW9ucykuZmluZEluZGV4KGQ9PmQuZHJhZz09PWMpfXVw''@;'; put 'put ''ZGF0ZU9uU2Nyb2xsKGMsYSl7dGhpcy5faXRlbVBvc2l0aW9ucy5mb3JFYWNoKCh7Y2xpZW50UmVjdDpkfSk9PntmTShkLGMsYSl9KSx0aGlzLl9pdGVtUG9zaXRpb25zLmZvckVhY2goKHtkcmFnOmR9KT0+e3RoaXMuX2RyYWdEcm9wUmVnaXN0cnkuaXNEcmFnZ2luZyhkKSYmZC5fc29ydEZy''@;'; put 'put ''b21MYXN0UG9pbnRlclBvc2l0aW9uKCl9KX1fY2FjaGVJdGVtUG9zaXRpb25zKCl7Y29uc3QgYz0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uO3RoaXMuX2l0ZW1Qb3NpdGlvbnM9dGhpcy5fYWN0aXZlRHJhZ2dhYmxlcy5tYXAoYT0+e2NvbnN0IGQ9YS5nZXRWaXNpYmxlRWxlbWVu''@;'; put 'put ''dCgpO3JldHVybntkcmFnOmEsb2Zmc2V0OjAsaW5pdGlhbFRyYW5zZm9ybTpkLnN0eWxlLnRyYW5zZm9ybXx8IiIsY2xpZW50UmVjdDpmWihkKX19KS5zb3J0KChhLGQpPT5jP2EuY2xpZW50UmVjdC5sZWZ0LWQuY2xpZW50UmVjdC5sZWZ0OmEuY2xpZW50UmVjdC50b3AtZC5jbGllbnRSZWN0''@;'; put 'put ''LnRvcCl9X2dldEl0ZW1PZmZzZXRQeChjLGEsZCl7Y29uc3QgaD0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uO2xldCBmPWg/YS5sZWZ0LWMubGVmdDphLnRvcC1jLnRvcDtyZXR1cm4tMT09PWQmJihmKz1oP2Eud2lkdGgtYy53aWR0aDphLmhlaWdodC1jLmhlaWdodCksZn1fZ2V0''@;'; put 'put ''U2libGluZ09mZnNldFB4KGMsYSxkKXtjb25zdCBoPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24sZj1hW2NdLmNsaWVudFJlY3Qsdj1hW2MrLTEqZF07bGV0IFM9ZltoPyJ3aWR0aCI6ImhlaWdodCJdKmQ7aWYodil7Y29uc3QgVj1oPyJsZWZ0IjoidG9wIixRPWg/InJpZ2h0Ijoi''@;'; put 'put ''Ym90dG9tIjstMT09PWQ/Uy09di5jbGllbnRSZWN0W1ZdLWZbUV06Uys9ZltWXS12LmNsaWVudFJlY3RbUV19cmV0dXJuIFN9X3Nob3VsZEVudGVyQXNGaXJzdENoaWxkKGMsYSl7aWYoIXRoaXMuX2FjdGl2ZURyYWdnYWJsZXMubGVuZ3RoKXJldHVybiExO2NvbnN0IGQ9dGhpcy5faXRlbVBv''@;'; put 'put ''c2l0aW9ucyxoPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb247aWYoZFswXS5kcmFnIT09dGhpcy5fYWN0aXZlRHJhZ2dhYmxlc1swXSl7Y29uc3Qgdj1kW2QubGVuZ3RoLTFdLmNsaWVudFJlY3Q7cmV0dXJuIGg/Yz49di5yaWdodDphPj12LmJvdHRvbX17Y29uc3Qgdj1kWzBdLmNs''@;'; put 'put ''aWVudFJlY3Q7cmV0dXJuIGg/Yzw9di5sZWZ0OmE8PXYudG9wfX1fZ2V0SXRlbUluZGV4RnJvbVBvaW50ZXJQb3NpdGlvbihjLGEsZCxoKXtjb25zdCBmPSJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24sdj10aGlzLl9pdGVtUG9zaXRpb25zLmZpbmRJbmRleCgoe2RyYWc6UyxjbGll''@;'; put 'put ''bnRSZWN0OlZ9KT0+UyE9PWMmJigoIWh8fFMhPT10aGlzLl9wcmV2aW91c1N3YXAuZHJhZ3x8IXRoaXMuX3ByZXZpb3VzU3dhcC5vdmVybGFwc3x8KGY/aC54OmgueSkhPT10aGlzLl9wcmV2aW91c1N3YXAuZGVsdGEpJiYoZj9hPj1NYXRoLmZsb29yKFYubGVmdCkmJmE8TWF0aC5mbG9vcihW''@;'; put 'put ''LnJpZ2h0KTpkPj1NYXRoLmZsb29yKFYudG9wKSYmZDxNYXRoLmZsb29yKFYuYm90dG9tKSkpKTtyZXR1cm4tMSE9PXYmJnRoaXMuX3NvcnRQcmVkaWNhdGUodixjKT92Oi0xfX12YXIgeGg9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5OT05FPTBdPSJOT05FIixsW2wuVVA9MV09IlVQIixsW2wu''@;'; put 'put ''RE9XTj0yXT0iRE9XTiIsbH0oeGh8fHt9KSxuMT1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLk5PTkU9MF09Ik5PTkUiLGxbbC5MRUZUPTFdPSJMRUZUIixsW2wuUklHSFQ9Ml09IlJJR0hUIixsfShuMXx8e30pO2NsYXNzIHNSZXtjb25zdHJ1Y3RvcihjLGEsZCxoLGYpe3RoaXMuX2RyYWdEcm9w''@;'; put 'put ''UmVnaXN0cnk9YSx0aGlzLl9uZ1pvbmU9aCx0aGlzLl92aWV3cG9ydFJ1bGVyPWYsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnNvcnRpbmdEaXNhYmxlZD0hMSx0aGlzLmF1dG9TY3JvbGxEaXNhYmxlZD0hMSx0aGlzLmF1dG9TY3JvbGxTdGVwPTIsdGhpcy5lbnRlclByZWRpY2F0ZT0oKT0+ITAs''@;'; put 'put ''dGhpcy5zb3J0UHJlZGljYXRlPSgpPT4hMCx0aGlzLmJlZm9yZVN0YXJ0ZWQ9bmV3IHRuLHRoaXMuZW50ZXJlZD1uZXcgdG4sdGhpcy5leGl0ZWQ9bmV3IHRuLHRoaXMuZHJvcHBlZD1uZXcgdG4sdGhpcy5zb3J0ZWQ9bmV3IHRuLHRoaXMucmVjZWl2aW5nU3RhcnRlZD1uZXcgdG4sdGhpcy5y''@;'; put 'put ''ZWNlaXZpbmdTdG9wcGVkPW5ldyB0bix0aGlzLl9pc0RyYWdnaW5nPSExLHRoaXMuX2RyYWdnYWJsZXM9W10sdGhpcy5fc2libGluZ3M9W10sdGhpcy5fYWN0aXZlU2libGluZ3M9bmV3IFNldCx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbj1LdC5FTVBUWSx0aGlzLl92ZXJ0aWNh''@;'; put 'put ''bFNjcm9sbERpcmVjdGlvbj14aC5OT05FLHRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249bjEuTk9ORSx0aGlzLl9zdG9wU2Nyb2xsVGltZXJzPW5ldyB0bix0aGlzLl9jYWNoZWRTaGFkb3dSb290PW51bGwsdGhpcy5fc3RhcnRTY3JvbGxJbnRlcnZhbD0oKT0+e3RoaXMuX3N0b3BT''@;'; put 'put ''Y3JvbGxpbmcoKSxmdW5jdGlvbiBYSWUobD0wLGM9WEkpe3JldHVybiBsPDAmJihsPTApLFhsZShsLGwsYyl9KDAscWxlKS5waXBlKFQwKHRoaXMuX3N0b3BTY3JvbGxUaW1lcnMpKS5zdWJzY3JpYmUoKCk9Pntjb25zdCB2PXRoaXMuX3Njcm9sbE5vZGUsUz10aGlzLmF1dG9TY3JvbGxTdGVw''@;'; put 'put ''O3RoaXMuX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uPT09eGguVVA/di5zY3JvbGxCeSgwLC1TKTp0aGlzLl92ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbj09PXhoLkRPV04mJnYuc2Nyb2xsQnkoMCxTKSx0aGlzLl9ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uPT09bjEuTEVGVD92LnNjcm9sbEJ5''@;'; put 'put ''KC1TLDApOnRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb249PT1uMS5SSUdIVCYmdi5zY3JvbGxCeShTLDApfSl9LHRoaXMuZWxlbWVudD1QMShjKSx0aGlzLl9kb2N1bWVudD1kLHRoaXMud2l0aFNjcm9sbGFibGVQYXJlbnRzKFt0aGlzLmVsZW1lbnRdKSxhLnJlZ2lzdGVyRHJvcENv''@;'; put 'put ''bnRhaW5lcih0aGlzKSx0aGlzLl9wYXJlbnRQb3NpdGlvbnM9bmV3IGFjZShkKSx0aGlzLl9zb3J0U3RyYXRlZ3k9bmV3IG9SZSh0aGlzLmVsZW1lbnQsYSksdGhpcy5fc29ydFN0cmF0ZWd5LndpdGhTb3J0UHJlZGljYXRlKCh2LFMpPT50aGlzLnNvcnRQcmVkaWNhdGUodixTLHRoaXMpKX1k''@;'; put 'put ''aXNwb3NlKCl7dGhpcy5fc3RvcFNjcm9sbGluZygpLHRoaXMuX3N0b3BTY3JvbGxUaW1lcnMuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuYmVmb3JlU3RhcnRlZC5jb21wbGV0ZSgpLHRoaXMuZW50ZXJlZC5jb21wbGV0ZSgp''@;'; put 'put ''LHRoaXMuZXhpdGVkLmNvbXBsZXRlKCksdGhpcy5kcm9wcGVkLmNvbXBsZXRlKCksdGhpcy5zb3J0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0YXJ0ZWQuY29tcGxldGUoKSx0aGlzLnJlY2VpdmluZ1N0b3BwZWQuY29tcGxldGUoKSx0aGlzLl9hY3RpdmVTaWJsaW5ncy5jbGVhcigp''@;'; put 'put ''LHRoaXMuX3Njcm9sbE5vZGU9bnVsbCx0aGlzLl9wYXJlbnRQb3NpdGlvbnMuY2xlYXIoKSx0aGlzLl9kcmFnRHJvcFJlZ2lzdHJ5LnJlbW92ZURyb3BDb250YWluZXIodGhpcyl9aXNEcmFnZ2luZygpe3JldHVybiB0aGlzLl9pc0RyYWdnaW5nfXN0YXJ0KCl7dGhpcy5fZHJhZ2dpbmdTdGFy''@;'; put 'put ''dGVkKCksdGhpcy5fbm90aWZ5UmVjZWl2aW5nU2libGluZ3MoKX1lbnRlcihjLGEsZCxoKXt0aGlzLl9kcmFnZ2luZ1N0YXJ0ZWQoKSxudWxsPT1oJiZ0aGlzLnNvcnRpbmdEaXNhYmxlZCYmKGg9dGhpcy5fZHJhZ2dhYmxlcy5pbmRleE9mKGMpKSx0aGlzLl9zb3J0U3RyYXRlZ3kuZW50ZXIo''@;'; put 'put ''YyxhLGQsaCksdGhpcy5fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKSx0aGlzLl9ub3RpZnlSZWNlaXZpbmdTaWJsaW5ncygpLHRoaXMuZW50ZXJlZC5uZXh0KHtpdGVtOmMsY29udGFpbmVyOnRoaXMsY3VycmVudEluZGV4OnRoaXMuZ2V0SXRlbUluZGV4KGMpfSl9ZXhpdChjKXt0aGlzLl9yZXNl''@;'; put 'put ''dCgpLHRoaXMuZXhpdGVkLm5leHQoe2l0ZW06Yyxjb250YWluZXI6dGhpc30pfWRyb3AoYyxhLGQsaCxmLHYsUyxWPXt9KXt0aGlzLl9yZXNldCgpLHRoaXMuZHJvcHBlZC5uZXh0KHtpdGVtOmMsY3VycmVudEluZGV4OmEscHJldmlvdXNJbmRleDpkLGNvbnRhaW5lcjp0aGlzLHByZXZpb3Vz''@;'; put 'put ''Q29udGFpbmVyOmgsaXNQb2ludGVyT3ZlckNvbnRhaW5lcjpmLGRpc3RhbmNlOnYsZHJvcFBvaW50OlMsZXZlbnQ6Vn0pfXdpdGhJdGVtcyhjKXtjb25zdCBhPXRoaXMuX2RyYWdnYWJsZXM7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZXM9YyxjLmZvckVhY2goZD0+ZC5fd2l0aERyb3BDb250YWlu''@;'; put 'put ''ZXIodGhpcykpLHRoaXMuaXNEcmFnZ2luZygpJiYoYS5maWx0ZXIoaD0+aC5pc0RyYWdnaW5nKCkpLmV2ZXJ5KGg9Pi0xPT09Yy5pbmRleE9mKGgpKT90aGlzLl9yZXNldCgpOnRoaXMuX3NvcnRTdHJhdGVneS53aXRoSXRlbXModGhpcy5fZHJhZ2dhYmxlcykpLHRoaXN9d2l0aERpcmVjdGlv''@;'; put 'put ''bihjKXtyZXR1cm4gdGhpcy5fc29ydFN0cmF0ZWd5LmRpcmVjdGlvbj1jLHRoaXN9Y29ubmVjdGVkVG8oYyl7cmV0dXJuIHRoaXMuX3NpYmxpbmdzPWMuc2xpY2UoKSx0aGlzfXdpdGhPcmllbnRhdGlvbihjKXtyZXR1cm4gdGhpcy5fc29ydFN0cmF0ZWd5Lm9yaWVudGF0aW9uPWMsdGhpc313''@;'; put 'put ''aXRoU2Nyb2xsYWJsZVBhcmVudHMoYyl7Y29uc3QgYT1QMSh0aGlzLmVsZW1lbnQpO3JldHVybiB0aGlzLl9zY3JvbGxhYmxlRWxlbWVudHM9LTE9PT1jLmluZGV4T2YoYSk/W2EsLi4uY106Yy5zbGljZSgpLHRoaXN9Z2V0U2Nyb2xsYWJsZVBhcmVudHMoKXtyZXR1cm4gdGhpcy5fc2Nyb2xs''@;'; put 'put ''YWJsZUVsZW1lbnRzfWdldEl0ZW1JbmRleChjKXtyZXR1cm4gdGhpcy5faXNEcmFnZ2luZz90aGlzLl9zb3J0U3RyYXRlZ3kuZ2V0SXRlbUluZGV4KGMpOnRoaXMuX2RyYWdnYWJsZXMuaW5kZXhPZihjKX1pc1JlY2VpdmluZygpe3JldHVybiB0aGlzLl9hY3RpdmVTaWJsaW5ncy5zaXplPjB9''@;'; put 'put ''X3NvcnRJdGVtKGMsYSxkLGgpe2lmKHRoaXMuc29ydGluZ0Rpc2FibGVkfHwhdGhpcy5fZG9tUmVjdHx8IXNjZSh0aGlzLl9kb21SZWN0LC4wNSxhLGQpKXJldHVybjtjb25zdCBmPXRoaXMuX3NvcnRTdHJhdGVneS5zb3J0KGMsYSxkLGgpO2YmJnRoaXMuc29ydGVkLm5leHQoe3ByZXZpb3Vz''@;'; put 'put ''SW5kZXg6Zi5wcmV2aW91c0luZGV4LGN1cnJlbnRJbmRleDpmLmN1cnJlbnRJbmRleCxjb250YWluZXI6dGhpcyxpdGVtOmN9KX1fc3RhcnRTY3JvbGxpbmdJZk5lY2Vzc2FyeShjLGEpe2lmKHRoaXMuYXV0b1Njcm9sbERpc2FibGVkKXJldHVybjtsZXQgZCxoPXhoLk5PTkUsZj1uMS5OT05F''@;'; put 'put ''O2lmKHRoaXMuX3BhcmVudFBvc2l0aW9ucy5wb3NpdGlvbnMuZm9yRWFjaCgodixTKT0+e1M9PT10aGlzLl9kb2N1bWVudHx8IXYuY2xpZW50UmVjdHx8ZHx8c2NlKHYuY2xpZW50UmVjdCwuMDUsYyxhKSYmKFtoLGZdPWZ1bmN0aW9uIGFSZShsLGMsYSxkLGgpe2NvbnN0IGY9Q2NlKGMsaCks''@;'; put 'put ''dj1TY2UoYyxkKTtsZXQgUz14aC5OT05FLFY9bjEuTk9ORTtpZihmKXtjb25zdCBRPWwuc2Nyb2xsVG9wO2Y9PT14aC5VUD9RPjAmJihTPXhoLlVQKTpsLnNjcm9sbEhlaWdodC1RPmwuY2xpZW50SGVpZ2h0JiYoUz14aC5ET1dOKX1pZih2KXtjb25zdCBRPWwuc2Nyb2xsTGVmdDsicnRsIj09''@;'; put 'put ''PWE/dj09PW4xLlJJR0hUP1E8MCYmKFY9bjEuUklHSFQpOmwuc2Nyb2xsV2lkdGgrUT5sLmNsaWVudFdpZHRoJiYoVj1uMS5MRUZUKTp2PT09bjEuTEVGVD9RPjAmJihWPW4xLkxFRlQpOmwuc2Nyb2xsV2lkdGgtUT5sLmNsaWVudFdpZHRoJiYoVj1uMS5SSUdIVCl9cmV0dXJuW1MsVl19KFMs''@;'; put 'put ''di5jbGllbnRSZWN0LHRoaXMuX3NvcnRTdHJhdGVneS5kaXJlY3Rpb24sYyxhKSwoaHx8ZikmJihkPVMpKX0pLCFoJiYhZil7Y29uc3R7d2lkdGg6dixoZWlnaHQ6U309dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxWPXt3aWR0aDp2LGhlaWdodDpTLHRvcDowLHJpZ2h0''@;'; put 'put ''OnYsYm90dG9tOlMsbGVmdDowfTtoPUNjZShWLGEpLGY9U2NlKFYsYyksZD13aW5kb3d9ZCYmKGghPT10aGlzLl92ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbnx8ZiE9PXRoaXMuX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb258fGQhPT10aGlzLl9zY3JvbGxOb2RlKSYmKHRoaXMuX3ZlcnRpY2Fs''@;'; put 'put ''U2Nyb2xsRGlyZWN0aW9uPWgsdGhpcy5faG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbj1mLHRoaXMuX3Njcm9sbE5vZGU9ZCwoaHx8ZikmJmQ/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKHRoaXMuX3N0YXJ0U2Nyb2xsSW50ZXJ2YWwpOnRoaXMuX3N0b3BTY3JvbGxpbmcoKSl9X3N0''@;'; put 'put ''b3BTY3JvbGxpbmcoKXt0aGlzLl9zdG9wU2Nyb2xsVGltZXJzLm5leHQoKX1fZHJhZ2dpbmdTdGFydGVkKCl7Y29uc3QgYz1QMSh0aGlzLmVsZW1lbnQpLnN0eWxlO3RoaXMuYmVmb3JlU3RhcnRlZC5uZXh0KCksdGhpcy5faXNEcmFnZ2luZz0hMCx0aGlzLl9pbml0aWFsU2Nyb2xsU25hcD1j''@;'; put 'put ''Lm1zU2Nyb2xsU25hcFR5cGV8fGMuc2Nyb2xsU25hcFR5cGV8fCIiLGMuc2Nyb2xsU25hcFR5cGU9Yy5tc1Njcm9sbFNuYXBUeXBlPSJub25lIix0aGlzLl9zb3J0U3RyYXRlZ3kuc3RhcnQodGhpcy5fZHJhZ2dhYmxlcyksdGhpcy5fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKSx0aGlzLl92aWV3''@;'; put 'put ''cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2xpc3RlblRvU2Nyb2xsRXZlbnRzKCl9X2NhY2hlUGFyZW50UG9zaXRpb25zKCl7Y29uc3QgYz1QMSh0aGlzLmVsZW1lbnQpO3RoaXMuX3BhcmVudFBvc2l0aW9ucy5jYWNoZSh0aGlzLl9zY3JvbGxhYmxlRWxlbWVu''@;'; put 'put ''dHMpLHRoaXMuX2RvbVJlY3Q9dGhpcy5fcGFyZW50UG9zaXRpb25zLnBvc2l0aW9ucy5nZXQoYykuY2xpZW50UmVjdH1fcmVzZXQoKXt0aGlzLl9pc0RyYWdnaW5nPSExO2NvbnN0IGM9UDEodGhpcy5lbGVtZW50KS5zdHlsZTtjLnNjcm9sbFNuYXBUeXBlPWMubXNTY3JvbGxTbmFwVHlwZT10''@;'; put 'put ''aGlzLl9pbml0aWFsU2Nyb2xsU25hcCx0aGlzLl9zaWJsaW5ncy5mb3JFYWNoKGE9PmEuX3N0b3BSZWNlaXZpbmcodGhpcykpLHRoaXMuX3NvcnRTdHJhdGVneS5yZXNldCgpLHRoaXMuX3N0b3BTY3JvbGxpbmcoKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmli''@;'; put 'put ''ZSgpLHRoaXMuX3BhcmVudFBvc2l0aW9ucy5jbGVhcigpfV9pc092ZXJDb250YWluZXIoYyxhKXtyZXR1cm4gbnVsbCE9dGhpcy5fZG9tUmVjdCYmcFoodGhpcy5fZG9tUmVjdCxjLGEpfV9nZXRTaWJsaW5nQ29udGFpbmVyRnJvbVBvc2l0aW9uKGMsYSxkKXtyZXR1cm4gdGhpcy5fc2libGlu''@;'; put 'put ''Z3MuZmluZChoPT5oLl9jYW5SZWNlaXZlKGMsYSxkKSl9X2NhblJlY2VpdmUoYyxhLGQpe2lmKCF0aGlzLl9kb21SZWN0fHwhcFoodGhpcy5fZG9tUmVjdCxhLGQpfHwhdGhpcy5lbnRlclByZWRpY2F0ZShjLHRoaXMpKXJldHVybiExO2NvbnN0IGg9dGhpcy5fZ2V0U2hhZG93Um9vdCgpLmVs''@;'; put 'put ''ZW1lbnRGcm9tUG9pbnQoYSxkKTtpZighaClyZXR1cm4hMTtjb25zdCBmPVAxKHRoaXMuZWxlbWVudCk7cmV0dXJuIGg9PT1mfHxmLmNvbnRhaW5zKGgpfV9zdGFydFJlY2VpdmluZyhjLGEpe2NvbnN0IGQ9dGhpcy5fYWN0aXZlU2libGluZ3M7IWQuaGFzKGMpJiZhLmV2ZXJ5KGg9PnRoaXMu''@;'; put 'put ''ZW50ZXJQcmVkaWNhdGUoaCx0aGlzKXx8dGhpcy5fZHJhZ2dhYmxlcy5pbmRleE9mKGgpPi0xKSYmKGQuYWRkKGMpLHRoaXMuX2NhY2hlUGFyZW50UG9zaXRpb25zKCksdGhpcy5fbGlzdGVuVG9TY3JvbGxFdmVudHMoKSx0aGlzLnJlY2VpdmluZ1N0YXJ0ZWQubmV4dCh7aW5pdGlhdG9yOmMs''@;'; put 'put ''cmVjZWl2ZXI6dGhpcyxpdGVtczphfSkpfV9zdG9wUmVjZWl2aW5nKGMpe3RoaXMuX2FjdGl2ZVNpYmxpbmdzLmRlbGV0ZShjKSx0aGlzLl92aWV3cG9ydFNjcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMucmVjZWl2aW5nU3RvcHBlZC5uZXh0KHtpbml0aWF0b3I6YyxyZWNl''@;'; put 'put ''aXZlcjp0aGlzfSl9X2xpc3RlblRvU2Nyb2xsRXZlbnRzKCl7dGhpcy5fdmlld3BvcnRTY3JvbGxTdWJzY3JpcHRpb249dGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeS5zY3JvbGxlZCh0aGlzLl9nZXRTaGFkb3dSb290KCkpLnN1YnNjcmliZShjPT57aWYodGhpcy5pc0RyYWdnaW5nKCkpe2NvbnN0''@;'; put 'put ''IGE9dGhpcy5fcGFyZW50UG9zaXRpb25zLmhhbmRsZVNjcm9sbChjKTthJiZ0aGlzLl9zb3J0U3RyYXRlZ3kudXBkYXRlT25TY3JvbGwoYS50b3AsYS5sZWZ0KX1lbHNlIHRoaXMuaXNSZWNlaXZpbmcoKSYmdGhpcy5fY2FjaGVQYXJlbnRQb3NpdGlvbnMoKX0pfV9nZXRTaGFkb3dSb290KCl7''@;'; put 'put ''aWYoIXRoaXMuX2NhY2hlZFNoYWRvd1Jvb3Qpe2NvbnN0IGM9emxlKFAxKHRoaXMuZWxlbWVudCkpO3RoaXMuX2NhY2hlZFNoYWRvd1Jvb3Q9Y3x8dGhpcy5fZG9jdW1lbnR9cmV0dXJuIHRoaXMuX2NhY2hlZFNoYWRvd1Jvb3R9X25vdGlmeVJlY2VpdmluZ1NpYmxpbmdzKCl7Y29uc3QgYz10''@;'; put 'put ''aGlzLl9zb3J0U3RyYXRlZ3kuZ2V0QWN0aXZlSXRlbXNTbmFwc2hvdCgpLmZpbHRlcihhPT5hLmlzRHJhZ2dpbmcoKSk7dGhpcy5fc2libGluZ3MuZm9yRWFjaChhPT5hLl9zdGFydFJlY2VpdmluZyh0aGlzLGMpKX19ZnVuY3Rpb24gQ2NlKGwsYyl7Y29uc3R7dG9wOmEsYm90dG9tOmQsaGVp''@;'; put 'put ''Z2h0Omh9PWwsZj0uMDUqaDtyZXR1cm4gYz49YS1mJiZjPD1hK2Y/eGguVVA6Yz49ZC1mJiZjPD1kK2Y/eGguRE9XTjp4aC5OT05FfWZ1bmN0aW9uIFNjZShsLGMpe2NvbnN0e2xlZnQ6YSxyaWdodDpkLHdpZHRoOmh9PWwsZj0uMDUqaDtyZXR1cm4gYz49YS1mJiZjPD1hK2Y/bjEuTEVGVDpj''@;'; put 'put ''Pj1kLWYmJmM8PWQrZj9uMS5SSUdIVDpuMS5OT05FfWNvbnN0IHNSPU1fKHtwYXNzaXZlOiExLGNhcHR1cmU6ITB9KSxhUj1uZXcgU2V0O2xldCBsUmU9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIm5nLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WyJjZGstZHJhZy1yZXNldHMtY29udGFpbmVyIiwiIl0sc3RhbmRhbG9uZTohMCxmZWF0dXJlczpbU0RdLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7fSxzdHls''@;'; put 'put ''ZXM6WyJAbGF5ZXIgY2RrLXJlc2V0c3suY2RrLWRyYWctcHJldmlld3tiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7cGFkZGluZzowO2NvbG9yOmluaGVyaXR9fSJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pfX1yZXR1cm4gbH0pKCksY1JlPSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''Y29uc3RydWN0b3IoYSxkKXt0aGlzLl9uZ1pvbmU9YSx0aGlzLl9hcHBSZWY9WnIodDQpLHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3I9WnIoWGwpLHRoaXMuX2Ryb3BJbnN0YW5jZXM9bmV3IFNldCx0aGlzLl9kcmFnSW5zdGFuY2VzPW5ldyBTZXQsdGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNl''@;'; put 'put ''cz1bXSx0aGlzLl9nbG9iYWxMaXN0ZW5lcnM9bmV3IE1hcCx0aGlzLl9kcmFnZ2luZ1ByZWRpY2F0ZT1oPT5oLmlzRHJhZ2dpbmcoKSx0aGlzLnBvaW50ZXJNb3ZlPW5ldyB0bix0aGlzLnBvaW50ZXJVcD1uZXcgdG4sdGhpcy5zY3JvbGw9bmV3IHRuLHRoaXMuX3ByZXZlbnREZWZhdWx0V2hp''@;'; put 'put ''bGVEcmFnZ2luZz1oPT57dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5sZW5ndGg+MCYmaC5wcmV2ZW50RGVmYXVsdCgpfSx0aGlzLl9wZXJzaXN0ZW50VG91Y2htb3ZlTGlzdGVuZXI9aD0+e3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMubGVuZ3RoPjAmJih0aGlzLl9hY3RpdmVEcmFnSW5z''@;'; put 'put ''dGFuY2VzLnNvbWUodGhpcy5fZHJhZ2dpbmdQcmVkaWNhdGUpJiZoLnByZXZlbnREZWZhdWx0KCksdGhpcy5wb2ludGVyTW92ZS5uZXh0KGgpKX0sdGhpcy5fZG9jdW1lbnQ9ZH1yZWdpc3RlckRyb3BDb250YWluZXIoYSl7dGhpcy5fZHJvcEluc3RhbmNlcy5oYXMoYSl8fHRoaXMuX2Ryb3BJ''@;'; put 'put ''bnN0YW5jZXMuYWRkKGEpfXJlZ2lzdGVyRHJhZ0l0ZW0oYSl7dGhpcy5fZHJhZ0luc3RhbmNlcy5hZGQoYSksMT09PXRoaXMuX2RyYWdJbnN0YW5jZXMuc2l6ZSYmdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91''@;'; put 'put ''Y2htb3ZlIix0aGlzLl9wZXJzaXN0ZW50VG91Y2htb3ZlTGlzdGVuZXIsc1IpfSl9cmVtb3ZlRHJvcENvbnRhaW5lcihhKXt0aGlzLl9kcm9wSW5zdGFuY2VzLmRlbGV0ZShhKX1yZW1vdmVEcmFnSXRlbShhKXt0aGlzLl9kcmFnSW5zdGFuY2VzLmRlbGV0ZShhKSx0aGlzLnN0b3BEcmFnZ2lu''@;'; put 'put ''ZyhhKSwwPT09dGhpcy5fZHJhZ0luc3RhbmNlcy5zaXplJiZ0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMuX3BlcnNpc3RlbnRUb3VjaG1vdmVMaXN0ZW5lcixzUil9c3RhcnREcmFnZ2luZyhhLGQpe2lmKCEodGhpcy5fYWN0aXZlRHJhZ0luc3Rh''@;'; put 'put ''bmNlcy5pbmRleE9mKGEpPi0xKSYmKHRoaXMuX2xvYWRSZXNldHMoKSx0aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLnB1c2goYSksMT09PXRoaXMuX2FjdGl2ZURyYWdJbnN0YW5jZXMubGVuZ3RoKSl7Y29uc3QgaD1kLnR5cGUuc3RhcnRzV2l0aCgidG91Y2giKTt0aGlzLl9nbG9iYWxMaXN0''@;'; put 'put ''ZW5lcnMuc2V0KGg/InRvdWNoZW5kIjoibW91c2V1cCIse2hhbmRsZXI6Zj0+dGhpcy5wb2ludGVyVXAubmV4dChmKSxvcHRpb25zOiEwfSkuc2V0KCJzY3JvbGwiLHtoYW5kbGVyOmY9PnRoaXMuc2Nyb2xsLm5leHQoZiksb3B0aW9uczohMH0pLnNldCgic2VsZWN0c3RhcnQiLHtoYW5kbGVy''@;'; put 'put ''OnRoaXMuX3ByZXZlbnREZWZhdWx0V2hpbGVEcmFnZ2luZyxvcHRpb25zOnNSfSksaHx8dGhpcy5fZ2xvYmFsTGlzdGVuZXJzLnNldCgibW91c2Vtb3ZlIix7aGFuZGxlcjpmPT50aGlzLnBvaW50ZXJNb3ZlLm5leHQoZiksb3B0aW9uczpzUn0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5n''@;'; put 'put ''dWxhcigoKT0+e3RoaXMuX2dsb2JhbExpc3RlbmVycy5mb3JFYWNoKChmLHYpPT57dGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih2LGYuaGFuZGxlcixmLm9wdGlvbnMpfSl9KX19c3RvcERyYWdnaW5nKGEpe2NvbnN0IGQ9dGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5pbmRleE9m''@;'; put 'put ''KGEpO2Q+LTEmJih0aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLnNwbGljZShkLDEpLDA9PT10aGlzLl9hY3RpdmVEcmFnSW5zdGFuY2VzLmxlbmd0aCYmdGhpcy5fY2xlYXJHbG9iYWxMaXN0ZW5lcnMoKSl9aXNEcmFnZ2luZyhhKXtyZXR1cm4gdGhpcy5fYWN0aXZlRHJhZ0luc3RhbmNlcy5p''@;'; put 'put ''bmRleE9mKGEpPi0xfXNjcm9sbGVkKGEpe2NvbnN0IGQ9W3RoaXMuc2Nyb2xsXTtyZXR1cm4gYSYmYSE9PXRoaXMuX2RvY3VtZW50JiZkLnB1c2gobmV3IENuKGg9PnRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2NvbnN0IHY9Uz0+e3RoaXMuX2FjdGl2ZURyYWdJbnN0YW5j''@;'; put 'put ''ZXMubGVuZ3RoJiZoLm5leHQoUyl9O3JldHVybiBhLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdiwhMCksKCk9PnthLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdiwhMCl9fSkpKSxzTSguLi5kKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RyYWdJbnN0YW5jZXMuZm9yRWFjaChhPT50''@;'; put 'put ''aGlzLnJlbW92ZURyYWdJdGVtKGEpKSx0aGlzLl9kcm9wSW5zdGFuY2VzLmZvckVhY2goYT0+dGhpcy5yZW1vdmVEcm9wQ29udGFpbmVyKGEpKSx0aGlzLl9jbGVhckdsb2JhbExpc3RlbmVycygpLHRoaXMucG9pbnRlck1vdmUuY29tcGxldGUoKSx0aGlzLnBvaW50ZXJVcC5jb21wbGV0ZSgp''@;'; put 'put ''fV9jbGVhckdsb2JhbExpc3RlbmVycygpe3RoaXMuX2dsb2JhbExpc3RlbmVycy5mb3JFYWNoKChhLGQpPT57dGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLGEuaGFuZGxlcixhLm9wdGlvbnMpfSksdGhpcy5fZ2xvYmFsTGlzdGVuZXJzLmNsZWFyKCl9X2xvYWRSZXNldHMo''@;'; put 'put ''KXtpZighYVIuaGFzKHRoaXMuX2FwcFJlZikpe2FSLmFkZCh0aGlzLl9hcHBSZWYpO2NvbnN0IGE9ZnVuY3Rpb24gUDdlKGwsYyl7Y29uc3QgYT1tcyhsKSxkPWMuZWxlbWVudEluamVjdG9yfHx6ZigpO3JldHVybiBuZXcgQTYoYSkuY3JlYXRlKGQsYy5wcm9qZWN0YWJsZU5vZGVzLGMuaG9z''@;'; put 'put ''dEVsZW1lbnQsYy5lbnZpcm9ubWVudEluamVjdG9yKX0obFJlLHtlbnZpcm9ubWVudEluamVjdG9yOnRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3J9KTt0aGlzLl9hcHBSZWYub25EZXN0cm95KCgpPT57YVIuZGVsZXRlKHRoaXMuX2FwcFJlZiksMD09PWFSLnNpemUmJmEuZGVzdHJveSgpfSl9''@;'; put 'put ''fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKE1vKSxjcih6cykpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KX19cmV0dXJuIGx9KSgpO2NvbnN0IHVS''@;'; put 'put ''ZT17ZHJhZ1N0YXJ0VGhyZXNob2xkOjUscG9pbnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZDo1fTtsZXQgbFI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmKXt0aGlzLl9kb2N1bWVudD1hLHRoaXMuX25nWm9uZT1kLHRoaXMuX3ZpZXdwb3J0UnVsZXI9aCx0aGlzLl9kcmFn''@;'; put 'put ''RHJvcFJlZ2lzdHJ5PWZ9Y3JlYXRlRHJhZyhhLGQ9dVJlKXtyZXR1cm4gbmV3IHJSZShhLGQsdGhpcy5fZG9jdW1lbnQsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZHJhZ0Ryb3BSZWdpc3RyeSl9Y3JlYXRlRHJvcExpc3QoYSl7cmV0dXJuIG5ldyBzUmUoYSx0aGlz''@;'; put 'put ''Ll9kcmFnRHJvcFJlZ2lzdHJ5LHRoaXMuX2RvY3VtZW50LHRoaXMuX25nWm9uZSx0aGlzLl92aWV3cG9ydFJ1bGVyKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcih6cyksY3IoTW8pLGNyKGRaKSxjcihjUmUpKX19c3RhdGlje3RoaXMuXHUw''@;'; put 'put ''Mjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjb25zdCBtTT1uZXcgJHIoIkNES19EUkFHX1BBUkVOVCIpLE1jZT1uZXcgJHIoIkNka0RyYWdIYW5kbGUiKTtsZXQgeGNlPSgoKT0+e2NsYXNzIGx7Z2V0IGRp''@;'; put 'put ''c2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZChhKXt0aGlzLl9kaXNhYmxlZD1hLHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KHRoaXMpfWNvbnN0cnVjdG9yKGEsZCl7dGhpcy5lbGVtZW50PWEsdGhpcy5fcGFyZW50RHJhZz1kLHRoaXMuX3N0YXRlQ2hhbmdlcz1u''@;'; put 'put ''ZXcgdG4sdGhpcy5fZGlzYWJsZWQ9ITEsZD8uX2FkZEhhbmRsZSh0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuX3BhcmVudERyYWc/Ll9yZW1vdmVIYW5kbGUodGhpcyksdGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVy''@;'; put 'put ''biBuZXcoZHx8bCkoSmUoTmkpLEplKG1NLDEyKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjZGtEcmFnSGFuZGxlIiwiIl1dLGhvc3RBdHRyczpbMSwiY2RrLWRyYWctaGFuZGxlIl0saW5wdXRzOntkaXNhYmxlZDpbam4uSGFzRGVjb3JhdG9y''@;'; put 'put ''SW5wdXRUcmFuc2Zvcm0sImNka0RyYWdIYW5kbGVEaXNhYmxlZCIsImRpc2FibGVkIix4MF19LHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W1ppKFt7cHJvdmlkZTpNY2UsdXNlRXhpc3Rpbmc6bH1dKSxRYV19KX19cmV0dXJuIGx9KSgpO2NvbnN0IG1aPW5ldyAkcigiQ0RLX0RSQUdfQ09ORklH''@;'; put 'put ''Iiksdlo9bmV3ICRyKCJDZGtEcm9wTGlzdCIpO2xldCBfWj0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLl9kcmFnSW5zdGFuY2VzPVtdfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZHx8dGhpcy5kcm9wQ29udGFpbmVyJiZ0aGlzLmRyb3BDb250YWluZXIuZGlzYWJsZWR9''@;'; put 'put ''c2V0IGRpc2FibGVkKGEpe3RoaXMuX2Rpc2FibGVkPWEsdGhpcy5fZHJhZ1JlZi5kaXNhYmxlZD10aGlzLl9kaXNhYmxlZH1jb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWLFEsZGUscGUsQ2Upe3RoaXMuZWxlbWVudD1hLHRoaXMuZHJvcENvbnRhaW5lcj1kLHRoaXMuX25nWm9uZT1mLHRoaXMu''@;'; put 'put ''X3ZpZXdDb250YWluZXJSZWY9dix0aGlzLl9kaXI9Vix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1kZSx0aGlzLl9zZWxmSGFuZGxlPXBlLHRoaXMuX3BhcmVudERyYWc9Q2UsdGhpcy5fZGVzdHJveWVkPW5ldyB0bix0aGlzLl9oYW5kbGVzPW5ldyBBcihbXSksdGhpcy5zdGFydGVkPW5ldyBE''@;'; put 'put ''cix0aGlzLnJlbGVhc2VkPW5ldyBEcix0aGlzLmVuZGVkPW5ldyBEcix0aGlzLmVudGVyZWQ9bmV3IERyLHRoaXMuZXhpdGVkPW5ldyBEcix0aGlzLmRyb3BwZWQ9bmV3IERyLHRoaXMubW92ZWQ9bmV3IENuKE9lPT57Y29uc3QgWWU9dGhpcy5fZHJhZ1JlZi5tb3ZlZC5waXBlKGJyKGV0PT4o''@;'; put 'put ''e3NvdXJjZTp0aGlzLHBvaW50ZXJQb3NpdGlvbjpldC5wb2ludGVyUG9zaXRpb24sZXZlbnQ6ZXQuZXZlbnQsZGVsdGE6ZXQuZGVsdGEsZGlzdGFuY2U6ZXQuZGlzdGFuY2V9KSkpLnN1YnNjcmliZShPZSk7cmV0dXJuKCk9PntZZS51bnN1YnNjcmliZSgpfX0pLHRoaXMuX2RyYWdSZWY9US5j''@;'; put 'put ''cmVhdGVEcmFnKGEse2RyYWdTdGFydFRocmVzaG9sZDpTJiZudWxsIT1TLmRyYWdTdGFydFRocmVzaG9sZD9TLmRyYWdTdGFydFRocmVzaG9sZDo1LHBvaW50ZXJEaXJlY3Rpb25DaGFuZ2VUaHJlc2hvbGQ6UyYmbnVsbCE9Uy5wb2ludGVyRGlyZWN0aW9uQ2hhbmdlVGhyZXNob2xkP1MucG9p''@;'; put 'put ''bnRlckRpcmVjdGlvbkNoYW5nZVRocmVzaG9sZDo1LHpJbmRleDpTPy56SW5kZXh9KSx0aGlzLl9kcmFnUmVmLmRhdGE9dGhpcyxsLl9kcmFnSW5zdGFuY2VzLnB1c2godGhpcyksUyYmdGhpcy5fYXNzaWduRGVmYXVsdHMoUyksZCYmKHRoaXMuX2RyYWdSZWYuX3dpdGhEcm9wQ29udGFpbmVy''@;'; put 'put ''KGQuX2Ryb3BMaXN0UmVmKSxkLmFkZEl0ZW0odGhpcykpLHRoaXMuX3N5bmNJbnB1dHModGhpcy5fZHJhZ1JlZiksdGhpcy5faGFuZGxlRXZlbnRzKHRoaXMuX2RyYWdSZWYpfWdldFBsYWNlaG9sZGVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9kcmFnUmVmLmdldFBsYWNlaG9sZGVyRWxlbWVu''@;'; put 'put ''dCgpfWdldFJvb3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2RyYWdSZWYuZ2V0Um9vdEVsZW1lbnQoKX1yZXNldCgpe3RoaXMuX2RyYWdSZWYucmVzZXQoKX1nZXRGcmVlRHJhZ1Bvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdSZWYuZ2V0RnJlZURyYWdQb3NpdGlvbigpfXNldEZyZWVEcmFn''@;'; put 'put ''UG9zaXRpb24oYSl7dGhpcy5fZHJhZ1JlZi5zZXRGcmVlRHJhZ1Bvc2l0aW9uKGEpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKFoyKDEpLFQwKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmli''@;'; put 'put ''ZSgoKT0+e3RoaXMuX3VwZGF0ZVJvb3RFbGVtZW50KCksdGhpcy5fc2V0dXBIYW5kbGVzTGlzdGVuZXIoKSx0aGlzLmZyZWVEcmFnUG9zaXRpb24mJnRoaXMuX2RyYWdSZWYuc2V0RnJlZURyYWdQb3NpdGlvbih0aGlzLmZyZWVEcmFnUG9zaXRpb24pfSl9KX1uZ09uQ2hhbmdlcyhhKXtjb25z''@;'; put 'put ''dCBkPWEucm9vdEVsZW1lbnRTZWxlY3RvcixoPWEuZnJlZURyYWdQb3NpdGlvbjtkJiYhZC5maXJzdENoYW5nZSYmdGhpcy5fdXBkYXRlUm9vdEVsZW1lbnQoKSxoJiYhaC5maXJzdENoYW5nZSYmdGhpcy5mcmVlRHJhZ1Bvc2l0aW9uJiZ0aGlzLl9kcmFnUmVmLnNldEZyZWVEcmFnUG9zaXRp''@;'; put 'put ''b24odGhpcy5mcmVlRHJhZ1Bvc2l0aW9uKX1uZ09uRGVzdHJveSgpe3RoaXMuZHJvcENvbnRhaW5lciYmdGhpcy5kcm9wQ29udGFpbmVyLnJlbW92ZUl0ZW0odGhpcyk7Y29uc3QgYT1sLl9kcmFnSW5zdGFuY2VzLmluZGV4T2YodGhpcyk7YT4tMSYmbC5fZHJhZ0luc3RhbmNlcy5zcGxpY2Uo''@;'; put 'put ''YSwxKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9oYW5kbGVzLmNvbXBsZXRlKCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9kcmFnUmVmLmRpc3Bvc2UoKX0pfV9hZGRIYW5kbGUoYSl7Y29uc3QgZD10''@;'; put 'put ''aGlzLl9oYW5kbGVzLmdldFZhbHVlKCk7ZC5wdXNoKGEpLHRoaXMuX2hhbmRsZXMubmV4dChkKX1fcmVtb3ZlSGFuZGxlKGEpe2NvbnN0IGQ9dGhpcy5faGFuZGxlcy5nZXRWYWx1ZSgpLGg9ZC5pbmRleE9mKGEpO2g+LTEmJihkLnNwbGljZShoLDEpLHRoaXMuX2hhbmRsZXMubmV4dChkKSl9''@;'; put 'put ''X3NldFByZXZpZXdUZW1wbGF0ZShhKXt0aGlzLl9wcmV2aWV3VGVtcGxhdGU9YX1fcmVzZXRQcmV2aWV3VGVtcGxhdGUoYSl7YT09PXRoaXMuX3ByZXZpZXdUZW1wbGF0ZSYmKHRoaXMuX3ByZXZpZXdUZW1wbGF0ZT1udWxsKX1fc2V0UGxhY2Vob2xkZXJUZW1wbGF0ZShhKXt0aGlzLl9wbGFj''@;'; put 'put ''ZWhvbGRlclRlbXBsYXRlPWF9X3Jlc2V0UGxhY2Vob2xkZXJUZW1wbGF0ZShhKXthPT09dGhpcy5fcGxhY2Vob2xkZXJUZW1wbGF0ZSYmKHRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU9bnVsbCl9X3VwZGF0ZVJvb3RFbGVtZW50KCl7Y29uc3QgYT10aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVu''@;'; put 'put ''dDtsZXQgZD1hO3RoaXMucm9vdEVsZW1lbnRTZWxlY3RvciYmKGQ9dm9pZCAwIT09YS5jbG9zZXN0P2EuY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpOmEucGFyZW50RWxlbWVudD8uY2xvc2VzdCh0aGlzLnJvb3RFbGVtZW50U2VsZWN0b3IpKSx0aGlzLl9kcmFnUmVmLndpdGhS''@;'; put 'put ''b290RWxlbWVudChkfHxhKX1fZ2V0Qm91bmRhcnlFbGVtZW50KCl7Y29uc3QgYT10aGlzLmJvdW5kYXJ5RWxlbWVudDtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/dGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdChhKTpQMShhKTpudWxsfV9zeW5jSW5wdXRzKGEpe2EuYmVm''@;'; put 'put ''b3JlU3RhcnRlZC5zdWJzY3JpYmUoKCk9PntpZighYS5pc0RyYWdnaW5nKCkpe2NvbnN0IGQ9dGhpcy5fZGlyLGg9dGhpcy5kcmFnU3RhcnREZWxheSxmPXRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGU/e3RlbXBsYXRlOnRoaXMuX3BsYWNlaG9sZGVyVGVtcGxhdGUudGVtcGxhdGVSZWYsY29u''@;'; put 'put ''dGV4dDp0aGlzLl9wbGFjZWhvbGRlclRlbXBsYXRlLmRhdGEsdmlld0NvbnRhaW5lcjp0aGlzLl92aWV3Q29udGFpbmVyUmVmfTpudWxsLHY9dGhpcy5fcHJldmlld1RlbXBsYXRlP3t0ZW1wbGF0ZTp0aGlzLl9wcmV2aWV3VGVtcGxhdGUudGVtcGxhdGVSZWYsY29udGV4dDp0aGlzLl9wcmV2''@;'; put 'put ''aWV3VGVtcGxhdGUuZGF0YSxtYXRjaFNpemU6dGhpcy5fcHJldmlld1RlbXBsYXRlLm1hdGNoU2l6ZSx2aWV3Q29udGFpbmVyOnRoaXMuX3ZpZXdDb250YWluZXJSZWZ9Om51bGw7YS5kaXNhYmxlZD10aGlzLmRpc2FibGVkLGEubG9ja0F4aXM9dGhpcy5sb2NrQXhpcyxhLmRyYWdTdGFydERl''@;'; put 'put ''bGF5PSJvYmplY3QiPT10eXBlb2YgaCYmaD9oOnA4KGgpLGEuY29uc3RyYWluUG9zaXRpb249dGhpcy5jb25zdHJhaW5Qb3NpdGlvbixhLnByZXZpZXdDbGFzcz10aGlzLnByZXZpZXdDbGFzcyxhLndpdGhCb3VuZGFyeUVsZW1lbnQodGhpcy5fZ2V0Qm91bmRhcnlFbGVtZW50KCkpLndpdGhQ''@;'; put 'put ''bGFjZWhvbGRlclRlbXBsYXRlKGYpLndpdGhQcmV2aWV3VGVtcGxhdGUodikud2l0aFByZXZpZXdDb250YWluZXIodGhpcy5wcmV2aWV3Q29udGFpbmVyfHwiZ2xvYmFsIiksZCYmYS53aXRoRGlyZWN0aW9uKGQudmFsdWUpfX0pLGEuYmVmb3JlU3RhcnRlZC5waXBlKFoyKDEpKS5zdWJzY3Jp''@;'; put 'put ''YmUoKCk9PntpZih0aGlzLl9wYXJlbnREcmFnKXJldHVybiB2b2lkIGEud2l0aFBhcmVudCh0aGlzLl9wYXJlbnREcmFnLl9kcmFnUmVmKTtsZXQgZD10aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O2Zvcig7ZDspe2lmKGQuY2xhc3NMaXN0LmNvbnRhaW5zKCJjZGst''@;'; put 'put ''ZHJhZyIpKXthLndpdGhQYXJlbnQobC5fZHJhZ0luc3RhbmNlcy5maW5kKGg9PmguZWxlbWVudC5uYXRpdmVFbGVtZW50PT09ZCk/Ll9kcmFnUmVmfHxudWxsKTticmVha31kPWQucGFyZW50RWxlbWVudH19KX1faGFuZGxlRXZlbnRzKGEpe2Euc3RhcnRlZC5zdWJzY3JpYmUoZD0+e3RoaXMu''@;'; put 'put ''c3RhcnRlZC5lbWl0KHtzb3VyY2U6dGhpcyxldmVudDpkLmV2ZW50fSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSxhLnJlbGVhc2VkLnN1YnNjcmliZShkPT57dGhpcy5yZWxlYXNlZC5lbWl0KHtzb3VyY2U6dGhpcyxldmVudDpkLmV2ZW50fSl9KSxhLmVuZGVk''@;'; put 'put ''LnN1YnNjcmliZShkPT57dGhpcy5lbmRlZC5lbWl0KHtzb3VyY2U6dGhpcyxkaXN0YW5jZTpkLmRpc3RhbmNlLGRyb3BQb2ludDpkLmRyb3BQb2ludCxldmVudDpkLmV2ZW50fSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSxhLmVudGVyZWQuc3Vic2NyaWJlKGQ9''@;'; put 'put ''Pnt0aGlzLmVudGVyZWQuZW1pdCh7Y29udGFpbmVyOmQuY29udGFpbmVyLmRhdGEsaXRlbTp0aGlzLGN1cnJlbnRJbmRleDpkLmN1cnJlbnRJbmRleH0pfSksYS5leGl0ZWQuc3Vic2NyaWJlKGQ9Pnt0aGlzLmV4aXRlZC5lbWl0KHtjb250YWluZXI6ZC5jb250YWluZXIuZGF0YSxpdGVtOnRo''@;'; put 'put ''aXN9KX0pLGEuZHJvcHBlZC5zdWJzY3JpYmUoZD0+e3RoaXMuZHJvcHBlZC5lbWl0KHtwcmV2aW91c0luZGV4OmQucHJldmlvdXNJbmRleCxjdXJyZW50SW5kZXg6ZC5jdXJyZW50SW5kZXgscHJldmlvdXNDb250YWluZXI6ZC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLGNvbnRhaW5lcjpkLmNv''@;'; put 'put ''bnRhaW5lci5kYXRhLGlzUG9pbnRlck92ZXJDb250YWluZXI6ZC5pc1BvaW50ZXJPdmVyQ29udGFpbmVyLGl0ZW06dGhpcyxkaXN0YW5jZTpkLmRpc3RhbmNlLGRyb3BQb2ludDpkLmRyb3BQb2ludCxldmVudDpkLmV2ZW50fSl9KX1fYXNzaWduRGVmYXVsdHMoYSl7Y29uc3R7bG9ja0F4aXM6''@;'; put 'put ''ZCxkcmFnU3RhcnREZWxheTpoLGNvbnN0cmFpblBvc2l0aW9uOmYscHJldmlld0NsYXNzOnYsYm91bmRhcnlFbGVtZW50OlMsZHJhZ2dpbmdEaXNhYmxlZDpWLHJvb3RFbGVtZW50U2VsZWN0b3I6USxwcmV2aWV3Q29udGFpbmVyOmRlfT1hO3RoaXMuZGlzYWJsZWQ9Vj8/ITEsdGhpcy5kcmFn''@;'; put 'put ''U3RhcnREZWxheT1ofHwwLGQmJih0aGlzLmxvY2tBeGlzPWQpLGYmJih0aGlzLmNvbnN0cmFpblBvc2l0aW9uPWYpLHYmJih0aGlzLnByZXZpZXdDbGFzcz12KSxTJiYodGhpcy5ib3VuZGFyeUVsZW1lbnQ9UyksUSYmKHRoaXMucm9vdEVsZW1lbnRTZWxlY3Rvcj1RKSxkZSYmKHRoaXMucHJl''@;'; put 'put ''dmlld0NvbnRhaW5lcj1kZSl9X3NldHVwSGFuZGxlc0xpc3RlbmVyKCl7dGhpcy5faGFuZGxlcy5waXBlKE11KGE9Pntjb25zdCBkPWEubWFwKGg9PmguZWxlbWVudCk7dGhpcy5fc2VsZkhhbmRsZSYmdGhpcy5yb290RWxlbWVudFNlbGVjdG9yJiZkLnB1c2godGhpcy5lbGVtZW50KSx0aGlz''@;'; put 'put ''Ll9kcmFnUmVmLndpdGhIYW5kbGVzKGQpfSksSjAoYT0+c00oLi4uYS5tYXAoZD0+ZC5fc3RhdGVDaGFuZ2VzLnBpcGUobDQoZCkpKSkpLFQwKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZShhPT57Y29uc3QgZD10aGlzLl9kcmFnUmVmLGg9YS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7YS5k''@;'; put 'put ''aXNhYmxlZD9kLmRpc2FibGVIYW5kbGUoaCk6ZC5lbmFibGVIYW5kbGUoaCl9KX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSksSmUodlosMTIpLEplKHpzKSxKZShNbyksSmUoaHMpLEplKG1aLDgpLEplKGc4LDgpLEplKGxSKSxKZShj''@;'; put 'put ''YSksSmUoTWNlLDEwKSxKZShtTSwxMikpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2RrRHJhZyIsIiJdXSxob3N0QXR0cnM6WzEsImNkay1kcmFnIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsyJmQmJnByKCJjZGst''@;'; put 'put ''ZHJhZy1kaXNhYmxlZCIsaC5kaXNhYmxlZCkoImNkay1kcmFnLWRyYWdnaW5nIixoLl9kcmFnUmVmLmlzRHJhZ2dpbmcoKSl9LGlucHV0czp7ZGF0YTpbam4uTm9uZSwiY2RrRHJhZ0RhdGEiLCJkYXRhIl0sbG9ja0F4aXM6W2puLk5vbmUsImNka0RyYWdMb2NrQXhpcyIsImxvY2tBeGlzIl0s''@;'; put 'put ''cm9vdEVsZW1lbnRTZWxlY3Rvcjpbam4uTm9uZSwiY2RrRHJhZ1Jvb3RFbGVtZW50Iiwicm9vdEVsZW1lbnRTZWxlY3RvciJdLGJvdW5kYXJ5RWxlbWVudDpbam4uTm9uZSwiY2RrRHJhZ0JvdW5kYXJ5IiwiYm91bmRhcnlFbGVtZW50Il0sZHJhZ1N0YXJ0RGVsYXk6W2puLk5vbmUsImNka0Ry''@;'; put 'put ''YWdTdGFydERlbGF5IiwiZHJhZ1N0YXJ0RGVsYXkiXSxmcmVlRHJhZ1Bvc2l0aW9uOltqbi5Ob25lLCJjZGtEcmFnRnJlZURyYWdQb3NpdGlvbiIsImZyZWVEcmFnUG9zaXRpb24iXSxkaXNhYmxlZDpbam4uSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm0sImNka0RyYWdEaXNhYmxlZCIsImRp''@;'; put 'put ''c2FibGVkIix4MF0sY29uc3RyYWluUG9zaXRpb246W2puLk5vbmUsImNka0RyYWdDb25zdHJhaW5Qb3NpdGlvbiIsImNvbnN0cmFpblBvc2l0aW9uIl0scHJldmlld0NsYXNzOltqbi5Ob25lLCJjZGtEcmFnUHJldmlld0NsYXNzIiwicHJldmlld0NsYXNzIl0scHJldmlld0NvbnRhaW5lcjpb''@;'; put 'put ''am4uTm9uZSwiY2RrRHJhZ1ByZXZpZXdDb250YWluZXIiLCJwcmV2aWV3Q29udGFpbmVyIl19LG91dHB1dHM6e3N0YXJ0ZWQ6ImNka0RyYWdTdGFydGVkIixyZWxlYXNlZDoiY2RrRHJhZ1JlbGVhc2VkIixlbmRlZDoiY2RrRHJhZ0VuZGVkIixlbnRlcmVkOiJjZGtEcmFnRW50ZXJlZCIsZXhp''@;'; put 'put ''dGVkOiJjZGtEcmFnRXhpdGVkIixkcm9wcGVkOiJjZGtEcmFnRHJvcHBlZCIsbW92ZWQ6ImNka0RyYWdNb3ZlZCJ9LGV4cG9ydEFzOlsiY2RrRHJhZyJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W1ppKFt7cHJvdmlkZTptTSx1c2VFeGlzdGluZzpsfV0pLFFhLEphXX0pfX1yZXR1cm4gbH0p''@;'; put 'put ''KCk7Y29uc3QgYlo9bmV3ICRyKCJDZGtEcm9wTGlzdEdyb3VwIik7bGV0IEVjZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5faXRlbXM9bmV3IFNldCx0aGlzLmRpc2FibGVkPSExfW5nT25EZXN0cm95KCl7dGhpcy5faXRlbXMuY2xlYXIoKX1zdGF0aWN7dGhpcy5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNka0Ryb3BMaXN0R3JvdXAiLCIiXV0saW5wdXRzOntkaXNhYmxlZDpbam4uSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm0sImNka0Ryb3BMaXN0''@;'; put 'put ''R3JvdXBEaXNhYmxlZCIsImRpc2FibGVkIix4MF19LGV4cG9ydEFzOlsiY2RrRHJvcExpc3RHcm91cCJdLHN0YW5kYWxvbmU6ITAsZmVhdHVyZXM6W1ppKFt7cHJvdmlkZTpiWix1c2VFeGlzdGluZzpsfV0pLFFhXX0pfX1yZXR1cm4gbH0pKCksaFJlPTAsVGNlPSgoKT0+e2NsYXNzIGx7c3Rh''@;'; put 'put ''dGlje3RoaXMuX2Ryb3BMaXN0cz1bXX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fCEhdGhpcy5fZ3JvdXAmJnRoaXMuX2dyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZChhKXt0aGlzLl9kcm9wTGlzdFJlZi5kaXNhYmxlZD10aGlzLl9kaXNhYmxlZD1hfWNvbnN0cnVj''@;'; put 'put ''dG9yKGEsZCxoLGYsdixTLFYpe3RoaXMuZWxlbWVudD1hLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWgsdGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj1mLHRoaXMuX2Rpcj12LHRoaXMuX2dyb3VwPVMsdGhpcy5fZGVzdHJveWVkPW5ldyB0bix0aGlzLmNvbm5lY3RlZFRvPVtdLHRoaXMuaWQ9ImNk''@;'; put 'put ''ay1kcm9wLWxpc3QtIitoUmUrKyx0aGlzLmVudGVyUHJlZGljYXRlPSgpPT4hMCx0aGlzLnNvcnRQcmVkaWNhdGU9KCk9PiEwLHRoaXMuZHJvcHBlZD1uZXcgRHIsdGhpcy5lbnRlcmVkPW5ldyBEcix0aGlzLmV4aXRlZD1uZXcgRHIsdGhpcy5zb3J0ZWQ9bmV3IERyLHRoaXMuX3Vuc29ydGVk''@;'; put 'put ''SXRlbXM9bmV3IFNldCx0aGlzLl9kcm9wTGlzdFJlZj1kLmNyZWF0ZURyb3BMaXN0KGEpLHRoaXMuX2Ryb3BMaXN0UmVmLmRhdGE9dGhpcyxWJiZ0aGlzLl9hc3NpZ25EZWZhdWx0cyhWKSx0aGlzLl9kcm9wTGlzdFJlZi5lbnRlclByZWRpY2F0ZT0oUSxkZSk9PnRoaXMuZW50ZXJQcmVkaWNh''@;'; put 'put ''dGUoUS5kYXRhLGRlLmRhdGEpLHRoaXMuX2Ryb3BMaXN0UmVmLnNvcnRQcmVkaWNhdGU9KFEsZGUscGUpPT50aGlzLnNvcnRQcmVkaWNhdGUoUSxkZS5kYXRhLHBlLmRhdGEpLHRoaXMuX3NldHVwSW5wdXRTeW5jU3Vic2NyaXB0aW9uKHRoaXMuX2Ryb3BMaXN0UmVmKSx0aGlzLl9oYW5kbGVF''@;'; put 'put ''dmVudHModGhpcy5fZHJvcExpc3RSZWYpLGwuX2Ryb3BMaXN0cy5wdXNoKHRoaXMpLFMmJlMuX2l0ZW1zLmFkZCh0aGlzKX1hZGRJdGVtKGEpe3RoaXMuX3Vuc29ydGVkSXRlbXMuYWRkKGEpLHRoaXMuX2Ryb3BMaXN0UmVmLmlzRHJhZ2dpbmcoKSYmdGhpcy5fc3luY0l0ZW1zV2l0aFJlZigp''@;'; put 'put ''fXJlbW92ZUl0ZW0oYSl7dGhpcy5fdW5zb3J0ZWRJdGVtcy5kZWxldGUoYSksdGhpcy5fZHJvcExpc3RSZWYuaXNEcmFnZ2luZygpJiZ0aGlzLl9zeW5jSXRlbXNXaXRoUmVmKCl9Z2V0U29ydGVkSXRlbXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl91bnNvcnRlZEl0ZW1zKS5zb3J0KChh''@;'; put 'put ''LGQpPT5hLl9kcmFnUmVmLmdldFZpc2libGVFbGVtZW50KCkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZC5fZHJhZ1JlZi5nZXRWaXNpYmxlRWxlbWVudCgpKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORz8tMToxKX1uZ09uRGVzdHJveSgpe2NvbnN0IGE9bC5fZHJvcExpc3Rz''@;'; put 'put ''LmluZGV4T2YodGhpcyk7YT4tMSYmbC5fZHJvcExpc3RzLnNwbGljZShhLDEpLHRoaXMuX2dyb3VwJiZ0aGlzLl9ncm91cC5faXRlbXMuZGVsZXRlKHRoaXMpLHRoaXMuX3Vuc29ydGVkSXRlbXMuY2xlYXIoKSx0aGlzLl9kcm9wTGlzdFJlZi5kaXNwb3NlKCksdGhpcy5fZGVzdHJveWVkLm5l''@;'; put 'put ''eHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fc2V0dXBJbnB1dFN5bmNTdWJzY3JpcHRpb24oYSl7dGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUobDQodGhpcy5fZGlyLnZhbHVlKSxUMCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZD0+YS53aXRoRGlyZWN0aW9u''@;'; put 'put ''KGQpKSxhLmJlZm9yZVN0YXJ0ZWQuc3Vic2NyaWJlKCgpPT57Y29uc3QgZD1mdW5jdGlvbiBfSWUobCl7cmV0dXJuIEFycmF5LmlzQXJyYXkobCk/bDpbbF19KHRoaXMuY29ubmVjdGVkVG8pLm1hcChoPT4ic3RyaW5nIj09dHlwZW9mIGg/bC5fZHJvcExpc3RzLmZpbmQodj0+di5pZD09PWgp''@;'; put 'put ''OmgpO2lmKHRoaXMuX2dyb3VwJiZ0aGlzLl9ncm91cC5faXRlbXMuZm9yRWFjaChoPT57LTE9PT1kLmluZGV4T2YoaCkmJmQucHVzaChoKX0pLCF0aGlzLl9zY3JvbGxhYmxlUGFyZW50c1Jlc29sdmVkKXtjb25zdCBoPXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxD''@;'; put 'put ''b250YWluZXJzKHRoaXMuZWxlbWVudCkubWFwKGY9PmYuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQpO3RoaXMuX2Ryb3BMaXN0UmVmLndpdGhTY3JvbGxhYmxlUGFyZW50cyhoKSx0aGlzLl9zY3JvbGxhYmxlUGFyZW50c1Jlc29sdmVkPSEwfWEuZGlzYWJsZWQ9dGhpcy5kaXNhYmxl''@;'; put 'put ''ZCxhLmxvY2tBeGlzPXRoaXMubG9ja0F4aXMsYS5zb3J0aW5nRGlzYWJsZWQ9dGhpcy5zb3J0aW5nRGlzYWJsZWQsYS5hdXRvU2Nyb2xsRGlzYWJsZWQ9dGhpcy5hdXRvU2Nyb2xsRGlzYWJsZWQsYS5hdXRvU2Nyb2xsU3RlcD1wOCh0aGlzLmF1dG9TY3JvbGxTdGVwLDIpLGEuY29ubmVjdGVk''@;'; put 'put ''VG8oZC5maWx0ZXIoaD0+aCYmaCE9PXRoaXMpLm1hcChoPT5oLl9kcm9wTGlzdFJlZikpLndpdGhPcmllbnRhdGlvbih0aGlzLm9yaWVudGF0aW9uKX0pfV9oYW5kbGVFdmVudHMoYSl7YS5iZWZvcmVTdGFydGVkLnN1YnNjcmliZSgoKT0+e3RoaXMuX3N5bmNJdGVtc1dpdGhSZWYoKSx0aGlz''@;'; put 'put ''Ll9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLGEuZW50ZXJlZC5zdWJzY3JpYmUoZD0+e3RoaXMuZW50ZXJlZC5lbWl0KHtjb250YWluZXI6dGhpcyxpdGVtOmQuaXRlbS5kYXRhLGN1cnJlbnRJbmRleDpkLmN1cnJlbnRJbmRleH0pfSksYS5leGl0ZWQuc3Vic2NyaWJlKGQ9''@;'; put 'put ''Pnt0aGlzLmV4aXRlZC5lbWl0KHtjb250YWluZXI6dGhpcyxpdGVtOmQuaXRlbS5kYXRhfSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSxhLnNvcnRlZC5zdWJzY3JpYmUoZD0+e3RoaXMuc29ydGVkLmVtaXQoe3ByZXZpb3VzSW5kZXg6ZC5wcmV2aW91c0luZGV4''@;'; put 'put ''LGN1cnJlbnRJbmRleDpkLmN1cnJlbnRJbmRleCxjb250YWluZXI6dGhpcyxpdGVtOmQuaXRlbS5kYXRhfSl9KSxhLmRyb3BwZWQuc3Vic2NyaWJlKGQ9Pnt0aGlzLmRyb3BwZWQuZW1pdCh7cHJldmlvdXNJbmRleDpkLnByZXZpb3VzSW5kZXgsY3VycmVudEluZGV4OmQuY3VycmVudEluZGV4''@;'; put 'put ''LHByZXZpb3VzQ29udGFpbmVyOmQucHJldmlvdXNDb250YWluZXIuZGF0YSxjb250YWluZXI6ZC5jb250YWluZXIuZGF0YSxpdGVtOmQuaXRlbS5kYXRhLGlzUG9pbnRlck92ZXJDb250YWluZXI6ZC5pc1BvaW50ZXJPdmVyQ29udGFpbmVyLGRpc3RhbmNlOmQuZGlzdGFuY2UsZHJvcFBvaW50''@;'; put 'put ''OmQuZHJvcFBvaW50LGV2ZW50OmQuZXZlbnR9KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHNNKGEucmVjZWl2aW5nU3RhcnRlZCxhLnJlY2VpdmluZ1N0b3BwZWQpLnN1YnNjcmliZSgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkp''@;'; put 'put ''fV9hc3NpZ25EZWZhdWx0cyhhKXtjb25zdHtsb2NrQXhpczpkLGRyYWdnaW5nRGlzYWJsZWQ6aCxzb3J0aW5nRGlzYWJsZWQ6ZixsaXN0QXV0b1Njcm9sbERpc2FibGVkOnYsbGlzdE9yaWVudGF0aW9uOlN9PWE7dGhpcy5kaXNhYmxlZD1oPz8hMSx0aGlzLnNvcnRpbmdEaXNhYmxlZD1mPz8h''@;'; put 'put ''MSx0aGlzLmF1dG9TY3JvbGxEaXNhYmxlZD12Pz8hMSx0aGlzLm9yaWVudGF0aW9uPVN8fCJ2ZXJ0aWNhbCIsZCYmKHRoaXMubG9ja0F4aXM9ZCl9X3N5bmNJdGVtc1dpdGhSZWYoKXt0aGlzLl9kcm9wTGlzdFJlZi53aXRoSXRlbXModGhpcy5nZXRTb3J0ZWRJdGVtcygpLm1hcChhPT5hLl9k''@;'; put 'put ''cmFnUmVmKSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoTmkpLEplKGxSKSxKZShjYSksSmUoaE0pLEplKGc4LDgpLEplKGJaLDEyKSxKZShtWiw4KSl9fXN0YXRpY3t0aGlzLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIi''@;'; put 'put ''LCJjZGtEcm9wTGlzdCIsIiJdLFsiY2RrLWRyb3AtbGlzdCJdXSxob3N0QXR0cnM6WzEsImNkay1kcm9wLWxpc3QiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbihkLGgpezImZCYmKHVyKCJpZCIsaC5pZCkscHIoImNkay1kcm9wLWxpc3QtZGlzYWJsZWQiLGguZGlzYWJsZWQp''@;'; put 'put ''KCJjZGstZHJvcC1saXN0LWRyYWdnaW5nIixoLl9kcm9wTGlzdFJlZi5pc0RyYWdnaW5nKCkpKCJjZGstZHJvcC1saXN0LXJlY2VpdmluZyIsaC5fZHJvcExpc3RSZWYuaXNSZWNlaXZpbmcoKSkpfSxpbnB1dHM6e2Nvbm5lY3RlZFRvOltqbi5Ob25lLCJjZGtEcm9wTGlzdENvbm5lY3RlZFRv''@;'; put 'put ''IiwiY29ubmVjdGVkVG8iXSxkYXRhOltqbi5Ob25lLCJjZGtEcm9wTGlzdERhdGEiLCJkYXRhIl0sb3JpZW50YXRpb246W2puLk5vbmUsImNka0Ryb3BMaXN0T3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiJdLGlkOiJpZCIsbG9ja0F4aXM6W2puLk5vbmUsImNka0Ryb3BMaXN0TG9ja0F4aXMi''@;'; put 'put ''LCJsb2NrQXhpcyJdLGRpc2FibGVkOltqbi5IYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSwiY2RrRHJvcExpc3REaXNhYmxlZCIsImRpc2FibGVkIix4MF0sc29ydGluZ0Rpc2FibGVkOltqbi5IYXNEZWNvcmF0b3JJbnB1dFRyYW5zZm9ybSwiY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWQi''@;'; put 'put ''LCJzb3J0aW5nRGlzYWJsZWQiLHgwXSxlbnRlclByZWRpY2F0ZTpbam4uTm9uZSwiY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZSIsImVudGVyUHJlZGljYXRlIl0sc29ydFByZWRpY2F0ZTpbam4uTm9uZSwiY2RrRHJvcExpc3RTb3J0UHJlZGljYXRlIiwic29ydFByZWRpY2F0ZSJdLGF1dG9T''@;'; put 'put ''Y3JvbGxEaXNhYmxlZDpbam4uSGFzRGVjb3JhdG9ySW5wdXRUcmFuc2Zvcm0sImNka0Ryb3BMaXN0QXV0b1Njcm9sbERpc2FibGVkIiwiYXV0b1Njcm9sbERpc2FibGVkIix4MF0sYXV0b1Njcm9sbFN0ZXA6W2puLk5vbmUsImNka0Ryb3BMaXN0QXV0b1Njcm9sbFN0ZXAiLCJhdXRvU2Nyb2xs''@;'; put 'put ''U3RlcCJdfSxvdXRwdXRzOntkcm9wcGVkOiJjZGtEcm9wTGlzdERyb3BwZWQiLGVudGVyZWQ6ImNka0Ryb3BMaXN0RW50ZXJlZCIsZXhpdGVkOiJjZGtEcm9wTGlzdEV4aXRlZCIsc29ydGVkOiJjZGtEcm9wTGlzdFNvcnRlZCJ9LGV4cG9ydEFzOlsiY2RrRHJvcExpc3QiXSxzdGFuZGFsb25l''@;'; put 'put ''OiEwLGZlYXR1cmVzOltaaShbe3Byb3ZpZGU6YlosdXNlVmFsdWU6dm9pZCAwfSx7cHJvdmlkZTp2Wix1c2VFeGlzdGluZzpsfV0pLFFhXX0pfX1yZXR1cm4gbH0pKCksa2NlPSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9''@;'; put 'put ''fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtwcm92aWRlcnM6W2xSXSxpbXBvcnRzOltLSWVdfSl9fXJldHVybiBsfSkoKTtjbGFzcyB2UmV7Y29uc3RydWN0b3IoYyl7dGhpcy5ob3N0PWMsdGhpcy5ob3N0LmFkZENvbnRyb2xs''@;'; put 'put ''ZXIodGhpcyl9aG9zdENvbm5lY3RlZCgpe3ZhciBjPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7eWllbGQgYy5ob3N0LnVwZGF0ZUNvbXBsZXRlLGMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixhPT5jLmVtdWxhdGVBY3RpdmUoYSkpLGMuaG9zdC5hZGRFdmVudExpc3RlbmVy''@;'; put 'put ''KCJtb3VzZWRvd24iLGE9PmMuZW11bGF0ZUFjdGl2ZShhKSksYy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwoKT0+Yy5lbXVsYXRlSW5hY3RpdmUoKSksYy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCgpPT5jLmVtdWxhdGVJbmFjdGl2ZSgpKSxjLmhvc3QuYWRkRXZlbnRM''@;'; put 'put ''aXN0ZW5lcigibW91c2V1cCIsKCk9PmMuZW11bGF0ZUluYWN0aXZlKCkpfSkoKX1lbXVsYXRlQWN0aXZlKGMpe3RoaXMuaG9zdC5kaXNhYmxlZHx8dGhpcy5ob3N0Py5zZXRBdHRyaWJ1dGUoImNkcy1hY3RpdmUiLCIiKSwiU3BhY2UiPT09Yy5jb2RlJiZjLnRhcmdldD09PXRoaXMuaG9zdCYm''@;'; put 'put ''Yy5wcmV2ZW50RGVmYXVsdCgpfWVtdWxhdGVJbmFjdGl2ZSgpe3RoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoImNkcy1hY3RpdmUiKX19Y2xhc3MgYlJle2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXsodGhp''@;'; put 'put ''cy5ob3N0Lmhhc0F0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIpfHx0aGlzLmhvc3QuYXJpYUNvbnRyb2xzKSYmKHRoaXMuaG9zdC5hcmlhSGFzUG9wdXA9InRydWUiLHRoaXMuaG9zdC5hcmlhRXhwYW5kZWQ9ImZhbHNlIil9fWNsYXNzIHdSZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0''@;'; put 'put ''aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1ob3N0VXBkYXRlZCgpe251bGwhPT10aGlzLmhvc3QuZGlzYWJsZWQmJih0aGlzLmhvc3QuYXJpYURpc2FibGVkPXRoaXMuaG9zdC5kaXNhYmxlZCksdGhpcy5ob3N0LnJlYWRvbmx5JiYodGhpcy5ob3N0LmFyaWFEaXNhYmxlZD1udWxsKX19''@;'; put 'put ''Y2xhc3MgU1Jle2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7bnVsbCE9dGhpcy5ob3N0LnByZXNzZWQmJih0aGlzLmhvc3QuYXJpYVByZXNzZWQ9dGhpcy5ob3N0LnByZXNzZWQ/InRydWUiOiJmYWxzZSIpLHRo''@;'; put 'put ''aXMuaG9zdC5yZWFkb25seSYmKHRoaXMuaG9zdC5hcmlhUHJlc3NlZD1udWxsKX19Y2xhc3MgeFJle2NvbnN0cnVjdG9yKGMpe3RoaXMuaG9zdD1jLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RDb25uZWN0ZWQoKXt0aGlzLmhvc3QudGFiSW5kZXg9MH1ob3N0VXBkYXRlZCgp''@;'; put 'put ''e3RoaXMuaG9zdC5yb2xlPXRoaXMuaG9zdC5yZWFkb25seT9udWxsOiJidXR0b24iLHRoaXMuaG9zdC50YWJJbmRleD10aGlzLmhvc3QuZGlzYWJsZWQ/LTE6MCx0aGlzLmhvc3QucmVhZG9ubHkmJnRoaXMuaG9zdC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iil9fWNsYXNzIFRSZXtjb25z''@;'; put 'put ''dHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0aGlzLmhvc3QuYWRkQ29udHJvbGxlcih0aGlzKX1nZXQgY3VycmVudEFuY2hvcigpe3JldHVybiJBIj09PXRoaXMuaG9zdC5wYXJlbnRFbGVtZW50Py50YWdOYW1lP3RoaXMuaG9zdC5wYXJlbnRFbGVtZW50Om51bGx9aG9zdENvbm5lY3RlZCgpe3Ro''@;'; put 'put ''aXMuc2V0QW5jaG9yKCl9aG9zdFVwZGF0ZWQoKXt0aGlzLnNldEFuY2hvcigpfXNldEFuY2hvcigpe3RoaXMuY3VycmVudEFuY2hvciYmdGhpcy5jdXJyZW50QW5jaG9yIT09dGhpcy5wcmV2aW91c0FuY2hvciYmKHRoaXMucHJldmlvdXNBbmNob3I9dGhpcy5jdXJyZW50QW5jaG9yLHRoaXMu''@;'; put 'put ''aG9zdC5yZWFkb25seT0hMCx0aGlzLmN1cnJlbnRBbmNob3Iuc3R5bGUubGluZUhlaWdodD0iMCIsdGhpcy5jdXJyZW50QW5jaG9yLnN0eWxlLnRleHREZWNvcmF0aW9uPSJub25lIil9fWNvbnN0IHlaPWw9Pmw/P0N1O2Z1bmN0aW9uIEFjZShsKXtsLnByZXZlbnREZWZhdWx0KCksbC5zdG9w''@;'; put 'put ''UHJvcGFnYXRpb24oKX1jb25zdCB3Wj1uZXcgTWFwKFtbImFycm93LWxlZnQiLCJBcnJvd0xlZnQiXSxbImFycm93LXJpZ2h0IiwiQXJyb3dSaWdodCJdLFsiYXJyb3ctdXAiLCJBcnJvd1VwIl0sWyJhcnJvdy1kb3duIiwiQXJyb3dEb3duIl0sWyJ0YWIiLCJUYWIiXSxbImVudGVyIiwiRW50''@;'; put 'put ''ZXIiXSxbImVzY2FwZSIsIkVzY2FwZSJdLFsic3BhY2UiLCIgIl0sWyJob21lIiwiSG9tZSJdLFsiZW5kIiwiRW5kIl1dKTtjbGFzcyBBUmV7c3RhdGljIGdldCBrZXljb2Rlcygpe3JldHVybiBFX2Uod1opfXN0YXRpYyBhZGQoYyxhKXt3Wi5zZXQoYyxhKX1zdGF0aWMgaGFzKGMpe3JldHVy''@;'; put 'put ''biB3Wi5oYXMoYyl9c3RhdGljIGdldENvZGUoYyxhPXRoaXMua2V5Y29kZXMpe3JldHVybiBmdW5jdGlvbiBEUmUobCxjKXtyZXR1cm4gYy5nZXQobCl8fCIifShjLGEpfX12YXIgRTM7IWZ1bmN0aW9uKGwpe2wuQXJyb3dVcD0iQXJyb3dVcCIsbC5BcnJvd0Rvd249IkFycm93RG93biIsbC5B''@;'; put 'put ''cnJvd0xlZnQ9IkFycm93TGVmdCIsbC5BcnJvd1JpZ2h0PSJBcnJvd1JpZ2h0IixsLkVuZD0iRW5kIixsLkhvbWU9IkhvbWUiLGwuUGFnZVVwPSJQYWdlVXAiLGwuUGFnZURvd249IlBhZ2VEb3duIn0oRTN8fChFMz17fSkpO2NsYXNzIE5SZXtjb25zdHJ1Y3RvcihjKXt0aGlzLmhvc3Q9Yyx0''@;'; put 'put ''aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvckhhbmRsZXI9dGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3IuYmluZCh0aGlzKSx0aGlzLmVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3JIYW5kbGVyPXRoaXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvci5iaW5kKHRo''@;'; put 'put ''aXMpLHRoaXMuaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpfWhvc3RVcGRhdGVkKCl7dGhpcy5zZXRCdXR0b25UeXBlKCksdGhpcy5zZXR1cE5hdGl2ZUJ1dHRvbkJlaGF2aW9yKCl9c2V0QnV0dG9uVHlwZSgpeyF0aGlzLmhvc3QudHlwZSYmdGhpcy5ob3N0LmNsb3Nlc3QoImZvcm0iKSYmKHRo''@;'; put 'put ''aXMuaG9zdC50eXBlPSJzdWJtaXQiKX1zZXR1cE5hdGl2ZUJ1dHRvbkJlaGF2aW9yKCl7dGhpcy5ob3N0LnJlYWRvbmx5fHx0aGlzLmhvc3QuZGlzYWJsZWQ/KHRoaXMuaG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3JIYW5k''@;'; put 'put ''bGVyKSx0aGlzLmhvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuZW11bGF0ZUtleUJvYXJkRXZlbnRCZWhhdmlvckhhbmRsZXIpKToodGhpcy5ob3N0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLnRyaWdnZXJOYXRpdmVCdXR0b25CZWhhdmlvckhhbmRsZXIpLHRo''@;'; put 'put ''aXMuaG9zdC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsdGhpcy5lbXVsYXRlS2V5Qm9hcmRFdmVudEJlaGF2aW9ySGFuZGxlcikpfWVtdWxhdGVLZXlCb2FyZEV2ZW50QmVoYXZpb3IoYyl7IWZ1bmN0aW9uIElSZShsLGMsYSl7bC5maWx0ZXIoZD0+ZnVuY3Rpb24gQ1oobCxjKXtyZXR1cm4g''@;'; put 'put ''QVJlLmdldENvZGUoYyk9PT1sLmtleX0oYyxkKSkubGVuZ3RoPjAmJmEoKX0oWyJlbnRlciIsInNwYWNlIl0sYywoKT0+eyJzdWJtaXQiPT09dGhpcy5ob3N0LnR5cGU/dGhpcy50cmlnZ2VyTmF0aXZlQnV0dG9uQmVoYXZpb3IoYyk6dGhpcy5ob3N0LmNsaWNrKCksQWNlKGMpfSl9dHJpZ2dl''@;'; put 'put ''ck5hdGl2ZUJ1dHRvbkJlaGF2aW9yKGMpe2lmKHRoaXMuaG9zdC5kaXNhYmxlZClBY2UoYyk7ZWxzZSBpZighYy5kZWZhdWx0UHJldmVudGVkKXtjb25zdCBhPWZ1bmN0aW9uIFBSZShsLGMsYSl7Y29uc3QgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmFwcGVuZENoaWxkKGQp''@;'; put 'put ''LEtpZShsLGMse3JlbmRlckJlZm9yZTpkLC4uLmF9KTtjb25zdCBoPWQucHJldmlvdXNTaWJsaW5nO3JldHVybiBkLnJlbW92ZSgpLGh9KFR6YDxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIHJvbGU9InByZXNlbnRhdGlvbiIgP2Rpc2FibGVkPSIke3RoaXMuaG9zdC5kaXNhYmxlZH0iIHRh''@;'; put 'put ''YmluZGV4PSItMSIgc3R5bGU9ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQiIHZhbHVlPSIke3laKHRoaXMuaG9zdC52YWx1ZSl9IiBuYW1lPSIke3laKHRoaXMuaG9zdC5uYW1lKX0iIHR5cGU9IiR7eVoodGhpcy5ob3N0LnR5cGUpfSI+PC9idXR0b24+YCx0aGlzLmhvc3QpO2E/LmRpc3BhdGNo''@;'; put 'put ''RXZlbnQobmV3IE1vdXNlRXZlbnQoImNsaWNrIix7cmVsYXRlZFRhcmdldDp0aGlzLmhvc3QsY29tcG9zZWQ6ITB9KSksYT8ucmVtb3ZlKCl9fX1jbGFzcyBWUmV7Y29uc3RydWN0b3IoYyl7dGhpcy5ob3N0PWMsdGhpcy5ob3N0LmFkZENvbnRyb2xsZXIodGhpcyl9aG9zdFVwZGF0ZWQoKXtu''@;'; put 'put ''dWxsIT10aGlzLmhvc3QuZXhwYW5kZWQmJih0aGlzLmhvc3QuYXJpYUV4cGFuZGVkPXRoaXMuaG9zdC5leHBhbmRlZD8idHJ1ZSI6ImZhbHNlIiksdGhpcy5ob3N0LnJlYWRvbmx5JiYodGhpcy5ob3N0LmFyaWFFeHBhbmRlZD1udWxsKX19bGV0IHEyPWNsYXNzIGV4dGVuZHMgcXZ7Y29uc3Ry''@;'; put 'put ''dWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Rpc2FibGVkPSExfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQobCl7Y29uc3QgYz10aGlzLl9kaXNhYmxlZDt0aGlzLl9kaXNhYmxlZD1sLHRoaXMucmVxdWVzdFVwZGF0ZSgiZGlzYWJs''@;'; put 'put ''ZWQiLGMpfX07X2woW3djKHt0eXBlOkJvb2xlYW59KV0scTIucHJvdG90eXBlLCJwcmVzc2VkIix2b2lkIDApLF9sKFt3Yyh7dHlwZTpCb29sZWFufSldLHEyLnByb3RvdHlwZSwiZXhwYW5kZWQiLHZvaWQgMCksX2woW3djKHt0eXBlOkJvb2xlYW59KV0scTIucHJvdG90eXBlLCJyZWFkb25s''@;'; put 'put ''eSIsdm9pZCAwKSxfbChbd2Moe3R5cGU6U3RyaW5nfSldLHEyLnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSxfbChbd2Moe3R5cGU6U3RyaW5nfSldLHEyLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSxfbChbd2Moe3R5cGU6U3RyaW5nfSldLHEyLnByb3RvdHlwZSwidmFsdWUiLHZvaWQgMCks''@;'; put 'put ''X2woW3djKHt0eXBlOkJvb2xlYW59KV0scTIucHJvdG90eXBlLCJkaXNhYmxlZCIsbnVsbCksX2woW3djKHt0eXBlOlN0cmluZ30pXSxxMi5wcm90b3R5cGUsInBvcHVwIix2b2lkIDApLHEyPV9sKFtmdW5jdGlvbiBtUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgdlJl''@;'; put 'put ''KGMpKX0oKSxmdW5jdGlvbiBNUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgeFJlKGMpKX0oKSxmdW5jdGlvbiBDUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgU1JlKGMpKX0oKSxmdW5jdGlvbiBIUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFs''@;'; put 'put ''aXplcihjPT5uZXcgVlJlKGMpKX0oKSxmdW5jdGlvbiB5UmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgd1JlKGMpKX0oKSxmdW5jdGlvbiBfUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgYlJlKGMpKX0oKSxmdW5jdGlvbiBGUmUoKXtyZXR1cm4g''@;'; put 'put ''bD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgTlJlKGMpKX0oKSxmdW5jdGlvbiBFUmUoKXtyZXR1cm4gbD0+bC5hZGRJbml0aWFsaXplcihjPT5uZXcgVFJlKGMpKX0oKV0scTIpO2NvbnN0IGNSPXthY3Rpb25zOntzb3J0OiJTb3J0IixleHBhbmQ6IkV4cGFuZCIsY2xvc2U6IkNsb3NlIixy''@;'; put 'put ''ZXNpemU6IlJlc2l6ZSIsZmlsdGVyOiJGaWx0ZXIifSxhbGVydDp7Y2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIixsb2FkaW5nOiJMb2FkaW5nIixpbmZvOiJJbmZvIixzdWNjZXNzOiJTdWNjZXNzIix3YXJuaW5nOiJXYXJuaW5nIixkYW5nZXI6IkVycm9yIn0sZHJvcGRvd246e29wZW46''@;'; put 'put ''Ik9wZW4ifSxmaWxlOnticm93c2U6ImJyb3dzZSIsZmlsZXM6ImZpbGVzIixyZW1vdmVGaWxlOiJyZW1vdmUgZmlsZSJ9LG1vZGFsOntjbG9zZUJ1dHRvbkFyaWFMYWJlbDoiQ2xvc2UgbW9kYWwiLGNvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9mIG1vZGFsIGNvbnRlbnQiLGNvbnRlbnRCb3g6''@;'; put 'put ''IlNjcm9sbGFibGUgbW9kYWwgYm9keSIsY29udGVudEVuZDoiRW5kIG9mIG1vZGFsIGNvbnRlbnQifSxuYXZpZ2F0aW9uOntuYXZpZ2F0aW9uRWxlbWVudDoibmF2aWdhdGlvbiIsbmF2aWdhdGlvbkxhYmVsOiJuYXZpZ2F0aW9uIG1lbnUiLG5hdmlnYXRpb25BYnJpZGdlZFRleHQ6IlZpZXcg''@;'; put 'put ''YWJyaWRnZWQgbWVudSIsbmF2aWdhdGlvblVuYWJyaWRnZWRUZXh0OiJWaWV3IHVuYWJyaWRnZWQgbWVudSJ9LG92ZXJsYXk6e2Nsb3NlQnV0dG9uQXJpYUxhYmVsOiJDbG9zZSBkaWFsb2ciLGNvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9mIGRpYWxvZyBjb250ZW50Iixjb250ZW50RW5kOiJF''@;'; put 'put ''bmQgb2YgZGlhbG9nIGNvbnRlbnQifSxwb3B1cDp7Y2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIHBvcHVwIixjb250ZW50U3RhcnQ6IkJlZ2lubmluZyBvZiBwb3B1cCBjb250ZW50Iixjb250ZW50RW5kOiJFbmQgb2YgcG9wdXAgY29udGVudCJ9LHBhc3N3b3JkOntzaG93QnV0dG9uQXJp''@;'; put 'put ''YUxhYmVsOiJTaG93IHBhc3N3b3JkIixoaWRlQnV0dG9uQXJpYUxhYmVsOiJIaWRlIHBhc3N3b3JkIn0scHJvZ3Jlc3M6e2xvYWRpbmc6IkxvYWRpbmciLGxvb3Bpbmc6IkxvYWRpbmcifSx0cmVldmlldzp7bG9hZGluZzoiTG9hZGluZyJ9LGdyaWQ6e3Jlc2l6ZUNvbHVtbjoiUmVzaXplIENv''@;'; put 'put ''bHVtbiIsY2xvc2VEZXRhaWxzOiJDbG9zZSBEZXRhaWxzIixub0RhdGE6Ik5vIFJlc3VsdHMgRm91bmQiLHJvd0RldGFpbFN0YXJ0OiJTdGFydCBvZiByb3cgZGV0YWlscyIscm93RGV0YWlsRW5kOiJFbmQgb2Ygcm93IGRldGFpbHMiLGZvb3RlckVuZDoiRW5kIG9mIGdyaWQgcm93cyIsYWN0''@;'; put 'put ''aW9uOiJBY3Rpb24iLGRyb3BUYXJnZXQ6IkRyb3AgSXRlbSIscGFnaW5hdGlvbjp7bGFiZWw6ImdyaWQgcGFnaW5hdGlvbiIsZmlyc3RQYWdlOiJnbyB0byBmaXJzdCBwYWdlIixwcmV2aW91c1BhZ2U6ImdvIHRvIHByZXZpb3VzIHBhZ2UiLG5leHRQYWdlOiJnbyB0byBuZXh0IHBhZ2UiLGxh''@;'; put 'put ''c3RQYWdlOiJnbyB0byBsYXN0IHBhZ2UiLHBhZ2VTaXplOiJyb3dzIHBlciBwYWdlIixwYWdlOiJwYWdlIn19fTtjbGFzcyBtOHtzdGF0aWMgZ2V0IGtleXMoKXtyZXR1cm4gMD09PU9iamVjdC5rZXlzKFN1LnN0YXRlLmkxOG5SZWdpc3RyeSkubGVuZ3RoJiYoU3Uuc3RhdGUuaTE4blJlZ2lz''@;'; put 'put ''dHJ5PUc2KGNSLFN1LnN0YXRlLmkxOG5SZWdpc3RyeSkpLEc2KGNSLFN1LnN0YXRlLmkxOG5SZWdpc3RyeSl9c3RhdGljIGZpbmRLZXkoYyl7Y29uc3QgYT1tOC5rZXlzO3JldHVybiBPYmplY3Qua2V5cyhhKS5maW5kKGQ9PnRpZShhW2RdLGMpKX1zdGF0aWMgZ2V0KGMpe3JldHVybiBjJiZt''@;'; put 'put ''OC5rZXlzW2NdfHx7fX1zdGF0aWMgcmVzZXQoKXtTdS5zdGF0ZS5pMThuUmVnaXN0cnk9RzYoe30sY1IpfXN0YXRpYyBoeWRyYXRlKGMsYSl7cmV0dXJuIEpTT04ucGFyc2UoZnVuY3Rpb24gJF9lKGwsYyxhKXtyZXR1cm4gbC5yZXBsYWNlKC9cJFx7Lis/XH0vZyxkPT5mdW5jdGlvbiB4X2Uo''@;'; put 'put ''bCxjLGE9YFwkeyR7bH19YCl7cmV0dXJuIGwuc3BsaXQoIi4iKS5yZWR1Y2UoKGQsaCk9Pnt0cnl7Y29uc3QgZj1kW2hdO3N3aXRjaCghMCl7Y2FzZSBudWxsPT09ZjpjYXNlITE9PT1mOmNhc2UiIj09PWY6Y2FzZSAwPT09ZjpyZXR1cm4gZjtkZWZhdWx0OnJldHVybiBmfHxhfX1jYXRjaHty''@;'; put 'put ''ZXR1cm4gYX19LGMpfShkLnN1YnN0cigyLGQubGVuZ3RoLTMpLnRyaW0oKSxjLGEpKX0oSlNPTi5zdHJpbmdpZnkoYyksYSkpfXN0YXRpYyBsb2NhbGl6ZShjKXtTdS5zdGF0ZS5pMThuUmVnaXN0cnk9RzYoY1IsU3Uuc3RhdGUuaTE4blJlZ2lzdHJ5LGMpfX12YXIgVVJlPWJ6YDpob3N0ey0t''@;'; put 'put ''aWNvbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcsIGNhbGMoMTYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLWljb24taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNywgY2FsYygxNiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIw''@;'; put 'put ''KSkpOy0td2lkdGg6dmFyKC0taWNvbi13aWR0aCk7LS1oZWlnaHQ6dmFyKC0taWNvbi13aWR0aCk7LS1jdXJzb3I6cG9pbnRlcjstLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci0zMDAsIHZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCwgIzJk''@;'; put 'put ''NDA0OCkpOy0tZm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXNpemUtMywgY2FsYygxMyAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkpOy0tYmFja2dyb3VuZDp0cmFuc3BhcmVudDstLXBhZGRpbmc6MDstLW91dGxpbmU6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLCBIaWdobGlnaHQgc29saWQgMnB4KTstLW91dGxpbmUtb2Zmc2V0OmNhbGModmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCwgMXB4KSAqIC0xKTtwb2ludGVyLWV2ZW50czpub25lO2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWJsb2NrO291dGxpbmU6MCFpbXBvcnRhbnR9Omhvc3QoW3JvbGU9YnV0dG9uXSl7cG9pbnRlci1ldmVudHM6aW5pdGlhbDtjdXJzb3I6dmFyKC0tY3Vyc29yKSFpbXBvcnRhbnR9Omhvc3QoW3N0YXR1cz1hY3RpdmVdKXstLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5m''@;'; put 'put ''bywgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCwgIzAwNzlhZCkpfTo6c2xvdHRlZChbc2hhcGU9Y2xvc2VdKSw6OnNsb3R0ZWQoW3NoYXBlPWluZm8tY2lyY2xlXSksOjpzbG90dGVkKFtzaGFwZT10aW1lc10pLDpob3N0KFtzaGFwZT1jbG9zZV0pLDpob3N0KFtzaGFwZT1pbmZv''@;'; put 'put ''LWNpcmNsZV0pey0taWNvbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgsIGNhbGMoMTggKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLCAyMCkpKTstLWljb24taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCwgY2FsYygxOCAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWJhc2UsIDIwKSkpfTpob3N0KDpob3Zlcil7LS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyLCB2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwLCAjMWIyYjMyKSl9Omhvc3QoOmFjdGl2ZSl7LS1jb2xvcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCwgIzFiMmIzMikpfTpob3N0KDphY3RpdmUpIC5wcml2YXRlLWhvc3R7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTEsY2FsYygxICogMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwyMCkpKS8gMikpfTpob3N0KFtkaXNhYmxlZF0pey0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCwgdmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25z''@;'; put 'put ''dHJ1Y3Rpb24tMzAwLCAjYWViOGJjKSl9LnByaXZhdGUtaG9zdHstLWljb24tY29sb3I6dmFyKC0tY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmFja2dyb3VuZCk7cGFkZGluZzp2YXIoLS1wYWRkaW5nKTtjb2xvcjp2YXIoLS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZSk7ZGlz''@;'; put 'put ''cGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDp2YXIoLS13aWR0aCk7bWluLWhlaWdodDp2YXIoLS1oZWlnaHQpfTo6c2xvdHRlZChjZHMtaWNvbiksY2RzLWljb257d2lkdGg6dmFyKC0taWNvbi13aWR0aCk7aGVpZ2h0OnZhcigt''@;'; put 'put ''LWljb24taGVpZ2h0KTtwb2ludGVyLWV2ZW50czpub25lfTo6c2xvdHRlZChjZHMtaWNvbjpub3QoW3N0YXR1c10pKSxjZHMtaWNvbnstLWNvbG9yOnZhcigtLWljb24tY29sb3IpfTpob3N0KFtkaXNhYmxlZF06YWN0aXZlKXtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudH0ucHJpdmF0''@;'; put 'put ''ZS1ob3N0OjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYygtMSp2YXIoLS13aWR0aCkgLSAxKTt0b3A6Y2FsYygtMSp2YXIoLS1oZWlnaHQpIC0gMSk7d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi10b3VjaC10YXJnZXQsY2FsYygz''@;'; put 'put ''NiAqIDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsMjApKSk7aGVpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tdG91Y2gtdGFyZ2V0LGNhbGMoMzYgKiAxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlLDIwKSkpfTpob3N0KFtkaXNhYmxlZF0pIC5wcml2YXRl''@;'; put 'put ''LWhvc3Q6OmFmdGVye291dGxpbmU6MCFpbXBvcnRhbnR9Omhvc3QoOmZvY3VzKSAucHJpdmF0ZS1ob3N0OjphZnRlcntvdXRsaW5lOnZhcigtLW91dGxpbmUpO291dGxpbmUtb2Zmc2V0OnZhcigtLW91dGxpbmUtb2Zmc2V0KX1AbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRp''@;'; put 'put ''bzowKXs6aG9zdCg6Zm9jdXMpIC5wcml2YXRlLWhvc3Q6OmFmdGVye291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtc3R5bGU6YXV0b319YDtjbGFzcyB2OCBleHRlbmRzIHEye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmkxOG49''@;'; put 'put ''bTgua2V5cy5hY3Rpb25zLHRoaXMuY2RzQnV0dG9uQWN0aW9uPSEwfXJlbmRlcigpe3JldHVybiBUemA8ZGl2IGNsYXNzPSJwcml2YXRlLWhvc3QiPjxzbG90PjxjZHMtaWNvbiAuc2hhcGU9IiR7dGhpcy5zaGFwZT90aGlzLnNoYXBlOiJlbGxpcHNpcy12ZXJ0aWNhbCJ9IiAuc2l6ZT0iJHt0''@;'; put 'put ''aGlzLmljb25TaXplfSIgP3NvbGlkPSIke3RoaXMucHJlc3NlZHx8dGhpcy5leHBhbmRlZH0iIGlubmVyLW9mZnNldD0iJHsxfSI+PC9jZHMtaWNvbj48L3Nsb3Q+PC9kaXY+YH11cGRhdGVkKGMpe3N1cGVyLnVwZGF0ZWQoYyksdGhpcy5hcmlhTGFiZWx8fHRoaXMucmVhZG9ubHl8fHE2Lndh''@;'; put 'put ''cm4oIkEgYXJpYS1sYWJlbCBpcyByZXF1aXJlZCBmb3IgaW50ZXJhY3RpdmUgY2RzLWJ1dHRvbi1hY3Rpb24gdHlwZSIsdGhpcyksYy5oYXMoInJlYWRvbmx5IikmJih0aGlzLmFyaWFIaWRkZW49dGhpcy5yZWFkb25seSYmIXRoaXMuaGFzQXR0cmlidXRlKCJhcmlhLWxhYmVsIik/InRydWUi''@;'; put 'put ''Om51bGwpfX12OC5zdHlsZXM9W0ppZSxVUmVdLF9sKFt3Yyh7dHlwZTpTdHJpbmd9KV0sdjgucHJvdG90eXBlLCJzaGFwZSIsdm9pZCAwKSxfbChbd2Moe3R5cGU6U3RyaW5nLHJlZmxlY3Q6ITB9KV0sdjgucHJvdG90eXBlLCJhY3Rpb24iLHZvaWQgMCksX2woW3djKHt0eXBlOlN0cmluZ30p''@;'; put 'put ''XSx2OC5wcm90b3R5cGUsImljb25TaXplIix2b2lkIDApLF9sKFtmdW5jdGlvbiBCUmUoKXtyZXR1cm4obCxjKT0+e2NvbnN0IGE9bC5jb25uZWN0ZWRDYWxsYmFjayxkPWwuZGlzY29ubmVjdGVkQ2FsbGJhY2s7bC5jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbigpe2wuX19pMThuU3ViPVN1''@;'; put 'put ''LnN0YXRlVXBkYXRlcy5zdWJzY3JpYmUoZj0+eyJpMThuUmVnaXN0cnkiPT09Zi5rZXkmJnRoaXMucmVxdWVzdFVwZGF0ZShjKX0pLGEmJmEuYXBwbHkodGhpcyl9LGwuZGlzY29ubmVjdGVkQ2FsbGJhY2s9ZnVuY3Rpb24oKXtsLl9faTE4blN1Yi51bnN1YnNjcmliZSgpLGQmJmQuYXBwbHko''@;'; put 'put ''dGhpcyl9O2NvbnN0IGg9e2dldCgpe2NvbnN0IGY9RzYobTgua2V5c1t0aGlzLl9faTE4bktleV0sdGhpcy5fX2kxOG58fHt9KTtyZXR1cm4gbTguaHlkcmF0ZShmLHRoaXMpfSxzZXQoZil7Y29uc3Qgdj1mdW5jdGlvbiBqUmUobCxjKXtpZihhbShsKSl7bGV0IGE9e307aWYoYy5oYXNBdHRy''@;'; put 'put ''aWJ1dGUoImNkcy1pMThuIikpe2NvbnN0IGQ9Yy5nZXRBdHRyaWJ1dGUoImNkcy1pMThuIikrIiI7aWYoYW0oZCkpYT17fTtlbHNlIHRyeXthPUpTT04ucGFyc2UoZCl9Y2F0Y2h7cTYud2FybigiQ2xhcml0eSBpMThuOiBJbnZhbGlkIEpTT04gcGFzc2VkIHRvIGNkcy1pMThuIiksYT17fX19''@;'; put 'put ''cmV0dXJuIGF9cmV0dXJuIGx9KGYsdGhpcyksUz1mdW5jdGlvbiB6UmUobCxjLGEsZCl7cmV0dXJuIGFtKGwpP3RpZShhLGQpP3t1cGRhdGU6ITF9Ont1cGRhdGU6ITAsdmFsdWVzOmF9Omw9PT1jP3t1cGRhdGU6ITEsdmFsdWVzOnt9fTp7dXBkYXRlOiEwLGtleTpsLHZhbHVlczp7fX19KG04''@;'; put 'put ''LmZpbmRLZXkodil8fCIiLHRoaXMuX19pMThuS2V5LHYsdGhpcy5fX2kxOG4pO3ZvaWQgMCE9PVMua2V5JiYodGhpcy5fX2kxOG5LZXk9Uy5rZXkrIiIpLHZvaWQgMCE9PVMudmFsdWVzJiYodGhpcy5fX2kxOG49ey4uLlMudmFsdWVzfSksITA9PT1TLnVwZGF0ZSYmdGhpcy5yZXF1ZXN0VXBk''@;'; put 'put ''YXRlKCksdGhpcy5yZXF1ZXN0VXBkYXRlKGMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07cmV0dXJuIHZvaWQgMCE9PWM/ZnVuY3Rpb24oZix2LFMpe2NvbnN0IFY9T2JqZWN0LmRlZmluZVByb3BlcnR5KHYsUyxmKTtyZXR1cm4gd2Moe3R5cGU6T2JqZWN0LGF0dHJpYnV0ZToi''@;'; put 'put ''Y2RzLWkxOG4ifSkoVixTKX0oaCxsLGMpOmZ1bmN0aW9uKGYsdil7Y29uc3QgUz17a2luZDoibWV0aG9kIixwbGFjZW1lbnQ6InByb3RvdHlwZSIsa2V5OnYua2V5LGRlc2NyaXB0b3I6Zn07cmV0dXJuIHdjKHt0eXBlOk9iamVjdH0pKFMpfShoLGwpfX0oKV0sdjgucHJvdG90eXBlLCJpMThu''@;'; put 'put ''Iix2b2lkIDApLF9sKFtyb2Uoe3R5cGU6Qm9vbGVhbixyZWZsZWN0OiEwLGF0dHJpYnV0ZToiY2RzLWJ1dHRvbi1hY3Rpb24ifSldLHY4LnByb3RvdHlwZSwiY2RzQnV0dG9uQWN0aW9uIix2b2lkIDApO2NsYXNzIEljZSBleHRlbmRzIHY4e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1l''@;'; put 'put ''bnRzKSx0aGlzLnNoYXBlPSJjbG9zZSJ9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuYXJpYUxhYmVsPXRoaXMuYXJpYUxhYmVsP3RoaXMuYXJpYUxhYmVsOnRoaXMuaTE4bi5jbG9zZX19X2woW3djKHt0eXBlOlN0cmluZ30pXSxJY2UucHJvdG90''@;'; put 'put ''eXBlLCJzaGFwZSIsdm9pZCAwKSx2aWUoImNkcy1pbnRlcm5hbC1jbG9zZS1idXR0b24iLEljZSksV3MuYWRkSWNvbnMoRmxlKSxXcy5hZGRBbGlhc2VzKFsidGltZXMiLFsiY2xvc2UiXV0pO2NvbnN0IFpvPVsiKiJdLFJjZT1bW1siY2xyLWFjY29yZGlvbi10aXRsZSJdLFsiY2xyLXN0ZXAt''@;'; put 'put ''dGl0bGUiXV0sW1siY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiJdLFsiY2xyLXN0ZXAtZGVzY3JpcHRpb24iXV0sIioiXSxMY2U9WyJjbHItYWNjb3JkaW9uLXRpdGxlLCBjbHItc3RlcC10aXRsZSIsImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24sIGNsci1zdGVwLWRlc2NyaXB0aW9uIiwi''@;'; put 'put ''KiJdO2Z1bmN0aW9uIFlSZShsLGMpe2lmKDEmbCYmKFZyKDApLFBlKDEpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgpLG1yKCIgIixhLnN0ZXBFcnJvclRleHQoYS5wYW5lbE51bWJlciksIiAiKX19ZnVuY3Rpb24gV1JlKGwsYyl7aWYoMSZsJiYoVnIoMCksUGUoMSksQnIoKSksMiZs''@;'; put 'put ''KXtjb25zdCBhPU5lKDIpO19lKCksbXIoIiAiLGEuc3RlcENvbXBsZXRlVGV4dChhLnBhbmVsTnVtYmVyKSwiICIpfX1mdW5jdGlvbiBHUmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDEzKSxJdCgiQHRvZ2dsZS5kb25lIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9''@;'; put 'put ''TmUoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkuY29sbGFwc2VQYW5lbE9uQW5pbWF0aW9uRG9uZShoKSl9KSxnZSgxLCJkaXYiLDE0KSxJcigyLDIpLG1lKCkoKX0yJmwmJlJlKCJAdG9nZ2xlIix2b2lkIDApfWZ1bmN0aW9uICRSZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDAp''@;'; put 'put ''LGdlKDEsImRpdiIsMikoMiwiZGl2IiwzKSgzLCJidXR0b24iLDQsMCksZ2EoNSwiYXN5bmMiKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkudG9nZ2xlUGFuZWwoKSl9KSxnZSg2LCJzcGFuIiw1KSxZdCg3LCJjZHMtaWNvbiIsNiksZ2UoOCwic3BhbiIsNyks''@;'; put 'put ''UGUoOSksbWUoKSxZdCgxMCwiY2RzLWljb24iLDgpKDExLCJjZHMtaWNvbiIsOSksbWUoKSxJcigxMiksSXIoMTMsMSksbWUoKSxnZSgxNCwiZGl2IiwxMCksZ3QoMTUsWVJlLDIsMSwibmctY29udGFpbmVyIiwxKSgxNixXUmUsMiwxLCJuZy1jb250YWluZXIiLDEpLG1lKCkoKSxnZSgxNywi''@;'; put 'put ''ZGl2IiwxMSksZ3QoMTgsR1JlLDMsMSwiZGl2IiwxMiksbWUoKSgpLEJyKCl9aWYoMiZsKXtsZXQgYTtjb25zdCBkPWMuJGltcGxpY2l0LGg9TmUoKTtfZSgpLFJlKCJuZ0NsYXNzIixoLmdldFBhbmVsU3RhdGVDbGFzc2VzKGQpKSxfZSgyKSxwcigiY2xyLWFjY29yZGlvbi1oZWFkZXItaGFz''@;'; put 'put ''LWRlc2NyaXB0aW9uIiwobnVsbD09KGE9VWwoNSwxNixoLmFjY29yZGlvbkRlc2NyaXB0aW9uLmNoYW5nZXMpKT9udWxsOmEubGVuZ3RoKXx8aC5hY2NvcmRpb25EZXNjcmlwdGlvbi5sZW5ndGgpLFJlKCJpZCIsaC5nZXRBY2NvcmRpb25IZWFkZXJJZChkLnRlbXBsYXRlSWQpKSgiZGlzYWJs''@;'; put 'put ''ZWQiLGguaXNBY2NvcmRpb24mJmQuZGlzYWJsZWQpLHVyKCJhcmlhLWRpc2FibGVkIiwhaC5pc0FjY29yZGlvbiYmZC5kaXNhYmxlZCkoImFyaWEtY29udHJvbHMiLGguZ2V0QWNjb3JkaW9uQ29udGVudElkKGQudGVtcGxhdGVJZCkpKCJhcmlhLWV4cGFuZGVkIixkLm9wZW4pLF9lKDYpLG1y''@;'; put 'put ''KCIiLGgucGFuZWxOdW1iZXIsIi4iKSxfZSg2KSxSZSgibmdJZiIsZC5zdGF0dXM9PT1oLkFjY29yZGlvblN0YXR1cy5FcnJvciksX2UoKSxSZSgibmdJZiIsZC5zdGF0dXM9PT1oLkFjY29yZGlvblN0YXR1cy5Db21wbGV0ZSksX2UoKSxSZSgiQHNraXBJbml0aWFsUmVuZGVyIix2b2lkIDAp''@;'; put 'put ''KCJpZCIsaC5nZXRBY2NvcmRpb25Db250ZW50SWQoZC50ZW1wbGF0ZUlkKSksdXIoImFyaWEtaGlkZGVuIiwhZC5vcGVuKSgiYXJpYS1sYWJlbGxlZGJ5IixoLmdldEFjY29yZGlvbkhlYWRlcklkKGQudGVtcGxhdGVJZCkpLF9lKCksUmUoIm5nSWYiLGQub3Blbil9fWNvbnN0IGhMZT1bImNs''@;'; put 'put ''ckxvYWRpbmciLCIiXTtmdW5jdGlvbiBmTGUobCxjKXsxJmwmJihWcigwKSxZdCgxLCJzcGFuIiwzKSxCcigpKSwyJmwmJihfZSgpLFJlKCJAc3Bpbm5lciIsdm9pZCAwKSl9ZnVuY3Rpb24gcExlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwic3BhbiIsNCksSXQoIkB2''@;'; put 'put ''YWxpZGF0ZWQuZG9uZSIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCk7cmV0dXJuIGJ0KGgubG9hZGluZ1N0YXRlQ2hhbmdlKGguYnV0dG9uU3RhdGUuREVGQVVMVCkpfSksbWUoKSxCcigpfTImbCYmKF9lKCksUmUoIkB2YWxpZGF0ZWQiLHZvaWQgMCkpfWZ1bmN0aW9uIGdMZShsLGMp''@;'; put 'put ''ezEmbCYmKGdlKDAsInNwYW4iLDUpLElyKDEpLG1lKCkpLDImbCYmUmUoIkBkZWZhdWx0QnV0dG9uIix2b2lkIDApfWNvbnN0IG1MZT1bW1siIiwiY2xyQ2hlY2tib3giLCIiXSxbIiIsImNsclRvZ2dsZSIsIiJdXSxbWyJsYWJlbCJdXV0sdkxlPVsiW2NsckNoZWNrYm94XSxbY2xyVG9nZ2xl''@;'; put 'put ''XSIsImxhYmVsIl07ZnVuY3Rpb24gX0xlKGwsYyl7MSZsJiZZdCgwLCJsYWJlbCIpfWNvbnN0IGJMZT1bW1sibGFiZWwiXV0sW1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJy''@;'; put 'put ''b3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0seUxlPVsibGFiZWwiLCJjbHItY2hlY2tib3gtd3JhcHBlcixjbHItdG9nZ2xlLXdyYXBwZXIiLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiB3TGUo''@;'; put 'put ''bCxjKXsxJmwmJll0KDAsImxhYmVsIil9ZnVuY3Rpb24gQ0xlKGwsYyl7MSZsJiZJcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gU0xlKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gTUxlKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNil9ZnVu''@;'; put 'put ''Y3Rpb24geExlKGwsYyl7MSZsJiZJcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIEVMZShsLGMpezEmbCYmSXIoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3QgVExlPVsiY2xyS2V5Rm9jdXMiLCIiXSxSTGU9W1tbImxhYmVsIl1dLFtbIiIsImNscklucHV0''@;'; put 'put ''IiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxMTGU9WyJsYWJlbCIsIltjbHJJbnB1dF0iLCJjbHItY29udHJvbC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1''@;'; put 'put ''Y2Nlc3MiXTtmdW5jdGlvbiBPTGUobCxjKXsxJmwmJll0KDAsImxhYmVsIil9ZnVuY3Rpb24gUExlKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gRkxlKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gTkxlKGwsYyl7MSZsJiZJcigwLDIsWyIqbmdJ''@;'; put 'put ''ZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gSExlKGwsYyl7MSZsJiZJcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIFZMZShsLGMpezEmbCYmSXIoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9ZnVuY3Rpb24gQkxlKGwsYyl7aWYoMSZsJiYoZ2UoMCwidGgiLDQp''@;'; put 'put ''KDEsInNwYW4iKSxQZSgyKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLHVyKCJhcmlhLWxhYmVsIixhLmRheSksX2UoKSxscihhLm5hcnJvdyl9fWZ1bmN0aW9uIGpMZShsLGMpe2lmKDEmbCYmKGdlKDAsInRkIiw3KSxZdCgxLCJjbHItZGF5Iiw4KSxtZSgpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgiY2xyRGF5VmlldyIsYSl9fWZ1bmN0aW9uIHpMZShsLGMpe2lmKDEmbCYmKGdlKDAsInRyIiw1KSxndCgxLGpMZSwyLDEsInRkIiw2KSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdGb3JPZiIsYSl9fWZ1bmN0''@;'; put 'put ''aW9uIFVMZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMSksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuaW5kZXg7cmV0dXJuIGJ0KE5lKCkuY2hhbmdlTW9udGgoaCkpfSksUGUoMSksbWUoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQs''@;'; put 'put ''ZD1jLmluZGV4LGg9TmUoKTtwcigiaXMtc2VsZWN0ZWQiLGQ9PT1oLmNhbGVuZGFyTW9udGhJbmRleCksdXIoInRhYmluZGV4IixoLmdldFRhYkluZGV4KGQpKSxfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIFpMZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIs''@;'; put 'put ''NyksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuJGltcGxpY2l0O3JldHVybiBidChOZSgpLmNoYW5nZVllYXIoaCkpfSksUGUoMSksbWUoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgpO3ByKCJpcy1zZWxlY3RlZCIsYT09PWQuY2FsZW5kYXJZZWFyKSx1''@;'; put 'put ''cigidGFiaW5kZXgiLGQuZ2V0VGFiSW5kZXgoYSkpLF9lKCksbXIoIiAiLGEsIiAiKX19ZnVuY3Rpb24gWUxlKGwsYyl7MSZsJiZZdCgwLCJjbHItbW9udGhwaWNrZXIiKX1mdW5jdGlvbiBXTGUobCxjKXsxJmwmJll0KDAsImNsci15ZWFycGlja2VyIil9ZnVuY3Rpb24gR0xlKGwsYyl7MSZs''@;'; put 'put ''JiZZdCgwLCJjbHItZGF5cGlja2VyIil9Y29uc3QgJExlPVsiYWN0aW9uQnV0dG9uIl0scUxlPVtbWyJsYWJlbCJdXSxbWyIiLCJjbHJEYXRlIiwiIl1dLFtbImNsci1jb250cm9sLWhlbHBlciJdXSxbWyJjbHItY29udHJvbC1lcnJvciJdXSxbWyJjbHItY29udHJvbC1zdWNjZXNzIl1dXSxL''@;'; put 'put ''TGU9WyJsYWJlbCIsIltjbHJEYXRlXSIsImNsci1jb250cm9sLWhlbHBlciIsImNsci1jb250cm9sLWVycm9yIiwiY2xyLWNvbnRyb2wtc3VjY2VzcyJdO2Z1bmN0aW9uIFhMZShsLGMpezEmbCYmWXQoMCwibGFiZWwiKX1mdW5jdGlvbiBKTGUobCxjKXsxJmwmJihnZSgwLCJidXR0b24iLDks''@;'; put 'put ''MCksWXQoMiwiY2RzLWljb24iLDEwKSxtZSgpKSwyJmwmJlJlKCJkaXNhYmxlZCIsTmUoKS5pc0lucHV0RGF0ZURpc2FibGVkKX1mdW5jdGlvbiBRTGUobCxjKXsxJmwmJll0KDAsImNsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlciIsMTEpfWZ1bmN0aW9uIGVPZShsLGMpezEmbCYmWXQoMCwi''@;'; put 'put ''Y2RzLWljb24iLDEyKX1mdW5jdGlvbiB0T2UobCxjKXsxJmwmJll0KDAsImNkcy1pY29uIiwxMyl9ZnVuY3Rpb24gbk9lKGwsYyl7MSZsJiZJcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gck9lKGwsYyl7MSZsJiZJcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0p''@;'; put 'put ''fWZ1bmN0aW9uIGlPZShsLGMpezEmbCYmSXIoMCw0LFsiKm5nSWYiLCJzaG93VmFsaWQiXSl9Y29uc3Qgb09lPVtbWyIiLCJjbHJSYWRpbyIsIiJdXSxbWyJsYWJlbCJdXV0sc09lPVsiW2NsclJhZGlvXSIsImxhYmVsIl07ZnVuY3Rpb24gYU9lKGwsYyl7MSZsJiZZdCgwLCJsYWJlbCIpfWNv''@;'; put 'put ''bnN0IGxPZT1bW1sibGFiZWwiXV0sW1siY2xyLXJhZGlvLXdyYXBwZXIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLGNPZT1bImxhYmVsIiwiY2xyLXJhZGlvLXdyYXBwZXIiLCJjbHItY29udHJv''@;'; put 'put ''bC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiB1T2UobCxjKXsxJmwmJll0KDAsImxhYmVsIil9ZnVuY3Rpb24gZE9lKGwsYyl7MSZsJiZJcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gaE9lKGwsYyl7MSZs''@;'; put 'put ''JiZZdCgwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24gZk9lKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNil9ZnVuY3Rpb24gcE9lKGwsYyl7MSZsJiZJcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIGdPZShsLGMpezEmbCYmSXIoMCw0LFsiKm5nSWYiLCJzaG93VmFs''@;'; put 'put ''aWQiXSl9Y29uc3QgbU9lPVtbWyJsYWJlbCJdXSxbWyIiLCJjbHJTZWxlY3QiLCIiXV0sW1siY2xyLWNvbnRyb2wtaGVscGVyIl1dLFtbImNsci1jb250cm9sLWVycm9yIl1dLFtbImNsci1jb250cm9sLXN1Y2Nlc3MiXV1dLHZPZT1bImxhYmVsIiwiW2NsclNlbGVjdF0iLCJjbHItY29udHJv''@;'; put 'put ''bC1oZWxwZXIiLCJjbHItY29udHJvbC1lcnJvciIsImNsci1jb250cm9sLXN1Y2Nlc3MiXTtmdW5jdGlvbiBfT2UobCxjKXsxJmwmJll0KDAsImxhYmVsIil9ZnVuY3Rpb24gYk9lKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNSl9ZnVuY3Rpb24geU9lKGwsYyl7MSZsJiZZdCgwLCJjZHMt''@;'; put 'put ''aWNvbiIsNil9ZnVuY3Rpb24gd09lKGwsYyl7MSZsJiZJcigwLDIsWyIqbmdJZiIsInNob3dIZWxwZXIiXSl9ZnVuY3Rpb24gQ09lKGwsYyl7MSZsJiZJcigwLDMsWyIqbmdJZiIsInNob3dJbnZhbGlkIl0pfWZ1bmN0aW9uIFNPZShsLGMpezEmbCYmSXIoMCw0LFsiKm5nSWYiLCJzaG93VmFs''@;'; put 'put ''aWQiXSl9Y29uc3QgTU9lPVtbWyJsYWJlbCJdXSxbWyIiLCJjbHJUZXh0YXJlYSIsIiJdXSxbWyJjbHItY29udHJvbC1oZWxwZXIiXV0sW1siY2xyLWNvbnRyb2wtZXJyb3IiXV0sW1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXV0seE9lPVsibGFiZWwiLCJbY2xyVGV4dGFyZWFdIiwiY2xyLWNv''@;'; put 'put ''bnRyb2wtaGVscGVyIiwiY2xyLWNvbnRyb2wtZXJyb3IiLCJjbHItY29udHJvbC1zdWNjZXNzIl07ZnVuY3Rpb24gRU9lKGwsYyl7MSZsJiZZdCgwLCJsYWJlbCIpfWZ1bmN0aW9uIFRPZShsLGMpezEmbCYmWXQoMCwiY2RzLWljb24iLDUpfWZ1bmN0aW9uIGtPZShsLGMpezEmbCYmWXQoMCwi''@;'; put 'put ''Y2RzLWljb24iLDYpfWZ1bmN0aW9uIEFPZShsLGMpezEmbCYmSXIoMCwyLFsiKm5nSWYiLCJzaG93SGVscGVyIl0pfWZ1bmN0aW9uIERPZShsLGMpezEmbCYmSXIoMCwzLFsiKm5nSWYiLCJzaG93SW52YWxpZCJdKX1mdW5jdGlvbiBJT2UobCxjKXsxJmwmJklyKDAsNCxbIipuZ0lmIiwic2hv''@;'; put 'put ''d1ZhbGlkIl0pfWNvbnN0IFJPZT1bImFuY2hvciJdO2Z1bmN0aW9uIExPZShsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNCkoMSwiZGl2Iiw1KSgyLCJidXR0b24iLDYpLFl0KDMsImNkcy1pY29uIiw3KSxtZSgpKCksSXIoNCksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7UmUoImlkIixhLnBv''@;'; put 'put ''cG92ZXJJZCksdXIoImFyaWEtbGFiZWwiLGEuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGFncmlkRmlsdGVyRGlhbG9nQXJpYUxhYmVsKSxfZSgzKSx1cigidGl0bGUiLGEuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKX19Y29uc3QgT09lPVsiaW5wdXRfbG93Il0sUE9lPVsiaW5wdXQiXSxGT2U9''@;'; put 'put ''WyJjb2x1bW5Qb3J0YWwiXTtmdW5jdGlvbiBOT2UobCxjKXsxJmwmJklyKDApfWNvbnN0IEhPZT1bInJlc2l6ZVRyYWNrZXIiXSxWT2U9WyJjb2x1bW5IYW5kbGUiXSxCT2U9W1tbImNsci1kZy1maWx0ZXIiXSxbImNsci1kZy1zdHJpbmctZmlsdGVyIl0sWyJjbHItZGctbnVtZXJpYy1maWx0''@;'; put 'put ''ZXIiXV0sIioiXSxqT2U9WyJjbHItZGctZmlsdGVyLCBjbHItZGctc3RyaW5nLWZpbHRlciwgY2xyLWRnLW51bWVyaWMtZmlsdGVyIiwiKiJdO2Z1bmN0aW9uIHpPZShsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24gVU9lKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsMTApLDImbCYmdXIoImRp''@;'; put 'put ''cmVjdGlvbiIsTmUoMikuc29ydERpcmVjdGlvbil9ZnVuY3Rpb24gWk9lKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiw3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuc29ydCgpKX0pLGd0KDEsek9lLDEsMCwibmctY29udGFpbmVy''@;'; put 'put ''Iiw4KSgyLFVPZSwxLDEsImNkcy1pY29uIiw5KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLGQ9R2koNik7X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZCksX2UoKSxSZSgibmdJZiIsYS5zb3J0RGlyZWN0aW9uKX19ZnVuY3Rpb24gWU9lKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7''@;'; put 'put ''Z2UoMCwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDExKSxXcigiY2xyRmlsdGVyVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5maWx0ZXJWYWx1ZSxoKXx8KGYuZmlsdGVyVmFsdWU9aCksYnQoaCl9KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1O''@;'; put 'put ''ZSgpO1JlKCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsYS5maWx0ZXJTdHJpbmdQbGFjZWhvbGRlcikoImNsckRnU3RyaW5nRmlsdGVyIixhLnJlZ2lzdGVyZWQpLFlyKCJjbHJGaWx0ZXJWYWx1ZSIsYS5maWx0ZXJWYWx1ZSl9fWZ1bmN0aW9uIFdPZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1Tbigp''@;'; put 'put ''O2dlKDAsImNsci1kZy1udW1lcmljLWZpbHRlciIsMTIpLFdyKCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpO3JldHVybiBHcihmLmZpbHRlclZhbHVlLGgpfHwoZi5maWx0ZXJWYWx1ZT1oKSxidChoKX0pLG1lKCl9aWYoMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKCk7UmUoImNsckZpbHRlck1heFBsYWNlaG9sZGVyIixhLmZpbHRlck51bWJlck1heFBsYWNlaG9sZGVyKSgiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLGEuZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXIpKCJjbHJEZ051bWVyaWNGaWx0ZXIiLGEucmVnaXN0ZXJlZCksWXIoImNsckZp''@;'; put 'put ''bHRlclZhbHVlIixhLmZpbHRlclZhbHVlKX19ZnVuY3Rpb24gR09lKGwsYyl7MSZsJiZJcigwLDEpfWZ1bmN0aW9uICRPZShsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24gcU9lKGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIsMTMpLGd0KDEsJE9lLDEsMCwibmctY29udGFpbmVyIiw4KSxtZSgp''@;'; put 'put ''KSwyJmwpe05lKCk7Y29uc3QgYT1HaSg2KTtfZSgpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixhKX19ZnVuY3Rpb24gS09lKGwsYyl7MSZsJiZZdCgwLCJjbHItZGctY29sdW1uLXNlcGFyYXRvciIpfWZ1bmN0aW9uIFhPZShsLGMpezEmbCYmWXQoMCwiZGl2Iiw0KX1mdW5jdGlvbiBKT2UobCxj''@;'; put 'put ''KXsxJmwmJklyKDAsMCxbIipuZ0lmIiwiZW1wdHlEYXRhZ3JpZCJdKX1mdW5jdGlvbiBRT2UobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJidXR0b24iLDEpLFl0KDIsImNkcy1pY29uIiwyKSxtZSgpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKCksdXIoImFyaWEtbGFiZWwiLGEuY29t''@;'; put 'put ''bW9uU3RyaW5ncy5rZXlzLnNpZ25wb3N0VG9nZ2xlKSxfZSgpLHVyKCJ0aXRsZSIsYS5jb21tb25TdHJpbmdzLmtleXMuaW5mbyl9fWNvbnN0IGVQZT1bImNlbGxQb3J0YWwiXTtmdW5jdGlvbiB0UGUobCxjKXsxJmwmJklyKDApfWNvbnN0IG5QZT1bInJvd1BvcnRhbCJdO2Z1bmN0aW9uIHJQ''@;'; put 'put ''ZShsLGMpezEmbCYmSXIoMCl9Y29uc3QgaVBlPVsiZGV0YWlsQnV0dG9uIl0sb1BlPVsic3RpY2t5Q2VsbHMiXSxzUGU9WyJzY3JvbGxhYmxlQ2VsbHMiXSxhUGU9WyJjYWxjdWxhdGVkQ2VsbHMiXSxsUGU9W1tbImNsci1kZy1yb3ctZGV0YWlsIl1dLFtbImNsci1kZy1jZWxsIl1dLFtbImNs''@;'; put 'put ''ci1kZy1hY3Rpb24tb3ZlcmZsb3ciXV1dLGNQZT1bImNsci1kZy1yb3ctZGV0YWlsIiwiY2xyLWRnLWNlbGwiLCJjbHItZGctYWN0aW9uLW92ZXJmbG93Il0sdVBlPWw9Pih7ImlzLXJlcGxhY2VkIjpsfSksT2NlPWw9Pih7ImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiOmx9KTtmdW5jdGlv''@;'; put 'put ''biBkUGUobCxjKXt9ZnVuY3Rpb24gaFBlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxMCksZ3QoMSxkUGUsMCwwLCJuZy10ZW1wbGF0ZSIsMTEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKSxkPUdpKDYpO1JlKCJjbHJFeHBhbmRUcmlnZ2VyIixhLmV4''@;'; put 'put ''cGFuZEFuaW1hdGlvblRyaWdnZXIpLF9lKCksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGQpfX1mdW5jdGlvbiBmUGUobCxjKXt9ZnVuY3Rpb24gcFBlKGwsYyl7MSZsJiZndCgwLGZQZSwwLDAsIm5nLXRlbXBsYXRlIiwxMSksMiZsJiYoTmUoMiksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLEdpKDYp''@;'; put 'put ''KSl9ZnVuY3Rpb24gZ1BlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw5KSxJdCgibW91c2Vkb3duIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5jbGVhclJhbmdlcyhoKSl9KSgiY2xpY2siLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1''@;'; put 'put ''cm4gYnQoZi5zZWxlY3RSb3coIWYuc2VsZWN0ZWQsaCkpfSksZ3QoMSxoUGUsMiwyLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDcpKDIscFBlLDEsMSxudWxsLDgpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsYS5leHBhbmQuZXhwYW5kYWJsZSksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsIWEuZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBtUGUobCxjKXt9ZnVuY3Rpb24gdlBlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWV4cGFuZGFibGUtYW5pbWF0aW9uIiwxMCksZ3QoMSxtUGUsMCwwLCJuZy10ZW1wbGF0ZSIsMTEpLG1lKCkpLDImbCl7Y29uc3QgYT1O''@;'; put 'put ''ZSgpLGQ9R2koNik7UmUoImNsckV4cGFuZFRyaWdnZXIiLGEuZXhwYW5kQW5pbWF0aW9uVHJpZ2dlciksX2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZCl9fWZ1bmN0aW9uIF9QZShsLGMpe31mdW5jdGlvbiBiUGUobCxjKXsxJmwmJmd0KDAsX1BlLDAsMCwibmctdGVtcGxhdGUiLDExKSwy''@;'; put 'put ''JmwmJihOZSgpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixHaSg2KSkpfWZ1bmN0aW9uIHlQZShsLGMpezEmbCYmSXIoMCl9ZnVuY3Rpb24gd1BlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwyMCkoMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgyLCJpbnB1dCIsMjEpLEl0''@;'; put 'put ''KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoMikudG9nZ2xlKGgpKX0pLG1lKCksZ2UoMywibGFiZWwiLDIyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSgyKS5jbGVhclJhbmdlcyhoKSl9KSxnZSg0LCJzcGFuIiwyMyks''@;'; put 'put ''UGUoNSksbWUoKSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoMik7UmUoIm5nQ2xhc3MiLGgzKDcsT2NlLCFhLmNsckRnU2VsZWN0YWJsZSkpLF9lKDIpLFJlKCJuZ01vZGVsIixhLnNlbGVjdGVkKSgiaWQiLGEuY2hlY2tib3hJZCkoImRpc2FibGVkIiwhYS5jbHJEZ1NlbGVjdGFibGV8fG51''@;'; put 'put ''bGwpLHVyKCJhcmlhLWRpc2FibGVkIiwhYS5jbHJEZ1NlbGVjdGFibGV8fG51bGwpLF9lKCksUmUoImZvciIsYS5jaGVja2JveElkKSxfZSgyKSxscihhLmNsckRnUm93U2VsZWN0aW9uTGFiZWx8fGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdCl9fWZ1bmN0aW9uIENQZShsLGMpe2lmKDEm''@;'; put 'put ''bCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMjApKDEsImNsci1yYWRpby13cmFwcGVyIikoMiwiaW5wdXQiLDI0KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKTtyZXR1cm4gR3IoZi5zZWxlY3Rpb24uY3VycmVudFNpbmdsZSxoKXx8KGYuc2Vs''@;'; put 'put ''ZWN0aW9uLmN1cnJlbnRTaW5nbGU9aCksYnQoaCl9KSxtZSgpLGdlKDMsImxhYmVsIiwyNSkoNCwic3BhbiIsMjMpLFBlKDUpLG1lKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO1JlKCJuZ0NsYXNzIixoMygxMCxPY2UsIWEuY2xyRGdTZWxlY3RhYmxlKSksX2UoMiksUmUoImlkIixh''@;'; put 'put ''LnJhZGlvSWQpKCJuYW1lIixhLnNlbGVjdGlvbi5pZCsiLXJhZGlvIikoInZhbHVlIixhLml0ZW0pLFlyKCJuZ01vZGVsIixhLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlKSxSZSgiY2hlY2tlZCIsYS5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT09PWEuaXRlbSkoImRpc2FibGVkIiwhYS5jbHJE''@;'; put 'put ''Z1NlbGVjdGFibGV8fG51bGwpLHVyKCJhcmlhLWRpc2FibGVkIiwhYS5jbHJEZ1NlbGVjdGFibGV8fG51bGwpLF9lKCksUmUoImZvciIsYS5yYWRpb0lkKSxfZSgyKSxscihhLmNsckRnUm93U2VsZWN0aW9uTGFiZWx8fGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdCl9fWZ1bmN0aW9uIFNQ''@;'; put 'put ''ZShsLGMpezEmbCYmKGdlKDAsImRpdiIsMjYpLElyKDEsMiksbWUoKSl9ZnVuY3Rpb24gTVBlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiwzMCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSg0KS50b2dnbGVFeHBhbmQoKSl9KSxZdCgx''@;'; put 'put ''LCJjZHMtaWNvbiIsMzEpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKDQpO3VyKCJhcmlhLWV4cGFuZGVkIixhLmV4cGFuZC5leHBhbmRlZCkoImFyaWEtbGFiZWwiLGEuZXhwYW5kLmV4cGFuZGVkP2EuY2xyRGdEZXRhaWxDbG9zZUxhYmVsOmEuY2xyRGdEZXRhaWxPcGVuTGFiZWwpKCJhcmlh''@;'; put 'put ''LWNvbnRyb2xzIixhLmV4cGFuZGFibGVJZCksX2UoKSx1cigiZGlyZWN0aW9uIixhLmV4cGFuZC5leHBhbmRlZD8iZG93biI6InJpZ2h0IikoInRpdGxlIixhLmV4cGFuZC5leHBhbmRlZD9hLmNvbW1vblN0cmluZ3Mua2V5cy5jb2xsYXBzZTphLmNvbW1vblN0cmluZ3Mua2V5cy5leHBhbmQp''@;'; put 'put ''fX1mdW5jdGlvbiB4UGUobCxjKXtpZigxJmwmJihnZSgwLCJjbHItc3Bpbm5lciIsMzIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSg0KTtfZSgpLGxyKGEuY29tbW9uU3RyaW5ncy5rZXlzLmxvYWRpbmcpfX1mdW5jdGlvbiBFUGUobCxjKXtpZigxJmwmJihWcigwKSxndCgxLE1QZSwy''@;'; put 'put ''LDUsImJ1dHRvbiIsMjgpKDIseFBlLDIsMSwiY2xyLXNwaW5uZXIiLDI5KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxSZSgibmdJZiIsIWEuZXhwYW5kLmxvYWRpbmcpLF9lKCksUmUoIm5nSWYiLGEuZXhwYW5kLmxvYWRpbmcpfX1mdW5jdGlvbiBUUGUobCxjKXtpZigxJmwmJihn''@;'; put 'put ''ZSgwLCJkaXYiLDI3KSxndCgxLEVQZSwzLDIsIm5nLWNvbnRhaW5lciIsOCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLGEuZXhwYW5kLmV4cGFuZGFibGUpfX1mdW5jdGlvbiBrUGUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDMzKSgxLCJi''@;'; put 'put ''dXR0b24iLDM0LDUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPUdpKDIpLGY9TmUoMik7cmV0dXJuIGJ0KGYuZGV0YWlsU2VydmljZS50b2dnbGUoZi5pdGVtLGgpKX0pLFl0KDMsImNkcy1pY29uIiwzNSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSgpLHBy''@;'; put 'put ''KCJpcy1vcGVuIixhLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGEuaXRlbSkpLHVyKCJhcmlhLWxhYmVsIixhLmRldGFpbFNlcnZpY2UuaXNSb3dPcGVuKGEuaXRlbSk/YS5jbHJEZ0RldGFpbENsb3NlTGFiZWw6YS5jbHJEZ0RldGFpbE9wZW5MYWJlbCkoImFyaWEtZXhwYW5kZWQiLGEuZGV0''@;'; put 'put ''YWlsU2VydmljZS5pc1Jvd09wZW4oYS5pdGVtKSkoImFyaWEtY29udHJvbHMiLGEuZGV0YWlsU2VydmljZS5pZCksX2UoMiksdXIoImRpcmVjdGlvbiIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3BlbihhLml0ZW0pPyJsZWZ0IjoicmlnaHQiKSgidGl0bGUiLGEuZGV0YWlsU2VydmljZS5pc1Jv''@;'; put 'put ''d09wZW4oYS5pdGVtKT9hLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZTphLmNvbW1vblN0cmluZ3Mua2V5cy5vcGVuKX19ZnVuY3Rpb24gQVBlKGwsYyl7fWZ1bmN0aW9uIERQZShsLGMpezEmbCYmZ3QoMCxBUGUsMCwwLCJuZy10ZW1wbGF0ZSIsMTEpLDImbCYmKE5lKDIpLFJlKCJuZ1RlbXBs''@;'; put 'put ''YXRlT3V0bGV0IixHaSg0KSkpfWZ1bmN0aW9uIElQZShsLGMpe31mdW5jdGlvbiBSUGUobCxjKXsxJmwmJmd0KDAsSVBlLDAsMCwibmctdGVtcGxhdGUiLDExKSwyJmwmJihOZSgyKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsR2koNCkpKX1mdW5jdGlvbiBMUGUobCxjKXtpZigxJmwmJihnZSgw''@;'; put 'put ''LCJkaXYiLDEyKSgxLCJkaXYiLDEzKSxWcigyLG51bGwsMyksZ3QoNCx3UGUsNiw5LCJkaXYiLDE0KSg1LENQZSw2LDEyLCJkaXYiLDE0KSg2LFNQZSwyLDAsImRpdiIsMTUpKDcsVFBlLDIsMSwiZGl2IiwxNikoOCxrUGUsNCw3LCJkaXYiLDE3KSxCcigpLG1lKCksZ2UoOSwiZGl2IiwxOCko''@;'; put 'put ''MTAsImRpdiIsMTkpLElyKDExLDEpLHpsKDEyLG51bGwsNCksbWUoKSxndCgxNCxEUGUsMSwxLG51bGwsOCkoMTUsUlBlLDEsMSxudWxsLDgpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7cHIoImRhdGFncmlkLXJvdy1kZXRhaWwtb3BlbiIsYS5kZXRhaWxTZXJ2aWNlLmlzUm93T3Blbihh''@;'; put 'put ''Lml0ZW0pKSxSZSgiaWQiLGEuaWQpLF9lKDQpLFJlKCJuZ0lmIixhLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09YS5TRUxFQ1RJT05fVFlQRS5NdWx0aSksX2UoKSxSZSgibmdJZiIsYS5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWEuU0VMRUNUSU9OX1RZUEUuU2luZ2xlKSxfZSgpLFJl''@;'; put 'put ''KCJuZ0lmIixhLnJvd0FjdGlvblNlcnZpY2UuaGFzQWN0aW9uYWJsZVJvdyksX2UoKSxSZSgibmdJZiIsYS5nbG9iYWxFeHBhbmRhYmxlLmhhc0V4cGFuZGFibGVSb3cpLF9lKCksUmUoIm5nSWYiLGEuZGV0YWlsU2VydmljZS5lbmFibGVkKSxfZSgpLFJlKCJuZ0NsYXNzIixoMygxMSx1UGUs''@;'; put 'put ''YS5yZXBsYWNlZCYmYS5leHBhbmRlZCkpLF9lKDUpLFJlKCJuZ0lmIixhLnJlcGxhY2VkJiYhYS5leHBhbmQubG9hZGluZyksX2UoKSxSZSgibmdJZiIsIWEucmVwbGFjZWQmJiFhLmV4cGFuZC5sb2FkaW5nKX19Y29uc3QgT1BlPVsiZGF0YWdyaWQiXSxQUGU9WyJkYXRhZ3JpZFRhYmxlIl0s''@;'; put 'put ''RlBlPVsic2Nyb2xsYWJsZUNvbHVtbnMiXSxOUGU9WyJwcm9qZWN0ZWREaXNwbGF5Q29sdW1ucyJdLEhQZT1bInByb2plY3RlZENhbGN1bGF0aW9uQ29sdW1ucyJdLFZQZT1bImRpc3BsYXllZFJvd3MiXSxCUGU9WyJjYWxjdWxhdGlvblJvd3MiXSxqUGU9W1tbImNsci1kZy1hY3Rpb24tYmFy''@;'; put 'put ''Il1dLFtbImNsci1kZy1wbGFjZWhvbGRlciJdXSxbWyJjbHItZGctZm9vdGVyIl1dLFtbIiIsImNscklmRGV0YWlsIiwiIl0sWyJjbHItZGctZGV0YWlsIl1dXSx6UGU9WyJjbHItZGctYWN0aW9uLWJhciIsImNsci1kZy1wbGFjZWhvbGRlciIsImNsci1kZy1mb290ZXIiLCJbY2xySWZEZXRh''@;'; put 'put ''aWxdLGNsci1kZy1kZXRhaWwiXTtmdW5jdGlvbiBVUGUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDI5KSgxLCJpbnB1dCIsMzApLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpO3JldHVybiBHcihmLmFsbFNlbGVjdGVkLGgp''@;'; put 'put ''fHwoZi5hbGxTZWxlY3RlZD1oKSxidChoKX0pLG1lKCksZ2UoMiwibGFiZWwiLDMxKSgzLCJzcGFuIiwzMiksUGUoNCksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoImlkIixhLnNlbGVjdEFsbElkKSxZcigibmdNb2RlbCIsYS5hbGxTZWxlY3RlZCksdXIoImFyaWEt''@;'; put 'put ''bGFiZWwiLGEuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCksX2UoKSxSZSgiZm9yIixhLnNlbGVjdEFsbElkKSxfZSgyKSxscihhLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RBbGwpfX1mdW5jdGlvbiBaUGUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDI2KSxJ''@;'; put 'put ''dCgia2V5ZG93bi5zcGFjZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpO3JldHVybiBmLmFsbFNlbGVjdGVkPSFmLmFsbFNlbGVjdGVkLGJ0KGgucHJldmVudERlZmF1bHQoKSl9KSxndCgxLFVQZSw1LDUsImRpdiIsMjcpLFl0KDIsImRpdiIsMjgpLG1lKCl9aWYoMiZsKXtjb25z''@;'; put 'put ''dCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEuaGFzVmlydHVhbFNjcm9sbGVyKX19ZnVuY3Rpb24gWVBlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwzMykoMSwiZGl2IiwzMiksUGUoMiksbWUoKSxZdCgzLCJkaXYiLDI4KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgyKSxscihhLmNs''@;'; put 'put ''ckRnU2luZ2xlU2VsZWN0aW9uQXJpYUxhYmVsKX19ZnVuY3Rpb24gV1BlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwzNCkoMSwiZGl2IiwzMiksUGUoMiksbWUoKSxZdCgzLCJkaXYiLDI4KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgyKSxscihhLmNsckRnU2luZ2xlQWN0aW9uYWJs''@;'; put 'put ''ZUFyaWFMYWJlbCl9fWZ1bmN0aW9uIEdQZShsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMzUpKDEsImRpdiIsMzIpLFBlKDIpLG1lKCksWXQoMywiZGl2IiwyOCksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMiksbHIoYS5jbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsKX19ZnVuY3Rp''@;'; put 'put ''b24gJFBlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWRnLXJvdyIsMzYpKDEsImNsci1kZy1jZWxsIiwzNyksWXQoMiwiY2xyLXNwaW5uZXIiLDM4KSxnZSgzLCJzcGFuIiksUGUoNCksbWUoKSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDIpLFJlKCJjbHJNZWRpdW0iLCEwKSxfZSgyKSxs''@;'; put 'put ''cihhLmNvbW1vblN0cmluZ3Mua2V5cy5sb2FkaW5nKX19ZnVuY3Rpb24gcVBlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWRnLXJvdyIsMzYpKDEsImNsci1kZy1jZWxsIiwzNyksWXQoMiwiY2xyLXNwaW5uZXIiLDM4KSxnZSgzLCJzcGFuIiksUGUoNCksbWUoKSgpKCkpLDImbCl7Y29uc3Qg''@;'; put 'put ''YT1OZSgpO19lKDIpLFJlKCJjbHJNZWRpdW0iLCEwKSxfZSgyKSxscihhLmNvbW1vblN0cmluZ3Mua2V5cy5sb2FkaW5nKX19ZnVuY3Rpb24gS1BlKGwsYyl7MSZsJiZZdCgwLCJjbHItZGctcGxhY2Vob2xkZXIiKX1mdW5jdGlvbiBYUGUobCxjKXsxJmwmJihnZSgwLCJkaXYiLDM5KSgxLCJj''@;'; put 'put ''bHItc3Bpbm5lciIsNDApLFBlKDIsIkxvYWRpbmciKSxtZSgpKCkpfWNvbnN0IFFQZT1bImFsbFNlbGVjdGVkIl07ZnVuY3Rpb24gZUZlKGwsYyl7fWZ1bmN0aW9uIHRGZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImxpIikoMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgyLCJp''@;'; put 'put ''bnB1dCIsMTMpLEl0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoMikudG9nZ2xlQ29sdW1uU3RhdGUoZiwhaCkpfSksbWUoKSxnZSgzLCJsYWJlbCIpLGd0KDQsZUZlLDAsMCwibmctdGVtcGxhdGUiLDE0KSxtZSgpKCko''@;'; put 'put ''KX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgyKTtfZSgyKSxSZSgiZGlzYWJsZWQiLGQuaGFzT25seU9uZVZpc2libGVDb2x1bW4mJiFhLmhpZGRlbikoIm5nTW9kZWwiLCFhLmhpZGRlbiksX2UoMiksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGEudGl0bGVUZW1wbGF0ZVJlZil9''@;'; put 'put ''fWZ1bmN0aW9uIG5GZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMykoMSwiZGl2Iiw0KSgyLCJkaXYiLDUsMCksUGUoNCksbWUoKSxnZSg1LCJoMiIpLFBlKDYpLG1lKCksZ2UoNywiYnV0dG9uIiw2KSxZdCg4LCJjZHMtaWNvbiIsNyksZ2UoOSwic3BhbiIsOCksUGUo''@;'; put 'put ''MTApLG1lKCkoKSgpLGdlKDExLCJ1bCIsOSksZ3QoMTIsdEZlLDUsMywibGkiLDEwKSxtZSgpLGdlKDEzLCJkaXYiLDExKSgxNCwiY2xyLWRnLWNvbHVtbi10b2dnbGUtYnV0dG9uIiwxMiksSXQoImNsckFsbFNlbGVjdGVkIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmFsbENv''@;'; put 'put ''bHVtbnNTZWxlY3RlZCgpKX0pLG1lKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO1JlKCJpZCIsYS5wb3BvdmVySWQpLHVyKCJhcmlhLWxhYmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5zaG93Q29sdW1uc01lbnVEZXNjcmlwdGlvbiksX2UoNCksbHIoYS5jb21tb25TdHJpbmdzLmtleXMu''@;'; put 'put ''YWxsQ29sdW1uc1NlbGVjdGVkKSxfZSgyKSxscihhLmNvbW1vblN0cmluZ3Mua2V5cy5zaG93Q29sdW1ucyksX2UoKSx1cigiYXJpYS1sYWJlbCIsYS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLF9lKCksdXIoInRpdGxlIixhLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSksX2UoMiksbHIo''@;'; put 'put ''YS5jb21tb25TdHJpbmdzLmtleXMuY2xvc2UpLF9lKDIpLFJlKCJuZ0Zvck9mIixhLmhpZGVhYmxlQ29sdW1uU3RhdGVzKSgibmdGb3JUcmFja0J5IixhLnRyYWNrQnlGbil9fWNvbnN0IGlGZT1bW1siY2xyLWRnLXBhZ2luYXRpb24iXV0sIioiXSxvRmU9WyJjbHItZGctcGFnaW5hdGlvbiIs''@;'; put 'put ''IioiXTtmdW5jdGlvbiBzRmUobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJkaXYiLDEpKDIsImNsci1jaGVja2JveC13cmFwcGVyIiwyKSxZdCgzLCJpbnB1dCIsMyksZ2UoNCwibGFiZWwiKSxQZSg1KSxtZSgpLGdlKDYsInNwYW4iLDQpLFBlKDcpLG1lKCkoKSgpLEJyKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1OZSgpO19lKDUpLGxyKGEuc2VsZWN0aW9uLmN1cnJlbnQubGVuZ3RoKSxfZSgyKSxscihhLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3RlZFJvd3MpfX1mdW5jdGlvbiBhRmUobCxjKXsxJmwmJll0KDAsImNsci1kZy1jb2x1bW4tdG9nZ2xlIil9ZnVuY3Rpb24gbEZlKGwsYyl7aWYo''@;'; put 'put ''MSZsJiYoVnIoMCksZ3QoMSxhRmUsMSwwLCJjbHItZGctY29sdW1uLXRvZ2dsZSIsMCksZ2UoMiwiZGl2Iiw1KSxJcigzLDEpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsYS5oYXNIaWRlYWJsZUNvbHVtbnMpfX1mdW5jdGlvbiBjRmUobCxjKXtpZigxJmwm''@;'; put 'put ''JihnZSgwLCJvcHRpb24iLDQpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgibmdWYWx1ZSIsYSksX2UoKSxscihhKX19Y29uc3QgdUZlPVsiY3VycmVudFBhZ2VJbnB1dCJdLGRGZT1bIioiLFtbImNsci1kZy1wYWdlLXNpemUiXV1dLGhGZT1bIioiLCJjbHItZGct''@;'; put 'put ''cGFnZS1zaXplIl07ZnVuY3Rpb24gZkZlKGwsYyl7MSZsJiYoZ2UoMCwiZGl2Iiw2KSxJcigxLDEpLG1lKCkpfWZ1bmN0aW9uIHBGZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImlucHV0IiwxOCwxKSxJdCgia2V5ZG93bi5lbnRlciIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEp''@;'; put 'put ''LGJ0KE5lKDMpLnVwZGF0ZUN1cnJlbnRQYWdlKGgpKX0pKCJibHVyIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoMykudmVyaWZ5Q3VycmVudFBhZ2UoaCkpfSksbWUoKX1pZigyJmwpe2NvbnN0IGE9TmUoMyk7UmUoInNpemUiLGEucGFnZS5sYXN0LnRvU3RyaW5nKCkubGVuZ3Ro''@;'; put 'put ''KSgidmFsdWUiLGEucGFnZS5jdXJyZW50KSx1cigiYXJpYS1sYWJlbCIsYS5jb21tb25TdHJpbmdzLmtleXMuY3VycmVudFBhZ2UpfX1mdW5jdGlvbiBnRmUobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKCksbHIoYS5wYWdlLmN1''@;'; put 'put ''cnJlbnQpfX1mdW5jdGlvbiBtRmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDcpKDEsImJ1dHRvbiIsOCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5wYWdlLmN1cnJlbnQ9MSl9KSxnZSgyLCJzcGFuIiw5KSxQZSgzKSxtZSgpLFl0''@;'; put 'put ''KDQsImNkcy1pY29uIiwxMCksbWUoKSxnZSg1LCJidXR0b24iLDExKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgyKTtyZXR1cm4gYnQoaC5wYWdlLmN1cnJlbnQ9aC5wYWdlLmN1cnJlbnQtMSl9KSxnZSg2LCJzcGFuIiw5KSxQZSg3KSxtZSgpLFl0KDgsImNkcy1p''@;'; put 'put ''Y29uIiwxMiksbWUoKSxndCg5LHBGZSwyLDMsImlucHV0IiwxMykoMTAsZ0ZlLDIsMSwibmctdGVtcGxhdGUiLG51bGwsMCxidSksUGUoMTIsIiBceGEwL1x4YTAiKSxnZSgxMywic3BhbiIpLFBlKDE0KSxtZSgpLGdlKDE1LCJidXR0b24iLDE0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3Qo''@;'; put 'put ''YSk7Y29uc3QgaD1OZSgyKTtyZXR1cm4gYnQoaC5wYWdlLmN1cnJlbnQ9aC5wYWdlLmN1cnJlbnQrMSl9KSxnZSgxNiwic3BhbiIsOSksUGUoMTcpLG1lKCksWXQoMTgsImNkcy1pY29uIiwxNSksbWUoKSxnZSgxOSwiYnV0dG9uIiwxNiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2Nv''@;'; put 'put ''bnN0IGg9TmUoMik7cmV0dXJuIGJ0KGgucGFnZS5jdXJyZW50PWgucGFnZS5sYXN0KX0pLGdlKDIwLCJzcGFuIiw5KSxQZSgyMSksbWUoKSxZdCgyMiwiY2RzLWljb24iLDE3KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDExKSxkPU5lKDIpO19lKCksUmUoImRpc2FibGVkIixkLnBhZ2Uu''@;'; put 'put ''Y3VycmVudDw9MSksdXIoImFyaWEtbGFiZWwiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmZpcnN0UGFnZSksX2UoMiksbHIoZC5jb21tb25TdHJpbmdzLmtleXMuZmlyc3RQYWdlKSxfZSgyKSxSZSgiZGlzYWJsZWQiLGQucGFnZS5jdXJyZW50PD0xKSx1cigiYXJpYS1sYWJlbCIsZC5jb21tb25T''@;'; put 'put ''dHJpbmdzLmtleXMucHJldmlvdXNQYWdlKSxfZSgyKSxscihkLmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLF9lKDIpLFJlKCJuZ0lmIiwhZC5kaXNhYmxlQ3VycmVudFBhZ2VJbnB1dCkoIm5nSWZFbHNlIixhKSxfZSg0KSx1cigiYXJpYS1sYWJlbCIsZC5jb21tb25TdHJpbmdz''@;'; put 'put ''LmtleXMudG90YWxQYWdlcyksX2UoKSxscihkLnBhZ2UubGFzdCksX2UoKSxSZSgiZGlzYWJsZWQiLGQucGFnZS5jdXJyZW50Pj1kLnBhZ2UubGFzdCksdXIoImFyaWEtbGFiZWwiLGQuY29tbW9uU3RyaW5ncy5rZXlzLm5leHRQYWdlKSxfZSgyKSxscihkLmNvbW1vblN0cmluZ3Mua2V5cy5u''@;'; put 'put ''ZXh0UGFnZSksX2UoMiksUmUoImRpc2FibGVkIixkLnBhZ2UuY3VycmVudD49ZC5wYWdlLmxhc3QpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5sYXN0UGFnZSksX2UoMiksbHIoZC5jb21tb25TdHJpbmdzLmtleXMubGFzdFBhZ2UpfX1mdW5jdGlvbiB2RmUobCxjKXtp''@;'; put 'put ''ZigxJmwmJihWcigwKSxndCgxLGZGZSwyLDAsImRpdiIsMyksZ2UoMiwiZGl2Iiw0KSxJcigzKSxtZSgpLGd0KDQsbUZlLDIzLDE2LCJkaXYiLDUpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKCksUmUoIm5nSWYiLGEuX3BhZ2VTaXplQ29tcG9uZW50KSxfZSgzKSxSZSgibmdJZiIsYS5w''@;'; put 'put ''YWdlLmxhc3Q+MSl9fWZ1bmN0aW9uIF9GZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsImRpdiIsMTkpLFBlKDIpLG1lKCksZ2UoMywiZGl2Iiw3KSg0LCJidXR0b24iLDExKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpO3JldHVybiBidCho''@;'; put 'put ''LnBhZ2UuY3VycmVudD1oLnBhZ2UuY3VycmVudC0xKX0pLGdlKDUsInNwYW4iLDkpLFBlKDYpLG1lKCksWXQoNywiY2RzLWljb24iLDEyKSxtZSgpLGdlKDgsInNwYW4iKSxQZSg5KSxtZSgpLGdlKDEwLCJidXR0b24iLDE0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1O''@;'; put 'put ''ZSgpO3JldHVybiBidChoLnBhZ2UuY3VycmVudD1oLnBhZ2UuY3VycmVudCsxKX0pLGdlKDExLCJzcGFuIiw5KSxQZSgxMiksbWUoKSxZdCgxMywiY2RzLWljb24iLDE1KSxtZSgpKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtfZSgyKSxIMigiICIsYS5wYWdlLmZpcnN0SXRlbSsxLCIt''@;'; put 'put ''IixhLnBhZ2UubGFzdEl0ZW0rMSwiIC8gIixhLnBhZ2UudG90YWxJdGVtcywiICIpLF9lKDIpLFJlKCJkaXNhYmxlZCIsYS5wYWdlLmN1cnJlbnQ8PTEpLHVyKCJhcmlhLWxhYmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5wcmV2aW91c1BhZ2UpLF9lKDIpLGxyKGEuY29tbW9uU3RyaW5ncy5r''@;'; put 'put ''ZXlzLnByZXZpb3VzUGFnZSksX2UoMyksbHIoYS5wYWdlLmN1cnJlbnQpLF9lKCksUmUoImRpc2FibGVkIixhLnBhZ2UuY3VycmVudD49YS5wYWdlLmxhc3QpLHVyKCJhcmlhLWxhYmVsIixhLmNvbW1vblN0cmluZ3Mua2V5cy5uZXh0UGFnZSksX2UoMiksbHIoYS5jb21tb25TdHJpbmdzLmtl''@;'; put 'put ''eXMubmV4dFBhZ2UpfX1jb25zdCBiRmU9W1tbImNsci1zdGFjay1sYWJlbCJdXSwiKiIsW1siY2xyLXN0YWNrLWJsb2NrIl1dXSx5RmU9WyJjbHItc3RhY2stbGFiZWwiLCIqIiwiY2xyLXN0YWNrLWJsb2NrIl07ZnVuY3Rpb24gd0ZlKGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsNyksMiZs''@;'; put 'put ''JiZ1cigiZGlyZWN0aW9uIixOZSgpLmNhcmV0RGlyZWN0aW9uKX1mdW5jdGlvbiBDRmUobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiw4KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLGxyKGEuY29tbW9uU3RyaW5ncy5rZXlzLnN0YWNrVmlld0NoYW5nZWQpfX1mdW5jdGlv''@;'; put 'put ''biBTRmUobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDkpLElyKDEsMiksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7Z2QoImhlaWdodCIsYS5leHBhbmRlZD8iYXV0byI6MCksdXIoImlkIixhLmdldFN0YWNrQ2hpbGRyZW5JZCgpKSgiYXJpYS1sYWJlbGxlZGJ5IixhLmxhYmVsbGVkQnlJZCl9''@;'; put 'put ''fWNvbnN0IE1GZT1bW1siY2xyLXN0YWNrLWhlYWRlciJdXSwiKiJdLHhGZT1bImNsci1zdGFjay1oZWFkZXIiLCIqIl07ZnVuY3Rpb24ga0ZlKGwsYyl7MSZsJiZ6bCgwKX1mdW5jdGlvbiBBRmUobCxjKXtpZigxJmwmJihWcigwKSxndCgxLGtGZSwxLDAsIm5nLWNvbnRhaW5lciIsMiksQnIo''@;'; put 'put ''KSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoMik7X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZC5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uLnRlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGQuZ2V0Q29udGV4dChhKSl9fWZ1bmN0aW9uIERGZShsLGMpe2lm''@;'; put 'put ''KDEmbCYmKFZyKDApLGd0KDEsQUZlLDIsMiwibmctY29udGFpbmVyIiwxKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0Zvck9mIiwobnVsbD09YS5wYXJlbnQ/bnVsbDphLnBhcmVudC5jaGlsZHJlbil8fGEuY2hpbGRyZW4pfX1jb25zdCBJRmU9WyJjb250ZW50Q29udGFp''@;'; put 'put ''bmVyIl0sUkZlPVtbWyJjbHItdHJlZS1ub2RlIl1dLFtbIiIsImNscklmRXhwYW5kZWQiLCIiXV0sIioiXSxMRmU9WyJjbHItdHJlZS1ub2RlIiwiW2NscklmRXhwYW5kZWRdIiwiKiJdO2Z1bmN0aW9uIE9GZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsOSksSXQo''@;'; put 'put ''ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmV4cGFuZFNlcnZpY2UudG9nZ2xlKCkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmZvY3VzVHJlZU5vZGUoKSl9KSxZdCgxLCJjZHMtaWNvbiIsMTApLG1lKCl9aWYoMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKCk7UmUoImRpc2FibGVkIixhLmRpc2FibGVkKSxfZSgpLHVyKCJkaXJlY3Rpb24iLGEuZXhwYW5kU2VydmljZS5leHBhbmRlZD8iZG93biI6InJpZ2h0Iil9fWZ1bmN0aW9uIFBGZShsLGMpezEmbCYmKGdlKDAsImRpdiIsMTEpLFl0KDEsInNwYW4iLDEyKSxtZSgpKX1mdW5jdGlvbiBG''@;'; put 'put ''RmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDEzKSgxLCJpbnB1dCIsMTQpLEl0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpO3JldHVybiBidChoLl9tb2RlbC50b2dnbGVTZWxlY3Rpb24oaC5mZWF0dXJlc1NlcnZpY2UuZWFnZXIpKX0pKCJm''@;'; put 'put ''b2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5mb2N1c1RyZWVOb2RlKCkpfSksbWUoKSxnZSgyLCJsYWJlbCIsMTUpLHpsKDMsMTYpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoKSxkPUdpKDcpO19lKCksdFMoImlkIiwiIixhLm5vZGVJZCwiLWNoZWNrIiksUmUoImRp''@;'; put 'put ''c2FibGVkIixhLmRpc2FibGVkKSgiY2hlY2tlZCIsYS5fbW9kZWwuc2VsZWN0ZWQudmFsdWU9PT1hLlNUQVRFUy5TRUxFQ1RFRCkoImluZGV0ZXJtaW5hdGUiLGEuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09YS5TVEFURVMuSU5ERVRFUk1JTkFURSksX2UoKSx0UygiZm9yIiwiIixhLm5vZGVJ''@;'; put 'put ''ZCwiLWNoZWNrIiksX2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZCl9fWZ1bmN0aW9uIE5GZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTcpLEl0KCJtb3VzZXVwIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmZvY3VzVHJlZU5vZGUoKSl9KSx6bCgx''@;'; put 'put ''LDE2KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLGQ9R2koNyk7cHIoImNsci10cmVlbm9kZS10ZXh0LW9ubHkiLGEudHJlZU5vZGVDb250ZW50VGV4dE9ubHkpLF9lKCksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGQpfX1mdW5jdGlvbiBIRmUobCxjKXsxJmwmJihnZSgwLCJzcGFuIiksUGUo''@;'; put 'put ''MSwiIHNlbGVjdGVkIiksbWUoKSl9ZnVuY3Rpb24gVkZlKGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIpLFBlKDEsIiB1bnNlbGVjdGVkIiksbWUoKSl9ZnVuY3Rpb24gQkZlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxOSksZ3QoMSxIRmUsMiwwLCJzcGFuIiwyMCkoMixWRmUsMiwwLCJzcGFu''@;'; put 'put ''IiwyMCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLGEuYXJpYVNlbGVjdGVkKSxfZSgpLFJlKCJuZ0lmIiwhYS5hcmlhU2VsZWN0ZWQpfX1mdW5jdGlvbiBqRmUobCxjKXtpZigxJmwmJihJcigwLDIpLGd0KDEsQkZlLDMsMiwiZGl2IiwxOCkpLDImbCl7Y29uc3Qg''@;'; put 'put ''YT1OZSgpO19lKCksUmUoIm5nSWYiLGEuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGV8fGEuYXJpYVNlbGVjdGVkKX19ZnVuY3Rpb24gekZlKGwsYyl7MSZsJiZZdCgwLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIiwxKSwyJmwmJlJlKCJjaGlsZHJlbiIsTmUoKS5mZWF0dXJlc1NlcnZpY2Uu''@;'; put 'put ''cmVjdXJzaW9uLnJvb3QpfWZ1bmN0aW9uIFVGZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsNCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5jbG9zZSgpKX0pLFl0KDEsImNkcy1pY29uIiw1KSxtZSgpfTImbCYmdXIoImFyaWEt''@;'; put 'put ''bGFiZWwiLE5lKDIpLmNsckNsb3NlQnV0dG9uQXJpYUxhYmVsKX1mdW5jdGlvbiBaRmUobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDEpKDEsImRpdiIsMiksSXIoMiksbWUoKSxndCgzLFVGZSwyLDEsImJ1dHRvbiIsMyksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7cHIoImFsZXJ0LXNtIixh''@;'; put 'put ''LmlzU21hbGwpKCJhbGVydC1saWdodHdlaWdodCIsYS5pc0xpZ2h0d2VpZ2h0KSgiYWxlcnQtYXBwLWxldmVsIixhLmlzQXBwTGV2ZWwpLFJlKCJuZ0NsYXNzIixhLmFsZXJ0Q2xhc3MpLF9lKDMpLFJlKCJuZ0lmIixhLmNsb3NhYmxlKX19ZnVuY3Rpb24gWUZlKGwsYyl7MSZsJiZZdCgwLCJj''@;'; put 'put ''bHItc3Bpbm5lciIsMyl9ZnVuY3Rpb24gV0ZlKGwsYyl7aWYoMSZsJiZZdCgwLCJjZHMtaWNvbiIsNCksMiZsKXtjb25zdCBhPU5lKCk7dXIoInNoYXBlIixhLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlKSgiYXJpYS1sYWJlbCIsYS5pY29uU2VydmljZS5hbGVydEljb25UaXRsZSl9fWNv''@;'; put 'put ''bnN0IEdGZT1bW1siY2xyLWFsZXJ0Il1dXSwkRmU9WyJjbHItYWxlcnQiXTtmdW5jdGlvbiBxRmUobCxjKXsxJmwmJll0KDAsImNsci1hbGVydHMtcGFnZXIiLDIpLDImbCYmUmUoImNsckN1cnJlbnRBbGVydEluZGV4IixOZSgpLmN1cnJlbnRBbGVydEluZGV4KX1mdW5jdGlvbiBKRmUobCxj''@;'; put 'put ''KXsxJmwmJklyKDApfWNvbnN0IFFGZT1bInRhYkNvbnRlbnRQcm9qZWN0ZWRSZWYiXTtmdW5jdGlvbiBlTmUobCxjKXtpZigxJmwmJihnZSgwLCJzZWN0aW9uIiwxKSxJcigxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtwcigiYWN0aXZlIixhLmFjdGl2ZSksUmUoImlkIixhLnRhYkNvbnRl''@;'; put 'put ''bnRJZCkoImhpZGRlbiIsIWEuYWN0aXZlKSx1cigiYXJpYS1sYWJlbGxlZGJ5IixhLmFyaWFMYWJlbGxlZEJ5KSgiYXJpYS1oaWRkZW4iLCFhLmFjdGl2ZSl9fWNvbnN0IHROZT1bInRhYkNvbnRlbnRWaWV3Q29udGFpbmVyIl07ZnVuY3Rpb24gbk5lKGwsYyl7aWYoMSZsJiYoVnIoMCksZ2Uo''@;'; put 'put ''MSwibGkiLDUpLHpsKDIsNiksbWUoKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQ7X2UoMiksUmUoIm5nVGVtcGxhdGVPdXRsZXQiLGEudGVtcGxhdGVSZWZDb250YWluZXIudGVtcGxhdGUpfX1mdW5jdGlvbiByTmUobCxjKXtpZigxJmwmJihWcigwKSxndCgxLG5OZSwzLDEs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsNCksQnIoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKTtfZSgpLFJlKCJuZ0lmIixhLnRhYnNJZD09PWQudGFic0lkJiYhYS5pbk92ZXJmbG93KX19ZnVuY3Rpb24gaU5lKGwsYyl7MSZsJiZ6bCgwLDYpLDImbCYmUmUoIm5nVGVtcGxhdGVPdXRsZXQi''@;'; put 'put ''LE5lKCkuJGltcGxpY2l0LnRlbXBsYXRlUmVmQ29udGFpbmVyLnRlbXBsYXRlKX1mdW5jdGlvbiBvTmUobCxjKXtpZigxJmwmJihWcigwKSxndCgxLGlOZSwxLDEsIm5nLWNvbnRhaW5lciIsMTMpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPU5lKDMpO19lKCksUmUoIm5nSWYi''@;'; put 'put ''LGEudGFic0lkPT09ZC50YWJzSWQmJmEuaW5PdmVyZmxvdyl9fWZ1bmN0aW9uIHNOZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10YWItb3ZlcmZsb3ctY29udGVudCIsMTIpLEl0KCJrZXlkb3duLmVzY2FwZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMiku''@;'; put 'put ''Y2xvc2VPbkVzY2FwZUtleSgpKX0sMCxRZikoImNsaWNrIixmdW5jdGlvbihoKXtfdChhKSxOZSgpO2NvbnN0IGY9R2koNCk7cmV0dXJuIGJ0KE5lKCkuY2xvc2VPbk91dHNpZGVDbGljayhoLGYpKX0sITEsUWYpKCJmb2N1c291dCIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIp''@;'; put 'put ''LmNsb3NlT25Gb2N1c091dChoKSl9KSxndCgxLG9OZSwyLDEsIm5nLWNvbnRhaW5lciIsMyksbWUoKX1pZigyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdGb3JPZiIsYS50YWJMaW5rRGlyZWN0aXZlcyl9fWZ1bmN0aW9uIGFOZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDAp''@;'; put 'put ''LGdlKDEsImRpdiIsNykoMiwibGkiLDgpKDMsImJ1dHRvbiIsOSwxKSxJdCgibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLl9tb3VzZWRvd249ITApfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLm9wZW5PdmVyZmxvd09uRm9jdXMo''@;'; put 'put ''KSl9KSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkudG9nZ2xlT3ZlcmZsb3dPbkNsaWNrKCkpfSksWXQoNSwiY2RzLWljb24iLDEwKSxtZSgpKCksZ3QoNixzTmUsMiwxLCJjbHItdGFiLW92ZXJmbG93LWNvbnRlbnQiLDExKSxtZSgpLEJyKCl9aWYoMiZsKXtjb25z''@;'; put 'put ''dCBhPU5lKCk7X2UoKSxwcigib3BlbiIsYS50b2dnbGVTZXJ2aWNlLm9wZW4pLF9lKDIpLHByKCJhY3RpdmUiLGEuYWN0aXZlVGFiSW5PdmVyZmxvdykoIm9wZW4iLGEudG9nZ2xlU2VydmljZS5vcGVuKSx1cigidGFiaW5kZXgiLGEuYWN0aXZlVGFiSW5PdmVyZmxvdyYmIWEudG9nZ2xlU2Vy''@;'; put 'put ''dmljZS5vcGVuPzA6LTEpKCJ0aXRsZSIsYS5jb21tb25TdHJpbmdzLmtleXMubW9yZSksX2UoMiksdXIoInN0YXR1cyIsYS50b2dnbGVTZXJ2aWNlLm9wZW4/ImluZm8iOm51bGwpKCJ0aXRsZSIsYS5jb21tb25TdHJpbmdzLmtleXMubW9yZSksX2UoKSxSZSgibmdJZiIsYS50b2dnbGVTZXJ2''@;'; put 'put ''aWNlLm9wZW4pfX1mdW5jdGlvbiBsTmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS50b2dnbGVCeUJ1dHRvbigpKX0pLFl0KDEsImNkcy1pY29uIiw0KSxtZSgpfWlmKDImbCl7Y29u''@;'; put 'put ''c3QgYT1OZSgpO3ByKCJvbi1jb2xsYXBzZSIsYS5jb2xsYXBzZWQpLHVyKCJhcmlhLWV4cGFuZGVkIixhLmFyaWFFeHBhbmRlZCkoImFyaWEtbGFiZWwiLGEuY29tbW9uU3RyaW5ncy5rZXlzLnZlcnRpY2FsTmF2VG9nZ2xlKSxfZSgpLHVyKCJkaXJlY3Rpb24iLGEuY29sbGFwc2VkPyJyaWdo''@;'; put 'put ''dCI6ImxlZnQiKX19ZnVuY3Rpb24gY05lKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiw1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuY29sbGFwc2VkPSExKX0pLG1lKCl9MiZsJiZ1cigiYXJpYS1sYWJlbCIsTmUoKS5jb21tb25T''@;'; put 'put ''dHJpbmdzLmtleXMudmVydGljYWxOYXZUb2dnbGUpfWNvbnN0IGhOZT1bImNsclZlcnRpY2FsTmF2TGluayIsIiJdLGZOZT1bW1siIiwiY2xyVmVydGljYWxOYXZJY29uIiwiIl1dLCIqIl0scE5lPVsiW2NsclZlcnRpY2FsTmF2SWNvbl0iLCIqIl0sZ05lPVtbWyIiLDgsIm1vZGFsLW5hdiJd''@;'; put 'put ''XSxbWyIiLDgsIm1vZGFsLXRpdGxlIl1dLFtbIiIsOCwibW9kYWwtYm9keSJdXSxbWyIiLDgsIm1vZGFsLWZvb3RlciJdXV0sbU5lPVsiLm1vZGFsLW5hdiIsIi5tb2RhbC10aXRsZSIsIi5tb2RhbC1ib2R5IiwiLm1vZGFsLWZvb3RlciJdO2Z1bmN0aW9uIHZOZShsLGMpe2lmKDEmbCl7Y29u''@;'; put 'put ''c3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMTEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikuY2xvc2UoKSl9KSxZdCgxLCJjZHMtaWNvbiIsMTIpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO3VyKCJhcmlhLWxhYmVsIixhLmNsb3NlQnV0dG9uQXJpYUxh''@;'; put 'put ''YmVsfHxhLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZSl9fWZ1bmN0aW9uIF9OZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBidChoLnN0YXRpY0JhY2tkcm9wfHxoLmNsb3Nl''@;'; put 'put ''KCkpfSksbWUoKX0yJmwmJlJlKCJAZmFkZSIsdm9pZCAwKX1mdW5jdGlvbiBiTmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDEpKDEsImRpdiIsMiksSXQoIkBmYWRlTW92ZS5kb25lIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5mYWRlRG9uZShoKSl9''@;'; put 'put ''KSxnZSgyLCJkaXYiLDMpLFBlKDMpLG1lKCksZ2UoNCwiZGl2Iiw0KSxJcig1KSxnZSg2LCJkaXYiLDUpKDcsImRpdiIsNikoOCwiZGl2Iiw3KSxJcig5LDEpLG1lKCksZ3QoMTAsdk5lLDIsMSwiYnV0dG9uIiw4KSxtZSgpLGdlKDExLCJkaXYiLDkpLElyKDEyLDIpLG1lKCksSXIoMTMsMyks''@;'; put 'put ''bWUoKSgpLGdlKDE0LCJkaXYiLDMpLFBlKDE1KSxtZSgpKCksZ3QoMTYsX05lLDEsMSwiZGl2IiwxMCksbWUoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtwcigibW9kYWwtZnVsbC1zY3JlZW4iLCJmdWxsLXNjcmVlbiI9PWEuc2l6ZSksX2UoKSxwcigibW9kYWwtc20iLCJzbSI9PWEuc2l6ZSko''@;'; put 'put ''Im1vZGFsLWxnIiwibGciPT1hLnNpemUpKCJtb2RhbC14bCIsInhsIj09YS5zaXplKSxSZSgiY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiLCEwKSgiQGZhZGVNb3ZlIixhLmZhZGVNb3ZlKSx1cigiYXJpYS1oaWRkZW4iLCFhLl9vcGVuKSgiYXJpYS1sYWJlbGxlZGJ5IixhLmxhYmVsbGVkQnl8''@;'; put 'put ''fGEubW9kYWxJZCksX2UoMiksbHIoYS5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50U3RhcnQpLF9lKDUpLHo2KCJpZCIsYS5tb2RhbElkKSxfZSgyKSxSZSgibmdJZiIsYS5jbG9zYWJsZSksX2UoNSksbHIoYS5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kKSxfZSgp''@;'; put 'put ''LFJlKCJuZ0lmIixhLmJhY2tkcm9wKX19bGV0IFlhPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItaWNvbiJdXX0pLGx9KSgpLEdzPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJjZHMtaWNvbiJdXX0pLGx9KSgpLG5hPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpO2NsYXNzIHZNe312YXIgcjE9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5ERUZBVUxUPTBdPSJERUZBVUxUIixsW2wuTE9BRElORz0xXT0iTE9BRElORyIsbFtsLlNV''@;'; put 'put ''Q0NFU1M9Ml09IlNVQ0NFU1MiLGxbbC5FUlJPUj0zXT0iRVJST1IiLGx9KHIxfHx7fSk7bGV0IGwwPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5saXN0ZW5lcj1hLHRoaXMuX2xvYWRpbmdTdGF0ZT1yMS5ERUZBVUxUfWdldCBsb2FkaW5nU3RhdGUoKXtyZXR1cm4gdGhpcy5f''@;'; put 'put ''bG9hZGluZ1N0YXRlfXNldCBsb2FkaW5nU3RhdGUoYSl7ITA9PT1hP2E9cjEuTE9BRElORzphfHwoYT1yMS5ERUZBVUxUKSxhIT09dGhpcy5fbG9hZGluZ1N0YXRlJiYodGhpcy5fbG9hZGluZ1N0YXRlPWEsdGhpcy5saXN0ZW5lciYmdGhpcy5saXN0ZW5lci5sb2FkaW5nU3RhdGVDaGFuZ2Uo''@;'; put 'put ''YSkpfW5nT25EZXN0cm95KCl7dGhpcy5sb2FkaW5nU3RhdGU9cjEuREVGQVVMVH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUodk0sOCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJMb2FkaW5nIiwiIl1dLGlu''@;'; put 'put ''cHV0czp7bG9hZGluZ1N0YXRlOltqbi5Ob25lLCJjbHJMb2FkaW5nIiwibG9hZGluZ1N0YXRlIl19fSksbH0pKCksbzE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZXhwYW5kYWJsZT0wLHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fZXhwYW5kQ2hh''@;'; put 'put ''bmdlPW5ldyB0bn1nZXQgbG9hZGluZygpe3JldHVybiB0aGlzLl9sb2FkaW5nfXNldCBsb2FkaW5nKGEpeyhhPSEhYSkhPT10aGlzLl9sb2FkaW5nJiYodGhpcy5fbG9hZGluZz1hKX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWR9c2V0IGV4cGFuZGVkKGEpeyhhPSEhYSkh''@;'; put 'put ''PT10aGlzLl9leHBhbmRlZCYmKHRoaXMuX2V4cGFuZGVkPWEsdGhpcy5fZXhwYW5kQ2hhbmdlLm5leHQoYSkpfWdldCBleHBhbmRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZXhwYW5kQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfXRvZ2dsZSgpe3RoaXMuZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfWxv''@;'; put 'put ''YWRpbmdTdGF0ZUNoYW5nZShhKXt0aGlzLmxvYWRpbmc9YT09PXIxLkxPQURJTkd9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLFlOZT0wO2Z1bmN0aW9u''@;'; put 'put ''IHR1KCl7cmV0dXJuImNsci1pZC0iK1lOZSsrfWxldCBQY2U9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tZGVzY3JpcHRpb24iXSxb''@;'; put 'put ''ImNsci1zdGVwLWRlc2NyaXB0aW9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbiIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsx''@;'; put 'put ''JmEmJihIaSgpLElyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbH0pKCk7dmFyIEsyPWZ1bmN0aW9uKGwpe3JldHVybiBsLkluYWN0aXZlPSJpbmFjdGl2ZSIsbC5FcnJvcj0iZXJyb3IiLGwuQ29tcGxldGU9ImNvbXBsZXRlIixsfShLMnx8e30pO2NvbnN0IFgy''@;'; put 'put ''PSIwLjJzIGVhc2UtaW4tb3V0IixXTmU9W0NkKCJza2lwSW5pdGlhbFJlbmRlciIsW1NjKCI6ZW50ZXIiLFtdKV0pLENkKCJ0b2dnbGUiLFtTYygidm9pZCA9PiAqIixbRnMoe2Rpc3BsYXk6ImJsb2NrIixoZWlnaHQ6MH0pLGp1KFgyLEZzKHtoZWlnaHQ6IioifSkpXSldKV0sU1o9KENkKCJz''@;'; put 'put ''a2lwSW5pdGlhbFJlbmRlciIsW1NjKCI6ZW50ZXIiLFtdKV0pLENkKCJ0b2dnbGUiLFtTYygidm9pZCA9PiAqIixbRnMoe2Rpc3BsYXk6ImJsb2NrIixoZWlnaHQ6MH0pLGp1KFgyLEZzKHtoZWlnaHQ6IioifSkpXSksU2MoIiogPT4gdm9pZCIsW0ZzKHtkaXNwbGF5OiJibG9jayJ9KSxqdShY''@;'; put 'put ''MixGcyh7aGVpZ2h0OjAsZGlzcGxheToibm9uZSJ9KSldKV0pLHtvcGVuOiJPcGVuIixjbG9zZToiQ2xvc2UiLHNob3c6IlNob3ciLGhpZGU6IkhpZGUiLGV4cGFuZDoiRXhwYW5kIixjb2xsYXBzZToiQ29sbGFwc2UiLG1vcmU6Ik1vcmUiLHNlbGVjdDoiU2VsZWN0IixzZWxlY3RBbGw6IlNl''@;'; put 'put ''bGVjdCBBbGwiLHByZXZpb3VzOiJQcmV2aW91cyIsbmV4dDoiTmV4dCIsY3VycmVudDoiSnVtcCB0byBjdXJyZW50IixpbmZvOiJJbmZvIixzdWNjZXNzOiJTdWNjZXNzIix3YXJuaW5nOiJXYXJuaW5nIixkYW5nZXI6IkVycm9yIixuZXV0cmFsOiJOZXV0cmFsIix1bmtub3duOiJVbmtub3du''@;'; put 'put ''Iixyb3dBY3Rpb25zOiJBdmFpbGFibGUgYWN0aW9ucyIscGlja0NvbHVtbnM6Ik1hbmFnZSBDb2x1bW5zIixzaG93Q29sdW1uczoiU2hvdyBDb2x1bW5zIixzb3J0Q29sdW1uOiJTb3J0IENvbHVtbiIsZmlyc3RQYWdlOiJGaXJzdCBQYWdlIixsYXN0UGFnZToiTGFzdCBQYWdlIixuZXh0UGFn''@;'; put 'put ''ZToiTmV4dCBQYWdlIixwcmV2aW91c1BhZ2U6IlByZXZpb3VzIFBhZ2UiLGN1cnJlbnRQYWdlOiJDdXJyZW50IFBhZ2UiLHRvdGFsUGFnZXM6IlRvdGFsIFBhZ2VzIixmaWx0ZXJJdGVtczoiRmlsdGVyIGl0ZW1zIixtaW5WYWx1ZToiTWluIHZhbHVlIixtYXhWYWx1ZToiTWF4IHZhbHVlIixt''@;'; put 'put ''b2RhbENvbnRlbnRTdGFydDoiQmVnaW5uaW5nIG9mIE1vZGFsIENvbnRlbnQiLG1vZGFsQ29udGVudEVuZDoiRW5kIG9mIE1vZGFsIENvbnRlbnQiLHNob3dDb2x1bW5zTWVudURlc2NyaXB0aW9uOiJTaG93IG9yIGhpZGUgY29sdW1ucyBtZW51IixhbGxDb2x1bW5zU2VsZWN0ZWQ6IkFsbCBj''@;'; put 'put ''b2x1bW5zIHNlbGVjdGVkIixzaWducG9zdFRvZ2dsZToiU2lnbnBvc3QgVG9nZ2xlIixzaWducG9zdENsb3NlOiJTaWducG9zdCBDbG9zZSIsbG9hZGluZzoiTG9hZGluZyIsZGV0YWlsUGFuZVN0YXJ0OiJTdGFydCBvZiByb3cgZGV0YWlscyIsZGV0YWlsUGFuZUVuZDoiRW5kIG9mIHJvdyBk''@;'; put 'put ''ZXRhaWxzIixzaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWw6IlNpbmdsZSBzZWxlY3Rpb24gaGVhZGVyIixzaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiJTaW5nbGUgYWN0aW9uYWJsZSBoZWFkZXIiLGRldGFpbEV4cGFuZGFibGVBcmlhTGFiZWw6IlRvZ2dsZSBtb3JlIHJvdyBjb250ZW50Iixk''@;'; put 'put ''YXRhZ3JpZEZpbHRlckFyaWFMYWJlbDoiVG9nZ2xlIHtDT0xVTU59IGZpbHRlciIsZGF0YWdyaWRGaWx0ZXJEaWFsb2dBcmlhTGFiZWw6IkZpbHRlciBkaWFsb2ciLGNvbHVtblNlcGFyYXRvckFyaWFMYWJlbDoiQ29sdW1uIHJlc2l6ZSBoYW5kbGUiLGNvbHVtblNlcGFyYXRvckRlc2NyaXB0''@;'; put 'put ''aW9uOiJVc2UgbGVmdCBvciByaWdodCBrZXkgdG8gcmVzaXplIHRoZSBjb2x1bW4iLGFsZXJ0Q2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIGFsZXJ0IixhbGVydE5leHRBbGVydEFyaWFMYWJlbDoiTmV4dCBhbGVydCBtZXNzYWdlLCB7Q1VSUkVOVH0gb2Yge0NPVU5UfSIsYWxlcnRQcmV2''@;'; put 'put ''aW91c0FsZXJ0QXJpYUxhYmVsOiJQcmV2aW91cyBhbGVydCBtZXNzYWdlLCB7Q1VSUkVOVH0gb2Yge0NPVU5UfSIsZGF0ZXBpY2tlckRpYWxvZ0xhYmVsOiJDaG9vc2UgZGF0ZSIsZGF0ZXBpY2tlclRvZ2dsZUNob29zZURhdGVMYWJlbDoiQ2hvb3NlIGRhdGUiLGRhdGVwaWNrZXJUb2dnbGVD''@;'; put 'put ''aGFuZ2VEYXRlTGFiZWw6IkNoYW5nZSBkYXRlLCB7U0VMRUNURURfREFURX0iLGRhdGVwaWNrZXJQcmV2aW91c01vbnRoOiJQcmV2aW91cyBtb250aCIsZGF0ZXBpY2tlckN1cnJlbnRNb250aDoiQ3VycmVudCBtb250aCIsZGF0ZXBpY2tlck5leHRNb250aDoiTmV4dCBtb250aCIsZGF0ZXBp''@;'; put 'put ''Y2tlclByZXZpb3VzRGVjYWRlOiJQcmV2aW91cyBkZWNhZGUiLGRhdGVwaWNrZXJOZXh0RGVjYWRlOiJOZXh0IGRlY2FkZSIsZGF0ZXBpY2tlckN1cnJlbnREZWNhZGU6IkN1cnJlbnQgZGVjYWRlIixkYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0OiJTZWxlY3QgbW9udGgsIHRoZSBjdXJyZW50''@;'; put 'put ''IG1vbnRoIGlzIHtDQUxFTkRBUl9NT05USH0iLGRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dDoiU2VsZWN0IHllYXIsIHRoZSBjdXJyZW50IHllYXIgaXMge0NBTEVOREFSX1lFQVJ9IixkYXRlcGlja2VyU2VsZWN0ZWRMYWJlbDoie0ZVTExfREFURX0gLSBTZWxlY3RlZCIsc3RhY2tWaWV3Q2hh''@;'; put 'put ''bmdlZDoiVmFsdWUgY2hhbmdlZC4iLHJlc3BvbnNpdmVOYXZUb2dnbGVPcGVuOiJPcGVuIG5hdmlnYXRpb24gbWVudSIscmVzcG9uc2l2ZU5hdlRvZ2dsZUNsb3NlOiJDbG9zZSBuYXZpZ2F0aW9uIG1lbnUiLHJlc3BvbnNpdmVOYXZPdmVyZmxvd09wZW46Ik9wZW4gbmF2aWdhdGlvbiBvdmVy''@;'; put 'put ''ZmxvdyBtZW51IixyZXNwb25zaXZlTmF2T3ZlcmZsb3dDbG9zZToiQ2xvc2UgbmF2aWdhdGlvbiBvdmVyZmxvdyBtZW51Iix2ZXJ0aWNhbE5hdlRvZ2dsZToiVG9nZ2xlIHZlcnRpY2FsIG5hdmlnYXRpb24iLHRpbWVsaW5lU3RlcE5vdFN0YXJ0ZWQ6Ik5vdCBzdGFydGVkIix0aW1lbGluZVN0''@;'; put 'put ''ZXBDdXJyZW50OiJDdXJyZW50Iix0aW1lbGluZVN0ZXBTdWNjZXNzOiJDb21wbGV0ZWQiLHRpbWVsaW5lU3RlcEVycm9yOiJFcnJvciIsdGltZWxpbmVTdGVwUHJvY2Vzc2luZzoiSW4gcHJvZ3Jlc3MiLGNvbWJvYm94RGVsZXRlOiJEZWxldGUgc2VsZWN0ZWQgb3B0aW9uIixjb21ib2JveFNl''@;'; put 'put ''YXJjaGluZzonU2VhcmNoaW5nIGZvciBtYXRjaGVzIGZvciAie0lOUFVUfSInLGNvbWJvYm94U2VsZWN0aW9uOiJTZWxlY3Rpb24iLGNvbWJvYm94U2VsZWN0ZWQ6IlNlbGVjdGVkIixjb21ib2JveE5vUmVzdWx0czoiTm8gcmVzdWx0cyIsY29tYm9ib3hPcGVuOiJTaG93IG9wdGlvbnMiLGRh''@;'; put 'put ''dGFncmlkRXhwYW5kYWJsZUJlZ2lubmluZ09mOiJCZWdpbm5pbmcgb2YiLGRhdGFncmlkRXhwYW5kYWJsZUVuZE9mOiJFbmQgb2YiLGRhdGFncmlkRXhwYW5kYWJsZVJvd0NvbnRlbnQ6IkV4cGFuZGFibGUgcm93IGNvbnRlbnQiLGRhdGFncmlkRXhwYW5kYWJsZVJvd3NIZWxwZXJUZXh0OiJT''@;'; put 'put ''Y3JlZW4gcmVhZGVyIHRhYmxlIGNvbW1hbmRzIG1heSBub3Qgd29yayBmb3Igdmlld2luZyBleHBhbmRlZCBjb250ZW50LCBwbGVhc2UgdXNlIHlvdXIgc2NyZWVuIHJlYWRlcidzIGJyb3dzZSBtb2RlIHRvIHJlYWQgdGhlIGNvbnRlbnQgZXhwb3NlZCBieSB0aGlzIGJ1dHRvbiIsd2l6YXJk''@;'; put 'put ''U3RlcFN1Y2Nlc3M6IkNvbXBsZXRlZCIsd2l6YXJkU3RlcEVycm9yOiJFcnJvciIsd2l6YXJkU3RlcG5hdkFyaWFMYWJlbDoiU3RlcCBuYXZpZ2F0aW9uIixwYXNzd29yZEhpZGU6IkhpZGUgcGFzc3dvcmQgZm9yIHtMQUJFTH0iLHBhc3N3b3JkU2hvdzoiU2hvdyBwYXNzd29yZCBmb3Ige0xB''@;'; put 'put ''QkVMfSIsc2VsZWN0ZWRSb3dzOiJTZWxlY3RlZCByb3dzIixzdGVwQ29tcGxldGU6IlN0ZXAge1NURVB9IGNvbXBsZXRlIixzdGVwRXJyb3I6IkVycm9yIGluIHN0ZXAge1NURVB9Iixicm93c2U6IkJyb3dzZSIsZmlsZUNvdW50OiJ7Q09VTlR9IGZpbGVzIixjbGVhckZpbGU6IkNsZWFyIHtG''@;'; put 'put ''SUxFfSIsY2xlYXJGaWxlczoiQ2xlYXIge0NPVU5UfSBmaWxlcyJ9KTtsZXQgVXM9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0cmluZ3M9U1p9Z2V0IGtleXMoKXtyZXR1cm4gdGhpcy5fc3RyaW5nc31sb2NhbGl6ZShhKXt0aGlzLl9zdHJpbmdzPXsuLi50aGlzLl9zdHJp''@;'; put 'put ''bmdzLC4uLmF9fXBhcnNlKGEsZD17fSl7Y29uc3QgaD1PYmplY3Qua2V5cyhkKTtsZXQgZj1hO3JldHVybiBoLmxlbmd0aCYmaC5mb3JFYWNoKHY9PntmPWYucmVwbGFjZShgeyR7dn19YCxkW3ZdKX0pLGZ9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwp''@;'; put 'put ''fSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pLGx9KSgpO3ZhciBfTT1mdW5jdGlvbihsKXtyZXR1cm4gbC5EZWZhdWx0PSJkZWZhdWx0IixsLk11bHRpPSJtdWx0aSIsbH0oX018fHt9KTtsZXQgJE5lPTA7Y2xhc3MgcU5l''@;'; put 'put ''e2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5pZD1jLHRoaXMuYWNjb3JkaW9uSWQ9YSx0aGlzLnN0YXR1cz1LMi5JbmFjdGl2ZSx0aGlzLmluZGV4PW51bGwsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLm9wZW49ITEsdGhpcy50ZW1wbGF0ZUlkPWAke3RoaXMuaWR9LSR7dGhpcy5hY2NvcmRpb25JZH1g''@;'; put 'put ''fX1jbGFzcyBGY2V7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmF0ZWd5PV9NLkRlZmF1bHQsdGhpcy5hY2NvcmRpb25Db3VudD0kTmUrKyx0aGlzLl9wYW5lbHM9e319Z2V0IHBhbmVscygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9wYW5lbHMpLm1hcChjPT50aGlzLl9wYW5lbHNbY10pfXNl''@;'; put 'put ''dFN0cmF0ZWd5KGMpe3RoaXMuc3RyYXRlZ3k9Y311cGRhdGVQYW5lbE9yZGVyKGMpe2MuZm9yRWFjaCgoYSxkKT0+dGhpcy5fcGFuZWxzW2FdLmluZGV4PWQpLHRoaXMucmVtb3ZlT2xkUGFuZWxzKGMpfWFkZFBhbmVsKGMsYT0hMSl7dGhpcy5fcGFuZWxzW2NdPW5ldyBxTmUoYyx0aGlzLmFj''@;'; put 'put ''Y29yZGlvbkNvdW50KSx0aGlzLl9wYW5lbHNbY10ub3Blbj1hfXRvZ2dsZVBhbmVsKGMsYSl7Y29uc3QgaD12b2lkIDAhPT1hP2E6IXRoaXMuX3BhbmVsc1tjXS5vcGVuO2gmJnRoaXMuc3RyYXRlZ3k9PT1fTS5EZWZhdWx0JiZ0aGlzLmNsb3NlQWxsUGFuZWxzKCksdGhpcy5fcGFuZWxzW2Nd''@;'; put 'put ''Lm9wZW49aH1kaXNhYmxlUGFuZWwoYyxhKXt0aGlzLl9wYW5lbHNbY10uZGlzYWJsZWQ9YX1jbG9zZUFsbFBhbmVscygpe3RoaXMucGFuZWxzLmZvckVhY2goYz0+dGhpcy5fcGFuZWxzW2MuaWRdLm9wZW49ITEpfXJlbW92ZU9sZFBhbmVscyhjKXt0aGlzLnBhbmVscy5maWx0ZXIoYT0+dm9p''@;'; put 'put ''ZCAwPT09Yy5maW5kKGQ9PmQ9PT1hLmlkKSkuZm9yRWFjaChhPT5kZWxldGUgdGhpcy5fcGFuZWxzW2EuaWRdKX19bGV0IGJNPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmFjY29yZGlvbj1uZXcgRmNlLHRoaXMuX3BhbmVsc0NoYW5nZXM9bmV3IEFyKHRoaXMuYWNjb3JkaW9u''@;'; put 'put ''LnBhbmVscyl9Z2V0UGFuZWxDaGFuZ2VzKGEpe3JldHVybiB0aGlzLl9wYW5lbHNDaGFuZ2VzLnBpcGUoYnIoZD0+ZC5maW5kKGg9PmguaWQ9PT1hKSkpfXNldFN0cmF0ZWd5KGEpe3RoaXMuYWNjb3JkaW9uLnNldFN0cmF0ZWd5KGEpfWFkZFBhbmVsKGEsZD0hMSl7dGhpcy5hY2NvcmRpb24u''@;'; put 'put ''YWRkUGFuZWwoYSxkKSx0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9dG9nZ2xlUGFuZWwoYSxkKXt0aGlzLmFjY29yZGlvbi50b2dnbGVQYW5lbChhLGQpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1kaXNhYmxlUGFuZWwoYSxkKXt0aGlzLmFjY29yZGlvbi5kaXNhYmxlUGFuZWwoYSxkKSx0''@;'; put 'put ''aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCl9dXBkYXRlUGFuZWxPcmRlcihhKXt0aGlzLmFjY29yZGlvbi51cGRhdGVQYW5lbE9yZGVyKGEpLHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKX1lbWl0VXBkYXRlZFBhbmVscygpe3RoaXMuX3BhbmVsc0NoYW5nZXMubmV4dCh0aGlzLmFjY29yZGlvbi5w''@;'; put 'put ''YW5lbHMpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSx1Uj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuY29tbW9uU3RyaW5n''@;'; put 'put ''cz1hLHRoaXMuYWNjb3JkaW9uU2VydmljZT1kLHRoaXMuaWZFeHBhbmRTZXJ2aWNlPWgsdGhpcy5jZHI9Zix0aGlzLmRpc2FibGVkPSExLHRoaXMucGFuZWxPcGVuPSExLHRoaXMucGFuZWxPcGVuQ2hhbmdlPW5ldyBEcix0aGlzLkFjY29yZGlvblN0YXR1cz1LMix0aGlzLmlzQWNjb3JkaW9u''@;'; put 'put ''PSEwLHRoaXMuX2lkPXR1KCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZChhKXt0aGlzLl9pZD1hfWdldCBwYW5lbE51bWJlcigpe3JldHVybiB0aGlzLl9wYW5lbEluZGV4KzF9bmdPbkluaXQoKXt0aGlzLnBhbmVsPXRoaXMuYWNjb3JkaW9uU2VydmljZS5nZXRQYW5lbENoYW5n''@;'; put 'put ''ZXModGhpcy5pZCkucGlwZShNdShhPT50aGlzLmVtaXRQYW5lbENoYW5nZShhKSkpLHRoaXMuYWNjb3JkaW9uU2VydmljZS5hZGRQYW5lbCh0aGlzLmlkLHRoaXMucGFuZWxPcGVuKSx0aGlzLmFjY29yZGlvblNlcnZpY2UudG9nZ2xlUGFuZWwodGhpcy5pZCx0aGlzLnBhbmVsT3BlbiksdGhp''@;'; put 'put ''cy5hY2NvcmRpb25TZXJ2aWNlLmRpc2FibGVQYW5lbCh0aGlzLmlkLHRoaXMuZGlzYWJsZWQpfW5nT25DaGFuZ2VzKGEpe3RoaXMucGFuZWwmJmEucGFuZWxPcGVuJiZhLnBhbmVsT3Blbi5jdXJyZW50VmFsdWUhPT1hLnBhbmVsT3Blbi5wcmV2aW91c1ZhbHVlJiZ0aGlzLmFjY29yZGlvblNl''@;'; put 'put ''cnZpY2UudG9nZ2xlUGFuZWwodGhpcy5pZCxhLnBhbmVsT3Blbi5jdXJyZW50VmFsdWUpLHRoaXMucGFuZWwmJmEuZGlzYWJsZWQmJmEuZGlzYWJsZWQuY3VycmVudFZhbHVlIT09YS5kaXNhYmxlZC5wcmV2aW91c1ZhbHVlJiZ0aGlzLmFjY29yZGlvblNlcnZpY2UuZGlzYWJsZVBhbmVsKHRo''@;'; put 'put ''aXMuaWQsYS5kaXNhYmxlZC5jdXJyZW50VmFsdWUpfXRvZ2dsZVBhbmVsKCl7dGhpcy5hY2NvcmRpb25TZXJ2aWNlLnRvZ2dsZVBhbmVsKHRoaXMuaWQpfWNvbGxhcHNlUGFuZWxPbkFuaW1hdGlvbkRvbmUoYSl7YS5vcGVufHwodGhpcy5pZkV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9ITEpfWdl''@;'; put 'put ''dFBhbmVsU3RhdGVDbGFzc2VzKGEpe3JldHVybmBjbHItYWNjb3JkaW9uLXBhbmVsLSR7YS5zdGF0dXN9ICR7YS5vcGVuPyJjbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4iOiIifWB9Z2V0QWNjb3JkaW9uQ29udGVudElkKGEpe3JldHVybmBjbHItYWNjb3JkaW9uLWNvbnRlbnQtJHthfSdgfWdl''@;'; put 'put ''dEFjY29yZGlvbkhlYWRlcklkKGEpe3JldHVybmBjbHItYWNjb3JkaW9uLWhlYWRlci0ke2F9YH1zdGVwQ29tcGxldGVUZXh0KGEpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuc3RlcENvbXBsZXRlLHtTVEVQOmEudG9TdHJpbmcoKX0p''@;'; put 'put ''fXN0ZXBFcnJvclRleHQoYSl7cmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zdGVwRXJyb3Ise1NURVA6YS50b1N0cmluZygpfSl9ZW1pdFBhbmVsQ2hhbmdlKGEpe2EuaW5kZXghPT10aGlzLl9wYW5lbEluZGV4JiYodGhpcy5fcGFuZWxJ''@;'; put 'put ''bmRleD1hLmluZGV4LHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSksYS5vcGVuIT09dGhpcy5wYW5lbE9wZW4mJih0aGlzLnBhbmVsT3BlbkNoYW5nZS5lbWl0KGEub3BlbiksdGhpcy5wYW5lbE9wZW49YS5vcGVuKSxhLm9wZW4mJih0aGlzLmlmRXhwYW5kU2VydmljZS5leHBhbmRlZD0hMCl9''@;'; put 'put ''fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFVzKSxKZShiTSksSmUobzEpLEplKGNhKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFuZWwiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxk''@;'; put 'put ''LGgpe2lmKDEmYSYmdHMoaCxQY2UsNCksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5hY2NvcmRpb25EZXNjcmlwdGlvbj1mKX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWFjY29yZGlvbi1wYW5lbCIsITApKCJjbHItYWNjb3JkaW9uLXBh''@;'; put 'put ''bmVsLWRpc2FibGVkIixkLmRpc2FibGVkKX0saW5wdXRzOntkaXNhYmxlZDpbam4uTm9uZSwiY2xyQWNjb3JkaW9uUGFuZWxEaXNhYmxlZCIsImRpc2FibGVkIl0scGFuZWxPcGVuOltqbi5Ob25lLCJjbHJBY2NvcmRpb25QYW5lbE9wZW4iLCJwYW5lbE9wZW4iXX0sb3V0cHV0czp7cGFuZWxP''@;'; put 'put ''cGVuQ2hhbmdlOiJjbHJBY2NvcmRpb25QYW5lbE9wZW5DaGFuZ2UifSxmZWF0dXJlczpbWmkoW28xXSksSmFdLG5nQ29udGVudFNlbGVjdG9yczpMY2UsZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbImhlYWRlckJ1dHRvbiIsIiJdLFs0LCJuZ0lmIl0sWzMsIm5nQ2xhc3MiXSxbMSwiY2xyLWFj''@;'; put 'put ''Y29yZGlvbi1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbiIsMywiY2xpY2siLCJpZCIsImRpc2FibGVkIl0sWzEsImNsci1hY2NvcmRpb24tc3RhdHVzIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiLDEsImNsci1h''@;'; put 'put ''Y2NvcmRpb24tYW5nbGUiXSxbMSwiY2xyLWFjY29yZGlvbi1udW1iZXIiXSxbInN0YXR1cyIsImRhbmdlciIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJjbHItYWNjb3JkaW9uLWVycm9yLWljb24iXSxbInN0YXR1cyIsInN1Y2Nlc3MiLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIs''@;'; put 'put ''MSwiY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1pY29uIl0sWyJyb2xlIiwic3RhdHVzIiwxLCJjbHItc3Itb25seSJdLFsicm9sZSIsInJlZ2lvbiIsMSwiY2xyLWFjY29yZGlvbi1jb250ZW50LXJlZ2lvbiIsMywiaWQiXSxbImNsYXNzIiwiY2xyLWFjY29yZGlvbi1jb250ZW50Iiw0LCJuZ0lm''@;'; put 'put ''Il0sWzEsImNsci1hY2NvcmRpb24tY29udGVudCJdLFsxLCJjbHItYWNjb3JkaW9uLWlubmVyLWNvbnRlbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShSY2UpLGd0KDAsJFJlLDE5LDE4LCJuZy1jb250YWluZXIiLDEpLGdhKDEsImFzeW5jIikpLDImYSYmUmUoIm5nSWYi''@;'; put 'put ''LFVsKDEsMSxkLnBhbmVsKSl9LGRlcGVuZGVuY2llczpbSmMsJGksR3MscFNdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246V05lfSxjaGFuZ2VEZXRlY3Rpb246MH0pLGx9KSgpLE5jZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuYWNjb3JkaW9uU2VydmljZT1h''@;'; put 'put ''LHRoaXMubXVsdGlQYW5lbD0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W119bmdPbkluaXQoKXt0aGlzLnNldEFjY29yZGlvblN0cmF0ZWd5KCl9bmdPbkNoYW5nZXMoYSl7YS5tdWx0aVBhbmVsLmN1cnJlbnRWYWx1ZSE9PWEubXVsdGlQYW5lbC5wcmV2aW91c1ZhbHVlJiZ0aGlzLnNldEFjY29y''@;'; put 'put ''ZGlvblN0cmF0ZWd5KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JET01DaGFuZ2VzKCkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1zZXRBY2NvcmRpb25TdHJhdGVn''@;'; put 'put ''eSgpe3RoaXMuYWNjb3JkaW9uU2VydmljZS5zZXRTdHJhdGVneSh0aGlzLm11bHRpUGFuZWw/X00uTXVsdGk6X00uRGVmYXVsdCl9bGlzdGVuRm9yRE9NQ2hhbmdlcygpe3JldHVybiB0aGlzLnBhbmVscy5jaGFuZ2VzLnBpcGUobDQodGhpcy5wYW5lbHMpKS5zdWJzY3JpYmUoYT0+dGhpcy5h''@;'; put 'put ''Y2NvcmRpb25TZXJ2aWNlLnVwZGF0ZVBhbmVsT3JkZXIoYS50b0FycmF5KCkubWFwKGQ9PmQuaWQpKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGJNKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hY2NvcmRp''@;'; put 'put ''b24iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEmYSYmdHMoaCx1Uiw0KSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLnBhbmVscz1mKX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWFjY29yZGlvbiIsITApfSxpbnB1''@;'; put 'put ''dHM6e211bHRpUGFuZWw6W2puLk5vbmUsImNsckFjY29yZGlvbk11bHRpUGFuZWwiLCJtdWx0aVBhbmVsIl19LGZlYXR1cmVzOltaaShbYk1dKSxKYV0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGx9KSgpLEhjZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFjY29yZGlvbi1jb250''@;'; put 'put ''ZW50Il0sWyJjbHItc3RlcC1jb250ZW50Il1dLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxsfSkoKSxWY2U9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tdGl0bGUiXSxbImNsci1zdGVwLXRpdGxlIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEs''@;'; put 'put ''ZCl7MiZhJiZwcigiY2xyLWFjY29yZGlvbi10aXRsZSIsITApfSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaSgpLElyKDApKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbH0pKCksRV89KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzYWJsZUNob2NvbGF0ZUNoZWNrPSExLHRoaXMuX2Nob2NvbGF0ZT1uZXcgdG59Z2V0IGNob2NvbGF0ZSgpe3JldHVybiB0aGlzLl9jaG9jb2xhdGUuYXNPYnNlcnZhYmxlKCl9bmdBZnRlclZpZXdDaGVja2VkKCl7dGhpcy5kaXNhYmxl''@;'; put 'put ''Q2hvY29sYXRlQ2hlY2t8fHRoaXMuX2Nob2NvbGF0ZS5uZXh0KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsfSksbH0pKCksVF89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuc3Vic2Ny''@;'; put 'put ''aXB0aW9uPWQuY2hvY29sYXRlLnN1YnNjcmliZSgoKT0+e3RoaXMubGF0ZXN0Rmxhdm9yIT09dGhpcy5mbGF2b3ImJihkLmRpc2FibGVDaG9jb2xhdGVDaGVjaz0hMCxhLmRldGVjdENoYW5nZXMoKSxkLmRpc2FibGVDaG9jb2xhdGVDaGVjaz0hMSl9KX1uZ0FmdGVyQ29udGVudENoZWNrZWQo''@;'; put 'put ''KXt0aGlzLmxhdGVzdEZsYXZvcj10aGlzLmZsYXZvcn1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGNhKSxKZShFXykpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTps''@;'; put 'put ''fSksbH0pKCksTVo9KCgpPT57Y2xhc3MgbCBleHRlbmRzIEVfe31yZXR1cm4gbC5cdTAyNzVmYWM9KCgpPT57bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybihjfHwoYz1MYShsKSkpKGR8fGwpfX0pKCksbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFjY29y''@;'; put 'put ''ZGlvbiJdXSxmZWF0dXJlczpbZW9dfSksbH0pKCksQmNlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBUX3tjb25zdHJ1Y3RvcihhLGQsaCl7aWYoIWQpdGhyb3cgbmV3IEVycm9yKCJjbHItYWNjb3JkaW9uLXBhbmVsIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGNsci1hY2NvcmRpb24i''@;'; put 'put ''KTtzdXBlcihhLGQpLHRoaXMuZXhwYW5kPWh9Z2V0IGZsYXZvcigpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoY2EpLEplKE1aLDgpLEplKG8xKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmws''@;'; put 'put ''c2VsZWN0b3JzOltbImNsci1hY2NvcmRpb24tcGFuZWwiXV0sZmVhdHVyZXM6W2VvXX0pLGx9KSgpLGpjZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMoQ18sU2gsTWgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5c''@;'; put 'put ''dTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxuYV19KSxsfSkoKSxlSGU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWlu''@;'; put 'put ''aj1zaSh7aW1wb3J0czpbb28sbmEsamNlLGpjZV19KSxsfSkoKTt2YXIgVG89ZnVuY3Rpb24obCl7cmV0dXJuIGwuQXJyb3dMZWZ0PSJBcnJvd0xlZnQiLGwuQXJyb3dVcD0iQXJyb3dVcCIsbC5BcnJvd1JpZ2h0PSJBcnJvd1JpZ2h0IixsLkFycm93RG93bj0iQXJyb3dEb3duIixsLkJhY2tz''@;'; put 'put ''cGFjZT0iQmFja3NwYWNlIixsLlRhYj0iVGFiIixsLkVudGVyPSJFbnRlciIsbC5Fc2NhcGU9IkVzY2FwZSIsbC5TcGFjZT0iU3BhY2UiLGwuU3BhY2ViYXI9IiAiLGwuSG9tZT0iSG9tZSIsbC5FbmQ9IkVuZCIsbH0oVG98fHt9KSxfOD1mdW5jdGlvbihsKXtyZXR1cm4gbC5BcnJvd1VwPSJV''@;'; put 'put ''cCIsbC5BcnJvd0Rvd249IkRvd24iLGwuQXJyb3dSaWdodD0iUmlnaHQiLGwuQXJyb3dMZWZ0PSJMZWZ0IixsLlNwYWNlPSJTcGFjZWJhciIsbC5Fc2NhcGU9IkVzYyIsbH0oXzh8fHt9KTtmdW5jdGlvbiBFaChsKXtyZXR1cm4gbD09PVRvLkFycm93VXB8fGw9PT1fOC5BcnJvd1VwP1RvLkFy''@;'; put 'put ''cm93VXA6bD09PVRvLkFycm93RG93bnx8bD09PV84LkFycm93RG93bj9Uby5BcnJvd0Rvd246bD09PVRvLkFycm93UmlnaHR8fGw9PT1fOC5BcnJvd1JpZ2h0P1RvLkFycm93UmlnaHQ6bD09PVRvLkFycm93TGVmdHx8bD09PV84LkFycm93TGVmdD9Uby5BcnJvd0xlZnQ6bD09PVRvLlNwYWNl''@;'; put 'put ''fHxsPT09XzguU3BhY2U/VG8uU3BhY2U6bD09PVRvLkVzY2FwZXx8bD09PV84LkVzY2FwZT9Uby5Fc2NhcGU6bH1mdW5jdGlvbiBUWihsKXtjb25zdCBjPUVoKGwua2V5KTsoYz09PVRvLkFycm93VXB8fGM9PT1Uby5BcnJvd0Rvd258fGM9PT1Uby5BcnJvd0xlZnR8fGM9PT1Uby5BcnJvd1Jp''@;'; put 'put ''Z2h0KSYmbC5wcmV2ZW50RGVmYXVsdCgpfWxldCBSbD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fb3Blbj0hMSx0aGlzLl9vcGVuQ2hhbmdlPW5ldyB0bix0aGlzLl9vcGVuRXZlbnRDaGFuZ2U9bmV3IHRuLHRoaXMuX3BvcG92ZXJBbGlnbmVkPW5ldyB0bix0aGlzLl9wb3Bv''@;'; put 'put ''dmVyVmlzaWJsZT1uZXcgdG59Z2V0IG9wZW5DaGFuZ2UoKXtyZXR1cm4gdGhpcy5fb3BlbkNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgcG9wb3ZlclZpc2libGUoKXtyZXR1cm4gdGhpcy5fcG9wb3ZlclZpc2libGUuYXNPYnNlcnZhYmxlKCl9Z2V0IG9wZW5FdmVudCgpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9vcGVuRXZlbnR9c2V0IG9wZW5FdmVudChhKXt0aGlzLl9vcGVuRXZlbnQ9YSx0aGlzLl9vcGVuRXZlbnRDaGFuZ2UubmV4dChhKX1nZXQgb3Blbigpe3JldHVybiB0aGlzLl9vcGVufXNldCBvcGVuKGEpe3RoaXMuX29wZW4hPT0oYT0hIWEpJiYodGhpcy5fb3Blbj1hLHRoaXMuX29wZW5D''@;'; put 'put ''aGFuZ2UubmV4dChhKSl9Z2V0IG9yaWdpbmFsRXZlbnQoKXtyZXR1cm4gdGhpcy5fb3BlbkV2ZW50fWdldCBwb3BvdmVyQWxpZ25lZCgpe3JldHVybiB0aGlzLl9wb3BvdmVyQWxpZ25lZC5hc09ic2VydmFibGUoKX1nZXRFdmVudENoYW5nZSgpe3JldHVybiB0aGlzLl9vcGVuRXZlbnRDaGFu''@;'; put 'put ''Z2UuYXNPYnNlcnZhYmxlKCl9dG9nZ2xlV2l0aEV2ZW50KGEpe1RaKGEpLHRoaXMub3BlbkV2ZW50PWEsdGhpcy5vcGVuPSF0aGlzLm9wZW59cG9wb3ZlclZpc2libGVFbWl0KGEpe3RoaXMuX3BvcG92ZXJWaXNpYmxlLm5leHQoYSl9cG9wb3ZlckFsaWduZWRFbWl0KGEpe3RoaXMuX3BvcG92''@;'; put 'put ''ZXJBbGlnbmVkLm5leHQoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHdNPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMucmVu''@;'; put 'put ''ZGVyZXI9YSx0aGlzLnNtYXJ0T3BlblNlcnZpY2U9ZCx0aGlzLmRvY3VtZW50PWgsdGhpcy5vdXRzaWRlQ2xpY2tDbG9zZT0hMCx0aGlzLnNjcm9sbFRvQ2xvc2U9ITAsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGQub3BlbkNoYW5nZS5zdWJzY3JpYmUo''@;'; put 'put ''Zj0+e2Y/KHRoaXMuYWRkRXNjYXBlTGlzdGVuZXIoKSx0aGlzLmFkZENsaWNrTGlzdGVuZXIoKSx0aGlzLmFkZFNjcm9sbExpc3RlbmVyKCkpOnRoaXMucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKX0pLGQuZ2V0RXZlbnRDaGFuZ2UoKS5zdWJzY3JpYmUoZj0+e3RoaXMuaWdub3JlZEV2ZW50''@;'; put 'put ''PWZ9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpLHRoaXMucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKX1hZGRTY3JvbGxMaXN0ZW5lcigpe3RoaXMuc2Nyb2xsVG9DbG9zZSYmKHRoaXMuZG9jdW1lbnRTY3JvbGxlcj13ZCh0''@;'; put 'put ''aGlzLmRvY3VtZW50LCJzY3JvbGwiLHtjYXB0dXJlOiEwfSksdGhpcy5zY3JvbGxTdWJzY3JpcHRpb249dGhpcy5kb2N1bWVudFNjcm9sbGVyLnBpcGUoWmEodGhpcy50ZXN0Rm9yU21hcnRQb3BvdmVyQ29udGVudENvbnRhaW5lcikpLnN1YnNjcmliZSgoKT0+e3RoaXMuc21hcnRPcGVuU2Vy''@;'; put 'put ''dmljZS5vcGVuPSExLHRoaXMuc2V0QW5jaG9yRm9jdXMoKX0pKX1yZW1vdmVTY3JvbGxMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRTY3JvbGxlciYmKHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksZGVsZXRlIHRoaXMuZG9jdW1lbnRTY3JvbGxlcil9YWRkQ2xpY2tMaXN0''@;'; put 'put ''ZW5lcigpe3RoaXMub3V0c2lkZUNsaWNrQ2xvc2UmJih0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCJjbGljayIsYT0+e2E9PT10aGlzLmlnbm9yZWRFdmVudD9kZWxldGUgdGhpcy5pZ25vcmVkRXZlbnQ6KHRoaXMuc21hcnRP''@;'; put 'put ''cGVuU2VydmljZS5vcGVuPSExLGEudGFyZ2V0LmZvY3VzKCkpfSkpfXJlbW92ZUNsaWNrTGlzdGVuZXIoKXt0aGlzLm91dHNpZGVDbGlja0Nsb3NlJiYoZGVsZXRlIHRoaXMuaWdub3JlZEV2ZW50LHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyJiYodGhpcy5kb2N1bWVudENsaWNrTGlzdGVu''@;'; put 'put ''ZXIoKSxkZWxldGUgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpKX1hZGRFc2NhcGVMaXN0ZW5lcigpe3RoaXMuZXNjYXBlTGlzdGVuZXI9dGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwia2V5ZG93bi5lc2NhcGUiLCgpPT57dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW49''@;'; put 'put ''ITEsdGhpcy5zZXRBbmNob3JGb2N1cygpfSl9cmVtb3ZlRXNjYXBlTGlzdGVuZXIoKXt0aGlzLmVzY2FwZUxpc3RlbmVyJiYodGhpcy5lc2NhcGVMaXN0ZW5lcigpLGRlbGV0ZSB0aGlzLmVzY2FwZUxpc3RlbmVyKX1zZXRDbG9zZUZvY3VzKCl7dGhpcy5jbG9zZUJ1dHRvblJlZi5uYXRpdmVF''@;'; put 'put ''bGVtZW50LmZvY3VzKCl9c2V0QW5jaG9yRm9jdXMoKXt0aGlzLmFuY2hvckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9dGVzdEZvclNtYXJ0UG9wb3ZlckNvbnRlbnRDb250YWluZXIoYSl7bGV0IGQ9YS50YXJnZXQ7Zm9yKDtkLmNsYXNzTGlzdCYmImJvZHkiIT09ZC5wYXJlbnRF''@;'; put 'put ''bGVtZW50LmxvY2FsTmFtZTspZD1kLnBhcmVudEVsZW1lbnQ7cmV0dXJuISFkLmNsYXNzTGlzdCYmIWQuY2xhc3NMaXN0LmNvbnRhaW5zKCJjbHItcG9wb3Zlci1jb250ZW50Iil9cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVyKCksdGhpcy5yZW1v''@;'; put 'put ''dmVDbGlja0xpc3RlbmVyKCksdGhpcy5yZW1vdmVFc2NhcGVMaXN0ZW5lcigpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihkcyksY3IoUmwpLGNyKHpzKSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSks''@;'; put 'put ''bH0pKCksQ009KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe2EuYW5jaG9yQnV0dG9uUmVmPWR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHdNKSxKZShOaSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJj''@;'; put 'put ''bHJQb3BvdmVyQW5jaG9yIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWFuY2hvciIsITApfX0pLGx9KSgpLFpjZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLmVsZW1lbnRSZWY9YSx0aGlzLnNtYXJ0RXZlbnRz''@;'; put 'put ''U2VydmljZT1kLHRoaXMuc21hcnRPcGVuU2VydmljZT1oLHRoaXMuY2xvc2VDaGFuZ2U9bmV3IERyLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChoLm9wZW5DaGFuZ2UucGlwZShaYShmPT4hZikpLnN1YnNjcmliZSgoKT0+e3RoaXMuY2xvc2VDaGFuZ2Uu''@;'; put 'put ''bmV4dCgpfSkpfWhhbmRsZUNsaWNrKGEpe3RoaXMuc21hcnRPcGVuU2VydmljZS50b2dnbGVXaXRoRXZlbnQoYSksdGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uuc2V0QW5jaG9yRm9jdXMoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnNtYXJ0RXZlbnRzU2VydmljZS5jbG9zZUJ1dHRvblJlZj10''@;'; put 'put ''aGlzLmVsZW1lbnRSZWYsdGhpcy5zbWFydEV2ZW50c1NlcnZpY2Uuc2V0Q2xvc2VGb2N1cygpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCko''@;'; put 'put ''SmUoTmkpLEplKHdNKSxKZShSbCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyQ2xvc2VCdXR0b24iLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsxJmEmJkl0KCJjbGljayIsZnVuY3Rpb24oZil7cmV0dXJuIGQu''@;'; put 'put ''aGFuZGxlQ2xpY2soZil9KSwyJmEmJnByKCJjbHItc21hcnQtY2xvc2UtYnV0dG9uIiwhMCl9LG91dHB1dHM6e2Nsb3NlQ2hhbmdlOiJjbHJQb3BvdmVyT25DbG9zZUNoYW5nZSJ9fSksbH0pKCk7dmFyIEQwPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuVkVSVElDQUw9MF09IlZFUlRJQ0FMIixs''@;'; put 'put ''W2wuSE9SSVpPTlRBTD0xXT0iSE9SSVpPTlRBTCIsbH0oRDB8fHt9KSxRcz1mdW5jdGlvbihsKXtyZXR1cm4gbFtsLlNUQVJUPTBdPSJTVEFSVCIsbFtsLkNFTlRFUj0uNV09IkNFTlRFUiIsbFtsLkVORD0xXT0iRU5EIixsfShRc3x8e30pLFNNPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuQk9U''@;'; put 'put ''VE9NPTBdPSJCT1RUT00iLGxbbC5MRUZUPTFdPSJMRUZUIixsW2wuUklHSFQ9Ml09IlJJR0hUIixsW2wuVE9QPTNdPSJUT1AiLGx9KFNNfHx7fSk7Y29uc3QgX209bD0+KHsuLi5sLHNpZGU6LTEqbC5zaWRlfSksZDQ9KGwsYyk9Pntjb25zdCBhPWwuY29udGVudCsoYz8uNTotLjUpO3JldHVy''@;'; put 'put ''biBhPDB8fGE+MT9sOnsuLi5sLGNvbnRlbnQ6YX19O2Z1bmN0aW9uIGtfKGwsYyxhKXtyZXR1cm4gZD0+YyhsKGQpLGEpfWZ1bmN0aW9uIFNkKGwsYyxhKXtsZXQgZD1jLmxlZnQsaD1jLnRvcDtzd2l0Y2gobC5heGlzK2wuc2lkZSl7Y2FzZS0xOmQrPVljZShsLGMsYSksaC09YS5oZWlnaHQ7''@;'; put 'put ''YnJlYWs7Y2FzZSAxOmQrPVljZShsLGMsYSksaCs9Yy5oZWlnaHQ7YnJlYWs7Y2FzZSAwOmQtPWEud2lkdGgsaCs9V2NlKGwsYyxhKTticmVhaztjYXNlIDI6ZCs9Yy53aWR0aCxoKz1XY2UobCxjLGEpfXJldHVybnt4T2Zmc2V0OmQseU9mZnNldDpofX1mdW5jdGlvbiBZY2UobCxjLGEpe2xl''@;'; put 'put ''dCBkPTA7c3dpdGNoKGwuYW5jaG9yKXtjYXNlIFFzLlNUQVJUOmJyZWFrO2Nhc2UgUXMuQ0VOVEVSOmQrPWMud2lkdGgvMjticmVhaztjYXNlIFFzLkVORDpkKz1jLndpZHRofXN3aXRjaChsLmNvbnRlbnQpe2Nhc2UgUXMuU1RBUlQ6YnJlYWs7Y2FzZSBRcy5DRU5URVI6ZC09YS53aWR0aC8y''@;'; put 'put ''O2JyZWFrO2Nhc2UgUXMuRU5EOmQtPWEud2lkdGh9cmV0dXJuIGR9ZnVuY3Rpb24gV2NlKGwsYyxhKXtsZXQgZD0wO3N3aXRjaChsLmFuY2hvcil7Y2FzZSBRcy5TVEFSVDpicmVhaztjYXNlIFFzLkNFTlRFUjpkKz1jLmhlaWdodC8yO2JyZWFrO2Nhc2UgUXMuRU5EOmQrPWMuaGVpZ2h0fXN3''@;'; put 'put ''aXRjaChsLmNvbnRlbnQpe2Nhc2UgUXMuU1RBUlQ6YnJlYWs7Y2FzZSBRcy5DRU5URVI6ZC09YS5oZWlnaHQvMjticmVhaztjYXNlIFFzLkVORDpkLT1hLmhlaWdodH1yZXR1cm4gZH1sZXQgR2NlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLmV2ZW50U2VydmljZT1hLHRo''@;'; put 'put ''aXMucGxhdGZvcm1JZD1kLHRoaXMuX3Nob3VsZFJlYWxpZ249bmV3IHRuLHRoaXMuc2hvdWxkUmVhbGlnbj10aGlzLl9zaG91bGRSZWFsaWduLmFzT2JzZXJ2YWJsZSgpfXJlYWxpZ24oKXt0aGlzLl9zaG91bGRSZWFsaWduLm5leHQoKX1hbGlnbkNvbnRlbnQoYSl7aWYoIW1hKHRoaXMucGxh''@;'; put 'put ''dGZvcm1JZCkpcmV0dXJue3hPZmZzZXQ6MCx5T2Zmc2V0OjB9O3RoaXMuY3VycmVudEFuY2hvckNvb3Jkcz10aGlzLmV2ZW50U2VydmljZS5hbmNob3JCdXR0b25SZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzPWEuZ2V0''@;'; put 'put ''Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jb250ZW50T2Zmc2V0cz1TZCh0aGlzLnBvc2l0aW9uLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTtjb25zdCBkPWZ1bmN0aW9uIG5IZShsLGMpe2NvbnN0IGE9W10sZF9ib3R0b209bC55T2Zmc2V0''@;'; put 'put ''K2MuaGVpZ2h0LGRfbGVmdD1sLnhPZmZzZXQsZF9yaWdodD1sLnhPZmZzZXQrYy53aWR0aDtyZXR1cm4gbC55T2Zmc2V0Pj0wfHxhLnB1c2goU00uVE9QKSxkX2xlZnQ+PTB8fGEucHVzaChTTS5MRUZUKSxkX2JvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRF''@;'; put 'put ''bGVtZW50LmNsaWVudEhlaWdodCl8fGEucHVzaChTTS5CT1RUT00pLGRfcmlnaHQ8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKXx8YS5wdXNoKFNNLlJJR0hUKSxhfSh0aGlzLmNvbnRlbnRPZmZzZXRzLHRoaXMuY3VycmVudENvbnRl''@;'; put 'put ''bnRDb29yZHMpLGg9ZC5yZWR1Y2UoKGYsdik9PmYrdiwwKTtyZXR1cm4gMT09PWQubGVuZ3RoJiZ0aGlzLnBvc2l0aW9uLmF4aXM9PT1EMC5WRVJUSUNBTD90aGlzLmhhbmRsZVZlcnRpY2FsQXhpc09uZVZpb2xhdGlvbihoKToxPT09ZC5sZW5ndGgmJnRoaXMucG9zaXRpb24uYXhpcz09PUQw''@;'; put 'put ''LkhPUklaT05UQUw/dGhpcy5oYW5kbGVIb3Jpem9udGFsQXhpc09uZVZpb2xhdGlvbihoKToyPT09ZC5sZW5ndGgmJnRoaXMucG9zaXRpb24uYXhpcz09PUQwLlZFUlRJQ0FMP3RoaXMuaGFuZGxlVmVydGljYWxBeGlzVHdvVmlvbGF0aW9ucyhoKToyPT09ZC5sZW5ndGgmJnRoaXMucG9zaXRp''@;'; put 'put ''b24uYXhpcz09PUQwLkhPUklaT05UQUwmJnRoaXMuaGFuZGxlSG9yaXpvbnRhbEF4aXNUd29WaW9sYXRpb25zKGgpLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMudG9wPDAmJih0aGlzLmNvbnRlbnRPZmZzZXRzLnlPZmZzZXQrPU1hdGguYWJzKHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMu''@;'; put 'put ''dG9wKSksdGhpcy5jb250ZW50T2Zmc2V0cy55T2Zmc2V0K3RoaXMuY3VycmVudEFuY2hvckNvb3Jkcy55PDAmJih0aGlzLmNvbnRlbnRPZmZzZXRzLnlPZmZzZXQ9MC10aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzLnRvcCksdGhpcy5jb250ZW50T2Zmc2V0c31oYW5kbGVWZXJ0aWNhbEF4aXNP''@;'; put 'put ''bmVWaW9sYXRpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDM6dGhpcy5jb250ZW50T2Zmc2V0cz1TZChfbSh0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7Y2FzZSAxOnRoaXMuY29udGVudE9mZnNldHM9''@;'; put 'put ''U2QodGhpcy5wb3NpdGlvbix0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3JkcyksdGhpcy5jb250ZW50T2Zmc2V0cy54T2Zmc2V0PDAmJih0aGlzLmNvbnRlbnRPZmZzZXRzLnhPZmZzZXQ9MTApO2JyZWFrO2Nhc2UgMjp0aGlzLmNvbnRlbnRPZmZzZXRz''@;'; put 'put ''PVNkKGQ0KHRoaXMucG9zaXRpb24sITApLHRoaXMuY3VycmVudEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKX19aGFuZGxlVmVydGljYWxBeGlzVHdvVmlvbGF0aW9ucyhhKXtzd2l0Y2goYSl7Y2FzZSA1Ontjb25zdCBkPWtfKF9tLGQ0LCEwKTt0aGlzLmNvbnRlbnRP''@;'; put 'put ''ZmZzZXRzPVNkKGQodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgNDp7Y29uc3QgZD1rXyhfbSxkNCwhMSk7dGhpcy5jb250ZW50T2Zmc2V0cz1TZChkKHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVu''@;'; put 'put ''dEFuY2hvckNvb3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKTticmVha31jYXNlIDM6ZGVmYXVsdDpicmVhaztjYXNlIDI6e2NvbnN0IGQ9a18oX20sZDQsITApO3RoaXMuY29udGVudE9mZnNldHM9U2QoZCh0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhp''@;'; put 'put ''cy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9Y2FzZSAxOntjb25zdCBkPWtfKF9tLGQ0LCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPVNkKGQodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfX19aGFuZGxl''@;'; put 'put ''SG9yaXpvbnRhbEF4aXNPbmVWaW9sYXRpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6dGhpcy5jb250ZW50T2Zmc2V0cz1TZChfbSh0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JDb29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWs7Y2FzZSAwOnRoaXMu''@;'; put 'put ''Y29udGVudE9mZnNldHM9U2QoZDQodGhpcy5wb3NpdGlvbiwhMCksdGhpcy5jdXJyZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrO2Nhc2UgMzp0aGlzLmNvbnRlbnRPZmZzZXRzPVNkKGQ0KHRoaXMucG9zaXRpb24pLHRoaXMuY3VycmVudEFuY2hvckNv''@;'; put 'put ''b3Jkcyx0aGlzLmN1cnJlbnRDb250ZW50Q29vcmRzKX19aGFuZGxlSG9yaXpvbnRhbEF4aXNUd29WaW9sYXRpb25zKGEpe3N3aXRjaChhKXtjYXNlIDU6Y2FzZSA0Ontjb25zdCBkPWtfKF9tLGQ0LCExKTt0aGlzLmNvbnRlbnRPZmZzZXRzPVNkKGQodGhpcy5wb3NpdGlvbiksdGhpcy5jdXJy''@;'; put 'put ''ZW50QW5jaG9yQ29vcmRzLHRoaXMuY3VycmVudENvbnRlbnRDb29yZHMpO2JyZWFrfWNhc2UgMzpkZWZhdWx0OmJyZWFrO2Nhc2UgMjpjYXNlIDE6e2NvbnN0IGQ9a18oX20sZDQsITApO3RoaXMuY29udGVudE9mZnNldHM9U2QoZCh0aGlzLnBvc2l0aW9uKSx0aGlzLmN1cnJlbnRBbmNob3JD''@;'; put 'put ''b29yZHMsdGhpcy5jdXJyZW50Q29udGVudENvb3Jkcyk7YnJlYWt9fX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3Iod00pLGNyKElvKSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksTU09KCgp''@;'; put 'put ''PT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWKXt0aGlzLmRvY3VtZW50PWEsdGhpcy5jb250YWluZXI9ZCx0aGlzLnRlbXBsYXRlPWgsdGhpcy5yZW5kZXJlcj1mLHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2U9dix0aGlzLnNtYXJ0RXZlbnRzU2VydmljZT1TLHRoaXMuc21h''@;'; put 'put ''cnRPcGVuU2VydmljZT1WLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbj1udWxsLHRoaXMuc2hvdWxkUmVhbGlnbj0hMSx0aGlzLmNoZWNrQ29sbGVjdG9yPW5ldyBEcn1zZXQgb3BlbihhKXt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3Blbj0hIWF9c2V0''@;'; put 'put ''IGNvbnRlbnRBdChhKXt0aGlzLnNtYXJ0UG9zaXRpb25TZXJ2aWNlLnBvc2l0aW9uPWF9c2V0IG91dHNpZGVDbGlja0Nsb3NlKGEpe3RoaXMuc21hcnRFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlPSEhYX1zZXQgc2Nyb2xsVG9DbG9zZShhKXt0aGlzLnNtYXJ0RXZlbnRzU2Vydmlj''@;'; put 'put ''ZS5zY3JvbGxUb0Nsb3NlPSEhYX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXt0aGlzLnNtYXJ0T3BlblNlcnZpY2Uub3BlbiYmdGhpcy52aWV3JiZ0aGlzLnNob3VsZFJlYWxpZ24mJnRoaXMuY2hlY2tDb2xsZWN0b3IuZW1pdCgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9u''@;'; put 'put ''cy5wdXNoKHRoaXMuc21hcnRPcGVuU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShhPT57YT90aGlzLmFkZENvbnRlbnQoKTp0aGlzLnJlbW92ZUNvbnRlbnQoKX0pLHRoaXMuc21hcnRQb3NpdGlvblNlcnZpY2Uuc2hvdWxkUmVhbGlnbi5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNob3VsZFJl''@;'; put 'put ''YWxpZ249ITB9KSx0aGlzLmNoZWNrQ29sbGVjdG9yLnBpcGUoaDgoMCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuYWxpZ25Db250ZW50KCksdGhpcy5zaG91bGRSZWFsaWduPSExLHRoaXMudmlldyYmKHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwib3BhY2l0''@;'; put 'put ''eSIsIjEiKSx0aGlzLnNtYXJ0T3BlblNlcnZpY2UucG9wb3ZlclZpc2libGVFbWl0KCEwKSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbW92ZUNvbnRlbnQoKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfWFkZENvbnRlbnQoKXt0aGlzLnZpZXc9dGhp''@;'; put 'put ''cy5jb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGUpO2NvbnN0W2FdPXRoaXMudmlldy5yb290Tm9kZXM7dGhpcy5zbWFydEV2ZW50c1NlcnZpY2UuY29udGVudFJlZj1hLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYSwiY2xyLXBvcG92ZXItY29udGVudCIpLHRoaXMu''@;'; put 'put ''cmVuZGVyZXIuc2V0U3R5bGUoYSwidG9wIiwiMHB4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShhLCJsZWZ0IiwiMHB4IiksdGhpcy5yZW5kZXJlci5zZXRTdHlsZShhLCJvcGFjaXR5IiwiMCIpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPXRoaXMucmVuZGVyZXIubGlzdGVuKGEsImNs''@;'; put 'put ''aWNrIixkPT57dGhpcy5zbWFydE9wZW5TZXJ2aWNlLm9wZW5FdmVudD1kfSksdGhpcy52aWV3LnJvb3ROb2Rlcy5mb3JFYWNoKGQ9Pnt0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSxkKX0pLHRoaXMuc2hvdWxkUmVhbGlnbj0hMH1yZW1vdmVDb250ZW50KCl7''@;'; put 'put ''dGhpcy52aWV3JiYodGhpcy5yZW1vdmVDbGlja0xpc3RlbmVyRm4mJih0aGlzLnJlbW92ZUNsaWNrTGlzdGVuZXJGbigpLHRoaXMucmVtb3ZlQ2xpY2tMaXN0ZW5lckZuPW51bGwpLHRoaXMudmlldy5yb290Tm9kZXMuZm9yRWFjaChhPT50aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMu''@;'; put 'put ''ZG9jdW1lbnQuYm9keSxhKSksdGhpcy5jb250YWluZXIuY2xlYXIoKSxkZWxldGUgdGhpcy52aWV3LHRoaXMuc21hcnRPcGVuU2VydmljZS5wb3BvdmVyVmlzaWJsZUVtaXQoITEpKX1hbGlnbkNvbnRlbnQoKXtpZighdGhpcy52aWV3KXJldHVybjtjb25zdCBhPXRoaXMuc21hcnRQb3NpdGlv''@;'; put 'put ''blNlcnZpY2UuYWxpZ25Db250ZW50KHRoaXMudmlldy5yb290Tm9kZXNbMF0pO3RoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy52aWV3LnJvb3ROb2Rlc1swXSwidG9wIixgJHthLnlPZmZzZXR9cHhgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmlldy5yb290Tm9kZXNbMF0sImxl''@;'; put 'put ''ZnQiLGAke2EueE9mZnNldH1weGApLHRoaXMuc21hcnRPcGVuU2VydmljZS5wb3BvdmVyQWxpZ25lZEVtaXQodGhpcy52aWV3LnJvb3ROb2Rlc1swXSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHpzKSxKZShocyksSmUoVWEpLEplKGRzKSxK''@;'; put 'put ''ZShHY2UpLEplKHdNKSxKZShSbCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyQ29udGVudCIsIiJdXSxpbnB1dHM6e29wZW46W2puLk5vbmUsImNsclBvcG92ZXJDb250ZW50Iiwib3BlbiJdLGNvbnRlbnRBdDpbam4uTm9uZSwiY2xyUG9wb3Zl''@;'; put 'put ''ckNvbnRlbnRBdCIsImNvbnRlbnRBdCJdLG91dHNpZGVDbGlja0Nsb3NlOltqbi5Ob25lLCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCJvdXRzaWRlQ2xpY2tDbG9zZSJdLHNjcm9sbFRvQ2xvc2U6W2puLk5vbmUsImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9z''@;'; put 'put ''ZSIsInNjcm9sbFRvQ2xvc2UiXX19KSxsfSkoKSx4TT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuc21hcnRPcGVuU2VydmljZT1hLHRoaXMub3BlbkNsb3NlQ2hhbmdlPW5ldyBEcix0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5z''@;'; put 'put ''bWFydE9wZW5TZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGQ9Pnt0aGlzLm9wZW5DbG9zZUNoYW5nZS5uZXh0KGQpfSkpfWhhbmRsZUNsaWNrKGEpe3RoaXMuc21hcnRPcGVuU2VydmljZS50b2dnbGVXaXRoRXZlbnQoYSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9y''@;'; put 'put ''RWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShSbCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIl1dLGhvc3RWYXJzOjIs''@;'; put 'put ''aG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiY2xpY2siLGZ1bmN0aW9uKGYpe3JldHVybiBkLmhhbmRsZUNsaWNrKGYpfSksMiZhJiZwcigiY2xyLXNtYXJ0LW9wZW4tY2xvc2UiLCEwKX0sb3V0cHV0czp7b3BlbkNsb3NlQ2hhbmdlOiJjbHJQb3BvdmVyT3BlbkNsb3NlQ2hh''@;'; put 'put ''bmdlIn19KSxsfSkoKSxFTT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHt9KSxsfSkoKTt2YXIgTWQ9ZnVuY3Rpb24obCl7cmV0dXJuIGwuVVA9InVw''@;'; put 'put ''IixsLkRPV049ImRvd24iLGwuTEVGVD0ibGVmdCIsbC5SSUdIVD0icmlnaHQiLGx9KE1kfHx7fSk7bGV0IFQzPWNsYXNze2NvbnN0cnVjdG9yKGMpe3RoaXMucmVuZGVyZXI9Yyx0aGlzLl91bmxpc3RlbkZ1bmNzPVtdfWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9cmVzZXQo''@;'; put 'put ''Yyl7dGhpcy5fY3VycmVudD1jfWxpc3RlblRvQXJyb3dLZXlzKGMpe3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihjLCJrZXlkb3duLmFycm93dXAiLCgpPT4hdGhpcy5tb3ZlKE1kLlVQKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRl''@;'; put 'put ''cmVyLmxpc3RlbihjLCJrZXlkb3duLmFycm93ZG93biIsKCk9PiF0aGlzLm1vdmUoTWQuRE9XTikpKSx0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oYywia2V5ZG93bi5hcnJvd2xlZnQiLCgpPT4hdGhpcy5tb3ZlKE1kLkxFRlQpKSksdGhpcy5fdW5saXN0''@;'; put 'put ''ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGMsImtleWRvd24uYXJyb3dyaWdodCIsKCk9PiF0aGlzLm1vdmUoTWQuUklHSFQpKSl9cmVnaXN0ZXJDb250YWluZXIoYyxhPSIwIil7dGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoYywidGFiaW5kZXgiLGEpLHRoaXMubGlzdGVu''@;'; put 'put ''VG9BcnJvd0tleXMoYyksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGMsImtleWRvd24uc3BhY2UiLCgpPT4hdGhpcy5hY3RpdmF0ZUN1cnJlbnQoKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihjLCJrZXlkb3du''@;'; put 'put ''LmVudGVyIiwoKT0+IXRoaXMuYWN0aXZhdGVDdXJyZW50KCkpKX1tb3ZlVG8oYyl7dm9pZCAwIT09YyYmKHRoaXMuY3VycmVudCYmdGhpcy5jdXJyZW50LmJsdXIoKSxjLmZvY3VzKCksdGhpcy5fY3VycmVudD1jKX1tb3ZlKGMpe2xldCBhPSExO2lmKHRoaXMuY3VycmVudCl7Y29uc3QgZD10''@;'; put 'put ''aGlzLmN1cnJlbnRbY107ZCYmKHhTKGQpP2Q6T28oZCkpLnN1YnNjcmliZShmPT57ZiYmKHRoaXMubW92ZVRvKGYpLGE9ITApfSl9cmV0dXJuIGF9YWN0aXZhdGVDdXJyZW50KCl7cmV0dXJuISghdGhpcy5jdXJyZW50fHwhdGhpcy5jdXJyZW50LmFjdGl2YXRlfHwodGhpcy5jdXJyZW50LmFj''@;'; put 'put ''dGl2YXRlKCksMCkpfWRldGFjaExpc3RlbmVycygpe3RoaXMuX3VubGlzdGVuRnVuY3MuZm9yRWFjaChjPT5jKCkpfX07VDMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGMpe3JldHVybiBuZXcoY3x8VDMpKGNyKGRzKSl9LFQzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOlQzLGZhY3Rvcnk6VDMuXHUwMjc1''@;'; put 'put ''ZmFjfSk7Y29uc3QgS2NlPXtwcm92aWRlOlQzLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gckhlKGwsYyl7cmV0dXJuIGx8fG5ldyBUMyhjKX0sZGVwczpbW25ldyBZMCxuZXcgeTEsVDNdLGRzXX07dmFyIFRoPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuQkVGT1JFPS0xXT0iQkVGT1JFIixsW2wuQUZU''@;'; put 'put ''RVI9MV09IkFGVEVSIixsfShUaHx8e30pO2NsYXNzIEYxe31GMVsidG9wLXJpZ2h0Il09e2F4aXM6RDAuVkVSVElDQUwsc2lkZTpUaC5CRUZPUkUsYW5jaG9yOlFzLkVORCxjb250ZW50OlFzLkVORH0sRjFbInRvcC1sZWZ0Il09e2F4aXM6RDAuVkVSVElDQUwsc2lkZTpUaC5CRUZPUkUsYW5j''@;'; put 'put ''aG9yOlFzLlNUQVJULGNvbnRlbnQ6UXMuU1RBUlR9LEYxWyJib3R0b20tcmlnaHQiXT17YXhpczpEMC5WRVJUSUNBTCxzaWRlOlRoLkFGVEVSLGFuY2hvcjpRcy5FTkQsY29udGVudDpRcy5FTkR9LEYxWyJib3R0b20tbGVmdCJdPXtheGlzOkQwLlZFUlRJQ0FMLHNpZGU6VGguQUZURVIsYW5j''@;'; put 'put ''aG9yOlFzLlNUQVJULGNvbnRlbnQ6UXMuU1RBUlR9LEYxWyJyaWdodC10b3AiXT17YXhpczpEMC5IT1JJWk9OVEFMLHNpZGU6VGguQUZURVIsYW5jaG9yOlFzLkNFTlRFUixjb250ZW50OlFzLkVORH0sRjFbInJpZ2h0LWJvdHRvbSJdPXtheGlzOkQwLkhPUklaT05UQUwsc2lkZTpUaC5BRlRF''@;'; put 'put ''UixhbmNob3I6UXMuU1RBUlQsY29udGVudDpRcy5TVEFSVH0sRjFbImxlZnQtdG9wIl09e2F4aXM6RDAuSE9SSVpPTlRBTCxzaWRlOlRoLkJFRk9SRSxhbmNob3I6UXMuQ0VOVEVSLGNvbnRlbnQ6UXMuRU5EfSxGMVsibGVmdC1ib3R0b20iXT17YXhpczpEMC5IT1JJWk9OVEFMLHNpZGU6VGgu''@;'; put 'put ''QkVGT1JFLGFuY2hvcjpRcy5TVEFSVCxjb250ZW50OlFzLlNUQVJUfTtjb25zdCBkUj1uZXcgJHIoIlBPUE9WRVJfSE9TVF9BTkNIT1IiKTtsZXQgaUhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy50b2dnbGVTZXJ2aWNlPWEsdGhpcy5sYXN0T3BlbkNoYW5nZT1udWxsfW5n''@;'; put 'put ''T25Jbml0KCl7dGhpcy5zdWJzY3JpcHRpb249dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLmxhc3RPcGVuQ2hhbmdlPWF9KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpfW9uRXNjYXBlS2V5KGEpe251bGwhPT10''@;'; put 'put ''aGlzLmxhc3RPcGVuQ2hhbmdlJiYoITE9PT10aGlzLmxhc3RPcGVuQ2hhbmdlJiZhLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubGFzdE9wZW5DaGFuZ2U9bnVsbCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFJsKSl9LGwuXHUwMjc1ZGlyPWdy''@;'; put 'put ''KHt0eXBlOmwsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgia2V5dXAuZXNjYXBlIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vbkVzY2FwZUtleShmKX0pfSxzdGFuZGFsb25lOiEwfSksbH0pKCksaDQ9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9u''@;'; put 'put ''KGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc3RhbmRhbG9uZTohMCxmZWF0dXJlczpbWmkoW1JsLHdNLEdjZSx7cHJvdmlkZTpkUix1c2VFeGlzdGluZzpOaX1dKSxBMShbaUhlXSldfSksbH0pKCk7Y2xhc3MgQVp7c3RhdGljIGxpbmtQYXJlbnQoYyxhLGQp''@;'; put 'put ''e2MuZm9yRWFjaChoPT5oW2RdPWEpfXN0YXRpYyBsaW5rVmVydGljYWwoYyxhPSEwKXtjLmZvckVhY2goKGQsaCk9PntoPjAmJihkLnVwPWNbaC0xXSksaDxjLmxlbmd0aC0xJiYoZC5kb3duPWNbaCsxXSl9KSxhJiZjLmxlbmd0aD4xJiYoY1swXS51cD1jW2MubGVuZ3RoLTFdLGNbYy5sZW5n''@;'; put 'put ''dGgtMV0uZG93bj1jWzBdKX19bGV0IGY0PSgoKT0+e2NsYXNzIGx7dXNlckRlZmluZWRXaWR0aChhKXtjb25zdCBkPWEuY2xvbmVOb2RlKCEwKTtkLmlkJiYoZC5pZD1kLmlkKyItY2xvbmUiKSxkLmNsYXNzTGlzdC5hZGQoImRhdGFncmlkLWNlbGwtd2lkdGgtemVybyIpLGRvY3VtZW50LmJv''@;'; put 'put ''ZHkuYXBwZW5kQ2hpbGQoZCk7Y29uc3QgaD10aGlzLmNsaWVudFJlY3QoZCkud2lkdGg7cmV0dXJuIGQucmVtb3ZlKCksaH1zY3JvbGxCYXJXaWR0aChhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aC1hLmNsaWVudFdpZHRofXNjcm9sbFdpZHRoKGEpe3JldHVybiBhLnNjcm9sbFdpZHRofHwwfWNv''@;'; put 'put ''bXB1dGVkSGVpZ2h0KGEpe3JldHVybiBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGEpLmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIpLDEwKX1jbGllbnRSZWN0KGEpe2NvbnN0IGQ9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOnBhcnNlSW50KGQudG9wLDEwKSxib3R0''@;'; put 'put ''b206cGFyc2VJbnQoZC5ib3R0b20sMTApLGxlZnQ6cGFyc2VJbnQoZC5sZWZ0LDEwKSxyaWdodDpwYXJzZUludChkLnJpZ2h0LDEwKSx3aWR0aDpwYXJzZUludChkLndpZHRoLDEwKSxoZWlnaHQ6cGFyc2VJbnQoZC5oZWlnaHQsMTApfX1taW5XaWR0aChhKXtyZXR1cm4gcGFyc2VJbnQoZ2V0''@;'; put 'put ''Q29tcHV0ZWRTdHlsZShhKS5nZXRQcm9wZXJ0eVZhbHVlKCJtaW4td2lkdGgiKSwxMCl9Zm9jdXMoYSl7YS5mb2N1cygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9''@;'; put 'put ''KSxsfSkoKSxoUj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLmVsZW1lbnQ9YSx0aGlzLmRvbUFkYXB0ZXI9ZCx0aGlzLnJlbmRlcmVyPWgsdGhpcy5jbHJFeHBhbmRUcmlnZ2VyPSExLHRoaXMuc3RhcnRIZWlnaHQ9MH1nZXQgZXhwYW5kQW5pbWF0aW9uKCl7cmV0dXJu''@;'; put 'put ''e3ZhbHVlOnRoaXMuY2xyRXhwYW5kVHJpZ2dlcixwYXJhbXM6e3N0YXJ0SGVpZ2h0OnRoaXMuc3RhcnRIZWlnaHR9fX1hbmltYXRpb25TdGFydChhKXsidm9pZCIhPT1hLmZyb21TdGF0ZSYmdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwib3ZlcmZs''@;'; put 'put ''b3ciLCJoaWRkZW4iKX1hbmltYXRpb25Eb25lKGEpeyJ2b2lkIiE9PWEuZnJvbVN0YXRlJiYodGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwib3ZlcmZsb3ciKSx0aGlzLnVwZGF0ZVN0YXJ0SGVpZ2h0KCkpfXVwZGF0ZVN0YXJ0SGVpZ2h0KCl7''@;'; put 'put ''dGhpcy5zdGFydEhlaWdodD10aGlzLmRvbUFkYXB0ZXIuY29tcHV0ZWRIZWlnaHQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpfHwwfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShOaSksSmUoZjQpLEplKGRzKSl9LGwuXHUwMjc1Y21wPVNy''@;'; put 'put ''KHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1leHBhbmRhYmxlLWFuaW1hdGlvbiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezEmYSYmaWooIkBleHBhbmRBbmltYXRpb24uc3RhcnQiLGZ1bmN0aW9uKGYpe3JldHVybiBkLmFuaW1hdGlvblN0YXJ0KGYpfSkoIkBl''@;'; put 'put ''eHBhbmRBbmltYXRpb24uZG9uZSIsZnVuY3Rpb24oZil7cmV0dXJuIGQuYW5pbWF0aW9uRG9uZShmKX0pLDImYSYmdGooIkBleHBhbmRBbmltYXRpb24iLGQuZXhwYW5kQW5pbWF0aW9uKX0saW5wdXRzOntjbHJFeHBhbmRUcmlnZ2VyOiJjbHJFeHBhbmRUcmlnZ2VyIn0sZmVhdHVyZXM6W1pp''@;'; put 'put ''KFtmNF0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaSgpLElyKDApKX0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdLGRhdGE6e2FuaW1hdGlvbjpbQ2QoImV4cGFuZEFuaW1hdGlv''@;'; put 'put ''biIsW1NjKCJ0cnVlIDw9PiBmYWxzZSIsW0ZzKHtoZWlnaHQ6Int7c3RhcnRIZWlnaHR9fXB4In0pLGp1KCIwLjJzIGVhc2UtaW4tb3V0IixGcyh7aGVpZ2h0OiIqIn0pKV0pXSldfX0pLGx9KSgpLERaPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpLG9IZT0wO2NvbnN0IERfPW5ldyAkcigiSUZfQUNUSVZFX0lEIiksYUhlPXtwcm92aWRlOkRfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gc0hlKCl7cmV0dXJuKytv''@;'; put 'put ''SGV9fTtsZXQgYjg9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2N1cnJlbnRDaGFuZ2U9bmV3IHRufWdldCBjdXJyZW50Q2hhbmdlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGN1cnJlbnQoKXtyZXR1cm4gdGhpcy5fY3VycmVudH1z''@;'; put 'put ''ZXQgY3VycmVudChhKXt0aGlzLl9jdXJyZW50IT09YSYmKHRoaXMuX2N1cnJlbnQ9YSx0aGlzLl9jdXJyZW50Q2hhbmdlLm5leHQoYSkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5c''@;'; put 'put ''dTAyNzVmYWN9KSxsfSkoKSxJXz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuaWZBY3RpdmVTZXJ2aWNlPWEsdGhpcy5pZD1kLHRoaXMudGVtcGxhdGU9aCx0aGlzLmNvbnRhaW5lcj1mLHRoaXMuYWN0aXZlQ2hhbmdlPW5ldyBEcighMSksdGhpcy53YXNBY3RpdmU9''@;'; put 'put ''ITEsdGhpcy5jaGVja0FuZFVwZGF0ZVZpZXcoYS5jdXJyZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50Q2hhbmdlLnN1YnNjcmliZSh2PT57dGhpcy5jaGVja0FuZFVwZGF0ZVZpZXcodil9KX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuaWZBY3Rp''@;'; put 'put ''dmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfXNldCBhY3RpdmUoYSl7YSYmKHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9dGhpcy5pZCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXVwZGF0ZVZpZXcoYSl7YT90aGlzLmNvbnRhaW5lci5jcmVh''@;'; put 'put ''dGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk6dGhpcy5jb250YWluZXIuY2xlYXIoKX1jaGVja0FuZFVwZGF0ZVZpZXcoYSl7Y29uc3QgZD1hPT09dGhpcy5pZDtkIT09dGhpcy53YXNBY3RpdmUmJih0aGlzLnVwZGF0ZVZpZXcoZCksdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChkKSx0aGlz''@;'; put 'put ''Lndhc0FjdGl2ZT1kKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoYjgpLEplKERfKSxKZShVYSksSmUoaHMpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xySWZBY3RpdmUiLCIiXV0saW5wdXRzOnthY3RpdmU6''@;'; put 'put ''W2puLk5vbmUsImNscklmQWN0aXZlIiwiYWN0aXZlIl19LG91dHB1dHM6e2FjdGl2ZUNoYW5nZToiY2xySWZBY3RpdmVDaGFuZ2UifX0pLGx9KSgpLGtoPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMudG9nZ2xlU2VydmljZT1hLHRoaXMudGVtcGxhdGU9ZCx0aGlzLmNv''@;'; put 'put ''bnRhaW5lcj1oLHRoaXMub3BlbkNoYW5nZT1uZXcgRHIoITEpLHRoaXMuc3Vic2NyaXB0aW9uPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShmPT57dGhpcy51cGRhdGVWaWV3KGYpLHRoaXMub3BlbkNoYW5nZS5lbWl0KGYpfSl9Z2V0IG9wZW4oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy50b2dnbGVTZXJ2aWNlLm9wZW59c2V0IG9wZW4oYSl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49YX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9dXBkYXRlVmlldyhhKXthP3RoaXMuY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBs''@;'; put 'put ''YXRlKTp0aGlzLmNvbnRhaW5lci5jbGVhcigpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShSbCksSmUoVWEpLEplKGhzKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNscklmT3BlbiIsIiJdXSxpbnB1dHM6e29w''@;'; put 'put ''ZW46W2puLk5vbmUsImNscklmT3BlbiIsIm9wZW4iXX0sb3V0cHV0czp7b3BlbkNoYW5nZToiY2xySWZPcGVuQ2hhbmdlIn19KSxsfSkoKSxYY2U9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYpe3RoaXMudGVtcGxhdGU9YSx0aGlzLmNvbnRhaW5lcj1kLHRoaXMuZWw9aCx0''@;'; put 'put ''aGlzLnJlbmRlcmVyPWYsdGhpcy5leHBhbmQ9dix0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBEcighMCksdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2godi5leHBhbmRDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy51cGRh''@;'; put 'put ''dGVWaWV3KCksdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kLmV4cGFuZGVkKX0pKX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5fZXhwYW5kZWR9c2V0IGV4cGFuZGVkKGEpeyJib29sZWFuIj09dHlwZW9mIGEmJih0aGlzLmV4cGFuZC5leHBhbmRlZD1hLHRoaXMuX2V4''@;'; put 'put ''cGFuZGVkPWEpfW5nT25Jbml0KCl7dGhpcy5leHBhbmQuZXhwYW5kYWJsZSsrLHRoaXMudXBkYXRlVmlldygpfW5nT25EZXN0cm95KCl7dGhpcy5leHBhbmQuZXhwYW5kYWJsZS0tLHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXVwZGF0ZVZpZXcoKXtp''@;'; put 'put ''ZighdGhpcy5leHBhbmQuZXhwYW5kZWR8fDA9PT10aGlzLmNvbnRhaW5lci5sZW5ndGgpaWYodGhpcy50ZW1wbGF0ZSl0aGlzLmV4cGFuZC5leHBhbmRlZD90aGlzLmNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZSk6dGhpcy5jb250YWluZXIuY2xlYXIoKTtlbHNl''@;'; put 'put ''IHRyeXt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGlzcGxheSIsdGhpcy5leHBhbmQuZXhwYW5kZWQ/bnVsbDoibm9uZSIpfWNhdGNoe319fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFVhLDgpLEplKGhz''@;'; put 'put ''KSxKZShOaSksSmUoZHMpLEplKG8xKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNscklmRXhwYW5kZWQiLCIiXV0saW5wdXRzOntleHBhbmRlZDpbam4uTm9uZSwiY2xySWZFeHBhbmRlZCIsImV4cGFuZGVkIl19LG91dHB1dHM6e2V4cGFuZGVkQ2hhbmdlOiJj''@;'; put 'put ''bHJJZkV4cGFuZGVkQ2hhbmdlIn19KSxsfSkoKSxBaD0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvb119KSxsfSkoKTtjb25zdCBs''@;'; put 'put ''SGU9e3Byb3ZpZGU6bmV3ICRyKCJGT0NVU19PTl9WSUVXX0lOSVQiKSx1c2VWYWx1ZTohMH07bGV0IGZSPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2ko''@;'; put 'put ''e3Byb3ZpZGVyczpbbEhlXSxpbXBvcnRzOltvb119KSxsfSkoKSx1SGU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbmEsRU1d''@;'; put 'put ''fSksbH0pKCksRGg9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuZWw9YSx0aGlzLnJlbmRlcmVyPWQsdGhpcy5jbHJMb2FkaW5nQ2hhbmdlPW5ldyBEcighMSksdGhpcy5idXR0b25TdGF0ZT1yMSx0aGlzLnN0YXRlPXIxLkRFRkFVTFR9bG9hZGluZ1N0YXRlQ2hhbmdlKGEp''@;'; put 'put ''e2lmKGEhPT10aGlzLnN0YXRlKXtzd2l0Y2godGhpcy5zdGF0ZT1hLGEpe2Nhc2UgcjEuREVGQVVMVDp0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiKSx0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwi''@;'; put 'put ''dHJhbnNmb3JtIiksdGhpcy5kaXNhYmxlZHx8dGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIpO2JyZWFrO2Nhc2UgcjEuTE9BRElORzp0aGlzLnNldEV4cGxpY2l0QnV0dG9uV2lkdGgoKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxl''@;'; put 'put ''KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidHJhbnNmb3JtIiwidHJhbnNsYXRleigwKSIpLHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLCIiKTticmVhaztjYXNlIHIxLlNVQ0NFU1M6dGhpcy5zZXRFeHBsaWNpdEJ1dHRvbldpZHRo''@;'; put 'put ''KCk7YnJlYWs7Y2FzZSByMS5FUlJPUjp0aGlzLmxvYWRpbmdTdGF0ZUNoYW5nZShyMS5ERUZBVUxUKX10aGlzLmNsckxvYWRpbmdDaGFuZ2UuZW1pdChhKX19c2V0RXhwbGljaXRCdXR0b25XaWR0aCgpe2lmKHRoaXMuZWwubmF0aXZlRWxlbWVudCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50Lmdl''@;'; put 'put ''dEJvdW5kaW5nQ2xpZW50UmVjdCl7Y29uc3QgYT10aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD1NYXRoLm1heCg0MixhLndpZHRoKTt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwid2lkdGgiLGAke2R9cHhgKX19fXJl''@;'; put 'put ''dHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSxKZShkcykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJidXR0b24iLCJjbHJMb2FkaW5nIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZh''@;'; put 'put ''JiZ1cigiZGlzYWJsZWQiLGQuZGlzYWJsZWQ/IiI6bnVsbCl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7Y2xyTG9hZGluZ0NoYW5nZToiY2xyTG9hZGluZ0NoYW5nZSJ9LGZlYXR1cmVzOltaaShbe3Byb3ZpZGU6dk0sdXNlRXhpc3Rpbmc6bH1dKV0sYXR0cnM6aExl''@;'; put 'put ''LG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczo0LHZhcnM6NSxjb25zdHM6W1szLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiY2xyLWxvYWRpbmctYnRuLWNvbnRlbnQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1pbmxpbmUiXSxb''@;'; put 'put ''MSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwic3Bpbm5lci1jaGVjayJdLFsxLCJjbHItbG9hZGluZy1idG4tY29udGVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ2UoMCwic3BhbiIsMCksZ3QoMSxmTGUsMiwxLCJuZy1jb250YWluZXIiLDEpKDIscExlLDIs''@;'; put 'put ''MSwibmctY29udGFpbmVyIiwxKSgzLGdMZSwyLDEsInNwYW4iLDIpLG1lKCkpLDImYSYmKFJlKCJAcGFyZW50Iix2b2lkIDApKCJuZ1N3aXRjaCIsZC5zdGF0ZSksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIixkLmJ1dHRvblN0YXRlLkxPQURJTkcpLF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIsZC5i''@;'; put 'put ''dXR0b25TdGF0ZS5TVUNDRVNTKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLGQuYnV0dG9uU3RhdGUuREVGQVVMVCkpfSxkZXBlbmRlbmNpZXM6W3doLHAzXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltDZCgicGFyZW50IixbU2MoIjplbnRlciIsW10pXSksQ2QoImRlZmF1bHRC''@;'; put 'put ''dXR0b24iLFtTYygiOmVudGVyIixbRnMoe29wYWNpdHk6MH0pLGp1KCIyMDBtcyAxMDBtcyBlYXNlLWluIixGcyh7b3BhY2l0eToxfSkpXSksU2MoIjpsZWF2ZSIsW0ZzKHtvcGFjaXR5OjB9KV0pXSksQ2QoInNwaW5uZXIiLFtTYygiOmVudGVyIixbRnMoe29wYWNpdHk6MH0pLGp1KCIyMDBt''@;'; put 'put ''cyAxMDBtcyBlYXNlLWluIixGcyh7b3BhY2l0eToxfSkpXSksU2MoIjpsZWF2ZSIsW0ZzKHtvcGFjaXR5OjF9KSxqdSgiMTAwbXMgZWFzZS1vdXQiLEZzKHtvcGFjaXR5OjB9KSldKV0pLENkKCJ2YWxpZGF0ZWQiLFtTYygiOmVudGVyIixbanUoIjYwMG1zIixNRGUoW0ZzKHt0cmFuc2Zvcm06''@;'; put 'put ''InNjYWxlKDAsMCkiLG9mZnNldDowfSksRnMoe29wYWNpdHk6MSxvZmZzZXQ6LjJ9KSxGcyh7dHJhbnNmb3JtOiJzY2FsZSgxLjIsMS4yKSIsb2Zmc2V0Oi40fSksRnMoe3RyYW5zZm9ybToic2NhbGUoLjksLjkpIixvZmZzZXQ6LjZ9KSxGcyh7dHJhbnNmb3JtOiJzY2FsZSgxLDEpIixvZmZz''@;'; put 'put ''ZXQ6MX0pXSkpXSksU2MoIjpsZWF2ZSIsW0ZzKHtvcGFjaXR5OjF9KSxqdSgiMTAwbXMgZWFzZS1vdXQiLEZzKHtvcGFjaXR5OjB9KSldKV0pXX19KSxsfSkoKSxoSGU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUw''@;'; put 'put ''Mjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb29dfSksbH0pKCksZkhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhQbGUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVt''@;'; put 'put ''b2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltoSGUsdUhlXX0pLGx9KSgpLHBIZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1sibmct''@;'; put 'put ''Y29tcG9uZW50Il1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7fSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxwUj0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6''@;'; put 'put ''bH0pLGwuXHUwMjc1aW5qPXNpKHt9KSxsfSkoKSxnSGU9MCxJaD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5faWQ9ImNsci1mb3JtLWNvbnRyb2wtIisgKytnSGUsdGhpcy5faWRDaGFuZ2U9bmV3IEFyKHRoaXMuX2lkKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlk''@;'; put 'put ''KGEpe3RoaXMuX2lkPWEsdGhpcy5faWRDaGFuZ2UubmV4dChhKX1nZXQgaWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5faWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmws''@;'; put 'put ''ZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLG1IZT0wLHk4PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9pZD0iY2xyLWZvcm0tY29udGFpbmVyLSIrICsrbUhlLHRoaXMuX2lkQ2hhbmdlPW5ldyBBcih0aGlzLl9pZCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBp''@;'; put 'put ''ZChhKXt0aGlzLl9pZD1hLHRoaXMuX2lkQ2hhbmdlLm5leHQoYSl9Z2V0IGlkQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2lkQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjps''@;'; put 'put ''LGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtsZXQgSVo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuY29udHJvbElkU2VydmljZT1hLHRoaXMuY29udGFpbmVySWRTZXJ2aWNlPWQsdGhpcy5jb250cm9sSWRTdWZmaXg9ImFic3RyYWN0In1nZXQgaWQoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jb250YWluZXJJZFNlcnZpY2U/YCR7dGhpcy5jb250YWluZXJJZFNlcnZpY2UuaWR9LSR7dGhpcy5jb250cm9sSWRTdWZmaXh9YDp0aGlzLmNvbnRyb2xJZFNlcnZpY2U/YCR7dGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkfS0ke3RoaXMuY29udHJvbElkU3VmZml4fWA6bnVsbH19cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoSWgsOCksSmUoeTgsOCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsfSksbH0pKCksdkhlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBJWntjb25zdHJ1Y3RvcihhLGQpe3N1cGVyKGEsZCksdGhpcy5jb250cm9s''@;'; put 'put ''SWRTZXJ2aWNlPWEsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9ZCx0aGlzLmNvbnRyb2xJZFN1ZmZpeD0iZXJyb3IifX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShJaCw4KSxKZSh5OCw4KSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0''@;'; put 'put ''b3JzOltbImNsci1jb250cm9sLWVycm9yIl1dLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiYodXIoImlkIixkLmlkKSxwcigiY2xyLXN1YnRleHQiLCEwKSgiZXJyb3IiLCEwKSl9LGZlYXR1cmVzOltlb10sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEs''@;'; put 'put ''dmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGdSPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBJWntjb25zdHJ1Y3RvcihhLGQpe3N1cGVyKGEsZCksdGhpcy5jb250cm9sSWRTZXJ2aWNlPWEsdGhpcy5jb250YWlu''@;'; put 'put ''ZXJJZFNlcnZpY2U9ZCx0aGlzLmNvbnRyb2xJZFN1ZmZpeD0iaGVscGVyIn19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoSWgsOCksSmUoeTgsOCkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItY29udHJvbC1oZWxw''@;'; put 'put ''ZXIiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJih1cigiaWQiLGQuaWQpLHByKCJjbHItc3VidGV4dCIsITApKX0sZmVhdHVyZXM6W2VvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEm''@;'; put 'put ''JihIaSgpLElyKDApKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksTjE9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnRyb2xDaGFuZ2VzPW5ldyB0bix0aGlzLl9oZWxwZXJzPW5ldyB0bn1nZXQgY29udHJvbENoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY29udHJvbENoYW5n''@;'; put 'put ''ZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IGhlbHBlcnNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5faGVscGVycy5hc09ic2VydmFibGUoKX1zZXRDb250cm9sKGEpe3RoaXMuX2NvbnRyb2xDaGFuZ2VzLm5leHQoYSl9c2V0SGVscGVycyhhKXt0aGlzLl9oZWxwZXJzLm5leHQoYSl9fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO3ZhciBKMj1mdW5jdGlvbihsKXtyZXR1cm4gbC5OT05FPSJOT05FIixsLlZBTElEPSJWQUxJRCIsbC5JTlZBTElEPSJJTlZBTElE''@;'; put 'put ''IixsfShKMnx8e30pO2xldCBSaD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMubmdDb250cm9sU2VydmljZT1hLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl9zdGF0dXNDaGFuZ2VzPW5ldyBBcihKMi5OT05FKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm5nQ29u''@;'; put 'put ''dHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKGQ9PntkJiYodGhpcy5jb250cm9sPWQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy50cmlnZ2VyU3RhdHVzQ2hhbmdlKCl9KSkpfSkpfWdldCBz''@;'; put 'put ''dGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX3N0YXR1c0NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXRyaWdnZXJTdGF0dXNDaGFuZ2UoKXtpZih0aGlzLmNvbnRyb2wpe2NvbnN0IGE9''@;'; put 'put ''SjJbdGhpcy5jb250cm9sLnN0YXR1c107dGhpcy5fc3RhdHVzQ2hhbmdlcy5uZXh0KFsiVkFMSUQiLCJJTlZBTElEIl0uaW5jbHVkZXMoYSk/YTpKMi5OT05FKX19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKE4xKSl9LGwuXHUwMjc1cHJvdj1p''@;'; put 'put ''cih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7dmFyIHc4PWZ1bmN0aW9uKGwpe3JldHVybiBsLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsbC5IT1JJWk9OVEFMPSJob3Jpem9udGFsIixsLkNPTVBBQ1Q9ImNvbXBhY3QiLGx9KHc4fHx7fSk7bGV0IHA0PSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''Y29uc3RydWN0b3IoKXt0aGlzLm1pbkxhYmVsU2l6ZT0xLHRoaXMubWF4TGFiZWxTaXplPTEyLHRoaXMubGF5b3V0PXc4LkhPUklaT05UQUwsdGhpcy5sYXlvdXRWYWx1ZXM9T2JqZWN0LmtleXModzgpLm1hcChhPT53OFthXSksdGhpcy5fbGFiZWxTaXplPTJ9Z2V0IGxhYmVsU2l6ZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9sYWJlbFNpemV9c2V0IGxhYmVsU2l6ZShhKXt0aGlzLmxhYmVsU2l6ZUlzVmFsaWQoYSkmJih0aGlzLl9sYWJlbFNpemU9YSl9Z2V0IGxheW91dENsYXNzKCl7cmV0dXJuYGNsci1mb3JtLSR7dGhpcy5sYXlvdXR9YH1pc1ZlcnRpY2FsKCl7cmV0dXJuIHRoaXMubGF5b3V0''@;'; put 'put ''PT09dzguVkVSVElDQUx9aXNIb3Jpem9udGFsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09dzguSE9SSVpPTlRBTH1pc0NvbXBhY3QoKXtyZXR1cm4gdGhpcy5sYXlvdXQ9PT13OC5DT01QQUNUfWlzVmFsaWQoYSl7cmV0dXJuIHRoaXMubGF5b3V0VmFsdWVzLmluZGV4T2YoYSk+LTF9bGFiZWxT''@;'; put 'put ''aXplSXNWYWxpZChhKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihhKSYmYT49dGhpcy5taW5MYWJlbFNpemUmJmE8PXRoaXMubWF4TGFiZWxTaXplfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rv''@;'; put 'put ''cnk6bC5cdTAyNzVmYWN9KSxsfSkoKSwkcz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5jb250cm9sSWRTZXJ2aWNlPWEsdGhpcy5sYXlvdXRTZXJ2aWNlPWQsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlPWgsdGhpcy5yZW5kZXJlcj1mLHRoaXMuZWw9dix0aGlzLmVu''@;'; put 'put ''YWJsZUdyaWQ9ITAsdGhpcy5zdWJzY3JpcHRpb25zPVtdfWdldCBsYWJlbFRleHQoKXtyZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50JiZ0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnR9bmdPbkluaXQoKXsodGhpcy5jb250cm9sSWRTZXJ2aWNlfHx0aGlzLm5nQ29udHJvbFNl''@;'; put 'put ''cnZpY2UpJiZ0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiY2xyLWNvbnRyb2wtbGFiZWwiKSx0aGlzLmVuYWJsZUdyaWQmJnRoaXMubGF5b3V0U2VydmljZSYmIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCkmJnRoaXMuZWwubmF0aXZlRWxlbWVu''@;'; put 'put ''dCYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5pbmRleE9mKCJjbHItY29sIik8MCYmKHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJjbHItY29sLTEyIiksdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYGNs''@;'; put 'put ''ci1jb2wtbWQtJHt0aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplfWApKSx0aGlzLmNvbnRyb2xJZFNlcnZpY2UmJiF0aGlzLmZvckF0dHImJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuY29udHJvbElkU2VydmljZS5pZENoYW5nZS5zdWJzY3JpYmUoYT0+dGhpcy5mb3JBdHRyPWEp''@;'; put 'put ''KX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9ZGlzYWJsZUdyaWQoKXt0aGlzLmVuYWJsZUdyaWQ9ITF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKEloLDgpLEplKHA0LDgpLEpl''@;'; put 'put ''KE4xLDgpLEplKGRzKSxKZShOaSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyJsYWJlbCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmdXIoImZvciIsZC5mb3JBdHRyKX0saW5wdXRzOntmb3JBdHRyOltqbi5Ob25lLCJmb3IiLCJm''@;'; put 'put ''b3JBdHRyIl19fSksbH0pKCksX0hlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBJWntjb25zdHJ1Y3RvcihhLGQpe3N1cGVyKGEsZCksdGhpcy5jb250cm9sSWRTZXJ2aWNlPWEsdGhpcy5jb250YWluZXJJZFNlcnZpY2U9ZCx0aGlzLmNvbnRyb2xJZFN1ZmZpeD0ic3VjY2VzcyJ9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKEloLDgpLEplKHk4LDgpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWNvbnRyb2wtc3VjY2VzcyJdXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmKHVy''@;'; put 'put ''KCJpZCIsZC5pZCkscHIoImNsci1zdWJ0ZXh0IiwhMCkoInN1Y2Nlc3MiLCEwKSl9LGZlYXR1cmVzOltlb10sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgp''@;'; put 'put ''LExoPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5sYXlvdXRTZXJ2aWNlPWEsdGhpcy5jbGFzc05hbWU9IiJ9Y29udHJvbENsYXNzKGE9SjIuTk9ORSxkPSExLGg9IiIpe2NvbnN0IGY9W3RoaXMuY2xhc3NOYW1lLGhdO3N3aXRjaChhKXtjYXNlIEoyLlZBTElEOmYucHVzaCgi''@;'; put 'put ''Y2xyLXN1Y2Nlc3MiKTticmVhaztjYXNlIEoyLklOVkFMSUQ6Zi5wdXNoKCJjbHItZXJyb3IiKX1yZXR1cm4gZCYmdGhpcy5sYXlvdXRTZXJ2aWNlJiYtMT09PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoImNsci1jb2wiKSYmZi5wdXNoKGBjbHItY29sLW1kLSR7dGhpcy5sYXlvdXRTZXJ2aWNl''@;'; put 'put ''Lm1heExhYmVsU2l6ZS10aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplfSBjbHItY29sLTEyYCksZi5qb2luKCIgIikudHJpbSgpfWluaXRDb250cm9sQ2xhc3MoYSxkKXtkJiZkLmNsYXNzTmFtZSYmKHRoaXMuY2xhc3NOYW1lPWQuY2xhc3NOYW1lLGQuY2xhc3NOYW1lLnNwbGl0KCIgIiku''@;'; put 'put ''Zm9yRWFjaChmPT57Zi5zdGFydHNXaXRoKCJjbHItY29sIikmJmEucmVtb3ZlQ2xhc3MoZCxmKX0pKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IocDQsOCkpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30p''@;'; put 'put ''LGx9KSgpLExfPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2U9YSx0aGlzLmxheW91dFNlcnZpY2U9ZCx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9aCx0aGlzLm5nQ29udHJvbFNlcnZpY2U9Zix0aGlzLl9keW5hbWljPSExLHRo''@;'; put 'put ''aXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSh2PT57dGhpcy5zdGF0ZT12LHRoaXMudXBkYXRlSGVscGVycygpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMu''@;'; put 'put ''bmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUodj0+e3RoaXMuY29udHJvbD12fSkpfWdldCBzaG93SGVscGVyKCl7cmV0dXJuISF0aGlzLmNvbnRyb2xIZWxwZXJDb21wb25lbnR9Z2V0IHNob3dWYWxpZCgpe3JldHVybiB0aGlzLnRvdWNoZWQmJnRoaXMuc3RhdGU9''@;'; put 'put ''PT1KMi5WQUxJRCYmISF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50fWdldCBzaG93SW52YWxpZCgpe3JldHVybiB0aGlzLnRvdWNoZWQmJnRoaXMuc3RhdGU9PT1KMi5JTlZBTElEJiYhIXRoaXMuY29udHJvbEVycm9yQ29tcG9uZW50fWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29u''@;'; put 'put ''dHJvbD8udG91Y2hlZH1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnVwZGF0ZUhlbHBlcnMoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9Y29udHJvbENsYXNzKCl7cmV0dXJuIHRoaXMuY29udHJvbENsYXNzU2VydmljZS5j''@;'; put 'put ''b250cm9sQ2xhc3MoIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQmJnRoaXMuc3RhdGU9PT1KMi5WQUxJRHx8IXRoaXMudG91Y2hlZD9KMi5OT05FOnRoaXMuc3RhdGUsdGhpcy5hZGRHcmlkKCkpfWFkZEdyaWQoKXtyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlJiYhdGhpcy5sYXlvdXRT''@;'; put 'put ''ZXJ2aWNlLmlzVmVydGljYWwoKX11cGRhdGVIZWxwZXJzKCl7dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLm5nQ29udHJvbFNlcnZpY2Uuc2V0SGVscGVycyh7c2hvdzp0aGlzLnNob3dJbnZhbGlkfHx0aGlzLnNob3dIZWxwZXJ8fHRoaXMuc2hvd1ZhbGlkLHNob3dJbnZhbGlkOnRoaXMu''@;'; put 'put ''c2hvd0ludmFsaWQsc2hvd0hlbHBlcjp0aGlzLnNob3dIZWxwZXIsc2hvd1ZhbGlkOnRoaXMuc2hvd1ZhbGlkfSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFJoKSxKZShwNCw4KSxKZShMaCksSmUoTjEpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5''@;'; put 'put ''cGU6bCxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiYodHMoaCwkcyw1KSx0cyhoLF9IZSw1KSx0cyhoLHZIZSw1KSx0cyhoLGdSLDUpKSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLmxhYmVsPWYuZmlyc3QpLGxpKGY9Y2koKSkmJihkLmNvbnRyb2xTdWNjZXNzQ29t''@;'; put 'put ''cG9uZW50PWYuZmlyc3QpLGxpKGY9Y2koKSkmJihkLmNvbnRyb2xFcnJvckNvbXBvbmVudD1mLmZpcnN0KSxsaShmPWNpKCkpJiYoZC5jb250cm9sSGVscGVyQ29tcG9uZW50PWYuZmlyc3QpfX19KSxsfSkoKTtjbGFzcyBtUntjb25zdHJ1Y3RvcihjLGEsZD0wKXtpZih0aGlzLmluamVjdG9y''@;'; put 'put ''PWEuaW5qZWN0b3IsIXRoaXMuaW5qZWN0b3IuZ2V0KGMsbnVsbCkpe2NvbnN0IGg9dGhpcy5pbmplY3Rvci5nZXQoS2cpLGY9dGhpcy5pbmplY3Rvci5nZXQoTmkpO2EuY3JlYXRlQ29tcG9uZW50KGgucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkocEhlKSk7Y29uc3Qgdj1oLnJlc29sdmVDb21w''@;'; put 'put ''b25lbnRGYWN0b3J5KGMpLFM9W107U1tkXT1bZi5uYXRpdmVFbGVtZW50XTtjb25zdCBWPWEuY3JlYXRlQ29tcG9uZW50KHYsdm9pZCAwLHZvaWQgMCxTKTthLnJlbW92ZSgwKSxWLmluc3RhbmNlLl9keW5hbWljPSEwLHRoaXMuaW5qZWN0b3I9Vi5pbmplY3Rvcn19Z2V0KGMsYSl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaW5qZWN0b3IuZ2V0KGMsYSl9fWxldCBSWj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fdG91Y2hlZD1uZXcgdG59Z2V0IHRvdWNoZWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZC5hc09ic2VydmFibGUoKX1tYXJrQXNUb3VjaGVkKCl7dGhpcy5fdG91Y2hl''@;'; put 'put ''ZC5uZXh0KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO3ZhciBMWj1mdW5jdGlvbihsKXtyZXR1cm4gbC5GT1JNPSJmb3JtIixsLk1PREVMPSJtb2Rl''@;'; put 'put ''bCIsbH0oTFp8fHt9KTtsZXQgT189KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyl7dGhpcy52Y3I9YSx0aGlzLndyYXBwZXJUeXBlPWQsdGhpcy5uZ0NvbnRyb2w9Zix0aGlzLmluZGV4PTAsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMucmVuZGVyZXI9dix0aGlzLmVs''@;'; put 'put ''PVMsaCYmKHRoaXMubmdDb250cm9sU2VydmljZT1oLmdldChOMSxudWxsKSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1oLmdldChSaCxudWxsKSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9aC5nZXQoTGgsbnVsbCksdGhpcy5tYXJrQ29udHJvbFNlcnZpY2U9aC5nZXQoUlosbnVsbCks''@;'; put 'put ''dGhpcy5kaWZmZXJzPWguZ2V0KGNTLG51bGwpKSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2UmJnRoaXMuY29udHJvbENsYXNzU2VydmljZS5pbml0Q29udHJvbENsYXNzKHYsUy5uYXRpdmVFbGVtZW50KSx0aGlzLm1hcmtDb250cm9sU2VydmljZSYmdGhpcy5zdWJzY3JpcHRpb25zLnB1c2go''@;'; put 'put ''dGhpcy5tYXJrQ29udHJvbFNlcnZpY2UudG91Y2hlZENoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLm1hcmtBc1RvdWNoZWQoKX0pKSx0aGlzLm5nQ29udHJvbFNlcnZpY2UmJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubmdDb250cm9sU2VydmljZS5oZWxwZXJzQ2hhbmdlLnN1YnNj''@;'; put 'put ''cmliZShWPT57dGhpcy5zZXRBcmlhRGVzY3JpYmVkQnkoVil9KSksZiYmKHRoaXMuZGlmZmVyPXRoaXMuZGlmZmVycy5maW5kKGYpLmNyZWF0ZSgpKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKGEpe3RoaXMuX2lkPWEsdGhpcy5jb250cm9sSWRTZXJ2aWNlJiYodGhpcy5jb250''@;'; put 'put ''cm9sSWRTZXJ2aWNlLmlkPWEpfW5nT25Jbml0KCl7dGhpcy5fY29udGFpbmVySW5qZWN0b3I9bmV3IG1SKHRoaXMud3JhcHBlclR5cGUsdGhpcy52Y3IsdGhpcy5pbmRleCksdGhpcy5jb250cm9sSWRTZXJ2aWNlPXRoaXMuX2NvbnRhaW5lckluamVjdG9yLmdldChJaCksdGhpcy5jb250YWlu''@;'; put 'put ''ZXJJZFNlcnZpY2U9dGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KHk4LG51bGwpLHRoaXMuX2lkP3RoaXMuY29udHJvbElkU2VydmljZS5pZD10aGlzLl9pZDp0aGlzLl9pZD10aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQsdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlJiZ0aGlzLm5nQ29udHJvbCYm''@;'; put 'put ''dGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLnNldENvbnRyb2wodGhpcy5uZ0NvbnRyb2wpfW5nRG9DaGVjaygpe2lmKHRoaXMuZGlmZmVyKXtjb25zdCBhPXRoaXMuZGlmZmVyLmRpZmYodGhpcy5uZ0NvbnRyb2wpO2EmJmEuZm9yRWFjaENoYW5nZWRJdGVtKGQ9PnsoZC5rZXk9PT1MWi5GT1JNfHxk''@;'; put 'put ''LmtleT09PUxaLk1PREVMKSYmZC5jdXJyZW50VmFsdWUhPT1kLnByZXZpb3VzVmFsdWUmJnRoaXMudHJpZ2dlclZhbGlkYXRpb24oKX0pfX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9dHJpZ2dlclZhbGlkYXRpb24oKXt0aGlz''@;'; put 'put ''LmlmQ29udHJvbFN0YXRlU2VydmljZSYmdGhpcy5pZkNvbnRyb2xTdGF0ZVNlcnZpY2UudHJpZ2dlclN0YXR1c0NoYW5nZSgpfWdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcihhLGQpe3RyeXtyZXR1cm4gdGhpcy5fY29udGFpbmVySW5qZWN0b3IuZ2V0KGEsZCl9Y2F0Y2h7cmV0dXJuIGR9fW1h''@;'; put 'put ''cmtBc1RvdWNoZWQoKXt0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpLHRoaXMubmdDb250cm9sLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKX1zZXRBcmlhRGVzY3JpYmVkQnkoYSl7aWYoYS5zaG93KXtjb25zdCBkPXRoaXMu''@;'; put 'put ''Z2V0QXJpYURlc2NyaWJlZEJ5SWQoYSk7aWYobnVsbCE9PWQpcmV0dXJuIHZvaWQgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJhcmlhLWRlc2NyaWJlZGJ5IixkKX10aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVs''@;'; put 'put ''ZW1lbnQsImFyaWEtZGVzY3JpYmVkYnkiKX1nZXRBcmlhRGVzY3JpYmVkQnlJZChhKXtjb25zdCBkPXRoaXMuY29udGFpbmVySWRTZXJ2aWNlPy5pZHx8dGhpcy5jb250cm9sSWRTZXJ2aWNlPy5pZDtpZighZClyZXR1cm4gbnVsbDtjb25zdCBoPVtgJHtkfS1oZWxwZXJgXTtyZXR1cm4gYS5z''@;'; put 'put ''aG93SW52YWxpZD9oLnB1c2goYCR7ZH0tZXJyb3JgKTphLnNob3dWYWxpZCYmaC5wdXNoKGAke2R9LXN1Y2Nlc3NgKSxoLmpvaW4oIiAiKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoaHMpLEplKGo1KSxKZShNYSksSmUodDEpLEplKGRzKSxK''@;'; put 'put ''ZShOaSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZC50cmlnZ2VyVmFsaWRhdGlvbigpfSksMiZhJiZkMygiaWQiLGQuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9fSks''@;'; put 'put ''bH0pKCksdHVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLmxheW91dFNlcnZpY2U9YSx0aGlzLm1hcmtDb250cm9sU2VydmljZT1kfXNldCBsYWJlbFNpemUoYSl7Y29uc3QgZD1wYXJzZUludChhLDEwKXx8Mjt0aGlzLmxheW91dFNlcnZpY2UubGFiZWxTaXplPWR9b25G''@;'; put 'put ''b3JtU3VibWl0KCl7dGhpcy5tYXJrQXNUb3VjaGVkKCl9bWFya0FzVG91Y2hlZCgpe3RoaXMubWFya0NvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUocDQpLEplKFJaKSl9LGwuXHUwMjc1ZGly''@;'; put 'put ''PWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsckZvcm0iLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEmYSYmdHMoaCwkcyw1KSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLmxhYmVscz1mKX19LGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEs''@;'; put 'put ''ZCl7MSZhJiZJdCgic3VibWl0IixmdW5jdGlvbigpe3JldHVybiBkLm9uRm9ybVN1Ym1pdCgpfSksMiZhJiZwcigiY2xyLWZvcm0iLCEwKSgiY2xyLWZvcm0taG9yaXpvbnRhbCIsZC5sYXlvdXRTZXJ2aWNlLmlzSG9yaXpvbnRhbCgpKSgiY2xyLWZvcm0tY29tcGFjdCIsZC5sYXlvdXRTZXJ2''@;'; put 'put ''aWNlLmlzQ29tcGFjdCgpKX0saW5wdXRzOntsYWJlbFNpemU6W2puLk5vbmUsImNsckxhYmVsU2l6ZSIsImxhYmVsU2l6ZSJdfSxmZWF0dXJlczpbWmkoW3A0LFJaXSldfSksbH0pKCksbnU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFNoLE1oKX19cmV0dXJuIGwu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbmFdfSksbH0pKCk7Y29uc3QgT1o9bmV3ICRyKCJJU19UT0dHTEUiKSxDSGU9e3Byb3ZpZGU6T1osdXNlRmFjdG9yeTpmdW5j''@;'; put 'put ''dGlvbiB3SGUoKXtyZXR1cm4gbmV3IEFyKCExKX19O2xldCBzMT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX2R5bmFtaWM9ITEsdGhpcy50b2dnbGU9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGEuc3Vic2NyaWJlKGQ9Pnt0aGlz''@;'; put 'put ''LnRvZ2dsZT1kfSkpfW5nT25Jbml0KCl7dGhpcy5sYWJlbCYmdGhpcy5sYWJlbC5kaXNhYmxlR3JpZCgpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCkoSmUoT1opKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWNoZWNrYm94LXdyYXBwZXIiXSxbImNsci10b2dnbGUtd3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLCRzLDcpLDImYSl7bGV0IGY7bGkoZj1j''@;'; put 'put ''aSgpKSYmKGQubGFiZWw9Zi5maXJzdCl9fSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImNsci1jaGVja2JveC13cmFwcGVyIiwhZC50b2dnbGUpKCJjbHItdG9nZ2xlLXdyYXBwZXIiLGQudG9nZ2xlKX0sZmVhdHVyZXM6W1ppKFtJaCxDSGVdKV0sbmdD''@;'; put 'put ''b250ZW50U2VsZWN0b3JzOnZMZSxkZWNsczozLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkobUxlKSxJcigwKSxJcigxLDEpLGd0KDIsX0xlLDEsMCwibGFiZWwiLDApKSwyJmEmJihfZSgyKSxSZSgibmdJZiIsIWQubGFiZWwpKX0s''@;'; put 'put ''ZGVwZW5kZW5jaWVzOlskaSwkc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksYTE9KCgpPT57Y2xhc3MgbCBleHRlbmRzIE9fe2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTKXtzdXBlcihhLHMxLGQsaCxmLHYpLHRoaXMudG9nZ2xlPVN9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpO2NvbnN0''@;'; put 'put ''IGE9dGhpcy5nZXRQcm92aWRlckZyb21Db250YWluZXIoT1osbnVsbCk7YSYmbnVsbCE9PXRoaXMudG9nZ2xlJiZhLm5leHQoITApfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShocyksSmUoTWEpLEplKHQxLDEwKSxKZShkcyksSmUoTmkpLEQy''@;'; put 'put ''KCJjbHJUb2dnbGUiKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsckNoZWNrYm94IiwiIl0sWyIiLCJjbHJUb2dnbGUiLCIiXV0sZmVhdHVyZXM6W2VvXX0pLGx9KSgpLFBfPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBMX3tjb25zdHJ1Y3RvcihhLGQsaCxmKXtz''@;'; put 'put ''dXBlcihmLGEsZCxoKSx0aGlzLmxheW91dFNlcnZpY2U9YSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9ZCx0aGlzLm5nQ29udHJvbFNlcnZpY2U9aCx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1mLHRoaXMuaW5saW5lPSExfWdldCBjbHJJbmxpbmUoKXtyZXR1cm4gdGhpcy5pbmxpbmV9''@;'; put 'put ''c2V0IGNscklubGluZShhKXt0aGlzLmlubGluZT0ic3RyaW5nIj09dHlwZW9mIGE/ImZhbHNlIiE9PWE6ISFhfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0QXJpYVJvbGVzKCl9c2V0QXJpYVJvbGVzKCl7dGhpcy5yb2xlPXRoaXMuY2hlY2tib3hlcy5sZW5ndGg/Imdyb3VwIjpudWxs''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShwNCw4KSxKZShMaCksSmUoTjEpLEplKFJoKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1jaGVja2JveC1jb250YWluZXIiXSxbImNsci10b2dnbGUtY29udGFpbmVy''@;'; put 'put ''Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsYTEsNSksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5jaGVja2JveGVzPWYpfX0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJih1cigicm9sZSIsZC5yb2xlKSxwcigiY2xy''@;'; put 'put ''LWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxsPT1kLmNvbnRyb2w/bnVsbDpkLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixkLmFkZEdyaWQoKSkpfSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIn0sZmVhdHVyZXM6W1ppKFtSaCxOMSxM''@;'; put 'put ''aCx5OF0pLGVvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6eUxlLGRlY2xzOjEwLHZhcnM6OSxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItc3VidGV4dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwi''@;'; put 'put ''c2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRy''@;'; put 'put ''dWUiLDQsIm5nSWYiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0''@;'; put 'put ''cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKGJMZSksSXIoMCksZ3QoMSx3TGUsMSwwLCJsYWJlbCIsMCksZ2UoMiwiZGl2IiwxKSxJcigzLDEpLGdlKDQsImRpdiIsMiksZ3QoNSxDTGUsMSwwLCJuZy1jb250ZW50IiwwKSg2LFNM''@;'; put 'put ''ZSwxLDAsImNkcy1pY29uIiwzKSg3LE1MZSwxLDAsImNkcy1pY29uIiw0KSg4LHhMZSwxLDAsIm5nLWNvbnRlbnQiLDApKDksRUxlLDEsMCwibmctY29udGVudCIsMCksbWUoKSgpKSwyJmEmJihfZSgpLFJlKCJuZ0lmIiwhZC5sYWJlbCYmZC5hZGRHcmlkKCkpLF9lKCkscHIoImNsci1jb250''@;'; put 'put ''cm9sLWlubGluZSIsZC5jbHJJbmxpbmUpLFJlKCJuZ0NsYXNzIixkLmNvbnRyb2xDbGFzcygpKSxfZSgzKSxSZSgibmdJZiIsZC5zaG93SGVscGVyKSxfZSgpLFJlKCJuZ0lmIixkLnNob3dJbnZhbGlkKSxfZSgpLFJlKCJuZ0lmIixkLnNob3dWYWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93''@;'; put 'put ''SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltKYywkaSxHcywkc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksU0hlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhTaCxNaCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5j''@;'; put 'put ''dGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vLG5hLG51LHBSLG51XX0pLGx9KSgpO2Z1bmN0aW9uIFEyKGwpe3JldHVybiBudWxsIT09bCYmKCJzdHJpbmciPT10eXBlb2YgbD9sLmxlbmd0aD49MDoi''@;'; put 'put ''Ym9vbGVhbiI9PXR5cGVvZiBsJiZsKX1sZXQgeGQ9KCgpPT57Y2xhc3MgbHtnZXQgc3Bpbm5lckNsYXNzKCl7cmV0dXJuITB9Z2V0IGlubGluZUNsYXNzKCl7cmV0dXJuIHRoaXMuX2lubGluZX1zZXQgY2xySW5saW5lKGEpe3RoaXMuX2lubGluZT1RMihhKX1nZXQgaW52ZXJzZUNsYXNzKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2ludmVyc2V9c2V0IGNsckludmVyc2UoYSl7dGhpcy5faW52ZXJzZT1RMihhKX1nZXQgc21hbGxDbGFzcygpe3JldHVybiB0aGlzLl9zbWFsbH1zZXQgY2xyU21hbGwoYSl7dGhpcy5fc21hbGw9UTIoYSl9Z2V0IG1lZGl1bUNsYXNzKCl7cmV0dXJuIXRoaXMuX3NtYWxs''@;'; put 'put ''JiZ0aGlzLl9tZWRpdW19c2V0IGNsck1lZGl1bShhKXt0aGlzLl9tZWRpdW09UTIoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItc3Bpbm5lciJdXSxob3N0VmFyczoxMSxo''@;'; put 'put ''b3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJih1cigiYXJpYS1idXN5IiwhMCkscHIoInNwaW5uZXIiLGQuc3Bpbm5lckNsYXNzKSgic3Bpbm5lci1pbmxpbmUiLGQuaW5saW5lQ2xhc3MpKCJzcGlubmVyLWludmVyc2UiLGQuaW52ZXJzZUNsYXNzKSgic3Bpbm5lci1zbSIsZC5zbWFs''@;'; put 'put ''bENsYXNzKSgic3Bpbm5lci1tZCIsZC5tZWRpdW1DbGFzcykpfSxpbnB1dHM6e2NscklubGluZToiY2xySW5saW5lIixjbHJJbnZlcnNlOiJjbHJJbnZlcnNlIixjbHJTbWFsbDoiY2xyU21hbGwiLGNsck1lZGl1bToiY2xyTWVkaXVtIn0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEs''@;'; put 'put ''dmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEZfPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSks''@;'; put 'put ''bC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpO3ZhciBibT1mdW5jdGlvbihsKXtyZXR1cm4gbC5WRVJUSUNBTD0idmVydGljYWwiLGwuSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsbC5CT1RIPSJib3RoIixsfShibXx8e30pO2xldCBudWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1''@;'; put 'put ''Y3RvcihhLGQpe3RoaXMuZWxlbWVudFJlZj1hLHRoaXMucGxhdGZvcm1JZD1kfWdldCBuYXRpdmVFbGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWZvY3VzKCl7bWEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9j''@;'; put 'put ''dXMoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoTmkpLEplKElvKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNscktleUZvY3VzSXRlbSIsIiJdXX0pLGx9KSgpLE5fPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0''@;'; put 'put ''b3IoYSl7dGhpcy5lbGVtZW50UmVmPWEsdGhpcy5kaXJlY3Rpb249Ym0uVkVSVElDQUwsdGhpcy5mb2N1c09uTG9hZD0hMSx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5mb2N1c0NoYW5nZT1uZXcgRHIsdGhpcy5fY3VycmVudD0wfWdldCBmb2N1c2FibGVJdGVtcygpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9mb2N1c2FibGVJdGVtcz90aGlzLl9mb2N1c2FibGVJdGVtczp0aGlzLmNscktleUZvY3VzSXRlbXM/dGhpcy5jbHJLZXlGb2N1c0l0ZW1zLnRvQXJyYXkoKTpbXX1zZXQgZm9jdXNhYmxlSXRlbXMoYSl7QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGgmJih0aGlzLl9mb2N1c2FibGVJdGVt''@;'; put 'put ''cz1hLHRoaXMuaW5pdGlhbGl6ZUZvY3VzKCkpfWdldCBuYXRpdmVFbGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fWdldCBjdXJyZW50KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnR9c2V0IGN1cnJlbnQoYSl7dGhpcy5fY3VycmVudCE9PWEmJih0aGlzLl9jdXJy''@;'; put 'put ''ZW50PWEpfWdldCBjdXJyZW50SXRlbSgpe3JldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW1zW3RoaXMuX2N1cnJlbnRdfWdldCBjdXJyZW50SXRlbUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5jdXJyZW50SXRlbS5uYXRpdmVFbGVtZW50P3RoaXMuY3VycmVudEl0ZW0ubmF0aXZlRWxlbWVudDp0aGlz''@;'; put 'put ''LmN1cnJlbnRJdGVtfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9ySXRlbVVwZGF0ZXMoKSksdGhpcy5pbml0aWFsaXplRm9jdXMoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3Jp''@;'; put 'put ''YmUoKSl9aGFuZGxlS2V5Ym9hcmRFdmVudChhKXtpZih0aGlzLmN1cnJlbnRJdGVtRWxlbWVudCE9PWEudGFyZ2V0KXtjb25zdCBkPXRoaXMuZ2V0SXRlbVBvc2l0aW9uKGEudGFyZ2V0KTt0aGlzLnBvc2l0aW9uSW5SYW5nZShkKSYmKHRoaXMuY3VycmVudD1kKX10aGlzLnByZXZLZXlQcmVz''@;'; put 'put ''c2VkKGEpJiZ0aGlzLmN1cnJlbnRGb2N1c0lzTm90Rmlyc3RJdGVtKCk/dGhpcy5tb3ZlVG8odGhpcy5jdXJyZW50LTEpOnRoaXMubmV4dEtleVByZXNzZWQoYSkmJnRoaXMuY3VycmVudEZvY3VzSXNOb3RMYXN0SXRlbSgpP3RoaXMubW92ZVRvKHRoaXMuY3VycmVudCsxKTphLmNvZGU9PT1U''@;'; put 'put ''by5Ib21lP3RoaXMubW92ZVRvKDApOmEuY29kZT09PVRvLkVuZCYmdGhpcy5tb3ZlVG8odGhpcy5mb2N1c2FibGVJdGVtcy5sZW5ndGgtMSksVFooYSl9c2V0Q2xpY2tlZEl0ZW1DdXJyZW50KGEpe2NvbnN0IGQ9dGhpcy5nZXRJdGVtUG9zaXRpb24oYS50YXJnZXQpO2Q+LTEmJnRoaXMubW92''@;'; put 'put ''ZVRvKGQpfWZvY3VzQ3VycmVudCgpe3RoaXMuY3VycmVudEl0ZW0uZm9jdXMoKSx0aGlzLmZvY3VzQ2hhbmdlLm5leHQodGhpcy5fY3VycmVudCl9bW92ZVRvKGEpe3RoaXMucG9zaXRpb25JblJhbmdlKGEpJiYodGhpcy5jdXJyZW50PWEsdGhpcy5mb2N1c0N1cnJlbnQoKSl9cG9zaXRpb25J''@;'; put 'put ''blJhbmdlKGEpe3JldHVybiBhPj0wJiZhPHRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RofWN1cnJlbnRGb2N1c0lzTm90Rmlyc3RJdGVtKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnQtMT49MH1jdXJyZW50Rm9jdXNJc05vdExhc3RJdGVtKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnQrMTx0aGlzLmZv''@;'; put 'put ''Y3VzYWJsZUl0ZW1zLmxlbmd0aH1pbml0aWFsaXplRm9jdXMoKXt0aGlzLmZvY3VzYWJsZUl0ZW1zJiZ0aGlzLmZvY3VzYWJsZUl0ZW1zLmxlbmd0aCYmKHRoaXMuX2N1cnJlbnQ+PXRoaXMuZm9jdXNhYmxlSXRlbXMubGVuZ3RoJiYodGhpcy5fY3VycmVudD10aGlzLmZvY3VzYWJsZUl0ZW1z''@;'; put 'put ''Lmxlbmd0aC0xKSx0aGlzLmZvY3VzT25Mb2FkJiYodGhpcy5jdXJyZW50SXRlbS5mb2N1cygpLHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCgpKSl9bmV4dEtleVByZXNzZWQoYSl7Y29uc3QgZD1FaChhLmtleSk7c3dpdGNoKHRoaXMuZGlyZWN0aW9uKXtjYXNlIGJtLlZFUlRJQ0FMOnJldHVybiBk''@;'; put 'put ''PT09VG8uQXJyb3dEb3duO2Nhc2UgYm0uSE9SSVpPTlRBTDpyZXR1cm4gZD09PVRvLkFycm93UmlnaHQ7Y2FzZSBibS5CT1RIOnJldHVybiBkPT09VG8uQXJyb3dEb3dufHxkPT09VG8uQXJyb3dSaWdodDtkZWZhdWx0OnJldHVybiExfX1wcmV2S2V5UHJlc3NlZChhKXtjb25zdCBkPUVoKGEu''@;'; put 'put ''a2V5KTtzd2l0Y2godGhpcy5kaXJlY3Rpb24pe2Nhc2UgYm0uVkVSVElDQUw6cmV0dXJuIGQ9PT1Uby5BcnJvd1VwO2Nhc2UgYm0uSE9SSVpPTlRBTDpyZXR1cm4gZD09PVRvLkFycm93TGVmdDtjYXNlIGJtLkJPVEg6cmV0dXJuIGQ9PT1Uby5BcnJvd1VwfHxkPT09VG8uQXJyb3dMZWZ0O2Rl''@;'; put 'put ''ZmF1bHQ6cmV0dXJuITF9fWdldEl0ZW1Qb3NpdGlvbihhKXtyZXR1cm4gdGhpcy5fZm9jdXNhYmxlSXRlbXM/dGhpcy5mb2N1c2FibGVJdGVtcy5pbmRleE9mKGEpOnRoaXMuZm9jdXNhYmxlSXRlbXMubWFwKGQ9PmQubmF0aXZlRWxlbWVudCkuaW5kZXhPZihhKX1saXN0ZW5Gb3JJdGVtVXBk''@;'; put 'put ''YXRlcygpe3JldHVybiB0aGlzLmNscktleUZvY3VzSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmluaXRpYWxpemVGb2N1cygpfSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmws''@;'; put 'put ''c2VsZWN0b3JzOltbIiIsImNscktleUZvY3VzIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsbnVlLDUpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQuY2xyS2V5Rm9jdXNJdGVtcz1mKX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezEmYSYm''@;'; put 'put ''SXQoImtleWRvd24iLGZ1bmN0aW9uKGYpe3JldHVybiBkLmhhbmRsZUtleWJvYXJkRXZlbnQoZil9KSgiY2xpY2siLGZ1bmN0aW9uKGYpe3JldHVybiBkLnNldENsaWNrZWRJdGVtQ3VycmVudChmKX0pfSxpbnB1dHM6e2RpcmVjdGlvbjpbam4uTm9uZSwiY2xyRGlyZWN0aW9uIiwiZGlyZWN0''@;'; put 'put ''aW9uIl0sZm9jdXNPbkxvYWQ6W2puLk5vbmUsImNsckZvY3VzT25Mb2FkIiwiZm9jdXNPbkxvYWQiXSxmb2N1c2FibGVJdGVtczpbam4uTm9uZSwiY2xyS2V5Rm9jdXMiLCJmb2N1c2FibGVJdGVtcyJdfSxvdXRwdXRzOntmb2N1c0NoYW5nZToiY2xyRm9jdXNDaGFuZ2UifSxhdHRyczpUTGUs''@;'; put 'put ''bmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFBaPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8''@;'; put 'put ''fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpO2NsYXNzIE1IZXtjb250YWluc0l0ZW0oYyl7cmV0dXJuISF0aGlzLm1vZGVsJiZ0aGlzLm1vZGVsLmluY2x1ZGVzKGMpfXNlbGVjdChjKXt0aGlzLmFkZEl0ZW0oYyl9dW5z''@;'; put 'put ''ZWxlY3QoYyl7dGhpcy5yZW1vdmVJdGVtKGMpfWlzRW1wdHkoKXtyZXR1cm4hKHRoaXMubW9kZWwmJnRoaXMubW9kZWwubGVuZ3RoPjApfXBvcCgpe2xldCBjO3JldHVybiB0aGlzLm1vZGVsJiZ0aGlzLm1vZGVsLmxlbmd0aD4wJiYoYz10aGlzLm1vZGVsW3RoaXMubW9kZWwubGVuZ3RoLTFd''@;'; put 'put ''LHRoaXMucmVtb3ZlSXRlbShjKSksY310b1N0cmluZyhjLGE9LTEpe2xldCBkPSIiO3JldHVybiB0aGlzLm1vZGVsJiYoYT4tMT90aGlzLm1vZGVsW2FdJiYoZCs9YyYmdGhpcy5tb2RlbFthXVtjXT90aGlzLm1vZGVsW2FdW2NdOnRoaXMubW9kZWxbYV0udG9TdHJpbmcoKSk6dGhpcy5tb2Rl''@;'; put 'put ''bC5mb3JFYWNoKGg9PntkKz1jJiZoW2NdP2hbY106aC50b1N0cmluZygpLGQrPSIgIn0pKSxkLnRyaW0oKX1hZGRJdGVtKGMpe3RoaXMuY29udGFpbnNJdGVtKGMpfHwodGhpcy5tb2RlbD10aGlzLm1vZGVsfHxbXSx0aGlzLm1vZGVsLnB1c2goYykpfXJlbW92ZUl0ZW0oYyl7aWYobnVsbD09''@;'; put 'put ''dGhpcy5tb2RlbClyZXR1cm47Y29uc3QgYT10aGlzLm1vZGVsLmluZGV4T2YoYyk7YT4tMSYmdGhpcy5tb2RlbC5zcGxpY2UoYSwxKSwwPT09dGhpcy5tb2RlbC5sZW5ndGgmJih0aGlzLm1vZGVsPW51bGwpfX1jbGFzcyB4SGV7Y29udGFpbnNJdGVtKGMpe3JldHVybiB0aGlzLm1vZGVsPT09''@;'; put 'put ''Y31zZWxlY3QoYyl7dGhpcy5tb2RlbD1jfXVuc2VsZWN0KGMpe3RoaXMuY29udGFpbnNJdGVtKGMpJiYodGhpcy5tb2RlbD1udWxsKX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMubW9kZWx9cG9wKCl7Y29uc3QgYz10aGlzLm1vZGVsO3JldHVybiB0aGlzLm1vZGVsPW51bGwsY310b1N0cmluZyhj''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5tb2RlbD9jJiZ0aGlzLm1vZGVsW2NdP3RoaXMubW9kZWxbY106dGhpcy5tb2RlbC50b1N0cmluZygpOiIifX1jbGFzcyB2Unt9ZnVuY3Rpb24gcnVlKGwpe3JldHVybltsLHtwcm92aWRlOnZSLHVzZUV4aXN0aW5nOmx9XX1jbGFzcyBFSGUgZXh0ZW5kcyB4SGV7Y29u''@;'; put 'put ''c3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2ZvY3VzQ2hhbmdlZD1uZXcgQXIobnVsbCl9Z2V0IGZvY3VzQ2hhbmdlZCgpe3JldHVybiB0aGlzLl9mb2N1c0NoYW5nZWQuYXNPYnNlcnZhYmxlKCl9c2VsZWN0KGMpe3RoaXMubW9kZWwhPT1jJiYodGhpcy5tb2RlbD1jLHRo''@;'; put 'put ''aXMuX2ZvY3VzQ2hhbmdlZC5uZXh0KGMpKX19bGV0IFRIZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5sb2FkaW5nPSExLHRoaXMuc2hvd0FsbE9wdGlvbnM9ITAsdGhpcy5fY3VycmVudElucHV0PSIiLHRoaXMuX2lucHV0Q2hhbmdlZD1uZXcgQXIoIiIpLHRoaXMuX3NlbGVj''@;'; put 'put ''dGlvbkNoYW5nZWQ9bmV3IG9NKDEpLHRoaXMuaW5wdXRDaGFuZ2VkPXRoaXMuX2lucHV0Q2hhbmdlZC5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudElucHV0KCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRJbnB1dH1zZXQgY3VycmVudElucHV0KGEpeyIiPT09YSYmIXRoaXMubXVsdGlzZWxlY3Rh''@;'; put 'put ''YmxlJiZ0aGlzLnNldFNlbGVjdGlvblZhbHVlKG51bGwpLHRoaXMuX2N1cnJlbnRJbnB1dD1hLHRoaXMuX2lucHV0Q2hhbmdlZC5uZXh0KGEpfWdldCBzZWxlY3Rpb25DaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IG11bHRpc2VsZWN0''@;'; put 'put ''YWJsZSgpe3JldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsIGluc3RhbmNlb2YgTUhlfXNlbGVjdChhKXtudWxsPT1hfHx0aGlzLnNlbGVjdGlvbk1vZGVsLmNvbnRhaW5zSXRlbShhKXx8KHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGEpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4dCh0''@;'; put 'put ''aGlzLnNlbGVjdGlvbk1vZGVsKSl9dG9nZ2xlKGEpe251bGwhPWEmJih0aGlzLnNlbGVjdGlvbk1vZGVsLmNvbnRhaW5zSXRlbShhKT90aGlzLnNlbGVjdGlvbk1vZGVsLnVuc2VsZWN0KGEpOnRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGEpLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4''@;'; put 'put ''dCh0aGlzLnNlbGVjdGlvbk1vZGVsKSl9dW5zZWxlY3QoYSl7bnVsbD09YXx8IXRoaXMuc2VsZWN0aW9uTW9kZWwuY29udGFpbnNJdGVtKGEpfHwodGhpcy5zZWxlY3Rpb25Nb2RlbC51bnNlbGVjdChhKSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2VkLm5leHQodGhpcy5zZWxlY3Rpb25Nb2RlbCkp''@;'; put 'put ''fXNldFNlbGVjdGlvblZhbHVlKGEpeyF0aGlzLnNlbGVjdGlvbk1vZGVsfHx0aGlzLnNlbGVjdGlvbk1vZGVsLm1vZGVsPT09YXx8IXRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZWwmJiFhfHwodGhpcy5zZWxlY3Rpb25Nb2RlbC5tb2RlbD1hLHRoaXMuX3NlbGVjdGlvbkNoYW5nZWQubmV4dCh0''@;'; put 'put ''aGlzLnNlbGVjdGlvbk1vZGVsKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO3J1ZSgoKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3Ro''@;'; put 'put ''aXMudG9nZ2xlU2VydmljZT1kLHRoaXMuc2VsZWN0aW9uU2VydmljZT1oLHRoaXMucGxhdGZvcm1JZD1mLHRoaXMucHNldWRvRm9jdXM9bmV3IEVIZSx0aGlzLm9wdGlvbkRhdGE9W10sdGhpcy5oYW5kbGVGb2N1c1N1YnNjcmlwdGlvbigpLHRoaXMucmVuZGVyZXI9YS5jcmVhdGVSZW5kZXJl''@;'; put 'put ''cihudWxsLG51bGwpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ9c2V0IHRyaWdnZXIoYSl7dGhpcy5fdHJpZ2dlcj1hLHRoaXMuYWRkRm9jdXNPbkJsdXJMaXN0ZW5lcihhKX1nZXQgbGlzdGJveCgpe3JldHVybiB0aGlzLl9saXN0Ym94fXNldCBsaXN0Ym94KGEpe3RoaXMu''@;'; put 'put ''X2xpc3Rib3g9YSx0aGlzLmFkZEZvY3VzT25CbHVyTGlzdGVuZXIoYSl9Z2V0IHRleHRJbnB1dCgpe3JldHVybiB0aGlzLl90ZXh0SW5wdXR9c2V0IHRleHRJbnB1dChhKXt0aGlzLl90ZXh0SW5wdXQ9YSx0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duIixkPT4hdGhpcy5oYW5kbGVU''@;'; put 'put ''ZXh0SW5wdXQoZCkpLHRoaXMuYWRkRm9jdXNPbkJsdXJMaXN0ZW5lcihhKX1mb2N1c0lucHV0KCl7dGhpcy50ZXh0SW5wdXQmJm1hKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudGV4dElucHV0LmZvY3VzKCl9Zm9jdXNGaXJzdEFjdGl2ZSgpe2lmKHRoaXMub3B0aW9uRGF0YS5sZW5ndGg+MClp''@;'; put 'put ''Zih0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKXRoaXMucHNldWRvRm9jdXMuc2VsZWN0KHRoaXMub3B0aW9uRGF0YVswXSk7ZWxzZXtsZXQgYTthPXRoaXMuc2VsZWN0aW9uU2VydmljZS5tdWx0aXNlbGVjdGFibGU/dGhpcy5zZWxlY3Rpb25TZXJ2aWNl''@;'; put 'put ''LnNlbGVjdGlvbk1vZGVsLm1vZGVsWzBdOnRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbDtjb25zdCBkPXRoaXMub3B0aW9uRGF0YS5maW5kKGg9PmgudmFsdWU9PT1hKTt0aGlzLnBzZXVkb0ZvY3VzLnNlbGVjdChkfHx0aGlzLm9wdGlvbkRhdGFbMF0pLHRoaXMu''@;'; put 'put ''c2Nyb2xsSW50b1NlbGVjdGVkTW9kZWwoImF1dG8iKX19YWRkT3B0aW9uVmFsdWVzKGEpe3RoaXMub3B0aW9uRGF0YT1hfWhhbmRsZUZvY3VzU3Vic2NyaXB0aW9uKCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9PnthfHwodGhpcy5wc2V1ZG9Gb2N1cy5tb2Rl''@;'; put 'put ''bD1udWxsKX0pfW1vdmVGb2N1c1RvKGEpe2xldCBkPXRoaXMub3B0aW9uRGF0YS5maW5kSW5kZXgoaD0+aC5lcXVhbHModGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbCkpO2E9PT1NZC5VUD8tMT09PWR8fDA9PT1kP2Q9dGhpcy5vcHRpb25EYXRhLmxlbmd0aC0xOmQtLTphPT09TWQuRE9XTiYmKC0x''@;'; put 'put ''PT09ZHx8ZD09PXRoaXMub3B0aW9uRGF0YS5sZW5ndGgtMT9kPTA6ZCsrKSx0aGlzLnBzZXVkb0ZvY3VzLnNlbGVjdCh0aGlzLm9wdGlvbkRhdGFbZF0pLHRoaXMuc2Nyb2xsSW50b1NlbGVjdGVkTW9kZWwoKX1vcGVuQW5kTW92ZVRvKGEpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuP3RoaXMu''@;'; put 'put ''bW92ZUZvY3VzVG8oYSk6KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnBpcGUoWjIoMSkpLnN1YnNjcmliZShkPT57ZCYmdGhpcy5tb3ZlRm9jdXNUbyhhKX0pLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwKX1oYW5kbGVUZXh0SW5wdXQoYSl7bGV0IGQ9ITE7Y29uc3QgaD1FaChh''@;'; put 'put ''LmtleSk7aWYoYSlzd2l0Y2goaCl7Y2FzZSBUby5FbnRlcjp0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmdGhpcy5wc2V1ZG9Gb2N1cy5tb2RlbCYmKHRoaXMuc2VsZWN0aW9uU2VydmljZS5tdWx0aXNlbGVjdGFibGU/dGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnRvZ2dsZSh0aGlzLnBzZXVkb0Zv''@;'; put 'put ''Y3VzLm1vZGVsLnZhbHVlKTp0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KHRoaXMucHNldWRvRm9jdXMubW9kZWwudmFsdWUpLGQ9ITApO2JyZWFrO2Nhc2UgVG8uU3BhY2U6dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW58fCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCxkPSEwKTticmVh''@;'; put 'put ''aztjYXNlIFRvLkFycm93VXA6dGhpcy5wcmV2ZW50Vmlld3BvcnRTY3JvbGxpbmcoYSksdGhpcy5vcGVuQW5kTW92ZVRvKE1kLlVQKSxkPSEwO2JyZWFrO2Nhc2UgVG8uQXJyb3dEb3duOnRoaXMucHJldmVudFZpZXdwb3J0U2Nyb2xsaW5nKGEpLHRoaXMub3BlbkFuZE1vdmVUbyhNZC5ET1dO''@;'; put 'put ''KSxkPSEwO2JyZWFrO2RlZmF1bHQ6YS5rZXkhPT1Uby5UYWImJighdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZXx8YS5rZXkhPT1Uby5CYWNrc3BhY2UpJiZhLmtleSE9PVRvLkVzY2FwZSYmIXRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYodGhpcy50b2dnbGVTZXJ2aWNl''@;'; put 'put ''Lm9wZW49ITApfXJldHVybiBkfXNjcm9sbEludG9TZWxlY3RlZE1vZGVsKGE9InNtb290aCIpe3RoaXMucHNldWRvRm9jdXMubW9kZWwmJnRoaXMucHNldWRvRm9jdXMubW9kZWwuZWwmJnRoaXMucHNldWRvRm9jdXMubW9kZWwuZWwuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOmEsYmxvY2s6''@;'; put 'put ''ImNlbnRlciIsaW5saW5lOiJuZWFyZXN0In0pfXByZXZlbnRWaWV3cG9ydFNjcm9sbGluZyhhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1hZGRGb2N1c09uQmx1ckxpc3RlbmVyKGEpe21hKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMucmVuZGVyZXIu''@;'; put 'put ''bGlzdGVuKGEsImJsdXIiLGQ9Pnt0aGlzLmZvY3VzT3V0T2ZDb21wb25lbnQoZCkmJih0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLmNvbXBvbmVudENkUmVmJiZ0aGlzLmNvbXBvbmVudENkUmVmLmRldGVjdENoYW5nZXMoKSl9KX1mb2N1c091dE9mQ29tcG9uZW50KGEpe2NvbnN0''@;'; put 'put ''IGQ9YS5yZWxhdGVkVGFyZ2V0fHxkb2N1bWVudC5hY3RpdmVFbGVtZW50O3JldHVybiEodGhpcy50ZXh0SW5wdXQuY29udGFpbnMoZCl8fHRoaXMudHJpZ2dlci5jb250YWlucyhkKXx8dGhpcy5saXN0Ym94LmNvbnRhaW5zKGQpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3Jl''@;'; put 'put ''dHVybiBuZXcoYXx8bCkoY3IoeDYpLGNyKFJsKSxjcihUSGUpLGNyKElvKSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCkpO2xldCBrSGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFNoLE1oLENfLHJNKX19cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28scmMsbmEsUFosbnUsQWgsRU0sRl8sbnUsQWhdfSksbH0pKCksRlo9KCgpPT57Y2xhc3MgbCBleHRlbmRzIExfe31y''@;'; put 'put ''ZXR1cm4gbC5cdTAyNzVmYWM9KCgpPT57bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybihjfHwoYz1MYShsKSkpKGR8fGwpfX0pKCksbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWlucHV0LWNvbnRhaW5lciJdXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpm''@;'; put 'put ''dW5jdGlvbihhLGQpezImYSYmcHIoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCIsbnVsbD09ZC5jb250cm9sP251bGw6ZC5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsZC5hZGRHcmlkKCkpfSxmZWF0dXJlczpbWmkoW1JoLE4xLEloLExoXSks''@;'; put 'put ''ZW9dLG5nQ29udGVudFNlbGVjdG9yczpMTGUsZGVjbHM6MTAsdmFyczo3LGNvbnN0czpbWzQsIm5nSWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsImNsci1pbnB1dC13cmFwcGVyIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJl''@;'; put 'put ''eGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLXZhbGlkYXRlLWljb24iLCJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5n''@;'; put 'put ''SWYiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJjbHItdmFsaWRhdGUtaWNvbiJdLFsic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJj''@;'; put 'put ''bHItdmFsaWRhdGUtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKFJMZSksSXIoMCksZ3QoMSxPTGUsMSwwLCJsYWJlbCIsMCksZ2UoMiwiZGl2IiwxKSgzLCJkaXYiLDIpLElyKDQsMSksZ3QoNSxQTGUsMSwwLCJjZHMtaWNvbiIsMykoNixGTGUsMSwwLCJjZHMtaWNv''@;'; put 'put ''biIsNCksbWUoKSxndCg3LE5MZSwxLDAsIm5nLWNvbnRlbnQiLDApKDgsSExlLDEsMCwibmctY29udGVudCIsMCkoOSxWTGUsMSwwLCJuZy1jb250ZW50IiwwKSxtZSgpKSwyJmEmJihfZSgpLFJlKCJuZ0lmIiwhZC5sYWJlbCYmZC5hZGRHcmlkKCkpLF9lKCksUmUoIm5nQ2xhc3MiLGQuY29u''@;'; put 'put ''dHJvbENsYXNzKCkpLF9lKDMpLFJlKCJuZ0lmIixkLnNob3dJbnZhbGlkKSxfZSgpLFJlKCJuZ0lmIixkLnNob3dWYWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93SGVscGVyKSxfZSgpLFJlKCJuZ0lmIixkLnNob3dJbnZhbGlkKSxfZSgpLFJlKCJuZ0lmIixkLnNob3dWYWxpZCkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W0pjLCRpLEdzLCRzXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxFZD0oKCk9PntjbGFzcyBsIGV4dGVuZHMgT197Y29uc3RydWN0b3IoYSxkLGgsZix2KXtzdXBlcihhLEZaLGQsaCxmLHYpLHRoaXMuaW5kZXg9MX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3Jl''@;'; put 'put ''dHVybiBuZXcoYXx8bCkoSmUoaHMpLEplKE1hKSxKZSh0MSwxMCksSmUoZHMpLEplKE5pKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNscklucHV0IiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWlucHV0''@;'; put 'put ''IiwhMCl9LGZlYXR1cmVzOltlb119KSxsfSkoKSxpdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFNoLE1oKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWlu''@;'; put 'put ''aj1zaSh7aW1wb3J0czpbb28scmMsbmEsbnUsbnVdfSksbH0pKCksTlo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZvY3VzZWQ9bmV3IEFyKCExKX1nZXQgZm9jdXNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZC5hc09ic2VydmFibGUoKX1zZXQgZm9jdXNlZChhKXt0''@;'; put 'put ''aGlzLl9mb2N1c2VkLm5leHQoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLEFIZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNv''@;'; put 'put ''bnMoU2gsTWgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxpdWUsbmFdfSksbH0pKCksSF89KCgpPT57Y2xhc3MgbCBleHRlbmRzICRsZXtjb25zdHJ1''@;'; put 'put ''Y3RvcihhLGQsaCl7c3VwZXIoYSxkLGgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShOaSksSmUoYVopLEplKHpzLDgpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2RrVHJhcEZvY3VzIiwiIl1dLGZlYXR1cmVz''@;'; put 'put ''Oltlb119KSxsfSkoKSxfUj0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHt9KSxsfSkoKTtjb25zdCBJSGU9L2QrLittKy4reSsvaSxSSGU9L20rLitk''@;'; put 'put ''Ky4reSsvaSxMSGU9L2QrfG0rfHkrL2ksT0hlPS9cZCsvZyxQSGU9L01vYmkvaSxGSGU9L1x1MjAwZi9nLEhaPSJZWVlZIixiUj17bmFtZToiTElUVExFX0VORElBTiIsZm9ybWF0OlsiREQiLCJNTSIsSFpdfSxqWj17bmFtZToiTUlERExFX0VORElBTiIsZm9ybWF0OlsiTU0iLCJERCIsSFpd''@;'; put 'put ''fSxOSGU9e25hbWU6IkJJR19FTkRJQU4iLGZvcm1hdDpbSFosIk1NIiwiREQiXX07ZnVuY3Rpb24gc3VlKGwsYyl7cmV0dXJuIG5ldyBEYXRlKGwsYysxLDApLmdldERhdGUoKX1jbGFzcyB6SGV7Y29uc3RydWN0b3IoYyxhPSExLGQ9ITEsaD0hMSxmPSExLHY9ITEpe3RoaXMuZGF5TW9kZWw9''@;'; put 'put ''Yyx0aGlzLmlzVG9kYXlzRGF0ZT1hLHRoaXMuaXNFeGNsdWRlZD1kLHRoaXMuaXNEaXNhYmxlZD1oLHRoaXMuaXNTZWxlY3RlZD1mLHRoaXMuaXNGb2N1c2FibGU9dn1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZT8wOi0xfX1jbGFzcyBUZHtjb25zdHJ1Y3RvcihjLGEs''@;'; put 'put ''ZCl7dGhpcy55ZWFyPWMsdGhpcy5tb250aD1hLHRoaXMuZGF0ZT1kfWlzRXF1YWwoYyl7cmV0dXJuISFjJiZ0aGlzLnllYXI9PT1jLnllYXImJnRoaXMubW9udGg9PT1jLm1vbnRoJiZ0aGlzLmRhdGU9PT1jLmRhdGV9dG9EYXRlKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhcix0aGlzLm1v''@;'; put 'put ''bnRoLHRoaXMuZGF0ZSl9aW5jcmVtZW50QnkoYyl7Y29uc3QgYT1uZXcgRGF0ZSh0aGlzLnllYXIsdGhpcy5tb250aCx0aGlzLmRhdGUrYyk7cmV0dXJuIG5ldyBUZChhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKX1jbG9uZSgpe3JldHVybiBuZXcgVGQodGhpcy55''@;'; put 'put ''ZWFyLHRoaXMubW9udGgsdGhpcy5kYXRlKX10b0NvbXBhcmlzb25TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnllYXJ9JHt0aGlzLnBhZCh0aGlzLm1vbnRoKX0ke3RoaXMucGFkKHRoaXMuZGF0ZSl9YH10b0RhdGVTdHJpbmcoKXtyZXR1cm4gdGhpcy50b0RhdGUoKS50b0xvY2FsZURhdGVTdHJp''@;'; put 'put ''bmcodm9pZCAwLHt3ZWVrZGF5OiJsb25nIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIix5ZWFyOiJudW1lcmljIn0pfXBhZChjKXtyZXR1cm4gYzwxMD9gMCR7Y31gOmAke2N9YH19Y2xhc3MgVUhle2NvbnN0cnVjdG9yKGMsYSxkLGgsZix2KXt0aGlzLmNhbGVuZGFyPWMsdGhpcy5zZWxl''@;'; put 'put ''Y3RlZERheT1hLHRoaXMuZm9jdXNhYmxlRGF5PWQsdGhpcy50b2RheT1oLHRoaXMuZmlyc3REYXlPZldlZWs9Zix0aGlzLmV4Y2x1ZGVkRGF0ZXM9dix0aGlzLmN1cnJNb250aERheVZpZXdzPVtdLHRoaXMuaW5pdGlhbGl6ZUNhbGVuZGFyVmlldygpfWdldCBjYWxlbmRhclZpZXcoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fY2FsZW5kYXJWaWV3fXVwZGF0ZUZvY3VzYWJsZURheShjKXt0aGlzLnNldEZvY3VzYWJsZUZsYWcodGhpcy5mb2N1c2FibGVEYXksITEpLHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyhjLCEwKSx0aGlzLmZvY3VzYWJsZURheT1jfWluaXRpYWxpemVDYWxlbmRhclZpZXcoKXtjb25z''@;'; put 'put ''dCBjPXRoaXMuY2FsZW5kYXIucHJldmlvdXNNb250aCgpLGE9dGhpcy5jYWxlbmRhci5uZXh0TW9udGgoKSxkPXRoaXMubnVtRGF5c0Zyb21QcmV2TW9udGhJbkNhbFZpZXcodGhpcy5jYWxlbmRhci55ZWFyLHRoaXMuY2FsZW5kYXIubW9udGgpLGg9NDItKHRoaXMuY2FsZW5kYXIuZGF5cy5s''@;'; put 'put ''ZW5ndGgrZCk7bGV0IGY9W10sdj1bXTtkPjAmJihmPXRoaXMuZ2VuZXJhdGVEYXlWaWV3TW9kZWxzKGMuZGF5cy5zbGljZSgtMSpkKSwhMCwhMSkpLHRoaXMuY3Vyck1vbnRoRGF5Vmlld3M9dGhpcy5nZW5lcmF0ZURheVZpZXdNb2RlbHModGhpcy5jYWxlbmRhci5kYXlzLCExLCEwKSxoPjAm''@;'; put 'put ''Jih2PXRoaXMuZ2VuZXJhdGVEYXlWaWV3TW9kZWxzKGEuZGF5cy5zbGljZSgwLGgpLCEwLCExKSksdGhpcy5fY2FsZW5kYXJWaWV3PXRoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoZix0aGlzLmN1cnJNb250aERheVZpZXdzLHYpLHRoaXMuaW5pdGlhbGl6ZVNlbGVjdGVkRGF5KCksdGhpcy5p''@;'; put 'put ''bml0aWFsaXplRm9jdXNhYmxlRGF5KCl9aXNEYXRlRXhjbHVkZWQoYyl7Y29uc3R7bWluRGF0ZTphLG1heERhdGU6ZH09dGhpcy5leGNsdWRlZERhdGVzLGg9YS50b0NvbXBhcmlzb25TdHJpbmcoKSxmPWQudG9Db21wYXJpc29uU3RyaW5nKCksdj1jLnRvQ29tcGFyaXNvblN0cmluZygpO3Jl''@;'; put 'put ''dHVybiEodj49aCYmdjw9Zil9Z2VuZXJhdGVEYXlWaWV3TW9kZWxzKGMsYSxkKXtjb25zdCBoPWMubWFwKGY9Pm5ldyB6SGUoZiwhMSxhLHRoaXMuaXNEYXRlRXhjbHVkZWQoZiksITEsITEpKTtyZXR1cm4gZCYmdGhpcy5jYWxlbmRhci5pc0RheUluQ2FsZW5kYXIodGhpcy50b2RheSkmJiho''@;'; put 'put ''W3RoaXMudG9kYXkuZGF0ZS0xXS5pc1RvZGF5c0RhdGU9ITApLGh9bnVtRGF5c0Zyb21QcmV2TW9udGhJbkNhbFZpZXcoYyxhKXtjb25zdCBkPWZ1bmN0aW9uIFZIZShsLGMsYSl7cmV0dXJuIG5ldyBEYXRlKGwsYyxhKS5nZXREYXkoKX0oYyxhLDEpO3JldHVybiBkPj10aGlzLmZpcnN0RGF5''@;'; put 'put ''T2ZXZWVrP2QtdGhpcy5maXJzdERheU9mV2Vlazo3K2QtdGhpcy5maXJzdERheU9mV2Vla31pc0RheUluQ2FsZW5kYXJWaWV3KGMpe3JldHVybiEhdGhpcy5jYWxlbmRhci5pc0RheUluQ2FsZW5kYXIoYyl9Z2VuZXJhdGVDYWxlbmRhclZpZXcoYyxhLGQpe2NvbnN0IGg9Wy4uLmMsLi4uYSwu''@;'; put 'put ''Li5kXSxmPVtdO2ZvcihsZXQgdj0wO3Y8Njt2KyspZlt2XT1oLnNsaWNlKDcqdiw3Kih2KzEpKTtyZXR1cm4gZn1pbml0aWFsaXplU2VsZWN0ZWREYXkoKXt0aGlzLnNlbGVjdGVkRGF5JiZ0aGlzLmlzRGF5SW5DYWxlbmRhclZpZXcodGhpcy5zZWxlY3RlZERheSkmJih0aGlzLmN1cnJNb250''@;'; put 'put ''aERheVZpZXdzW3RoaXMuc2VsZWN0ZWREYXkuZGF0ZS0xXS5pc1NlbGVjdGVkPSEwKX1pbml0aWFsaXplRm9jdXNhYmxlRGF5KCl7dGhpcy5mb2N1c2FibGVEYXkmJnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLmZvY3VzYWJsZURheSk/dGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMu''@;'; put 'put ''Zm9jdXNhYmxlRGF5LCEwKTp0aGlzLnNlbGVjdGVkRGF5JiZ0aGlzLmlzRGF5SW5DYWxlbmRhclZpZXcodGhpcy5zZWxlY3RlZERheSk/KHRoaXMuc2V0Rm9jdXNhYmxlRmxhZyh0aGlzLnNlbGVjdGVkRGF5LCEwKSx0aGlzLmZvY3VzYWJsZURheT10aGlzLnNlbGVjdGVkRGF5LmNsb25lKCkp''@;'; put 'put ''OnRoaXMuaXNEYXlJbkNhbGVuZGFyVmlldyh0aGlzLnRvZGF5KT8odGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMudG9kYXksITApLHRoaXMuZm9jdXNhYmxlRGF5PXRoaXMudG9kYXkuY2xvbmUoKSk6KHRoaXMuZm9jdXNhYmxlRGF5PW5ldyBUZCh0aGlzLmNhbGVuZGFyLnllYXIsdGhpcy5j''@;'; put 'put ''YWxlbmRhci5tb250aCwxNSksdGhpcy5zZXRGb2N1c2FibGVGbGFnKHRoaXMuZm9jdXNhYmxlRGF5LCEwKSl9c2V0Rm9jdXNhYmxlRmxhZyhjLGEpe2MmJih0aGlzLmN1cnJNb250aERheVZpZXdzW2MuZGF0ZS0xXS5pc0ZvY3VzYWJsZT1hKX19bGV0IFRNPSgoKT0+e2NsYXNzIGx7Y29uc3Ry''@;'; put 'put ''dWN0b3IoYSl7dGhpcy5sb2NhbGU9YSx0aGlzLl9maXJzdERheU9mV2Vlaz0wLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURhdGEoKX1nZXQgZmlyc3REYXlPZldlZWsoKXtyZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWt9Z2V0IGxvY2FsZURheXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlRGF5c31n''@;'; put 'put ''ZXQgbG9jYWxlRGF5c05hcnJvdygpe3JldHVybiB0aGlzLl9sb2NhbGVEYXlzLm1hcChhPT5hLm5hcnJvdyl9Z2V0IGxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCl7cmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkfWdldCBsb2NhbGVNb250aHNXaWRlKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2xvY2FsZU1vbnRoc1dpZGV9Z2V0IGxvY2FsZURhdGVGb3JtYXQoKXtyZXR1cm4gdGhpcy5fbG9jYWxlRGF0ZUZvcm1hdH1pbml0aWFsaXplTG9jYWxlRGF0YSgpe3RoaXMuaW5pdGlhbGl6ZUZpcnN0RGF5T2ZXZWVrKCksdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0ZUZvcm1hdCgpLHRoaXMu''@;'; put 'put ''aW5pdGlhbGl6ZUxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCksdGhpcy5pbml0aWFsaXplTG9jYWxlTW9udGhzV2lkZSgpLHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURheXMoKX1pbml0aWFsaXplTG9jYWxlRGF5cygpe2NvbnN0IGE9W10sZD1Maih0aGlzLmxvY2FsZSx3dS5TdGFuZGFsb25lLHhh''@;'; put 'put ''LldpZGUpLnNsaWNlKCksaD1Maih0aGlzLmxvY2FsZSx3dS5TdGFuZGFsb25lLHhhLk5hcnJvdykuc2xpY2UoKSxmPXRoaXMuZmlyc3REYXlPZldlZWs7Zm9yKGxldCB2PTA7djw3O3YrKylhLnB1c2goe2RheTpkW3ZdLG5hcnJvdzpoW3ZdfSk7aWYoZj4wKXtjb25zdCB2PWEuc3BsaWNlKDAs''@;'; put 'put ''Zik7YS5wdXNoKC4uLnYpfXRoaXMuX2xvY2FsZURheXM9YX1pbml0aWFsaXplTG9jYWxlTW9udGhzQWJicmV2aWF0ZWQoKXt0aGlzLl9sb2NhbGVNb250aHNBYmJyZXZpYXRlZD1Paih0aGlzLmxvY2FsZSx3dS5TdGFuZGFsb25lLHhhLkFiYnJldmlhdGVkKS5zbGljZSgpfWluaXRpYWxpemVM''@;'; put 'put ''b2NhbGVNb250aHNXaWRlKCl7dGhpcy5fbG9jYWxlTW9udGhzV2lkZT1Paih0aGlzLmxvY2FsZSx3dS5TdGFuZGFsb25lLHhhLldpZGUpLnNsaWNlKCl9aW5pdGlhbGl6ZUZpcnN0RGF5T2ZXZWVrKCl7dGhpcy5fZmlyc3REYXlPZldlZWs9ZnVuY3Rpb24gcTdlKGwpe3JldHVybiBNMChsKVtj''@;'; put 'put ''bC5GaXJzdERheU9mV2Vla119KHRoaXMubG9jYWxlKX1pbml0aWFsaXplTG9jYWxlRGF0ZUZvcm1hdCgpe3RoaXMuX2xvY2FsZURhdGVGb3JtYXQ9ZnVuY3Rpb24gaFMobCxjKXtyZXR1cm4geWgoTTAobClbY2wuRGF0ZUZvcm1hdF0sYyl9KHRoaXMubG9jYWxlLEwxLlNob3J0KX19cmV0dXJu''@;'; put 'put ''IGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IoVjIpKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtjbGFzcyBlZntjb25zdHJ1Y3RvcihjLGEpe3RoaXMueWVhcj1jLHRoaXMubW9udGg9YSx0aGlzLmluaXRp''@;'; put 'put ''YWxpemVEYXlzSW5DYWxlbmRhcigpfWlzRXF1YWwoYyl7cmV0dXJuISFjJiZ0aGlzLnllYXI9PT1jLnllYXImJnRoaXMubW9udGg9PT1jLm1vbnRofWlzRGF5SW5DYWxlbmRhcihjKXtyZXR1cm4hIWMmJnRoaXMueWVhcj09PWMueWVhciYmdGhpcy5tb250aD09PWMubW9udGh9cHJldmlvdXNN''@;'; put 'put ''b250aCgpe3JldHVybiAwPT09dGhpcy5tb250aD9uZXcgZWYodGhpcy55ZWFyLTEsMTEpOm5ldyBlZih0aGlzLnllYXIsdGhpcy5tb250aC0xKX1uZXh0TW9udGgoKXtyZXR1cm4gMTE9PT10aGlzLm1vbnRoP25ldyBlZih0aGlzLnllYXIrMSwwKTpuZXcgZWYodGhpcy55ZWFyLHRoaXMubW9u''@;'; put 'put ''dGgrMSl9aW5pdGlhbGl6ZURheXNJbkNhbGVuZGFyKCl7Y29uc3QgYz1zdWUodGhpcy55ZWFyLHRoaXMubW9udGgpO3RoaXMuZGF5cz1BcnJheShjKS5maWxsKG51bGwpLm1hcCgoYSxkKT0+bmV3IFRkKHRoaXMueWVhcix0aGlzLm1vbnRoLGQrMSkpfX1sZXQgZzQ9KCgpPT57Y2xhc3MgbHtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe3RoaXMuX3RvZGF5c0Z1bGxEYXRlPW5ldyBEYXRlLHRoaXMuX3NlbGVjdGVkRGF5Q2hhbmdlPW5ldyB0bix0aGlzLl9kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZT1uZXcgdG4sdGhpcy5fZm9jdXNPbkNhbGVuZGFyQ2hhbmdlPW5ldyB0bix0aGlzLl9mb2N1c2VkRGF5Q2hh''@;'; put 'put ''bmdlPW5ldyB0bn1nZXQgdG9kYXkoKXtyZXR1cm4gdGhpcy5fdG9kYXl9Z2V0IGRpc3BsYXllZENhbGVuZGFyKCl7cmV0dXJuIHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyfWdldCBzZWxlY3RlZERheUNoYW5nZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZERheUNoYW5nZS5hc09ic2VydmFibGUo''@;'; put 'put ''KX1nZXQgZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IGZvY3VzT25DYWxlbmRhckNoYW5nZSgpe3JldHVybiB0aGlzLl9mb2N1c09uQ2FsZW5kYXJDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0''@;'; put 'put ''IGZvY3VzZWREYXlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZERheUNoYW5nZS5hc09ic2VydmFibGUoKX1ub3RpZnlTZWxlY3RlZERheUNoYW5nZWQoYSl7dGhpcy5zZWxlY3RlZERheT1hLHRoaXMuX3NlbGVjdGVkRGF5Q2hhbmdlLm5leHQoYSl9aW5pdGlhbGl6ZUNhbGVuZGFyKCl7''@;'; put 'put ''dGhpcy5mb2N1c2VkRGF5PW51bGwsdGhpcy5pbml0aWFsaXplVG9kYXlzRGF0ZSgpLHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyPXRoaXMuc2VsZWN0ZWREYXk/bmV3IGVmKHRoaXMuc2VsZWN0ZWREYXkueWVhcix0aGlzLnNlbGVjdGVkRGF5Lm1vbnRoKTpuZXcgZWYodGhpcy50b2RheS55ZWFy''@;'; put 'put ''LHRoaXMudG9kYXkubW9udGgpfWNoYW5nZU1vbnRoKGEpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IGVmKHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLnllYXIsYSkpfWNoYW5nZVllYXIoYSl7dGhpcy5zZXREaXNwbGF5ZWRDYWxlbmRhcihuZXcgZWYoYSx0aGlzLl9kaXNwbGF5ZWRD''@;'; put 'put ''YWxlbmRhci5tb250aCkpfW1vdmVUb05leHRNb250aCgpe3RoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIodGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIubmV4dE1vbnRoKCkpfW1vdmVUb1ByZXZpb3VzTW9udGgoKXt0aGlzLnNldERpc3BsYXllZENhbGVuZGFyKHRoaXMuX2Rpc3BsYXllZENhbGVu''@;'; put 'put ''ZGFyLnByZXZpb3VzTW9udGgoKSl9bW92ZVRvQ3VycmVudE1vbnRoKCl7dGhpcy5kaXNwbGF5ZWRDYWxlbmRhci5pc0RheUluQ2FsZW5kYXIodGhpcy50b2RheSl8fHRoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IGVmKHRoaXMudG9kYXkueWVhcix0aGlzLnRvZGF5Lm1vbnRoKSksdGhp''@;'; put 'put ''cy5fZm9jdXNPbkNhbGVuZGFyQ2hhbmdlLm5leHQoKX1pbmNyZW1lbnRGb2N1c0RheShhKXt0aGlzLmZvY3VzZWREYXk9dGhpcy5mb2N1c2VkRGF5LmluY3JlbWVudEJ5KGEpLHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyLmlzRGF5SW5DYWxlbmRhcih0aGlzLmZvY3VzZWREYXkpP3RoaXMuX2Zv''@;'; put 'put ''Y3VzZWREYXlDaGFuZ2UubmV4dCh0aGlzLmZvY3VzZWREYXkpOnRoaXMuc2V0RGlzcGxheWVkQ2FsZW5kYXIobmV3IGVmKHRoaXMuZm9jdXNlZERheS55ZWFyLHRoaXMuZm9jdXNlZERheS5tb250aCkpLHRoaXMuX2ZvY3VzT25DYWxlbmRhckNoYW5nZS5uZXh0KCl9c2V0RGlzcGxheWVkQ2Fs''@;'; put 'put ''ZW5kYXIoYSl7dGhpcy5fZGlzcGxheWVkQ2FsZW5kYXIuaXNFcXVhbChhKXx8KHRoaXMuX2Rpc3BsYXllZENhbGVuZGFyPWEsdGhpcy5fZGlzcGxheWVkQ2FsZW5kYXJDaGFuZ2UubmV4dCgpKX1pbml0aWFsaXplVG9kYXlzRGF0ZSgpe3RoaXMuX3RvZGF5c0Z1bGxEYXRlPW5ldyBEYXRlLHRo''@;'; put 'put ''aXMuX3RvZGF5PW5ldyBUZCh0aGlzLl90b2RheXNGdWxsRGF0ZS5nZXRGdWxsWWVhcigpLHRoaXMuX3RvZGF5c0Z1bGxEYXRlLmdldE1vbnRoKCksdGhpcy5fdG9kYXlzRnVsbERhdGUuZ2V0RGF0ZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9''@;'; put 'put ''LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksQl89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuX25nWm9uZT1hLHRoaXMucGxhdGZvcm1JZD1kfWZvY3VzQ2VsbChhKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIo''@;'; put 'put ''KCk9Pnt0aGlzLm5nWm9uZUlzU3RhYmxlSW5Ccm93c2VyKCkuc3Vic2NyaWJlKCgpPT57Y29uc3QgZD1hLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSIwIl0nKTtkJiZkLmZvY3VzKCl9KX0pfWZvY3VzSW5wdXQoYSl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1''@;'; put 'put ''bGFyKCgpPT50aGlzLm5nWm9uZUlzU3RhYmxlSW5Ccm93c2VyKCkuc3Vic2NyaWJlKCgpPT5hLmZvY3VzKCkpKX1lbGVtZW50SXNGb2N1c2VkKGEpe3JldHVybiBtYSh0aGlzLnBsYXRmb3JtSWQpJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09YX1uZ1pvbmVJc1N0YWJsZUluQnJvd3Nlcigp''@;'; put 'put ''e3JldHVybiB0aGlzLl9uZ1pvbmUub25TdGFibGUuYXNPYnNlcnZhYmxlKCkucGlwZShjbSgpLFphKCgpPT5tYSh0aGlzLnBsYXRmb3JtSWQpKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKE1vKSxjcihJbykpfSxsLlx1MDI3NXByb3Y9aXIo''@;'; put 'put ''e3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGpfPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT1hLHRoaXMuZGlzYWJsZWREYXRlcz17bWluRGF0ZTpuZXcgVGQoMCwwLDEpLG1heERhdGU6bmV3IFRkKDk5OTksMTEsMzEp''@;'; put 'put ''fSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PSJkZC9NTS95Iix0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9YlIsdGhpcy5kZWxpbWl0ZXJzPVsiLyIsIi8iXSx0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0PXRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2UubG9jYWxlRGF0ZUZvcm1hdCx0aGlz''@;'; put 'put ''LmluaXRpYWxpemVMb2NhbGVEaXNwbGF5Rm9ybWF0KCl9Z2V0IHBsYWNlaG9sZGVyVGV4dCgpe2NvbnN0IGE9dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdDtyZXR1cm4gYVswXSt0aGlzLmRlbGltaXRlcnNbMF0rYVsxXSt0aGlzLmRlbGltaXRlcnNbMV0rYVsyXX1zZXRNaW5EYXRl''@;'; put 'put ''KGEpe2lmKGEpe2NvbnN0W2QsaCxmXT1hLnNwbGl0KCItIikubWFwKHY9PnBhcnNlSW50KHYsMTApKTt0aGlzLmRpc2FibGVkRGF0ZXMubWluRGF0ZT1uZXcgVGQoZCxoLTEsZil9ZWxzZSB0aGlzLmRpc2FibGVkRGF0ZXMubWluRGF0ZT1uZXcgVGQoMCwwLDEpfXNldE1heERhdGUoYSl7aWYo''@;'; put 'put ''YSl7Y29uc3RbZCxoLGZdPWEuc3BsaXQoIi0iKS5tYXAodj0+cGFyc2VJbnQodiwxMCkpO3RoaXMuZGlzYWJsZWREYXRlcy5tYXhEYXRlPW5ldyBUZChkLGgtMSxmKX1lbHNlIHRoaXMuZGlzYWJsZWREYXRlcy5tYXhEYXRlPW5ldyBUZCg5OTk5LDExLDMxKX10b0xvY2FsZURpc3BsYXlGb3Jt''@;'; put 'put ''YXRTdHJpbmcoYSl7aWYoYSl7aWYoaXNOYU4oYS5nZXRUaW1lKCkpKXJldHVybiIiO2NvbnN0IGQ9YS5nZXREYXRlKCksaD1hLmdldE1vbnRoKCkrMSxmPWQ+OT9kLnRvU3RyaW5nKCk6IjAiK2Qsdj1oPjk/aC50b1N0cmluZygpOiIwIitoO3JldHVybiB0aGlzLmxvY2FsZURpc3BsYXlGb3Jt''@;'; put 'put ''YXQ9PT1iUj9mK3RoaXMuZGVsaW1pdGVyc1swXSt2K3RoaXMuZGVsaW1pdGVyc1sxXSthLmdldEZ1bGxZZWFyKCk6dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PT09alo/dit0aGlzLmRlbGltaXRlcnNbMF0rZit0aGlzLmRlbGltaXRlcnNbMV0rYS5nZXRGdWxsWWVhcigpOmEuZ2V0RnVsbFll''@;'; put 'put ''YXIoKSt0aGlzLmRlbGltaXRlcnNbMF0rdit0aGlzLmRlbGltaXRlcnNbMV0rZn1yZXR1cm4iIn1nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyhhKXtpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsO2NvbnN0IGQ9YS5tYXRjaChPSGUpO2lmKCFkfHwzIT09ZC5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIG51bGw7Y29uc3RbaCxmLHZdPWQ7cmV0dXJuIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdD09PWJSP3RoaXMudmFsaWRhdGVBbmRHZXREYXRlKHYsZixoKTp0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQ9PT1qWj90aGlzLnZhbGlkYXRlQW5kR2V0RGF0ZSh2LGgsZik6dGhpcy52YWxp''@;'; put 'put ''ZGF0ZUFuZEdldERhdGUoaCxmLHYpfWluaXRpYWxpemVMb2NhbGVEaXNwbGF5Rm9ybWF0KCl7Y29uc3QgYT10aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0LnRvTG9jYWxlTG93ZXJDYXNlKCk7dGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0PUlIZS50ZXN0KGEpP2JSOlJIZS50ZXN0KGEpP2paOk5I''@;'; put 'put ''ZSx0aGlzLmV4dHJhY3REZWxpbWl0ZXJzKCl9ZXh0cmFjdERlbGltaXRlcnMoKXtpZih0aGlzLmNsZHJMb2NhbGVEYXRlRm9ybWF0KXtjb25zdCBkPXRoaXMuY2xkckxvY2FsZURhdGVGb3JtYXQucmVwbGFjZShGSGUsIiIpLnNwbGl0KExIZSk7ZCYmND09PWQubGVuZ3RoP3RoaXMuZGVsaW1p''@;'; put 'put ''dGVycz1bZFsxXSxkWzJdXTpjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIGRhdGUgZm9ybWF0IHJlY2VpdmVkLiBEZWxpbWl0ZXJzIGV4dHJhY3RlZDogIixkKX19aXNWYWxpZE1vbnRoKGEpe3JldHVybiBhPi0xJiZhPDEyfWlzVmFsaWREYXRlKGEsZCxoKXtyZXR1cm4gaD4wJiZoPD1zdWUo''@;'; put 'put ''YSxkKX12YWxpZGF0ZUFuZEdldERhdGUoYSxkLGgpe2NvbnN0IGY9K2Esdj0rZC0xLFM9K2g7aWYoIXRoaXMuaXNWYWxpZE1vbnRoKHYpfHwhdGhpcy5pc1ZhbGlkRGF0ZShmLHYsUykpcmV0dXJuIG51bGw7Y29uc3QgVj1mdW5jdGlvbiBCSGUobCl7aWYobD45OTk5fHxsPjEwMCYmbDw5OTl8''@;'; put 'put ''fGw8MTApcmV0dXJuLTE7aWYobD45OTkpcmV0dXJuIGw7Y29uc3QgYz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7bGV0IGQ9bCsxMDAqTWF0aC5mbG9vcihjLzEwMCk7cmV0dXJuIGQ+YysyMCYmKGQtPTEwMCksZH0oZik7cmV0dXJuLTEhPT1WP25ldyBEYXRlKFYsdixTKTpudWxsfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihUTSkpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLGtNPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl90b3VjaGVkQ2hhbmdlPW5ldyB0bix0''@;'; put 'put ''aGlzLl9kaXJ0eUNoYW5nZT1uZXcgdG59Z2V0IHRvdWNoZWRDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZENoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgZGlydHlDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZGlydHlDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9bWFya0FzVG91Y2hlZCgpe3RoaXMu''@;'; put 'put ''X3RvdWNoZWRDaGFuZ2UubmV4dCgpfW1hcmtBc0RpcnR5KCl7dGhpcy5fZGlydHlDaGFuZ2UubmV4dCgpfXNldERpc2FibGVkKGEpe3RoaXMuZGlzYWJsZWQ9YX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46''@;'; put 'put ''bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksYXVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWEsdGhpcy5fdG9nZ2xlU2VydmljZT1kLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZT1oLHRoaXMuY29tbW9uU3Ry''@;'; put 'put ''aW5ncz1mfWdldCBkYXlWaWV3KCl7cmV0dXJuIHRoaXMuX2RheVZpZXd9c2V0IGRheVZpZXcoYSl7dGhpcy5fZGF5Vmlldz1hfWdldCBkYXlTdHJpbmcoKXtyZXR1cm4gdGhpcy5kYXlWaWV3LmlzU2VsZWN0ZWQ/dGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5r''@;'; put 'put ''ZXlzLmRhdGVwaWNrZXJTZWxlY3RlZExhYmVsLHtGVUxMX0RBVEU6dGhpcy5fZGF5Vmlldy5kYXlNb2RlbC50b0RhdGVTdHJpbmcoKX0pOnRoaXMuX2RheVZpZXcuZGF5TW9kZWwudG9EYXRlU3RyaW5nKCl9b25EYXlWaWV3Rm9jdXMoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZm9j''@;'; put 'put ''dXNlZERheT10aGlzLmRheVZpZXcuZGF5TW9kZWx9c2VsZWN0RGF5KCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm5vdGlmeVNlbGVjdGVkRGF5Q2hhbmdlZCh0aGlzLmRheVZpZXcuZGF5TW9kZWwpLHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5tYXJrQXNEaXJ0eSgpLHRoaXMu''@;'; put 'put ''X3RvZ2dsZVNlcnZpY2Uub3Blbj0hMX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoZzQpLEplKFJsKSxKZShrTSksSmUoVXMpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRheSJdXSxob3N0VmFyczoyLGhvc3RC''@;'; put 'put ''aW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImRheSIsITApfSxpbnB1dHM6e2RheVZpZXc6W2puLk5vbmUsImNsckRheVZpZXciLCJkYXlWaWV3Il19LGRlY2xzOjIsdmFyczoxMyxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsMSwiZGF5LWJ0biIsMywiY2xpY2siLCJmb2N1cyJdXSx0''@;'; put 'put ''ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKGdlKDAsImJ1dHRvbiIsMCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLnNlbGVjdERheSgpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBkLm9uRGF5Vmlld0ZvY3VzKCl9KSxQZSgxKSxtZSgpKSwyJmEmJihwcigiaXMtdG9k''@;'; put 'put ''YXkiLGQuZGF5Vmlldy5pc1RvZGF5c0RhdGUpKCJpcy1leGNsdWRlZCIsZC5kYXlWaWV3LmlzRXhjbHVkZWQpKCJpcy1kaXNhYmxlZCIsZC5kYXlWaWV3LmlzRGlzYWJsZWQpKCJpcy1zZWxlY3RlZCIsZC5kYXlWaWV3LmlzU2VsZWN0ZWQpLHVyKCJ0YWJpbmRleCIsZC5kYXlWaWV3LnRhYklu''@;'; put 'put ''ZGV4KSgiYXJpYS1jdXJyZW50IixkLmRheVZpZXcuaXNUb2RheXNEYXRlPyJkYXRlIjoiZmFsc2UiKSgiYXJpYS1sYWJlbCIsZC5kYXlTdHJpbmcpKCJhcmlhLXNlbGVjdGVkIixkLmRheVZpZXcuaXNTZWxlY3RlZCksX2UoKSxtcigiICIsZC5kYXlWaWV3LmRheU1vZGVsLmRhdGUsIiAiKSl9''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGx1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT1hLHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZT1kLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2U9aCx0aGlzLl9kYXRl''@;'; put 'put ''SU9TZXJ2aWNlPWYsdGhpcy5fZWxSZWY9dix0aGlzLl9zdWJzPVtdLHRoaXMuZ2VuZXJhdGVDYWxlbmRhclZpZXcoKSx0aGlzLmluaXRpYWxpemVTdWJzY3JpcHRpb25zKCl9Z2V0IGxvY2FsZURheXMoKXtyZXR1cm4gdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZS5sb2NhbGVEYXlzfWdldCBj''@;'; put 'put ''YWxlbmRhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXJ9Z2V0IHNlbGVjdGVkRGF5KCl7cmV0dXJuIHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheX1nZXQgZm9jdXNlZERheSgpe3JldHVybiB0aGlzLl9kYXRlTmF2''@;'; put 'put ''aWdhdGlvblNlcnZpY2UuZm9jdXNlZERheX1nZXQgdG9kYXkoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnRvZGF5fW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX1uZ09uRGVzdHJveSgpe3Ro''@;'; put 'put ''aXMuX3N1YnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfW9uS2V5RG93bihhKXtpZihhJiZ0aGlzLmZvY3VzZWREYXkpc3dpdGNoKEVoKGEua2V5KSl7Y2FzZSBUby5BcnJvd1VwOmEucHJldmVudERlZmF1bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9j''@;'; put 'put ''dXNEYXkoLTcpO2JyZWFrO2Nhc2UgVG8uQXJyb3dEb3duOmEucHJldmVudERlZmF1bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9jdXNEYXkoNyk7YnJlYWs7Y2FzZSBUby5BcnJvd0xlZnQ6YS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RhdGVOYXZpZ2F0aW9u''@;'; put 'put ''U2VydmljZS5pbmNyZW1lbnRGb2N1c0RheSgtMSk7YnJlYWs7Y2FzZSBUby5BcnJvd1JpZ2h0OmEucHJldmVudERlZmF1bHQoKSx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5jcmVtZW50Rm9jdXNEYXkoMSl9fWluaXRpYWxpemVTdWJzY3JpcHRpb25zKCl7dGhpcy5fc3Vicy5wdXNo''@;'; put 'put ''KHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRhckNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmdlbmVyYXRlQ2FsZW5kYXJWaWV3KCl9KSksdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5mb2N1c2VkRGF5Q2hhbmdlLnN1YnNj''@;'; put 'put ''cmliZShhPT57dGhpcy5jYWxlbmRhclZpZXdNb2RlbC51cGRhdGVGb2N1c2FibGVEYXkoYSl9KSksdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5mb2N1c09uQ2FsZW5kYXJDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2Vydmlj''@;'; put 'put ''ZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfSkpfWdlbmVyYXRlQ2FsZW5kYXJWaWV3KCl7dGhpcy5jYWxlbmRhclZpZXdNb2RlbD1uZXcgVUhlKHRoaXMuY2FsZW5kYXIsdGhpcy5zZWxlY3RlZERheSx0aGlzLmZvY3VzZWREYXksdGhpcy50b2RheSx0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNl''@;'; put 'put ''LmZpcnN0RGF5T2ZXZWVrLHRoaXMuX2RhdGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFRNKSxKZShnNCksSmUoQl8pLEplKGpfKSxKZShOaSkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVj''@;'; put 'put ''dG9yczpbWyJjbHItY2FsZW5kYXIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgia2V5ZG93biIsZnVuY3Rpb24oZil7cmV0dXJuIGQub25LZXlEb3duKGYpfSl9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJjYWxlbmRhci10''@;'; put 'put ''YWJsZSJdLFsxLCJjYWxlbmRhci1yb3ciLCJ3ZWVrZGF5cyJdLFsiY2xhc3MiLCJjYWxlbmRhci1jZWxsIHdlZWtkYXkiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJjYWxlbmRhci1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjYWxlbmRhci1jZWxsIiwid2Vla2RheSJd''@;'; put 'put ''LFsxLCJjYWxlbmRhci1yb3ciXSxbImNsYXNzIiwiY2FsZW5kYXItY2VsbCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNhbGVuZGFyLWNlbGwiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMywiY2xyRGF5VmlldyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKGdlKDAsInRhYmxl''@;'; put 'put ''IiwwKSgxLCJ0ciIsMSksZ3QoMixCTGUsMywyLCJ0aCIsMiksbWUoKSxndCgzLHpMZSwyLDEsInRyIiwzKSxtZSgpKSwyJmEmJihfZSgyKSxSZSgibmdGb3JPZiIsZC5sb2NhbGVEYXlzKSxfZSgpLFJlKCJuZ0Zvck9mIixkLmNhbGVuZGFyVmlld01vZGVsLmNhbGVuZGFyVmlldykpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W1ZzLGF1ZV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCkseVI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9kb2N1bWVudD1hLHRoaXMuX2lzVXNlckFnZW50TW9iaWxlPSExLHRoaXMuX2RvY3VtZW50JiYodGhpcy5faXNVc2VyQWdlbnRNb2JpbGU9UEhlLnRl''@;'; put 'put ''c3QoYS5kZWZhdWx0Vmlldy5uYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLl9pbm5lcldpZHRoPWEuZGVmYXVsdFZpZXcuaW5uZXJXaWR0aCl9Z2V0IGlzRW5hYmxlZCgpe3JldHVybiEodGhpcy5fZG9jdW1lbnQmJnRoaXMuX2lubmVyV2lkdGg8NzY4JiZ0aGlzLl9pc1VzZXJBZ2VudE1vYmls''@;'; put 'put ''ZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKHpzKSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksel89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpb249RjFbImJv''@;'; put 'put ''dHRvbS1sZWZ0Il0sdGhpcy5fY3VycmVudFZpZXc9IkRBWVZJRVcifWdldCBpc0RheVZpZXcoKXtyZXR1cm4iREFZVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNZZWFyVmlldygpe3JldHVybiJZRUFSVklFVyI9PT10aGlzLl9jdXJyZW50Vmlld31nZXQgaXNNb250aFZpZXcoKXty''@;'; put 'put ''ZXR1cm4iTU9OVEhWSUVXIj09PXRoaXMuX2N1cnJlbnRWaWV3fWNoYW5nZVRvTW9udGhWaWV3KCl7dGhpcy5fY3VycmVudFZpZXc9Ik1PTlRIVklFVyJ9Y2hhbmdlVG9ZZWFyVmlldygpe3RoaXMuX2N1cnJlbnRWaWV3PSJZRUFSVklFVyJ9Y2hhbmdlVG9EYXlWaWV3KCl7dGhpcy5fY3VycmVu''@;'; put 'put ''dFZpZXc9IkRBWVZJRVcifX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxjdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYpe3RoaXMu''@;'; put 'put ''X3ZpZXdNYW5hZ2VyU2VydmljZT1hLHRoaXMuX2xvY2FsZUhlbHBlclNlcnZpY2U9ZCx0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2U9aCx0aGlzLl9kYXRlcGlja2VyRm9jdXNTZXJ2aWNlPWYsdGhpcy5fZWxSZWY9dix0aGlzLl9mb2N1c2VkTW9udGhJbmRleD10aGlzLmNhbGVuZGFyTW9u''@;'; put 'put ''dGhJbmRleH1nZXQgbW9udGhOYW1lcygpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc1dpZGV9Z2V0IGNhbGVuZGFyTW9udGhJbmRleCgpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIubW9udGh9bmdBZnRl''@;'; put 'put ''clZpZXdJbml0KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW9uS2V5RG93bihhKXtpZihhKXtjb25zdCBkPUVoKGEua2V5KTtkPT09VG8uQXJyb3dVcCYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg+MD8oYS5wcmV2ZW50RGVmYXVsdCgpLHRo''@;'; put 'put ''aXMuX2ZvY3VzZWRNb250aEluZGV4LS0sdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpkPT09VG8uQXJyb3dEb3duJiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleDwxMT8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4''@;'; put 'put ''KyssdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpkPT09VG8uQXJyb3dSaWdodCYmdGhpcy5fZm9jdXNlZE1vbnRoSW5kZXg8Nj8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250aElu''@;'; put 'put ''ZGV4KzYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKTpkPT09VG8uQXJyb3dMZWZ0JiZ0aGlzLl9mb2N1c2VkTW9udGhJbmRleD41JiYoYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRNb250aEluZGV4PXRoaXMuX2ZvY3VzZWRNb250''@;'; put 'put ''aEluZGV4LTYsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpKX19Y2hhbmdlTW9udGgoYSl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmNoYW5nZU1vbnRoKGEpLHRoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb0RheVZpZXcoKX1n''@;'; put 'put ''ZXRUYWJJbmRleChhKXtyZXR1cm4gYT09PXRoaXMuX2ZvY3VzZWRNb250aEluZGV4PzA6LTF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHpfKSxKZShUTSksSmUoZzQpLEplKEJfKSxKZShOaSkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNl''@;'; put 'put ''bGVjdG9yczpbWyJjbHItbW9udGhwaWNrZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsImFwcGxpY2F0aW9uIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsxJmEmJkl0KCJrZXlkb3duIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vbktleURvd24oZil9KSwyJmEmJnByKCJt''@;'; put 'put ''b250aHBpY2tlciIsITApfSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiY2FsZW5kYXItYnRuIG1vbnRoIiwzLCJpcy1zZWxlY3RlZCIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIs''@;'; put 'put ''Im1vbnRoIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmZ3QoMCxVTGUsMiw0LCJidXR0b24iLDApLDImYSYmUmUoIm5nRm9yT2YiLGQubW9udGhOYW1lcyl9LGRlcGVuZGVuY2llczpbVnNdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpO2NsYXNzIEFNe2NvbnN0cnVj''@;'; put 'put ''dG9yKGMpe3RoaXMueWVhcj1jLHRoaXMueWVhclJhbmdlPVtdLHRoaXMuZ2VuZXJhdGVZZWFyUmFuZ2UoKX1nZXQgbWlkZGxlWWVhcigpe3JldHVybiB0aGlzLnllYXJSYW5nZVtNYXRoLmZsb29yKHRoaXMueWVhclJhbmdlLmxlbmd0aC8yKV19bmV4dERlY2FkZSgpe3JldHVybiBuZXcgQU0o''@;'; put 'put ''dGhpcy55ZWFyKzEwKX1wcmV2aW91c0RlY2FkZSgpe3JldHVybiBuZXcgQU0odGhpcy55ZWFyLTEwKX1jdXJyZW50RGVjYWRlKCl7cmV0dXJuIG5ldyBBTSgobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpfWluUmFuZ2UoYyl7cmV0dXJuIHRoaXMueWVhclJhbmdlLmluZGV4T2YoYyk+LTF9Z2Vu''@;'; put 'put ''ZXJhdGVZZWFyUmFuZ2UoKXtjb25zdCBhPXRoaXMueWVhci10aGlzLnllYXIlMTA7dGhpcy55ZWFyUmFuZ2U9dGhpcy5nZW5lcmF0ZVJhbmdlKGEsYSsxMCl9Z2VuZXJhdGVSYW5nZShjLGEpe3JldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6YS1jfSwoZCxoKT0+aCtjKX19bGV0IGR1ZT0oKCk9''@;'; put 'put ''PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWEsdGhpcy5fdmlld01hbmFnZXJTZXJ2aWNlPWQsdGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZT1oLHRoaXMuX2VsUmVmPWYsdGhpcy5jb21tb25TdHJpbmdzPXYsdGhpcy55ZWFy''@;'; put 'put ''UmFuZ2VNb2RlbD1uZXcgQU0odGhpcy5jYWxlbmRhclllYXIpLHRoaXMuX2ZvY3VzZWRZZWFyPXRoaXMuY2FsZW5kYXJZZWFyfWdldCBjYWxlbmRhclllYXIoKXtyZXR1cm4gdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmRpc3BsYXllZENhbGVuZGFyLnllYXJ9bmdBZnRlclZpZXdJbml0''@;'; put 'put ''KCl7dGhpcy5fZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0NlbGwodGhpcy5fZWxSZWYpfW9uS2V5RG93bihhKXtpZihhKXtjb25zdCBkPUVoKGEua2V5KTtkPT09VG8uQXJyb3dVcD8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTEpKTpkPT09VG8u''@;'; put 'put ''QXJyb3dEb3duPyhhLnByZXZlbnREZWZhdWx0KCksdGhpcy5pbmNyZW1lbnRGb2N1c1llYXJCeSgxKSk6ZD09PVRvLkFycm93UmlnaHQ/KGEucHJldmVudERlZmF1bHQoKSx0aGlzLmluY3JlbWVudEZvY3VzWWVhckJ5KDUpKTpkPT09VG8uQXJyb3dMZWZ0JiYoYS5wcmV2ZW50RGVmYXVsdCgp''@;'; put 'put ''LHRoaXMuaW5jcmVtZW50Rm9jdXNZZWFyQnkoLTUpKX19Y2hhbmdlWWVhcihhKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuY2hhbmdlWWVhcihhKSx0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9EYXlWaWV3KCl9cHJldmlvdXNEZWNhZGUoKXt0aGlzLnllYXJSYW5nZU1v''@;'; put 'put ''ZGVsPXRoaXMueWVhclJhbmdlTW9kZWwucHJldmlvdXNEZWNhZGUoKX1jdXJyZW50RGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS50b2RheS55ZWFyKXx8KHRoaXMueWVhclJhbmdlTW9kZWw9dGhpcy55ZWFyUmFuZ2VNb2Rl''@;'; put 'put ''bC5jdXJyZW50RGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX1uZXh0RGVjYWRlKCl7dGhpcy55ZWFyUmFuZ2VNb2RlbD10aGlzLnllYXJSYW5nZU1vZGVsLm5leHREZWNhZGUoKX1nZXRUYWJJbmRleChhKXtyZXR1cm4gdGhpcy55''@;'; put 'put ''ZWFyUmFuZ2VNb2RlbC5pblJhbmdlKHRoaXMuX2ZvY3VzZWRZZWFyKXx8KHRoaXMuX2ZvY3VzZWRZZWFyPXRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLmNhbGVuZGFyWWVhcik/dGhpcy5jYWxlbmRhclllYXI6dGhpcy55ZWFyUmFuZ2VNb2RlbC5taWRkbGVZZWFyKSx0aGlzLl9m''@;'; put 'put ''b2N1c2VkWWVhcj09PWE/MDotMX1pbmNyZW1lbnRGb2N1c1llYXJCeShhKXt0aGlzLl9mb2N1c2VkWWVhcj10aGlzLl9mb2N1c2VkWWVhcithLHRoaXMueWVhclJhbmdlTW9kZWwuaW5SYW5nZSh0aGlzLl9mb2N1c2VkWWVhcil8fCh0aGlzLnllYXJSYW5nZU1vZGVsPWE+MD90aGlzLnllYXJS''@;'; put 'put ''YW5nZU1vZGVsLm5leHREZWNhZGUoKTp0aGlzLnllYXJSYW5nZU1vZGVsLnByZXZpb3VzRGVjYWRlKCkpLHRoaXMuX2RhdGVwaWNrZXJGb2N1c1NlcnZpY2UuZm9jdXNDZWxsKHRoaXMuX2VsUmVmKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUo''@;'; put 'put ''ZzQpLEplKHpfKSxKZShCXyksSmUoTmkpLEplKFVzKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci15ZWFycGlja2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJhcHBsaWNhdGlvbiJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJ''@;'; put 'put ''dCgia2V5ZG93biIsZnVuY3Rpb24oZil7cmV0dXJuIGQub25LZXlEb3duKGYpfSksMiZhJiZwcigieWVhcnBpY2tlciIsITApfSxkZWNsczo5LHZhcnM6Nyxjb25zdHM6W1sxLCJ5ZWFyLXN3aXRjaGVycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwic3dpdGNoZXIiLDMs''@;'; put 'put ''ImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsic2hhcGUiLCJldmVudCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJpZ2h0Il0sWzEsInllYXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJjYWxlbmRhci1idG4geWVhciIsMywiaXMt''@;'; put 'put ''c2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJ5ZWFyIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKGdlKDAsImRpdiIsMCkoMSwiYnV0dG9uIiwxKSxJdCgiY2xpY2siLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIGQucHJldmlvdXNEZWNhZGUoKX0pLFl0KDIsImNkcy1pY29uIiwyKSxtZSgpLGdlKDMsImJ1dHRvbiIsMSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLmN1cnJlbnREZWNhZGUoKX0pLFl0KDQsImNkcy1pY29uIiwzKSxtZSgpLGdlKDUsImJ1dHRvbiIsMSks''@;'; put 'put ''SXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLm5leHREZWNhZGUoKX0pLFl0KDYsImNkcy1pY29uIiw0KSxtZSgpKCksZ2UoNywiZGl2Iiw1KSxndCg4LFpMZSwyLDQsImJ1dHRvbiIsNiksbWUoKSksMiZhJiYoX2UoKSx1cigiYXJpYS1sYWJlbCIsZC5jb21tb25TdHJpbmdzLmtleXMu''@;'; put 'put ''ZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlKSxfZSgpLHVyKCJ0aXRsZSIsZC5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclByZXZpb3VzRGVjYWRlKSxfZSgpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudERlY2FkZSksX2UoKSx1cigi''@;'; put 'put ''dGl0bGUiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJDdXJyZW50RGVjYWRlKSxfZSgpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyTmV4dERlY2FkZSksX2UoKSx1cigidGl0bGUiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJO''@;'; put 'put ''ZXh0RGVjYWRlKSxfZSgyKSxSZSgibmdGb3JPZiIsZC55ZWFyUmFuZ2VNb2RlbC55ZWFyUmFuZ2UpKX0sZGVwZW5kZW5jaWVzOltWcyxHc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksaHVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5fdmlld01hbmFnZXJTZXJ2''@;'; put 'put ''aWNlPWEsdGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPWQsdGhpcy5fbG9jYWxlSGVscGVyU2VydmljZT1oLHRoaXMuY29tbW9uU3RyaW5ncz1mfWdldCBtb250aEF0dHJTdHJpbmcoKXtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRh''@;'; put 'put ''dGVwaWNrZXJTZWxlY3RNb250aFRleHQse0NBTEVOREFSX01PTlRIOnRoaXMuY2FsZW5kYXJNb250aH0pfWdldCB5ZWFyQXR0clN0cmluZygpe3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclNlbGVjdFllYXJUZXh0LHtD''@;'; put 'put ''QUxFTkRBUl9ZRUFSOnRoaXMuY2FsZW5kYXJZZWFyLnRvU3RyaW5nKCl9KX1nZXQgY2FsZW5kYXJNb250aCgpe3JldHVybiB0aGlzLl9sb2NhbGVIZWxwZXJTZXJ2aWNlLmxvY2FsZU1vbnRoc0FiYnJldmlhdGVkW3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5kaXNwbGF5ZWRDYWxlbmRh''@;'; put 'put ''ci5tb250aF19Z2V0IGNhbGVuZGFyWWVhcigpe3JldHVybiB0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UuZGlzcGxheWVkQ2FsZW5kYXIueWVhcn1jaGFuZ2VUb01vbnRoVmlldygpe3RoaXMuX3ZpZXdNYW5hZ2VyU2VydmljZS5jaGFuZ2VUb01vbnRoVmlldygpfWNoYW5nZVRvWWVhclZp''@;'; put 'put ''ZXcoKXt0aGlzLl92aWV3TWFuYWdlclNlcnZpY2UuY2hhbmdlVG9ZZWFyVmlldygpfW5leHRNb250aCgpe3RoaXMuX2RhdGVOYXZpZ2F0aW9uU2VydmljZS5tb3ZlVG9OZXh0TW9udGgoKX1wcmV2aW91c01vbnRoKCl7dGhpcy5fZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLm1vdmVUb1ByZXZpb3Vz''@;'; put 'put ''TW9udGgoKX1jdXJyZW50TW9udGgoKXt0aGlzLl9kYXRlTmF2aWdhdGlvblNlcnZpY2UubW92ZVRvQ3VycmVudE1vbnRoKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHpfKSxKZShnNCksSmUoVE0pLEplKFVzKSl9LGwuXHUwMjc1Y21wPVNy''@;'; put 'put ''KHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXlwaWNrZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsImFwcGxpY2F0aW9uIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJkYXlwaWNrZXIiLCEwKX0sZGVjbHM6MTgsdmFyczoxNCxjb25zdHM6W1sxLCJj''@;'; put 'put ''bHItc3Itb25seSJdLFsxLCJjYWxlbmRhci1oZWFkZXIiXSxbMSwiY2FsZW5kYXItcGlja2VycyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2FsZW5kYXItYnRuIiwibW9udGhwaWNrZXItdHJpZ2dlciIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImNhbGVuZGFyLWJ0biIsInllYXJw''@;'; put 'put ''aWNrZXItdHJpZ2dlciIsMywiY2xpY2siXSxbMSwiY2FsZW5kYXItc3dpdGNoZXJzIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJjYWxlbmRhci1idG4iLCJzd2l0Y2hlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJsZWZ0Il0sWyJzaGFwZSIsImV2ZW50Il0sWyJz''@;'; put 'put ''aGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwicmlnaHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihnZSgwLCJkaXYiLDApLFBlKDEpLG1lKCksZ2UoMiwiZGl2IiwxKSgzLCJkaXYiLDIpKDQsImJ1dHRvbiIsMyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLmNoYW5n''@;'; put 'put ''ZVRvTW9udGhWaWV3KCl9KSxQZSg1KSxtZSgpLGdlKDYsImJ1dHRvbiIsNCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLmNoYW5nZVRvWWVhclZpZXcoKX0pLFBlKDcpLG1lKCkoKSxnZSg4LCJkaXYiLDUpKDksImJ1dHRvbiIsNiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBkLnByZXZpb3VzTW9udGgoKX0pLFl0KDEwLCJjZHMtaWNvbiIsNyksbWUoKSxnZSgxMSwiYnV0dG9uIiw2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGQuY3VycmVudE1vbnRoKCl9KSxZdCgxMiwiY2RzLWljb24iLDgpLG1lKCksZ2UoMTMsImJ1dHRvbiIsNiksSXQoImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBkLm5leHRNb250aCgpfSksWXQoMTQsImNkcy1pY29uIiw5KSxtZSgpKCkoKSxZdCgxNSwiY2xyLWNhbGVuZGFyIiksZ2UoMTYsImRpdiIsMCksUGUoMTcpLG1lKCkpLDImYSYmKF9lKCksbHIoZC5jb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50U3Rh''@;'; put 'put ''cnQpLF9lKDMpLHVyKCJhcmlhLWxhYmVsIixkLm1vbnRoQXR0clN0cmluZykoInRpdGxlIixkLm1vbnRoQXR0clN0cmluZyksX2UoKSxtcigiICIsZC5jYWxlbmRhck1vbnRoLCIgIiksX2UoKSx1cigiYXJpYS1sYWJlbCIsZC55ZWFyQXR0clN0cmluZykoInRpdGxlIixkLnllYXJBdHRyU3Ry''@;'; put 'put ''aW5nKSxfZSgpLG1yKCIgIixkLmNhbGVuZGFyWWVhciwiICIpLF9lKDIpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyUHJldmlvdXNNb250aCksX2UoKSx1cigidGl0bGUiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJQcmV2aW91c01vbnRo''@;'; put 'put ''KSxfZSgpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyQ3VycmVudE1vbnRoKSxfZSgpLHVyKCJ0aXRsZSIsZC5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlckN1cnJlbnRNb250aCksX2UoKSx1cigiYXJpYS1sYWJlbCIsZC5jb21tb25TdHJpbmdz''@;'; put 'put ''LmtleXMuZGF0ZXBpY2tlck5leHRNb250aCksX2UoKSx1cigidGl0bGUiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJOZXh0TW9udGgpLF9lKDMpLGxyKGQuY29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudEVuZCkpfSxkZXBlbmRlbmNpZXM6W0dzLGx1ZV0sZW5jYXBzdWxh''@;'; put 'put ''dGlvbjoyfSksbH0pKCksZnVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT1kfWdldCBpc01vbnRoVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc01vbnRoVmlld31nZXQgaXNZ''@;'; put 'put ''ZWFyVmlldygpe3JldHVybiB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5pc1llYXJWaWV3fWdldCBpc0RheVZpZXcoKXtyZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UuaXNEYXlWaWV3fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShVcyks''@;'; put 'put ''SmUoel8pKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJkaWFsb2ciXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmKHVyKCJhcmlhLW1vZGFsIiwh''@;'; put 'put ''MCkoImFyaWEtbGFiZWwiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJEaWFsb2dMYWJlbCkscHIoImRhdGVwaWNrZXIiLCEwKSl9LGZlYXR1cmVzOltaaShbQl9dKV0sZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYm''@;'; put 'put ''Z3QoMCxZTGUsMSwwLCJjbHItbW9udGhwaWNrZXIiLDApKDEsV0xlLDEsMCwiY2xyLXllYXJwaWNrZXIiLDApKDIsR0xlLDEsMCwiY2xyLWRheXBpY2tlciIsMCksMiZhJiYoUmUoIm5nSWYiLGQuaXNNb250aFZpZXcpLF9lKCksUmUoIm5nSWYiLGQuaXNZZWFyVmlldyksX2UoKSxSZSgibmdJ''@;'; put 'put ''ZiIsZC5pc0RheVZpZXcpKX0sZGVwZW5kZW5jaWVzOlskaSxjdWUsZHVlLGh1ZV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksRE09KCgpPT57Y2xhc3MgbCBleHRlbmRzIExfe2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTLFYsUSxkZSxwZSxDZSxPZSxZZSl7c3VwZXIoWWUsQ2UscGUsT2UpLHRo''@;'; put 'put ''aXMucmVuZGVyZXI9YSx0aGlzLnRvZ2dsZVNlcnZpY2U9ZCx0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZT1oLHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlPWYsdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPXYsdGhpcy5kYXRlSU9TZXJ2aWNlPVMsdGhpcy5jb21tb25TdHJpbmdz''@;'; put 'put ''PVYsdGhpcy5mb2N1c1NlcnZpY2U9USx0aGlzLnZpZXdNYW5hZ2VyU2VydmljZT1kZSx0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2U9cGUsdGhpcy5sYXlvdXRTZXJ2aWNlPUNlLHRoaXMubmdDb250cm9sU2VydmljZT1PZSx0aGlzLmlmQ29udHJvbFN0YXRlU2VydmljZT1ZZSx0aGlzLmZvY3Vz''@;'; put 'put ''PSExLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShldD0+e3RoaXMuZm9jdXM9ZXR9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5k''@;'; put 'put ''YXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKX0pKX1zZXQgY2xyUG9zaXRpb24oYSl7YSYmRjFbYV0mJih0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5wb3NpdGlvbj1GMVthXSl9c2V0IGFjdGlvbkJ1dHRvbihhKXt0aGlzLnRvZ2dsZUJ1dHRvbj1hfWdldCBwb3BvdmVyUG9z''@;'; put 'put ''aXRpb24oKXtyZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UucG9zaXRpb259Z2V0IG9wZW4oKXtyZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW59Z2V0IGlzRW5hYmxlZCgpe3JldHVybiB0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZS5pc0VuYWJsZWR9Z2V0IGlzSW5wdXRE''@;'; put 'put ''YXRlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuZGlzYWJsZWR8fHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZSYmdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLmRpc2FibGVkfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNo''@;'; put 'put ''KHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShhPT57YT90aGlzLmluaXRpYWxpemVDYWxlbmRhcigpOnRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvckRhdGVDaGFuZ2Vz''@;'; put 'put ''KCkpfWdldFRvZ2dsZUJ1dHRvbkxhYmVsKGEpe2lmKGEpe2NvbnN0IGQ9dGhpcy5kYXRlSU9TZXJ2aWNlLnRvTG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhhLnRvRGF0ZSgpKTtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNr''@;'; put 'put ''ZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWwse1NFTEVDVEVEX0RBVEU6ZH0pfXJldHVybiB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hvb3NlRGF0ZUxhYmVsfWxpc3RlbkZvckRhdGVDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNl''@;'; put 'put ''bGVjdGVkRGF5Q2hhbmdlLnBpcGUobDQodGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXkpKS5zdWJzY3JpYmUoYT0+e2lmKHRoaXMuaXNFbmFibGVkKXtjb25zdCBkPXRoaXMuZ2V0VG9nZ2xlQnV0dG9uTGFiZWwoYSksaD10aGlzLnRvZ2dsZUJ1dHRvbi5uYXRpdmVFbGVt''@;'; put 'put ''ZW50O3RoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGgsImFyaWEtbGFiZWwiLGQpLHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGgsInRpdGxlIixkKX19KX1pbml0aWFsaXplQ2FsZW5kYXIoKXt0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsaXplQ2FsZW5kYXIoKX19cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoZHMpLEplKFJsKSxKZShnNCksSmUoeVIpLEplKGtNKSxKZShqXyksSmUoVXMpLEplKE5aKSxKZSh6XyksSmUoTGgpLEplKHA0LDgpLEplKE4xKSxKZShSaCkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNl''@;'; put 'put ''bGVjdG9yczpbWyJjbHItZGF0ZS1jb250YWluZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZhJiZIbygkTGUsNSksMiZhKXtsZXQgaDtsaShoPWNpKCkpJiYoZC5hY3Rpb25CdXR0b249aC5maXJzdCl9fSxob3N0VmFyczo4LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezIm''@;'; put 'put ''YSYmcHIoImNsci1kYXRlLWNvbnRhaW5lciIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixkLmlzSW5wdXREYXRlRGlzYWJsZWQpKCJjbHItZm9ybS1jb250cm9sIiwhMCkoImNsci1yb3ciLGQuYWRkR3JpZCgpKX0saW5wdXRzOntjbHJQb3NpdGlvbjoiY2xyUG9zaXRpb24ifSxm''@;'; put 'put ''ZWF0dXJlczpbWmkoW0loLFRNLExoLE5aLE4xLGpfLGc0LHlSLGtNLHpfLFJoXSksQTEoW2g0XSksZW9dLG5nQ29udGVudFNlbGVjdG9yczpLTGUsZGVjbHM6MTMsdmFyczoxNCxjb25zdHM6W1siYWN0aW9uQnV0dG9uIiwiIl0sWzQsIm5nSWYiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVy''@;'; put 'put ''IiwzLCJuZ0NsYXNzIl0sWyJjbHJQb3BvdmVyQW5jaG9yIiwiIiwxLCJjbHItaW5wdXQtd3JhcHBlciJdLFsxLCJjbHItaW5wdXQtZ3JvdXAiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uIiwiIiwiY2xhc3MiLCJjbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rp''@;'; put 'put ''b24iLDMsImRpc2FibGVkIiw0LCJuZ0lmIl0sWyJjZGtUcmFwRm9jdXMiLCIiLDQsImNsclBvcG92ZXJDb250ZW50IiwiY2xyUG9wb3ZlckNvbnRlbnRBdCIsImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSJdLFsi''@;'; put 'put ''Y2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMi''@;'; put 'put ''LCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvbiIsIiIsMSwiY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIiwzLCJkaXNhYmxlZCJdLFsic3RhdHVzIiwiaW5mbyIsInNoYXBlIiwiY2Fs''@;'; put 'put ''ZW5kYXIiXSxbImNka1RyYXBGb2N1cyIsIiJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLCJzdGF0dXMiLCJkYW5nZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl0sWyJzaGFwZSIsImNoZWNrLWNpcmNsZSIsInN0YXR1cyIsInN1Y2Nlc3MiLCJh''@;'; put 'put ''cmlhLWhpZGRlbiIsInRydWUiLDEsImNsci12YWxpZGF0ZS1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkocUxlKSxJcigwKSxndCgxLFhMZSwxLDAsImxhYmVsIiwxKSxnZSgyLCJkaXYiLDIpKDMsImRpdiIsMykoNCwiZGl2Iiw0KSxJcig1LDEpLGd0KDYsSkxlLDMs''@;'; put 'put ''MSwiYnV0dG9uIiw1KSg3LFFMZSwxLDAsImNsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlciIsNiksbWUoKSxndCg4LGVPZSwxLDAsImNkcy1pY29uIiw3KSg5LHRPZSwxLDAsImNkcy1pY29uIiw4KSxtZSgpLGd0KDEwLG5PZSwxLDAsIm5nLWNvbnRlbnQiLDEpKDExLHJPZSwxLDAsIm5nLWNv''@;'; put 'put ''bnRlbnQiLDEpKDEyLGlPZSwxLDAsIm5nLWNvbnRlbnQiLDEpLG1lKCkpLDImYSYmKF9lKCksUmUoIm5nSWYiLCFkLmxhYmVsJiZkLmFkZEdyaWQoKSksX2UoKSxSZSgibmdDbGFzcyIsZC5jb250cm9sQ2xhc3MoKSksX2UoMikscHIoImNsci1mb2N1cyIsZC5mb2N1cyksX2UoMiksUmUoIm5n''@;'; put 'put ''SWYiLGQuaXNFbmFibGVkKSxfZSgpLFJlKCJjbHJQb3BvdmVyQ29udGVudCIsZC5vcGVuKSgiY2xyUG9wb3ZlckNvbnRlbnRBdCIsZC5wb3BvdmVyUG9zaXRpb24pKCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCEwKSgiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Ns''@;'; put 'put ''b3NlIiwhMCksX2UoKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpLF9lKCksUmUoIm5nSWYiLGQuc2hvd0hlbHBlciksX2UoKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpKX0sZGVwZW5kZW5j''@;'; put 'put ''aWVzOltKYywkaSxIXyxDTSx4TSxNTSxHcywkcyxmdWVdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFVaPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBPX3tjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWLFEsZGUscGUsQ2UsT2UsWWUpe3N1cGVyKGEsRE0sZCx2LGYsaCksdGhpcy5lbD1oLHRoaXMu''@;'; put 'put ''cmVuZGVyZXI9Zix0aGlzLmNvbnRyb2w9dix0aGlzLmNvbnRhaW5lcj1TLHRoaXMuZGF0ZUlPU2VydmljZT1WLHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlPVEsdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U9ZGUsdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPXBlLHRoaXMucGxh''@;'; put 'put ''dGZvcm1JZD1DZSx0aGlzLmZvY3VzU2VydmljZT1PZSx0aGlzLmRhdGVwaWNrZXJGb2N1c1NlcnZpY2U9WWUsdGhpcy5kYXRlQ2hhbmdlPW5ldyBEcighMSksdGhpcy5pbmRleD0xfXNldCBkYXRlKGEpe3RoaXMucHJldmlvdXNEYXRlQ2hhbmdlIT09YSYmdGhpcy51cGRhdGVEYXRlKHRoaXMu''@;'; put 'put ''Z2V0VmFsaWREYXRlVmFsdWVGcm9tRGF0ZShhKSksdGhpcy5pbml0aWFsQ2xyRGF0ZUlucHV0VmFsdWV8fCh0aGlzLmluaXRpYWxDbHJEYXRlSW5wdXRWYWx1ZT1hKX1zZXQgbWluKGEpe3RoaXMuZGF0ZUlPU2VydmljZS5zZXRNaW5EYXRlKGEpLHRoaXMudHJpZ2dlckNvbnRyb2xWYWxpZGF0''@;'; put 'put ''aW9uKCl9c2V0IG1heChhKXt0aGlzLmRhdGVJT1NlcnZpY2Uuc2V0TWF4RGF0ZShhKSx0aGlzLnRyaWdnZXJDb250cm9sVmFsaWRhdGlvbigpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2U/dGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLmRpc2Fi''@;'; put 'put ''bGVkOm51bGx9c2V0IGRpc2FibGVkKGEpe3RoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZSYmdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLnNldERpc2FibGVkKFEyKGEpKX1nZXQgcGxhY2Vob2xkZXJUZXh0KCl7cmV0dXJuIHRoaXMucGxhY2Vob2xkZXI/dGhpcy5wbGFjZWhvbGRlcjp0''@;'; put 'put ''aGlzLmRhdGVJT1NlcnZpY2UucGxhY2Vob2xkZXJUZXh0fWdldCBpbnB1dFR5cGUoKXtyZXR1cm4gbWEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy51c2luZ05hdGl2ZURhdGVwaWNrZXIoKT8iZGF0ZSI6InRleHQifW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLnBvcHVsYXRlU2Vy''@;'; put 'put ''dmljZXNGcm9tQ29udGFpbmVyQ29tcG9uZW50KCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JVc2VyU2VsZWN0ZWREYXlDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JDb250cm9sVmFsdWVDaGFuZ2VzKCksdGhpcy5saXN0ZW5Gb3JUb3VjaENoYW5nZXMoKSx0aGlzLmxp''@;'; put 'put ''c3RlbkZvckRpcnR5Q2hhbmdlcygpLHRoaXMubGlzdGVuRm9ySW5wdXRSZWZvY3VzKCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMucHJvY2Vzc0luaXRpYWxJbnB1dHMoKX1zZXRGb2N1c1N0YXRlcygpe3RoaXMuc2V0Rm9jdXMoITApfXRyaWdnZXJWYWxpZGF0aW9uKCl7c3VwZXIudHJpZ2dl''@;'; put 'put ''clZhbGlkYXRpb24oKSx0aGlzLnNldEZvY3VzKCExKX1vblZhbHVlQ2hhbmdlKGEpe2NvbnN0IGQ9dGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKGEudmFsdWUpO2lmKHRoaXMudXNpbmdDbGFyaXR5RGF0ZXBpY2tlcigpJiZkKXRoaXMudXBkYXRlRGF0ZShk''@;'; put 'put ''LCEwKTtlbHNlIGlmKHRoaXMudXNpbmdOYXRpdmVEYXRlcGlja2VyKCkpe2NvbnN0W2gsZix2XT1hLnZhbHVlLnNwbGl0KCItIik7dGhpcy51cGRhdGVEYXRlKG5ldyBEYXRlKCtoLCtmLTEsK3YpLCEwKX1lbHNlIHRoaXMuZW1pdERhdGVPdXRwdXQobnVsbCl9dXNpbmdDbGFyaXR5RGF0ZXBp''@;'; put 'put ''Y2tlcigpe3JldHVybiB0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZS5pc0VuYWJsZWR9dXNpbmdOYXRpdmVEYXRlcGlja2VyKCl7cmV0dXJuIXRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZH1zZXRGb2N1cyhhKXt0aGlzLmZvY3VzU2VydmljZSYmKHRoaXMuZm9j''@;'; put 'put ''dXNTZXJ2aWNlLmZvY3VzZWQ9YSl9dHJpZ2dlckNvbnRyb2xWYWxpZGF0aW9uKCl7dGhpcy5kYXRlcGlja2VySGFzRm9ybUNvbnRyb2woKSYmKHRoaXMuY29udHJvbC5jb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmNvbnRyb2wuY29udHJvbD8u''@;'; put 'put ''c2V0RXJyb3JzKHRoaXMuY29udHJvbC5jb250cm9sLmVycm9ycykpfXBvcHVsYXRlU2VydmljZXNGcm9tQ29udGFpbmVyQ29tcG9uZW50KCl7dGhpcy5jb250YWluZXJ8fCh0aGlzLmRhdGVJT1NlcnZpY2U9dGhpcy5nZXRQcm92aWRlckZyb21Db250YWluZXIoal8pLHRoaXMuZGF0ZU5hdmln''@;'; put 'put ''YXRpb25TZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFpbmVyKGc0KSx0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZT10aGlzLmdldFByb3ZpZGVyRnJvbUNvbnRhaW5lcih5UiksdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlPXRoaXMuZ2V0UHJvdmlkZXJGcm9tQ29udGFp''@;'; put 'put ''bmVyKGtNKSl9cHJvY2Vzc0luaXRpYWxJbnB1dHMoKXt0aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpP3RoaXMudXBkYXRlRGF0ZSh0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcodGhpcy5jb250cm9sLnZhbHVlKSk6dGhpcy51cGRhdGVEYXRlKHRo''@;'; put 'put ''aXMuaW5pdGlhbENsckRhdGVJbnB1dFZhbHVlKX11cGRhdGVEYXRlKGEsZD0hMSl7Y29uc3QgaD10aGlzLmdldFZhbGlkRGF0ZVZhbHVlRnJvbURhdGUoYSk7ZD90aGlzLmVtaXREYXRlT3V0cHV0KGgpOnRoaXMucHJldmlvdXNEYXRlQ2hhbmdlPWgsdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZp''@;'; put 'put ''Y2UmJih0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheT1oP25ldyBUZChoLmdldEZ1bGxZZWFyKCksaC5nZXRNb250aCgpLGguZ2V0RGF0ZSgpKTpudWxsKSx0aGlzLnVwZGF0ZUlucHV0KGgpfXVwZGF0ZUlucHV0KGEpe2lmKGEpe2NvbnN0IGQ9dGhpcy5kYXRlSU9TZXJ2''@;'; put 'put ''aWNlLnRvTG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhhKTt0aGlzLnVzaW5nTmF0aXZlRGF0ZXBpY2tlcigpPyhhLnNldE1pbnV0ZXMoYS5nZXRNaW51dGVzKCktYS5nZXRUaW1lem9uZU9mZnNldCgpKSx0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwi''@;'; put 'put ''dmFsdWVBc0RhdGUiLGEpKTp0aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpJiZkIT09dGhpcy5jb250cm9sLnZhbHVlP3RoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKGQpOnRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsZCl9''@;'; put 'put ''ZWxzZSB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWwubmF0aXZlRWxlbWVudCwidmFsdWUiLCIiKX1nZXRWYWxpZERhdGVWYWx1ZUZyb21EYXRlKGEpe2lmKHRoaXMuZGF0ZUlPU2VydmljZSl7Y29uc3QgZD10aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0''@;'; put 'put ''U3RyaW5nKGEpO3JldHVybiB0aGlzLmRhdGVJT1NlcnZpY2UuZ2V0RGF0ZVZhbHVlRnJvbURhdGVTdHJpbmcoZCl9cmV0dXJuIG51bGx9ZW1pdERhdGVPdXRwdXQoYSl7IWZ1bmN0aW9uIGpIZShsLGMpe3JldHVybiBsIGluc3RhbmNlb2YgRGF0ZSYmYyBpbnN0YW5jZW9mIERhdGUmJmwuZ2V0''@;'; put 'put ''RnVsbFllYXIoKT09PWMuZ2V0RnVsbFllYXIoKSYmbC5nZXRNb250aCgpPT09Yy5nZXRNb250aCgpJiZsLmdldERhdGUoKT09PWMuZ2V0RGF0ZSgpfShhLHRoaXMucHJldmlvdXNEYXRlQ2hhbmdlKT8odGhpcy5kYXRlQ2hhbmdlLmVtaXQoYSksdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2U9YSk6''@;'; put 'put ''IWEmJnRoaXMucHJldmlvdXNEYXRlQ2hhbmdlJiYodGhpcy5kYXRlQ2hhbmdlLmVtaXQobnVsbCksdGhpcy5wcmV2aW91c0RhdGVDaGFuZ2U9bnVsbCl9ZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCl7cmV0dXJuISF0aGlzLmNvbnRyb2x9bGlzdGVuRm9yQ29udHJvbFZhbHVlQ2hhbmdlcygp''@;'; put 'put ''e3JldHVybiBPbyh0aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29udHJvbCgpKS5waXBlKFphKGE9PmEpLEowKCgpPT50aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzKSxaYSgoKT0+IXRoaXMuZGF0ZXBpY2tlckZvY3VzU2VydmljZS5lbGVtZW50SXNGb2N1c2VkKHRoaXMuZWwubmF0aXZlRWxlbWVu''@;'; put 'put ''dCkpKS5zdWJzY3JpYmUoYT0+dGhpcy51cGRhdGVEYXRlKHRoaXMuZGF0ZUlPU2VydmljZS5nZXREYXRlVmFsdWVGcm9tRGF0ZVN0cmluZyhhKSkpfWxpc3RlbkZvclVzZXJTZWxlY3RlZERheUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlD''@;'; put 'put ''aGFuZ2Uuc3Vic2NyaWJlKGE9PnRoaXMudXBkYXRlRGF0ZShhLnRvRGF0ZSgpLCEwKSl9bGlzdGVuRm9yVG91Y2hDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS50b3VjaGVkQ2hhbmdlLnBpcGUoWmEoKCk9PnRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9s''@;'; put 'put ''KCkpKS5zdWJzY3JpYmUoKCk9PnRoaXMuY29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKSl9bGlzdGVuRm9yRGlydHlDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5kaXJ0eUNoYW5nZS5waXBlKFphKCgpPT50aGlzLmRhdGVwaWNrZXJIYXNGb3JtQ29u''@;'; put 'put ''dHJvbCgpKSkuc3Vic2NyaWJlKCgpPT50aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNEaXJ0eSgpKX1saXN0ZW5Gb3JJbnB1dFJlZm9jdXMoKXtyZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlDaGFuZ2UucGlwZShaYShhPT4hIWEpKS5zdWJzY3JpYmUoKCk9''@;'; put 'put ''PnRoaXMuZGF0ZXBpY2tlckZvY3VzU2VydmljZS5mb2N1c0lucHV0KHRoaXMuZWwubmF0aXZlRWxlbWVudCkpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShocyksSmUoTWEpLEplKE5pKSxKZShkcyksSmUodDEsMTApLEplKERNLDgpLEplKGpf''@;'; put 'put ''LDgpLEplKGc0LDgpLEplKHlSLDgpLEplKGtNLDgpLEplKElvKSxKZShOWiw4KSxKZShCXykpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJEYXRlIiwiIl1dLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiZm9jdXMiLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGQuc2V0Rm9jdXNTdGF0ZXMoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBkLnRyaWdnZXJWYWxpZGF0aW9uKCl9KSgiY2hhbmdlIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vblZhbHVlQ2hhbmdlKGYudGFyZ2V0KX0pLDImYSYmKGQzKCJkaXNhYmxlZCIsZC5k''@;'; put 'put ''aXNhYmxlZCksdXIoInBsYWNlaG9sZGVyIixkLnBsYWNlaG9sZGVyVGV4dCkoInR5cGUiLGQuaW5wdXRUeXBlKSxwcigiY2xyLWlucHV0IiwhMCkpfSxpbnB1dHM6e3BsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsZGF0ZTpbam4uTm9uZSwiY2xyRGF0ZSIsImRhdGUiXSxtaW46Im1pbiIsbWF4''@;'; put 'put ''OiJtYXgiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LG91dHB1dHM6e2RhdGVDaGFuZ2U6ImNsckRhdGVDaGFuZ2UifSxmZWF0dXJlczpbWmkoW0JfXSksZW9dfSksbH0pKCksWlo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmRhdGVJT1NlcnZpY2U9YX12YWxpZGF0ZShhKXtpZih0''@;'; put 'put ''aGlzLmRhdGVJT1NlcnZpY2Upe2NvbnN0IGQ9dGhpcy5kYXRlSU9TZXJ2aWNlLmdldERhdGVWYWx1ZUZyb21EYXRlU3RyaW5nKGEudmFsdWUpLGg9dGhpcy5kYXRlSU9TZXJ2aWNlLmRpc2FibGVkRGF0ZXMubWluRGF0ZS50b0RhdGUoKSxmPXRoaXMuZGF0ZUlPU2VydmljZS5kaXNhYmxlZERh''@;'; put 'put ''dGVzLm1heERhdGUudG9EYXRlKCk7aWYoZCYmZDx0aGlzLmRhdGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcy5taW5EYXRlLnRvRGF0ZSgpKXJldHVybnttaW46e21pbjpoLnRvTG9jYWxlRGF0ZVN0cmluZygpLGFjdHVhbDpkLnRvTG9jYWxlRGF0ZVN0cmluZygpfX07aWYoZCYmZD50aGlzLmRh''@;'; put 'put ''dGVJT1NlcnZpY2UuZGlzYWJsZWREYXRlcy5tYXhEYXRlLnRvRGF0ZSgpKXJldHVybnttYXg6e21heDpmLnRvTG9jYWxlRGF0ZVN0cmluZygpLGFjdHVhbDpkLnRvTG9jYWxlRGF0ZVN0cmluZygpfX19cmV0dXJuIG51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpKEplKGpfLDgpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyRGF0ZSIsIiJdXSxmZWF0dXJlczpbWmkoW3twcm92aWRlOmEwLHVzZUV4aXN0aW5nOmwsbXVsdGk6ITB9XSldfSksbH0pKCksWUhlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3Io''@;'; put 'put ''KXtXcy5hZGRJY29ucyhTaCxNaCxDXyxxQWUsS0FlKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sX1IscFIsQWgsRU0sbmEsbnVdfSksbH0pKCksR0hl''@;'; put 'put ''PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhYQWUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxuYSxudSxudV19KSxsfSko''@;'; put 'put ''KTtuZXcgJHIodm9pZCAwKTtsZXQgS0hlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhKQWUsUUFlLFNoLE1oKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWlu''@;'; put 'put ''aj1zaSh7aW1wb3J0czpbb28scmMsbmEsbnUsbnVdfSksbH0pKCksWVo9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdPbkluaXQoKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmRpc2FibGVHcmlkKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItcmFkaW8td3JhcHBlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLCRzLDcpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQubGFiZWw9Zi5maXJz''@;'; put 'put ''dCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImNsci1yYWRpby13cmFwcGVyIiwhMCl9LGZlYXR1cmVzOltaaShbSWhdKV0sbmdDb250ZW50U2VsZWN0b3JzOnNPZSxkZWNsczozLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1''@;'; put 'put ''bmN0aW9uKGEsZCl7MSZhJiYoSGkob09lKSxJcigwKSxJcigxLDEpLGd0KDIsYU9lLDEsMCwibGFiZWwiLDApKSwyJmEmJihfZSgyKSxSZSgibmdJZiIsIWQubGFiZWwpKX0sZGVwZW5kZW5jaWVzOlskaSwkc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksV1o9KCgpPT57Y2xhc3MgbCBleHRl''@;'; put 'put ''bmRzIE9fe2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7c3VwZXIoYSxZWixkLGgsZix2KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoaHMpLEplKE1hKSxKZSh0MSwxMCksSmUoZHMpLEplKE5pKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2Vs''@;'; put 'put ''ZWN0b3JzOltbIiIsImNsclJhZGlvIiwiIl1dLGZlYXR1cmVzOltlb119KSxsfSkoKSxYSGU9KCgpPT57Y2xhc3MgbCBleHRlbmRzIExfe2NvbnN0cnVjdG9yKGEsZCxoLGYpe3N1cGVyKGYsYSxkLGgpLHRoaXMubGF5b3V0U2VydmljZT1hLHRoaXMuY29udHJvbENsYXNzU2VydmljZT1kLHRo''@;'; put 'put ''aXMubmdDb250cm9sU2VydmljZT1oLHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPWYsdGhpcy5pbmxpbmU9ITEsdGhpcy5fZ2VuZXJhdGVkSWQ9dHUoKX1nZXQgY2xySW5saW5lKCl7cmV0dXJuIHRoaXMuaW5saW5lfXNldCBjbHJJbmxpbmUoYSl7dGhpcy5pbmxpbmU9InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBhPyJmYWxzZSIhPT1hOiEhYX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpLHRoaXMuc2V0QXJpYUxhYmVsbGVkQnkoKX1zZXRBcmlhUm9sZXMoKXt0aGlzLnJvbGU9dGhpcy5yYWRpb3MubGVuZ3RoPyJyYWRpb2dyb3VwIjpudWxsfXNldEFyaWFMYWJlbGxl''@;'; put 'put ''ZEJ5KCl7Y29uc3QgYT10aGlzLmdyb3VwTGFiZWw/Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpO2E/dGhpcy5hcmlhTGFiZWxsZWRCeT10aGlzLnJhZGlvcy5sZW5ndGg/YTpudWxsOih0aGlzLmdyb3VwTGFiZWw/Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsdGhp''@;'; put 'put ''cy5fZ2VuZXJhdGVkSWQpLHRoaXMuYXJpYUxhYmVsbGVkQnk9dGhpcy5yYWRpb3MubGVuZ3RoP3RoaXMuX2dlbmVyYXRlZElkOm51bGwpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShwNCw4KSxKZShMaCksSmUoTjEpLEplKFJoKSl9LGwuXHUw''@;'; put 'put ''Mjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1yYWRpby1jb250YWluZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEmYSYmKHRzKGgsJHMsNyxOaSksdHMoaCxXWiw1KSksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5ncm91cExhYmVsPWYuZmlyc3Qp''@;'; put 'put ''LGxpKGY9Y2koKSkmJihkLnJhZGlvcz1mKX19LGhvc3RWYXJzOjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiYodXIoInJvbGUiLGQucm9sZSkoImFyaWEtbGFiZWxsZWRieSIsZC5hcmlhTGFiZWxsZWRCeSkscHIoImNsci1mb3JtLWNvbnRyb2wiLCEwKSgiY2xyLWZvcm0tY29u''@;'; put 'put ''dHJvbC1kaXNhYmxlZCIsbnVsbD09ZC5jb250cm9sP251bGw6ZC5jb250cm9sLmRpc2FibGVkKSgiY2xyLXJvdyIsZC5hZGRHcmlkKCkpKX0saW5wdXRzOntjbHJJbmxpbmU6ImNscklubGluZSJ9LGZlYXR1cmVzOltaaShbTjEsUmgsTGgseThdKSxlb10sbmdDb250ZW50U2VsZWN0b3JzOmNP''@;'; put 'put ''ZSxkZWNsczoxMCx2YXJzOjksY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLXN1YnRleHQtd3JhcHBlciJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3Rh''@;'; put 'put ''dHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0''@;'; put 'put ''aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVt''@;'; put 'put ''cGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShsT2UpLElyKDApLGd0KDEsdU9lLDEsMCwibGFiZWwiLDApLGdlKDIsImRpdiIsMSksSXIoMywxKSxnZSg0LCJkaXYiLDIpLGd0KDUsZE9lLDEsMCwibmctY29udGVudCIsMCkoNixoT2UsMSwwLCJjZHMtaWNvbiIsMykoNyxmT2UsMSwwLCJj''@;'; put 'put ''ZHMtaWNvbiIsNCkoOCxwT2UsMSwwLCJuZy1jb250ZW50IiwwKSg5LGdPZSwxLDAsIm5nLWNvbnRlbnQiLDApLG1lKCkoKSksMiZhJiYoX2UoKSxSZSgibmdJZiIsIWQubGFiZWwmJmQuYWRkR3JpZCgpKSxfZSgpLHByKCJjbHItY29udHJvbC1pbmxpbmUiLGQuY2xySW5saW5lKSxSZSgibmdD''@;'; put 'put ''bGFzcyIsZC5jb250cm9sQ2xhc3MoKSksX2UoMyksUmUoIm5nSWYiLGQuc2hvd0hlbHBlciksX2UoKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpLF9lKCksUmUoIm5nSWYiLGQuc2hvd0ludmFsaWQpLF9lKCksUmUoIm5nSWYiLGQuc2hvd1Zh''@;'; put 'put ''bGlkKSl9LGRlcGVuZGVuY2llczpbSmMsJGksJHMsR3NdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEpIZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMoU2gsTWgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAy''@;'; put 'put ''NzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxudSxwUixuYSxudV19KSxsfSkoKSxRSGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFNoLE1oKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8''@;'; put 'put ''bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbnUscFIsbmEsbnVdfSksbH0pKCksVV89KCgpPT57Y2xhc3MgbCBleHRlbmRzIExfe2NvbnN0cnVjdG9yKGEsZCxoLGYpe3N1cGVyKGYsYSxkLGgpLHRoaXMubGF5b3V0U2VydmljZT1hLHRo''@;'; put 'put ''aXMuY29udHJvbENsYXNzU2VydmljZT1kLHRoaXMubmdDb250cm9sU2VydmljZT1oLHRoaXMuaWZDb250cm9sU3RhdGVTZXJ2aWNlPWYsdGhpcy5tdWx0aT0hMX1uZ09uSW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5z''@;'; put 'put ''dWJzY3JpYmUoYT0+e2EmJih0aGlzLm11bHRpPWEudmFsdWVBY2Nlc3NvciBpbnN0YW5jZW9mIG5NLHRoaXMuY29udHJvbD1hKX0pKX13cmFwcGVyQ2xhc3MoKXtyZXR1cm4gdGhpcy5tdWx0aT8iY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIiOiJjbHItc2VsZWN0LXdyYXBwZXIifX1yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShwNCw4KSxKZShMaCksSmUoTjEpLEplKFJoKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zZWxlY3QtY29udGFpbmVyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtp''@;'; put 'put ''ZigxJmEmJnRzKGgsbk0sNSksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5tdWx0aXBsZT1mLmZpcnN0KX19LGhvc3RWYXJzOjYsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiY2xyLWZvcm0tY29udHJvbCIsITApKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixudWxs''@;'; put 'put ''PT1kLmNvbnRyb2w/bnVsbDpkLmNvbnRyb2wuZGlzYWJsZWQpKCJjbHItcm93IixkLmFkZEdyaWQoKSl9LGZlYXR1cmVzOltaaShbUmgsTjEsSWgsTGhdKSxlb10sbmdDb250ZW50U2VsZWN0b3JzOnZPZSxkZWNsczoxMCx2YXJzOjgsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItY29udHJv''@;'; put 'put ''bC1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjbHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxp''@;'; put 'put ''ZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNzIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlk''@;'; put 'put ''YXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2VzcyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShtT2UpLElyKDApLGd0KDEsX09lLDEsMCwibGFiZWwiLDAp''@;'; put 'put ''LGdlKDIsImRpdiIsMSkoMywiZGl2IiwyKSxJcig0LDEpLGd0KDUsYk9lLDEsMCwiY2RzLWljb24iLDMpKDYseU9lLDEsMCwiY2RzLWljb24iLDQpLG1lKCksZ3QoNyx3T2UsMSwwLCJuZy1jb250ZW50IiwwKSg4LENPZSwxLDAsIm5nLWNvbnRlbnQiLDApKDksU09lLDEsMCwibmctY29udGVu''@;'; put 'put ''dCIsMCksbWUoKSksMiZhJiYoX2UoKSxSZSgibmdJZiIsIWQubGFiZWwmJmQuYWRkR3JpZCgpKSxfZSgpLFJlKCJuZ0NsYXNzIixkLmNvbnRyb2xDbGFzcygpKSxfZSgpLFJlKCJuZ0NsYXNzIixkLndyYXBwZXJDbGFzcygpKSxfZSgyKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsZC5zaG93VmFsaWQpLF9lKCksUmUoIm5nSWYiLGQuc2hvd0hlbHBlciksX2UoKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltKYywkaSxHcywkc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksWl89''@;'; put 'put ''KCgpPT57Y2xhc3MgbCBleHRlbmRzIE9fe2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7c3VwZXIoYSxVXyxkLGgsZix2KSx0aGlzLmluZGV4PTF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGhzKSxKZShNYSksSmUodDEsMTApLEplKGRzKSxKZShO''@;'; put 'put ''aSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJTZWxlY3QiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJjbHItc2VsZWN0IiwhMCl9LGZlYXR1cmVzOltlb119KSxsfSkoKSxlVmU9KCgpPT57Y2xhc3MgbHtj''@;'; put 'put ''b25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFNoLE1oKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28scmMsbmEsbnUsbnVdfSksbH0pKCkscHVlPSgoKT0+''@;'; put 'put ''e2NsYXNzIGwgZXh0ZW5kcyBMX3t9cmV0dXJuIGwuXHUwMjc1ZmFjPSgoKT0+e2xldCBjO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4oY3x8KGM9TGEobCkpKShkfHxsKX19KSgpLGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10ZXh0YXJlYS1jb250YWluZXIiXV0s''@;'; put 'put ''aG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJjbHItZm9ybS1jb250cm9sIiwhMCkoImNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQiLG51bGw9PWQuY29udHJvbD9udWxsOmQuY29udHJvbC5kaXNhYmxlZCkoImNsci1yb3ciLGQuYWRkR3JpZCgpKX0sZmVh''@;'; put 'put ''dHVyZXM6W1ppKFtSaCxOMSxJaCxMaF0pLGVvXSxuZ0NvbnRlbnRTZWxlY3RvcnM6eE9lLGRlY2xzOjEwLHZhcnM6Nyxjb25zdHM6W1s0LCJuZ0lmIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciIsMywibmdDbGFzcyJdLFsxLCJjbHItdGV4dGFyZWEtd3JhcHBlciJdLFsiY2xhc3MiLCJj''@;'; put 'put ''bHItdmFsaWRhdGUtaWNvbiIsInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwic3RhdHVzIiwiZGFuZ2VyIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci12YWxpZGF0ZS1pY29uIiwic2hhcGUiLCJjaGVjay1jaXJjbGUiLCJzdGF0dXMiLCJzdWNjZXNz''@;'; put 'put ''IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsInN0YXR1cyIsImRhbmdlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXSxbInNoYXBlIiwiY2hlY2stY2lyY2xlIiwic3RhdHVzIiwic3VjY2Vz''@;'; put 'put ''cyIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwiY2xyLXZhbGlkYXRlLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShNT2UpLElyKDApLGd0KDEsRU9lLDEsMCwibGFiZWwiLDApLGdlKDIsImRpdiIsMSkoMywiZGl2IiwyKSxJcig0LDEpLGd0KDUsVE9lLDEsMCwiY2Rz''@;'; put 'put ''LWljb24iLDMpKDYsa09lLDEsMCwiY2RzLWljb24iLDQpLG1lKCksZ3QoNyxBT2UsMSwwLCJuZy1jb250ZW50IiwwKSg4LERPZSwxLDAsIm5nLWNvbnRlbnQiLDApKDksSU9lLDEsMCwibmctY29udGVudCIsMCksbWUoKSksMiZhJiYoX2UoKSxSZSgibmdJZiIsIWQubGFiZWwmJmQuYWRkR3Jp''@;'; put 'put ''ZCgpKSxfZSgpLFJlKCJuZ0NsYXNzIixkLmNvbnRyb2xDbGFzcygpKSxfZSgzKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxSZSgibmdJZiIsZC5zaG93VmFsaWQpLF9lKCksUmUoIm5nSWYiLGQuc2hvd0hlbHBlciksX2UoKSxSZSgibmdJZiIsZC5zaG93SW52YWxpZCksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsZC5zaG93VmFsaWQpKX0sZGVwZW5kZW5jaWVzOltKYywkaSxHcywkc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksd1I9KCgpPT57Y2xhc3MgbCBleHRlbmRzIE9fe2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7c3VwZXIoYSxwdWUsZCxoLGYsdiksdGhpcy5pbmRleD0xfX1yZXR1''@;'; put 'put ''cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShocyksSmUoTWEpLEplKHQxLDEwKSxKZShkcyksSmUoTmkpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyVGV4dGFyZWEiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6''@;'; put 'put ''ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJjbHItdGV4dGFyZWEiLCEwKX0sZmVhdHVyZXM6W2VvXX0pLGx9KSgpLHRWZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMoU2gsTWgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0s''@;'; put 'put ''bC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxyYyxuYSxudSxudV19KSxsfSkoKSxndWU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9''@;'; put 'put ''KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbnUsU0hlLGtIZSxZSGUsR0hlLGl1ZSxLSGUsSkhlLGVWZSx0VmUsUUhlLEFIZV19KSxsfSkoKSxtdWU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9k''@;'; put 'put ''PWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb29dfSksbH0pKCksblZlPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBfWntjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWLFEsZGUpe3N1cGVyKGEsZCxoLGYsdixTLFYsUSxkZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSxKZSh2Wiw4KSxKZSh6cyw4KSxKZShNbyksSmUoaHMpLEplKG1aLDgpLEplKGc4KSxKZShsUiksSmUoY2EpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2RrRHJhZyIsIiJdXSxmZWF0dXJlczpbZW9dfSksbH0p''@;'; put 'put ''KCksclZlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe30pLGx9KSgpLGlWZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rp''@;'; put 'put ''b24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvb119KSxsfSkoKTtjbGFzcyBDUnt9bGV0IElNPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLm5iQ2hhbmdlcz0wLHRoaXMuX2NoYW5nZT1uZXcg''@;'; put 'put ''dG59Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Y2hhbmdlU3RhcnQoKXt0aGlzLm5iQ2hhbmdlcysrfWNoYW5nZURvbmUoKXswPT0tLXRoaXMubmJDaGFuZ2VzJiZ0aGlzLl9jaGFuZ2UubmV4dCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24o''@;'; put 'put ''YSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSx5bT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuc3RhdGVEZWJvdW5jZXI9YSx0aGlzLmFjdGl2YXRlZD0hMSx0aGlzLl9zaXplPTAsdGhpcy5f''@;'; put 'put ''Y3VycmVudD0xLHRoaXMuX2NoYW5nZT1uZXcgdG4sdGhpcy5wcmV2ZW50RW1pdD0hMSx0aGlzLl9zaXplQ2hhbmdlPW5ldyB0bn1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKGEpe2NvbnN0IGQ9dGhpcy5fc2l6ZTthIT09ZCYmKHRoaXMucHJldmVudEVtaXR8fHRoaXMu''@;'; put 'put ''c3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9zaXplPWEsdGhpcy5fY3VycmVudD0wPT09YT8xOk1hdGguZmxvb3IoZC9hKih0aGlzLl9jdXJyZW50LTEpKSsxLHRoaXMucHJldmVudEVtaXR8fCh0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KSx0aGlzLl9zaXplQ2hh''@;'; put 'put ''bmdlLm5leHQodGhpcy5fc2l6ZSksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCkpKSx0aGlzLnByZXZlbnRFbWl0PSExfWdldCB0b3RhbEl0ZW1zKCl7cmV0dXJuIHRoaXMuX3RvdGFsSXRlbXN8fDB9c2V0IHRvdGFsSXRlbXMoYSl7dGhpcy5fdG90YWxJdGVtcz1hLHRoaXMuY3Vy''@;'; put 'put ''cmVudD50aGlzLmxhc3QmJih0aGlzLmN1cnJlbnQ9dGhpcy5sYXN0KX1nZXQgbGFzdCgpe3JldHVybiB0aGlzLl9sYXN0P3RoaXMuX2xhc3Q6dGhpcy5zaXplPjAmJnRoaXMudG90YWxJdGVtcz9NYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zL3RoaXMuc2l6ZSk6MX1zZXQgbGFzdChhKXt0aGlz''@;'; put 'put ''Ll9sYXN0PWF9Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Z2V0IHNpemVDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fc2l6ZUNoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGEpe2Eh''@;'; put 'put ''PT10aGlzLl9jdXJyZW50JiYodGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX2N1cnJlbnQ9YSx0aGlzLl9jaGFuZ2UubmV4dChhKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKSl9Z2V0IGZpcnN0SXRlbSgpe3JldHVybiAwPT09dGhpcy5fdG90YWxJdGVt''@;'; put 'put ''cz8tMTowPT09dGhpcy5zaXplPzA6KHRoaXMuY3VycmVudC0xKSp0aGlzLnNpemV9Z2V0IGxhc3RJdGVtKCl7aWYoMD09PXRoaXMuX3RvdGFsSXRlbXMpcmV0dXJuLTE7aWYoMD09PXRoaXMuc2l6ZSlyZXR1cm4gdGhpcy50b3RhbEl0ZW1zLTE7bGV0IGE9dGhpcy5jdXJyZW50KnRoaXMuc2l6''@;'; put 'put ''ZS0xO3JldHVybiB0aGlzLnRvdGFsSXRlbXMmJihhPU1hdGgubWluKGEsdGhpcy50b3RhbEl0ZW1zLTEpKSxhfXByZXZpb3VzKCl7dGhpcy5jdXJyZW50PjEmJnRoaXMuY3VycmVudC0tfW5leHQoKXt0aGlzLmN1cnJlbnQ8dGhpcy5sYXN0JiZ0aGlzLmN1cnJlbnQrK31yZXNldFBhZ2VTaXpl''@;'; put 'put ''KGE9ITEpe3RoaXMucHJldmVudEVtaXQ9YSx0aGlzLnNpemU9MH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IoSU0pKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxtND0oKCk9PntjbGFzcyBs''@;'; put 'put ''e2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5fcGFnZT1hLHRoaXMuc3RhdGVEZWJvdW5jZXI9ZCx0aGlzLl9jaGFuZ2U9bmV3IHRuLHRoaXMuX2FsbD1bXX1nZXQgY2hhbmdlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1oYXNBY3RpdmVGaWx0ZXJzKCl7Zm9yKGNvbnN0e2Zp''@;'; put 'put ''bHRlcjphfW9mIHRoaXMuX2FsbClpZihhJiZhLmlzQWN0aXZlKCkpcmV0dXJuITA7cmV0dXJuITF9Z2V0QWN0aXZlRmlsdGVycygpe2NvbnN0IGE9W107Zm9yKGNvbnN0e2ZpbHRlcjpkfW9mIHRoaXMuX2FsbClkJiZkLmlzQWN0aXZlKCkmJmEucHVzaChkKTtyZXR1cm4gYX1hZGQoYSl7Y29u''@;'; put 'put ''c3QgZD1hLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT50aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoW2FdKSk7bGV0IGg9ITE7Y29uc3QgZj1uZXcgU1IoYSwoKT0+e2lmKGgpcmV0dXJuO2QudW5zdWJzY3JpYmUoKTtjb25zdCB2PXRoaXMuX2FsbC5maW5kSW5kZXgoUz0+Uy5maWx0''@;'; put 'put ''ZXI9PT1hKTt2Pj0wJiZ0aGlzLl9hbGwuc3BsaWNlKHYsMSksYS5pc0FjdGl2ZSgpJiZ0aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFuZ2UoW10pLGg9ITB9KTtyZXR1cm4gdGhpcy5fYWxsLnB1c2goZiksYS5pc0FjdGl2ZSgpJiZ0aGlzLnJlc2V0UGFnZUFuZEVtaXRGaWx0ZXJDaGFu''@;'; put 'put ''Z2UoW2FdKSxmfWFjY2VwdHMoYSl7Zm9yKGNvbnN0e2ZpbHRlcjpkfW9mIHRoaXMuX2FsbClpZihkJiZkLmlzQWN0aXZlKCkmJiFkLmFjY2VwdHMoYSkpcmV0dXJuITE7cmV0dXJuITB9cmVzZXRQYWdlQW5kRW1pdEZpbHRlckNoYW5nZShhKXt0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZVN0''@;'; put 'put ''YXJ0KCksdGhpcy5fcGFnZS5jdXJyZW50PTEsdGhpcy5fY2hhbmdlLm5leHQoYSksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKHltKSxjcihJTSkpfSxsLlx1MDI3NXByb3Y9aXIoe3Rv''@;'; put 'put ''a2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NsYXNzIFNSe2NvbnN0cnVjdG9yKGMsYSl7dGhpcy5maWx0ZXI9Yyx0aGlzLnVucmVnaXN0ZXI9YX19bGV0IE1SPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5maWx0ZXJzPWF9Z2V0IGZpbHRlcigpe3JldHVybiB0''@;'; put 'put ''aGlzLnJlZ2lzdGVyZWQmJnRoaXMucmVnaXN0ZXJlZC5maWx0ZXJ9bmdPbkRlc3Ryb3koKXt0aGlzLmRlbGV0ZUZpbHRlcigpfXNldEZpbHRlcihhKXt0aGlzLmRlbGV0ZUZpbHRlcigpLGEgaW5zdGFuY2VvZiBTUj90aGlzLnJlZ2lzdGVyZWQ9YTphJiYodGhpcy5yZWdpc3RlcmVkPXRoaXMu''@;'; put 'put ''ZmlsdGVycy5hZGQoYSkpfWRlbGV0ZUZpbHRlcigpe3RoaXMucmVnaXN0ZXJlZCYmKHRoaXMucmVnaXN0ZXJlZC51bnJlZ2lzdGVyKCksZGVsZXRlIHRoaXMucmVnaXN0ZXJlZCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKG00KSl9LGwuXHUw''@;'; put 'put ''Mjc1ZGlyPWdyKHt0eXBlOmx9KSxsfSkoKSxSTT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgTVJ7Y29uc3RydWN0b3IoYSxkLGgsZix2KXtzdXBlcihhKSx0aGlzLmNvbW1vblN0cmluZ3M9ZCx0aGlzLnNtYXJ0VG9nZ2xlU2VydmljZT1oLHRoaXMucGxhdGZvcm1JZD1mLHRoaXMuZWxlbWVudFJl''@;'; put 'put ''Zj12LHRoaXMub3BlbkNoYW5nZT1uZXcgRHIoITEpLHRoaXMuYXJpYUV4cGFuZGVkPSExLHRoaXMucG9wb3ZlcklkPXR1KCksdGhpcy5zbWFydFBvc2l0aW9uPXtheGlzOkQwLlZFUlRJQ0FMLHNpZGU6VGguQUZURVIsYW5jaG9yOlFzLkVORCxjb250ZW50OlFzLkVORH0sdGhpcy5fb3Blbj0h''@;'; put 'put ''MSx0aGlzLnN1YnM9W10sdGhpcy5zdWJzLnB1c2goaC5vcGVuQ2hhbmdlLnN1YnNjcmliZShTPT57dGhpcy5vcGVuPVMsdGhpcy5hcmlhRXhwYW5kZWQ9U30pKX1nZXQgb3Blbigpe3JldHVybiB0aGlzLl9vcGVufXNldCBvcGVuKGEpe3RoaXMub3BlbiE9PShhPSEhYSkmJih0aGlzLnNtYXJ0''@;'; put 'put ''VG9nZ2xlU2VydmljZS5vcGVuPWEsdGhpcy5vcGVuQ2hhbmdlLmVtaXQoYSksIWEmJm1hKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLl9vcGVuPWEpfXNldCBjdXN0b21GaWx0ZXIoYSl7dGhpcy5zZXRGaWx0ZXIoYSl9Z2V0IGFjdGl2''@;'; put 'put ''ZSgpe3JldHVybiEhdGhpcy5maWx0ZXImJnRoaXMuZmlsdGVyLmlzQWN0aXZlKCl9bmdPbkNoYW5nZXMoKXt0aGlzLnNldFRvZ2dsZUJ1dHRvbkFyaWFMYWJlbCgpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLnN1YnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkp''@;'; put 'put ''fXNldFRvZ2dsZUJ1dHRvbkFyaWFMYWJlbCgpe2NvbnN0IGg9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoImNsci1kZy1jb2x1bW4iKT8ucXVlcnlTZWxlY3RvcigiLmRhdGFncmlkLWNvbHVtbi10aXRsZSIpPy50ZXh0Q29udGVudC50cmltKCkudG9Mb2NhbGVMb3dl''@;'; put 'put ''ckNhc2UoKTt0aGlzLnRvZ2dsZUJ1dHRvbkFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0YWdyaWRGaWx0ZXJBcmlhTGFiZWwse0NPTFVNTjpofHwiIn0pfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5l''@;'; put 'put ''dyhhfHxsKShKZShtNCksSmUoVXMpLEplKFJsKSxKZShJbyksSmUoTmkpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLWZpbHRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxkKXtpZigxJmEmJkhvKFJPZSw1LE5pKSwyJmEpe2xldCBoO2xpKGg9Y2koKSkm''@;'; put 'put ''JihkLmFuY2hvcj1oLmZpcnN0KX19LGlucHV0czp7b3Blbjpbam4uTm9uZSwiY2xyRGdGaWx0ZXJPcGVuIiwib3BlbiJdLGN1c3RvbUZpbHRlcjpbam4uTm9uZSwiY2xyRGdGaWx0ZXIiLCJjdXN0b21GaWx0ZXIiXX0sb3V0cHV0czp7b3BlbkNoYW5nZToiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdl''@;'; put 'put ''In0sZmVhdHVyZXM6W1ppKFt7cHJvdmlkZTpDUix1c2VFeGlzdGluZzpsfV0pLGVvLEphXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6NCx2YXJzOjEzLGNvbnN0czpbWyJhbmNob3IiLCIiXSxbInR5cGUiLCJidXR0b24iLCJjbHJQb3BvdmVyQW5jaG9yIiwiIiwiY2xyUG9wb3Zlck9w''@;'; put 'put ''ZW5DbG9zZUJ1dHRvbiIsIiIsMSwiZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZSJdLFsic29saWQiLCIiXSxbImNsYXNzIiwiZGF0YWdyaWQtZmlsdGVyIiwiY2RrVHJhcEZvY3VzIiwiIiwicm9sZSIsImRpYWxvZyIsMywiaWQiLDQsImNsclBvcG92ZXJDb250ZW50IiwiY2xyUG9wb3ZlckNvbnRl''@;'; put 'put ''bnRBdCIsImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsImNsclBvcG92ZXJDb250ZW50U2Nyb2xsVG9DbG9zZSJdLFsiY2RrVHJhcEZvY3VzIiwiIiwicm9sZSIsImRpYWxvZyIsMSwiZGF0YWdyaWQtZmlsdGVyIiwzLCJpZCJdLFsxLCJkYXRhZ3JpZC1maWx0ZXItY2xv''@;'; put 'put ''c2Utd3JhcHBlciJdLFsidHlwZSIsImJ1dHRvbiIsImNsclBvcG92ZXJDbG9zZUJ1dHRvbiIsIiIsMSwiY2xvc2UiXSxbInNoYXBlIiwid2luZG93LWNsb3NlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxnZSgwLCJidXR0b24iLDEsMCksWXQoMiwiY2RzLWljb24iLDIp''@;'; put 'put ''LG1lKCksZ3QoMyxMT2UsNSwzLCJkaXYiLDMpKSwyJmEmJihwcigiZGF0YWdyaWQtZmlsdGVyLW9wZW4iLGQub3BlbikoImRhdGFncmlkLWZpbHRlcmVkIixkLmFjdGl2ZSksdXIoImFyaWEtbGFiZWwiLGQudG9nZ2xlQnV0dG9uQXJpYUxhYmVsKSgiYXJpYS1leHBhbmRlZCIsZC5hcmlhRXhw''@;'; put 'put ''YW5kZWQpKCJhcmlhLWNvbnRyb2xzIixkLnBvcG92ZXJJZCksX2UoMiksdXIoInN0YXR1cyIsZC5hY3RpdmU/ImluZm8iOm51bGwpKCJzaGFwZSIsZC5hY3RpdmU/ImZpbHRlci1ncmlkLWNpcmNsZSI6ImZpbHRlci1ncmlkIiksX2UoKSxSZSgiY2xyUG9wb3ZlckNvbnRlbnQiLGQub3Blbiko''@;'; put 'put ''ImNsclBvcG92ZXJDb250ZW50QXQiLGQuc21hcnRQb3NpdGlvbikoImNsclBvcG92ZXJDb250ZW50T3V0c2lkZUNsaWNrVG9DbG9zZSIsITApKCJjbHJQb3BvdmVyQ29udGVudFNjcm9sbFRvQ2xvc2UiLCEwKSl9LGRlcGVuZGVuY2llczpbSF8sR3MsQ00sWmNlLHhNLE1NXSxlbmNhcHN1bGF0''@;'; put 'put ''aW9uOjJ9KSxsfSkoKTtjbGFzcyBHWntjb25zdHJ1Y3RvcihjKXt0aGlzLnByb3A9YyxjLmluZGV4T2YoIi4iKT49MCYmKHRoaXMuc3BsaXRQcm9wPWMuc3BsaXQoIi4iKSl9Z2V0UHJvcFZhbHVlKGMpe2lmKHRoaXMuc3BsaXRQcm9wKXtsZXQgYT1jO2Zvcihjb25zdCBkIG9mIHRoaXMuc3Bs''@;'; put 'put ''aXRQcm9wKXtpZihudWxsPT09YXx8dHlwZW9mIGE+InUifHx0eXBlb2YgYVtkXT4idSIpcmV0dXJuO2E9YVtkXX1yZXR1cm4gYX1yZXR1cm4gY1t0aGlzLnByb3BdfX1jbGFzcyB4Untjb25zdHJ1Y3RvcihjLGE9ITEpe3RoaXMucHJvcD1jLHRoaXMuZXhhY3Q9YSx0aGlzLm5lc3RlZFByb3A9''@;'; put 'put ''bmV3IEdaKGMpfWFjY2VwdHMoYyxhLGQpe2NvbnN0IGg9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShjKTtyZXR1cm4hKHZvaWQgMD09PWh8fG51bGwhPT1hJiYoIm51bWJlciIhPXR5cGVvZiBofHxoPGEpfHxudWxsIT09ZCYmKCJudW1iZXIiIT10eXBlb2YgaHx8aD5kKSl9fWNsYXNz''@;'; put 'put ''IEM4e2NvbnN0cnVjdG9yKGMpe3RoaXMuZmlsdGVyRm49Yyx0aGlzLl9jaGFuZ2VzPW5ldyB0bix0aGlzLl9sb3c9bnVsbCx0aGlzLl9oaWdoPW51bGx9Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKX1nZXQgdmFsdWUoKXtyZXR1cm5bdGhpcy5fbG93''@;'; put 'put ''LHRoaXMuX2hpZ2hdfXNldCB2YWx1ZShjKXtjb25zdCBhPWNbMF0sZD1jWzFdOyhhIT09dGhpcy5fbG93fHxkIT09dGhpcy5faGlnaCkmJih0aGlzLl9sb3c9YSx0aGlzLl9oaWdoPWQsdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9sb3csdGhpcy5faGlnaF0pKX1nZXQgbG93KCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX2xvd31zZXQgbG93KGMpe2MhPT10aGlzLl9sb3cmJih0aGlzLl9sb3c9Yyx0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2xvdyx0aGlzLl9oaWdoXSkpfWdldCBoaWdoKCl7cmV0dXJuIHRoaXMuX2hpZ2h9c2V0IGhpZ2goYyl7YyE9PXRoaXMuX2hpZ2gmJih0aGlzLl9oaWdoPWMs''@;'; put 'put ''dGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9sb3csdGhpcy5faGlnaF0pKX1nZXQgc3RhdGUoKXtyZXR1cm4gdGhpcy5maWx0ZXJGbiBpbnN0YW5jZW9mIHhSP3twcm9wZXJ0eTp0aGlzLmZpbHRlckZuLnByb3AsbG93OnRoaXMuX2xvdyxoaWdoOnRoaXMuX2hpZ2h9OnRoaXN9aXNBY3RpdmUo''@;'; put 'put ''KXtyZXR1cm4gbnVsbCE9PXRoaXMuX2xvd3x8bnVsbCE9PXRoaXMuaGlnaH1hY2NlcHRzKGMpe3JldHVybiB0aGlzLmZpbHRlckZuLmFjY2VwdHMoYyx0aGlzLl9sb3csdGhpcy5faGlnaCl9ZXF1YWxzKGMpe3JldHVybiBjIGluc3RhbmNlb2YgQzgmJihjLmZpbHRlckZuIGluc3RhbmNlb2Yg''@;'; put 'put ''eFI/dGhpcy5maWx0ZXJGbiBpbnN0YW5jZW9mIHhSJiZjLmZpbHRlckZuLnByb3A9PT10aGlzLmZpbHRlckZuLnByb3AmJmMubG93PT09dGhpcy5fbG93JiZjLmhpZ2g9PT10aGlzLl9oaWdoOmM9PT10aGlzKX19bGV0IHZ1ZT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgTVJ7Y29uc3RydWN0b3Io''@;'; put 'put ''YSxkLGgsZix2KXtzdXBlcihhKSx0aGlzLmRvbUFkYXB0ZXI9ZCx0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLnBvcG92ZXJUb2dnbGVTZXJ2aWNlPWYsdGhpcy5uZ1pvbmU9dix0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyBEcix0aGlzLm9wZW49ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtd''@;'; put 'put ''fWdldCB2YWx1ZSgpe3JldHVyblt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF19c2V0IHZhbHVlKGEpe3RoaXMuZmlsdGVyJiZBcnJheS5pc0FycmF5KGEpP2EmJihhWzBdIT09dGhpcy5maWx0ZXIubG93fHxhWzFdIT09dGhpcy5maWx0ZXIuaGlnaCkmJih0aGlzLmZpbHRlci5s''@;'; put 'put ''b3c9Im51bWJlciI9PXR5cGVvZiBhWzBdP2FbMF06bnVsbCx0aGlzLmZpbHRlci5oaWdoPSJudW1iZXIiPT10eXBlb2YgYVsxXT9hWzFdOm51bGwsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGEpKTp0aGlzLmluaXRGaWx0ZXJWYWx1ZXM9YX1zZXQgY3VzdG9tTnVtZXJpY0ZpbHRlcihh''@;'; put 'put ''KXt0aGlzLnNldEZpbHRlcihhIGluc3RhbmNlb2YgU1I/YTpuZXcgQzgoYSkpLHRoaXMuaW5pdEZpbHRlclZhbHVlcyYmKHRoaXMudmFsdWU9dGhpcy5pbml0RmlsdGVyVmFsdWVzLGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZXMpfWdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMubWF4UGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlfWdldCBtaW5QbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1pblZhbHVlfWdldCBsb3coKXtyZXR1cm4ibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIHRoaXMuZmlsdGVyLmxvdyYmaXNGaW5pdGUodGhpcy5maWx0ZXIubG93KT90aGlzLmZpbHRlci5sb3c6bnVsbH1zZXQgbG93KGEpeyJudW1iZXIiPT10eXBlb2YgYSYmYSE9PXRoaXMuZmlsdGVyLmxvdz8odGhpcy5maWx0ZXIubG93PWEsdGhpcy5maWx0ZXJWYWx1ZUNoYW5n''@;'; put 'put ''ZS5lbWl0KFt0aGlzLmZpbHRlci5sb3csdGhpcy5maWx0ZXIuaGlnaF0pKToibnVtYmVyIiE9dHlwZW9mIGEmJih0aGlzLmZpbHRlci5sb3c9bnVsbCx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuZmlsdGVyLmxvdyx0aGlzLmZpbHRlci5oaWdoXSkpfWdldCBoaWdoKCl7cmV0''@;'; put 'put ''dXJuIm51bWJlciI9PXR5cGVvZiB0aGlzLmZpbHRlci5oaWdoJiZpc0Zpbml0ZSh0aGlzLmZpbHRlci5oaWdoKT90aGlzLmZpbHRlci5oaWdoOm51bGx9c2V0IGhpZ2goYSl7Im51bWJlciI9PXR5cGVvZiBhJiZhIT09dGhpcy5maWx0ZXIuaGlnaD8odGhpcy5maWx0ZXIuaGlnaD1hLHRoaXMu''@;'; put 'put ''ZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hdKSk6Im51bWJlciIhPXR5cGVvZiBhJiYodGhpcy5maWx0ZXIuaGlnaD1udWxsLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5maWx0ZXIubG93LHRoaXMuZmlsdGVyLmhpZ2hd''@;'; put 'put ''KSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wb3BvdmVyVG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy5vcGVuPWEsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUo''@;'; put 'put ''KCk9Pnt0aGlzLmRvbUFkYXB0ZXIuZm9jdXModGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KX0pfSl9KSl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PnthLnVuc3Vic2NyaWJlKCl9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUobTQpLEplKGY0KSxKZShVcyksSmUoUmwpLEplKE1vKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1udW1lcmljLWZpbHRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxkKXtpZigxJmEmJihIbyhPT2Us''@;'; put 'put ''NSksSG8oUk0sNSkpLDImYSl7bGV0IGg7bGkoaD1jaSgpKSYmKGQuaW5wdXQ9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuZmlsdGVyQ29udGFpbmVyPWguZmlyc3QpfX0saW5wdXRzOnttaW5QbGFjZWhvbGRlcjpbam4uTm9uZSwiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJtaW5QbGFjZWhv''@;'; put 'put ''bGRlciJdLG1heFBsYWNlaG9sZGVyOltqbi5Ob25lLCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsIm1heFBsYWNlaG9sZGVyIl0sdmFsdWU6W2puLk5vbmUsImNsckZpbHRlclZhbHVlIiwidmFsdWUiXSxjdXN0b21OdW1lcmljRmlsdGVyOltqbi5Ob25lLCJjbHJEZ051bWVyaWNGaWx0ZXIi''@;'; put 'put ''LCJjdXN0b21OdW1lcmljRmlsdGVyIl19LG91dHB1dHM6e2ZpbHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltaaShbe3Byb3ZpZGU6Q1IsdXNlRXhpc3Rpbmc6bH1dKSxlb10sZGVjbHM6Nix2YXJzOjgsY29uc3RzOltbImlucHV0X2xvdyIsIiJdLFsi''@;'; put 'put ''aW5wdXRfaGlnaCIsIiJdLFszLCJjbHJEZ0ZpbHRlck9wZW5DaGFuZ2UiLCJjbHJEZ0ZpbHRlciIsImNsckRnRmlsdGVyT3BlbiJdLFsidHlwZSIsIm51bWJlciIsImF1dG9jb21wbGV0ZSIsIm9mZiIsIm5hbWUiLCJsb3ciLDEsImRhdGFncmlkLW51bWVyaWMtZmlsdGVyLWlucHV0IiwzLCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsInBsYWNlaG9sZGVyIl0sWzEsImRhdGFncmlkLWZpbHRlci1pbnB1dC1zcGFjZXIiXSxbInR5cGUiLCJudW1iZXIiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJuYW1lIiwiaGlnaCIsMSwiZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXQiLDMsIm5n''@;'; put 'put ''TW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwicGxhY2Vob2xkZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXtpZigxJmEpe2NvbnN0IGg9U24oKTtnZSgwLCJjbHItZGctZmlsdGVyIiwyKSxXcigiY2xyRGdGaWx0ZXJPcGVuQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gX3QoaCksR3IoZC5v''@;'; put 'put ''cGVuLHYpfHwoZC5vcGVuPXYpLGJ0KHYpfSksZ2UoMSwiaW5wdXQiLDMsMCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBfdChoKSxHcihkLmxvdyx2KXx8KGQubG93PXYpLGJ0KHYpfSksbWUoKSxZdCgzLCJzcGFuIiw0KSxnZSg0LCJpbnB1dCIsNSwxKSxXcigibmdN''@;'; put 'put ''b2RlbENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIF90KGgpLEdyKGQuaGlnaCx2KXx8KGQuaGlnaD12KSxidCh2KX0pLG1lKCkoKX0yJmEmJihSZSgiY2xyRGdGaWx0ZXIiLGQucmVnaXN0ZXJlZCksWXIoImNsckRnRmlsdGVyT3BlbiIsZC5vcGVuKSxfZSgpLFlyKCJuZ01vZGVsIixkLmxv''@;'; put 'put ''dyksUmUoInBsYWNlaG9sZGVyIixkLm1pblBsYWNlaG9sZGVyVmFsdWUpLHVyKCJhcmlhLWxhYmVsIixkLm1pblBsYWNlaG9sZGVyVmFsdWUpLF9lKDMpLFlyKCJuZ01vZGVsIixkLmhpZ2gpLFJlKCJwbGFjZWhvbGRlciIsZC5tYXhQbGFjZWhvbGRlclZhbHVlKSx1cigiYXJpYS1sYWJlbCIs''@;'; put 'put ''ZC5tYXhQbGFjZWhvbGRlclZhbHVlKSl9LGRlcGVuZGVuY2llczpbdWwsV0ksX2EsdWEsUk1dLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpO2NsYXNzIEVSe2NvbnN0cnVjdG9yKGMsYT0hMSl7dGhpcy5wcm9wPWMsdGhpcy5leGFjdD1hLHRoaXMubmVzdGVkUHJvcD1uZXcgR1ooYyl9YWNjZXB0''@;'; put 'put ''cyhjLGEpe2NvbnN0IGQ9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShjKTtyZXR1cm4hKHR5cGVvZiBkPiJ1IikmJih0aGlzLmV4YWN0PygiIitkKS50b0xvd2VyQ2FzZSgpPT09YTooIiIrZCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEpPj0wKX19Y2xhc3MgUzh7Y29uc3RydWN0b3Io''@;'; put 'put ''Yyl7dGhpcy5maWx0ZXJGbj1jLHRoaXMuX2NoYW5nZXM9bmV3IHRuLHRoaXMuX2xvd2VyQ2FzZVZhbHVlPSIiLHRoaXMuX3Jhd1ZhbHVlPSIifWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IGxvd2VyQ2FzZVZhbHVlKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2xvd2VyQ2FzZVZhbHVlfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmZpbHRlckZuIGluc3RhbmNlb2YgRVI/e3Byb3BlcnR5OnRoaXMuZmlsdGVyRm4ucHJvcCx2YWx1ZTp0aGlzLnZhbHVlfTp0aGlzfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl9yYXdWYWx1ZX1zZXQgdmFsdWUoYyl7Y3x8''@;'; put 'put ''KGM9IiIpLGMhPT10aGlzLl9yYXdWYWx1ZSYmKHRoaXMuX3Jhd1ZhbHVlPWMsdGhpcy5fbG93ZXJDYXNlVmFsdWU9Yy50b0xvd2VyQ2FzZSgpLnRyaW0oKSx0aGlzLl9jaGFuZ2VzLm5leHQoYykpfWlzQWN0aXZlKCl7cmV0dXJuISF0aGlzLnZhbHVlfWFjY2VwdHMoYyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZmlsdGVyRm4uYWNjZXB0cyhjLHRoaXMubG93ZXJDYXNlVmFsdWUpfWVxdWFscyhjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIFM4JiYoYy5maWx0ZXJGbiBpbnN0YW5jZW9mIEVSP3RoaXMuZmlsdGVyRm4gaW5zdGFuY2VvZiBFUiYmYy5maWx0ZXJGbi5wcm9wPT09dGhpcy5maWx0ZXJGbi5wcm9w''@;'; put 'put ''JiZjLnZhbHVlPT09dGhpcy52YWx1ZTpjPT09dGhpcyl9fWxldCAkWj0oKCk9PntjbGFzcyBsIGV4dGVuZHMgTVJ7Y29uc3RydWN0b3IoYSxkLGgsZix2KXtzdXBlcihhKSx0aGlzLmRvbUFkYXB0ZXI9ZCx0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLnNtYXJ0VG9nZ2xlU2VydmljZT1mLHRo''@;'; put 'put ''aXMubmdab25lPXYsdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZT1uZXcgRHIsdGhpcy5vcGVuPSExLHRoaXMuc3Vicz1bXX1zZXQgY3VzdG9tU3RyaW5nRmlsdGVyKGEpe3RoaXMuc2V0RmlsdGVyKGEgaW5zdGFuY2VvZiBTUj9hOm5ldyBTOChhKSksdGhpcy5pbml0RmlsdGVyVmFsdWUmJih0aGlz''@;'; put 'put ''LnZhbHVlPXRoaXMuaW5pdEZpbHRlclZhbHVlLGRlbGV0ZSB0aGlzLmluaXRGaWx0ZXJWYWx1ZSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZmlsdGVyLnZhbHVlfXNldCB2YWx1ZShhKXt0aGlzLmZpbHRlciYmInN0cmluZyI9PXR5cGVvZiBhPyhhfHwoYT0iIiksYSE9PXRoaXMuZmlsdGVy''@;'; put 'put ''LnZhbHVlJiYodGhpcy5maWx0ZXIudmFsdWU9YSx0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoYSkpKTp0aGlzLmluaXRGaWx0ZXJWYWx1ZT1hfWdldCBwbGFjZWhvbGRlclZhbHVlKCl7cmV0dXJuIHRoaXMucGxhY2Vob2xkZXJ8fHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmZpbHRlckl0''@;'; put 'put ''ZW1zfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3Vicy5wdXNoKHRoaXMuc21hcnRUb2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLm9wZW49YSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMu''@;'; put 'put ''ZG9tQWRhcHRlci5mb2N1cyh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpfSl9KX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5zdWJzLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXco''@;'; put 'put ''YXx8bCkoSmUobTQpLEplKGY0KSxKZShVcyksSmUoUmwpLEplKE1vKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1zdHJpbmctZmlsdGVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGQpe2lmKDEmYSYmKEhvKFBPZSw1KSxIbyhSTSw1KSksMiZhKXtsZXQg''@;'; put 'put ''aDtsaShoPWNpKCkpJiYoZC5pbnB1dD1oLmZpcnN0KSxsaShoPWNpKCkpJiYoZC5maWx0ZXJDb250YWluZXI9aC5maXJzdCl9fSxpbnB1dHM6e3BsYWNlaG9sZGVyOltqbi5Ob25lLCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIl0sY3VzdG9tU3RyaW5nRmlsdGVyOltqbi5O''@;'; put 'put ''b25lLCJjbHJEZ1N0cmluZ0ZpbHRlciIsImN1c3RvbVN0cmluZ0ZpbHRlciJdLHZhbHVlOltqbi5Ob25lLCJjbHJGaWx0ZXJWYWx1ZSIsInZhbHVlIl19LG91dHB1dHM6e2ZpbHRlclZhbHVlQ2hhbmdlOiJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGZlYXR1cmVzOltaaShbe3Byb3ZpZGU6Q1Is''@;'; put 'put ''dXNlRXhpc3Rpbmc6bH1dKSxlb10sZGVjbHM6Myx2YXJzOjUsY29uc3RzOltbImlucHV0IiwiIl0sWzMsImNsckRnRmlsdGVyT3BlbkNoYW5nZSIsImNsckRnRmlsdGVyIiwiY2xyRGdGaWx0ZXJPcGVuIl0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsIm5hbWUiLCJzZWFy''@;'; put 'put ''Y2giLDEsImNsci1pbnB1dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJwbGFjZWhvbGRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpe2lmKDEmYSl7Y29uc3QgaD1TbigpO2dlKDAsImNsci1kZy1maWx0ZXIiLDEpLFdyKCJjbHJEZ0ZpbHRlck9wZW5DaGFuZ2UiLGZ1bmN0aW9u''@;'; put 'put ''KHYpe3JldHVybiBfdChoKSxHcihkLm9wZW4sdil8fChkLm9wZW49diksYnQodil9KSxnZSgxLCJpbnB1dCIsMiwwKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIF90KGgpLEdyKGQudmFsdWUsdil8fChkLnZhbHVlPXYpLGJ0KHYpfSksbWUoKSgpfTImYSYmKFJlKCJj''@;'; put 'put ''bHJEZ0ZpbHRlciIsZC5yZWdpc3RlcmVkKSxZcigiY2xyRGdGaWx0ZXJPcGVuIixkLm9wZW4pLF9lKCksWXIoIm5nTW9kZWwiLGQudmFsdWUpLFJlKCJwbGFjZWhvbGRlciIsZC5wbGFjZWhvbGRlclZhbHVlKSx1cigiYXJpYS1sYWJlbCIsZC5wbGFjZWhvbGRlclZhbHVlKSl9LGRlcGVuZGVu''@;'; put 'put ''Y2llczpbdWwsX2EsdWEsUk1dLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLHdtPSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBFX3t9cmV0dXJuIGwuXHUwMjc1ZmFjPSgoKT0+e2xldCBjO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4oY3x8KGM9TGEobCkpKShkfHxsKX19KSgpLGwuXHUwMjc1ZGly''@;'; put 'put ''PWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdXSxmZWF0dXJlczpbZW9dfSksbH0pKCksWV89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50PTB9Z2V0IGhhc0FjdGlvbmFibGVSb3coKXtyZXR1cm4gdGhpcy5hY3Rpb25hYmxlQ291''@;'; put 'put ''bnQ+MH1yZWdpc3Rlcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50Kyt9dW5yZWdpc3Rlcigpe3RoaXMuYWN0aW9uYWJsZUNvdW50LS19fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3''@;'; put 'put ''NWZhY30pLGx9KSgpLE04PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBUX3tjb25zdHJ1Y3RvcihhLGQsaCl7aWYoIWQpdGhyb3cgbmV3IEVycm9yKCJjbHItZGctcm93IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRhdGFncmlkIik7c3VwZXIoYSxkKSx0aGlzLnJvd0FjdGlv''@;'; put 'put ''bnM9aH1nZXQgZmxhdm9yKCl7cmV0dXJuIHRoaXMucm93QWN0aW9ucy5oYXNBY3Rpb25hYmxlUm93fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShjYSksSmUod20sOCksSmUoWV8pKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6''@;'; put 'put ''W1siY2xyLWRhdGFncmlkIl0sWyJjbHItZGctcm93Il1dLGZlYXR1cmVzOltlb119KSxsfSkoKSxfdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnBsYXRmb3JtSWQ9YSx0aGlzLm1vZGFsU3RhY2s9W10sdGhpcy5rZXlVcEV2ZW50TGlzdGVuZXI9dGhpcy5vbktleVVwLmJp''@;'; put 'put ''bmQodGhpcyl9dHJhY2tNb2RhbE9wZW4oYSl7ITE9PT10aGlzLm1vZGFsU3RhY2suaW5jbHVkZXMoYSkmJnRoaXMubW9kYWxTdGFjay51bnNoaWZ0KGEpLG1hKHRoaXMucGxhdGZvcm1JZCkmJmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMua2V5VXBFdmVudExp''@;'; put 'put ''c3RlbmVyKX10cmFja01vZGFsQ2xvc2UoYSl7Y29uc3QgZD10aGlzLm1vZGFsU3RhY2suaW5kZXhPZihhKTtkPi0xJiZ0aGlzLm1vZGFsU3RhY2suc3BsaWNlKGQsMSksMD09PXRoaXMubW9kYWxTdGFjay5sZW5ndGgmJm1hKHRoaXMucGxhdGZvcm1JZCkmJmRvY3VtZW50LmJvZHkucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMua2V5VXBFdmVudExpc3RlbmVyKX1vbktleVVwKGEpe3RoaXMubW9kYWxTdGFjay5sZW5ndGgmJkVoKGEua2V5KT09PVRvLkVzY2FwZSYmKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpLHRoaXMubW9kYWxTdGFja1swXS5jbG9zZSgpKX19''@;'; put 'put ''cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IoSW8pKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSxsfSkoKSx0Zj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMu''@;'; put 'put ''bW9kYWxTdGFja1NlcnZpY2U9YSx0aGlzLnRvZ2dsZVN0YXRlPSExLHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fc3RhdGU9bmV3IEFyKHRoaXMudG9nZ2xlU3RhdGUpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQoYSl7dGhpcy5fZW5hYmxlZD1hfWdldCBz''@;'; put 'put ''dGF0ZSgpe3JldHVybiB0aGlzLmNhY2hlfWdldCBzdGF0ZUNoYW5nZSgpe3JldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKX1nZXQgaXNPcGVuKCl7cmV0dXJuITA9PT10aGlzLnRvZ2dsZVN0YXRlfW9wZW4oYSxkKXt0aGlzLmNhY2hlPWEsdGhpcy5idXR0b249ZCx0aGlzLnRvZ2ds''@;'; put 'put ''ZVN0YXRlPSEwLHRoaXMuX3N0YXRlLm5leHQodGhpcy50b2dnbGVTdGF0ZSksdGhpcy5tb2RhbFN0YWNrU2VydmljZS50cmFja01vZGFsT3Blbih0aGlzKX1jbG9zZSgpe3RoaXMudG9nZ2xlU3RhdGU9ITEsdGhpcy5fc3RhdGUubmV4dCh0aGlzLnRvZ2dsZVN0YXRlKSx0aGlzLm1vZGFsU3Rh''@;'; put 'put ''Y2tTZXJ2aWNlLnRyYWNrTW9kYWxDbG9zZSh0aGlzKSxzZXRUaW1lb3V0KCgpPT50aGlzLnJldHVybkZvY3VzKCksMCl9cmV0dXJuRm9jdXMoKXt0aGlzLmJ1dHRvbiYmKHRoaXMuYnV0dG9uLmZvY3VzKCksdGhpcy5idXR0b249bnVsbCl9dG9nZ2xlKGEsZCl7dGhpcy5pc1Jvd09wZW4oYSl8''@;'; put 'put ''fCFhP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oYSxkKX1pc1Jvd09wZW4oYSl7cmV0dXJuISghdGhpcy50b2dnbGVTdGF0ZXx8dGhpcy5jYWNoZSE9PWEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihfdWUpKX0sbC5cdTAyNzVwcm92PWlyKHt0''@;'; put 'put ''b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxXXz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuZGV0YWlsU2VydmljZT1hLHRoaXMuZXhwYW5kYWJsZUNvdW50PTB9Z2V0IGhhc0V4cGFuZGFibGVSb3coKXtyZXR1cm4hdGhpcy5kZXRhaWxTZXJ2aWNlLmVuYWJs''@;'; put 'put ''ZWQmJnRoaXMuZXhwYW5kYWJsZUNvdW50PjB9cmVnaXN0ZXIoKXt0aGlzLmV4cGFuZGFibGVDb3VudCsrfXVucmVnaXN0ZXIoKXt0aGlzLmV4cGFuZGFibGVDb3VudC0tfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcih0ZikpfSxsLlx1MDI3NXBy''@;'; put 'put ''b3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHg4PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBUX3tjb25zdHJ1Y3RvcihhLGQsaCl7aWYoIWQpdGhyb3cgbmV3IEVycm9yKCJjbHItZGctcm93IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRhdGFn''@;'; put 'put ''cmlkIik7c3VwZXIoYSxkKSx0aGlzLmV4cGFuZGFibGVDb3VudD1ofWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlQ291bnQuaGFzRXhwYW5kYWJsZVJvd319cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoY2EpLEplKHdtLDgpLEpl''@;'; put 'put ''KFdfKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kYXRhZ3JpZCJdLFsiY2xyLWRnLXJvdyJdXSxmZWF0dXJlczpbZW9dfSksbH0pKCk7Y2xhc3MgVFJ7Y29uc3RydWN0b3IoYyl7dGhpcy5wcm9wPWMsdGhpcy5uZXN0ZWRQcm9wPW5ldyBHWihjKX1jb21wYXJl''@;'; put 'put ''KGMsYSl7bGV0IGQ9dGhpcy5uZXN0ZWRQcm9wLmdldFByb3BWYWx1ZShjKSxoPXRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoYSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBkJiYoZD1kLnRvTG93ZXJDYXNlKCkpLCJzdHJpbmciPT10eXBlb2YgaCYmKGg9aC50b0xvd2VyQ2FzZSgpKSx0''@;'; put 'put ''eXBlb2YgZD4idSJ8fG51bGw9PT1kP3R5cGVvZiBoPiJ1Inx8bnVsbD09PWg/MDoxOnR5cGVvZiBoPiJ1Inx8bnVsbD09PWh8fGQ8aD8tMTpkPmg/MTowfX12YXIga2Q9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5VTlNPUlRFRD0wXT0iVU5TT1JURUQiLGxbbC5BU0M9MV09IkFTQyIsbFtsLkRF''@;'; put 'put ''U0M9LTFdPSJERVNDIixsfShrZHx8e30pO2xldCBxWj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fZHluYW1pYz0hMX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLmNvbHVtblZpZXc9dGhpcy50ZW1wbGF0ZVJlZi5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCl9bmdPbkRlc3Ryb3ko''@;'; put 'put ''KXt0aGlzLmNvbHVtblZpZXcuZGVzdHJveSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siZGctd3JhcHBlZC1jb2x1bW4iXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZh''@;'; put 'put ''JiZIbyhGT2UsNSksMiZhKXtsZXQgaDtsaShoPWNpKCkpJiYoZC50ZW1wbGF0ZVJlZj1oLmZpcnN0KX19LG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1siY29sdW1uUG9ydGFsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxndCgw''@;'; put 'put ''LE5PZSwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDAsYnUpKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksa1I9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnN0YXRlRGVib3VuY2VyPWEsdGhpcy5fcmV2ZXJzZT0hMSx0aGlzLl9jaGFuZ2U9bmV3IHRufWdldCBjb21wYXJhdG9y''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX2NvbXBhcmF0b3J9c2V0IGNvbXBhcmF0b3IoYSl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuX2NvbXBhcmF0b3I9YSx0aGlzLmVtaXRDaGFuZ2UoKSx0aGlzLnN0YXRlRGVib3VuY2VyLmNoYW5nZURvbmUoKX1nZXQgcmV2ZXJzZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9yZXZlcnNlfXNldCByZXZlcnNlKGEpe3RoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlU3RhcnQoKSx0aGlzLl9yZXZlcnNlPWEsdGhpcy5lbWl0Q2hhbmdlKCksdGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VEb25lKCl9Z2V0IGNoYW5nZSgpe3JldHVybiB0aGlzLl9jaGFu''@;'; put 'put ''Z2UuYXNPYnNlcnZhYmxlKCl9dG9nZ2xlKGEsZCl7dGhpcy5zdGF0ZURlYm91bmNlci5jaGFuZ2VTdGFydCgpLHRoaXMuY29tcGFyYXRvcj09PWE/dGhpcy5fcmV2ZXJzZT10eXBlb2YgZDwidSImJmR8fCF0aGlzLl9yZXZlcnNlOih0aGlzLl9jb21wYXJhdG9yPWEsdGhpcy5fcmV2ZXJzZT10''@;'; put 'put ''eXBlb2YgZDwidSImJmQpLHRoaXMuZW1pdENoYW5nZSgpLHRoaXMuc3RhdGVEZWJvdW5jZXIuY2hhbmdlRG9uZSgpfWNsZWFyKCl7dGhpcy5jb21wYXJhdG9yPW51bGx9Y29tcGFyZShhLGQpe3JldHVybih0aGlzLnJldmVyc2U/LTE6MSkqdGhpcy5jb21wYXJhdG9yLmNvbXBhcmUoYSxkKX1l''@;'; put 'put ''bWl0Q2hhbmdlKCl7dGhpcy5fY2hhbmdlLm5leHQodGhpcyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKElNKSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7dmFyIG5mPWZ1bmN0aW9uKGwp''@;'; put 'put ''e3JldHVybiBsW2wuQUxJR05fQ09MVU1OUz0wXT0iQUxJR05fQ09MVU1OUyIsbFtsLkNBTENVTEFURV9NT0RFX09OPTFdPSJDQUxDVUxBVEVfTU9ERV9PTiIsbFtsLkNBTENVTEFURV9NT0RFX09GRj0yXT0iQ0FMQ1VMQVRFX01PREVfT0ZGIixsW2wuQ0xFQVJfV0lEVEhTPTNdPSJDTEVBUl9X''@;'; put 'put ''SURUSFMiLGxbbC5DT01QVVRFX0NPTFVNTl9XSURUSFM9NF09IkNPTVBVVEVfQ09MVU1OX1dJRFRIUyIsbH0obmZ8fHt9KTtsZXQgRTg9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlbmRlclN0ZXA9bmV3IHRuLHRoaXMuYWxyZWFkeVNpemVkPSExfWdldCByZW5kZXJTdGVw''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX3JlbmRlclN0ZXAuYXNPYnNlcnZhYmxlKCl9ZmlsdGVyUmVuZGVyU3RlcHMoYSl7cmV0dXJuIHRoaXMucmVuZGVyU3RlcC5waXBlKFphKGQ9PmE9PT1kKSl9cmVzaXplKCl7dGhpcy5fcmVuZGVyU3RlcC5uZXh0KG5mLkNBTENVTEFURV9NT0RFX09OKSx0aGlzLmFs''@;'; put 'put ''cmVhZHlTaXplZCYmdGhpcy5fcmVuZGVyU3RlcC5uZXh0KG5mLkNMRUFSX1dJRFRIUyksdGhpcy5fcmVuZGVyU3RlcC5uZXh0KG5mLkNPTVBVVEVfQ09MVU1OX1dJRFRIUyksdGhpcy5fcmVuZGVyU3RlcC5uZXh0KG5mLkFMSUdOX0NPTFVNTlMpLHRoaXMuYWxyZWFkeVNpemVkPSEwLHRoaXMu''@;'; put 'put ''X3JlbmRlclN0ZXAubmV4dChuZi5DQUxDVUxBVEVfTU9ERV9PRkYpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxLWj0oKCk9PntjbGFzcyBse2NvbnN0''@;'; put 'put ''cnVjdG9yKGEsZCxoKXt0aGlzLmVsPWEsdGhpcy5kb21BZGFwdGVyPWQsdGhpcy5vcmdhbml6ZXI9aCx0aGlzLl9yZXNpemVkQnk9MH1nZXQgcmVzaXplZEJ5KCl7cmV0dXJuIHRoaXMuX3Jlc2l6ZWRCeX1nZXQgbWluQ29sdW1uV2lkdGgoKXtyZXR1cm4gdGhpcy5kb21BZGFwdGVyLm1pbldp''@;'; put 'put ''ZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCl8fDk2fWdldCBtYXhSZXNpemVSYW5nZSgpe3JldHVybiB0aGlzLndpZHRoQmVmb3JlUmVzaXplLXRoaXMubWluQ29sdW1uV2lkdGh9Z2V0IHdpZHRoQWZ0ZXJSZXNpemUoKXtyZXR1cm4gdGhpcy53aWR0aEJlZm9yZVJlc2l6ZSt0aGlzLl9yZXNp''@;'; put 'put ''emVkQnl9c3RhcnRSZXNpemUoKXt0aGlzLl9yZXNpemVkQnk9MCx0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9ITAsdGhpcy53aWR0aEJlZm9yZVJlc2l6ZT10aGlzLmRvbUFkYXB0ZXIuY2xpZW50UmVjdCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLndpZHRofWVuZFJlc2l6ZSgpe3RoaXMu''@;'; put 'put ''b3JnYW5pemVyLnJlc2l6ZSgpfWNhbGN1bGF0ZVJlc2l6ZShhKXthPC10aGlzLm1heFJlc2l6ZVJhbmdlPyh0aGlzLl9yZXNpemVkQnk9LXRoaXMubWF4UmVzaXplUmFuZ2UsdGhpcy5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlPSExKToodGhpcy5fcmVzaXplZEJ5PWEsdGhpcy5pc1dpdGhpbk1h''@;'; put 'put ''eFJlc2l6ZVJhbmdlPSEwKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IoTmkpLGNyKGY0KSxjcihFOCkpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLFhaPSgoKT0+e2NsYXNzIGx7Y29uc3Ry''@;'; put 'put ''dWN0b3IoYSl7dGhpcy5wbGF0Zm9ybUlkPWF9Z2V0IHRhYmxlUmVmKCl7cmV0dXJuIHRoaXMuX3RhYmxlUmVmfXNldCB0YWJsZVJlZihhKXt0aGlzLl90YWJsZVJlZj1hfXNldCB0YWJsZShhKXttYSh0aGlzLnBsYXRmb3JtSWQpJiZhLm5hdGl2ZUVsZW1lbnQmJih0aGlzLnRhYmxlUmVmPWEu''@;'; put 'put ''bmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuZGF0YWdyaWQtdGFibGUiKSl9Z2V0Q29sdW1uRHJhZ0hlaWdodCgpe3JldHVybiB0aGlzLnRhYmxlUmVmP2Ake3RoaXMudGFibGVSZWYuY2xpZW50SGVpZ2h0fXB4YDpudWxsfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0''@;'; put 'put ''dXJuIG5ldyhhfHxsKShjcihJbykpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHl1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTKXt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlPWEsdGhpcy5yZW5kZXJlcj1kLHRo''@;'; put 'put ''aXMubmdab25lPWgsdGhpcy50YWJsZVNpemVTZXJ2aWNlPWYsdGhpcy5jb21tb25TdHJpbmc9dix0aGlzLmRvY3VtZW50PVMsdGhpcy5jb2x1bW5TZXBhcmF0b3JJZD10dSgpLHRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93bj0hMSx0aGlzLnVubGlzdGVuZXJzPVtdfWdldCBkZXNjcmlwdGlv''@;'; put 'put ''bklkKCl7cmV0dXJuYCR7dGhpcy5jb2x1bW5TZXBhcmF0b3JJZH0tYXJpYS1kZXNjcmliZWRieWB9Z2V0IHJlc2l6ZVRyYWNrZXJFbCgpe3JldHVybiB0aGlzLnJlc2l6ZVRyYWNrZXJSZWYubmF0aXZlRWxlbWVudH1nZXQgY29sdW1uSGFuZGxlRWwoKXtyZXR1cm4gdGhpcy5jb2x1bW5IYW5k''@;'; put 'put ''bGVSZWYubmF0aXZlRWxlbWVudH1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmNvbHVtbkhhbmRsZUVsLCJrZXlkb3duIixhPT57dGhpcy5zaG93VHJhY2tl''@;'; put 'put ''ck9uRmlyc3RLZXlEb3duKGEpLHRoaXMubW92ZVRyYWNrZXJPbktleURvd24oYSl9KSksdGhpcy51bmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuY29sdW1uSGFuZGxlRWwsImtleXVwIixhPT57dGhpcy5oaWRlVHJhY2tlck9uS2V5VXAoYSl9KSl9KX1uZ09uRGVz''@;'; put 'put ''dHJveSgpe3RoaXMudW5saXN0ZW5lcnMuZm9yRWFjaChhPT5hKCkpfXNob3dUcmFja2VyKCl7dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5zdGFydFJlc2l6ZSgpO2NvbnN0IGE9dGhpcy50YWJsZVNpemVTZXJ2aWNlLmdldENvbHVtbkRyYWdIZWlnaHQoKTt0aGlzLnJlbmRlcmVyLnNldFN0''@;'; put 'put ''eWxlKHRoaXMucmVzaXplVHJhY2tlckVsLCJoZWlnaHQiLGEpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsImRpc3BsYXkiLCJibG9jayIpfW1vdmVUcmFja2VyKGEpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2UuY2FsY3VsYXRlUmVzaXplKGEpLHRoaXMu''@;'; put 'put ''cmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVUcmFja2VyRWwsInRyYW5zZm9ybSIsYHRyYW5zbGF0ZVgoJHt0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeX1weClgKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwiY3Vyc29yIiwiY29sLXJl''@;'; put 'put ''c2l6ZSIpLHRoaXMucmVkRmxhZ1RyYWNrZXIoKX1oaWRlVHJhY2tlcigpe3RoaXMuY29sdW1uUmVzaXplclNlcnZpY2UuZW5kUmVzaXplKCksdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZVRyYWNrZXJFbCwiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxl''@;'; put 'put ''KHRoaXMucmVzaXplVHJhY2tlckVsLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVYKDBweCkiKSx0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29sdW1uSGFuZGxlRWwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZVgoMHB4KSIpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5i''@;'; put 'put ''b2R5LCJjdXJzb3IiLCJhdXRvIil9c2hvd1RyYWNrZXJPbkZpcnN0S2V5RG93bihhKXshdGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duJiYodGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KGEpfHx0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50KGEpKSYmKHRoaXMucmVzaXplU3RhcnRlZE9uS2V5''@;'; put 'put ''RG93bj0hMCx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJvbi1hcnJvdy1rZXktcmVzaXplIiksdGhpcy5zaG93VHJhY2tlcigpKX1tb3ZlVHJhY2tlck9uS2V5RG93bihhKXt0aGlzLmlzQXJyb3dMZWZ0S2V5RXZlbnQoYSk/KGEuc3RvcFByb3BhZ2F0aW9u''@;'; put 'put ''KCksdGhpcy5tb3ZlVHJhY2tlcih0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeS0xMikpOnRoaXMuaXNBcnJvd1JpZ2h0S2V5RXZlbnQoYSkmJihhLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubW92ZVRyYWNrZXIodGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5yZXNpemVkQnkr''@;'; put 'put ''MTIpKX1oaWRlVHJhY2tlck9uS2V5VXAoYSl7dGhpcy5yZXNpemVTdGFydGVkT25LZXlEb3duJiYodGhpcy5pc0Fycm93TGVmdEtleUV2ZW50KGEpfHx0aGlzLmlzQXJyb3dSaWdodEtleUV2ZW50KGEpKSYmKHRoaXMucmVzaXplU3RhcnRlZE9uS2V5RG93bj0hMSx0aGlzLnJlbmRlcmVyLnJl''@;'; put 'put ''bW92ZUNsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJvbi1hcnJvdy1rZXktcmVzaXplIiksdGhpcy5oaWRlVHJhY2tlcigpLHRoaXMuY29sdW1uSGFuZGxlRWwuZm9jdXMoKSl9cmVkRmxhZ1RyYWNrZXIoKXt0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2UhPT10aGlzLmNvbHVtblJlc2l6''@;'; put 'put ''ZXJTZXJ2aWNlLmlzV2l0aGluTWF4UmVzaXplUmFuZ2UmJih0aGlzLmlzV2l0aGluTWF4UmVzaXplUmFuZ2U9dGhpcy5jb2x1bW5SZXNpemVyU2VydmljZS5pc1dpdGhpbk1heFJlc2l6ZVJhbmdlLHRoaXMuaXNXaXRoaW5NYXhSZXNpemVSYW5nZT90aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNz''@;'; put 'put ''KHRoaXMucmVzaXplVHJhY2tlckVsLCJleGNlZWRlZC1tYXgiKTp0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucmVzaXplVHJhY2tlckVsLCJleGNlZWRlZC1tYXgiKSl9aXNBcnJvd0xlZnRLZXlFdmVudChhKXtyZXR1cm4gRWgoYS5rZXkpPT09VG8uQXJyb3dMZWZ0fWlzQXJyb3dSaWdo''@;'; put 'put ''dEtleUV2ZW50KGEpe3JldHVybiBFaChhLmtleSk9PT1Uby5BcnJvd1JpZ2h0fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShLWiksSmUoZHMpLEplKE1vKSxKZShYWiksSmUoVXMpLEplKHpzKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2Vs''@;'; put 'put ''ZWN0b3JzOltbImNsci1kZy1jb2x1bW4tc2VwYXJhdG9yIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGQpe2lmKDEmYSYmKEhvKEhPZSw1KSxIbyhWT2UsNSkpLDImYSl7bGV0IGg7bGkoaD1jaSgpKSYmKGQucmVzaXplVHJhY2tlclJlZj1oLmZpcnN0KSxsaShoPWNpKCkpJiYoZC5jb2x1bW5I''@;'; put 'put ''YW5kbGVSZWY9aC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IiLCEwKX0sZGVjbHM6Nix2YXJzOjQsY29uc3RzOltbImNvbHVtbkhhbmRsZSIsIiJdLFsicmVzaXplVHJhY2tlciIsIiJdLFsi''@;'; put 'put ''dHlwZSIsImJ1dHRvbiIsImNka0RyYWciLCIiLCJjZGtEcmFnTG9ja0F4aXMiLCJ4IiwxLCJkYXRhZ3JpZC1jb2x1bW4taGFuZGxlIiwzLCJjZGtEcmFnU3RhcnRlZCIsImNka0RyYWdNb3ZlZCIsImNka0RyYWdFbmRlZCJdLFsxLCJjbHItc3Itb25seSJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4t''@;'; put 'put ''cmVzaXplLXRyYWNrZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXtpZigxJmEpe2NvbnN0IGg9U24oKTtnZSgwLCJidXR0b24iLDIsMCksSXQoImNka0RyYWdTdGFydGVkIixmdW5jdGlvbigpe3JldHVybiBfdChoKSxidChkLnNob3dUcmFja2VyKCkpfSkoImNka0RyYWdNb3ZlZCIsZnVu''@;'; put 'put ''Y3Rpb24odil7cmV0dXJuIF90KGgpLGJ0KGQubW92ZVRyYWNrZXIodi5kaXN0YW5jZS54KSl9KSgiY2RrRHJhZ0VuZGVkIixmdW5jdGlvbih2KXtyZXR1cm4gX3QoaCksZC5oaWRlVHJhY2tlcigpLGJ0KHYuc291cmNlLl9kcmFnUmVmLnJlc2V0KCkpfSksbWUoKSxnZSgyLCJzcGFuIiwzKSxQ''@;'; put 'put ''ZSgzKSxtZSgpLFl0KDQsImRpdiIsNCwxKX0yJmEmJih1cigiYXJpYS1sYWJlbCIsZC5jb21tb25TdHJpbmcua2V5cy5jb2x1bW5TZXBhcmF0b3JBcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixkLmRlc2NyaXB0aW9uSWQpLF9lKDIpLHVyKCJpZCIsZC5kZXNjcmlwdGlvbklkKSxfZSgp''@;'; put 'put ''LG1yKCIgIixkLmNvbW1vblN0cmluZy5rZXlzLmNvbHVtblNlcGFyYXRvckRlc2NyaXB0aW9uLCIgIikpfSxkZXBlbmRlbmNpZXM6W25WZV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksVDg9KCgpPT57Y2xhc3MgbCBleHRlbmRzIE1Se2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7c3VwZXIoZCks''@;'; put 'put ''dGhpcy5fc29ydD1hLHRoaXMudmNyPWgsdGhpcy5kZXRhaWxTZXJ2aWNlPWYsdGhpcy5jaGFuZ2VEZXRlY3RvclJlZj12LHRoaXMuc29ydE9yZGVyQ2hhbmdlPW5ldyBEcix0aGlzLmZpbHRlclZhbHVlQ2hhbmdlPW5ldyBEcix0aGlzLnNob3dTZXBhcmF0b3I9ITAsdGhpcy5jdXN0b21GaWx0''@;'; put 'put ''ZXI9ITEsdGhpcy5fY29sVHlwZT0ic3RyaW5nIix0aGlzLl9zb3J0T3JkZXI9a2QuVU5TT1JURUQsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yU29ydGluZ0NoYW5nZXMoKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5s''@;'; put 'put ''aXN0ZW5Gb3JEZXRhaWxQYW5lQ2hhbmdlcygpKX1nZXQgY29sVHlwZSgpe3JldHVybiB0aGlzLl9jb2xUeXBlfXNldCBjb2xUeXBlKGEpe3RoaXMuX2NvbFR5cGU9YX1nZXQgZmllbGQoKXtyZXR1cm4gdGhpcy5fZmllbGR9c2V0IGZpZWxkKGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMu''@;'; put 'put ''X2ZpZWxkPWEsdGhpcy5fc29ydEJ5fHwodGhpcy5fc29ydEJ5PW5ldyBUUihhKSkpfWdldCBzb3J0QnkoKXtyZXR1cm4gdGhpcy5fc29ydEJ5fXNldCBzb3J0QnkoYSl7InN0cmluZyI9PXR5cGVvZiBhP3RoaXMuX3NvcnRCeT1uZXcgVFIoYSk6YT90aGlzLl9zb3J0Qnk9YTp0aGlzLmZpZWxk''@;'; put 'put ''P3RoaXMuX3NvcnRCeT1uZXcgVFIodGhpcy5maWVsZCk6ZGVsZXRlIHRoaXMuX3NvcnRCeX1nZXQgc29ydE9yZGVyKCl7cmV0dXJuIHRoaXMuX3NvcnRPcmRlcn1zZXQgc29ydE9yZGVyKGEpe2lmKCEodHlwZW9mIGE+InUiKSYmdGhpcy5fc29ydE9yZGVyIT09YSlzd2l0Y2goYSl7ZGVmYXVs''@;'; put 'put ''dDpjYXNlIGtkLlVOU09SVEVEOnRoaXMuX3NvcnQuY2xlYXIoKTticmVhaztjYXNlIGtkLkFTQzp0aGlzLnNvcnQoITEpO2JyZWFrO2Nhc2Uga2QuREVTQzp0aGlzLnNvcnQoITApfX1zZXQgdXBkYXRlRmlsdGVyVmFsdWUoYSl7dGhpcy5maWx0ZXI/dGhpcy5maWx0ZXIgaW5zdGFuY2VvZiBT''@;'; put 'put ''OD8oKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpJiYoYT0iIiksYSE9PXRoaXMuZmlsdGVyLnZhbHVlJiYodGhpcy5maWx0ZXIudmFsdWU9YSkpOnRoaXMuZmlsdGVyIGluc3RhbmNlb2YgQzgmJigoIWF8fCEoYSBpbnN0YW5jZW9mIEFycmF5KSkmJihhPVtudWxsLG51bGxdKSwyPT09YS5sZW5n''@;'; put 'put ''dGgmJihhWzBdIT09dGhpcy5maWx0ZXIudmFsdWVbMF18fGFbMV0hPT10aGlzLmZpbHRlci52YWx1ZVsxXSkmJih0aGlzLmZpbHRlci52YWx1ZT1hKSk6dGhpcy5pbml0RmlsdGVyVmFsdWU9YX1zZXQgcHJvamVjdGVkRmlsdGVyKGEpe2EmJih0aGlzLmRlbGV0ZUZpbHRlcigpLHRoaXMuY3Vz''@;'; put 'put ''dG9tRmlsdGVyPSEwKX1nZXQgc29ydGFibGUoKXtyZXR1cm4hIXRoaXMuX3NvcnRCeX1nZXQgYXJpYVNvcnQoKXtzd2l0Y2godGhpcy5fc29ydE9yZGVyKXtkZWZhdWx0OmNhc2Uga2QuVU5TT1JURUQ6cmV0dXJuIm5vbmUiO2Nhc2Uga2QuQVNDOnJldHVybiJhc2NlbmRpbmciO2Nhc2Uga2Qu''@;'; put 'put ''REVTQzpyZXR1cm4iZGVzY2VuZGluZyJ9fWdldCBzb3J0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3NvcnREaXJlY3Rpb259Z2V0IGZpbHRlclZhbHVlKCl7cmV0dXJuIHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgUzh8fHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgQzg/dGhpcy5maWx0ZXIudmFs''@;'; put 'put ''dWU6bnVsbH1zZXQgZmlsdGVyVmFsdWUoYSl7KHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgUzh8fHRoaXMuZmlsdGVyIGluc3RhbmNlb2YgQzgpJiYodGhpcy51cGRhdGVGaWx0ZXJWYWx1ZT1hLHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlci52YWx1ZSkpfWdldCBfdmll''@;'; put 'put ''dygpe3JldHVybiB0aGlzLndyYXBwZWRJbmplY3Rvci5nZXQocVosdGhpcy52Y3IpLmNvbHVtblZpZXd9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1uZXcgbVIocVosdGhpcy52Y3IpfW5nT25DaGFuZ2VzKGEpe2EuY29sVHlwZSYmYS5jb2xUeXBlLmN1cnJlbnRWYWx1ZSYmYS5j''@;'; put 'put ''b2xUeXBlLmN1cnJlbnRWYWx1ZSE9PWEuY29sVHlwZS5wcmV2aW91c1ZhbHVlJiYhdGhpcy5jdXN0b21GaWx0ZXImJiF0aGlzLmZpbHRlciYmdGhpcy5jb2xUeXBlJiZ0aGlzLmZpZWxkJiZ0aGlzLnNldHVwRGVmYXVsdEZpbHRlcih0aGlzLmZpZWxkLHRoaXMuY29sVHlwZSksYS5maWVsZCYm''@;'; put 'put ''YS5maWVsZC5jdXJyZW50VmFsdWUmJmEuZmllbGQuY3VycmVudFZhbHVlIT09YS5maWVsZC5wcmV2aW91c1ZhbHVlJiYhdGhpcy5jdXN0b21GaWx0ZXImJnRoaXMuY29sVHlwZSYmdGhpcy5zZXR1cERlZmF1bHRGaWx0ZXIodGhpcy5maWVsZCx0aGlzLmNvbFR5cGUpfW5nT25EZXN0cm95KCl7''@;'; put 'put ''c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXNvcnQoYSl7dGhpcy5zb3J0YWJsZSYmKHRoaXMuX3NvcnQudG9nZ2xlKHRoaXMuX3NvcnRCeSxhKSx0aGlzLl9zb3J0T3JkZXI9dGhpcy5fc29ydC5yZXZlcnNlP2tkLkRF''@;'; put 'put ''U0M6a2QuQVNDLHRoaXMuX3NvcnREaXJlY3Rpb249dGhpcy5fc29ydE9yZGVyPT09a2QuREVTQz8iZG93biI6InVwIix0aGlzLnNvcnRPcmRlckNoYW5nZS5lbWl0KHRoaXMuX3NvcnRPcmRlcikpfWxpc3RlbkZvckRldGFpbFBhbmVDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuZGV0YWlsU2Vydmlj''@;'; put 'put ''ZS5zdGF0ZUNoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMuc2hvd1NlcGFyYXRvciE9PSFhJiYodGhpcy5zaG93U2VwYXJhdG9yPSFhLHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSl9bGlzdGVuRm9yU29ydGluZ0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5fc29ydC5jaGFu''@;'; put 'put ''Z2Uuc3Vic2NyaWJlKGE9Pnt0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc29ydE9yZGVyIT09a2QuVU5TT1JURUQmJmEuY29tcGFyYXRvciE9PXRoaXMuX3NvcnRCeSYmKHRoaXMuX3NvcnRPcmRlcj1rZC5VTlNPUlRFRCx0aGlzLnNvcnRPcmRlckNoYW5nZS5l''@;'; put 'put ''bWl0KHRoaXMuX3NvcnRPcmRlciksdGhpcy5fc29ydERpcmVjdGlvbj1udWxsKX0pfXNldHVwRGVmYXVsdEZpbHRlcihhLGQpeyJudW1iZXIiPT09ZD90aGlzLnNldEZpbHRlcihuZXcgQzgobmV3IHhSKGEpKSk6InN0cmluZyI9PT1kJiZ0aGlzLnNldEZpbHRlcihuZXcgUzgobmV3IEVSKGEp''@;'; put 'put ''KSksdGhpcy5maWx0ZXImJnRoaXMuaW5pdEZpbHRlclZhbHVlJiYodGhpcy51cGRhdGVGaWx0ZXJWYWx1ZT10aGlzLmluaXRGaWx0ZXJWYWx1ZSxkZWxldGUgdGhpcy5pbml0RmlsdGVyVmFsdWUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShr''@;'; put 'put ''UiksSmUobTQpLEplKGhzKSxKZSh0ZiksSmUoY2EpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLWNvbHVtbiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLENSLDUpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQucHJv''@;'; put 'put ''amVjdGVkRmlsdGVyPWYuZmlyc3QpfX0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciJdLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiYodXIoImFyaWEtc29ydCIsZC5hcmlhU29ydCkscHIoImRhdGFncmlkLWNvbHVtbiIsITApKX0saW5wdXRzOntm''@;'; put 'put ''aWx0ZXJTdHJpbmdQbGFjZWhvbGRlcjpbam4uTm9uZSwiY2xyRmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIiLCJmaWx0ZXJTdHJpbmdQbGFjZWhvbGRlciJdLGZpbHRlck51bWJlck1heFBsYWNlaG9sZGVyOltqbi5Ob25lLCJjbHJGaWx0ZXJOdW1iZXJNYXhQbGFjZWhvbGRlciIsImZpbHRlck51''@;'; put 'put ''bWJlck1heFBsYWNlaG9sZGVyIl0sZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXI6W2puLk5vbmUsImNsckZpbHRlck51bWJlck1pblBsYWNlaG9sZGVyIiwiZmlsdGVyTnVtYmVyTWluUGxhY2Vob2xkZXIiXSxjb2xUeXBlOltqbi5Ob25lLCJjbHJEZ0NvbFR5cGUiLCJjb2xUeXBlIl0sZmll''@;'; put 'put ''bGQ6W2puLk5vbmUsImNsckRnRmllbGQiLCJmaWVsZCJdLHNvcnRCeTpbam4uTm9uZSwiY2xyRGdTb3J0QnkiLCJzb3J0QnkiXSxzb3J0T3JkZXI6W2puLk5vbmUsImNsckRnU29ydE9yZGVyIiwic29ydE9yZGVyIl0sdXBkYXRlRmlsdGVyVmFsdWU6W2puLk5vbmUsImNsckZpbHRlclZhbHVl''@;'; put 'put ''IiwidXBkYXRlRmlsdGVyVmFsdWUiXX0sb3V0cHV0czp7c29ydE9yZGVyQ2hhbmdlOiJjbHJEZ1NvcnRPcmRlckNoYW5nZSIsZmlsdGVyVmFsdWVDaGFuZ2U6ImNsckZpbHRlclZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W0ExKFtoNF0pLGVvLEphXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ak9lLGRl''@;'; put 'put ''Y2xzOjksdmFyczo1LGNvbnN0czpbWyJjb2x1bW5UaXRsZSIsIiJdLFsxLCJkYXRhZ3JpZC1jb2x1bW4tZmxleCJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLCJ0eXBlIiwiYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFszLCJjbHJGaWx0ZXJQbGFjZWhvbGRlciIsImNs''@;'; put 'put ''ckRnU3RyaW5nRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsNCwibmdJZiJdLFszLCJjbHJGaWx0ZXJNYXhQbGFjZWhvbGRlciIsImNsckZpbHRlck1pblBsYWNlaG9sZGVyIiwiY2xyRGdOdW1lcmljRmlsdGVyIiwiY2xyRmlsdGVyVmFsdWUiLCJjbHJG''@;'; put 'put ''aWx0ZXJWYWx1ZUNoYW5nZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4tdGl0bGUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiZGF0YWdyaWQtY29sdW1uLXRpdGxlIiwzLCJjbGljayJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJzaGFw''@;'; put 'put ''ZSIsImFycm93IiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwiY2xhc3MiLCJzb3J0LWljb24iLDQsIm5nSWYiXSxbInNoYXBlIiwiYXJyb3ciLCJhcmlhLWhpZGRlbiIsInRydWUiLDEsInNvcnQtaWNvbiJdLFszLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsImNsckZpbHRlclBsYWNlaG9sZGVyIiwi''@;'; put 'put ''Y2xyRGdTdHJpbmdGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSJdLFszLCJjbHJGaWx0ZXJWYWx1ZUNoYW5nZSIsImNsckZpbHRlck1heFBsYWNlaG9sZGVyIiwiY2xyRmlsdGVyTWluUGxhY2Vob2xkZXIiLCJjbHJEZ051bWVyaWNGaWx0ZXIiLCJjbHJGaWx0ZXJWYWx1ZSJdLFsxLCJkYXRhZ3Jp''@;'; put 'put ''ZC1jb2x1bW4tdGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShCT2UpLGdlKDAsImRpdiIsMSksZ3QoMSxaT2UsMywyLCJidXR0b24iLDIpLElyKDIpLGd0KDMsWU9lLDEsMywiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDMpKDQsV09lLDEsNCwiY2xyLWRnLW51bWVyaWMt''@;'; put 'put ''ZmlsdGVyIiw0KSg1LEdPZSwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDAsYnUpKDcscU9lLDIsMSwic3BhbiIsNSkoOCxLT2UsMSwwLCJjbHItZGctY29sdW1uLXNlcGFyYXRvciIsNiksbWUoKSksMiZhJiYoX2UoKSxSZSgibmdJZiIsZC5zb3J0YWJsZSksX2UoMiksUmUoIm5nSWYiLGQuZmll''@;'; put 'put ''bGQmJiFkLmN1c3RvbUZpbHRlciYmInN0cmluZyI9PWQuY29sVHlwZSksX2UoKSxSZSgibmdJZiIsZC5maWVsZCYmIWQuY3VzdG9tRmlsdGVyJiYibnVtYmVyIj09ZC5jb2xUeXBlKSxfZSgzKSxSZSgibmdJZiIsIWQuc29ydGFibGUpLF9lKCksUmUoIm5nSWYiLGQuc2hvd1NlcGFyYXRvcikp''@;'; put 'put ''fSxkZXBlbmRlbmNpZXM6WyRpLHZkLEdzLHl1ZSx2dWUsJFpdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGx9KSgpLHY0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuX2ZpbHRlcnM9YSx0aGlzLl9zb3J0PWQsdGhpcy5fcGFnZT1oLHRoaXMubG9h''@;'; put 'put ''ZGluZz0hMSx0aGlzLl9zbWFydD0hMSx0aGlzLl9kaXNwbGF5ZWQ9W10sdGhpcy5fY2hhbmdlPW5ldyB0bix0aGlzLl9hbGxDaGFuZ2VzPW5ldyB0bix0aGlzLnRyYWNrQnk9Zj0+Zn1nZXQgc21hcnQoKXtyZXR1cm4gdGhpcy5fc21hcnR9Z2V0IGFsbCgpe3JldHVybiB0aGlzLl9hbGx9c2V0''@;'; put 'put ''IGFsbChhKXt0aGlzLl9hbGw9YSx0aGlzLmVtaXRBbGxDaGFuZ2VzKGEpLHRoaXMuc21hcnQ/dGhpcy5fZmlsdGVySXRlbXMoKToodGhpcy5fZGlzcGxheWVkPWEsdGhpcy5lbWl0Q2hhbmdlKCkpfWdldCBkaXNwbGF5ZWQoKXtyZXR1cm4gdGhpcy5fZGlzcGxheWVkfWdldCBjaGFuZ2UoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBhbGxDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2FsbENoYW5nZXMuYXNPYnNlcnZhYmxlKCl9Z2V0IHVuaW5pdGlhbGl6ZWQoKXtyZXR1cm4hdGhpcy5fYWxsfWRlc3Ryb3koKXt0aGlzLl9maWx0ZXJzU3ViJiZ0aGlzLl9maWx0''@;'; put 'put ''ZXJzU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fc29ydFN1YiYmdGhpcy5fc29ydFN1Yi51bnN1YnNjcmliZSgpLHRoaXMuX3BhZ2VTdWImJnRoaXMuX3BhZ2VTdWIudW5zdWJzY3JpYmUoKX1zbWFydGVuVXAoKXt0aGlzLl9zbWFydD0hMCx0aGlzLl9maWx0ZXJzU3ViPXRoaXMuX2ZpbHRlcnMu''@;'; put 'put ''Y2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5fZmlsdGVySXRlbXMoKSksdGhpcy5fc29ydFN1Yj10aGlzLl9zb3J0LmNoYW5nZS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zb3J0LmNvbXBhcmF0b3I/dGhpcy5fc29ydEl0ZW1zKCk6dGhpcy5fZmlsdGVySXRlbXMoKX0pLHRoaXMuX3BhZ2VTdWI9''@;'; put 'put ''dGhpcy5fcGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT50aGlzLl9jaGFuZ2VQYWdlKCkpfXJlZnJlc2goKXt0aGlzLnNtYXJ0JiZ0aGlzLl9maWx0ZXJJdGVtcygpfWVtaXRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmRpc3BsYXllZCl9ZW1pdEFsbENoYW5nZXMoYSl7dGhpcy5f''@;'; put 'put ''YWxsQ2hhbmdlcy5uZXh0KGEpfV9maWx0ZXJJdGVtcygpe3RoaXMudW5pbml0aWFsaXplZHx8KHRoaXMuX2ZpbHRlcmVkPXRoaXMuX2ZpbHRlcnMuaGFzQWN0aXZlRmlsdGVycygpP3RoaXMuX2FsbC5maWx0ZXIoYT0+dGhpcy5fZmlsdGVycy5hY2NlcHRzKGEpKTp0aGlzLl9hbGwuc2xpY2Uo''@;'; put 'put ''KSx0aGlzLl9wYWdlLnRvdGFsSXRlbXM9dGhpcy5fZmlsdGVyZWQubGVuZ3RoLHRoaXMuX3NvcnRJdGVtcygpKX1fc29ydEl0ZW1zKCl7dGhpcy51bmluaXRpYWxpemVkfHwodGhpcy5fc29ydC5jb21wYXJhdG9yJiZ0aGlzLl9maWx0ZXJlZC5zb3J0KChhLGQpPT50aGlzLl9zb3J0LmNvbXBh''@;'; put 'put ''cmUoYSxkKSksdGhpcy5fY2hhbmdlUGFnZSgpKX1fY2hhbmdlUGFnZSgpe3RoaXMudW5pbml0aWFsaXplZHx8dGhpcy5fcGFnZS5hY3RpdmF0ZWQmJjA9PT10aGlzLl9wYWdlLnNpemV8fCh0aGlzLl9kaXNwbGF5ZWQ9dGhpcy5fcGFnZS5zaXplPjA/dGhpcy5fZmlsdGVyZWQuc2xpY2UodGhp''@;'; put 'put ''cy5fcGFnZS5maXJzdEl0ZW0sdGhpcy5fcGFnZS5sYXN0SXRlbSsxKTp0aGlzLl9maWx0ZXJlZCx0aGlzLmVtaXRDaGFuZ2UoKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKG00KSxjcihrUiksY3IoeW0pKX0sbC5cdTAyNzVwcm92PWlyKHt0''@;'; put 'put ''b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxHXz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMudGVtcGxhdGU9YSx0aGlzLmRpZmZlcnM9ZCx0aGlzLml0ZW1zPWgsdGhpcy52Y3I9Zix0aGlzLmRpZmZlcj1udWxsLHRoaXMuc3Vic2NyaXB0aW9ucz1b''@;'; put 'put ''XSxoLnNtYXJ0ZW5VcCgpLHRoaXMuaXRlcmFibGVQcm94eT1uZXcgVnModGhpcy52Y3IsdGhpcy50ZW1wbGF0ZSx0aGlzLmRpZmZlcnMpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGguY2hhbmdlLnN1YnNjcmliZSh2PT57dGhpcy5pdGVyYWJsZVByb3h5Lm5nRm9yT2Y9dix0aGlzLml0ZXJh''@;'; put 'put ''YmxlUHJveHkubmdEb0NoZWNrKCl9KSl9c2V0IHJhd0l0ZW1zKGEpe3RoaXMuX3Jhd0l0ZW1zPWF8fFtdfXNldCB0cmFja0J5KGEpe3RoaXMuaXRlcmFibGVQcm94eS5uZ0ZvclRyYWNrQnk9YX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChhLGQpe3JldHVybiEwfW5nRG9DaGVjaygp''@;'; put 'put ''e3RoaXMuZGlmZmVyfHwodGhpcy5kaWZmZXI9dGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fcmF3SXRlbXMpLmNyZWF0ZSh0aGlzLml0ZXJhYmxlUHJveHkubmdGb3JUcmFja0J5KSksdGhpcy5kaWZmZXImJnRoaXMuZGlmZmVyLmRpZmYodGhpcy5fcmF3SXRlbXMpJiYodGhpcy5pdGVtcy5hbGw9''@;'; put 'put ''dGhpcy5fcmF3SXRlbXMpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoVWEpLEplKFk2KSxKZSh2NCksSmUoaHMpKX0sbC5cdTAyNzVk''@;'; put 'put ''aXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyRGdJdGVtcyIsIiIsImNsckRnSXRlbXNPZiIsIiJdXSxpbnB1dHM6e3Jhd0l0ZW1zOltqbi5Ob25lLCJjbHJEZ0l0ZW1zT2YiLCJyYXdJdGVtcyJdLHRyYWNrQnk6W2puLk5vbmUsImNsckRnSXRlbXNUcmFja0J5IiwidHJhY2tCeSJd''@;'; put 'put ''fX0pLGx9KSgpLEpaPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5pdGVtcz1hfWdldCBlbXB0eURhdGFncmlkKCl7cmV0dXJuISh0aGlzLml0ZW1zLmxvYWRpbmd8fHRoaXMuaXRlbXMuZGlzcGxheWVkJiYwIT09dGhpcy5pdGVtcy5kaXNwbGF5ZWQubGVuZ3RoKX19cmV0dXJu''@;'; put 'put ''IGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUodjQpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXBsYWNlaG9sZGVyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiZGF0YWdyaWQt''@;'; put 'put ''cGxhY2Vob2xkZXItY29udGFpbmVyIiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczo0LHZhcnM6NCxjb25zdHM6W1sicm9sZSIsInJvdyIsMSwiZGF0YWdyaWQtcGxhY2Vob2xkZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtcGxhY2Vob2xkZXItaW1hZ2UiLDQsIm5nSWYiXSxbInJv''@;'; put 'put ''bGUiLCJncmlkY2VsbCIsMSwiZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGVudCJdLFs0LCJuZ0lmIl0sWzEsImRhdGFncmlkLXBsYWNlaG9sZGVyLWltYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxnZSgwLCJkaXYiLDApLGd0KDEsWE9lLDEsMCwiZGl2IiwxKSxn''@;'; put 'put ''ZSgyLCJzcGFuIiwyKSxndCgzLEpPZSwxLDAsIm5nLWNvbnRlbnQiLDMpLG1lKCkoKSksMiZhJiYocHIoImRhdGFncmlkLWVtcHR5IixkLmVtcHR5RGF0YWdyaWQpLF9lKCksUmUoIm5nSWYiLGQuZW1wdHlEYXRhZ3JpZCksX2UoMiksUmUoIm5nSWYiLGQuZW1wdHlEYXRhZ3JpZCkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6WyRpXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxRWj0oKCk9PntjbGFzcyBse3NldCB0cmlnZ2VyRWwoYSl7dGhpcy5fdHJpZ2dlckVsPWF9Zm9jdXNUcmlnZ2VyKCl7dGhpcy5fdHJpZ2dlckVsJiZ0aGlzLl90cmlnZ2VyRWwuZm9jdXMoKX19cmV0dXJuIGwuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksZVk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lkPW5ldyB0bn1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWQuYXNPYnNlcnZh''@;'; put 'put ''YmxlKCl9c2V0SWQoYSl7dGhpcy5faWQubmV4dChhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksQVI9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcihh''@;'; put 'put ''LGQsaCxmLHYsUyl7dGhpcy50b2dnbGVTZXJ2aWNlPWEsdGhpcy5lbD1kLHRoaXMuc2lnbnBvc3RJZFNlcnZpY2U9aCx0aGlzLnNpZ25wb3N0Rm9jdXNNYW5hZ2VyPWYsdGhpcy5wbGF0Zm9ybUlkPVMsdGhpcy5hcmlhRXhwYW5kZWQ9ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuZG9j''@;'; put 'put ''dW1lbnQ9dn1uZ09uSW5pdCgpe3RoaXMuc2lnbnBvc3RGb2N1c01hbmFnZXIudHJpZ2dlckVsPXRoaXMuZWwubmF0aXZlRWxlbWVudCx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoYT0+e3RoaXMuYXJpYUV4cGFuZGVkPWE7''@;'; put 'put ''Y29uc3QgZD10aGlzLmlzT3Blbjt0aGlzLmlzT3Blbj1hLCF0aGlzLmlzT3BlbiYmZCYmdGhpcy5mb2N1c09uQ2xvc2UoKX0pLHRoaXMuc2lnbnBvc3RJZFNlcnZpY2UuaWQuc3Vic2NyaWJlKGE9PnRoaXMuYXJpYUNvbnRyb2w9YSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25z''@;'; put 'put ''LmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1vblNpZ25wb3N0VHJpZ2dlckNsaWNrKGEpe3RoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoYSl9Zm9jdXNPbkNsb3NlKCl7bWEodGhpcy5wbGF0Zm9ybUlkKSYmIXRoaXMuaXNPcGVuJiZ0aGlzLmRvY3VtZW50LmFjdGl2ZUVs''@;'; put 'put ''ZW1lbnQ9PT10aGlzLmRvY3VtZW50LmJvZHkmJnRoaXMuc2lnbnBvc3RGb2N1c01hbmFnZXIuZm9jdXNUcmlnZ2VyKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFJsKSxKZShOaSksSmUoZVkpLEplKFFaKSxKZSh6cyksSmUoSW8pKX0sbC5c''@;'; put 'put ''dTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIl1dLGhvc3RBdHRyczpbMSwic2lnbnBvc3QtdHJpZ2dlciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiY2xpY2siLGZ1bmN0aW9uKGYpe3JldHVy''@;'; put 'put ''biBkLm9uU2lnbnBvc3RUcmlnZ2VyQ2xpY2soZil9KSwyJmEmJih1cigiYXJpYS1leHBhbmRlZCIsZC5hcmlhRXhwYW5kZWQpKCJhcmlhLWNvbnRyb2xzIixkLmFyaWFDb250cm9sKSxwcigiYWN0aXZlIixkLmlzT3BlbikpfX0pLGx9KSgpLHRZPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3Io''@;'; put 'put ''YSl7dGhpcy5jb21tb25TdHJpbmdzPWEsdGhpcy51c2VDdXN0b21UcmlnZ2VyPSExfXNldCBjdXN0b21UcmlnZ2VyKGEpe3RoaXMudXNlQ3VzdG9tVHJpZ2dlcj0hIWF9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFVzKSl9LGwuXHUwMjc1Y21w''@;'; put 'put ''PVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1zaWducG9zdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLEFSLDUpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQuY3VzdG9tVHJpZ2dlcj1mLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdz''@;'; put 'put ''OmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigic2lnbnBvc3QiLCEwKX0sZmVhdHVyZXM6W1ppKFtRWixlWV0pLEExKFtoNF0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsclNpZ25wb3N0VHJpZ2dlciIs''@;'; put 'put ''IiIsMSwic2lnbnBvc3QtYWN0aW9uIiwiYnRuIiwiYnRuLXNtIiwiYnRuLWljb24iLCJidG4tbGluayJdLFsic2hhcGUiLCJpbmZvLWNpcmNsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ3QoMCxRT2UsMywyLCJuZy1jb250YWluZXIiLDApLElyKDEpKSwyJmEmJlJl''@;'; put 'put ''KCJuZ0lmIiwhZC51c2VDdXN0b21UcmlnZ2VyKX0sZGVwZW5kZW5jaWVzOlskaSxHcyxBUl0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksblk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2R5bmFtaWM9ITF9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5jZWxsVmlldz10aGlzLnRl''@;'; put 'put ''bXBsYXRlUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMuY2VsbFZpZXcuZGVzdHJveSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siZGctd3Jh''@;'; put 'put ''cHBlZC1jZWxsIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGQpe2lmKDEmYSYmSG8oZVBlLDUpLDImYSl7bGV0IGg7bGkoaD1jaSgpKSYmKGQudGVtcGxhdGVSZWY9aC5maXJzdCl9fSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbImNlbGxQb3J0YWwiLCIi''@;'; put 'put ''XV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaSgpLGd0KDAsdFBlLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMCxidSkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxfND0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMudmNyPWF9Z2V0IF92aWV3KCl7cmV0dXJuIHRo''@;'; put 'put ''aXMud3JhcHBlZEluamVjdG9yLmdldChuWSx0aGlzLnZjcikuY2VsbFZpZXd9bmdPbkluaXQoKXt0aGlzLndyYXBwZWRJbmplY3Rvcj1uZXcgbVIoblksdGhpcy52Y3IpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShocykpfSxsLlx1MDI3NWNt''@;'; put 'put ''cD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY2VsbCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLHRZLDQpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQuc2lnbnBvc3Q9Zil9fSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiXSxob3N0''@;'; put 'put ''VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImRhdGFncmlkLWNlbGwiLCEwKSgiZGF0YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciIsZC5zaWducG9zdC5sZW5ndGg+MCl9LG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlv''@;'; put 'put ''bihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSx3dWU9MCxMTT0oKCk9PntjbGFzcyBsIGV4dGVuZHMgbzF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuZXhwYW5kYWJsZUlkPSIiLHRoaXMuX3JlcGxhY2U9bmV3IEFyKCExKSx0aGlzLl9hbmltYXRl''@;'; put 'put ''PW5ldyB0bix3dWUrKyx0aGlzLmV4cGFuZGFibGVJZD0iY2xyLWRnLWV4cGFuZGFibGUtcm93LSIrd3VlfWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLl9leHBhbmRlZH1zZXQgZXhwYW5kZWQoYSl7KGE9ISFhKSE9PXRoaXMuX2V4cGFuZGVkJiYodGhpcy5fZXhwYW5kZWQ9YSx0aGlzLl9h''@;'; put 'put ''bmltYXRlLm5leHQoKSx0aGlzLl9leHBhbmRDaGFuZ2UubmV4dChhKSl9Z2V0IHJlcGxhY2UoKXtyZXR1cm4gdGhpcy5fcmVwbGFjZS5hc09ic2VydmFibGUoKX1nZXQgYW5pbWF0ZSgpe3JldHVybiB0aGlzLl9hbmltYXRlLmFzT2JzZXJ2YWJsZSgpfWxvYWRpbmdTdGF0ZUNoYW5nZShhKXtz''@;'; put 'put ''dXBlci5sb2FkaW5nU3RhdGVDaGFuZ2UoYSksYSE9PXIxLkxPQURJTkcmJnRoaXMuX2FuaW1hdGUubmV4dCgpfXNldFJlcGxhY2UoYSl7dGhpcy5fcmVwbGFjZS5uZXh0KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWly''@;'; put 'put ''KHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTt2YXIgJF89ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5ESVNQTEFZPTBdPSJESVNQTEFZIixsW2wuQ0FMQ1VMQVRFPTFdPSJDQUxDVUxBVEUiLGx9KCRffHx7fSksa2E9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5Ob25lPTBdPSJO''@;'; put 'put ''b25lIixsW2wuU2luZ2xlPTFdPSJTaW5nbGUiLGxbbC5NdWx0aT0yXT0iTXVsdGkiLGx9KGthfHx7fSk7bGV0IHJZPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9keW5hbWljPSExfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMucm93Vmlldz10aGlzLnRlbXBsYXRlUmVmLmNyZWF0''@;'; put 'put ''ZUVtYmVkZGVkVmlldyhudWxsKX1uZ09uRGVzdHJveSgpe3RoaXMucm93Vmlldy5kZXN0cm95KCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJkZy13cmFwcGVkLXJvdyJdXSx2aWV3''@;'; put 'put ''UXVlcnk6ZnVuY3Rpb24oYSxkKXtpZigxJmEmJkhvKG5QZSw1KSwyJmEpe2xldCBoO2xpKGg9Y2koKSkmJihkLnRlbXBsYXRlUmVmPWguZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJyb3dQb3J0YWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rp''@;'; put 'put ''b24oYSxkKXsxJmEmJihIaSgpLGd0KDAsclBlLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMCxidSkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxzVmU9MCxxXz0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5faXRlbXM9YSx0aGlzLl9maWx0ZXJzPWQsdGhpcy5wcmVzZXJ2''@;'; put 'put ''ZVNlbGVjdGlvbj0hMSx0aGlzLnNoaWZ0UHJlc3NlZD0hMSx0aGlzLnJvd1NlbGVjdGlvbk1vZGU9ITEsdGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1bXSx0aGlzLmxvY2tlZFJlZnM9W10sdGhpcy52YWx1ZUNvbGxlY3Rvcj1uZXcgdG4sdGhpcy5fc2VsZWN0aW9uVHlwZT1rYS5Ob25lLHRoaXMu''@;'; put 'put ''X2NoYW5nZT1uZXcgdG4sdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuaWQ9ImNsci1kZy1zZWxlY3Rpb24iK3NWZSsrLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX2ZpbHRlcnMuY2hhbmdlLnN1YnNjcmliZSgoKT0+eyF0aGlzLl9zZWxlY3RhYmxlfHx0aGlzLnByZXNlcnZlU2Vs''@;'; put 'put ''ZWN0aW9ufHx0aGlzLmNsZWFyU2VsZWN0aW9uKCl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5faXRlbXMuYWxsQ2hhbmdlcy5zdWJzY3JpYmUoaD0+e2NvbnN0IGY9W107c3dpdGNoKHRoaXMuc2VsZWN0aW9uVHlwZSl7Y2FzZSBrYS5Ob25lOmJyZWFrO2Nhc2Uga2EuU2luZ2xl''@;'; put 'put ''OntsZXQgdixTPSExO3RoaXMuY3VycmVudFNpbmdsZSYmIXRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZiYmKHRoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj10aGlzLl9pdGVtcy50cmFja0J5KHRoaXMuY3VycmVudFNpbmdsZSkpLGguZm9yRWFjaChWPT57Y29uc3QgUT10aGlzLl9pdGVt''@;'; put 'put ''cy50cmFja0J5KFYpO3RoaXMucHJldlNpbmdsZVNlbGVjdGlvblJlZj09PVEmJih2PVYsUz0hMCksdGhpcy5sb2NrZWRSZWZzLmluZGV4T2YoUSk+LTEmJmYucHVzaChRKX0pLHRoaXMuX2l0ZW1zLnNtYXJ0JiYhdiYmKFM9ITApLHNldFRpbWVvdXQoKCk9PntTJiYodGhpcy5jdXJyZW50U2lu''@;'; put 'put ''Z2xlPXYpfSwwKTticmVha31jYXNlIGthLk11bHRpOntsZXQgdj10aGlzLmN1cnJlbnQuc2xpY2UoKSxTPSExO3RoaXMuY3VycmVudC5sZW5ndGg+MCYmdGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5sZW5ndGghPT10aGlzLmN1cnJlbnQubGVuZ3RoJiYodGhpcy5wcmV2U2VsZWN0aW9uUmVmcz1b''@;'; put 'put ''XSx0aGlzLmN1cnJlbnQuZm9yRWFjaChWPT57dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5wdXNoKHRoaXMuX2l0ZW1zLnRyYWNrQnkoVikpfSkpLGguZm9yRWFjaChWPT57Y29uc3QgUT10aGlzLl9pdGVtcy50cmFja0J5KFYpO3RoaXMubG9ja2VkUmVmcy5pbmRleE9mKFEpPi0xJiZmLnB1c2go''@;'; put 'put ''USl9KSx2Lmxlbmd0aD4wJiYoaC5mb3JFYWNoKFY9Pntjb25zdCBRPXRoaXMuX2l0ZW1zLnRyYWNrQnkoViksZGU9dGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5pbmRleE9mKFEpO2RlPi0xJiYodltkZV09VixTPSEwKX0pLHRoaXMuX2l0ZW1zLnNtYXJ0JiYodj12LmZpbHRlcihWPT5oLmluZGV4''@;'; put 'put ''T2YoVik+LTEpLHRoaXMuY3VycmVudC5sZW5ndGghPT12Lmxlbmd0aCYmKFM9ITApKSxzZXRUaW1lb3V0KCgpPT57UyYmKHRoaXMuY3VycmVudD12KX0sMCkpO2JyZWFrfX10aGlzLmxvY2tlZFJlZnM9Zn0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnZhbHVlQ29sbGVjdG9yLnBp''@;'; put 'put ''cGUoaDgoMCkpLnN1YnNjcmliZSgoKT0+dGhpcy5lbWl0Q2hhbmdlKCkpKX1nZXQgc2VsZWN0aW9uVHlwZSgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlfXNldCBzZWxlY3Rpb25UeXBlKGEpe2EhPT10aGlzLnNlbGVjdGlvblR5cGUmJih0aGlzLl9zZWxlY3Rpb25UeXBlPWEsYT09PWth''@;'; put 'put ''Lk5vbmU/ZGVsZXRlIHRoaXMuY3VycmVudDp0aGlzLnVwZGF0ZUN1cnJlbnQoW10sITEpKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGEpe3RoaXMudXBkYXRlQ3VycmVudChhLCEwKX1nZXQgY3VycmVudFNpbmdsZSgpe3JldHVybiB0aGlzLl9jdXJy''@;'; put 'put ''ZW50U2luZ2xlfXNldCBjdXJyZW50U2luZ2xlKGEpe2EhPT10aGlzLl9jdXJyZW50U2luZ2xlJiYodGhpcy5fY3VycmVudFNpbmdsZT1hLGEmJih0aGlzLnByZXZTaW5nbGVTZWxlY3Rpb25SZWY9dGhpcy5faXRlbXMudHJhY2tCeShhKSksdGhpcy5lbWl0Q2hhbmdlKCkpfWdldCBjaGFuZ2Uo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fY2hhbmdlLmFzT2JzZXJ2YWJsZSgpfWdldCBfc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlPT09a2EuTXVsdGl8fHRoaXMuX3NlbGVjdGlvblR5cGU9PT1rYS5TaW5nbGV9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9jdXJyZW50PVtdLHRoaXMu''@;'; put 'put ''cHJldlNlbGVjdGlvblJlZnM9W10sdGhpcy5wcmV2U2luZ2xlU2VsZWN0aW9uUmVmPW51bGwsdGhpcy5fY3VycmVudFNpbmdsZT1udWxsLHRoaXMuZW1pdENoYW5nZSgpfWRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXVwZGF0ZUN1cnJl''@;'; put 'put ''bnQoYSxkKXt0aGlzLl9jdXJyZW50PWEsZCYmdGhpcy52YWx1ZUNvbGxlY3Rvci5uZXh0KGEpfWlzU2VsZWN0ZWQoYSl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGU9PT1rYS5TaW5nbGU/dGhpcy5jdXJyZW50U2luZ2xlPT09YTp0aGlzLl9zZWxlY3Rpb25UeXBlPT09a2EuTXVsdGkmJnRo''@;'; put 'put ''aXMuY3VycmVudC5pbmRleE9mKGEpPj0wfXNldFNlbGVjdGVkKGEsZCl7Y29uc3QgaD10aGlzLmN1cnJlbnQ/dGhpcy5jdXJyZW50LmluZGV4T2YoYSk6LTE7c3dpdGNoKHRoaXMuX3NlbGVjdGlvblR5cGUpe2Nhc2Uga2EuTm9uZTpjYXNlIGthLlNpbmdsZTpicmVhaztjYXNlIGthLk11bHRp''@;'; put 'put ''Omg+PTAmJiFkP3RoaXMuZGVzZWxlY3RJdGVtKGgpOmg8MCYmZCYmdGhpcy5zZWxlY3RJdGVtKGEpfX1pc0FsbFNlbGVjdGVkKCl7aWYodGhpcy5fc2VsZWN0aW9uVHlwZSE9PWthLk11bHRpfHwhdGhpcy5faXRlbXMuZGlzcGxheWVkKXJldHVybiExO2NvbnN0IGE9dGhpcy5faXRlbXMuZGlz''@;'; put 'put ''cGxheWVkLmZpbHRlcihmPT4hMT09PXRoaXMuaXNMb2NrZWQoZikpO3JldHVybiEoYS5sZW5ndGg8MSkmJmEuZmlsdGVyKGY9PnRoaXMuY3VycmVudC5pbmRleE9mKGYpPi0xKS5sZW5ndGg9PT1hLmxlbmd0aH1sb2NrSXRlbShhLGQpe2lmKHRoaXMuY2FuSXRCZUxvY2tlZCgpKXtjb25zdCBo''@;'; put 'put ''PXRoaXMuX2l0ZW1zLnRyYWNrQnkoYSk7ITA9PT1kP3RoaXMubG9ja2VkUmVmcy5wdXNoKGgpOnRoaXMubG9ja2VkUmVmcz10aGlzLmxvY2tlZFJlZnMuZmlsdGVyKGY9PmghPT1mKX19aXNMb2NrZWQoYSl7aWYodGhpcy5jYW5JdEJlTG9ja2VkKCkpe2NvbnN0IGQ9dGhpcy5faXRlbXMudHJh''@;'; put 'put ''Y2tCeShhKTtyZXR1cm4gdGhpcy5sb2NrZWRSZWZzLmluZGV4T2YoZCk+LTF9cmV0dXJuITF9dG9nZ2xlQWxsKCl7dGhpcy5fc2VsZWN0aW9uVHlwZT09PWthLk5vbmV8fHRoaXMuX3NlbGVjdGlvblR5cGU9PT1rYS5TaW5nbGV8fCh0aGlzLmlzQWxsU2VsZWN0ZWQoKT90aGlzLl9pdGVtcy5k''@;'; put 'put ''aXNwbGF5ZWQuZm9yRWFjaChhPT57Y29uc3QgZD10aGlzLmN1cnJlbnQuaW5kZXhPZihhKTtkPi0xJiYhMT09PXRoaXMuaXNMb2NrZWQoYSkmJnRoaXMuZGVzZWxlY3RJdGVtKGQpfSk6dGhpcy5faXRlbXMuZGlzcGxheWVkLmZvckVhY2goYT0+e3RoaXMuY3VycmVudC5pbmRleE9mKGEpPDAm''@;'; put 'put ''JiExPT09dGhpcy5pc0xvY2tlZChhKSYmdGhpcy5zZWxlY3RJdGVtKGEpfSkpfXNlbGVjdEl0ZW0oYSl7dGhpcy5jdXJyZW50PXRoaXMuY3VycmVudC5jb25jYXQoYSksdGhpcy5wcmV2U2VsZWN0aW9uUmVmcy5wdXNoKHRoaXMuX2l0ZW1zLnRyYWNrQnkoYSkpfWRlc2VsZWN0SXRlbShhKXtp''@;'; put 'put ''Zih0aGlzLmN1cnJlbnQ9dGhpcy5jdXJyZW50LnNsaWNlKDAsYSkuY29uY2F0KHRoaXMuY3VycmVudC5zbGljZShhKzEpKSxhPHRoaXMucHJldlNlbGVjdGlvblJlZnMubGVuZ3RoKXtjb25zdCBkPXRoaXMucHJldlNlbGVjdGlvblJlZnMuc3BsaWNlKGEsMSk7dGhpcy5sb2NrZWRSZWZzPXRo''@;'; put 'put ''aXMubG9ja2VkUmVmcy5maWx0ZXIoaD0+aCE9PWRbMF0pfX1jYW5JdEJlTG9ja2VkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGUhPT1rYS5Ob25lfWVtaXRDaGFuZ2UoKXt0aGlzLl9zZWxlY3Rpb25UeXBlPT09a2EuU2luZ2xlP3RoaXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVudFNp''@;'; put 'put ''bmdsZSk6dGhpcy5fc2VsZWN0aW9uVHlwZT09PWthLk11bHRpJiZ0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcih2NCksY3IobTQpKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rv''@;'; put 'put ''cnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxpWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuX3ZpZXc9bmV3IEFyKCRfLkRJU1BMQVkpLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChhLmZpbHRlclJlbmRlclN0ZXBzKG5mLkNBTENVTEFURV9N''@;'; put 'put ''T0RFX09OKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3ZpZXcubmV4dCgkXy5DQUxDVUxBVEUpKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goYS5maWx0ZXJSZW5kZXJTdGVwcyhuZi5DQUxDVUxBVEVfTU9ERV9PRkYpLnN1YnNjcmliZSgoKT0+dGhpcy5fdmlldy5uZXh0KCRfLkRJU1BMQVkpKSl9''@;'; put 'put ''Z2V0IHZpZXcoKXtyZXR1cm4gdGhpcy5fdmlldy5hc09ic2VydmFibGUoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKEU4KSl9LGwu''@;'; put 'put ''XHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksb1k9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnNlbGVjdGlvbj1hfW9uU2VsZWN0aW9uQ2VsbENsaWNrKGEpe3RoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGV8fCJMQUJFTCIh''@;'; put 'put ''PT1hLnRhcmdldC50YWdOYW1lJiYiSU5QVVQiIT09YS50YXJnZXQudGFnTmFtZSYmYS50YXJnZXQucXVlcnlTZWxlY3RvcigiaW5wdXQiKT8uY2xpY2soKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUocV8pKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5''@;'; put 'put ''cGU6bCxzZWxlY3RvcnM6W1siIiw4LCJkYXRhZ3JpZC1zZWxlY3QiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiY2xpY2siLGZ1bmN0aW9uKGYpe3JldHVybiBkLm9uU2VsZWN0aW9uQ2VsbENsaWNrKGYpfSl9fSksbH0pKCksRFI9MCxDbT0oKCk9PntjbGFzcyBse2Nv''@;'; put 'put ''bnN0cnVjdG9yKGEsZCxoLGYsdixTLFYsUSxkZSxwZSxDZSxPZSl7dGhpcy5zZWxlY3Rpb249YSx0aGlzLnJvd0FjdGlvblNlcnZpY2U9ZCx0aGlzLmdsb2JhbEV4cGFuZGFibGU9aCx0aGlzLmV4cGFuZD1mLHRoaXMuZGV0YWlsU2VydmljZT12LHRoaXMuZGlzcGxheU1vZGU9Uyx0aGlzLnZj''@;'; put 'put ''cj1WLHRoaXMucmVuZGVyZXI9USx0aGlzLmVsPWRlLHRoaXMuY29tbW9uU3RyaW5ncz1wZSx0aGlzLml0ZW1zPUNlLHRoaXMuZG9jdW1lbnQ9T2UsdGhpcy5zZWxlY3RlZENoYW5nZWQ9bmV3IERyKCExKSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBEcighMSksdGhpcy5kaXNwbGF5Q2VsbHM9''@;'; put 'put ''ITEsdGhpcy5leHBhbmRBbmltYXRpb25UcmlnZ2VyPSExLHRoaXMuU0VMRUNUSU9OX1RZUEU9a2EsdGhpcy5pdGVtQ2hhbmdlcz1uZXcgb00oMSksdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fZGV0YWlsT3BlbkxhYmVsPSIiLHRoaXMuX2RldGFpbENsb3NlTGFiZWw9IiIsdGhpcy5fcm93U2Vs''@;'; put 'put ''ZWN0aW9uTGFiZWw9IiIsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3NlbGVjdGFibGU9ITAsRFIrKyx0aGlzLmlkPSJjbHItZGctcm93IitEUix0aGlzLnJhZGlvSWQ9ImNsci1kZy1yb3ctcmQiK0RSLHRoaXMuY2hlY2tib3hJZD0iY2xyLWRnLXJvdy1jYiIrRFIsdGhpcy5leHBhbmRh''@;'; put 'put ''YmxlSWQ9Zi5leHBhbmRhYmxlSWQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goVFModGhpcy5leHBhbmQucmVwbGFjZSx0aGlzLmV4cGFuZC5leHBhbmRDaGFuZ2UpLnN1YnNjcmliZSgoW1llLGV0XSk9PntZZSYmZXQ/KHRoaXMucmVwbGFjZWQ9ITAsdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0''@;'; put 'put ''aGlzLmVsLm5hdGl2ZUVsZW1lbnQsImRhdGFncmlkLXJvdy1yZXBsYWNlZCIpKToodGhpcy5yZXBsYWNlZD0hMSx0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiZGF0YWdyaWQtcm93LXJlcGxhY2VkIikpfSkpfWdldCBpdGVtKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X2l0ZW19c2V0IGl0ZW0oYSl7dGhpcy5faXRlbT1hLHRoaXMuaXRlbUNoYW5nZXMubmV4dChhKSx0aGlzLmNsckRnU2VsZWN0YWJsZT10aGlzLl9zZWxlY3RhYmxlfWdldCBjbHJEZ1NlbGVjdGFibGUoKXtyZXR1cm4hdGhpcy5zZWxlY3Rpb24uaXNMb2NrZWQodGhpcy5pdGVtKX1zZXQgY2xy''@;'; put 'put ''RGdTZWxlY3RhYmxlKGEpe3RoaXMuaXRlbSYmdGhpcy5zZWxlY3Rpb24ubG9ja0l0ZW0odGhpcy5pdGVtLCJmYWxzZSI9PT1hfHwhMT09PWEpLHRoaXMuX3NlbGVjdGFibGU9YX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWthLk5vbmU/dGhp''@;'; put 'put ''cy5fc2VsZWN0ZWQ6dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLml0ZW0pfXNldCBzZWxlY3RlZChhKXt0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09a2EuTm9uZT90aGlzLl9zZWxlY3RlZD1hOihhJiZ0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09a2EuTXVsdGk/''@;'; put 'put ''dGhpcy5yYW5nZVNlbGVjdCgpOnRoaXMuc2VsZWN0aW9uLnJhbmdlU3RhcnQ9bnVsbCx0aGlzLnNlbGVjdGlvbi5zZXRTZWxlY3RlZCh0aGlzLml0ZW0sYSkpfWdldCBleHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZC5leHBhbmRlZH1zZXQgZXhwYW5kZWQoYSl7dGhpcy5leHBhbmQuZXhw''@;'; put 'put ''YW5kZWQ9YX1nZXQgY2xyRGdEZXRhaWxPcGVuTGFiZWwoKXtyZXR1cm4gdGhpcy5fZGV0YWlsT3BlbkxhYmVsP3RoaXMuX2RldGFpbE9wZW5MYWJlbDp0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5vcGVufXNldCBjbHJEZ0RldGFpbE9wZW5MYWJlbChhKXt0aGlzLl9kZXRhaWxPcGVuTGFiZWw9''@;'; put 'put ''YX1nZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKCl7cmV0dXJuIHRoaXMuX2RldGFpbENsb3NlTGFiZWw/dGhpcy5fZGV0YWlsQ2xvc2VMYWJlbDp0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZX1zZXQgY2xyRGdEZXRhaWxDbG9zZUxhYmVsKGEpe3RoaXMuX2RldGFpbENsb3NlTGFiZWw9''@;'; put 'put ''YX1nZXQgY2xyRGdSb3dTZWxlY3Rpb25MYWJlbCgpe3JldHVybiB0aGlzLl9yb3dTZWxlY3Rpb25MYWJlbD90aGlzLl9yb3dTZWxlY3Rpb25MYWJlbDp0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zZWxlY3R9c2V0IGNsckRnUm93U2VsZWN0aW9uTGFiZWwoYSl7dGhpcy5fcm93U2VsZWN0aW9u''@;'; put 'put ''TGFiZWw9YX1nZXQgX3ZpZXcoKXtyZXR1cm4gdGhpcy53cmFwcGVkSW5qZWN0b3IuZ2V0KHJZLHRoaXMudmNyKS5yb3dWaWV3fW5nT25Jbml0KCl7dGhpcy53cmFwcGVkSW5qZWN0b3I9bmV3IG1SKHJZLHRoaXMudmNyKSx0aGlzLnNlbGVjdGlvbi5sb2NrSXRlbSh0aGlzLml0ZW0sITE9PT10''@;'; put 'put ''aGlzLmNsckRnU2VsZWN0YWJsZSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5kZ0NlbGxzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57dGhpcy5kZ0NlbGxzLmZvckVhY2goYT0+e2EuX3ZpZXcuZGVzdHJveWVkfHx0aGlzLl9zY3JvbGxhYmxlQ2VsbHMuaW5zZXJ0KGEuX3ZpZXcpfSl9KX1u''@;'; put 'put ''Z0FmdGVyVmlld0luaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmRpc3BsYXlNb2RlLnZpZXcuc3Vic2NyaWJlKGE9Pntmb3IobGV0IGQ9dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmxlbmd0aDtkPjA7ZC0tKXRoaXMuX3Njcm9sbGFibGVDZWxscy5kZXRhY2goKTtmb3IobGV0IGQ9''@;'; put 'put ''dGhpcy5fY2FsY3VsYXRlZENlbGxzLmxlbmd0aDtkPjA7ZC0tKXRoaXMuX2NhbGN1bGF0ZWRDZWxscy5kZXRhY2goKTthPT09JF8uQ0FMQ1VMQVRFPyh0aGlzLmRpc3BsYXlDZWxscz0hMSx0aGlzLmRnQ2VsbHMuZm9yRWFjaChkPT57ZC5fdmlldy5kZXN0cm95ZWR8fHRoaXMuX2NhbGN1bGF0''@;'; put 'put ''ZWRDZWxscy5pbnNlcnQoZC5fdmlldyl9KSk6KHRoaXMuZGlzcGxheUNlbGxzPSEwLHRoaXMuZGdDZWxscy5mb3JFYWNoKGQ9PntkLl92aWV3LmRlc3Ryb3llZHx8dGhpcy5fc2Nyb2xsYWJsZUNlbGxzLmluc2VydChkLl92aWV3KX0pKX0pLHRoaXMuZXhwYW5kLmFuaW1hdGUuc3Vic2NyaWJl''@;'; put 'put ''KCgpPT57dGhpcy5leHBhbmRBbmltYXRpb25UcmlnZ2VyPSF0aGlzLmV4cGFuZEFuaW1hdGlvblRyaWdnZXJ9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXRvZ2dsZShhPSF0aGlzLnNlbGVjdGVkKXthIT09dGhpcy5zZWxl''@;'; put 'put ''Y3RlZCYmKHRoaXMuc2VsZWN0ZWQ9YSx0aGlzLnNlbGVjdGVkQ2hhbmdlZC5lbWl0KGEpKX10b2dnbGVFeHBhbmQoKXt0aGlzLmV4cGFuZC5leHBhbmRhYmxlJiYodGhpcy5leHBhbmRBbmltYXRpb24udXBkYXRlU3RhcnRIZWlnaHQoKSx0aGlzLmV4cGFuZGVkPSF0aGlzLmV4cGFuZGVkLHRo''@;'; put 'put ''aXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9Y2xlYXJSYW5nZXMoYSl7YS5zaGlmdEtleSYmKHRoaXMuZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCksLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94Iikm''@;'; put 'put ''JihhLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGUoITApKSl9c2VsZWN0Um93KGE9IXRoaXMuc2VsZWN0ZWQsZCl7IkxBQkVMIiE9PWQudGFyZ2V0LnRhZ05hbWUmJih0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09dGhpcy5TRUxFQ1RJT05fVFlQRS5TaW5nbGU/dGhpcy5zZWxl''@;'; put 'put ''Y3Rpb24uY3VycmVudFNpbmdsZT10aGlzLml0ZW06dGhpcy50b2dnbGUoYSkpfXJhbmdlU2VsZWN0KCl7Y29uc3QgYT10aGlzLml0ZW1zLmRpc3BsYXllZDtpZighYSlyZXR1cm47Y29uc3QgZD1hLmluZGV4T2YodGhpcy5zZWxlY3Rpb24ucmFuZ2VTdGFydCk7aWYodGhpcy5zZWxlY3Rpb24u''@;'; put 'put ''cmFuZ2VTdGFydCYmdGhpcy5zZWxlY3Rpb24uY3VycmVudC5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0KSYmdGhpcy5zZWxlY3Rpb24uc2hpZnRQcmVzc2VkJiYtMSE9PWQpe2NvbnN0IGg9YS5pbmRleE9mKHRoaXMuaXRlbSksZj1uZXcgU2V0KHRoaXMuc2VsZWN0aW9uLmN1''@;'; put 'put ''cnJlbnQuY29uY2F0KGEuc2xpY2UoTWF0aC5taW4oZCxoKSxNYXRoLm1heChkLGgpKzEpKSk7dGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKSx0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnB1c2goLi4uZil9ZWxzZSB0aGlzLnNlbGVjdGlvbi5yYW5nZVN0YXJ0PXRoaXMuaXRlbX19cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUocV8pLEplKFlfKSxKZShXXyksSmUoTE0pLEplKHRmKSxKZShpWSksSmUoaHMpLEplKGRzKSxKZShOaSksSmUoVXMpLEplKHY0KSxKZSh6cykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpb''@;'; put 'put ''WyJjbHItZGctcm93Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsXzQsNCksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5kZ0NlbGxzPWYpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZhJiYoSG8oaFIsNSksSG8oaVBlLDUpLEhvKG9QZSw1''@;'; put 'put ''LGhzKSxIbyhzUGUsNSxocyksSG8oYVBlLDUsaHMpKSwyJmEpe2xldCBoO2xpKGg9Y2koKSkmJihkLmV4cGFuZEFuaW1hdGlvbj1oLmZpcnN0KSxsaShoPWNpKCkpJiYoZC5kZXRhaWxCdXR0b249aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuX3N0aWNreUNlbGxzPWguZmlyc3QpLGxpKGg9Y2ko''@;'; put 'put ''KSkmJihkLl9zY3JvbGxhYmxlQ2VsbHM9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuX2NhbGN1bGF0ZWRDZWxscz1oLmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJyb3dncm91cCJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiYodXIoImFyaWEtb3ducyIs''@;'; put 'put ''ZC5pZCkscHIoImRhdGFncmlkLXJvdyIsITApKCJkYXRhZ3JpZC1zZWxlY3RlZCIsZC5zZWxlY3RlZCkpfSxpbnB1dHM6e2l0ZW06W2puLk5vbmUsImNsckRnSXRlbSIsIml0ZW0iXSxjbHJEZ1NlbGVjdGFibGU6ImNsckRnU2VsZWN0YWJsZSIsc2VsZWN0ZWQ6W2puLk5vbmUsImNsckRnU2Vs''@;'; put 'put ''ZWN0ZWQiLCJzZWxlY3RlZCJdLGV4cGFuZGVkOltqbi5Ob25lLCJjbHJEZ0V4cGFuZGVkIiwiZXhwYW5kZWQiXSxjbHJEZ0RldGFpbE9wZW5MYWJlbDoiY2xyRGdEZXRhaWxPcGVuTGFiZWwiLGNsckRnRGV0YWlsQ2xvc2VMYWJlbDoiY2xyRGdEZXRhaWxDbG9zZUxhYmVsIixjbHJEZ1Jvd1Nl''@;'; put 'put ''bGVjdGlvbkxhYmVsOiJjbHJEZ1Jvd1NlbGVjdGlvbkxhYmVsIn0sb3V0cHV0czp7c2VsZWN0ZWRDaGFuZ2VkOiJjbHJEZ1NlbGVjdGVkQ2hhbmdlIixleHBhbmRlZENoYW5nZToiY2xyRGdFeHBhbmRlZENoYW5nZSJ9LGZlYXR1cmVzOltaaShbTE0se3Byb3ZpZGU6bzEsdXNlRXhpc3Rpbmc6''@;'; put 'put ''TE19LHtwcm92aWRlOnZNLHVzZUV4aXN0aW5nOkxNfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Y1BlLGRlY2xzOjksdmFyczozLGNvbnN0czpbWyJkZXRhaWwiLCIiXSxbInJvd0NvbnRlbnQiLCIiXSxbImNhbGN1bGF0ZWRDZWxscyIsIiJdLFsic3RpY2t5Q2VsbHMiLCIiXSxbInNjcm9sbGFi''@;'; put 'put ''bGVDZWxscyIsIiJdLFsiZGV0YWlsQnV0dG9uIiwiIl0sWyJjbGFzcyIsImRhdGFncmlkLXJvdy1jbGlja2FibGUiLDMsIm1vdXNlZG93biIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsckV4cGFuZFRyaWdnZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJkYXRhZ3JpZC1yb3ctY2xpY2th''@;'; put 'put ''YmxlIiwzLCJtb3VzZWRvd24iLCJjbGljayJdLFszLCJjbHJFeHBhbmRUcmlnZ2VyIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiXSxbInJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXJvdy1tYXN0ZXIiLCJkYXRhZ3JpZC1yb3ctZmxleCIsMywiaWQiXSxbMSwiZGF0YWdyaWQtcm93LXN0aWNreSJd''@;'; put 'put ''LFsiY2xhc3MiLCJkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlk''@;'; put 'put ''LWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4gZGF0YWdyaWQtY2VsbCIsInJvbGUiLCJncmlkY2VsbCIsNCwibmdJZiJdLFsiY2xhc3MiLCJkYXRhZ3JpZC1kZXRhaWwtY2Fy''@;'; put 'put ''ZXQgZGF0YWdyaWQtZml4ZWQtY29sdW1uIGRhdGFncmlkLWNlbGwiLCJyb2xlIiwiZ3JpZGNlbGwiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUiLDMsIm5nQ2xhc3MiXSxbMSwiZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRh''@;'; put 'put ''dGFncmlkLXNlbGVjdCIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiIsImRhdGFncmlkLWNlbGwiLDMsIm5nQ2xhc3MiXSxbInR5cGUiLCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsImlkIiwiZGlzYWJsZWQiXSxbMSwiY2xyLWNvbnRyb2wt''@;'; put 'put ''bGFiZWwiLCJjbHItY29sLW51bGwiLDMsImNsaWNrIiwiZm9yIl0sWzEsImNsci1zci1vbmx5Il0sWyJ0eXBlIiwicmFkaW8iLCJjbHJSYWRpbyIsIiIsMywibmdNb2RlbENoYW5nZSIsImlkIiwibmFtZSIsInZhbHVlIiwibmdNb2RlbCIsImNoZWNrZWQiLCJkaXNhYmxlZCJdLFsxLCJjbHIt''@;'; put 'put ''Y29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiZm9yIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsicm9sZSIsImdyaWRjZWxsIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxl''@;'; put 'put ''LWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIiwiZGF0YWdyaWQtY2VsbCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b24iLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbHJTbWFsbCIsIiIsNCwibmdJZiJdLFsidHlwZSIsImJ1''@;'; put 'put ''dHRvbiIsMSwiZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b24iLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwxLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb24iXSxbImNsclNtYWxsIiwiIl0sWyJyb2xlIiwiZ3JpZGNlbGwiLDEsImRhdGFncmlkLWRldGFpbC1jYXJl''@;'; put 'put ''dCIsImRhdGFncmlkLWZpeGVkLWNvbHVtbiIsImRhdGFncmlkLWNlbGwiXSxbInR5cGUiLCJidXR0b24iLCJhcmlhLWhhc3BvcHVwIiwiZGlhbG9nIiwxLCJkYXRhZ3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9uIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZS1kb3VibGUiLDEsImRhdGFncmlk''@;'; put 'put ''LWRldGFpbC1jYXJldC1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkobFBlKSxndCgwLGdQZSwzLDIsImRpdiIsNikoMSx2UGUsMiwyLCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDcpKDIsYlBlLDEsMSxudWxsLDgpKDMseVBlLDEsMCwibmctdGVtcGxhdGUiLG51''@;'; put 'put ''bGwsMCxidSkoNSxMUGUsMTYsMTMsIm5nLXRlbXBsYXRlIixudWxsLDEsYnUpLHpsKDcsbnVsbCwyKSksMiZhJiYoUmUoIm5nSWYiLGQuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbk1vZGUpLF9lKCksUmUoIm5nSWYiLCFkLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25Nb2RlJiZkLmV4cGFuZC5leHBh''@;'; put 'put ''bmRhYmxlKSxfZSgpLFJlKCJuZ0lmIiwhZC5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZSYmIWQuZXhwYW5kLmV4cGFuZGFibGUpKX0sZGVwZW5kZW5jaWVzOltKYywkaSx2ZCxHcywkcyxhMSxzMSxXWixZWix1bCxRMCxHSSxfYSx1YSxoUix4ZCxvWV0sZW5jYXBzdWxhdGlvbjoyfSksbH0p''@;'; put 'put ''KCk7dmFyIE9oPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuV0lEVEg9MF09IldJRFRIIixsW2wuSElEREVOPTFdPSJISURERU4iLGx9KE9ofHx7fSk7Y29uc3QgQ3VlPU9iamVjdC5rZXlzKE9oKS5tYXAobD0+T2hbbF0pLmZpbHRlcihsPT5sPT09cGFyc2VJbnQobCwxMCkpO2xldCBiND0oKCk9''@;'; put 'put ''PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5jb2x1bW5zPVtdLHRoaXMuX2NhY2hlPVtdfWdldCBjb2x1bW5TdGF0ZXMoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLm1hcChhPT5hLnZhbHVlKX1nZXQgaGFzSGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uU3RhdGVzLmZpbHRl''@;'; put 'put ''cihhPT5hLmhpZGVhYmxlKS5sZW5ndGg+MH1jYWNoZSgpe3RoaXMuX2NhY2hlPXRoaXMuY29sdW1ucy5tYXAoYT0+e2NvbnN0IGQ9ey4uLmEudmFsdWV9O3JldHVybiBkZWxldGUgZC5jaGFuZ2VzLGR9KX1oYXNDYWNoZSgpe3JldHVybiEhdGhpcy5fY2FjaGUubGVuZ3RofXJlc2V0VG9MYXN0''@;'; put 'put ''Q2FjaGUoKXt0aGlzLl9jYWNoZS5mb3JFYWNoKChhLGQpPT57dGhpcy5jb2x1bW5zW2RdLm5leHQoey4uLmEsY2hhbmdlczpDdWV9KX0pLHRoaXMuX2NhY2hlPVtdfWVtaXRTdGF0ZUNoYW5nZUF0KGEsZCl7dGhpcy5jb2x1bW5zW2FdJiZ0aGlzLmVtaXRTdGF0ZUNoYW5nZSh0aGlzLmNvbHVt''@;'; put 'put ''bnNbYV0sZCl9ZW1pdFN0YXRlQ2hhbmdlKGEsZCl7YS5uZXh0KHsuLi5hLnZhbHVlLC4uLmR9KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksU3VlPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5maWx0ZXJzPWEsdGhpcy5zb3J0PWQsdGhpcy5wYWdlPWgsdGhpcy5kZWJvdW5jZXI9Zix0aGlzLmNoYW5nZT10aGlzLmRlYm91bmNlci5jaGFuZ2UucGlwZShicigoKT0+dGhpcy5zdGF0ZSkpfWdldCBzdGF0ZSgpe2NvbnN0''@;'; put 'put ''IGE9e307dGhpcy5wYWdlLnNpemU+MCYmKGEucGFnZT17ZnJvbTp0aGlzLnBhZ2UuZmlyc3RJdGVtLHRvOnRoaXMucGFnZS5sYXN0SXRlbSxzaXplOnRoaXMucGFnZS5zaXplLGN1cnJlbnQ6dGhpcy5wYWdlLmN1cnJlbnR9KSx0aGlzLnNvcnQuY29tcGFyYXRvciYmKGEuc29ydD10aGlzLnNv''@;'; put 'put ''cnQuY29tcGFyYXRvciBpbnN0YW5jZW9mIFRSP3tieTp0aGlzLnNvcnQuY29tcGFyYXRvci5wcm9wLHJldmVyc2U6dGhpcy5zb3J0LnJldmVyc2V9OntieTp0aGlzLnNvcnQuY29tcGFyYXRvcixyZXZlcnNlOnRoaXMuc29ydC5yZXZlcnNlfSk7Y29uc3QgZD10aGlzLmZpbHRlcnMuZ2V0QWN0''@;'; put 'put ''aXZlRmlsdGVycygpO2lmKGQubGVuZ3RoPjApe2EuZmlsdGVycz1bXTtmb3IoY29uc3QgaCBvZiBkKWEuZmlsdGVycy5wdXNoKGguc3RhdGU/aC5zdGF0ZTpoKX1yZXR1cm4gYX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IobTQpLGNyKGtSKSxj''@;'; put 'put ''cih5bSksY3IoSU0pKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSxzWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuem9uZT1hLHRoaXMubGlzdGVuZXJzQWRkZWQ9ITEsdGhpcy5kZXN0cm95JD1uZXcgdG4sdGhpcy5fYWN0''@;'; put 'put ''aXZlQ2VsbD1udWxsLHRoaXMuY29uZmlnPXtrZXlHcmlkUm93czoiW3JvbGU9cm93XTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyKSIsa2V5R3JpZENlbGxzOiJbcm9sZT1ncmlkY2VsbF06bm90KC5kYXRhZ3JpZC1oaWRkZW4tY29sdW1uKTpub3QoLmRhdGFncmlkLXBsYWNlaG9sZGVyLWNv''@;'; put 'put ''bnRlbnQpLCBbcm9sZT1jb2x1bW5oZWFkZXJdOm5vdCguZGF0YWdyaWQtaGlkZGVuLWNvbHVtbik6bm90KC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250ZW50KSwgLmRhdGFncmlkLWRldGFpbC1jYXJldCIsa2V5R3JpZDoiW3JvbGU9Z3JpZF0ifX1nZXQgZ3JpZCgpe3JldHVybiB0aGlzLmhv''@;'; put 'put ''c3Q/LnF1ZXJ5U2VsZWN0b3IodGhpcy5jb25maWcua2V5R3JpZCl9Z2V0IHJvd3MoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRSb3dzKX1nZXQgY2VsbHMoKXtyZXR1cm4gdGhpcy5ob3N0Py5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29u''@;'; put 'put ''ZmlnLmtleUdyaWRDZWxscyl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3kkLm5leHQoKSx0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCl9YWRkTGlzdGVuZXJzKCl7dGhpcy5saXN0ZW5lcnNBZGRlZHx8KHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3dkKHRoaXMuZ3JpZCwibW91''@;'; put 'put ''c2Vkb3duIikucGlwZShUMCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGE9PntpZigxPT09YS5idXR0b25zJiYhYS5jdHJsS2V5KXtjb25zdCBkPXRoaXMuY2VsbHM/QXJyYXkuZnJvbSh0aGlzLmNlbGxzKS5maW5kKGg9Pmg9PT1hLnRhcmdldHx8aD09PWEudGFyZ2V0LmNsb3Nlc3QodGhp''@;'; put 'put ''cy5jb25maWcua2V5R3JpZENlbGxzKSk6bnVsbDtkJiZ0aGlzLnNldEFjdGl2ZUNlbGwoZCl9fSksd2QodGhpcy5ncmlkLCJ3aGVlbCIpLnBpcGUoVDAodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKT0+e3RoaXMucmVtb3ZlQWN0aXZlQ2VsbCgpfSksd2QodGhpcy5ncmlkLCJrZXlkb3du''@;'; put 'put ''IikucGlwZShUMCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGE9PntpZigoIWEudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZHJhZy1oYW5kbGUiKXx8IkFycm93TGVmdCIhPT1hLmNvZGUmJiJBcnJvd1JpZ2h0IiE9PWEuY29kZSkmJigiQXJyb3dVcCI9PT1hLmNvZGV8fCJBcnJvd0Rv''@;'; put 'put ''d24iPT09YS5jb2RlfHwiQXJyb3dMZWZ0Ij09PWEuY29kZXx8IkFycm93UmlnaHQiPT09YS5jb2RlfHwiRW5kIj09PWEuY29kZXx8IkhvbWUiPT09YS5jb2RlfHwiUGFnZVVwIj09PWEuY29kZXx8IlBhZ2VEb3duIj09PWEuY29kZSkpe2NvbnN0e3g6ZCx5Omh9PXRoaXMuZ2V0TmV4dEl0ZW1D''@;'; put 'put ''b29yZGluYXRlKGEpLGY9dGhpcy5yb3dzP0FycmF5LmZyb20odGhpcy5yb3dzW2hdLnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb25maWcua2V5R3JpZENlbGxzKSlbZF06bnVsbDtmJiZ0aGlzLnNldEFjdGl2ZUNlbGwoZiksYS5wcmV2ZW50RGVmYXVsdCgpfX0pfSksdGhpcy5saXN0ZW5lcnNB''@;'; put 'put ''ZGRlZD0hMCl9aW5pdGlhbGl6ZUtleUdyaWQoYSl7dGhpcy5ob3N0PWEsdGhpcy5hZGRMaXN0ZW5lcnMoKSx0aGlzLnJlc2V0S2V5R3JpZCgpfXJlc2V0S2V5R3JpZCgpe3RoaXMuY2VsbHM/LmZvckVhY2goZD0+ZC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSksKHRoaXMuY2VsbHM/''@;'; put 'put ''dGhpcy5jZWxsc1swXTpudWxsKT8uc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKX1yZW1vdmVBY3RpdmVDZWxsKCl7dGhpcy5fYWN0aXZlQ2VsbD1udWxsfWdldEFjdGl2ZUNlbGwoKXtyZXR1cm4gdGhpcy5fYWN0aXZlQ2VsbH1zZXRBY3RpdmVDZWxsKGEpe2NvbnN0IGQ9dGhpcy5jZWxs''@;'; put 'put ''cz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQodj0+IjAiPT09di5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikpOm51bGw7ZCYmZC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxhLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik7Y29uc3QgaD1mdW5jdGlvbiBhVmUobCl7Y29u''@;'; put 'put ''c3QgYz1bImFbaHJlZl0iLCJhcmVhW2hyZWZdIiwiaW5wdXQ6bm90KFtkaXNhYmxlZF0pIiwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKSIsInNlbGVjdDpub3QoW2Rpc2FibGVkXSkiLCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSkiLCJpZnJhbWUiLCJvYmplY3QiLCJlbWJlZCIsIipbdGFiaW5k''@;'; put 'put ''ZXhdIiwiKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0iLCJbcm9sZT1idXR0b25dOm5vdChbZGlzYWJsZWRdKSJdLmpvaW4oIiwiKTtyZXR1cm4gQXJyYXkuZnJvbShsLnF1ZXJ5U2VsZWN0b3JBbGwoYykpfShhKSxmPSJjb2x1bW5oZWFkZXIiIT09YS5nZXRBdHRyaWJ1dGUoInJvbGUiKSYmaFsw''@;'; put 'put ''XT9oWzBdOmE7Zi5mb2N1cygpLHRoaXMuX2FjdGl2ZUNlbGw9Zn1nZXROZXh0SXRlbUNvb3JkaW5hdGUoYSl7bGV0IGQ9dGhpcy5jZWxscz9BcnJheS5mcm9tKHRoaXMuY2VsbHMpLmZpbmQoT2U9PiIwIj09PU9lLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6bnVsbDsiVGFiIj09PWEuY29k''@;'; put 'put ''ZSYmKGQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7Y29uc3QgaD10aGlzLnJvd3MmJmQ/QXJyYXkuZnJvbSh0aGlzLnJvd3MpLmZpbmQoT2U9Pk9lLmNvbnRhaW5zKGQpKTpudWxsLGY9dGhpcy5yb3dzP3RoaXMucm93cy5sZW5ndGgtMTowLHY9dGhpcy5jZWxscz9NYXRoLmZsb29yKHRoaXMu''@;'; put 'put ''Y2VsbHMubGVuZ3RoL3RoaXMucm93cy5sZW5ndGgtMSk6MDtsZXQgUz1oJiZkP0FycmF5LmZyb20oaC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuY29uZmlnLmtleUdyaWRDZWxscykpLmluZGV4T2YoZCk6MCxWPWgmJmQmJnRoaXMucm93cz9BcnJheS5mcm9tKHRoaXMucm93cykuaW5kZXhPZiho''@;'; put 'put ''KTowO2NvbnN0IFE9dGhpcy5ob3N0LmRpcixkZT0icnRsIj09PVE/IkFycm93UmlnaHQiOiJBcnJvd0xlZnQiLHBlPSJydGwiPT09UT8iQXJyb3dMZWZ0IjoiQXJyb3dSaWdodCIsQ2U9TWF0aC5mbG9vcih0aGlzLmhvc3Q/LnF1ZXJ5U2VsZWN0b3IoIi5kYXRhZ3JpZCIpLmNsaWVudEhlaWdo''@;'; put 'put ''dC90aGlzLnJvd3NbMF0uY2xpZW50SGVpZ2h0KS0xfHwwO3JldHVybiJBcnJvd1VwIj09PWEuY29kZSYmMCE9PVY/Vi09MToiQXJyb3dEb3duIj09PWEuY29kZSYmVjxmP1YrPTE6YS5jb2RlPT09ZGUmJjAhPT1TP1MtPTE6YS5jb2RlPT09cGUmJlM8dj9TKz0xOiJFbmQiPT09YS5jb2RlPyhT''@;'; put 'put ''PXYsYS5jdHJsS2V5JiYoVj1mKSk6IkhvbWUiPT09YS5jb2RlPyhTPTAsYS5jdHJsS2V5JiYoVj0wKSk6IlBhZ2VVcCI9PT1hLmNvZGU/Vj1WLUNlPjA/Vi1DZSsxOjE6IlBhZ2VEb3duIj09PWEuY29kZSYmKFY9VitDZTxmP1YrQ2U6Zikse3g6Uyx5OlZ9fX1yZXR1cm4gbC5cdTAyNzVmYWM9''@;'; put 'put ''ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihNbykpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IEtfPSJkYXRhZ3JpZC1maXhlZC13aWR0aCIsSVI9ImRhdGFncmlkLWhpZGRlbi1jb2x1bW4iO2xldCBTbT0oKCk9Pntj''@;'; put 'put ''bGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLmVsPWEsdGhpcy5yZW5kZXJlcj1kLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChoLmZpbHRlclJlbmRlclN0ZXBzKG5mLkNMRUFSX1dJRFRIUykuc3Vic2NyaWJlKCgpPT50aGlzLmNsZWFyV2lkdGgo''@;'; put 'put ''KSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKSx0aGlzLnN0YXRlU3Vic2NyaXB0aW9uJiZ0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9cmVzZXRTdGF0ZShhKXthLmNoYW5nZXM9Q3VlLHRoaXMuc2V0V2lk''@;'; put 'put ''dGgoYSksdGhpcy5zZXRIaWRkZW4oYSl9c2V0V2lkdGgoYSl7YS5zdHJpY3RXaWR0aD90aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxLXyk6dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsS18pLHRoaXMucmVuZGVyZXIu''@;'; put 'put ''c2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYS53aWR0aCsicHgiKX1zZXRIaWRkZW4oYSl7YS5oaWRkZW4/dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsSVIpOnRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVF''@;'; put 'put ''bGVtZW50LElSKX1jbGVhcldpZHRoKCl7dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsS18pLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsbnVsbCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihh''@;'; put 'put ''KXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSxKZShkcyksSmUoRTgpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLWNlbGwiXV19KSxsfSkoKSxNbT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuY29sdW1uc1NlcnZpY2U9YSx0aGlzLnN1YnNj''@;'; put 'put ''cmlwdGlvbnM9W119bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXRDZWxsc1N0YXRlKCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5jZWxscy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+e3RoaXMuc2V0Q2VsbHNTdGF0ZSgpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRp''@;'; put 'put ''b25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1zZXRDZWxsc1N0YXRlKCl7dGhpcy5jZWxscy5sZW5ndGg9PT10aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMubGVuZ3RoJiZ0aGlzLmNlbGxzLmZvckVhY2goKGEsZCk9Pnt0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNbZF0mJmEu''@;'; put 'put ''cmVzZXRTdGF0ZSh0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNbZF0udmFsdWUpfSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGI0KSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1yb3ciXSxbImNsci1k''@;'; put 'put ''Zy1yb3ctZGV0YWlsIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsU20sNCksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5jZWxscz1mKX19fSksbH0pKCksazg9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWLFEsZGUscGUsQ2Us''@;'; put 'put ''T2UsWWUsZXQsZHQsaHQpe3RoaXMub3JnYW5pemVyPWEsdGhpcy5pdGVtcz1kLHRoaXMuZXhwYW5kYWJsZVJvd3M9aCx0aGlzLnNlbGVjdGlvbj1mLHRoaXMucm93QWN0aW9uU2VydmljZT12LHRoaXMuc3RhdGVQcm92aWRlcj1TLHRoaXMuZGlzcGxheU1vZGU9Vix0aGlzLnJlbmRlcmVyPVEs''@;'; put 'put ''dGhpcy5kZXRhaWxTZXJ2aWNlPWRlLHRoaXMuZG9jdW1lbnQ9cGUsdGhpcy5lbD1DZSx0aGlzLnBhZ2U9T2UsdGhpcy5jb21tb25TdHJpbmdzPVllLHRoaXMuY29sdW1uc1NlcnZpY2U9ZXQsdGhpcy5rZXlOYXZpZ2F0aW9uPWR0LHRoaXMuem9uZT1odCx0aGlzLmNsckRnU2luZ2xlU2VsZWN0''@;'; put 'put ''aW9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLnNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbCx0aGlzLmNsckRnU2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGV0YWlsRXhw''@;'; put 'put ''YW5kYWJsZUFyaWFMYWJlbD10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzPSExLHRoaXMuc2VsZWN0ZWRDaGFuZ2VkPW5ldyBEcighMSksdGhpcy5zaW5nbGVTZWxlY3RlZENoYW5nZWQ9bmV3IERyKCEx''@;'; put 'put ''KSx0aGlzLnJlZnJlc2g9bmV3IERyKCExKSx0aGlzLlNFTEVDVElPTl9UWVBFPWthLHRoaXMuX3N1YnNjcmlwdGlvbnM9W107Y29uc3QgTXQ9dHUoKTt0aGlzLnNlbGVjdEFsbElkPSJjbHItZGctc2VsZWN0LWFsbC0iK010LHRoaXMuZGV0YWlsU2VydmljZS5pZD1NdH1nZXQgbG9hZGluZygp''@;'; put 'put ''e3JldHVybiB0aGlzLml0ZW1zLmxvYWRpbmd9c2V0IGxvYWRpbmcoYSl7dGhpcy5pdGVtcy5sb2FkaW5nPWF9c2V0IHNlbGVjdGVkKGEpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9YT9rYS5NdWx0aTprYS5Ob25lLHRoaXMuc2VsZWN0aW9uLnVwZGF0ZUN1cnJlbnQoYSwhMSl9c2V0''@;'; put 'put ''IHNpbmdsZVNlbGVjdGVkKGEpe3RoaXMuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9a2EuU2luZ2xlLGE/dGhpcy5zZWxlY3Rpb24uY3VycmVudFNpbmdsZT1hOnRoaXMuc2VsZWN0aW9uLmN1cnJlbnRTaW5nbGUmJih0aGlzLnNlbGVjdGlvbi5jdXJyZW50U2luZ2xlPW51bGwpfXNldCBjbHJE''@;'; put 'put ''Z1ByZXNlcnZlU2VsZWN0aW9uKGEpe3RoaXMuc2VsZWN0aW9uLnByZXNlcnZlU2VsZWN0aW9uPWF9c2V0IHJvd1NlbGVjdGlvbk1vZGUoYSl7dGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uTW9kZT1hfXNldCB0cmFja0J5KGEpe3RoaXMuaXRlbXMudHJhY2tCeT1hfWdldCBhbGxTZWxlY3Rl''@;'; put 'put ''ZCgpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc0FsbFNlbGVjdGVkKCl9c2V0IGFsbFNlbGVjdGVkKGEpe3RoaXMuc2VsZWN0aW9uLnRvZ2dsZUFsbCgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuaXRlbXMuc21hcnR8fCh0aGlzLml0ZW1zLmFsbD10aGlzLnJvd3MubWFwKGQ9PmQuaXRl''@;'; put 'put ''bSkpO2NvbnN0IGE9dGhpcy5yb3dzLmNoYW5nZXMucGlwZShKMChkPT5zTShPbyhkLm1hcChoPT5oLml0ZW0pKSxUUyhkLm1hcChoPT5oLml0ZW1DaGFuZ2VzKSkucGlwZShoOCgwKSkpKSk7dGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKGEuc3Vic2NyaWJlKGQ9Pnt0aGlzLml0ZW1zLnNtYXJ0''@;'; put 'put ''fHwodGhpcy5pdGVtcy5hbGw9ZCl9KSx0aGlzLnJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pntmb3IobGV0IGg9dGhpcy5fZGlzcGxheWVkUm93cy5sZW5ndGgtMTtoPj0wO2gtLSl0aGlzLl9kaXNwbGF5ZWRSb3dzLmdldChoKS5kZXN0cm95ZWQmJnRoaXMuX2Rpc3BsYXllZFJvd3MucmVt''@;'; put 'put ''b3ZlKGgpO2lmKHRoaXMucm93cy5mb3JFYWNoKGg9Pnt0aGlzLl9kaXNwbGF5ZWRSb3dzLmluc2VydChoLl92aWV3KX0pLHRoaXMuZGV0YWlsU2VydmljZS5zdGF0ZSYmdGhpcy5kZXRhaWxTZXJ2aWNlLmlzT3Blbil7Y29uc3QgaD10aGlzLnJvd3MuZmluZChmPT50aGlzLml0ZW1zLnRyYWNr''@;'; put 'put ''QnkoZi5pdGVtKT09PXRoaXMuaXRlbXMudHJhY2tCeSh0aGlzLmRldGFpbFNlcnZpY2Uuc3RhdGUpKTtoP3RoaXMuZGV0YWlsU2VydmljZS5vcGVuKGguaXRlbSxoLmRldGFpbEJ1dHRvbi5uYXRpdmVFbGVtZW50KTooIXRoaXMuaGFzVmlydHVhbFNjcm9sbGVyfHwhaCkmJnRoaXMuZGV0YWls''@;'; put 'put ''U2VydmljZS5jbG9zZSgpfWNvbnN0IGQ9dGhpcy5rZXlOYXZpZ2F0aW9uLmdldEFjdGl2ZUNlbGwoKTtkJiZ0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntzZXRUaW1lb3V0KCgpPT50aGlzLmtleU5hdmlnYXRpb24uc2V0QWN0aXZlQ2VsbChkKSl9KX0pKX1uZ0FmdGVyVmlld0lu''@;'; put 'put ''aXQoKXt0aGlzLmtleU5hdmlnYXRpb24uaW5pdGlhbGl6ZUtleUdyaWQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnJlZnJlc2guZW1pdCh0aGlzLnN0YXRlUHJvdmlkZXIuc3RhdGUpLHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXRlUHJvdmlkZXIuY2hhbmdlLnN1YnNj''@;'; put 'put ''cmliZShhPT50aGlzLnJlZnJlc2guZW1pdChhKSksdGhpcy5zZWxlY3Rpb24uY2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWthLlNpbmdsZT90aGlzLnNpbmdsZVNlbGVjdGVkQ2hhbmdlZC5lbWl0KGEpOnRoaXMuc2VsZWN0aW9uLnNlbGVjdGlv''@;'; put 'put ''blR5cGU9PT1rYS5NdWx0aSYmdGhpcy5zZWxlY3RlZENoYW5nZWQuZW1pdChhKX0pLHRoaXMucGFnZS5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5rZXlOYXZpZ2F0aW9uLnJlc2V0S2V5R3JpZCgpLHRoaXMuY2xyRGdEaXNhYmxlUGFnZUZvY3VzfHx0aGlzLmRhdGFncmlkVGFibGUubmF0''@;'; put 'put ''aXZlRWxlbWVudC5mb2N1cygpfSksdGhpcy5kaXNwbGF5TW9kZS52aWV3LnN1YnNjcmliZShhPT57Zm9yKGxldCBkPXRoaXMuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zLmxlbmd0aDtkPjA7ZC0tKXRoaXMuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zLmRldGFjaCgpO2ZvcihsZXQgZD10aGlz''@;'; put 'put ''Ll9wcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMubGVuZ3RoO2Q+MDtkLS0pdGhpcy5fcHJvamVjdGVkQ2FsY3VsYXRpb25Db2x1bW5zLmRldGFjaCgpO2ZvcihsZXQgZD10aGlzLl9jYWxjdWxhdGlvblJvd3MubGVuZ3RoO2Q+MDtkLS0pdGhpcy5fY2FsY3VsYXRpb25Sb3dzLmRldGFjaCgp''@;'; put 'put ''O2ZvcihsZXQgZD10aGlzLl9kaXNwbGF5ZWRSb3dzLmxlbmd0aDtkPjA7ZC0tKXRoaXMuX2Rpc3BsYXllZFJvd3MuZGV0YWNoKCk7YT09PSRfLkRJU1BMQVk/KHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSIp''@;'; put 'put ''LHRoaXMuY29sdW1ucy5mb3JFYWNoKGQ9Pnt0aGlzLl9wcm9qZWN0ZWREaXNwbGF5Q29sdW1ucy5pbnNlcnQoZC5fdmlldyl9KSx0aGlzLnJvd3MuZm9yRWFjaChkPT57dGhpcy5fZGlzcGxheWVkUm93cy5pbnNlcnQoZC5fdmlldyl9KSk6KHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5l''@;'; put 'put ''bC5uYXRpdmVFbGVtZW50LCJkYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSIpLHRoaXMuY29sdW1ucy5mb3JFYWNoKGQ9Pnt0aGlzLl9wcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMuaW5zZXJ0KGQuX3ZpZXcpfSksdGhpcy5yb3dzLmZvckVhY2goZD0+e3RoaXMuX2NhbGN1bGF0aW9uUm93cy5p''@;'; put 'put ''bnNlcnQoZC5fdmlldyl9KSl9KSksdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHdkKHRoaXMuZG9jdW1lbnQuYm9keSwia2V5ZG93biIpLnN1YnNjcmliZShhPT57IlNoaWZ0Ij09PWEua2V5JiYodGhpcy5zZWxlY3Rpb24uc2hpZnRQ''@;'; put 'put ''cmVzc2VkPSEwKX0pLHdkKHRoaXMuZG9jdW1lbnQuYm9keSwia2V5dXAiKS5zdWJzY3JpYmUoYT0+eyJTaGlmdCI9PT1hLmtleSYmKHRoaXMuc2VsZWN0aW9uLnNoaWZ0UHJlc3NlZD0hMSl9KSl9KX1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vi''@;'; put 'put ''c2NyaWJlKCkpfXJlc2l6ZSgpe3RoaXMub3JnYW5pemVyLnJlc2l6ZSgpfWRhdGFDaGFuZ2VkKCl7dGhpcy5pdGVtcy5yZWZyZXNoKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKEU4KSxKZSh2NCksSmUoV18pLEplKHFfKSxKZShZXyksSmUo''@;'; put 'put ''U3VlKSxKZShpWSksSmUoZHMpLEplKHRmKSxKZSh6cyksSmUoTmkpLEplKHltKSxKZShVcyksSmUoYjQpLEplKHNZKSxKZShNbykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGF0YWdyaWQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEm''@;'; put 'put ''YSYmKHRzKGgsR18sNSksdHMoaCxKWiw1KSx0cyhoLFQ4LDQpLHRzKGgsQ20sNCkpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQuaXRlcmF0b3I9Zi5maXJzdCksbGkoZj1jaSgpKSYmKGQucGxhY2Vob2xkZXI9Zi5maXJzdCksbGkoZj1jaSgpKSYmKGQuY29sdW1ucz1mKSxsaShmPWNpKCkp''@;'; put 'put ''JiYoZC5yb3dzPWYpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZhJiYoSG8oT1BlLDUsTmkpLEhvKFBQZSw1LE5pKSxIbyhGUGUsNSxocyksSG8oTlBlLDUsaHMpLEhvKEhQZSw1LGhzKSxIbyhWUGUsNSxocyksSG8oQlBlLDUsaHMpKSwyJmEpe2xldCBoO2xpKGg9Y2koKSkmJihk''@;'; put 'put ''LmRhdGFncmlkPWguZmlyc3QpLGxpKGg9Y2koKSkmJihkLmRhdGFncmlkVGFibGU9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuc2Nyb2xsYWJsZUNvbHVtbnM9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuX3Byb2plY3RlZERpc3BsYXlDb2x1bW5zPWguZmlyc3QpLGxpKGg9Y2koKSkmJihkLl9w''@;'; put 'put ''cm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnM9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuX2Rpc3BsYXllZFJvd3M9aC5maXJzdCksbGkoaD1jaSgpKSYmKGQuX2NhbGN1bGF0aW9uUm93cz1oLmZpcnN0KX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigi''@;'; put 'put ''ZGF0YWdyaWQtaG9zdCIsITApKCJkYXRhZ3JpZC1kZXRhaWwtb3BlbiIsZC5kZXRhaWxTZXJ2aWNlLmlzT3Blbil9LGlucHV0czp7bG9hZGluZ01vcmVJdGVtczpbam4uTm9uZSwiY2xyTG9hZGluZ01vcmVJdGVtcyIsImxvYWRpbmdNb3JlSXRlbXMiXSxjbHJEZ1NpbmdsZVNlbGVjdGlvbkFy''@;'; put 'put ''aWFMYWJlbDoiY2xyRGdTaW5nbGVTZWxlY3Rpb25BcmlhTGFiZWwiLGNsckRnU2luZ2xlQWN0aW9uYWJsZUFyaWFMYWJlbDoiY2xyRGdTaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsIixjbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsOiJjbHJEZXRhaWxFeHBhbmRhYmxlQXJpYUxhYmVsIixj''@;'; put 'put ''bHJEZ0Rpc2FibGVQYWdlRm9jdXM6ImNsckRnRGlzYWJsZVBhZ2VGb2N1cyIsbG9hZGluZzpbam4uTm9uZSwiY2xyRGdMb2FkaW5nIiwibG9hZGluZyJdLHNlbGVjdGVkOltqbi5Ob25lLCJjbHJEZ1NlbGVjdGVkIiwic2VsZWN0ZWQiXSxzaW5nbGVTZWxlY3RlZDpbam4uTm9uZSwiY2xyRGdT''@;'; put 'put ''aW5nbGVTZWxlY3RlZCIsInNpbmdsZVNlbGVjdGVkIl0sY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbjoiY2xyRGdQcmVzZXJ2ZVNlbGVjdGlvbiIscm93U2VsZWN0aW9uTW9kZTpbam4uTm9uZSwiY2xyRGdSb3dTZWxlY3Rpb24iLCJyb3dTZWxlY3Rpb25Nb2RlIl0sdHJhY2tCeTpbam4uTm9uZSwi''@;'; put 'put ''Y2xyRGdJdGVtc1RyYWNrQnkiLCJ0cmFja0J5Il19LG91dHB1dHM6e3NlbGVjdGVkQ2hhbmdlZDoiY2xyRGdTZWxlY3RlZENoYW5nZSIsc2luZ2xlU2VsZWN0ZWRDaGFuZ2VkOiJjbHJEZ1NpbmdsZVNlbGVjdGVkQ2hhbmdlIixyZWZyZXNoOiJjbHJEZ1JlZnJlc2gifSxmZWF0dXJlczpbWmko''@;'; put 'put ''W3FfLGtSLG00LHltLHY0LEU4LFlfLFdfLElNLHRmLFN1ZSxYWixiNCxpWSxzWV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6elBlLGRlY2xzOjM1LHZhcnM6OSxjb25zdHM6W1siZGF0YWdyaWQiLCIiXSxbImRhdGFncmlkVGFibGUiLCIiXSxbInByb2plY3RlZERpc3BsYXlDb2x1bW5zIiwiIl0s''@;'; put 'put ''WyJkaXNwbGF5ZWRSb3dzIiwiIl0sWyJwcm9qZWN0ZWRDYWxjdWxhdGlvbkNvbHVtbnMiLCIiXSxbImNhbGN1bGF0aW9uUm93cyIsIiJdLFsxLCJkYXRhZ3JpZC1vdXRlci13cmFwcGVyIl0sWzEsImRhdGFncmlkLWlubmVyLXdyYXBwZXIiXSxbMSwiZGF0YWdyaWQiXSxbMSwiZGF0YWdyaWQt''@;'; put 'put ''dGFibGUtd3JhcHBlciJdLFsicm9sZSIsImdyaWQiLCJ0YWJpbmRleCIsIi0xIiwxLCJkYXRhZ3JpZC10YWJsZSJdLFsicm9sZSIsInJvd2dyb3VwIiwxLCJkYXRhZ3JpZC1oZWFkZXIiXSxbInJvbGUiLCJyb3ciLDEsImRhdGFncmlkLXJvdyJdLFsxLCJkYXRhZ3JpZC1yb3ctbWFzdGVyIiwi''@;'; put 'put ''ZGF0YWdyaWQtcm93LWZsZXgiXSxbMSwiZGF0YWdyaWQtcm93LXN0aWNreSJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNsYXNzIiwiZGF0YWdyaWQtY29sdW1uIGRhdGFncmlkLXNlbGVjdCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiLDQsIm5nSWYiXSxbInJv''@;'; put 'put ''bGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImRhdGFncmlkLWNvbHVtbiBkYXRhZ3JpZC1zZWxlY3QgZGF0YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtcm93LWFjdGlvbnMgZGF0''@;'; put 'put ''YWdyaWQtZml4ZWQtY29sdW1uIiw0LCJuZ0lmIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwiY2xhc3MiLCJkYXRhZ3JpZC1jb2x1bW4gZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCBkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtcm93LXNjcm9sbGFibGUi''@;'; put 'put ''XSxbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsImRhdGFncmlkLXJvd3MiXSxbImNsYXNzIiwiZGF0YWdyaWQtbG9hZGluZy1tb3JlLWl0ZW1zLXJvdyIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLXNwaW5uZXIiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtY2FsY3Vs''@;'; put 'put ''YXRpb24tdGFibGUiXSxbMSwiZGF0YWdyaWQtY2FsY3VsYXRpb24taGVhZGVyIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iLDMsImtleWRvd24uc3BhY2UiXSxbImNsYXNzIiwiY2xy''@;'; put 'put ''LWNoZWNrYm94LXdyYXBwZXIiLDQsIm5nSWYiXSxbMSwiZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvciJdLFsxLCJjbHItY2hlY2tib3gtd3JhcHBlciJdLFsidHlwZSIsImNoZWNrYm94IiwidGFiaW5kZXgiLCItMSIsMywibmdNb2RlbENoYW5nZSIsImlkIiwibmdNb2RlbCJdLFsxLCJjbHIt''@;'; put 'put ''Y29udHJvbC1sYWJlbCIsImNsci1jb2wtbnVsbCIsMywiZm9yIl0sWzEsImNsci1zci1vbmx5Il0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1zZWxlY3QiLCJkYXRhZ3JpZC1maXhlZC1jb2x1bW4iXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIi''@;'; put 'put ''LDEsImRhdGFncmlkLWNvbHVtbiIsImRhdGFncmlkLXJvdy1hY3Rpb25zIiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJkYXRhZ3JpZC1jb2x1bW4iLCJkYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IiwiZGF0YWdyaWQtZml4ZWQtY29sdW1uIl0s''@;'; put 'put ''WzEsImRhdGFncmlkLWxvYWRpbmctbW9yZS1pdGVtcy1yb3ciXSxbMSwiZGF0YWdyaWQtbG9hZGluZy1tb3JlLWl0ZW1zLWNlbGwiXSxbMywiY2xyTWVkaXVtIl0sWzEsImRhdGFncmlkLXNwaW5uZXIiXSxbImNsck1lZGl1bSIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhp''@;'; put 'put ''KGpQZSksSXIoMCksZ2UoMSwiZGl2Iiw2KSgyLCJkaXYiLDcpKDMsImRpdiIsOCwwKSg1LCJkaXYiLDkpKDYsImRpdiIsMTAsMSkoOCwiZGl2IiwxMSkoOSwiZGl2IiwxMikoMTAsImRpdiIsMTMpKDExLCJkaXYiLDE0KSxndCgxMixaUGUsMywxLCJkaXYiLDE1KSgxMyxZUGUsNCwxLCJkaXYi''@;'; put 'put ''LDE2KSgxNCxXUGUsNCwxLCJkaXYiLDE3KSgxNSxHUGUsNCwxLCJkaXYiLDE4KSxtZSgpLGdlKDE2LCJkaXYiLDE5KSx6bCgxNyxudWxsLDIpLG1lKCkoKSgpKCksZ2UoMTksImRpdiIsMjApLGd0KDIwLCRQZSw1LDIsImNsci1kZy1yb3ciLDIxKSx6bCgyMSxudWxsLDMpLGd0KDIzLHFQZSw1''@;'; put 'put ''LDIsImNsci1kZy1yb3ciLDIxKSxJcigyNCwxKSxndCgyNSxLUGUsMSwwLCJjbHItZGctcGxhY2Vob2xkZXIiLDIyKSxtZSgpKCkoKSgpLElyKDI2LDIpLGd0KDI3LFhQZSwzLDAsImRpdiIsMjMpLG1lKCksSXIoMjgsMyksbWUoKSxnZSgyOSwiZGl2IiwyNCkoMzAsImRpdiIsMjUpLHpsKDMx''@;'; put 'put ''LG51bGwsNCksbWUoKSx6bCgzMyxudWxsLDUpLG1lKCkpLDImYSYmKF9lKDMpLHVyKCJhcmlhLWhpZGRlbiIsISFkLmRldGFpbFNlcnZpY2UuaXNPcGVufHxudWxsKSxfZSg5KSxSZSgibmdJZiIsZC5zZWxlY3Rpb24uc2VsZWN0aW9uVHlwZT09PWQuU0VMRUNUSU9OX1RZUEUuTXVsdGkpLF9l''@;'; put 'put ''KCksUmUoIm5nSWYiLGQuc2VsZWN0aW9uLnNlbGVjdGlvblR5cGU9PT1kLlNFTEVDVElPTl9UWVBFLlNpbmdsZSksX2UoKSxSZSgibmdJZiIsZC5yb3dBY3Rpb25TZXJ2aWNlLmhhc0FjdGlvbmFibGVSb3cpLF9lKCksUmUoIm5nSWYiLGQuZXhwYW5kYWJsZVJvd3MuaGFzRXhwYW5kYWJsZVJv''@;'; put 'put ''d3x8ZC5kZXRhaWxTZXJ2aWNlLmVuYWJsZWQpLF9lKDUpLFJlKCJuZ0lmIixkLmxvYWRpbmdNb3JlSXRlbXMpLF9lKDMpLFJlKCJuZ0lmIixkLmxvYWRpbmdNb3JlSXRlbXMpLF9lKDIpLFJlKCJuZ0lmIiwhZC5wbGFjZWhvbGRlciksX2UoMiksUmUoIm5nSWYiLGQubG9hZGluZykpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6WyRpLCRzLFEwLF9hLHVhLHhkLF80LEpaLENtLG9ZLFNtLE1tLE04LHg4XSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTtjb25zdCBkVmU9bD0+bDtsZXQgTXVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLmNvbHVtbnNT''@;'; put 'put ''ZXJ2aWNlPWQsdGhpcy5hbGxTZWxlY3RlZD1uZXcgRHJ9Z2V0IGNsckFsbFNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuYWxsU2VsZWN0ZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGFsbEhpZGVhYmxlc1Zpc2libGUoKXtyZXR1cm4gMD09PXRoaXMuaGlkZWFibGVDb2x1bW5zKCkuZmlsdGVyKGE9PmEu''@;'; put 'put ''dmFsdWUuaGlkZGVuKS5sZW5ndGh9c2VsZWN0QWxsKCl7dGhpcy5oaWRlYWJsZUNvbHVtbnMoKS5mb3JFYWNoKGE9PnRoaXMuY29sdW1uc1NlcnZpY2UuZW1pdFN0YXRlQ2hhbmdlKGEse2hpZGRlbjohMSxjaGFuZ2VzOltPaC5ISURERU5dfSkpLHRoaXMuYWxsU2VsZWN0ZWQubmV4dCghMCl9''@;'; put 'put ''aGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uc1NlcnZpY2UuY29sdW1ucy5maWx0ZXIoYT0+YS52YWx1ZS5oaWRlYWJsZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFVzKSxKZShiNCkpfSxsLlx1MDI3NWNtcD1Tcih7dHlw''@;'; put 'put ''ZTpsLHNlbGVjdG9yczpbWyJjbHItZGctY29sdW1uLXRvZ2dsZS1idXR0b24iXV0sb3V0cHV0czp7Y2xyQWxsU2VsZWN0ZWQ6ImNsckFsbFNlbGVjdGVkIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwic3dpdGNo''@;'; put 'put ''LWJ1dHRvbiIsMywiY2xpY2siLCJkaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKGdlKDAsImJ1dHRvbiIsMCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLnNlbGVjdEFsbCgpfSksUGUoMSksbWUoKSksMiZhJiYoUmUoImRpc2FibGVkIixkLmFsbEhpZGVh''@;'; put 'put ''Ymxlc1Zpc2libGUpLF9lKCksbXIoIiAiLGQuY29tbW9uU3RyaW5ncy5rZXlzLnNlbGVjdEFsbCwiICIpKX0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCkseHVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuY29tbW9uU3RyaW5ncz1hLHRoaXMuY29sdW1uc1NlcnZpY2U9''@;'; put 'put ''ZCx0aGlzLnBvcG92ZXJJZD10dSgpLHRoaXMuc21hcnRQb3NpdGlvbj17YXhpczpEMC5WRVJUSUNBTCxzaWRlOlRoLkJFRk9SRSxhbmNob3I6UXMuU1RBUlQsY29udGVudDpRcy5TVEFSVH0sdGhpcy50cmFja0J5Rm49ZFZlLHRoaXMuc3Vic2NyaXB0aW9uPWgub3BlbkNoYW5nZS5zdWJzY3Jp''@;'; put 'put ''YmUoZj0+dGhpcy5vcGVuU3RhdGU9Zil9Z2V0IGFsbENvbHVtbnNWaXNpYmxlKCl7cmV0dXJuIHRoaXMuX2FsbENvbHVtbnNWaXNpYmxlfXNldCBhbGxDb2x1bW5zVmlzaWJsZShhKXt0aGlzLl9hbGxDb2x1bW5zVmlzaWJsZT1hfWdldCBoaWRlYWJsZUNvbHVtblN0YXRlcygpe3JldHVybiB0''@;'; put 'put ''aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZmlsdGVyKGQ9PmQudmFsdWUuaGlkZWFibGUpLm1hcChkPT5kLnZhbHVlKX1nZXQgaGFzT25seU9uZVZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5jb2x1bW5zU2VydmljZS5jb2x1bW5zLmxlbmd0aC10aGlzLmhpZGVhYmxlQ29sdW1uU3Rh''@;'; put 'put ''dGVzLmxlbmd0aD09MCYmMT09PXRoaXMuaGlkZWFibGVDb2x1bW5TdGF0ZXMuZmlsdGVyKGQ9PiFkLmhpZGRlbikubGVuZ3RofW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX10b2dnbGVDb2x1bW5TdGF0ZShhLGQpe2NvbnN0IGg9dGhpcy5jb2x1bW5zU2Vy''@;'; put 'put ''dmljZS5jb2x1bW5zLmZpbHRlcihmPT5mLnZhbHVlPT09YSlbMF07dGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2UoaCx7aGlkZGVuOmQsY2hhbmdlczpbT2guSElEREVOXX0pfXRvZ2dsZVN3aXRjaFBhbmVsKCl7dGhpcy5vcGVuU3RhdGU9IXRoaXMub3BlblN0YXRlfWFsbENv''@;'; put 'put ''bHVtbnNTZWxlY3RlZCgpe3RoaXMuYWxsU2VsZWN0ZWRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoVXMpLEplKGI0KSxKZShSbCkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9y''@;'; put 'put ''czpbWyJjbHItZGctY29sdW1uLXRvZ2dsZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oYSxkKXtpZigxJmEmJkhvKFFQZSw1LE5pKSwyJmEpe2xldCBoO2xpKGg9Y2koKSkmJihkLmFsbFNlbGVjdGVkRWxlbWVudD1oLmZpcnN0KX19LGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEs''@;'; put 'put ''ZCl7MiZhJiZwcigiY29sdW1uLXN3aXRjaC13cmFwcGVyIiwhMCkoImFjdGl2ZSIsZC5vcGVuU3RhdGUpfSxmZWF0dXJlczpbQTEoW2g0XSldLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJhbGxTZWxlY3RlZCIsIiJdLFsicm9sZSIsImJ1dHRvbiIsInR5cGUiLCJidXR0b24iLCJjbHJQb3Bv''@;'; put 'put ''dmVyQW5jaG9yIiwiIiwiY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvbiIsIiIsMSwiYnRuIiwiYnRuLXNtIiwiY29sdW1uLXRvZ2dsZS0tYWN0aW9uIl0sWyJjbGFzcyIsImNvbHVtbi1zd2l0Y2giLCJyb2xlIiwiZGlhbG9nIiwiY2RrVHJhcEZvY3VzIiwiIiwzLCJpZCIsNCwiY2xyUG9wb3Zl''@;'; put 'put ''ckNvbnRlbnQiLCJjbHJQb3BvdmVyQ29udGVudEF0IiwiY2xyUG9wb3ZlckNvbnRlbnRPdXRzaWRlQ2xpY2tUb0Nsb3NlIiwiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIl0sWyJyb2xlIiwiZGlhbG9nIiwiY2RrVHJhcEZvY3VzIiwiIiwxLCJjb2x1bW4tc3dpdGNoIiwzLCJpZCJd''@;'; put 'put ''LFsxLCJzd2l0Y2gtaGVhZGVyIl0sWyJ0YWJpbmRleCIsIi0xIiwxLCJjbHItc3Itb25seSJdLFsiY2xyUG9wb3ZlckNsb3NlQnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLCJ0b2dnbGUtc3dpdGNoLWNsb3NlLWJ1dHRvbiJdLFsic2hhcGUi''@;'; put 'put ''LCJ3aW5kb3ctY2xvc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwic3dpdGNoLWNvbnRlbnQiLCJsaXN0LXVuc3R5bGVkIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJzd2l0Y2gtZm9vdGVyIl0sWzMsImNsckFsbFNlbGVj''@;'; put 'put ''dGVkIl0sWyJjbHJDaGVja2JveCIsIiIsInR5cGUiLCJjaGVja2JveCIsMywibmdNb2RlbENoYW5nZSIsImRpc2FibGVkIiwibmdNb2RlbCJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoZ2UoMCwiYnV0dG9uIiwxKSxQZSgxKSxtZSgpLGd0''@;'; put 'put ''KDIsbkZlLDE1LDksImRpdiIsMikpLDImYSYmKHVyKCJhcmlhLWNvbnRyb2xzIixkLnBvcG92ZXJJZCkoImFyaWEtb3ducyIsZC5wb3BvdmVySWQpKCJhcmlhLWV4cGFuZGVkIixkLm9wZW5TdGF0ZSksX2UoKSxtcigiICIsZC5jb21tb25TdHJpbmdzLmtleXMucGlja0NvbHVtbnMsIiAiKSxf''@;'; put 'put ''ZSgpLFJlKCJjbHJQb3BvdmVyQ29udGVudCIsZC5vcGVuU3RhdGUpKCJjbHJQb3BvdmVyQ29udGVudEF0IixkLnNtYXJ0UG9zaXRpb24pKCJjbHJQb3BvdmVyQ29udGVudE91dHNpZGVDbGlja1RvQ2xvc2UiLCEwKSgiY2xyUG9wb3ZlckNvbnRlbnRTY3JvbGxUb0Nsb3NlIiwhMCkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W1ZzLHZkLEhfLEdzLCRzLGExLHMxLFEwLF9hLHVhLENNLFpjZSx4TSxNTSxNdWVdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLFR1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuZXhwYW5kYWJsZVJvd3NDb3VudD1hLHRoaXMuZXhwYW5kYWJsZVJvd3NDb3Vu''@;'; put 'put ''dCYmdGhpcy5leHBhbmRhYmxlUm93c0NvdW50LnJlZ2lzdGVyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLmV4cGFuZGFibGVSb3dzQ291bnQmJnRoaXMuZXhwYW5kYWJsZVJvd3NDb3VudC51bnJlZ2lzdGVyKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwp''@;'; put 'put ''KEplKFdfLDgpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xySWZFeHBhbmRlZCIsIiJdXX0pLGx9KSgpLFJSPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5zZWxlY3Rpb249YSx0aGlzLmRldGFpbFNlcnZpY2U9ZCx0aGlzLmNvbHVt''@;'; put 'put ''bnNTZXJ2aWNlPWgsdGhpcy5jb21tb25TdHJpbmdzPWYsdGhpcy5TRUxFQ1RJT05fVFlQRT1rYX1nZXQgaGFzSGlkZWFibGVDb2x1bW5zKCl7cmV0dXJuIHRoaXMuY29sdW1uc1NlcnZpY2UuaGFzSGlkZWFibGVDb2x1bW5zfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJu''@;'; put 'put ''IG5ldyhhfHxsKShKZShxXyksSmUodGYpLEplKGI0KSxKZShVcykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItZGctZm9vdGVyIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigiZGF0YWdyaWQtZm9vdGVyIiwhMCl9LG5n''@;'; put 'put ''Q29udGVudFNlbGVjdG9yczpvRmUsZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbNCwibmdJZiJdLFsxLCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIl0sWzEsImRhdGFncmlkLWZvb3Rlci1zZWxlY3QiXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwiY2hlY2tlZCIsImNo''@;'; put 'put ''ZWNrZWQiLCJkaXNhYmxlZCIsIiJdLFsxLCJjbHItc3Itb25seSJdLFsxLCJkYXRhZ3JpZC1mb290ZXItZGVzY3JpcHRpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShpRmUpLGd0KDAsc0ZlLDgsMiwibmctY29udGFpbmVyIiwwKSgxLGxGZSw0LDEsIm5nLWNvbnRhaW5l''@;'; put 'put ''ciIsMCksSXIoMikpLDImYSYmKFJlKCJuZ0lmIixkLnNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlPT09ZC5TRUxFQ1RJT05fVFlQRS5NdWx0aSYmZC5zZWxlY3Rpb24uY3VycmVudC5sZW5ndGg+MCksX2UoKSxSZSgibmdJZiIsIWQuZGV0YWlsU2VydmljZS5pc09wZW4pKX0sZGVwZW5kZW5jaWVz''@;'; put 'put ''OlskaSwkcyxhMSxzMSx4dWVdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpO2NvbnN0IGFZPW5ldyAkcigiQ09MVU1OX1NUQVRFIiksZ1ZlPXtwcm92aWRlOmFZLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gcFZlKCl7cmV0dXJuIG5ldyBBcih7Y2hhbmdlczpbXX0pfX07bGV0IE9NPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7Y29uc3RydWN0b3IoYSl7dGhpcy5wYWdlPWEsdGhpcy5wYWdlU2l6ZU9wdGlvbnNJZD10dSgpfW5nT25Jbml0KCl7KCF0aGlzLnBhZ2VTaXplT3B0aW9uc3x8MD09PXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCkmJih0aGlzLnBhZ2VTaXplT3B0aW9ucz1bdGhpcy5wYWdlLnNpemVd''@;'; put 'put ''KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoeW0pKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2Utc2l6ZSJdXSxpbnB1dHM6e3BhZ2VTaXplT3B0aW9uczpbam4uTm9uZSwiY2xyUGFnZVNpemVPcHRp''@;'; put 'put ''b25zIiwicGFnZVNpemVPcHRpb25zIl0scGFnZVNpemVPcHRpb25zSWQ6W2puLk5vbmUsImNsclBhZ2VTaXplT3B0aW9uc0lkIiwicGFnZVNpemVPcHRpb25zSWQiXX0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjUsdmFyczo2LGNvbnN0czpbWzMsImZvciJdLFsxLCJjbHItc2VsZWN0''@;'; put 'put ''LXdyYXBwZXIiXSxbMywibmdNb2RlbENoYW5nZSIsImlkIiwibmdNb2RlbCJdLFszLCJuZ1ZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibmdWYWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ2UoMCwibGFiZWwiLDApLElyKDEpLG1lKCksZ2UoMiwiZGl2''@;'; put 'put ''IiwxKSgzLCJzZWxlY3QiLDIpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihmKXtyZXR1cm4gR3IoZC5wYWdlLnNpemUsZil8fChkLnBhZ2Uuc2l6ZT1mKSxmfSksZ3QoNCxjRmUsMiwyLCJvcHRpb24iLDMpLG1lKCkoKSksMiZhJiYoUmUoImZvciIsZC5wYWdlU2l6ZU9wdGlvbnNJZCks''@;'; put 'put ''X2UoMykscHIoImNsci1wYWdlLXNpemUtc2VsZWN0IiwhMCksUmUoImlkIixkLnBhZ2VTaXplT3B0aW9uc0lkKSxZcigibmdNb2RlbCIsZC5wYWdlLnNpemUpLF9lKCksUmUoIm5nRm9yT2YiLGQucGFnZVNpemVPcHRpb25zKSl9LGRlcGVuZGVuY2llczpbVnMsJHMsRzIsJDIsVzIsX2EsdWFd''@;'; put 'put ''LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLExSPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMucGFnZT1hLHRoaXMuY29tbW9uU3RyaW5ncz1kLHRoaXMuZGV0YWlsU2VydmljZT1oLHRoaXMuY3VycmVudENoYW5nZWQ9bmV3IERyKCExKSx0aGlzLnBhZ2UuYWN0aXZhdGVk''@;'; put 'put ''PSEwfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLnBhZ2Uuc2l6ZX1zZXQgcGFnZVNpemUoYSl7Im51bWJlciI9PXR5cGVvZiBhJiYodGhpcy5wYWdlLnNpemU9YSl9Z2V0IHRvdGFsSXRlbXMoKXtyZXR1cm4gdGhpcy5wYWdlLnRvdGFsSXRlbXN9c2V0IHRvdGFsSXRlbXMoYSl7Im51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBhJiYodGhpcy5wYWdlLnRvdGFsSXRlbXM9YSl9Z2V0IGxhc3RQYWdlKCl7cmV0dXJuIHRoaXMucGFnZS5sYXN0fXNldCBsYXN0UGFnZShhKXsibnVtYmVyIj09dHlwZW9mIGEmJih0aGlzLnBhZ2UubGFzdD1hKX1nZXQgY3VycmVudFBhZ2UoKXtyZXR1cm4gdGhpcy5wYWdl''@;'; put 'put ''LmN1cnJlbnR9c2V0IGN1cnJlbnRQYWdlKGEpeyJudW1iZXIiPT10eXBlb2YgYSYmKHRoaXMucGFnZS5jdXJyZW50PWEpfWdldCBmaXJzdEl0ZW0oKXtyZXR1cm4gdGhpcy5wYWdlLmZpcnN0SXRlbX1nZXQgbGFzdEl0ZW0oKXtyZXR1cm4gdGhpcy5wYWdlLmxhc3RJdGVtfWdldCBtaWRkbGVQ''@;'; put 'put ''YWdlcygpe2NvbnN0IGE9W107cmV0dXJuIHRoaXMucGFnZS5jdXJyZW50PjEmJmEucHVzaCh0aGlzLnBhZ2UuY3VycmVudC0xKSxhLnB1c2godGhpcy5wYWdlLmN1cnJlbnQpLHRoaXMucGFnZS5jdXJyZW50PHRoaXMucGFnZS5sYXN0JiZhLnB1c2godGhpcy5wYWdlLmN1cnJlbnQrMSksYX1u''@;'; put 'put ''Z09uSW5pdCgpe3RoaXMucGFnZS5zaXplfHwodGhpcy5wYWdlLnNpemU9MTApLHRoaXMuX3BhZ2VTdWJzY3JpcHRpb249dGhpcy5wYWdlLmNoYW5nZS5zdWJzY3JpYmUoYT0+dGhpcy5jdXJyZW50Q2hhbmdlZC5lbWl0KGEpKX1uZ09uRGVzdHJveSgpe3RoaXMucGFnZS5yZXNldFBhZ2VTaXpl''@;'; put 'put ''KCEwKSx0aGlzLl9wYWdlU3Vic2NyaXB0aW9uJiZ0aGlzLl9wYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9cHJldmlvdXMoKXt0aGlzLnBhZ2UucHJldmlvdXMoKX1uZXh0KCl7dGhpcy5wYWdlLm5leHQoKX12ZXJpZnlDdXJyZW50UGFnZShhKXtwYXJzZUludChhLnRhcmdldC52YWx1''@;'; put 'put ''ZSwxMCkhPT10aGlzLnBhZ2UuY3VycmVudCYmKGEudGFyZ2V0LnZhbHVlPXRoaXMucGFnZS5jdXJyZW50KX11cGRhdGVDdXJyZW50UGFnZShhKXtjb25zdCBkPXBhcnNlSW50KGEudGFyZ2V0LnZhbHVlLDEwKTtpc05hTihkKXx8KHRoaXMucGFnZS5jdXJyZW50PWQ8MT8xOmQ+dGhpcy5wYWdl''@;'; put 'put ''Lmxhc3Q/dGhpcy5wYWdlLmxhc3Q6ZCksdGhpcy5jdXJyZW50UGFnZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU9dGhpcy5wYWdlLmN1cnJlbnR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHltKSxKZShVcyksSmUodGYpKX0sbC5cdTAy''@;'; put 'put ''NzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRnLXBhZ2luYXRpb24iXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEmYSYmdHMoaCxPTSw1KSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLl9wYWdlU2l6ZUNvbXBvbmVudD1mLmZpcnN0KX19LHZpZXdRdWVy''@;'; put 'put ''eTpmdW5jdGlvbihhLGQpe2lmKDEmYSYmSG8odUZlLDUpLDImYSl7bGV0IGg7bGkoaD1jaSgpKSYmKGQuY3VycmVudFBhZ2VJbnB1dFJlZj1oLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigicGFnaW5hdGlvbiIsITApfSxpbnB1dHM6e2Rp''@;'; put 'put ''c2FibGVDdXJyZW50UGFnZUlucHV0Oltqbi5Ob25lLCJjbHJEZ1BhZ2VJbnB1dERpc2FibGVkIiwiZGlzYWJsZUN1cnJlbnRQYWdlSW5wdXQiXSxwYWdlU2l6ZTpbam4uTm9uZSwiY2xyRGdQYWdlU2l6ZSIsInBhZ2VTaXplIl0sdG90YWxJdGVtczpbam4uTm9uZSwiY2xyRGdUb3RhbEl0ZW1z''@;'; put 'put ''IiwidG90YWxJdGVtcyJdLGxhc3RQYWdlOltqbi5Ob25lLCJjbHJEZ0xhc3RQYWdlIiwibGFzdFBhZ2UiXSxjdXJyZW50UGFnZTpbam4uTm9uZSwiY2xyRGdQYWdlIiwiY3VycmVudFBhZ2UiXX0sb3V0cHV0czp7Y3VycmVudENoYW5nZWQ6ImNsckRnUGFnZUNoYW5nZSJ9LG5nQ29udGVudFNl''@;'; put 'put ''bGVjdG9yczpoRmUsZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbInJlYWRPbmx5IiwiIl0sWyJjdXJyZW50UGFnZUlucHV0IiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwicGFnaW5hdGlvbi1zaXplIiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tZGVzY3JpcHRpb24iXSxbImNsYXNzIiwicGFn''@;'; put 'put ''aW5hdGlvbi1saXN0Iiw0LCJuZ0lmIl0sWzEsInBhZ2luYXRpb24tc2l6ZSJdLFsxLCJwYWdpbmF0aW9uLWxpc3QiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tZmlyc3QiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbMSwiY2xyLXNyLW9ubHkiXSxbInNoYXBlIiwic3RlcC1mb3J3''@;'; put 'put ''YXJkLTIiLCJkaXJlY3Rpb24iLCJkb3duIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsidHlwZSIsInRleHQiLCJjbGFzcyIsInBhZ2luYXRpb24tY3Vy''@;'; put 'put ''cmVudCBjbHItaW5wdXQiLDMsInNpemUiLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJibHVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInR5cGUiLCJidXR0b24iLDEsInBhZ2luYXRpb24tbmV4dCIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIs''@;'; put 'put ''InJpZ2h0Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJwYWdpbmF0aW9uLWxhc3QiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwic3RlcC1mb3J3YXJkLTIiLCJkaXJlY3Rpb24iLCJ1cCJdLFsidHlwZSIsInRleHQiLDEsInBhZ2luYXRpb24tY3VycmVudCIsImNsci1pbnB1dCIsMywi''@;'; put 'put ''a2V5ZG93bi5lbnRlciIsImJsdXIiLCJzaXplIiwidmFsdWUiXSxbMSwicGFnaW5hdGlvbi1kZXNjcmlwdGlvbi1jb21wYWN0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoZEZlKSxndCgwLHZGZSw1LDIsIm5nLWNvbnRhaW5lciIsMikoMSxfRmUsMTQsMTAsIm5nLWNvbnRh''@;'; put 'put ''aW5lciIsMikpLDImYSYmKFJlKCJuZ0lmIiwhZC5kZXRhaWxTZXJ2aWNlLmlzT3BlbiksX2UoKSxSZSgibmdJZiIsZC5kZXRhaWxTZXJ2aWNlLmlzT3BlbikpfSxkZXBlbmRlbmNpZXM6WyRpLEdzXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxBOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9y''@;'; put 'put ''KGEsZCxoLGYsdixTLFYpe3RoaXMuZWw9YSx0aGlzLnJlbmRlcmVyPWQsdGhpcy5vcmdhbml6ZXI9aCx0aGlzLmRvbUFkYXB0ZXI9Zix0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlPXYsdGhpcy5jb2x1bW5zU2VydmljZT1TLHRoaXMuY29sdW1uU3RhdGU9Vix0aGlzLnJlc2l6ZUVtaXR0ZXI9''@;'; put 'put ''bmV3IERyLHRoaXMud2lkdGhTZXQ9ITEsdGhpcy5hdXRvU2V0PSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm9yZ2FuaXplci5maWx0ZXJSZW5kZXJTdGVwcyhuZi5DTEVBUl9XSURUSFMpLnN1YnNjcmliZSgoKT0+dGhpcy5jbGVhcldpZHRo''@;'; put 'put ''KCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9Z2V0Q29sdW1uV2lkdGhTdGF0ZSgpe2NvbnN0IGE9dGhpcy5kZXRlY3RTdHJpY3RXaWR0aCgpO3JldHVybnt3aWR0aDp0aGlzLmNvbXB1dGVXaWR0aChhKSxzdHJpY3RXaWR0''@;'; put 'put ''aDphfX1zZXRDb2x1bW5TdGF0ZShhKXt0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnNbYV09dGhpcy5jb2x1bW5TdGF0ZX1zZXRXaWR0aChhKXthLnN0cmljdFdpZHRoPyh0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeSYmKHRoaXMucmVzaXplRW1pdHRlci5lbWl0KGEud2lk''@;'; put 'put ''dGgpLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYS53aWR0aCsicHgiKSx0aGlzLndpZHRoU2V0PSExKSx0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxLXyksdGhpcy5hdXRvU2V0PSExKToodGhpcy5yZW5k''@;'; put 'put ''ZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsS18pLHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ3aWR0aCIsYS53aWR0aCsicHgiKSx0aGlzLndpZHRoU2V0PSEwLHRoaXMuYXV0b1NldD0hMCl9c2V0SGlkZGVuKGEpe2EuaGlkZGVu''@;'; put 'put ''P3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LElSKTp0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCxJUil9Y2xlYXJXaWR0aCgpe3RoaXMud2lkdGhTZXQmJiF0aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRC''@;'; put 'put ''eSYmdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIndpZHRoIixudWxsKSx0aGlzLmF1dG9TZXQmJnRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LEtfKX1kZXRlY3RTdHJpY3RXaWR0aCgpe3JldHVybiB0aGlzLmNvbHVt''@;'; put 'put ''blJlc2l6ZXJTZXJ2aWNlLnJlc2l6ZWRCeT90aGlzLmNvbHVtblJlc2l6ZXJTZXJ2aWNlLndpZHRoQWZ0ZXJSZXNpemU6dGhpcy5hdXRvU2V0PzA6dGhpcy5kb21BZGFwdGVyLnVzZXJEZWZpbmVkV2lkdGgodGhpcy5lbC5uYXRpdmVFbGVtZW50KX1jb21wdXRlV2lkdGgoYSl7bGV0IGQ9YTty''@;'; put 'put ''ZXR1cm4gZHx8KGQ9dGhpcy5kb21BZGFwdGVyLnNjcm9sbFdpZHRoKHRoaXMuZWwubmF0aXZlRWxlbWVudCkpLGR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSxKZShkcyksSmUoRTgpLEplKGY0KSxKZShLWiksSmUoYjQpLEplKGFZKSl9''@;'; put 'put ''LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kZy1jb2x1bW4iXV0sb3V0cHV0czp7cmVzaXplRW1pdHRlcjoiY2xyRGdDb2x1bW5SZXNpemUifSxmZWF0dXJlczpbWmkoW0taLGdWZV0pXX0pLGx9KSgpLHdWZT0oKCk9PntjbGFzcyBse3VzZXJEZWZpbmVkV2lkdGgo''@;'; put 'put ''YSl7cmV0dXJuIDB9c2Nyb2xsQmFyV2lkdGgoYSl7cmV0dXJuIDB9c2Nyb2xsV2lkdGgoYSl7cmV0dXJuIDB9Y29tcHV0ZWRIZWlnaHQoYSl7cmV0dXJuIDB9Y2xpZW50UmVjdChhKXtyZXR1cm57dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19bWluV2lk''@;'; put 'put ''dGgoYSl7cmV0dXJuIDB9Zm9jdXMoYSl7fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKTtjb25zdCBDVmU9bD0+bWEobCk/bmV3IGY0Om5ldyB3VmU7bGV0''@;'; put 'put ''IFhfPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRLGRlLHBlLENlKXt0aGlzLm9yZ2FuaXplcj1hLHRoaXMuaXRlbXM9ZCx0aGlzLnBhZ2U9aCx0aGlzLmRvbUFkYXB0ZXI9Zix0aGlzLmVsPXYsdGhpcy5yZW5kZXJlcj1TLHRoaXMuZGV0YWlsU2VydmljZT1WLHRo''@;'; put 'put ''aXMudGFibGVTaXplU2VydmljZT1RLHRoaXMuY29sdW1uc1NlcnZpY2U9ZGUsdGhpcy5uZ1pvbmU9cGUsdGhpcy5rZXlOYXZpZ2F0aW9uPUNlLHRoaXMuX2hlaWdodFNldD0hMSx0aGlzLnNob3VsZFN0YWJpbGl6ZUNvbHVtbnM9ITAsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuY29sdW1u''@;'; put 'put ''c1NpemVzU3RhYmxlPSExLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMub3JnYW5pemVyLmZpbHRlclJlbmRlclN0ZXBzKG5mLkNPTVBVVEVfQ09MVU1OX1dJRFRIUykuc3Vic2NyaWJlKCgpPT50aGlzLmNvbXB1dGVIZWFkZXJzV2lkdGgoKSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNo''@;'; put 'put ''KHRoaXMucGFnZS5zaXplQ2hhbmdlLnN1YnNjcmliZSgoKT0+e3RoaXMuX2hlaWdodFNldCYmdGhpcy5yZXNldERhdGFncmlkSGVpZ2h0KCl9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5kZXRhaWxTZXJ2aWNlLnN0YXRlQ2hhbmdlLnN1YnNjcmliZShPZT0+dGhpcy50b2dnbGVE''@;'; put 'put ''ZXRhaWxQYW5lKE9lKSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaXRlbXMuY2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5zaG91bGRTdGFiaWxpemVDb2x1bW5zPSEwKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5zZXR1cENvbHVtbnMoKSx0aGlzLnN1YnNjcmlwdGlvbnMu''@;'; put 'put ''cHVzaCh0aGlzLmhlYWRlcnMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldHVwQ29sdW1ucygpLHRoaXMuY29sdW1uc1NpemVzU3RhYmxlPSExLHRoaXMuc3RhYmlsaXplQ29sdW1ucygpfSkpLHRoaXMubGlzdGVuRm9yQ29sdW1uQ2hhbmdlcygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3Ro''@;'; put 'put ''aXMudGFibGVTaXplU2VydmljZS50YWJsZT10aGlzLmVsfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe3RoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucyYmdGhpcy5zdGFiaWxpemVDb2x1bW5zKCksdGhpcy5zaG91bGRDb21wdXRlSGVpZ2h0KCkmJnRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFy''@;'; put 'put ''KCgpPT57c2V0VGltZW91dCgoKT0+e3RoaXMuY29tcHV0ZURhdGFncmlkSGVpZ2h0KCl9KX0pfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX10b2dnbGVEZXRhaWxQYW5lKGEpe3RoaXMuaGVhZGVycyYmKGEmJiF0aGlzLmNvbHVt''@;'; put 'put ''bnNTZXJ2aWNlLmhhc0NhY2hlKCk/KHRoaXMuY29sdW1uc1NlcnZpY2UuY2FjaGUoKSx0aGlzLmhlYWRlcnMuZm9yRWFjaCgoZCxoKT0+e2g+MCYmdGhpcy5jb2x1bW5zU2VydmljZS5lbWl0U3RhdGVDaGFuZ2VBdChoLHtjaGFuZ2VzOltPaC5ISURERU5dLGhpZGRlbjphfSl9KSk6YXx8dGhp''@;'; put 'put ''cy5jb2x1bW5zU2VydmljZS5yZXNldFRvTGFzdENhY2hlKCkpfXNldHVwQ29sdW1ucygpe3RoaXMuaGVhZGVycy5mb3JFYWNoKChhLGQpPT5hLnNldENvbHVtblN0YXRlKGQpKSx0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuc3BsaWNlKHRoaXMuaGVhZGVycy5sZW5ndGgpLHRoaXMucm93''@;'; put 'put ''cy5mb3JFYWNoKGE9PmEuc2V0Q2VsbHNTdGF0ZSgpKX1zaG91bGRDb21wdXRlSGVpZ2h0KCl7cmV0dXJuIXRoaXMuX2hlaWdodFNldCYmdGhpcy5wYWdlLnNpemU+MCYmdGhpcy5pdGVtcy5kaXNwbGF5ZWQubGVuZ3RoPT09dGhpcy5wYWdlLnNpemV9Y29tcHV0ZURhdGFncmlkSGVpZ2h0KCl7''@;'; put 'put ''Y29uc3QgYT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLmhlaWdodDt0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwiaGVpZ2h0IixhKSx0aGlzLl9oZWlnaHRTZXQ9ITB9cmVzZXREYXRhZ3JpZEhlaWdodCgpe3RoaXMu''@;'; put 'put ''cmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJoZWlnaHQiLCIiKSx0aGlzLl9oZWlnaHRTZXQ9ITF9Y29tcHV0ZUhlYWRlcnNXaWR0aCgpe2NvbnN0IGE9dGhpcy5oZWFkZXJzLmxlbmd0aCxkPXRoaXMuaGVhZGVycy5tYXAoZj0+Zi5nZXRDb2x1bW5XaWR0aFN0YXRl''@;'; put 'put ''KCkpO2xldCBoPSEwO3RoaXMuaGVhZGVycy5mb3JFYWNoKChmLHYpPT57Y29uc3QgUz17Y2hhbmdlczpbT2guV0lEVEhdLC4uLmRbdl19O1Muc3RyaWN0V2lkdGh8fChoPSExKSxhPT09disxJiZoJiYoUy5zdHJpY3RXaWR0aD0wKSx0aGlzLmNvbHVtbnNTZXJ2aWNlLmVtaXRTdGF0ZUNoYW5n''@;'; put 'put ''ZUF0KHYsUyl9KX1jb2x1bW5TdGF0ZUNoYW5nZWQoYSl7Y29uc3QgZD1hLmNvbHVtbkluZGV4O2EuY2hhbmdlcyYmYS5jaGFuZ2VzLmxlbmd0aCYmYS5jaGFuZ2VzLmZvckVhY2goaD0+e3N3aXRjaChoKXtjYXNlIE9oLldJRFRIOnRoaXMuaGVhZGVycy5nZXQoZCkuc2V0V2lkdGgoYSksdGhp''@;'; put 'put ''cy5yb3dzLmZvckVhY2goZj0+e2YuY2VsbHMmJmYuY2VsbHMubGVuZ3RoJiZmLmNlbGxzLmdldChkKS5zZXRXaWR0aChhKX0pO2JyZWFrO2Nhc2UgT2guSElEREVOOnRoaXMuaGVhZGVycy5nZXQoZCkuc2V0SGlkZGVuKGEpLHRoaXMucm93cy5mb3JFYWNoKGY9PntmLmNlbGxzJiZmLmNlbGxz''@;'; put 'put ''Lmxlbmd0aCYmZi5jZWxscy5nZXQoZCkuc2V0SGlkZGVuKGEpfSksdGhpcy5rZXlOYXZpZ2F0aW9uLnJlc2V0S2V5R3JpZCgpfX0pfWxpc3RlbkZvckNvbHVtbkNoYW5nZXMoKXt0aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMuZm9yRWFjaCgoZCxoKT0+e3RoaXMuY29sdW1uc1NlcnZpY2Uu''@;'; put 'put ''ZW1pdFN0YXRlQ2hhbmdlKGQse2NoYW5nZXM6W10sY29sdW1uSW5kZXg6aH0pfSk7Y29uc3QgYT1zTSguLi50aGlzLmNvbHVtbnNTZXJ2aWNlLmNvbHVtbnMpO3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGEuc3Vic2NyaWJlKGQ9PnRoaXMuY29sdW1uU3RhdGVDaGFuZ2VkKGQpKSl9c3RhYmls''@;'; put 'put ''aXplQ29sdW1ucygpe3RoaXMuc2hvdWxkU3RhYmlsaXplQ29sdW1ucz0hMSwhdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGUmJnRoaXMuaXRlbXMuZGlzcGxheWVkLmxlbmd0aD4wJiYodGhpcy5vcmdhbml6ZXIucmVzaXplKCksdGhpcy5jb2x1bW5zU2l6ZXNTdGFibGU9ITApfX1yZXR1cm4gbC5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShFOCksSmUodjQpLEplKHltKSxKZShmNCksSmUoTmkpLEplKGRzKSxKZSh0ZiksSmUoWFopLEplKGI0KSxKZShNbyksSmUoc1kpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWRhdGFncmlk''@;'; put 'put ''Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJih0cyhoLEE4LDQpLHRzKGgsTW0sNSkpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQuaGVhZGVycz1mKSxsaShmPWNpKCkpJiYoZC5yb3dzPWYpfX0sZmVhdHVyZXM6W1ppKFt7cHJvdmlkZTpmNCx1c2VGYWN0b3J5''@;'; put 'put ''OkNWZSxkZXBzOltJb119XSldfSksbH0pKCksU1ZlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhlRGUsdERlLHJNLG5EZSxGbGUsckRlLE5sZSxpRGUsb0RlKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1''@;'; put 'put ''bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sclZlLF9SLG5hLGd1ZSxyYyxEWixBaCxpVmUsbXVlLEZfLEVNLFBaXX0pLGx9KSgpLGt1ZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5c''@;'; put 'put ''dTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXN0YWNrLWNvbnRlbnQiXV19KSxsfSkoKSxsWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fZ2VuZXJhdGVkSWQ9bnVsbCx0aGlzLl9pZD1udWxsfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQoYSl7''@;'; put 'put ''dGhpcy5faWQ9InN0cmluZyI9PXR5cGVvZiBhJiYiIiE9PWE/YTp0aGlzLl9nZW5lcmF0ZWRJZCsiIn1uZ09uSW5pdCgpe3RoaXMuX2dlbmVyYXRlZElkPSJjbHItc3RhY2stbGFiZWwtIit0dSgpLHRoaXMuaWR8fCh0aGlzLl9pZD10aGlzLl9nZW5lcmF0ZWRJZCsiIil9fXJldHVybiBsLlx1''@;'; put 'put ''MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItc3RhY2stbGFiZWwiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnVyKCJpZCIsZC5pZCl9LGlucHV0czp7aWQ6Imlk''@;'; put 'put ''In0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEF1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5wYXJlbnQ9YSx0aGlzLmNvbW1v''@;'; put 'put ''blN0cmluZ3M9ZCx0aGlzLmV4cGFuZGVkPSExLHRoaXMuZXhwYW5kYWJsZT0hMSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBEcighMSksdGhpcy5mb2N1c2VkPSExLHRoaXMudW5pcXVlSWQ9dHUoKSx0aGlzLl9jaGFuZ2VkQ2hpbGRyZW49MCx0aGlzLl9mdWxseUluaXRpYWxpemVkPSExLHRo''@;'; put 'put ''aXMuX2NoYW5nZWQ9ITEsYSYmYS5hZGRDaGlsZCgpfXNldCBzZXRDaGFuZ2VkVmFsdWUoYSl7dGhpcy5fY2hhbmdlZD1hLHRoaXMucGFyZW50JiZ0aGlzLl9mdWxseUluaXRpYWxpemVkJiYoYT90aGlzLnBhcmVudC5fY2hhbmdlZENoaWxkcmVuKys6dGhpcy5wYXJlbnQuX2NoYW5nZWRDaGls''@;'; put 'put ''ZHJlbi0tKX1nZXQgZ2V0Q2hhbmdlZFZhbHVlKCl7cmV0dXJuIHRoaXMuX2NoYW5nZWR8fHRoaXMuX2NoYW5nZWRDaGlsZHJlbj4wJiYhdGhpcy5leHBhbmRlZH1nZXQgb25TdGFja0xhYmVsRm9jdXMoKXtyZXR1cm4gdGhpcy5leHBhbmRhYmxlJiYhdGhpcy5leHBhbmRlZCYmdGhpcy5mb2N1''@;'; put 'put ''c2VkfWdldCBsYWJlbGxlZEJ5SWQoKXtyZXR1cm4gdGhpcy5zdGFja0Jsb2NrVGl0bGUuaWR9Z2V0IGhlYWRpbmdMZXZlbCgpe3JldHVybiB0aGlzLmFyaWFMZXZlbD90aGlzLmFyaWFMZXZlbCsiIjp0aGlzLnBhcmVudD8iNCI6IjMifWdldCBjYXJldERpcmVjdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmV4cGFuZGVkPyJkb3duIjoicmlnaHQifWdldCByb2xlKCl7cmV0dXJuIHRoaXMuZXhwYW5kYWJsZT8iYnV0dG9uIjpudWxsfWdldCB0YWJJbmRleCgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/IjAiOm51bGx9Z2V0IGFyaWFFeHBhbmRlZCgpe3JldHVybiB0aGlzLmV4cGFuZGFibGU/dGhp''@;'; put 'put ''cy5leHBhbmRlZD8idHJ1ZSI6ImZhbHNlIjpudWxsfW5nT25Jbml0KCl7dGhpcy5fZnVsbHlJbml0aWFsaXplZD0hMH1hZGRDaGlsZCgpe3RoaXMuZXhwYW5kYWJsZT0hMH10b2dnbGVFeHBhbmQoYSl7RHVlKGEpfHx0aGlzLmV4cGFuZGFibGUmJih0aGlzLmV4cGFuZGVkPSF0aGlzLmV4cGFu''@;'; put 'put ''ZGVkLHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKSl9Z2V0U3RhY2tDaGlsZHJlbklkKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQ/YGNsci1zdGFjay1jaGlsZHJlbi0ke3RoaXMudW5pcXVlSWR9YDpudWxsfXByZXZlbnREZWZhdWx0SWZOb3RJbnB1dEV2ZW50KGEpe0R1''@;'; put 'put ''ZShhKXx8YS5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShsLDEyKSxKZShVcykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItc3RhY2stYmxvY2siXV0sY29udGVudFF1ZXJpZXM6ZnVu''@;'; put 'put ''Y3Rpb24oYSxkLGgpe2lmKDEmYSYmdHMoaCxsWSw1KSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLnN0YWNrQmxvY2tUaXRsZT1mLmZpcnN0KX19LGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmKHVyKCJyb2xlIiwiaGVhZGluZyIpKCJhcmlhLWxldmVsIixk''@;'; put 'put ''LmhlYWRpbmdMZXZlbCkscHIoInN0YWNrLWJsb2NrIiwhMCkoInN0YWNrLWJsb2NrLWV4cGFuZGVkIixkLmV4cGFuZGVkKSgic3RhY2stYmxvY2stZXhwYW5kYWJsZSIsZC5leHBhbmRhYmxlKSgic3RhY2stYmxvY2stY2hhbmdlZCIsZC5nZXRDaGFuZ2VkVmFsdWUpKCJvbi1mb2N1cyIsZC5v''@;'; put 'put ''blN0YWNrTGFiZWxGb2N1cykpfSxpbnB1dHM6e2V4cGFuZGVkOltqbi5Ob25lLCJjbHJTYkV4cGFuZGVkIiwiZXhwYW5kZWQiXSxleHBhbmRhYmxlOltqbi5Ob25lLCJjbHJTYkV4cGFuZGFibGUiLCJleHBhbmRhYmxlIl0sYXJpYUxldmVsOltqbi5Ob25lLCJjbHJTdGFja1ZpZXdMZXZlbCIs''@;'; put 'put ''ImFyaWFMZXZlbCJdLHNldENoYW5nZWRWYWx1ZTpbam4uTm9uZSwiY2xyU2JOb3RpZnlDaGFuZ2UiLCJzZXRDaGFuZ2VkVmFsdWUiXX0sb3V0cHV0czp7ZXhwYW5kZWRDaGFuZ2U6ImNsclNiRXhwYW5kZWRDaGFuZ2UifSxuZ0NvbnRlbnRTZWxlY3RvcnM6eUZlLGRlY2xzOjksdmFyczo5LGNv''@;'; put 'put ''bnN0czpbWzEsInN0YWNrLWJsb2NrLWxhYmVsIiwzLCJjbGljayIsImtleXVwLmVudGVyIiwia2V5dXAuc3BhY2UiLCJrZXlkb3duLnNwYWNlIiwiZm9jdXMiLCJibHVyIiwiaWQiXSxbInNoYXBlIiwiYW5nbGUiLCJjbGFzcyIsInN0YWNrLWJsb2NrLWNhcmV0Iiw0LCJuZ0lmIl0sWyJjbGFz''@;'; put 'put ''cyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsInN0YWNrLXZpZXcta2V5Il0sWzEsInN0YWNrLWJsb2NrLWNvbnRlbnQiXSxbMSwic3RhY2stY2hpbGRyZW4iLDMsImNsckV4cGFuZFRyaWdnZXIiXSxbInJvbGUiLCJyZWdpb24iLDMsImhlaWdodCIsNCwibmdJZiJdLFsic2hhcGUiLCJh''@;'; put 'put ''bmdsZSIsMSwic3RhY2stYmxvY2stY2FyZXQiXSxbMSwiY2xyLXNyLW9ubHkiXSxbInJvbGUiLCJyZWdpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShiRmUpLGdlKDAsImRpdiIsMCksSXQoImNsaWNrIixmdW5jdGlvbihmKXtyZXR1cm4gZC50b2dnbGVFeHBhbmQoZil9''@;'; put 'put ''KSgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKGYpe3JldHVybiBkLnRvZ2dsZUV4cGFuZChmKX0pKCJrZXl1cC5zcGFjZSIsZnVuY3Rpb24oZil7cmV0dXJuIGQudG9nZ2xlRXhwYW5kKGYpfSkoImtleWRvd24uc3BhY2UiLGZ1bmN0aW9uKGYpe3JldHVybiBkLnByZXZlbnREZWZhdWx0SWZOb3RJ''@;'; put 'put ''bnB1dEV2ZW50KGYpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBkLmZvY3VzZWQ9ITB9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZC5mb2N1c2VkPSExfSksZ3QoMSx3RmUsMSwxLCJjZHMtaWNvbiIsMSkoMixDRmUsMiwxLCJzcGFuIiwyKSxnZSgzLCJkaXYiLDMpLElyKDQpLG1l''@;'; put 'put ''KCksZ2UoNSwiZGl2Iiw0KSxJcig2LDEpLG1lKCkoKSxnZSg3LCJjbHItZXhwYW5kYWJsZS1hbmltYXRpb24iLDUpLGd0KDgsU0ZlLDIsNCwiZGl2Iiw2KSxtZSgpKSwyJmEmJihSZSgiaWQiLGQudW5pcXVlSWQpLHVyKCJyb2xlIixkLnJvbGUpKCJ0YWJpbmRleCIsZC50YWJJbmRleCkoImFy''@;'; put 'put ''aWEtZXhwYW5kZWQiLGQuYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsZC5nZXRTdGFja0NoaWxkcmVuSWQoKSksX2UoKSxSZSgibmdJZiIsZC5leHBhbmRhYmxlKSxfZSgpLFJlKCJuZ0lmIixkLmdldENoYW5nZWRWYWx1ZSksX2UoNSksUmUoImNsckV4cGFuZFRyaWdnZXIiLGQuZXhw''@;'; put 'put ''YW5kZWQpLF9lKCksUmUoIm5nSWYiLGQuZXhwYW5kZWQpKX0sZGVwZW5kZW5jaWVzOlskaSxHcyxoUl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksbH0pKCk7ZnVuY3Rpb24gRHVlKGwpe3JldHVybiJJTlBVVCI9PT1sPy50YXJnZXQ/LnRhZ05hbWV9bGV0''@;'; put 'put ''IGNZPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItc3RhY2stdmlldyJdXSxuZ0NvbnRlbnRTZWxlY3RvcnM6eEZlLGRlY2xzOjMsdmFyczowLGNvbnN0''@;'; put 'put ''czpbWzEsInN0YWNrLXZpZXciXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShNRmUpLElyKDApLGdlKDEsImRpdiIsMCksSXIoMiwxKSxtZSgpKX0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSksbH0pKCkseFZlPSgoKT0+e2NsYXNzIGx7Y29u''@;'; put 'put ''c3RydWN0b3IoKXtXcy5hZGRJY29ucyhDXyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vLHJjLG5hLG11ZV19KSxsfSkoKSxEOD0oKCk9PntjbGFzcyBs''@;'; put 'put ''e2NvbnN0cnVjdG9yKCl7dGhpcy5zZWxlY3RhYmxlPSExLHRoaXMuZWFnZXI9ITAsdGhpcy5jaGlsZHJlbkZldGNoZWQ9bmV3IHRufX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAy''@;'; put 'put ''NzVmYWN9KSxsfSkoKTtjb25zdCBJdWU9e3Byb3ZpZGU6RDgsdXNlRmFjdG9yeTpmdW5jdGlvbiBFVmUobCl7cmV0dXJuIGx8fG5ldyBEOH0sZGVwczpbW25ldyBZMCxuZXcgeTEsRDhdXX07bGV0IFJ1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5mZWF0dXJlc1NlcnZp''@;'; put 'put ''Y2U9YSx0aGlzLmV4cGFuZFNlcnZpY2U9ZCxkJiYodGhpcy5zdWJzY3JpcHRpb249dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZENoYW5nZS5zdWJzY3JpYmUoaD0+eyFoJiZ0aGlzLnBhcmVudCYmIXRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyJiZ0aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1''@;'; put 'put ''cnNpb24mJnRoaXMucGFyZW50LmNsZWFyQ2hpbGRyZW4oKX0pKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnNldEFyaWFSb2xlcygpfXNob3VsZFJlbmRlcigpe3JldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24mJih0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcnx8IXRo''@;'; put 'put ''aXMuZXhwYW5kU2VydmljZXx8dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkKX1nZXRDb250ZXh0KGEpe3JldHVybnskaW1wbGljaXQ6YS5tb2RlbCxjbHJNb2RlbDphfX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXNl''@;'; put 'put ''dEFyaWFSb2xlcygpe3RoaXMucm9sZT10aGlzLnBhcmVudD8iZ3JvdXAiOm51bGx9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKEQ4KSxKZShvMSw4KSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1yZWN1cnNpdmUt''@;'; put 'put ''Y2hpbGRyZW4iXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnVyKCJyb2xlIixkLnJvbGUpfSxpbnB1dHM6e3BhcmVudDoicGFyZW50IixjaGlsZHJlbjoiY2hpbGRyZW4ifSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1s0LCJuZ0lmIl0sWzQsIm5nRm9yIiwi''@;'; put 'put ''bmdGb3JPZiJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJmd0KDAsREZlLDIsMSwibmctY29udGFpbmVyIiwwKSwyJmEmJlJlKCJuZ0lmIixkLnNob3VsZFJlbmRlcigpKX0sZGVwZW5kZW5jaWVz''@;'; put 'put ''OltWcywkaSx2ZF0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCk7dmFyIHJ1PWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuVU5TRUxFQ1RFRD0wXT0iVU5TRUxFQ1RFRCIsbFtsLlNFTEVDVEVEPTFdPSJTRUxFQ1RFRCIsbFtsLklOREVURVJNSU5BVEU9Ml09IklOREVURVJNSU5BVEUiLGx9KHJ1fHx7''@;'; put 'put ''fSk7Y2xhc3MgTHVle2NvbnN0cnVjdG9yKCl7dGhpcy5sb2FkaW5nJD1uZXcgQXIoITEpLHRoaXMuc2VsZWN0ZWQ9bmV3IEFyKHJ1LlVOU0VMRUNURUQpLHRoaXMuX2xvYWRpbmc9ITF9Z2V0IGxvYWRpbmcoKXtyZXR1cm4gdGhpcy5fbG9hZGluZ31zZXQgbG9hZGluZyhjKXt0aGlzLl9sb2Fk''@;'; put 'put ''aW5nPWMsdGhpcy5sb2FkaW5nJC5uZXh0KGMpfWdldCBkaXNhYmxlZCgpe3JldHVybiEoIXRoaXMuX2Rpc2FibGVkJiYhdGhpcy5wYXJlbnQ/LmRpc2FibGVkKX1zZXQgZGlzYWJsZWQoYyl7dGhpcy5fZGlzYWJsZWQ9Y31kZXN0cm95KCl7dGhpcy5zZWxlY3RlZC5jb21wbGV0ZSgpfXNldFNl''@;'; put 'put ''bGVjdGVkKGMsYSxkKXtjIT09dGhpcy5zZWxlY3RlZC52YWx1ZSYmKHRoaXMuc2VsZWN0ZWQubmV4dChjKSxkJiZjIT09cnUuSU5ERVRFUk1JTkFURSYmdGhpcy5jaGlsZHJlbiYmdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGg9PntoLmRpc2FibGVkfHxoLnNldFNlbGVjdGVkKGMsITEsITApfSks''@;'; put 'put ''YSYmdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50Ll91cGRhdGVTZWxlY3Rpb25Gcm9tQ2hpbGRyZW4oKSl9dG9nZ2xlU2VsZWN0aW9uKGMpe3RoaXMuZGlzYWJsZWR8fHRoaXMuc2V0U2VsZWN0ZWQodGhpcy5zZWxlY3RlZC52YWx1ZT09PXJ1LlNFTEVDVEVEP3J1LlVOU0VMRUNURUQ6cnUuU0VM''@;'; put 'put ''RUNURUQsITAsYyl9X3VwZGF0ZVNlbGVjdGlvbkZyb21DaGlsZHJlbigpe2NvbnN0IGM9dGhpcy5jb21wdXRlU2VsZWN0aW9uU3RhdGVGcm9tQ2hpbGRyZW4oKTtjIT09dGhpcy5zZWxlY3RlZC52YWx1ZSYmKHRoaXMuc2VsZWN0ZWQubmV4dChjKSx0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQu''@;'; put 'put ''X3VwZGF0ZVNlbGVjdGlvbkZyb21DaGlsZHJlbigpKX1jb21wdXRlU2VsZWN0aW9uU3RhdGVGcm9tQ2hpbGRyZW4oKXtsZXQgYz0hMSxhPSExO2Zvcihjb25zdCBkIG9mIHRoaXMuY2hpbGRyZW4pc3dpdGNoKGQuc2VsZWN0ZWQudmFsdWUpe2Nhc2UgcnUuSU5ERVRFUk1JTkFURTppZihkLmRp''@;'; put 'put ''c2FibGVkKWNvbnRpbnVlO3JldHVybiBydS5JTkRFVEVSTUlOQVRFO2Nhc2UgcnUuU0VMRUNURUQ6aWYoYz0hMCxhKXJldHVybiBydS5JTkRFVEVSTUlOQVRFO2JyZWFrO2RlZmF1bHQ6aWYoYT0hMCxjKXJldHVybiBydS5JTkRFVEVSTUlOQVRFfXJldHVybiBjP2E/cnUuVU5TRUxFQ1RFRDpy''@;'; put 'put ''dS5TRUxFQ1RFRDpydS5VTlNFTEVDVEVEfX1jbGFzcyBPUiBleHRlbmRzIEx1ZXtjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcigpLHRoaXMuZ2V0Q2hpbGRyZW49ZCx0aGlzLmZlYXR1cmVzU2VydmljZT1oLHRoaXMuY2hpbGRyZW5GZXRjaGVkPSExLHRoaXMuX2NoaWxkcmVuPVtdLHRoaXMu''@;'; put 'put ''bW9kZWw9Yyx0aGlzLnBhcmVudD1hfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmZldGNoQ2hpbGRyZW4oKSx0aGlzLl9jaGlsZHJlbn1zZXQgY2hpbGRyZW4oYyl7dGhpcy5fY2hpbGRyZW49Y31kZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vi''@;'; put 'put ''c2NyaWJlKCksc3VwZXIuZGVzdHJveSgpfWNsZWFyQ2hpbGRyZW4oKXt0aGlzLl9jaGlsZHJlbi5mb3JFYWNoKGM9PmMuZGVzdHJveSgpKSxkZWxldGUgdGhpcy5fY2hpbGRyZW4sdGhpcy5jaGlsZHJlbkZldGNoZWQ9ITF9ZmV0Y2hDaGlsZHJlbigpe2lmKHRoaXMuY2hpbGRyZW5GZXRjaGVk''@;'; put 'put ''KXJldHVybjtjb25zdCBjPXRoaXMuZ2V0Q2hpbGRyZW4odGhpcy5tb2RlbCk7IWZ1bmN0aW9uIFRWZShsKXtyZXR1cm4gbCYmImZ1bmN0aW9uIj09dHlwZW9mIGwudGhlbn0oYyk/eFMoYyk/KHRoaXMubG9hZGluZz0hMCx0aGlzLnN1YnNjcmlwdGlvbj1jLnN1YnNjcmliZShhPT57dGhpcy5f''@;'; put 'put ''Y2hpbGRyZW49dGhpcy53cmFwQ2hpbGRyZW4oYSksdGhpcy5sb2FkaW5nPSExfSkpOnRoaXMuX2NoaWxkcmVuPWM/dGhpcy53cmFwQ2hpbGRyZW4oYyk6W106KHRoaXMubG9hZGluZz0hMCxjLnRoZW4oYT0+e3RoaXMuX2NoaWxkcmVuPXRoaXMud3JhcENoaWxkcmVuKGEpLHRoaXMubG9hZGlu''@;'; put 'put ''Zz0hMX0pKSx0aGlzLmNoaWxkcmVuRmV0Y2hlZD0hMCx0aGlzLmZlYXR1cmVzU2VydmljZSYmdGhpcy5mZWF0dXJlc1NlcnZpY2UuY2hpbGRyZW5GZXRjaGVkLm5leHQoKX13cmFwQ2hpbGRyZW4oYyl7cmV0dXJuIGMubWFwKGE9Pm5ldyBPUihhLHRoaXMsdGhpcy5nZXRDaGlsZHJlbix0aGlz''@;'; put 'put ''LmZlYXR1cmVzU2VydmljZSkpfX1sZXQgT3VlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMudGVtcGxhdGU9YSx0aGlzLmZlYXR1cmVzU2VydmljZT1kLHRoaXMuY2RyPWh9bmdPbkNoYW5nZXMoKXtsZXQgYTthPUFycmF5LmlzQXJyYXkodGhpcy5ub2Rlcyk/dGhpcy5u''@;'; put 'put ''b2Rlcy5tYXAoZD0+bmV3IE9SKGQsbnVsbCx0aGlzLmdldENoaWxkcmVuLHRoaXMuZmVhdHVyZXNTZXJ2aWNlKSk6W25ldyBPUih0aGlzLm5vZGVzLG51bGwsdGhpcy5nZXRDaGlsZHJlbix0aGlzLmZlYXR1cmVzU2VydmljZSldLHRoaXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbnx8KHRo''@;'; put 'put ''aXMuY2hpbGRyZW5GZXRjaFN1YnNjcmlwdGlvbj10aGlzLmZlYXR1cmVzU2VydmljZS5jaGlsZHJlbkZldGNoZWQucGlwZShoOCgwKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpfSkpLHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbj17dGVtcGxhdGU6dGhp''@;'; put 'put ''cy50ZW1wbGF0ZSxyb290OmF9fW5nT25EZXN0cm95KCl7dGhpcy5jaGlsZHJlbkZldGNoU3Vic2NyaXB0aW9uJiZ0aGlzLmNoaWxkcmVuRmV0Y2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoVWEp''@;'; put 'put ''LEplKEQ4KSxKZShjYSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJSZWN1cnNpdmVGb3IiLCIiLCJjbHJSZWN1cnNpdmVGb3JPZiIsIiJdXSxpbnB1dHM6e25vZGVzOltqbi5Ob25lLCJjbHJSZWN1cnNpdmVGb3JPZiIsIm5vZGVzIl0sZ2V0Q2hpbGRyZW46''@;'; put 'put ''W2puLk5vbmUsImNsclJlY3Vyc2l2ZUZvckdldENoaWxkcmVuIiwiZ2V0Q2hpbGRyZW4iXX0sZmVhdHVyZXM6W0phXX0pLGx9KSgpLHVZPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c1JlcXVlc3Q9bmV3IHRuLHRoaXMuX2ZvY3VzQ2hhbmdlPW5ldyB0bn1nZXQgZm9j''@;'; put 'put ''dXNSZXF1ZXN0KCl7cmV0dXJuIHRoaXMuX2ZvY3VzUmVxdWVzdC5hc09ic2VydmFibGUoKX1nZXQgZm9jdXNDaGFuZ2UoKXtyZXR1cm4gdGhpcy5fZm9jdXNDaGFuZ2UuYXNPYnNlcnZhYmxlKCl9Zm9jdXNOb2RlKGEpe2EmJnRoaXMuX2ZvY3VzUmVxdWVzdC5uZXh0KGEubm9kZUlkKX1icm9h''@;'; put 'put ''ZGNhc3RGb2N1c2VkTm9kZShhKXt0aGlzLmZvY3VzZWROb2RlSWQhPT1hJiYodGhpcy5mb2N1c2VkTm9kZUlkPWEsdGhpcy5fZm9jdXNDaGFuZ2UubmV4dChhKSl9Zm9jdXNQYXJlbnQoYSl7YSYmdGhpcy5mb2N1c05vZGUoYS5wYXJlbnQpfWZvY3VzRmlyc3RWaXNpYmxlTm9kZSgpe3RoaXMu''@;'; put 'put ''Zm9jdXNOb2RlKHRoaXMucm9vdE5vZGVNb2RlbHMmJnRoaXMucm9vdE5vZGVNb2RlbHNbMF0pfWZvY3VzTGFzdFZpc2libGVOb2RlKCl7dGhpcy5mb2N1c05vZGUodGhpcy5maW5kTGFzdFZpc2libGVJblRyZWUoKSl9Zm9jdXNOb2RlQWJvdmUoYSl7dGhpcy5mb2N1c05vZGUodGhpcy5maW5k''@;'; put 'put ''Tm9kZUFib3ZlKGEpKX1mb2N1c05vZGVCZWxvdyhhKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmROb2RlQmVsb3coYSkpfWZvY3VzTm9kZVN0YXJ0c1dpdGgoYSxkKXt0aGlzLmZvY3VzTm9kZSh0aGlzLmZpbmRDbG9zZXN0Tm9kZVN0YXJ0c1dpdGgoYSxkKSl9ZmluZFNpYmxpbmdzKGEpe3Jl''@;'; put 'put ''dHVybiBhLnBhcmVudD9hLnBhcmVudC5jaGlsZHJlbjp0aGlzLnJvb3ROb2RlTW9kZWxzfWZpbmRMYXN0VmlzaWJsZUluTm9kZShhKXtpZighYSlyZXR1cm4gbnVsbDtpZihhLmV4cGFuZGVkJiZhLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCBkPWEuY2hpbGRyZW47cmV0dXJuIHRoaXMuZmlu''@;'; put 'put ''ZExhc3RWaXNpYmxlSW5Ob2RlKGRbZC5sZW5ndGgtMV0pfXJldHVybiBhfWZpbmROZXh0Rm9jdXNhYmxlKGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IGQ9dGhpcy5maW5kU2libGluZ3MoYSksaD1kLmluZGV4T2YoYSk7cmV0dXJuIGg8ZC5sZW5ndGgtMT9kW2grMV06aD09PWQubGVuZ3Ro''@;'; put 'put ''LTE/dGhpcy5maW5kTmV4dEZvY3VzYWJsZShhLnBhcmVudCk6bnVsbH1maW5kTGFzdFZpc2libGVJblRyZWUoKXtyZXR1cm4gdGhpcy5maW5kTGFzdFZpc2libGVJbk5vZGUodGhpcy5yb290Tm9kZU1vZGVscyYmdGhpcy5yb290Tm9kZU1vZGVscy5sZW5ndGgmJnRoaXMucm9vdE5vZGVNb2Rl''@;'; put 'put ''bHNbdGhpcy5yb290Tm9kZU1vZGVscy5sZW5ndGgtMV0pfWZpbmROb2RlQWJvdmUoYSl7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgZD10aGlzLmZpbmRTaWJsaW5ncyhhKSxoPWQuaW5kZXhPZihhKTtyZXR1cm4gMD09PWg/YS5wYXJlbnQ6aD4wP3RoaXMuZmluZExhc3RWaXNpYmxlSW5Ob2Rl''@;'; put 'put ''KGRbaC0xXSk6bnVsbH1maW5kTm9kZUJlbG93KGEpe3JldHVybiBhP2EuZXhwYW5kZWQmJmEuY2hpbGRyZW4ubGVuZ3RoPjA/YS5jaGlsZHJlblswXTp0aGlzLmZpbmROZXh0Rm9jdXNhYmxlKGEpOm51bGx9ZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChhLGQpe2lmKGQuZXhwYW5kZWQm''@;'; put 'put ''JmQuY2hpbGRyZW4ubGVuZ3RoPjApZm9yKGNvbnN0IGggb2YgZC5jaGlsZHJlbil7Y29uc3QgZj10aGlzLmZpbmROb2RlU3RhcnRzV2l0aChhLGgpO2lmKGYpcmV0dXJuIGZ9cmV0dXJuIG51bGx9ZmluZFNpYmxpbmdOb2RlU3RhcnRzV2l0aChhLGQpe2NvbnN0IGg9dGhpcy5maW5kU2libGlu''@;'; put 'put ''Z3MoZCk7Zm9yKGxldCB2PWguaW5kZXhPZihkKSsxO3Y8aC5sZW5ndGg7disrKXtjb25zdCBWPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGEsaFt2XSk7aWYoVilyZXR1cm4gVn1yZXR1cm4gbnVsbH1maW5kUm9vdE5vZGVTdGFydHNXaXRoKGEsZCl7Zm9yKGNvbnN0IGggb2YgdGhpcy5yb290''@;'; put 'put ''Tm9kZU1vZGVscyl7aWYoZC5wYXJlbnQmJmQucGFyZW50PT09aCljb250aW51ZTtjb25zdCBmPXRoaXMuZmluZE5vZGVTdGFydHNXaXRoKGEsaCk7aWYoZilyZXR1cm4gZn1yZXR1cm4gbnVsbH1maW5kTm9kZVN0YXJ0c1dpdGgoYSxkKXtyZXR1cm4gZD9kLnRleHRDb250ZW50LnN0YXJ0c1dp''@;'; put 'put ''dGgoYSk/ZDp0aGlzLmZpbmREZXNjZW5kZW50Tm9kZVN0YXJ0c1dpdGgoYSxkKTpudWxsfWZpbmRDbG9zZXN0Tm9kZVN0YXJ0c1dpdGgoYSxkKXtpZighZClyZXR1cm4gbnVsbDtjb25zdCBoPXRoaXMuZmluZERlc2NlbmRlbnROb2RlU3RhcnRzV2l0aChhLGQpO2lmKGgpcmV0dXJuIGg7Y29u''@;'; put 'put ''c3QgZj10aGlzLmZpbmRTaWJsaW5nTm9kZVN0YXJ0c1dpdGgoYSxkKTtyZXR1cm4gZnx8KHRoaXMuZmluZFJvb3ROb2RlU3RhcnRzV2l0aChhLGQpfHx0aGlzLmZpbmROb2RlU3RhcnRzV2l0aChhLGQucGFyZW50KSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3''@;'; put 'put ''KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NsYXNzIGtWZSBleHRlbmRzIEx1ZXtjb25zdHJ1Y3RvcihjKXtzdXBlcigpLHRoaXMucGFyZW50PWMsYyYmYy5fYWRkQ2hpbGQodGhpcyksdGhpcy5jaGlsZHJlbj1bXX1kZXN0cm95''@;'; put 'put ''KCl7dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50Ll9yZW1vdmVDaGlsZCh0aGlzKSxzdXBlci5kZXN0cm95KCl9X2FkZENoaWxkKGMpe3RoaXMuY2hpbGRyZW4ucHVzaChjKX1fcmVtb3ZlQ2hpbGQoYyl7Y29uc3QgYT10aGlzLmNoaWxkcmVuLmluZGV4T2YoYyk7YT4tMSYmdGhpcy5jaGlsZHJl''@;'; put 'put ''bi5zcGxpY2UoYSwxKX19bGV0IHk0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5lbD1hfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiYWN0aXZlIil9YWN0aXZhdGUoKXt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQm''@;'; put 'put ''JnRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGljayYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWNrKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE5pKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsOCwiY2xyLXRy''@;'; put 'put ''ZWVub2RlLWxpbmsiXV19KSxsfSkoKSxIMT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTLFYsUSl7dGhpcy5wbGF0Zm9ybUlkPWEsdGhpcy5mZWF0dXJlc1NlcnZpY2U9aCx0aGlzLmV4cGFuZFNlcnZpY2U9Zix0aGlzLmNvbW1vblN0cmluZ3M9dix0aGlzLmZvY3VzTWFu''@;'; put 'put ''YWdlcj1TLHRoaXMuZWxlbWVudFJlZj1WLHRoaXMuc2VsZWN0ZWRDaGFuZ2U9bmV3IERyKCExKSx0aGlzLmV4cGFuZGVkQ2hhbmdlPW5ldyBEcix0aGlzLlNUQVRFUz1ydSx0aGlzLmlzTW9kZWxMb2FkaW5nPSExLHRoaXMubm9kZUlkPXR1KCksdGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5k''@;'; put 'put ''ZXg9LTEsdGhpcy5za2lwRW1pdENoYW5nZT0hMSx0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcj0iIix0aGlzLnR5cGVBaGVhZEtleUV2ZW50PW5ldyB0bix0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5fbW9kZWw9dGhpcy5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uP1Eudmlldz9RLnZpZXcu''@;'; put 'put ''Y29udGV4dC5jbHJNb2RlbDpRLl9sVmlld1s4XS5jbHJNb2RlbDpuZXcga1ZlKGQ/ZC5fbW9kZWw6bnVsbCksdGhpcy5fbW9kZWwubm9kZUlkPXRoaXMubm9kZUlkfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9tb2RlbC5kaXNhYmxlZH1zZXQgZGlzYWJsZWQoYSl7dGhpcy5fbW9kZWwu''@;'; put 'put ''ZGlzYWJsZWQ9YX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0ZWQudmFsdWV9c2V0IHNlbGVjdGVkKGEpe3RoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGU9ITAsKG51bGw9PT1hfHx0eXBlb2YgYT4idSIpJiYoYT1ydS5VTlNFTEVDVEVEKSwiYm9vbGVhbiI9''@;'; put 'put ''PXR5cGVvZiBhJiYoYT1hP3J1LlNFTEVDVEVEOnJ1LlVOU0VMRUNURUQpLHRoaXMuc2tpcEVtaXRDaGFuZ2U9ITAsdGhpcy5fbW9kZWwuc2V0U2VsZWN0ZWQoYSx0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlcix0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlciksdGhpcy5za2lwRW1pdENoYW5n''@;'; put 'put ''ZT0hMX1nZXQgZXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkfXNldCBleHBhbmRlZChhKXt0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ9YX1zZXQgY2xyRm9yVHlwZUFoZWFkKGEpe3RoaXMuX21vZGVsLnRleHRDb250ZW50PVB1ZShhfHx0aGlzLmVsZW1l''@;'; put 'put ''bnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCl9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLmlzU2VsZWN0YWJsZSgpP3RoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlPT09cnUuU0VMRUNURUQ6ISF0aGlzLnRyZWVOb2RlTGluaz8uYWN0aXZlfHxudWxsfWdldCB0cmVlTm9k''@;'; put 'put ''ZUNvbnRlbnRUZXh0T25seSgpe3JldHVybiAwPT09dGhpcy50cmVlTm9kZUxpbmtMaXN0Lmxlbmd0aH1nZXQgdHJlZU5vZGVMaW5rKCl7cmV0dXJuIHRoaXMudHJlZU5vZGVMaW5rTGlzdCYmdGhpcy50cmVlTm9kZUxpbmtMaXN0LmZpcnN0fWdldCBpc1BhcmVudCgpe3JldHVybiB0aGlzLl9t''@;'; put 'put ''b2RlbC5jaGlsZHJlbiYmdGhpcy5fbW9kZWwuY2hpbGRyZW4ubGVuZ3RoPjB9bmdPbkluaXQoKXt0aGlzLl9tb2RlbC5leHBhbmRlZD10aGlzLmV4cGFuZGVkLHRoaXMuX21vZGVsLmRpc2FibGVkPXRoaXMuZGlzYWJsZWQsdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5fbW9kZWwuc2Vs''@;'; put 'put ''ZWN0ZWQucGlwZShaYSgoKT0+IXRoaXMuc2tpcEVtaXRDaGFuZ2UpKS5zdWJzY3JpYmUoYT0+e3RoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChhKX0pKSx0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy5leHBh''@;'; put 'put ''bmRlZENoYW5nZS5lbWl0KGEpLHRoaXMuX21vZGVsLmV4cGFuZGVkPWF9KSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb2N1c01hbmFnZXIuZm9jdXNSZXF1ZXN0LnN1YnNjcmliZShhPT57dGhpcy5ub2RlSWQ9PT1hJiZ0aGlzLmZvY3VzVHJlZU5vZGUoKX0pLHRoaXMuZm9jdXNN''@;'; put 'put ''YW5hZ2VyLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy5jaGVja1RhYkluZGV4KGEpfSkpLHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuX21vZGVsLmxvYWRpbmckLnBpcGUoaDgoMCkpLnN1YnNjcmliZShhPT50aGlzLmlzTW9kZWxMb2FkaW5nPWEpKX1uZ0FmdGVyQ29udGVu''@;'; put 'put ''dEluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnR5cGVBaGVhZEtleUV2ZW50LnBpcGUoaDgoMjAwKSkuc3Vic2NyaWJlKGE9Pnt0aGlzLmZvY3VzTWFuYWdlci5mb2N1c05vZGVTdGFydHNXaXRoKGEsdGhpcy5fbW9kZWwpLHRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifSkp''@;'; put 'put ''fW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX21vZGVsLnRleHRDb250ZW50fHwodGhpcy5fbW9kZWwudGV4dENvbnRlbnQ9UHVlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb2RlbC5kZXN0cm95KCksdGhpcy5zdWJzY3Jp''@;'; put 'put ''cHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1pc0V4cGFuZGFibGUoKXtyZXR1cm4gdHlwZW9mIHRoaXMuZXhwYW5kYWJsZTwidSI/dGhpcy5leHBhbmRhYmxlOiEhdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGFibGV8fHRoaXMuaXNQYXJlbnR9aXNTZWxlY3RhYmxlKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGV9Zm9jdXNUcmVlTm9kZSgpe2NvbnN0IGE9dGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7bWEodGhpcy5wbGF0Zm9ybUlkKSYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEmJih0aGlzLnNldFRhYkluZGV4KDAp''@;'; put 'put ''LGEuZm9jdXMoKSxhLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pKX1icm9hZGNhc3RGb2N1c09uQ29udGFpbmVyKCl7dGhpcy5mb2N1c01hbmFnZXIuYnJvYWRjYXN0Rm9jdXNlZE5vZGUodGhpcy5ub2RlSWQpfW9uS2V5RG93bihhKXtzd2l0Y2go''@;'; put 'put ''VFooYSksRWgoYS5rZXkpKXtjYXNlIFRvLkFycm93VXA6dGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQWJvdmUodGhpcy5fbW9kZWwpO2JyZWFrO2Nhc2UgVG8uQXJyb3dEb3duOnRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTticmVhaztjYXNlIFRvLkFy''@;'; put 'put ''cm93UmlnaHQ6dGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpO2JyZWFrO2Nhc2UgVG8uQXJyb3dMZWZ0OnRoaXMuY29sbGFwc2VPckZvY3VzUGFyZW50KCk7YnJlYWs7Y2FzZSBUby5Ib21lOmEucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzTWFuYWdlci5mb2N1c0ZpcnN0VmlzaWJs''@;'; put 'put ''ZU5vZGUoKTticmVhaztjYXNlIFRvLkVuZDphLnByZXZlbnREZWZhdWx0KCksdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNMYXN0VmlzaWJsZU5vZGUoKTticmVhaztjYXNlIFRvLkVudGVyOnRoaXMudG9nZ2xlRXhwYW5kT3JUcmlnZ2VyRGVmYXVsdCgpO2JyZWFrO2Nhc2UgVG8uU3BhY2U6Y2Fz''@;'; put 'put ''ZSBUby5TcGFjZWJhcjphLnByZXZlbnREZWZhdWx0KCksdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7YnJlYWs7ZGVmYXVsdDppZih0aGlzLl9tb2RlbC50ZXh0Q29udGVudCYmZnVuY3Rpb24gdEhlKGwpe2NvbnN0IGM9bC5rZXk7cmV0dXJuIGMudG9Mb3dlckNhc2UoKSE9''@;'; put 'put ''PWMudG9VcHBlckNhc2UoKXx8Yz49IjAiJiZjPD0iOSJ9KGEpKXJldHVybiB0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcis9YS5rZXksdm9pZCB0aGlzLnR5cGVBaGVhZEtleUV2ZW50Lm5leHQodGhpcy50eXBlQWhlYWRLZXlCdWZmZXIpfXRoaXMudHlwZUFoZWFkS2V5QnVmZmVyPSIifXNldFRh''@;'; put 'put ''YkluZGV4KGEpe3RoaXMuY29udGVudENvbnRhaW5lclRhYmluZGV4PWEsdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsYSl9Y2hlY2tUYWJJbmRleChhKXttYSh0aGlzLnBsYXRmb3JtSWQpJiZ0aGlzLm5vZGVJZCE9PWEmJi0xIT09''@;'; put 'put ''dGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXgmJnRoaXMuc2V0VGFiSW5kZXgoLTEpfXRvZ2dsZUV4cGFuZE9yVHJpZ2dlckRlZmF1bHQoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5pc0V4cGFuZGFibGUoKSYmIXRoaXMuaXNTZWxlY3RhYmxlKCk/dGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFu''@;'; put 'put ''ZGVkPSF0aGlzLmV4cGFuZGVkOnRoaXMudHJpZ2dlckRlZmF1bHRBY3Rpb24oKSl9ZXhwYW5kT3JGb2N1c0ZpcnN0Q2hpbGQoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5leHBhbmRlZD90aGlzLmlzUGFyZW50JiZ0aGlzLmZvY3VzTWFuYWdlci5mb2N1c05vZGVCZWxvdyh0aGlzLl9tb2RlbCk6''@;'; put 'put ''dGhpcy5pc0V4cGFuZGFibGUoKSYmKHRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD0hMCkpfWNvbGxhcHNlT3JGb2N1c1BhcmVudCgpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLmV4cGFuZGVkP3RoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZD0hMTp0aGlzLmZvY3VzTWFuYWdlci5mb2N1c1Bh''@;'; put 'put ''cmVudCh0aGlzLl9tb2RlbCkpfXRyaWdnZXJEZWZhdWx0QWN0aW9uKCl7dGhpcy50cmVlTm9kZUxpbms/dGhpcy50cmVlTm9kZUxpbmsuYWN0aXZhdGUoKTp0aGlzLmlzU2VsZWN0YWJsZSgpJiZ0aGlzLl9tb2RlbC50b2dnbGVTZWxlY3Rpb24odGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIp''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShJbyksSmUobCwxMiksSmUoRDgpLEplKG8xKSxKZShVcyksSmUodVkpLEplKE5pKSxKZShNYSkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdHJlZS1ub2RlIl1dLGNv''@;'; put 'put ''bnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgseTQsNCksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC50cmVlTm9kZUxpbmtMaXN0PWYpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZhJiZIbyhJRmUsNyxOaSksMiZhKXtsZXQgaDtsaShoPWNpKCkpJiYo''@;'; put 'put ''ZC5jb250ZW50Q29udGFpbmVyPWguZmlyc3QpfX0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJjbHItdHJlZS1ub2RlIiwhMCkoImRpc2FibGVkIixkLl9tb2RlbC5kaXNhYmxlZCl9LGlucHV0czp7ZXhwYW5kYWJsZTpbam4uTm9uZSwiY2xyRXhwYW5k''@;'; put 'put ''YWJsZSIsImV4cGFuZGFibGUiXSxkaXNhYmxlZDpbam4uTm9uZSwiY2xyRGlzYWJsZWQiLCJkaXNhYmxlZCJdLHNlbGVjdGVkOltqbi5Ob25lLCJjbHJTZWxlY3RlZCIsInNlbGVjdGVkIl0sZXhwYW5kZWQ6W2puLk5vbmUsImNsckV4cGFuZGVkIiwiZXhwYW5kZWQiXSxjbHJGb3JUeXBlQWhl''@;'; put 'put ''YWQ6ImNsckZvclR5cGVBaGVhZCJ9LG91dHB1dHM6e3NlbGVjdGVkQ2hhbmdlOiJjbHJTZWxlY3RlZENoYW5nZSIsZXhwYW5kZWRDaGFuZ2U6ImNsckV4cGFuZGVkQ2hhbmdlIn0sZmVhdHVyZXM6W1ppKFtJdWUsbzEse3Byb3ZpZGU6dk0sdXNlRXhpc3Rpbmc6bzF9XSldLG5nQ29udGVudFNl''@;'; put 'put ''bGVjdG9yczpMRmUsZGVjbHM6MTIsdmFyczoxMixjb25zdHM6W1siY29udGVudENvbnRhaW5lciIsIiJdLFsidHJlZW5vZGVDb250ZW50IiwiIl0sWyJyb2xlIiwidHJlZWl0ZW0iLCJ0YWJpbmRleCIsIi0xIiwxLCJjbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIiwzLCJrZXlkb3du''@;'; put 'put ''IiwiZm9jdXMiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInR5cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIi0xIiwiY2xhc3MiLCJjbHItdHJlZW5vZGUtY2FyZXQiLDMsImRpc2FibGVkIiwiY2xpY2siLCJmb2N1cyIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItdHJlZW5vZGUtc3Bpbm5lci1j''@;'; put 'put ''b250YWluZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLWNoZWNrYm94LXdyYXBwZXIgY2xyLXRyZWVub2RlLWNoZWNrYm94Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci10cmVlbm9kZS1jb250ZW50IiwzLCJjbHItdHJlZW5vZGUtdGV4dC1vbmx5IiwibW91c2V1cCIsNCwibmdJZiJdLFsx''@;'; put 'put ''LCJjbHItdHJlZW5vZGUtY2hpbGRyZW4iXSxbMywicGFyZW50Il0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCItMSIsMSwiY2xyLXRyZWVub2RlLWNhcmV0IiwzLCJjbGljayIsImZvY3VzIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwiYW5nbGUiLDEs''@;'; put 'put ''ImNsci10cmVlbm9kZS1jYXJldC1pY29uIl0sWzEsImNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciJdLFsxLCJjbHItdHJlZW5vZGUtc3Bpbm5lciIsInNwaW5uZXIiXSxbMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLCJjbHItdHJlZW5vZGUtY2hlY2tib3giXSxbImFyaWEtaGlkZGVu''@;'; put 'put ''IiwidHJ1ZSIsInR5cGUiLCJjaGVja2JveCIsInRhYmluZGV4IiwiLTEiLDEsImNsci1jaGVja2JveCIsMywiY2hhbmdlIiwiZm9jdXMiLCJpZCIsImRpc2FibGVkIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiXSxbMSwiY2xyLWNvbnRyb2wtbGFiZWwiLDMsImZvciJdLFszLCJuZ1RlbXBs''@;'; put 'put ''YXRlT3V0bGV0Il0sWzEsImNsci10cmVlbm9kZS1jb250ZW50IiwzLCJtb3VzZXVwIl0sWyJjbGFzcyIsImNsci1zci1vbmx5Iiw0LCJuZ0lmIl0sWzEsImNsci1zci1vbmx5Il0sWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXtpZigxJmEpe2NvbnN0IGg9U24oKTtIaShSRmUp''@;'; put 'put ''LGdlKDAsImRpdiIsMiwwKSxJdCgia2V5ZG93biIsZnVuY3Rpb24odil7cmV0dXJuIF90KGgpLGJ0KGQub25LZXlEb3duKHYpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoaCksYnQoZC5icm9hZGNhc3RGb2N1c09uQ29udGFpbmVyKCkpfSksZ3QoMixPRmUsMiwyLCJidXR0b24i''@;'; put 'put ''LDMpKDMsUEZlLDIsMCwiZGl2Iiw0KSg0LEZGZSw0LDgsImRpdiIsNSkoNSxORmUsMiwzLCJkaXYiLDYpKDYsakZlLDIsMSwibmctdGVtcGxhdGUiLG51bGwsMSxidSksbWUoKSxnZSg4LCJkaXYiLDcpLElyKDkpLElyKDEwLDEpLFl0KDExLCJjbHItcmVjdXJzaXZlLWNoaWxkcmVuIiw4KSxt''@;'; put 'put ''ZSgpfTImYSYmKHByKCJjbHItZm9ybS1jb250cm9sLWRpc2FibGVkIixkLmRpc2FibGVkKSx1cigiYXJpYS1kaXNhYmxlZCIsZC5kaXNhYmxlZCkoImFyaWEtZXhwYW5kZWQiLGQuaXNFeHBhbmRhYmxlKCk/ZC5leHBhbmRlZDpudWxsKSgiYXJpYS1zZWxlY3RlZCIsZC5hcmlhU2VsZWN0ZWQp''@;'; put 'put ''LF9lKDIpLFJlKCJuZ0lmIixkLmlzRXhwYW5kYWJsZSgpJiYhZC5pc01vZGVsTG9hZGluZyYmIWQuZXhwYW5kU2VydmljZS5sb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIixkLmV4cGFuZFNlcnZpY2UubG9hZGluZ3x8ZC5pc01vZGVsTG9hZGluZyksX2UoKSxSZSgibmdJZiIsZC5mZWF0dXJlc1Nl''@;'; put 'put ''cnZpY2Uuc2VsZWN0YWJsZSksX2UoKSxSZSgibmdJZiIsIWQuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUpLF9lKDMpLFJlKCJAdG9nZ2xlQ2hpbGRyZW5BbmltIixkLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIiksdXIoInJvbGUiLGQuaXNFeHBhbmRh''@;'; put 'put ''YmxlKCkmJiFkLmZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24/Imdyb3VwIjpudWxsKSxfZSgzKSxSZSgicGFyZW50IixkLl9tb2RlbCkpfSxkZXBlbmRlbmNpZXM6WyRpLHZkLEdzLFJ1ZV0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbQ2QoInRvZ2dsZUNoaWxkcmVuQW5pbSIs''@;'; put 'put ''W1NjKCJjb2xsYXBzZWQgPT4gZXhwYW5kZWQiLFtGcyh7aGVpZ2h0OjB9KSxqdSgyMDAsRnMoe2hlaWdodDoiKiJ9KSldKSxTYygiZXhwYW5kZWQgPT4gY29sbGFwc2VkIixbRnMoe2hlaWdodDoiKiJ9KSxqdSgyMDAsRnMoe2hlaWdodDowfSkpXSksSkkoImV4cGFuZGVkIixGcyh7aGVpZ2h0''@;'; put 'put ''OiIqIiwib3ZlcmZsb3cteSI6InZpc2libGUifSkpLEpJKCJjb2xsYXBzZWQiLEZzKHtoZWlnaHQ6MH0pKV0pXX19KSxsfSkoKTtmdW5jdGlvbiBQdWUobCl7cmV0dXJuIGwudG9Mb2NhbGVMb3dlckNhc2UoKS50cmltKCl9bGV0IEFkPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLHtu''@;'; put 'put ''YXRpdmVFbGVtZW50Omh9LGYsdil7dGhpcy5mZWF0dXJlc1NlcnZpY2U9YSx0aGlzLmZvY3VzTWFuYWdlclNlcnZpY2U9ZCx0aGlzLnN1YnNjcmlwdGlvbnM9W107Y29uc3QgUz12LnJ1bk91dHNpZGVBbmd1bGFyKCgpPT53ZChoLCJmb2N1c2luIikuc3Vic2NyaWJlKFY9PntWLnRhcmdldD09''@;'; put 'put ''PWgmJih0aGlzLmZvY3VzTWFuYWdlclNlcnZpY2UuZm9jdXNGaXJzdFZpc2libGVOb2RlKCksZi5yZW1vdmVBdHRyaWJ1dGUoaCwidGFiaW5kZXgiKSl9KSk7dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goUyl9c2V0IGxhenkoYSl7dGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXI9IWF9Z2V0IGlz''@;'; put 'put ''TXVsdGlTZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUmJnRoaXMucm9vdE5vZGVzLmxlbmd0aD4wfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc2V0Um9vdE5vZGVzKCksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yb290Tm9kZXMuY2hh''@;'; put 'put ''bmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLnNldFJvb3ROb2RlcygpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goYT0+YS51bnN1YnNjcmliZSgpKX1zZXRSb290Tm9kZXMoKXt0aGlzLmZvY3VzTWFuYWdlclNlcnZpY2Uucm9vdE5vZGVNb2RlbHM9dGhpcy5y''@;'; put 'put ''b290Tm9kZXMubWFwKGE9PmEuX21vZGVsKS5maWx0ZXIoYT0+IWEucGFyZW50KX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoRDgpLEplKHVZKSxKZShOaSksSmUoZHMpLEplKE1vKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3Jz''@;'; put 'put ''OltbImNsci10cmVlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsSDEsNCksMiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5yb290Tm9kZXM9Zil9fSxob3N0QXR0cnM6WyJ0YWJpbmRleCIsIjAiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlv''@;'; put 'put ''bihhLGQpezImYSYmdXIoInJvbGUiLCJ0cmVlIikoImFyaWEtbXVsdGlzZWxlY3RhYmxlIixkLmlzTXVsdGlTZWxlY3RhYmxlKX0saW5wdXRzOntsYXp5Oltqbi5Ob25lLCJjbHJMYXp5IiwibGF6eSJdfSxmZWF0dXJlczpbWmkoW0l1ZSx1WV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVj''@;'; put 'put ''bHM6Mix2YXJzOjEsY29uc3RzOltbMywiY2hpbGRyZW4iLDQsIm5nSWYiXSxbMywiY2hpbGRyZW4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaSgpLElyKDApLGd0KDEsekZlLDEsMSwiY2xyLXJlY3Vyc2l2ZS1jaGlsZHJlbiIsMCkpLDImYSYmKF9lKCksUmUoIm5nSWYiLGQu''@;'; put 'put ''ZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbikpfSxkZXBlbmRlbmNpZXM6WyRpLFJ1ZV0sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksSVZlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXtXcy5hZGRJY29ucyhDXyl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3''@;'; put 'put ''KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vLG5hLERaXX0pLGx9KSgpLFJWZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6''@;'; put 'put ''bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltTVmUseFZlLElWZV19KSxsfSkoKTtmdW5jdGlvbiBGdWUobCxjLGEpe3JldHVybiBDbi5jcmVhdGUoZD0+e2MoZCk7Y29uc3QgaD1sLnN1YnNjcmliZShkKTtyZXR1cm4oKT0+e2gudW5zdWJzY3JpYmUoKSxhJiZhKGQpfX0pfWxldCBQUj0o''@;'; put 'put ''KCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5yZW5kZXJlcj1hLHRoaXMucGFyZW50PWQsdGhpcy50b2dnbGVTZXJ2aWNlPWgsdGhpcy5mb2N1c1NlcnZpY2U9Zix0aGlzLnBsYXRmb3JtSWQ9dix0aGlzLmlkPXR1KCksdGhpcy5mb2N1c0JhY2tPblRyaWdnZXJXaGVu''@;'; put 'put ''Q2xvc2VkPSExLHRoaXMuX3VubGlzdGVuRnVuY3M9W10sdGhpcy5yZXNldENoaWxkcmVuKCksdGhpcy5tb3ZlVG9GaXJzdEl0ZW1XaGVuT3BlbigpLHRoaXMucGFyZW50fHx0aGlzLmhhbmRsZVJvb3RGb2N1cygpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ9c2V0IHRyaWdn''@;'; put 'put ''ZXIoYSl7dGhpcy5fdHJpZ2dlcj1hLHRoaXMucGFyZW50P3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmFycm93cmlnaHQiLGQ9PnRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZCkpKToodGhpcy5fdW5saXN0ZW5GdW5j''@;'; put 'put ''cy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImtleWRvd24uYXJyb3d1cCIsZD0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChkKSkpLHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmFycm93ZG93biIsZD0+dGhp''@;'; put 'put ''cy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChkKSkpLHRoaXMuZm9jdXNTZXJ2aWNlLmxpc3RlblRvQXJyb3dLZXlzKGEpKX1nZXQgY29udGFpbmVyKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn1zZXQgY29udGFpbmVyKGEpe3RoaXMuX2NvbnRhaW5lcj1hLHRoaXMuX3VubGlzdGVu''@;'; put 'put ''RnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLnRhYiIsZD0+dGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChkKSkpLHRoaXMucGFyZW50P3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbihhLCJrZXlkb3duLmVzY2Fw''@;'; put 'put ''ZSIsZD0+e3RoaXMuZm9jdXNTZXJ2aWNlLm1vdmUoTWQuTEVGVCksZC5zdG9wUHJvcGFnYXRpb24oKX0pKToodGhpcy5mb2N1c1NlcnZpY2UucmVnaXN0ZXJDb250YWluZXIoYSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImtleWRvd24uZXNjYXBl''@;'; put 'put ''IixkPT50aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGQpKSksdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKGEsImJsdXIiLGQ9Pnt0aGlzLmNoaWxkcmVuLnBpcGUoWjIoMSkpLnN1YnNjcmliZShmPT5mLmZvckVhY2godj0+di5ibHVyKCkp''@;'; put 'put ''KTtjb25zdCBoPWQucmVsYXRlZFRhcmdldHx8ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtoJiZtYSh0aGlzLnBsYXRmb3JtSWQpJiYoYS5jb250YWlucyhoKXx8aD09PXRoaXMudHJpZ2dlcil8fCh0aGlzLmZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQ9ITEsdGhpcy50b2dnbGVTZXJ2aWNl''@;'; put 'put ''Lm9wZW49ITEpfSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3VubGlzdGVuRnVuY3MuZm9yRWFjaChhPT5hKCkpLHRoaXMuZm9jdXNTZXJ2aWNlLmRldGFjaExpc3RlbmVycygpfW1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCl7Y29uc3QgYT10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5z''@;'; put 'put ''dWJzY3JpYmUoZD0+e2QmJnRoaXMudG9nZ2xlU2VydmljZS5vcmlnaW5hbEV2ZW50JiZzZXRUaW1lb3V0KCgpPT57dGhpcy5mb2N1c1NlcnZpY2UubW92ZVRvKHRoaXMpLHRoaXMuZm9jdXNTZXJ2aWNlLm1vdmUodGhpcy5wYXJlbnQ/TWQuUklHSFQ6TWQuRE9XTil9KX0pO3RoaXMuX3VubGlz''@;'; put 'put ''dGVuRnVuY3MucHVzaCgoKT0+YS51bnN1YnNjcmliZSgpKX1oYW5kbGVSb290Rm9jdXMoKXtjb25zdCBhPXRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShkPT57ZHx8KHRoaXMuZm9jdXNTZXJ2aWNlLnJlc2V0KHRoaXMpLHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyV2hl''@;'; put 'put ''bkNsb3NlZCYmdGhpcy5mb2N1cygpKSx0aGlzLmZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQ9ZH0pO3RoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKT0+YS51bnN1YnNjcmliZSgpKX1mb2N1cygpe3RoaXMudHJpZ2dlciYmbWEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50cmlnZ2VyLmZv''@;'; put 'put ''Y3VzKCl9Ymx1cigpe3RoaXMudHJpZ2dlciYmbWEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy50cmlnZ2VyLmJsdXIoKX1hY3RpdmF0ZSgpe21hKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMudHJpZ2dlci5jbGljaygpfXJlc2V0Q2hpbGRyZW4oKXt0aGlzLmNoaWxkcmVuPW5ldyBvTSgxKSx0aGlz''@;'; put 'put ''LnBhcmVudD90aGlzLnJpZ2h0PXRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShicihhPT5hWzBdKSk6KHRoaXMuZG93bj10aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUoYnIoYT0+YVswXSkpLHRoaXMudXA9dGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4oKS5waXBlKGJyKGE9PmFb''@;'; put 'put ''YS5sZW5ndGgtMV0pKSl9YWRkQ2hpbGRyZW4oYSl7QVoubGlua1ZlcnRpY2FsKGEpLHRoaXMucGFyZW50JiZBWi5saW5rUGFyZW50KGEsdGhpcy5jbG9zZUFuZEdldFRoaXMoKSxNZC5MRUZUKSx0aGlzLmNoaWxkcmVuLm5leHQoYSl9b3BlbkFuZEdldENoaWxkcmVuKCl7cmV0dXJuIEZ1ZSh0''@;'; put 'put ''aGlzLmNoaWxkcmVuLCgpPT50aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMCl9Y2xvc2VBbmRHZXRUaGlzKCl7cmV0dXJuIEZ1ZShPbyh0aGlzKSwoKT0+dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShj''@;'; put 'put ''cihkcyksY3IobCwxMiksY3IoUmwpLGNyKFQzKSxjcihJbykpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpO2NvbnN0IExWZT1ydWUoUFIpO2xldCBQTT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fY2hhbmdlcz1uZXcgdG59''@;'; put 'put ''Z2V0IGNoYW5nZXMoKXtyZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKX1jbG9zZU1lbnVzKCl7dGhpcy5fY2hhbmdlcy5uZXh0KCExKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0''@;'; put 'put ''b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCk7Y29uc3QgUFZlPXtwcm92aWRlOlBNLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gT1ZlKGwpe3JldHVybiBsfHxuZXcgUE19LGRlcHM6W1tuZXcgWTAsbmV3IHkxLFBNXV19O2xldCB3ND0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhp''@;'; put 'put ''cy5wYXJlbnQ9YSx0aGlzLnRvZ2dsZVNlcnZpY2U9ZCx0aGlzLmZvY3VzSGFuZGxlcj1oLHRoaXMuY2RyPWYsdGhpcy5pc01lbnVDbG9zYWJsZT0hMCx0aGlzLnN1YnNjcmlwdGlvbnM9W10sdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godi5jaGFuZ2VzLnN1YnNjcmliZShTPT50aGlzLnRvZ2ds''@;'; put 'put ''ZVNlcnZpY2Uub3Blbj1TKSksdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZC5vcGVuQ2hhbmdlLnN1YnNjcmliZSgoKT0+dGhpcy5jZHIubWFya0ZvckNoZWNrKCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGE9PmEudW5zdWJzY3JpYmUoKSl9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGwsMTIpLEplKFJsKSxKZShQUiksSmUoY2EpLEplKFBNKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci1kcm9wZG93biJdXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbihh''@;'; put 'put ''LGQpezImYSYmcHIoImRyb3Bkb3duIiwhMCkoIm9wZW4iLGQudG9nZ2xlU2VydmljZS5vcGVuKX0saW5wdXRzOntpc01lbnVDbG9zYWJsZTpbam4uTm9uZSwiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCJpc01lbnVDbG9zYWJsZSJdfSxmZWF0dXJlczpbWmkoW1BWZSxLY2UsTFZlXSksQTEo''@;'; put 'put ''W2g0XSldLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTtjb25zdCBGVmU9W3twcm92aWRlOnZSLHVzZUNsYXNzOigoKT0+e2NsYXNzIGx7Y29uc3RydWN0''@;'; put 'put ''b3IoYSxkLGgpe3RoaXMuZWw9YSx0aGlzLnJlbmRlcmVyPWQsdGhpcy5wbGF0Zm9ybUlkPWgsdGhpcy5pZD10dSgpLHRoaXMuZGlzYWJsZWQ9ITEsZC5zZXRBdHRyaWJ1dGUoYS5uYXRpdmVFbGVtZW50LCJpZCIsdGhpcy5pZCksZC5zZXRBdHRyaWJ1dGUoYS5uYXRpdmVFbGVtZW50LCJ0YWJp''@;'; put 'put ''bmRleCIsIi0xIil9Zm9jdXMoKXttYSh0aGlzLnBsYXRmb3JtSWQpJiYodGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIsIjAiKSx0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xs''@;'; put 'put ''SW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIiLGlubGluZToibmVhcmVzdCJ9KSl9Ymx1cigpe21hKHRoaXMucGxhdGZvcm1JZCkmJih0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4IiwiLTEiKSx0aGlzLmVs''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQuYmx1cigpKX1hY3RpdmF0ZSgpe21hKHRoaXMucGxhdGZvcm1JZCkmJnRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGljaygpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihOaSksY3IoZHMpLGNyKElvKSl9LGwuXHUwMjc1''@;'; put 'put ''cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCl9XTtsZXQgSl89KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5kcm9wZG93bj1hLHRoaXMuX2Ryb3Bkb3duU2VydmljZT1kLHRoaXMuZm9jdXNhYmxlSXRlbT1ofWdldCBkaXNhYmxlZCgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmZvY3VzYWJsZUl0ZW0uZGlzYWJsZWR9c2V0IGRpc2FibGVkKGEpe3RoaXMuZm9jdXNhYmxlSXRlbS5kaXNhYmxlZD0hIWF8fCIiPT09YX1nZXQgZHJvcGRvd25JdGVtSWQoKXtyZXR1cm4gdGhpcy5mb2N1c2FibGVJdGVtLmlkfXNldCBkcm9wZG93bkl0ZW1JZChhKXt0aGlz''@;'; put 'put ''LmZvY3VzYWJsZUl0ZW0uaWQ9YX1vbkRyb3Bkb3duSXRlbUNsaWNrKCl7aWYodGhpcy5kcm9wZG93bi5pc01lbnVDbG9zYWJsZSYmIXRoaXMuZGlzYWJsZWQmJnRoaXMuZHJvcGRvd24udG9nZ2xlU2VydmljZS5vcGVuKXtjb25zdCBhPXRoaXMuZmluZFJvb3REcm9wZG93bigpO2EuZm9jdXNI''@;'; put 'put ''YW5kbGVyLmZvY3VzKCksYS5mb2N1c0hhbmRsZXIuZm9jdXNCYWNrT25UcmlnZ2VyV2hlbkNsb3NlZD0hMX1zZXRUaW1lb3V0KCgpPT57dGhpcy5kcm9wZG93bi5pc01lbnVDbG9zYWJsZSYmIXRoaXMuZGlzYWJsZWQmJnRoaXMuX2Ryb3Bkb3duU2VydmljZS5jbG9zZU1lbnVzKCl9KX1vblNw''@;'; put 'put ''YWNlS2V5ZG93bihhKXt0aGlzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbklmRGlzYWJsZWQoYSl9b25FbnRlcktleWRvd24oYSl7dGhpcy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb25JZkRpc2FibGVkKGEpfXN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbklmRGlzYWJsZWQoYSl7dGhpcy5kaXNh''@;'; put 'put ''YmxlZCYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX1maW5kUm9vdERyb3Bkb3duKCl7bGV0IGE9dGhpcy5kcm9wZG93bjtmb3IoO2EucGFyZW50OylhPWEucGFyZW50O3JldHVybiBhfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0''@;'; put 'put ''dXJuIG5ldyhhfHxsKShKZSh3NCksSmUoUE0pLEplKHZSKSl9LGwuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsckRyb3Bkb3duSXRlbSIsIiJdXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezEmYSYmSXQoImNsaWNrIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBkLm9uRHJvcGRvd25JdGVtQ2xpY2soKX0pKCJrZXlkb3duLnNwYWNlIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vblNwYWNlS2V5ZG93bihmKX0pKCJrZXlkb3duLmVudGVyIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vbkVudGVyS2V5ZG93bihmKX0pLDImYSYmKHVyKCJyb2xlIiwibWVu''@;'; put 'put ''dWl0ZW0iKSgiYXJpYS1kaXNhYmxlZCIsZC5kaXNhYmxlZCkoImlkIixkLmRyb3Bkb3duSXRlbUlkKSxwcigiZGlzYWJsZWQiLGQuZGlzYWJsZWQpKCJkcm9wZG93bi1pdGVtIiwhMCkpfSxpbnB1dHM6e2Rpc2FibGVkOltqbi5Ob25lLCJjbHJEaXNhYmxlZCIsImRpc2FibGVkIl0sZHJvcGRv''@;'; put 'put ''d25JdGVtSWQ6W2puLk5vbmUsImlkIiwiZHJvcGRvd25JdGVtSWQiXX0sZmVhdHVyZXM6W1ppKFtGVmVdKV19KSxsfSkoKTt2YXIgSnI9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5SSUdIVF9DRU5URVI9MF09IlJJR0hUX0NFTlRFUiIsbFtsLlJJR0hUX1RPUD0xXT0iUklHSFRfVE9QIixsW2wu''@;'; put 'put ''UklHSFRfQk9UVE9NPTJdPSJSSUdIVF9CT1RUT00iLGxbbC5UT1BfQ0VOVEVSPTNdPSJUT1BfQ0VOVEVSIixsW2wuVE9QX1JJR0hUPTRdPSJUT1BfUklHSFQiLGxbbC5UT1BfTEVGVD01XT0iVE9QX0xFRlQiLGxbbC5CT1RUT01fQ0VOVEVSPTZdPSJCT1RUT01fQ0VOVEVSIixsW2wuQk9UVE9N''@;'; put 'put ''X1JJR0hUPTddPSJCT1RUT01fUklHSFQiLGxbbC5CT1RUT01fTEVGVD04XT0iQk9UVE9NX0xFRlQiLGxbbC5MRUZUX0NFTlRFUj05XT0iTEVGVF9DRU5URVIiLGxbbC5MRUZUX1RPUD0xMF09IkxFRlRfVE9QIixsW2wuTEVGVF9CT1RUT009MTFdPSJMRUZUX0JPVFRPTSIsbH0oSnJ8fHt9KTtj''@;'; put 'put ''bGFzcyBWVmV7Y29uc3RydWN0b3IoYyl7dGhpcy5lbGVtZW50PWMsdGhpcy5ib3VuZE9uU2Nyb2xsTGlzdGVuZXI9dGhpcy5lbWl0U2Nyb2xsRXZlbnQuYmluZCh0aGlzKSx0aGlzLnNjcm9sbGFibGVFbGVtZW50cz1bXSxjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYy5zdHlsZS50b3A9''@;'; put 'put ''MCxjLnN0eWxlLmJvdHRvbT0iYXV0byIsYy5zdHlsZS5sZWZ0PTAsYy5zdHlsZS5yaWdodD0iYXV0byJ9YW5jaG9yKGMsYSxkLHtvZmZzZXRYOmg9MCxvZmZzZXRZOmY9MCx1c2VBbmNob3JQYXJlbnQ6dj0hMX09e30pe3RoaXMuYWRkU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoYyksdiYmKGM9Yy5w''@;'; put 'put ''YXJlbnROb2RlKSxjLnN0eWxlLnBvc2l0aW9uPSJzdGF0aWMiO2NvbnN0IFM9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxWPXRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgUT1TLmxlZnQtVi5sZWZ0K2gsZGU9Uy50b3AtVi50b3ArZjtzd2l0Y2goYSl7Y2FzZSBK''@;'; put 'put ''ci5MRUZUX1RPUDpjYXNlIEpyLlRPUF9MRUZUOmJyZWFrO2Nhc2UgSnIuVE9QX0NFTlRFUjpRKz1TLndpZHRoLzI7YnJlYWs7Y2FzZSBKci5UT1BfUklHSFQ6Y2FzZSBKci5SSUdIVF9UT1A6USs9Uy53aWR0aDticmVhaztjYXNlIEpyLkxFRlRfQk9UVE9NOmNhc2UgSnIuQk9UVE9NX0xFRlQ6''@;'; put 'put ''ZGUrPVMuaGVpZ2h0O2JyZWFrO2Nhc2UgSnIuQk9UVE9NX0NFTlRFUjpkZSs9Uy5oZWlnaHQsUSs9Uy53aWR0aC8yO2JyZWFrO2Nhc2UgSnIuQk9UVE9NX1JJR0hUOmNhc2UgSnIuUklHSFRfQk9UVE9NOmRlKz1TLmhlaWdodCxRKz1TLndpZHRoO2JyZWFrO2Nhc2UgSnIuTEVGVF9DRU5URVI6''@;'; put 'put ''ZGUrPVMuaGVpZ2h0LzI7YnJlYWs7Y2FzZSBKci5SSUdIVF9DRU5URVI6ZGUrPVMuaGVpZ2h0LzIsUSs9Uy53aWR0aH1zd2l0Y2goZCl7Y2FzZSBKci5MRUZUX1RPUDpjYXNlIEpyLlRPUF9MRUZUOmJyZWFrO2Nhc2UgSnIuVE9QX0NFTlRFUjpRLT1WLndpZHRoLzI7YnJlYWs7Y2FzZSBKci5U''@;'; put 'put ''T1BfUklHSFQ6Y2FzZSBKci5SSUdIVF9UT1A6US09Vi53aWR0aDticmVhaztjYXNlIEpyLkxFRlRfQk9UVE9NOmNhc2UgSnIuQk9UVE9NX0xFRlQ6ZGUtPVYuaGVpZ2h0O2JyZWFrO2Nhc2UgSnIuQk9UVE9NX0NFTlRFUjpkZS09Vi5oZWlnaHQsUS09Vi53aWR0aC8yO2JyZWFrO2Nhc2UgSnIu''@;'; put 'put ''Qk9UVE9NX1JJR0hUOmNhc2UgSnIuUklHSFRfQk9UVE9NOmRlLT1WLmhlaWdodCxRLT1WLndpZHRoO2JyZWFrO2Nhc2UgSnIuTEVGVF9DRU5URVI6ZGUtPVYuaGVpZ2h0LzI7YnJlYWs7Y2FzZSBKci5SSUdIVF9DRU5URVI6ZGUtPVYuaGVpZ2h0LzIsUS09Vi53aWR0aH1jb25zdCBwZT1nZXRD''@;'; put 'put ''b21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCksQ2U9cGFyc2VJbnQocGUubWFyZ2luTGVmdCwxMCksT2U9cGFyc2VJbnQocGUubWFyZ2luUmlnaHQsMTApLFllPXBhcnNlSW50KHBlLm1hcmdpblRvcCwxMCksZXQ9cGFyc2VJbnQocGUubWFyZ2luQm90dG9tLDEwKTtzd2l0Y2goYSl7Y2FzZSBK''@;'; put 'put ''ci5MRUZUX1RPUDpjYXNlIEpyLlRPUF9MRUZUOmNhc2UgSnIuVE9QX1JJR0hUOmNhc2UgSnIuUklHSFRfVE9QOihkPT09SnIuQk9UVE9NX1JJR0hUfHxkPT09SnIuUklHSFRfQk9UVE9NKSYmKGRlLT1ldCxRLT1PZSksKGQ9PT1Kci5CT1RUT01fTEVGVHx8ZD09PUpyLkxFRlRfQk9UVE9NKSYm''@;'; put 'put ''KGRlLT1ZZSxRKz1DZSksKGQ9PT1Kci5UT1BfTEVGVHx8ZD09PUpyLkxFRlRfVE9QKSYmKGRlKz1ZZSxRKz1DZSksKGQ9PT1Kci5UT1BfUklHSFR8fGQ9PT1Kci5SSUdIVF9UT1ApJiYoZGUrPVllLFEtPU9lKTticmVhaztjYXNlIEpyLkxFRlRfQk9UVE9NOmNhc2UgSnIuQk9UVE9NX0xFRlQ6''@;'; put 'put ''Y2FzZSBKci5CT1RUT01fUklHSFQ6Y2FzZSBKci5SSUdIVF9CT1RUT006KGQ9PT1Kci5CT1RUT01fTEVGVHx8ZD09PUpyLkxFRlRfQk9UVE9NKSYmKGRlLT1ldCxRKz1DZSksKGQ9PT1Kci5CT1RUT01fUklHSFR8fGQ9PT1Kci5SSUdIVF9CT1RUT00pJiYoZGUtPWV0LFEtPU9lKSwoZD09PUpy''@;'; put 'put ''LlRPUF9MRUZUfHxkPT09SnIuTEVGVF9UT1ApJiYoZGUrPVllLFErPUNlKSwoZD09PUpyLlRPUF9SSUdIVHx8ZD09PUpyLlJJR0hUX1RPUCkmJihkZSs9WWUsUS09T2UpO2JyZWFrO2Nhc2UgSnIuVE9QX0NFTlRFUjpkZS09ZXQsUSs9Q2UsUS09T2U7YnJlYWs7Y2FzZSBKci5CT1RUT01fQ0VO''@;'; put 'put ''VEVSOmRlKz1ZZSxRKz1DZSxRLT1PZTticmVhaztjYXNlIEpyLkxFRlRfQ0VOVEVSOmRlKz1ZZSxkZS09ZXQsUS09T2U7YnJlYWs7Y2FzZSBKci5SSUdIVF9DRU5URVI6ZGUrPVllLGRlLT1ldCxRKz1DZX1yZXR1cm4gdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWCgk''@;'; put 'put ''e01hdGgucm91bmQoUSl9cHgpIHRyYW5zbGF0ZVkoJHtNYXRoLnJvdW5kKGRlKX1weClgLHRoaXMuX3Njcm9sbC5hc09ic2VydmFibGUoKX1yZWxlYXNlKCl7dGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybT0iIix0aGlzLnJlbW92ZVNjcm9sbEV2ZW50TGlzdGVuZXJzKCl9aXNQb3NpdGlv''@;'; put 'put ''bmVkKGMpe2NvbnN0IGE9Z2V0Q29tcHV0ZWRTdHlsZShjKS5wb3NpdGlvbjtyZXR1cm4icmVsYXRpdmUiPT09YXx8ImFic29sdXRlIj09PWF8fCJmaXhlZCI9PT1hfWVtaXRTY3JvbGxFdmVudCgpe3RoaXMuX3Njcm9sbC5uZXh0KCl9YWRkU2Nyb2xsRXZlbnRMaXN0ZW5lcnMoYyl7dGhpcy5f''@;'; put 'put ''c2Nyb2xsPW5ldyB0bjtjb25zdCBhPWM7bGV0IGQ9Yztmb3IoO2QmJmQhPT1kb2N1bWVudCYmKHRoaXMuc2Nyb2xscyhkKSYmKGQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmJvdW5kT25TY3JvbGxMaXN0ZW5lciksdGhpcy5zY3JvbGxhYmxlRWxlbWVudHMucHVzaChkKSksZD09''@;'; put 'put ''PWF8fCF0aGlzLmlzUG9zaXRpb25lZChkKSk7KWQ9ZC5wYXJlbnROb2RlfXJlbW92ZVNjcm9sbEV2ZW50TGlzdGVuZXJzKCl7Zm9yKGNvbnN0IGMgb2YgdGhpcy5zY3JvbGxhYmxlRWxlbWVudHMpYy5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuYm91bmRPblNjcm9sbExpc3Rl''@;'; put 'put ''bmVyKTt0aGlzLnNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg9MCx0aGlzLl9zY3JvbGwmJih0aGlzLl9zY3JvbGwuY29tcGxldGUoKSxkZWxldGUgdGhpcy5fc2Nyb2xsKX1zY3JvbGxzKGMpe2NvbnN0IGE9Z2V0Q29tcHV0ZWRTdHlsZShjKTtyZXR1cm4ic2Nyb2xsIj09PWEub3ZlcmZsb3dY''@;'; put 'put ''fHwiYXV0byI9PT1hLm92ZXJmbG93WHx8InNjcm9sbCI9PT1hLm92ZXJmbG93WXx8ImF1dG8iPT09YS5vdmVyZmxvd1l9fWxldCBkWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5wYXJlbnRIb3N0PWQsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrPSExLHRoaXMucG9wb3Zl''@;'; put 'put ''ck9wdGlvbnM9e30sdGhpcy51cGRhdGVBbmNob3I9ITEsdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPW51bGwsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2s9aD0+e3RoaXMuYW5jaG9yRWxlbS5jb250YWlucyhoLnRhcmdldCl8fCh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSl9''@;'; put 'put ''LHRoaXMuZWw9YS5nZXQoTmkpLHRoaXMudG9nZ2xlU2VydmljZT1hLmdldChSbCksdGhpcy5yZW5kZXJlcj1hLmdldChkcyksdGhpcy5uZ1pvbmU9YS5nZXQoTW8pLHRoaXMucmVmPWEuZ2V0KGNhKSx0aGlzLmFuY2hvckVsZW09ZC5uYXRpdmVFbGVtZW50LHRoaXMucG9wb3Zlckluc3RhbmNl''@;'; put 'put ''PW5ldyBWVmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KSx0aGlzLnN1YnNjcmlwdGlvbj10aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoaD0+e2g/KHRoaXMuYW5jaG9yKCksdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpKToodGhpcy5yZWxlYXNlKCksdGhpcy5kZXRhY2hF''@;'; put 'put ''U0NMaXN0ZW5lcigpKX0pLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuJiYodGhpcy5hbmNob3IoKSx0aGlzLmF0dGFjaEVTQ0xpc3RlbmVyKCkpfWdldCBpc09mZlNjcmVlbigpe3JldHVybiF0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbn1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnVwZGF0ZUFu''@;'; put 'put ''Y2hvciYmKHRoaXMudXBkYXRlQW5jaG9yPSExLHRoaXMucG9wb3Zlckluc3RhbmNlLmFuY2hvcih0aGlzLmFuY2hvckVsZW0sdGhpcy5hbmNob3JQb2ludCx0aGlzLnBvcG92ZXJQb2ludCx0aGlzLnBvcG92ZXJPcHRpb25zKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Bl''@;'; put 'put ''bj0hMX0pLHRoaXMuYXR0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlbGVhc2UoKSx0aGlzLmRldGFjaEVTQ0xpc3RlbmVyKCksdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1hbmNob3IoKXt0aGlzLnVwZGF0ZUFuY2hvcj0hMH1yZWxlYXNl''@;'; put 'put ''KCl7dGhpcy5kZXRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpLHRoaXMucG9wb3Zlckluc3RhbmNlLnJlbGVhc2UoKX1hdHRhY2hFU0NMaXN0ZW5lcigpe3RoaXMucG9wb3Zlck9wdGlvbnMuaWdub3JlR2xvYmFsRVNDTGlzdGVuZXJ8fHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgp''@;'; put 'put ''PT57dGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyPXRoaXMucmVuZGVyZXIubGlzdGVuKCJkb2N1bWVudCIsImtleWRvd24iLGE9PnthJiZhLmtleSYmRWgoYS5rZXkpPT09VG8uRXNjYXBlJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMSx0aGlzLnJlZi5t''@;'; put 'put ''YXJrRm9yQ2hlY2soKX0pfSl9KX1kZXRhY2hFU0NMaXN0ZW5lcigpe3RoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lciYmKHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigpLHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcj1udWxsKX1hdHRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpe3RoaXMuY2xvc2VP''@;'; put 'put ''bk91dHNpZGVDbGljayYmdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJmRvY3VtZW50JiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2ssITApfWRldGFjaE91dHNpZGVDbGlj''@;'; put 'put ''a0xpc3RlbmVyKCl7dGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrJiZkb2N1bWVudCYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuY2xvc2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCEwKX19cmV0dXJuIGwuXHUw''@;'; put 'put ''Mjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoTWEpLEplKE5pLDQpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImlzLW9mZi1zY3JlZW4iLGQuaXNPZmZTY3JlZW4pfX0pLGx9KSgpLEk4''@;'; put 'put ''PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBkWXtjb25zdHJ1Y3RvcihhLGQsaCxmKXtpZighZCl0aHJvdyBuZXcgRXJyb3IoImNsci1kcm9wZG93bi1tZW51IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLWRyb3Bkb3duIik7c3VwZXIoYSxkKSxoPyh0aGlzLmFuY2hvclBvaW50''@;'; put 'put ''PUpyLlJJR0hUX1RPUCx0aGlzLnBvcG92ZXJQb2ludD1Kci5MRUZUX1RPUCk6KHRoaXMuYW5jaG9yUG9pbnQ9SnIuQk9UVE9NX0xFRlQsdGhpcy5wb3BvdmVyUG9pbnQ9SnIuTEVGVF9UT1ApLHRoaXMucG9wb3Zlck9wdGlvbnMuYWxsb3dNdWx0aXBsZU9wZW49ITAsdGhpcy5wb3BvdmVyT3B0''@;'; put 'put ''aW9ucy5pZ25vcmVHbG9iYWxFU0NMaXN0ZW5lcj0hMCx0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5mb2N1c0hhbmRsZXI9Zn1zZXQgcG9zaXRpb24oYSl7c3dpdGNoKGEpe2Nhc2UidG9wLXJpZ2h0Ijp0aGlzLmFuY2hvclBvaW50PUpyLlRPUF9SSUdIVCx0aGlzLnBvcG92ZXJQ''@;'; put 'put ''b2ludD1Kci5SSUdIVF9CT1RUT007YnJlYWs7Y2FzZSJ0b3AtbGVmdCI6dGhpcy5hbmNob3JQb2ludD1Kci5UT1BfTEVGVCx0aGlzLnBvcG92ZXJQb2ludD1Kci5MRUZUX0JPVFRPTTticmVhaztjYXNlImJvdHRvbS1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1Kci5CT1RUT01fUklHSFQsdGhp''@;'; put 'put ''cy5wb3BvdmVyUG9pbnQ9SnIuUklHSFRfVE9QO2JyZWFrO2Nhc2UiYm90dG9tLWxlZnQiOmRlZmF1bHQ6dGhpcy5hbmNob3JQb2ludD1Kci5CT1RUT01fTEVGVCx0aGlzLnBvcG92ZXJQb2ludD1Kci5MRUZUX1RPUDticmVhaztjYXNlInJpZ2h0LXRvcCI6dGhpcy5hbmNob3JQb2ludD1Kci5S''@;'; put 'put ''SUdIVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9SnIuTEVGVF9UT1A7YnJlYWs7Y2FzZSJyaWdodC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9SnIuUklHSFRfQk9UVE9NLHRoaXMucG9wb3ZlclBvaW50PUpyLkxFRlRfQk9UVE9NO2JyZWFrO2Nhc2UibGVmdC10b3AiOnRoaXMuYW5jaG9yUG9p''@;'; put 'put ''bnQ9SnIuTEVGVF9UT1AsdGhpcy5wb3BvdmVyUG9pbnQ9SnIuUklHSFRfVE9QO2JyZWFrO2Nhc2UibGVmdC1ib3R0b20iOnRoaXMuYW5jaG9yUG9pbnQ9SnIuTEVGVF9CT1RUT00sdGhpcy5wb3BvdmVyUG9pbnQ9SnIuUklHSFRfQk9UVE9NfX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLmZv''@;'; put 'put ''Y3VzSGFuZGxlci5jb250YWluZXI9dGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMuaXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9PnRoaXMuZm9jdXNIYW5kbGVyLmFkZENoaWxkcmVuKHRoaXMuaXRlbXMudG9BcnJheSgpKSksdGhpcy5pdGVtcy5ub3RpZnlPbkNoYW5nZXMoKX1uZ09uRGVz''@;'; put 'put ''dHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5mb2N1c0hhbmRsZXIucmVzZXRDaGlsZHJlbigpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShNYSksSmUoZFIsOCksSmUobCwxMiksSmUoUFIpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6''@;'; put 'put ''bCxzZWxlY3RvcnM6W1siY2xyLWRyb3Bkb3duLW1lbnUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24oYSxkLGgpe2lmKDEmYSYmdHMoaCx2Uiw0KSwyJmEpe2xldCBmO2xpKGY9Y2koKSkmJihkLml0ZW1zPWYpfX0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEm''@;'; put 'put ''Jih1cigicm9sZSIsIm1lbnUiKSxwcigiZHJvcGRvd24tbWVudSIsITApKX0saW5wdXRzOntwb3NpdGlvbjpbam4uTm9uZSwiY2xyUG9zaXRpb24iLCJwb3NpdGlvbiJdfSxmZWF0dXJlczpbZW9dLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlv''@;'; put 'put ''bihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxSOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMudG9nZ2xlU2VydmljZT1kLHRoaXMuaXNSb290TGV2ZWxUb2dnbGU9ITAsYS5wYXJlbnQmJih0aGlzLmlzUm9vdExldmVsVG9n''@;'; put 'put ''Z2xlPSExKSxmLnRyaWdnZXI9aC5uYXRpdmVFbGVtZW50fWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW59b25Ecm9wZG93blRyaWdnZXJDbGljayhhKXt0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZSh3NCksSmUoUmwpLEplKE5pKSxKZShQUikpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJEcm9wZG93blRyaWdnZXIiLCIiXSxbIiIsImNsckRyb3Bkb3duVG9nZ2xlIiwiIl1dLGhvc3RWYXJzOjEwLGhvc3RC''@;'; put 'put ''aW5kaW5nczpmdW5jdGlvbihhLGQpezEmYSYmSXQoImNsaWNrIixmdW5jdGlvbihmKXtyZXR1cm4gZC5vbkRyb3Bkb3duVHJpZ2dlckNsaWNrKGYpfSksMiZhJiYodXIoImFyaWEtaGFzcG9wdXAiLCJtZW51IikoImFyaWEtZXhwYW5kZWQiLGQuYWN0aXZlKSxwcigiZHJvcGRvd24tdG9nZ2xl''@;'; put 'put ''IixkLmlzUm9vdExldmVsVG9nZ2xlKSgiZHJvcGRvd24taXRlbSIsIWQuaXNSb290TGV2ZWxUb2dnbGUpKCJleHBhbmRhYmxlIiwhZC5pc1Jvb3RMZXZlbFRvZ2dsZSkoImFjdGl2ZSIsZC5hY3RpdmUpKX19KSxsfSkoKSxoWT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVu''@;'; put 'put ''Y3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxBaCxuYV19KSxsfSkoKTtjb25zdCBCVmU9WyJpbmZvIiwid2FybmluZyIsImRhbmdlciIsInN1Y2Nlc3MiLCJuZXV0cmFsIiwidW5rbm93biIsImxv''@;'; put 'put ''YWRpbmciXTtsZXQgZlk9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmNvbW1vblN0cmluZ3M9YSx0aGlzLmRlZmF1bHRJY29uU2hhcGU9ImluZm8tc3RhbmRhcmQiLHRoaXMuX2FsZXJ0SWNvblNoYXBlPSIiLHRoaXMuX2FsZXJ0VHlwZT0iaW5mbyJ9Z2V0IGFsZXJ0VHlwZSgp''@;'; put 'put ''e3JldHVybiB0aGlzLl9hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZShhKXtCVmUuaW5kZXhPZihhKT4tMSYmKHRoaXMuX2FsZXJ0VHlwZT1hKX1nZXQgYWxlcnRJY29uU2hhcGUoKXtyZXR1cm4iIj09PXRoaXMuX2FsZXJ0SWNvblNoYXBlP3RoaXMuaWNvbkluZm9Gcm9tVHlwZSh0aGlzLl9hbGVy''@;'; put 'put ''dFR5cGUpLnNoYXBlOnRoaXMuX2FsZXJ0SWNvblNoYXBlfXNldCBhbGVydEljb25TaGFwZShhKXthP2EhPT10aGlzLl9hbGVydEljb25TaGFwZSYmKHRoaXMuX2FsZXJ0SWNvblNoYXBlPWEpOnRoaXMuX2FsZXJ0SWNvblNoYXBlPSIifWdldCBhbGVydEljb25UaXRsZSgpe3JldHVybiB0aGlz''@;'; put 'put ''Lmljb25JbmZvRnJvbVR5cGUodGhpcy5fYWxlcnRUeXBlKS50aXRsZX1pY29uSW5mb0Zyb21UeXBlKGEpe2NvbnN0IGQ9e3NoYXBlOiIiLGNzc0NsYXNzOiIiLHRpdGxlOiIifTtzd2l0Y2goYSl7Y2FzZSJ3YXJuaW5nIjpkLnNoYXBlPSJ3YXJuaW5nLXN0YW5kYXJkIixkLmNzc0NsYXNzPSJh''@;'; put 'put ''bGVydC13YXJuaW5nIixkLnRpdGxlPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLndhcm5pbmc7YnJlYWs7Y2FzZSJkYW5nZXIiOmQuc2hhcGU9ImVycm9yLXN0YW5kYXJkIixkLmNzc0NsYXNzPSJhbGVydC1kYW5nZXIiLGQudGl0bGU9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGFuZ2VyO2Jy''@;'; put 'put ''ZWFrO2Nhc2Uic3VjY2VzcyI6ZC5zaGFwZT0ic3VjY2Vzcy1zdGFuZGFyZCIsZC5jc3NDbGFzcz0iYWxlcnQtc3VjY2VzcyIsZC50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5zdWNjZXNzO2JyZWFrO2Nhc2UibmV1dHJhbCI6ZC5zaGFwZT0ibm90ZSIsZC5jc3NDbGFzcz0iYWxlcnQt''@;'; put 'put ''bmV1dHJhbCIsZC50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5uZXV0cmFsO2JyZWFrO2Nhc2UidW5rbm93biI6ZC5zaGFwZT0iaGVscCIsZC5jc3NDbGFzcz0iYWxlcnQtbmV1dHJhbCIsZC50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy51bmtub3duO2JyZWFrO2Nhc2UibG9h''@;'; put 'put ''ZGluZyI6ZC5zaGFwZT0ibG9hZGluZyIsZC5jc3NDbGFzcz0iYWxlcnQtbmV1dHJhbCIsZC50aXRsZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy51bmtub3duO2JyZWFrO2RlZmF1bHQ6ZC5zaGFwZT10aGlzLmRlZmF1bHRJY29uU2hhcGUsZC5jc3NDbGFzcz0iYWxlcnQtaW5mbyIsZC50aXRs''@;'; put 'put ''ZT10aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5pbmZvfXJldHVybiBkfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShjcihVcykpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLEZSPSgoKT0+e2NsYXNz''@;'; put 'put ''IGx7Y29uc3RydWN0b3IoKXt0aGlzLl9jaGFuZ2U9bmV3IHRufWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZS5hc09ic2VydmFibGUoKX1nZXQgY3VycmVudCgpe3JldHVybiB0aGlzLl9jdXJyZW50fXNldCBjdXJyZW50KGEpe2EhPT10aGlzLl9jdXJyZW50JiYodGhpcy5fY3Vy''@;'; put 'put ''cmVudD1hLHRoaXMuX2NoYW5nZS5uZXh0KGEpKX1nZXQgYWN0aXZlQWxlcnRzKCl7cmV0dXJuIHRoaXMuYWxsQWxlcnRzJiZ0aGlzLmFsbEFsZXJ0cy5maWx0ZXIoYT0+IWEuX2Nsb3NlZCl9Z2V0IGN1cnJlbnRBbGVydCgpe3JldHVybiB0aGlzLmFjdGl2ZUFsZXJ0cyYmdGhpcy5hY3RpdmVB''@;'; put 'put ''bGVydHNbdGhpcy5jdXJyZW50XX1zZXQgY3VycmVudEFsZXJ0KGEpe3RoaXMuY3VycmVudD10aGlzLmFjdGl2ZUFsZXJ0cy5pbmRleE9mKGEpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLmFjdGl2ZUFsZXJ0cyYmdGhpcy5hY3RpdmVBbGVydHMubGVuZ3RofHwwfW1hbmFnZShhKXt0aGlzLnN1''@;'; put 'put ''YnNjcmlwdGlvbiYmdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmFsbEFsZXJ0cz1hLHRoaXMuY3VycmVudD0ibnVtYmVyIj09dHlwZW9mIHRoaXMuX2N1cnJlbnQ/dGhpcy5fY3VycmVudDowLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuY3VycmVudCksdGhpcy5zdWJzY3Jp''@;'; put 'put ''cHRpb249dGhpcy5hbGxBbGVydHMuY2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmN1cnJlbnQ+PXRoaXMuYWxsQWxlcnRzLmxlbmd0aCYmKHRoaXMuY3VycmVudD1NYXRoLm1heCgwLHRoaXMuYWxsQWxlcnRzLmxlbmd0aC0xKSl9KX1uZXh0KCl7dGhpcy5fY3VycmVudD10aGlzLmN1cnJl''@;'; put 'put ''bnQ9PT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgtMT8wOnRoaXMuY3VycmVudCsxLHRoaXMuX2NoYW5nZS5uZXh0KHRoaXMuX2N1cnJlbnQpfXByZXZpb3VzKCl7MCE9PXRoaXMuYWN0aXZlQWxlcnRzLmxlbmd0aCYmKHRoaXMuX2N1cnJlbnQ9MD09PXRoaXMuY3VycmVudD90aGlzLmFjdGl2''@;'; put 'put ''ZUFsZXJ0cy5sZW5ndGgtMTp0aGlzLmN1cnJlbnQtMSx0aGlzLl9jaGFuZ2UubmV4dCh0aGlzLl9jdXJyZW50KSl9b3BlbigpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJih0aGlzLmN1cnJlbnRBbGVydHx8KHRoaXMuX2N1cnJlbnQ9MCksdGhpcy5fY2hhbmdlLm5leHQodGhpcy5f''@;'; put 'put ''Y3VycmVudCkpfWNsb3NlKGEpezAhPT10aGlzLmFjdGl2ZUFsZXJ0cy5sZW5ndGgmJihhJiYodGhpcy5fY3VycmVudD1NYXRoLm1heCgwLHRoaXMuY3VycmVudC0xKSksdGhpcy5fY2hhbmdlLm5leHQodGhpcy5fY3VycmVudCkpfWRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbiYmdGhpcy5z''@;'; put 'put ''dWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksRk09KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxm''@;'; put 'put ''LHYsUyl7dGhpcy5pY29uU2VydmljZT1hLHRoaXMuY2RyPWQsdGhpcy5tdWx0aUFsZXJ0U2VydmljZT1oLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMucmVuZGVyZXI9dix0aGlzLmhvc3RFbGVtZW50PVMsdGhpcy5pc1NtYWxsPSExLHRoaXMuY2xvc2FibGU9ITAsdGhpcy5pc0FwcExldmVs''@;'; put 'put ''PSExLHRoaXMuY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWw9dGhpcy5jb21tb25TdHJpbmdzLmtleXMuYWxlcnRDbG9zZUJ1dHRvbkFyaWFMYWJlbCx0aGlzLl9jbG9zZWRDaGFuZ2VkPW5ldyBEcighMSksdGhpcy5fY2xvc2VkPSExLHRoaXMuc3Vic2NyaXB0aW9ucz1bXSx0aGlzLl9pc0xpZ2h0''@;'; put 'put ''d2VpZ2h0PSExfWdldCBpc0xpZ2h0d2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2lzTGlnaHR3ZWlnaHR9c2V0IGlzTGlnaHR3ZWlnaHQoYSl7dGhpcy5faXNMaWdodHdlaWdodD1hLHRoaXMuY29uZmlnQWxlcnRUeXBlKHRoaXMuX29yaWdBbGVydFR5cGUpfWdldCBhbGVydFR5cGUoKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5pY29uU2VydmljZS5hbGVydFR5cGV9c2V0IGFsZXJ0VHlwZShhKXt0aGlzLl9vcmlnQWxlcnRUeXBlPWEsdGhpcy5jb25maWdBbGVydFR5cGUoYSl9c2V0IGFsZXJ0SWNvblNoYXBlKGEpe3RoaXMuaWNvblNlcnZpY2UuYWxlcnRJY29uU2hhcGU9YX1zZXQgY2xvc2VkKGEpe2EmJiF0''@;'; put 'put ''aGlzLl9jbG9zZWQ/dGhpcy5jbG9zZSgpOiFhJiZ0aGlzLl9jbG9zZWQmJnRoaXMub3BlbigpfWdldCBhbGVydENsYXNzKCl7cmV0dXJuIHRoaXMuaWNvblNlcnZpY2UuaWNvbkluZm9Gcm9tVHlwZSh0aGlzLmljb25TZXJ2aWNlLmFsZXJ0VHlwZSkuY3NzQ2xhc3N9Z2V0IGhpZGRlbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9oaWRkZW59c2V0IGhpZGRlbihhKXthIT09dGhpcy5faGlkZGVuJiYodGhpcy5faGlkZGVuPWEsdGhpcy5faGlkZGVuP3RoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCJhbGVydC1oaWRkZW4iKTp0aGlzLnJlbmRlcmVyLnJl''@;'; put 'put ''bW92ZUNsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwiYWxlcnQtaGlkZGVuIiksdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKX1uZ09uSW5pdCgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UmJnRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubXVsdGlBbGVydFNlcnZpY2Uu''@;'; put 'put ''Y2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLmhpZGRlbj10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydCE9PXRoaXN9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfWNvbmZpZ0FsZXJ0VHlwZShhKXt0aGlz''@;'; put 'put ''Lmljb25TZXJ2aWNlLmFsZXJ0VHlwZT1hfW9wZW4oKXt0aGlzLl9jbG9zZWQ9ITEsdGhpcy5tdWx0aUFsZXJ0U2VydmljZSYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5vcGVuKCksdGhpcy5fY2xvc2VkQ2hhbmdlZC5lbWl0KCExKX1jbG9zZSgpe2lmKCF0aGlzLmNsb3NhYmxlKXJldHVybjtj''@;'; put 'put ''b25zdCBhPXRoaXMubXVsdGlBbGVydFNlcnZpY2U/LmN1cnJlbnRBbGVydD09PXRoaXM7dGhpcy5fY2xvc2VkPSEwLHRoaXMubXVsdGlBbGVydFNlcnZpY2U/LmFjdGl2ZUFsZXJ0cyYmdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jbG9zZShhKSx0aGlzLl9jbG9zZWRDaGFuZ2VkLmVtaXQoITAp''@;'; put 'put ''fX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShmWSksSmUoY2EpLEplKEZSLDgpLEplKFVzKSxKZShkcyksSmUoTmkpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFsZXJ0Il1dLGlucHV0czp7aXNTbWFsbDpbam4u''@;'; put 'put ''Tm9uZSwiY2xyQWxlcnRTaXplU21hbGwiLCJpc1NtYWxsIl0sY2xvc2FibGU6W2puLk5vbmUsImNsckFsZXJ0Q2xvc2FibGUiLCJjbG9zYWJsZSJdLGlzQXBwTGV2ZWw6W2puLk5vbmUsImNsckFsZXJ0QXBwTGV2ZWwiLCJpc0FwcExldmVsIl0sY2xyQ2xvc2VCdXR0b25BcmlhTGFiZWw6ImNs''@;'; put 'put ''ckNsb3NlQnV0dG9uQXJpYUxhYmVsIixpc0xpZ2h0d2VpZ2h0Oltqbi5Ob25lLCJjbHJBbGVydExpZ2h0d2VpZ2h0IiwiaXNMaWdodHdlaWdodCJdLGFsZXJ0VHlwZTpbam4uTm9uZSwiY2xyQWxlcnRUeXBlIiwiYWxlcnRUeXBlIl0sYWxlcnRJY29uU2hhcGU6W2puLk5vbmUsImNsckFsZXJ0''@;'; put 'put ''SWNvbiIsImFsZXJ0SWNvblNoYXBlIl0sY2xvc2VkOltqbi5Ob25lLCJjbHJBbGVydENsb3NlZCIsImNsb3NlZCJdfSxvdXRwdXRzOntfY2xvc2VkQ2hhbmdlZDoiY2xyQWxlcnRDbG9zZWRDaGFuZ2UifSxmZWF0dXJlczpbWmkoW2ZZXSldLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczox''@;'; put 'put ''LHZhcnM6MSxjb25zdHM6W1siY2xhc3MiLCJhbGVydCIsMywibmdDbGFzcyIsImFsZXJ0LXNtIiwiYWxlcnQtbGlnaHR3ZWlnaHQiLCJhbGVydC1hcHAtbGV2ZWwiLDQsIm5nSWYiXSxbMSwiYWxlcnQiLDMsIm5nQ2xhc3MiXSxbMSwiYWxlcnQtaXRlbXMiXSxbInR5cGUiLCJidXR0b24iLCJj''@;'; put 'put ''bGFzcyIsImNsb3NlIiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiY2xvc2UiLDMsImNsaWNrIl0sWyJzaGFwZSIsIndpbmRvdy1jbG9zZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ3QoMCxaRmUsNCw4LCJkaXYiLDApKSwyJmEmJlJlKCJu''@;'; put 'put ''Z0lmIiwhZC5fY2xvc2VkKX0sZGVwZW5kZW5jaWVzOltKYywkaSxHc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksQnVlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5pY29uU2VydmljZT1hfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxs''@;'; put 'put ''KShKZShmWSkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWxlcnQtaXRlbSJdXSxob3N0QXR0cnM6WzEsImFsZXJ0LWl0ZW0iXSxuZ0NvbnRlbnRTZWxlY3RvcnM6Wm8sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiYWxlcnQtaWNvbi13cmFwcGVyIl0sWyJj''@;'; put 'put ''bGFzcyIsImFsZXJ0LXNwaW5uZXIiLCJjbHJJbmxpbmUiLCIiLDQsIm5nSWYiXSxbImNsYXNzIiwiYWxlcnQtaWNvbiIsInJvbGUiLCJpbWciLDQsIm5nSWYiXSxbImNscklubGluZSIsIiIsMSwiYWxlcnQtc3Bpbm5lciJdLFsicm9sZSIsImltZyIsMSwiYWxlcnQtaWNvbiJdXSx0ZW1wbGF0''@;'; put 'put ''ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ2UoMCwiZGl2IiwwKSxndCgxLFlGZSwxLDAsImNsci1zcGlubmVyIiwxKSgyLFdGZSwxLDIsImNkcy1pY29uIiwyKSxtZSgpLElyKDMpKSwyJmEmJihfZSgpLFJlKCJuZ0lmIiwibG9hZGluZyI9PT1kLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNo''@;'; put 'put ''YXBlKSxfZSgpLFJlKCJuZ0lmIiwibG9hZGluZyIhPT1kLmljb25TZXJ2aWNlLmFsZXJ0SWNvblNoYXBlKSl9LGRlcGVuZGVuY2llczpbJGksR3MseGRdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLE5NPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1''@;'; put 'put ''cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLDgsImFsZXJ0LXRleHQiXV19KSxsfSkoKSxqdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMubXVsdGlBbGVydFNlcnZpY2U9YSx0aGlzLmNvbW1vblN0cmluZ3M9ZCx0aGlzLmN1''@;'; put 'put ''cnJlbnRBbGVydENoYW5nZT1uZXcgRHIoITEpLHRoaXMuY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U9bmV3IERyfWdldCBjdXJyZW50QWxlcnQoKXtyZXR1cm4gdGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50QWxlcnR9c2V0IGN1cnJlbnRBbGVydChhKXthJiYodGhpcy5tdWx0aUFsZXJ0''@;'; put 'put ''U2VydmljZS5jdXJyZW50QWxlcnQ9YSl9Z2V0IGN1cnJlbnRBbGVydEluZGV4KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudH1zZXQgY3VycmVudEFsZXJ0SW5kZXgoYSl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jdXJyZW50PWF9Z2V0IHByZXZpb3VzQWxlcnRBcmlh''@;'; put 'put ''TGFiZWwoKXtjb25zdCBhPXRoaXMuY3VycmVudEFsZXJ0SW5kZXgrMTtyZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmFsZXJ0UHJldmlvdXNBbGVydEFyaWFMYWJlbCx7Q1VSUkVOVDooMT09PWE/dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5j''@;'; put 'put ''b3VudDphLTEpLnRvU3RyaW5nKCksQ09VTlQ6dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jb3VudC50b1N0cmluZygpfSl9Z2V0IG5leHRBbGVydEFyaWFMYWJlbCgpe2NvbnN0IGE9dGhpcy5jdXJyZW50QWxlcnRJbmRleCsxO3JldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5j''@;'; put 'put ''b21tb25TdHJpbmdzLmtleXMuYWxlcnROZXh0QWxlcnRBcmlhTGFiZWwse0NVUlJFTlQ6KGE9PT10aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50PzE6YSsxKS50b1N0cmluZygpLENPVU5UOnRoaXMubXVsdGlBbGVydFNlcnZpY2UuY291bnQudG9TdHJpbmcoKX0pfW5nT25Jbml0KCl7dGhp''@;'; put 'put ''cy5tdWx0aUFsZXJ0U2VydmljZUNoYW5nZXM9dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5jaGFuZ2VzLnN1YnNjcmliZShhPT57dGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZS5lbWl0KGEpLHRoaXMuY3VycmVudEFsZXJ0Q2hhbmdlLmVtaXQodGhpcy5tdWx0aUFsZXJ0U2VydmljZS5hY3Rp''@;'; put 'put ''dmVBbGVydHNbYV0pfSl9bmdPbkRlc3Ryb3koKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlQ2hhbmdlcy51bnN1YnNjcmliZSgpfXBhZ2VVcCgpe3RoaXMubXVsdGlBbGVydFNlcnZpY2UubmV4dCgpfXBhZ2VEb3duKCl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZS5wcmV2aW91cygpfX1yZXR1cm4g''@;'; put 'put ''bC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShGUiksSmUoVXMpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLWFsZXJ0cy1wYWdlciJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbihhLGQpezImYSYmcHIoImFsZXJ0''@;'; put 'put ''cy1wYWdlciIsITApfSxpbnB1dHM6e2N1cnJlbnRBbGVydDpbam4uTm9uZSwiY2xyQ3VycmVudEFsZXJ0IiwiY3VycmVudEFsZXJ0Il0sY3VycmVudEFsZXJ0SW5kZXg6W2puLk5vbmUsImNsckN1cnJlbnRBbGVydEluZGV4IiwiY3VycmVudEFsZXJ0SW5kZXgiXX0sb3V0cHV0czp7Y3VycmVu''@;'; put 'put ''dEFsZXJ0Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRDaGFuZ2UiLGN1cnJlbnRBbGVydEluZGV4Q2hhbmdlOiJjbHJDdXJyZW50QWxlcnRJbmRleENoYW5nZSJ9LGRlY2xzOjksdmFyczo0LGNvbnN0czpbWzEsImFsZXJ0cy1wYWdlci1jb250cm9sIl0sWzEsImFsZXJ0cy1wYWdlLWRvd24iXSxb''@;'; put 'put ''InR5cGUiLCJidXR0b24iLDEsImFsZXJ0cy1wYWdlci1idXR0b24iLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlIiwiZGlyZWN0aW9uIiwibGVmdCJdLFsxLCJhbGVydHMtcGFnZXItdGV4dCJdLFsxLCJhbGVydHMtcGFnZS11cCJdLFsic2hhcGUiLCJhbmdsZSIsImRpcmVjdGlvbiIsInJp''@;'; put 'put ''Z2h0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoZ2UoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImJ1dHRvbiIsMiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLnBhZ2VEb3duKCl9KSxZdCgzLCJjZHMtaWNvbiIsMyksbWUoKSgpLGdlKDQsImRpdiIsNCksUGUoNSks''@;'; put 'put ''bWUoKSxnZSg2LCJkaXYiLDUpKDcsImJ1dHRvbiIsMiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBkLnBhZ2VVcCgpfSksWXQoOCwiY2RzLWljb24iLDYpLG1lKCkoKSgpKSwyJmEmJihfZSgyKSx1cigiYXJpYS1sYWJlbCIsZC5wcmV2aW91c0FsZXJ0QXJpYUxhYmVsKSxfZSgzKSxf''@;'; put 'put ''dSgiIixkLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQrMSwiIC8gIixkLm11bHRpQWxlcnRTZXJ2aWNlLmNvdW50LCIiKSxfZSgyKSx1cigiYXJpYS1sYWJlbCIsZC5uZXh0QWxlcnRBcmlhTGFiZWwpKX0sZGVwZW5kZW5jaWVzOltHc10sZW5jYXBzdWxhdGlvbjoyfSksbH0pKCksenVlPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5tdWx0aUFsZXJ0U2VydmljZT1hLHRoaXMuY3VycmVudEFsZXJ0Q2hhbmdlPW5ldyBEcighMSksdGhpcy5jdXJyZW50QWxlcnRJbmRleENoYW5nZT1uZXcgRHIoITEpLHRoaXMuc3Vic2NyaXB0aW9ucz1bXX1zZXQgYWxsQWxlcnRzKGEp''@;'; put 'put ''e3RoaXMubXVsdGlBbGVydFNlcnZpY2UubWFuYWdlKGEpfXNldCBfaW5wdXRDdXJyZW50SW5kZXgoYSl7TnVtYmVyLmlzSW50ZWdlcihhKSYmYT49MCYmKHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudD1hKX1nZXQgY3VycmVudEFsZXJ0SW5kZXgoKXtyZXR1cm4gdGhpcy5tdWx0aUFs''@;'; put 'put ''ZXJ0U2VydmljZS5jdXJyZW50fXNldCBjdXJyZW50QWxlcnRJbmRleChhKXt0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnQ9YX1nZXQgY3VycmVudEFsZXJ0KCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0fXNldCBjdXJyZW50QWxlcnQoYSl7YSYmKHRo''@;'; put 'put ''aXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0PWEpfWdldCBhbGVydHMoKXtyZXR1cm4gdGhpcy5hbGxBbGVydHMuZmlsdGVyKGE9PiExPT09YS5oaWRkZW4pfWdldCBjdXJyZW50QWxlcnRUeXBlKCl7cmV0dXJuIHRoaXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0P3Ro''@;'; put 'put ''aXMubXVsdGlBbGVydFNlcnZpY2UuY3VycmVudEFsZXJ0LmFsZXJ0VHlwZToiIn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmNoYW5nZXMuc3Vic2NyaWJlKGE9Pnt0aGlzLmN1cnJlbnRBbGVydEluZGV4Q2hhbmdl''@;'; put 'put ''Lm5leHQoYSksdGhpcy5jdXJyZW50QWxlcnRDaGFuZ2UubmV4dCh0aGlzLm11bHRpQWxlcnRTZXJ2aWNlLmN1cnJlbnRBbGVydCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpLHRoaXMubXVsdGlBbGVydFNlcnZpY2UuZGVz''@;'; put 'put ''dHJveSgpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShGUikpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItYWxlcnRzIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJnRzKGgsRk0sNCks''@;'; put 'put ''MiZhKXtsZXQgZjtsaShmPWNpKCkpJiYoZC5hbGxBbGVydHM9Zil9fSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJhbGVydHMiLCEwKSgiYWxlcnQtZGFuZ2VyIiwiZGFuZ2VyIj09ZC5jdXJyZW50QWxlcnRUeXBlKSgiYWxlcnQtaW5mbyIsImluZm8i''@;'; put 'put ''PT1kLmN1cnJlbnRBbGVydFR5cGUpKCJhbGVydC1zdWNjZXNzIiwic3VjY2VzcyI9PWQuY3VycmVudEFsZXJ0VHlwZSkoImFsZXJ0LXdhcm5pbmciLCJ3YXJuaW5nIj09ZC5jdXJyZW50QWxlcnRUeXBlKSgiYWxlcnQtbmV1dHJhbCIsIm5ldXRyYWwiPT1kLmN1cnJlbnRBbGVydFR5cGUpfSxp''@;'; put 'put ''bnB1dHM6e19pbnB1dEN1cnJlbnRJbmRleDpbam4uTm9uZSwiY2xyQ3VycmVudEFsZXJ0SW5kZXgiLCJfaW5wdXRDdXJyZW50SW5kZXgiXSxjdXJyZW50QWxlcnQ6W2puLk5vbmUsImNsckN1cnJlbnRBbGVydCIsImN1cnJlbnRBbGVydCJdfSxvdXRwdXRzOntjdXJyZW50QWxlcnRDaGFuZ2U6''@;'; put 'put ''ImNsckN1cnJlbnRBbGVydENoYW5nZSIsY3VycmVudEFsZXJ0SW5kZXhDaGFuZ2U6ImNsckN1cnJlbnRBbGVydEluZGV4Q2hhbmdlIn0sZmVhdHVyZXM6W1ppKFtGUl0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6JEZlLGRlY2xzOjMsdmFyczoxLGNvbnN0czpbWzEsImFsZXJ0cy13cmFwcGVyIl0s''@;'; put 'put ''WzMsImNsckN1cnJlbnRBbGVydEluZGV4Iiw0LCJuZ0lmIl0sWzMsImNsckN1cnJlbnRBbGVydEluZGV4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoR0ZlKSxnZSgwLCJkaXYiLDApLGd0KDEscUZlLDEsMSwiY2xyLWFsZXJ0cy1wYWdlciIsMSksSXIoMiksbWUoKSksMiZh''@;'; put 'put ''JiYoX2UoKSxSZSgibmdJZiIsZC5tdWx0aUFsZXJ0U2VydmljZS5jb3VudD4xKSl9LGRlcGVuZGVuY2llczpbJGksanVlXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9Il19KSxsfSkoKSxVdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25z''@;'; put 'put ''KFFVLHNEZSxhRGUsbERlLEhsZSxjRGUsck0pfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxuYSxoWSxGX119KSxsfSkoKSxqVmU9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbVXVlXX0pLGx9KSgpLHpWZT0oKCk9PntjbGFzcyBse31yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxuYV19KSxsfSkoKSxHVmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVp''@;'; put 'put ''KHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbmEsaFldfSksbH0pKCksV3VlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJuZy1jb21w''@;'; put 'put ''b25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGEsZCl7aWYoMSZhJiZIbyhVYSw1KSwyJmEpe2xldCBoO2xpKGg9Y2koKSkmJihkLnRlbXBsYXRlPWguZmlyc3QpfX0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGko''@;'; put 'put ''KSxndCgwLEpGZSwxLDAsIm5nLXRlbXBsYXRlIikpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSwkVmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7''@;'; put 'put ''aW1wb3J0czpbb29dfSksbH0pKCkseG09KCgpPT57Y2xhc3MgbCBleHRlbmRzIEVfe31yZXR1cm4gbC5cdTAyNzVmYWM9KCgpPT57bGV0IGM7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybihjfHwoYz1MYShsKSkpKGR8fGwpfX0pKCksbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6''@;'; put 'put ''W1siY2xyLXRhYnMiXV0sZmVhdHVyZXM6W2VvXX0pLGx9KSgpLEw4PSgoKT0+e2NsYXNzIGwgZXh0ZW5kcyBUX3tjb25zdHJ1Y3RvcihhLGQsaCxmKXtpZighZCl0aHJvdyBuZXcgRXJyb3IoImNsclRhYkxpbmsgYW5kIGNsci10YWItY29udGVudCBzaG91bGQgb25seSBiZSB1c2VkIGluc2lk''@;'; put 'put ''ZSBvZiBhIGNsci10YWJzIik7c3VwZXIoYSxkKSx0aGlzLmlmQWN0aXZlPWYsdGhpcy5pZD1ofWdldCBmbGF2b3IoKXtyZXR1cm4gdGhpcy5pZkFjdGl2ZS5jdXJyZW50PT09dGhpcy5pZH19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoY2EpLEpl''@;'; put 'put ''KHhtLDgpLEplKERfKSxKZShiOCkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJUYWJMaW5rIiwiIl0sWyJjbHItdGFiLWNvbnRlbnQiXV0sZmVhdHVyZXM6W2VvXX0pLGx9KSgpO3ZhciBPOD1mdW5jdGlvbihsKXtyZXR1cm4gbC5IT1JJWk9OVEFMPSJob3Jp''@;'; put 'put ''em9udGFsIixsLlZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsbH0oTzh8fHt9KTtsZXQgSE09KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMubGF5b3V0PU84LkhPUklaT05UQUwsdGhpcy5fY2hpbGRyZW49W119Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuX2NoaWxkcmVufWdldCBhY3Rp''@;'; put 'put ''dmVUYWIoKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5maW5kKGE9PmEuYWN0aXZlKX1nZXQgb3ZlcmZsb3dUYWJzKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09TzguVkVSVElDQUw/W106dGhpcy5jaGlsZHJlbi5maWx0ZXIoYT0+ITA9PT1hLnRhYkxpbmsuaW5PdmVyZmxvdyl9cmVnaXN0ZXIoYSl7''@;'; put 'put ''dGhpcy5fY2hpbGRyZW4ucHVzaChhKX11bnJlZ2lzdGVyKGEpe2NvbnN0IGQ9dGhpcy5jaGlsZHJlbi5pbmRleE9mKGEpO2Q+LTEmJnRoaXMuY2hpbGRyZW4uc3BsaWNlKGQsMSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9''@;'; put 'put ''aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLHFWZT0wLEVtPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuaWZBY3RpdmVTZXJ2aWNlPWEsdGhpcy5pZD1kLHRoaXMudGFic1NlcnZpY2U9aCx0aGlzLnRhYkNvbnRlbnRJZHx8KHRoaXMudGFiQ29u''@;'; put 'put ''dGVudElkPSJjbHItdGFiLWNvbnRlbnQtIitxVmUrKyl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1nZXQgYXJpYUxhYmVsbGVkQnkoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5jaGlsZHJlbi5maW5kKGE9PmEudGFiTGluay5p''@;'; put 'put ''ZD09PXRoaXMuaWQpPy50YWJMaW5rPy50YWJMaW5rSWR9c2V0IHRlbXBsYXRlUmVmKGEpe3RoaXMudmlld1JlZj10aGlzLnRhYnNTZXJ2aWNlLnRhYkNvbnRlbnRWaWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhhKX1uZ09uRGVzdHJveSgpe2NvbnN0IGE9dGhpcy50YWJzU2Vydmlj''@;'; put 'put ''ZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5pbmRleE9mKHRoaXMudmlld1JlZik7YT4tMSYmdGhpcy50YWJzU2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lci5yZW1vdmUoYSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGI4KSxKZShE''@;'; put 'put ''XyksSmUoSE0pKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXRhYi1jb250ZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbihhLGQpe2lmKDEmYSYmSG8oUUZlLDcpLDImYSl7bGV0IGg7bGkoaD1jaSgpKSYmKGQudGVtcGxhdGVSZWY9aC5maXJzdCl9fSxpbnB1dHM6''@;'; put 'put ''e3RhYkNvbnRlbnRJZDpbam4uTm9uZSwiaWQiLCJ0YWJDb250ZW50SWQiXX0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWyJ0YWJDb250ZW50UHJvamVjdGVkUmVmIiwiIl0sWyJyb2xlIiwidGFicGFuZWwiLDEsInRhYi1jb250ZW50IiwzLCJpZCIsImhp''@;'; put 'put ''ZGRlbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ3QoMCxlTmUsMiw2LCJuZy10ZW1wbGF0ZSIsbnVsbCwwLGJ1KSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLEtWZT0wO2NvbnN0IHBZPW5ldyAkcigiVEFCU19JRCIpLEpWZT17cHJvdmlkZTpwWSx1c2VGYWN0b3J5''@;'; put 'put ''OmZ1bmN0aW9uIFhWZSgpe3JldHVybiJjbHItdGFicy0iK0tWZSsrfX07bGV0IFFWZT0wLFRtPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVil7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9YSx0aGlzLmlkPWQsdGhpcy5lbD1oLHRoaXMuY2ZyPWYsdGhpcy52aWV3Q29udGFp''@;'; put 'put ''bmVyUmVmPXYsdGhpcy50YWJzU2VydmljZT1TLHRoaXMudGFic0lkPVYsdGhpcy50YWJMaW5rSWR8fCh0aGlzLnRhYkxpbmtJZD0iY2xyLXRhYi1saW5rLSIrUVZlKyspO2NvbnN0IFE9dGhpcy5jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoV3VlKTt0aGlzLnRlbXBsYXRlUmVmQ29udGFp''@;'; put 'put ''bmVyPXRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoUSx2b2lkIDAsdm9pZCAwLFtbdGhpcy5lbC5uYXRpdmVFbGVtZW50XV0pLmluc3RhbmNlfWdldCBpbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMuX2luT3ZlcmZsb3cmJnRoaXMudGFic1NlcnZpY2UubGF5b3V0IT09Tzgu''@;'; put 'put ''VkVSVElDQUx9c2V0IGluT3ZlcmZsb3coYSl7dGhpcy5faW5PdmVyZmxvdz1hfWdldCBhZGRMaW5rQ2xhc3Nlcygpe3JldHVybiF0aGlzLmluT3ZlcmZsb3d9Z2V0IGFyaWFDb250cm9scygpe3JldHVybiB0aGlzLnRhYnNTZXJ2aWNlLmNoaWxkcmVuLmZpbmQoYT0+YS50YWJMaW5rPT09dGhp''@;'; put 'put ''cyk/LnRhYkNvbnRlbnQ/LnRhYkNvbnRlbnRJZH1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ9PT10aGlzLmlkfWdldCB0YWJpbmRleCgpe3JldHVybiB0aGlzLmFjdGl2ZT8wOi0xfWFjdGl2YXRlKCl7dGhpcy5pZkFjdGl2ZVNlcnZpY2UuY3VycmVu''@;'; put 'put ''dD10aGlzLmlkfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShiOCksSmUoRF8pLEplKE5pKSxKZShLZyksSmUoaHMpLEplKEhNKSxKZShwWSkpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLCJjbHJUYWJMaW5rIiwiIl1d''@;'; put 'put ''LGhvc3RBdHRyczpbInJvbGUiLCJ0YWIiLCJ0eXBlIiwiYnV0dG9uIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MSZhJiZJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGQuYWN0aXZhdGUoKX0pLDImYSYmKGQzKCJpZCIsZC50YWJMaW5rSWQpLHVyKCJhcmlh''@;'; put 'put ''LWNvbnRyb2xzIixkLmFyaWFDb250cm9scykoImFyaWEtc2VsZWN0ZWQiLGQuYWN0aXZlKSgidGFiaW5kZXgiLGQudGFiaW5kZXgpLHByKCJidG4iLCEwKSgiYnRuLWxpbmsiLGQuYWRkTGlua0NsYXNzZXMpKCJuYXYtbGluayIsZC5hZGRMaW5rQ2xhc3NlcykoImFjdGl2ZSIsZC5hY3RpdmUp''@;'; put 'put ''KX0saW5wdXRzOnt0YWJMaW5rSWQ6W2puLk5vbmUsImlkIiwidGFiTGlua0lkIl0saW5PdmVyZmxvdzpbam4uTm9uZSwiY2xyVGFiTGlua0luT3ZlcmZsb3ciLCJpbk92ZXJmbG93Il19fSksbH0pKCksa209KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5pZkFjdGl2ZVNl''@;'; put 'put ''cnZpY2U9YSx0aGlzLmlkPWQsdGhpcy50YWJzU2VydmljZT1oLGgucmVnaXN0ZXIodGhpcyl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLmlmQWN0aXZlU2VydmljZS5jdXJyZW50PT09dGhpcy5pZH1uZ09uRGVzdHJveSgpe3RoaXMudGFic1NlcnZpY2UudW5yZWdpc3Rlcih0aGlzKX19cmV0''@;'; put 'put ''dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoSmUoYjgpLEplKERfKSxKZShITSkpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdGFiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKGEsZCxoKXtpZigxJmEmJih0cyhoLFRtLDcp''@;'; put 'put ''LHRzKGgsRW0sNykpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQudGFiTGluaz1mLmZpcnN0KSxsaShmPWNpKCkpJiYoZC50YWJDb250ZW50PWYuZmlyc3QpfX0sZmVhdHVyZXM6W1ppKFthSGVdKV0sbmdDb250ZW50U2VsZWN0b3JzOlpvLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0''@;'; put 'put ''aW9uKGEsZCl7MSZhJiYoSGkoKSxJcigwKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGdZPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdGFiLW92''@;'; put 'put ''ZXJmbG93LWNvbnRlbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJkcm9wZG93bi1tZW51IiwhMCl9LG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxl''@;'; put 'put ''bmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxQOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5pZkFjdGl2ZVNlcnZpY2U9YSx0aGlzLnRvZ2dsZVNlcnZpY2U9ZCx0aGlzLnRhYnNTZXJ2aWNlPWgsdGhpcy50YWJzSWQ9Zix0aGlzLmNvbW1vblN0cmluZ3M9dix0aGlz''@;'; put 'put ''LnRhYkxpbmtFbGVtZW50cz1bXSx0aGlzLl9tb3VzZWRvd249ITEsdGhpcy5zdWJzY3JpcHRpb25zPVtdLHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzPVtdfWdldCBsYXlvdXQoKXtyZXR1cm4gdGhpcy50YWJzU2VydmljZS5sYXlvdXR9c2V0IGxheW91dChhKXtPYmplY3Qua2V5cyhPOCkubWFw''@;'; put 'put ''KGQ9Pk84W2RdKS5pbmRleE9mKGEpPj0wJiYodGhpcy50YWJzU2VydmljZS5sYXlvdXQ9YSl9Z2V0IHRhYkxpbmtEaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzfWdldCBhY3RpdmVUYWJJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMudGFic1NlcnZpY2Uub3ZlcmZs''@;'; put 'put ''b3dUYWJzLmluZGV4T2YodGhpcy50YWJzU2VydmljZS5hY3RpdmVUYWIpPi0xfWdldCBhY3RpdmVUYWJQb3NpdGlvbigpe3JldHVybiB0aGlzLl90YWJMaW5rRGlyZWN0aXZlcy5maW5kSW5kZXgoYT0+YS5hY3RpdmUpfWdldCBpc0N1cnJlbnRJbk92ZXJmbG93KCl7cmV0dXJuIHRoaXMua2V5''@;'; put 'put ''Rm9jdXMuY3VycmVudD49dGhpcy5vdmVyZmxvd1Bvc2l0aW9ufWdldCBpc1ZlcnRpY2FsKCl7cmV0dXJuIHRoaXMubGF5b3V0PT09TzguVkVSVElDQUx9c2V0IHRhYk92ZXJmbG93RWwoYSl7dGhpcy5fdGFiT3ZlcmZsb3dFbD1hJiZhLm5hdGl2ZUVsZW1lbnQsdGhpcy50b2dnbGVTZXJ2aWNl''@;'; put 'put ''Lm9wZW4mJmEmJnRoaXMua2V5Rm9jdXMuZm9jdXNDdXJyZW50KCl9Z2V0IG92ZXJmbG93UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fdGFiTGlua0RpcmVjdGl2ZXMuZmlsdGVyKGE9PiFhLmluT3ZlcmZsb3cpLmxlbmd0aH1zZXQgdGFiQ29udGVudFZpZXdDb250YWluZXIoYSl7dGhpcy50YWJz''@;'; put 'put ''U2VydmljZS50YWJDb250ZW50Vmlld0NvbnRhaW5lcj1hfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yVGFiTGlua0NoYW5nZXMoKSksdHlwZW9mIHRoaXMuaWZBY3RpdmVTZXJ2aWNlLmN1cnJlbnQ+InUiJiZ0aGlzLnRhYkxpbmtE''@;'; put 'put ''aXJlY3RpdmVzWzBdJiZ0aGlzLnRhYkxpbmtEaXJlY3RpdmVzWzBdLmFjdGl2YXRlKCksdGhpcy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb259bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChhPT57YS51bnN1YnNjcmliZSgpfSl9dG9nZ2xl''@;'; put 'put ''T3ZlcmZsb3dPblBvc2l0aW9uKGEpe3RoaXMudG9nZ2xlU2VydmljZS5vcGVuPWE+PXRoaXMub3ZlcmZsb3dQb3NpdGlvbn1yZXNldEtleUZvY3VzQ3VycmVudFRvQWN0aXZlKGEpeyF0aGlzLmtleUZvY3VzLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoYS5yZWxhdGVkVGFyZ2V0KSYmdGhpcy5r''@;'; put 'put ''ZXlGb2N1cy5jdXJyZW50IT09dGhpcy5hY3RpdmVUYWJQb3NpdGlvbiYmKHRoaXMua2V5Rm9jdXMuY3VycmVudD10aGlzLmFjdGl2ZVRhYlBvc2l0aW9uKX10b2dnbGVPdmVyZmxvd09uQ2xpY2soKXt0aGlzLmtleUZvY3VzLm1vdmVUbyh0aGlzLmlzQ3VycmVudEluT3ZlcmZsb3cmJnRoaXMu''@;'; put 'put ''dG9nZ2xlU2VydmljZS5vcGVuP3RoaXMub3ZlcmZsb3dQb3NpdGlvbi0xOnRoaXMub3ZlcmZsb3dQb3NpdGlvbiksdGhpcy5fbW91c2Vkb3duPSExfW9wZW5PdmVyZmxvd09uRm9jdXMoKXshdGhpcy5fbW91c2Vkb3duJiYhdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4mJnRoaXMua2V5Rm9jdXMu''@;'; put 'put ''bW92ZVRvKHRoaXMuYWN0aXZlVGFiUG9zaXRpb24pfWNsb3NlT25Gb2N1c091dChhKXshdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyhhLnJlbGF0ZWRUYXJnZXQpJiZ0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiYmIXRoaXMuX21vdXNlZG93biYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVu''@;'; put 'put ''PSExLHRoaXMudGFiTGlua0VsZW1lbnRzW3RoaXMuYWN0aXZlVGFiUG9zaXRpb25dPT09YS5yZWxhdGVkVGFyZ2V0JiYodGhpcy5rZXlGb2N1cy5jdXJyZW50PXRoaXMuYWN0aXZlVGFiUG9zaXRpb24pKX1jbG9zZU9uRXNjYXBlS2V5KCl7dGhpcy5rZXlGb2N1cy5tb3ZlVG8odGhpcy5vdmVy''@;'; put 'put ''Zmxvd1Bvc2l0aW9uLTEpfWNsb3NlT25PdXRzaWRlQ2xpY2soYSxkKXthLnRhcmdldD09PWR8fGQuY29udGFpbnMoYS50YXJnZXQpfHwhdGhpcy5fdGFiT3ZlcmZsb3dFbC5jb250YWlucyhhLnRhcmdldCkmJnRoaXMuaXNDdXJyZW50SW5PdmVyZmxvdyYmdGhpcy5rZXlGb2N1cy5tb3ZlVG8o''@;'; put 'put ''dGhpcy5vdmVyZmxvd1Bvc2l0aW9uLTEpfWxpc3RlbkZvclRhYkxpbmtDaGFuZ2VzKCl7cmV0dXJuIHRoaXMudGFicy5jaGFuZ2VzLnBpcGUobDQodGhpcy50YWJzLm1hcChhPT5hLnRhYkxpbmspKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5fdGFiTGlua0RpcmVjdGl2ZXM9dGhpcy50YWJzLm1h''@;'; put 'put ''cChhPT5hLnRhYkxpbmspLHRoaXMudGFiTGlua0VsZW1lbnRzPXRoaXMuX3RhYkxpbmtEaXJlY3RpdmVzLm1hcChhPT5hLmVsLm5hdGl2ZUVsZW1lbnQpfSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKGI4KSxKZShSbCksSmUoSE0pLEplKHBZ''@;'; put 'put ''KSxKZShVcykpfSxsLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJjbHItdGFicyJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbihhLGQsaCl7aWYoMSZhJiZ0cyhoLGttLDQpLDImYSl7bGV0IGY7bGkoZj1jaSgpKSYmKGQudGFicz1mKX19LHZpZXdRdWVyeTpmdW5jdGlvbihh''@;'; put 'put ''LGQpe2lmKDEmYSYmKEhvKE5fLDcpLEhvKGdZLDUsTmkpLEhvKHROZSw3LGhzKSksMiZhKXtsZXQgaDtsaShoPWNpKCkpJiYoZC5rZXlGb2N1cz1oLmZpcnN0KSxsaShoPWNpKCkpJiYoZC50YWJPdmVyZmxvd0VsPWguZmlyc3QpLGxpKGg9Y2koKSkmJihkLnRhYkNvbnRlbnRWaWV3Q29udGFp''@;'; put 'put ''bmVyPWguZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJ0YWJzLXZlcnRpY2FsIixkLmlzVmVydGljYWwpfSxpbnB1dHM6e2xheW91dDpbam4uTm9uZSwiY2xyTGF5b3V0IiwibGF5b3V0Il19LGZlYXR1cmVzOltaaShbYjgsSE0sSlZlXSks''@;'; put 'put ''QTEoW2g0XSldLGRlY2xzOjUsdmFyczozLGNvbnN0czpbWyJ0YWJDb250ZW50Vmlld0NvbnRhaW5lciIsIiJdLFsidGFiT3ZlcmZsb3dUcmlnZ2VyIiwiIl0sWyJyb2xlIiwidGFibGlzdCIsImNsckRpcmVjdGlvbiIsImJvdGgiLDEsIm5hdiIsMywiY2xyRm9jdXNDaGFuZ2UiLCJmb2N1c291''@;'; put 'put ''dCIsImNscktleUZvY3VzIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFs0LCJuZ0lmIl0sWyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJuYXYtaXRlbSJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJ0YWJzLW92ZXJmbG93IiwiYm90dG9tLXJpZ2h0''@;'; put 'put ''Il0sWyJyb2xlIiwiYXBwbGljYXRpb24iLDEsIm5hdi1pdGVtIl0sWyJ0eXBlIiwiYnV0dG9uIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJidG4iLCJidG4tbGluayIsIm5hdi1saW5rIiwiZHJvcGRvd24tdG9nZ2xlIiwzLCJtb3VzZWRvd24iLCJmb2N1cyIsImNsaWNrIl0sWyJzaGFwZSIs''@;'; put 'put ''ImVsbGlwc2lzLWhvcml6b250YWwiXSxbMywia2V5ZG93bi5lc2NhcGUiLCJjbGljayIsImZvY3Vzb3V0Iiw0LCJuZ0lmIl0sWzMsImtleWRvd24uZXNjYXBlIiwiY2xpY2siLCJmb2N1c291dCJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0Iiw0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEs''@;'; put 'put ''ZCl7aWYoMSZhKXtjb25zdCBoPVNuKCk7Z2UoMCwidWwiLDIpLEl0KCJjbHJGb2N1c0NoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIF90KGgpLGJ0KGQudG9nZ2xlT3ZlcmZsb3dPblBvc2l0aW9uKHYpKX0pKCJmb2N1c291dCIsZnVuY3Rpb24odil7cmV0dXJuIF90KGgpLGJ0KGQucmVzZXRL''@;'; put 'put ''ZXlGb2N1c0N1cnJlbnRUb0FjdGl2ZSh2KSl9KSxndCgxLHJOZSwyLDEsIm5nLWNvbnRhaW5lciIsMykoMixhTmUsNywxMSwibmctY29udGFpbmVyIiw0KSxtZSgpLHpsKDMsbnVsbCwwKX0yJmEmJihSZSgiY2xyS2V5Rm9jdXMiLGQudGFiTGlua0VsZW1lbnRzKSxfZSgpLFJlKCJuZ0Zvck9m''@;'; put 'put ''IixkLnRhYkxpbmtEaXJlY3RpdmVzKSxfZSgpLFJlKCJuZ0lmIixkLnRhYnNTZXJ2aWNlLm92ZXJmbG93VGFicy5sZW5ndGg+MCkpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLHZkLEdzLE5fLGdZXSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKSxlQmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e1dzLmFkZEljb25zKFBsZSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vLEFoLG5hLCRWZSxQWixBaF19KSxsfSkoKSxtWT0oKCk9PntjbGFzcyBse2Nv''@;'; put 'put ''bnN0cnVjdG9yKCl7dGhpcy5uYXZHcm91cENvdW50PTB9cmVnaXN0ZXJOYXZHcm91cCgpe3RoaXMubmF2R3JvdXBDb3VudCsrfXVucmVnaXN0ZXJOYXZHcm91cCgpe3RoaXMubmF2R3JvdXBDb3VudC0tfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0s''@;'; put 'put ''bC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSx2WT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5faWNvbnM9MH1nZXQgaGFzSWNvbnMoKXtyZXR1cm4gdGhpcy5faWNvbnM+MH1yZWdpc3Rlckljb24oKXt0aGlzLl9pY29ucysrfXVu''@;'; put 'put ''cmVnaXN0ZXJJY29uKCl7dGhpcy5faWNvbnMtLX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksX1k9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3Ro''@;'; put 'put ''aXMuX2FuaW1hdGVPbkNvbGxhcHNlZD1uZXcgdG4sdGhpcy5fY29sbGFwc2VkQ2hhbmdlZD1uZXcgdG4sdGhpcy5fY29sbGFwc2VkPSExLHRoaXMuX2NvbGxhcHNpYmxlPSExfWdldCBhbmltYXRlT25Db2xsYXBzZWQoKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uQ29sbGFwc2VkLmFzT2JzZXJ2''@;'; put 'put ''YWJsZSgpfWdldCBjb2xsYXBzZWRDaGFuZ2VkKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNlZENoYW5nZWQuYXNPYnNlcnZhYmxlKCl9Z2V0IGNvbGxhcHNlZCgpe3JldHVybiB0aGlzLl9jb2xsYXBzZWR9c2V0IGNvbGxhcHNlZChhKXthPSEhYSx0aGlzLmNvbGxhcHNpYmxlJiZ0aGlzLl9jb2xs''@;'; put 'put ''YXBzZWQhPT1hJiZ0aGlzLnVwZGF0ZUNvbGxhcHNlQmVoYXZpb3IoYSl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX2NvbGxhcHNpYmxlfXNldCBjb2xsYXBzaWJsZShhKXt0aGlzLl9jb2xsYXBzaWJsZSE9PShhPSEhYSkmJighYSYmdGhpcy5jb2xsYXBzZWQmJnRoaXMudXBkYXRl''@;'; put 'put ''Q29sbGFwc2VCZWhhdmlvcighMSksdGhpcy5fY29sbGFwc2libGU9YSl9dXBkYXRlQ29sbGFwc2VCZWhhdmlvcihhKXt0aGlzLl9hbmltYXRlT25Db2xsYXBzZWQubmV4dChhKSx0aGlzLl9jb2xsYXBzZWQ9YSx0aGlzLl9jb2xsYXBzZWRDaGFuZ2VkLm5leHQoYSl9fXJldHVybiBsLlx1MDI3''@;'; put 'put ''NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLEd1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuX25hdlNlcnZpY2U9YSx0aGlzLl9uYXZJY29uU2Vydmlj''@;'; put 'put ''ZT1kLHRoaXMuX25hdkdyb3VwUmVnaXN0cmF0aW9uU2VydmljZT1oLHRoaXMuY29tbW9uU3RyaW5ncz1mLHRoaXMuX2NvbGxhcHNlZENoYW5nZWQ9bmV3IERyKCEwKSx0aGlzLl9zdWI9dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWRDaGFuZ2VkLnN1YnNjcmliZSh2PT57dGhpcy5fY29sbGFw''@;'; put 'put ''c2VkQ2hhbmdlZC5lbWl0KHYpfSl9Z2V0IGNvbGxhcHNpYmxlKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2UuY29sbGFwc2libGV9c2V0IGNvbGxhcHNpYmxlKGEpe3RoaXMuX25hdlNlcnZpY2UuY29sbGFwc2libGU9YX1nZXQgY29sbGFwc2VkKCl7cmV0dXJuIHRoaXMuX25hdlNlcnZpY2Uu''@;'; put 'put ''Y29sbGFwc2VkfXNldCBjb2xsYXBzZWQoYSl7dGhpcy5fbmF2U2VydmljZS5jb2xsYXBzZWQ9YX1nZXQgaGFzTmF2R3JvdXBzKCl7cmV0dXJuIHRoaXMuX25hdkdyb3VwUmVnaXN0cmF0aW9uU2VydmljZS5uYXZHcm91cENvdW50PjB9Z2V0IGhhc0ljb25zKCl7cmV0dXJuIHRoaXMuX25hdklj''@;'; put 'put ''b25TZXJ2aWNlLmhhc0ljb25zfWdldCBhcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5jb2xsYXBzaWJsZT90aGlzLmNvbGxhcHNlZD8iZmFsc2UiOiJ0cnVlIjpudWxsfW5nT25EZXN0cm95KCl7dGhpcy5fc3ViLnVuc3Vic2NyaWJlKCl9dG9nZ2xlQnlCdXR0b24oKXt0aGlzLmNvbGxhcHNl''@;'; put 'put ''ZD0hdGhpcy5jb2xsYXBzZWR9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKF9ZKSxKZSh2WSksSmUobVkpLEplKFVzKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci12ZXJ0aWNhbC1uYXYiXV0saG9zdEF0dHJzOlsx''@;'; put 'put ''LCJjbHItdmVydGljYWwtbmF2Il0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJnByKCJpcy1jb2xsYXBzZWQiLGQuY29sbGFwc2VkKSgiaGFzLW5hdi1ncm91cHMiLGQuaGFzTmF2R3JvdXBzKSgiaGFzLWljb25zIixkLmhhc0ljb25zKX0saW5wdXRzOntjb2xs''@;'; put 'put ''YXBzaWJsZTpbam4uTm9uZSwiY2xyVmVydGljYWxOYXZDb2xsYXBzaWJsZSIsImNvbGxhcHNpYmxlIl0sY29sbGFwc2VkOltqbi5Ob25lLCJjbHJWZXJ0aWNhbE5hdkNvbGxhcHNlZCIsImNvbGxhcHNlZCJdfSxvdXRwdXRzOntfY29sbGFwc2VkQ2hhbmdlZDoiY2xyVmVydGljYWxOYXZDb2xs''@;'; put 'put ''YXBzZWRDaGFuZ2UifSxmZWF0dXJlczpbWmkoW19ZLHZZLG1ZXSldLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibmF2LXRyaWdnZXIiLDMsIm9uLWNvbGxhcHNlIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibmF2''@;'; put 'put ''LWNvbnRlbnQiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm5hdi1idG4iLCJhcmlhLWhpZGRlbiIsInRydWUiLCJ0YWJpbmRleCIsIi0xIiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwibmF2LXRyaWdnZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImFuZ2xlLWRv''@;'; put 'put ''dWJsZSIsMSwibmF2LXRyaWdnZXItaWNvbiJdLFsidHlwZSIsImJ1dHRvbiIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsInRhYmluZGV4IiwiLTEiLDEsIm5hdi1idG4iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoKSxndCgwLGxOZSwyLDUsImJ1dHRvbiIsMCks''@;'; put 'put ''Z2UoMSwiZGl2IiwxKSxJcigyKSxndCgzLGNOZSwxLDEsImJ1dHRvbiIsMiksbWUoKSksMiZhJiYoUmUoIm5nSWYiLGQuY29sbGFwc2libGUpLF9lKDMpLFJlKCJuZ0lmIixkLmNvbGxhcHNpYmxlJiZkLmNvbGxhcHNlZCkpfSxkZXBlbmRlbmNpZXM6WyRpLEdzXSxlbmNhcHN1bGF0aW9uOjJ9''@;'; put 'put ''KSxsfSkoKSxiWT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5fZXhwYW5kQ2hhbmdlPW5ldyB0bn1nZXQgZXhwYW5kQ2hhbmdlKCl7cmV0dXJuIHRoaXMuX2V4cGFuZENoYW5nZS5hc09ic2VydmFibGUoKX1leHBhbmQoKXt0aGlzLl9leHBhbmRDaGFuZ2UubmV4dCghMCl9fXJl''@;'; put 'put ''dHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLCR1ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLmRlc3Ryb3kkPW5ldyB0bixoJiZ3ZChh''@;'; put 'put ''Lm5hdGl2ZUVsZW1lbnQsImNsaWNrIikucGlwZShUMCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpPT57aC5leHBhbmQoKSxkLm1hcmtGb3JDaGVjaygpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3kkLm5leHQoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVy''@;'; put 'put ''biBuZXcoYXx8bCkoSmUoTmkpLEplKGNhKSxKZShiWSw4KSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImNsclZlcnRpY2FsTmF2TGluayIsIiJdXSxob3N0QXR0cnM6WzEsIm5hdi1saW5rIl0sYXR0cnM6aE5lLG5nQ29udGVudFNlbGVjdG9yczpwTmUsZGVjbHM6''@;'; put 'put ''Myx2YXJzOjAsY29uc3RzOltbMSwibmF2LXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oYSxkKXsxJmEmJihIaShmTmUpLElyKDApLGdlKDEsInNwYW4iLDApLElyKDIsMSksbWUoKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGlCZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3Mu''@;'; put 'put ''YWRkSWNvbnMoQ18sTmxlKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbmEsQWgsZlIsQWgsbmEsZlJdfSksbH0pKCksb0JlPSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W3pWZSxHVmUsZUJlLGlCZV19KSxsfSkoKSxxdWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9k''@;'; put 'put ''b2N1bWVudD1hfXN0b3BTY3JvbGxpbmcoKXt0aGlzLl9kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIm5vLXNjcm9sbGluZyIpfXJlc3VtZVNjcm9sbGluZygpe3RoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJuby1zY3JvbGxpbmciKSYmdGhpcy5fZG9jdW1lbnQu''@;'; put 'put ''Ym9keS5jbGFzc0xpc3QucmVtb3ZlKCJuby1zY3JvbGxpbmciKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCkoY3IoenMpKX0sbC5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KSxsfSkoKSx5WT0oKCk9PntjbGFzcyBs''@;'; put 'put ''e2NvbnN0cnVjdG9yKCl7dGhpcy5mYWRlTW92ZT0iZmFkZURvd24iLHRoaXMuYmFja2Ryb3A9ITB9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pLGx9KSgpLFBjPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5fc2Nyb2xsaW5nU2VydmljZT1hLHRoaXMuY29tbW9uU3RyaW5ncz1kLHRoaXMubW9kYWxTdGFja1NlcnZpY2U9aCx0aGlzLmNvbmZpZ3VyYXRpb249Zix0aGlzLm1vZGFsSWQ9dHUoKSx0aGlzLl9vcGVuPSExLHRoaXMuX29w''@;'; put 'put ''ZW5DaGFuZ2VkPW5ldyBEcighMSksdGhpcy5jbG9zYWJsZT0hMCx0aGlzLmNsb3NlQnV0dG9uQXJpYUxhYmVsPXRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlLHRoaXMuc3RhdGljQmFja2Ryb3A9ITAsdGhpcy5za2lwQW5pbWF0aW9uPSJmYWxzZSIsdGhpcy5zdG9wQ2xvc2U9ITEsdGhp''@;'; put 'put ''cy5hbHRDbG9zZT1uZXcgRHIoITEpLHRoaXMuYnlwYXNzU2Nyb2xsU2VydmljZT0hMX1nZXQgZmFkZU1vdmUoKXtyZXR1cm4gdGhpcy5za2lwQW5pbWF0aW9uPyIiOnRoaXMuY29uZmlndXJhdGlvbi5mYWRlTW92ZX1zZXQgZmFkZU1vdmUoYSl7dGhpcy5jb25maWd1cmF0aW9uLmZhZGVNb3Zl''@;'; put 'put ''PWF9Z2V0IGJhY2tkcm9wKCl7cmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5iYWNrZHJvcH1uZ09uQ2hhbmdlcyhhKXshdGhpcy5ieXBhc3NTY3JvbGxTZXJ2aWNlJiZhJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwiX29wZW4iKSYmKGEuX29wZW4uY3VycmVudFZh''@;'; put 'put ''bHVlPyh0aGlzLmJhY2tkcm9wJiZ0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnN0b3BTY3JvbGxpbmcoKSx0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxPcGVuKHRoaXMpKTp0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnJlc3VtZVNjcm9sbGluZygpKX1uZ09uRGVzdHJveSgpe3RoaXMu''@;'; put 'put ''X3Njcm9sbGluZ1NlcnZpY2UucmVzdW1lU2Nyb2xsaW5nKCl9b3Blbigpe3RoaXMuX29wZW58fCh0aGlzLl9vcGVuPSEwLHRoaXMuX29wZW5DaGFuZ2VkLmVtaXQoITApLHRoaXMubW9kYWxTdGFja1NlcnZpY2UudHJhY2tNb2RhbE9wZW4odGhpcykpfWNsb3NlKCl7dGhpcy5zdG9wQ2xvc2U/''@;'; put 'put ''dGhpcy5hbHRDbG9zZS5lbWl0KCExKTohdGhpcy5jbG9zYWJsZXx8IXRoaXMuX29wZW58fCh0aGlzLl9vcGVuPSExKX1mYWRlRG9uZShhKXsidm9pZCI9PT1hLnRvU3RhdGUmJih0aGlzLl9vcGVuQ2hhbmdlZC5lbWl0KCExKSx0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxDbG9z''@;'; put 'put ''ZSh0aGlzKSl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKHF1ZSksSmUoVXMpLEplKF91ZSksSmUoeVkpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLW1vZGFsIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1''@;'; put 'put ''bmN0aW9uKGEsZCl7MiZhJiZwcigib3BlbiIsZC5fb3Blbil9LGlucHV0czp7X29wZW46W2puLk5vbmUsImNsck1vZGFsT3BlbiIsIl9vcGVuIl0sY2xvc2FibGU6W2puLk5vbmUsImNsck1vZGFsQ2xvc2FibGUiLCJjbG9zYWJsZSJdLGNsb3NlQnV0dG9uQXJpYUxhYmVsOltqbi5Ob25lLCJj''@;'; put 'put ''bHJNb2RhbENsb3NlQnV0dG9uQXJpYUxhYmVsIiwiY2xvc2VCdXR0b25BcmlhTGFiZWwiXSxzaXplOltqbi5Ob25lLCJjbHJNb2RhbFNpemUiLCJzaXplIl0sc3RhdGljQmFja2Ryb3A6W2puLk5vbmUsImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJzdGF0aWNCYWNrZHJvcCJdLHNraXBBbmlt''@;'; put 'put ''YXRpb246W2puLk5vbmUsImNsck1vZGFsU2tpcEFuaW1hdGlvbiIsInNraXBBbmltYXRpb24iXSxzdG9wQ2xvc2U6W2puLk5vbmUsImNsck1vZGFsUHJldmVudENsb3NlIiwic3RvcENsb3NlIl0sbGFiZWxsZWRCeTpbam4uTm9uZSwiY2xyTW9kYWxMYWJlbGxlZEJ5SWQiLCJsYWJlbGxlZEJ5''@;'; put 'put ''Il0sYnlwYXNzU2Nyb2xsU2VydmljZTpbam4uTm9uZSwiY2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2UiLCJieXBhc3NTY3JvbGxTZXJ2aWNlIl19LG91dHB1dHM6e19vcGVuQ2hhbmdlZDoiY2xyTW9kYWxPcGVuQ2hhbmdlIixhbHRDbG9zZToiY2xyTW9kYWxBbHRlcm5hdGVDbG9zZSJ9''@;'; put 'put ''LGZlYXR1cmVzOltaaShbXSxbcXVlXSksSmFdLG5nQ29udGVudFNlbGVjdG9yczptTmUsZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbImNsYXNzIiwibW9kYWwiLDMsIm1vZGFsLWZ1bGwtc2NyZWVuIiw0LCJuZ0lmIl0sWzEsIm1vZGFsIl0sWyJjZGtUcmFwRm9jdXMiLCIiLCJyb2xlIiwiZGlh''@;'; put 'put ''bG9nIiwiYXJpYS1tb2RhbCIsInRydWUiLDEsIm1vZGFsLWRpYWxvZyIsMywiY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiXSxbMSwiY2xyLXNyLW9ubHkiXSxbMSwibW9kYWwtY29udGVudC13cmFwcGVyIl0sWzEsIm1vZGFsLWNvbnRlbnQiXSxbMSwibW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxl''@;'; put 'put ''Il0sWyJjZGtGb2N1c0luaXRpYWwiLCIiLCJ0YWJpbmRleCIsIi0xIiwxLCJtb2RhbC10aXRsZS13cmFwcGVyIiwzLCJpZCJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiY2xvc2UiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWJvZHktd3JhcHBlciJdLFsiY2xhc3MiLCJtb2Rh''@;'; put 'put ''bC1iYWNrZHJvcCIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMywiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImNsb3NlIiwzLCJjbGljayJdLFsic2hhcGUiLCJ3aW5kb3ctY2xvc2UiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtYmFja2Ryb3AiLDMsImNsaWNr''@;'; put 'put ''Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoSGkoZ05lKSxndCgwLGJOZSwxNywxNywiZGl2IiwwKSksMiZhJiZSZSgibmdJZiIsZC5fb3Blbil9LGRlcGVuZGVuY2llczpbJGksSF8sR3NdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpub25lfS5vcGVuW19uZ2hv''@;'; put 'put ''c3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZX0iXSxkYXRhOnthbmltYXRpb246W0NkKCJmYWRlTW92ZSIsW1NjKCIqID0+IGZhZGVEb3duIixbRnMoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjUlKSJ9KSxqdSgiMC4ycyBlYXNlLWluLW91dCIpXSksU2MoImZhZGVEb3du''@;'; put 'put ''ID0+ICoiLFtqdSgiMC4ycyBlYXNlLWluLW91dCIsRnMoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgwLCAtMjUlKSJ9KSldKSxTYygiKiA9PiBmYWRlTGVmdCIsW0ZzKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGUoMjUlLCAwKSJ9KSxqdSgiMC4ycyBlYXNlLWluLW91''@;'; put 'put ''dCIpXSksU2MoImZhZGVMZWZ0ID0+ICoiLFtqdSgiMC4ycyBlYXNlLWluLW91dCIsRnMoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZSgyNSUsIDApIn0pKV0pXSksQ2QoImZhZGUiLFtTYygidm9pZCA9PiAqIixbRnMoe29wYWNpdHk6MH0pLGp1KCIwLjJzIGVhc2UtaW4tb3V0IixG''@;'; put 'put ''cyh7b3BhY2l0eTouODV9KSldKSxTYygiKiA9PiB2b2lkIixbanUoIjAuMnMgZWFzZS1pbi1vdXQiLEZzKHtvcGFjaXR5OjB9KSldKV0pXX19KSxsfSkoKSxpdT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLnJlbmRlcmVyPWEsdGhpcy5ob3N0PWQsdGhpcy50YWJpbmRl''@;'; put 'put ''eD0iMCIsdGhpcy51bmxpc3RlbmVycz1bXSxoLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5vYnNlcnZlcj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9PnRoaXMuYWRkT3JSZW1vdmVUYWJJbmRleCgpKSx0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpLHRo''@;'; put 'put ''aXMudW5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwibW91c2V1cCIsKCk9Pnt0aGlzLmFkZE9yUmVtb3ZlVGFiSW5kZXgoKX0pLHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJtb3VzZWRvd24i''@;'; put 'put ''LCgpPT57dGhpcy5yZW1vdmVUYWJJbmRleCgpfSkpfSl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMudW5saXN0ZW5lcnMubGVuZ3RoOyl0aGlzLnVubGlzdGVuZXJzLnBvcCgpKCk7dGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5vYnNlcnZlcj1udWxsfWFkZFRhYkluZGV4KCl7dGhp''@;'; put 'put ''cy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsInRhYmluZGV4Iix0aGlzLnRhYmluZGV4KX1yZW1vdmVUYWJJbmRleCgpe3RoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCJ0YWJpbmRleCIpfWFkZE9yUmVt''@;'; put 'put ''b3ZlVGFiSW5kZXgoKXtjb25zdCBhPXRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7YSYmYS5jbGllbnRIZWlnaHQ8YS5zY3JvbGxIZWlnaHQ/dGhpcy5hZGRUYWJJbmRleCgpOnRoaXMucmVtb3ZlVGFiSW5kZXgoKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEp''@;'; put 'put ''e3JldHVybiBuZXcoYXx8bCkoSmUoZHMpLEplKE5pKSxKZShNbykpfSxsLlx1MDI3NWRpcj1ncih7dHlwZTpsLHNlbGVjdG9yczpbWyIiLDgsIm1vZGFsLWJvZHkiXV19KSxsfSkoKSx3WT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMock0pfX1yZXR1cm4gbC5cdTAy''@;'; put 'put ''NzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtwcm92aWRlcnM6W3lZXSxpbXBvcnRzOltvbyxfUixuYSxuYV19KSxsfSkoKSxzQmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sX1IsbmEsd1ksbmFdfSksbH0pKCk7Y29uc3QgYUJlPXsidG9wLWxlZnQiOnthbmNob3JQb2ludDpKci5UT1BfQ0VOVEVSLHBvcG92ZXJQb2ludDpKci5C''@;'; put 'put ''T1RUT01fUklHSFQsb2Zmc2V0WTotMTYsb2Zmc2V0WDowfSwidG9wLW1pZGRsZSI6e2FuY2hvclBvaW50OkpyLlRPUF9DRU5URVIscG9wb3ZlclBvaW50OkpyLkJPVFRPTV9DRU5URVIsb2Zmc2V0WTotMTYsb2Zmc2V0WDowfSwidG9wLXJpZ2h0Ijp7YW5jaG9yUG9pbnQ6SnIuVE9QX0NFTlRF''@;'; put 'put ''Uixwb3BvdmVyUG9pbnQ6SnIuQk9UVE9NX0xFRlQsb2Zmc2V0WTotMTYsb2Zmc2V0WDowfSwicmlnaHQtdG9wIjp7YW5jaG9yUG9pbnQ6SnIuUklHSFRfQ0VOVEVSLHBvcG92ZXJQb2ludDpKci5MRUZUX0JPVFRPTSxvZmZzZXRZOjAsb2Zmc2V0WDoxNn0sInJpZ2h0LW1pZGRsZSI6e2FuY2hv''@;'; put 'put ''clBvaW50OkpyLlJJR0hUX0NFTlRFUixwb3BvdmVyUG9pbnQ6SnIuTEVGVF9DRU5URVIsb2Zmc2V0WTowLG9mZnNldFg6MTZ9LCJyaWdodC1ib3R0b20iOnthbmNob3JQb2ludDpKci5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OkpyLkxFRlRfVE9QLG9mZnNldFk6MCxvZmZzZXRYOjE2fSwi''@;'; put 'put ''Ym90dG9tLXJpZ2h0Ijp7YW5jaG9yUG9pbnQ6SnIuQk9UVE9NX0NFTlRFUixwb3BvdmVyUG9pbnQ6SnIuVE9QX0xFRlQsb2Zmc2V0WToxNixvZmZzZXRYOjB9LCJib3R0b20tbWlkZGxlIjp7YW5jaG9yUG9pbnQ6SnIuQk9UVE9NX0NFTlRFUixwb3BvdmVyUG9pbnQ6SnIuVE9QX0NFTlRFUixv''@;'; put 'put ''ZmZzZXRZOjE2LG9mZnNldFg6MH0sImJvdHRvbS1sZWZ0Ijp7YW5jaG9yUG9pbnQ6SnIuQk9UVE9NX0NFTlRFUixwb3BvdmVyUG9pbnQ6SnIuVE9QX1JJR0hULG9mZnNldFk6MTYsb2Zmc2V0WDowfSwibGVmdC1ib3R0b20iOnthbmNob3JQb2ludDpKci5MRUZUX0NFTlRFUixwb3BvdmVyUG9p''@;'; put 'put ''bnQ6SnIuUklHSFRfVE9QLG9mZnNldFk6MCxvZmZzZXRYOi0xNn0sImxlZnQtbWlkZGxlIjp7YW5jaG9yUG9pbnQ6SnIuTEVGVF9DRU5URVIscG9wb3ZlclBvaW50OkpyLlJJR0hUX0NFTlRFUixvZmZzZXRZOjAsb2Zmc2V0WDotMTZ9LCJsZWZ0LXRvcCI6e2FuY2hvclBvaW50OkpyLkxFRlRf''@;'; put 'put ''Q0VOVEVSLHBvcG92ZXJQb2ludDpKci5SSUdIVF9CT1RUT00sb2Zmc2V0WTowLG9mZnNldFg6LTE2fSxkZWZhdWx0OnthbmNob3JQb2ludDpKci5SSUdIVF9DRU5URVIscG9wb3ZlclBvaW50OkpyLkxFRlRfQ0VOVEVSLG9mZnNldFk6MCxvZmZzZXRYOjE2fX0sbEJlPVsidG9wLWxlZnQiLCJ0''@;'; put 'put ''b3AtbWlkZGxlIiwidG9wLXJpZ2h0IiwicmlnaHQtdG9wIiwicmlnaHQtbWlkZGxlIiwicmlnaHQtYm90dG9tIiwiYm90dG9tLXJpZ2h0IiwiYm90dG9tLW1pZGRsZSIsImJvdHRvbS1sZWZ0IiwibGVmdC1ib3R0b20iLCJsZWZ0LW1pZGRsZSIsImxlZnQtdG9wIl07bGV0IEt1ZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBsIGV4dGVuZHMgZFl7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVil7aWYoc3VwZXIoYSxkKSx0aGlzLmNvbW1vblN0cmluZ3M9aCx0aGlzLnNpZ25wb3N0SWRTZXJ2aWNlPWYsdGhpcy5zaWducG9zdEZvY3VzTWFuYWdlcj12LHRoaXMucGxhdGZvcm1JZD1TLHRoaXMuc2lnbnBvc3RD''@;'; put 'put ''b250ZW50SWQ9dHUoKSwhZCl0aHJvdyBuZXcgRXJyb3IoImNsci1zaWducG9zdC1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEgY2xyLXNpZ25wb3N0Iik7dGhpcy5wb3NpdGlvbj0icmlnaHQtbWlkZGxlIix0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5z''@;'; put 'put ''aWducG9zdElkU2VydmljZS5zZXRJZCh0aGlzLnNpZ25wb3N0Q29udGVudElkKSx0aGlzLmRvY3VtZW50PVZ9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufXNldCBwb3NpdGlvbihhKXt0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCx0''@;'; put 'put ''aGlzLnBvc2l0aW9uKSx0aGlzLl9wb3NpdGlvbj1hJiZsQmUuaW5kZXhPZihhKT4tMT9hOiJyaWdodC1taWRkbGUiLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LHRoaXMucG9zaXRpb24pO2NvbnN0IGQ9YUJlW3RoaXMucG9zaXRpb25dO3RoaXMuYW5jaG9y''@;'; put 'put ''UG9pbnQ9ZC5hbmNob3JQb2ludCx0aGlzLnBvcG92ZXJQb2ludD1kLnBvcG92ZXJQb2ludCx0aGlzLnBvcG92ZXJPcHRpb25zLm9mZnNldFk9ZC5vZmZzZXRZLHRoaXMucG9wb3Zlck9wdGlvbnMub2Zmc2V0WD1kLm9mZnNldFh9Y2xvc2UoKXt0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbj0hMX1u''@;'; put 'put ''Z09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksbWEodGhpcy5wbGF0Zm9ybUlkKSYmdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkmJnRoaXMuc2lnbnBvc3RGb2N1c01hbmFnZXIuZm9jdXNUcmlnZ2VyKCl9fXJldHVybiBs''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKE1hKSxKZShkUiw4KSxKZShVcyksSmUoZVkpLEplKFFaKSxKZShJbyksSmUoenMpKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY2xyLXNpZ25wb3N0LWNvbnRlbnQiXV0saG9zdFZhcnM6Myxo''@;'; put 'put ''b3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsyJmEmJihkMygiaWQiLGQuc2lnbnBvc3RDb250ZW50SWQpLHByKCJzaWducG9zdC1jb250ZW50IiwhMCkpfSxpbnB1dHM6e3Bvc2l0aW9uOltqbi5Ob25lLCJjbHJQb3NpdGlvbiIsInBvc2l0aW9uIl19LGZlYXR1cmVzOltlb10sbmdDb250ZW50''@;'; put 'put ''U2VsZWN0b3JzOlpvLGRlY2xzOjcsdmFyczozLGNvbnN0czpbWzEsInNpZ25wb3N0LXdyYXAiXSxbMSwicG9wb3Zlci1wb2ludGVyIl0sWzEsInNpZ25wb3N0LWNvbnRlbnQtaGVhZGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJzaWducG9zdC1hY3Rpb24iLCJjbG9zZSIsMywiY2xpY2siXSxb''@;'; put 'put ''InNoYXBlIiwid2luZG93LWNsb3NlIl0sWyJ0YWJpbmRleCIsIjAiLDEsInNpZ25wb3N0LWNvbnRlbnQtYm9keSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksZ2UoMCwiZGl2IiwwKSxZdCgxLCJkaXYiLDEpLGdlKDIsImRpdiIsMikoMywiYnV0dG9uIiwzKSxJdCgiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7cmV0dXJuIGQuY2xvc2UoKX0pLFl0KDQsImNkcy1pY29uIiw0KSxtZSgpKCksZ2UoNSwiZGl2Iiw1KSxJcig2KSxtZSgpKCkpLDImYSYmKF9lKDMpLHVyKCJhcmlhLWxhYmVsIixkLmNvbW1vblN0cmluZ3Mua2V5cy5zaWducG9zdENsb3NlKSgiYXJpYS1jb250cm9s''@;'; put 'put ''cyIsZC5zaWducG9zdENvbnRlbnRJZCksX2UoKSx1cigidGl0bGUiLGQuY29tbW9uU3RyaW5ncy5rZXlzLmNsb3NlKSl9LGRlcGVuZGVuY2llczpbR3NdLGVuY2Fwc3VsYXRpb246Mn0pLGx9KSgpLGNCZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMock0sdURlKX19''@;'; put 'put ''cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sbmEsZlIsQWhdfSksbH0pKCksQ1k9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lkPW5ldyB0''@;'; put 'put ''bn1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWQuYXNPYnNlcnZhYmxlKCl9dXBkYXRlSWQoYSl7dGhpcy5faWQubmV4dChhKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFj''@;'; put 'put ''fSksbH0pKCksU1k9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLnRvZ2dsZVNlcnZpY2U9YX1vbk1vdXNlRW50ZXJUcmlnZ2VyKCl7dGhpcy5tb3VzZU92ZXJUcmlnZ2VyPSEwLHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSEwfW9uTW91c2VMZWF2ZVRyaWdnZXIoKXt0aGlzLm1v''@;'; put 'put ''dXNlT3ZlclRyaWdnZXI9ITEsdGhpcy5oaWRlSWZNb3VzZU91dCgpfW9uTW91c2VFbnRlckNvbnRlbnQoKXt0aGlzLm1vdXNlT3ZlckNvbnRlbnQ9ITB9b25Nb3VzZUxlYXZlQ29udGVudCgpe3RoaXMubW91c2VPdmVyQ29udGVudD0hMSx0aGlzLmhpZGVJZk1vdXNlT3V0KCl9aGlkZUlmTW91''@;'; put 'put ''c2VPdXQoKXtzZXRUaW1lb3V0KCgpPT57IXRoaXMubW91c2VPdmVyVHJpZ2dlciYmIXRoaXMubW91c2VPdmVyQ29udGVudCYmKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuPSExKX0sMCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpKGNyKFJsKSl9LGwu''@;'; put 'put ''XHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSksbH0pKCksRjg9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10b29sdGlw''@;'; put 'put ''Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGEsZCl7MiZhJiZwcigidG9vbHRpcCIsITApfSxmZWF0dXJlczpbWmkoW0NZLFNZXSksQTEoW2g0XSldLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhp''@;'; put 'put ''KCksSXIoMCkpfSxlbmNhcHN1bGF0aW9uOjJ9KSxsfSkoKTtjb25zdCBkQmU9WyJib3R0b20tbGVmdCIsImJvdHRvbS1yaWdodCIsInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwicmlnaHQiLCJsZWZ0Il0saEJlPVsieHMiLCJzbSIsIm1kIiwibGciXTtsZXQgTjg9KCgpPT57Y2xhc3MgbCBleHRl''@;'; put 'put ''bmRzIGRZe2NvbnN0cnVjdG9yKGEsZCxoLGYpe2lmKHN1cGVyKGEsZCksdGhpcy50b29sdGlwSWRTZXJ2aWNlPWgsdGhpcy50b29sdGlwTW91c2VTZXJ2aWNlPWYsIWQpdGhyb3cgbmV3IEVycm9yKCJjbHItdG9vbHRpcC1jb250ZW50IHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIGEg''@;'; put 'put ''Y2xyLXRvb2x0aXAiKTt0aGlzLmlkPXR1KCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZChhKXtjb25zdCBkPWF8fCIiO3RoaXMuX2lkPWQsdGhpcy50b29sdGlwSWRTZXJ2aWNlLnVwZGF0ZUlkKGQpfWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn1zZXQgcG9z''@;'; put 'put ''aXRpb24oYSl7Y29uc3QgZD10aGlzLl9wb3NpdGlvbixoPWRCZS5pbmNsdWRlcyhhKT9hOiJyaWdodCI7c3dpdGNoKHRoaXMuX3Bvc2l0aW9uPWgsdGhpcy51cGRhdGVDc3NDbGFzcyh7b2xkQ2xhc3M6YHRvb2x0aXAtJHtkfWAsbmV3Q2xhc3M6YHRvb2x0aXAtJHtofWB9KSxoKXtjYXNlInRv''@;'; put 'put ''cC1yaWdodCI6dGhpcy5hbmNob3JQb2ludD1Kci5UT1BfQ0VOVEVSLHRoaXMucG9wb3ZlclBvaW50PUpyLkxFRlRfQk9UVE9NO2JyZWFrO2Nhc2UidG9wLWxlZnQiOnRoaXMuYW5jaG9yUG9pbnQ9SnIuVE9QX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1Kci5SSUdIVF9CT1RUT007YnJlYWs7''@;'; put 'put ''Y2FzZSJib3R0b20tcmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9SnIuQk9UVE9NX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1Kci5MRUZUX1RPUDticmVhaztjYXNlImJvdHRvbS1sZWZ0Ijp0aGlzLmFuY2hvclBvaW50PUpyLkJPVFRPTV9DRU5URVIsdGhpcy5wb3BvdmVyUG9pbnQ9SnIuUklH''@;'; put 'put ''SFRfVE9QO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMuYW5jaG9yUG9pbnQ9SnIuUklHSFRfQ0VOVEVSLHRoaXMucG9wb3ZlclBvaW50PUpyLkxFRlRfVE9QO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy5hbmNob3JQb2ludD1Kci5MRUZUX0NFTlRFUix0aGlzLnBvcG92ZXJQb2ludD1Kci5SSUdIVF9U''@;'; put 'put ''T1A7YnJlYWs7ZGVmYXVsdDohZnVuY3Rpb24gdUJlKGwpe3Rocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIHZhbHVlOiAke2x9YCl9KGgpfX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfXNldCBzaXplKGEpe2NvbnN0IGQ9dGhpcy5fc2l6ZSxoPWhCZS5pbmNsdWRlcyhhKT9hOiJzbSI7''@;'; put 'put ''dGhpcy5fc2l6ZT1oLHRoaXMudXBkYXRlQ3NzQ2xhc3Moe29sZENsYXNzOmB0b29sdGlwLSR7ZH1gLG5ld0NsYXNzOmB0b29sdGlwLSR7aH1gfSl9bmdPbkluaXQoKXt0aGlzLnNpemU9dGhpcy5zaXplfHwic20iLHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbnx8InJpZ2h0In1vbk1vdXNl''@;'; put 'put ''RW50ZXIoKXt0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2Uub25Nb3VzZUVudGVyQ29udGVudCgpfW9uTW91c2VMZWF2ZSgpe3RoaXMudG9vbHRpcE1vdXNlU2VydmljZS5vbk1vdXNlTGVhdmVDb250ZW50KCl9dXBkYXRlQ3NzQ2xhc3Moe29sZENsYXNzOmEsbmV3Q2xhc3M6ZH0pe3RoaXMucmVu''@;'; put 'put ''ZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGEpLHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LGQpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShKZShNYSksSmUoZFIsOCksSmUoQ1kpLEpl''@;'; put 'put ''KFNZKSl9LGwuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImNsci10b29sdGlwLWNvbnRlbnQiXV0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24oYSxkKXsxJmEmJkl0KCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uTW91c2VFbnRlcigpfSkoIm1v''@;'; put 'put ''dXNlbGVhdmUiLGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb3VzZUxlYXZlKCl9KSwyJmEmJihkMygiaWQiLGQuaWQpLHVyKCJyb2xlIiwidG9vbHRpcCIpLGdkKCJvcGFjaXR5IiwxKSxwcigidG9vbHRpcC1jb250ZW50IiwhMCkpfSxpbnB1dHM6e2lkOiJpZCIscG9zaXRpb246W2puLk5vbmUs''@;'; put 'put ''ImNsclBvc2l0aW9uIiwicG9zaXRpb24iXSxzaXplOltqbi5Ob25lLCJjbHJTaXplIiwic2l6ZSJdfSxmZWF0dXJlczpbZW9dLG5nQ29udGVudFNlbGVjdG9yczpabyxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihhLGQpezEmYSYmKEhpKCksSXIoMCkpfSxlbmNhcHN1bGF0aW9u''@;'; put 'put ''OjJ9KSxsfSkoKSxIOD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLnRvZ2dsZVNlcnZpY2U9YSx0aGlzLnRvb2x0aXBJZFNlcnZpY2U9ZCx0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2U9aCx0aGlzLnN1YnM9W10sdGhpcy5zdWJzLnB1c2godGhpcy50b29sdGlwSWRTZXJ2''@;'; put 'put ''aWNlLmlkLnN1YnNjcmliZShmPT50aGlzLmFyaWFEZXNjcmliZWRCeT1mKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN1YnMuZm9yRWFjaChhPT5hLnVuc3Vic2NyaWJlKCkpfXNob3dUb29sdGlwKCl7dGhpcy50b2dnbGVTZXJ2aWNlLm9wZW49ITB9aGlkZVRvb2x0aXAoKXt0aGlzLnRvZ2dsZVNl''@;'; put 'put ''cnZpY2Uub3Blbj0hMX1vbk1vdXNlRW50ZXIoKXt0aGlzLnRvb2x0aXBNb3VzZVNlcnZpY2Uub25Nb3VzZUVudGVyVHJpZ2dlcigpfW9uTW91c2VMZWF2ZSgpe3RoaXMudG9vbHRpcE1vdXNlU2VydmljZS5vbk1vdXNlTGVhdmVUcmlnZ2VyKCl9fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpKEplKFJsKSxKZShDWSksSmUoU1kpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiY2xyVG9vbHRpcFRyaWdnZXIiLCIiXV0saG9zdEF0dHJzOlsidGFiaW5kZXgiLCIwIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rp''@;'; put 'put ''b24oYSxkKXsxJmEmJkl0KCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZC5zaG93VG9vbHRpcCgpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGQuaGlkZVRvb2x0aXAoKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBkLm9uTW91c2VFbnRlcigpfSkoIm1vdXNlbGVhdmUi''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIGQub25Nb3VzZUxlYXZlKCl9KSwyJmEmJih1cigiYXJpYS1kZXNjcmliZWRieSIsZC5hcmlhRGVzY3JpYmVkQnkpKCJyb2xlIiwiYnV0dG9uIikscHIoInRvb2x0aXAtdHJpZ2dlciIsITApKX19KSxsfSkoKSxmQmU9KCgpPT57Y2xhc3MgbHt9cmV0dXJuIGwu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sQWgsbmFdfSksbH0pKCkscEJlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4g''@;'; put 'put ''bmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W2hZLGNCZSxmQmVdfSksbH0pKCksZ0JlPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7''@;'; put 'put ''dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpLHZCZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7V3MuYWRkSWNvbnMoZERlLGhEZSxRVSxIbGUpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKX0sbC5cdTAyNzVt''@;'; put 'put ''b2Q9ZWkoe3R5cGU6bH0pLGwuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxuYSxGXyxuYSxGX119KSxsfSkoKSxDQmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe1dzLmFkZEljb25zKFFVKX19cmV0dXJuIGwuXHUwMjc1ZmFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcoYXx8bCl9LGwu''@;'; put 'put ''XHUwMjc1bW9kPWVpKHt0eXBlOmx9KSxsLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sd1ksVXVlXX0pLGx9KSgpLGMwPSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAy''@;'; put 'put ''NzVpbmo9c2koe2ltcG9ydHM6W2pWZSxSVmUsbmEsd1ksRFosQWgsZlIsZkhlLGd1ZSxvQmUscEJlLENCZSxzQmUsZUhlLEZfLGdCZSxFTSx2QmVdfSksbH0pKCksU0JlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmxvZ2dlclNlcnZpY2U9''@;'; put 'put ''ZCx0aGlzLl9zdWJzY3JpcHRpb249bmV3IEt0LHRoaXMubG9hZGluZz0hMSx0aGlzLmFsZXJ0Q2xvc2VkPSEwLHRoaXMuZGF0YT17dXNlcjpudWxsLHBhc3M6bnVsbH19bmdPbkluaXQoKXsiUmVkaXJlY3RlZCIhPT10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKS5sb2dpbk1lY2hh''@;'; put 'put ''bmlzbSYmKHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLnNhc1NlcnZpY2Uuc2hvdWxkTG9naW4uc3Vic2NyaWJlKGQ9Pnt0aGlzLmlzQWN0aXZlPWQ7bGV0IGg9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYm9keSIpO2gmJihkP2guY2xhc3NMaXN0LmFkZCgic2hvdWxkLWxvZ2luIik6aC5jbGFz''@;'; put 'put ''c0xpc3QucmVtb3ZlKCJzaG91bGQtbG9naW4iKSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1zdWJtaXQoKXt0aGlzLmxvYWRpbmd8fCh0aGlzLmxvYWRpbmc9ITAsdGhpcy5kYXRhLnVzZXImJnRoaXMuZGF0YS5wYXNzJiZ0aGlzLnNhc1NlcnZp''@;'; put 'put ''Y2UubG9naW4odGhpcy5kYXRhLnVzZXIsdGhpcy5kYXRhLnBhc3MpLnRoZW4oYT0+e3RoaXMubG9hZGluZz0hMSxhfHwodGhpcy5lcnJvck1zZz0iVXNlcm5hbWUgb3IgcGFzc3dvcmQgaW52YWxpZCIsdGhpcy5hbGVydENsb3NlZD0hMSl9LGE9Pnt0aGlzLmxvZ2dlclNlcnZpY2UubG9nKGEp''@;'; put 'put ''LHRoaXMubG9hZGluZz0hMSx0aGlzLmVycm9yTXNnPWEsdGhpcy5hbGVydENsb3NlZD0hMX0pKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZSh2YSksSmUoTzEpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3Jz''@;'; put 'put ''OltbImFwcC1sb2dpbiJdXSxkZWNsczoyMCx2YXJzOjksY29uc3RzOltbMSwibG9naW4tc2lkZWJhci13cmFwcGVyIl0sWzEsImxvZ2luLXNpZGViYXIiLCJzaWRlQmFyUHJvcHMiXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0v''@;'; put 'put ''d2ViOS9pbWFnZXMvZGF0YWNvbnRyb2xsZXItc3ZnIiwiYWx0IiwiIiwxLCJsb2dpbi1sb2dvIl0sWzEsImxvZ2luIiwzLCJuZ1N1Ym1pdCJdLFsxLCJ0aXRsZSJdLFsxLCJ3ZWxjb21lIl0sWzEsImhpbnQiXSxbMSwibG9naW4tZ3JvdXAiXSxbImNscklucHV0IiwiIiwibmFtZSIsInVzZXIi''@;'; put 'put ''LCJ0eXBlIiwidGV4dCIsInBsYWNlaG9sZGVyIiwiVXNlcm5hbWUiLDEsInVzZXJuYW1lIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiY2xySW5wdXQiLCIiLCJuYW1lIiwicGFzcyIsInR5cGUiLCJwYXNzd29yZCIsInBsYWNlaG9sZGVyIiwiUGFzc3dvcmQiLDEsInBhc3N3b3Jk''@;'; put 'put ''IiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFszLCJjbHJBbGVydENsb3NlZENoYW5nZSIsImNsckFsZXJ0VHlwZSIsImNsckFsZXJ0Q2xvc2VkIl0sWyJjbHItYWxlcnQtaXRlbSIsIiIsMSwiYWxlcnQtaXRlbSJdLFsxLCJhbGVydC10ZXh0Il0sWyJ0eXBlIiwic3VibWl0IiwxLCJi''@;'; put 'put ''dG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsMywiY2xyTG9hZGluZyIsImRpc2FibGVkIl0sWzEsIm92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJkaXYiLDApKDEsImRpdiIsMSksWXQoMiwiaW1nIiwyKSxnZSgzLCJmb3JtIiwzKSxJdCgibmdTdWJtaXQi''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIGguc3VibWl0KCl9KSxnZSg0LCJsYWJlbCIsNCkoNSwiaDMiLDUpLFBlKDYsIldlbGNvbWUgdG8iKSxtZSgpLFBlKDcsIiBEYXRhIENvbnRyb2xsZXIgIiksZ2UoOCwiaDUiLDYpLFBlKDksIkNhcHR1cmUsIFJldmlldywgYW5kIEFwcHJvdmUiKSxtZSgpKCks''@;'; put 'put ''Z2UoMTAsImRpdiIsNykoMTEsImlucHV0Iiw4KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIEdyKGguZGF0YS51c2VyLHYpfHwoaC5kYXRhLnVzZXI9diksdn0pLG1lKCksZ2UoMTIsImlucHV0Iiw5KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJu''@;'; put 'put ''IEdyKGguZGF0YS5wYXNzLHYpfHwoaC5kYXRhLnBhc3M9diksdn0pLG1lKCksZ2UoMTMsImNsci1hbGVydCIsMTApLFdyKCJjbHJBbGVydENsb3NlZENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIEdyKGguYWxlcnRDbG9zZWQsdil8fChoLmFsZXJ0Q2xvc2VkPXYpLHZ9KSxnZSgxNCwiZGl2''@;'; put 'put ''IiwxMSkoMTUsInNwYW4iLDEyKSxQZSgxNiksbWUoKSgpKCksZ2UoMTcsImJ1dHRvbiIsMTMpLFBlKDE4LCIgTG9nIGluICIpLG1lKCkoKSgpKCksWXQoMTksImRpdiIsMTQpLG1lKCkpLDImZCYmKHByKCJhY3RpdmUiLGguaXNBY3RpdmUpLF9lKDExKSxZcigibmdNb2RlbCIsaC5kYXRhLnVz''@;'; put 'put ''ZXIpLF9lKCksWXIoIm5nTW9kZWwiLGguZGF0YS5wYXNzKSxfZSgpLFJlKCJjbHJBbGVydFR5cGUiLCJhbGVydC1kYW5nZXIiKSxZcigiY2xyQWxlcnRDbG9zZWQiLGguYWxlcnRDbG9zZWQpLF9lKDMpLGxyKGguZXJyb3JNc2cpLF9lKCksUmUoImNsckxvYWRpbmciLGgubG9hZGluZykoImRp''@;'; put 'put ''c2FibGVkIixoLmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOlt1OCx1bCxfYSxsOCx1YSxNMyxGTSxOTSxsMCxEaCwkcyxFZF0sc3R5bGVzOlsiLnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudDtjb2xvcjojZTBlMGUwfS5zaWRlQmFy''@;'; put 'put ''UHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGVCYXJQcm9wc1tfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0s''@;'; put 'put ''IC5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAuc2lkZUJhclByb3BzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTBlMGUwfS5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6d2hlYXQhaW1wb3J0YW50fS5zaWRlQmFyUHJvcHNbX25nY29udGVudC0lQ09NUCVdICAgYVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2UwZTBlMH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwMDB9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gPiAqW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2''@;'; put 'put ''ZW50czphdXRvfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjQwMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJp''@;'; put 'put ''Z2h0OjFweCBzb2xpZCAjZGRkO3BhZGRpbmc6NDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlKC00MDBweCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXXt6LWluZGV4OjEwMTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjMycHg7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjM2cHh9LmxvZ2luLXNpZGViYXItd3JhcHBlcltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV0gICAubG9naW4tc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICBmb3JtLmxvZ2luW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZVtfbmdjb250ZW50LSVDT01QJV0gICAud2VsY29tZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDozNnB4fS5sb2dpbi1zaWRlYmFy''@;'; put 'put ''LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLXNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgZm9ybS5sb2dpbltfbmdjb250ZW50LSVDT01QJV0gICAubG9naW4tZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47''@;'; put 'put ''cGFkZGluZzo0OHB4IDAgMH0ubG9naW4tc2lkZWJhci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGZvcm0ubG9naW5bX25nY29udGVudC0lQ09NUCVdICAgLmxvZ2luLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSA+ICpb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde21hcmdpbjo2cHggMCAxOHB4fS5sb2dpbi1zaWRlYmFyLXdyYXBwZXIuYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5sb2dpbi1zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO3otaW5kZXg6MTAxfS5sb2dpbi1z''@;'; put 'put ''aWRlYmFyLXdyYXBwZXIuYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfS5sb2dpbi1zaWRlYmFyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6''@;'; put 'put ''bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiMyMTIxMjE4MDt6LWluZGV4OjEwMH0gIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC5jbHItY29udHJvbC1jb250YWluZXIsICAgLmxvZ2luLXNpZGVi''@;'; put 'put ''YXItd3JhcHBlciAubG9naW4tZ3JvdXAgLnVzZXJuYW1lLCAgIC5sb2dpbi1zaWRlYmFyLXdyYXBwZXIgLmxvZ2luLWdyb3VwIC5wYXNzd29yZHt3aWR0aDoxMDAlfSAgLmxvZ2luLXNpZGViYXItd3JhcHBlciAubG9naW4tZ3JvdXAgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpub25l''@;'; put 'put ''fSAgLmxvZ2luLXNpZGViYXItd3JhcHBlciAubG9naW4tZ3JvdXAgYnV0dG9ue21heC13aWR0aDpub25lfS5sb2dpbi1sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6MjAwcHh9Il19KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIE1CZShsLGMpezEmbCYmKGdlKDAsInNwYW4iLDEw''@;'; put 'put ''KSxQZSgxLCJsb2FkaW5nIiksbWUoKSl9ZnVuY3Rpb24geEJlKGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIsMTEpLFBlKDEsImxvYWRlZCIpLG1lKCkpfWZ1bmN0aW9uIEVCZShsLGMpezEmbCYmKGdlKDAsInNwYW4iLDEyKSxQZSgxLCJmYWlsZWQiKSxtZSgpKX1mdW5jdGlvbiBUQmUobCxjKXtp''@;'; put 'put ''ZigxJmwmJihnZSgwLCJwIikoMSwiY29kZSIpLFBlKDIpLG1lKCksUGUoMywiIFx4YTAgIiksZ3QoNCxNQmUsMiwwLCJzcGFuIiw3KSg1LHhCZSwyLDAsInNwYW4iLDgpKDYsRUJlLDIsMCwic3BhbiIsOSksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKDIpLGxyKGEucHJvZ3Jh''@;'; put 'put ''bSksX2UoMiksUmUoIm5nSWYiLGEucnVubmluZyksX2UoKSxSZSgibmdJZiIsIWEucnVubmluZyYmYS5zdWNjZXNzZnVsKSxfZSgpLFJlKCJuZ0lmIiwhYS5ydW5uaW5nJiYhYS5zdWNjZXNzZnVsKX19ZnVuY3Rpb24ga0JlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXNpZ25wb3N0LWNvbnRl''@;'; put 'put ''bnQiLDUpLGd0KDEsVEJlLDcsNCwicCIsNiksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7UmUoImNsclBvc2l0aW9uIiwiYm90dG9tLW1pZGRsZSIpLF9lKCksUmUoIm5nRm9yT2YiLGEucmVxdWVzdHMpfX1sZXQgQUJlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmxvYWRpbmc9''@;'; put 'put ''ITEsdGhpcy5yZXF1ZXN0cz1bXSx0aGlzLl9sb2FkaW5nU3ViPW5ldyBLdH1uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe3RoaXMuX2xvYWRpbmdTdWIudW5zdWJzY3JpYmUoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1sb2FkaW5nLWluZGljYXRvciJdXSxkZWNsczo2LHZhcnM6Nixjb25zdHM6W1sxLCJsb2FkaW5nLWluZGljYXRvciJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInNwaW5uZXIt''@;'; put 'put ''aW52ZXJzZSJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwic2hhcGUiLCJjaGVjayIsInNpemUiLCIyMCIsMSwiaXMtaW5mbyJdLFsiY2xyU2lnbnBvc3RUcmlnZ2VyIiwiIiwic2hhcGUiLCJlcnJvciIsInNpemUiLCIyNCIsMSwiaXMtZXJyb3IiXSxbMywiY2xyUG9zaXRpb24iLDQsImNs''@;'; put 'put ''cklmT3BlbiJdLFszLCJjbHJQb3NpdGlvbiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwicnVubmluZyIsNCwibmdJZiJdLFsiY2xhc3MiLCJzdWNjZXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImZhaWwiLDQsIm5nSWYiXSxbMSwicnVubmluZyJdLFsxLCJzdWNjZXNzIl0sWzEs''@;'; put 'put ''ImZhaWwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJkaXYiLDApKDEsImNsci1zaWducG9zdCIpLFl0KDIsInNwYW4iLDEpKDMsImNsci1pY29uIiwyKSg0LCJjbHItaWNvbiIsMyksZ3QoNSxrQmUsMiwyLCJjbHItc2lnbnBvc3QtY29udGVudCIsNCksbWUoKSgpKSwy''@;'; put 'put ''JmQmJihfZSgyKSxnZCgiZGlzcGxheSIsaC5sb2FkaW5nPyJpbmxpbmUtYmxvY2siOiJub25lIiksX2UoKSxnZCgiZGlzcGxheSIsIWgubG9hZGluZyYmaC5yZXF1ZXN0cy5sZW5ndGg+MCYmaC5yZXF1ZXN0c1swXS5zdWNjZXNzZnVsPyJpbmxpbmUtYmxvY2siOiJub25lIiksX2UoKSxnZCgi''@;'; put 'put ''ZGlzcGxheSIsIWgubG9hZGluZyYmaC5yZXF1ZXN0cy5sZW5ndGg+MCYmIWgucmVxdWVzdHNbMF0uc3VjY2Vzc2Z1bD8iaW5saW5lLWJsb2NrIjoibm9uZSIpKX0sZGVwZW5kZW5jaWVzOltWcywkaSxZYSxraCx0WSxLdWUsQVJdLHN0eWxlczpbIi5sb2FkaW5nLWluZGljYXRvcltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6Mi41cmVtO2hlaWdodDoyLjVyZW07ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MTAwJTttYXJnaW4tcmlnaHQ6MTBweH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgLnNwaW5uZXJbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzU2NTY1NjtjdXJzb3I6YXV0b30ubG9hZGluZy1p''@;'; put 'put ''bmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ubG9hZGluZy1pbmRp''@;'; put 'put ''Y2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBv''@;'; put 'put ''c3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMHB4fS5sb2FkaW5nLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV0gICBjbHItc2lnbnBvc3QtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IHNwYW4ucnVubmluZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2U5YmYwNH0ubG9hZGluZy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXNpZ25wb3N0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuLnN1Y2Nlc3Nb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MGI1MTV9LmxvYWRpbmctaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zaWducG9zdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5mYWlsW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XXtjb2xvcjojYzkyMTAwfSJdfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBEQmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjZHMtaWNvbiIsMTIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS50b2dnbGVEYXJrTW9kZSghMCkpfSksbWUoKX19''@;'; put 'put ''ZnVuY3Rpb24gSUJlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2RzLWljb24iLDEzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkudG9nZ2xlRGFya01vZGUoITEpKX0pLG1lKCl9fWZ1bmN0aW9uIFJCZShsLGMpe2lmKDEmbCYmKGdlKDAsInNw''@;'; put 'put ''YW4iKSxZdCgxLCJpbWciLDE0KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLHo2KCJzcmMiLGEuZ2V0UGljdHVyZVVybCgpLFJ3KX19ZnVuY3Rpb24gTEJlKGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIsMTUpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpO3ByKCJoaWRkZW4i''@;'; put 'put ''LDA9PT1hLmZhaWxlZFJlcXMubGVuZ3RoKSxfZSgpLGxyKGEuZmFpbGVkUmVxcy5sZW5ndGgpfX1mdW5jdGlvbiBPQmUobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiwxNiksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7cHIoImhpZGRlbiIsMD09PWEuZGVidWdMb2dzLmxlbmd0aCks''@;'; put 'put ''X2UoKSxscihhLmRlYnVnTG9ncy5sZW5ndGgpfX1mdW5jdGlvbiBQQmUobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwxNyl9ZnVuY3Rpb24gRkJlKGwsYyl7MSZsJiYoVnIoMCksZ2UoMSwiYSIsMjgpKDIsInNwYW4iLDI5KSxQZSgzLCJEb2N1bWVudGF0aW9uIiksbWUoKSgpLEJyKCkpfWZ1''@;'; put 'put ''bmN0aW9uIE5CZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1kcm9wZG93bi1tZW51IiwxOCkoMSwiZGl2IiwxOSwwKSgzLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMjApLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1HaSgyKTtyZXR1cm4gYnQoTmUo''@;'; put 'put ''KS5vbkRlYnVnUm93Q2xpY2soaCxmKSl9KSxnZSg0LCJjbHItdG9nZ2xlLXdyYXBwZXIiKSg1LCJpbnB1dCIsMjEpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYuc2FzanNDb25maWcuZGVidWcsaCl8fChmLnNhc2pzQ29uZmln''@;'; put 'put ''LmRlYnVnPWgpLGJ0KGgpfSksSXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25EZWJ1Z01vZGVDaGFuZ2UoKSl9KSxtZSgpLGdlKDYsImxhYmVsIiksUGUoNywiRGVidWcgTW9kZSIpLG1lKCkoKSgpKCksZ2UoOCwiYSIsMjIpLEl0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5vcGVuUmVxdWVzdHNNb2RhbCgpKX0pLGdlKDksInNwYW4iKSxQZSgxMCwiU0FTIFJlcXVlc3RzIiksbWUoKSgpLGd0KDExLEZCZSw0LDAsIm5nLWNvbnRhaW5lciIsNyksWXQoMTIsImRpdiIsMjMpLGdlKDEzLCJhIiwyNCkoMTQsInNw''@;'; put 'put ''YW4iKSxQZSgxNSwiU3lzdGVtIiksbWUoKSgpLGdlKDE2LCJhIiwyNSksSXQoImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5sb2dvdXQoaCkpfSksZ2UoMTcsInNwYW4iKSxQZSgxOCwiTG9nIE91dCIpLG1lKCksWXQoMTksImNsci1pY29uIiwyNiksbWUoKSxnZSgy''@;'; put 'put ''MCwiZGl2IiwyNykoMjEsInNwYW4iKSxQZSgyMiksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoNSksWXIoIm5nTW9kZWwiLGEuc2FzanNDb25maWcuZGVidWcpLF9lKDYpLFJlKCJuZ0lmIiwhYS5pc0RlcGxveVBhZ2UpLF9lKDExKSxtcigidiIsYS5jb21taXRWZXIsIiIpfX1s''@;'; put 'put ''ZXQgSEJlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy51c2VyU2VydmljZT1hLHRoaXMuc2FzU2VydmljZT1kLHRoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5yb3V0ZXI9Zix0aGlzLnVzZXJOYW1lPSJOb3QgbG9nZ2VkIGluIix0aGlzLnJlcVN1Yj1uZXcgS3QsdGhp''@;'; put 'put ''cy51c2VyU3ViPW5ldyBLdCx0aGlzLmFwcExvZ3M9W10sdGhpcy5kZWJ1Z0xvZ3M9W10sdGhpcy5mYWlsZWRSZXFzPVtdLHRoaXMuc2FzRXJyb3JzPVtdLHRoaXMuaXNWaXlhPSExLHRoaXMuc2FzanNDb25maWc9bmV3IHlkLlNBU2pzQ29uZmlnLHRoaXMucmVxdWVzdHNDb3VudD0wLHRoaXMu''@;'; put 'put ''Y29tbWl0VmVyPSIiLHRoaXMuZGFya01vZGU9dGhpcy5ldmVudFNlcnZpY2UuZGFya01vZGV9bmdPbkluaXQoKXt0aGlzLnVzZXJTdWI9dGhpcy51c2VyU2VydmljZS51c2VyQ2hhbmdlLnN1YnNjcmliZShhPT57dGhpcy51c2VyTmFtZT1hLnVzZXJuYW1lfSksdGhpcy5zYXNqc0NvbmZpZz10''@;'; put 'put ''aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSwiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUmJih0aGlzLmlzVml5YT0hMCksdGhpcy5jb21taXRWZXI9InY2LjEyLjIiLnJlcGxhY2UoInYiLCIiKSsiLmdjZDNiY2MwIn1uZ09uRGVzdHJveSgpe3RoaXMucmVx''@;'; put 'put ''U3ViLnVuc3Vic2NyaWJlKCksdGhpcy51c2VyU3ViLnVuc3Vic2NyaWJlKCl9dG9nZ2xlRGFya01vZGUoYSl7dGhpcy5ldmVudFNlcnZpY2UudG9nZ2xlRGFya01vZGUoYSl9b3BlblJlcXVlc3RzTW9kYWwoKXt0aGlzLmV2ZW50U2VydmljZS5vcGVuUmVxdWVzdHNNb2RhbCgpfW9uRGVidWdN''@;'; put 'put ''b2RlQ2hhbmdlKGEpe3RoaXMuc2FzanNDb25maWcmJnRoaXMuc2FzU2VydmljZS5zZXREZWJ1Z1N0YXRlKHRoaXMuc2FzanNDb25maWcuZGVidWcpfW9uRGVidWdSb3dDbGljayhhLGQpe2Euc3RvcFByb3BhZ2F0aW9uKCksc2V0VGltZW91dCgoKT0+e2QuY2xpY2soKX0sMzAwKX1sb2dvdXQo''@;'; put 'put ''YSl7YS5wcmV2ZW50RGVmYXVsdCgpO3RyeXt0aGlzLnNhc1NlcnZpY2UubG9nb3V0KCl9Y2F0Y2goZCl7Y29uc29sZS5lcnJvcihkKX19Z2V0UGljdHVyZVVybCgpe3JldHVybmAke3RoaXMuc2FzanNDb25maWcuc2VydmVyVXJsfS9pZGVudGl0aWVzL3VzZXJzLyR7dGhpcy51c2VyTmFtZX0v''@;'; put 'put ''YXZhdGFyL2NvbnRlbnRgfWdldCBpc0RlcGxveVBhZ2UoKXtyZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJkZXBsb3kiKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShmVSksSmUodmEpLEplKERsKSxKZShKcykpfX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWhlYWRlci1hY3Rpb25zIl1dLGRlY2xzOjE0LHZhcnM6Nyxjb25zdHM6W1siZHJvcGRvd25JdGVtRGVidWciLCIiXSxbMSwiaGVhZGVyLWFjdGlvbnMiXSxbMSwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRl''@;'; put 'put ''ciJdLFsic2l6ZSIsIm1kIiwiY2xhc3MiLCJ0aGVtZS10b2dnbGUtaWNvbiBjdXJzb3ItcG9pbnRlciIsInNoYXBlIiwibW9vbiIsImludmVyc2UiLCJmYWxzZSIsInNvbGlkIiwiZmFsc2UiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaXplIiwibWQiLCJjbGFzcyIsInRoZW1lLXRvZ2dsZS1p''@;'; put 'put ''Y29uIGN1cnNvci1wb2ludGVyIiwic2hhcGUiLCJzdW4iLCJpbnZlcnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJhcHAtbmF2LWRyb3Bkb3duIl0sWyJjbHJEcm9wZG93blRvZ2dsZSIsIiIsMSwibmF2LXRleHQiLCJjb2xvci13aGl0ZSJdLFs0''@;'; put 'put ''LCJuZ0lmIl0sWyJjbGFzcyIsImJhZGdlIGJhZGdlLWRhbmdlciIsMywiaGlkZGVuIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImJhZGdlIGJhZGdlLWluZm8iLDMsImhpZGRlbiIsNCwibmdJZiJdLFsic2hhcGUiLCJjYXJldCBkb3duIiw0LCJuZ0lmIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1y''@;'; put 'put ''aWdodCIsNCwiY2xySWZPcGVuIl0sWyJzaXplIiwibWQiLCJzaGFwZSIsIm1vb24iLCJpbnZlcnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwxLCJ0aGVtZS10b2dnbGUtaWNvbiIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2l6ZSIsIm1kIiwic2hhcGUiLCJzdW4iLCJpbnZl''@;'; put 'put ''cnNlIiwiZmFsc2UiLCJzb2xpZCIsImZhbHNlIiwxLCJ0aGVtZS10b2dnbGUtaWNvbiIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsiYWx0IiwiIiwxLCJhdmF0YXItaW1nIiwzLCJzcmMiXSxbMSwiYmFkZ2UiLCJiYWRnZS1kYW5nZXIiXSxbMSwiYmFkZ2UiLCJiYWRnZS1pbmZvIl0s''@;'; put 'put ''WyJzaGFwZSIsImNhcmV0IGRvd24iXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0Il0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDEsImRlYnVnLXN3aXRjaC1pdGVtIl0sWzEsInRvZ2dsZS1zd2l0Y2giLDMsImNsaWNrIl0sWyJpZCIsImRlYnVnLXRvZ2dsZTEiLCJ0eXBlIiwiY2hlY2ti''@;'; put 'put ''b3giLCJjbHJUb2dnbGUiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIl0sWzEsInNlcGFyYXRvciJdLFsiaHJlZiIsIi4uLiIsInJvdXRlckxpbmsiLCIvc3lzdGVtIiwiY2xyRHJvcGRvd25JdGVtIiwiIl0sWyJocmVmIiwi''@;'; put 'put ''Li4uIiwiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJjbGljayJdLFsic2hhcGUiLCJsb2dvdXQiLDEsImNsci1sb2dvdXQiXSxbMSwiY29weVJpZ2h0Il0sWyJ0YXJnZXQiLCJfYmxhbmsiLCJocmVmIiwiaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvIiwiY2xyRHJvcGRvd25JdGVtIiwi''@;'; put 'put ''Il0sWzEsImRyb3Bkb3duLXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJkaXYiLDEpKDEsImRpdiIsMiksZ3QoMixEQmUsMSwwLCJjZHMtaWNvbiIsMykoMyxJQmUsMSwwLCJjZHMtaWNvbiIsNCksbWUoKSxZdCg0LCJhcHAtbG9hZGluZy1pbmRpY2F0b3IiKSxn''@;'; put 'put ''ZSg1LCJjbHItZHJvcGRvd24iLDUpKDYsImJ1dHRvbiIsNikoNywic3BhbiIpLFBlKDgpLG1lKCksZ3QoOSxSQmUsMiwxLCJzcGFuIiw3KSgxMCxMQmUsMiwzLCJzcGFuIiw4KSgxMSxPQmUsMiwzLCJzcGFuIiw5KSgxMixQQmUsMSwwLCJjbHItaWNvbiIsMTApLG1lKCksZ3QoMTMsTkJlLDIz''@;'; put 'put ''LDMsImNsci1kcm9wZG93bi1tZW51IiwxMSksbWUoKSgpKSwyJmQmJihfZSgyKSxSZSgibmdJZiIsIWguZGFya01vZGUudmFsdWUpLF9lKCksUmUoIm5nSWYiLCEhaC5kYXJrTW9kZS52YWx1ZSksX2UoNSksbHIoaC51c2VyTmFtZSksX2UoKSxSZSgibmdJZiIsIk5vdCBsb2dnZWQgaW4iIT09''@;'; put 'put ''aC51c2VyTmFtZSYmaC5pc1ZpeWEpLF9lKCksUmUoIm5nSWYiLCFoLnNhc2pzQ29uZmlnLmRlYnVnKSxfZSgpLFJlKCJuZ0lmIixoLnNhc2pzQ29uZmlnLmRlYnVnKSxfZSgpLFJlKCJuZ0lmIiwhaC5pc1ZpeWEpKX0sZGVwZW5kZW5jaWVzOlskaSxRMCxfYSx1YSxrMCxZYSxHcyxraCwkcyxh''@;'; put 'put ''MSxQXyxzMSx3NCxJOCxSOCxKXyxBQmVdLHN0eWxlczpbJ1tfbmdob3N0LSVDT01QJV17ZGlzcGxheTpjb250ZW50c30uY29weVJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjEwcHh9LmNvcHlSaWdodFtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXt3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxLjV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctcmlnaHQ6MTVweDtsaW5lLWhlaWdodDozcmVt''@;'; put 'put ''O2hlaWdodDozcmVtfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGJ1dHRvbi5kcm9wZG93bi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmYWZhZmE7cG9zaXRpb246cmVsYXRpdmV9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdID4g''@;'; put 'put ''YnV0dG9uLmRyb3Bkb3duLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7Y29udGVudDoiIjtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7b3BhY2l0eTouMTU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6NDBweDt0b3A6MTBweH0uYXBwLW5hdi1kcm9w''@;'; put 'put ''ZG93bltfbmdjb250ZW50LSVDT01QJV0gPiBidXR0b24uZHJvcGRvd24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYWRnZS5oaWRkZW5bX25nY29udGVudC0lQ09NUCVde3Zpc2liaWxpdHk6aGlkZGVufS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1k''@;'; put 'put ''cm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNTY1NjU2O3BhZGRpbmctYm90dG9tOjB9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLnNlcGFyYXRvcltfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17bWFyZ2luOjEwcHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNw''@;'; put 'put ''bGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDVweDtsaW5lLWhlaWdodDo0MHB4fS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjE1cHg7cmlnaHQ6MjZweDttYXJnaW4tcmlnaHQ6MH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHIt''@;'; put 'put ''ZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbS5kZWJ1Zy1zd2l0Y2gtaXRlbVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowfS5hcHAtbmF2LWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1kcm9wZG93bi1tZW51W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC5kcm9wZG93bi1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmFwcC1uYXYtZHJvcGRvd25bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLmNsci1sb2dvdXRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjIwcHg7dG9wOjE1cHh9LmFwcC1uYXYtZHJv''@;'; put 'put ''cGRvd25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LmFwcC1uYXYtZHJvcGRv''@;'; put 'put ''d25bX25nY29udGVudC0lQ09NUCVdICAgY2xyLWRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVdICAgLmRyb3Bkb3duLWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgICBjbHItdG9nZ2xlLXdyYXBwZXJ7d2lkdGg6MTAwJTttYXJnaW46MDtoZWlnaHQ6MTAwJTtwYWRkaW5nOjEwcHgg''@;'; put 'put ''MjBweH0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAgIGlucHV0e2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtjdXJzb3I6''@;'; put 'put ''cG9pbnRlcn0uYXBwLW5hdi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICBjbHItZHJvcGRvd24tbWVudVtfbmdjb250ZW50LSVDT01QJV0gICAuZHJvcGRvd24taXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0r''@;'; put 'put ''bGFiZWw6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0uZGVidWctdG9nZ2xlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWxlZnQ6NDJweH1AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpey5zaWRlbmF2LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgYS5uYXYt''@;'; put 'put ''bGluay5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7cGFkZGluZzoxNXB4O2JhY2tncm91bmQ6IzU2NTY1Nn19Lm5hdi1saW5rLmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbi5iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGV9''@;'; put 'put ''LmF2YXRhci1pbWdbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLWxlZnQ6MTBweDtib3JkZXItcmFkaXVzOjUwcHh9J119KX19cmV0dXJuIGx9KSgpLGgwZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5hbGVydHM9bmV3IHRufXN0YXRp''@;'; put 'put ''Y3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwcm92PWlyKHt0b2tlbjpsLGZhY3Rvcnk6bC5cdTAyNzVmYWN9KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIFZCZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNs''@;'; put 'put ''ci1hbGVydCIsMiksV3IoImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5jbG9zZWQsaCl8fChmLmNsb3NlZD1oKSxidChoKX0pLEl0KCJjbHJBbGVydENsb3NlZENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3Qo''@;'; put 'put ''YSksYnQoTmUoMikub25BbGVydENsb3NlKCkpfSksZ2UoMSwiZGl2IiwzKSgyLCJzcGFuIiw0KSxQZSgzKSxtZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoImNsckFsZXJ0VHlwZSIsYS50eXBlKSgiY2xyQWxlcnRBcHBMZXZlbCIsITApLFlyKCJjbHJBbGVydENsb3Nl''@;'; put 'put ''ZCIsYS5jbG9zZWQpLF9lKDMpLG1yKCIgIixhLm1lc3NhZ2UsIiAiKX19ZnVuY3Rpb24gQkJlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWFsZXJ0cyIpLGd0KDEsVkJlLDQsNCwiY2xyLWFsZXJ0IiwxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0Zvck9mIixhLmFsZXJ0''@;'; put 'put ''cyl9fWxldCBqQmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLl9hbGVydHNTZXJ2aWNlPWEsdGhpcy5hbGVydHM9W10sdGhpcy5oYXNPcGVuQWxlcnQ9ITEsdGhpcy5hbGVydHNTdWI9bmV3IEt0fW5nT25Jbml0KCl7dGhpcy5hbGVydHNTdWI9dGhpcy5fYWxlcnRzU2Vydmlj''@;'; put 'put ''ZS5hbGVydHMuc3Vic2NyaWJlKGE9Pnt0aGlzLmFsZXJ0cy5wdXNoKGEpLHRoaXMuaGFzT3BlbkFsZXJ0PSEwLGEuZXJyJiZjb25zb2xlLmVycm9yKGEuZXJyKX0pfW9uQWxlcnRDbG9zZSgpe3RoaXMuaGFzT3BlbkFsZXJ0PXRoaXMuYWxlcnRzLnNvbWUoYT0+IWEuY2xvc2VkKX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShoMGUpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1hbGVydHMiXV0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdLFszLCJjbHJBbGVydFR5cGUi''@;'; put 'put ''LCJjbHJBbGVydEFwcExldmVsIiwiY2xyQWxlcnRDbG9zZWQiLCJjbHJBbGVydENsb3NlZENoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNsckFsZXJ0Q2xvc2VkQ2hhbmdlIiwiY2xyQWxlcnRUeXBlIiwiY2xyQWxlcnRBcHBMZXZlbCIsImNsckFsZXJ0Q2xvc2VkIl0sWzEsImFs''@;'; put 'put ''ZXJ0LWl0ZW0iXSxbMSwiYWxlcnQtdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmZ3QoMCxCQmUsMiwxLCJjbHItYWxlcnRzIiwwKSwyJmQmJlJlKCJuZ0lmIixoLmhhc09wZW5BbGVydCl9LGRlcGVuZGVuY2llczpbVnMsJGksRk0senVlLE5NXSxzdHlsZXM6WyJjbHItYWxl''@;'; put 'put ''cnRzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSJdfSl9fXJldHVybiBsfSkoKSxIUj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5jbGFzc2VzPSIifW5nT25Jbml0KCl7fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwp''@;'; put 'put ''fX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siY29udGFjdC1saW5rIl1dLGlucHV0czp7Y2xhc3NlczoiY2xhc3NlcyJ9LGRlY2xzOjIsdmFyczozLGNvbnN0czpbWyJocmVmIiwibWFpbHRvOnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8/c3ViamVjdD1M''@;'; put 'put ''aWNlbmNlIiwzLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiYSIsMCksUGUoMSwic3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLG1lKCkpLDImZCYmKHByKCJ1bnNldCIsIiIhPT1oLmNsYXNzZXMpLFJlKCJuZ0NsYXNzIixoLmNsYXNzZXMpKX0sZGVw''@;'; put 'put ''ZW5kZW5jaWVzOltKY10sc3R5bGVzOlsiLnVuc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp1bnNldH0iXX0pfX1yZXR1cm4gbH0pKCksZjBlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLm9wdGlvbnNTdWJqZWN0JD1uZXcgdG4sdGhpcy5yZXN1bHRDaGFuZ2UkPW5ldyB0''@;'; put 'put ''bn1vcGVuKGEpe3JldHVybiB0aGlzLm9wdGlvbnNTdWJqZWN0JC5uZXh0KHtvcGVuOiEwLC4uLmF9KSx0aGlzLnJlc3VsdENoYW5nZSQ9bmV3IHRuLHRoaXMucmVzdWx0Q2hhbmdlJC5hc09ic2VydmFibGUoKX1jbG9zZShhKXt0aGlzLm9wdGlvbnNTdWJqZWN0JC5uZXh0KHtvcGVuOiExfSks''@;'; put 'put ''dGhpcy5yZXN1bHRDaGFuZ2UkLm5leHQoe3Bhc3N3b3JkOmF9KSx0aGlzLnJlc3VsdENoYW5nZSQuY29tcGxldGUoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5Omwu''@;'; put 'put ''XHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiB6QmUobCxjKXsxJmwmJihnZSgwLCJwIiwxMyksUGUoMSwiIFNvcnJ5IHRoYXQgZGlkbid0IHdvcmssIHRyeSBhZ2Fpbi4gIiksbWUoKSl9ZnVuY3Rpb24gVUJlKGwsYyl7aWYoMSZsKXtjb25zdCBh''@;'; put 'put ''PVNuKCk7Z2UoMCwiZGl2IiwyKSgxLCJjbHItbW9kYWwiLDMpKDIsImgzIiw0KSxQZSgzLCIgUGFzc3dvcmQgUHJvdGVjdGVkIEZpbGUgIiksbWUoKSxnZSg0LCJkaXYiLDUpKDUsInAiLDYpLFBlKDYsIlBsZWFzZSBlbnRlciBwYXNzd29yZDoiKSxtZSgpLGdlKDcsImlucHV0Iiw3LDApLFdy''@;'; put 'put ''KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYucGFzc3dvcmRJbnB1dCxoKXx8KGYucGFzc3dvcmRJbnB1dD1oKSxidChoKX0pLG1lKCkoKSxnZSg5LCJkaXYiLDgpKDEwLCJkaXYiKSxndCgxMSx6QmUsMiwwLCJwIiw5KSxtZSgpLGdl''@;'; put 'put ''KDEyLCJkaXYiLDEwKSgxMywiYnV0dG9uIiwxMSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmNsb3NlKCkpfSksUGUoMTQsIiBDYW5jZWwgIiksbWUoKSxnZSgxNSwiYnV0dG9uIiwxMiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9R2ko''@;'; put 'put ''OCk7cmV0dXJuIGJ0KE5lKCkuY2xvc2UoaC52YWx1ZSkpfSksUGUoMTYsIiBVbmxvY2sgIiksbWUoKSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1jLm5nSWYsZD1HaSg4KSxoPU5lKCk7X2UoKSxSZSgiY2xyTW9kYWxPcGVuIixhLm9wZW4pKCJjbHJNb2RhbFNpemUiLCJtZCIpKCJjbHJNb2Rh''@;'; put 'put ''bENsb3NhYmxlIiwhMSksX2UoNiksWXIoIm5nTW9kZWwiLGgucGFzc3dvcmRJbnB1dCksX2UoNCksUmUoIm5nSWYiLGEuZXJyb3IpLF9lKDQpLFJlKCJkaXNhYmxlZCIsZC52YWx1ZS5sZW5ndGg8MSl9fWxldCBaQmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmV4Y2VsUGFz''@;'; put 'put ''c3dvcmRNb2RhbFNlcnZpY2U9YSx0aGlzLm9wdGlvbnMkPXRoaXMuZXhjZWxQYXNzd29yZE1vZGFsU2VydmljZS5vcHRpb25zU3ViamVjdCQsdGhpcy5maWxlVW5sb2NrRXJyb3I9ITEsdGhpcy5wYXNzd29yZElucHV0PSIifWNsb3NlKGEpe3RoaXMucGFzc3dvcmRJbnB1dD0iIix0aGlzLmV4''@;'; put 'put ''Y2VsUGFzc3dvcmRNb2RhbFNlcnZpY2UuY2xvc2UoYSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoZjBlKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtZXhjZWwtcGFzc3dvcmQtbW9kYWwi''@;'; put 'put ''XV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbImZpbGVQYXNzd29yZElucHV0IiwiIl0sWyJjbGFzcyIsImV4Y2VsLXBhc3N3b3JkLXJvb3QiLDQsIm5nSWYiXSxbMSwiZXhjZWwtcGFzc3dvcmQtcm9vdCJdLFszLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3Nh''@;'; put 'put ''YmxlIl0sWzEsIm1vZGFsLXRpdGxlIiwiY2VudGVyIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtb2RhbC1ib2R5IiwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwibS0wIl0sWyJkYXRhLWxwaWdub3JlIiwidHJ1ZSIsImF1dG9jb21w''@;'; put 'put ''bGV0ZSIsIm9mZiIsImlkIiwiZmlsZVBhc3N3b3JkSW5wdXQiLCJ0eXBlIiwidGV4dCIsMSwiY2xyLWlucHV0IiwiZGlzYWJsZS1wYXNzd29yZC1tYW5hZ2VyIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsxLCJtb2RhbC1mb290ZXIiXSxbImNsYXNzIiwibS0wIGNvbG9yLXJlZCIs''@;'; put 'put ''NCwibmdJZiJdLFsxLCJidXR0b25zIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbMSwi''@;'; put 'put ''bS0wIiwiY29sb3ItcmVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ3QoMCxVQmUsMTcsNiwiZGl2IiwxKSxnYSgxLCJhc3luYyIpKSwyJmQmJlJlKCJuZ0lmIixVbCgxLDEsaC5vcHRpb25zJCkpfSxkZXBlbmRlbmNpZXM6WyRpLHVsLF9hLHVhLFBjLGl1LHBTXSxzdHlsZXM6''@;'; put 'put ''WyIuZXhjZWwtcGFzc3dvcmQtcm9vdFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbHt6LWluZGV4OjEwNjB9Lm1vZGFsLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ubW9k''@;'; put 'put ''YWwtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7Z2FwOjVweH0iXX0pfX1yZXR1cm4gbH0pKCksak09KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZmlsZU92ZXI9ITEsdGhpcy5maWxlRHJvcHBlZD1u''@;'; put 'put ''ZXcgRHIsdGhpcy5maWxlRHJhZ2dlZE92ZXI9bmV3IERyfW9uRHJhZ092ZXIoYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jb250YWluc0ZpbGVzKGEpJiYhdGhpcy5maWxlT3ZlciYmKHRoaXMuZmlsZU92ZXI9ITAsdGhpcy5maWxlRHJhZ2dlZE92ZXIu''@;'; put 'put ''ZW1pdCgpKX1vbkRyYWdMZWF2ZShhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExfW9uZHJvcChhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVPdmVyPSExO2NvbnN0IGQ9YS5kYXRhVHJhbnNm''@;'; put 'put ''ZXIuZmlsZXM7ZC5sZW5ndGg+MCYmdGhpcy5maWxlRHJvcHBlZC5lbWl0KGQpfWNvbnRhaW5zRmlsZXMoYSl7aWYoYSYmYS5kYXRhVHJhbnNmZXImJmEuZGF0YVRyYW5zZmVyLnR5cGVzKWZvcihsZXQgZD0wO2Q8YS5kYXRhVHJhbnNmZXIudHlwZXMubGVuZ3RoO2QrKylpZigiRmlsZXMiPT1h''@;'; put 'put ''LmRhdGFUcmFuc2Zlci50eXBlc1tkXSlyZXR1cm4hMH1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImFwcERyYWdOZHJvcCIsIiJdXSxob3N0VmFyczoyLGhv''@;'; put 'put ''c3RCaW5kaW5nczpmdW5jdGlvbihkLGgpezEmZCYmSXQoImRyYWdvdmVyIixmdW5jdGlvbih2KXtyZXR1cm4gaC5vbkRyYWdPdmVyKHYpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24odil7cmV0dXJuIGgub25EcmFnTGVhdmUodil9KSgiZHJvcCIsZnVuY3Rpb24odil7cmV0dXJuIGgub25kcm9w''@;'; put 'put ''KHYpfSksMiZkJiZwcigiZmlsZW92ZXIiLGguZmlsZU92ZXIpfSxvdXRwdXRzOntmaWxlRHJvcHBlZDoiZmlsZURyb3BwZWQiLGZpbGVEcmFnZ2VkT3ZlcjoiZmlsZURyYWdnZWRPdmVyIn19KX19cmV0dXJuIGx9KSgpO2NvbnN0IHAwZT0oKT0+W107ZnVuY3Rpb24gWUJlKGwsYyl7MSZsJiYo''@;'; put 'put ''Z2UoMCwicCIsNiksUGUoMSwiTm8gcmVxdWVzdHMgbWFkZSIpLG1lKCkpfWZ1bmN0aW9uIFdCZShsLGMpezEmbCYmKGdlKDAsInNwYW4iKSxZdCgxLCJjbHItaWNvbiIsMTMpLG1lKCkpfWZ1bmN0aW9uIEdCZShsLGMpezEmbCYmKGdlKDAsInNwYW4iKSxZdCgxLCJjbHItaWNvbiIsMTQpLG1l''@;'; put 'put ''KCkpfWZ1bmN0aW9uICRCZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDIxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQsZj1OZSgzKS5pbmRleDtyZXR1cm4gYnQoTmUoMikuZ29Ub0xvZ0xpbmUoaCwicmVxdWVz''@;'; put 'put ''dF8iK2YsImVycm9yIikpfSksZ2UoMSwiYnV0dG9uIiwyMiksUGUoMiksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgyKSxtcigiICIsYSwiICIpfX1mdW5jdGlvbiBxQmUobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdHJlZS1ub2RlIiwxOCksWXQoMSwiY2xyLWljb24i''@;'; put 'put ''LDE5KSxQZSgyKSxndCgzLCRCZSwzLDEsImNsci10cmVlLW5vZGUiLDIwKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMikuJGltcGxpY2l0O19lKDIpLG1yKCIgRXJyb3JzICgiLGEubG9nRXJyb3JzLmxlbmd0aCwiKSAiKSxfZSgpLFJlKCJuZ0Zvck9mIixhLmxvZ0Vycm9yc3x8bGEoMixwMGUp''@;'; put 'put ''KX19ZnVuY3Rpb24gS0JlKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMjEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdCxmPU5lKDMpLmluZGV4O3JldHVybiBidChOZSgyKS5nb1RvTG9nTGluZShoLCJyZXF1ZXN0''@;'; put 'put ''XyIrZiwid2FybmluZyIpKX0pLGdlKDEsImJ1dHRvbiIsMjIpLFBlKDIpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoMiksbXIoIiAiLGEsIiAiKX19ZnVuY3Rpb24gWEJlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRyZWUtbm9kZSIsMTgpLFl0KDEsImNsci1pY29u''@;'; put 'put ''IiwyMyksUGUoMiksZ3QoMyxLQmUsMywxLCJjbHItdHJlZS1ub2RlIiwyMCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpLiRpbXBsaWNpdDtfZSgyKSxtcigiIFdhcm5pbmdzICgiLGEubG9nV2FybmluZ3MubGVuZ3RoLCIpICIpLF9lKCksUmUoIm5nRm9yT2YiLGEubG9nV2FybmluZ3N8fGxh''@;'; put 'put ''KDIscDBlKSl9fWZ1bmN0aW9uIEpCZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMjQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoMikuZG93bmxvYWRMb2coaC5sb2dGaWxlKSl9KSxQZSgx''@;'; put 'put ''LCIgRG93bmxvYWQgIiksbWUoKX19ZnVuY3Rpb24gUUJlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiY2xyLXRyZWUiKSxndCgyLHFCZSw0LDMsImNsci10cmVlLW5vZGUiLDE1KSgzLFhCZSw0LDMsImNsci10cmVlLW5vZGUiLDE1KSxtZSgpLFl0KDQsImRpdiIs''@;'; put 'put ''MTYpLGd0KDUsSkJlLDIsMCwiYnV0dG9uIiwxNyksbWUoKSksMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O19lKDIpLFJlKCJuZ0lmIixhLmxvZ0Vycm9ycyksX2UoKSxSZSgibmdJZiIsYS5sb2dXYXJuaW5ncyksX2UoKSxSZSgiaW5uZXJIVE1MIixhLmxvZ0ZpbGUsWnApLF9lKCksUmUo''@;'; put 'put ''Im5nSWYiLChudWxsPT1hLmxvZ0ZpbGU/bnVsbDphLmxvZ0ZpbGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24gZWplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiwyNCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMikuJGltcGxpY2l0O3JldHVy''@;'; put 'put ''biBidChOZSgyKS5kb3dubG9hZFNvdXJjZUNvZGUoaC5zb3VyY2VDb2RlKSl9KSxQZSgxLCIgRG93bmxvYWQgIiksbWUoKX19ZnVuY3Rpb24gdGplKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyNSksUGUoMiksbWUoKSxndCgzLGVqZSwyLDAsImJ1dHRv''@;'; put 'put ''biIsMTcpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgyKSxscihhLnNvdXJjZUNvZGUpLF9lKCksUmUoIm5nSWYiLChudWxsPT1hLnNvdXJjZUNvZGU/bnVsbDphLnNvdXJjZUNvZGUubGVuZ3RoKT4wKX19ZnVuY3Rpb24gbmplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNu''@;'; put 'put ''KCk7Z2UoMCwiYnV0dG9uIiwyNCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChOZSgyKS5kb3dubG9hZEdlbmVyYXRlZENvZGUoaC5nZW5lcmF0ZWRDb2RlKSl9KSxQZSgxLCIgRG93bmxvYWQgIiksbWUoKX19ZnVuY3Rpb24g''@;'; put 'put ''cmplKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyNSksUGUoMiksbWUoKSxndCgzLG5qZSwyLDAsImJ1dHRvbiIsMTcpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgyKSxtcigiICIsYS5nZW5lcmF0ZWRDb2RlLCIgIiksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsKG51bGw9PWEuZ2VuZXJhdGVkQ29kZT9udWxsOmEuZ2VuZXJhdGVkQ29kZS5sZW5ndGgpPjApfX1mdW5jdGlvbiBpamUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDMxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQ7''@;'; put 'put ''cmV0dXJuIGJ0KE5lKDMpLiRpbXBsaWNpdC5zZWxlY3RlZFRhYmxlPWgua2V5KX0pLFBlKDEpLG1lKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O3ByKCJzZWxlY3RlZCIsTmUoMykuJGltcGxpY2l0LnNlbGVjdGVkVGFibGU9PT1hLmtleSksX2UoKSxtcigiICIsYS5rZXksIiAiKX19''@;'; put 'put ''ZnVuY3Rpb24gb2plKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWRyb3Bkb3duLW1lbnUiKSxndCgxLGlqZSwyLDMsImRpdiIsMzApLGdhKDIsImtleXZhbHVlIiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0Zvck9mIixVbCgyLDEsYS5TQVNXT1JLKSl9''@;'; put 'put ''fWZ1bmN0aW9uIHNqZShsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDM1KSgxLCJzdHJvbmciKSxQZSgyKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgzKS4kaW1wbGljaXQ7X2UoMiksbXIoIiIsYS5zZWxlY3RlZFRhYmxlLCIgKGZpcnN0IDEwIHJvd3MpICIpfX1mdW5jdGlvbiBhamUobCxjKXtp''@;'; put 'put ''ZigxJmwmJihnZSgwLCJ0aCIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLG1yKCIgIixhLmtleSwiICIpfX1mdW5jdGlvbiBsamUobCxjKXtpZigxJmwmJihnZSgwLCJ0ZCIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPU5lKCkuJGlt''@;'; put 'put ''cGxpY2l0O19lKCksbXIoIiAiLGRbYS5rZXldLCIgIil9fWZ1bmN0aW9uIGNqZShsLGMpe2lmKDEmbCYmKGdlKDAsInRyIiksZ3QoMSxsamUsMiwxLCJ0ZCIsMzcpLGdhKDIsImtleXZhbHVlIiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDQpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0Zvck9mIixV''@;'; put 'put ''bCgyLDEsYS5TQVNXT1JLW2Euc2VsZWN0ZWRUYWJsZV0uZmlyc3QxMHJvd3NbMF0pKX19ZnVuY3Rpb24gdWplKGwsYyl7aWYoMSZsJiYoZ2UoMCwidGFibGUiLDM2KSgxLCJ0aGVhZCIpKDIsInRyIiksZ3QoMyxhamUsMiwxLCJ0aCIsMzcpLGdhKDQsImtleXZhbHVlIiksbWUoKSgpLGdlKDUs''@;'; put 'put ''InRib2R5IiksZ3QoNixjamUsMywzLCJ0ciIsMzcpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDMpLiRpbXBsaWNpdDtfZSgzKSxSZSgibmdGb3JPZiIsVWwoNCwyLGEuU0FTV09SS1thLnNlbGVjdGVkVGFibGVdLmZpcnN0MTByb3dzWzBdKSksX2UoMyksUmUoIm5nRm9yT2YiLGEuU0FTV09S''@;'; put 'put ''S1thLnNlbGVjdGVkVGFibGVdLmZpcnN0MTByb3dzKX19ZnVuY3Rpb24gZGplKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRhYi1jb250ZW50IiksZ3QoMSxzamUsMywxLCJwIiwzMiksZ2UoMiwiZGl2IiwzMyksZ3QoMyx1amUsNyw0LCJ0YWJsZSIsMzQpLG1lKCkoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKDIpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIixhLnNlbGVjdGVkVGFibGUpLF9lKDIpLFJlKCJuZ0lmIixhLnNlbGVjdGVkVGFibGUpfX1mdW5jdGlvbiBoamUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdGFiIikoMSwiY2xyLWRyb3Bkb3duIiwyNikoMiwiYnV0''@;'; put 'put ''dG9uIiwyNyksUGUoMywiIFNBUyBXb3JrIFRhYmxlcyAiKSxZdCg0LCJjbHItaWNvbiIsMjgpLG1lKCksZ3QoNSxvamUsMywzLCJjbHItZHJvcGRvd24tbWVudSIsMjkpLG1lKCksZ3QoNixkamUsNCwyLCJuZy10ZW1wbGF0ZSIsMTIpLFdyKCJjbHJJZkFjdGl2ZUNoYW5nZSIsZnVuY3Rpb24o''@;'; put 'put ''aCl7X3QoYSk7Y29uc3QgZj1OZSgzKTtyZXR1cm4gR3IoZi50YWJsZXNBY3RpdmUsaCl8fChmLnRhYmxlc0FjdGl2ZT1oKSxidChoKX0pLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiwhMCksX2UoNSksWXIoImNscklmQWN0aXZl''@;'; put 'put ''IixhLnRhYmxlc0FjdGl2ZSl9fWZ1bmN0aW9uIGZqZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1zdGFjay1ibG9jayIsOCkoMSwiY2xyLXN0YWNrLWxhYmVsIiksUGUoMiksZ2UoMywic3BhbiIsOSksZ3QoNCxXQmUsMiwwLCJzcGFuIiw1KSg1LEdCZSwyLDAsInNwYW4i''@;'; put 'put ''LDUpLG1lKCkoKSxnZSg2LCJjbHItc3RhY2stY29udGVudCIpLFBlKDcpLG1lKCksZ2UoOCwiY2xyLXN0YWNrLWJsb2NrIiwxMCkoOSwiY2xyLXN0YWNrLWNvbnRlbnQiKSgxMCwiY2xyLXRhYnMiKSgxMSwiY2xyLXRhYiIpKDEyLCJidXR0b24iLDExKSxQZSgxMywiU0FTIExvZyIpLG1lKCks''@;'; put 'put ''Z3QoMTQsUUJlLDYsNCwibmctdGVtcGxhdGUiLDEyKSxXcigiY2xySWZBY3RpdmVDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMik7cmV0dXJuIEdyKGYuc2FzTG9nQWN0aXZlLGgpfHwoZi5zYXNMb2dBY3RpdmU9aCksYnQoaCl9KSxtZSgpLGdlKDE1LCJjbHItdGFiIiko''@;'; put 'put ''MTYsImJ1dHRvbiIsMTEpLFBlKDE3LCJTQVMgU291cmNlIENvZGUiKSxtZSgpLGd0KDE4LHRqZSw0LDIsIm5nLXRlbXBsYXRlIiwxMiksV3IoImNscklmQWN0aXZlQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpO3JldHVybiBHcihmLnNhc1NvdXJjZUNvZGVBY3RpdmUs''@;'; put 'put ''aCl8fChmLnNhc1NvdXJjZUNvZGVBY3RpdmU9aCksYnQoaCl9KSxtZSgpLGdlKDE5LCJjbHItdGFiIikoMjAsImJ1dHRvbiIsMTEpLFBlKDIxLCJTQVMgR2VuZXJhdGVkIENvZGUiKSxtZSgpLGd0KDIyLHJqZSw0LDIsIm5nLXRlbXBsYXRlIiwxMiksV3IoImNscklmQWN0aXZlQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpO3JldHVybiBHcihmLnNhc0dlbmVyYXRlZENvZGVBY3RpdmUsaCl8fChmLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9aCksYnQoaCl9KSxtZSgpLGd0KDIzLGhqZSw3LDIsImNsci10YWIiLDUpLG1lKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBh''@;'; put 'put ''PWMuJGltcGxpY2l0LGQ9Yy5pbmRleCxoPU5lKDIpO1JlKCJpZCIsInJlcXVlc3RfIitkKSgiY2xyU3RhY2tWaWV3TGV2ZWwiLDEpLF9lKDIpLG1yKCIgIixhLnNlcnZpY2VMaW5rLCIgIiksX2UoMiksUmUoIm5nSWYiLChudWxsPT1hLmxvZ1dhcm5pbmdzP251bGw6YS5sb2dXYXJuaW5ncy5s''@;'; put 'put ''ZW5ndGgpPjApLF9lKCksUmUoIm5nSWYiLChudWxsPT1hLmxvZ0Vycm9ycz9udWxsOmEubG9nRXJyb3JzLmxlbmd0aCk+MCksX2UoMiksbHIoYS5wYXJzZWRUaW1lc3RhbXApLF9lKDcpLFlyKCJjbHJJZkFjdGl2ZSIsaC5zYXNMb2dBY3RpdmUpLF9lKDQpLFlyKCJjbHJJZkFjdGl2ZSIsaC5z''@;'; put 'put ''YXNTb3VyY2VDb2RlQWN0aXZlKSxfZSg0KSxZcigiY2xySWZBY3RpdmUiLGguc2FzR2VuZXJhdGVkQ29kZUFjdGl2ZSksX2UoKSxSZSgibmdJZiIsYS5TQVNXT1JLKX19ZnVuY3Rpb24gcGplKGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXN0YWNrLXZpZXciKSxndCgxLGZqZSwyNCwxMCwiY2xy''@;'; put 'put ''LXN0YWNrLWJsb2NrIiw3KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0Zvck9mIixhLnNhc2pzUmVxdWVzdHMpfX1sZXQgZ2plPSgoKT0+e2NsYXNzIGx7Z2V0IG9wZW5lZCgpe3JldHVybiB0aGlzLl9vcGVuZWR9c2V0IG9wZW5lZChhKXt0aGlzLl9vcGVuZWQ9YSxhJiZ0''@;'; put 'put ''aGlzLm1vZGFsT3BlbmVkKCksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLnNhc2pzUmVxdWVzdHMpfWNvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmxvZ2dlclNlcnZpY2U9ZCx0aGlzLmhlbHBlclNlcnZpY2U9aCx0aGlzLl9vcGVuZWQ9ITEsdGhpcy5vcGVu''@;'; put 'put ''ZWRDaGFuZ2U9bmV3IERyLHRoaXMuc2FzTG9nQWN0aXZlPSEwLHRoaXMuc2FzU291cmNlQ29kZUFjdGl2ZT0hMSx0aGlzLnNhc0dlbmVyYXRlZENvZGVBY3RpdmU9ITEsdGhpcy50YWJsZXNBY3RpdmU9ITEsdGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWco''@;'; put 'put ''KSx0aGlzLnNhc2pzUmVxdWVzdHM9W119bmdPbkluaXQoKXt9cGFyc2VMb2dUaW1lc3RhbXAoYSl7cmV0dXJuYCR7dGhpcy5mb3JtYXRUaW1lc3RhbXAoYSl9ICR7dGhpcy50aW1lc3RhbXBGcm9tTm93KGEpfWB9Y3V0QXBwTG9jKGEpe3JldHVybiBhLnJlcGxhY2UodGhpcy5zYXNqc0NvbmZp''@;'; put 'put ''Zy5hcHBMb2MrIi8iLCIiKX1mb3JtYXRUaW1lc3RhbXAoYSl7cmV0dXJuIGFzKGEpLmZvcm1hdCgpP2FzKGEpLmZvcm1hdCgiZGRkZCwgTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGEiKTphfXRpbWVzdGFtcEZyb21Ob3coYSl7cmV0dXJuIGFzKGEpLmZvcm1hdCgpP2AgKCR7YXMoYSkuZnJvbU5v''@;'; put 'put ''dygpfSlgOiIifW1vZGFsT3BlbkNoYW5nZShhKXt0aGlzLm9wZW5lZD1hLHRoaXMub3BlbmVkQ2hhbmdlLmVtaXQodGhpcy5vcGVuZWQpfW1vZGFsT3BlbmVkKCl7dGhpcy5zYXNqc1JlcXVlc3RzPXRoaXMuc2FzU2VydmljZS5nZXRTYXNSZXF1ZXN0cygpO2ZvcihsZXQgYSBvZiB0aGlzLnNh''@;'; put 'put ''c2pzUmVxdWVzdHMpdGhpcy5wYXJzZUVycm9yc0FuZFdhcm5pbmdzKGEpLGEuc2VydmljZUxpbms9dGhpcy5jdXRBcHBMb2MoYS5zZXJ2aWNlTGluayksYS5wYXJzZWRUaW1lc3RhbXA9dGhpcy5wYXJzZUxvZ1RpbWVzdGFtcChhLnRpbWVzdGFtcCl9Z29Ub0xvZ0xpbmUoYSxkLGgpe2xldCBm''@;'; put 'put ''PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke2R9IC5sb2ctd3JhcHBlci5zYXNsb2cgZm9udGApLHY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZH0gLmxvZy13cmFwcGVyLnNhc2xvZ2ApO2ZvcihsZXQgUyBvZiBmKVMudGV4dENvbnRlbnQuaW5jbHVkZXMoYSkmJih2LnNjcm9s''@;'; put 'put ''bFRvcD1TLm9mZnNldFRvcC12Lm9mZnNldFRvcCxTLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIzYxYTIyMDJiIixzZXRUaW1lb3V0KCgpPT57Uy5zdHlsZT0iIn0sM2UzKSl9cGFyc2VFcnJvcnNBbmRXYXJuaW5ncyhhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2lmKCFhfHwh''@;'; put 'put ''YS5sb2dGaWxlfHwic3RyaW5nIiE9dHlwZW9mIGEubG9nRmlsZXx8dm9pZCAwIT09YS5sb2dFcnJvcnN8fHZvaWQgMCE9PWEubG9nV2FybmluZ3MpcmV0dXJuO2xldCBoPVtdLGY9W10sdj1hLmxvZ0ZpbGUuc3BsaXQoIlxuIik7Zm9yKGxldCBTPTA7Uzx2Lmxlbmd0aDtTKyspe2lmKC88Lio+''@;'; put 'put ''RVJST1IvZ20udGVzdCh2W1NdKSl7bGV0IFY9dltTXS5zdWJzdHJpbmcodltTXS5pbmRleE9mKCJFIiksdltTXS5sZW5ndGgtMSk7aC5wdXNoKFYpfWVsc2UvXkVSUk9SL2dtLnRlc3QodltTXSkmJihoLnB1c2godltTXSksdltTXT0iPGZvbnQ+Iit2W1NdKyI8L2ZvbnQ+Iik7aWYoLzwuKj5X''@;'; put 'put ''QVJOSU5HL2dtLnRlc3QodltTXSkpe2xldCBWPXZbU10uc3Vic3RyaW5nKHZbU10uaW5kZXhPZigiVyIpLHZbU10ubGVuZ3RoLTEpO2YucHVzaChWKX1lbHNlL15XQVJOSU5HL2dtLnRlc3QodltTXSkmJihmLnB1c2godltTXSksdltTXT0iPGZvbnQ+Iit2W1NdKyI8L2ZvbnQ+Iil9ZC5sb2dn''@;'; put 'put ''ZXJTZXJ2aWNlLmxvZyhmKSxhLmxvZ0ZpbGU9di5qb2luKCJcbiIpLGEubG9nRXJyb3JzPWgsYS5sb2dXYXJuaW5ncz1mfSkoKX1kb3dubG9hZExvZyhhKXtjb25zdCBkPShuZXcgRGF0ZSkudmFsdWVPZigpO3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGBsb2dGaWxlLSR7''@;'; put 'put ''ZH1gLGEpfWRvd25sb2FkU291cmNlQ29kZShhKXtjb25zdCBkPShuZXcgRGF0ZSkudmFsdWVPZigpO3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGBzb3VyY2VDb2RlLSR7ZH1gLGEpfWRvd25sb2FkR2VuZXJhdGVkQ29kZShhKXtjb25zdCBkPShuZXcgRGF0ZSkudmFsdWVP''@;'; put 'put ''ZigpO3RoaXMuaGVscGVyU2VydmljZS5kb3dubG9hZFRleHRGaWxlKGBnZW5lcmF0ZWRDb2RlLSR7ZH1gLGEpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKHZhKSxKZShPMSksSmUoZXUpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0''@;'; put 'put ''eXBlOmwsc2VsZWN0b3JzOltbImFwcC1yZXF1ZXN0cy1tb2RhbCJdXSxpbnB1dHM6e29wZW5lZDoib3BlbmVkIn0sb3V0cHV0czp7b3BlbmVkQ2hhbmdlOiJvcGVuZWRDaGFuZ2UifSxkZWNsczo4LHZhcnM6NCxjb25zdHM6W1siY2xyTW9kYWxTaXplIiwieGwiLDEsInJlcXVlc3RzLW1vZGFs''@;'; put 'put ''IiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibXQtMCIsImQtaW5saW5lLWJsb2NrIl0sWzEsIm1vZGFsLWJvZHkiLCJoLTcwdmgiXSxbImNsYXNzIiwibm8tcmVxcyIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsIm5vLXJlcXMi''@;'; put 'put ''XSxbMywiaWQiLCJjbHJTdGFja1ZpZXdMZXZlbCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImlkIiwiY2xyU3RhY2tWaWV3TGV2ZWwiXSxbMSwibWwtMTAiXSxbMSwiY29udGVudCJdLFsiY2xyVGFiTGluayIsIiJdLFszLCJjbHJJZkFjdGl2ZUNoYW5nZSIsImNscklmQWN0aXZlIl0sWyJz''@;'; put 'put ''aGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsMSwibWItNSIsImNvbG9yLWdyZWVuIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIiwxLCJtYi01IiwiY29sb3ItcmVkIl0sWyJjbGFzcyIsImVyci1saW5rcyIsNCwibmdJZiJdLFsxLCJsb2ctd3JhcHBlciIsInNhc2xvZyIsMywi''@;'; put 'put ''aW5uZXJIVE1MIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJidG4gYnRuLWxpbmsiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImVyci1saW5rcyJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi10cmlhbmdsZSIsMSwiY29sb3ItcmVkIl0sWzMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2Yi''@;'; put 'put ''XSxbMywiY2xpY2siXSxbMSwiY2xyLXRyZWVub2RlLWxpbmsiXSxbInNoYXBlIiwiZXhjbGFtYXRpb24tY2lyY2xlIiwxLCJjb2xvci1ncmVlbiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWzEsImxvZy13cmFwcGVyIl0sWyJjbHJUYWJMaW5rIiwi''@;'; put 'put ''IiwxLCJ3b3JrLXRhYmxlcy1kcm9wZG93biIsMywiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiJdLFsic2hhcGUiLCJjYXJldCBkb3duIl0sWzQsImNscklmT3BlbiJdLFsiY2xhc3MiLCJkcm9wZG93bi1pdGVtIiwiY2xyRHJvcGRvd25JdGVtIiwi''@;'; put 'put ''IiwzLCJzZWxlY3RlZCIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMSwiZHJvcGRvd24taXRlbSIsMywiY2xpY2siXSxbImNsYXNzIiwibXQtMTAiLDQsIm5nSWYiXSxbMSwibWluLWgtNTB2aCJdLFsiY2xhc3MiLCJ0YWJsZSBtdC0xMCIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJtdC0xMCJdLFsxLCJ0YWJsZSIsIm10LTEwIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImNsci1tb2RhbCIsMCksSXQoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIGgubW9kYWxPcGVu''@;'; put 'put ''Q2hhbmdlKHYpfSksZ2UoMSwiaDMiLDEpLFBlKDIsIiBSZXF1ZXN0IEhpc3RvcnkgIiksZ2UoMywicCIsMiksUGUoNCksbWUoKSgpLGdlKDUsImRpdiIsMyksZ3QoNixZQmUsMiwwLCJwIiw0KSg3LHBqZSwyLDEsImNsci1zdGFjay12aWV3Iiw1KSxtZSgpKCkpLDImZCYmKFJlKCJjbHJNb2Rh''@;'; put 'put ''bE9wZW4iLGgub3BlbmVkKSxfZSg0KSxtcigiQXBwIExvY2F0aW9uOiAiLGguc2FzanNDb25maWcuYXBwTG9jLCIiKSxfZSgyKSxSZSgibmdJZiIsKG51bGw9PWguc2FzanNSZXF1ZXN0cz9udWxsOmguc2FzanNSZXF1ZXN0cy5sZW5ndGgpPDEpLF9lKCksUmUoIm5nSWYiLGgub3BlbmVkJiYo''@;'; put 'put ''bnVsbD09aC5zYXNqc1JlcXVlc3RzP251bGw6aC5zYXNqc1JlcXVlc3RzLmxlbmd0aCk+MCkpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLGNZLEF1ZSxsWSxrdWUsQWQsSDEseTQsWWEsUGMsaXUsSV8sa2gsRW0sa20sUDgsVG0seG0sTDgsdzQsSTgsUjgsSl8sJERdLHN0eWxlczpbIi5yZXF1ZXN0''@;'; put 'put ''cy1tb2RhbCAubW9kYWwtaGVhZGVyIC5jbG9zZSBjbHItaWNvbntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0gIC5yZXF1ZXN0cy1tb2RhbCAubW9kYWwtY29udGVudHtwYWRkaW5nOjIwcHggMTBweCA1cHh9ICAud29yay10YWJsZXMtZHJvcGRvd24gYnV0dG9ue2NvbG9yOnZhcigtLWNsci1u''@;'; put 'put ''YXYtbGluay1jb2xvciwgIzhjOGM4YykhaW1wb3J0YW50fSAgLnN0YWNrLXZpZXd7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21hc2staW1hZ2U6bm9uZSFpbXBvcnRhbnQ7LXdlYmtpdC1tYXNrLWltYWdlOm5vbmUhaW1wb3J0YW50fSAgLmNvbnRlbnQgY2xyLWljb257bWFyZ2luLWJvdHRvbTo1''@;'; put 'put ''cHh9ICAuY29udGVudCBwcmV7d29yZC1icmVhazpicmVhay1hbGw7d2hpdGUtc3BhY2U6cHJlLXdyYXA7bWF4LWhlaWdodDppbml0aWFsO292ZXJmbG93OnZpc2libGU7Ym9yZGVyOjB9ICAuY29udGVudCAuc3RhY2stYmxvY2stbGFiZWx7d2lkdGg6MTAwJTtwYWRkaW5nLWxlZnQ6LjZyZW0h''@;'; put 'put ''aW1wb3J0YW50fSAgLmNvbnRlbnQgLnN0YWNrLWJsb2NrLWxhYmVsIC5zdGFjay12aWV3LWtleXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fSAgLmVyci1saW5rcyAuY2xyLXRyZWVub2RlLWNoaWxkcmVue21heC1oZWlnaHQ6NTVweDtvdmVyZmxvdzphdXRvfS5kcm9wZG93bi1pdGVtLnNlbGVj''@;'; put 'put ''dGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNkOGUzZTl9Lm5vLXJlcXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEwMTk2MDc4NDMpO3BhZGRpbmctdG9wOjVweDt0ZXh0LWFsaWduOmNlbnRlcn0iXX0pfX1yZXR1cm4gbH0p''@;'; put 'put ''KCk7Y2xhc3MgbWple2NvbnN0cnVjdG9yKCl7dGhpcy5zYXNTZXJ2aWNlPW51bGwsdGhpcy5tZXNzYWdlPSIiLHRoaXMuZGV0YWlscz1uZXcgZzBlfX1jbGFzcyBnMGV7fWZ1bmN0aW9uIHZqZShsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDgpLFBlKDEsIiBTQVMgU2VydmljZTogIiksZ2UoMiwi''@;'; put 'put ''c3Ryb25nIiksUGUoMyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxscihhLmRhdGEuc2FzU2VydmljZSl9fWZ1bmN0aW9uIF9qZShsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsOSkoMSwicCIpKDIsInN0cm9uZyIpLFBlKDMsIlNZU1dBUk5JTkdURVhUOiIpLG1lKCksUGUoNCks''@;'; put 'put ''bWUoKSxnZSg1LCJwIikoNiwic3Ryb25nIiksUGUoNywiU1lTRVJST1JURVhUOiIpLG1lKCksUGUoOCksbWUoKSxnZSg5LCJwIikoMTAsInN0cm9uZyIpLFBlKDExLCJNQUM6IiksbWUoKSxQZSgxMiksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSg0KSxtcigiICIsYS5kYXRhLmRldGFp''@;'; put 'put ''bHMuU1lTV0FSTklOR1RFWFQsIiIpLF9lKDQpLG1yKCIgIixhLmRhdGEuZGV0YWlscy5TWVNFUlJPUlRFWFQsIiIpLF9lKDQpLG1yKCIgIixhLmRhdGEuZGV0YWlscy5NQUMsIiIpfX1mdW5jdGlvbiBiamUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDEwKSxJdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub3BlbkNvbmZpZ3VyYXRvcigpKX0pLFBlKDEsIiBPcGVuIGNvbmZpZ3VyYXRvciAiKSxtZSgpfX1mdW5jdGlvbiB5amUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDEwKSxJdCgiY2xpY2siLGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub3BlblJlcXVlc3RzTW9kYWwoKSl9KSxQZSgxLCIgT3BlbiByZXF1ZXN0cyBtb2RhbCAiKSxtZSgpfX1mdW5jdGlvbiB3amUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDEwKSxJdCgiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuZG93bmxvYWRMb2coKSl9KSxQZSgxLCIgRG93bmxvYWQgbG9nICIpLG1lKCl9fWZ1bmN0aW9uIENqZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMTApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQo''@;'; put 'put ''TmUoKS5jbG9zZUFib3J0TW9kYWwoKSl9KSxQZSgxLCIgQ2xvc2UgIiksbWUoKX19ZnVuY3Rpb24gU2plKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiwxMCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnJlbG9hZCgpKX0pLFBlKDEs''@;'; put 'put ''IiBSZWxvYWQgIiksbWUoKX19bGV0IE1qZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuaGVscGVyU2VydmljZT1hLHRoaXMuZXZlbnRTZXJ2aWNlPWQsdGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5yb3V0ZXI9Zix0aGlzLm9uQ29uZmlybU1vZGFsQ2xpY2s9bmV3IERy''@;'; put 'put ''LHRoaXMuZGF0YT1uZXcgbWplLHRoaXMuZm9yY2VSZWxvYWQ9ITEsdGhpcy5tb2RhbEVuYWJsZWQ9ITAsdGhpcy5kZWZhdWx0RGF0YT17bW9kYWxUaXRsZToiQWJvcnQgTWVzc2FnZSIsc2FzU2VydmljZTpudWxsLG1lc3NhZ2U6IiIsZGV0YWlsczpuZXcgZzBlfX1uZ09uSW5pdCgpe2xldCBh''@;'; put 'put ''PXsuLi50aGlzLmRlZmF1bHREYXRhLC4uLnRoaXMuZGF0YX07dGhpcy5kYXRhPWF9c2hvd0NvbmZpZ3VyYXRvckJ1dHRvbihhKXtjb25zdCBkPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpO3JldHVybiBhPy5pbmNsdWRlcygic3RhcnR1cHNlcnZpY2UiKSYmZC5zZXJ2ZXJUeXBl''@;'; put 'put ''PT09QnUuWS5TYXM5fWNsb3NlQWJvcnRNb2RhbCgpe3RoaXMub25Db25maXJtTW9kYWxDbGljay5lbWl0KCl9b3BlbkNvbmZpZ3VyYXRvcigpe3RoaXMuZXZlbnRTZXJ2aWNlLnN0YXJ0dXBEYXRhTG9hZGVkKCksdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2RlcGxveSIpLHRoaXMuY2xv''@;'; put 'put ''c2VBYm9ydE1vZGFsKCl9ZG93bmxvYWRMb2coKXt0aGlzLmhlbHBlclNlcnZpY2UuZG93bmxvYWRUZXh0RmlsZShgJHt0aGlzLmRhdGEuc2FzU2VydmljZX0tTE9HYCx0aGlzLmRhdGEuZGV0YWlscz8uTE9HfHwiRXJyb3IgcGFyc2luZyB0aGUgbG9nIil9b3BlblJlcXVlc3RzTW9kYWwoKXt0''@;'; put 'put ''aGlzLmV2ZW50U2VydmljZS5vcGVuUmVxdWVzdHNNb2RhbCgpfXJlbG9hZCgpe2xvY2F0aW9uLnJlbG9hZCgpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGV1KSxKZShEbCksSmUodmEpLEplKEpzKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNt''@;'; put 'put ''cD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtaW5mby1tb2RhbCJdXSxpbnB1dHM6e2RhdGE6ImRhdGEiLGZvcmNlUmVsb2FkOiJmb3JjZVJlbG9hZCJ9LG91dHB1dHM6e29uQ29uZmlybU1vZGFsQ2xpY2s6Im9uQ29uZmlybU1vZGFsQ2xpY2sifSxkZWNsczoxMyx2YXJzOjEyLGNvbnN0''@;'; put 'put ''czpbWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNsci1hYm9ydC1tb2RhbCIsMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsiY2xhc3MiLCJzYXNTZXJ2aWNlIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsIm1vZGFsLWJvZHkiXSxbMSwiYWJvcnRNc2ciLDMsImlubmVySFRNTCJdLFsiY2xhc3MiLCJzeXN0ZXh0Iiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJzYXNT''@;'; put 'put ''ZXJ2aWNlIl0sWzEsInN5c3RleHQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImNsci1tb2RhbCIsMCksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJu''@;'; put 'put ''IEdyKGgubW9kYWxFbmFibGVkLHYpfHwoaC5tb2RhbEVuYWJsZWQ9diksdn0pLGdlKDEsImgzIiwxKSxQZSgyKSxndCgzLHZqZSw0LDEsInAiLDIpLG1lKCksZ2UoNCwiZGl2IiwzKSxZdCg1LCJkaXYiLDQpLGd0KDYsX2plLDEzLDMsImRpdiIsNSksbWUoKSxnZSg3LCJkaXYiLDYpLGd0KDgs''@;'; put 'put ''YmplLDIsMCwiYnV0dG9uIiw3KSg5LHlqZSwyLDAsImJ1dHRvbiIsNykoMTAsd2plLDIsMCwiYnV0dG9uIiw3KSgxMSxDamUsMiwwLCJidXR0b24iLDcpKDEyLFNqZSwyLDAsImJ1dHRvbiIsNyksbWUoKSgpKSwyJmQmJihZcigiY2xyTW9kYWxPcGVuIixoLm1vZGFsRW5hYmxlZCksUmUoImNs''@;'; put 'put ''ck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCFoLmZvcmNlUmVsb2FkKSxfZSgyKSxtcigiICIsaC5kYXRhLm1vZGFsVGl0bGUsIiAiKSxfZSgpLFJlKCJuZ0lmIixoLmRhdGEuc2FzU2VydmljZSYmaC5kYXRhLnNhc1NlcnZpY2UubGVuZ3RoPjApLF9lKDIpLFJlKCJpbm5l''@;'; put 'put ''ckhUTUwiLGguZGF0YS5tZXNzYWdlLFpwKSxfZSgpLFJlKCJuZ0lmIixudWxsIT09aC5kYXRhLmRldGFpbHMpLF9lKDIpLFJlKCJuZ0lmIixoLnNob3dDb25maWd1cmF0b3JCdXR0b24oaC5kYXRhLnNhc1NlcnZpY2UpKSxfZSgpLFJlKCJuZ0lmIixudWxsIT09aC5kYXRhLmRldGFpbHMpLF9l''@;'; put 'put ''KCksUmUoIm5nSWYiLChudWxsPT1oLmRhdGEuZGV0YWlscz9udWxsOmguZGF0YS5kZXRhaWxzLkxPRykmJihudWxsPT1oLmRhdGEuZGV0YWlsc3x8bnVsbD09aC5kYXRhLmRldGFpbHMuTE9HP251bGw6aC5kYXRhLmRldGFpbHMuTE9HLnRyaW0oKS5sZW5ndGgpPjApLF9lKCksUmUoIm5nSWYi''@;'; put 'put ''LCFoLmZvcmNlUmVsb2FkKSxfZSgpLFJlKCJuZ0lmIixoLmZvcmNlUmVsb2FkKSl9LGRlcGVuZGVuY2llczpbJGksUGMsaXUsak1dLHN0eWxlczpbIi5jbHItYWJvcnQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtdGl0bGUtd3JhcHBlcnt3aWR0aDoxMDAlfS5jbHItYWJv''@;'; put 'put ''cnQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWx7ei1pbmRleDoyMDUwfS5tb2RhbC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LnNhc1NlcnZpY2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEw''@;'; put 'put ''cHg7bWFyZ2luOjB9Lm1vZGFsLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkY30uc3lzdGV4dFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bzttYXJnaW4tdG9wOjIwcHg7cGFkZGluZzoxMHB4IDA7''@;'; put 'put ''Ym9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkY30uc3lzdGV4dFtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjA7d29yZC13cmFwOmJyZWFrLXdvcmR9Il19KX19cmV0dXJuIGx9KSgpO2NvbnN0IHhqZT0oKT0+WyIvIl0sbTBlPSgpPT5bIi92''@;'; put 'put ''aWV3Il0sdjBlPSgpPT5bIi9ob21lIl0seFk9KCk9PlsiL3Jldmlldy9zdWJtaXR0ZWQiXSxFamU9KCk9PlsiL3Jldmlldy9hcHByb3ZlIl0sVGplPSgpPT5bIi9yZXZpZXcvaGlzdG9yeSJdO2Z1bmN0aW9uIGtqZShsLGMpezEmbCYmKFZyKDApLGdlKDEsImRpdiIsMTcpKDIsImRpdiIsMTgp''@;'; put 'put ''KDMsImRpdiIsMTkpLFl0KDQsImNkcy1pY29uIiwyMCksbWUoKSxnZSg1LCJkaXYiLDIxKSxQZSg2LCIgRGF0YSBDb250cm9sbGVyIChGUkVFIFRpZXIpIC0gdG8gdXBncmFkZSBjb250YWN0ICIpLFl0KDcsImNvbnRhY3QtbGluayIsMjIpLG1lKCkoKSgpLGdlKDgsImEiLDIzKSxQZSg5LCJV''@;'; put 'put ''cGRhdGUgTGljZW5jZSBLZXkiKSxtZSgpLEJyKCkpfWZ1bmN0aW9uIEFqZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsImRpdiIsMTcpKDIsImRpdiIsMTgpKDMsImRpdiIsMTkpLFl0KDQsImNkcy1pY29uIiwyMCksbWUoKSxnZSg1LCJkaXYiLDIxKSxQZSg2LCIgRGF0''@;'; put 'put ''YSBDb250cm9sbGVyIChGUkVFIFRpZXIpIC0gUHJvYmxlbSB3aXRoIGxpY2VuY2UgIiksbWUoKSgpKCksZ2UoNywiYSIsMjQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDMpO3JldHVybiBidChoLmxpY2VuY2VQcm9ibGVtRGV0YWlscyhoLmxpY2VuY2VQcm9ibGVt''@;'; put 'put ''LnZhbHVlKSl9KSxQZSg4LCJNb3JlIGRldGFpbHMiKSxtZSgpLEJyKCl9fWZ1bmN0aW9uIERqZShsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMTYpLGd0KDEsa2plLDEwLDAsIm5nLWNvbnRhaW5lciIsMSkoMixBamUsOSwwLCJuZy1jb250YWluZXIiLDEpLG1lKCkpLDImbCl7Y29uc3QgYT1O''@;'; put 'put ''ZSgyKTtfZSgpLFJlKCJuZ0lmIixudWxsPT09YS5saWNlbmNlUHJvYmxlbS52YWx1ZSksX2UoKSxSZSgibmdJZiIsbnVsbCE9PWEubGljZW5jZVByb2JsZW0udmFsdWUpfX1mdW5jdGlvbiBJamUobCxjKXsxJmwmJihnZSgwLCJhIiwyMyksUGUoMSwiVXBkYXRlIExpY2VuY2UgS2V5IiksbWUo''@;'; put 'put ''KSl9ZnVuY3Rpb24gUmplKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyNSkoMSwiZGl2IiwxNykoMiwiZGl2IiwxOCkoMywiZGl2IiwxOSksWXQoNCwiY2RzLWljb24iLDIwKSxtZSgpLGdlKDUsImRpdiIsMjEpLFBlKDYpLFl0KDcsImNvbnRhY3QtbGluayIsMjIpLFBlKDgpLG1lKCkoKSgp''@;'; put 'put ''LGd0KDksSWplLDIsMCwiYSIsMjYpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSg2KSxfdSgiIFRoaXMgbGljZW5zZSBrZXkgd2lsbCBleHBpcmUgaW4gIixhLmxpY2Vuc2VFeHBpcmluZ0RheXMsIiAiLDE9PT1hLmxpY2Vuc2VFeHBpcmluZ0RheXM/ImRheSI6ImRheXMiLCIuIFBsZWFz''@;'; put 'put ''ZSBjb250YWN0ICIpLF9lKDIpLG1yKCIgb3IgeW91ciByZXNlbGxlciB0byBhcnJhbmdlIGFkZGl0aW9uYWwgbGljZW5jZSBmb3Igc2l0ZSBpZCAiLGEuc3lzc2l0ZS5nZXRWYWx1ZSgpLCIuICIpLF9lKCksUmUoIm5nSWYiLCFhLmZyZWVUaWVyQmFubmVyKX19ZnVuY3Rpb24gTGplKGwsYyl7''@;'; put 'put ''MSZsJiYoZ2UoMCwiYSIsMjMpLFBlKDEsIlVwZGF0ZSBMaWNlbmNlIEtleSIpLG1lKCkpfWZ1bmN0aW9uIE9qZShsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMjUpKDEsImRpdiIsMTcpKDIsImRpdiIsMTgpKDMsImRpdiIsMTkpLFl0KDQsImNkcy1pY29uIiwyMCksbWUoKSxnZSg1LCJkaXYi''@;'; put 'put ''LDIxKSxQZSg2LCIgVGhlIHJlZ2lzdGVyZWQgbnVtYmVyIG9mIHVzZXJzIGV4Y2VlZHMgdGhlIGxpbWl0IHNwZWNpZmllZCBmb3IgeW91ciBsaWNlbnNlLiBQbGVhc2UgY29udGFjdCAiKSxZdCg3LCJjb250YWN0LWxpbmsiLDIyKSxQZSg4KSxtZSgpKCkoKSxndCg5LExqZSwyLDAsImEiLDI2''@;'; put 'put ''KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoOCksbXIoIiBvciB5b3VyIHJlc2VsbGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlIGZvciBzaXRlIGlkICIsYS5zeXNzaXRlLmdldFZhbHVlKCksIi4gIiksX2UoKSxSZSgibmdJZiIsIWEubGljZW5zZUV4cGlyaW5nRGF5cyYm''@;'; put 'put ''IWEuZnJlZVRpZXJCYW5uZXIpfX1mdW5jdGlvbiBQamUobCxjKXtpZigxJmwmJihWcigwKSxndCgxLERqZSwzLDIsImRpdiIsMTQpKDIsUmplLDEwLDQsImRpdiIsMTUpKDMsT2plLDEwLDIsImRpdiIsMTUpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKCksUmUoIm5nSWYiLGEuZnJlZVRp''@;'; put 'put ''ZXJCYW5uZXImJighYS5saWNlbnNlRXhwaXJpbmdEYXlzfHxhLmxpY2Vuc2VFeHBpcmluZ0RheXM8MCkpLF9lKCksUmUoIm5nSWYiLGEubGljZW5zZUV4cGlyaW5nRGF5cyYmIWEuZnJlZVRpZXJCYW5uZXIpLF9lKCksUmUoIm5nSWYiLGEuYXBwT3ZlckNhcGFjaXR5KX19ZnVuY3Rpb24gRmpl''@;'; put 'put ''KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnRvZ2dsZVNpZGViYXIoKSl9KSxZdCgxLCJjbHItaWNvbiIsMjgpLG1lKCl9fWZ1bmN0aW9uIE5qZShsLGMpezEmbCYmKGdlKDAsImEiLDI5''@;'; put 'put ''KSxZdCgxLCJpbWciLDMwKSgyLCJpbWciLDMxKSxtZSgpKSwyJmwmJlJlKCJyb3V0ZXJMaW5rIixsYSgxLHhqZSkpfWZ1bmN0aW9uIEhqZShsLGMpezEmbCYmKGdlKDAsImEiKSxZdCgxLCJzcGFuIiwzMiksbWUoKSl9ZnVuY3Rpb24gVmplKGwsYyl7MSZsJiYoZ2UoMCwiY2xyLWRyb3Bkb3du''@;'; put 'put ''LW1lbnUiLDQwKSgxLCJhIiw0MSksUGUoMiwiVklFVyIpLG1lKCksZ2UoMywiYSIsNDEpLFBlKDQsIkxPQUQiKSxtZSgpLGdlKDUsImEiLDQxKSxQZSg2LCJSRVZJRVciKSxtZSgpKCkpLDImbCYmKF9lKCksUmUoInJvdXRlckxpbmsiLGxhKDMsbTBlKSksX2UoMiksUmUoInJvdXRlckxpbmsi''@;'; put 'put ''LGxhKDQsdjBlKSksX2UoMiksUmUoInJvdXRlckxpbmsiLGxhKDUseFkpKSl9ZnVuY3Rpb24gQmplKGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwiZGl2IiwzMykoMiwiY2xyLWRyb3Bkb3duIikoMywiYnV0dG9uIiwzNCksUGUoNCwiIE1lbnUgIiksbWUoKSxndCg1LFZqZSw3LDYsImNsci1k''@;'; put 'put ''cm9wZG93bi1tZW51IiwzNSksbWUoKSgpLGdlKDYsImRpdiIsMzYpKDcsImEiLDM3KSxQZSg4LCJWSUVXIiksbWUoKSxnZSg5LCJhIiwzOCksUGUoMTAsIkxPQUQiKSxtZSgpLGdlKDExLCJhIiwzOSksUGUoMTIsIlJFVklFVyIpLG1lKCkoKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSg3''@;'; put 'put ''KSxSZSgicm91dGVyTGluayIsbGEoNyxtMGUpKSxfZSgyKSxwcigiYWN0aXZlIixhLnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXRvciIpfHxhLnJvdXRlci51cmwuaW5jbHVkZXMoImVkaXQtcmVjb3JkIil8fGEucm91dGVyLnVybC5pbmNsdWRlcygiaG9tZSIpKSxSZSgicm91dGVyTGluayIs''@;'; put 'put ''bGEoOCx2MGUpKSxfZSgyKSxwcigiYWN0aXZlIixhLnJvdXRlci51cmwuaW5jbHVkZXMoInN1Ym1pdHRlZCIpfHxhLnJvdXRlci51cmwuaW5jbHVkZXMoImFwcHJvdmUiKXx8YS5yb3V0ZXIudXJsLmluY2x1ZGVzKCJoaXN0b3J5IikpLFJlKCJyb3V0ZXJMaW5rIixsYSg5LHhZKSl9fWZ1bmN0''@;'; put 'put ''aW9uIGpqZShsLGMpe2lmKDEmbCYmKGdlKDAsIm5hdiIsNDIpKDEsInVsIiw0MykoMiwibGkiLDQ0KSgzLCJhIiwzNyksUGUoNCwiU1VCTUlUIiksbWUoKSgpLGdlKDUsImxpIiw0NCkoNiwiYSIsMzcpLFBlKDcsIkFQUFJPVkUiKSxtZSgpKCksZ2UoOCwibGkiLDQ0KSg5LCJhIiwzNyksUGUo''@;'; put 'put ''MTAsIkhJU1RPUlkiKSxtZSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxSZSgicm91dGVyTGluayIsbGEoNSx4WSkpLF9lKDMpLHByKCJhY3RpdmUiLGEucm91dGVyLnVybC5pbmNsdWRlcygiYXBwcm92ZSIpKSxSZSgicm91dGVyTGluayIsbGEoNixFamUpKSxfZSgzKSxSZSgi''@;'; put 'put ''cm91dGVyTGluayIsbGEoNyxUamUpKX19ZnVuY3Rpb24gemplKGwsYyl7MSZsJiZZdCgwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24gVWplKGwsYyl7MSZsJiZZdCgwLCJyb3V0ZXItb3V0bGV0Iil9ZnVuY3Rpb24gWmplKGwsYyl7MSZsJiZZdCgwLCJhcHAtYWxlcnRzIil9ZnVuY3Rpb24gWWpl''@;'; put 'put ''KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYXBwLWluZm8tbW9kYWwiLDQ1KSxJdCgib25Db25maXJtTW9kYWxDbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5jbG9zZUFib3J0TW9kYWwoaC5pZCkpfSksbWUoKX1pZigyJmwp''@;'; put 'put ''e2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgpO1JlKCJkYXRhIixhKSgiZm9yY2VSZWxvYWQiLCFkLnN0YXJ0dXBEYXRhTG9hZGVkJiYxPT09ZC5zYXNqc0Fib3J0cy5sZW5ndGgpfX1mdW5jdGlvbiBXamUobCxjKXsxJmwmJihnZSgwLCJkaXYiLDQ5KSxZdCgxLCJkaXYiLDUwKSgyLCJkaXYi''@;'; put 'put ''LDUxKSgzLCJkaXYiLDUyKSxtZSgpKX1mdW5jdGlvbiBHamUobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDQ2KSxZdCgxLCJpbWciLDQ3KSxndCgyLFdqZSw0LDAsImRpdiIsNDgpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDIpLFJlKCJuZ0lmIixudWxsPT09YS5hcHBBY3RpdmUpfX1X''@;'; put 'put ''cy5hZGRJY29ucyhbIm1vb24iLHtvdXRsaW5lOic8cGF0aCBkPSJNMzEsMjcuMTlhMSwxLDAsMCwwLTEtLjU2Yy0uMjgsMC0uNTYsMC0uODUsMEExMSwxMSwwLDAsMSwyNC45Miw1LjYxYTEsMSwwLDAsMCwuNjEtMSwxLDEsMCwwLDAtLjY3LS45MSwxNC43LDE0LjcsMCwwLDAtNS0uODcsMTUu''@;'; put 'put ''MTIsMTUuMTIsMCwwLDAsMCwzMC4yNCwxNC43OCwxNC43OCwwLDAsMCwxMS00LjgxQTEsMSwwLDAsMCwzMSwyNy4xOVpNMTkuODksMzEuMTJhMTMuMTIsMTMuMTIsMCwwLDEsMC0yNi4yNCwxMS44MSwxMS44MSwwLDAsMSwyLC4xNiwxMywxMywwLDAsMCw1LjcyLDIzLjUzQTEyLjc1LDEyLjc1''@;'; put 'put ''LDAsMCwxLDE5Ljg5LDMxLjEyWiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0yOS4yLDI2LjcyQTEyLjA3LDEyLjA3LDAsMCwxLDIyLjksNC40NCwxMy42OCwxMy42OCwwLDAsMCwxOS40OSw0YTE0LDE0LDAsMCwwLDAsMjgsMTMuODIsMTMuODIsMCwwLDAsMTAuOS01LjM0QTExLjcxLDExLjcxLDAs''@;'; put 'put ''MCwxLDI5LjIsMjYuNzJaIi8+J31dLFsic3VuIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDYuMzFhMSwxLDAsMCwwLDEtMVYxLjkxYTEsMSwwLDAsMC0yLDB2My40QTEsMSwwLDAsMCwxOCw2LjMxWiIvPjxwYXRoIGQ9Ik0xOCwyOS42OWExLDEsMCwwLDAtMSwxdjMuNGExLDEsMCwwLDAsMiww''@;'; put 'put ''di0zLjRBMSwxLDAsMCwwLDE4LDI5LjY5WiIvPjxwYXRoIGQ9Ik04LjMyLDkuNzRBMSwxLDAsMCwwLDksMTBhMSwxLDAsMCwwLC43MS0uMjksMSwxLDAsMCwwLDAtMS40Mkw3LjMzLDUuOTJBMSwxLDAsMCwwLDUuOTIsNy4zM1oiLz48cGF0aCBkPSJNMjcuNjgsMjYuMjZhMSwxLDAsMSwwLTEu''@;'; put 'put ''NDIsMS40MmwyLjQxLDIuNGExLDEsMCwwLDAsLjcxLjMsMSwxLDAsMCwwLC43LS4zLDEsMSwwLDAsMCwwLTEuNDFaIi8+PHBhdGggZD0iTTYuMzEsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJoMy40QTEsMSwwLDAsMCw2LjMxLDE4WiIvPjxwYXRoIGQ9Ik0zNC4wOSwxN2gt''@;'; put 'put ''My40YTEsMSwwLDEsMCwwLDJoMy40YTEsMSwwLDAsMCwwLTJaIi8+PHBhdGggZD0iTTguMzIsMjYuMjZsLTIuNCwyLjQxYTEsMSwwLDAsMCwuNywxLjcxLDEsMSwwLDAsMCwuNzEtLjNsMi40MS0yLjRhMSwxLDAsMSwwLTEuNDItMS40MloiLz48cGF0aCBkPSJNMjcsMTBhMSwxLDAsMCwwLC43''@;'; put 'put ''MS0uMjlsMi40LTIuNDFhMSwxLDAsMCwwLDAtMS40MSwxLDEsMCwwLDAtMS40MSwwbC0yLjQxLDIuNGExLDEsMCwwLDAsMCwxLjQyQTEsMSwwLDAsMCwyNywxMFoiLz48cGF0aCBkPSJNMTguMTMsNy43NWExMC4xMywxMC4xMywwLDEsMCwxMCwxMC4xM0ExMC4wOCwxMC4wOCwwLDAsMCwxOC4x''@;'; put 'put ''Myw3Ljc1Wm0wLDE4LjI1YTguMTMsOC4xMywwLDEsMSw4LTguMTJBOC4wOCw4LjA4LDAsMCwxLDE4LjEzLDI2WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0xOCw2LjQyYTEsMSwwLDAsMCwxLTFWMS45MWExLDEsMCwwLDAtMiwwVjUuNDJBMSwxLDAsMCwwLDE4LDYuNDJaIi8+PHBhdGggZD0iTTE4''@;'; put 'put ''LDI5LjU4YTEsMSwwLDAsMC0xLDF2My41MWExLDEsMCwwLDAsMiwwVjMwLjU4QTEsMSwwLDAsMCwxOCwyOS41OFoiLz48cGF0aCBkPSJNOC40LDkuODFBMSwxLDAsMCwwLDkuODEsOC40TDcuMzMsNS45MkExLDEsMCwwLDAsNS45Miw3LjMzWiIvPjxwYXRoIGQ9Ik0yNy42LDI2LjE5YTEsMSww''@;'; put 'put ''LDAsMC0xLjQxLDEuNDFsMi40OCwyLjQ4YTEsMSwwLDAsMCwxLjQxLTEuNDFaIi8+PHBhdGggZD0iTTYuNDIsMThhMSwxLDAsMCwwLTEtMUgxLjkxYTEsMSwwLDAsMCwwLDJINS40MkExLDEsMCwwLDAsNi40MiwxOFoiLz48cGF0aCBkPSJNMzQuMDksMTdIMzAuNThhMSwxLDAsMCwwLDAsMmgz''@;'; put 'put ''LjUxYTEsMSwwLDAsMCwwLTJaIi8+PHBhdGggZD0iTTguNCwyNi4xOSw1LjkyLDI4LjY3YTEsMSwwLDAsMCwxLjQxLDEuNDFMOS44MSwyNy42QTEsMSwwLDAsMCw4LjQsMjYuMTlaIi8+PHBhdGggZD0iTTI3LjYsOS44MWwyLjQ4LTIuNDhhMSwxLDAsMCwwLTEuNDEtMS40MUwyNi4xOSw4LjRB''@;'; put 'put ''MSwxLDAsMCwwLDI3LjYsOS44MVoiLz48Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIxMCIvPid9XSxbImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIix7b3V0bGluZTonPHBhdGggZD0iTTE4LDIxLjMyYTEuMywxLjMsMCwwLDAsMS4zLTEuM1YxNGExLjMsMS4zLDAsMSwwLTIuNiwwdjZBMS4zLDEu''@;'; put 'put ''MywwLDAsMCwxOCwyMS4zMloiLz48Y2lyY2xlIGN4PSIxNy45NSIgY3k9IjI0LjI3IiByPSIxLjUiLz48cGF0aCBkPSJNMzAuMzMsMjUuNTQsMjAuNTksNy42YTMsMywwLDAsMC01LjI3LDBMNS41NywyNS41NEEzLDMsMCwwLDAsOC4yMSwzMEgyNy42OWEzLDMsMCwwLDAsMi42NC00LjQzWm0t''@;'; put 'put ''MS43OCwxLjk0YTEsMSwwLDAsMS0uODYuNDlIOC4yMWExLDEsMCwwLDEtLjg4LTEuNDhMMTcuMDcsOC41NWExLDEsMCwwLDEsMS43NiwwbDkuNzQsMTcuOTRBMSwxLDAsMCwxLDI4LjU1LDI3LjQ4WiIvPicsc29saWQ6JzxwYXRoIGQ9Ik0zMC4zMywyNS41NCwyMC41OSw3LjZhMywzLDAsMCww''@;'; put 'put ''LTUuMjcsMEw1LjU3LDI1LjU0QTMsMywwLDAsMCw4LjIxLDMwSDI3LjY5YTMsMywwLDAsMCwyLjY0LTQuNDNaTTE2LjQ2LDEyLjc0YTEuNDksMS40OSwwLDAsMSwzLDB2Ni44OWExLjQ5LDEuNDksMCwxLDEtMywwWk0xOCwyNi4yNWExLjcyLDEuNzIsMCwxLDEsMS43Mi0xLjcyQTEuNzIsMS43''@;'; put 'put ''MiwwLDAsMSwxOCwyNi4yNVoiLz4nfV0sWyJ0YWJsZSIse291dGxpbmU6JzxwYXRoIGQ9Ik04LDM0YTEsMSwwLDAsMS0xLTFWMi45MmExLDEsMCwwLDEsMiwwVjMzQTEsMSwwLDAsMSw4LDM0WiIvPjxwYXRoIGQ9Ik0xNywzMy45MmExLDEsMCwwLDEtMS0xVjkuMWExLDEsMCwxLDEsMiwwVjMy''@;'; put 'put ''LjkyQTEsMSwwLDAsMSwxNywzMy45MloiLz48cGF0aCBkPSJNMjYsMzRhMSwxLDAsMCwxLTEtMVY5YTEsMSwwLDAsMSwyLDBWMzNBMSwxLDAsMCwxLDI2LDM0WiIvPjxwYXRoIGQ9Ik0zMy4xMSwxOGgtMjVhMSwxLDAsMSwxLDAtMmgyNWExLDEsMCwxLDEsMCwyWiIvPjxwYXRoIGQ9Ik0zMy4x''@;'; put 'put ''LDI2Ljk0SDguMUExLDEsMCwxLDEsOC4xLDI1aDI1YTEsMSwwLDEsMSwwLDEuOTJaIi8+PHBhdGggZD0iTTMzLDguOTJIM0ExLDEsMCwxLDEsMyw3SDMzYTEsMSwwLDEsMSwwLDEuOTRaIi8+J31dLFsidHJhc2giLHtvdXRsaW5lOic8cGF0aCBkPSJNMjcuMTQsMzRIOC44NkEyLjkzLDIuOTMs''@;'; put 'put ''MCwwLDEsNiwzMVYxMS4yM0g4VjMxYS45My45MywwLDAsMCwuODYsMUgyNy4xNEEuOTMuOTMsMCwwLDAsMjgsMzFWMTEuMjNoMlYzMUEyLjkzLDIuOTMsMCwwLDEsMjcuMTQsMzRaIi8+PHBhdGggZD0iTTMwLjc4LDlINUExLDEsMCwwLDEsNSw3SDMwLjc4YTEsMSwwLDAsMSwwLDJaIi8+PHJl''@;'; put 'put ''Y3QgeD0iMjEiIHk9IjEzIiB3aWR0aD0iMiIgaGVpZ2h0PSIxNSIvPjxyZWN0IHg9IjEzIiB5PSIxMyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiLz48cGF0aCBkPSJNMjMsNS44NkgyMS4xVjRIMTQuOVY1Ljg2SDEzVjRhMiwyLDAsMCwxLDEuOS0yaDYuMkEyLDIsMCwwLDEsMjMsNFoiLz4nLHNv''@;'; put 'put ''bGlkOic8cGF0aCBkPSJNNiw5VjMxYTIuOTMsMi45MywwLDAsMCwyLjg2LDNIMjcuMDlBMi45MywyLjkzLDAsMCwwLDMwLDMxVjlabTksMjBIMTNWMTRoMlptOCwwSDIxVjE0aDJaIi8+PHBhdGggZD0iTTMwLjczLDVIMjNWNEEyLDIsMCwwLDAsMjEsMmgtNi4yQTIsMiwwLDAsMCwxMyw0VjVI''@;'; put 'put ''NUExLDEsMCwxLDAsNSw3SDMwLjczYTEsMSwwLDAsMCwwLTJaIi8+J31dLFsicHJvY2Vzcy1vbi12bSIse291dGxpbmU6JzxwYXRoIGQ9Ik0zMy40OSwyNi4yOGExLDEsMCwwLDAtMS4yLS43bC0yLjQ5LjY3YTE0LjIzLDE0LjIzLDAsMCwwLDIuNC02Ljc1QTE0LjQ4LDE0LjQ4LDAsMCwwLDI3''@;'; put 'put ''LjM3LDcuMzUsMSwxLDAsMCwwLDI2LDcuNDRhMSwxLDAsMCwwLC4wOSwxLjQxLDEyLjQ1LDEyLjQ1LDAsMCwxLDQuMTYsMTAuNDYsMTIuMTksMTIuMTksMCwwLDEtMiw1Ljc0TDI4LDIyLjU0YTEsMSwwLDEsMC0xLjk1LjE2bC41LDYuNDQsNi4yNS0xLjY2QTEsMSwwLDAsMCwzMy40OSwyNi4y''@;'; put 'put ''OFoiLz48cGF0aCBkPSJNNC4zMSwxNy4wOGExLjA2LDEuMDYsMCwwLDAsLjQ0LjE2LDEsMSwwLDAsMCwxLjEyLS44NUExMi4yMSwxMi4yMSwwLDAsMSwxOC42OSw1Ljg0TDE2LjQ1LDcuMzdhMSwxLDAsMCwwLC40NywxLjc5QTEsMSwwLDAsMCwxNy41Niw5bDUuMzMtMy42NkwxOC4zMy43NmEx''@;'; put 'put ''LDEsMCwxLDAtMS4zOSwxLjM4bDEuNywxLjdBMTQuMiwxNC4yLDAsMCwwLDMuODksMTYuMTIsMSwxLDAsMCwwLDQuMzEsMTcuMDhaIi8+PHBhdGggZD0iTTIxLjczLDI5LjkzYTEyLDEyLDAsMCwxLTQuODQuNTEsMTIuMywxMi4zLDAsMCwxLTkuNTctNi4zbDIuNDkuOTNhMSwxLDAsMCwwLC42''@;'; put 'put ''OS0xLjg0bC00LjU5LTEuN2gwTDQuNDQsMjEsMy4zMywyNy4zNWExLDEsMCwwLDAsLjc5LDEuMTNsLjE3LDBhMSwxLDAsMCwwLDEtLjgxbC40Mi0yLjRhMTQuMywxNC4zLDAsMCwwLDExLDcuMTQsMTMuOTEsMTMuOTEsMCwwLDAsNS42My0uNiwxLDEsMCwwLDAtLjYtMS45WiIvPjxwYXRoIGQ9''@;'; put 'put ''Ik0yMiwxM0gxNGExLDEsMCwwLDAtMSwxdjhhMSwxLDAsMCwwLDEsMWg4YTEsMSwwLDAsMCwxLTFWMTRBMSwxLDAsMCwwLDIyLDEzWm0tMSw4SDE1VjE1aDZaIi8+J31dKTtsZXQgJGplPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRLGRlKXt0aGlzLmFwcFNlcnZp''@;'; put 'put ''Y2U9YSx0aGlzLmxpY2VuY2VTZXJ2aWNlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLnJvdXRlPWYsdGhpcy5sb2NhdGlvbj12LHRoaXMuZXZlbnRTZXJ2aWNlPVMsdGhpcy5hcHBTdG9yZVNlcnZpY2U9Vix0aGlzLmNkcj1RLHRoaXMuZWxlbWVudFJlZj1kZSx0aGlzLmxpY2Vuc2VFeHBpcmluZ0Rh''@;'; put 'put ''eXM9bnVsbCx0aGlzLnNhc2pzQWJvcnRzPVtdLHRoaXMuZWRpdG9yQWN0aXZlPSExLHRoaXMuYXBwcm92ZUFjdGl2ZT0hMSx0aGlzLmZyZWVUaWVyQmFubmVyPXRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBGcmVlVGllci52YWx1ZSx0aGlzLmxpY2VuY2VQcm9ibGVtPXRoaXMubGljZW5jZVNl''@;'; put 'put ''cnZpY2UubGljZW5jZVByb2JsZW0sdGhpcy5hcHBPdmVyQ2FwYWNpdHk9ITEsdGhpcy5hcHBBY3RpdmU9bnVsbCx0aGlzLnJlcXVlc3RzTW9kYWw9ITEsdGhpcy5zaG93UmVnaXN0cmF0aW9uPSEwLHRoaXMuc3RhcnR1cERhdGFMb2FkZWQ9ITEsdGhpcy5kZW1vTGltaXROb3RpY2U9e29wZW46''@;'; put 'put ''ITEsZmVhdHVyZU5hbWU6IiJ9LHRoaXMuc3lzc2l0ZT10aGlzLmFwcFNlcnZpY2Uuc3lzc2l0ZSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLnBhcnNlRGNBZGFwdGVyU2V0dGluZ3MoKSx3aW5kb3cuYXBwaW5mbz0oKT0+e2NvbnNvbGUu''@;'; put 'put ''dGFibGUoeyJBZGFwdGVyIHZlcnNpb24iOiI0LjEwLjIiLCJBcHAgdmVyc2lvbiI6InY2LjEyLjIiLnJlcGxhY2UoInYiLCIiKSwiQnVpbGQgdGltZXN0YW1wIjphcyhwYXJzZUludCgiMTczNzk3NzQwMzU5MCIpKS5mb3JtYXQoIkRELU1NTS1ZWVlZIEhIOk1NIiksIi4uLiI6Ii4uLiJ9KX0s''@;'; put 'put ''dGhpcy5zdWJzY3JpYmVUb0xpY2Vuc2VFdmVudHMoKSx0aGlzLmNvbW1pdFZlcj0idjYuMTIuMiIucmVwbGFjZSgidiIsIiIpKyIuZ2NkM2JjYzAiLGguZXZlbnRzLnN1YnNjcmliZShwZT0+e2lmKHRoaXMucm91dGVVcmw9dGhpcy5yb3V0ZXIudXJsLHR5cGVvZiB0aGlzLnJvdXRlVXJsPCJ1''@;'; put 'put ''IiYmdGhpcy5yb3V0ZVVybC5sZW5ndGg+NCl7bGV0IENlPXRoaXMucm91dGVVcmwuc3BsaXQoIi8iKVsxXTsiZWRpdG9yIj09PUNlPyh0aGlzLmVyclRvcD0hMCx0aGlzLmVkaXRvckFjdGl2ZT0hMCx0aGlzLmFwcHJvdmVBY3RpdmU9ITEpOiJob21lIj09PUNlPyh0aGlzLmVyclRvcD0hMSx0''@;'; put 'put ''aGlzLmVkaXRvckFjdGl2ZT0hMCx0aGlzLmFwcHJvdmVBY3RpdmU9ITEpOih0aGlzLmVyclRvcD0hMCx0aGlzLmVkaXRvckFjdGl2ZT0hMSksSG4ucm9vdFBhcmFtPUNlfXR5cGVvZiB0aGlzLnJvdXRlVXJsPCJ1IiYmdGhpcy5yb3V0ZVVybC5sZW5ndGg+NiYmKHRoaXMuYXBwcm92ZUFjdGl2''@;'; put 'put ''ZT0hIXRoaXMucm91dGVVcmwuaW5jbHVkZXMoImFwcHJvdmVEZXQiKXx8ISF0aGlzLnJvdXRlVXJsLmluY2x1ZGVzKCJ0b2FwcHJvdmUiKSl9KSx0aGlzLnN1YnNjcmliZVRvU2hvd0Fib3J0TW9kYWwoKSx0aGlzLnN1YnNjcmliZVRvUmVxdWVzdHNNb2RhbCgpLHRoaXMuc3Vic2NyaWJlVG9T''@;'; put 'put ''dGFydHVwRGF0YSgpLHRoaXMuc3Vic2NyaWJlVG9BcHBBY3RpdmUoKSx0aGlzLnN1YnNjcmliZVRvRGVtb0xpbWl0TW9kYWwoKSx3aW5kb3cuZnJhbWVFbGVtZW50JiYod2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3Np''@;'; put 'put ''dGlvbjphYnNvbHV0ZSIpLHdpbmRvdy5mcmFtZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhbGxvd2Z1bGxzY3JlZW4iLCIiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCIwIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hcmdpbmhl''@;'; put 'put ''aWdodCIsIjAiKSx3aW5kb3cuZnJhbWVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWFyZ2lud2lkdGgiLCIwIiksd2luZG93LmZyYW1lRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsImF1dG8iKSx3aW5kb3cuZm9jdXMoKSl9cGFyc2VEY0FkYXB0ZXJTZXR0aW5ncygpe2NvbnN0IGE9''@;'; put 'put ''ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2FzanMiKTtpZighYSlyZXR1cm4gdGhpcy5saWNlbmNlU2VydmljZS5kZWFjdGl2YXRlQXBwKCksdm9pZCBzZXRUaW1lb3V0KCgpPT57dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCwiUGxlYXNlIG1ha2Ugc3VyZSAnU0FTSlMn''@;'; put 'put ''IHRhZyB3aXRoIGNvbmZpZyBhdHRyaWJ1dGVzIGlzIGFkZGVkIHRvIGluZGV4Lmh0bWwiLG51bGwsIlNBU2pzIENvbmZpZyBub3QgZm91bmQiKX0pO2NvbnN0IGQ9Zj0+YS5nZXRBdHRyaWJ1dGUoZil8fHZvaWQgMCxoPXtzZXJ2ZXJVcmw6ZCgic2VydmVyVXJsIil8fCIiLGFwcExvYzpkKCJh''@;'; put 'put ''cHBMb2MiKXx8IiIsc2VydmVyVHlwZTpkKCJzZXJ2ZXJUeXBlIiksbG9naW5NZWNoYW5pc206ZCgibG9naW5NZWNoYW5pc20iKXx8IiIsYWRtaW5Hcm91cDpkKCJhZG1pbkdyb3VwIil8fCIiLGRjUGF0aDpkKCJkY1BhdGgiKXx8IiIsZGVidWc6InRydWUiPT09ZCgiZGVidWciKXx8ITEsdXNl''@;'; put 'put ''Q29tcHV0ZUFwaTp0aGlzLnBhcnNlQ29tcHV0ZUFwaShkKCJ1c2VDb21wdXRlQXBpIikpLGNvbnRleHROYW1lOmQoImNvbnRleHROYW1lIil8fCIiLGhvdExpY2VuY2VLZXk6ZCgiaG90TGljZW5jZUtleSIpfHwiIn07dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz1oLHRoaXMuYXBwU3RvcmVTZXJ2''@;'; put 'put ''aWNlLnNldERjQWRhcHRlclNldHRpbmdzKGgpLHRoaXMuYXBwU2VydmljZS5zYXNTZXJ2aWNlSW5pdCgpfWxpY2VuY2VQcm9ibGVtRGV0YWlscyhhKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGEpfXBhcnNlQ29tcHV0ZUFwaShhKXtyZXR1cm4gdm9pZCAwPT09YXx8InVuZGVmaW5lZCI9''@;'; put 'put ''PT1hfHwibnVsbCI9PT1hP251bGw6InRydWUiPT09YXx8ITF9c3Vic2NyaWJlVG9EZW1vTGltaXRNb2RhbCgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uRGVtb0xpbWl0TW9kYWxTaG93LnN1YnNjcmliZShhPT57dGhpcy5kZW1vTGltaXROb3RpY2U9e29wZW46ITAsZmVhdHVyZU5hbWU6YX19KX1z''@;'; put 'put ''dWJzY3JpYmVUb0xpY2Vuc2VFdmVudHMoKXt0aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwRnJlZVRpZXIuc3Vic2NyaWJlKGE9Pnt0aGlzLmZyZWVUaWVyQmFubmVyPWF9KSx0aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2Vuc2VFeHBpcmVzSW5EYXlzLnN1YnNjcmliZShhPT57YSYmYTw9MTQmJih0''@;'; put 'put ''aGlzLmxpY2Vuc2VFeHBpcmluZ0RheXM9YSl9KSx0aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwT3ZlckNhcGFjaXR5LnN1YnNjcmliZShhPT57dGhpcy5hcHBPdmVyQ2FwYWNpdHk9YX0pfXN1YnNjcmliZVRvQXBwQWN0aXZlKCl7dGhpcy5saWNlbmNlU2VydmljZS5pc0FwcEFjdGl2YXRlZC5z''@;'; put 'put ''dWJzY3JpYmUoYT0+e3RoaXMuYXBwQWN0aXZlPWF9KX1zdWJzY3JpYmVUb1Nob3dBYm9ydE1vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub25TaG93QWJvcnRNb2RhbC5zdWJzY3JpYmUoYT0+e2EuaWQ9dGhpcy5zYXNqc0Fib3J0cy5sZW5ndGgrMSx0aGlzLnNhc2pzQWJvcnRzLnB1c2goYSks''@;'; put 'put ''dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpfSl9c3Vic2NyaWJlVG9TdGFydHVwRGF0YSgpe3RoaXMuZXZlbnRTZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5zdGFydHVwRGF0YUxvYWRlZD0hMH0pfXN1YnNjcmliZVRvUmVxdWVzdHNNb2RhbCgpe3RoaXMu''@;'; put 'put ''ZXZlbnRTZXJ2aWNlLm9uUmVxdWVzdHNNb2RhbE9wZW4uc3Vic2NyaWJlKGE9Pnt0aGlzLnJlcXVlc3RzTW9kYWw9ITB9KX1jbG9zZUFib3J0TW9kYWwoYSl7bGV0IGQ9dGhpcy5zYXNqc0Fib3J0cy5maW5kSW5kZXgoaD0+aC5pZD09PWEpO3RoaXMuc2FzanNBYm9ydHMuc3BsaWNlKGQsMSl9''@;'; put 'put ''dG9nZ2xlU2lkZWJhcigpe3RoaXMuZXZlbnRTZXJ2aWNlLnRvZ2dsZVNpZGViYXIoKX1pc01haW5Sb3V0ZShhKXtyZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKGEpfW9wZW5MaWNlbmNpbmdQYWdlKCl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL2xpY2Vuc2luZy91cGRhdGUi''@;'; put 'put ''KX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShQSSksSmUoQTApLEplKEpzKSxKZShPYyksSmUobWQpLEplKERsKSxKZSh0OCksSmUoY2EpLEplKE5pKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJt''@;'; put 'put ''eS1hcHAiXV0sZGVjbHM6MjYsdmFyczoxNyxjb25zdHM6W1sxLCJtYWluLWNvbnRhaW5lciJdLFs0LCJuZ0lmIl0sWzEsImFwcC1oZWFkZXIiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIG1sLTEwIGQtZmxleCBjbHItanVzdGlmeS1jb250''@;'; put 'put ''ZW50LWNlbnRlciBjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJsb2dvIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsiaHJlZiIsIiMiLCJjbGFzcyIsIm5hdi1saW5rIiwzLCJyb3V0ZXJMaW5rIiw0LCJuZ0lmIl0sWyJjbGFzcyIs''@;'; put 'put ''InN1Ym5hdiIsNCwibmdJZiJdLFszLCJvcGVuZWRDaGFuZ2UiLCJvcGVuZWQiXSxbMywiZGF0YSIsImZvcmNlUmVsb2FkIiwib25Db25maXJtTW9kYWxDbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2Rh''@;'; put 'put ''bE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJzaXplIiwiMjAiLCJzaGFwZSIsImxvY2siXSxbMSwibW9kYWwtYm9keSJdLFsiY2xhc3MiLCJhcHAtbG9hZGluZyIsNCwibmdJZiJdLFsiY2xh''@;'; put 'put ''c3MiLCJhbGVydCBhbGVydC1hcHAtbGV2ZWwgYWxlcnQtd2FybmluZyIsImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDQsIm5nSWYiXSxbImNsYXNzIiwiYWxlcnQgYWxlcnQtYXBwLWxldmVsIGFsZXJ0LWRhbmdlciIsImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQi''@;'; put 'put ''LDQsIm5nSWYiXSxbImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDEsImFsZXJ0IiwiYWxlcnQtYXBwLWxldmVsIiwiYWxlcnQtd2FybmluZyJdLFsxLCJhbGVydC1pdGVtcyJdLFsxLCJhbGVydC1pdGVtIiwic3RhdGljIl0sWzEsImFsZXJ0LWljb24td3JhcHBlciJdLFsic2hh''@;'; put 'put ''cGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwxLCJhbGVydC1pY29uIl0sWzEsImFsZXJ0LXRleHQiXSxbImNsYXNzZXMiLCJjb2xvci13aGl0ZSJdLFsicm91dGVyTGluayIsIi9saWNlbnNpbmcvdXBkYXRlIiwxLCJ1cGRhdGUta2V5Il0sWzEsInVwZGF0ZS1rZXkiLCJjdXJzb3ItcG9pbnRlciIs''@;'; put 'put ''MywiY2xpY2siXSxbImlkIiwiZGVtby1iYW5uZXIiLCJyb2xlIiwiYWxlcnQiLDEsImFsZXJ0IiwiYWxlcnQtYXBwLWxldmVsIiwiYWxlcnQtZGFuZ2VyIl0sWyJyb3V0ZXJMaW5rIiwiL2xpY2Vuc2luZy91cGRhdGUiLCJjbGFzcyIsInVwZGF0ZS1rZXkiLDQsIm5nSWYiXSxbInR5cGUiLCJi''@;'; put 'put ''dXR0b24iLDEsImN1cnNvci1wb2ludGVyIiwic2VsZWN0LW5vbmUiLCJtbC0xMCIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsMywiY2xpY2siXSxbInNpemUiLCIyNCIsInNoYXBlIiwidHJlZS12aWV3Il0sWyJocmVmIiwi''@;'; put 'put ''IyIsMSwibmF2LWxpbmsiLDMsInJvdXRlckxpbmsiXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvZGMtbG9nby1zdmciLDEsIndpdGhvdXQtdGV4dCIsImQtYmxvY2siLCJkLW1kLW5vbmUiXSxbInNyYyIs''@;'; put 'put ''Ii9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvZGF0YWNvbnRyb2xsZXItc3ZnIiwxLCJ3aXRoLXRleHQiLCJkLW5vbmUiLCJkLW1kLWJsb2NrIl0sWzEsImNsci1pY29uIiwiaGVhZGVyLWxvZ28iLCJtbC0xMCJdLFsxLCJo''@;'; put 'put ''ZWFkZXItbmF2IiwiZC1mbGV4IiwiZC1zbS1ub25lIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLCJhcmlhLWxhYmVsIiwidG9nZ2xlIHNldHRpbmdzIG1lbnUiLDEsIm5hdi1pY29uIiwiY29sb3Itd2hpdGUtaSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xySWZPcGVu''@;'; put 'put ''Il0sWzEsImhlYWRlci1uYXYiLCJkLW5vbmUiLCJkLXNtLWZsZXgiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDEsIm5hdi1saW5rIiwibmF2LXRleHQiLDMsInJvdXRlckxpbmsiXSxbMSwibmF2LWxpbmsiLCJuYXYtdGV4dCIsMywicm91dGVyTGluayJdLFsxLCJuYXYtbGluayIs''@;'; put 'put ''Im5hdi10ZXh0IiwiY3Vyc29yLXBvaW50ZXIiLDMsInJvdXRlckxpbmsiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiXSxbImNsckRyb3Bkb3duSXRlbSIsIiIsMywicm91dGVyTGluayJdLFsxLCJzdWJuYXYiXSxbMSwibmF2Il0sWzEsIm5hdi1pdGVtIl0sWzMsIm9uQ29uZmlybU1v''@;'; put 'put ''ZGFsQ2xpY2siLCJkYXRhIiwiZm9yY2VSZWxvYWQiXSxbMSwiYXBwLWxvYWRpbmciXSxbInNyYyIsIi9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvZGF0YWNvbnRyb2xsZXItc3ZnIiwxLCJsb2FkaW5nLWxvZ28iXSxbImNs''@;'; put 'put ''YXNzIiwic2xpZGVyIiw0LCJuZ0lmIl0sWzEsInNsaWRlciJdLFsxLCJsaW5lIl0sWzEsInN1YmxpbmUiLCJpbmMiXSxbMSwic3VibGluZSIsImRlYyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImRpdiIsMCksZ3QoMSxQamUsNCwzLCJuZy1jb250YWluZXIiLDEpLGdl''@;'; put 'put ''KDIsImhlYWRlciIsMiksZ3QoMyxGamUsMiwwLCJkaXYiLDMpLGdlKDQsImRpdiIsNCksZ3QoNSxOamUsMywyLCJhIiw1KSg2LEhqZSwyLDAsImEiLDEpLG1lKCksZ3QoNyxCamUsMTMsMTAsIm5nLWNvbnRhaW5lciIsMSksWXQoOCwiYXBwLWhlYWRlci1hY3Rpb25zIiksbWUoKSxndCg5LGpq''@;'; put 'put ''ZSwxMSw4LCJuYXYiLDYpKDEwLHpqZSwxLDAsImFwcC1hbGVydHMiLDEpLGdlKDExLCJhcHAtcmVxdWVzdHMtbW9kYWwiLDcpLFdyKCJvcGVuZWRDaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBHcihoLnJlcXVlc3RzTW9kYWwsdil8fChoLnJlcXVlc3RzTW9kYWw9diksdn0pLG1lKCksWXQo''@;'; put 'put ''MTIsImFwcC1leGNlbC1wYXNzd29yZC1tb2RhbCIpLGd0KDEzLFVqZSwxLDAsInJvdXRlci1vdXRsZXQiLDEpLFl0KDE0LCJhcHAtbG9naW4iKSxndCgxNSxaamUsMSwwLCJhcHAtYWxlcnRzIiwxKSgxNixZamUsMSwyLCJhcHAtaW5mby1tb2RhbCIsOCksZ2UoMTcsImNsci1tb2RhbCIsOSks''@;'; put 'put ''V3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIEdyKGguZGVtb0xpbWl0Tm90aWNlLm9wZW4sdil8fChoLmRlbW9MaW1pdE5vdGljZS5vcGVuPXYpLHZ9KSxnZSgxOCwiaDMiLDEwKSxQZSgxOSksWXQoMjAsImNsci1pY29uIiwxMSksbWUoKSxnZSgyMSwiZGl2Iiwx''@;'; put 'put ''MiksUGUoMjIsIiBDb250YWN0ICIpLFl0KDIzLCJjb250YWN0LWxpbmsiKSxQZSgyNCksbWUoKSgpKCksZ3QoMjUsR2plLDMsMSwiZGl2IiwxMykpLDImZCYmKF9lKCksUmUoIm5nSWYiLCFoLnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpKSxfZSgyKSxSZSgibmdJZiIsaC5pc01h''@;'; put 'put ''aW5Sb3V0ZSgidmlldyIpfHxoLmlzTWFpblJvdXRlKCJob21lIikmJiFoLnJvdXRlci51cmwuaW5jbHVkZXMoImxpY2Vuc2luZyIpKSxfZSgyKSxSZSgibmdJZiIsIWgucm91dGVyLnVybC5pbmNsdWRlcygiZGVwbG95IikpLF9lKCksUmUoIm5nSWYiLGgucm91dGVyLnVybC5pbmNsdWRlcygi''@;'; put 'put ''ZGVwbG95IikpLF9lKCksUmUoIm5nSWYiLCFoLnJvdXRlci51cmwuaW5jbHVkZXMoImRlcGxveSIpJiYhaC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJsaWNlbnNpbmciKSksX2UoMiksUmUoIm5nSWYiLGgucm91dGVyLnVybC5pbmNsdWRlcygic3VibWl0dGVkIil8fGgucm91dGVyLnVybC5pbmNs''@;'; put 'put ''dWRlcygiYXBwcm92ZSIpfHxoLnJvdXRlci51cmwuaW5jbHVkZXMoImhpc3RvcnkiKSksX2UoKSxSZSgibmdJZiIsIWguZXJyVG9wKSxfZSgpLFlyKCJvcGVuZWQiLGgucmVxdWVzdHNNb2RhbCksX2UoMiksUmUoIm5nSWYiLGguc3RhcnR1cERhdGFMb2FkZWQpLF9lKDIpLFJlKCJuZ0lmIixo''@;'; put 'put ''LmVyclRvcCksX2UoKSxSZSgibmdGb3JPZiIsaC5zYXNqc0Fib3J0cyksX2UoKSxZcigiY2xyTW9kYWxPcGVuIixoLmRlbW9MaW1pdE5vdGljZS5vcGVuKSxSZSgiY2xyTW9kYWxDbG9zYWJsZSIsITApKCJjbHJNb2RhbFNpemUiLCJsZyIpLF9lKDIpLG1yKCIgTG9ja2VkIEZlYXR1cmUgKCIs''@;'; put 'put ''aC5kZW1vTGltaXROb3RpY2UuZmVhdHVyZU5hbWUsIikgIiksX2UoNSksbXIoIiB3aXRoIHlvdXIgc2l0ZSBpZCAoIixoLnN5c3NpdGUudmFsdWUsIikgdG8gYWN0aXZhdGUhICIpLF9lKCksUmUoIm5nSWYiLCFoLnN0YXJ0dXBEYXRhTG9hZGVkKSl9LGRlcGVuZGVuY2llczpbVnMsJGksYzQs''@;'; put 'put ''azAselMsU0JlLEhCZSxqQmUsSFIsWkJlLE5NLFlhLEdzLFBjLGl1LGtoLHc0LEk4LFI4LEpfLGpNLGdqZSxNamVdLHN0eWxlczpbImFwcC1yZXF1ZXN0cy1tb2RhbFtfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDoxMDAwMH1oZWFkZXIuYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudDtjb2xvcjojZmZmfS5sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGltZy53aXRob3V0LXRleHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHh9LmxvZ29bX25nY29udGVudC0lQ09NUCVdICAgaW1nLndpdGgtdGV4dFtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV17d2lkdGg6MjEwcHh9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO21hcmdpbi1sZWZ0OjEwcHh9LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7aGVpZ2h0OjEwMHZoIWltcG9ydGFudDt3aWR0aDoxMDB2dyFpbXBvcnRhbnQ7ei1pbmRleDoxMDU7YmFja2dyb3VuZDojMjEyMTIxODB9''@;'; put 'put ''LmRlbW8tZXhwaXJlZC1ub3RpY2VbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjMwcHg7ei1pbmRleDoxMTA7YmFja2dyb3VuZDojMzE0MzUxfS5k''@;'; put 'put ''ZW1vLWV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBpcmVkLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZTBlMGUwO2ZvbnQtc2l6ZToxNnB4fS5kZW1vLWV4cGlyZWQtbm90aWNlW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIC5leHBpcmVkLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGlyZWQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWlsdG9bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM4ZGM1M2V9Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSAgIC51cGRhdGUta2V5W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiNmZmY7cGFkZGluZzowIDEwcHg7YmFja2dyb3VuZDojMDAwMDAwMjZ9LmFsZXJ0LWljb24td3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRv''@;'; put 'put ''cDowIWltcG9ydGFudH0ubmF2LXRleHRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDoyMHB4fS5zaWRlYmFyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nLWxlZnQ6MTBweH0uc2lkZWJh''@;'; put 'put ''ci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHh9aGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXItYWN0aW9uc1tfbmdjb250ZW50LSVDT01QJV0gICAuZHJv''@;'; put 'put ''cGRvd25bX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnVuc2V0fWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubmF2LWxpbmtbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2NvbG9yOiNmYWZhZmF9aGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGluay5hY3RpdmVbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzYxNzE3ZH0ubm90Zltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMTZhNTdhO2NvbG9yOiNmZmZjZmM7Zm9udC1zaXplOjEycHh9LnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1b''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtfbmdjb250ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1jb2xvcjojNjE3MTdkO2JhY2tncm91bmQtY29sb3I6IzYxNzE3ZDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixi''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yfS5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoxMDB2aCFpbXBvcnRhbnR9Lm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudC1h''@;'; put 'put ''cmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjByZW0gMXJlbSAxcmVtfS5jb250ZW50LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ei1pbmRleDowIWltcG9ydGFudH0ubmF2QmFyUmVzcFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpj''@;'; put 'put ''ZW50ZXI7YmFja2dyb3VuZDojNDk1YTY3O2NvbG9yOiNmZmZ9ICAuaHRJbnZhbGlke2JhY2tncm91bmQ6IzAwMCFpbXBvcnRhbnR9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpeyAgaDJ7Zm9udC1zaXplOi43cmVtIWltcG9ydGFudH0gIGgze2ZvbnQtc2l6ZTouN3JlbX19''@;'; put 'put ''ICAubmF2LWxpbmt7cGFkZGluZzowcmVtIDFyZW19ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLmJ0bi1wcmltYXJ5IC5idG4sICAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5idG4uYnRuLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxO2NvbG9y''@;'; put 'put ''OiNmZmZ9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRuLXByaW1hcnkgLmJ0biwgICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRuLmJ0bi1wcmltYXJ5e2JvcmRlci1jb2xvcjojNWU3MzgyO2JhY2tncm91bmQtY29sb3I6IzVlNzM4Mjtjb2xvcjojZmZmfSAgYm9keVtjZHMtdGhlbWU9ZGFy''@;'; put 'put ''a10gLmJ0bi1wcmltYXJ5IC5idG4gY2xyLWljb24sICAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmJ0bi1wcmltYXJ5IC5idG4gY2RzLWljb24sICAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmJ0bi5idG4tcHJpbWFyeSBjbHItaWNvbiwgICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuYnRuLmJ0bi1w''@;'; put 'put ''cmltYXJ5IGNkcy1pY29ue2NvbG9yOiNmZmZ9ICAuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCwgICAuYnRuLmJ0bi1wcmltYXJ5OmRpc2FibGVke29wYWNpdHk6LjY1fSAgLmJ0bntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFp''@;'; put 'put ''bXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2JvcmRlcjoxcHggc29saWQ7bWluLXdpZHRoOjNyZW07bWF4LXdpZHRoOjE1cmVtO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5z''@;'; put 'put ''Zm9ybTp1cHBlcmNhc2U7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuNXJlbTtsZXR0ZXItc3BhY2luZzouMTJlbTtmb250LXNpemU6LjVyZW07Zm9udC13ZWlnaHQ6NTAwO2hlaWdodDoxLjVyZW07cGFkZGluZzowIC41cmVtfSAgLmJ0bi5idG4tb3V0bGluZTpob3Zlcnti''@;'; put 'put ''b3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiM0OTVhNjc7Y29sb3I6I2ZmZn0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5idG4uYnRuLWljb24uYnRuLWRpbW1lZHtjb2xvcjojNzI5NWFlfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5idG4uYnRuLWljb24uYnRuLWRpbW1l''@;'; put 'put ''ZHtjb2xvcjojMzE0MzUxfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5idG4uYnRuLW91dGxpbmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMzE0MzUxfSAgLmh0TW9iaWxlRWRpdG9yQ29udGFpbmVyIC5pbnB1dHMgdGV4dGFyZWF7''@;'; put 'put ''Zm9udC1zaXplOjEzcHQ7Ym9yZGVyOjJweCBzb2xpZCAjNDg1OTY3O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JveC1zaGFkb3c6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIDAgMCAxNHB4O3BhZGRpbmc6N3B0O3dpZHRoOjI5MHB4fSAgLmh0TW9i''@;'; put 'put ''aWxlRWRpdG9yQ29udGFpbmVyIC5wb3NpdGlvbkNvbnRyb2xze3dpZHRoOjMzM3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjVwdDt0b3A6NTBweDtib3R0b206MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0gIC5odE1vYmlsZUVkaXRvckNvbnRhaW5lci5hY3RpdmV7''@;'; put 'put ''ZGlzcGxheTpibG9jaztoZWlnaHQ6MTIwcHg7d2lkdGg6MzUwcHh9ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLnd0Qm9yZGVye2JhY2tncm91bmQtY29sb3I6IzQ5NWE2NyFpbXBvcnRhbnR9ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLmh0X21hc3RlciB0cjpudGgtb2YtdHlwZShvZGQpPnRk''@;'; put 'put ''e2ZpbHRlcjpicmlnaHRuZXNzKC45NSl9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuaHRfbWFzdGVyIHRyOm50aC1vZi10eXBlKG9kZCk+dGR7ZmlsdGVyOmJyaWdodG5lc3MoMS4yKX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5odF9tYXN0ZXI6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29u''@;'; put 'put ''dGFibGUgdGJvZHkgdHIgdGgsICAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmh0X21hc3Rlcjpub3QoLmVtcHR5Q29sdW1ucyl+LmhhbmRzb250YWJsZTpub3QoLmh0X2Nsb25lX3RvcCkgdGhlYWQgdHIgdGg6Zmlyc3QtY2hpbGR7YmFja2dyb3VuZC1jb2xvcjojMmQ0MDQ4O2JvcmRlci1jb2xv''@;'; put 'put ''cjojNjk3Yzg1fSAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSB0ZHtib3JkZXItY29sb3I6IzY5N2M4NX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGgsICAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmhhbmRzb250YWJsZSB0''@;'; put 'put ''cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItY29sb3I6IzY5N2M4NX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgLmhhbmRzb250YWJsZS5odF9jbG9uZV90b3AgLnd0SGlkZXJ7Ym9yZGVyLWNvbG9yOiM2OTdjODV9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5jaGFuZ2VUeXBle2JhY2tncm91bmQtY29sb3I6IzNjNTY2Mjtib3JkZXItY29sb3I6IzY5N2M4NX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGVJbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOiM3MDhiOTh9ICAuaGFuZHNvbnRhYmxlIC5oYW5kc29udGFibGUuaHRfY2xv''@;'; put 'put ''bmVfdG9wIC53dEhpZGVye3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjA7Ym9yZGVyLWJvdHRvbTozcHggc29saWQgI2Q2ZDNkM30gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuY29udGVudC1jb250YWluZXJ7YmFja2dyb3VuZDojZjVmNmZmfSAgLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFn''@;'; put 'put ''cmlkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOi4xMjVyZW07bWFyZ2luOjA7bWFyZ2luLXRvcDoxcmVtO21heC13aWR0aDoxMDAlO3dpZHRoOjEwMCU7cGFk''@;'; put 'put ''ZGluZzoxNXB4IDE1cHggNTBweH0gIC5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290LCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1mb290e2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtoZWlnaHQ6MS41cmVtO3BhZGRpbmc6MCAuNXJlbTtsaW5lLWhlaWdodDpjYWxjKDEu''@;'; put 'put ''NXJlbSAtIDNweCk7Zm9udC1zaXplOi40NTgzM3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjB9ICAuZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZC1m''@;'; put 'put ''b290ZXJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MzBweDt0b3A6MXB4fSAgLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkLCAgIC5kYXRhZ3JpZC1oaXN0b3J5IC5kYXRhZ3JpZCAuZGF0YWdyaWQtaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJv''@;'; put 'put ''dHRvbToxcHggc29saWQgI2NjY30gIC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDttYXJnaW4tdG9wOi4wODMzMzNyZW07ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOi41cmVtIDA7Ym9yZGVyOjFweCBzb2xpZCAjY2Nj''@;'; put 'put ''O2JveC1zaGFkb3c6MCAxcHggLjEyNXJlbSAjNzM3MzczNDA7bWluLXdpZHRoOjVyZW07bWF4LXdpZHRoOjE1cmVtO2JvcmRlci1yYWRpdXM6LjEyNXJlbTt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwMDB9ICAudGFibGV7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlcjoxcHgg''@;'; put 'put ''c29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowO21hcmdpbjowO21hcmdpbi10b3A6MXJlbTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfSAgLnRhYmxlIHRoe2ZvbnQtc2l6ZTouNDU4MzNyZW07Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4wM2VtO3ZlcnRpY2FsLWFs''@;'; put 'put ''aWduOmJvdHRvbTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0gIC5tb2RhbC1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2U0ZTRlNDtwYWRkaW5nOjAgMCAuNXJlbTttYXJnaW4tYm90dG9tOjFyZW19ICAubWFpbi1jb250YWlu''@;'; put 'put ''ZXIgLmNvbnRlbnQtY29udGFpbmVye21pbi1oZWlnaHQ6MHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5hcHAtbG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICAubG9hZGluZy1sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6NDAwcHg7d2lkdGg6MTAwJX1AbWVkaWEgc2NyZWVuIGFu''@;'; put 'put ''ZCAobWF4LXdpZHRoOiA3NjhweCl7Lm5hdkJhclJlc3BbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOiM0OTVhNjc7Y29sb3I6I2ZmZn0ubWFpbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLnN1Yi1u''@;'; put 'put ''YXYuY2xyLW5hdi1sZXZlbC0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1haW4tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMVtfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMltfbmdjb250ZW50LSVDT01QJV0gICAubmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGlua1tfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17cGFkZGluZzowIC41cmVtIDAgMXJlbTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2JvcmRlci1yYWRpdXM6LjEyNXJlbSAwIDAgLjEyNXJlbTtjb2xvcjojOTVjODRifS5jYXJkLWJsb2NrW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSwgLmNhcmQtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMCAwfS5tYWluLWNvbnRhaW5lcltfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudC1jb250YWluZXJbX25nY29udGVudC1jMF1bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLmNvbnRlbnQtYXJlYVtfbmdjb250ZW50LWMwXVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowcmVtfX0iXX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gXzBlKGwpe3JldHVybiBuZXcgVW4oM2UzLCExKX1mdW5jdGlvbiBEbShsKXtzd2l0Y2gobC5sZW5ndGgpe2Nhc2Ug''@;'; put 'put ''MDpyZXR1cm4gbmV3IGFNO2Nhc2UgMTpyZXR1cm4gbFswXTtkZWZhdWx0OnJldHVybiBuZXcgQmxlKGwpfX1mdW5jdGlvbiBiMGUobCxjLGE9bmV3IE1hcCxkPW5ldyBNYXApe2NvbnN0IGg9W10sZj1bXTtsZXQgdj0tMSxTPW51bGw7aWYoYy5mb3JFYWNoKFY9Pntjb25zdCBRPVYuZ2V0KCJv''@;'; put 'put ''ZmZzZXQiKSxkZT1RPT12LHBlPWRlJiZTfHxuZXcgTWFwO1YuZm9yRWFjaCgoQ2UsT2UpPT57bGV0IFllPU9lLGV0PUNlO2lmKCJvZmZzZXQiIT09T2Upc3dpdGNoKFllPWwubm9ybWFsaXplUHJvcGVydHlOYW1lKFllLGgpLGV0KXtjYXNlIiEiOmV0PWEuZ2V0KE9lKTticmVhaztjYXNlIHU0''@;'; put 'put ''OmV0PWQuZ2V0KE9lKTticmVhaztkZWZhdWx0OmV0PWwubm9ybWFsaXplU3R5bGVWYWx1ZShPZSxZZSxldCxoKX1wZS5zZXQoWWUsZXQpfSksZGV8fGYucHVzaChwZSksUz1wZSx2PVF9KSxoLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiB2emUobCl7cmV0dXJuIG5ldyBVbigzNTAyLCExKX0oKTty''@;'; put 'put ''ZXR1cm4gZn1mdW5jdGlvbiBFWShsLGMsYSxkKXtzd2l0Y2goYyl7Y2FzZSJzdGFydCI6bC5vblN0YXJ0KCgpPT5kKGEmJlRZKGEsInN0YXJ0IixsKSkpO2JyZWFrO2Nhc2UiZG9uZSI6bC5vbkRvbmUoKCk9PmQoYSYmVFkoYSwiZG9uZSIsbCkpKTticmVhaztjYXNlImRlc3Ryb3kiOmwub25E''@;'; put 'put ''ZXN0cm95KCgpPT5kKGEmJlRZKGEsImRlc3Ryb3kiLGwpKSl9fWZ1bmN0aW9uIFRZKGwsYyxhKXtjb25zdCBmPWtZKGwuZWxlbWVudCxsLnRyaWdnZXJOYW1lLGwuZnJvbVN0YXRlLGwudG9TdGF0ZSxjfHxsLnBoYXNlTmFtZSxhLnRvdGFsVGltZT8/bC50b3RhbFRpbWUsISFhLmRpc2FibGVk''@;'; put 'put ''KSx2PWwuX2RhdGE7cmV0dXJuIG51bGwhPXYmJihmLl9kYXRhPXYpLGZ9ZnVuY3Rpb24ga1kobCxjLGEsZCxoPSIiLGY9MCx2KXtyZXR1cm57ZWxlbWVudDpsLHRyaWdnZXJOYW1lOmMsZnJvbVN0YXRlOmEsdG9TdGF0ZTpkLHBoYXNlTmFtZTpoLHRvdGFsVGltZTpmLGRpc2FibGVkOiEhdn19''@;'; put 'put ''ZnVuY3Rpb24gRGQobCxjLGEpe2xldCBkPWwuZ2V0KGMpO3JldHVybiBkfHxsLnNldChjLGQ9YSksZH1mdW5jdGlvbiB5MGUobCl7Y29uc3QgYz1sLmluZGV4T2YoIjoiKTtyZXR1cm5bbC5zdWJzdHJpbmcoMSxjKSxsLnNsaWNlKGMrMSldfWNvbnN0IEF6ZT10eXBlb2YgZG9jdW1lbnQ+InUi''@;'; put 'put ''P251bGw6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Z1bmN0aW9uIEFZKGwpe2NvbnN0IGM9bC5wYXJlbnROb2RlfHxsLmhvc3R8fG51bGw7cmV0dXJuIGM9PT1BemU/bnVsbDpjfWxldCBWOD1udWxsLHcwZT0hMTtmdW5jdGlvbiBDMGUobCxjKXtmb3IoO2M7KXtpZihjPT09bClyZXR1cm4h''@;'; put 'put ''MDtjPUFZKGMpfXJldHVybiExfWZ1bmN0aW9uIFMwZShsLGMsYSl7aWYoYSlyZXR1cm4gQXJyYXkuZnJvbShsLnF1ZXJ5U2VsZWN0b3JBbGwoYykpO2NvbnN0IGQ9bC5xdWVyeVNlbGVjdG9yKGMpO3JldHVybiBkP1tkXTpbXX1sZXQgRFk9KCgpPT57Y2xhc3MgbHt2YWxpZGF0ZVN0eWxlUHJv''@;'; put 'put ''cGVydHkoYSl7cmV0dXJuIGZ1bmN0aW9uIEl6ZShsKXtWOHx8KFY4PWZ1bmN0aW9uIFJ6ZSgpe3JldHVybiB0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50LmJvZHk6bnVsbH0oKXx8e30sdzBlPSEhVjguc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIFY4LnN0eWxlKTtsZXQgYz0hMDty''@;'; put 'put ''ZXR1cm4gVjguc3R5bGUmJiFmdW5jdGlvbiBEemUobCl7cmV0dXJuImVia2l0Ij09bC5zdWJzdHJpbmcoMSw2KX0obCkmJihjPWwgaW4gVjguc3R5bGUsIWMmJncwZSYmKGM9IldlYmtpdCIrbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStsLnNsaWNlKDEpaW4gVjguc3R5bGUpKSxjfShhKX1t''@;'; put 'put ''YXRjaGVzRWxlbWVudChhLGQpe3JldHVybiExfWNvbnRhaW5zRWxlbWVudChhLGQpe3JldHVybiBDMGUoYSxkKX1nZXRQYXJlbnRFbGVtZW50KGEpe3JldHVybiBBWShhKX1xdWVyeShhLGQsaCl7cmV0dXJuIFMwZShhLGQsaCl9Y29tcHV0ZVN0eWxlKGEsZCxoKXtyZXR1cm4gaHx8IiJ9YW5p''@;'; put 'put ''bWF0ZShhLGQsaCxmLHYsUz1bXSxWKXtyZXR1cm4gbmV3IGFNKGgsZil9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCk7''@;'; put 'put ''Y2xhc3MgSVl7c3RhdGlje3RoaXMuTk9PUD1uZXcgRFl9fWNsYXNzIFJZe31jb25zdCBPemU9MWUzLExZPSJuZy1lbnRlciIsVlI9Im5nLWxlYXZlIixCUj0ibmctdHJpZ2dlciIsalI9Ii5uZy10cmlnZ2VyIix4MGU9Im5nLWFuaW1hdGluZyIsT1k9Ii5uZy1hbmltYXRpbmciO2Z1bmN0aW9u''@;'; put 'put ''IFM0KGwpe2lmKCJudW1iZXIiPT10eXBlb2YgbClyZXR1cm4gbDtjb25zdCBjPWwubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0dXJuIWN8fGMubGVuZ3RoPDI/MDpQWShwYXJzZUZsb2F0KGNbMV0pLGNbMl0pfWZ1bmN0aW9uIFBZKGwsYyl7cmV0dXJuInMiPT09Yz9sKk96ZTpsfWZ1''@;'; put 'put ''bmN0aW9uIHpSKGwsYyxhKXtyZXR1cm4gbC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKT9sOmZ1bmN0aW9uIEZ6ZShsLGMsYSl7bGV0IGgsZj0wLHY9IiI7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBTPWwubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpKD86XHMrKC0/W1wuXGRdKyko''@;'; put 'put ''bT9zKSk/KD86XHMrKFstYS16XSsoPzpcKC4rP1wpKT8pKT8kL2kpO2lmKG51bGw9PT1TKXJldHVybiBjLnB1c2goXzBlKCkpLHtkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiIifTtoPVBZKHBhcnNlRmxvYXQoU1sxXSksU1syXSk7Y29uc3QgVj1TWzNdO251bGwhPVYmJihmPVBZKHBhcnNl''@;'; put 'put ''RmxvYXQoViksU1s0XSkpO2NvbnN0IFE9U1s1XTtRJiYodj1RKX1lbHNlIGg9bDtpZighYSl7bGV0IFM9ITEsVj1jLmxlbmd0aDtoPDAmJihjLnB1c2goZnVuY3Rpb24gcWplKCl7cmV0dXJuIG5ldyBVbigzMTAwLCExKX0oKSksUz0hMCksZjwwJiYoYy5wdXNoKGZ1bmN0aW9uIEtqZSgpe3Jl''@;'; put 'put ''dHVybiBuZXcgVW4oMzEwMSwhMSl9KCkpLFM9ITApLFMmJmMuc3BsaWNlKFYsMCxfMGUoKSl9cmV0dXJue2R1cmF0aW9uOmgsZGVsYXk6ZixlYXNpbmc6dn19KGwsYyxhKX1mdW5jdGlvbiBrMyhsLGMsYSl7Yy5mb3JFYWNoKChkLGgpPT57Y29uc3QgZj1OWShoKTthJiYhYS5oYXMoaCkmJmEu''@;'; put 'put ''c2V0KGgsbC5zdHlsZVtmXSksbC5zdHlsZVtmXT1kfSl9ZnVuY3Rpb24gQjgobCxjKXtjLmZvckVhY2goKGEsZCk9Pntjb25zdCBoPU5ZKGQpO2wuc3R5bGVbaF09IiJ9KX1mdW5jdGlvbiB6TShsKXtyZXR1cm4gQXJyYXkuaXNBcnJheShsKT8xPT1sLmxlbmd0aD9sWzBdOmZ1bmN0aW9uIFNE''@;'; put 'put ''ZShsLGM9bnVsbCl7cmV0dXJue3R5cGU6bnMuU2VxdWVuY2Usc3RlcHM6bCxvcHRpb25zOmN9fShsKTpsfWNvbnN0IEZZPW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIFQwZShsKXtsZXQgYz1bXTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2xldCBhO2Zvcig7''@;'; put 'put ''YT1GWS5leGVjKGwpOyljLnB1c2goYVsxXSk7RlkubGFzdEluZGV4PTB9cmV0dXJuIGN9ZnVuY3Rpb24gVU0obCxjLGEpe2NvbnN0IGQ9YCR7bH1gLGg9ZC5yZXBsYWNlKEZZLChmLHYpPT57bGV0IFM9Y1t2XTtyZXR1cm4gbnVsbD09UyYmKGEucHVzaChmdW5jdGlvbiBKamUobCl7cmV0dXJu''@;'; put 'put ''IG5ldyBVbigzMDAzLCExKX0oKSksUz0iIiksUy50b1N0cmluZygpfSk7cmV0dXJuIGg9PWQ/bDpofWNvbnN0IFZ6ZT0vLSsoW2EtejAtOV0pL2c7ZnVuY3Rpb24gTlkobCl7cmV0dXJuIGwucmVwbGFjZShWemUsKC4uLmMpPT5jWzFdLnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIElkKGwsYyxh''@;'; put 'put ''KXtzd2l0Y2goYy50eXBlKXtjYXNlIG5zLlRyaWdnZXI6cmV0dXJuIGwudmlzaXRUcmlnZ2VyKGMsYSk7Y2FzZSBucy5TdGF0ZTpyZXR1cm4gbC52aXNpdFN0YXRlKGMsYSk7Y2FzZSBucy5UcmFuc2l0aW9uOnJldHVybiBsLnZpc2l0VHJhbnNpdGlvbihjLGEpO2Nhc2UgbnMuU2VxdWVuY2U6''@;'; put 'put ''cmV0dXJuIGwudmlzaXRTZXF1ZW5jZShjLGEpO2Nhc2UgbnMuR3JvdXA6cmV0dXJuIGwudmlzaXRHcm91cChjLGEpO2Nhc2UgbnMuQW5pbWF0ZTpyZXR1cm4gbC52aXNpdEFuaW1hdGUoYyxhKTtjYXNlIG5zLktleWZyYW1lczpyZXR1cm4gbC52aXNpdEtleWZyYW1lcyhjLGEpO2Nhc2UgbnMu''@;'; put 'put ''U3R5bGU6cmV0dXJuIGwudmlzaXRTdHlsZShjLGEpO2Nhc2UgbnMuUmVmZXJlbmNlOnJldHVybiBsLnZpc2l0UmVmZXJlbmNlKGMsYSk7Y2FzZSBucy5BbmltYXRlQ2hpbGQ6cmV0dXJuIGwudmlzaXRBbmltYXRlQ2hpbGQoYyxhKTtjYXNlIG5zLkFuaW1hdGVSZWY6cmV0dXJuIGwudmlzaXRB''@;'; put 'put ''bmltYXRlUmVmKGMsYSk7Y2FzZSBucy5RdWVyeTpyZXR1cm4gbC52aXNpdFF1ZXJ5KGMsYSk7Y2FzZSBucy5TdGFnZ2VyOnJldHVybiBsLnZpc2l0U3RhZ2dlcihjLGEpO2RlZmF1bHQ6dGhyb3cgZnVuY3Rpb24gUWplKGwpe3JldHVybiBuZXcgVW4oMzAwNCwhMSl9KCl9fWZ1bmN0aW9uIEhZ''@;'; put 'put ''KGwsYyl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGwpW2NdfWNvbnN0IHp6ZT1uZXcgU2V0KFsid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwibGVmdCIsInRvcCIsImJvdHRvbSIsInJpZ2h0IiwiZm9udFNpemUi''@;'; put 'put ''LCJvdXRsaW5lV2lkdGgiLCJvdXRsaW5lT2Zmc2V0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdSaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsImJvcmRl''@;'; put 'put ''cldpZHRoIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJ0ZXh0SW5kZW50IiwicGVyc3BlY3RpdmUiXSk7Y2xhc3MgazBlIGV4dGVuZHMgUll7bm9ybWFsaXplUHJvcGVydHlOYW1lKGMsYSl7cmV0dXJu''@;'; put 'put ''IE5ZKGMpfW5vcm1hbGl6ZVN0eWxlVmFsdWUoYyxhLGQsaCl7bGV0IGY9IiI7Y29uc3Qgdj1kLnRvU3RyaW5nKCkudHJpbSgpO2lmKHp6ZS5oYXMoYSkmJjAhPT1kJiYiMCIhPT1kKWlmKCJudW1iZXIiPT10eXBlb2YgZClmPSJweCI7ZWxzZXtjb25zdCBTPWQubWF0Y2goL15bKy1dP1tcZFwu''@;'; put 'put ''XSsoW2Etel0qKSQvKTtTJiYwPT1TWzFdLmxlbmd0aCYmaC5wdXNoKGZ1bmN0aW9uIGV6ZShsLGMpe3JldHVybiBuZXcgVW4oMzAwNSwhMSl9KCkpfXJldHVybiB2K2Z9fWNvbnN0IFVSPSIqIjtjb25zdCBaUj1uZXcgU2V0KFsidHJ1ZSIsIjEiXSksWVI9bmV3IFNldChbImZhbHNlIiwiMCJd''@;'; put 'put ''KTtmdW5jdGlvbiBBMGUobCxjKXtjb25zdCBhPVpSLmhhcyhsKXx8WVIuaGFzKGwpLGQ9WlIuaGFzKGMpfHxZUi5oYXMoYyk7cmV0dXJuKGgsZik9PntsZXQgdj1sPT1VUnx8bD09aCxTPWM9PVVSfHxjPT1mO3JldHVybiF2JiZhJiYiYm9vbGVhbiI9PXR5cGVvZiBoJiYodj1oP1pSLmhhcyhs''@;'; put 'put ''KTpZUi5oYXMobCkpLCFTJiZkJiYiYm9vbGVhbiI9PXR5cGVvZiBmJiYoUz1mP1pSLmhhcyhjKTpZUi5oYXMoYykpLHYmJlN9fWNvbnN0IFd6ZT1uZXcgUmVnRXhwKCJzKjpzZWxmcyosPyIsImciKTtmdW5jdGlvbiBWWShsLGMsYSxkKXtyZXR1cm4gbmV3IEd6ZShsKS5idWlsZChjLGEsZCl9''@;'; put 'put ''Y2xhc3MgR3ple2NvbnN0cnVjdG9yKGMpe3RoaXMuX2RyaXZlcj1jfWJ1aWxkKGMsYSxkKXtjb25zdCBoPW5ldyBLemUoYSk7cmV0dXJuIHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoaCksSWQodGhpcyx6TShjKSxoKX1fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShj''@;'; put 'put ''KXtjLmN1cnJlbnRRdWVyeVNlbGVjdG9yPSIiLGMuY29sbGVjdGVkU3R5bGVzPW5ldyBNYXAsYy5jb2xsZWN0ZWRTdHlsZXMuc2V0KCIiLG5ldyBNYXApLGMuY3VycmVudFRpbWU9MH12aXNpdFRyaWdnZXIoYyxhKXtsZXQgZD1hLnF1ZXJ5Q291bnQ9MCxoPWEuZGVwQ291bnQ9MDtjb25zdCBm''@;'; put 'put ''PVtdLHY9W107cmV0dXJuIkAiPT1jLm5hbWUuY2hhckF0KDApJiZhLmVycm9ycy5wdXNoKGZ1bmN0aW9uIHR6ZSgpe3JldHVybiBuZXcgVW4oMzAwNiwhMSl9KCkpLGMuZGVmaW5pdGlvbnMuZm9yRWFjaChTPT57aWYodGhpcy5fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShhKSxTLnR5''@;'; put 'put ''cGU9PW5zLlN0YXRlKXtjb25zdCBWPVMsUT1WLm5hbWU7US50b1N0cmluZygpLnNwbGl0KC9ccyosXHMqLykuZm9yRWFjaChkZT0+e1YubmFtZT1kZSxmLnB1c2godGhpcy52aXNpdFN0YXRlKFYsYSkpfSksVi5uYW1lPVF9ZWxzZSBpZihTLnR5cGU9PW5zLlRyYW5zaXRpb24pe2NvbnN0IFY9''@;'; put 'put ''dGhpcy52aXNpdFRyYW5zaXRpb24oUyxhKTtkKz1WLnF1ZXJ5Q291bnQsaCs9Vi5kZXBDb3VudCx2LnB1c2goVil9ZWxzZSBhLmVycm9ycy5wdXNoKGZ1bmN0aW9uIG56ZSgpe3JldHVybiBuZXcgVW4oMzAwNywhMSl9KCkpfSkse3R5cGU6bnMuVHJpZ2dlcixuYW1lOmMubmFtZSxzdGF0ZXM6''@;'; put 'put ''Zix0cmFuc2l0aW9uczp2LHF1ZXJ5Q291bnQ6ZCxkZXBDb3VudDpoLG9wdGlvbnM6bnVsbH19dmlzaXRTdGF0ZShjLGEpe2NvbnN0IGQ9dGhpcy52aXNpdFN0eWxlKGMuc3R5bGVzLGEpLGg9Yy5vcHRpb25zJiZjLm9wdGlvbnMucGFyYW1zfHxudWxsO2lmKGQuY29udGFpbnNEeW5hbWljU3R5''@;'; put 'put ''bGVzKXtjb25zdCBmPW5ldyBTZXQsdj1ofHx7fTtkLnN0eWxlcy5mb3JFYWNoKFM9PntTIGluc3RhbmNlb2YgTWFwJiZTLmZvckVhY2goVj0+e1QwZShWKS5mb3JFYWNoKFE9Pnt2Lmhhc093blByb3BlcnR5KFEpfHxmLmFkZChRKX0pfSl9KSxmLnNpemUmJmEuZXJyb3JzLnB1c2goZnVuY3Rp''@;'; put 'put ''b24gcnplKGwsYyl7cmV0dXJuIG5ldyBVbigzMDA4LCExKX0oMCxmLnZhbHVlcygpKSl9cmV0dXJue3R5cGU6bnMuU3RhdGUsbmFtZTpjLm5hbWUsc3R5bGU6ZCxvcHRpb25zOmg/e3BhcmFtczpofTpudWxsfX12aXNpdFRyYW5zaXRpb24oYyxhKXthLnF1ZXJ5Q291bnQ9MCxhLmRlcENvdW50''@;'; put 'put ''PTA7Y29uc3QgZD1JZCh0aGlzLHpNKGMuYW5pbWF0aW9uKSxhKSxoPWZ1bmN0aW9uIFV6ZShsLGMpe2NvbnN0IGE9W107cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsP2wuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKGQ9PmZ1bmN0aW9uIFp6ZShsLGMsYSl7aWYoIjoiPT1sWzBdKXtjb25zdCBW''@;'; put 'put ''PWZ1bmN0aW9uIFl6ZShsLGMpe3N3aXRjaChsKXtjYXNlIjplbnRlciI6cmV0dXJuInZvaWQgPT4gKiI7Y2FzZSI6bGVhdmUiOnJldHVybiIqID0+IHZvaWQiO2Nhc2UiOmluY3JlbWVudCI6cmV0dXJuKGEsZCk9PnBhcnNlRmxvYXQoZCk+cGFyc2VGbG9hdChhKTtjYXNlIjpkZWNyZW1lbnQi''@;'; put 'put ''OnJldHVybihhLGQpPT5wYXJzZUZsb2F0KGQpPHBhcnNlRmxvYXQoYSk7ZGVmYXVsdDpyZXR1cm4gYy5wdXNoKGZ1bmN0aW9uIGZ6ZShsKXtyZXR1cm4gbmV3IFVuKDMwMTYsITEpfSgpKSwiKiA9PiAqIn19KGwsYSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFYpcmV0dXJuIHZvaWQgYy5wdXNo''@;'; put 'put ''KFYpO2w9Vn1jb25zdCBkPWwubWF0Y2goL14oXCp8Wy1cd10rKVxzKig8P1s9LV0+KVxzKihcKnxbLVx3XSspJC8pO2lmKG51bGw9PWR8fGQubGVuZ3RoPDQpcmV0dXJuIGEucHVzaChmdW5jdGlvbiBoemUobCl7cmV0dXJuIG5ldyBVbigzMDE1LCExKX0oKSksYztjb25zdCBoPWRbMV0sZj1k''@;'; put 'put ''WzJdLHY9ZFszXTtjLnB1c2goQTBlKGgsdikpLCI8Ij09ZlswXSYmKGghPVVSfHx2IT1VUikmJmMucHVzaChBMGUodixoKSl9KGQsYSxjKSk6YS5wdXNoKGwpLGF9KGMuZXhwcixhLmVycm9ycyk7cmV0dXJue3R5cGU6bnMuVHJhbnNpdGlvbixtYXRjaGVyczpoLGFuaW1hdGlvbjpkLHF1ZXJ5''@;'; put 'put ''Q291bnQ6YS5xdWVyeUNvdW50LGRlcENvdW50OmEuZGVwQ291bnQsb3B0aW9uczpqOChjLm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKGMsYSl7cmV0dXJue3R5cGU6bnMuU2VxdWVuY2Usc3RlcHM6Yy5zdGVwcy5tYXAoZD0+SWQodGhpcyxkLGEpKSxvcHRpb25zOmo4KGMub3B0aW9ucyl9fXZp''@;'; put 'put ''c2l0R3JvdXAoYyxhKXtjb25zdCBkPWEuY3VycmVudFRpbWU7bGV0IGg9MDtjb25zdCBmPWMuc3RlcHMubWFwKHY9PnthLmN1cnJlbnRUaW1lPWQ7Y29uc3QgUz1JZCh0aGlzLHYsYSk7cmV0dXJuIGg9TWF0aC5tYXgoaCxhLmN1cnJlbnRUaW1lKSxTfSk7cmV0dXJuIGEuY3VycmVudFRpbWU9''@;'; put 'put ''aCx7dHlwZTpucy5Hcm91cCxzdGVwczpmLG9wdGlvbnM6ajgoYy5vcHRpb25zKX19dmlzaXRBbmltYXRlKGMsYSl7Y29uc3QgZD1mdW5jdGlvbiBKemUobCxjKXtpZihsLmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpKXJldHVybiBsO2lmKCJudW1iZXIiPT10eXBlb2YgbClyZXR1cm4gQlko''@;'; put 'put ''elIobCxjKS5kdXJhdGlvbiwwLCIiKTtjb25zdCBhPWw7aWYoYS5zcGxpdCgvXHMrLykuc29tZShmPT4ieyI9PWYuY2hhckF0KDApJiYieyI9PWYuY2hhckF0KDEpKSl7Y29uc3QgZj1CWSgwLDAsIiIpO3JldHVybiBmLmR5bmFtaWM9ITAsZi5zdHJWYWx1ZT1hLGZ9Y29uc3QgaD16UihhLGMp''@;'; put 'put ''O3JldHVybiBCWShoLmR1cmF0aW9uLGguZGVsYXksaC5lYXNpbmcpfShjLnRpbWluZ3MsYS5lcnJvcnMpO2EuY3VycmVudEFuaW1hdGVUaW1pbmdzPWQ7bGV0IGgsZj1jLnN0eWxlcz9jLnN0eWxlczpGcyh7fSk7aWYoZi50eXBlPT1ucy5LZXlmcmFtZXMpaD10aGlzLnZpc2l0S2V5ZnJhbWVz''@;'; put 'put ''KGYsYSk7ZWxzZXtsZXQgdj1jLnN0eWxlcyxTPSExO2lmKCF2KXtTPSEwO2NvbnN0IFE9e307ZC5lYXNpbmcmJihRLmVhc2luZz1kLmVhc2luZyksdj1GcyhRKX1hLmN1cnJlbnRUaW1lKz1kLmR1cmF0aW9uK2QuZGVsYXk7Y29uc3QgVj10aGlzLnZpc2l0U3R5bGUodixhKTtWLmlzRW1wdHlT''@;'; put 'put ''dGVwPVMsaD1WfXJldHVybiBhLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHt0eXBlOm5zLkFuaW1hdGUsdGltaW5nczpkLHN0eWxlOmgsb3B0aW9uczpudWxsfX12aXNpdFN0eWxlKGMsYSl7Y29uc3QgZD10aGlzLl9tYWtlU3R5bGVBc3QoYyxhKTtyZXR1cm4gdGhpcy5fdmFsaWRhdGVT''@;'; put 'put ''dHlsZUFzdChkLGEpLGR9X21ha2VTdHlsZUFzdChjLGEpe2NvbnN0IGQ9W10saD1BcnJheS5pc0FycmF5KGMuc3R5bGVzKT9jLnN0eWxlczpbYy5zdHlsZXNdO2ZvcihsZXQgUyBvZiBoKSJzdHJpbmciPT10eXBlb2YgUz9TPT09dTQ/ZC5wdXNoKFMpOmEuZXJyb3JzLnB1c2gobmV3IFVuKDMw''@;'; put 'put ''MDIsITEpKTpkLnB1c2gobmV3IE1hcChPYmplY3QuZW50cmllcyhTKSkpO2xldCBmPSExLHY9bnVsbDtyZXR1cm4gZC5mb3JFYWNoKFM9PntpZihTIGluc3RhbmNlb2YgTWFwJiYoUy5oYXMoImVhc2luZyIpJiYodj1TLmdldCgiZWFzaW5nIiksUy5kZWxldGUoImVhc2luZyIpKSwhZikpZm9y''@;'; put 'put ''KGxldCBWIG9mIFMudmFsdWVzKCkpaWYoVi50b1N0cmluZygpLmluZGV4T2YoInt7Iik+PTApe2Y9ITA7YnJlYWt9fSkse3R5cGU6bnMuU3R5bGUsc3R5bGVzOmQsZWFzaW5nOnYsb2Zmc2V0OmMub2Zmc2V0LGNvbnRhaW5zRHluYW1pY1N0eWxlczpmLG9wdGlvbnM6bnVsbH19X3ZhbGlkYXRl''@;'; put 'put ''U3R5bGVBc3QoYyxhKXtjb25zdCBkPWEuY3VycmVudEFuaW1hdGVUaW1pbmdzO2xldCBoPWEuY3VycmVudFRpbWUsZj1hLmN1cnJlbnRUaW1lO2QmJmY+MCYmKGYtPWQuZHVyYXRpb24rZC5kZWxheSksYy5zdHlsZXMuZm9yRWFjaCh2PT57InN0cmluZyIhPXR5cGVvZiB2JiZ2LmZvckVhY2go''@;'; put 'put ''KFMsVik9Pntjb25zdCBRPWEuY29sbGVjdGVkU3R5bGVzLmdldChhLmN1cnJlbnRRdWVyeVNlbGVjdG9yKSxkZT1RLmdldChWKTtsZXQgcGU9ITA7ZGUmJihmIT1oJiZmPj1kZS5zdGFydFRpbWUmJmg8PWRlLmVuZFRpbWUmJihhLmVycm9ycy5wdXNoKGZ1bmN0aW9uIG96ZShsLGMsYSxkLGgp''@;'; put 'put ''e3JldHVybiBuZXcgVW4oMzAxMCwhMSl9KCkpLHBlPSExKSxmPWRlLnN0YXJ0VGltZSkscGUmJlEuc2V0KFYse3N0YXJ0VGltZTpmLGVuZFRpbWU6aH0pLGEub3B0aW9ucyYmZnVuY3Rpb24gSHplKGwsYyxhKXtjb25zdCBkPWMucGFyYW1zfHx7fSxoPVQwZShsKTtoLmxlbmd0aCYmaC5mb3JF''@;'; put 'put ''YWNoKGY9PntkLmhhc093blByb3BlcnR5KGYpfHxhLnB1c2goZnVuY3Rpb24gWGplKGwpe3JldHVybiBuZXcgVW4oMzAwMSwhMSl9KCkpfSl9KFMsYS5vcHRpb25zLGEuZXJyb3JzKX0pfSl9dmlzaXRLZXlmcmFtZXMoYyxhKXtjb25zdCBkPXt0eXBlOm5zLktleWZyYW1lcyxzdHlsZXM6W10s''@;'; put 'put ''b3B0aW9uczpudWxsfTtpZighYS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MpcmV0dXJuIGEuZXJyb3JzLnB1c2goZnVuY3Rpb24gc3plKCl7cmV0dXJuIG5ldyBVbigzMDExLCExKX0oKSksZDtsZXQgZj0wO2NvbnN0IHY9W107bGV0IFM9ITEsVj0hMSxRPTA7Y29uc3QgZGU9Yy5zdGVwcy5tYXAo''@;'; put 'put ''aHQ9Pntjb25zdCBNdD10aGlzLl9tYWtlU3R5bGVBc3QoaHQsYSk7bGV0IFF0PW51bGwhPU10Lm9mZnNldD9NdC5vZmZzZXQ6ZnVuY3Rpb24gWHplKGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbClyZXR1cm4gbnVsbDtsZXQgYz1udWxsO2lmKEFycmF5LmlzQXJyYXkobCkpbC5mb3JFYWNoKGE9''@;'; put 'put ''PntpZihhIGluc3RhbmNlb2YgTWFwJiZhLmhhcygib2Zmc2V0Iikpe2NvbnN0IGQ9YTtjPXBhcnNlRmxvYXQoZC5nZXQoIm9mZnNldCIpKSxkLmRlbGV0ZSgib2Zmc2V0Iil9fSk7ZWxzZSBpZihsIGluc3RhbmNlb2YgTWFwJiZsLmhhcygib2Zmc2V0Iikpe2NvbnN0IGE9bDtjPXBhcnNlRmxv''@;'; put 'put ''YXQoYS5nZXQoIm9mZnNldCIpKSxhLmRlbGV0ZSgib2Zmc2V0Iil9cmV0dXJuIGN9KE10LnN0eWxlcyksbG49MDtyZXR1cm4gbnVsbCE9UXQmJihmKyssbG49TXQub2Zmc2V0PVF0KSxWPVZ8fGxuPDB8fGxuPjEsUz1TfHxsbjxRLFE9bG4sdi5wdXNoKGxuKSxNdH0pO1YmJmEuZXJyb3JzLnB1''@;'; put 'put ''c2goZnVuY3Rpb24gYXplKCl7cmV0dXJuIG5ldyBVbigzMDEyLCExKX0oKSksUyYmYS5lcnJvcnMucHVzaChmdW5jdGlvbiBsemUoKXtyZXR1cm4gbmV3IFVuKDMyMDAsITEpfSgpKTtjb25zdCBwZT1jLnN0ZXBzLmxlbmd0aDtsZXQgQ2U9MDtmPjAmJmY8cGU/YS5lcnJvcnMucHVzaChmdW5j''@;'; put 'put ''dGlvbiBjemUoKXtyZXR1cm4gbmV3IFVuKDMyMDIsITEpfSgpKTowPT1mJiYoQ2U9MS8ocGUtMSkpO2NvbnN0IE9lPXBlLTEsWWU9YS5jdXJyZW50VGltZSxldD1hLmN1cnJlbnRBbmltYXRlVGltaW5ncyxkdD1ldC5kdXJhdGlvbjtyZXR1cm4gZGUuZm9yRWFjaCgoaHQsTXQpPT57Y29uc3Qg''@;'; put 'put ''UXQ9Q2U+MD9NdD09T2U/MTpDZSpNdDp2W010XSxsbj1RdCpkdDthLmN1cnJlbnRUaW1lPVllK2V0LmRlbGF5K2xuLGV0LmR1cmF0aW9uPWxuLHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QoaHQsYSksaHQub2Zmc2V0PVF0LGQuc3R5bGVzLnB1c2goaHQpfSksZH12aXNpdFJlZmVyZW5jZShjLGEp''@;'; put 'put ''e3JldHVybnt0eXBlOm5zLlJlZmVyZW5jZSxhbmltYXRpb246SWQodGhpcyx6TShjLmFuaW1hdGlvbiksYSksb3B0aW9uczpqOChjLm9wdGlvbnMpfX12aXNpdEFuaW1hdGVDaGlsZChjLGEpe3JldHVybiBhLmRlcENvdW50Kysse3R5cGU6bnMuQW5pbWF0ZUNoaWxkLG9wdGlvbnM6ajgoYy5v''@;'; put 'put ''cHRpb25zKX19dmlzaXRBbmltYXRlUmVmKGMsYSl7cmV0dXJue3R5cGU6bnMuQW5pbWF0ZVJlZixhbmltYXRpb246dGhpcy52aXNpdFJlZmVyZW5jZShjLmFuaW1hdGlvbixhKSxvcHRpb25zOmo4KGMub3B0aW9ucyl9fXZpc2l0UXVlcnkoYyxhKXtjb25zdCBkPWEuY3VycmVudFF1ZXJ5U2Vs''@;'; put 'put ''ZWN0b3IsaD1jLm9wdGlvbnN8fHt9O2EucXVlcnlDb3VudCsrLGEuY3VycmVudFF1ZXJ5PWM7Y29uc3RbZix2XT1mdW5jdGlvbiAkemUobCl7Y29uc3QgYz0hIWwuc3BsaXQoL1xzKixccyovKS5maW5kKGE9PiI6c2VsZiI9PWEpO3JldHVybiBjJiYobD1sLnJlcGxhY2UoV3plLCIiKSksbD1s''@;'; put 'put ''LnJlcGxhY2UoL0BcKi9nLGpSKS5yZXBsYWNlKC9AXHcrL2csYT0+alIrIi0iK2Euc2xpY2UoMSkpLnJlcGxhY2UoLzphbmltYXRpbmcvZyxPWSksW2wsY119KGMuc2VsZWN0b3IpO2EuY3VycmVudFF1ZXJ5U2VsZWN0b3I9ZC5sZW5ndGg/ZCsiICIrZjpmLERkKGEuY29sbGVjdGVkU3R5bGVz''@;'; put 'put ''LGEuY3VycmVudFF1ZXJ5U2VsZWN0b3IsbmV3IE1hcCk7Y29uc3QgUz1JZCh0aGlzLHpNKGMuYW5pbWF0aW9uKSxhKTtyZXR1cm4gYS5jdXJyZW50UXVlcnk9bnVsbCxhLmN1cnJlbnRRdWVyeVNlbGVjdG9yPWQse3R5cGU6bnMuUXVlcnksc2VsZWN0b3I6ZixsaW1pdDpoLmxpbWl0fHwwLG9w''@;'; put 'put ''dGlvbmFsOiEhaC5vcHRpb25hbCxpbmNsdWRlU2VsZjp2LGFuaW1hdGlvbjpTLG9yaWdpbmFsU2VsZWN0b3I6Yy5zZWxlY3RvcixvcHRpb25zOmo4KGMub3B0aW9ucyl9fXZpc2l0U3RhZ2dlcihjLGEpe2EuY3VycmVudFF1ZXJ5fHxhLmVycm9ycy5wdXNoKGZ1bmN0aW9uIHV6ZSgpe3JldHVy''@;'; put 'put ''biBuZXcgVW4oMzAxMywhMSl9KCkpO2NvbnN0IGQ9ImZ1bGwiPT09Yy50aW1pbmdzP3tkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiJmdWxsIn06elIoYy50aW1pbmdzLGEuZXJyb3JzLCEwKTtyZXR1cm57dHlwZTpucy5TdGFnZ2VyLGFuaW1hdGlvbjpJZCh0aGlzLHpNKGMuYW5pbWF0aW9u''@;'; put 'put ''KSxhKSx0aW1pbmdzOmQsb3B0aW9uczpudWxsfX19Y2xhc3MgS3ple2NvbnN0cnVjdG9yKGMpe3RoaXMuZXJyb3JzPWMsdGhpcy5xdWVyeUNvdW50PTAsdGhpcy5kZXBDb3VudD0wLHRoaXMuY3VycmVudFRyYW5zaXRpb249bnVsbCx0aGlzLmN1cnJlbnRRdWVyeT1udWxsLHRoaXMuY3VycmVu''@;'; put 'put ''dFF1ZXJ5U2VsZWN0b3I9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmNvbGxlY3RlZFN0eWxlcz1uZXcgTWFwLHRoaXMub3B0aW9ucz1udWxsLHRoaXMudW5zdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzRm91bmQ9bmV3IFNldH19ZnVu''@;'; put 'put ''Y3Rpb24gajgobCl7cmV0dXJuIGw/KGw9ey4uLmx9KS5wYXJhbXMmJihsLnBhcmFtcz1mdW5jdGlvbiBxemUobCl7cmV0dXJuIGw/ey4uLmx9Om51bGx9KGwucGFyYW1zKSk6bD17fSxsfWZ1bmN0aW9uIEJZKGwsYyxhKXtyZXR1cm57ZHVyYXRpb246bCxkZWxheTpjLGVhc2luZzphfX1mdW5j''@;'; put 'put ''dGlvbiBqWShsLGMsYSxkLGgsZix2PW51bGwsUz0hMSl7cmV0dXJue3R5cGU6MSxlbGVtZW50Omwsa2V5ZnJhbWVzOmMscHJlU3R5bGVQcm9wczphLHBvc3RTdHlsZVByb3BzOmQsZHVyYXRpb246aCxkZWxheTpmLHRvdGFsVGltZTpoK2YsZWFzaW5nOnYsc3ViVGltZWxpbmU6U319Y2xhc3Mg''@;'; put 'put ''V1J7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQoYyl7cmV0dXJuIHRoaXMuX21hcC5nZXQoYyl8fFtdfWFwcGVuZChjLGEpe2xldCBkPXRoaXMuX21hcC5nZXQoYyk7ZHx8dGhpcy5fbWFwLnNldChjLGQ9W10pLGQucHVzaCguLi5hKX1oYXMoYyl7cmV0dXJuIHRoaXMuX21h''@;'; put 'put ''cC5oYXMoYyl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19Y29uc3QgdFVlPW5ldyBSZWdFeHAoIjplbnRlciIsImciKSxyVWU9bmV3IFJlZ0V4cCgiOmxlYXZlIiwiZyIpO2Z1bmN0aW9uIHpZKGwsYyxhLGQsaCxmPW5ldyBNYXAsdj1uZXcgTWFwLFMsVixRPVtdKXtyZXR1cm4obmV3IGlV''@;'; put 'put ''ZSkuYnVpbGRLZXlmcmFtZXMobCxjLGEsZCxoLGYsdixTLFYsUSl9Y2xhc3MgaVVle2J1aWxkS2V5ZnJhbWVzKGMsYSxkLGgsZix2LFMsVixRLGRlPVtdKXtRPVF8fG5ldyBXUjtjb25zdCBwZT1uZXcgVVkoYyxhLFEsaCxmLGRlLFtdKTtwZS5vcHRpb25zPVY7Y29uc3QgQ2U9Vi5kZWxheT9T''@;'; put 'put ''NChWLmRlbGF5KTowO3BlLmN1cnJlbnRUaW1lbGluZS5kZWxheU5leHRTdGVwKENlKSxwZS5jdXJyZW50VGltZWxpbmUuc2V0U3R5bGVzKFt2XSxudWxsLHBlLmVycm9ycyxWKSxJZCh0aGlzLGQscGUpO2NvbnN0IE9lPXBlLnRpbWVsaW5lcy5maWx0ZXIoWWU9PlllLmNvbnRhaW5zQW5pbWF0''@;'; put 'put ''aW9uKCkpO2lmKE9lLmxlbmd0aCYmUy5zaXplKXtsZXQgWWU7Zm9yKGxldCBldD1PZS5sZW5ndGgtMTtldD49MDtldC0tKXtjb25zdCBkdD1PZVtldF07aWYoZHQuZWxlbWVudD09PWEpe1llPWR0O2JyZWFrfX1ZZSYmIVllLmFsbG93T25seVRpbWVsaW5lU3R5bGVzKCkmJlllLnNldFN0eWxl''@;'; put 'put ''cyhbU10sbnVsbCxwZS5lcnJvcnMsVil9cmV0dXJuIE9lLmxlbmd0aD9PZS5tYXAoWWU9PlllLmJ1aWxkS2V5ZnJhbWVzKCkpOltqWShhLFtdLFtdLFtdLDAsQ2UsIiIsITEpXX12aXNpdFRyaWdnZXIoYyxhKXt9dmlzaXRTdGF0ZShjLGEpe312aXNpdFRyYW5zaXRpb24oYyxhKXt9dmlzaXRB''@;'; put 'put ''bmltYXRlQ2hpbGQoYyxhKXtjb25zdCBkPWEuc3ViSW5zdHJ1Y3Rpb25zLmdldChhLmVsZW1lbnQpO2lmKGQpe2NvbnN0IGg9YS5jcmVhdGVTdWJDb250ZXh0KGMub3B0aW9ucyksZj1hLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSx2PXRoaXMuX3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKGQs''@;'; put 'put ''aCxoLm9wdGlvbnMpO2YhPXYmJmEudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHYpfWEucHJldmlvdXNOb2RlPWN9dmlzaXRBbmltYXRlUmVmKGMsYSl7Y29uc3QgZD1hLmNyZWF0ZVN1YkNvbnRleHQoYy5vcHRpb25zKTtkLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLHRoaXMuX2FwcGx5''@;'; put 'put ''QW5pbWF0aW9uUmVmRGVsYXlzKFtjLm9wdGlvbnMsYy5hbmltYXRpb24ub3B0aW9uc10sYSxkKSx0aGlzLnZpc2l0UmVmZXJlbmNlKGMuYW5pbWF0aW9uLGQpLGEudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGQuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxhLnByZXZpb3VzTm9kZT1j''@;'; put 'put ''fV9hcHBseUFuaW1hdGlvblJlZkRlbGF5cyhjLGEsZCl7Zm9yKGNvbnN0IGggb2YgYyl7Y29uc3QgZj1oPy5kZWxheTtpZihmKXtjb25zdCB2PSJudW1iZXIiPT10eXBlb2YgZj9mOlM0KFVNKGYsaD8ucGFyYW1zPz97fSxhLmVycm9ycykpO2QuZGVsYXlOZXh0U3RlcCh2KX19fV92aXNpdFN1''@;'; put 'put ''Ykluc3RydWN0aW9ucyhjLGEsZCl7bGV0IGY9YS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3Qgdj1udWxsIT1kLmR1cmF0aW9uP1M0KGQuZHVyYXRpb24pOm51bGwsUz1udWxsIT1kLmRlbGF5P1M0KGQuZGVsYXkpOm51bGw7cmV0dXJuIDAhPT12JiZjLmZvckVhY2goVj0+e2Nv''@;'; put 'put ''bnN0IFE9YS5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUoVix2LFMpO2Y9TWF0aC5tYXgoZixRLmR1cmF0aW9uK1EuZGVsYXkpfSksZn12aXNpdFJlZmVyZW5jZShjLGEpe2EudXBkYXRlT3B0aW9ucyhjLm9wdGlvbnMsITApLElkKHRoaXMsYy5hbmltYXRpb24sYSksYS5wcmV2aW91c05v''@;'; put 'put ''ZGU9Y312aXNpdFNlcXVlbmNlKGMsYSl7Y29uc3QgZD1hLnN1YkNvbnRleHRDb3VudDtsZXQgaD1hO2NvbnN0IGY9Yy5vcHRpb25zO2lmKGYmJihmLnBhcmFtc3x8Zi5kZWxheSkmJihoPWEuY3JlYXRlU3ViQ29udGV4dChmKSxoLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLG51bGwhPWYu''@;'; put 'put ''ZGVsYXkpKXtoLnByZXZpb3VzTm9kZS50eXBlPT1ucy5TdHlsZSYmKGguY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLGgucHJldmlvdXNOb2RlPUdSKTtjb25zdCB2PVM0KGYuZGVsYXkpO2guZGVsYXlOZXh0U3RlcCh2KX1jLnN0ZXBzLmxlbmd0aCYmKGMuc3RlcHMu''@;'; put 'put ''Zm9yRWFjaCh2PT5JZCh0aGlzLHYsaCkpLGguY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLGguc3ViQ29udGV4dENvdW50PmQmJmgudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCkpLGEucHJldmlvdXNOb2RlPWN9dmlzaXRHcm91cChjLGEpe2NvbnN0IGQ9W107bGV0''@;'; put 'put ''IGg9YS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3QgZj1jLm9wdGlvbnMmJmMub3B0aW9ucy5kZWxheT9TNChjLm9wdGlvbnMuZGVsYXkpOjA7Yy5zdGVwcy5mb3JFYWNoKHY9Pntjb25zdCBTPWEuY3JlYXRlU3ViQ29udGV4dChjLm9wdGlvbnMpO2YmJlMuZGVsYXlOZXh0U3Rl''@;'; put 'put ''cChmKSxJZCh0aGlzLHYsUyksaD1NYXRoLm1heChoLFMuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxkLnB1c2goUy5jdXJyZW50VGltZWxpbmUpfSksZC5mb3JFYWNoKHY9PmEuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXModikpLGEudHJhbnNmb3Jt''@;'; put 'put ''SW50b05ld1RpbWVsaW5lKGgpLGEucHJldmlvdXNOb2RlPWN9X3Zpc2l0VGltaW5nKGMsYSl7aWYoYy5keW5hbWljKXtjb25zdCBkPWMuc3RyVmFsdWU7cmV0dXJuIHpSKGEucGFyYW1zP1VNKGQsYS5wYXJhbXMsYS5lcnJvcnMpOmQsYS5lcnJvcnMpfXJldHVybntkdXJhdGlvbjpjLmR1cmF0''@;'; put 'put ''aW9uLGRlbGF5OmMuZGVsYXksZWFzaW5nOmMuZWFzaW5nfX12aXNpdEFuaW1hdGUoYyxhKXtjb25zdCBkPWEuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuX3Zpc2l0VGltaW5nKGMudGltaW5ncyxhKSxoPWEuY3VycmVudFRpbWVsaW5lO2QuZGVsYXkmJihhLmluY3JlbWVudFRpbWUoZC5k''@;'; put 'put ''ZWxheSksaC5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk7Y29uc3QgZj1jLnN0eWxlO2YudHlwZT09bnMuS2V5ZnJhbWVzP3RoaXMudmlzaXRLZXlmcmFtZXMoZixhKTooYS5pbmNyZW1lbnRUaW1lKGQuZHVyYXRpb24pLHRoaXMudmlzaXRTdHlsZShmLGEpLGguYXBwbHlTdHlsZXNUb0tleWZy''@;'; put 'put ''YW1lKCkpLGEuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsYS5wcmV2aW91c05vZGU9Y312aXNpdFN0eWxlKGMsYSl7Y29uc3QgZD1hLmN1cnJlbnRUaW1lbGluZSxoPWEuY3VycmVudEFuaW1hdGVUaW1pbmdzOyFoJiZkLmhhc0N1cnJlbnRTdHlsZVByb3BlcnRpZXMoKSYmZC5mb3J3YXJk''@;'; put 'put ''RnJhbWUoKTtjb25zdCBmPWgmJmguZWFzaW5nfHxjLmVhc2luZztjLmlzRW1wdHlTdGVwP2QuYXBwbHlFbXB0eVN0ZXAoZik6ZC5zZXRTdHlsZXMoYy5zdHlsZXMsZixhLmVycm9ycyxhLm9wdGlvbnMpLGEucHJldmlvdXNOb2RlPWN9dmlzaXRLZXlmcmFtZXMoYyxhKXtjb25zdCBkPWEuY3Vy''@;'; put 'put ''cmVudEFuaW1hdGVUaW1pbmdzLGg9YS5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24sZj1kLmR1cmF0aW9uLFM9YS5jcmVhdGVTdWJDb250ZXh0KCkuY3VycmVudFRpbWVsaW5lO1MuZWFzaW5nPWQuZWFzaW5nLGMuc3R5bGVzLmZvckVhY2goVj0+e1MuZm9yd2FyZFRpbWUoKFYub2Zmc2V0fHww''@;'; put 'put ''KSpmKSxTLnNldFN0eWxlcyhWLnN0eWxlcyxWLmVhc2luZyxhLmVycm9ycyxhLm9wdGlvbnMpLFMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCl9KSxhLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKFMpLGEudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGgrZiks''@;'; put 'put ''YS5wcmV2aW91c05vZGU9Y312aXNpdFF1ZXJ5KGMsYSl7Y29uc3QgZD1hLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxoPWMub3B0aW9uc3x8e30sZj1oLmRlbGF5P1M0KGguZGVsYXkpOjA7ZiYmKGEucHJldmlvdXNOb2RlLnR5cGU9PT1ucy5TdHlsZXx8MD09ZCYmYS5jdXJyZW50VGlt''@;'; put 'put ''ZWxpbmUuaGFzQ3VycmVudFN0eWxlUHJvcGVydGllcygpKSYmKGEuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLGEucHJldmlvdXNOb2RlPUdSKTtsZXQgdj1kO2NvbnN0IFM9YS5pbnZva2VRdWVyeShjLnNlbGVjdG9yLGMub3JpZ2luYWxTZWxlY3RvcixjLmxpbWl0''@;'; put 'put ''LGMuaW5jbHVkZVNlbGYsISFoLm9wdGlvbmFsLGEuZXJyb3JzKTthLmN1cnJlbnRRdWVyeVRvdGFsPVMubGVuZ3RoO2xldCBWPW51bGw7Uy5mb3JFYWNoKChRLGRlKT0+e2EuY3VycmVudFF1ZXJ5SW5kZXg9ZGU7Y29uc3QgcGU9YS5jcmVhdGVTdWJDb250ZXh0KGMub3B0aW9ucyxRKTtmJiZw''@;'; put 'put ''ZS5kZWxheU5leHRTdGVwKGYpLFE9PT1hLmVsZW1lbnQmJihWPXBlLmN1cnJlbnRUaW1lbGluZSksSWQodGhpcyxjLmFuaW1hdGlvbixwZSkscGUuY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLHY9TWF0aC5tYXgodixwZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRp''@;'; put 'put ''bWUpfSksYS5jdXJyZW50UXVlcnlJbmRleD0wLGEuY3VycmVudFF1ZXJ5VG90YWw9MCxhLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSh2KSxWJiYoYS5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhWKSxhLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJl''@;'; put 'put ''bnRTdHlsZXMoKSksYS5wcmV2aW91c05vZGU9Y312aXNpdFN0YWdnZXIoYyxhKXtjb25zdCBkPWEucGFyZW50Q29udGV4dCxoPWEuY3VycmVudFRpbWVsaW5lLGY9Yy50aW1pbmdzLHY9TWF0aC5hYnMoZi5kdXJhdGlvbiksUz12KihhLmN1cnJlbnRRdWVyeVRvdGFsLTEpO2xldCBWPXYqYS5j''@;'; put 'put ''dXJyZW50UXVlcnlJbmRleDtzd2l0Y2goZi5kdXJhdGlvbjwwPyJyZXZlcnNlIjpmLmVhc2luZyl7Y2FzZSJyZXZlcnNlIjpWPVMtVjticmVhaztjYXNlImZ1bGwiOlY9ZC5jdXJyZW50U3RhZ2dlclRpbWV9Y29uc3QgZGU9YS5jdXJyZW50VGltZWxpbmU7ViYmZGUuZGVsYXlOZXh0U3RlcChW''@;'; put 'put ''KTtjb25zdCBwZT1kZS5jdXJyZW50VGltZTtJZCh0aGlzLGMuYW5pbWF0aW9uLGEpLGEucHJldmlvdXNOb2RlPWMsZC5jdXJyZW50U3RhZ2dlclRpbWU9aC5jdXJyZW50VGltZS1wZSsoaC5zdGFydFRpbWUtZC5jdXJyZW50VGltZWxpbmUuc3RhcnRUaW1lKX19Y29uc3QgR1I9e307Y2xhc3Mg''@;'; put 'put ''VVl7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUyxWKXt0aGlzLl9kcml2ZXI9Yyx0aGlzLmVsZW1lbnQ9YSx0aGlzLnN1Ykluc3RydWN0aW9ucz1kLHRoaXMuX2VudGVyQ2xhc3NOYW1lPWgsdGhpcy5fbGVhdmVDbGFzc05hbWU9Zix0aGlzLmVycm9ycz12LHRoaXMudGltZWxpbmVzPVMsdGhp''@;'; put 'put ''cy5wYXJlbnRDb250ZXh0PW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLnByZXZpb3VzTm9kZT1HUix0aGlzLnN1YkNvbnRleHRDb3VudD0wLHRoaXMub3B0aW9ucz17fSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PTAsdGhpcy5jdXJyZW50UXVlcnlUb3RhbD0wLHRo''@;'; put 'put ''aXMuY3VycmVudFN0YWdnZXJUaW1lPTAsdGhpcy5jdXJyZW50VGltZWxpbmU9Vnx8bmV3ICRSKHRoaXMuX2RyaXZlcixhLDApLFMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSl9Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfXVwZGF0ZU9wdGlvbnMoYyxhKXtpZigh''@;'; put 'put ''YylyZXR1cm47Y29uc3QgZD1jO2xldCBoPXRoaXMub3B0aW9ucztudWxsIT1kLmR1cmF0aW9uJiYoaC5kdXJhdGlvbj1TNChkLmR1cmF0aW9uKSksbnVsbCE9ZC5kZWxheSYmKGguZGVsYXk9UzQoZC5kZWxheSkpO2NvbnN0IGY9ZC5wYXJhbXM7aWYoZil7bGV0IHY9aC5wYXJhbXM7dnx8KHY9''@;'; put 'put ''dGhpcy5vcHRpb25zLnBhcmFtcz17fSksT2JqZWN0LmtleXMoZikuZm9yRWFjaChTPT57KCFhfHwhdi5oYXNPd25Qcm9wZXJ0eShTKSkmJih2W1NdPVVNKGZbU10sdix0aGlzLmVycm9ycykpfSl9fV9jb3B5T3B0aW9ucygpe2NvbnN0IGM9e307aWYodGhpcy5vcHRpb25zKXtjb25zdCBhPXRo''@;'; put 'put ''aXMub3B0aW9ucy5wYXJhbXM7aWYoYSl7Y29uc3QgZD1jLnBhcmFtcz17fTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGg9PntkW2hdPWFbaF19KX19cmV0dXJuIGN9Y3JlYXRlU3ViQ29udGV4dChjPW51bGwsYSxkKXtjb25zdCBoPWF8fHRoaXMuZWxlbWVudCxmPW5ldyBVWSh0aGlzLl9kcml2''@;'; put 'put ''ZXIsaCx0aGlzLnN1Ykluc3RydWN0aW9ucyx0aGlzLl9lbnRlckNsYXNzTmFtZSx0aGlzLl9sZWF2ZUNsYXNzTmFtZSx0aGlzLmVycm9ycyx0aGlzLnRpbWVsaW5lcyx0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3JrKGgsZHx8MCkpO3JldHVybiBmLnByZXZpb3VzTm9kZT10aGlzLnByZXZpb3Vz''@;'; put 'put ''Tm9kZSxmLmN1cnJlbnRBbmltYXRlVGltaW5ncz10aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncyxmLm9wdGlvbnM9dGhpcy5fY29weU9wdGlvbnMoKSxmLnVwZGF0ZU9wdGlvbnMoYyksZi5jdXJyZW50UXVlcnlJbmRleD10aGlzLmN1cnJlbnRRdWVyeUluZGV4LGYuY3VycmVudFF1ZXJ5VG90''@;'; put 'put ''YWw9dGhpcy5jdXJyZW50UXVlcnlUb3RhbCxmLnBhcmVudENvbnRleHQ9dGhpcyx0aGlzLnN1YkNvbnRleHRDb3VudCsrLGZ9dHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGMpe3JldHVybiB0aGlzLnByZXZpb3VzTm9kZT1HUix0aGlzLmN1cnJlbnRUaW1lbGluZT10aGlzLmN1cnJlbnRUaW1l''@;'; put 'put ''bGluZS5mb3JrKHRoaXMuZWxlbWVudCxjKSx0aGlzLnRpbWVsaW5lcy5wdXNoKHRoaXMuY3VycmVudFRpbWVsaW5lKSx0aGlzLmN1cnJlbnRUaW1lbGluZX1hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUoYyxhLGQpe2NvbnN0IGg9e2R1cmF0aW9uOmE/P2MuZHVyYXRpb24sZGVsYXk6dGhp''@;'; put 'put ''cy5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUrKGQ/PzApK2MuZGVsYXksZWFzaW5nOiIifSxmPW5ldyBvVWUodGhpcy5fZHJpdmVyLGMuZWxlbWVudCxjLmtleWZyYW1lcyxjLnByZVN0eWxlUHJvcHMsYy5wb3N0U3R5bGVQcm9wcyxoLGMuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUpO3Jl''@;'; put 'put ''dHVybiB0aGlzLnRpbWVsaW5lcy5wdXNoKGYpLGh9aW5jcmVtZW50VGltZShjKXt0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lbGluZS5kdXJhdGlvbitjKX1kZWxheU5leHRTdGVwKGMpe2M+MCYmdGhpcy5jdXJyZW50VGltZWxpbmUuZGVsYXlOZXh0''@;'; put 'put ''U3RlcChjKX1pbnZva2VRdWVyeShjLGEsZCxoLGYsdil7bGV0IFM9W107aWYoaCYmUy5wdXNoKHRoaXMuZWxlbWVudCksYy5sZW5ndGg+MCl7Yz0oYz1jLnJlcGxhY2UodFVlLCIuIit0aGlzLl9lbnRlckNsYXNzTmFtZSkpLnJlcGxhY2UoclVlLCIuIit0aGlzLl9sZWF2ZUNsYXNzTmFtZSk7''@;'; put 'put ''bGV0IFE9dGhpcy5fZHJpdmVyLnF1ZXJ5KHRoaXMuZWxlbWVudCxjLDEhPWQpOzAhPT1kJiYoUT1kPDA/US5zbGljZShRLmxlbmd0aCtkLFEubGVuZ3RoKTpRLnNsaWNlKDAsZCkpLFMucHVzaCguLi5RKX1yZXR1cm4hZiYmMD09Uy5sZW5ndGgmJnYucHVzaChmdW5jdGlvbiBkemUobCl7cmV0''@;'; put 'put ''dXJuIG5ldyBVbigzMDE0LCExKX0oKSksU319Y2xhc3MgJFJ7Y29uc3RydWN0b3IoYyxhLGQsaCl7dGhpcy5fZHJpdmVyPWMsdGhpcy5lbGVtZW50PWEsdGhpcy5zdGFydFRpbWU9ZCx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXA9aCx0aGlzLmR1cmF0aW9uPTAsdGhpcy5lYXNp''@;'; put 'put ''bmc9bnVsbCx0aGlzLl9wcmV2aW91c0tleWZyYW1lPW5ldyBNYXAsdGhpcy5fY3VycmVudEtleWZyYW1lPW5ldyBNYXAsdGhpcy5fa2V5ZnJhbWVzPW5ldyBNYXAsdGhpcy5fc3R5bGVTdW1tYXJ5PW5ldyBNYXAsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcz1uZXcgTWFwLHRoaXMuX3BlbmRp''@;'; put 'put ''bmdTdHlsZXM9bmV3IE1hcCx0aGlzLl9iYWNrRmlsbD1uZXcgTWFwLHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT1udWxsLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlzLl9nbG9i''@;'; put 'put ''YWxUaW1lbGluZVN0eWxlcz10aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXAuZ2V0KGEpLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzfHwodGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcyx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHls''@;'; put 'put ''ZXNMb29rdXAuc2V0KGEsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykpLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWNvbnRhaW5zQW5pbWF0aW9uKCl7c3dpdGNoKHRoaXMuX2tleWZyYW1lcy5zaXplKXtjYXNlIDA6cmV0dXJuITE7Y2FzZSAxOnJldHVybiB0aGlzLmhhc0N1cnJlbnRTdHlsZVBy''@;'; put 'put ''b3BlcnRpZXMoKTtkZWZhdWx0OnJldHVybiEwfX1oYXNDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRLZXlmcmFtZS5zaXplPjB9Z2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuc3RhcnRUaW1lK3RoaXMuZHVyYXRpb259ZGVsYXlOZXh0U3RlcChjKXtj''@;'; put 'put ''b25zdCBhPTE9PT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmdGhpcy5fcGVuZGluZ1N0eWxlcy5zaXplO3RoaXMuZHVyYXRpb258fGE/KHRoaXMuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZStjKSxhJiZ0aGlzLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTp0aGlzLnN0YXJ0VGltZSs9Y31m''@;'; put 'put ''b3JrKGMsYSl7cmV0dXJuIHRoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksbmV3ICRSKHRoaXMuX2RyaXZlcixjLGF8fHRoaXMuY3VycmVudFRpbWUsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwKX1fbG9hZEtleWZyYW1lKCl7dGhpcy5fY3VycmVudEtleWZyYW1lJiYodGhp''@;'; put 'put ''cy5fcHJldmlvdXNLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWUpLHRoaXMuX2N1cnJlbnRLZXlmcmFtZT10aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pLHRoaXMuX2N1cnJlbnRLZXlmcmFtZXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZT1uZXcgTWFwLHRoaXMuX2tleWZy''@;'; put 'put ''YW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz0xLHRoaXMuX2xvYWRLZXlmcmFtZSgpfWZvcndhcmRUaW1lKGMpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksdGhpcy5kdXJhdGlvbj1jLHRoaXMu''@;'; put 'put ''X2xvYWRLZXlmcmFtZSgpfV91cGRhdGVTdHlsZShjLGEpe3RoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuc2V0KGMsYSksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuc2V0KGMsYSksdGhpcy5fc3R5bGVTdW1tYXJ5LnNldChjLHt0aW1lOnRoaXMuY3VycmVudFRpbWUsdmFsdWU6YX0pfWFs''@;'; put 'put ''bG93T25seVRpbWVsaW5lU3R5bGVzKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZSE9PXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1hcHBseUVtcHR5U3RlcChjKXtjJiZ0aGlzLl9wcmV2aW91c0tleWZyYW1lLnNldCgiZWFzaW5nIixjKTtmb3IobGV0W2EsZF1vZiB0aGlz''@;'; put 'put ''Ll9nbG9iYWxUaW1lbGluZVN0eWxlcyl0aGlzLl9iYWNrRmlsbC5zZXQoYSxkfHx1NCksdGhpcy5fY3VycmVudEtleWZyYW1lLnNldChhLHU0KTt0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lfXNldFN0eWxlcyhjLGEsZCxoKXthJiZ0aGlzLl9w''@;'; put 'put ''cmV2aW91c0tleWZyYW1lLnNldCgiZWFzaW5nIixhKTtjb25zdCBmPWgmJmgucGFyYW1zfHx7fSx2PWZ1bmN0aW9uIHNVZShsLGMpe2NvbnN0IGE9bmV3IE1hcDtsZXQgZDtyZXR1cm4gbC5mb3JFYWNoKGg9PntpZigiKiI9PT1oKXtkPz89Yy5rZXlzKCk7Zm9yKGxldCBmIG9mIGQpYS5zZXQo''@;'; put 'put ''Zix1NCl9ZWxzZSBmb3IobGV0W2Ysdl1vZiBoKWEuc2V0KGYsdil9KSxhfShjLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKTtmb3IobGV0W1MsVl1vZiB2KXtjb25zdCBRPVVNKFYsZixkKTt0aGlzLl9wZW5kaW5nU3R5bGVzLnNldChTLFEpLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMu''@;'; put 'put ''aGFzKFMpfHx0aGlzLl9iYWNrRmlsbC5zZXQoUyx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5nZXQoUyk/P3U0KSx0aGlzLl91cGRhdGVTdHlsZShTLFEpfX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXswIT10aGlzLl9wZW5kaW5nU3R5bGVzLnNpemUmJih0aGlzLl9wZW5kaW5nU3R5bGVz''@;'; put 'put ''LmZvckVhY2goKGMsYSk9Pnt0aGlzLl9jdXJyZW50S2V5ZnJhbWUuc2V0KGEsYyl9KSx0aGlzLl9wZW5kaW5nU3R5bGVzLmNsZWFyKCksdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcy5mb3JFYWNoKChjLGEpPT57dGhpcy5fY3VycmVudEtleWZyYW1lLmhhcyhhKXx8dGhpcy5fY3VycmVudEtl''@;'; put 'put ''eWZyYW1lLnNldChhLGMpfSkpfXNuYXBzaG90Q3VycmVudFN0eWxlcygpe2ZvcihsZXRbYyxhXW9mIHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpdGhpcy5fcGVuZGluZ1N0eWxlcy5zZXQoYyxhKSx0aGlzLl91cGRhdGVTdHlsZShjLGEpfWdldEZpbmFsS2V5ZnJhbWUoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKX1nZXQgcHJvcGVydGllcygpe2NvbnN0IGM9W107Zm9yKGxldCBhIGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSljLnB1c2goYSk7cmV0dXJuIGN9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhjKXtjLl9zdHlsZVN1bW1hcnkuZm9y''@;'; put 'put ''RWFjaCgoYSxkKT0+e2NvbnN0IGg9dGhpcy5fc3R5bGVTdW1tYXJ5LmdldChkKTsoIWh8fGEudGltZT5oLnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZShkLGEudmFsdWUpfSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2NvbnN0IGM9bmV3IFNldCxhPW5l''@;'; put 'put ''dyBTZXQsZD0xPT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJjA9PT10aGlzLmR1cmF0aW9uO2xldCBoPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKChTLFYpPT57Y29uc3QgUT1uZXcgTWFwKFsuLi50aGlzLl9iYWNrRmlsbCwuLi5TXSk7US5mb3JFYWNoKChkZSxwZSk9PnsiISI9PT1kZT9j''@;'; put 'put ''LmFkZChwZSk6ZGU9PT11NCYmYS5hZGQocGUpfSksZHx8US5zZXQoIm9mZnNldCIsVi90aGlzLmR1cmF0aW9uKSxoLnB1c2goUSl9KTtjb25zdCBmPVsuLi5jLnZhbHVlcygpXSx2PVsuLi5hLnZhbHVlcygpXTtpZihkKXtjb25zdCBTPWhbMF0sVj1uZXcgTWFwKFMpO1Muc2V0KCJvZmZzZXQi''@;'; put 'put ''LDApLFYuc2V0KCJvZmZzZXQiLDEpLGg9W1MsVl19cmV0dXJuIGpZKHRoaXMuZWxlbWVudCxoLGYsdix0aGlzLmR1cmF0aW9uLHRoaXMuc3RhcnRUaW1lLHRoaXMuZWFzaW5nLCExKX19Y2xhc3Mgb1VlIGV4dGVuZHMgJFJ7Y29uc3RydWN0b3IoYyxhLGQsaCxmLHYsUz0hMSl7c3VwZXIoYyxh''@;'; put 'put ''LHYuZGVsYXkpLHRoaXMua2V5ZnJhbWVzPWQsdGhpcy5wcmVTdHlsZVByb3BzPWgsdGhpcy5wb3N0U3R5bGVQcm9wcz1mLHRoaXMuX3N0cmV0Y2hTdGFydGluZ0tleWZyYW1lPVMsdGhpcy50aW1pbmdzPXtkdXJhdGlvbjp2LmR1cmF0aW9uLGRlbGF5OnYuZGVsYXksZWFzaW5nOnYuZWFzaW5n''@;'; put 'put ''fX1jb250YWluc0FuaW1hdGlvbigpe3JldHVybiB0aGlzLmtleWZyYW1lcy5sZW5ndGg+MX1idWlsZEtleWZyYW1lcygpe2xldCBjPXRoaXMua2V5ZnJhbWVzLHtkZWxheTphLGR1cmF0aW9uOmQsZWFzaW5nOmh9PXRoaXMudGltaW5ncztpZih0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFt''@;'; put 'put ''ZSYmYSl7Y29uc3QgZj1bXSx2PWQrYSxTPWEvdixWPW5ldyBNYXAoY1swXSk7Vi5zZXQoIm9mZnNldCIsMCksZi5wdXNoKFYpO2NvbnN0IFE9bmV3IE1hcChjWzBdKTtRLnNldCgib2Zmc2V0IixSMGUoUykpLGYucHVzaChRKTtjb25zdCBkZT1jLmxlbmd0aC0xO2ZvcihsZXQgcGU9MTtwZTw9''@;'; put 'put ''ZGU7cGUrKyl7bGV0IENlPW5ldyBNYXAoY1twZV0pO2NvbnN0IE9lPUNlLmdldCgib2Zmc2V0Iik7Q2Uuc2V0KCJvZmZzZXQiLFIwZSgoYStPZSpkKS92KSksZi5wdXNoKENlKX1kPXYsYT0wLGg9IiIsYz1mfXJldHVybiBqWSh0aGlzLmVsZW1lbnQsYyx0aGlzLnByZVN0eWxlUHJvcHMsdGhp''@;'; put 'put ''cy5wb3N0U3R5bGVQcm9wcyxkLGEsaCwhMCl9fWZ1bmN0aW9uIFIwZShsLGM9Myl7Y29uc3QgYT1NYXRoLnBvdygxMCxjLTEpO3JldHVybiBNYXRoLnJvdW5kKGwqYSkvYX1mdW5jdGlvbiBMMGUobCxjLGEsZCxoLGYsdixTLFYsUSxkZSxwZSxDZSl7cmV0dXJue3R5cGU6MCxlbGVtZW50Omws''@;'; put 'put ''dHJpZ2dlck5hbWU6Yyxpc1JlbW92YWxUcmFuc2l0aW9uOmgsZnJvbVN0YXRlOmEsZnJvbVN0eWxlczpmLHRvU3RhdGU6ZCx0b1N0eWxlczp2LHRpbWVsaW5lczpTLHF1ZXJpZWRFbGVtZW50czpWLHByZVN0eWxlUHJvcHM6USxwb3N0U3R5bGVQcm9wczpkZSx0b3RhbFRpbWU6cGUsZXJyb3Jz''@;'; put 'put ''OkNlfX1jb25zdCBaWT17fTtjbGFzcyBPMGV7Y29uc3RydWN0b3IoYyxhLGQpe3RoaXMuX3RyaWdnZXJOYW1lPWMsdGhpcy5hc3Q9YSx0aGlzLl9zdGF0ZVN0eWxlcz1kfW1hdGNoKGMsYSxkLGgpe3JldHVybiBmdW5jdGlvbiBhVWUobCxjLGEsZCxoKXtyZXR1cm4gbC5zb21lKGY9PmYoYyxh''@;'; put 'put ''LGQsaCkpfSh0aGlzLmFzdC5tYXRjaGVycyxjLGEsZCxoKX1idWlsZFN0eWxlcyhjLGEsZCl7bGV0IGg9dGhpcy5fc3RhdGVTdHlsZXMuZ2V0KCIqIik7cmV0dXJuIHZvaWQgMCE9PWMmJihoPXRoaXMuX3N0YXRlU3R5bGVzLmdldChjPy50b1N0cmluZygpKXx8aCksaD9oLmJ1aWxkU3R5bGVz''@;'; put 'put ''KGEsZCk6bmV3IE1hcH1idWlsZChjLGEsZCxoLGYsdixTLFYsUSxkZSl7Y29uc3QgcGU9W10sQ2U9dGhpcy5hc3Qub3B0aW9ucyYmdGhpcy5hc3Qub3B0aW9ucy5wYXJhbXN8fFpZLFllPXRoaXMuYnVpbGRTdHlsZXMoZCxTJiZTLnBhcmFtc3x8WlkscGUpLGV0PVYmJlYucGFyYW1zfHxaWSxk''@;'; put 'put ''dD10aGlzLmJ1aWxkU3R5bGVzKGgsZXQscGUpLGh0PW5ldyBTZXQsTXQ9bmV3IE1hcCxRdD1uZXcgTWFwLGxuPSJ2b2lkIj09PWgsdm49e3BhcmFtczpQMGUoZXQsQ2UpLGRlbGF5OnRoaXMuYXN0Lm9wdGlvbnM/LmRlbGF5fSx3bj1kZT9bXTp6WShjLGEsdGhpcy5hc3QuYW5pbWF0aW9uLGYs''@;'; put 'put ''dixZZSxkdCx2bixRLHBlKTtsZXQgbnI9MDtyZXR1cm4gd24uZm9yRWFjaCh2cj0+e25yPU1hdGgubWF4KHZyLmR1cmF0aW9uK3ZyLmRlbGF5LG5yKX0pLHBlLmxlbmd0aD9MMGUoYSx0aGlzLl90cmlnZ2VyTmFtZSxkLGgsbG4sWWUsZHQsW10sW10sTXQsUXQsbnIscGUpOih3bi5mb3JFYWNo''@;'; put 'put ''KHZyPT57Y29uc3QgTWk9dnIuZWxlbWVudCxQaT1EZChNdCxNaSxuZXcgU2V0KTt2ci5wcmVTdHlsZVByb3BzLmZvckVhY2goX2k9PlBpLmFkZChfaSkpO2NvbnN0IHlyPURkKFF0LE1pLG5ldyBTZXQpO3ZyLnBvc3RTdHlsZVByb3BzLmZvckVhY2goX2k9PnlyLmFkZChfaSkpLE1pIT09YSYm''@;'; put 'put ''aHQuYWRkKE1pKX0pLEwwZShhLHRoaXMuX3RyaWdnZXJOYW1lLGQsaCxsbixZZSxkdCx3bixbLi4uaHQudmFsdWVzKCldLE10LFF0LG5yKSl9fWZ1bmN0aW9uIFAwZShsLGMpe2NvbnN0IGE9ey4uLmN9O3JldHVybiBPYmplY3QuZW50cmllcyhsKS5mb3JFYWNoKChbZCxoXSk9PntudWxsIT1o''@;'; put 'put ''JiYoYVtkXT1oKX0pLGF9Y2xhc3MgbFVle2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLnN0eWxlcz1jLHRoaXMuZGVmYXVsdFBhcmFtcz1hLHRoaXMubm9ybWFsaXplcj1kfWJ1aWxkU3R5bGVzKGMsYSl7Y29uc3QgZD1uZXcgTWFwLGg9UDBlKGMsdGhpcy5kZWZhdWx0UGFyYW1zKTtyZXR1cm4g''@;'; put 'put ''dGhpcy5zdHlsZXMuc3R5bGVzLmZvckVhY2goZj0+eyJzdHJpbmciIT10eXBlb2YgZiYmZi5mb3JFYWNoKCh2LFMpPT57diYmKHY9VU0odixoLGEpKTtjb25zdCBWPXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVQcm9wZXJ0eU5hbWUoUyxhKTt2PXRoaXMubm9ybWFsaXplci5ub3JtYWxpemVT''@;'; put 'put ''dHlsZVZhbHVlKFMsVix2LGEpLGQuc2V0KFMsdil9KX0pLGR9fWNsYXNzIHVVZXtjb25zdHJ1Y3RvcihjLGEsZCl7dGhpcy5uYW1lPWMsdGhpcy5hc3Q9YSx0aGlzLl9ub3JtYWxpemVyPWQsdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzPVtdLHRoaXMuc3RhdGVzPW5ldyBNYXAsYS5zdGF0ZXMu''@;'; put 'put ''Zm9yRWFjaChoPT57dGhpcy5zdGF0ZXMuc2V0KGgubmFtZSxuZXcgbFVlKGguc3R5bGUsaC5vcHRpb25zJiZoLm9wdGlvbnMucGFyYW1zfHx7fSxkKSl9KSxGMGUodGhpcy5zdGF0ZXMsInRydWUiLCIxIiksRjBlKHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxhLnRyYW5zaXRpb25zLmZvckVh''@;'; put 'put ''Y2goaD0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5ldyBPMGUoYyxoLHRoaXMuc3RhdGVzKSl9KSx0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbj1mdW5jdGlvbiBkVWUobCxjLGEpe3JldHVybiBuZXcgTzBlKGwse3R5cGU6bnMuVHJhbnNpdGlvbixhbmltYXRpb246e3R5cGU6bnMu''@;'; put 'put ''U2VxdWVuY2Usc3RlcHM6W10sb3B0aW9uczpudWxsfSxtYXRjaGVyczpbKHYsUyk9PiEwXSxvcHRpb25zOm51bGwscXVlcnlDb3VudDowLGRlcENvdW50OjB9LGMpfShjLHRoaXMuc3RhdGVzKX1nZXQgY29udGFpbnNRdWVyaWVzKCl7cmV0dXJuIHRoaXMuYXN0LnF1ZXJ5Q291bnQ+MH1tYXRj''@;'; put 'put ''aFRyYW5zaXRpb24oYyxhLGQsaCl7cmV0dXJuIHRoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5maW5kKHY9PnYubWF0Y2goYyxhLGQsaCkpfHxudWxsfW1hdGNoU3R5bGVzKGMsYSxkKXtyZXR1cm4gdGhpcy5mYWxsYmFja1RyYW5zaXRpb24uYnVpbGRTdHlsZXMoYyxhLGQpfX1mdW5jdGlvbiBG''@;'; put 'put ''MGUobCxjLGEpe2wuaGFzKGMpP2wuaGFzKGEpfHxsLnNldChhLGwuZ2V0KGMpKTpsLmhhcyhhKSYmbC5zZXQoYyxsLmdldChhKSl9Y29uc3QgaFVlPW5ldyBXUjtjbGFzcyBmVWV7Y29uc3RydWN0b3IoYyxhLGQpe3RoaXMuYm9keU5vZGU9Yyx0aGlzLl9kcml2ZXI9YSx0aGlzLl9ub3JtYWxp''@;'; put 'put ''emVyPWQsdGhpcy5fYW5pbWF0aW9ucz1uZXcgTWFwLHRoaXMuX3BsYXllcnNCeUlkPW5ldyBNYXAsdGhpcy5wbGF5ZXJzPVtdfXJlZ2lzdGVyKGMsYSl7Y29uc3QgZD1bXSxmPVZZKHRoaXMuX2RyaXZlcixhLGQsW10pO2lmKGQubGVuZ3RoKXRocm93IGZ1bmN0aW9uIF96ZShsKXtyZXR1cm4g''@;'; put 'put ''bmV3IFVuKDM1MDMsITEpfSgpO3RoaXMuX2FuaW1hdGlvbnMuc2V0KGMsZil9X2J1aWxkUGxheWVyKGMsYSxkKXtjb25zdCBoPWMuZWxlbWVudCxmPWIwZSh0aGlzLl9ub3JtYWxpemVyLGMua2V5ZnJhbWVzLGEsZCk7cmV0dXJuIHRoaXMuX2RyaXZlci5hbmltYXRlKGgsZixjLmR1cmF0aW9u''@;'; put 'put ''LGMuZGVsYXksYy5lYXNpbmcsW10sITApfWNyZWF0ZShjLGEsZD17fSl7Y29uc3QgaD1bXSxmPXRoaXMuX2FuaW1hdGlvbnMuZ2V0KGMpO2xldCB2O2NvbnN0IFM9bmV3IE1hcDtpZihmPyh2PXpZKHRoaXMuX2RyaXZlcixhLGYsTFksVlIsbmV3IE1hcCxuZXcgTWFwLGQsaFVlLGgpLHYuZm9y''@;'; put 'put ''RWFjaChkZT0+e2NvbnN0IHBlPURkKFMsZGUuZWxlbWVudCxuZXcgTWFwKTtkZS5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKENlPT5wZS5zZXQoQ2UsbnVsbCkpfSkpOihoLnB1c2goZnVuY3Rpb24gYnplKCl7cmV0dXJuIG5ldyBVbigzMzAwLCExKX0oKSksdj1bXSksaC5sZW5ndGgpdGhyb3cg''@;'; put 'put ''ZnVuY3Rpb24geXplKGwpe3JldHVybiBuZXcgVW4oMzUwNCwhMSl9KCk7Uy5mb3JFYWNoKChkZSxwZSk9PntkZS5mb3JFYWNoKChDZSxPZSk9PntkZS5zZXQoT2UsdGhpcy5fZHJpdmVyLmNvbXB1dGVTdHlsZShwZSxPZSx1NCkpfSl9KTtjb25zdCBRPURtKHYubWFwKGRlPT57Y29uc3QgcGU9''@;'; put 'put ''Uy5nZXQoZGUuZWxlbWVudCk7cmV0dXJuIHRoaXMuX2J1aWxkUGxheWVyKGRlLG5ldyBNYXAscGUpfSkpO3JldHVybiB0aGlzLl9wbGF5ZXJzQnlJZC5zZXQoYyxRKSxRLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KGMpKSx0aGlzLnBsYXllcnMucHVzaChRKSxRfWRlc3Ryb3koYyl7Y29u''@;'; put 'put ''c3QgYT10aGlzLl9nZXRQbGF5ZXIoYyk7YS5kZXN0cm95KCksdGhpcy5fcGxheWVyc0J5SWQuZGVsZXRlKGMpO2NvbnN0IGQ9dGhpcy5wbGF5ZXJzLmluZGV4T2YoYSk7ZD49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShkLDEpfV9nZXRQbGF5ZXIoYyl7Y29uc3QgYT10aGlzLl9wbGF5ZXJzQnlJ''@;'; put 'put ''ZC5nZXQoYyk7aWYoIWEpdGhyb3cgZnVuY3Rpb24gd3plKGwpe3JldHVybiBuZXcgVW4oMzMwMSwhMSl9KCk7cmV0dXJuIGF9bGlzdGVuKGMsYSxkLGgpe2NvbnN0IGY9a1koYSwiIiwiIiwiIik7cmV0dXJuIEVZKHRoaXMuX2dldFBsYXllcihjKSxkLGYsaCksKCk9Pnt9fWNvbW1hbmQoYyxh''@;'; put 'put ''LGQsaCl7aWYoInJlZ2lzdGVyIj09ZClyZXR1cm4gdm9pZCB0aGlzLnJlZ2lzdGVyKGMsaFswXSk7aWYoImNyZWF0ZSI9PWQpcmV0dXJuIHZvaWQgdGhpcy5jcmVhdGUoYyxhLGhbMF18fHt9KTtjb25zdCBmPXRoaXMuX2dldFBsYXllcihjKTtzd2l0Y2goZCl7Y2FzZSJwbGF5IjpmLnBsYXko''@;'; put 'put ''KTticmVhaztjYXNlInBhdXNlIjpmLnBhdXNlKCk7YnJlYWs7Y2FzZSJyZXNldCI6Zi5yZXNldCgpO2JyZWFrO2Nhc2UicmVzdGFydCI6Zi5yZXN0YXJ0KCk7YnJlYWs7Y2FzZSJmaW5pc2giOmYuZmluaXNoKCk7YnJlYWs7Y2FzZSJpbml0IjpmLmluaXQoKTticmVhaztjYXNlInNldFBvc2l0''@;'; put 'put ''aW9uIjpmLnNldFBvc2l0aW9uKHBhcnNlRmxvYXQoaFswXSkpO2JyZWFrO2Nhc2UiZGVzdHJveSI6dGhpcy5kZXN0cm95KGMpfX19Y29uc3QgTjBlPSJuZy1hbmltYXRlLXF1ZXVlZCIsWVk9Im5nLWFuaW1hdGUtZGlzYWJsZWQiLF9VZT1bXSxIMGU9e25hbWVzcGFjZUlkOiIiLHNldEZvclJl''@;'; put 'put ''bW92YWw6ITEsc2V0Rm9yTW92ZTohMSxoYXNBbmltYXRpb246ITEscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITF9LGJVZT17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yTW92ZTohMSxzZXRGb3JSZW1vdmFsOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMH0scmY9Il9fbmdf''@;'; put 'put ''cmVtb3ZlZCI7Y2xhc3MgV1l7Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfWNvbnN0cnVjdG9yKGMsYT0iIil7dGhpcy5uYW1lc3BhY2VJZD1hO2NvbnN0IGQ9YyYmYy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPWZ1bmN0aW9uIFNVZShsKXty''@;'; put 'put ''ZXR1cm4gbD8/bnVsbH0oZD9jLnZhbHVlOmMpLGQpe2NvbnN0e3ZhbHVlOmYsLi4udn09Yzt0aGlzLm9wdGlvbnM9dn1lbHNlIHRoaXMub3B0aW9ucz17fTt0aGlzLm9wdGlvbnMucGFyYW1zfHwodGhpcy5vcHRpb25zLnBhcmFtcz17fSl9YWJzb3JiT3B0aW9ucyhjKXtjb25zdCBhPWMucGFy''@;'; put 'put ''YW1zO2lmKGEpe2NvbnN0IGQ9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGg9PntudWxsPT1kW2hdJiYoZFtoXT1hW2hdKX0pfX19Y29uc3QgWk09InZvaWQiLEdZPW5ldyBXWShaTSk7Y2xhc3MgeVVle2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLmlkPWMsdGhp''@;'; put 'put ''cy5ob3N0RWxlbWVudD1hLHRoaXMuX2VuZ2luZT1kLHRoaXMucGxheWVycz1bXSx0aGlzLl90cmlnZ2Vycz1uZXcgTWFwLHRoaXMuX3F1ZXVlPVtdLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnM9bmV3IE1hcCx0aGlzLl9ob3N0Q2xhc3NOYW1lPSJuZy10bnMtIitjLFBoKGEsdGhpcy5faG9zdENs''@;'; put 'put ''YXNzTmFtZSl9bGlzdGVuKGMsYSxkLGgpe2lmKCF0aGlzLl90cmlnZ2Vycy5oYXMoYSkpdGhyb3cgZnVuY3Rpb24gQ3plKGwsYyl7cmV0dXJuIG5ldyBVbigzMzAyLCExKX0oKTtpZihudWxsPT1kfHwwPT1kLmxlbmd0aCl0aHJvdyBmdW5jdGlvbiBTemUobCl7cmV0dXJuIG5ldyBVbigzMzAz''@;'; put 'put ''LCExKX0oKTtpZighZnVuY3Rpb24gTVVlKGwpe3JldHVybiJzdGFydCI9PWx8fCJkb25lIj09bH0oZCkpdGhyb3cgZnVuY3Rpb24gTXplKGwsYyl7cmV0dXJuIG5ldyBVbigzNDAwLCExKX0oKTtjb25zdCBmPURkKHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMsYyxbXSksdj17bmFtZTphLHBoYXNl''@;'; put 'put ''OmQsY2FsbGJhY2s6aH07Zi5wdXNoKHYpO2NvbnN0IFM9RGQodGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudCxjLG5ldyBNYXApO3JldHVybiBTLmhhcyhhKXx8KFBoKGMsQlIpLFBoKGMsQlIrIi0iK2EpLFMuc2V0KGEsR1kpKSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57''@;'; put 'put ''Y29uc3QgVj1mLmluZGV4T2Yodik7Vj49MCYmZi5zcGxpY2UoViwxKSx0aGlzLl90cmlnZ2Vycy5oYXMoYSl8fFMuZGVsZXRlKGEpfSl9fXJlZ2lzdGVyKGMsYSl7cmV0dXJuIXRoaXMuX3RyaWdnZXJzLmhhcyhjKSYmKHRoaXMuX3RyaWdnZXJzLnNldChjLGEpLCEwKX1fZ2V0VHJpZ2dlcihj''@;'; put 'put ''KXtjb25zdCBhPXRoaXMuX3RyaWdnZXJzLmdldChjKTtpZighYSl0aHJvdyBmdW5jdGlvbiB4emUobCl7cmV0dXJuIG5ldyBVbigzNDAxLCExKX0oKTtyZXR1cm4gYX10cmlnZ2VyKGMsYSxkLGg9ITApe2NvbnN0IGY9dGhpcy5fZ2V0VHJpZ2dlcihhKSx2PW5ldyAkWSh0aGlzLmlkLGEsYyk7''@;'; put 'put ''bGV0IFM9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQoYyk7U3x8KFBoKGMsQlIpLFBoKGMsQlIrIi0iK2EpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuc2V0KGMsUz1uZXcgTWFwKSk7bGV0IFY9Uy5nZXQoYSk7Y29uc3QgUT1uZXcgV1koZCx0aGlzLmlkKTtpZighKGQm''@;'; put 'put ''JmQuaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZWJiZRLmFic29yYk9wdGlvbnMoVi5vcHRpb25zKSxTLnNldChhLFEpLFZ8fChWPUdZKSxRLnZhbHVlIT09Wk0mJlYudmFsdWU9PT1RLnZhbHVlKXtpZighZnVuY3Rpb24gVFVlKGwsYyl7Y29uc3QgYT1PYmplY3Qua2V5cyhsKSxkPU9iamVj''@;'; put 'put ''dC5rZXlzKGMpO2lmKGEubGVuZ3RoIT1kLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGg9MDtoPGEubGVuZ3RoO2grKyl7Y29uc3QgZj1hW2hdO2lmKCFjLmhhc093blByb3BlcnR5KGYpfHxsW2ZdIT09Y1tmXSlyZXR1cm4hMX1yZXR1cm4hMH0oVi5wYXJhbXMsUS5wYXJhbXMpKXtjb25zdCBl''@;'; put 'put ''dD1bXSxkdD1mLm1hdGNoU3R5bGVzKFYudmFsdWUsVi5wYXJhbXMsZXQpLGh0PWYubWF0Y2hTdHlsZXMoUS52YWx1ZSxRLnBhcmFtcyxldCk7ZXQubGVuZ3RoP3RoaXMuX2VuZ2luZS5yZXBvcnRFcnJvcihldCk6dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCk9PntCOChjLGR0KSxrMyhjLGh0''@;'; put 'put ''KX0pfXJldHVybn1jb25zdCBDZT1EZCh0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudCxjLFtdKTtDZS5mb3JFYWNoKGV0PT57ZXQubmFtZXNwYWNlSWQ9PXRoaXMuaWQmJmV0LnRyaWdnZXJOYW1lPT1hJiZldC5xdWV1ZWQmJmV0LmRlc3Ryb3koKX0pO2xldCBPZT1mLm1hdGNoVHJhbnNp''@;'; put 'put ''dGlvbihWLnZhbHVlLFEudmFsdWUsYyxRLnBhcmFtcyksWWU9ITE7aWYoIU9lKXtpZighaClyZXR1cm47T2U9Zi5mYWxsYmFja1RyYW5zaXRpb24sWWU9ITB9cmV0dXJuIHRoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OmMsdHJpZ2dl''@;'; put 'put ''ck5hbWU6YSx0cmFuc2l0aW9uOk9lLGZyb21TdGF0ZTpWLHRvU3RhdGU6USxwbGF5ZXI6dixpc0ZhbGxiYWNrVHJhbnNpdGlvbjpZZX0pLFllfHwoUGgoYyxOMGUpLHYub25TdGFydCgoKT0+e3RiKGMsTjBlKX0pKSx2Lm9uRG9uZSgoKT0+e2xldCBldD10aGlzLnBsYXllcnMuaW5kZXhPZih2''@;'; put 'put ''KTtldD49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShldCwxKTtjb25zdCBkdD10aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5nZXQoYyk7aWYoZHQpe2xldCBodD1kdC5pbmRleE9mKHYpO2h0Pj0wJiZkdC5zcGxpY2UoaHQsMSl9fSksdGhpcy5wbGF5ZXJzLnB1c2godiksQ2UucHVzaCh2''@;'; put 'put ''KSx2fWRlcmVnaXN0ZXIoYyl7dGhpcy5fdHJpZ2dlcnMuZGVsZXRlKGMpLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZm9yRWFjaChhPT5hLmRlbGV0ZShjKSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKChhLGQpPT57dGhpcy5fZWxlbWVudExpc3RlbmVycy5zZXQoZCxh''@;'; put 'put ''LmZpbHRlcihoPT5oLm5hbWUhPWMpKX0pfWNsZWFyRWxlbWVudENhY2hlKGMpe3RoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZGVsZXRlKGMpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZGVsZXRlKGMpO2NvbnN0IGE9dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KGMpO2Em''@;'; put 'put ''JihhLmZvckVhY2goZD0+ZC5kZXN0cm95KCkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZShjKSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGMsYSl7Y29uc3QgZD10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KGMsalIsITApO2QuZm9yRWFjaChoPT57aWYo''@;'; put 'put ''aFtyZl0pcmV0dXJuO2NvbnN0IGY9dGhpcy5fZW5naW5lLmZldGNoTmFtZXNwYWNlc0J5RWxlbWVudChoKTtmLnNpemU/Zi5mb3JFYWNoKHY9PnYudHJpZ2dlckxlYXZlQW5pbWF0aW9uKGgsYSwhMSwhMCkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUoaCl9KSx0aGlzLl9lbmdpbmUuYWZ0ZXJG''@;'; put 'put ''bHVzaEFuaW1hdGlvbnNEb25lKCgpPT5kLmZvckVhY2goaD0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZShoKSkpfXRyaWdnZXJMZWF2ZUFuaW1hdGlvbihjLGEsZCxoKXtjb25zdCBmPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KGMpLHY9bmV3IE1hcDtpZihmKXtjb25zdCBTPVtd''@;'; put 'put ''O2lmKGYuZm9yRWFjaCgoVixRKT0+e2lmKHYuc2V0KFEsVi52YWx1ZSksdGhpcy5fdHJpZ2dlcnMuaGFzKFEpKXtjb25zdCBkZT10aGlzLnRyaWdnZXIoYyxRLFpNLGgpO2RlJiZTLnB1c2goZGUpfX0pLFMubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQo''@;'; put 'put ''dGhpcy5pZCxjLCEwLGEsdiksZCYmRG0oUykub25Eb25lKCgpPT50aGlzLl9lbmdpbmUucHJvY2Vzc0xlYXZlTm9kZShjKSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKGMpe2NvbnN0IGE9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQoYyksZD10aGlzLl9l''@;'; put 'put ''bmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldChjKTtpZihhJiZkKXtjb25zdCBoPW5ldyBTZXQ7YS5mb3JFYWNoKGY9Pntjb25zdCB2PWYubmFtZTtpZihoLmhhcyh2KSlyZXR1cm47aC5hZGQodik7Y29uc3QgVj10aGlzLl90cmlnZ2Vycy5nZXQodikuZmFsbGJhY2tUcmFuc2l0aW9uLFE9ZC5n''@;'; put 'put ''ZXQodil8fEdZLGRlPW5ldyBXWShaTSkscGU9bmV3ICRZKHRoaXMuaWQsdixjKTt0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDpjLHRyaWdnZXJOYW1lOnYsdHJhbnNpdGlvbjpWLGZyb21TdGF0ZTpRLHRvU3RhdGU6ZGUscGxheWVy''@;'; put 'put ''OnBlLGlzRmFsbGJhY2tUcmFuc2l0aW9uOiEwfSl9KX19cmVtb3ZlTm9kZShjLGEpe2NvbnN0IGQ9dGhpcy5fZW5naW5lO2lmKGMuY2hpbGRFbGVtZW50Q291bnQmJnRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKGMsYSksdGhpcy50cmlnZ2VyTGVhdmVBbmltYXRpb24oYyxh''@;'; put 'put ''LCEwKSlyZXR1cm47bGV0IGg9ITE7aWYoZC50b3RhbEFuaW1hdGlvbnMpe2NvbnN0IGY9ZC5wbGF5ZXJzLmxlbmd0aD9kLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldChjKTpbXTtpZihmJiZmLmxlbmd0aCloPSEwO2Vsc2V7bGV0IHY9Yztmb3IoO3Y9di5wYXJlbnROb2RlOylpZihkLnN0''@;'; put 'put ''YXRlc0J5RWxlbWVudC5nZXQodikpe2g9ITA7YnJlYWt9fX1pZih0aGlzLnByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyhjKSxoKWQubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCxjLCExLGEpO2Vsc2V7Y29uc3QgZj1jW3JmXTsoIWZ8fGY9PT1IMGUpJiYoZC5hZnRlckZsdXNo''@;'; put 'put ''KCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKGMpKSxkLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnMoYyksZC5fb25SZW1vdmFsQ29tcGxldGUoYyxhKSl9fWluc2VydE5vZGUoYyxhKXtQaChjLHRoaXMuX2hvc3RDbGFzc05hbWUpfWRyYWluUXVldWVkVHJhbnNpdGlvbnMoYyl7Y29uc3QgYT1b''@;'; put 'put ''XTtyZXR1cm4gdGhpcy5fcXVldWUuZm9yRWFjaChkPT57Y29uc3QgaD1kLnBsYXllcjtpZihoLmRlc3Ryb3llZClyZXR1cm47Y29uc3QgZj1kLmVsZW1lbnQsdj10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChmKTt2JiZ2LmZvckVhY2goUz0+e2lmKFMubmFtZT09ZC50cmlnZ2VyTmFtZSl7''@;'; put 'put ''Y29uc3QgVj1rWShmLGQudHJpZ2dlck5hbWUsZC5mcm9tU3RhdGUudmFsdWUsZC50b1N0YXRlLnZhbHVlKTtWLl9kYXRhPWMsRVkoZC5wbGF5ZXIsUy5waGFzZSxWLFMuY2FsbGJhY2spfX0pLGgubWFya2VkRm9yRGVzdHJveT90aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKT0+e2guZGVzdHJv''@;'; put 'put ''eSgpfSk6YS5wdXNoKGQpfSksdGhpcy5fcXVldWU9W10sYS5zb3J0KChkLGgpPT57Y29uc3QgZj1kLnRyYW5zaXRpb24uYXN0LmRlcENvdW50LHY9aC50cmFuc2l0aW9uLmFzdC5kZXBDb3VudDtyZXR1cm4gMD09Znx8MD09dj9mLXY6dGhpcy5fZW5naW5lLmRyaXZlci5jb250YWluc0VsZW1l''@;'; put 'put ''bnQoZC5lbGVtZW50LGguZWxlbWVudCk/MTotMX0pfWRlc3Ryb3koYyl7dGhpcy5wbGF5ZXJzLmZvckVhY2goYT0+YS5kZXN0cm95KCkpLHRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHRoaXMuaG9zdEVsZW1lbnQsYyl9fWNsYXNzIHdVZXtfb25SZW1vdmFsQ29tcGxldGUo''@;'; put 'put ''YyxhKXt0aGlzLm9uUmVtb3ZhbENvbXBsZXRlKGMsYSl9Y29uc3RydWN0b3IoYyxhLGQsaCl7dGhpcy5ib2R5Tm9kZT1jLHRoaXMuZHJpdmVyPWEsdGhpcy5fbm9ybWFsaXplcj1kLHRoaXMuc2NoZWR1bGVyPWgsdGhpcy5wbGF5ZXJzPVtdLHRoaXMubmV3SG9zdEVsZW1lbnRzPW5ldyBNYXAs''@;'; put 'put ''dGhpcy5wbGF5ZXJzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudD1uZXcgTWFwLHRoaXMuc3RhdGVzQnlFbGVtZW50PW5ldyBNYXAsdGhpcy5kaXNhYmxlZE5vZGVzPW5ldyBTZXQsdGhpcy50b3RhbEFuaW1hdGlvbnM9MCx0aGlzLnRvdGFsUXVldWVkUGxh''@;'; put 'put ''eWVycz0wLHRoaXMuX25hbWVzcGFjZUxvb2t1cD17fSx0aGlzLl9uYW1lc3BhY2VMaXN0PVtdLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucz1bXSx0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50PW5ldyBNYXAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzPVtdLHRo''@;'; put 'put ''aXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cz1bXSx0aGlzLm9uUmVtb3ZhbENvbXBsZXRlPShmLHYpPT57fX1nZXQgcXVldWVkUGxheWVycygpe2NvbnN0IGM9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3QuZm9yRWFjaChhPT57YS5wbGF5ZXJzLmZvckVhY2goZD0+e2QucXVldWVkJiZj''@;'; put 'put ''LnB1c2goZCl9KX0pLGN9Y3JlYXRlTmFtZXNwYWNlKGMsYSl7Y29uc3QgZD1uZXcgeVVlKGMsYSx0aGlzKTtyZXR1cm4gdGhpcy5ib2R5Tm9kZSYmdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHRoaXMuYm9keU5vZGUsYSk/dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QoZCxhKToodGhp''@;'; put 'put ''cy5uZXdIb3N0RWxlbWVudHMuc2V0KGEsZCksdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KGEpKSx0aGlzLl9uYW1lc3BhY2VMb29rdXBbY109ZH1fYmFsYW5jZU5hbWVzcGFjZUxpc3QoYyxhKXtjb25zdCBkPXRoaXMuX25hbWVzcGFjZUxpc3QsaD10aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVt''@;'; put 'put ''ZW50O2lmKGQubGVuZ3RoLTE+PTApe2xldCB2PSExLFM9dGhpcy5kcml2ZXIuZ2V0UGFyZW50RWxlbWVudChhKTtmb3IoO1M7KXtjb25zdCBWPWguZ2V0KFMpO2lmKFYpe2NvbnN0IFE9ZC5pbmRleE9mKFYpO2Quc3BsaWNlKFErMSwwLGMpLHY9ITA7YnJlYWt9Uz10aGlzLmRyaXZlci5nZXRQ''@;'; put 'put ''YXJlbnRFbGVtZW50KFMpfXZ8fGQudW5zaGlmdChjKX1lbHNlIGQucHVzaChjKTtyZXR1cm4gaC5zZXQoYSxjKSxjfXJlZ2lzdGVyKGMsYSl7bGV0IGQ9dGhpcy5fbmFtZXNwYWNlTG9va3VwW2NdO3JldHVybiBkfHwoZD10aGlzLmNyZWF0ZU5hbWVzcGFjZShjLGEpKSxkfXJlZ2lzdGVyVHJp''@;'; put 'put ''Z2dlcihjLGEsZCl7bGV0IGg9dGhpcy5fbmFtZXNwYWNlTG9va3VwW2NdO2gmJmgucmVnaXN0ZXIoYSxkKSYmdGhpcy50b3RhbEFuaW1hdGlvbnMrK31kZXN0cm95KGMsYSl7YyYmKHRoaXMuYWZ0ZXJGbHVzaCgoKT0+e30pLHRoaXMuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT57Y29u''@;'; put 'put ''c3QgZD10aGlzLl9mZXRjaE5hbWVzcGFjZShjKTt0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmRlbGV0ZShkLmhvc3RFbGVtZW50KTtjb25zdCBoPXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZihkKTtoPj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShoLDEpLGQuZGVzdHJv''@;'; put 'put ''eShhKSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW2NdfSkpfV9mZXRjaE5hbWVzcGFjZShjKXtyZXR1cm4gdGhpcy5fbmFtZXNwYWNlTG9va3VwW2NdfWZldGNoTmFtZXNwYWNlc0J5RWxlbWVudChjKXtjb25zdCBhPW5ldyBTZXQsZD10aGlzLnN0YXRlc0J5RWxlbWVudC5nZXQoYyk7''@;'; put 'put ''aWYoZClmb3IobGV0IGggb2YgZC52YWx1ZXMoKSlpZihoLm5hbWVzcGFjZUlkKXtjb25zdCBmPXRoaXMuX2ZldGNoTmFtZXNwYWNlKGgubmFtZXNwYWNlSWQpO2YmJmEuYWRkKGYpfXJldHVybiBhfXRyaWdnZXIoYyxhLGQsaCl7aWYocVIoYSkpe2NvbnN0IGY9dGhpcy5fZmV0Y2hOYW1lc3Bh''@;'; put 'put ''Y2UoYyk7aWYoZilyZXR1cm4gZi50cmlnZ2VyKGEsZCxoKSwhMH1yZXR1cm4hMX1pbnNlcnROb2RlKGMsYSxkLGgpe2lmKCFxUihhKSlyZXR1cm47Y29uc3QgZj1hW3JmXTtpZihmJiZmLnNldEZvclJlbW92YWwpe2Yuc2V0Rm9yUmVtb3ZhbD0hMSxmLnNldEZvck1vdmU9ITA7Y29uc3Qgdj10''@;'; put 'put ''aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuaW5kZXhPZihhKTt2Pj0wJiZ0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMuc3BsaWNlKHYsMSl9aWYoYyl7Y29uc3Qgdj10aGlzLl9mZXRjaE5hbWVzcGFjZShjKTt2JiZ2Lmluc2VydE5vZGUoYSxkKX1oJiZ0aGlzLmNvbGxlY3RFbnRlckVs''@;'; put 'put ''ZW1lbnQoYSl9Y29sbGVjdEVudGVyRWxlbWVudChjKXt0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMucHVzaChjKX1tYXJrRWxlbWVudEFzRGlzYWJsZWQoYyxhKXthP3RoaXMuZGlzYWJsZWROb2Rlcy5oYXMoYyl8fCh0aGlzLmRpc2FibGVkTm9kZXMuYWRkKGMpLFBoKGMsWVkpKTp0aGlz''@;'; put 'put ''LmRpc2FibGVkTm9kZXMuaGFzKGMpJiYodGhpcy5kaXNhYmxlZE5vZGVzLmRlbGV0ZShjKSx0YihjLFlZKSl9cmVtb3ZlTm9kZShjLGEsZCl7aWYocVIoYSkpe3RoaXMuc2NoZWR1bGVyPy5ub3RpZnkoKTtjb25zdCBoPWM/dGhpcy5fZmV0Y2hOYW1lc3BhY2UoYyk6bnVsbDtoP2gucmVtb3Zl''@;'; put 'put ''Tm9kZShhLGQpOnRoaXMubWFya0VsZW1lbnRBc1JlbW92ZWQoYyxhLCExLGQpO2NvbnN0IGY9dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5nZXQoYSk7ZiYmZi5pZCE9PWMmJmYucmVtb3ZlTm9kZShhLGQpfWVsc2UgdGhpcy5fb25SZW1vdmFsQ29tcGxldGUoYSxkKX1tYXJrRWxlbWVu''@;'; put 'put ''dEFzUmVtb3ZlZChjLGEsZCxoLGYpe3RoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5wdXNoKGEpLGFbcmZdPXtuYW1lc3BhY2VJZDpjLHNldEZvclJlbW92YWw6aCxoYXNBbmltYXRpb246ZCxyZW1vdmVkQmVmb3JlUXVlcmllZDohMSxwcmV2aW91c1RyaWdnZXJzVmFsdWVzOmZ9fWxpc3Rl''@;'; put 'put ''bihjLGEsZCxoLGYpe3JldHVybiBxUihhKT90aGlzLl9mZXRjaE5hbWVzcGFjZShjKS5saXN0ZW4oYSxkLGgsZik6KCk9Pnt9fV9idWlsZEluc3RydWN0aW9uKGMsYSxkLGgsZil7cmV0dXJuIGMudHJhbnNpdGlvbi5idWlsZCh0aGlzLmRyaXZlcixjLmVsZW1lbnQsYy5mcm9tU3RhdGUudmFs''@;'; put 'put ''dWUsYy50b1N0YXRlLnZhbHVlLGQsaCxjLmZyb21TdGF0ZS5vcHRpb25zLGMudG9TdGF0ZS5vcHRpb25zLGEsZil9ZGVzdHJveUlubmVyQW5pbWF0aW9ucyhjKXtsZXQgYT10aGlzLmRyaXZlci5xdWVyeShjLGpSLCEwKTthLmZvckVhY2goZD0+dGhpcy5kZXN0cm95QWN0aXZlQW5pbWF0aW9u''@;'; put 'put ''c0ZvckVsZW1lbnQoZCkpLDAhPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuc2l6ZSYmKGE9dGhpcy5kcml2ZXIucXVlcnkoYyxPWSwhMCksYS5mb3JFYWNoKGQ9PnRoaXMuZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudChkKSkpfWRlc3Ryb3lBY3RpdmVBbmltYXRp''@;'; put 'put ''b25zRm9yRWxlbWVudChjKXtjb25zdCBhPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQoYyk7YSYmYS5mb3JFYWNoKGQ9PntkLnF1ZXVlZD9kLm1hcmtlZEZvckRlc3Ryb3k9ITA6ZC5kZXN0cm95KCl9KX1maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KGMpe2NvbnN0IGE9''@;'; put 'put ''dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQoYyk7YSYmYS5mb3JFYWNoKGQ9PmQuZmluaXNoKCkpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIG5ldyBQcm9taXNlKGM9PntpZih0aGlzLnBsYXllcnMubGVuZ3RoKXJldHVybiBEbSh0aGlzLnBsYXllcnMpLm9uRG9uZSgoKT0+''@;'; put 'put ''YygpKTtjKCl9KX1wcm9jZXNzTGVhdmVOb2RlKGMpe2NvbnN0IGE9Y1tyZl07aWYoYSYmYS5zZXRGb3JSZW1vdmFsKXtpZihjW3JmXT1IMGUsYS5uYW1lc3BhY2VJZCl7dGhpcy5kZXN0cm95SW5uZXJBbmltYXRpb25zKGMpO2NvbnN0IGQ9dGhpcy5fZmV0Y2hOYW1lc3BhY2UoYS5uYW1lc3Bh''@;'; put 'put ''Y2VJZCk7ZCYmZC5jbGVhckVsZW1lbnRDYWNoZShjKX10aGlzLl9vblJlbW92YWxDb21wbGV0ZShjLGEuc2V0Rm9yUmVtb3ZhbCl9Yy5jbGFzc0xpc3Q/LmNvbnRhaW5zKFlZKSYmdGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQoYywhMSksdGhpcy5kcml2ZXIucXVlcnkoYywiLm5nLWFuaW1h''@;'; put 'put ''dGUtZGlzYWJsZWQiLCEwKS5mb3JFYWNoKGQ9Pnt0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZChkLCExKX0pfWZsdXNoKGM9LTEpe2xldCBhPVtdO2lmKHRoaXMubmV3SG9zdEVsZW1lbnRzLnNpemUmJih0aGlzLm5ld0hvc3RFbGVtZW50cy5mb3JFYWNoKChkLGgpPT50aGlzLl9iYWxhbmNl''@;'; put 'put ''TmFtZXNwYWNlTGlzdChkLGgpKSx0aGlzLm5ld0hvc3RFbGVtZW50cy5jbGVhcigpKSx0aGlzLnRvdGFsQW5pbWF0aW9ucyYmdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aClmb3IobGV0IGQ9MDtkPHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg7ZCsrKVBoKHRo''@;'; put 'put ''aXMuY29sbGVjdGVkRW50ZXJFbGVtZW50c1tkXSwibmctc3Rhci1pbnNlcnRlZCIpO2lmKHRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoJiYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnN8fHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGgpKXtjb25zdCBkPVtdO3RyeXthPXRoaXMu''@;'; put 'put ''X2ZsdXNoQW5pbWF0aW9ucyhkLGMpfWZpbmFsbHl7Zm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspZFtoXSgpfX1lbHNlIGZvcihsZXQgZD0wO2Q8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aDtkKyspdGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVF''@;'; put 'put ''bGVtZW50c1tkXSk7aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2goZD0+ZCgpKSx0aGlzLl9mbHVzaEZucz1bXSx0''@;'; put 'put ''aGlzLl93aGVuUXVpZXRGbnMubGVuZ3RoKXtjb25zdCBkPXRoaXMuX3doZW5RdWlldEZuczt0aGlzLl93aGVuUXVpZXRGbnM9W10sYS5sZW5ndGg/RG0oYSkub25Eb25lKCgpPT57ZC5mb3JFYWNoKGg9PmgoKSl9KTpkLmZvckVhY2goaD0+aCgpKX19cmVwb3J0RXJyb3IoYyl7dGhyb3cgZnVu''@;'; put 'put ''Y3Rpb24gRXplKGwpe3JldHVybiBuZXcgVW4oMzQwMiwhMSl9KCl9X2ZsdXNoQW5pbWF0aW9ucyhjLGEpe2NvbnN0IGQ9bmV3IFdSLGg9W10sZj1uZXcgTWFwLHY9W10sUz1uZXcgTWFwLFY9bmV3IE1hcCxRPW5ldyBNYXAsZGU9bmV3IFNldDt0aGlzLmRpc2FibGVkTm9kZXMuZm9yRWFjaChX''@;'; put 'put ''bj0+e2RlLmFkZChXbik7Y29uc3QgVHI9dGhpcy5kcml2ZXIucXVlcnkoV24sIi5uZy1hbmltYXRlLXF1ZXVlZCIsITApO2ZvcihsZXQgRXI9MDtFcjxUci5sZW5ndGg7RXIrKylkZS5hZGQoVHJbRXJdKX0pO2NvbnN0IHBlPXRoaXMuYm9keU5vZGUsQ2U9QXJyYXkuZnJvbSh0aGlzLnN0YXRl''@;'; put 'put ''c0J5RWxlbWVudC5rZXlzKCkpLE9lPWowZShDZSx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMpLFllPW5ldyBNYXA7bGV0IGV0PTA7T2UuZm9yRWFjaCgoV24sVHIpPT57Y29uc3QgRXI9TFkrZXQrKztZZS5zZXQoVHIsRXIpLFduLmZvckVhY2goenI9PlBoKHpyLEVyKSl9KTtjb25zdCBk''@;'; put 'put ''dD1bXSxodD1uZXcgU2V0LE10PW5ldyBTZXQ7Zm9yKGxldCBXbj0wO1duPHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGg7V24rKyl7Y29uc3QgVHI9dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW1duXSxFcj1UcltyZl07RXImJkVyLnNldEZvclJlbW92YWwmJihkdC5wdXNo''@;'; put 'put ''KFRyKSxodC5hZGQoVHIpLEVyLmhhc0FuaW1hdGlvbj90aGlzLmRyaXZlci5xdWVyeShUciwiLm5nLXN0YXItaW5zZXJ0ZWQiLCEwKS5mb3JFYWNoKHpyPT5odC5hZGQoenIpKTpNdC5hZGQoVHIpKX1jb25zdCBRdD1uZXcgTWFwLGxuPWowZShDZSxBcnJheS5mcm9tKGh0KSk7bG4uZm9yRWFj''@;'; put 'put ''aCgoV24sVHIpPT57Y29uc3QgRXI9VlIrZXQrKztRdC5zZXQoVHIsRXIpLFduLmZvckVhY2goenI9PlBoKHpyLEVyKSl9KSxjLnB1c2goKCk9PntPZS5mb3JFYWNoKChXbixUcik9Pntjb25zdCBFcj1ZZS5nZXQoVHIpO1duLmZvckVhY2goenI9PnRiKHpyLEVyKSl9KSxsbi5mb3JFYWNoKChX''@;'; put 'put ''bixUcik9Pntjb25zdCBFcj1RdC5nZXQoVHIpO1duLmZvckVhY2goenI9PnRiKHpyLEVyKSl9KSxkdC5mb3JFYWNoKFduPT57dGhpcy5wcm9jZXNzTGVhdmVOb2RlKFduKX0pfSk7Y29uc3Qgdm49W10sd249W107Zm9yKGxldCBXbj10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO1duPj0w''@;'; put 'put ''O1duLS0pdGhpcy5fbmFtZXNwYWNlTGlzdFtXbl0uZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyhhKS5mb3JFYWNoKEVyPT57Y29uc3QgenI9RXIucGxheWVyLEJpPUVyLmVsZW1lbnQ7aWYodm4ucHVzaCh6ciksdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aCl7Y29uc3Qga3I9Qmlb''@;'; put 'put ''cmZdO2lmKGtyJiZrci5zZXRGb3JNb3ZlKXtpZihrci5wcmV2aW91c1RyaWdnZXJzVmFsdWVzJiZrci5wcmV2aW91c1RyaWdnZXJzVmFsdWVzLmhhcyhFci50cmlnZ2VyTmFtZSkpe2NvbnN0IGpyPWtyLnByZXZpb3VzVHJpZ2dlcnNWYWx1ZXMuZ2V0KEVyLnRyaWdnZXJOYW1lKSxUaT10aGlz''@;'; put 'put ''LnN0YXRlc0J5RWxlbWVudC5nZXQoRXIuZWxlbWVudCk7aWYoVGkmJlRpLmhhcyhFci50cmlnZ2VyTmFtZSkpe2NvbnN0IG5vPVRpLmdldChFci50cmlnZ2VyTmFtZSk7bm8udmFsdWU9anIsVGkuc2V0KEVyLnRyaWdnZXJOYW1lLG5vKX19cmV0dXJuIHZvaWQgenIuZGVzdHJveSgpfX1jb25z''@;'; put 'put ''dCBTdD0hcGV8fCF0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQocGUsQmkpLEx0PVF0LmdldChCaSksVXQ9WWUuZ2V0KEJpKSxGbj10aGlzLl9idWlsZEluc3RydWN0aW9uKEVyLGQsVXQsTHQsU3QpO2lmKEZuLmVycm9ycyYmRm4uZXJyb3JzLmxlbmd0aClyZXR1cm4gdm9pZCB3bi5wdXNo''@;'; put 'put ''KEZuKTtpZihTdClyZXR1cm4genIub25TdGFydCgoKT0+QjgoQmksRm4uZnJvbVN0eWxlcykpLHpyLm9uRGVzdHJveSgoKT0+azMoQmksRm4udG9TdHlsZXMpKSx2b2lkIGgucHVzaCh6cik7aWYoRXIuaXNGYWxsYmFja1RyYW5zaXRpb24pcmV0dXJuIHpyLm9uU3RhcnQoKCk9PkI4KEJpLEZu''@;'; put 'put ''LmZyb21TdHlsZXMpKSx6ci5vbkRlc3Ryb3koKCk9PmszKEJpLEZuLnRvU3R5bGVzKSksdm9pZCBoLnB1c2goenIpO2NvbnN0IEtuPVtdO0ZuLnRpbWVsaW5lcy5mb3JFYWNoKGtyPT57a3Iuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWU9ITAsdGhpcy5kaXNhYmxlZE5vZGVzLmhhcyhrci5lbGVt''@;'; put 'put ''ZW50KXx8S24ucHVzaChrcil9KSxGbi50aW1lbGluZXM9S24sZC5hcHBlbmQoQmksRm4udGltZWxpbmVzKSx2LnB1c2goe2luc3RydWN0aW9uOkZuLHBsYXllcjp6cixlbGVtZW50OkJpfSksRm4ucXVlcmllZEVsZW1lbnRzLmZvckVhY2goa3I9PkRkKFMsa3IsW10pLnB1c2goenIpKSxGbi5w''@;'; put 'put ''cmVTdHlsZVByb3BzLmZvckVhY2goKGtyLGpyKT0+e2lmKGtyLnNpemUpe2xldCBUaT1WLmdldChqcik7VGl8fFYuc2V0KGpyLFRpPW5ldyBTZXQpLGtyLmZvckVhY2goKG5vLENpKT0+VGkuYWRkKENpKSl9fSksRm4ucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgoa3IsanIpPT57bGV0IFRpPVEu''@;'; put 'put ''Z2V0KGpyKTtUaXx8US5zZXQoanIsVGk9bmV3IFNldCksa3IuZm9yRWFjaCgobm8sQ2kpPT5UaS5hZGQoQ2kpKX0pfSk7aWYod24ubGVuZ3RoKXtjb25zdCBXbj1bXTt3bi5mb3JFYWNoKFRyPT57V24ucHVzaChmdW5jdGlvbiBUemUobCxjKXtyZXR1cm4gbmV3IFVuKDM1MDUsITEpfSgpKX0p''@;'; put 'put ''LHZuLmZvckVhY2goVHI9PlRyLmRlc3Ryb3koKSksdGhpcy5yZXBvcnRFcnJvcihXbil9Y29uc3QgbnI9bmV3IE1hcCx2cj1uZXcgTWFwO3YuZm9yRWFjaChXbj0+e2NvbnN0IFRyPVduLmVsZW1lbnQ7ZC5oYXMoVHIpJiYodnIuc2V0KFRyLFRyKSx0aGlzLl9iZWZvcmVBbmltYXRpb25CdWls''@;'; put 'put ''ZChXbi5wbGF5ZXIubmFtZXNwYWNlSWQsV24uaW5zdHJ1Y3Rpb24sbnIpKX0pLGguZm9yRWFjaChXbj0+e2NvbnN0IFRyPVduLmVsZW1lbnQ7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKFRyLCExLFduLm5hbWVzcGFjZUlkLFduLnRyaWdnZXJOYW1lLG51bGwpLmZvckVhY2goenI9PntEZChu''@;'; put 'put ''cixUcixbXSkucHVzaCh6ciksenIuZGVzdHJveSgpfSl9KTtjb25zdCBNaT1kdC5maWx0ZXIoV249PlUwZShXbixWLFEpKSxQaT1uZXcgTWFwO0IwZShQaSx0aGlzLmRyaXZlcixNdCxRLHU0KS5mb3JFYWNoKFduPT57VTBlKFduLFYsUSkmJk1pLnB1c2goV24pfSk7Y29uc3QgX2k9bmV3IE1h''@;'; put 'put ''cDtPZS5mb3JFYWNoKChXbixUcik9PntCMGUoX2ksdGhpcy5kcml2ZXIsbmV3IFNldChXbiksViwiISIpfSksTWkuZm9yRWFjaChXbj0+e2NvbnN0IFRyPVBpLmdldChXbiksRXI9X2kuZ2V0KFduKTtQaS5zZXQoV24sbmV3IE1hcChbLi4uVHI/LmVudHJpZXMoKT8/W10sLi4uRXI/LmVudHJp''@;'; put 'put ''ZXMoKT8/W11dKSl9KTtjb25zdCBVcj1bXSxJbj1bXSxPcj17fTt2LmZvckVhY2goV249Pntjb25zdHtlbGVtZW50OlRyLHBsYXllcjpFcixpbnN0cnVjdGlvbjp6cn09V247aWYoZC5oYXMoVHIpKXtpZihkZS5oYXMoVHIpKXJldHVybiBFci5vbkRlc3Ryb3koKCk9PmszKFRyLHpyLnRvU3R5''@;'; put 'put ''bGVzKSksRXIuZGlzYWJsZWQ9ITAsRXIub3ZlcnJpZGVUb3RhbFRpbWUoenIudG90YWxUaW1lKSx2b2lkIGgucHVzaChFcik7bGV0IEJpPU9yO2lmKHZyLnNpemU+MSl7bGV0IEx0PVRyO2NvbnN0IFV0PVtdO2Zvcig7THQ9THQucGFyZW50Tm9kZTspe2NvbnN0IEZuPXZyLmdldChMdCk7aWYo''@;'; put 'put ''Rm4pe0JpPUZuO2JyZWFrfVV0LnB1c2goTHQpfVV0LmZvckVhY2goRm49PnZyLnNldChGbixCaSkpfWNvbnN0IFN0PXRoaXMuX2J1aWxkQW5pbWF0aW9uKEVyLm5hbWVzcGFjZUlkLHpyLG5yLGYsX2ksUGkpO2lmKEVyLnNldFJlYWxQbGF5ZXIoU3QpLEJpPT09T3IpVXIucHVzaChFcik7ZWxz''@;'; put 'put ''ZXtjb25zdCBMdD10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KEJpKTtMdCYmTHQubGVuZ3RoJiYoRXIucGFyZW50UGxheWVyPURtKEx0KSksaC5wdXNoKEVyKX19ZWxzZSBCOChUcix6ci5mcm9tU3R5bGVzKSxFci5vbkRlc3Ryb3koKCk9PmszKFRyLHpyLnRvU3R5bGVzKSksSW4ucHVzaChF''@;'; put 'put ''ciksZGUuaGFzKFRyKSYmaC5wdXNoKEVyKX0pLEluLmZvckVhY2goV249Pntjb25zdCBUcj1mLmdldChXbi5lbGVtZW50KTtpZihUciYmVHIubGVuZ3RoKXtjb25zdCBFcj1EbShUcik7V24uc2V0UmVhbFBsYXllcihFcil9fSksaC5mb3JFYWNoKFduPT57V24ucGFyZW50UGxheWVyP1duLnN5''@;'; put 'put ''bmNQbGF5ZXJFdmVudHMoV24ucGFyZW50UGxheWVyKTpXbi5kZXN0cm95KCl9KTtmb3IobGV0IFduPTA7V248ZHQubGVuZ3RoO1duKyspe2NvbnN0IFRyPWR0W1duXSxFcj1UcltyZl07aWYodGIoVHIsVlIpLEVyJiZFci5oYXNBbmltYXRpb24pY29udGludWU7bGV0IHpyPVtdO2lmKFMuc2l6''@;'; put 'put ''ZSl7bGV0IFN0PVMuZ2V0KFRyKTtTdCYmU3QubGVuZ3RoJiZ6ci5wdXNoKC4uLlN0KTtsZXQgTHQ9dGhpcy5kcml2ZXIucXVlcnkoVHIsT1ksITApO2ZvcihsZXQgVXQ9MDtVdDxMdC5sZW5ndGg7VXQrKyl7bGV0IEZuPVMuZ2V0KEx0W1V0XSk7Rm4mJkZuLmxlbmd0aCYmenIucHVzaCguLi5G''@;'; put 'put ''bil9fWNvbnN0IEJpPXpyLmZpbHRlcihTdD0+IVN0LmRlc3Ryb3llZCk7QmkubGVuZ3RoP3hVZSh0aGlzLFRyLEJpKTp0aGlzLnByb2Nlc3NMZWF2ZU5vZGUoVHIpfXJldHVybiBkdC5sZW5ndGg9MCxVci5mb3JFYWNoKFduPT57dGhpcy5wbGF5ZXJzLnB1c2goV24pLFduLm9uRG9uZSgoKT0+''@;'; put 'put ''e1duLmRlc3Ryb3koKTtjb25zdCBUcj10aGlzLnBsYXllcnMuaW5kZXhPZihXbik7dGhpcy5wbGF5ZXJzLnNwbGljZShUciwxKX0pLFduLnBsYXkoKX0pLFVyfWFmdGVyRmx1c2goYyl7dGhpcy5fZmx1c2hGbnMucHVzaChjKX1hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoYyl7dGhpcy5fd2hl''@;'; put 'put ''blF1aWV0Rm5zLnB1c2goYyl9X2dldFByZXZpb3VzUGxheWVycyhjLGEsZCxoLGYpe2xldCB2PVtdO2lmKGEpe2NvbnN0IFM9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQoYyk7UyYmKHY9Uyl9ZWxzZXtjb25zdCBTPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQoYyk7aWYoUyl7''@;'; put 'put ''Y29uc3QgVj0hZnx8Zj09Wk07Uy5mb3JFYWNoKFE9PntRLnF1ZXVlZHx8IVYmJlEudHJpZ2dlck5hbWUhPWh8fHYucHVzaChRKX0pfX1yZXR1cm4oZHx8aCkmJih2PXYuZmlsdGVyKFM9PiEoZCYmZCE9Uy5uYW1lc3BhY2VJZHx8aCYmaCE9Uy50cmlnZ2VyTmFtZSkpKSx2fV9iZWZvcmVBbmlt''@;'; put 'put ''YXRpb25CdWlsZChjLGEsZCl7Y29uc3QgZj1hLmVsZW1lbnQsdj1hLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOmMsUz1hLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOmEudHJpZ2dlck5hbWU7Zm9yKGNvbnN0IFYgb2YgYS50aW1lbGluZXMpe2NvbnN0IFE9Vi5lbGVtZW50LGRlPVEh''@;'; put 'put ''PT1mLHBlPURkKGQsUSxbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKFEsZGUsdixTLGEudG9TdGF0ZSkuZm9yRWFjaChPZT0+e2NvbnN0IFllPU9lLmdldFJlYWxQbGF5ZXIoKTtZZS5iZWZvcmVEZXN0cm95JiZZZS5iZWZvcmVEZXN0cm95KCksT2UuZGVzdHJveSgpLHBlLnB1c2goT2Up''@;'; put 'put ''fSl9QjgoZixhLmZyb21TdHlsZXMpfV9idWlsZEFuaW1hdGlvbihjLGEsZCxoLGYsdil7Y29uc3QgUz1hLnRyaWdnZXJOYW1lLFY9YS5lbGVtZW50LFE9W10sZGU9bmV3IFNldCxwZT1uZXcgU2V0LENlPWEudGltZWxpbmVzLm1hcChZZT0+e2NvbnN0IGV0PVllLmVsZW1lbnQ7ZGUuYWRkKGV0''@;'; put 'put ''KTtjb25zdCBkdD1ldFtyZl07aWYoZHQmJmR0LnJlbW92ZWRCZWZvcmVRdWVyaWVkKXJldHVybiBuZXcgYU0oWWUuZHVyYXRpb24sWWUuZGVsYXkpO2NvbnN0IGh0PWV0IT09VixNdD1mdW5jdGlvbiBFVWUobCl7Y29uc3QgYz1bXTtyZXR1cm4gejBlKGwsYyksY30oKGQuZ2V0KGV0KXx8X1Vl''@;'; put 'put ''KS5tYXAobnI9Pm5yLmdldFJlYWxQbGF5ZXIoKSkpLmZpbHRlcihucj0+ISFuci5lbGVtZW50JiZuci5lbGVtZW50PT09ZXQpLFF0PWYuZ2V0KGV0KSxsbj12LmdldChldCksdm49YjBlKHRoaXMuX25vcm1hbGl6ZXIsWWUua2V5ZnJhbWVzLFF0LGxuKSx3bj10aGlzLl9idWlsZFBsYXllcihZ''@;'; put 'put ''ZSx2bixNdCk7aWYoWWUuc3ViVGltZWxpbmUmJmgmJnBlLmFkZChldCksaHQpe2NvbnN0IG5yPW5ldyAkWShjLFMsZXQpO25yLnNldFJlYWxQbGF5ZXIod24pLFEucHVzaChucil9cmV0dXJuIHdufSk7US5mb3JFYWNoKFllPT57RGQodGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCxZZS5l''@;'; put 'put ''bGVtZW50LFtdKS5wdXNoKFllKSxZZS5vbkRvbmUoKCk9PmZ1bmN0aW9uIENVZShsLGMsYSl7bGV0IGQ9bC5nZXQoYyk7aWYoZCl7aWYoZC5sZW5ndGgpe2NvbnN0IGg9ZC5pbmRleE9mKGEpO2Quc3BsaWNlKGgsMSl9MD09ZC5sZW5ndGgmJmwuZGVsZXRlKGMpfXJldHVybiBkfSh0aGlzLnBs''@;'; put 'put ''YXllcnNCeVF1ZXJpZWRFbGVtZW50LFllLmVsZW1lbnQsWWUpKX0pLGRlLmZvckVhY2goWWU9PlBoKFllLHgwZSkpO2NvbnN0IE9lPURtKENlKTtyZXR1cm4gT2Uub25EZXN0cm95KCgpPT57ZGUuZm9yRWFjaChZZT0+dGIoWWUseDBlKSksazMoVixhLnRvU3R5bGVzKX0pLHBlLmZvckVhY2go''@;'; put 'put ''WWU9PntEZChoLFllLFtdKS5wdXNoKE9lKX0pLE9lfV9idWlsZFBsYXllcihjLGEsZCl7cmV0dXJuIGEubGVuZ3RoPjA/dGhpcy5kcml2ZXIuYW5pbWF0ZShjLmVsZW1lbnQsYSxjLmR1cmF0aW9uLGMuZGVsYXksYy5lYXNpbmcsZCk6bmV3IGFNKGMuZHVyYXRpb24sYy5kZWxheSl9fWNsYXNz''@;'; put 'put ''ICRZe2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLm5hbWVzcGFjZUlkPWMsdGhpcy50cmlnZ2VyTmFtZT1hLHRoaXMuZWxlbWVudD1kLHRoaXMuX3BsYXllcj1uZXcgYU0sdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSExLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz1uZXcgTWFwLHRoaXMuZGVzdHJv''@;'; put 'put ''eWVkPSExLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy5tYXJrZWRGb3JEZXN0cm95PSExLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5xdWV1ZWQ9ITAsdGhpcy50b3RhbFRpbWU9MH1zZXRSZWFsUGxheWVyKGMpe3RoaXMuX2NvbnRhaW5zUmVhbFBsYXllcnx8KHRoaXMuX3BsYXllcj1jLHRo''@;'; put 'put ''aXMuX3F1ZXVlZENhbGxiYWNrcy5mb3JFYWNoKChhLGQpPT57YS5mb3JFYWNoKGg9PkVZKGMsZCx2b2lkIDAsaCkpfSksdGhpcy5fcXVldWVkQ2FsbGJhY2tzLmNsZWFyKCksdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSEwLHRoaXMub3ZlcnJpZGVUb3RhbFRpbWUoYy50b3RhbFRpbWUpLHRo''@;'; put 'put ''aXMucXVldWVkPSExKX1nZXRSZWFsUGxheWVyKCl7cmV0dXJuIHRoaXMuX3BsYXllcn1vdmVycmlkZVRvdGFsVGltZShjKXt0aGlzLnRvdGFsVGltZT1jfXN5bmNQbGF5ZXJFdmVudHMoYyl7Y29uc3QgYT10aGlzLl9wbGF5ZXI7YS50cmlnZ2VyQ2FsbGJhY2smJmMub25TdGFydCgoKT0+YS50''@;'; put 'put ''cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpLGMub25Eb25lKCgpPT50aGlzLmZpbmlzaCgpKSxjLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KCkpfV9xdWV1ZUV2ZW50KGMsYSl7RGQodGhpcy5fcXVldWVkQ2FsbGJhY2tzLGMsW10pLnB1c2goYSl9b25Eb25lKGMpe3RoaXMucXVldWVkJiZ0''@;'; put 'put ''aGlzLl9xdWV1ZUV2ZW50KCJkb25lIixjKSx0aGlzLl9wbGF5ZXIub25Eb25lKGMpfW9uU3RhcnQoYyl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoInN0YXJ0IixjKSx0aGlzLl9wbGF5ZXIub25TdGFydChjKX1vbkRlc3Ryb3koYyl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZl''@;'; put 'put ''bnQoImRlc3Ryb3kiLGMpLHRoaXMuX3BsYXllci5vbkRlc3Ryb3koYyl9aW5pdCgpe3RoaXMuX3BsYXllci5pbml0KCl9aGFzU3RhcnRlZCgpe3JldHVybiF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLmhhc1N0YXJ0ZWQoKX1wbGF5KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGxh''@;'; put 'put ''eSgpfXBhdXNlKCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGF1c2UoKX1yZXN0YXJ0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzdGFydCgpfWZpbmlzaCgpe3RoaXMuX3BsYXllci5maW5pc2goKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5fcGxheWVy''@;'; put 'put ''LmRlc3Ryb3koKX1yZXNldCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc2V0KCl9c2V0UG9zaXRpb24oYyl7dGhpcy5xdWV1ZWR8fHRoaXMuX3BsYXllci5zZXRQb3NpdGlvbihjKX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnF1ZXVlZD8wOnRoaXMuX3BsYXllci5nZXRQb3Np''@;'; put 'put ''dGlvbigpfXRyaWdnZXJDYWxsYmFjayhjKXtjb25zdCBhPXRoaXMuX3BsYXllcjthLnRyaWdnZXJDYWxsYmFjayYmYS50cmlnZ2VyQ2FsbGJhY2soYyl9fWZ1bmN0aW9uIHFSKGwpe3JldHVybiBsJiYxPT09bC5ub2RlVHlwZX1mdW5jdGlvbiBWMGUobCxjKXtjb25zdCBhPWwuc3R5bGUuZGlz''@;'; put 'put ''cGxheTtyZXR1cm4gbC5zdHlsZS5kaXNwbGF5PWM/PyJub25lIixhfWZ1bmN0aW9uIEIwZShsLGMsYSxkLGgpe2NvbnN0IGY9W107YS5mb3JFYWNoKFY9PmYucHVzaChWMGUoVikpKTtjb25zdCB2PVtdO2QuZm9yRWFjaCgoVixRKT0+e2NvbnN0IGRlPW5ldyBNYXA7Vi5mb3JFYWNoKHBlPT57''@;'; put 'put ''Y29uc3QgQ2U9Yy5jb21wdXRlU3R5bGUoUSxwZSxoKTtkZS5zZXQocGUsQ2UpLCghQ2V8fDA9PUNlLmxlbmd0aCkmJihRW3JmXT1iVWUsdi5wdXNoKFEpKX0pLGwuc2V0KFEsZGUpfSk7bGV0IFM9MDtyZXR1cm4gYS5mb3JFYWNoKFY9PlYwZShWLGZbUysrXSkpLHZ9ZnVuY3Rpb24gajBlKGws''@;'; put 'put ''Yyl7Y29uc3QgYT1uZXcgTWFwO2lmKGwuZm9yRWFjaChTPT5hLnNldChTLFtdKSksMD09Yy5sZW5ndGgpcmV0dXJuIGE7Y29uc3QgaD1uZXcgU2V0KGMpLGY9bmV3IE1hcDtmdW5jdGlvbiB2KFMpe2lmKCFTKXJldHVybiAxO2xldCBWPWYuZ2V0KFMpO2lmKFYpcmV0dXJuIFY7Y29uc3QgUT1T''@;'; put 'put ''LnBhcmVudE5vZGU7cmV0dXJuIFY9YS5oYXMoUSk/UTpoLmhhcyhRKT8xOnYoUSksZi5zZXQoUyxWKSxWfXJldHVybiBjLmZvckVhY2goUz0+e2NvbnN0IFY9dihTKTsxIT09ViYmYS5nZXQoVikucHVzaChTKX0pLGF9ZnVuY3Rpb24gUGgobCxjKXtsLmNsYXNzTGlzdD8uYWRkKGMpfWZ1bmN0''@;'; put 'put ''aW9uIHRiKGwsYyl7bC5jbGFzc0xpc3Q/LnJlbW92ZShjKX1mdW5jdGlvbiB4VWUobCxjLGEpe0RtKGEpLm9uRG9uZSgoKT0+bC5wcm9jZXNzTGVhdmVOb2RlKGMpKX1mdW5jdGlvbiB6MGUobCxjKXtmb3IobGV0IGE9MDthPGwubGVuZ3RoO2ErKyl7Y29uc3QgZD1sW2FdO2QgaW5zdGFuY2Vv''@;'; put 'put ''ZiBCbGU/ejBlKGQucGxheWVycyxjKTpjLnB1c2goZCl9fWZ1bmN0aW9uIFUwZShsLGMsYSl7Y29uc3QgZD1hLmdldChsKTtpZighZClyZXR1cm4hMTtsZXQgaD1jLmdldChsKTtyZXR1cm4gaD9kLmZvckVhY2goZj0+aC5hZGQoZikpOmMuc2V0KGwsZCksYS5kZWxldGUobCksITB9Y2xhc3Mg''@;'; put 'put ''WU17Y29uc3RydWN0b3IoYyxhLGQsaCl7dGhpcy5fZHJpdmVyPWEsdGhpcy5fbm9ybWFsaXplcj1kLHRoaXMuX3RyaWdnZXJDYWNoZT17fSx0aGlzLm9uUmVtb3ZhbENvbXBsZXRlPShmLHYpPT57fSx0aGlzLl90cmFuc2l0aW9uRW5naW5lPW5ldyB3VWUoYy5ib2R5LGEsZCxoKSx0aGlzLl90''@;'; put 'put ''aW1lbGluZUVuZ2luZT1uZXcgZlVlKGMuYm9keSxhLGQpLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KGYsdik9PnRoaXMub25SZW1vdmFsQ29tcGxldGUoZix2KX1yZWdpc3RlclRyaWdnZXIoYyxhLGQsaCxmKXtjb25zdCB2PWMrIi0iK2g7bGV0IFM9dGhpcy5f''@;'; put 'put ''dHJpZ2dlckNhY2hlW3ZdO2lmKCFTKXtjb25zdCBWPVtdLGRlPVZZKHRoaXMuX2RyaXZlcixmLFYsW10pO2lmKFYubGVuZ3RoKXRocm93IGZ1bmN0aW9uIG16ZShsLGMpe3JldHVybiBuZXcgVW4oMzQwNCwhMSl9KCk7Uz1mdW5jdGlvbiBjVWUobCxjLGEpe3JldHVybiBuZXcgdVVlKGwsYyxh''@;'; put 'put ''KX0oaCxkZSx0aGlzLl9ub3JtYWxpemVyKSx0aGlzLl90cmlnZ2VyQ2FjaGVbdl09U310aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihhLGgsUyl9cmVnaXN0ZXIoYyxhKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyKGMsYSl9ZGVzdHJveShjLGEpe3RoaXMu''@;'; put 'put ''X3RyYW5zaXRpb25FbmdpbmUuZGVzdHJveShjLGEpfW9uSW5zZXJ0KGMsYSxkLGgpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuaW5zZXJ0Tm9kZShjLGEsZCxoKX1vblJlbW92ZShjLGEsZCl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZW1vdmVOb2RlKGMsYSxkKX1kaXNhYmxlQW5pbWF0aW9u''@;'; put 'put ''cyhjLGEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUubWFya0VsZW1lbnRBc0Rpc2FibGVkKGMsYSl9cHJvY2VzcyhjLGEsZCxoKXtpZigiQCI9PWQuY2hhckF0KDApKXtjb25zdFtmLHZdPXkwZShkKTt0aGlzLl90aW1lbGluZUVuZ2luZS5jb21tYW5kKGYsYSx2LGgpfWVsc2UgdGhpcy5fdHJh''@;'; put 'put ''bnNpdGlvbkVuZ2luZS50cmlnZ2VyKGMsYSxkLGgpfWxpc3RlbihjLGEsZCxoLGYpe2lmKCJAIj09ZC5jaGFyQXQoMCkpe2NvbnN0W3YsU109eTBlKGQpO3JldHVybiB0aGlzLl90aW1lbGluZUVuZ2luZS5saXN0ZW4odixhLFMsZil9cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUubGlz''@;'; put 'put ''dGVuKGMsYSxkLGgsZil9Zmx1c2goYz0tMSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5mbHVzaChjKX1nZXQgcGxheWVycygpe3JldHVyblsuLi50aGlzLl90cmFuc2l0aW9uRW5naW5lLnBsYXllcnMsLi4udGhpcy5fdGltZWxpbmVFbmdpbmUucGxheWVyc119d2hlblJlbmRlcmluZ0RvbmUo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfWFmdGVyRmx1c2hBbmltYXRpb25zRG9uZShjKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZShjKX19Y2xhc3MgV017c3RhdGlje3RoaXMuaW5pdGlhbFN0eWxl''@;'; put 'put ''c0J5RWxlbWVudD1uZXcgV2Vha01hcH1jb25zdHJ1Y3RvcihjLGEsZCl7dGhpcy5fZWxlbWVudD1jLHRoaXMuX3N0YXJ0U3R5bGVzPWEsdGhpcy5fZW5kU3R5bGVzPWQsdGhpcy5fc3RhdGU9MDtsZXQgaD1XTS5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmdldChjKTtofHxXTS5pbml0aWFsU3R5''@;'; put 'put ''bGVzQnlFbGVtZW50LnNldChjLGg9bmV3IE1hcCksdGhpcy5faW5pdGlhbFN0eWxlcz1ofXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiZrMyh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEp''@;'; put 'put ''fWZpbmlzaCgpe3RoaXMuc3RhcnQoKSx0aGlzLl9zdGF0ZTwyJiYoazModGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJihrMyh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEp''@;'; put 'put ''fWRlc3Ryb3koKXt0aGlzLmZpbmlzaCgpLHRoaXMuX3N0YXRlPDMmJihXTS5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmRlbGV0ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9zdGFydFN0eWxlcyYmKEI4KHRoaXMuX2VsZW1lbnQsdGhpcy5fc3RhcnRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxs''@;'; put 'put ''KSx0aGlzLl9lbmRTdHlsZXMmJihCOCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLGszKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9Myl9fWZ1bmN0aW9uIHFZKGwpe2xldCBjPW51bGw7cmV0dXJuIGwu''@;'; put 'put ''Zm9yRWFjaCgoYSxkKT0+eyhmdW5jdGlvbiBBVWUobCl7cmV0dXJuImRpc3BsYXkiPT09bHx8InBvc2l0aW9uIj09PWx9KShkKSYmKGM9Y3x8bmV3IE1hcCxjLnNldChkLGEpKX0pLGN9Y2xhc3MgWjBle2NvbnN0cnVjdG9yKGMsYSxkLGgpe3RoaXMuZWxlbWVudD1jLHRoaXMua2V5ZnJhbWVz''@;'; put 'put ''PWEsdGhpcy5vcHRpb25zPWQsdGhpcy5fc3BlY2lhbFN0eWxlcz1oLHRoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9pbml0aWFsaXplZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rl''@;'; put 'put ''c3Ryb3llZD0hMSx0aGlzLl9vcmlnaW5hbE9uRG9uZUZucz1bXSx0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnM9W10sdGhpcy50aW1lPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLmN1cnJlbnRTbmFwc2hvdD1uZXcgTWFwLHRoaXMuX2R1cmF0aW9uPWQuZHVyYXRpb24sdGhpcy5fZGVs''@;'; put 'put ''YXk9ZC5kZWxheXx8MCx0aGlzLnRpbWU9dGhpcy5fZHVyYXRpb24rdGhpcy5fZGVsYXl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaChjPT5jKCkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMuX2J1''@;'; put 'put ''aWxkUGxheWVyKCksdGhpcy5fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl9X2J1aWxkUGxheWVyKCl7aWYodGhpcy5faW5pdGlhbGl6ZWQpcmV0dXJuO3RoaXMuX2luaXRpYWxpemVkPSEwO2NvbnN0IGM9dGhpcy5rZXlmcmFtZXM7dGhpcy5kb21QbGF5ZXI9dGhpcy5fdHJpZ2dlcldlYkFu''@;'; put 'put ''aW1hdGlvbih0aGlzLmVsZW1lbnQsYyx0aGlzLm9wdGlvbnMpLHRoaXMuX2ZpbmFsS2V5ZnJhbWU9Yy5sZW5ndGg/Y1tjLmxlbmd0aC0xXTpuZXcgTWFwO2NvbnN0IGE9KCk9PnRoaXMuX29uRmluaXNoKCk7dGhpcy5kb21QbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiZmluaXNoIixhKSx0aGlz''@;'; put 'put ''Lm9uRGVzdHJveSgoKT0+e3RoaXMuZG9tUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZpbmlzaCIsYSl9KX1fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl7dGhpcy5fZGVsYXk/dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpOnRoaXMuZG9tUGxheWVyLnBhdXNlKCl9X2NvbnZlcnRL''@;'; put 'put ''ZXlmcmFtZXNUb09iamVjdChjKXtjb25zdCBhPVtdO3JldHVybiBjLmZvckVhY2goZD0+e2EucHVzaChPYmplY3QuZnJvbUVudHJpZXMoZCkpfSksYX1fdHJpZ2dlcldlYkFuaW1hdGlvbihjLGEsZCl7cmV0dXJuIGMuYW5pbWF0ZSh0aGlzLl9jb252ZXJ0S2V5ZnJhbWVzVG9PYmplY3QoYSks''@;'; put 'put ''ZCl9b25TdGFydChjKXt0aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMucHVzaChjKSx0aGlzLl9vblN0YXJ0Rm5zLnB1c2goYyl9b25Eb25lKGMpe3RoaXMuX29yaWdpbmFsT25Eb25lRm5zLnB1c2goYyksdGhpcy5fb25Eb25lRm5zLnB1c2goYyl9b25EZXN0cm95KGMpe3RoaXMuX29uRGVzdHJv''@;'; put 'put ''eUZucy5wdXNoKGMpfXBsYXkoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydEZucy5mb3JFYWNoKGM9PmMoKSksdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSEwLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxT''@;'; put 'put ''dHlsZXMuc3RhcnQoKSksdGhpcy5kb21QbGF5ZXIucGxheSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIucGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX29uRmluaXNo''@;'; put 'put ''KCksdGhpcy5kb21QbGF5ZXIuZmluaXNoKCl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fb25TdGFydEZucz10aGlzLl9vcmlnaW5hbE9uU3RhcnRGbnMsdGhpcy5f''@;'; put 'put ''b25Eb25lRm5zPXRoaXMuX29yaWdpbmFsT25Eb25lRm5zfV9yZXNldERvbVBsYXllclN0YXRlKCl7dGhpcy5kb21QbGF5ZXImJnRoaXMuZG9tUGxheWVyLmNhbmNlbCgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVk''@;'; put 'put ''fWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZv''@;'; put 'put ''ckVhY2goYz0+YygpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXNldFBvc2l0aW9uKGMpe3ZvaWQgMD09PXRoaXMuZG9tUGxheWVyJiZ0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZT1jKnRoaXMudGltZX1nZXRQb3NpdGlvbigpe3JldHVybisodGhpcy5kb21QbGF5ZXIu''@;'; put 'put ''Y3VycmVudFRpbWU/PzApL3RoaXMudGltZX1nZXQgdG90YWxUaW1lKCl7cmV0dXJuIHRoaXMuX2RlbGF5K3RoaXMuX2R1cmF0aW9ufWJlZm9yZURlc3Ryb3koKXtjb25zdCBjPW5ldyBNYXA7dGhpcy5oYXNTdGFydGVkKCkmJnRoaXMuX2ZpbmFsS2V5ZnJhbWUuZm9yRWFjaCgoZCxoKT0+eyJv''@;'; put 'put ''ZmZzZXQiIT09aCYmYy5zZXQoaCx0aGlzLl9maW5pc2hlZD9kOkhZKHRoaXMuZWxlbWVudCxoKSl9KSx0aGlzLmN1cnJlbnRTbmFwc2hvdD1jfXRyaWdnZXJDYWxsYmFjayhjKXtjb25zdCBhPSJzdGFydCI9PT1jP3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2EuZm9yRWFjaChk''@;'; put 'put ''PT5kKCkpLGEubGVuZ3RoPTB9fWNsYXNzIFkwZXt2YWxpZGF0ZVN0eWxlUHJvcGVydHkoYyl7cmV0dXJuITB9dmFsaWRhdGVBbmltYXRhYmxlU3R5bGVQcm9wZXJ0eShjKXtyZXR1cm4hMH1tYXRjaGVzRWxlbWVudChjLGEpe3JldHVybiExfWNvbnRhaW5zRWxlbWVudChjLGEpe3JldHVybiBD''@;'; put 'put ''MGUoYyxhKX1nZXRQYXJlbnRFbGVtZW50KGMpe3JldHVybiBBWShjKX1xdWVyeShjLGEsZCl7cmV0dXJuIFMwZShjLGEsZCl9Y29tcHV0ZVN0eWxlKGMsYSxkKXtyZXR1cm4gSFkoYyxhKX1hbmltYXRlKGMsYSxkLGgsZix2PVtdKXtjb25zdCBWPXtkdXJhdGlvbjpkLGRlbGF5OmgsZmlsbDow''@;'; put 'put ''PT1oPyJib3RoIjoiZm9yd2FyZHMifTtmJiYoVi5lYXNpbmc9Zik7Y29uc3QgUT1uZXcgTWFwLGRlPXYuZmlsdGVyKE9lPT5PZSBpbnN0YW5jZW9mIFowZSk7KGZ1bmN0aW9uIEJ6ZShsLGMpe3JldHVybiAwPT09bHx8MD09PWN9KShkLGgpJiZkZS5mb3JFYWNoKE9lPT57T2UuY3VycmVudFNu''@;'; put 'put ''YXBzaG90LmZvckVhY2goKFllLGV0KT0+US5zZXQoZXQsWWUpKX0pO2xldCBwZT1mdW5jdGlvbiBOemUobCl7cmV0dXJuIGwubGVuZ3RoP2xbMF1pbnN0YW5jZW9mIE1hcD9sOmwubWFwKGM9Pm5ldyBNYXAoT2JqZWN0LmVudHJpZXMoYykpKTpbXX0oYSkubWFwKE9lPT5uZXcgTWFwKE9lKSk7''@;'; put 'put ''cGU9ZnVuY3Rpb24ganplKGwsYyxhKXtpZihhLnNpemUmJmMubGVuZ3RoKXtsZXQgZD1jWzBdLGg9W107aWYoYS5mb3JFYWNoKChmLHYpPT57ZC5oYXModil8fGgucHVzaCh2KSxkLnNldCh2LGYpfSksaC5sZW5ndGgpZm9yKGxldCBmPTE7ZjxjLmxlbmd0aDtmKyspe2xldCB2PWNbZl07aC5m''@;'; put 'put ''b3JFYWNoKFM9PnYuc2V0KFMsSFkobCxTKSkpfX1yZXR1cm4gY30oYyxwZSxRKTtjb25zdCBDZT1mdW5jdGlvbiBrVWUobCxjKXtsZXQgYT1udWxsLGQ9bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheShjKSYmYy5sZW5ndGg/KGE9cVkoY1swXSksYy5sZW5ndGg+MSYmKGQ9cVkoY1tjLmxlbmd0''@;'; put 'put ''aC0xXSkpKTpjIGluc3RhbmNlb2YgTWFwJiYoYT1xWShjKSksYXx8ZD9uZXcgV00obCxhLGQpOm51bGx9KGMscGUpO3JldHVybiBuZXcgWjBlKGMscGUsVixDZSl9fWNvbnN0IFcwZT0iQC5kaXNhYmxlZCI7Y2xhc3MgRzBle2NvbnN0cnVjdG9yKGMsYSxkLGgpe3RoaXMubmFtZXNwYWNlSWQ9''@;'; put 'put ''Yyx0aGlzLmRlbGVnYXRlPWEsdGhpcy5lbmdpbmU9ZCx0aGlzLl9vbkRlc3Ryb3k9aCx0aGlzLlx1MDI3NXR5cGU9MH1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveU5vZGUoYyl7dGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZT8uKGMpfWRlc3Ryb3koKXt0aGlz''@;'; put 'put ''LmVuZ2luZS5kZXN0cm95KHRoaXMubmFtZXNwYWNlSWQsdGhpcy5kZWxlZ2F0ZSksdGhpcy5lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgpPT57cXVldWVNaWNyb3Rhc2soKCk9Pnt0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX0pfSksdGhpcy5fb25EZXN0cm95Py4oKX1jcmVhdGVF''@;'; put 'put ''bGVtZW50KGMsYSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChjLGEpfWNyZWF0ZUNvbW1lbnQoYyl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudChjKX1jcmVhdGVUZXh0KGMpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQoYyl9YXBwZW5kQ2hp''@;'; put 'put ''bGQoYyxhKXt0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKGMsYSksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxhLGMsITEpfWluc2VydEJlZm9yZShjLGEsZCxoPSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZShjLGEsZCksdGhpcy5lbmdpbmUub25JbnNlcnQo''@;'; put 'put ''dGhpcy5uYW1lc3BhY2VJZCxhLGMsaCl9cmVtb3ZlQ2hpbGQoYyxhLGQpe3RoaXMuZW5naW5lLm9uUmVtb3ZlKHRoaXMubmFtZXNwYWNlSWQsYSx0aGlzLmRlbGVnYXRlKX1zZWxlY3RSb290RWxlbWVudChjLGEpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KGMsYSl9''@;'; put 'put ''cGFyZW50Tm9kZShjKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKGMpfW5leHRTaWJsaW5nKGMpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKGMpfXNldEF0dHJpYnV0ZShjLGEsZCxoKXt0aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZShjLGEsZCxoKX1yZW1vdmVB''@;'; put 'put ''dHRyaWJ1dGUoYyxhLGQpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKGMsYSxkKX1hZGRDbGFzcyhjLGEpe3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3MoYyxhKX1yZW1vdmVDbGFzcyhjLGEpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3MoYyxhKX1zZXRTdHlsZShjLGEsZCxoKXt0aGlz''@;'; put 'put ''LmRlbGVnYXRlLnNldFN0eWxlKGMsYSxkLGgpfXJlbW92ZVN0eWxlKGMsYSxkKXt0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKGMsYSxkKX1zZXRQcm9wZXJ0eShjLGEsZCl7IkAiPT1hLmNoYXJBdCgwKSYmYT09VzBlP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnMoYywhIWQpOnRoaXMuZGVsZWdh''@;'; put 'put ''dGUuc2V0UHJvcGVydHkoYyxhLGQpfXNldFZhbHVlKGMsYSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZShjLGEpfWxpc3RlbihjLGEsZCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKGMsYSxkKX1kaXNhYmxlQW5pbWF0aW9ucyhjLGEpe3RoaXMuZW5naW5lLmRpc2FibGVBbmltYXRpb25z''@;'; put 'put ''KGMsYSl9fWNsYXNzIERVZSBleHRlbmRzIEcwZXtjb25zdHJ1Y3RvcihjLGEsZCxoLGYpe3N1cGVyKGEsZCxoLGYpLHRoaXMuZmFjdG9yeT1jLHRoaXMubmFtZXNwYWNlSWQ9YX1zZXRQcm9wZXJ0eShjLGEsZCl7IkAiPT1hLmNoYXJBdCgwKT8iLiI9PWEuY2hhckF0KDEpJiZhPT1XMGU/dGhp''@;'; put 'put ''cy5kaXNhYmxlQW5pbWF0aW9ucyhjLGQ9dm9pZCAwPT09ZHx8ISFkKTp0aGlzLmVuZ2luZS5wcm9jZXNzKHRoaXMubmFtZXNwYWNlSWQsYyxhLnNsaWNlKDEpLGQpOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkoYyxhLGQpfWxpc3RlbihjLGEsZCl7aWYoIkAiPT1hLmNoYXJBdCgwKSl7Y29u''@;'; put 'put ''c3QgaD1mdW5jdGlvbiBJVWUobCl7c3dpdGNoKGwpe2Nhc2UiYm9keSI6cmV0dXJuIGRvY3VtZW50LmJvZHk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIGRvY3VtZW50O2Nhc2Uid2luZG93IjpyZXR1cm4gd2luZG93O2RlZmF1bHQ6cmV0dXJuIGx9fShjKTtsZXQgZj1hLnNsaWNlKDEpLHY9IiI7''@;'; put 'put ''cmV0dXJuIkAiIT1mLmNoYXJBdCgwKSYmKFtmLHZdPWZ1bmN0aW9uIFJVZShsKXtjb25zdCBjPWwuaW5kZXhPZigiLiIpO3JldHVybltsLnN1YnN0cmluZygwLGMpLGwuc2xpY2UoYysxKV19KGYpKSx0aGlzLmVuZ2luZS5saXN0ZW4odGhpcy5uYW1lc3BhY2VJZCxoLGYsdixTPT57dGhpcy5m''@;'; put 'put ''YWN0b3J5LnNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayhTLl9kYXRhfHwtMSxkLFMpfSl9cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKGMsYSxkKX19Y2xhc3MgTFVle2NvbnN0cnVjdG9yKGMsYSxkKXt0aGlzLmRlbGVnYXRlPWMsdGhpcy5lbmdpbmU9YSx0aGlzLl96b25lPWQsdGhpcy5f''@;'; put 'put ''Y3VycmVudElkPTAsdGhpcy5fbWljcm90YXNrSWQ9MSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W10sdGhpcy5fcmVuZGVyZXJDYWNoZT1uZXcgTWFwLHRoaXMuX2NkUmVjdXJEZXB0aD0wLGEub25SZW1vdmFsQ29tcGxldGU9KGgsZik9Pntjb25zdCB2PWY/LnBhcmVudE5vZGUo''@;'; put 'put ''aCk7diYmZi5yZW1vdmVDaGlsZCh2LGgpfX1jcmVhdGVSZW5kZXJlcihjLGEpe2NvbnN0IGg9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcihjLGEpO2lmKCFjfHwhYT8uZGF0YT8uYW5pbWF0aW9uKXtjb25zdCBRPXRoaXMuX3JlbmRlcmVyQ2FjaGU7bGV0IGRlPVEuZ2V0KGgpO3JldHVy''@;'; put 'put ''biBkZXx8KGRlPW5ldyBHMGUoIiIsaCx0aGlzLmVuZ2luZSwoKT0+US5kZWxldGUoaCkpLFEuc2V0KGgsZGUpKSxkZX1jb25zdCBmPWEuaWQsdj1hLmlkKyItIit0aGlzLl9jdXJyZW50SWQ7dGhpcy5fY3VycmVudElkKyssdGhpcy5lbmdpbmUucmVnaXN0ZXIodixjKTtjb25zdCBTPVE9PntB''@;'; put 'put ''cnJheS5pc0FycmF5KFEpP1EuZm9yRWFjaChTKTp0aGlzLmVuZ2luZS5yZWdpc3RlclRyaWdnZXIoZix2LGMsUS5uYW1lLFEpfTtyZXR1cm4gYS5kYXRhLmFuaW1hdGlvbi5mb3JFYWNoKFMpLG5ldyBEVWUodGhpcyx2LGgsdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRo''@;'; put 'put ''KyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3F1ZXVlTWljcm90YXNrKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pfXNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayhjLGEsZCl7aWYoYz49MCYmYzx0aGlzLl9taWNyb3Rh''@;'; put 'put ''c2tJZClyZXR1cm4gdm9pZCB0aGlzLl96b25lLnJ1bigoKT0+YShkKSk7Y29uc3QgaD10aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI7MD09aC5sZW5ndGgmJnF1ZXVlTWljcm90YXNrKCgpPT57dGhpcy5fem9uZS5ydW4oKCk9PntoLmZvckVhY2goZj0+e2NvbnN0W3YsU109Zjt2KFMp''@;'; put 'put ''fSksdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdfSl9KSxoLnB1c2goW2EsZF0pfWVuZCgpe3RoaXMuX2NkUmVjdXJEZXB0aC0tLDA9PXRoaXMuX2NkUmVjdXJEZXB0aCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX3NjaGVkdWxlQ291bnRUYXNrKCks''@;'; put 'put ''dGhpcy5lbmdpbmUuZmx1c2godGhpcy5fbWljcm90YXNrSWQpfSksdGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1cm4gdGhpcy5lbmdpbmUud2hlblJlbmRlcmluZ0RvbmUoKX19bGV0IE9VZT0oKCk9PntjbGFzcyBsIGV4dGVu''@;'; put 'put ''ZHMgWU17Y29uc3RydWN0b3IoYSxkLGgpe3N1cGVyKGEsZCxoLFpyKGZ2LHtvcHRpb25hbDohMH0pKX1uZ09uRGVzdHJveSgpe3RoaXMuZmx1c2goKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShjcih6cyksY3IoSVkpLGNyKFJZKSl9fXN0YXRp''@;'; put 'put ''Y3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfX1yZXR1cm4gbH0pKCk7Y29uc3QgJDBlPVt7cHJvdmlkZTpSWSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFBVZSgpe3JldHVybiBuZXcgazBlfX0se3Byb3ZpZGU6WU0sdXNlQ2xhc3M6T1VlfSx7cHJvdmlk''@;'; put 'put ''ZTp4Nix1c2VGYWN0b3J5OmZ1bmN0aW9uIEZVZShsLGMsYSl7cmV0dXJuIG5ldyBMVWUobCxjLGEpfSxkZXBzOlt0eixZTSxNb119XSxLWT1be3Byb3ZpZGU6SVksdXNlRmFjdG9yeTooKT0+bmV3IFkwZX0se3Byb3ZpZGU6Y2ssdXNlVmFsdWU6IkJyb3dzZXJBbmltYXRpb25zIn0sLi4uJDBl''@;'; put 'put ''XSxxMGU9W3twcm92aWRlOklZLHVzZUNsYXNzOkRZfSx7cHJvdmlkZTpjayx1c2VWYWx1ZToiTm9vcEFuaW1hdGlvbnMifSwuLi4kMGVdO2xldCBOVWU9KCgpPT57Y2xhc3MgbHtzdGF0aWMgd2l0aENvbmZpZyhhKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6YS5kaXNhYmxlQW5pbWF0''@;'; put 'put ''aW9ucz9xMGU6S1l9fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7cHJvdmlkZXJzOktZLGltcG9ydHM6W0xyZV19KX19cmV0dXJuIGx9''@;'; put 'put ''KSgpLEhVZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLW5vdC1mb3VuZCJdXSxo''@;'; put 'put ''b3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbMSwiY29udGVudC1hcmVhIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiZGl2IiwwKSgxLCJwIiksUGUoMiwiNDA0IC0gTm90IEZvdW5kIiksbWUoKSgpKX19KX19cmV0''@;'; put 'put ''dXJuIGx9KSgpLEswZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fWRvd25sb2FkRmlsZShhLGQsaD0idHh0Iil7bGV0IGY9bmV3IEJsb2IoW2FdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pO2lmKG5hdmlnYXRvci5hcHBWZXJzaW9uLnRvU3RyaW5nKCkuaW5kZXhPZigiLk5FVCIpPjApd2lu''@;'; put 'put ''ZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKGYsYCR7ZH0uJHtofWApO2Vsc2V7bGV0IHY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3YuaHJlZj0iZGF0YTp0ZXh0L3BsYWluLCIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLHYuZG93bmxvYWQ9YCR7ZH0uJHtofWAsZG9jdW1lbnQuYm9keS5h''@;'; put 'put ''cHBlbmRDaGlsZCh2KSx2LmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh2KX19cmVhZEZpbGUoYSl7cmV0dXJuIG5ldyBQcm9taXNlKChkLGgpPT57bGV0IGY9bmV3IEZpbGVSZWFkZXI7Zi5vbmxvYWQ9KCk9PntmLnJlc3VsdCYmZChKU09OLnBhcnNlKGYucmVzdWx0LnRvU3Ry''@;'; put 'put ''aW5nKCkpKX0sZi5yZWFkQXNUZXh0KGEpfSl9Y2xlYXJVcGxvYWRJbnB1dChhKXthLnRhcmdldC52YWx1ZT0iIn1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUw''@;'; put 'put ''Mjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBWVWUobCxjKXsxJmwmJihWcigwKSxnZSgxLCJzcGFuIiwxOSksUGUoMiwiIExvYWRpbmcuLi4gIiksbWUoKSxnZSgzLCJwIiksUGUoNCwiRGVwbG95aW5nLi4uIiksbWUoKSxCcigpKX1mdW5jdGlvbiBC''@;'; put 'put ''VWUobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwzMCl9ZnVuY3Rpb24galVlKGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMzEpfWZ1bmN0aW9uIHpVZShsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDMwKX1mdW5jdGlvbiBVVWUobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwzMSl9ZnVu''@;'; put 'put ''Y3Rpb24gWlVlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyMiksZ3QoMSx6VWUsMSwwLCJjbHItaWNvbiIsMjMpKDIsVVVlLDEsMCwiY2xyLWljb24iLDI0KSxnZSgzLCJwIiksUGUoNCwiQ3JlYXRlIGRhdGFiYXNlIiksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxSZSgibmdJ''@;'; put 'put ''ZiIsYS5hdXRvRGVwbG95U3RhdHVzLnJ1bk1ha2VEYXRhKSxfZSgpLFJlKCJuZ0lmIiwhMT09PWEuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YSl9fWZ1bmN0aW9uIFlVZShsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDMxKX1mdW5jdGlvbiBXVWUobCxjKXtpZigxJmwpe2NvbnN0IGE9''@;'; put 'put ''U24oKTtWcigwKSxnZSgxLCJwIiwyMCksUGUoMiwiRG9uZSIpLG1lKCksWXQoMywiaHIiLDIxKSxnZSg0LCJkaXYiLDIyKSxndCg1LEJVZSwxLDAsImNsci1pY29uIiwyMykoNixqVWUsMSwwLCJjbHItaWNvbiIsMjQpLGdlKDcsInAiKSxQZSg4LCJEZXBsb3kgU0FTIEpvYnMiKSxtZSgpKCks''@;'; put 'put ''Z3QoOSxaVWUsNSwyLCJkaXYiLDI1KSxZdCgxMCwiaHIiLDIxKSxnZSgxMSwiZGl2IiwyNikoMTIsImJ1dHRvbiIsMjcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikubmF2aWdhdGVUb0hvbWUoKSl9KSxndCgxMyxZVWUsMSwwLCJjbHItaWNvbiIsMjQpLFBl''@;'; put 'put ''KDE0LCIgTEFVTkNIIC8gQ09ORklHVVJFICIpLG1lKCksZ2UoMTUsImJ1dHRvbiIsMjgpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBidChoLmRvd25sb2FkRmlsZShoLm1ha2VEYXRhUmVzcG9uc2UsImNyZWF0ZS1kYXRhYmFzZS1sb2ciLCJ0eHQi''@;'; put 'put ''KSl9KSxQZSgxNiwiIERvd25sb2FkIGxvZyAiKSxtZSgpKCksWXQoMTcsImhyIiwyMSksZ2UoMTgsImRpdiIsMjYpKDE5LCJidXR0b24iLDI5KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgyKTtyZXR1cm4gaC5hdXRvZGVwbG95aW5nPSExLGJ0KGguYXV0b2RlcGxv''@;'; put 'put ''eURvbmU9ITEpfSksUGUoMjAsIiBDbG9zZSAiKSxtZSgpLGdlKDIxLCJidXR0b24iLDI5KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLm9wZW5TYXNSZXF1ZXN0c01vZGFsKCkpfSksUGUoMjIsIiBTQVMgUmVxdWVzdHMgIiksbWUoKSgpLEJyKCl9aWYoMiZs''@;'; put 'put ''KXtjb25zdCBhPU5lKDIpO19lKDUpLFJlKCJuZ0lmIixhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2spLF9lKCksUmUoIm5nSWYiLCFhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2spLF9lKDMpLFJlKCJuZ0lmIixudWxsIT09YS5hdXRvRGVwbG95U3RhdHVz''@;'; put 'put ''LnJ1bk1ha2VEYXRhKSxfZSg0KSxSZSgibmdJZiIsITE9PT1hLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2t8fCExPT09YS5hdXRvRGVwbG95U3RhdHVzLnJ1bk1ha2VEYXRhKX19ZnVuY3Rpb24gR1VlKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxNikoMSwiZGl2IiwxNyks''@;'; put 'put ''Z3QoMixWVWUsNSwwLCJuZy1jb250YWluZXIiLDE4KSgzLFdVZSwyMyw0LCJuZy1jb250YWluZXIiLDE4KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDIpLFJlKCJuZ0lmIiwhYS5hdXRvZGVwbG95RG9uZSksX2UoKSxSZSgibmdJZiIsYS5hdXRvZGVwbG95RG9uZSl9fWxldCAkVWU9''@;'; put 'put ''KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmKXt0aGlzLmV2ZW50U2VydmljZT1hLHRoaXMuZGVwbG95U2VydmljZT1kLHRoaXMuc2FzU2VydmljZT1oLHRoaXMubG9nZ2VyU2VydmljZT1mLHRoaXMuc2FzSnNDb25maWc9bmV3IHlkLlNBU2pzQ29uZmlnLHRoaXMuYXBwTG9jPSIi''@;'; put 'put ''LHRoaXMuZGNQYXRoPSIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSIiLHRoaXMub25OYXZpZ2F0ZVRvSG9tZT1uZXcgRHIsdGhpcy5tYWtlRGF0YVJlc3BvbnNlPSIiLHRoaXMuanNvbkZpbGU9bnVsbCx0aGlzLmF1dG9kZXBsb3lpbmc9ITEsdGhpcy5hdXRvZGVwbG95RG9uZT0hMSx0aGlz''@;'; put 'put ''LnJlY3JlYXRlRGF0YWJhc2VNb2RhbD0hMSx0aGlzLmlzU3VibWl0dGluZ0pzb249ITEsdGhpcy5pc0pzb25TdWJtaXR0ZWQ9ITEsdGhpcy5yZWNyZWF0ZURhdGFiYXNlPSExLHRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSExLHRoaXMuYXV0b0RlcGxveVN0YXR1cz17ZGVwbG95U2Vydmlj''@;'; put 'put ''ZVBhY2s6bnVsbCxydW5NYWtlRGF0YTpudWxsfX1uZ09uSW5pdCgpe31leGVjdXRlSnNvbigpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7YS5hdXRvZGVwbG95aW5nPSEwLGEuaXNTdWJtaXR0aW5nSnNvbj0hMDt0cnl7eWllbGQgYS5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayhh''@;'; put 'put ''Lmpzb25GaWxlLGEuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvYyx2b2lkIDAsdm9pZCAwLCEwKSxhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITAsYS5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2goZCl7bGV0IGg9IiI7cmV0dXJuIGg9InN0cmluZyIhPXR5cGVvZiBkLm1l''@;'; put 'put ''c3NhZ2U/SlNPTi5zdHJpbmdpZnkoZCkucmVwbGFjZSgvXFwvZ20sIiIpOmQubWVzc2FnZSxhLmF1dG9EZXBsb3lTdGF0dXMuZGVwbG95U2VydmljZVBhY2s9ITEsYS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiRGVwbG95IGVycm9yIixgRXhjZXB0aW9uOiBcbiAkeyIiIT09aD9oOmR9''@;'; put 'put ''YCksYS5hdXRvZGVwbG95aW5nPSExLHZvaWQoYS5hdXRvZGVwbG95RG9uZT0hMSl9YS5pc1N1Ym1pdHRpbmdKc29uPSExLGEucmVjcmVhdGVEYXRhYmFzZT9hLmNyZWF0ZURhdGFiYXNlKCk6YS5hdXRvZGVwbG95RG9uZT0hMH0pKCl9Y3JlYXRlRGF0YWJhc2UoKXt0aGlzLnNhc0pzLnJlcXVl''@;'; put 'put ''c3QoInNlcnZpY2VzL2FkbWluL21ha2VkYXRhIix7ZnJvbWpzOlt7QURNSU46dGhpcy5zZWxlY3RlZEFkbWluR3JvdXAsRENQQVRIOnRoaXMuZGNQYXRofV19LHt1c2VDb21wdXRlQXBpOiExLGNvbnRleHROYW1lOnRoaXMuc2FzSnNDb25maWcuY29udGV4dE5hbWUsZGVidWc6ITB9LCgpPT57''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlLnNob3VsZExvZ2luLm5leHQoITApfSkudGhlbihoPT57dGhpcy5hdXRvZGVwbG95RG9uZT0hMDt0cnl7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGgpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1ofXRoaXMuYXV0b0RlcGxveVN0YXR1''@;'; put 'put ''cy5ydW5NYWtlRGF0YT0hIShoLnJlc3VsdCYmaC5yZXN1bHQubGVuZ3RoPjApfSkuY2F0Y2goaD0+e3RoaXMuYXV0b0RlcGxveVN0YXR1cy5ydW5NYWtlRGF0YT0hMSx0aGlzLmF1dG9kZXBsb3lEb25lPSEwO3RyeXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9SlNPTi5zdHJpbmdpZnkoaCl9Y2F0''@;'; put 'put ''Y2h7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPWh9fSl9ZG93bmxvYWRGaWxlKGEsZCxoPSJ0eHQiKXt0aGlzLmRlcGxveVNlcnZpY2UuZG93bmxvYWRGaWxlKGEsZCxoKX1vbkpzb25GaWxlQ2hhbmdlKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGg9YS50YXJnZXQuZmls''@;'; put 'put ''ZXNbMF07ZC5qc29uRmlsZT15aWVsZCBkLmRlcGxveVNlcnZpY2UucmVhZEZpbGUoaCl9KSgpfXJlY3JlYXRlRGF0YWJhc2VDbGlja2VkKGEpeyEwPT09YS50YXJnZXQuY2hlY2tlZCYmKHRoaXMucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSEwKX1jbGVhclVwbG9hZElucHV0KGEpe3RoaXMuZGVw''@;'; put 'put ''bG95U2VydmljZS5jbGVhclVwbG9hZElucHV0KGEpfW9wZW5TYXNSZXF1ZXN0c01vZGFsKCl7dGhpcy5ldmVudFNlcnZpY2Uub3BlblJlcXVlc3RzTW9kYWwoKX1uYXZpZ2F0ZVRvSG9tZSgpe3RoaXMub25OYXZpZ2F0ZVRvSG9tZS5lbWl0KCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0''@;'; put 'put ''aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoRGwpLEplKEswZSksSmUodmEpLEplKE8xKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtYXV0b21hdGljLWRlcGxveSJdXSxpbnB1dHM6e3Nhc0pzOiJzYXNKcyIsc2FzSnNDb25maWc6InNhc0pz''@;'; put 'put ''Q29uZmlnIixkY0FkYXB0ZXJTZXR0aW5nczoiZGNBZGFwdGVyU2V0dGluZ3MiLGFwcExvYzoiYXBwTG9jIixkY1BhdGg6ImRjUGF0aCIsc2VsZWN0ZWRBZG1pbkdyb3VwOiJzZWxlY3RlZEFkbWluR3JvdXAifSxvdXRwdXRzOntvbk5hdmlnYXRlVG9Ib21lOiJvbk5hdmlnYXRlVG9Ib21lIn0s''@;'; put 'put ''ZGVjbHM6NDYsdmFyczoxMCxjb25zdHM6W1sidXBsb2FkSnNvbkF1dG8iLCIiXSxbImNsYXNzIiwiYXV0by1kZXBsb3kiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJteS0xNSJdLFsiZm9yIiwiZGNsb2MiLDEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJj''@;'; put 'put ''bHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xyLWlucHV0LXdyYXBwZXIiXSxbMSwibXQtMCJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2xpY2siLCJuZ01vZGVsIl0sWzEsImJ0bi1hdXRvZGVwbG95Iiwi''@;'; put 'put ''YnRuIiwiYnRuLXByaW1hcnkiLCJkLWlubGluZS1ibG9jayIsIm1yLTEwIiwzLCJjbGljayIsImRpc2FibGVkIl0sWzEsImJ0bi1hdXRvZGVwbG95IiwiYnRuIiwiYnRuLXByaW1hcnkiLCJkLWlubGluZS1ibG9jayIsIm1yLTEwIiwzLCJjbGljayJdLFsidHlwZSIsImZpbGUiLCJoaWRkZW4i''@;'; put 'put ''LCIiLDMsImNsaWNrIiwiY2hhbmdlIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0''@;'; put 'put ''bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsxLCJhdXRvLWRlcGxveSJdLFsxLCJzcGlubmVyLWJveCJdLFs0LCJuZ0lmIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLW1kIl0sWzEsIm0tMCIsImFsaWduLXNlbGYtc3RhcnQiXSxbMSwidy0xMDAiXSxbMSwiZGVwbG95LXN0YXR1cy1y''@;'; put 'put ''b3ciXSxbImNsYXNzIiwiZGVwbG95LXN1Y2Nlc3MiLCJzaGFwZSIsInN1Y2Nlc3Mtc3RhbmRhcmQiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGVwbG95LWVycm9yIiwic2hhcGUiLCJ0aW1lcy1jaXJjbGUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZGVwbG95LXN0YXR1cy1yb3ciLDQsIm5nSWYiXSxb''@;'; put 'put ''MSwiYnV0dG9ucyJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsIm10LTE1IiwibXItMCIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXByaW1hcnktb3V0bGluZSIsIm10LTE1IiwibXItMCIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXByaW1hcnktb3V0bGluZSIsIm10LTE1IiwibXItMCIs''@;'; put 'put ''ImFsaWduLXNlbGYtZW5kIiwzLCJjbGljayJdLFsic2hhcGUiLCJzdWNjZXNzLXN0YW5kYXJkIiwxLCJkZXBsb3ktc3VjY2VzcyJdLFsic2hhcGUiLCJ0aW1lcy1jaXJjbGUiLDEsImRlcGxveS1lcnJvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpe2lmKDEmZCl7Y29uc3QgZj1TbigpO2d0''@;'; put 'put ''KDAsR1VlLDQsMiwiZGl2IiwxKSxnZSgxLCJoNCIsMiksUGUoMiwiVml5YSBEZXBsb3kiKSxtZSgpLFl0KDMsImhyIiksZ2UoNCwibGFiZWwiLDMpLFBlKDUsIkFwcCBMb2MiKSxtZSgpLGdlKDYsImRpdiIsNCkoNywiZGl2Iiw1KSg4LCJwIiw2KSxQZSg5KSxtZSgpKCkoKSxnZSgxMCwibGFi''@;'; put 'put ''ZWwiLDMpLFBlKDExLCJEQyBMb2MiKSxtZSgpLGdlKDEyLCJkaXYiLDQpKDEzLCJkaXYiLDUpKDE0LCJwIiw2KSxQZSgxNSksbWUoKSgpKCksZ2UoMTYsImxhYmVsIiwzKSxQZSgxNywiU0FTIEFkbWluIGdyb3VwIiksbWUoKSxnZSgxOCwiZGl2Iiw0KSgxOSwiZGl2Iiw1KSgyMCwicCIsNiks''@;'; put 'put ''UGUoMjEpLG1lKCkoKSgpLGdlKDIyLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDIzLCJpbnB1dCIsNyksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLnJlY3JlYXRlRGF0YWJhc2UsUyl8fChoLnJlY3JlYXRlRGF0YWJhc2U9UyksYnQoUyl9KSxJdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxidChoLnJlY3JlYXRlRGF0YWJhc2VDbGlja2VkKFMpKX0pLG1lKCksZ2UoMjQsImxhYmVsIiksUGUoMjUsIlJlY3JlYXRlIGRhdGFiYXNlIiksbWUoKSgpLFl0KDI2LCJociIpLGdlKDI3LCJidXR0b24iLDgpLEl0KCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5leGVjdXRlSnNvbigpKX0pLFBlKDI4KSxtZSgpLGdlKDI5LCJidXR0b24iLDkpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoR2koMzIpLmNsaWNrKCkpfSksUGUoMzAsIiBVcGxvYWQgZGlmZmVyZW50IGZpbGUgdG8gZGVw''@;'; put 'put ''bG95XG4iKSxtZSgpLGdlKDMxLCJpbnB1dCIsMTAsMCksSXQoImNsaWNrIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksYnQoaC5jbGVhclVwbG9hZElucHV0KFMpKX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxidChoLm9uSnNvbkZpbGVDaGFuZ2UoUykpfSksbWUoKSxn''@;'; put 'put ''ZSgzMywiY2xyLW1vZGFsIiwxMSksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGgucmVjcmVhdGVEYXRhYmFzZU1vZGFsLFMpfHwoaC5yZWNyZWF0ZURhdGFiYXNlTW9kYWw9UyksYnQoUyl9KSxnZSgzNCwiaDMiLDEyKSxQZSgzNSwiV2Fybmlu''@;'; put 'put ''ZyIpLG1lKCksZ2UoMzYsImRpdiIsMTMpLFBlKDM3LCIgVGhpcyBhY3Rpb24gd2lsbCByZWNyZWF0ZSB0aGUgZGF0YWJhc2UgKGlmIGl0IGV4aXN0cykuIEZvciBhbiBpbml0aWFsIGRlcGxveW1lbnQsIHRoaXMgaXMgZXhwZWN0ZWQuIElmIHRoaXMgaXMgYSByZS1kZXBsb3ltZW50LCB5b3Ug''@;'; put 'put ''d2lsbCBsb3NlIGFueSBleGlzdGluZyB0YWJsZXMgaW4gIiksZ2UoMzgsInN0cm9uZyIpLFBlKDM5KSxtZSgpLFBlKDQwLCIuICIpLG1lKCksZ2UoNDEsImRpdiIsMTQpKDQyLCJidXR0b24iLDE1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGgucmVjcmVhdGVEYXRhYmFz''@;'; put 'put ''ZU1vZGFsPSExLGJ0KGgucmVjcmVhdGVEYXRhYmFzZT0hMSl9KSxQZSg0MywiIENhbmNlbCAiKSxtZSgpLGdlKDQ0LCJidXR0b24iLDE1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGgucmVjcmVhdGVEYXRhYmFzZU1vZGFsPSExLGJ0KGgucmVjcmVhdGVEYXRhYmFzZT0h''@;'; put 'put ''MCl9KSxQZSg0NSwiIE9rICIpLG1lKCkoKSgpfTImZCYmKFJlKCJuZ0lmIixoLmF1dG9kZXBsb3lpbmcpLF9lKDkpLGxyKGguYXBwTG9jKSxfZSg2KSxscihoLmRjUGF0aCksX2UoNiksbHIoaC5zZWxlY3RlZEFkbWluR3JvdXApLF9lKDIpLFlyKCJuZ01vZGVsIixoLnJlY3JlYXRlRGF0YWJh''@;'; put 'put ''c2UpLF9lKDQpLFJlKCJkaXNhYmxlZCIsIWguanNvbkZpbGUpLF9lKCksbXIoIiBEZXBsb3kgIixoLmpzb25GaWxlPyIiOiIoanNvbiBmaWxlIGlzIG5vdCBhdmFpbGFibGUpIiwiXG4iKSxfZSg1KSxZcigiY2xyTW9kYWxPcGVuIixoLnJlY3JlYXRlRGF0YWJhc2VNb2RhbCksUmUoImNsck1v''@;'; put 'put ''ZGFsQ2xvc2FibGUiLCExKSxfZSg2KSxscihoLmRjUGF0aCkpfSxkZXBlbmRlbmNpZXM6WyRpLFEwLF9hLHVhLFlhLFBjLGl1LCRzLGExLHMxXSxzdHlsZXM6WyIuYXV0by1kZXBsb3lbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6IzAwMDY7ei1pbmRleDoxMDB9LnNwaW5uZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo0MDBweDtwYWRkaW5nOjIwcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNoYWRvdzoxcHggMXB4IDhweCAjMDAwMDAwODJ9LnNwaW5uZXItYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idXR0b25zW19uZ2NvbnRlbnQtJUNPTVAlXXtk''@;'; put 'put ''aXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX0uZGVwbG95LXN0YXR1cy1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5kZXBsb3ktc3RhdHVzLXJvd1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDAgMTBweH0uZGVwbG95LXN1Y2Nlc3NbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2ZWNmNDR9LmRlcGxveS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2U3NGMzY30uZGVwbG95LXVu''@;'; put 'put ''ZGV0ZXJtaW5hdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojY2FjYWNhfWhyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yNzA1ODgyMzUzKX0iXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgWFk9KCk9Pih7c3RhbmRh''@;'; put 'put ''bG9uZTohMH0pO2Z1bmN0aW9uIHFVZShsLGMpezEmbCYmKGdlKDAsImRpdiIsNikoMSwicCIsNyksUGUoMiwiUGxlYXNlIGxvZyBpbiBmaXJzdCIpLG1lKCksZ2UoMywibGFiZWwiLDgpLFBlKDQsIlVzZXJuYW1lIiksbWUoKSxnZSg1LCJkaXYiLDkpKDYsImRpdiIsMTApLFl0KDcsImlucHV0''@;'; put 'put ''IiwxMSksbWUoKSgpLGdlKDgsImxhYmVsIiwxMiksUGUoOSwiUGFzc3dvcmQiKSxtZSgpLGdlKDEwLCJkaXYiLDkpKDExLCJkaXYiLDEwKSxZdCgxMiwiaW5wdXQiLDEzKSxtZSgpKCksZ2UoMTMsImJ1dHRvbiIsMTQpLFBlKDE0LCJMb2cgaW4iKSxtZSgpKCkpfWZ1bmN0aW9uIEtVZShsLGMp''@;'; put 'put ''e2lmKDEmbCYmKGdlKDAsIm9wdGlvbiIsMzYpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgidmFsdWUiLGEuaWQpLF9lKCksbXIoIiAiLGEubmFtZSwiICIpfX1mdW5jdGlvbiBYVWUobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiksUGUoMSksbWUoKSksMiZsKXtj''@;'; put 'put ''b25zdCBhPU5lKCkuJGltcGxpY2l0O19lKCksbXIoIiggIixhLmF0dHJpYnV0ZXMuc3lzVXNlcklkLCIgKSIpfX1mdW5jdGlvbiBKVWUobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDM2KSxQZSgxKSxndCgyLFhVZSwyLDEsInNwYW4iLDUpLGdhKDMsImpzb24iKSxtZSgpKSwyJmwpe2Nv''@;'; put 'put ''bnN0IGE9Yy4kaW1wbGljaXQ7UmUoInZhbHVlIixhLm5hbWUpLF9lKCksbXIoIiAiLGEubmFtZSwiICIpLF9lKCksUmUoIm5nSWYiLCJ7fSIhPVVsKDMsMyxhLmF0dHJpYnV0ZXMpKX19ZnVuY3Rpb24gUVVlKGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIpLFBlKDEsIkpTT04gU3VibWl0dGVkIFN1''@;'; put 'put ''Y2Nlc3NmdWxseSIpLG1lKCkpfWZ1bmN0aW9uIGVaZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMzcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikuZG93bmxvYWRTYXNQcmVjb2RlRmlsZSgpKX0pLFl0KDEsImNsci1pY29uIiwz''@;'; put 'put ''OCksbWUoKX19ZnVuY3Rpb24gdFplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwicCIsMzkpLFBlKDIsIkZpbGUgZXhlY3V0ZSBjb21wbGV0ZWQiKSxtZSgpLFl0KDMsImhyIiksZ2UoNCwiZGl2IikoNSwiYnV0dG9uIiw0MCksSXQoImNsaWNrIixmdW5jdGlvbigpe190''@;'; put 'put ''KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGJ0KGguZG93bmxvYWRGaWxlKGguam9iTG9nLCJleGVjdXRlLXNjcmlwdC1sb2ciLCJ0eHQiKSl9KSxQZSg2LCIgRG93bmxvYWQgbG9nICIpLG1lKCkoKSxCcigpfX1mdW5jdGlvbiBuWmUobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDQ0KSxQZSgx''@;'; put 'put ''KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxtcigiICIsYS5tYWtlRGF0YVJlc3BvbnNlLCIgIil9fWZ1bmN0aW9uIHJaZShsLGMpezEmbCYmKFZyKDApLGdlKDEsInNwYW4iLDI1KSxQZSgyLCIgVmFsaWRhdGluZyBkZXBsb3kuLi4gIiksbWUoKSxnZSgzLCJzcGFuIiksUGUoNCwi''@;'; put 'put ''IFZhbGlkYXRpbmcgZGVwbG95Li4uICIpLG1lKCksQnIoKSl9ZnVuY3Rpb24gaVplKGwsYyl7MSZsJiYoVnIoMCksWXQoMSwiY2xyLWljb24iLDQ2KSxnZSgyLCJzcGFuIiksUGUoMywiIFZhbGlkYXRpb24gZmFpbGVkICIpLG1lKCksQnIoKSl9ZnVuY3Rpb24gb1plKGwsYyl7MSZsJiYoVnIo''@;'; put 'put ''MCksWXQoMSwiY2xyLWljb24iLDQ3KSxnZSgyLCJzcGFuIiksUGUoMywiIFZhbGlkYXRpb24gc3VjY2VlZGVkICIpLG1lKCksQnIoKSl9ZnVuY3Rpb24gc1plKGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw0NSksZ3QoMSxyWmUsNSwwLCJuZy1jb250YWluZXIiLDUpKDIsaVplLDQsMCwibmct''@;'; put 'put ''Y29udGFpbmVyIiw1KSgzLG9aZSw0LDAsIm5nLWNvbnRhaW5lciIsNSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoIm5nSWYiLGEuaXNWYWxpZGF0aW5nKSxfZSgpLFJlKCJuZ0lmIiwhYS5pc1ZhbGlkYXRpbmcmJiJlcnJvciI9PT1hLnZhbGlkYXRpb25TdGF0ZSksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsIWEuaXNWYWxpZGF0aW5nJiYic3VjY2VzcyI9PT1hLnZhbGlkYXRpb25TdGF0ZSl9fWZ1bmN0aW9uIGFaZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsInAiLDM5KSxQZSgyLCJDcmVhdGUgRGF0YWJhc2UgQ29tcGxldGVkIiksbWUoKSxZdCgzLCJociIp''@;'; put 'put ''LGd0KDQsblplLDIsMSwiZGl2Iiw0MSksZ2UoNSwiYnV0dG9uIiw0MiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5uYXZpZ2F0ZVRvSG9tZSgpKX0pLFBlKDYsIiBMZXQncyBnZXQgc3RhcnRlZCAiKSxtZSgpLGdlKDcsImJ1dHRvbiIsNDIpLEl0KCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBidChoLmRvd25sb2FkRmlsZShoLm1ha2VEYXRhUmVzcG9uc2UsImNyZWF0ZS1kYXRhYmFzZS1sb2ciLCJ0eHQiKSl9KSxQZSg4LCIgRG93bmxvYWQgbG9nICIpLG1lKCksZ2UoOSwiYnV0dG9uIiw0MiksSXQoImNsaWNr''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS52YWxpZGF0ZURlcGxveSgpKX0pLFBlKDEwLCIgVmFsaWRhdGUgIiksbWUoKSxndCgxMSxzWmUsNCwzLCJkaXYiLDQzKSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSg0KSxSZSgibmdJZiIsYS5tYWtlRGF0YVJlc3BvbnNl''@;'; put 'put ''Lmxlbmd0aD4wKSxfZSg3KSxSZSgibmdJZiIsIm5vbmUiIT09YS52YWxpZGF0aW9uU3RhdGV8fGEuaXNWYWxpZGF0aW5nKX19ZnVuY3Rpb24gbFplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiZm9ybSIpKDIsImRpdiIsMTUpKDMsImxhYmVsIiwxNiksUGUoNCwiQWRt''@;'; put 'put ''aW4gZ3JvdXAiKSxtZSgpLGdlKDUsImRpdiIsMTcpKDYsImRpdiIsMTgpKDcsInNlbGVjdCIsMTkpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYuc2VsZWN0ZWRBZG1pbkdyb3VwLGgpfHwoZi5zZWxlY3RlZEFkbWluR3JvdXA9''@;'; put 'put ''aCksYnQoaCl9KSxndCg4LEtVZSwyLDIsIm9wdGlvbiIsMjApLG1lKCkoKSgpKCksZ2UoOSwiZGl2IiwxNSkoMTAsImRpdiIpKDExLCJsYWJlbCIsMTYpLFBlKDEyLCJDb250ZXh0IiksbWUoKSxnZSgxMywiZGl2IiwxNykoMTQsImRpdiIsMTgpKDE1LCJzZWxlY3QiLDIxKSxXcigibmdNb2Rl''@;'; put 'put ''bENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpO3JldHVybiBHcihmLnNlbGVjdGVkQ29udGV4dCxoKXx8KGYuc2VsZWN0ZWRDb250ZXh0PWgpLGJ0KGgpfSksZ3QoMTYsSlVlLDQsNSwib3B0aW9uIiwyMCksbWUoKSgpKCksZ2UoMTcsImJ1dHRvbiIsMjIpLEl0KCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5leGVjdXRhYmxlQ29udGV4dCgpKX0pLFl0KDE4LCJjbHItaWNvbiIsMjMpLG1lKCkoKSxnZSgxOSwiZGl2IiwyNCkoMjAsInNwYW4iLDI1KSxQZSgyMSwiIExvYWRpbmcgY29udGV4dHMuLi4gIiksbWUoKSxnZSgyMiwic3BhbiIp''@;'; put 'put ''LFBlKDIzLCIgTG9hZGluZyBjb250ZXh0cy4uLiAiKSxtZSgpKCksZ2UoMjQsImxhYmVsIiwyNiksUGUoMjUsIkRDIExvYyIpLG1lKCksZ2UoMjYsImRpdiIsOSkoMjcsImRpdiIsMTApKDI4LCJpbnB1dCIsMjcpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBm''@;'; put 'put ''PU5lKCk7cmV0dXJuIEdyKGYuZGNQYXRoLGgpfHwoZi5kY1BhdGg9aCksYnQoaCl9KSxJdCgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuc2F2ZURjUGF0aCgpKX0pLG1lKCkoKSgpLGdlKDI5LCJwIiwyOCksUGUoMzAsIiBTZWxlY3QgSlNPTiBmaWxlIHRvIHVw''@;'; put 'put ''bG9hZCAoanNvbiBidWlsZCBmaWxlIHByZWxvYWRlZCk6ICIpLG1lKCksZ2UoMzEsImRpdiIsMjkpKDMyLCJpbnB1dCIsMzApLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuY2xlYXJVcGxvYWRJbnB1dChoKSl9KSgiY2hhbmdlIixmdW5jdGlvbihoKXtyZXR1''@;'; put 'put ''cm4gX3QoYSksYnQoTmUoKS5vbkpzb25GaWxlQ2hhbmdlKGgpKX0pLG1lKCkoKSxnZSgzMywiZGl2IiwzMSkoMzQsImJ1dHRvbiIsMzIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5leGVjdXRlSnNvbigpKX0pLFBlKDM1LCIgU1VCTUlUIEpTT04gIiksbWUo''@;'; put 'put ''KSxndCgzNixRVWUsMiwwLCJzcGFuIiw1KSxtZSgpLGdlKDM3LCJwIiwyOCksUGUoMzgsIlNlbGVjdCBTQVMgZmlsZSB0byB1cGxvYWQ6IiksbWUoKSxnZSgzOSwiZGl2IiwyOSkoNDAsImlucHV0IiwzMCksSXQoImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5jbGVh''@;'; put 'put ''clVwbG9hZElucHV0KGgpKX0pKCJjaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gZi5vblNhc0ZpbGVDaGFuZ2UoaCksYnQoZi5kb3dubG9hZEZpbGVCdG49ITApfSksbWUoKSxndCg0MSxlWmUsMiwwLCJidXR0b24iLDMzKSxtZSgpLGdlKDQyLCJkaXYiLDMx''@;'; put 'put ''KSg0MywiYnV0dG9uIiwzNCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmV4ZWN1dGVTQVMoKSl9KSxQZSg0NCwiIFNVQk1JVCAiKSxtZSgpKCkoKSxndCg0NSx0WmUsNywwLCJuZy1jb250YWluZXIiLDUpLGdlKDQ2LCJidXR0b24iLDM1KSxJdCgiY2xpY2si''@;'; put 'put ''LGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuY3JlYXRlRGF0YWJhc2UoKSl9KSxQZSg0NywiIENyZWF0ZSBEYXRhYmFzZSAiKSxtZSgpLGd0KDQ4LGFaZSwxMiwyLCJuZy1jb250YWluZXIiLDUpLG1lKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtfZSg3KSxZcigibmdNb2Rl''@;'; put 'put ''bCIsYS5zZWxlY3RlZEFkbWluR3JvdXApLFJlKCJuZ01vZGVsT3B0aW9ucyIsbGEoMTksWFkpKSxfZSgpLFJlKCJuZ0Zvck9mIixhLmFkbWluR3JvdXBzKSxfZSgyKSxwcigiaGlkZGVuIixhLmNvbnRleHRzTG9hZGluZyksX2UoNSksWXIoIm5nTW9kZWwiLGEuc2VsZWN0ZWRDb250ZXh0KSxS''@;'; put 'put ''ZSgibmdNb2RlbE9wdGlvbnMiLGxhKDIwLFhZKSksX2UoKSxSZSgibmdGb3JPZiIsYS5hbGxDb250ZXh0cyksX2UoMykscHIoImhpZGRlbiIsIWEuY29udGV4dHNMb2FkaW5nKSxfZSg5KSxZcigibmdNb2RlbCIsYS5kY1BhdGgpLFJlKCJuZ01vZGVsT3B0aW9ucyIsbGEoMjEsWFkpKSxfZSg2''@;'; put 'put ''KSxSZSgiY2xyTG9hZGluZyIsYS5pc1N1Ym1pdHRpbmdKc29uKSxfZSgyKSxSZSgibmdJZiIsYS5pc0pzb25TdWJtaXR0ZWQpLF9lKDUpLFJlKCJuZ0lmIixhLmRvd25sb2FkRmlsZUJ0biksX2UoMiksUmUoImNsckxvYWRpbmciLGEuZXhlY3V0aW5nU2NyaXB0KSxfZSgyKSxSZSgibmdJZiIs''@;'; put 'put ''YS5qb2JMb2cubGVuZ3RoPjApLF9lKCksUmUoImNsckxvYWRpbmciLGEuY3JlYXRlRGF0YWJhc2VMb2FkaW5nKSxfZSgyKSxSZSgibmdJZiIsYS5tYWtlRGF0YVJlc3BvbnNlLmxlbmd0aD4wKX19bGV0IGNaZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuc2FzU2Vy''@;'; put 'put ''dmljZT1hLHRoaXMuZXZlbnRTZXJ2aWNlPWQsdGhpcy5sb2dnZXJTZXJ2aWNlPWgsdGhpcy5kZXBsb3lTZXJ2aWNlPWYsdGhpcy5zYXNKc0NvbmZpZz1uZXcgeWQuU0FTanNDb25maWcsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBEcix0aGlzLm5lZWRzTG9naW49ITEsdGhpcy5hZG1pbkdy''@;'; put 'put ''b3Vwcz1bXSx0aGlzLmFsbENvbnRleHRzPVtdLHRoaXMuYXBwTG9jPSIiLHRoaXMuZGNQYXRoPSIiLHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSIiLHRoaXMuc2VsZWN0ZWRDb250ZXh0PSIiLHRoaXMuam9iTG9nPSIiLHRoaXMubWFrZURhdGFSZXNwb25zZT0iIix0aGlzLmxpbmVzT2ZDb2Rl''@;'; put 'put ''PVtdLHRoaXMuZmlsZU5hbWU9IiIsdGhpcy5wcmVsb2FkZWRGaWxlPSEwLHRoaXMuZXhlY3V0ZVNBU0VuYWJsZWQ9ITEsdGhpcy5jb250ZXh0c0xvYWRpbmc9ITEsdGhpcy5jcmVhdGVEYXRhYmFzZUxvYWRpbmc9ITEsdGhpcy5leGVjdXRpbmdTY3JpcHQ9ITEsdGhpcy5kb3dubG9hZEZpbGVC''@;'; put 'put ''dG49ITEsdGhpcy5pc1ZhbGlkYXRpbmc9ITEsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuaXNTdWJtaXR0aW5nSnNvbj0hMSx0aGlzLmlzSnNvblN1Ym1pdHRlZD0hMSx0aGlzLnZhbGlkYXRpb25TdGF0ZT0ibm9uZSJ9bmdPbkluaXQoKXt9ZXhlY3V0YWJsZUNvbnRleHQoKXtyZXR1cm4gWShm''@;'; put 'put ''dW5jdGlvbiooKXt9KSgpfWNsZWFyVXBsb2FkSW5wdXQoYSl7dGhpcy5kZXBsb3lTZXJ2aWNlLmNsZWFyVXBsb2FkSW5wdXQoYSl9b25TYXNGaWxlQ2hhbmdlKGEpe3RoaXMucHJlbG9hZGVkRmlsZT0hMTtsZXQgZD1hLnRhcmdldC5maWxlc1swXTt0aGlzLmZpbGVOYW1lPWQubmFtZTtsZXQg''@;'; put 'put ''aD1uZXcgRmlsZVJlYWRlcjtoLm9ubG9hZD0oKT0+e2gucmVzdWx0JiYodGhpcy5saW5lc09mQ29kZT1oLnJlc3VsdC5zcGxpdCgiXG4iKSx0aGlzLmxpbmVzT2ZDb2RlPXRoaXMubGluZXNPZkNvZGUuZmlsdGVyKGY9PiIiIT09ZiYmbnVsbCE9PWYpLHRoaXMuZXhlY3V0ZVNBU0VuYWJsZWQ9''@;'; put 'put ''ITAsdGhpcy5hZGRQcmVjb2RlTGluZXMoKSl9LGgucmVhZEFzVGV4dChkKX1vbkpzb25GaWxlQ2hhbmdlKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGg9YS50YXJnZXQuZmlsZXNbMF07ZC5qc29uRmlsZT15aWVsZCBkLmRlcGxveVNlcnZpY2UucmVhZEZpbGUoaCl9''@;'; put 'put ''KSgpfWFkZFByZWNvZGVMaW5lcygpe3RoaXMubGluZXNPZkNvZGUudW5zaGlmdChgJWxldCBjb250ZXh0PSR7dGhpcy5zZWxlY3RlZENvbnRleHR9O2AsYCVsZXQgYXBwTG9jPSR7dGhpcy5hcHBMb2N9O2AsYCVsZXQgYWRtaW49JHt0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cH07YCxgJWxldCBk''@;'; put 'put ''Y3BhdGg9JHt0aGlzLmRjUGF0aH07YCl9ZG93bmxvYWRTYXNQcmVjb2RlRmlsZSgpe2xldCBhPXRoaXMubGluZXNPZkNvZGUuam9pbigiXG4iKSxkPXRoaXMuZmlsZU5hbWUuc3BsaXQoIi4iKVswXTt0aGlzLmRvd25sb2FkRmlsZShhLGQsInNhcyIpfWRvd25sb2FkRmlsZShhLGQsaD0idHh0''@;'; put 'put ''Iil7dGhpcy5kZXBsb3lTZXJ2aWNlLmRvd25sb2FkRmlsZShhLGQsaCl9c2F2ZURjUGF0aCgpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCJkZXBsb3lfZGNfbG9jIix0aGlzLmRjUGF0aCl9ZXhlY3V0ZUpzb24oKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2EuaXNTdWJtaXR0aW5n''@;'; put 'put ''SnNvbj0hMDt0cnl7eWllbGQgYS5zYXNKcy5kZXBsb3lTZXJ2aWNlUGFjayhhLmpzb25GaWxlLGEuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvY3x8IiIsdm9pZCAwLHZvaWQgMCwhMCksYS5pc0pzb25TdWJtaXR0ZWQ9ITB9Y2F0Y2goZCl7bGV0IGg9IiI7cmV0dXJuIGg9InN0cmluZyIhPXR5''@;'; put 'put ''cGVvZiBkLm1lc3NhZ2U/SlNPTi5zdHJpbmdpZnkoZCkucmVwbGFjZSgvXFwvZ20sIiIpOmQubWVzc2FnZSx2b2lkIGEuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkRlcGxveSBlcnJvciIsYEV4Y2VwdGlvbjogXG4gJHsiIiE9PWg/aDpkfWApfWEuaXNTdWJtaXR0aW5nSnNvbj0hMX0p''@;'; put 'put ''KCl9ZXhlY3V0ZVNBUygpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7YS5leGVjdXRpbmdTY3JpcHQ9ITAsYS5qb2JMb2c9IiIsYS5tYWtlRGF0YVJlc3BvbnNlPSIiO3RyeXtsZXQgZD15aWVsZCBhLnNhc0pzLmV4ZWN1dGVTY3JpcHQoe2ZpbGVOYW1lOmEuZmlsZU5hbWUsbGlu''@;'; put 'put ''ZXNPZkNvZGU6YS5saW5lc09mQ29kZSxjb250ZXh0TmFtZTphLnNlbGVjdGVkQ29udGV4dH0pO2EubG9nZ2VyU2VydmljZS5sb2coZCksInN0cmluZyI9PXR5cGVvZiBkLmxvZyYmKGQubG9nPUpTT04ucGFyc2UoZC5sb2cpKSwiZXJyb3IiPT09ZC5qb2JTdGF0dXM/YWxlcnQoIkVycm9yISIp''@;'; put 'put ''OmEuam9iTG9nPWQubG9nLml0ZW1zP2QubG9nLml0ZW1zLm1hcChoPT5oLmxpbmUpLmpvaW4oIlxuIik6SlNPTi5zdHJpbmdpZnkoZC5sb2cpLGEuZXhlY3V0aW5nU2NyaXB0PSExfWNhdGNoe2EuZXhlY3V0aW5nU2NyaXB0PSExfX0pKCl9Y3JlYXRlRGF0YWJhc2UoYT0hMCl7aWYoYSl7bGV0''@;'; put 'put ''IGY9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCkuc2VydmVyVXJsKyIvU0FTSm9iRXhlY3V0aW9uLz9fcHJvZ3JhbT0iK3RoaXMuZGNBZGFwdGVyU2V0dGluZ3M/LmFwcExvY3x8Ii9hZG1pbi9tYWtlZGF0YSZBRE1JTj0iK3RoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwKyImRENQQVRI''@;'; put 'put ''PSIrdGhpcy5kY1BhdGgrIiZfZGVidWc9MTMxIjt3aW5kb3cub3BlbihmLCJfYmxhbmsiKX1lbHNlIHRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSEwLHRoaXMuc2FzSnMucmVxdWVzdCgic2VydmljZXMvYWRtaW4vbWFrZWRhdGEiLHtmcm9tanM6W3tBRE1JTjp0aGlzLnNlbGVjdGVkQWRt''@;'; put 'put ''aW5Hcm91cCxEQ1BBVEg6dGhpcy5kY1BhdGh9XX0se3VzZUNvbXB1dGVBcGk6ITEsY29udGV4dE5hbWU6dGhpcy5zYXNKc0NvbmZpZy5jb250ZXh0TmFtZSxkZWJ1ZzohMH0sKCk9Pnt0aGlzLnNhc1NlcnZpY2Uuc2hvdWxkTG9naW4ubmV4dCghMCl9KS50aGVuKGY9Pnt0cnl7dGhpcy5tYWtl''@;'; put 'put ''RGF0YVJlc3BvbnNlPUpTT04uc3RyaW5naWZ5KGYpfWNhdGNoe3RoaXMubWFrZURhdGFSZXNwb25zZT1mfXRoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSExfSkuY2F0Y2goZj0+e3RoaXMuY3JlYXRlRGF0YWJhc2VMb2FkaW5nPSExO3RyeXt0aGlzLm1ha2VEYXRhUmVzcG9uc2U9SlNPTi5z''@;'; put 'put ''dHJpbmdpZnkoZil9Y2F0Y2h7dGhpcy5tYWtlRGF0YVJlc3BvbnNlPWZ9fSl9bmF2aWdhdGVUb0hvbWUoKXt0aGlzLm9uTmF2aWdhdGVUb0hvbWUuZW1pdCgpfXZhbGlkYXRlRGVwbG95KCl7dGhpcy5pc1ZhbGlkYXRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9zdGFy''@;'; put 'put ''dHVwc2VydmljZSIsbnVsbCkudGhlbihhPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyhhLmFkYXB0ZXJSZXNwb25zZSksdGhpcy52YWxpZGF0aW9uU3RhdGU9YS5hZGFwdGVyUmVzcG9uc2Uuc2FzbGlicz8ic3VjY2VzcyI6ImVycm9yIix0aGlzLmlzVmFsaWRhdGluZz0hMX0pLmNhdGNoKGE9''@;'; put 'put ''Pnt0aGlzLmlzVmFsaWRhdGluZz0hMSx0aGlzLnZhbGlkYXRpb25TdGF0ZT0iZXJyb3IifSl9ZGVsZXRlS2V5cygpe2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJkZXBsb3lfZGNfbG9jIil9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUodmEp''@;'; put 'put ''LEplKERsKSxKZShPMSksSmUoSzBlKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbWFudWFsLWRlcGxveSJdXSxpbnB1dHM6e3Nhc0pzOiJzYXNKcyIsc2FzSnNDb25maWc6InNhc0pzQ29uZmlnIixkY0FkYXB0ZXJTZXR0aW5nczoiZGNBZGFw''@;'; put 'put ''dGVyU2V0dGluZ3MifSxvdXRwdXRzOntvbk5hdmlnYXRlVG9Ib21lOiJvbk5hdmlnYXRlVG9Ib21lIn0sZGVjbHM6OSx2YXJzOjMsY29uc3RzOltbMSwiY2FyZC1oZWFkZXIiLCJwb3NpdGlvbi1yZWxhdGl2ZSJdLFsxLCJkLWlubGluZS1ibG9jayIsIm1sLTEwIiwibWItMTAiLCJtdC0wIl0s''@;'; put 'put ''WzEsImJ0biIsImJ0bi1wcmltYXJ5IiwiY2xlYXItbWVtb3J5LWJ1dHRvbiIsInBvc2l0aW9uLWFic29sdXRlIiwzLCJjbGljayJdLFsxLCJjYXJkLWJsb2NrIl0sWyJpZCIsImxvZ2luRm9ybSIsImNsYXNzIiwiZC1ub25lIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbImlkIiwibG9naW5Gb3Jt''@;'; put 'put ''IiwxLCJkLW5vbmUiXSxbMSwibWItMTAiXSxbImZvciIsInVzZXJuYW1lIiwxLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJtYi0xMCIsImNsci1jb250cm9sLWNvbnRhaW5lciJdLFsxLCJjbHItaW5wdXQtd3JhcHBlciJdLFsidHlwZSIsInRleHQiLCJpZCIsInVzZXJuYW1lIiwxLCJjbHIt''@;'; put 'put ''aW5wdXQiXSxbImZvciIsInBhc3N3b3JkIiwxLCJjbHItY29udHJvbC1sYWJlbCJdLFsidHlwZSIsInBhc3N3b3JkIiwiaWQiLCJwYXNzd29yZCIsMSwiY2xyLWlucHV0Il0sWyJpZCIsImxvZ2luQnRuIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsImQtbm9uZSJdLFsxLCJjbHItZm9ybS1jb250''@;'; put 'put ''cm9sIl0sWyJmb3IiLCJzZWxlY3QtZnVsbCIsMSwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwiY2xyLWNvbnRyb2wtY29udGFpbmVyIl0sWzEsImNsci1zZWxlY3Qtd3JhcHBlciJdLFsibmFtZSIsInNlbGVjdGVkQWRtaW5Hcm91cCIsImlkIiwiYWRtaW5Hcm91cHNTZWxlY3QiLDEsImNsci1z''@;'; put 'put ''ZWxlY3QiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsibmFtZSIsInNlbGVjdGVkQ29udGV4dCIsMSwiY2xyLXNlbGVjdCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJuZ01vZGVsT3B0''@;'; put 'put ''aW9ucyJdLFsidHlwZSIsImJ1dHRvbiIsImlkIiwiY29udGV4dHMtYnRuIiwxLCJidG4iLCJidG4taWNvbiIsMywiY2xpY2siXSxbInNoYXBlIiwicGxheSJdLFsxLCJkLWZsZXgiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwibXItMTAiXSxbImZvciIsImRjbG9jIiwxLCJtdC0y''@;'; put 'put ''MCIsImNsci1jb250cm9sLWxhYmVsIl0sWyJuYW1lIiwiZGNQYXRoIiwidHlwZSIsInRleHQiLCJpZCIsImRjbG9jIiwxLCJjbHItaW5wdXQiLDMsIm5nTW9kZWxDaGFuZ2UiLCJmb2N1c291dCIsIm5nTW9kZWwiLCJuZ01vZGVsT3B0aW9ucyJdLFsxLCJtdC0xMCJdLFsxLCJkLWZsZXgiLCJm''@;'; put 'put ''bGV4LWNvbHVtbiJdLFsidHlwZSIsImZpbGUiLDMsImNsaWNrIiwiY2hhbmdlIl0sWzEsIm10LTIwIiwiZC1mbGV4IiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJpZCIsIiIsMSwibXQtMCIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWyJjbGFzcyIsImJ0biBidG4tc20gYnRuLWljb24gbWlu''@;'; put 'put ''LXctMCB3LTQwIiwzLCJjbGljayIsNCwibmdJZiJdLFsiaWQiLCJkZXBsb3kiLDEsIm10LTAiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsIm10LTEwIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbMywidmFsdWUiXSxbMSwiYnRuIiwiYnRuLXNtIiwi''@;'; put 'put ''YnRuLWljb24iLCJtaW4tdy0wIiwidy00MCIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbMSwibWItMCIsIm10LTEwIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXQtMCIsIm1yLTIwIiwzLCJjbGljayJdLFsiY2xhc3MiLCJsb2ctd3JhcHBlciIsNCwibmdJZiJdLFsxLCJi''@;'; put 'put ''dG4iLCJidG4tcHJpbWFyeSIsIm10LTE1IiwzLCJjbGljayJdLFsiY2xhc3MiLCJ2YWxpZGF0aW9uLWJhciIsNCwibmdJZiJdLFsxLCJsb2ctd3JhcHBlciJdLFsxLCJ2YWxpZGF0aW9uLWJhciJdLFsic2hhcGUiLCJleGNsYW1hdGlvbi1jaXJjbGUiLDEsImlzLWVycm9yIl0sWyJzaGFwZSIs''@;'; put 'put ''ImNoZWNrLWNpcmNsZSIsMSwiaXMtc3VjY2VzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImRpdiIsMCksUGUoMSwiIENvbmZpZ3VyYXRvciAiKSxnZSgyLCJwIiwxKSxQZSgzKSxtZSgpLGdlKDQsImJ1dHRvbiIsMiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBoLmRlbGV0ZUtleXMoKX0pLFBlKDUsIiBDbGVhciBtZW1vcnkgIiksbWUoKSgpLGdlKDYsImRpdiIsMyksZ3QoNyxxVWUsMTUsMCwiZGl2Iiw0KSg4LGxaZSw0OSwyMiwibmctY29udGFpbmVyIiw1KSxtZSgpKSwyJmQmJihfZSgzKSxtcigiQXBwIExvY2F0aW9uOiAiLGguYXBwTG9jLCIi''@;'; put 'put ''KSxfZSg0KSxSZSgibmdJZiIsaC5uZWVkc0xvZ2luKSxfZSgpLFJlKCJuZ0lmIiwhaC5uZWVkc0xvZ2luKSl9LGRlcGVuZGVuY2llczpbVnMsJGksdTgsRzIsJDIsdWwsVzIsX2EsbDgsdWEsTTMsWWEsbDAsRGgsJHMsV2pdLHN0eWxlczpbIi5jbGVhci1tZW1vcnktYnV0dG9uW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXXtyaWdodDoxMHB4O3RvcDoycHh9Il19KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIHVaZShsLGMpezEmbCYmKGdlKDAsImRpdiIsMTUpLFl0KDEsInByb2dyZXNzIiksbWUoKSl9ZnVuY3Rpb24gZFplKGwsYyl7aWYoMSZsJiYoZ2UoMCwib3B0aW9uIiwxNiksUGUoMSksbWUo''@;'; put 'put ''KSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJ2YWx1ZSIsYS5HUk9VUE5BTUUpLF9lKCksX3UoIiAiLGEuR1JPVVBOQU1FLCIgLSAiLGEuR1JPVVBERVNDLCIgIil9fWxldCBoWmU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5zYXNTZXJ2aWNlPWEsdGhpcy5z''@;'; put 'put ''YXNqc1NlcnZpY2U9ZCx0aGlzLmxvY2F0aW9uPWgsdGhpcy5zYXNKc0NvbmZpZz1uZXcgeWQuU0FTanNDb25maWcsdGhpcy5vbk5hdmlnYXRlVG9Ib21lPW5ldyBEcix0aGlzLmRjRGlyZWN0b3J5PSIiLHRoaXMuZGNBZG1pbkdyb3VwPSJEQ0RFRkFVTFQiLHRoaXMuTUVUQVBFUlNPTj0ibi9h''@;'; put 'put ''Iix0aGlzLk1FVEFVU0VSPSJuL2EiLHRoaXMuU1lTVVNFUklEPSJuL2EiLHRoaXMuU1lTSE9TVE5BTUU9Im4vYSIsdGhpcy5TWVNWTE9ORz0ibi9hIix0aGlzLmRjQWRtaW5Hcm91cExpc3Q9W10sdGhpcy5sb2FkaW5nPSExLHRoaXMuc2hvd0xvZ291dD0hMSx0aGlzLnRtcERpcmVjdG9yaWVz''@;'; put 'put ''PXtsaW51eDoiL3RtcC9EYXRhQ29udHJvbGxlciIsd2luZG93czoiQzpcXERhdGFDb250cm9sbGVyIn19bmdPbkluaXQoKXt0aGlzLmdldFVzZXJHcm91cHMoKSx0aGlzLmdldFNlcnZlckluZm8oKX1nZXRTZXJ2ZXJJbmZvKCl7dGhpcy5zYXNqc1NlcnZpY2UuZ2V0U2VydmVySW5mbygpLnN1''@;'; put 'put ''YnNjcmliZShhPT57ImRlc2t0b3AiIT09YS5tb2RlJiYodGhpcy5zaG93TG9nb3V0PSEwKX0pfWdldFVzZXJHcm91cHMoKXt0aGlzLmxvYWRpbmc9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcmdyb3Vwc2J5bWVtYmVyIixudWxsKS50aGVuKGE9Pnt0aGlzLk1FVEFQ''@;'; put 'put ''RVJTT049YS5hZGFwdGVyUmVzcG9uc2UuTUZfR0VUVVNFUix0aGlzLlNZU1VTRVJJRD1hLmFkYXB0ZXJSZXNwb25zZS5TWVNVU0VSSUQsdGhpcy5TWVNIT1NUTkFNRT1hLmFkYXB0ZXJSZXNwb25zZS5TWVNIT1NUTkFNRSx0aGlzLlNZU1ZMT05HPWEuYWRhcHRlclJlc3BvbnNlLlNZU1ZMT05H''@;'; put 'put ''LHRoaXMuZGNEaXJlY3Rvcnk9dGhpcy50bXBEaXJlY3Rvcmllc1tbIkwiLCJIIiwiQSIsIlMiXS5pbmNsdWRlcyhhLmFkYXB0ZXJSZXNwb25zZS5TWVNTQ1BMLnN1YnN0cmluZygwLDEpKT8ibGludXgiOiJ3aW5kb3dzIl0sdGhpcy5kY0FkbWluR3JvdXBMaXN0PWEuYWRhcHRlclJlc3BvbnNl''@;'; put 'put ''Lmdyb3Vwcyx0aGlzLmRjQWRtaW5Hcm91cD10aGlzLmRjQWRtaW5Hcm91cExpc3RbMF0uR1JPVVBOQU1FLHRoaXMubG9hZGluZz0hMX0sYT0+e3RoaXMubG9hZGluZz0hMX0pfW1ha2VEYXRhKCl7bGV0IGQ9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTtjb25zdCBoPXRoaXMu''@;'; put 'put ''c2FzSnNDb25maWcuYXBwTG9jO2xldCBmPXRoaXMuc2FzSnNDb25maWcuc2VydmVyVXJsLHY9dGhpcy5kY0RpcmVjdG9yeTt0aGlzLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1CdS5ZLlNhc2pzP3RoaXMuc2FzU2VydmljZS5zYXNqc01ha2VkYXRhQ2hlY2tpbmcoKS50aGVuKFY9PntWJiYo''@;'; put 'put ''dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi8iKSxsb2NhdGlvbi5yZWxvYWQoKSl9KTp0aGlzLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1CdS5ZLlNhczkmJihmPSIiLGQ9d2luZG93LmxvY2F0aW9uLm9yaWdpbitkKyIvIix2PWVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmRjRGlyZWN0''@;'; put 'put ''b3J5KSksd2luZG93Lm9wZW4oYCR7Znx8IiJ9JHtkfT9fcHJvZ3JhbT0ke2h9L3NlcnZpY2VzL2FkbWluL21ha2VkYXRhJmFkbWluPSR7dGhpcy5kY0FkbWluR3JvdXB9JnBhdGg9JHt2fSBgLCJfYmxhbmsiKX1sb2dvdXQoKXt0aGlzLnNhc1NlcnZpY2UubG9nb3V0KCl9c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUodmEpLEplKEdzZSksSmUobWQpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1zYXNqcy1jb25maWd1cmF0b3IiXV0saW5wdXRzOntzYXNKczoic2FzSnMiLHNhc0pzQ29u''@;'; put 'put ''ZmlnOiJzYXNKc0NvbmZpZyIsZGNBZGFwdGVyU2V0dGluZ3M6ImRjQWRhcHRlclNldHRpbmdzIn0sb3V0cHV0czp7b25OYXZpZ2F0ZVRvSG9tZToib25OYXZpZ2F0ZVRvSG9tZSJ9LGRlY2xzOjQxLHZhcnM6OSxjb25zdHM6W1siY2xhc3MiLCJ0aGluUHJvZ3Jlc3MgcHJvZ3Jlc1N0YXRpYyBw''@;'; put 'put ''cm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWzEsInRleHQtY2VudGVyIiwibXktMTUiXSxbMSwibGlnaHQiXSxbMSwibS0wIl0sWzEsIm0tMCIsIm10LTEwIl0sWzEsIm10LTIwIiwiY2xyLWNvbnRyb2wtbGFiZWwiXSxbMSwibWItMTAiLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbMSwiY2xy''@;'; put 'put ''LWlucHV0LXdyYXBwZXIiXSxbInBsYWNlaG9sZGVyIiwiVHlwZSBpbiBkaXJlY3RvcnkiLDEsImNsci1pbnB1dCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMSwibWItMTAiLCJtdC0wIiwidy01MHZ3Il0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVs''@;'; put 'put ''Il0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY2xyLWZsZXgiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLCJtdC0xNSIsInRleHQtY2VudGVyIiwzLCJjbGljayJdLFsxLCJjYXJkLXRleHQiLCJwYi0xMCJdLFsxLCJ0aGluUHJvZ3Jlc3MiLCJwcm9ncmVzU3RhdGljIiwi''@;'; put 'put ''cHJvZ3Jlc3MiLCJsb29wIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ3QoMCx1WmUsMiwwLCJkaXYiLDApLGdlKDEsImg0IiwxKSxQZSgyLCJTYXNqcyBEZXBsb3kiKSxtZSgpLFl0KDMsImhyIiwyKSxnZSg0LCJwIiwzKSxQZSg1LCIgVG8gY29uZmlndXJl''@;'; put 'put ''IERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhOSwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkZXRhaWxzOlxuIiksbWUoKSxnZSg2LCJwIiw0KSxQZSg3LCIgUGxlYXNlIHNwZWNpZnkgYSBwaHlzaWNhbCBkaXJlY3RvcnkgYmVsb3csIHRvIHdoaWNoIHVzZXIgIiksZ2UoOCwic3Ry''@;'; put 'put ''b25nIiksUGUoOSksbWUoKSxQZSgxMCwiIGNhbiB3cml0ZSwgb24gYmVoYWxmIG9mIERhdGEgQ29udHJvbGxlcjpcbiIpLG1lKCksZ2UoMTEsImxhYmVsIiw1KSxQZSgxMiwiREMgRGlyZWN0b3J5IiksbWUoKSxnZSgxMywiZGl2Iiw2KSgxNCwiZGl2Iiw3KSgxNSwiaW5wdXQiLDgpLFdyKCJu''@;'; put 'put ''Z01vZGVsQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC5kY0RpcmVjdG9yeSx2KXx8KGguZGNEaXJlY3Rvcnk9diksdn0pLG1lKCkoKSgpLGdlKDE2LCJwIiw0KSxQZSgxNywiIEJlbG93IGFyZSB0aGUgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggeW91IGJlbG9uZy4gVGhlIGdyb3Vw''@;'; put 'put ''IHlvdSBzZWxlY3Qgd2lsbCBiZWNvbWUgdGhlIERhdGEgQ29udHJvbGxlciBBZG1pbiBHcm91cCwgYW5kIGV2ZXJ5b25lIGluIGl0IHdpbGwgaGF2ZSB1bnJlc3RyaWN0ZWQgYWNjZXNzIHRvIERhdGEgQ29udHJvbGxlci5cbiIpLG1lKCksZ2UoMTgsImxhYmVsIiw1KSxQZSgxOSwiRGF0YSBD''@;'; put 'put ''b250cm9sbGVyIEFkbWluIGdyb3VwIiksbWUoKSxnZSgyMCwiY2xyLXNlbGVjdC1jb250YWluZXIiLDkpKDIxLCJzZWxlY3QiLDEwKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIEdyKGguZGNBZG1pbkdyb3VwLHYpfHwoaC5kY0FkbWluR3JvdXA9diksdn0pLGd0KDIy''@;'; put 'put ''LGRaZSwyLDMsIm9wdGlvbiIsMTEpLG1lKCkoKSxnZSgyMywicCIsNCksUGUoMjQsIiBOb3csIGNyZWF0ZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgZGVwbG95IHRoZSBjb250cm9sIGxpYnJhcnkgdXNpbmcgdGhlIGFkbWluIGdyb3VwIHNlbGVjdGVkIGFib3ZlOlxuIiksbWUoKSxnZSgy''@;'; put 'put ''NSwiZGl2IiwxMikoMjYsImJ1dHRvbiIsMTMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaC5tYWtlRGF0YSgpfSksUGUoMjcsIiBTVUJNSVQgIiksbWUoKSgpLFl0KDI4LCJociIsMiksZ2UoMjksImRpdiIsMTQpKDMwLCJwIiksUGUoMzEsIllvdSBhcmUgY29ubmVjdGVkIHdpdGgg''@;'; put 'put ''dGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoiKSxtZSgpLGdlKDMyLCJ1bCIpKDMzLCJsaSIpLFBlKDM0KSxtZSgpLGdlKDM1LCJsaSIpLFBlKDM2KSxtZSgpLGdlKDM3LCJsaSIpLFBlKDM4KSxtZSgpLGdlKDM5LCJsaSIpLFBlKDQwKSxtZSgpKCkoKSksMiZkJiYoUmUoIm5nSWYiLGgubG9h''@;'; put 'put ''ZGluZyksX2UoOSksbHIoaC5TWVNVU0VSSUQpLF9lKDYpLFlyKCJuZ01vZGVsIixoLmRjRGlyZWN0b3J5KSxfZSg2KSxZcigibmdNb2RlbCIsaC5kY0FkbWluR3JvdXApLF9lKCksUmUoIm5nRm9yT2YiLGguZGNBZG1pbkdyb3VwTGlzdCksX2UoMTIpLG1yKCJNRVRBUEVSU09OOiAiLGguTUVU''@;'; put 'put ''QVBFUlNPTiwiIiksX2UoMiksbXIoIlNZU1VTRVJJRDogIixoLlNZU1VTRVJJRCwiIiksX2UoMiksbXIoIlNZU0hPU1ROQU1FOiAiLGguU1lTSE9TVE5BTUUsIiIpLF9lKDIpLG1yKCJTWVNWTE9ORzogIixoLlNZU1ZMT05HLCIiKSl9LGRlcGVuZGVuY2llczpbVnMsJGksRzIsJDIsdWwsVzIs''@;'; put 'put ''X2EsdWEsJHMsWl8sVV9dLHN0eWxlczpbIi5jbHItY29udHJvbC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjUwdnd9LmNsci1pbnB1dC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNsci1pbnB1dC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS50aGluUHJvZ3Jlc3NbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MDtyaWdodDowO3dpZHRoOnVuc2V0O2hlaWdodDoxcHg7bWFyZ2luLXRvcDowIWltcG9ydGFudH0udGhpblByb2dyZXNzW19uZ2NvbnRlbnQtJUNPTVAlXTphZnRlcnt0b3A6''@;'; put 'put ''MH0iXX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gZlplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw0KSgxLCJkaXYiLDUpLFBlKDIsIlRlcm1zIGFuZCBDb25kaXRpb25zIiksbWUoKSxnZSgzLCJkaXYiLDYpKDQsImRpdiIsNykoNSwicCIpLFBlKDYsIiBUaGUgRGVt''@;'; put 'put ''byB2ZXJzaW9uIG9mIERhdGEgQ29udHJvbGxlciBpcyBmcmVlIGZvciBFVkFMVUFUSU9OIHB1cnBvc2VzIG9ubHkuIEJlZm9yZSBwcm9jZWVkaW5nIHdpdGggY29uZmlndXJhdGlvbiwgcGxlYXNlIGNvbmZpcm0gdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLCBhbmQgYWdyZWVkIHRv''@;'; put 'put ''IHRoZSAiKSxnZSg3LCJhIiw4KSxQZSg4LCJEYXRhIENvbnRyb2xsZXIgZm9yIFNBU1x4YTkgRXZhbHVhdGlvbiBBZ3JlZW1lbnQiKSxtZSgpLFBlKDksIi4gIiksbWUoKSgpLFl0KDEwLCJociIsOSksZ2UoMTEsImNsci1jaGVja2JveC13cmFwcGVyIikoMTIsImlucHV0IiwxMCksSXQoImNo''@;'; put 'put ''YW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS50ZXJtc0FncmVlQ2hhbmdlKCkpfSksbWUoKSxnZSgxMywibGFiZWwiKSxQZSgxNCwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHRvIHRoZSB0ZXJtcyBvZiB0aGUgIiksZ2UoMTUsImEiLDgpLFBlKDE2LCJEYXRhIENvbnRyb2xs''@;'; put 'put ''ZXIgZm9yIFNBU1x4YTkgRXZhbHVhdGlvbiBBZ3JlZW1lbnQiKSxtZSgpKCkoKSgpKCl9fWZ1bmN0aW9uIHBaZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTUpKDEsImFwcC1hdXRvbWF0aWMtZGVwbG95IiwxNiksSXQoIm9uTmF2aWdhdGVUb0hvbWUiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIF90KGEpLGJ0KE5lKDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoInNhc0pzIixhLnNhc0pzKSgic2FzSnNDb25maWciLGEuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsYS5kY0FkYXB0ZXJTZXR0''@;'; put 'put ''aW5ncykoImFwcExvYyIsYS5hcHBMb2MpKCJkY1BhdGgiLGEuZGNQYXRoKSgic2VsZWN0ZWRBZG1pbkdyb3VwIixhLnNlbGVjdGVkQWRtaW5Hcm91cCl9fWZ1bmN0aW9uIGdaZShsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTcpKDEsImFwcC1tYW51YWwtZGVwbG95Iiwx''@;'; put 'put ''OCksSXQoIm9uTmF2aWdhdGVUb0hvbWUiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDMpLm9uTmF2aWdhdGVUb0hvbWUoKSl9KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoInNhc0pzIixhLnNhc0pzKSgic2FzSnNDb25maWciLGEuc2FzSnNDb25maWcpKCJk''@;'; put 'put ''Y0FkYXB0ZXJTZXR0aW5ncyIsYS5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIG1aZShsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEscFplLDIsNiwiZGl2IiwxMykoMixnWmUsMiwzLCJkaXYiLDE0KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdJZiIsYS5hdXRvZGVw''@;'; put 'put ''bG95KSxfZSgpLFJlKCJuZ0lmIiwhYS5hdXRvZGVwbG95KX19ZnVuY3Rpb24gdlplKGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiZGl2IiwxNSkoMiwiYXBwLXNhc2pzLWNvbmZpZ3VyYXRvciIsMTgpLEl0KCJvbk5hdmlnYXRlVG9Ib21lIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biBfdChhKSxidChOZSgyKS5vbk5hdmlnYXRlVG9Ib21lKCkpfSksbWUoKSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO19lKDIpLFJlKCJzYXNKcyIsYS5zYXNKcykoInNhc0pzQ29uZmlnIixhLnNhc0pzQ29uZmlnKSgiZGNBZGFwdGVyU2V0dGluZ3MiLGEuZGNBZGFwdGVyU2V0dGlu''@;'; put 'put ''Z3MpfX1mdW5jdGlvbiBfWmUobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtWcigwKSxnZSgxLCJkaXYiLDE1KSgyLCJhcHAtc2FzanMtY29uZmlndXJhdG9yIiwxOCksSXQoIm9uTmF2aWdhdGVUb0hvbWUiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLm9uTmF2aWdhdGVUb0hv''@;'; put 'put ''bWUoKSl9KSxtZSgpKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoMik7X2UoMiksUmUoInNhc0pzIixhLnNhc0pzKSgic2FzSnNDb25maWciLGEuc2FzSnNDb25maWcpKCJkY0FkYXB0ZXJTZXR0aW5ncyIsYS5kY0FkYXB0ZXJTZXR0aW5ncyl9fWZ1bmN0aW9uIGJaZShsLGMpe2lmKDEmbCYm''@;'; put 'put ''KFZyKDAsMTEpLGd0KDEsbVplLDMsMiwibmctY29udGFpbmVyIiwxMikoMix2WmUsMywzLCJuZy1jb250YWluZXIiLDEyKSgzLF9aZSwzLDMsIm5nLWNvbnRhaW5lciIsMTIpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO1JlKCJuZ1N3aXRjaCIsITApLF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIs''@;'; put 'put ''YS5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIsYS5zYXNKc0NvbmZpZy5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhc2pzKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLGEuc2FzSnNDb25maWcuc2VydmVyVHlw''@;'; put 'put ''ZT09PWEuU2VydmVyVHlwZS5TYXM5KX19bGV0IFgwZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuYXBwU3RvcmVTZXJ2aWNlPWEsdGhpcy5zYXNTZXJ2aWNlPWQsdGhpcy5sb2dnZXJTZXJ2aWNlPWgsdGhpcy5yb3V0ZXI9Zix0aGlzLnN0ZXA9MCx0aGlzLmFkbWlu''@;'; put 'put ''R3JvdXBzPVtdLHRoaXMuY2xpZW50X2lkPSIiLHRoaXMuY2xpZW50X3NlY3JldD0iIix0aGlzLmFwcExvYz0iIix0aGlzLmRjUGF0aD0iIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cD0iIix0aGlzLmF1dG9kZXBsb3k9ITAsdGhpcy5qc29uRmlsZT1udWxsLHRoaXMuc2FzSnNDb25maWc9bmV3''@;'; put 'put ''IHlkLlNBU2pzQ29uZmlnLHRoaXMuU2VydmVyVHlwZT1CdS5ZLHRoaXMuZGNBZGFwdGVyU2V0dGluZ3M9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3MoKSx0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoIm1hbnVhbGRlcGxveSIpJiYodGhpcy5hdXRvZGVwbG95PSEx''@;'; put 'put ''KSx0aGlzLnNhc0pzPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0luc3RhbmNlKCksdGhpcy5zYXNKc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLmFwcExvYz10aGlzLmRjQWRhcHRlclNldHRpbmdzPy5hcHBMb2N8fCIiLHRoaXMuY2xpZW50X2lkPWxvY2Fs''@;'; put 'put ''U3RvcmFnZS5nZXRJdGVtKCJkZXBsb3lfY2xpZW50X2lkIil8fCIiLHRoaXMuY2xpZW50X3NlY3JldD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGVwbG95X3NlY3JldF9rZXkiKXx8IiIsdGhpcy5kY1BhdGg9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImRlcGxveV9kY19sb2MiKXx8IiJ9bmdPbklu''@;'; put 'put ''aXQoKXt0aGlzLnNhc0pzQ29uZmlnLnNlcnZlclR5cGU9PT1CdS5ZLlNhc1ZpeWEmJmZldGNoKCJzYXNidWlsZC92aXlhLmpzb24iKS50aGVuKGE9PmEudGV4dCgpKS50aGVuKGE9PntsZXQgZD1udWxsO3RyeXtkPUpTT04ucGFyc2UoYSl9Y2F0Y2goaCl7Y29uc29sZS5lcnJvcihoKX1kJiYo''@;'; put 'put ''dGhpcy5qc29uRmlsZT1kLHRoaXMubG9nZ2VyU2VydmljZS5sb2codGhpcy5qc29uRmlsZSkpfSksdGhpcy5zZXREZXBsb3lEZWZhdWx0cygpfXNldERlcGxveURlZmF1bHRzKCl7dGhpcy5kY1BhdGg9dGhpcy5kY0FkYXB0ZXJTZXR0aW5ncz8uZGNQYXRofHwiIix0aGlzLnNlbGVjdGVkQWRt''@;'; put 'put ''aW5Hcm91cD10aGlzLmRjQWRhcHRlclNldHRpbmdzPy5hZG1pbkdyb3VwfHwiIix0aGlzLnNlbGVjdGVkQWRtaW5Hcm91cHx8KHRoaXMuc2VsZWN0ZWRBZG1pbkdyb3VwPSJTQVNBZG1pbmlzdHJhdG9ycyIpfXRlcm1zQWdyZWVDaGFuZ2UoKXt0aGlzLmF1dG9kZXBsb3l8fHRoaXMuZ2V0QWRt''@;'; put 'put ''aW5Hcm91cHMoKSx0aGlzLnN0ZXArK31nZXRBZG1pbkdyb3Vwcygpe2ZldGNoKHRoaXMuc2FzSnNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHM/c29ydEJ5PW5hbWUmbGltaXQ9NTAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihhPT5h''@;'; put 'put ''LnRleHQoKSkudGhlbihhPT57bGV0IGQ7dHJ5e2Q9SlNPTi5wYXJzZShhKX1jYXRjaChoKXtjb25zb2xlLmVycm9yKGgpfWQmJih0aGlzLmFkbWluR3JvdXBzPWQuaXRlbXMsdGhpcy5zZWxlY3RlZEFkbWluR3JvdXA9dGhpcy5hZG1pbkdyb3Vwc1swXS5pZCl9KX1vbk5hdmlnYXRlVG9Ib21l''@;'; put 'put ''KCl7d2luZG93Lm9wZW4obG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLCJfYmxhbmsiKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZSh0OCksSmUodmEpLEplKE8xKSxKZShKcykpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6''@;'; put 'put ''bCxzZWxlY3RvcnM6W1siYXBwLWRlcGxveSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiY29udGVudC1hcmVhIiwicG9zaXRpb24tcmVsYXRpdmUiXSxbMSwiY2xyLXJvdyJdLFsiaWQiLCJUQ1MiLCJjbGFzcyIsImNhcmQi''@;'; put 'put ''LDQsIm5nSWYiXSxbMywibmdTd2l0Y2giLDQsIm5nSWYiXSxbImlkIiwiVENTIiwxLCJjYXJkIl0sWzEsImNhcmQtaGVhZGVyIl0sWzEsImNhcmQtYmxvY2siXSxbMSwiY2FyZC10ZXh0Il0sWyJocmVmIiwiaHR0cHM6Ly9kb2NzLmRhdGFjb250cm9sbGVyLmlvL2V2YWx1YXRpb24tbGljZW5j''@;'; put 'put ''ZS1hZ3JlZW1lbnQiLCJ0YXJnZXQiLCJfYmxhbmsiXSxbMSwibGlnaHQiXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJjaGFuZ2UiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsImF1dG9kZXBsb3ktc2VjdGlvbiBjYXJkIiw0LCJu''@;'; put 'put ''Z0lmIl0sWyJpZCIsIm1haW5ib2R5IiwiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzEsImF1dG9kZXBsb3ktc2VjdGlvbiIsImNhcmQiXSxbMywib25OYXZpZ2F0ZVRvSG9tZSIsInNhc0pzIiwic2FzSnNDb25maWciLCJkY0FkYXB0ZXJTZXR0aW5ncyIsImFwcExvYyIsImRjUGF0aCIsInNl''@;'; put 'put ''bGVjdGVkQWRtaW5Hcm91cCJdLFsiaWQiLCJtYWluYm9keSIsMSwiY2FyZCJdLFszLCJvbk5hdmlnYXRlVG9Ib21lIiwic2FzSnMiLCJzYXNKc0NvbmZpZyIsImRjQWRhcHRlclNldHRpbmdzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiZGl2IiwwKSgxLCJkaXYiLDEp''@;'; put 'put ''LGd0KDIsZlplLDE3LDAsImRpdiIsMiksbWUoKSxndCgzLGJaZSw0LDQsIm5nLWNvbnRhaW5lciIsMyksbWUoKSksMiZkJiYoX2UoMiksUmUoIm5nSWYiLDA9PT1oLnN0ZXApLF9lKCksUmUoIm5nSWYiLGguc3RlcD4wKSl9LGRlcGVuZGVuY2llczpbJGksd2gscDMsJHMsYTEsczEsJFVlLGNa''@;'; put 'put ''ZSxoWmVdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjB9LmJ0bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxMHB4fS5sb2ctd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiNmMGYwZjA7Ym9yZGVyOjFw''@;'; put 'put ''eCBzb2xpZCAjYzljOWM5O3BhZGRpbmc6MTBweDtvdmVyZmxvdzphdXRvO3doaXRlLXNwYWNlOnByZS13cmFwfSNjb250ZXh0cy1idG5bX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6M3B4IDAgMDttaW4td2lkdGg6MzBweDttYXJnaW4tbGVmdDoxMHB4O2hlaWdodDozMHB4O2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LnZhbGlkYXRpb24tYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7bWFyZ2luLXRvcDoyMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn0udmFsaWRhdGlvbi1iYXJbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgY2xyLWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo1cHh9LmF1dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowIDE1cHh9LmF1dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNoZWNrYm94LXdy''@;'; put 'put ''YXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoyMHB4IDB9LmF1dG9kZXBsb3ktc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAuYnRuLWF1dG9kZXBsb3lbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjE1cHggMH0iXX0pfX1yZXR1cm4gbH0pKCk7Y29u''@;'; put 'put ''c3QgeVplPVt7cGF0aDoiIixjb21wb25lbnQ6WDBlfSx7cGF0aDoibWFudWFsZGVwbG95Iixjb21wb25lbnQ6WDBlfV07bGV0IHdaZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9''@;'; put 'put ''ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbQ2MuZm9yQ2hpbGQoeVplKSxDY119KX19cmV0dXJuIGx9KSgpLENaZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhp''@;'; put 'put ''cy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28scmMsYzAsd1plXX0pfX1yZXR1cm4gbH0pKCk7Uig0OTUzNyksUig3NzUyNSksUig5OTAyNiksUigxMjI2OCksUigzMjIyOSksUig0MTg1MiksUig2MjI0MyksUig1ODI4MCksUig5''@;'; put 'put ''ODM0KSxSKDEwMzYzKTt2YXIgU1plPVIoOTE5NzMpO2Z1bmN0aW9uIEowZShsKXtjb25zdCBjPWwubGVuZ3RoO2xldCBhPTA7Zm9yKDthPGM7KWxbYV09W2xbYV1dLGErPTF9ZnVuY3Rpb24gSlkobCxjKXtjb25zdCBhPWMubGVuZ3RoO2xldCBkPTA7Zm9yKDtkPGE7KWwucHVzaChjW2RdKSxk''@;'; put 'put ''Kz0xfWZ1bmN0aW9uIEdNKGwpe2NvbnN0IGM9W107aWYoIWx8fDA9PT1sLmxlbmd0aHx8IWxbMF18fDA9PT1sWzBdLmxlbmd0aClyZXR1cm4gYztjb25zdCBhPWwubGVuZ3RoLGQ9bFswXS5sZW5ndGg7Zm9yKGxldCBoPTA7aDxhO2grKylmb3IobGV0IGY9MDtmPGQ7ZisrKWNbZl18fChjW2Zd''@;'; put 'put ''PVtdKSxjW2ZdW2hdPWxbaF1bZl07cmV0dXJuIGN9ZnVuY3Rpb24gTWMobCxjLGEsZCl7bGV0IGg9LTEsZj1sLHY9YTtBcnJheS5pc0FycmF5KGwpfHwoZj1BcnJheS5mcm9tKGwpKTtjb25zdCBTPWYubGVuZ3RoO2ZvcihkJiZTJiYoaCs9MSx2PWZbaF0pLGgrPTE7aDxTOyl2PWModixmW2hd''@;'; put 'put ''LGgsZiksaCs9MTtyZXR1cm4gdn1mdW5jdGlvbiBGaChsLGMpe2xldCBhPTAsZD1sO0FycmF5LmlzQXJyYXkobCl8fChkPUFycmF5LmZyb20obCkpO2NvbnN0IGg9ZC5sZW5ndGgsZj1bXTtsZXQgdj0tMTtmb3IoO2E8aDspe2NvbnN0IFM9ZFthXTtjKFMsYSxkKSYmKHYrPTEsZlt2XT1TKSxh''@;'; put 'put ''Kz0xfXJldHVybiBmfWZ1bmN0aW9uIHhzKGwsYyl7bGV0IGE9MCxkPWw7QXJyYXkuaXNBcnJheShsKXx8KGQ9QXJyYXkuZnJvbShsKSk7Y29uc3QgaD1kLmxlbmd0aCxmPVtdO2xldCB2PS0xO2Zvcig7YTxoOyl2Kz0xLGZbdl09YyhkW2FdLGEsZCksYSs9MTtyZXR1cm4gZn1mdW5jdGlvbiBU''@;'; put 'put ''bihsLGMpe2xldCBhPTAsZD1sO0FycmF5LmlzQXJyYXkobCl8fChkPUFycmF5LmZyb20obCkpO2NvbnN0IGg9ZC5sZW5ndGg7Zm9yKDthPGgmJiExIT09YyhkW2FdLGEsZCk7KWErPTE7cmV0dXJuIGx9ZnVuY3Rpb24gUTBlKGwpe3JldHVybiBNYyhsLChjLGEpPT5jK2EsMCl9ZnVuY3Rpb24g''@;'; put 'put ''TVplKGwpe3JldHVybiBNYyhsLChjLGEpPT5jPmE/YzphLEFycmF5LmlzQXJyYXkobCk/bFswXTp2b2lkIDApfWZ1bmN0aW9uIHhaZShsKXtyZXR1cm4gTWMobCwoYyxhKT0+YzxhP2M6YSxBcnJheS5pc0FycmF5KGwpP2xbMF06dm9pZCAwKX1mdW5jdGlvbiBFWmUobCl7cmV0dXJuIGwubGVu''@;'; put 'put ''Z3RoP1EwZShsKS9sLmxlbmd0aDowfWZ1bmN0aW9uIGUxZShsKXtyZXR1cm4gTWMobCwoYyxhKT0+Yy5jb25jYXQoQXJyYXkuaXNBcnJheShhKT9lMWUoYSk6YSksW10pfWZ1bmN0aW9uIFFZKGwpe2NvbnN0IGM9W107cmV0dXJuIFRuKGwsYT0+ey0xPT09Yy5pbmRleE9mKGEpJiZjLnB1c2go''@;'; put 'put ''YSl9KSxjfWZ1bmN0aW9uIGVXKCl7Zm9yKHZhciBsPWFyZ3VtZW50cy5sZW5ndGgsYz1uZXcgQXJyYXkobCksYT0wO2E8bDthKyspY1thXT1hcmd1bWVudHNbYV07Y29uc3RbZCwuLi5oXT1bLi4uY107bGV0IGY9ZDtyZXR1cm4gVG4oaCx2PT57Zj1mLmZpbHRlcihTPT4hdi5pbmNsdWRlcyhT''@;'; put 'put ''KSl9KSxmfWZ1bmN0aW9uIFRaZSgpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGM9bmV3IEFycmF5KGwpLGE9MDthPGw7YSsrKWNbYV09YXJndW1lbnRzW2FdO2NvbnN0W2QsLi4uaF09Wy4uLmNdO2xldCBmPWQ7cmV0dXJuIFRuKGgsdj0+e2Y9Zi5maWx0ZXIoUz0+di5pbmNsdWRlcyhT''@;'; put 'put ''KSl9KSxmfWZ1bmN0aW9uIGtaZSgpe2Zvcih2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGM9bmV3IEFycmF5KGwpLGE9MDthPGw7YSsrKWNbYV09YXJndW1lbnRzW2FdO2NvbnN0W2QsLi4uaF09Wy4uLmNdLGY9bmV3IFNldChkKTtyZXR1cm4gVG4oaCx2PT57VG4odixTPT57Zi5oYXMoUyl8fGYu''@;'; put 'put ''YWRkKFMpfSl9KSxBcnJheS5mcm9tKGYpfWZ1bmN0aW9uIHRXKGwpe3JldHVybiBsLnNwbGl0KGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiICIpfWZ1bmN0aW9uIE5hKGwpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFy''@;'; put 'put ''cmF5KGM+MT9jLTE6MCksZD0xO2Q8YztkKyspYVtkLTFdPWFyZ3VtZW50c1tkXTtyZXR1cm4gTWMobCwoZix2LFMpPT5mK3YucmVwbGFjZSgvXHI/XG5ccyovZywiIikrKGFbU10/YVtTXToiIiksIiIpLnRyaW0oKX1mdW5jdGlvbiBpYyhsKXtsZXQgYztzd2l0Y2godHlwZW9mIGwpe2Nhc2Ui''@;'; put 'put ''c3RyaW5nIjpjYXNlIm51bWJlciI6Yz1gJHtsfWA7YnJlYWs7Y2FzZSJvYmplY3QiOmM9bnVsbD09PWw/IiI6bC50b1N0cmluZygpO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjpjPSIiO2JyZWFrO2RlZmF1bHQ6Yz1sLnRvU3RyaW5nKCl9cmV0dXJuIGN9ZnVuY3Rpb24gc28obCl7cmV0dXJuIHR5''@;'; put 'put ''cGVvZiBsPCJ1In1mdW5jdGlvbiBkbChsKXtyZXR1cm4gdHlwZW9mIGw+InUifWZ1bmN0aW9uIG9jKGwpe3JldHVybiBudWxsPT09bHx8IiI9PT1sfHxkbChsKX1mdW5jdGlvbiB0MWUobCl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo''@;'; put 'put ''bCl9Y29uc3QgJE09Imxlbmd0aCIscU09bD0+cGFyc2VJbnQobCwxNiksbjFlPWw9PnBhcnNlSW50KGwsMTApLFhSPShsLGMsYSk9Pmwuc3Vic3RyKGMsYSksS009bD0+bC5jb2RlUG9pbnRBdCgwKS02NSxuVz1sPT5gJHtsfWAucmVwbGFjZSgvXC0vZywiIiksQVplPWw9PnFNKFhSKG5XKGwp''@;'; put 'put ''LHFNKCIxMiIpLEtNKCJGIikpKS8ocU0oWFIoblcobCksS00oIkIiKSx+fiFbXVskTV0pKXx8OSksRFplPSgpPT50eXBlb2YgbG9jYXRpb248InUiJiYvXihbYS16MC05XC1dK1wuKT9ceDY4XHg2MVx4NkVceDY0XHg3M1x4NkZceDZFXHg3NFx4NjFceDYyXHg2Q1x4NjVceDJFXHg2M1x4NkZc''@;'; put 'put ''eDZEJC9pLnRlc3QobG9jYXRpb24uaG9zdCk7bGV0IHIxZT0hMTtjb25zdCBpMWU9e2ludmFsaWQ6KCk9Pk5hYAogICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgaXMgaW52YWxpZC5ceDIwCiAgICBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBzdXBwb3J0''@;'; put 'put ''QGhhbmRzb250YWJsZS5jb20uYCxleHBpcmVkOmw9PntsZXR7a2V5VmFsaWRpdHlEYXRlOmMsaG90VmVyc2lvbjphfT1sO3JldHVybiBOYWAKICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGV4cGlyZWQgb24gJHtjfSwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGluc3Rh''@;'; put 'put ''bGxlZFx4MjAKICAgIHZlcnNpb24gJHthfS4gUmVuZXcgeW91ciBsaWNlbnNlIGtleSBhdCBoYW5kc29udGFibGUuY29tIG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3JceDIwCiAgICB0byAke2N9LiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdCB1cyBhdCBz''@;'; put 'put ''YWxlc0BoYW5kc29udGFibGUuY29tLmB9LG1pc3Npbmc6KCk9Pk5hYAogICAgVGhlIGxpY2Vuc2Uga2V5IGZvciBIYW5kc29udGFibGUgaXMgbWlzc2luZy4gVXNlIHlvdXIgcHVyY2hhc2VkIGtleSB0byBhY3RpdmF0ZSB0aGUgcHJvZHVjdC5ceDIwCiAgICBBbHRlcm5hdGl2ZWx5LCB5b3Ug''@;'; put 'put ''Y2FuIGFjdGl2YXRlIEhhbmRzb250YWJsZSB0byB1c2UgZm9yIG5vbi1jb21tZXJjaWFsIHB1cnBvc2VzIGJ5XHgyMAogICAgcGFzc2luZyB0aGUga2V5OiAnbm9uLWNvbW1lcmNpYWwtYW5kLWV2YWx1YXRpb24nLiBJZiB5b3UgbmVlZCBhbnkgaGVscCwgY29udGFjdFx4MjAKICAgIHVzIGF0''@;'; put 'put ''IHN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbS5gLG5vbl9jb21tZXJjaWFsOigpPT4iIn0sbzFlPXtpbnZhbGlkOigpPT5OYWAKICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGlzIGludmFsaWQuXHgyMAogICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL2Rv''@;'; put 'put ''Y3MvdHV0b3JpYWwtbGljZW5zZS1rZXkuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlJlYWQgbW9yZTwvYT4gb24gaG93IHRvXHgyMAogICAgaW5zdGFsbCBpdCBwcm9wZXJseSBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRA''@;'; put 'put ''aGFuZHNvbnRhYmxlLmNvbTwvYT4uYCxleHBpcmVkOmw9PntsZXR7a2V5VmFsaWRpdHlEYXRlOmMsaG90VmVyc2lvbjphfT1sO3JldHVybiBOYWAKICAgIFRoZSBsaWNlbnNlIGtleSBmb3IgSGFuZHNvbnRhYmxlIGV4cGlyZWQgb24gJHtjfSwgYW5kIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGlu''@;'; put 'put ''c3RhbGxlZFx4MjAKICAgIHZlcnNpb24gJHthfS4gPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL3ByaWNpbmciIHRhcmdldD0iX2JsYW5rIj5SZW5ldzwvYT4geW91clx4MjAKICAgIGxpY2Vuc2Uga2V5IG9yIGRvd25ncmFkZSB0byBhIHZlcnNpb24gcmVsZWFzZWQgcHJpb3Ig''@;'; put 'put ''dG8gJHtjfS4gSWYgeW91IG5lZWQgYW55XHgyMAogICAgaGVscCwgY29udGFjdCB1cyBhdCA8YSBocmVmPSJtYWlsdG86c2FsZXNAaGFuZHNvbnRhYmxlLmNvbSI+c2FsZXNAaGFuZHNvbnRhYmxlLmNvbTwvYT4uYH0sbWlzc2luZzooKT0+TmFgCiAgICBUaGUgbGljZW5zZSBrZXkgZm9yIEhh''@;'; put 'put ''bmRzb250YWJsZSBpcyBtaXNzaW5nLiBVc2UgeW91ciBwdXJjaGFzZWQga2V5IHRvIGFjdGl2YXRlIHRoZSBwcm9kdWN0Llx4MjAKICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWN0aXZhdGUgSGFuZHNvbnRhYmxlIHRvIHVzZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgYnlceDIw''@;'; put 'put ''CiAgICBwYXNzaW5nIHRoZSBrZXk6ICdub24tY29tbWVyY2lhbC1hbmQtZXZhbHVhdGlvbicuXHgyMAogICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc29udGFibGUuY29tL2RvY3MvdHV0b3JpYWwtbGljZW5zZS1rZXkuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPlJlYWQgbW9yZTwvYT4gYWJvdXQg''@;'; put 'put ''aXQgaW5ceDIwCiAgICB0aGUgZG9jdW1lbnRhdGlvbiBvciBjb250YWN0IHVzIGF0IDxhIGhyZWY9Im1haWx0bzpzdXBwb3J0QGhhbmRzb250YWJsZS5jb20iPnN1cHBvcnRAaGFuZHNvbnRhYmxlLmNvbTwvYT4uYCxub25fY29tbWVyY2lhbDooKT0+IiJ9O2Z1bmN0aW9uIHMxZShsLGMpe2Nv''@;'; put 'put ''bnN0IGE9IW9jKGwpLGQ9InN0cmluZyI9PXR5cGVvZiBsJiYibm9uLWNvbW1lcmNpYWwtYW5kLWV2YWx1YXRpb24iPT09bC50b0xvd2VyQ2FzZSgpLGg9IjE0LjQuMCI7bGV0IGYsdj0iaW52YWxpZCIsUz0iaW52YWxpZCI7Y29uc3QgVj1mdW5jdGlvbiBJWmUobCl7bGV0IGM9W11bJE1dLGE9''@;'; put 'put ''YztpZihsWyRNXSE9PUtNKCJaIikpcmV0dXJuITE7Zm9yKGxldCBkPSIiLGg9IkI8SDRQKyIuc3BsaXQoIiIpLGY9S00oaC5zaGlmdCgpKTtmO2Y9S00oaC5zaGlmdCgpfHwiQSIpKS0tZjwiIlskTV0/YXw9KG4xZShgJHtuMWUocU0oZCkrKHFNKFhSKGwsTWF0aC5hYnMoZiksMikpK1tdKS5w''@;'; put 'put ''YWRTdGFydCgyLCIwIikpfWApJTk3fHwyKT4+MTpkPVhSKGwsZixmPzE9PT1oWyRNXT85Ojg6Nik7cmV0dXJuIGE9PT1jfShsPW5XKGx8fCIiKSk7aWYoYXx8ZHx8VilpZihWKXtjb25zdCBRPWFzKCIxMS8wNi8yMDI0IiwiREQvTU0vWVlZWSIpLGRlPU1hdGguZmxvb3IoUS50b0RhdGUoKS5n''@;'; put 'put ''ZXRUaW1lKCkvODY0ZTUpLHBlPUFaZShsKTtmPWFzKDg2NGU1KihwZSsxKSwieCIpLmZvcm1hdCgiTU1NTSBERCwgWVlZWSIpLGRlPnBlPyh2PSJleHBpcmVkIixTPSJleHBpcmVkIik6KHY9InZhbGlkIixTPSJ2YWxpZCIpfWVsc2UgZD8odj0ibm9uX2NvbW1lcmNpYWwiLFM9InZhbGlkIik6''@;'; put 'put ''KHY9ImludmFsaWQiLFM9ImludmFsaWQiKTtlbHNlIHY9Im1pc3NpbmciLFM9Im1pc3NpbmciO2lmKERaZSgpJiYodj0idmFsaWQiLFM9InZhbGlkIiksIXIxZSYmInZhbGlkIiE9PXYmJihpMWVbdl0oe2tleVZhbGlkaXR5RGF0ZTpmLGhvdFZlcnNpb246aH0pJiZjb25zb2xlWyJub25fY29t''@;'; put 'put ''bWVyY2lhbCI9PT12PyJpbmZvIjoid2FybiJdKGkxZVt2XSh7a2V5VmFsaWRpdHlEYXRlOmYsaG90VmVyc2lvbjpofSkpLHIxZT0hMCksInZhbGlkIiE9PVMmJmMucGFyZW50Tm9kZSYmbzFlW1NdKHtrZXlWYWxpZGl0eURhdGU6Zixob3RWZXJzaW9uOmh9KSl7Y29uc3QgZGU9ZG9jdW1lbnQu''@;'; put 'put ''Y3JlYXRlRWxlbWVudCgiZGl2Iik7ZGUuY2xhc3NOYW1lPSJob3QtZGlzcGxheS1saWNlbnNlLWluZm8iLGRlLmlubmVySFRNTD1vMWVbU10oe2tleVZhbGlkaXR5RGF0ZTpmLGhvdFZlcnNpb246aH0pLGMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZGUsYy5uZXh0U2libGluZyl9fWZ1bmN0''@;'; put 'put ''aW9uIEkwKGwpe3JldHVybiBsWzBdLnRvVXBwZXJDYXNlKCkrbC5zdWJzdHIoMSl9ZnVuY3Rpb24gUlplKCl7Y29uc3QgbD1bXTtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjKSxkPTA7ZDxjO2QrKylhW2RdPWFyZ3VtZW50c1tkXTtsZXQgaD1hLmxlbmd0aDtmb3Io''@;'; put 'put ''O2g7KXtoLT0xO2NvbnN0IGY9aWMoYVtoXSkudG9Mb3dlckNhc2UoKTstMT09PWwuaW5kZXhPZihmKSYmbC5wdXNoKGYpfXJldHVybiAxPT09bC5sZW5ndGh9ZnVuY3Rpb24gclcoKXtmdW5jdGlvbiBsKCl7cmV0dXJuIE1hdGguZmxvb3IoNjU1MzYqKDErTWF0aC5yYW5kb20oKSkpLnRvU3Ry''@;'; put 'put ''aW5nKDE2KS5zdWJzdHJpbmcoMSl9cmV0dXJuIGwoKStsKCkrbCgpK2woKX1mdW5jdGlvbiBpVyhsKXtyZXR1cm4vXihbMC05XVswLTldPyUkKXwoXjEwMCUkKS8udGVzdChsKX1mdW5jdGlvbiBvVyhsKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9h''@;'; put 'put ''cmd1bWVudHNbMV06e307cmV0dXJuYCR7bH1gLnJlcGxhY2UoLyg/OlxcKT9cWyhbXltcXV0rKV0vZywoYSxkKT0+IlxcIj09PWEuY2hhckF0KDApP2Euc3Vic3RyKDEsYS5sZW5ndGgtMSk6dm9pZCAwPT09Y1tkXT8iIjpjW2RdKX1mdW5jdGlvbiBzVyhsKXtyZXR1cm4gSlIoYCR7bH1gLHtB''@;'; put 'put ''TExPV0VEX1RBR1M6W119KX1mdW5jdGlvbiBKUihsLGMpe3JldHVybiBTWmUuc2FuaXRpemUobCxjKX1jb25zdCBuYj1sPT5bInRhYmluZGV4IixsXSxBMz0oKT0+WyJyb2xlIiwicHJlc2VudGF0aW9uIl0salplPSgpPT5bInJvbGUiLCJjaGVja2JveCJdLGxXPWw9PlsiYXJpYS1sYWJlbCIs''@;'; put 'put ''bF0sTTQ9KCk9PlsiYXJpYS1oaWRkZW4iLCJ0cnVlIl0sYzFlPWw9PlsiYXJpYS1oYXNwb3B1cCIsbF0sdTFlPWw9PlsiYXJpYS1yb3djb3VudCIsbF0sUVI9bD0+WyJhcmlhLWNvbGNvdW50IixsXSxkMWU9bD0+WyJhcmlhLXJvd2luZGV4IixsXSxjVz1sPT5bImFyaWEtY29saW5kZXgiLGxd''@;'; put 'put ''LE5oPWw9PlsiYXJpYS1leHBhbmRlZCIsbF0saDFlPSgpPT5bImFyaWEtcmVhZG9ubHkiLCJ0cnVlIl0sZjFlPSgpPT5bImFyaWEtaW52YWxpZCIsInRydWUiXSwkWmU9bD0+WyJhcmlhLWNoZWNrZWQiLGxdLEtaZT1sPT5bImFyaWEtY29udHJvbHMiLGxdLEpaZT1sPT5bImFyaWEtbGl2ZSIs''@;'; put 'put ''bF0sUVplPWw9PlsiYXJpYS1yZWxldmFudCIsbF0sZVllPWw9PlsiYXJpYS1zZXRzaXplIixsXSx0WWU9bD0+WyJhcmlhLXBvc2luc2V0IixsXTtmdW5jdGlvbiBwMWUobCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsYT0t''@;'; put 'put ''MSxkPW51bGwsaD1sO2Zvcig7bnVsbCE9PWg7KXtpZihhPT09Yyl7ZD1oO2JyZWFrfWguaG9zdCYmaC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT9oPWguaG9zdDooYSs9MSxoPWgucGFyZW50Tm9kZSl9cmV0dXJuIGR9ZnVuY3Rpb24gZzFlKGwsYyl7Y29uc3QgYT1s''@;'; put 'put ''LmNsb3Nlc3QoIi5oYW5kc29udGFibGUiKTtyZXR1cm4hIWEmJihhLnBhcmVudE5vZGU9PT1jfHxhPT09Yyl9ZnVuY3Rpb24gbTFlKGwpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobC5wYXJlbnQpJiZsLmZyYW1lRWxlbWVudH1mdW5jdGlvbiB6OChsKXtyZXR1cm4gbTFlKGwpJiZs''@;'; put 'put ''LnBhcmVudH1mdW5jdGlvbiBuWWUobCl7cmV0dXJuISFPYmplY3QuZ2V0UHJvdG90eXBlT2YobC5wYXJlbnQpfWZ1bmN0aW9uIEltKGwpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxhPWFyZ3VtZW50cy5sZW5ndGg+Mj9h''@;'; put 'put ''cmd1bWVudHNbMl06dm9pZCAwO2NvbnN0e0VMRU1FTlRfTk9ERTpkLERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6aH09Tm9kZTtsZXQgZj1sO2Zvcig7bnVsbCE9ZiYmZiE9PWE7KXtjb25zdHtub2RlVHlwZTp2LG5vZGVOYW1lOlN9PWY7aWYodj09PWQmJihjLmluY2x1ZGVzKFMpfHxjLmluY2x1''@;'; put 'put ''ZGVzKGYpKSlyZXR1cm4gZjtjb25zdHtob3N0OlZ9PWY7Zj1WJiZ2PT09aD9WOmYucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYTShsLGMsYSl7Y29uc3QgZD1bXTtsZXQgaD1sO2Zvcig7aCYmKGg9SW0oaCxjLGEpLGgmJighYXx8YS5jb250YWlucyhoKSkpOylkLnB1c2goaCks''@;'; put 'put ''aD1oLmhvc3QmJmgubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/aC5ob3N0OmgucGFyZW50Tm9kZTtjb25zdCBmPWQubGVuZ3RoO3JldHVybiBmP2RbZi0xXTpudWxsfWZ1bmN0aW9uIFJtKGwsYyl7bGV0IGE9bC5wYXJlbnROb2RlLGQ9W107Zm9yKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgYz9kPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGwuZGVmYXVsdFZpZXc/bC5xdWVyeVNlbGVjdG9yQWxsKGMpOmwub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGMpLDApOmQucHVzaChjKTtudWxsIT09YTspe2lmKGQuaW5kZXhPZihhKT4tMSlyZXR1cm4hMDthPWEu''@;'; put 'put ''cGFyZW50Tm9kZX1yZXR1cm4hMX1mdW5jdGlvbiB2MWUobCl7bGV0IGM9MCxhPWw7aWYoYS5wcmV2aW91c1NpYmxpbmcpZm9yKDthPWEucHJldmlvdXNTaWJsaW5nOyljKz0xO3JldHVybiBjfWZ1bmN0aW9uIExtKGwsYyxhKXtjb25zdCBkPWEucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9y''@;'; put 'put ''KGAuaHRfY2xvbmVfJHtsfWApO3JldHVybiBkP2QuY29udGFpbnMoYyk6bnVsbH1mdW5jdGlvbiBfMWUobCl7cmV0dXJuIGwmJmwubGVuZ3RoP2wuZmlsdGVyKGM9PiEhYyk6W119ZnVuY3Rpb24gYjFlKGwsYyl7aWYoIWx8fCFsLmxlbmd0aClyZXR1cm4gYz97cmVnZXhGcmVlOltdLHJlZ2V4''@;'; put 'put ''ZXM6W119OltdO2NvbnN0IGE9W10sZD1bXTtyZXR1cm4gZC5wdXNoKC4uLmwuZmlsdGVyKGg9Pntjb25zdCBmPWggaW5zdGFuY2VvZiBSZWdFeHA7cmV0dXJuIGYmJmMmJmEucHVzaChoKSwhZn0pKSxjP3tyZWdleEZyZWU6ZCxyZWdleGVzOmF9OmR9ZnVuY3Rpb24gWW8obCxjKXtyZXR1cm4g''@;'; put 'put ''dm9pZCAwIT09bC5jbGFzc0xpc3QmJiJzdHJpbmciPT10eXBlb2YgYyYmIiIhPT1jJiZsLmNsYXNzTGlzdC5jb250YWlucyhjKX1mdW5jdGlvbiBtaShsLGMpeyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Yy5zcGxpdCgiICIpKSwoYz1fMWUoYykpLmxlbmd0aD4wJiZsLmNsYXNzTGlzdC5hZGQo''@;'; put 'put ''Li4uYyl9ZnVuY3Rpb24gbHMobCxjKXsic3RyaW5nIj09dHlwZW9mIGM/Yz1jLnNwbGl0KCIgIik6YyBpbnN0YW5jZW9mIFJlZ0V4cCYmKGM9W2NdKTtsZXR7cmVnZXhGcmVlOmEscmVnZXhlczpkfT1iMWUoYywhMCk7YT1fMWUoYSksYS5sZW5ndGg+MCYmbC5jbGFzc0xpc3QucmVtb3ZlKC4u''@;'; put 'put ''LmEpLGQuZm9yRWFjaChoPT57bC5jbGFzc0xpc3QuZm9yRWFjaChmPT57aC50ZXN0KGYpJiZsLmNsYXNzTGlzdC5yZW1vdmUoZil9KX0pfWZ1bmN0aW9uIFZvKGwpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxhPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO0FycmF5LmlzQXJyYXkoYyl8fChjPVtbYyxhXV0pLGMuZm9yRWFjaChkPT57QXJyYXkuaXNBcnJheShkKSYmIiIhPT1kWzBdJiZsLnNldEF0dHJpYnV0ZSguLi5kKX0pfWZ1bmN0aW9uIFU4KGwpe2xldCBjPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXTsic3RyaW5nIj09dHlwZW9mIGM/Yz1jLnNwbGl0KCIgIik6YyBpbnN0YW5jZW9mIFJlZ0V4cCYmKGM9W2NdKTtjb25zdHtyZWdleEZyZWU6YSxyZWdleGVzOmR9PWIxZShjLCEwKTthLmZvckVhY2goaD0+eyIiIT09''@;'; put 'put ''aCYmbC5yZW1vdmVBdHRyaWJ1dGUoaCl9KSxkLmZvckVhY2goaD0+e2wuZ2V0QXR0cmlidXRlTmFtZXMoKS5mb3JFYWNoKGY9PntoLnRlc3QoZikmJmwucmVtb3ZlQXR0cmlidXRlKGYpfSl9KX1mdW5jdGlvbiBkVyhsKXtpZigzPT09bC5ub2RlVHlwZSlsLnBhcmVudE5vZGUucmVtb3ZlQ2hp''@;'; put 'put ''bGQobCk7ZWxzZSBpZihbIlRBQkxFIiwiVEhFQUQiLCJUQk9EWSIsIlRGT09UIiwiVFIiXS5pbmRleE9mKGwubm9kZU5hbWUpPi0xKXtjb25zdCBjPWwuY2hpbGROb2Rlcztmb3IobGV0IGE9Yy5sZW5ndGgtMTthPj0wO2EtLSlkVyhjW2FdKX19ZnVuY3Rpb24gc2YobCl7bGV0IGM7Zm9yKDtj''@;'; put 'put ''PWwubGFzdENoaWxkOylsLnJlbW92ZUNoaWxkKGMpfWNvbnN0IHkxZT0vKDwoLiopPnwmKC4qKTspLztmdW5jdGlvbiBaOChsLGMpe2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07eTFlLnRlc3QoYyk/bC5pbm5lckhUTUw9''@;'; put 'put ''YT9KUihjKTpjOk9tKGwsYyl9ZnVuY3Rpb24gT20obCxjKXtjb25zdCBhPWwuZmlyc3RDaGlsZDthJiYzPT09YS5ub2RlVHlwZSYmbnVsbD09PWEubmV4dFNpYmxpbmc/YS50ZXh0Q29udGVudD1jOihzZihsKSxsLmFwcGVuZENoaWxkKGwub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShj''@;'; put 'put ''KSkpfWZ1bmN0aW9uIFBtKGwpe2NvbnN0IGM9bC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtsZXQgYT1sO2Zvcig7YSE9PWM7KXtpZihudWxsPT09YSlyZXR1cm4hMTtpZihhLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXtpZihhLmhvc3Qpe2lmKGEuaG9z''@;'; put 'put ''dC5pbXBsKXJldHVybiBQbShhLmhvc3QuaW1wbCk7aWYoYS5ob3N0KXJldHVybiBQbShhLmhvc3QpO3Rocm93IG5ldyBFcnJvcigiTG9zdCBpbiBXZWIgQ29tcG9uZW50cyB3b3JsZCIpfXJldHVybiExfWlmKCJub25lIj09PXg0KGEpLmRpc3BsYXkpcmV0dXJuITE7YT1hLnBhcmVudE5vZGV9''@;'; put 'put ''cmV0dXJuITB9ZnVuY3Rpb24geHUobCl7Y29uc3QgYz1sLm93bmVyRG9jdW1lbnQsYT1jLmRlZmF1bHRWaWV3LGQ9Yy5kb2N1bWVudEVsZW1lbnQ7bGV0IGYsdixTLGg9bDtmb3IoZj1oLm9mZnNldExlZnQsdj1oLm9mZnNldFRvcCxTPWg7KGg9aC5vZmZzZXRQYXJlbnQpJiZoIT09Yy5ib2R5''@;'; put 'put ''JiYib2Zmc2V0TGVmdCJpbiBoOylmKz1oLm9mZnNldExlZnQsdis9aC5vZmZzZXRUb3AsUz1oO3JldHVybiBTJiYiZml4ZWQiPT09Uy5zdHlsZS5wb3NpdGlvbiYmKGYrPWEucGFnZVhPZmZzZXR8fGQuc2Nyb2xsTGVmdCx2Kz1hLnBhZ2VZT2Zmc2V0fHxkLnNjcm9sbFRvcCkse2xlZnQ6Zix0''@;'; put 'put ''b3A6dn19ZnVuY3Rpb24gaFcoKXtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdykuc2Nyb2xsWX1mdW5jdGlvbiBlTCgpe3JldHVybihhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1''@;'; put 'put ''bWVudHNbMF06d2luZG93KS5zY3JvbGxYfWZ1bmN0aW9uIHRMKGwpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGw9PT1jP2hXKGMpOmwuc2Nyb2xsVG9wfWZ1bmN0aW9uIGZXKGwpe2xldCBjPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7cmV0dXJuIGw9PT1jP2VMKGMpOmwuc2Nyb2xsTGVmdH1mdW5jdGlvbiBKTShsKXtsZXQgYz1sLm93bmVyRG9jdW1lbnQsYT1jP2MuZGVmYXVsdFZpZXc6dm9pZCAwO2N8fChjPWwuZG9jdW1l''@;'; put 'put ''bnQ/bC5kb2N1bWVudDpsLGE9Yy5kZWZhdWx0Vmlldyk7Y29uc3QgZD1bImF1dG8iLCJzY3JvbGwiXTtsZXQgaD1sLnBhcmVudE5vZGU7Zm9yKDtoJiZoLnN0eWxlJiZjLmJvZHkhPT1oOyl7bGV0e292ZXJmbG93OmYsb3ZlcmZsb3dYOnYsb3ZlcmZsb3dZOlN9PWguc3R5bGU7aWYoW2YsdixT''@;'; put 'put ''XS5pbmNsdWRlcygic2Nyb2xsIikpcmV0dXJuIGg7aWYoKHtvdmVyZmxvdzpmLG92ZXJmbG93WDp2LG92ZXJmbG93WTpTfT1hLmdldENvbXB1dGVkU3R5bGUoaCkpLGQuaW5jbHVkZXMoZil8fGQuaW5jbHVkZXModil8fGQuaW5jbHVkZXMoUyl8fGguY2xpZW50SGVpZ2h0PD1oLnNjcm9sbEhl''@;'; put 'put ''aWdodCsxJiYoZC5pbmNsdWRlcyhTKXx8ZC5pbmNsdWRlcyhmKSl8fGguY2xpZW50V2lkdGg8PWguc2Nyb2xsV2lkdGgrMSYmKGQuaW5jbHVkZXModil8fGQuaW5jbHVkZXMoZikpKXJldHVybiBoO2g9aC5wYXJlbnROb2RlfXJldHVybiBhfWZ1bmN0aW9uIHcxZShsKXtyZXR1cm4gbC5zY3Jv''@;'; put 'put ''bGxIZWlnaHQtbC5jbGllbnRIZWlnaHR9ZnVuY3Rpb24gQzFlKGwpe3JldHVybiBsLnNjcm9sbFdpZHRoLWwuY2xpZW50V2lkdGh9ZnVuY3Rpb24gWTgobCl7Y29uc3QgYz1sLm93bmVyRG9jdW1lbnQsYT1jLmRlZmF1bHRWaWV3O2xldCBkPWwucGFyZW50Tm9kZTtmb3IoO2QmJmQuc3R5bGUm''@;'; put 'put ''JmMuYm9keSE9PWQ7KXtpZigidmlzaWJsZSIhPT1kLnN0eWxlLm92ZXJmbG93JiYiIiE9PWQuc3R5bGUub3ZlcmZsb3cpcmV0dXJuIGQ7Y29uc3QgaD14NChkLGEpLGY9WyJzY3JvbGwiLCJoaWRkZW4iLCJhdXRvIl0sdj1oLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93IiksUz1oLmdldFBy''@;'; put 'put ''b3BlcnR5VmFsdWUoIm92ZXJmbG93LXkiKSxWPWguZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3cteCIpO2lmKGYuaW5jbHVkZXModil8fGYuaW5jbHVkZXMoUyl8fGYuaW5jbHVkZXMoVikpcmV0dXJuIGQ7ZD1kLnBhcmVudE5vZGV9cmV0dXJuIGF9ZnVuY3Rpb24gcmIobCxjKXtsZXQgYT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06d2luZG93O2lmKCFsKXJldHVybjtpZihsPT09YSlyZXR1cm4id2lkdGgiPT09Yz9gJHthLmlubmVyV2lkdGh9cHhgOiJoZWlnaHQiPT09Yz9gJHthLmlubmVySGVpZ2h0fXB4YDp2b2lkIDA7Y29u''@;'; put 'put ''c3QgZD1sLnN0eWxlW2NdO2lmKCIiIT09ZCYmdm9pZCAwIT09ZClyZXR1cm4gZDtjb25zdCBoPXg0KGwsYSk7cmV0dXJuIiIhPT1oW2NdJiZ2b2lkIDAhPT1oW2NdP2hbY106dm9pZCAwfWZ1bmN0aW9uIHJZZShsLGMpe2NvbnN0e3NlbGVjdG9yVGV4dDphfT1jO2xldCBkPSExO3JldHVybiBj''@;'; put 'put ''LnR5cGU9PT1DU1NSdWxlLlNUWUxFX1JVTEUmJmEmJihsLm1zTWF0Y2hlc1NlbGVjdG9yP2Q9bC5tc01hdGNoZXNTZWxlY3RvcihhKTpsLm1hdGNoZXMmJihkPWwubWF0Y2hlcyhhKSkpLGR9ZnVuY3Rpb24geDQobCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMV0/YXJndW1lbnRzWzFdOndpbmRvdztyZXR1cm4gbC5jdXJyZW50U3R5bGV8fGMuZ2V0Q29tcHV0ZWRTdHlsZShsKX1mdW5jdGlvbiBXYShsKXtyZXR1cm4gbC5vZmZzZXRXaWR0aH1mdW5jdGlvbiBabChsKXtyZXR1cm4gbC5vZmZzZXRIZWlnaHR9ZnVuY3Rpb24gVzgobCl7cmV0dXJu''@;'; put 'put ''IGwuY2xpZW50SGVpZ2h0fHxsLmlubmVySGVpZ2h0fWZ1bmN0aW9uIHBXKGwpe3JldHVybiBsLmNsaWVudFdpZHRofHxsLmlubmVyV2lkdGh9ZnVuY3Rpb24gaVllKGwsYyxhKXtsLmFkZEV2ZW50TGlzdGVuZXIoYyxhLCExKX1mdW5jdGlvbiBvWWUobCxjLGEpe2wucmVtb3ZlRXZlbnRMaXN0''@;'; put 'put ''ZW5lcihjLGEsITEpfWZ1bmN0aW9uIGdXKGwpe3JldHVybiBsLnNlbGVjdGlvblN0YXJ0P2wuc2VsZWN0aW9uU3RhcnQ6MH1mdW5jdGlvbiBTMWUobCl7cmV0dXJuIGwuc2VsZWN0aW9uRW5kP2wuc2VsZWN0aW9uRW5kOjB9ZnVuY3Rpb24gc1llKCl7bGV0IGw9YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOndpbmRvdztjb25zdCBjPWwuZG9jdW1lbnQ7bGV0IGE9IiI7cmV0dXJuIGwuZ2V0U2VsZWN0aW9uP2E9bC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOmMuc2VsZWN0aW9uJiYiQ29udHJvbCIhPT1jLnNlbGVjdGlvbi50eXBl''@;'; put 'put ''JiYoYT1jLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLnRleHQpLGF9ZnVuY3Rpb24gbVcoKXtsZXQgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93O2wuZ2V0U2VsZWN0aW9uJiYobC5nZXRTZWxlY3Rpb24oKS5lbXB0eT9sLmdl''@;'; put 'put ''dFNlbGVjdGlvbigpLmVtcHR5KCk6bC5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMmJmwuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCkpfWZ1bmN0aW9uIFFNKGwsYyxhKXtpZih2b2lkIDA9PT1hJiYoYT1jKSxsLnNldFNlbGVjdGlvblJhbmdlKXtsLmZvY3VzKCk7dHJ5''@;'; put 'put ''e2wuc2V0U2VsZWN0aW9uUmFuZ2UoYyxhKX1jYXRjaHtjb25zdCBoPWwucGFyZW50Tm9kZSxmPWguc3R5bGUuZGlzcGxheTtoLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixsLnNldFNlbGVjdGlvblJhbmdlKGMsYSksaC5zdHlsZS5kaXNwbGF5PWZ9fX1sZXQgdlcsb2I7ZnVuY3Rpb24gRXUoKXts''@;'; put 'put ''ZXQgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ZG9jdW1lbnQ7cmV0dXJuIHZvaWQgMD09PXZXJiYodlc9ZnVuY3Rpb24gYVllKCl7bGV0IGw9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRz''@;'; put 'put ''WzBdOmRvY3VtZW50O2NvbnN0IGM9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLnN0eWxlLmhlaWdodD0iMjAwcHgiLGMuc3R5bGUud2lkdGg9IjEwMCUiO2NvbnN0IGE9bC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnN0eWxlLmJveFNpemluZz0iY29udGVudC1ib3giLGEuc3R5bGUuaGVpZ2h0''@;'; put 'put ''PSIxNTBweCIsYS5zdHlsZS5sZWZ0PSIwcHgiLGEuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsYS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGEuc3R5bGUudG9wPSIwcHgiLGEuc3R5bGUud2lkdGg9IjIwMHB4IixhLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsYS5hcHBlbmRDaGlsZChj''@;'; put 'put ''KSwobC5ib2R5fHxsLmRvY3VtZW50RWxlbWVudCkuYXBwZW5kQ2hpbGQoYSk7Y29uc3QgZD1jLm9mZnNldFdpZHRoO2Euc3R5bGUub3ZlcmZsb3c9InNjcm9sbCI7bGV0IGg9Yy5vZmZzZXRXaWR0aDtyZXR1cm4gZD09PWgmJihoPWEuY2xpZW50V2lkdGgpLChsLmJvZHl8fGwuZG9jdW1lbnRF''@;'; put 'put ''bGVtZW50KS5yZW1vdmVDaGlsZChhKSxkLWh9KGwpKSx2V31mdW5jdGlvbiBNMWUobCl7cmV0dXJuIGwub2Zmc2V0V2lkdGghPT1sLmNsaWVudFdpZHRofWZ1bmN0aW9uIHgxZShsKXtyZXR1cm4gbC5vZmZzZXRIZWlnaHQhPT1sLmNsaWVudEhlaWdodH1mdW5jdGlvbiBuTChsLGMsYSl7bC5z''@;'; put 'put ''dHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZTNkKCR7Y30sJHthfSwwKWB9ZnVuY3Rpb24gbFllKGwpe2xldCBjO3JldHVybiBsLnN0eWxlLnRyYW5zZm9ybSYmIiIhPT0oYz1sLnN0eWxlLnRyYW5zZm9ybSk/WyJ0cmFuc2Zvcm0iLGNdOi0xfWZ1bmN0aW9uIGV4KGwpe2wuc3R5bGUudHJhbnNm''@;'; put 'put ''b3JtJiYiIiE9PWwuc3R5bGUudHJhbnNmb3JtJiYobC5zdHlsZS50cmFuc2Zvcm09IiIpfWZ1bmN0aW9uIHR4KGwpe3JldHVybiBsJiYoWyJJTlBVVCIsIlNFTEVDVCIsIlRFWFRBUkVBIl0uaW5kZXhPZihsLm5vZGVOYW1lKT4tMXx8InRydWUiPT09bC5jb250ZW50RWRpdGFibGUpfWZ1bmN0''@;'; put 'put ''aW9uIHJMKGwpe3JldHVybiB0eChsKSYmITE9PT1sLmhhc0F0dHJpYnV0ZSgiZGF0YS1ob3QtaW5wdXQiKX1mdW5jdGlvbiBjWWUobCl7ckwobC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHxsLnNlbGVjdCgpfWZ1bmN0aW9uIF9XKGwpe3JldHVybiFsLnBhcmVudE5vZGV9ZnVuY3Rp''@;'; put 'put ''b24gRTFlKGwsYyl7bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChkLGgpPT57ZC5mb3JFYWNoKGY9PntmLmlzSW50ZXJzZWN0aW5nJiZudWxsIT09bC5vZmZzZXRQYXJlbnQmJihjKCksaC51bm9ic2VydmUobCkpfSl9LHtyb290Omwub3duZXJEb2N1bWVudC5ib2R5fSkub2JzZXJ2ZShsKX1m''@;'; put 'put ''dW5jdGlvbiBiVyhsKXtsZXQgYz0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGE9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtjb25zdCBkPWwub3duZXJEb2N1bWVudCxo''@;'; put 'put ''PWQuY3JlYXRlUmFuZ2UoKSxmPWQuZGVmYXVsdFZpZXcuZ2V0U2VsZWN0aW9uKCk7Vm8obCwiY29udGVudGVkaXRhYmxlIiwhMCksYSYmVm8obCwuLi5NNCgpKSxjJiZtaShsLCJpbnZpc2libGVTZWxlY3Rpb24iKSxoLnNlbGVjdE5vZGVDb250ZW50cyhsKSxmLnJlbW92ZUFsbFJhbmdlcygp''@;'; put 'put ''LGYuYWRkUmFuZ2UoaCl9ZnVuY3Rpb24geVcobCl7bGV0IGM9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtjb25zdCBhPWwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRTZWxlY3Rpb24oKTtsLmhhc0F0dHJpYnV0ZSgiYXJp''@;'; put 'put ''YS1oaWRkZW4iKSYmbC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksYS5yZW1vdmVBbGxSYW5nZXMoKSxjJiZscyhsLCJpbnZpc2libGVTZWxlY3Rpb24iKSxsLnJlbW92ZUF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil9ZnVuY3Rpb24gVDFlKGwsYyl7bGV0IGE9IShhcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXTtiVyhsLGEpLGMoKSx5VyhsLGEpfWZ1bmN0aW9uIGhsKGwpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsfWZ1bmN0aW9uIGsxZShsKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFy''@;'; put 'put ''Z3VtZW50c1sxXT9hcmd1bWVudHNbMV06MjAwLGE9MDtjb25zdCBkPXtsYXN0Q2FsbFRocm90dGxlZDohMH07bGV0IGg9bnVsbDtyZXR1cm4gZnVuY3Rpb24gZigpe2Zvcih2YXIgdj1hcmd1bWVudHMubGVuZ3RoLFM9bmV3IEFycmF5KHYpLFY9MDtWPHY7VisrKVNbVl09YXJndW1lbnRzW1Zd''@;'; put 'put ''O2NvbnN0IFE9RGF0ZS5ub3coKTtsZXQgZGU9ITE7ZC5sYXN0Q2FsbFRocm90dGxlZD0hMCxhfHwoYT1RLGRlPSEwKTtjb25zdCBwZT1jLShRLWEpO3JldHVybiBkZT8oZC5sYXN0Q2FsbFRocm90dGxlZD0hMSxsLmFwcGx5KHRoaXMsUykpOihoJiZjbGVhclRpbWVvdXQoaCksaD1zZXRUaW1l''@;'; put 'put ''b3V0KCgpPT57ZC5sYXN0Q2FsbFRocm90dGxlZD0hMSxsLmFwcGx5KHRoaXMsUyksYT0wLGg9dm9pZCAwfSxwZSkpLGR9fWZ1bmN0aW9uIHVZZShsKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTA7Y29uc3QgZD1rMWUobCxh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MjAwKTtsZXQgaD1hO2Z1bmN0aW9uIHYoKXtmb3IodmFyIFM9YXJndW1lbnRzLmxlbmd0aCxWPW5ldyBBcnJheShTKSxRPTA7UTxTO1ErKylWW1FdPWFyZ3VtZW50c1tRXTtyZXR1cm4gaD8oaC09''@;'; put 'put ''MSxsLmFwcGx5KHRoaXMsVikpOmQuYXBwbHkodGhpcyxWKX1yZXR1cm4gdi5jbGVhckhpdHM9ZnVuY3Rpb24gZigpe2g9YX0sdn1mdW5jdGlvbiBpTChsKXtsZXQgZCxjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyMDAsYT1udWxsO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbiBoKCl7Zm9yKHZhciBmPWFyZ3VtZW50cy5sZW5ndGgsdj1uZXcgQXJyYXkoZiksUz0wO1M8ZjtTKyspdltTXT1hcmd1bWVudHNbU107cmV0dXJuIGEmJmNsZWFyVGltZW91dChhKSxhPXNldFRpbWVvdXQoKCk9PntkPWwuYXBwbHkodGhpcyx2KX0sYyksZH19ZnVuY3Rp''@;'; put 'put ''b24gZFllKCl7Zm9yKHZhciBsPWFyZ3VtZW50cy5sZW5ndGgsYz1uZXcgQXJyYXkobCksYT0wO2E8bDthKyspY1thXT1hcmd1bWVudHNbYV07Y29uc3RbZCwuLi5oXT1jO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdj1hcmd1bWVudHMubGVuZ3RoLFM9bmV3IEFycmF5KHYpLFY9MDtWPHY7''@;'; put 'put ''VisrKVNbVl09YXJndW1lbnRzW1ZdO3JldHVybiBNYyhoLChRLGRlKT0+ZGUoUSksZC5hcHBseSh0aGlzLFMpKX19ZnVuY3Rpb24gd1cobCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYz4xP2MtMTowKSxkPTE7ZDxjO2QrKylhW2QtMV09YXJndW1lbnRzW2RdO3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZj1hcmd1bWVudHMubGVuZ3RoLHY9bmV3IEFycmF5KGYpLFM9MDtTPGY7UysrKXZbU109YXJndW1lbnRzW1NdO3JldHVybiBsLmFwcGx5KHRoaXMsYS5jb25jYXQodikpfX1mdW5jdGlvbiBBMWUobCl7Y29uc3QgYz1sLmxlbmd0aDtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gYShkKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGY9YXJndW1lbnRzLmxlbmd0aCx2PW5ldyBBcnJheShmKSxTPTA7UzxmO1MrKyl2W1NdPWFyZ3VtZW50c1tTXTtjb25zdCBWPWQuY29uY2F0KHYpO2xldCBRO3JldHVybiBRPVYubGVuZ3RoPj1jP2wuYXBwbHkodGhpcyxWKTph''@;'; put 'put ''KFYpLFF9fShbXSl9ZnVuY3Rpb24gaFllKGwpe2NvbnN0IGM9bC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGEoZCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBmPWFyZ3VtZW50cy5sZW5ndGgsdj1uZXcgQXJyYXkoZiksUz0wO1M8ZjtTKyspdltTXT1hcmd1bWVudHNbU107Y29uc3QgVj1k''@;'; put 'put ''LmNvbmNhdCh2LnJldmVyc2UoKSk7bGV0IFE7cmV0dXJuIFE9Vi5sZW5ndGg+PWM/bC5hcHBseSh0aGlzLFYpOmEoViksUX19KFtdKX1mdW5jdGlvbiBvTChsLGMsYSxkLGgsZix2LFMpe3JldHVybiBzbyhTKT9sLmNhbGwoYyxhLGQsaCxmLHYsUyk6c28odik/bC5jYWxsKGMsYSxkLGgsZix2''@;'; put 'put ''KTpzbyhmKT9sLmNhbGwoYyxhLGQsaCxmKTpzbyhoKT9sLmNhbGwoYyxhLGQsaCk6c28oZCk/bC5jYWxsKGMsYSxkKTpzbyhhKT9sLmNhbGwoYyxhKTpsLmNhbGwoYyl9ZnVuY3Rpb24gaWIobCl7bGV0IGM7cmV0dXJuIEFycmF5LmlzQXJyYXkobCk/Yz1sLmxlbmd0aD9uZXcgQXJyYXkobC5s''@;'; put 'put ''ZW5ndGgpLmZpbGwobnVsbCk6W106KGM9e30sQ3MobCwoYSxkKT0+eyJfX2NoaWxkcmVuIiE9PWQmJihjW2RdPWEmJiJvYmplY3QiPT10eXBlb2YgYSYmIUFycmF5LmlzQXJyYXkoYSk/aWIoYSk6QXJyYXkuaXNBcnJheShhKT9hLmxlbmd0aCYmIm9iamVjdCI9PXR5cGVvZiBhWzBdJiYhQXJy''@;'; put 'put ''YXkuaXNBcnJheShhWzBdKT9baWIoYVswXSldOltdOm51bGwpfSkpLGN9ZnVuY3Rpb24gRDMobCxjKXtyZXR1cm4gYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxsLnByb3RvdHlwZT1uZXcgYyxsLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1sLGx9ZnVuY3Rpb24gRmMobCxjLGEpe2NvbnN0IGQ9''@;'; put 'put ''QXJyYXkuaXNBcnJheShhKTtyZXR1cm4gQ3MoYywoaCxmKT0+eyghMT09PWR8fGEuaW5jbHVkZXMoZikpJiYobFtmXT1oKX0pLGx9ZnVuY3Rpb24gbngobCxjKXtDcyhjLChhLGQpPT57Y1tkXSYmIm9iamVjdCI9PXR5cGVvZiBjW2RdPyhsW2RdfHwobFtkXT1BcnJheS5pc0FycmF5KGNbZF0p''@;'; put 'put ''P1tdOiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjW2RdKT9jW2RdOnt9KSxueChsW2RdLGNbZF0pKTpsW2RdPWNbZF19KX1mdW5jdGlvbiBSMChsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGw/SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsKSk6''@;'; put 'put ''bH1mdW5jdGlvbiBIaChsKXtjb25zdCBjPXt9O3JldHVybiBDcyhsLChhLGQpPT57Y1tkXT1hfSksY31mdW5jdGlvbiBybChsKXtsLk1JWElOU3x8KGwuTUlYSU5TPVtdKTtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjPjE/Yy0xOjApLGQ9MTtkPGM7ZCsrKWFbZC0x''@;'; put 'put ''XT1hcmd1bWVudHNbZF07cmV0dXJuIFRuKGEsaD0+e2wuTUlYSU5TLnB1c2goaC5NSVhJTl9OQU1FKSxDcyhoLChmLHYpPT57aWYodm9pZCAwIT09bC5wcm90b3R5cGVbdl0pdGhyb3cgbmV3IEVycm9yKGBNaXhpbiBjb25mbGljdC4gUHJvcGVydHkgJyR7dn0nIGFscmVhZHkgZXhpc3QgYW5k''@;'; put 'put ''IGNhbm5vdCBiZSBvdmVyd3JpdHRlbi5gKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZilsLnByb3RvdHlwZVt2XT1mO2Vsc2V7Y29uc3QgVj1mdW5jdGlvbihkZSl7Y29uc3QgcGU9YF8ke2RlfWA7cmV0dXJuIGZ1bmN0aW9uKENlKXt0aGlzW3BlXT1DZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLnByb3RvdHlwZSx2LHtnZXQ6ZnVuY3Rpb24oZGUscGUpe2NvbnN0IENlPWBfJHtkZX1gO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzW0NlXSYmKHRoaXNbQ2VdPShZZT0+e2xldCBldD1ZZTtyZXR1cm4oQXJyYXkuaXNBcnJheShldCl8fF9zKGV0KSkmJihldD1S''@;'; put 'put ''MChldCkpLGV0fSkocGUpKSx0aGlzW0NlXX19KHYsZiksc2V0OlYodiksY29uZmlndXJhYmxlOiEwfSl9fSl9KSxsfWZ1bmN0aW9uIHNMKGwsYyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGwpPT09SlNPTi5zdHJpbmdpZnkoYyl9ZnVuY3Rpb24gX3MobCl7cmV0dXJuIltvYmplY3QgT2JqZWN0''@;'; put 'put ''XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobCl9ZnVuY3Rpb24gSTMobCxjLGEsZCl7ZC52YWx1ZT1hLGQud3JpdGFibGU9ITEhPT1kLndyaXRhYmxlLGQuZW51bWVyYWJsZT0hMSE9PWQuZW51bWVyYWJsZSxkLmNvbmZpZ3VyYWJsZT0hMSE9PWQuY29uZmlndXJhYmxlLE9i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShsLGMsZCl9ZnVuY3Rpb24gQ3MobCxjKXtmb3IoY29uc3QgYSBpbiBsKWlmKCghbC5oYXNPd25Qcm9wZXJ0eXx8bC5oYXNPd25Qcm9wZXJ0eSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYSkpJiYhMT09PWMobFthXSxhLGwpKWJy''@;'; put 'put ''ZWFrO3JldHVybiBsfWZ1bmN0aW9uIEQxZShsLGMpe2NvbnN0IGE9Yy5zcGxpdCgiLiIpO2xldCBkPWw7cmV0dXJuIENzKGEsaD0+e2lmKGQ9ZFtoXSx2b2lkIDA9PT1kKXJldHVybiBkPXZvaWQgMCwhMX0pLGR9ZnVuY3Rpb24gYUwobCxjLGEpe2NvbnN0IGQ9Yy5zcGxpdCgiLiIpO2xldCBo''@;'; put 'put ''PWw7ZC5mb3JFYWNoKChmLHYpPT57diE9PWQubGVuZ3RoLTE/KFlsKGgsZil8fChoW2ZdPXt9KSxoPWhbZl0pOmhbZl09YX0pfWZ1bmN0aW9uIGxMKGwpe2lmKCFfcyhsKSlyZXR1cm4gMDtjb25zdCBjPWZ1bmN0aW9uKGEpe2xldCBkPTA7cmV0dXJuIF9zKGEpP0NzKGEsKGgsZik9PnsiX19j''@;'; put 'put ''aGlsZHJlbiIhPT1mJiYoZCs9YyhoKSl9KTpkKz0xLGR9O3JldHVybiBjKGwpfWZ1bmN0aW9uIFZoKGwpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidmFsdWUiO2NvbnN0IGE9YF8ke2N9YCxkPXtfdG91Y2hlZDohMSxbYV06''@;'; put 'put ''bCxpc1RvdWNoZWQoKXtyZXR1cm4gdGhpcy5fdG91Y2hlZH19O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxjLHtnZXQoKXtyZXR1cm4gdGhpc1thXX0sc2V0KGgpe3RoaXMuX3RvdWNoZWQ9ITAsdGhpc1thXT1ofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGR9ZnVu''@;'; put 'put ''Y3Rpb24gWWwobCxjKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGwsYyl9ZnVuY3Rpb24gY0wobCl7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobCl9ZnVuY3Rpb24gcngobCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGwpfWZ1''@;'; put 'put ''bmN0aW9uIENXKCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB3aW5kb3d9ZnVuY3Rpb24gSTFlKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8InUifWZ1bmN0aW9uIFIxZShsKXtyZXR1cm4gb2J8fChvYj0ib2JqZWN0Ij09dHlwZW9mIEludGw/bmV3IEludGwuQ29sbGF0b3IobCxhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30pLmNvbXBhcmU6ImZ1bmN0aW9uIj09dHlwZW9mIFN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZT8oYSxkKT0+YCR7YX1gLmxvY2FsZUNvbXBhcmUoZCk6KGEsZCk9PmE9PT1kPzA6YT5kPy0xOjEsb2Ip''@;'; put 'put ''fVIoOTU0OTMpO2NvbnN0IEJoPWw9Pntjb25zdCBjPXt2YWx1ZTohMSx0ZXN0OihhLGQpPT57Yy52YWx1ZT1sKGEsZCl9fTtyZXR1cm4gY30sRTQ9e2Nocm9tZTpCaCgobCxjKT0+L0Nocm9tZS8udGVzdChsKSYmL0dvb2dsZS8udGVzdChjKSksY2hyb21lV2ViS2l0OkJoKGw9Pi9DcmlPUy8u''@;'; put 'put ''dGVzdChsKSksZWRnZTpCaChsPT4vRWRnZS8udGVzdChsKSksZWRnZVdlYktpdDpCaChsPT4vRWRnaU9TLy50ZXN0KGwpKSxmaXJlZm94OkJoKGw9Pi9GaXJlZm94Ly50ZXN0KGwpKSxmaXJlZm94V2ViS2l0OkJoKGw9Pi9GeGlPUy8udGVzdChsKSksbW9iaWxlOkJoKGw9Pi9BbmRyb2lkfHdl''@;'; put 'put ''Yk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChsKSksc2FmYXJpOkJoKChsLGMpPT4vU2FmYXJpLy50ZXN0KGwpJiYvQXBwbGUgQ29tcHV0ZXIvLnRlc3QoYykpfSxzYj17bWFjOkJoKGw9Pi9eTWFjLy50ZXN0KGwpKSx3aW46QmgobD0+''@;'; put 'put ''L15XaW4vLnRlc3QobCkpLGxpbnV4OkJoKGw9Pi9eTGludXgvLnRlc3QobCkpLGlvczpCaChsPT4vaVBob25lfGlQYWR8aVBvZC9pLnRlc3QobCkpfTtmdW5jdGlvbiBMMWUoKXtsZXR7dXNlckFnZW50Omw9bmF2aWdhdG9yLnVzZXJBZ2VudCx2ZW5kb3I6Yz1uYXZpZ2F0b3IudmVuZG9yfT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Q3MoRTQsYT0+e2xldHt0ZXN0OmR9PWE7ZChsLGMpfSl9ZnVuY3Rpb24gTzFlKCl7bGV0e3BsYXRmb3JtOmw9bmF2aWdhdG9yLnBsYXRmb3JtfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQg''@;'; put 'put ''MCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Q3Moc2IsYz0+e2xldHt0ZXN0OmF9PWM7YShsKX0pfWZ1bmN0aW9uIFNXKCl7cmV0dXJuIEU0LmNocm9tZS52YWx1ZX1mdW5jdGlvbiBQMWUoKXtyZXR1cm4gRTQuY2hyb21lV2ViS2l0LnZhbHVlfWZ1bmN0aW9uIHVMKCl7cmV0dXJu''@;'; put 'put ''IEU0LmZpcmVmb3gudmFsdWV9ZnVuY3Rpb24gRjFlKCl7cmV0dXJuIEU0LmZpcmVmb3hXZWJLaXQudmFsdWV9ZnVuY3Rpb24gTVcoKXtyZXR1cm4gRTQuc2FmYXJpLnZhbHVlfWZ1bmN0aW9uIE4xZSgpe3JldHVybiBFNC5lZGdlLnZhbHVlfWZ1bmN0aW9uIGZZZSgpe3JldHVybiBFNC5lZGdl''@;'; put 'put ''V2ViS2l0LnZhbHVlfWZ1bmN0aW9uIFQ0KCl7cmV0dXJuIEU0Lm1vYmlsZS52YWx1ZX1mdW5jdGlvbiB4Vygpe3JldHVybiBzYi5pb3MudmFsdWV9ZnVuY3Rpb24gRVcoKXtsZXR7bWF4VG91Y2hQb2ludHM6bH09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJn''@;'; put 'put ''dW1lbnRzWzBdOm5hdmlnYXRvcjtyZXR1cm4gbD4yJiZzYi5tYWMudmFsdWV9ZnVuY3Rpb24gVFcoKXtyZXR1cm4gc2Iud2luLnZhbHVlfWZ1bmN0aW9uIGl4KCl7cmV0dXJuIHNiLm1hYy52YWx1ZX1mdW5jdGlvbiBwWWUoKXtyZXR1cm4gc2IubGludXgudmFsdWV9STFlKCkmJihMMWUoKSxP''@;'; put 'put ''MWUoKSk7Y29uc3Qgd289e0FMVDoxOCxBUlJPV19ET1dOOjQwLEFSUk9XX0xFRlQ6MzcsQVJST1dfUklHSFQ6MzksQVJST1dfVVA6MzgsQVVESU9fRE9XTjp1TCgpPzE4MjoxNzQsQVVESU9fTVVURTp1TCgpPzE4MToxNzMsQVVESU9fVVA6dUwoKT8xODM6MTc1LEJBQ0tTUEFDRTo4LENBUFNf''@;'; put 'put ''TE9DSzoyMCxDT01NQToxODgsQ09NTUFORF9MRUZUOjkxLENPTU1BTkRfUklHSFQ6OTMsQ09NTUFORF9GSVJFRk9YOjIyNCxDT05UUk9MOjE3LERFTEVURTo0NixFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEYxOjExMixGMjoxMTMsRjM6MTE0LEY0OjExNSxGNToxMTYsRjY6MTE3LEY3OjEx''@;'; put 'put ''OCxGODoxMTksRjk6MTIwLEYxMDoxMjEsRjExOjEyMixGMTI6MTIzLEYxMzoxMjQsRjE0OjEyNSxGMTU6MTI2LEYxNjoxMjcsRjE3OjEyOCxGMTg6MTI5LEYxOToxMzAsSE9NRTozNixJTlNFUlQ6NDUsTUVESUFfTkVYVDoxNzYsTUVESUFfUExBWV9QQVVTRToxNzksTUVESUFfUFJFVjoxNzcs''@;'; put 'put ''TUVESUFfU1RPUDoxNzgsTlVMTDowLE5VTV9MT0NLOjE0NCxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQQVVTRToxOSxQRVJJT0Q6MTkwLFNDUk9MTF9MT0NLOjE0NSxTSElGVDoxNixTUEFDRTozMixUQUI6OSxBOjY1LEM6NjcsRDo2OCxGOjcwLEw6NzYsTzo3OSxQOjgwLFM6ODMsVjo4NixY''@;'; put 'put ''Ojg4LFk6ODksWjo5MH0sZ1llPVt3by5BTFQsd28uQVJST1dfRE9XTix3by5BUlJPV19MRUZULHdvLkFSUk9XX1JJR0hULHdvLkFSUk9XX1VQLHdvLkFVRElPX0RPV04sd28uQVVESU9fTVVURSx3by5BVURJT19VUCx3by5CQUNLU1BBQ0Usd28uQ0FQU19MT0NLLHdvLkRFTEVURSx3by5FTkQs''@;'; put 'put ''d28uRU5URVIsd28uRVNDQVBFLHdvLkYxLHdvLkYyLHdvLkYzLHdvLkY0LHdvLkY1LHdvLkY2LHdvLkY3LHdvLkY4LHdvLkY5LHdvLkYxMCx3by5GMTEsd28uRjEyLHdvLkYxMyx3by5GMTQsd28uRjE1LHdvLkYxNix3by5GMTcsd28uRjE4LHdvLkYxOSx3by5IT01FLHdvLklOU0VSVCx3by5N''@;'; put 'put ''RURJQV9ORVhULHdvLk1FRElBX1BMQVlfUEFVU0Usd28uTUVESUFfUFJFVix3by5NRURJQV9TVE9QLHdvLk5VTEwsd28uTlVNX0xPQ0ssd28uUEFHRV9ET1dOLHdvLlBBR0VfVVAsd28uUEFVU0Usd28uU0NST0xMX0xPQ0ssd28uU0hJRlQsd28uVEFCXTtmdW5jdGlvbiBIMWUobCl7cmV0dXJu''@;'; put 'put ''IDMyPT09bHx8bD49NDgmJmw8PTU3fHxsPj05NiYmbDw9MTExfHxsPj0xODYmJmw8PTE5Mnx8bD49MjE5JiZsPD0yMjJ8fGw+PTIyNnx8bD49NjUmJmw8PTkwfWZ1bmN0aW9uIGtXKGwpe3JldHVybiBnWWUuaW5jbHVkZXMobCl9ZnVuY3Rpb24gbVllKGwpe2NvbnN0IGM9W107cmV0dXJuIGl4''@;'; put 'put ''KCk/Yy5wdXNoKHdvLkNPTU1BTkRfTEVGVCx3by5DT01NQU5EX1JJR0hULHdvLkNPTU1BTkRfRklSRUZPWCk6Yy5wdXNoKHdvLkNPTlRST0wpLGMuaW5jbHVkZXMobCl9ZnVuY3Rpb24gVjFlKGwpe3JldHVyblt3by5DT05UUk9MLHdvLkNPTU1BTkRfTEVGVCx3by5DT01NQU5EX1JJR0hULHdv''@;'; put 'put ''LkNPTU1BTkRfRklSRUZPWF0uaW5jbHVkZXMobCl9ZnVuY3Rpb24gYWIobCxjKXtjb25zdCBhPWMuc3BsaXQoInwiKTtsZXQgZD0hMTtyZXR1cm4gVG4oYSxoPT57aWYobD09PXdvW2hdKXJldHVybiBkPSEwLCExfSksZH1mdW5jdGlvbiBqaChsKXtsLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25F''@;'; put 'put ''bmFibGVkPSExLGwuY2FuY2VsQnViYmxlPSEwfWZ1bmN0aW9uIEZtKGwpe3JldHVybiExPT09bC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uRW5hYmxlZH1mdW5jdGlvbiBObShsKXtyZXR1cm4gMj09PWwuYnV0dG9ufWZ1bmN0aW9uIGRMKGwpe3JldHVybiAwPT09bC5idXR0b259ZnVuY3Rpb24g''@;'; put 'put ''QjFlKGwsYyl7Y29uc3QgYT17eDpsLm9mZnNldFgseTpsLm9mZnNldFl9O2xldCBkPWwudGFyZ2V0O2lmKCEoYyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXx8ZCE9PWMmJmQuY29udGFpbnMoYykpcmV0dXJuIGE7Zm9yKDtkIT09YzspYS54Kz1kLm9mZnNldExlZnQsYS55Kz1kLm9mZnNldFRv''@;'; put 'put ''cCxkPWQub2Zmc2V0UGFyZW50O3JldHVybiBhfWZ1bmN0aW9uIGlsKCl7c28oY29uc29sZSkmJmNvbnNvbGUud2FybiguLi5hcmd1bWVudHMpfWZ1bmN0aW9uIEFXKCl7c28oY29uc29sZSkmJmNvbnNvbGUuZXJyb3IoLi4uYXJndW1lbnRzKX1SKDY4MTQ2KTtjb25zdCBsYj1bImFmdGVyQ2Vs''@;'; put 'put ''bE1ldGFSZXNldCIsImFmdGVyQ2hhbmdlIiwiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIiwiYmVmb3JlQ29udGV4dE1lbnVTZXRJdGVtcyIsImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLCJiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsImFmdGVyQ29udGV4dE1l''@;'; put 'put ''bnVIaWRlIiwiYmVmb3JlQ29udGV4dE1lbnVTaG93IiwiYWZ0ZXJDb250ZXh0TWVudVNob3ciLCJhZnRlckNvcHlMaW1pdCIsImJlZm9yZUNyZWF0ZUNvbCIsImFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2UiLCJhZnRlckNyZWF0ZUNvbCIsImJlZm9yZUNyZWF0ZVJvdyIsImFmdGVyQ3JlYXRl''@;'; put 'put ''Um93IiwiYWZ0ZXJEZXNlbGVjdCIsImFmdGVyRGVzdHJveSIsImFmdGVyRG9jdW1lbnRLZXlEb3duIiwiYWZ0ZXJEcmF3U2VsZWN0aW9uIiwiYmVmb3JlUmVtb3ZlQ2VsbENsYXNzTmFtZXMiLCJhZnRlckdldENlbGxNZXRhIiwiYWZ0ZXJHZXRDb2xIZWFkZXIiLCJhZnRlckdldFJvd0hlYWRl''@;'; put 'put ''ciIsImFmdGVySW5pdCIsImFmdGVyTG9hZERhdGEiLCJhZnRlclVwZGF0ZURhdGEiLCJhZnRlck1vbWVudHVtU2Nyb2xsIiwiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLCJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIiwiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLCJhZnRlck9uQ2VsbE1v''@;'; put 'put ''dXNlVXAiLCJhZnRlck9uQ2VsbENvbnRleHRNZW51IiwiYWZ0ZXJPbkNlbGxNb3VzZU92ZXIiLCJhZnRlck9uQ2VsbE1vdXNlT3V0IiwiYWZ0ZXJSZW1vdmVDb2wiLCJhZnRlclJlbW92ZVJvdyIsImJlZm9yZVJlbmRlcmVyIiwiYWZ0ZXJSZW5kZXJlciIsImFmdGVyUm93U2VxdWVuY2VDaGFu''@;'; put 'put ''Z2UiLCJiZWZvcmVWaWV3cG9ydFNjcm9sbFZlcnRpY2FsbHkiLCJiZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseSIsImJlZm9yZVZpZXdwb3J0U2Nyb2xsIiwiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiLCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLCJhZnRlclNjcm9sbCIsImFmdGVy''@;'; put 'put ''U2VsZWN0aW9uIiwiYWZ0ZXJTZWxlY3Rpb25CeVByb3AiLCJhZnRlclNlbGVjdGlvbkVuZCIsImFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wIiwiYWZ0ZXJTZWxlY3Rpb25Gb2N1c1NldCIsImJlZm9yZVNlbGVjdENvbHVtbnMiLCJhZnRlclNlbGVjdENvbHVtbnMiLCJiZWZvcmVTZWxlY3RSb3dz''@;'; put 'put ''IiwiYWZ0ZXJTZWxlY3RSb3dzIiwiYWZ0ZXJTZXRDZWxsTWV0YSIsImFmdGVyUmVtb3ZlQ2VsbE1ldGEiLCJhZnRlclNldERhdGFBdENlbGwiLCJhZnRlclNldERhdGFBdFJvd1Byb3AiLCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLCJhZnRlclVwZGF0ZVNldHRpbmdzIiwiYWZ0ZXJWYWxp''@;'; put 'put ''ZGF0ZSIsImJlZm9yZUxhbmd1YWdlQ2hhbmdlIiwiYWZ0ZXJMYW5ndWFnZUNoYW5nZSIsImJlZm9yZUF1dG9maWxsIiwiYWZ0ZXJBdXRvZmlsbCIsImJlZm9yZUNlbGxBbGlnbm1lbnQiLCJiZWZvcmVDaGFuZ2UiLCJiZWZvcmVDaGFuZ2VSZW5kZXIiLCJiZWZvcmVEcmF3Qm9yZGVycyIsImJl''@;'; put 'put ''Zm9yZUdldENlbGxNZXRhIiwiYmVmb3JlUmVtb3ZlQ2VsbE1ldGEiLCJiZWZvcmVJbml0IiwiYmVmb3JlSW5pdFdhbGtvbnRhYmxlIiwiYmVmb3JlTG9hZERhdGEiLCJiZWZvcmVVcGRhdGVEYXRhIiwiYmVmb3JlS2V5RG93biIsImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsImJlZm9yZU9uQ2Vs''@;'; put 'put ''bE1vdXNlVXAiLCJiZWZvcmVPbkNlbGxDb250ZXh0TWVudSIsImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsImJlZm9yZU9uQ2VsbE1vdXNlT3V0IiwiYmVmb3JlUmVtb3ZlQ29sIiwiYmVmb3JlUmVtb3ZlUm93IiwiYmVmb3JlVmlld1JlbmRlciIsImFmdGVyVmlld1JlbmRlciIsImJlZm9yZVJl''@;'; put 'put ''bmRlciIsImFmdGVyUmVuZGVyIiwiYmVmb3JlUm93V3JhcCIsImJlZm9yZUNvbHVtbldyYXAiLCJiZWZvcmVTZXRDZWxsTWV0YSIsImJlZm9yZVNlbGVjdGlvbkZvY3VzU2V0IiwiYmVmb3JlU2V0UmFuZ2VTdGFydE9ubHkiLCJiZWZvcmVTZXRSYW5nZVN0YXJ0IiwiYmVmb3JlU2V0UmFuZ2VF''@;'; put 'put ''bmQiLCJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiLCJiZWZvcmVUb3VjaFNjcm9sbCIsImJlZm9yZVZhbGlkYXRlIiwiYmVmb3JlVmFsdWVSZW5kZXIiLCJjb25zdHJ1Y3QiLCJpbml0IiwibW9kaWZ5Q29sSGVhZGVyIiwibW9kaWZ5Q29sV2lkdGgiLCJtb2RpZnlGaWx0ZXJzTXVsdGlT''@;'; put 'put ''ZWxlY3RWYWx1ZSIsIm1vZGlmeUZvY3VzZWRFbGVtZW50IiwibW9kaWZ5Um93SGVhZGVyIiwibW9kaWZ5Um93SGVpZ2h0IiwibW9kaWZ5RGF0YSIsIm1vZGlmeVNvdXJjZURhdGEiLCJtb2RpZnlSb3dEYXRhIiwibW9kaWZ5R2V0Q2VsbENvb3JkcyIsIm1vZGlmeUZvY3VzT25UYWJOYXZpZ2F0''@;'; put 'put ''aW9uIiwiYmVmb3JlSGlnaGxpZ2h0aW5nUm93SGVhZGVyIiwiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIiwicGVyc2lzdGVudFN0YXRlTG9hZCIsInBlcnNpc3RlbnRTdGF0ZVJlc2V0IiwicGVyc2lzdGVudFN0YXRlU2F2ZSIsImJlZm9yZUNvbHVtblNvcnQiLCJhZnRlckNvbHVt''@;'; put 'put ''blNvcnQiLCJtb2RpZnlBdXRvZmlsbFJhbmdlIiwibW9kaWZ5Q29weWFibGVSYW5nZSIsImJlZm9yZUN1dCIsImFmdGVyQ3V0IiwiYmVmb3JlQ29weSIsImFmdGVyQ29weSIsImJlZm9yZVBhc3RlIiwiYWZ0ZXJQYXN0ZSIsImJlZm9yZUNvbHVtbkZyZWV6ZSIsImFmdGVyQ29sdW1uRnJlZXpl''@;'; put 'put ''IiwiYmVmb3JlQ29sdW1uTW92ZSIsImFmdGVyQ29sdW1uTW92ZSIsImJlZm9yZUNvbHVtblVuZnJlZXplIiwiYWZ0ZXJDb2x1bW5VbmZyZWV6ZSIsImJlZm9yZVJvd01vdmUiLCJhZnRlclJvd01vdmUiLCJiZWZvcmVDb2x1bW5SZXNpemUiLCJhZnRlckNvbHVtblJlc2l6ZSIsImJlZm9yZVJv''@;'; put 'put ''d1Jlc2l6ZSIsImFmdGVyUm93UmVzaXplIiwiYWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLCJhZnRlckdldFJvd0hlYWRlclJlbmRlcmVycyIsImJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsImJlZm9yZUZpbHRlciIsImFmdGVyRmlsdGVyIiwiYWZ0ZXJGb3JtdWxhc1ZhbHVl''@;'; put 'put ''c1VwZGF0ZSIsImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiLCJhZnRlck5hbWVkRXhwcmVzc2lvblJlbW92ZWQiLCJhZnRlclNoZWV0QWRkZWQiLCJhZnRlclNoZWV0UmVuYW1lZCIsImFmdGVyU2hlZXRSZW1vdmVkIiwibW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0IiwibW9kaWZ5Q29sdW1u''@;'; put 'put ''SGVhZGVyVmFsdWUiLCJiZWZvcmVVbmRvIiwiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIiwiYWZ0ZXJVbmRvIiwiYWZ0ZXJVbmRvU3RhY2tDaGFuZ2UiLCJiZWZvcmVSZWRvIiwiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIiwiYWZ0ZXJSZWRvIiwiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLCJtb2RpZnlS''@;'; put 'put ''b3dIZWFkZXJXaWR0aCIsIm1vZGlmeVRyYW5zZm9ybUZvY3VzIiwibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLCJtb2RpZnlUcmFuc2Zvcm1FbmQiLCJhZnRlck1vZGlmeVRyYW5zZm9ybUZvY3VzIiwiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1TdGFydCIsImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIiwi''@;'; put 'put ''YWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIsImJlZm9yZUhpZGVSb3dzIiwiYWZ0ZXJIaWRlUm93cyIsImJlZm9yZVVuaGlkZVJvd3MiLCJhZnRlclVuaGlk''@;'; put 'put ''ZVJvd3MiLCJiZWZvcmVIaWRlQ29sdW1ucyIsImFmdGVySGlkZUNvbHVtbnMiLCJiZWZvcmVVbmhpZGVDb2x1bW5zIiwiYWZ0ZXJVbmhpZGVDb2x1bW5zIiwiYmVmb3JlVHJpbVJvdyIsImFmdGVyVHJpbVJvdyIsImJlZm9yZVVudHJpbVJvdyIsImFmdGVyVW50cmltUm93IiwiYmVmb3JlRHJv''@;'; put 'put ''cGRvd25NZW51U2hvdyIsImFmdGVyRHJvcGRvd25NZW51U2hvdyIsImFmdGVyRHJvcGRvd25NZW51SGlkZSIsImJlZm9yZUFkZENoaWxkIiwiYWZ0ZXJBZGRDaGlsZCIsImJlZm9yZURldGFjaENoaWxkIiwiYWZ0ZXJEZXRhY2hDaGlsZCIsImJlZm9yZUJlZ2luRWRpdGluZyIsImFmdGVyQmVn''@;'; put 'put ''aW5FZGl0aW5nIiwiYmVmb3JlTWVyZ2VDZWxscyIsImFmdGVyTWVyZ2VDZWxscyIsImJlZm9yZVVubWVyZ2VDZWxscyIsImFmdGVyVW5tZXJnZUNlbGxzIiwiYWZ0ZXJMaXN0ZW4iLCJhZnRlclVubGlzdGVuIiwiYWZ0ZXJSZWZyZXNoRGltZW5zaW9ucyIsImJlZm9yZVJlZnJlc2hEaW1lbnNp''@;'; put 'put ''b25zIiwiYmVmb3JlQ29sdW1uQ29sbGFwc2UiLCJhZnRlckNvbHVtbkNvbGxhcHNlIiwiYmVmb3JlQ29sdW1uRXhwYW5kIiwiYWZ0ZXJDb2x1bW5FeHBhbmQiLCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiXSx5WWU9TmFgVGhlIHBsdWdpbiBob29rICJbaG9va05hbWVdIiB3YXMgcmVtb3Zl''@;'; put 'put ''ZCBpbiBIYW5kc29udGFibGUgW3JlbW92ZWRJblZlcnNpb25dLlx4MjAKICBQbGVhc2UgY29uc3VsdCByZWxlYXNlIG5vdGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9oYW5kc29udGFibGUvaGFuZHNvbnRhYmxlL3JlbGVhc2VzL3RhZy9bcmVtb3ZlZEluVmVyc2lvbl0gdG9ceDIwCiAgbGVhcm4g''@;'; put 'put ''YWJvdXQgdGhlIG1pZ3JhdGlvbiBwYXRoLmAsRFc9bmV3IE1hcChbWyJtb2RpZnlSb3ciLCI4LjAuMCJdLFsibW9kaWZ5Q29sIiwiOC4wLjAiXSxbInVubW9kaWZ5Um93IiwiOC4wLjAiXSxbInVubW9kaWZ5Q29sIiwiOC4wLjAiXSxbInNraXBMZW5ndGhDYWNoZSIsIjguMC4wIl0sWyJoaWRk''@;'; put 'put ''ZW5Db2x1bW4iLCI4LjAuMCJdLFsiaGlkZGVuUm93IiwiOC4wLjAiXV0pLElXPW5ldyBNYXAoW1tdXSksaEw9bmV3IFdlYWtNYXA7Y2xhc3MgajFle3N0YXRpYyBnZXRTaW5nbGV0b24oKXtyZXR1cm4gZnVuY3Rpb24gQ1llKCl7cmV0dXJuIHdZZX0oKX1jb25zdHJ1Y3RvcigpeyhmdW5jdGlv''@;'; put 'put ''biB2WWUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIF9ZZShsKXt2YXIgYz1mdW5jdGlvbiBiWWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVs''@;'; put 'put ''dCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KSh0aGlzLCJnbG9iYWxCdWNrZXQiLHZvaWQgMCksdGhpcy5nbG9iYWxCdWNr''@;'; put 'put ''ZXQ9dGhpcy5jcmVhdGVFbXB0eUJ1Y2tldCgpfWNyZWF0ZUVtcHR5QnVja2V0KCl7Y29uc3QgYz1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBUbihsYixhPT57Y1thXT1bXSx0aGlzLmluaXRPcmRlck1hcChjLGEpfSksY31nZXRCdWNrZXQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAm''@;'; put 'put ''JnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gYz8oYy5wbHVnaW5Ib29rQnVja2V0fHwoYy5wbHVnaW5Ib29rQnVja2V0PXRoaXMuY3JlYXRlRW1wdHlCdWNrZXQoKSksYy5wbHVnaW5Ib29rQnVja2V0KTp0aGlzLmdsb2JhbEJ1Y2tldH1hZGQoYyxhKXts''@;'; put 'put ''ZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO2lmKEFycmF5LmlzQXJyYXkoYSkpVG4oYSxmPT50aGlzLmFkZChjLGYsZCkpO2Vsc2V7RFcuaGFzKGMp''@;'; put 'put ''JiZpbChvVyh5WWUse2hvb2tOYW1lOmMscmVtb3ZlZEluVmVyc2lvbjpEVy5nZXQoYyl9KSksSVcuaGFzKGMpJiZpbChJVy5nZXQoYykpO2NvbnN0IGY9dGhpcy5nZXRCdWNrZXQoZCk7aWYodHlwZW9mIGZbY10+InUiJiYodGhpcy5yZWdpc3RlcihjKSxmW2NdPVtdLHRoaXMuaW5pdE9yZGVy''@;'; put 'put ''TWFwKGYsYykpLGEuc2tpcD0hMSwtMT09PWZbY10uaW5kZXhPZihhKSl7bGV0IHY9ITE7YS5pbml0aWFsSG9vayYmVG4oZltjXSwoUyxWKT0+e2lmKFMuaW5pdGlhbEhvb2spcmV0dXJuIGZbY11bVl09YSx2PSEwLCExfSksdnx8ZltjXS5wdXNoKGEpfXRoaXMuc2V0Q2FsbGJhY2tPcmRlcklu''@;'; put 'put ''ZGV4KGYsYyxhLGgpLHRoaXMub3JkZXJCdWNrZXRCeU9yZGVySW5kZXgoZixjKX1yZXR1cm4gdGhpc31vbmNlKGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRz''@;'; put 'put ''WzNdOnZvaWQgMDtBcnJheS5pc0FycmF5KGEpP1RuKGEsZj0+dGhpcy5vbmNlKGMsZixkKSk6KGEucnVuT25jZT0hMCx0aGlzLmFkZChjLGEsZCxoKSl9cmVtb3ZlKGMsYSl7Y29uc3QgaD10aGlzLmdldEJ1Y2tldChhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9h''@;'; put 'put ''cmd1bWVudHNbMl06bnVsbCk7cmV0dXJuIHR5cGVvZiBoW2NdPCJ1IiYmaFtjXS5pbmRleE9mKGEpPj0wJiYoYS5za2lwPSEwLCEwKX1oYXMoYyl7Y29uc3QgZD10aGlzLmdldEJ1Y2tldChhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVs''@;'; put 'put ''bCk7cmV0dXJuISh2b2lkIDA9PT1kW2NdfHwhZFtjXS5sZW5ndGgpfXJ1bihjLGEsZCxoLGYsdixTLFYpe3tjb25zdCBRPXRoaXMuZ2xvYmFsQnVja2V0W2FdLGRlPVE/US5sZW5ndGg6MDtsZXQgcGU9MDtpZihkZSlmb3IoO3BlPGRlOyl7aWYoIVFbcGVdfHxRW3BlXS5za2lwKXtwZSs9MTtj''@;'; put 'put ''b250aW51ZX1jb25zdCBDZT1vTChRW3BlXSxjLGQsaCxmLHYsUyxWKTt2b2lkIDAhPT1DZSYmKGQ9Q2UpLFFbcGVdJiZRW3BlXS5ydW5PbmNlJiZ0aGlzLnJlbW92ZShhLFFbcGVdKSxwZSs9MX19e2NvbnN0IFE9dGhpcy5nZXRCdWNrZXQoYylbYV0sZGU9UT9RLmxlbmd0aDowO2xldCBwZT0w''@;'; put 'put ''O2lmKGRlKWZvcig7cGU8ZGU7KXtpZighUVtwZV18fFFbcGVdLnNraXApe3BlKz0xO2NvbnRpbnVlfWNvbnN0IENlPW9MKFFbcGVdLGMsZCxoLGYsdixTLFYpO3ZvaWQgMCE9PUNlJiYoZD1DZSksUVtwZV0mJlFbcGVdLnJ1bk9uY2UmJnRoaXMucmVtb3ZlKGEsUVtwZV0sYykscGUrPTF9fXJl''@;'; put 'put ''dHVybiBkfWRlc3Ryb3koKXtDcyh0aGlzLmdldEJ1Y2tldChhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCksKGEsZCxoKT0+aFtkXS5sZW5ndGg9MCl9cmVnaXN0ZXIoYyl7dGhpcy5pc1JlZ2lzdGVyZWQoYyl8fGxiLnB1c2goYyl9''@;'; put 'put ''ZGVyZWdpc3RlcihjKXt0aGlzLmlzUmVnaXN0ZXJlZChjKSYmbGIuc3BsaWNlKGxiLmluZGV4T2YoYyksMSl9aXNEZXByZWNhdGVkKGMpe3JldHVybiBJVy5oYXMoYyl8fERXLmhhcyhjKX1pc1JlZ2lzdGVyZWQoYyl7cmV0dXJuIGxiLmluZGV4T2YoYyk+PTB9Z2V0UmVnaXN0ZXJlZCgpe3Jl''@;'; put 'put ''dHVybiBsYn1zZXRDYWxsYmFja09yZGVySW5kZXgoYyxhLGQsaCl7Y29uc3QgZj1OdW1iZXIuaXNJbnRlZ2VyKGgpP2g6MCx2PXRoaXMuZ2V0Q2FsbGJhY2tPcmRlck1hcChjLGEpO3Yuc2V0KGYsWy4uLnYuZ2V0KGYpfHxbXSxkXSl9b3JkZXJCdWNrZXRCeU9yZGVySW5kZXgoYyxhKXtjb25z''@;'; put 'put ''dCBkPXRoaXMuZ2V0Q2FsbGJhY2tPcmRlck1hcChjLGEpO3ZvaWQgMD09PWR8fDA9PT1kLnNpemV8fDE9PT1kLnNpemUmJmQuaGFzKDApfHwoY1thXT1bLi4uZF0uc29ydCgoaCxmKT0+aFswXS1mWzBdKS5mbGF0TWFwKGg9PntsZXRbLGZdPWg7cmV0dXJuIGZ9KSl9aW5pdE9yZGVyTWFwKGMs''@;'; put 'put ''YSl7aEwuaGFzKGMpfHxoTC5zZXQoYyxbXSksaEwuZ2V0KGMpW2FdPW5ldyBNYXB9Z2V0Q2FsbGJhY2tPcmRlck1hcChjLGEpe3JldHVybiBoTC5nZXQoYylbYV19fWNvbnN0IHdZZT1uZXcgajFlLGFvPWoxZSxSVz1uZXcgTWFwO2Z1bmN0aW9uIGFmKCl7bGV0IGw9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJjb21tb24iO1JXLmhhcyhsKXx8Ulcuc2V0KGwsbmV3IE1hcCk7Y29uc3QgYz1SVy5nZXQobCk7cmV0dXJue3JlZ2lzdGVyOmZ1bmN0aW9uIGEoUyxWKXtjLnNldChTLFYpfSxnZXRJdGVtOmZ1bmN0aW9uIGQoUyl7cmV0''@;'; put 'put ''dXJuIGMuZ2V0KFMpfSxoYXNJdGVtOmZ1bmN0aW9uIGgoUyl7cmV0dXJuIGMuaGFzKFMpfSxnZXROYW1lczpmdW5jdGlvbiBmKCl7cmV0dXJuWy4uLmMua2V5cygpXX0sZ2V0VmFsdWVzOmZ1bmN0aW9uIHYoKXtyZXR1cm5bLi4uYy52YWx1ZXMoKV19fX1jb25zdCBMVz1uZXcgV2Vha01hcCx7''@;'; put 'put ''cmVnaXN0ZXI6U1llLGdldEl0ZW06ejFlLGhhc0l0ZW06VTFlLGdldE5hbWVzOk1ZZX09YWYoImVkaXRvcnMiKTtmdW5jdGlvbiB4WWUobCl7Y29uc3QgYz17fSxhPWw7dGhpcy5nZXRDb25zdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBsfSx0aGlzLmdldEluc3RhbmNlPWZ1bmN0aW9uKGQp''@;'; put 'put ''e3JldHVybiBkLmd1aWQgaW4gY3x8KGNbZC5ndWlkXT1uZXcgYShkKSksY1tkLmd1aWRdfSxhby5nZXRTaW5nbGV0b24oKS5hZGQoImFmdGVyRGVzdHJveSIsZnVuY3Rpb24oKXtjW3RoaXMuZ3VpZF09bnVsbH0pfWZ1bmN0aW9uIFoxZShsLGMpe2xldCBhO2lmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBsKUxXLmdldChsKXx8VjEobnVsbCxsKSxhPUxXLmdldChsKTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgbCl0aHJvdyBFcnJvcignT25seSBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgY2FuIGJlIHBhc3NlZCBhcyAiZWRpdG9yIiBwYXJhbWV0ZXInKTthPXoxZShsKX1pZighYSl0aHJvdyBF''@;'; put 'put ''cnJvcihgTm8gZWRpdG9yIHJlZ2lzdGVyZWQgdW5kZXIgbmFtZSAiJHtsfSJgKTtyZXR1cm4gYS5nZXRJbnN0YW5jZShjKX1mdW5jdGlvbiBmTChsKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbClyZXR1cm4gbDtpZighVTFlKGwpKXRocm93IEVycm9yKGBObyByZWdpc3RlcmVkIGVkaXRvciBm''@;'; put 'put ''b3VuZCB1bmRlciAiJHtsfSIgbmFtZWApO3JldHVybiB6MWUobCkuZ2V0Q29uc3RydWN0b3IoKX1mdW5jdGlvbiBWMShsLGMpe2wmJiJzdHJpbmciIT10eXBlb2YgbCYmKGw9KGM9bCkuRURJVE9SX1RZUEUpO2NvbnN0IGE9bmV3IHhZZShjKTsic3RyaW5nIj09dHlwZW9mIGwmJlNZZShsLGEp''@;'; put 'put ''LExXLnNldChjLGEpfWxldCBwTD0wO2NvbnN0IHpoPWNsYXNzIEFZZXtjb25zdHJ1Y3Rvcigpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsOyhmdW5jdGlvbiBFWWUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFRZZShs''@;'; put 'put ''KXt2YXIgYz1mdW5jdGlvbiBrWWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KSh0aGlzLCJjb250ZXh0Iix2b2lkIDApLHRoaXMuY29udGV4dD1jfHx0aGlzLHRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc3x8KHRoaXMu''@;'; put 'put ''Y29udGV4dC5ldmVudExpc3RlbmVycz1bXSl9YWRkRXZlbnRMaXN0ZW5lcihjLGEsZCl7bGV0IGg9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtmdW5jdGlvbiBmKHYpe2QuY2FsbCh0aGlzLGZ1bmN0aW9uIERZZShsKXtjb25zdCBjPWwu''@;'; put 'put ''c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO3JldHVybiBsLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj1mdW5jdGlvbigpe2MuYXBwbHkodGhpcyksamgodGhpcyl9LGx9KHYpKX1yZXR1cm4gdGhpcy5jb250ZXh0LmV2ZW50TGlzdGVuZXJzLnB1c2goe2VsZW1lbnQ6YyxldmVudDphLGNhbGxi''@;'; put 'put ''YWNrOmQsY2FsbGJhY2tQcm94eTpmLG9wdGlvbnM6aCxldmVudE1hbmFnZXI6dGhpc30pLGMuYWRkRXZlbnRMaXN0ZW5lcihhLGYsaCkscEwrPTEsKCk9Pnt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyxhLGQpfX1yZW1vdmVFdmVudExpc3RlbmVyKGMsYSxkKXtsZXQgdixoPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10sZj10aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMubGVuZ3RoO2Zvcig7ZjspaWYoZi09MSx2PXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVyc1tmXSx2LmV2ZW50PT09YSYmdi5lbGVtZW50PT09Yyl7aWYo''@;'; put 'put ''ZCYmZCE9PXYuY2FsbGJhY2t8fGgmJnYuZXZlbnRNYW5hZ2VyIT09dGhpcyljb250aW51ZTt0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMuc3BsaWNlKGYsMSksdi5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodi5ldmVudCx2LmNhbGxiYWNrUHJveHksdi5vcHRpb25zKSxwTC09MX19''@;'; put 'put ''Y2xlYXJFdmVudHMoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2lmKCF0aGlzLmNvbnRleHQpcmV0dXJuO2xldCBhPXRoaXMuY29udGV4dC5ldmVudExpc3RlbmVycy5sZW5ndGg7Zm9yKDthOyl7YS09MTtjb25zdCBkPXRo''@;'; put 'put ''aXMuY29udGV4dC5ldmVudExpc3RlbmVyc1thXTtjJiZkLmV2ZW50TWFuYWdlciE9PXRoaXN8fCh0aGlzLmNvbnRleHQuZXZlbnRMaXN0ZW5lcnMuc3BsaWNlKGEsMSksZC5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZC5ldmVudCxkLmNhbGxiYWNrUHJveHksZC5vcHRpb25zKSxwTC09''@;'; put 'put ''MSl9fWNsZWFyKCl7dGhpcy5jbGVhckV2ZW50cygpfWRlc3Ryb3koKXt0aGlzLmNsZWFyRXZlbnRzKCksdGhpcy5jb250ZXh0PW51bGx9ZGVzdHJveVdpdGhPd25FdmVudHNPbmx5KCl7dGhpcy5jbGVhckV2ZW50cyghMCksdGhpcy5jb250ZXh0PW51bGx9ZmlyZUV2ZW50KGMsYSl7bGV0IGQ9''@;'; put 'put ''Yy5kb2N1bWVudCxoPWM7ZHx8KGQ9Yy5vd25lckRvY3VtZW50P2Mub3duZXJEb2N1bWVudDpjLGg9ZC5kZWZhdWx0Vmlldyk7Y29uc3QgZj17YnViYmxlczohMCxjYW5jZWxhYmxlOiJtb3VzZW1vdmUiIT09YSx2aWV3OmgsZGV0YWlsOjAsc2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjEs''@;'; put 'put ''Y2xpZW50WToxLGN0cmxLZXk6ITEsYWx0S2V5OiExLHNoaWZ0S2V5OiExLG1ldGFLZXk6ITEsYnV0dG9uOjAscmVsYXRlZFRhcmdldDp2b2lkIDB9O2xldCB2O2QuY3JlYXRlRXZlbnQ/KHY9ZC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKSx2LmluaXRNb3VzZUV2ZW50KGEsZi5idWJibGVz''@;'; put 'put ''LGYuY2FuY2VsYWJsZSxmLnZpZXcsZi5kZXRhaWwsZi5zY3JlZW5YLGYuc2NyZWVuWSxmLmNsaWVudFgsZi5jbGllbnRZLGYuY3RybEtleSxmLmFsdEtleSxmLnNoaWZ0S2V5LGYubWV0YUtleSxmLmJ1dHRvbixmLnJlbGF0ZWRUYXJnZXR8fGQuYm9keS5wYXJlbnROb2RlKSk6dj1kLmNyZWF0''@;'; put 'put ''ZUV2ZW50T2JqZWN0KCksYy5kaXNwYXRjaEV2ZW50P2MuZGlzcGF0Y2hFdmVudCh2KTpjLmZpcmVFdmVudChgb24ke2F9YCx2KX19O2Z1bmN0aW9uIEc4KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBPWWUobCl7dmFyIGM9ZnVuY3Rpb24gUFllKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBs''@;'; put 'put ''fHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBh''@;'; put 'put ''IHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIFkxZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlz''@;'; put 'put ''IG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIE9XPW5ldyBXZWFrU2V0O2NsYXNzIFBXe2NvbnN0cnVjdG9yKGMsYSxkKXsoZnVuY3Rpb24gUlllKGwsYyl7KGZ1bmN0aW9uIExZZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXpl''@;'; put 'put ''IHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSkodGhpcyxPVyksRzgodGhpcywiaG90Iix2b2lkIDApLEc4KHRoaXMsInRhYmxlTWV0YSIsdm9pZCAwKSxHOCh0aGlzLCJzZWxlY3Rpb24iLHZvaWQgMCksRzgodGhpcywiZXZl''@;'; put 'put ''bnRNYW5hZ2VyIix2b2lkIDApLEc4KHRoaXMsImRlc3Ryb3llZCIsITEpLEc4KHRoaXMsImFjdGl2ZUVkaXRvciIsdm9pZCAwKSxHOCh0aGlzLCJjZWxsUHJvcGVydGllcyIsdm9pZCAwKSx0aGlzLmhvdD1jLHRoaXMudGFibGVNZXRhPWEsdGhpcy5zZWxlY3Rpb249ZCx0aGlzLmV2ZW50TWFu''@;'; put 'put ''YWdlcj1uZXcgemgoYyksdGhpcy5ob3QuYWRkSG9vaygiYWZ0ZXJEb2N1bWVudEtleURvd24iLGg9PlkxZShPVyx0aGlzLEZZZSkuY2FsbCh0aGlzLGgpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsImNv''@;'; put 'put ''bXBvc2l0aW9uc3RhcnQiLGg9PnshdGhpcy5kZXN0cm95ZWQmJnRoaXMuaG90LmlzTGlzdGVuaW5nKCkmJnRoaXMub3BlbkVkaXRvcigiIixoKX0pLHRoaXMuaG90LnZpZXcuX3d0LnVwZGF0ZSgib25DZWxsRGJsQ2xpY2siLChoLGYsdik9PlkxZShPVyx0aGlzLE5ZZSkuY2FsbCh0aGlzLGgs''@;'; put 'put ''Zix2KSl9Z2V0QWN0aXZlRWRpdG9yKCl7cmV0dXJuIHRoaXMuYWN0aXZlRWRpdG9yfXByZXBhcmVFZGl0b3IoKXt2YXIgYztpZih0aGlzLmFjdGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVFZGl0b3IuaXNXYWl0aW5nKCkpcmV0dXJuIHZvaWQgdGhpcy5jbG9zZUVkaXRvcighMSwhMSxRPT57USYm''@;'; put 'put ''dGhpcy5wcmVwYXJlRWRpdG9yKCl9KTtjb25zdCBhPW51bGw9PT0oYz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGlnaHQ7aWYoIWF8fGEuaXNIZWFkZXIoKSlyZXR1cm47Y29uc3R7cm93OmQsY29sOmh9PWEsZj10aGlzLmhvdC5y''@;'; put 'put ''dW5Ib29rcygibW9kaWZ5R2V0Q2VsbENvb3JkcyIsZCxoKTtsZXQgdj1kLFM9aDtpZihBcnJheS5pc0FycmF5KGYpJiYoW3YsU109ZiksdGhpcy5jZWxsUHJvcGVydGllcz10aGlzLmhvdC5nZXRDZWxsTWV0YSh2LFMpLCF0aGlzLmlzQ2VsbEVkaXRhYmxlKCkpcmV0dXJuIHZvaWQgdGhpcy5j''@;'; put 'put ''bGVhckFjdGl2ZUVkaXRvcigpO2NvbnN0IFY9dGhpcy5ob3QuZ2V0Q2VsbChkLGgsITApO2lmKFYpe2NvbnN0IFE9dGhpcy5ob3QuZ2V0Q2VsbEVkaXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKSxkZT10aGlzLmhvdC5jb2xUb1Byb3AoUykscGU9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2Vs''@;'; put 'put ''bCh0aGlzLmhvdC50b1BoeXNpY2FsUm93KHYpLFMpO3RoaXMuYWN0aXZlRWRpdG9yPVoxZShRLHRoaXMuaG90KSx0aGlzLmFjdGl2ZUVkaXRvci5wcmVwYXJlKGQsaCxkZSxWLHBlLHRoaXMuY2VsbFByb3BlcnRpZXMpfX1pc0VkaXRvck9wZW5lZCgpe3JldHVybiB0aGlzLmFjdGl2ZUVkaXRv''@;'; put 'put ''ciYmdGhpcy5hY3RpdmVFZGl0b3IuaXNPcGVuZWQoKX1vcGVuRWRpdG9yKGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighdGhpcy5pc0NlbGxFZGl0YWJsZSgpKXJldHVybiB2b2lkIHRoaXMuY2xlYXJBY3RpdmVF''@;'; put 'put ''ZGl0b3IoKTtjb25zdCBoPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7bGV0IGY9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUJlZ2luRWRpdGluZyIsaC5oaWdobGlnaHQucm93LGguaGlnaGxpZ2h0LmNvbCxjLGEsZCk7YSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQmJiJib29sZWFu''@;'; put 'put ''IiE9dHlwZW9mIGYmJihmPTA9PT10aGlzLmhvdC5zZWxlY3Rpb24uZ2V0TGF5ZXJMZXZlbCgpJiZoLmlzU2luZ2xlKCkpLCExIT09Zj8odGhpcy5hY3RpdmVFZGl0b3J8fCh0aGlzLmhvdC5zY3JvbGxUb0ZvY3VzZWRDZWxsKCksdGhpcy5wcmVwYXJlRWRpdG9yKCkpLHRoaXMuYWN0aXZlRWRp''@;'; put 'put ''dG9yJiYoZCYmdGhpcy5hY3RpdmVFZGl0b3IuZW5hYmxlRnVsbEVkaXRNb2RlKCksdGhpcy5hY3RpdmVFZGl0b3IuYmVnaW5FZGl0aW5nKGMsYSkpKTp0aGlzLmNsZWFyQWN0aXZlRWRpdG9yKCl9Y2xvc2VFZGl0b3IoYyxhLGQpe3RoaXMuYWN0aXZlRWRpdG9yP3RoaXMuYWN0aXZlRWRpdG9y''@;'; put 'put ''LmZpbmlzaEVkaXRpbmcoYyxhLGQpOmQmJmQoITEpfWNsb3NlRWRpdG9yQW5kU2F2ZUNoYW5nZXMoYyl7dGhpcy5jbG9zZUVkaXRvcighMSxjKX1jbG9zZUVkaXRvckFuZFJlc3RvcmVPcmlnaW5hbFZhbHVlKGMpe3RoaXMuY2xvc2VFZGl0b3IoITAsYyl9Y2xlYXJBY3RpdmVFZGl0b3IoKXt0''@;'; put 'put ''aGlzLmFjdGl2ZUVkaXRvcj12b2lkIDB9aXNDZWxsRWRpdGFibGUoKXtjb25zdCBjPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWMpcmV0dXJuITE7Y29uc3QgYT10aGlzLmhvdC5nZXRDZWxsRWRpdG9yKHRoaXMuY2VsbFByb3BlcnRpZXMpLHtyb3c6ZCxjb2w6aH09Yy5o''@;'; put 'put ''aWdobGlnaHQse3Jvd0luZGV4TWFwcGVyOmYsY29sdW1uSW5kZXhNYXBwZXI6dn09dGhpcy5ob3QsUz1mLmlzSGlkZGVuKHRoaXMuaG90LnRvUGh5c2ljYWxSb3coZCkpfHx2LmlzSGlkZGVuKHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oaCkpO3JldHVybiEodGhpcy5jZWxsUHJvcGVydGll''@;'; put 'put ''cy5yZWFkT25seXx8IWF8fFMpfW1vdmVTZWxlY3Rpb25BZnRlckVudGVyKGMpe2NvbnN0IGE9ey4uLiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnRhYmxlTWV0YS5lbnRlck1vdmVzP3RoaXMudGFibGVNZXRhLmVudGVyTW92ZXMoYyk6dGhpcy50YWJsZU1ldGEuZW50ZXJNb3Zlc307Yy5zaGlm''@;'; put 'put ''dEtleSYmKGEucm93PS1hLnJvdyxhLmNvbD0tYS5jb2wpLHRoaXMuaG90LnNlbGVjdGlvbi5pc011bHRpcGxlKCk/dGhpcy5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXMoYS5yb3csYS5jb2wpOnRoaXMuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KGEucm93LGEuY29sLCEwKX1kZXN0cm95KCl7''@;'; put 'put ''dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBGWWUobCl7Y29uc3QgYz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKCF0aGlzLmhvdC5pc0xpc3RlbmluZygpfHwhY3x8Yy5oaWdobGlnaHQuaXNIZWFkZXIoKXx8Rm0obCkp''@;'; put 'put ''cmV0dXJuO2NvbnN0e2tleUNvZGU6YX09bCxkPShsLmN0cmxLZXl8fGwubWV0YUtleSkmJiFsLmFsdEtleTsoIXRoaXMuYWN0aXZlRWRpdG9yfHx0aGlzLmFjdGl2ZUVkaXRvciYmIXRoaXMuYWN0aXZlRWRpdG9yLmlzV2FpdGluZygpKSYmIWtXKGEpJiYhVjFlKGEpJiYhZCYmIXRoaXMuaXNF''@;'; put 'put ''ZGl0b3JPcGVuZWQoKSYmdGhpcy5vcGVuRWRpdG9yKCIiLGwpfWZ1bmN0aW9uIE5ZZShsLGMpe2MuaXNDZWxsKCkmJnRoaXMub3BlbkVkaXRvcihudWxsLGwsITApfWNvbnN0IFcxZT1uZXcgV2Vha01hcDtQVy5nZXRJbnN0YW5jZT1mdW5jdGlvbihsLGMsYSl7bGV0IGQ9VzFlLmdldChsKTty''@;'; put 'put ''ZXR1cm4gZHx8KGQ9bmV3IFBXKGwsYyxhKSxXMWUuc2V0KGwsZCkpLGR9O2NvbnN0IEhZZT1QVztmdW5jdGlvbiBveChsLGMsYSl7RzFlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBHMWUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0''@;'; put 'put ''aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFdsKGwsYyl7cmV0dXJuIGwuZ2V0KGs0KGwsYykpfWZ1bmN0aW9uIHN4KGwsYyxhKXtyZXR1cm4gbC5zZXQoazQobCxjKSxhKSxhfWZ1bmN0aW9uIGs0KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBjYj1PYmplY3QuZnJlZXplKHtDRUxMOiJjZWxsIixNSVhFRDoi''@;'; put 'put ''bWl4ZWQifSk7dmFyIHp1PW5ldyBXZWFrTWFwLGdMPW5ldyBXZWFrTWFwLG1MPW5ldyBXZWFrTWFwLHZMPW5ldyBXZWFrTWFwLF9MPW5ldyBXZWFrTWFwLEhtPW5ldyBXZWFrU2V0O2NsYXNzIEJZZXtjb25zdHJ1Y3RvcihjKXt2YXIgYT10aGlzOyhmdW5jdGlvbiBWWWUobCxjKXtHMWUobCxj''@;'; put 'put ''KSxjLmFkZChsKX0pKHRoaXMsSG0pLG94KHRoaXMsenUsdm9pZCAwKSxveCh0aGlzLGdMLHZvaWQgMCksb3godGhpcyxtTCwxKSxveCh0aGlzLHZMLG51bGwpLG94KHRoaXMsX0wsbmV3IE1hcCk7Y29uc3QgZD1jLmdldFNldHRpbmdzKCk7c3goenUsdGhpcyxjKSxzeChnTCx0aGlzLGQuaW1l''@;'; put 'put ''RmFzdEVkaXQ/Y2IuTUlYRUQ6Y2IuQ0VMTCksV2woenUsdGhpcykuYWRkSG9vaygiYWZ0ZXJVcGRhdGVTZXR0aW5ncyIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1cm4gazQoSG0s''@;'; put 'put ''YSx6WWUpLmNhbGwoYSwuLi5mKX0pLFdsKHp1LHRoaXMpLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uIixmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBrNChIbSxhLCQxZSkuY2Fs''@;'; put 'put ''bChhLC4uLmYpfSksV2woenUsdGhpcykuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25Gb2N1c1NldCIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1cm4gazQoSG0sYSwkMWUpLmNhbGwo''@;'; put 'put ''YSwuLi5mKX0pLFdsKHp1LHRoaXMpLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBrNChIbSxhLGpZZSkuY2FsbChhLC4uLmYp''@;'; put 'put ''fSl9Z2V0Rm9jdXNNb2RlKCl7cmV0dXJuIFdsKGdMLHRoaXMpfXNldEZvY3VzTW9kZShjKXtPYmplY3QudmFsdWVzKGNiKS5pbmNsdWRlcyhjKT9zeChnTCx0aGlzLGMpOmlsKGAiJHtjfSIgaXMgbm90IGEgdmFsaWQgZm9jdXMgbW9kZS5gKX1nZXRSZWZvY3VzRGVsYXkoKXtyZXR1cm4gV2wo''@;'; put 'put ''bUwsdGhpcyl9c2V0UmVmb2N1c0RlbGF5KGMpe3N4KG1MLHRoaXMsYyl9c2V0UmVmb2N1c0VsZW1lbnRHZXR0ZXIoYyl7c3godkwsdGhpcyxjKX1nZXRSZWZvY3VzRWxlbWVudCgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXbCh2TCx0aGlzKT9XbCh2TCx0aGlzKS5jYWxsKHRoaXMpOm51''@;'; put 'put ''bGw9PT0oYz1XbCh6dSx0aGlzKS5nZXRBY3RpdmVFZGl0b3IoKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuVEVYVEFSRUE7dmFyIGN9Zm9jdXNPbkhpZ2hsaWdodGVkQ2VsbChjKXtjb25zdCBhPWQ9Pnt2YXIgaCxmO2NvbnN0IHY9bnVsbD09PShoPVdsKHp1LHRoaXMpLmdldFNlbGVjdGVkUmFu''@;'; put 'put ''Z2VMYXN0KCkpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmhpZ2hsaWdodDtpZighdilyZXR1cm47bGV0IFM9V2woenUsdGhpcykucnVuSG9va3MoIm1vZGlmeUZvY3VzZWRFbGVtZW50Iix2LnJvdyx2LmNvbCxkKTtTIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fChTPWQpLFMmJihudWxsPT09KGY9''@;'; put 'put ''V2woenUsdGhpcykuZ2V0QWN0aXZlRWRpdG9yKCkpfHx2b2lkIDA9PT1mfHwhZi5pc09wZW5lZCgpKSYmUy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pfTtjP2EoYyk6azQoSG0sdGhpcyxGVykuY2FsbCh0aGlzLGQ9PmEoZCkpfXJlZm9jdXNUb0VkaXRvclRleHRhcmVhKCl7dmFyIGM7bGV0''@;'; put 'put ''IGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOldsKG1MLHRoaXMpO2NvbnN0IGQ9dGhpcy5nZXRSZWZvY3VzRWxlbWVudCgpO1dsKHp1LHRoaXMpLmdldFNldHRpbmdzKCkuaW1lRmFzdEVkaXQmJihudWxsPT09KGM9V2woenUsdGhpcyku''@;'; put 'put ''Z2V0QWN0aXZlRWRpdG9yKCkpfHx2b2lkIDA9PT1jfHwhYy5pc09wZW5lZCgpKSYmZCYmKFdsKF9MLHRoaXMpLmhhcyhhKXx8V2woX0wsdGhpcykuc2V0KGEsaUwoKCk9PntkLnNlbGVjdCgpfSxhKSksV2woX0wsdGhpcykuZ2V0KGEpKCkpfX1mdW5jdGlvbiBGVyhsKXt2YXIgYztjb25zdCBh''@;'; put 'put ''PW51bGw9PT0oYz1XbCh6dSx0aGlzKS5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGlnaHQ7aWYoIWF8fCFXbCh6dSx0aGlzKS5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZShhKSlyZXR1cm4gdm9pZCBsKG51bGwpO2NvbnN0IGQ9V2woenUsdGhpcyku''@;'; put 'put ''Z2V0Q2VsbChhLnJvdyxhLmNvbCwhMCk7bnVsbD09PWQ/V2woenUsdGhpcykuYWRkSG9va09uY2UoImFmdGVyU2Nyb2xsIiwoKT0+e2woV2woenUsdGhpcykuZ2V0Q2VsbChhLnJvdyxhLmNvbCwhMCkpfSk6bChkKX1mdW5jdGlvbiAkMWUoKXtrNChIbSx0aGlzLEZXKS5jYWxsKHRoaXMsbD0+''@;'; put 'put ''e2NvbnN0e2FjdGl2ZUVsZW1lbnQ6Y309V2woenUsdGhpcykucm9vdERvY3VtZW50O2MmJnJMKGMpJiZjLmJsdXIoKSx0aGlzLmZvY3VzT25IaWdobGlnaHRlZENlbGwobCl9KX1mdW5jdGlvbiBqWWUoKXtrNChIbSx0aGlzLEZXKS5jYWxsKHRoaXMsbD0+e3RoaXMuZ2V0Rm9jdXNNb2RlKCk9''@;'; put 'put ''PT1jYi5NSVhFRCYmIlREIj09PWwubm9kZU5hbWUmJnRoaXMucmVmb2N1c1RvRWRpdG9yVGV4dGFyZWEoKX0pfWZ1bmN0aW9uIHpZZShsKXsiYm9vbGVhbiI9PXR5cGVvZiBsLmltZUZhc3RFZGl0JiZ0aGlzLnNldEZvY3VzTW9kZShsLmltZUZhc3RFZGl0P2NiLk1JWEVEOmNiLkNFTEwpfVIo''@;'; put 'put ''MTYyMjkpO2NvbnN0IHExZT17IiZuYnNwOyI6IiAiLCImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+In0sVVllPW5ldyBSZWdFeHAoT2JqZWN0LmtleXMocTFlKS5tYXAobD0+YCgke2x9KWApLmpvaW4oInwiKSwiZ2kiKTtmdW5jdGlvbiBOVyhsKXtjb25zdCBjPWwuaGFzQ29sSGVh''@;'; put 'put ''ZGVycygpLGE9bC5oYXNSb3dIZWFkZXJzKCksZD1bYz8tMTowLGE/LTE6MCxsLmNvdW50Um93cygpLTEsbC5jb3VudENvbHMoKS0xXSxoPWwuZ2V0RGF0YSguLi5kKSxmPWgubGVuZ3RoLHY9Zj4wP2hbMF0ubGVuZ3RoOjAsUz1bIjx0YWJsZT4iLCI8L3RhYmxlPiJdLFY9Yz9bIjx0aGVhZD4i''@;'; put 'put ''LCI8L3RoZWFkPiJdOltdLFE9WyI8dGJvZHk+IiwiPC90Ym9keT4iXSxkZT1hPzE6MCxwZT1jPzE6MDtmb3IobGV0IENlPTA7Q2U8ZjtDZSs9MSl7Y29uc3QgT2U9YyYmMD09PUNlLFllPVtdO2ZvcihsZXQgZHQ9MDtkdDx2O2R0Kz0xKXtjb25zdCBodD0hT2UmJmEmJjA9PT1kdDtsZXQgTXQ9''@;'; put 'put ''IiI7aWYoT2UpTXQ9YDx0aD4ke2wuZ2V0Q29sSGVhZGVyKGR0LWRlKX08L3RoPmA7ZWxzZSBpZihodClNdD1gPHRoPiR7bC5nZXRSb3dIZWFkZXIoQ2UtcGUpfTwvdGg+YDtlbHNle2NvbnN0IFF0PWhbQ2VdW2R0XSx7aGlkZGVuOmxuLHJvd3NwYW46dm4sY29sc3Bhbjp3bn09bC5nZXRDZWxs''@;'; put 'put ''TWV0YShDZS1wZSxkdC1kZSk7aWYoIWxuKXtjb25zdCBucj1bXTtpZih2biYmbnIucHVzaChgcm93c3Bhbj0iJHt2bn0iYCksd24mJm5yLnB1c2goYGNvbHNwYW49IiR7d259ImApLG9jKFF0KSlNdD1gPHRkICR7bnIuam9pbigiICIpfT48L3RkPmA7ZWxzZXtjb25zdCB2cj1RdC50b1N0cmlu''@;'; put 'put ''ZygpLnJlcGxhY2UoIjwiLCImbHQ7IikucmVwbGFjZSgiPiIsIiZndDsiKS5yZXBsYWNlKC8oPGJyKFxzKnxcLyk+KFxyXG58XG4pP3xcclxufFxuKS9nLCI8YnI+XHJcbiIpLnJlcGxhY2UoL1x4MjAvZ2ksIiZuYnNwOyIpLnJlcGxhY2UoL1x0L2dpLCImIzk7Iik7TXQ9YDx0ZCAke25yLmpv''@;'; put 'put ''aW4oIiAiKX0+JHt2cn08L3RkPmB9fX1ZZS5wdXNoKE10KX1jb25zdCBldD1bIjx0cj4iLC4uLlllLCI8L3RyPiJdLmpvaW4oIiIpO09lP1Yuc3BsaWNlKDEsMCxldCk6US5zcGxpY2UoLTEsMCxldCl9cmV0dXJuIFMuc3BsaWNlKDEsMCxWLmpvaW4oIiIpLFEuam9pbigiIikpLFMuam9pbigi''@;'; put 'put ''Iil9ZnVuY3Rpb24gSFcobCl7Y29uc3QgYz1sLmxlbmd0aCxhPVsiPHRhYmxlPiJdO2ZvcihsZXQgZD0wO2Q8YztkKz0xKXtjb25zdCBoPWxbZF0sZj1oLmxlbmd0aCx2PVtdOzA9PT1kJiZhLnB1c2goIjx0Ym9keT4iKTtmb3IobGV0IFM9MDtTPGY7Uys9MSl7Y29uc3QgVj1oW1NdLFE9b2Mo''@;'; put 'put ''Vik/IiI6Vi50b1N0cmluZygpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8oPGJyKFxzKnxcLyk+KFxyXG58XG4pP3xcclxufFxuKS9nLCI8YnI+XHJcbiIpLnJlcGxhY2UoL1x4MjB7Mix9L2dpLGRlPT5g''@;'; put 'put ''PHNwYW4gc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4keyImbmJzcDsiLnJlcGVhdChkZS5sZW5ndGgtMSl9IDwvc3Bhbj5gKS5yZXBsYWNlKC9cdC9naSwiJiM5OyIpO3YucHVzaChgPHRkPiR7UX08L3RkPmApfWEucHVzaCgiPHRyPiIsLi4udiwiPC90cj4iKSxkKzE9PT1jJiZhLnB1c2go''@;'; put 'put ''IjwvdGJvZHk+Iil9cmV0dXJuIGEucHVzaCgiPC90YWJsZT4iKSxhLmpvaW4oIiIpfWZ1bmN0aW9uIEsxZShsKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZG9jdW1lbnQ7Y29uc3QgYT17fSxkPWMuY3JlYXRlRG9jdW1lbnRG''@;'; put 'put ''cmFnbWVudCgpLGg9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmFwcGVuZENoaWxkKGgpO2xldCBmPWw7aWYoInN0cmluZyI9PXR5cGVvZiBmKXtjb25zdCBRdD1mLnJlcGxhY2UoLzx0ZFxiW14+XSo/PihbXHNcU10qPyk8XC9ccyp0ZD4vZyxsbj0+e2NvbnN0IHZuPWxuLm1hdGNoKC88dGRc''@;'; put 'put ''YltePl0qPz4vZylbMF07cmV0dXJuYCR7dm59JHtsbi5zdWJzdHJpbmcodm4ubGVuZ3RoLGxuLmxhc3RJbmRleE9mKCI8IikpLnRyaW0oKS5yZXBsYWNlQWxsKC9cblxzKy9nLCIgIikucmVwbGFjZUFsbCgvPHAuKj8+L2csIlxuIikucmVwbGFjZSgiXG4iLCIiKS5yZXBsYWNlQWxsKC88XC8o''@;'; put 'put ''LiopPlxzKyQvZ20sIjwvJDE+IikucmVwbGFjZSgvKDwoPyFicikoW14+XSspPikvZ2ksIiIpLnJlcGxhY2VBbGwoL14mbmJzcDskL2dtLCIiKX08L3RkPmB9KTtoLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJiZWdpbiIsYCR7UXR9YCksZj1oLnF1ZXJ5U2VsZWN0b3IoInRhYmxlIil9aWYo''@;'; put 'put ''IWZ8fCFmdW5jdGlvbiBaWWUobCl7cmV0dXJuIlRBQkxFIj09PShsJiZsLm5vZGVOYW1lfHwiIil9KGYpKXJldHVybjtjb25zdCB2PWgucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lJD0iZW5lcmF0b3IiXScpLFM9bnVsbCE9PWYucXVlcnlTZWxlY3RvcigidGJvZHkgdGgiKSxWPWYucXVlcnlT''@;'; put 'put ''ZWxlY3RvcigidHIiKSxRPVY/QXJyYXkuZnJvbShWLmNlbGxzKS5yZWR1Y2UoKFF0LGxuKT0+UXQrbG4uY29sU3BhbiwwKS0oUz8xOjApOjAsZGU9Zi50Rm9vdCYmQXJyYXkuZnJvbShmLnRGb290LnJvd3MpfHxbXSxwZT1bXTtsZXQgQ2U9ITEsT2U9MCxZZT0wO2lmKGYudEhlYWQpe2NvbnN0''@;'; put 'put ''IFF0PUFycmF5LmZyb20oZi50SGVhZC5yb3dzKS5maWx0ZXIobG49Pntjb25zdCB2bj1udWxsIT09bG4ucXVlcnlTZWxlY3RvcigidGQiKTtyZXR1cm4gdm4mJnBlLnB1c2gobG4pLCF2bn0pO09lPVF0Lmxlbmd0aCxDZT1PZT4wLE9lPjE/YS5uZXN0ZWRIZWFkZXJzPUFycmF5LmZyb20oUXQp''@;'; put 'put ''LnJlZHVjZSgobG4sdm4pPT57Y29uc3Qgd249QXJyYXkuZnJvbSh2bi5jZWxscykucmVkdWNlKChucix2cixNaSk9PntpZihTJiYwPT09TWkpcmV0dXJuIG5yO2NvbnN0e2NvbFNwYW46UGksaW5uZXJIVE1MOnlyfT12cjtyZXR1cm4gbnIucHVzaChQaT4xP3tsYWJlbDp5cixjb2xzcGFuOlBp''@;'; put 'put ''fTp5ciksbnJ9LFtdKTtyZXR1cm4gbG4ucHVzaCh3biksbG59LFtdKTpDZSYmKGEuY29sSGVhZGVycz1BcnJheS5mcm9tKFF0WzBdLmNoaWxkcmVuKS5yZWR1Y2UoKGxuLHZuLHduKT0+KFMmJjA9PT13bnx8bG4ucHVzaCh2bi5pbm5lckhUTUwpLGxuKSxbXSkpfXBlLmxlbmd0aCYmKGEuZml4''@;'; put 'put ''ZWRSb3dzVG9wPXBlLmxlbmd0aCksZGUubGVuZ3RoJiYoYS5maXhlZFJvd3NCb3R0b209ZGUubGVuZ3RoKTtjb25zdCBldD1bLi4ucGUsLi4uQXJyYXkuZnJvbShmLnRCb2RpZXMpLnJlZHVjZSgoUXQsbG4pPT4oUXQucHVzaCguLi5BcnJheS5mcm9tKGxuLnJvd3MpKSxRdCksW10pLC4uLmRl''@;'; put 'put ''XTtZZT1ldC5sZW5ndGg7Y29uc3QgZHQ9bmV3IEFycmF5KFllKTtmb3IobGV0IFF0PTA7UXQ8WWU7UXQrKylkdFtRdF09bmV3IEFycmF5KFEpO2NvbnN0IGh0PVtdLE10PVtdO2ZvcihsZXQgUXQ9MDtRdDxZZTtRdCsrKXtjb25zdCB2bj1BcnJheS5mcm9tKGV0W1F0XS5jZWxscyksd249dm4u''@;'; put 'put ''bGVuZ3RoO2ZvcihsZXQgbnI9MDtucjx3bjtucisrKXtjb25zdCB2cj12bltucl0se25vZGVOYW1lOk1pLGlubmVySFRNTDpQaSxyb3dTcGFuOnlyLGNvbFNwYW46X2l9PXZyLFVyPWR0W1F0XS5maW5kSW5kZXgoSW49PnZvaWQgMD09PUluKTtpZigiVEQiPT09TWkpe2lmKHlyPjF8fF9pPjEp''@;'; put 'put ''e2ZvcihsZXQgVHI9UXQ7VHI8UXQreXI7VHIrKylpZihUcjxZZSlmb3IobGV0IEVyPVVyO0VyPFVyK19pO0VyKyspZHRbVHJdW0VyXT1udWxsO2NvbnN0IE9yPXZyLmdldEF0dHJpYnV0ZSgic3R5bGUiKTtPciYmT3IuaW5jbHVkZXMoIm1zby1pZ25vcmU6Y29sc3BhbiIpfHxodC5wdXNoKHtj''@;'; put 'put ''b2w6VXIscm93OlF0LHJvd3NwYW46eXIsY29sc3BhbjpfaX0pfWxldCBJbj0iIjtJbj12JiYvZXhjZWwvZ2kudGVzdCh2LmNvbnRlbnQpP1BpLnJlcGxhY2UoL1tcclxuXVtceDIwXXswLDJ9L2csIiAiKS5yZXBsYWNlKC88YnIoXHMqfFwvKT5bXHJcbl0/W1x4MjBdezAsM30vZ2ltLCJcclxu''@;'; put 'put ''Iik6UGkucmVwbGFjZSgvPGJyKFxzKnxcLyk+W1xyXG5dPy9naW0sIlxyXG4iKSxkdFtRdF1bVXJdPUluLnJlcGxhY2UoVVllLE9yPT5xMWVbT3JdKX1lbHNlIE10LnB1c2goUGkpfX1yZXR1cm4gaHQubGVuZ3RoJiYoYS5tZXJnZUNlbGxzPWh0KSxNdC5sZW5ndGgmJihhLnJvd0hlYWRlcnM9''@;'; put 'put ''TXQpLGR0Lmxlbmd0aCYmKGEuZGF0YT1kdCksYX1mdW5jdGlvbiBMMChsKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W107Y29uc3QgYT10eXBlb2YgbDtpZigibnVtYmVyIj09PWEpcmV0dXJuIWlzTmFOKGwpJiZpc0Zpbml0''@;'; put 'put ''ZShsKTtpZigic3RyaW5nIj09PWEpe2lmKDA9PT1sLmxlbmd0aClyZXR1cm4hMTtpZigxPT09bC5sZW5ndGgpcmV0dXJuL1xkLy50ZXN0KGwpO2NvbnN0IGQ9QXJyYXkuZnJvbShuZXcgU2V0KFsiLiIsLi4uY10pKS5tYXAoaD0+YFxcJHtofWApLmpvaW4oInwiKTtyZXR1cm4gbmV3IFJlZ0V4''@;'; put 'put ''cChgXlsrLV0/KCgoJHtkfSk/XFxkKygoJHtkfSlcXGQrKT8oZVsrLV0/XFxkKyk/KXwoMHhbYS1mXFxkXSspKSRgLCJpIikudGVzdChsLnRyaW0oKSl9cmV0dXJuIm9iamVjdCI9PT1hJiYhKCFsfHwibnVtYmVyIiE9dHlwZW9mIGwudmFsdWVPZigpfHxsIGluc3RhbmNlb2YgRGF0ZSl9ZnVu''@;'; put 'put ''Y3Rpb24gWDFlKGwpe3JldHVybiBMMChsLFsiLCJdKX1mdW5jdGlvbiBnbyhsLGMsYSl7bGV0IGQ9LTE7Zm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhPWMsYz1sKTpkPWwtMTsrK2Q8PWMmJiExIT09YShkKTspO31mdW5jdGlvbiBiTChsLGMsYSl7bGV0IGQ9bCsxO2ZvcigiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgYyYmKGE9YyxjPTApOy0tZD49YyYmITEhPT1hKGQpOyk7fWZ1bmN0aW9uIFZXKGwsYyl7cmV0dXJuIGM9cGFyc2VJbnQoYy50b1N0cmluZygpLnJlcGxhY2UoIiUiLCIiKSwxMCksYz1pc05hTihjKT8wOmMscGFyc2VJbnQobCpjLzEwMCwxMCl9ZnVuY3Rpb24gSGEobCxjLGEp''@;'; put 'put ''e3JldHVybiBNYXRoLm1pbihsLGMpPT09bD9jOk1hdGgubWF4KGwsYSk9PT1sP2E6bH1jb25zdCBKMWU9bmV3IE1hcChbWyJhc2MiLFstMSwxXV0sWyJkZXNjIixbMSwtMV1dXSksV1llPWw9PmBUaGUgcHJpb3JpdHkgJyR7bH0nIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuYCxHWWU9''@;'; put 'put ''bD0+YFRoZSBwcmlvcml0eSAnJHtsfScgaXMgbm90IGEgbnVtYmVyLmAscVllPWw9PmBUaGUgaWQgJyR7bH0nIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSBtYXAuYDtmdW5jdGlvbiB5TCgpe2xldHtlcnJvcklkRXhpc3RzOmx9PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1l''@;'; put 'put ''bnRzWzBdP2FyZ3VtZW50c1swXTp7fTtjb25zdCBjPW5ldyBNYXA7ZnVuY3Rpb24gUygpe3JldHVyblsuLi5jXX1mdW5jdGlvbiBWKFEpe3JldHVybiBjLmhhcyhRKX1yZXR1cm4gbD1obChsKT9sOnFZZSx7YWRkSXRlbTpmdW5jdGlvbiBhKFEsZGUpe2lmKFYoUSkpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KGwoUSkpO2Muc2V0KFEsZGUpfSxjbGVhcjpmdW5jdGlvbiBoKCl7Yy5jbGVhcigpfSxnZXRJZDpmdW5jdGlvbiBmKFEpe2NvbnN0W2RlXT1TKCkuZmluZChwZT0+e2xldFtDZSxPZV09cGU7cmV0dXJuIFE9PT1PZSYmQ2V9KXx8W251bGxdO3JldHVybiBkZX0sZ2V0SXRlbTpmdW5jdGlvbiB2''@;'; put 'put ''KFEpe3JldHVybiBjLmdldChRKX0sZ2V0SXRlbXM6UyxoYXNJdGVtOlYscmVtb3ZlSXRlbTpmdW5jdGlvbiBkKFEpe3JldHVybiBjLmRlbGV0ZShRKX19fWNvbnN0IEtZZT1sPT5gJyR7bH0nIHZhbHVlIGlzIGFscmVhZHkgZGVjbGFyZWQgaW4gYSB1bmlxdWUgc2V0LmAsalc9bD0+YFRoZXJl''@;'; put 'put ''IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCAiJHtsfSIgcGx1Z2luLmAsUTFlPWZ1bmN0aW9uICRZZSgpe2xldHtlcnJvclByaW9yaXR5RXhpc3RzOmwsZXJyb3JQcmlvcml0eU5hTjpjfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Y29u''@;'; put 'put ''c3QgYT1uZXcgTWFwO3JldHVybiBsPWhsKGwpP2w6V1llLGM9aGwoYyk/YzpHWWUse2FkZEl0ZW06ZnVuY3Rpb24gZChmLHYpe2lmKCFMMChmKSl0aHJvdyBuZXcgRXJyb3IoYyhmKSk7aWYoYS5oYXMoZikpdGhyb3cgbmV3IEVycm9yKGwoZikpO2Euc2V0KGYsdil9LGdldEl0ZW1zOmZ1bmN0''@;'; put 'put ''aW9uIGgoKXtsZXQgZj1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ImFzYyI7Y29uc3RbdixTXT1KMWUuZ2V0KGYpfHxKMWUuZ2V0KCJhc2MiKTtyZXR1cm5bLi4uYV0uc29ydCgoVixRKT0+VlswXTxRWzBdP3Y6UykubWFwKFY9PlZbMV0p''@;'; put 'put ''fX19KHtlcnJvclByaW9yaXR5RXhpc3RzOmw9PmBUaGVyZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgcGx1Z2luIG9uIHByaW9yaXR5ICIke2x9Ii5gLGVycm9yUHJpb3JpdHlOYU46bD0+YFRoZSBwcmlvcml0eSAiJHtsfSIgaXMgbm90IGEgbnVtYmVyLmB9KSxlZGU9ZnVuY3Rpb24gWFllKCl7''@;'; put 'put ''bGV0e2Vycm9ySXRlbUV4aXN0czpsfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307Y29uc3QgYz1uZXcgU2V0O3JldHVybiBsPWhsKGwpP2w6S1llLHthZGRJdGVtOmZ1bmN0aW9uIGEoZil7aWYoYy5oYXMoZikpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKGwoZikpO2MuYWRkKGYpfSxjbGVhcjpmdW5jdGlvbiBoKCl7Yy5jbGVhcigpfSxnZXRJdGVtczpmdW5jdGlvbiBkKCl7cmV0dXJuWy4uLmNdfX19KHtlcnJvckl0ZW1FeGlzdHM6ald9KSx6Vz15TCh7ZXJyb3JJZEV4aXN0czpqV30pO2Z1bmN0aW9uIFVXKCl7cmV0dXJuWy4uLlExZS5n''@;'; put 'put ''ZXRJdGVtcygpLC4uLmVkZS5nZXRJdGVtcygpXX1mdW5jdGlvbiBheChsKXtjb25zdCBjPUkwKGwpO3JldHVybiB6Vy5nZXRJdGVtKGMpfWZ1bmN0aW9uIHJhKGwsYyxhKXtbbCxjLGFdPWZ1bmN0aW9uIGVXZShsLGMsYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGwmJihsPShjPWwpLlBM''@;'; put 'put ''VUdJTl9LRVksYT1jLlBMVUdJTl9QUklPUklUWSksW2wsYyxhXX0obCxjLGEpLHZvaWQgMD09PWF4KGwpJiZmdW5jdGlvbiBRWWUobCxjLGEpe2NvbnN0IGQ9STAobCk7aWYoelcuaGFzSXRlbShkKSl0aHJvdyBuZXcgRXJyb3IoalcoZCkpO3ZvaWQgMD09PWE/ZWRlLmFkZEl0ZW0oZCk6UTFl''@;'; put 'put ''LmFkZEl0ZW0oYSxkKSx6Vy5hZGRJdGVtKGQsYyl9KGwsYyxhKX1jb25zdHtyZWdpc3Rlcjp0V2UsZ2V0SXRlbTpuV2UsaGFzSXRlbTp0ZGUsZ2V0TmFtZXM6cldlfT1hZigicmVuZGVyZXJzIik7ZnVuY3Rpb24gd0wobCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwpcmV0dXJuIGw7aWYoIXRk''@;'; put 'put ''ZShsKSl0aHJvdyBFcnJvcihgTm8gcmVnaXN0ZXJlZCByZW5kZXJlciBmb3VuZCB1bmRlciAiJHtsfSIgbmFtZWApO3JldHVybiBuV2UobCl9ZnVuY3Rpb24gUmQobCxjKXsic3RyaW5nIiE9dHlwZW9mIGwmJihsPShjPWwpLlJFTkRFUkVSX1RZUEUpLHRXZShsLGMpfWNvbnN0e3JlZ2lzdGVy''@;'; put 'put ''OmlXZSxnZXRJdGVtOm9XZSxoYXNJdGVtOm5kZSxnZXROYW1lczpzV2V9PWFmKCJ2YWxpZGF0b3JzIik7ZnVuY3Rpb24gWlcobCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwpcmV0dXJuIGw7aWYoIW5kZShsKSl0aHJvdyBFcnJvcihgTm8gcmVnaXN0ZXJlZCB2YWxpZGF0b3IgZm91bmQgdW5k''@;'; put 'put ''ZXIgIiR7bH0iIG5hbWVgKTtyZXR1cm4gb1dlKGwpfWZ1bmN0aW9uICQ4KGwsYyl7InN0cmluZyIhPXR5cGVvZiBsJiYobD0oYz1sKS5WQUxJREFUT1JfVFlQRSksaVdlKGwsYyl9ZnVuY3Rpb24gUjMobCxjLGEpeyhmdW5jdGlvbiBhV2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIGtvKGwsYyl7cmV0dXJuIGwuZ2V0KHJkZShsLGMpKX1mdW5jdGlvbiBWbShsLGMsYSl7cmV0dXJuIGwuc2V0KHJk''@;'; put 'put ''ZShsLGMpLGEpLGF9ZnVuY3Rpb24gcmRlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmpl''@;'; put 'put ''Y3QiKX12YXIgVWg9bmV3IFdlYWtNYXAsWVc9bmV3IFdlYWtNYXAsVXU9bmV3IFdlYWtNYXAsdWI9bmV3IFdlYWtNYXAsQ0w9bmV3IFdlYWtNYXAsbGY9bmV3IFdlYWtNYXAsV1c9bmV3IFdlYWtNYXAsbHg9bmV3IFdlYWtNYXAscTg9bmV3IFdlYWtNYXAsTDM9bmV3IFdlYWtNYXA7Y29uc3Qg''@;'; put 'put ''aWRlPWNsYXNzIGxXZXtjb25zdHJ1Y3RvcihjLGEsZCxoLGYsdil7bGV0IFM9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGw7UjModGhpcyxVaCx2b2lkIDApLFIzKHRoaXMsWVcsdm9pZCAwKSxSMyh0aGlzLFV1LHZvaWQgMCksUjMo''@;'; put 'put ''dGhpcyx1Yix2b2lkIDApLFIzKHRoaXMsQ0wsdm9pZCAwKSxSMyh0aGlzLGxmLHZvaWQgMCksUjModGhpcyxXVyx2b2lkIDApLFIzKHRoaXMsbHgsdm9pZCAwKSxSMyh0aGlzLHE4LFtudWxsLG51bGxdKSxSMyh0aGlzLEwzLFtudWxsLG51bGxdKSxWbShVaCx0aGlzLGQpLFZtKFlXLHRoaXMs''@;'; put 'put ''YSksVm0oVXUsdGhpcyxmKSxWbSh1Yix0aGlzLHYpLFZtKENMLHRoaXMsUyksVm0obGYsdGhpcyxoKSxWbShXVyx0aGlzLGMpLHRoaXMucmVnaXN0ZXJFdmVudHMoKX1yZWdpc3RlckV2ZW50cygpe2tvKGxmLHRoaXMpLmFkZEV2ZW50TGlzdGVuZXIoa28oVXUsdGhpcykuaG9sZGVyLCJjb250''@;'; put 'put ''ZXh0bWVudSIsZD0+dGhpcy5vbkNvbnRleHRNZW51KGQpKSxrbyhsZix0aGlzKS5hZGRFdmVudExpc3RlbmVyKGtvKFV1LHRoaXMpLlRBQkxFLCJtb3VzZW92ZXIiLGQ9PnRoaXMub25Nb3VzZU92ZXIoZCkpLGtvKGxmLHRoaXMpLmFkZEV2ZW50TGlzdGVuZXIoa28oVXUsdGhpcykuVEFCTEUs''@;'; put 'put ''Im1vdXNlb3V0IixkPT50aGlzLm9uTW91c2VPdXQoZCkpO2NvbnN0IGM9KCk9PntrbyhsZix0aGlzKS5hZGRFdmVudExpc3RlbmVyKGtvKFV1LHRoaXMpLmhvbGRlciwidG91Y2hzdGFydCIsZD0+dGhpcy5vblRvdWNoU3RhcnQoZCkpLGtvKGxmLHRoaXMpLmFkZEV2ZW50TGlzdGVuZXIoa28o''@;'; put 'put ''VXUsdGhpcykuaG9sZGVyLCJ0b3VjaGVuZCIsZD0+dGhpcy5vblRvdWNoRW5kKGQpKSx0aGlzLm1vbWVudHVtU2Nyb2xsaW5nfHwodGhpcy5tb21lbnR1bVNjcm9sbGluZz17fSksa28obGYsdGhpcykuYWRkRXZlbnRMaXN0ZW5lcihrbyhVdSx0aGlzKS5ob2xkZXIsInNjcm9sbCIsKCk9Pntj''@;'; put 'put ''bGVhclRpbWVvdXQodGhpcy5tb21lbnR1bVNjcm9sbGluZy5fdGltZW91dCksdGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nfHxrbyhVaCx0aGlzKS5nZXRTZXR0aW5nKCJvbkJlZm9yZVRvdWNoU2Nyb2xsIiksdGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSEwLHRoaXMubW9t''@;'; put 'put ''ZW50dW1TY3JvbGxpbmcuX3RpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMudG91Y2hBcHBsaWVkfHwodGhpcy5tb21lbnR1bVNjcm9sbGluZy5vbmdvaW5nPSExLGtvKFVoLHRoaXMpLmdldFNldHRpbmcoIm9uQWZ0ZXJNb21lbnR1bVNjcm9sbCIpKX0sMjAwKX0pfTtUNCgpP2MoKTooQ1co''@;'; put 'put ''KSYmYygpLCgoKT0+e2tvKGxmLHRoaXMpLmFkZEV2ZW50TGlzdGVuZXIoa28oVXUsdGhpcykuaG9sZGVyLCJtb3VzZXVwIixkPT50aGlzLm9uTW91c2VVcChkKSksa28obGYsdGhpcykuYWRkRXZlbnRMaXN0ZW5lcihrbyhVdSx0aGlzKS5ob2xkZXIsIm1vdXNlZG93biIsZD0+dGhpcy5vbk1v''@;'; put 'put ''dXNlRG93bihkKSl9KSgpKX1zZWxlY3RlZENlbGxXYXNUb3VjaGVkKGMpe2NvbnN0IGQ9dGhpcy5wYXJlbnRDZWxsKGMpLmNvb3JkcztpZihrbyhseCx0aGlzKSYmZCl7Y29uc3RbaCxmXT1bZC5yb3csa28obHgsdGhpcykuZnJvbS5yb3ddLFt2LFNdPVtkLmNvbCxrbyhseCx0aGlzKS5mcm9t''@;'; put 'put ''LmNvbF07cmV0dXJuIGg9PT1mJiZ2PT09U31yZXR1cm4hMX1wYXJlbnRDZWxsKGMpe2NvbnN0IGE9e30saD1YTShjLFsiVEQiLCJUSCJdLGtvKFV1LHRoaXMpLlRBQkxFKTtyZXR1cm4gaD8oYS5jb29yZHM9a28oVXUsdGhpcykuZ2V0Q29vcmRzKGgpLGEuVEQ9aCk6WW8oYywid3RCb3JkZXIi''@;'; put 'put ''KSYmWW8oYywiY3VycmVudCIpPyhhLmNvb3Jkcz1rbyh1Yix0aGlzKS5nZXRGb2N1c1NlbGVjdGlvbigpLmNlbGxSYW5nZS5oaWdobGlnaHQsYS5URD1rbyhVdSx0aGlzKS5nZXRDZWxsKGEuY29vcmRzKSk6WW8oYywid3RCb3JkZXIiKSYmWW8oYywiYXJlYSIpJiZrbyh1Yix0aGlzKS5nZXRB''@;'; put 'put ''cmVhU2VsZWN0aW9uKCkuY2VsbFJhbmdlJiYoYS5jb29yZHM9a28odWIsdGhpcykuZ2V0QXJlYVNlbGVjdGlvbigpLmNlbGxSYW5nZS50byxhLlREPWtvKFV1LHRoaXMpLmdldENlbGwoYS5jb29yZHMpKSxhfW9uTW91c2VEb3duKGMpe2NvbnN0IGE9a28oWVcsdGhpcykucm9vdERvY3VtZW50''@;'; put 'put ''LmFjdGl2ZUVsZW1lbnQsZD13VyhwMWUsYy50YXJnZXQpLGg9Yy50YXJnZXQ7aWYoIVsiVEQiLCJUSCJdLmluY2x1ZGVzKGEubm9kZU5hbWUpJiYoaD09PWF8fGQoMCk9PT1hfHxkKDEpPT09YSkpcmV0dXJuO2NvbnN0IGY9dGhpcy5wYXJlbnRDZWxsKGgpO1lvKGgsImNvcm5lciIpP2tvKFVo''@;'; put 'put ''LHRoaXMpLmdldFNldHRpbmcoIm9uQ2VsbENvcm5lck1vdXNlRG93biIsYyxoKTpmLlREJiZrbyhVaCx0aGlzKS5oYXMoIm9uQ2VsbE1vdXNlRG93biIpJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VEb3duIixjLGYuY29vcmRzLGYuVEQpLCgwPT09Yy5idXR0b258fHRoaXMudG91''@;'; put 'put ''Y2hBcHBsaWVkKSYmZi5URCYmKGtvKEwzLHRoaXMpWzBdPWYuVEQsY2xlYXJUaW1lb3V0KGtvKHE4LHRoaXMpWzBdKSxrbyhxOCx0aGlzKVswXT1zZXRUaW1lb3V0KCgpPT57a28oTDMsdGhpcylbMF09bnVsbH0sMWUzKSl9b25Db250ZXh0TWVudShjKXtpZihrbyhVaCx0aGlzKS5oYXMoIm9u''@;'; put 'put ''Q2VsbENvbnRleHRNZW51Iikpe2NvbnN0IGE9dGhpcy5wYXJlbnRDZWxsKGMudGFyZ2V0KTthLlREJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsQ29udGV4dE1lbnUiLGMsYS5jb29yZHMsYS5URCl9fW9uTW91c2VPdmVyKGMpe2lmKCFrbyhVaCx0aGlzKS5oYXMoIm9uQ2VsbE1vdXNlT3Zl''@;'; put 'put ''ciIpKXJldHVybjtjb25zdCBhPWtvKFV1LHRoaXMpLlRBQkxFLGQ9WE0oYy50YXJnZXQsWyJURCIsIlRIIl0sYSksaD1rbyhDTCx0aGlzKXx8dGhpcztkJiZkIT09aC5sYXN0TW91c2VPdmVyJiZSbShkLGEpJiYoaC5sYXN0TW91c2VPdmVyPWQsdGhpcy5jYWxsTGlzdGVuZXIoIm9uQ2VsbE1v''@;'; put 'put ''dXNlT3ZlciIsYyxrbyhVdSx0aGlzKS5nZXRDb29yZHMoZCksZCkpfW9uTW91c2VPdXQoYyl7aWYoIWtvKFVoLHRoaXMpLmhhcygib25DZWxsTW91c2VPdXQiKSlyZXR1cm47Y29uc3QgYT1rbyhVdSx0aGlzKS5UQUJMRSxkPVhNKGMudGFyZ2V0LFsiVEQiLCJUSCJdLGEpLGg9WE0oYy5yZWxh''@;'; put 'put ''dGVkVGFyZ2V0LFsiVEQiLCJUSCJdLGEpLGY9a28oQ0wsdGhpcyl8fHRoaXM7ZCYmZCE9PWgmJlJtKGQsYSkmJih0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VPdXQiLGMsa28oVXUsdGhpcykuZ2V0Q29vcmRzKGQpLGQpLG51bGw9PT1oJiYoZi5sYXN0TW91c2VPdmVyPW51bGwpKX1v''@;'; put 'put ''bk1vdXNlVXAoYyl7Y29uc3QgYT10aGlzLnBhcmVudENlbGwoYy50YXJnZXQpO2EuVEQmJmtvKFVoLHRoaXMpLmhhcygib25DZWxsTW91c2VVcCIpJiZ0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsTW91c2VVcCIsYyxhLmNvb3JkcyxhLlREKSwoMD09PWMuYnV0dG9ufHx0aGlzLnRvdWNoQXBw''@;'; put 'put ''bGllZCkmJihhLlREPT09a28oTDMsdGhpcylbMF0mJmEuVEQ9PT1rbyhMMyx0aGlzKVsxXT8oWW8oYy50YXJnZXQsImNvcm5lciIpP3RoaXMuY2FsbExpc3RlbmVyKCJvbkNlbGxDb3JuZXJEYmxDbGljayIsYyxhLmNvb3JkcyxhLlREKTp0aGlzLmNhbGxMaXN0ZW5lcigib25DZWxsRGJsQ2xp''@;'; put 'put ''Y2siLGMsYS5jb29yZHMsYS5URCksa28oTDMsdGhpcylbMF09bnVsbCxrbyhMMyx0aGlzKVsxXT1udWxsKTphLlREPT09a28oTDMsdGhpcylbMF0mJihrbyhMMyx0aGlzKVsxXT1hLlRELGNsZWFyVGltZW91dChrbyhxOCx0aGlzKVsxXSksa28ocTgsdGhpcylbMV09c2V0VGltZW91dCgoKT0+''@;'; put 'put ''e2tvKEwzLHRoaXMpWzFdPW51bGx9LDUwMCkpKX1vblRvdWNoU3RhcnQoYyl7Vm0obHgsdGhpcyxrbyh1Yix0aGlzKS5nZXRGb2N1c1NlbGVjdGlvbigpLmNlbGxSYW5nZSksdGhpcy50b3VjaEFwcGxpZWQ9ITAsdGhpcy5vbk1vdXNlRG93bihjKX1vblRvdWNoRW5kKGMpe3ZhciBhO2NvbnN0''@;'; put 'put ''IGQ9Yy50YXJnZXQsaD1udWxsPT09KGE9dGhpcy5wYXJlbnRDZWxsKGQpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5jb29yZHMsZj1zbyhoKSYmaC5yb3c+PTAmJmguY29sPj0wO2lmKGMuY2FuY2VsYWJsZSYmZiYma28oVWgsdGhpcykuZ2V0U2V0dGluZygiaXNEYXRhVmlld0luc3RhbmNlIikp''@;'; put 'put ''e2NvbnN0IFM9WyJBIiwiQlVUVE9OIiwiSU5QVVQiXTt4VygpJiYoUDFlKCl8fEYxZSgpKSYmdGhpcy5zZWxlY3RlZENlbGxXYXNUb3VjaGVkKGQpJiYhUy5pbmNsdWRlcyhkLnRhZ05hbWUpP2MucHJldmVudERlZmF1bHQoKTp0aGlzLnNlbGVjdGVkQ2VsbFdhc1RvdWNoZWQoZCl8fGMucHJl''@;'; put 'put ''dmVudERlZmF1bHQoKX10aGlzLm9uTW91c2VVcChjKSx0aGlzLnRvdWNoQXBwbGllZD0hMX1jYWxsTGlzdGVuZXIoYyxhLGQsaCl7Y29uc3QgZj1rbyhVaCx0aGlzKS5nZXRTZXR0aW5nUHVyZShjKTtmJiZmKGEsZCxoLGtvKFdXLHRoaXMpLmNhbGwodGhpcykpfWRlc3Ryb3koKXtjbGVhclRp''@;'; put 'put ''bWVvdXQoa28ocTgsdGhpcylbMF0pLGNsZWFyVGltZW91dChrbyhxOCx0aGlzKVsxXSksa28obGYsdGhpcykuZGVzdHJveSgpfX07ZnVuY3Rpb24gR1cobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGNXZShsKXt2YXIgYz1mdW5jdGlvbiB1V2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8''@;'; put 'put ''fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEg''@;'; put 'put ''cHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29u''@;'; put 'put ''ZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgaFdlPWNsYXNzIGRXZXtjb25zdHJ1Y3RvcihjLGEsZCl7R1codGhpcywib2Zmc2V0Iix2b2lkIDApLEdXKHRoaXMsInRvdGFsIix2b2lkIDApLEdXKHRoaXMsImNvdW50VEgiLHZvaWQgMCksdGhpcy5vZmZzZXQ9Yyx0''@;'; put 'put ''aGlzLnRvdGFsPWEsdGhpcy5jb3VudFRIPWR9b2Zmc2V0dGVkKGMpe3JldHVybiBjK3RoaXMub2Zmc2V0fXVuT2Zmc2V0dGVkKGMpe3JldHVybiBjLXRoaXMub2Zmc2V0fXJlbmRlcmVkVG9Tb3VyY2UoYyl7cmV0dXJuIHRoaXMub2Zmc2V0dGVkKGMpfXNvdXJjZVRvUmVuZGVyZWQoYyl7cmV0''@;'; put 'put ''dXJuIHRoaXMudW5PZmZzZXR0ZWQoYyl9b2Zmc2V0dGVkVEgoYyl7cmV0dXJuIGMtdGhpcy5jb3VudFRIfXVuT2Zmc2V0dGVkVEgoYyl7cmV0dXJuIGMrdGhpcy5jb3VudFRIfXZpc2libGVSb3dIZWFkZWRDb2x1bW5Ub1NvdXJjZUNvbHVtbihjKXtyZXR1cm4gdGhpcy5yZW5kZXJlZFRvU291''@;'; put 'put ''cmNlKHRoaXMub2Zmc2V0dGVkVEgoYykpfXNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbihjKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZFRIKHRoaXMuc291cmNlVG9SZW5kZXJlZChjKSl9fTtmdW5jdGlvbiAkVyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gZldlKGwpe3Zh''@;'; put 'put ''ciBjPWZ1bmN0aW9uIHBXZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBtV2U9Y2xhc3MgZ1dle2NvbnN0cnVjdG9yKGMsYSxkKXskVyh0aGlzLCJvZmZzZXQiLHZvaWQgMCksJFcodGhpcywidG90YWwiLHZvaWQg''@;'; put 'put ''MCksJFcodGhpcywiY291bnRUSCIsdm9pZCAwKSx0aGlzLm9mZnNldD1jLHRoaXMudG90YWw9YSx0aGlzLmNvdW50VEg9ZH1vZmZzZXR0ZWQoYyl7cmV0dXJuIGMrdGhpcy5vZmZzZXR9dW5PZmZzZXR0ZWQoYyl7cmV0dXJuIGMtdGhpcy5vZmZzZXR9cmVuZGVyZWRUb1NvdXJjZShjKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5vZmZzZXR0ZWQoYyl9c291cmNlVG9SZW5kZXJlZChjKXtyZXR1cm4gdGhpcy51bk9mZnNldHRlZChjKX1vZmZzZXR0ZWRUSChjKXtyZXR1cm4gYy10aGlzLmNvdW50VEh9dW5PZmZzZXR0ZWRUSChjKXtyZXR1cm4gYyt0aGlzLmNvdW50VEh9dmlzaWJsZUNvbEhlYWRlZFJvd1Rv''@;'; put 'put ''U291cmNlUm93KGMpe3JldHVybiB0aGlzLnJlbmRlcmVkVG9Tb3VyY2UodGhpcy5vZmZzZXR0ZWRUSChjKSl9c291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGMpe3JldHVybiB0aGlzLnVuT2Zmc2V0dGVkVEgodGhpcy5zb3VyY2VUb1JlbmRlcmVkKGMpKX19O2Z1bmN0aW9uIHhMKGws''@;'; put 'put ''YyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBfV2UobCl7dmFyIGM9ZnVuY3Rpb24gYldlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigi''@;'; put 'put ''b2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlw''@;'; put 'put ''ZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIG9kZXtjb25zdHJ1Y3Rvcigpe3hMKHRoaXMsImN1cnJlbnRTaXplIiwwKSx4TCh0''@;'; put 'put ''aGlzLCJuZXh0U2l6ZSIsMCkseEwodGhpcywiY3VycmVudE9mZnNldCIsMCkseEwodGhpcywibmV4dE9mZnNldCIsMCl9c2V0U2l6ZShjKXt0aGlzLmN1cnJlbnRTaXplPXRoaXMubmV4dFNpemUsdGhpcy5uZXh0U2l6ZT1jfXNldE9mZnNldChjKXt0aGlzLmN1cnJlbnRPZmZzZXQ9dGhpcy5u''@;'; put 'put ''ZXh0T2Zmc2V0LHRoaXMubmV4dE9mZnNldD1jfX1mdW5jdGlvbiBxVyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24geVdlKGwpe3ZhciBjPWZ1bmN0aW9uIHdXZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZv''@;'; put 'put ''aWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6''@;'; put 'put ''TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBDV2V7''@;'; put 'put ''Y29uc3RydWN0b3IoKXtxVyh0aGlzLCJzaXplIixuZXcgb2RlKSxxVyh0aGlzLCJ3b3JraW5nU3BhY2UiLDApLHFXKHRoaXMsInNoYXJlZFNpemUiLG51bGwpfXNldFNpemUoYyl7dGhpcy5zaXplLnNldFNpemUoYyl9c2V0T2Zmc2V0KGMpe3RoaXMuc2l6ZS5zZXRPZmZzZXQoYyl9Z2V0Vmll''@;'; put 'put ''d1NpemUoKXtyZXR1cm4gdGhpcy5zaXplfWlzU2hhcmVkKCl7cmV0dXJuIHRoaXMuc2hhcmVkU2l6ZSBpbnN0YW5jZW9mIG9kZX1pc1BsYWNlT24oYyl7cmV0dXJuIHRoaXMud29ya2luZ1NwYWNlPT09Y31hcHBlbmQoYyl7dGhpcy53b3JraW5nU3BhY2U9MSxjLndvcmtpbmdTcGFjZT0yLHRo''@;'; put 'put ''aXMuc2hhcmVkU2l6ZT1jLmdldFZpZXdTaXplKCl9cHJlcGVuZChjKXt0aGlzLndvcmtpbmdTcGFjZT0yLGMud29ya2luZ1NwYWNlPTEsdGhpcy5zaGFyZWRTaXplPWMuZ2V0Vmlld1NpemUoKX19ZnVuY3Rpb24gZGIobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFNXZShsKXt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiBNV2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3Mgc2Rle2NvbnN0cnVjdG9yKGMsYSxkKXtkYih0aGlzLCJyb290Tm9kZSIsdm9pZCAwKSxkYih0aGlzLCJub2Rlc1Bvb2wiLHZvaWQgMCksZGIodGhpcywi''@;'; put 'put ''c2l6ZVNldCIsbmV3IENXZSksZGIodGhpcywiY2hpbGROb2RlVHlwZSIsdm9pZCAwKSxkYih0aGlzLCJ2aXN1YWxJbmRleCIsMCksZGIodGhpcywiY29sbGVjdGVkTm9kZXMiLFtdKSx0aGlzLnJvb3ROb2RlPWMsdGhpcy5ub2Rlc1Bvb2w9YSx0aGlzLmNoaWxkTm9kZVR5cGU9ZC50b1VwcGVy''@;'; put 'put ''Q2FzZSgpfXNldFNpemUoYyl7cmV0dXJuIHRoaXMuc2l6ZVNldC5zZXRTaXplKGMpLHRoaXN9c2V0T2Zmc2V0KGMpe3JldHVybiB0aGlzLnNpemVTZXQuc2V0T2Zmc2V0KGMpLHRoaXN9aXNTaGFyZWRWaWV3U2V0KCl7cmV0dXJuIHRoaXMuc2l6ZVNldC5pc1NoYXJlZCgpfWdldE5vZGUoYyl7''@;'; put 'put ''cmV0dXJuIGM8dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg/dGhpcy5jb2xsZWN0ZWROb2Rlc1tjXTpudWxsfWdldEN1cnJlbnROb2RlKCl7Y29uc3QgYz10aGlzLmNvbGxlY3RlZE5vZGVzLmxlbmd0aDtyZXR1cm4gYz4wP3RoaXMuY29sbGVjdGVkTm9kZXNbYy0xXTpudWxsfWdldFJlbmRl''@;'; put 'put ''cmVkQ2hpbGRDb3VudCgpe2NvbnN0e3Jvb3ROb2RlOmMsc2l6ZVNldDphfT10aGlzO2xldCBkPTA7aWYodGhpcy5pc1NoYXJlZFZpZXdTZXQoKSl7bGV0IGg9Yy5maXJzdEVsZW1lbnRDaGlsZDtmb3IoO2g7KXtpZihoLnRhZ05hbWU9PT10aGlzLmNoaWxkTm9kZVR5cGUpZCs9MTtlbHNlIGlm''@;'; put 'put ''KGEuaXNQbGFjZU9uKDEpKWJyZWFrO2g9aC5uZXh0RWxlbWVudFNpYmxpbmd9fWVsc2UgZD1jLmNoaWxkRWxlbWVudENvdW50O3JldHVybiBkfXN0YXJ0KCl7dGhpcy5jb2xsZWN0ZWROb2Rlcy5sZW5ndGg9MCx0aGlzLnZpc3VhbEluZGV4PTA7Y29uc3R7cm9vdE5vZGU6YyxzaXplU2V0OmF9''@;'; put 'put ''PXRoaXMsZD10aGlzLmlzU2hhcmVkVmlld1NldCgpLHtuZXh0U2l6ZTpofT1hLmdldFZpZXdTaXplKCk7bGV0IGY9dGhpcy5nZXRSZW5kZXJlZENoaWxkQ291bnQoKTtmb3IoO2Y8aDspe2NvbnN0IFM9dGhpcy5ub2Rlc1Bvb2woKTshZHx8ZCYmYS5pc1BsYWNlT24oMik/Yy5hcHBlbmRDaGls''@;'; put 'put ''ZChTKTpjLmluc2VydEJlZm9yZShTLGMuZmlyc3RDaGlsZCksZis9MX1jb25zdCB2PWQmJmEuaXNQbGFjZU9uKDEpO2Zvcig7Zj5oOyljLnJlbW92ZUNoaWxkKHY/Yy5maXJzdENoaWxkOmMubGFzdENoaWxkKSxmLT0xfXJlbmRlcigpe2NvbnN0e3Jvb3ROb2RlOmMsc2l6ZVNldDphfT10aGlz''@;'; put 'put ''O2xldCBkPXRoaXMudmlzdWFsSW5kZXg7dGhpcy5pc1NoYXJlZFZpZXdTZXQoKSYmYS5pc1BsYWNlT24oMikmJihkKz1hLnNoYXJlZFNpemUubmV4dFNpemUpO2xldCBoPWMuY2hpbGROb2Rlc1tkXTtpZihoLnRhZ05hbWUhPT10aGlzLmNoaWxkTm9kZVR5cGUpe2NvbnN0IGY9dGhpcy5ub2Rl''@;'; put 'put ''c1Bvb2woKTtjLnJlcGxhY2VDaGlsZChmLGgpLGg9Zn10aGlzLmNvbGxlY3RlZE5vZGVzLnB1c2goaCksdGhpcy52aXN1YWxJbmRleCs9MX1lbmQoKXt9fWNsYXNzIGFkZSBleHRlbmRzIHNkZXtwcmVwZW5kVmlldyhjKXtyZXR1cm4gdGhpcy5zaXplU2V0LnByZXBlbmQoYy5zaXplU2V0KSxj''@;'; put 'put ''LnNpemVTZXQuYXBwZW5kKHRoaXMuc2l6ZVNldCksdGhpc31hcHBlbmRWaWV3KGMpe3JldHVybiB0aGlzLnNpemVTZXQuYXBwZW5kKGMuc2l6ZVNldCksYy5zaXplU2V0LnByZXBlbmQodGhpcy5zaXplU2V0KSx0aGlzfX1jbGFzcyBrV2V7Y29uc3RydWN0b3IoYyl7KGZ1bmN0aW9uIHhXZShs''@;'; put 'put ''LGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gRVdlKGwpe3ZhciBjPWZ1bmN0aW9uIFRXZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYo''@;'; put 'put ''Im9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5''@;'; put 'put ''cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0pKHRoaXMsIm5vZGVUeXBlIix2b2lkIDApLHRoaXMubm9kZVR5cGU9Yy50b1VwcGVyQ2Fz''@;'; put 'put ''ZSgpfXNldFJvb3REb2N1bWVudChjKXt0aGlzLnJvb3REb2N1bWVudD1jfW9idGFpbigpe3JldHVybiB0aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMubm9kZVR5cGUpfX1mdW5jdGlvbiBjeChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gQVdlKGwpe3ZhciBjPWZ1bmN0aW9u''@;'; put 'put ''IERXZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyB1eHtjb25zdHJ1Y3RvcihjLGEpe2N4KHRoaXMsIm5vZGVzUG9vbCIsbnVsbCksY3godGhpcywibm9kZVR5cGUiLHZvaWQgMCksY3godGhpcywicm9vdE5vZGUi''@;'; put 'put ''LHZvaWQgMCksY3godGhpcywidGFibGUiLG51bGwpLGN4KHRoaXMsInJlbmRlcmVkTm9kZXMiLDApLHRoaXMubm9kZXNQb29sPSJzdHJpbmciPT10eXBlb2YgYz9uZXcga1dlKGMpOm51bGwsdGhpcy5ub2RlVHlwZT1jLHRoaXMucm9vdE5vZGU9YX1zZXRUYWJsZShjKXt0aGlzLm5vZGVzUG9v''@;'; put 'put ''bCYmdGhpcy5ub2Rlc1Bvb2wuc2V0Um9vdERvY3VtZW50KGMucm9vdERvY3VtZW50KSx0aGlzLnRhYmxlPWN9YWRqdXN0KCl7fXJlbmRlcigpe319ZnVuY3Rpb24gbGRlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBJV2UobCl7dmFyIGM9ZnVuY3Rpb24gUldlKGwsYyl7aWYoIm9iamVjdCIh''@;'; put 'put ''PXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0''@;'; put 'put ''IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJh''@;'; put 'put ''YmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIExXZSBleHRlbmRzIHV4e2NvbnN0cnVjdG9yKCl7c3VwZXIoIlRIIiksbGRlKHRoaXMsIm9yZGVyVmlld3MiLG5ldyBXZWFrTWFwKSxsZGUodGhpcywic291cmNlUm93SW5kZXgiLDApfW9idGFpbk9y''@;'; put 'put ''ZGVyVmlldyhjKXtsZXQgYTtyZXR1cm4gdGhpcy5vcmRlclZpZXdzLmhhcyhjKT9hPXRoaXMub3JkZXJWaWV3cy5nZXQoYyk6KGE9bmV3IGFkZShjLGQ9PnRoaXMubm9kZXNQb29sLm9idGFpbih0aGlzLnNvdXJjZVJvd0luZGV4LGQpLHRoaXMubm9kZVR5cGUpLHRoaXMub3JkZXJWaWV3cy5z''@;'; put 'put ''ZXQoYyxhKSksYX1yZW5kZXIoKXtjb25zdHtyb3dzVG9SZW5kZXI6Yyxyb3dIZWFkZXJGdW5jdGlvbnM6YSxyb3dIZWFkZXJzQ291bnQ6ZCxyb3dzOmgsY2VsbHM6Zn09dGhpcy50YWJsZTtmb3IobGV0IHY9MDt2PGM7disrKXtjb25zdCBTPXRoaXMudGFibGUucmVuZGVyZWRSb3dUb1NvdXJj''@;'; put 'put ''ZSh2KSxWPWguZ2V0UmVuZGVyZWROb2RlKHYpO3RoaXMuc291cmNlUm93SW5kZXg9Uztjb25zdCBRPXRoaXMub2J0YWluT3JkZXJWaWV3KFYpLGRlPWYub2J0YWluT3JkZXJWaWV3KFYpO1EuYXBwZW5kVmlldyhkZSkuc2V0U2l6ZShkKS5zZXRPZmZzZXQodGhpcy50YWJsZS5yZW5kZXJlZENv''@;'; put 'put ''bHVtblRvU291cmNlKDApKS5zdGFydCgpO2ZvcihsZXQgcGU9MDtwZTxkO3BlKyspe1EucmVuZGVyKCk7Y29uc3QgQ2U9US5nZXRDdXJyZW50Tm9kZSgpO0NlLmNsYXNzTmFtZT0iIixDZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksVTgoQ2UsW25ldyBSZWdFeHAoImFyaWEtKC4qKSIpLG5l''@;'; put 'put ''dyBSZWdFeHAoInJvbGUiKV0pLHRoaXMudGFibGUuaXNBcmlhRW5hYmxlZCgpJiZWbyhDZSxbWyJyb2xlIiwicm93aGVhZGVyIl0sWyJzY29wZSIsInJvdyJdLGNXKHBlKzEpLG5iKC0xKV0pLGFbcGVdKFMsQ2UscGUpfVEuZW5kKCl9fX1jbGFzcyBPV2UgZXh0ZW5kcyB1eHtjb25zdHJ1Y3Rv''@;'; put 'put ''cihjKXtzdXBlcihudWxsLGMpfWFkanVzdCgpe2NvbnN0e2NvbHVtbkhlYWRlcnNDb3VudDpjLHJvd0hlYWRlcnNDb3VudDphfT10aGlzLnRhYmxlO2xldCBkPXRoaXMucm9vdE5vZGUuZmlyc3RDaGlsZDtpZihjKXtjb25zdHtjb2x1bW5zVG9SZW5kZXI6aH09dGhpcy50YWJsZSxmPWgrYTtm''@;'; put 'put ''b3IobGV0IFM9MCxWPWM7UzxWO1MrKyl7Zm9yKGQ9dGhpcy5yb290Tm9kZS5jaGlsZE5vZGVzW1NdLGR8fChkPXRoaXMudGFibGUucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksdGhpcy5yb290Tm9kZS5hcHBlbmRDaGlsZChkKSksdGhpcy5yZW5kZXJlZE5vZGVzPWQuY2hpbGRO''@;'; put 'put ''b2Rlcy5sZW5ndGg7dGhpcy5yZW5kZXJlZE5vZGVzPGY7KWQuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSksdGhpcy5yZW5kZXJlZE5vZGVzKz0xO2Zvcig7dGhpcy5yZW5kZXJlZE5vZGVzPmY7KWQucmVtb3ZlQ2hpbGQoZC5sYXN0Q2hp''@;'; put 'put ''bGQpLHRoaXMucmVuZGVyZWROb2Rlcy09MX1jb25zdCB2PXRoaXMucm9vdE5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7aWYodj5jKWZvcihsZXQgUz1jO1M8djtTKyspdGhpcy5yb290Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnJvb3ROb2RlLmxhc3RDaGlsZCl9ZWxzZSBkJiZzZihkKX1yZW5kZXIo''@;'; put 'put ''KXtjb25zdHtjb2x1bW5IZWFkZXJzQ291bnQ6Y309dGhpcy50YWJsZTt0aGlzLnRhYmxlLmlzQXJpYUVuYWJsZWQoKSYmVm8odGhpcy5yb290Tm9kZSxbWyJyb2xlIiwicm93Z3JvdXAiXV0pO2ZvcihsZXQgYT0wO2E8YzthKz0xKXtjb25zdHtjb2x1bW5IZWFkZXJGdW5jdGlvbnM6ZCxjb2x1''@;'; put 'put ''bW5zVG9SZW5kZXI6aCxyb3dIZWFkZXJzQ291bnQ6Zn09dGhpcy50YWJsZSx2PXRoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1thXTt0aGlzLnRhYmxlLmlzQXJpYUVuYWJsZWQoKSYmVm8odixbWyJyb2xlIiwicm93Il0sZDFlKGErMSldKTtmb3IobGV0IFM9LTEqZjtTPGg7Uys9MSl7Y29uc3Qg''@;'; put 'put ''Vj10aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2UoUyksUT12LmNoaWxkTm9kZXNbUytmXTtRLmNsYXNzTmFtZT0iIixRLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKSxVOChRLFtuZXcgUmVnRXhwKCJhcmlhLSguKikiKSxuZXcgUmVnRXhwKCJyb2xlIildKSx0aGlzLnRhYmxlLmlz''@;'; put 'put ''QXJpYUVuYWJsZWQoKSYmVm8oUSxbY1coUysxK3RoaXMudGFibGUucm93SGVhZGVyc0NvdW50KSxuYigtMSksWyJyb2xlIiwiY29sdW1uaGVhZGVyIl0sLi4uUz49MD9bWyJzY29wZSIsImNvbCJdXTpbWyJyb2xlIiwicm93Il1dXSksZFthXShWLFEsYSl9fX19bGV0IGNkZT0hMTtjbGFzcyBQ''@;'; put 'put ''V2UgZXh0ZW5kcyB1eHtjb25zdHJ1Y3RvcihjKXtzdXBlcihudWxsLGMpfWFkanVzdCgpe2NvbnN0e2NvbHVtbnNUb1JlbmRlcjpjLHJvd0hlYWRlcnNDb3VudDphfT10aGlzLnRhYmxlLGQ9YythO2Zvcig7dGhpcy5yZW5kZXJlZE5vZGVzPGQ7KXRoaXMucm9vdE5vZGUuYXBwZW5kQ2hpbGQo''@;'; put 'put ''dGhpcy50YWJsZS5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sIikpLHRoaXMucmVuZGVyZWROb2Rlcys9MTtmb3IoO3RoaXMucmVuZGVyZWROb2Rlcz5kOyl0aGlzLnJvb3ROb2RlLnJlbW92ZUNoaWxkKHRoaXMucm9vdE5vZGUubGFzdENoaWxkKSx0aGlzLnJlbmRlcmVkTm9kZXMt''@;'; put 'put ''PTF9cmVuZGVyKCl7dGhpcy5hZGp1c3QoKTtjb25zdHtjb2x1bW5zVG9SZW5kZXI6Yyxyb3dIZWFkZXJzQ291bnQ6YX09dGhpcy50YWJsZTshY2RlJiZjPjFlMyYmKGNkZT0hMCxpbChOYWBQZXJmb3JtYW5jZSB0aXA6IEhhbmRzb250YWJsZSByZW5kZXJlZCBtb3JlIHRoYW4gMTAwMCB2aXNp''@;'; put 'put ''YmxlIGNvbHVtbnMuXHgyMAogICAgICAgIENvbnNpZGVyIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgcmVuZGVyZWQgY29sdW1ucyBieSBzcGVjaWZ5aW5nIHRoZSB0YWJsZSB3aWR0aCBhbmQvb3JceDIwCiAgICAgICAgdHVybmluZyBvZmYgdGhlICJyZW5kZXJBbGxDb2x1bW5zIiBvcHRpb24u''@;'; put 'put ''YCkpO2ZvcihsZXQgaD0wO2g8YTtoKyspe2NvbnN0IGY9dGhpcy50YWJsZS5yZW5kZXJlZENvbHVtblRvU291cmNlKGgpLHY9dGhpcy50YWJsZS5jb2x1bW5VdGlscy5nZXRIZWFkZXJXaWR0aChmKTt0aGlzLnJvb3ROb2RlLmNoaWxkTm9kZXNbaF0uc3R5bGUud2lkdGg9YCR7dn1weGB9Zm9y''@;'; put 'put ''KGxldCBoPTA7aDxjO2grKyl7Y29uc3QgZj10aGlzLnRhYmxlLnJlbmRlcmVkQ29sdW1uVG9Tb3VyY2UoaCksdj10aGlzLnRhYmxlLmNvbHVtblV0aWxzLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGYpO3RoaXMucm9vdE5vZGUuY2hpbGROb2Rlc1toK2FdLnN0eWxlLndpZHRoPWAke3Z9cHhg''@;'; put 'put ''fWNvbnN0IGQ9dGhpcy5yb290Tm9kZS5maXJzdENoaWxkO2QmJm1pKGQsInJvd0hlYWRlciIpfX1sZXQgdWRlPSExO2NsYXNzIFZXZSBleHRlbmRzIHV4e2NvbnN0cnVjdG9yKGMpe3N1cGVyKCJUUiIsYyksZnVuY3Rpb24gRldlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBOV2UobCl7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gSFdlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJvcmRlclZpZXciLHZvaWQgMCksdGhpcy5vcmRlclZpZXc9bmV3IHNkZShjLGE9PnRoaXMubm9kZXNQb29sLm9idGFpbihhKSx0aGlzLm5v''@;'; put 'put ''ZGVUeXBlKX1nZXRSZW5kZXJlZE5vZGUoYyl7cmV0dXJuIHRoaXMub3JkZXJWaWV3LmdldE5vZGUoYyl9cmVuZGVyKCl7Y29uc3R7cm93c1RvUmVuZGVyOmN9PXRoaXMudGFibGU7IXVkZSYmYz4xZTMmJih1ZGU9ITAsaWwoTmFgUGVyZm9ybWFuY2UgdGlwOiBIYW5kc29udGFibGUgcmVuZGVy''@;'; put 'put ''ZWQgbW9yZSB0aGFuIDEwMDAgdmlzaWJsZSByb3dzLlx4MjAKICAgICAgICBDb25zaWRlciBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIHJlbmRlcmVkIHJvd3MgYnkgc3BlY2lmeWluZyB0aGUgdGFibGUgaGVpZ2h0IGFuZC9vclx4MjAKICAgICAgICB0dXJuaW5nIG9mZiB0aGUgInJlbmRlckFs''@;'; put 'put ''bFJvd3MiIG9wdGlvbi5gKSksdGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJlZvKHRoaXMucm9vdE5vZGUsW1sicm9sZSIsInJvd2dyb3VwIl1dKSx0aGlzLm9yZGVyVmlldy5zZXRTaXplKGMpLnNldE9mZnNldCh0aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoMCkpLnN0YXJ0KCk7''@;'; put 'put ''Zm9yKGxldCBoPTA7aDxjO2grKyl7dGhpcy5vcmRlclZpZXcucmVuZGVyKCk7Y29uc3QgZj10aGlzLm9yZGVyVmlldy5nZXRDdXJyZW50Tm9kZSgpLHY9dGhpcy50YWJsZS5yZW5kZXJlZFJvd1RvU291cmNlKGgpO3ZhciBhLGQ7dGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJlZvKGYsW1si''@;'; put 'put ''cm9sZSIsInJvdyJdLGQxZSh2KyhudWxsIT09KGE9bnVsbD09PShkPXRoaXMudGFibGUucm93VXRpbHMpfHx2b2lkIDA9PT1kfHxudWxsPT09KGQ9ZC5kYXRhQWNjZXNzT2JqZWN0KXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5jb2x1bW5IZWFkZXJzLmxlbmd0aCkmJnZvaWQgMCE9PWE/YTowKSsx''@;'; put 'put ''KV0pfXRoaXMub3JkZXJWaWV3LmVuZCgpfX1mdW5jdGlvbiBkZGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEJXZShsKXt2YXIgYz1mdW5jdGlvbiBqV2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lk''@;'; put 'put ''IDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51''@;'; put 'put ''bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgeldlIGV4''@;'; put 'put ''dGVuZHMgdXh7Y29uc3RydWN0b3IoKXtzdXBlcigiVEQiKSxkZGUodGhpcywib3JkZXJWaWV3cyIsbmV3IFdlYWtNYXApLGRkZSh0aGlzLCJzb3VyY2VSb3dJbmRleCIsMCl9b2J0YWluT3JkZXJWaWV3KGMpe2xldCBhO3JldHVybiB0aGlzLm9yZGVyVmlld3MuaGFzKGMpP2E9dGhpcy5vcmRl''@;'; put 'put ''clZpZXdzLmdldChjKTooYT1uZXcgYWRlKGMsZD0+dGhpcy5ub2Rlc1Bvb2wub2J0YWluKHRoaXMuc291cmNlUm93SW5kZXgsZCksdGhpcy5ub2RlVHlwZSksdGhpcy5vcmRlclZpZXdzLnNldChjLGEpKSxhfXJlbmRlcigpe2NvbnN0e3Jvd3NUb1JlbmRlcjpjLGNvbHVtbnNUb1JlbmRlcjph''@;'; put 'put ''LHJvd3M6ZCxyb3dIZWFkZXJzOmh9PXRoaXMudGFibGU7Zm9yKGxldCBTPTA7UzxjO1MrKyl7Y29uc3QgVj10aGlzLnRhYmxlLnJlbmRlcmVkUm93VG9Tb3VyY2UoUyksUT1kLmdldFJlbmRlcmVkTm9kZShTKTt0aGlzLnNvdXJjZVJvd0luZGV4PVY7Y29uc3QgZGU9dGhpcy5vYnRhaW5PcmRl''@;'; put 'put ''clZpZXcoUSkscGU9aC5vYnRhaW5PcmRlclZpZXcoUSk7ZGUucHJlcGVuZFZpZXcocGUpLnNldFNpemUoYSkuc2V0T2Zmc2V0KHRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZSgwKSkuc3RhcnQoKTtmb3IobGV0IENlPTA7Q2U8YTtDZSsrKXtkZS5yZW5kZXIoKTtjb25zdCBPZT1k''@;'; put 'put ''ZS5nZXRDdXJyZW50Tm9kZSgpLFllPXRoaXMudGFibGUucmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShDZSk7dmFyIGYsdjtZbyhPZSwiaGlkZSIpfHwoT2UuY2xhc3NOYW1lPSIiKSxPZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksT2UucmVtb3ZlQXR0cmlidXRlKCJkaXIiKSxVOChPZSxbbmV3''@;'; put 'put ''IFJlZ0V4cCgiYXJpYS0oLiopIiksbmV3IFJlZ0V4cCgicm9sZSIpXSksdGhpcy50YWJsZS5jZWxsUmVuZGVyZXIoVixZZSxPZSksdGhpcy50YWJsZS5pc0FyaWFFbmFibGVkKCkmJlZvKE9lLFsuLi5PZS5oYXNBdHRyaWJ1dGUoInJvbGUiKT9bXTpbWyJyb2xlIiwiZ3JpZGNlbGwiXV0sbmIo''@;'; put 'put ''LTEpLGNXKFllKyhudWxsIT09KGY9bnVsbD09PSh2PXRoaXMudGFibGUucm93VXRpbHMpfHx2b2lkIDA9PT12fHxudWxsPT09KHY9di5kYXRhQWNjZXNzT2JqZWN0KXx8dm9pZCAwPT09dj92b2lkIDA6di5yb3dIZWFkZXJzLmxlbmd0aCkmJnZvaWQgMCE9PWY/ZjowKSsxKV0pfWRlLmVuZCgp''@;'; put 'put ''fX19ZnVuY3Rpb24gWnUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFVXZShsKXt2YXIgYz1mdW5jdGlvbiBaV2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxj''@;'; put 'put ''fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3Jl''@;'; put 'put ''dHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgWVdle2NvbnN0cnVjdG9yKGMpe2xldHtjZWxsUmVu''@;'; put 'put ''ZGVyZXI6YX09YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O1p1KHRoaXMsInJvb3ROb2RlIix2b2lkIDApLFp1KHRoaXMsInJvb3REb2N1bWVudCIsdm9pZCAwKSxadSh0aGlzLCJyb3dIZWFkZXJzIixudWxsKSxadSh0aGlzLCJjb2x1''@;'; put 'put ''bW5IZWFkZXJzIixudWxsKSxadSh0aGlzLCJjb2xHcm91cCIsbnVsbCksWnUodGhpcywicm93cyIsbnVsbCksWnUodGhpcywiY2VsbHMiLG51bGwpLFp1KHRoaXMsInJvd0ZpbHRlciIsbnVsbCksWnUodGhpcywiY29sdW1uRmlsdGVyIixudWxsKSxadSh0aGlzLCJyb3dVdGlscyIsbnVsbCks''@;'; put 'put ''WnUodGhpcywiY29sdW1uVXRpbHMiLG51bGwpLFp1KHRoaXMsInJvd3NUb1JlbmRlciIsMCksWnUodGhpcywiY29sdW1uc1RvUmVuZGVyIiwwKSxadSh0aGlzLCJyb3dIZWFkZXJGdW5jdGlvbnMiLFtdKSxadSh0aGlzLCJyb3dIZWFkZXJzQ291bnQiLDApLFp1KHRoaXMsImNvbHVtbkhlYWRl''@;'; put 'put ''ckZ1bmN0aW9ucyIsW10pLFp1KHRoaXMsImNvbHVtbkhlYWRlcnNDb3VudCIsMCksWnUodGhpcywiY2VsbFJlbmRlcmVyIix2b2lkIDApLHRoaXMucm9vdE5vZGU9Yyx0aGlzLnJvb3REb2N1bWVudD10aGlzLnJvb3ROb2RlLm93bmVyRG9jdW1lbnQsdGhpcy5jZWxsUmVuZGVyZXI9YX1zZXRB''@;'; put 'put ''eGlzVXRpbHMoYyxhKXt0aGlzLnJvd1V0aWxzPWMsdGhpcy5jb2x1bW5VdGlscz1hfXNldFZpZXdwb3J0U2l6ZShjLGEpe3RoaXMucm93c1RvUmVuZGVyPWMsdGhpcy5jb2x1bW5zVG9SZW5kZXI9YX1zZXRGaWx0ZXJzKGMsYSl7dGhpcy5yb3dGaWx0ZXI9Yyx0aGlzLmNvbHVtbkZpbHRlcj1h''@;'; put 'put ''fXNldEhlYWRlckNvbnRlbnRSZW5kZXJlcnMoYyxhKXt0aGlzLnJvd0hlYWRlckZ1bmN0aW9ucz1jLHRoaXMucm93SGVhZGVyc0NvdW50PWMubGVuZ3RoLHRoaXMuY29sdW1uSGVhZGVyRnVuY3Rpb25zPWEsdGhpcy5jb2x1bW5IZWFkZXJzQ291bnQ9YS5sZW5ndGh9c2V0UmVuZGVyZXJzKCl7''@;'; put 'put ''bGV0e3Jvd0hlYWRlcnM6Yyxjb2x1bW5IZWFkZXJzOmEsY29sR3JvdXA6ZCxyb3dzOmgsY2VsbHM6Zn09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2Muc2V0VGFibGUodGhpcyksYS5zZXRUYWJsZSh0aGlzKSxkLnNldFRhYmxlKHRo''@;'; put 'put ''aXMpLGguc2V0VGFibGUodGhpcyksZi5zZXRUYWJsZSh0aGlzKSx0aGlzLnJvd0hlYWRlcnM9Yyx0aGlzLmNvbHVtbkhlYWRlcnM9YSx0aGlzLmNvbEdyb3VwPWQsdGhpcy5yb3dzPWgsdGhpcy5jZWxscz1mfXJlbmRlcmVkUm93VG9Tb3VyY2UoYyl7cmV0dXJuIHRoaXMucm93RmlsdGVyLnJl''@;'; put 'put ''bmRlcmVkVG9Tb3VyY2UoYyl9cmVuZGVyZWRDb2x1bW5Ub1NvdXJjZShjKXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShjKX1pc0FyaWFFbmFibGVkKCl7cmV0dXJuIHRoaXMucm93VXRpbHMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJhcmlhVGFncyIpfXJlbmRl''@;'; put 'put ''cigpe3RoaXMuY29sR3JvdXAuYWRqdXN0KCksdGhpcy5jb2x1bW5IZWFkZXJzLmFkanVzdCgpLHRoaXMucm93cy5hZGp1c3QoKSx0aGlzLnJvd0hlYWRlcnMuYWRqdXN0KCksdGhpcy5jb2x1bW5IZWFkZXJzLnJlbmRlcigpLHRoaXMucm93cy5yZW5kZXIoKSx0aGlzLnJvd0hlYWRlcnMucmVu''@;'; put 'put ''ZGVyKCksdGhpcy5jZWxscy5yZW5kZXIoKSx0aGlzLmNvbHVtblV0aWxzLmNhbGN1bGF0ZVdpZHRocygpLHRoaXMuY29sR3JvdXAucmVuZGVyKCk7Y29uc3R7cm93c1RvUmVuZGVyOmMscm93czphfT10aGlzO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGg9YS5nZXRSZW5kZXJlZE5vZGUo''@;'; put 'put ''ZCk7aWYoaC5maXJzdENoaWxkKXtjb25zdCBmPXRoaXMucmVuZGVyZWRSb3dUb1NvdXJjZShkKSx2PXRoaXMucm93VXRpbHMuZ2V0SGVpZ2h0KGYpO2guZmlyc3RDaGlsZC5zdHlsZS5oZWlnaHQ9dj92LTErInB4IjoiIn19fX1jbGFzcyBXV2V7Y29uc3RydWN0b3IoKXtsZXR7VEFCTEU6YyxU''@;'; put 'put ''SEVBRDphLENPTEdST1VQOmQsVEJPRFk6aCxyb3dVdGlsczpmLGNvbHVtblV0aWxzOnYsY2VsbFJlbmRlcmVyOlN9PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTt0aGlzLnJlbmRlcmVyPW5ldyBZV2UoYyx7Y2VsbFJlbmRlcmVyOlN9''@;'; put 'put ''KSx0aGlzLnJlbmRlcmVyLnNldFJlbmRlcmVycyh7cm93SGVhZGVyczpuZXcgTFdlLGNvbHVtbkhlYWRlcnM6bmV3IE9XZShhKSxjb2xHcm91cDpuZXcgUFdlKGQpLHJvd3M6bmV3IFZXZShoKSxjZWxsczpuZXcgeldlfSksdGhpcy5yZW5kZXJlci5zZXRBeGlzVXRpbHMoZix2KX1zZXRGaWx0''@;'; put 'put ''ZXJzKGMsYSl7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0RmlsdGVycyhjLGEpLHRoaXN9c2V0Vmlld3BvcnRTaXplKGMsYSl7cmV0dXJuIHRoaXMucmVuZGVyZXIuc2V0Vmlld3BvcnRTaXplKGMsYSksdGhpc31zZXRIZWFkZXJDb250ZW50UmVuZGVyZXJzKGMsYSl7cmV0dXJuIHRoaXMucmVu''@;'; put 'put ''ZGVyZXIuc2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhjLGEpLHRoaXN9YWRqdXN0KCl7dGhpcy5yZW5kZXJlci5hZGp1c3QoKX1yZW5kZXIoKXt0aGlzLnJlbmRlcmVyLnJlbmRlcigpfX1mdW5jdGlvbiBkeChsLGMsYSl7KGZ1bmN0aW9uIEdXZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5l''@;'; put 'put ''dyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gRUwobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uICRXZShsKXt2YXIgYz1mdW5jdGlvbiBxV2UobCxjKXtp''@;'; put 'put ''Zigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJp''@;'; put 'put ''bWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1''@;'; put 'put ''ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gTzAobCxjKXtyZXR1cm4gbC5nZXQoaGRlKGwsYykpfWZ1bmN0aW9uIGh4KGwsYyxhKXtyZXR1cm4gbC5zZXQoaGRlKGwsYyksYSksYX1mdW5jdGlvbiBoZGUobCxjLGEpe2lm''@;'; put 'put ''KCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciBUTD1uZXcgV2Vha01hcCxoYj1uZXcgV2Vh''@;'; put 'put ''a01hcCxmeD1uZXcgV2Vha01hcCxrTD1uZXcgV2Vha01hcCxLOD1uZXcgV2Vha01hcDtjbGFzcyBLV3tzdGF0aWMgZ2V0IERFRkFVTFRfV0lEVEgoKXtyZXR1cm4gNTB9Y29uc3RydWN0b3IoYyl7bGV0e3RvdGFsQ29sdW1uczphLHN0cmV0Y2hNb2RlOmQsc3RyZXRjaGluZ0NvbHVtbldpZHRo''@;'; put 'put ''Rm46aCxjb2x1bW5XaWR0aEZuOmZ9PWM7RUwodGhpcywic3RyZXRjaEFsbFJhdGlvIiwwKSxFTCh0aGlzLCJzdHJldGNoTGFzdFdpZHRoIiwwKSxFTCh0aGlzLCJzdHJldGNoQWxsQ29sdW1uc1dpZHRoIixbXSksZHgodGhpcyxUTCwwKSxFTCh0aGlzLCJuZWVkVmVyaWZ5TGFzdENvbHVtbldp''@;'; put 'put ''ZHRoIiwhMCksZHgodGhpcyxoYiwoKT0+MCksZHgodGhpcyxmeCx2PT52KSxkeCh0aGlzLGtMLHY9PnYpLGR4KHRoaXMsSzgsKCk9PiJub25lIiksaHgoaGIsdGhpcyxhKSxoeChLOCx0aGlzLGQpLGh4KGZ4LHRoaXMsaD8/TzAoZngsdGhpcykpLGh4KGtMLHRoaXMsZj8/TzAoa0wsdGhpcykp''@;'; put 'put ''fXJlZnJlc2hTdHJldGNoaW5nKGMpe2lmKCJub25lIj09PU8wKEs4LHRoaXMpLmNhbGwodGhpcykpcmV0dXJuO3RoaXMuc3RyZXRjaEFsbFJhdGlvPTAsdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoPVtdLHRoaXMubmVlZFZlcmlmeUxhc3RDb2x1bW5XaWR0aD0hMCx0aGlzLnN0cmV0Y2hM''@;'; put 'put ''YXN0V2lkdGg9MCxoeChUTCx0aGlzLGMpO2xldCBhPTA7Zm9yKGxldCBoPTA7aDxPMChoYix0aGlzKS5jYWxsKHRoaXMpO2grKyl7Y29uc3QgZj10aGlzLl9nZXRDb2x1bW5XaWR0aChoKSx2PU8wKGZ4LHRoaXMpLmNhbGwodGhpcyx2b2lkIDAsaCk7Im51bWJlciI9PXR5cGVvZiB2P2MtPXY6''@;'; put 'put ''YSs9Zn1jb25zdCBkPWMtYTtpZigiYWxsIj09PU8wKEs4LHRoaXMpLmNhbGwodGhpcykmJmQ+MCl0aGlzLnN0cmV0Y2hBbGxSYXRpbz1jL2EsdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoPVtdLHRoaXMubmVlZFZlcmlmeUxhc3RDb2x1bW5XaWR0aD0hMDtlbHNlIGlmKCJsYXN0Ij09PU8w''@;'; put 'put ''KEs4LHRoaXMpLmNhbGwodGhpcykmJmMhPT0xLzApe2NvbnN0IGg9dGhpcy5fZ2V0Q29sdW1uV2lkdGgoTzAoaGIsdGhpcykuY2FsbCh0aGlzKS0xKSxmPWQraDt0aGlzLnN0cmV0Y2hMYXN0V2lkdGg9Zj49MD9mOmh9fWdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGMsYSl7bGV0IGQ9bnVsbDty''@;'; put 'put ''ZXR1cm4iYWxsIj09PU8wKEs4LHRoaXMpLmNhbGwodGhpcykmJjAhPT10aGlzLnN0cmV0Y2hBbGxSYXRpbz9kPXRoaXMuX2dldFN0cmV0Y2hlZEFsbENvbHVtbldpZHRoKGMsYSk6Imxhc3QiPT09TzAoSzgsdGhpcykuY2FsbCh0aGlzKSYmMCE9PXRoaXMuc3RyZXRjaExhc3RXaWR0aCYmKGQ9''@;'; put 'put ''dGhpcy5fZ2V0U3RyZXRjaGVkTGFzdENvbHVtbldpZHRoKGMpKSxkfV9nZXRTdHJldGNoZWRBbGxDb2x1bW5XaWR0aChjLGEpe2xldCBkPTA7aWYoIXRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtjXSl7Y29uc3QgaD1NYXRoLnJvdW5kKGEqdGhpcy5zdHJldGNoQWxsUmF0aW8pLGY9TzAo''@;'; put 'put ''ZngsdGhpcykuY2FsbCh0aGlzLGgsYyk7dGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoW2NdPXZvaWQgMD09PWY/aDppc05hTihmKT90aGlzLl9nZXRDb2x1bW5XaWR0aChjKTpmfWlmKHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGg9PT1PMChoYix0aGlzKS5jYWxsKHRoaXMp''@;'; put 'put ''JiZ0aGlzLm5lZWRWZXJpZnlMYXN0Q29sdW1uV2lkdGgpe3RoaXMubmVlZFZlcmlmeUxhc3RDb2x1bW5XaWR0aD0hMTtmb3IobGV0IGg9MDtoPHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aC5sZW5ndGg7aCsrKWQrPXRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtoXTtkIT09TzAoVEws''@;'; put 'put ''dGhpcykmJih0aGlzLnN0cmV0Y2hBbGxDb2x1bW5zV2lkdGhbdGhpcy5zdHJldGNoQWxsQ29sdW1uc1dpZHRoLmxlbmd0aC0xXSs9TzAoVEwsdGhpcyktZCl9cmV0dXJuIHRoaXMuc3RyZXRjaEFsbENvbHVtbnNXaWR0aFtjXX1fZ2V0U3RyZXRjaGVkTGFzdENvbHVtbldpZHRoKGMpe3JldHVy''@;'; put 'put ''biBjPT09TzAoaGIsdGhpcykuY2FsbCh0aGlzKS0xP3RoaXMuc3RyZXRjaExhc3RXaWR0aDpudWxsfV9nZXRDb2x1bW5XaWR0aChjKXtsZXQgYT1PMChrTCx0aGlzKS5jYWxsKHRoaXMsYyk7cmV0dXJuIGlzTmFOKGEpJiYoYT1LVy5ERUZBVUxUX1dJRFRIKSxhfX1mdW5jdGlvbiBBTChsLGMs''@;'; put 'put ''YSl7cmV0dXJuIGM9ZnVuY3Rpb24gS1dlKGwpe3ZhciBjPWZ1bmN0aW9uIFhXZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBKV2V7Y29uc3RydWN0b3IoYyxhKXtBTCh0aGlzLCJkYXRhQWNjZXNzT2JqZWN0Iix2''@;'; put 'put ''b2lkIDApLEFMKHRoaXMsInd0U2V0dGluZ3MiLHZvaWQgMCksQUwodGhpcywiaGVhZGVyV2lkdGhzIixuZXcgTWFwKSxBTCh0aGlzLCJzdHJldGNoaW5nIix2b2lkIDApLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1jLHRoaXMud3RTZXR0aW5ncz1hLHRoaXMuc3RyZXRjaGluZz1uZXcgS1coe3Rv''@;'; put 'put ''dGFsQ29sdW1uczooKT0+dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLHN0cmV0Y2hNb2RlOigpPT50aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic3RyZXRjaEgiKSxzdHJldGNoaW5nQ29sdW1uV2lkdGhGbjooZCxoKT0+dGhpcy53dFNldHRpbmdzLmdldFNl''@;'; put 'put ''dHRpbmcoIm9uQmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixkLGgpLGNvbHVtbldpZHRoRm46ZD0+dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0Q29sdW1uV2lkdGgoZCl9KX1nZXRXaWR0aChjKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbldp''@;'; put 'put ''ZHRoIixjKXx8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRDb2x1bW5XaWR0aCIpfWdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGMpe2xldCBhPXRoaXMuZ2V0V2lkdGgoYyk7Y29uc3QgZD10aGlzLnN0cmV0Y2hpbmcuZ2V0U3RyZXRjaGVkQ29sdW1uV2lkdGgoYyxhKTtyZXR1''@;'; put 'put ''cm4gZCYmKGE9ZCksYX1nZXRIZWFkZXJIZWlnaHQoYyl7bGV0IGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKTtjb25zdCBkPXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbY107cmV0dXJuIHZvaWQg''@;'; put 'put ''MCE9PWQmJihhPWE/TWF0aC5tYXgoYSxkKTpkKSxhfWdldEhlYWRlcldpZHRoKGMpe3JldHVybiB0aGlzLmhlYWRlcldpZHRocy5nZXQodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuY29sdW1uRmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoYykpfXJlZnJlc2hTdHJldGNoaW5nKCl7Y29u''@;'; put 'put ''c3R7d3RUYWJsZTpjLHd0Vmlld3BvcnQ6YSxjbG9uZVNvdXJjZTpkfT10aGlzLmRhdGFBY2Nlc3NPYmplY3QsaD1kP2Qud3RUYWJsZS5ob2xkZXI6Yy5ob2xkZXIsZj1oLm9mZnNldEhlaWdodDxoLnNjcm9sbEhlaWdodD9FdSgpOjA7dGhpcy5zdHJldGNoaW5nLnJlZnJlc2hTdHJldGNoaW5n''@;'; put 'put ''KGEuZ2V0Vmlld3BvcnRXaWR0aCgpLWYpfWNhbGN1bGF0ZVdpZHRocygpe2NvbnN0e3d0U2V0dGluZ3M6Y309dGhpcztsZXQgYT1jLmdldFNldHRpbmcoInJvd0hlYWRlcldpZHRoIik7aWYodGhpcy5yZWZyZXNoU3RyZXRjaGluZygpLGE9Yy5nZXRTZXR0aW5nKCJvbk1vZGlmeVJvd0hlYWRl''@;'; put 'put ''cldpZHRoIixhKSxudWxsIT1hKXtjb25zdCBkPWMuZ2V0U2V0dGluZygicm93SGVhZGVycyIpLmxlbmd0aCxoPWMuZ2V0U2V0dGluZygiZGVmYXVsdENvbHVtbldpZHRoIik7Zm9yKGxldCBmPTA7ZjxkO2YrKyl7bGV0IHY9QXJyYXkuaXNBcnJheShhKT9hW2ZdOmE7dj12Pz9oLHRoaXMuaGVh''@;'; put 'put ''ZGVyV2lkdGhzLnNldChmLHYpfX19fWZ1bmN0aW9uIGZkZShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gUVdlKGwpe3ZhciBjPWZ1bmN0aW9uIGVHZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9''@;'; put 'put ''PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVy''@;'; put 'put ''KShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyB0R2V7Y29uc3Ry''@;'; put 'put ''dWN0b3IoYyxhKXtmZGUodGhpcywiZGF0YUFjY2Vzc09iamVjdCIsdm9pZCAwKSxmZGUodGhpcywid3RTZXR0aW5ncyIsdm9pZCAwKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Yyx0aGlzLnd0U2V0dGluZ3M9YX1nZXRIZWlnaHQoYyl7bGV0IGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmco''@;'; put 'put ''InJvd0hlaWdodCIsYyk7Y29uc3QgZD10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRSb3dzW2NdO3JldHVybiB2b2lkIDAhPT1kJiYoYT12b2lkIDA9PT1hP2Q6TWF0aC5tYXgoYSxkKSksYX19Y29uc3QgWDg9InRvcCIsTzM9ImJvdHRvbSIsSjg9ImlubGluZV9z''@;'; put 'put ''dGFydCIsUTg9InRvcF9pbmxpbmVfc3RhcnRfY29ybmVyIixCbT0iYm90dG9tX2lubGluZV9zdGFydF9jb3JuZXIiLG5HZT1bWDgsTzMsSjgsUTgsQm1dLHJHZT1uZXcgTWFwKFtbWDgsYGh0X2Nsb25lXyR7WDh9YF0sW08zLGBodF9jbG9uZV8ke08zfWBdLFtKOCxgaHRfY2xvbmVfJHtKOH0g''@;'; put 'put ''aHRfY2xvbmVfbGVmdGBdLFtROCxgaHRfY2xvbmVfJHtROH0gaHRfY2xvbmVfdG9wX2xlZnRfY29ybmVyYF0sW0JtLGBodF9jbG9uZV8ke0JtfSBodF9jbG9uZV9ib3R0b21fbGVmdF9jb3JuZXJgXV0pO2Z1bmN0aW9uIFAzKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBpR2UobCl7dmFyIGM9''@;'; put 'put ''ZnVuY3Rpb24gb0dlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IGZiPWNsYXNzIHNHZXtjb25zdHJ1Y3RvcihjLGEsZCxoLGYpe1AzKHRoaXMsInd0U2V0dGluZ3MiLG51bGwpLFAzKHRoaXMsImRvbUJpbmRpbmdz''@;'; put 'put ''Iix2b2lkIDApLFAzKHRoaXMsIlRCT0RZIixudWxsKSxQMyh0aGlzLCJUSEVBRCIsbnVsbCksUDModGhpcywiQ09MR1JPVVAiLG51bGwpLFAzKHRoaXMsImhhc1RhYmxlSGVpZ2h0IiwhMCksUDModGhpcywiaGFzVGFibGVXaWR0aCIsITApLFAzKHRoaXMsImlzVGFibGVWaXNpYmxlIiwhMSks''@;'; put 'put ''UDModGhpcywidGFibGVPZmZzZXQiLDApLFAzKHRoaXMsImhvbGRlck9mZnNldCIsMCksdGhpcy5kb21CaW5kaW5ncz1kLHRoaXMuaXNNYXN0ZXI9Im1hc3RlciI9PT1mLHRoaXMubmFtZT1mLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1jLHRoaXMuZmFjYWRlR2V0dGVyPWEsdGhpcy53dFNldHRp''@;'; put 'put ''bmdzPWgsdGhpcy5pbnN0YW5jZT10aGlzLmRhdGFBY2Nlc3NPYmplY3Qud290LHRoaXMud290PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53b3QsdGhpcy5UQUJMRT1kLnJvb3RUYWJsZSxkVyh0aGlzLlRBQkxFKSx0aGlzLnNwcmVhZGVyPXRoaXMuY3JlYXRlU3ByZWFkZXIodGhpcy5UQUJMRSks''@;'; put 'put ''dGhpcy5oaWRlcj10aGlzLmNyZWF0ZUhpZGVyKHRoaXMuc3ByZWFkZXIpLHRoaXMuaG9sZGVyPXRoaXMuY3JlYXRlSG9sZGVyKHRoaXMuaGlkZXIpLHRoaXMud3RSb290RWxlbWVudD10aGlzLmhvbGRlci5wYXJlbnROb2RlLHRoaXMuaXNNYXN0ZXImJnRoaXMuYWxpZ25PdmVybGF5c1dpdGhU''@;'; put 'put ''cmltbWluZ0NvbnRhaW5lcigpLHRoaXMuZml4VGFibGVEb21UcmVlKCksdGhpcy5yb3dGaWx0ZXI9bnVsbCx0aGlzLmNvbHVtbkZpbHRlcj1udWxsLHRoaXMuY29ycmVjdEhlYWRlcldpZHRoPSExO2NvbnN0IHY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKCJyb3dIZWFkZXJXaWR0''@;'; put 'put ''aCIpO3RoaXMud3RTZXR0aW5ncy51cGRhdGUoInJvd0hlYWRlcldpZHRoIiwoKT0+dGhpcy5fbW9kaWZ5Um93SGVhZGVyV2lkdGgodikpLHRoaXMucm93VXRpbHM9bmV3IHRHZSh0aGlzLmRhdGFBY2Nlc3NPYmplY3QsdGhpcy53dFNldHRpbmdzKSx0aGlzLmNvbHVtblV0aWxzPW5ldyBKV2Uo''@;'; put 'put ''dGhpcy5kYXRhQWNjZXNzT2JqZWN0LHRoaXMud3RTZXR0aW5ncyksdGhpcy50YWJsZVJlbmRlcmVyPW5ldyBXV2Uoe1RBQkxFOnRoaXMuVEFCTEUsVEhFQUQ6dGhpcy5USEVBRCxDT0xHUk9VUDp0aGlzLkNPTEdST1VQLFRCT0RZOnRoaXMuVEJPRFkscm93VXRpbHM6dGhpcy5yb3dVdGlscyxj''@;'; put 'put ''b2x1bW5VdGlsczp0aGlzLmNvbHVtblV0aWxzLGNlbGxSZW5kZXJlcjp0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZ1B1cmUoImNlbGxSZW5kZXJlciIpfSl9aXMoYyl7cmV0dXJuIHRoaXMubmFtZT09PWN9Zml4VGFibGVEb21UcmVlKCl7Y29uc3QgYz10aGlzLmRvbUJpbmRpbmdzLnJvb3RE''@;'; put 'put ''b2N1bWVudDt0aGlzLlRCT0RZPXRoaXMuVEFCTEUucXVlcnlTZWxlY3RvcigidGJvZHkiKSx0aGlzLlRCT0RZfHwodGhpcy5UQk9EWT1jLmNyZWF0ZUVsZW1lbnQoInRib2R5IiksdGhpcy5UQUJMRS5hcHBlbmRDaGlsZCh0aGlzLlRCT0RZKSksdGhpcy5USEVBRD10aGlzLlRBQkxFLnF1ZXJ5''@;'; put 'put ''U2VsZWN0b3IoInRoZWFkIiksdGhpcy5USEVBRHx8KHRoaXMuVEhFQUQ9Yy5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpLHRoaXMuVEFCTEUuaW5zZXJ0QmVmb3JlKHRoaXMuVEhFQUQsdGhpcy5UQk9EWSkpLHRoaXMuQ09MR1JPVVA9dGhpcy5UQUJMRS5xdWVyeVNlbGVjdG9yKCJjb2xncm91cCIp''@;'; put 'put ''LHRoaXMuQ09MR1JPVVB8fCh0aGlzLkNPTEdST1VQPWMuY3JlYXRlRWxlbWVudCgiY29sZ3JvdXAiKSx0aGlzLlRBQkxFLmluc2VydEJlZm9yZSh0aGlzLkNPTEdST1VQLHRoaXMuVEhFQUQpKX1jcmVhdGVTcHJlYWRlcihjKXtjb25zdCBhPWMucGFyZW50Tm9kZTtsZXQgZDtyZXR1cm4oIWF8''@;'; put 'put ''fGEubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERXx8IVlvKGEsInd0SG9sZGVyIikpJiYoZD10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLmNsYXNzTmFtZT0id3RTcHJlYWRlciIsYSYmYS5pbnNlcnRCZWZvcmUoZCxjKSxkLmFwcGVuZENo''@;'; put 'put ''aWxkKGMpKSxkLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImFyaWFUYWdzIikmJlZvKGQsW0EzKCldKSxkfWNyZWF0ZUhpZGVyKGMpe2NvbnN0IGE9Yy5wYXJlbnROb2RlO2xldCBkO3JldHVybighYXx8YS5ub2RlVHlwZSE9PU5vZGUuRUxF''@;'; put 'put ''TUVOVF9OT0RFfHwhWW8oYSwid3RIb2xkZXIiKSkmJihkPXRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuY2xhc3NOYW1lPSJ3dEhpZGVyIixhJiZhLmluc2VydEJlZm9yZShkLGMpLGQuYXBwZW5kQ2hpbGQoYykpLHRoaXMud3RTZXR0aW5ncy5n''@;'; put 'put ''ZXRTZXR0aW5nKCJhcmlhVGFncyIpJiZWbyhkLFtBMygpXSksZH1jcmVhdGVIb2xkZXIoYyl7Y29uc3QgYT1jLnBhcmVudE5vZGU7bGV0IGQ7cmV0dXJuKCFhfHxhLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCFZbyhhLCJ3dEhvbGRlciIpKSYmKGQ9dGhpcy5kb21CaW5kaW5ncy5y''@;'; put 'put ''b290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGQuY2xhc3NOYW1lPSJ3dEhvbGRlciIsYSYmYS5pbnNlcnRCZWZvcmUoZCxjKSx0aGlzLmlzTWFzdGVyJiYoZC5wYXJlbnROb2RlLmNsYXNzTmFtZSs9Imh0X21hc3RlciBoYW5kc29u''@;'; put 'put ''dGFibGUiLGQucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmdQdXJlKCJydGxNb2RlIik/InJ0bCI6Imx0ciIpLHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJhcmlhVGFncyIpJiZWbyhkLnBhcmVudE5vZGUsW0EzKCldKSksZC5hcHBl''@;'; put 'put ''bmRDaGlsZChjKSksdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImFyaWFUYWdzIikmJlZvKGQsW0EzKCldKSxkfWRyYXcoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0e3d0U2V0dGluZ3M6YX09dGhpcyx7d3RP''@;'; put 'put ''dmVybGF5czpkLHd0Vmlld3BvcnQ6aH09dGhpcy5kYXRhQWNjZXNzT2JqZWN0LGY9YS5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKSx2PWEuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksUz1hLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKSxWPVMubGVuZ3RoLFE9YS5nZXRTZXR0aW5nKCJjb2x1''@;'; put 'put ''bW5IZWFkZXJzIiksZGU9US5sZW5ndGg7bGV0IHBlPWM7aWYodGhpcy5pc01hc3RlciYmKHRoaXMuaG9sZGVyT2Zmc2V0PXh1KHRoaXMuaG9sZGVyKSxwZT1oLmNyZWF0ZVJlbmRlckNhbGN1bGF0b3JzKHBlKSxWJiYhYS5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpKSl7Y29uc3Qg''@;'; put 'put ''T2U9ZC5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKSxZZT10aGlzLmNvcnJlY3RIZWFkZXJXaWR0aDt0aGlzLmNvcnJlY3RIZWFkZXJXaWR0aD0wIT09T2UsWWUhPT10aGlzLmNvcnJlY3RIZWFkZXJXaWR0aCYmKHBlPSExKX1pZih0aGlzLmlzTWFzdGVyJiZkLmJlZm9y''@;'; put 'put ''ZURyYXcoKSxwZSl0aGlzLmlzTWFzdGVyJiYoaC5jcmVhdGVWaXNpYmxlQ2FsY3VsYXRvcnMoKSxoLmNyZWF0ZVBhcnRpYWxseVZpc2libGVDYWxjdWxhdG9ycygpKSxkJiZkLnJlZnJlc2goITApO2Vsc2V7dGhpcy50YWJsZU9mZnNldD10aGlzLmlzTWFzdGVyP3h1KHRoaXMuVEFCTEUpOnRo''@;'; put 'put ''aXMuZGF0YUFjY2Vzc09iamVjdC5wYXJlbnRUYWJsZU9mZnNldDtjb25zdCBPZT1mPjA/dGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCk6MCxZZT12PjA/dGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCk6MDt0aGlzLnJvd0ZpbHRlcj1uZXcgbVdlKE9lLGYsZGUpLHRoaXMuY29sdW1uRmls''@;'; put 'put ''dGVyPW5ldyBoV2UoWWUsdixWKTtsZXQgZXQ9ITA7aWYodGhpcy5pc01hc3Rlcil7dGhpcy5hbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVyKCk7Y29uc3QgZHQ9e307dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImJlZm9yZURyYXciLCEwLGR0KSxldD0hMCE9PWR0LnNraXBS''@;'; put 'put ''ZW5kZXJ9aWYoZXQpe2xldCBkdDtpZih0aGlzLnRhYmxlUmVuZGVyZXIuc2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhTLFEpLCh0aGlzLmlzKE8zKXx8dGhpcy5pcyhCbSkpJiZ0aGlzLnRhYmxlUmVuZGVyZXIuc2V0SGVhZGVyQ29udGVudFJlbmRlcmVycyhTLFtdKSx0aGlzLnJlc2V0T3Zl''@;'; put 'put ''cnNpemVkUm93cygpLHRoaXMudGFibGVSZW5kZXJlci5zZXRWaWV3cG9ydFNpemUodGhpcy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKSkuc2V0RmlsdGVycyh0aGlzLnJvd0ZpbHRlcix0aGlzLmNvbHVtbkZpbHRlcikucmVuZGVyKCksdGhp''@;'; put 'put ''cy5pc01hc3RlciYmKGR0PXRoaXMuZGF0YUFjY2Vzc09iamVjdC53b3Jrc3BhY2VXaWR0aCxoLmNvbnRhaW5lcldpZHRoPW51bGwsdGhpcy5tYXJrT3ZlcnNpemVkQ29sdW1uSGVhZGVycygpKSx0aGlzLmFkanVzdENvbHVtbkhlYWRlckhlaWdodHMoKSwodGhpcy5pc01hc3Rlcnx8dGhpcy5p''@;'; put 'put ''cyhPMykpJiZ0aGlzLm1hcmtPdmVyc2l6ZWRSb3dzKCksdGhpcy5pc01hc3Rlcil7aC5jcmVhdGVWaXNpYmxlQ2FsY3VsYXRvcnMoKSxoLmNyZWF0ZVBhcnRpYWxseVZpc2libGVDYWxjdWxhdG9ycygpLGQucmVmcmVzaCghMSksZC5hcHBseVRvRE9NKCk7Y29uc3QgaHQ9V2EodGhpcy5oaWRl''@;'; put 'put ''ciksTXQ9V2EodGhpcy5UQUJMRSk7MCE9PWh0JiZNdCE9PWh0JiYodGhpcy5jb2x1bW5VdGlscy5jYWxjdWxhdGVXaWR0aHMoKSx0aGlzLnRhYmxlUmVuZGVyZXIucmVuZGVyZXIuY29sR3JvdXAucmVuZGVyKCkpLGR0IT09aC5nZXRXb3Jrc3BhY2VXaWR0aCgpJiYoaC5jb250YWluZXJXaWR0''@;'; put 'put ''aD1udWxsLHRoaXMuY29sdW1uVXRpbHMuY2FsY3VsYXRlV2lkdGhzKCksdGhpcy50YWJsZVJlbmRlcmVyLnJlbmRlcmVyLmNvbEdyb3VwLnJlbmRlcigpKSx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25EcmF3IiwhMCl9ZWxzZSB0aGlzLmlzKE8zKSYmdGhpcy5kYXRhQWNjZXNzT2Jq''@;'; put 'put ''ZWN0LmNsb25lU291cmNlLnd0T3ZlcmxheXMuYWRqdXN0RWxlbWVudHNTaXplKCl9fWxldCBDZT0hMTtyZXR1cm4gdGhpcy5pc01hc3RlciYmKENlPWQudG9wT3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKSxkLmJvdHRvbU92ZXJsYXkuY2xvbmUmJihDZT1kLmJvdHRvbU92ZXJsYXkucmVz''@;'; put 'put ''ZXRGaXhlZFBvc2l0aW9uKCl8fENlKSxDZT1kLmlubGluZVN0YXJ0T3ZlcmxheS5yZXNldEZpeGVkUG9zaXRpb24oKXx8Q2UsZC50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJmQudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlc2V0Rml4ZWRQb3NpdGlvbigpLGQuYm90dG9tSW5s''@;'; put 'put ''aW5lU3RhcnRDb3JuZXJPdmVybGF5JiZkLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZSYmZC5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkucmVzZXRGaXhlZFBvc2l0aW9uKCkpLENlPyhkLnJlZnJlc2hBbGwoKSxkLmFkanVzdEVsZW1lbnRzU2l6ZSgpKTp0aGlz''@;'; put 'put ''LmRhdGFBY2Nlc3NPYmplY3Quc2VsZWN0aW9uTWFuYWdlci5zZXRBY3RpdmVPdmVybGF5KHRoaXMuZmFjYWRlR2V0dGVyKCkpLnJlbmRlcihwZSksdGhpcy5pc01hc3RlciYmZC5hZnRlckRyYXcoKSx0aGlzLmRhdGFBY2Nlc3NPYmplY3QuZHJhd249ITAsdGhpc31tYXJrSWZPdmVyc2l6ZWRD''@;'; put 'put ''b2x1bW5IZWFkZXIoYyl7Y29uc3QgYT10aGlzLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKGMpO2xldCBkPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2NvbnN0IGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dI''@;'; put 'put ''ZWlnaHQiKTtsZXQgZix2LFM7Y29uc3QgVj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVySGVpZ2h0Iil8fFtdO2Zvcig7ZDspZC09MSxmPXRoaXMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KGQpLHY9dGhpcy5nZXRDb2x1bW5IZWFkZXIoYSxkKSx2JiYoUz1XOCh2KSwo''@;'; put 'put ''IWYmJmg8U3x8ZjxTKSYmKHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbZF09UyksQXJyYXkuaXNBcnJheShWKT9udWxsIT1WW2RdJiYodGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1tk''@;'; put 'put ''XT1WW2RdKTppc05hTihWKXx8KHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFZpZXdwb3J0Lm92ZXJzaXplZENvbHVtbkhlYWRlcnNbZF09ViksdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3BvcnQub3ZlcnNpemVkQ29sdW1uSGVhZGVyc1tkXTwoVltkXXx8VikmJih0aGlzLmRhdGFBY2Nl''@;'; put 'put ''c3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzW2RdPVZbZF18fFYpKX1hZGp1c3RDb2x1bW5IZWFkZXJIZWlnaHRzKCl7Y29uc3R7d3RTZXR0aW5nczpjfT10aGlzLGE9dGhpcy5USEVBRC5jaGlsZE5vZGVzLGQ9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0Vmlld3Bv''@;'; put 'put ''cnQub3ZlcnNpemVkQ29sdW1uSGVhZGVycztmb3IobGV0IGY9MCx2PWMuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aDtmPHY7ZisrKWlmKGRbZl0pe2lmKCFhW2ZdfHwwPT09YVtmXS5jaGlsZE5vZGVzLmxlbmd0aClyZXR1cm47YVtmXS5jaGlsZE5vZGVzWzBdLnN0eWxlLmhl''@;'; put 'put ''aWdodD1gJHtkW2ZdfXB4YH19cmVzZXRPdmVyc2l6ZWRSb3dzKCl7Y29uc3R7d3RTZXR0aW5nczpjfT10aGlzLHt3dFZpZXdwb3J0OmF9PXRoaXMuZGF0YUFjY2Vzc09iamVjdDtpZigodGhpcy5pc01hc3Rlcnx8dGhpcy5pcyhPMykpJiYhYy5nZXRTZXR0aW5nKCJleHRlcm5hbFJvd0NhbGN1''@;'; put 'put ''bGF0b3IiKSl7Y29uc3QgZD10aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCk7Zm9yKGxldCBoPTA7aDxkO2grKyl7Y29uc3QgZj10aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKGgpO2Eub3ZlcnNpemVkUm93cyYmYS5vdmVyc2l6ZWRSb3dzW2ZdJiYoYS5vdmVyc2l6ZWRSb3dzW2Zd''@;'; put 'put ''PXZvaWQgMCl9fX1nZXRDZWxsKGMpe2xldCBhPWMucm93LGQ9Yy5jb2w7Y29uc3QgaD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Nb2RpZnlHZXRDZWxsQ29vcmRzIixhLGQpO2lmKGgmJkFycmF5LmlzQXJyYXkoaCkmJihbYSxkXT1oKSx0aGlzLmlzUm93QmVmb3JlUmVuZGVyZWRS''@;'; put 'put ''b3dzKGEpKXJldHVybi0xO2lmKHRoaXMuaXNSb3dBZnRlclJlbmRlcmVkUm93cyhhKSlyZXR1cm4tMjtpZih0aGlzLmlzQ29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zKGQpKXJldHVybi0zO2lmKHRoaXMuaXNDb2x1bW5BZnRlclJlbmRlcmVkQ29sdW1ucyhkKSlyZXR1cm4tNDtjb25zdCBm''@;'; put 'put ''PXRoaXMuZ2V0Um93KGEpO2lmKCFmJiZhPj0wKXRocm93IG5ldyBFcnJvcigiVFIgd2FzIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIGJ1dCBpcyBub3QiKTtjb25zdCB2PWYuY2hpbGROb2Rlc1t0aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VDb2x1bW5Ub1Zpc2libGVSb3dIZWFkZWRDb2x1bW4o''@;'; put 'put ''ZCldO2lmKCF2JiZkPj0wKXRocm93IG5ldyBFcnJvcigiVEQgb3IgVEggd2FzIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIGJ1dCBpcyBub3QiKTtyZXR1cm4gdn1nZXRSb3coYyl7bGV0IGE9bnVsbCxkPW51bGw7dmFyIGgsZjtyZXR1cm4gYzwwPyhhPW51bGw9PT0oaD10aGlzLnJvd0ZpbHRl''@;'; put 'put ''cil8fHZvaWQgMD09PWg/dm9pZCAwOmguc291cmNlUm93VG9WaXNpYmxlQ29sSGVhZGVkUm93KGMpLGQ9dGhpcy5USEVBRCk6KGE9bnVsbD09PShmPXRoaXMucm93RmlsdGVyKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5zb3VyY2VUb1JlbmRlcmVkKGMpLGQ9dGhpcy5UQk9EWSksdm9pZCAwIT09''@;'; put 'put ''YSYmdm9pZCAwIT09ZCYmIShkLmNoaWxkTm9kZXMubGVuZ3RoPGErMSkmJmQuY2hpbGROb2Rlc1thXX1nZXRDb2x1bW5IZWFkZXIoYyl7Y29uc3QgZD10aGlzLlRIRUFELmNoaWxkTm9kZXNbYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjBd''@;'; put 'put ''O3JldHVybiBkPy5jaGlsZE5vZGVzW3RoaXMuY29sdW1uRmlsdGVyLnNvdXJjZUNvbHVtblRvVmlzaWJsZVJvd0hlYWRlZENvbHVtbihjKV19Z2V0Q29sdW1uSGVhZGVycyhjKXtjb25zdCBhPVtdLGQ9dGhpcy5jb2x1bW5GaWx0ZXIuc291cmNlQ29sdW1uVG9WaXNpYmxlUm93SGVhZGVkQ29s''@;'; put 'put ''dW1uKGMpO3JldHVybiB0aGlzLlRIRUFELmNoaWxkTm9kZXMuZm9yRWFjaChoPT57Y29uc3QgZj1oLmNoaWxkTm9kZXNbZF07ZiYmYS5wdXNoKGYpfSksYX1nZXRSb3dIZWFkZXIoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFd''@;'; put 'put ''OjA7aWYoYT49dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGgpcmV0dXJuO2NvbnN0IGg9dGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZChjKSxmPWg8MD90aGlzLnJvd0ZpbHRlci5zb3VyY2VSb3dUb1Zpc2libGVDb2xIZWFkZWRSb3coYyk6aCxT''@;'; put 'put ''PShoPDA/dGhpcy5USEVBRDp0aGlzLlRCT0RZKS5jaGlsZE5vZGVzW2ZdO3JldHVybiBTPy5jaGlsZE5vZGVzW2FdfWdldFJvd0hlYWRlcnMoYyl7Y29uc3QgYT1bXSxkPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoO2ZvcihsZXQgaD0wO2g8ZDtoKysp''@;'; put 'put ''e2NvbnN0IGY9dGhpcy5UQk9EWS5jaGlsZE5vZGVzW3RoaXMucm93RmlsdGVyLnNvdXJjZVRvUmVuZGVyZWQoYyldLHY9Zj8uY2hpbGROb2Rlc1toXTt2JiZhLnB1c2godil9cmV0dXJuIGF9Z2V0Q29vcmRzKGMpe2xldCBhPWM7aWYoIlREIiE9PWEubm9kZU5hbWUmJiJUSCIhPT1hLm5vZGVO''@;'; put 'put ''YW1lJiYoYT1JbShhLFsiVEQiLCJUSCJdKSksbnVsbD09PWEpcmV0dXJuIG51bGw7Y29uc3QgZD1hLnBhcmVudE5vZGUsaD1kLnBhcmVudE5vZGU7bGV0IGY9djFlKGQpLHY9YS5jZWxsSW5kZXg7cmV0dXJuIExtKFE4LGEsdGhpcy53dFJvb3RFbGVtZW50KXx8TG0oWDgsYSx0aGlzLnd0Um9v''@;'; put 'put ''dEVsZW1lbnQpPyJUSEVBRCI9PT1oLm5vZGVOYW1lJiYoZi09aC5jaGlsZE5vZGVzLmxlbmd0aCk6Zj1MbShCbSxhLHRoaXMud3RSb290RWxlbWVudCl8fExtKE8zLGEsdGhpcy53dFJvb3RFbGVtZW50KT90aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIiktaC5jaGlsZE5v''@;'; put 'put ''ZGVzLmxlbmd0aCtmOmg9PT10aGlzLlRIRUFEP3RoaXMucm93RmlsdGVyLnZpc2libGVDb2xIZWFkZWRSb3dUb1NvdXJjZVJvdyhmKTp0aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKGYpLHY9TG0oUTgsYSx0aGlzLnd0Um9vdEVsZW1lbnQpfHxMbShKOCxhLHRoaXMud3RSb290RWxl''@;'; put 'put ''bWVudCl8fExtKEJtLGEsdGhpcy53dFJvb3RFbGVtZW50KT90aGlzLmNvbHVtbkZpbHRlci5vZmZzZXR0ZWRUSCh2KTp0aGlzLmNvbHVtbkZpbHRlci52aXNpYmxlUm93SGVhZGVkQ29sdW1uVG9Tb3VyY2VDb2x1bW4odiksdGhpcy53b3QuY3JlYXRlQ2VsbENvb3JkcyhmLHYpfW1hcmtPdmVy''@;'; put 'put ''c2l6ZWRSb3dzKCl7aWYodGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImV4dGVybmFsUm93Q2FsY3VsYXRvciIpKXJldHVybjtsZXQgaCxmLHYsUyxWLGM9dGhpcy5UQk9EWS5jaGlsZE5vZGVzLmxlbmd0aDtpZihjKnRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVp''@;'; put 'put ''Z2h0IikhPVc4KHRoaXMuVEJPRFkpLTF8fHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSlmb3IoO2M7KWMtPTEsdj10aGlzLnJvd0ZpbHRlci5yZW5kZXJlZFRvU291cmNlKGMpLGg9dGhpcy5nZXRSb3dIZWlnaHQodiksUz10aGlzLmdldFRyRm9yUm93KHYp''@;'; put 'put ''LFY9Uy5xdWVyeVNlbGVjdG9yKCJ0aCIpLGY9Vj9XOChWKTpXOChTKS0xLCghaCYmdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKTxmfHxoPGYpJiYoZis9MSx0aGlzLmRhdGFBY2Nlc3NPYmplY3Qud3RWaWV3cG9ydC5vdmVyc2l6ZWRSb3dzW3ZdPWYpfWdl''@;'; put 'put ''dFRyRm9yUm93KGMpe3JldHVybiB0aGlzLlRCT0RZLmNoaWxkTm9kZXNbdGhpcy5yb3dGaWx0ZXIuc291cmNlVG9SZW5kZXJlZChjKV19aXNDb2x1bW5IZWFkZXJSZW5kZXJlZChjKXtpZihjPj0wKXJldHVybiExO2NvbnN0IGQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRl''@;'; put 'put ''cnMiKS5sZW5ndGg7cmV0dXJuIE1hdGguYWJzKGMpPD1kfWlzUm93SGVhZGVyUmVuZGVyZWQoYyl7aWYoYz49MClyZXR1cm4hMTtjb25zdCBkPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO3JldHVybiBNYXRoLmFicyhjKTw9ZH1pc1Jvd0JlZm9y''@;'; put 'put ''ZVJlbmRlcmVkUm93cyhjKXtjb25zdCBhPXRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpO3JldHVybiBjPDAmJmE8PTA/IXRoaXMuaXNSb3dIZWFkZXJSZW5kZXJlZChjKTpjPGF9aXNSb3dBZnRlclJlbmRlcmVkUm93cyhjKXtyZXR1cm4gYz50aGlzLmdldExhc3RSZW5kZXJlZFJvdygpfWlz''@;'; put 'put ''Q29sdW1uQmVmb3JlUmVuZGVyZWRDb2x1bW5zKGMpe2NvbnN0IGE9dGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCk7cmV0dXJuIGM8MCYmYTw9MD8hdGhpcy5pc0NvbHVtbkhlYWRlclJlbmRlcmVkKGMpOmM8YX1pc0NvbHVtbkFmdGVyUmVuZGVyZWRDb2x1bW5zKGMpe3JldHVybiB0aGlz''@;'; put 'put ''LmNvbHVtbkZpbHRlciYmYz50aGlzLmdldExhc3RSZW5kZXJlZENvbHVtbigpfWlzQ29sdW1uQWZ0ZXJWaWV3cG9ydChjKXtyZXR1cm4gdGhpcy5jb2x1bW5GaWx0ZXImJmM+dGhpcy5nZXRMYXN0VmlzaWJsZUNvbHVtbigpfWlzUm93QWZ0ZXJWaWV3cG9ydChjKXtyZXR1cm4gdGhpcy5yb3dG''@;'; put 'put ''aWx0ZXImJmM+dGhpcy5nZXRMYXN0VmlzaWJsZVJvdygpfWlzQ29sdW1uQmVmb3JlVmlld3BvcnQoYyl7cmV0dXJuIHRoaXMuY29sdW1uRmlsdGVyJiZ0aGlzLmNvbHVtbkZpbHRlci5zb3VyY2VUb1JlbmRlcmVkKGMpPDAmJmM+PTB9aXNMYXN0Um93RnVsbHlWaXNpYmxlKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuZ2V0TGFzdFZpc2libGVSb3coKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9aXNMYXN0Q29sdW1uRnVsbHlWaXNpYmxlKCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4oKT09PXRoaXMuZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl9YWxsUm93c0luVmlld3BvcnQoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpPT09dGhpcy5nZXRWaXNpYmxlUm93c0NvdW50KCl9YWxsQ29sdW1uc0luVmlld3BvcnQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpPT09dGhpcy5nZXRWaXNpYmxl''@;'; put 'put ''Q29sdW1uc0NvdW50KCl9Z2V0Um93SGVpZ2h0KGMpe3JldHVybiB0aGlzLnJvd1V0aWxzLmdldEhlaWdodChjKX1nZXRDb2x1bW5IZWFkZXJIZWlnaHQoYyl7cmV0dXJuIHRoaXMuY29sdW1uVXRpbHMuZ2V0SGVhZGVySGVpZ2h0KGMpfWdldENvbHVtbldpZHRoKGMpe3JldHVybiB0aGlzLmNv''@;'; put 'put ''bHVtblV0aWxzLmdldFdpZHRoKGMpfWdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGMpe3JldHVybiB0aGlzLmNvbHVtblV0aWxzLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKGMpfWhhc0RlZmluZWRTaXplKCl7cmV0dXJuIHRoaXMuaGFzVGFibGVIZWlnaHQmJnRoaXMuaGFzVGFibGVXaWR0aH1n''@;'; put 'put ''ZXRXaWR0aCgpe3JldHVybiBXYSh0aGlzLlRBQkxFKX1nZXRIZWlnaHQoKXtyZXR1cm4gWmwodGhpcy5UQUJMRSl9Z2V0VG90YWxXaWR0aCgpe2NvbnN0IGM9V2EodGhpcy5oaWRlcik7cmV0dXJuIDAhPT1jP2M6dGhpcy5nZXRXaWR0aCgpfWdldFRvdGFsSGVpZ2h0KCl7Y29uc3QgYz1abCh0''@;'; put 'put ''aGlzLmhpZGVyKTtyZXR1cm4gMCE9PWM/Yzp0aGlzLmdldEhlaWdodCgpfWlzVmlzaWJsZSgpe3JldHVybiBQbSh0aGlzLlRBQkxFKX1fbW9kaWZ5Um93SGVhZGVyV2lkdGgoYyl7bGV0IGE9aGwoYyk/YygpOm51bGw7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/KGE9Wy4uLmFdLGFbYS5sZW5n''@;'; put 'put ''dGgtMV09dGhpcy5fY29ycmVjdFJvd0hlYWRlcldpZHRoKGFbYS5sZW5ndGgtMV0pKTphPXRoaXMuX2NvcnJlY3RSb3dIZWFkZXJXaWR0aChhKSxhfV9jb3JyZWN0Um93SGVhZGVyV2lkdGgoYyl7bGV0IGE9YztyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGMmJihhPXRoaXMud3RTZXR0aW5ncy5n''@;'; put 'put ''ZXRTZXR0aW5nKCJkZWZhdWx0Q29sdW1uV2lkdGgiKSksdGhpcy5jb3JyZWN0SGVhZGVyV2lkdGgmJihhKz0xKSxhfX0scGRlPXtnZXRGaXJzdFJlbmRlcmVkUm93KCl7cmV0dXJuIDA9PT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik/LTE6MH0sZ2V0Rmlyc3RWaXNp''@;'; put 'put ''YmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpfSxnZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkUm93KCl9LGdldExhc3RSZW5kZXJlZFJvdygpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCkt''@;'; put 'put ''MX0sZ2V0TGFzdFZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0TGFzdFBhcnRpYWxseVZpc2libGVSb3coKXtyZXR1cm4gdGhpcy5nZXRMYXN0UmVuZGVyZWRSb3coKX0sZ2V0UmVuZGVyZWRSb3dzQ291bnQoKXtjb25zdCBsPXRoaXMud3RTZXR0aW5n''@;'; put 'put ''cy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtyZXR1cm4gTWF0aC5taW4odGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLGwpfSxnZXRWaXNpYmxlUm93c0NvdW50KCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKX0sZ2V0Q29sdW1uSGVhZGVyc0Nv''@;'; put 'put ''dW50KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb2x1bW5IZWFkZXJzLmxlbmd0aH19O0kzKHBkZSwiTUlYSU5fTkFNRSIsInN0aWNreVJvd3NUb3AiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgZ2RlPXBkZSxtZGU9e2dldEZpcnN0UmVuZGVyZWRDb2x1bW4o''@;'; put 'put ''KXtjb25zdCBsPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblJlbmRlcmVkO3JldHVybiBudWxsPT09bD8tMTpsfSxnZXRGaXJzdFZpc2libGVDb2x1bW4oKXtjb25zdCBsPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydENvbHVtblZpc2libGU7cmV0dXJuIG51bGw9PT1sPy0x''@;'; put 'put ''Omx9LGdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpe2NvbnN0IGw9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LnN0YXJ0Q29sdW1uUGFydGlhbGx5VmlzaWJsZTtyZXR1cm4gbnVsbD09PWw/LTE6bH0sZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl7Y29uc3QgbD10aGlzLmRhdGFBY2Nlc3NP''@;'; put 'put ''YmplY3QuZW5kQ29sdW1uUmVuZGVyZWQ7cmV0dXJuIG51bGw9PT1sPy0xOmx9LGdldExhc3RWaXNpYmxlQ29sdW1uKCl7Y29uc3QgbD10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kQ29sdW1uVmlzaWJsZTtyZXR1cm4gbnVsbD09PWw/LTE6bH0sZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1''@;'; put 'put ''bW4oKXtjb25zdCBsPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5lbmRDb2x1bW5QYXJ0aWFsbHlWaXNpYmxlO3JldHVybiBudWxsPT09bD8tMTpsfSxnZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3QuY291bnRDb2x1bW5zUmVuZGVyZWR9LGdldFZp''@;'; put 'put ''c2libGVDb2x1bW5zQ291bnQoKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Q29sdW1uc1Zpc2libGV9LGdldFJvd0hlYWRlcnNDb3VudCgpe3JldHVybiB0aGlzLmRhdGFBY2Nlc3NPYmplY3Qucm93SGVhZGVycy5sZW5ndGh9fTtJMyhtZGUsIk1JWElOX05BTUUiLCJjYWxj''@;'; put 'put ''dWxhdGVkQ29sdW1ucyIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCBYVz1tZGU7Y2xhc3MgSlcgZXh0ZW5kcyBmYntjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEsZCxoLFg4KX19cmwoSlcsZ2RlKSxybChKVyxYVyk7Y29uc3QgY0dlPUpXO2Z1bmN0aW9uIERMKGws''@;'; put 'put ''YyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgcHg9bmV3IFdlYWtTZXQ7ZnVu''@;'; put 'put ''Y3Rpb24gdmRlKGwpe2NvbnN0e3d0U2V0dGluZ3M6YyxpbmxpbmVTdGFydE92ZXJsYXk6YSx3dFRhYmxlOmQsd3RWaWV3cG9ydDpoLHRvdGFsQ29sdW1uczpmLHJvb3RXaW5kb3c6dn09dGhpcy5kYXRhQWNjZXNzT2JqZWN0O2lmKGEubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ9PT12KXts''@;'; put 'put ''ZXQgVj1udWxsO2lmKGMuZ2V0U2V0dGluZygicnRsTW9kZSIpKXtjb25zdCBkZT1kLlRBQkxFLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1Y9TWF0aC5hYnMoZGUucmlnaHQtdGhpcy5kYXRhQWNjZXNzT2JqZWN0LnJvb3RXaW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdp''@;'; put 'put ''ZHRoKX1lbHNlIFY9eHUoZC53dFJvb3RFbGVtZW50KS5sZWZ0O2NvbnN0IFE9TWF0aC5hYnMoZlcodix2KSk7aWYoVj5RKXtjb25zdCBkZT1wVyh2KTtsZXQgcGU9aC5nZXRSb3dIZWFkZXJXaWR0aCgpO2ZvcihsZXQgQ2U9MTtDZTw9ZjtDZSsrKWlmKHBlKz1hLnN1bUNlbGxTaXplcyhDZS0x''@;'; put 'put ''LENlKSxWK3BlLVE+PWRlKXtsPUNlLTI7YnJlYWt9fX1yZXR1cm4gbH1mdW5jdGlvbiBfZGUobCl7Y29uc3R7dG9wT3ZlcmxheTpjLHd0VGFibGU6YSx3dFZpZXdwb3J0OmQsdG90YWxSb3dzOmgscm9vdFdpbmRvdzpmfT10aGlzLmRhdGFBY2Nlc3NPYmplY3Q7aWYoYy5tYWluVGFibGVTY3Jv''@;'; put 'put ''bGxhYmxlRWxlbWVudD09PWYpe2NvbnN0IHY9eHUoYS53dFJvb3RFbGVtZW50KSxTPXRMKGYsZik7aWYodi50b3A+Uyl7Y29uc3QgVj1XOChmKTtsZXQgUT1kLmdldENvbHVtbkhlYWRlckhlaWdodCgpO2ZvcihsZXQgZGU9MTtkZTw9aDtkZSsrKWlmKFErPWMuc3VtQ2VsbFNpemVzKGRlLTEs''@;'; put 'put ''ZGUpLHYudG9wK1EtUz49Vil7bD1kZS0yO2JyZWFrfX19cmV0dXJuIGx9Y29uc3QgbUdlPWNsYXNzIGdHZXtjb25zdHJ1Y3RvcihjKXsoZnVuY3Rpb24gdUdlKGwsYyl7KGZ1bmN0aW9uIGRHZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXpl''@;'; put 'put ''IHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSkodGhpcyxweCksZnVuY3Rpb24gaEdlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBmR2UobCl7dmFyIGM9ZnVuY3Rpb24gcEdlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBs''@;'; put 'put ''fHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBh''@;'; put 'put ''IHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNv''@;'; put 'put ''bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJkYXRhQWNjZXNzT2JqZWN0Iix2b2lkIDApLHRoaXMuZGF0YUFjY2Vzc09iamVjdD1jfXNjcm9sbFZpZXdwb3J0KGMsYSxkLGgsZil7Y29uc3Qgdj10aGlzLnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGMuY29s''@;'; put 'put ''LGQsZiksUz10aGlzLnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShjLnJvdyxhLGgpO3JldHVybiB2fHxTfXNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGMsYSxkKXtjb25zdHtkcmF3bjpoLHRvdGFsQ29sdW1uczpmfT10aGlzLmRhdGFBY2Nlc3NPYmplY3Q7aWYoIWh8fCFOdW1iZXIuaXNJ''@;'; put 'put ''bnRlZ2VyKGMpfHxjPDB8fGM+ZilyZXR1cm4hMTtjb25zdCB2PXZvaWQgMD09PWEmJnZvaWQgMD09PWQse2ZpeGVkQ29sdW1uc1N0YXJ0OlMsaW5saW5lU3RhcnRPdmVybGF5OlZ9PXRoaXMuZGF0YUFjY2Vzc09iamVjdDtpZih2JiZjPFN8fChjPXRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFNl''@;'; put 'put ''dHRpbmdzLmdldFNldHRpbmcoIm9uQmVmb3JlVmlld3BvcnRTY3JvbGxIb3Jpem9udGFsbHkiLGMpLCFOdW1iZXIuaXNJbnRlZ2VyKGMpfHxjPDB8fGM+ZikpcmV0dXJuITE7Y29uc3QgUT10aGlzLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpLGRlPXRoaXMuZ2V0TGFzdFZpc2libGVDb2x1bW4o''@;'; put 'put ''KTtsZXQgcGU9ITE7cmV0dXJuKHYmJihjPFF8fGM+ZGUpfHwhdikmJihwZT1WLnNjcm9sbFRvKGMsdj9jPj10aGlzLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCk6YSkpLHBlfXNjcm9sbFZpZXdwb3J0VmVydGljYWxseShjLGEsZCl7Y29uc3R7ZHJhd246aCx0b3RhbFJvd3M6Zn09''@;'; put 'put ''dGhpcy5kYXRhQWNjZXNzT2JqZWN0O2lmKCFofHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8YzwwfHxjPmYpcmV0dXJuITE7Y29uc3Qgdj12b2lkIDA9PT1hJiZ2b2lkIDA9PT1kLHtmaXhlZFJvd3NCb3R0b206UyxmaXhlZFJvd3NUb3A6Vix0b3BPdmVybGF5OlF9PXRoaXMuZGF0YUFjY2Vzc09i''@;'; put 'put ''amVjdDtpZih2JiYoYzxWfHxjPmYtUy0xKXx8KGM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25CZWZvcmVWaWV3cG9ydFNjcm9sbFZlcnRpY2FsbHkiLGMpLCFOdW1iZXIuaXNJbnRlZ2VyKGMpfHxjPDB8fGM+ZikpcmV0dXJuITE7Y29uc3QgZGU9dGhp''@;'; put 'put ''cy5nZXRGaXJzdFZpc2libGVSb3coKSxwZT10aGlzLmdldExhc3RWaXNpYmxlUm93KCk7bGV0IENlPSExO3JldHVybih2JiYoYzxkZXx8Yz5wZSl8fCF2KSYmKENlPVEuc2Nyb2xsVG8oYyx2P2M+PXRoaXMuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVSb3coKTpkKSksQ2V9Z2V0Rmlyc3RWaXNp''@;'; put 'put ''YmxlUm93KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZpcnN0VmlzaWJsZVJvdygpfWdldExhc3RWaXNpYmxlUm93KCl7cmV0dXJuIERMKHB4LHRoaXMsX2RlKS5jYWxsKHRoaXMsdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0TGFzdFZpc2libGVS''@;'; put 'put ''b3coKSl9Z2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpfWdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIERMKHB4LHRoaXMsX2RlKS5jYWxsKHRoaXMs''@;'; put 'put ''dGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVSb3coKSl9Z2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZpcnN0VmlzaWJsZUNvbHVtbigpfWdldExhc3RWaXNpYmxlQ29sdW1u''@;'; put 'put ''KCl7cmV0dXJuIERMKHB4LHRoaXMsdmRlKS5jYWxsKHRoaXMsdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKSl9Z2V0Rmlyc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC53dFRhYmxlLmdldEZp''@;'; put 'put ''cnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpfWdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCl7cmV0dXJuIERMKHB4LHRoaXMsdmRlKS5jYWxsKHRoaXMsdGhpcy5kYXRhQWNjZXNzT2JqZWN0Lnd0VGFibGUuZ2V0TGFzdFBhcnRpYWxseVZpc2libGVDb2x1bW4oKSl9fTtmdW5jdGlv''@;'; put 'put ''biBiZGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGJHZShsKXt2YXIgYz1mdW5jdGlvbiB5R2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVs''@;'; put 'put ''dCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gcGIobCxjKXtyZXR1cm4gbC5nZXQod2RlKGwsYykpfWZ1bmN0''@;'; put 'put ''aW9uIHlkZShsLGMsYSl7cmV0dXJuIGwuc2V0KHdkZShsLGMpLGEpLGF9ZnVuY3Rpb24gd2RlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1l''@;'; put 'put ''bnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgQTQ9bmV3IFdlYWtNYXA7Y2xhc3MgSUx7Y29uc3RydWN0b3IoYyxhKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2JkZSh0aGlzLCJyb3ciLG51bGwpLGJk''@;'; put 'put ''ZSh0aGlzLCJjb2wiLG51bGwpLGZ1bmN0aW9uIHZHZShsLGMsYSl7KGZ1bmN0aW9uIF9HZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMu''@;'; put 'put ''c2V0KGwsYSl9KHRoaXMsQTQsITEpLHlkZShBNCx0aGlzLGQpLHR5cGVvZiBjPCJ1IiYmdHlwZW9mIGE8InUiJiYodGhpcy5yb3c9Yyx0aGlzLmNvbD1hKX1pc1ZhbGlkKGMpe2NvbnN0e2NvdW50Um93czphLGNvdW50Q29sczpkLGNvdW50Um93SGVhZGVyczpoLGNvdW50Q29sSGVhZGVyczpm''@;'; put 'put ''fT17Y291bnRSb3dzOjAsY291bnRDb2xzOjAsY291bnRSb3dIZWFkZXJzOjAsY291bnRDb2xIZWFkZXJzOjAsLi4uY307cmV0dXJuISghTnVtYmVyLmlzSW50ZWdlcih0aGlzLnJvdyl8fCFOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuY29sKXx8dGhpcy5yb3c8LWZ8fHRoaXMuY29sPC1ofHx0aGlz''@;'; put 'put ''LnJvdz49YXx8dGhpcy5jb2w+PWQpfWlzRXF1YWwoYyl7cmV0dXJuIGM9PT10aGlzfHx0aGlzLnJvdz09PWMucm93JiZ0aGlzLmNvbD09PWMuY29sfWlzSGVhZGVyKCl7cmV0dXJuIXRoaXMuaXNDZWxsKCl9aXNDZWxsKCl7cmV0dXJuIHRoaXMucm93Pj0wJiZ0aGlzLmNvbD49MH1pc1J0bCgp''@;'; put 'put ''e3JldHVybiBwYihBNCx0aGlzKX1pc1NvdXRoRWFzdE9mKGMpe3JldHVybiB0aGlzLnJvdz49Yy5yb3cmJihwYihBNCx0aGlzKT90aGlzLmNvbDw9Yy5jb2w6dGhpcy5jb2w+PWMuY29sKX1pc05vcnRoV2VzdE9mKGMpe3JldHVybiB0aGlzLnJvdzw9Yy5yb3cmJihwYihBNCx0aGlzKT90aGlz''@;'; put 'put ''LmNvbD49Yy5jb2w6dGhpcy5jb2w8PWMuY29sKX1pc1NvdXRoV2VzdE9mKGMpe3JldHVybiB0aGlzLnJvdz49Yy5yb3cmJihwYihBNCx0aGlzKT90aGlzLmNvbD49Yy5jb2w6dGhpcy5jb2w8PWMuY29sKX1pc05vcnRoRWFzdE9mKGMpe3JldHVybiB0aGlzLnJvdzw9Yy5yb3cmJihwYihBNCx0''@;'; put 'put ''aGlzKT90aGlzLmNvbDw9Yy5jb2w6dGhpcy5jb2w+PWMuY29sKX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5yb3c9bnVsbD09PXRoaXMucm93P3RoaXMucm93Ok1hdGgubWF4KHRoaXMucm93LDApLHRoaXMuY29sPW51bGw9PT10aGlzLmNvbD90aGlzLmNvbDpNYXRoLm1heCh0aGlzLmNvbCww''@;'; put 'put ''KSx0aGlzfWFzc2lnbihjKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihjPy5yb3cpJiYodGhpcy5yb3c9Yy5yb3cpLE51bWJlci5pc0ludGVnZXIoYz8uY29sKSYmKHRoaXMuY29sPWMuY29sKSxjIGluc3RhbmNlb2YgSUwmJnlkZShBNCx0aGlzLGMuaXNSdGwoKSksdGhpc31jbG9uZSgpe3Jl''@;'; put 'put ''dHVybiBuZXcgSUwodGhpcy5yb3csdGhpcy5jb2wscGIoQTQsdGhpcykpfXRvT2JqZWN0KCl7cmV0dXJue3Jvdzp0aGlzLnJvdyxjb2w6dGhpcy5jb2x9fX1jb25zdCBSTD1JTDtmdW5jdGlvbiBRVyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gU0dlKGwpe3ZhciBjPWZ1bmN0aW9uIE1HZShs''@;'; put 'put ''LGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBA''@;'; put 'put ''dG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMs''@;'; put 'put ''e3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBaaChsLGMpe3JldHVybiBsLmdldChDZGUobCxjKSl9ZnVuY3Rpb24gQ2RlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1''@;'; put 'put ''cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgQjE9bmV3IFdlYWtNYXA7Y2xhc3MgZUd7Y29uc3RydWN0b3IoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2''@;'; put 'put ''b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmMsZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06YyxoPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107UVcodGhpcywiaGln''@;'; put 'put ''aGxpZ2h0IixudWxsKSxRVyh0aGlzLCJmcm9tIixudWxsKSxRVyh0aGlzLCJ0byIsbnVsbCksZnVuY3Rpb24gd0dlKGwsYyxhKXsoZnVuY3Rpb24gQ0dlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVt''@;'; put 'put ''ZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5zZXQobCxhKX0odGhpcyxCMSwhMSksdGhpcy5oaWdobGlnaHQ9Yy5jbG9uZSgpLHRoaXMuZnJvbT1hLmNsb25lKCksdGhpcy50bz1kLmNsb25lKCksZnVuY3Rpb24geEdlKGwsYyxhKXtsLnNldChDZGUobCxjKSxhKX0oQjEsdGhp''@;'; put 'put ''cyxoKX1zZXRIaWdobGlnaHQoYyl7cmV0dXJuIHRoaXMuaGlnaGxpZ2h0PWMuY2xvbmUoKSx0aGlzfXNldEZyb20oYyl7cmV0dXJuIHRoaXMuZnJvbT1jLmNsb25lKCksdGhpc31zZXRUbyhjKXtyZXR1cm4gdGhpcy50bz1jLmNsb25lKCksdGhpc31pc1ZhbGlkKGMpe3JldHVybiB0aGlzLmZy''@;'; put 'put ''b20uaXNWYWxpZChjKSYmdGhpcy50by5pc1ZhbGlkKGMpfWlzU2luZ2xlKCl7cmV0dXJuIHRoaXMuaXNTaW5nbGVDZWxsKCl8fHRoaXMuaXNTaW5nbGVIZWFkZXIoKX1pc1NpbmdsZUNlbGwoKXtyZXR1cm4gdGhpcy5mcm9tLnJvdz49MCYmdGhpcy5mcm9tLnJvdz09PXRoaXMudG8ucm93JiZ0''@;'; put 'put ''aGlzLmZyb20uY29sPj0wJiZ0aGlzLmZyb20uY29sPT09dGhpcy50by5jb2x9aXNTaW5nbGVIZWFkZXIoKXtyZXR1cm4odGhpcy5mcm9tLnJvdzwwfHx0aGlzLmZyb20uY29sPDApJiZ0aGlzLmZyb20ucm93PT09dGhpcy50by5yb3cmJnRoaXMuZnJvbS5jb2w9PT10aGlzLnRvLmNvbH1pc0hl''@;'; put 'put ''YWRlcigpe3JldHVybiEoIXRoaXMuZnJvbS5pc0hlYWRlcigpfHwhdGhpcy50by5pc0hlYWRlcigpKXx8dGhpcy5mcm9tLmNvbDwwJiZ0aGlzLnRvLmNvbDwwfHx0aGlzLmZyb20ucm93PDAmJnRoaXMudG8ucm93PDB9Y29udGFpbnNIZWFkZXJzKCl7cmV0dXJuIHRoaXMuZnJvbS5pc0hlYWRl''@;'; put 'put ''cigpfHx0aGlzLnRvLmlzSGVhZGVyKCl9Z2V0T3V0ZXJIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyktTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdykrMX1nZXRPdXRlcldpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMuZnJvbS5j''@;'; put 'put ''b2wsdGhpcy50by5jb2wpLU1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKzF9Z2V0SGVpZ2h0KCl7aWYodGhpcy5mcm9tLnJvdzwwJiZ0aGlzLnRvLnJvdzwwKXJldHVybiAwO2NvbnN0IGM9TWF0aC5tYXgodGhpcy5mcm9tLnJvdywwKSxhPU1hdGgubWF4KHRoaXMudG8ucm93''@;'; put 'put ''LDApO3JldHVybiBNYXRoLm1heChjLGEpLU1hdGgubWluKGMsYSkrMX1nZXRXaWR0aCgpe2lmKHRoaXMuZnJvbS5jb2w8MCYmdGhpcy50by5jb2w8MClyZXR1cm4gMDtjb25zdCBjPU1hdGgubWF4KHRoaXMuZnJvbS5jb2wsMCksYT1NYXRoLm1heCh0aGlzLnRvLmNvbCwwKTtyZXR1cm4gTWF0''@;'; put 'put ''aC5tYXgoYyxhKS1NYXRoLm1pbihjLGEpKzF9Z2V0Q2VsbHNDb3VudCgpe3JldHVybiB0aGlzLmdldFdpZHRoKCkqdGhpcy5nZXRIZWlnaHQoKX1pbmNsdWRlcyhjKXtjb25zdHtyb3c6YSxjb2w6ZH09YyxoPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGY9dGhpcy5nZXRPdXRlckJv''@;'; put 'put ''dHRvbUVuZENvcm5lcigpO3JldHVybiBoLnJvdzw9YSYmZi5yb3c+PWEmJmguY29sPD1kJiZmLmNvbD49ZH1pbmNsdWRlc1JhbmdlKGMpe3JldHVybiB0aGlzLmluY2x1ZGVzKGMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpKSYmdGhpcy5pbmNsdWRlcyhjLmdldE91dGVyQm90dG9tRW5kQ29y''@;'; put 'put ''bmVyKCkpfWlzRXF1YWwoYyl7cmV0dXJuIE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5taW4oYy5mcm9tLnJvdyxjLnRvLnJvdykmJk1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpPT09TWF0aC5tYXgoYy5mcm9tLnJvdyxjLnRvLnJvdykmJk1h''@;'; put 'put ''dGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpPT09TWF0aC5taW4oYy5mcm9tLmNvbCxjLnRvLmNvbCkmJk1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpPT09TWF0aC5tYXgoYy5mcm9tLmNvbCxjLnRvLmNvbCl9b3ZlcmxhcHMoYyl7cmV0dXJuIGMuaXNTb3V0aEVh''@;'; put 'put ''c3RPZih0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpKSYmYy5pc05vcnRoV2VzdE9mKHRoaXMuZ2V0T3V0ZXJCb3R0b21SaWdodENvcm5lcigpKX1pc1NvdXRoRWFzdE9mKGMpe3JldHVybiB0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpLmlzU291dGhFYXN0T2YoYyl8fHRoaXMuZ2V0''@;'; put 'put ''T3V0ZXJCb3R0b21SaWdodENvcm5lcigpLmlzU291dGhFYXN0T2YoYyl9aXNOb3J0aFdlc3RPZihjKXtyZXR1cm4gdGhpcy5nZXRPdXRlclRvcExlZnRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGMpfHx0aGlzLmdldE91dGVyQm90dG9tUmlnaHRDb3JuZXIoKS5pc05vcnRoV2VzdE9mKGMpfWlz''@;'; put 'put ''T3ZlcmxhcHBpbmdIb3Jpem9udGFsbHkoYyl7cmV0dXJuIHRoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKS5jb2w+PWMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLmNvbCYmdGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpLmNvbDw9Yy5nZXRPdXRlclRvcEVuZENvcm5lcigpLmNvbHx8dGhp''@;'; put 'put ''cy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkuY29sPD1jLmdldE91dGVyVG9wRW5kQ29ybmVyKCkuY29sJiZ0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKS5jb2w+PWMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLmNvbH1pc092ZXJsYXBwaW5nVmVydGljYWxseShjKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkucm93Pj1jLmdldE91dGVyVG9wUmlnaHRDb3JuZXIoKS5yb3cmJnRoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpLnJvdzw9Yy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkucm93fHx0aGlzLmdldE91dGVyVG9wRW5kQ29ybmVy''@;'; put 'put ''KCkucm93PD1jLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKS5yb3cmJnRoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKS5yb3c+PWMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLnJvd31leHBhbmQoYyl7Y29uc3QgYT10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxkPXRoaXMuZ2V0''@;'; put 'put ''T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTtyZXR1cm4oYy5yb3c8YS5yb3d8fGMuY29sPGEuY29sfHxjLnJvdz5kLnJvd3x8Yy5jb2w+ZC5jb2wpJiYodGhpcy5mcm9tPXRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5taW4oYS5yb3csYy5yb3cpLE1hdGgubWluKGEuY29sLGMuY29sKSksdGhp''@;'; put 'put ''cy50bz10aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KGQucm93LGMucm93KSxNYXRoLm1heChkLmNvbCxjLmNvbCkpLCEwKX1leHBhbmRCeVJhbmdlKGMpe2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07aWYodGhp''@;'; put 'put ''cy5pbmNsdWRlc1JhbmdlKGMpfHwhdGhpcy5vdmVybGFwcyhjKSlyZXR1cm4hMTtjb25zdCBkPXRoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGg9dGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLGY9dGhpcy5nZXREaXJlY3Rpb24oKSx2PWMuZ2V0T3V0ZXJUb3BTdGFydENvcm5l''@;'; put 'put ''cigpLFM9Yy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpLFY9TWF0aC5taW4oZC5yb3csdi5yb3cpLFE9TWF0aC5taW4oZC5jb2wsdi5jb2wpLGRlPU1hdGgubWF4KGgucm93LFMucm93KSxwZT1NYXRoLm1heChoLmNvbCxTLmNvbCksQ2U9dGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhWLFEpLE9l''@;'; put 'put ''PXRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoZGUscGUpO3JldHVybiB0aGlzLmZyb209Q2UsdGhpcy50bz1PZSx0aGlzLnNldERpcmVjdGlvbihmKSxhJiYodGhpcy5oaWdobGlnaHQucm93PT09dGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCkucm93JiYiTi1TIj09PXRoaXMuZ2V0VmVy''@;'; put 'put ''dGljYWxEaXJlY3Rpb24oKSYmdGhpcy5mbGlwRGlyZWN0aW9uVmVydGljYWxseSgpLHRoaXMuaGlnaGxpZ2h0LmNvbD09PXRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLmNvbCYmIlctRSI9PT10aGlzLmdldEhvcml6b250YWxEaXJlY3Rpb24oKSYmdGhpcy5mbGlwRGlyZWN0aW9uSG9y''@;'; put 'put ''aXpvbnRhbGx5KCkpLCEwfWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLmZyb20uaXNOb3J0aFdlc3RPZih0aGlzLnRvKT8iTlctU0UiOnRoaXMuZnJvbS5pc05vcnRoRWFzdE9mKHRoaXMudG8pPyJORS1TVyI6dGhpcy5mcm9tLmlzU291dGhFYXN0T2YodGhpcy50byk/IlNFLU5XIjp0aGlz''@;'; put 'put ''LmZyb20uaXNTb3V0aFdlc3RPZih0aGlzLnRvKT8iU1ctTkUiOnZvaWQgMH1zZXREaXJlY3Rpb24oYyl7c3dpdGNoKGMpe2Nhc2UiTlctU0UiOlt0aGlzLmZyb20sdGhpcy50b109W3RoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCksdGhpcy5nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCld''@;'; put 'put ''O2JyZWFrO2Nhc2UiTkUtU1ciOlt0aGlzLmZyb20sdGhpcy50b109W3RoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpLHRoaXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCldO2JyZWFrO2Nhc2UiU0UtTlciOlt0aGlzLmZyb20sdGhpcy50b109W3RoaXMuZ2V0T3V0ZXJCb3R0b21SaWdo''@;'; put 'put ''dENvcm5lcigpLHRoaXMuZ2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCldO2JyZWFrO2Nhc2UiU1ctTkUiOlt0aGlzLmZyb20sdGhpcy50b109W3RoaXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCksdGhpcy5nZXRPdXRlclRvcFJpZ2h0Q29ybmVyKCldfX1nZXRWZXJ0aWNhbERpcmVjdGlvbigp''@;'; put 'put ''e3JldHVyblsiTkUtU1ciLCJOVy1TRSJdLmluZGV4T2YodGhpcy5nZXREaXJlY3Rpb24oKSk+LTE/Ik4tUyI6IlMtTiJ9Z2V0SG9yaXpvbnRhbERpcmVjdGlvbigpe3JldHVyblsiTlctU0UiLCJTVy1ORSJdLmluZGV4T2YodGhpcy5nZXREaXJlY3Rpb24oKSk+LTE/IlctRSI6IkUtVyJ9Zmxp''@;'; put 'put ''cERpcmVjdGlvblZlcnRpY2FsbHkoKXtzd2l0Y2godGhpcy5nZXREaXJlY3Rpb24oKSl7Y2FzZSJOVy1TRSI6dGhpcy5zZXREaXJlY3Rpb24oIlNXLU5FIik7YnJlYWs7Y2FzZSJORS1TVyI6dGhpcy5zZXREaXJlY3Rpb24oIlNFLU5XIik7YnJlYWs7Y2FzZSJTRS1OVyI6dGhpcy5zZXREaXJl''@;'; put 'put ''Y3Rpb24oIk5FLVNXIik7YnJlYWs7Y2FzZSJTVy1ORSI6dGhpcy5zZXREaXJlY3Rpb24oIk5XLVNFIil9fWZsaXBEaXJlY3Rpb25Ib3Jpem9udGFsbHkoKXtzd2l0Y2godGhpcy5nZXREaXJlY3Rpb24oKSl7Y2FzZSJOVy1TRSI6dGhpcy5zZXREaXJlY3Rpb24oIk5FLVNXIik7YnJlYWs7Y2Fz''@;'; put 'put ''ZSJORS1TVyI6dGhpcy5zZXREaXJlY3Rpb24oIk5XLVNFIik7YnJlYWs7Y2FzZSJTRS1OVyI6dGhpcy5zZXREaXJlY3Rpb24oIlNXLU5FIik7YnJlYWs7Y2FzZSJTVy1ORSI6dGhpcy5zZXREaXJlY3Rpb24oIlNFLU5XIil9fWdldFRvcFN0YXJ0Q29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0''@;'; put 'put ''ZUNlbGxDb29yZHMoTWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6ZSgpfWdldFRvcExlZnRDb3JuZXIoKXtyZXR1cm4gWmgoQjEsdGhpcyk/dGhpcy5nZXRUb3BFbmRDb3JuZXIoKTp0aGlzLmdl''@;'; put 'put ''dFRvcFN0YXJ0Q29ybmVyKCl9Z2V0Qm90dG9tRW5kQ29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksTWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpLm5vcm1hbGl6ZSgpfWdldEJvdHRvbVJp''@;'; put 'put ''Z2h0Q29ybmVyKCl7cmV0dXJuIFpoKEIxLHRoaXMpP3RoaXMuZ2V0Qm90dG9tU3RhcnRDb3JuZXIoKTp0aGlzLmdldEJvdHRvbUVuZENvcm5lcigpfWdldFRvcEVuZENvcm5lcigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5y''@;'; put 'put ''b3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX1nZXRUb3BSaWdodENvcm5lcigpe3JldHVybiBaaChCMSx0aGlzKT90aGlzLmdldFRvcFN0YXJ0Q29ybmVyKCk6dGhpcy5nZXRUb3BFbmRDb3JuZXIoKX1nZXRCb3R0b21TdGFydENvcm5lcigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKS5ub3JtYWxpemUoKX1nZXRCb3R0b21MZWZ0Q29ybmVyKCl7cmV0dXJuIFpoKEIxLHRoaXMpP3RoaXMuZ2V0Qm90''@;'; put 'put ''dG9tRW5kQ29ybmVyKCk6dGhpcy5nZXRCb3R0b21TdGFydENvcm5lcigpfWdldE91dGVyVG9wU3RhcnRDb3JuZXIoKXtyZXR1cm4gdGhpcy5fY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbih0aGlzLmZyb20ucm93LHRoaXMudG8ucm93KSxNYXRoLm1pbih0aGlzLmZyb20uY29sLHRoaXMudG8u''@;'; put 'put ''Y29sKSl9Z2V0T3V0ZXJUb3BMZWZ0Q29ybmVyKCl7cmV0dXJuIFpoKEIxLHRoaXMpP3RoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKTp0aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKX1nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1h''@;'; put 'put ''dGgubWF4KHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKX1nZXRPdXRlckJvdHRvbVJpZ2h0Q29ybmVyKCl7cmV0dXJuIFpoKEIxLHRoaXMpP3RoaXMuZ2V0T3V0ZXJCb3R0b21TdGFydENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJC''@;'; put 'put ''b3R0b21FbmRDb3JuZXIoKX1nZXRPdXRlclRvcEVuZENvcm5lcigpe3JldHVybiB0aGlzLl9jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWluKHRoaXMuZnJvbS5yb3csdGhpcy50by5yb3cpLE1hdGgubWF4KHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpKX1nZXRPdXRlclRvcFJpZ2h0Q29ybmVy''@;'; put 'put ''KCl7cmV0dXJuIFpoKEIxLHRoaXMpP3RoaXMuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpOnRoaXMuZ2V0T3V0ZXJUb3BFbmRDb3JuZXIoKX1nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoTWF0aC5tYXgodGhpcy5mcm9tLnJvdyx0aGlz''@;'; put 'put ''LnRvLnJvdyksTWF0aC5taW4odGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCkpfWdldE91dGVyQm90dG9tTGVmdENvcm5lcigpe3JldHVybiBaaChCMSx0aGlzKT90aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk6dGhpcy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCl9aXNDb3JuZXIo''@;'; put 'put ''Yyl7cmV0dXJuIGMuaXNFcXVhbCh0aGlzLmdldE91dGVyVG9wTGVmdENvcm5lcigpKXx8Yy5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJUb3BSaWdodENvcm5lcigpKXx8Yy5pc0VxdWFsKHRoaXMuZ2V0T3V0ZXJCb3R0b21MZWZ0Q29ybmVyKCkpfHxjLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRv''@;'; put 'put ''bVJpZ2h0Q29ybmVyKCkpfWdldE9wcG9zaXRlQ29ybmVyKGMpe3JldHVybiBjIGluc3RhbmNlb2YgUkwmJihjLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbUVuZENvcm5lcigpKT90aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKTpjLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcFN0YXJ0''@;'; put 'put ''Q29ybmVyKCkpP3RoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKTpjLmlzRXF1YWwodGhpcy5nZXRPdXRlclRvcEVuZENvcm5lcigpKT90aGlzLmdldE91dGVyQm90dG9tU3RhcnRDb3JuZXIoKTpjLmlzRXF1YWwodGhpcy5nZXRPdXRlckJvdHRvbVN0YXJ0Q29ybmVyKCkpP3RoaXMuZ2V0''@;'; put 'put ''T3V0ZXJUb3BFbmRDb3JuZXIoKTp2b2lkIDApfWdldEJvcmRlcnNTaGFyZWRXaXRoKGMpe2lmKCF0aGlzLmluY2x1ZGVzUmFuZ2UoYykpcmV0dXJuW107Y29uc3QgYV90b3A9TWF0aC5taW4odGhpcy5mcm9tLnJvdyx0aGlzLnRvLnJvdyksYV9ib3R0b209TWF0aC5tYXgodGhpcy5mcm9tLnJv''@;'; put 'put ''dyx0aGlzLnRvLnJvdyksYV9sZWZ0PU1hdGgubWluKHRoaXMuZnJvbS5jb2wsdGhpcy50by5jb2wpLGFfcmlnaHQ9TWF0aC5tYXgodGhpcy5mcm9tLmNvbCx0aGlzLnRvLmNvbCksZF90b3A9TWF0aC5taW4oYy5mcm9tLnJvdyxjLnRvLnJvdyksZF9ib3R0b209TWF0aC5tYXgoYy5mcm9tLnJv''@;'; put 'put ''dyxjLnRvLnJvdyksZF9sZWZ0PU1hdGgubWluKGMuZnJvbS5jb2wsYy50by5jb2wpLGRfcmlnaHQ9TWF0aC5tYXgoYy5mcm9tLmNvbCxjLnRvLmNvbCksaD1bXTtyZXR1cm4gYV90b3A9PT1kX3RvcCYmaC5wdXNoKCJ0b3AiKSxhX3JpZ2h0PT09ZF9yaWdodCYmaC5wdXNoKFpoKEIxLHRoaXMp''@;'; put 'put ''PyJsZWZ0IjoicmlnaHQiKSxhX2JvdHRvbT09PWRfYm90dG9tJiZoLnB1c2goImJvdHRvbSIpLGFfbGVmdD09PWRfbGVmdCYmaC5wdXNoKFpoKEIxLHRoaXMpPyJyaWdodCI6ImxlZnQiKSxofWdldElubmVyKCl7Y29uc3QgYz10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxhPXRoaXMu''@;'; put 'put ''Z2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKSxkPVtdO2ZvcihsZXQgaD1jLnJvdztoPD1hLnJvdztoKyspZm9yKGxldCBmPWMuY29sO2Y8PWEuY29sO2YrKykodGhpcy5mcm9tLnJvdyE9PWh8fHRoaXMuZnJvbS5jb2whPT1mKSYmKHRoaXMudG8ucm93IT09aHx8dGhpcy50by5jb2whPT1mKSYm''@;'; put 'put ''ZC5wdXNoKHRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaCxmKSk7cmV0dXJuIGR9Z2V0QWxsKCl7Y29uc3QgYz10aGlzLmdldE91dGVyVG9wU3RhcnRDb3JuZXIoKSxhPXRoaXMuZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKSxkPVtdO2ZvcihsZXQgaD1jLnJvdztoPD1hLnJvdztoKyspZm9yKGxl''@;'; put 'put ''dCBmPWMuY29sO2Y8PWEuY29sO2YrKylkLnB1c2goYy5yb3c9PT1oJiZjLmNvbD09PWY/YzphLnJvdz09PWgmJmEuY29sPT09Zj9hOnRoaXMuX2NyZWF0ZUNlbGxDb29yZHMoaCxmKSk7cmV0dXJuIGR9Zm9yQWxsKGMpe2NvbnN0IGE9dGhpcy5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksZD10''@;'; put 'put ''aGlzLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCk7Zm9yKGxldCBoPWEucm93O2g8PWQucm93O2grKylmb3IobGV0IGY9YS5jb2w7Zjw9ZC5jb2w7ZisrKWlmKCExPT09YyhoLGYpKXJldHVybn1jbG9uZSgpe3JldHVybiBuZXcgZUcodGhpcy5oaWdobGlnaHQsdGhpcy5mcm9tLHRoaXMudG8s''@;'; put 'put ''WmgoQjEsdGhpcykpfXRvT2JqZWN0KCl7cmV0dXJue2Zyb206dGhpcy5mcm9tLnRvT2JqZWN0KCksdG86dGhpcy50by50b09iamVjdCgpfX1fY3JlYXRlQ2VsbENvb3JkcyhjLGEpe3JldHVybiBuZXcgUkwoYyxhLFpoKEIxLHRoaXMpKX19Y29uc3QgdEc9ZUc7ZnVuY3Rpb24gY2YobCxjLGEp''@;'; put 'put ''e3JldHVybiBjPWZ1bmN0aW9uIEVHZShsKXt2YXIgYz1mdW5jdGlvbiBUR2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmpl''@;'; put 'put ''Y3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2Yg''@;'; put 'put ''Yz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3Mgbkd7Z2V0IGV2ZW50TWFuYWdlcigpe3JldHVybiBuZXcgemgodGhpcyl9Y29uc3RydWN0''@;'; put 'put ''b3IoYyxhKXtjZih0aGlzLCJ3dFRhYmxlIix2b2lkIDApLGNmKHRoaXMsInd0U2Nyb2xsIix2b2lkIDApLGNmKHRoaXMsInd0Vmlld3BvcnQiLHZvaWQgMCksY2YodGhpcywid3RPdmVybGF5cyIsdm9pZCAwKSxjZih0aGlzLCJzZWxlY3Rpb25NYW5hZ2VyIix2b2lkIDApLGNmKHRoaXMsInd0''@;'; put 'put ''RXZlbnQiLHZvaWQgMCksY2YodGhpcywiZ3VpZCIsYHd0XyR7clcoKX1gKSxjZih0aGlzLCJkcmF3SW50ZXJydXB0ZWQiLCExKSxjZih0aGlzLCJkcmF3biIsITEpLGNmKHRoaXMsImRvbUJpbmRpbmdzIix2b2lkIDApLGNmKHRoaXMsInd0U2V0dGluZ3MiLHZvaWQgMCksdGhpcy5kb21CaW5k''@;'; put 'put ''aW5ncz17cm9vdFRhYmxlOmMscm9vdERvY3VtZW50OmMub3duZXJEb2N1bWVudCxyb290V2luZG93OmMub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld30sdGhpcy53dFNldHRpbmdzPWEsdGhpcy53dFNjcm9sbD1uZXcgbUdlKHRoaXMuY3JlYXRlU2Nyb2xsRGFvKCkpfWZpbmRPcmlnaW5hbEhl''@;'; put 'put ''YWRlcnMoKXtjb25zdCBjPVtdO2lmKHRoaXMud3RUYWJsZS5USEVBRC5jaGlsZE5vZGVzLmxlbmd0aCYmdGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgpe2ZvcihsZXQgYT0wLGQ9dGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGRO''@;'; put 'put ''b2Rlcy5sZW5ndGg7YTxkO2ErKyljLnB1c2godGhpcy53dFRhYmxlLlRIRUFELmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1thXS5pbm5lckhUTUwpO3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RofHx0aGlzLnd0U2V0dGluZ3MudXBkYXRlKCJjb2x1''@;'; put 'put ''bW5IZWFkZXJzIixbZnVuY3Rpb24oYSxkKXtPbShkLGNbYV0pfV0pfX1jcmVhdGVDZWxsQ29vcmRzKGMsYSl7cmV0dXJuIG5ldyBSTChjLGEsdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKSl9Y3JlYXRlQ2VsbFJhbmdlKGMsYSxkKXtyZXR1cm4gbmV3IHRHKGMsYSxkLHRo''@;'; put 'put ''aXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2RlIikpfWRyYXcoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRyYXdJbnRlcnJ1cHRlZD0hMSx0aGlzLnd0VGFibGUuaXNWaXNpYmxlKCk/dGhp''@;'; put 'put ''cy53dFRhYmxlLmRyYXcoYyk6dGhpcy5kcmF3SW50ZXJydXB0ZWQ9ITAsdGhpc31nZXRDZWxsKGMpe2lmKCEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSkpcmV0dXJuIHRoaXMud3RUYWJsZS5nZXRDZWxsKGMpO2NvbnN0IGQ9dGhpcy53''@;'; put 'put ''dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c1RvcCIpLGY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLHY9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29s''@;'; put 'put ''dW1uc1N0YXJ0Iik7aWYoYy5yb3c8aCYmYy5jb2w8dilyZXR1cm4gdGhpcy53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoYyk7aWYoYy5yb3c8aClyZXR1cm4gdGhpcy53dE92ZXJsYXlzLnRvcE92ZXJsYXkuY2xvbmUud3RUYWJs''@;'; put 'put ''ZS5nZXRDZWxsKGMpO2lmKGMuY29sPHYmJmMucm93Pj1kLWYpe2lmKHRoaXMud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUpcmV0dXJuIHRoaXMud3RPdmVybGF5cy5i''@;'; put 'put ''b3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDZWxsKGMpfWVsc2V7aWYoYy5jb2w8dilyZXR1cm4gdGhpcy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoYyk7aWYoYy5yb3c8ZCYmYy5yb3c+PWQtZiYmdGhp''@;'; put 'put ''cy53dE92ZXJsYXlzLmJvdHRvbU92ZXJsYXkmJnRoaXMud3RPdmVybGF5cy5ib3R0b21PdmVybGF5LmNsb25lKXJldHVybiB0aGlzLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmdldENlbGwoYyl9cmV0dXJuIHRoaXMud3RUYWJsZS5nZXRDZWxsKGMpfXNjcm9sbFZp''@;'; put 'put ''ZXdwb3J0KGMsYSxkLGgsZil7cmV0dXJuIShjLmNvbDwwfHxjLnJvdzwwKSYmdGhpcy53dFNjcm9sbC5zY3JvbGxWaWV3cG9ydChjLGEsZCxoLGYpfXNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGMsYSxkKXtyZXR1cm4hKGM8MCkmJnRoaXMud3RTY3JvbGwuc2Nyb2xsVmlld3BvcnRIb3Jp''@;'; put 'put ''em9udGFsbHkoYyxhLGQpfXNjcm9sbFZpZXdwb3J0VmVydGljYWxseShjLGEsZCl7cmV0dXJuIShjPDApJiZ0aGlzLnd0U2Nyb2xsLnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShjLGEsZCl9Z2V0Vmlld3BvcnQoKXtyZXR1cm5bdGhpcy53dFRhYmxlLmdldEZpcnN0VmlzaWJsZVJvdygpLHRo''@;'; put 'put ''aXMud3RUYWJsZS5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSx0aGlzLnd0VGFibGUuZ2V0TGFzdFZpc2libGVSb3coKSx0aGlzLnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKV19ZGVzdHJveSgpe3RoaXMud3RPdmVybGF5cy5kZXN0cm95KCksdGhpcy53dEV2ZW50LmRlc3Ryb3koKX1j''@;'; put 'put ''cmVhdGVTY3JvbGxEYW8oKXtjb25zdCBjPXRoaXM7cmV0dXJue2dldCBkcmF3bigpe3JldHVybiBjLmRyYXdufSxnZXQgdG9wT3ZlcmxheSgpe3JldHVybiBjLnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0YXJ0T3ZlcmxheSgpe3JldHVybiBjLnd0T3ZlcmxheXMuaW5saW5l''@;'; put 'put ''U3RhcnRPdmVybGF5fSxnZXQgd3RUYWJsZSgpe3JldHVybiBjLnd0VGFibGV9LGdldCB3dFZpZXdwb3J0KCl7cmV0dXJuIGMud3RWaWV3cG9ydH0sZ2V0IHd0U2V0dGluZ3MoKXtyZXR1cm4gYy53dFNldHRpbmdzfSxnZXQgcm9vdFdpbmRvdygpe3JldHVybiBjLmRvbUJpbmRpbmdzLnJvb3RX''@;'; put 'put ''aW5kb3d9LGdldCB0b3RhbFJvd3MoKXtyZXR1cm4gYy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpfSxnZXQgdG90YWxDb2x1bW5zKCl7cmV0dXJuIGMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKX0sZ2V0IGZpeGVkUm93c1RvcCgpe3JldHVybiBjLnd0''@;'; put 'put ''U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIil9LGdldCBmaXhlZFJvd3NCb3R0b20oKXtyZXR1cm4gYy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpfSxnZXQgZml4ZWRDb2x1bW5zU3RhcnQoKXtyZXR1cm4gYy53dFNldHRpbmdzLmdldFNldHRpbmco''@;'; put 'put ''ImZpeGVkQ29sdW1uc1N0YXJ0Iil9fX1nZXRUYWJsZURhbygpe2NvbnN0IGM9dGhpcztyZXR1cm57Z2V0IHdvdCgpe3JldHVybiBjfSxnZXQgcGFyZW50VGFibGVPZmZzZXQoKXtyZXR1cm4gYy5jbG9uZVNvdXJjZS53dFRhYmxlLnRhYmxlT2Zmc2V0fSxnZXQgY2xvbmVTb3VyY2UoKXtyZXR1''@;'; put 'put ''cm4gYy5jbG9uZVNvdXJjZX0sZ2V0IHdvcmtzcGFjZVdpZHRoKCl7cmV0dXJuIGMud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpfSxnZXQgd3RWaWV3cG9ydCgpe3JldHVybiBjLnd0Vmlld3BvcnR9LGdldCB3dE92ZXJsYXlzKCl7cmV0dXJuIGMud3RPdmVybGF5c30sZ2V0IHNlbGVj''@;'; put 'put ''dGlvbk1hbmFnZXIoKXtyZXR1cm4gYy5zZWxlY3Rpb25NYW5hZ2VyfSxnZXQgZHJhd24oKXtyZXR1cm4gYy5kcmF3bn0sc2V0IGRyYXduKGEpe2MuZHJhd249YX0sZ2V0IHd0VGFibGUoKXtyZXR1cm4gYy53dFRhYmxlfSxnZXQgc3RhcnRDb2x1bW5SZW5kZXJlZCgpe3JldHVybiBjLnd0Vmll''@;'; put 'put ''d3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRDb2x1bW59LGdldCBzdGFydENvbHVtblZpc2libGUoKXtyZXR1cm4gYy53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvci5zdGFydENvbHVtbn0sZ2V0IHN0YXJ0Q29sdW1uUGFydGlhbGx5VmlzaWJsZSgpe3JldHVy''@;'; put 'put ''biBjLnd0Vmlld3BvcnQuY29sdW1uc1BhcnRpYWxseVZpc2libGVDYWxjdWxhdG9yLnN0YXJ0Q29sdW1ufSxnZXQgZW5kQ29sdW1uUmVuZGVyZWQoKXtyZXR1cm4gYy53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLmVuZENvbHVtbn0sZ2V0IGVuZENvbHVtblZpc2libGUoKXty''@;'; put 'put ''ZXR1cm4gYy53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvci5lbmRDb2x1bW59LGdldCBlbmRDb2x1bW5QYXJ0aWFsbHlWaXNpYmxlKCl7cmV0dXJuIGMud3RWaWV3cG9ydC5jb2x1bW5zUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3IuZW5kQ29sdW1ufSxnZXQgY291bnRDb2x1''@;'; put 'put ''bW5zUmVuZGVyZWQoKXtyZXR1cm4gYy53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLmNvdW50fSxnZXQgY291bnRDb2x1bW5zVmlzaWJsZSgpe3JldHVybiBjLnd0Vmlld3BvcnQuY29sdW1uc1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fSxnZXQgc3RhcnRSb3dSZW5kZXJlZCgp''@;'; put 'put ''e3JldHVybiBjLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRSb3d9LGdldCBzdGFydFJvd1Zpc2libGUoKXtyZXR1cm4gYy53dFZpZXdwb3J0LnJvd3NWaXNpYmxlQ2FsY3VsYXRvci5zdGFydFJvd30sZ2V0IHN0YXJ0Um93UGFydGlhbGx5VmlzaWJsZSgpe3JldHVybiBj''@;'; put 'put ''Lnd0Vmlld3BvcnQucm93c1BhcnRpYWxseVZpc2libGVDYWxjdWxhdG9yLnN0YXJ0Um93fSxnZXQgZW5kUm93UmVuZGVyZWQoKXtyZXR1cm4gYy53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLmVuZFJvd30sZ2V0IGVuZFJvd1Zpc2libGUoKXtyZXR1cm4gYy53dFZpZXdwb3J0LnJv''@;'; put 'put ''d3NWaXNpYmxlQ2FsY3VsYXRvci5lbmRSb3d9LGdldCBlbmRSb3dQYXJ0aWFsbHlWaXNpYmxlKCl7cmV0dXJuIGMud3RWaWV3cG9ydC5yb3dzUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3IuZW5kUm93fSxnZXQgY291bnRSb3dzUmVuZGVyZWQoKXtyZXR1cm4gYy53dFZpZXdwb3J0LnJvd3NS''@;'; put 'put ''ZW5kZXJDYWxjdWxhdG9yLmNvdW50fSxnZXQgY291bnRSb3dzVmlzaWJsZSgpe3JldHVybiBjLnd0Vmlld3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yLmNvdW50fSxnZXQgY29sdW1uSGVhZGVycygpe3JldHVybiBjLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpfSxn''@;'; put 'put ''ZXQgcm93SGVhZGVycygpe3JldHVybiBjLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicm93SGVhZGVycyIpfX19fWZ1bmN0aW9uIFNkZShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24ga0dlKGwpe3ZhciBjPWZ1bmN0aW9uIEFHZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJu''@;'; put 'put ''IGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUg''@;'; put 'put ''dmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6''@;'; put 'put ''ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBER2UgZXh0ZW5kcyBuR3tjb25zdHJ1Y3RvcihjLGEsZCl7c3VwZXIoYyxhKSxTZGUodGhpcywiY2xvbmVTb3VyY2UiLHZvaWQgMCksU2RlKHRoaXMsImNsb25lT3ZlcmxheSIsdm9pZCAwKTtjb25zdCBoPXRoaXMud3RTZXR0aW5ncy5n''@;'; put 'put ''ZXRTZXR0aW5nKCJmYWNhZGUiLHRoaXMpO3RoaXMuY2xvbmVTb3VyY2U9ZC5zb3VyY2UsdGhpcy5jbG9uZU92ZXJsYXk9ZC5vdmVybGF5LHRoaXMud3RUYWJsZT10aGlzLmNsb25lT3ZlcmxheS5jcmVhdGVUYWJsZSh0aGlzLmdldFRhYmxlRGFvKCksaCx0aGlzLmRvbUJpbmRpbmdzLHRoaXMu''@;'; put 'put ''d3RTZXR0aW5ncyksdGhpcy53dFZpZXdwb3J0PWQudmlld3BvcnQsdGhpcy5zZWxlY3Rpb25NYW5hZ2VyPWQuc2VsZWN0aW9uTWFuYWdlcix0aGlzLnd0RXZlbnQ9bmV3IGlkZShoLHRoaXMuZG9tQmluZGluZ3MsdGhpcy53dFNldHRpbmdzLHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMud3RUYWJs''@;'; put 'put ''ZSx0aGlzLnNlbGVjdGlvbk1hbmFnZXIsZC5ldmVudCksdGhpcy5maW5kT3JpZ2luYWxIZWFkZXJzKCl9fWNsYXNzIGd4e2NvbnN0cnVjdG9yKGMsYSxkLGgsZil7KGZ1bmN0aW9uIElHZShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gUkdlKGwpe3ZhciBjPWZ1bmN0aW9uIExHZShsLGMpe2lm''@;'; put 'put ''KCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9Qcmlt''@;'; put 'put ''aXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVl''@;'; put 'put ''OmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0pKHRoaXMsInd0U2V0dGluZ3MiLG51bGwpLEkzKHRoaXMsIndvdCIsYyx7d3JpdGFibGU6ITF9KSx0aGlzLmRvbUJpbmRpbmdzPWYsdGhpcy5mYWNhZGVHZXR0ZXI9YSx0aGlzLnd0U2V0dGlu''@;'; put 'put ''Z3M9aDtjb25zdHtUQUJMRTp2LGhpZGVyOlMsc3ByZWFkZXI6Vixob2xkZXI6USx3dFJvb3RFbGVtZW50OmRlfT10aGlzLndvdC53dFRhYmxlO3RoaXMuaW5zdGFuY2U9dGhpcy53b3QsdGhpcy50eXBlPWQsdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD1udWxsLHRoaXMuVEFCTEU9''@;'; put 'put ''dix0aGlzLmhpZGVyPVMsdGhpcy5zcHJlYWRlcj1WLHRoaXMuaG9sZGVyPVEsdGhpcy53dFJvb3RFbGVtZW50PWRlLHRoaXMudHJpbW1pbmdDb250YWluZXI9WTgodGhpcy5oaWRlci5wYXJlbnROb2RlLnBhcmVudE5vZGUpLHRoaXMubmVlZEZ1bGxSZW5kZXI9dGhpcy5zaG91bGRCZVJlbmRl''@;'; put 'put ''cmVkKCksdGhpcy5jbG9uZT10aGlzLm1ha2VDbG9uZSgpfWhhc1JlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpe3JldHVybiB0aGlzLm5lZWRGdWxsUmVuZGVyIT09dGhpcy5zaG91bGRCZVJlbmRlcmVkKCl9dXBkYXRlU3RhdGVPZlJlbmRlcmluZyhjKXsiYmVmb3JlIj09PWMmJnRoaXMuc2hvdWxk''@;'; put 'put ''QmVSZW5kZXJlZCgpP3RoaXMubmVlZEZ1bGxSZW5kZXI9ITA6ImFmdGVyIj09PWMmJiF0aGlzLnNob3VsZEJlUmVuZGVyZWQoKSYmKHRoaXMubmVlZEZ1bGxSZW5kZXI9ITEpfXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1cm4hMH11cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpe3RoaXMudHJpbW1p''@;'; put 'put ''bmdDb250YWluZXI9WTgodGhpcy5oaWRlci5wYXJlbnROb2RlLnBhcmVudE5vZGUpfXVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudCgpe2NvbnN0e3d0VGFibGU6Y309dGhpcy53b3Qse3Jvb3RXaW5kb3c6YX09dGhpcy5kb21CaW5kaW5nczt0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVt''@;'; put 'put ''ZW50PSJoaWRkZW4iPT09YS5nZXRDb21wdXRlZFN0eWxlKGMud3RSb290RWxlbWVudC5wYXJlbnROb2RlKS5nZXRQcm9wZXJ0eVZhbHVlKCJvdmVyZmxvdyIpP3RoaXMud290Lnd0VGFibGUuaG9sZGVyOkpNKGMuVEFCTEUpfWdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKGMsYSxkKXtpZighMT09''@;'; put 'put ''PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuY29udGFpbnMoYykpcmV0dXJuIHZvaWQgaWwoYFRoZSBwcm92aWRlZCBlbGVtZW50IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSAke3RoaXMudHlwZX0gb3ZlcmxheWApO2NvbnN0IGg9dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRo''@;'; put 'put ''aXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyxmPWQ8dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iiksdj1hPHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSxTPWE+PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJv''@;'; put 'put ''d3MiKS10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksVj10aGlzLmNsb25lLnd0VGFibGUuc3ByZWFkZXIsUT17c3RhcnQ6dGhpcy5nZXRSZWxhdGl2ZVN0YXJ0UG9zaXRpb24oViksdG9wOlYub2Zmc2V0VG9wfSxkZT17c3RhcnQ6dGhpcy5nZXRSZWxhdGl2''@;'; put 'put ''ZVN0YXJ0UG9zaXRpb24oYyksdG9wOmMub2Zmc2V0VG9wfTtsZXQgcGU9bnVsbDtyZXR1cm4gcGU9aD90aGlzLmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uV2l0aGluV2luZG93KHYsZixkZSxRKTp0aGlzLmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uV2l0aGluSG9sZGVyKHYsUyxmLGRlLFEpLHBl''@;'; put 'put ''fWdldFJlbGF0aXZlU3RhcnRQb3NpdGlvbihjKXtyZXR1cm4gdGhpcy5pc1J0bCgpP2Mub2Zmc2V0UGFyZW50Lm9mZnNldFdpZHRoLWMub2Zmc2V0TGVmdC1jLm9mZnNldFdpZHRoOmMub2Zmc2V0TGVmdH1nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbldpdGhpbldpbmRvdyhjLGEsZCxoKXtjb25z''@;'; put 'put ''dCBmPXRoaXMud290Lnd0VGFibGUud3RSb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgdj0wLFM9MDtpZihhKXtsZXQgVj1mLmxlZnQ7dGhpcy5pc1J0bCgpJiYoVj10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3cuaW5uZXJXaWR0aC0oZi5sZWZ0K2Yud2lkdGgrRXUo''@;'; put 'put ''KSkpLHY9Vjw9MD8tMSpWOjB9ZWxzZSB2PWguc3RhcnQ7cmV0dXJuIFM9Yz90aGlzLmNsb25lLnd0VGFibGUuVEFCTEUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLWYudG9wOmgudG9wLHtzdGFydDpkLnN0YXJ0K3YsdG9wOmQudG9wK1N9fWdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uV2l0''@;'; put 'put ''aGluSG9sZGVyKGMsYSxkLGgsZil7Y29uc3Qgdl9ob3Jpem9udGFsPXRoaXMud290Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCksdl92ZXJ0aWNhbD10aGlzLndvdC53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0U2Nyb2xsUG9zaXRpb24oKTtsZXQg''@;'; put 'put ''Uz0wLFY9MDtpZihkfHwoUz12X2hvcml6b250YWwtZi5zdGFydCksYSl7Y29uc3QgUT10aGlzLndvdC53dFRhYmxlLnd0Um9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Vj0tMSp0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK1Eu''@;'; put 'put ''dG9wfWVsc2UgY3x8KFY9dl92ZXJ0aWNhbC1mLnRvcCk7cmV0dXJue3N0YXJ0Omguc3RhcnQtUyx0b3A6aC50b3AtVn19bWFrZUNsb25lKCl7aWYoLTE9PT1uR2UuaW5kZXhPZih0aGlzLnR5cGUpKXRocm93IG5ldyBFcnJvcihgQ2xvbmUgdHlwZSAiJHt0aGlzLnR5cGV9IiBpcyBub3Qgc3Vw''@;'; put 'put ''cG9ydGVkLmApO2NvbnN0e3d0VGFibGU6Yyx3dFNldHRpbmdzOmF9PXRoaXMud290LHtyb290RG9jdW1lbnQ6ZCxyb290V2luZG93Omh9PXRoaXMuZG9tQmluZGluZ3MsZj1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHY9ZC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLFM9Yy53dFJvb3RFbGVtZW50''@;'; put 'put ''LnBhcmVudE5vZGU7Zi5jbGFzc05hbWU9YCR7ckdlLmdldCh0aGlzLnR5cGUpfSBoYW5kc29udGFibGVgLGYuc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMuaXNSdGwoKT8icnRsIjoibHRyIiksZi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGYuc3R5bGUudG9wPTAsZi5zdHlsZS5vdmVyZmxv''@;'; put 'put ''dz0idmlzaWJsZSIsdGhpcy5pc1J0bCgpP2Yuc3R5bGUucmlnaHQ9MDpmLnN0eWxlLmxlZnQ9MCxhLmdldFNldHRpbmcoImFyaWFUYWdzIikmJlZvKGYsW0EzKCldKSx2LmNsYXNzTmFtZT1jLlRBQkxFLmNsYXNzTmFtZSxjLlRBQkxFLmdldEF0dHJpYnV0ZSgicm9sZSIpJiZ2LnNldEF0dHJp''@;'; put 'put ''YnV0ZSgicm9sZSIsYy5UQUJMRS5nZXRBdHRyaWJ1dGUoInJvbGUiKSksZi5hcHBlbmRDaGlsZCh2KSxTLmFwcGVuZENoaWxkKGYpO2NvbnN0IFE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVt''@;'; put 'put ''ZW50PSEwPT09UXx8Imhvcml6b250YWwiPT09USYmdGhpcy50eXBlPT09WDh8fCJ2ZXJ0aWNhbCI9PT1RJiZ0aGlzLnR5cGU9PT1KOD9oOiJoaWRkZW4iPT09aC5nZXRDb21wdXRlZFN0eWxlKFMpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik/Yy5ob2xkZXI6Sk0oYy5UQUJMRSksbmV3''@;'; put 'put ''IERHZSh2LHRoaXMud3RTZXR0aW5ncyx7c291cmNlOnRoaXMud290LG92ZXJsYXk6dGhpcyx2aWV3cG9ydDp0aGlzLndvdC53dFZpZXdwb3J0LGV2ZW50OnRoaXMud290Lnd0RXZlbnQsc2VsZWN0aW9uTWFuYWdlcjp0aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyfSl9cmVmcmVzaCgpe3RoaXMu''@;'; put 'put ''bmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmUuZHJhdyhhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdKX1yZXNldCgpe2NvbnN0IGM9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlcjtbYy5zdHlsZSx0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIu''@;'; put 'put ''c3R5bGUsYy5wYXJlbnROb2RlLnN0eWxlXS5mb3JFYWNoKHY9Pnt2LndpZHRoPSIiLHYuaGVpZ2h0PSIifSl9aXNSdGwoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJ0bE1vZGUiKX1kZXN0cm95KCl7dGhpcy5jbG9uZS5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX1jb25z''@;'; put 'put ''dCByRz1PYmplY3QuZnJlZXplKHt3aWR0aDoiNnB4IixoZWlnaHQ6IjZweCIsYm9yZGVyV2lkdGg6IjFweCIsYm9yZGVyU3R5bGU6InNvbGlkIixib3JkZXJDb2xvcjoiI0ZGRiJ9KTtjbGFzcyBOR2UgZXh0ZW5kcyBneHtjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEsWDgsZCxoKSxm''@;'; put 'put ''dW5jdGlvbiBPR2UobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFBHZShsKXt2YXIgYz1mdW5jdGlvbiBGR2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVy''@;'; put 'put ''biJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KHRoaXMsImNhY2hlZEZpeGVkUm93c1RvcCIsLTEpLHRoaXMuY2Fj''@;'; put 'put ''aGVkRml4ZWRSb3dzVG9wPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKX1jcmVhdGVUYWJsZSgpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGMpLGQ9MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3JldHVybiBuZXcgY0dlKC4uLmEp''@;'; put 'put ''fXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKX1yZXNldEZpeGVkUG9zaXRpb24oKXtpZighdGhpcy5uZWVkRnVsbFJlbmRlcnx8IXRoaXMuc2hvdWxkQmVSZW5kZXJlZCgpfHwhdGhpcy53b3Qud3RU''@;'; put 'put ''YWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4hMTtjb25zdCBjPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSx7cm9vdFdpbmRvdzphfT10aGlzLmRvbUJpbmRpbmdzLGQ9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2xldCBoPTAs''@;'; put 'put ''Zj0hMTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09YXx8ZCYmInZlcnRpY2FsIj09PWQpaD10aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksZXgoYyk7ZWxzZXtjb25zdHt3dFRhYmxlOlN9PXRoaXMud290LFY9Uy5oaWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtmPU1hdGguY2VpbChW''@;'; put 'put ''LmJvdHRvbSk9PT1jLm9mZnNldEhlaWdodCxoPXRoaXMuZ2V0T3ZlcmxheU9mZnNldCgpLG5MKGMsIjBweCIsYCR7aH1weGApfWNvbnN0IHY9dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24oaCxmKTtyZXR1cm4gdGhpcy5hZGp1c3RFbGVtZW50c1NpemUoKSx2fXNldFNjcm9sbFBv''@;'; put 'put ''c2l0aW9uKGMpe2NvbnN0IGE9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93O2xldCBkPSExO3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09YSYmYS5zY3JvbGxZIT09Yz8oYS5zY3JvbGxUbyhlTChhKSxjKSxkPSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVF''@;'; put 'put ''bGVtZW50LnNjcm9sbFRvcCE9PWMmJih0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcD1jLGQ9ITApLGR9b25TY3JvbGwoKXt0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25TY3JvbGxIb3Jpem9udGFsbHkiKX1zdW1DZWxsU2l6ZXMoYyxhKXtjb25zdCBkPXRo''@;'; put 'put ''aXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Um93SGVpZ2h0Iik7bGV0IGg9YyxmPTA7Zm9yKDtoPGE7KXtjb25zdCB2PXRoaXMud290Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KGgpO2YrPXZvaWQgMD09PXY/ZDp2LGgrPTF9cmV0dXJuIGZ9YWRqdXN0RWxlbWVudHNTaXplKCl7dGhp''@;'; put 'put ''cy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLHRoaXMubmVlZEZ1bGxSZW5kZXImJih0aGlzLmFkanVzdFJvb3RFbGVtZW50U2l6ZSgpLHRoaXMuYWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpKX1hZGp1c3RSb290RWxlbWVudFNpemUoKXtjb25zdHt3dFRhYmxlOmN9PXRoaXMud290LHtyb290''@;'; put 'put ''RG9jdW1lbnQ6YSxyb290V2luZG93OmR9PXRoaXMuZG9tQmluZGluZ3MsaD1FdShhKSx2PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZS5zdHlsZSxTPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFp''@;'; put 'put ''bmVyIT09ZHx8Imhvcml6b250YWwiPT09Uyl7bGV0IFE9dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRXb3Jrc3BhY2VXaWR0aCgpO3RoaXMud290Lnd0T3ZlcmxheXMuaGFzU2Nyb2xsYmFyUmlnaHQmJihRLT1oKSxRPU1hdGgubWluKFEsYy53dFJvb3RFbGVtZW50LnNjcm9sbFdpZHRoKSx2Lndp''@;'; put 'put ''ZHRoPWAke1F9cHhgfWVsc2Ugdi53aWR0aD0iIjt0aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnN0eWxlLndpZHRoPXYud2lkdGg7bGV0IFY9WmwodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTt0aGlzLndvdC53dFRhYmxlLmhhc0RlZmluZWRTaXplKCl8fChWPTApLHYuaGVpZ2h0PWAke1Z9''@;'; put 'put ''cHhgfWFkanVzdFJvb3RDaGlsZHJlblNpemUoKXtjb25zdHtob2xkZXI6Y309dGhpcy5jbG9uZS53dFRhYmxlLGE9dGhpcy53b3Quc2VsZWN0aW9uTWFuYWdlci5nZXRGb2N1c1NlbGVjdGlvbigpP3BhcnNlSW50KHJHLmhlaWdodCwxMCkvMjowO3RoaXMuY2xvbmUud3RUYWJsZS5oaWRlci5z''@;'; put 'put ''dHlsZS53aWR0aD10aGlzLmhpZGVyLnN0eWxlLndpZHRoLGMuc3R5bGUud2lkdGg9Yy5wYXJlbnROb2RlLnN0eWxlLndpZHRoLGMuc3R5bGUuaGVpZ2h0PWAke3BhcnNlSW50KGMucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQsMTApK2F9cHhgfWFwcGx5VG9ET00oKXtjb25zdCBjPXRoaXMud3RT''@;'; put 'put ''ZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKTtpZigibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbil0aGlzLnNwcmVhZGVyLnN0eWxlLnRvcD1gJHt0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJD''@;'; put 'put ''YWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259cHhgO2Vsc2V7aWYoMCE9PWMpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgdmFsdWUgb2YgdGhlIHJvd3NSZW5kZXJDYWxjdWxhdG9yIik7dGhpcy5zcHJlYWRlci5zdHlsZS50b3A9IjAifXRoaXMuc3ByZWFkZXIuc3R5bGUuYm90dG9tPSIiLHRo''@;'; put 'put ''aXMubmVlZEZ1bGxSZW5kZXImJnRoaXMuc3luY092ZXJsYXlPZmZzZXQoKX1zeW5jT3ZlcmxheU9mZnNldCgpe2NvbnN0IGM9dGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiLHtzcHJlYWRlcjphfT10aGlzLmNsb25lLnd0VGFibGU7YS5zdHlsZVtjXT0ibnVtYmVyIj09dHlwZW9mIHRoaXMu''@;'; put 'put ''d290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbj9gJHt0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259cHhgOiIifXNjcm9sbFRvKGMsYSl7Y29uc3R7d290OmQsd3RTZXR0aW5nczpofT10aGlz''@;'; put 'put ''LHY9KGQuY2xvbmVTb3VyY2U/ZC5jbG9uZVNvdXJjZTpkKS53dFRhYmxlLmhvbGRlcixTPWguZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLFE9MD09PWguZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIikmJlMubGVuZ3RoPjAmJiFZbyh2LnBhcmVudE5vZGUsImlubmVyQm9yZGVyVG9wIik/''@;'; put 'put ''MTowO2xldCBkZT10aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCkscGU9MDtpZihhJiZ0aGlzLndvdC53dFRhYmxlLmdldFJvd0hlaWdodChjKT50aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0SGVpZ2h0KCkmJihhPSExKSxhJiZ2Lm9mZnNldEhlaWdodCE9PXYuY2xpZW50SGVpZ2h0''@;'; put 'put ''JiYocGU9RXUodGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQpKSxhKXtjb25zdCBDZT1oLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLE9lPWguZ2V0U2V0dGluZygidG90YWxSb3dzIik7ZGUrPXRoaXMuc3VtQ2VsbFNpemVzKDAsYysxKSxkZS09ZC53dFZpZXdwb3J0LmdldFZp''@;'; put 'put ''ZXdwb3J0SGVpZ2h0KCktdGhpcy5zdW1DZWxsU2l6ZXMoT2UtQ2UsT2UpLGRlKz0xLGRlKz1RfWVsc2UgZGUrPXRoaXMuc3VtQ2VsbFNpemVzKGguZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksYyk7cmV0dXJuIGRlKz1wZSx3MWUodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCk9''@;'; put 'put ''PT1kZS1RJiZRPjAmJnRoaXMud290Lnd0T3ZlcmxheXMuZXhwYW5kSGlkZXJWZXJ0aWNhbGx5QnkoUSksdGhpcy5zZXRTY3JvbGxQb3NpdGlvbihkZSl9Z2V0VGFibGVQYXJlbnRPZmZzZXQoKXtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PXRoaXMuZG9tQmluZGlu''@;'; put 'put ''Z3Mucm9vdFdpbmRvdz90aGlzLndvdC53dFRhYmxlLmhvbGRlck9mZnNldC50b3A6MH1nZXRTY3JvbGxQb3NpdGlvbigpe3JldHVybiB0TCh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl9Z2V0T3ZlcmxheU9mZnNldCgpe2NvbnN0''@;'; put 'put ''e3Jvb3RXaW5kb3c6Y309dGhpcy5kb21CaW5kaW5ncyxhPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtsZXQgZD0wO2lmKHRoaXMudHJpbW1pbmdDb250YWluZXI9PT1jJiYoIWF8fCJ2ZXJ0aWNhbCIhPT1hKSl7Y29uc3Qgdj10aGlzLndvdC53dFRhYmxl''@;'; put 'put ''LmdldFRvdGFsSGVpZ2h0KCktdGhpcy5jbG9uZS53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCk7ZD1NYXRoLm1heCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLDApLGQ+diYmKGQ9MCl9cmV0dXJuIGR9YWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0''@;'; put 'put ''aW9uKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3R7d3RTZXR0aW5nczpkfT10aGlzLGg9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxmPWQuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksdj0i''@;'; put 'put ''aG9yaXpvbnRhbCI9PT1kLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2Y/bHMoaCwiZW1wdHlDb2x1bW5zIik6bWkoaCwiZW1wdHlDb2x1bW5zIik7bGV0IFM9ITE7aWYoIWEmJiF2KXtjb25zdCBWPWQuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksUT10aGlzLmNhY2hlZEZpeGVk''@;'; put 'put ''Um93c1RvcCE9PVYsZGU9ZC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIik7aWYoKFF8fDA9PT1WKSYmZGUubGVuZ3RoPjApe2NvbnN0IHBlPVlvKGgsImlubmVyQm9yZGVyVG9wIik7dGhpcy5jYWNoZWRGaXhlZFJvd3NUb3A9ZC5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKSxjfHwwPT09''@;'; put 'put ''ZC5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKT8obWkoaCwiaW5uZXJCb3JkZXJUb3AiKSxTPSFwZSk6KGxzKGgsImlubmVyQm9yZGVyVG9wIiksUz1wZSl9fXJldHVybiBTfX1jb25zdCBNZGU9e2dldEZpcnN0UmVuZGVyZWRSb3coKXtjb25zdCBsPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5n''@;'; put 'put ''KCJ0b3RhbFJvd3MiKSxjPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxhPWwtYztyZXR1cm4gMD09PWx8fDA9PT1jPy0xOmE8MD8wOmF9LGdldEZpcnN0VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmdldEZpcnN0UmVuZGVyZWRSb3coKX0sZ2V0Rmlyc3RQ''@;'; put 'put ''YXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RSZW5kZXJlZFJvdygpfSxnZXRMYXN0UmVuZGVyZWRSb3coKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsUm93cyIpLTF9LGdldExhc3RWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0TGFz''@;'; put 'put ''dFJlbmRlcmVkUm93KCl9LGdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuZ2V0TGFzdFJlbmRlcmVkUm93KCl9LGdldFJlbmRlcmVkUm93c0NvdW50KCl7Y29uc3QgbD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7cmV0dXJuIE1hdGgubWlu''@;'; put 'put ''KHRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKSxsKX0sZ2V0VmlzaWJsZVJvd3NDb3VudCgpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkUm93c0NvdW50KCl9LGdldENvbHVtbkhlYWRlcnNDb3VudDooKT0+MH07STMoTWRlLCJNSVhJTl9OQU1FIiwic3RpY2t5''@;'; put 'put ''Um93c0JvdHRvbSIse3dyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KTtjb25zdCB4ZGU9TWRlO2NsYXNzIGlHIGV4dGVuZHMgZmJ7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoYyxhLGQsaCxPMyl9fXJsKGlHLHhkZSkscmwoaUcsWFcpO2NvbnN0IFZHZT1pRztjbGFzcyBVR2UgZXh0ZW5k''@;'; put 'put ''cyBneHtjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEsTzMsZCxoKSxmdW5jdGlvbiBCR2UobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGpHZShsKXt2YXIgYz1mdW5jdGlvbiB6R2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRv''@;'; put 'put ''UHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3Ry''@;'; put 'put ''aW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtj''@;'; put 'put ''XT1hLGx9KHRoaXMsImNhY2hlZEZpeGVkUm93c0JvdHRvbSIsLTEpLHRoaXMuY2FjaGVkRml4ZWRSb3dzQm90dG9tPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKX1jcmVhdGVUYWJsZSgpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5''@;'; put 'put ''KGMpLGQ9MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3JldHVybiBuZXcgVkdlKC4uLmEpfXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlckJvdHRvbU92ZXJsYXkiKX1yZXNldEZpeGVkUG9zaXRpb24oKXtpZighdGhp''@;'; put 'put ''cy5uZWVkRnVsbFJlbmRlcnx8IXRoaXMuc2hvdWxkQmVSZW5kZXJlZCgpfHwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4hMTtjb25zdHtyb290V2luZG93OmN9PXRoaXMuZG9tQmluZGluZ3MsYT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGU7''@;'; put 'put ''YS5zdHlsZS50b3A9IiI7bGV0IGQ9MDtjb25zdCBoPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTt0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09Y3x8aCYmInZlcnRpY2FsIj09PWg/KGQ9dGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLHRoaXMucmVwb3NpdGlv''@;'; put 'put ''bk92ZXJsYXkoKSk6KGQ9dGhpcy5nZXRPdmVybGF5T2Zmc2V0KCksYS5zdHlsZS5ib3R0b209YCR7ZH1weGApO2NvbnN0IGY9dGhpcy5hZGp1c3RIZWFkZXJCb3JkZXJzUG9zaXRpb24oZCk7cmV0dXJuIHRoaXMuYWRqdXN0RWxlbWVudHNTaXplKCksZn1yZXBvc2l0aW9uT3ZlcmxheSgpe2Nv''@;'; put 'put ''bnN0e3d0VGFibGU6Yyx3dFZpZXdwb3J0OmF9PXRoaXMud290LHtyb290RG9jdW1lbnQ6ZH09dGhpcy5kb21CaW5kaW5ncyxoPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZTtsZXQgZj0wO2EuaGFzVmVydGljYWxTY3JvbGwoKXx8KGYrPWEuZ2V0V29ya3NwYWNlSGVpZ2h0''@;'; put 'put ''KCktYy5nZXRUb3RhbEhlaWdodCgpKSxhLmhhc1ZlcnRpY2FsU2Nyb2xsKCkmJmEuaGFzSG9yaXpvbnRhbFNjcm9sbCgpJiYoZis9RXUoZCkpLGguc3R5bGUuYm90dG9tPWAke2Z9cHhgfXNldFNjcm9sbFBvc2l0aW9uKGMpe2NvbnN0e3Jvb3RXaW5kb3c6YX09dGhpcy5kb21CaW5kaW5nczts''@;'; put 'put ''ZXQgZD0hMTtyZXR1cm4gdGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudD09PWE/KGEuc2Nyb2xsVG8oZUwoYSksYyksZD0hMCk6dGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3AhPT1jJiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxU''@;'; put 'put ''b3A9YyxkPSEwKSxkfW9uU2Nyb2xsKCl7dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoIm9uU2Nyb2xsSG9yaXpvbnRhbGx5Iil9c3VtQ2VsbFNpemVzKGMsYSl7Y29uc3R7d3RUYWJsZTpkLHd0U2V0dGluZ3M6aH09dGhpcy53b3QsZj1oLmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQi''@;'; put 'put ''KTtsZXQgdj1jLFM9MDtmb3IoO3Y8YTspe2NvbnN0IFY9ZC5nZXRSb3dIZWlnaHQodik7Uys9dm9pZCAwPT09Vj9mOlYsdis9MX1yZXR1cm4gU31hZGp1c3RFbGVtZW50c1NpemUoKXt0aGlzLnVwZGF0ZVRyaW1taW5nQ29udGFpbmVyKCksdGhpcy5uZWVkRnVsbFJlbmRlciYmKHRoaXMuYWRq''@;'; put 'put ''dXN0Um9vdEVsZW1lbnRTaXplKCksdGhpcy5hZGp1c3RSb290Q2hpbGRyZW5TaXplKCkpfWFkanVzdFJvb3RFbGVtZW50U2l6ZSgpe2NvbnN0e3d0VGFibGU6Yyx3dFZpZXdwb3J0OmF9PXRoaXMud290LHtyb290RG9jdW1lbnQ6ZCxyb290V2luZG93Omh9PXRoaXMuZG9tQmluZGluZ3MsZj1F''@;'; put 'put ''dShkKSxTPXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZS5zdHlsZSxWPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTtpZih0aGlzLnRyaW1taW5nQ29udGFpbmVyIT09aHx8Imhvcml6b250YWwiPT09Vil7bGV0IGRlPWEuZ2V0V29ya3Nw''@;'; put 'put ''YWNlV2lkdGgoKTt0aGlzLndvdC53dE92ZXJsYXlzLmhhc1Njcm9sbGJhclJpZ2h0JiYoZGUtPWYpLGRlPU1hdGgubWluKGRlLGMud3RSb290RWxlbWVudC5zY3JvbGxXaWR0aCksUy53aWR0aD1gJHtkZX1weGB9ZWxzZSBTLndpZHRoPSIiO3RoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIuc3R5''@;'; put 'put ''bGUud2lkdGg9Uy53aWR0aDtsZXQgUT1abCh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3RoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KFE9MCksUy5oZWlnaHQ9YCR7UX1weGB9YWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpe2NvbnN0e2hvbGRlcjpjfT10aGlzLmNsb25lLnd0''@;'; put 'put ''VGFibGU7dGhpcy5jbG9uZS53dFRhYmxlLmhpZGVyLnN0eWxlLndpZHRoPXRoaXMuaGlkZXIuc3R5bGUud2lkdGgsYy5zdHlsZS53aWR0aD1jLnBhcmVudE5vZGUuc3R5bGUud2lkdGgsYy5zdHlsZS5oZWlnaHQ9Yy5wYXJlbnROb2RlLnN0eWxlLmhlaWdodH1hcHBseVRvRE9NKCl7Y29uc3Qg''@;'; put 'put ''Yz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik7aWYoIm51bWJlciI9PXR5cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24pdGhpcy5zcHJlYWRlci5zdHlsZS50b3A9YCR7dGhpcy53b3Qud3RWaWV3cG9ydC5y''@;'; put 'put ''b3dzUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9ufXB4YDtlbHNle2lmKDAhPT1jKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHZhbHVlIG9mIHRoZSByb3dzUmVuZGVyQ2FsY3VsYXRvciIpO3RoaXMuc3ByZWFkZXIuc3R5bGUudG9wPSIwIn10aGlzLnNwcmVhZGVyLnN0eWxlLmJv''@;'; put 'put ''dHRvbT0iIix0aGlzLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLnN5bmNPdmVybGF5T2Zmc2V0KCl9c3luY092ZXJsYXlPZmZzZXQoKXtjb25zdCBjPXRoaXMuaXNSdGwoKT8icmlnaHQiOiJsZWZ0Iix7c3ByZWFkZXI6YX09dGhpcy5jbG9uZS53dFRhYmxlO2Euc3R5bGVbY109Im51bWJlciI9PXR5''@;'; put 'put ''cGVvZiB0aGlzLndvdC53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24/YCR7dGhpcy53b3Qud3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9ufXB4YDoiIn1zY3JvbGxUbyhjLGEpe2xldCBkPXRoaXMuZ2V0VGFibGVQ''@;'; put 'put ''YXJlbnRPZmZzZXQoKTtjb25zdCBmPSh0aGlzLndvdC5jbG9uZVNvdXJjZT90aGlzLndvdC5jbG9uZVNvdXJjZTp0aGlzLndvdCkud3RUYWJsZS5ob2xkZXI7bGV0IHY9MDthJiZmLm9mZnNldEhlaWdodCE9PWYuY2xpZW50SGVpZ2h0JiYodj1FdSh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1''@;'; put 'put ''bWVudCkpLGE/KGQrPXRoaXMuc3VtQ2VsbFNpemVzKDAsYysxKSxkLT10aGlzLndvdC53dFZpZXdwb3J0LmdldFZpZXdwb3J0SGVpZ2h0KCksZCs9MSk6ZCs9dGhpcy5zdW1DZWxsU2l6ZXModGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGMpLGQrPXYsdGhp''@;'; put 'put ''cy5zZXRTY3JvbGxQb3NpdGlvbihkKX1nZXRUYWJsZVBhcmVudE9mZnNldCgpe3JldHVybiB0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P3RoaXMud290Lnd0VGFibGUuaG9sZGVyT2Zmc2V0LnRvcDowfWdldFNjcm9sbFBvc2l0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRMKHRoaXMubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93KX1nZXRPdmVybGF5T2Zmc2V0KCl7Y29uc3R7cm9vdFdpbmRvdzpjfT10aGlzLmRvbUJpbmRpbmdzLGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInBy''@;'; put 'put ''ZXZlbnRPdmVyZmxvdyIpO2xldCBkPTA7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lcj09PWMmJighYXx8InZlcnRpY2FsIiE9PWEpKXtjb25zdCBoPXRoaXMud290Lnd0VGFibGUuZ2V0VG90YWxIZWlnaHQoKSx2PWgtdGhpcy5jbG9uZS53dFRhYmxlLmdldFRvdGFsSGVpZ2h0KCksUz10aGlz''@;'; put 'put ''LmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O2Q9TWF0aC5tYXgodGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLXRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKS1TK2gsMCksZD52JiYoZD0wKX1yZXR1cm4gZH1hZGp1c3RIZWFkZXJCb3JkZXJz''@;'; put 'put ''UG9zaXRpb24oYyl7Y29uc3QgYT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIiksZD10aGlzLmNhY2hlZEZpeGVkUm93c0JvdHRvbSE9PWEsaD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpO2xldCBmPSExO2lmKChkfHwwPT09''@;'; put 'put ''YSkmJmgubGVuZ3RoPjApe2NvbnN0IHY9dGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSxTPVlvKHYsImlubmVyQm9yZGVyQm90dG9tIik7dGhpcy5jYWNoZWRGaXhlZFJvd3NCb3R0b209dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGN8fDA9''@;'; put 'put ''PT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxSb3dzIik/KG1pKHYsImlubmVyQm9yZGVyQm90dG9tIiksZj0hUyk6KGxzKHYsImlubmVyQm9yZGVyQm90dG9tIiksZj1TKX1yZXR1cm4gZn19Y29uc3QgRWRlPXtnZXRGaXJzdFJlbmRlcmVkUm93KCl7Y29uc3QgbD10aGlzLmRh''@;'; put 'put ''dGFBY2Nlc3NPYmplY3Quc3RhcnRSb3dSZW5kZXJlZDtyZXR1cm4gbnVsbD09PWw/LTE6bH0sZ2V0Rmlyc3RWaXNpYmxlUm93KCl7Y29uc3QgbD10aGlzLmRhdGFBY2Nlc3NPYmplY3Quc3RhcnRSb3dWaXNpYmxlO3JldHVybiBudWxsPT09bD8tMTpsfSxnZXRGaXJzdFBhcnRpYWxseVZpc2li''@;'; put 'put ''bGVSb3coKXtjb25zdCBsPXRoaXMuZGF0YUFjY2Vzc09iamVjdC5zdGFydFJvd1BhcnRpYWxseVZpc2libGU7cmV0dXJuIG51bGw9PT1sPy0xOmx9LGdldExhc3RSZW5kZXJlZFJvdygpe2NvbnN0IGw9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZFJvd1JlbmRlcmVkO3JldHVybiBudWxsPT09''@;'; put 'put ''bD8tMTpsfSxnZXRMYXN0VmlzaWJsZVJvdygpe2NvbnN0IGw9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmVuZFJvd1Zpc2libGU7cmV0dXJuIG51bGw9PT1sPy0xOmx9LGdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCl7Y29uc3QgbD10aGlzLmRhdGFBY2Nlc3NPYmplY3QuZW5kUm93UGFydGlh''@;'; put 'put ''bGx5VmlzaWJsZTtyZXR1cm4gbnVsbD09PWw/LTE6bH0sZ2V0UmVuZGVyZWRSb3dzQ291bnQoKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvdW50Um93c1JlbmRlcmVkfSxnZXRWaXNpYmxlUm93c0NvdW50KCl7cmV0dXJuIHRoaXMuZGF0YUFjY2Vzc09iamVjdC5jb3VudFJvd3NW''@;'; put 'put ''aXNpYmxlfSxnZXRDb2x1bW5IZWFkZXJzQ291bnQoKXtyZXR1cm4gdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmNvbHVtbkhlYWRlcnMubGVuZ3RofX07STMoRWRlLCJNSVhJTl9OQU1FIiwiY2FsY3VsYXRlZFJvd3MiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3QgVGRlPUVkZSxr''@;'; put 'put ''ZGU9e2dldEZpcnN0UmVuZGVyZWRDb2x1bW4oKXtyZXR1cm4gMD09PXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKT8tMTowfSxnZXRGaXJzdFZpc2libGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5nZXRGaXJzdFJlbmRlcmVkQ29sdW1uKCl9LGdldEZpcnN0UGFydGlh''@;'; put 'put ''bGx5VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmdldEZpcnN0UmVuZGVyZWRDb2x1bW4oKX0sZ2V0TGFzdFJlbmRlcmVkQ29sdW1uKCl7cmV0dXJuIHRoaXMuZ2V0UmVuZGVyZWRDb2x1bW5zQ291bnQoKS0xfSxnZXRMYXN0VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmdldExhc3RS''@;'; put 'put ''ZW5kZXJlZENvbHVtbigpfSxnZXRMYXN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmdldExhc3RSZW5kZXJlZENvbHVtbigpfSxnZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpe2NvbnN0IGw9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInRvdGFsQ29sdW1ucyIpO3Jl''@;'; put 'put ''dHVybiBNYXRoLm1pbih0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSxsKX0sZ2V0VmlzaWJsZUNvbHVtbnNDb3VudCgpe3JldHVybiB0aGlzLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCl9LGdldFJvd0hlYWRlcnNDb3VudCgpe3JldHVybiB0aGlzLmRh''@;'; put 'put ''dGFBY2Nlc3NPYmplY3Qucm93SGVhZGVycy5sZW5ndGh9fTtJMyhrZGUsIk1JWElOX05BTUUiLCJzdGlja3lDb2x1bW5zU3RhcnQiLHt3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSk7Y29uc3Qgb0c9a2RlO2NsYXNzIHNHIGV4dGVuZHMgZmJ7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIo''@;'; put 'put ''YyxhLGQsaCxKOCl9fXJsKHNHLFRkZSkscmwoc0csb0cpO2NvbnN0IFdHZT1zRztjbGFzcyBHR2UgZXh0ZW5kcyBneHtjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEsSjgsZCxoKX1jcmVhdGVUYWJsZSgpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGMpLGQ9''@;'; put 'put ''MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3JldHVybiBuZXcgV0dlKC4uLmEpfXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfXJlc2V0Rml4ZWRQb3NpdGlvbigpe2NvbnN0e3d0''@;'; put 'put ''VGFibGU6Y309dGhpcy53b3Q7aWYoIXRoaXMubmVlZEZ1bGxSZW5kZXJ8fCF0aGlzLnNob3VsZEJlUmVuZGVyZWQoKXx8IWMuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuITE7Y29uc3R7cm9vdFdpbmRvdzphfT10aGlzLmRvbUJpbmRpbmdzLGQ9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5w''@;'; put 'put ''YXJlbnROb2RlLGg9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpO2xldCBmPTA7dGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWF8fGgmJiJob3Jpem9udGFsIj09PWg/KGY9dGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLGV4KGQpKTooZj10aGlzLmdldE92ZXJs''@;'; put 'put ''YXlPZmZzZXQoKSoodGhpcy5pc1J0bCgpPy0xOjEpLG5MKGQsYCR7Zn1weGAsIjBweCIpKTtjb25zdCB2PXRoaXMuYWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uKGYpO3JldHVybiB0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSgpLHZ9c2V0U2Nyb2xsUG9zaXRpb24oYyl7Y29uc3R7cm9vdFdp''@;'; put 'put ''bmRvdzphfT10aGlzLmRvbUJpbmRpbmdzO2xldCBkPSExO3JldHVybiB0aGlzLmlzUnRsKCkmJihjPS1jKSx0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50PT09YSYmYS5zY3JvbGxYIT09Yz8oYS5zY3JvbGxUbyhjLGhXKGEpKSxkPSEwKTp0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVF''@;'; put 'put ''bGVtZW50LnNjcm9sbExlZnQhPT1jJiYodGhpcy5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0PWMsZD0hMCksZH1vblNjcm9sbCgpe3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvblNjcm9sbFZlcnRpY2FsbHkiKX1zdW1DZWxsU2l6ZXMoYyxhKXtjb25zdCBkPXRo''@;'; put 'put ''aXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJkZWZhdWx0Q29sdW1uV2lkdGgiKTtsZXQgaD1jLGY9MDtmb3IoO2g8YTspZis9dGhpcy53b3Qud3RUYWJsZS5nZXRTdHJldGNoZWRDb2x1bW5XaWR0aChoKXx8ZCxoKz0xO3JldHVybiBmfWFkanVzdEVsZW1lbnRzU2l6ZSgpe3RoaXMudXBkYXRl''@;'; put 'put ''VHJpbW1pbmdDb250YWluZXIoKSx0aGlzLm5lZWRGdWxsUmVuZGVyJiYodGhpcy5hZGp1c3RSb290RWxlbWVudFNpemUoKSx0aGlzLmFkanVzdFJvb3RDaGlsZHJlblNpemUoKSl9YWRqdXN0Um9vdEVsZW1lbnRTaXplKCl7Y29uc3R7d3RUYWJsZTpjfT10aGlzLndvdCx7cm9vdERvY3VtZW50''@;'; put 'put ''OmEscm9vdFdpbmRvdzpkfT10aGlzLmRvbUJpbmRpbmdzLGg9RXUoYSksdj10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUuc3R5bGUsUz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7aWYodGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWR8''@;'; put 'put ''fCJ2ZXJ0aWNhbCI9PT1TKXtsZXQgUT10aGlzLndvdC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZUhlaWdodCgpO3RoaXMud290Lnd0T3ZlcmxheXMuaGFzU2Nyb2xsYmFyQm90dG9tJiYoUS09aCksUT1NYXRoLm1pbihRLGMud3RSb290RWxlbWVudC5zY3JvbGxIZWlnaHQpLHYuaGVpZ2h0PWAk''@;'; put 'put ''e1F9cHhgfWVsc2Ugdi5oZWlnaHQ9IiI7dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5zdHlsZS5oZWlnaHQ9di5oZWlnaHQ7Y29uc3QgVj1XYSh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO3Yud2lkdGg9YCR7Vn1weGB9YWRqdXN0Um9vdENoaWxkcmVuU2l6ZSgpe2NvbnN0e2hvbGRlcjpj''@;'; put 'put ''fT10aGlzLmNsb25lLnd0VGFibGUsYT10aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyLmdldEZvY3VzU2VsZWN0aW9uKCk/cGFyc2VJbnQockcud2lkdGgsMTApLzI6MDt0aGlzLmNsb25lLnd0VGFibGUuaGlkZXIuc3R5bGUuaGVpZ2h0PXRoaXMuaGlkZXIuc3R5bGUuaGVpZ2h0LGMuc3R5bGUu''@;'; put 'put ''aGVpZ2h0PWMucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQsYy5zdHlsZS53aWR0aD1gJHtwYXJzZUludChjLnBhcmVudE5vZGUuc3R5bGUud2lkdGgsMTApK2F9cHhgfWFwcGx5VG9ET00oKXtjb25zdCBjPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJ0b3RhbENvbHVtbnMiKSxhPXRoaXMu''@;'; put 'put ''aXNSdGwoKT8icmlnaHQiOiJsZWZ0IjtpZigibnVtYmVyIj09dHlwZW9mIHRoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbil0aGlzLnNwcmVhZGVyLnN0eWxlW2FdPWAke3RoaXMud290Lnd0Vmlld3BvcnQuY29sdW1uc1JlbmRlckNhbGN1''@;'; put 'put ''bGF0b3Iuc3RhcnRQb3NpdGlvbn1weGA7ZWxzZXtpZigwIT09Yyl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB2YWx1ZSBvZiB0aGUgY29sdW1uc1JlbmRlckNhbGN1bGF0b3IiKTt0aGlzLnNwcmVhZGVyLnN0eWxlW2FdPSIwIn10aGlzLmlzUnRsKCk/dGhpcy5zcHJlYWRlci5zdHlsZS5s''@;'; put 'put ''ZWZ0PSIiOnRoaXMuc3ByZWFkZXIuc3R5bGUucmlnaHQ9IiIsdGhpcy5uZWVkRnVsbFJlbmRlciYmdGhpcy5zeW5jT3ZlcmxheU9mZnNldCgpfXN5bmNPdmVybGF5T2Zmc2V0KCl7dGhpcy5jbG9uZS53dFRhYmxlLnNwcmVhZGVyLnN0eWxlLnRvcD0ibnVtYmVyIj09dHlwZW9mIHRoaXMud290''@;'; put 'put ''Lnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3Iuc3RhcnRQb3NpdGlvbj9gJHt0aGlzLndvdC53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb259cHhgOiIifXNjcm9sbFRvKGMsYSl7Y29uc3R7d3RTZXR0aW5nczpkfT10aGlzLGg9ZC5nZXRTZXR0aW5n''@;'; put 'put ''KCJyb3dIZWFkZXJzIiksZj1kLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0IiksUz0odGhpcy53b3QuY2xvbmVTb3VyY2U/dGhpcy53b3QuY2xvbmVTb3VyY2U6dGhpcy53b3QpLnd0VGFibGUuaG9sZGVyLFY9MD09PWYmJmgubGVuZ3RoPjAmJiFZbyhTLnBhcmVudE5vZGUsImlubmVy''@;'; put 'put ''Qm9yZGVySW5saW5lU3RhcnQiKT8xOjA7bGV0IFE9dGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLGRlPTA7cmV0dXJuIGEmJnRoaXMud290Lnd0VGFibGUuZ2V0Q29sdW1uV2lkdGgoYyk+dGhpcy53b3Qud3RWaWV3cG9ydC5nZXRWaWV3cG9ydFdpZHRoKCkmJihhPSExKSxhJiZTLm9mZnNl''@;'; put 'put ''dFdpZHRoIT09Uy5jbGllbnRXaWR0aCYmKGRlPUV1KHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSksYT8oUSs9dGhpcy5zdW1DZWxsU2l6ZXMoMCxjKzEpLFEtPXRoaXMud290Lnd0Vmlld3BvcnQuZ2V0Vmlld3BvcnRXaWR0aCgpLFErPVYpOlErPXRoaXMuc3VtQ2VsbFNpemVzKHRo''@;'; put 'put ''aXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpLGMpLFErPWRlLEMxZSh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50KT09PVEtViYmVj4wJiZ0aGlzLndvdC53dE92ZXJsYXlzLmV4cGFuZEhpZGVySG9yaXpvbnRhbGx5QnkoViksdGhpcy5zZXRTY3Jv''@;'; put 'put ''bGxQb3NpdGlvbihRKX1nZXRUYWJsZVBhcmVudE9mZnNldCgpe2xldCBhPTA7cmV0dXJuIXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKSYmdGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyYmKGE9dGhpcy53b3Qu''@;'; put 'put ''d3RUYWJsZS5ob2xkZXJPZmZzZXQubGVmdCksYX1nZXRTY3JvbGxQb3NpdGlvbigpe3JldHVybiBNYXRoLmFicyhmVyh0aGlzLm1haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50LHRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdykpfWdldE92ZXJsYXlPZmZzZXQoKXtjb25zdHtyb290V2luZG93''@;'; put 'put ''OmN9PXRoaXMuZG9tQmluZGluZ3MsYT10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudE92ZXJmbG93Iik7bGV0IGQ9MDtyZXR1cm4gdGhpcy50cmltbWluZ0NvbnRhaW5lciE9PWN8fGEmJiJob3Jpem9udGFsIj09PWF8fChkPXRoaXMuaXNSdGwoKT9NYXRoLmFicyhNYXRoLm1p''@;'; put 'put ''bih0aGlzLmdldFRhYmxlUGFyZW50T2Zmc2V0KCktdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLDApKTpNYXRoLm1heCh0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCktdGhpcy5nZXRUYWJsZVBhcmVudE9mZnNldCgpLDApLGQ+dGhpcy53b3Qud3RUYWJsZS5nZXRUb3RhbFdpZHRoKCktdGhpcy5j''@;'; put 'put ''bG9uZS53dFRhYmxlLmdldFRvdGFsV2lkdGgoKSYmKGQ9MCkpLGR9YWRqdXN0SGVhZGVyQm9yZGVyc1Bvc2l0aW9uKGMpe2NvbnN0e3d0U2V0dGluZ3M6YX09dGhpcyxkPXRoaXMud290Lnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUsaD1hLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKSxmPWEu''@;'; put 'put ''Z2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSx2PWEuZ2V0U2V0dGluZygidG90YWxSb3dzIiksUz0idmVydGljYWwiPT09YS5nZXRTZXR0aW5nKCJwcmV2ZW50T3ZlcmZsb3ciKTt2P2xzKGQsImVtcHR5Um93cyIpOm1pKGQsImVtcHR5Um93cyIpO2xldCBWPSExO2lmKCFTKWlmKGYm''@;'; put 'put ''JiFoLmxlbmd0aCltaShkLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpO2Vsc2UgaWYoIWYmJmgubGVuZ3RoKXtjb25zdCBRPVlvKGQsImlubmVyQm9yZGVySW5saW5lU3RhcnQiKTtjPyhtaShkLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFy''@;'; put 'put ''dCIpLFY9IVEpOihscyhkLCJpbm5lckJvcmRlckxlZnQgaW5uZXJCb3JkZXJJbmxpbmVTdGFydCIpLFY9USl9cmV0dXJuIFZ9fWNsYXNzIGFHIGV4dGVuZHMgZmJ7Y29uc3RydWN0b3IoYyxhLGQsaCl7c3VwZXIoYyxhLGQsaCxROCl9fXJsKGFHLGdkZSkscmwoYUcsb0cpO2NvbnN0ICRHZT1h''@;'; put 'put ''RztmdW5jdGlvbiBBZGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHFHZShsKXt2YXIgYz1mdW5jdGlvbiBLR2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxj''@;'; put 'put ''fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3Jl''@;'; put 'put ''dHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgWEdlIGV4dGVuZHMgZ3h7Y29uc3RydWN0b3IoYyxh''@;'; put 'put ''LGQsaCxmLHYpe3N1cGVyKGMsYSxROCxkLGgpLEFkZSh0aGlzLCJ0b3BPdmVybGF5Iix2b2lkIDApLEFkZSh0aGlzLCJpbmxpbmVTdGFydE92ZXJsYXkiLHZvaWQgMCksdGhpcy50b3BPdmVybGF5PWYsdGhpcy5pbmxpbmVTdGFydE92ZXJsYXk9dn1jcmVhdGVUYWJsZSgpe2Zvcih2YXIgYz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGMpLGQ9MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3JldHVybiBuZXcgJEdlKC4uLmEpfXNob3VsZEJlUmVuZGVyZWQoKXtyZXR1cm4gdGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlclRvcE92ZXJsYXkiKSYmdGhp''@;'; put 'put ''cy53dFNldHRpbmdzLmdldFNldHRpbmcoInNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheSIpfXJlc2V0Rml4ZWRQb3NpdGlvbigpe2lmKHRoaXMudXBkYXRlVHJpbW1pbmdDb250YWluZXIoKSwhdGhpcy53b3Qud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4hMTtjb25zdCBj''@;'; put 'put ''PXRoaXMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZTt0aGlzLnRyaW1taW5nQ29udGFpbmVyPT09dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93P25MKGMsdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpKih0aGlzLmlzUnRsKCk/LTE6MSkrInB4Iixg''@;'; put 'put ''JHt0aGlzLnRvcE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpfXB4YCk6ZXgoYyk7bGV0IGE9WmwodGhpcy5jbG9uZS53dFRhYmxlLlRBQkxFKTtjb25zdCBkPVdhKHRoaXMuY2xvbmUud3RUYWJsZS5UQUJMRSk7cmV0dXJuIHRoaXMud290Lnd0VGFibGUuaGFzRGVmaW5lZFNpemUoKXx8KGE9''@;'; put 'put ''MCksYy5zdHlsZS5oZWlnaHQ9YCR7YX1weGAsYy5zdHlsZS53aWR0aD1gJHtkfXB4YCwhMX19Y2xhc3MgbEcgZXh0ZW5kcyBmYntjb25zdHJ1Y3RvcihjLGEsZCxoKXtzdXBlcihjLGEsZCxoLEJtKX19cmwobEcseGRlKSxybChsRyxvRyk7Y29uc3QgSkdlPWxHO2NsYXNzIFFHZSBleHRlbmRz''@;'; put 'put ''IGd4e2NvbnN0cnVjdG9yKGMsYSxkLGgsZix2KXtzdXBlcihjLGEsQm0sZCxoKSx0aGlzLmJvdHRvbU92ZXJsYXk9Zix0aGlzLmlubGluZVN0YXJ0T3ZlcmxheT12fWNyZWF0ZVRhYmxlKCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYyksZD0wO2Q8YztkKyspYVtk''@;'; put 'put ''XT1hcmd1bWVudHNbZF07cmV0dXJuIG5ldyBKR2UoLi4uYSl9c2hvdWxkQmVSZW5kZXJlZCgpe3JldHVybiB0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVyQm90dG9tT3ZlcmxheSIpJiZ0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2hvdWxkUmVuZGVySW5saW5l''@;'; put 'put ''U3RhcnRPdmVybGF5Iil9cmVzZXRGaXhlZFBvc2l0aW9uKCl7Y29uc3R7d290OmN9PXRoaXM7aWYodGhpcy51cGRhdGVUcmltbWluZ0NvbnRhaW5lcigpLCFjLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpcmV0dXJuITE7Y29uc3QgYT10aGlzLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVu''@;'; put 'put ''dE5vZGU7aWYoYS5zdHlsZS50b3A9IiIsdGhpcy50cmltbWluZ0NvbnRhaW5lcj09PXRoaXMuZG9tQmluZGluZ3Mucm9vdFdpbmRvdyl7Y29uc3QgZj10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRPdmVybGF5T2Zmc2V0KCksdj10aGlzLmJvdHRvbU92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNl''@;'; put 'put ''dCgpO2Euc3R5bGVbdGhpcy5pc1J0bCgpPyJyaWdodCI6ImxlZnQiXT1gJHtmfXB4YCxhLnN0eWxlLmJvdHRvbT1gJHt2fXB4YH1lbHNlIGV4KGEpLHRoaXMucmVwb3NpdGlvbk92ZXJsYXkoKTtsZXQgZD1abCh0aGlzLmNsb25lLnd0VGFibGUuVEFCTEUpO2NvbnN0IGg9V2EodGhpcy5jbG9u''@;'; put 'put ''ZS53dFRhYmxlLlRBQkxFKTtyZXR1cm4gdGhpcy53b3Qud3RUYWJsZS5oYXNEZWZpbmVkU2l6ZSgpfHwoZD0wKSxhLnN0eWxlLmhlaWdodD1gJHtkfXB4YCxhLnN0eWxlLndpZHRoPWAke2h9cHhgLCExfXJlcG9zaXRpb25PdmVybGF5KCl7Y29uc3R7d3RUYWJsZTpjLHd0Vmlld3BvcnQ6YX09''@;'; put 'put ''dGhpcy53b3Qse3Jvb3REb2N1bWVudDpkfT10aGlzLmRvbUJpbmRpbmdzLGg9dGhpcy5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlO2xldCBmPTA7YS5oYXNWZXJ0aWNhbFNjcm9sbCgpfHwoZis9YS5nZXRXb3Jrc3BhY2VIZWlnaHQoKS1jLmdldFRvdGFsSGVpZ2h0KCkpLGEuaGFz''@;'; put 'put ''VmVydGljYWxTY3JvbGwoKSYmYS5oYXNIb3Jpem9udGFsU2Nyb2xsKCkmJihmKz1FdShkKSksaC5zdHlsZS5ib3R0b209YCR7Zn1weGB9fWZ1bmN0aW9uIERkZShsLGMsYSl7KGZ1bmN0aW9uIGUkZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFs''@;'; put 'put ''aXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gRDQobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHQkZShsKXt2YXIgYz1mdW5jdGlvbiBuJGUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJl''@;'; put 'put ''dHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0''@;'; put 'put ''aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJh''@;'; put 'put ''YmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gY0cobCxjLGEpe3JldHVybiBsLnNldChJZGUobCxjKSxhKSxhfWZ1bmN0aW9uIG14KGwsYyl7cmV0dXJuIGwuZ2V0KElkZShsLGMpKX1mdW5jdGlvbiBJZGUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1j''@;'; put 'put ''OmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciBnYj1uZXcgV2Vha01hcCxMTD1uZXcgV2Vha01hcDtjb25zdCBpJGU9Y2xhc3MgciRle2Nv''@;'; put 'put ''bnN0cnVjdG9yKGMsYSxkLGgsZix2KXtENCh0aGlzLCJ3b3QiLG51bGwpLERkZSh0aGlzLGdiLFtdKSxENCh0aGlzLCJ0b3BPdmVybGF5IixudWxsKSxENCh0aGlzLCJib3R0b21PdmVybGF5IixudWxsKSxENCh0aGlzLCJpbmxpbmVTdGFydE92ZXJsYXkiLG51bGwpLEQ0KHRoaXMsInRvcElu''@;'; put 'put ''bGluZVN0YXJ0Q29ybmVyT3ZlcmxheSIsbnVsbCksRDQodGhpcywiYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5IixudWxsKSxENCh0aGlzLCJicm93c2VyTGluZUhlaWdodCIsdm9pZCAwKSxENCh0aGlzLCJ3dFNldHRpbmdzIixudWxsKSxEZGUodGhpcyxMTCwhMSksRDQodGhpcywi''@;'; put 'put ''cmVzaXplT2JzZXJ2ZXIiLG5ldyBSZXNpemVPYnNlcnZlcihkZT0+e2NMKCgpPT57IUFycmF5LmlzQXJyYXkoZGUpfHwhZGUubGVuZ3RofHx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Db250YWluZXJFbGVtZW50UmVzaXplIil9KX0pKSx0aGlzLndvdD1jLHRoaXMud3RTZXR0aW5n''@;'; put 'put ''cz1oLHRoaXMuZG9tQmluZGluZ3M9ZCx0aGlzLmZhY2FkZUdldHRlcj1hLHRoaXMud3RUYWJsZT12O2NvbnN0e3Jvb3REb2N1bWVudDpTLHJvb3RXaW5kb3c6Vn09dGhpcy5kb21CaW5kaW5nczt0aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMuZXZlbnRNYW5hZ2VyPWYsdGhpcy5zY3JvbGxi''@;'; put 'put ''YXJTaXplPUV1KFMpO2NvbnN0IFE9ImhpZGRlbiI9PT1WLmdldENvbXB1dGVkU3R5bGUodi53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUpLmdldFByb3BlcnR5VmFsdWUoIm92ZXJmbG93Iik7dGhpcy5zY3JvbGxhYmxlRWxlbWVudD1RP3YuaG9sZGVyOkpNKHYuVEFCTEUpLHRoaXMuaW5pdE92''@;'; put 'put ''ZXJsYXlzKCksdGhpcy5oYXNTY3JvbGxiYXJCb3R0b209ITEsdGhpcy5oYXNTY3JvbGxiYXJSaWdodD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmtleVByZXNzZWQ9ITEsdGhpcy5zcHJlYWRlckxhc3RTaXplPXt3aWR0aDpudWxsLGhlaWdodDpudWxsfSx0aGlzLnZlcnRpY2FsU2Nyb2xs''@;'; put 'put ''aW5nPSExLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGluZz0hMSx0aGlzLmluaXRCcm93c2VyTGluZUhlaWdodCgpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSx0aGlzLmxhc3RTY3JvbGxYPVYuc2Nyb2xsWCx0aGlzLmxhc3RTY3JvbGxZPVYuc2Nyb2xsWX1nZXRPdmVybGF5cygpe2xldCBjPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Y29uc3QgYT1bLi4ubXgoZ2IsdGhpcyldO3JldHVybiBjJiZhLnB1c2godGhpcy53dFRhYmxlKSxhfWluaXRCcm93c2VyTGluZUhlaWdodCgpe2NvbnN0e3Jvb3RXaW5kb3c6Yyxyb290RG9jdW1l''@;'; put 'put ''bnQ6YX09dGhpcy5kb21CaW5kaW5ncyxkPWMuZ2V0Q29tcHV0ZWRTdHlsZShhLmJvZHkpLGg9cGFyc2VJbnQoZC5saW5lSGVpZ2h0LDEwKSxmPTEuMipwYXJzZUludChkLmZvbnRTaXplLDEwKTt0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0PWh8fGZ9aW5pdE92ZXJsYXlzKCl7Y29uc3QgYz1bdGhp''@;'; put 'put ''cy53b3QsdGhpcy5mYWNhZGVHZXR0ZXIsdGhpcy53dFNldHRpbmdzLHRoaXMuZG9tQmluZGluZ3NdO3RoaXMudG9wT3ZlcmxheT1uZXcgTkdlKC4uLmMpLHRoaXMuYm90dG9tT3ZlcmxheT1uZXcgVUdlKC4uLmMpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5PW5ldyBHR2UoLi4uYyksdGhpcy50''@;'; put 'put ''b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk9bmV3IFhHZSguLi5jLHRoaXMudG9wT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXk9bmV3IFFHZSguLi5jLHRoaXMuYm90dG9tT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0''@;'; put 'put ''T3ZlcmxheSksY0coZ2IsdGhpcyxbdGhpcy50b3BPdmVybGF5LHRoaXMuYm90dG9tT3ZlcmxheSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0pfWJlZm9yZURyYXcoKXtj''@;'; put 'put ''RyhMTCx0aGlzLG14KGdiLHRoaXMpLnJlZHVjZSgoYyxhKT0+YS5oYXNSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKXx8YywhMSkpLG14KGdiLHRoaXMpLmZvckVhY2goYz0+Yy51cGRhdGVTdGF0ZU9mUmVuZGVyaW5nKCJiZWZvcmUiKSl9YWZ0ZXJEcmF3KCl7dGhpcy5zeW5jU2Nyb2xsV2l0aE1h''@;'; put 'put ''c3RlcigpLG14KGdiLHRoaXMpLmZvckVhY2goYz0+e2NvbnN0IGE9Yy5oYXNSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTtjLnVwZGF0ZVN0YXRlT2ZSZW5kZXJpbmcoImFmdGVyIiksYSYmIWMubmVlZEZ1bGxSZW5kZXImJmMucmVzZXQoKX0pfXJlZnJlc2hBbGwoKXtpZih0aGlzLndvdC5kcmF3''@;'; put 'put ''bil7aWYoIXRoaXMud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSlyZXR1cm4gdm9pZCB0aGlzLmRlc3Ryb3koKTt0aGlzLndvdC5kcmF3KCEwKSx0aGlzLnZlcnRpY2FsU2Nyb2xsaW5nJiZ0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5vblNjcm9sbCgpLHRoaXMuaG9yaXpvbnRhbFNjcm9sbGlu''@;'; put 'put ''ZyYmdGhpcy50b3BPdmVybGF5Lm9uU2Nyb2xsKCksdGhpcy52ZXJ0aWNhbFNjcm9sbGluZz0hMSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9ITF9fXJlZ2lzdGVyTGlzdGVuZXJzKCl7Y29uc3R7cm9vdERvY3VtZW50OmMscm9vdFdpbmRvdzphfT10aGlzLmRvbUJpbmRpbmdzLHttYWluVGFi''@;'; put 'put ''bGVTY3JvbGxhYmxlRWxlbWVudDpkfT10aGlzLnRvcE92ZXJsYXkse21haW5UYWJsZVNjcm9sbGFibGVFbGVtZW50Omh9PXRoaXMuaW5saW5lU3RhcnRPdmVybGF5O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYy5kb2N1bWVudEVsZW1lbnQsImtleWRvd24iLHBlPT50aGlz''@;'; put 'put ''Lm9uS2V5RG93bihwZSkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYy5kb2N1bWVudEVsZW1lbnQsImtleXVwIiwoKT0+dGhpcy5vbktleVVwKCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywidmlzaWJpbGl0eWNoYW5nZSIsKCk9PnRoaXMub25L''@;'; put 'put ''ZXlVcCgpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGQsInNjcm9sbCIscGU9PnRoaXMub25UYWJsZVNjcm9sbChwZSkse3Bhc3NpdmU6ITB9KSxkIT09aCYmdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihoLCJzY3JvbGwiLHBlPT50aGlzLm9uVGFibGVT''@;'; put 'put ''Y3JvbGwocGUpLHtwYXNzaXZlOiEwfSk7Y29uc3QgZj1hLmRldmljZVBpeGVsUmF0aW8mJmEuZGV2aWNlUGl4ZWxSYXRpbz4xLHY9dGhpcy5zY3JvbGxhYmxlRWxlbWVudD09PWEsUz10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVudFdoZWVsIiksVj17cGFzc2l2ZTp2fTtsZXQg''@;'; put 'put ''ZGU7KFN8fGZ8fCFTVygpKSYmdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLnd0VGFibGUud3RSb290RWxlbWVudCwid2hlZWwiLHBlPT50aGlzLm9uQ2xvbmVXaGVlbChwZSxTKSxWKSxbdGhpcy50b3BPdmVybGF5LHRoaXMuYm90dG9tT3ZlcmxheSx0aGlzLmlubGlu''@;'; put 'put ''ZVN0YXJ0T3ZlcmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0uZm9yRWFjaChwZT0+e2lmKHBlJiZwZS5uZWVkRnVsbFJlbmRlcil7Y29uc3R7aG9sZGVyOkNlfT1wZS5jbG9uZS53dFRhYmxlO3RoaXMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoQ2UsIndoZWVsIixPZT0+dGhpcy5vbkNsb25lV2hlZWwoT2UsUyksVil9fSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJyZXNpemUiLCgpPT57Y2xlYXJUaW1lb3V0KGRlKSxkZT1zZXRUaW1lb3V0KCgpPT57dGhpcy53''@;'; put 'put ''dFNldHRpbmdzLmdldFNldHRpbmcoIm9uV2luZG93UmVzaXplIil9LDIwMCl9KSx2fHx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQucGFyZW50RWxlbWVudCl9ZGVyZWdpc3Rlckxpc3RlbmVycygpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFy''@;'; put 'put ''RXZlbnRzKCEwKX1vblRhYmxlU2Nyb2xsKGMpe2NvbnN0IGE9dGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LGQ9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsaD10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsZj1j''@;'; put 'put ''LnRhcmdldDt0aGlzLmtleVByZXNzZWQmJihoIT09YSYmZiE9PWEmJiFjLnRhcmdldC5jb250YWlucyhoKXx8ZCE9PWEmJmYhPT1hJiYhYy50YXJnZXQuY29udGFpbnMoZCkpfHx0aGlzLnN5bmNTY3JvbGxQb3NpdGlvbnMoYyl9b25DbG9uZVdoZWVsKGMsYSl7Y29uc3R7cm9vdFdpbmRvdzpk''@;'; put 'put ''fT10aGlzLmRvbUJpbmRpbmdzLGg9dGhpcy5pbmxpbmVTdGFydE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsZj10aGlzLnRvcE92ZXJsYXkubWFpblRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQsdj1jLnRhcmdldCxTPWYhPT1kJiZ2IT09ZCYmIXYuY29udGFpbnMoZiksVj1oIT09''@;'; put 'put ''ZCYmdiE9PWQmJiF2LmNvbnRhaW5zKGgpO2lmKHRoaXMua2V5UHJlc3NlZCYmKFN8fFYpKXJldHVybjtjb25zdCBRPXRoaXMudHJhbnNsYXRlTW91c2VXaGVlbFRvU2Nyb2xsKGMpOyhhfHx0aGlzLnNjcm9sbGFibGVFbGVtZW50IT09ZCYmUSkmJmMucHJldmVudERlZmF1bHQoKX1vbktleURv''@;'; put 'put ''d24oYyl7dGhpcy5rZXlQcmVzc2VkPWFiKGMua2V5Q29kZSwiQVJST1dfVVB8QVJST1dfUklHSFR8QVJST1dfRE9XTnxBUlJPV19MRUZUIil9b25LZXlVcCgpe3RoaXMua2V5UHJlc3NlZD0hMX10cmFuc2xhdGVNb3VzZVdoZWVsVG9TY3JvbGwoYyl7bGV0IGE9aXNOYU4oYy5kZWx0YVkpPy0x''@;'; put 'put ''KmMud2hlZWxEZWx0YVk6Yy5kZWx0YVksZD1pc05hTihjLmRlbHRhWCk/LTEqYy53aGVlbERlbHRhWDpjLmRlbHRhWDsxPT09Yy5kZWx0YU1vZGUmJihkKz1kKnRoaXMuYnJvd3NlckxpbmVIZWlnaHQsYSs9YSp0aGlzLmJyb3dzZXJMaW5lSGVpZ2h0KTtjb25zdCBoPXRoaXMuc2Nyb2xsVmVy''@;'; put 'put ''dGljYWxseShhKSxmPXRoaXMuc2Nyb2xsSG9yaXpvbnRhbGx5KGQpO3JldHVybiBofHxmfXNjcm9sbFZlcnRpY2FsbHkoYyl7Y29uc3QgYT10aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcDtyZXR1cm4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxUb3ArPWMsYSE9PXRoaXMu''@;'; put 'put ''c2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wfXNjcm9sbEhvcml6b250YWxseShjKXtjb25zdCBhPXRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsTGVmdDtyZXR1cm4gdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0Kz1jLGEhPT10aGlzLnNjcm9sbGFibGVFbGVtZW50LnNj''@;'; put 'put ''cm9sbExlZnR9c3luY1Njcm9sbFBvc2l0aW9ucygpe2lmKHRoaXMuZGVzdHJveWVkKXJldHVybjtjb25zdHtyb290V2luZG93OmN9PXRoaXMuZG9tQmluZGluZ3MsYT10aGlzLnRvcE92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIsZD10aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS53''@;'; put 'put ''dFRhYmxlLmhvbGRlcixbaCxmXT1bdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0LHRoaXMuc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wXTtpZih0aGlzLmhvcml6b250YWxTY3JvbGxpbmc9YS5zY3JvbGxMZWZ0IT09aHx8dGhpcy5sYXN0U2Nyb2xsWCE9PWMuc2Nyb2xsWCx0''@;'; put 'put ''aGlzLnZlcnRpY2FsU2Nyb2xsaW5nPWQuc2Nyb2xsVG9wIT09Znx8dGhpcy5sYXN0U2Nyb2xsWSE9PWMuc2Nyb2xsWSx0aGlzLmxhc3RTY3JvbGxYPWMuc2Nyb2xsWCx0aGlzLmxhc3RTY3JvbGxZPWMuc2Nyb2xsWSx0aGlzLmhvcml6b250YWxTY3JvbGxpbmcpe2Euc2Nyb2xsTGVmdD1oO2Nv''@;'; put 'put ''bnN0IHY9dGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyP3RoaXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlcjpudWxsO3YmJih2LnNjcm9sbExlZnQ9aCl9dGhpcy52ZXJ0aWNhbFNjcm9sbGluZyYmKGQuc2Nyb2xsVG9wPWYpLHRoaXMucmVmcmVzaEFsbCgpfXN5''@;'; put 'put ''bmNTY3JvbGxXaXRoTWFzdGVyKCl7aWYoIW14KExMLHRoaXMpKXJldHVybjtjb25zdCBjPXRoaXMudG9wT3ZlcmxheS5tYWluVGFibGVTY3JvbGxhYmxlRWxlbWVudCx7c2Nyb2xsTGVmdDphLHNjcm9sbFRvcDpkfT1jO3RoaXMudG9wT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMudG9w''@;'; put 'put ''T3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxMZWZ0PWEpLHRoaXMuYm90dG9tT3ZlcmxheS5uZWVkRnVsbFJlbmRlciYmKHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZS53dFRhYmxlLmhvbGRlci5zY3JvbGxMZWZ0PWEpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxs''@;'; put 'put ''UmVuZGVyJiYodGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5ob2xkZXIuc2Nyb2xsVG9wPWQpLGNHKExMLHRoaXMsITEpfXVwZGF0ZU1haW5TY3JvbGxhYmxlRWxlbWVudHMoKXt0aGlzLmRlcmVnaXN0ZXJMaXN0ZW5lcnMoKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS51''@;'; put 'put ''cGRhdGVNYWluU2Nyb2xsYWJsZUVsZW1lbnQoKSx0aGlzLnRvcE92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCksdGhpcy5ib3R0b21PdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmJvdHRvbU92ZXJsYXkudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50KCk7Y29uc3R7''@;'; put 'put ''d3RUYWJsZTpjfT10aGlzLHtyb290V2luZG93OmF9PXRoaXMuZG9tQmluZGluZ3M7dGhpcy5zY3JvbGxhYmxlRWxlbWVudD0iaGlkZGVuIj09PWEuZ2V0Q29tcHV0ZWRTdHlsZShjLnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZSkuZ2V0UHJvcGVydHlWYWx1ZSgib3ZlcmZsb3ciKT9jLmhvbGRl''@;'; put 'put ''cjpKTShjLlRBQkxFKSx0aGlzLnJlZ2lzdGVyTGlzdGVuZXJzKCl9ZGVzdHJveSgpe3RoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpLHRoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLnRvcE92ZXJsYXkuZGVzdHJveSgpLHRoaXMuYm90dG9tT3ZlcmxheS5jbG9uZSYmdGhp''@;'; put 'put ''cy5ib3R0b21PdmVybGF5LmRlc3Ryb3koKSx0aGlzLmlubGluZVN0YXJ0T3ZlcmxheS5kZXN0cm95KCksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVy''@;'; put 'put ''T3ZlcmxheSYmdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3llZD0hMH1yZWZyZXNoKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnVwZGF0ZUxhc3RTcHJlYWRlclNpemUoKSYmdGhpcy5hZGp1c3RFbGVtZW50c1NpemUoKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3ZlcmxheS5yZWZyZXNoKGMpLHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LnJlZnJl''@;'; put 'put ''c2goYyksdGhpcy50b3BPdmVybGF5LnJlZnJlc2goYyksdGhpcy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LnJlZnJlc2goYyksdGhpcy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkmJnRoaXMuYm90dG9tSW5saW5l''@;'; put 'put ''U3RhcnRDb3JuZXJPdmVybGF5LmNsb25lJiZ0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5yZWZyZXNoKGMpfXVwZGF0ZUxhc3RTcHJlYWRlclNpemUoKXtjb25zdCBjPXRoaXMud3RUYWJsZS5zcHJlYWRlcixhPWMuY2xpZW50V2lkdGgsZD1jLmNsaWVudEhlaWdodCxoPWEh''@;'; put 'put ''PT10aGlzLnNwcmVhZGVyTGFzdFNpemUud2lkdGh8fGQhPT10aGlzLnNwcmVhZGVyTGFzdFNpemUuaGVpZ2h0O3JldHVybiBoJiYodGhpcy5zcHJlYWRlckxhc3RTaXplLndpZHRoPWEsdGhpcy5zcHJlYWRlckxhc3RTaXplLmhlaWdodD1kKSxofWFkanVzdEVsZW1lbnRzU2l6ZSgpe2NvbnN0''@;'; put 'put ''e3d0Vmlld3BvcnQ6Y309dGhpcy53b3Qse3d0VGFibGU6YX09dGhpcyx7cm9vdFdpbmRvdzpkfT10aGlzLmRvbUJpbmRpbmdzLGg9dGhpcy5zY3JvbGxhYmxlRWxlbWVudD09PWQsZj10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksdj10aGlzLnd0U2V0dGluZ3Mu''@;'; put 'put ''Z2V0U2V0dGluZygidG90YWxSb3dzIiksUz1jLmdldFJvd0hlYWRlcldpZHRoKCksUT1jLmdldENvbHVtbkhlYWRlckhlaWdodCgpK3RoaXMudG9wT3ZlcmxheS5zdW1DZWxsU2l6ZXMoMCx2KSsxLGRlPVMrdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuc3VtQ2VsbFNpemVzKDAsZiksQ2U9YS5o''@;'; put 'put ''aWRlci5zdHlsZSxldD0oKCk9PiFoJiZ0aGlzLnNjcm9sbGFibGVFbGVtZW50LnNjcm9sbFRvcD5NYXRoLm1heCgwLFEtYS5ob2xkZXIuY2xpZW50SGVpZ2h0KSkoKT8xOjAsZHQ9KCgpPT4haCYmdGhpcy5zY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0Pk1hdGgubWF4KDAsZGUtYS5ob2xk''@;'; put 'put ''ZXIuY2xpZW50V2lkdGgpKSgpPzE6MDtpZihDZS53aWR0aD1gJHtkZStkdH1weGAsQ2UuaGVpZ2h0PWAke1ErZXR9cHhgLHRoaXMuc2Nyb2xsYmFyU2l6ZT4wKXtjb25zdHtzY3JvbGxIZWlnaHQ6aHQsc2Nyb2xsV2lkdGg6TXR9PWEud3RSb290RWxlbWVudCx7c2Nyb2xsSGVpZ2h0OlF0LHNj''@;'; put 'put ''cm9sbFdpZHRoOmxufT1hLmhvbGRlcjt0aGlzLmhhc1Njcm9sbGJhclJpZ2h0PWh0PFF0LHRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tPU10PGxuLHRoaXMuaGFzU2Nyb2xsYmFyUmlnaHQmJmEuaGlkZXIuc2Nyb2xsV2lkdGgrdGhpcy5zY3JvbGxiYXJTaXplPk10P3RoaXMuaGFzU2Nyb2xsYmFy''@;'; put 'put ''Qm90dG9tPSEwOnRoaXMuaGFzU2Nyb2xsYmFyQm90dG9tJiZhLmhpZGVyLnNjcm9sbEhlaWdodCt0aGlzLnNjcm9sbGJhclNpemU+aHQmJih0aGlzLmhhc1Njcm9sbGJhclJpZ2h0PSEwKX10aGlzLnRvcE92ZXJsYXkuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5pbmxpbmVTdGFydE92ZXJs''@;'; put 'put ''YXkuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ib3R0b21PdmVybGF5LmFkanVzdEVsZW1lbnRzU2l6ZSgpfWV4cGFuZEhpZGVyVmVydGljYWxseUJ5KGMpe2NvbnN0e3d0VGFibGU6YX09dGhpczthLmhpZGVyLnN0eWxlLmhlaWdodD1gJHtwYXJzZUludChhLmhpZGVyLnN0eWxlLmhlaWdo''@;'; put 'put ''dCwxMCkrY31weGB9ZXhwYW5kSGlkZXJIb3Jpem9udGFsbHlCeShjKXtjb25zdHt3dFRhYmxlOmF9PXRoaXM7YS5oaWRlci5zdHlsZS53aWR0aD1gJHtwYXJzZUludChhLmhpZGVyLnN0eWxlLndpZHRoLDEwKStjfXB4YH1hcHBseVRvRE9NKCl7dGhpcy53dFRhYmxlLmlzVmlzaWJsZSgpJiYo''@;'; put 'put ''dGhpcy50b3BPdmVybGF5LmFwcGx5VG9ET00oKSx0aGlzLmJvdHRvbU92ZXJsYXkuY2xvbmUmJnRoaXMuYm90dG9tT3ZlcmxheS5hcHBseVRvRE9NKCksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXkuYXBwbHlUb0RPTSgpKX1nZXRQYXJlbnRPdmVybGF5KGMpe2lmKCFjKXJldHVybiBudWxsO2xl''@;'; put 'put ''dCBkPW51bGw7cmV0dXJuIFRuKFt0aGlzLnRvcE92ZXJsYXksdGhpcy5pbmxpbmVTdGFydE92ZXJsYXksdGhpcy5ib3R0b21PdmVybGF5LHRoaXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5LHRoaXMuYm90dG9tSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5XSxoPT57aCYmaC5jbG9uZSYm''@;'; put 'put ''aC5jbG9uZS53dFRhYmxlLlRBQkxFLmNvbnRhaW5zKGMpJiYoZD1oLmNsb25lKX0pLGR9c3luY092ZXJsYXlUYWJsZUNsYXNzTmFtZXMoKXtjb25zdCBjPXRoaXMud3RUYWJsZS5UQUJMRTtUbihbdGhpcy50b3BPdmVybGF5LHRoaXMuaW5saW5lU3RhcnRPdmVybGF5LHRoaXMuYm90dG9tT3Zl''@;'; put 'put ''cmxheSx0aGlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheSx0aGlzLmJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheV0sZD0+e2QmJihkLmNsb25lLnd0VGFibGUuVEFCTEUuY2xhc3NOYW1lPWMuY2xhc3NOYW1lKX0pfX07ZnVuY3Rpb24gUmRlKGwsYyxhKXtyZXR1cm4gYz1mdW5j''@;'; put 'put ''dGlvbiBvJGUobCl7dmFyIGM9ZnVuY3Rpb24gcyRlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQp''@;'; put 'put ''cmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxj''@;'; put 'put ''IGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIGEkZXtjb25zdHJ1Y3RvcihjKXtSZGUodGhpcywic2V0dGluZ3MiLHt9KSxSZGUodGhpcywiZGVmYXVsdHMiLE9i''@;'; put 'put ''amVjdC5mcmVlemUodGhpcy5nZXREZWZhdWx0cygpKSksQ3ModGhpcy5kZWZhdWx0cywoYSxkKT0+e2lmKHZvaWQgMCE9PWNbZF0pdGhpcy5zZXR0aW5nc1tkXT1jW2RdO2Vsc2V7aWYodm9pZCAwPT09YSl0aHJvdyBuZXcgRXJyb3IoYEEgcmVxdWlyZWQgc2V0dGluZyAiJHtkfSIgd2FzIG5v''@;'; put 'put ''dCBwcm92aWRlZGApO3RoaXMuc2V0dGluZ3NbZF09YX19KX1nZXREZWZhdWx0cygpe3JldHVybntmYWNhZGU6dm9pZCAwLHRhYmxlOnZvaWQgMCxpc0RhdGFWaWV3SW5zdGFuY2U6ITAsZXh0ZXJuYWxSb3dDYWxjdWxhdG9yOiExLHN0cmV0Y2hIOiJub25lIixjdXJyZW50Um93Q2xhc3NOYW1l''@;'; put 'put ''Om51bGwsY3VycmVudENvbHVtbkNsYXNzTmFtZTpudWxsLHByZXZlbnRPdmVyZmxvdzooKT0+ITEscHJldmVudFdoZWVsOiExLGRhdGE6dm9pZCAwLGZyZWV6ZU92ZXJsYXlzOiExLGZpeGVkQ29sdW1uc1N0YXJ0OjAsZml4ZWRSb3dzVG9wOjAsZml4ZWRSb3dzQm90dG9tOjAsc2hvdWxkUmVu''@;'; put 'put ''ZGVySW5saW5lU3RhcnRPdmVybGF5OigpPT50aGlzLmdldFNldHRpbmcoImZpeGVkQ29sdW1uc1N0YXJ0Iik+MHx8dGhpcy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJzIikubGVuZ3RoPjAsc2hvdWxkUmVuZGVyVG9wT3ZlcmxheTooKT0+dGhpcy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKT4w''@;'; put 'put ''fHx0aGlzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg+MCxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OigpPT50aGlzLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpPjAsbWluU3BhcmVSb3dzOjAscm93SGVhZGVyczooKT0+W10sY29sdW1uSGVhZGVyczooKT0+W10s''@;'; put 'put ''dG90YWxSb3dzOnZvaWQgMCx0b3RhbENvbHVtbnM6dm9pZCAwLGNlbGxSZW5kZXJlcjooYyxhLGQpPT57T20oZCx0aGlzLmdldFNldHRpbmcoImRhdGEiLGMsYSk/PyIiKX0sY29sdW1uV2lkdGgoKXt9LHJvd0hlaWdodCgpe30sZGVmYXVsdFJvd0hlaWdodDoyMyxkZWZhdWx0Q29sdW1uV2lk''@;'; put 'put ''dGg6NTAsc2VsZWN0aW9uczpudWxsLGhpZGVCb3JkZXJPbk1vdXNlRG93bk92ZXI6ITEsdmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGU6bnVsbCx2aWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZTpudWxsLG9uQ2VsbE1vdXNlRG93bjpudWxsLG9uQ2VsbENvbnRleHRNZW51Om51''@;'; put 'put ''bGwsb25DZWxsTW91c2VPdmVyOm51bGwsb25DZWxsTW91c2VPdXQ6bnVsbCxvbkNlbGxNb3VzZVVwOm51bGwsb25DZWxsRGJsQ2xpY2s6bnVsbCxvbkNlbGxDb3JuZXJNb3VzZURvd246bnVsbCxvbkNlbGxDb3JuZXJEYmxDbGljazpudWxsLGJlZm9yZURyYXc6bnVsbCxvbkRyYXc6bnVsbCxv''@;'; put 'put ''bkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzOm51bGwsb25BZnRlckRyYXdTZWxlY3Rpb246bnVsbCxvbkJlZm9yZURyYXdCb3JkZXJzOm51bGwsb25CZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseTpjPT5jLG9uQmVmb3JlVmlld3BvcnRTY3JvbGxWZXJ0aWNhbGx5OmM9PmMsb25T''@;'; put 'put ''Y3JvbGxIb3Jpem9udGFsbHk6bnVsbCxvblNjcm9sbFZlcnRpY2FsbHk6bnVsbCxvbkJlZm9yZVRvdWNoU2Nyb2xsOm51bGwsb25BZnRlck1vbWVudHVtU2Nyb2xsOm51bGwsb25CZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGg6Yz0+Yyxvbk1vZGlmeVJvd0hlYWRlcldpZHRoOm51bGwsb25N''@;'; put 'put ''b2RpZnlHZXRDZWxsQ29vcmRzOm51bGwsb25CZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXI6Yz0+YyxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjpjPT5jLG9uV2luZG93UmVzaXplOm51bGwsb25Db250YWluZXJFbGVtZW50UmVzaXplOm51bGwscmVuZGVyQWxsQ29sdW1uczoh''@;'; put 'put ''MSxyZW5kZXJBbGxSb3dzOiExLGdyb3VwczohMSxyb3dIZWFkZXJXaWR0aDpudWxsLGNvbHVtbkhlYWRlckhlaWdodDpudWxsLGhlYWRlckNsYXNzTmFtZTpudWxsLHJ0bE1vZGU6ITEsYXJpYVRhZ3M6ITB9fXVwZGF0ZShjLGEpe3JldHVybiB2b2lkIDA9PT1hP0NzKGMsKGQsaCk9Pnt0aGlz''@;'; put 'put ''LnNldHRpbmdzW2hdPWR9KTp0aGlzLnNldHRpbmdzW2NdPWEsdGhpc31nZXRTZXR0aW5nKGMsYSxkLGgsZil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuc2V0dGluZ3NbY10/dGhpcy5zZXR0aW5nc1tjXShhLGQsaCxmKTp2b2lkIDAhPT1hJiZBcnJheS5pc0FycmF5KHRoaXMuc2V0''@;'; put 'put ''dGluZ3NbY10pP3RoaXMuc2V0dGluZ3NbY11bYV06dGhpcy5zZXR0aW5nc1tjXX1nZXRTZXR0aW5nUHVyZShjKXtyZXR1cm4gdGhpcy5zZXR0aW5nc1tjXX1oYXMoYyl7cmV0dXJuISF0aGlzLnNldHRpbmdzW2NdfX1jbGFzcyB1RyBleHRlbmRzIGZie2NvbnN0cnVjdG9yKGMsYSxkLGgpe3N1''@;'; put 'put ''cGVyKGMsYSxkLGgsIm1hc3RlciIpfWFsaWduT3ZlcmxheXNXaXRoVHJpbW1pbmdDb250YWluZXIoKXtjb25zdCBjPVk4KHRoaXMud3RSb290RWxlbWVudCkse3Jvb3RXaW5kb3c6YX09dGhpcy5kb21CaW5kaW5ncztpZihjPT09YSl0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygicHJldmVu''@;'; put 'put ''dE92ZXJmbG93Iil8fCh0aGlzLmhvbGRlci5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsdGhpcy53dFJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIik7ZWxzZXtjb25zdCBkPWMucGFyZW50RWxlbWVudCxoPXJiKGMsImhlaWdodCIsYSksZj1yYihjLCJvdmVyZmxvdyIsYSks''@;'; put 'put ''dj10aGlzLmhvbGRlci5zdHlsZSx7c2Nyb2xsV2lkdGg6UyxzY3JvbGxIZWlnaHQ6Vn09YztsZXQgUT1jLm9mZnNldFdpZHRoLGRlPWMub2Zmc2V0SGVpZ2h0O2lmKGQmJlsiYXV0byIsImhpZGRlbiIsInNjcm9sbCJdLmluY2x1ZGVzKGYpKXtjb25zdCBDZT1jLmNsb25lTm9kZSghMSk7Q2Uu''@;'; put 'put ''c3R5bGUub3ZlcmZsb3c9ImF1dG8iLENlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYy5uZXh0RWxlbWVudFNpYmxpbmc/ZC5pbnNlcnRCZWZvcmUoQ2UsYy5uZXh0RWxlbWVudFNpYmxpbmcpOmQuYXBwZW5kQ2hpbGQoQ2UpO2NvbnN0IE9lPXBhcnNlSW50KHg0KENlLGEpLmhlaWdodCwx''@;'; put 'put ''MCk7ZC5yZW1vdmVDaGlsZChDZSksMD09PU9lJiYoZGU9MCl9ZGU9TWF0aC5taW4oZGUsViksdi5oZWlnaHQ9ImF1dG8iPT09aD8iYXV0byI6YCR7ZGV9cHhgLFE9TWF0aC5taW4oUSxTKSx2LndpZHRoPWAke1F9cHhgLHYub3ZlcmZsb3c9IiIsdGhpcy5oYXNUYWJsZUhlaWdodD0iYXV0byI9''@;'; put 'put ''PT12LmhlaWdodHx8ZGU+MCx0aGlzLmhhc1RhYmxlV2lkdGg9UT4wfXRoaXMuaXNUYWJsZVZpc2libGU9UG0odGhpcy5UQUJMRSl9bWFya092ZXJzaXplZENvbHVtbkhlYWRlcnMoKXtjb25zdHt3dFNldHRpbmdzOmN9PXRoaXMse3d0Vmlld3BvcnQ6YX09dGhpcy5kYXRhQWNjZXNzT2JqZWN0''@;'; put 'put ''LGQ9Im1hc3RlciIsZj1jLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg7aWYoZiYmIWEuaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZFtkXSl7Y29uc3QgUz1jLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKS5sZW5ndGgsVj10aGlzLmdldFJlbmRlcmVkQ29sdW1uc0Nv''@;'; put 'put ''dW50KCk7Zm9yKGxldCBRPTA7UTxmO1ErKylmb3IobGV0IGRlPS0xKlM7ZGU8VjtkZSsrKXRoaXMubWFya0lmT3ZlcnNpemVkQ29sdW1uSGVhZGVyKGRlKTthLmhhc092ZXJzaXplZENvbHVtbkhlYWRlcnNNYXJrZWRbZF09ITB9fX1ybCh1RyxUZGUpLHJsKHVHLFhXKTtjb25zdCBsJGU9dUc7''@;'; put 'put ''ZnVuY3Rpb24gT0wobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGMkZShsKXt2YXIgYz1mdW5jdGlvbiB1JGUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwi''@;'; put 'put ''ZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVy''@;'; put 'put ''biJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgZCRle2NvbnN0cnVjdG9yKGMpe09MKHRoaXMsImNvdW50''@;'; put 'put ''IiwwKSxPTCh0aGlzLCJzdGFydFJvdyIsMCksT0wodGhpcywiZW5kUm93IiwwKSxPTCh0aGlzLCJzdGFydFBvc2l0aW9uIiwwKSx0aGlzLmNvdW50PWMudG90YWxSb3dzLHRoaXMuZW5kUm93PXRoaXMuY291bnQtMX19ZnVuY3Rpb24gdngobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHAkZShs''@;'; put 'put ''KXt2YXIgYz1mdW5jdGlvbiBnJGUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gZEcobCxjKXtyZXR1cm4gbC5nZXQoT2RlKGwsYykpfWZ1bmN0aW9uIE9kZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9UigzOTA5Mik7dmFyIF94PW5ldyBXZWFrTWFwO2NsYXNzIFBMe3N0YXRpYyBnZXQg''@;'; put 'put ''REVGQVVMVF9IRUlHSFQoKXtyZXR1cm4gMjN9Y29uc3RydWN0b3IoYyl7dngodGhpcywiY291bnQiLDApLHZ4KHRoaXMsInN0YXJ0Um93IixudWxsKSx2eCh0aGlzLCJlbmRSb3ciLG51bGwpLHZ4KHRoaXMsInN0YXJ0UG9zaXRpb24iLG51bGwpLHZ4KHRoaXMsImlzVmlzaWJsZUluVHJpbW1p''@;'; put 'put ''bmdDb250YWluZXIiLCExKSxmdW5jdGlvbiBoJGUobCxjLGEpeyhmdW5jdGlvbiBmJGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNl''@;'; put 'put ''dChsLGEpfSh0aGlzLF94LHZvaWQgMCksZnVuY3Rpb24gbSRlKGwsYyxhKXtsLnNldChPZGUobCxjKSxhKX0oX3gsdGhpcyxjKSx0aGlzLmNhbGN1bGF0ZSgpfWNhbGN1bGF0ZSgpe2NvbnN0e2NhbGN1bGF0aW9uVHlwZTpjLG92ZXJyaWRlRm46YSxyb3dIZWlnaHRGbjpkLHNjcm9sbE9mZnNl''@;'; put 'put ''dDpoLHRvdGFsUm93czpmLHZpZXdwb3J0SGVpZ2h0OnZ9PWRHKF94LHRoaXMpLFM9TWF0aC5tYXgoZEcoX3gsdGhpcykuc2Nyb2xsT2Zmc2V0LDApLFY9ZEcoX3gsdGhpcykuaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodHx8MCxRPVMrdi1WO2xldCBkZT0wLHBlPSEwO2NvbnN0IENlPVtdO2xl''@;'; put 'put ''dCBPZSxZZT0wLGV0PTA7Zm9yKGxldCBRdD0wO1F0PGY7UXQrKylpZihPZT1kKFF0KSxpc05hTihPZSkmJihPZT1QTC5ERUZBVUxUX0hFSUdIVCksZGU8PVMmJjIhPT1jJiYodGhpcy5zdGFydFJvdz1RdCxZZT1PZSksZGU+PVMmJmRlKygyPT09Yz9PZTowKTw9USYmKG51bGw9PT10aGlzLnN0''@;'; put 'put ''YXJ0Um93JiYodGhpcy5zdGFydFJvdz1RdCxZZT1PZSksdGhpcy5lbmRSb3c9UXQpLENlLnB1c2goZGUpLGRlKz1PZSxldD1PZSwyIT09YyYmKHRoaXMuZW5kUm93PVF0KSxkZT49USl7cGU9ITE7YnJlYWt9Y29uc3QgTXQ9Mj09PWM/MDpldDtpZih0aGlzLmlzVmlzaWJsZUluVHJpbW1pbmdD''@;'; put 'put ''b250YWluZXI9IShoK3YtVjwoMj09PWM/WWU6MCl8fGg+Q2UuYXQoLTEpK010KSx0aGlzLmVuZFJvdz09PWYtMSYmcGUpZm9yKHRoaXMuc3RhcnRSb3c9dGhpcy5lbmRSb3c7dGhpcy5zdGFydFJvdz4wOyl7Y29uc3QgUXQ9Q2VbdGhpcy5lbmRSb3ddK09lLUNlW3RoaXMuc3RhcnRSb3ctMV07''@;'; put 'put ''aWYoKFF0PD12LVZ8fDIhPT1jKSYmKHRoaXMuc3RhcnRSb3ctPTEpLFF0Pj12LVYpYnJlYWt9MT09PWMmJm51bGwhPT10aGlzLnN0YXJ0Um93JiZhJiZhKHRoaXMpLHRoaXMuc3RhcnRQb3NpdGlvbj1DZVt0aGlzLnN0YXJ0Um93XSx2b2lkIDA9PT10aGlzLnN0YXJ0UG9zaXRpb24mJih0aGlz''@;'; put 'put ''LnN0YXJ0UG9zaXRpb249bnVsbCksZjx0aGlzLmVuZFJvdyYmKHRoaXMuZW5kUm93PWYtMSksbnVsbCE9PXRoaXMuc3RhcnRSb3cmJih0aGlzLmNvdW50PXRoaXMuZW5kUm93LXRoaXMuc3RhcnRSb3crMSl9fWZ1bmN0aW9uIEZMKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiB2JGUobCl7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gXyRlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIGIkZXtjb25zdHJ1Y3RvcihjKXtGTCh0aGlzLCJjb3VudCIsMCksRkwodGhpcywic3RhcnRDb2x1bW4iLDApLEZMKHRoaXMsImVuZENvbHVt''@;'; put 'put ''biIsMCksRkwodGhpcywic3RhcnRQb3NpdGlvbiIsMCksdGhpcy5jb3VudD1jLnRvdGFsQ29sdW1ucyx0aGlzLmVuZENvbHVtbj10aGlzLmNvdW50LTF9fWZ1bmN0aW9uIGJ4KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBDJGUobCl7dmFyIGM9ZnVuY3Rpb24gUyRlKGwsYyl7aWYoIm9iamVj''@;'; put 'put ''dCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBt''@;'; put 'put ''dXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVt''@;'; put 'put ''ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIG1iKGwsYyl7cmV0dXJuIGwuZ2V0KFBkZShsLGMpKX1mdW5jdGlvbiBQZGUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciB6bT1uZXcgV2Vha01hcDtjbGFzcyB5eHtzdGF0aWMgZ2V0IERFRkFVTFRfV0lEVEgoKXtyZXR1cm4gNTB9Y29uc3RydWN0b3IoYyl7Yngo''@;'; put 'put ''dGhpcywiY291bnQiLDApLGJ4KHRoaXMsInN0YXJ0Q29sdW1uIixudWxsKSxieCh0aGlzLCJlbmRDb2x1bW4iLG51bGwpLGJ4KHRoaXMsInN0YXJ0UG9zaXRpb24iLG51bGwpLGJ4KHRoaXMsImlzVmlzaWJsZUluVHJpbW1pbmdDb250YWluZXIiLCExKSxmdW5jdGlvbiB5JGUobCxjLGEpeyhm''@;'; put 'put ''dW5jdGlvbiB3JGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfSh0aGlzLHptLHZvaWQgMCksZnVuY3Rpb24gTSRlKGws''@;'; put 'put ''YyxhKXtsLnNldChQZGUobCxjKSxhKX0oem0sdGhpcyxjKSx0aGlzLmNhbGN1bGF0ZSgpfWNhbGN1bGF0ZSgpe2NvbnN0e2NhbGN1bGF0aW9uVHlwZTpjLG92ZXJyaWRlRm46YSxzY3JvbGxPZmZzZXQ6ZCx0b3RhbENvbHVtbnM6aCx2aWV3cG9ydFdpZHRoOmZ9PW1iKHptLHRoaXMpLHY9TWF0''@;'; put 'put ''aC5tYXgobWIoem0sdGhpcykuc2Nyb2xsT2Zmc2V0LDApLFM9dj4wP2YrMTpmO2xldCBWPTAsUT0hMDtjb25zdCBkZT1bXTtsZXQgcGUsQ2U9MCxPZT0wO2ZvcihsZXQgaHQ9MDtodDxoO2h0KyspaWYocGU9dGhpcy5fZ2V0Q29sdW1uV2lkdGgoaHQpLFY8PXYmJjIhPT1jJiYodGhpcy5zdGFy''@;'; put 'put ''dENvbHVtbj1odCxDZT1wZSksVj49diYmVisoMj09PWM/cGU6MCk8PXYrUyYmKG51bGw9PXRoaXMuc3RhcnRDb2x1bW4mJih0aGlzLnN0YXJ0Q29sdW1uPWh0LENlPXBlKSx0aGlzLmVuZENvbHVtbj1odCksZGUucHVzaChWKSxWKz1wZSxPZT1wZSwyIT09YyYmKHRoaXMuZW5kQ29sdW1uPWh0''@;'; put 'put ''KSxWPj12K2Ype1E9ITE7YnJlYWt9Y29uc3QgZXQ9Mj09PWM/MDpPZSxkdD0yPT09Yz9DZTowO2lmKHRoaXMuaXNWaXNpYmxlSW5UcmltbWluZ0NvbnRhaW5lcj0hKGQrZi1TPC0xKm1iKHptLHRoaXMpLmlubGluZVN0YXJ0T2Zmc2V0fHxkPmRlLmF0KC0xKStldHx8LTEqbWIoem0sdGhpcyku''@;'; put 'put ''c2Nyb2xsT2Zmc2V0LW1iKHptLHRoaXMpLnZpZXdwb3J0V2lkdGg+LTEqZHQpLHRoaXMuZW5kQ29sdW1uPT09aC0xJiZRKWZvcih0aGlzLnN0YXJ0Q29sdW1uPXRoaXMuZW5kQ29sdW1uO3RoaXMuc3RhcnRDb2x1bW4+MDspe2NvbnN0IGh0PWRlW3RoaXMuZW5kQ29sdW1uXStwZS1kZVt0aGlz''@;'; put 'put ''LnN0YXJ0Q29sdW1uLTFdO2lmKChodDw9Znx8MiE9PWMpJiYodGhpcy5zdGFydENvbHVtbi09MSksaHQ+ZilicmVha30xPT09YyYmbnVsbCE9PXRoaXMuc3RhcnRDb2x1bW4mJmEmJmEodGhpcyksdGhpcy5zdGFydFBvc2l0aW9uPWRlW3RoaXMuc3RhcnRDb2x1bW5dLHZvaWQgMD09PXRoaXMu''@;'; put 'put ''c3RhcnRQb3NpdGlvbiYmKHRoaXMuc3RhcnRQb3NpdGlvbj1udWxsKSxoPHRoaXMuZW5kQ29sdW1uJiYodGhpcy5lbmRDb2x1bW49aC0xKSxudWxsIT09dGhpcy5zdGFydENvbHVtbiYmKHRoaXMuY291bnQ9dGhpcy5lbmRDb2x1bW4tdGhpcy5zdGFydENvbHVtbisxKX1fZ2V0Q29sdW1uV2lk''@;'; put 'put ''dGgoYyl7bGV0IGE9bWIoem0sdGhpcykuY29sdW1uV2lkdGhGbihjKTtyZXR1cm4gaXNOYU4oYSkmJihhPXl4LkRFRkFVTFRfV0lEVEgpLGF9fWNvbnN0IEUkZT1jbGFzcyB4JGV7Y29uc3RydWN0b3IoYyxhLGQsaCxmKXt0aGlzLmRhdGFBY2Nlc3NPYmplY3Q9Yyx0aGlzLndvdD1jLndvdCx0''@;'; put 'put ''aGlzLmluc3RhbmNlPXRoaXMud290LHRoaXMuZG9tQmluZGluZ3M9YSx0aGlzLnd0U2V0dGluZ3M9ZCx0aGlzLnd0VGFibGU9Zix0aGlzLm92ZXJzaXplZFJvd3M9W10sdGhpcy5vdmVyc2l6ZWRDb2x1bW5IZWFkZXJzPVtdLHRoaXMuaGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZD17''@;'; put 'put ''fSx0aGlzLmNsaWVudEhlaWdodD0wLHRoaXMuY29udGFpbmVyV2lkdGg9TmFOLHRoaXMucm93SGVhZGVyV2lkdGg9TmFOLHRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9bnVsbCx0aGlzLmV2ZW50TWFuYWdlcj1oLHRoaXMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5kb21CaW5kaW5ncy5yb290V2luZG93LCJyZXNpemUiLCgpPT57dGhpcy5jbGllbnRIZWlnaHQ9dGhpcy5nZXRXb3Jrc3BhY2VIZWlnaHQoKX0pfWdldFdvcmtzcGFjZUhlaWdodCgpe2NvbnN0IGE9dGhpcy5kYXRhQWNjZXNzT2JqZWN0''@;'; put 'put ''LnRvcE92ZXJsYXlUcmltbWluZ0NvbnRhaW5lcjtsZXQgZD0wO3JldHVybiBkPWE9PT10aGlzLmRvbUJpbmRpbmdzLnJvb3RXaW5kb3c/dGhpcy5kb21CaW5kaW5ncy5yb290RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDpabChhKT4wJiZhLmNsaWVudEhlaWdodD4wP2Eu''@;'; put 'put ''Y2xpZW50SGVpZ2h0OjEvMCxkfWdldFdvcmtzcGFjZVdpZHRoKCl7Y29uc3R7d3RTZXR0aW5nczpjfT10aGlzLHtyb290RG9jdW1lbnQ6YSxyb290V2luZG93OmR9PXRoaXMuZG9tQmluZGluZ3MsaD10aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250''@;'; put 'put ''YWluZXIsZj1hLmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCx2PWMuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiksUz1jLmdldFNldHRpbmcoInByZXZlbnRPdmVyZmxvdyIpLFY9Yy5nZXRTZXR0aW5nKCJydGxNb2RlIiksUT10aGlzLnd0VGFibGUuVEFCTEUuZ2V0Qm91bmRpbmdDbGll''@;'; put 'put ''bnRSZWN0KCkscGU9Zi0oVj9RLnJpZ2h0LWY6US5sZWZ0KTtsZXQgQ2UsT2U7aWYoUylyZXR1cm4gV2EodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1lbnQpO2lmKENlPWMuZ2V0U2V0dGluZygiZnJlZXplT3ZlcmxheXMiKT9NYXRoLm1pbihwZSxmKTpNYXRoLm1pbih0aGlzLmdldENvbnRhaW5l''@;'; put 'put ''ckZpbGxXaWR0aCgpLHBlLGYpLGg9PT1kJiZ2PjAmJnRoaXMuc3VtQ29sdW1uV2lkdGhzKDAsdi0xKT5DZSlyZXR1cm4gYS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aWYoaCE9PWQmJihPZT1yYih0aGlzLmRhdGFBY2Nlc3NPYmplY3QuaW5saW5lU3RhcnRPdmVybGF5VHJpbW1pbmdD''@;'; put 'put ''b250YWluZXIsIm92ZXJmbG93IixkKSwic2Nyb2xsIj09PU9lfHwiaGlkZGVuIj09PU9lfHwiYXV0byI9PT1PZSkpcmV0dXJuIE1hdGgubWF4KENlLGguY2xpZW50V2lkdGgpO2NvbnN0IFllPWMuZ2V0U2V0dGluZygic3RyZXRjaEgiKTtyZXR1cm4ibm9uZSIhPT1ZZSYmWWU/Q2U6TWF0aC5t''@;'; put 'put ''YXgoQ2UsV2EodGhpcy53dFRhYmxlLlRBQkxFKSl9aGFzVmVydGljYWxTY3JvbGwoKXtyZXR1cm4gdGhpcy53dFRhYmxlLmhpZGVyLm9mZnNldEhlaWdodD50aGlzLmdldFdvcmtzcGFjZUhlaWdodCgpfWhhc0hvcml6b250YWxTY3JvbGwoKXtyZXR1cm4gdGhpcy53dFRhYmxlLmhpZGVyLm9m''@;'; put 'put ''ZnNldFdpZHRoPnRoaXMuZ2V0V29ya3NwYWNlV2lkdGgoKX1zdW1Db2x1bW5XaWR0aHMoYyxhKXtsZXQgZD0wLGg9Yztmb3IoO2g8YTspZCs9dGhpcy53dFRhYmxlLmdldENvbHVtbldpZHRoKGgpLGgrPTE7cmV0dXJuIGR9Z2V0Q29udGFpbmVyRmlsbFdpZHRoKCl7aWYodGhpcy5jb250YWlu''@;'; put 'put ''ZXJXaWR0aClyZXR1cm4gdGhpcy5jb250YWluZXJXaWR0aDtjb25zdCBjPXRoaXMud3RUYWJsZS5ob2xkZXIsYT10aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnN0eWxlLndpZHRoPSIxMDAlIixhLnN0eWxlLmhlaWdodD0iMXB4IixjLmFwcGVu''@;'; put 'put ''ZENoaWxkKGEpO2NvbnN0IGQ9YS5vZmZzZXRXaWR0aDtyZXR1cm4gdGhpcy5jb250YWluZXJXaWR0aD1kLGMucmVtb3ZlQ2hpbGQoYSksZH1nZXRXb3Jrc3BhY2VPZmZzZXQoKXtyZXR1cm4geHUodGhpcy53dFRhYmxlLlRBQkxFKX1nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy53dFNldHRpbmdzLmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGg/aXNOYU4odGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQpJiYodGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9WmwodGhpcy53dFRhYmxlLlRIRUFEKSk6dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9MCx0aGlzLmNvbHVt''@;'; put 'put ''bkhlYWRlckhlaWdodH1nZXRWaWV3cG9ydEhlaWdodCgpe2xldCBjPXRoaXMuZ2V0V29ya3NwYWNlSGVpZ2h0KCk7aWYoYz09PTEvMClyZXR1cm4gYztjb25zdCBhPXRoaXMuZ2V0Q29sdW1uSGVhZGVySGVpZ2h0KCk7cmV0dXJuIGE+MCYmKGMtPWEpLGN9Z2V0Um93SGVhZGVyV2lkdGgoKXtj''@;'; put 'put ''b25zdCBjPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJyb3dIZWFkZXJXaWR0aCIpLGE9dGhpcy53dFNldHRpbmdzLmdldFNldHRpbmcoInJvd0hlYWRlcnMiKTtpZihjKXt0aGlzLnJvd0hlYWRlcldpZHRoPTA7Zm9yKGxldCBkPTAsaD1hLmxlbmd0aDtkPGg7ZCsrKXRoaXMucm93SGVh''@;'; put 'put ''ZGVyV2lkdGgrPWNbZF18fGN9aWYoaXNOYU4odGhpcy5yb3dIZWFkZXJXaWR0aCkpaWYoYS5sZW5ndGgpe2xldCBkPXRoaXMud3RUYWJsZS5UQUJMRS5xdWVyeVNlbGVjdG9yKCJUSCIpO3RoaXMucm93SGVhZGVyV2lkdGg9MDtmb3IobGV0IGg9MCxmPWEubGVuZ3RoO2g8ZjtoKyspZD8odGhp''@;'; put 'put ''cy5yb3dIZWFkZXJXaWR0aCs9V2EoZCksZD1kLm5leHRTaWJsaW5nKTp0aGlzLnJvd0hlYWRlcldpZHRoKz01MH1lbHNlIHRoaXMucm93SGVhZGVyV2lkdGg9MDtyZXR1cm4gdGhpcy5yb3dIZWFkZXJXaWR0aD10aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygib25Nb2RpZnlSb3dIZWFkZXJX''@;'; put 'put ''aWR0aCIsdGhpcy5yb3dIZWFkZXJXaWR0aCl8fHRoaXMucm93SGVhZGVyV2lkdGgsdGhpcy5yb3dIZWFkZXJXaWR0aH1nZXRWaWV3cG9ydFdpZHRoKCl7Y29uc3QgYz10aGlzLmdldFdvcmtzcGFjZVdpZHRoKCk7aWYoYz09PTEvMClyZXR1cm4gYztjb25zdCBhPXRoaXMuZ2V0Um93SGVhZGVy''@;'; put 'put ''V2lkdGgoKTtyZXR1cm4gYT4wP2MtYTpjfWNyZWF0ZVJvd3NDYWxjdWxhdG9yKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjE7Y29uc3R7d3RTZXR0aW5nczphLHd0VGFibGU6ZH09dGhpcztpZihhLmdldFNldHRpbmcoInJl''@;'; put 'put ''bmRlckFsbFJvd3MiKSYmMT09PWMpcmV0dXJuIG5ldyBkJGUoe3RvdGFsUm93czphLmdldFNldHRpbmcoInRvdGFsUm93cyIpfSk7bGV0IGYsdixoPXRoaXMuZ2V0Vmlld3BvcnRIZWlnaHQoKTt0aGlzLnJvd0hlYWRlcldpZHRoPU5hTjtsZXQgUz10aGlzLmRhdGFBY2Nlc3NPYmplY3QudG9w''@;'; put 'put ''U2Nyb2xsUG9zaXRpb24tdGhpcy5kYXRhQWNjZXNzT2JqZWN0LnRvcFBhcmVudE9mZnNldDtjb25zdCBWPWEuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksUT1hLmdldFNldHRpbmcoImZpeGVkUm93c0JvdHRvbSIpLGRlPWEuZ2V0U2V0dGluZygidG90YWxSb3dzIik7cmV0dXJuIFYmJlM+''@;'; put 'put ''PTAmJih2PXRoaXMuZGF0YUFjY2Vzc09iamVjdC50b3BPdmVybGF5LnN1bUNlbGxTaXplcygwLFYpLFMrPXYsaC09diksUSYmdGhpcy5kYXRhQWNjZXNzT2JqZWN0LmJvdHRvbU92ZXJsYXkuY2xvbmUmJih2PXRoaXMuZGF0YUFjY2Vzc09iamVjdC5ib3R0b21PdmVybGF5LnN1bUNlbGxTaXpl''@;'; put 'put ''cyhkZS1RLGRlKSxoLT12KSxmPWQuaG9sZGVyLmNsaWVudEhlaWdodD09PWQuaG9sZGVyLm9mZnNldEhlaWdodD8wOkV1KHRoaXMuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50KSxuZXcgUEwoe3ZpZXdwb3J0SGVpZ2h0Omgsc2Nyb2xsT2Zmc2V0OlMsdG90YWxSb3dzOmEuZ2V0U2V0dGluZygi''@;'; put 'put ''dG90YWxSb3dzIikscm93SGVpZ2h0Rm46cGU9PmQuZ2V0Um93SGVpZ2h0KHBlKSxvdmVycmlkZUZuOmEuZ2V0U2V0dGluZ1B1cmUoInZpZXdwb3J0Um93Q2FsY3VsYXRvck92ZXJyaWRlIiksY2FsY3VsYXRpb25UeXBlOmMsaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodDpmfSl9Y3JlYXRlQ29s''@;'; put 'put ''dW1uc0NhbGN1bGF0b3IoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTtjb25zdHt3dFNldHRpbmdzOmEsd3RUYWJsZTpkfT10aGlzO2lmKGEuZ2V0U2V0dGluZygicmVuZGVyQWxsQ29sdW1ucyIpJiYxPT09YylyZXR1cm4g''@;'; put 'put ''bmV3IGIkZSh7dG90YWxDb2x1bW5zOmEuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIil9KTtsZXQgaD10aGlzLmdldFZpZXdwb3J0V2lkdGgoKSxmPU1hdGguYWJzKHRoaXMuZGF0YUFjY2Vzc09iamVjdC5pbmxpbmVTdGFydFNjcm9sbFBvc2l0aW9uKS10aGlzLmRhdGFBY2Nlc3NPYmplY3Qu''@;'; put 'put ''aW5saW5lU3RhcnRQYXJlbnRPZmZzZXQ7dGhpcy5jb2x1bW5IZWFkZXJIZWlnaHQ9TmFOO2NvbnN0IHY9YS5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO2lmKHYmJmY+PTApe2NvbnN0IFM9dGhpcy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0T3ZlcmxheS5zdW1DZWxsU2l6''@;'; put 'put ''ZXMoMCx2KTtmKz1TLGgtPVN9cmV0dXJuIGQuaG9sZGVyLmNsaWVudFdpZHRoIT09ZC5ob2xkZXIub2Zmc2V0V2lkdGgmJihoLT1FdSh0aGlzLmRvbUJpbmRpbmdzLnJvb3REb2N1bWVudCkpLG5ldyB5eCh7dmlld3BvcnRXaWR0aDpoLHNjcm9sbE9mZnNldDpmLHRvdGFsQ29sdW1uczphLmdl''@;'; put 'put ''dFNldHRpbmcoInRvdGFsQ29sdW1ucyIpLGNvbHVtbldpZHRoRm46Uz0+ZC5nZXRDb2x1bW5XaWR0aChTKSxvdmVycmlkZUZuOmEuZ2V0U2V0dGluZ1B1cmUoInZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIiksY2FsY3VsYXRpb25UeXBlOmMsaW5saW5lU3RhcnRPZmZzZXQ6dGhp''@;'; put 'put ''cy5kYXRhQWNjZXNzT2JqZWN0LmlubGluZVN0YXJ0UGFyZW50T2Zmc2V0fSl9Y3JlYXRlUmVuZGVyQ2FsY3VsYXRvcnMoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0e3d0U2V0dGluZ3M6YX09dGhpcztpZihjJiYh''@;'; put 'put ''YS5nZXRTZXR0aW5nKCJyZW5kZXJBbGxSb3dzIikpe2NvbnN0IGQ9dGhpcy5jcmVhdGVSb3dzQ2FsY3VsYXRvcigyKTtjPXRoaXMuYXJlQWxsUHJvcG9zZWRWaXNpYmxlUm93c0FscmVhZHlSZW5kZXJlZChkKX1pZihjJiYhYS5nZXRTZXR0aW5nKCJyZW5kZXJBbGxDb2x1bW5zIikpe2NvbnN0''@;'; put 'put ''IGQ9dGhpcy5jcmVhdGVDb2x1bW5zQ2FsY3VsYXRvcigyKTtjPXRoaXMuYXJlQWxsUHJvcG9zZWRWaXNpYmxlQ29sdW1uc0FscmVhZHlSZW5kZXJlZChkKX1yZXR1cm4gY3x8KHRoaXMucm93c1JlbmRlckNhbGN1bGF0b3I9dGhpcy5jcmVhdGVSb3dzQ2FsY3VsYXRvcigxKSx0aGlzLmNvbHVt''@;'; put 'put ''bnNSZW5kZXJDYWxjdWxhdG9yPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoMSkpLHRoaXMucm93c1Zpc2libGVDYWxjdWxhdG9yPW51bGwsdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9bnVsbCxjfWNyZWF0ZVZpc2libGVDYWxjdWxhdG9ycygpe3RoaXMucm93c1Zpc2libGVD''@;'; put 'put ''YWxjdWxhdG9yPXRoaXMuY3JlYXRlUm93c0NhbGN1bGF0b3IoMiksdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3I9dGhpcy5jcmVhdGVDb2x1bW5zQ2FsY3VsYXRvcigyKX1jcmVhdGVQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvcnMoKXt0aGlzLnJvd3NQYXJ0aWFsbHlWaXNpYmxlQ2Fs''@;'; put 'put ''Y3VsYXRvcj10aGlzLmNyZWF0ZVJvd3NDYWxjdWxhdG9yKDMpLHRoaXMuY29sdW1uc1BhcnRpYWxseVZpc2libGVDYWxjdWxhdG9yPXRoaXMuY3JlYXRlQ29sdW1uc0NhbGN1bGF0b3IoMyl9YXJlQWxsUHJvcG9zZWRWaXNpYmxlUm93c0FscmVhZHlSZW5kZXJlZChjKXtpZighdGhpcy5yb3dz''@;'; put 'put ''VmlzaWJsZUNhbGN1bGF0b3IpcmV0dXJuITE7bGV0e3N0YXJ0Um93OmEsZW5kUm93OmR9PWM7aWYobnVsbD09PWEmJm51bGw9PT1kKXtpZighYy5pc1Zpc2libGVJblRyaW1taW5nQ29udGFpbmVyKXJldHVybiEwO2E9dGhpcy5yb3dzUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3Iuc3RhcnRS''@;'; put 'put ''b3csZD10aGlzLnJvd3NQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvci5lbmRSb3d9Y29uc3R7c3RhcnRSb3c6aCxlbmRSb3c6Zn09dGhpcy5yb3dzUmVuZGVyQ2FsY3VsYXRvcjtyZXR1cm4hKGE8aHx8YT09PWgmJmE+MHx8ZD5mfHxkPT09ZiYmZDx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGlu''@;'; put 'put ''ZygidG90YWxSb3dzIiktMSl9YXJlQWxsUHJvcG9zZWRWaXNpYmxlQ29sdW1uc0FscmVhZHlSZW5kZXJlZChjKXtpZighdGhpcy5jb2x1bW5zVmlzaWJsZUNhbGN1bGF0b3IpcmV0dXJuITE7bGV0e3N0YXJ0Q29sdW1uOmEsZW5kQ29sdW1uOmR9PWM7aWYobnVsbD09PWEmJm51bGw9PT1kKXtp''@;'; put 'put ''ZighYy5pc1Zpc2libGVJblRyaW1taW5nQ29udGFpbmVyKXJldHVybiEwO2E9dGhpcy5jb2x1bW5zUGFydGlhbGx5VmlzaWJsZUNhbGN1bGF0b3Iuc3RhcnRDb2x1bW4sZD10aGlzLmNvbHVtbnNQYXJ0aWFsbHlWaXNpYmxlQ2FsY3VsYXRvci5lbmRDb2x1bW59Y29uc3R7c3RhcnRDb2x1bW46''@;'; put 'put ''aCxlbmRDb2x1bW46Zn09dGhpcy5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcjtyZXR1cm4hKGE8aHx8YT09PWgmJmE+MHx8ZD5mfHxkPT09ZiYmZDx0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIiktMSl9cmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2Vk''@;'; put 'put ''KCl7Q3ModGhpcy5oYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkLChjLGEsZCk9PntkW2FdPXZvaWQgMH0pfX07ZnVuY3Rpb24gRmRlKGwsYyxhKXtOZGUobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIE5kZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gTmMobCxjKXtyZXR1cm4gbC5nZXQod3gobCxjKSl9ZnVuY3Rpb24gSGRlKGwsYyxhKXtyZXR1cm4gbC5zZXQod3gobCxjKSxhKSxhfWZ1bmN0aW9uIHd4KGwsYyxhKXtp''@;'; put 'put ''ZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1SKDkzOTA5KTt2YXIgdWY9bmV3IFdlYWtNYXAs''@;'; put 'put ''ajE9bmV3IFdlYWtNYXAsTkw9bmV3IFdlYWtTZXQ7Y2xhc3MgayRle2NvbnN0cnVjdG9yKCl7KGZ1bmN0aW9uIFQkZShsLGMpe05kZShsLGMpLGMuYWRkKGwpfSkodGhpcyxOTCksRmRlKHRoaXMsdWYsdm9pZCAwKSxGZGUodGhpcyxqMSx2b2lkIDApfXNldEFjdGl2ZU92ZXJsYXkoYyl7cmV0''@;'; put 'put ''dXJuIEhkZShqMSx0aGlzLGMpLHRoaXN9c2V0QWN0aXZlU2VsZWN0aW9uKGMpe3JldHVybiBIZGUodWYsdGhpcyxjKSx0aGlzfXNjYW4oKXtjb25zdCBjPU5jKHVmLHRoaXMpLnNldHRpbmdzLnNlbGVjdGlvblR5cGUsYT1uZXcgU2V0O3JldHVybiJhY3RpdmUtaGVhZGVyIj09PWM/KHRoaXMu''@;'; put 'put ''c2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShkPT5hLmFkZChkKSksdGhpcy5zY2FuUm93c0luSGVhZGVyc1JhbmdlKGQ9PmEuYWRkKGQpKSk6ImFyZWEiPT09Yz90aGlzLnNjYW5DZWxsc1JhbmdlKGQ9PmEuYWRkKGQpKToiZm9jdXMiPT09Yz8odGhpcy5zY2FuQ29sdW1uc0luSGVhZGVyc1Jh''@;'; put 'put ''bmdlKGQ9PmEuYWRkKGQpKSx0aGlzLnNjYW5Sb3dzSW5IZWFkZXJzUmFuZ2UoZD0+YS5hZGQoZCkpLHRoaXMuc2NhbkNlbGxzUmFuZ2UoZD0+YS5hZGQoZCkpKToiZmlsbCI9PT1jP3RoaXMuc2NhbkNlbGxzUmFuZ2UoZD0+YS5hZGQoZCkpOiJoZWFkZXIiPT09Yz8odGhpcy5zY2FuQ29sdW1u''@;'; put 'put ''c0luSGVhZGVyc1JhbmdlKGQ9PmEuYWRkKGQpKSx0aGlzLnNjYW5Sb3dzSW5IZWFkZXJzUmFuZ2UoZD0+YS5hZGQoZCkpKToicm93Ij09PWM/KHRoaXMuc2NhblJvd3NJbkhlYWRlcnNSYW5nZShkPT5hLmFkZChkKSksdGhpcy5zY2FuUm93c0luQ2VsbHNSYW5nZShkPT5hLmFkZChkKSkpOiJj''@;'; put 'put ''b2x1bW4iPT09YyYmKHRoaXMuc2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShkPT5hLmFkZChkKSksdGhpcy5zY2FuQ29sdW1uc0luQ2VsbHNSYW5nZShkPT5hLmFkZChkKSkpLGF9c2NhbkNvbHVtbnNJbkhlYWRlcnNSYW5nZShjKXtjb25zdFthLGQsaCxmXT1OYyh1Zix0aGlzKS5nZXRDb3Ju''@;'; put 'put ''ZXJzKCkse3d0VGFibGU6dn09TmMoajEsdGhpcyksUz12LmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCksVj12LmdldENvbHVtbkhlYWRlcnNDb3VudCgpO2xldCBRPTA7Zm9yKGxldCBkZT0tdi5nZXRSb3dIZWFkZXJzQ291bnQoKTtkZTxTO2RlKyspe2NvbnN0IHBlPXYuY29sdW1uRmlsdGVy''@;'; put 'put ''LnJlbmRlcmVkVG9Tb3VyY2UoZGUpO2lmKCEocGU8ZHx8cGU+Zikpe2ZvcihsZXQgQ2U9LVY7Q2U8MDtDZSsrKXtpZihDZTxhfHxDZT5oKWNvbnRpbnVlO2NvbnN0IE9lPUNlK1Y7bGV0IFllPXYuZ2V0Q29sdW1uSGVhZGVyKHBlLE9lKTtjb25zdCBldD1OYyhqMSx0aGlzKS5nZXRTZXR0aW5n''@;'; put 'put ''KCJvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlciIscGUsT2Use3NlbGVjdGlvblR5cGU6TmModWYsdGhpcykuc2V0dGluZ3Muc2VsZWN0aW9uVHlwZSxjb2x1bW5DdXJzb3I6USxzZWxlY3Rpb25XaWR0aDpmLWQrMX0pO251bGwhPT1ldCYmKGV0IT09cGUmJihZZT12LmdldENvbHVt''@;'; put 'put ''bkhlYWRlcihldCxPZSkpLGMoWWUpKX1RKz0xfX19c2NhblJvd3NJbkhlYWRlcnNSYW5nZShjKXtjb25zdFthLGQsaCxmXT1OYyh1Zix0aGlzKS5nZXRDb3JuZXJzKCkse3d0VGFibGU6dn09TmMoajEsdGhpcyksUz12LmdldFJlbmRlcmVkUm93c0NvdW50KCksVj12LmdldFJvd0hlYWRlcnND''@;'; put 'put ''b3VudCgpO2xldCBRPTA7Zm9yKGxldCBkZT0tdi5nZXRDb2x1bW5IZWFkZXJzQ291bnQoKTtkZTxTO2RlKyspe2NvbnN0IHBlPXYucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoZGUpO2lmKCEocGU8YXx8cGU+aCkpe2ZvcihsZXQgQ2U9LVY7Q2U8MDtDZSsrKXtpZihDZTxkfHxDZT5mKWNv''@;'; put 'put ''bnRpbnVlO2NvbnN0IE9lPUNlK1Y7bGV0IFllPXYuZ2V0Um93SGVhZGVyKHBlLE9lKTtjb25zdCBldD1OYyhqMSx0aGlzKS5nZXRTZXR0aW5nKCJvbkJlZm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlciIscGUsT2Use3NlbGVjdGlvblR5cGU6TmModWYsdGhpcykuc2V0dGluZ3Muc2VsZWN0aW9u''@;'; put 'put ''VHlwZSxyb3dDdXJzb3I6USxzZWxlY3Rpb25IZWlnaHQ6aC1hKzF9KTtudWxsIT09ZXQmJihldCE9PXBlJiYoWWU9di5nZXRSb3dIZWFkZXIoZXQsT2UpKSxjKFllKSl9USs9MX19fXNjYW5DZWxsc1JhbmdlKGMpe2NvbnN0W2EsZCxoLGZdPU5jKHVmLHRoaXMpLmdldENvcm5lcnMoKSx7d3RU''@;'; put 'put ''YWJsZTp2fT1OYyhqMSx0aGlzKTt3eChOTCx0aGlzLGhHKS5jYWxsKHRoaXMsKFMsVik9PntpZihTPj1hJiZTPD1oJiZWPj1kJiZWPD1mKXtjb25zdCBRPXYuZ2V0Q2VsbChOYyhqMSx0aGlzKS5jcmVhdGVDZWxsQ29vcmRzKFMsVikpLGRlPU5jKGoxLHRoaXMpLmdldFNldHRpbmcoIm9uQWZ0''@;'; put 'put ''ZXJEcmF3U2VsZWN0aW9uIixTLFYsTmModWYsdGhpcykuc2V0dGluZ3MubGF5ZXJMZXZlbCk7InN0cmluZyI9PXR5cGVvZiBkZSYmbWkoUSxkZSksYyhRKX19KX1zY2FuUm93c0luQ2VsbHNSYW5nZShjKXtjb25zdFthLCxkXT1OYyh1Zix0aGlzKS5nZXRDb3JuZXJzKCkse3d0VGFibGU6aH09''@;'; put 'put ''TmMoajEsdGhpcyk7d3goTkwsdGhpcyxoRykuY2FsbCh0aGlzLChmLHYpPT57aWYoZj49YSYmZjw9ZCl7Y29uc3QgUz1oLmdldENlbGwoTmMoajEsdGhpcykuY3JlYXRlQ2VsbENvb3JkcyhmLHYpKTtjKFMpfX0pfXNjYW5Db2x1bW5zSW5DZWxsc1JhbmdlKGMpe2NvbnN0WyxhLCxkXT1OYyh1''@;'; put 'put ''Zix0aGlzKS5nZXRDb3JuZXJzKCkse3d0VGFibGU6aH09TmMoajEsdGhpcyk7d3goTkwsdGhpcyxoRykuY2FsbCh0aGlzLChmLHYpPT57aWYodj49YSYmdjw9ZCl7Y29uc3QgUz1oLmdldENlbGwoTmMoajEsdGhpcykuY3JlYXRlQ2VsbENvb3JkcyhmLHYpKTtjKFMpfX0pfX1mdW5jdGlvbiBo''@;'; put 'put ''RyhsKXtjb25zdHt3dFRhYmxlOmN9PU5jKGoxLHRoaXMpLGE9Yy5nZXRSZW5kZXJlZFJvd3NDb3VudCgpLGQ9Yy5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpO2ZvcihsZXQgaD0wO2g8YTtoKz0xKXtjb25zdCBmPWMucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoaCk7Zm9yKGxldCB2PTA7''@;'; put 'put ''djxkO3YrPTEpbChmLGMuY29sdW1uRmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UodikpfX1jb25zdCBWZGU9Y2xhc3MgQSRle2NvbnN0cnVjdG9yKGMsYSl7YSYmKHRoaXMuZXZlbnRNYW5hZ2VyPWMuZXZlbnRNYW5hZ2VyLHRoaXMuaW5zdGFuY2U9Yyx0aGlzLndvdD1jLHRoaXMuc2V0dGluZ3M9''@;'; put 'put ''YSx0aGlzLm1vdXNlRG93bj0hMSx0aGlzLm1haW49bnVsbCx0aGlzLnRvcD1udWxsLHRoaXMuYm90dG9tPW51bGwsdGhpcy5zdGFydD1udWxsLHRoaXMuZW5kPW51bGwsdGhpcy50b3BTdHlsZT1udWxsLHRoaXMuYm90dG9tU3R5bGU9bnVsbCx0aGlzLnN0YXJ0U3R5bGU9bnVsbCx0aGlzLmVu''@;'; put 'put ''ZFN0eWxlPW51bGwsdGhpcy5jb3JuZXJEZWZhdWx0U3R5bGU9ckcsdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldD0tcGFyc2VJbnQodGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsMTApLzIsdGhpcy5jb3JuZXI9bnVsbCx0aGlzLmNvcm5lclN0eWxlPW51bGwsdGhpcy5jcmVhdGVC''@;'; put 'put ''b3JkZXJzKGEpLHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSl9cmVnaXN0ZXJMaXN0ZW5lcnMoKXtjb25zdCBjPXRoaXMud290LnJvb3REb2N1bWVudC5ib2R5O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywibW91c2Vkb3duIiwoKT0+dGhpcy5vbk1vdXNlRG93bigpKSx0''@;'; put 'put ''aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNldXAiLCgpPT50aGlzLm9uTW91c2VVcCgpKTtmb3IobGV0IGE9MCxkPXRoaXMubWFpbi5jaGlsZE5vZGVzLmxlbmd0aDthPGQ7YSsrKXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5tYWluLmNo''@;'; put 'put ''aWxkTm9kZXNbYV0sIm1vdXNlZW50ZXIiLGY9PnRoaXMub25Nb3VzZUVudGVyKGYsdGhpcy5tYWluLmNoaWxkTm9kZXNbYV0pKX1vbk1vdXNlRG93bigpe3RoaXMubW91c2VEb3duPSEwfW9uTW91c2VVcCgpe3RoaXMubW91c2VEb3duPSExfW9uTW91c2VFbnRlcihjLGEpe2lmKCF0aGlzLm1v''@;'; put 'put ''dXNlRG93bnx8IXRoaXMud290LmdldFNldHRpbmcoImhpZGVCb3JkZXJPbk1vdXNlRG93bk92ZXIiKSlyZXR1cm47Yy5wcmV2ZW50RGVmYXVsdCgpLGpoKGMpO2NvbnN0IGQ9dGhpcyxoPXRoaXMud290LnJvb3REb2N1bWVudC5ib2R5LGY9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLnN0''@;'; put 'put ''eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoaCwibW91c2Vtb3ZlIixmdW5jdGlvbiBTKFYpeyhmdW5jdGlvbiB2KFYpe2lmKFYuY2xpZW50WTxNYXRoLmZsb29yKGYudG9wKXx8Vi5jbGllbnRZPk1hdGguY2VpbChmLnRvcCtmLmhlaWdodCl8''@;'; put 'put ''fFYuY2xpZW50WDxNYXRoLmZsb29yKGYubGVmdCl8fFYuY2xpZW50WD5NYXRoLmNlaWwoZi5sZWZ0K2Yud2lkdGgpKXJldHVybiEwfSkoVikmJihkLmV2ZW50TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKGgsIm1vdXNlbW92ZSIsUyksYS5zdHlsZS5kaXNwbGF5PSJibG9jayIpfSl9Y3Jl''@;'; put 'put ''YXRlQm9yZGVycyhjKXtjb25zdHtyb290RG9jdW1lbnQ6YX09dGhpcy53b3Q7dGhpcy5tYWluPWEuY3JlYXRlRWxlbWVudCgiZGl2Iik7Y29uc3QgZD1bInRvcCIsInN0YXJ0IiwiYm90dG9tIiwiZW5kIiwiY29ybmVyIl07bGV0IGg9dGhpcy5tYWluLnN0eWxlO2gucG9zaXRpb249ImFic29s''@;'; put 'put ''dXRlIixoLnRvcD0wLGgubGVmdD0wO2ZvcihsZXQgUz0wO1M8NTtTKyspe2NvbnN0IFY9ZFtTXSxRPWEuY3JlYXRlRWxlbWVudCgiZGl2Iik7US5jbGFzc05hbWU9YHd0Qm9yZGVyICR7dGhpcy5zZXR0aW5ncy5jbGFzc05hbWV8fCIifWAsdGhpcy5zZXR0aW5nc1tWXSYmdGhpcy5zZXR0aW5n''@;'; put 'put ''c1tWXS5oaWRlJiYoUS5jbGFzc05hbWUrPSIgaGlkZGVuIiksaD1RLnN0eWxlLGguYmFja2dyb3VuZENvbG9yPXRoaXMuc2V0dGluZ3NbVl0mJnRoaXMuc2V0dGluZ3NbVl0uY29sb3I/dGhpcy5zZXR0aW5nc1tWXS5jb2xvcjpjLmJvcmRlci5jb2xvcixoLmhlaWdodD10aGlzLnNldHRpbmdz''@;'; put 'put ''W1ZdJiZ0aGlzLnNldHRpbmdzW1ZdLndpZHRoP2Ake3RoaXMuc2V0dGluZ3NbVl0ud2lkdGh9cHhgOmAke2MuYm9yZGVyLndpZHRofXB4YCxoLndpZHRoPXRoaXMuc2V0dGluZ3NbVl0mJnRoaXMuc2V0dGluZ3NbVl0ud2lkdGg/YCR7dGhpcy5zZXR0aW5nc1tWXS53aWR0aH1weGA6YCR7Yy5i''@;'; put 'put ''b3JkZXIud2lkdGh9cHhgLHRoaXMubWFpbi5hcHBlbmRDaGlsZChRKX10aGlzLnRvcD10aGlzLm1haW4uY2hpbGROb2Rlc1swXSx0aGlzLnN0YXJ0PXRoaXMubWFpbi5jaGlsZE5vZGVzWzFdLHRoaXMuYm90dG9tPXRoaXMubWFpbi5jaGlsZE5vZGVzWzJdLHRoaXMuZW5kPXRoaXMubWFpbi5j''@;'; put 'put ''aGlsZE5vZGVzWzNdLHRoaXMudG9wU3R5bGU9dGhpcy50b3Auc3R5bGUsdGhpcy5zdGFydFN0eWxlPXRoaXMuc3RhcnQuc3R5bGUsdGhpcy5ib3R0b21TdHlsZT10aGlzLmJvdHRvbS5zdHlsZSx0aGlzLmVuZFN0eWxlPXRoaXMuZW5kLnN0eWxlLHRoaXMuY29ybmVyPXRoaXMubWFpbi5jaGls''@;'; put 'put ''ZE5vZGVzWzRdLHRoaXMuY29ybmVyLmNsYXNzTmFtZSs9IiBjb3JuZXIiLHRoaXMuY29ybmVyU3R5bGU9dGhpcy5jb3JuZXIuc3R5bGUsdGhpcy5jb3JuZXJTdHlsZS53aWR0aD10aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCx0aGlzLmNvcm5lclN0eWxlLmhlaWdodD10aGlzLmNvcm5l''@;'; put 'put ''ckRlZmF1bHRTdHlsZS5oZWlnaHQsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXI9W3RoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRoLHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlclN0eWxlLHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlckNvbG9yXS5qb2luKCIgIiks''@;'; put 'put ''VDQoKSYmdGhpcy5pbnN0YW5jZS5nZXRTZXR0aW5nKCJpc0RhdGFWaWV3SW5zdGFuY2UiKSYmdGhpcy5jcmVhdGVNdWx0aXBsZVNlbGVjdG9ySGFuZGxlcygpLHRoaXMuZGlzYXBwZWFyKCk7Y29uc3R7d3RUYWJsZTpmfT10aGlzLndvdDtsZXQgdj1mLmJvcmRlcnNIb2xkZXI7dnx8KHY9YS5j''@;'; put 'put ''cmVhdGVFbGVtZW50KCJkaXYiKSx2LmNsYXNzTmFtZT0iaHRCb3JkZXJzIixmLmJvcmRlcnNIb2xkZXI9dixmLnNwcmVhZGVyLmFwcGVuZENoaWxkKHYpKSx2LmFwcGVuZENoaWxkKHRoaXMubWFpbil9Y3JlYXRlTXVsdGlwbGVTZWxlY3RvckhhbmRsZXMoKXtjb25zdHtyb290RG9jdW1lbnQ6''@;'; put 'put ''Y309dGhpcy53b3Q7dGhpcy5zZWxlY3Rpb25IYW5kbGVzPXt0b3A6Yy5jcmVhdGVFbGVtZW50KCJESVYiKSx0b3BIaXRBcmVhOmMuY3JlYXRlRWxlbWVudCgiRElWIiksYm90dG9tOmMuY3JlYXRlRWxlbWVudCgiRElWIiksYm90dG9tSGl0QXJlYTpjLmNyZWF0ZUVsZW1lbnQoIkRJViIpfSx0''@;'; put 'put ''aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wLmNsYXNzTmFtZT0idG9wU2VsZWN0aW9uSGFuZGxlIHRvcExlZnRTZWxlY3Rpb25IYW5kbGUiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy50b3BIaXRBcmVhLmNsYXNzTmFtZT0idG9wU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEgdG9wTGVmdFNlbGVjdGlv''@;'; put 'put ''bkhhbmRsZS1IaXRBcmVhIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tLmNsYXNzTmFtZT0iYm90dG9tU2VsZWN0aW9uSGFuZGxlIGJvdHRvbVJpZ2h0U2VsZWN0aW9uSGFuZGxlIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tSGl0QXJlYS5jbGFzc05hbWU9ImJvdHRvbVNlbGVj''@;'; put 'put ''dGlvbkhhbmRsZS1IaXRBcmVhIGJvdHRvbVJpZ2h0U2VsZWN0aW9uSGFuZGxlLUhpdEFyZWEiLHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXM9e3RvcDp0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wLnN0eWxlLHRvcEhpdEFyZWE6dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnRvcEhpdEFyZWEu''@;'; put 'put ''c3R5bGUsYm90dG9tOnRoaXMuc2VsZWN0aW9uSGFuZGxlcy5ib3R0b20uc3R5bGUsYm90dG9tSGl0QXJlYTp0aGlzLnNlbGVjdGlvbkhhbmRsZXMuYm90dG9tSGl0QXJlYS5zdHlsZX0sQ3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaGVpZ2h0OiI0MHB4Iix3aWR0aDoiNDBweCIsImJvcmRlci1y''@;'; put 'put ''YWRpdXMiOmAke3BhcnNlSW50KDQwLzEuNSwxMCl9cHhgfSwodixTKT0+e3RoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tSGl0QXJlYVtTXT12LHRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMudG9wSGl0QXJlYVtTXT12fSksQ3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaGVp''@;'; put 'put ''Z2h0OiIxMHB4Iix3aWR0aDoiMTBweCIsImJvcmRlci1yYWRpdXMiOmAke3BhcnNlSW50KDEwLzEuNSwxMCl9cHhgLGJhY2tncm91bmQ6IiNGNUY1RkYiLGJvcmRlcjoiMXB4IHNvbGlkICM0Mjg1YzgifSwodixTKT0+e3RoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMuYm90dG9tW1NdPXYs''@;'; put 'put ''dGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy50b3BbU109dn0pLHRoaXMubWFpbi5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdGlvbkhhbmRsZXMudG9wKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbSksdGhpcy5tYWluLmFwcGVuZENoaWxkKHRo''@;'; put 'put ''aXMuc2VsZWN0aW9uSGFuZGxlcy50b3BIaXRBcmVhKSx0aGlzLm1haW4uYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3Rpb25IYW5kbGVzLmJvdHRvbUhpdEFyZWEpfWlzUGFydFJhbmdlKGMsYSl7Y29uc3QgZD10aGlzLndvdC5zZWxlY3Rpb25NYW5hZ2VyLmdldEFyZWFTZWxlY3Rpb24oKTtyZXR1''@;'; put 'put ''cm4hKCFkLmNlbGxSYW5nZXx8Yz09PWQuY2VsbFJhbmdlLnRvLnJvdyYmYT09PWQuY2VsbFJhbmdlLnRvLmNvbCl9dXBkYXRlTXVsdGlwbGVTZWxlY3Rpb25IYW5kbGVzUG9zaXRpb24oYyxhLGQsaCxmLHYpe2NvbnN0IFY9dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJydGxNb2Rl''@;'; put 'put ''Iik/InJpZ2h0IjoibGVmdCIse3RvcDpRLHRvcEhpdEFyZWE6ZGUsYm90dG9tOnBlLGJvdHRvbUhpdEFyZWE6Q2V9PXRoaXMuc2VsZWN0aW9uSGFuZGxlcy5zdHlsZXMsT2U9cGFyc2VJbnQoUS5ib3JkZXJXaWR0aCwxMCksWWU9cGFyc2VJbnQoUS53aWR0aCwxMCksZXQ9cGFyc2VJbnQoZGUu''@;'; put 'put ''d2lkdGgsMTApLGR0PXRoaXMud290Lnd0VGFibGUuZ2V0V2lkdGgoKSxodD10aGlzLndvdC53dFRhYmxlLmdldEhlaWdodCgpO1EudG9wPWAke3BhcnNlSW50KGQtWWUtMSwxMCl9cHhgLFFbVl09YCR7cGFyc2VJbnQoaC1ZZS0xLDEwKX1weGAsZGUudG9wPWAke3BhcnNlSW50KGQtZXQvNCoz''@;'; put 'put ''LDEwKX1weGAsZGVbVl09YCR7cGFyc2VJbnQoaC1ldC80KjMsMTApfXB4YDtjb25zdCBNdD1NYXRoLm1pbihwYXJzZUludChoK2YsMTApLGR0LVllLTIqT2UpLFF0PU1hdGgubWluKHBhcnNlSW50KGgrZi1ldC80LDEwKSxkdC1ldC0yKk9lKTtwZVtWXT1gJHtNdH1weGAsQ2VbVl09YCR7UXR9''@;'; put 'put ''cHhgO2NvbnN0IGxuPU1hdGgubWluKHBhcnNlSW50KGQrdiwxMCksaHQtWWUtMipPZSksdm49TWF0aC5taW4ocGFyc2VJbnQoZCt2LWV0LzQsMTApLGh0LWV0LTIqT2UpO3BlLnRvcD1gJHtsbn1weGAsQ2UudG9wPWAke3ZufXB4YCx0aGlzLnNldHRpbmdzLmJvcmRlci5jb3JuZXJWaXNpYmxl''@;'; put 'put ''JiZ0aGlzLnNldHRpbmdzLmJvcmRlci5jb3JuZXJWaXNpYmxlKCk/KFEuZGlzcGxheT0iYmxvY2siLGRlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmlzUGFydFJhbmdlKGMsYSk/KHBlLmRpc3BsYXk9Im5vbmUiLENlLmRpc3BsYXk9Im5vbmUiKToocGUuZGlzcGxheT0iYmxvY2siLENlLmRpc3Bs''@;'; put 'put ''YXk9ImJsb2NrIikpOihRLmRpc3BsYXk9Im5vbmUiLHBlLmRpc3BsYXk9Im5vbmUiLGRlLmRpc3BsYXk9Im5vbmUiLENlLmRpc3BsYXk9Im5vbmUiKSxjPT09dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmaXhlZFJvd3NUb3AiKXx8YT09PXRoaXMud290Lnd0U2V0dGluZ3MuZ2V0''@;'; put 'put ''U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKT8oUS56SW5kZXg9Ijk5OTkiLGRlLnpJbmRleD0iOTk5OSIpOihRLnpJbmRleD0iIixkZS56SW5kZXg9IiIpfWFwcGVhcihjKXtpZih0aGlzLmRpc2FibGVkKXJldHVybjtjb25zdHt3dFRhYmxlOmEscm9vdERvY3VtZW50OmQscm9vdFdpbmRv''@;'; put 'put ''dzpofT10aGlzLndvdDtsZXQgZix2LFMsVixRLGRlO2NvbnN0IHBlPWEuZ2V0UmVuZGVyZWRSb3dzQ291bnQoKTtmb3IobGV0IEVyPTA7RXI8cGU7RXIrPTEpe2NvbnN0IHpyPWEucm93RmlsdGVyLnJlbmRlcmVkVG9Tb3VyY2UoRXIpO2lmKHpyPj1jWzBdJiZ6cjw9Y1syXSl7Zj16cixRPWNb''@;'; put 'put ''MF07YnJlYWt9fWZvcihsZXQgRXI9cGUtMTtFcj49MDtFci09MSl7Y29uc3QgenI9YS5yb3dGaWx0ZXIucmVuZGVyZWRUb1NvdXJjZShFcik7aWYoenI+PWNbMF0mJnpyPD1jWzJdKXt2PXpyO2JyZWFrfX1jb25zdCBDZT1hLmdldFJlbmRlcmVkQ29sdW1uc0NvdW50KCk7Zm9yKGxldCBFcj0w''@;'; put 'put ''O0VyPENlO0VyKz0xKXtjb25zdCB6cj1hLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRvU291cmNlKEVyKTtpZih6cj49Y1sxXSYmenI8PWNbM10pe1M9enIsZGU9Y1sxXTticmVha319Zm9yKGxldCBFcj1DZS0xO0VyPj0wO0VyLT0xKXtjb25zdCB6cj1hLmNvbHVtbkZpbHRlci5yZW5kZXJlZFRv''@;'; put 'put ''U291cmNlKEVyKTtpZih6cj49Y1sxXSYmenI8PWNbM10pe1Y9enI7YnJlYWt9fWlmKHZvaWQgMD09PWZ8fHZvaWQgMD09PVMpcmV0dXJuIHZvaWQgdGhpcy5kaXNhcHBlYXIoKTtsZXQgT2U9YS5nZXRDZWxsKHRoaXMud290LmNyZWF0ZUNlbGxDb29yZHMoZixTKSk7Y29uc3QgWWU9ZiE9PXZ8''@;'; put 'put ''fFMhPT1WLGV0PVllP2EuZ2V0Q2VsbCh0aGlzLndvdC5jcmVhdGVDZWxsQ29vcmRzKHYsVikpOk9lLGR0PXh1KE9lKSxodD1ZZT94dShldCk6ZHQsTXQ9eHUoYS5UQUJMRSksUXQ9V2EoYS5UQUJMRSksbG49ZHQudG9wLHZuPWR0LmxlZnQsd249dGhpcy53b3Qud3RTZXR0aW5ncy5nZXRTZXR0''@;'; put 'put ''aW5nKCJydGxNb2RlIik7bGV0IG5yPTAsdnI9MDtpZih3bil7Y29uc3QgRXI9V2EoT2UpO3ZyPXZuK0VyLWh0LmxlZnQsbnI9aC5pbm5lcldpZHRoLXZuLUVyLShoLmlubmVyV2lkdGgtTXQubGVmdC1RdCktMX1lbHNlIHZyPWh0LmxlZnQrV2EoZXQpLXZuLG5yPXZuLU10LmxlZnQtMTtpZih0''@;'; put 'put ''aGlzLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoZix2KSl7Y29uc3QgRXI9dGhpcy5nZXREaW1lbnNpb25zRnJvbUhlYWRlcigiY29sdW1ucyIsUyxWLFEsTXQpO2xldCB6cj1udWxsO0VyJiYoW3pyLG5yLHZyXT1FciksenImJihPZT16cil9bGV0IE1pPWxuLU10LnRvcC0xLFBpPWh0LnRvcCta''@;'; put 'put ''bChldCktbG47aWYodGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKFMsVikpe2NvbnN0IEVyPXRoaXMuZ2V0RGltZW5zaW9uc0Zyb21IZWFkZXIoInJvd3MiLGYsdixkZSxNdCk7bGV0IHpyPW51bGw7RXImJihbenIsTWksUGldPUVyKSx6ciYmKE9lPXpyKX1jb25zdCB5cj14NChPZSxoKTtwYXJz''@;'; put 'put ''ZUludCh5ci5ib3JkZXJUb3BXaWR0aCwxMCk+MCYmKE1pKz0xLFBpPVBpPjA/UGktMTowKSxwYXJzZUludCh5clt3bj8iYm9yZGVyUmlnaHRXaWR0aCI6ImJvcmRlckxlZnRXaWR0aCJdLDEwKT4wJiYobnIrPTEsdnI9dnI+MD92ci0xOjApO2NvbnN0IF9pPXduPyJyaWdodCI6ImxlZnQiO3Ro''@;'; put 'put ''aXMudG9wU3R5bGUudG9wPWAke01pfXB4YCx0aGlzLnRvcFN0eWxlW19pXT1gJHtucn1weGAsdGhpcy50b3BTdHlsZS53aWR0aD1gJHt2cn1weGAsdGhpcy50b3BTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5zdGFydFN0eWxlLnRvcD1gJHtNaX1weGAsdGhpcy5zdGFydFN0eWxlW19pXT1g''@;'; put 'put ''JHtucn1weGAsdGhpcy5zdGFydFN0eWxlLmhlaWdodD1gJHtQaX1weGAsdGhpcy5zdGFydFN0eWxlLmRpc3BsYXk9ImJsb2NrIjtjb25zdCBVcj1NYXRoLmZsb29yKHRoaXMuc2V0dGluZ3MuYm9yZGVyLndpZHRoLzIpO3RoaXMuYm90dG9tU3R5bGUudG9wPU1pK1BpLVVyKyJweCIsdGhpcy5i''@;'; put 'put ''b3R0b21TdHlsZVtfaV09YCR7bnJ9cHhgLHRoaXMuYm90dG9tU3R5bGUud2lkdGg9YCR7dnJ9cHhgLHRoaXMuYm90dG9tU3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZW5kU3R5bGUudG9wPWAke01pfXB4YCx0aGlzLmVuZFN0eWxlW19pXT1ucit2ci1VcisicHgiLHRoaXMuZW5kU3R5bGUu''@;'; put 'put ''aGVpZ2h0PWAke1BpKzF9cHhgLHRoaXMuZW5kU3R5bGUuZGlzcGxheT0iYmxvY2siO2xldCBJbj10aGlzLnNldHRpbmdzLmJvcmRlci5jb3JuZXJWaXNpYmxlO0luPSJmdW5jdGlvbiI9PXR5cGVvZiBJbj9Jbih0aGlzLnNldHRpbmdzLmxheWVyTGV2ZWwpOkluO2NvbnN0IE9yPXRoaXMud290''@;'; put 'put ''LmdldFNldHRpbmcoIm9uTW9kaWZ5R2V0Q2VsbENvb3JkcyIsdixWKTtsZXRbV24sVHJdPVt2LFZdO2lmKE9yJiZBcnJheS5pc0FycmF5KE9yKSYmKFssLFduLFRyXT1PciksVDQoKXx8IUlufHx0aGlzLmlzUGFydFJhbmdlKFduLFRyKSl0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9Im5vbmUi''@;'; put 'put ''O2Vsc2V7dGhpcy5jb3JuZXJTdHlsZS50b3A9TWkrUGkrdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldC0xKyJweCIsdGhpcy5jb3JuZXJTdHlsZVtfaV09bnIrdnIrdGhpcy5jb3JuZXJDZW50ZXJQb2ludE9mZnNldC0xKyJweCIsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJSaWdodFdpZHRo''@;'; put 'put ''PXRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmJvcmRlcldpZHRoLHRoaXMuY29ybmVyU3R5bGUud2lkdGg9dGhpcy5jb3JuZXJEZWZhdWx0U3R5bGUud2lkdGgsdGhpcy5jb3JuZXJTdHlsZS5kaXNwbGF5PSJub25lIjtsZXQgRXI9WTgoYS5UQUJMRSk7Y29uc3QgenI9RXI9PT1oO3pyJiYoRXI9''@;'; put 'put ''ZC5kb2N1bWVudEVsZW1lbnQpO2NvbnN0IEJpPXBhcnNlSW50KHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLndpZHRoLDEwKS8yLFN0PXBhcnNlSW50KHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodCwxMCkvMjtpZihWPT09dGhpcy53b3QuZ2V0U2V0dGluZygidG90YWxDb2x1bW5zIikt''@;'; put 'put ''MSl7Y29uc3QgTHQ9enI/ZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDpldC5vZmZzZXRMZWZ0O2xldCBVdD0hMSxGbj0wO3duPyhGbj1MdC1wYXJzZUludCh0aGlzLmNvcm5lckRlZmF1bHRTdHlsZS53aWR0aCwxMCkvMixVdD1GbjwwKTooRm49THQrV2EoZXQpK3BhcnNlSW50KHRo''@;'; put 'put ''aXMuY29ybmVyRGVmYXVsdFN0eWxlLndpZHRoLDEwKS8yLFV0PUZuPj1wVyhFcikpLFV0JiYodGhpcy5jb3JuZXJTdHlsZVtfaV09YCR7TWF0aC5mbG9vcihucit2cit0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LUJpKX1weGAsdGhpcy5jb3JuZXJTdHlsZVt3bj8iYm9yZGVyTGVmdFdp''@;'; put 'put ''ZHRoIjoiYm9yZGVyUmlnaHRXaWR0aCJdPTApfXY9PT10aGlzLndvdC5nZXRTZXR0aW5nKCJ0b3RhbFJvd3MiKS0xJiYoenI/ZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOmV0Lm9mZnNldFRvcCkrWmwoZXQpK3BhcnNlSW50KHRoaXMuY29ybmVyRGVmYXVsdFN0eWxlLmhlaWdodCwx''@;'; put 'put ''MCkvMj49VzgoRXIpJiYodGhpcy5jb3JuZXJTdHlsZS50b3A9YCR7TWF0aC5mbG9vcihNaStQaSt0aGlzLmNvcm5lckNlbnRlclBvaW50T2Zmc2V0LVN0KX1weGAsdGhpcy5jb3JuZXJTdHlsZS5ib3JkZXJCb3R0b21XaWR0aD0wKSx0aGlzLmNvcm5lclN0eWxlLmRpc3BsYXk9ImJsb2NrIn1U''@;'; put 'put ''NCgpJiZ0aGlzLmluc3RhbmNlLmdldFNldHRpbmcoImlzRGF0YVZpZXdJbnN0YW5jZSIpJiZ0aGlzLnVwZGF0ZU11bHRpcGxlU2VsZWN0aW9uSGFuZGxlc1Bvc2l0aW9uKHYsVixNaSxucix2cixQaSl9aXNFbnRpcmVDb2x1bW5TZWxlY3RlZChjLGEpe3JldHVybiBjPT09dGhpcy53b3Qud3RU''@;'; put 'put ''YWJsZS5nZXRGaXJzdFJlbmRlcmVkUm93KCkmJmE9PT10aGlzLndvdC53dFRhYmxlLmdldExhc3RSZW5kZXJlZFJvdygpfWlzRW50aXJlUm93U2VsZWN0ZWQoYyxhKXtyZXR1cm4gYz09PXRoaXMud290Lnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpJiZhPT09dGhpcy53b3Qud3RU''@;'; put 'put ''YWJsZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKX1nZXREaW1lbnNpb25zRnJvbUhlYWRlcihjLGEsZCxoLGYpe2NvbnN0e3d0VGFibGU6dn09dGhpcy53b3QsUz12Lnd0Um9vdEVsZW1lbnQucGFyZW50Tm9kZTtsZXQgVj1udWxsLFE9bnVsbCxkZT1udWxsLHBlPW51bGwsQ2U9bnVsbCxPZT1u''@;'; put 'put ''dWxsLFllPW51bGwsZXQ9bnVsbDtzd2l0Y2goYyl7Y2FzZSJyb3dzIjpWPWZ1bmN0aW9uKCl7cmV0dXJuIHYuZ2V0Um93SGVhZGVyKC4uLmFyZ3VtZW50cyl9LFE9ZnVuY3Rpb24oKXtyZXR1cm4gWmwoLi4uYXJndW1lbnRzKX0sZGU9Imh0X19zZWxlY3Rpb24tLXJvd3MiLE9lPSJ0b3AiO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiY29sdW1ucyI6Vj1mdW5jdGlvbigpe3JldHVybiB2LmdldENvbHVtbkhlYWRlciguLi5hcmd1bWVudHMpfSxRPWZ1bmN0aW9uKCl7cmV0dXJuIFdhKC4uLmFyZ3VtZW50cyl9LGRlPSJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIixPZT0ibGVmdCJ9aWYoUy5jbGFzc0xpc3QuY29u''@;'; put 'put ''dGFpbnMoZGUpKXtjb25zdCBkdD10aGlzLndvdC5nZXRTZXR0aW5nKCJjb2x1bW5IZWFkZXJzIikubGVuZ3RoO2lmKFllPVYoYSxkdC1oKSxldD1WKGQsZHQtaCksIVllfHwhZXQpcmV0dXJuITE7Y29uc3QgaHQ9eHUoWWUpLE10PXh1KGV0KTtyZXR1cm4gWWUmJmV0JiYocGU9aHRbT2VdLWZb''@;'; put 'put ''T2VdLTEsQ2U9TXRbT2VdK1EoZXQpLWh0W09lXSksW1llLHBlLENlXX1yZXR1cm4hMX1jaGFuZ2VCb3JkZXJTdHlsZShjLGEpe2NvbnN0IGQ9dGhpc1tjXS5zdHlsZSxoPWFbY107IWh8fGguaGlkZT9taSh0aGlzW2NdLCJoaWRkZW4iKTooWW8odGhpc1tjXSwiaGlkZGVuIikmJmxzKHRoaXNb''@;'; put 'put ''Y10sImhpZGRlbiIpLGQuYmFja2dyb3VuZENvbG9yPWguY29sb3IsKCJ0b3AiPT09Y3x8ImJvdHRvbSI9PT1jKSYmKGQuaGVpZ2h0PWAke2gud2lkdGh9cHhgKSwoInN0YXJ0Ij09PWN8fCJlbmQiPT09YykmJihkLndpZHRoPWAke2gud2lkdGh9cHhgKSl9Y2hhbmdlQm9yZGVyVG9EZWZhdWx0''@;'; put 'put ''U3R5bGUoYyl7Y29uc3QgZD10aGlzW2NdLnN0eWxlO2QuYmFja2dyb3VuZENvbG9yPSIjMDAwIixkLndpZHRoPSIxcHgiLGQuaGVpZ2h0PSIxcHgifXRvZ2dsZUhpZGRlbkNsYXNzKGMsYSl7dGhpcy5jaGFuZ2VCb3JkZXJUb0RlZmF1bHRTdHlsZShjKSxhP21pKHRoaXNbY10sImhpZGRlbiIp''@;'; put 'put ''OmxzKHRoaXNbY10sImhpZGRlbiIpfWRpc2FwcGVhcigpe3RoaXMudG9wU3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5ib3R0b21TdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnN0YXJ0U3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5lbmRTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvcm5l''@;'; put 'put ''clN0eWxlLmRpc3BsYXk9Im5vbmUiLFQ0KCkmJnRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZygiaXNEYXRhVmlld0luc3RhbmNlIikmJih0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcC5kaXNwbGF5PSJub25lIix0aGlzLnNlbGVjdGlvbkhhbmRsZXMuc3R5bGVzLnRvcEhpdEFyZWEu''@;'; put 'put ''ZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b20uZGlzcGxheT0ibm9uZSIsdGhpcy5zZWxlY3Rpb25IYW5kbGVzLnN0eWxlcy5ib3R0b21IaXRBcmVhLmRpc3BsYXk9Im5vbmUiKX1kZXN0cm95KCl7dGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveVdpdGhP''@;'; put 'put ''d25FdmVudHNPbmx5KCksdGhpcy5tYWluLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5tYWluKX19O2Z1bmN0aW9uIHZiKGwsYyxhKXtCZGUobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIEJkZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFs''@;'; put 'put ''aXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gRHMobCxjKXtyZXR1cm4gbC5nZXQoZkcobCxjKSl9ZnVuY3Rpb24gamRlKGwsYyxhKXtyZXR1cm4gbC5zZXQoZkcobCxjKSxhKSxhfWZ1bmN0aW9uIGZHKGwsYyxhKXtpZigiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgRjA9bmV3IFdlYWtNYXAsejE9bmV3IFdlYWtNYXAscEc9''@;'; put 'put ''bmV3IFdlYWtNYXAsQ3g9bmV3IFdlYWtNYXAsZ0c9bmV3IFdlYWtNYXAsZTc9bmV3IFdlYWtNYXAsemRlPW5ldyBXZWFrU2V0O2NsYXNzIEkkZXtjb25zdHJ1Y3RvcihjKXsoZnVuY3Rpb24gRCRlKGwsYyl7QmRlKGwsYyksYy5hZGQobCl9KSh0aGlzLHpkZSksdmIodGhpcyxGMCx2b2lkIDAp''@;'; put 'put ''LHZiKHRoaXMsejEsdm9pZCAwKSx2Yih0aGlzLHBHLG5ldyBrJGUpLHZiKHRoaXMsQ3gsbmV3IFdlYWtNYXApLHZiKHRoaXMsZ0csbmV3IFdlYWtTZXQpLHZiKHRoaXMsZTcsbmV3IE1hcCksamRlKHoxLHRoaXMsYyl9c2V0QWN0aXZlT3ZlcmxheShjKXtyZXR1cm4gamRlKEYwLHRoaXMsYyks''@;'; put 'put ''RHMocEcsdGhpcykuc2V0QWN0aXZlT3ZlcmxheShEcyhGMCx0aGlzKSksRHMoQ3gsdGhpcykuaGFzKERzKEYwLHRoaXMpKXx8RHMoQ3gsdGhpcykuc2V0KERzKEYwLHRoaXMpLG5ldyBTZXQpLHRoaXN9Z2V0Rm9jdXNTZWxlY3Rpb24oKXtyZXR1cm4gbnVsbCE9PURzKHoxLHRoaXMpP0RzKHox''@;'; put 'put ''LHRoaXMpLmdldEZvY3VzKCk6bnVsbH1nZXRBcmVhU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPT1Ecyh6MSx0aGlzKT9Ecyh6MSx0aGlzKS5jcmVhdGVMYXllcmVkQXJlYSgpOm51bGx9Z2V0Qm9yZGVySW5zdGFuY2UoYyl7aWYoIWMuc2V0dGluZ3MuYm9yZGVyKXJldHVybiBudWxsO2lmKERz''@;'; put 'put ''KGU3LHRoaXMpLmhhcyhjKSl7Y29uc3QgZD1EcyhlNyx0aGlzKS5nZXQoYyk7aWYoZC5oYXMoRHMoRjAsdGhpcykpKXJldHVybiBkLmdldChEcyhGMCx0aGlzKSk7Y29uc3QgaD1uZXcgVmRlKERzKEYwLHRoaXMpLGMuc2V0dGluZ3MpO3JldHVybiBkLnNldChEcyhGMCx0aGlzKSxoKSxofWNv''@;'; put 'put ''bnN0IGE9bmV3IFZkZShEcyhGMCx0aGlzKSxjLnNldHRpbmdzKTtyZXR1cm4gRHMoZTcsdGhpcykuc2V0KGMsbmV3IE1hcChbW0RzKEYwLHRoaXMpLGFdXSkpLGF9Z2V0Qm9yZGVySW5zdGFuY2VzKGMpe3ZhciBhLGQ7cmV0dXJuIEFycmF5LmZyb20obnVsbCE9PShhPW51bGw9PT0oZD1Ecyhl''@;'; put 'put ''Nyx0aGlzKS5nZXQoYykpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLnZhbHVlcygpKSYmdm9pZCAwIT09YT9hOltdKX1kZXN0cm95Qm9yZGVycyhjKXtEcyhlNyx0aGlzKS5nZXQoYykuZm9yRWFjaChhPT5hLmRlc3Ryb3koKSksRHMoZTcsdGhpcykuZGVsZXRlKGMpfXJlbmRlcihjKXtpZihudWxs''@;'; put 'put ''PT09RHMoejEsdGhpcykpcmV0dXJuO2MmJmZHKHpkZSx0aGlzLFIkZSkuY2FsbCh0aGlzKTtjb25zdCBhPUFycmF5LmZyb20oRHMoejEsdGhpcykpLGQ9bmV3IE1hcCxoPW5ldyBNYXA7Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKyspe2NvbnN0IHY9YVtmXSx7Y2xhc3NOYW1lOlMsaGVhZGVy''@;'; put 'put ''QXR0cmlidXRlczpWLGNyZWF0ZUxheWVyczpRLHNlbGVjdGlvblR5cGU6ZGV9PXYuc2V0dGluZ3M7RHMoZ0csdGhpcykuaGFzKHYpfHwoRHMoZ0csdGhpcykuYWRkKHYpLHYuYWRkTG9jYWxIb29rKCJkZXN0cm95IiwoKT0+dGhpcy5kZXN0cm95Qm9yZGVycyh2KSkpO2NvbnN0IHBlPXRoaXMu''@;'; put 'put ''Z2V0Qm9yZGVySW5zdGFuY2Uodik7aWYodi5pc0VtcHR5KCkpe3BlPy5kaXNhcHBlYXIoKTtjb250aW51ZX1TJiZEcyhwRyx0aGlzKS5zZXRBY3RpdmVTZWxlY3Rpb24odikuc2NhbigpLmZvckVhY2goWWU9PntpZihkLmhhcyhZZSkpe2NvbnN0IGV0PWQuZ2V0KFllKTtldC5oYXMoUykmJiEw''@;'; put 'put ''PT09UT9ldC5zZXQoUyxldC5nZXQoUykrMSk6ZXQuc2V0KFMsMSl9ZWxzZSBkLnNldChZZSxuZXcgTWFwKFtbUywxXV0pKTtWJiYoaC5oYXMoWWUpfHxoLnNldChZZSxbXSksIlRIIj09PVllLm5vZGVOYW1lJiZoLmdldChZZSkucHVzaCguLi5WKSl9KTtjb25zdCBDZT12LmdldENvcm5lcnMo''@;'; put 'put ''KTtEcyhGMCx0aGlzKS5nZXRTZXR0aW5nKCJvbkJlZm9yZURyYXdCb3JkZXJzIixDZSxkZSkscGU/LmFwcGVhcihDZSl9ZC5mb3JFYWNoKChmLHYpPT57dmFyIFM7Y29uc3QgVj1BcnJheS5mcm9tKGYpLm1hcChRPT57bGV0W2RlLHBlXT1RO3JldHVybiAxPT09cGU/ZGU6W2RlLC4uLkFycmF5''@;'; put 'put ''LmZyb20oe2xlbmd0aDpwZS0xfSwoQ2UsT2UpPT5gJHtkZX0tJHtPZSsxfWApXX0pLmZsYXQoKTtWLmZvckVhY2goUT0+RHMoQ3gsdGhpcykuZ2V0KERzKEYwLHRoaXMpKS5hZGQoUSkpLG1pKHYsViksIlREIj09PXYubm9kZU5hbWUmJkFycmF5LmlzQXJyYXkobnVsbD09PShTPURzKHoxLHRo''@;'; put 'put ''aXMpLm9wdGlvbnMpfHx2b2lkIDA9PT1TP3ZvaWQgMDpTLmNlbGxBdHRyaWJ1dGVzKSYmVm8odixEcyh6MSx0aGlzKS5vcHRpb25zLmNlbGxBdHRyaWJ1dGVzKX0pLEFycmF5LmZyb20oaC5rZXlzKCkpLmZvckVhY2goZj0+e1ZvKGYsWy4uLmguZ2V0KGYpXSl9KX19ZnVuY3Rpb24gUiRlKCl7''@;'; put 'put ''Y29uc3QgbD1EcyhDeCx0aGlzKS5nZXQoRHMoRjAsdGhpcykpLGM9RHMoRjAsdGhpcykud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJvbkJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIik7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IGE9MDthPGMubGVuZ3RoO2ErKylsLmFkZChjW2FdKTts''@;'; put 'put ''LmZvckVhY2goYT0+e3ZhciBkLGg7Y29uc3QgZj1EcyhGMCx0aGlzKS53dFRhYmxlLlRBQkxFLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke2F9YCk7bGV0IHY9W107QXJyYXkuaXNBcnJheShudWxsPT09KGQ9RHMoejEsdGhpcykub3B0aW9ucyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuY2VsbEF0dHJp''@;'; put 'put ''YnV0ZXMpJiYodj1Ecyh6MSx0aGlzKS5vcHRpb25zLmNlbGxBdHRyaWJ1dGVzLm1hcChTPT5TWzBdKSksQXJyYXkuaXNBcnJheShudWxsPT09KGg9RHMoejEsdGhpcykub3B0aW9ucyl8fHZvaWQgMD09PWg/dm9pZCAwOmguaGVhZGVyQXR0cmlidXRlcykmJih2PVsuLi52LC4uLkRzKHoxLHRo''@;'; put 'put ''aXMpLm9wdGlvbnMuaGVhZGVyQXR0cmlidXRlcy5tYXAoUz0+U1swXSldKTtmb3IobGV0IFM9MCxWPWYubGVuZ3RoO1M8VjtTKyspbHMoZltTXSxhKSxVOChmW1NdLHYpfSksbC5jbGVhcigpfWNsYXNzIEwkZSBleHRlbmRzIG5He2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoYyxuZXcgYSRlKGEp''@;'; put 'put ''KTtjb25zdCBkPXRoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKCJmYWNhZGUiLHRoaXMpO3RoaXMud3RUYWJsZT1uZXcgbCRlKHRoaXMuZ2V0VGFibGVEYW8oKSxkLHRoaXMuZG9tQmluZGluZ3MsdGhpcy53dFNldHRpbmdzKSx0aGlzLnd0Vmlld3BvcnQ9bmV3IEUkZSh0aGlzLmdldFZpZXdw''@;'; put 'put ''b3J0RGFvKCksdGhpcy5kb21CaW5kaW5ncyx0aGlzLnd0U2V0dGluZ3MsdGhpcy5ldmVudE1hbmFnZXIsdGhpcy53dFRhYmxlKSx0aGlzLnNlbGVjdGlvbk1hbmFnZXI9bmV3IEkkZSh0aGlzLnd0U2V0dGluZ3MuZ2V0U2V0dGluZygic2VsZWN0aW9ucyIpKSx0aGlzLnd0RXZlbnQ9bmV3IGlk''@;'; put 'put ''ZShkLHRoaXMuZG9tQmluZGluZ3MsdGhpcy53dFNldHRpbmdzLHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMud3RUYWJsZSx0aGlzLnNlbGVjdGlvbk1hbmFnZXIpLHRoaXMud3RPdmVybGF5cz1uZXcgaSRlKHRoaXMsZCx0aGlzLmRvbUJpbmRpbmdzLHRoaXMud3RTZXR0aW5ncyx0aGlzLmV2ZW50''@;'; put 'put ''TWFuYWdlcix0aGlzLnd0VGFibGUpLHRoaXMuZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKSx0aGlzLmZpbmRPcmlnaW5hbEhlYWRlcnMoKX1leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygpe2NvbnN0IGE9W10sZD1bXTtDcyh7cm93SGVhZGVyczoiaHRSb3dIZWFkZXJzIixjb2x1bW5I''@;'; put 'put ''ZWFkZXJzOiJodENvbHVtbkhlYWRlcnMifSwoaCxmKT0+e3RoaXMud3RTZXR0aW5ncy5nZXRTZXR0aW5nKGYpLmxlbmd0aCYmZC5wdXNoKGgpLGEucHVzaChoKX0pLGxzKHRoaXMud3RUYWJsZS53dFJvb3RFbGVtZW50LnBhcmVudE5vZGUsYSksbWkodGhpcy53dFRhYmxlLnd0Um9vdEVsZW1l''@;'; put 'put ''bnQucGFyZW50Tm9kZSxkKX1nZXRWaWV3cG9ydERhbygpe2NvbnN0IGM9dGhpcztyZXR1cm57Z2V0IHdvdCgpe3JldHVybiBjfSxnZXQgdG9wT3ZlcmxheVRyaW1taW5nQ29udGFpbmVyKCl7cmV0dXJuIGMud3RPdmVybGF5cy50b3BPdmVybGF5LnRyaW1taW5nQ29udGFpbmVyfSxnZXQgaW5s''@;'; put 'put ''aW5lU3RhcnRPdmVybGF5VHJpbW1pbmdDb250YWluZXIoKXtyZXR1cm4gYy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS50cmltbWluZ0NvbnRhaW5lcn0sZ2V0IHRvcFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIGMud3RPdmVybGF5cy50b3BPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9u''@;'; put 'put ''KCl9LGdldCB0b3BQYXJlbnRPZmZzZXQoKXtyZXR1cm4gYy53dE92ZXJsYXlzLnRvcE92ZXJsYXkuZ2V0VGFibGVQYXJlbnRPZmZzZXQoKX0sZ2V0IGlubGluZVN0YXJ0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gYy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRTY3JvbGxQb3Np''@;'; put 'put ''dGlvbigpfSxnZXQgaW5saW5lU3RhcnRQYXJlbnRPZmZzZXQoKXtyZXR1cm4gYy53dE92ZXJsYXlzLmlubGluZVN0YXJ0T3ZlcmxheS5nZXRUYWJsZVBhcmVudE9mZnNldCgpfSxnZXQgdG9wT3ZlcmxheSgpe3JldHVybiBjLnd0T3ZlcmxheXMudG9wT3ZlcmxheX0sZ2V0IGlubGluZVN0YXJ0''@;'; put 'put ''T3ZlcmxheSgpe3JldHVybiBjLnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5fSxnZXQgYm90dG9tT3ZlcmxheSgpe3JldHVybiBjLnd0T3ZlcmxheXMuYm90dG9tT3ZlcmxheX19fX1jbGFzcyBtR3tjb25zdHJ1Y3RvcihjKXtjIGluc3RhbmNlb2Ygbkc/dGhpcy5fd290PWM6dGhpcy5f''@;'; put 'put ''aW5pdEZyb21TZXR0aW5ncyhjKX1faW5pdEZyb21TZXR0aW5ncyhjKXtjLmZhY2FkZT1hPT57Y29uc3QgZD1uZXcgbUcoYSk7cmV0dXJuKCk9PmR9LHRoaXMuX3dvdD1uZXcgTCRlKGMudGFibGUsYyl9Z2V0IGd1aWQoKXtyZXR1cm4gdGhpcy5fd290Lmd1aWR9Z2V0IHJvb3REb2N1bWVudCgp''@;'; put 'put ''e3JldHVybiB0aGlzLl93b3QuZG9tQmluZGluZ3Mucm9vdERvY3VtZW50fWdldCByb290V2luZG93KCl7cmV0dXJuIHRoaXMuX3dvdC5kb21CaW5kaW5ncy5yb290V2luZG93fWdldCB3dFNldHRpbmdzKCl7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzfWdldCBjbG9uZVNvdXJjZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl93b3QuY2xvbmVTb3VyY2V9Z2V0IGNsb25lT3ZlcmxheSgpe3JldHVybiB0aGlzLl93b3QuY2xvbmVPdmVybGF5fWdldCBzZWxlY3Rpb25NYW5hZ2VyKCl7cmV0dXJuIHRoaXMuX3dvdC5zZWxlY3Rpb25NYW5hZ2VyfWdldCB3dFZpZXdwb3J0KCl7cmV0dXJuIHRoaXMuX3dv''@;'; put 'put ''dC53dFZpZXdwb3J0fWdldCB3dE92ZXJsYXlzKCl7cmV0dXJuIHRoaXMuX3dvdC53dE92ZXJsYXlzfWdldCB3dFRhYmxlKCl7cmV0dXJuIHRoaXMuX3dvdC53dFRhYmxlfWdldCB3dEV2ZW50KCl7cmV0dXJuIHRoaXMuX3dvdC53dEV2ZW50fWdldCB3dFNjcm9sbCgpe3JldHVybiB0aGlzLl93''@;'; put 'put ''b3Qud3RTY3JvbGx9Z2V0IGRyYXduKCl7cmV0dXJuIHRoaXMuX3dvdC5kcmF3bn1zZXQgZHJhd24oYyl7dGhpcy5fd290LmRyYXduPWN9Z2V0IGRyYXdJbnRlcnJ1cHRlZCgpe3JldHVybiB0aGlzLl93b3QuZHJhd0ludGVycnVwdGVkfXNldCBkcmF3SW50ZXJydXB0ZWQoYyl7dGhpcy5fd290''@;'; put 'put ''LmRyYXdJbnRlcnJ1cHRlZD1jfWdldCBsYXN0TW91c2VPdmVyKCl7cmV0dXJuIHRoaXMuX3dvdC5sYXN0TW91c2VPdmVyfXNldCBsYXN0TW91c2VPdmVyKGMpe3RoaXMuX3dvdC5sYXN0TW91c2VPdmVyPWN9Z2V0IG1vbWVudHVtU2Nyb2xsaW5nKCl7cmV0dXJuIHRoaXMuX3dvdC5tb21lbnR1''@;'; put 'put ''bVNjcm9sbGluZ31zZXQgbW9tZW50dW1TY3JvbGxpbmcoYyl7dGhpcy5fd290Lm1vbWVudHVtU2Nyb2xsaW5nPWN9Z2V0IHRvdWNoQXBwbGllZCgpe3JldHVybiB0aGlzLl93b3QudG91Y2hBcHBsaWVkfXNldCB0b3VjaEFwcGxpZWQoYyl7dGhpcy5fd290LnRvdWNoQXBwbGllZD1jfWdldCBk''@;'; put 'put ''b21CaW5kaW5ncygpe3JldHVybiB0aGlzLl93b3QuZG9tQmluZGluZ3N9Z2V0IGV2ZW50TGlzdGVuZXJzKCl7cmV0dXJuIHRoaXMuX3dvdC5ldmVudExpc3RlbmVyc31zZXQgZXZlbnRMaXN0ZW5lcnMoYyl7dGhpcy5fd290LmV2ZW50TGlzdGVuZXJzPWN9Z2V0IGV2ZW50TWFuYWdlcigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLl93b3QuZXZlbnRNYW5hZ2VyfWNyZWF0ZUNlbGxDb29yZHMoYyxhKXtyZXR1cm4gdGhpcy5fd290LmNyZWF0ZUNlbGxDb29yZHMoYyxhKX1jcmVhdGVDZWxsUmFuZ2UoYyxhLGQpe3JldHVybiB0aGlzLl93b3QuY3JlYXRlQ2VsbFJhbmdlKGMsYSxkKX1kcmF3KCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3dvdC5kcmF3KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLHRoaXN9Z2V0Q2VsbChjKXtyZXR1cm4gdGhpcy5fd290LmdldENlbGwoYyxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1l''@;'; put 'put ''bnRzWzFdKX1zY3JvbGxWaWV3cG9ydChjLGEsZCxoLGYpe3JldHVybiB0aGlzLl93b3Quc2Nyb2xsVmlld3BvcnQoYyxhLGQsaCxmKX1zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShjLGEsZCl7cmV0dXJuIHRoaXMuX3dvdC5zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShjLGEsZCl9c2Ny''@;'; put 'put ''b2xsVmlld3BvcnRWZXJ0aWNhbGx5KGMsYSxkKXtyZXR1cm4gdGhpcy5fd290LnNjcm9sbFZpZXdwb3J0VmVydGljYWxseShjLGEsZCl9Z2V0Vmlld3BvcnQoKXtyZXR1cm4gdGhpcy5fd290LmdldFZpZXdwb3J0KCl9Z2V0T3ZlcmxheU5hbWUoKXtyZXR1cm4gdGhpcy5fd290LmNsb25lT3Zl''@;'; put 'put ''cmxheT90aGlzLl93b3QuY2xvbmVPdmVybGF5LnR5cGU6Im1hc3RlciJ9ZXhwb3J0U2V0dGluZ3NBc0NsYXNzTmFtZXMoKXtyZXR1cm4gdGhpcy5fd290LmV4cG9ydFNldHRpbmdzQXNDbGFzc05hbWVzKCl9dXBkYXRlKGMsYSl7cmV0dXJuIHRoaXMuX3dvdC53dFNldHRpbmdzLnVwZGF0ZShj''@;'; put 'put ''LGEpLHRoaXN9Z2V0U2V0dGluZyhjLGEsZCxoLGYpe3JldHVybiB0aGlzLl93b3Qud3RTZXR0aW5ncy5nZXRTZXR0aW5nKGMsYSxkLGgsZil9aGFzU2V0dGluZyhjKXtyZXR1cm4gdGhpcy5fd290Lnd0U2V0dGluZ3MuaGFzU2V0dGluZyhjKX1kZXN0cm95KCl7dGhpcy5fd290LmRlc3Ryb3ko''@;'; put 'put ''KX19ZnVuY3Rpb24gVWRlKGwpe2xldHtpc1NoaWZ0S2V5OmMsaXNMZWZ0Q2xpY2s6YSxpc1JpZ2h0Q2xpY2s6ZCxjb29yZHM6aCxzZWxlY3Rpb246Zixjb250cm9sbGVyOnYsY2VsbENvb3Jkc0ZhY3Rvcnk6U309bDtjb25zdCBWPWYuaXNTZWxlY3RlZCgpP2YuZ2V0U2VsZWN0ZWRSYW5nZSgp''@;'; put 'put ''LmN1cnJlbnQoKTpudWxsLFE9Zi5pc1NlbGVjdGVkQnlDb3JuZXIoKSxkZT1mLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpO2lmKGYubWFya1NvdXJjZSgibW91c2UiKSxjJiZWKWgucm93Pj0wJiZoLmNvbD49MCYmIXYuY2VsbD9mLnNldFJhbmdlRW5kKGgpOihRfHxkZSkmJmgucm93Pj0wJiZo''@;'; put 'put ''LmNvbD49MCYmIXYuY2VsbD9mLnNldFJhbmdlRW5kKFMoaC5yb3csaC5jb2wpKTpRJiZoLnJvdzwwJiYhdi5jb2x1bW4/Zi5zZXRSYW5nZUVuZChTKFYudG8ucm93LGguY29sKSk6ZGUmJmguY29sPDAmJiF2LnJvdz9mLnNldFJhbmdlRW5kKFMoaC5yb3csVi50by5jb2wpKTooIVEmJiFkZSYm''@;'; put 'put ''aC5jb2w8MHx8USYmaC5jb2w8MCkmJiF2LnJvdz9mLnNlbGVjdFJvd3MoTWF0aC5tYXgoVi5mcm9tLnJvdywwKSxoLnJvdyxoLmNvbCk6KCFRJiYhZGUmJmgucm93PDB8fGRlJiZoLnJvdzwwKSYmIXYuY29sdW1uJiZmLnNlbGVjdENvbHVtbnMoTWF0aC5tYXgoVi5mcm9tLmNvbCwwKSxoLmNv''@;'; put 'put ''bCxoLnJvdyk7ZWxzZXtjb25zdCBwZT0hZi5pbkluU2VsZWN0aW9uKGgpLENlPWF8fGQmJnBlO2gucm93PDAmJmguY29sPj0wJiYhdi5jb2x1bW4/Q2UmJmYuc2VsZWN0Q29sdW1ucyhoLmNvbCxoLmNvbCxoLnJvdyk6aC5jb2w8MCYmaC5yb3c+PTAmJiF2LnJvdz9DZSYmZi5zZWxlY3RSb3dz''@;'; put 'put ''KGgucm93LGgucm93LGguY29sKTpoLmNvbD49MCYmaC5yb3c+PTAmJiF2LmNlbGw/Q2UmJmYuc2V0UmFuZ2VTdGFydChoKTpoLmNvbDwwJiZoLnJvdzwwJiZmLnNlbGVjdEFsbCghMCwhMCx7ZGlzYWJsZUhlYWRlcnNIaWdobGlnaHQ6ITAsZm9jdXNQb3NpdGlvbjp7cm93OjAsY29sOjB9fSl9''@;'; put 'put ''Zi5tYXJrRW5kU291cmNlKCl9Y29uc3QgUCRlPW5ldyBNYXAoW1sibW91c2Vkb3duIixVZGVdLFsibW91c2VvdmVyIixmdW5jdGlvbiBPJGUobCl7bGV0e2lzTGVmdENsaWNrOmMsY29vcmRzOmEsc2VsZWN0aW9uOmQsY29udHJvbGxlcjpoLGNlbGxDb29yZHNGYWN0b3J5OmZ9PWw7aWYoIWMp''@;'; put 'put ''cmV0dXJuO2NvbnN0IHY9ZC5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSxTPWQuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCksVj1kLnRhYmxlUHJvcHMuY291bnRDb2xzKCksUT1kLnRhYmxlUHJvcHMuY291bnRSb3dzKCk7ZC5tYXJrU291cmNlKCJtb3VzZSIpLFMmJiFoLmNvbHVtbj9kLnNl''@;'; put 'put ''dFJhbmdlRW5kKGYoUS0xLGEuY29sKSk6diYmIWgucm93P2Quc2V0UmFuZ2VFbmQoZihhLnJvdyxWLTEpKTpoLmNlbGx8fGQuc2V0UmFuZ2VFbmQoYSksZC5tYXJrRW5kU291cmNlKCl9XSxbInRvdWNoc3RhcnQiLFVkZV1dKTtmdW5jdGlvbiBaZGUobCxjKXtsZXR7Y29vcmRzOmEsc2VsZWN0''@;'; put 'put ''aW9uOmQsY29udHJvbGxlcjpoLGNlbGxDb29yZHNGYWN0b3J5OmZ9PWM7UCRlLmdldChsLnR5cGUpKHtjb29yZHM6YSxzZWxlY3Rpb246ZCxjb250cm9sbGVyOmgsY2VsbENvb3Jkc0ZhY3Rvcnk6Zixpc1NoaWZ0S2V5Omwuc2hpZnRLZXksaXNMZWZ0Q2xpY2s6ZEwobCl8fCJ0b3VjaHN0YXJ0''@;'; put 'put ''Ij09PWwudHlwZSxpc1JpZ2h0Q2xpY2s6Tm0obCl9KX1jb25zdCBZZGU9bmV3IFdlYWtNYXAsdkc9U3ltYm9sKCJyb290SW5zdGFuY2UiKTtmdW5jdGlvbiBITChsKXtyZXR1cm4gWWRlLmhhcyhsKX1mdW5jdGlvbiB0NyhsLGMsYSl7V2RlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBXZGUo''@;'; put 'put ''bCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFVtKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBWJGUobCl7dmFyIGM9ZnVuY3Rpb24gQiRl''@;'; put 'put ''KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''QEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''Yyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIFl1KGwsYyl7cmV0dXJuIGwuZ2V0KFN4KGwsYykpfWZ1bmN0aW9uIFloKGwsYyxhKXtyZXR1cm4gbC5zZXQoU3gobCxjKSxhKSxhfWZ1bmN0aW9uIFN4KGwsYyxh''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgX0c9bmV3IFdlYWtNYXAsVkw9bmV3''@;'; put 'put ''IFdlYWtNYXAsQkw9bmV3IFdlYWtNYXAsSTQ9bmV3IFdlYWtNYXAsZGY9bmV3IFdlYWtNYXAsYkc9bmV3IFdlYWtNYXAseUc9bmV3IFdlYWtNYXAsakw9bmV3IFdlYWtTZXQ7ZnVuY3Rpb24gR2RlKCl7cmV0dXJuIHBhcnNlSW50KHRoaXMuaG90LnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZShR''@;'; put 'put ''UigpWzBdKSwxMCl9ZnVuY3Rpb24geiRlKGwpe2NvbnN0IGM9U3goakwsdGhpcyxHZGUpLmNhbGwodGhpcykrbDtWbyh0aGlzLmhvdC5yb290RWxlbWVudCwuLi5RUihjKSl9Y29uc3QgVSRlPWNsYXNzIGokZXtjb25zdHJ1Y3RvcihjKXsoZnVuY3Rpb24gSCRlKGwsYyl7V2RlKGwsYyksYy5h''@;'; put 'put ''ZGQobCl9KSh0aGlzLGpMKSxVbSh0aGlzLCJob3QiLHZvaWQgMCksVW0odGhpcywiZXZlbnRNYW5hZ2VyIix2b2lkIDApLFVtKHRoaXMsInNldHRpbmdzIix2b2lkIDApLFVtKHRoaXMsIlRIRUFEIix2b2lkIDApLFVtKHRoaXMsIlRCT0RZIix2b2lkIDApLFVtKHRoaXMsIl93dCIsdm9pZCAw''@;'; put 'put ''KSxVbSh0aGlzLCJhY3RpdmVXdCIsdm9pZCAwKSx0Nyh0aGlzLF9HLDApLHQ3KHRoaXMsVkwsMCksVW0odGhpcywicG9zdHBvbmVkQWRqdXN0RWxlbWVudHNTaXplIiwhMSksdDcodGhpcyxCTCwhMSksdDcodGhpcyxJNCx2b2lkIDApLHQ3KHRoaXMsZGYsdm9pZCAwKSx0Nyh0aGlzLGJHLDAp''@;'; put 'put ''LHQ3KHRoaXMseUcsMCksdGhpcy5ob3Q9Yyx0aGlzLmV2ZW50TWFuYWdlcj1uZXcgemgodGhpcy5ob3QpLHRoaXMuc2V0dGluZ3M9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSx0aGlzLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLHRoaXMuaW5pdGlhbGl6ZVdhbGtvbnRh''@;'; put 'put ''YmxlKCl9cmVuZGVyKCl7dGhpcy5ob3QuaXNSZW5kZXJTdXNwZW5kZWQoKXx8KHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSZW5kZXIiLHRoaXMuaG90LmZvcmNlRnVsbFJlbmRlciksdGhpcy5wb3N0cG9uZWRBZGp1c3RFbGVtZW50c1NpemUmJih0aGlzLnBvc3Rwb25lZEFkanVzdEVsZW1l''@;'; put 'put ''bnRzU2l6ZT0hMSx0aGlzLmFkanVzdEVsZW1lbnRzU2l6ZSghMCkpLHRoaXMuX3d0LmRyYXcoIXRoaXMuaG90LmZvcmNlRnVsbFJlbmRlciksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVuZGVyIix0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXIpLHRoaXMuaG90LmZvcmNlRnVsbFJlbmRlcj0h''@;'; put 'put ''MSx0aGlzLmhvdC5yZW5kZXJDYWxsPSExKX1hZGp1c3RFbGVtZW50c1NpemUoKXt0aGlzLmhvdC5pc1JlbmRlclN1c3BlbmRlZCgpP3RoaXMucG9zdHBvbmVkQWRqdXN0RWxlbWVudHNTaXplPSEwOnRoaXMuX3d0Lnd0T3ZlcmxheXMuYWRqdXN0RWxlbWVudHNTaXplKCl9Z2V0Q2VsbEF0Q29v''@;'; put 'put ''cmRzKGMsYSl7Y29uc3QgZD10aGlzLl93dC5nZXRDZWxsKGMsYSk7cmV0dXJuIGQ8MD9udWxsOmR9c2Nyb2xsVmlld3BvcnQoYyxhLGQsaCxmKXtyZXR1cm4gdGhpcy5fd3Quc2Nyb2xsVmlld3BvcnQoYyxhLGQsaCxmKX1zY3JvbGxWaWV3cG9ydEhvcml6b250YWxseShjLGEsZCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3d0LnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KGMsYSxkKX1zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoYyxhLGQpe3JldHVybiB0aGlzLl93dC5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoYyxhLGQpfWNyZWF0ZUVsZW1lbnRzKCl7Y29uc3R7cm9vdEVsZW1lbnQ6Yyxyb290''@;'; put 'put ''RG9jdW1lbnQ6YX09dGhpcy5ob3QsZD1jLmdldEF0dHJpYnV0ZSgic3R5bGUiKTtkJiZjLnNldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbHN0eWxlIixkKSxtaShjLCJoYW5kc29udGFibGUiKSxZaChkZix0aGlzLGEuY3JlYXRlRWxlbWVudCgiVEFCTEUiKSksbWkoWXUoZGYsdGhpcyksImh0''@;'; put 'put ''Q29yZSIpLHRoaXMuaG90LmdldFNldHRpbmdzKCkudGFibGVDbGFzc05hbWUmJm1pKFl1KGRmLHRoaXMpLHRoaXMuaG90LmdldFNldHRpbmdzKCkudGFibGVDbGFzc05hbWUpLHRoaXMuc2V0dGluZ3MuYXJpYVRhZ3MmJihWbyhZdShkZix0aGlzKSxbQTMoKV0pLFZvKGMsW1sicm9sZSIsInRy''@;'; put 'put ''ZWVncmlkIl0sdTFlKC0xKSxRUih0aGlzLmhvdC5jb3VudENvbHMoKSksWyJhcmlhLW11bHRpc2VsZWN0YWJsZSIsInRydWUiXV0pKSx0aGlzLlRIRUFEPWEuY3JlYXRlRWxlbWVudCgiVEhFQUQiKSxZdShkZix0aGlzKS5hcHBlbmRDaGlsZCh0aGlzLlRIRUFEKSx0aGlzLlRCT0RZPWEuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiVEJPRFkiKSxZdShkZix0aGlzKS5hcHBlbmRDaGlsZCh0aGlzLlRCT0RZKSx0aGlzLmhvdC50YWJsZT1ZdShkZix0aGlzKSx0aGlzLmhvdC5jb250YWluZXIuaW5zZXJ0QmVmb3JlKFl1KGRmLHRoaXMpLHRoaXMuaG90LmNvbnRhaW5lci5maXJzdENoaWxkKX1yZWdpc3Rl''@;'; put 'put ''ckV2ZW50cygpe2NvbnN0e3Jvb3RFbGVtZW50OmMscm9vdERvY3VtZW50OmEsc2VsZWN0aW9uOmQscm9vdFdpbmRvdzpofT10aGlzLmhvdCxmPWEuZG9jdW1lbnRFbGVtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywibW91c2Vkb3duIixTPT57WWgoQkwsdGhpcywh''@;'; put 'put ''MCksdGhpcy5pc1RleHRTZWxlY3Rpb25BbGxvd2VkKFMudGFyZ2V0KXx8KG1XKGgpLFMucHJldmVudERlZmF1bHQoKSxoLmZvY3VzKCkpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihjLCJtb3VzZXVwIiwoKT0+e1loKEJMLHRoaXMsITEpfSksdGhpcy5ldmVudE1hbmFn''@;'; put 'put ''ZXIuYWRkRXZlbnRMaXN0ZW5lcihjLCJtb3VzZW1vdmUiLFM9PntZdShCTCx0aGlzKSYmIXRoaXMuaXNUZXh0U2VsZWN0aW9uQWxsb3dlZChTLnRhcmdldCkmJih0aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZtVyhoKSxTLnByZXZlbnREZWZhdWx0KCkpfSksdGhpcy5ldmVudE1h''@;'; put 'put ''bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihmLCJrZXl1cCIsUz0+e2QuaXNJblByb2dyZXNzKCkmJiFTLnNoaWZ0S2V5JiZkLmZpbmlzaCgpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihmLCJtb3VzZXVwIixTPT57ZC5pc0luUHJvZ3Jlc3MoKSYmZEwoUykmJmQuZmluaXNo''@;'; put 'put ''KCksWWgoSTQsdGhpcywhMSk7Y29uc3QgVj1yTChhLmFjdGl2ZUVsZW1lbnQpO3R4KGEuYWN0aXZlRWxlbWVudCkmJiFWfHwoVnx8IWQuaXNTZWxlY3RlZCgpJiYhZC5pc1NlbGVjdGVkQnlBbnlIZWFkZXIoKSYmIWMuY29udGFpbnMoUy50YXJnZXQpJiYhTm0oUykpJiZ0aGlzLmhvdC51bmxp''@;'; put 'put ''c3RlbigpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihmLCJjb250ZXh0bWVudSIsUz0+e2QuaXNJblByb2dyZXNzKCkmJk5tKFMpJiYoZC5maW5pc2goKSxZaChJNCx0aGlzLCExKSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGYsInRvdWNoZW5k''@;'; put 'put ''IiwoKT0+e2QuaXNJblByb2dyZXNzKCkmJmQuZmluaXNoKCksWWgoSTQsdGhpcywhMSl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGYsIm1vdXNlZG93biIsUz0+e2NvbnN0IFY9Uy50YXJnZXQsUT1TLnh8fFMuY2xpZW50WCxkZT1TLnl8fFMuY2xpZW50WTtsZXQgcGU9''@;'; put 'put ''Uy50YXJnZXQ7aWYoWXUoSTQsdGhpcyl8fCFjfHwhdGhpcy5ob3QudmlldylyZXR1cm47Y29uc3R7aG9sZGVyOkNlfT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlO2lmKHBlPT09Q2Upe2NvbnN0IFllPUV1KGEpO2lmKGEuZWxlbWVudEZyb21Qb2ludChRK1llLGRlKSE9PUNlfHxhLmVsZW1l''@;'; put 'put ''bnRGcm9tUG9pbnQoUSxkZStZZSkhPT1DZSlyZXR1cm59ZWxzZSBmb3IoO3BlIT09Zjspe2lmKG51bGw9PT1wZSl7aWYoUy5pc1RhcmdldFdlYkNvbXBvbmVudClicmVhaztyZXR1cm59aWYocGU9PT1jKXJldHVybjtwZT1wZS5wYXJlbnROb2RlfSgiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5z''@;'; put 'put ''ZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM/dGhpcy5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMoVik6dGhpcy5zZXR0aW5ncy5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMpP3RoaXMuaG90LmRlc2VsZWN0Q2VsbCgpOnRoaXMuaG90LmRlc3Ryb3lFZGl0b3IoITEsITEpfSk7bGV0''@;'; put 'put ''IHY9ejgoaCk7Zm9yKDtudWxsIT09djspdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih2LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwiY2xpY2siLCgpPT57dGhpcy5ob3QudW5saXN0ZW4oKX0pLHY9ejgodik7dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihZ''@;'; put 'put ''dShkZix0aGlzKSwic2VsZWN0c3RhcnQiLFM9Pnt0aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9ufHx0eChTLnRhcmdldCl8fFMucHJldmVudERlZmF1bHQoKX0pfXRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoYyl7bGV0e3JvdzphLGNvbDpkfT1jO3JldHVybiB0''@;'; put 'put ''aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyguLi50aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChhLGQpKX10cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsSW5kZXgoYyxhKXtsZXQgZD1jPj0wP3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZy''@;'; put 'put ''b21SZW5kZXJhYmxlSW5kZXgoYyk6YyxoPWE+PTA/dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChhKTphO3JldHVybiBudWxsPT09ZCYmKGQ9YyksbnVsbD09PWgmJihoPWEpLFtkLGhdfWNvdW50UmVuZGVyYWJsZUluZGV4ZXMoYyxhKXtj''@;'; put 'put ''b25zdCBkPU1hdGgubWluKGMuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxhKSxoPWMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQtMSwtMSk7cmV0dXJuIG51bGw9PT1oPzA6Yy5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGgpKzF9Y291bnRSZW5kZXJhYmxlQ29sdW1ucygp''@;'; put 'put ''e3JldHVybiB0aGlzLmNvdW50UmVuZGVyYWJsZUluZGV4ZXModGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsdGhpcy5zZXR0aW5ncy5tYXhDb2xzKX1jb3VudFJlbmRlcmFibGVSb3dzKCl7cmV0dXJuIHRoaXMuY291bnRSZW5kZXJhYmxlSW5kZXhlcyh0aGlzLmhvdC5yb3dJbmRleE1hcHBl''@;'; put 'put ''cix0aGlzLnNldHRpbmdzLm1heFJvd3MpfWNvdW50Tm90SGlkZGVuUm93SW5kZXhlcyhjLGEpe3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuSW5kZXhlcyhjLGEsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsdGhpcy5jb3VudFJlbmRlcmFibGVSb3dzKCkpfWNvdW50Tm90SGlkZGVuQ29sdW1u''@;'; put 'put ''SW5kZXhlcyhjLGEpe3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuSW5kZXhlcyhjLGEsdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsdGhpcy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCkpfWNvdW50Tm90SGlkZGVuSW5kZXhlcyhjLGEsZCxoKXtpZihpc05hTihjKXx8YzwwKXJldHVybiAw''@;'; put 'put ''O2NvbnN0IGY9ZC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYyxhKSx2PWQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChmKTtpZighTnVtYmVyLmlzSW50ZWdlcih2KSlyZXR1cm4gMDtsZXQgUz0wO3JldHVybiBhPDA/Uz12KzE6YT4wJiYoUz1oLXYpLFN9Y291bnROb3RIaWRkZW5G''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydCgpe2NvbnN0IGM9dGhpcy5ob3QuY291bnRDb2xzKCksYT1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSxjKS0xO3JldHVybiB0aGlzLmNvdW50Tm90SGlkZGVuQ29sdW1uSW5kZXhlcyhhLC0xKX1jb3VudE5vdEhp''@;'; put 'put ''ZGRlbkZpeGVkUm93c1RvcCgpe2NvbnN0IGM9dGhpcy5ob3QuY291bnRSb3dzKCksYT1NYXRoLm1pbihwYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c1RvcCwxMCksYyktMTtyZXR1cm4gdGhpcy5jb3VudE5vdEhpZGRlblJvd0luZGV4ZXMoYSwtMSl9Y291bnROb3RIaWRkZW5GaXhl''@;'; put 'put ''ZFJvd3NCb3R0b20oKXtjb25zdCBjPXRoaXMuaG90LmNvdW50Um93cygpLGE9TWF0aC5tYXgoYy1wYXJzZUludCh0aGlzLnNldHRpbmdzLmZpeGVkUm93c0JvdHRvbSwxMCksMCk7cmV0dXJuIHRoaXMuY291bnROb3RIaWRkZW5Sb3dJbmRleGVzKGEsMSl9Y291bnRSZW5kZXJhYmxlQ29sdW1u''@;'; put 'put ''c0luUmFuZ2UoYyxhKXtsZXQgZD0wO2ZvcihsZXQgaD1jO2g8PWE7aCsrKW51bGwhPT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGgpJiYoZCs9MSk7cmV0dXJuIGR9Y291bnRSZW5kZXJhYmxlUm93c0luUmFuZ2UoYyxhKXtsZXQgZD0w''@;'; put 'put ''O2ZvcihsZXQgaD1jO2g8PWE7aCsrKW51bGwhPT10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGgpJiYoZCs9MSk7cmV0dXJuIGR9aXNNYWluVGFibGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl7Y29uc3QgYz10aGlzLmNvdW50Tm90SGlk''@;'; put 'put ''ZGVuRml4ZWRSb3dzVG9wKCkrdGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSgpLGE9dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkQ29sdW1uc1N0YXJ0KCk7cmV0dXJuIHRoaXMuaG90LmNvdW50UmVuZGVyZWRSb3dzKCk+YyYmdGhpcy5ob3QuY291bnRSZW5kZXJlZENvbHMoKT5h''@;'; put 'put ''fWluaXRpYWxpemVXYWxrb250YWJsZSgpe2NvbnN0IGM9e2FyaWFUYWdzOnRoaXMuc2V0dGluZ3MuYXJpYVRhZ3MscnRsTW9kZTp0aGlzLmhvdC5pc1J0bCgpLGV4dGVybmFsUm93Q2FsY3VsYXRvcjp0aGlzLmhvdC5nZXRQbHVnaW4oImF1dG9Sb3dTaXplIikmJnRoaXMuaG90LmdldFBsdWdp''@;'; put 'put ''bigiYXV0b1Jvd1NpemUiKS5pc0VuYWJsZWQoKSx0YWJsZTpZdShkZix0aGlzKSxpc0RhdGFWaWV3SW5zdGFuY2U6KCk9PkhMKHRoaXMuaG90KSxwcmV2ZW50T3ZlcmZsb3c6KCk9PnRoaXMuc2V0dGluZ3MucHJldmVudE92ZXJmbG93LHByZXZlbnRXaGVlbDooKT0+dGhpcy5zZXR0aW5ncy5w''@;'; put 'put ''cmV2ZW50V2hlZWwsc3RyZXRjaEg6KCk9PnRoaXMuc2V0dGluZ3Muc3RyZXRjaEgsZGF0YTooZix2KT0+dGhpcy5ob3QuZ2V0RGF0YUF0Q2VsbCguLi50aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChmLHYpKSx0b3RhbFJvd3M6KCk9PnRoaXMuY291bnRSZW5kZXJh''@;'; put 'put ''YmxlUm93cygpLHRvdGFsQ29sdW1uczooKT0+dGhpcy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCksZml4ZWRDb2x1bW5zU3RhcnQ6KCk9PnRoaXMuY291bnROb3RIaWRkZW5GaXhlZENvbHVtbnNTdGFydCgpLGZpeGVkUm93c1RvcDooKT0+dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkUm93c1Rv''@;'; put 'put ''cCgpLGZpeGVkUm93c0JvdHRvbTooKT0+dGhpcy5jb3VudE5vdEhpZGRlbkZpeGVkUm93c0JvdHRvbSgpLHNob3VsZFJlbmRlcklubGluZVN0YXJ0T3ZlcmxheTooKT0+dGhpcy5zZXR0aW5ncy5maXhlZENvbHVtbnNTdGFydD4wfHxjLnJvd0hlYWRlcnMoKS5sZW5ndGg+MCxzaG91bGRSZW5k''@;'; put 'put ''ZXJUb3BPdmVybGF5OigpPT50aGlzLnNldHRpbmdzLmZpeGVkUm93c1RvcD4wfHxjLmNvbHVtbkhlYWRlcnMoKS5sZW5ndGg+MCxzaG91bGRSZW5kZXJCb3R0b21PdmVybGF5OigpPT50aGlzLnNldHRpbmdzLmZpeGVkUm93c0JvdHRvbT4wLG1pblNwYXJlUm93czooKT0+dGhpcy5zZXR0aW5n''@;'; put 'put ''cy5taW5TcGFyZVJvd3MscmVuZGVyQWxsUm93czp0aGlzLnNldHRpbmdzLnJlbmRlckFsbFJvd3MscmVuZGVyQWxsQ29sdW1uczp0aGlzLnNldHRpbmdzLnJlbmRlckFsbENvbHVtbnMscm93SGVhZGVyczooKT0+e2NvbnN0IGY9W107cmV0dXJuIHRoaXMuaG90Lmhhc1Jvd0hlYWRlcnMoKSYm''@;'; put 'put ''Zi5wdXNoKCh2LFMpPT57Y29uc3QgVj12Pj0wP3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodik6djt0aGlzLmFwcGVuZFJvd0hlYWRlcihWLFMpfSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyR2V0Um93SGVhZGVyUmVuZGVyZXJzIixmKSxZ''@;'; put 'put ''aChWTCx0aGlzLGYubGVuZ3RoKSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzJiZTeChqTCx0aGlzLEdkZSkuY2FsbCh0aGlzKT09PXRoaXMuaG90LmNvdW50Q29scygpJiZTeChqTCx0aGlzLHokZSkuY2FsbCh0aGlzLFl1KFZMLHRoaXMpKSxmfSxjb2x1bW5IZWFkZXJzOigpPT57''@;'; put 'put ''Y29uc3QgZj1bXTtyZXR1cm4gdGhpcy5ob3QuaGFzQ29sSGVhZGVycygpJiZmLnB1c2goKHYsUyk9Pntjb25zdCBWPXY+PTA/dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh2KTp2O3RoaXMuYXBwZW5kQ29sSGVhZGVyKFYsUyl9KSx0aGlz''@;'; put 'put ''LmhvdC5ydW5Ib29rcygiYWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLGYpLFloKF9HLHRoaXMsZi5sZW5ndGgpLGZ9LGNvbHVtbldpZHRoOmY9Pntjb25zdCB2PXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZik7cmV0dXJuIHRo''@;'; put 'put ''aXMuaG90LmdldENvbFdpZHRoKG51bGw9PT12P2Y6dil9LHJvd0hlaWdodDpmPT57Y29uc3Qgdj10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpO3JldHVybiB0aGlzLmhvdC5nZXRSb3dIZWlnaHQobnVsbD09PXY/Zjp2KX0sY2VsbFJlbmRl''@;'; put 'put ''cmVyOihmLHYsUyk9Pntjb25zdFtWLFFdPXRoaXMudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbEluZGV4KGYsdiksZGU9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUdldENlbGxDb29yZHMiLFYsUSk7bGV0IHBlPVYsQ2U9UTtBcnJheS5pc0FycmF5KGRlKSYmKFtwZSxDZV09ZGUp''@;'; put 'put ''O2NvbnN0IE9lPXRoaXMuaG90LmdldENlbGxNZXRhKHBlLENlKSxZZT10aGlzLmhvdC5jb2xUb1Byb3AoQ2UpO2xldCBldD10aGlzLmhvdC5nZXREYXRhQXRSb3dQcm9wKHBlLFllKTt0aGlzLmhvdC5oYXNIb29rKCJiZWZvcmVWYWx1ZVJlbmRlciIpJiYoZXQ9dGhpcy5ob3QucnVuSG9va3Mo''@;'; put 'put ''ImJlZm9yZVZhbHVlUmVuZGVyIixldCxPZSkpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSZW5kZXJlciIsUyxWLFEsWWUsZXQsT2UpLHRoaXMuaG90LmdldENlbGxSZW5kZXJlcihPZSkodGhpcy5ob3QsUyxWLFEsWWUsZXQsT2UpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlbmRlcmVy''@;'; put 'put ''IixTLFYsUSxZZSxldCxPZSl9LHNlbGVjdGlvbnM6dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodCxoaWRlQm9yZGVyT25Nb3VzZURvd25PdmVyOigpPT50aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uLG9uV2luZG93UmVzaXplOigpPT57dGhpcy5ob3QmJiF0aGlzLmhvdC5pc0Rl''@;'; put 'put ''c3Ryb3llZCYmdGhpcy5ob3QucmVmcmVzaERpbWVuc2lvbnMoKX0sb25Db250YWluZXJFbGVtZW50UmVzaXplOigpPT57dGhpcy5ob3QmJiF0aGlzLmhvdC5pc0Rlc3Ryb3llZCYmUG0odGhpcy5ob3Qucm9vdEVsZW1lbnQpJiZ0aGlzLmhvdC5yZWZyZXNoRGltZW5zaW9ucygpfSxvbkNlbGxN''@;'; put 'put ''b3VzZURvd246KGYsdixTLFYpPT57Y29uc3QgUT10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHModiksZGU9e3JvdzohMSxjb2x1bW46ITEsY2VsbDohMX07dGhpcy5ob3QubGlzdGVuKCksdGhpcy5hY3RpdmVXdD1WLFloKEk0LHRoaXMsITApLHRoaXMuaG90LnJ1''@;'; put 'put ''bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGYsUSxTLGRlKSwhRm0oZikmJihaZGUoZix7Y29vcmRzOlEsc2VsZWN0aW9uOnRoaXMuaG90LnNlbGVjdGlvbixjb250cm9sbGVyOmRlLGNlbGxDb29yZHNGYWN0b3J5OihwZSxDZSk9PnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHBl''@;'; put 'put ''LENlKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZixRLFMpLHRoaXMuYWN0aXZlV3Q9dGhpcy5fd3QpfSxvbkNlbGxDb250ZXh0TWVudTooZix2LFMsVik9Pntjb25zdCBRPXRoaXMudHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3Jkcyh2KTt0''@;'; put 'put ''aGlzLmFjdGl2ZVd0PVYsWWgoSTQsdGhpcywhMSksdGhpcy5ob3Quc2VsZWN0aW9uLmlzSW5Qcm9ncmVzcygpJiZ0aGlzLmhvdC5zZWxlY3Rpb24uZmluaXNoKCksdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZU9uQ2VsbENvbnRleHRNZW51IixmLFEsUyksIUZtKGYpJiYodGhpcy5ob3QucnVu''@;'; put 'put ''SG9va3MoImFmdGVyT25DZWxsQ29udGV4dE1lbnUiLGYsUSxTKSx0aGlzLmFjdGl2ZVd0PXRoaXMuX3d0KX0sb25DZWxsTW91c2VPdXQ6KGYsdixTLFYpPT57Y29uc3QgUT10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxDb29yZHModik7dGhpcy5hY3RpdmVXdD1WLHRoaXMu''@;'; put 'put ''aG90LnJ1bkhvb2tzKCJiZWZvcmVPbkNlbGxNb3VzZU91dCIsZixRLFMpLCFGbShmKSYmKHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3V0IixmLFEsUyksdGhpcy5hY3RpdmVXdD10aGlzLl93dCl9LG9uQ2VsbE1vdXNlT3ZlcjooZix2LFMsVik9Pntjb25zdCBRPXRoaXMu''@;'; put 'put ''dHJhbnNsYXRlRnJvbVJlbmRlcmFibGVUb1Zpc3VhbENvb3Jkcyh2KSxkZT17cm93OiExLGNvbHVtbjohMSxjZWxsOiExfTt0aGlzLmFjdGl2ZVd0PVYsdGhpcy5ob3QucnVuSG9va3MoImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsZixRLFMsZGUpLCFGbShmKSYmKFl1KEk0LHRoaXMpJiZaZGUo''@;'; put 'put ''Zix7Y29vcmRzOlEsc2VsZWN0aW9uOnRoaXMuaG90LnNlbGVjdGlvbixjb250cm9sbGVyOmRlLGNlbGxDb29yZHNGYWN0b3J5OihwZSxDZSk9PnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHBlLENlKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbE1vdXNlT3ZlciIsZixRLFMp''@;'; put 'put ''LHRoaXMuYWN0aXZlV3Q9dGhpcy5fd3QpfSxvbkNlbGxNb3VzZVVwOihmLHYsUyxWKT0+e2NvbnN0IFE9dGhpcy50cmFuc2xhdGVGcm9tUmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHYpO3RoaXMuYWN0aXZlV3Q9Vix0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlT25DZWxsTW91c2VVcCIsZixR''@;'; put 'put ''LFMpLCFGbShmKSYmIXRoaXMuaG90LmlzRGVzdHJveWVkJiYodGhpcy5ob3QucnVuSG9va3MoImFmdGVyT25DZWxsTW91c2VVcCIsZixRLFMpLHRoaXMuYWN0aXZlV3Q9dGhpcy5fd3QpfSxvbkNlbGxDb3JuZXJNb3VzZURvd246Zj0+e2YucHJldmVudERlZmF1bHQoKSx0aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd24iLGYpfSxvbkNlbGxDb3JuZXJEYmxDbGljazpmPT57Zi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck9uQ2VsbENvcm5lckRibENsaWNrIixmKX0sYmVmb3JlRHJhdzooZix2KT0+dGhpcy5iZWZvcmVSZW5k''@;'; put 'put ''ZXIoZix2KSxvbkRyYXc6Zj0+dGhpcy5hZnRlclJlbmRlcihmKSxvbkJlZm9yZVZpZXdwb3J0U2Nyb2xsVmVydGljYWxseTpmPT57Y29uc3Qgdj10aGlzLmhvdC5yb3dJbmRleE1hcHBlcixTPWY8MDtsZXQgVj1mO3JldHVybiBTfHwoVj12LmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgo''@;'; put 'put ''ZiksbnVsbCE9PVYpPyhWPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVWaWV3cG9ydFNjcm9sbFZlcnRpY2FsbHkiLFYpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVWaWV3cG9ydFNjcm9sbCIpLFM/Vjp2LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVikpOmZ9LG9uQmVmb3JlVmll''@;'; put 'put ''d3BvcnRTY3JvbGxIb3Jpem9udGFsbHk6Zj0+e2NvbnN0IHY9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIsUz1mPDA7bGV0IFY9ZjtyZXR1cm4gU3x8KFY9di5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpLG51bGwhPT1WKT8oVj10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVmll''@;'; put 'put ''d3BvcnRTY3JvbGxIb3Jpem9udGFsbHkiLFYpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVWaWV3cG9ydFNjcm9sbCIpLFM/Vjp2LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVikpOmZ9LG9uU2Nyb2xsVmVydGljYWxseTooKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclNjcm9s''@;'; put 'put ''bFZlcnRpY2FsbHkiKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTY3JvbGwiKX0sb25TY3JvbGxIb3Jpem9udGFsbHk6KCk9Pnt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHkiKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJTY3JvbGwiKX0sb25CZWZvcmVSZW1v''@;'; put 'put ''dmVDZWxsQ2xhc3NOYW1lczooKT0+dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVJlbW92ZUNlbGxDbGFzc05hbWVzIiksb25CZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXI6KGYsdixTKT0+e2NvbnN0IFY9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsUT1mPDA7bGV0IGRlPWY7UXx8KGRlPVYu''@;'; put 'put ''Z2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChmKSk7Y29uc3QgcGU9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZ2hsaWdodGluZ1Jvd0hlYWRlciIsZGUsdixTKTtyZXR1cm4gUT9wZTpWLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVi5nZXROZWFyZXN0Tm90SGlkZGVuSW5k''@;'; put 'put ''ZXgocGUsMSkpfSxvbkJlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjooZix2LFMpPT57Y29uc3QgVj10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlcixRPWY8MDtsZXQgZGU9ZjtRfHwoZGU9Vi5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpKTtjb25zdCBwZT10aGlzLmhvdC5y''@;'; put 'put ''dW5Ib29rcygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixkZSx2LFMpO3JldHVybiBRP3BlOlYuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChWLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChwZSwxKSl9LG9uQWZ0ZXJEcmF3U2VsZWN0aW9uOihmLHYsUyk9PntsZXQgVjtj''@;'; put 'put ''b25zdFtRLGRlXT10aGlzLnRyYW5zbGF0ZUZyb21SZW5kZXJhYmxlVG9WaXN1YWxJbmRleChmLHYpLHBlPXRoaXMuaG90LnNlbGVjdGlvbi5nZXRTZWxlY3RlZFJhbmdlKCk7aWYocGUuc2l6ZSgpPjApe2NvbnN0IE9lPXBlLnBlZWtCeUluZGV4KFM/PzApO1Y9W09lLmZyb20ucm93LE9lLmZy''@;'; put 'put ''b20uY29sLE9lLnRvLnJvdyxPZS50by5jb2xdfXJldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEcmF3U2VsZWN0aW9uIixRLGRlLFYsUyl9LG9uQmVmb3JlRHJhd0JvcmRlcnM6KGYsdik9Pntjb25zdFtTLFYsUSxkZV09ZixwZT1bdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0Vmlz''@;'; put 'put ''dWFsRnJvbVJlbmRlcmFibGVJbmRleChTKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KFYpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoUSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBw''@;'; put 'put ''ZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChkZSldO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJhd0JvcmRlcnMiLHBlLHYpfSxvbkJlZm9yZVRvdWNoU2Nyb2xsOigpPT50aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVG91Y2hTY3JvbGwiKSxvbkFmdGVyTW9tZW50''@;'; put 'put ''dW1TY3JvbGw6KCk9PnRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlck1vbWVudHVtU2Nyb2xsIiksb25CZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGg6KGYsdik9Pntjb25zdCBTPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodik7cmV0dXJu''@;'; put 'put ''IHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGgiLGYsUyl9LG9uTW9kaWZ5Um93SGVhZGVyV2lkdGg6Zj0+dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVJvd0hlYWRlcldpZHRoIixmKSxvbk1vZGlmeUdldENlbGxDb29yZHM6KGYsdixTKT0+e2NvbnN0IFY9''@;'; put 'put ''dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIsUT10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlcixkZT12Pj0wP1EuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh2KTp2LHBlPWY+PTA/Vi5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGYpOmYsQ2U9dGhpcy5ob3QucnVuSG9va3MoIm1v''@;'; put 'put ''ZGlmeUdldENlbGxDb29yZHMiLHBlLGRlLFMpO2lmKEFycmF5LmlzQXJyYXkoQ2UpKXtjb25zdFtPZSxZZSxldCxkdF09Q2U7cmV0dXJuW09lPj0wP1YuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChWLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChPZSwxKSk6T2UsWWU+PTA/US5nZXRS''@;'; put 'put ''ZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFEuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFllLDEpKTpZZSxldD49MD9WLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVi5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZXQsLTEpKTpldCxkdD49MD9RLmdldFJlbmRlcmFibGVGcm9tVmlz''@;'; put 'put ''dWFsSW5kZXgoUS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZHQsLTEpKTpkdF19fSx2aWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZTpmPT57bGV0IHY9dGhpcy5zZXR0aW5ncy52aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDtpZigiYXV0byI9PT12JiZ0aGlzLnNldHRpbmdzLmZpeGVk''@;'; put 'put ''Um93c1RvcCYmKHY9MTApLHY+MHx8ImF1dG8iPT09dil7Y29uc3QgUz10aGlzLmNvdW50UmVuZGVyYWJsZVJvd3MoKSxWPWYuc3RhcnRSb3csUT1mLmVuZFJvdztpZigibnVtYmVyIj09dHlwZW9mIHYpZi5zdGFydFJvdz1NYXRoLm1heChWLXYsMCksZi5lbmRSb3c9TWF0aC5taW4oUSt2LFMt''@;'; put 'put ''MSk7ZWxzZSBpZigiYXV0byI9PT12KXtjb25zdCBkZT1NYXRoLmNlaWwoUS9TKjEyKTtmLnN0YXJ0Um93PU1hdGgubWF4KFYtZGUsMCksZi5lbmRSb3c9TWF0aC5taW4oUStkZSxTLTEpfX10aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsZil9''@;'; put 'put ''LHZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlOmY9PntsZXQgdj10aGlzLnNldHRpbmdzLnZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0O2lmKCJhdXRvIj09PXYmJnRoaXMuc2V0dGluZ3MuZml4ZWRDb2x1bW5zU3RhcnQmJih2PTEwKSx2PjB8fCJhdXRvIj09PXYpe2NvbnN0''@;'; put 'put ''IFM9dGhpcy5jb3VudFJlbmRlcmFibGVDb2x1bW5zKCksVj1mLnN0YXJ0Q29sdW1uLFE9Zi5lbmRDb2x1bW47aWYoIm51bWJlciI9PXR5cGVvZiB2JiYoZi5zdGFydENvbHVtbj1NYXRoLm1heChWLXYsMCksZi5lbmRDb2x1bW49TWF0aC5taW4oUSt2LFMtMSkpLCJhdXRvIj09PXYpe2NvbnN0''@;'; put 'put ''IGRlPU1hdGguY2VpbChRL1MqNik7Zi5zdGFydENvbHVtbj1NYXRoLm1heChWLWRlLDApLGYuZW5kQ29sdW1uPU1hdGgubWluKFErZGUsUy0xKX19dGhpcy5ob3QucnVuSG9va3MoImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLGYpfSxyb3dIZWFkZXJXaWR0aDooKT0+''@;'; put 'put ''dGhpcy5zZXR0aW5ncy5yb3dIZWFkZXJXaWR0aCxjb2x1bW5IZWFkZXJIZWlnaHQ6KCk9Pntjb25zdCBmPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlDb2x1bW5IZWFkZXJIZWlnaHQiKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5jb2x1bW5IZWFkZXJIZWlnaHR8fGZ9fTt0aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYmVmb3JlSW5pdFdhbGtvbnRhYmxlIixjKSx0aGlzLl93dD1uZXcgbUcoYyksdGhpcy5hY3RpdmVXdD10aGlzLl93dDtjb25zdCBhPXRoaXMuX3d0Lnd0VGFibGUuc3ByZWFkZXIse3dpZHRoOmQsaGVpZ2h0Omh9PXRoaXMuaG90LnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50''@;'; put 'put ''UmVjdCgpO3RoaXMuc2V0TGFzdFNpemUoZCxoKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEsIm1vdXNlZG93biIsZj0+e2YudGFyZ2V0PT09YSYmMz09PWYud2hpY2gmJmYuc3RvcFByb3BhZ2F0aW9uKCl9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVy''@;'; put 'put ''KGEsImNvbnRleHRtZW51IixmPT57Zi50YXJnZXQ9PT1hJiYzPT09Zi53aGljaCYmZi5zdG9wUHJvcGFnYXRpb24oKX0pLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudCwiY2xpY2siLCgpPT57dGhpcy5zZXR0''@;'; put 'put ''aW5ncy5vYnNlcnZlRE9NVmlzaWJpbGl0eSYmdGhpcy5fd3QuZHJhd0ludGVycnVwdGVkJiYodGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLHRoaXMucmVuZGVyKCkpfSl9aXNUZXh0U2VsZWN0aW9uQWxsb3dlZChjKXtpZih0eChjKSlyZXR1cm4hMDtjb25zdCBhPVJtKGMsdGhpcy5ob3Qu''@;'; put 'put ''dmlldy5fd3Qud3RUYWJsZS5zcHJlYWRlcik7cmV0dXJuISEoITA9PT10aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZhfHwiY2VsbCI9PT10aGlzLnNldHRpbmdzLmZyYWdtZW50U2VsZWN0aW9uJiZ0aGlzLmlzU2VsZWN0ZWRPbmx5Q2VsbCgpJiZhfHwhdGhpcy5zZXR0aW5ncy5m''@;'; put 'put ''cmFnbWVudFNlbGVjdGlvbiYmdGhpcy5pc0NlbGxFZGl0ZWQoKSYmdGhpcy5pc1NlbGVjdGVkT25seUNlbGwoKSl9aXNNb3VzZURvd24oKXtyZXR1cm4gWXUoSTQsdGhpcyl9aXNTZWxlY3RlZE9ubHlDZWxsKCl7dmFyIGMsYTtyZXR1cm4gbnVsbCE9PShjPW51bGw9PT0oYT10aGlzLmhvdC5n''@;'; put 'put ''ZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5pc1NpbmdsZUNlbGwoKSkmJnZvaWQgMCE9PWMmJmN9aXNDZWxsRWRpdGVkKCl7Y29uc3QgYz10aGlzLmhvdC5nZXRBY3RpdmVFZGl0b3IoKTtyZXR1cm4gYyYmYy5pc09wZW5lZCgpfWJlZm9yZVJlbmRlcihjLGEp''@;'; put 'put ''e2MmJnRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVWaWV3UmVuZGVyIix0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXIsYSl9YWZ0ZXJSZW5kZXIoYyl7YyYmdGhpcy5ob3QucnVuSG9va3MoImFmdGVyVmlld1JlbmRlciIsdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyKX1hcHBlbmRSb3dIZWFkZXIo''@;'; put 'put ''YyxhKXtpZihhLmZpcnN0Q2hpbGQpe2NvbnN0IGQ9YS5maXJzdENoaWxkO2lmKCFZbyhkLCJyZWxhdGl2ZSIpKXJldHVybiBzZihhKSx2b2lkIHRoaXMuYXBwZW5kUm93SGVhZGVyKGMsYSk7dGhpcy51cGRhdGVDZWxsSGVhZGVyKGQucXVlcnlTZWxlY3RvcigiLnJvd0hlYWRlciIpLGMsdGhp''@;'; put 'put ''cy5ob3QuZ2V0Um93SGVhZGVyKX1lbHNle2NvbnN0e3Jvb3REb2N1bWVudDpkLGdldFJvd0hlYWRlcjpofT10aGlzLmhvdCxmPWQuY3JlYXRlRWxlbWVudCgiZGl2Iiksdj1kLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtmLmNsYXNzTmFtZT0icmVsYXRpdmUiLHYuY2xhc3NOYW1lPSJyb3dIZWFk''@;'; put 'put ''ZXIiLHRoaXMudXBkYXRlQ2VsbEhlYWRlcih2LGMsaCksZi5hcHBlbmRDaGlsZCh2KSxhLmFwcGVuZENoaWxkKGYpfXRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckdldFJvd0hlYWRlciIsYyxhKX1hcHBlbmRDb2xIZWFkZXIoYyxhKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5ob3QuZ2V0Q29sSGVhZGVyLGg9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjA7aWYoYS5maXJzdENoaWxkKXtjb25zdCBmPWEuZmlyc3RDaGlsZDtZbyhmLCJyZWxhdGl2ZSIpP3Ro''@;'; put 'put ''aXMudXBkYXRlQ2VsbEhlYWRlcihmLnF1ZXJ5U2VsZWN0b3IoIi5jb2xIZWFkZXIiKSxjLGQsaCk6KHNmKGEpLHRoaXMuYXBwZW5kQ29sSGVhZGVyKGMsYSxkLGgpKX1lbHNle2NvbnN0e3Jvb3REb2N1bWVudDpmfT10aGlzLmhvdCx2PWYuY3JlYXRlRWxlbWVudCgiZGl2IiksUz1mLmNyZWF0''@;'; put 'put ''ZUVsZW1lbnQoInNwYW4iKTt2LmNsYXNzTmFtZT0icmVsYXRpdmUiLFMuY2xhc3NOYW1lPSJjb2xIZWFkZXIiLHRoaXMuc2V0dGluZ3MuYXJpYVRhZ3MmJihWbyh2LC4uLkEzKCkpLFZvKFMsLi4uQTMoKSkpLHRoaXMudXBkYXRlQ2VsbEhlYWRlcihTLGMsZCxoKSx2LmFwcGVuZENoaWxkKFMp''@;'; put 'put ''LGEuYXBwZW5kQ2hpbGQodil9dGhpcy5ob3QucnVuSG9va3MoImFmdGVyR2V0Q29sSGVhZGVyIixjLGEsaCl9dXBkYXRlQ2VsbEhlYWRlcihjLGEsZCl7bGV0IGg9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAsZj1hO2NvbnN0IHY9dGhp''@;'; put 'put ''cy5fd3Qud3RPdmVybGF5cy5nZXRQYXJlbnRPdmVybGF5KGMpfHx0aGlzLl93dDtjLnBhcmVudE5vZGUmJihZbyhjLCJjb2xIZWFkZXIiKT9mPXYud3RUYWJsZS5jb2x1bW5GaWx0ZXIuc291cmNlVG9SZW5kZXJlZChhKTpZbyhjLCJyb3dIZWFkZXIiKSYmKGY9di53dFRhYmxlLnJvd0ZpbHRl''@;'; put 'put ''ci5zb3VyY2VUb1JlbmRlcmVkKGEpKSksZj4tMT9aOChjLGQoYSxoKSk6KE9tKGMsIlx4YTAiKSxtaShjLCJjb3JuZXJIZWFkZXIiKSl9bWF4aW11bVZpc2libGVFbGVtZW50V2lkdGgoYyl7Y29uc3QgZD10aGlzLl93dC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCktYztyZXR1cm4g''@;'; put 'put ''ZD4wP2Q6MH1tYXhpbXVtVmlzaWJsZUVsZW1lbnRIZWlnaHQoYyl7Y29uc3QgZD10aGlzLl93dC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZUhlaWdodCgpLWM7cmV0dXJuIGQ+MD9kOjB9c2V0TGFzdFNpemUoYyxhKXtZaChiRyx0aGlzLGMpLFloKHlHLHRoaXMsYSl9Z2V0TGFzdFNpemUoKXty''@;'; put 'put ''ZXR1cm57d2lkdGg6WXUoYkcsdGhpcyksaGVpZ2h0Oll1KHlHLHRoaXMpfX1nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaG90LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldEZpcnN0''@;'; put 'put ''VmlzaWJsZVJvdygpKX1nZXRMYXN0RnVsbHlWaXNpYmxlUm93KCl7cmV0dXJuIHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodGhpcy5ob3Qudmlldy5fd3Qud3RTY3JvbGwuZ2V0TGFzdFZpc2libGVSb3coKSl9Z2V0Rmlyc3RGdWxseVZpc2li''@;'; put 'put ''bGVDb2x1bW4oKXtyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh0aGlzLmhvdC52aWV3Ll93dC53dFNjcm9sbC5nZXRGaXJzdFZpc2libGVDb2x1bW4oKSl9Z2V0TGFzdEZ1bGx5VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlz''@;'; put 'put ''LmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaG90LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldExhc3RWaXNpYmxlQ29sdW1uKCkpfWdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5n''@;'; put 'put ''ZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaG90LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZVJvdygpKX1nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpe3JldHVybiB0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVy''@;'; put 'put ''YWJsZUluZGV4KHRoaXMuaG90LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCkpfWdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRo''@;'; put 'put ''aXMuaG90LnZpZXcuX3d0Lnd0U2Nyb2xsLmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpKX1nZXRMYXN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpe3JldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KHRoaXMuaG90LnZp''@;'; put 'put ''ZXcuX3d0Lnd0U2Nyb2xsLmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlQ29sdW1uKCkpfWdldENvbHVtbkhlYWRlcnNDb3VudCgpe3JldHVybiBZdShfRyx0aGlzKX1nZXRSb3dIZWFkZXJzQ291bnQoKXtyZXR1cm4gWXUoVkwsdGhpcyl9Z2V0Vmlld3BvcnRXaWR0aCgpe3JldHVybiB0aGlzLmhv''@;'; put 'put ''dC52aWV3Ll93dC53dFZpZXdwb3J0LmdldFZpZXdwb3J0V2lkdGgoKX1nZXRXb3Jrc3BhY2VXaWR0aCgpe3JldHVybiB0aGlzLmhvdC52aWV3Ll93dC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZVdpZHRoKCl9Z2V0Vmlld3BvcnRIZWlnaHQoKXtyZXR1cm4gdGhpcy5ob3Qudmlldy5fd3Qud3RW''@;'; put 'put ''aWV3cG9ydC5nZXRWaWV3cG9ydEhlaWdodCgpfWdldFdvcmtzcGFjZUhlaWdodCgpe3JldHVybiB0aGlzLmhvdC52aWV3Ll93dC53dFZpZXdwb3J0LmdldFdvcmtzcGFjZUhlaWdodCgpfWRlc3Ryb3koKXt0aGlzLl93dC5kZXN0cm95KCksdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpfX0s''@;'; put 'put ''JGRlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIsd0c9JGRlLmxlbmd0aDtmdW5jdGlvbiB6TChsKXtsZXQgZCxjPWwrMSxhPSIiO2Zvcig7Yz4wOylkPShjLTEpJXdHLGE9U3RyaW5nLmZyb21DaGFyQ29kZSg2NStkKSthLGM9cGFyc2VJbnQoKGMtZCkvd0csMTApO3JldHVybiBhfWZ1''@;'; put 'put ''bmN0aW9uIFokZShsKXtsZXQgYz0wO2lmKGwpZm9yKGxldCBhPTAsZD1sLmxlbmd0aC0xO2E8bC5sZW5ndGg7YSs9MSxkLT0xKWMrPXdHKipkKigkZGUuaW5kZXhPZihsW2FdKSsxKTtyZXR1cm4gYy09MSxjfWZ1bmN0aW9uIFkkZSgpe2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxMDAsYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NDtjb25zdCBhPVtdO2xldCBkLGg7Zm9yKGQ9MDtkPGw7ZCsrKXtjb25zdCBmPVtdO2ZvcihoPTA7aDxjO2grKylmLnB1c2goekwo''@;'; put 'put ''aCkrKGQrMSkpO2EucHVzaChmKX1yZXR1cm4gYX1mdW5jdGlvbiBXJGUoKXtsZXQgbD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MTAwLGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFd''@;'; put 'put ''OjQ7Y29uc3QgYT1bXTtsZXQgZCxoO2ZvcihkPTA7ZDxsO2QrKyl7Y29uc3QgZj17fTtmb3IoaD0wO2g8YztoKyspZltgcHJvcCR7aH1gXT16TChoKSsoZCsxKTthLnB1c2goZil9cmV0dXJuIGF9ZnVuY3Rpb24gRyRlKGwsYyl7Y29uc3QgYT1bXTtsZXQgZDtmb3IobGV0IGg9MDtoPGw7aCsr''@;'; put 'put ''KXtkPVtdO2ZvcihsZXQgZj0wO2Y8YztmKyspZC5wdXNoKCIiKTthLnB1c2goZCl9cmV0dXJuIGF9ZnVuY3Rpb24gQ0cobCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsYT1sO2NvbnN0IGQ9W107cmV0dXJuKCFBcnJheS5p''@;'; put 'put ''c0FycmF5KGwpfHwhQXJyYXkuaXNBcnJheShsWzBdKSkmJihhPVtsXSksYS5mb3JFYWNoKChoLGYpPT57QXJyYXkuaXNBcnJheShoKT9oLmZvckVhY2goKHYsUyk9PntkLnB1c2goW2YrYyxTLHZdKX0pOk9iamVjdC5rZXlzKGgpLmZvckVhY2godj0+e2QucHVzaChbZitjLHYsaFt2XV0pfSl9''@;'; put 'put ''KSxkfWZ1bmN0aW9uIFNHKGwpe2xldCBjPTA7cmV0dXJuIEFycmF5LmlzQXJyYXkobCkmJihsWzBdJiZBcnJheS5pc0FycmF5KGxbMF0pP2M9bFswXS5sZW5ndGg6bFswXSYmX3MobFswXSkmJihjPWxMKGxbMF0pKSksY31mdW5jdGlvbiBxZGUobCl7cmV0dXJuISEoQXJyYXkuaXNBcnJheShs''@;'; put 'put ''KSYmbC5sZW5ndGgmJmwuZXZlcnkoYz0+QXJyYXkuaXNBcnJheShjKSkpfWZ1bmN0aW9uIEtkZShsKXtyZXR1cm4hIShBcnJheS5pc0FycmF5KGwpJiZsLmxlbmd0aCYmbC5ldmVyeShjPT4ib2JqZWN0Ij09dHlwZW9mIGMmJiFBcnJheS5pc0FycmF5KGMpJiZudWxsIT09YykpfWZ1bmN0aW9u''@;'; put 'put ''IE14KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiAkJGUobCl7dmFyIGM9ZnVuY3Rpb24gcSRlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQi''@;'; put 'put ''KTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IFgkZT1jbGFzcyBLJGV7Y29uc3RydWN0b3IoYyl7bGV0IGE9YXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO014KHRoaXMsImhvdCIsdm9pZCAwKSxNeCh0aGlzLCJkYXRhIix2b2lkIDApLE14KHRoaXMsImRhdGFUeXBlIiwiYXJyYXkiKSxNeCh0aGlzLCJjb2xUb1Byb3AiLCgpPT57fSksTXgodGhpcywicHJv''@;'; put 'put ''cFRvQ29sIiwoKT0+e30pLHRoaXMuaG90PWMsdGhpcy5kYXRhPWF9bW9kaWZ5Um93RGF0YShjKXtsZXQgYTtyZXR1cm4gdGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5Um93RGF0YSIpJiYoYT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Um93RGF0YSIsYykpLHZvaWQgMD09PWF8fE51bWJlci5p''@;'; put 'put ''c0ludGVnZXIoYSk/dGhpcy5kYXRhW2NdOmF9Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGEmJjAhPT10aGlzLmRhdGEubGVuZ3RoP3RoaXMuZ2V0QnlSYW5nZShudWxsLG51bGwsYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSk6dGhpcy5k''@;'; put 'put ''YXRhfXNldERhdGEoYyl7dGhpcy5kYXRhPWN9Z2V0QXRDb2x1bW4oYyl7Y29uc3QgYT1bXTtyZXR1cm4gVG4odGhpcy5kYXRhLChkLGgpPT57Y29uc3QgZj10aGlzLmdldEF0Q2VsbChoLGMpO2EucHVzaChmKX0pLGF9Z2V0QXRSb3coYyxhLGQpe2xldCBoPWFyZ3VtZW50cy5sZW5ndGg+MyYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107Y29uc3QgZj12b2lkIDA9PT1hJiZ2b2lkIDA9PT1kLHtkYXRhRG90Tm90YXRpb246dn09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTtsZXQgUz1udWxsLFY9bnVsbDtpZihTPXRoaXMubW9kaWZ5Um93RGF0YShjKSxBcnJheS5pc0Fy''@;'; put 'put ''cmF5KFMpKVY9W10sZj9TLmZvckVhY2goKFEsZGUpPT57VltkZV09dGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChjLGRlLFMpfSk6Z28oYSxkLFE9PntWW1EtYV09dGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChjLFEsUyl9KTtlbHNlIGlmKF9zKFMpfHxobChTKSlpZihWPWg/W106e30sIWZ8fGgpe2Nv''@;'; put 'put ''bnN0IGRlPXRoaXMuY291bnRGaXJzdFJvd0tleXMoKS0xO2dvKDAsZGUscGU9Pntjb25zdCBDZT10aGlzLmNvbFRvUHJvcChwZSk7aWYocGU+PShhfHwwKSYmcGU8PShkfHxkZSkmJiFOdW1iZXIuaXNJbnRlZ2VyKENlKSl7Y29uc3QgT2U9dGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChjLENlLFMp''@;'; put 'put ''O2g/Vi5wdXNoKE9lKTp2P2FMKFYsQ2UsT2UpOlZbQ2VdPU9lfX0pfWVsc2UgQ3MoUywoUSxkZSk9Pntjb25zdCBwZT10aGlzLmdldEF0UGh5c2ljYWxDZWxsKGMsZGUsUyk7dj9hTChWLGRlLHBlKTpWW2RlXT1wZX0pO3JldHVybiBWfXNldEF0Q2VsbChjLGEsZCl7aWYoIShjPj10aGlzLmNv''@;'; put 'put ''dW50Um93cygpfHxhPj10aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCkpKXtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIikpe2NvbnN0IGg9VmgoZCk7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZURhdGEiLGMsYSxoLCJzZXQiKSxoLmlzVG91Y2hlZCgpJiYoZD1o''@;'; put 'put ''LnZhbHVlKX1OdW1iZXIuaXNJbnRlZ2VyKGEpP3RoaXMuZGF0YVtjXVthXT1kOmFMKHRoaXMuZGF0YVtjXSxhLGQpfX1nZXRBdFBoeXNpY2FsQ2VsbChjLGEsZCl7bGV0IGg9bnVsbDtpZihkKWlmKCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3R7ZGF0YURvdE5vdGF0aW9uOmZ9PXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKCk7aD1mP0QxZShkLGEpOmRbYV19ZWxzZSBoPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoZCk6ZFthXTtpZih0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlTb3VyY2VEYXRhIikpe2NvbnN0IGY9VmgoaCk7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeVNvdXJjZURhdGEiLGMs''@;'; put 'put ''YSxmLCJnZXQiKSxmLmlzVG91Y2hlZCgpJiYoaD1mLnZhbHVlKX1yZXR1cm4gaH1nZXRBdENlbGwoYyxhKXtjb25zdCBkPXRoaXMubW9kaWZ5Um93RGF0YShjKTtyZXR1cm4gdGhpcy5nZXRBdFBoeXNpY2FsQ2VsbChjLHRoaXMuY29sVG9Qcm9wKGEpLGQpfWdldEJ5UmFuZ2UoKXtsZXQgYz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0m''@;'; put 'put ''JmFyZ3VtZW50c1syXSxoPSExLGY9bnVsbCx2PW51bGwsUz1udWxsLFY9bnVsbDtudWxsPT09Y3x8bnVsbD09PWE/KGg9ITAsZj0wLFM9dGhpcy5jb3VudFJvd3MoKS0xKTooZj1NYXRoLm1pbihjLnJvdyxhLnJvdyksdj1NYXRoLm1pbihjLmNvbCxhLmNvbCksUz1NYXRoLm1heChjLnJvdyxh''@;'; put 'put ''LnJvdyksVj1NYXRoLm1heChjLmNvbCxhLmNvbCkpO2NvbnN0IFE9W107cmV0dXJuIGdvKGYsUyxkZT0+e1EucHVzaChoP3RoaXMuZ2V0QXRSb3coZGUsdm9pZCAwLHZvaWQgMCxkKTp0aGlzLmdldEF0Um93KGRlLHYsVixkKSl9KSxRfWNvdW50Um93cygpe2lmKHRoaXMuaG90Lmhhc0hvb2so''@;'; put 'put ''Im1vZGlmeVNvdXJjZUxlbmd0aCIpKXtjb25zdCBjPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlTb3VyY2VMZW5ndGgiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGMpKXJldHVybiBjfXJldHVybiB0aGlzLmRhdGEubGVuZ3RofWNvdW50Rmlyc3RSb3dLZXlzKCl7cmV0dXJuIFNHKHRoaXMuZGF0''@;'; put 'put ''YSl9ZGVzdHJveSgpe3RoaXMuZGF0YT1udWxsLHRoaXMuaG90PW51bGx9fSxYZGU9e19sb2NhbEhvb2tzOk9iamVjdC5jcmVhdGUobnVsbCksYWRkTG9jYWxIb29rKGwsYyl7cmV0dXJuIHRoaXMuX2xvY2FsSG9va3NbbF18fCh0aGlzLl9sb2NhbEhvb2tzW2xdPVtdKSx0aGlzLl9sb2NhbEhv''@;'; put 'put ''b2tzW2xdLnB1c2goYyksdGhpc30scnVuTG9jYWxIb29rcyhsLGMsYSxkLGgsZix2KXtpZih0aGlzLl9sb2NhbEhvb2tzW2xdKXtjb25zdCBTPXRoaXMuX2xvY2FsSG9va3NbbF0ubGVuZ3RoO2ZvcihsZXQgVj0wO1Y8UztWKyspb0wodGhpcy5fbG9jYWxIb29rc1tsXVtWXSx0aGlzLGMsYSxk''@;'; put 'put ''LGgsZix2KX19LGNsZWFyTG9jYWxIb29rcygpe3JldHVybiB0aGlzLl9sb2NhbEhvb2tzPXt9LHRoaXN9fTtJMyhYZGUsIk1JWElOX05BTUUiLCJsb2NhbEhvb2tzIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IFUxPVhkZTtmdW5jdGlvbiBKZGUobCxjLGEpe3JldHVybiBj''@;'; put 'put ''PWZ1bmN0aW9uIFEkZShsKXt2YXIgYz1mdW5jdGlvbiBlcWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBl''@;'; put 'put ''b2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9''@;'; put 'put ''KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3Mgbjd7Y29uc3RydWN0b3IoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50''@;'; put 'put ''c1swXT9hcmd1bWVudHNbMF06bnVsbDtKZGUodGhpcywiaW5kZXhlZFZhbHVlcyIsW10pLEpkZSh0aGlzLCJpbml0VmFsdWVPckZuIix2b2lkIDApLHRoaXMuaW5pdFZhbHVlT3JGbj1jfWdldFZhbHVlcygpe3JldHVybiB0aGlzLmluZGV4ZWRWYWx1ZXN9Z2V0VmFsdWVBdEluZGV4KGMpe2Nv''@;'; put 'put ''bnN0IGE9dGhpcy5pbmRleGVkVmFsdWVzO2lmKGM8YS5sZW5ndGgpcmV0dXJuIGFbY119c2V0VmFsdWVzKGMpe3RoaXMuaW5kZXhlZFZhbHVlcz1jLnNsaWNlKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX1zZXRWYWx1ZUF0SW5kZXgoYyxhKXtyZXR1cm4gYzx0aGlzLmluZGV4ZWRW''@;'; put 'put ''YWx1ZXMubGVuZ3RoJiYodGhpcy5pbmRleGVkVmFsdWVzW2NdPWEsdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKSwhMCl9Y2xlYXIoKXt0aGlzLnNldERlZmF1bHRWYWx1ZXMoKX1nZXRMZW5ndGgoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZXMoKS5sZW5ndGh9c2V0RGVmYXVsdFZhbHVlcygp''@;'; put 'put ''e2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmluZGV4ZWRWYWx1ZXMubGVuZ3RoO3RoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGg9MCxobCh0aGlzLmluaXRWYWx1ZU9yRm4pP2dvKGMtMSxhPT50aGlzLmluZGV4ZWRWYWx1''@;'; put 'put ''ZXMucHVzaCh0aGlzLmluaXRWYWx1ZU9yRm4oYSkpKTpnbyhjLTEsKCk9PnRoaXMuaW5kZXhlZFZhbHVlcy5wdXNoKHRoaXMuaW5pdFZhbHVlT3JGbikpLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIil9aW5pdChjKXtyZXR1cm4gdGhpcy5zZXREZWZhdWx0VmFsdWVzKGMpLHRoaXMucnVu''@;'; put 'put ''TG9jYWxIb29rcygiaW5pdCIpLHRoaXN9aW5zZXJ0KCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiKX1yZW1vdmUoKXt0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIpfWRlc3Ryb3koKXt0aGlzLmNsZWFyTG9jYWxIb29rcygpLHRoaXMuaW5kZXhlZFZhbHVlcz1udWxsLHRoaXMuaW5p''@;'; put 'put ''dFZhbHVlT3JGbj1udWxsfX1mdW5jdGlvbiBNRyhsLGMsYSl7cmV0dXJuWy4uLmwuc2xpY2UoMCxjKSwuLi5hLC4uLmwuc2xpY2UoYyldfWZ1bmN0aW9uIHh4KGwsYyl7cmV0dXJuIEZoKGwsYT0+ITE9PT1jLmluY2x1ZGVzKGEpKX1mdW5jdGlvbiB4RyhsLGMpe3JldHVybiB4cyhsLGE9PmEt''@;'; put 'put ''Yy5maWx0ZXIoZD0+ZDxhKS5sZW5ndGgpfWZ1bmN0aW9uIEVHKGwsYyl7Y29uc3QgYT1jWzBdLGQ9Yy5sZW5ndGg7cmV0dXJuIHhzKGwsaD0+aD49YT9oK2Q6aCl9cmwobjcsVTEpO2NsYXNzIFFkZSBleHRlbmRzIG43e2NvbnN0cnVjdG9yKCl7c3VwZXIoYz0+Yyl9aW5zZXJ0KGMsYSl7Y29u''@;'; put 'put ''c3QgZD1FRyh0aGlzLmluZGV4ZWRWYWx1ZXMsYSk7dGhpcy5pbmRleGVkVmFsdWVzPU1HKGQsYyxhKSxzdXBlci5pbnNlcnQoYyxhKX1yZW1vdmUoYyl7Y29uc3QgYT14eCh0aGlzLmluZGV4ZWRWYWx1ZXMsYyk7dGhpcy5pbmRleGVkVmFsdWVzPXhHKGEsYyksc3VwZXIucmVtb3ZlKGMpfX1m''@;'; put 'put ''dW5jdGlvbiBURyhsLGMsYSxkKXtjb25zdCBoPWEubGVuZ3RoP2FbMF06dm9pZCAwO3JldHVyblsuLi5sLnNsaWNlKDAsaCksLi4uYS5tYXAoKGYsdik9PmhsKGQpP2QoZix2KTpkKSwuLi52b2lkIDA9PT1oP1tdOmwuc2xpY2UoaCldfWZ1bmN0aW9uIGtHKGwsYyl7cmV0dXJuIEZoKGwsKGEs''@;'; put 'put ''ZCk9PiExPT09Yy5pbmNsdWRlcyhkKSl9Y2xhc3MgWm0gZXh0ZW5kcyBuN3tpbnNlcnQoYyxhKXt0aGlzLmluZGV4ZWRWYWx1ZXM9VEcodGhpcy5pbmRleGVkVmFsdWVzLDAsYSx0aGlzLmluaXRWYWx1ZU9yRm4pLHN1cGVyLmluc2VydChjLGEpfXJlbW92ZShjKXt0aGlzLmluZGV4ZWRWYWx1''@;'; put 'put ''ZXM9a0codGhpcy5pbmRleGVkVmFsdWVzLGMpLHN1cGVyLnJlbW92ZShjKX19Y2xhc3MgVUwgZXh0ZW5kcyBabXtjb25zdHJ1Y3Rvcigpe3N1cGVyKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pfWdldEhpZGRlbkluZGV4ZXMoKXtyZXR1''@;'; put 'put ''cm4gTWModGhpcy5nZXRWYWx1ZXMoKSwoYyxhLGQpPT4oYSYmYy5wdXNoKGQpLGMpLFtdKX19Y2xhc3MgWkwgZXh0ZW5kcyBuN3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gdHFlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBucWUobCl7dmFyIGM9ZnVuY3Rp''@;'; put 'put ''b24gcnFlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJvcmRlck9mSW5kZXhlcyIsW10pfWdldFZhbHVlcygpe3JldHVybiB0aGlzLm9yZGVyT2ZJbmRleGVzLm1hcChjPT50aGlzLmluZGV4ZWRWYWx1ZXNbY10p''@;'; put 'put ''fXNldFZhbHVlcyhjKXt0aGlzLm9yZGVyT2ZJbmRleGVzPVsuLi5BcnJheShjLmxlbmd0aCkua2V5cygpXSxzdXBlci5zZXRWYWx1ZXMoYyl9c2V0VmFsdWVBdEluZGV4KGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRo''@;'; put 'put ''aXMub3JkZXJPZkluZGV4ZXMubGVuZ3RoO3JldHVybiBjPHRoaXMuaW5kZXhlZFZhbHVlcy5sZW5ndGgmJih0aGlzLmluZGV4ZWRWYWx1ZXNbY109YSwhMT09PXRoaXMub3JkZXJPZkluZGV4ZXMuaW5jbHVkZXMoYykmJnRoaXMub3JkZXJPZkluZGV4ZXMuc3BsaWNlKGQsMCxjKSx0aGlzLnJ1''@;'; put 'put ''bkxvY2FsSG9va3MoImNoYW5nZSIpLCEwKX1jbGVhclZhbHVlKGMpe3RoaXMub3JkZXJPZkluZGV4ZXM9eHgodGhpcy5vcmRlck9mSW5kZXhlcyxbY10pLGhsKHRoaXMuaW5pdFZhbHVlT3JGbik/c3VwZXIuc2V0VmFsdWVBdEluZGV4KGMsdGhpcy5pbml0VmFsdWVPckZuKGMpKTpzdXBlci5z''@;'; put 'put ''ZXRWYWx1ZUF0SW5kZXgoYyx0aGlzLmluaXRWYWx1ZU9yRm4pfWdldExlbmd0aCgpe3JldHVybiB0aGlzLm9yZGVyT2ZJbmRleGVzLmxlbmd0aH1zZXREZWZhdWx0VmFsdWVzKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRo''@;'; put 'put ''aXMuaW5kZXhlZFZhbHVlcy5sZW5ndGg7dGhpcy5vcmRlck9mSW5kZXhlcy5sZW5ndGg9MCxzdXBlci5zZXREZWZhdWx0VmFsdWVzKGMpfWluc2VydChjLGEpe3RoaXMuaW5kZXhlZFZhbHVlcz1URyh0aGlzLmluZGV4ZWRWYWx1ZXMsMCxhLHRoaXMuaW5pdFZhbHVlT3JGbiksdGhpcy5vcmRl''@;'; put 'put ''ck9mSW5kZXhlcz1FRyh0aGlzLm9yZGVyT2ZJbmRleGVzLGEpLHN1cGVyLmluc2VydChjLGEpfXJlbW92ZShjKXt0aGlzLmluZGV4ZWRWYWx1ZXM9a0codGhpcy5pbmRleGVkVmFsdWVzLGMpLHRoaXMub3JkZXJPZkluZGV4ZXM9eHgodGhpcy5vcmRlck9mSW5kZXhlcyxjKSx0aGlzLm9yZGVy''@;'; put 'put ''T2ZJbmRleGVzPXhHKHRoaXMub3JkZXJPZkluZGV4ZXMsYyksc3VwZXIucmVtb3ZlKGMpfWdldEVudHJpZXMoKXtyZXR1cm4gdGhpcy5vcmRlck9mSW5kZXhlcy5tYXAoYz0+W2MsdGhpcy5nZXRWYWx1ZUF0SW5kZXgoYyldKX19Y2xhc3MgRXggZXh0ZW5kcyBabXtjb25zdHJ1Y3Rvcigpe3N1''@;'; put 'put ''cGVyKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pfWdldFRyaW1tZWRJbmRleGVzKCl7cmV0dXJuIE1jKHRoaXMuZ2V0VmFsdWVzKCksKGMsYSxkKT0+KGEmJmMucHVzaChkKSxjKSxbXSl9fWNvbnN0IGVoZT1uZXcgTWFwKFtbImhpZGlu''@;'; put 'put ''ZyIsVUxdLFsiaW5kZXgiLG43XSxbImxpbmtlZFBoeXNpY2FsSW5kZXhUb1ZhbHVlIixaTF0sWyJwaHlzaWNhbEluZGV4VG9WYWx1ZSIsWm1dLFsidHJpbW1pbmciLEV4XV0pO2xldCBBRz0wO2NsYXNzIERHe2NvbnN0cnVjdG9yKCl7IWZ1bmN0aW9uIG9xZShsLGMsYSl7cmV0dXJuIGM9ZnVu''@;'; put 'put ''Y3Rpb24gc3FlKGwpe3ZhciBjPWZ1bmN0aW9uIGFxZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBk''@;'; put 'put ''KXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyks''@;'; put 'put ''YyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywiY29sbGVjdGlvbiIsbmV3IE1hcCl9cmVnaXN0ZXIoYyxhKXshMT09PXRoaXMuY29sbGVjdGlvbi5oYXMoYykm''@;'; put 'put ''Jih0aGlzLmNvbGxlY3Rpb24uc2V0KGMsYSksYS5hZGRMb2NhbEhvb2soImNoYW5nZSIsKCk9PnRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixhKSksQUcrPTEpfXVucmVnaXN0ZXIoYyl7Y29uc3QgYT10aGlzLmNvbGxlY3Rpb24uZ2V0KGMpO3NvKGEpJiYoYS5kZXN0cm95KCksdGhpcy5j''@;'; put 'put ''b2xsZWN0aW9uLmRlbGV0ZShjKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsYSksQUctPTEpfXVucmVnaXN0ZXJBbGwoKXt0aGlzLmNvbGxlY3Rpb24uZm9yRWFjaCgoYyxhKT0+dGhpcy51bnJlZ2lzdGVyKGEpKSx0aGlzLmNvbGxlY3Rpb24uY2xlYXIoKX1nZXQoYyl7cmV0dXJuIGRs''@;'; put 'put ''KGMpP0FycmF5LmZyb20odGhpcy5jb2xsZWN0aW9uLnZhbHVlcygpKTp0aGlzLmNvbGxlY3Rpb24uZ2V0KGMpfWdldExlbmd0aCgpe3JldHVybiB0aGlzLmNvbGxlY3Rpb24uc2l6ZX1yZW1vdmVGcm9tRXZlcnkoYyl7dGhpcy5jb2xsZWN0aW9uLmZvckVhY2goYT0+e2EucmVtb3ZlKGMpfSl9''@;'; put 'put ''aW5zZXJ0VG9FdmVyeShjLGEpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGQ9PntkLmluc2VydChjLGEpfSl9aW5pdEV2ZXJ5KGMpe3RoaXMuY29sbGVjdGlvbi5mb3JFYWNoKGE9PnthLmluaXQoYyl9KX19ZnVuY3Rpb24gSUcobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGNxZShsKXt2YXIg''@;'; put 'put ''Yz1mdW5jdGlvbiB1cWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9cmwoREcsVTEpO2NsYXNzIHRoZSBleHRlbmRzIERHe2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoKSxJRyh0aGlzLCJtZXJnZWRWYWx1ZXNDYWNoZSIsW10p''@;'; put 'put ''LElHKHRoaXMsImFnZ3JlZ2F0aW9uRnVuY3Rpb24iLHZvaWQgMCksSUcodGhpcywiZmFsbGJhY2tWYWx1ZSIsdm9pZCAwKSx0aGlzLmFnZ3JlZ2F0aW9uRnVuY3Rpb249Yyx0aGlzLmZhbGxiYWNrVmFsdWU9YX1nZXRNZXJnZWRWYWx1ZXMoKXtpZighMD09PSghKGFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdKSlyZXR1cm4gdGhpcy5tZXJnZWRWYWx1ZXNDYWNoZTtpZigwPT09dGhpcy5nZXRMZW5ndGgoKSlyZXR1cm5bXTtjb25zdCBhPXhzKHRoaXMuZ2V0KCksZj0+Zi5nZXRWYWx1ZXMoKSksZD1bXSxoPXNvKGFbMF0pJiZhWzBd''@;'; put 'put ''Lmxlbmd0aHx8MDtmb3IobGV0IGY9MDtmPGg7Zis9MSl7Y29uc3Qgdj1bXTtmb3IobGV0IFM9MDtTPHRoaXMuZ2V0TGVuZ3RoKCk7Uys9MSl2LnB1c2goYVtTXVtmXSk7ZC5wdXNoKHYpfXJldHVybiB4cyhkLHRoaXMuYWdncmVnYXRpb25GdW5jdGlvbil9Z2V0TWVyZ2VkVmFsdWVBdEluZGV4''@;'; put 'put ''KGMsYSl7Y29uc3QgZD10aGlzLmdldE1lcmdlZFZhbHVlcyhhKVtjXTtyZXR1cm4gc28oZCk/ZDp0aGlzLmZhbGxiYWNrVmFsdWV9dXBkYXRlQ2FjaGUoKXt0aGlzLm1lcmdlZFZhbHVlc0NhY2hlPXRoaXMuZ2V0TWVyZ2VkVmFsdWVzKCExKX19ZnVuY3Rpb24gbmhlKGwsYyxhKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgUkc9bmV3IFdlYWtNYXA7Y2xhc3Mgcmhle2NvbnN0''@;'; put 'put ''cnVjdG9yKCl7IWZ1bmN0aW9uIGRxZShsLGMsYSl7KGZ1bmN0aW9uIGhxZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9''@;'; put 'put ''KHRoaXMsUkcsW10pfXN1YnNjcmliZShjKXtyZXR1cm4gdGhpcy5hZGRMb2NhbEhvb2soImNoYW5nZSIsYyksdGhpcy5fd3JpdGUoZnVuY3Rpb24gcHFlKGwsYyl7cmV0dXJuIGwuZ2V0KG5oZShsLGMpKX0oUkcsdGhpcykpLHRoaXN9dW5zdWJzY3JpYmUoKXtyZXR1cm4gdGhpcy5ydW5Mb2Nh''@;'; put 'put ''bEhvb2tzKCJ1bnN1YnNjcmliZSIpLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCksdGhpc31fd3JpdGUoYyl7cmV0dXJuIGMubGVuZ3RoPjAmJnRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixjKSx0aGlzfV93cml0ZUluaXRpYWxDaGFuZ2VzKGMpeyFmdW5jdGlvbiBmcWUobCxjLGEpe2wuc2V0''@;'; put 'put ''KG5oZShsLGMpLGEpfShSRyx0aGlzLGMpfX1mdW5jdGlvbiBpaGUobCxjKXtjb25zdCBhPVtdO2xldCBkPTAsaD0wO2Zvcig7ZDxsLmxlbmd0aCYmaDxjLmxlbmd0aDtkKyssaCsrKWxbZF0hPT1jW2hdJiZhLnB1c2goe29wOiJyZXBsYWNlIixpbmRleDpoLG9sZFZhbHVlOmxbZF0sbmV3VmFs''@;'; put 'put ''dWU6Y1toXX0pO2Zvcig7ZDxjLmxlbmd0aDtkKyspYS5wdXNoKHtvcDoiaW5zZXJ0IixpbmRleDpkLG9sZFZhbHVlOnZvaWQgMCxuZXdWYWx1ZTpjW2RdfSk7Zm9yKDtoPGwubGVuZ3RoO2grKylhLnB1c2goe29wOiJyZW1vdmUiLGluZGV4Omgsb2xkVmFsdWU6bFtoXSxuZXdWYWx1ZTp2b2lk''@;'; put 'put ''IDB9KTtyZXR1cm4gYX1mdW5jdGlvbiBUeChsLGMsYSl7KGZ1bmN0aW9uIGdxZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGws''@;'; put 'put ''YSl9ZnVuY3Rpb24gV2gobCxjKXtyZXR1cm4gbC5nZXQob2hlKGwsYykpfWZ1bmN0aW9uIFlMKGwsYyxhKXtyZXR1cm4gbC5zZXQob2hlKGwsYyksYSksYX1mdW5jdGlvbiBvaGUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXJsKHJoZSxVMSk7dmFyIFdMPW5ldyBXZWFrTWFwLGt4PW5ldyBXZWFrTWFwLEdMPW5ldyBXZWFrTWFwLCRMPW5ldyBXZWFrTWFwLHFMPW5ldyBX''@;'; put 'put ''ZWFrTWFwO2NsYXNzIG1xZXtjb25zdHJ1Y3Rvcigpe2xldHtpbml0aWFsSW5kZXhWYWx1ZTpjfT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307VHgodGhpcyxXTCxuZXcgU2V0KSxUeCh0aGlzLGt4LFtdKSxUeCh0aGlzLEdMLFtdKSxU''@;'; put 'put ''eCh0aGlzLCRMLCExKSxUeCh0aGlzLHFMLCExKSxZTChxTCx0aGlzLGM/PyExKX1jcmVhdGVPYnNlcnZlcigpe2NvbnN0IGM9bmV3IHJoZTtyZXR1cm4gV2goV0wsdGhpcykuYWRkKGMpLGMuYWRkTG9jYWxIb29rKCJ1bnN1YnNjcmliZSIsKCk9PntXaChXTCx0aGlzKS5kZWxldGUoYyl9KSxj''@;'; put 'put ''Ll93cml0ZUluaXRpYWxDaGFuZ2VzKGloZShXaChreCx0aGlzKSxXaChHTCx0aGlzKSkpLGN9ZW1pdChjKXtsZXQgYT1XaChHTCx0aGlzKTsoIVdoKCRMLHRoaXMpfHxXaChreCx0aGlzKS5sZW5ndGghPT1jLmxlbmd0aCkmJigwPT09Yy5sZW5ndGg/Yz1uZXcgQXJyYXkoYS5sZW5ndGgpLmZp''@;'; put 'put ''bGwoV2gocUwsdGhpcykpOllMKGt4LHRoaXMsbmV3IEFycmF5KGMubGVuZ3RoKS5maWxsKFdoKHFMLHRoaXMpKSksV2goJEwsdGhpcyl8fChZTCgkTCx0aGlzLCEwKSxhPVdoKGt4LHRoaXMpKSk7Y29uc3QgZD1paGUoYSxjKTtXaChXTCx0aGlzKS5mb3JFYWNoKGg9PmguX3dyaXRlKGQpKSxZ''@;'; put 'put ''TChHTCx0aGlzLGMpfX1mdW5jdGlvbiBsMShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gdnFlKGwpe3ZhciBjPWZ1bmN0aW9uIF9xZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBk''@;'; put 'put ''PWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwi''@;'; put 'put ''c3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBMR3tjb25zdHJ1Y3Rvcigpe2wx''@;'; put 'put ''KHRoaXMsImluZGV4ZXNTZXF1ZW5jZSIsbmV3IFFkZSksbDEodGhpcywidHJpbW1pbmdNYXBzQ29sbGVjdGlvbiIsbmV3IHRoZShjPT5jLnNvbWUoYT0+ITA9PT1hKSwhMSkpLGwxKHRoaXMsImhpZGluZ01hcHNDb2xsZWN0aW9uIixuZXcgdGhlKGM9PmMuc29tZShhPT4hMD09PWEpLCExKSks''@;'; put 'put ''bDEodGhpcywidmFyaW91c01hcHNDb2xsZWN0aW9uIixuZXcgREcpLGwxKHRoaXMsImhpZGluZ0NoYW5nZXNPYnNlcnZhYmxlIixuZXcgbXFlKHtpbml0aWFsSW5kZXhWYWx1ZTohMX0pKSxsMSh0aGlzLCJub3RUcmltbWVkSW5kZXhlc0NhY2hlIixbXSksbDEodGhpcywibm90SGlkZGVuSW5k''@;'; put 'put ''ZXhlc0NhY2hlIixbXSksbDEodGhpcywiaXNCYXRjaGVkIiwhMSksbDEodGhpcywiaW5kZXhlc1NlcXVlbmNlQ2hhbmdlZCIsITEpLGwxKHRoaXMsImluZGV4ZXNDaGFuZ2VTb3VyY2UiLHZvaWQgMCksbDEodGhpcywidHJpbW1lZEluZGV4ZXNDaGFuZ2VkIiwhMSksbDEodGhpcywiaGlkZGVu''@;'; put 'put ''SW5kZXhlc0NoYW5nZWQiLCExKSxsMSh0aGlzLCJyZW5kZXJhYmxlUGh5c2ljYWxJbmRleGVzQ2FjaGUiLFtdKSxsMSh0aGlzLCJmcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNoZSIsbmV3IE1hcCksbDEodGhpcywiZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZSIsbmV3''@;'; put 'put ''IE1hcCksdGhpcy5pbmRleGVzU2VxdWVuY2UuYWRkTG9jYWxIb29rKCJjaGFuZ2UiLCgpPT57dGhpcy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkPSEwLHRoaXMudXBkYXRlQ2FjaGUoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImluZGV4ZXNTZXF1ZW5jZUNoYW5nZSIsdGhpcy5pbmRleGVzQ2hhbmdl''@;'; put 'put ''U291cmNlKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsdGhpcy5pbmRleGVzU2VxdWVuY2UsbnVsbCl9KSx0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGM9Pnt0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZD0hMCx0aGlzLnVwZGF0ZUNhY2hl''@;'; put 'put ''KCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLGMsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uKX0pLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJjaGFuZ2UiLGM9Pnt0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkPSEwLHRoaXMudXBkYXRlQ2FjaGUoKSx0''@;'; put 'put ''aGlzLnJ1bkxvY2FsSG9va3MoImNoYW5nZSIsYyx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uKX0pLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmFkZExvY2FsSG9vaygiY2hhbmdlIixjPT57dGhpcy5ydW5Mb2NhbEhvb2tzKCJjaGFuZ2UiLGMsdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rp''@;'; put 'put ''b24pfSl9c3VzcGVuZE9wZXJhdGlvbnMoKXt0aGlzLmlzQmF0Y2hlZD0hMH1yZXN1bWVPcGVyYXRpb25zKCl7dGhpcy5pc0JhdGNoZWQ9ITEsdGhpcy51cGRhdGVDYWNoZSgpfWNyZWF0ZUNoYW5nZXNPYnNlcnZlcihjKXtpZigiaGlkaW5nIiE9PWMpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBv''@;'; put 'put ''cnRlZCBpbmRleCBtYXAgdHlwZSAiJHtjfSIuYCk7cmV0dXJuIHRoaXMuaGlkaW5nQ2hhbmdlc09ic2VydmFibGUuY3JlYXRlT2JzZXJ2ZXIoKX1jcmVhdGVBbmRSZWdpc3RlckluZGV4TWFwKGMsYSxkKXtyZXR1cm4gdGhpcy5yZWdpc3Rlck1hcChjLGZ1bmN0aW9uIGlxZShsKXtsZXQgYz1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtpZighZWhlLmhhcyhsKSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBtYXAgdHlwZSAoIiR7bH0iKSBkb2VzIG5vdCBleGlzdC5gKTtyZXR1cm4gbmV3KGVoZS5nZXQobCkpKGMp''@;'; put 'put ''fShhLGQpKX1yZWdpc3Rlck1hcChjLGEpe2lmKHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5nZXQoYyl8fHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0KGMpfHx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5nZXQoYykpdGhyb3cgRXJyb3IoYE1hcCB3aXRoIG5hbWUgIiR7Y30i''@;'; put 'put ''IGhhcyBiZWVuIGFscmVhZHkgcmVnaXN0ZXJlZC5gKTthIGluc3RhbmNlb2YgRXg/dGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLnJlZ2lzdGVyKGMsYSk6YSBpbnN0YW5jZW9mIFVMP3RoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24ucmVnaXN0ZXIoYyxhKTp0aGlzLnZhcmlvdXNNYXBzQ29s''@;'; put 'put ''bGVjdGlvbi5yZWdpc3RlcihjLGEpO2NvbnN0IGQ9dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKTtyZXR1cm4gZD4wJiZhLmluaXQoZCksYX11bnJlZ2lzdGVyTWFwKGMpe3RoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyKGMpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24u''@;'; put 'put ''dW5yZWdpc3RlcihjKSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi51bnJlZ2lzdGVyKGMpfXVucmVnaXN0ZXJBbGwoKXt0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24udW5yZWdpc3RlckFsbCgpLHRoaXMudmFy''@;'; put 'put ''aW91c01hcHNDb2xsZWN0aW9uLnVucmVnaXN0ZXJBbGwoKX1nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChjKXtjb25zdCBhPXRoaXMubm90VHJpbW1lZEluZGV4ZXNDYWNoZVtjXTtyZXR1cm4gc28oYSk/YTpudWxsfWdldFBoeXNpY2FsRnJvbVJlbmRlcmFibGVJbmRleChjKXtjb25zdCBh''@;'; put 'put ''PXRoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlW2NdO3JldHVybiBzbyhhKT9hOm51bGx9Z2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoYyl7Y29uc3QgYT10aGlzLmZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlc0NhY2hlLmdldChjKTtyZXR1cm4gc28oYSk/YTpudWxsfWdl''@;'; put 'put ''dFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYyl7cmV0dXJuIHRoaXMuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgodGhpcy5nZXRQaHlzaWNhbEZyb21SZW5kZXJhYmxlSW5kZXgoYykpfWdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoYyl7Y29uc3QgYT10aGlzLmZyb21WaXN1YWxU''@;'; put 'put ''b1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuZ2V0KGMpO3JldHVybiBzbyhhKT9hOm51bGx9Z2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZihudWxsPT09dGhpcy5nZXRQaHlz''@;'; put 'put ''aWNhbEZyb21WaXN1YWxJbmRleChjKSlyZXR1cm4gbnVsbDtpZih0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuaGFzKGMpKXJldHVybiBjO2NvbnN0IGY9QXJyYXkuZnJvbSh0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUua2V5cygpKTtsZXQg''@;'; put 'put ''dj0tMTtyZXR1cm4gdj1hPjA/Zi5maW5kSW5kZXgoUz0+Uz5jKTpmLnJldmVyc2UoKS5maW5kSW5kZXgoUz0+UzxjKSwtMT09PXY/ZD90aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChjLC1hLCExKTpudWxsOmZbdl19aW5pdFRvTGVuZ3RoKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7dGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlPVsuLi5uZXcgQXJyYXkoYykua2V5cygpXSx0aGlzLm5vdEhpZGRlbkluZGV4ZXNDYWNoZT1bLi4ubmV3IEFycmF5KGMpLmtleXMo''@;'; put 'put ''KV0sdGhpcy5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT0iaW5pdCIsdGhpcy5pbmRleGVzU2VxdWVuY2UuaW5pdChjKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9dm9pZCAwLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5pbml0RXZlcnkoYyksdGhp''@;'; put 'put ''cy5yZXN1bWVPcGVyYXRpb25zKCksdGhpcy5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uaW5pdEV2ZXJ5KGMpLHRoaXMudmFyaW91c01hcHNDb2xsZWN0aW9uLmluaXRFdmVyeShjKSx0aGlzLnJlc3VtZU9wZXJhdGlvbnMoKSx0aGlzLnJ1bkxvY2FsSG9v''@;'; put 'put ''a3MoImluaXQiKX1maXRUb0xlbmd0aChjKXtjb25zdCBhPXRoaXMuZ2V0TnVtYmVyT2ZJbmRleGVzKCk7aWYoYzxhKXtjb25zdCBkPVsuLi5BcnJheSh0aGlzLmdldE51bWJlck9mSW5kZXhlcygpLWMpLmtleXMoKV0ubWFwKGg9PmgrYyk7dGhpcy5yZW1vdmVJbmRleGVzKGQpfWVsc2UgdGhp''@;'; put 'put ''cy5pbnNlcnRJbmRleGVzKGEsYy1hKX1nZXRJbmRleGVzU2VxdWVuY2UoKXtyZXR1cm4gdGhpcy5pbmRleGVzU2VxdWVuY2UuZ2V0VmFsdWVzKCl9c2V0SW5kZXhlc1NlcXVlbmNlKGMpe3ZvaWQgMD09PXRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZSYmKHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJj''@;'; put 'put ''ZT0idXBkYXRlIiksdGhpcy5pbmRleGVzU2VxdWVuY2Uuc2V0VmFsdWVzKGMpLCJ1cGRhdGUiPT09dGhpcy5pbmRleGVzQ2hhbmdlU291cmNlJiYodGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMCl9Z2V0Tm90VHJpbW1lZEluZGV4ZXMoKXtyZXR1cm4hMD09PSghKGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdKT90aGlzLm5vdFRyaW1tZWRJbmRleGVzQ2FjaGU6dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5maWx0ZXIoZD0+ITE9PT10aGlzLmlzVHJpbW1lZChkKSl9Z2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKXty''@;'; put 'put ''ZXR1cm4gdGhpcy5nZXROb3RUcmltbWVkSW5kZXhlcygpLmxlbmd0aH1nZXROb3RIaWRkZW5JbmRleGVzKCl7cmV0dXJuITA9PT0oIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSk/dGhpcy5ub3RIaWRkZW5JbmRleGVzQ2FjaGU6dGhp''@;'; put 'put ''cy5nZXRJbmRleGVzU2VxdWVuY2UoKS5maWx0ZXIoZD0+ITE9PT10aGlzLmlzSGlkZGVuKGQpKX1nZXROb3RIaWRkZW5JbmRleGVzTGVuZ3RoKCl7cmV0dXJuIHRoaXMuZ2V0Tm90SGlkZGVuSW5kZXhlcygpLmxlbmd0aH1nZXRSZW5kZXJhYmxlSW5kZXhlcygpe3JldHVybiEwPT09KCEoYXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0pP3RoaXMucmVuZGVyYWJsZVBoeXNpY2FsSW5kZXhlc0NhY2hlOnRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKS5maWx0ZXIoZD0+ITE9PT10aGlzLmlzSGlkZGVuKGQpKX1nZXRSZW5kZXJhYmxl''@;'; put 'put ''SW5kZXhlc0xlbmd0aCgpe3JldHVybiB0aGlzLmdldFJlbmRlcmFibGVJbmRleGVzKCkubGVuZ3RofWdldE51bWJlck9mSW5kZXhlcygpe3JldHVybiB0aGlzLmdldEluZGV4ZXNTZXF1ZW5jZSgpLmxlbmd0aH1tb3ZlSW5kZXhlcyhjLGEpeyJudW1iZXIiPT10eXBlb2YgYyYmKGM9W2NdKTtj''@;'; put 'put ''b25zdCBkPXhzKGMsUT0+dGhpcy5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChRKSksaD10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCksZj1jLmxlbmd0aCx2PXh4KHRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCksZCksUz12LmZpbHRlcihRPT4hMT09PXRoaXMuaXNUcmltbWVk''@;'; put 'put ''KFEpKTtsZXQgVj12LmluZGV4T2YoU1tTLmxlbmd0aC0xXSkrMTthK2Y8aCYmKFY9di5pbmRleE9mKFNbYV0pKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9Im1vdmUiLHRoaXMuc2V0SW5kZXhlc1NlcXVlbmNlKE1HKHYsVixkKSksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPXZvaWQgMH1p''@;'; put 'put ''c1RyaW1tZWQoYyl7cmV0dXJuIHRoaXMudHJpbW1pbmdNYXBzQ29sbGVjdGlvbi5nZXRNZXJnZWRWYWx1ZUF0SW5kZXgoYyl9aXNIaWRkZW4oYyl7cmV0dXJuIHRoaXMuaGlkaW5nTWFwc0NvbGxlY3Rpb24uZ2V0TWVyZ2VkVmFsdWVBdEluZGV4KGMpfWluc2VydEluZGV4ZXMoYyxhKXtjb25z''@;'; put 'put ''dCBkPXRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKVtjXSxoPXNvKGQpP2Q6dGhpcy5nZXROdW1iZXJPZkluZGV4ZXMoKSxmPXRoaXMuZ2V0SW5kZXhlc1NlcXVlbmNlKCkuaW5jbHVkZXMoZCk/dGhpcy5nZXRJbmRleGVzU2VxdWVuY2UoKS5pbmRleE9mKGQpOnRoaXMuZ2V0TnVtYmVyT2ZJ''@;'; put 'put ''bmRleGVzKCksdj14cyhuZXcgQXJyYXkoYSkuZmlsbChoKSwoUyxWKT0+UytWKTt0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPSJpbnNlcnQiLHRoaXMuaW5kZXhlc1NlcXVlbmNlLmluc2VydChmLHYpLHRoaXMuaW5kZXhlc0NoYW5nZVNvdXJjZT12''@;'; put 'put ''b2lkIDAsdGhpcy50cmltbWluZ01hcHNDb2xsZWN0aW9uLmluc2VydFRvRXZlcnkoZix2KSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmluc2VydFRvRXZlcnkoZix2KSx0aGlzLnZhcmlvdXNNYXBzQ29sbGVjdGlvbi5pbnNlcnRUb0V2ZXJ5KGYsdiksdGhpcy5yZXN1bWVPcGVyYXRpb25z''@;'; put 'put ''KCl9cmVtb3ZlSW5kZXhlcyhjKXt0aGlzLnN1c3BlbmRPcGVyYXRpb25zKCksdGhpcy5pbmRleGVzQ2hhbmdlU291cmNlPSJyZW1vdmUiLHRoaXMuaW5kZXhlc1NlcXVlbmNlLnJlbW92ZShjKSx0aGlzLmluZGV4ZXNDaGFuZ2VTb3VyY2U9dm9pZCAwLHRoaXMudHJpbW1pbmdNYXBzQ29sbGVj''@;'; put 'put ''dGlvbi5yZW1vdmVGcm9tRXZlcnkoYyksdGhpcy5oaWRpbmdNYXBzQ29sbGVjdGlvbi5yZW1vdmVGcm9tRXZlcnkoYyksdGhpcy52YXJpb3VzTWFwc0NvbGxlY3Rpb24ucmVtb3ZlRnJvbUV2ZXJ5KGMpLHRoaXMucmVzdW1lT3BlcmF0aW9ucygpfXVwZGF0ZUNhY2hlKCl7KCEwPT09KGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pfHwhMT09PXRoaXMuaXNCYXRjaGVkJiYhMD09PSh0aGlzLmluZGV4ZXNTZXF1ZW5jZUNoYW5nZWR8fHRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkfHx0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkKSkm''@;'; put 'put ''Jih0aGlzLnRyaW1taW5nTWFwc0NvbGxlY3Rpb24udXBkYXRlQ2FjaGUoKSx0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLnVwZGF0ZUNhY2hlKCksdGhpcy5ub3RUcmltbWVkSW5kZXhlc0NhY2hlPXRoaXMuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoITEpLHRoaXMubm90SGlkZGVuSW5kZXhlc0Nh''@;'; put 'put ''Y2hlPXRoaXMuZ2V0Tm90SGlkZGVuSW5kZXhlcyghMSksdGhpcy5yZW5kZXJhYmxlUGh5c2ljYWxJbmRleGVzQ2FjaGU9dGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlcyghMSksdGhpcy5jYWNoZUZyb21QaHlzaWNhbFRvVmlzdWFsSW5kZXhlcygpLHRoaXMuY2FjaGVGcm9tVmlzdWFsVG9SZW5k''@;'; put 'put ''ZXJhYmxlSW5kZXhlcygpLHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQmJnRoaXMuaGlkaW5nQ2hhbmdlc09ic2VydmFibGUuZW1pdCh0aGlzLmhpZGluZ01hcHNDb2xsZWN0aW9uLmdldE1lcmdlZFZhbHVlcygpKSx0aGlzLnJ1bkxvY2FsSG9va3MoImNhY2hlVXBkYXRlZCIse2luZGV4ZXNT''@;'; put 'put ''ZXF1ZW5jZUNoYW5nZWQ6dGhpcy5pbmRleGVzU2VxdWVuY2VDaGFuZ2VkLHRyaW1tZWRJbmRleGVzQ2hhbmdlZDp0aGlzLnRyaW1tZWRJbmRleGVzQ2hhbmdlZCxoaWRkZW5JbmRleGVzQ2hhbmdlZDp0aGlzLmhpZGRlbkluZGV4ZXNDaGFuZ2VkfSksdGhpcy5pbmRleGVzU2VxdWVuY2VDaGFu''@;'; put 'put ''Z2VkPSExLHRoaXMudHJpbW1lZEluZGV4ZXNDaGFuZ2VkPSExLHRoaXMuaGlkZGVuSW5kZXhlc0NoYW5nZWQ9ITEpfWNhY2hlRnJvbVBoeXNpY2FsVG9WaXN1YWxJbmRleGVzKCl7Y29uc3QgYz10aGlzLmdldE5vdFRyaW1tZWRJbmRleGVzTGVuZ3RoKCk7dGhpcy5mcm9tUGh5c2ljYWxUb1Zp''@;'; put 'put ''c3VhbEluZGV4ZXNDYWNoZS5jbGVhcigpO2ZvcihsZXQgYT0wO2E8YzthKz0xKXtjb25zdCBkPXRoaXMuZ2V0UGh5c2ljYWxGcm9tVmlzdWFsSW5kZXgoYSk7dGhpcy5mcm9tUGh5c2ljYWxUb1Zpc3VhbEluZGV4ZXNDYWNoZS5zZXQoZCxhKX19Y2FjaGVGcm9tVmlzdWFsVG9SZW5kZXJhYmxl''@;'; put 'put ''SW5kZXhlcygpe2NvbnN0IGM9dGhpcy5nZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCgpO3RoaXMuZnJvbVZpc3VhbFRvUmVuZGVyYWJsZUluZGV4ZXNDYWNoZS5jbGVhcigpO2ZvcihsZXQgYT0wO2E8YzthKz0xKXtjb25zdCBkPXRoaXMuZ2V0UGh5c2ljYWxGcm9tUmVuZGVyYWJsZUluZGV4''@;'; put 'put ''KGEpLGg9dGhpcy5nZXRWaXN1YWxGcm9tUGh5c2ljYWxJbmRleChkKTt0aGlzLmZyb21WaXN1YWxUb1JlbmRlcmFibGVJbmRleGVzQ2FjaGUuc2V0KGgsYSl9fX1mdW5jdGlvbiBzaGUobCl7Y29uc3QgYT0vXihbYS16QS1aXXsyfSktKFthLXpBLVpdezJ9KSQvLmV4ZWMobCk7cmV0dXJuIGE/''@;'; put 'put ''YCR7YVsxXS50b0xvd2VyQ2FzZSgpfS0ke2FbMl0udG9VcHBlckNhc2UoKX1gOmx9ZnVuY3Rpb24gYWhlKGwpe3NvKGwpJiZBVyhOYWBMYW5ndWFnZSB3aXRoIGNvZGUgIiR7bH0iIHdhcyBub3QgZm91bmQuIFlvdSBzaG91bGQgcmVnaXN0ZXIgcGFydGljdWxhciBsYW5ndWFnZVx4MjAKICAg''@;'; put 'put ''IGJlZm9yZSB1c2luZyBpdC4gUmVhZCBtb3JlIGFib3V0IHRoaXMgaXNzdWUgYXQ6IGh0dHBzOi8vZG9jcy5oYW5kc29udGFibGUuY29tL2kxOG4vbWlzc2luZy1sYW5ndWFnZS1jb2RlLmApfXJsKExHLFUxKTtjb25zdHtyZWdpc3Rlcjp3cWUsZ2V0VmFsdWVzOkNxZX09YWYoInBocmFzZUZv''@;'; put 'put ''cm1hdHRlcnMiKTshZnVuY3Rpb24gU3FlKGwsYyl7d3FlKGwsYyl9KCJwbHVyYWxpemUiLGZ1bmN0aW9uIHlxZShsLGMpe3JldHVybiBBcnJheS5pc0FycmF5KGwpJiZOdW1iZXIuaXNJbnRlZ2VyKGMpP2xbY106bH0pO2NvbnN0IGxoZT0iQ29udGV4dE1lbnU6aXRlbXMiLE9HPWAke2xoZX0u''@;'; put 'put ''bm9JdGVtc2AsUEc9YCR7bGhlfS5pbnNlcnRSb3dBYm92ZWAsRkc9YCR7bGhlfS5pbnNlcnRSb3dCZWxvd2AsTkc9YCR7bGhlfS5pbnNlcnRDb2x1bW5PblRoZUxlZnRgLEhHPWAke2xoZX0uaW5zZXJ0Q29sdW1uT25UaGVSaWdodGAsVkc9YCR7bGhlfS5yZW1vdmVSb3dgLEJHPWAke2xoZX0u''@;'; put 'put ''cmVtb3ZlQ29sdW1uYCxqRz1gJHtsaGV9LnVuZG9gLHpHPWAke2xoZX0ucmVkb2AsVUc9YCR7bGhlfS5yZWFkT25seWAsWkc9YCR7bGhlfS5jbGVhckNvbHVtbmAsWUc9YCR7bGhlfS5jb3B5YCxXRz1gJHtsaGV9LmNvcHlXaXRoSGVhZGVyc2AsR0c9YCR7bGhlfS5jb3B5V2l0aEdyb3VwSGVh''@;'; put 'put ''ZGVyc2AsJEc9YCR7bGhlfS5jb3B5SGVhZGVyc09ubHlgLHFHPWAke2xoZX0uY3V0YCxLRz1gJHtsaGV9LmZyZWV6ZUNvbHVtbmAsWEc9YCR7bGhlfS51bmZyZWV6ZUNvbHVtbmAsSkc9YCR7bGhlfS5tZXJnZUNlbGxzYCxRRz1gJHtsaGV9LnVubWVyZ2VDZWxsc2AsZSQ9YCR7bGhlfS5hZGRD''@;'; put 'put ''b21tZW50YCx0JD1gJHtsaGV9LmVkaXRDb21tZW50YCxuJD1gJHtsaGV9LnJlbW92ZUNvbW1lbnRgLHIkPWAke2xoZX0ucmVhZE9ubHlDb21tZW50YCxpJD1gJHtsaGV9LmFsaWduYCxvJD1gJHtsaGV9LmFsaWduLmxlZnRgLHMkPWAke2xoZX0uYWxpZ24uY2VudGVyYCxhJD1gJHtsaGV9LmFs''@;'; put 'put ''aWduLnJpZ2h0YCxsJD1gJHtsaGV9LmFsaWduLmp1c3RpZnlgLGMkPWAke2xoZX0uYWxpZ24udG9wYCx1JD1gJHtsaGV9LmFsaWduLm1pZGRsZWAsZCQ9YCR7bGhlfS5hbGlnbi5ib3R0b21gLGgkPWAke2xoZX0uYm9yZGVyc2AsZiQ9YCR7bGhlfS5ib3JkZXJzLnRvcGAscCQ9YCR7bGhlfS5i''@;'; put 'put ''b3JkZXJzLnJpZ2h0YCxnJD1gJHtsaGV9LmJvcmRlcnMuYm90dG9tYCxtJD1gJHtsaGV9LmJvcmRlcnMubGVmdGAsdiQ9YCR7bGhlfS5ib3JkZXJzLnJlbW92ZWAsXyQ9YCR7bGhlfS5uZXN0ZWRIZWFkZXJzLmluc2VydENoaWxkUm93YCxiJD1gJHtsaGV9Lm5lc3RlZEhlYWRlcnMuZGV0YWNo''@;'; put 'put ''RnJvbVBhcmVudGAseSQ9YCR7bGhlfS5oaWRlQ29sdW1uYCx3JD1gJHtsaGV9LnNob3dDb2x1bW5gLEMkPWAke2xoZX0uaGlkZVJvd2AsUyQ9YCR7bGhlfS5zaG93Um93YCxjMT0iRmlsdGVyczoiLHNjPWAke2MxfWNvbmRpdGlvbnNgLEtMPWAke3NjfS5ub25lYCxNJD1gJHtzY30uaXNFbXB0''@;'; put 'put ''eWAseCQ9YCR7c2N9LmlzTm90RW1wdHlgLEUkPWAke3NjfS5pc0VxdWFsVG9gLFQkPWAke3NjfS5pc05vdEVxdWFsVG9gLGskPWAke3NjfS5iZWdpbnNXaXRoYCxBJD1gJHtzY30uZW5kc1dpdGhgLEQkPWAke3NjfS5jb250YWluc2AsSSQ9YCR7c2N9LmRvZXNOb3RDb250YWluYCx4cWU9YCR7''@;'; put 'put ''c2N9LmJ5VmFsdWVgLFIkPWAke3NjfS5ncmVhdGVyVGhhbmAsTCQ9YCR7c2N9LmdyZWF0ZXJUaGFuT3JFcXVhbFRvYCxPJD1gJHtzY30ubGVzc1RoYW5gLFAkPWAke3NjfS5sZXNzVGhhbk9yRXF1YWxUb2AsRiQ9YCR7c2N9LmlzQmV0d2VlbmAsTiQ9YCR7c2N9LmlzTm90QmV0d2VlbmAsSCQ9''@;'; put 'put ''YCR7c2N9LmFmdGVyYCxWJD1gJHtzY30uYmVmb3JlYCxCJD1gJHtzY30udG9kYXlgLGokPWAke3NjfS50b21vcnJvd2AseiQ9YCR7c2N9Lnllc3RlcmRheWAsVSQ9YCR7YzF9bGFiZWxzLmZpbHRlckJ5Q29uZGl0aW9uYCxaJD1gJHtjMX1sYWJlbHMuZmlsdGVyQnlWYWx1ZWAsWSQ9YCR7YzF9''@;'; put 'put ''bGFiZWxzLmNvbmp1bmN0aW9uYCxYTD1gJHtjMX1sYWJlbHMuZGlzanVuY3Rpb25gLEpMPWAke2MxfXZhbHVlcy5ibGFua0NlbGxzYCxXJD1gJHtjMX1idXR0b25zLnNlbGVjdEFsbGAsRyQ9YCR7YzF9YnV0dG9ucy5jbGVhcmAsJCQ9YCR7YzF9YnV0dG9ucy5va2AscSQ9YCR7YzF9YnV0dG9u''@;'; put 'put ''cy5jYW5jZWxgLEskPWAke2MxfWJ1dHRvbnMucGxhY2Vob2xkZXIuc2VhcmNoYCxYJD1gJHtjMX1idXR0b25zLnBsYWNlaG9sZGVyLnZhbHVlYCxKJD1gJHtjMX1idXR0b25zLnBsYWNlaG9sZGVyLnNlY29uZFZhbHVlYCxRJD0iQ2hlY2tib3hSZW5kZXJlcjoiLGVxPWAke1EkfWNoZWNrZWRg''@;'; put 'put ''LHRxPWAke1EkfXVuY2hlY2tlZGAsY2hlPXtsYW5ndWFnZUNvZGU6ImVuLVVTIixbT0ddOiJObyBhdmFpbGFibGUgb3B0aW9ucyIsW1BHXToiSW5zZXJ0IHJvdyBhYm92ZSIsW0ZHXToiSW5zZXJ0IHJvdyBiZWxvdyIsW05HXToiSW5zZXJ0IGNvbHVtbiBsZWZ0IixbSEddOiJJbnNlcnQgY29s''@;'; put 'put ''dW1uIHJpZ2h0IixbVkddOlsiUmVtb3ZlIHJvdyIsIlJlbW92ZSByb3dzIl0sW0JHXTpbIlJlbW92ZSBjb2x1bW4iLCJSZW1vdmUgY29sdW1ucyJdLFtqR106IlVuZG8iLFt6R106IlJlZG8iLFtVR106IlJlYWQgb25seSIsW1pHXToiQ2xlYXIgY29sdW1uIixbaSRdOiJBbGlnbm1lbnQiLFtv''@;'; put 'put ''JF06IkxlZnQiLFtzJF06IkNlbnRlciIsW2EkXToiUmlnaHQiLFtsJF06Ikp1c3RpZnkiLFtjJF06IlRvcCIsW3UkXToiTWlkZGxlIixbZCRdOiJCb3R0b20iLFtLR106IkZyZWV6ZSBjb2x1bW4iLFtYR106IlVuZnJlZXplIGNvbHVtbiIsW2gkXToiQm9yZGVycyIsW2YkXToiVG9wIixbcCRd''@;'; put 'put ''OiJSaWdodCIsW2ckXToiQm90dG9tIixbbSRdOiJMZWZ0IixbdiRdOiJSZW1vdmUgYm9yZGVyKHMpIixbZSRdOiJBZGQgY29tbWVudCIsW3QkXToiRWRpdCBjb21tZW50IixbbiRdOiJEZWxldGUgY29tbWVudCIsW3IkXToiUmVhZC1vbmx5IGNvbW1lbnQiLFtKR106Ik1lcmdlIGNlbGxzIixb''@;'; put 'put ''UUddOiJVbm1lcmdlIGNlbGxzIixbWUddOiJDb3B5IixbV0ddOlsiQ29weSB3aXRoIGhlYWRlciIsIkNvcHkgd2l0aCBoZWFkZXJzIl0sW0dHXTpbIkNvcHkgd2l0aCBncm91cCBoZWFkZXIiLCJDb3B5IHdpdGggZ3JvdXAgaGVhZGVycyJdLFskR106WyJDb3B5IGhlYWRlciBvbmx5IiwiQ29w''@;'; put 'put ''eSBoZWFkZXJzIG9ubHkiXSxbcUddOiJDdXQiLFtfJF06Ikluc2VydCBjaGlsZCByb3ciLFtiJF06IkRldGFjaCBmcm9tIHBhcmVudCIsW3kkXTpbIkhpZGUgY29sdW1uIiwiSGlkZSBjb2x1bW5zIl0sW3ckXTpbIlNob3cgY29sdW1uIiwiU2hvdyBjb2x1bW5zIl0sW0MkXTpbIkhpZGUgcm93''@;'; put 'put ''IiwiSGlkZSByb3dzIl0sW1MkXTpbIlNob3cgcm93IiwiU2hvdyByb3dzIl0sW0tMXToiTm9uZSIsW00kXToiSXMgZW1wdHkiLFt4JF06IklzIG5vdCBlbXB0eSIsW0UkXToiSXMgZXF1YWwgdG8iLFtUJF06IklzIG5vdCBlcXVhbCB0byIsW2skXToiQmVnaW5zIHdpdGgiLFtBJF06IkVuZHMg''@;'; put 'put ''d2l0aCIsW0QkXToiQ29udGFpbnMiLFtJJF06IkRvZXMgbm90IGNvbnRhaW4iLFtSJF06IkdyZWF0ZXIgdGhhbiIsW0wkXToiR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIixbTyRdOiJMZXNzIHRoYW4iLFtQJF06Ikxlc3MgdGhhbiBvciBlcXVhbCB0byIsW0YkXToiSXMgYmV0d2VlbiIsW04k''@;'; put 'put ''XToiSXMgbm90IGJldHdlZW4iLFtIJF06IkFmdGVyIixbViRdOiJCZWZvcmUiLFtCJF06IlRvZGF5IixbaiRdOiJUb21vcnJvdyIsW3okXToiWWVzdGVyZGF5IixbSkxdOiJCbGFuayBjZWxscyIsW1UkXToiRmlsdGVyIGJ5IGNvbmRpdGlvbiIsW1okXToiRmlsdGVyIGJ5IHZhbHVlIixbWSRd''@;'; put 'put ''OiJBbmQiLFtYTF06Ik9yIixbVyRdOiJTZWxlY3QgYWxsIixbRyRdOiJDbGVhciIsWyQkXToiT0siLFtxJF06IkNhbmNlbCIsW0skXToiU2VhcmNoIixbWCRdOiJWYWx1ZSIsW0okXToiU2Vjb25kIHZhbHVlIixbZXFdOiJDaGVja2VkIixbdHFdOiJVbmNoZWNrZWQifSxFcWU9TixucT1jaGUu''@;'; put 'put ''bGFuZ3VhZ2VDb2RlLHtyZWdpc3RlcjpUcWUsZ2V0SXRlbTp1aGUsaGFzSXRlbTprcWUsZ2V0VmFsdWVzOkFxZX09YWYoImxhbmd1YWdlc0RpY3Rpb25hcmllcyIpO2Z1bmN0aW9uIGRoZShsLGMpe2xldCBhPWwsZD1jO3JldHVybiBfcyhsKSYmKGQ9bCxhPWQubGFuZ3VhZ2VDb2RlKSxmdW5j''@;'; put 'put ''dGlvbiBEcWUobCxjKXtsIT09bnEmJmZ1bmN0aW9uIGJxZShsLGMpe0NzKGMsKGEsZCk9PntkbChsW2RdKSYmKGxbZF09YSl9KX0oYyx1aGUobnEpKX0oYSxkKSxUcWUoYSxSMChkKSksUjAoZCl9ZnVuY3Rpb24gaGhlKGwpe3JldHVybiBycShsKT9SMCh1aGUobCkpOm51bGx9ZnVuY3Rpb24g''@;'; put 'put ''cnEobCl7cmV0dXJuIGtxZShsKX1mdW5jdGlvbiBmaGUobCxjLGEpe2NvbnN0IGQ9aGhlKGwpO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2NvbnN0IGg9ZFtjXTtpZihkbChoKSlyZXR1cm4gbnVsbDtjb25zdCBmPWZ1bmN0aW9uIFJxZShsLGMpe2xldCBhPWw7cmV0dXJuIFRuKGZ1bmN0aW9u''@;'; put 'put ''IE1xZSgpe3JldHVybiBDcWUoKX0oKSxkPT57YT1kKGwsYyl9KSxhfShoLGEpO3JldHVybiBBcnJheS5pc0FycmF5KGYpP2ZbMF06Zn1kaGUoY2hlKTtjb25zdCBwaGU9ImFjdGl2ZS1oZWFkZXIiLGlxPSJoZWFkZXIiLG9xPSJhcmVhIixzcT0iZm9jdXMiO2NsYXNzIGdoZXtjb25zdHJ1Y3Rv''@;'; put 'put ''cihjLGEpe3RoaXMuc2V0dGluZ3M9Yyx0aGlzLmNlbGxSYW5nZT1hfHxudWxsfWlzRW1wdHkoKXtyZXR1cm4gbnVsbD09PXRoaXMuY2VsbFJhbmdlfWFkZChjKXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dGhpcy5jZWxsUmFuZ2U9dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoYyk6dGhp''@;'; put 'put ''cy5jZWxsUmFuZ2UuZXhwYW5kKGMpLHRoaXN9cmVwbGFjZShjLGEpe2lmKCF0aGlzLmlzRW1wdHkoKSl7aWYodGhpcy5jZWxsUmFuZ2UuZnJvbS5pc0VxdWFsKGMpKXJldHVybiB0aGlzLmNlbGxSYW5nZS5mcm9tPWEsITA7aWYodGhpcy5jZWxsUmFuZ2UudG8uaXNFcXVhbChjKSlyZXR1cm4g''@;'; put 'put ''dGhpcy5jZWxsUmFuZ2UudG89YSwhMH1yZXR1cm4hMX1jbGVhcigpe3JldHVybiB0aGlzLmNlbGxSYW5nZT1udWxsLHRoaXN9Z2V0Q29ybmVycygpe2NvbnN0IGM9dGhpcy5jZWxsUmFuZ2UuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLGE9dGhpcy5jZWxsUmFuZ2UuZ2V0T3V0ZXJCb3R0b21F''@;'; put 'put ''bmRDb3JuZXIoKTtyZXR1cm5bYy5yb3csYy5jb2wsYS5yb3csYS5jb2xdfWRlc3Ryb3koKXt0aGlzLnJ1bkxvY2FsSG9va3MoImRlc3Ryb3kiKX19cmwoZ2hlLFUxKTtjb25zdCBIcWU9Z2hlO2NvbnN0IFI0PWNsYXNzIHpxZSBleHRlbmRzIEhxZXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMs''@;'; put 'put ''bnVsbCksZnVuY3Rpb24gVnFlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBCcWUobCl7dmFyIGM9ZnVuY3Rpb24ganFlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxs''@;'; put 'put ''KGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmci''@;'; put 'put ''KTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJ2aXN1YWxDZWxsUmFuZ2UiLG51bGwpLHRo''@;'; put 'put ''aXMudmlzdWFsQ2VsbFJhbmdlPWF8fG51bGwsdGhpcy5jb21taXQoKX1hZGQoYyl7cmV0dXJuIG51bGw9PT10aGlzLnZpc3VhbENlbGxSYW5nZT90aGlzLnZpc3VhbENlbGxSYW5nZT10aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZShjKTp0aGlzLnZpc3VhbENlbGxSYW5nZS5leHBhbmQo''@;'; put 'put ''YyksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLnZpc3VhbENlbGxSYW5nZT1udWxsLHN1cGVyLmNsZWFyKCl9dHJpbVRvVmlzaWJsZUNlbGxzUmFuZ2VPbmx5KGMpe2xldHtmcm9tOmEsdG86ZH09YyxoPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkNvb3JkcyhhLDEpLGY9dGhpcy5nZXROZWFy''@;'; put 'put ''ZXN0Tm90SGlkZGVuQ29vcmRzKGQsLTEpO3JldHVybiBudWxsPT09aHx8bnVsbD09PWY/bnVsbDooKGgucm93PmYucm93fHxoLmNvbD5mLmNvbCkmJihoPWEsZj1kKSx0aGlzLnNldHRpbmdzLmNyZWF0ZUNlbGxSYW5nZShoLGgsZikpfWdldE5lYXJlc3ROb3RIaWRkZW5Db29yZHMoYyxhKXts''@;'; put 'put ''ZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06YTtjb25zdCBoPXRoaXMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHRoaXMuc2V0dGluZ3Mucm93SW5kZXhNYXBwZXIsYy5yb3csYSk7aWYobnVsbD09PWgpcmV0dXJuIG51bGw7Y29u''@;'; put 'put ''c3QgZj10aGlzLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh0aGlzLnNldHRpbmdzLmNvbHVtbkluZGV4TWFwcGVyLGMuY29sLGQpO3JldHVybiBudWxsPT09Zj9udWxsOnRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbENvb3JkcyhoLGYpfWdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChjLGEsZCl7''@;'; put 'put ''cmV0dXJuIGE8MD9hOmMuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEsZCl9Y29tbWl0KCl7aWYobnVsbD09PXRoaXMudmlzdWFsQ2VsbFJhbmdlKXJldHVybiB0aGlzO2NvbnN0IGM9dGhpcy50cmltVG9WaXNpYmxlQ2VsbHNSYW5nZU9ubHkodGhpcy52aXN1YWxDZWxsUmFuZ2UpO3JldHVy''@;'; put 'put ''biB0aGlzLmNlbGxSYW5nZT1udWxsPT09Yz9udWxsOnRoaXMuY3JlYXRlUmVuZGVyYWJsZUNlbGxSYW5nZShjLmZyb20sYy50byksdGhpc31zeW5jV2l0aChjKXtjb25zdCBhPWMuZnJvbS5jbG9uZSgpLm5vcm1hbGl6ZSgpLGQ9Ik4tUyI9PT1jLmdldFZlcnRpY2FsRGlyZWN0aW9uKCk/MTot''@;'; put 'put ''MSxoPSJXLUUiPT09Yy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCk/MTotMSxmPXRoaXMuc2V0dGluZ3MudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKHRoaXMudmlzdWFsQ2VsbFJhbmdlLmhpZ2hsaWdodCk7bGV0IHY9bnVsbDtpZigobnVsbD09PWZ8fG51bGw9PT1mLmNvbHx8bnVsbD09PWYu''@;'; put 'put ''cm93KSYmKHY9dGhpcy5nZXROZWFyZXN0Tm90SGlkZGVuQ29vcmRzKGEsZCxoKSksbnVsbCE9PXYmJmMub3ZlcmxhcHModikpe2NvbnN0IFM9Yy5oaWdobGlnaHQuY2xvbmUoKTtpZihTLnJvdz49MCYmKFMucm93PXYucm93KSxTLmNvbD49MCYmKFMuY29sPXYuY29sKSxudWxsPT09dGhpcy5j''@;'; put 'put ''ZWxsUmFuZ2Upe2NvbnN0IFY9dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoUyk7dGhpcy5jZWxsUmFuZ2U9dGhpcy5zZXR0aW5ncy5jcmVhdGVDZWxsUmFuZ2UoVil9Yy5zZXRIaWdobGlnaHQoUyl9cmV0dXJuImZvY3VzIj09PXRoaXMuc2V0dGluZ3Muc2VsZWN0aW9u''@;'; put 'put ''VHlwZSYmbnVsbCE9PWYmJm51bGw9PT12JiZjLnNldEhpZ2hsaWdodCh0aGlzLnZpc3VhbENlbGxSYW5nZS5oaWdobGlnaHQpLHRoaXN9Z2V0Q29ybmVycygpe2NvbnN0e2Zyb206Yyx0bzphfT10aGlzLmNlbGxSYW5nZTtyZXR1cm5bTWF0aC5taW4oYy5yb3csYS5yb3cpLE1hdGgubWluKGMu''@;'; put 'put ''Y29sLGEuY29sKSxNYXRoLm1heChjLnJvdyxhLnJvdyksTWF0aC5tYXgoYy5jb2wsYS5jb2wpXX1nZXRWaXN1YWxDb3JuZXJzKCl7Y29uc3QgYz10aGlzLnNldHRpbmdzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3Jkcyh0aGlzLmNlbGxSYW5nZS5nZXRUb3BTdGFydENvcm5lcigpKSxhPXRoaXMu''@;'; put 'put ''c2V0dGluZ3MucmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzKHRoaXMuY2VsbFJhbmdlLmdldEJvdHRvbUVuZENvcm5lcigpKTtyZXR1cm5bYy5yb3csYy5jb2wsYS5yb3csYS5jb2xdfWNyZWF0ZVJlbmRlcmFibGVDZWxsUmFuZ2UoYyxhKXtjb25zdCBkPXRoaXMuc2V0dGluZ3MudmlzdWFsVG9S''@;'; put 'put ''ZW5kZXJhYmxlQ29vcmRzKGMpLGg9dGhpcy5zZXR0aW5ncy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoYSk7cmV0dXJuIG51bGw9PT1kLnJvd3x8bnVsbD09PWQuY29sfHxudWxsPT09aC5yb3d8fG51bGw9PT1oLmNvbD9udWxsOnRoaXMuc2V0dGluZ3MuY3JlYXRlQ2VsbFJhbmdlKGQsZCxo''@;'; put 'put ''KX19O2Z1bmN0aW9uIGFxKGwpe2xldHthY3RpdmVIZWFkZXJDbGFzc05hbWU6YywuLi5hfT1sO3JldHVybiBuZXcgUjQoe2NsYXNzTmFtZTpjLC4uLmEsc2VsZWN0aW9uVHlwZTpwaGV9KX1mdW5jdGlvbiBVcWUobCl7bGV0e2FyZWFDb3JuZXJWaXNpYmxlOmMsLi4uYX09bDtyZXR1cm4gbmV3''@;'; put 'put ''IFI0KHtjbGFzc05hbWU6ImFyZWEiLGNyZWF0ZUxheWVyczohMCxib3JkZXI6e3dpZHRoOjEsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2libGU6Y30sLi4uYSxzZWxlY3Rpb25UeXBlOm9xfSl9ZnVuY3Rpb24gWnFlKGwpe2xldHsuLi5jfT1sO3JldHVybiBuZXcgUjQoe2NsYXNzTmFtZToi''@;'; put 'put ''aGlnaGxpZ2h0IiwuLi5jLHNlbGVjdGlvblR5cGU6b3F9KX1mdW5jdGlvbiBZcWUobCl7bGV0e2NvbHVtbkNsYXNzTmFtZTpjLC4uLmF9PWw7cmV0dXJuIG5ldyBSNCh7Y2xhc3NOYW1lOmMsLi4uYSxzZWxlY3Rpb25UeXBlOiJjb2x1bW4ifSl9ZnVuY3Rpb24gbWhlKGwpe2xldHtoZWFkZXJD''@;'; put 'put ''bGFzc05hbWU6YywuLi5hfT1sO3JldHVybiBuZXcgUjQoe2NsYXNzTmFtZTpjLC4uLmEsc2VsZWN0aW9uVHlwZTppcX0pfWZ1bmN0aW9uIHFxZShsKXtsZXR7cm93Q2xhc3NOYW1lOmMsLi4uYX09bDtyZXR1cm4gbmV3IFI0KHtjbGFzc05hbWU6YywuLi5hLHNlbGVjdGlvblR5cGU6InJvdyJ9''@;'; put 'put ''KX1mdW5jdGlvbiBaMShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gSnFlKGwpe3ZhciBjPWZ1bmN0aW9uIFFxZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8''@;'; put 'put ''fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0''@;'; put 'put ''dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBMNChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIEYzPW5ldyBXZWFrU2V0O2NsYXNzIGVLZXtjb25zdHJ1Y3RvcihjKXso''@;'; put 'put ''ZnVuY3Rpb24gS3FlKGwsYyl7KGZ1bmN0aW9uIFhxZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSkodGhpcyxGMyksWjEo''@;'; put 'put ''dGhpcywib3B0aW9ucyIsdm9pZCAwKSxaMSh0aGlzLCJsYXllckxldmVsIiwwKSxaMSh0aGlzLCJmb2N1cyIsdm9pZCAwKSxaMSh0aGlzLCJmaWxsIix2b2lkIDApLFoxKHRoaXMsImxheWVyZWRBcmVhcyIsbmV3IE1hcCksWjEodGhpcywiYXJlYXMiLG5ldyBNYXApLFoxKHRoaXMsInJvd0hl''@;'; put 'put ''YWRlcnMiLG5ldyBNYXApLFoxKHRoaXMsImNvbHVtbkhlYWRlcnMiLG5ldyBNYXApLFoxKHRoaXMsImFjdGl2ZVJvd0hlYWRlcnMiLG5ldyBNYXApLFoxKHRoaXMsImFjdGl2ZUNvbHVtbkhlYWRlcnMiLG5ldyBNYXApLFoxKHRoaXMsImFjdGl2ZUNvcm5lckhlYWRlcnMiLG5ldyBNYXApLFox''@;'; put 'put ''KHRoaXMsInJvd0hpZ2hsaWdodHMiLG5ldyBNYXApLFoxKHRoaXMsImNvbHVtbkhpZ2hsaWdodHMiLG5ldyBNYXApLFoxKHRoaXMsImN1c3RvbVNlbGVjdGlvbnMiLFtdKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLmZvY3VzPWZ1bmN0aW9uIFdxZShsKXtsZXR7Y2VsbENvcm5lclZpc2libGU6Yywu''@;'; put 'put ''Li5hfT1sO3JldHVybiBuZXcgUjQoe2NsYXNzTmFtZToiY3VycmVudCIsaGVhZGVyQXR0cmlidXRlczpbWyJhcmlhLXNlbGVjdGVkIiwidHJ1ZSJdXSxib3JkZXI6e3dpZHRoOjIsY29sb3I6IiM0Yjg5ZmYiLGNvcm5lclZpc2libGU6Y30sLi4uYSxzZWxlY3Rpb25UeXBlOnNxfSl9KGMpLHRo''@;'; put 'put ''aXMuZmlsbD1mdW5jdGlvbiAkcWUobCl7bGV0ey4uLmN9PWw7cmV0dXJuIG5ldyBSNCh7Y2xhc3NOYW1lOiJmaWxsIixib3JkZXI6e3dpZHRoOjEsY29sb3I6IiNmZjAwMDAifSwuLi5jLHNlbGVjdGlvblR5cGU6ImZpbGwifSl9KGMpfWlzRW5hYmxlZEZvcihjLGEpe2xldCBkPWM7Yz09PXNx''@;'; put 'put ''JiYoZD0iY3VycmVudCIpO2xldCBoPXRoaXMub3B0aW9ucy5kaXNhYmxlZENlbGxTZWxlY3Rpb24oYS5yb3csYS5jb2wpO3JldHVybiJzdHJpbmciPT10eXBlb2YgaCYmKGg9W2hdKSwhMT09PWh8fEFycmF5LmlzQXJyYXkoaCkmJiFoLmluY2x1ZGVzKGQpfXVzZUxheWVyTGV2ZWwoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sYXllckxldmVsPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLHRoaXN9Z2V0Rm9jdXMoKXtyZXR1cm4gdGhpcy5mb2N1c31nZXRGaWxsKCl7cmV0dXJuIHRoaXMuZmlsbH1jcmVhdGVMYXllcmVkQXJlYSgpe3JldHVybiBM''@;'; put 'put ''NChGMyx0aGlzLE80KS5jYWxsKHRoaXMsdGhpcy5sYXllcmVkQXJlYXMsVXFlKX1nZXRMYXllcmVkQXJlYXMoKXtyZXR1cm5bLi4udGhpcy5sYXllcmVkQXJlYXMudmFsdWVzKCldfWNyZWF0ZUFyZWEoKXtyZXR1cm4gTDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMuYXJlYXMsWnFlKX1n''@;'; put 'put ''ZXRBcmVhcygpe3JldHVyblsuLi50aGlzLmFyZWFzLnZhbHVlcygpXX1jcmVhdGVSb3dIZWFkZXIoKXtyZXR1cm4gTDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMucm93SGVhZGVycyxtaGUpfWdldFJvd0hlYWRlcnMoKXtyZXR1cm5bLi4udGhpcy5yb3dIZWFkZXJzLnZhbHVlcygpXX1j''@;'; put 'put ''cmVhdGVDb2x1bW5IZWFkZXIoKXtyZXR1cm4gTDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMuY29sdW1uSGVhZGVycyxtaGUpfWdldENvbHVtbkhlYWRlcnMoKXtyZXR1cm5bLi4udGhpcy5jb2x1bW5IZWFkZXJzLnZhbHVlcygpXX1jcmVhdGVBY3RpdmVSb3dIZWFkZXIoKXtyZXR1cm4g''@;'; put 'put ''TDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMuYWN0aXZlUm93SGVhZGVycyxhcSl9Z2V0QWN0aXZlUm93SGVhZGVycygpe3JldHVyblsuLi50aGlzLmFjdGl2ZVJvd0hlYWRlcnMudmFsdWVzKCldfWNyZWF0ZUFjdGl2ZUNvbHVtbkhlYWRlcigpe3JldHVybiBMNChGMyx0aGlzLE80KS5j''@;'; put 'put ''YWxsKHRoaXMsdGhpcy5hY3RpdmVDb2x1bW5IZWFkZXJzLGFxKX1nZXRBY3RpdmVDb2x1bW5IZWFkZXJzKCl7cmV0dXJuWy4uLnRoaXMuYWN0aXZlQ29sdW1uSGVhZGVycy52YWx1ZXMoKV19Y3JlYXRlQWN0aXZlQ29ybmVySGVhZGVyKCl7cmV0dXJuIEw0KEYzLHRoaXMsTzQpLmNhbGwodGhp''@;'; put 'put ''cyx0aGlzLmFjdGl2ZUNvcm5lckhlYWRlcnMsYXEpfWdldEFjdGl2ZUNvcm5lckhlYWRlcnMoKXtyZXR1cm5bLi4udGhpcy5hY3RpdmVDb3JuZXJIZWFkZXJzLnZhbHVlcygpXX1jcmVhdGVSb3dIaWdobGlnaHQoKXtyZXR1cm4gTDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMucm93SGln''@;'; put 'put ''aGxpZ2h0cyxxcWUpfWdldFJvd0hpZ2hsaWdodHMoKXtyZXR1cm5bLi4udGhpcy5yb3dIaWdobGlnaHRzLnZhbHVlcygpXX1jcmVhdGVDb2x1bW5IaWdobGlnaHQoKXtyZXR1cm4gTDQoRjMsdGhpcyxPNCkuY2FsbCh0aGlzLHRoaXMuY29sdW1uSGlnaGxpZ2h0cyxZcWUpfWdldENvbHVtbkhp''@;'; put 'put ''Z2hsaWdodHMoKXtyZXR1cm5bLi4udGhpcy5jb2x1bW5IaWdobGlnaHRzLnZhbHVlcygpXX1nZXRDdXN0b21TZWxlY3Rpb25zKCl7cmV0dXJuWy4uLnRoaXMuY3VzdG9tU2VsZWN0aW9ucy52YWx1ZXMoKV19YWRkQ3VzdG9tU2VsZWN0aW9uKGMpe3RoaXMuY3VzdG9tU2VsZWN0aW9ucy5wdXNo''@;'; put 'put ''KGZ1bmN0aW9uIEdxZShsKXtsZXR7Ym9yZGVyOmMsdmlzdWFsQ2VsbFJhbmdlOmEsLi4uZH09bDtyZXR1cm4gbmV3IFI0KHsuLi5jLC4uLmQsc2VsZWN0aW9uVHlwZToiY3VzdG9tLXNlbGVjdGlvbiJ9LGEpfSh7Li4udGhpcy5vcHRpb25zLC4uLmN9KSl9Y2xlYXIoKXt0aGlzLmZvY3VzLmNs''@;'; put 'put ''ZWFyKCksdGhpcy5maWxsLmNsZWFyKCksVG4odGhpcy5hcmVhcy52YWx1ZXMoKSxjPT57Yy5jbGVhcigpfSksVG4odGhpcy5sYXllcmVkQXJlYXMudmFsdWVzKCksYz0+e2MuY2xlYXIoKX0pLFRuKHRoaXMucm93SGVhZGVycy52YWx1ZXMoKSxjPT57Yy5jbGVhcigpfSksVG4odGhpcy5jb2x1''@;'; put 'put ''bW5IZWFkZXJzLnZhbHVlcygpLGM9PntjLmNsZWFyKCl9KSxUbih0aGlzLmFjdGl2ZVJvd0hlYWRlcnMudmFsdWVzKCksYz0+e2MuY2xlYXIoKX0pLFRuKHRoaXMuYWN0aXZlQ29sdW1uSGVhZGVycy52YWx1ZXMoKSxjPT57Yy5jbGVhcigpfSksVG4odGhpcy5hY3RpdmVDb3JuZXJIZWFkZXJz''@;'; put 'put ''LnZhbHVlcygpLGM9PntjLmNsZWFyKCl9KSxUbih0aGlzLnJvd0hpZ2hsaWdodHMudmFsdWVzKCksYz0+e2MuY2xlYXIoKX0pLFRuKHRoaXMuY29sdW1uSGlnaGxpZ2h0cy52YWx1ZXMoKSxjPT57Yy5jbGVhcigpfSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm5bdGhpcy5mb2N1cyx0aGlz''@;'; put 'put ''LmZpbGwsLi4udGhpcy5hcmVhcy52YWx1ZXMoKSwuLi50aGlzLmxheWVyZWRBcmVhcy52YWx1ZXMoKSwuLi50aGlzLnJvd0hlYWRlcnMudmFsdWVzKCksLi4udGhpcy5jb2x1bW5IZWFkZXJzLnZhbHVlcygpLC4uLnRoaXMuYWN0aXZlUm93SGVhZGVycy52YWx1ZXMoKSwuLi50aGlzLmFjdGl2''@;'; put 'put ''ZUNvbHVtbkhlYWRlcnMudmFsdWVzKCksLi4udGhpcy5hY3RpdmVDb3JuZXJIZWFkZXJzLnZhbHVlcygpLC4uLnRoaXMucm93SGlnaGxpZ2h0cy52YWx1ZXMoKSwuLi50aGlzLmNvbHVtbkhpZ2hsaWdodHMudmFsdWVzKCksLi4udGhpcy5jdXN0b21TZWxlY3Rpb25zXVtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdKCl9fWZ1bmN0aW9uIE80KGwsYyl7Y29uc3QgYT10aGlzLmxheWVyTGV2ZWw7aWYobC5oYXMoYSkpcmV0dXJuIGwuZ2V0KGEpO2NvbnN0IGQ9Yyh7bGF5ZXJMZXZlbDphLC4uLnRoaXMub3B0aW9uc30pO3JldHVybiBsLnNldChhLGQpLGR9Y29uc3QgdEtlPWVLZTtmdW5jdGlvbiB2aGUo''@;'; put 'put ''bCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIG5LZShsKXt2YXIgYz1mdW5jdGlvbiByS2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lm''@;'; put 'put ''KCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10''@;'; put 'put ''eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgaUtle2NvbnN0cnVjdG9yKGMpe3ZoZSh0aGlzLCJyYW5nZXMiLFtdKSx2aGUo''@;'; put 'put ''dGhpcywiY3JlYXRlQ2VsbFJhbmdlIix2b2lkIDApLHRoaXMuY3JlYXRlQ2VsbFJhbmdlPWN9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5zaXplKCl9c2V0KGMpe3JldHVybiB0aGlzLmNsZWFyKCksdGhpcy5yYW5nZXMucHVzaCh0aGlzLmNyZWF0ZUNlbGxSYW5nZShjKSksdGhpc31hZGQo''@;'; put 'put ''Yyl7cmV0dXJuIHRoaXMucmFuZ2VzLnB1c2godGhpcy5jcmVhdGVDZWxsUmFuZ2UoYykpLHRoaXN9cG9wKCl7cmV0dXJuIHRoaXMucmFuZ2VzLnBvcCgpLHRoaXN9Y3VycmVudCgpe3JldHVybiB0aGlzLnBlZWtCeUluZGV4KHRoaXMuc2l6ZSgpLTEpfXByZXZpb3VzKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cGVla0J5SW5kZXgodGhpcy5zaXplKCktMil9aW5jbHVkZXMoYyl7cmV0dXJuIHRoaXMucmFuZ2VzLnNvbWUoYT0+YS5pbmNsdWRlcyhjKSl9Y2xlYXIoKXtyZXR1cm4gdGhpcy5yYW5nZXMubGVuZ3RoPTAsdGhpc31zaXplKCl7cmV0dXJuIHRoaXMucmFuZ2VzLmxlbmd0aH1wZWVrQnlJbmRl''@;'; put 'put ''eCgpe2xldCBhLGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIGM+PTAmJmM8dGhpcy5zaXplKCkmJihhPXRoaXMucmFuZ2VzW2NdKSxhfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMucmFuZ2VzW1N5bWJvbC5p''@;'; put 'put ''dGVyYXRvcl0oKX19Y29uc3Qgb0tlPWlLZTtmdW5jdGlvbiBscShsLGMsYSl7X2hlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBfaGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNl''@;'; put 'put ''IG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGlhKGwsYyl7cmV0dXJuIGwuZ2V0KG91KGwsYykpfWZ1bmN0aW9uIGNxKGwsYyxhKXtyZXR1cm4gbC5zZXQob3UobCxjKSxhKSxhfWZ1bmN0aW9uIG91KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4g''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgUUw9bmV3IFdlYWtNYXAseWw9bmV3IFdlYWtNYXAsTjM9bmV3IFdlYWtNYXAsVHU9bmV3IFdlYWtTZXQ7Y2xhc3MgYmhl''@;'; put 'put ''e2NvbnN0cnVjdG9yKGMsYSl7KGZ1bmN0aW9uIHNLZShsLGMpe19oZShsLGMpLGMuYWRkKGwpfSkodGhpcyxUdSksbHEodGhpcyxRTCx2b2lkIDApLGxxKHRoaXMseWwsdm9pZCAwKSxscSh0aGlzLE4zLHt4OjAseTowfSksY3EoUUwsdGhpcyxjKSxjcSh5bCx0aGlzLGEpfXRyYW5zZm9ybVN0''@;'; put 'put ''YXJ0KGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtjb25zdCBoPWlhKHlsLHRoaXMpLmNyZWF0ZUNlbGxDb29yZHMoYyxhKTtsZXQgZj1pYShRTCx0aGlzKS5jdXJyZW50KCkuaGlnaGxpZ2h0O2NvbnN0IHY9aWEoeWws''@;'; put 'put ''dGhpcykudmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzKGYpO2xldCBTPTAsVj0wO2lmKHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlVHJhbnNmb3JtU3RhcnQiLGgpLG51bGwhPT12LnJvdyYmbnVsbCE9PXYuY29sKXtjb25zdHt3aWR0aDpRLGhlaWdodDpkZX09b3UoVHUsdGhpcyx3aGUpLmNh''@;'; put 'put ''bGwodGhpcykse3JvdzpwZSxjb2w6Q2V9PW91KFR1LHRoaXMsQ2hlKS5jYWxsKHRoaXMsZiksT2U9aWEoeWwsdGhpcykuZml4ZWRSb3dzQm90dG9tKCksWWU9aWEoeWwsdGhpcykubWluU3BhcmVSb3dzKCksZXQ9aWEoeWwsdGhpcykubWluU3BhcmVDb2xzKCksZHQ9aWEoeWwsdGhpcykuYXV0''@;'; put 'put ''b1dyYXBSb3coKSxodD1pYSh5bCx0aGlzKS5hdXRvV3JhcENvbCgpLE10PWlhKHlsLHRoaXMpLmNyZWF0ZUNlbGxDb29yZHMocGUraC5yb3csQ2UraC5jb2wpO2lmKE10LnJvdz49ZGUpe2NvbnN0IHZuPVZoKGQmJlllPjAmJjA9PT1PZSksd249TXQuY29sKzEsbnI9aWEoeWwsdGhpcykuY3Jl''@;'; put 'put ''YXRlQ2VsbENvb3JkcyhNdC5yb3ctZGUsd24+PVE/d24tUTp3bik7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVDb2x1bW5XcmFwIix2bixvdShUdSx0aGlzLF9iKS5jYWxsKHRoaXMsbnIpLHduPj1RKSx2bi52YWx1ZT90aGlzLnJ1bkxvY2FsSG9va3MoImluc2VydFJvd1JlcXVpcmUiLGlh''@;'; put 'put ''KHlsLHRoaXMpLmNvdW50UmVuZGVyYWJsZVJvd3MoKSk6aHQmJk10LmFzc2lnbihucil9ZWxzZSBpZihNdC5yb3c8MCl7Y29uc3Qgdm49VmgoaHQpLHduPU10LmNvbC0xLG5yPWlhKHlsLHRoaXMpLmNyZWF0ZUNlbGxDb29yZHMoZGUrTXQucm93LHduPDA/USt3bjp3bik7dGhpcy5ydW5Mb2Nh''@;'; put 'put ''bEhvb2tzKCJiZWZvcmVDb2x1bW5XcmFwIix2bixvdShUdSx0aGlzLF9iKS5jYWxsKHRoaXMsbnIpLHduPDApLGh0JiZNdC5hc3NpZ24obnIpfWlmKE10LmNvbD49USl7Y29uc3Qgdm49VmgoZCYmZXQ+MCksd249TXQucm93KzEsbnI9aWEoeWwsdGhpcykuY3JlYXRlQ2VsbENvb3Jkcyh3bj49''@;'; put 'put ''ZGU/d24tZGU6d24sTXQuY29sLVEpO3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlUm93V3JhcCIsdm4sb3UoVHUsdGhpcyxfYikuY2FsbCh0aGlzLG5yKSx3bj49ZGUpLHZuLnZhbHVlP3RoaXMucnVuTG9jYWxIb29rcygiaW5zZXJ0Q29sUmVxdWlyZSIsaWEoeWwsdGhpcykuY291bnRSZW5k''@;'; put 'put ''ZXJhYmxlQ29sdW1ucygpKTpkdCYmTXQuYXNzaWduKG5yKX1lbHNlIGlmKE10LmNvbDwwKXtjb25zdCB2bj1WaChkdCksd249TXQucm93LTEsbnI9aWEoeWwsdGhpcykuY3JlYXRlQ2VsbENvb3Jkcyh3bjwwP2RlK3duOnduLFErTXQuY29sKTt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVJv''@;'; put 'put ''d1dyYXAiLHZuLG91KFR1LHRoaXMsX2IpLmNhbGwodGhpcyxuciksd248MCksZHQmJk10LmFzc2lnbihucil9Y29uc3R7cm93RGlyOlF0LGNvbERpcjpsbn09b3UoVHUsdGhpcyx5aGUpLmNhbGwodGhpcyxNdCk7Uz1RdCxWPWxuLGY9b3UoVHUsdGhpcyxfYikuY2FsbCh0aGlzLE10KX1yZXR1''@;'; put 'put ''cm4gdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclRyYW5zZm9ybVN0YXJ0IixmLFMsViksZn10cmFuc2Zvcm1FbmQoYyxhKXtjb25zdCBkPWlhKHlsLHRoaXMpLmNyZWF0ZUNlbGxDb29yZHMoYyxhKSxoPWlhKFFMLHRoaXMpLmN1cnJlbnQoKSxmPWlhKHlsLHRoaXMpLnZpc3VhbFRvUmVuZGVy''@;'; put 'put ''YWJsZUNvb3JkcyhoLmhpZ2hsaWdodCksdj1vdShUdSx0aGlzLHVxKS5jYWxsKHRoaXMsaC50by5yb3csaC5mcm9tLnJvdyksUz1vdShUdSx0aGlzLGRxKS5jYWxsKHRoaXMsaC50by5jb2wsaC5mcm9tLmNvbCksVj1oLnRvLmNsb25lKCk7bGV0IFE9MCxkZT0wO2lmKHRoaXMucnVuTG9jYWxI''@;'; put 'put ''b29rcygiYmVmb3JlVHJhbnNmb3JtRW5kIixkKSxudWxsIT09Zi5yb3cmJm51bGwhPT1mLmNvbCYmbnVsbCE9PXYmJm51bGwhPT1TKXtjb25zdHtyb3c6cGUsY29sOkNlfT1vdShUdSx0aGlzLENoZSkuY2FsbCh0aGlzLGguaGlnaGxpZ2h0KSxPZT1pYSh5bCx0aGlzKS5jcmVhdGVDZWxsQ29v''@;'; put 'put ''cmRzKHYrZC5yb3csUytkLmNvbCksWWU9aC5nZXRUb3BTdGFydENvcm5lcigpLGV0PWguZ2V0VG9wRW5kQ29ybmVyKCksZHQ9aC5nZXRCb3R0b21FbmRDb3JuZXIoKTtpZihkLmNvbDwwJiZTPj1DZSYmT2UuY29sPENlKXtjb25zdCBsbj1PZS5jb2wtQ2U7T2UuY29sPW91KFR1LHRoaXMsZHEp''@;'; put 'put ''LmNhbGwodGhpcyxZZS5jb2wsZXQuY29sKStsbn1lbHNlIGlmKGQuY29sPjAmJlM8PUNlJiZPZS5jb2w+Q2Upe2NvbnN0IGxuPW91KFR1LHRoaXMsZHEpLmNhbGwodGhpcyxldC5jb2wsWWUuY29sKSx2bj1NYXRoLm1heChPZS5jb2wtbG4sMSk7T2UuY29sPWxuK3ZufWlmKGQucm93PDAmJnY+''@;'; put 'put ''PXBlJiZPZS5yb3c8cGUpe2NvbnN0IGxuPU9lLnJvdy1wZTtPZS5yb3c9b3UoVHUsdGhpcyx1cSkuY2FsbCh0aGlzLFllLnJvdyxkdC5yb3cpK2xufWVsc2UgaWYoZC5yb3c+MCYmdjw9cGUmJk9lLnJvdz5wZSl7Y29uc3QgbG49b3UoVHUsdGhpcyx1cSkuY2FsbCh0aGlzLGR0LnJvdyxZZS5y''@;'; put 'put ''b3cpLHZuPU1hdGgubWF4KE9lLnJvdy1sbiwxKTtPZS5yb3c9bG4rdm59Y29uc3R7cm93RGlyOmh0LGNvbERpcjpNdH09b3UoVHUsdGhpcyx5aGUpLmNhbGwodGhpcyxPZSk7UT1odCxkZT1NdDtjb25zdCBRdD1vdShUdSx0aGlzLF9iKS5jYWxsKHRoaXMsT2UpOzA9PT1kLnJvdyYmMCE9PWQu''@;'; put 'put ''Y29sP1YuY29sPVF0LmNvbDowIT09ZC5yb3cmJjA9PT1kLmNvbD9WLnJvdz1RdC5yb3c6KFYucm93PVF0LnJvdyxWLmNvbD1RdC5jb2wpfXJldHVybiB0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyVHJhbnNmb3JtRW5kIixWLFEsZGUpLFZ9c2V0T2Zmc2V0U2l6ZShjKXtsZXR7eDphLHk6ZH09''@;'; put 'put ''YztjcShOMyx0aGlzLHt4OmEseTpkfSl9fWZ1bmN0aW9uIHloZShsKXtjb25zdHt3aWR0aDpjLGhlaWdodDphfT1vdShUdSx0aGlzLHdoZSkuY2FsbCh0aGlzKTtsZXQgZD0wLGg9MDtyZXR1cm4gbC5yb3c8MD8oZD0tMSxsLnJvdz0wKTpsLnJvdz4wJiZsLnJvdz49YSYmKGQ9MSxsLnJvdz1h''@;'; put 'put ''LTEpLGwuY29sPDA/KGg9LTEsbC5jb2w9MCk6bC5jb2w+MCYmbC5jb2w+PWMmJihoPTEsbC5jb2w9Yy0xKSx7cm93RGlyOmQsY29sRGlyOmh9fWZ1bmN0aW9uIHdoZSgpe3JldHVybnt3aWR0aDppYShOMyx0aGlzKS54K2lhKHlsLHRoaXMpLmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSxoZWln''@;'; put 'put ''aHQ6aWEoTjMsdGhpcykueStpYSh5bCx0aGlzKS5jb3VudFJlbmRlcmFibGVSb3dzKCl9fWZ1bmN0aW9uIHVxKGwsYyl7Y29uc3QgYT1pYSh5bCx0aGlzKS5maW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlUm93KGwsYyk7cmV0dXJuIG51bGw9PT1hP251bGw6aWEoTjMsdGhpcykueSthfWZ1''@;'; put 'put ''bmN0aW9uIGRxKGwsYyl7Y29uc3QgYT1pYSh5bCx0aGlzKS5maW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlQ29sdW1uKGwsYyk7cmV0dXJuIG51bGw9PT1hP251bGw6aWEoTjMsdGhpcykueCthfWZ1bmN0aW9uIENoZShsKXtjb25zdHtyb3c6Yyxjb2w6YX09aWEoeWwsdGhpcykudmlzdWFs''@;'; put 'put ''VG9SZW5kZXJhYmxlQ29vcmRzKGwpO2lmKG51bGw9PT1jfHxudWxsPT09YSl0aHJvdyBuZXcgRXJyb3IoIlJlbmRlcmFibGUgY29vcmRzIGFyZSBub3QgdmlzaWJsZS4iKTtyZXR1cm4gaWEoeWwsdGhpcykuY3JlYXRlQ2VsbENvb3JkcyhpYShOMyx0aGlzKS55K2MsaWEoTjMsdGhpcykueCth''@;'; put 'put ''KX1mdW5jdGlvbiBfYihsKXtjb25zdCBjPWwuY2xvbmUoKTtyZXR1cm4gYy5jb2w9bC5jb2wtaWEoTjMsdGhpcykueCxjLnJvdz1sLnJvdy1pYShOMyx0aGlzKS55LGlhKHlsLHRoaXMpLnJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhjKX1ybChiaGUsVTEpO2NvbnN0IFNoZT1iaGUsYUtlPVsz''@;'; put 'put ''LDJdLGxLZT1bWyJudW1iZXIiXSxbIm51bWJlciIsInN0cmluZyJdLFsibnVtYmVyIiwidW5kZWZpbmVkIl0sWyJudW1iZXIiLCJzdHJpbmciLCJ1bmRlZmluZWQiXV0sZnE9U3ltYm9sKCJyb290IikseGhlPVN5bWJvbCgiY2hpbGQiKTtmdW5jdGlvbiBiYihsKXtsZXQgYz1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZnE7aWYoYyE9PWZxJiZjIT09eGhlKXRocm93IG5ldyBFcnJvcigiVGhlIHNlY29uZCBhcmd1bWVudCBpcyB1c2VkIGludGVybmFsbHkgb25seSBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuLiIpO2NvbnN0IGE9''@;'; put 'put ''QXJyYXkuaXNBcnJheShsKSxkPWM9PT1mcTtsZXQgaD0wO2lmKGEpe2NvbnN0IGY9bFswXTswPT09bC5sZW5ndGg/aD0xOmQmJmYgaW5zdGFuY2VvZiB0Rz9oPTM6ZCYmQXJyYXkuaXNBcnJheShmKT9oPWJiKGYseGhlKTpsLmxlbmd0aD49MiYmbC5sZW5ndGg8PTQmJiFsLnNvbWUoKFMsVik9''@;'; put 'put ''PiFsS2VbVl0uaW5jbHVkZXModHlwZW9mIFMpKSYmKGg9Mil9cmV0dXJuIGh9ZnVuY3Rpb24gQXgobCl7bGV0e2NyZWF0ZUNlbGxDb29yZHM6YyxjcmVhdGVDZWxsUmFuZ2U6YSxrZWVwRGlyZWN0aW9uOmQ9ITEscHJvcFRvQ29sOmh9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighYUtlLmluY2x1ZGVzKGwpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc2VsZWN0aW9uIHJhbmdlcyBzY2hlbWEgdHlwZSB3YXMgcHJvdmlkZWQuIik7cmV0dXJuIGZ1bmN0aW9uKGYpe2NvbnN0IHY9Mz09PWw7bGV0IFM9dj9mLmZy''@;'; put 'put ''b20ucm93OmZbMF0sVj12P2YuZnJvbS5jb2w6ZlsxXSxRPXY/Zi50by5yb3c6ZlsyXSxkZT12P2YudG8uY29sOmZbM107aWYoImZ1bmN0aW9uIj09dHlwZW9mIGgmJigic3RyaW5nIj09dHlwZW9mIFYmJihWPWgoVikpLCJzdHJpbmciPT10eXBlb2YgZGUmJihkZT1oKGRlKSkpLGRsKFEpJiYo''@;'; put 'put ''UT1TKSxkbChkZSkmJihkZT1WKSwhZCl7Y29uc3QgT2U9UyxZZT1WLGV0PVEsZHQ9ZGU7Uz1NYXRoLm1pbihPZSxldCksVj1NYXRoLm1pbihZZSxkdCksUT1NYXRoLm1heChPZSxldCksZGU9TWF0aC5tYXgoWWUsZHQpfWNvbnN0IHBlPWMoUyxWKSxDZT1jKFEsZGUpO3JldHVybiBhKHBlLHBl''@;'; put 'put ''LENlKX19ZnVuY3Rpb24geWIobCxjLGEpeyhmdW5jdGlvbiBkS2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0''@;'; put 'put ''aW9uIHI3KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBoS2UobCl7dmFyIGM9ZnVuY3Rpb24gZktlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1''@;'; put 'put ''bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIGFjKGwsYyl7cmV0dXJuIGwuZ2V0KEVoZShsLGMpKX1mdW5j''@;'; put 'put ''dGlvbiBIMyhsLGMsYSl7cmV0dXJuIGwuc2V0KEVoZShsLGMpLGEpLGF9ZnVuY3Rpb24gRWhlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1l''@;'; put 'put ''bnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgWTE9bmV3IFdlYWtNYXAsaTc9bmV3IFdlYWtNYXAsbk89bmV3IFdlYWtNYXAsRHg9bmV3IFdlYWtNYXAsck89bmV3IFdlYWtNYXAsSXg9bmV3IFdlYWtNYXA7Y2xhc3MgVGhle2NvbnN0cnVjdG9yKGMsYSl7dmFyIGQ9dGhp''@;'; put 'put ''cztyNyh0aGlzLCJzZXR0aW5ncyIsdm9pZCAwKSxyNyh0aGlzLCJ0YWJsZVByb3BzIix2b2lkIDApLHI3KHRoaXMsImluUHJvZ3Jlc3MiLCExKSxyNyh0aGlzLCJzZWxlY3RlZFJhbmdlIixuZXcgb0tlKChoLGYsdik9PnRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsUmFuZ2UoaCxmLHYpKSks''@;'; put 'put ''cjcodGhpcywiaGlnaGxpZ2h0Iix2b2lkIDApLHliKHRoaXMsWTEsdm9pZCAwKSx5Yih0aGlzLGk3LHZvaWQgMCkscjcodGhpcywic2VsZWN0ZWRCeVJvd0hlYWRlciIsbmV3IFNldCkscjcodGhpcywic2VsZWN0ZWRCeUNvbHVtbkhlYWRlciIsbmV3IFNldCkseWIodGhpcyxuTywhMSkseWIo''@;'; put 'put ''dGhpcyxEeCwhMSkseWIodGhpcyxyTywidW5rbm93biIpLHliKHRoaXMsSXgsLTEpLHRoaXMuc2V0dGluZ3M9Yyx0aGlzLnRhYmxlUHJvcHM9YSx0aGlzLmhpZ2hsaWdodD1uZXcgdEtlKHtoZWFkZXJDbGFzc05hbWU6Yy5jdXJyZW50SGVhZGVyQ2xhc3NOYW1lLGFjdGl2ZUhlYWRlckNsYXNz''@;'; put 'put ''TmFtZTpjLmFjdGl2ZUhlYWRlckNsYXNzTmFtZSxyb3dDbGFzc05hbWU6Yy5jdXJyZW50Um93Q2xhc3NOYW1lLGNvbHVtbkNsYXNzTmFtZTpjLmN1cnJlbnRDb2xDbGFzc05hbWUsY2VsbEF0dHJpYnV0ZXM6W1siYXJpYS1zZWxlY3RlZCIsInRydWUiXV0scm93SW5kZXhNYXBwZXI6dGhpcy50''@;'; put 'put ''YWJsZVByb3BzLnJvd0luZGV4TWFwcGVyLGNvbHVtbkluZGV4TWFwcGVyOnRoaXMudGFibGVQcm9wcy5jb2x1bW5JbmRleE1hcHBlcixkaXNhYmxlZENlbGxTZWxlY3Rpb246KGgsZik9PnRoaXMudGFibGVQcm9wcy5pc0Rpc2FibGVkQ2VsbFNlbGVjdGlvbihoLGYpLGNlbGxDb3JuZXJWaXNp''@;'; put 'put ''YmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGQuaXNDZWxsQ29ybmVyVmlzaWJsZSguLi5hcmd1bWVudHMpfSxhcmVhQ29ybmVyVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiBkLmlzQXJlYUNvcm5lclZpc2libGUoLi4uYXJndW1lbnRzKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOmg9PnRoaXMu''@;'; put 'put ''dGFibGVQcm9wcy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoaCkscmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzOmg9PnRoaXMudGFibGVQcm9wcy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoaCksY3JlYXRlQ2VsbENvb3JkczooaCxmKT0+dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29y''@;'; put 'put ''ZHMoaCxmKSxjcmVhdGVDZWxsUmFuZ2U6KGgsZix2KT0+dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxSYW5nZShoLGYsdil9KSxIMyhZMSx0aGlzLG5ldyBTaGUodGhpcy5zZWxlY3RlZFJhbmdlLHtyb3dJbmRleE1hcHBlcjp0aGlzLnRhYmxlUHJvcHMucm93SW5kZXhNYXBwZXIsY29sdW1u''@;'; put 'put ''SW5kZXhNYXBwZXI6dGhpcy50YWJsZVByb3BzLmNvbHVtbkluZGV4TWFwcGVyLGNvdW50UmVuZGVyYWJsZVJvd3M6KCk9PnRoaXMudGFibGVQcm9wcy5jb3VudFJlbmRlcmFibGVSb3dzKCksY291bnRSZW5kZXJhYmxlQ29sdW1uczooKT0+dGhpcy50YWJsZVByb3BzLmNvdW50UmVuZGVyYWJs''@;'; put 'put ''ZUNvbHVtbnMoKSx2aXN1YWxUb1JlbmRlcmFibGVDb29yZHM6aD0+dGhpcy50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhoKSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6aD0+dGhpcy50YWJsZVByb3BzLnJlbmRlcmFibGVUb1Zpc3VhbENvb3JkcyhoKSxmaW5kRmlyc3RO''@;'; put 'put ''b25IaWRkZW5SZW5kZXJhYmxlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIGQudGFibGVQcm9wcy5maW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlUm93KC4uLmFyZ3VtZW50cyl9LGZpbmRGaXJzdE5vbkhpZGRlblJlbmRlcmFibGVDb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gZC50YWJsZVByb3Bz''@;'; put 'put ''LmZpbmRGaXJzdE5vbkhpZGRlblJlbmRlcmFibGVDb2x1bW4oLi4uYXJndW1lbnRzKX0sY3JlYXRlQ2VsbENvb3JkczooaCxmKT0+dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoaCxmKSxmaXhlZFJvd3NCb3R0b206KCk9PmMuZml4ZWRSb3dzQm90dG9tLG1pblNwYXJlUm93czoo''@;'; put 'put ''KT0+Yy5taW5TcGFyZVJvd3MsbWluU3BhcmVDb2xzOigpPT5jLm1pblNwYXJlQ29scyxhdXRvV3JhcFJvdzooKT0+Yy5hdXRvV3JhcFJvdyxhdXRvV3JhcENvbDooKT0+Yy5hdXRvV3JhcENvbH0pKSxIMyhpNyx0aGlzLG5ldyBTaGUodGhpcy5zZWxlY3RlZFJhbmdlLHtyb3dJbmRleE1hcHBl''@;'; put 'put ''cjp0aGlzLnRhYmxlUHJvcHMucm93SW5kZXhNYXBwZXIsY29sdW1uSW5kZXhNYXBwZXI6dGhpcy50YWJsZVByb3BzLmNvbHVtbkluZGV4TWFwcGVyLGNvdW50UmVuZGVyYWJsZVJvd3M6KCk9Pntjb25zdCBoPXRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCk7cmV0dXJuIHRoaXMudGFibGVQ''@;'; put 'put ''cm9wcy5jb3VudFJlbmRlcmFibGVSb3dzSW5SYW5nZSgwLGguZ2V0T3V0ZXJCb3R0b21FbmRDb3JuZXIoKS5yb3cpfSxjb3VudFJlbmRlcmFibGVDb2x1bW5zOigpPT57Y29uc3QgaD10aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpO3JldHVybiB0aGlzLnRhYmxlUHJvcHMuY291bnRSZW5k''@;'; put 'put ''ZXJhYmxlQ29sdW1uc0luUmFuZ2UoMCxoLmdldE91dGVyQm90dG9tRW5kQ29ybmVyKCkuY29sKX0sdmlzdWFsVG9SZW5kZXJhYmxlQ29vcmRzOmg9PnRoaXMudGFibGVQcm9wcy52aXN1YWxUb1JlbmRlcmFibGVDb29yZHMoaCkscmVuZGVyYWJsZVRvVmlzdWFsQ29vcmRzOmg9PnRoaXMudGFi''@;'; put 'put ''bGVQcm9wcy5yZW5kZXJhYmxlVG9WaXN1YWxDb29yZHMoaCksZmluZEZpcnN0Tm9uSGlkZGVuUmVuZGVyYWJsZVJvdzpmdW5jdGlvbigpe3JldHVybiBkLnRhYmxlUHJvcHMuZmluZEZpcnN0Tm9uSGlkZGVuUmVuZGVyYWJsZVJvdyguLi5hcmd1bWVudHMpfSxmaW5kRmlyc3ROb25IaWRkZW5S''@;'; put 'put ''ZW5kZXJhYmxlQ29sdW1uOmZ1bmN0aW9uKCl7cmV0dXJuIGQudGFibGVQcm9wcy5maW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlQ29sdW1uKC4uLmFyZ3VtZW50cyl9LGNyZWF0ZUNlbGxDb29yZHM6KGgsZik9PnRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGgsZiksZml4ZWRS''@;'; put 'put ''b3dzQm90dG9tOigpPT4wLG1pblNwYXJlUm93czooKT0+MCxtaW5TcGFyZUNvbHM6KCk9PjAsYXV0b1dyYXBSb3c6KCk9PiEwLGF1dG9XcmFwQ29sOigpPT4hMH0pKSxhYyhZMSx0aGlzKS5hZGRMb2NhbEhvb2soImJlZm9yZVRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgaD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBkLnJ1bkxvY2FsSG9va3MoImJlZm9yZU1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2FsSG9vaygiYWZ0ZXJUcmFuc2Zvcm1TdGFy''@;'; put 'put ''dCIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1cm4gZC5ydW5Mb2NhbEhvb2tzKCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2Fs''@;'; put 'put ''SG9vaygiYmVmb3JlVHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBkLnJ1bkxvY2FsSG9va3MoImJlZm9yZU1vZGlmeVRyYW5zZm9ybUVuZCIsLi4uZil9''@;'; put 'put ''KSxhYyhZMSx0aGlzKS5hZGRMb2NhbEhvb2soImFmdGVyVHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBkLnJ1bkxvY2FsSG9va3MoImFmdGVyTW9kaWZ5''@;'; put 'put ''VHJhbnNmb3JtRW5kIiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2FsSG9vaygiaW5zZXJ0Um93UmVxdWlyZSIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1cm4gZC5ydW5Mb2Nh''@;'; put 'put ''bEhvb2tzKCJpbnNlcnRSb3dSZXF1aXJlIiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2FsSG9vaygiaW5zZXJ0Q29sUmVxdWlyZSIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1''@;'; put 'put ''cm4gZC5ydW5Mb2NhbEhvb2tzKCJpbnNlcnRDb2xSZXF1aXJlIiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2FsSG9vaygiYmVmb3JlUm93V3JhcCIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50''@;'; put 'put ''c1t2XTtyZXR1cm4gZC5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVSb3dXcmFwIiwuLi5mKX0pLGFjKFkxLHRoaXMpLmFkZExvY2FsSG9vaygiYmVmb3JlQ29sdW1uV3JhcCIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3Zd''@;'; put 'put ''PWFyZ3VtZW50c1t2XTtyZXR1cm4gZC5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVDb2x1bW5XcmFwIiwuLi5mKX0pLGFjKGk3LHRoaXMpLmFkZExvY2FsSG9vaygiYmVmb3JlVHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBoPWFyZ3VtZW50cy5sZW5ndGgsZj1uZXcgQXJyYXkoaCks''@;'; put 'put ''dj0wO3Y8aDt2KyspZlt2XT1hcmd1bWVudHNbdl07cmV0dXJuIGQucnVuTG9jYWxIb29rcygiYmVmb3JlTW9kaWZ5VHJhbnNmb3JtRm9jdXMiLC4uLmYpfSksYWMoaTcsdGhpcykuYWRkTG9jYWxIb29rKCJhZnRlclRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgaD1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBkLnJ1bkxvY2FsSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtRm9jdXMiLC4uLmYpfSl9Z2V0U2VsZWN0ZWRSYW5nZSgpe3JldHVybiB0aGlzLnNlbGVjdGVkUmFuZ2V9bWFya1Nv''@;'; put 'put ''dXJjZShjKXtIMyhyTyx0aGlzLGMpfW1hcmtFbmRTb3VyY2UoKXtIMyhyTyx0aGlzLCJ1bmtub3duIil9Z2V0U2VsZWN0aW9uU291cmNlKCl7cmV0dXJuIGFjKHJPLHRoaXMpfXNldEV4cGVjdGVkTGF5ZXJzKGMpe0gzKEl4LHRoaXMsYyl9YmVnaW4oKXt0aGlzLmluUHJvZ3Jlc3M9ITB9Zmlu''@;'; put 'put ''aXNoKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNlbGVjdGlvbkZpbmlzaGVkIixBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSYW5nZSkpLHRoaXMuaW5Qcm9ncmVzcz0hMSxIMyhJeCx0aGlzLC0xKX1pc0luUHJvZ3Jlc3MoKXtyZXR1cm4gdGhpcy5pblByb2dyZXNzfXNldFJhbmdlU3Rh''@;'; put 'put ''cnQoYyxhKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGg9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOmM7Y29uc3QgZj0ibXVsdGlwbGUiPT09dGhpcy5zZXR0aW5ncy5z''@;'; put 'put ''ZWxlY3Rpb25Nb2RlLHY9ZGwoYSk/dGhpcy50YWJsZVByb3BzLmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKTphLFM9Yy5jbG9uZSgpO0gzKG5PLHRoaXMsITEpLHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlU2V0UmFuZ2VTdGFydCIrKGQ/Ik9ubHkiOiIiKSxTKSwoIWZ8''@;'; put 'put ''fGYmJiF2JiZkbChhKSkmJnRoaXMuc2VsZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuc2VsZWN0ZWRSYW5nZS5hZGQoUykuY3VycmVudCgpLnNldEhpZ2hsaWdodChoLmNsb25lKCkpLDA9PT10aGlzLmdldExheWVyTGV2ZWwoKSYmKHRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5jbGVhcigpLHRo''@;'; put 'put ''aXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5jbGVhcigpKSxkfHx0aGlzLnNldFJhbmdlRW5kKGMpfXNldFJhbmdlU3RhcnRPbmx5KGMsYSl7dGhpcy5zZXRSYW5nZVN0YXJ0KGMsYSwhMCxhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Yyl9''@;'; put 'put ''c2V0UmFuZ2VFbmQoYyl7aWYodGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKSlyZXR1cm47Y29uc3QgYT1jLmNsb25lKCksZD10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksaD10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksZj10aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpLmNs''@;'; put 'put ''b25lKCkuc2V0VG8oYykuaXNTaW5nbGVIZWFkZXIoKTtpZigoZD4wfHxoPjApJiYoMD09PWQmJmEuY29sPDAmJiFmfHwwPT09aCYmYS5yb3c8MCYmIWYpKXJldHVybjt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZVNldFJhbmdlRW5kIixhKSx0aGlzLmJlZ2luKCk7Y29uc3Qgdj10aGlzLnNl''@;'; put 'put ''bGVjdGVkUmFuZ2UuY3VycmVudCgpO2lmKHRoaXMuc2V0dGluZ3MubmF2aWdhYmxlSGVhZGVyc3x8di5oaWdobGlnaHQubm9ybWFsaXplKCksInNpbmdsZSI9PT10aGlzLnNldHRpbmdzLnNlbGVjdGlvbk1vZGUpdi5zZXRGcm9tKHYuaGlnaGxpZ2h0KSx2LnNldFRvKHYuaGlnaGxpZ2h0KTtl''@;'; put 'put ''bHNle2NvbnN0IFY9di5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCksUT12LmdldFZlcnRpY2FsRGlyZWN0aW9uKCksZGU9dGhpcy5pc011bHRpcGxlKCk7di5zZXRUbyhhKSxkZSYmKFYhPT12LmdldEhvcml6b250YWxEaXJlY3Rpb24oKXx8MT09PXYuZ2V0V2lkdGgoKSYmIXYuaW5jbHVkZXMo''@;'; put 'put ''di5oaWdobGlnaHQpKSYmdi5mcm9tLmFzc2lnbih7Y29sOnYuaGlnaGxpZ2h0LmNvbH0pLGRlJiYoUSE9PXYuZ2V0VmVydGljYWxEaXJlY3Rpb24oKXx8MT09PXYuZ2V0SGVpZ2h0KCkmJiF2LmluY2x1ZGVzKHYuaGlnaGxpZ2h0KSkmJnYuZnJvbS5hc3NpZ24oe3Jvdzp2LmhpZ2hsaWdodC5y''@;'; put 'put ''b3d9KX1kPjAmJmg+MCYmKCF0aGlzLnNldHRpbmdzLm5hdmlnYWJsZUhlYWRlcnN8fHRoaXMuc2V0dGluZ3MubmF2aWdhYmxlSGVhZGVycyYmIXYuaXNTaW5nbGVIZWFkZXIoKSkmJnYudG8ubm9ybWFsaXplKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVIaWdobGlnaHRTZXQiKSx0aGlz''@;'; put 'put ''LnNldFJhbmdlRm9jdXModGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKS5oaWdobGlnaHQpLHRoaXMuYXBwbHlBbmRDb21taXQoKTtjb25zdCBTPS0xPT09YWMoSXgsdGhpcyl8fHRoaXMuc2VsZWN0ZWRSYW5nZS5zaXplKCk9PT1hYyhJeCx0aGlzKTt0aGlzLnJ1bkxvY2FsSG9va3MoImFm''@;'; put 'put ''dGVyU2V0UmFuZ2VFbmQiLGMsUyl9YXBwbHlBbmRDb21taXQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1l''@;'; put 'put ''bnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLmdldExheWVyTGV2ZWwoKTtjb25zdCBkPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSxoPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKTthPHRoaXMuaGlnaGxpZ2h0LmxheWVyTGV2ZWwmJihUbih0aGlzLmhpZ2hsaWdodC5nZXRBcmVhcygp''@;'; put 'put ''LFllPT57WWUuY2xlYXIoKX0pLFRuKHRoaXMuaGlnaGxpZ2h0LmdldExheWVyZWRBcmVhcygpLFllPT57WWUuY2xlYXIoKX0pLFRuKHRoaXMuaGlnaGxpZ2h0LmdldFJvd0hlYWRlcnMoKSxZZT0+e1llLmNsZWFyKCl9KSxUbih0aGlzLmhpZ2hsaWdodC5nZXRDb2x1bW5IZWFkZXJzKCksWWU9''@;'; put 'put ''PntZZS5jbGVhcigpfSksVG4odGhpcy5oaWdobGlnaHQuZ2V0QWN0aXZlUm93SGVhZGVycygpLFllPT57WWUuY2xlYXIoKX0pLFRuKHRoaXMuaGlnaGxpZ2h0LmdldEFjdGl2ZUNvbHVtbkhlYWRlcnMoKSxZZT0+e1llLmNsZWFyKCl9KSxUbih0aGlzLmhpZ2hsaWdodC5nZXRBY3RpdmVDb3Ju''@;'; put 'put ''ZXJIZWFkZXJzKCksWWU9PntZZS5jbGVhcigpfSksVG4odGhpcy5oaWdobGlnaHQuZ2V0Um93SGlnaGxpZ2h0cygpLFllPT57WWUuY2xlYXIoKX0pLFRuKHRoaXMuaGlnaGxpZ2h0LmdldENvbHVtbkhpZ2hsaWdodHMoKSxZZT0+e1llLmNsZWFyKCl9KSksdGhpcy5oaWdobGlnaHQudXNlTGF5''@;'; put 'put ''ZXJMZXZlbChhKTtjb25zdCBmPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUFyZWEoKSx2PXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUxheWVyZWRBcmVhKCksUz10aGlzLmhpZ2hsaWdodC5jcmVhdGVSb3dIZWFkZXIoKSxWPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUNvbHVtbkhlYWRlcigpLFE9dGhpcy5o''@;'; put 'put ''aWdobGlnaHQuY3JlYXRlQWN0aXZlUm93SGVhZGVyKCksZGU9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlQ29sdW1uSGVhZGVyKCkscGU9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlQ29ybmVySGVhZGVyKCksQ2U9dGhpcy5oaWdobGlnaHQuY3JlYXRlUm93SGlnaGxpZ2h0KCksT2U9''@;'; put 'put ''dGhpcy5oaWdobGlnaHQuY3JlYXRlQ29sdW1uSGlnaGxpZ2h0KCk7aWYoZi5jbGVhcigpLHYuY2xlYXIoKSxTLmNsZWFyKCksVi5jbGVhcigpLFEuY2xlYXIoKSxkZS5jbGVhcigpLHBlLmNsZWFyKCksQ2UuY2xlYXIoKSxPZS5jbGVhcigpLHRoaXMuaGlnaGxpZ2h0LmlzRW5hYmxlZEZvcihv''@;'; put 'put ''cSxjLmhpZ2hsaWdodCkmJih0aGlzLmlzTXVsdGlwbGUoKXx8YT49MSkmJihmLmFkZChjLmZyb20pLmFkZChjLnRvKS5jb21taXQoKSx2LmFkZChjLmZyb20pLmFkZChjLnRvKS5jb21taXQoKSwxPT09YSkpe2NvbnN0IFllPXRoaXMuc2VsZWN0ZWRSYW5nZS5wcmV2aW91cygpO3RoaXMuaGln''@;'; put 'put ''aGxpZ2h0LnVzZUxheWVyTGV2ZWwoYS0xKSx0aGlzLmhpZ2hsaWdodC5jcmVhdGVBcmVhKCkuYWRkKFllLmZyb20pLmNvbW1pdCgpLnN5bmNXaXRoKFllKSx0aGlzLmhpZ2hsaWdodC5jcmVhdGVMYXllcmVkQXJlYSgpLmFkZChZZS5mcm9tKS5jb21taXQoKS5zeW5jV2l0aChZZSksdGhpcy5o''@;'; put 'put ''aWdobGlnaHQudXNlTGF5ZXJMZXZlbChhKX1pZih0aGlzLmhpZ2hsaWdodC5pc0VuYWJsZWRGb3IoaXEsYy5oaWdobGlnaHQpKXtpZighYy5pc1NpbmdsZUhlYWRlcigpKXtjb25zdCBkdD10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1heChjLmZyb20ucm93LDApLC0x''@;'; put 'put ''KSxodD10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhjLnRvLnJvdywtMSksTXQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLTEsTWF0aC5tYXgoYy5mcm9tLmNvbCwwKSksUXQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLTEsYy50by5jb2wpOyJz''@;'; put 'put ''aW5nbGUiPT09dGhpcy5zZXR0aW5ncy5zZWxlY3Rpb25Nb2RlPyhTLmFkZChkdCkuY29tbWl0KCksVi5hZGQoTXQpLmNvbW1pdCgpLENlLmFkZChkdCkuY29tbWl0KCksT2UuYWRkKE10KS5jb21taXQoKSk6KFMuYWRkKGR0KS5hZGQoaHQpLmNvbW1pdCgpLFYuYWRkKE10KS5hZGQoUXQpLmNv''@;'; put 'put ''bW1pdCgpLENlLmFkZChkdCkuYWRkKGh0KS5jb21taXQoKSxPZS5hZGQoTXQpLmFkZChRdCkuY29tbWl0KCkpfWNvbnN0IFllPSFhYyhEeCx0aGlzKSYmdGhpcy5pc0VudGlyZVJvd1NlbGVjdGVkKCkmJihoPjAmJmg9PT1jLmdldFdpZHRoKCl8fDA9PT1oJiZ0aGlzLmlzU2VsZWN0ZWRCeVJv''@;'; put 'put ''d0hlYWRlcigpKSxldD0hYWMoRHgsdGhpcykmJnRoaXMuaXNFbnRpcmVDb2x1bW5TZWxlY3RlZCgpJiYoZD4wJiZkPT09Yy5nZXRIZWlnaHQoKXx8MD09PWQmJnRoaXMuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpO1llJiZRLmFkZCh0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3Jk''@;'; put 'put ''cyhNYXRoLm1heChjLmZyb20ucm93LDApLE1hdGgubWluKC10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dIZWFkZXJzKCksLTEpKSkuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKE1hdGgubWF4KGMudG8ucm93LDApLC0xKSkuY29tbWl0KCksZXQmJmRlLmFkZCh0aGlzLnRh''@;'; put 'put ''YmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhNYXRoLm1pbigtdGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygpLC0xKSxNYXRoLm1heChjLmZyb20uY29sLDApKSkuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0xLE1hdGgubWF4KGMudG8uY29sLDApKSkuY29t''@;'; put 'put ''bWl0KCksWWUmJmV0JiZwZS5hZGQodGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoLXRoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKSwtdGhpcy50YWJsZVByb3BzLmNvdW50Um93SGVhZGVycygpKSkuYWRkKHRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC0x''@;'; put 'put ''LC0xKSkuY29tbWl0KCl9fXNldFJhbmdlRm9jdXMoYyl7aWYodGhpcy5zZWxlY3RlZFJhbmdlLmlzRW1wdHkoKSlyZXR1cm47Y29uc3QgYT10aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpO3RoaXMuaW5Qcm9ncmVzc3x8dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZXRGb2N1cyIsYyk7''@;'; put 'put ''Y29uc3QgZD10aGlzLmhpZ2hsaWdodC5nZXRGb2N1cygpO2QuY2xlYXIoKSxhLnNldEhpZ2hsaWdodChjKSx0aGlzLmluUHJvZ3Jlc3N8fHRoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlSGlnaGxpZ2h0U2V0IiksdGhpcy5oaWdobGlnaHQuaXNFbmFibGVkRm9yKHNxLGEuaGlnaGxpZ2h0KSYm''@;'; put 'put ''ZC5hZGQoYS5oaWdobGlnaHQpLmNvbW1pdCgpLnN5bmNXaXRoKGEpLHRoaXMuaW5Qcm9ncmVzc3x8KEgzKG5PLHRoaXMsITApLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJTZXRGb2N1cyIsYS5oaWdobGlnaHQpKX10cmFuc2Zvcm1TdGFydChjLGEpe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07dGhpcy5zZXR0aW5ncy5uYXZpZ2FibGVIZWFkZXJzJiZhYyhZMSx0aGlzKS5zZXRPZmZzZXRTaXplKHt4OnRoaXMudGFibGVQcm9wcy5jb3VudFJvd0hlYWRlcnMoKSx5OnRoaXMudGFibGVQcm9wcy5jb3VudENvbEhlYWRl''@;'; put 'put ''cnMoKX0pLHRoaXMuc2V0UmFuZ2VTdGFydChhYyhZMSx0aGlzKS50cmFuc2Zvcm1TdGFydChjLGEsZCkpfXRyYW5zZm9ybUVuZChjLGEpe3RoaXMuc2V0dGluZ3MubmF2aWdhYmxlSGVhZGVycyYmYWMoWTEsdGhpcykuc2V0T2Zmc2V0U2l6ZSh7eDp0aGlzLnRhYmxlUHJvcHMuY291bnRSb3dI''@;'; put 'put ''ZWFkZXJzKCkseTp0aGlzLnRhYmxlUHJvcHMuY291bnRDb2xIZWFkZXJzKCl9KSx0aGlzLnNldFJhbmdlRW5kKGFjKFkxLHRoaXMpLnRyYW5zZm9ybUVuZChjLGEpKX10cmFuc2Zvcm1Gb2N1cyhjLGEpe2NvbnN0IGQ9dGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKSx7cm93OmgsY29sOmZ9''@;'; put 'put ''PWQuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHY9dGhpcy50YWJsZVByb3BzLmNvdW50UmVuZGVyYWJsZUNvbHVtbnNJblJhbmdlKDAsZi0xKSxTPXRoaXMudGFibGVQcm9wcy5jb3VudFJlbmRlcmFibGVSb3dzSW5SYW5nZSgwLGgtMSk7ZC5oaWdobGlnaHQuaXNIZWFkZXIoKT9hYyhpNyx0''@;'; put 'put ''aGlzKS5zZXRPZmZzZXRTaXplKHt4OmY8MD9NYXRoLmFicyhmKTotdix5Omg8MD9NYXRoLmFicyhoKTotU30pOmFjKGk3LHRoaXMpLnNldE9mZnNldFNpemUoe3g6ZjwwPzA6LXYseTpoPDA/MDotU30pO2NvbnN0IFY9YWMoaTcsdGhpcykudHJhbnNmb3JtU3RhcnQoYyxhKTt0aGlzLnNldFJh''@;'; put 'put ''bmdlRm9jdXMoVi5ub3JtYWxpemUoKSl9c2hpZnRSb3dzKGMsYSl7aWYoIXRoaXMuaXNTZWxlY3RlZCgpKXJldHVybjtjb25zdCBkPXRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCk7aWYodGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIoKSl0aGlzLnNlbGVjdEFsbCghMCwhMCx7ZGlzYWJsZUhl''@;'; put 'put ''YWRlcnNIaWdobGlnaHQ6ITB9KTtlbHNlIGlmKHRoaXMuaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fGQuZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLnJvdz49Yyl7Y29uc3R7ZnJvbTpoLHRvOmYsaGlnaGxpZ2h0OnZ9PWQsUz10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksVj10aGlz''@;'; put 'put ''LmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpLFE9dGhpcy5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSxkZT1RPy0xOjAscGU9UT8wOmE7dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCkucG9wKCk7Y29uc3QgQ2U9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoSGEoaC5yb3crcGUsZGUs''@;'; put 'put ''Uy0xKSxoLmNvbCksT2U9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoSGEoZi5yb3crYSxkZSxTLTEpLGYuY29sKTt0aGlzLm1hcmtTb3VyY2UoInNoaWZ0Iiksdi5yb3c+PWM/dGhpcy5zZXRSYW5nZVN0YXJ0T25seShDZSwhMCx0aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENv''@;'; put 'put ''b3JkcyhIYSh2LnJvdythLDAsUy0xKSx2LmNvbCkpOnRoaXMuc2V0UmFuZ2VTdGFydE9ubHkoQ2UsITApLFYmJnRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLFEmJnRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQodGhpcy5nZXRMYXllckxl''@;'; put 'put ''dmVsKCkpLHRoaXMuc2V0UmFuZ2VFbmQoT2UpLHRoaXMubWFya0VuZFNvdXJjZSgpfX1zaGlmdENvbHVtbnMoYyxhKXtpZighdGhpcy5pc1NlbGVjdGVkKCkpcmV0dXJuO2NvbnN0IGQ9dGhpcy5zZWxlY3RlZFJhbmdlLmN1cnJlbnQoKTtpZih0aGlzLmlzU2VsZWN0ZWRCeUNvcm5lcigpKXRo''@;'; put 'put ''aXMuc2VsZWN0QWxsKCEwLCEwLHtkaXNhYmxlSGVhZGVyc0hpZ2hsaWdodDohMH0pO2Vsc2UgaWYodGhpcy5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8ZC5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCkuY29sPj1jKXtjb25zdHtmcm9tOmgsdG86ZixoaWdobGlnaHQ6dn09ZCxTPXRoaXMudGFi''@;'; put 'put ''bGVQcm9wcy5jb3VudENvbHMoKSxWPXRoaXMuaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCksUT10aGlzLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpLGRlPVY/LTE6MCxwZT1WPzA6YTt0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKS5wb3AoKTtjb25zdCBDZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRl''@;'; put 'put ''Q2VsbENvb3JkcyhoLnJvdyxIYShoLmNvbCtwZSxkZSxTLTEpKSxPZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhmLnJvdyxIYShmLmNvbCthLGRlLFMtMSkpO3RoaXMubWFya1NvdXJjZSgic2hpZnQiKSx2LmNvbD49Yz90aGlzLnNldFJhbmdlU3RhcnRPbmx5KENlLCEwLHRo''@;'; put 'put ''aXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHYucm93LEhhKHYuY29sK2EsMCxTLTEpKSk6dGhpcy5zZXRSYW5nZVN0YXJ0T25seShDZSwhMCksViYmdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSksUSYmdGhpcy5zZWxlY3RlZEJ5Q29sdW1u''@;'; put 'put ''SGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSksdGhpcy5zZXRSYW5nZUVuZChPZSksdGhpcy5tYXJrRW5kU291cmNlKCl9fWdldExheWVyTGV2ZWwoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlLnNpemUoKS0xfWlzU2VsZWN0ZWQoKXtyZXR1cm4hdGhpcy5zZWxlY3RlZFJhbmdl''@;'; put 'put ''LmlzRW1wdHkoKX1pc011bHRpcGxlKCl7aWYoIXRoaXMuaXNTZWxlY3RlZCgpKXJldHVybiExO2NvbnN0IGM9VmgoIXRoaXMuc2VsZWN0ZWRSYW5nZS5jdXJyZW50KCkuaXNTaW5nbGUoKSk7cmV0dXJuIHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJJc011bHRpcGxlU2VsZWN0aW9uIixjKSxj''@;'; put 'put ''LnZhbHVlfWlzRm9jdXNTZWxlY3Rpb25DaGFuZ2VkKCl7cmV0dXJuIHRoaXMuaXNTZWxlY3RlZCgpJiZhYyhuTyx0aGlzKX1pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5nZXRM''@;'; put 'put ''YXllckxldmVsKCk7cmV0dXJuIXRoaXMuaXNTZWxlY3RlZEJ5Q29ybmVyKGMpJiYoLTE9PT1jP3RoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5zaXplPjA6dGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLmhhcyhjKSl9aXNFbnRpcmVSb3dTZWxlY3RlZCgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtjb25zdCBhPWg9Pntjb25zdHtjb2w6Zn09aC5nZXRPdXRlclRvcFN0YXJ0Q29ybmVyKCksdj10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dIZWFkZXJzKCksUz10aGlzLnRhYmxlUHJvcHMu''@;'; put 'put ''Y291bnRDb2xzKCk7cmV0dXJuKHY+MCYmZjwwfHwwPT09dikmJmguZ2V0V2lkdGgoKT09PVN9O2lmKC0xPT09YylyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUmFuZ2UpLnNvbWUoaD0+YShoKSk7Y29uc3QgZD10aGlzLnNlbGVjdGVkUmFuZ2UucGVla0J5SW5kZXgoYyk7cmV0dXJu''@;'; put 'put ''ISFkJiZhKGQpfWlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzLmdldExheWVyTGV2ZWwoKTtyZXR1cm4hdGhpcy5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmKC0xPT09Yz90aGlz''@;'; put 'put ''LnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuc2l6ZT4wOnRoaXMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5oYXMoYykpfWlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5nZXRMYXll''@;'; put 'put ''ckxldmVsKCk7Y29uc3QgYT1oPT57Y29uc3R7cm93OmZ9PWguZ2V0T3V0ZXJUb3BTdGFydENvcm5lcigpLHY9dGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygpLFM9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpO3JldHVybih2PjAmJmY8MHx8MD09PXYpJiZoLmdldEhlaWdodCgp''@;'; put 'put ''PT09U307aWYoLTE9PT1jKXJldHVybiBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSYW5nZSkuc29tZShoPT5hKGgpKTtjb25zdCBkPXRoaXMuc2VsZWN0ZWRSYW5nZS5wZWVrQnlJbmRleChjKTtyZXR1cm4hIWQmJmEoZCl9aXNTZWxlY3RlZEJ5QW55SGVhZGVyKCl7cmV0dXJuIHRoaXMuaXNT''@;'; put 'put ''ZWxlY3RlZEJ5Um93SGVhZGVyKC0xKXx8dGhpcy5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoLTEpfHx0aGlzLmlzU2VsZWN0ZWRCeUNvcm5lcigpfWlzU2VsZWN0ZWRCeUNvcm5lcigpe3JldHVybiB0aGlzLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuaGFzKHRoaXMuZ2V0TGF5ZXJMZXZlbCgp''@;'; put 'put ''KSYmdGhpcy5zZWxlY3RlZEJ5Um93SGVhZGVyLmhhcyh0aGlzLmdldExheWVyTGV2ZWwoKSl9aW5JblNlbGVjdGlvbihjKXtyZXR1cm4gdGhpcy5zZWxlY3RlZFJhbmdlLmluY2x1ZGVzKGMpfWlzQ2VsbENvcm5lclZpc2libGUoKXtyZXR1cm4gdGhpcy5zZXR0aW5ncy5maWxsSGFuZGxlJiYh''@;'; put 'put ''dGhpcy50YWJsZVByb3BzLmlzRWRpdG9yT3BlbmVkKCkmJiF0aGlzLmlzTXVsdGlwbGUoKX1pc0NlbGxWaXNpYmxlKGMpe2NvbnN0IGE9dGhpcy50YWJsZVByb3BzLnZpc3VhbFRvUmVuZGVyYWJsZUNvb3JkcyhjKTtyZXR1cm4gbnVsbCE9PWEucm93JiZudWxsIT09YS5jb2x9aXNBcmVhQ29y''@;'; put 'put ''bmVyVmlzaWJsZShjKXtyZXR1cm4oIU51bWJlci5pc0ludGVnZXIoYyl8fGM9PT10aGlzLmdldExheWVyTGV2ZWwoKSkmJnRoaXMuc2V0dGluZ3MuZmlsbEhhbmRsZSYmIXRoaXMudGFibGVQcm9wcy5pc0VkaXRvck9wZW5lZCgpJiZ0aGlzLmlzTXVsdGlwbGUoKX1jbGVhcigpe3RoaXMuc2Vs''@;'; put 'put ''ZWN0ZWRSYW5nZS5jbGVhcigpLHRoaXMuaGlnaGxpZ2h0LmNsZWFyKCl9ZGVzZWxlY3QoKXt0aGlzLmlzU2VsZWN0ZWQoKSYmKHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmNsZWFyKCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlckRlc2VsZWN0IikpfXNlbGVjdEFsbCgpe3ZhciBjO2xldCBh''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sZD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLGg9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1l''@;'; put 'put ''bnRzWzJdOntmb2N1c1Bvc2l0aW9uOiExLGRpc2FibGVIZWFkZXJzSGlnaGxpZ2h0OiExfTtjb25zdCBmPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSx2PXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKSxTPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd0hlYWRlcnMoKSxWPXRoaXMudGFi''@;'; put 'put ''bGVQcm9wcy5jb3VudENvbEhlYWRlcnMoKSxRPWQ/LVY6MCxkZT1hPy1TOjA7aWYoMD09PVEmJjA9PT1kZSYmKDA9PT1mfHwwPT09dikpcmV0dXJuO2xldCBwZT1udWxsPT09KGM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCkuY3VycmVudCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGln''@;'; put 'put ''aHQ7Y29uc3R7Zm9jdXNQb3NpdGlvbjpDZSxkaXNhYmxlSGVhZGVyc0hpZ2hsaWdodDpPZX09aDtIMyhEeCx0aGlzLE9lKSxDZSYmTnVtYmVyLmlzSW50ZWdlcihDZT8ucm93KSYmTnVtYmVyLmlzSW50ZWdlcihDZT8uY29sKSYmKHBlPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRz''@;'; put 'put ''KEhhKENlLnJvdyxRLGYtMSksSGEoQ2UuY29sLGRlLHYtMSkpKTtjb25zdCBZZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhRLGRlKSxldD10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbENvb3JkcyhmLTEsdi0xKTt0aGlzLmNsZWFyKCksdGhpcy5zZXRSYW5nZVN0YXJ0T25s''@;'; put 'put ''eShZZSx2b2lkIDAscGUpLGRlPDAmJnRoaXMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQodGhpcy5nZXRMYXllckxldmVsKCkpLFE8MCYmdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSksdGhpcy5zZXRSYW5nZUVuZChldCksdGhpcy5maW5pc2go''@;'; put 'put ''KSxIMyhEeCx0aGlzLCExKX1zZWxlY3RDZWxscyhjKXt2YXIgYT10aGlzO2NvbnN0IGQ9YmIoYyk7aWYoMT09PWQpcmV0dXJuITE7aWYoMD09PWQpdGhyb3cgbmV3IEVycm9yKE5hYFVuc3VwcG9ydGVkIGZvcm1hdCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlcyB3YXMgcGFzc2VkLiBUbyBzZWxl''@;'; put 'put ''Y3QgY2VsbHMgcGFzc1x4MjAKICAgICAgICB0aGUgY29vcmRpbmF0ZXMgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIChbW3Jvd1N0YXJ0LCBjb2x1bW5TdGFydC9jb2x1bW5Qcm9wU3RhcnQsIHJvd0VuZCxceDIwCiAgICAgICAgY29sdW1uRW5kL2NvbHVtblByb3BFbmRdXSkgb3IgYXMgYW4gYXJy''@;'; put 'put ''YXkgb2YgQ2VsbFJhbmdlIG9iamVjdHMuYCk7Y29uc3QgaD1BeChkLHtjcmVhdGVDZWxsQ29vcmRzOmZ1bmN0aW9uKCl7cmV0dXJuIGEudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKC4uLmFyZ3VtZW50cyl9LGNyZWF0ZUNlbGxSYW5nZTpmdW5jdGlvbigpe3JldHVybiBhLnRhYmxlUHJv''@;'; put 'put ''cHMuY3JlYXRlQ2VsbFJhbmdlKC4uLmFyZ3VtZW50cyl9LHByb3BUb0NvbDpWPT50aGlzLnRhYmxlUHJvcHMucHJvcFRvQ29sKFYpLGtlZXBEaXJlY3Rpb246ITB9KSxmPXRoaXMuc2V0dGluZ3MubmF2aWdhYmxlSGVhZGVycyx2PXtjb3VudFJvd3M6dGhpcy50YWJsZVByb3BzLmNvdW50Um93''@;'; put 'put ''cygpLGNvdW50Q29sczp0aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksY291bnRSb3dIZWFkZXJzOmY/dGhpcy50YWJsZVByb3BzLmNvdW50Um93SGVhZGVycygpOjAsY291bnRDb2xIZWFkZXJzOmY/dGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygpOjB9LFM9IWMuc29tZShWPT57''@;'; put 'put ''Y29uc3QgUT1oKFYpLGRlPVEuaXNWYWxpZCh2KTtyZXR1cm4hKGRlJiYhUS5jb250YWluc0hlYWRlcnMoKXx8ZGUmJlEuY29udGFpbnNIZWFkZXJzKCkmJlEuaXNTaW5nbGVIZWFkZXIoKSl9KTtyZXR1cm4gUyYmKHRoaXMuY2xlYXIoKSx0aGlzLnNldEV4cGVjdGVkTGF5ZXJzKGMubGVuZ3Ro''@;'; put 'put ''KSxUbihjLFY9Pntjb25zdHtmcm9tOlEsdG86ZGV9PWgoVik7dGhpcy5zZXRSYW5nZVN0YXJ0T25seShRLmNsb25lKCksITEpLHRoaXMuc2V0UmFuZ2VFbmQoZGUuY2xvbmUoKSl9KSx0aGlzLmZpbmlzaCgpKSxTfXNlbGVjdENvbHVtbnMoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2''@;'; put 'put ''b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmMsZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MDtjb25zdCBoPSJzdHJpbmciPT10eXBlb2YgYz90aGlzLnRhYmxlUHJvcHMucHJvcFRvQ29sKGMpOmMsZj0ic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIGE/dGhpcy50YWJsZVByb3BzLnByb3BUb0NvbChhKTphLHY9dGhpcy50YWJsZVByb3BzLmNvdW50Um93cygpLFM9dGhpcy50YWJsZVByb3BzLmNvdW50Q29scygpLFY9dGhpcy50YWJsZVByb3BzLmNvdW50Q29sSGVhZGVycygpLFE9MD09PVY/MDotVixkZT10aGlzLnRhYmxlUHJv''@;'; put 'put ''cHMuY3JlYXRlQ2VsbENvb3JkcyhRLGgpLHBlPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHYtMSxmKSxDZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKGRlLGRlLHBlKS5pc1ZhbGlkKHtjb3VudFJvd3M6dixjb3VudENvbHM6Uyxjb3VudFJvd0hlYWRlcnM6MCxj''@;'; put 'put ''b3VudENvbEhlYWRlcnM6Vn0pO2lmKENlKXtsZXQgT2U9MCxZZT0wO051bWJlci5pc0ludGVnZXIoZD8ucm93KSYmTnVtYmVyLmlzSW50ZWdlcihkPy5jb2wpPyhPZT1IYShkLnJvdyxRLHYtMSksWWU9SGEoZC5jb2wsTWF0aC5taW4oaCxmKSxNYXRoLm1heChoLGYpKSk6KE9lPUhhKGQsUSx2''@;'; put 'put ''LTEpLFllPWgpO2NvbnN0IGV0PXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKE9lLFllKSxkdD0wPT09Vj8wOkhhKGV0LnJvdyxRLC0xKSxodD12LTEsTXQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoZHQsaCksUXQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxD''@;'; put 'put ''b29yZHMoaHQsZik7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZWxlY3RDb2x1bW5zIixNdCxRdCxldCksTXQucm93PWR0LFF0LnJvdz1odCx0aGlzLnNldFJhbmdlU3RhcnRPbmx5KE10LHZvaWQgMCxldCksdGhpcy5zZWxlY3RlZEJ5Q29sdW1uSGVhZGVyLmFkZCh0aGlzLmdldExheWVy''@;'; put 'put ''TGV2ZWwoKSksdGhpcy5zZXRSYW5nZUVuZChRdCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNlbGVjdENvbHVtbnMiLE10LFF0LGV0KSx0aGlzLmZpbmlzaCgpfXJldHVybiBDZX1zZWxlY3RSb3dzKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''P2FyZ3VtZW50c1sxXTpjLGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7Y29uc3QgaD10aGlzLnRhYmxlUHJvcHMuY291bnRSb3dzKCksZj10aGlzLnRhYmxlUHJvcHMuY291bnRDb2xzKCksdj10aGlzLnRhYmxlUHJvcHMuY291bnRS''@;'; put 'put ''b3dIZWFkZXJzKCksUz0wPT09dj8wOi12LFY9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoYyxTKSxRPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKGEsZi0xKSxkZT10aGlzLnRhYmxlUHJvcHMuY3JlYXRlQ2VsbFJhbmdlKFYsVixRKS5pc1ZhbGlkKHtjb3VudFJv''@;'; put 'put ''d3M6aCxjb3VudENvbHM6Zixjb3VudFJvd0hlYWRlcnM6dixjb3VudENvbEhlYWRlcnM6MH0pO2lmKGRlKXtsZXQgcGU9MCxDZT0wO051bWJlci5pc0ludGVnZXIoZD8ucm93KSYmTnVtYmVyLmlzSW50ZWdlcihkPy5jb2wpPyhwZT1IYShkLnJvdyxNYXRoLm1pbihjLGEpLE1hdGgubWF4KGMs''@;'; put 'put ''YSkpLENlPUhhKGQuY29sLFMsZi0xKSk6KHBlPWMsQ2U9SGEoZCxTLGYtMSkpO2NvbnN0IE9lPXRoaXMudGFibGVQcm9wcy5jcmVhdGVDZWxsQ29vcmRzKHBlLENlKSxZZT0wPT09dj8wOkhhKE9lLmNvbCxTLC0xKSxldD1mLTEsZHQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMo''@;'; put 'put ''YyxZZSksaHQ9dGhpcy50YWJsZVByb3BzLmNyZWF0ZUNlbGxDb29yZHMoYSxldCk7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVTZWxlY3RSb3dzIixkdCxodCxPZSksZHQuY29sPVllLGh0LmNvbD1ldCx0aGlzLnNldFJhbmdlU3RhcnRPbmx5KGR0LHZvaWQgMCxPZSksdGhpcy5zZWxlY3Rl''@;'; put 'put ''ZEJ5Um93SGVhZGVyLmFkZCh0aGlzLmdldExheWVyTGV2ZWwoKSksdGhpcy5zZXRSYW5nZUVuZChodCksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclNlbGVjdFJvd3MiLGR0LGh0LE9lKSx0aGlzLmZpbmlzaCgpfXJldHVybiBkZX1yZWZyZXNoKCl7aWYoIXRoaXMuaXNTZWxlY3RlZCgpKXJl''@;'; put 'put ''dHVybjtjb25zdCBjPXRoaXMudGFibGVQcm9wcy5jb3VudFJvd3MoKSxhPXRoaXMudGFibGVQcm9wcy5jb3VudENvbHMoKTtpZigwPT09Y3x8MD09PWEpcmV0dXJuIHZvaWQgdGhpcy5kZXNlbGVjdCgpO2NvbnN0IGQ9dGhpcy5zZWxlY3RlZFJhbmdlLnBlZWtCeUluZGV4KHRoaXMuc2VsZWN0''@;'; put 'put ''ZWRSYW5nZS5zaXplKCktMSkse2Zyb206aCx0bzpmLGhpZ2hsaWdodDp2fT1kO3RoaXMuY2xlYXIoKSx2LmFzc2lnbih7cm93OkhhKHYucm93LC0xLzAsYy0xKSxjb2w6SGEodi5jb2wsLTEvMCxhLTEpfSksaC5hc3NpZ24oe3JvdzpIYShoLnJvdywtMS8wLGMtMSksY29sOkhhKGguY29sLC0x''@;'; put 'put ''LzAsYS0xKX0pLGYuYXNzaWduKHtyb3c6SGEoZi5yb3csMCxjLTEpLGNvbDpIYShmLmNvbCwwLGEtMSl9KSx0aGlzLnNlbGVjdGVkUmFuZ2UucmFuZ2VzLnB1c2goZCksdGhpcy5oaWdobGlnaHQuZ2V0Rm9jdXMoKS5hZGQodikuY29tbWl0KCkuc3luY1dpdGgoZCksdGhpcy5hcHBseUFuZENv''@;'; put 'put ''bW1pdChkKX1jb21taXQoKXtpZih0aGlzLmhpZ2hsaWdodC5nZXRDdXN0b21TZWxlY3Rpb25zKCkuZm9yRWFjaChoPT57aC5jb21taXQoKX0pLCF0aGlzLmlzU2VsZWN0ZWQoKSlyZXR1cm47Y29uc3QgYT10aGlzLmhpZ2hsaWdodC5nZXRGb2N1cygpLGQ9dGhpcy5nZXRMYXllckxldmVsKCk7''@;'; put 'put ''YS5jb21taXQoKS5zeW5jV2l0aCh0aGlzLnNlbGVjdGVkUmFuZ2UuY3VycmVudCgpKTtmb3IobGV0IGg9MDtoPHRoaXMuc2VsZWN0ZWRSYW5nZS5zaXplKCk7aCs9MSl7dGhpcy5oaWdobGlnaHQudXNlTGF5ZXJMZXZlbChoKTtjb25zdCBmPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUFyZWEoKSx2''@;'; put 'put ''PXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUxheWVyZWRBcmVhKCksUz10aGlzLmhpZ2hsaWdodC5jcmVhdGVSb3dIZWFkZXIoKSxWPXRoaXMuaGlnaGxpZ2h0LmNyZWF0ZUNvbHVtbkhlYWRlcigpLFE9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlUm93SGVhZGVyKCksZGU9dGhpcy5oaWdobGln''@;'; put 'put ''aHQuY3JlYXRlQWN0aXZlQ29sdW1uSGVhZGVyKCkscGU9dGhpcy5oaWdobGlnaHQuY3JlYXRlQWN0aXZlQ29ybmVySGVhZGVyKCksQ2U9dGhpcy5oaWdobGlnaHQuY3JlYXRlUm93SGlnaGxpZ2h0KCksT2U9dGhpcy5oaWdobGlnaHQuY3JlYXRlQ29sdW1uSGlnaGxpZ2h0KCk7Zi5jb21taXQo''@;'; put 'put ''KSx2LmNvbW1pdCgpLFMuY29tbWl0KCksVi5jb21taXQoKSxRLmNvbW1pdCgpLGRlLmNvbW1pdCgpLHBlLmNvbW1pdCgpLENlLmNvbW1pdCgpLE9lLmNvbW1pdCgpfXRoaXMuaGlnaGxpZ2h0LnVzZUxheWVyTGV2ZWwoZCl9fXJsKFRoZSxVMSk7Y29uc3QgcEtlPVRoZSx7cmVnaXN0ZXI6Z0tl''@;'; put 'put ''LGdldEl0ZW06bUtlLGhhc0l0ZW06a2hlLGdldE5hbWVzOnZLZX09YWYoImNlbGxUeXBlcyIpO2Z1bmN0aW9uIHBxKGwpe2lmKCFraGUobCkpdGhyb3cgRXJyb3IoYFlvdSBkZWNsYXJlZCBjZWxsIHR5cGUgIiR7bH0iIGFzIGEgc3RyaW5nIHRoYXQgaXMgbm90IG1hcHBlZCB0byBhIGtub3du''@;'; put 'put ''IG9iamVjdC5cbiAgICAgICAgICAgICAgICAgQ2VsbCB0eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIG1hcHBlZCB0byBhbiBvYmplY3QgcmVnaXN0ZXJlZCBieVxuICAgICAgICAgICAgICAgICAiSGFuZHNvbnRhYmxlLmNlbGxUeXBlcy5yZWdpc3RlckNlbGxUeXBlIiBtZXRo''@;'; put 'put ''b2RgKTtyZXR1cm4gbUtlKGwpfWZ1bmN0aW9uIEdoKGwsYyl7InN0cmluZyIhPXR5cGVvZiBsJiYobD0oYz1sKS5DRUxMX1RZUEUpO2NvbnN0e2VkaXRvcjphLHJlbmRlcmVyOmQsdmFsaWRhdG9yOmh9PWM7YSYmVjEobCxhKSxkJiZSZChsLGQpLGgmJiQ4KGwsaCksZ0tlKGwsYyl9ZnVuY3Rp''@;'; put 'put ''b24gaU8obCxjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bDtjb25zdCBkPSJzdHJpbmciPT10eXBlb2YgYy50eXBlP3BxKGMudHlwZSk6Yy50eXBlO2lmKGwuX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcyYmQ3Mo''@;'; put 'put ''YywoZix2KT0+e2wuX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcy5kZWxldGUodil9KSwhX3MoZCkpcmV0dXJuO2E9PT1sJiYhbC5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzJiYobC5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzPW5ldyBTZXQpO2NvbnN0IGg9''@;'; put 'put ''e307Q3MoZCwoZix2KT0+e3ZhciBTOyhmdW5jdGlvbiBfS2UobCxjKXt2YXIgYTtyZXR1cm4iQ0VMTF9UWVBFIiE9PWwmJigobnVsbD09PShhPWMuX2F1dG9tYXRpY2FsbHlBc3NpZ25lZE1ldGFQcm9wcyl8fHZvaWQgMD09PWE/dm9pZCAwOmEuaGFzKGwpKXx8IVlsKGMsbCkpfSkodixhKSYm''@;'; put 'put ''KGhbdl09ZixudWxsPT09KFM9bC5fYXV0b21hdGljYWxseUFzc2lnbmVkTWV0YVByb3BzKXx8dm9pZCAwPT09U3x8Uy5hZGQodikpfSksRmMobCxoKX1mdW5jdGlvbiBvTyhsKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihsKSYmbD49MH1mdW5jdGlvbiBzTyhsLGMpe2lmKCFsKCkpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiAke2N9YCl9ZnVuY3Rpb24gYU8obCl7cmV0dXJuIG51bGw9PWx9Y29uc3QgQWhlPSgpPT4oe19hdXRvbWF0aWNhbGx5QXNzaWduZWRNZXRhUHJvcHM6dm9pZCAwLGFjdGl2ZUhlYWRlckNsYXNzTmFtZToiaHRfX2FjdGl2ZV9oaWdobGlnaHQi''@;'; put 'put ''LGFsbG93RW1wdHk6ITAsYWxsb3dIdG1sOiExLGFsbG93SW5zZXJ0Q29sdW1uOiEwLGFsbG93SW5zZXJ0Um93OiEwLGFsbG93SW52YWxpZDohMCxhbGxvd1JlbW92ZUNvbHVtbjohMCxhbGxvd1JlbW92ZVJvdzohMCxhcmlhVGFnczohMCxhdXRvQ29sdW1uU2l6ZTp2b2lkIDAsYXV0b1Jvd1Np''@;'; put 'put ''emU6dm9pZCAwLGF1dG9XcmFwQ29sOiExLGF1dG9XcmFwUm93OiExLGJpbmRSb3dzV2l0aEhlYWRlcnM6dm9pZCAwLGNlbGw6W10sY2VsbHM6dm9pZCAwLGNoZWNrZWRUZW1wbGF0ZTp2b2lkIDAsY2xhc3NOYW1lOnZvaWQgMCxjb2xIZWFkZXJzOm51bGwsY29sbGFwc2libGVDb2x1bW5zOnZv''@;'; put 'put ''aWQgMCxjb2x1bW5IZWFkZXJIZWlnaHQ6dm9pZCAwLGNvbHVtbnM6dm9pZCAwLGNvbHVtblNvcnRpbmc6dm9pZCAwLGNvbHVtblN1bW1hcnk6dm9pZCAwLGNvbFdpZHRoczp2b2lkIDAsY29tbWVudGVkQ2VsbENsYXNzTmFtZToiaHRDb21tZW50Q2VsbCIsY29tbWVudHM6ITEsY29udGV4dE1l''@;'; put 'put ''bnU6dm9pZCAwLGNvcHlhYmxlOiEwLGNvcHlQYXN0ZTohMCxjb3JyZWN0Rm9ybWF0OiExLGN1cnJlbnRDb2xDbGFzc05hbWU6dm9pZCAwLGN1cnJlbnRIZWFkZXJDbGFzc05hbWU6Imh0X19oaWdobGlnaHQiLGN1cnJlbnRSb3dDbGFzc05hbWU6dm9pZCAwLGN1c3RvbUJvcmRlcnM6ITEsZGF0''@;'; put 'put ''YTp2b2lkIDAsZGF0YURvdE5vdGF0aW9uOiEwLGRhdGFTY2hlbWE6dm9pZCAwLGRhdGVGb3JtYXQ6IkREL01NL1lZWVkiLHRpbWVGb3JtYXQ6Img6bW06c3MgYSIsZGF0ZVBpY2tlckNvbmZpZzp2b2lkIDAsZGVmYXVsdERhdGU6dm9pZCAwLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ITEsZHJh''@;'; put 'put ''Z1RvU2Nyb2xsOiEwLGRyb3Bkb3duTWVudTp2b2lkIDAsZWRpdG9yOnZvaWQgMCxlbnRlckJlZ2luc0VkaXRpbmc6ITAsZW50ZXJNb3Zlczp7Y29sOjAscm93OjF9LGZpbGxIYW5kbGU6e2F1dG9JbnNlcnRSb3c6ITF9LGZpbHRlcjohMCxmaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlOiExLGZpbHRl''@;'; put 'put ''cnM6dm9pZCAwLGZpeGVkQ29sdW1uc0xlZnQ6MCxmaXhlZENvbHVtbnNTdGFydDowLGZpeGVkUm93c0JvdHRvbTowLGZpeGVkUm93c1RvcDowLGZvcm11bGFzOnZvaWQgMCxmcmFnbWVudFNlbGVjdGlvbjohMSxoZWlnaHQ6dm9pZCAwLGhpZGRlbkNvbHVtbnM6dm9pZCAwLGhpZGRlblJvd3M6''@;'; put 'put ''dm9pZCAwLGludmFsaWRDZWxsQ2xhc3NOYW1lOiJodEludmFsaWQiLGltZUZhc3RFZGl0OiExLGlzRW1wdHlDb2wobCl7bGV0IGMsYSxkO2ZvcihjPTAsYT10aGlzLmNvdW50Um93cygpO2M8YTtjKyspaWYoZD10aGlzLmdldERhdGFBdENlbGwoYyxsKSwhMT09PW9jKGQpKXJldHVybiExO3Jl''@;'; put 'put ''dHVybiEwfSxpc0VtcHR5Um93KGwpe2xldCBjLGEsZCxoO2ZvcihjPTAsYT10aGlzLmNvdW50Q29scygpO2M8YTtjKyspaWYoZD10aGlzLmdldERhdGFBdENlbGwobCxjKSwhMT09PW9jKGQpKXJldHVybiJvYmplY3QiPT10eXBlb2YgZCYmKGg9dGhpcy5nZXRDZWxsTWV0YShsLGMpLHNMKHRo''@;'; put 'put ''aXMuZ2V0U2NoZW1hKClbaC5wcm9wXSxkKSk7cmV0dXJuITB9LGxhYmVsOnZvaWQgMCxsYW5ndWFnZToiZW4tVVMiLGxheW91dERpcmVjdGlvbjoiaW5oZXJpdCIsbGljZW5zZUtleTp2b2lkIDAsbG9jYWxlOiJlbi1VUyIsbWFudWFsQ29sdW1uRnJlZXplOnZvaWQgMCxtYW51YWxDb2x1bW5N''@;'; put 'put ''b3ZlOnZvaWQgMCxtYW51YWxDb2x1bW5SZXNpemU6dm9pZCAwLG1hbnVhbFJvd01vdmU6dm9pZCAwLG1hbnVhbFJvd1Jlc2l6ZTp2b2lkIDAsbWF4Q29sczoxLzAsbWF4Um93czoxLzAsbWVyZ2VDZWxsczohMSxtaW5Db2xzOjAsbWluUm93czowLG1pblNwYXJlQ29sczowLG1pblNwYXJlUm93''@;'; put 'put ''czowLG11bHRpQ29sdW1uU29ydGluZzp2b2lkIDAsbmF2aWdhYmxlSGVhZGVyczohMSx0YWJOYXZpZ2F0aW9uOiEwLG5lc3RlZEhlYWRlcnM6dm9pZCAwLG5lc3RlZFJvd3M6dm9pZCAwLG5vV29yZFdyYXBDbGFzc05hbWU6Imh0Tm9XcmFwIixudW1lcmljRm9ybWF0OnZvaWQgMCxvYnNlcnZl''@;'; put 'put ''RE9NVmlzaWJpbGl0eTohMCxvdXRzaWRlQ2xpY2tEZXNlbGVjdHM6ITAscGVyc2lzdGVudFN0YXRlOnZvaWQgMCxwbGFjZWhvbGRlcjp2b2lkIDAscGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lOiJodFBsYWNlaG9sZGVyIixwcmV2ZW50T3ZlcmZsb3c6ITEscHJldmVudFdoZWVsOiExLHJlYWRP''@;'; put 'put ''bmx5OiExLHJlYWRPbmx5Q2VsbENsYXNzTmFtZToiaHREaW1tZWQiLHJlbmRlckFsbFJvd3M6ITEscmVuZGVyQWxsQ29sdW1uczohMSxyZW5kZXJlcjp2b2lkIDAscm93SGVhZGVyczp2b2lkIDAscm93SGVhZGVyV2lkdGg6dm9pZCAwLHJvd0hlaWdodHM6dm9pZCAwLHNlYXJjaDohMSxzZWxl''@;'; put 'put ''Y3Rpb25Nb2RlOiJtdWx0aXBsZSIsc2VsZWN0T3B0aW9uczp2b2lkIDAsc2tpcENvbHVtbk9uUGFzdGU6ITEsc2tpcFJvd09uUGFzdGU6ITEsc29ydEJ5UmVsZXZhbmNlOiEwLHNvdXJjZTp2b2lkIDAsc3RhcnRDb2xzOjUsc3RhcnRSb3dzOjUsc3RyZXRjaEg6Im5vbmUiLHN0cmljdDp2b2lk''@;'; put 'put ''IDAsdGFibGVDbGFzc05hbWU6dm9pZCAwLHRhYk1vdmVzOntyb3c6MCxjb2w6MX0sdGl0bGU6dm9pZCAwLHRyaW1Ecm9wZG93bjohMCx0cmltUm93czp2b2lkIDAsdHJpbVdoaXRlc3BhY2U6ITAsdHlwZToidGV4dCIsdW5jaGVja2VkVGVtcGxhdGU6dm9pZCAwLHVuZG86dm9pZCAwLHZhbGlk''@;'; put 'put ''YXRvcjp2b2lkIDAsdmlld3BvcnRDb2x1bW5SZW5kZXJpbmdPZmZzZXQ6ImF1dG8iLHZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0OiJhdXRvIix2aXNpYmxlUm93czoxMCx3aWR0aDp2b2lkIDAsd29yZFdyYXA6ITB9KTtmdW5jdGlvbiBEaGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHlL''@;'; put 'put ''ZShsKXt2YXIgYz1mdW5jdGlvbiB3S2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4g''@;'; put 'put ''ZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9P''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgU0tle2NvbnN0cnVjdG9yKGMpe0RoZSh0aGlzLCJtZXRhQ3RvciIsY2xhc3N7fSksRGhlKHRoaXMsIm1ldGEiLHZvaWQgMCks''@;'; put 'put ''dGhpcy5tZXRhPXRoaXMubWV0YUN0b3IucHJvdG90eXBlLEZjKHRoaXMubWV0YSxBaGUoKSksdGhpcy5tZXRhLmluc3RhbmNlPWN9Z2V0TWV0YUNvbnN0cnVjdG9yKCl7cmV0dXJuIHRoaXMubWV0YUN0b3J9Z2V0TWV0YSgpe3JldHVybiB0aGlzLm1ldGF9dXBkYXRlTWV0YShjKXt2YXIgYTtG''@;'; put 'put ''Yyh0aGlzLm1ldGEsYyksaU8odGhpcy5tZXRhLHsuLi5jLHR5cGU6bnVsbCE9PShhPWMudHlwZSkmJnZvaWQgMCE9PWE/YTp0aGlzLm1ldGEudHlwZX0sYyl9fWNsYXNzIFRLZXtjb25zdHJ1Y3RvcihjKXshZnVuY3Rpb24gTUtlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiB4S2UobCl7dmFy''@;'; put 'put ''IGM9ZnVuY3Rpb24gRUtlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJtZXRhIix2b2lkIDApO2NvbnN0IGE9Yy5nZXRNZXRhQ29uc3RydWN0b3IoKTt0aGlzLm1ldGE9bmV3IGF9Z2V0TWV0YSgpe3JldHVybiB0''@;'; put 'put ''aGlzLm1ldGF9dXBkYXRlTWV0YShjKXtGYyh0aGlzLm1ldGEsYyksaU8odGhpcy5tZXRhLGMsYyl9fWZ1bmN0aW9uIGxPKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBrS2UobCl7dmFyIGM9ZnVuY3Rpb24gQUtlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIg''@;'; put 'put ''YT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4i''@;'; put 'put ''KX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0''@;'; put 'put ''YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIGNPe2NvbnN0cnVjdG9yKGMpe2xPKHRoaXMsInZhbHVlRmFjdG9yeSIsdm9pZCAwKSxsTyh0aGlzLCJkYXRhIixbXSksbE8odGhpcywiaW5kZXgiLFtdKSxsTyh0aGlzLCJob2xlcyIsbmV3IFNldCksdGhpcy52YWx1ZUZhY3Rvcnk9Y31vYnRhaW4o''@;'; put 'put ''Yyl7c08oKCk9Pm9PKGMpLCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyLiIpO2NvbnN0IGE9dGhpcy5fZ2V0U3RvcmFnZUluZGV4QnlLZXkoYyk7bGV0IGQ7aWYoYT49MClkPXRoaXMuZGF0YVthXSx2b2lkIDA9PT1kJiYoZD10aGlzLnZhbHVlRmFjdG9yeShjKSx0aGlzLmRhdGFbYV09''@;'; put 'put ''ZCk7ZWxzZSBpZihkPXRoaXMudmFsdWVGYWN0b3J5KGMpLHRoaXMuaG9sZXMuc2l6ZT4wKXtjb25zdCBoPXRoaXMuaG9sZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO3RoaXMuaG9sZXMuZGVsZXRlKGgpLHRoaXMuZGF0YVtoXT1kLHRoaXMuaW5kZXhbY109aH1lbHNlIHRoaXMuZGF0YS5wdXNo''@;'; put 'put ''KGQpLHRoaXMuaW5kZXhbY109dGhpcy5kYXRhLmxlbmd0aC0xO3JldHVybiBkfWluc2VydChjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTtzTygoKT0+b08oYyl8fGFPKGMpLCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVt''@;'; put 'put ''YmVyIG9yIG51bGwvdW5kZWZpbmVkIGFyZ3VtZW50LiIpO2NvbnN0IGQ9W10saD10aGlzLmRhdGEubGVuZ3RoO2ZvcihsZXQgdj0wO3Y8YTt2KyspZC5wdXNoKGgrdiksdGhpcy5kYXRhLnB1c2godm9pZCAwKTtjb25zdCBmPWFPKGMpP3RoaXMuaW5kZXgubGVuZ3RoOmM7dGhpcy5pbmRleD1b''@;'; put 'put ''Li4udGhpcy5pbmRleC5zbGljZSgwLGYpLC4uLmQsLi4udGhpcy5pbmRleC5zbGljZShmKV19cmVtb3ZlKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO3NPKCgpPT5vTyhjKXx8YU8oYyksIkV4cGVjdGluZyBhbiB1bnNp''@;'; put 'put ''Z25lZCBudW1iZXIgb3IgbnVsbC91bmRlZmluZWQgYXJndW1lbnQuIik7Y29uc3QgZD10aGlzLmluZGV4LnNwbGljZShhTyhjKT90aGlzLmluZGV4Lmxlbmd0aC1hOmMsYSk7Zm9yKGxldCBoPTA7aDxkLmxlbmd0aDtoKyspe2NvbnN0IGY9ZFtoXTsibnVtYmVyIj09dHlwZW9mIGYmJnRoaXMu''@;'; put 'put ''aG9sZXMuYWRkKGYpfX1zaXplKCl7cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGgtdGhpcy5ob2xlcy5zaXplfXZhbHVlcygpe3JldHVybiBGaCh0aGlzLmRhdGEsKGMsYSk9PiF0aGlzLmhvbGVzLmhhcyhhKSlbU3ltYm9sLml0ZXJhdG9yXSgpfWVudHJpZXMoKXtjb25zdCBjPVtdO2ZvcihsZXQg''@;'; put 'put ''ZD0wO2Q8dGhpcy5kYXRhLmxlbmd0aDtkKyspe2NvbnN0IGg9dGhpcy5fZ2V0S2V5QnlTdG9yYWdlSW5kZXgoZCk7LTEhPT1oJiZjLnB1c2goW2gsdGhpcy5kYXRhW2RdXSl9bGV0IGE9MDtyZXR1cm57bmV4dDooKT0+e2lmKGE8Yy5sZW5ndGgpe2NvbnN0IGQ9Y1thXTtyZXR1cm4gYSs9MSx7''@;'; put 'put ''dmFsdWU6ZCxkb25lOiExfX1yZXR1cm57ZG9uZTohMH19fX1jbGVhcigpe3RoaXMuZGF0YT1bXSx0aGlzLmluZGV4PVtdLHRoaXMuaG9sZXMuY2xlYXIoKX1fZ2V0U3RvcmFnZUluZGV4QnlLZXkoYyl7cmV0dXJuIHRoaXMuaW5kZXgubGVuZ3RoPmM/dGhpcy5pbmRleFtjXTotMX1fZ2V0S2V5''@;'; put 'put ''QnlTdG9yYWdlSW5kZXgoYyl7cmV0dXJuIHRoaXMuaW5kZXguaW5kZXhPZihjKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX19ZnVuY3Rpb24gSWhlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBES2UobCl7dmFyIGM9ZnVuY3Rpb24gSUtlKGwsYyl7aWYoIm9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2''@;'; put 'put ''ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxl''@;'; put 'put ''bnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IFJLZT1bImRhdGEiLCJ3aWR0aCJdO2NsYXNzIExLZXtjb25zdHJ1Y3RvcihjKXtJaGUodGhpcywiZ2xvYmFsTWV0YSIsdm9pZCAwKSxJaGUodGhpcywibWV0YXMiLG5ldyBjTygoKT0+dGhp''@;'; put 'put ''cy5fY3JlYXRlTWV0YSgpKSksdGhpcy5nbG9iYWxNZXRhPWMsdGhpcy5tZXRhcz1uZXcgY08oKCk9PnRoaXMuX2NyZWF0ZU1ldGEoKSl9dXBkYXRlTWV0YShjLGEpe2NvbnN0IGQ9dGhpcy5nZXRNZXRhKGMpO0ZjKGQsYSksaU8oZCxhKX1jcmVhdGVDb2x1bW4oYyxhKXt0aGlzLm1ldGFzLmlu''@;'; put 'put ''c2VydChjLGEpfXJlbW92ZUNvbHVtbihjLGEpe3RoaXMubWV0YXMucmVtb3ZlKGMsYSl9Z2V0TWV0YShjKXtyZXR1cm4gdGhpcy5tZXRhcy5vYnRhaW4oYyl9Z2V0TWV0YUNvbnN0cnVjdG9yKGMpe3JldHVybiB0aGlzLm1ldGFzLm9idGFpbihjKS5jb25zdHJ1Y3Rvcn1jbGVhckNhY2hlKCl7''@;'; put 'put ''dGhpcy5tZXRhcy5jbGVhcigpfV9jcmVhdGVNZXRhKCl7cmV0dXJuIGZ1bmN0aW9uIGJLZShsKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W107ZnVuY3Rpb24gYSgpe31EMyhhLGwpO2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7''@;'; put 'put ''ZCsrKWEucHJvdG90eXBlW2NbZF1dPXZvaWQgMDtyZXR1cm4gYX0odGhpcy5nbG9iYWxNZXRhLmdldE1ldGFDb25zdHJ1Y3RvcigpLFJLZSkucHJvdG90eXBlfX1mdW5jdGlvbiBSaGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIE9LZShsKXt2YXIgYz1mdW5jdGlvbiBQS2UobCxjKXtpZigi''@;'; put 'put ''b2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0''@;'; put 'put ''aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTph''@;'; put 'put ''LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgRktle2NvbnN0cnVjdG9yKGMpe1JoZSh0aGlzLCJjb2x1bW5NZXRhIix2b2lkIDApLFJoZSh0aGlzLCJtZXRhcyIsbmV3IGNPKCgpPT50aGlzLl9jcmVhdGVSb3coKSkpLHRoaXMuY29s''@;'; put 'put ''dW1uTWV0YT1jfXVwZGF0ZU1ldGEoYyxhLGQpe2NvbnN0IGg9dGhpcy5nZXRNZXRhKGMsYSk7RmMoaCxkKSxpTyhoLGQpfWNyZWF0ZVJvdyhjLGEpe3RoaXMubWV0YXMuaW5zZXJ0KGMsYSl9Y3JlYXRlQ29sdW1uKGMsYSl7Zm9yKGxldCBkPTA7ZDx0aGlzLm1ldGFzLnNpemUoKTtkKyspdGhp''@;'; put 'put ''cy5tZXRhcy5vYnRhaW4oZCkuaW5zZXJ0KGMsYSl9cmVtb3ZlUm93KGMsYSl7dGhpcy5tZXRhcy5yZW1vdmUoYyxhKX1yZW1vdmVDb2x1bW4oYyxhKXtmb3IobGV0IGQ9MDtkPHRoaXMubWV0YXMuc2l6ZSgpO2QrKyl0aGlzLm1ldGFzLm9idGFpbihkKS5yZW1vdmUoYyxhKX1nZXRNZXRhKGMs''@;'; put 'put ''YSxkKXtjb25zdCBoPXRoaXMubWV0YXMub2J0YWluKGMpLm9idGFpbihhKTtyZXR1cm4gdm9pZCAwPT09ZD9oOmhbZF19c2V0TWV0YShjLGEsZCxoKXt2YXIgZjtjb25zdCB2PXRoaXMubWV0YXMub2J0YWluKGMpLm9idGFpbihhKTtudWxsPT09KGY9di5fYXV0b21hdGljYWxseUFzc2lnbmVk''@;'; put 'put ''TWV0YVByb3BzKXx8dm9pZCAwPT09Znx8Zi5kZWxldGUoZCksdltkXT1ofXJlbW92ZU1ldGEoYyxhLGQpe2RlbGV0ZSB0aGlzLm1ldGFzLm9idGFpbihjKS5vYnRhaW4oYSlbZF19Z2V0TWV0YXMoKXtjb25zdCBjPVtdLGE9QXJyYXkuZnJvbSh0aGlzLm1ldGFzLnZhbHVlcygpKTtmb3IobGV0''@;'; put 'put ''IGQ9MDtkPGEubGVuZ3RoO2QrKylzbyhhW2RdKSYmYy5wdXNoKC4uLmFbZF0udmFsdWVzKCkpO3JldHVybiBjfWdldE1ldGFzQXRSb3coYyl7c08oKCk9Pm9PKGMpLCJFeHBlY3RpbmcgYW4gdW5zaWduZWQgbnVtYmVyLiIpO2NvbnN0IGE9bmV3IE1hcCh0aGlzLm1ldGFzKTtyZXR1cm4gYS5o''@;'; put 'put ''YXMoYyk/QXJyYXkuZnJvbShhLmdldChjKS52YWx1ZXMoKSk6W119Y2xlYXJDYWNoZSgpe3RoaXMubWV0YXMuY2xlYXIoKX1fY3JlYXRlUm93KCl7cmV0dXJuIG5ldyBjTyhjPT50aGlzLl9jcmVhdGVNZXRhKGMpKX1fY3JlYXRlTWV0YShjKXtyZXR1cm4gbmV3KHRoaXMuY29sdW1uTWV0YS5n''@;'; put 'put ''ZXRNZXRhQ29uc3RydWN0b3IoYykpfX1jbGFzcyBMaGV7Y29uc3RydWN0b3IoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRz''@;'; put 'put ''WzJdOltdO3RoaXMuaG90PWMsdGhpcy5nbG9iYWxNZXRhPW5ldyBTS2UoYyksdGhpcy50YWJsZU1ldGE9bmV3IFRLZSh0aGlzLmdsb2JhbE1ldGEpLHRoaXMuY29sdW1uTWV0YT1uZXcgTEtlKHRoaXMuZ2xvYmFsTWV0YSksdGhpcy5jZWxsTWV0YT1uZXcgRktlKHRoaXMuY29sdW1uTWV0YSks''@;'; put 'put ''ZC5mb3JFYWNoKGg9Pm5ldyBoKHRoaXMpKSx0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YShhKX1nZXRHbG9iYWxNZXRhKCl7cmV0dXJuIHRoaXMuZ2xvYmFsTWV0YS5nZXRNZXRhKCl9dXBkYXRlR2xvYmFsTWV0YShjKXt0aGlzLmdsb2JhbE1ldGEudXBkYXRlTWV0YShjKX1nZXRUYWJsZU1l''@;'; put 'put ''dGEoKXtyZXR1cm4gdGhpcy50YWJsZU1ldGEuZ2V0TWV0YSgpfXVwZGF0ZVRhYmxlTWV0YShjKXt0aGlzLnRhYmxlTWV0YS51cGRhdGVNZXRhKGMpfWdldENvbHVtbk1ldGEoYyl7cmV0dXJuIHRoaXMuY29sdW1uTWV0YS5nZXRNZXRhKGMpfXVwZGF0ZUNvbHVtbk1ldGEoYyxhKXt0aGlzLmNv''@;'; put 'put ''bHVtbk1ldGEudXBkYXRlTWV0YShjLGEpfWdldENlbGxNZXRhKGMsYSxkKXtsZXR7dmlzdWFsUm93OmgsdmlzdWFsQ29sdW1uOmZ9PWQ7Y29uc3Qgdj10aGlzLmNlbGxNZXRhLmdldE1ldGEoYyxhKTtyZXR1cm4gdi52aXN1YWxSb3c9aCx2LnZpc3VhbENvbD1mLHYucm93PWMsdi5jb2w9YSx0''@;'; put 'put ''aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyR2V0Q2VsbE1ldGEiLHYpLHZ9Z2V0Q2VsbE1ldGFLZXlWYWx1ZShjLGEsZCl7aWYoInN0cmluZyIhPXR5cGVvZiBkKXRocm93IG5ldyBFcnJvcigiVGhlIHBhc3NlZCBjZWxsIG1ldGEgb2JqZWN0IGtleSBpcyBub3QgYSBzdHJpbmciKTtyZXR1cm4g''@;'; put 'put ''dGhpcy5jZWxsTWV0YS5nZXRNZXRhKGMsYSxkKX1zZXRDZWxsTWV0YShjLGEsZCxoKXt0aGlzLmNlbGxNZXRhLnNldE1ldGEoYyxhLGQsaCl9dXBkYXRlQ2VsbE1ldGEoYyxhLGQpe3RoaXMuY2VsbE1ldGEudXBkYXRlTWV0YShjLGEsZCl9cmVtb3ZlQ2VsbE1ldGEoYyxhLGQpe3RoaXMuY2Vs''@;'; put 'put ''bE1ldGEucmVtb3ZlTWV0YShjLGEsZCl9Z2V0Q2VsbHNNZXRhKCl7cmV0dXJuIHRoaXMuY2VsbE1ldGEuZ2V0TWV0YXMoKX1nZXRDZWxsc01ldGFBdFJvdyhjKXtyZXR1cm4gdGhpcy5jZWxsTWV0YS5nZXRNZXRhc0F0Um93KGMpfWNyZWF0ZVJvdyhjKXt0aGlzLmNlbGxNZXRhLmNyZWF0ZVJv''@;'; put 'put ''dyhjLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxKX1yZW1vdmVSb3coYyl7dGhpcy5jZWxsTWV0YS5yZW1vdmVSb3coYyxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSl9Y3JlYXRl''@;'; put 'put ''Q29sdW1uKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxO3RoaXMuY2VsbE1ldGEuY3JlYXRlQ29sdW1uKGMsYSksdGhpcy5jb2x1bW5NZXRhLmNyZWF0ZUNvbHVtbihjLGEpfXJlbW92ZUNvbHVtbihjKXtsZXQgYT1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTt0aGlzLmNlbGxNZXRhLnJlbW92ZUNvbHVtbihjLGEpLHRoaXMuY29sdW1uTWV0YS5yZW1vdmVDb2x1bW4oYyxhKX1jbGVhckNlbGxzQ2FjaGUoKXt0aGlzLmNlbGxNZXRhLmNsZWFyQ2FjaGUoKX1j''@;'; put 'put ''bGVhckNhY2hlKCl7dGhpcy5jZWxsTWV0YS5jbGVhckNhY2hlKCksdGhpcy5jb2x1bW5NZXRhLmNsZWFyQ2FjaGUoKX19ZnVuY3Rpb24gT2hlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBOS2UobCl7dmFyIGM9ZnVuY3Rpb24gSEtlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbCly''@;'; put 'put ''ZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1p''@;'; put 'put ''dGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfXJsKExoZSxVMSk7Y2xhc3MgVktle2NvbnN0cnVjdG9yKGMpe09oZSh0aGlzLCJtZXRhTWFuYWdlciIsdm9pZCAwKSxPaGUodGhpcywibWV0YVN5bmNNZW1vIixuZXcgTWFwKSx0aGlzLm1ldGFNYW5hZ2VyPWMsYy5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImFmdGVyR2V0Q2VsbE1ldGEiLGE9PnRoaXMuZXh0ZW5kQ2VsbE1ldGEoYSkpLGFvLmdldFNpbmdsZXRvbigpLmFkZCgiYmVmb3JlUmVuZGVyIixhPT57YSYmdGhpcy5tZXRhU3luY01lbW8uY2xlYXIoKX0sdGhpcy5tZXRhTWFuYWdlci5ob3QpfWV4dGVuZENlbGxNZXRhKGMpe3ZhciBhO2Nv''@;'; put 'put ''bnN0e3JvdzpkLGNvbDpofT1jO2lmKG51bGwhPT0oYT10aGlzLm1ldGFTeW5jTWVtby5nZXQoZCkpJiZ2b2lkIDAhPT1hJiZhLmhhcyhoKSlyZXR1cm47Y29uc3R7dmlzdWFsUm93OmYsdmlzdWFsQ29sOnZ9PWMsUz10aGlzLm1ldGFNYW5hZ2VyLmhvdCxWPVMuY29sVG9Qcm9wKHYpO2MucHJv''@;'; put 'put ''cD1WLFMucnVuSG9va3MoImJlZm9yZUdldENlbGxNZXRhIixmLHYsYyk7Y29uc3QgUT1ZbChjLCJ0eXBlIik/Yy50eXBlOm51bGw7bGV0IGRlPWhsKGMuY2VsbHMpP2MuY2VsbHMoZCxoLFYpOm51bGw7aWYoUSlpZihkZSl7dmFyIHBlO2RlLnR5cGU9bnVsbCE9PShwZT1kZS50eXBlKSYmdm9p''@;'; put 'put ''ZCAwIT09cGU/cGU6UX1lbHNlIGRlPXt0eXBlOlF9O2RlJiZ0aGlzLm1ldGFNYW5hZ2VyLnVwZGF0ZUNlbGxNZXRhKGQsaCxkZSksUy5ydW5Ib29rcygiYWZ0ZXJHZXRDZWxsTWV0YSIsZix2LGMpLHRoaXMubWV0YVN5bmNNZW1vLmhhcyhkKXx8dGhpcy5tZXRhU3luY01lbW8uc2V0KGQsbmV3''@;'; put 'put ''IFNldCksdGhpcy5tZXRhU3luY01lbW8uZ2V0KGQpLmFkZChoKX19ZnVuY3Rpb24gZ3EobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHpLZShsKXt2YXIgYz1mdW5jdGlvbiBVS2UobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0''@;'; put 'put ''aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09''@;'; put 'put ''PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9''@;'; put 'put ''dmFyIFBoZT1uZXcgV2Vha01hcDtjbGFzcyBXS2V7Y29uc3RydWN0b3IoYyl7Z3EodGhpcywibWV0YU1hbmFnZXIiLHZvaWQgMCksZ3EodGhpcywidXNhZ2VUcmFja2VyIixuZXcgU2V0KSxncSh0aGlzLCJwcm9wRGVzY3JpcHRvcnMiLG5ldyBNYXAoW1siYXJpYVRhZ3MiLHtpbml0T25seToh''@;'; put 'put ''MH1dLFsiZml4ZWRDb2x1bW5zTGVmdCIse3RhcmdldDoiZml4ZWRDb2x1bW5zU3RhcnQiLG9uQ2hhbmdlKGEpe2lmKHRoaXMubWV0YU1hbmFnZXIuaG90LmlzUnRsKCkmJiJmaXhlZENvbHVtbnNMZWZ0Ij09PWEpdGhyb3cgbmV3IEVycm9yKCJUaGUgYGZpeGVkQ29sdW1uc0xlZnRgIGlzIG5v''@;'; put 'put ''dCBzdXBwb3J0ZWQgZm9yIFJUTC4gUGxlYXNlIHVzZSBvcHRpb24gYGZpeGVkQ29sdW1uc1N0YXJ0YC4iKTtpZih0aGlzLnVzYWdlVHJhY2tlci5oYXMoImZpeGVkQ29sdW1uc0xlZnQiKSYmdGhpcy51c2FnZVRyYWNrZXIuaGFzKCJmaXhlZENvbHVtbnNTdGFydCIpKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiVGhlIGBmaXhlZENvbHVtbnNMZWZ0YCBhbmQgYGZpeGVkQ29sdW1uc1N0YXJ0YCBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2Ugb25seSB0aGUgb3B0aW9uIGBmaXhlZENvbHVtbnNTdGFydGAuIil9fV0sWyJsYXlvdXREaXJlY3Rpb24iLHtpbml0T25seTohMH1d''@;'; put 'put ''LFsicmVuZGVyQWxsQ29sdW1ucyIse2luaXRPbmx5OiEwfV0sWyJyZW5kZXJBbGxSb3dzIix7aW5pdE9ubHk6ITB9XV0pKSxmdW5jdGlvbiBCS2UobCxjLGEpeyhmdW5jdGlvbiBqS2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUg''@;'; put 'put ''c2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfSh0aGlzLFBoZSwoYSxkLGgpPT57aWYoIWgpdGhyb3cgbmV3IEVycm9yKGBUaGUgXGAke2F9XGAgb3B0aW9uIGNhbiBub3QgYmUgdXBkYXRlZCBhZnRlciB0aGUgSGFuZHNvbnRhYmxl''@;'; put 'put ''IGlzIGluaXRpYWxpemVkLmApfSksdGhpcy5tZXRhTWFuYWdlcj1jLHRoaXMuZXh0ZW5kTWV0YVByb3BzKCl9ZXh0ZW5kTWV0YVByb3BzKCl7dGhpcy5wcm9wRGVzY3JpcHRvcnMuZm9yRWFjaCgoYyxhKT0+e2NvbnN0e2luaXRPbmx5OmQsdGFyZ2V0Omgsb25DaGFuZ2U6Zn09Yyx2PSJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgaCxTPXY/aDphLFY9YF8ke1N9YDt0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVtWXT10aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YVtTXSxmPyh0aGlzLmluc3RhbGxQcm9wV2F0Y2hlcihhLFYsZiksdiYmdGhpcy5pbnN0YWxsUHJvcFdhdGNoZXIo''@;'; put 'put ''aCxWLGYpKTpkJiYodGhpcy5pbnN0YWxsUHJvcFdhdGNoZXIoYSxWLGZ1bmN0aW9uIFpLZShsLGMpe3JldHVybiBsLmdldChmdW5jdGlvbiBZS2UobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfShsLGMpKX0oUGhlLHRoaXMpKSx0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YS5faW5pdE9ubHlTZXR0aW5nc3x8KHRoaXMubWV0YU1hbmFnZXIuZ2xvYmFsTWV0YS5t''@;'; put 'put ''ZXRhLl9pbml0T25seVNldHRpbmdzPVtdKSx0aGlzLm1ldGFNYW5hZ2VyLmdsb2JhbE1ldGEubWV0YS5faW5pdE9ubHlTZXR0aW5ncy5wdXNoKGEpKX0pfWluc3RhbGxQcm9wV2F0Y2hlcihjLGEsZCl7Y29uc3QgaD10aGlzO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm1ldGFNYW5hZ2Vy''@;'; put 'put ''Lmdsb2JhbE1ldGEubWV0YSxjLHtnZXQoKXtyZXR1cm4gdGhpc1thXX0sc2V0KGYpe2NvbnN0IHY9IWgudXNhZ2VUcmFja2VyLmhhcyhjKTtoLnVzYWdlVHJhY2tlci5hZGQoYyksZC5jYWxsKGgsYyxmLHYpLHRoaXNbYV09Zn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19Y29u''@;'; put 'put ''c3QgRmhlPS9eKFxyXG58XG5ccnxccnxcbikvLEdLZT0vXlteXHRcclxuXSsvLE5oZT0vXlx0LztmdW5jdGlvbiBSeChsKXtsZXQgYyxhLGQsaCx2LGY9IiI7Zm9yKGM9MCxhPWwubGVuZ3RoO2M8YTtjKz0xKXtmb3IoaD1sW2NdLmxlbmd0aCxkPTA7ZDxoO2QrPTEpZD4wJiYoZis9Ilx0Iiks''@;'; put 'put ''dj1sW2NdW2RdLCJzdHJpbmciPT10eXBlb2Ygdj92LmluZGV4T2YoIlxuIik+LTE/Zis9YCIke3YucmVwbGFjZSgvIi9nLCciIicpfSJgOmYrPXY6Zis9bnVsbD09dj8iIjp2O2MhPT1hLTEmJihmKz0iXG4iKX1yZXR1cm4gZn1mdW5jdGlvbiBvNyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24g''@;'; put 'put ''cUtlKGwpe3ZhciBjPWZ1bmN0aW9uIEtLZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVy''@;'; put 'put ''biBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBs''@;'; put 'put ''P09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyB3YntzdGF0aWMgZ2V0IERFU1RJTkFUSU9OX1JFTkRFUkVSKCl7cmV0dXJuIDF9c3RhdGljIGdldCBERVNUSU5BVElPTl9D''@;'; put 'put ''TElQQk9BUkRfR0VORVJBVE9SKCl7cmV0dXJuIDJ9Y29uc3RydWN0b3IoYyxhLGQpe283KHRoaXMsImhvdCIsdm9pZCAwKSxvNyh0aGlzLCJtZXRhTWFuYWdlciIsdm9pZCAwKSxvNyh0aGlzLCJ0YWJsZU1ldGEiLHZvaWQgMCksbzcodGhpcywiZGF0YVNvdXJjZSIsdm9pZCAwKSxvNyh0aGlz''@;'; put 'put ''LCJkdWNrU2NoZW1hIix2b2lkIDApLG83KHRoaXMsImNvbFRvUHJvcENhY2hlIix2b2lkIDApLG83KHRoaXMsInByb3BUb0NvbENhY2hlIix2b2lkIDApLHRoaXMuaG90PWMsdGhpcy5tZXRhTWFuYWdlcj1kLHRoaXMudGFibGVNZXRhPWQuZ2V0VGFibGVNZXRhKCksdGhpcy5kYXRhU291cmNl''@;'; put 'put ''PWEsdGhpcy5kdWNrU2NoZW1hPXRoaXMuY3JlYXRlRHVja1NjaGVtYSgpLHRoaXMuY3JlYXRlTWFwKCl9Y3JlYXRlTWFwKCl7Y29uc3QgYz10aGlzLmdldFNjaGVtYSgpO2lmKHR5cGVvZiBjPiJ1Iil0aHJvdyBuZXcgRXJyb3IoInRyeWluZyB0byBjcmVhdGUgYGNvbHVtbnNgIGRlZmluaXRp''@;'; put 'put ''b24gYnV0IHlvdSBkaWRuJ3QgcHJvdmlkZSBgc2NoZW1hYCBub3IgYGRhdGFgIik7Y29uc3QgYT10aGlzLnRhYmxlTWV0YS5jb2x1bW5zO2xldCBkO2lmKHRoaXMuY29sVG9Qcm9wQ2FjaGU9W10sdGhpcy5wcm9wVG9Db2xDYWNoZT1uZXcgTWFwLGEpe2xldCBoPTAsZj0wLHY9ITE7aWYoImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIGEpe2NvbnN0IFM9bEwoYyk7aD1TPjA/Uzp0aGlzLmNvdW50Rmlyc3RSb3dLZXlzKCksdj0hMH1lbHNlIGg9TWF0aC5taW4odGhpcy50YWJsZU1ldGEubWF4Q29scyxhLmxlbmd0aCk7Zm9yKGQ9MDtkPGg7ZCsrKXtjb25zdCBTPXY/YShkKTphW2RdO2lmKF9zKFMp''@;'; put 'put ''KXtpZih0eXBlb2YgUy5kYXRhPCJ1Iil7Y29uc3QgVj12P2Y6ZDt0aGlzLmNvbFRvUHJvcENhY2hlW1ZdPVMuZGF0YSx0aGlzLnByb3BUb0NvbENhY2hlLnNldChTLmRhdGEsVil9Zis9MX19fWVsc2UgdGhpcy5yZWN1cnNpdmVEdWNrQ29sdW1ucyhjKX1jb3VudEZpcnN0Um93S2V5cygpe3Jl''@;'; put 'put ''dHVybiBTRyh0aGlzLmRhdGFTb3VyY2UpfXJlY3Vyc2l2ZUR1Y2tDb2x1bW5zKGMsYSxkKXtsZXQgdixoPWEsZj1kO3JldHVybiB0eXBlb2YgaD4idSImJihoPTAsZj0iIiksIm9iamVjdCI9PXR5cGVvZiBjJiYhQXJyYXkuaXNBcnJheShjKSYmQ3MoYywoUyxWKT0+e251bGw9PT1TPyh2PWYr''@;'; put 'put ''Vix0aGlzLmNvbFRvUHJvcENhY2hlLnB1c2godiksdGhpcy5wcm9wVG9Db2xDYWNoZS5zZXQodixoKSxoKz0xKTpoPXRoaXMucmVjdXJzaXZlRHVja0NvbHVtbnMoUyxoLGAke1Z9LmApfSksaH1jb2xUb1Byb3AoYyl7aWYoITE9PT1OdW1iZXIuaXNJbnRlZ2VyKGMpKXJldHVybiBjO2NvbnN0''@;'; put 'put ''IGE9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKTtyZXR1cm4gbnVsbD09PWE/Yzp0aGlzLmNvbFRvUHJvcENhY2hlJiZzbyh0aGlzLmNvbFRvUHJvcENhY2hlW2FdKT90aGlzLmNvbFRvUHJvcENhY2hlW2FdOmF9cHJvcFRvQ29sKGMpe2NvbnN0IGE9dGhpcy5wcm9wVG9Db2xDYWNoZS5n''@;'; put 'put ''ZXQoYyk7aWYoc28oYSkpcmV0dXJuIHRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGEpO2NvbnN0IGQ9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oYyk7cmV0dXJuIG51bGw9PT1kP2M6ZH1nZXRTY2hlbWEoKXtjb25zdCBjPXRoaXMudGFibGVNZXRhLmRhdGFTY2hlbWE7cmV0dXJuIGM/ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIGM/YygpOmM6dGhpcy5kdWNrU2NoZW1hfWNyZWF0ZUR1Y2tTY2hlbWEoKXtyZXR1cm4gdGhpcy5kYXRhU291cmNlJiZ0aGlzLmRhdGFTb3VyY2VbMF0/aWIodGhpcy5kYXRhU291cmNlWzBdKTp7fX1yZWZyZXNoRHVja1NjaGVtYSgpe3RoaXMuZHVja1NjaGVtYT10aGlz''@;'; put 'put ''LmNyZWF0ZUR1Y2tTY2hlbWEoKX1jcmVhdGVSb3coYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEse3NvdXJjZTpkLG1vZGU6aD0iYWJvdmUifT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9h''@;'; put 'put ''cmd1bWVudHNbMl06e307Y29uc3QgZj10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtsZXQgdj1mLFM9MCxWPWM7aWYoKCJudW1iZXIiIT10eXBlb2YgVnx8Vj49ZikmJihWPWYpLFY8dGhpcy5ob3QuY291bnRSb3dzKCkmJih2PXRoaXMuaG90LnRvUGh5c2ljYWxSb3coVikpLCExPT09dGhp''@;'; put 'put ''cy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsVixhLGQpfHxudWxsPT09dilyZXR1cm57ZGVsdGE6MH07Y29uc3QgZGU9dGhpcy50YWJsZU1ldGEubWF4Um93cyxwZT10aGlzLmdldFNjaGVtYSgpLmxlbmd0aCxDZT1bXTtmb3IoO1M8YSYmZitTPGRlOyl7bGV0IFllPW51bGw7ImFy''@;'; put 'put ''cmF5Ij09PXRoaXMuaG90LmRhdGFUeXBlP3RoaXMudGFibGVNZXRhLmRhdGFTY2hlbWE/WWU9UjAodGhpcy5nZXRTY2hlbWEoKSk6KFllPVtdLGdvKHBlLTEsKCk9PlllLnB1c2gobnVsbCkpKToiZnVuY3Rpb24iPT09dGhpcy5ob3QuZGF0YVR5cGU/WWU9dGhpcy50YWJsZU1ldGEuZGF0YVNj''@;'; put 'put ''aGVtYShWK1MpOihZZT17fSxueChZZSx0aGlzLmdldFNjaGVtYSgpKSksQ2UucHVzaChZZSksUys9MX10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5pbnNlcnRJbmRleGVzKFYsUyksImJlbG93Ij09PWgmJih2PU1hdGgubWluKHYrMSxmKSksdGhpcy5zcGxpY2VEYXRhKHYsMCxDZSk7Y29uc3Qg''@;'; put 'put ''T2U9dGhpcy5ob3QudG9WaXN1YWxSb3codik7cmV0dXJuIHRoaXMuaG90LmNvdW50U291cmNlUm93cygpPT09Q2UubGVuZ3RoJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5ob3QuZ2V0SW5pdGlhbENvbHVtbkNvdW50KCkpLFM+MCYmKG51bGw9PWM/dGhp''@;'; put 'put ''cy5tZXRhTWFuYWdlci5jcmVhdGVSb3cobnVsbCxTKToiYXV0byIhPT1kJiZ0aGlzLm1ldGFNYW5hZ2VyLmNyZWF0ZVJvdyh2LGEpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLE9lLFMsZCksdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLHtkZWx0YTpTLHN0YXJ0UGh5''@;'; put 'put ''c2ljYWxJbmRleDp2fX1jcmVhdGVDb2woYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEse3NvdXJjZTpkLG1vZGU6aD0ic3RhcnQifT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVu''@;'; put 'put ''dHNbMl06e307aWYoIXRoaXMuaG90LmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNyZWF0ZSBuZXcgY29sdW1uLiBXaGVuIGRhdGEgc291cmNlIGluIGFuIG9iamVjdCwgeW91IGNhbiBvbmx5IGhhdmUgYXMgbXVjaCBjb2x1bW5zIGFzIGRl''@;'; put 'put ''ZmluZWQgaW4gZmlyc3QgZGF0YSByb3csIGRhdGEgc2NoZW1hIG9yIGluIHRoZSAnY29sdW1ucycgc2V0dGluZy5JZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGFkZCBuZXcgY29sdW1ucywgeW91IGhhdmUgdG8gdXNlIGFycmF5IGRhdGFzb3VyY2UuIik7Y29uc3QgZj10aGlzLmRhdGFTb3Vy''@;'; put 'put ''Y2Usdj10aGlzLnRhYmxlTWV0YS5tYXhDb2xzLFM9dGhpcy5ob3QuY291bnRTb3VyY2VDb2xzKCk7bGV0IFY9YztpZigoIm51bWJlciIhPXR5cGVvZiBWfHxWPj1TKSYmKFY9UyksITE9PT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ3JlYXRlQ29sIixWLGEsZCkpcmV0dXJue2RlbHRhOjB9''@;'; put 'put ''O2xldCBkZT1TO1Y8dGhpcy5ob3QuY291bnRDb2xzKCkmJihkZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKFYpKTtjb25zdCBwZT10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtsZXQgQ2U9dGhpcy5ob3QuY291bnRDb2xzKCksT2U9MCxZZT1kZTsiZW5kIj09PWgmJihZZT1NYXRoLm1p''@;'; put 'put ''bihZZSsxLFMpKTtjb25zdCBldD1ZZTtmb3IoO09lPGEmJkNlPHY7KXtpZigibnVtYmVyIiE9dHlwZW9mIFZ8fFY+PUNlKWlmKHBlPjApZm9yKGxldCBodD0wO2h0PHBlO2h0Kz0xKXR5cGVvZiBmW2h0XT4idSImJihmW2h0XT1bXSksZltodF0ucHVzaChudWxsKTtlbHNlIGYucHVzaChbbnVs''@;'; put 'put ''bF0pO2Vsc2UgZm9yKGxldCBodD0wO2h0PHBlO2h0KyspZltodF0uc3BsaWNlKFllLDAsbnVsbCk7T2UrPTEsWWUrPTEsQ2UrPTF9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuaW5zZXJ0SW5kZXhlcyhWLE9lKSxPZT4wJiYobnVsbD09Yz90aGlzLm1ldGFNYW5hZ2VyLmNyZWF0ZUNvbHVt''@;'; put 'put ''bihudWxsLE9lKToiYXV0byIhPT1kJiZ0aGlzLm1ldGFNYW5hZ2VyLmNyZWF0ZUNvbHVtbihldCxhKSk7Y29uc3QgZHQ9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZXQpO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVDb2wiLGR0LE9lLGQpLHRoaXMuaG90LmZvcmNlRnVs''@;'; put 'put ''bFJlbmRlcj0hMCx0aGlzLnJlZnJlc2hEdWNrU2NoZW1hKCkse2RlbHRhOk9lLHN0YXJ0UGh5c2ljYWxJbmRleDpldH19cmVtb3ZlUm93KGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToxLGQ9YXJndW1lbnRzLmxlbmd0aD4y''@;'; put 'put ''P2FyZ3VtZW50c1syXTp2b2lkIDAsaD1OdW1iZXIuaXNJbnRlZ2VyKGMpP2M6LWE7Y29uc3QgZj10aGlzLnZpc3VhbFJvd3NUb1BoeXNpY2FsKGgsYSksdj10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtpZihoPSh2K2gpJXYsITE9PT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUmVtb3Zl''@;'; put 'put ''Um93IixoLGYubGVuZ3RoLGYsZCkpcmV0dXJuITE7Y29uc3QgVj1mLmxlbmd0aDtpZih0aGlzLmZpbHRlckRhdGEoaCxWLGYpLGg8dGhpcy5ob3QuY291bnRSb3dzKCkpe3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlbW92ZUluZGV4ZXMoZik7Y29uc3QgZGU9c28odGhpcy50YWJsZU1ldGEu''@;'; put 'put ''Y29sdW1ucyl8fHNvKHRoaXMudGFibGVNZXRhLmRhdGFTY2hlbWEpOzA9PT10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpJiYhMT09PWRlJiZ0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoW10pfXJldHVybiBm''@;'; put 'put ''LnNsaWNlKDApLnNvcnQoKGRlLHBlKT0+cGUtZGUpLmZvckVhY2goZGU9Pnt0aGlzLm1ldGFNYW5hZ2VyLnJlbW92ZVJvdyhkZSwxKX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlbW92ZVJvdyIsaCxWLGYsZCksdGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLCEwfXJlbW92ZUNvbChj''@;'; put 'put ''KXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MSxkPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJvYmplY3QiPT09dGhpcy5ob3QuZGF0YVR5cGV8fHRoaXMudGFibGVNZXRhLmNvbHVtbnMpdGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJjYW5ub3QgcmVtb3ZlIGNvbHVtbiB3aXRoIG9iamVjdCBkYXRhIHNvdXJjZSBvciBjb2x1bW5zIG9wdGlvbiBzcGVjaWZpZWQiKTtsZXQgaD0ibnVtYmVyIiE9dHlwZW9mIGM/LWE6YztoPSh0aGlzLmhvdC5jb3VudENvbHMoKStoKSV0aGlzLmhvdC5jb3VudENvbHMo''@;'; put 'put ''KTtjb25zdCBmPXRoaXMudmlzdWFsQ29sdW1uc1RvUGh5c2ljYWwoaCxhKSx2PWYuc2xpY2UoMCkuc29ydCgocGUsQ2UpPT5DZS1wZSk7aWYoITE9PT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUmVtb3ZlQ29sIixoLGEsZixkKSlyZXR1cm4hMTtsZXQgVj0hMDtjb25zdCBRPXYubGVuZ3Ro''@;'; put 'put ''LGRlPXRoaXMuZGF0YVNvdXJjZTtmb3IobGV0IHBlPTA7cGU8UTtwZSsrKVYmJmZbMF0hPT1mW3BlXS1wZSYmKFY9ITEpO2lmKFYpZm9yKGxldCBwZT0wLENlPXRoaXMuaG90LmNvdW50U291cmNlUm93cygpO3BlPENlO3BlKyspZGVbcGVdLnNwbGljZShmWzBdLGEpLDA9PT1wZSYmdGhpcy5t''@;'; put 'put ''ZXRhTWFuYWdlci5yZW1vdmVDb2x1bW4oZlswXSxhKTtlbHNlIGZvcihsZXQgcGU9MCxDZT10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtwZTxDZTtwZSsrKWZvcihsZXQgT2U9MDtPZTxRO09lKyspZGVbcGVdLnNwbGljZSh2W09lXSwxKSwwPT09cGUmJnRoaXMubWV0YU1hbmFnZXIucmVt''@;'; put 'put ''b3ZlQ29sdW1uKHZbT2VdLDEpO3JldHVybiBoPHRoaXMuaG90LmNvdW50Q29scygpJiYodGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVtb3ZlSW5kZXhlcyhmKSwwPT09dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSYmdGhpcy5ob3Qu''@;'; put 'put ''cm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKFtdKSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUmVtb3ZlQ29sIixoLGEsZixkKSx0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5yZWZyZXNoRHVja1NjaGVtYSgpLCEwfXNwbGljZUNvbChjLGEsZCl7Y29uc3QgaD10''@;'; put 'put ''aGlzLmhvdC5nZXREYXRhQXRDb2woYyksZj1oLnNsaWNlKGEsYStkKSx2PWguc2xpY2UoYStkKTtmb3IodmFyIFM9YXJndW1lbnRzLmxlbmd0aCxWPW5ldyBBcnJheShTPjM/Uy0zOjApLFE9MztRPFM7USsrKVZbUS0zXT1hcmd1bWVudHNbUV07SlkoVix2KTtsZXQgZGU9MDtmb3IoO2RlPGQ7''@;'; put 'put ''KVYucHVzaChudWxsKSxkZSs9MTtyZXR1cm4gSjBlKFYpLHRoaXMuaG90LnBvcHVsYXRlRnJvbUFycmF5KGEsYyxWLG51bGwsbnVsbCwic3BsaWNlQ29sIiksZn1zcGxpY2VSb3coYyxhLGQpe2NvbnN0IGg9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Um93KGMpLGY9aC5zbGljZShhLGErZCks''@;'; put 'put ''dj1oLnNsaWNlKGErZCk7Zm9yKHZhciBTPWFyZ3VtZW50cy5sZW5ndGgsVj1uZXcgQXJyYXkoUz4zP1MtMzowKSxRPTM7UTxTO1ErKylWW1EtM109YXJndW1lbnRzW1FdO0pZKFYsdik7bGV0IGRlPTA7Zm9yKDtkZTxkOylWLnB1c2gobnVsbCksZGUrPTE7cmV0dXJuIHRoaXMuaG90LnBvcHVs''@;'; put 'put ''YXRlRnJvbUFycmF5KGMsYSxbVl0sbnVsbCxudWxsLCJzcGxpY2VSb3ciKSxmfXNwbGljZURhdGEoYyxhLGQpe2lmKCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZURhdGFTcGxpY2UiLGMsYSxkKSl7Y29uc3QgZj1bLi4udGhpcy5kYXRhU291cmNlLnNsaWNlKDAsYyksLi4uZCwuLi50''@;'; put 'put ''aGlzLmRhdGFTb3VyY2Uuc2xpY2UoYyldO3RoaXMuZGF0YVNvdXJjZS5sZW5ndGg9MCxmLmZvckVhY2godj0+dGhpcy5kYXRhU291cmNlLnB1c2godikpfX1maWx0ZXJEYXRhKGMsYSxkKXtsZXQgaD10aGlzLmhvdC5ydW5Ib29rcygiZmlsdGVyRGF0YSIsYyxhLGQpOyExPT09QXJyYXkuaXNB''@;'; put 'put ''cnJheShoKSYmKGg9dGhpcy5kYXRhU291cmNlLmZpbHRlcigoZix2KT0+LTE9PT1kLmluZGV4T2YodikpKSx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoPTAsQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5kYXRhU291cmNlLGgpfWdldChjLGEpe2NvbnN0IGQ9dGhpcy5ob3QudG9QaHlz''@;'; put 'put ''aWNhbFJvdyhjKTtsZXQgaD10aGlzLmRhdGFTb3VyY2VbZF07Y29uc3QgZj10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Um93RGF0YSIsZCk7aD1pc05hTihmKT9mOmg7Y29uc3R7ZGF0YURvdE5vdGF0aW9uOnZ9PXRoaXMuaG90LmdldFNldHRpbmdzKCk7bGV0IFM9bnVsbDtpZihoJiZoLmhh''@;'; put 'put ''c093blByb3BlcnR5JiZZbChoLGEpKVM9aFthXTtlbHNlIGlmKHYmJiJzdHJpbmciPT10eXBlb2YgYSYmYS5pbmRleE9mKCIuIik+LTEpe2xldCBWPWg7aWYoIVYpcmV0dXJuIG51bGw7Y29uc3QgUT1hLnNwbGl0KCIuIik7Zm9yKGxldCBkZT0wLHBlPVEubGVuZ3RoO2RlPHBlO2RlKyspaWYo''@;'; put 'put ''Vj1WW1FbZGVdXSx0eXBlb2YgVj4idSIpcmV0dXJuIG51bGw7Uz1WfWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgYSYmKFM9YSh0aGlzLmRhdGFTb3VyY2Uuc2xpY2UoZCxkKzEpWzBdKSk7aWYodGhpcy5ob3QuaGFzSG9vaygibW9kaWZ5RGF0YSIpKXtjb25zdCBWPVZoKFMpO3RoaXMuaG90LnJ1''@;'; put 'put ''bkhvb2tzKCJtb2RpZnlEYXRhIixkLHRoaXMucHJvcFRvQ29sKGEpLFYsImdldCIpLFYuaXNUb3VjaGVkKCkmJihTPVYudmFsdWUpfXJldHVybiBTfWdldENvcHlhYmxlKGMsYSl7cmV0dXJuIHRoaXMuaG90LmdldENlbGxNZXRhKGMsdGhpcy5wcm9wVG9Db2woYSkpLmNvcHlhYmxlP3RoaXMu''@;'; put 'put ''Z2V0KGMsYSk6IiJ9c2V0KGMsYSxkKXtjb25zdCBoPXRoaXMuaG90LnRvUGh5c2ljYWxSb3coYyk7bGV0IGY9ZCx2PXRoaXMuZGF0YVNvdXJjZVtoXTtjb25zdCBTPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlSb3dEYXRhIixoKTtpZih2PWlzTmFOKFMpP1M6dix0aGlzLmhvdC5oYXNIb29r''@;'; put 'put ''KCJtb2RpZnlEYXRhIikpe2NvbnN0IFE9VmgoZik7dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeURhdGEiLGgsdGhpcy5wcm9wVG9Db2woYSksUSwic2V0IiksUS5pc1RvdWNoZWQoKSYmKGY9US52YWx1ZSl9Y29uc3R7ZGF0YURvdE5vdGF0aW9uOlZ9PXRoaXMuaG90LmdldFNldHRpbmdzKCk7''@;'; put 'put ''aWYodiYmdi5oYXNPd25Qcm9wZXJ0eSYmWWwodixhKSl2W2FdPWY7ZWxzZSBpZihWJiYic3RyaW5nIj09dHlwZW9mIGEmJmEuaW5kZXhPZigiLiIpPi0xKXtsZXQgcGUsUT12LGRlPTA7Y29uc3QgQ2U9YS5zcGxpdCgiLiIpO2ZvcihkZT0wLHBlPUNlLmxlbmd0aC0xO2RlPHBlO2RlKyspdHlw''@;'; put 'put ''ZW9mIFFbQ2VbZGVdXT4idSImJihRW0NlW2RlXV09e30pLFE9UVtDZVtkZV1dO1FbQ2VbZGVdXT1mfWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgYT9hKHRoaXMuZGF0YVNvdXJjZS5zbGljZShoLGgrMSlbMF0sZik6dlthXT1mfXZpc3VhbFJvd3NUb1BoeXNpY2FsKGMsYSl7Y29uc3QgZD10aGlz''@;'; put 'put ''LmhvdC5jb3VudFNvdXJjZVJvd3MoKSxoPVtdO2xldCBTLGY9KGQrYyklZCx2PWE7Zm9yKDtmPGQmJnY7KVM9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhmKSxoLnB1c2goUyksdi09MSxmKz0xO3JldHVybiBofXZpc3VhbENvbHVtbnNUb1BoeXNpY2FsKGMsYSl7Y29uc3QgZD10aGlzLmhvdC5j''@;'; put 'put ''b3VudENvbHMoKSxoPVtdO2xldCBmPShkK2MpJWQsdj1hO2Zvcig7ZjxkJiZ2Oyl7Y29uc3QgUz10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGYpO2gucHVzaChTKSx2LT0xLGYrPTF9cmV0dXJuIGh9Y2xlYXIoKXtmb3IobGV0IGM9MDtjPHRoaXMuaG90LmNvdW50U291cmNlUm93cygpO2Mr''@;'; put 'put ''Kylmb3IobGV0IGE9MDthPHRoaXMuaG90LmNvdW50Q29scygpO2ErKyl0aGlzLnNldChjLHRoaXMuY29sVG9Qcm9wKGEpLCIiKX1nZXRMZW5ndGgoKXtjb25zdCBjPXRoaXMudGFibGVNZXRhLm1heFJvd3M7bGV0IGE7YT1jPDB8fDA9PT1jPzA6Y3x8MS8wO2NvbnN0IGQ9dGhpcy5ob3Qucm93''@;'; put 'put ''SW5kZXhNYXBwZXIuZ2V0Tm90VHJpbW1lZEluZGV4ZXNMZW5ndGgoKTtyZXR1cm4gTWF0aC5taW4oZCxhKX1nZXRBbGwoKXtjb25zdCBjPXtyb3c6MCxjb2w6MH0sYT17cm93Ok1hdGgubWF4KHRoaXMuaG90LmNvdW50Um93cygpLTEsMCksY29sOk1hdGgubWF4KHRoaXMuaG90LmNvdW50Q29s''@;'; put 'put ''cygpLTEsMCl9O3JldHVybiBjLnJvdy1hLnJvdyE9MHx8dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCk/dGhpcy5nZXRSYW5nZShjLGEsd2IuREVTVElOQVRJT05fUkVOREVSRVIpOltdfWNvdW50Q2FjaGVkQ29sdW1ucygpe3JldHVybiB0aGlzLmNvbFRvUHJvcENhY2hlLmxlbmd0aH1nZXRS''@;'; put 'put ''YW5nZShjLGEsZCl7Y29uc3QgaD1bXTtsZXQgZix2LFM7Y29uc3QgVj10aGlzLnRhYmxlTWV0YS5tYXhSb3dzLFE9dGhpcy50YWJsZU1ldGEubWF4Q29scztpZigwPT09Vnx8MD09PVEpcmV0dXJuW107Y29uc3QgZGU9ZD09PXdiLkRFU1RJTkFUSU9OX0NMSVBCT0FSRF9HRU5FUkFUT1I/dGhp''@;'; put 'put ''cy5nZXRDb3B5YWJsZTp0aGlzLmdldCxwZT1NYXRoLm1pbihNYXRoLm1heChWLTEsMCksTWF0aC5tYXgoYy5yb3csYS5yb3cpKSxDZT1NYXRoLm1pbihNYXRoLm1heChRLTEsMCksTWF0aC5tYXgoYy5jb2wsYS5jb2wpKTtmb3IoZj1NYXRoLm1pbihjLnJvdyxhLnJvdyk7Zjw9cGU7ZisrKXtT''@;'; put 'put ''PVtdO2NvbnN0IE9lPWY+PTA/dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhmKTpmO2Zvcih2PU1hdGgubWluKGMuY29sLGEuY29sKTt2PD1DZSYmbnVsbCE9PU9lO3YrKylTLnB1c2goZGUuY2FsbCh0aGlzLGYsdGhpcy5jb2xUb1Byb3AodikpKTtudWxsIT09T2UmJmgucHVzaChTKX1yZXR1cm4g''@;'; put 'put ''aH1nZXRUZXh0KGMsYSl7cmV0dXJuIFJ4KHRoaXMuZ2V0UmFuZ2UoYyxhLHdiLkRFU1RJTkFUSU9OX1JFTkRFUkVSKSl9Z2V0Q29weWFibGVUZXh0KGMsYSl7cmV0dXJuIFJ4KHRoaXMuZ2V0UmFuZ2UoYyxhLHdiLkRFU1RJTkFUSU9OX0NMSVBCT0FSRF9HRU5FUkFUT1IpKX1kZXN0cm95KCl7''@;'; put 'put ''dGhpcy5ob3Q9bnVsbCx0aGlzLm1ldGFNYW5hZ2VyPW51bGwsdGhpcy5kYXRhU291cmNlPW51bGwsdGhpcy5kdWNrU2NoZW1hPW51bGwsdGhpcy5jb2xUb1Byb3BDYWNoZS5sZW5ndGg9MCx0aGlzLnByb3BUb0NvbENhY2hlLmNsZWFyKCksdGhpcy5wcm9wVG9Db2xDYWNoZT12b2lkIDB9fWNv''@;'; put 'put ''bnN0IFhLZT13YjtmdW5jdGlvbiBIaGUobCxjLGEsZCl7Y29uc3R7aG90SW5zdGFuY2U6aCxkYXRhTWFwOmYsZGF0YVNvdXJjZTp2LGludGVybmFsU291cmNlOlMsc291cmNlOlYsbWV0YU1hbmFnZXI6USxmaXJzdFJ1bjpkZX09ZCxwZT1JMChTKSxDZT1oLmdldFNldHRpbmdzKCk7aC5kYXRh''@;'; put 'put ''VHlwZT1BcnJheS5pc0FycmF5KENlLmRhdGFTY2hlbWEpPyJhcnJheSI6aGwoQ2UuZGF0YVNjaGVtYSk/ImZ1bmN0aW9uIjoib2JqZWN0IixmJiZmLmRlc3Ryb3koKSxsPWgucnVuSG9va3MoYGJlZm9yZSR7cGV9YCxsLGRlLFYpO2NvbnN0IE9lPW5ldyBYS2UoaCxsLFEpO2lmKGMoT2UpLCJv''@;'; put 'put ''YmplY3QiPT10eXBlb2YgbCYmbnVsbCE9PWwpbC5wdXNoJiZsLnNwbGljZXx8KGw9W2xdKTtlbHNle2lmKG51bGwhPT1sKXRocm93IG5ldyBFcnJvcihgJHtTfSBvbmx5IGFjY2VwdHMgYXJyYXkgb2Ygb2JqZWN0cyBvciBhcnJheSBvZiBhcnJheXMgKCR7dHlwZW9mIGx9IGdpdmVuKWApO3tj''@;'; put 'put ''b25zdCBZZT1PZS5nZXRTY2hlbWEoKTtsPVtdO2xldCBldCxkdD0wLGh0PTA7Zm9yKGR0PTAsaHQ9Q2Uuc3RhcnRSb3dzO2R0PGh0O2R0KyspaWYoIm9iamVjdCIhPT1oLmRhdGFUeXBlJiYiZnVuY3Rpb24iIT09aC5kYXRhVHlwZXx8IUNlLmRhdGFTY2hlbWEpaWYoImFycmF5Ij09PWguZGF0''@;'; put 'put ''YVR5cGUpZXQ9UjAoWWVbMF0pLGwucHVzaChldCk7ZWxzZXtldD1bXTtmb3IobGV0IE10PTAsUXQ9Q2Uuc3RhcnRDb2xzO010PFF0O010KyspZXQucHVzaChudWxsKTtsLnB1c2goZXQpfWVsc2UgZXQ9UjAoWWUpLGwucHVzaChldCl9fUFycmF5LmlzQXJyYXkobFswXSkmJihoLmRhdGFUeXBl''@;'; put 'put ''PSJhcnJheSIpLENlLmRhdGE9bCxPZS5kYXRhU291cmNlPWwsdi5kYXRhPWwsdi5kYXRhVHlwZT1oLmRhdGFUeXBlLHYuY29sVG9Qcm9wPU9lLmNvbFRvUHJvcC5iaW5kKE9lKSx2LnByb3BUb0NvbD1PZS5wcm9wVG9Db2wuYmluZChPZSksdi5jb3VudENhY2hlZENvbHVtbnM9T2UuY291bnRD''@;'; put 'put ''YWNoZWRDb2x1bW5zLmJpbmQoT2UpLGEoT2UpLGgucnVuSG9va3MoYGFmdGVyJHtwZX1gLGwsZGUsViksZGV8fChoLnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsbnVsbCxTKSxoLnJlbmRlcigpKSxoLmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJlZvKGgucm9vdEVsZW1lbnQsW3UxZSgtMSksUVIo''@;'; put 'put ''aC5jb3VudENvbHMoKSsoaC52aWV3P2guY291bnRSb3dIZWFkZXJzKCk6MCkpXSl9Y29uc3QgVmhlPSJncmlkRGVmYXVsdCIsWW09ImVkaXRvck1hbmFnZXIuaGFuZGxpbmdFZGl0b3IiO2Z1bmN0aW9uIEJoZShsKXtjb25zdCBhPWwucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0''@;'; put 'put ''Iik7cmV0dXJuIGEudHlwZT0idGV4dCIsYS5jbGFzc0xpc3QuYWRkKCJodEZvY3VzQ2F0Y2hlciIpLGwuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmVm8oYSxbQTMoKSxNNCgpXSksYX1mdW5jdGlvbiBtcShsKXtjb25zdHtyb3dJbmRleE1hcHBlcjpjLGNvbHVtbkluZGV4TWFwcGVyOmF9PWws''@;'; put 'put ''e25hdmlnYWJsZUhlYWRlcnM6ZH09bC5nZXRTZXR0aW5ncygpO2xldCBoPWQmJmwuY291bnRDb2xIZWFkZXJzKCk+MD8tbC5jb3VudENvbEhlYWRlcnMoKTowLGY9ZCYmbC5jb3VudFJvd0hlYWRlcnMoKT4wPy1sLmNvdW50Um93SGVhZGVycygpOjA7cmV0dXJuIDA9PT1oJiYoaD1jLmdldFZp''@;'; put 'put ''c3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoaCkpLDA9PT1mJiYoZj1hLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZikpLG51bGw9PT1ofHxudWxsPT09Zj9udWxsOmwuX2NyZWF0ZUNlbGxDb29yZHMoaCxmKX1mdW5jdGlvbiB2cShsKXt2YXIgYyxhO2NvbnN0e3Jvd0luZGV4TWFwcGVy''@;'; put 'put ''OmQsY29sdW1uSW5kZXhNYXBwZXI6aH09bCx7bmF2aWdhYmxlSGVhZGVyczpmfT1sLmdldFNldHRpbmdzKCk7bGV0IHY9ZC5nZXRSZW5kZXJhYmxlSW5kZXhlc0xlbmd0aCgpLTEsUz1oLmdldFJlbmRlcmFibGVJbmRleGVzTGVuZ3RoKCktMTtpZih2PDApe2lmKCFmfHwwPT09bC5jb3VudENv''@;'; put 'put ''bEhlYWRlcnMoKSlyZXR1cm4gbnVsbDt2PS0xfWlmKFM8MCl7aWYoIWZ8fDA9PT1sLmNvdW50Q29sSGVhZGVycygpKXJldHVybiBudWxsO1M9LTF9cmV0dXJuIGwuX2NyZWF0ZUNlbGxDb29yZHMobnVsbCE9PShjPWQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh2KSkmJnZvaWQgMCE9''@;'; put 'put ''PWM/Yzp2LG51bGwhPT0oYT1oLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoUykpJiZ2b2lkIDAhPT1hP2E6Uyl9Y29uc3QgamhlPW5ldyBNYXAoW1siICIsInNwYWNlIl0sWyJzcGFjZWJhciIsInNwYWNlIl0sWyJzY3JvbGwiLCJzY3JvbGxsb2NrIl0sWyJkZWwiLCJkZWxldGUiXSxb''@;'; put 'put ''ImVzYyIsImVzY2FwZSJdLFsibWVkaWFuZXh0dHJhY2siLCJtZWRpYXRyYWNrbmV4dCJdLFsibWVkaWFwcmV2aW91c3RyYWNrIiwibWVkaWF0cmFja3ByZXZpb3VzIl0sWyJ2b2x1bWV1cCIsImF1ZGlvdm9sdW1ldXAiXSxbInZvbHVtZWRvd24iLCJhdWRpb3ZvbHVtZWRvd24iXSxbInZvbHVt''@;'; put 'put ''ZW11dGUiLCJhdWRpb3ZvbHVtZW11dGUiXSxbIm11bHRpcGx5IiwiKiJdLFsiYWRkIiwiKyJdLFsiZGl2aWRlIiwiLyJdLFsic3VidHJhY3QiLCItIl0sWyJsZWZ0IiwiYXJyb3dsZWZ0Il0sWyJyaWdodCIsImFycm93cmlnaHQiXSxbInVwIiwiYXJyb3d1cCJdLFsiZG93biIsImFycm93ZG93''@;'; put 'put ''biJdXSksdU89bD0+bC5tYXAoYz0+e2NvbnN0IGE9Yy50b0xvd2VyQ2FzZSgpO3JldHVybiBqaGUuaGFzKGEpP2poZS5nZXQoYSk6YX0pLnNvcnQoKS5qb2luKCIrIiksemhlPW5ldyBSZWdFeHAoIl4oPzpLZXl8RGlnaXQpKFtBLVowLTldKSQiKSx1WGU9bmV3IFNldChbIkJhY2txdW90ZSIs''@;'; put 'put ''Ik1pbnVzIiwiRXF1YWwiLCJCcmFja2V0TGVmdCIsIkJyYWNrZXRSaWdodCIsIkJhY2tzbGFzaCIsIlNlbWljb2xvbiIsIlF1b3RlIiwiQ29tbWEiLCJQZXJpb2QiLCJTbGFzaCJdKSxfcT1sPT57bGV0e2tleTpjLGNvZGU6YX09bCxkPWM7cmV0dXJuIHpoZS50ZXN0KGEpP2Q9YS5yZXBsYWNl''@;'; put 'put ''KHpoZSwiJDEiKTp1WGUuaGFzKGEpJiYoZD1hKSxkLnRvTG93ZXJDYXNlKCl9LFVoZT1TeW1ib2woInNob3J0Y3V0LWNvbnRleHQiKTtmdW5jdGlvbiBaaGUobCl7cmV0dXJuIF9zKGwpJiZsLl9fa2luZE9mPT09VWhlfWNvbnN0IGZYZT1bIm1ldGEiLCJhbHQiLCJzaGlmdCIsImNvbnRyb2wi''@;'; put 'put ''XSxMeD1mdW5jdGlvbiBoWGUoKXtjb25zdCBsPW5ldyBTZXQ7cmV0dXJue3ByZXNzKGMpe2wuYWRkKGMpfSxyZWxlYXNlKGMpe2wuZGVsZXRlKGMpfSxyZWxlYXNlQWxsKCl7bC5jbGVhcigpfSxpc1ByZXNzZWQ6Yz0+bC5oYXMoYyl9fSgpLE94PVtdO2xldCBkTz0wO2NvbnN0IGdYZT1sPT57''@;'; put 'put ''bGV0e293bmVyV2luZG93OmMsaGFuZGxlRXZlbnQ6YSxiZWZvcmVLZXlEb3duOmQsYWZ0ZXJLZXlEb3duOmh9PWw7Y29uc3QgZj15TCh7ZXJyb3JJZEV4aXN0czpZZT0+YFRoZSAiJHtZZX0iIGNvbnRleHQgbmFtZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuYH0pO2xldCB2PSJncmlkIjtjb25z''@;'; put 'put ''dCBWPSgpPT52LFE9WWU9PmYuZ2V0SXRlbShZZSk7bGV0IHBlPSExO2NvbnN0IENlPWZ1bmN0aW9uKFllLGV0KXtsZXQgZHQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlYoKTtjb25zdCBodD1aaGUoZHQpP2R0OlEoZHQpO2xldCBNdD0h''@;'; put 'put ''MTtpZighaHQuaGFzU2hvcnRjdXQoZXQpKXJldHVybiBNdDtjb25zdCBRdD1odC5nZXRTaG9ydGN1dHMoZXQpO2ZvcihsZXQgbG49MDtsbjxRdC5sZW5ndGg7bG4rKyl7Y29uc3R7Y2FsbGJhY2s6dm4scnVuT25seUlmOnduLHByZXZlbnREZWZhdWx0Om5yLHN0b3BQcm9wYWdhdGlvbjp2cixj''@;'; put 'put ''YXB0dXJlQ3RybDpNaSxmb3J3YXJkVG9Db250ZXh0OlBpfT1RdFtsbl07aWYoITA9PT13bihZZSkpe2lmKHBlPU1pLE10PSExPT09dm4oWWUsZXQpLHBlPSExLG5yJiZZZS5wcmV2ZW50RGVmYXVsdCgpLHZyJiYoamgoWWUpLFllLnN0b3BQcm9wYWdhdGlvbigpKSxNdClicmVhaztQaSYmQ2Uo''@;'; put 'put ''WWUsZXQsUGkpfX1yZXR1cm4gTXR9LE9lPWZ1bmN0aW9uIHBYZShsLGMsYSxkLGgpe2NvbnN0IGY9T2U9PmZYZS5pbmNsdWRlcyhPZSksdj1mdW5jdGlvbihPZSl7bGV0IFllPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3QgZXQ9''@;'; put 'put ''W107cmV0dXJuIE9lLmFsdEtleSYmZXQucHVzaCgiYWx0IiksWWUmJihPZS5jdHJsS2V5fHxPZS5tZXRhS2V5KT9ldC5wdXNoKCJjb250cm9sL21ldGEiKTooT2UuY3RybEtleSYmZXQucHVzaCgiY29udHJvbCIpLE9lLm1ldGFLZXkmJmV0LnB1c2goIm1ldGEiKSksT2Uuc2hpZnRLZXkmJmV0''@;'; put 'put ''LnB1c2goInNoaWZ0IiksZXR9LFM9T2U9PntpZighMT09PWMoT2UpKXJldHVybjtjb25zdCBZZT1hKE9lKTtpZigyMjk9PT1PZS5rZXlDb2RlfHwhMT09PVllfHxGbShPZSkpcmV0dXJuO2NvbnN0IGV0PV9xKE9lKTtsZXQgZHQ9W107ZihldCl8fChkdD12KE9lKSk7Y29uc3QgaHQ9W2V0XS5j''@;'; put 'put ''b25jYXQoZHQpOyFoKE9lLGh0KSYmKGl4KCkmJmR0LmluY2x1ZGVzKCJtZXRhIil8fCFpeCgpJiZkdC5pbmNsdWRlcygiY29udHJvbCIpKSYmaChPZSxbZXRdLmNvbmNhdCh2KE9lLCEwKSkpLGQoT2UpfSxWPU9lPT57aWYoT2Uua2V5KXtjb25zdCBZZT1fcShPZSk7ZihZZSkmJkx4LnByZXNz''@;'; put 'put ''KFllKX19LFE9T2U9PntpZihPZS5rZXkpe2NvbnN0IFllPV9xKE9lKTtmKFllKSYmTHgucmVsZWFzZShZZSl9fSxkZT0oKT0+e0x4LnJlbGVhc2VBbGwoKX07cmV0dXJue21vdW50OigpPT57bGV0IE9lPWw7Zm9yKGRPKz0xO09lOykxPT09ZE8mJihPZS5kb2N1bWVudC5kb2N1bWVudEVsZW1l''@;'; put 'put ''bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsViksT3gucHVzaCh7ZXZlbnQ6ImtleWRvd24iLGxpc3RlbmVyOlZ9KSxPZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLFEpLE94LnB1c2goe2V2ZW50OiJrZXl1cCIsbGlzdGVuZXI6UX0pKSxP''@;'; put 'put ''ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsUyksT2UuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGRlKSxPZT16OChPZSl9LHVubW91bnQ6KCk9PntsZXQgT2U9bDtmb3IoZE8tPTE7T2U7KXtpZigw''@;'; put 'put ''PT09ZE8pe2ZvcihsZXQgWWU9MDtZZTxPeC5sZW5ndGg7WWUrKyl7Y29uc3R7ZXZlbnQ6ZXQsbGlzdGVuZXI6ZHR9PU94W1llXTtPZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldCxkdCl9T3gubGVuZ3RoPTB9T2UuZG9jdW1lbnQuZG9jdW1lbnRFbGVt''@;'; put 'put ''ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLFMpLE9lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixkZSksT2U9ejgoT2UpfX0saXNQcmVzc2VkOk9lPT5MeC5pc1ByZXNzZWQoT2UpLHJlbGVhc2VQcmVzc2VkS2V5czooKT0+THgu''@;'; put 'put ''cmVsZWFzZUFsbCgpfX0oYyxhLGQsaCxDZSk7cmV0dXJuIE9lLm1vdW50KCkse2FkZENvbnRleHQ6WWU9Pntjb25zdCBldD0obD0+e2NvbnN0IGM9eUwoe2Vycm9ySWRFeGlzdHM6Vj0+YFRoZSAiJHtWfSIgc2hvcnRjdXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGluIHRoZSAiJHtsfSIgY29u''@;'; put 'put ''dGV4dC5gfSksYT1mdW5jdGlvbigpe2xldHtrZXlzOlYsY2FsbGJhY2s6USxncm91cDpkZSxydW5Pbmx5SWY6cGU9KCgpPT4hMCksY2FwdHVyZUN0cmw6Q2U9ITEscHJldmVudERlZmF1bHQ6T2U9ITAsc3RvcFByb3BhZ2F0aW9uOlllPSExLHJlbGF0aXZlVG9Hcm91cDpldCxwb3NpdGlvbjpk''@;'; put 'put ''dCxmb3J3YXJkVG9Db250ZXh0Omh0fT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307aWYoZGwoZGUpKXRocm93IG5ldyBFcnJvcigiWW91IG5lZWQgdG8gZGVmaW5lIHRoZSBzaG9ydGN1dCdzIGdyb3VwLiIpO2lmKCExPT09aGwoUSkp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJUaGUgc2hvcnRjdXQncyBjYWxsYmFjayBuZWVkcyB0byBiZSBhIGZ1bmN0aW9uLiIpO2lmKCExPT09QXJyYXkuaXNBcnJheShWKSl0aHJvdyBuZXcgRXJyb3IoTmFgUGFzcyB0aGUgc2hvcnRjdXRcJ3Mga2V5cyBhcyBhbiBhcnJheSBvZiBhcnJheXMsXHgyMAog''@;'; put 'put ''ICAgICB1c2luZyB0aGUgS2V5Ym9hcmRFdmVudC5rZXkgcHJvcGVydGllczpceDIwCiAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L2tleS9LZXlfVmFsdWVzLmApO2NvbnN0IE10PXtjYWxsYmFjazpRLGdyb3VwOmRl''@;'; put 'put ''LHJ1bk9ubHlJZjpwZSxjYXB0dXJlQ3RybDpDZSxwcmV2ZW50RGVmYXVsdDpPZSxzdG9wUHJvcGFnYXRpb246WWV9O3NvKGV0KSYmKE10LnJlbGF0aXZlVG9Hcm91cD1ldCxNdC5wb3NpdGlvbj1kdCksWmhlKGh0KSYmKE10LmZvcndhcmRUb0NvbnRleHQ9aHQpLFYuZm9yRWFjaChRdD0+e2Nv''@;'; put 'put ''bnN0IGxuPXVPKFF0KTtpZihjLmhhc0l0ZW0obG4pKXtjb25zdCB3bj1jLmdldEl0ZW0obG4pO2xldCBucj13bi5maW5kSW5kZXgodnI9PnZyLmdyb3VwPT09ZXQpOy0xIT09bnI/ImJlZm9yZSI9PT1kdD9uci09MTpucis9MTpucj13bi5sZW5ndGgsd24uc3BsaWNlKG5yLDAsTXQpfWVsc2Ug''@;'; put 'put ''Yy5hZGRJdGVtKGxuLFtNdF0pfSl9LGg9Vj0+e2NvbnN0IFE9dU8oVik7Yy5yZW1vdmVJdGVtKFEpfTtyZXR1cm57X19raW5kT2Y6VWhlLGFkZFNob3J0Y3V0OmEsYWRkU2hvcnRjdXRzOmZ1bmN0aW9uKFYpe2xldCBRPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''P2FyZ3VtZW50c1sxXTp7fTtWLmZvckVhY2goZGU9PntDcyhRLChwZSxDZSk9PnshMT09PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZSxDZSkmJihkZVtDZV09UVtDZV0pfSksYShkZSl9KX0sZ2V0U2hvcnRjdXRzOlY9Pntjb25zdCBRPXVPKFYpLGRlPWMuZ2V0SXRl''@;'; put 'put ''bShRKTtyZXR1cm4gc28oZGUpP2RlLnNsaWNlKCk6W119LGhhc1Nob3J0Y3V0OlY9Pntjb25zdCBRPXVPKFYpO3JldHVybiBjLmhhc0l0ZW0oUSl9LHJlbW92ZVNob3J0Y3V0c0J5S2V5czpoLHJlbW92ZVNob3J0Y3V0c0J5R3JvdXA6Vj0+e2MuZ2V0SXRlbXMoKS5mb3JFYWNoKGRlPT57bGV0''@;'; put 'put ''W3BlLENlXT1kZTtjb25zdCBPZT1DZS5maWx0ZXIoWWU9PlllLmdyb3VwIT09Vik7MD09PU9lLmxlbmd0aD9oKChsPT5sLnNwbGl0KCIrIikpKHBlKSk6KENlLmxlbmd0aD0wLENlLnB1c2goLi4uT2UpKX0pfX19KShZZSk7cmV0dXJuIGYuYWRkSXRlbShZZSxldCksZXR9LGdldEFjdGl2ZUNv''@;'; put 'put ''bnRleHROYW1lOlYsZ2V0Q29udGV4dDpRLHNldEFjdGl2ZUNvbnRleHROYW1lOlllPT57aWYoIWYuaGFzSXRlbShZZSkpdGhyb3cgbmV3IEVycm9yKE5hYFlvdSd2ZSB0cmllZCB0byBhY3RpdmF0ZSB0aGUgIiR7WWV9IiBzaG9ydGN1dCBjb250ZXh0XHgyMAogICAgICAgIHRoYXQgZG9lcyBu''@;'; put 'put ''b3QgZXhpc3QuIEJlZm9yZSBhY3RpdmF0aW9uLCByZWdpc3RlciB0aGUgY29udGV4dCB1c2luZyB0aGUgImFkZENvbnRleHQiIG1ldGhvZC5gKTt2PVllfSxpc0N0cmxQcmVzc2VkOigpPT4hcGUmJihPZS5pc1ByZXNzZWQoImNvbnRyb2wiKXx8T2UuaXNQcmVzc2VkKCJtZXRhIikpLHJlbGVh''@;'; put 'put ''c2VQcmVzc2VkS2V5czooKT0+T2UucmVsZWFzZVByZXNzZWRLZXlzKCksZGVzdHJveTooKT0+T2UudW5tb3VudCgpfX0sbVhlPXtuYW1lOiJlZGl0b3JDbG9zZUFuZFNhdmUiLGNhbGxiYWNrKGwpe2wuX2dldEVkaXRvck1hbmFnZXIoKS5jbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2VzKCl9fSxZ''@;'; put 'put ''aGU9e19ob29rc1N0b3JhZ2U6T2JqZWN0LmNyZWF0ZShudWxsKSxhZGRIb29rKGwsYyl7cmV0dXJuIHRoaXMuX2hvb2tzU3RvcmFnZVtsXXx8KHRoaXMuX2hvb2tzU3RvcmFnZVtsXT1bXSksdGhpcy5ob3QuYWRkSG9vayhsLGMpLHRoaXMuX2hvb2tzU3RvcmFnZVtsXS5wdXNoKGMpLHRoaXN9''@;'; put 'put ''LHJlbW92ZUhvb2tzQnlLZXkobCl7VG4odGhpcy5faG9va3NTdG9yYWdlW2xdfHxbXSxjPT57dGhpcy5ob3QucmVtb3ZlSG9vayhsLGMpfSl9LGNsZWFySG9va3MoKXtDcyh0aGlzLl9ob29rc1N0b3JhZ2UsKGwsYyk9PnRoaXMucmVtb3ZlSG9va3NCeUtleShjKSksdGhpcy5faG9va3NTdG9y''@;'; put 'put ''YWdlPXt9fX07STMoWWhlLCJNSVhJTl9OQU1FIiwiaG9va3NSZWZSZWdpc3RlcmVyIix7d3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pO2NvbnN0IF9YZT1ZaGU7ZnVuY3Rpb24gaGYobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGJYZShsKXt2YXIgYz1mdW5jdGlvbiB5WGUobCxjKXtpZigi''@;'; put 'put ''b2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0''@;'; put 'put ''aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTph''@;'; put 'put ''LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgeGM9T2JqZWN0LmZyZWV6ZSh7VklSR0lOOiJTVEFURV9WSVJHSU4iLEVESVRJTkc6IlNUQVRFX0VESVRJTkciLFdBSVRJTkc6IlNUQVRFX1dBSVRJTkciLEZJTklTSEVEOiJTVEFURV9G''@;'; put 'put ''SU5JU0hFRCJ9KTtjbGFzcyBDYntzdGF0aWMgZ2V0IEVESVRPUl9UWVBFKCl7cmV0dXJuImJhc2UifWNvbnN0cnVjdG9yKGMpe2hmKHRoaXMsImhvdCIsdm9pZCAwKSxoZih0aGlzLCJzdGF0ZSIseGMuVklSR0lOKSxoZih0aGlzLCJfb3BlbmVkIiwhMSksaGYodGhpcywiX2Z1bGxFZGl0TW9k''@;'; put 'put ''ZSIsITEpLGhmKHRoaXMsIl9jbG9zZUNhbGxiYWNrIixudWxsKSxoZih0aGlzLCJURCIsbnVsbCksaGYodGhpcywicm93IixudWxsKSxoZih0aGlzLCJjb2wiLG51bGwpLGhmKHRoaXMsInByb3AiLG51bGwpLGhmKHRoaXMsIm9yaWdpbmFsVmFsdWUiLG51bGwpLGhmKHRoaXMsImNlbGxQcm9w''@;'; put 'put ''ZXJ0aWVzIixudWxsKSx0aGlzLmhvdD1jLHRoaXMuaW5pdCgpfV9maXJlQ2FsbGJhY2tzKGMpe3RoaXMuX2Nsb3NlQ2FsbGJhY2smJih0aGlzLl9jbG9zZUNhbGxiYWNrKGMpLHRoaXMuX2Nsb3NlQ2FsbGJhY2s9bnVsbCl9aW5pdCgpe31nZXRWYWx1ZSgpe3Rocm93IEVycm9yKCJFZGl0b3Ig''@;'; put 'put ''Z2V0VmFsdWUoKSBtZXRob2QgdW5pbXBsZW1lbnRlZCIpfXNldFZhbHVlKCl7dGhyb3cgRXJyb3IoIkVkaXRvciBzZXRWYWx1ZSgpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9b3Blbigpe3Rocm93IEVycm9yKCJFZGl0b3Igb3BlbigpIG1ldGhvZCB1bmltcGxlbWVudGVkIil9Y2xvc2UoKXt0''@;'; put 'put ''aHJvdyBFcnJvcigiRWRpdG9yIGNsb3NlKCkgbWV0aG9kIHVuaW1wbGVtZW50ZWQiKX1wcmVwYXJlKGMsYSxkLGgsZix2KXt0aGlzLlREPWgsdGhpcy5yb3c9Yyx0aGlzLmNvbD1hLHRoaXMucHJvcD1kLHRoaXMub3JpZ2luYWxWYWx1ZT1mLHRoaXMuY2VsbFByb3BlcnRpZXM9dix0aGlzLnN0''@;'; put 'put ''YXRlPXRoaXMuaXNPcGVuZWQoKT90aGlzLnN0YXRlOnhjLlZJUkdJTn1leHRlbmQoKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0aGlzLmNvbnN0cnVjdG9ye319c2F2ZVZhbHVlKGMsYSl7bGV0IGQsaCxmLHY7aWYoYSl7Y29uc3QgVj10aGlzLmhvdC5nZXRTZWxlY3RlZExhc3QoKTtkPU1hdGgu''@;'; put 'put ''bWF4KE1hdGgubWluKFZbMF0sVlsyXSksMCksaD1NYXRoLm1heChNYXRoLm1pbihWWzFdLFZbM10pLDApLGY9TWF0aC5tYXgoVlswXSxWWzJdKSx2PU1hdGgubWF4KFZbMV0sVlszXSl9ZWxzZVtkLGgsZix2XT1bdGhpcy5yb3csdGhpcy5jb2wsbnVsbCxudWxsXTtjb25zdCBTPXRoaXMuaG90''@;'; put 'put ''LnJ1bkhvb2tzKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixkLGgpO0FycmF5LmlzQXJyYXkoUykmJihbZCxoXT1TKSx0aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheShkLGgsYyxmLHYsImVkaXQiKX1iZWdpbkVkaXRpbmcoYyxhKXtpZih0aGlzLnN0YXRlIT09eGMuVklSR0lOKXJldHVybjtjb25z''@;'; put 'put ''dCBkPXRoaXMuaG90LGg9ZC5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHRoaXMucm93KSxmPWQuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh0aGlzLmNvbCk7aWYoZC52aWV3LnNjcm9sbFZpZXdwb3J0KGQuX2NyZWF0''@;'; put 'put ''ZUNlbGxDb29yZHMoaCxmKSksdGhpcy5zdGF0ZT14Yy5FRElUSU5HLHRoaXMuaXNJbkZ1bGxFZGl0TW9kZSgpKXtjb25zdCB2PSJzdHJpbmciPT10eXBlb2YgYz9jOmljKHRoaXMub3JpZ2luYWxWYWx1ZSk7dGhpcy5zZXRWYWx1ZSh2KX10aGlzLm9wZW4oYSksdGhpcy5fb3BlbmVkPSEwLHRo''@;'; put 'put ''aXMuZm9jdXMoKSxkLnZpZXcucmVuZGVyKCksZC5ydW5Ib29rcygiYWZ0ZXJCZWdpbkVkaXRpbmciLHRoaXMucm93LHRoaXMuY29sKX1maW5pc2hFZGl0aW5nKGMsYSxkKXtsZXQgaDtpZihkKXtjb25zdCBmPXRoaXMuX2Nsb3NlQ2FsbGJhY2s7dGhpcy5fY2xvc2VDYWxsYmFjaz12PT57ZiYm''@;'; put 'put ''Zih2KSxkKHYpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9fWlmKCF0aGlzLmlzV2FpdGluZygpKXtpZih0aGlzLnN0YXRlPT09eGMuVklSR0lOKXJldHVybiB2b2lkIHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9Pnt0aGlzLl9maXJlQ2FsbGJhY2tzKCEwKX0pO2lmKHRoaXMuc3RhdGU9''@;'; put 'put ''PT14Yy5FRElUSU5HKXtpZihjKXJldHVybiB0aGlzLmNhbmNlbENoYW5nZXMoKSx2b2lkIHRoaXMuaG90LnZpZXcucmVuZGVyKCk7Y29uc3QgZj10aGlzLmdldFZhbHVlKCk7aD10aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1XaGl0ZXNwYWNlP1tbInN0cmluZyI9PXR5cGVvZiBmP1N0cmluZy5w''@;'; put 'put ''cm90b3R5cGUudHJpbS5jYWxsKGZ8fCIiKTpmXV06W1tmXV0sdGhpcy5zdGF0ZT14Yy5XQUlUSU5HLHRoaXMuc2F2ZVZhbHVlKGgsYSksdGhpcy5ob3QuZ2V0Q2VsbFZhbGlkYXRvcih0aGlzLmNlbGxQcm9wZXJ0aWVzKT90aGlzLmhvdC5hZGRIb29rT25jZSgicG9zdEFmdGVyVmFsaWRhdGUi''@;'; put 'put ''LHY9Pnt0aGlzLnN0YXRlPXhjLkZJTklTSEVELHRoaXMuZGlzY2FyZEVkaXRvcih2KX0pOih0aGlzLnN0YXRlPXhjLkZJTklTSEVELHRoaXMuZGlzY2FyZEVkaXRvcighMCkpfX19Y2FuY2VsQ2hhbmdlcygpe3RoaXMuc3RhdGU9eGMuRklOSVNIRUQsdGhpcy5kaXNjYXJkRWRpdG9yKCl9ZGlz''@;'; put 'put ''Y2FyZEVkaXRvcihjKXt0aGlzLnN0YXRlPT09eGMuRklOSVNIRUQmJighMT09PWMmJiEwIT09dGhpcy5jZWxsUHJvcGVydGllcy5hbGxvd0ludmFsaWQ/KHRoaXMuaG90LnNlbGVjdENlbGwodGhpcy5yb3csdGhpcy5jb2wpLHRoaXMuZm9jdXMoKSx0aGlzLnN0YXRlPXhjLkVESVRJTkcsdGhp''@;'; put 'put ''cy5fZmlyZUNhbGxiYWNrcyghMSkpOih0aGlzLmNsb3NlKCksdGhpcy5fb3BlbmVkPSExLHRoaXMuX2Z1bGxFZGl0TW9kZT0hMSx0aGlzLnN0YXRlPXhjLlZJUkdJTix0aGlzLl9maXJlQ2FsbGJhY2tzKCEwKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0''@;'; put 'put ''TmFtZSgiZ3JpZCIpKSl9ZW5hYmxlRnVsbEVkaXRNb2RlKCl7dGhpcy5fZnVsbEVkaXRNb2RlPSEwfWlzSW5GdWxsRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy5fZnVsbEVkaXRNb2RlfWlzT3BlbmVkKCl7cmV0dXJuIHRoaXMuX29wZW5lZH1pc1dhaXRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0ZT09''@;'; put 'put ''PXhjLldBSVRJTkd9Z2V0RWRpdGVkQ2VsbFJlY3QoKXt2YXIgYztjb25zdCBhPXRoaXMuZ2V0RWRpdGVkQ2VsbCgpO2lmKCFhKXJldHVybjtjb25zdHt3dE92ZXJsYXlzOmQsd3RWaWV3cG9ydDpofT10aGlzLmhvdC52aWV3Ll93dCxmPXRoaXMuaG90LnJvb3RXaW5kb3csdj14dShhKSxTPVdh''@;'; put 'put ''KGEpLFY9eHUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLFE9V2EodGhpcy5ob3Qucm9vdEVsZW1lbnQpLGRlPWQudG9wT3ZlcmxheS5ob2xkZXIscGU9ZC5pbmxpbmVTdGFydE92ZXJsYXkuaG9sZGVyLENlPWRlIT09Zj9kZS5zY3JvbGxUb3A6MCxPZT1wZSE9PWY/cGUuc2Nyb2xsTGVmdDowLFll''@;'; put 'put ''PWYuaW5uZXJXaWR0aC1WLmxlZnQtUSx7d3RUYWJsZTpldH09bnVsbCE9PShjPWQuZ2V0UGFyZW50T3ZlcmxheShhKSkmJnZvaWQgMCE9PWM/Yzp0aGlzLmhvdC52aWV3Ll93dCxkdD1ldC5uYW1lLGh0PVsibWFzdGVyIiwiaW5saW5lX3N0YXJ0Il0uaW5jbHVkZXMoZHQpP0NlOjAsTXQ9WyJt''@;'; put 'put ''YXN0ZXIiLCJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyhkdCk/T2U6MDtsZXQgbG49di50b3AtVi50b3AtKHYudG9wPT09Vi50b3A/MDoxKS1odCx2bj0wO3ZuPXRoaXMuaG90LmlzUnRsKCk/Zi5pbm5lcldpZHRoLXYubGVmdC1TLVllLTErTXQ6di5sZWZ0LVYubGVmdC0xLU10LFsidG9wIiwi''@;'; put 'put ''dG9wX2lubGluZV9zdGFydF9jb3JuZXIiXS5pbmNsdWRlcyhkdCkmJihsbis9ZC50b3BPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKSksWyJpbmxpbmVfc3RhcnQiLCJ0b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciJdLmluY2x1ZGVzKGR0KSYmKHZuKz1NYXRoLmFicyhkLmlubGluZVN0YXJ0T3Zl''@;'; put 'put ''cmxheS5nZXRPdmVybGF5T2Zmc2V0KCkpKTtjb25zdCB3bj10aGlzLmhvdC5oYXNDb2xIZWFkZXJzKCksbnI9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh0aGlzLnJvdyksdnI9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVy''@;'; put 'put ''YWJsZUZyb21WaXN1YWxJbmRleCh0aGlzLmNvbCksUGk9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKS10aGlzLmhvdC52aWV3Ll93dC5nZXRTZXR0aW5nKCJmaXhlZFJvd3NCb3R0b20iKTsod24mJm5yPD0wfHxucj09PVBpKSYmKGxuKz0xKSx2''@;'; put 'put ''cjw9MCYmKHZuKz0xKTtjb25zdCB5cj1oLnJvd3NSZW5kZXJDYWxjdWxhdG9yLnN0YXJ0UG9zaXRpb24sX2k9aC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvci5zdGFydFBvc2l0aW9uLFVyPU1hdGguYWJzKGQuaW5saW5lU3RhcnRPdmVybGF5LmdldFNjcm9sbFBvc2l0aW9uKCkpLEluPWQudG9w''@;'; put 'put ''T3ZlcmxheS5nZXRTY3JvbGxQb3NpdGlvbigpLE9yPUV1KHRoaXMuaG90LnJvb3REb2N1bWVudCk7bGV0IFduPWEub2Zmc2V0VG9wO2lmKFsiaW5saW5lX3N0YXJ0IiwibWFzdGVyIl0uaW5jbHVkZXMoZHQpJiYoV24rPXlyLUluKSxbImJvdHRvbSIsImJvdHRvbV9pbmxpbmVfc3RhcnRfY29y''@;'; put 'put ''bmVyIl0uaW5jbHVkZXMoZHQpKXtjb25zdHt3dFZpZXdwb3J0OmpyLHd0VGFibGU6VGl9PWQuYm90dG9tT3ZlcmxheS5jbG9uZTtXbis9anIuZ2V0V29ya3NwYWNlSGVpZ2h0KCktVGkuZ2V0SGVpZ2h0KCktT3J9bGV0IFRyPWEub2Zmc2V0TGVmdDt0aGlzLmhvdC5pc1J0bCgpPyhUcj1Ucj49''@;'; put 'put ''MD9ldC5nZXRXaWR0aCgpLWEub2Zmc2V0TGVmdDpNYXRoLmFicyhUciksVHIrPV9pLVVyLVMpOlsidG9wIiwibWFzdGVyIiwiYm90dG9tIl0uaW5jbHVkZXMoZHQpJiYoVHIrPV9pLVVyKTtjb25zdCBFcj14NCh0aGlzLlRELHRoaXMuaG90LnJvb3RXaW5kb3cpLHpyPXRoaXMuaG90LmlzUnRs''@;'; put 'put ''KCk/ImJvcmRlclJpZ2h0V2lkdGgiOiJib3JkZXJMZWZ0V2lkdGgiLEJpPXBhcnNlSW50KEVyW3pyXSwxMCk+MD8wOjEsU3Q9cGFyc2VJbnQoRXIuYm9yZGVyVG9wV2lkdGgsMTApPjA/MDoxLEx0PVdhKGEpK0JpLFV0PVpsKGEpK1N0LEZuPU0xZShkZSk/T3I6MCxLbj14MWUocGUpP09yOjAs''@;'; put 'put ''ZHI9dGhpcy5ob3Qudmlldy5tYXhpbXVtVmlzaWJsZUVsZW1lbnRXaWR0aChUciktRm4rQmk7cmV0dXJue3RvcDpsbixzdGFydDp2bixoZWlnaHQ6VXQsbWF4SGVpZ2h0Ok1hdGgubWF4KHRoaXMuaG90LnZpZXcubWF4aW11bVZpc2libGVFbGVtZW50SGVpZ2h0KFduKS1LbitTdCwyMyksd2lk''@;'; put 'put ''dGg6THQsbWF4V2lkdGg6ZHJ9fWdldEVkaXRlZENlbGxzTGF5ZXJDbGFzcygpe3N3aXRjaCh0aGlzLmNoZWNrRWRpdG9yU2VjdGlvbigpKXtjYXNlImlubGluZS1zdGFydCI6cmV0dXJuImh0X2Nsb25lX2xlZnQgaHRfY2xvbmVfaW5saW5lX3N0YXJ0IjtjYXNlImJvdHRvbSI6cmV0dXJuImh0''@;'; put 'put ''X2Nsb25lX2JvdHRvbSI7Y2FzZSJib3R0b20taW5saW5lLXN0YXJ0LWNvcm5lciI6cmV0dXJuImh0X2Nsb25lX2JvdHRvbV9sZWZ0X2Nvcm5lciBodF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lciI7Y2FzZSJ0b3AiOnJldHVybiJodF9jbG9uZV90b3AiO2Nhc2UidG9wLWlubGlu''@;'; put 'put ''ZS1zdGFydC1jb3JuZXIiOnJldHVybiJodF9jbG9uZV90b3BfbGVmdF9jb3JuZXIgaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIiO2RlZmF1bHQ6cmV0dXJuImh0X2Nsb25lX21hc3RlciJ9fWdldEVkaXRlZENlbGwoKXtyZXR1cm4gdGhpcy5ob3QuZ2V0Q2VsbCh0aGlzLnJvdyx0''@;'; put 'put ''aGlzLmNvbCwhMCl9Y2hlY2tFZGl0b3JTZWN0aW9uKCl7Y29uc3QgYz10aGlzLmhvdC5jb3VudFJvd3MoKTtsZXQgYT0iIjtyZXR1cm4gdGhpcy5yb3c8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3A/YT10aGlzLmNvbDx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29s''@;'; put 'put ''dW1uc1N0YXJ0PyJ0b3AtaW5saW5lLXN0YXJ0LWNvcm5lciI6InRvcCI6dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20mJnRoaXMucm93Pj1jLXRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzQm90dG9tP2E9dGhpcy5jb2w8dGhpcy5ob3QuZ2V0U2V0dGluZ3Mo''@;'; put 'put ''KS5maXhlZENvbHVtbnNTdGFydD8iYm90dG9tLWlubGluZS1zdGFydC1jb3JuZXIiOiJib3R0b20iOnRoaXMuY29sPHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQmJihhPSJpbmxpbmUtc3RhcnQiKSxhfX1ybChDYixfWGUpO2NvbnN0IENYZT17bmFtZToiZWRpdG9y''@;'; put 'put ''Q2xvc2VBbmRTYXZlQnlBcnJvd0tleXMiLGNhbGxiYWNrKGwsYyxhKXtjb25zdCBkPWwuX2dldEVkaXRvck1hbmFnZXIoKSxoPWQuZ2V0QWN0aXZlRWRpdG9yKCk7aC5pc0luRnVsbEVkaXRNb2RlKCkmJmguc3RhdGU9PT14Yy5FRElUSU5HfHwoZC5jbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2Vz''@;'; put 'put ''KCksbC5nZXRTZWxlY3RlZCgpJiYoYS5pbmNsdWRlcygiYXJyb3dkb3duIik/bC5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoMSwwKTphLmluY2x1ZGVzKCJhcnJvd3VwIik/bC5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLTEsMCk6YS5pbmNsdWRlcygiYXJyb3dsZWZ0Iik/bC5zZWxlY3Rp''@;'; put 'put ''b24udHJhbnNmb3JtU3RhcnQoMCwtMSpsLmdldERpcmVjdGlvbkZhY3RvcigpKTphLmluY2x1ZGVzKCJhcnJvd3JpZ2h0IikmJmwuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KDAsbC5nZXREaXJlY3Rpb25GYWN0b3IoKSkpLGMucHJldmVudERlZmF1bHQoKSl9fSxTWGU9e25hbWU6ImVkaXRv''@;'; put 'put ''ckNsb3NlQW5kU2F2ZUJ5RW50ZXIiLGNhbGxiYWNrKGwsYyl7Y29uc3QgYT1sLl9nZXRFZGl0b3JNYW5hZ2VyKCk7YS5jbG9zZUVkaXRvckFuZFNhdmVDaGFuZ2VzKGMuY3RybEtleXx8Yy5tZXRhS2V5KSxhLm1vdmVTZWxlY3Rpb25BZnRlckVudGVyKGMpfX0sTVhlPXtuYW1lOiJlZGl0b3JD''@;'; put 'put ''bG9zZVdpdGhvdXRTYXZpbmciLGNhbGxiYWNrKGwpe2NvbnN0IGM9bC5fZ2V0RWRpdG9yTWFuYWdlcigpO2MuY2xvc2VFZGl0b3JBbmRSZXN0b3JlT3JpZ2luYWxWYWx1ZShsLmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKSksYy5hY3RpdmVFZGl0b3IuZm9jdXMoKX19LHhY''@;'; put 'put ''ZT17bmFtZToiZWRpdG9yRmFzdE9wZW4iLGNhbGxiYWNrKGwsYyl7Y29uc3R7aGlnaGxpZ2h0OmF9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTthLmlzSGVhZGVyKCl8fGwuX2dldEVkaXRvck1hbmFnZXIoKS5vcGVuRWRpdG9yKG51bGwsYywhMCl9fSxFWGU9e25hbWU6ImVkaXRvck9wZW4i''@;'; put 'put ''LGNhbGxiYWNrKGwsYyxhKXtjb25zdCBkPWwuX2dldEVkaXRvck1hbmFnZXIoKSxoPWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx7aGlnaGxpZ2h0OmZ9PWg7aWYobC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpJiYhaC5pc0hlYWRlcigpJiZsLmNvdW50UmVuZGVyZWRDb2xzKCk+MCYmbC5jb3Vu''@;'; put 'put ''dFJlbmRlcmVkUm93cygpPjApe2NvbnN0IHY9bC5nZXRTZXR0aW5ncygpLFM9ImZ1bmN0aW9uIj09dHlwZW9mIHYuZW50ZXJNb3Zlcz92LmVudGVyTW92ZXMoYyk6di5lbnRlck1vdmVzO2EuaW5jbHVkZXMoInNoaWZ0Iik/bC5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXMoLVMucm93LC1TLmNv''@;'; put 'put ''bCk6bC5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXMoUy5yb3csUy5jb2wpfWVsc2UgZi5pc0hlYWRlcigpfHwobC5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZz9kLmNlbGxQcm9wZXJ0aWVzLnJlYWRPbmx5P2QubW92ZVNlbGVjdGlvbkFmdGVyRW50ZXIoYyk6ZC5vcGVuRWRpdG9y''@;'; put 'put ''KG51bGwsYywhMCk6ZC5tb3ZlU2VsZWN0aW9uQWZ0ZXJFbnRlcihjKSxqaChjKSl9fSxrWGU9e25hbWU6ImV4dGVuZENlbGxzU2VsZWN0aW9uRG93biIsY2FsbGJhY2sobCl7Y29uc3R7aGlnaGxpZ2h0OmN9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTshbC5zZWxlY3Rpb24uaXNTZWxlY3Rl''@;'; put 'put ''ZEJ5Q29sdW1uSGVhZGVyKCkmJiFsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmKGMuaXNDZWxsKCl8fGMuaXNIZWFkZXIoKSYmbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpJiZsLnNlbGVjdGlvbi50cmFuc2Zvcm1FbmQoMSwwKX19LEFYZT17bmFtZToiZXh0''@;'; put 'put ''ZW5kQ2VsbHNTZWxlY3Rpb25Eb3duQnlWaWV3cG9ydEhlaWdodCIsY2FsbGJhY2sobCl7Y29uc3R7dG86Y309bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGE9TWF0aC5taW4oYy5yb3crbC5jb3VudFZpc2libGVSb3dzKCksbC5jb3VudFJvd3MoKS0xKSxkPWwucm93SW5kZXhNYXBwZXIuZ2V0''@;'; put 'put ''TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEsLTEpO2lmKG51bGwhPT1kKXtjb25zdCBoPWwuX2NyZWF0ZUNlbGxDb29yZHMoZCxjLmNvbCksZj1jLnJvdy1sLnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3coKSx2PU1hdGgubWluKGgucm93LWYsbC5jb3VudFJvd3MoKS0xKTtsLnNlbGVjdGlv''@;'; put 'put ''bi5zZXRSYW5nZUVuZChoKSxsLnNjcm9sbFZpZXdwb3J0VG8oe3Jvdzp2LHZlcnRpY2FsU25hcDoidG9wIixob3Jpem9udGFsU25hcDoic3RhcnQifSl9fX0sRFhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvbkxlZnQiLGNhbGxiYWNrKGwpe2NvbnN0e2hpZ2hsaWdodDpjfT1sLmdldFNl''@;'; put 'put ''bGVjdGVkUmFuZ2VMYXN0KCk7IWwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpJiYhbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJihjLmlzQ2VsbCgpfHxjLmlzSGVhZGVyKCkmJmwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKSYmbC5zZWxl''@;'; put 'put ''Y3Rpb24udHJhbnNmb3JtRW5kKDAsLTEqbC5nZXREaXJlY3Rpb25GYWN0b3IoKSl9fSxJWGU9e25hbWU6ImV4dGVuZENlbGxzU2VsZWN0aW9uUmlnaHQiLGNhbGxiYWNrKGwpe2NvbnN0e2hpZ2hsaWdodDpjfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7IWwuc2VsZWN0aW9uLmlzU2VsZWN0''@;'; put 'put ''ZWRCeVJvd0hlYWRlcigpJiYhbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJihjLmlzQ2VsbCgpfHxjLmlzSGVhZGVyKCkmJmwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKSYmbC5zZWxlY3Rpb24udHJhbnNmb3JtRW5kKDAsbC5nZXREaXJlY3Rpb25GYWN0''@;'; put 'put ''b3IoKSl9fSxSWGU9e25hbWU6ImV4dGVuZENlbGxzU2VsZWN0aW9uVG9Db2x1bW5zIixjYWxsYmFjayhsKXtjb25zdHtoaWdobGlnaHQ6Yyxmcm9tOmEsdG86ZH09bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2wuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpP2wuc2VsZWN0aW9u''@;'; put 'put ''LnNlbGVjdEFsbCghMCwhMCk6bC5zZWxlY3RDb2x1bW5zKGEuY29sLGQuY29sLGMpfX0sTFhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdEJvdHRvbSIsY2FsbGJhY2sobCl7Y29uc3R7c2VsZWN0aW9uOmMscm93SW5kZXhNYXBwZXI6YX09bCx7aGlnaGxpZ2h0OmQsZnJvbTpo''@;'; put 'put ''LHRvOmZ9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWQuaXNIZWFkZXIoKSYmbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk7aWYoZC5pc0NlbGwoKXx8dil7Y29uc3QgUz1hLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChsLmNvdW50Um93cygpLTEsLTEpLFY9aC5jbG9u''@;'; put 'put ''ZSgpO1Yucm93PWQucm93LGMuc2V0UmFuZ2VTdGFydChWLHZvaWQgMCwhMSxkLmNsb25lKCkpLHYmJmMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQoYy5nZXRMYXllckxldmVsKCkpLGMuc2V0UmFuZ2VFbmQobC5fY3JlYXRlQ2VsbENvb3JkcyhTLGYuY29sKSl9fX0sT1hlPXtuYW1lOiJleHRl''@;'; put 'put ''bmRDZWxsc1NlbGVjdGlvblRvTW9zdElubGluZUVuZCIsY2FsbGJhY2sobCl7Y29uc3R7c2VsZWN0aW9uOmMsY29sdW1uSW5kZXhNYXBwZXI6YX09bCx7aGlnaGxpZ2h0OmQsZnJvbTpoLHRvOmZ9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5''@;'; put 'put ''Um93SGVhZGVyKCkmJiFsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmZC5pc0NlbGwoKSl7Y29uc3Qgdj1hLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChsLmNvdW50Q29scygpLTEsLTEpLFM9aC5jbG9uZSgpO1MuY29sPWQuY29sLGMuc2V0UmFuZ2VTdGFydChTLHZvaWQgMCwh''@;'; put 'put ''MSxkLmNsb25lKCkpLGMuc2V0UmFuZ2VFbmQobC5fY3JlYXRlQ2VsbENvb3JkcyhmLnJvdyx2KSl9fX0sUFhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdElubGluZVN0YXJ0IixjYWxsYmFjayhsKXtjb25zdHtzZWxlY3Rpb246Yyxjb2x1bW5JbmRleE1hcHBlcjphfT1sLHto''@;'; put 'put ''aWdobGlnaHQ6ZCxmcm9tOmgsdG86Zn09bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKCFsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSYmIWwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpJiZkLmlzQ2VsbCgpKXtjb25zdCB2PXBhcnNlSW50KGwuZ2V0U2V0dGlu''@;'; put 'put ''Z3MoKS5maXhlZENvbHVtbnNTdGFydCwxMCksUz1hLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh2LDEpLFY9aC5jbG9uZSgpO1YuY29sPWQuY29sLGMuc2V0UmFuZ2VTdGFydChWLHZvaWQgMCwhMSxkLmNsb25lKCkpLGMuc2V0UmFuZ2VFbmQobC5fY3JlYXRlQ2VsbENvb3JkcyhmLnJvdyxT''@;'; put 'put ''KSl9fX0sRlhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdExlZnQiLGNhbGxiYWNrKGwpe2NvbnN0e3NlbGVjdGlvbjpjLGNvbHVtbkluZGV4TWFwcGVyOmF9PWwse2hpZ2hsaWdodDpkLGZyb206aCx0bzpmfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksdj1kLmlzSGVhZGVy''@;'; put 'put ''KCkmJmwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpO2lmKGQuaXNDZWxsKCl8fHYpe2NvbnN0IFM9YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoLi4ubC5pc1J0bCgpP1tsLmNvdW50Q29scygpLTEsLTFdOlswLDFdKSxWPWguY2xvbmUoKTtWLmNvbD1kLmNvbCxjLnNl''@;'; put 'put ''dFJhbmdlU3RhcnQoVix2b2lkIDAsITEsZC5jbG9uZSgpKSx2JiZjLnNlbGVjdGVkQnlDb2x1bW5IZWFkZXIuYWRkKGMuZ2V0TGF5ZXJMZXZlbCgpKSxjLnNldFJhbmdlRW5kKGwuX2NyZWF0ZUNlbGxDb29yZHMoZi5yb3csUykpfX19LE5YZT17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25U''@;'; put 'put ''b01vc3RSaWdodCIsY2FsbGJhY2sobCl7Y29uc3R7c2VsZWN0aW9uOmMsY29sdW1uSW5kZXhNYXBwZXI6YX09bCx7aGlnaGxpZ2h0OmQsZnJvbTpoLHRvOmZ9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWQuaXNIZWFkZXIoKSYmbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVh''@;'; put 'put ''ZGVyKCk7aWYoZC5pc0NlbGwoKXx8dil7Y29uc3QgUz1hLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCguLi5sLmlzUnRsKCk/WzAsMV06W2wuY291bnRDb2xzKCktMSwtMV0pLFY9aC5jbG9uZSgpO1YuY29sPWQuY29sLGMuc2V0UmFuZ2VTdGFydChWLHZvaWQgMCwhMSxkLmNsb25lKCkpLHYm''@;'; put 'put ''JmMuc2VsZWN0ZWRCeUNvbHVtbkhlYWRlci5hZGQoYy5nZXRMYXllckxldmVsKCkpLGMuc2V0UmFuZ2VFbmQobC5fY3JlYXRlQ2VsbENvb3JkcyhmLnJvdyxTKSl9fX0sSFhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdFRvcCIsY2FsbGJhY2sobCl7Y29uc3R7c2VsZWN0aW9u''@;'; put 'put ''OmMscm93SW5kZXhNYXBwZXI6YX09bCx7aGlnaGxpZ2h0OmQsZnJvbTpoLHRvOmZ9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWQuaXNIZWFkZXIoKSYmbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCk7aWYoZC5pc0NlbGwoKXx8dil7Y29uc3QgUz1hLmdldE5lYXJlc3RO''@;'; put 'put ''b3RIaWRkZW5JbmRleCgwLDEpLFY9aC5jbG9uZSgpO1Yucm93PWQucm93LGMuc2V0UmFuZ2VTdGFydChWLHZvaWQgMCwhMSxkLmNsb25lKCkpLHYmJmMuc2VsZWN0ZWRCeVJvd0hlYWRlci5hZGQoYy5nZXRMYXllckxldmVsKCkpLGMuc2V0UmFuZ2VFbmQobC5fY3JlYXRlQ2VsbENvb3JkcyhT''@;'; put 'put ''LGYuY29sKSl9fX0sVlhlPXtuYW1lOiJleHRlbmRDZWxsc1NlbGVjdGlvblRvUm93cyIsY2FsbGJhY2sobCl7Y29uc3R7aGlnaGxpZ2h0OmMsZnJvbTphLHRvOmR9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKT9sLnNlbGVj''@;'; put 'put ''dGlvbi5zZWxlY3RBbGwoITAsITApOmwuc2VsZWN0Um93cyhhLnJvdyxkLnJvdyxjKX19LEJYZT17bmFtZToiZXh0ZW5kQ2VsbHNTZWxlY3Rpb25VcCIsY2FsbGJhY2sobCl7Y29uc3R7aGlnaGxpZ2h0OmN9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTshbC5zZWxlY3Rpb24uaXNTZWxlY3Rl''@;'; put 'put ''ZEJ5Q29sdW1uSGVhZGVyKCkmJiFsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmKGMuaXNDZWxsKCl8fGMuaXNIZWFkZXIoKSYmbC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpJiZsLnNlbGVjdGlvbi50cmFuc2Zvcm1FbmQoLTEsMCl9fSxqWGU9e25hbWU6ImV4''@;'; put 'put ''dGVuZENlbGxzU2VsZWN0aW9uVXBCeVZpZXdwb3J0SGVpZ2h0IixjYWxsYmFjayhsKXtjb25zdHt0bzpjfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYT1NYXRoLm1heChjLnJvdy1sLmNvdW50VmlzaWJsZVJvd3MoKSwwKSxkPWwucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRl''@;'; put 'put ''bkluZGV4KGEsMSk7aWYobnVsbCE9PWQpe2NvbnN0IGg9bC5fY3JlYXRlQ2VsbENvb3JkcyhkLGMuY29sKSxmPWMucm93LWwudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLHY9TWF0aC5tYXgoaC5yb3ctZiwwKTtsLnNlbGVjdGlvbi5zZXRSYW5nZUVuZChoKSxsLnNjcm9sbFZpZXdw''@;'; put 'put ''b3J0VG8oe3Jvdzp2LHZlcnRpY2FsU25hcDoidG9wIixob3Jpem9udGFsU25hcDoic3RhcnQifSl9fX0sVVhlPXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvbkRvd24iLGNhbGxiYWNrKGwpe2xldHtzZWxlY3Rpb246Y309bDtjLnRyYW5zZm9ybVN0YXJ0KDEsMCl9fSxaWGU9e25hbWU6Im1vdmVD''@;'; put 'put ''ZWxsU2VsZWN0aW9uRG93bkJ5Vmlld3BvcnRIZWlnaHQiLGNhbGxiYWNrKGwpe2NvbnN0e25hdmlnYWJsZUhlYWRlcnM6Y309bC5nZXRTZXR0aW5ncygpLGE9Yz9sLmNvdW50Q29sSGVhZGVycygpOjAse3JvdzpkfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0O2xldCBoPWwu''@;'; put 'put ''Y291bnRWaXNpYmxlUm93cygpK2E7ZD09PWwuY291bnRSb3dzKCktMT9oPTE6ZCtoPmwuY291bnRSb3dzKCkmJihoPWwuY291bnRSb3dzKCktZC0xKSxsLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydChoLDApLGwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQucm93PDAmJmwuc2Ny''@;'; put 'put ''b2xsVmlld3BvcnRUbyh7cm93OjB9KX19LFlYZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25JbmxpbmVFbmQiLGNhbGxiYWNrKGwsYyl7Y29uc3QgYT1sLmdldFNldHRpbmdzKCksZD1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaD0iZnVuY3Rpb24iPT10eXBlb2YgYS50YWJNb3Zlcz9hLnRh''@;'; put 'put ''Yk1vdmVzKGMpOmEudGFiTW92ZXM7bC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpJiYhZC5pc0hlYWRlcigpJiZsLmNvdW50UmVuZGVyZWRDb2xzKCk+MCYmbC5jb3VudFJlbmRlcmVkUm93cygpPjA/bC5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXMoLWgucm93LC1oLmNvbCk6bC5zZWxlY3Rpb24u''@;'; put 'put ''dHJhbnNmb3JtU3RhcnQoLWgucm93LC1oLmNvbCl9fSxXWGU9e25hbWU6Im1vdmVDZWxsU2VsZWN0aW9uSW5saW5lU3RhcnQiLGNhbGxiYWNrKGwsYyl7Y29uc3QgYT1sLmdldFNldHRpbmdzKCksZD1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksaD0iZnVuY3Rpb24iPT10eXBlb2YgYS50YWJN''@;'; put 'put ''b3Zlcz9hLnRhYk1vdmVzKGMpOmEudGFiTW92ZXM7bC5zZWxlY3Rpb24uaXNNdWx0aXBsZSgpJiYhZC5pc0hlYWRlcigpJiZsLmNvdW50UmVuZGVyZWRDb2xzKCk+MCYmbC5jb3VudFJlbmRlcmVkUm93cygpPjA/bC5zZWxlY3Rpb24udHJhbnNmb3JtRm9jdXMoaC5yb3csaC5jb2wpOmwuc2Vs''@;'; put 'put ''ZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KGgucm93LGguY29sKX19LEdYZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25MZWZ0IixjYWxsYmFjayhsKXtsLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLC0xKmwuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0sJFhlPXtuYW1lOiJtb3ZlQ2VsbFNlbGVj''@;'; put 'put ''dGlvblJpZ2h0IixjYWxsYmFjayhsKXtsLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCgwLGwuZ2V0RGlyZWN0aW9uRmFjdG9yKCkpfX0scVhlPXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdEJvdHRvbSIsY2FsbGJhY2sobCl7Y29uc3R7Y29sOmN9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxh''@;'; put 'put ''c3QoKS5oaWdobGlnaHQ7bGV0IGE9bC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobC5jb3VudFJvd3MoKS0xLC0xKTtudWxsPT09YSYmKGE9LTEpLGwuc2VsZWN0aW9uLnNldFJhbmdlU3RhcnQobC5fY3JlYXRlQ2VsbENvb3JkcyhhLGMpKX19LEtYZT17bmFtZToi''@;'; put 'put ''bW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RCb3R0b21JbmxpbmVFbmQiLGNhbGxiYWNrKGwpe2NvbnN0e3NlbGVjdGlvbjpjLHJvd0luZGV4TWFwcGVyOmEsY29sdW1uSW5kZXhNYXBwZXI6ZH09bCxoPXBhcnNlSW50KGwuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NCb3R0b20sMTApLGY9YS5nZXRO''@;'; put 'put ''ZWFyZXN0Tm90SGlkZGVuSW5kZXgobC5jb3VudFJvd3MoKS1oLTEsLTEpLHY9ZC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgobC5jb3VudENvbHMoKS0xLC0xKTtjLnNldFJhbmdlU3RhcnQobC5fY3JlYXRlQ2VsbENvb3JkcyhmLHYpKX19LFhYZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25U''@;'; put 'put ''b01vc3RJbmxpbmVFbmQiLGNhbGxiYWNrKGwpe2NvbnN0e3NlbGVjdGlvbjpjLGNvbHVtbkluZGV4TWFwcGVyOmF9PWw7Yy5zZXRSYW5nZVN0YXJ0KGwuX2NyZWF0ZUNlbGxDb29yZHMobC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3csYS5nZXROZWFyZXN0Tm90SGlkZGVu''@;'; put 'put ''SW5kZXgobC5jb3VudENvbHMoKS0xLC0xKSkpfX0sSlhlPXtuYW1lOiJtb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdElubGluZVN0YXJ0IixjYWxsYmFjayhsKXtjb25zdHtzZWxlY3Rpb246Yyxjb2x1bW5JbmRleE1hcHBlcjphfT1sLGQ9cGFyc2VJbnQobC5nZXRTZXR0aW5ncygpLmZpeGVkQ29s''@;'; put 'put ''dW1uc1N0YXJ0LDEwKSxoPWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQucm93LGY9YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZCwxKTtjLnNldFJhbmdlU3RhcnQobC5fY3JlYXRlQ2VsbENvb3JkcyhoLGYpKX19LFFYZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01v''@;'; put 'put ''c3RMZWZ0IixjYWxsYmFjayhsKXtjb25zdHtzZWxlY3Rpb246Yyxjb2x1bW5JbmRleE1hcHBlcjphfT1sLGQ9bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodC5yb3c7bGV0IGg9YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoLi4ubC5pc1J0bCgpP1tsLmNvdW50Q29scygpLTEs''@;'; put 'put ''LTFdOlswLDFdKTtudWxsPT09aCYmKGg9bC5pc1J0bCgpPy0xOi1sLmNvdW50Um93SGVhZGVycygpKSxjLnNldFJhbmdlU3RhcnQobC5fY3JlYXRlQ2VsbENvb3JkcyhkLGgpKX19LGVKZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RSaWdodCIsY2FsbGJhY2sobCl7Y29uc3R7c2Vs''@;'; put 'put ''ZWN0aW9uOmMsY29sdW1uSW5kZXhNYXBwZXI6YX09bCx7cm93OmR9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQ7bGV0IGg9YS5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoLi4ubC5pc1J0bCgpP1swLDFdOltsLmNvdW50Q29scygpLTEsLTFdKTtudWxsPT09aCYmKGg9bC5p''@;'; put 'put ''c1J0bCgpPy1sLmNvdW50Um93SGVhZGVycygpOi0xKSxjLnNldFJhbmdlU3RhcnQobC5fY3JlYXRlQ2VsbENvb3JkcyhkLGgpKX19LHRKZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RUb3AiLGNhbGxiYWNrKGwpe2NvbnN0e2NvbDpjfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCku''@;'; put 'put ''aGlnaGxpZ2h0O2xldCBhPWwucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KDAsMSk7bnVsbD09PWEmJihhPS1sLmNvdW50Q29sSGVhZGVycygpKSxsLnNlbGVjdGlvbi5zZXRSYW5nZVN0YXJ0KGwuX2NyZWF0ZUNlbGxDb29yZHMoYSxjKSl9fSxuSmU9e25hbWU6Im1v''@;'; put 'put ''dmVDZWxsU2VsZWN0aW9uVG9Nb3N0VG9wSW5saW5lU3RhcnQiLGNhbGxiYWNrKGwpe2NvbnN0e3NlbGVjdGlvbjpjLHJvd0luZGV4TWFwcGVyOmEsY29sdW1uSW5kZXhNYXBwZXI6ZH09bCxoPXBhcnNlSW50KGwuZ2V0U2V0dGluZ3MoKS5maXhlZFJvd3NUb3AsMTApLGY9cGFyc2VJbnQobC5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LDEwKSx2PWEuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGgsMSksUz1kLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChmLDEpO2Muc2V0UmFuZ2VTdGFydChsLl9jcmVhdGVDZWxsQ29vcmRzKHYsUykpfX0sckplPXtuYW1lOiJtb3ZlQ2Vs''@;'; put 'put ''bFNlbGVjdGlvblVwIixjYWxsYmFjayhsKXtsZXR7c2VsZWN0aW9uOmN9PWw7Yy50cmFuc2Zvcm1TdGFydCgtMSwwKX19LGlKZT17bmFtZToibW92ZUNlbGxTZWxlY3Rpb25VcEJ5Vmlld3BvcnRIaWdodCIsY2FsbGJhY2sobCl7Y29uc3R7bmF2aWdhYmxlSGVhZGVyczpjfT1sLmdldFNldHRp''@;'; put 'put ''bmdzKCksYT1jP2wuY291bnRDb2xIZWFkZXJzKCk6MCx7cm93OmR9PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQ7bGV0IGg9LShsLmNvdW50VmlzaWJsZVJvd3MoKSthKTtkPT09LWE/aD0tMTpkK2g8YSYmKGg9LShkK2EpKSxsLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydCho''@;'; put 'put ''LDApLGwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQucm93PDAmJmwuc2Nyb2xsVmlld3BvcnRUbyh7cm93OjB9KX19LHNKZT17bmFtZToiZW1wdHlTZWxlY3RlZENlbGxzIixjYWxsYmFjayhsKXtsLmVtcHR5U2VsZWN0ZWRDZWxscygpLGwuX2dldEVkaXRvck1hbmFnZXIoKS5w''@;'; put 'put ''cmVwYXJlRWRpdG9yKCl9fSxhSmU9e25hbWU6InNjcm9sbFRvRm9jdXNlZENlbGwiLGNhbGxiYWNrKGwpe2NvbnN0e2hpZ2hsaWdodDpjfT1sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYT1sLnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2libGVSb3coKS0xLGQ9bC52aWV3LmdldEZpcnN0RnVsbHlW''@;'; put 'put ''aXNpYmxlQ29sdW1uKCktMSxoPWwudmlldy5nZXRMYXN0RnVsbHlWaXNpYmxlUm93KCkrMSxmPWwudmlldy5nZXRMYXN0RnVsbHlWaXNpYmxlQ29sdW1uKCkrMSx2PWwuX2NyZWF0ZUNlbGxDb29yZHMoYSxkKSxTPWwuX2NyZWF0ZUNlbGxDb29yZHMoaCxmKTtpZighbC5fY3JlYXRlQ2VsbFJh''@;'; put 'put ''bmdlKHYsdixTKS5pbmNsdWRlcyhjKSYmKGMucm93Pj0wfHxjLmNvbD49MCkpe2NvbnN0IFE9e307aWYoYy5jb2w+PTApe2NvbnN0IGRlPU1hdGguZmxvb3IobC5jb3VudFZpc2libGVDb2xzKCkvMik7US5jb2w9TWF0aC5tYXgoYy5jb2wtZGUsMCl9aWYoYy5yb3c+PTApe2NvbnN0IGRlPU1h''@;'; put 'put ''dGguZmxvb3IobC5jb3VudFZpc2libGVSb3dzKCkvMik7US5yb3c9TWF0aC5tYXgoYy5yb3ctZGUsMCl9bC5zY3JvbGxWaWV3cG9ydFRvKHsuLi5RLHZlcnRpY2FsU25hcDoidG9wIixob3Jpem9udGFsU25hcDoic3RhcnQifSl9fX0sbEplPXtuYW1lOiJzZWxlY3RBbGxDZWxscyIsY2FsbGJh''@;'; put 'put ''Y2sobCl7bC5zZWxlY3Rpb24uc2VsZWN0QWxsKCEwLCEwLHtkaXNhYmxlSGVhZGVyc0hpZ2hsaWdodDohMH0pfX0sY0plPXtuYW1lOiJzZWxlY3RBbGxDZWxsc0FuZEhlYWRlcnMiLGNhbGxiYWNrKGwpe2wuc2VsZWN0aW9uLnNlbGVjdEFsbCghMCwhMCx7ZGlzYWJsZUhlYWRlcnNIaWdobGln''@;'; put 'put ''aHQ6ITF9KX19LHVKZT17bmFtZToicG9wdWxhdGVTZWxlY3RlZENlbGxzRGF0YSIsY2FsbGJhY2sobCl7Y29uc3QgYz1sLmdldFNlbGVjdGVkUmFuZ2UoKSx7cm93OmEsY29sOmR9PWNbYy5sZW5ndGgtMV0uaGlnaGxpZ2h0Lm5vcm1hbGl6ZSgpLGg9bC5nZXREYXRhQXRDZWxsKGEsZCksZj1u''@;'; put 'put ''ZXcgTWFwO2ZvcihsZXQgdj0wO3Y8Yy5sZW5ndGg7disrKWNbdl0uZm9yQWxsKChTLFYpPT57aWYoUz49MCYmVj49MCYmKFMhPT1hfHxWIT09ZCkpe2NvbnN0e3JlYWRPbmx5OlF9PWwuZ2V0Q2VsbE1ldGEoUyxWKTtRfHxmLnNldChgJHtTfXgke1Z9YCxbUyxWLGhdKX19KTtsLnNldERhdGFB''@;'; put 'put ''dENlbGwoQXJyYXkuZnJvbShmLnZhbHVlcygpKSl9fSxkSmU9Wy4uLmZ1bmN0aW9uIFRYZSgpe3JldHVyblttWGUsQ1hlLFNYZSxNWGUseFhlLEVYZV19KCksLi4uZnVuY3Rpb24gelhlKCl7cmV0dXJuW2tYZSxBWGUsRFhlLElYZSxSWGUsTFhlLE9YZSxQWGUsRlhlLE5YZSxIWGUsVlhlLEJY''@;'; put 'put ''ZSxqWGVdfSgpLC4uLmZ1bmN0aW9uIG9KZSgpe3JldHVybltVWGUsWlhlLFlYZSxXWGUsR1hlLCRYZSxxWGUsS1hlLFhYZSxKWGUsUVhlLGVKZSx0SmUsbkplLHJKZSxpSmVdfSgpLHNKZSxhSmUsbEplLGNKZSx1SmVdO2Z1bmN0aW9uIFdoZShsKXtjb25zdCBjPXt9O3JldHVybiBkSmUuZm9y''@;'; put 'put ''RWFjaChhPT57bGV0e25hbWU6ZCxjYWxsYmFjazpofT1hO2NbZF09ZnVuY3Rpb24oKXtmb3IodmFyIGY9YXJndW1lbnRzLmxlbmd0aCx2PW5ldyBBcnJheShmKSxTPTA7UzxmO1MrKyl2W1NdPWFyZ3VtZW50c1tTXTtyZXR1cm4gaChsLC4uLnYpfX0pLGN9ZnVuY3Rpb24gaEplKGwpe2NvbnN0''@;'; put 'put ''IGM9bC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5hZGRDb250ZXh0KCJlZGl0b3IiKSxhPVdoZShsKSxkPXtncm91cDpZbX07Yy5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkVudGVyIl0sWyJFbnRlciIsIlNoaWZ0Il1dLGNhbGxiYWNrOihoLGYpPT5hLmVkaXRvckNsb3NlQW5kU2F2ZUJ5RW50ZXIo''@;'; put 'put ''aCxmKX0se2tleXM6W1siRW50ZXIiLCJDb250cm9sL01ldGEiXSxbIkVudGVyIiwiQ29udHJvbC9NZXRhIiwiU2hpZnQiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KGgsZik9PmEuZWRpdG9yQ2xvc2VBbmRTYXZlQnlFbnRlcihoLGYpfSx7a2V5czpbWyJUYWIiXSxbIlRhYiIsIlNoaWZ0''@;'; put 'put ''Il0sWyJQYWdlRG93biJdLFsiUGFnZVVwIl1dLGZvcndhcmRUb0NvbnRleHQ6bC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIiksY2FsbGJhY2s6KGgsZik9PmEuZWRpdG9yQ2xvc2VBbmRTYXZlKGgsZil9LHtrZXlzOltbIkFycm93RG93biJdLFsiQXJyb3dVcCJdLFsi''@;'; put 'put ''QXJyb3dMZWZ0Il0sWyJBcnJvd1JpZ2h0Il1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOihoLGYpPT5hLmVkaXRvckNsb3NlQW5kU2F2ZUJ5QXJyb3dLZXlzKGgsZil9LHtrZXlzOltbIkVzY2FwZSJdLFsiRXNjYXBlIiwiQ29udHJvbC9NZXRhIl1dLGNhbGxiYWNrOigpPT5hLmVkaXRv''@;'; put 'put ''ckNsb3NlV2l0aG91dFNhdmluZygpfV0sZCl9ZnVuY3Rpb24gZkplKGwpe2NvbnN0IGM9bC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5hZGRDb250ZXh0KCJncmlkIiksYT1XaGUobCksZD17cnVuT25seUlmOigpPT57Y29uc3R7bmF2aWdhYmxlSGVhZGVyczpofT1sLmdldFNldHRpbmdzKCk7cmV0''@;'; put 'put ''dXJuIHNvKGwuZ2V0U2VsZWN0ZWQoKSkmJihofHwhaCYmbC5jb3VudFJlbmRlcmVkUm93cygpPjAmJmwuY291bnRSZW5kZXJlZENvbHMoKT4wKX0sZ3JvdXA6VmhlfTtjLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siRjIiXV0sY2FsbGJhY2s6aD0+YS5lZGl0b3JGYXN0T3BlbihoKX0se2tleXM6''@;'; put 'put ''W1siRW50ZXIiXSxbIkVudGVyIiwiU2hpZnQiXV0sY2FsbGJhY2s6KGgsZik9PmEuZWRpdG9yT3BlbihoLGYpfSx7a2V5czpbWyJCYWNrc3BhY2UiXSxbIkRlbGV0ZSJdXSxjYWxsYmFjazooKT0+YS5lbXB0eVNlbGVjdGVkQ2VsbHMoKX1dLHtncm91cDpZbSxydW5Pbmx5SWY6KCk9PnNvKGwu''@;'; put 'put ''Z2V0U2VsZWN0ZWQoKSl9KSxjLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQ29udHJvbC9NZXRhIiwiQSJdXSxjYWxsYmFjazooKT0+YS5zZWxlY3RBbGxDZWxscygpLHJ1bk9ubHlJZjooKT0+IWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5oaWdobGlnaHQuaXNIZWFkZXIoKX0se2tleXM6W1si''@;'; put 'put ''Q29udHJvbC9NZXRhIiwiQSJdXSxjYWxsYmFjazooKT0+e30scnVuT25seUlmOigpPT5sLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LmlzSGVhZGVyKCkscHJldmVudERlZmF1bHQ6ITB9LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIlNoaWZ0IiwiU3BhY2UiXV0sY2FsbGJhY2s6''@;'; put 'put ''KCk9PmEuc2VsZWN0QWxsQ2VsbHNBbmRIZWFkZXJzKCl9LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOigpPT5hLnBvcHVsYXRlU2VsZWN0ZWRDZWxsc0RhdGEoKSxydW5Pbmx5SWY6KCk9PiFsLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LmlzSGVh''@;'; put 'put ''ZGVyKCkmJmwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5nZXRDZWxsc0NvdW50KCk+MX0se2tleXM6W1siQ29udHJvbCIsIlNwYWNlIl1dLGNhcHR1cmVDdHJsOiEwLGNhbGxiYWNrOigpPT5hLmV4dGVuZENlbGxzU2VsZWN0aW9uVG9Db2x1bW5zKCl9LHtrZXlzOltbIlNoaWZ0IiwiU3BhY2Ui''@;'; put 'put ''XV0sc3RvcFByb3BhZ2F0aW9uOiEwLGNhbGxiYWNrOigpPT5hLmV4dGVuZENlbGxzU2VsZWN0aW9uVG9Sb3dzKCl9LHtrZXlzOltbIkFycm93VXAiXV0sY2FsbGJhY2s6KCk9PmEubW92ZUNlbGxTZWxlY3Rpb25VcCgpfSx7a2V5czpbWyJBcnJvd1VwIiwiQ29udHJvbC9NZXRhIl1dLGNhcHR1''@;'; put 'put ''cmVDdHJsOiEwLGNhbGxiYWNrOigpPT5hLm1vdmVDZWxsU2VsZWN0aW9uVG9Nb3N0VG9wKCl9LHtrZXlzOltbIkFycm93VXAiLCJTaGlmdCJdXSxjYWxsYmFjazooKT0+YS5leHRlbmRDZWxsc1NlbGVjdGlvblVwKCl9LHtrZXlzOltbIkFycm93VXAiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJd''@;'; put 'put ''XSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+YS5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdFRvcCgpLHJ1bk9ubHlJZjooKT0+IShsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8bC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkpfSx7a2V5czpbWyJB''@;'; put 'put ''cnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9PmEubW92ZUNlbGxTZWxlY3Rpb25Eb3duKCl9LHtrZXlzOltbIkFycm93RG93biIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+YS5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdEJvdHRvbSgpfSx7a2V5czpbWyJBcnJv''@;'; put 'put ''d0Rvd24iLCJTaGlmdCJdXSxjYWxsYmFjazooKT0+YS5leHRlbmRDZWxsc1NlbGVjdGlvbkRvd24oKX0se2tleXM6W1siQXJyb3dEb3duIiwiU2hpZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PmEuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RCb3R0''@;'; put 'put ''b20oKSxydW5Pbmx5SWY6KCk9PiEobC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fGwuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpKX0se2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOigpPT5hLm1vdmVDZWxsU2VsZWN0aW9uTGVmdCgpfSx7a2V5czpb''@;'; put 'put ''WyJBcnJvd0xlZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PmEubW92ZUNlbGxTZWxlY3Rpb25Ub01vc3RMZWZ0KCl9LHtrZXlzOltbIkFycm93TGVmdCIsIlNoaWZ0Il1dLGNhbGxiYWNrOigpPT5hLmV4dGVuZENlbGxzU2VsZWN0aW9uTGVmdCgpfSx7''@;'; put 'put ''a2V5czpbWyJBcnJvd0xlZnQiLCJTaGlmdCIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+YS5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdExlZnQoKSxydW5Pbmx5SWY6KCk9PiEobC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl8fGwuc2VsZWN0''@;'; put 'put ''aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpKX0se2tleXM6W1siQXJyb3dSaWdodCJdXSxjYWxsYmFjazooKT0+YS5tb3ZlQ2VsbFNlbGVjdGlvblJpZ2h0KCl9LHtrZXlzOltbIkFycm93UmlnaHQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PmEubW92''@;'; put 'put ''ZUNlbGxTZWxlY3Rpb25Ub01vc3RSaWdodCgpfSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiU2hpZnQiXV0sY2FsbGJhY2s6KCk9PmEuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25SaWdodCgpfSx7a2V5czpbWyJBcnJvd1JpZ2h0IiwiU2hpZnQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAs''@;'; put 'put ''Y2FsbGJhY2s6KCk9PmEuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25Ub01vc3RSaWdodCgpLHJ1bk9ubHlJZjooKT0+IShsLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8bC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Um93SGVhZGVyKCkpfSx7a2V5czpbWyJIb21lIl1dLGNhcHR1cmVDdHJs''@;'; put 'put ''OiEwLGNhbGxiYWNrOigpPT5hLm1vdmVDZWxsU2VsZWN0aW9uVG9Nb3N0SW5saW5lU3RhcnQoKSxydW5Pbmx5SWY6KCk9Pmwudmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX0se2tleXM6W1siSG9tZSIsIlNoaWZ0Il1dLGNhbGxiYWNrOigpPT5hLmV4dGVuZENl''@;'; put 'put ''bGxzU2VsZWN0aW9uVG9Nb3N0SW5saW5lU3RhcnQoKX0se2tleXM6W1siSG9tZSIsIkNvbnRyb2wvTWV0YSJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+YS5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdFRvcElubGluZVN0YXJ0KCkscnVuT25seUlmOigpPT5sLnZpZXcuaXNNYWluVGFi''@;'; put 'put ''bGVOb3RGdWxseUNvdmVyZWRCeU92ZXJsYXlzKCl9LHtrZXlzOltbIkVuZCJdXSxjYXB0dXJlQ3RybDohMCxjYWxsYmFjazooKT0+YS5tb3ZlQ2VsbFNlbGVjdGlvblRvTW9zdElubGluZUVuZCgpLHJ1bk9ubHlJZjooKT0+bC52aWV3LmlzTWFpblRhYmxlTm90RnVsbHlDb3ZlcmVkQnlPdmVy''@;'; put 'put ''bGF5cygpfSx7a2V5czpbWyJFbmQiLCJTaGlmdCJdXSxjYWxsYmFjazooKT0+YS5leHRlbmRDZWxsc1NlbGVjdGlvblRvTW9zdElubGluZUVuZCgpfSx7a2V5czpbWyJFbmQiLCJDb250cm9sL01ldGEiXV0sY2FwdHVyZUN0cmw6ITAsY2FsbGJhY2s6KCk9PmEubW92ZUNlbGxTZWxlY3Rpb25U''@;'; put 'put ''b01vc3RCb3R0b21JbmxpbmVFbmQoKSxydW5Pbmx5SWY6KCk9Pmwudmlldy5pc01haW5UYWJsZU5vdEZ1bGx5Q292ZXJlZEJ5T3ZlcmxheXMoKX0se2tleXM6W1siUGFnZVVwIl1dLGNhbGxiYWNrOigpPT5hLm1vdmVDZWxsU2VsZWN0aW9uVXBCeVZpZXdwb3J0SGlnaHQoKX0se2tleXM6W1si''@;'; put 'put ''UGFnZVVwIiwiU2hpZnQiXV0sY2FsbGJhY2s6KCk9PmEuZXh0ZW5kQ2VsbHNTZWxlY3Rpb25VcEJ5Vmlld3BvcnRIZWlnaHQoKX0se2tleXM6W1siUGFnZURvd24iXV0sY2FsbGJhY2s6KCk9PmEubW92ZUNlbGxTZWxlY3Rpb25Eb3duQnlWaWV3cG9ydEhlaWdodCgpfSx7a2V5czpbWyJQYWdl''@;'; put 'put ''RG93biIsIlNoaWZ0Il1dLGNhbGxiYWNrOigpPT5hLmV4dGVuZENlbGxzU2VsZWN0aW9uRG93bkJ5Vmlld3BvcnRIZWlnaHQoKX0se2tleXM6W1siVGFiIl1dLHByZXZlbnREZWZhdWx0OiExLGNhbGxiYWNrOmg9PmEubW92ZUNlbGxTZWxlY3Rpb25JbmxpbmVTdGFydChoKX0se2tleXM6W1si''@;'; put 'put ''U2hpZnQiLCJUYWIiXV0scHJldmVudERlZmF1bHQ6ITEsY2FsbGJhY2s6aD0+YS5tb3ZlQ2VsbFNlbGVjdGlvbklubGluZUVuZChoKX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiQmFja3NwYWNlIl1dLGNhbGxiYWNrOigpPT5hLnNjcm9sbFRvRm9jdXNlZENlbGwoKX1dLGQpfWxldCBicT1u''@;'; put 'put ''dWxsO2NvbnN0IHlxPW5ldyBNYXA7ZnVuY3Rpb24gR2hlKGwsYyl7dmFyIGEsZD10aGlzO2xldCBoPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sZj10aGlzO2NvbnN0IHY9bmV3IHpoKGYpO2xldCBTLFYsUSxkZSxwZSxDZSxPZT0hMDso''@;'; put 'put ''ZnVuY3Rpb24gTiRlKGwpe3JldHVybiBsPT09dkd9KShoKSYmZnVuY3Rpb24gRiRlKGwpe1lkZS5zZXQobCwhMCl9KHRoaXMpLHRoaXMucm9vdEVsZW1lbnQ9bCx0aGlzLnJvb3REb2N1bWVudD1sLm93bmVyRG9jdW1lbnQsdGhpcy5yb290V2luZG93PXRoaXMucm9vdERvY3VtZW50LmRlZmF1''@;'; put 'put ''bHRWaWV3LHRoaXMuaXNEZXN0cm95ZWQ9ITEsdGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPTAsdGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyPTA7Y29uc3QgWWU9bnVsbCE9PShhPWM/LmxheW91dERpcmVjdGlvbikmJnZvaWQgMCE9PWE/YToiaW5oZXJpdCIsZXQ9WyJydGwiLCJs''@;'; put 'put ''dHIiXS5pbmNsdWRlcyhZZSk/WWU6dGhpcy5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCkuZGlyZWN0aW9uO3RoaXMucm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJkaXIiLGV0KSx0aGlzLmlzUnRsPWZ1bmN0aW9uKCl7cmV0dXJuInJ0bCI9PT1ldH0sdGhp''@;'; put 'put ''cy5pc0x0cj1mdW5jdGlvbigpe3JldHVybiFmLmlzUnRsKCl9LHRoaXMuZ2V0RGlyZWN0aW9uRmFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGYuaXNMdHIoKT8xOi0xfSxjLmxhbmd1YWdlPWZ1bmN0aW9uIExxZShsKXtsZXQgYz1zaGUobCk7cmV0dXJuIHJxKGMpfHwoYz1ucSxhaGUobCkpLGN9''@;'; put 'put ''KGMubGFuZ3VhZ2UpO2NvbnN0IGR0PW5ldyBMaGUoZixjLFtWS2UsV0tlXSksaHQ9ZHQuZ2V0VGFibGVNZXRhKCksTXQ9ZHQuZ2V0R2xvYmFsTWV0YSgpLFF0PXlMKCk7dGhpcy5jb250YWluZXI9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5yZW5kZXJDYWxs''@;'; put 'put ''PSExLGwuaW5zZXJ0QmVmb3JlKHRoaXMuY29udGFpbmVyLGwuZmlyc3RDaGlsZCksSEwodGhpcykmJnMxZShjLmxpY2Vuc2VLZXksbCksdGhpcy5ndWlkPWBodF8ke3JXKCl9YCx5cS5zZXQodGhpcy5ndWlkLHRoaXMpLHRoaXMuY29sdW1uSW5kZXhNYXBwZXI9bmV3IExHLHRoaXMucm93SW5k''@;'; put 'put ''ZXhNYXBwZXI9bmV3IExHLHRoaXMuY29sdW1uSW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJpbmRleGVzU2VxdWVuY2VDaGFuZ2UiLFN0PT57Zi5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5TZXF1ZW5jZUNoYW5nZSIsU3QpfSksdGhpcy5yb3dJbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImluZGV4''@;'; put 'put ''ZXNTZXF1ZW5jZUNoYW5nZSIsU3Q9PntmLnJ1bkhvb2tzKCJhZnRlclJvd1NlcXVlbmNlQ2hhbmdlIixTdCl9KSxWPW5ldyBYJGUoZiksKCF0aGlzLnJvb3RFbGVtZW50LmlkfHwiaHRfIj09PXRoaXMucm9vdEVsZW1lbnQuaWQuc3Vic3RyaW5nKDAsMykpJiYodGhpcy5yb290RWxlbWVudC5p''@;'; put 'put ''ZD10aGlzLmd1aWQpO2xldCB2cj1uZXcgcEtlKGh0LHtyb3dJbmRleE1hcHBlcjpmLnJvd0luZGV4TWFwcGVyLGNvbHVtbkluZGV4TWFwcGVyOmYuY29sdW1uSW5kZXhNYXBwZXIsY291bnRDb2xzOigpPT5mLmNvdW50Q29scygpLGNvdW50Um93czooKT0+Zi5jb3VudFJvd3MoKSxwcm9wVG9D''@;'; put 'put ''b2w6U3Q9PlMucHJvcFRvQ29sKFN0KSxpc0VkaXRvck9wZW5lZDooKT0+ISFmLmdldEFjdGl2ZUVkaXRvcigpJiZmLmdldEFjdGl2ZUVkaXRvcigpLmlzT3BlbmVkKCksY291bnRSZW5kZXJhYmxlQ29sdW1uczooKT0+dGhpcy52aWV3LmNvdW50UmVuZGVyYWJsZUNvbHVtbnMoKSxjb3VudFJl''@;'; put 'put ''bmRlcmFibGVSb3dzOigpPT50aGlzLnZpZXcuY291bnRSZW5kZXJhYmxlUm93cygpLGNvdW50Um93SGVhZGVyczooKT0+dGhpcy5jb3VudFJvd0hlYWRlcnMoKSxjb3VudENvbEhlYWRlcnM6KCk9PnRoaXMuY291bnRDb2xIZWFkZXJzKCksY291bnRSZW5kZXJhYmxlUm93c0luUmFuZ2U6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gZC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKC4uLmFyZ3VtZW50cyl9LGNvdW50UmVuZGVyYWJsZUNvbHVtbnNJblJhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIGQudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZSguLi5hcmd1bWVudHMpfSxn''@;'; put 'put ''ZXRTaG9ydGN1dE1hbmFnZXI6KCk9PmYuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksY3JlYXRlQ2VsbENvb3JkczooU3QsTHQpPT5mLl9jcmVhdGVDZWxsQ29vcmRzKFN0LEx0KSxjcmVhdGVDZWxsUmFuZ2U6KFN0LEx0LFV0KT0+Zi5fY3JlYXRlQ2VsbFJhbmdlKFN0LEx0LFV0KSx2aXN1YWxUb1Jl''@;'; put 'put ''bmRlcmFibGVDb29yZHM6U3Q9Pntjb25zdHtyb3c6THQsY29sOlV0fT1TdDtyZXR1cm4gZi5fY3JlYXRlQ2VsbENvb3JkcyhMdD49MD9mLnJvd0luZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoTHQpOkx0LFV0Pj0wP2YuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVy''@;'; put 'put ''YWJsZUZyb21WaXN1YWxJbmRleChVdCk6VXQpfSxyZW5kZXJhYmxlVG9WaXN1YWxDb29yZHM6U3Q9Pntjb25zdHtyb3c6THQsY29sOlV0fT1TdDtyZXR1cm4gZi5fY3JlYXRlQ2VsbENvb3JkcyhMdD49MD9mLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoTHQp''@;'; put 'put ''Okx0LFV0Pj0wP2YuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChVdCk6VXQpfSxmaW5kRmlyc3ROb25IaWRkZW5SZW5kZXJhYmxlUm93OihTdCxMdCk9Pntjb25zdCBVdD1MdD5TdD8xOi0xLEZuPU1hdGgubWluKFN0LEx0KSxLbj1NYXRoLm1heChTdCxM''@;'; put 'put ''dCksZHI9Zi5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoU3QsVXQpO3JldHVybiBudWxsPT09ZHJ8fDE9PT1VdCYmZHI+S258fC0xPT09VXQmJmRyPEZuP251bGw6ZHI+PTA/Zi5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGRyKTpk''@;'; put 'put ''cn0sZmluZEZpcnN0Tm9uSGlkZGVuUmVuZGVyYWJsZUNvbHVtbjooU3QsTHQpPT57Y29uc3QgVXQ9THQ+U3Q/MTotMSxGbj1NYXRoLm1pbihTdCxMdCksS249TWF0aC5tYXgoU3QsTHQpLGRyPWYuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFN0LFV0KTtyZXR1''@;'; put 'put ''cm4gbnVsbD09PWRyfHwxPT09VXQmJmRyPktufHwtMT09PVV0JiZkcjxGbj9udWxsOmRyPj0wP2YuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChkcik6ZHJ9LGlzRGlzYWJsZWRDZWxsU2VsZWN0aW9uOihTdCxMdCk9PlN0PDB8fEx0PDA/Zi5nZXRTZXR0''@;'; put 'put ''aW5ncygpLmRpc2FibGVWaXN1YWxTZWxlY3Rpb246Zi5nZXRDZWxsTWV0YShTdCxMdCkuZGlzYWJsZVZpc3VhbFNlbGVjdGlvbn0pO3RoaXMuc2VsZWN0aW9uPXZyO2NvbnN0IE1pPVN0PT57bGV0e2hpZGRlbkluZGV4ZXNDaGFuZ2VkOkx0fT1TdDtMdCYmdGhpcy5zZWxlY3Rpb24uY29tbWl0''@;'; put 'put ''KCl9O2Z1bmN0aW9uIFBpKFN0KXtjb25zdCBMdD1zaGUoU3QpO3JxKEx0KT8oZi5ydW5Ib29rcygiYmVmb3JlTGFuZ3VhZ2VDaGFuZ2UiLEx0KSxNdC5sYW5ndWFnZT1MdCxmLnJ1bkhvb2tzKCJhZnRlckxhbmd1YWdlQ2hhbmdlIixMdCkpOmFoZShTdCl9ZnVuY3Rpb24geXIoU3QsTHQpe2Nv''@;'; put 'put ''bnN0IFV0PSJjbGFzc05hbWUiPT09U3Q/Zi5yb290RWxlbWVudDpmLnRhYmxlO2lmKE9lKW1pKFV0LEx0KTtlbHNle2xldCBGbj1bXSxLbj1bXTtNdFtTdF0mJihGbj1BcnJheS5pc0FycmF5KE10W1N0XSk/TXRbU3RdOnRXKE10W1N0XSkpLEx0JiYoS249QXJyYXkuaXNBcnJheShMdCk/THQ6''@;'; put 'put ''dFcoTHQpKTtjb25zdCBkcj1lVyhGbixLbiksa3I9ZVcoS24sRm4pO2RyLmxlbmd0aCYmbHMoVXQsZHIpLGtyLmxlbmd0aCYmbWkoVXQsa3IpfU10W1N0XT1MdH1mdW5jdGlvbiBfaSgpe2xldCBTdD0hMTtyZXR1cm57dmFsaWRhdG9yc0luUXVldWU6MCx2YWxpZDohMCxhZGRWYWxpZGF0b3JU''@;'; put 'put ''b1F1ZXVlKCl7dGhpcy52YWxpZGF0b3JzSW5RdWV1ZSs9MSxTdD0hMX0scmVtb3ZlVmFsaWRhdG9yRm9ybVF1ZXVlKCl7dGhpcy52YWxpZGF0b3JzSW5RdWV1ZT10aGlzLnZhbGlkYXRvcnNJblF1ZXVlLTE8MD8wOnRoaXMudmFsaWRhdG9yc0luUXVldWUtMSx0aGlzLmNoZWNrSWZRdWV1ZUlz''@;'; put 'put ''RW1wdHkoKX0sb25RdWV1ZUVtcHR5KCl7fSxjaGVja0lmUXVldWVJc0VtcHR5KCl7MD09PXRoaXMudmFsaWRhdG9yc0luUXVldWUmJiExPT09U3QmJihTdD0hMCx0aGlzLm9uUXVldWVFbXB0eSh0aGlzLnZhbGlkKSl9fX1mdW5jdGlvbiBVcihTdCl7Y29uc3QgTHQ9U3QucmVwbGFjZSgiLCIs''@;'; put 'put ''Ii4iKTtyZXR1cm4hMT09PWlzTmFOKHBhcnNlRmxvYXQoTHQpKT9wYXJzZUZsb2F0KEx0KTpTdH1mdW5jdGlvbiBJbihTdCxMdCxVdCl7aWYoIVN0Lmxlbmd0aClyZXR1cm47Y29uc3QgRm49Zi5nZXRBY3RpdmVFZGl0b3IoKSxLbj1uZXcgX2k7bGV0IGRyPSEwO0tuLm9uUXVldWVFbXB0eT1r''@;'; put 'put ''cj0+e0ZuJiZkciYmRm4uY2FuY2VsQ2hhbmdlcygpLFV0KGtyKX07Zm9yKGxldCBrcj1TdC5sZW5ndGgtMTtrcj49MDtrci0tKXtjb25zdFtqcixUaSwsbm9dPVN0W2tyXSxDaT1TLnByb3BUb0NvbChUaSk7bGV0IHFvO3FvPU51bWJlci5pc0ludGVnZXIoQ2kpP2YuZ2V0Q2VsbE1ldGEoanIs''@;'; put 'put ''Q2kpOnsuLi5PYmplY3QuZ2V0UHJvdG90eXBlT2YoaHQpLC4uLmh0fSwibnVtZXJpYyI9PT1xby50eXBlJiYic3RyaW5nIj09dHlwZW9mIG5vJiZYMWUobm8pJiYoU3Rba3JdWzNdPVVyKG5vKSksZi5nZXRDZWxsVmFsaWRhdG9yKHFvKSYmKEtuLmFkZFZhbGlkYXRvclRvUXVldWUoKSxmLnZh''@;'; put 'put ''bGlkYXRlQ2VsbChTdFtrcl1bM10scW8sZnVuY3Rpb24oaGEsV28pe3JldHVybiBmdW5jdGlvbihLaSl7aWYoImJvb2xlYW4iIT10eXBlb2YgS2kpdGhyb3cgbmV3IEVycm9yKCJWYWxpZGF0aW9uIGVycm9yOiByZXN1bHQgaXMgbm90IGJvb2xlYW4iKTtpZighMT09PUtpJiYhMT09PVdvLmFs''@;'; put 'put ''bG93SW52YWxpZCl7ZHI9ITEsU3Quc3BsaWNlKGhhLDEpLFdvLnZhbGlkPSEwO2NvbnN0IFFvPWYuZ2V0Q2VsbChXby52aXN1YWxSb3csV28udmlzdWFsQ29sKTtudWxsIT09UW8mJmxzKFFvLGh0LmludmFsaWRDZWxsQ2xhc3NOYW1lKX1Lbi5yZW1vdmVWYWxpZGF0b3JGb3JtUXVldWUoKX19''@;'; put 'put ''KGtyLHFvKSxMdCkpfUtuLmNoZWNrSWZRdWV1ZUlzRW1wdHkoKX1mdW5jdGlvbiBPcihTdCxMdCl7bGV0IFV0PVN0Lmxlbmd0aC0xO2lmKFV0PDApcmV0dXJuO2Zvcig7VXQ+PTA7VXQtLSl7bGV0IEtuPSExO2lmKG51bGwhPT1TdFtVdF0pe2lmKG51bGwhPVN0W1V0XVsyXXx8bnVsbCE9U3Rb''@;'; put 'put ''VXRdWzNdKXtpZihodC5hbGxvd0luc2VydFJvdylmb3IoO1N0W1V0XVswXT5mLmNvdW50Um93cygpLTE7KXtjb25zdHtkZWx0YTpkcn09Uy5jcmVhdGVSb3codm9pZCAwLHZvaWQgMCx7c291cmNlOkx0fSk7aWYoMD09PWRyKXtLbj0hMDticmVha319aWYoImFycmF5Ij09PWYuZGF0YVR5cGUm''@;'; put 'put ''JighaHQuY29sdW1uc3x8MD09PWh0LmNvbHVtbnMubGVuZ3RoKSYmaHQuYWxsb3dJbnNlcnRDb2x1bW4pZm9yKDtTLnByb3BUb0NvbChTdFtVdF1bMV0pPmYuY291bnRDb2xzKCktMTspe2NvbnN0e2RlbHRhOmRyfT1TLmNyZWF0ZUNvbCh2b2lkIDAsdm9pZCAwLHtzb3VyY2U6THR9KTtpZigw''@;'; put 'put ''PT09ZHIpe0tuPSEwO2JyZWFrfX1Lbnx8Uy5zZXQoU3RbVXRdWzBdLFN0W1V0XVsxXSxTdFtVdF1bM10pfX1lbHNlIFN0LnNwbGljZShVdCwxKX1mLmZvcmNlRnVsbFJlbmRlcj0hMCxRLmFkanVzdFJvd3NBbmRDb2xzKCksZi5ydW5Ib29rcygiYmVmb3JlQ2hhbmdlUmVuZGVyIixTdCxMdCks''@;'; put 'put ''ZGUuY2xvc2VFZGl0b3IoKSxmLnZpZXcucmVuZGVyKCksZGUucHJlcGFyZUVkaXRvcigpLGYudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSxmLnJ1bkhvb2tzKCJhZnRlckNoYW5nZSIsU3QsTHR8fCJlZGl0Iik7Y29uc3QgRm49Zi5nZXRBY3RpdmVFZGl0b3IoKTtGbiYmc28oRm4ucmVmcmVz''@;'; put 'put ''aFZhbHVlKSYmRm4ucmVmcmVzaFZhbHVlKCl9ZnVuY3Rpb24gV24oU3QsTHQsVXQpe3JldHVybiBBcnJheS5pc0FycmF5KFN0KT9TdDpbW1N0LEx0LFV0XV19ZnVuY3Rpb24gVHIoU3QsTHQpe2NvbnN0IFV0PWYuZ2V0QWN0aXZlRWRpdG9yKCksRm49Zi5ydW5Ib29rcygiYmVmb3JlQ2hhbmdl''@;'; put 'put ''IixTdCxMdHx8ImVkaXQiKSxLbj1TdC5maWx0ZXIoZHI9Pm51bGwhPT1kcik7cmV0dXJuITE9PT1Gbnx8MD09PUtuLmxlbmd0aD8oVXQmJlV0LmNhbmNlbENoYW5nZXMoKSxbXSk6S259dGhpcy5jb2x1bW5JbmRleE1hcHBlci5hZGRMb2NhbEhvb2soImNhY2hlVXBkYXRlZCIsTWkpLHRoaXMu''@;'; put 'put ''cm93SW5kZXhNYXBwZXIuYWRkTG9jYWxIb29rKCJjYWNoZVVwZGF0ZWQiLE1pKSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyU2V0UmFuZ2VFbmQiLChTdCxMdCk9Pntjb25zdCBVdD1WaCghMSksRm49dGhpcy5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRSYW5nZSgpLHtmcm9tOktu''@;'; put 'put ''LHRvOmRyfT1Gbi5jdXJyZW50KCksa3I9Rm4uc2l6ZSgpLTE7dGhpcy5ydW5Ib29rcygiYWZ0ZXJTZWxlY3Rpb24iLEtuLnJvdyxLbi5jb2wsZHIucm93LGRyLmNvbCxVdCxrciksdGhpcy5ydW5Ib29rcygiYWZ0ZXJTZWxlY3Rpb25CeVByb3AiLEtuLnJvdyxmLmNvbFRvUHJvcChLbi5jb2wp''@;'; put 'put ''LGRyLnJvdyxmLmNvbFRvUHJvcChkci5jb2wpLFV0LGtyKSxMdCYmKCFVdC5pc1RvdWNoZWQoKXx8VXQuaXNUb3VjaGVkKCkmJiFVdC52YWx1ZSkmJkNlLnNjcm9sbFRvKFN0KTtjb25zdCBqcj12ci5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSxUaT12ci5pc1NlbGVjdGVkQnlDb2x1bW5IZWFk''@;'; put 'put ''ZXIoKTtqciYmVGk/bWkodGhpcy5yb290RWxlbWVudCxbImh0X19zZWxlY3Rpb24tLXJvd3MiLCJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIl0pOmpyPyhscyh0aGlzLnJvb3RFbGVtZW50LCJodF9fc2VsZWN0aW9uLS1jb2x1bW5zIiksbWkodGhpcy5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlv''@;'; put 'put ''bi0tcm93cyIpKTpUaT8obHModGhpcy5yb290RWxlbWVudCwiaHRfX3NlbGVjdGlvbi0tcm93cyIpLG1pKHRoaXMucm9vdEVsZW1lbnQsImh0X19zZWxlY3Rpb24tLWNvbHVtbnMiKSk6bHModGhpcy5yb290RWxlbWVudCxbImh0X19zZWxlY3Rpb24tLXJvd3MiLCJodF9fc2VsZWN0aW9uLS1j''@;'; put 'put ''b2x1bW5zIl0pLCJzaGlmdCIhPT12ci5nZXRTZWxlY3Rpb25Tb3VyY2UoKSYmZGUuY2xvc2VFZGl0b3IobnVsbCksZi52aWV3LnJlbmRlcigpLGRlLnByZXBhcmVFZGl0b3IoKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlU2V0Rm9jdXMiLFN0PT57dGhpcy5ydW5Ib29r''@;'; put 'put ''cygiYmVmb3JlU2VsZWN0aW9uRm9jdXNTZXQiLFN0LnJvdyxTdC5jb2wpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRlclNldEZvY3VzIixTdD0+e2NvbnN0IEx0PVZoKCExKTt0aGlzLnJ1bkhvb2tzKCJhZnRlclNlbGVjdGlvbkZvY3VzU2V0IixTdC5yb3csU3QuY29sLEx0''@;'; put 'put ''KSwoIUx0LmlzVG91Y2hlZCgpfHxMdC5pc1RvdWNoZWQoKSYmIUx0LnZhbHVlKSYmQ2Uuc2Nyb2xsVG8oU3QpLGRlLmNsb3NlRWRpdG9yKCksZi52aWV3LnJlbmRlcigpLGRlLnByZXBhcmVFZGl0b3IoKX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3Rpb25GaW5p''@;'; put 'put ''c2hlZCIsU3Q9Pntjb25zdCBMdD1TdC5sZW5ndGgtMSx7ZnJvbTpVdCx0bzpGbn09U3RbTHRdO3RoaXMucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uRW5kIixVdC5yb3csVXQuY29sLEZuLnJvdyxGbi5jb2wsTHQpLHRoaXMucnVuSG9va3MoImFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wIixVdC5y''@;'; put 'put ''b3csZi5jb2xUb1Byb3AoVXQuY29sKSxGbi5yb3csZi5jb2xUb1Byb3AoRm4uY29sKSxMdCl9KSx0aGlzLnNlbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVySXNNdWx0aXBsZVNlbGVjdGlvbiIsU3Q9Pntjb25zdCBMdD10aGlzLnJ1bkhvb2tzKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24i''@;'; put 'put ''LFN0LnZhbHVlKTtTdC52YWx1ZSYmKFN0LnZhbHVlPUx0KX0pLHRoaXMuc2VsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0ZXJEZXNlbGVjdCIsKCk9PntkZS5jbG9zZUVkaXRvcigpLGYudmlldy5yZW5kZXIoKSxscyh0aGlzLnJvb3RFbGVtZW50LFsiaHRfX3NlbGVjdGlvbi0tcm93cyIsImh0''@;'; put 'put ''X19zZWxlY3Rpb24tLWNvbHVtbnMiXSksdGhpcy5ydW5Ib29rcygiYWZ0ZXJEZXNlbGVjdCIpfSksdGhpcy5zZWxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVIaWdobGlnaHRTZXQiLCgpPT50aGlzLnJ1bkhvb2tzKCJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiKSkuYWRkTG9jYWxI''@;'; put 'put ''b29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRzW1V0XTtyZXR1cm4gZC5ydW5Ib29rcygiYmVmb3JlU2V0UmFuZ2VTdGFydCIsLi4uTHQp''@;'; put 'put ''fSkuYWRkTG9jYWxIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0T25seSIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3MoImJlZm9yZVNldFJh''@;'; put 'put ''bmdlU3RhcnRPbmx5IiwuLi5MdCl9KS5hZGRMb2NhbEhvb2soImJlZm9yZVNldFJhbmdlRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRzW1V0XTtyZXR1cm4gZC5ydW5Ib29r''@;'; put 'put ''cygiYmVmb3JlU2V0UmFuZ2VFbmQiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiYmVmb3JlU2VsZWN0Q29sdW1ucyIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJu''@;'; put 'put ''IGQucnVuSG9va3MoImJlZm9yZVNlbGVjdENvbHVtbnMiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiYWZ0ZXJTZWxlY3RDb2x1bW5zIixmdW5jdGlvbigpe2Zvcih2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRz''@;'; put 'put ''W1V0XTtyZXR1cm4gZC5ydW5Ib29rcygiYWZ0ZXJTZWxlY3RDb2x1bW5zIiwuLi5MdCl9KS5hZGRMb2NhbEhvb2soImJlZm9yZVNlbGVjdFJvd3MiLGZ1bmN0aW9uKCl7Zm9yKHZhciBTdD1hcmd1bWVudHMubGVuZ3RoLEx0PW5ldyBBcnJheShTdCksVXQ9MDtVdDxTdDtVdCsrKUx0W1V0XT1h''@;'; put 'put ''cmd1bWVudHNbVXRdO3JldHVybiBkLnJ1bkhvb2tzKCJiZWZvcmVTZWxlY3RSb3dzIiwuLi5MdCl9KS5hZGRMb2NhbEhvb2soImFmdGVyU2VsZWN0Um93cyIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRb''@;'; put 'put ''VXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3MoImFmdGVyU2VsZWN0Um93cyIsLi4uTHQpfSkuYWRkTG9jYWxIb29rKCJiZWZvcmVNb2RpZnlUcmFuc2Zvcm1TdGFydCIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0w''@;'; put 'put ''O1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3MoIm1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi5MdCl9KS5hZGRMb2NhbEhvb2soImFmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBTdD1hcmd1bWVudHMubGVuZ3RoLEx0''@;'; put 'put ''PW5ldyBBcnJheShTdCksVXQ9MDtVdDxTdDtVdCsrKUx0W1V0XT1hcmd1bWVudHNbVXRdO3JldHVybiBkLnJ1bkhvb2tzKCJhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0IiwuLi5MdCl9KS5hZGRMb2NhbEhvb2soImJlZm9yZU1vZGlmeVRyYW5zZm9ybUZvY3VzIixmdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRzW1V0XTtyZXR1cm4gZC5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtRm9jdXMiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1Gb2N1''@;'; put 'put ''cyIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3MoImFmdGVyTW9kaWZ5VHJhbnNmb3JtRm9jdXMiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygi''@;'; put 'put ''YmVmb3JlTW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRzW1V0XTtyZXR1cm4gZC5ydW5Ib29rcygibW9kaWZ5VHJhbnNmb3JtRW5kIiwuLi5MdCl9''@;'; put 'put ''KS5hZGRMb2NhbEhvb2soImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgU3Q9YXJndW1lbnRzLmxlbmd0aCxMdD1uZXcgQXJyYXkoU3QpLFV0PTA7VXQ8U3Q7VXQrKylMdFtVdF09YXJndW1lbnRzW1V0XTtyZXR1cm4gZC5ydW5Ib29rcygiYWZ0ZXJNb2RpZnlU''@;'; put 'put ''cmFuc2Zvcm1FbmQiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiYmVmb3JlUm93V3JhcCIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3MoImJl''@;'; put 'put ''Zm9yZVJvd1dyYXAiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiYmVmb3JlQ29sdW1uV3JhcCIsZnVuY3Rpb24oKXtmb3IodmFyIFN0PWFyZ3VtZW50cy5sZW5ndGgsTHQ9bmV3IEFycmF5KFN0KSxVdD0wO1V0PFN0O1V0KyspTHRbVXRdPWFyZ3VtZW50c1tVdF07cmV0dXJuIGQucnVuSG9va3Mo''@;'; put 'put ''ImJlZm9yZUNvbHVtbldyYXAiLC4uLkx0KX0pLmFkZExvY2FsSG9vaygiaW5zZXJ0Um93UmVxdWlyZSIsU3Q9PnRoaXMuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLFN0LDEsImF1dG8iKSkuYWRkTG9jYWxIb29rKCJpbnNlcnRDb2xSZXF1aXJlIixTdD0+dGhpcy5hbHRlcigiaW5zZXJ0X2Nv''@;'; put 'put ''bF9zdGFydCIsU3QsMSwiYXV0byIpKSxRPXthbHRlcihTdCxMdCl7dmFyIFV0LEZuO2xldCBLbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxkcj1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxrcj1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjQ/YXJndW1lbnRzWzRdOnZvaWQgMDtjb25zdCBqcj1UaT0+e2lmKDA9PT1UaS5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbm89Wy4uLlRpXTtyZXR1cm4gbm8uc29ydCgocW8saGEpPT57bGV0W1dvXT1xbyxbS2ldPWhhO3JldHVybiBXbz09PUtpPzA6V28+S2k/MTotMX0pLE1j''@;'; put 'put ''KG5vLChxbyxoYSk9PntsZXRbV28sS2ldPWhhO2NvbnN0IFFvPXFvW3FvLmxlbmd0aC0xXSxbcnMsTnRdPVFvLE5zPXJzK050O2lmKFdvPD1Ocyl7Y29uc3QgUG89TWF0aC5tYXgoS2ktKE5zLVdvKSwwKTtRb1sxXSs9UG99ZWxzZSBxby5wdXNoKFtXbyxLaV0pO3JldHVybiBxb30sW25vWzBd''@;'; put 'put ''XSl9O3N3aXRjaChTdCl7Y2FzZSJpbnNlcnRfcm93X2JlbG93IjpjYXNlImluc2VydF9yb3dfYWJvdmUiOmNvbnN0IFRpPWYuY291bnRTb3VyY2VSb3dzKCk7aWYoaHQubWF4Um93cz09PVRpKXJldHVybjtjb25zdCBubz0iaW5zZXJ0X3Jvd19iZWxvdyI9PT1TdD8iYmVsb3ciOiJhYm92ZSI7''@;'; put 'put ''THQ9bnVsbCE9PShVdD1MdCkmJnZvaWQgMCE9PVV0P1V0OiJiZWxvdyI9PT1ubz9UaTowO2NvbnN0e2RlbHRhOkNpLHN0YXJ0UGh5c2ljYWxJbmRleDpxb309Uy5jcmVhdGVSb3coTHQsS24se3NvdXJjZTpkcixtb2RlOm5vfSk7dnIuc2hpZnRSb3dzKGYudG9WaXN1YWxSb3cocW8pLENpKTti''@;'; put 'put ''cmVhaztjYXNlImluc2VydF9jb2xfc3RhcnQiOmNhc2UiaW5zZXJ0X2NvbF9lbmQiOmNvbnN0IGhhPSJpbnNlcnRfY29sX2VuZCI9PT1TdD8iZW5kIjoic3RhcnQiO0x0PW51bGwhPT0oRm49THQpJiZ2b2lkIDAhPT1Gbj9GbjoiZW5kIj09PWhhP2YuY291bnRTb3VyY2VDb2xzKCk6MDtjb25z''@;'; put 'put ''dHtkZWx0YTpXbyxzdGFydFBoeXNpY2FsSW5kZXg6S2l9PVMuY3JlYXRlQ29sKEx0LEtuLHtzb3VyY2U6ZHIsbW9kZTpoYX0pO2lmKFdvKXtpZihBcnJheS5pc0FycmF5KGh0LmNvbEhlYWRlcnMpKXtjb25zdCBOdD1bZi50b1Zpc3VhbENvbHVtbihLaSksMF07TnQubGVuZ3RoKz1XbyxBcnJh''@;'; put 'put ''eS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGh0LmNvbEhlYWRlcnMsTnQpfXZyLnNoaWZ0Q29sdW1ucyhmLnRvVmlzdWFsQ29sdW1uKEtpKSxXbyl9YnJlYWs7Y2FzZSJyZW1vdmVfcm93Ijpjb25zdCBRbz1OdD0+e2xldCBOcz0wO1RuKE50LFBvPT57bGV0W0RhLGphXT1Qbztjb25zdCBkMD1v''@;'; put 'put ''YyhEYSk/Zi5jb3VudFJvd3MoKS0xOk1hdGgubWF4KERhLU5zLDApO2lmKE51bWJlci5pc0ludGVnZXIoRGEpJiYoRGE9TWF0aC5tYXgoRGEtTnMsMCkpLCFTLnJlbW92ZVJvdyhEYSxqYSxkcikpcmV0dXJuO2lmKHZyLmlzU2VsZWN0ZWQoKSl7Y29uc3R7cm93OnBjfT1mLmdldFNlbGVjdGVk''@;'; put 'put ''UmFuZ2VMYXN0KCkuaGlnaGxpZ2h0O3BjPj1EYSYmcGM8PURhK2phLTEmJmRlLmNsb3NlRWRpdG9yKCEwKX1jb25zdCB6MD1mLmNvdW50Um93cygpOzA9PT16MD92ci5kZXNlbGVjdCgpOiJDb250ZXh0TWVudS5yZW1vdmVSb3ciPT09ZHI/dnIucmVmcmVzaCgpOnZyLnNoaWZ0Um93cyhEYSwt''@;'; put 'put ''amEpO2NvbnN0IGEyPWh0LmZpeGVkUm93c1RvcDthMj49ZDArMSYmKGh0LmZpeGVkUm93c1RvcC09TWF0aC5taW4oamEsYTItZDApKTtjb25zdCBEdT1odC5maXhlZFJvd3NCb3R0b207RHUmJmQwPj16MC1EdSYmKGh0LmZpeGVkUm93c0JvdHRvbS09TWF0aC5taW4oamEsRHUpKSxOcys9amF9''@;'; put 'put ''KX07QXJyYXkuaXNBcnJheShMdCk/UW8oanIoTHQpKTpRbyhbW0x0LEtuXV0pO2JyZWFrO2Nhc2UicmVtb3ZlX2NvbCI6Y29uc3QgcnM9TnQ9PntsZXQgTnM9MDtUbihOdCxQbz0+e2xldFtEYSxqYV09UG87Y29uc3QgZDA9b2MoRGEpP2YuY291bnRDb2xzKCktMTpNYXRoLm1heChEYS1Ocyww''@;'; put 'put ''KTtsZXQgajA9Zi50b1BoeXNpY2FsQ29sdW1uKGQwKTtpZihOdW1iZXIuaXNJbnRlZ2VyKERhKSYmKERhPU1hdGgubWF4KERhLU5zLDApKSwhUy5yZW1vdmVDb2woRGEsamEsZHIpKXJldHVybjtpZih2ci5pc1NlbGVjdGVkKCkpe2NvbnN0e2NvbDpwY309Zi5nZXRTZWxlY3RlZFJhbmdlTGFz''@;'; put 'put ''dCgpLmhpZ2hsaWdodDtwYz49RGEmJnBjPD1EYStqYS0xJiZkZS5jbG9zZUVkaXRvcighMCl9MD09PWYuY291bnRDb2xzKCk/dnIuZGVzZWxlY3QoKToiQ29udGV4dE1lbnUucmVtb3ZlQ29sdW1uIj09PWRyP3ZyLnJlZnJlc2goKTp2ci5zaGlmdENvbHVtbnMoRGEsLWphKTtjb25zdCBEdT1o''@;'; put 'put ''dC5maXhlZENvbHVtbnNTdGFydDtEdT49ZDArMSYmKGh0LmZpeGVkQ29sdW1uc1N0YXJ0LT1NYXRoLm1pbihqYSxEdS1kMCkpLEFycmF5LmlzQXJyYXkoaHQuY29sSGVhZGVycykmJih0eXBlb2YgajA+InUiJiYoajA9LTEpLGh0LmNvbEhlYWRlcnMuc3BsaWNlKGowLGphKSksTnMrPWphfSl9''@;'; put 'put ''O0FycmF5LmlzQXJyYXkoTHQpP3JzKGpyKEx0KSk6cnMoW1tMdCxLbl1dKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm8gc3VjaCBhY3Rpb24gIiR7U3R9ImApfWYudmlldy5yZW5kZXIoKSxrcnx8US5hZGp1c3RSb3dzQW5kQ29scygpfSxhZGp1c3RSb3dzQW5k''@;'; put 'put ''Q29scygpe2NvbnN0IFN0PWh0Lm1pblJvd3MsTHQ9aHQubWluU3BhcmVSb3dzLFV0PWh0Lm1pbkNvbHMsRm49aHQubWluU3BhcmVDb2xzO2lmKFN0KXtjb25zdCBLbj1mLmNvdW50Um93cygpO0tuPFN0JiZTLmNyZWF0ZVJvdyhLbixTdC1Lbix7c291cmNlOiJhdXRvIn0pfWlmKEx0KXtjb25z''@;'; put 'put ''dCBLbj1mLmNvdW50RW1wdHlSb3dzKCEwKTtpZihLbjxMdCl7Y29uc3Qga3I9TWF0aC5taW4oTHQtS24saHQubWF4Um93cy1mLmNvdW50U291cmNlUm93cygpKTtTLmNyZWF0ZVJvdyhmLmNvdW50Um93cygpLGtyLHtzb3VyY2U6ImF1dG8ifSl9fXtsZXQgS247KFV0fHxGbikmJihLbj1mLmNv''@;'; put 'put ''dW50RW1wdHlDb2xzKCEwKSk7bGV0IGRyPWYuY291bnRDb2xzKCk7aWYoVXQmJiFodC5jb2x1bW5zJiZkcjxVdCl7Y29uc3Qga3I9VXQtZHI7S24rPWtyLFMuY3JlYXRlQ29sKGRyLGtyLHtzb3VyY2U6ImF1dG8ifSl9aWYoRm4mJiFodC5jb2x1bW5zJiYiYXJyYXkiPT09Zi5kYXRhVHlwZSYm''@;'; put 'put ''S248Rm4pe2RyPWYuY291bnRDb2xzKCk7Y29uc3QganI9TWF0aC5taW4oRm4tS24saHQubWF4Q29scy1kcik7Uy5jcmVhdGVDb2woZHIsanIse3NvdXJjZToiYXV0byJ9KX19Zi52aWV3JiZmLnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCl9LHBvcHVsYXRlRnJvbUFycmF5KFN0LEx0LFV0LEZu''@;'; put 'put ''LEtuKXtsZXQgZHIsa3IsanIsVGk7Y29uc3Qgbm89W10sQ2k9e30scW89W10saGE9U3Qucm93LFdvPVN0LmNvbDtpZihrcj1MdC5sZW5ndGgsMD09PWtyKXJldHVybiExO2xldCBLaT0wLFFvPTA7c3dpdGNoKF9zKFV0KSYmKEtpPVV0LmNvbC1XbysxLFFvPVV0LnJvdy1oYSsxKSxLbil7Y2Fz''@;'; put 'put ''ZSJzaGlmdF9kb3duIjpjb25zdCBycz1HTShMdCksTnQ9cnMubGVuZ3RoLE5zPU1hdGgubWF4KE50LEtpKSxQbz1mLmdldERhdGEoKS5zbGljZShoYSksRGE9R00oUG8pLnNsaWNlKFdvLFdvK05zKTtmb3IoanI9MDtqcjxOcztqcis9MSlpZihqcjxOdCl7Zm9yKGRyPTAsa3I9cnNbanJdLmxl''@;'; put 'put ''bmd0aDtkcjxRby1rcjtkcis9MSlyc1tqcl0ucHVzaChyc1tqcl1bZHIla3JdKTtxby5wdXNoKHJzW2pyXS5jb25jYXQoanI8RGEubGVuZ3RoP0RhW2pyXTpuZXcgQXJyYXkoUG8ubGVuZ3RoKS5maWxsKG51bGwpKSl9ZWxzZSBxby5wdXNoKHJzW2pyJU50XS5jb25jYXQoRGFbanJdKSk7Zi5w''@;'; put 'put ''b3B1bGF0ZUZyb21BcnJheShoYSxXbyxHTShxbykpO2JyZWFrO2Nhc2Uic2hpZnRfcmlnaHQiOmNvbnN0IGphPUx0Lmxlbmd0aCxkMD1NYXRoLm1heChqYSxRbyksajA9Zi5nZXREYXRhKCkuc2xpY2UoaGEpLm1hcChJdT0+SXUuc2xpY2UoV28pKTtmb3IoZHI9MDtkcjxkMDtkcis9MSlpZihk''@;'; put 'put ''cjxqYSl7Zm9yKGpyPTAsVGk9THRbZHJdLmxlbmd0aDtqcjxLaS1UaTtqcis9MSlMdFtkcl0ucHVzaChMdFtkcl1banIlVGldKTtpZihkcjxqMC5sZW5ndGgpZm9yKGxldCBJdT0wO0l1PGowW2RyXS5sZW5ndGg7SXUrPTEpTHRbZHJdLnB1c2goajBbZHJdW0l1XSk7ZWxzZSBMdFtkcl0ucHVz''@;'; put 'put ''aCguLi5uZXcgQXJyYXkoajBbMF0ubGVuZ3RoKS5maWxsKG51bGwpKX1lbHNlIEx0LnB1c2goTHRbZHIla3JdLnNsaWNlKDAsZDApLmNvbmNhdChqMFtkcl0pKTtmLnBvcHVsYXRlRnJvbUFycmF5KGhhLFdvLEx0KTticmVhaztkZWZhdWx0OkNpLnJvdz1TdC5yb3csQ2kuY29sPVN0LmNvbDts''@;'; put 'put ''ZXQgcGMsejA9MCxhMj0wLER1PSEwO2NvbnN0IGZwPWZ1bmN0aW9uKEVmKXtsZXQgVGY9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7Y29uc3QgTHM9THRbRWYlTHQubGVuZ3RoXTtyZXR1cm4gbnVsbCE9PVRmP0xzW1RmJUxzLmxl''@;'; put 'put ''bmd0aF06THN9LGwyPUx0Lmxlbmd0aCxwcD1VdD9VdC5yb3ctU3Qucm93KzE6MDtmb3Ioa3I9VXQ/cHA6TWF0aC5tYXgobDIscHApLGRyPTA7ZHI8a3ImJiEoVXQmJkNpLnJvdz5VdC5yb3cmJnBwPmwyfHwhaHQuYWxsb3dJbnNlcnRSb3cmJkNpLnJvdz5mLmNvdW50Um93cygpLTF8fENpLnJv''@;'; put 'put ''dz49aHQubWF4Um93cyk7ZHIrKyl7Y29uc3QgSXU9ZHItejAsRWY9ZnAoSXUpLmxlbmd0aCxUZj1VdD9VdC5jb2wtU3QuY29sKzE6MDtpZihUaT1VdD9UZjpNYXRoLm1heChFZixUZiksQ2kuY29sPVN0LmNvbCxwYz1mLmdldENlbGxNZXRhKENpLnJvdyxDaS5jb2wpLCJDb3B5UGFzdGUucGFz''@;'; put 'put ''dGUiIT09Rm4mJiJBdXRvZmlsbC5maWxsIiE9PUZufHwhcGMuc2tpcFJvd09uUGFzdGUpe2ZvcihhMj0wLGpyPTA7anI8VGkmJiEoVXQmJkNpLmNvbD5VdC5jb2wmJlRmPkVmfHwhaHQuYWxsb3dJbnNlcnRDb2x1bW4mJkNpLmNvbD5mLmNvdW50Q29scygpLTF8fENpLmNvbD49aHQubWF4Q29s''@;'; put 'put ''cyk7anIrKyl7aWYocGM9Zi5nZXRDZWxsTWV0YShDaS5yb3csQ2kuY29sKSwoIkNvcHlQYXN0ZS5wYXN0ZSI9PT1Gbnx8IkF1dG9maWxsLmZpbGwiPT09Rm4pJiZwYy5za2lwQ29sdW1uT25QYXN0ZSl7YTIrPTEsQ2kuY29sKz0xLFRpKz0xO2NvbnRpbnVlfWlmKHBjLnJlYWRPbmx5JiYiVW5k''@;'; put 'put ''b1JlZG8udW5kbyIhPT1Gbil7Q2kuY29sKz0xO2NvbnRpbnVlfWxldCBnYz1mcChJdSxqci1hMiksUnU9Zi5nZXREYXRhQXRDZWxsKENpLnJvdyxDaS5jb2wpO2lmKG51bGwhPT1nYyYmIm9iamVjdCI9PXR5cGVvZiBnYylpZihBcnJheS5pc0FycmF5KGdjKSYmbnVsbD09PVJ1JiYoUnU9W10p''@;'; put 'put ''LG51bGw9PT1SdXx8Im9iamVjdCIhPXR5cGVvZiBSdSlEdT0hMTtlbHNle2NvbnN0IHJnPWliKEFycmF5LmlzQXJyYXkoUnUpP1J1OlJ1WzBdfHxSdSksa2Y9aWIoQXJyYXkuaXNBcnJheShnYyk/Z2M6Z2NbMF18fGdjKTtzTChyZyxrZil8fEFycmF5LmlzQXJyYXkocmcpJiZBcnJheS5pc0Fy''@;'; put 'put ''cmF5KGtmKT9nYz1SMChnYyk6RHU9ITF9ZWxzZSBudWxsIT09UnUmJiJvYmplY3QiPT10eXBlb2YgUnUmJihEdT0hMSk7RHUmJm5vLnB1c2goW0NpLnJvdyxDaS5jb2wsZ2NdKSxEdT0hMCxDaS5jb2wrPTF9Q2kucm93Kz0xfWVsc2UgejArPTEsQ2kucm93Kz0xLGtyKz0xfWYuc2V0RGF0YUF0''@;'; put 'put ''Q2VsbChubyxudWxsLG51bGwsRm58fCJwb3B1bGF0ZUZyb21BcnJheSIpfX19LHRoaXMuaW5pdD1mdW5jdGlvbigpe1Yuc2V0RGF0YShodC5kYXRhKSxmLnJ1bkhvb2tzKCJiZWZvcmVJbml0IiksKFQ0KCl8fEVXKCkpJiZtaShmLnJvb3RFbGVtZW50LCJtb2JpbGUiKSx0aGlzLnVwZGF0ZVNl''@;'; put 'put ''dHRpbmdzKGh0LCEwKSx0aGlzLnZpZXc9bmV3IFUkZSh0aGlzKSxkZT1IWWUuZ2V0SW5zdGFuY2UoZixodCx2ciksQ2U9ZnVuY3Rpb24gb1hlKGwpe2NvbnN0e3NlbGVjdGlvbjpjfT1sO2xldCBhPSExLGQ9ITE7cmV0dXJue3Jlc3VtZSgpe2Q9ITF9LHN1c3BlbmQoKXtkPSEwfSxza2lwTmV4''@;'; put 'put ''dFNjcm9sbEN5Y2xlKCl7YT0hMH0sc2Nyb2xsVG8oaCl7dmFyIGY7aWYoYXx8ZClyZXR1cm4gdm9pZChhPSExKTtsZXQgdjtjLmlzRm9jdXNTZWxlY3Rpb25DaGFuZ2VkKCk/dj1mdW5jdGlvbiBlWGUobCl7cmV0dXJuIGM9PntsLnNjcm9sbFZpZXdwb3J0VG8oYy50b09iamVjdCgpKX19KGwp''@;'; put 'put ''OmMuaXNTZWxlY3RlZEJ5Q29ybmVyKCk/dj0oKT0+e306Yy5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKT92PWZ1bmN0aW9uIHJYZShsKXtyZXR1cm4gYz0+e2xldHtyb3c6YX09YztsLnNjcm9sbFZpZXdwb3J0VG8oe3JvdzphfSl9fShsKTpjLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpP3Y9''@;'; put 'put ''ZnVuY3Rpb24gSktlKGwpe3JldHVybiBjPT57bGV0e2NvbDphfT1jO2wuc2Nyb2xsVmlld3BvcnRUbyh7Y29sOmF9KX19KGwpOjE9PT1jLmdldFNlbGVjdGVkUmFuZ2UoKS5zaXplKCkmJmMuaXNNdWx0aXBsZSgpP3Y9ZnVuY3Rpb24gdFhlKGwpe3JldHVybiBjPT57bC5zY3JvbGxWaWV3cG9y''@;'; put 'put ''dFRvKGMudG9PYmplY3QoKSl9fShsKToxIT09Yy5nZXRTZWxlY3RlZFJhbmdlKCkuc2l6ZSgpfHxjLmlzTXVsdGlwbGUoKT9jLmdldFNlbGVjdGVkUmFuZ2UoKS5zaXplKCk+MSYmKHY9ZnVuY3Rpb24gblhlKGwpe3JldHVybiBjPT57bC5zY3JvbGxWaWV3cG9ydFRvKGMudG9PYmplY3QoKSl9''@;'; put 'put ''fShsKSk6dj1mdW5jdGlvbiBpWGUobCl7cmV0dXJuIGM9Pntjb25zdCBhPWwuc2VsZWN0aW9uLmdldFNlbGVjdGlvblNvdXJjZSgpLHtyb3c6ZCxjb2w6aH09YztpZihkPDAmJmg+PTApbC5zY3JvbGxWaWV3cG9ydFRvKHtjb2w6aH0pO2Vsc2UgaWYoaDwwJiZkPj0wKWwuc2Nyb2xsVmlld3Bv''@;'; put 'put ''cnRUbyh7cm93OmR9KTtlbHNle2lmKCJtb3VzZSI9PT1hJiYoaD09PWwudmlldy5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpfHxkPT09bC52aWV3LmdldExhc3RQYXJ0aWFsbHlWaXNpYmxlUm93KCkpKXJldHVybjtsLnNjcm9sbFZpZXdwb3J0VG8oe3JvdzpkLGNvbDpofSl9fX0o''@;'; put 'put ''bCksbnVsbD09PShmPXYpfHx2b2lkIDA9PT1mfHxmKGgpfX19KGYpLHBlPW5ldyBCWWUoZiksSEwodGhpcykmJmZ1bmN0aW9uIGFYZShsKXtjb25zdCBjPWZ1bmN0aW9uIGxYZShsKXtyZXR1cm4gYz0+e2lmKCFjKXJldHVybiBudWxsO2NvbnN0IGE9bXEobCksZD12cShsKTtyZXR1cm4gYy5j''@;'; put 'put ''b2w8YS5jb2wmJihjLmNvbD1hLmNvbCksYy5jb2w+ZC5jb2wmJihjLmNvbD1kLmNvbCksYy5yb3c8YS5yb3cmJihjLnJvdz1hLnJvdyksYy5yb3c+ZC5yb3cmJihjLnJvdz1kLnJvdyksY319KGwpO2xldCBhO2NvbnN0e2FjdGl2YXRlOmQsZGVhY3RpdmF0ZTpofT1mdW5jdGlvbiBzWGUobCl7''@;'; put 'put ''bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2NvbnN0IGE9bC5yb290RWxlbWVudCxkPUJoZShsKSxoPUJoZShsKTtyZXR1cm4gZC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsKCk9PmM/Lm9uRm9jdXNGcm9tVG9wKCkpLGgu''@;'; put 'put ''YWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT5jPy5vbkZvY3VzRnJvbUJvdHRvbSgpKSxhLmZpcnN0Q2hpbGQuYmVmb3JlKGQpLGEubGFzdENoaWxkLmFmdGVyKGgpLHthY3RpdmF0ZSgpe2wuX3JlZ2lzdGVyVGltZW91dCgoKT0+e2QudGFiSW5kZXg9MCxoLnRhYkluZGV4PTB9LDEwKX0s''@;'; put 'put ''ZGVhY3RpdmF0ZSgpe2wuX3JlZ2lzdGVyVGltZW91dCgoKT0+e2QudGFiSW5kZXg9LTEsaC50YWJJbmRleD0tMX0sMTApfX19KGwse29uRm9jdXNGcm9tVG9wKCl7dmFyIHBlO2NvbnN0IENlPW51bGwhPT0ocGU9YyhhKSkmJnZvaWQgMCE9PXBlP3BlOm1xKGwpO0NlJiYobC5ydW5Ib29rcygi''@;'; put 'put ''bW9kaWZ5Rm9jdXNPblRhYk5hdmlnYXRpb24iLCJmcm9tX2Fib3ZlIixDZSksbC5zZWxlY3RDZWxsKENlLnJvdyxDZS5jb2wpKSxsLmxpc3RlbigpfSxvbkZvY3VzRnJvbUJvdHRvbSgpe3ZhciBwZTtjb25zdCBDZT1udWxsIT09KHBlPWMoYSkpJiZ2b2lkIDAhPT1wZT9wZTp2cShsKTtDZSYm''@;'; put 'put ''KGwucnVuSG9va3MoIm1vZGlmeUZvY3VzT25UYWJOYXZpZ2F0aW9uIiwiZnJvbV9iZWxvdyIsQ2UpLGwuc2VsZWN0Q2VsbChDZS5yb3csQ2UuY29sKSksbC5saXN0ZW4oKX19KSxmPXt3cmFwcGVkOiExLGZsaXBwZWQ6ITF9O2xldCB2PSEwLFM9ITEsVj0hMTtsLmFkZEhvb2soImFmdGVyTGlz''@;'; put 'put ''dGVuIiwoKT0+aCgpKSxsLmFkZEhvb2soImFmdGVyVW5saXN0ZW4iLCgpPT5kKCkpLGwuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLChwZSxDZSxPZSxZZSxldCk9Pnt2YXIgZHQ7UyYmKGYud3JhcHBlZCYmZi5mbGlwcGVkfHxWKSYmKFY9ITEsZXQudmFsdWU9ITApLHYmJihhPW51bGw9PT0o''@;'; put 'put ''ZHQ9bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09ZHQ/dm9pZCAwOmR0LmhpZ2hsaWdodCl9KSxsLmFkZEhvb2soImJlZm9yZVJvd1dyYXAiLChwZSxDZSxPZSk9PntmLndyYXBwZWQ9ITAsZi5mbGlwcGVkPU9lfSk7Y29uc3QgZGU9e2tleXM6W1siVGFiIl0sWyJTaGlmdCIs''@;'; put 'put ''IlRhYiJdXSxwcmV2ZW50RGVmYXVsdDohMSxzdG9wUHJvcGFnYXRpb246ITEscmVsYXRpdmVUb0dyb3VwOlZoZSxncm91cDoiZm9jdXNDYXRjaGVyIn07bC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXRzKFt7Li4uZGUsY2FsbGJhY2s6KCk9Pntj''@;'; put 'put ''b25zdHt0YWJOYXZpZ2F0aW9uOnBlfT1sLmdldFNldHRpbmdzKCk7Uz0hMCxsLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkmJiFwZSYmKHY9ITEpLHBlfHwoVj0hMCl9LHBvc2l0aW9uOiJiZWZvcmUifSx7Li4uZGUsY2FsbGJhY2s6cGU9Pntjb25zdHt0YWJOYXZpZ2F0aW9uOkNlLGF1dG9XcmFw''@;'; put 'put ''Um93Ok9lfT1sLmdldFNldHRpbmdzKCk7aWYoUz0hMSx2PSEwLCFDZXx8IWwuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKXx8T2UmJmYud3JhcHBlZCYmZi5mbGlwcGVkfHwhT2UmJmYud3JhcHBlZClyZXR1cm4gT2UmJmYud3JhcHBlZCYmZi5mbGlwcGVkJiYoYT1wZS5zaGlmdEtleT9tcShsKTp2''@;'; put 'put ''cShsKSksZnVuY3Rpb24gUSgpe2Yud3JhcHBlZD0hMSxmLmZsaXBwZWQ9ITEsbC5kZXNlbGVjdENlbGwoKSxsLnVubGlzdGVuKCl9KCksITE7cGUucHJldmVudERlZmF1bHQoKX0scG9zaXRpb246ImFmdGVyIn1dKX0oZiksZi5ydW5Ib29rcygiaW5pdCIpLHRoaXMuZm9yY2VGdWxsUmVuZGVy''@;'; put 'put ''PSEwLHRoaXMudmlldy5yZW5kZXIoKSxPZSYmbnVsbD09PWYucm9vdEVsZW1lbnQub2Zmc2V0UGFyZW50JiZFMWUoZi5yb290RWxlbWVudCwoKT0+e2Yudmlldy5fd3Qud3RPdmVybGF5cy51cGRhdGVMYXN0U3ByZWFkZXJTaXplKCksZi5yZW5kZXIoKSxmLnZpZXcuYWRqdXN0RWxlbWVudHNT''@;'; put 'put ''aXplKCl9KSwib2JqZWN0Ij09dHlwZW9mIE9lJiYoZi5ydW5Ib29rcygiYWZ0ZXJDaGFuZ2UiLE9lWzBdLE9lWzFdKSxPZT0hMSksZi5ydW5Ib29rcygiYWZ0ZXJJbml0Iil9LHRoaXMuX2NyZWF0ZUNlbGxDb29yZHM9ZnVuY3Rpb24oU3QsTHQpe3JldHVybiBmLnZpZXcuX3d0LmNyZWF0ZUNl''@;'; put 'put ''bGxDb29yZHMoU3QsTHQpfSx0aGlzLl9jcmVhdGVDZWxsUmFuZ2U9ZnVuY3Rpb24oU3QsTHQsVXQpe3JldHVybiBmLnZpZXcuX3d0LmNyZWF0ZUNlbGxSYW5nZShTdCxMdCxVdCl9LHRoaXMudmFsaWRhdGVDZWxsPWZ1bmN0aW9uKFN0LEx0LFV0LEZuKXtsZXQgS249Zi5nZXRDZWxsVmFsaWRh''@;'; put 'put ''dG9yKEx0KTtmdW5jdGlvbiBkcihrcil7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJiFhcmd1bWVudHNbMV18fCEwPT09THQuaGlkZGVuKXJldHVybiB2b2lkIFV0KGtyKTtjb25zdCBUaT1MdC52aXN1YWxDb2wsbm89THQudmlzdWFsUm93LENpPWYuZ2V0''@;'; put 'put ''Q2VsbChubyxUaSwhMCk7aWYoQ2kmJiJUSCIhPT1DaS5ub2RlTmFtZSl7Y29uc3QgcW89Zi5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KG5vKSxoYT1mLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVGkpO2Yudmlldy5f''@;'; put 'put ''d3QuZ2V0U2V0dGluZygiY2VsbFJlbmRlcmVyIixxbyxoYSxDaSl9VXQoa3IpfXQxZShLbikmJihLbj1mdW5jdGlvbihrcil7cmV0dXJuIGZ1bmN0aW9uKGpyLFRpKXtUaShrci50ZXN0KGpyKSl9fShLbikpLGhsKEtuKT8oU3Q9Zi5ydW5Ib29rcygiYmVmb3JlVmFsaWRhdGUiLFN0LEx0LnZp''@;'; put 'put ''c3VhbFJvdyxMdC5wcm9wLEZuKSxmLl9yZWdpc3RlckltbWVkaWF0ZSgoKT0+e0tuLmNhbGwoTHQsU3Qsa3I9PntmJiYoa3I9Zi5ydW5Ib29rcygiYWZ0ZXJWYWxpZGF0ZSIsa3IsU3QsTHQudmlzdWFsUm93LEx0LnByb3AsRm4pLEx0LnZhbGlkPWtyLGRyKGtyKSxmLnJ1bkhvb2tzKCJwb3N0''@;'; put 'put ''QWZ0ZXJWYWxpZGF0ZSIsa3IsU3QsTHQudmlzdWFsUm93LEx0LnByb3AsRm4pKX0pfSkpOmYuX3JlZ2lzdGVySW1tZWRpYXRlKCgpPT57THQudmFsaWQ9ITAsZHIoTHQudmFsaWQsITEpfSl9LHRoaXMuc2V0RGF0YUF0Q2VsbD1mdW5jdGlvbihTdCxMdCxVdCxGbil7Y29uc3QgS249V24oU3Qs''@;'; put 'put ''THQsVXQpLGRyPVtdO2xldCBqcixUaSxubyxrcj1Gbjtmb3IoanI9MCxUaT1Lbi5sZW5ndGg7anI8VGk7anIrKyl7aWYoIm9iamVjdCIhPXR5cGVvZiBLbltqcl0pdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IG51bWJlciBvciBjaGFuZ2VzIGFy''@;'; put 'put ''cmF5IG9mIGFycmF5cyBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyIik7aWYoIm51bWJlciIhPXR5cGVvZiBLbltqcl1bMV0pdGhyb3cgbmV3IEVycm9yKCJNZXRob2QgYHNldERhdGFBdENlbGxgIGFjY2VwdHMgcm93IGFuZCBjb2x1bW4gbnVtYmVyIGFzIGl0cyBwYXJhbWV0ZXJzLiBJZiB5b3Ug''@;'; put 'put ''d2FudCB0byB1c2Ugb2JqZWN0IHByb3BlcnR5IG5hbWUsIHVzZSBtZXRob2QgYHNldERhdGFBdFJvd1Byb3BgIik7bm89S25banJdWzFdPj10aGlzLmNvdW50Q29scygpP0tuW2pyXVsxXTpTLmNvbFRvUHJvcChLbltqcl1bMV0pLGRyLnB1c2goW0tuW2pyXVswXSxubyxWLmdldEF0Q2VsbCh0''@;'; put 'put ''aGlzLnRvUGh5c2ljYWxSb3coS25banJdWzBdKSxLbltqcl1bMV0pLEtuW2pyXVsyXV0pfSFrciYmIm9iamVjdCI9PXR5cGVvZiBTdCYmKGtyPUx0KTtjb25zdCBDaT1UcihkcixGbik7Zi5ydW5Ib29rcygiYWZ0ZXJTZXREYXRhQXRDZWxsIixDaSxrciksSW4oQ2ksa3IsKCk9PntPcihDaSxr''@;'; put 'put ''cil9KX0sdGhpcy5zZXREYXRhQXRSb3dQcm9wPWZ1bmN0aW9uKFN0LEx0LFV0LEZuKXtjb25zdCBLbj1XbihTdCxMdCxVdCksZHI9W107bGV0IGpyLFRpLGtyPUZuO2Zvcihqcj0wLFRpPUtuLmxlbmd0aDtqcjxUaTtqcisrKWRyLnB1c2goW0tuW2pyXVswXSxLbltqcl1bMV0sVi5nZXRBdENl''@;'; put 'put ''bGwodGhpcy50b1BoeXNpY2FsUm93KEtuW2pyXVswXSksS25banJdWzFdKSxLbltqcl1bMl1dKTsha3ImJiJvYmplY3QiPT10eXBlb2YgU3QmJihrcj1MdCk7Y29uc3Qgbm89VHIoZHIsRm4pO2YucnVuSG9va3MoImFmdGVyU2V0RGF0YUF0Um93UHJvcCIsbm8sa3IpLEluKG5vLGtyLCgpPT57''@;'; put 'put ''T3Iobm8sa3IpfSl9LHRoaXMubGlzdGVuPWZ1bmN0aW9uKCl7ZiYmIWYuaXNMaXN0ZW5pbmcoKSYmKHlxLmZvckVhY2goU3Q9PntmIT09U3QmJlN0LnVubGlzdGVuKCl9KSxicT1mLmd1aWQsZi5ydW5Ib29rcygiYWZ0ZXJMaXN0ZW4iKSl9LHRoaXMudW5saXN0ZW49ZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LmlzTGlzdGVuaW5nKCkmJihicT1udWxsLGYucnVuSG9va3MoImFmdGVyVW5saXN0ZW4iKSl9LHRoaXMuaXNMaXN0ZW5pbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYnE9PT1mLmd1aWR9LHRoaXMuZGVzdHJveUVkaXRvcj1mdW5jdGlvbigpe2xldCBMdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9p''@;'; put 'put ''ZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2RlLmNsb3NlRWRpdG9yKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0pLGYudmlldy5yZW5kZXIoKSxMdCYmdnIuaXNTZWxlY3RlZCgpJiZkZS5wcmVwYXJlRWRpdG9yKCl9LHRo''@;'; put 'put ''aXMucG9wdWxhdGVGcm9tQXJyYXk9ZnVuY3Rpb24oU3QsTHQsVXQsRm4sS24sZHIsa3Ipe2lmKCJvYmplY3QiIT10eXBlb2YgVXR8fCJvYmplY3QiIT10eXBlb2YgVXRbMF0pdGhyb3cgbmV3IEVycm9yKCJwb3B1bGF0ZUZyb21BcnJheSBwYXJhbWV0ZXIgYGlucHV0YCBtdXN0IGJlIGFuIGFy''@;'; put 'put ''cmF5IG9mIGFycmF5cyIpO2NvbnN0IGpyPSJudW1iZXIiPT10eXBlb2YgRm4/Zi5fY3JlYXRlQ2VsbENvb3JkcyhGbixLbik6bnVsbDtyZXR1cm4gUS5wb3B1bGF0ZUZyb21BcnJheShmLl9jcmVhdGVDZWxsQ29vcmRzKFN0LEx0KSxVdCxqcixkcixrcil9LHRoaXMuc3BsaWNlQ29sPWZ1bmN0''@;'; put 'put ''aW9uKFN0LEx0LFV0KXtmb3IodmFyIEZuPWFyZ3VtZW50cy5sZW5ndGgsS249bmV3IEFycmF5KEZuPjM/Rm4tMzowKSxkcj0zO2RyPEZuO2RyKyspS25bZHItM109YXJndW1lbnRzW2RyXTtyZXR1cm4gUy5zcGxpY2VDb2woU3QsTHQsVXQsLi4uS24pfSx0aGlzLnNwbGljZVJvdz1mdW5jdGlv''@;'; put 'put ''bihTdCxMdCxVdCl7Zm9yKHZhciBGbj1hcmd1bWVudHMubGVuZ3RoLEtuPW5ldyBBcnJheShGbj4zP0ZuLTM6MCksZHI9MztkcjxGbjtkcisrKUtuW2RyLTNdPWFyZ3VtZW50c1tkcl07cmV0dXJuIFMuc3BsaWNlUm93KFN0LEx0LFV0LC4uLktuKX0sdGhpcy5nZXRTZWxlY3RlZD1mdW5jdGlv''@;'; put 'put ''bigpe2lmKHZyLmlzU2VsZWN0ZWQoKSlyZXR1cm4geHModnIuZ2V0U2VsZWN0ZWRSYW5nZSgpLFN0PT57bGV0e2Zyb206THQsdG86VXR9PVN0O3JldHVybltMdC5yb3csTHQuY29sLFV0LnJvdyxVdC5jb2xdfSl9LHRoaXMuZ2V0U2VsZWN0ZWRMYXN0PWZ1bmN0aW9uKCl7Y29uc3QgU3Q9dGhp''@;'; put 'put ''cy5nZXRTZWxlY3RlZCgpO2xldCBMdDtyZXR1cm4gU3QmJlN0Lmxlbmd0aD4wJiYoTHQ9U3RbU3QubGVuZ3RoLTFdKSxMdH0sdGhpcy5nZXRTZWxlY3RlZFJhbmdlPWZ1bmN0aW9uKCl7aWYodnIuaXNTZWxlY3RlZCgpKXJldHVybiBBcnJheS5mcm9tKHZyLmdldFNlbGVjdGVkUmFuZ2UoKSl9''@;'; put 'put ''LHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3Q9ZnVuY3Rpb24oKXtjb25zdCBTdD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTtsZXQgTHQ7cmV0dXJuIFN0JiZTdC5sZW5ndGg+MCYmKEx0PVN0W1N0Lmxlbmd0aC0xXSksTHR9LHRoaXMuZW1wdHlTZWxlY3RlZENlbGxzPWZ1bmN0aW9uKFN0KXtp''@;'; put 'put ''ZighdnIuaXNTZWxlY3RlZCgpfHwwPT09dGhpcy5jb3VudFJvd3MoKXx8MD09PXRoaXMuY291bnRDb2xzKCkpcmV0dXJuO2NvbnN0IEx0PVtdO1RuKHZyLmdldFNlbGVjdGVkUmFuZ2UoKSxVdD0+e2lmKFV0LmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJuO2NvbnN0IEZuPVV0LmdldFRvcFN0YXJ0''@;'; put 'put ''Q29ybmVyKCksS249VXQuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7Z28oRm4ucm93LEtuLnJvdyxkcj0+e2dvKEZuLmNvbCxLbi5jb2wsa3I9Pnt0aGlzLmdldENlbGxNZXRhKGRyLGtyKS5yZWFkT25seXx8THQucHVzaChbZHIsa3IsbnVsbF0pfSl9KX0pLEx0Lmxlbmd0aD4wJiZ0aGlzLnNldERh''@;'; put 'put ''dGFBdENlbGwoTHQsU3QpfSx0aGlzLmlzUmVuZGVyU3VzcGVuZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyU3VzcGVuZGVkQ291bnRlcj4wfSx0aGlzLnN1c3BlbmRSZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlclN1c3BlbmRlZENvdW50ZXIrPTF9LHRoaXMucmVzdW1lUmVu''@;'; put 'put ''ZGVyPWZ1bmN0aW9uKCl7Y29uc3QgU3Q9dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyLTE7dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyPU1hdGgubWF4KFN0LDApLCF0aGlzLmlzUmVuZGVyU3VzcGVuZGVkKCkmJlN0PT09dGhpcy5yZW5kZXJTdXNwZW5kZWRDb3VudGVyJiYodGhpcy5y''@;'; put 'put ''ZW5kZXJDYWxsP3RoaXMucmVuZGVyKCk6Zi52aWV3LnJlbmRlcigpKX0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJih0aGlzLnJlbmRlckNhbGw9ITAsdGhpcy5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5pc1JlbmRlclN1c3BlbmRlZCgpfHxmLnZpZXcucmVuZGVyKCkpfSx0''@;'; put 'put ''aGlzLmJhdGNoUmVuZGVyPWZ1bmN0aW9uKFN0KXt0aGlzLnN1c3BlbmRSZW5kZXIoKTtjb25zdCBMdD1TdCgpO3JldHVybiB0aGlzLnJlc3VtZVJlbmRlcigpLEx0fSx0aGlzLmlzRXhlY3V0aW9uU3VzcGVuZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhlY3V0aW9uU3VzcGVuZGVkQ291''@;'; put 'put ''bnRlcj4wfSx0aGlzLnN1c3BlbmRFeGVjdXRpb249ZnVuY3Rpb24oKXt0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXIrPTEsdGhpcy5jb2x1bW5JbmRleE1hcHBlci5zdXNwZW5kT3BlcmF0aW9ucygpLHRoaXMucm93SW5kZXhNYXBwZXIuc3VzcGVuZE9wZXJhdGlvbnMoKX0sdGhpcy5y''@;'; put 'put ''ZXN1bWVFeGVjdXRpb249ZnVuY3Rpb24oKXtsZXQgU3Q9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtjb25zdCBMdD10aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXItMTt0aGlzLmV4ZWN1dGlvblN1c3BlbmRlZENvdW50ZXI9TWF0''@;'; put 'put ''aC5tYXgoTHQsMCksKCF0aGlzLmlzRXhlY3V0aW9uU3VzcGVuZGVkKCkmJkx0PT09dGhpcy5leGVjdXRpb25TdXNwZW5kZWRDb3VudGVyfHxTdCkmJih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMoKSx0aGlzLnJvd0luZGV4TWFwcGVyLnJlc3VtZU9wZXJhdGlvbnMo''@;'; put 'put ''KSl9LHRoaXMuYmF0Y2hFeGVjdXRpb249ZnVuY3Rpb24oU3Qpe2xldCBMdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3RoaXMuc3VzcGVuZEV4ZWN1dGlvbigpO2NvbnN0IFV0PVN0KCk7cmV0dXJuIHRoaXMucmVzdW1lRXhlY3V0aW9u''@;'; put 'put ''KEx0KSxVdH0sdGhpcy5iYXRjaD1mdW5jdGlvbihTdCl7dGhpcy5zdXNwZW5kUmVuZGVyKCksdGhpcy5zdXNwZW5kRXhlY3V0aW9uKCk7Y29uc3QgTHQ9U3QoKTtyZXR1cm4gdGhpcy5yZXN1bWVFeGVjdXRpb24oKSx0aGlzLnJlc3VtZVJlbmRlcigpLEx0fSx0aGlzLnJlZnJlc2hEaW1lbnNp''@;'; put 'put ''b25zPWZ1bmN0aW9uKCl7aWYoIWYudmlldylyZXR1cm47Y29uc3R7d2lkdGg6U3QsaGVpZ2h0Okx0fT1mLnZpZXcuZ2V0TGFzdFNpemUoKSx7d2lkdGg6VXQsaGVpZ2h0OkZufT1mLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEtuPVV0IT09U3R8fEZuIT09THQ7ITEhPT1m''@;'; put 'put ''LnJ1bkhvb2tzKCJiZWZvcmVSZWZyZXNoRGltZW5zaW9ucyIse3dpZHRoOlN0LGhlaWdodDpMdH0se3dpZHRoOlV0LGhlaWdodDpGbn0sS24pJiYoKEtufHxmLnZpZXcuX3d0Lnd0T3ZlcmxheXMuc2Nyb2xsYWJsZUVsZW1lbnQ9PT1mLnJvb3RXaW5kb3cpJiYoZi52aWV3LnNldExhc3RTaXpl''@;'; put 'put ''KFV0LEZuKSxmLnJlbmRlcigpKSxmLnJ1bkhvb2tzKCJhZnRlclJlZnJlc2hEaW1lbnNpb25zIix7d2lkdGg6U3QsaGVpZ2h0Okx0fSx7d2lkdGg6VXQsaGVpZ2h0OkZufSxLbikpfSx0aGlzLnVwZGF0ZURhdGE9ZnVuY3Rpb24oU3QsTHQpe0hoZShTdCxVdD0+e1M9VXR9LFV0PT57Uz1VdCxm''@;'; put 'put ''LmNvbHVtbkluZGV4TWFwcGVyLmZpdFRvTGVuZ3RoKHRoaXMuZ2V0SW5pdGlhbENvbHVtbkNvdW50KCkpLGYucm93SW5kZXhNYXBwZXIuZml0VG9MZW5ndGgodGhpcy5jb3VudFNvdXJjZVJvd3MoKSksUS5hZGp1c3RSb3dzQW5kQ29scygpLHZyLnJlZnJlc2goKX0se2hvdEluc3RhbmNlOmYs''@;'; put 'put ''ZGF0YU1hcDpTLGRhdGFTb3VyY2U6VixpbnRlcm5hbFNvdXJjZToidXBkYXRlRGF0YSIsc291cmNlOkx0LG1ldGFNYW5hZ2VyOmR0LGZpcnN0UnVuOk9lfSl9LHRoaXMubG9hZERhdGE9ZnVuY3Rpb24oU3QsTHQpe0hoZShTdCxVdD0+e1M9VXR9LCgpPT57ZHQuY2xlYXJDZWxsc0NhY2hlKCks''@;'; put 'put ''Zi5pbml0SW5kZXhNYXBwZXJzKCksUS5hZGp1c3RSb3dzQW5kQ29scygpLHZyLnJlZnJlc2goKSxPZSYmKE9lPVtudWxsLCJsb2FkRGF0YSJdKX0se2hvdEluc3RhbmNlOmYsZGF0YU1hcDpTLGRhdGFTb3VyY2U6VixpbnRlcm5hbFNvdXJjZToibG9hZERhdGEiLHNvdXJjZTpMdCxtZXRhTWFu''@;'; put 'put ''YWdlcjpkdCxmaXJzdFJ1bjpPZX0pfSx0aGlzLmdldEluaXRpYWxDb2x1bW5Db3VudD1mdW5jdGlvbigpe2NvbnN0IFN0PWh0LmNvbHVtbnM7bGV0IEx0PTA7aWYoQXJyYXkuaXNBcnJheShTdCkpTHQ9U3QubGVuZ3RoO2Vsc2UgaWYoaGwoU3QpKWlmKCJhcnJheSI9PT1mLmRhdGFUeXBlKXtj''@;'; put 'put ''b25zdCBVdD10aGlzLmNvdW50U291cmNlQ29scygpO2ZvcihsZXQgRm49MDtGbjxVdDtGbis9MSlTdChGbikmJihMdCs9MSl9ZWxzZSgib2JqZWN0Ij09PWYuZGF0YVR5cGV8fCJmdW5jdGlvbiI9PT1mLmRhdGFUeXBlKSYmKEx0PVMuY29sVG9Qcm9wQ2FjaGUubGVuZ3RoKTtlbHNlIGlmKHNv''@;'; put 'put ''KGh0LmRhdGFTY2hlbWEpKXtjb25zdCBVdD1TLmdldFNjaGVtYSgpO0x0PUFycmF5LmlzQXJyYXkoVXQpP1V0Lmxlbmd0aDpsTChVdCl9ZWxzZSBMdD10aGlzLmNvdW50U291cmNlQ29scygpO3JldHVybiBMdH0sdGhpcy5pbml0SW5kZXhNYXBwZXJzPWZ1bmN0aW9uKCl7dGhpcy5jb2x1bW5J''@;'; put 'put ''bmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5nZXRJbml0aWFsQ29sdW1uQ291bnQoKSksdGhpcy5yb3dJbmRleE1hcHBlci5pbml0VG9MZW5ndGgodGhpcy5jb3VudFNvdXJjZVJvd3MoKSl9LHRoaXMuZ2V0RGF0YT1mdW5jdGlvbihTdCxMdCxVdCxGbil7cmV0dXJuIGRsKFN0KT9TLmdl''@;'; put 'put ''dEFsbCgpOlMuZ2V0UmFuZ2UoZi5fY3JlYXRlQ2VsbENvb3JkcyhTdCxMdCksZi5fY3JlYXRlQ2VsbENvb3JkcyhVdCxGbiksUy5ERVNUSU5BVElPTl9SRU5ERVJFUil9LHRoaXMuZ2V0Q29weWFibGVUZXh0PWZ1bmN0aW9uKFN0LEx0LFV0LEZuKXtyZXR1cm4gUy5nZXRDb3B5YWJsZVRleHQo''@;'; put 'put ''Zi5fY3JlYXRlQ2VsbENvb3JkcyhTdCxMdCksZi5fY3JlYXRlQ2VsbENvb3JkcyhVdCxGbikpfSx0aGlzLmdldENvcHlhYmxlRGF0YT1mdW5jdGlvbihTdCxMdCl7cmV0dXJuIFMuZ2V0Q29weWFibGUoU3QsUy5jb2xUb1Byb3AoTHQpKX0sdGhpcy5nZXRTY2hlbWE9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gUy5nZXRTY2hlbWEoKX0sdGhpcy51cGRhdGVTZXR0aW5ncz1mdW5jdGlvbihTdCl7bGV0IEx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3QgVXQ9KE9lP2YubG9hZERhdGE6Zi51cGRhdGVEYXRhKS5iaW5kKHRoaXMpO2xl''@;'; put 'put ''dCBLbixkcixGbj0hMTtpZihzbyhTdC5yb3dzKSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAicm93cyIgc2V0dGluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBEbyB5b3UgbWVhbiBzdGFydFJvd3MsIG1pblJvd3Mgb3IgbWF4Um93cz8nKTtpZihzbyhTdC5jb2xzKSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''J1RoZSAiY29scyIgc2V0dGluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBEbyB5b3UgbWVhbiBzdGFydENvbHMsIG1pbkNvbHMgb3IgbWF4Q29scz8nKTtpZihzbyhTdC5nYW50dENoYXJ0KSl0aHJvdyBuZXcgRXJyb3IoJ1NpbmNlIDguMC4wIHRoZSAiZ2FudHRDaGFydCIgc2V0dGluZyBp''@;'; put 'put ''cyBubyBsb25nZXIgc3VwcG9ydGVkLicpO2ZvcihLbiBpbiBTdCkiZGF0YSI9PT1Lbnx8KCJsYW5ndWFnZSI9PT1Lbj9QaShTdC5sYW5ndWFnZSk6ImNsYXNzTmFtZSI9PT1Lbj95cigiY2xhc3NOYW1lIixTdC5jbGFzc05hbWUpOiJ0YWJsZUNsYXNzTmFtZSI9PT1LbiYmZi50YWJsZT8oeXIo''@;'; put 'put ''InRhYmxlQ2xhc3NOYW1lIixTdC50YWJsZUNsYXNzTmFtZSksZi52aWV3Ll93dC53dE92ZXJsYXlzLnN5bmNPdmVybGF5VGFibGVDbGFzc05hbWVzKCkpOmFvLmdldFNpbmdsZXRvbigpLmlzUmVnaXN0ZXJlZChLbil8fGFvLmdldFNpbmdsZXRvbigpLmlzRGVwcmVjYXRlZChLbik/KGhsKFN0''@;'; put 'put ''W0tuXSl8fEFycmF5LmlzQXJyYXkoU3RbS25dKSkmJihTdFtLbl0uaW5pdGlhbEhvb2s9ITAsZi5hZGRIb29rKEtuLFN0W0tuXSkpOiFMdCYmWWwoU3QsS24pJiYoTXRbS25dPVN0W0tuXSkpO3ZvaWQgMD09PVN0LmRhdGEmJnZvaWQgMD09PWh0LmRhdGE/VXQobnVsbCwidXBkYXRlU2V0dGlu''@;'; put 'put ''Z3MiKTp2b2lkIDAhPT1TdC5kYXRhP1V0KFN0LmRhdGEsInVwZGF0ZVNldHRpbmdzIik6dm9pZCAwIT09U3QuY29sdW1ucyYmKFMuY3JlYXRlTWFwKCksZi5pbml0SW5kZXhNYXBwZXJzKCkpO2NvbnN0IGtyPWYuY291bnRDb2xzKCksanI9aHQuY29sdW1ucztpZihqciYmaGwoanIpJiYoRm49''@;'; put 'put ''ITApLCh2b2lkIDAhPT1TdC5jZWxsfHx2b2lkIDAhPT1TdC5jZWxsc3x8dm9pZCAwIT09U3QuY29sdW1ucykmJmR0LmNsZWFyQ2FjaGUoKSxrcj4wKWZvcihLbj0wLGRyPTA7S248a3I7S24rKyl7aWYoanIpe2NvbnN0IENpPUZuP2pyKEtuKTpqcltkcl07Q2kmJmR0LnVwZGF0ZUNvbHVtbk1l''@;'; put 'put ''dGEoZHIsQ2kpfWRyKz0xfXNvKFN0LmNlbGwpJiZDcyhTdC5jZWxsLENpPT57Zi5zZXRDZWxsTWV0YU9iamVjdChDaS5yb3csQ2kuY29sLENpKX0pLGYucnVuSG9va3MoImFmdGVyQ2VsbE1ldGFSZXNldCIpO2xldCBUaT1mLnJvb3RFbGVtZW50LnN0eWxlLmhlaWdodDsiIiE9PVRpJiYoVGk9''@;'; put 'put ''cGFyc2VJbnQoZi5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQsMTApKTtsZXQgbm89U3QuaGVpZ2h0O2lmKGhsKG5vKSYmKG5vPW5vKCkpLEx0JiZmLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSYmZi5yb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtaW5pdGlhbHN0eWxl''@;'; put 'put ''IixmLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSksbnVsbD09PW5vKXtjb25zdCBDaT1mLnJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1pbml0aWFsc3R5bGUiKTtDaSYmKENpLmluZGV4T2YoImhlaWdodCIpPi0xfHxDaS5pbmRleE9mKCJvdmVyZmxvdyIpPi0xKT9m''@;'; put 'put ''LnJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLENpKTooZi5yb290RWxlbWVudC5zdHlsZS5oZWlnaHQ9IiIsZi5yb290RWxlbWVudC5zdHlsZS5vdmVyZmxvdz0iIil9ZWxzZSB2b2lkIDAhPT1ubyYmKGYucm9vdEVsZW1lbnQuc3R5bGUuaGVpZ2h0PWlzTmFOKG5vKT9gJHtub31g''@;'; put 'put ''OmAke25vfXB4YCxmLnJvb3RFbGVtZW50LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKTtpZih0eXBlb2YgU3Qud2lkdGg8InUiKXtsZXQgQ2k9U3Qud2lkdGg7aGwoQ2kpJiYoQ2k9Q2koKSksZi5yb290RWxlbWVudC5zdHlsZS53aWR0aD1pc05hTihDaSk/YCR7Q2l9YDpgJHtDaX1weGB9THR8''@;'; put 'put ''fChmLnZpZXcmJihmLnZpZXcuX3d0Lnd0Vmlld3BvcnQucmVzZXRIYXNPdmVyc2l6ZWRDb2x1bW5IZWFkZXJzTWFya2VkKCksZi52aWV3Ll93dC5leHBvcnRTZXR0aW5nc0FzQ2xhc3NOYW1lcygpKSxmLnJ1bkhvb2tzKCJhZnRlclVwZGF0ZVNldHRpbmdzIixTdCkpLFEuYWRqdXN0Um93c0Fu''@;'; put 'put ''ZENvbHMoKSxmLnZpZXcmJiFPZSYmKGYuZm9yY2VGdWxsUmVuZGVyPSEwLGYudmlldy5yZW5kZXIoKSxmLnZpZXcuX3d0Lnd0T3ZlcmxheXMuYWRqdXN0RWxlbWVudHNTaXplKCkpLCFMdCYmZi52aWV3JiYoIiI9PT1UaXx8IiI9PT1ub3x8dm9pZCAwPT09bm8pJiZUaSE9PW5vJiZmLnZpZXcu''@;'; put 'put ''X3d0Lnd0T3ZlcmxheXMudXBkYXRlTWFpblNjcm9sbGFibGVFbGVtZW50cygpfSx0aGlzLmdldFZhbHVlPWZ1bmN0aW9uKCl7Y29uc3QgU3Q9Zi5nZXRTZWxlY3RlZExhc3QoKTtpZihodC5nZXRWYWx1ZSl7aWYoaGwoaHQuZ2V0VmFsdWUpKXJldHVybiBodC5nZXRWYWx1ZS5jYWxsKGYpO2lm''@;'; put 'put ''KFN0KXJldHVybiBmLmdldERhdGEoKVtTdFswXVswXV1baHQuZ2V0VmFsdWVdfWVsc2UgaWYoU3QpcmV0dXJuIGYuZ2V0RGF0YUF0Q2VsbChTdFswXSxTdFsxXSl9LHRoaXMuZ2V0U2V0dGluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gaHR9LHRoaXMuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNlbGVj''@;'; put 'put ''dEFsbCgpLHRoaXMuZW1wdHlTZWxlY3RlZENlbGxzKCl9LHRoaXMuYWx0ZXI9ZnVuY3Rpb24oU3QsTHQsVXQsRm4sS24pe1EuYWx0ZXIoU3QsTHQsVXQsRm4sS24pfSx0aGlzLmdldENlbGw9ZnVuY3Rpb24oU3QsTHQpe2xldCBVdD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1syXSYmYXJndW1lbnRzWzJdLEZuPUx0LEtuPVN0O2lmKEx0Pj0wKXtpZih0aGlzLmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVuKHRoaXMudG9QaHlzaWNhbENvbHVtbihMdCkpKXJldHVybiBudWxsO0ZuPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1''@;'; put 'put ''YWxJbmRleChMdCl9aWYoU3Q+PTApe2lmKHRoaXMucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy50b1BoeXNpY2FsUm93KFN0KSkpcmV0dXJuIG51bGw7S249dGhpcy5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFN0KX1yZXR1cm4gbnVsbD09PUtufHxu''@;'; put 'put ''dWxsPT09Rm58fHZvaWQgMD09PUtufHx2b2lkIDA9PT1Gbj9udWxsOmYudmlldy5nZXRDZWxsQXRDb29yZHMoZi5fY3JlYXRlQ2VsbENvb3JkcyhLbixGbiksVXQpfSx0aGlzLmdldENvb3Jkcz1mdW5jdGlvbihTdCl7Y29uc3QgTHQ9dGhpcy52aWV3Ll93dC53dFRhYmxlLmdldENvb3JkcyhT''@;'; put 'put ''dCk7aWYobnVsbD09PUx0KXJldHVybiBudWxsO2NvbnN0e3JvdzpVdCxjb2w6Rm59PUx0O2xldCBLbj1VdCxkcj1GbjtyZXR1cm4gVXQ+PTAmJihLbj10aGlzLnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoVXQpKSxGbj49MCYmKGRyPXRoaXMuY29sdW1uSW5k''@;'; put 'put ''ZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChGbikpLGYuX2NyZWF0ZUNlbGxDb29yZHMoS24sZHIpfSx0aGlzLmNvbFRvUHJvcD1mdW5jdGlvbihTdCl7cmV0dXJuIFMuY29sVG9Qcm9wKFN0KX0sdGhpcy5wcm9wVG9Db2w9ZnVuY3Rpb24oU3Qpe3JldHVybiBTLnByb3BU''@;'; put 'put ''b0NvbChTdCl9LHRoaXMudG9WaXN1YWxSb3c9U3Q9PnRoaXMucm93SW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoU3QpLHRoaXMudG9WaXN1YWxDb2x1bW49U3Q9PnRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoU3QpLHRoaXMu''@;'; put 'put ''dG9QaHlzaWNhbFJvdz1TdD0+dGhpcy5yb3dJbmRleE1hcHBlci5nZXRQaHlzaWNhbEZyb21WaXN1YWxJbmRleChTdCksdGhpcy50b1BoeXNpY2FsQ29sdW1uPVN0PT50aGlzLmNvbHVtbkluZGV4TWFwcGVyLmdldFBoeXNpY2FsRnJvbVZpc3VhbEluZGV4KFN0KSx0aGlzLmdldERhdGFBdENl''@;'; put 'put ''bGw9ZnVuY3Rpb24oU3QsTHQpe3JldHVybiBTLmdldChTdCxTLmNvbFRvUHJvcChMdCkpfSx0aGlzLmdldERhdGFBdFJvd1Byb3A9ZnVuY3Rpb24oU3QsTHQpe3JldHVybiBTLmdldChTdCxMdCl9LHRoaXMuZ2V0RGF0YUF0Q29sPWZ1bmN0aW9uKFN0KXtjb25zdCBMdD1bXSxVdD1TLmdldFJh''@;'; put 'put ''bmdlKGYuX2NyZWF0ZUNlbGxDb29yZHMoMCxTdCksZi5fY3JlYXRlQ2VsbENvb3JkcyhodC5kYXRhLmxlbmd0aC0xLFN0KSxTLkRFU1RJTkFUSU9OX1JFTkRFUkVSKTtmb3IobGV0IEZuPTA7Rm48VXQubGVuZ3RoO0ZuKz0xKWZvcihsZXQgS249MDtLbjxVdFtGbl0ubGVuZ3RoO0tuKz0xKUx0''@;'; put 'put ''LnB1c2goVXRbRm5dW0tuXSk7cmV0dXJuIEx0fSx0aGlzLmdldERhdGFBdFByb3A9ZnVuY3Rpb24oU3Qpe2NvbnN0IEx0PVtdLFV0PVMuZ2V0UmFuZ2UoZi5fY3JlYXRlQ2VsbENvb3JkcygwLFMucHJvcFRvQ29sKFN0KSksZi5fY3JlYXRlQ2VsbENvb3JkcyhodC5kYXRhLmxlbmd0aC0xLFMu''@;'; put 'put ''cHJvcFRvQ29sKFN0KSksUy5ERVNUSU5BVElPTl9SRU5ERVJFUik7Zm9yKGxldCBGbj0wO0ZuPFV0Lmxlbmd0aDtGbis9MSlmb3IobGV0IEtuPTA7S248VXRbRm5dLmxlbmd0aDtLbis9MSlMdC5wdXNoKFV0W0ZuXVtLbl0pO3JldHVybiBMdH0sdGhpcy5nZXRTb3VyY2VEYXRhPWZ1bmN0aW9u''@;'; put 'put ''KFN0LEx0LFV0LEZuKXtsZXQgS247cmV0dXJuIEtuPXZvaWQgMD09PVN0P1YuZ2V0RGF0YSgpOlYuZ2V0QnlSYW5nZShmLl9jcmVhdGVDZWxsQ29vcmRzKFN0LEx0KSxmLl9jcmVhdGVDZWxsQ29vcmRzKFV0LEZuKSksS259LHRoaXMuZ2V0U291cmNlRGF0YUFycmF5PWZ1bmN0aW9uKFN0LEx0''@;'; put 'put ''LFV0LEZuKXtsZXQgS247cmV0dXJuIEtuPXZvaWQgMD09PVN0P1YuZ2V0RGF0YSghMCk6Vi5nZXRCeVJhbmdlKGYuX2NyZWF0ZUNlbGxDb29yZHMoU3QsTHQpLGYuX2NyZWF0ZUNlbGxDb29yZHMoVXQsRm4pLCEwKSxLbn0sdGhpcy5nZXRTb3VyY2VEYXRhQXRDb2w9ZnVuY3Rpb24oU3Qpe3Jl''@;'; put 'put ''dHVybiBWLmdldEF0Q29sdW1uKFN0KX0sdGhpcy5zZXRTb3VyY2VEYXRhQXRDZWxsPWZ1bmN0aW9uKFN0LEx0LFV0LEZuKXtjb25zdCBLbj1XbihTdCxMdCxVdCksZHI9dGhpcy5oYXNIb29rKCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiKSxrcj1bXTtkciYmVG4oS24sVGk9PntsZXRbbm8s''@;'; put 'put ''Q2kscW9dPVRpO2tyLnB1c2goW25vLENpLFYuZ2V0QXRDZWxsKG5vLENpKSxxb10pfSksVG4oS24sVGk9PntsZXRbbm8sQ2kscW9dPVRpO1Yuc2V0QXRDZWxsKG5vLENpLHFvKX0pLGRyJiZ0aGlzLnJ1bkhvb2tzKCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLGtyLEZuKSx0aGlzLnJlbmRl''@;'; put 'put ''cigpO2NvbnN0IGpyPWYuZ2V0QWN0aXZlRWRpdG9yKCk7anImJnNvKGpyLnJlZnJlc2hWYWx1ZSkmJmpyLnJlZnJlc2hWYWx1ZSgpfSx0aGlzLmdldFNvdXJjZURhdGFBdFJvdz1mdW5jdGlvbihTdCl7cmV0dXJuIFYuZ2V0QXRSb3coU3QpfSx0aGlzLmdldFNvdXJjZURhdGFBdENlbGw9ZnVu''@;'; put 'put ''Y3Rpb24oU3QsTHQpe3JldHVybiBWLmdldEF0Q2VsbChTdCxMdCl9LHRoaXMuZ2V0RGF0YUF0Um93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gUy5nZXRSYW5nZShmLl9jcmVhdGVDZWxsQ29vcmRzKFN0LDApLGYuX2NyZWF0ZUNlbGxDb29yZHMoU3QsdGhpcy5jb3VudENvbHMoKS0xKSxTLkRFU1RJ''@;'; put 'put ''TkFUSU9OX1JFTkRFUkVSKVswXXx8W119LHRoaXMuZ2V0RGF0YVR5cGU9ZnVuY3Rpb24oU3QsTHQsVXQsRm4pe2NvbnN0IEtuPXZvaWQgMD09PVN0P1swLDAsdGhpcy5jb3VudFJvd3MoKSx0aGlzLmNvdW50Q29scygpXTpbU3QsTHQsVXQsRm5dLFtkcixrcl09S247bGV0WywsanIsVGldPUtu''@;'; put 'put ''LG5vPW51bGwsQ2k9bnVsbDt2b2lkIDA9PT1qciYmKGpyPWRyKSx2b2lkIDA9PT1UaSYmKFRpPWtyKTtsZXQgcW89Im1peGVkIjtyZXR1cm4gZ28oTWF0aC5tYXgoTWF0aC5taW4oZHIsanIpLDApLE1hdGgubWF4KGRyLGpyKSxoYT0+e2xldCBXbz0hMDtyZXR1cm4gZ28oTWF0aC5tYXgoTWF0''@;'; put 'put ''aC5taW4oa3IsVGkpLDApLE1hdGgubWF4KGtyLFRpKSxLaT0+KENpPXRoaXMuZ2V0Q2VsbE1ldGEoaGEsS2kpLnR5cGUsbm8/V289bm89PT1DaTpubz1DaSxXbykpLHFvPVdvP0NpOiJtaXhlZCIsV299KSxxb30sdGhpcy5yZW1vdmVDZWxsTWV0YT1mdW5jdGlvbihTdCxMdCxVdCl7Y29uc3Rb''@;'; put 'put ''Rm4sS25dPVt0aGlzLnRvUGh5c2ljYWxSb3coU3QpLHRoaXMudG9QaHlzaWNhbENvbHVtbihMdCldO2xldCBkcj1kdC5nZXRDZWxsTWV0YUtleVZhbHVlKEZuLEtuLFV0KTshMSE9PWYucnVuSG9va3MoImJlZm9yZVJlbW92ZUNlbGxNZXRhIixTdCxMdCxVdCxkcikmJihkdC5yZW1vdmVDZWxs''@;'; put 'put ''TWV0YShGbixLbixVdCksZi5ydW5Ib29rcygiYWZ0ZXJSZW1vdmVDZWxsTWV0YSIsU3QsTHQsVXQsZHIpKSxkcj1udWxsfSx0aGlzLnNwbGljZUNlbGxzTWV0YT1mdW5jdGlvbihTdCl7bGV0IEx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx''@;'; put 'put ''XTowO2Zvcih2YXIgVXQ9YXJndW1lbnRzLmxlbmd0aCxGbj1uZXcgQXJyYXkoVXQ+Mj9VdC0yOjApLEtuPTI7S248VXQ7S24rKylGbltLbi0yXT1hcmd1bWVudHNbS25dO2lmKEZuLmxlbmd0aD4wJiYhQXJyYXkuaXNBcnJheShGblswXSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgM3JkIGFyZ3Vt''@;'; put 'put ''ZW50IChjZWxsTWV0YVJvd3MpIGhhcyB0byBiZSBwYXNzZWQgYXMgYW4gYXJyYXkgb2YgY2VsbCBtZXRhIG9iamVjdHMgYXJyYXkuIik7THQ+MCYmZHQucmVtb3ZlUm93KHRoaXMudG9QaHlzaWNhbFJvdyhTdCksTHQpLEZuLmxlbmd0aD4wJiZUbihGbi5yZXZlcnNlKCksZHI9PntkdC5jcmVh''@;'; put 'put ''dGVSb3codGhpcy50b1BoeXNpY2FsUm93KFN0KSksVG4oZHIsKGtyLGpyKT0+dGhpcy5zZXRDZWxsTWV0YU9iamVjdChTdCxqcixrcikpfSksZi5yZW5kZXIoKX0sdGhpcy5zZXRDZWxsTWV0YU9iamVjdD1mdW5jdGlvbihTdCxMdCxVdCl7Im9iamVjdCI9PXR5cGVvZiBVdCYmQ3MoVXQsKEZu''@;'; put 'put ''LEtuKT0+e3RoaXMuc2V0Q2VsbE1ldGEoU3QsTHQsS24sRm4pfSl9LHRoaXMuc2V0Q2VsbE1ldGE9ZnVuY3Rpb24oU3QsTHQsVXQsRm4pe2lmKCExPT09Zi5ydW5Ib29rcygiYmVmb3JlU2V0Q2VsbE1ldGEiLFN0LEx0LFV0LEZuKSlyZXR1cm47bGV0IGRyPVN0LGtyPUx0O1N0PHRoaXMuY291''@;'; put 'put ''bnRSb3dzKCkmJihkcj10aGlzLnRvUGh5c2ljYWxSb3coU3QpKSxMdDx0aGlzLmNvdW50Q29scygpJiYoa3I9dGhpcy50b1BoeXNpY2FsQ29sdW1uKEx0KSksZHQuc2V0Q2VsbE1ldGEoZHIsa3IsVXQsRm4pLGYucnVuSG9va3MoImFmdGVyU2V0Q2VsbE1ldGEiLFN0LEx0LFV0LEZuKX0sdGhp''@;'; put 'put ''cy5nZXRDZWxsc01ldGE9ZnVuY3Rpb24oKXtyZXR1cm4gZHQuZ2V0Q2VsbHNNZXRhKCl9LHRoaXMuZ2V0Q2VsbE1ldGE9ZnVuY3Rpb24oU3QsTHQpe2xldCBVdD10aGlzLnRvUGh5c2ljYWxSb3coU3QpLEZuPXRoaXMudG9QaHlzaWNhbENvbHVtbihMdCk7cmV0dXJuIG51bGw9PT1VdCYmKFV0''@;'; put 'put ''PVN0KSxudWxsPT09Rm4mJihGbj1MdCksZHQuZ2V0Q2VsbE1ldGEoVXQsRm4se3Zpc3VhbFJvdzpTdCx2aXN1YWxDb2x1bW46THR9KX0sdGhpcy5nZXRDZWxsTWV0YUF0Um93PWZ1bmN0aW9uKFN0KXtyZXR1cm4gZHQuZ2V0Q2VsbHNNZXRhQXRSb3coU3QpfSx0aGlzLmlzQ29sdW1uTW9kaWZp''@;'; put 'put ''Y2F0aW9uQWxsb3dlZD1mdW5jdGlvbigpe3JldHVybiEoIm9iamVjdCI9PT1mLmRhdGFUeXBlfHxodC5jb2x1bW5zKX0sdGhpcy5nZXRDZWxsUmVuZGVyZXI9ZnVuY3Rpb24oU3QsTHQpe2NvbnN0IFV0PSJudW1iZXIiPT10eXBlb2YgU3Q/Zi5nZXRDZWxsTWV0YShTdCxMdCkucmVuZGVyZXI6''@;'; put 'put ''U3QucmVuZGVyZXI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBVdD93TChVdCk6ZGwoVXQpP3dMKCJ0ZXh0Iik6VXR9LHRoaXMuZ2V0Q2VsbEVkaXRvcj1mdW5jdGlvbihTdCxMdCl7Y29uc3QgVXQ9Im51bWJlciI9PXR5cGVvZiBTdD9mLmdldENlbGxNZXRhKFN0LEx0KS5lZGl0b3I6U3QuZWRp''@;'; put 'put ''dG9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgVXQ/ZkwoVXQpOmRsKFV0KT9mTCgidGV4dCIpOlV0fSx0aGlzLmdldENlbGxWYWxpZGF0b3I9ZnVuY3Rpb24oU3QsTHQpe2NvbnN0IFV0PSJudW1iZXIiPT10eXBlb2YgU3Q/Zi5nZXRDZWxsTWV0YShTdCxMdCkudmFsaWRhdG9yOlN0LnZhbGlk''@;'; put 'put ''YXRvcjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFV0P1pXKFV0KTpVdH0sdGhpcy52YWxpZGF0ZUNlbGxzPWZ1bmN0aW9uKFN0KXt0aGlzLl92YWxpZGF0ZUNlbGxzKFN0KX0sdGhpcy52YWxpZGF0ZVJvd3M9ZnVuY3Rpb24oU3QsTHQpe2lmKCFBcnJheS5pc0FycmF5KFN0KSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoInZhbGlkYXRlUm93cyBwYXJhbWV0ZXIgYHJvd3NgIG11c3QgYmUgYW4gYXJyYXkiKTt0aGlzLl92YWxpZGF0ZUNlbGxzKEx0LFN0KX0sdGhpcy52YWxpZGF0ZUNvbHVtbnM9ZnVuY3Rpb24oU3QsTHQpe2lmKCFBcnJheS5pc0FycmF5KFN0KSl0aHJvdyBuZXcgRXJyb3IoInZhbGlk''@;'; put 'put ''YXRlQ29sdW1ucyBwYXJhbWV0ZXIgYGNvbHVtbnNgIG11c3QgYmUgYW4gYXJyYXkiKTt0aGlzLl92YWxpZGF0ZUNlbGxzKEx0LHZvaWQgMCxTdCl9LHRoaXMuX3ZhbGlkYXRlQ2VsbHM9ZnVuY3Rpb24oU3QsTHQsVXQpe2NvbnN0IEZuPW5ldyBfaTtTdCYmKEZuLm9uUXVldWVFbXB0eT1TdCk7''@;'; put 'put ''bGV0IEtuPWYuY291bnRSb3dzKCktMTtmb3IoO0tuPj0wOyl7aWYodm9pZCAwIT09THQmJi0xPT09THQuaW5kZXhPZihLbikpe0tuLT0xO2NvbnRpbnVlfWxldCBkcj1mLmNvdW50Q29scygpLTE7Zm9yKDtkcj49MDspdm9pZCAwPT09VXR8fC0xIT09VXQuaW5kZXhPZihkcik/KEZuLmFkZFZh''@;'; put 'put ''bGlkYXRvclRvUXVldWUoKSxmLnZhbGlkYXRlQ2VsbChmLmdldERhdGFBdENlbGwoS24sZHIpLGYuZ2V0Q2VsbE1ldGEoS24sZHIpLGtyPT57aWYoImJvb2xlYW4iIT10eXBlb2Yga3IpdGhyb3cgbmV3IEVycm9yKCJWYWxpZGF0aW9uIGVycm9yOiByZXN1bHQgaXMgbm90IGJvb2xlYW4iKTsh''@;'; put 'put ''MT09PWtyJiYoRm4udmFsaWQ9ITEpLEZuLnJlbW92ZVZhbGlkYXRvckZvcm1RdWV1ZSgpfSwidmFsaWRhdGVDZWxscyIpLGRyLT0xKTpkci09MTtLbi09MX1Gbi5jaGVja0lmUXVldWVJc0VtcHR5KCl9LHRoaXMuZ2V0Um93SGVhZGVyPWZ1bmN0aW9uKFN0KXtsZXQgTHQ9aHQucm93SGVhZGVy''@;'; put 'put ''cyxVdD1TdDtyZXR1cm4gdm9pZCAwIT09VXQmJihVdD1mLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWFkZXIiLFV0KSksdm9pZCAwPT09VXQ/KEx0PVtdLGdvKGYuY291bnRSb3dzKCktMSxGbj0+e0x0LnB1c2goZi5nZXRSb3dIZWFkZXIoRm4pKX0pKTpBcnJheS5pc0FycmF5KEx0KSYmdm9pZCAw''@;'; put 'put ''IT09THRbVXRdP0x0PUx0W1V0XTpobChMdCk/THQ9THQoVXQpOkx0JiYic3RyaW5nIiE9dHlwZW9mIEx0JiYibnVtYmVyIiE9dHlwZW9mIEx0JiYoTHQ9VXQrMSksTHR9LHRoaXMuaGFzUm93SGVhZGVycz1mdW5jdGlvbigpe3JldHVybiEhaHQucm93SGVhZGVyc30sdGhpcy5oYXNDb2xIZWFk''@;'; put 'put ''ZXJzPWZ1bmN0aW9uKCl7aWYobnVsbCE9aHQuY29sSGVhZGVycylyZXR1cm4hIWh0LmNvbEhlYWRlcnM7Zm9yKGxldCBTdD0wLEx0PWYuY291bnRDb2xzKCk7U3Q8THQ7U3QrKylpZihmLmdldENvbEhlYWRlcihTdCkpcmV0dXJuITA7cmV0dXJuITF9LHRoaXMuZ2V0Q29sSGVhZGVyPWZ1bmN0''@;'; put 'put ''aW9uKFN0KXtsZXQgTHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi0xO2NvbnN0IFV0PWYucnVuSG9va3MoIm1vZGlmeUNvbEhlYWRlciIsU3QpO2lmKHZvaWQgMD09PVV0KXtjb25zdCBqcj1bXSxUaT1mLmNvdW50Q29scygpO2Zvcihs''@;'; put 'put ''ZXQgbm89MDtubzxUaTtubysrKWpyLnB1c2goZi5nZXRDb2xIZWFkZXIobm8pKTtyZXR1cm4ganJ9bGV0IEZuPWh0LmNvbEhlYWRlcnM7Y29uc3QgZHI9Zi50b1BoeXNpY2FsQ29sdW1uKFV0KSxrcj1mdW5jdGlvbihqcil7Y29uc3QgVGk9W10sbm89Zi5jb3VudENvbHMoKTtsZXQgQ2k9MDtm''@;'; put 'put ''b3IoO0NpPG5vO0NpKyspaGwoaHQuY29sdW1ucykmJmh0LmNvbHVtbnMoQ2kpJiZUaS5wdXNoKENpKTtyZXR1cm4gVGlbanJdfShkcik7cmV0dXJuITE9PT1odC5jb2xIZWFkZXJzP0ZuPW51bGw6aHQuY29sdW1ucyYmaGwoaHQuY29sdW1ucykmJmh0LmNvbHVtbnMoa3IpJiZodC5jb2x1bW5z''@;'; put 'put ''KGtyKS50aXRsZT9Gbj1odC5jb2x1bW5zKGtyKS50aXRsZTpodC5jb2x1bW5zJiZodC5jb2x1bW5zW2RyXSYmaHQuY29sdW1uc1tkcl0udGl0bGU/Rm49aHQuY29sdW1uc1tkcl0udGl0bGU6QXJyYXkuaXNBcnJheShodC5jb2xIZWFkZXJzKSYmdm9pZCAwIT09aHQuY29sSGVhZGVyc1tkcl0/''@;'; put 'put ''Rm49aHQuY29sSGVhZGVyc1tkcl06aGwoaHQuY29sSGVhZGVycyk/Rm49aHQuY29sSGVhZGVycyhkcik6aHQuY29sSGVhZGVycyYmInN0cmluZyIhPXR5cGVvZiBodC5jb2xIZWFkZXJzJiYibnVtYmVyIiE9dHlwZW9mIGh0LmNvbEhlYWRlcnMmJihGbj16TChVdCkpLEZuPWYucnVuSG9va3Mo''@;'; put 'put ''Im1vZGlmeUNvbHVtbkhlYWRlclZhbHVlIixGbixTdCxMdCksRm59LHRoaXMuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzPWZ1bmN0aW9uKFN0KXtsZXQgTHQ7aWYoU3Q+PTAmJihMdD1mLmdldENlbGxNZXRhKDAsU3QpLndpZHRoKSwodm9pZCAwPT09THR8fEx0PT09aHQud2lkdGgpJiYoTHQ9''@;'; put 'put ''aHQuY29sV2lkdGhzKSxudWxsIT1MdCl7c3dpdGNoKHR5cGVvZiBMdCl7Y2FzZSJvYmplY3QiOkx0PUx0W1N0XTticmVhaztjYXNlImZ1bmN0aW9uIjpMdD1MdChTdCl9InN0cmluZyI9PXR5cGVvZiBMdCYmKEx0PXBhcnNlSW50KEx0LDEwKSl9cmV0dXJuIEx0fSx0aGlzLmdldENvbFdpZHRo''@;'; put 'put ''PWZ1bmN0aW9uKFN0KXtsZXQgTHQ9Zi5fZ2V0Q29sV2lkdGhGcm9tU2V0dGluZ3MoU3QpO3JldHVybiBMdD1mLnJ1bkhvb2tzKCJtb2RpZnlDb2xXaWR0aCIsTHQsU3QpLHZvaWQgMD09PUx0JiYoTHQ9eXguREVGQVVMVF9XSURUSCksTHR9LHRoaXMuX2dldFJvd0hlaWdodEZyb21TZXR0aW5n''@;'; put 'put ''cz1mdW5jdGlvbihTdCl7bGV0IEx0PWh0LnJvd0hlaWdodHM7aWYobnVsbCE9THQpe3N3aXRjaCh0eXBlb2YgTHQpe2Nhc2Uib2JqZWN0IjpMdD1MdFtTdF07YnJlYWs7Y2FzZSJmdW5jdGlvbiI6THQ9THQoU3QpfSJzdHJpbmciPT10eXBlb2YgTHQmJihMdD1wYXJzZUludChMdCwxMCkpfXJl''@;'; put 'put ''dHVybiBMdH0sdGhpcy5nZXRSb3dIZWlnaHQ9ZnVuY3Rpb24oU3Qpe2xldCBMdD1mLl9nZXRSb3dIZWlnaHRGcm9tU2V0dGluZ3MoU3QpO3JldHVybiBMdD1mLnJ1bkhvb2tzKCJtb2RpZnlSb3dIZWlnaHQiLEx0LFN0KSxMdH0sdGhpcy5jb3VudFNvdXJjZVJvd3M9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gVi5jb3VudFJvd3MoKX0sdGhpcy5jb3VudFNvdXJjZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gVi5jb3VudEZpcnN0Um93S2V5cygpfSx0aGlzLmNvdW50Um93cz1mdW5jdGlvbigpe3JldHVybiBTLmdldExlbmd0aCgpfSx0aGlzLmNvdW50Q29scz1mdW5jdGlvbigpe2NvbnN0IFN0PWh0''@;'; put 'put ''Lm1heENvbHMsTHQ9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROb3RUcmltbWVkSW5kZXhlc0xlbmd0aCgpO3JldHVybiBNYXRoLm1pbihTdCxMdCl9LHRoaXMuY291bnRSZW5kZXJlZFJvd3M9ZnVuY3Rpb24oKXtyZXR1cm4gZi52aWV3Ll93dC5kcmF3bj9mLnZpZXcuX3d0Lnd0VGFibGUu''@;'; put 'put ''Z2V0UmVuZGVyZWRSb3dzQ291bnQoKTotMX0sdGhpcy5jb3VudFZpc2libGVSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIGYudmlldy5fd3QuZHJhd24/Zi52aWV3Ll93dC53dFRhYmxlLmdldFZpc2libGVSb3dzQ291bnQoKTotMX0sdGhpcy5jb3VudFJlbmRlcmVkQ29scz1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBmLnZpZXcuX3d0LmRyYXduP2Yudmlldy5fd3Qud3RUYWJsZS5nZXRSZW5kZXJlZENvbHVtbnNDb3VudCgpOi0xfSx0aGlzLmNvdW50VmlzaWJsZUNvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gZi52aWV3Ll93dC5kcmF3bj9mLnZpZXcuX3d0Lnd0VGFibGUuZ2V0VmlzaWJsZUNvbHVtbnND''@;'; put 'put ''b3VudCgpOi0xfSx0aGlzLmNvdW50Um93SGVhZGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcuZ2V0Um93SGVhZGVyc0NvdW50KCl9LHRoaXMuY291bnRDb2xIZWFkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5nZXRDb2x1bW5IZWFkZXJzQ291bnQoKX0sdGhpcy5jb3Vu''@;'; put 'put ''dEVtcHR5Um93cz1mdW5jdGlvbigpe2xldCBTdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEx0PTA7cmV0dXJuIGJMKGYuY291bnRSb3dzKCktMSxVdD0+e2lmKGYuaXNFbXB0eVJvdyhVdCkpTHQrPTE7ZWxzZSBpZighMD09PVN0KXJl''@;'; put 'put ''dHVybiExfSksTHR9LHRoaXMuY291bnRFbXB0eUNvbHM9ZnVuY3Rpb24oKXtsZXQgU3Q9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxMdD0wO3JldHVybiBiTChmLmNvdW50Q29scygpLTEsVXQ9PntpZihmLmlzRW1wdHlDb2woVXQpKUx0''@;'; put 'put ''Kz0xO2Vsc2UgaWYoITA9PT1TdClyZXR1cm4hMX0pLEx0fSx0aGlzLmlzRW1wdHlSb3c9ZnVuY3Rpb24oU3Qpe3JldHVybiBodC5pc0VtcHR5Um93LmNhbGwoZixTdCl9LHRoaXMuaXNFbXB0eUNvbD1mdW5jdGlvbihTdCl7cmV0dXJuIGh0LmlzRW1wdHlDb2wuY2FsbChmLFN0KX0sdGhpcy5z''@;'; put 'put ''ZWxlY3RDZWxsPWZ1bmN0aW9uKFN0LEx0LFV0LEZuKXtsZXQgS249IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxkcj0hKGFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdKXx8YXJndW1lbnRzWzVdO3JldHVy''@;'; put 'put ''biFkbChTdCkmJiFkbChMdCkmJnRoaXMuc2VsZWN0Q2VsbHMoW1tTdCxMdCxVdCxGbl1dLEtuLGRyKX0sdGhpcy5zZWxlY3RDZWxscz1mdW5jdGlvbigpe2xldCBTdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W1tdXSxVdD0hKGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdOyExPT09KCEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0pJiZDZS5zdXNwZW5kKCk7Y29uc3QgRm49dnIuc2VsZWN0Q2VsbHMoU3QpO3JldHVy''@;'; put 'put ''biBGbiYmVXQmJmYubGlzdGVuKCksQ2UucmVzdW1lKCksRm59LHRoaXMuc2VsZWN0Q29sdW1ucz1mdW5jdGlvbihTdCl7cmV0dXJuIHZyLnNlbGVjdENvbHVtbnMoU3QsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlN0LGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sdGhpcy5zZWxlY3RSb3dzPWZ1bmN0aW9uKFN0KXtyZXR1cm4gdnIuc2VsZWN0Um93cyhTdCxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06U3QsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3Vt''@;'; put 'put ''ZW50c1syXTp2b2lkIDApfSx0aGlzLmRlc2VsZWN0Q2VsbD1mdW5jdGlvbigpe3ZyLmRlc2VsZWN0KCl9LHRoaXMuc2VsZWN0QWxsPWZ1bmN0aW9uKCl7bGV0IFN0PSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sTHQ9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlN0LFV0PWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO0NlLnNraXBOZXh0U2Nyb2xsQ3ljbGUoKSx2ci5zZWxlY3RBbGwoU3QsTHQsVXQpfTtjb25zdCBFcj0oU3QsTHQpPT5TdC5nZXRO''@;'; put 'put ''ZWFyZXN0Tm90SGlkZGVuSW5kZXgoTHQsMSwhMCk7dGhpcy5zY3JvbGxWaWV3cG9ydFRvPWZ1bmN0aW9uKFN0KXt2YXIgTHQsVXQ7Im51bWJlciI9PXR5cGVvZiBTdCYmKFN0PXtyb3c6YXJndW1lbnRzWzBdLGNvbDphcmd1bWVudHNbMV0sdmVydGljYWxTbmFwOmFyZ3VtZW50c1syXT8iYm90''@;'; put 'put ''dG9tIjoidG9wIixob3Jpem9udGFsU25hcDphcmd1bWVudHNbM10/ImVuZCI6InN0YXJ0Iixjb25zaWRlckhpZGRlbkluZGV4ZXM6bnVsbD09PShVdD1hcmd1bWVudHNbNF0pfHx2b2lkIDA9PT1VdHx8VXR9KTtjb25zdHtyb3c6Rm4sY29sOktuLHZlcnRpY2FsU25hcDpkcixob3Jpem9udGFs''@;'; put 'put ''U25hcDprcixjb25zaWRlckhpZGRlbkluZGV4ZXM6anJ9PW51bGwhPT0oTHQ9U3QpJiZ2b2lkIDAhPT1MdD9MdDp7fTtsZXQgVGksbm8sQ2kscW87dm9pZCAwIT09ZHImJihUaT0idG9wIj09PWRyLG5vPSFUaSksdm9pZCAwIT09a3ImJihDaT0ic3RhcnQiPT09a3IscW89IUNpKTtsZXQgaGE9''@;'; put 'put ''Rm4sV289S247aWYodm9pZCAwPT09anJ8fGpyKXtjb25zdCBycz1OdW1iZXIuaXNJbnRlZ2VyKEZuKSYmRm4+PTAsTnQ9TnVtYmVyLmlzSW50ZWdlcihLbikmJktuPj0wLE5zPXJzP0VyKHRoaXMucm93SW5kZXhNYXBwZXIsRm4pOnZvaWQgMCxQbz1OdD9Fcih0aGlzLmNvbHVtbkluZGV4TWFw''@;'; put 'put ''cGVyLEtuKTp2b2lkIDA7aWYobnVsbD09PU5zfHxudWxsPT09UG8pcmV0dXJuITE7aGE9cnM/Zi5yb3dJbmRleE1hcHBlci5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KE5zKTpGbixXbz1OdD9mLmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoUG8p''@;'; put 'put ''OktufWNvbnN0IEtpPU51bWJlci5pc0ludGVnZXIoaGEpLFFvPU51bWJlci5pc0ludGVnZXIoV28pO3JldHVybiBLaSYmaGE+PTAmJlFvJiZXbz49MD9mLnZpZXcuc2Nyb2xsVmlld3BvcnQoZi5fY3JlYXRlQ2VsbENvb3JkcyhoYSxXbyksVGkscW8sbm8sQ2kpOktpJiZoYT49MCYmKFFvJiZX''@;'; put 'put ''bzwwfHwhUW8pP2Yudmlldy5zY3JvbGxWaWV3cG9ydFZlcnRpY2FsbHkoaGEsVGksbm8pOiEhKFFvJiZXbz49MCYmKEtpJiZoYTwwfHwhS2kpKSYmZi52aWV3LnNjcm9sbFZpZXdwb3J0SG9yaXpvbnRhbGx5KFdvLHFvLENpKX0sdGhpcy5zY3JvbGxUb0ZvY3VzZWRDZWxsPWZ1bmN0aW9uKCl7''@;'; put 'put ''bGV0IFN0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTooKT0+e307aWYoIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoKSlyZXR1cm47dGhpcy5hZGRIb29rT25jZSgiYWZ0ZXJTY3JvbGwiLFN0KTtjb25zdHtoaWdobGlnaHQ6THR9PXRo''@;'; put 'put ''aXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTt0aGlzLnNjcm9sbFZpZXdwb3J0VG8oTHQudG9PYmplY3QoKSk/dGhpcy52aWV3LnJlbmRlcigpOih0aGlzLnJlbW92ZUhvb2soImFmdGVyU2Nyb2xsIixTdCksdGhpcy5fcmVnaXN0ZXJJbW1lZGlhdGUoKCk9PlN0KCkpKX0sdGhpcy5kZXN0cm95''@;'; put 'put ''PWZ1bmN0aW9uKCl7aWYoZi5fY2xlYXJUaW1lb3V0cygpLGYuX2NsZWFySW1tZWRpYXRlcygpLGYudmlldyYmZi52aWV3LmRlc3Ryb3koKSxWJiZWLmRlc3Ryb3koKSxWPW51bGwsdGhpcy5nZXRTaG9ydGN1dE1hbmFnZXIoKS5kZXN0cm95KCksZHQuY2xlYXJDYWNoZSgpLHlxLmRlbGV0ZSh0''@;'; put 'put ''aGlzLmd1aWQpLEhMKGYpKXtjb25zdCBTdD10aGlzLnJvb3REb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaG90LWRpc3BsYXktbGljZW5zZS1pbmZvIik7U3QmJlN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoU3QpfXNmKGYucm9vdEVsZW1lbnQpLHYuZGVzdHJveSgpLGRlJiZkZS5kZXN0cm95''@;'; put 'put ''KCksZi5iYXRjaEV4ZWN1dGlvbigoKT0+e2Yucm93SW5kZXhNYXBwZXIudW5yZWdpc3RlckFsbCgpLGYuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3RlckFsbCgpLFF0LmdldEl0ZW1zKCkuZm9yRWFjaChTdD0+e2xldFssTHRdPVN0O0x0LmRlc3Ryb3koKX0pLFF0LmNsZWFyKCksZi5ydW5I''@;'; put 'put ''b29rcygiYWZ0ZXJEZXN0cm95Iil9LCEwKSxhby5nZXRTaW5nbGV0b24oKS5kZXN0cm95KGYpLENzKGYsKFN0LEx0LFV0KT0+e2hsKFN0KT9VdFtMdF09ZnVuY3Rpb24genIoU3Qpe3JldHVybigpPT57dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7U3R9IiBtZXRob2QgY2Fubm90IGJlIGNhbGxl''@;'; put 'put ''ZCBiZWNhdXNlIHRoaXMgSGFuZHNvbnRhYmxlIGluc3RhbmNlIGhhcyBiZWVuIGRlc3Ryb3llZGApfX0oTHQpOiJndWlkIiE9PUx0JiYoVXRbTHRdPW51bGwpfSksZi5pc0Rlc3Ryb3llZD0hMCxTJiZTLmRlc3Ryb3koKSxTPW51bGwsUT1udWxsLHZyPW51bGwsZGU9bnVsbCxmPW51bGx9LHRo''@;'; put 'put ''aXMuZ2V0QWN0aXZlRWRpdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGRlLmdldEFjdGl2ZUVkaXRvcigpfSx0aGlzLmdldFBsdWdpbj1mdW5jdGlvbihTdCl7Y29uc3QgTHQ9STAoU3QpO3JldHVybiJVbmRvUmVkbyI9PT1MdD90aGlzLnVuZG9SZWRvOlF0LmdldEl0ZW0oTHQpfSx0aGlzLmdldFBs''@;'; put 'put ''dWdpbk5hbWU9ZnVuY3Rpb24oU3Qpe3JldHVybiBTdD09PXRoaXMudW5kb1JlZG8/dGhpcy51bmRvUmVkby5jb25zdHJ1Y3Rvci5QTFVHSU5fS0VZOlF0LmdldElkKFN0KX0sdGhpcy5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBmfSx0aGlzLmFkZEhvb2s9ZnVuY3Rpb24oU3QsTHQs''@;'; put 'put ''VXQpe2FvLmdldFNpbmdsZXRvbigpLmFkZChTdCxMdCxmLFV0KX0sdGhpcy5oYXNIb29rPWZ1bmN0aW9uKFN0KXtyZXR1cm4gYW8uZ2V0U2luZ2xldG9uKCkuaGFzKFN0LGYpfHxhby5nZXRTaW5nbGV0b24oKS5oYXMoU3QpfSx0aGlzLmFkZEhvb2tPbmNlPWZ1bmN0aW9uKFN0LEx0LFV0KXth''@;'; put 'put ''by5nZXRTaW5nbGV0b24oKS5vbmNlKFN0LEx0LGYsVXQpfSx0aGlzLnJlbW92ZUhvb2s9ZnVuY3Rpb24oU3QsTHQpe2FvLmdldFNpbmdsZXRvbigpLnJlbW92ZShTdCxMdCxmKX0sdGhpcy5ydW5Ib29rcz1mdW5jdGlvbihTdCxMdCxVdCxGbixLbixkcixrcil7cmV0dXJuIGFvLmdldFNpbmds''@;'; put 'put ''ZXRvbigpLnJ1bihmLFN0LEx0LFV0LEZuLEtuLGRyLGtyKX0sdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlPWZ1bmN0aW9uKFN0LEx0KXtyZXR1cm4gZmhlKGh0Lmxhbmd1YWdlLFN0LEx0KX0sdGhpcy50b0hUTUw9KCk9Pk5XKHRoaXMpLHRoaXMudG9UYWJsZUVsZW1lbnQ9KCk9Pntjb25zdCBT''@;'; put 'put ''dD10aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gU3QuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmJlZ2luIixOVyh0aGlzKSksU3QuZmlyc3RFbGVtZW50Q2hpbGR9LHRoaXMudGltZW91dHM9W10sdGhpcy5fcmVnaXN0ZXJUaW1lb3V0PWZ1bmN0aW9uKFN0''@;'; put 'put ''KXtsZXQgVXQ9U3Q7ImZ1bmN0aW9uIj09dHlwZW9mIFV0JiYoVXQ9c2V0VGltZW91dChVdCxhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCkpLHRoaXMudGltZW91dHMucHVzaChVdCl9LHRoaXMuX2NsZWFyVGltZW91dHM9ZnVuY3Rpb24o''@;'; put 'put ''KXtUbih0aGlzLnRpbWVvdXRzLFN0PT57Y2xlYXJUaW1lb3V0KFN0KX0pfSx0aGlzLmltbWVkaWF0ZXM9W10sdGhpcy5fcmVnaXN0ZXJJbW1lZGlhdGU9ZnVuY3Rpb24oU3Qpe3RoaXMuaW1tZWRpYXRlcy5wdXNoKHNldEltbWVkaWF0ZShTdCkpfSx0aGlzLl9jbGVhckltbWVkaWF0ZXM9ZnVu''@;'; put 'put ''Y3Rpb24oKXtUbih0aGlzLmltbWVkaWF0ZXMsU3Q9PntjbGVhckltbWVkaWF0ZShTdCl9KX0sdGhpcy5fZ2V0RWRpdG9yTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiBkZX0sdGhpcy5pc1J0bD1mdW5jdGlvbigpe3JldHVybiJydGwiPT09Zi5yb290V2luZG93LmdldENvbXB1dGVkU3R5bGUo''@;'; put 'put ''Zi5yb290RWxlbWVudCkuZGlyZWN0aW9ufSx0aGlzLmlzTHRyPWZ1bmN0aW9uKCl7cmV0dXJuIWYuaXNSdGwoKX0sdGhpcy5nZXREaXJlY3Rpb25GYWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZi5pc0x0cigpPzE6LTF9O2NvbnN0IEJpPWdYZSh7aGFuZGxlRXZlbnQ6KCk9PmYuaXNMaXN0ZW5p''@;'; put 'put ''bmcoKSxiZWZvcmVLZXlEb3duOlN0PT50aGlzLnJ1bkhvb2tzKCJiZWZvcmVLZXlEb3duIixTdCksYWZ0ZXJLZXlEb3duOlN0PT57dGhpcy5pc0Rlc3Ryb3llZHx8Zi5ydW5Ib29rcygiYWZ0ZXJEb2N1bWVudEtleURvd24iLFN0KX0sb3duZXJXaW5kb3c6dGhpcy5yb290V2luZG93fSk7dGhp''@;'; put 'put ''cy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLFN0PT57ITE9PT1TdC5jdHJsS2V5JiYhMT09PVN0Lm1ldGFLZXkmJkJpLnJlbGVhc2VQcmVzc2VkS2V5cygpfSksdGhpcy5nZXRTaG9ydGN1dE1hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4gQml9LHRoaXMuZ2V0Rm9jdXNNYW5hZ2Vy''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHBlfSxVVygpLmZvckVhY2goU3Q9Pntjb25zdCBMdD1heChTdCk7UXQuYWRkSXRlbShTdCxuZXcgTHQodGhpcykpfSksZnVuY3Rpb24gcEplKGwpe1tmSmUsaEplXS5mb3JFYWNoKGM9PmMobCkpfShmKSxCaS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIp''@;'; put 'put ''LGFvLmdldFNpbmdsZXRvbigpLnJ1bihmLCJjb25zdHJ1Y3QiKX1mdW5jdGlvbiAkaGUobCxjLGEpe2wuYWRkRXZlbnRMaXN0ZW5lcihjLGEsITEpfWZ1bmN0aW9uIHFoZShsLGMsYSl7bC5yZW1vdmVFdmVudExpc3RlbmVyKGMsYSwhMSl9ZnVuY3Rpb24gS2hlKGwpe3JldHVybiBsLm93bmVy''@;'; put 'put ''RG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShsKX1mdW5jdGlvbiBYaGUobCxjKXtjb25zdCBhPWdXKGMpLGQ9Yy52YWx1ZS5zcGxpdCgiXG4iKTtsZXQgaD1hLGY9MDtmb3IobGV0IHY9MDt2PGQubGVuZ3RoO3YrKyl7MCE9PXYmJihmKz1kW3YtMV0ubGVuZ3RoKzEpO2Nv''@;'; put 'put ''bnN0IFY9ZitkW3ZdLmxlbmd0aDtpZigiaG9tZSI9PT1sP2g9ZjoiZW5kIj09PWwmJihoPVYpLGE8PVYpYnJlYWt9UU0oYyxoKX1mdW5jdGlvbiBzNyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gbUplKGwpe3ZhciBjPWZ1bmN0aW9uIHZKZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8''@;'; put 'put ''IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBw''@;'; put 'put ''cmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25m''@;'; put 'put ''aWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBoTz0iaHRfZWRpdG9yX2hpZGRlbiIsSmhlPSJ0ZXh0RWRpdG9yIjtjbGFzcyBhNyBleHRlbmRzIENie3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4idGV4dCJ9Y29uc3RydWN0b3IoYyl7c3VwZXIoYyksczco''@;'; put 'put ''dGhpcywiZXZlbnRNYW5hZ2VyIixuZXcgemgodGhpcykpLHM3KHRoaXMsImF1dG9SZXNpemUiLGZ1bmN0aW9uIGdKZShsKXtjb25zdCBjPXttaW5IZWlnaHQ6MjAwLG1heEhlaWdodDozMDAsbWluV2lkdGg6MTAwLG1heFdpZHRoOjMwMH0sYT1sLmJvZHksZD1sLmNyZWF0ZVRleHROb2RlKCIi''@;'; put 'put ''KSxoPWwuY3JlYXRlRWxlbWVudCgic3BhbiIpO2xldCBmO2Z1bmN0aW9uIHYoKXtkLnRleHRDb250ZW50PWYudmFsdWUsaC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGguc3R5bGUuZm9udFNpemU9S2hlKGYpLmZvbnRTaXplLGguc3R5bGUuZm9udEZhbWlseT1LaGUoZikuZm9udEZhbWls''@;'; put 'put ''eSxoLnN0eWxlLndoaXRlU3BhY2U9InByZSIsYS5hcHBlbmRDaGlsZChoKTtjb25zdCBkZT1oLmNsaWVudFdpZHRoKzI7YS5yZW1vdmVDaGlsZChoKTtjb25zdCBwZT1mLnN0eWxlO3BlLmhlaWdodD1gJHtjLm1pbkhlaWdodH1weGAscGUud2lkdGg9Yy5taW5XaWR0aD5kZT9gJHtjLm1pbldp''@;'; put 'put ''ZHRofXB4YDpkZT5jLm1heFdpZHRoP2Ake2MubWF4V2lkdGh9cHhgOmAke2RlfXB4YDtjb25zdCBDZT1mLnNjcm9sbEhlaWdodD9mLnNjcm9sbEhlaWdodC0xOjA7Yy5taW5IZWlnaHQ+Q2U/cGUuaGVpZ2h0PWAke2MubWluSGVpZ2h0fXB4YDpjLm1heEhlaWdodDxDZT8ocGUuaGVpZ2h0PWAk''@;'; put 'put ''e2MubWF4SGVpZ2h0fXB4YCxwZS5vdmVyZmxvd1k9InZpc2libGUiKTpwZS5oZWlnaHQ9YCR7Q2V9cHhgfWZ1bmN0aW9uIFMoKXtsLmRlZmF1bHRWaWV3LnNldFRpbWVvdXQodiwwKX1yZXR1cm57aW5pdDpmdW5jdGlvbiBRKGRlLHBlKXtsZXQgQ2U9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lk''@;'; put 'put ''IDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtmPWRlLGZ1bmN0aW9uIFYoZGUpe2lmKGRlJiZkZS5taW5IZWlnaHQpaWYoImluaGVyaXQiPT09ZGUubWluSGVpZ2h0KWMubWluSGVpZ2h0PWYuY2xpZW50SGVpZ2h0O2Vsc2V7Y29uc3QgcGU9cGFyc2VJbnQoZGUubWluSGVpZ2h0LDEw''@;'; put 'put ''KTtpc05hTihwZSl8fChjLm1pbkhlaWdodD1wZSl9aWYoZGUmJmRlLm1heEhlaWdodClpZigiaW5oZXJpdCI9PT1kZS5tYXhIZWlnaHQpYy5tYXhIZWlnaHQ9Zi5jbGllbnRIZWlnaHQ7ZWxzZXtjb25zdCBwZT1wYXJzZUludChkZS5tYXhIZWlnaHQsMTApO2lzTmFOKHBlKXx8KGMubWF4SGVp''@;'; put 'put ''Z2h0PXBlKX1pZihkZSYmZGUubWluV2lkdGgpaWYoImluaGVyaXQiPT09ZGUubWluV2lkdGgpYy5taW5XaWR0aD1mLmNsaWVudFdpZHRoO2Vsc2V7Y29uc3QgcGU9cGFyc2VJbnQoZGUubWluV2lkdGgsMTApO2lzTmFOKHBlKXx8KGMubWluV2lkdGg9cGUpfWlmKGRlJiZkZS5tYXhXaWR0aClp''@;'; put 'put ''ZigiaW5oZXJpdCI9PT1kZS5tYXhXaWR0aCljLm1heFdpZHRoPWYuY2xpZW50V2lkdGg7ZWxzZXtjb25zdCBwZT1wYXJzZUludChkZS5tYXhXaWR0aCwxMCk7aXNOYU4ocGUpfHwoYy5tYXhXaWR0aD1wZSl9aC5maXJzdENoaWxkfHwoaC5jbGFzc05hbWU9ImF1dG9SZXNpemUiLGguc3R5bGUu''@;'; put 'put ''ZGlzcGxheT0iaW5saW5lLWJsb2NrIixoLmFwcGVuZENoaWxkKGQpKX0ocGUpLCJURVhUQVJFQSI9PT1mLm5vZGVOYW1lJiYoZi5zdHlsZS5yZXNpemU9Im5vbmUiLGYuc3R5bGUuaGVpZ2h0PWAke2MubWluSGVpZ2h0fXB4YCxmLnN0eWxlLm1pbldpZHRoPWAke2MubWluV2lkdGh9cHhgLGYu''@;'; put 'put ''c3R5bGUubWF4V2lkdGg9YCR7Yy5tYXhXaWR0aH1weGAsZi5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpLENlJiYoJGhlKGYsImlucHV0Iix2KSwkaGUoZiwia2V5ZG93biIsUykpLHYoKX0scmVzaXplOnYsdW5PYnNlcnZlKCl7cWhlKGYsImlucHV0Iix2KSxxaGUoZiwia2V5ZG93biIsUyl9''@;'; put 'put ''fX0odGhpcy5ob3Qucm9vdERvY3VtZW50KSksczcodGhpcywiVEVYVEFSRUEiLHZvaWQgMCksczcodGhpcywidGV4dGFyZWFTdHlsZSIsdm9pZCAwKSxzNyh0aGlzLCJURVhUQVJFQV9QQVJFTlQiLHZvaWQgMCksczcodGhpcywidGV4dGFyZWFQYXJlbnRTdHlsZSIsdm9pZCAwKSxzNyh0aGlz''@;'; put 'put ''LCJsYXllckNsYXNzIix2b2lkIDApLHRoaXMuZXZlbnRNYW5hZ2VyPW5ldyB6aCh0aGlzKSx0aGlzLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5iaW5kRXZlbnRzKCksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyRGVzdHJveSIsKCk9PnRoaXMuZGVzdHJveSgpKX1nZXRWYWx1ZSgpe3JldHVy''@;'; put 'put ''biB0aGlzLlRFWFRBUkVBLnZhbHVlfXNldFZhbHVlKGMpe3RoaXMuVEVYVEFSRUEudmFsdWU9Y31vcGVuKCl7dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpLHRoaXMuc2hvd0VkaXRhYmxlRWxlbWVudCgpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLnNldEFjdGl2ZUNvbnRleHROYW1l''@;'; put 'put ''KCJlZGl0b3IiKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCl9Y2xvc2UoKXt0aGlzLmF1dG9SZXNpemUudW5PYnNlcnZlKCksZzFlKHRoaXMuaG90LnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50LHRoaXMuaG90LnJvb3RFbGVtZW50KSYmdGhpcy5ob3QubGlzdGVuKCksdGhpcy5oaWRlRWRp''@;'; put 'put ''dGFibGVFbGVtZW50KCksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCl9cHJlcGFyZShjLGEsZCxoLGYsdil7Y29uc3QgUz10aGlzLnN0YXRlO2lmKHN1cGVyLnByZXBhcmUoYyxhLGQsaCxmLHYpLCF2LnJlYWRPbmx5KXt0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCEwKTtjb25zdHthbGxvd0lu''@;'; put 'put ''dmFsaWQ6Vn09djtWJiYhdGhpcy5pc09wZW5lZCgpJiYodGhpcy5URVhUQVJFQS52YWx1ZT0iIiksUyE9PXhjLkZJTklTSEVEJiYhdGhpcy5pc09wZW5lZCgpJiZ0aGlzLmhpZGVFZGl0YWJsZUVsZW1lbnQoKX19YmVnaW5FZGl0aW5nKGMsYSl7dGhpcy5zdGF0ZT09PXhjLlZJUkdJTiYmKHRo''@;'; put 'put ''aXMuVEVYVEFSRUEudmFsdWU9IiIsc3VwZXIuYmVnaW5FZGl0aW5nKGMsYSkpfWZvY3VzKCl7dGhpcy5URVhUQVJFQS5zZWxlY3QoKSxRTSh0aGlzLlRFWFRBUkVBLHRoaXMuVEVYVEFSRUEudmFsdWUubGVuZ3RoKX1jcmVhdGVFbGVtZW50cygpe2NvbnN0e3Jvb3REb2N1bWVudDpjfT10aGlz''@;'; put 'put ''LmhvdDt0aGlzLlRFWFRBUkVBPWMuY3JlYXRlRWxlbWVudCgiVEVYVEFSRUEiKSxWbyh0aGlzLlRFWFRBUkVBLFtbImRhdGEtaG90LWlucHV0IiwiIl0sbmIoLTEpXSksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmVm8odGhpcy5URVhUQVJFQSxbTTQoKV0pLG1pKHRoaXMuVEVY''@;'; put 'put ''VEFSRUEsImhhbmRzb250YWJsZUlucHV0IiksdGhpcy50ZXh0YXJlYVN0eWxlPXRoaXMuVEVYVEFSRUEuc3R5bGUsdGhpcy50ZXh0YXJlYVN0eWxlLndpZHRoPTAsdGhpcy50ZXh0YXJlYVN0eWxlLmhlaWdodD0wLHRoaXMudGV4dGFyZWFTdHlsZS5vdmVyZmxvd1k9InZpc2libGUiLHRoaXMu''@;'; put 'put ''VEVYVEFSRUFfUEFSRU5UPWMuY3JlYXRlRWxlbWVudCgiRElWIiksbWkodGhpcy5URVhUQVJFQV9QQVJFTlQsImhhbmRzb250YWJsZUlucHV0SG9sZGVyIiksWW8odGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXllckNsYXNzKSYmbHModGhpcy5URVhUQVJFQV9QQVJFTlQsdGhpcy5sYXll''@;'; put 'put ''ckNsYXNzKSxtaSh0aGlzLlRFWFRBUkVBX1BBUkVOVCxoTyksdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlPXRoaXMuVEVYVEFSRUFfUEFSRU5ULnN0eWxlLHRoaXMuVEVYVEFSRUFfUEFSRU5ULmFwcGVuZENoaWxkKHRoaXMuVEVYVEFSRUEpLHRoaXMuaG90LnJvb3RFbGVtZW50LmFwcGVuZENo''@;'; put 'put ''aWxkKHRoaXMuVEVYVEFSRUFfUEFSRU5UKX1oaWRlRWRpdGFibGVFbGVtZW50KCl7TjFlKCkmJih0aGlzLnRleHRhcmVhU3R5bGUudGV4dEluZGVudD0iLTk5OTk5cHgiKSx0aGlzLnRleHRhcmVhU3R5bGUub3ZlcmZsb3dZPSJ2aXNpYmxlIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3Bh''@;'; put 'put ''Y2l0eT0iMCIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLmhlaWdodD0iMXB4Iixscyh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpLG1pKHRoaXMuVEVYVEFSRUFfUEFSRU5ULGhPKX1zaG93RWRpdGFibGVFbGVtZW50KCl7dGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLmhl''@;'; put 'put ''aWdodD0iIix0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUub3ZlcmZsb3c9IiIsdGhpcy50ZXh0YXJlYVBhcmVudFN0eWxlLnBvc2l0aW9uPSIiLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJsZWZ0IjoicmlnaHQiXT0iYXV0byIsdGhpcy50ZXh0YXJlYVBhcmVu''@;'; put 'put ''dFN0eWxlLm9wYWNpdHk9IjEiLHRoaXMudGV4dGFyZWFTdHlsZS50ZXh0SW5kZW50PSIiO2NvbnN0IGM9dGhpcy5URVhUQVJFQV9QQVJFTlQuY2hpbGROb2RlcztsZXQgYT0hMTtnbyhjLmxlbmd0aC0xLGQ9PntpZihZbyhjW2RdLCJoYW5kc29udGFibGVFZGl0b3IiKSlyZXR1cm4gYT0hMCwh''@;'; put 'put ''MX0pLFlvKHRoaXMuVEVYVEFSRUFfUEFSRU5ULGhPKSYmbHModGhpcy5URVhUQVJFQV9QQVJFTlQsaE8pLGE/KHRoaXMubGF5ZXJDbGFzcz0iaHRfZWRpdG9yX3Zpc2libGUiLG1pKHRoaXMuVEVYVEFSRUFfUEFSRU5ULHRoaXMubGF5ZXJDbGFzcykpOih0aGlzLmxheWVyQ2xhc3M9dGhpcy5n''@;'; put 'put ''ZXRFZGl0ZWRDZWxsc0xheWVyQ2xhc3MoKSxtaSh0aGlzLlRFWFRBUkVBX1BBUkVOVCx0aGlzLmxheWVyQ2xhc3MpKX1yZWZyZXNoVmFsdWUoKXtjb25zdCBjPXRoaXMuaG90LnRvUGh5c2ljYWxSb3codGhpcy5yb3cpLGE9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbChjLHRoaXMuY29s''@;'; put 'put ''KTt0aGlzLm9yaWdpbmFsVmFsdWU9YSx0aGlzLnNldFZhbHVlKGEpLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKX1yZWZyZXNoRGltZW5zaW9ucygpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYodGhpcy5zdGF0ZSE9PXhj''@;'; put 'put ''LkVESVRJTkcmJiFjKXJldHVybjtpZih0aGlzLlREPXRoaXMuZ2V0RWRpdGVkQ2VsbCgpLCF0aGlzLlREKXJldHVybiB2b2lkKGN8fHRoaXMuY2xvc2UoKSk7Y29uc3R7dG9wOmEsc3RhcnQ6ZCx3aWR0aDpoLG1heFdpZHRoOmYsaGVpZ2h0OnYsbWF4SGVpZ2h0OlN9PXRoaXMuZ2V0RWRpdGVk''@;'; put 'put ''Q2VsbFJlY3QoKTt0aGlzLnRleHRhcmVhUGFyZW50U3R5bGUudG9wPWAke2F9cHhgLHRoaXMudGV4dGFyZWFQYXJlbnRTdHlsZVt0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQiXT1gJHtkfXB4YCx0aGlzLnNob3dFZGl0YWJsZUVsZW1lbnQoKTtjb25zdCBWPXg0KHRoaXMuVEQsdGhp''@;'; put 'put ''cy5ob3Qucm9vdFdpbmRvdyk7dGhpcy5URVhUQVJFQS5zdHlsZS5mb250U2l6ZT1WLmZvbnRTaXplLHRoaXMuVEVYVEFSRUEuc3R5bGUuZm9udEZhbWlseT1WLmZvbnRGYW1pbHksdGhpcy5URVhUQVJFQS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5URC5zdHlsZS5iYWNrZ3JvdW5kQ29s''@;'; put 'put ''b3I7Y29uc3QgUT14NCh0aGlzLlRFWFRBUkVBKSxkZT1wYXJzZUludChRLnBhZGRpbmdMZWZ0LDEwKStwYXJzZUludChRLnBhZGRpbmdSaWdodCwxMCkscGU9cGFyc2VJbnQoUS5wYWRkaW5nVG9wLDEwKStwYXJzZUludChRLnBhZGRpbmdCb3R0b20sMTApLE9lPXYtcGUsWWU9Zi1kZSxldD1T''@;'; put 'put ''LXBlO3RoaXMuYXV0b1Jlc2l6ZS5pbml0KHRoaXMuVEVYVEFSRUEse21pbldpZHRoOk1hdGgubWluKGgtZGUsWWUpLG1pbkhlaWdodDpNYXRoLm1pbihPZSxldCksbWF4V2lkdGg6WWUsbWF4SGVpZ2h0OmV0fSwhMCl9YmluZEV2ZW50cygpe3hXKCkmJnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2''@;'; put 'put ''ZW50TGlzdGVuZXIodGhpcy5URVhUQVJFQSwiZm9jdXNvdXQiLCgpPT50aGlzLmZpbmlzaEVkaXRpbmcoITEpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwoKT0+dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGlj''@;'; put 'put ''YWxseSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJlc2l6ZSIsKCk9Pnt0aGlzLnJlZnJlc2hEaW1lbnNpb25zKCksdGhpcy5zdGF0ZT09PXhjLkVESVRJTkcmJnRoaXMuZm9jdXMoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSb3dSZXNp''@;'; put 'put ''emUiLCgpPT57dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpLHRoaXMuc3RhdGU9PT14Yy5FRElUSU5HJiZ0aGlzLmZvY3VzKCl9KX1hbGxvd0tleUV2ZW50UHJvcGFnYXRpb24oKXt9ZGVzdHJveSgpe3RoaXMuZXZlbnRNYW5hZ2VyLmRlc3Ryb3koKSx0aGlzLmNsZWFySG9va3MoKX1yZWdpc3Rl''@;'; put 'put ''clNob3J0Y3V0cygpe2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksaD0oKT0+e3RoaXMuaG90LnJvb3REb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsITEsIlxuIil9O2EuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250''@;'; put 'put ''cm9sIiwiRW50ZXIiXV0sY2FsbGJhY2s6KCk9PihoKCksITEpLHJ1bk9ubHlJZjpmPT4hdGhpcy5ob3Quc2VsZWN0aW9uLmlzTXVsdGlwbGUoKSYmIWYuYWx0S2V5fSx7a2V5czpbWyJNZXRhIiwiRW50ZXIiXV0sY2FsbGJhY2s6KCk9PihoKCksITEpLHJ1bk9ubHlJZjooKT0+IXRoaXMuaG90''@;'; put 'put ''LnNlbGVjdGlvbi5pc011bHRpcGxlKCl9LHtrZXlzOltbIkFsdCIsIkVudGVyIl1dLGNhbGxiYWNrOigpPT4oaCgpLCExKX0se2tleXM6W1siSG9tZSJdXSxjYWxsYmFjazooZix2KT0+e2xldFtTXT12O1hoZShTLHRoaXMuVEVYVEFSRUEpfX0se2tleXM6W1siRW5kIl1dLGNhbGxiYWNrOihm''@;'; put 'put ''LHYpPT57bGV0W1NdPXY7WGhlKFMsdGhpcy5URVhUQVJFQSl9fV0se3J1bk9ubHlJZjooKT0+c28odGhpcy5ob3QuZ2V0U2VsZWN0ZWQoKSksZ3JvdXA6SmhlfSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIp''@;'; put 'put ''LnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoSmhlKX19ZnVuY3Rpb24gUHgobCxjLGEsZCxoLGYsdil7Y29uc3QgUz12LmFyaWFUYWdzLFY9W10sUT1bXSxkZT1bXSxwZT1bXTt2LmNsYXNzTmFtZSYmbWkoYyx2LmNsYXNzTmFtZSksdi5yZWFkT25seT8oVi5wdXNoKHYucmVhZE9ubHlDZWxsQ2xh''@;'; put 'put ''c3NOYW1lKSxTJiZwZS5wdXNoKGgxZSgpKSk6UyYmZGUucHVzaChoMWUoKVswXSksITE9PT12LnZhbGlkJiZ2LmludmFsaWRDZWxsQ2xhc3NOYW1lPyhWLnB1c2godi5pbnZhbGlkQ2VsbENsYXNzTmFtZSksUyYmcGUucHVzaChmMWUoKSkpOihRLnB1c2godi5pbnZhbGlkQ2VsbENsYXNzTmFt''@;'; put 'put ''ZSksUyYmZGUucHVzaChmMWUoKVswXSkpLCExPT09di53b3JkV3JhcCYmdi5ub1dvcmRXcmFwQ2xhc3NOYW1lJiZWLnB1c2godi5ub1dvcmRXcmFwQ2xhc3NOYW1lKSwhZiYmdi5wbGFjZWhvbGRlciYmVi5wdXNoKHYucGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lKSxscyhjLFEpLG1pKGMsViks''@;'; put 'put ''VTgoYyxkZSksVm8oYyxwZSl9ZnVuY3Rpb24gUDQobCxjLGEsZCxoLGYsdil7UHguYXBwbHkodGhpcyxbbCxjLGEsZCxoLGYsdl0pO2xldCBTPWY7aWYoIVMmJnYucGxhY2Vob2xkZXImJihTPXYucGxhY2Vob2xkZXIpLFM9aWMoUyksdi50cmltV2hpdGVzcGFjZSYmKFM9Uy50cmltKCkpLHYu''@;'; put 'put ''cmVuZGVyZXJUZW1wbGF0ZSl7c2YoYyk7Y29uc3QgVj1sLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJURU1QTEFURSIpO1Yuc2V0QXR0cmlidXRlKCJiaW5kIiwie3t9fSIpLFYuaW5uZXJIVE1MPXYucmVuZGVyZXJUZW1wbGF0ZSxIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKFYp''@;'; put 'put ''LFYubW9kZWw9bC5nZXRTb3VyY2VEYXRhQXRSb3coYSksYy5hcHBlbmRDaGlsZChWKX1lbHNlIE9tKGMsUyl9UHguUkVOREVSRVJfVFlQRT0iYmFzZSIsUDQuUkVOREVSRVJfVFlQRT0idGV4dCI7Y29uc3QgUWhlPXtDRUxMX1RZUEU6InRleHQiLGVkaXRvcjphNyxyZW5kZXJlcjpQNH07ZnVu''@;'; put 'put ''Y3Rpb24gZmYobCxjKXtjb25zdCBhPW5ldyBHaGUobCxjfHx7fSx2Ryk7cmV0dXJuIGEuaW5pdCgpLGF9R2goUWhlKSxmZi5lZGl0b3JzPXtCYXNlRWRpdG9yOkNifSxmZi5Db3JlPWZ1bmN0aW9uKGwpe3JldHVybiBuZXcgR2hlKGwsYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHZHKX0sZmYuRGVmYXVsdFNldHRpbmdzPUFoZSgpLGZmLmhvb2tzPWFvLmdldFNpbmdsZXRvbigpLGZmLkNlbGxDb29yZHM9UkwsZmYuQ2VsbFJhbmdlPXRHLGZmLnBhY2thZ2VOYW1lPSJoYW5kc29udGFibGUiLGZmLmJ1aWxkRGF0ZT0iMTEvMDYv''@;'; put 'put ''MjAyNCAwOTo1MTo0MiIsZmYudmVyc2lvbj0iMTQuNC4wIixmZi5sYW5ndWFnZXM9e2RpY3Rpb25hcnlLZXlzOkVxZSxnZXRMYW5ndWFnZURpY3Rpb25hcnk6aGhlLGdldExhbmd1YWdlc0RpY3Rpb25hcmllczpmdW5jdGlvbiBJcWUoKXtyZXR1cm4gQXFlKCl9LHJlZ2lzdGVyTGFuZ3VhZ2VE''@;'; put 'put ''aWN0aW9uYXJ5OmRoZSxnZXRUcmFuc2xhdGVkUGhyYXNlOmZoZX07Y29uc3QgSXM9ZmYsQ0plPVsiY29udGFpbmVyIl0sd3E9bmV3IE1hcCxlMmU9IlRoZSBIYW5kc29udGFibGUgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBhbmQgY2Fubm90IGJlIHVz''@;'; put 'put ''ZWQgcHJvcGVybHkuIjtsZXQgV209KCgpPT57Y2xhc3MgbHtnZXRJbnN0YW5jZShhKXtjb25zdCBkPXdxLmdldChhKTtyZXR1cm4gZC5pc0Rlc3Ryb3llZD8oY29uc29sZS53YXJuKGUyZSksbnVsbCk6ZH1yZWdpc3Rlckluc3RhbmNlKGEsZCl7cmV0dXJuIHdxLnNldChhLGQpfXJlbW92ZUlu''@;'; put 'put ''c3RhbmNlKGEpe3JldHVybiB3cS5kZWxldGUoYSl9c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfTtzdGF0aWMgXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9cmV0dXJuIGx9KSgpO2NvbnN0IFNKZT1PYmplY3Qua2V5cyhJ''@;'; put 'put ''cy5EZWZhdWx0U2V0dGluZ3MpLHQyZT1Jcy5ob29rcy5nZXRSZWdpc3RlcmVkKCk7bGV0IG4yZT0oKCk9PntjbGFzcyBse21lcmdlU2V0dGluZ3MoYSl7Y29uc3QgZD0ic2V0dGluZ3MiaW4gYSYmIm9iamVjdCI9PXR5cGVvZiBhLnNldHRpbmdzLGg9ZD9hLnNldHRpbmdzOnt9O3JldHVybiB0''@;'; put 'put ''MmUuY29uY2F0KFNKZSkuZm9yRWFjaCh2PT57Y29uc3QgUz10MmUuaW5kZXhPZih2KT4tMTtsZXQgVjtkJiZTJiYoVj1hLnNldHRpbmdzW3ZdKSx2b2lkIDAhPT1hW3ZdJiYoVj1hW3ZdKSx2b2lkIDAhPT1WJiYoaFt2XT0ibmdab25lImluIGEmJiJmdW5jdGlvbiI9PXR5cGVvZiBWJiZTP2Z1''@;'; put 'put ''bmN0aW9uKC4uLlEpe3JldHVybiBhLm5nWm9uZS5ydW4oKCk9PlYuYXBwbHkodGhpcyxRKSl9OlYpfSksaH1wcmVwYXJlQ2hhbmdlcyhhKXtjb25zdCBkPXt9O3JldHVybiBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGY9PnthLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT1hW2ZdLmN1cnJlbnRW''@;'; put 'put ''YWx1ZSl9KSxkfXN0YXRpYyBcdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX07c3RhdGljIFx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhY30pfXJldHVybiBsfSkoKSxTYj0oKCk9PntjbGFzcyBse19ob3RUYWJsZVJlZ2lzdGVyZXI7X2hvdFNl''@;'; put 'put ''dHRpbmdzUmVzb2x2ZXI7bmdab25lO2NvbnRhaW5lcjtfX2hvdEluc3RhbmNlPW51bGw7Y29sdW1uc0NvbXBvbmVudHM9W107c2V0dGluZ3M7aG90SWQ9IiI7YWN0aXZlSGVhZGVyQ2xhc3NOYW1lO2FsbG93RW1wdHk7YWxsb3dIdG1sO2FsbG93SW5zZXJ0Q29sdW1uO2FsbG93SW5zZXJ0Um93''@;'; put 'put ''O2FsbG93SW52YWxpZDthbGxvd1JlbW92ZUNvbHVtbjthbGxvd1JlbW92ZVJvdzthcmlhVGFnczthdXRvQ29sdW1uU2l6ZTthdXRvUm93U2l6ZTthdXRvV3JhcENvbDthdXRvV3JhcFJvdztiaW5kUm93c1dpdGhIZWFkZXJzO2NlbGw7Y2VsbHM7Y2hlY2tlZFRlbXBsYXRlO2NsYXNzTmFtZTtj''@;'; put 'put ''b2xIZWFkZXJzO2NvbGxhcHNpYmxlQ29sdW1ucztjb2x1bW5IZWFkZXJIZWlnaHQ7Y29sdW1ucztjb2x1bW5Tb3J0aW5nO2NvbHVtblN1bW1hcnk7Y29sV2lkdGhzO2NvbW1lbnRlZENlbGxDbGFzc05hbWU7Y29tbWVudHM7Y29udGV4dE1lbnU7Y29weWFibGU7Y29weVBhc3RlO2NvcnJlY3RG''@;'; put 'put ''b3JtYXQ7Y3VycmVudENvbENsYXNzTmFtZTtjdXJyZW50SGVhZGVyQ2xhc3NOYW1lO2N1cnJlbnRSb3dDbGFzc05hbWU7Y3VzdG9tQm9yZGVycztkYXRhO2RhdGFEb3ROb3RhdGlvbjtkYXRhU2NoZW1hO2RhdGVGb3JtYXQ7ZGF0ZVBpY2tlckNvbmZpZztkZWZhdWx0RGF0ZTt0YWJOYXZpZ2F0''@;'; put 'put ''aW9uO2Rpc2FibGVWaXN1YWxTZWxlY3Rpb247ZHJhZ1RvU2Nyb2xsO2Ryb3Bkb3duTWVudTtlZGl0b3I7ZW50ZXJCZWdpbnNFZGl0aW5nO2VudGVyTW92ZXM7ZmlsbEhhbmRsZTtmaWx0ZXI7ZmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZTtmaWx0ZXJzO2ZpeGVkQ29sdW1uc0xlZnQ7Zml4ZWRDb2x1''@;'; put 'put ''bW5zU3RhcnQ7Zml4ZWRSb3dzQm90dG9tO2ZpeGVkUm93c1RvcDtmb3JtdWxhcztmcmFnbWVudFNlbGVjdGlvbjtoZWlnaHQ7aGlkZGVuQ29sdW1ucztoaWRkZW5Sb3dzO2ludmFsaWRDZWxsQ2xhc3NOYW1lO2ltZUZhc3RFZGl0O2xhYmVsO2xhbmd1YWdlO2xheW91dERpcmVjdGlvbjtsaWNl''@;'; put 'put ''bnNlS2V5O2xvY2FsZTttYW51YWxDb2x1bW5GcmVlemU7bWFudWFsQ29sdW1uTW92ZTttYW51YWxDb2x1bW5SZXNpemU7bWFudWFsUm93TW92ZTttYW51YWxSb3dSZXNpemU7bWF4Q29sczttYXhSb3dzO21lcmdlQ2VsbHM7bWluQ29sczttaW5Sb3dzO21pblNwYXJlQ29sczttaW5TcGFyZVJv''@;'; put 'put ''d3M7bXVsdGlDb2x1bW5Tb3J0aW5nO25hdmlnYWJsZUhlYWRlcnM7bmVzdGVkSGVhZGVycztuZXN0ZWRSb3dzO25vV29yZFdyYXBDbGFzc05hbWU7bnVtZXJpY0Zvcm1hdDtvYnNlcnZlRE9NVmlzaWJpbGl0eTtvdXRzaWRlQ2xpY2tEZXNlbGVjdHM7cGVyc2lzdGVudFN0YXRlO3BsYWNlaG9s''@;'; put 'put ''ZGVyO3BsYWNlaG9sZGVyQ2VsbENsYXNzTmFtZTtwcmV2ZW50T3ZlcmZsb3c7cHJldmVudFdoZWVsO3JlYWRPbmx5O3JlYWRPbmx5Q2VsbENsYXNzTmFtZTtyZW5kZXJBbGxDb2x1bW5zO3JlbmRlckFsbFJvd3M7cmVuZGVyZXI7cm93SGVhZGVycztyb3dIZWFkZXJXaWR0aDtyb3dIZWlnaHRz''@;'; put 'put ''O3NlYXJjaDtzZWxlY3Rpb25Nb2RlO3NlbGVjdE9wdGlvbnM7c2tpcENvbHVtbk9uUGFzdGU7c2tpcFJvd09uUGFzdGU7c29ydEJ5UmVsZXZhbmNlO3NvdXJjZTtzdGFydENvbHM7c3RhcnRSb3dzO3N0cmV0Y2hIO3N0cmljdDt0YWJsZUNsYXNzTmFtZTt0YWJNb3Zlczt0aXRsZTt0cmltRHJv''@;'; put 'put ''cGRvd247dHJpbVJvd3M7dHJpbVdoaXRlc3BhY2U7dHlwZTt1bmNoZWNrZWRUZW1wbGF0ZTt1bmRvO3ZhbGlkYXRvcjt2aWV3cG9ydENvbHVtblJlbmRlcmluZ09mZnNldDt2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldDt2aXNpYmxlUm93czt3aWR0aDt3b3JkV3JhcDthZnRlckFkZENoaWxk''@;'; put 'put ''O2FmdGVyQXV0b2ZpbGw7YWZ0ZXJCZWdpbkVkaXRpbmc7YWZ0ZXJDZWxsTWV0YVJlc2V0O2FmdGVyQ2hhbmdlO2FmdGVyQ2hhbmdlc09ic2VydmVkO2FmdGVyQ29sdW1uQ29sbGFwc2U7YWZ0ZXJDb2x1bW5FeHBhbmQ7YWZ0ZXJDb2x1bW5GcmVlemU7YWZ0ZXJDb2x1bW5Nb3ZlO2FmdGVyQ29s''@;'; put 'put ''dW1uUmVzaXplO2FmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2U7YWZ0ZXJDb2x1bW5Tb3J0O2FmdGVyQ29sdW1uVW5mcmVlemU7YWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zO2FmdGVyQ29udGV4dE1lbnVIaWRlO2FmdGVyQ29udGV4dE1lbnVTaG93O2FmdGVyQ29weTthZnRlckNvcHlM''@;'; put 'put ''aW1pdDthZnRlckNyZWF0ZUNvbDthZnRlckNyZWF0ZVJvdzthZnRlckN1dDthZnRlckRlc2VsZWN0O2FmdGVyRGVzdHJveTthZnRlckRldGFjaENoaWxkO2FmdGVyRG9jdW1lbnRLZXlEb3duO2FmdGVyRHJhd1NlbGVjdGlvbjthZnRlckRyb3Bkb3duTWVudURlZmF1bHRPcHRpb25zO2FmdGVy''@;'; put 'put ''RHJvcGRvd25NZW51SGlkZTthZnRlckRyb3Bkb3duTWVudVNob3c7YWZ0ZXJGaWx0ZXI7YWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZTthZnRlckdldENlbGxNZXRhO2FmdGVyR2V0Q29sSGVhZGVyO2FmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzO2FmdGVyR2V0Um93SGVhZGVyO2FmdGVy''@;'; put 'put ''R2V0Um93SGVhZGVyUmVuZGVyZXJzO2FmdGVySGlkZUNvbHVtbnM7YWZ0ZXJIaWRlUm93czthZnRlckluaXQ7YWZ0ZXJMYW5ndWFnZUNoYW5nZTthZnRlckxpc3RlbjthZnRlckxvYWREYXRhO2FmdGVyTWVyZ2VDZWxsczthZnRlck1vZGlmeVRyYW5zZm9ybUVuZDthZnRlck1vZGlmeVRyYW5z''@;'; put 'put ''Zm9ybUZvY3VzO2FmdGVyTW9kaWZ5VHJhbnNmb3JtU3RhcnQ7YWZ0ZXJNb21lbnR1bVNjcm9sbDthZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkO2FmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZDthZnRlck9uQ2VsbENvbnRleHRNZW51O2FmdGVyT25DZWxsQ29ybmVyRGJsQ2xpY2s7YWZ0ZXJP''@;'; put 'put ''bkNlbGxDb3JuZXJNb3VzZURvd247YWZ0ZXJPbkNlbGxNb3VzZURvd247YWZ0ZXJPbkNlbGxNb3VzZU91dDthZnRlck9uQ2VsbE1vdXNlT3ZlcjthZnRlck9uQ2VsbE1vdXNlVXA7YWZ0ZXJQYXN0ZTthZnRlclBsdWdpbnNJbml0aWFsaXplZDthZnRlclJlZG87YWZ0ZXJSZWRvU3RhY2tDaGFu''@;'; put 'put ''Z2U7YWZ0ZXJSZWZyZXNoRGltZW5zaW9uczthZnRlclJlbW92ZUNlbGxNZXRhO2FmdGVyUmVtb3ZlQ29sO2FmdGVyUmVtb3ZlUm93O2FmdGVyUmVuZGVyO2FmdGVyUmVuZGVyZXI7YWZ0ZXJSb3dNb3ZlO2FmdGVyUm93UmVzaXplO2FmdGVyUm93U2VxdWVuY2VDaGFuZ2U7YWZ0ZXJTY3JvbGxI''@;'; put 'put ''b3Jpem9udGFsbHk7YWZ0ZXJTY3JvbGxWZXJ0aWNhbGx5O2FmdGVyU2Nyb2xsO2FmdGVyU2VsZWN0Q29sdW1uczthZnRlclNlbGVjdGlvbjthZnRlclNlbGVjdGlvbkJ5UHJvcDthZnRlclNlbGVjdGlvbkVuZDthZnRlclNlbGVjdGlvbkVuZEJ5UHJvcDthZnRlclNlbGVjdGlvbkZvY3VzU2V0''@;'; put 'put ''O2FmdGVyU2VsZWN0Um93czthZnRlclNldENlbGxNZXRhO2FmdGVyU2V0RGF0YUF0Q2VsbDthZnRlclNldERhdGFBdFJvd1Byb3A7YWZ0ZXJTZXRTb3VyY2VEYXRhQXRDZWxsO2FmdGVyU2hlZXRBZGRlZDthZnRlclNoZWV0UmVuYW1lZDthZnRlclNoZWV0UmVtb3ZlZDthZnRlclRyaW1Sb3c7''@;'; put 'put ''YWZ0ZXJVbmRvO2FmdGVyVW5kb1N0YWNrQ2hhbmdlO2FmdGVyVW5oaWRlQ29sdW1uczthZnRlclVuaGlkZVJvd3M7YWZ0ZXJVbmxpc3RlbjthZnRlclVubWVyZ2VDZWxsczthZnRlclVudHJpbVJvdzthZnRlclVwZGF0ZURhdGE7YWZ0ZXJVcGRhdGVTZXR0aW5nczthZnRlclZhbGlkYXRlO2Fm''@;'; put 'put ''dGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGU7YWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZTthZnRlclZpZXdSZW5kZXI7YmVmb3JlQWRkQ2hpbGQ7YmVmb3JlQXV0b2ZpbGw7YmVmb3JlQmVnaW5FZGl0aW5nO2JlZm9yZUNlbGxBbGlnbm1lbnQ7YmVmb3JlQ2hh''@;'; put 'put ''bmdlO2JlZm9yZUNoYW5nZVJlbmRlcjtiZWZvcmVDb2x1bW5Db2xsYXBzZTtiZWZvcmVDb2x1bW5FeHBhbmQ7YmVmb3JlQ29sdW1uRnJlZXplO2JlZm9yZUNvbHVtbk1vdmU7YmVmb3JlQ29sdW1uUmVzaXplO2JlZm9yZUNvbHVtblNvcnQ7YmVmb3JlQ29sdW1uV3JhcDtiZWZvcmVDb2x1bW5V''@;'; put 'put ''bmZyZWV6ZTtiZWZvcmVDb250ZXh0TWVudVNldEl0ZW1zO2JlZm9yZUNvbnRleHRNZW51U2hvdztiZWZvcmVDb3B5O2JlZm9yZUNyZWF0ZUNvbDtiZWZvcmVDcmVhdGVSb3c7YmVmb3JlQ3V0O2JlZm9yZURldGFjaENoaWxkO2JlZm9yZURyYXdCb3JkZXJzO2JlZm9yZURyb3Bkb3duTWVudVNl''@;'; put 'put ''dEl0ZW1zO2JlZm9yZURyb3Bkb3duTWVudVNob3c7YmVmb3JlRmlsdGVyO2JlZm9yZUdldENlbGxNZXRhO2JlZm9yZUhpZGVDb2x1bW5zO2JlZm9yZUhpZGVSb3dzO2JlZm9yZUhpZ2hsaWdodGluZ0NvbHVtbkhlYWRlcjtiZWZvcmVIaWdobGlnaHRpbmdSb3dIZWFkZXI7YmVmb3JlSW5pdDti''@;'; put 'put ''ZWZvcmVJbml0V2Fsa29udGFibGU7YmVmb3JlS2V5RG93bjtiZWZvcmVMYW5ndWFnZUNoYW5nZTtiZWZvcmVMb2FkRGF0YTtiZWZvcmVNZXJnZUNlbGxzO2JlZm9yZU9uQ2VsbENvbnRleHRNZW51O2JlZm9yZU9uQ2VsbE1vdXNlRG93bjtiZWZvcmVPbkNlbGxNb3VzZU91dDtiZWZvcmVPbkNl''@;'; put 'put ''bGxNb3VzZU92ZXI7YmVmb3JlT25DZWxsTW91c2VVcDtiZWZvcmVQYXN0ZTtiZWZvcmVSZWRvO2JlZm9yZVJlZG9TdGFja0NoYW5nZTtiZWZvcmVSZWZyZXNoRGltZW5zaW9ucztiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcztiZWZvcmVSZW1vdmVDZWxsTWV0YTtiZWZvcmVSZW1vdmVDb2w7''@;'; put 'put ''YmVmb3JlUmVtb3ZlUm93O2JlZm9yZVJlbmRlcjtiZWZvcmVSZW5kZXJlcjtiZWZvcmVSb3dNb3ZlO2JlZm9yZVJvd1Jlc2l6ZTtiZWZvcmVSb3dXcmFwO2JlZm9yZVNlbGVjdENvbHVtbnM7YmVmb3JlU2VsZWN0aW9uRm9jdXNTZXQ7YmVmb3JlU2VsZWN0aW9uSGlnaGxpZ2h0U2V0O2JlZm9y''@;'; put 'put ''ZVNlbGVjdFJvd3M7YmVmb3JlU2V0Q2VsbE1ldGE7YmVmb3JlU2V0UmFuZ2VFbmQ7YmVmb3JlU2V0UmFuZ2VTdGFydDtiZWZvcmVTZXRSYW5nZVN0YXJ0T25seTtiZWZvcmVTdHJldGNoaW5nQ29sdW1uV2lkdGg7YmVmb3JlVG91Y2hTY3JvbGw7YmVmb3JlVHJpbVJvdztiZWZvcmVVbmRvO2Jl''@;'; put 'put ''Zm9yZVVuZG9TdGFja0NoYW5nZTtiZWZvcmVVbmhpZGVDb2x1bW5zO2JlZm9yZVVuaGlkZVJvd3M7YmVmb3JlVW5tZXJnZUNlbGxzO2JlZm9yZVVudHJpbVJvdztiZWZvcmVVcGRhdGVEYXRhO2JlZm9yZVZhbGlkYXRlO2JlZm9yZVZhbHVlUmVuZGVyO2JlZm9yZVZpZXdwb3J0U2Nyb2xsO2Jl''@;'; put 'put ''Zm9yZVZpZXdwb3J0U2Nyb2xsSG9yaXpvbnRhbGx5O2JlZm9yZVZpZXdwb3J0U2Nyb2xsVmVydGljYWxseTtiZWZvcmVWaWV3UmVuZGVyO2NvbnN0cnVjdDtpbml0O21vZGlmeUF1dG9Db2x1bW5TaXplU2VlZDttb2RpZnlBdXRvZmlsbFJhbmdlO21vZGlmeUNvbEhlYWRlcjttb2RpZnlDb2x1''@;'; put 'put ''bW5IZWFkZXJIZWlnaHQ7bW9kaWZ5Q29sdW1uSGVhZGVyVmFsdWU7bW9kaWZ5Q29sV2lkdGg7bW9kaWZ5Q29weWFibGVSYW5nZTttb2RpZnlGaWx0ZXJzTXVsdGlTZWxlY3RWYWx1ZTttb2RpZnlGb2N1c2VkRWxlbWVudDttb2RpZnlEYXRhO21vZGlmeUZvY3VzT25UYWJOYXZpZ2F0aW9uO21v''@;'; put 'put ''ZGlmeUdldENlbGxDb29yZHM7bW9kaWZ5Um93RGF0YTttb2RpZnlSb3dIZWFkZXI7bW9kaWZ5Um93SGVhZGVyV2lkdGg7bW9kaWZ5Um93SGVpZ2h0O21vZGlmeVNvdXJjZURhdGE7bW9kaWZ5VHJhbnNmb3JtRW5kO21vZGlmeVRyYW5zZm9ybUZvY3VzO21vZGlmeVRyYW5zZm9ybVN0YXJ0O3Bl''@;'; put 'put ''cnNpc3RlbnRTdGF0ZUxvYWQ7cGVyc2lzdGVudFN0YXRlUmVzZXQ7cGVyc2lzdGVudFN0YXRlU2F2ZTtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5faG90VGFibGVSZWdpc3RlcmVyPWEsdGhpcy5faG90U2V0dGluZ3NSZXNvbHZlcj1kLHRoaXMubmdab25lPWh9Z2V0IGhvdEluc3RhbmNlKCl7''@;'; put 'put ''cmV0dXJuIXRoaXMuX19ob3RJbnN0YW5jZXx8dGhpcy5fX2hvdEluc3RhbmNlJiYhdGhpcy5fX2hvdEluc3RhbmNlLmlzRGVzdHJveWVkP3RoaXMuX19ob3RJbnN0YW5jZToodGhpcy5faG90VGFibGVSZWdpc3RlcmVyLnJlbW92ZUluc3RhbmNlKHRoaXMuaG90SWQpLGNvbnNvbGUud2Fybihl''@;'; put 'put ''MmUpLG51bGwpfXNldCBob3RJbnN0YW5jZShhKXt0aGlzLl9faG90SW5zdGFuY2U9YX1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCBhPXRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyh0aGlzKTtpZih0aGlzLmNvbHVtbnNDb21wb25lbnRzLmxlbmd0aD4wKXtjb25zdCBk''@;'; put 'put ''PVtdO3RoaXMuY29sdW1uc0NvbXBvbmVudHMuZm9yRWFjaChoPT57ZC5wdXNoKHRoaXMuX2hvdFNldHRpbmdzUmVzb2x2ZXIubWVyZ2VTZXR0aW5ncyhoKSl9KSxhLmNvbHVtbnM9ZH10aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuaG90SW5zdGFuY2U9bmV3IElzLkNv''@;'; put 'put ''cmUodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCxhKSx0aGlzLmhvdElkJiZ0aGlzLl9ob3RUYWJsZVJlZ2lzdGVyZXIucmVnaXN0ZXJJbnN0YW5jZSh0aGlzLmhvdElkLHRoaXMuaG90SW5zdGFuY2UpLHRoaXMuaG90SW5zdGFuY2UuaW5pdCgpfSl9bmdPbkNoYW5nZXMoYSl7aWYobnVs''@;'; put 'put ''bD09PXRoaXMuaG90SW5zdGFuY2UpcmV0dXJuO2NvbnN0IGQ9dGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5wcmVwYXJlQ2hhbmdlcyhhKTt0aGlzLnVwZGF0ZUhvdFRhYmxlKGQpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLmhvdEluc3Rh''@;'; put 'put ''bmNlJiZ0aGlzLmhvdEluc3RhbmNlLmRlc3Ryb3koKX0pLHRoaXMuaG90SWQmJnRoaXMuX2hvdFRhYmxlUmVnaXN0ZXJlci5yZW1vdmVJbnN0YW5jZSh0aGlzLmhvdElkKX11cGRhdGVIb3RUYWJsZShhKXt0aGlzLmhvdEluc3RhbmNlJiZ0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigo''@;'; put 'put ''KT0+e3RoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3MoYSwhMSl9KX1vbkFmdGVyQ29sdW1uc0NoYW5nZSgpe2lmKHZvaWQgMCE9PXRoaXMuY29sdW1uc0NvbXBvbmVudHMmJnRoaXMuY29sdW1uc0NvbXBvbmVudHMubGVuZ3RoPjApe2NvbnN0IGE9W107dGhpcy5jb2x1bW5zQ29tcG9u''@;'; put 'put ''ZW50cy5mb3JFYWNoKGg9PnthLnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKGgpKX0pLHRoaXMudXBkYXRlSG90VGFibGUoe2NvbHVtbnM6YX0pfX1vbkFmdGVyQ29sdW1uc051bWJlckNoYW5nZSgpe2NvbnN0IGE9W107dGhpcy5jb2x1bW5zQ29tcG9uZW50''@;'; put 'put ''cy5sZW5ndGg+MCYmdGhpcy5jb2x1bW5zQ29tcG9uZW50cy5mb3JFYWNoKGQ9PnthLnB1c2godGhpcy5faG90U2V0dGluZ3NSZXNvbHZlci5tZXJnZVNldHRpbmdzKGQpKX0pLHRoaXMudXBkYXRlSG90VGFibGUoe2NvbHVtbnM6YX0pfWFkZENvbHVtbihhKXt0aGlzLmNvbHVtbnNDb21wb25l''@;'; put 'put ''bnRzLnB1c2goYSksdGhpcy5vbkFmdGVyQ29sdW1uc051bWJlckNoYW5nZSgpfXJlbW92ZUNvbHVtbihhKXtjb25zdCBkPXRoaXMuY29sdW1uc0NvbXBvbmVudHMuaW5kZXhPZihhKTt0aGlzLmNvbHVtbnNDb21wb25lbnRzLnNwbGljZShkLDEpLHRoaXMub25BZnRlckNvbHVtbnNOdW1iZXJD''@;'; put 'put ''aGFuZ2UoKX1zdGF0aWMgXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoV20pLEplKG4yZSksSmUoTW8pKX07c3RhdGljIFx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJob3QtdGFibGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGQsaCl7aWYoMSZkJiZI''@;'; put 'put ''byhDSmUsNSksMiZkKXtsZXQgZjtsaShmPWNpKCkpJiYoaC5jb250YWluZXI9Zi5maXJzdCl9fSxpbnB1dHM6e3NldHRpbmdzOiJzZXR0aW5ncyIsaG90SWQ6ImhvdElkIixhY3RpdmVIZWFkZXJDbGFzc05hbWU6ImFjdGl2ZUhlYWRlckNsYXNzTmFtZSIsYWxsb3dFbXB0eToiYWxsb3dFbXB0''@;'; put 'put ''eSIsYWxsb3dIdG1sOiJhbGxvd0h0bWwiLGFsbG93SW5zZXJ0Q29sdW1uOiJhbGxvd0luc2VydENvbHVtbiIsYWxsb3dJbnNlcnRSb3c6ImFsbG93SW5zZXJ0Um93IixhbGxvd0ludmFsaWQ6ImFsbG93SW52YWxpZCIsYWxsb3dSZW1vdmVDb2x1bW46ImFsbG93UmVtb3ZlQ29sdW1uIixhbGxv''@;'; put 'put ''d1JlbW92ZVJvdzoiYWxsb3dSZW1vdmVSb3ciLGFyaWFUYWdzOiJhcmlhVGFncyIsYXV0b0NvbHVtblNpemU6ImF1dG9Db2x1bW5TaXplIixhdXRvUm93U2l6ZToiYXV0b1Jvd1NpemUiLGF1dG9XcmFwQ29sOiJhdXRvV3JhcENvbCIsYXV0b1dyYXBSb3c6ImF1dG9XcmFwUm93IixiaW5kUm93''@;'; put 'put ''c1dpdGhIZWFkZXJzOiJiaW5kUm93c1dpdGhIZWFkZXJzIixjZWxsOiJjZWxsIixjZWxsczoiY2VsbHMiLGNoZWNrZWRUZW1wbGF0ZToiY2hlY2tlZFRlbXBsYXRlIixjbGFzc05hbWU6ImNsYXNzTmFtZSIsY29sSGVhZGVyczoiY29sSGVhZGVycyIsY29sbGFwc2libGVDb2x1bW5zOiJjb2xs''@;'; put 'put ''YXBzaWJsZUNvbHVtbnMiLGNvbHVtbkhlYWRlckhlaWdodDoiY29sdW1uSGVhZGVySGVpZ2h0Iixjb2x1bW5zOiJjb2x1bW5zIixjb2x1bW5Tb3J0aW5nOiJjb2x1bW5Tb3J0aW5nIixjb2x1bW5TdW1tYXJ5OiJjb2x1bW5TdW1tYXJ5Iixjb2xXaWR0aHM6ImNvbFdpZHRocyIsY29tbWVudGVk''@;'; put 'put ''Q2VsbENsYXNzTmFtZToiY29tbWVudGVkQ2VsbENsYXNzTmFtZSIsY29tbWVudHM6ImNvbW1lbnRzIixjb250ZXh0TWVudToiY29udGV4dE1lbnUiLGNvcHlhYmxlOiJjb3B5YWJsZSIsY29weVBhc3RlOiJjb3B5UGFzdGUiLGNvcnJlY3RGb3JtYXQ6ImNvcnJlY3RGb3JtYXQiLGN1cnJlbnRD''@;'; put 'put ''b2xDbGFzc05hbWU6ImN1cnJlbnRDb2xDbGFzc05hbWUiLGN1cnJlbnRIZWFkZXJDbGFzc05hbWU6ImN1cnJlbnRIZWFkZXJDbGFzc05hbWUiLGN1cnJlbnRSb3dDbGFzc05hbWU6ImN1cnJlbnRSb3dDbGFzc05hbWUiLGN1c3RvbUJvcmRlcnM6ImN1c3RvbUJvcmRlcnMiLGRhdGE6ImRhdGEi''@;'; put 'put ''LGRhdGFEb3ROb3RhdGlvbjoiZGF0YURvdE5vdGF0aW9uIixkYXRhU2NoZW1hOiJkYXRhU2NoZW1hIixkYXRlRm9ybWF0OiJkYXRlRm9ybWF0IixkYXRlUGlja2VyQ29uZmlnOiJkYXRlUGlja2VyQ29uZmlnIixkZWZhdWx0RGF0ZToiZGVmYXVsdERhdGUiLHRhYk5hdmlnYXRpb246InRhYk5h''@;'; put 'put ''dmlnYXRpb24iLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ImRpc2FibGVWaXN1YWxTZWxlY3Rpb24iLGRyYWdUb1Njcm9sbDoiZHJhZ1RvU2Nyb2xsIixkcm9wZG93bk1lbnU6ImRyb3Bkb3duTWVudSIsZWRpdG9yOiJlZGl0b3IiLGVudGVyQmVnaW5zRWRpdGluZzoiZW50ZXJCZWdpbnNFZGl0''@;'; put 'put ''aW5nIixlbnRlck1vdmVzOiJlbnRlck1vdmVzIixmaWxsSGFuZGxlOiJmaWxsSGFuZGxlIixmaWx0ZXI6ImZpbHRlciIsZmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZToiZmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZSIsZmlsdGVyczoiZmlsdGVycyIsZml4ZWRDb2x1bW5zTGVmdDoiZml4ZWRDb2x1bW5z''@;'; put 'put ''TGVmdCIsZml4ZWRDb2x1bW5zU3RhcnQ6ImZpeGVkQ29sdW1uc1N0YXJ0IixmaXhlZFJvd3NCb3R0b206ImZpeGVkUm93c0JvdHRvbSIsZml4ZWRSb3dzVG9wOiJmaXhlZFJvd3NUb3AiLGZvcm11bGFzOiJmb3JtdWxhcyIsZnJhZ21lbnRTZWxlY3Rpb246ImZyYWdtZW50U2VsZWN0aW9uIixo''@;'; put 'put ''ZWlnaHQ6ImhlaWdodCIsaGlkZGVuQ29sdW1uczoiaGlkZGVuQ29sdW1ucyIsaGlkZGVuUm93czoiaGlkZGVuUm93cyIsaW52YWxpZENlbGxDbGFzc05hbWU6ImludmFsaWRDZWxsQ2xhc3NOYW1lIixpbWVGYXN0RWRpdDoiaW1lRmFzdEVkaXQiLGxhYmVsOiJsYWJlbCIsbGFuZ3VhZ2U6Imxh''@;'; put 'put ''bmd1YWdlIixsYXlvdXREaXJlY3Rpb246ImxheW91dERpcmVjdGlvbiIsbGljZW5zZUtleToibGljZW5zZUtleSIsbG9jYWxlOiJsb2NhbGUiLG1hbnVhbENvbHVtbkZyZWV6ZToibWFudWFsQ29sdW1uRnJlZXplIixtYW51YWxDb2x1bW5Nb3ZlOiJtYW51YWxDb2x1bW5Nb3ZlIixtYW51YWxD''@;'; put 'put ''b2x1bW5SZXNpemU6Im1hbnVhbENvbHVtblJlc2l6ZSIsbWFudWFsUm93TW92ZToibWFudWFsUm93TW92ZSIsbWFudWFsUm93UmVzaXplOiJtYW51YWxSb3dSZXNpemUiLG1heENvbHM6Im1heENvbHMiLG1heFJvd3M6Im1heFJvd3MiLG1lcmdlQ2VsbHM6Im1lcmdlQ2VsbHMiLG1pbkNvbHM6''@;'; put 'put ''Im1pbkNvbHMiLG1pblJvd3M6Im1pblJvd3MiLG1pblNwYXJlQ29sczoibWluU3BhcmVDb2xzIixtaW5TcGFyZVJvd3M6Im1pblNwYXJlUm93cyIsbXVsdGlDb2x1bW5Tb3J0aW5nOiJtdWx0aUNvbHVtblNvcnRpbmciLG5hdmlnYWJsZUhlYWRlcnM6Im5hdmlnYWJsZUhlYWRlcnMiLG5lc3Rl''@;'; put 'put ''ZEhlYWRlcnM6Im5lc3RlZEhlYWRlcnMiLG5lc3RlZFJvd3M6Im5lc3RlZFJvd3MiLG5vV29yZFdyYXBDbGFzc05hbWU6Im5vV29yZFdyYXBDbGFzc05hbWUiLG51bWVyaWNGb3JtYXQ6Im51bWVyaWNGb3JtYXQiLG9ic2VydmVET01WaXNpYmlsaXR5OiJvYnNlcnZlRE9NVmlzaWJpbGl0eSIs''@;'; put 'put ''b3V0c2lkZUNsaWNrRGVzZWxlY3RzOiJvdXRzaWRlQ2xpY2tEZXNlbGVjdHMiLHBlcnNpc3RlbnRTdGF0ZToicGVyc2lzdGVudFN0YXRlIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHBsYWNlaG9sZGVyQ2VsbENsYXNzTmFtZToicGxhY2Vob2xkZXJDZWxsQ2xhc3NOYW1lIixwcmV2ZW50''@;'; put 'put ''T3ZlcmZsb3c6InByZXZlbnRPdmVyZmxvdyIscHJldmVudFdoZWVsOiJwcmV2ZW50V2hlZWwiLHJlYWRPbmx5OiJyZWFkT25seSIscmVhZE9ubHlDZWxsQ2xhc3NOYW1lOiJyZWFkT25seUNlbGxDbGFzc05hbWUiLHJlbmRlckFsbENvbHVtbnM6InJlbmRlckFsbENvbHVtbnMiLHJlbmRlckFs''@;'; put 'put ''bFJvd3M6InJlbmRlckFsbFJvd3MiLHJlbmRlcmVyOiJyZW5kZXJlciIscm93SGVhZGVyczoicm93SGVhZGVycyIscm93SGVhZGVyV2lkdGg6InJvd0hlYWRlcldpZHRoIixyb3dIZWlnaHRzOiJyb3dIZWlnaHRzIixzZWFyY2g6InNlYXJjaCIsc2VsZWN0aW9uTW9kZToic2VsZWN0aW9uTW9k''@;'; put 'put ''ZSIsc2VsZWN0T3B0aW9uczoic2VsZWN0T3B0aW9ucyIsc2tpcENvbHVtbk9uUGFzdGU6InNraXBDb2x1bW5PblBhc3RlIixza2lwUm93T25QYXN0ZToic2tpcFJvd09uUGFzdGUiLHNvcnRCeVJlbGV2YW5jZToic29ydEJ5UmVsZXZhbmNlIixzb3VyY2U6InNvdXJjZSIsc3RhcnRDb2xzOiJz''@;'; put 'put ''dGFydENvbHMiLHN0YXJ0Um93czoic3RhcnRSb3dzIixzdHJldGNoSDoic3RyZXRjaEgiLHN0cmljdDoic3RyaWN0Iix0YWJsZUNsYXNzTmFtZToidGFibGVDbGFzc05hbWUiLHRhYk1vdmVzOiJ0YWJNb3ZlcyIsdGl0bGU6InRpdGxlIix0cmltRHJvcGRvd246InRyaW1Ecm9wZG93biIsdHJp''@;'; put 'put ''bVJvd3M6InRyaW1Sb3dzIix0cmltV2hpdGVzcGFjZToidHJpbVdoaXRlc3BhY2UiLHR5cGU6InR5cGUiLHVuY2hlY2tlZFRlbXBsYXRlOiJ1bmNoZWNrZWRUZW1wbGF0ZSIsdW5kbzoidW5kbyIsdmFsaWRhdG9yOiJ2YWxpZGF0b3IiLHZpZXdwb3J0Q29sdW1uUmVuZGVyaW5nT2Zmc2V0OiJ2''@;'; put 'put ''aWV3cG9ydENvbHVtblJlbmRlcmluZ09mZnNldCIsdmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQ6InZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0Iix2aXNpYmxlUm93czoidmlzaWJsZVJvd3MiLHdpZHRoOiJ3aWR0aCIsd29yZFdyYXA6IndvcmRXcmFwIixhZnRlckFkZENoaWxkOiJhZnRl''@;'; put 'put ''ckFkZENoaWxkIixhZnRlckF1dG9maWxsOiJhZnRlckF1dG9maWxsIixhZnRlckJlZ2luRWRpdGluZzoiYWZ0ZXJCZWdpbkVkaXRpbmciLGFmdGVyQ2VsbE1ldGFSZXNldDoiYWZ0ZXJDZWxsTWV0YVJlc2V0IixhZnRlckNoYW5nZToiYWZ0ZXJDaGFuZ2UiLGFmdGVyQ2hhbmdlc09ic2VydmVk''@;'; put 'put ''OiJhZnRlckNoYW5nZXNPYnNlcnZlZCIsYWZ0ZXJDb2x1bW5Db2xsYXBzZToiYWZ0ZXJDb2x1bW5Db2xsYXBzZSIsYWZ0ZXJDb2x1bW5FeHBhbmQ6ImFmdGVyQ29sdW1uRXhwYW5kIixhZnRlckNvbHVtbkZyZWV6ZToiYWZ0ZXJDb2x1bW5GcmVlemUiLGFmdGVyQ29sdW1uTW92ZToiYWZ0ZXJD''@;'; put 'put ''b2x1bW5Nb3ZlIixhZnRlckNvbHVtblJlc2l6ZToiYWZ0ZXJDb2x1bW5SZXNpemUiLGFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2U6ImFmdGVyQ29sdW1uU2VxdWVuY2VDaGFuZ2UiLGFmdGVyQ29sdW1uU29ydDoiYWZ0ZXJDb2x1bW5Tb3J0IixhZnRlckNvbHVtblVuZnJlZXplOiJhZnRlckNv''@;'; put 'put ''bHVtblVuZnJlZXplIixhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnM6ImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsYWZ0ZXJDb250ZXh0TWVudUhpZGU6ImFmdGVyQ29udGV4dE1lbnVIaWRlIixhZnRlckNvbnRleHRNZW51U2hvdzoiYWZ0ZXJDb250ZXh0TWVudVNob3ci''@;'; put 'put ''LGFmdGVyQ29weToiYWZ0ZXJDb3B5IixhZnRlckNvcHlMaW1pdDoiYWZ0ZXJDb3B5TGltaXQiLGFmdGVyQ3JlYXRlQ29sOiJhZnRlckNyZWF0ZUNvbCIsYWZ0ZXJDcmVhdGVSb3c6ImFmdGVyQ3JlYXRlUm93IixhZnRlckN1dDoiYWZ0ZXJDdXQiLGFmdGVyRGVzZWxlY3Q6ImFmdGVyRGVzZWxl''@;'; put 'put ''Y3QiLGFmdGVyRGVzdHJveToiYWZ0ZXJEZXN0cm95IixhZnRlckRldGFjaENoaWxkOiJhZnRlckRldGFjaENoaWxkIixhZnRlckRvY3VtZW50S2V5RG93bjoiYWZ0ZXJEb2N1bWVudEtleURvd24iLGFmdGVyRHJhd1NlbGVjdGlvbjoiYWZ0ZXJEcmF3U2VsZWN0aW9uIixhZnRlckRyb3Bkb3du''@;'; put 'put ''TWVudURlZmF1bHRPcHRpb25zOiJhZnRlckRyb3Bkb3duTWVudURlZmF1bHRPcHRpb25zIixhZnRlckRyb3Bkb3duTWVudUhpZGU6ImFmdGVyRHJvcGRvd25NZW51SGlkZSIsYWZ0ZXJEcm9wZG93bk1lbnVTaG93OiJhZnRlckRyb3Bkb3duTWVudVNob3ciLGFmdGVyRmlsdGVyOiJhZnRlckZp''@;'; put 'put ''bHRlciIsYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZToiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIsYWZ0ZXJHZXRDZWxsTWV0YToiYWZ0ZXJHZXRDZWxsTWV0YSIsYWZ0ZXJHZXRDb2xIZWFkZXI6ImFmdGVyR2V0Q29sSGVhZGVyIixhZnRlckdldENvbHVtbkhlYWRlclJlbmRlcmVyczoi''@;'; put 'put ''YWZ0ZXJHZXRDb2x1bW5IZWFkZXJSZW5kZXJlcnMiLGFmdGVyR2V0Um93SGVhZGVyOiJhZnRlckdldFJvd0hlYWRlciIsYWZ0ZXJHZXRSb3dIZWFkZXJSZW5kZXJlcnM6ImFmdGVyR2V0Um93SGVhZGVyUmVuZGVyZXJzIixhZnRlckhpZGVDb2x1bW5zOiJhZnRlckhpZGVDb2x1bW5zIixhZnRl''@;'; put 'put ''ckhpZGVSb3dzOiJhZnRlckhpZGVSb3dzIixhZnRlckluaXQ6ImFmdGVySW5pdCIsYWZ0ZXJMYW5ndWFnZUNoYW5nZToiYWZ0ZXJMYW5ndWFnZUNoYW5nZSIsYWZ0ZXJMaXN0ZW46ImFmdGVyTGlzdGVuIixhZnRlckxvYWREYXRhOiJhZnRlckxvYWREYXRhIixhZnRlck1lcmdlQ2VsbHM6ImFm''@;'; put 'put ''dGVyTWVyZ2VDZWxscyIsYWZ0ZXJNb2RpZnlUcmFuc2Zvcm1FbmQ6ImFmdGVyTW9kaWZ5VHJhbnNmb3JtRW5kIixhZnRlck1vZGlmeVRyYW5zZm9ybUZvY3VzOiJhZnRlck1vZGlmeVRyYW5zZm9ybUZvY3VzIixhZnRlck1vZGlmeVRyYW5zZm9ybVN0YXJ0OiJhZnRlck1vZGlmeVRyYW5zZm9y''@;'; put 'put ''bVN0YXJ0IixhZnRlck1vbWVudHVtU2Nyb2xsOiJhZnRlck1vbWVudHVtU2Nyb2xsIixhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkOiJhZnRlck5hbWVkRXhwcmVzc2lvbkFkZGVkIixhZnRlck5hbWVkRXhwcmVzc2lvblJlbW92ZWQ6ImFmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsYWZ0''@;'; put 'put ''ZXJPbkNlbGxDb250ZXh0TWVudToiYWZ0ZXJPbkNlbGxDb250ZXh0TWVudSIsYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljazoiYWZ0ZXJPbkNlbGxDb3JuZXJEYmxDbGljayIsYWZ0ZXJPbkNlbGxDb3JuZXJNb3VzZURvd246ImFmdGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixhZnRlck9uQ2Vs''@;'; put 'put ''bE1vdXNlRG93bjoiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLGFmdGVyT25DZWxsTW91c2VPdXQ6ImFmdGVyT25DZWxsTW91c2VPdXQiLGFmdGVyT25DZWxsTW91c2VPdmVyOiJhZnRlck9uQ2VsbE1vdXNlT3ZlciIsYWZ0ZXJPbkNlbGxNb3VzZVVwOiJhZnRlck9uQ2VsbE1vdXNlVXAiLGFmdGVy''@;'; put 'put ''UGFzdGU6ImFmdGVyUGFzdGUiLGFmdGVyUGx1Z2luc0luaXRpYWxpemVkOiJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIsYWZ0ZXJSZWRvOiJhZnRlclJlZG8iLGFmdGVyUmVkb1N0YWNrQ2hhbmdlOiJhZnRlclJlZG9TdGFja0NoYW5nZSIsYWZ0ZXJSZWZyZXNoRGltZW5zaW9uczoiYWZ0ZXJS''@;'; put 'put ''ZWZyZXNoRGltZW5zaW9ucyIsYWZ0ZXJSZW1vdmVDZWxsTWV0YToiYWZ0ZXJSZW1vdmVDZWxsTWV0YSIsYWZ0ZXJSZW1vdmVDb2w6ImFmdGVyUmVtb3ZlQ29sIixhZnRlclJlbW92ZVJvdzoiYWZ0ZXJSZW1vdmVSb3ciLGFmdGVyUmVuZGVyOiJhZnRlclJlbmRlciIsYWZ0ZXJSZW5kZXJlcjoi''@;'; put 'put ''YWZ0ZXJSZW5kZXJlciIsYWZ0ZXJSb3dNb3ZlOiJhZnRlclJvd01vdmUiLGFmdGVyUm93UmVzaXplOiJhZnRlclJvd1Jlc2l6ZSIsYWZ0ZXJSb3dTZXF1ZW5jZUNoYW5nZToiYWZ0ZXJSb3dTZXF1ZW5jZUNoYW5nZSIsYWZ0ZXJTY3JvbGxIb3Jpem9udGFsbHk6ImFmdGVyU2Nyb2xsSG9yaXpv''@;'; put 'put ''bnRhbGx5IixhZnRlclNjcm9sbFZlcnRpY2FsbHk6ImFmdGVyU2Nyb2xsVmVydGljYWxseSIsYWZ0ZXJTY3JvbGw6ImFmdGVyU2Nyb2xsIixhZnRlclNlbGVjdENvbHVtbnM6ImFmdGVyU2VsZWN0Q29sdW1ucyIsYWZ0ZXJTZWxlY3Rpb246ImFmdGVyU2VsZWN0aW9uIixhZnRlclNlbGVjdGlv''@;'; put 'put ''bkJ5UHJvcDoiYWZ0ZXJTZWxlY3Rpb25CeVByb3AiLGFmdGVyU2VsZWN0aW9uRW5kOiJhZnRlclNlbGVjdGlvbkVuZCIsYWZ0ZXJTZWxlY3Rpb25FbmRCeVByb3A6ImFmdGVyU2VsZWN0aW9uRW5kQnlQcm9wIixhZnRlclNlbGVjdGlvbkZvY3VzU2V0OiJhZnRlclNlbGVjdGlvbkZvY3VzU2V0''@;'; put 'put ''IixhZnRlclNlbGVjdFJvd3M6ImFmdGVyU2VsZWN0Um93cyIsYWZ0ZXJTZXRDZWxsTWV0YToiYWZ0ZXJTZXRDZWxsTWV0YSIsYWZ0ZXJTZXREYXRhQXRDZWxsOiJhZnRlclNldERhdGFBdENlbGwiLGFmdGVyU2V0RGF0YUF0Um93UHJvcDoiYWZ0ZXJTZXREYXRhQXRSb3dQcm9wIixhZnRlclNl''@;'; put 'put ''dFNvdXJjZURhdGFBdENlbGw6ImFmdGVyU2V0U291cmNlRGF0YUF0Q2VsbCIsYWZ0ZXJTaGVldEFkZGVkOiJhZnRlclNoZWV0QWRkZWQiLGFmdGVyU2hlZXRSZW5hbWVkOiJhZnRlclNoZWV0UmVuYW1lZCIsYWZ0ZXJTaGVldFJlbW92ZWQ6ImFmdGVyU2hlZXRSZW1vdmVkIixhZnRlclRyaW1S''@;'; put 'put ''b3c6ImFmdGVyVHJpbVJvdyIsYWZ0ZXJVbmRvOiJhZnRlclVuZG8iLGFmdGVyVW5kb1N0YWNrQ2hhbmdlOiJhZnRlclVuZG9TdGFja0NoYW5nZSIsYWZ0ZXJVbmhpZGVDb2x1bW5zOiJhZnRlclVuaGlkZUNvbHVtbnMiLGFmdGVyVW5oaWRlUm93czoiYWZ0ZXJVbmhpZGVSb3dzIixhZnRlclVu''@;'; put 'put ''bGlzdGVuOiJhZnRlclVubGlzdGVuIixhZnRlclVubWVyZ2VDZWxsczoiYWZ0ZXJVbm1lcmdlQ2VsbHMiLGFmdGVyVW50cmltUm93OiJhZnRlclVudHJpbVJvdyIsYWZ0ZXJVcGRhdGVEYXRhOiJhZnRlclVwZGF0ZURhdGEiLGFmdGVyVXBkYXRlU2V0dGluZ3M6ImFmdGVyVXBkYXRlU2V0dGlu''@;'; put 'put ''Z3MiLGFmdGVyVmFsaWRhdGU6ImFmdGVyVmFsaWRhdGUiLGFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGU6ImFmdGVyVmlld3BvcnRDb2x1bW5DYWxjdWxhdG9yT3ZlcnJpZGUiLGFmdGVyVmlld3BvcnRSb3dDYWxjdWxhdG9yT3ZlcnJpZGU6ImFmdGVyVmlld3BvcnRSb3dD''@;'; put 'put ''YWxjdWxhdG9yT3ZlcnJpZGUiLGFmdGVyVmlld1JlbmRlcjoiYWZ0ZXJWaWV3UmVuZGVyIixiZWZvcmVBZGRDaGlsZDoiYmVmb3JlQWRkQ2hpbGQiLGJlZm9yZUF1dG9maWxsOiJiZWZvcmVBdXRvZmlsbCIsYmVmb3JlQmVnaW5FZGl0aW5nOiJiZWZvcmVCZWdpbkVkaXRpbmciLGJlZm9yZUNl''@;'; put 'put ''bGxBbGlnbm1lbnQ6ImJlZm9yZUNlbGxBbGlnbm1lbnQiLGJlZm9yZUNoYW5nZToiYmVmb3JlQ2hhbmdlIixiZWZvcmVDaGFuZ2VSZW5kZXI6ImJlZm9yZUNoYW5nZVJlbmRlciIsYmVmb3JlQ29sdW1uQ29sbGFwc2U6ImJlZm9yZUNvbHVtbkNvbGxhcHNlIixiZWZvcmVDb2x1bW5FeHBhbmQ6''@;'; put 'put ''ImJlZm9yZUNvbHVtbkV4cGFuZCIsYmVmb3JlQ29sdW1uRnJlZXplOiJiZWZvcmVDb2x1bW5GcmVlemUiLGJlZm9yZUNvbHVtbk1vdmU6ImJlZm9yZUNvbHVtbk1vdmUiLGJlZm9yZUNvbHVtblJlc2l6ZToiYmVmb3JlQ29sdW1uUmVzaXplIixiZWZvcmVDb2x1bW5Tb3J0OiJiZWZvcmVDb2x1''@;'; put 'put ''bW5Tb3J0IixiZWZvcmVDb2x1bW5XcmFwOiJiZWZvcmVDb2x1bW5XcmFwIixiZWZvcmVDb2x1bW5VbmZyZWV6ZToiYmVmb3JlQ29sdW1uVW5mcmVlemUiLGJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXM6ImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLGJlZm9yZUNvbnRleHRNZW51U2hvdzoi''@;'; 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 ''bW92ZVJvdyIsYmVmb3JlUmVuZGVyOiJiZWZvcmVSZW5kZXIiLGJlZm9yZVJlbmRlcmVyOiJiZWZvcmVSZW5kZXJlciIsYmVmb3JlUm93TW92ZToiYmVmb3JlUm93TW92ZSIsYmVmb3JlUm93UmVzaXplOiJiZWZvcmVSb3dSZXNpemUiLGJlZm9yZVJvd1dyYXA6ImJlZm9yZVJvd1dyYXAiLGJl''@;'; put 'put ''Zm9yZVNlbGVjdENvbHVtbnM6ImJlZm9yZVNlbGVjdENvbHVtbnMiLGJlZm9yZVNlbGVjdGlvbkZvY3VzU2V0OiJiZWZvcmVTZWxlY3Rpb25Gb2N1c1NldCIsYmVmb3JlU2VsZWN0aW9uSGlnaGxpZ2h0U2V0OiJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiLGJlZm9yZVNlbGVjdFJvd3M6''@;'; put 'put ''ImJlZm9yZVNlbGVjdFJvd3MiLGJlZm9yZVNldENlbGxNZXRhOiJiZWZvcmVTZXRDZWxsTWV0YSIsYmVmb3JlU2V0UmFuZ2VFbmQ6ImJlZm9yZVNldFJhbmdlRW5kIixiZWZvcmVTZXRSYW5nZVN0YXJ0OiJiZWZvcmVTZXRSYW5nZVN0YXJ0IixiZWZvcmVTZXRSYW5nZVN0YXJ0T25seToiYmVm''@;'; put 'put ''b3JlU2V0UmFuZ2VTdGFydE9ubHkiLGJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aDoiYmVmb3JlU3RyZXRjaGluZ0NvbHVtbldpZHRoIixiZWZvcmVUb3VjaFNjcm9sbDoiYmVmb3JlVG91Y2hTY3JvbGwiLGJlZm9yZVRyaW1Sb3c6ImJlZm9yZVRyaW1Sb3ciLGJlZm9yZVVuZG86ImJlZm9y''@;'; put 'put ''ZVVuZG8iLGJlZm9yZVVuZG9TdGFja0NoYW5nZToiYmVmb3JlVW5kb1N0YWNrQ2hhbmdlIixiZWZvcmVVbmhpZGVDb2x1bW5zOiJiZWZvcmVVbmhpZGVDb2x1bW5zIixiZWZvcmVVbmhpZGVSb3dzOiJiZWZvcmVVbmhpZGVSb3dzIixiZWZvcmVVbm1lcmdlQ2VsbHM6ImJlZm9yZVVubWVyZ2VD''@;'; put 'put ''ZWxscyIsYmVmb3JlVW50cmltUm93OiJiZWZvcmVVbnRyaW1Sb3ciLGJlZm9yZVVwZGF0ZURhdGE6ImJlZm9yZVVwZGF0ZURhdGEiLGJlZm9yZVZhbGlkYXRlOiJiZWZvcmVWYWxpZGF0ZSIsYmVmb3JlVmFsdWVSZW5kZXI6ImJlZm9yZVZhbHVlUmVuZGVyIixiZWZvcmVWaWV3cG9ydFNjcm9s''@;'; put 'put ''bDoiYmVmb3JlVmlld3BvcnRTY3JvbGwiLGJlZm9yZVZpZXdwb3J0U2Nyb2xsSG9yaXpvbnRhbGx5OiJiZWZvcmVWaWV3cG9ydFNjcm9sbEhvcml6b250YWxseSIsYmVmb3JlVmlld3BvcnRTY3JvbGxWZXJ0aWNhbGx5OiJiZWZvcmVWaWV3cG9ydFNjcm9sbFZlcnRpY2FsbHkiLGJlZm9yZVZp''@;'; put 'put ''ZXdSZW5kZXI6ImJlZm9yZVZpZXdSZW5kZXIiLGNvbnN0cnVjdDoiY29uc3RydWN0Iixpbml0OiJpbml0Iixtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQ6Im1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIsbW9kaWZ5QXV0b2ZpbGxSYW5nZToibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsbW9kaWZ5Q29s''@;'; put 'put ''SGVhZGVyOiJtb2RpZnlDb2xIZWFkZXIiLG1vZGlmeUNvbHVtbkhlYWRlckhlaWdodDoibW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0Iixtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZToibW9kaWZ5Q29sdW1uSGVhZGVyVmFsdWUiLG1vZGlmeUNvbFdpZHRoOiJtb2RpZnlDb2xXaWR0aCIsbW9kaWZ5''@;'; put 'put ''Q29weWFibGVSYW5nZToibW9kaWZ5Q29weWFibGVSYW5nZSIsbW9kaWZ5RmlsdGVyc011bHRpU2VsZWN0VmFsdWU6Im1vZGlmeUZpbHRlcnNNdWx0aVNlbGVjdFZhbHVlIixtb2RpZnlGb2N1c2VkRWxlbWVudDoibW9kaWZ5Rm9jdXNlZEVsZW1lbnQiLG1vZGlmeURhdGE6Im1vZGlmeURhdGEi''@;'; put 'put ''LG1vZGlmeUZvY3VzT25UYWJOYXZpZ2F0aW9uOiJtb2RpZnlGb2N1c09uVGFiTmF2aWdhdGlvbiIsbW9kaWZ5R2V0Q2VsbENvb3JkczoibW9kaWZ5R2V0Q2VsbENvb3JkcyIsbW9kaWZ5Um93RGF0YToibW9kaWZ5Um93RGF0YSIsbW9kaWZ5Um93SGVhZGVyOiJtb2RpZnlSb3dIZWFkZXIiLG1v''@;'; put 'put ''ZGlmeVJvd0hlYWRlcldpZHRoOiJtb2RpZnlSb3dIZWFkZXJXaWR0aCIsbW9kaWZ5Um93SGVpZ2h0OiJtb2RpZnlSb3dIZWlnaHQiLG1vZGlmeVNvdXJjZURhdGE6Im1vZGlmeVNvdXJjZURhdGEiLG1vZGlmeVRyYW5zZm9ybUVuZDoibW9kaWZ5VHJhbnNmb3JtRW5kIixtb2RpZnlUcmFuc2Zv''@;'; put 'put ''cm1Gb2N1czoibW9kaWZ5VHJhbnNmb3JtRm9jdXMiLG1vZGlmeVRyYW5zZm9ybVN0YXJ0OiJtb2RpZnlUcmFuc2Zvcm1TdGFydCIscGVyc2lzdGVudFN0YXRlTG9hZDoicGVyc2lzdGVudFN0YXRlTG9hZCIscGVyc2lzdGVudFN0YXRlUmVzZXQ6InBlcnNpc3RlbnRTdGF0ZVJlc2V0IixwZXJz''@;'; put 'put ''aXN0ZW50U3RhdGVTYXZlOiJwZXJzaXN0ZW50U3RhdGVTYXZlIn0sZmVhdHVyZXM6W1ppKFtXbSxuMmVdKSxKYV0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImNvbnRhaW5lciIsIiJdLFszLCJpZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmWXQoMCwiZGl2IiwxLDApLDImZCYm''@;'; put 'put ''UmUoImlkIixoLmhvdElkKX0sZW5jYXBzdWxhdGlvbjoyfSl9cmV0dXJuIGx9KSgpLGw3PSgoKT0+e2NsYXNzIGx7c3RhdGljIHZlcnNpb249IjE0LjQuMCI7c3RhdGljIGZvclJvb3QoKXtyZXR1cm57bmdNb2R1bGU6bCxwcm92aWRlcnM6W1dtXX19c3RhdGljIFx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihkKXtyZXR1cm4gbmV3KGR8fGwpfTtzdGF0aWMgXHUwMjc1bW9kPWVpKHt0eXBlOmx9KTtzdGF0aWMgXHUwMjc1aW5qPXNpKHt9KX1yZXR1cm4gbH0pKCk7Y29uc3QgcjJlPSJoYW5kc29udGFibGVFZGl0b3IiO2NsYXNzIENxIGV4dGVuZHMgYTd7c3RhdGljIGdldCBFRElUT1JfVFlQRSgp''@;'; put 'put ''e3JldHVybiJoYW5kc29udGFibGUifW9wZW4oKXtzdXBlci5vcGVuKCksdGhpcy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5kZXN0cm95KCksIm5vbmUiPT09dGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5JiYodGhpcy5odENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSIiKSx0aGlzLmh0''@;'; put 'put ''RWRpdG9yPW5ldyB0aGlzLmhvdC5jb25zdHJ1Y3Rvcih0aGlzLmh0Q29udGFpbmVyLHRoaXMuaHRPcHRpb25zKSx0aGlzLmh0RWRpdG9yLmluaXQoKSx0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5jZWxsUHJvcGVydGllcy5zdHJpY3Q/dGhpcy5odEVk''@;'; put 'put ''aXRvci5zZWxlY3RDZWxsKDAsMCk6dGhpcy5odEVkaXRvci5kZXNlbGVjdENlbGwoKSxRTSh0aGlzLlRFWFRBUkVBLDAsdGhpcy5URVhUQVJFQS52YWx1ZS5sZW5ndGgpLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKX1jbG9zZSgpe3RoaXMuaHRFZGl0b3ImJih0aGlzLmh0RWRpdG9yLnJvb3RF''@;'; put 'put ''bGVtZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSxzdXBlci5jbG9zZSgpfXByZXBhcmUoYyxhLGQsaCxmLHYpe3N1cGVyLnByZXBhcmUoYyxhLGQsaCxmLHYpO2NvbnN0IFM9dGhpcyxWPXtzdGFydFJvd3M6MCxzdGFydENv''@;'; put 'put ''bHM6MCxtaW5Sb3dzOjAsbWluQ29sczowLGNsYXNzTmFtZToibGlzdGJveCIsY29weVBhc3RlOiExLGF1dG9Db2x1bW5TaXplOiExLGF1dG9Sb3dTaXplOiExLHJlYWRPbmx5OiEwLGZpbGxIYW5kbGU6ITEsYXV0b1dyYXBDb2w6ITEsYXV0b1dyYXBSb3c6ITEsYXJpYVRhZ3M6ITEsYWZ0ZXJP''@;'; put 'put ''bkNlbGxNb3VzZURvd24oUSxkZSl7Y29uc3QgcGU9dGhpcy5nZXRTb3VyY2VEYXRhKGRlLnJvdyxkZS5jb2wpO3ZvaWQgMCE9PXBlJiZTLnNldFZhbHVlKHBlKSxTLmhvdC5kZXN0cm95RWRpdG9yKCl9LHByZXZlbnRXaGVlbDohMCxsYXlvdXREaXJlY3Rpb246dGhpcy5ob3QuaXNSdGwoKT8i''@;'; put 'put ''cnRsIjoibHRyIn07dGhpcy5jZWxsUHJvcGVydGllcy5oYW5kc29udGFibGUmJkZjKFYsdi5oYW5kc29udGFibGUpLHRoaXMuaHRPcHRpb25zPVZ9YmVnaW5FZGl0aW5nKGMsYSl7Y29uc3QgZD10aGlzLmhvdC5nZXRTZXR0aW5ncygpLm9uQmVnaW5FZGl0aW5nO2QmJiExPT09ZCgpfHxzdXBl''@;'; put 'put ''ci5iZWdpbkVkaXRpbmcoYyxhKX1jcmVhdGVFbGVtZW50cygpe3N1cGVyLmNyZWF0ZUVsZW1lbnRzKCk7Y29uc3QgYz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7Yy5jbGFzc05hbWU9ImhhbmRzb250YWJsZUVkaXRvciIsdGhpcy5URVhUQVJFQV9QQVJFTlQu''@;'; put 'put ''YXBwZW5kQ2hpbGQoYyksdGhpcy5odENvbnRhaW5lcj1jLHRoaXMuYXNzaWduSG9va3MoKX1maW5pc2hFZGl0aW5nKGMsYSxkKXtpZih0aGlzLmh0RWRpdG9yJiZ0aGlzLmh0RWRpdG9yLmlzTGlzdGVuaW5nKCkmJnRoaXMuaG90Lmxpc3RlbigpLHRoaXMuaHRFZGl0b3ImJnRoaXMuaHRFZGl0''@;'; put 'put ''b3IuZ2V0U2VsZWN0ZWRMYXN0KCkpe2NvbnN0IGg9dGhpcy5odEVkaXRvci5nZXRWYWx1ZSgpO3ZvaWQgMCE9PWgmJnRoaXMuc2V0VmFsdWUoaCl9c3VwZXIuZmluaXNoRWRpdGluZyhjLGEsZCl9YXNzaWduSG9va3MoKXt0aGlzLmhvdC5hZGRIb29rKCJhZnRlckRlc3Ryb3kiLCgpPT57dGhp''@;'; put 'put ''cy5odEVkaXRvciYmdGhpcy5odEVkaXRvci5kZXN0cm95KCl9KX1yZWdpc3RlclNob3J0Y3V0cygpe2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIik7c3VwZXIucmVnaXN0ZXJTaG9ydGN1dHMoKTtjb25zdCBoPShmLHYpPT57Y29uc3Qg''@;'; put 'put ''Uz10aGlzLmh0RWRpdG9yO2lmKHZvaWQgMCE9PWYmJihmPDB8fFMuZmxpcHBlZCYmZj5TLmNvdW50Um93cygpLTE/Uy5kZXNlbGVjdENlbGwoKTpTLnNlbGVjdENlbGwoZiwwKSxTLmdldERhdGEoKS5sZW5ndGgpKXJldHVybiB2LnByZXZlbnREZWZhdWx0KCksamgodiksdGhpcy5ob3QubGlz''@;'; put 'put ''dGVuKCksdGhpcy5URVhUQVJFQS5mb2N1cygpLCExfTthLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazpmPT57Y29uc3Qgdj10aGlzLmh0RWRpdG9yO2xldCBTLFY7cmV0dXJuIXYuZ2V0U2VsZWN0ZWRMYXN0KCkmJnYuZmxpcHBlZD9TPXYuY291bnRSb3dzKCkt''@;'; put 'put ''MTp2LmdldFNlbGVjdGVkTGFzdCgpJiYodi5mbGlwcGVkPyhWPXYuZ2V0U2VsZWN0ZWRMYXN0KClbMF0sUz1NYXRoLm1heCgwLFYtMSkpOihWPXYuZ2V0U2VsZWN0ZWRMYXN0KClbMF0sUz1WLTEpKSxoKFMsZil9LHByZXZlbnREZWZhdWx0OiExfSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2Fs''@;'; put 'put ''bGJhY2s6Zj0+e2NvbnN0IHY9dGhpcy5odEVkaXRvcjtsZXQgUyxWO2lmKHYuZ2V0U2VsZWN0ZWRMYXN0KCl8fHYuZmxpcHBlZCl7aWYodi5nZXRTZWxlY3RlZExhc3QoKSlpZih2LmZsaXBwZWQpUz12LmdldFNlbGVjdGVkTGFzdCgpWzBdKzE7ZWxzZSBpZighdi5mbGlwcGVkKXtjb25zdCBR''@;'; put 'put ''PXYuY291bnRSb3dzKCktMTtWPXYuZ2V0U2VsZWN0ZWRMYXN0KClbMF0sUz1NYXRoLm1pbihRLFYrMSl9fWVsc2UgUz0wO3JldHVybiBoKFMsZil9LHByZXZlbnREZWZhdWx0OiExfV0se2dyb3VwOnIyZSxyZWxhdGl2ZVRvR3JvdXA6WW0scG9zaXRpb246ImJlZm9yZSJ9KX11bnJlZ2lzdGVy''@;'; put 'put ''U2hvcnRjdXRzKCl7c3VwZXIudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAocjJlKX19ZnVuY3Rpb24gZk8obCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFRKZShsKXt2''@;'; put 'put ''YXIgYz1mdW5jdGlvbiBrSmUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gaTJlKGwsYyl7cmV0dXJuIGwuZ2V0KGZ1bmN0aW9uIEFKZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5o''@;'; put 'put ''YXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9KGwsYykpfXZhciBTcT1uZXcgV2Vha01hcDtjbGFzcyBNcSBleHRlbmRzIENxe2NvbnN0cnVjdG9yKCl7''@;'; put 'put ''c3VwZXIoLi4uYXJndW1lbnRzKSxmTyh0aGlzLCJxdWVyeSIsbnVsbCksZk8odGhpcywic3RyaXBwZWRDaG9pY2VzIixbXSksZk8odGhpcywicmF3Q2hvaWNlcyIsW10pLGZ1bmN0aW9uIHhKZShsLGMsYSl7KGZ1bmN0aW9uIEVKZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9KHRoaXMsU3EsdGhpcy5ob3QuZ3VpZC5zbGljZSgwLDkpKSxmTyh0aGlzLCJzb3J0QnlSZWxldmFuY2UiLGZ1bmN0aW9uKGMsYSxkKXtj''@;'; put 'put ''b25zdCBoPVtdLGY9W10sdj1jLmxlbmd0aDtsZXQgVixRLGRlLHBlLFM9YS5sZW5ndGg7aWYoMD09PXYpe2ZvcihkZT0wO2RlPFM7ZGUrKylmLnB1c2goZGUpO3JldHVybiBmfWZvcihkZT0wO2RlPFM7ZGUrKyl7aWYoUT1zVyhpYyhhW2RlXSkpLGQpcGU9US5pbmRleE9mKGMpO2Vsc2V7Y29u''@;'; put 'put ''c3QgQ2U9dGhpcy5jZWxsUHJvcGVydGllcy5sb2NhbGU7cGU9US50b0xvY2FsZUxvd2VyQ2FzZShDZSkuaW5kZXhPZihjLnRvTG9jYWxlTG93ZXJDYXNlKENlKSl9LTEhPT1wZSYmKFY9US5sZW5ndGgtcGUtdixoLnB1c2goe2Jhc2VJbmRleDpkZSxpbmRleDpwZSxjaGFyc0xlZnQ6Vix2YWx1''@;'; put 'put ''ZTpRfSkpfWZvcihoLnNvcnQoKENlLE9lKT0+e2lmKC0xPT09T2UuaW5kZXgpcmV0dXJuLTE7aWYoLTE9PT1DZS5pbmRleClyZXR1cm4gMTtpZihDZS5pbmRleDxPZS5pbmRleClyZXR1cm4tMTtpZihPZS5pbmRleDxDZS5pbmRleClyZXR1cm4gMTtpZihDZS5pbmRleD09PU9lLmluZGV4KXtp''@;'; put 'put ''ZihDZS5jaGFyc0xlZnQ8T2UuY2hhcnNMZWZ0KXJldHVybi0xO2lmKENlLmNoYXJzTGVmdD5PZS5jaGFyc0xlZnQpcmV0dXJuIDF9cmV0dXJuIDB9KSxkZT0wLFM9aC5sZW5ndGg7ZGU8UztkZSsrKWYucHVzaChoW2RlXS5iYXNlSW5kZXgpO3JldHVybiBmfSl9c3RhdGljIGdldCBFRElUT1Jf''@;'; put 'put ''VFlQRSgpe3JldHVybiJhdXRvY29tcGxldGUifWdldFZhbHVlKCl7Y29uc3QgYz10aGlzLnJhd0Nob2ljZXMuZmluZChhPT50aGlzLnN0cmlwVmFsdWVJZk5lZWRlZChhKT09PXRoaXMuVEVYVEFSRUEudmFsdWUpO3JldHVybiBzbyhjKT9jOnRoaXMuVEVYVEFSRUEudmFsdWV9Y3JlYXRlRWxl''@;'; put 'put ''bWVudHMoKXtzdXBlci5jcmVhdGVFbGVtZW50cygpLG1pKHRoaXMuaHRDb250YWluZXIsImF1dG9jb21wbGV0ZUVkaXRvciIpLG1pKHRoaXMuaHRDb250YWluZXIsLTE9PT10aGlzLmhvdC5yb290V2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKCJNYWMiKT8iIjoiaHRNYWNTY3Jv''@;'; put 'put ''bGwiKSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzJiZWbyh0aGlzLlRFWFRBUkVBLFtbInR5cGUiLCJ0ZXh0Il0sWyJyb2xlIiwiY29tYm9ib3giXSxjMWUoImxpc3Rib3giKSxbImFyaWEtYXV0b2NvbXBsZXRlIiwibGlzdCJdXSl9cHJlcGFyZShjLGEsZCxoLGYsdil7c3VwZXIu''@;'; put 'put ''cHJlcGFyZShjLGEsZCxoLGYsdiksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmVm8odGhpcy5URVhUQVJFQSxbTmgoImZhbHNlIiksS1plKGAke2kyZShTcSx0aGlzKX0tbGlzdGJveC0ke2N9LSR7YX1gKV0pfW9wZW4oKXtzdXBlci5vcGVuKCk7Y29uc3QgYz12b2lkIDA9PT10''@;'; put 'put ''aGlzLmNlbGxQcm9wZXJ0aWVzLnRyaW1Ecm9wZG93bnx8dGhpcy5jZWxsUHJvcGVydGllcy50cmltRHJvcGRvd24sYT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzLGQ9QXJyYXkuaXNBcnJheSh0aGlzLmNlbGxQcm9wZXJ0aWVzLnNvdXJjZSk/dGhpcy5jZWxsUHJvcGVydGllcy5z''@;'; put 'put ''b3VyY2U6bnVsbCxoPWQ/Lmxlbmd0aCx7cm93OmYsY29sOnZ9PXRoaXM7dGhpcy5zaG93RWRpdGFibGVFbGVtZW50KCksdGhpcy5mb2N1cygpO2xldCBTPUV1KCk7MD09PVMmJml4KCkmJihTKz0xNSksdGhpcy5hZGRIb29rKCJiZWZvcmVLZXlEb3duIixWPT50aGlzLm9uQmVmb3JlS2V5RG93''@;'; put 'put ''bihWKSksdGhpcy5odEVkaXRvci51cGRhdGVTZXR0aW5ncyh7Y29sV2lkdGhzOmM/W1dhKHRoaXMuVEVYVEFSRUEpLTJdOnZvaWQgMCx3aWR0aDpjP1dhKHRoaXMuVEVYVEFSRUEpK1M6dm9pZCAwLGF1dG9Db2x1bW5TaXplOiEwLHJlbmRlcmVyOihWLFEsZGUscGUsQ2UsT2UsWWUpPT57UDQo''@;'; put 'put ''VixRLGRlLHBlLENlLE9lLFllKTtjb25zdHtmaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlOmV0LGFsbG93SHRtbDpkdCxsb2NhbGU6aHR9PXRoaXMuY2VsbFByb3BlcnRpZXMsTXQ9dGhpcy5xdWVyeTtsZXQgbG4sdm4sUXQ9aWMoT2UpO1F0JiYhZHQmJihsbj0hMD09PWV0P1F0LmluZGV4T2YoTXQp''@;'; put 'put ''OlF0LnRvTG9jYWxlTG93ZXJDYXNlKGh0KS5pbmRleE9mKE10LnRvTG9jYWxlTG93ZXJDYXNlKGh0KSksLTEhPT1sbiYmKHZuPVF0LnN1YnN0cihsbixNdC5sZW5ndGgpLFF0PVF0LnJlcGxhY2Uodm4sYDxzdHJvbmc+JHt2bn08L3N0cm9uZz5gKSkpLGEmJlZvKFEsW1sicm9sZSIsIm9wdGlv''@;'; put 'put ''biJdLC4uLmQ/W2VZZShoKV06W10sLi4uZD9bdFllKGQuaW5kZXhPZihPZSkrMSldOltdLFsiaWQiLGAke3RoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuaWR9XyR7ZGV9LSR7cGV9YF1dKSxRLmlubmVySFRNTD1RdH0sYWZ0ZXJTZWxlY3Rpb25FbmQ6KFYsUSk9PntpZihhKXtjb25zdCBkZT10''@;'; put 'put ''aGlzLmh0RWRpdG9yLmdldENlbGwoVixRLCEwKTtWbyhkZSxbWyJhcmlhLXNlbGVjdGVkIiwidHJ1ZSJdXSksVm8odGhpcy5URVhUQVJFQSwuLi4obD0+WyJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLGxdKShkZS5pZCkpfX19KSxhJiYoVm8odGhpcy5odEVkaXRvci52aWV3Ll93dC53dE92ZXJs''@;'; put 'put ''YXlzLnd0VGFibGUuVEFCTEUsLi4uQTMoKSksVm8odGhpcy5odEVkaXRvci5yb290RWxlbWVudCxbWyJyb2xlIiwibGlzdGJveCJdLEpaZSgicG9saXRlIiksUVplKCJ0ZXh0IiksWyJpZCIsYCR7aTJlKFNxLHRoaXMpfS1saXN0Ym94LSR7Zn0tJHt2fWBdXSksVm8odGhpcy5URVhUQVJFQSwu''@;'; put 'put ''Li5OaCgidHJ1ZSIpKSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+e3RoaXMucXVlcnlDaG9pY2VzKHRoaXMuVEVYVEFSRUEudmFsdWUpfSl9Y2xvc2UoKXt0aGlzLnJlbW92ZUhvb2tzQnlLZXkoImJlZm9yZUtleURvd24iKSxzdXBlci5jbG9zZSgpLHRoaXMuaG90LmdldFNldHRp''@;'; put 'put ''bmdzKCkuYXJpYVRhZ3MmJlZvKHRoaXMuVEVYVEFSRUEsW05oKCJmYWxzZSIpXSl9ZGlzY2FyZEVkaXRvcihjKXtzdXBlci5kaXNjYXJkRWRpdG9yKGMpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9cXVlcnlDaG9pY2VzKGMpe2NvbnN0IGE9dGhpcy5jZWxsUHJvcGVydGllcy5zb3VyY2U7dGhp''@;'; put 'put ''cy5xdWVyeT1jLCJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuY2FsbCh0aGlzLmNlbGxQcm9wZXJ0aWVzLGMsZD0+e3RoaXMucmF3Q2hvaWNlcz1kLHRoaXMudXBkYXRlQ2hvaWNlc0xpc3QodGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKGQpKX0pOkFycmF5LmlzQXJyYXkoYSk/KHRoaXMucmF3Q2hv''@;'; put 'put ''aWNlcz1hLHRoaXMudXBkYXRlQ2hvaWNlc0xpc3QodGhpcy5zdHJpcFZhbHVlc0lmTmVlZGVkKGEpKSk6dGhpcy51cGRhdGVDaG9pY2VzTGlzdChbXSl9dXBkYXRlQ2hvaWNlc0xpc3QoYyl7Y29uc3QgYT1nVyh0aGlzLlRFWFRBUkVBKSxkPVMxZSh0aGlzLlRFWFRBUkVBKSxoPXRoaXMuY2Vs''@;'; put 'put ''bFByb3BlcnRpZXMuc29ydEJ5UmVsZXZhbmNlLGY9dGhpcy5jZWxsUHJvcGVydGllcy5maWx0ZXI7bGV0IHY9bnVsbCxTPW51bGwsVj1jO2gmJih2PXRoaXMuc29ydEJ5UmVsZXZhbmNlKHRoaXMuc3RyaXBWYWx1ZUlmTmVlZGVkKHRoaXMuZ2V0VmFsdWUoKSksVix0aGlzLmNlbGxQcm9wZXJ0''@;'; put 'put ''aWVzLmZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUpKTtjb25zdCBRPUFycmF5LmlzQXJyYXkodik/di5sZW5ndGg6MDtpZighMT09PWYpUSYmKFM9dlswXSk7ZWxzZXtjb25zdCBkZT1bXTtmb3IobGV0IHBlPTAsQ2U9Vi5sZW5ndGg7cGU8Q2UmJiEoaCYmUTw9cGUpO3BlKyspZGUucHVzaChRP1Zb''@;'; put 'put ''dltwZV1dOlZbcGVdKTtTPTAsVj1kZX10aGlzLnN0cmlwcGVkQ2hvaWNlcz1WLHRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGUuZGlzcGxheT0wPT09Vi5sZW5ndGg/Im5vbmUiOiIiLHRoaXMuaHRFZGl0b3IubG9hZERhdGEoR00oW1ZdKSksVi5sZW5ndGg+MCYmKHRoaXMudXBkYXRl''@;'; put 'put ''RHJvcGRvd25EaW1lbnNpb25zKCksdGhpcy5mbGlwRHJvcGRvd25JZk5lZWRlZCgpLCEwPT09dGhpcy5jZWxsUHJvcGVydGllcy5zdHJpY3QmJnRoaXMuaGlnaGxpZ2h0QmVzdE1hdGNoaW5nQ2hvaWNlKFMpKSx0aGlzLmhvdC5saXN0ZW4oKSxRTSh0aGlzLlRFWFRBUkVBLGEsYT09PWQ/dm9p''@;'; put 'put ''ZCAwOmQpfWZsaXBEcm9wZG93bklmTmVlZGVkKCl7Y29uc3QgYz1ZOCh0aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLlRBQkxFKSxhPWM9PT10aGlzLmhvdC5yb290V2luZG93LGQ9dGhpcy5jZWxsUHJvcGVydGllcy5wcmV2ZW50T3ZlcmZsb3c7aWYoYXx8IWEmJihkfHwiaG9yaXpvbnRhbCI9''@;'; put 'put ''PT1kKSlyZXR1cm4hMTtjb25zdCBoPXh1KHRoaXMuVEVYVEFSRUEpLGY9WmwodGhpcy5URVhUQVJFQSksdj10aGlzLmdldERyb3Bkb3duSGVpZ2h0KCksUz1jLnNjcm9sbFRvcCxWPVpsKHRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuVEhFQUQpLFE9eHUoYyksZGU9aC50b3AtUS50b3AtVitT''@;'; put 'put ''LHBlPWMuc2Nyb2xsSGVpZ2h0LWRlLVYtZixDZT12PnBlJiZkZT5wZTtyZXR1cm4gQ2U/dGhpcy5mbGlwRHJvcGRvd24odik6dGhpcy51bmZsaXBEcm9wZG93bigpLHRoaXMubGltaXREcm9wZG93bklmTmVlZGVkKENlP2RlOnBlLHYpLENlfWxpbWl0RHJvcGRvd25JZk5lZWRlZChjLGEpe2lm''@;'; put 'put ''KGE+Yyl7bGV0IGQ9MCxoPTAsZj0wLHY9bnVsbDtkb3tmPXRoaXMuaHRFZGl0b3IuZ2V0Um93SGVpZ2h0KGgpfHx0aGlzLmh0RWRpdG9yLnZpZXcuX3d0LmdldFNldHRpbmcoImRlZmF1bHRSb3dIZWlnaHQiKSxkKz1mLGgrPTF9d2hpbGUoZDxjKTt2PWQtZix0aGlzLmh0RWRpdG9yLmZsaXBw''@;'; put 'put ''ZWQmJih0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcD1wYXJzZUludCh0aGlzLmh0RWRpdG9yLnJvb3RFbGVtZW50LnN0eWxlLnRvcCwxMCkrYS12KyJweCIpLHRoaXMuc2V0RHJvcGRvd25IZWlnaHQoZC1mKX19ZmxpcERyb3Bkb3duKGMpe2NvbnN0IGE9dGhpcy5odEVkaXRv''@;'; put 'put ''ci5yb290RWxlbWVudC5zdHlsZTthLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYS50b3A9LWMrInB4Iix0aGlzLmh0RWRpdG9yLmZsaXBwZWQ9ITB9dW5mbGlwRHJvcGRvd24oKXtjb25zdCBjPXRoaXMuaHRFZGl0b3Iucm9vdEVsZW1lbnQuc3R5bGU7Yy5wb3NpdGlvbj0iYWJzb2x1dGUiLGMudG9w''@;'; put 'put ''PSIiLHRoaXMuaHRFZGl0b3IuZmxpcHBlZD12b2lkIDB9dXBkYXRlRHJvcGRvd25EaW1lbnNpb25zKCl7Y29uc3QgYz10aGlzLmh0RWRpdG9yLmdldENvbFdpZHRoKDApK0V1KHRoaXMuaG90LnJvb3REb2N1bWVudCkrMixhPXRoaXMuY2VsbFByb3BlcnRpZXMudHJpbURyb3Bkb3duO3RoaXMu''@;'; put 'put ''aHRFZGl0b3IudXBkYXRlU2V0dGluZ3Moe2hlaWdodDp0aGlzLmdldERyb3Bkb3duSGVpZ2h0KCksd2lkdGg6YT92b2lkIDA6Y30pLHRoaXMuaHRFZGl0b3Iudmlldy5fd3Qud3RUYWJsZS5hbGlnbk92ZXJsYXlzV2l0aFRyaW1taW5nQ29udGFpbmVyKCl9c2V0RHJvcGRvd25IZWlnaHQoYyl7''@;'; put 'put ''dGhpcy5odEVkaXRvci51cGRhdGVTZXR0aW5ncyh7aGVpZ2h0OmN9KX1oaWdobGlnaHRCZXN0TWF0Y2hpbmdDaG9pY2UoYyl7Im51bWJlciI9PXR5cGVvZiBjP3RoaXMuaHRFZGl0b3Iuc2VsZWN0Q2VsbChjLDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsITEpOnRoaXMuaHRFZGl0b3IuZGVzZWxl''@;'; put 'put ''Y3RDZWxsKCl9Z2V0RHJvcGRvd25IZWlnaHQoKXtjb25zdCBjPXRoaXMuaHRFZGl0b3IuZ2V0Um93SGVpZ2h0KDApfHwyMyxhPXRoaXMuY2VsbFByb3BlcnRpZXMudmlzaWJsZVJvd3M7cmV0dXJuIHRoaXMuc3RyaXBwZWRDaG9pY2VzLmxlbmd0aD49YT9hKmM6dGhpcy5zdHJpcHBlZENob2lj''@;'; put 'put ''ZXMubGVuZ3RoKmMrOH1zdHJpcFZhbHVlSWZOZWVkZWQoYyl7cmV0dXJuIHRoaXMuc3RyaXBWYWx1ZXNJZk5lZWRlZChbY10pWzBdfXN0cmlwVmFsdWVzSWZOZWVkZWQoYyl7Y29uc3R7YWxsb3dIdG1sOmF9PXRoaXMuY2VsbFByb3BlcnRpZXMsZD14cyhjLGY9PmljKGYpKTtyZXR1cm4geHMo''@;'; put 'put ''ZCxmPT5hP2Y6c1coZikpfWFsbG93S2V5RXZlbnRQcm9wYWdhdGlvbihjKXtjb25zdCBhPXRoaXMuaHRFZGl0b3IuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxkX3Jvdz1hP2EuZnJvbS5yb3c6LTE7bGV0IGg9ITE7cmV0dXJuIGM9PT13by5BUlJPV19ET1dOJiZkX3Jvdz4wJiZkX3Jvdzx0aGlz''@;'; put 'put ''Lmh0RWRpdG9yLmNvdW50Um93cygpLTEmJihoPSEwKSxjPT09d28uQVJST1dfVVAmJmRfcm93Pi0xJiYoaD0hMCksaH1vbkJlZm9yZUtleURvd24oYyl7aWYoSDFlKGMua2V5Q29kZSl8fGMua2V5Q29kZT09PXdvLkJBQ0tTUEFDRXx8Yy5rZXlDb2RlPT09d28uREVMRVRFfHxjLmtleUNvZGU9''@;'; put 'put ''PT13by5JTlNFUlQpe2xldCBhPTEwO2lmKGMua2V5Q29kZT09PXdvLkMmJihjLmN0cmxLZXl8fGMubWV0YUtleSkpcmV0dXJuO3RoaXMuaXNPcGVuZWQoKXx8KGErPTEwKSx0aGlzLmh0RWRpdG9yJiZ0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57dGhpcy5xdWVyeUNob2ljZXModGhp''@;'; put 'put ''cy5URVhUQVJFQS52YWx1ZSl9LGEpfX19Y2xhc3MgbzJlIGV4dGVuZHMgQ2J7c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJjaGVja2JveCJ9YmVnaW5FZGl0aW5nKGMsYSl7aWYoYSYmIm1vdXNldXAiPT09YS50eXBlJiYiVEQiPT09YS50YXJnZXQubm9kZU5hbWUpe2NvbnN0IGQ9''@;'; put 'put ''dGhpcy5URC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJyk7WW8oZCwiaHRCYWRWYWx1ZSIpfHxkLmNsaWNrKCl9fWZpbmlzaEVkaXRpbmcoKXt9aW5pdCgpe31vcGVuKCl7fWNsb3NlKCl7fWdldFZhbHVlKCl7fXNldFZhbHVlKCl7fWZvY3VzKCl7fX1jb25zdCBHbT0o''@;'; put 'put ''KT0+d2luZG93LCRoPSgpPT53aW5kb3cuZG9jdW1lbnQseHE9KGwsYyk9PndpbmRvdy5zZXRUaW1lb3V0KGwsYyksVjM9ZnVuY3Rpb24obCxjLGEsZCl7bC5hZGRFdmVudExpc3RlbmVyKGMsYSwhIWQpfSxGND1mdW5jdGlvbihsLGMsYSxkKXtsLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyxhLCEh''@;'; put 'put ''ZCl9LExkPWZ1bmN0aW9uKGwsYyl7cmV0dXJuLTEhPT0oIiAiK2wuY2xhc3NOYW1lKyIgIikuaW5kZXhPZigiICIrYysiICIpfSxFcT1mdW5jdGlvbihsLGMpe0xkKGwsYyl8fChsLmNsYXNzTmFtZT0iIj09PWwuY2xhc3NOYW1lP2M6bC5jbGFzc05hbWUrIiAiK2MpfSxUcT1mdW5jdGlvbihs''@;'; put 'put ''LGMpe2wuY2xhc3NOYW1lPWZ1bmN0aW9uKGwpe3JldHVybiBsLnRyaW0/bC50cmltKCk6bC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KCgiICIrbC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKCIgIitjKyIgIiwiICIpKX0sa3E9ZnVuY3Rpb24obCl7cmV0dXJuL0FycmF5Ly50ZXN0KE9iamVj''@;'; put 'put ''dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKSl9LE9kPWZ1bmN0aW9uKGwpe3JldHVybi9EYXRlLy50ZXN0KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKSkmJiFpc05hTihsLmdldFRpbWUoKSl9LExKZT1mdW5jdGlvbihsKXtsZXQgYz1sLmdldERheSgpO3JldHVybiAwPT09''@;'; put 'put ''Y3x8Nj09PWN9LE9KZT1mdW5jdGlvbihsKXtyZXR1cm4gbCU0PT0wJiZsJTEwMCE9MHx8bCU0MDA9PTB9LHMyZT1mdW5jdGlvbihsLGMpe3JldHVyblszMSxPSmUobCk/Mjk6MjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdW2NdfSxwTz1mdW5jdGlvbihsKXtPZChsKSYmbC5zZXRI''@;'; put 'put ''b3VycygwLDAsMCwwKX0sZ089ZnVuY3Rpb24obCxjKXtyZXR1cm4gbC5nZXRUaW1lKCk9PT1jLmdldFRpbWUoKX0sbU89ZnVuY3Rpb24obCxjLGEpe2xldCBkLGg7Zm9yKGQgaW4gYyloPXZvaWQgMCE9PWxbZF0saCYmIm9iamVjdCI9PXR5cGVvZiBjW2RdJiZudWxsIT09Y1tkXSYmdm9pZCAw''@;'; put 'put ''PT09Y1tkXS5ub2RlTmFtZT9PZChjW2RdKT9hJiYobFtkXT1uZXcgRGF0ZShjW2RdLmdldFRpbWUoKSkpOmtxKGNbZF0pP2EmJihsW2RdPWNbZF0uc2xpY2UoMCkpOmxbZF09bU8oe30sY1tkXSxhKTooYXx8IWgpJiYobFtkXT1jW2RdKTtyZXR1cm4gbH0sYTJlPWZ1bmN0aW9uKGwsYyxhKXts''@;'; put 'put ''ZXQgZD0kaCgpLmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7ZC5pbml0RXZlbnQoYywhMCwhMSksZD1tTyhkLGEpLGwuZGlzcGF0Y2hFdmVudChkKX0sbDJlPWZ1bmN0aW9uKGwpe3JldHVybiBsLm1vbnRoPDAmJihsLnllYXItPU1hdGguY2VpbChNYXRoLmFicyhsLm1vbnRoKS8xMiksbC5t''@;'; put 'put ''b250aCs9MTIpLGwubW9udGg+MTEmJihsLnllYXIrPU1hdGguZmxvb3IoTWF0aC5hYnMobC5tb250aCkvMTIpLGwubW9udGgtPTEyKSxsfSxCMz17ZmllbGQ6bnVsbCxib3VuZDp2b2lkIDAsYXJpYUxhYmVsOiJVc2UgdGhlIGFycm93IGtleXMgdG8gcGljayBhIGRhdGUiLHBvc2l0aW9uOiJi''@;'; put 'put ''b3R0b20gbGVmdCIscmVwb3NpdGlvbjohMCxmb3JtYXQ6IllZWVktTU0tREQiLHRvU3RyaW5nOm51bGwscGFyc2U6bnVsbCxkZWZhdWx0RGF0ZTpudWxsLHNldERlZmF1bHREYXRlOiExLGZpcnN0RGF5OjAsZmlyc3RXZWVrT2ZZZWFyTWluRGF5czo0LGZvcm1hdFN0cmljdDohMSxtaW5EYXRl''@;'; put 'put ''Om51bGwsbWF4RGF0ZTpudWxsLHllYXJSYW5nZToxMCxzaG93V2Vla051bWJlcjohMSxwaWNrV2hvbGVXZWVrOiExLG1pblllYXI6MCxtYXhZZWFyOjk5OTksbWluTW9udGg6dm9pZCAwLG1heE1vbnRoOnZvaWQgMCxzdGFydFJhbmdlOm51bGwsZW5kUmFuZ2U6bnVsbCxpc1JUTDohMSx5ZWFy''@;'; put 'put ''U3VmZml4OiIiLHNob3dNb250aEFmdGVyWWVhcjohMSxzaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOiExLGVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoczohMSxudW1iZXJPZk1vbnRoczoxLG1haW5DYWxlbmRhcjoibGVmdCIsY29udGFpbmVyOnZvaWQg''@;'; put 'put ''MCxibHVyRmllbGRPblNlbGVjdDohMCxpMThuOntwcmV2aW91c01vbnRoOiJQcmV2aW91cyBNb250aCIsbmV4dE1vbnRoOiJOZXh0IE1vbnRoIixtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1i''@;'; put 'put ''ZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHdlZWtkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSx3ZWVrZGF5c1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1Iiwi''@;'; put 'put ''RnJpIiwiU2F0Il19LHRoZW1lOm51bGwsZXZlbnRzOltdLG9uU2VsZWN0Om51bGwsb25PcGVuOm51bGwsb25DbG9zZTpudWxsLG9uRHJhdzpudWxsLGtleWJvYXJkSW5wdXQ6ITB9LGMyZT1mdW5jdGlvbihsLGMsYSl7Zm9yKGMrPWwuZmlyc3REYXk7Yz49NzspYy09NztyZXR1cm4gYT9sLmkx''@;'; put 'put ''OG4ud2Vla2RheXNTaG9ydFtjXTpsLmkxOG4ud2Vla2RheXNbY119LFBKZT1mdW5jdGlvbihsKXtsZXQgYz1bXSxhPSJmYWxzZSI7aWYobC5pc0VtcHR5KXtpZighbC5zaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzKXJldHVybic8dGQgY2xhc3M9ImlzLWVtcHR5Ij48L3RkPic7Yy5w''@;'; put 'put ''dXNoKCJpcy1vdXRzaWRlLWN1cnJlbnQtbW9udGgiKSxsLmVuYWJsZVNlbGVjdGlvbkRheXNJbk5leHRBbmRQcmV2aW91c01vbnRoc3x8Yy5wdXNoKCJpcy1zZWxlY3Rpb24tZGlzYWJsZWQiKX1yZXR1cm4gbC5pc0Rpc2FibGVkJiZjLnB1c2goImlzLWRpc2FibGVkIiksbC5pc1RvZGF5JiZj''@;'; put 'put ''LnB1c2goImlzLXRvZGF5IiksbC5pc1NlbGVjdGVkJiYoYy5wdXNoKCJpcy1zZWxlY3RlZCIpLGE9InRydWUiKSxsLmhhc0V2ZW50JiZjLnB1c2goImhhcy1ldmVudCIpLGwuaXNJblJhbmdlJiZjLnB1c2goImlzLWlucmFuZ2UiKSxsLmlzU3RhcnRSYW5nZSYmYy5wdXNoKCJpcy1zdGFydHJh''@;'; put 'put ''bmdlIiksbC5pc0VuZFJhbmdlJiZjLnB1c2goImlzLWVuZHJhbmdlIiksJzx0ZCBkYXRhLWRheT0iJytsLmRheSsnIiBjbGFzcz0iJytjLmpvaW4oIiAiKSsnIiBhcmlhLXNlbGVjdGVkPSInK2ErJyI+PGJ1dHRvbiBjbGFzcz0icGlrYS1idXR0b24gcGlrYS1kYXkiIHR5cGU9ImJ1dHRvbiIg''@;'; put 'put ''ZGF0YS1waWthLXllYXI9IicrbC55ZWFyKyciIGRhdGEtcGlrYS1tb250aD0iJytsLm1vbnRoKyciIGRhdGEtcGlrYS1kYXk9IicrbC5kYXkrJyI+JytsLmRheSsiPC9idXR0b24+PC90ZD4ifSxOSmU9ZnVuY3Rpb24obCxjLGEsZCxoKXtsZXQgZj1uZXcgRGF0ZShkLGEsYyk7cmV0dXJuJzx0''@;'; put 'put ''ZCBjbGFzcz0icGlrYS13ZWVrIj4nKyhsLmhhc01vbWVudD9sLm1vbWVudChmKS5pc29XZWVrKCk6ZnVuY3Rpb24obCxjKXtsLnNldEhvdXJzKDAsMCwwLDApO2xldCBhPWwuZ2V0RGF0ZSgpLGQ9bC5nZXREYXkoKSxoPWMsZj1oLTEsUz1mdW5jdGlvbihDZSl7cmV0dXJuKENlKzctMSklN307''@;'; put 'put ''bC5zZXREYXRlKGErZi1TKGQpKTtsZXQgVj1uZXcgRGF0ZShsLmdldEZ1bGxZZWFyKCksMCxoKSxkZT0obC5nZXRUaW1lKCktVi5nZXRUaW1lKCkpLzg2NGU1O3JldHVybiAxK01hdGgucm91bmQoKGRlLWYrUyhWLmdldERheSgpKSkvNyl9KGYsaCkpKyI8L3RkPiJ9LEhKZT1mdW5jdGlvbihs''@;'; put 'put ''LGMsYSxkKXtyZXR1cm4nPHRyIGNsYXNzPSJwaWthLXJvdycrKGE/IiBwaWNrLXdob2xlLXdlZWsiOiIiKSsoZD8iIGlzLXNlbGVjdGVkIjoiIikrJyI+JysoYz9sLnJldmVyc2UoKTpsKS5qb2luKCIiKSsiPC90cj4ifSxqSmU9ZnVuY3Rpb24obCxjLGEsZCxoLGYpe2xldCB2LFMsVixPZSxZ''@;'; put 'put ''ZSxRPWwuX28sZGU9YT09PVEubWluWWVhcixwZT1hPT09US5tYXhZZWFyLENlPSc8ZGl2IGlkPSInK2YrJyIgY2xhc3M9InBpa2EtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGl2ZT0icG9saXRlIj4nLGV0PSEwLGR0PSEwO2ZvcihWPVtdLHY9MDt2PDEyO3YrKylWLnB1c2goJzxvcHRp''@;'; put 'put ''b24gdmFsdWU9IicrKGE9PT1oP3YtYzoxMit2LWMpKyciJysodj09PWQ/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrKGRlJiZ2PFEubWluTW9udGh8fHBlJiZ2PlEubWF4TW9udGg/JyBkaXNhYmxlZD0iZGlzYWJsZWQiJzoiIikrIj4iK1EuaTE4bi5tb250aHNbdl0rIjwvb3B0aW9uPiIp''@;'; put 'put ''O2ZvcihPZT0nPGRpdiBjbGFzcz0icGlrYS1sYWJlbCI+JytRLmkxOG4ubW9udGhzW2RdKyc8c2VsZWN0IGNsYXNzPSJwaWthLXNlbGVjdCBwaWthLXNlbGVjdC1tb250aCIgdGFiaW5kZXg9Ii0xIj4nK1Yuam9pbigiIikrIjwvc2VsZWN0PjwvZGl2PiIsa3EoUS55ZWFyUmFuZ2UpPyh2PVEu''@;'; put 'put ''eWVhclJhbmdlWzBdLFM9US55ZWFyUmFuZ2VbMV0rMSk6KHY9YS1RLnllYXJSYW5nZSxTPTErYStRLnllYXJSYW5nZSksVj1bXTt2PFMmJnY8PVEubWF4WWVhcjt2Kyspdj49US5taW5ZZWFyJiZWLnB1c2goJzxvcHRpb24gdmFsdWU9IicrdisnIicrKHY9PT1hPycgc2VsZWN0ZWQ9InNlbGVj''@;'; put 'put ''dGVkIic6IiIpKyI+Iit2KyI8L29wdGlvbj4iKTtyZXR1cm4gWWU9JzxkaXYgY2xhc3M9InBpa2EtbGFiZWwiPicrYStRLnllYXJTdWZmaXgrJzxzZWxlY3QgY2xhc3M9InBpa2Etc2VsZWN0IHBpa2Etc2VsZWN0LXllYXIiIHRhYmluZGV4PSItMSI+JytWLmpvaW4oIiIpKyI8L3NlbGVjdD48''@;'; put 'put ''L2Rpdj4iLENlKz1RLnNob3dNb250aEFmdGVyWWVhcj9ZZStPZTpPZStZZSxkZSYmKDA9PT1kfHxRLm1pbk1vbnRoPj1kKSYmKGV0PSExKSxwZSYmKDExPT09ZHx8US5tYXhNb250aDw9ZCkmJihkdD0hMSksMD09PWMmJihDZSs9JzxidXR0b24gY2xhc3M9InBpa2EtcHJldicrKGV0PyIiOiIg''@;'; put 'put ''aXMtZGlzYWJsZWQiKSsnIiB0eXBlPSJidXR0b24iPicrUS5pMThuLnByZXZpb3VzTW9udGgrIjwvYnV0dG9uPiIpLGM9PT1sLl9vLm51bWJlck9mTW9udGhzLTEmJihDZSs9JzxidXR0b24gY2xhc3M9InBpa2EtbmV4dCcrKGR0PyIiOiIgaXMtZGlzYWJsZWQiKSsnIiB0eXBlPSJidXR0b24i''@;'; put 'put ''PicrUS5pMThuLm5leHRNb250aCsiPC9idXR0b24+IiksQ2UrIjwvZGl2PiJ9O2Z1bmN0aW9uIEFxKGwpe2xldCBjPXRoaXMsYT1jLmNvbmZpZyhsKTtjLl9vbk1vdXNlRG93bj1mdW5jdGlvbihoKXtpZighYy5fdilyZXR1cm47bGV0IGY9KGg9aHx8R20oKS5ldmVudCkudGFyZ2V0fHxoLnNy''@;'; put 'put ''Y0VsZW1lbnQ7aWYoZilpZihMZChmLCJpcy1kaXNhYmxlZCIpfHwoIUxkKGYsInBpa2EtYnV0dG9uIil8fExkKGYsImlzLWVtcHR5Iil8fExkKGYucGFyZW50Tm9kZSwiaXMtZGlzYWJsZWQiKT9MZChmLCJwaWthLXByZXYiKT9jLnByZXZNb250aCgpOkxkKGYsInBpa2EtbmV4dCIpJiZjLm5l''@;'; put 'put ''eHRNb250aCgpOihjLnNldERhdGUobmV3IERhdGUoZi5nZXRBdHRyaWJ1dGUoImRhdGEtcGlrYS15ZWFyIiksZi5nZXRBdHRyaWJ1dGUoImRhdGEtcGlrYS1tb250aCIpLGYuZ2V0QXR0cmlidXRlKCJkYXRhLXBpa2EtZGF5IikpKSxhLmJvdW5kJiZ4cShmdW5jdGlvbigpe2MuaGlkZSgpLGEu''@;'; put 'put ''Ymx1ckZpZWxkT25TZWxlY3QmJmEuZmllbGQmJmEuZmllbGQuYmx1cigpfSwxMDApKSksTGQoZiwicGlrYS1zZWxlY3QiKSljLl9jPSEwO2Vsc2V7aWYoIWgucHJldmVudERlZmF1bHQpcmV0dXJuIGgucmV0dXJuVmFsdWU9ITEsITE7aC5wcmV2ZW50RGVmYXVsdCgpfX0sYy5fb25DaGFuZ2U9''@;'; put 'put ''ZnVuY3Rpb24oaCl7bGV0IGY9KGg9aHx8R20oKS5ldmVudCkudGFyZ2V0fHxoLnNyY0VsZW1lbnQ7ZiYmKExkKGYsInBpa2Etc2VsZWN0LW1vbnRoIik/Yy5nb3RvTW9udGgoZi52YWx1ZSk6TGQoZiwicGlrYS1zZWxlY3QteWVhciIpJiZjLmdvdG9ZZWFyKGYudmFsdWUpKX0sYy5fb25LZXlD''@;'; put 'put ''aGFuZ2U9ZnVuY3Rpb24oaCl7aWYoaD1ofHxHbSgpLmV2ZW50LGMuaXNWaXNpYmxlKCkpc3dpdGNoKGgua2V5Q29kZSl7Y2FzZSAxMzpjYXNlIDI3OmEuZmllbGQmJmEuZmllbGQuYmx1cigpO2JyZWFrO2Nhc2UgMzc6Yy5hZGp1c3REYXRlKCJzdWJ0cmFjdCIsMSk7YnJlYWs7Y2FzZSAzODpj''@;'; put 'put ''LmFkanVzdERhdGUoInN1YnRyYWN0Iiw3KTticmVhaztjYXNlIDM5OmMuYWRqdXN0RGF0ZSgiYWRkIiwxKTticmVhaztjYXNlIDQwOmMuYWRqdXN0RGF0ZSgiYWRkIiw3KTticmVhaztjYXNlIDg6Y2FzZSA0NjpjLnNldERhdGUobnVsbCl9fSxjLl9wYXJzZUZpZWxkVmFsdWU9ZnVuY3Rpb24o''@;'; put 'put ''KXtpZihhLnBhcnNlKXJldHVybiBhLnBhcnNlKGEuZmllbGQudmFsdWUsYS5mb3JtYXQpO2lmKHRoaXMuaGFzTW9tZW50KXtsZXQgaD10aGlzLm1vbWVudChhLmZpZWxkLnZhbHVlLGEuZm9ybWF0LGEuZm9ybWF0U3RyaWN0KTtyZXR1cm4gaCYmaC5pc1ZhbGlkKCk/aC50b0RhdGUoKTpudWxs''@;'; put 'put ''fXJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKGEuZmllbGQudmFsdWUpKX0sYy5fb25JbnB1dENoYW5nZT1mdW5jdGlvbihoKXtsZXQgZjtoLmZpcmVkQnkhPT1jJiYoZj1jLl9wYXJzZUZpZWxkVmFsdWUoKSxPZChmKSYmYy5zZXREYXRlKGYpLGMuX3Z8fGMuc2hvdygpKX0sYy5fb25JbnB1''@;'; put 'put ''dEZvY3VzPWZ1bmN0aW9uKCl7Yy5zaG93KCl9LGMuX29uSW5wdXRDbGljaz1mdW5jdGlvbigpe2Muc2hvdygpfSxjLl9vbklucHV0Qmx1cj1mdW5jdGlvbigpe2xldCBoPSRoKCkuYWN0aXZlRWxlbWVudDtkb3tpZihMZChoLCJwaWthLXNpbmdsZSIpKXJldHVybn13aGlsZShoPWgucGFyZW50''@;'; put 'put ''Tm9kZSk7Yy5fY3x8KGMuX2I9eHEoZnVuY3Rpb24oKXtjLmhpZGUoKX0sNTApKSxjLl9jPSExfSxjLl9vbkNsaWNrPWZ1bmN0aW9uKGgpe2xldCBmPShoPWh8fEdtKCkuZXZlbnQpLnRhcmdldHx8aC5zcmNFbGVtZW50LHY9ZjtpZihmKXshaGFzRXZlbnRMaXN0ZW5lcnMmJkxkKGYsInBpa2Et''@;'; put 'put ''c2VsZWN0IikmJihmLm9uY2hhbmdlfHwoZi5zZXRBdHRyaWJ1dGUoIm9uY2hhbmdlIiwicmV0dXJuOyIpLFYzKGYsImNoYW5nZSIsYy5fb25DaGFuZ2UpKSk7ZG97aWYoTGQodiwicGlrYS1zaW5nbGUiKXx8dj09PWEudHJpZ2dlcilyZXR1cm59d2hpbGUodj12LnBhcmVudE5vZGUpO2MuX3Ym''@;'; put 'put ''JmYhPT1hLnRyaWdnZXImJnYhPT1hLnRyaWdnZXImJmMuaGlkZSgpfX0sYy5lbD0kaCgpLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGMuZWwuY2xhc3NOYW1lPSJwaWthLXNpbmdsZSIrKGEuaXNSVEw/IiBpcy1ydGwiOiIiKSsoYS50aGVtZT8iICIrYS50aGVtZToiIiksVjMoYy5lbCwibW91c2Vk''@;'; put 'put ''b3duIixjLl9vbk1vdXNlRG93biwhMCksVjMoYy5lbCwidG91Y2hlbmQiLGMuX29uTW91c2VEb3duLCEwKSxWMyhjLmVsLCJjaGFuZ2UiLGMuX29uQ2hhbmdlKSxhLmtleWJvYXJkSW5wdXQmJlYzKCRoKCksImtleWRvd24iLGMuX29uS2V5Q2hhbmdlKSxhLmZpZWxkJiYoYS5jb250YWluZXI/''@;'; put 'put ''YS5jb250YWluZXIuYXBwZW5kQ2hpbGQoYy5lbCk6YS5ib3VuZD8kaCgpLmJvZHkuYXBwZW5kQ2hpbGQoYy5lbCk6YS5maWVsZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLmVsLGEuZmllbGQubmV4dFNpYmxpbmcpLFYzKGEuZmllbGQsImNoYW5nZSIsYy5fb25JbnB1dENoYW5nZSksYS5k''@;'; put 'put ''ZWZhdWx0RGF0ZXx8KGEuZGVmYXVsdERhdGU9Yy5fcGFyc2VGaWVsZFZhbHVlKCksYS5zZXREZWZhdWx0RGF0ZT0hMCkpO2xldCBkPWEuZGVmYXVsdERhdGU7T2QoZCk/YS5zZXREZWZhdWx0RGF0ZT9jLnNldERhdGUoZCwhMCk6Yy5nb3RvRGF0ZShkKTpjLmdvdG9EYXRlKG5ldyBEYXRlKSxh''@;'; put 'put ''LmJvdW5kPyh0aGlzLmhpZGUoKSxjLmVsLmNsYXNzTmFtZSs9IiBpcy1ib3VuZCIsVjMoYS50cmlnZ2VyLCJjbGljayIsYy5fb25JbnB1dENsaWNrKSxWMyhhLnRyaWdnZXIsImZvY3VzIixjLl9vbklucHV0Rm9jdXMpLFYzKGEudHJpZ2dlciwiYmx1ciIsYy5fb25JbnB1dEJsdXIpKTp0aGlz''@;'; put 'put ''LnNob3coKX1mdW5jdGlvbiBEcShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gVUplKGwpe3ZhciBjPWZ1bmN0aW9uIFpKZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2Fs''@;'; put 'put ''bChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5n''@;'; put 'put ''Iik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1BcS5wcm90b3R5cGU9e2NvbmZpZzpmdW5jdGlvbihs''@;'; put 'put ''KXt0aGlzLl9vfHwodGhpcy5fbz1tTyh7fSxCMywhMCkpO2xldCBjPW1PKHRoaXMuX28sbCwhMCk7Yy5pc1JUTD0hIWMuaXNSVEwsYy5maWVsZD1jLmZpZWxkJiZjLmZpZWxkLm5vZGVOYW1lP2MuZmllbGQ6bnVsbCxjLnRoZW1lPSJzdHJpbmciPT10eXBlb2YgYy50aGVtZSYmYy50aGVtZT9j''@;'; put 'put ''LnRoZW1lOm51bGwsYy5ib3VuZD0hISh2b2lkIDAhPT1jLmJvdW5kP2MuZmllbGQmJmMuYm91bmQ6Yy5maWVsZCksYy50cmlnZ2VyPWMudHJpZ2dlciYmYy50cmlnZ2VyLm5vZGVOYW1lP2MudHJpZ2dlcjpjLmZpZWxkLGMuZGlzYWJsZVdlZWtlbmRzPSEhYy5kaXNhYmxlV2Vla2VuZHMsYy5k''@;'; put 'put ''aXNhYmxlRGF5Rm49ImZ1bmN0aW9uIj09dHlwZW9mIGMuZGlzYWJsZURheUZuP2MuZGlzYWJsZURheUZuOm51bGw7bGV0IGE9cGFyc2VJbnQoYy5udW1iZXJPZk1vbnRocywxMCl8fDE7aWYoYy5udW1iZXJPZk1vbnRocz1hPjQ/NDphLE9kKGMubWluRGF0ZSl8fChjLm1pbkRhdGU9ITEpLE9k''@;'; put 'put ''KGMubWF4RGF0ZSl8fChjLm1heERhdGU9ITEpLGMubWluRGF0ZSYmYy5tYXhEYXRlJiZjLm1heERhdGU8Yy5taW5EYXRlJiYoYy5tYXhEYXRlPWMubWluRGF0ZT0hMSksYy5taW5EYXRlJiZ0aGlzLnNldE1pbkRhdGUoYy5taW5EYXRlKSxjLm1heERhdGUmJnRoaXMuc2V0TWF4RGF0ZShjLm1h''@;'; put 'put ''eERhdGUpLGtxKGMueWVhclJhbmdlKSl7bGV0IGQ9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLTEwO2MueWVhclJhbmdlWzBdPXBhcnNlSW50KGMueWVhclJhbmdlWzBdLDEwKXx8ZCxjLnllYXJSYW5nZVsxXT1wYXJzZUludChjLnllYXJSYW5nZVsxXSwxMCl8fGR9ZWxzZSBjLnllYXJSYW5n''@;'; put 'put ''ZT1NYXRoLmFicyhwYXJzZUludChjLnllYXJSYW5nZSwxMCkpfHxCMy55ZWFyUmFuZ2UsYy55ZWFyUmFuZ2U+MTAwJiYoYy55ZWFyUmFuZ2U9MTAwKTtyZXR1cm4gY30sdG9TdHJpbmc6ZnVuY3Rpb24obCl7cmV0dXJuIGw9bHx8dGhpcy5fby5mb3JtYXQsT2QodGhpcy5fZCk/dGhpcy5fby50''@;'; put 'put ''b1N0cmluZz90aGlzLl9vLnRvU3RyaW5nKHRoaXMuX2QsbCk6dGhpcy5oYXNNb21lbnQ/dGhpcy5tb21lbnQodGhpcy5fZCkuZm9ybWF0KGwpOnRoaXMuX2QudG9EYXRlU3RyaW5nKCk6IiJ9LGdldE1vbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc01vbWVudD90aGlzLm1vbWVudCh0''@;'; put 'put ''aGlzLl9kKTpudWxsfSxzZXRNb21lbnQ6ZnVuY3Rpb24obCxjKXt0aGlzLmhhc01vbWVudCYmdGhpcy5tb21lbnQuaXNNb21lbnQobCkmJnRoaXMuc2V0RGF0ZShsLnRvRGF0ZSgpLGMpfSx1c2VNb21lbnQ6ZnVuY3Rpb24obCl7dGhpcy5oYXNNb21lbnQ9ITAsdGhpcy5tb21lbnQ9bH0sZ2V0''@;'; put 'put ''RGF0ZTpmdW5jdGlvbigpe3JldHVybiBPZCh0aGlzLl9kKT9uZXcgRGF0ZSh0aGlzLl9kLmdldFRpbWUoKSk6bnVsbH0sc2V0RGF0ZTpmdW5jdGlvbihsLGMpe2lmKCFsKXJldHVybiB0aGlzLl9kPW51bGwsdGhpcy5fby5maWVsZCYmKHRoaXMuX28uZmllbGQudmFsdWU9IiIsYTJlKHRoaXMu''@;'; put 'put ''X28uZmllbGQsImNoYW5nZSIse2ZpcmVkQnk6dGhpc30pKSx0aGlzLmRyYXcoKTtpZigic3RyaW5nIj09dHlwZW9mIGwmJihsPW5ldyBEYXRlKERhdGUucGFyc2UobCkpKSwhT2QobCkpcmV0dXJuO2xldCBhPXRoaXMuX28ubWluRGF0ZSxkPXRoaXMuX28ubWF4RGF0ZTtPZChhKSYmbDxhP2w9''@;'; put 'put ''YTpPZChkKSYmbD5kJiYobD1kKSx0aGlzLl9kPW5ldyBEYXRlKGwuZ2V0VGltZSgpKSxwTyh0aGlzLl9kKSx0aGlzLmdvdG9EYXRlKHRoaXMuX2QpLHRoaXMuX28uZmllbGQmJih0aGlzLl9vLmZpZWxkLnZhbHVlPXRoaXMudG9TdHJpbmcoKSxhMmUodGhpcy5fby5maWVsZCwiY2hhbmdlIix7''@;'; put 'put ''ZmlyZWRCeTp0aGlzfSkpLCFjJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fby5vblNlbGVjdCYmdGhpcy5fby5vblNlbGVjdC5jYWxsKHRoaXMsdGhpcy5nZXREYXRlKCkpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc2V0RGF0ZShudWxsKX0sZ290b0RhdGU6ZnVuY3Rpb24obCl7bGV0IGM9''@;'; put 'put ''ITA7aWYoT2QobCkpe2lmKHRoaXMuY2FsZW5kYXJzKXtsZXQgYT1uZXcgRGF0ZSh0aGlzLmNhbGVuZGFyc1swXS55ZWFyLHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoLDEpLGQ9bmV3IERhdGUodGhpcy5jYWxlbmRhcnNbdGhpcy5jYWxlbmRhcnMubGVuZ3RoLTFdLnllYXIsdGhpcy5jYWxlbmRh''@;'; put 'put ''cnNbdGhpcy5jYWxlbmRhcnMubGVuZ3RoLTFdLm1vbnRoLDEpLGg9bC5nZXRUaW1lKCk7ZC5zZXRNb250aChkLmdldE1vbnRoKCkrMSksZC5zZXREYXRlKGQuZ2V0RGF0ZSgpLTEpLGM9aDxhLmdldFRpbWUoKXx8ZC5nZXRUaW1lKCk8aH1jJiYodGhpcy5jYWxlbmRhcnM9W3ttb250aDpsLmdl''@;'; put 'put ''dE1vbnRoKCkseWVhcjpsLmdldEZ1bGxZZWFyKCl9XSwicmlnaHQiPT09dGhpcy5fby5tYWluQ2FsZW5kYXImJih0aGlzLmNhbGVuZGFyc1swXS5tb250aCs9MS10aGlzLl9vLm51bWJlck9mTW9udGhzKSksdGhpcy5hZGp1c3RDYWxlbmRhcnMoKX19LGFkanVzdERhdGU6ZnVuY3Rpb24obCxj''@;'; put 'put ''KXtsZXQgaCxhPXRoaXMuZ2V0RGF0ZSgpfHxuZXcgRGF0ZSxkPTI0KnBhcnNlSW50KGMpKjYwKjYwKjFlMzsiYWRkIj09PWw/aD1uZXcgRGF0ZShhLnZhbHVlT2YoKStkKToic3VidHJhY3QiPT09bCYmKGg9bmV3IERhdGUoYS52YWx1ZU9mKCktZCkpLHRoaXMuc2V0RGF0ZShoKX0sYWRqdXN0''@;'; put 'put ''Q2FsZW5kYXJzOmZ1bmN0aW9uKCl7dGhpcy5jYWxlbmRhcnNbMF09bDJlKHRoaXMuY2FsZW5kYXJzWzBdKTtmb3IobGV0IGw9MTtsPHRoaXMuX28ubnVtYmVyT2ZNb250aHM7bCsrKXRoaXMuY2FsZW5kYXJzW2xdPWwyZSh7bW9udGg6dGhpcy5jYWxlbmRhcnNbMF0ubW9udGgrbCx5ZWFyOnRo''@;'; put 'put ''aXMuY2FsZW5kYXJzWzBdLnllYXJ9KTt0aGlzLmRyYXcoKX0sZ290b1RvZGF5OmZ1bmN0aW9uKCl7dGhpcy5nb3RvRGF0ZShuZXcgRGF0ZSl9LGdvdG9Nb250aDpmdW5jdGlvbihsKXtpc05hTihsKXx8KHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoPXBhcnNlSW50KGwsMTApLHRoaXMuYWRqdXN0''@;'; put 'put ''Q2FsZW5kYXJzKCkpfSxuZXh0TW9udGg6ZnVuY3Rpb24oKXt0aGlzLmNhbGVuZGFyc1swXS5tb250aCsrLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCl9LHByZXZNb250aDpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXJzWzBdLm1vbnRoLS0sdGhpcy5hZGp1c3RDYWxlbmRhcnMoKX0sZ290b1llYXI6''@;'; put 'put ''ZnVuY3Rpb24obCl7aXNOYU4obCl8fCh0aGlzLmNhbGVuZGFyc1swXS55ZWFyPXBhcnNlSW50KGwsMTApLHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCkpfSxzZXRNaW5EYXRlOmZ1bmN0aW9uKGwpe2wgaW5zdGFuY2VvZiBEYXRlPyhwTyhsKSx0aGlzLl9vLm1pbkRhdGU9bCx0aGlzLl9vLm1pblll''@;'; put 'put ''YXI9bC5nZXRGdWxsWWVhcigpLHRoaXMuX28ubWluTW9udGg9bC5nZXRNb250aCgpKToodGhpcy5fby5taW5EYXRlPUIzLm1pbkRhdGUsdGhpcy5fby5taW5ZZWFyPUIzLm1pblllYXIsdGhpcy5fby5taW5Nb250aD1CMy5taW5Nb250aCx0aGlzLl9vLnN0YXJ0UmFuZ2U9QjMuc3RhcnRSYW5n''@;'; put 'put ''ZSksdGhpcy5kcmF3KCl9LHNldE1heERhdGU6ZnVuY3Rpb24obCl7bCBpbnN0YW5jZW9mIERhdGU/KHBPKGwpLHRoaXMuX28ubWF4RGF0ZT1sLHRoaXMuX28ubWF4WWVhcj1sLmdldEZ1bGxZZWFyKCksdGhpcy5fby5tYXhNb250aD1sLmdldE1vbnRoKCkpOih0aGlzLl9vLm1heERhdGU9QjMu''@;'; put 'put ''bWF4RGF0ZSx0aGlzLl9vLm1heFllYXI9QjMubWF4WWVhcix0aGlzLl9vLm1heE1vbnRoPUIzLm1heE1vbnRoLHRoaXMuX28uZW5kUmFuZ2U9QjMuZW5kUmFuZ2UpLHRoaXMuZHJhdygpfSxzZXRTdGFydFJhbmdlOmZ1bmN0aW9uKGwpe3RoaXMuX28uc3RhcnRSYW5nZT1sfSxzZXRFbmRSYW5n''@;'; put 'put ''ZTpmdW5jdGlvbihsKXt0aGlzLl9vLmVuZFJhbmdlPWx9LGRyYXc6ZnVuY3Rpb24obCl7aWYoIXRoaXMuX3YmJiFsKXJldHVybjtsZXQgUyxjPXRoaXMuX28sYT1jLm1pblllYXIsZD1jLm1heFllYXIsaD1jLm1pbk1vbnRoLGY9Yy5tYXhNb250aCx2PSIiO3RoaXMuX3k8PWEmJih0aGlzLl95''@;'; put 'put ''PWEsIWlzTmFOKGgpJiZ0aGlzLl9tPGgmJih0aGlzLl9tPWgpKSx0aGlzLl95Pj1kJiYodGhpcy5feT1kLCFpc05hTihmKSYmdGhpcy5fbT5mJiYodGhpcy5fbT1mKSk7Zm9yKGxldCBWPTA7VjxjLm51bWJlck9mTW9udGhzO1YrKylTPSJwaWthLXRpdGxlLSIrTWF0aC5yYW5kb20oKS50b1N0''@;'; put 'put ''cmluZygzNikucmVwbGFjZSgvW15hLXpdKy9nLCIiKS5zdWJzdHIoMCwyKSx2Kz0nPGRpdiBjbGFzcz0icGlrYS1sZW5kYXIiPicrakplKHRoaXMsVix0aGlzLmNhbGVuZGFyc1tWXS55ZWFyLHRoaXMuY2FsZW5kYXJzW1ZdLm1vbnRoLHRoaXMuY2FsZW5kYXJzWzBdLnllYXIsUykrdGhpcy5y''@;'; put 'put ''ZW5kZXIodGhpcy5jYWxlbmRhcnNbVl0ueWVhcix0aGlzLmNhbGVuZGFyc1tWXS5tb250aCxTKSsiPC9kaXY+Ijt0aGlzLmVsLmlubmVySFRNTD12LGMuYm91bmQmJiJoaWRkZW4iIT09Yy5maWVsZC50eXBlJiZ4cShmdW5jdGlvbigpe2MudHJpZ2dlci5mb2N1cygpfSwxKSwiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgdGhpcy5fby5vbkRyYXcmJnRoaXMuX28ub25EcmF3KHRoaXMpLGMuYm91bmQmJmMuZmllbGQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjLmFyaWFMYWJlbCl9LGFkanVzdFBvc2l0aW9uOmZ1bmN0aW9uKCl7bGV0IGwsYyxhLGQsaCxmLHYsUyxWLFEsZGU7dGhpcy5fby5j''@;'; put 'put ''b250YWluZXJ8fCh0aGlzLmVsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsbD10aGlzLl9vLnRyaWdnZXIsYz10aGlzLmVsLm9mZnNldFdpZHRoLGE9dGhpcy5lbC5vZmZzZXRIZWlnaHQsZD1HbSgpLmlubmVyV2lkdGh8fCRoKCkuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGg9R20o''@;'; put 'put ''KS5pbm5lckhlaWdodHx8JGgoKS5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LGY9JGgoKS5ib2R5LnNjcm9sbFRvcHx8JGgoKS5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLFE9ITAsZGU9ITAsVj1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9Vi5sZWZ0K0dtKCkucGFnZVhPZmZz''@;'; put 'put ''ZXQsUz1WLmJvdHRvbStHbSgpLnBhZ2VZT2Zmc2V0LCh0aGlzLl9vLnJlcG9zaXRpb24mJnYrYz5kfHx0aGlzLl9vLnBvc2l0aW9uLmluZGV4T2YoInJpZ2h0Iik+LTEmJnYtYytsLm9mZnNldFdpZHRoPjApJiYodj12LWMrbC5vZmZzZXRXaWR0aCxRPSExKSwodGhpcy5fby5yZXBvc2l0aW9u''@;'; put 'put ''JiZTK2E+aCtmfHx0aGlzLl9vLnBvc2l0aW9uLmluZGV4T2YoInRvcCIpPi0xJiZTLWEtbC5vZmZzZXRIZWlnaHQ+MCkmJihTPVMtYS1sLm9mZnNldEhlaWdodCxkZT0hMSksdjwwJiYodj0wKSxTPDAmJihTPTApLHRoaXMuZWwuc3R5bGUubGVmdD12KyJweCIsdGhpcy5lbC5zdHlsZS50b3A9''@;'; put 'put ''UysicHgiLEVxKHRoaXMuZWwsUT8ibGVmdC1hbGlnbmVkIjoicmlnaHQtYWxpZ25lZCIpLEVxKHRoaXMuZWwsZGU/ImJvdHRvbS1hbGlnbmVkIjoidG9wLWFsaWduZWQiKSxUcSh0aGlzLmVsLFE/InJpZ2h0LWFsaWduZWQiOiJsZWZ0LWFsaWduZWQiKSxUcSh0aGlzLmVsLGRlPyJ0b3AtYWxp''@;'; put 'put ''Z25lZCI6ImJvdHRvbS1hbGlnbmVkIikpfSxyZW5kZXI6ZnVuY3Rpb24obCxjLGEpe2xldCBkPXRoaXMuX28saD1uZXcgRGF0ZSxmPXMyZShsLGMpLHY9bmV3IERhdGUobCxjLDEpLmdldERheSgpLFM9W10sVj1bXTtwTyhoKSxkLmZpcnN0RGF5PjAmJih2LT1kLmZpcnN0RGF5LHY8MCYmKHYr''@;'; put 'put ''PTcpKTtsZXQgUT0wPT09Yz8xMTpjLTEsZGU9MTE9PT1jPzA6YysxLHBlPTA9PT1jP2wtMTpsLENlPTExPT09Yz9sKzE6bCxPZT1zMmUocGUsUSksWWU9Zit2LGV0PVllO2Zvcig7ZXQ+NzspZXQtPTc7WWUrPTctZXQ7bGV0IGR0PSExO2ZvcihsZXQgaHQ9MCxNdD0wO2h0PFllO2h0Kyspe2xl''@;'; put 'put ''dCBRdD1uZXcgRGF0ZShsLGMsaHQtdisxKSxsbj0hIU9kKHRoaXMuX2QpJiZnTyhRdCx0aGlzLl9kKSx2bj1nTyhRdCxoKSx3bj0tMSE9PWQuZXZlbnRzLmluZGV4T2YoUXQudG9EYXRlU3RyaW5nKCkpLG5yPWh0PHZ8fGh0Pj1mK3YsdnI9aHQtdisxLE1pPWMsUGk9bCx5cj1kLnN0YXJ0UmFu''@;'; put 'put ''Z2UmJmdPKGQuc3RhcnRSYW5nZSxRdCksX2k9ZC5lbmRSYW5nZSYmZ08oZC5lbmRSYW5nZSxRdCksVXI9ZC5zdGFydFJhbmdlJiZkLmVuZFJhbmdlJiZkLnN0YXJ0UmFuZ2U8UXQmJlF0PGQuZW5kUmFuZ2UsSW49ZC5taW5EYXRlJiZRdDxkLm1pbkRhdGV8fGQubWF4RGF0ZSYmUXQ+ZC5tYXhE''@;'; put 'put ''YXRlfHxkLmRpc2FibGVXZWVrZW5kcyYmTEplKFF0KXx8ZC5kaXNhYmxlRGF5Rm4mJmQuZGlzYWJsZURheUZuKFF0KTtuciYmKGh0PHY/KHZyPU9lK3ZyLE1pPVEsUGk9cGUpOih2ci09ZixNaT1kZSxQaT1DZSkpLGQucGlja1dob2xlV2VlayYmbG4mJihkdD0hMCksVi5wdXNoKFBKZSh7ZGF5''@;'; put 'put ''OnZyLG1vbnRoOk1pLHllYXI6UGksaGFzRXZlbnQ6d24saXNTZWxlY3RlZDpsbixpc1RvZGF5OnZuLGlzRGlzYWJsZWQ6SW4saXNFbXB0eTpucixpc1N0YXJ0UmFuZ2U6eXIsaXNFbmRSYW5nZTpfaSxpc0luUmFuZ2U6VXIsc2hvd0RheXNJbk5leHRBbmRQcmV2aW91c01vbnRoczpkLnNob3dE''@;'; put 'put ''YXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHMsZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOmQuZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzfSkpLDc9PSsrTXQmJihkLnNob3dXZWVrTnVtYmVyJiZWLnVuc2hpZnQoTkplKHRoaXMs''@;'; put 'put ''aHQtdixjLGwsZC5maXJzdFdlZWtPZlllYXJNaW5EYXlzKSksUy5wdXNoKEhKZShWLGQuaXNSVEwsZC5waWNrV2hvbGVXZWVrLGR0KSksVj1bXSxNdD0wLGR0PSExKX1yZXR1cm4gZnVuY3Rpb24obCxjLGEpe3JldHVybic8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBj''@;'; put 'put ''bGFzcz0icGlrYS10YWJsZSIgcm9sZT0iZ3JpZCIgYXJpYS1sYWJlbGxlZGJ5PSInK2ErJyI+JytmdW5jdGlvbihsKXtsZXQgYyxhPVtdO2ZvcihsLnNob3dXZWVrTnVtYmVyJiZhLnB1c2goIjx0aD48L3RoPiIpLGM9MDtjPDc7YysrKWEucHVzaCgnPHRoIHNjb3BlPSJjb2wiPjxhYmJyIHRp''@;'; put 'put ''dGxlPSInK2MyZShsLGMpKyciPicrYzJlKGwsYywhMCkrIjwvYWJicj48L3RoPiIpO3JldHVybiI8dGhlYWQ+PHRyPiIrKGwuaXNSVEw/YS5yZXZlcnNlKCk6YSkuam9pbigiIikrIjwvdHI+PC90aGVhZD4ifShsKStmdW5jdGlvbihsKXtyZXR1cm4iPHRib2R5PiIrbC5qb2luKCIiKSsiPC90''@;'; put 'put ''Ym9keT4ifShjKSsiPC90YWJsZT4ifShkLFMsYSl9LGlzVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGUoKXx8KHRoaXMuX3Y9ITAsdGhpcy5kcmF3KCksVHEodGhpcy5lbCwiaXMtaGlkZGVuIiksdGhpcy5fby5ib3VuZCYm''@;'; put 'put ''KFYzKCRoKCksImNsaWNrIix0aGlzLl9vbkNsaWNrKSx0aGlzLmFkanVzdFBvc2l0aW9uKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vLm9uT3BlbiYmdGhpcy5fby5vbk9wZW4uY2FsbCh0aGlzKSl9LGhpZGU6ZnVuY3Rpb24oKXtsZXQgbD10aGlzLl92OyExIT09bCYmKHRoaXMuX28u''@;'; put 'put ''Ym91bmQmJkY0KCRoKCksImNsaWNrIix0aGlzLl9vbkNsaWNrKSx0aGlzLl9vLmNvbnRhaW5lcnx8KHRoaXMuZWwuc3R5bGUucG9zaXRpb249InN0YXRpYyIsdGhpcy5lbC5zdHlsZS5sZWZ0PSJhdXRvIix0aGlzLmVsLnN0eWxlLnRvcD0iYXV0byIpLEVxKHRoaXMuZWwsImlzLWhpZGRlbiIp''@;'; put 'put ''LHRoaXMuX3Y9ITEsdm9pZCAwIT09bCYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX28ub25DbG9zZSYmdGhpcy5fby5vbkNsb3NlLmNhbGwodGhpcykpfSxkZXN0cm95OmZ1bmN0aW9uKCl7bGV0IGw9dGhpcy5fbzt0aGlzLmhpZGUoKSxGNCh0aGlzLmVsLCJtb3VzZWRvd24iLHRoaXMuX29u''@;'; put 'put ''TW91c2VEb3duLCEwKSxGNCh0aGlzLmVsLCJ0b3VjaGVuZCIsdGhpcy5fb25Nb3VzZURvd24sITApLEY0KHRoaXMuZWwsImNoYW5nZSIsdGhpcy5fb25DaGFuZ2UpLGwua2V5Ym9hcmRJbnB1dCYmRjQoJGgoKSwia2V5ZG93biIsdGhpcy5fb25LZXlDaGFuZ2UpLGwuZmllbGQmJihGNChsLmZp''@;'; put 'put ''ZWxkLCJjaGFuZ2UiLHRoaXMuX29uSW5wdXRDaGFuZ2UpLGwuYm91bmQmJihGNChsLnRyaWdnZXIsImNsaWNrIix0aGlzLl9vbklucHV0Q2xpY2spLEY0KGwudHJpZ2dlciwiZm9jdXMiLHRoaXMuX29uSW5wdXRGb2N1cyksRjQobC50cmlnZ2VyLCJibHVyIix0aGlzLl9vbklucHV0Qmx1cikp''@;'; put 'put ''KSx0aGlzLmVsLnBhcmVudE5vZGUmJnRoaXMuZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsKX19O2NvbnN0IHUyZT0iZGF0ZSIsZDJlPSJkYXRlRWRpdG9yIjtjbGFzcyBoMmUgZXh0ZW5kcyBhN3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksRHEodGhpcywiZGVm''@;'; put 'put ''YXVsdERhdGVGb3JtYXQiLCJERC9NTS9ZWVlZIiksRHEodGhpcywicGFyZW50RGVzdHJveWVkIiwhMSksRHEodGhpcywiJGRhdGVQaWNrZXIiLG51bGwpfXN0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4gdTJlfWluaXQoKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYXMpdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJZb3UgbmVlZCB0byBpbmNsdWRlIG1vbWVudC5qcyB0byB5b3VyIHByb2plY3QuIik7c3VwZXIuaW5pdCgpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyRGVzdHJveSIsKCk9Pnt0aGlzLnBhcmVudERlc3Ryb3llZD0hMCx0aGlzLmRlc3Ryb3lFbGVtZW50cygpfSl9Y3JlYXRlRWxl''@;'; put 'put ''bWVudHMoKXtzdXBlci5jcmVhdGVFbGVtZW50cygpLHRoaXMuZGF0ZVBpY2tlcj10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdGhpcy5kYXRlUGlja2VyU3R5bGU9dGhpcy5kYXRlUGlja2VyLnN0eWxlLHRoaXMuZGF0ZVBpY2tlclN0eWxlLnBvc2l0aW9uPSJh''@;'; put 'put ''YnNvbHV0ZSIsdGhpcy5kYXRlUGlja2VyU3R5bGUudG9wPTAsdGhpcy5kYXRlUGlja2VyU3R5bGUubGVmdD0wLHRoaXMuZGF0ZVBpY2tlclN0eWxlLnpJbmRleD05OTk5LHRoaXMuZGF0ZVBpY2tlci5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5ob3QuaXNSdGwoKT8icnRsIjoibHRyIiksbWko''@;'; put 'put ''dGhpcy5kYXRlUGlja2VyLCJodERhdGVwaWNrZXJIb2xkZXIiKSx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmRhdGVQaWNrZXIpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5kYXRlUGlja2VyLCJtb3VzZWRvd24iLGM9PntZbyhj''@;'; put 'put ''LnRhcmdldCwicGlrYS1kYXkiKSYmdGhpcy5oaWRlRGF0ZXBpY2tlcigpLGMuc3RvcFByb3BhZ2F0aW9uKCl9KX1kZXN0cm95RWxlbWVudHMoKXtjb25zdCBjPXRoaXMuZGF0ZVBpY2tlci5wYXJlbnROb2RlO3RoaXMuJGRhdGVQaWNrZXImJnRoaXMuJGRhdGVQaWNrZXIuZGVzdHJveSgpLGMm''@;'; put 'put ''JmMucmVtb3ZlQ2hpbGQodGhpcy5kYXRlUGlja2VyKX1wcmVwYXJlKGMsYSxkLGgsZix2KXtzdXBlci5wcmVwYXJlKGMsYSxkLGgsZix2KX1vcGVuKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7Y29uc3QgZD10aGlz''@;'; put 'put ''LmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJlZGl0b3IiKTt0aGlzLnNob3dEYXRlcGlja2VyKGMpLHN1cGVyLm9wZW4oKSxkLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siQXJyb3dMZWZ0Il1dLGNhbGxiYWNrOigpPT57dGhpcy4kZGF0ZVBpY2tlci5hZGp1c3REYXRlKCJz''@;'; put 'put ''dWJ0cmFjdCIsMSl9fSx7a2V5czpbWyJBcnJvd1JpZ2h0Il1dLGNhbGxiYWNrOigpPT57dGhpcy4kZGF0ZVBpY2tlci5hZGp1c3REYXRlKCJhZGQiLDEpfX0se2tleXM6W1siQXJyb3dVcCJdXSxjYWxsYmFjazooKT0+e3RoaXMuJGRhdGVQaWNrZXIuYWRqdXN0RGF0ZSgic3VidHJhY3QiLDcp''@;'; put 'put ''fX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOigpPT57dGhpcy4kZGF0ZVBpY2tlci5hZGp1c3REYXRlKCJhZGQiLDcpfX1dLHtncm91cDpkMmV9KX1jbG9zZSgpe3ZhciBjO3RoaXMuX29wZW5lZD0hMSxudWxsIT09KGM9dGhpcy4kZGF0ZVBpY2tlcikmJnZvaWQgMCE9PWMmJmMu''@;'; put 'put ''ZGVzdHJveSYmdGhpcy4kZGF0ZVBpY2tlci5kZXN0cm95KCksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+e2NvbnN0IGg9dGhpcy5ob3QuX2dldEVkaXRvck1hbmFnZXIoKTtoLmNsb3NlRWRpdG9yKCksdGhpcy5ob3Qudmlldy5yZW5kZXIoKSxoLnByZXBhcmVFZGl0b3IoKX0pLHRo''@;'; put 'put ''aXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoZDJlKSxzdXBlci5jbG9zZSgpfWZpbmlzaEVkaXRpbmcoKXtzdXBlci5maW5pc2hFZGl0aW5nKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRz''@;'; put 'put ''WzBdJiZhcmd1bWVudHNbMF0sYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSl9c2hvd0RhdGVwaWNrZXIoYyl7Y29uc3QgYT10aGlzLmNlbGxQcm9wZXJ0aWVzLmRhdGVGb3JtYXR8fHRoaXMuZGVmYXVsdERhdGVGb3JtYXQsZD10aGlzLmhv''@;'; put 'put ''dC52aWV3LmlzTW91c2VEb3duKCksaD0hIWMmJmtXKGMua2V5Q29kZSk7bGV0IGY7dGhpcy5kYXRlUGlja2VyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLiRkYXRlUGlja2VyPW5ldyBBcSh0aGlzLmdldERhdGVQaWNrZXJDb25maWcoKSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuJGRh''@;'; put 'put ''dGVQaWNrZXIudXNlTW9tZW50JiZ0aGlzLiRkYXRlUGlja2VyLnVzZU1vbWVudChhcyksdGhpcy4kZGF0ZVBpY2tlci5fb25JbnB1dEZvY3VzPWZ1bmN0aW9uKCl7fSx0aGlzLm9yaWdpbmFsVmFsdWU/KGY9dGhpcy5vcmlnaW5hbFZhbHVlLGFzKGYsYSwhMCkuaXNWYWxpZCgpJiZ0aGlzLiRk''@;'; put 'put ''YXRlUGlja2VyLnNldE1vbWVudChhcyhmLGEpLCEwKSx0aGlzLmdldFZhbHVlKCkhPT10aGlzLm9yaWdpbmFsVmFsdWUmJnRoaXMuc2V0VmFsdWUodGhpcy5vcmlnaW5hbFZhbHVlKSwhaCYmIWQmJnRoaXMuc2V0VmFsdWUoIiIpKTp0aGlzLmNlbGxQcm9wZXJ0aWVzLmRlZmF1bHREYXRlPyhm''@;'; put 'put ''PXRoaXMuY2VsbFByb3BlcnRpZXMuZGVmYXVsdERhdGUsYXMoZixhLCEwKS5pc1ZhbGlkKCkmJnRoaXMuJGRhdGVQaWNrZXIuc2V0TW9tZW50KGFzKGYsYSksITApLCFoJiYhZCYmdGhpcy5zZXRWYWx1ZSgiIikpOnRoaXMuJGRhdGVQaWNrZXIuZ290b1RvZGF5KCl9aGlkZURhdGVwaWNrZXIo''@;'; put 'put ''KXt0aGlzLmRhdGVQaWNrZXJTdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLiRkYXRlUGlja2VyLmhpZGUoKX1nZXREYXRlUGlja2VyQ29uZmlnKCl7Y29uc3QgYz10aGlzLlRFWFRBUkVBLGE9e307dGhpcy5jZWxsUHJvcGVydGllcyYmdGhpcy5jZWxsUHJvcGVydGllcy5kYXRlUGlja2VyQ29u''@;'; put 'put ''ZmlnJiZueChhLHRoaXMuY2VsbFByb3BlcnRpZXMuZGF0ZVBpY2tlckNvbmZpZyk7Y29uc3QgZD1hLm9uU2VsZWN0LGg9YS5vbkNsb3NlO3JldHVybiBhLmZpZWxkPWMsYS50cmlnZ2VyPWMsYS5jb250YWluZXI9dGhpcy5kYXRlUGlja2VyLGEuYm91bmQ9ITEsYS5rZXlib2FyZElucHV0PSEx''@;'; put 'put ''LGEuZm9ybWF0PWEuZm9ybWF0fHx0aGlzLmRlZmF1bHREYXRlRm9ybWF0LGEucmVwb3NpdGlvbj1hLnJlcG9zaXRpb258fCExLGEuaXNSVEw9ITEsYS5vblNlbGVjdD1mPT57bGV0IHY9Zjtpc05hTih2LmdldFRpbWUoKSl8fCh2PWFzKHYpLmZvcm1hdCh0aGlzLmNlbGxQcm9wZXJ0aWVzLmRh''@;'; put 'put ''dGVGb3JtYXR8fHRoaXMuZGVmYXVsdERhdGVGb3JtYXQpKSx0aGlzLnNldFZhbHVlKHYpLGQmJmQoKX0sYS5vbkNsb3NlPSgpPT57dGhpcy5wYXJlbnREZXN0cm95ZWR8fHRoaXMuZmluaXNoRWRpdGluZyghMSksaCYmaCgpfSxhfXJlZnJlc2hEaW1lbnNpb25zKGMpe3ZhciBhO2lmKHN1cGVy''@;'; put 'put ''LnJlZnJlc2hEaW1lbnNpb25zKGMpLHRoaXMuc3RhdGUhPT14Yy5FRElUSU5HKXJldHVybjtpZih0aGlzLlREPXRoaXMuZ2V0RWRpdGVkQ2VsbCgpLCF0aGlzLlREKXJldHVybiB2b2lkIHRoaXMuaGlkZURhdGVwaWNrZXIoKTtjb25zdHtyb3dJbmRleE1hcHBlcjpkLGNvbHVtbkluZGV4TWFw''@;'; put 'put ''cGVyOmh9PXRoaXMuaG90LHt3dE92ZXJsYXlzOmZ9PXRoaXMuaG90LnZpZXcuX3d0LHt3dFRhYmxlOnZ9PW51bGwhPT0oYT1mLmdldFBhcmVudE92ZXJsYXkodGhpcy5URCkpJiZ2b2lkIDAhPT1hP2E6dGhpcy5ob3Qudmlldy5fd3QsUz1kLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgo''@;'; put 'put ''di5nZXRGaXJzdFBhcnRpYWxseVZpc2libGVSb3coKSksVj1kLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodi5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZVJvdygpKSxRPWguZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleCh2LmdldEZpcnN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigp''@;'; put 'put ''KSxkZT1oLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgodi5nZXRMYXN0UGFydGlhbGx5VmlzaWJsZUNvbHVtbigpKTtpZih0aGlzLnJvdz49UyYmdGhpcy5yb3c8PVYmJnRoaXMuY29sPj1RJiZ0aGlzLmNvbDw9ZGUpe2NvbnN0IHBlPXRoaXMuVEQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0''@;'; put 'put ''KCk7dGhpcy5kYXRlUGlja2VyU3R5bGUudG9wPWAke3RoaXMuaG90LnJvb3RXaW5kb3cucGFnZVlPZmZzZXQrcGUudG9wK1psKHRoaXMuVEQpfXB4YDtsZXQgQ2U9dGhpcy5ob3Qucm9vdFdpbmRvdy5wYWdlWE9mZnNldDt0aGlzLmhvdC5pc1J0bCgpP0NlKz1wZS5yaWdodC1XYSh0aGlzLmRh''@;'; put 'put ''dGVQaWNrZXIpOkNlKz1wZS5sZWZ0LHRoaXMuZGF0ZVBpY2tlclN0eWxlLmxlZnQ9YCR7Q2V9cHhgfWVsc2UgdGhpcy5oaWRlRGF0ZXBpY2tlcigpfX1jbGFzcyBJcSBleHRlbmRzIE1xe3N0YXRpYyBnZXQgRURJVE9SX1RZUEUoKXtyZXR1cm4iZHJvcGRvd24ifXByZXBhcmUoYyxhLGQsaCxm''@;'; put 'put ''LHYpe3N1cGVyLnByZXBhcmUoYyxhLGQsaCxmLHYpLHRoaXMuY2VsbFByb3BlcnRpZXMuZmlsdGVyPSExLHRoaXMuY2VsbFByb3BlcnRpZXMuc3RyaWN0PSEwfX1hby5nZXRTaW5nbGV0b24oKS5hZGQoImJlZm9yZVZhbGlkYXRlIixmdW5jdGlvbihsLGMsYSl7Y29uc3QgZD10aGlzLnByb3BU''@;'; put 'put ''b0NvbChhKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGQpKXtjb25zdCBoPXRoaXMuZ2V0Q2VsbE1ldGEoYyxkKTtoLmVkaXRvcj09PUlxJiZ2b2lkIDA9PT1oLnN0cmljdCYmKGguZmlsdGVyPSExLGguc3RyaWN0PSEwKX19KTtjbGFzcyBmMmUgZXh0ZW5kcyBhN3tzdGF0aWMgZ2V0IEVESVRPUl9U''@;'; put 'put ''WVBFKCl7cmV0dXJuIm51bWVyaWMifX1jbGFzcyBwMmUgZXh0ZW5kcyBhN3tzdGF0aWMgZ2V0IEVESVRPUl9UWVBFKCl7cmV0dXJuInBhc3N3b3JkIn1jcmVhdGVFbGVtZW50cygpe3N1cGVyLmNyZWF0ZUVsZW1lbnRzKCksdGhpcy5URVhUQVJFQT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3Jl''@;'; put 'put ''YXRlRWxlbWVudCgiaW5wdXQiKSx0aGlzLlRFWFRBUkVBLnNldEF0dHJpYnV0ZSgidHlwZSIsInBhc3N3b3JkIiksdGhpcy5URVhUQVJFQS5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwiIiksdGhpcy5URVhUQVJFQS5jbGFzc05hbWU9ImhhbmRzb250YWJsZUlucHV0Iix0aGlzLnRl''@;'; put 'put ''eHRhcmVhU3R5bGU9dGhpcy5URVhUQVJFQS5zdHlsZSx0aGlzLnRleHRhcmVhU3R5bGUud2lkdGg9MCx0aGlzLnRleHRhcmVhU3R5bGUuaGVpZ2h0PTAsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmVm8odGhpcy5URVhUQVJFQSxbTTQoKV0pLHNmKHRoaXMuVEVYVEFSRUFfUEFS''@;'; put 'put ''RU5UKSx0aGlzLlRFWFRBUkVBX1BBUkVOVC5hcHBlbmRDaGlsZCh0aGlzLlRFWFRBUkVBKX19Y29uc3QgUnE9Imh0X2VkaXRvcl92aXNpYmxlIixnMmU9InNlbGVjdEVkaXRvciI7Y2xhc3MgbTJlIGV4dGVuZHMgQ2J7c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJzZWxlY3QifWlu''@;'; put 'put ''aXQoKXt0aGlzLnNlbGVjdD10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksdGhpcy5zZWxlY3Quc2V0QXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIsInRydWUiKSx0aGlzLnNlbGVjdC5zdHlsZS5kaXNwbGF5PSJub25lIixtaSh0aGlzLnNlbGVjdCwiaHRT''@;'; put 'put ''ZWxlY3RFZGl0b3IiKSx0aGlzLmhvdC5yb290RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdCksdGhpcy5yZWdpc3Rlckhvb2tzKCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5zZWxlY3QudmFsdWV9c2V0VmFsdWUoYyl7dGhpcy5zZWxlY3QudmFsdWU9Y31vcGVuKCl7dGhpcy5fb3Bl''@;'; put 'put ''bmVkPSEwLHRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSx0aGlzLnNlbGVjdC5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLnNldEFjdGl2ZUNvbnRleHROYW1lKCJlZGl0b3IiKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCl9Y2xvc2UoKXt0aGlzLl9vcGVu''@;'; put 'put ''ZWQ9ITEsdGhpcy5zZWxlY3Quc3R5bGUuZGlzcGxheT0ibm9uZSIsWW8odGhpcy5zZWxlY3QsUnEpJiZscyh0aGlzLnNlbGVjdCxScSksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5jbGVhckhvb2tzKCl9Zm9jdXMoKXt0aGlzLnNlbGVjdC5mb2N1cygpfXJlZ2lzdGVySG9va3Mo''@;'; put 'put ''KXt0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwoKT0+dGhpcy5yZWZyZXNoRGltZW5zaW9ucygpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsVmVydGljYWxseSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlckNvbHVtblJl''@;'; put 'put ''c2l6ZSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSksdGhpcy5hZGRIb29rKCJhZnRlclJvd1Jlc2l6ZSIsKCk9PnRoaXMucmVmcmVzaERpbWVuc2lvbnMoKSl9cHJlcGFyZShjLGEsZCxoLGYsdil7c3VwZXIucHJlcGFyZShjLGEsZCxoLGYsdik7Y29uc3QgUz10aGlzLmNlbGxQcm9w''@;'; put 'put ''ZXJ0aWVzLnNlbGVjdE9wdGlvbnM7bGV0IFY7Vj10aGlzLnByZXBhcmVPcHRpb25zKCJmdW5jdGlvbiI9PXR5cGVvZiBTP1ModGhpcy5yb3csdGhpcy5jb2wsdGhpcy5wcm9wKTpTKSxzZih0aGlzLnNlbGVjdCksQ3MoViwoUSxkZSk9Pntjb25zdCBwZT10aGlzLmhvdC5yb290RG9jdW1lbnQu''@;'; put 'put ''Y3JlYXRlRWxlbWVudCgiT1BUSU9OIik7cGUudmFsdWU9ZGUsWjgocGUsUSksdGhpcy5zZWxlY3QuYXBwZW5kQ2hpbGQocGUpfSl9cHJlcGFyZU9wdGlvbnMoYyl7bGV0IGE9e307aWYoQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IGQ9MCxoPWMubGVuZ3RoO2Q8aDtkKyspYVtjW2RdXT1jW2Rd''@;'; put 'put ''O2Vsc2Uib2JqZWN0Ij09dHlwZW9mIGMmJihhPWMpO3JldHVybiBhfXJlZnJlc2hWYWx1ZSgpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLnJvdyx0aGlzLnByb3ApO3RoaXMub3JpZ2luYWxWYWx1ZT1jLHRoaXMuc2V0VmFsdWUoYyksdGhpcy5yZWZyZXNoRGlt''@;'; put 'put ''ZW5zaW9ucygpfXJlZnJlc2hEaW1lbnNpb25zKCl7aWYodGhpcy5zdGF0ZSE9PXhjLkVESVRJTkcpcmV0dXJuO2lmKHRoaXMuVEQ9dGhpcy5nZXRFZGl0ZWRDZWxsKCksIXRoaXMuVEQpcmV0dXJuIHZvaWQgdGhpcy5jbG9zZSgpO2NvbnN0e3RvcDpjLHN0YXJ0OmEsd2lkdGg6ZCxoZWlnaHQ6''@;'; put 'put ''aH09dGhpcy5nZXRFZGl0ZWRDZWxsUmVjdCgpLGY9dGhpcy5zZWxlY3Quc3R5bGU7Zi5oZWlnaHQ9YCR7aH1weGAsZi53aWR0aD1gJHtkfXB4YCxmLnRvcD1gJHtjfXB4YCxmW3RoaXMuaG90LmlzUnRsKCk/InJpZ2h0IjoibGVmdCJdPWAke2F9cHhgLGYubWFyZ2luPSIwcHgiLG1pKHRoaXMu''@;'; put 'put ''c2VsZWN0LFJxKX1yZWdpc3RlclNob3J0Y3V0cygpe2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZWRpdG9yIiksZD17Z3JvdXA6ZzJlfTt0aGlzLmlzSW5GdWxsRWRpdE1vZGUoKSYmYS5hZGRTaG9ydGN1dHMoW3trZXlzOltbIkFycm93VXAiXV0s''@;'; put 'put ''Y2FsbGJhY2s6KCk9Pntjb25zdCBoPXRoaXMuc2VsZWN0LnNlbGVjdGVkSW5kZXgtMTtoPj0wJiYodGhpcy5zZWxlY3RbaF0uc2VsZWN0ZWQ9ITApfX0se2tleXM6W1siQXJyb3dEb3duIl1dLGNhbGxiYWNrOigpPT57Y29uc3QgaD10aGlzLnNlbGVjdC5zZWxlY3RlZEluZGV4KzE7aDw9dGhp''@;'; put 'put ''cy5zZWxlY3QubGVuZ3RoLTEmJih0aGlzLnNlbGVjdFtoXS5zZWxlY3RlZD0hMCl9fV0sZCl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImVkaXRvciIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoZzJlKX19Y2xhc3MgdjJl''@;'; put 'put ''IGV4dGVuZHMgYTd7c3RhdGljIGdldCBFRElUT1JfVFlQRSgpe3JldHVybiJ0aW1lIn1wcmVwYXJlKGMsYSxkLGgsZix2KXtzdXBlci5wcmVwYXJlKGMsYSxkLGgsZix2KSx0aGlzLlRFWFRBUkVBLmRpcj0ibHRyIn19ZnVuY3Rpb24gTHEobCxjLGEsZCxoLGYsdil7UHguYXBwbHkodGhpcyxb''@;'; put 'put ''bCxjLGEsZCxoLGYsdl0pLFo4KGMsZj8/IiIsITEpfWZ1bmN0aW9uIE1iKGwsYyxhLGQsaCxmLHYpe2NvbnN0e3Jvb3REb2N1bWVudDpTfT1sLFY9di5hbGxvd0h0bWw/THE6UDQsUT1TLmNyZWF0ZUVsZW1lbnQoIkRJViIpLGRlPWwuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncztpZihRLmNsYXNz''@;'; put 'put ''TmFtZT0iaHRBdXRvY29tcGxldGVBcnJvdyIsZGUmJlEuc2V0QXR0cmlidXRlKC4uLk00KCkpLFEuYXBwZW5kQ2hpbGQoUy5jcmVhdGVUZXh0Tm9kZSgiXHUyNWJjIikpLFYuYXBwbHkodGhpcyxbbCxjLGEsZCxoLGYsdl0pLGMuZmlyc3RDaGlsZHx8Yy5hcHBlbmRDaGlsZChTLmNyZWF0ZVRl''@;'; put 'put ''eHROb2RlKCJceGEwIikpLGMuaW5zZXJ0QmVmb3JlKFEsYy5maXJzdENoaWxkKSxtaShjLCJodEF1dG9jb21wbGV0ZSIpLCFsLmFjQXJyb3dMaXN0ZW5lcil7Y29uc3QgcGU9bmV3IHpoKGwpO2wuYWNBcnJvd0xpc3RlbmVyPWZ1bmN0aW9uKENlKXtZbyhDZS50YXJnZXQsImh0QXV0b2NvbXBs''@;'; put 'put ''ZXRlQXJyb3ciKSYmbC52aWV3Ll93dC5nZXRTZXR0aW5nKCJvbkNlbGxEYmxDbGljayIsbnVsbCxsLl9jcmVhdGVDZWxsQ29vcmRzKGEsZCksYyl9LHBlLmFkZEV2ZW50TGlzdGVuZXIobC5yb290RWxlbWVudCwibW91c2Vkb3duIixsLmFjQXJyb3dMaXN0ZW5lciksbC5hZGRIb29rT25jZSgi''@;'; put 'put ''YWZ0ZXJEZXN0cm95IiwoKT0+e3BlLmRlc3Ryb3koKX0pfX1mdW5jdGlvbiBPcShsLGMsYSxkLGgsZix2KXtNYi5hcHBseSh0aGlzLFtsLGMsYSxkLGgsZix2XSl9THEuUkVOREVSRVJfVFlQRT0iaHRtbCIsTWIuUkVOREVSRVJfVFlQRT0iYXV0b2NvbXBsZXRlIixPcS5SRU5ERVJFUl9UWVBF''@;'; put 'put ''PSJkcm9wZG93biI7Y29uc3QgXzJlPW5ldyBXZWFrTWFwLGIyZT1uZXcgV2Vha01hcCxlUWU9Imh0QmFkVmFsdWUiLHhiPSJkYXRhLXJvdyIsRWI9ImRhdGEtY29sIix0UWU9ImNoZWNrYm94UmVuZGVyZXIiO2Z1bmN0aW9uIFBxKGwsYyxhLGQsaCxmLHYpe2NvbnN0e3Jvb3REb2N1bWVudDpT''@;'; put 'put ''fT1sLFY9bC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzO1B4LmFwcGx5KHRoaXMsW2wsYyxhLGQsaCxmLHZdKSxmdW5jdGlvbiBuUWUobCl7bGV0IGM9YjJlLmdldChsKTtpZighYyl7Y29uc3R7cm9vdEVsZW1lbnQ6YX09bDtjPW5ldyB6aChsKSxjLmFkZEV2ZW50TGlzdGVuZXIoYSwiY2xpY2si''@;'; put 'put ''LGQ9PmZ1bmN0aW9uIHNRZShsLGMpe2NvbnN0e3RhcmdldDphfT1sO2lmKCFGcShhKXx8IWEuaGFzQXR0cmlidXRlKHhiKXx8IWEuaGFzQXR0cmlidXRlKEViKSlyZXR1cm47Y29uc3QgZD1wYXJzZUludChhLmdldEF0dHJpYnV0ZSh4YiksMTApLGg9cGFyc2VJbnQoYS5nZXRBdHRyaWJ1dGUo''@;'; put 'put ''RWIpLDEwKTtjLmdldENlbGxNZXRhKGQsaCkucmVhZE9ubHkmJmwucHJldmVudERlZmF1bHQoKX0oZCxsKSksYy5hZGRFdmVudExpc3RlbmVyKGEsIm1vdXNldXAiLGQ9PmZ1bmN0aW9uIG9RZShsLGMpe2NvbnN0e3RhcmdldDphfT1sO0ZxKGEpJiYoIWEuaGFzQXR0cmlidXRlKHhiKXx8IWEu''@;'; put 'put ''aGFzQXR0cmlidXRlKEViKXx8c2V0VGltZW91dChjLmxpc3RlbiwxMCkpfShkLGwpKSxjLmFkZEV2ZW50TGlzdGVuZXIoYSwiY2hhbmdlIixkPT5mdW5jdGlvbiBhUWUobCxjKXtjb25zdHt0YXJnZXQ6YX09bDtpZighRnEoYSl8fCFhLmhhc0F0dHJpYnV0ZSh4Yil8fCFhLmhhc0F0dHJpYnV0''@;'; put 'put ''ZShFYikpcmV0dXJuO2NvbnN0IGQ9cGFyc2VJbnQoYS5nZXRBdHRyaWJ1dGUoeGIpLDEwKSxoPXBhcnNlSW50KGEuZ2V0QXR0cmlidXRlKEViKSwxMCksZj1jLmdldENlbGxNZXRhKGQsaCk7aWYoIWYucmVhZE9ubHkpe2xldCB2PW51bGw7dj1sLnRhcmdldC5jaGVja2VkP3ZvaWQgMD09PWYu''@;'; put 'put ''dW5jaGVja2VkVGVtcGxhdGV8fGYuY2hlY2tlZFRlbXBsYXRlOnZvaWQgMCE9PWYudW5jaGVja2VkVGVtcGxhdGUmJmYudW5jaGVja2VkVGVtcGxhdGUsYy5zZXREYXRhQXRDZWxsKGQsaCx2KX19KGQsbCkpLGIyZS5zZXQobCxjKX19KGwpO2xldCBRPWZ1bmN0aW9uIHJRZShsKXtjb25zdCBj''@;'; put 'put ''PWwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gYy5jbGFzc05hbWU9Imh0Q2hlY2tib3hSZW5kZXJlcklucHV0IixjLnR5cGU9ImNoZWNrYm94IixjLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGMuY2xvbmVOb2RlKCExKX0oUyk7Y29uc3QgZGU9di5sYWJlbDtsZXQgcGU9''@;'; put 'put ''ITE7aWYodHlwZW9mIHYuY2hlY2tlZFRlbXBsYXRlPiJ1IiYmKHYuY2hlY2tlZFRlbXBsYXRlPSEwKSx0eXBlb2Ygdi51bmNoZWNrZWRUZW1wbGF0ZT4idSImJih2LnVuY2hlY2tlZFRlbXBsYXRlPSExKSxzZihjKSxmPT09di5jaGVja2VkVGVtcGxhdGV8fGljKGYpLnRvTG9jYWxlTG93ZXJD''@;'; put 'put ''YXNlKHYubG9jYWxlKT09PWljKHYuY2hlY2tlZFRlbXBsYXRlKS50b0xvY2FsZUxvd2VyQ2FzZSh2LmxvY2FsZSk/US5jaGVja2VkPSEwOmY9PT12LnVuY2hlY2tlZFRlbXBsYXRlfHxpYyhmKS50b0xvY2FsZUxvd2VyQ2FzZSh2LmxvY2FsZSk9PT1pYyh2LnVuY2hlY2tlZFRlbXBsYXRlKS50''@;'; put 'put ''b0xvY2FsZUxvd2VyQ2FzZSh2LmxvY2FsZSk/US5jaGVja2VkPSExOm9jKGYpP21pKFEsIm5vVmFsdWUiKTooUS5zdHlsZS5kaXNwbGF5PSJub25lIixtaShRLGVRZSkscGU9ITApLFZvKFEsW1t4YixhXSxbRWIsZF1dKSxWJiZWbyhRLFtsVyhsLmdldFRyYW5zbGF0ZWRQaHJhc2UoUS5jaGVj''@;'; put 'put ''a2VkP2VxOnRxKSksJFplKFEuY2hlY2tlZCksalplKCldKSwhcGUmJmRlKXtsZXQgZXQ9IiI7aWYoZGUudmFsdWUpZXQ9ImZ1bmN0aW9uIj09dHlwZW9mIGRlLnZhbHVlP2RlLnZhbHVlLmNhbGwodGhpcyxhLGQsaCxmKTpkZS52YWx1ZTtlbHNlIGlmKGRlLnByb3BlcnR5KXtjb25zdCBodD1s''@;'; put 'put ''LmdldERhdGFBdFJvd1Byb3AoYSxkZS5wcm9wZXJ0eSk7ZXQ9bnVsbCE9PWh0P2h0OiIifWNvbnN0IGR0PWZ1bmN0aW9uIGlRZShsLGMsYSl7Y29uc3QgZD1sLmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7cmV0dXJuIGQuY2xhc3NOYW1lPSJodENoZWNrYm94UmVuZGVyZXJMYWJlbCAiKyhhPyJm''@;'; put 'put ''dWxsV2lkdGgiOiIiKSxkLmFwcGVuZENoaWxkKGwuY3JlYXRlVGV4dE5vZGUoYykpLGQuY2xvbmVOb2RlKCEwKX0oUyxldCwhMCE9PWRlLnNlcGFyYXRlZCk7ImJlZm9yZSI9PT1kZS5wb3NpdGlvbj9kZS5zZXBhcmF0ZWQ/KGMuYXBwZW5kQ2hpbGQoZHQpLGMuYXBwZW5kQ2hpbGQoUSkpOihk''@;'; put 'put ''dC5hcHBlbmRDaGlsZChRKSxRPWR0KTooIWRlLnBvc2l0aW9ufHwiYWZ0ZXIiPT09ZGUucG9zaXRpb24pJiYoZGUuc2VwYXJhdGVkPyhjLmFwcGVuZENoaWxkKFEpLGMuYXBwZW5kQ2hpbGQoZHQpKTooZHQuaW5zZXJ0QmVmb3JlKFEsZHQuZmlyc3RDaGlsZCksUT1kdCkpfWZ1bmN0aW9uIE9l''@;'; put 'put ''KCl7bGV0IGV0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Y29uc3QgZHQ9bC5nZXRTZWxlY3RlZFJhbmdlKCksaHQ9W107bGV0IE10PVtdLFF0PTA7aWYoZHQpe2ZvcihsZXQgbG49MDtsbjxkdC5sZW5ndGg7bG4rKyl7Y29uc3R7cm93''@;'; put 'put ''OnZuLGNvbDp3bn09ZHRbbG5dLmdldFRvcFN0YXJ0Q29ybmVyKCkse3Jvdzpucixjb2w6dnJ9PWR0W2xuXS5nZXRCb3R0b21FbmRDb3JuZXIoKTtmb3IobGV0IE1pPXZuO01pPD1ucjtNaSs9MSlmb3IobGV0IFBpPXduO1BpPD12cjtQaSs9MSl7Y29uc3QgeXI9bC5nZXRDZWxsTWV0YShNaSxQ''@;'; put 'put ''aSksX2k9e2NoZWNrZWRUZW1wbGF0ZTp5ci5jaGVja2VkVGVtcGxhdGUsdW5jaGVja2VkVGVtcGxhdGU6eXIudW5jaGVja2VkVGVtcGxhdGV9O2lmKCJjaGVja2JveCIhPT15ci50eXBlKXJldHVybjtpZighMD09PXlyLnJlYWRPbmx5KWNvbnRpbnVlO3R5cGVvZiB5ci5jaGVja2VkVGVtcGxh''@;'; put 'put ''dGU+InUiJiYoeXIuY2hlY2tlZFRlbXBsYXRlPSEwKSx0eXBlb2YgeXIudW5jaGVja2VkVGVtcGxhdGU+InUiJiYoeXIudW5jaGVja2VkVGVtcGxhdGU9ITEpO2NvbnN0IFVyPWwuZ2V0RGF0YUF0Q2VsbChNaSxQaSk7ITE9PT1ldD9beXIuY2hlY2tlZFRlbXBsYXRlLHlyLmNoZWNrZWRUZW1w''@;'; put 'put ''bGF0ZS50b1N0cmluZygpXS5pbmNsdWRlcyhVcik/TXQucHVzaChbTWksUGkseXIudW5jaGVja2VkVGVtcGxhdGUsX2ldKTpbeXIudW5jaGVja2VkVGVtcGxhdGUseXIudW5jaGVja2VkVGVtcGxhdGUudG9TdHJpbmcoKSxudWxsLHZvaWQgMF0uaW5jbHVkZXMoVXIpJiZNdC5wdXNoKFtNaSxQ''@;'; put 'put ''aSx5ci5jaGVja2VkVGVtcGxhdGUsX2ldKTpNdC5wdXNoKFtNaSxQaSx5ci51bmNoZWNrZWRUZW1wbGF0ZSxfaV0pLFF0Kz0xfWh0LnB1c2goUXQpLFF0PTB9TXQ9TXQuZXZlcnkobG49PntsZXRbLCx2bl09bG47cmV0dXJuIHZuPT09TXRbMF1bMl19KT9NdC5tYXAobG49PntsZXRbdm4sd24s''@;'; put 'put ''bnJdPWxuO3JldHVyblt2bix3bixucl19KTpNdC5tYXAobG49PntsZXRbdm4sd24sLG5yXT1sbjtyZXR1cm5bdm4sd24sbnIuY2hlY2tlZFRlbXBsYXRlXX0pLE10Lmxlbmd0aD4wJiZodC5mb3JFYWNoKGxuPT57Y29uc3Qgdm49TXQuc3BsaWNlKDAsbG4pO2wuc2V0RGF0YUF0Q2VsbCh2bil9''@;'; put 'put ''KX19ZnVuY3Rpb24gWWUoKXtjb25zdCBldD1sLmdldFNlbGVjdGVkUmFuZ2UoKTtpZihldCl7Zm9yKGxldCBkdD0wO2R0PGV0Lmxlbmd0aDtkdCsrKXtjb25zdCBodD1ldFtkdF0uZ2V0VG9wU3RhcnRDb3JuZXIoKSxNdD1ldFtkdF0uZ2V0Qm90dG9tRW5kQ29ybmVyKCk7Zm9yKGxldCBRdD1o''@;'; put 'put ''dC5yb3c7UXQ8PU10LnJvdztRdCsrKWZvcihsZXQgbG49aHQuY29sO2xuPD1NdC5jb2w7bG4rKyl7Y29uc3Qgdm49bC5nZXRDZWxsTWV0YShRdCxsbik7aWYoImNoZWNrYm94IiE9PXZuLnR5cGUpcmV0dXJuITE7Y29uc3Qgd249bC5nZXRDZWxsKFF0LGxuKTtpZihudWxsPT13bilyZXR1cm4h''@;'; put 'put ''MDtpZih3bi5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFt0eXBlPWNoZWNrYm94XSIpLmxlbmd0aD4wJiYhdm4ucmVhZE9ubHkpcmV0dXJuITB9fXJldHVybiExfX0oIWRlfHxkZSYmIWRlLnNlcGFyYXRlZCkmJmMuYXBwZW5kQ2hpbGQoUSkscGUmJmMuYXBwZW5kQ2hpbGQoUy5jcmVhdGVUZXh0''@;'; put 'put ''Tm9kZSgiI2JhZC12YWx1ZSMiKSksXzJlLmhhcyhsKXx8KF8yZS5zZXQobCwhMCksZnVuY3Rpb24gQ2UoKXtsLmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5hZGRTaG9ydGN1dHMoW3trZXlzOltbInNwYWNlIl1dLGNhbGxiYWNrOigpPT4oT2UoKSwhWWUoKSkscnVu''@;'; put 'put ''T25seUlmOigpPT57dmFyIE10O3JldHVybiBudWxsPT09KE10PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PU10P3ZvaWQgMDpNdC5oaWdobGlnaHQuaXNDZWxsKCl9fSx7a2V5czpbWyJlbnRlciJdXSxjYWxsYmFjazooKT0+KE9lKCksIVllKCkpLHJ1bk9ubHlJZjooKT0+''@;'; put 'put ''e2NvbnN0IE10PWwuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4gbC5nZXRTZXR0aW5ncygpLmVudGVyQmVnaW5zRWRpdGluZyYmTXQ/LmlzU2luZ2xlKCkmJk10LmhpZ2hsaWdodC5pc0NlbGwoKX19LHtrZXlzOltbImRlbGV0ZSJdLFsiYmFja3NwYWNlIl1dLGNhbGxiYWNrOigpPT4o''@;'; put 'put ''T2UoITApLCFZZSgpKSxydW5Pbmx5SWY6KCk9Pnt2YXIgTXQ7cmV0dXJuIG51bGw9PT0oTXQ9bC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09TXQ/dm9pZCAwOk10LmhpZ2hsaWdodC5pc0NlbGwoKX19XSx7Z3JvdXA6dFFlLHJlbGF0aXZlVG9Hcm91cDpZbSxwb3NpdGlvbjoi''@;'; put 'put ''YmVmb3JlIn0pfSgpKX1mdW5jdGlvbiBGcShsKXtyZXR1cm4iSU5QVVQiPT09bC50YWdOYW1lJiYiY2hlY2tib3giPT09bC5nZXRBdHRyaWJ1dGUoInR5cGUiKX1mdW5jdGlvbiBOcShsLGMsYSxkLGgsZix2KXtNYi5hcHBseSh0aGlzLFtsLGMsYSxkLGgsZix2XSl9YW8uZ2V0U2luZ2xldG9u''@;'; put 'put ''KCkuYWRkKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiLGZ1bmN0aW9uKGwsYyxhKXtjb25zdHtsYWJlbDpkLHR5cGU6aCxyb3c6Zixjb2x1bW46dixwcm9wOlN9PWM7aWYoImNoZWNrYm94Ij09PWgpe2lmKGQpe2NvbnN0e3ZhbHVlOlYscHJvcGVydHk6UX09ZDtsZXQgZGU9YTtpZihWKWRl''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBWP1YoZix2LFMsYSk6VjtlbHNlIGlmKFEpe2NvbnN0IHBlPXRoaXMuZ2V0RGF0YUF0Um93UHJvcChmLFEpO2RlPW51bGwhPT1wZT9wZTphfWw9ZGV9cmV0dXJuIGx9fSksUHEuUkVOREVSRVJfVFlQRT0iY2hlY2tib3giLE5xLlJFTkRFUkVSX1RZUEU9Imhh''@;'; put 'put ''bmRzb250YWJsZSI7dmFyICRtPVIoMjUzNjcpLGNRZT1SLm4oJG0pO2Z1bmN0aW9uIHcyZShsLGMpe2lmKEwwKGwpKXtjb25zdCBhPWMubnVtZXJpY0Zvcm1hdCxkPWEmJmEuY3VsdHVyZXx8Ii0iLGg9YSYmYS5wYXR0ZXJuO2lmKHR5cGVvZiBkPCJ1IiYmISRtLmxhbmd1YWdlcygpW2RdKXtj''@;'; put 'put ''b25zdCBmPWQucmVwbGFjZSgiLSIsIiIpLHY9JG0uYWxsTGFuZ3VhZ2VzPyRtLmFsbExhbmd1YWdlc1tkXTokbVtmXTt2JiYkbS5yZWdpc3Rlckxhbmd1YWdlKHYpfSRtLnNldExhbmd1YWdlKGQpLGw9JG0obCkuZm9ybWF0KGh8fCIwIil9cmV0dXJuIGx9ZnVuY3Rpb24gSHEobCxjLGEsZCxo''@;'; put 'put ''LGYsdil7bGV0IFM9ZjtpZihMMChTKSl7Y29uc3QgVj12LmNsYXNzTmFtZXx8IiIsUT1WLmxlbmd0aD9WLnNwbGl0KCIgIik6W107Uz13MmUoUyx2KSxRLmluZGV4T2YoImh0TGVmdCIpPDAmJlEuaW5kZXhPZigiaHRDZW50ZXIiKTwwJiZRLmluZGV4T2YoImh0UmlnaHQiKTwwJiZRLmluZGV4''@;'; put 'put ''T2YoImh0SnVzdGlmeSIpPDAmJlEucHVzaCgiaHRSaWdodCIpLFEuaW5kZXhPZigiaHROdW1lcmljIik8MCYmUS5wdXNoKCJodE51bWVyaWMiKSx2LmNsYXNzTmFtZT1RLmpvaW4oIiAiKSxjLmRpcj0ibHRyIn1QNChsLGMsYSxkLGgsUyx2KX1mdW5jdGlvbiBWcShsLGMsYSxkLGgsZix2KXtQ''@;'; put 'put ''NC5hcHBseSh0aGlzLFtsLGMsYSxkLGgsZix2XSk7Y29uc3QgVj12Lmhhc2hTeW1ib2x8fCIqIjtsZXQgUT0iIjtnbygodi5oYXNoTGVuZ3RofHxjLmlubmVySFRNTC5sZW5ndGgpLTEsKCk9PntRKz1WfSksWjgoYyxRKX1mdW5jdGlvbiBCcShsLGMsYSxkLGgsZix2KXtQNC5hcHBseSh0aGlz''@;'; put 'put ''LFtsLGMsYSxkLGgsZix2XSl9ZnVuY3Rpb24ganEobCxjLGEsZCxoLGYsdil7UDQuYXBwbHkodGhpcyxbbCxjLGEsZCxoLGYsdl0pLGMuZGlyPSJsdHIifWZ1bmN0aW9uIEZ4KGwsYyl7bGV0IGE9bDtudWxsPT1hJiYoYT0iIiksdGhpcy5hbGxvd0VtcHR5JiYiIj09PWE/YyghMCk6dGhpcy5z''@;'; put 'put ''dHJpY3QmJnRoaXMuc291cmNlPyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnNvdXJjZT90aGlzLnNvdXJjZShhLEMyZShhLGMpKTpDMmUoYSxjKSh0aGlzLnNvdXJjZSk6YyghMCl9ZnVuY3Rpb24gQzJlKGwsYyl7Y29uc3QgYT1sO3JldHVybiBmdW5jdGlvbihkKXtsZXQgaD0hMTtmb3IobGV0''@;'; put 'put ''IGY9MCx2PWQubGVuZ3RoO2Y8djtmKyspaWYoYT09PWRbZl0pe2g9ITA7YnJlYWt9YyhoKX19ZnVuY3Rpb24gUzJlKGwpe2NvbnN0IGM9bmV3IERhdGUobCk7cmV0dXJuIGlzTmFOKG5ldyBEYXRlKGAke2x9VDAwOjAwYCkuZ2V0RGF0ZSgpKT9jOm5ldyBEYXRlKGMuZ2V0VGltZSgpKzZlNCpj''@;'; put 'put ''LmdldFRpbWV6b25lT2Zmc2V0KCkpfWZ1bmN0aW9uIHZPKGwsYyl7Y29uc3QgYT1aMWUodTJlLHRoaXMuaW5zdGFuY2UpO2xldCBkPWwsaD0hMDtudWxsPT1kJiYoZD0iIik7bGV0IGY9YXMoZCx0aGlzLmRhdGVGb3JtYXR8fGEuZGVmYXVsdERhdGVGb3JtYXQsITApLmlzVmFsaWQoKSx2PWFz''@;'; put 'put ''KG5ldyBEYXRlKGQpKS5pc1ZhbGlkKCl8fGY7aWYodGhpcy5hbGxvd0VtcHR5JiYiIj09PWQmJih2PSEwLGY9ITApLHZ8fChoPSExKSwhdiYmZiYmKGg9ITApLHYmJiFmKWlmKCEwPT09dGhpcy5jb3JyZWN0Rm9ybWF0KXtjb25zdCBTPWZ1bmN0aW9uIHZRZShsLGMpe2NvbnN0IGE9YXMoUzJl''@;'; put 'put ''KGwpKSxkPWFzKGwsYyksaD1sLnNlYXJjaCgvW0Etel0vZyk+LTE7bGV0IGY7cmV0dXJuIGY9YS5pc1ZhbGlkKCkmJmEuZm9ybWF0KCJ4Iik9PT1kLmZvcm1hdCgieCIpfHwhZC5pc1ZhbGlkKCl8fGg/YTpkLGYuZm9ybWF0KGMpfShkLHRoaXMuZGF0ZUZvcm1hdCk7dGhpcy5pbnN0YW5jZS5z''@;'; put 'put ''ZXREYXRhQXRDZWxsKHRoaXMudmlzdWFsUm93LHRoaXMudmlzdWFsQ29sLFMsImRhdGVWYWxpZGF0b3IiKSxoPSEwfWVsc2UgaD0hMTtjKGgpfWZ1bmN0aW9uIHpxKGwsYyl7RnguYXBwbHkodGhpcyxbbCxjXSl9ZnVuY3Rpb24gVXEobCxjKXtsZXQgYT1sO251bGw9PWEmJihhPSIiKSxjKCEo''@;'; put 'put ''IXRoaXMuYWxsb3dFbXB0eXx8IiIhPT1hKXx8IiIhPT1hJiZMMChsKSl9SHEuUkVOREVSRVJfVFlQRT0ibnVtZXJpYyIsVnEuUkVOREVSRVJfVFlQRT0icGFzc3dvcmQiLEJxLlJFTkRFUkVSX1RZUEU9InNlbGVjdCIsanEuUkVOREVSRVJfVFlQRT0idGltZSIsRnguVkFMSURBVE9SX1RZUEU9''@;'; put 'put ''ImF1dG9jb21wbGV0ZSIsdk8uVkFMSURBVE9SX1RZUEU9ImRhdGUiLHpxLlZBTElEQVRPUl9UWVBFPSJkcm9wZG93biIsVXEuVkFMSURBVE9SX1RZUEU9Im51bWVyaWMiO2NvbnN0IHlRZT1bIllZWVktTU0tRERUSEg6bW06c3MuU1NTWiIsIlgiLCJ4Il07ZnVuY3Rpb24gX08obCxjKXtjb25z''@;'; put 'put ''dCBhPXRoaXMudGltZUZvcm1hdHx8Img6bW06c3MgYSI7bGV0IGQ9ITAsaD1sO251bGw9PT1oJiYoaD0iIiksaD0vXlxkezMsfSQvLnRlc3QoaCk/cGFyc2VJbnQoaCwxMCk6aDtjb25zdCBmPS9eXGR7MSwyfSQvLnRlc3QoaCk7ZiYmKGgrPSI6MDAiKTtjb25zdCB2PWFzKGgseVFlLCEwKS5p''@;'; put 'put ''c1ZhbGlkKCk/YXMoaCk6YXMoaCxhKTtsZXQgUz12LmlzVmFsaWQoKSxWPWFzKGgsYSwhMCkuaXNWYWxpZCgpJiYhZjtpZih0aGlzLmFsbG93RW1wdHkmJiIiPT09aCYmKFM9ITAsVj0hMCksU3x8KGQ9ITEpLCFTJiZWJiYoZD0hMCksUyYmIVYpaWYoITA9PT10aGlzLmNvcnJlY3RGb3JtYXQp''@;'; put 'put ''e2NvbnN0IFE9di5mb3JtYXQoYSk7dGhpcy5pbnN0YW5jZS5zZXREYXRhQXRDZWxsKHRoaXMudmlzdWFsUm93LHRoaXMudmlzdWFsQ29sLFEsInRpbWVWYWxpZGF0b3IiKSxkPSEwfWVsc2UgZD0hMTtjKGQpfV9PLlZBTElEQVRPUl9UWVBFPSJ0aW1lIjtjb25zdCBTUWU9e0NFTExfVFlQRToi''@;'; put 'put ''YXV0b2NvbXBsZXRlIixlZGl0b3I6TXEscmVuZGVyZXI6TWIsdmFsaWRhdG9yOkZ4fSxNUWU9e0NFTExfVFlQRToiY2hlY2tib3giLGVkaXRvcjpvMmUscmVuZGVyZXI6UHF9O2Z1bmN0aW9uIE0yZShsLGMsYSxkLGgsZix2KXtNYi5hcHBseSh0aGlzLFtsLGMsYSxkLGgsZix2XSl9TTJlLlJF''@;'; put 'put ''TkRFUkVSX1RZUEU9ImRhdGUiO2NvbnN0IEVRZT17Q0VMTF9UWVBFOiJkYXRlIixlZGl0b3I6aDJlLHJlbmRlcmVyOk0yZSx2YWxpZGF0b3I6dk99LFRRZT17Q0VMTF9UWVBFOiJkcm9wZG93biIsZWRpdG9yOklxLHJlbmRlcmVyOk9xLHZhbGlkYXRvcjp6cX0sa1FlPXtDRUxMX1RZUEU6Imhh''@;'; put 'put ''bmRzb250YWJsZSIsZWRpdG9yOkNxLHJlbmRlcmVyOk5xfSxBUWU9e0NFTExfVFlQRToibnVtZXJpYyIsZWRpdG9yOmYyZSxyZW5kZXJlcjpIcSx2YWxpZGF0b3I6VXEsZGF0YVR5cGU6Im51bWJlciJ9LERRZT17Q0VMTF9UWVBFOiJwYXNzd29yZCIsZWRpdG9yOnAyZSxyZW5kZXJlcjpWcSxj''@;'; put 'put ''b3B5YWJsZTohMX0sSVFlPXtDRUxMX1RZUEU6InNlbGVjdCIsZWRpdG9yOm0yZSxyZW5kZXJlcjpCcX0sUlFlPXtDRUxMX1RZUEU6InRpbWUiLGVkaXRvcjp2MmUscmVuZGVyZXI6anEsdmFsaWRhdG9yOl9PfTtmdW5jdGlvbiB4MmUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFRiKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBGUWUobCl7dmFyIGM9ZnVuY3Rpb24gTlFlKGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbCly''@;'; put 'put ''ZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1p''@;'; put 'put ''dGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIGtiKGwsYyl7cmV0dXJuIGwuZ2V0KEUyZShsLGMpKX1mdW5jdGlvbiBFMmUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfWNvbnN0IFQyZT1uZXcgTWFwKFtbInBsdWdpbiIsZnVuY3Rpb24gSlllKGwpe3JldHVybiEhYXgobCl9XSxbImNlbGwtdHlwZSIsa2hlXSxbImVkaXRvciIsVTFlXSxbInJlbmRl''@;'; put 'put ''cmVyIix0ZGVdLFsidmFsaWRhdG9yIixuZGVdXSksWnE9W107bGV0IGozPW51bGw7dmFyIGM3PW5ldyBXZWFrTWFwLGsyZT1uZXcgV2Vha1NldDtjbGFzcyBkYXtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4iYmFzZSJ9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1cm5bdGhp''@;'; put 'put ''cy5QTFVHSU5fS0VZXX1jb25zdHJ1Y3RvcihjKXsoZnVuY3Rpb24gT1FlKGwsYyl7eDJlKGwsYyksYy5hZGQobCl9KSh0aGlzLGsyZSksVGIodGhpcywiZXZlbnRNYW5hZ2VyIixuZXcgemgodGhpcykpLFRiKHRoaXMsInBsdWdpbk5hbWUiLG51bGwpLFRiKHRoaXMsInBsdWdpbnNJbml0aWFs''@;'; put 'put ''aXplZENhbGxiYWNrcyIsW10pLFRiKHRoaXMsImlzUGx1Z2luc1JlYWR5IiwhMSksVGIodGhpcywiZW5hYmxlZCIsITEpLFRiKHRoaXMsImluaXRpYWxpemVkIiwhMSksZnVuY3Rpb24gUFFlKGwsYyxhKXt4MmUobCxjKSxjLnNldChsLGEpfSh0aGlzLGM3LHt9KSxJMyh0aGlzLCJob3QiLGMs''@;'; put 'put ''e3dyaXRhYmxlOiExfSksajM9bnVsbCx0aGlzLmhvdC5hZGRIb29rKCJhZnRlclBsdWdpbnNJbml0aWFsaXplZCIsKCk9PnRoaXMub25BZnRlclBsdWdpbnNJbml0aWFsaXplZCgpKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlclVwZGF0ZVNldHRpbmdzIixhPT50aGlzLm9uVXBkYXRlU2V0dGlu''@;'; put 'put ''Z3MoYSkpLHRoaXMuaG90LmFkZEhvb2soImJlZm9yZUluaXQiLCgpPT50aGlzLmluaXQoKSl9aW5pdCgpe3RoaXMucGx1Z2luTmFtZT10aGlzLmhvdC5nZXRQbHVnaW5OYW1lKHRoaXMpO2NvbnN0IGM9dGhpcy5jb25zdHJ1Y3Rvci5QTFVHSU5fREVQUyxhPUFycmF5LmlzQXJyYXkoYyk/Yzpb''@;'; put 'put ''XTtpZihhLmxlbmd0aD4wKXtjb25zdCBoPVtdO2lmKGEuZm9yRWFjaChmPT57Y29uc3RbdixTXT1mLnNwbGl0KCI6Iik7aWYoIVQyZS5oYXModikpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHBsdWdpbiBkZXBlbmRlbmN5IHR5cGUgIiR7dn0iIHdhcyBmb3VuZC5gKTtUMmUuZ2V0KHYpKFMp''@;'; put 'put ''fHxoLnB1c2goYCAtICR7U30gKCR7dn0pYCl9KSxoLmxlbmd0aD4wKXtjb25zdCBmPVtgVGhlICR7dGhpcy5wbHVnaW5OYW1lfSBwbHVnaW4gcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBtb2R1bGVzOlxuYCxgJHtoLmpvaW4oIlxuIil9XG5gXS5qb2luKCIiKTtacS5wdXNoKGYpfX1pZihqM3x8''@;'; put 'put ''KGozPVVXKCkpLGozLmluZGV4T2YoIlVuZG9SZWRvIik+PTAmJmozLnNwbGljZShqMy5pbmRleE9mKCJVbmRvUmVkbyIpLDEpLGozLmluZGV4T2YodGhpcy5wbHVnaW5OYW1lKT49MCYmajMuc3BsaWNlKGozLmluZGV4T2YodGhpcy5wbHVnaW5OYW1lKSwxKSx0aGlzLmhvdC5hZGRIb29rT25j''@;'; put 'put ''ZSgiYWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQiLCgpPT57dGhpcy5pc0VuYWJsZWQmJnRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZW5hYmxlUGx1Z2luKCl9KSwwPT09ajMubGVuZ3RoKXtpZihacS5sZW5ndGg+MCl7Y29uc3QgaD1bYCR7WnEuam9pbigiXG4iKX1cbmAsIllvdSBoYXZlIHRvIGlt''@;'; put 'put ''cG9ydCBhbmQgcmVnaXN0ZXIgdGhlbSBtYW51YWxseS4iXS5qb2luKCIiKTt0aHJvdyBuZXcgRXJyb3IoaCl9dGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGx1Z2luc0luaXRpYWxpemVkIil9dGhpcy5pbml0aWFsaXplZD0hMH1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWQ9ITB9ZGlzYWJs''@;'; put 'put ''ZVBsdWdpbigpe3ZhciBjO251bGw9PT0oYz10aGlzLmV2ZW50TWFuYWdlcil8fHZvaWQgMD09PWN8fGMuY2xlYXIoKSx0aGlzLmNsZWFySG9va3MoKSx0aGlzLmVuYWJsZWQ9ITF9YWRkSG9vayhjLGEsZCl7a2IoYzcsdGhpcylbY109a2IoYzcsdGhpcylbY118fFtdO2NvbnN0IGg9a2IoYzcs''@;'; put 'put ''dGhpcylbY107dGhpcy5ob3QuYWRkSG9vayhjLGEsZCksaC5wdXNoKGEpLGtiKGM3LHRoaXMpW2NdPWh9cmVtb3ZlSG9va3MoYyl7VG4oa2IoYzcsdGhpcylbY118fFtdLGE9Pnt0aGlzLmhvdC5yZW1vdmVIb29rKGMsYSl9KX1jbGVhckhvb2tzKCl7Y29uc3QgYz1rYihjNyx0aGlzKTtDcyhj''@;'; put 'put ''LChhLGQpPT50aGlzLnJlbW92ZUhvb2tzKGQpKSxjLmxlbmd0aD0wfWNhbGxPblBsdWdpbnNSZWFkeShjKXt0aGlzLmlzUGx1Z2luc1JlYWR5P2MoKTp0aGlzLnBsdWdpbnNJbml0aWFsaXplZENhbGxiYWNrcy5wdXNoKGMpfW9uQWZ0ZXJQbHVnaW5zSW5pdGlhbGl6ZWQoKXtUbih0aGlzLnBs''@;'; put 'put ''dWdpbnNJbml0aWFsaXplZENhbGxiYWNrcyxjPT5jKCkpLHRoaXMucGx1Z2luc0luaXRpYWxpemVkQ2FsbGJhY2tzLmxlbmd0aD0wLHRoaXMuaXNQbHVnaW5zUmVhZHk9ITB9b25VcGRhdGVTZXR0aW5ncyhjKXtjb25zdCBhPUUyZShrMmUsdGhpcyxWUWUpLmNhbGwodGhpcyxjKTt0aGlzLmlz''@;'; put 'put ''RW5hYmxlZCYmKHRoaXMuZW5hYmxlZCYmIXRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZGlzYWJsZVBsdWdpbigpLCF0aGlzLmVuYWJsZWQmJnRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5lbmFibGVkJiZ0aGlzLmlzRW5hYmxlZCgpJiZhJiZ0aGlzLnVwZGF0ZVBs''@;'; put 'put ''dWdpbihjKSl9dXBkYXRlUGx1Z2luKCl7fWRlc3Ryb3koKXt2YXIgYztudWxsPT09KGM9dGhpcy5ldmVudE1hbmFnZXIpfHx2b2lkIDA9PT1jfHxjLmRlc3Ryb3koKSx0aGlzLmNsZWFySG9va3MoKSxDcyh0aGlzLChhLGQpPT57ImhvdCIhPT1kJiYodGhpc1tkXT1udWxsKX0pLGRlbGV0ZSB0''@;'; put 'put ''aGlzLnQsZGVsZXRlIHRoaXMuaG90fX1mdW5jdGlvbiBWUWUobCl7aWYoIWwpcmV0dXJuITE7Y29uc3QgYz10aGlzLmNvbnN0cnVjdG9yLlNFVFRJTkdfS0VZUztpZigiYm9vbGVhbiI9PXR5cGVvZiBjKXJldHVybiBjO2ZvcihsZXQgYT0wO2E8Yy5sZW5ndGg7YSsrKWlmKHZvaWQgMCE9PWxb''@;'; put 'put ''Y1thXV0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdTcobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEJRZShsKXt2YXIgYz1mdW5jdGlvbiBqUWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAh''@;'; put 'put ''PT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJl''@;'; put 'put ''cikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgWXE9Y2xhc3Mg''@;'; put 'put ''elFle2NvbnN0cnVjdG9yKGMpe3U3KHRoaXMsImhvdCIsbnVsbCksdTcodGhpcywiY29udGFpbmVyIixudWxsKSx1Nyh0aGlzLCJpbmplY3RlZCIsITEpLHU3KHRoaXMsInJvd3MiLFtdKSx1Nyh0aGlzLCJjb2x1bW5zIixbXSksdTcodGhpcywic2FtcGxlcyIsbnVsbCksdTcodGhpcywic2V0''@;'; put 'put ''dGluZ3MiLHt1c2VIZWFkZXJzOiEwfSksdGhpcy5ob3Q9Y31hZGRSb3coYyxhKXtpZih0aGlzLmNvbHVtbnMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRG9lc24ndCBzdXBwb3J0IG11bHRpLWRpbWVuc2lvbmFsIHRhYmxlIik7dGhpcy5yb3dzLmxlbmd0aHx8KHRoaXMuY29udGFpbmVyPXRo''@;'; put 'put ''aXMuY3JlYXRlQ29udGFpbmVyKHRoaXMuaG90LnJvb3RFbGVtZW50LmNsYXNzTmFtZSkpO2NvbnN0IGQ9e3JvdzpjfTt0aGlzLnJvd3MucHVzaChkKSx0aGlzLnNhbXBsZXM9YSx0aGlzLnRhYmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlzLnRhYmxl''@;'; put 'put ''LmNvbEdyb3VwLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sR3JvdXBzQ29sKGMpKSx0aGlzLnRhYmxlLnRyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlUm93KGMpKSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCksZC50YWJsZT10aGlz''@;'; put 'put ''LnRhYmxlLnRhYmxlfWFkZENvbHVtbkhlYWRlcnNSb3coYyl7aWYobnVsbCE9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKDApKXtjb25zdCBkPXtyb3c6LTF9O3RoaXMucm93cy5wdXNoKGQpLHRoaXMuY29udGFpbmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKHRoaXMuaG90LnJvb3RFbGVtZW50LmNs''@;'; put 'put ''YXNzTmFtZSksdGhpcy5zYW1wbGVzPWMsdGhpcy50YWJsZT10aGlzLmNyZWF0ZVRhYmxlKHRoaXMuaG90LnRhYmxlLmNsYXNzTmFtZSksdGhpcy50YWJsZS5jb2xHcm91cC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUNvbEdyb3Vwc0NvbCgpKSx0aGlzLmFwcGVuZENvbHVtbkhlYWRlcnNSb3co''@;'; put 'put ''KSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCksZC50YWJsZT10aGlzLnRhYmxlLnRhYmxlfX1hZGRDb2x1bW4oYyxhKXtpZih0aGlzLnJvd3MubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRG9lc24ndCBzdXBwb3J0IG11bHRpLWRpbWVu''@;'; put 'put ''c2lvbmFsIHRhYmxlIik7dGhpcy5jb2x1bW5zLmxlbmd0aHx8KHRoaXMuY29udGFpbmVyPXRoaXMuY3JlYXRlQ29udGFpbmVyKHRoaXMuaG90LnJvb3RFbGVtZW50LmNsYXNzTmFtZSkpO2NvbnN0IGQ9e2NvbDpjfTt0aGlzLmNvbHVtbnMucHVzaChkKSx0aGlzLnNhbXBsZXM9YSx0aGlzLnRh''@;'; put 'put ''YmxlPXRoaXMuY3JlYXRlVGFibGUodGhpcy5ob3QudGFibGUuY2xhc3NOYW1lKSx0aGlzLmdldFNldHRpbmcoInVzZUhlYWRlcnMiKSYmbnVsbCE9PXRoaXMuaG90LmdldENvbEhlYWRlcihjKSYmdGhpcy5ob3Qudmlldy5hcHBlbmRDb2xIZWFkZXIoYyx0aGlzLnRhYmxlLnRoKSx0aGlzLnRh''@;'; put 'put ''YmxlLnRCb2R5LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sKGMpKSx0aGlzLmNvbnRhaW5lci5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZS5mcmFnbWVudCksZC50YWJsZT10aGlzLnRhYmxlLnRhYmxlfWdldEhlaWdodHMoYyl7dGhpcy5pbmplY3RlZHx8dGhpcy5pbmplY3RU''@;'; put 'put ''YWJsZSgpLFRuKHRoaXMucm93cyxhPT57YyhhLnJvdyxabChhLnRhYmxlKS0xKX0pfWdldFdpZHRocyhjKXt0aGlzLmluamVjdGVkfHx0aGlzLmluamVjdFRhYmxlKCksVG4odGhpcy5jb2x1bW5zLGE9Pntjb25zdHt3aWR0aDpkfT1hLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Mo''@;'; put 'put ''YS5jb2wsTWF0aC5jZWlsKGQpKX0pfXNldFNldHRpbmdzKGMpe3RoaXMuc2V0dGluZ3M9Y31zZXRTZXR0aW5nKGMsYSl7dGhpcy5zZXR0aW5nc3x8KHRoaXMuc2V0dGluZ3M9e30pLHRoaXMuc2V0dGluZ3NbY109YX1nZXRTZXR0aW5ncygpe3JldHVybiB0aGlzLnNldHRpbmdzfWdldFNldHRp''@;'; put 'put ''bmcoYyl7cmV0dXJuIHRoaXMuc2V0dGluZ3M/dGhpcy5zZXR0aW5nc1tjXTpudWxsfWNyZWF0ZUNvbEdyb3Vwc0NvbChjKXtjb25zdCBhPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHRoaXMuaG90Lmhhc1Jvd0hlYWRlcnMoKSYmYS5hcHBl''@;'; put 'put ''bmRDaGlsZCh0aGlzLmNyZWF0ZUNvbEVsZW1lbnQoLTEsLTEpKSx0aGlzLnNhbXBsZXMuZm9yRWFjaChkPT57VG4oZC5zdHJpbmdzLGg9PnthLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlQ29sRWxlbWVudChoLmNvbCxjKSl9KX0pLGF9Y3JlYXRlUm93KGMpe2NvbnN0e3Jvb3REb2N1bWVudDph''@;'; put 'put ''fT10aGlzLmhvdCxkPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGg9YS5jcmVhdGVFbGVtZW50KCJ0aCIpO3JldHVybiB0aGlzLmhvdC5oYXNSb3dIZWFkZXJzKCkmJih0aGlzLmhvdC52aWV3LmFwcGVuZFJvd0hlYWRlcihjLGgpLGQuYXBwZW5kQ2hpbGQoaCkpLHRoaXMuc2FtcGxlcy5m''@;'; put 'put ''b3JFYWNoKGY9PntUbihmLnN0cmluZ3Msdj0+e2NvbnN0IFM9di5jb2wsVj10aGlzLmhvdC5nZXRDZWxsTWV0YShjLFMpLFE9dGhpcy5ob3QuZ2V0Q2VsbFJlbmRlcmVyKFYpLGRlPWEuY3JlYXRlRWxlbWVudCgidGQiKTtkZS5zZXRBdHRyaWJ1dGUoImdob3N0LXRhYmxlIiwxKSxRKHRoaXMu''@;'; put 'put ''aG90LGRlLGMsUyx0aGlzLmhvdC5jb2xUb1Byb3AoUyksdi52YWx1ZSxWKSxkLmFwcGVuZENoaWxkKGRlKX0pfSksZH1hcHBlbmRDb2x1bW5IZWFkZXJzUm93KCl7Y29uc3R7cm9vdERvY3VtZW50OmN9PXRoaXMuaG90LGE9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZD1bXTtpZih0aGlz''@;'; put 'put ''LmhvdC5oYXNSb3dIZWFkZXJzKCkpe2NvbnN0IGg9Yy5jcmVhdGVFbGVtZW50KCJ0aCIpO2QucHVzaChbLTEsaF0pLGEuYXBwZW5kQ2hpbGQoaCl9dGhpcy5zYW1wbGVzLmZvckVhY2goaD0+e1RuKGguc3RyaW5ncyxmPT57Y29uc3Qgdj1mLmNvbCxTPWMuY3JlYXRlRWxlbWVudCgidGgiKTtk''@;'; put 'put ''LnB1c2goW3YsU10pLGEuYXBwZW5kQ2hpbGQoUyl9KX0pLHRoaXMudGFibGUudEhlYWQuYXBwZW5kQ2hpbGQoYSksVG4oZCxoPT57Y29uc3RbZix2XT1oO3RoaXMuaG90LnZpZXcuYXBwZW5kQ29sSGVhZGVyKGYsdil9KX1jcmVhdGVDb2woYyl7Y29uc3R7cm9vdERvY3VtZW50OmF9PXRoaXMu''@;'; put 'put ''aG90LGQ9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHRoaXMuc2FtcGxlcy5mb3JFYWNoKGg9PntUbihoLnN0cmluZ3MsZj0+e2NvbnN0IHY9Zi5yb3csUz10aGlzLmhvdC5nZXRDZWxsTWV0YSh2LGMpLFY9dGhpcy5ob3QuZ2V0Q2VsbFJlbmRlcmVyKFMpLFE9YS5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJ0ZCIpLGRlPWEuY3JlYXRlRWxlbWVudCgidHIiKTtRLnNldEF0dHJpYnV0ZSgiZ2hvc3QtdGFibGUiLDEpLFYodGhpcy5ob3QsUSx2LGMsdGhpcy5ob3QuY29sVG9Qcm9wKGMpLGYudmFsdWUsUyksZGUuYXBwZW5kQ2hpbGQoUSksZC5hcHBlbmRDaGlsZChkZSl9KX0pLGR9Y2xl''@;'; put 'put ''YW4oKXt0aGlzLnJvd3MubGVuZ3RoPTAsdGhpcy5yb3dzWy0xXT12b2lkIDAsdGhpcy5jb2x1bW5zLmxlbmd0aD0wLHRoaXMuc2FtcGxlcyYmdGhpcy5zYW1wbGVzLmNsZWFyKCksdGhpcy5zYW1wbGVzPW51bGwsdGhpcy5yZW1vdmVUYWJsZSgpfWluamVjdFRhYmxlKCl7dGhpcy5pbmplY3Rl''@;'; put 'put ''ZHx8KCgoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwpfHx0aGlzLmhvdC5yb290RWxlbWVudCkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIuZnJhZ21lbnQpLHRoaXMuaW5qZWN0ZWQ9ITApfXJlbW92ZVRhYmxlKCl7dGhpcy5p''@;'; put 'put ''bmplY3RlZCYmdGhpcy5jb250YWluZXIuY29udGFpbmVyLnBhcmVudE5vZGUmJih0aGlzLmNvbnRhaW5lci5jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lci5jb250YWluZXIpLHRoaXMuY29udGFpbmVyPW51bGwsdGhpcy5pbmplY3RlZD0hMSl9Y3JlYXRl''@;'; put 'put ''Q29sRWxlbWVudChjLGEpe2NvbnN0IGQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpO2xldCBoPTA7YT49MCYmYz49MCYmKGg9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoYSxjKS5jb2xzcGFuKTtsZXQgZj10aGlzLmhvdC5nZXRDb2xXaWR0aChjKTtpZihoPjEpZm9y''@;'; put 'put ''KGxldCB2PWMrMTt2PGMraDt2KyspZis9dGhpcy5ob3QuZ2V0Q29sV2lkdGgodik7cmV0dXJuIGQuc3R5bGUud2lkdGg9YCR7Zn1weGAsZH1jcmVhdGVUYWJsZSgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIjtjb25zdHty''@;'; put 'put ''b290RG9jdW1lbnQ6YX09dGhpcy5ob3QsZD1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxoPWEuY3JlYXRlRWxlbWVudCgidGFibGUiKSxmPWEuY3JlYXRlRWxlbWVudCgidGhlYWQiKSx2PWEuY3JlYXRlRWxlbWVudCgidGJvZHkiKSxTPWEuY3JlYXRlRWxlbWVudCgiY29sZ3JvdXAiKSxW''@;'; put 'put ''PWEuY3JlYXRlRWxlbWVudCgidHIiKSxRPWEuY3JlYXRlRWxlbWVudCgidGgiKTtyZXR1cm4gdGhpcy5pc1ZlcnRpY2FsKCkmJmguYXBwZW5kQ2hpbGQoUyksdGhpcy5pc0hvcml6b250YWwoKSYmKFYuYXBwZW5kQ2hpbGQoUSksZi5hcHBlbmRDaGlsZChWKSxoLnN0eWxlLnRhYmxlTGF5b3V0''@;'; put 'put ''PSJhdXRvIixoLnN0eWxlLndpZHRoPSJhdXRvIiksaC5hcHBlbmRDaGlsZChmKSx0aGlzLmlzVmVydGljYWwoKSYmdi5hcHBlbmRDaGlsZChWKSxoLmFwcGVuZENoaWxkKHYpLG1pKGgsYyksZC5hcHBlbmRDaGlsZChoKSx7ZnJhZ21lbnQ6ZCx0YWJsZTpoLHRIZWFkOmYsdEJvZHk6dixjb2xH''@;'; put 'put ''cm91cDpTLHRyOlYsdGg6UX19Y3JlYXRlQ29udGFpbmVyKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiIiO2NvbnN0e3Jvb3REb2N1bWVudDphfT10aGlzLmhvdCxkPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGg9YS5j''@;'; put 'put ''cmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbWkoaCxgaHRHaG9zdFRhYmxlIGh0QXV0b1NpemUgJHtjLnRyaW0oKX1gKSxkLmFwcGVuZENoaWxkKGgpLHtmcmFnbWVudDpkLGNvbnRhaW5lcjpofX1pc1ZlcnRpY2FsKCl7cmV0dXJuISghdGhpcy5yb3dzLmxlbmd0aHx8dGhpcy5jb2x1bW5z''@;'; put 'put ''Lmxlbmd0aCl9aXNIb3Jpem9udGFsKCl7cmV0dXJuISghdGhpcy5jb2x1bW5zLmxlbmd0aHx8dGhpcy5yb3dzLmxlbmd0aCl9fTtmdW5jdGlvbiBiTyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gVVFlKGwpe3ZhciBjPWZ1bmN0aW9uIFpRZShsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8''@;'; put 'put ''IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBw''@;'; put 'put ''cmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25m''@;'; put 'put ''aWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBXcXtzdGF0aWMgZ2V0IFNBTVBMRV9DT1VOVCgpe3JldHVybiAzfWNvbnN0cnVjdG9yKGMpe2JPKHRoaXMsInNhbXBsZXMiLG51bGwpLGJPKHRoaXMsImRhdGFGYWN0b3J5IixudWxsKSxiTyh0aGlzLCJjdXN0b21TYW1w''@;'; put 'put ''bGVDb3VudCIsbnVsbCksYk8odGhpcywiYWxsb3dEdXBsaWNhdGVzIiwhMSksdGhpcy5kYXRhRmFjdG9yeT1jfWdldFNhbXBsZUNvdW50KCl7cmV0dXJuIHRoaXMuY3VzdG9tU2FtcGxlQ291bnQ/dGhpcy5jdXN0b21TYW1wbGVDb3VudDpXcS5TQU1QTEVfQ09VTlR9c2V0U2FtcGxlQ291bnQo''@;'; put 'put ''Yyl7dGhpcy5jdXN0b21TYW1wbGVDb3VudD1jfXNldEFsbG93RHVwbGljYXRlcyhjKXt0aGlzLmFsbG93RHVwbGljYXRlcz1jfWdlbmVyYXRlUm93U2FtcGxlcyhjLGEpe3JldHVybiB0aGlzLmdlbmVyYXRlU2FtcGxlcygicm93IixhLGMpfWdlbmVyYXRlQ29sdW1uU2FtcGxlcyhjLGEpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmdlbmVyYXRlU2FtcGxlcygiY29sIixhLGMpfWdlbmVyYXRlU2FtcGxlcyhjLGEsZCl7Y29uc3QgaD1uZXcgTWFwLHtmcm9tOmYsdG86dn09Im51bWJlciI9PXR5cGVvZiBkP3tmcm9tOmQsdG86ZH06ZDtyZXR1cm4gZ28oZix2LFM9Pntjb25zdCBWPXRoaXMuZ2VuZXJhdGVT''@;'; put 'put ''YW1wbGUoYyxhLFMpO2guc2V0KFMsVil9KSxofWdlbmVyYXRlU2FtcGxlKGMsYSxkKXtpZigicm93IiE9PWMmJiJjb2wiIT09Yyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHNhbXBsZSB0eXBlIik7Y29uc3QgaD1uZXcgTWFwLGY9InJvdyI9PT1jPyJjb2wiOiJyb3ciLHY9W107cmV0''@;'; put 'put ''dXJuIGdvKGEuZnJvbSxhLnRvLFM9Pntjb25zdCBWPSJyb3ciPT09Yz90aGlzLmRhdGFGYWN0b3J5KGQsUyk6dGhpcy5kYXRhRmFjdG9yeShTLGQpO2lmKCExPT09VilyZXR1cm47Y29uc3R7dmFsdWU6USxidW5kbGVTZWVkOmRlfT1WLHBlPSJzdHJpbmciPT10eXBlb2YgZGUmJmRlLmxlbmd0''@;'; put 'put ''aD4wO2xldCBDZTtDZT1wZT9kZTpfcyhRKT9gJHtPYmplY3Qua2V5cyhRKS5sZW5ndGh9YDpBcnJheS5pc0FycmF5KFEpP2Ake1EubGVuZ3RofWA6YCR7aWMoUSkubGVuZ3RofWAsaC5oYXMoQ2UpfHxoLnNldChDZSx7bmVlZGVkOnRoaXMuZ2V0U2FtcGxlQ291bnQoKSxzdHJpbmdzOltdfSk7''@;'; put 'put ''Y29uc3QgT2U9aC5nZXQoQ2UpO09lLm5lZWRlZCYmKCEodi5pbmRleE9mKFEpPi0xKXx8dGhpcy5hbGxvd0R1cGxpY2F0ZXN8fHBlKSYmKE9lLnN0cmluZ3MucHVzaCh7dmFsdWU6USxbZl06U30pLHYucHVzaChRKSxPZS5uZWVkZWQtPTEpfSksaH19Y29uc3QgQTJlPVdxO2Z1bmN0aW9uIEQy''@;'; put 'put ''ZShsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gQWIobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEdRZShsKXt2YXIgYz1mdW5jdGlvbiAk''@;'; put 'put ''UWUobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24geU8obCxjKXtyZXR1cm4gbC5nZXQoTjQobCxjKSl9ZnVuY3Rpb24gTjQobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJl''@;'; put 'put ''dHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfWFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiKTtjb25zdCBOeD0iYXV0''@;'; put 'put ''b0NvbHVtblNpemUiO3ZhciBEYj1uZXcgV2Vha01hcCxxbT1uZXcgV2Vha1NldDtjbGFzcyBIeCBleHRlbmRzIGRhe3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBOeH1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxMH1zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygp''@;'; put 'put ''e3JldHVybiEwfXN0YXRpYyBnZXQgQ0FMQ1VMQVRJT05fU1RFUCgpe3JldHVybiA1MH1zdGF0aWMgZ2V0IFNZTkNfQ0FMQ1VMQVRJT05fTElNSVQoKXtyZXR1cm4gNTB9Y29uc3RydWN0b3IoYyl7c3VwZXIoYyksZnVuY3Rpb24gWVFlKGwsYyl7RDJlKGwsYyksYy5hZGQobCl9KHRoaXMscW0p''@;'; put 'put ''LEFiKHRoaXMsImdob3N0VGFibGUiLG5ldyBZcSh0aGlzLmhvdCkpLEFiKHRoaXMsInNhbXBsZXNHZW5lcmF0b3IiLG5ldyBBMmUoKGEsZCk9Pntjb25zdCBoPXRoaXMuaG90LnRvUGh5c2ljYWxSb3coYSksZj10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGQpO2lmKHRoaXMuaG90LnJvd0lu''@;'; put 'put ''ZGV4TWFwcGVyLmlzSGlkZGVuKGgpfHx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5pc0hpZGRlbihmKSlyZXR1cm4hMTtjb25zdCB2PXRoaXMuaG90LmdldENlbGxNZXRhKGEsZCk7bGV0IFM9IiI7di5zcGFubmVkfHwoUz10aGlzLmhvdC5nZXREYXRhQXRDZWxsKGEsZCkpO2xldCBWPSIi''@;'; put 'put ''O3JldHVybiB0aGlzLmhvdC5oYXNIb29rKCJtb2RpZnlBdXRvQ29sdW1uU2l6ZVNlZWQiKSYmKFY9dGhpcy5ob3QucnVuSG9va3MoIm1vZGlmeUF1dG9Db2x1bW5TaXplU2VlZCIsVix2LFMpKSx7dmFsdWU6UyxidW5kbGVTZWVkOlZ9fSkpLEFiKHRoaXMsImZpcnN0Q2FsY3VsYXRpb24iLCEw''@;'; put 'put ''KSxBYih0aGlzLCJpblByb2dyZXNzIiwhMSksQWIodGhpcywibWVhc3VyZWRDb2x1bW5zIiwwKSxBYih0aGlzLCJjb2x1bW5XaWR0aHNNYXAiLG5ldyBabSksZnVuY3Rpb24gV1FlKGwsYyxhKXtEMmUobCxjKSxjLnNldChsLGEpfSh0aGlzLERiLFtdKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlci5yZWdpc3Rlck1hcCgiYXV0b0NvbHVtblNpemUiLHRoaXMuY29sdW1uV2lkdGhzTWFwKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsKGEsZCxoKT0+TjQocW0sdGhpcyxJMmUpLmNhbGwodGhpcyxhLGQsaCkpfWlzRW5hYmxlZCgpe3JldHVybiExIT09dGhpcy5ob3Qu''@;'; put 'put ''Z2V0U2V0dGluZ3MoKVtOeF0mJiF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmNvbFdpZHRoc31lbmFibGVQbHVnaW4oKXt2YXIgYz10aGlzO2lmKHRoaXMuZW5hYmxlZClyZXR1cm47Y29uc3QgYT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW054XTthJiZudWxsIT1hLnVzZUhlYWRlcnMmJnRoaXMu''@;'; put 'put ''Z2hvc3RUYWJsZS5zZXRTZXR0aW5nKCJ1c2VIZWFkZXJzIixhLnVzZUhlYWRlcnMpLHRoaXMuc2V0U2FtcGxpbmdPcHRpb25zKCksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7''@;'; put 'put ''ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBONChxbSxjLFFRZSkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDaGFuZ2VSZW5kZXIiLGQ9Pk40KHFtLHRoaXMsZWV0KS5jYWxsKHRoaXMsZCkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIs''@;'; put 'put ''ZD0+TjQocW0sdGhpcyxuZXQpLmNhbGwodGhpcyxkKSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixkPT5ONChxbSx0aGlzLEpRZSkuY2FsbCh0aGlzLGQpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIiwoZCxoKT0+dGhpcy5nZXRDb2x1bW5XaWR0aChoLGQpKSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImFmdGVySW5pdCIsKCk9Pk40KHFtLHRoaXMsdGV0KS5jYWxsKHRoaXMpKSxzdXBlci5lbmFibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXtjb25zdCBjPXRoaXMuZmluZENvbHVtbnNXaGVyZUhlYWRlcldhc0NoYW5nZWQoKTtjLmxlbmd0aCYmKHRoaXMuY2xlYXJDYWNoZShj''@;'; put 'put ''KSx0aGlzLmNhbGN1bGF0ZVZpc2libGVDb2x1bW5zV2lkdGgoKSksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKSx0aGlzLmFkZEhvb2soImJlZm9yZUNvbHVtblJlc2l6ZSIsKGMsYSxkKT0+TjQocW0sdGhpcyxJMmUpLmNhbGwodGhp''@;'; put 'put ''cyxjLGEsZCkpfWNhbGN1bGF0ZVZpc2libGVDb2x1bW5zV2lkdGgoKXtpZighdGhpcy5ob3QuY291bnRSb3dzKCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5ob3QucmVuZGVyQ2FsbCxkPXRoaXMuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCksaD10aGlzLmdldExhc3RWaXNpYmxlQ29sdW1uKCk7LTE9''@;'; put 'put ''PT1kfHwtMT09PWh8fHRoaXMuY2FsY3VsYXRlQ29sdW1uc1dpZHRoKHtmcm9tOmQsdG86aH0sdm9pZCAwLGEpfWNhbGN1bGF0ZUNvbHVtbnNXaWR0aCgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7ZnJvbTowLHRvOnRoaXMu''@;'; put 'put ''aG90LmNvdW50Q29scygpLTF9LGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRz''@;'; put 'put ''WzJdO2NvbnN0IGg9Im51bWJlciI9PXR5cGVvZiBjP3tmcm9tOmMsdG86Y306YyxmPSJudW1iZXIiPT10eXBlb2YgYT97ZnJvbTphLHRvOmF9OmE7Z28oaC5mcm9tLGgudG8sdj0+e2xldCBTPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4odik7bnVsbD09PVMmJihTPXYpLChkfHxudWxsPT09''@;'; put 'put ''dGhpcy5jb2x1bW5XaWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KFMpJiYhdGhpcy5ob3QuX2dldENvbFdpZHRoRnJvbVNldHRpbmdzKFMpKSYmVG4odGhpcy5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlQ29sdW1uU2FtcGxlcyh2LGYpLFE9PntsZXRbZGUscGVdPVE7cmV0dXJuIHRoaXMuZ2hv''@;'; put 'put ''c3RUYWJsZS5hZGRDb2x1bW4oZGUscGUpfSl9KSx0aGlzLmdob3N0VGFibGUuY29sdW1ucy5sZW5ndGgmJih0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMuZ2hvc3RUYWJsZS5nZXRXaWR0aHMoKHYsUyk9Pntjb25zdCBWPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4odik7dGhp''@;'; put 'put ''cy5jb2x1bW5XaWR0aHNNYXAuc2V0VmFsdWVBdEluZGV4KFYsUyl9KX0sITApLHRoaXMubWVhc3VyZWRDb2x1bW5zPWgudG8rMSx0aGlzLmdob3N0VGFibGUuY2xlYW4oKSl9Y2FsY3VsYXRlQWxsQ29sdW1uc1dpZHRoKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1''@;'; put 'put ''bWVudHNbMF0/YXJndW1lbnRzWzBdOntmcm9tOjAsdG86dGhpcy5ob3QuY291bnRSb3dzKCktMX0sYT0wO2NvbnN0IGQ9dGhpcy5ob3QuY291bnRDb2xzKCktMTtsZXQgaD1udWxsO3RoaXMuaW5Qcm9ncmVzcz0hMDtjb25zdCBmPSgpPT57aWYoIXRoaXMuaG90KXJldHVybiByeChoKSx2b2lk''@;'; put 'put ''KHRoaXMuaW5Qcm9ncmVzcz0hMSk7dGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206YSx0bzpNYXRoLm1pbihhK0h4LkNBTENVTEFUSU9OX1NURVAsZCl9LGMpLGE9YStIeC5DQUxDVUxBVElPTl9TVEVQKzEsYTxkP2g9Y0woZik6KHJ4KGgpLHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlz''@;'; put 'put ''LmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpKX0sdj10aGlzLmdldFN5bmNDYWxjdWxhdGlvbkxpbWl0KCk7dGhpcy5maXJzdENhbGN1bGF0aW9uJiZ2Pj0wJiYodGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoe2Zyb206MCx0bzp2fSxjKSx0aGlzLmZpcnN0Q2FsY3VsYXRpb249ITEs''@;'; put 'put ''YT12KzEpLGE8ZD9mKCk6dGhpcy5pblByb2dyZXNzPSExfXNldFNhbXBsaW5nT3B0aW9ucygpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtOeF0sYT1jJiZZbChjLCJzYW1wbGluZ1JhdGlvIik/Yy5zYW1wbGluZ1JhdGlvOnZvaWQgMCxkPWMmJllsKGMsImFsbG93U2FtcGxlRHVw''@;'; put 'put ''bGljYXRlcyIpP2MuYWxsb3dTYW1wbGVEdXBsaWNhdGVzOnZvaWQgMDthJiYhaXNOYU4oYSkmJnRoaXMuc2FtcGxlc0dlbmVyYXRvci5zZXRTYW1wbGVDb3VudChwYXJzZUludChhLDEwKSksZCYmdGhpcy5zYW1wbGVzR2VuZXJhdG9yLnNldEFsbG93RHVwbGljYXRlcyhkKX1yZWNhbGN1bGF0''@;'; put 'put ''ZUFsbENvbHVtbnNXaWR0aCgpe3RoaXMuaG90LnZpZXcmJnRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuaXNWaXNpYmxlKCkmJih0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLmNhbGN1bGF0ZUFsbENvbHVtbnNXaWR0aCgpKX1nZXRTeW5jQ2FsY3VsYXRpb25MaW1pdCgpe2NvbnN0IGM9dGhpcy5o''@;'; put 'put ''b3QuZ2V0U2V0dGluZ3MoKVtOeF07bGV0IGE9SHguU1lOQ19DQUxDVUxBVElPTl9MSU1JVDtjb25zdCBkPXRoaXMuaG90LmNvdW50Q29scygpLTE7cmV0dXJuIF9zKGMpJiYoYT1jLnN5bmNMaW1pdCxpVyhhKT9hPVZXKGQsYSk6YT4+PTApLE1hdGgubWluKGEsZCl9Z2V0Q29sdW1uV2lkdGgo''@;'; put 'put ''Yyl7bGV0IGQ9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxoPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIHZvaWQgMD09PWgmJihoPXRoaXMuY29sdW1u''@;'; put 'put ''V2lkdGhzTWFwLmdldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGMpKSxkJiYibnVtYmVyIj09dHlwZW9mIGgmJihoPU1hdGgubWF4KGgseXguREVGQVVMVF9XSURUSCkpKSxofWdldEZpcnN0VmlzaWJsZUNvbHVtbigpe2NvbnN0IGM9dGhpcy5ob3Qudmlldy5fd3Q7''@;'; put 'put ''aWYoYy53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcil7Y29uc3QgYT1jLnd0VGFibGUuZ2V0Rmlyc3RWaXNpYmxlQ29sdW1uKCk7aWYoLTEhPT1hKXJldHVybiB0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGEpfWlmKGMu''@;'; put 'put ''d3RWaWV3cG9ydC5jb2x1bW5zUmVuZGVyQ2FsY3VsYXRvcil7Y29uc3QgYT1jLnd0VGFibGUuZ2V0Rmlyc3RSZW5kZXJlZENvbHVtbigpO2lmKC0xIT09YSlyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChhKX1yZXR1cm4tMX1n''@;'; put 'put ''ZXRMYXN0VmlzaWJsZUNvbHVtbigpe2NvbnN0IGM9dGhpcy5ob3Qudmlldy5fd3Q7aWYoYy53dFZpZXdwb3J0LmNvbHVtbnNWaXNpYmxlQ2FsY3VsYXRvcil7Y29uc3QgYT1jLnd0VGFibGUuZ2V0TGFzdFZpc2libGVDb2x1bW4oKTtpZigtMSE9PWEpcmV0dXJuIHRoaXMuaG90LmNvbHVtbklu''@;'; put 'put ''ZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYSl9aWYoYy53dFZpZXdwb3J0LmNvbHVtbnNSZW5kZXJDYWxjdWxhdG9yKXtjb25zdCBhPWMud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRDb2x1bW4oKTtpZigtMSE9PWEpcmV0dXJuIHRoaXMuaG90LmNvbHVtbkluZGV4TWFw''@;'; put 'put ''cGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoYSl9cmV0dXJuLTF9ZmluZENvbHVtbnNXaGVyZUhlYWRlcldhc0NoYW5nZWQoKXtyZXR1cm4gTWModGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCksKGQsaCxmKT0+e2NvbnN0IHY9eU8oRGIsdGhpcykubGVuZ3RoO3JldHVybih2LTE8Znx8''@;'; put 'put ''eU8oRGIsdGhpcylbZl0hPT1oKSYmZC5wdXNoKGYpLHYtMTxmP3lPKERiLHRoaXMpLnB1c2goaCk6eU8oRGIsdGhpcylbZl09aCxkfSxbXSl9Y2xlYXJDYWNoZSgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtjLmxlbmd0''@;'; put 'put ''aD90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1RuKGMsYT0+e3RoaXMuY29sdW1uV2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChhLG51bGwpfSl9LCEwKTp0aGlzLmNvbHVtbldpZHRoc01hcC5jbGVhcigpfWlzTmVlZFJlY2FsY3VsYXRlKCl7cmV0dXJuISFGaCh0aGlzLmNvbHVtbldp''@;'; put 'put ''ZHRoc01hcC5nZXRWYWx1ZXMoKS5zbGljZSgwLHRoaXMubWVhc3VyZWRDb2x1bW5zKSxjPT5udWxsPT09YykubGVuZ3RofWRlc3Ryb3koKXt0aGlzLmdob3N0VGFibGUuY2xlYW4oKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIEpRZSgpe3RoaXMuY2FsY3VsYXRlVmlzaWJsZUNvbHVtbnNX''@;'; put 'put ''aWR0aCgpLHRoaXMuaXNOZWVkUmVjYWxjdWxhdGUoKSYmIXRoaXMuaW5Qcm9ncmVzcyYmdGhpcy5jYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoKX1mdW5jdGlvbiBRUWUoKXt0aGlzLmhvdC52aWV3P3RoaXMucmVjYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoKTpzZXRUaW1lb3V0KCgpPT57dGhp''@;'; put 'put ''cy5ob3QmJnRoaXMucmVjYWxjdWxhdGVBbGxDb2x1bW5zV2lkdGgoKX0sMCl9ZnVuY3Rpb24gZWV0KGwpe2NvbnN0IGM9eHMobCxhPT57bGV0WyxkXT1hO3JldHVybiB0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHRoaXMuaG90LnByb3BUb0NvbChkKSl9KTt0aGlzLmNsZWFyQ2FjaGUoQXJy''@;'; put 'put ''YXkuZnJvbShuZXcgU2V0KGMpKSl9ZnVuY3Rpb24gSTJlKGwsYyxhKXtsZXQgZD1sO3JldHVybiBhJiYodGhpcy5jYWxjdWxhdGVDb2x1bW5zV2lkdGgoYyx2b2lkIDAsITApLGQ9dGhpcy5nZXRDb2x1bW5XaWR0aChjLHZvaWQgMCwhMSkpLGR9ZnVuY3Rpb24gdGV0KCl7IWZ1bmN0aW9uIHFR''@;'; put 'put ''ZShsLGMsYSl7bC5zZXQoTjQobCxjKSxhKX0oRGIsdGhpcyx0aGlzLmhvdC5nZXRDb2xIZWFkZXIoKSl9ZnVuY3Rpb24gbmV0KGwpe2NvbnN0IGE9eHMoRmgobCxkPT57dmFyIGg7cmV0dXJuIHNvKG51bGw9PT0oaD1kLmFkZHJlc3MpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLmNvbCl9KSxkPT5k''@;'; put 'put ''LmFkZHJlc3MuY29sKTt0aGlzLmNsZWFyQ2FjaGUoQXJyYXkuZnJvbShuZXcgU2V0KGEpKSl9Y29uc3QgZDc9e2hvcml6b250YWw6Imhvcml6b250YWwiLHZlcnRpY2FsOiJ2ZXJ0aWNhbCJ9O2Z1bmN0aW9uIEliKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBhZXQobCl7dmFyIGM9ZnVuY3Rp''@;'; put 'put ''b24gY2V0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIFZ4KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigibW9kaWZ5QXV0b2ZpbGxSYW5nZSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVBdXRvZmlsbCIpLGFvLmdldFNp''@;'; put 'put ''bmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckF1dG9maWxsIik7Y29uc3QgZGV0PVsiZmlsbEhhbmRsZSJdO3ZhciBSYj1uZXcgV2Vha1NldDtjbGFzcyBwZXQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gb2V0KGwsYyl7KGZ1bmN0aW9uIHNl''@;'; put 'put ''dChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSh0aGlzLFJiKSxJYih0aGlzLCJhZGRpbmdTdGFydGVkIiwhMSksSWIodGhp''@;'; put 'put ''cywibW91c2VEb3duT25DZWxsQ29ybmVyIiwhMSksSWIodGhpcywibW91c2VEcmFnT3V0c2lkZSIsITEpLEliKHRoaXMsImhhbmRsZURyYWdnZWRDZWxscyIsMCksSWIodGhpcywiZGlyZWN0aW9ucyIsW10pLEliKHRoaXMsImF1dG9JbnNlcnRSb3ciLCExKX1zdGF0aWMgZ2V0IFBMVUdJTl9L''@;'; put 'put ''RVkoKXtyZXR1cm4iYXV0b2ZpbGwifXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDIwfXN0YXRpYyBnZXQgU0VUVElOR19LRVlTKCl7cmV0dXJuWyJhdXRvZmlsbCIsLi4uZGV0XX1pc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maWxsSGFuZGxl''@;'; put 'put ''fWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMubWFwU2V0dGluZ3MoKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvcm5lck1vdXNlRG93biIsYz0+VngoUmIsdGhpcyxtZXQpLmNhbGwodGhpcyxjKSksdGhpcy5hZGRIb29rKCJhZnRl''@;'; put 'put ''ck9uQ2VsbENvcm5lckRibENsaWNrIixjPT5WeChSYix0aGlzLGdldCkuY2FsbCh0aGlzLGMpKSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlT3ZlciIsKGMsYSk9PlZ4KFJiLHRoaXMsdmV0KS5jYWxsKHRoaXMsYSkpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX11cGRhdGVQbHVnaW4o''@;'; put 'put ''KXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLmNsZWFyTWFwcGVkU2V0dGluZ3MoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9Z2V0U2VsZWN0aW9uRGF0YSgpe2NvbnN0IGM9dGhpcy5ob3Qu''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx7cm93OmEsY29sOmR9PWMuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7cm93OmgsY29sOmZ9PWMuZ2V0Qm90dG9tRW5kQ29ybmVyKCksdj10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5Q29weWFibGVSYW5nZSIsW3tzdGFydFJvdzphLHN0YXJ0Q29sOmQsZW5k''@;'; put 'put ''Um93OmgsZW5kQ29sOmZ9XSksUz1bXSxWPVtdLFE9W107cmV0dXJuIFRuKHYsZGU9Pntmb3IobGV0IHBlPWRlLnN0YXJ0Um93O3BlPD1kZS5lbmRSb3c7cGUrPTEpLTE9PT1TLmluZGV4T2YocGUpJiZTLnB1c2gocGUpO2ZvcihsZXQgcGU9ZGUuc3RhcnRDb2w7cGU8PWRlLmVuZENvbDtwZSs9''@;'; put 'put ''MSktMT09PVYuaW5kZXhPZihwZSkmJlYucHVzaChwZSl9KSxUbihTLGRlPT57Y29uc3QgcGU9W107VG4oVixDZT0+e3BlLnB1c2godGhpcy5ob3QuZ2V0Q29weWFibGVEYXRhKGRlLENlKSl9KSxRLnB1c2gocGUpfSksUX1maWxsSW4oKXtpZih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0''@;'; put 'put ''LmdldEZpbGwoKS5pc0VtcHR5KCkpcmV0dXJuITE7Y29uc3RbYyxhLGQsaF09dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLGY9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx2PWYuZ2V0VG9wU3RhcnRDb3JuZXIoKSxTPWYu''@;'; put 'put ''Z2V0Qm90dG9tRW5kQ29ybmVyKCk7dGhpcy5yZXNldFNlbGVjdGlvbk9mRHJhZ2dlZEFyZWEoKTtjb25zdCBWPVt2LnJvdyx2LmNvbCxTLnJvdyxTLmNvbF0sUT10aGlzLmhvdC5ydW5Ib29rcygibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsW01hdGgubWluKHYucm93LGMpLE1hdGgubWluKHYuY29s''@;'; put 'put ''LGEpLE1hdGgubWF4KFMucm93LGQpLE1hdGgubWF4KFMuY29sLGgpXSxWKSx7ZGlyZWN0aW9uT2ZEcmFnOmRlLHN0YXJ0T2ZEcmFnQ29vcmRzOnBlLGVuZE9mRHJhZ0Nvb3JkczpDZX09ZnVuY3Rpb24gcmV0KGwsYyxhKXtsZXQgZCxoLGY7cmV0dXJuIGNbMF09PT1sWzBdJiZjWzFdPGxbMV0/''@;'; put 'put ''KGY9ImxlZnQiLGQ9YShjWzBdLGNbMV0pLGg9YShjWzJdLGxbMV0tMSkpOmNbMl09PT1sWzJdJiZjWzBdPT09bFswXSYmY1szXT5sWzNdPyhmPSJyaWdodCIsZD1hKGNbMF0sbFszXSsxKSxoPWEoY1syXSxjWzNdKSk6Y1swXTxsWzBdJiZjWzFdPT09bFsxXT8oZj0idXAiLGQ9YShjWzBdLGNb''@;'; put 'put ''MV0pLGg9YShsWzBdLTEsY1szXSkpOmNbMl0+bFsyXSYmY1sxXT09PWxbMV0mJihmPSJkb3duIixkPWEobFsyXSsxLGNbMV0pLGg9YShjWzJdLGNbM10pKSxkJiZkLm5vcm1hbGl6ZSgpLGgmJmgubm9ybWFsaXplKCkse2RpcmVjdGlvbk9mRHJhZzpmLHN0YXJ0T2ZEcmFnQ29vcmRzOmQsZW5k''@;'; put 'put ''T2ZEcmFnQ29vcmRzOmh9fShWLFEsKE9lLFllKT0+dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoT2UsWWUpKTtpZihwZSYmcGUucm93Pi0xJiZwZS5jb2w+LTEpe2NvbnN0IE9lPXRoaXMuZ2V0U2VsZWN0aW9uRGF0YSgpLFllPWYuY2xvbmUoKSxldD10aGlzLmhvdC5fY3JlYXRlQ2VsbFJh''@;'; put 'put ''bmdlKHBlLHBlLENlKSxkdD10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQXV0b2ZpbGwiLE9lLFllLGV0LGRlKTtpZighMT09PWR0KXJldHVybiB0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpLHRoaXMuaG90LnJlbmRlcigpLCExO2xldCBodD1kdDtjb25z''@;'; put 'put ''dCBNdD1kdDtpZihbInVwIiwibGVmdCJdLmluZGV4T2YoZGUpPi0xJiYoMSE9PU10Lmxlbmd0aHx8MCE9PU10WzBdLmxlbmd0aCkpaWYoaHQ9W10sInVwIj09PWRlKXtjb25zdCBRdD1DZS5yb3ctcGUucm93KzEsbG49UXQlTXQubGVuZ3RoO2ZvcihsZXQgdm49MDt2bjxRdDt2bisrKWh0LnB1''@;'; put 'put ''c2goTXRbKHZuKyhNdC5sZW5ndGgtbG4pKSVNdC5sZW5ndGhdKX1lbHNle2NvbnN0IFF0PUNlLmNvbC1wZS5jb2wrMSxsbj1RdCVNdFswXS5sZW5ndGg7Zm9yKGxldCB2bj0wO3ZuPE10Lmxlbmd0aDt2bisrKXtodC5wdXNoKFtdKTtmb3IobGV0IHduPTA7d248UXQ7d24rKylodFt2bl0ucHVz''@;'; put 'put ''aChNdFt2bl1bKHduKyhNdFt2bl0ubGVuZ3RoLWxuKSklTXRbdm5dLmxlbmd0aF0pfX10aGlzLmhvdC5wb3B1bGF0ZUZyb21BcnJheShwZS5yb3cscGUuY29sLGh0LENlLnJvdyxDZS5jb2wsYCR7dGhpcy5wbHVnaW5OYW1lfS5maWxsYCxudWxsKSx0aGlzLnNldFNlbGVjdGlvbihRKSx0aGlz''@;'; put 'put ''LmhvdC5ydW5Ib29rcygiYWZ0ZXJBdXRvZmlsbCIsaHQsWWUsZXQsZGUpLHRoaXMuaG90LnJlbmRlcigpfWVsc2UgdGhpcy5ob3Qudmlldy5yZW5kZXIoKTtyZXR1cm4hMH1yZWR1Y2VTZWxlY3Rpb25BcmVhSWZOZWVkZWQoYyl7cmV0dXJuIGMucm93PDAmJihjLnJvdz0wKSxjLmNvbDwwJiYo''@;'; put 'put ''Yy5jb2w9MCksY31nZXRDb29yZHNPZkRyYWdBbmREcm9wQm9yZGVycyhjKXtjb25zdCBhPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksZD1hLmdldEJvdHRvbUVuZENvcm5lcigpO2xldCBoPWM7aWYodGhpcy5kaXJlY3Rpb25zLmluY2x1ZGVzKGQ3LnZlcnRpY2FsKSYmdGhpcy5k''@;'; put 'put ''aXJlY3Rpb25zLmluY2x1ZGVzKGQ3Lmhvcml6b250YWwpKXtjb25zdCBmPWEuZ2V0VG9wU3RhcnRDb3JuZXIoKTsoZC5jb2w8PWMuY29sfHxmLmNvbD49Yy5jb2wpJiYoaD10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhkLnJvdyxjLmNvbCkpLChkLnJvdzxjLnJvd3x8Zi5yb3c+Yy5yb3cp''@;'; put 'put ''JiYoaD10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLnJvdyxkLmNvbCkpfWVsc2UgaWYodGhpcy5kaXJlY3Rpb25zLmluY2x1ZGVzKGQ3LnZlcnRpY2FsKSloPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMucm93LGQuY29sKTtlbHNle2lmKCF0aGlzLmRpcmVjdGlvbnMuaW5jbHVk''@;'; put 'put ''ZXMoZDcuaG9yaXpvbnRhbCkpcmV0dXJuO2g9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZC5yb3csYy5jb2wpfXJldHVybiB0aGlzLnJlZHVjZVNlbGVjdGlvbkFyZWFJZk5lZWRlZChoKX1zaG93Qm9yZGVyKGMpe2NvbnN0IGE9dGhpcy5nZXRDb29yZHNPZkRyYWdBbmREcm9wQm9yZGVy''@;'; put 'put ''cyhjKTthJiZ0aGlzLnJlZHJhd0JvcmRlcnMoYSl9YWRkUm93KCl7dGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+e3RoaXMuaG90LmFsdGVyKCJpbnNlcnRfcm93X2JlbG93Iix2b2lkIDAsMSxgJHt0aGlzLnBsdWdpbk5hbWV9LmZpbGxgKSx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITF9LDIw''@;'; put 'put ''MCl9YWRkTmV3Um93SWZOZWVkZWQoKXtpZighdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuaXNFbXB0eSgpJiYhMT09PXRoaXMuYWRkaW5nU3RhcnRlZCYmdGhpcy5hdXRvSW5zZXJ0Um93KXtjb25zdCBjPXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpLGE9dGhpcy5o''@;'; put 'put ''b3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuZ2V0VmlzdWFsQ29ybmVycygpLGQ9dGhpcy5ob3QuY291bnRSb3dzKCk7Y1syXTxkLTEmJmFbMl09PT1kLTEmJih0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITAsdGhpcy5hZGRSb3coKSl9fWdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJ''@;'; put 'put ''blJvdyhjKXtjb25zdCBhPXRoaXMuaG90LmdldERhdGEoKSxkPXRoaXMuaG90LmNvdW50Um93cygpO2xldCBoO2ZvcihsZXQgZj1jWzJdKzE7ZjxkO2YrKyl7Zm9yKGxldCBWPWNbMV07Vjw9Y1szXTtWKyspaWYoIW9jKGFbZl1bVl0pKXJldHVybi0xO2NvbnN0IFM9YVtmXVtjWzNdKzFdOygh''@;'; put 'put ''b2MoYVtmXVtjWzFdLTFdKXx8IW9jKFMpKSYmKGg9Zil9cmV0dXJuIGh9YWRkU2VsZWN0aW9uRnJvbVN0YXJ0QXJlYVRvU3BlY2lmaWNSb3dJbmRleChjLGEpe3RoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuZ2V0RmlsbCgpLmNsZWFyKCkuYWRkKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29v''@;'; put 'put ''cmRzKGNbMF0sY1sxXSkpLmFkZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhLGNbM10pKS5jb21taXQoKX1zZXRTZWxlY3Rpb24oYyl7dGhpcy5ob3Quc2VsZWN0Q2VsbCguLi54cyhjLGE9Pk1hdGgubWF4KGEsMCkpLCExLCExKX1zZWxlY3RBZGphY2VudCgpe2NvbnN0IGM9dGhpcy5o''@;'; put 'put ''b3QuZ2V0U2VsZWN0ZWRMYXN0KCksYT10aGlzLmdldEluZGV4T2ZMYXN0QWRqYWNlbnRGaWxsZWRJblJvdyhjKTtyZXR1cm4tMSE9PWEmJnZvaWQgMCE9PWEmJih0aGlzLmFkZFNlbGVjdGlvbkZyb21TdGFydEFyZWFUb1NwZWNpZmljUm93SW5kZXgoYyxhKSwhMCl9cmVzZXRTZWxlY3Rpb25P''@;'; put 'put ''ZkRyYWdnZWRBcmVhKCl7dGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmdldEZpbGwoKS5jbGVhcigpfXJlZHJhd0JvcmRlcnMoYyl7dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGaWxsKCkuY2xlYXIoKS5hZGQodGhpcy5ob3Qu''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5mcm9tKS5hZGQodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS50bykuYWRkKGMpLmNvbW1pdCgpLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9Z2V0SWZNb3VzZVdhc0RyYWdnZWRPdXRzaWRlKGMpe2NvbnN0e2RvY3VtZW50RWxlbWVudDphfT10''@;'; put 'put ''aGlzLmhvdC5yb290RG9jdW1lbnQsZD14dSh0aGlzLmhvdC50YWJsZSkudG9wLSh0aGlzLmhvdC5yb290V2luZG93LnBhZ2VZT2Zmc2V0fHxhLnNjcm9sbFRvcCkrWmwodGhpcy5ob3QudGFibGUpLGg9eHUodGhpcy5ob3QudGFibGUpLmxlZnQtKHRoaXMuaG90LnJvb3RXaW5kb3cucGFnZVhP''@;'; put 'put ''ZmZzZXR8fGEuc2Nyb2xsTGVmdCkrV2EodGhpcy5ob3QudGFibGUpO3JldHVybiBjLmNsaWVudFk+ZCYmYy5jbGllbnRYPD1ofXJlZ2lzdGVyRXZlbnRzKCl7Y29uc3R7ZG9jdW1lbnRFbGVtZW50OmN9PXRoaXMuaG90LnJvb3REb2N1bWVudDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExp''@;'; put 'put ''c3RlbmVyKGMsIm1vdXNldXAiLCgpPT5WeChSYix0aGlzLF9ldCkuY2FsbCh0aGlzKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihjLCJtb3VzZW1vdmUiLGE9PlZ4KFJiLHRoaXMsYmV0KS5jYWxsKHRoaXMsYSkpfWNsZWFyTWFwcGVkU2V0dGluZ3MoKXt0aGlzLmRpcmVj''@;'; put 'put ''dGlvbnMubGVuZ3RoPTAsdGhpcy5hdXRvSW5zZXJ0Um93PSExfW1hcFNldHRpbmdzKCl7Y29uc3QgYz1mdW5jdGlvbiBpZXQobCl7Y29uc3QgYz17fTtyZXR1cm4hMD09PWw/KGMuZGlyZWN0aW9ucz1PYmplY3Qua2V5cyhkNyksYy5hdXRvSW5zZXJ0Um93PSEwKTpfcyhsKT8oYy5hdXRvSW5z''@;'; put 'put ''ZXJ0Um93PSEhc28obC5hdXRvSW5zZXJ0Um93KSYmbC5kaXJlY3Rpb24hPT1kNy5ob3Jpem9udGFsJiZsLmF1dG9JbnNlcnRSb3csYy5kaXJlY3Rpb25zPXNvKGwuZGlyZWN0aW9uKT9bbC5kaXJlY3Rpb25dOk9iamVjdC5rZXlzKGQ3KSk6InN0cmluZyI9PXR5cGVvZiBsPyhjLmRpcmVjdGlv''@;'; put 'put ''bnM9W2xdLGMuYXV0b0luc2VydFJvdz0hMCk6KGMuZGlyZWN0aW9ucz1bXSxjLmF1dG9JbnNlcnRSb3c9ITEpLGN9KHRoaXMuaG90LmdldFNldHRpbmdzKCkuZmlsbEhhbmRsZSk7dGhpcy5kaXJlY3Rpb25zPWMuZGlyZWN0aW9ucyx0aGlzLmF1dG9JbnNlcnRSb3c9Yy5hdXRvSW5zZXJ0Um93''@;'; put 'put ''fWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIGdldCgpe3RoaXMuc2VsZWN0QWRqYWNlbnQoKSYmdGhpcy5maWxsSW4oKX1mdW5jdGlvbiBtZXQoKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscz0xLHRoaXMubW91c2VEb3duT25DZWxsQ29ybmVyPSEwfWZ1bmN0aW9uIHZldChs''@;'; put 'put ''KXt0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lciYmIXRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKSYmdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHMmJih0aGlzLmhhbmRsZURyYWdnZWRDZWxscys9MSx0aGlzLnNob3dCb3JkZXIobCksdGhpcy5hZGROZXdSb3dJZk5lZWRlZCgpKX1mdW5jdGlv''@;'; put 'put ''biBfZXQoKXt0aGlzLmhhbmRsZURyYWdnZWRDZWxscyYmKHRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjEmJnRoaXMuZmlsbEluKCksdGhpcy5oYW5kbGVEcmFnZ2VkQ2VsbHM9MCx0aGlzLm1vdXNlRG93bk9uQ2VsbENvcm5lcj0hMSl9ZnVuY3Rpb24gYmV0KGwpe2NvbnN0IGM9dGhpcy5nZXRJ''@;'; put 'put ''Zk1vdXNlV2FzRHJhZ2dlZE91dHNpZGUobCk7ITE9PT10aGlzLmFkZGluZ1N0YXJ0ZWQmJnRoaXMuaGFuZGxlRHJhZ2dlZENlbGxzPjAmJmM/KHRoaXMubW91c2VEcmFnT3V0c2lkZT0hMCx0aGlzLmFkZGluZ1N0YXJ0ZWQ9ITApOnRoaXMubW91c2VEcmFnT3V0c2lkZT0hMSx0aGlzLm1vdXNl''@;'; put 'put ''RHJhZ091dHNpZGUmJnRoaXMuYXV0b0luc2VydFJvdyYmdGhpcy5hZGRSb3coKX1mdW5jdGlvbiBoNyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gQ2V0KGwpe3ZhciBjPWZ1bmN0aW9uIE1ldChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wu''@;'; put 'put ''dG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJz''@;'; put 'put ''dHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTps''@;'; put 'put ''W2NdPWEsbH1mdW5jdGlvbiBCeChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9''@;'; put 'put ''Y29uc3Qgd089ImF1dG9Sb3dTaXplIjt2YXIgTGI9bmV3IFdlYWtTZXQ7Y2xhc3MganggZXh0ZW5kcyBkYXtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gd099c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gNDB9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1''@;'; put 'put ''cm4hMH1zdGF0aWMgZ2V0IENBTENVTEFUSU9OX1NURVAoKXtyZXR1cm4gNTB9c3RhdGljIGdldCBTWU5DX0NBTENVTEFUSU9OX0xJTUlUKCl7cmV0dXJuIDUwMH1jb25zdHJ1Y3RvcihjKXtzdXBlcihjKSxmdW5jdGlvbiB5ZXQobCxjKXsoZnVuY3Rpb24gd2V0KGwsYyl7aWYoYy5oYXMobCkp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5hZGQobCl9KHRoaXMsTGIpLGg3KHRoaXMsImhlYWRlckhlaWdodCIsbnVsbCksaDcodGhpcywiZ2hvc3RUYWJsZSIsbmV3''@;'; put 'put ''IFlxKHRoaXMuaG90KSksaDcodGhpcywic2FtcGxlc0dlbmVyYXRvciIsbmV3IEEyZSgoYSxkKT0+e2NvbnN0IGg9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhhKSxmPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oZCk7aWYodGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuaXNIaWRkZW4oaCl8fHRo''@;'; put 'put ''aXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmlzSGlkZGVuKGYpfHxhPj0wJiZkPj0wJiZ0aGlzLmhvdC5nZXRDZWxsTWV0YShhLGQpLmhpZGRlbilyZXR1cm4hMTtsZXQgdjtyZXR1cm4gYT49MD92PXRoaXMuaG90LmdldERhdGFBdENlbGwoYSxkKTotMT09PWEmJih2PXRoaXMuaG90LmdldENv''@;'; put 'put ''bEhlYWRlcihkKSkse3ZhbHVlOnZ9fSkpLGg3KHRoaXMsImZpcnN0Q2FsY3VsYXRpb24iLCEwKSxoNyh0aGlzLCJpblByb2dyZXNzIiwhMSksaDcodGhpcywibWVhc3VyZWRSb3dzIiwwKSxoNyh0aGlzLCJyb3dIZWlnaHRzTWFwIixuZXcgWm0pLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJl''@;'; put 'put ''Z2lzdGVyTWFwKCJhdXRvUm93U2l6ZSIsdGhpcy5yb3dIZWlnaHRzTWFwKSx0aGlzLmFkZEhvb2soImJlZm9yZVJvd1Jlc2l6ZSIsKGEsZCxoKT0+QngoTGIsdGhpcyxMMmUpLmNhbGwodGhpcyxhLGQsaCkpfWlzRW5hYmxlZCgpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt3T107''@;'; put 'put ''cmV0dXJuITA9PT1jfHxfcyhjKX1lbmFibGVQbHVnaW4oKXt2YXIgYz10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuc2V0U2FtcGxpbmdPcHRpb25zKCksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5''@;'; put 'put ''KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBCeChMYixjLGtldCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDaGFuZ2VSZW5kZXIiLGE9PkJ4KExiLHRoaXMsQWV0KS5jYWxsKHRoaXMsYSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29sdW1uUmVz''@;'; put 'put ''aXplIiwoKT0+dGhpcy5yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixhPT5CeChMYix0aGlzLFRldCkuY2FsbCh0aGlzLGEpKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsKGEsZCk9PnRoaXMuZ2V0Um93SGVpZ2h0KGQs''@;'; put 'put ''YSkpLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29sdW1uSGVhZGVySGVpZ2h0IiwoKT0+dGhpcy5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoKSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfWRpc2FibGVQbHVnaW4oKXt0aGlzLmhlYWRlckhlaWdodD1udWxsLHN1cGVyLmRpc2FibGVQbHVnaW4oKSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImJlZm9yZVJvd1Jlc2l6ZSIsKGMsYSxkKT0+QngoTGIsdGhpcyxMMmUpLmNhbGwodGhpcyxjLGEsZCkpfWNhbGN1bGF0ZVJvd3NIZWlnaHQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2Zyb206MCx0bzp0''@;'; put 'put ''aGlzLmhvdC5jb3VudFJvd3MoKS0xfSxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7ZnJvbTowLHRvOnRoaXMuaG90LmNvdW50Q29scygpLTF9LGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3Vt''@;'; put 'put ''ZW50c1syXTtjb25zdCBoPSJudW1iZXIiPT10eXBlb2YgYz97ZnJvbTpjLHRvOmN9OmMsZj0ibnVtYmVyIj09dHlwZW9mIGE/e2Zyb206YSx0bzphfTphO2lmKG51bGwhPT10aGlzLmhvdC5nZXRDb2xIZWFkZXIoMCkpe2NvbnN0IHY9dGhpcy5zYW1wbGVzR2VuZXJhdG9yLmdlbmVyYXRlUm93''@;'; put 'put ''U2FtcGxlcygtMSxmKTt0aGlzLmdob3N0VGFibGUuYWRkQ29sdW1uSGVhZGVyc1Jvdyh2LmdldCgtMSkpfWdvKGguZnJvbSxoLnRvLHY9PnsoZHx8bnVsbD09PXRoaXMucm93SGVpZ2h0c01hcC5nZXRWYWx1ZUF0SW5kZXgodikpJiZUbih0aGlzLnNhbXBsZXNHZW5lcmF0b3IuZ2VuZXJhdGVS''@;'; put 'put ''b3dTYW1wbGVzKHYsZiksVj0+e2xldFtRLGRlXT1WO3JldHVybiB0aGlzLmdob3N0VGFibGUuYWRkUm93KFEsZGUpfSl9KSx0aGlzLmdob3N0VGFibGUucm93cy5sZW5ndGgmJih0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMuZ2hvc3RUYWJsZS5nZXRIZWlnaHRzKCh2LFMpPT57''@;'; put 'put ''djwwP3RoaXMuaGVhZGVySGVpZ2h0PVM6dGhpcy5yb3dIZWlnaHRzTWFwLnNldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsUm93KHYpLFMpfSl9LCEwKSx0aGlzLm1lYXN1cmVkUm93cz1oLnRvKzEsdGhpcy5naG9zdFRhYmxlLmNsZWFuKCkpfWNhbGN1bGF0ZUFsbFJvd3NIZWln''@;'; put 'put ''aHQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e2Zyb206MCx0bzp0aGlzLmhvdC5jb3VudENvbHMoKS0xfSxhPTA7Y29uc3QgZD10aGlzLmhvdC5jb3VudFJvd3MoKS0xO2xldCBoPW51bGw7dGhpcy5pblByb2dyZXNzPSEw''@;'; put 'put ''O2NvbnN0IGY9KCk9PntpZighdGhpcy5ob3QpcmV0dXJuIHJ4KGgpLHZvaWQodGhpcy5pblByb2dyZXNzPSExKTt0aGlzLmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206YSx0bzpNYXRoLm1pbihhK2p4LkNBTENVTEFUSU9OX1NURVAsZCl9LGMpLGE9YStqeC5DQUxDVUxBVElPTl9TVEVQKzEs''@;'; put 'put ''YTxkP2g9Y0woZik6KHJ4KGgpLHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnZpZXcuX3d0Lnd0T3ZlcmxheXMuaW5saW5lU3RhcnRPdmVybGF5Lm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlz''@;'; put 'put ''LmlubGluZVN0YXJ0T3ZlcmxheS5jbG9uZS5kcmF3KCkpfSx2PXRoaXMuZ2V0U3luY0NhbGN1bGF0aW9uTGltaXQoKTt0aGlzLmZpcnN0Q2FsY3VsYXRpb24mJnY+PTAmJih0aGlzLmNhbGN1bGF0ZVJvd3NIZWlnaHQoe2Zyb206MCx0bzp2fSxjKSx0aGlzLmZpcnN0Q2FsY3VsYXRpb249ITEs''@;'; put 'put ''YT12KzEpLGE8ZD9mKCk6KHRoaXMuaW5Qcm9ncmVzcz0hMSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpKX1zZXRTYW1wbGluZ09wdGlvbnMoKXtjb25zdCBjPXRoaXMuaG90LmdldFNldHRpbmdzKClbd09dLGE9YyYmWWwoYywic2FtcGxpbmdSYXRpbyIpP2Muc2FtcGxpbmdS''@;'; put 'put ''YXRpbzp2b2lkIDAsZD1jJiZZbChjLCJhbGxvd1NhbXBsZUR1cGxpY2F0ZXMiKT9jLmFsbG93U2FtcGxlRHVwbGljYXRlczp2b2lkIDA7YSYmIWlzTmFOKGEpJiZ0aGlzLnNhbXBsZXNHZW5lcmF0b3Iuc2V0U2FtcGxlQ291bnQocGFyc2VJbnQoYSwxMCkpLGQmJnRoaXMuc2FtcGxlc0dlbmVy''@;'; put 'put ''YXRvci5zZXRBbGxvd0R1cGxpY2F0ZXMoZCl9cmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0KCl7UG0odGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZS5UQUJMRSkmJih0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKSl9Z2V0U3luY0NhbGN1bGF0aW9uTGltaXQo''@;'; put 'put ''KXtjb25zdCBjPXRoaXMuaG90LmdldFNldHRpbmdzKClbd09dO2xldCBhPWp4LlNZTkNfQ0FMQ1VMQVRJT05fTElNSVQ7Y29uc3QgZD10aGlzLmhvdC5jb3VudFJvd3MoKS0xO3JldHVybiBfcyhjKSYmKGE9Yy5zeW5jTGltaXQsaVcoYSk/YT1WVyhkLGEpOmE+Pj0wKSxNYXRoLm1pbihhLGQp''@;'; put 'put ''fWdldFJvd0hlaWdodChjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwO2NvbnN0IGQ9YzwwP3RoaXMuaGVhZGVySGVpZ2h0OnRoaXMucm93SGVpZ2h0c01hcC5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlz''@;'; put 'put ''aWNhbFJvdyhjKSk7bGV0IGg9YTtyZXR1cm4gbnVsbCE9PWQmJmQ+KGF8fDApJiYoaD1kKSxofWdldENvbHVtbkhlYWRlckhlaWdodCgpe3JldHVybiB0aGlzLmhlYWRlckhlaWdodH1nZXRGaXJzdFZpc2libGVSb3coKXtjb25zdCBjPXRoaXMuaG90LnZpZXcuX3d0O3JldHVybiBjLnd0Vmll''@;'; put 'put ''d3BvcnQucm93c1Zpc2libGVDYWxjdWxhdG9yP2Mud3RUYWJsZS5nZXRGaXJzdFZpc2libGVSb3coKTpjLnd0Vmlld3BvcnQucm93c1JlbmRlckNhbGN1bGF0b3I/Yy53dFRhYmxlLmdldEZpcnN0UmVuZGVyZWRSb3coKTotMX1nZXRMYXN0VmlzaWJsZVJvdygpe2NvbnN0IGM9dGhpcy5ob3Qu''@;'; put 'put ''dmlldy5fd3Q7cmV0dXJuIGMud3RWaWV3cG9ydC5yb3dzVmlzaWJsZUNhbGN1bGF0b3I/Yy53dFRhYmxlLmdldExhc3RWaXNpYmxlUm93KCk6Yy53dFZpZXdwb3J0LnJvd3NSZW5kZXJDYWxjdWxhdG9yP2Mud3RUYWJsZS5nZXRMYXN0UmVuZGVyZWRSb3coKTotMX1jbGVhckNhY2hlKCl7dGhp''@;'; put 'put ''cy5oZWFkZXJIZWlnaHQ9bnVsbCx0aGlzLnJvd0hlaWdodHNNYXAuaW5pdCgpfWNsZWFyQ2FjaGVCeVJhbmdlKGMpe2NvbnN0e2Zyb206YSx0bzpkfT0ibnVtYmVyIj09dHlwZW9mIGM/e2Zyb206Yyx0bzpjfTpjO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57Z28oTWF0aC5taW4oYSxk''@;'; put 'put ''KSxNYXRoLm1heChhLGQpLGg9Pnt0aGlzLnJvd0hlaWdodHNNYXAuc2V0VmFsdWVBdEluZGV4KGgsbnVsbCl9KX0sITApfWlzTmVlZFJlY2FsY3VsYXRlKCl7cmV0dXJuISFGaCh0aGlzLnJvd0hlaWdodHNNYXAuZ2V0VmFsdWVzKCkuc2xpY2UoMCx0aGlzLm1lYXN1cmVkUm93cyksYz0+bnVs''@;'; put 'put ''bD09PWMpLmxlbmd0aH1kZXN0cm95KCl7dGhpcy5naG9zdFRhYmxlLmNsZWFuKCksc3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBUZXQoKXtjb25zdCBsPXRoaXMuaG90LnJlbmRlckNhbGwsYz10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbSxhPXRoaXMuZ2V0Rmlyc3RW''@;'; put 'put ''aXNpYmxlUm93KCksZD10aGlzLmdldExhc3RWaXNpYmxlUm93KCk7aWYoLTEhPT1hJiYtMSE9PWQpe2lmKHRoaXMuY2FsY3VsYXRlUm93c0hlaWdodCh7ZnJvbTphLHRvOmR9LHZvaWQgMCxsKSxjKXtjb25zdCBoPXRoaXMuaG90LmNvdW50Um93cygpLTE7dGhpcy5jYWxjdWxhdGVSb3dzSGVp''@;'; put 'put ''Z2h0KHtmcm9tOmgtYyx0bzpofSl9dGhpcy5pc05lZWRSZWNhbGN1bGF0ZSgpJiYhdGhpcy5pblByb2dyZXNzJiZ0aGlzLmNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKX19ZnVuY3Rpb24gTDJlKGwsYyxhKXtsZXQgZD1sO3JldHVybiBhJiYodGhpcy5jYWxjdWxhdGVSb3dzSGVpZ2h0KGMsdm9p''@;'; put 'put ''ZCAwLCEwKSxkPXRoaXMuZ2V0Um93SGVpZ2h0KGMpKSxkfWZ1bmN0aW9uIGtldCgpe3RoaXMuaG90LnZpZXc/dGhpcy5yZWNhbGN1bGF0ZUFsbFJvd3NIZWlnaHQoKTp0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57dGhpcy5ob3QmJnRoaXMucmVjYWxjdWxhdGVBbGxSb3dzSGVpZ2h0''@;'; put 'put ''KCl9KX1mdW5jdGlvbiBBZXQobCl7bGV0IGM9bnVsbDsxPT09bC5sZW5ndGg/Yz1sWzBdWzBdOmwubGVuZ3RoPjEmJihjPXtmcm9tOmxbMF1bMF0sdG86bFtsLmxlbmd0aC0xXVswXX0pLG51bGwhPT1jJiZ0aGlzLmNsZWFyQ2FjaGVCeVJhbmdlKGMpfWNvbnN0IE8yZT1uZXcgTWFwKFtbImlu''@;'; put 'put ''ZGV4ZXNTZXF1ZW5jZSIse2dldExpc3RXaXRoSW5zZXJ0ZWRJdGVtczpNRyxnZXRMaXN0V2l0aFJlbW92ZWRJdGVtczp4eH1dLFsicGh5c2ljYWxseUluZGV4ZWQiLHtnZXRMaXN0V2l0aEluc2VydGVkSXRlbXM6VEcsZ2V0TGlzdFdpdGhSZW1vdmVkSXRlbXM6a0d9XV0pLFAyZT1sPT57aWYo''@;'; put 'put ''ITE9PT1PMmUuaGFzKGwpKXRocm93IG5ldyBFcnJvcihgQWx0ZXIgc3RyYXRlZ3kgd2l0aCBJRCAnJHtsfScgZG9lcyBub3QgZXhpc3QuYCk7cmV0dXJuIE8yZS5nZXQobCl9LHtnZXRMaXN0V2l0aEluc2VydGVkSXRlbXM6RGV0LGdldExpc3RXaXRoUmVtb3ZlZEl0ZW1zOklldH09UDJlKCJw''@;'; put 'put ''aHlzaWNhbGx5SW5kZXhlZCIpLHtnZXRMaXN0V2l0aEluc2VydGVkSXRlbXM6T2V0LGdldExpc3RXaXRoUmVtb3ZlZEl0ZW1zOlBldH09UDJlKCJwaHlzaWNhbGx5SW5kZXhlZCIpO2NvbnN0IEdxPSJiaW5kUm93c1dpdGhIZWFkZXJzIixXZXQ9bmV3IE1hcChbWyJsb29zZSIsY2xhc3MgUmV0''@;'; put 'put ''IGV4dGVuZHMgbjd7Y29uc3RydWN0b3IoKXtzdXBlcihjPT5jKX1pbnNlcnQoYyxhKXtjb25zdCBkPUVHKHRoaXMuaW5kZXhlZFZhbHVlcyxhKTt0aGlzLmluZGV4ZWRWYWx1ZXM9RGV0KGQsYyxhLHRoaXMuaW5pdFZhbHVlT3JGbiksc3VwZXIuaW5zZXJ0KGMsYSl9cmVtb3ZlKGMpe2NvbnN0''@;'; put 'put ''IGE9SWV0KHRoaXMuaW5kZXhlZFZhbHVlcyxjKTt0aGlzLmluZGV4ZWRWYWx1ZXM9eEcoYSxjKSxzdXBlci5yZW1vdmUoYyl9fV0sWyJzdHJpY3QiLGNsYXNzIEZldCBleHRlbmRzIG43e2NvbnN0cnVjdG9yKCl7c3VwZXIoYz0+Yyl9aW5zZXJ0KGMsYSl7dGhpcy5pbmRleGVkVmFsdWVzPU9l''@;'; put 'put ''dCh0aGlzLmluZGV4ZWRWYWx1ZXMsYyxhLChkLGgpPT50aGlzLmdldE5leHRWYWx1ZShoKSksc3VwZXIuaW5zZXJ0KGMsYSl9cmVtb3ZlKGMpe3RoaXMuaW5kZXhlZFZhbHVlcz1QZXQodGhpcy5pbmRleGVkVmFsdWVzLGMpLHN1cGVyLnJlbW92ZShjKX1nZXROZXh0VmFsdWUoYyl7cmV0dXJu''@;'; put 'put ''IE1hdGgubWF4KC4uLnRoaXMuZ2V0VmFsdWVzKCkpKzErY319XV0pO3ZhciBGMmU9bmV3IFdlYWtTZXQ7Y2xhc3MgR2V0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIEhldChsLGMpeyhmdW5jdGlvbiBWZXQobCxjKXtpZihjLmhhcyhsKSl0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX0odGhpcyxGMmUpLGZ1bmN0aW9uIEJldChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gamV0KGwpe3ZhciBjPWZ1''@;'; put 'put ''bmN0aW9uIHpldChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywiaGVhZGVySW5kZXhlcyIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIEdxfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7''@;'; put 'put ''cmV0dXJuIDIxMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbR3FdfWVuYWJsZVBsdWdpbigpe2lmKHRoaXMuZW5hYmxlZClyZXR1cm47bGV0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtHcV07InN0cmluZyIhPXR5cGVvZiBjJiYoYz0ibG9vc2UiKTtjb25z''@;'; put 'put ''dCBhPVdldC5nZXQoYyk7dGhpcy5oZWFkZXJJbmRleGVzPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKCJiaW5kUm93c1dpdGhIZWFkZXJzIixuZXcgYSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dIZWFkZXIiLGQ9PmZ1bmN0aW9uIFVldChsLGMsYSl7aWYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9KEYyZSx0aGlzLCRldCkuY2FsbCh0aGlzLGQpKSxzdXBlci5lbmFi''@;'; put 'put ''bGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCgiYmluZFJvd3NXaXRoSGVhZGVycyIpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1kZXN0cm95KCl7c3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiAkZXQobCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aGVhZGVySW5kZXhlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbFJvdyhsKSl9ZnVuY3Rpb24gTjJlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBv''@;'; put 'put ''YmplY3QiKX1mdW5jdGlvbiBIMmUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFhldChsKXt2YXIgYz1mdW5jdGlvbiBKZXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNh''@;'; put 'put ''bGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmlu''@;'; put 'put ''ZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gVjJlKGwsYyl7cmV0dXJuIGwuZ2V0''@;'; put 'put ''KE9iKGwsYykpfWZ1bmN0aW9uICRxKGwsYyxhKXtyZXR1cm4gbC5zZXQoT2IobCxjKSxhKSxhfWZ1bmN0aW9uIE9iKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQ''@;'; put 'put ''cml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBDTz0iY29sbGFwc2libGVDb2x1bW5zIixldHQ9WyJuZXN0ZWRIZWFkZXJzIl0sUGI9ImNvbGxhcHNpYmxlSW5kaWNhdG9yIixCMmU9Q08sajJlPW5ldyBNYXAoW1siY29sbGFwc2UiLHtoaWRlQ29s''@;'; put 'put ''dW1uOiEwLGJlZm9yZUhvb2s6ImJlZm9yZUNvbHVtbkNvbGxhcHNlIixhZnRlckhvb2s6ImFmdGVyQ29sdW1uQ29sbGFwc2UifV0sWyJleHBhbmQiLHtoaWRlQ29sdW1uOiExLGJlZm9yZUhvb2s6ImJlZm9yZUNvbHVtbkV4cGFuZCIsYWZ0ZXJIb29rOiJhZnRlckNvbHVtbkV4cGFuZCJ9XV0p''@;'; put 'put ''O3ZhciBGYj1uZXcgV2Vha01hcCx6eD1uZXcgV2Vha1NldDtjbGFzcyB0dHQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gcWV0KGwsYyl7TjJlKGwsYyksYy5hZGQobCl9KHRoaXMsengpLEgyZSh0aGlzLCJuZXN0ZWRIZWFkZXJzUGx1Z2lu''@;'; put 'put ''IixudWxsKSxIMmUodGhpcywiaGVhZGVyU3RhdGVNYW5hZ2VyIixudWxsKSxmdW5jdGlvbiBLZXQobCxjLGEpe04yZShsLGMpLGMuc2V0KGwsYSl9KHRoaXMsRmIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIENPfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0''@;'; put 'put ''dXJuIDI5MH1zdGF0aWMgZ2V0IFBMVUdJTl9ERVBTKCl7cmV0dXJuWyJwbHVnaW46TmVzdGVkSGVhZGVycyJdfXN0YXRpYyBnZXQgU0VUVElOR19LRVlTKCl7cmV0dXJuW0NPLC4uLmV0dF19aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0NPXX1lbmFibGVQbHVn''@;'; put 'put ''aW4oKXt2YXIgYz10aGlzO2lmKHRoaXMuZW5hYmxlZClyZXR1cm47Y29uc3R7bmVzdGVkSGVhZGVyczphfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpO2F8fGlsKCJZb3UgbmVlZCB0byBjb25maWd1cmUgdGhlIE5lc3RlZCBIZWFkZXJzIHBsdWdpbiBpbiBvcmRlciB0byB1c2UgY29sbGFwc2li''@;'; put 'put ''bGUgaGVhZGVycy4iKSwkcShGYix0aGlzLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmNyZWF0ZUFuZFJlZ2lzdGVySW5kZXhNYXAodGhpcy5wbHVnaW5OYW1lLCJoaWRpbmciKSksdGhpcy5uZXN0ZWRIZWFkZXJzUGx1Z2luPXRoaXMuaG90LmdldFBsdWdpbigibmVzdGVkSGVhZGVycyIp''@;'; put 'put ''LHRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyPXRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbi5nZXRTdGF0ZU1hbmFnZXIoKSx0aGlzLmFkZEhvb2soImluaXQiLCgpPT5PYih6eCx0aGlzLGl0dCkuY2FsbCh0aGlzKSksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBPYih6eCxjLG90dCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gT2IoengsYyxudHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIiwoZCxoLGYpPT5PYih6eCx0aGlzLHJ0dCkuY2FsbCh0aGlzLGQsaCxm''@;'; put 'put ''KSksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmVuYWJsZVBsdWdpbigpLHRoaXMudXBkYXRlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7aWYodGhpcy5ob3Qudmlldyl7aWYoIXRoaXMubmVzdGVkSGVhZGVyc1BsdWdpbi5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzKXtjb25zdHtj''@;'; put 'put ''b2xsYXBzaWJsZUNvbHVtbnM6Y309dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTsiYm9vbGVhbiI9PXR5cGVvZiBjP3RoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLm1hcFN0YXRlKGE9Pih7Y29sbGFwc2libGU6YS5vcmlnQ29sc3Bhbj4xfSkpOkFycmF5LmlzQXJyYXkoYykmJih0aGlzLmhlYWRlclN0''@;'; put 'put ''YXRlTWFuYWdlci5tYXBTdGF0ZSgoKT0+KHtjb2xsYXBzaWJsZTohMX0pKSx0aGlzLmhlYWRlclN0YXRlTWFuYWdlci5tZXJnZVN0YXRlV2l0aChjKSl9c3VwZXIudXBkYXRlUGx1Z2luKCl9fWRpc2FibGVQbHVnaW4oKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFw''@;'; put 'put ''KHRoaXMucGx1Z2luTmFtZSksJHEoRmIsdGhpcyxudWxsKSx0aGlzLm5lc3RlZEhlYWRlcnNQbHVnaW49bnVsbCx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSx0aGlzLmNsZWFyQnV0dG9ucygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90Lmdl''@;'; put 'put ''dFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5hZGRTaG9ydGN1dCh7a2V5czpbWyJFbnRlciJdXSxjYWxsYmFjazooKT0+e3ZhciBjO2NvbnN0e3JvdzphLGNvbDpkfT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmhpZ2hsaWdodCx7Y29sbGFwc2libGU6aCxp''@;'; put 'put ''c0NvbGxhcHNlZDpmLGNvbHVtbkluZGV4OnZ9PW51bGwhPT0oYz10aGlzLmhlYWRlclN0YXRlTWFuYWdlci5nZXRIZWFkZXJUcmVlTm9kZURhdGEoYSxkKSkmJnZvaWQgMCE9PWM/Yzp7fTtpZihoKXJldHVybiBmP3RoaXMuZXhwYW5kU2VjdGlvbih7cm93OmEsY29sOnZ9KTp0aGlzLmNvbGxh''@;'; put 'put ''cHNlU2VjdGlvbih7cm93OmEsY29sOnZ9KSwhMX0scnVuT25seUlmOigpPT57dmFyIGMsYTtyZXR1cm4obnVsbD09PShjPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmlzU2luZ2xlKCkpJiYobnVsbD09PShhPXRoaXMuaG90LmdldFNlbGVj''@;'; put 'put ''dGVkUmFuZ2VMYXN0KCkpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmhpZ2hsaWdodC5pc0hlYWRlcigpKX0sZ3JvdXA6QjJlLHJlbGF0aXZlVG9Hcm91cDpZbSxwb3NpdGlvbjoiYmVmb3JlIn0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRD''@;'; put 'put ''b250ZXh0KCJncmlkIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChCMmUpfWNsZWFyQnV0dG9ucygpe2lmKCF0aGlzLmhvdC52aWV3KXJldHVybjtjb25zdCBjPXRoaXMuaG90LnZpZXcuX3d0LmdldFNldHRpbmcoImNvbHVtbkhlYWRlcnMiKS5sZW5ndGgsYT10aGlzLmhvdC52aWV3Ll93dC53''@;'; put 'put ''dFRhYmxlLlRIRUFELGQ9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuVEhFQUQsaD10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheT90aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRv''@;'; put 'put ''cElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5jbG9uZS53dFRhYmxlLlRIRUFEOm51bGwsZj1mdW5jdGlvbih2KXt2JiZ2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodil9O2dvKDAsYy0xLHY9Pntjb25zdCBTPWEuY2hpbGROb2Rlc1t2XSxWPWQuY2hpbGROb2Rlc1t2XSxRPWg/aC5jaGlsZE5v''@;'; put 'put ''ZGVzW3ZdOm51bGw7Z28oMCxTLmNoaWxkTm9kZXMubGVuZ3RoLTEsZGU9PntsZXQgcGU9Uy5jaGlsZE5vZGVzW2RlXS5xdWVyeVNlbGVjdG9yKGAuJHtQYn1gKTtmKHBlKSxWJiZWLmNoaWxkTm9kZXNbZGVdJiYocGU9Vi5jaGlsZE5vZGVzW2RlXS5xdWVyeVNlbGVjdG9yKGAuJHtQYn1gKSxm''@;'; put 'put ''KHBlKSksaCYmUSYmUS5jaGlsZE5vZGVzW2RlXSYmKHBlPVEuY2hpbGROb2Rlc1tkZV0ucXVlcnlTZWxlY3RvcihgLiR7UGJ9YCksZihwZSkpfSl9KX1leHBhbmRTZWN0aW9uKGMpe3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtjXSwiZXhwYW5kIil9Y29sbGFwc2VTZWN0aW9uKGMp''@;'; put 'put ''e3RoaXMudG9nZ2xlQ29sbGFwc2libGVTZWN0aW9uKFtjXSwiY29sbGFwc2UiKX10b2dnbGVBbGxDb2xsYXBzaWJsZVNlY3Rpb25zKGMpe2NvbnN0IGE9dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIubWFwTm9kZXMoZD0+e2NvbnN0e2NvbGxhcHNpYmxlOmgsb3JpZ0NvbHNwYW46ZixoZWFkZXJM''@;'; put 'put ''ZXZlbDp2LGNvbHVtbkluZGV4OlMsaXNDb2xsYXBzZWQ6Vn09ZDtpZighMD09PWgmJmY+MSYmKFYmJiJleHBhbmQiPT09Y3x8IVYmJiJjb2xsYXBzZSI9PT1jKSlyZXR1cm57cm93OnRoaXMuaGVhZGVyU3RhdGVNYW5hZ2VyLmxldmVsVG9Sb3dDb29yZHModiksY29sOlN9fSk7dGhpcy50b2dn''@;'; put 'put ''bGVDb2xsYXBzaWJsZVNlY3Rpb24oYSxjKX1jb2xsYXBzZUFsbCgpe3RoaXMudG9nZ2xlQWxsQ29sbGFwc2libGVTZWN0aW9ucygiY29sbGFwc2UiKX1leHBhbmRBbGwoKXt0aGlzLnRvZ2dsZUFsbENvbGxhcHNpYmxlU2VjdGlvbnMoImV4cGFuZCIpfXRvZ2dsZUNvbGxhcHNpYmxlU2VjdGlv''@;'; put 'put ''bihjLGEpe2lmKCFqMmUuaGFzKGEpKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYWN0aW9uIGlzIHBhc3NlZCAoJHthfSkuYCk7aWYoIUFycmF5LmlzQXJyYXkoYykpcmV0dXJuO2NvbnN0IGQ9RmgoYyxPZT0+e2xldHtyb3c6WWV9PU9lO3JldHVybiBZZTwwfSk7bGV0IGg9ZC5sZW5n''@;'; put 'put ''dGg+MDtUbihkLE9lPT57dmFyIFllO2xldHtyb3c6ZXQsY29sOmR0fT1PZTtjb25zdHtjb2xsYXBzaWJsZTpodCxpc0NvbGxhcHNlZDpNdH09bnVsbCE9PShZZT10aGlzLmhlYWRlclN0YXRlTWFuYWdlci5nZXRIZWFkZXJTZXR0aW5ncyhldCxkdCkpJiZ2b2lkIDAhPT1ZZT9ZZTp7fTtpZigh''@;'; put 'put ''aHR8fE10JiYiY29sbGFwc2UiPT09YXx8IU10JiYiZXhwYW5kIj09PWEpcmV0dXJuIGg9ITEsITF9KTtjb25zdCBmPVtdLHY9W107aCYmVG4oZCxPZT0+e2xldHtyb3c6WWUsY29sOmV0fT1PZTtjb25zdHtjb2xzcGFuQ29tcGVuc2F0aW9uOmR0LGFmZmVjdGVkQ29sdW1uczpodCxyb2xsYmFj''@;'; put 'put ''a01vZGlmaWNhdGlvbjpNdH09dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIudHJpZ2dlck5vZGVNb2RpZmljYXRpb24oYSxZZSxldCk7ZHQ+MCYmKHYucHVzaCguLi5odCksZi5wdXNoKE10KSl9KTtjb25zdCBTPXRoaXMuZ2V0Q29sbGFwc2VkQ29sdW1ucygpO2xldCBWPVtdOyJjb2xsYXBzZSI9''@;'; put 'put ''PT1hP1Y9UVkoWy4uLlMsLi4udl0pOiJleHBhbmQiPT09YSYmKFY9RmgoUyxPZT0+IXYuaW5jbHVkZXMoT2UpKSk7Y29uc3QgUT1qMmUuZ2V0KGEpO2lmKCExPT09dGhpcy5ob3QucnVuSG9va3MoUS5iZWZvcmVIb29rLFMsVixoKSlyZXR1cm4gdm9pZCBUbihmLE9lPT57T2UoKX0pO3RoaXMu''@;'; put 'put ''aG90LmJhdGNoRXhlY3V0aW9uKCgpPT57VG4odixPZT0+e1YyZShGYix0aGlzKS5zZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihPZSksUS5oaWRlQ29sdW1uKX0pfSwhMCk7Y29uc3QgcGU9dGhpcy5nZXRDb2xsYXBzZWRDb2x1bW5zKCkubGVuZ3RoIT09Uy5sZW5n''@;'; put 'put ''dGgsQ2U9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZigiY29sbGFwc2UiPT09YSYmcGUmJkNlKXtjb25zdHtyb3c6T2UsY29sOlllfT1DZS5oaWdobGlnaHQ7aWYoKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmlzSGlkZGVuKE9lKXx8dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBw''@;'; put 'put ''ZXIuaXNIaWRkZW4oWWUpKSYmdi5pbmNsdWRlcyhZZSkpe2NvbnN0IGR0PU9lPj0wP3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChPZSwxLCEwKTpPZSxodD1ZZT49MD90aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVu''@;'; put 'put ''SW5kZXgoWWUsMSwhMCk6WWU7bnVsbCE9PWR0JiZudWxsIT09aHQmJnRoaXMuaG90LnNlbGVjdENlbGwoZHQsaHQpfX10aGlzLmhvdC5ydW5Ib29rcyhRLmFmdGVySG9vayxTLFYsaCxwZSksdGhpcy5ob3QucmVuZGVyKCksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX1nZXRD''@;'; put 'put ''b2xsYXBzZWRDb2x1bW5zKCl7cmV0dXJuIFYyZShGYix0aGlzKS5nZXRIaWRkZW5JbmRleGVzKCl9ZGVzdHJveSgpeyRxKEZiLHRoaXMsbnVsbCksc3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBudHQobCxjLGEpe3ZhciBkO2NvbnN0e2NvbGxhcHNpYmxlOmgsb3JpZ0NvbHNwYW46Zixpc0Nv''@;'; put 'put ''bGxhcHNlZDp2fT1udWxsIT09KGQ9dGhpcy5oZWFkZXJTdGF0ZU1hbmFnZXIuZ2V0SGVhZGVyU2V0dGluZ3MoYSxsKSkmJnZvaWQgMCE9PWQ/ZDp7fSxTPWgmJmY+MSYmbD49dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCxWPXRoaXMuaG90LmdldFNldHRpbmdzKCku''@;'; put 'put ''YXJpYVRhZ3M7bGV0IFE9Yy5xdWVyeVNlbGVjdG9yKGAuJHtQYn1gKTt2YXIgZGU7VTgoYyxbTmgoIiIpWzBdXSksUz8oUXx8KFE9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG1pKFEsUGIpLGMucXVlcnlTZWxlY3RvcigiZGl2OmZpcnN0LWNoaWxkIikuYXBw''@;'; put 'put ''ZW5kQ2hpbGQoUSkpLGxzKFEsWyJjb2xsYXBzZWQiLCJleHBhbmRlZCJdKSx2PyhtaShRLCJjb2xsYXBzZWQiKSxPbShRLCIrIiksViYmVm8oYywuLi5OaCghMSkpKToobWkoUSwiZXhwYW5kZWQiKSxPbShRLCItIiksViYmVm8oYywuLi5OaCghMCkpKSxWJiZWbyhRLC4uLk00KCkpKTpudWxs''@;'; put 'put ''PT09KGRlPVEpfHx2b2lkIDA9PT1kZXx8ZGUucmVtb3ZlKCl9ZnVuY3Rpb24gcnR0KGwsYyl7WW8obC50YXJnZXQsUGIpJiYoWW8obC50YXJnZXQsImV4cGFuZGVkIik/KHRoaXMuZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChsLnRhcmdldCwibW91c2V1cCIpLHRoaXMudG9nZ2xlQ29sbGFwc2li''@;'; put 'put ''bGVTZWN0aW9uKFtjXSwiY29sbGFwc2UiKSk6WW8obC50YXJnZXQsImNvbGxhcHNlZCIpJiYodGhpcy5ldmVudE1hbmFnZXIuZmlyZUV2ZW50KGwudGFyZ2V0LCJtb3VzZXVwIiksdGhpcy50b2dnbGVDb2xsYXBzaWJsZVNlY3Rpb24oW2NdLCJleHBhbmQiKSksamgobCkpfWZ1bmN0aW9uIGl0''@;'; put 'put ''dCgpe3RoaXMudXBkYXRlUGx1Z2luKCl9ZnVuY3Rpb24gb3R0KGwsYyl7Y3x8dGhpcy51cGRhdGVQbHVnaW4oKX1mdW5jdGlvbiBmNyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gc3R0KGwpe3ZhciBjPWZ1bmN0aW9uIGF0dChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJu''@;'; put 'put ''IGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUg''@;'; put 'put ''dmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6''@;'; put 'put ''ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBsdHQ9WyJzb3J0RW1wdHlDZWxscyIsImluZGljYXRvciIsImhlYWRlckFjdGlvbiIsImNvbXBhcmVGdW5jdGlvbkZhY3RvcnkiXTtjbGFzcyBodHR7Y29uc3RydWN0b3IoYyxhKXtmNyh0aGlzLCJob3QiLHZvaWQgMCksZjcodGhpcywi''@;'; put 'put ''c29ydGluZ1N0YXRlcyIsbmV3IFpMKSxmNyh0aGlzLCJzb3J0RW1wdHlDZWxscyIsITEpLGY3KHRoaXMsImluZGljYXRvciIsITApLGY3KHRoaXMsImhlYWRlckFjdGlvbiIsITApLGY3KHRoaXMsImNvbXBhcmVGdW5jdGlvbkZhY3RvcnkiLHZvaWQgMCksZjcodGhpcywibWFwTmFtZSIsdm9p''@;'; put 'put ''ZCAwKSx0aGlzLmhvdD1jLHRoaXMubWFwTmFtZT1hLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKGEsdGhpcy5zb3J0aW5nU3RhdGVzKX11cGRhdGVBbGxDb2x1bW5zUHJvcGVydGllcyhjKXtfcyhjKSYmQ3MoYywoYSxkKT0+e2x0dC5pbmNsdWRlcyhkKSYmKHRoaXNb''@;'; put 'put ''ZF09YSl9KX1nZXRBbGxDb2x1bW5zUHJvcGVydGllcygpe2NvbnN0IGM9e3NvcnRFbXB0eUNlbGxzOnRoaXMuc29ydEVtcHR5Q2VsbHMsaW5kaWNhdG9yOnRoaXMuaW5kaWNhdG9yLGhlYWRlckFjdGlvbjp0aGlzLmhlYWRlckFjdGlvbn07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMu''@;'; put 'put ''Y29tcGFyZUZ1bmN0aW9uRmFjdG9yeSYmKGMuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT10aGlzLmNvbXBhcmVGdW5jdGlvbkZhY3RvcnkpLGN9Z2V0U29ydE9yZGVyT2ZDb2x1bW4oYyl7dmFyIGE7cmV0dXJuIG51bGw9PT0oYT10aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KHRo''@;'; put 'put ''aXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYykpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zb3J0T3JkZXJ9Z2V0SW5kZXhPZkNvbHVtbkluU29ydFF1ZXVlKGMpe3JldHVybiBjPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYyksdGhpcy5zb3J0aW5nU3RhdGVzLmdldEVudHJpZXMoKS5maW5k''@;'; put 'put ''SW5kZXgoYT0+e2xldFtkXT1hO3JldHVybiBkPT09Y30pfWdldE51bWJlck9mU29ydGVkQ29sdW1ucygpe3JldHVybiB0aGlzLnNvcnRpbmdTdGF0ZXMuZ2V0TGVuZ3RoKCl9aXNMaXN0T2ZTb3J0ZWRDb2x1bW5zRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMuZ2V0TnVtYmVyT2ZTb3J0ZWRDb2x1''@;'; put 'put ''bW5zKCl9aXNDb2x1bW5Tb3J0ZWQoYyl7cmV0dXJuIF9zKHRoaXMuc29ydGluZ1N0YXRlcy5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKSkpfWdldFNvcnRTdGF0ZXMoKXtyZXR1cm4gbnVsbD09PXRoaXMuc29ydGluZ1N0YXRlcz9bXTp0aGlzLnNvcnRpbmdT''@;'; put 'put ''dGF0ZXMuZ2V0RW50cmllcygpLm1hcChhPT57bGV0W2QsaF09YTtyZXR1cm57Y29sdW1uOnRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGQpLC4uLmh9fSl9Z2V0Q29sdW1uU29ydFN0YXRlKGMpe2NvbnN0IGE9dGhpcy5nZXRTb3J0T3JkZXJPZkNvbHVtbihjKTtpZihzbyhhKSlyZXR1cm57Y29s''@;'; put 'put ''dW1uOmMsc29ydE9yZGVyOmF9fXNldFNvcnRTdGF0ZXMoYyl7dGhpcy5zb3J0aW5nU3RhdGVzLmNsZWFyKCk7Zm9yKGxldCBhPTA7YTxjLmxlbmd0aDthKz0xKXRoaXMuc29ydGluZ1N0YXRlcy5zZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjW2FdLmNvbHVtbiks''@;'; put 'put ''e3NvcnRPcmRlcjpjW2FdLnNvcnRPcmRlcn0pfWRlc3Ryb3koKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMubWFwTmFtZSksdGhpcy5zb3J0aW5nU3RhdGVzPW51bGx9fWZ1bmN0aW9uIHoyZShsLGMsYSl7Y29uc3QgZD1jLmxvY2FsZTtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oaCxmKXtjb25zdHtzb3J0RW1wdHlDZWxsczp2fT1hO3JldHVybiJzdHJpbmciPT10eXBlb2YgaCYmKGg9aC50b0xvY2FsZUxvd2VyQ2FzZShkKSksInN0cmluZyI9PXR5cGVvZiBmJiYoZj1mLnRvTG9jYWxlTG93ZXJDYXNlKGQpKSxoPT09Zj96MzpvYyhoKT9vYyhmKT96Mzp2JiYi''@;'; put 'put ''YXNjIj09PWw/bGM6Y2M6b2MoZik/diYmImFzYyI9PT1sP2NjOmxjOmlzTmFOKGgpJiYhaXNOYU4oZik/ImFzYyI9PT1sP2NjOmxjOiFpc05hTihoKSYmaXNOYU4oZil8fChpc05hTihoKXx8aXNOYU4oZil8fChoPXBhcnNlRmxvYXQoaCksZj1wYXJzZUZsb2F0KGYpKSxoPGYpPyJhc2MiPT09''@;'; put 'put ''bD9sYzpjYzpoPmY/ImFzYyI9PT1sP2NjOmxjOnozfX1jb25zdHtyZWdpc3RlcjpVeCxnZXRJdGVtOloyZSxoYXNJdGVtOnd0dH09YWYoInNvcnRpbmcuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeSIpLHtyZWdpc3RlcjpZMmUsZ2V0SXRlbTpDdHR9PWFmKCJzb3J0aW5nLm1haW5Tb3J0Q29tcGFy''@;'; put 'put ''YXRvciIpO2Z1bmN0aW9uIFcyZShsKXtyZXR1cm4gd3R0KGwpP1oyZShsKTpaMmUoImRlZmF1bHQiKX1VeCgiY2hlY2tib3giLGZ1bmN0aW9uIGd0dChsLGMsYSl7Y29uc3QgZD1jLmNoZWNrZWRUZW1wbGF0ZSxoPWMudW5jaGVja2VkVGVtcGxhdGUse3NvcnRFbXB0eUNlbGxzOmZ9PWE7cmV0''@;'; put 'put ''dXJuIGZ1bmN0aW9uKHYsUyl7Y29uc3QgVj1vYyh2KSxRPW9jKFMpLGRlPVY/aDp2LHBlPVE/aDpTLENlPWRlPT09aHx8ZGU9PT1kLE9lPXBlPT09aHx8cGU9PT1kO2lmKCExPT09Zil7aWYoViYmITE9PT1RKXJldHVybiBjYztpZighMT09PVYmJlEpcmV0dXJuIGxjfXJldHVybiExPT09Q2Um''@;'; put 'put ''Jk9lPyJhc2MiPT09bD9sYzpjYzpDZSYmITE9PT1PZT8iYXNjIj09PWw/Y2M6bGM6ITE9PT1DZSYmITE9PT1PZT96MmUobCxjLGEpKHYsUyk6ZGU9PT1oJiZwZT09PWQ/ImFzYyI9PT1sP2xjOmNjOmRlPT09ZCYmcGU9PT1oPyJhc2MiPT09bD9jYzpsYzp6M319KSxVeCgiZGF0ZSIsZnVuY3Rp''@;'; put 'put ''b24gdnR0KGwsYyxhKXtyZXR1cm4gWDJlKGwsYy5kYXRlRm9ybWF0LGEpfSksVXgoImRlZmF1bHQiLHoyZSksVXgoIm51bWVyaWMiLGZ1bmN0aW9uIGZ0dChsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKGQsaCl7Y29uc3QgZj1wYXJzZUZsb2F0KGQpLHY9cGFyc2VGbG9hdChoKSx7c29ydEVtcHR5''@;'; put 'put ''Q2VsbHM6U309YTtpZihmPT09dnx8aXNOYU4oZikmJmlzTmFOKHYpKXJldHVybiB6MztpZihTKXtpZihvYyhkKSlyZXR1cm4iYXNjIj09PWw/bGM6Y2M7aWYob2MoaCkpcmV0dXJuImFzYyI9PT1sP2NjOmxjfXJldHVybiBpc05hTihmKT9jYzppc05hTih2KT9sYzpmPHY/ImFzYyI9PT1sP2xj''@;'; put 'put ''OmNjOmY+dj8iYXNjIj09PWw/Y2M6bGM6ejN9fSksVXgoInRpbWUiLGZ1bmN0aW9uIGJ0dChsLGMsYSl7cmV0dXJuIFgyZShsLGMudGltZUZvcm1hdCxhKX0pO2NvbnN0IHozPTAsbGM9LTEsY2M9MSxTTz0iYXNjIixNTz0iZGVzYyIsRzJlPSJjb2xIZWFkZXIiO2Z1bmN0aW9uICQyZShsKXtp''@;'; put 'put ''ZihsIT09TU8pcmV0dXJuIGw9PT1TTz9NTzpTT31mdW5jdGlvbiBxMmUobCl7cmV0dXJuIGwucXVlcnlTZWxlY3RvcihgLiR7RzJlfWApfWZ1bmN0aW9uIEsyZShsLGMpe2lmKGw8MHx8IWMucGFyZW50Tm9kZSlyZXR1cm4hMTtjb25zdCBhPWMucGFyZW50Tm9kZS5wYXJlbnROb2RlLmNoaWxk''@;'; put 'put ''Tm9kZXM7cmV0dXJuIEFycmF5LmZyb20oYSkuaW5kZXhPZihjLnBhcmVudE5vZGUpLWEubGVuZ3RoPT0tMX1mdW5jdGlvbiBxcShsLGMsYSl7cmV0dXJuLTE9PT1sJiZjPj0wJiYhMT09PU5tKGEpfWZ1bmN0aW9uIFgyZShsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKGQsaCl7Y29uc3R7c29ydEVt''@;'; put 'put ''cHR5Q2VsbHM6Zn09YTtpZihkPT09aClyZXR1cm4gejM7aWYob2MoZCkpcmV0dXJuIG9jKGgpP3ozOmYmJiJhc2MiPT09bD9sYzpjYztpZihvYyhoKSlyZXR1cm4gZiYmImFzYyI9PT1sP2NjOmxjO2NvbnN0IHY9YXMoZCxjKSxTPWFzKGgsYyk7cmV0dXJuIHYuaXNWYWxpZCgpP1MuaXNWYWxp''@;'; put 'put ''ZCgpP1MuaXNBZnRlcih2KT8iYXNjIj09PWw/bGM6Y2M6Uy5pc0JlZm9yZSh2KT8iYXNjIj09PWw/Y2M6bGM6ejM6bGM6Y2N9fWNvbnN0IEoyZT0iaW5kaWNhdG9yRGlzYWJsZWQiLFEyZT0iY29sdW1uU29ydGluZyIsZWZlPSJzb3J0QWN0aW9uIix0ZmU9bmV3IE1hcChbW1NPLCJhc2NlbmRp''@;'; put 'put ''bmciXSxbTU8sImRlc2NlbmRpbmciXV0pO2Z1bmN0aW9uIHhPKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBMdHQobCl7dmFyIGM9ZnVuY3Rpb24gT3R0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAw''@;'; put 'put ''IT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1i''@;'; put 'put ''ZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIE5iKGws''@;'; put 'put ''YyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBFTz0iY29sdW1uU29ydGlu''@;'; put 'put ''ZyIsVE89ImFwcGVuZCIsbmZlPUVPO1kyZShFTyxmdW5jdGlvbiBEdHQobCxjKXtyZXR1cm4gZnVuY3Rpb24oYSxkKXtjb25zdFssLi4uaF09YSxbLC4uLmZdPWQ7cmV0dXJuIGZ1bmN0aW9uKFMpe2NvbnN0IFY9bFswXSxRPWNbMF0sZGU9aFswXSxwZT1mWzBdLENlPVEuY29sdW1uU29ydGlu''@;'; put 'put ''ZztyZXR1cm4oQ2UuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT9DZS5jb21wYXJlRnVuY3Rpb25GYWN0b3J5OlcyZShRLnR5cGUpKShWLFEsQ2UpKGRlLHBlKX0oKX19KSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uU29ydCIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lz''@;'; put 'put ''dGVyKCJhZnRlckNvbHVtblNvcnQiKTt2YXIgcDc9bmV3IFdlYWtTZXQ7Y2xhc3MgcmZlIGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIEl0dChsLGMpeyhmdW5jdGlvbiBSdHQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX0odGhpcyxwNykseE8odGhpcywiY29sdW1uU3RhdGVzTWFuYWdlciIsbnVsbCkseE8odGhpcywiY29sdW1uTWV0YUNhY2hlIixudWxsKSx4Tyh0''@;'; put 'put ''aGlzLCJwbHVnaW5LZXkiLEVPKSx4Tyh0aGlzLCJpbmRleGVzU2VxdWVuY2VDYWNoZSIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIEVPfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDUwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVt0aGlzLnBsdWdpbktleV19ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmNvbHVtblN0YXRlc01hbmFnZXI9bmV3IGh0dCh0aGlzLmhvdCxgJHt0aGlzLnBsdWdpbktleX0uc29ydGluZ1N0YXRlc2ApLHRoaXMuY29sdW1uTWV0YUNhY2hlPW5l''@;'; put 'put ''dyBabShhPT57bGV0IGQ9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oYSk7cmV0dXJuIG51bGw9PT1kJiYoZD1hKSx0aGlzLmdldE1lcmdlZFBsdWdpblNldHRpbmdzKGQpfSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoYCR7dGhpcy5wbHVnaW5LZXl9LmNvbHVtbk1l''@;'; put 'put ''dGFgLHRoaXMuY29sdW1uTWV0YUNhY2hlKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIiwoYSxkKT0+TmIocDcsdGhpcyxOdHQpLmNhbGwodGhpcyxhLGQpKSx0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gTmIocDcsYyxWdHQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLChhLGQpPT50aGlzLm9uQWZ0ZXJPbkNlbGxNb3VzZURvd24oYSxkKSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJhZnRlckluaXQiLCgpPT5OYihwNyx0aGlzLEtxKS5jYWxsKHRoaXMpKSx0aGlzLmFkZEhvb2soImFmdGVyTG9hZERhdGEiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNb''@;'; put 'put ''aF07cmV0dXJuIE5iKHA3LGMsSHR0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmhvdC52aWV3JiZOYihwNyx0aGlzLEtxKS5jYWxsKHRoaXMpLHRoaXMucmVnaXN0ZXJTaG9ydGN1dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe2NvbnN0IGM9KGEsZCk9Pntjb25zdCBo''@;'; put 'put ''PXEyZShkKTshMT09PUsyZShhLGQpfHxudWxsPT09aHx8dGhpcy51cGRhdGVIZWFkZXJDbGFzc2VzKGgpfTt0aGlzLmhvdC5hZGRIb29rKCJhZnRlckdldENvbEhlYWRlciIsYyksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsKCk9Pnt0aGlzLmhvdC5yZW1vdmVIb29r''@;'; put 'put ''KCJhZnRlckdldENvbEhlYWRlciIsYyl9KSx0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e251bGwhPT10aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlJiYodGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGUuZ2V0VmFs''@;'; put 'put ''dWVzKCkpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5LZXkpKX0sITApLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoYCR7dGhpcy5wbHVnaW5LZXl9LmNvbHVtbk1ldGFgKSx0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIu''@;'; put 'put ''ZGVzdHJveSgpLHRoaXMuY29sdW1uTWV0YUNhY2hlPW51bGwsdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyPW51bGwsdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCku''@;'; put 'put ''Z2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIkVudGVyIl1dLGNhbGxiYWNrOigpPT57Y29uc3R7aGlnaGxpZ2h0OmN9PXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuIHRoaXMuc29ydCh0aGlzLmdldENvbHVtbk5leHRDb25maWcoYy5jb2wpKSwh''@;'; put 'put ''MX0scnVuT25seUlmOigpPT57dmFyIGMsYTtjb25zdCBkPW51bGw9PT0oYz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGlnaHQ7cmV0dXJuIGQmJihudWxsPT09KGE9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZv''@;'; put 'put ''aWQgMD09PWE/dm9pZCAwOmEuaXNTaW5nbGUoKSkmJnRoaXMuaG90LnNlbGVjdGlvbi5pc0NlbGxWaXNpYmxlKGQpJiYtMT09PWQucm93JiZkLmNvbD49MH0scmVsYXRpdmVUb0dyb3VwOlltLHBvc2l0aW9uOiJiZWZvcmUiLGdyb3VwOm5mZX0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlz''@;'; put 'put ''LmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChuZmUpfXNvcnQoYyl7Y29uc3QgYT10aGlzLmdldFNvcnRDb25maWcoKSxkPXRoaXMuZ2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKGMpLGg9dGhpcy5hcmVWYWxpZFNvcnRD''@;'; put 'put ''b25maWdzKGQpOyExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtblNvcnQiLGEsZCxoKSYmKDA9PT1hLmxlbmd0aCYmbnVsbD09PXRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGUmJih0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lz''@;'; put 'put ''dGVyTWFwKHRoaXMucGx1Z2luS2V5LG5ldyBRZGUpLHRoaXMuaW5kZXhlc1NlcXVlbmNlQ2FjaGUuc2V0VmFsdWVzKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldEluZGV4ZXNTZXF1ZW5jZSgpKSksaCYmKHRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5zZXRTb3J0U3RhdGVzKGQpLHRoaXMu''@;'; put 'put ''c29ydEJ5UHJlc2V0U29ydFN0YXRlcyhkKSx0aGlzLnNhdmVBbGxTb3J0U2V0dGluZ3MoZCkpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtblNvcnQiLGEsaD9kOmEsaCksaCYmKHRoaXMuaG90LnJlbmRlcigpLHRoaXMuaG90LmZvcmNlRnVsbFJlbmRlcj0hMSx0aGlzLmhvdC52aWV3''@;'; put 'put ''LnJlbmRlcigpKSl9Y2xlYXJTb3J0KCl7dGhpcy5zb3J0KFtdKX1pc1NvcnRlZCgpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuaXNMaXN0T2ZTb3J0ZWRDb2x1bW5zRW1wdHkoKX1nZXRTb3J0Q29uZmlnKGMpe3JldHVybiBzbyhjKT90aGlzLmNvbHVt''@;'; put 'put ''blN0YXRlc01hbmFnZXIuZ2V0Q29sdW1uU29ydFN0YXRlKGMpOnRoaXMuY29sdW1uU3RhdGVzTWFuYWdlci5nZXRTb3J0U3RhdGVzKCl9c2V0U29ydENvbmZpZyhjKXtjb25zdCBhPXRoaXMuZ2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKGMpO3RoaXMuYXJlVmFsaWRTb3J0Q29uZmlncyhhKSYm''@;'; put 'put ''dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLnNldFNvcnRTdGF0ZXMoYSl9Z2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3JldHVybiBBcnJheS5pc0FycmF5KGMpP2Muc2xpY2Uo''@;'; put 'put ''MCwxKTpbY119YXJlVmFsaWRTb3J0Q29uZmlncyhjKXtjb25zdCBhPXRoaXMuaG90LmNvdW50Q29scygpO3JldHVybiBmdW5jdGlvbiB4dHQobCl7aWYobC5zb21lKGE9PiExPT09ZnVuY3Rpb24gTXR0KGwpe2lmKCExPT09X3MobCkpcmV0dXJuITE7Y29uc3R7Y29sdW1uOmMsc29ydE9yZGVy''@;'; put 'put ''OmF9PWw7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoYykmJltTTyxNT10uaW5jbHVkZXMoYSl9KGEpKSlyZXR1cm4hMTtjb25zdCBjPWwubWFwKGE9PntsZXR7Y29sdW1uOmR9PWE7cmV0dXJuIGR9KTtyZXR1cm4gbmV3IFNldChjKS5zaXplPT09Yy5sZW5ndGh9KGMpJiZjLmV2ZXJ5KGQ9Pnts''@;'; put 'put ''ZXR7Y29sdW1uOmh9PWQ7cmV0dXJuIGg8PWEmJmg+PTB9KX1zYXZlQWxsU29ydFNldHRpbmdzKGMpe2NvbnN0IGE9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEFsbENvbHVtbnNQcm9wZXJ0aWVzKCk7YS5pbml0aWFsQ29uZmlnPXhzKGMsaD0+e2xldHtjb2x1bW46ZiwuLi52fT1oO3Jl''@;'; put 'put ''dHVybntjb2x1bW46dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihmKSwuLi52fX0pLHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwiY29sdW1uU29ydGluZyIsYSl9Z2V0QWxsU2F2ZWRTb3J0U2V0dGluZ3MoKXtjb25zdCBjPXt9O3RoaXMuaG90LnJ1bkhvb2tzKCJw''@;'; put 'put ''ZXJzaXN0ZW50U3RhdGVMb2FkIiwiY29sdW1uU29ydGluZyIsYyk7Y29uc3QgYT1jLnZhbHVlO3JldHVybiBzbyhhKSYmQXJyYXkuaXNBcnJheShhLmluaXRpYWxDb25maWcpJiYoYS5pbml0aWFsQ29uZmlnPXhzKGEuaW5pdGlhbENvbmZpZyxoPT57bGV0e2NvbHVtbjpmLC4uLnZ9PWg7cmV0''@;'; put 'put ''dXJue2NvbHVtbjp0aGlzLmhvdC50b1Zpc3VhbENvbHVtbihmKSwuLi52fX0pKSxhfWdldENvbHVtbk5leHRDb25maWcoYyl7Y29uc3QgYT10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0U29ydE9yZGVyT2ZDb2x1bW4oYyk7aWYoc28oYSkpe2NvbnN0IGg9JDJlKGEpO3JldHVybiBzbyho''@;'; put 'put ''KT97Y29sdW1uOmMsc29ydE9yZGVyOmh9OnZvaWQgMH1jb25zdCBkPXRoaXMuaG90LmNvdW50Q29scygpO2lmKE51bWJlci5pc0ludGVnZXIoYykmJmM+PTAmJmM8ZClyZXR1cm57Y29sdW1uOmMsc29ydE9yZGVyOiQyZSgpfX1nZXROZXh0U29ydENvbmZpZyhjKXtsZXQgYT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06VE87Y29uc3QgZD10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIuZ2V0SW5kZXhPZkNvbHVtbkluU29ydFF1ZXVlKGMpLGg9LTEhPT1kLGY9dGhpcy5nZXRTb3J0Q29uZmlnKCksdj10aGlzLmdldENvbHVtbk5leHRD''@;'; put 'put ''b25maWcoYyk7aWYoaCl7aWYoZGwodikpcmV0dXJuWy4uLmYuc2xpY2UoMCxkKSwuLi5mLnNsaWNlKGQrMSldO2lmKGE9PT1UTylyZXR1cm5bLi4uZi5zbGljZSgwLGQpLC4uLmYuc2xpY2UoZCsxKSx2XTtpZigicmVwbGFjZSI9PT1hKXJldHVyblsuLi5mLnNsaWNlKDAsZCksdiwuLi5mLnNs''@;'; put 'put ''aWNlKGQrMSldfXJldHVybiBzbyh2KT9mLmNvbmNhdCh2KTpmfWdldFBsdWdpbkNvbHVtbkNvbmZpZyhjKXtpZihfcyhjKSl7Y29uc3QgYT1jW3RoaXMucGx1Z2luS2V5XTtpZihfcyhhKSlyZXR1cm4gYX1yZXR1cm57fX1nZXRNZXJnZWRQbHVnaW5TZXR0aW5ncyhjKXtjb25zdCBhPXRoaXMu''@;'; put 'put ''aG90LmdldFNldHRpbmdzKClbdGhpcy5wbHVnaW5LZXldLGQ9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldEFsbENvbHVtbnNQcm9wZXJ0aWVzKCksaD10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGMpLGY9T2JqZWN0LmdldFByb3RvdHlwZU9mKGgpO3JldHVybiBBcnJheS5pc0FycmF5KGYu''@;'; put 'put ''Y29sdW1ucyk/T2JqZWN0LmFzc2lnbihkLGEsdGhpcy5nZXRQbHVnaW5Db2x1bW5Db25maWcoZi5jb2x1bW5zW2NdKSk6aGwoZi5jb2x1bW5zKT9PYmplY3QuYXNzaWduKGQsYSx0aGlzLmdldFBsdWdpbkNvbHVtbkNvbmZpZyhmLmNvbHVtbnMoYykpKTpPYmplY3QuYXNzaWduKGQsYSl9Z2V0''@;'; put 'put ''Rmlyc3RDZWxsU2V0dGluZ3MoYyl7Y29uc3QgYT10aGlzLmhvdC5nZXRDZWxsTWV0YSgwLGMpLGQ9T2JqZWN0LmNyZWF0ZShhKTtyZXR1cm4gZFt0aGlzLnBsdWdpbktleV09dGhpcy5jb2x1bW5NZXRhQ2FjaGUuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYykp''@;'; put 'put ''LGR9Z2V0TnVtYmVyT2ZSb3dzVG9Tb3J0KGMpe2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTtyZXR1cm4gYS5tYXhSb3dzPD1jP2EubWF4Um93czpjLWEubWluU3BhcmVSb3dzfXNvcnRCeVByZXNldFNvcnRTdGF0ZXMoYyl7aWYoMD09PWMubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMu''@;'; put 'put ''aG90LnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmluZGV4ZXNTZXF1ZW5jZUNhY2hlLmdldFZhbHVlcygpKTtjb25zdCBhPVtdLGQ9dGhpcy5ob3QuY291bnRSb3dzKCksaD1RPT54cyhjLGRlPT50aGlzLmhvdC5nZXREYXRhQXRDZWxsKFEsZGUuY29sdW1uKSk7Zm9y''@;'; put 'put ''KGxldCBRPTA7UTx0aGlzLmdldE51bWJlck9mUm93c1RvU29ydChkKTtRKz0xKWEucHVzaChbdGhpcy5ob3QudG9QaHlzaWNhbFJvdyhRKV0uY29uY2F0KGgoUSkpKTtjb25zdCBmPXhzKGEsUT0+UVswXSk7IWZ1bmN0aW9uIFN0dChsLGMpe2NvbnN0IGE9Q3R0KGMpO2Zvcih2YXIgZD1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQ+Mj9kLTI6MCksZj0yO2Y8ZDtmKyspaFtmLTJdPWFyZ3VtZW50c1tmXTtsLnNvcnQoYSguLi5oKSl9KGEsdGhpcy5wbHVnaW5LZXkseHMoYyxRPT5RLnNvcnRPcmRlcikseHMoYyxRPT50aGlzLmdldEZpcnN0Q2VsbFNldHRpbmdzKFEuY29sdW1u''@;'; put 'put ''KSkpO2ZvcihsZXQgUT1hLmxlbmd0aDtRPGQ7USs9MSlhLnB1c2goW1FdLmNvbmNhdChoKFEpKSk7Y29uc3Qgdj14cyhhLFE9PlFbMF0pLFM9bmV3IE1hcCh4cyhmLChRLGRlKT0+W1EsdltkZV1dKSksVj14cyh0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSxR''@;'; put 'put ''PT5TLmhhcyhRKT9TLmdldChRKTpRKTt0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5zZXRJbmRleGVzU2VxdWVuY2UoVil9c29ydEJ5U2V0dGluZ3MoYyl7aWYoX3MoYykpe3RoaXMuY29sdW1uU3RhdGVzTWFuYWdlci51cGRhdGVBbGxDb2x1bW5zUHJvcGVydGllcyhjKTtjb25zdCBhPWMuaW5p''@;'; put 'put ''dGlhbENvbmZpZzsoQXJyYXkuaXNBcnJheShhKXx8X3MoYSkpJiZ0aGlzLnNvcnQoYSl9ZWxzZSB0aGlzLmhvdC5yZW5kZXIoKX11cGRhdGVIZWFkZXJDbGFzc2VzKGMpe2lmKGxzKGMsZnVuY3Rpb24gQXR0KCl7cmV0dXJuIEFycmF5LmZyb20odGZlLnZhbHVlcygpKS5jb25jYXQoZWZlLEoy''@;'; put 'put ''ZSxRMmUpfSgpKSwhMSE9PXRoaXMuZW5hYmxlZCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYT4xP2EtMTowKSxoPTE7aDxhO2grKylkW2gtMV09YXJndW1lbnRzW2hdO21pKGMsZnVuY3Rpb24ga3R0KGwsYyxhLGQpe2NvbnN0IGg9W1EyZV07aWYoZCYmaC5wdXNo''@;'; put 'put ''KGVmZSksITE9PT1hKXJldHVybiBoLnB1c2goSjJlKSxoO2NvbnN0IGY9bC5nZXRTb3J0T3JkZXJPZkNvbHVtbihjKTtyZXR1cm4gc28oZikmJmgucHVzaCh0ZmUuZ2V0KGYpKSxofSguLi5kKSl9fW9uVXBkYXRlU2V0dGluZ3MoYyl7c3VwZXIub25VcGRhdGVTZXR0aW5ncygpLG51bGwhPT10''@;'; put 'put ''aGlzLmNvbHVtbk1ldGFDYWNoZSYmdGhpcy5jb2x1bW5NZXRhQ2FjaGUuaW5pdCh0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSksc28oY1t0aGlzLnBsdWdpbktleV0pJiZ0aGlzLnNvcnRCeVNldHRpbmdzKGNbdGhpcy5wbHVnaW5LZXldKX13YXNDbGlj''@;'; put 'put ''a2FibGVIZWFkZXJDbGlja2VkKGMsYSl7cmV0dXJuIHRoaXMuZ2V0Rmlyc3RDZWxsU2V0dGluZ3MoYSlbdGhpcy5wbHVnaW5LZXldLmhlYWRlckFjdGlvbiYmWW8oYy50YXJnZXQsRzJlKX1vbkFmdGVyT25DZWxsTW91c2VEb3duKGMsYSl7ITEhPT1xcShhLnJvdyxhLmNvbCxjKSYmdGhpcy53''@;'; put 'put ''YXNDbGlja2FibGVIZWFkZXJDbGlja2VkKGMsYS5jb2wpJiYodGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpJiYodGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhhLmNvbCkpLHRoaXMuc29ydCh0aGlzLmdldENvbHVtbk5l''@;'; put 'put ''eHRDb25maWcoYS5jb2wpKSl9ZGVzdHJveSgpe3ZhciBjO251bGw9PT0oYz10aGlzLmNvbHVtblN0YXRlc01hbmFnZXIpfHx2b2lkIDA9PT1jfHxjLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIEtxKCl7Y29uc3QgbD10aGlzLmdldEFsbFNhdmVkU29ydFNldHRpbmdzKCk7''@;'; put 'put ''aWYoX3MobCkpdGhpcy5zb3J0QnlTZXR0aW5ncyhsKTtlbHNle2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV07dGhpcy5zb3J0QnlTZXR0aW5ncyhjKX19ZnVuY3Rpb24gTnR0KGwsYyl7Y29uc3QgYT1xMmUoYyk7aWYoITE9PT1LMmUobCxjKXx8bnVsbD09''@;'; put 'put ''PWEpcmV0dXJuO2NvbnN0IGQ9dGhpcy5nZXRGaXJzdENlbGxTZXR0aW5ncyhsKVt0aGlzLnBsdWdpbktleV07aWYodGhpcy51cGRhdGVIZWFkZXJDbGFzc2VzKGEsdGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLGwsZC5pbmRpY2F0b3IsZC5oZWFkZXJBY3Rpb24pLHRoaXMuaG90LmdldFNldHRp''@;'; put 'put ''bmdzKCkuYXJpYVRhZ3Mpe2NvbnN0IHY9dGhpcy5jb2x1bW5TdGF0ZXNNYW5hZ2VyLmdldFNvcnRPcmRlck9mQ29sdW1uKGwpO1ZvKGMsLi4uKGw9PlsiYXJpYS1zb3J0IixsXSkodj9gJHt2fWVuZGluZ2A6Im5vbmUiKSl9fWZ1bmN0aW9uIEh0dChsKXshMD09PWwmJnRoaXMuaG90LnZpZXcm''@;'; put 'put ''Jk5iKHA3LHRoaXMsS3EpLmNhbGwodGhpcyl9ZnVuY3Rpb24gVnR0KGwsYyxhLGQpeyExIT09cXEoYy5yb3csYy5jb2wsbCkmJnRoaXMud2FzQ2xpY2thYmxlSGVhZGVyQ2xpY2tlZChsLGMuY29sKSYmdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuaXNDdHJsUHJlc3NlZCgpJiYoZC5j''@;'; put 'put ''b2x1bW49ITApfWZ1bmN0aW9uIGc3KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBCdHQobCl7dmFyIGM9ZnVuY3Rpb24ganR0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5j''@;'; put 'put ''YWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJp''@;'; put 'put ''bmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IFV0dD1jbGFzcyB6dHR7Y29uc3RydWN0''@;'; put 'put ''b3IoYyxhKXtnNyh0aGlzLCJwbHVnaW4iLHZvaWQgMCksZzcodGhpcywiaG90Iix2b2lkIDApLGc3KHRoaXMsImVuZHBvaW50cyIsW10pLGc3KHRoaXMsInNldHRpbmdzIix2b2lkIDApLGc3KHRoaXMsInNldHRpbmdzVHlwZSIsImFycmF5IiksZzcodGhpcywiY3VycmVudEVuZHBvaW50Iixu''@;'; put 'put ''dWxsKSxnNyh0aGlzLCJjZWxsc1RvU2V0Q2FjaGUiLFtdKSx0aGlzLnBsdWdpbj1jLHRoaXMuaG90PXRoaXMucGx1Z2luLmhvdCx0aGlzLnNldHRpbmdzPWF9aW5pdEVuZHBvaW50cygpe3RoaXMuZW5kcG9pbnRzPXRoaXMucGFyc2VTZXR0aW5ncygpLHRoaXMucmVmcmVzaEFsbEVuZHBvaW50''@;'; put 'put ''cygpfWdldEVuZHBvaW50KGMpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNldHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9pbnREYXRhKHRoaXMuc2V0dGluZ3MpW2NdOnRoaXMuZW5kcG9pbnRzW2NdfWdldEFsbEVuZHBvaW50cygpe3JldHVybiJmdW5jdGlvbiI9PT10aGlzLnNl''@;'; put 'put ''dHRpbmdzVHlwZT90aGlzLmZpbGxNaXNzaW5nRW5kcG9pbnREYXRhKHRoaXMuc2V0dGluZ3MpOnRoaXMuZW5kcG9pbnRzfWZpbGxNaXNzaW5nRW5kcG9pbnREYXRhKGMpe3JldHVybiB0aGlzLnBhcnNlU2V0dGluZ3MoYy5jYWxsKHRoaXMpKX1wYXJzZVNldHRpbmdzKGMpe2NvbnN0IGE9W107''@;'; put 'put ''bGV0IGQ9YztpZihkfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5zZXR0aW5ncylyZXR1cm4gZHx8KGQ9dGhpcy5zZXR0aW5ncyksVG4oZCxoPT57Y29uc3QgZj17fTt0aGlzLmFzc2lnblNldHRpbmcoaCxmLCJyYW5nZXMiLFtbMCx0aGlzLmhvdC5jb3VudFJvd3MoKS0xXV0pLHRoaXMuYXNz''@;'; put 'put ''aWduU2V0dGluZyhoLGYsInJldmVyc2VkUm93Q29vcmRzIiwhMSksdGhpcy5hc3NpZ25TZXR0aW5nKGgsZiwiZGVzdGluYXRpb25Sb3ciLG5ldyBFcnJvcigiXG4gICAgICAgIFlvdSBtdXN0IHByb3ZpZGUgYSBkZXN0aW5hdGlvbiByb3cgZm9yIHRoZSBDb2x1bW4gU3VtbWFyeSBwbHVnaW4g''@;'; put 'put ''aW4gb3JkZXIgdG8gd29yayBwcm9wZXJseSFcbiAgICAgICIpKSx0aGlzLmFzc2lnblNldHRpbmcoaCxmLCJkZXN0aW5hdGlvbkNvbHVtbiIsbmV3IEVycm9yKCJcbiAgICAgICAgWW91IG11c3QgcHJvdmlkZSBhIGRlc3RpbmF0aW9uIGNvbHVtbiBmb3IgdGhlIENvbHVtbiBTdW1tYXJ5IHBs''@;'; put 'put ''dWdpbiBpbiBvcmRlciB0byB3b3JrIHByb3Blcmx5IVxuICAgICAgIikpLHRoaXMuYXNzaWduU2V0dGluZyhoLGYsInNvdXJjZUNvbHVtbiIsaC5kZXN0aW5hdGlvbkNvbHVtbiksdGhpcy5hc3NpZ25TZXR0aW5nKGgsZiwidHlwZSIsInN1bSIpLHRoaXMuYXNzaWduU2V0dGluZyhoLGYsImZv''@;'; put 'put ''cmNlTnVtZXJpYyIsITEpLHRoaXMuYXNzaWduU2V0dGluZyhoLGYsInN1cHByZXNzRGF0YVR5cGVFcnJvcnMiLCEwKSx0aGlzLmFzc2lnblNldHRpbmcoaCxmLCJjdXN0b21GdW5jdGlvbiIsbnVsbCksdGhpcy5hc3NpZ25TZXR0aW5nKGgsZiwicmVhZE9ubHkiLCEwKSx0aGlzLmFzc2lnblNl''@;'; put 'put ''dHRpbmcoaCxmLCJyb3VuZEZsb2F0IiwhMSksYS5wdXNoKGYpfSksYTt0aGlzLnNldHRpbmdzVHlwZT0iZnVuY3Rpb24ifWFzc2lnblNldHRpbmcoYyxhLGQsaCl7aWYoInJhbmdlcyIhPT1kfHx2b2lkIDAhPT1jW2RdKXtpZigicmFuZ2VzIiE9PWR8fDAhPT1jW2RdLmxlbmd0aClpZih2b2lk''@;'; put 'put ''IDA9PT1jW2RdKXtpZihoIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgaDthW2RdPWh9ZWxzZSBhW2RdPSJkZXN0aW5hdGlvblJvdyI9PT1kJiZhLnJldmVyc2VkUm93Q29vcmRzP3RoaXMuaG90LmNvdW50Um93cygpLWNbZF0tMTpjW2RdfWVsc2UgYVtkXT1ofXJlc2V0U2V0dXBCZWZvcmVTdHJ1''@;'; put 'put ''Y3R1cmVBbHRlcmF0aW9uKGMsYSxkKXtpZigiZnVuY3Rpb24iIT09dGhpcy5zZXR0aW5nc1R5cGUpcmV0dXJuO2NvbnN0IGg9Yy5pbmRleE9mKCJyb3ciKT4tMT8icm93IjoiY29sIixmPXRoaXMuZ2V0QWxsRW5kcG9pbnRzKCk7VG4oZix2PT57InJvdyI9PT1oJiZ2LmRlc3RpbmF0aW9uUm93''@;'; put 'put ''Pj1hJiYoImluc2VydF9yb3ciPT09Yz92LmFsdGVyUm93T2Zmc2V0PWQ6InJlbW92ZV9yb3ciPT09YyYmKHYuYWx0ZXJSb3dPZmZzZXQ9LTEqZCkpLCJjb2wiPT09aCYmdi5kZXN0aW5hdGlvbkNvbHVtbj49YSYmKCJpbnNlcnRfY29sIj09PWM/di5hbHRlckNvbHVtbk9mZnNldD1kOiJyZW1v''@;'; put 'put ''dmVfY29sIj09PWMmJih2LmFsdGVyQ29sdW1uT2Zmc2V0PS0xKmQpKX0pLHRoaXMucmVzZXRBbGxFbmRwb2ludHMoZiwhMSl9cmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbihjLGEsZCxoLGYpe2xldCB2PSEoYXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNb''@;'; put 'put ''NV0pfHxhcmd1bWVudHNbNV07aWYoImZ1bmN0aW9uIj09PXRoaXMuc2V0dGluZ3NUeXBlKXtjb25zdCBDZT0oKT0+KHRoaXMuaG90LnJlbW92ZUhvb2soImJlZm9yZVZpZXdSZW5kZXIiLENlKSx0aGlzLnJlZnJlc2hBbGxFbmRwb2ludHMoKSk7cmV0dXJuIHZvaWQgdGhpcy5ob3QuYWRkSG9v''@;'; put 'put ''a09uY2UoImJlZm9yZVZpZXdSZW5kZXIiLENlKX1jb25zdCBTPWMuaW5kZXhPZigicm93Iik+LTE/InJvdyI6ImNvbCIsVj1jLmluZGV4T2YoInJlbW92ZSIpPi0xPy0xOjEsUT10aGlzLmdldEFsbEVuZHBvaW50cygpLGRlPTA9PT1jLmluZGV4T2YoIm1vdmVfcm93IikscGU9YTtUbihRLENl''@;'; put 'put ''PT57InJvdyI9PT1TJiZDZS5kZXN0aW5hdGlvblJvdz49cGUmJihDZS5hbHRlclJvd09mZnNldD1WKmQpLCJjb2wiPT09UyYmQ2UuZGVzdGluYXRpb25Db2x1bW4+PXBlJiYoQ2UuYWx0ZXJDb2x1bW5PZmZzZXQ9VipkKX0pLHRoaXMucmVzZXRBbGxFbmRwb2ludHMoUSwhZGUpLFRuKFEsZGU/''@;'; put 'put ''Q2U9Pnt0aGlzLmV4dGVuZEVuZHBvaW50UmFuZ2VzKENlLHBlLGhbMF0saC5sZW5ndGgpLHRoaXMucmVjcmVhdGVQaHlzaWNhbFJhbmdlcyhDZSksdGhpcy5jbGVhck9mZnNldEluZm9ybWF0aW9uKENlKX06Q2U9Pnt0aGlzLnNoaWZ0RW5kcG9pbnRDb29yZGluYXRlcyhDZSxwZSl9KSx2JiZ0''@;'; put 'put ''aGlzLnJlZnJlc2hBbGxFbmRwb2ludHMoKX1jbGVhck9mZnNldEluZm9ybWF0aW9uKGMpe2MuYWx0ZXJSb3dPZmZzZXQ9dm9pZCAwLGMuYWx0ZXJDb2x1bW5PZmZzZXQ9dm9pZCAwfWV4dGVuZEVuZHBvaW50UmFuZ2VzKGMsYSxkLGgpe1RuKGMucmFuZ2VzLGY9PntmWzFdJiYoYT49ZlswXSYm''@;'; put 'put ''YTw9ZlsxXT9kPmZbMV0/ZlsxXSs9aDpkPGZbMF0mJihmWzBdLT1oKTpkPj1mWzBdJiZkPD1mWzFdJiYoZlsxXS09aCxhPD1mWzBdJiYoZlswXSs9MSxmWzFdKz0xKSkpfSl9cmVjcmVhdGVQaHlzaWNhbFJhbmdlcyhjKXtjb25zdCBkPVtdLGg9W107VG4oYy5yYW5nZXMsZj0+e2NvbnN0IHY9''@;'; put 'put ''W107aWYoZlsxXSlmb3IobGV0IFM9ZlswXTtTPD1mWzFdO1MrKyl2LnB1c2godGhpcy5ob3QudG9QaHlzaWNhbFJvdyhTKSk7ZWxzZSB2LnB1c2godGhpcy5ob3QudG9QaHlzaWNhbFJvdyhmWzBdKSk7aC5wdXNoKHYpfSksVG4oaCxmPT57bGV0IHY9W107VG4oZiwoUyxWKT0+ezA9PT1WP3Yu''@;'; put 'put ''cHVzaChTKTpmW1ZdIT09ZltWLTFdKzEmJih2LnB1c2goZltWLTFdKSxkLnB1c2godiksdj1bXSx2LnB1c2goUykpLFY9PT1mLmxlbmd0aC0xJiYodi5wdXNoKFMpLGQucHVzaCh2KSl9KX0pLGMucmFuZ2VzPWR9c2hpZnRFbmRwb2ludENvb3JkaW5hdGVzKGMsYSl7Yy5hbHRlclJvd09mZnNl''@;'; put 'put ''dCYmMCE9PWMuYWx0ZXJSb3dPZmZzZXQ/KGMuZGVzdGluYXRpb25Sb3crPWMuYWx0ZXJSb3dPZmZzZXR8fDAsVG4oYy5yYW5nZXMsZD0+e1RuKGQsKGgsZik9PntoPj1hJiYoZFtmXSs9Yy5hbHRlclJvd09mZnNldHx8MCl9KX0pKTpjLmFsdGVyQ29sdW1uT2Zmc2V0JiYwIT09Yy5hbHRlckNv''@;'; put 'put ''bHVtbk9mZnNldCYmKGMuZGVzdGluYXRpb25Db2x1bW4rPWMuYWx0ZXJDb2x1bW5PZmZzZXR8fDAsYy5zb3VyY2VDb2x1bW4rPWMuYWx0ZXJDb2x1bW5PZmZzZXR8fDApfXJlc2V0QWxsRW5kcG9pbnRzKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/''@;'; put 'put ''YXJndW1lbnRzWzBdOnRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksYT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO2Muc29tZShoPT57Y29uc3Qgdj1oLmFsdGVyQ29sdW1uT2Zmc2V0fHwwO3JldHVybiBoLmRlc3RpbmF0aW9uUm93Kyho''@;'; put 'put ''LmFsdGVyUm93T2Zmc2V0fHwwKT49dGhpcy5ob3QuY291bnRSb3dzKCl8fGguZGVzdGluYXRpb25Db2x1bW4rdj49dGhpcy5ob3QuY291bnRDb2xzKCl9KXx8KHRoaXMuY2VsbHNUb1NldENhY2hlPVtdLFRuKGMsaD0+e3RoaXMucmVzZXRFbmRwb2ludFZhbHVlKGgsYSl9KSx0aGlzLmhvdC5z''@;'; put 'put ''ZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W10pfXJlZnJlc2hBbGxFbmRwb2ludHMoKXt0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxUbih0aGlzLmdldEFsbEVuZHBvaW50cygpLGM9Pnt0aGlzLmN1''@;'; put 'put ''cnJlbnRFbmRwb2ludD1jLHRoaXMucGx1Z2luLmNhbGN1bGF0ZShjKSx0aGlzLnNldEVuZHBvaW50VmFsdWUoYywiaW5pdCIpfSksdGhpcy5jdXJyZW50RW5kcG9pbnQ9bnVsbCx0aGlzLmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNUb1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0''@;'; put 'put ''IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W119cmVmcmVzaENoYW5nZWRFbmRwb2ludHMoYyl7Y29uc3QgYT1bXTt0aGlzLmNlbGxzVG9TZXRDYWNoZT1bXSxUbihjLChkLGgsZik9PntgJHtkWzJdfHwiIn1gIT1gJHtkWzNdfWAmJlRuKHRoaXMuZ2V0QWxsRW5kcG9pbnRzKCksKHYsUyk9Pnt0''@;'; put 'put ''aGlzLmhvdC5wcm9wVG9Db2woZltoXVsxXSk9PT12LnNvdXJjZUNvbHVtbiYmLTE9PT1hLmluZGV4T2YoUykmJmEucHVzaChTKX0pfSksVG4oYSxkPT57dGhpcy5yZWZyZXNoRW5kcG9pbnQodGhpcy5nZXRFbmRwb2ludChkKSl9KSx0aGlzLmhvdC5zZXREYXRhQXRDZWxsKHRoaXMuY2VsbHNU''@;'; put 'put ''b1NldENhY2hlLCJDb2x1bW5TdW1tYXJ5LnJlc2V0IiksdGhpcy5jZWxsc1RvU2V0Q2FjaGU9W119cmVmcmVzaENlbGxNZXRhcygpe3RoaXMuZW5kcG9pbnRzLmZvckVhY2goYz0+e2NvbnN0IGE9dGhpcy5ob3QudG9WaXN1YWxSb3coYy5kZXN0aW5hdGlvblJvdyk7aWYobnVsbCE9PWEpe2Nv''@;'; put 'put ''bnN0IGQ9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoYSxjLmRlc3RpbmF0aW9uQ29sdW1uKTtkLnJlYWRPbmx5PWMucmVhZE9ubHksZC5jbGFzc05hbWU9ImNvbHVtblN1bW1hcnlSZXN1bHQifX0pfXJlZnJlc2hFbmRwb2ludChjKXt0aGlzLmN1cnJlbnRFbmRwb2ludD1jLHRoaXMucGx1Z2luLmNh''@;'; put 'put ''bGN1bGF0ZShjKSx0aGlzLnNldEVuZHBvaW50VmFsdWUoYyksdGhpcy5jdXJyZW50RW5kcG9pbnQ9bnVsbH1yZXNldEVuZHBvaW50VmFsdWUoYyl7bGV0IGE9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtjb25zdCBoPWMuYWx0ZXJD''@;'; put 'put ''b2x1bW5PZmZzZXR8fDA7dGhpcy5jZWxsc1RvU2V0Q2FjaGUucHVzaChbdGhpcy5ob3QudG9WaXN1YWxSb3coYy5kZXN0aW5hdGlvblJvdysoYSYmYy5hbHRlclJvd09mZnNldHx8MCkpLHRoaXMuaG90LnRvVmlzdWFsQ29sdW1uKGMuZGVzdGluYXRpb25Db2x1bW4rKGE/aDowKSksIiJdKX1z''@;'; put 'put ''ZXRFbmRwb2ludFZhbHVlKGMsYSl7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtjb25zdCBoPXRoaXMuaG90LnRvVmlzdWFsUm93KGMuZGVzdGluYXRpb25Sb3cpO2lmKGMuZGVzdGluYXRpb25Sb3c+PXRoaXMuaG90LmNvdW50''@;'; put 'put ''Um93cygpfHxjLmRlc3RpbmF0aW9uQ29sdW1uPj10aGlzLmhvdC5jb3VudENvbHMoKSlyZXR1cm4gdm9pZCB0aGlzLnRocm93T3V0T2ZCb3VuZHNXYXJuaW5nKCk7Y29uc3QgZj10aGlzLmhvdC50b1Zpc3VhbFJvdyhjLmRlc3RpbmF0aW9uUm93KTtpZihudWxsIT09Zil7Y29uc3Qgdj10aGlz''@;'; put 'put ''LmhvdC5nZXRDZWxsTWV0YShmLGMuZGVzdGluYXRpb25Db2x1bW4pOygiaW5pdCI9PT1hfHx2LnJlYWRPbmx5IT09Yy5yZWFkT25seSkmJih2LnJlYWRPbmx5PWMucmVhZE9ubHksdi5jbGFzc05hbWU9ImNvbHVtblN1bW1hcnlSZXN1bHQiKX1pZigoITA9PT1jLnJvdW5kRmxvYXR8fE51bWJl''@;'; put 'put ''ci5pc0ludGVnZXIoYy5yb3VuZEZsb2F0KSkmJiFpc05hTihjLnJlc3VsdCkpe2NvbnN0IHY9Yy5yb3VuZEZsb2F0O2xldCBTPTA7TnVtYmVyLmlzSW50ZWdlcih2KSYmKFM9TWF0aC5taW4oTWF0aC5tYXgoMCx2KSwxMDApKSxjLnJlc3VsdD1jLnJlc3VsdC50b0ZpeGVkKFMpfWQ/dGhpcy5o''@;'; put 'put ''b3Quc2V0RGF0YUF0Q2VsbChoLGMuZGVzdGluYXRpb25Db2x1bW4sYy5yZXN1bHQsIkNvbHVtblN1bW1hcnkuc2V0Iik6dGhpcy5jZWxsc1RvU2V0Q2FjaGUucHVzaChbaCxjLmRlc3RpbmF0aW9uQ29sdW1uLGMucmVzdWx0XSksYy5hbHRlclJvd09mZnNldD12b2lkIDAsYy5hbHRlckNvbHVt''@;'; put 'put ''bk9mZnNldD12b2lkIDB9dGhyb3dPdXRPZkJvdW5kc1dhcm5pbmcoKXtpbCgiT25lIG9mIHRoZSBDb2x1bW4gU3VtbWFyeSBwbHVnaW5zJyBkZXN0aW5hdGlvbiBwb2ludHMgeW91IHByb3ZpZGVkIGlzIGJleW9uZCB0aGUgdGFibGUgYm91bmRhcmllcyEiKX19O2Z1bmN0aW9uIFhxKGwpe3Jl''@;'; put 'put ''dHVybiBudWxsPT1sfHxpc05hTihsKX1mdW5jdGlvbiBrTyhsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9u''@;'; put 'put ''IHRoaXMgb2JqZWN0Iil9Y29uc3QgSnE9ImNvbHVtblN1bW1hcnkiO3ZhciBaeD1uZXcgV2Vha1NldDtjbGFzcyBLdHQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gWnR0KGwsYyl7KGZ1bmN0aW9uIFl0dChsLGMpe2lmKGMuaGFzKGwpKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSh0aGlzLFp4KSxmdW5jdGlvbiBXdHQobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEd0dChsKXt2YXIgYz1mdW5j''@;'; put 'put ''dGlvbiAkdHQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KHRoaXMsImVuZHBvaW50cyIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIEpxfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJu''@;'; put 'put ''IDIyMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbSnFdfWVuYWJsZVBsdWdpbigpe3ZhciBjPXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5zZXR0aW5ncz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0pxXSx0aGlzLmVuZHBvaW50cz1uZXcgVXR0KHRoaXMsdGhp''@;'; put 'put ''cy5zZXR0aW5ncyksdGhpcy5hZGRIb29rKCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIGtPKFp4LGMsWHR0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhv''@;'; put 'put ''b2soImFmdGVyQ2hhbmdlIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBrTyhaeCxjLFF0dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJhZnRlclVwZGF0ZVNldHRp''@;'; put 'put ''bmdzIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBrTyhaeCxjLEp0dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDcmVhdGVSb3ciLChhLGQsaCk9PnRo''@;'; put 'put ''aXMuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJpbnNlcnRfcm93IixhLGQsbnVsbCxoKSksdGhpcy5hZGRIb29rKCJiZWZvcmVDcmVhdGVDb2wiLChhLGQsaCk9PnRoaXMuZW5kcG9pbnRzLnJlc2V0U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9u''@;'; put 'put ''KCJpbnNlcnRfY29sIixhLGQsbnVsbCxoKSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIGMuZW5kcG9pbnRzLnJlc2V0''@;'; put 'put ''U2V0dXBCZWZvcmVTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJyZW1vdmVfcm93IiwuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hd''@;'; put 'put ''O3JldHVybiBjLmVuZHBvaW50cy5yZXNldFNldHVwQmVmb3JlU3RydWN0dXJlQWx0ZXJhdGlvbigicmVtb3ZlX2NvbCIsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IiwoYSxkLGgpPT50aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9u''@;'; put 'put ''KCJpbnNlcnRfcm93IixhLGQsbnVsbCxoKSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZUNvbCIsKGEsZCxoKT0+dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlvbigiaW5zZXJ0X2NvbCIsYSxkLG51bGwsaCkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1v''@;'; put 'put ''dmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIGMuZW5kcG9pbnRzLnJlc2V0U2V0dXBBZnRlclN0cnVjdHVyZUFsdGVyYXRpb24oInJlbW92ZV9yb3ciLC4uLmQpfSks''@;'; put 'put ''dGhpcy5hZGRIb29rKCJhZnRlclJlbW92ZUNvbCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gYy5lbmRwb2ludHMucmVzZXRTZXR1cEFmdGVyU3RydWN0dXJlQWx0ZXJhdGlv''@;'; put 'put ''bigicmVtb3ZlX2NvbCIsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUm93TW92ZSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4ga08oWngsYyxlbnQpLmNhbGwoYywuLi5k''@;'; put 'put ''KX0pLHN1cGVyLmVuYWJsZVBsdWdpbigpKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5lbmRwb2ludHM9bnVsbCx0aGlzLnNldHRpbmdzPW51bGwsdGhpcy5jdXJyZW50RW5kcG9pbnQ9bnVsbCxzdXBlci5kaXNhYmxlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCks''@;'; put 'put ''dGhpcy5lbmFibGVQbHVnaW4oKSx0aGlzLmVuZHBvaW50cy5pbml0RW5kcG9pbnRzKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9Y2FsY3VsYXRlKGMpe3N3aXRjaChjLnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSJzdW0iOmMucmVzdWx0PXRoaXMuY2FsY3VsYXRlU3VtKGMpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''bWluIjpjYXNlIm1heCI6Yy5yZXN1bHQ9dGhpcy5jYWxjdWxhdGVNaW5NYXgoYyxjLnR5cGUpO2JyZWFrO2Nhc2UiY291bnQiOmMucmVzdWx0PXRoaXMuY291bnRFbnRyaWVzKGMpO2JyZWFrO2Nhc2UiYXZlcmFnZSI6Yy5yZXN1bHQ9dGhpcy5jYWxjdWxhdGVBdmVyYWdlKGMpO2JyZWFrO2Nh''@;'; put 'put ''c2UiY3VzdG9tIjpjLnJlc3VsdD1jLmN1c3RvbUZ1bmN0aW9uLmNhbGwodGhpcyxjKX19Y2FsY3VsYXRlU3VtKGMpe2xldCBhPTA7cmV0dXJuIENzKGMucmFuZ2VzLGQ9PnthKz10aGlzLmdldFBhcnRpYWxTdW0oZCxjLnNvdXJjZUNvbHVtbil9KSxhfWdldFBhcnRpYWxTdW0oYyxhKXtsZXQg''@;'; put 'put ''ZD0wLGg9Y1sxXXx8Y1swXSxmPW51bGwsdj0wO2Rve2lmKGY9dGhpcy5nZXRDZWxsVmFsdWUoaCxhKSxmPVhxKGYpP251bGw6ZixudWxsIT09Zil7Y29uc3QgUz0oYCR7Zn1gLnNwbGl0KCIuIilbMV18fFtdKS5sZW5ndGh8fDE7Uz52JiYodj1TKX1kKz1mfHwwLGgtPTF9d2hpbGUoaD49Y1sw''@;'; put 'put ''XSk7cmV0dXJuIE1hdGgucm91bmQoZCoxMCoqdikvMTAqKnZ9Y2FsY3VsYXRlTWluTWF4KGMsYSl7bGV0IGQ9bnVsbDtyZXR1cm4gQ3MoYy5yYW5nZXMsaD0+e2NvbnN0IGY9dGhpcy5nZXRQYXJ0aWFsTWluTWF4KGgsYy5zb3VyY2VDb2x1bW4sYSk7aWYobnVsbD09PWQmJm51bGwhPT1mJiYo''@;'; put 'put ''ZD1mKSxudWxsIT09Zilzd2l0Y2goYSl7Y2FzZSJtaW4iOmQ9TWF0aC5taW4oZCxmKTticmVhaztjYXNlIm1heCI6ZD1NYXRoLm1heChkLGYpfX0pLG51bGw9PT1kPyJOb3QgZW5vdWdoIGRhdGEiOmR9Z2V0UGFydGlhbE1pbk1heChjLGEsZCl7bGV0IHYsaD1udWxsLGY9Y1sxXXx8Y1swXTtk''@;'; put 'put ''b3tpZih2PXRoaXMuZ2V0Q2VsbFZhbHVlKGYsYSksdj1YcSh2KT9udWxsOnYsbnVsbD09PWgpaD12O2Vsc2UgaWYobnVsbCE9PXYpc3dpdGNoKGQpe2Nhc2UibWluIjpoPU1hdGgubWluKGgsdik7YnJlYWs7Y2FzZSJtYXgiOmg9TWF0aC5tYXgoaCx2KX1mLT0xfXdoaWxlKGY+PWNbMF0pO3Jl''@;'; put 'put ''dHVybiBofWNvdW50RW1wdHkoYyxhKXtsZXQgZCxoPTAsZj1jWzFdfHxjWzBdO2Rve2Q9dGhpcy5nZXRDZWxsVmFsdWUoZixhKSxkPVhxKGQpP251bGw6ZCxudWxsPT09ZCYmKGgrPTEpLGYtPTF9d2hpbGUoZj49Y1swXSk7cmV0dXJuIGh9Y291bnRFbnRyaWVzKGMpe2xldCBhPTA7cmV0dXJu''@;'; put 'put ''IENzKGMucmFuZ2VzLGg9Pntjb25zdCBmPXZvaWQgMD09PWhbMV0/MTpoWzFdLWhbMF0rMSx2PXRoaXMuY291bnRFbXB0eShoLGMuc291cmNlQ29sdW1uKTthKz1mLGEtPXZ9KSxhfWNhbGN1bGF0ZUF2ZXJhZ2UoYyl7cmV0dXJuIHRoaXMuY2FsY3VsYXRlU3VtKGMpL3RoaXMuY291bnRFbnRy''@;'; put 'put ''aWVzKGMpfWdldENlbGxWYWx1ZShjLGEpe2NvbnN0IGQ9dGhpcy5ob3QudG9WaXN1YWxSb3coYyksaD10aGlzLmhvdC50b1Zpc3VhbENvbHVtbihhKTtsZXQgZj10aGlzLmhvdC5nZXRTb3VyY2VEYXRhQXRDZWxsKGMsYSksdj0iIjtpZihudWxsIT09ZCYmbnVsbCE9PWgmJih2PXRoaXMuaG90''@;'; put 'put ''LmdldENlbGxNZXRhKGQsaCkuY2xhc3NOYW1lfHwiIiksdi5pbmRleE9mKCJjb2x1bW5TdW1tYXJ5UmVzdWx0Iik+LTEpcmV0dXJuIG51bGw7aWYodGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LmZvcmNlTnVtZXJpYyYmKCJzdHJpbmciPT10eXBlb2YgZiYmKGY9Zi5yZXBsYWNlKC8s''@;'; put 'put ''LywiLiIpKSxmPXBhcnNlRmxvYXQoZikpLGlzTmFOKGYpJiYhdGhpcy5lbmRwb2ludHMuY3VycmVudEVuZHBvaW50LnN1cHByZXNzRGF0YVR5cGVFcnJvcnMpdGhyb3cgbmV3IEVycm9yKE5hYENvbHVtblN1bW1hcnkgcGx1Z2luOiBjZWxsIGF0ICgke2N9LCAke2F9KSBpcyBub3QgaW4gYVx4''@;'; put 'put ''MjAKICAgICAgICAgIG51bWVyaWMgZm9ybWF0LiBDYW5ub3QgZG8gdGhlIGNhbGN1bGF0aW9uLmApO3JldHVybiBmfX1mdW5jdGlvbiBYdHQoKXt0aGlzLmVuZHBvaW50cy5pbml0RW5kcG9pbnRzKCl9ZnVuY3Rpb24gSnR0KGwpe3ZvaWQgMCE9PWwuY29sdW1ucyYmdGhpcy5lbmRwb2ludHMu''@;'; put 'put ''cmVmcmVzaENlbGxNZXRhcygpfWZ1bmN0aW9uIFF0dChsLGMpe2wmJiJDb2x1bW5TdW1tYXJ5LnJlc2V0IiE9PWMmJiJDb2x1bW5TdW1tYXJ5LnNldCIhPT1jJiYibG9hZERhdGEiIT09YyYmdGhpcy5lbmRwb2ludHMucmVmcmVzaENoYW5nZWRFbmRwb2ludHMobCl9ZnVuY3Rpb24gZW50KGws''@;'; put 'put ''Yyl7dGhpcy5lbmRwb2ludHMucmVzZXRTZXR1cEJlZm9yZVN0cnVjdHVyZUFsdGVyYXRpb24oIm1vdmVfcm93IixsWzBdLGwubGVuZ3RoLGwsdGhpcy5wbHVnaW5OYW1lKSx0aGlzLmVuZHBvaW50cy5yZXNldFNldHVwQWZ0ZXJTdHJ1Y3R1cmVBbHRlcmF0aW9uKCJtb3ZlX3JvdyIsYyxsLmxl''@;'; put 'put ''bmd0aCxsLHRoaXMucGx1Z2luTmFtZSl9ZnVuY3Rpb24gSGIobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHRudChsKXt2YXIgYz1mdW5jdGlvbiBubnQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAh''@;'; put 'put ''PT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJl''@;'; put 'put ''cikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgVmJ7c3RhdGlj''@;'; put 'put ''IGdldCBDTEFTU19FRElUT1JfQ09OVEFJTkVSKCl7cmV0dXJuImh0Q29tbWVudHNDb250YWluZXIifXN0YXRpYyBnZXQgQ0xBU1NfRURJVE9SKCl7cmV0dXJuImh0Q29tbWVudHMifXN0YXRpYyBnZXQgQ0xBU1NfSU5QVVQoKXtyZXR1cm4iaHRDb21tZW50VGV4dEFyZWEifXN0YXRpYyBnZXQg''@;'; put 'put ''Q0xBU1NfQ0VMTCgpe3JldHVybiJodENvbW1lbnRDZWxsIn1jb25zdHJ1Y3RvcihjLGEpe0hiKHRoaXMsInJvb3REb2N1bWVudCIsdm9pZCAwKSxIYih0aGlzLCJpc1J0bCIsITEpLEhiKHRoaXMsImNvbnRhaW5lciIsbnVsbCksSGIodGhpcywiZWRpdG9yIix2b2lkIDApLEhiKHRoaXMsImVk''@;'; put 'put ''aXRvclN0eWxlIix2b2lkIDApLEhiKHRoaXMsImhpZGRlbiIsITApLHRoaXMucm9vdERvY3VtZW50PWMsdGhpcy5pc1J0bD1hLHRoaXMuZWRpdG9yPXRoaXMuY3JlYXRlRWRpdG9yKCksdGhpcy5lZGl0b3JTdHlsZT10aGlzLmVkaXRvci5zdHlsZSx0aGlzLmhpZGUoKX1zZXRQb3NpdGlvbihj''@;'; put 'put ''LGEpe3RoaXMuZWRpdG9yU3R5bGUubGVmdD1gJHtjfXB4YCx0aGlzLmVkaXRvclN0eWxlLnRvcD1gJHthfXB4YH1zZXRTaXplKGMsYSl7aWYoYyYmYSl7Y29uc3QgZD10aGlzLmdldElucHV0RWxlbWVudCgpO2Quc3R5bGUud2lkdGg9YCR7Y31weGAsZC5zdHlsZS5oZWlnaHQ9YCR7YX1weGB9''@;'; put 'put ''fWdldFNpemUoKXtyZXR1cm57d2lkdGg6V2EodGhpcy5nZXRJbnB1dEVsZW1lbnQoKSksaGVpZ2h0OlpsKHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkpfX1yZXNldFNpemUoKXtjb25zdCBjPXRoaXMuZ2V0SW5wdXRFbGVtZW50KCk7Yy5zdHlsZS53aWR0aD0iIixjLnN0eWxlLmhlaWdodD0iIn1z''@;'; put 'put ''ZXRSZWFkT25seVN0YXRlKGMpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkucmVhZE9ubHk9Y31zaG93KCl7dGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5oaWRkZW49ITF9aGlkZSgpe3RoaXMuaGlkZGVufHwodGhpcy5lZGl0b3JTdHlsZS5kaXNwbGF5PSJub25lIiksdGhp''@;'; put 'put ''cy5oaWRkZW49ITB9aXNWaXNpYmxlKCl7cmV0dXJuImJsb2NrIj09PXRoaXMuZWRpdG9yU3R5bGUuZGlzcGxheX1zZXRWYWx1ZSgpe2NvbnN0IGE9KGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIil8fCIiO3RoaXMuZ2V0SW5wdXRFbGVt''@;'; put 'put ''ZW50KCkudmFsdWU9YX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLnZhbHVlfWlzRm9jdXNlZCgpe3JldHVybiB0aGlzLnJvb3REb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dGhpcy5nZXRJbnB1dEVsZW1lbnQoKX1mb2N1cygpe3RoaXMuZ2V0SW5wdXRFbGVtZW50''@;'; put 'put ''KCkuZm9jdXMoKX1jcmVhdGVFZGl0b3IoKXtjb25zdCBjPXRoaXMucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGE9dGhpcy5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gYy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmNvbnRhaW5lcj10''@;'; put 'put ''aGlzLnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5pc1J0bD8icnRsIjoibHRyIiksbWkodGhpcy5jb250YWluZXIsVmIuQ0xBU1NfRURJVE9SX0NPTlRBSU5FUiksdGhpcy5yb290RG9jdW1lbnQuYm9keS5h''@;'; put 'put ''cHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lciksbWkoYyxWYi5DTEFTU19FRElUT1IpLG1pKGEsVmIuQ0xBU1NfSU5QVVQpLGEuc2V0QXR0cmlidXRlKCJkYXRhLWhvdC1pbnB1dCIsITApLGMuYXBwZW5kQ2hpbGQoYSksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoYyksY31nZXRJbnB1dEVs''@;'; put 'put ''ZW1lbnQoKXtyZXR1cm4gdGhpcy5lZGl0b3IucXVlcnlTZWxlY3RvcihgLiR7VmIuQ0xBU1NfSU5QVVR9YCl9ZGVzdHJveSgpe2NvbnN0IGM9dGhpcy5jb250YWluZXI/dGhpcy5jb250YWluZXIucGFyZW50Tm9kZTpudWxsO3RoaXMuZWRpdG9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhp''@;'; put 'put ''cy5lZGl0b3IpLHRoaXMuZWRpdG9yPW51bGwsdGhpcy5lZGl0b3JTdHlsZT1udWxsLGMmJmMucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpfX1jb25zdCBybnQ9VmI7ZnVuY3Rpb24gUXEobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGludChsKXt2YXIgYz1mdW5jdGlvbiBvbnQobCxjKXtp''@;'; put 'put ''Zigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJp''@;'; put 'put ''bWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1''@;'; put 'put ''ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgaWZle2NvbnN0cnVjdG9yKGMpe1FxKHRoaXMsIndhc0xhc3RBY3Rpb25TaG93IiwhMCksUXEodGhpcywic2hvd0RlYm91bmNlZCIsbnVsbCksUXEodGhpcywiaGlkaW5nVGltZXIi''@;'; put 'put ''LG51bGwpLHRoaXMudXBkYXRlRGVsYXkoYyl9aGlkZSgpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITEsdGhpcy5oaWRpbmdUaW1lcj1zZXRUaW1lb3V0KCgpPT57ITE9PT10aGlzLndhc0xhc3RBY3Rpb25TaG93JiZ0aGlzLnJ1bkxvY2FsSG9va3MoImhpZGUiKX0sMjUwKX1zaG93KGMpe3Ro''@;'; put 'put ''aXMud2FzTGFzdEFjdGlvblNob3c9ITAsdGhpcy5zaG93RGVib3VuY2VkKGMpfWNhbmNlbEhpZGluZygpe3RoaXMud2FzTGFzdEFjdGlvblNob3c9ITAsY2xlYXJUaW1lb3V0KHRoaXMuaGlkaW5nVGltZXIpLHRoaXMuaGlkaW5nVGltZXI9bnVsbH11cGRhdGVEZWxheSgpe3RoaXMuc2hvd0Rl''@;'; put 'put ''Ym91bmNlZD1pTChhPT57dGhpcy53YXNMYXN0QWN0aW9uU2hvdyYmdGhpcy5ydW5Mb2NhbEhvb2tzKCJzaG93IixhLmZyb20ucm93LGEuZnJvbS5jb2wpfSxhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MjUwKX1kZXN0cm95KCl7dGhpcy5j''@;'; put 'put ''bGVhckxvY2FsSG9va3MoKX19cmwoaWZlLFUxKTtjb25zdCBsbnQ9aWZlLEVzPSItLS0tLS0tLS0iO2Z1bmN0aW9uIG03KGwsYyl7Y29uc3QgYT17fTtyZXR1cm4gVG4obCxkPT57ZC5mb3JBbGwoKGgsZik9PntoPj0wJiZmPj0wJiYoYVtoXXx8KGFbaF09W10pLGFbaF1bZl09YyhoLGYpKX0p''@;'; put 'put ''fSksYX1mdW5jdGlvbiBLbShsLGMsYSxkLGgpe1RuKGwsZj0+e2YuZm9yQWxsKCh2LFMpPT57dj49MCYmUz49MCYmZnVuY3Rpb24gcG50KGwsYyxhLGQsaCxmKXtjb25zdCB2PWgobCxjKTtsZXQgUz1kO3YuY2xhc3NOYW1lJiYoUz0idmVydGljYWwiPT09YT9mdW5jdGlvbiBobnQobCxjKXty''@;'; put 'put ''ZXR1cm4tMSE9PWwuaW5kZXhPZihjKT9sOmAke2wucmVwbGFjZSgiaHRUb3AiLCIiKS5yZXBsYWNlKCJodE1pZGRsZSIsIiIpLnJlcGxhY2UoImh0Qm90dG9tIiwiIikucmVwbGFjZSgiICAiLCIiKX0gJHtjfWB9KHYuY2xhc3NOYW1lLGQpOmZ1bmN0aW9uIGZudChsLGMpe3JldHVybi0xIT09''@;'; put 'put ''bC5pbmRleE9mKGMpP2w6YCR7bC5yZXBsYWNlKCJodExlZnQiLCIiKS5yZXBsYWNlKCJodENlbnRlciIsIiIpLnJlcGxhY2UoImh0UmlnaHQiLCIiKS5yZXBsYWNlKCJodEp1c3RpZnkiLCIiKS5yZXBsYWNlKCIgICIsIiIpfSAke2N9YH0odi5jbGFzc05hbWUsZCkpLGYobCxjLCJjbGFzc05h''@;'; put 'put ''bWUiLFMpfSh2LFMsYyxhLGQsaCl9KX0pfWZ1bmN0aW9uIEg0KGwpe3JldHVybmA8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPlx1MjcxMzwvc3Bhbj4ke2x9YH1mdW5jdGlvbiBVMyhsLGMpe2xldCBhPSExO3JldHVybiBBcnJheS5pc0FycmF5KGwpJiZUbihsLGQ9PihkLmZvckFsbCgoaCxmKT0+''@;'; put 'put ''e2lmKGg+PTAmJmY+PTAmJmMoaCxmKSlyZXR1cm4gYT0hMCwhMX0pLGEpKSxhfWZ1bmN0aW9uIEFPKGwsYyl7Y29uc3QgYT17dG9wOjAsbGVmdDowfTtpZihjIT09bC5vd25lckRvY3VtZW50KXtjb25zdHtmcmFtZUVsZW1lbnQ6ZH09Yy5kZWZhdWx0Vmlldyx7dG9wOmgsbGVmdDpmfT1kLmdl''@;'; put 'put ''dEJvdW5kaW5nQ2xpZW50UmVjdCgpO2EudG9wPWgsYS5sZWZ0PWZ9cmV0dXJuIGF9ZnVuY3Rpb24gdjcobCxjLGEpe29mZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gb2ZlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUg''@;'; put 'put ''cHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBWNChsLGMsYSl7cmV0dXJuIGwuc2V0KHFoKGwsYyksYSksYX1mdW5jdGlvbiBUcyhsLGMpe3JldHVybiBsLmdldChxaChsLGMpKX1mdW5jdGlvbiBxaChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/''@;'; put 'put ''bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9Y29uc3QgWXg9ImNvbW1lbnRzIixCND0iY29tbWVudCIsV3g9InZhbHVlIixETz0icmVh''@;'; put 'put ''ZE9ubHkiLElPPVl4LGVLPWBwbHVnaW46JHtZeH1gO3ZhciBmbD1uZXcgV2Vha01hcCxwZj1uZXcgV2Vha01hcCxSTz1uZXcgV2Vha01hcCxMTz1uZXcgV2Vha01hcCxPTz1uZXcgV2Vha01hcCx0Sz1uZXcgV2Vha01hcCxQTz1uZXcgV2Vha01hcCxnZj1uZXcgV2Vha1NldDtjbGFzcyB3bnQg''@;'; put 'put ''ZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gbW50KGwsYyl7b2ZlKGwsYyksYy5hZGQobCl9KHRoaXMsZ2YpLGZ1bmN0aW9uIHZudChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gX250KGwpe3ZhciBjPWZ1bmN0aW9uIGJudChsLGMpe2lmKCJv''@;'; put 'put ''YmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRp''@;'; put 'put ''dmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEs''@;'; put 'put ''ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywicmFuZ2UiLHt9KSx2Nyh0aGlzLGZsLG51bGwpLHY3KHRoaXMscGYsbnVsbCksdjcodGhpcyxSTywhMSksdjcodGhpcyxMTywhMSksdjcodGhpcyxPTyx7fSksdjcodGhpcyx0SyxudWxs''@;'; put 'put ''KSx2Nyh0aGlzLFBPLCIiKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gWXh9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gNjB9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW1l4XX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8''@;'; put 'put ''fChUcyhmbCx0aGlzKXx8VjQoZmwsdGhpcyxuZXcgcm50KHRoaXMuaG90LnJvb3REb2N1bWVudCx0aGlzLmhvdC5pc1J0bCgpKSksVHMocGYsdGhpcyl8fFY0KHBmLHRoaXMsbmV3IGxudCh0aGlzLmdldERpc3BsYXlEZWxheVNldHRpbmcoKSkpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0''@;'; put 'put ''TWVudURlZmF1bHRPcHRpb25zIixjPT50aGlzLmFkZFRvQ29udGV4dE1lbnUoYykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW5kZXJlciIsKGMsYSxkLGgsZix2KT0+cWgoZ2YsdGhpcyx4bnQpLmNhbGwodGhpcyxjLHYpKSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsIiwoKT0+cWgoZ2YsdGhp''@;'; put 'put ''cyxJbnQpLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJCZWdpbkVkaXRpbmciLCgpPT50aGlzLmhpZGUoKSksdGhpcy5hZGRIb29rKCJhZnRlckRvY3VtZW50S2V5RG93biIsYz0+cWgoZ2YsdGhpcyxEbnQpLmNhbGwodGhpcyxjKSksVHMocGYsdGhpcykuYWRkTG9jYWxIb29rKCJo''@;'; put 'put ''aWRlIiwoKT0+dGhpcy5oaWRlKCkpLFRzKHBmLHRoaXMpLmFkZExvY2FsSG9vaygic2hvdyIsKGMsYSk9PnRoaXMuc2hvd0F0Q2VsbChjLGEpKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5yZWdpc3Rlckxpc3RlbmVycygpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX11cGRhdGVQbHVn''@;'; put 'put ''aW4oKXtUcyhwZix0aGlzKS51cGRhdGVEZWxheSh0aGlzLmdldERpc3BsYXlEZWxheVNldHRpbmcoKSksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygp''@;'; put 'put ''e2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksYT1jLmdldENvbnRleHQoImdyaWQiKSxkPWMuYWRkQ29udGV4dChlSyk7YS5hZGRTaG9ydGN1dCh7a2V5czpbWyJDb250cm9sIiwiQWx0IiwiTSJdXSxjYWxsYmFjazooKT0+e2NvbnN0IGg9dGhpcy5ob3QuZ2V0U2VsZWN0''@;'; put 'put ''ZWRSYW5nZUxhc3QoKTtWNChMTyx0aGlzLCEwKSx0aGlzLmhvdC5zY3JvbGxUb0ZvY3VzZWRDZWxsKCgpPT57dGhpcy5zZXRSYW5nZShoKSx0aGlzLnNob3coKSx0aGlzLmZvY3VzRWRpdG9yKCksYy5zZXRBY3RpdmVDb250ZXh0TmFtZShlSyksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgo''@;'; put 'put ''KT0+e1Y0KExPLHRoaXMsITEpfSl9KX0sc3RvcFByb3BhZ2F0aW9uOiEwLHJ1bk9ubHlJZjooKT0+e3ZhciBoO3JldHVybihudWxsPT09KGg9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWg/dm9pZCAwOmguaGlnaGxpZ2h0LmlzQ2VsbCgpKSYmIVRzKGZsLHRo''@;'; put 'put ''aXMpLmlzVmlzaWJsZSgpfSxncm91cDpJT30pLGQuYWRkU2hvcnRjdXQoe2tleXM6W1siRXNjYXBlIl1dLGNhbGxiYWNrOigpPT57VHMoZmwsdGhpcykuc2V0VmFsdWUoVHMoUE8sdGhpcykpLHRoaXMuaGlkZSgpLGMuc2V0QWN0aXZlQ29udGV4dE5hbWUoImdyaWQiKX0scnVuT25seUlmOigp''@;'; put 'put ''PT5UcyhmbCx0aGlzKS5pc1Zpc2libGUoKSYmVHMoZmwsdGhpcykuaXNGb2N1c2VkKCksZ3JvdXA6SU99KSxkLmFkZFNob3J0Y3V0KHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1dLGNhbGxiYWNrOigpPT57dGhpcy5oaWRlKCksYy5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIp''@;'; put 'put ''fSxydW5Pbmx5SWY6KCk9PlRzKGZsLHRoaXMpLmlzVmlzaWJsZSgpJiZUcyhmbCx0aGlzKS5pc0ZvY3VzZWQoKSxncm91cDpJT30pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikucmVtb3ZlU2hvcnRjdXRzQnlH''@;'; put 'put ''cm91cChJTyl9cmVnaXN0ZXJMaXN0ZW5lcnMoKXtjb25zdHtyb290RG9jdW1lbnQ6Y309dGhpcy5ob3QsYT10aGlzLmdldEVkaXRvcklucHV0RWxlbWVudCgpO3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywibW91c2VvdmVyIixkPT5xaChnZix0aGlzLFNudCkuY2FsbCh0''@;'; put 'put ''aGlzLGQpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNlZG93biIsZD0+cWgoZ2YsdGhpcyxDbnQpLmNhbGwodGhpcyxkKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihjLCJtb3VzZXVwIiwoKT0+cWgoZ2YsdGhpcyxNbnQpLmNhbGwodGhp''@;'; put 'put ''cykpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYSwiZm9jdXMiLCgpPT5xaChnZix0aGlzLFRudCkuY2FsbCh0aGlzKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJibHVyIiwoKT0+cWgoZ2YsdGhpcyxFbnQpLmNhbGwodGhpcykpLHRoaXMuZXZl''@;'; put 'put ''bnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYSwibW91c2Vkb3duIixkPT5xaChnZix0aGlzLGtudCkuY2FsbCh0aGlzLGQpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEsIm1vdXNldXAiLGQ9PnFoKGdmLHRoaXMsQW50KS5jYWxsKHRoaXMsZCkpfXNldFJhbmdlKGMp''@;'; put 'put ''e3RoaXMucmFuZ2U9Y31jbGVhclJhbmdlKCl7dGhpcy5yYW5nZT17fX10YXJnZXRJc0NlbGxXaXRoQ29tbWVudChjKXtjb25zdCBhPUltKGMudGFyZ2V0LCJURCIsIlRCT0RZIik7cmV0dXJuISEoYSYmWW8oYSwiaHRDb21tZW50Q2VsbCIpJiZJbShhLFt0aGlzLmhvdC5yb290RWxlbWVudF0p''@;'; put 'put ''KX10YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShjKXtyZXR1cm4gdGhpcy5nZXRFZGl0b3JJbnB1dEVsZW1lbnQoKT09PWMudGFyZ2V0fXNldENvbW1lbnQoYyl7aWYoIXRoaXMucmFuZ2UuZnJvbSl0aHJvdyBuZXcgRXJyb3IoJ0JlZm9yZSB1c2luZyB0aGlzIG1ldGhvZCwgZmlyc3Qgc2V0IGNl''@;'; put 'put ''bGwgcmFuZ2UgKGhvdC5nZXRQbHVnaW4oImNvbW1lbnQiKS5zZXRSYW5nZSgpKScpO2NvbnN0IGE9VHMoZmwsdGhpcykuZ2V0VmFsdWUoKTtsZXQgZD0iIjtudWxsIT1jP2Q9YzpudWxsIT1hJiYoZD1hKSx0aGlzLnVwZGF0ZUNvbW1lbnRNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5y''@;'; put 'put ''YW5nZS5mcm9tLmNvbCx7W1d4XTpkfSksdGhpcy5ob3QucmVuZGVyKCl9c2V0Q29tbWVudEF0Q2VsbChjLGEsZCl7dGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLGEpfSksdGhpcy5zZXRDb21tZW50KGQpfXJlbW92ZUNvbW1lbnQoKXtsZXQgYz0hKGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKCF0aGlzLnJhbmdlLmZyb20pdGhyb3cgbmV3IEVycm9yKCdCZWZvcmUgdXNpbmcgdGhpcyBtZXRob2QsIGZpcnN0IHNldCBjZWxsIHJhbmdlIChob3QuZ2V0UGx1Z2luKCJjb21tZW50Iiku''@;'; put 'put ''c2V0UmFuZ2UoKSknKTt0aGlzLmhvdC5zZXRDZWxsTWV0YSh0aGlzLnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wsQjQpLGMmJnRoaXMuaG90LnJlbmRlcigpLHRoaXMuaGlkZSgpfXJlbW92ZUNvbW1lbnRBdENlbGwoYyxhKXtsZXQgZD0hKGFyZ3VtZW50cy5sZW5ndGg+MiYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3RoaXMuc2V0UmFuZ2Uoe2Zyb206dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYyxhKX0pLHRoaXMucmVtb3ZlQ29tbWVudChkKX1nZXRDb21tZW50KCl7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEodGhpcy5yYW5nZS5m''@;'; put 'put ''cm9tLnJvdyx0aGlzLnJhbmdlLmZyb20uY29sLFd4KX1nZXRDb21tZW50QXRDZWxsKGMsYSl7cmV0dXJuIHRoaXMuZ2V0Q29tbWVudE1ldGEoYyxhLFd4KX1zaG93KCl7dmFyIGM7aWYoIXRoaXMucmFuZ2UuZnJvbSl0aHJvdyBuZXcgRXJyb3IoJ0JlZm9yZSB1c2luZyB0aGlzIG1ldGhvZCwg''@;'; put 'put ''Zmlyc3Qgc2V0IGNlbGwgcmFuZ2UgKGhvdC5nZXRQbHVnaW4oImNvbW1lbnQiKS5zZXRSYW5nZSgpKScpO2NvbnN0e2Zyb206e3JvdzphLGNvbDpkfX09dGhpcy5yYW5nZTtpZihhPDB8fGE+dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCktMXx8ZDwwfHxkPnRoaXMuaG90LmNvdW50U291cmNl''@;'; put 'put ''Q29scygpLTEpcmV0dXJuITE7Y29uc3QgaD10aGlzLmhvdC5nZXRDZWxsTWV0YSh0aGlzLnJhbmdlLmZyb20ucm93LHRoaXMucmFuZ2UuZnJvbS5jb2wpO3JldHVybiBUcyhwZix0aGlzKS5jYW5jZWxIaWRpbmcoKSxUcyhmbCx0aGlzKS5zZXRWYWx1ZShudWxsIT09KGM9aFtCNF0/aFtCNF1b''@;'; put 'put ''V3hdOm51bGwpJiZ2b2lkIDAhPT1jP2M6IiIpLFRzKGZsLHRoaXMpLnNob3coKSx0aGlzLnJlZnJlc2hFZGl0b3IoITApLCEwfXNob3dBdENlbGwoYyxhKXtyZXR1cm4gdGhpcy5zZXRSYW5nZSh7ZnJvbTp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLGEpfSksdGhpcy5zaG93KCl9aGlk''@;'; put 'put ''ZSgpe1RzKGZsLHRoaXMpLmhpZGUoKX1yZWZyZXNoRWRpdG9yKCl7dmFyIGMsYTtpZighKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF18fHRoaXMucmFuZ2UuZnJvbSYmVHMoZmwsdGhpcykuaXNWaXNpYmxlKCkpKXJldHVybjtjb25zdHty''@;'; put 'put ''b3dJbmRleE1hcHBlcjpoLGNvbHVtbkluZGV4TWFwcGVyOmZ9PXRoaXMuaG90LHtyb3c6dixjb2w6U309dGhpcy5yYW5nZS5mcm9tO2xldCBWPWguZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleCh2KSxRPWYuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChTKTtjb25zdCBkZT1udWxs''@;'; put 'put ''PT09VjtUcyhmbCx0aGlzKS5zZXRQb3NpdGlvbigwLDApLG51bGw9PT1WJiYoVj1oLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoaC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgodiwtMSkpKSxudWxsPT09USYmKFE9Zi5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGYuZ2V0TmVh''@;'; put 'put ''cmVzdE5vdEhpZGRlbkluZGV4KFMsLTEpKSk7Y29uc3QgcGU9bnVsbD09PVYsQ2U9bnVsbD09PVE7Vj1udWxsIT09KGM9VikmJnZvaWQgMCE9PWM/YzowLFE9bnVsbCE9PShhPVEpJiZ2b2lkIDAhPT1hP2E6MDtjb25zdHtyb290V2luZG93Ok9lLHZpZXc6e193dDpZZX19PXRoaXMuaG90LHt3''@;'; put 'put ''dFRhYmxlOmV0fT1ZZSxkdD1ZZS5nZXRDZWxsKHtyb3c6Vixjb2w6UX0sITApLGh0PXRoaXMuZ2V0Q29tbWVudE1ldGEodixTLCJzdHlsZSIpO2h0P1RzKGZsLHRoaXMpLnNldFNpemUoaHQud2lkdGgsaHQuaGVpZ2h0KTpUcyhmbCx0aGlzKS5yZXNldFNpemUoKTtjb25zdCBNdD1DZT8wOmV0''@;'; put 'put ''LmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKFEpLFF0PWRlJiYhcGU/WmwoZHQpOjAse2xlZnQ6bG4sdG9wOnZuLHdpZHRoOnduLGhlaWdodDpucn09ZHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3dpZHRoOnZyLGhlaWdodDpNaX09VHMoZmwsdGhpcykuZ2V0U2l6ZSgpLHtpbm5lcldpZHRo''@;'; put 'put ''OlBpLGlubmVySGVpZ2h0OnlyfT10aGlzLmhvdC5yb290V2luZG93LF9pPXRoaXMuaG90LnJvb3REb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7bGV0IFVyPWxuK09lLnNjcm9sbFgrTXQsSW49dm4rT2Uuc2Nyb2xsWStRdDt0aGlzLmhvdC5pc1J0bCgpJiYoVXItPXZyK010KSx0aGlzLmhvdC5p''@;'; put 'put ''c0x0cigpJiZsbit3bit2cj5QaT9Vcj1sbitPZS5zY3JvbGxYLXZyLTE6dGhpcy5ob3QuaXNSdGwoKSYmVXI8LShfaS5zY3JvbGxXaWR0aC1faS5jbGllbnRXaWR0aCkmJihVcj1sbitPZS5zY3JvbGxYK010KzEpLHZuK01pPnlyJiYoSW4tPU1pLW5yKzEpLFRzKGZsLHRoaXMpLnNldFBvc2l0''@;'; put 'put ''aW9uKFVyLEluKSxUcyhmbCx0aGlzKS5zZXRSZWFkT25seVN0YXRlKHRoaXMuZ2V0Q29tbWVudE1ldGEodixTLERPKSl9Zm9jdXNFZGl0b3IoKXtUcyhmbCx0aGlzKS5mb2N1cygpfXVwZGF0ZUNvbW1lbnRNZXRhKGMsYSxkKXtjb25zdCBoPXRoaXMuaG90LmdldENlbGxNZXRhKGMsYSlbQjRd''@;'; put 'put ''O2xldCBmO2g/KGY9UjAoaCksbngoZixkKSk6Zj1kLHRoaXMuaG90LnNldENlbGxNZXRhKGMsYSxCNCxmKX1nZXRDb21tZW50TWV0YShjLGEsZCl7Y29uc3QgaD10aGlzLmhvdC5nZXRDZWxsTWV0YShjLGEpO2lmKGhbQjRdKXJldHVybiBoW0I0XVtkXX1hZGRUb0NvbnRleHRNZW51KGMpe2Mu''@;'; put 'put ''aXRlbXMucHVzaCh7bmFtZTpFc30sZnVuY3Rpb24gdW50KGwpe3JldHVybntrZXk6ImNvbW1lbnRzQWRkRWRpdCIsbmFtZSgpe3ZhciBjO2NvbnN0IGE9bnVsbD09PShjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuaGlnaGxpZ2h0O3JldHVybiBu''@;'; put 'put ''dWxsIT1hJiZhLmlzQ2VsbCgpJiZsLmdldENvbW1lbnRBdENlbGwoYS5yb3csYS5jb2wpP3RoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZSh0JCk6dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGUkKX0sY2FsbGJhY2soKXtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtsLnNldFJh''@;'; put 'put ''bmdlKGMpLGwuc2hvdygpLGwuZm9jdXNFZGl0b3IoKX0sZGlzYWJsZWQoKXtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4hISghY3x8Yy5oaWdobGlnaHQuaXNIZWFkZXIoKXx8dGhpcy5zZWxlY3Rpb24uaXNFbnRpcmVSb3dTZWxlY3RlZCgpJiZ0aGlzLnNlbGVj''@;'; put 'put ''dGlvbi5pc0VudGlyZUNvbHVtblNlbGVjdGVkKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRSb3dzKCl8fDA9PT10aGlzLmNvdW50UmVuZGVyZWRDb2xzKCkpfX19KHRoaXMpLGZ1bmN0aW9uIGRudChsKXtyZXR1cm57a2V5OiJjb21tZW50c1JlbW92ZSIsbmFtZSgpe3JldHVybiB0aGlzLmdl''@;'; put 'put ''dFRyYW5zbGF0ZWRQaHJhc2UobiQpfSxjYWxsYmFjaygpe3RoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5mb3JBbGwoKGEsZCk9PnthPj0wJiZkPj0wJiZsLnJlbW92ZUNvbW1lbnRBdENlbGwoYSxkLCExKX0pLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkKCl7Y29uc3QgYz10aGlzLmdldFNl''@;'; put 'put ''bGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuISEoIWN8fGMuaGlnaGxpZ2h0LmlzSGVhZGVyKCl8fHRoaXMuc2VsZWN0aW9uLmlzRW50aXJlUm93U2VsZWN0ZWQoKSYmdGhpcy5zZWxlY3Rpb24uaXNFbnRpcmVDb2x1bW5TZWxlY3RlZCgpfHwwPT09dGhpcy5jb3VudFJlbmRlcmVkUm93cygpfHww''@;'; put 'put ''PT09dGhpcy5jb3VudFJlbmRlcmVkQ29scygpKX19fSh0aGlzKSxmdW5jdGlvbiBnbnQobCl7cmV0dXJue2tleToiY29tbWVudHNSZWFkT25seSIsbmFtZSgpe2NvbnN0IGM9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHIkKTtyZXR1cm4gVTModGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksKGQs''@;'; put 'put ''aCk9PmwuZ2V0Q29tbWVudE1ldGEoZCxoLERPKSk/SDQoYyk6Y30sY2FsbGJhY2soKXt0aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZm9yQWxsKChhLGQpPT57aWYoYT49MCYmZD49MCl7Y29uc3QgaD0hIWwuZ2V0Q29tbWVudE1ldGEoYSxkLERPKTtsLnVwZGF0ZUNvbW1lbnRNZXRhKGEs''@;'; put 'put ''ZCx7W0RPXTohaH0pfX0pfSxkaXNhYmxlZCgpe2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO3JldHVybiEhKCFjfHxjLmhpZ2hsaWdodC5pc0hlYWRlcigpfHwhbC5nZXRDb21tZW50QXRDZWxsKGMuaGlnaGxpZ2h0LnJvdyxjLmhpZ2hsaWdodC5jb2wpfHx0aGlzLnNlbGVj''@;'; put 'put ''dGlvbi5pc0VudGlyZVJvd1NlbGVjdGVkKCkmJnRoaXMuc2VsZWN0aW9uLmlzRW50aXJlQ29sdW1uU2VsZWN0ZWQoKXx8MD09PXRoaXMuY291bnRSZW5kZXJlZFJvd3MoKXx8MD09PXRoaXMuY291bnRSZW5kZXJlZENvbHMoKSl9fX0odGhpcykpfWdldERpc3BsYXlEZWxheVNldHRpbmcoKXtj''@;'; put 'put ''b25zdCBjPXRoaXMuaG90LmdldFNldHRpbmdzKClbWXhdO2lmKF9zKGMpKXJldHVybiBjLmRpc3BsYXlEZWxheX1nZXRFZGl0b3JJbnB1dEVsZW1lbnQoKXtyZXR1cm4gVHMoZmwsdGhpcykuZ2V0SW5wdXRFbGVtZW50KCl9ZGVzdHJveSgpe1RzKGZsLHRoaXMpJiZUcyhmbCx0aGlzKS5kZXN0''@;'; put 'put ''cm95KCksVHMocGYsdGhpcykmJlRzKHBmLHRoaXMpLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIENudChsKXtpZih0aGlzLmhvdC52aWV3JiZ0aGlzLmhvdC52aWV3Ll93dCYmIVRzKFJPLHRoaXMpJiYhdGhpcy50YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShsKSl7Y29uc3Qg''@;'; put 'put ''Yz1JbShsLnRhcmdldCwiVEQiLCJUQk9EWSIpO2xldCBhPW51bGw7YyYmKGE9dGhpcy5ob3QuZ2V0Q29vcmRzKGMpKSwoIWN8fHRoaXMucmFuZ2UuZnJvbSYmYSYmKHRoaXMucmFuZ2UuZnJvbS5yb3chPT1hLnJvd3x8dGhpcy5yYW5nZS5mcm9tLmNvbCE9PWEuY29sKSkmJnRoaXMuaGlkZSgp''@;'; put 'put ''fX1mdW5jdGlvbiBTbnQobCl7Y29uc3R7cm9vdERvY3VtZW50OmN9PXRoaXMuaG90O2lmKCEoVHMoUk8sdGhpcyl8fFRzKGZsLHRoaXMpLmlzRm9jdXNlZCgpfHxZbyhsLnRhcmdldCwid3RCb3JkZXIiKXx8VHModEssdGhpcyk9PT1sLnRhcmdldCkmJlRzKGZsLHRoaXMpKWlmKFY0KHRLLHRo''@;'; put 'put ''aXMsYy5lbGVtZW50RnJvbVBvaW50KGwuY2xpZW50WCxsLmNsaWVudFkpKSx0aGlzLnRhcmdldElzQ2VsbFdpdGhDb21tZW50KGwpKXtjb25zdCBhPXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UodGhpcy5ob3QuZ2V0Q29vcmRzKGwudGFyZ2V0KSk7VHMocGYsdGhpcykuc2hvdyhhKX1lbHNl''@;'; put 'put ''IFJtKGwudGFyZ2V0LGMpJiYhdGhpcy50YXJnZXRJc0NvbW1lbnRUZXh0QXJlYShsKSYmVHMocGYsdGhpcykuaGlkZSgpfWZ1bmN0aW9uIE1udCgpe1Y0KFJPLHRoaXMsITEpfWZ1bmN0aW9uIHhudChsLGMpe2NbQjRdJiZjW0I0XVtXeF0mJm1pKGwsYy5jb21tZW50ZWRDZWxsQ2xhc3NOYW1l''@;'; put 'put ''KX1mdW5jdGlvbiBFbnQoKXtWNChQTyx0aGlzLCIiKSx0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSgiZ3JpZCIpLHRoaXMuc2V0Q29tbWVudCgpfWZ1bmN0aW9uIFRudCgpe1Y0KFBPLHRoaXMsdGhpcy5nZXRDb21tZW50KCkpLHRoaXMuaG90Lmxp''@;'; put 'put ''c3RlbigpLHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLnNldEFjdGl2ZUNvbnRleHROYW1lKGVLKX1mdW5jdGlvbiBrbnQobCl7VjQoT08sdGhpcyx7d2lkdGg6V2EobC50YXJnZXQpLGhlaWdodDpabChsLnRhcmdldCl9KX1mdW5jdGlvbiBBbnQobCl7Y29uc3QgYz1XYShsLnRhcmdl''@;'; put 'put ''dCksYT1abChsLnRhcmdldCk7KGMhPT1UcyhPTyx0aGlzKS53aWR0aCsxfHxhIT09VHMoT08sdGhpcykuaGVpZ2h0KzIpJiZ0aGlzLnVwZGF0ZUNvbW1lbnRNZXRhKHRoaXMucmFuZ2UuZnJvbS5yb3csdGhpcy5yYW5nZS5mcm9tLmNvbCx7c3R5bGU6e3dpZHRoOmMsaGVpZ2h0OmF9fSl9ZnVu''@;'; put 'put ''Y3Rpb24gRG50KGwpe1RzKGZsLHRoaXMpLmlzVmlzaWJsZSgpJiZqaChsKX1mdW5jdGlvbiBJbnQoKXtUcyhMTyx0aGlzKXx8dGhpcy5oaWRlKCl9ZnVuY3Rpb24gbksobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFJudChsKXt2YXIgYz1mdW5jdGlvbiBMbnQobCxjKXtpZigib2JqZWN0IiE9''@;'; put 'put ''dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3Qg''@;'; put 'put ''cmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFi''@;'; put 'put ''bGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9UigyOTc2MCk7Y2xhc3MgYWZle2NvbnN0cnVjdG9yKGMpe25LKHRoaXMsImhvdCIsdm9pZCAwKSxuSyh0aGlzLCJjb21tYW5kcyIse30pLG5LKHRoaXMsImNvbW1vbkNhbGxiYWNrIixudWxsKSx0aGlzLmhvdD1j''@;'; put 'put ''fXJlZ2lzdGVyQ29tbWFuZChjLGEpe3RoaXMuY29tbWFuZHNbY109YX1zZXRDb21tb25DYWxsYmFjayhjKXt0aGlzLmNvbW1vbkNhbGxiYWNrPWN9ZXhlY3V0ZShjKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhPjE/YS0xOjApLGg9MTtoPGE7aCsrKWRbaC0xXT1h''@;'; put 'put ''cmd1bWVudHNbaF07Y29uc3QgZj1jLnNwbGl0KCI6Iiksdj1mWzBdLFM9Mj09PWYubGVuZ3RoP2ZbMV06bnVsbDtsZXQgVj10aGlzLmNvbW1hbmRzW3ZdO2lmKCFWKXRocm93IG5ldyBFcnJvcihgTWVudSBjb21tYW5kICcke3Z9JyBub3QgZXhpc3RzLmApO2lmKFMmJlYuc3VibWVudSYmKFY9''@;'; put 'put ''ZnVuY3Rpb24gT250KGwsYyl7bGV0IGE7cmV0dXJuIFRuKGMsZD0+e2NvbnN0IGg9ZC5rZXk/ZC5rZXkuc3BsaXQoIjoiKTpudWxsO2lmKEFycmF5LmlzQXJyYXkoaCkmJmhbMV09PT1sKXJldHVybiBhPWQsITF9KSxhfShTLFYuc3VibWVudS5pdGVtcykpLCEwPT09Vi5kaXNhYmxlZHx8ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFYuZGlzYWJsZWQmJiEwPT09Vi5kaXNhYmxlZC5jYWxsKHRoaXMuaG90KXx8WWwoViwic3VibWVudSIpKXJldHVybjtjb25zdCBRPVtdOyJmdW5jdGlvbiI9PXR5cGVvZiBWLmNhbGxiYWNrJiZRLnB1c2goVi5jYWxsYmFjayksImZ1bmN0aW9uIj09dHlwZW9mIHRo''@;'; put 'put ''aXMuY29tbW9uQ2FsbGJhY2smJlEucHVzaCh0aGlzLmNvbW1vbkNhbGxiYWNrKSxkLnVuc2hpZnQoZi5qb2luKCI6IikpLFRuKFEsZGU9PmRlLmFwcGx5KHRoaXMuaG90LGQpKX19Y29uc3QgS2g9ImFsaWdubWVudCIsRk89ImNsZWFyX2NvbHVtbiIsR3g9ImNvbF9sZWZ0IiwkeD0iY29sX3Jp''@;'; put 'put ''Z2h0IixxeD0ibWFrZV9yZWFkX29ubHkiLE5PPSJyZWRvIixLeD0icmVtb3ZlX2NvbCIsSE89InJlbW92ZV9yb3ciLFZPPSJyb3dfYWJvdmUiLEJPPSJyb3dfYmVsb3ciLFh4PSJub19pdGVtcyIsak89InVuZG8iLGxmZT1bVk8sQk8sR3gsJHgsRk8sSE8sS3gsak8sTk8scXgsS2gsRXMsWHhd''@;'; put 'put ''LGNmZT17W0VzXTpmdW5jdGlvbiBjbnQoKXtyZXR1cm57bmFtZTpFc319LFtYeF06ZnVuY3Rpb24gWW50KCl7cmV0dXJue2tleTpYeCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShPRyl9LGRpc2FibGVkOiEwLGlzQ29tbWFuZDohMX19LFtWT106ZnVuY3Rpb24gVW50''@;'; put 'put ''KCl7cmV0dXJue2tleTpWTyxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShQRyl9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZ2V0VG9wTGVmdENvcm5lcigpO3RoaXMuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLGwucm93LDEs''@;'; put 'put ''IkNvbnRleHRNZW51LnJvd0Fib3ZlIil9LGRpc2FibGVkKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuIShsJiYhKGwuaXNTaW5nbGVIZWFkZXIoKSYmbC5oaWdobGlnaHQucm93PDApKXx8KHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpPzA9''@;'; put 'put ''PT10aGlzLmNvdW50Um93cygpOnRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpfHx0aGlzLmNvdW50Um93cygpPj10aGlzLmdldFNldHRpbmdzKCkubWF4Um93cyl9LGhpZGRlbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dJbnNlcnRSb3d9fX0sW0JP''@;'; put 'put ''XTpmdW5jdGlvbiBabnQoKXtyZXR1cm57a2V5OkJPLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEZHKX0sY2FsbGJhY2soKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5nZXRCb3R0b21SaWdodENvcm5lcigpO3RoaXMuYWx0ZXIoImluc2VydF9y''@;'; put 'put ''b3dfYmVsb3ciLGwucm93LDEsIkNvbnRleHRNZW51LnJvd0JlbG93Iil9LGRpc2FibGVkKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuIShsJiYhKGwuaXNTaW5nbGVIZWFkZXIoKSYmbC5oaWdobGlnaHQucm93PDApKXx8IXRoaXMuc2VsZWN0aW9uLmlzU2Vs''@;'; put 'put ''ZWN0ZWRCeUNvcm5lcigpJiYodGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuY291bnRSb3dzKCk+PXRoaXMuZ2V0U2V0dGluZ3MoKS5tYXhSb3dzKX0saGlkZGVuKCl7cmV0dXJuIXRoaXMuZ2V0U2V0dGluZ3MoKS5hbGxvd0luc2VydFJvd319fSxbR3hd''@;'; put 'put ''OmZ1bmN0aW9uIE5udCgpe3JldHVybntrZXk6R3gsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoTkcpfSxjYWxsYmFjaygpe2NvbnN0IGw9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLmdldFRvcExlZnRDb3JuZXIoKSxjPXRoaXMuaXNSdGwoKT8iaW5zZXJ0X2Nv''@;'; put 'put ''bF9lbmQiOiJpbnNlcnRfY29sX3N0YXJ0Ijt0aGlzLmFsdGVyKGMsbC5jb2wsMSwiQ29udGV4dE1lbnUuY29sdW1uTGVmdCIpfSxkaXNhYmxlZCgpe2lmKCF0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXJldHVybiEwO2NvbnN0IGw9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFz''@;'; put 'put ''dCgpO3JldHVybiEobCYmIShsLmlzU2luZ2xlSGVhZGVyKCkmJmwuaGlnaGxpZ2h0LmNvbDwwKSl8fCh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09dGhpcy5jb3VudENvbHMoKTp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8dGhpcy5jb3Vu''@;'; put 'put ''dENvbHMoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHMpfSxoaWRkZW4oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0Q29sdW1ufX19LFskeF06ZnVuY3Rpb24gSG50KCl7cmV0dXJue2tleTokeCxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFz''@;'; put 'put ''ZShIRyl9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuZ2V0VG9wUmlnaHRDb3JuZXIoKSxjPXRoaXMuaXNSdGwoKT8iaW5zZXJ0X2NvbF9zdGFydCI6Imluc2VydF9jb2xfZW5kIjt0aGlzLmFsdGVyKGMsbC5jb2wsMSwiQ29udGV4dE1lbnUuY29sdW1u''@;'; put 'put ''UmlnaHQiKX0sZGlzYWJsZWQoKXtpZighdGhpcy5pc0NvbHVtbk1vZGlmaWNhdGlvbkFsbG93ZWQoKSlyZXR1cm4hMDtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4hKGwmJiEobC5pc1NpbmdsZUhlYWRlcigpJiZsLmhpZ2hsaWdodC5jb2w8MCkpfHwhdGhpcy5z''@;'; put 'put ''ZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkmJih0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8dGhpcy5jb3VudENvbHMoKT49dGhpcy5nZXRTZXR0aW5ncygpLm1heENvbHMpfSxoaWRkZW4oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93SW5zZXJ0''@;'; put 'put ''Q29sdW1ufX19LFtGT106ZnVuY3Rpb24gRm50KCl7cmV0dXJue2tleTpGTyxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShaRyl9LGNhbGxiYWNrKGwsYyl7Y29uc3QgYT1jWzBdLnN0YXJ0LmNvbCxkPWNbMF0uZW5kLmNvbDt0aGlzLmNvdW50Um93cygpJiZ0aGlzLnBv''@;'; put 'put ''cHVsYXRlRnJvbUFycmF5KDAsYSxbW251bGxdXSxNYXRoLm1heChjWzBdLnN0YXJ0LnJvdyxjWzBdLmVuZC5yb3cpLGQsIkNvbnRleHRNZW51LmNsZWFyQ29sdW1uIil9LGRpc2FibGVkKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuIShsJiYhKGwuaXNTaW5n''@;'; put 'put ''bGVIZWFkZXIoKSYmbC5oaWdobGlnaHQuY29sPDApJiZ0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKSl9fX0sW0hPXTpmdW5jdGlvbiB6bnQoKXtyZXR1cm57a2V5OkhPLG5hbWUoKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWQoKTtsZXQgYz0wO2lmKGwpaWYobC5s''@;'; put 'put ''ZW5ndGg+MSljPTE7ZWxzZXtjb25zdFthLCxkXT1sWzBdO2EtZCE9MCYmKGM9MSl9cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShWRyxjKX0sY2FsbGJhY2soKXt0aGlzLmFsdGVyKCJyZW1vdmVfcm93IixmdW5jdGlvbiB1S2UobCl7Y29uc3QgYz1iYihsLmdldFNlbGVjdGVkKCkp''@;'; put 'put ''O2lmKDA9PT1jfHwxPT09YylyZXR1cm5bXTtjb25zdCBhPUF4KGMse2NyZWF0ZUNlbGxDb29yZHM6bC5fY3JlYXRlQ2VsbENvb3Jkcy5iaW5kKGwpLGNyZWF0ZUNlbGxSYW5nZTpsLl9jcmVhdGVDZWxsUmFuZ2UuYmluZChsKX0pLGQ9bmV3IFNldDtyZXR1cm4gVG4obC5nZXRTZWxlY3RlZCgp''@;'; put 'put ''LHY9Pntjb25zdHtmcm9tOlMsdG86Vn09YSh2KSxRPU1hdGgubWF4KFMucm93LDApO1RuKEFycmF5LmZyb20obmV3IEFycmF5KFYucm93LVErMSksKHBlLENlKT0+UStDZSkscGU9PntkLmhhcyhwZSl8fGQuYWRkKHBlKX0pfSksTWMoQXJyYXkuZnJvbShkKS5zb3J0KCh2LFMpPT52LVMpLCh2''@;'; put 'put ''LFMsVixRKT0+KDAhPT1WJiZTPT09UVtWLTFdKzE/dlt2Lmxlbmd0aC0xXVsxXSs9MTp2LnB1c2goW1MsMV0pLHYpLFtdKX0odGhpcyksMSwiQ29udGV4dE1lbnUucmVtb3ZlUm93Iil9LGRpc2FibGVkKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWx8fGwuaXNT''@;'; put 'put ''aW5nbGVIZWFkZXIoKSYmbC5oaWdobGlnaHQucm93PDApcmV0dXJuITA7Y29uc3QgYz10aGlzLmNvdW50Um93cygpO3JldHVybiB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKT8wPT09Yzp0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8MD09PWN9''@;'; put 'put ''LGhpZGRlbigpe3JldHVybiF0aGlzLmdldFNldHRpbmdzKCkuYWxsb3dSZW1vdmVSb3d9fX0sW0t4XTpmdW5jdGlvbiBqbnQoKXtyZXR1cm57a2V5Okt4LG5hbWUoKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWQoKTtsZXQgYz0wO2lmKGwpaWYobC5sZW5ndGg+MSljPTE7ZWxzZXtjb25zdFss''@;'; put 'put ''YSwsZF09bFswXTthLWQhPTAmJihjPTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoQkcsYyl9LGNhbGxiYWNrKCl7dGhpcy5hbHRlcigicmVtb3ZlX2NvbCIsZnVuY3Rpb24gY0tlKGwpe2NvbnN0IGM9YmIobC5nZXRTZWxlY3RlZCgpKTtpZigwPT09Y3x8MT09PWMpcmV0dXJu''@;'; put 'put ''W107Y29uc3QgYT1BeChjLHtjcmVhdGVDZWxsQ29vcmRzOmwuX2NyZWF0ZUNlbGxDb29yZHMuYmluZChsKSxjcmVhdGVDZWxsUmFuZ2U6bC5fY3JlYXRlQ2VsbFJhbmdlLmJpbmQobCl9KSxkPW5ldyBTZXQ7cmV0dXJuIFRuKGwuZ2V0U2VsZWN0ZWQoKSx2PT57Y29uc3R7ZnJvbTpTLHRvOlZ9''@;'; put 'put ''PWEodiksUT1NYXRoLm1heChTLmNvbCwwKTtUbihBcnJheS5mcm9tKG5ldyBBcnJheShWLmNvbC1RKzEpLChwZSxDZSk9PlErQ2UpLHBlPT57ZC5oYXMocGUpfHxkLmFkZChwZSl9KX0pLE1jKEFycmF5LmZyb20oZCkuc29ydCgodixTKT0+di1TKSwodixTLFYsUSk9PigwIT09ViYmUz09PVFb''@;'; put 'put ''Vi0xXSsxP3Zbdi5sZW5ndGgtMV1bMV0rPTE6di5wdXNoKFtTLDFdKSx2KSxbXSl9KHRoaXMpLG51bGwsIkNvbnRleHRNZW51LnJlbW92ZUNvbHVtbiIpfSxkaXNhYmxlZCgpe2lmKCF0aGlzLmlzQ29sdW1uTW9kaWZpY2F0aW9uQWxsb3dlZCgpKXJldHVybiEwO2NvbnN0IGw9dGhpcy5nZXRT''@;'; put 'put ''ZWxlY3RlZFJhbmdlTGFzdCgpO2lmKCFsfHxsLmlzU2luZ2xlSGVhZGVyKCkmJmwuaGlnaGxpZ2h0LmNvbDwwKXJldHVybiEwO2NvbnN0IGM9dGhpcy5jb3VudENvbHMoKTtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCk/MD09PWM6dGhpcy5zZWxlY3Rpb24uaXNT''@;'; put 'put ''ZWxlY3RlZEJ5Um93SGVhZGVyKCl8fDA9PT1jfSxoaWRkZW4oKXtyZXR1cm4hdGhpcy5nZXRTZXR0aW5ncygpLmFsbG93UmVtb3ZlQ29sdW1ufX19LFtqT106ZnVuY3Rpb24gV250KCl7cmV0dXJue2tleTpqTyxuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShqRyl9LGNh''@;'; put 'put ''bGxiYWNrKCl7dGhpcy51bmRvKCl9LGhpZGRlbigpe2NvbnN0IGw9dGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIik7cmV0dXJuIWx8fCFsLmlzRW5hYmxlZCgpfSxkaXNhYmxlZCgpe3JldHVybiF0aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKS5pc1VuZG9BdmFpbGFibGUoKX19fSxbTk9dOmZ1''@;'; put 'put ''bmN0aW9uIEJudCgpe3JldHVybntrZXk6Tk8sbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoekcpfSxjYWxsYmFjaygpe3RoaXMucmVkbygpfSxoaWRkZW4oKXtjb25zdCBsPXRoaXMuZ2V0UGx1Z2luKCJ1bmRvUmVkbyIpO3JldHVybiFsfHwhbC5pc0VuYWJsZWQoKX0s''@;'; put 'put ''ZGlzYWJsZWQoKXtyZXR1cm4hdGhpcy5nZXRQbHVnaW4oInVuZG9SZWRvIikuaXNSZWRvQXZhaWxhYmxlKCl9fX0sW3F4XTpmdW5jdGlvbiBWbnQoKXtyZXR1cm57a2V5OnF4LG5hbWUoKXtsZXQgbD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoVUcpO3JldHVybiBVMyh0aGlzLmdldFNlbGVj''@;'; put 'put ''dGVkUmFuZ2UoKSwoYSxkKT0+dGhpcy5nZXRDZWxsTWV0YShhLGQpLnJlYWRPbmx5KSYmKGw9SDQobCkpLGx9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxjPVUzKGwsKGEsZCk9PnRoaXMuZ2V0Q2VsbE1ldGEoYSxkKS5yZWFkT25seSk7VG4obCxhPT57YS5m''@;'; put 'put ''b3JBbGwoKGQsaCk9PntkPj0wJiZoPj0wJiZ0aGlzLnNldENlbGxNZXRhKGQsaCwicmVhZE9ubHkiLCFjKX0pfSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQoKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4hKGwmJiFsLmlzU2luZ2xlSGVhZGVyKCkmJiF0aGlz''@;'; put 'put ''LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKSYmMCE9PXRoaXMuY291bnRSb3dzKCkmJjAhPT10aGlzLmNvdW50Q29scygpJiZ0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSYmMCE9PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLmxlbmd0aCl9fX0sW0toXTpmdW5jdGlvbiBQbnQoKXtyZXR1''@;'; put 'put ''cm57a2V5OktoLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGkkKX0sZGlzYWJsZWQoKXtpZigwPT09dGhpcy5jb3VudFJvd3MoKXx8MD09PXRoaXMuY291bnRDb2xzKCkpcmV0dXJuITA7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7cmV0dXJuIShs''@;'; put 'put ''JiYhbC5pc1NpbmdsZUhlYWRlcigpJiZ0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSYmIXRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvcm5lcigpKX0sc3VibWVudTp7aXRlbXM6W3trZXk6YCR7S2h9OmxlZnRgLG5hbWUoKXtsZXQgbD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobyQpO3Jl''@;'; put 'put ''dHVybiBVMyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSwoYSxkKT0+e2NvbnN0IGg9dGhpcy5nZXRDZWxsTWV0YShhLGQpLmNsYXNzTmFtZTtpZihoJiYtMSE9PWguaW5kZXhPZigiaHRMZWZ0IikpcmV0dXJuITB9KSYmKGw9SDQobCkpLGx9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNl''@;'; put 'put ''bGVjdGVkUmFuZ2UoKSxjPW03KGwsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEoaCxmKS5jbGFzc05hbWUpLGE9Imhvcml6b250YWwiLGQ9Imh0TGVmdCI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsYyxsLGEsZCksS20obCxhLGQsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEo''@;'; put 'put ''aCxmKSwoaCxmLHYsUyk9PnRoaXMuc2V0Q2VsbE1ldGEoaCxmLHYsUykpLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OmAke0tofTpjZW50ZXJgLG5hbWUoKXtsZXQgbD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UocyQpO3JldHVybiBVMyh0aGlzLmdldFNlbGVjdGVkUmFuZ2Uo''@;'; put 'put ''KSwoYSxkKT0+e2NvbnN0IGg9dGhpcy5nZXRDZWxsTWV0YShhLGQpLmNsYXNzTmFtZTtpZihoJiYtMSE9PWguaW5kZXhPZigiaHRDZW50ZXIiKSlyZXR1cm4hMH0pJiYobD1INChsKSksbH0sY2FsbGJhY2soKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGM9bTcobCwoaCxmKT0+''@;'; put 'put ''dGhpcy5nZXRDZWxsTWV0YShoLGYpLmNsYXNzTmFtZSksYT0iaG9yaXpvbnRhbCIsZD0iaHRDZW50ZXIiO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLGMsbCxhLGQpLEttKGwsYSxkLChoLGYpPT50aGlzLmdldENlbGxNZXRhKGgsZiksKGgsZix2LFMpPT50aGlzLnNldENl''@;'; put 'put ''bGxNZXRhKGgsZix2LFMpKSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX0se2tleTpgJHtLaH06cmlnaHRgLG5hbWUoKXtsZXQgbD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoYSQpO3JldHVybiBVMyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSwoYSxkKT0+e2NvbnN0IGg9dGhpcy5nZXRD''@;'; put 'put ''ZWxsTWV0YShhLGQpLmNsYXNzTmFtZTtpZihoJiYtMSE9PWguaW5kZXhPZigiaHRSaWdodCIpKXJldHVybiEwfSkmJihsPUg0KGwpKSxsfSxjYWxsYmFjaygpe2NvbnN0IGw9dGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksYz1tNyhsLChoLGYpPT50aGlzLmdldENlbGxNZXRhKGgsZikuY2xhc3NO''@;'; put 'put ''YW1lKSxhPSJob3Jpem9udGFsIixkPSJodFJpZ2h0Ijt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixjLGwsYSxkKSxLbShsLGEsZCwoaCxmKT0+dGhpcy5nZXRDZWxsTWV0YShoLGYpLChoLGYsdixTKT0+dGhpcy5zZXRDZWxsTWV0YShoLGYsdixTKSksdGhpcy5yZW5kZXIo''@;'; put 'put ''KX0sZGlzYWJsZWQ6ITF9LHtrZXk6YCR7S2h9Omp1c3RpZnlgLG5hbWUoKXtsZXQgbD10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobCQpO3JldHVybiBVMyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSwoYSxkKT0+e2NvbnN0IGg9dGhpcy5nZXRDZWxsTWV0YShhLGQpLmNsYXNzTmFtZTtpZiho''@;'; put 'put ''JiYtMSE9PWguaW5kZXhPZigiaHRKdXN0aWZ5IikpcmV0dXJuITB9KSYmKGw9SDQobCkpLGx9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxjPW03KGwsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEoaCxmKS5jbGFzc05hbWUpLGE9Imhvcml6b250YWwiLGQ9Imh0''@;'; put 'put ''SnVzdGlmeSI7dGhpcy5ydW5Ib29rcygiYmVmb3JlQ2VsbEFsaWdubWVudCIsYyxsLGEsZCksS20obCxhLGQsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEoaCxmKSwoaCxmLHYsUyk9PnRoaXMuc2V0Q2VsbE1ldGEoaCxmLHYsUykpLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7bmFtZTpF''@;'; put 'put ''c30se2tleTpgJHtLaH06dG9wYCxuYW1lKCl7bGV0IGw9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGMkKTtyZXR1cm4gVTModGhpcy5nZXRTZWxlY3RlZFJhbmdlKCksKGEsZCk9Pntjb25zdCBoPXRoaXMuZ2V0Q2VsbE1ldGEoYSxkKS5jbGFzc05hbWU7aWYoaCYmLTEhPT1oLmluZGV4T2Yo''@;'; put 'put ''Imh0VG9wIikpcmV0dXJuITB9KSYmKGw9SDQobCkpLGx9LGNhbGxiYWNrKCl7Y29uc3QgbD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSxjPW03KGwsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEoaCxmKS5jbGFzc05hbWUpLGE9InZlcnRpY2FsIixkPSJodFRvcCI7dGhpcy5ydW5Ib29rcygiYmVm''@;'; put 'put ''b3JlQ2VsbEFsaWdubWVudCIsYyxsLGEsZCksS20obCxhLGQsKGgsZik9PnRoaXMuZ2V0Q2VsbE1ldGEoaCxmKSwoaCxmLHYsUyk9PnRoaXMuc2V0Q2VsbE1ldGEoaCxmLHYsUykpLHRoaXMucmVuZGVyKCl9LGRpc2FibGVkOiExfSx7a2V5OmAke0tofTptaWRkbGVgLG5hbWUoKXtsZXQgbD10''@;'; put 'put ''aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UodSQpO3JldHVybiBVMyh0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSwoYSxkKT0+e2NvbnN0IGg9dGhpcy5nZXRDZWxsTWV0YShhLGQpLmNsYXNzTmFtZTtpZihoJiYtMSE9PWguaW5kZXhPZigiaHRNaWRkbGUiKSlyZXR1cm4hMH0pJiYobD1INChsKSks''@;'; put 'put ''bH0sY2FsbGJhY2soKXtjb25zdCBsPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLGM9bTcobCwoaCxmKT0+dGhpcy5nZXRDZWxsTWV0YShoLGYpLmNsYXNzTmFtZSksYT0idmVydGljYWwiLGQ9Imh0TWlkZGxlIjt0aGlzLnJ1bkhvb2tzKCJiZWZvcmVDZWxsQWxpZ25tZW50IixjLGwsYSxkKSxL''@;'; put 'put ''bShsLGEsZCwoaCxmKT0+dGhpcy5nZXRDZWxsTWV0YShoLGYpLChoLGYsdixTKT0+dGhpcy5zZXRDZWxsTWV0YShoLGYsdixTKSksdGhpcy5yZW5kZXIoKX0sZGlzYWJsZWQ6ITF9LHtrZXk6YCR7S2h9OmJvdHRvbWAsbmFtZSgpe2xldCBsPXRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShkJCk7''@;'; put 'put ''cmV0dXJuIFUzKHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpLChhLGQpPT57Y29uc3QgaD10aGlzLmdldENlbGxNZXRhKGEsZCkuY2xhc3NOYW1lO2lmKGgmJi0xIT09aC5pbmRleE9mKCJodEJvdHRvbSIpKXJldHVybiEwfSkmJihsPUg0KGwpKSxsfSxjYWxsYmFjaygpe2NvbnN0IGw9dGhpcy5n''@;'; put 'put ''ZXRTZWxlY3RlZFJhbmdlKCksYz1tNyhsLChoLGYpPT50aGlzLmdldENlbGxNZXRhKGgsZikuY2xhc3NOYW1lKSxhPSJ2ZXJ0aWNhbCIsZD0iaHRCb3R0b20iO3RoaXMucnVuSG9va3MoImJlZm9yZUNlbGxBbGlnbm1lbnQiLGMsbCxhLGQpLEttKGwsYSxkLChoLGYpPT50aGlzLmdldENlbGxN''@;'; put 'put ''ZXRhKGgsZiksKGgsZix2LFMpPT50aGlzLnNldENlbGxNZXRhKGgsZix2LFMpKSx0aGlzLnJlbmRlcigpfSxkaXNhYmxlZDohMX1dfX19fTtmdW5jdGlvbiB1ZmUoKXtjb25zdCBsPXt9O3JldHVybiBDcyhjZmUsKGMsYSk9PntsW2FdPWMoKX0pLGx9ZnVuY3Rpb24gcksobCxjLGEpe3JldHVy''@;'; put 'put ''biBjPWZ1bmN0aW9uIEdudChsKXt2YXIgYz1mdW5jdGlvbiAkbnQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10''@;'; put 'put ''eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMr''@;'; put 'put ''IiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgZGZle2NvbnN0cnVjdG9yKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3JLKHRoaXMsImhvdCIsdm9pZCAwKSxySyh0aGlzLCJwcmVkZWZpbmVkSXRlbXMiLHVmZSgpKSxySyh0aGlzLCJkZWZhdWx0T3JkZXJQYXR0ZXJuIix2b2lkIDApLHRoaXMuaG90PWMsdGhpcy5kZWZhdWx0T3JkZXJQYXR0ZXJuPWF9c2V0UHJl''@;'; put 'put ''ZGVmaW5lZEl0ZW1zKGMpe2NvbnN0IGE9e307dGhpcy5kZWZhdWx0T3JkZXJQYXR0ZXJuLmxlbmd0aD0wLENzKGMsKGQsaCk9PntsZXQgZj0iIjtkLm5hbWU9PT1Fcz8oYVtFc109ZCxmPUVzKTppc05hTihwYXJzZUludChoLDEwKSk/KGQua2V5PXZvaWQgMD09PWQua2V5P2g6ZC5rZXksYVto''@;'; put 'put ''XT1kLGY9ZC5rZXkpOihhW2Qua2V5XT1kLGY9ZC5rZXkpLHRoaXMuZGVmYXVsdE9yZGVyUGF0dGVybi5wdXNoKGYpfSksdGhpcy5wcmVkZWZpbmVkSXRlbXM9YX1nZXRJdGVtcygpe3JldHVybiBmdW5jdGlvbiBxbnQoKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3Vt''@;'; put 'put ''ZW50c1sxXT9hcmd1bWVudHNbMV06W10sYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307Y29uc3QgZD1bXTtsZXQgaD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1''@;'; put 'put ''cm4gaCYmaC5pdGVtcz9oPWguaXRlbXM6QXJyYXkuaXNBcnJheShoKXx8KGg9YyksX3MoaCk/Q3MoaCwoZix2KT0+e2xldCBTPWFbInN0cmluZyI9PXR5cGVvZiBmP2Y6dl07U3x8KFM9ZiksX3MoZik/RmMoUyxmKToic3RyaW5nIj09dHlwZW9mIFMmJihTPXtuYW1lOlN9KSx2b2lkIDA9PT1T''@;'; put 'put ''LmtleSYmKFMua2V5PXYpLGQucHVzaChTKX0pOlRuKGgsKGYsdik9PntsZXQgUz1hW2ZdOyFTJiZsZmUuaW5kZXhPZihmKT49MHx8KFN8fChTPXtuYW1lOmYsa2V5OmAke3Z9YH0pLF9zKGYpJiZGYyhTLGYpLHZvaWQgMD09PVMua2V5JiYoUy5rZXk9diksZC5wdXNoKFMpKX0pLGR9KGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHRoaXMuZGVmYXVsdE9yZGVyUGF0dGVybix0aGlzLnByZWRlZmluZWRJdGVtcyl9fWZ1bmN0aW9uIFhtKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBLbnQobCl7dmFyIGM9ZnVuY3Rpb24gWG50''@;'; put 'put ''KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''QEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''Yyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNsYXNzIEpudHtjb25zdHJ1Y3RvcihjLGEpe1htKHRoaXMsInRvcCIsdm9pZCAwKSxYbSh0aGlzLCJ0b3BSZWxhdGl2ZSIsdm9pZCAwKSxYbSh0aGlzLCJsZWZ0Iix2b2lkIDAp''@;'; put 'put ''LFhtKHRoaXMsImxlZnRSZWxhdGl2ZSIsdm9pZCAwKSxYbSh0aGlzLCJzY3JvbGxUb3AiLHZvaWQgMCksWG0odGhpcywic2Nyb2xsTGVmdCIsdm9pZCAwKSxYbSh0aGlzLCJjZWxsSGVpZ2h0Iix2b2lkIDApLFhtKHRoaXMsImNlbGxXaWR0aCIsdm9pZCAwKTtjb25zdCBkPWEuc2Nyb2xsWSxo''@;'; put 'put ''PWEuc2Nyb2xsWDtsZXQgZix2LFMsVixRLGRlO3RoaXMucm9vdFdpbmRvdz1hLHRoaXMudHlwZT10aGlzLmdldFNvdXJjZVR5cGUoYyksImxpdGVyYWwiPT09dGhpcy50eXBlPyhmPXBhcnNlSW50KGMudG9wLDEwKSxTPXBhcnNlSW50KGMubGVmdCwxMCksUT1jLmhlaWdodHx8MCxkZT1jLndp''@;'; put 'put ''ZHRofHwwLHY9ZixWPVMsZis9ZCxTKz1oKToiZXZlbnQiPT09dGhpcy50eXBlJiYoZj1wYXJzZUludChjLnBhZ2VZLDEwKSxTPXBhcnNlSW50KGMucGFnZVgsMTApLFE9Yy50YXJnZXQuY2xpZW50SGVpZ2h0LGRlPWMudGFyZ2V0LmNsaWVudFdpZHRoLHY9Zi1kLFY9Uy1oKSx0aGlzLnRvcD1m''@;'; put 'put ''LHRoaXMudG9wUmVsYXRpdmU9dix0aGlzLmxlZnQ9Uyx0aGlzLmxlZnRSZWxhdGl2ZT1WLHRoaXMuc2Nyb2xsVG9wPWQsdGhpcy5zY3JvbGxMZWZ0PWgsdGhpcy5jZWxsSGVpZ2h0PVEsdGhpcy5jZWxsV2lkdGg9ZGV9Z2V0U291cmNlVHlwZShjKXtsZXQgYT0ibGl0ZXJhbCI7cmV0dXJuIGMg''@;'; put 'put ''aW5zdGFuY2VvZiBFdmVudCYmKGE9ImV2ZW50IiksYX1maXRzQWJvdmUoYyl7cmV0dXJuIHRoaXMudG9wUmVsYXRpdmU+PWMub2Zmc2V0SGVpZ2h0fWZpdHNCZWxvdyhjKXtyZXR1cm4gdGhpcy50b3BSZWxhdGl2ZStjLm9mZnNldEhlaWdodDw9KGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAw''@;'; put 'put ''IT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnJvb3RXaW5kb3cuaW5uZXJIZWlnaHQpfWZpdHNPblJpZ2h0KGMpe3JldHVybiB0aGlzLmxlZnRSZWxhdGl2ZSt0aGlzLmNlbGxXaWR0aCtjLm9mZnNldFdpZHRoPD0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVu''@;'; put 'put ''dHNbMV0/YXJndW1lbnRzWzFdOnRoaXMucm9vdFdpbmRvdy5pbm5lcldpZHRoKX1maXRzT25MZWZ0KGMpe3JldHVybiB0aGlzLmxlZnRSZWxhdGl2ZT49Yy5vZmZzZXRXaWR0aH19ZnVuY3Rpb24gSngobCxjLGEpeyhmdW5jdGlvbiBRbnQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIFJzKGwsYyl7cmV0dXJuIGwuZ2V0KGhmZShsLGMpKX1mdW5jdGlvbiB6TyhsLGMsYSl7cmV0dXJuIGwuc2V0KGhm''@;'; put 'put ''ZShsLGMpLGEpLGF9ZnVuY3Rpb24gaGZlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmpl''@;'; put 'put ''Y3QiKX12YXIgdTE9bmV3IFdlYWtNYXAsSm09bmV3IFdlYWtNYXAsdTA9bmV3IFdlYWtNYXAsaUs9bmV3IFdlYWtNYXAsQmI9bmV3IFdlYWtNYXA7Y2xhc3MgZXJ0e2NvbnN0cnVjdG9yKGMpe0p4KHRoaXMsdTEsdm9pZCAwKSxKeCh0aGlzLEptLHZvaWQgMCksSngodGhpcyx1MCx2b2lkIDAp''@;'; put 'put ''LEp4KHRoaXMsaUssITEpLEp4KHRoaXMsQmIse2Fib3ZlOjAsYmVsb3c6MCxsZWZ0OjAscmlnaHQ6MH0pLHpPKGlLLHRoaXMsYyl9c2V0T2Zmc2V0KGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybiBScyhCYix0''@;'; put 'put ''aGlzKVtjXT1hLHRoaXN9c2V0RWxlbWVudChjKXtyZXR1cm4gek8odTEsdGhpcyxjKSx0aGlzfXNldFBhcmVudEVsZW1lbnQoYyl7cmV0dXJuIHpPKEptLHRoaXMsYyksdGhpc311cGRhdGVQb3NpdGlvbihjKXt6Tyh1MCx0aGlzLG5ldyBKbnQoYyxScyh1MSx0aGlzKS5vd25lckRvY3VtZW50''@;'; put 'put ''LmRlZmF1bHRWaWV3KSksUnMoaUssdGhpcyk/KFJzKHUwLHRoaXMpLmZpdHNCZWxvdyhScyh1MSx0aGlzKSk/dGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKCk6UnModTAsdGhpcykuZml0c0Fib3ZlKFJzKHUxLHRoaXMpKT90aGlzLnNldFBvc2l0aW9uQWJvdmVDdXJzb3IoKTp0aGlzLnNl''@;'; put 'put ''dFBvc2l0aW9uQmVsb3dDdXJzb3IoKSx0aGlzLnVwZGF0ZUhvcml6b250YWxQb3NpdGlvbigpKToodGhpcy5zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKCksdGhpcy5zZXRQb3NpdGlvbk9uUmlnaHRPZkN1cnNvcigpKX11cGRhdGVIb3Jpem9udGFsUG9zaXRpb24oKXsicnRsIj09PVJzKHUxLHRo''@;'; put 'put ''aXMpLmRpcj9Scyh1MCx0aGlzKS5maXRzT25MZWZ0KFJzKHUxLHRoaXMpKT90aGlzLnNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IoKTp0aGlzLnNldFBvc2l0aW9uT25SaWdodE9mQ3Vyc29yKCk6UnModTAsdGhpcykuZml0c09uUmlnaHQoUnModTEsdGhpcykpP3RoaXMuc2V0UG9zaXRpb25P''@;'; put 'put ''blJpZ2h0T2ZDdXJzb3IoKTp0aGlzLnNldFBvc2l0aW9uT25MZWZ0T2ZDdXJzb3IoKX1zZXRQb3NpdGlvbkFib3ZlQ3Vyc29yKCl7bGV0IGM9UnMoQmIsdGhpcykuYWJvdmUrUnModTAsdGhpcykudG9wLVJzKHUxLHRoaXMpLm9mZnNldEhlaWdodDtScyhKbSx0aGlzKSYmKGM9UnModTAsdGhp''@;'; put 'put ''cykudG9wK1JzKHUwLHRoaXMpLmNlbGxIZWlnaHQtUnModTEsdGhpcykub2Zmc2V0SGVpZ2h0KzMpLFJzKHUxLHRoaXMpLnN0eWxlLnRvcD1gJHtjfXB4YH1zZXRQb3NpdGlvbkJlbG93Q3Vyc29yKCl7bGV0IGM9UnMoQmIsdGhpcykuYmVsb3crUnModTAsdGhpcykudG9wKzE7UnMoSm0sdGhp''@;'; put 'put ''cykmJihjPVJzKHUwLHRoaXMpLnRvcC0xKSxScyh1MSx0aGlzKS5zdHlsZS50b3A9YCR7Y31weGB9c2V0UG9zaXRpb25PblJpZ2h0T2ZDdXJzb3IoKXtsZXQgYz1Scyh1MCx0aGlzKS5sZWZ0O2lmKFJzKEptLHRoaXMpKXtjb25zdHtyaWdodDphfT1ScyhKbSx0aGlzKS5nZXRCb3VuZGluZ0Ns''@;'; put 'put ''aWVudFJlY3QoKTtjKz1Scyh1MCx0aGlzKS5jZWxsV2lkdGgrYS0oUnModTAsdGhpcykubGVmdCtScyh1MCx0aGlzKS5jZWxsV2lkdGgpfWVsc2UgYys9UnMoQmIsdGhpcykucmlnaHQ7UnModTEsdGhpcykuc3R5bGUubGVmdD1gJHtjfXB4YH1zZXRQb3NpdGlvbk9uTGVmdE9mQ3Vyc29yKCl7''@;'; put 'put ''bGV0IGM9UnMoQmIsdGhpcykubGVmdCtScyh1MCx0aGlzKS5sZWZ0LVJzKHUxLHRoaXMpLm9mZnNldFdpZHRoO2lmKFJzKEptLHRoaXMpKXtjb25zdHtsZWZ0OmF9PVJzKEptLHRoaXMpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2MtPVJzKHUwLHRoaXMpLmxlZnQtYX1Scyh1MSx0aGlzKS5z''@;'; put 'put ''dHlsZS5sZWZ0PWAke2N9cHhgfX1mdW5jdGlvbiBmZmUobCl7bGV0e2luaXRpYWxQYWdlOmM9LTEsc2l6ZTphPSgoKT0+MCksb25JdGVtU2VsZWN0OmQ9KCgpPT57fSksb25DbGVhcjpoPSgoKT0+e30pfT1sO2NvbnN0IGY9bmV3IFNldDtsZXQgdj1IYShjLC0xLFllKCktMSk7ZnVuY3Rpb24g''@;'; put 'put ''UyhkdCxodCl7Y29uc3QgTXQ9WWUoKS0xO3JldHVybiBkdDwwJiYoZHQ9TXQpLGR0Pk10JiYoZHQ9MCksZi5oYXMoZHQpPy0xOihmLmFkZChkdCksITE9PT1kKGR0LCExKSYmKGR0PVMoMT09PWh0PysrZHQ6LS1kdCxodCkpLGR0KX1mdW5jdGlvbiBZZSgpe3JldHVybiBNYXRoLm1heChhKCks''@;'; put 'put ''MCl9cmV0dXJue3NldEN1cnJlbnRQYWdlOmZ1bmN0aW9uIFYoZHQpe2R0Pi0xJiZkdDxZZSgpJiYhMSE9PWQoZHQsITApJiYodj1kdCl9LGdldEN1cnJlbnRQYWdlOmZ1bmN0aW9uIFEoKXtyZXR1cm4gdn0sdG9GaXJzdEl0ZW06ZnVuY3Rpb24gZGUoKXtZZSgpPjAmJihmLmNsZWFyKCksdj1T''@;'; put 'put ''KDAsMSkpfSx0b0xhc3RJdGVtOmZ1bmN0aW9uIHBlKCl7WWUoKT4wJiYoZi5jbGVhcigpLHY9UyhZZSgpLTEsLTEpKX0sdG9OZXh0SXRlbTpmdW5jdGlvbiBDZSgpe1llKCk+MCYmKGYuY2xlYXIoKSx2PVMoKyt2LDEpKX0sdG9QcmV2aW91c0l0ZW06ZnVuY3Rpb24gT2UoKXtZZSgpPjAmJihm''@;'; put 'put ''LmNsZWFyKCksdj1TKC0tdiwtMSkpfSxnZXRTaXplOlllLGNsZWFyOmZ1bmN0aW9uIGV0KCl7Zi5jbGVhcigpLHY9YyxoKCl9fX1mdW5jdGlvbiBvSyhsKXtyZXR1cm4gWWwobCwic3VibWVudSIpfWZ1bmN0aW9uIHNLKGwpe3JldHVybiBuZXcgUmVnRXhwKEVzLCJpIikudGVzdChsLm5hbWUp''@;'; put 'put ''fWZ1bmN0aW9uIFVPKGwsYyl7cmV0dXJuITA9PT1sLmRpc2FibGVkfHwiZnVuY3Rpb24iPT10eXBlb2YgbC5kaXNhYmxlZCYmITA9PT1sLmRpc2FibGVkLmNhbGwoYyl9ZnVuY3Rpb24gcGZlKGwpe3JldHVybiBZbChsLCJkaXNhYmxlU2VsZWN0aW9uIil9ZnVuY3Rpb24gZ2ZlKGwsYyl7Y29u''@;'; put 'put ''c3QgYT1sLnNsaWNlKDApO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGgmJmFbZF0ubmFtZT09PWM7KWEuc2hpZnQoKTtyZXR1cm4gYX1mdW5jdGlvbiBmcnQobCl7cmV0dXJuKGMsYSxkLGgsZix2KT0+e2lmKGEuaGFzQXR0cmlidXRlKCJnaG9zdC10YWJsZSIpKXJldHVybjtjb25zdCBTPWMuZ2V0''@;'; put 'put ''U291cmNlRGF0YUF0Um93KGQpLFY9bC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksUT0iZnVuY3Rpb24iPT10eXBlb2Ygdj92LmNhbGwobCk6djtpZihzZihhKSxtaShWLCJodEl0ZW1XcmFwcGVyIiksbC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzKXtjb25zdCBkZT0hVU8oUyxs''@;'; put 'put ''KSYmIXBmZShTKSYmIXNLKFMpO1ZvKGEsW1sicm9sZSIsIm1lbnVpdGVtIl0sbFcoUSksLi4uZGU/W25iKC0xKV06W10sLi4uVU8oUyxsKT9bWyJhcmlhLWRpc2FibGVkIiwidHJ1ZSJdXTpbXSwuLi5vSyhTKT9bTmgoITEpXTpbXV0pfWEuY2xhc3NOYW1lPSIiLGEuYXBwZW5kQ2hpbGQoViks''@;'; put 'put ''c0soUyk/bWkoYSwiaHRTZXBhcmF0b3IiKToiZnVuY3Rpb24iPT10eXBlb2YgUy5yZW5kZXJlcj8obWkoYSwiaHRDdXN0b21NZW51UmVuZGVyZXIiKSxhLmFwcGVuZENoaWxkKFMucmVuZGVyZXIoYyxWLGQsaCxmLFEpKSk6WjgoVixRKSxVTyhTLGwpP21pKGEsImh0RGlzYWJsZWQiKTpwZmUo''@;'; put 'put ''Uyk/bWkoYSwiaHRTZWxlY3Rpb25EaXNhYmxlZCIpOm9LKFMpJiZtaShhLCJodFN1Ym1lbnUiKX19ZnVuY3Rpb24gX2ZlKGwsYyxhKXsoZnVuY3Rpb24gcHJ0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBl''@;'; put 'put ''bGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBaMyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gZ3J0KGwpe3ZhciBjPWZ1bmN0aW9uIG1ydChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wu''@;'; put 'put ''dG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJz''@;'; put 'put ''dHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTps''@;'; put 'put ''W2NdPWEsbH1mdW5jdGlvbiBiZmUobCxjLGEpe3JldHVybiBsLnNldCh5ZmUobCxjKSxhKSxhfWZ1bmN0aW9uIFF4KGwsYyl7cmV0dXJuIGwuZ2V0KHlmZShsLGMpKX1mdW5jdGlvbiB5ZmUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciBlRT1uZXcgV2Vha01hcCxaTz1uZXcgV2Vha01hcDtjbGFzcyBqYntjb25zdHJ1Y3RvcihjLGEpe3ZhciBkPXRoaXM7WjModGhp''@;'; put 'put ''cywiaG90Iix2b2lkIDApLFozKHRoaXMsIm9wdGlvbnMiLHZvaWQgMCksWjModGhpcywiZXZlbnRNYW5hZ2VyIixuZXcgemgodGhpcykpLFozKHRoaXMsImNvbnRhaW5lciIsdm9pZCAwKSxaMyh0aGlzLCJwb3NpdGlvbmVyIix2b2lkIDApLFozKHRoaXMsImhvdE1lbnUiLG51bGwpLFozKHRo''@;'; put 'put ''aXMsImhvdFN1Yk1lbnVzIix7fSksWjModGhpcywicGFyZW50TWVudSIsdm9pZCAwKSxaMyh0aGlzLCJtZW51SXRlbXMiLG51bGwpLFozKHRoaXMsIm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHMiLG51bGwpLF9mZSh0aGlzLGVFLHZvaWQgMCksX2ZlKHRoaXMsWk8sdm9pZCAwKSx0aGlzLmhv''@;'; put 'put ''dD1jLHRoaXMub3B0aW9ucz1hfHx7cGFyZW50Om51bGwsbmFtZTpudWxsLGNsYXNzTmFtZToiIixrZWVwSW5WaWV3cG9ydDohMCxzdGFuZGFsb25lOiExLG1pbldpZHRoOjIxNSxjb250YWluZXI6dGhpcy5ob3Qucm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudH0sdGhpcy5jb250YWluZXI9''@;'; put 'put ''dGhpcy5jcmVhdGVDb250YWluZXIodGhpcy5vcHRpb25zLm5hbWUpLHRoaXMucG9zaXRpb25lcj1uZXcgZXJ0KHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3cG9ydCksdGhpcy5wYXJlbnRNZW51PXRoaXMub3B0aW9ucy5wYXJlbnR8fG51bGwsdGhpcy5yZWdpc3RlckV2ZW50cygpLHRoaXMuaXNT''@;'; put 'put ''dWJNZW51KCkmJnRoaXMuYWRkTG9jYWxIb29rKCJhZnRlclNlbGVjdGlvbkNoYW5nZSIsZnVuY3Rpb24oKXtmb3IodmFyIGg9YXJndW1lbnRzLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoO3YrKylmW3ZdPWFyZ3VtZW50c1t2XTtyZXR1cm4gZC5wYXJlbnRNZW51LnJ1bkxvY2FsSG9v''@;'; put 'put ''a3MoImFmdGVyU2VsZWN0aW9uQ2hhbmdlIiwuLi5mKX0pfXJlZ2lzdGVyRXZlbnRzKCl7bGV0IGM9dGhpcy5ob3Qucm9vdFdpbmRvdztmb3IoO2M7KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYy5kb2N1bWVudCwibW91c2Vkb3duIixhPT50aGlzLm9uRG9jdW1lbnRNb3Vz''@;'; put 'put ''ZURvd24oYSkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYy5kb2N1bWVudCwiY29udGV4dG1lbnUiLGE9PnRoaXMub25Eb2N1bWVudENvbnRleHRNZW51KGEpKSxjPXo4KGMpfXNldE1lbnVJdGVtcyhjKXt0aGlzLm1lbnVJdGVtcz1jfWdldE5hdmlnYXRvcigpe3JldHVy''@;'; put 'put ''biBReChlRSx0aGlzKX1nZXRLZXlib2FyZFNob3J0Y3V0c0N0cmwoKXtyZXR1cm4gUXgoWk8sdGhpcyl9Z2V0U2VsZWN0ZWRJdGVtKCl7cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRJdGVtKCk/dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyh0aGlzLmhvdE1lbnUuZ2V0U2VsZWN0ZWRM''@;'; put 'put ''YXN0KClbMF0pOm51bGx9aGFzU2VsZWN0ZWRJdGVtKCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5ob3RNZW51LmdldFNlbGVjdGVkTGFzdCgpKX1pc1N1Yk1lbnUoKXtyZXR1cm4gbnVsbCE9PXRoaXMucGFyZW50TWVudX1vcGVuKCl7dGhpcy5ydW5Mb2NhbEhvb2tzKCJiZWZvcmVPcGVu''@;'; put 'put ''IiksdGhpcy5jb250YWluZXIucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLHRoaXMuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtjb25zdCBjPWlMKFM9PnRoaXMub3BlblN1Yk1lbnUoUyksMzAwKSxhPXRoaXMub3B0aW9ucy5taW5XaWR0aHx8MjE1O2xldCBkPSExLGg9RmgodGhp''@;'; put 'put ''cy5tZW51SXRlbXMsUz0+KFMua2V5PT09WHgmJihkPSEwKSxmdW5jdGlvbiBzcnQobCxjKXtyZXR1cm4hbC5oaWRkZW58fCEoImZ1bmN0aW9uIj09dHlwZW9mIGwuaGlkZGVuJiZsLmhpZGRlbi5jYWxsKGMpKX0oUyx0aGlzLmhvdCkpKTtpZihoLmxlbmd0aDwxJiYhZCloLnB1c2godWZlKClb''@;'; put 'put ''WHhdKTtlbHNlIGlmKDA9PT1oLmxlbmd0aClyZXR1cm47aD1mdW5jdGlvbiBjcnQobCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOkVzLGE9bC5zbGljZSgwKTtyZXR1cm4gYT1nZmUoYSxjKSxhPWZ1bmN0aW9uIGFydChsLGMp''@;'; put 'put ''e2xldCBhPWwuc2xpY2UoMCk7cmV0dXJuIGEucmV2ZXJzZSgpLGE9Z2ZlKGEsYyksYS5yZXZlcnNlKCksYX0oYSxjKSxhPWZ1bmN0aW9uIGxydChsKXtjb25zdCBjPVtdO3JldHVybiBUbihsLChhLGQpPT57ZD4wP2NbYy5sZW5ndGgtMV0ubmFtZSE9PWEubmFtZSYmYy5wdXNoKGEpOmMucHVz''@;'; put 'put ''aChhKX0pLGN9KGEpLGF9KGgsRXMpO2xldCBmPSExO2NvbnN0IHY9e2RhdGE6aCxjb2xIZWFkZXJzOiExLGF1dG9Db2x1bW5TaXplOiEwLGF1dG9XcmFwUm93OiExLG1vZGlmeUNvbFdpZHRoOlM9PnNvKFMpJiZTPGE/YTpTLGF1dG9Sb3dTaXplOiExLHJlYWRPbmx5OiEwLGVkaXRvcjohMSxj''@;'; put 'put ''b3B5UGFzdGU6ITEsaGlkZGVuUm93czohMCxtYXhDb2xzOjEsY29sdW1uczpbe2RhdGE6Im5hbWUiLHJlbmRlcmVyOmZydCh0aGlzLmhvdCl9XSxyZW5kZXJBbGxSb3dzOiEwLGZyYWdtZW50U2VsZWN0aW9uOiExLG91dHNpZGVDbGlja0Rlc2VsZWN0czohMSxkaXNhYmxlVmlzdWFsU2VsZWN0''@;'; put 'put ''aW9uOiJhcmVhIixsYXlvdXREaXJlY3Rpb246dGhpcy5ob3QuaXNSdGwoKT8icnRsIjoibHRyIixhcmlhVGFnczohMSxiZWZvcmVPbkNlbGxNb3VzZU92ZXI6KFMsVik9PntReChlRSx0aGlzKS5zZXRDdXJyZW50UGFnZShWLnJvdyl9LGFmdGVyT25DZWxsTW91c2VPdmVyOihTLFYpPT57dGhp''@;'; put 'put ''cy5pc0FsbFN1Yk1lbnVzQ2xvc2VkKCk/YyhWLnJvdyk6dGhpcy5vcGVuU3ViTWVudShWLnJvdyl9LHJvd0hlaWdodHM6Uz0+aFtTXS5uYW1lPT09RXM/MToyMyxhZnRlck9uQ2VsbENvbnRleHRNZW51OlM9PntTLnByZXZlbnREZWZhdWx0KCksVFcoKSYmZiYmdGhpcy5oYXNTZWxlY3RlZEl0''@;'; put 'put ''ZW0oKSYmdGhpcy5jbG9zZSghMCl9LGFmdGVyU2VsZWN0aW9uOihTLFYsUSxkZSxwZSk9Pnt0aGlzLmhvdE1lbnUudmlldy5pc01vdXNlRG93bigpJiYocGUudmFsdWU9ITApLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJTZWxlY3Rpb25DaGFuZ2UiLHRoaXMuZ2V0U2VsZWN0ZWRJdGVtKCkp''@;'; put 'put ''fSxiZWZvcmVPbkNlbGxNb3VzZVVwOlM9Pnt0aGlzLmhhc1NlbGVjdGVkSXRlbSgpJiYoZj0hdGhpcy5pc0NvbW1hbmRQYXNzaXZlKHRoaXMuZ2V0U2VsZWN0ZWRJdGVtKCkpLHRoaXMuZXhlY3V0ZUNvbW1hbmQoUykpfSxhZnRlck9uQ2VsbE1vdXNlVXA6Uz0+eyghVFcoKXx8IU5tKFMpKSYm''@;'; put 'put ''ZiYmdGhpcy5oYXNTZWxlY3RlZEl0ZW0oKSYmKFQ0KCl8fEVXKCk/dGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+dGhpcy5jbG9zZSghMCksMzI1KTp0aGlzLmNsb3NlKCEwKSl9LGFmdGVyVW5saXN0ZW46KCk9PnshdGhpcy5oYXNTZWxlY3RlZEl0ZW0oKSYmdGhpcy5pc09wZW5lZCgp''@;'; put 'put ''JiZ0aGlzLmhvdE1lbnUubGlzdGVuKCl9fTt0aGlzLm9yaWdPdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHMsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM9ITEsdGhpcy5ob3RNZW51PW5l''@;'; put 'put ''dyB0aGlzLmhvdC5jb25zdHJ1Y3Rvcih0aGlzLmNvbnRhaW5lcix2KSx0aGlzLmhvdE1lbnUuYWRkSG9vaygiYWZ0ZXJJbml0IiwoKT0+dGhpcy5vbkFmdGVySW5pdCgpKSx0aGlzLmhvdE1lbnUuaW5pdCgpLGJmZShlRSx0aGlzLGZ1bmN0aW9uIHVydChsKXtyZXR1cm4gZmZlKHtzaXplOigp''@;'; put 'put ''PT5sLmNvdW50Um93cygpLG9uSXRlbVNlbGVjdChjLGEpe2NvbnN0IGQ9bC5nZXRDZWxsKGMsMCk7aWYoIWR8fGZ1bmN0aW9uIG5ydChsKXtyZXR1cm4gWW8obCwiaHRTZXBhcmF0b3IiKX0oZCl8fGZ1bmN0aW9uIGlydChsKXtyZXR1cm4gWW8obCwiaHREaXNhYmxlZCIpfShkKXx8ZnVuY3Rp''@;'; put 'put ''b24gb3J0KGwpe3JldHVybiBZbyhsLCJodFNlbGVjdGlvbkRpc2FibGVkIil9KGQpKXJldHVybiExO2wuc2VsZWN0Q2VsbChjLDAsLi4uYT9bYywwLCExLCExXTpbXSl9LG9uQ2xlYXIoKXtsLmRlc2VsZWN0Q2VsbCgpfX0pfSh0aGlzLmhvdE1lbnUpKSxiZmUoWk8sdGhpcyxmdW5jdGlvbiBo''@;'; put 'put ''cnQobCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO2NvbnN0IGE9W107ZnVuY3Rpb24gZChRLGRlKXtTKGRlKS5hZGRTaG9ydGN1dHMoUSx7Z3JvdXA6Im1lbnUifSl9ZnVuY3Rpb24gaChRLGRlKXtjb25zdCBwZT1TKGRl''@;'; put 'put ''KTtRLmZvckVhY2goQ2U9PntsZXR7a2V5czpPZX09Q2U7T2UuZm9yRWFjaChZZT0+cGUucmVtb3ZlU2hvcnRjdXRzQnlLZXlzKFllKSl9KSxhLnB1c2goe3Nob3J0Y3V0czpRLGNvbnRleHROYW1lOmRlfSksZChRLGRlKX1mdW5jdGlvbiB2KFEpe3JldHVybiBRP2BtZW51OiR7UX1gOiJtZW51''@;'; put 'put ''In1mdW5jdGlvbiBTKFEpe3ZhciBkZTtjb25zdCBwZT1sLmhvdE1lbnUuZ2V0U2hvcnRjdXRNYW5hZ2VyKCksQ2U9dihRKTtyZXR1cm4gbnVsbCE9PShkZT1wZS5nZXRDb250ZXh0KENlKSkmJnZvaWQgMCE9PWRlP2RlOnBlLmFkZENvbnRleHQoQ2UpfXJldHVybiBkKGZ1bmN0aW9uIGRydChs''@;'; put 'put ''KXtjb25zdHtob3Q6Yyxob3RNZW51OmF9PWw7cmV0dXJuW3trZXlzOltbIkNvbnRyb2wvTWV0YSIsIkEiXV0sZm9yd2FyZFRvQ29udGV4dDpjLmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKSxjYWxsYmFjazooKT0+bC5jbG9zZSghMCl9LHtrZXlzOltbIlRhYiJdLFsi''@;'; put 'put ''U2hpZnQiLCJUYWIiXV0sY2FsbGJhY2s6KGQsaCk9Pntjb25zdCBmPWMuZ2V0U2V0dGluZ3MoKSx2PSJmdW5jdGlvbiI9PXR5cGVvZiBmLnRhYk1vdmVzP2YudGFiTW92ZXMoZCk6Zi50YWJNb3ZlcztoLmluY2x1ZGVzKCJzaGlmdCIpP2Muc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KC12LnJv''@;'; put 'put ''dywtdi5jb2wpOmMuc2VsZWN0aW9uLnRyYW5zZm9ybVN0YXJ0KHYucm93LHYuY29sKSxsLmNsb3NlKCEwKX19LHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazooKT0+bC5jbG9zZSgpfSx7a2V5czpbWyJBcnJvd0Rvd24iXV0sY2FsbGJhY2s6KCk9PmwuZ2V0TmF2aWdhdG9yKCkudG9OZXh0''@;'; put 'put ''SXRlbSgpfSx7a2V5czpbWyJBcnJvd1VwIl1dLGNhbGxiYWNrOigpPT5sLmdldE5hdmlnYXRvcigpLnRvUHJldmlvdXNJdGVtKCl9LHtrZXlzOltbIkFycm93UmlnaHQiXV0sY2FsbGJhY2s6KCk9Pntjb25zdCBkPWEuZ2V0U2VsZWN0ZWRMYXN0KCk7aWYoZCl7Y29uc3QgaD1sLm9wZW5TdWJN''@;'; put 'put ''ZW51KGRbMF0pO2gmJmguZ2V0TmF2aWdhdG9yKCkudG9GaXJzdEl0ZW0oKX19fSx7a2V5czpbWyJBcnJvd0xlZnQiXV0sY2FsbGJhY2s6KCk9PnthLmdldFNlbGVjdGVkTGFzdCgpJiZsLmlzU3ViTWVudSgpJiYobC5jbG9zZSgpLGwuaXNTdWJNZW51KCkmJmwucGFyZW50TWVudS5ob3RNZW51''@;'; put 'put ''Lmxpc3RlbigpKX19LHtrZXlzOltbIkNvbnRyb2wvTWV0YSIsIkFycm93VXAiXSxbIkhvbWUiXV0sY2FsbGJhY2s6KCk9PmwuZ2V0TmF2aWdhdG9yKCkudG9GaXJzdEl0ZW0oKX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiQXJyb3dEb3duIl0sWyJFbmQiXV0sY2FsbGJhY2s6KCk9PmwuZ2V0''@;'; put 'put ''TmF2aWdhdG9yKCkudG9MYXN0SXRlbSgpfSx7a2V5czpbWyJFbnRlciJdLFsiU3BhY2UiXV0sY2FsbGJhY2s6ZD0+e2NvbnN0IGg9YS5nZXRTZWxlY3RlZExhc3QoKTtoJiYoYS5nZXRTb3VyY2VEYXRhQXRSb3coaFswXSkuc3VibWVudT9sLm9wZW5TdWJNZW51KGhbMF0pLmdldE5hdmlnYXRv''@;'; put 'put ''cigpLnRvRmlyc3RJdGVtKCk6KGwuZXhlY3V0ZUNvbW1hbmQoZCksbC5jbG9zZSghMCkpKX19LHtrZXlzOltbIlBhZ2VVcCJdXSxjYWxsYmFjazooKT0+e2EuZ2V0U2VsZWN0ZWRMYXN0KCk/YS5zZWxlY3Rpb24udHJhbnNmb3JtU3RhcnQoLWEuY291bnRWaXNpYmxlUm93cygpLDApOmwuZ2V0''@;'; put 'put ''TmF2aWdhdG9yKCkudG9GaXJzdEl0ZW0oKX19LHtrZXlzOltbIlBhZ2VEb3duIl1dLGNhbGxiYWNrOigpPT57YS5nZXRTZWxlY3RlZExhc3QoKT9hLnNlbGVjdGlvbi50cmFuc2Zvcm1TdGFydChhLmNvdW50VmlzaWJsZVJvd3MoKSwwKTpsLmdldE5hdmlnYXRvcigpLnRvTGFzdEl0ZW0oKX19''@;'; put 'put ''XX0obCkpLGMuZm9yRWFjaChRPT57bGV0e3Nob3J0Y3V0czpkZSxjb250ZXh0TmFtZTpwZX09UTtoKGRlLHBlKX0pLHthZGRDdXN0b21TaG9ydGN1dHM6aCxnZXRDdXN0b21TaG9ydGN1dHM6ZnVuY3Rpb24gZigpe3JldHVyblsuLi5hXX0sZ2V0Q29udGV4dDpTLGxpc3RlbjpmdW5jdGlvbiBW''@;'; put 'put ''KFEpe2wuaG90TWVudS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5zZXRBY3RpdmVDb250ZXh0TmFtZSh2KFEpKX19fSh0aGlzKSksUXgoWk8sdGhpcykubGlzdGVuKCksdGhpcy5mb2N1cygpLHRoaXMuaXNTdWJNZW51KCkmJnRoaXMuYWRkTG9jYWxIb29rKCJhZnRlck9wZW4iLCgpPT50aGlzLnBh''@;'; put 'put ''cmVudE1lbnUucnVuTG9jYWxIb29rcygiYWZ0ZXJTdWJtZW51T3BlbiIsdGhpcykpLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJPcGVuIix0aGlzKX1jbG9zZSgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYodGhpcy5p''@;'; put 'put ''c09wZW5lZCgpKWlmKGMmJnRoaXMuaXNTdWJNZW51KCkpdGhpcy5wYXJlbnRNZW51LmNsb3NlKCk7ZWxzZSBpZihReChlRSx0aGlzKS5jbGVhcigpLHRoaXMuY2xvc2VBbGxTdWJNZW51cygpLHRoaXMuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuaG90TWVudS5kZXN0cm95''@;'; put 'put ''KCksdGhpcy5ob3RNZW51PW51bGwsdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5vdXRzaWRlQ2xpY2tEZXNlbGVjdHM9dGhpcy5vcmlnT3V0c2lkZUNsaWNrRGVzZWxlY3RzLHRoaXMucnVuTG9jYWxIb29rcygiYWZ0ZXJDbG9zZSIpLHRoaXMuaXNTdWJNZW51KCkpe2lmKHRoaXMuaG90LmdldFNl''@;'; put 'put ''dHRpbmdzKCkuYXJpYVRhZ3Mpe2NvbnN0IGE9dGhpcy5wYXJlbnRNZW51LmhvdE1lbnUuZ2V0U2VsZWN0ZWRMYXN0KCk7YSYmVm8odGhpcy5wYXJlbnRNZW51LmhvdE1lbnUuZ2V0Q2VsbChhWzBdLDApLFtOaCghMSldKX10aGlzLnBhcmVudE1lbnUuaG90TWVudS5saXN0ZW4oKX19b3BlblN1''@;'; put 'put ''Yk1lbnUoYyl7aWYoIXRoaXMuaG90TWVudSlyZXR1cm4hMTtjb25zdCBhPXRoaXMuaG90TWVudS5nZXRDZWxsKGMsMCk7aWYodGhpcy5jbG9zZUFsbFN1Yk1lbnVzKCksIWF8fCFmdW5jdGlvbiBycnQobCl7cmV0dXJuIFlvKGwsImh0U3VibWVudSIpfShhKSlyZXR1cm4hMTtjb25zdCBkPXRo''@;'; put 'put ''aXMuaG90TWVudS5nZXRTb3VyY2VEYXRhQXRSb3coYyksaD1uZXcgamIodGhpcy5ob3Qse3BhcmVudDp0aGlzLG5hbWU6ZC5uYW1lLGNsYXNzTmFtZTp0aGlzLm9wdGlvbnMuY2xhc3NOYW1lLGtlZXBJblZpZXdwb3J0OiEwLGNvbnRhaW5lcjp0aGlzLm9wdGlvbnMuY29udGFpbmVyfSk7cmV0''@;'; put 'put ''dXJuIGguc2V0TWVudUl0ZW1zKGQuc3VibWVudS5pdGVtcyksaC5vcGVuKCksaC5zZXRQb3NpdGlvbihhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx0aGlzLmhvdFN1Yk1lbnVzW2Qua2V5XT1oLHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJlZvKGEsW05oKCEwKV0pLGh9Y2xv''@;'; put 'put ''c2VTdWJNZW51KGMpe2NvbnN0IGE9dGhpcy5ob3RNZW51LmdldFNvdXJjZURhdGFBdFJvdyhjKSxkPXRoaXMuaG90U3ViTWVudXNbYS5rZXldO2lmKGQpe2QuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmhvdFN1Yk1lbnVzW2Eua2V5XTtjb25zdCBoPXRoaXMuaG90TWVudS5nZXRDZWxsKGMsMCk7''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmVm8oaCxbTmgoITEpXSl9fWNsb3NlQWxsU3ViTWVudXMoKXtUbih0aGlzLmhvdE1lbnUuZ2V0RGF0YSgpLChjLGEpPT50aGlzLmNsb3NlU3ViTWVudShhKSl9aXNBbGxTdWJNZW51c0Nsb3NlZCgpe3JldHVybiAwPT09T2JqZWN0Lmtl''@;'; put 'put ''eXModGhpcy5ob3RTdWJNZW51cykubGVuZ3RofWZvY3VzKCl7dGhpcy5pc09wZW5lZCgpJiYodGhpcy5ob3RNZW51LnJvb3RFbGVtZW50LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksdGhpcy5nZXRLZXlib2FyZFNob3J0Y3V0c0N0cmwoKS5saXN0ZW4oKSx0aGlzLmhvdE1lbnUubGlzdGVu''@;'; put 'put ''KCkpfWRlc3Ryb3koKXtjb25zdCBjPXRoaXMuY29udGFpbmVyLnBhcmVudE5vZGU7dGhpcy5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNsb3NlKCksdGhpcy5wYXJlbnRNZW51PW51bGwsdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgpLGMmJmMucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIp''@;'; put 'put ''fWlzT3BlbmVkKCl7cmV0dXJuIG51bGwhPT10aGlzLmhvdE1lbnV9ZXhlY3V0ZUNvbW1hbmQoYyl7aWYoIXRoaXMuaXNPcGVuZWQoKXx8IXRoaXMuaGFzU2VsZWN0ZWRJdGVtKCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5nZXRTZWxlY3RlZEl0ZW0oKTtpZih0aGlzLnJ1bkxvY2FsSG9va3MoInNl''@;'; put 'put ''bGVjdCIsYSxjKSx0aGlzLmlzQ29tbWFuZFBhc3NpdmUoYSkpcmV0dXJuO2NvbnN0IGQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZSgpLGg9ZD9mdW5jdGlvbiB0cnQobCl7cmV0dXJuIHhzKGwsYz0+KHtzdGFydDpjLmdldFRvcFN0YXJ0Q29ybmVyKCksZW5kOmMuZ2V0Qm90dG9tRW5kQ29y''@;'; put 'put ''bmVyKCl9KSl9KGQpOltdO3RoaXMucnVuTG9jYWxIb29rcygiZXhlY3V0ZUNvbW1hbmQiLGEua2V5LGgsYyksdGhpcy5pc1N1Yk1lbnUoKSYmdGhpcy5wYXJlbnRNZW51LnJ1bkxvY2FsSG9va3MoImV4ZWN1dGVDb21tYW5kIixhLmtleSxoLGMpfWlzQ29tbWFuZFBhc3NpdmUoYyl7cmV0dXJu''@;'; put 'put ''ITE9PT1jLmlzQ29tbWFuZHx8c0soYyl8fFVPKGMsdGhpcy5ob3QpfHxvSyhjKX1zZXRPZmZzZXQoYyl7dGhpcy5wb3NpdGlvbmVyLnNldE9mZnNldChjLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowKX1zZXRQb3NpdGlvbihjKXt0aGlz''@;'; put 'put ''LmlzU3ViTWVudSgpJiZ0aGlzLnBvc2l0aW9uZXIuc2V0UGFyZW50RWxlbWVudCh0aGlzLnBhcmVudE1lbnUuY29udGFpbmVyKSx0aGlzLnBvc2l0aW9uZXIuc2V0RWxlbWVudCh0aGlzLmNvbnRhaW5lcikudXBkYXRlUG9zaXRpb24oYyl9Y3JlYXRlQ29udGFpbmVyKCl7Y29uc3QgYT10aGlz''@;'; put 'put ''Lm9wdGlvbnMuY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7bGV0IGgsZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gZCYmKGhsKGQpJiYoZD1kLmNhbGwodGhpcy5ob3QpLGQ9bnVsbD09PWR8fGRsKGQpPyIiOmQudG9T''@;'; put 'put ''dHJpbmcoKSksZD1kLnJlcGxhY2UoL1teQS16MC05XS9nLCJfIiksZD1gJHt0aGlzLm9wdGlvbnMuY2xhc3NOYW1lfVN1Yl8ke2R9YCxoPWEucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5vcHRpb25zLmNsYXNzTmFtZX0uJHtkfWApKSxofHwoaD1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG1pKGgs''@;'; put 'put ''YGh0TWVudSAke3RoaXMub3B0aW9ucy5jbGFzc05hbWV9YCksZCYmbWkoaCxkKSx0aGlzLm9wdGlvbnMuY29udGFpbmVyLmFwcGVuZENoaWxkKGgpKSxofW9uQWZ0ZXJJbml0KCl7Y29uc3R7d3RUYWJsZTpjfT10aGlzLmhvdE1lbnUudmlldy5fd3QsYT10aGlzLmhvdE1lbnUuZ2V0U2V0dGlu''@;'; put 'put ''Z3MoKS5kYXRhLGQ9Yy5oaWRlci5zdHlsZSxoPWMuaG9sZGVyLnN0eWxlLGY9cGFyc2VJbnQoZC53aWR0aCwxMCksdj1NYyhhLChTLFYpPT5TKyhWLm5hbWU9PT1Fcz8xOjI2KSwwKTtoLndpZHRoPWAke2YrM31weGAsaC5oZWlnaHQ9YCR7diszfXB4YCxkLmhlaWdodD1oLmhlaWdodCx0aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzJiZWbyh0aGlzLmhvdE1lbnUucm9vdEVsZW1lbnQsW1sicm9sZSIsIm1lbnUiXSxuYigtMSldKX1vbkRvY3VtZW50TW91c2VEb3duKGMpe3RoaXMuaXNPcGVuZWQoKSYmKHRoaXMub3B0aW9ucy5zdGFuZGFsb25lJiZ0aGlzLmhvdE1lbnUmJiFS''@;'; put 'put ''bShjLnRhcmdldCx0aGlzLmhvdE1lbnUucm9vdEVsZW1lbnQpfHwodGhpcy5pc0FsbFN1Yk1lbnVzQ2xvc2VkKCl8fHRoaXMuaXNTdWJNZW51KCkpJiYhUm0oYy50YXJnZXQsIi5odE1lbnUiKSkmJnRoaXMuY2xvc2UoITApfW9uRG9jdW1lbnRDb250ZXh0TWVudShjKXt0aGlzLmlzT3BlbmVk''@;'; put 'put ''KCkmJllvKGMudGFyZ2V0LCJodENvcmUiKSYmUm0oYy50YXJnZXQsdGhpcy5ob3RNZW51LnJvb3RFbGVtZW50KSYmYy5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBhSyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gYnJ0KGwpe3ZhciBjPWZ1bmN0aW9uIHlydChsLGMpe2lmKCJvYmplY3Qi''@;'; put 'put ''IT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVz''@;'; put 'put ''dCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVy''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBZTyhsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBl''@;'; put 'put ''bGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9cmwoamIsVTEpO2NvbnN0IHRFPSJjb250ZXh0TWVudSIsQ2ZlPXRFO2FvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3Rl''@;'; put 'put ''cigiYmVmb3JlQ29udGV4dE1lbnVTaG93IiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVTaG93IiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29udGV4dE1lbnVIaWRlIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ29u''@;'; put 'put ''dGV4dE1lbnVFeGVjdXRlIik7dmFyIG5FPW5ldyBXZWFrU2V0O2NsYXNzIFdPIGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIHZydChsLGMpeyhmdW5jdGlvbiBfcnQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u''@;'; put 'put ''b3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX0odGhpcyxuRSksYUsodGhpcywiY29tbWFuZEV4ZWN1dG9yIixuZXcgYWZlKHRoaXMuaG90KSksYUsodGhpcywiaXRlbXNGYWN0b3J5IixudWxsKSxhSyh0''@;'; put 'put ''aGlzLCJtZW51IixudWxsKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gdEV9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gNzB9c3RhdGljIGdldCBQTFVHSU5fREVQUygpe3JldHVyblsicGx1Z2luOkF1dG9Db2x1bW5TaXplIl19c3RhdGljIGdldCBERUZBVUxU''@;'; put 'put ''X0lURU1TKCl7cmV0dXJuW1ZPLEJPLEVzLEd4LCR4LEVzLEhPLEt4LEVzLGpPLE5PLEVzLHF4LEVzLEtoXX1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbdEVdfWVuYWJsZVBsdWdpbigpe3ZhciBjPXRoaXM7aWYodGhpcy5lbmFibGVkKXJldHVybjtjb25zdCBh''@;'; put 'put ''PXRoaXMuaG90LmdldFNldHRpbmdzKClbdEVdOyJmdW5jdGlvbiI9PXR5cGVvZiBhLmNhbGxiYWNrJiZ0aGlzLmNvbW1hbmRFeGVjdXRvci5zZXRDb21tb25DYWxsYmFjayhhLmNhbGxiYWNrKSx0aGlzLm1lbnU9bmV3IGpiKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0Q29udGV4dE1lbnUiLGtl''@;'; put 'put ''ZXBJblZpZXdwb3J0OiEwLGNvbnRhaW5lcjphLnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keX0pLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImJlZm9yZU9wZW4iLCgpPT5ZTyhuRSx0aGlzLFNydCkuY2FsbCh0aGlzKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiYWZ0''@;'; put 'put ''ZXJPcGVuIiwoKT0+WU8obkUsdGhpcyxNcnQpLmNhbGwodGhpcykpLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLCgpPT5ZTyhuRSx0aGlzLHhydCkuY2FsbCh0aGlzKSksdGhpcy5tZW51LmFkZExvY2FsSG9vaygiZXhlY3V0ZUNvbW1hbmQiLGZ1bmN0aW9uKCl7Zm9yKHZh''@;'; put 'put ''ciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIGMuZXhlY3V0ZUNvbW1hbmQuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbENvbnRleHRNZW51IixkPT5ZTyhuRSx0aGlzLENydCkuY2Fs''@;'; put 'put ''bCh0aGlzLGQpKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5jbG9zZSgpLHRo''@;'; put 'put ''aXMubWVudSYmKHRoaXMubWVudS5kZXN0cm95KCksdGhpcy5tZW51PW51bGwpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5h''@;'; put 'put ''ZGRTaG9ydGN1dCh7a2V5czpbWyJDb250cm9sL01ldGEiLCJTaGlmdCIsIkJhY2tzbGFzaCJdLFsiU2hpZnQiLCJGMTAiXV0sY2FsbGJhY2s6KCk9Pntjb25zdHtoaWdobGlnaHQ6Y309dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTt0aGlzLmhvdC5zY3JvbGxUb0ZvY3VzZWRDZWxs''@;'; put 'put ''KCk7Y29uc3QgYT10aGlzLmhvdC5nZXRDZWxsKGMucm93LGMuY29sLCEwKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPUFPKHRoaXMubWVudS5jb250YWluZXIsdGhpcy5ob3Qucm9vdERvY3VtZW50KTt0aGlzLm9wZW4oe2xlZnQ6YS5sZWZ0K2QubGVmdCx0b3A6YS50b3ArZC50b3AtMSth''@;'; put 'put ''LmhlaWdodH0se2xlZnQ6YS53aWR0aCxhYm92ZTotYS5oZWlnaHR9KSx0aGlzLm1lbnUuZ2V0TmF2aWdhdG9yKCkudG9GaXJzdEl0ZW0oKX0scnVuT25seUlmOigpPT57dmFyIGM7Y29uc3QgYT1udWxsPT09KGM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWM/''@;'; put 'put ''dm9pZCAwOmMuaGlnaGxpZ2h0O3JldHVybiBhJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZShhKSYmIXRoaXMubWVudS5pc09wZW5lZCgpfSxncm91cDpDZmV9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgi''@;'; put 'put ''Z3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoQ2ZlKX1vcGVuKGMpe3ZhciBhO2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7YWJvdmU6MCxiZWxvdzowLGxlZnQ6MCxyaWdodDowfTtudWxsIT09KGE9dGhpcy5tZW51KSYm''@;'; put 'put ''dm9pZCAwIT09YSYmYS5pc09wZW5lZCgpfHwodGhpcy5wcmVwYXJlTWVudUl0ZW1zKCksdGhpcy5tZW51Lm9wZW4oKSxDcyhkLChoLGYpPT57dGhpcy5tZW51LnNldE9mZnNldChmLGgpfSksdGhpcy5tZW51LnNldFBvc2l0aW9uKGMpKX1jbG9zZSgpe3ZhciBjO251bGw9PT0oYz10aGlzLm1l''@;'; put 'put ''bnUpfHx2b2lkIDA9PT1jfHxjLmNsb3NlKCksdGhpcy5pdGVtc0ZhY3Rvcnk9bnVsbH1leGVjdXRlQ29tbWFuZChjKXtudWxsPT09dGhpcy5pdGVtc0ZhY3RvcnkmJnRoaXMucHJlcGFyZU1lbnVJdGVtcygpO2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGE+MT9hLTE6''@;'; put 'put ''MCksaD0xO2g8YTtoKyspZFtoLTFdPWFyZ3VtZW50c1toXTt0aGlzLmNvbW1hbmRFeGVjdXRvci5leGVjdXRlKGMsLi4uZCl9cHJlcGFyZU1lbnVJdGVtcygpe3RoaXMuaXRlbXNGYWN0b3J5PW5ldyBkZmUodGhpcy5ob3QsV08uREVGQVVMVF9JVEVNUyk7Y29uc3QgYz10aGlzLmhvdC5nZXRT''@;'; put 'put ''ZXR0aW5ncygpW3RFXSxhPXtpdGVtczp0aGlzLml0ZW1zRmFjdG9yeS5nZXRJdGVtcyhjKX07dGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsYSksdGhpcy5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKGEuaXRlbXMpO2NvbnN0IGQ9dGhp''@;'; put 'put ''cy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoYyk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbnRleHRNZW51U2V0SXRlbXMiLGQpLHRoaXMubWVudS5zZXRNZW51SXRlbXMoZCksVG4oZCxoPT50aGlzLmNvbW1hbmRFeGVjdXRvci5yZWdpc3RlckNvbW1hbmQoaC5rZXksaCkpfWRlc3Ryb3ko''@;'; put 'put ''KXt0aGlzLmNsb3NlKCksdGhpcy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLHN1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gQ3J0KGwpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxhPWMucm93SGVhZGVycyxkPWMuY29sSGVhZGVycyxmPWwudGFyZ2V0O2lmKHRoaXMuY2xvc2Uo''@;'; put 'put ''KSxZbyhmLCJoYW5kc29udGFibGVJbnB1dCIpfHwobC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCksIShhfHxkfHxmdW5jdGlvbiBoKFMpe3JldHVybiJURCI9PT1TLm5vZGVOYW1lfHwiVEQiPT09Uy5wYXJlbnROb2RlLm5vZGVOYW1lfShmKXx8WW8oZiwiY3VycmVudCIp''@;'; put 'put ''JiZZbyhmLCJ3dEJvcmRlciIpKSkpcmV0dXJuO2NvbnN0IHY9QU8odGhpcy5tZW51LmNvbnRhaW5lcix0aGlzLmhvdC5yb290RG9jdW1lbnQpO3RoaXMub3Blbih7dG9wOmwuY2xpZW50WSt2LnRvcCxsZWZ0OmwuY2xpZW50WCt2LmxlZnR9KX1mdW5jdGlvbiBTcnQoKXt0aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYmVmb3JlQ29udGV4dE1lbnVTaG93Iix0aGlzKX1mdW5jdGlvbiBNcnQoKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb250ZXh0TWVudVNob3ciLHRoaXMpfWZ1bmN0aW9uIHhydCgpe3RoaXMuaG90Lmxpc3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbnRleHRNZW51''@;'; put 'put ''SGlkZSIsdGhpcyl9V08uU0VQQVJBVE9SPXtuYW1lOkVzfTtjbGFzcyBJcnR7Y29uc3RydWN0b3IoKXt0aGlzLmRhdGE9e319c2V0RGF0YShjLGEpe3RoaXMuZGF0YVtjXT1hfWdldERhdGEoYyl7cmV0dXJuIHRoaXMuZGF0YVtjXXx8dm9pZCAwfX1jbGFzcyBScnR7Y29uc3RydWN0b3IoKXt0''@;'; put 'put ''aGlzLmNsaXBib2FyZERhdGE9bmV3IElydH1wcmV2ZW50RGVmYXVsdCgpe319ZnVuY3Rpb24gemIobCxjLGEpe1NmZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gU2ZlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJp''@;'; put 'put ''dmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBkMShsLGMpe3JldHVybiBsLmdldChaYihsLGMpKX1mdW5jdGlvbiBVYihsLGMsYSl7cmV0dXJuIGwuc2V0KFpiKGwsYyksYSksYX1mdW5jdGlvbiBaYihsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09''@;'; put 'put ''PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIFFtPW5ldyBXZWFrTWFwLGxLPW5ldyBXZWFrTWFwLHJFPW5ldyBXZWFrTWFwLGNLPW5l''@;'; put 'put ''dyBXZWFrTWFwLHVLPW5ldyBXZWFrTWFwLGlFPW5ldyBXZWFrTWFwLG9FPW5ldyBXZWFrU2V0O2NsYXNzIE9ydHtjb25zdHJ1Y3RvcihjKXtsZXR7Y291bnRSb3dzOmEsY291bnRDb2x1bW5zOmQscm93c0xpbWl0OmgsY29sdW1uc0xpbWl0OmYsY291bnRDb2x1bW5IZWFkZXJzOnZ9PWM7KGZ1''@;'; put 'put ''bmN0aW9uIExydChsLGMpe1NmZShsLGMpLGMuYWRkKGwpfSkodGhpcyxvRSksemIodGhpcyxRbSx2b2lkIDApLHpiKHRoaXMsbEssdm9pZCAwKSx6Yih0aGlzLHJFLHZvaWQgMCksemIodGhpcyxjSyx2b2lkIDApLHpiKHRoaXMsdUssdm9pZCAwKSx6Yih0aGlzLGlFLHZvaWQgMCksVWIobEss''@;'; put 'put ''dGhpcyxhKSxVYihyRSx0aGlzLGQpLFViKGNLLHRoaXMsaCksVWIodUssdGhpcyxmKSxVYihpRSx0aGlzLHYpfXNldFNlbGVjdGVkUmFuZ2UoYyl7VWIoUW0sdGhpcyxjKX1nZXRDZWxsc1JhbmdlKCl7aWYoMD09PWQxKGxLLHRoaXMpLmNhbGwodGhpcyl8fDA9PT1kMShyRSx0aGlzKS5jYWxs''@;'; put 'put ''KHRoaXMpKXJldHVybiBudWxsO2NvbnN0e3JvdzpjLGNvbDphfT1kMShRbSx0aGlzKS5nZXRUb3BTdGFydENvcm5lcigpLHtyb3c6ZCxjb2w6aH09ZDEoUW0sdGhpcykuZ2V0Qm90dG9tRW5kQ29ybmVyKCksZj1aYihvRSx0aGlzLFBydCkuY2FsbCh0aGlzLGMsZCksdj1aYihvRSx0aGlzLGRL''@;'; put 'put ''KS5jYWxsKHRoaXMsYSxoKTtyZXR1cm57aXNSYW5nZVRyaW1tZWQ6ZCE9PWZ8fGghPT12LHN0YXJ0Um93OmMsc3RhcnRDb2w6YSxlbmRSb3c6ZixlbmRDb2w6dn19Z2V0TW9zdEJvdHRvbUNvbHVtbkhlYWRlcnNSYW5nZSgpe2lmKDA9PT1kMShyRSx0aGlzKS5jYWxsKHRoaXMpfHwwPT09ZDEo''@;'; put 'put ''aUUsdGhpcykuY2FsbCh0aGlzKSlyZXR1cm4gbnVsbDtjb25zdHtjb2w6Y309ZDEoUW0sdGhpcykuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7Y29sOmF9PWQxKFFtLHRoaXMpLmdldEJvdHRvbUVuZENvcm5lcigpLGQ9WmIob0UsdGhpcyxkSykuY2FsbCh0aGlzLGMsYSk7cmV0dXJue2lzUmFuZ2VU''@;'; put 'put ''cmltbWVkOmEhPT1kLHN0YXJ0Um93Oi0xLHN0YXJ0Q29sOmMsZW5kUm93Oi0xLGVuZENvbDpkfX1nZXRBbGxDb2x1bW5IZWFkZXJzUmFuZ2UoKXtpZigwPT09ZDEockUsdGhpcykuY2FsbCh0aGlzKXx8MD09PWQxKGlFLHRoaXMpLmNhbGwodGhpcykpcmV0dXJuIG51bGw7Y29uc3R7Y29sOmN9''@;'; put 'put ''PWQxKFFtLHRoaXMpLmdldFRvcFN0YXJ0Q29ybmVyKCkse2NvbDphfT1kMShRbSx0aGlzKS5nZXRCb3R0b21FbmRDb3JuZXIoKSxkPVpiKG9FLHRoaXMsZEspLmNhbGwodGhpcyxjLGEpO3JldHVybntpc1JhbmdlVHJpbW1lZDphIT09ZCxzdGFydFJvdzotZDEoaUUsdGhpcykuY2FsbCh0aGlz''@;'; put 'put ''KSxzdGFydENvbDpjLGVuZFJvdzotMSxlbmRDb2w6ZH19fWZ1bmN0aW9uIGRLKGwsYyl7cmV0dXJuIE1hdGgubWluKGMsTWF0aC5tYXgobCtkMSh1Syx0aGlzKS5jYWxsKHRoaXMpLTEsbCkpfWZ1bmN0aW9uIFBydChsLGMpe3JldHVybiBNYXRoLm1pbihjLE1hdGgubWF4KGwrZDEoY0ssdGhp''@;'; put 'put ''cykuY2FsbCh0aGlzKS0xLGwpKX1mdW5jdGlvbiBNZmUobCl7Y29uc3QgYz1bXSxhPVtdO3JldHVybiBUbihsLGQ9PntnbyhNYXRoLm1pbihkLnN0YXJ0Um93LGQuZW5kUm93KSxNYXRoLm1heChkLnN0YXJ0Um93LGQuZW5kUm93KSxWPT57LTE9PT1jLmluZGV4T2YoVikmJmMucHVzaChWKX0p''@;'; put 'put ''LGdvKE1hdGgubWluKGQuc3RhcnRDb2wsZC5lbmRDb2wpLE1hdGgubWF4KGQuc3RhcnRDb2wsZC5lbmRDb2wpLFY9PnstMT09PWEuaW5kZXhPZihWKSYmYS5wdXNoKFYpfSl9KSx7cm93czpjLGNvbHVtbnM6YX19ZnVuY3Rpb24gZTUobCxjLGEpe3hmZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rp''@;'; put 'put ''b24geGZlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBzRShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gTnJ0KGwpe3ZhciBjPWZ1bmN0''@;'; put 'put ''aW9uIEhydChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBXMShsLGMpe3JldHVybiBsLmdldChHMShsLGMpKX1mdW5jdGlvbiBtZihsLGMsYSl7cmV0dXJuIGwuc2V0KEcxKGwsYyksYSksYX1mdW5jdGlvbiBH''@;'; put 'put ''MShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9YW8uZ2V0U2luZ2xldG9uKCku''@;'; put 'put ''cmVnaXN0ZXIoImFmdGVyQ29weUxpbWl0IiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoIm1vZGlmeUNvcHlhYmxlUmFuZ2UiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ3V0IiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyQ3V0IiksYW8uZ2V0U2lu''@;'; put 'put ''Z2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVBhc3RlIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyUGFzdGUiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29weSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvcHkiKTtjb25zdCBHTz0i''@;'; put 'put ''Y29weVBhc3RlIixCcnQ9WyJmcmFnbWVudFNlbGVjdGlvbiJdLEVmZT1bJzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iSGFuZHNvbnRhYmxlIi8+JywnPHN0eWxlIHR5cGU9InRleHQvY3NzIj50ZHt3aGl0ZS1zcGFjZTpub3JtYWx9YnJ7bXNvLWRhdGEtcGxhY2VtZW50OnNhbWUt''@;'; put 'put ''Y2VsbH08L3N0eWxlPiddLmpvaW4oIiIpO3ZhciBoSz1uZXcgV2Vha01hcCxmSz1uZXcgV2Vha01hcCxwSz1uZXcgV2Vha01hcCxZYj1uZXcgV2Vha01hcCwkTz1uZXcgV2Vha01hcCxxTz1uZXcgV2Vha01hcCxXYj1uZXcgV2Vha01hcCxLTz1uZXcgV2Vha01hcCxQZD1uZXcgV2Vha1NldDtj''@;'; put 'put ''bGFzcyBqcnQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gRnJ0KGwsYyl7eGZlKGwsYyksYy5hZGQobCl9KHRoaXMsUGQpLHNFKHRoaXMsImNvbHVtbnNMaW1pdCIsMS8wKSxzRSh0aGlzLCJyb3dzTGltaXQiLDEvMCksc0UodGhpcywicGFz''@;'; put 'put ''dGVNb2RlIiwib3ZlcndyaXRlIiksc0UodGhpcywidWlDb250YWluZXIiLHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5KSxlNSh0aGlzLGhLLCExKSxlNSh0aGlzLGZLLCExKSxlNSh0aGlzLHBLLCExKSxlNSh0aGlzLFliLCJjZWxscy1vbmx5IiksZTUodGhpcywkTywhMSksZTUodGhpcyxx''@;'; put 'put ''TywhMSksZTUodGhpcyxXYixuZXcgT3J0KHtjb3VudFJvd3M6KCk9PnRoaXMuaG90LmNvdW50Um93cygpLGNvdW50Q29sdW1uczooKT0+dGhpcy5ob3QuY291bnRDb2xzKCkscm93c0xpbWl0OigpPT50aGlzLnJvd3NMaW1pdCxjb2x1bW5zTGltaXQ6KCk9PnRoaXMuY29sdW1uc0xpbWl0LGNv''@;'; put 'put ''dW50Q29sdW1uSGVhZGVyczooKT0+dGhpcy5ob3Qudmlldy5nZXRDb2x1bW5IZWFkZXJzQ291bnQoKX0pKSxlNSh0aGlzLEtPLCExKSxzRSh0aGlzLCJjb3B5YWJsZVJhbmdlcyIsW10pfXN0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBHT31zdGF0aWMgZ2V0IFNFVFRJTkdfS0VZUygp''@;'; put 'put ''e3JldHVybltHTywuLi5CcnRdfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDgwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtHT119ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpcztpZih0aGlzLmVuYWJsZWQpcmV0dXJuO2NvbnN0e1tHT106''@;'; put 'put ''YX09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKTt2YXIgZCxoOyJvYmplY3QiPT10eXBlb2YgYSYmKHRoaXMucGFzdGVNb2RlPW51bGwhPT0oZD1hLnBhc3RlTW9kZSkmJnZvaWQgMCE9PWQ/ZDp0aGlzLnBhc3RlTW9kZSx0aGlzLnJvd3NMaW1pdD1pc05hTihhLnJvd3NMaW1pdCk/dGhpcy5yb3dz''@;'; put 'put ''TGltaXQ6YS5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQ9aXNOYU4oYS5jb2x1bW5zTGltaXQpP3RoaXMuY29sdW1uc0xpbWl0OmEuY29sdW1uc0xpbWl0LG1mKGhLLHRoaXMsISFhLmNvcHlDb2x1bW5IZWFkZXJzKSxtZihmSyx0aGlzLCEhYS5jb3B5Q29sdW1uR3JvdXBIZWFkZXJzKSxt''@;'; put 'put ''ZihwSyx0aGlzLCEhYS5jb3B5Q29sdW1uSGVhZGVyc09ubHkpLHRoaXMudWlDb250YWluZXI9bnVsbCE9PShoPWEudWlDb250YWluZXIpJiZ2b2lkIDAhPT1oP2g6dGhpcy51aUNvbnRhaW5lciksdGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGY9PkcxKFBk''@;'; put 'put ''LHRoaXMsWnJ0KS5jYWxsKHRoaXMsZikpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7Zm9yKHZhciBmPWFyZ3VtZW50cy5sZW5ndGgsdj1uZXcgQXJyYXkoZiksUz0wO1M8ZjtTKyspdltTXT1hcmd1bWVudHNbU107cmV0dXJuIEcxKFBkLGMsWXJ0KS5jYWxsKGMs''@;'; put 'put ''Li4udil9KSx0aGlzLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uRW5kIiwoKT0+RzEoUGQsdGhpcyxXcnQpLmNhbGwodGhpcykpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdERvY3VtZW50LCJjb3B5IixmdW5jdGlvbigpe3JldHVybiBjLm9uQ29weSgu''@;'; put 'put ''Li5hcmd1bWVudHMpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RG9jdW1lbnQsImN1dCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5vbkN1dCguLi5hcmd1bWVudHMpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5y''@;'; put 'put ''b290RG9jdW1lbnQsInBhc3RlIixmdW5jdGlvbigpe3JldHVybiBjLm9uUGFzdGUoLi4uYXJndW1lbnRzKX0pLE1XKCkmJih0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5LCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2Zvcih2YXIg''@;'; put 'put ''Zj1hcmd1bWVudHMubGVuZ3RoLHY9bmV3IEFycmF5KGYpLFM9MDtTPGY7UysrKXZbU109YXJndW1lbnRzW1NdO3JldHVybiBHMShQZCxjLEdydCkuY2FsbChjLC4uLnYpfSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSwibW91''@;'; put 'put ''c2VsZWF2ZSIsZnVuY3Rpb24oKXtmb3IodmFyIGY9YXJndW1lbnRzLmxlbmd0aCx2PW5ldyBBcnJheShmKSxTPTA7UzxmO1MrKyl2W1NdPWFyZ3VtZW50c1tTXTtyZXR1cm4gRzEoUGQsYywkcnQpLmNhbGwoYywuLi52KX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb24iLCgpPT5HMShQ''@;'; put 'put ''ZCx0aGlzLHFydCkuY2FsbCh0aGlzKSkpLHN1cGVyLmVuYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKX1jb3B5''@;'; put 'put ''KCl7bWYoWWIsdGhpcyxhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ImNlbGxzLW9ubHkiKSxtZigkTyx0aGlzLCEwKSxHMShQZCx0aGlzLFRmZSkuY2FsbCh0aGlzLCJjb3B5Iil9Y29weUNlbGxzT25seSgpe3RoaXMuY29weSgiY2VsbHMt''@;'; put 'put ''b25seSIpfWNvcHlDb2x1bW5IZWFkZXJzT25seSgpe3RoaXMuY29weSgiY29sdW1uLWhlYWRlcnMtb25seSIpfWNvcHlXaXRoQWxsQ29sdW1uSGVhZGVycygpe3RoaXMuY29weSgid2l0aC1jb2x1bW4tZ3JvdXAtaGVhZGVycyIpfWNvcHlXaXRoQ29sdW1uSGVhZGVycygpe3RoaXMuY29weSgi''@;'; put 'put ''d2l0aC1jb2x1bW4taGVhZGVycyIpfWN1dCgpe21mKHFPLHRoaXMsITApLEcxKFBkLHRoaXMsVGZlKS5jYWxsKHRoaXMsImN1dCIpfWdldFJhbmdlZENvcHlhYmxlRGF0YShjKXtyZXR1cm4gUngodGhpcy5nZXRSYW5nZWREYXRhKGMpKX1nZXRSYW5nZWREYXRhKGMpe2NvbnN0IGE9W10se3Jv''@;'; put 'put ''d3M6ZCxjb2x1bW5zOmh9PU1mZShjKTtyZXR1cm4gVG4oZCxmPT57Y29uc3Qgdj1bXTtUbihoLFM9Pnt2LnB1c2goZjwwP3RoaXMuaG90LmdldENvbEhlYWRlcihTLGYpOnRoaXMuaG90LmdldENvcHlhYmxlRGF0YShmLFMpKX0pLGEucHVzaCh2KX0pLGF9cGFzdGUoKXtsZXQgYz1hcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06YztpZighYyYmIWEpcmV0dXJuO2NvbnN0IGQ9bmV3IFJydDtjJiZkLmNsaXBib2FyZERhdGEuc2V0''@;'; put 'put ''RGF0YSgidGV4dC9wbGFpbiIsYyksYSYmZC5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvaHRtbCIsYSksdGhpcy5vblBhc3RlKGQpfXNldENvcHlhYmxlVGV4dCgpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighYylyZXR1cm47aWYoYy5pc1NpbmdsZUhl''@;'; put 'put ''YWRlcigpKXJldHVybiB2b2lkKHRoaXMuY29weWFibGVSYW5nZXM9W10pO1cxKFdiLHRoaXMpLnNldFNlbGVjdGVkUmFuZ2UoYyk7Y29uc3QgYT1uZXcgTWFwKFtbImhlYWRlcnMiLG51bGxdLFsiY2VsbHMiLG51bGxdXSk7ImNvbHVtbi1oZWFkZXJzLW9ubHkiPT09VzEoWWIsdGhpcyk/YS5z''@;'; put 'put ''ZXQoImhlYWRlcnMiLFcxKFdiLHRoaXMpLmdldE1vc3RCb3R0b21Db2x1bW5IZWFkZXJzUmFuZ2UoKSk6KCJ3aXRoLWNvbHVtbi1oZWFkZXJzIj09PVcxKFliLHRoaXMpP2Euc2V0KCJoZWFkZXJzIixXMShXYix0aGlzKS5nZXRNb3N0Qm90dG9tQ29sdW1uSGVhZGVyc1JhbmdlKCkpOiJ3aXRo''@;'; put 'put ''LWNvbHVtbi1ncm91cC1oZWFkZXJzIj09PVcxKFliLHRoaXMpJiZhLnNldCgiaGVhZGVycyIsVzEoV2IsdGhpcykuZ2V0QWxsQ29sdW1uSGVhZGVyc1JhbmdlKCkpLGEuc2V0KCJjZWxscyIsVzEoV2IsdGhpcykuZ2V0Q2VsbHNSYW5nZSgpKSksdGhpcy5jb3B5YWJsZVJhbmdlcz1BcnJheS5m''@;'; put 'put ''cm9tKGEudmFsdWVzKCkpLmZpbHRlcihoPT5udWxsIT09aCkubWFwKGg9PntsZXR7c3RhcnRSb3c6ZixzdGFydENvbDp2LGVuZFJvdzpTLGVuZENvbDpWfT1oO3JldHVybntzdGFydFJvdzpmLHN0YXJ0Q29sOnYsZW5kUm93OlMsZW5kQ29sOlZ9fSksdGhpcy5jb3B5YWJsZVJhbmdlcz10aGlz''@;'; put 'put ''LmhvdC5ydW5Ib29rcygibW9kaWZ5Q29weWFibGVSYW5nZSIsdGhpcy5jb3B5YWJsZVJhbmdlcyk7Y29uc3QgZD1hLmdldCgiY2VsbHMiKTtpZihudWxsIT09ZCYmZC5pc1JhbmdlVHJpbW1lZCl7Y29uc3R7c3RhcnRSb3c6aCxzdGFydENvbDpmLGVuZFJvdzp2LGVuZENvbDpTfT1kO3RoaXMu''@;'; put 'put ''aG90LnJ1bkhvb2tzKCJhZnRlckNvcHlMaW1pdCIsdi1oKzEsUy1mKzEsdGhpcy5yb3dzTGltaXQsdGhpcy5jb2x1bW5zTGltaXQpfX1pc0VkaXRvck9wZW5lZCgpe3ZhciBjO3JldHVybiBudWxsPT09KGM9dGhpcy5ob3QuZ2V0QWN0aXZlRWRpdG9yKCkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpj''@;'; put 'put ''LmlzT3BlbmVkKCl9cG9wdWxhdGVWYWx1ZXMoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWMubGVuZ3RoKXJldHVybjtjb25zdCBkPWMubGVuZ3RoLGg9Y1sw''@;'; put 'put ''XS5sZW5ndGgsZj1bXSx7cm93OnYsY29sOlN9PWEuZ2V0VG9wU3RhcnRDb3JuZXIoKSx7cm93OlYsY29sOlF9PWEuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7bGV0IGRlPXYscGU9UyxDZT12LE9lPVM7Zm9yKDtmLmxlbmd0aDxkfHxkZTw9Vjspe2NvbnN0e3NraXBSb3dPblBhc3RlOlllLHZpc3Vh''@;'; put 'put ''bFJvdzpldH09dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoZGUsUyk7aWYoZGU9ZXQrMSwhMD09PVllKWNvbnRpbnVlO0NlPWV0LHBlPVM7Y29uc3QgZHQ9W10saHQ9Zi5sZW5ndGglZDtmb3IoO2R0Lmxlbmd0aDxofHxwZTw9UTspe2NvbnN0e3NraXBDb2x1bW5PblBhc3RlOk10LHZpc3VhbENvbDpR''@;'; put 'put ''dH09dGhpcy5ob3QuZ2V0Q2VsbE1ldGEodixwZSk7KHBlPVF0KzEsITAhPT1NdCkmJihPZT1RdCxkdC5wdXNoKGNbaHRdW2R0Lmxlbmd0aCVoXSkpfWYucHVzaChkdCl9cmV0dXJuIG1mKEtPLHRoaXMsITApLHRoaXMuaG90LnBvcHVsYXRlRnJvbUFycmF5KHYsUyxmLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''IkNvcHlQYXN0ZS5wYXN0ZSIsdGhpcy5wYXN0ZU1vZGUpLFt2LFMsQ2UsT2VdfW9uQ29weShjKXtpZighdGhpcy5ob3QuaXNMaXN0ZW5pbmcoKSYmIVcxKCRPLHRoaXMpfHx0aGlzLmlzRWRpdG9yT3BlbmVkKCl8fCF0aGlzLmhvdC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0''@;'; put 'put ''cyYmYy50YXJnZXQhPT10aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSlyZXR1cm47dGhpcy5zZXRDb3B5YWJsZVRleHQoKSxtZigkTyx0aGlzLCExKTtjb25zdCBhPXRoaXMuZ2V0UmFuZ2VkRGF0YSh0aGlzLmNvcHlhYmxlUmFuZ2VzKSxkPUcxKFBkLHRoaXMsenJ0KS5jYWxsKHRoaXMsdGhp''@;'; put 'put ''cy5jb3B5YWJsZVJhbmdlcyk7aWYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvcHkiLGEsdGhpcy5jb3B5YWJsZVJhbmdlcyxkKSl7Y29uc3QgZj1SeChhKTtpZihjJiZjLmNsaXBib2FyZERhdGEpe2NvbnN0IHY9SFcoYSk7Yy5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4i''@;'; put 'put ''LGYpLGMuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L2h0bWwiLFtFZmUsdl0uam9pbigiIikpfWVsc2UgdHlwZW9mIENsaXBib2FyZEV2ZW50PiJ1IiYmdGhpcy5ob3Qucm9vdFdpbmRvdy5jbGlwYm9hcmREYXRhLnNldERhdGEoIlRleHQiLGYpO3RoaXMuaG90LnJ1bkhvb2tzKCJhZnRl''@;'; put 'put ''ckNvcHkiLGEsdGhpcy5jb3B5YWJsZVJhbmdlcyxkKX1tZihZYix0aGlzLCJjZWxscy1vbmx5IiksYy5wcmV2ZW50RGVmYXVsdCgpfW9uQ3V0KGMpe2lmKCF0aGlzLmhvdC5pc0xpc3RlbmluZygpJiYhVzEocU8sdGhpcyl8fHRoaXMuaXNFZGl0b3JPcGVuZWQoKXx8IXRoaXMuaG90LmdldFNl''@;'; put 'put ''dHRpbmdzKCkub3V0c2lkZUNsaWNrRGVzZWxlY3RzJiZjLnRhcmdldCE9PXRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5KXJldHVybjt0aGlzLnNldENvcHlhYmxlVGV4dCgpLG1mKHFPLHRoaXMsITEpO2NvbnN0IGE9dGhpcy5nZXRSYW5nZWREYXRhKHRoaXMuY29weWFibGVSYW5nZXMpO2lm''@;'; put 'put ''KHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDdXQiLGEsdGhpcy5jb3B5YWJsZVJhbmdlcykpe2NvbnN0IGg9UngoYSk7aWYoYyYmYy5jbGlwYm9hcmREYXRhKXtjb25zdCBmPUhXKGEpO2MuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIixoKSxjLmNsaXBib2FyZERhdGEuc2V0''@;'; put 'put ''RGF0YSgidGV4dC9odG1sIixbRWZlLGZdLmpvaW4oIiIpKX1lbHNlIHR5cGVvZiBDbGlwYm9hcmRFdmVudD4idSImJnRoaXMuaG90LnJvb3RXaW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJUZXh0IixoKTt0aGlzLmhvdC5lbXB0eVNlbGVjdGVkQ2VsbHMoIkNvcHlQYXN0ZS5jdXQiKSx0''@;'; put 'put ''aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDdXQiLGEsdGhpcy5jb3B5YWJsZVJhbmdlcyl9Yy5wcmV2ZW50RGVmYXVsdCgpfW9uUGFzdGUoYyl7aWYoIXRoaXMuaG90LmlzTGlzdGVuaW5nKCl8fHRoaXMuaXNFZGl0b3JPcGVuZWQoKXx8IXRoaXMuaG90LmdldFNlbGVjdGVkKCl8fCF0aGlzLmhv''@;'; put 'put ''dC5nZXRTZXR0aW5ncygpLm91dHNpZGVDbGlja0Rlc2VsZWN0cyYmYy50YXJnZXQhPT10aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keSlyZXR1cm47bGV0IGE7aWYoYy5wcmV2ZW50RGVmYXVsdCgpLGMmJnR5cGVvZiBjLmNsaXBib2FyZERhdGE8InUiKXtjb25zdCBTPUpSKGMuY2xpcGJvYXJk''@;'; put 'put ''RGF0YS5nZXREYXRhKCJ0ZXh0L2h0bWwiKSx7QUREX1RBR1M6WyJtZXRhIl0sQUREX0FUVFI6WyJjb250ZW50Il0sRk9SQ0VfQk9EWTohMH0pO2E9UyYmLyg8dGFibGUpfCg8VEFCTEUpL2cudGVzdChTKT9LMWUoUyx0aGlzLmhvdC5yb290RG9jdW1lbnQpLmRhdGE6Yy5jbGlwYm9hcmREYXRh''@;'; put 'put ''LmdldERhdGEoInRleHQvcGxhaW4iKX1lbHNlIHR5cGVvZiBDbGlwYm9hcmRFdmVudD4idSImJnR5cGVvZiB0aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGE8InUiJiYoYT10aGlzLmhvdC5yb290V2luZG93LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgiVGV4dCIpKTtpZigic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGEmJihhPWZ1bmN0aW9uICRLZShsKXtjb25zdCBjPVtbIiJdXTtpZigwPT09bC5sZW5ndGgpcmV0dXJuIGM7bGV0IGgsYT0wLGQ9MDtmb3IoO2wubGVuZ3RoPjAmJmghPT1sLmxlbmd0aDspaWYoaD1sLmxlbmd0aCxsLm1hdGNoKE5oZSkpbD1sLnJlcGxhY2UoTmhlLCIiKSxh''@;'; put 'put ''Kz0xLGNbZF1bYV09IiI7ZWxzZSBpZihsLm1hdGNoKEZoZSkpbD1sLnJlcGxhY2UoRmhlLCIiKSxhPTAsZCs9MSxjW2RdPVsiIl07ZWxzZXtsZXQgZj0iIjtpZihsLnN0YXJ0c1dpdGgoJyInKSl7bGV0IHY9MCxTPSEwO2Zvcig7Uzspe2NvbnN0IFY9bC5zbGljZSgwLDEpOyciJz09PVYmJih2''@;'; put 'put ''Kz0xKSxmKz1WLCgwPT09KGw9bC5zbGljZSgxKSkubGVuZ3RofHxsLm1hdGNoKC9eW1x0XHJcbl0vKSYmdiUyPT0wKSYmKFM9ITEpfWY9Zi5yZXBsYWNlKC9eIi8sIiIpLnJlcGxhY2UoLyIkLywiIikucmVwbGFjZSgvWyJdKi9nLFY9Pm5ldyBBcnJheShNYXRoLmZsb29yKFYubGVuZ3RoLzIp''@;'; put 'put ''KS5maWxsKCciJykuam9pbigiIikpfWVsc2V7Y29uc3Qgdj1sLm1hdGNoKEdLZSk7Zj12P3ZbMF06IiIsbD1sLnNsaWNlKGYubGVuZ3RoKX1jW2RdW2FdPWZ9cmV0dXJuIGN9KGEpKSx2b2lkIDA9PT1hfHxhJiYwPT09YS5sZW5ndGh8fCExPT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVBh''@;'; put 'put ''c3RlIixhLHRoaXMuY29weWFibGVSYW5nZXMpKXJldHVybjtjb25zdFtkLGgsZix2XT10aGlzLnBvcHVsYXRlVmFsdWVzKGEpO3RoaXMuaG90LnNlbGVjdENlbGwoZCxoLE1hdGgubWluKHRoaXMuaG90LmNvdW50Um93cygpLTEsZiksTWF0aC5taW4odGhpcy5ob3QuY291bnRDb2xzKCktMSx2''@;'; put 'put ''KSksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUGFzdGUiLGEsdGhpcy5jb3B5YWJsZVJhbmdlcyl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gVGZlKGwpe2lmKE1XKCkpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZihjKXtjb25zdHtyb3c6''@;'; put 'put ''YSxjb2w6ZH09Yy5oaWdobGlnaHQsaD10aGlzLmhvdC5nZXRDZWxsKGEsZCwhMCk7aCYmVDFlKGgsKCk9Pnt0aGlzLmhvdC5yb290RG9jdW1lbnQuZXhlY0NvbW1hbmQobCl9KX19ZWxzZSB0aGlzLmhvdC5yb290RG9jdW1lbnQuZXhlY0NvbW1hbmQobCl9ZnVuY3Rpb24genJ0KGwpe2NvbnN0''@;'; put 'put ''e3Jvd3M6Y309TWZlKGwpO2xldCBhPTA7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aCYmIShjW2RdPj0wKTtkKyspYSs9MTtyZXR1cm57Y29sdW1uSGVhZGVyc0NvdW50OmF9fWZ1bmN0aW9uIFVydCgpe2lmKHRoaXMuaG90LmlzTGlzdGVuaW5nKCkpe2NvbnN0IGw9dGhpcy5ob3QuZ2V0U2VsZWN0''@;'; put 'put ''ZWRSYW5nZUxhc3QoKTtpZihsKXtjb25zdHtyb3c6Yyxjb2w6YX09bC5oaWdobGlnaHQsZD10aGlzLmhvdC5nZXRDZWxsKGMsYSwhMCk7ZCYmYlcoZCl9fX1mdW5jdGlvbiBrZmUoKXtpZih0aGlzLmhvdC5pc0xpc3RlbmluZygpKXtjb25zdCBsPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VM''@;'; put 'put ''YXN0KCk7aWYobCl7Y29uc3R7cm93OmMsY29sOmF9PWwuaGlnaGxpZ2h0LGQ9dGhpcy5ob3QuZ2V0Q2VsbChjLGEsITApO251bGwhPWQmJmQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKSYmeVcoZCl9fX1mdW5jdGlvbiBacnQobCl7bC5pdGVtcy5wdXNoKHtuYW1lOiItLS0tLS0t''@;'; put 'put ''LS0ifSxmdW5jdGlvbiBFcnQobCl7cmV0dXJue2tleToiY29weSIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoWUcpfSxjYWxsYmFjaygpe2wuY29weUNlbGxzT25seSgpfSxkaXNhYmxlZCgpe2lmKDA9PT10aGlzLmNvdW50Um93cygpfHwwPT09dGhpcy5jb3VudENv''@;'; put 'put ''bHMoKSlyZXR1cm4hMDtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighY3x8Yy5pc1NpbmdsZUhlYWRlcigpKXJldHVybiEwO2NvbnN0IGE9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiFhfHxhLmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSksVzEoaEssdGhpcykm''@;'; put 'put ''JmwuaXRlbXMucHVzaChmdW5jdGlvbiBBcnQobCl7cmV0dXJue2tleToiY29weV93aXRoX2NvbHVtbl9oZWFkZXJzIixuYW1lKCl7Y29uc3QgYz10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYT1jP0hhKGMuZ2V0V2lkdGgoKS0xLDAsMSk6MDtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVk''@;'; put 'put ''UGhyYXNlKFdHLGEpfSxjYWxsYmFjaygpe2wuY29weVdpdGhDb2x1bW5IZWFkZXJzKCl9LGRpc2FibGVkKCl7aWYoIXRoaXMuaGFzQ29sSGVhZGVycygpKXJldHVybiEwO2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lmKCFjfHxjLmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJu''@;'; put 'put ''ITA7Y29uc3QgYT10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWF8fGEubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKSxXMShmSyx0aGlzKSYmbC5pdGVtcy5wdXNoKGZ1bmN0aW9uIGtydChsKXtyZXR1cm57a2V5OiJjb3B5X3dpdGhfY29sdW1uX2dyb3VwX2hlYWRlcnMiLG5hbWUoKXtj''@;'; put 'put ''b25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxhPWM/SGEoYy5nZXRXaWR0aCgpLTEsMCwxKTowO3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoR0csYSl9LGNhbGxiYWNrKCl7bC5jb3B5V2l0aEFsbENvbHVtbkhlYWRlcnMoKX0sZGlzYWJsZWQoKXtpZighdGhpcy5o''@;'; put 'put ''YXNDb2xIZWFkZXJzKCl8fCF0aGlzLmdldFNldHRpbmdzKCkubmVzdGVkSGVhZGVycylyZXR1cm4hMDtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighY3x8Yy5pc1NpbmdsZUhlYWRlcigpKXJldHVybiEwO2NvbnN0IGE9dGhpcy5nZXRTZWxlY3RlZCgpO3JldHVybiFh''@;'; put 'put ''fHxhLmxlbmd0aD4xfSxoaWRkZW46ITF9fSh0aGlzKSksVzEocEssdGhpcykmJmwuaXRlbXMucHVzaChmdW5jdGlvbiBUcnQobCl7cmV0dXJue2tleToiY29weV9jb2x1bW5faGVhZGVyc19vbmx5IixuYW1lKCl7Y29uc3QgYz10aGlzLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYT1jP0hhKGMu''@;'; put 'put ''Z2V0V2lkdGgoKS0xLDAsMSk6MDtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKCRHLGEpfSxjYWxsYmFjaygpe2wuY29weUNvbHVtbkhlYWRlcnNPbmx5KCl9LGRpc2FibGVkKCl7aWYoIXRoaXMuaGFzQ29sSGVhZGVycygpKXJldHVybiEwO2NvbnN0IGM9dGhpcy5nZXRTZWxlY3Rl''@;'; put 'put ''ZFJhbmdlTGFzdCgpO2lmKCFjfHxjLmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJuITA7Y29uc3QgYT10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWF8fGEubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKSxsLml0ZW1zLnB1c2goZnVuY3Rpb24gRHJ0KGwpe3JldHVybntrZXk6ImN1dCIsbmFt''@;'; put 'put ''ZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UocUcpfSxjYWxsYmFjaygpe2wuY3V0KCl9LGRpc2FibGVkKCl7aWYoMD09PXRoaXMuY291bnRSb3dzKCl8fDA9PT10aGlzLmNvdW50Q29scygpKXJldHVybiEwO2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO2lm''@;'; put 'put ''KCFjfHxjLmlzU2luZ2xlSGVhZGVyKCkpcmV0dXJuITA7Y29uc3QgYT10aGlzLmdldFNlbGVjdGVkKCk7cmV0dXJuIWF8fGEubGVuZ3RoPjF9LGhpZGRlbjohMX19KHRoaXMpKX1mdW5jdGlvbiBZcnQobCxjLGEsZCxoKXtXMShLTyx0aGlzKSYmKGgudmFsdWU9ITApLG1mKEtPLHRoaXMsITEp''@;'; put 'put ''fWZ1bmN0aW9uIFdydCgpe3RoaXMuaXNFZGl0b3JPcGVuZWQoKXx8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5mcmFnbWVudFNlbGVjdGlvbnx8dGhpcy5zZXRDb3B5YWJsZVRleHQoKX1mdW5jdGlvbiBHcnQoKXtHMShQZCx0aGlzLGtmZSkuY2FsbCh0aGlzKX1mdW5jdGlvbiAkcnQoKXtHMShQ''@;'; put 'put ''ZCx0aGlzLFVydCkuY2FsbCh0aGlzKX1mdW5jdGlvbiBxcnQoKXtHMShQZCx0aGlzLGtmZSkuY2FsbCh0aGlzKX1mdW5jdGlvbiBBZmUobCxjKXtyZXR1cm5gYm9yZGVyX3JvdyR7bH1jb2wke2N9YH1mdW5jdGlvbiBnSyhsKXt2YXIgYyxhO3JldHVybihzbyhsLnN0YXJ0KXx8c28obC5sZWZ0''@;'; put 'put ''KSkmJihsLnN0YXJ0PW51bGwhPT0oYz1sLnN0YXJ0KSYmdm9pZCAwIT09Yz9jOmwubGVmdCksKHNvKGwuZW5kKXx8c28obC5yaWdodCkpJiYobC5lbmQ9bnVsbCE9PShhPWwuZW5kKSYmdm9pZCAwIT09YT9hOmwucmlnaHQpLGRlbGV0ZSBsLmxlZnQsZGVsZXRlIGwucmlnaHQsbH1mdW5jdGlv''@;'; put 'put ''biBsRShsKXtyZXR1cm4gc28obC5zdGFydCkmJihsLmxlZnQ9bC5zdGFydCksc28obC5lbmQpJiYobC5yaWdodD1sLmVuZCksbH1mdW5jdGlvbiBtSyhsLGMpe3JldHVybntpZDpBZmUobCxjKSxib3JkZXI6e3dpZHRoOjEsY29sb3I6IiMwMDAiLGNvcm5lclZpc2libGU6ITF9LHJvdzpsLGNv''@;'; put 'put ''bDpjLHRvcDp7aGlkZTohMH0sYm90dG9tOntoaWRlOiEwfSxzdGFydDp7aGlkZTohMH0sZW5kOntoaWRlOiEwfX19ZnVuY3Rpb24gejQobCxjKXtsZXQgYT0hMTtyZXR1cm4gVG4obC5nZXRTZWxlY3RlZFJhbmdlKCksZD0+e2QuZm9yQWxsKChoLGYpPT57aWYoaDwwfHxmPDApcmV0dXJuO2Nv''@;'; put 'put ''bnN0IHY9bC5nZXRDZWxsTWV0YShoLGYpLmJvcmRlcnM7aWYodil7aWYoIWMpcmV0dXJuIGE9ITAsITE7aWYoIVlsKHZbY10sImhpZGUiKXx8ITE9PT12W2NdLmhpZGUpcmV0dXJuIGE9ITAsITF9fSl9KSxhfWZ1bmN0aW9uIFhPKGwpe3JldHVybmA8c3BhbiBjbGFzcz0ic2VsZWN0ZWQiPlx1''@;'; put 'put ''MjcxMzwvc3Bhbj4ke2x9YH1jb25zdCBlaXQ9bmV3IE1hcChbWyJsZWZ0Iiwic3RhcnQiXSxbInJpZ2h0IiwiZW5kIl1dKTtmdW5jdGlvbiBuaXQobCl7cmV0dXJue2tleToiYm9yZGVyczp0b3AiLG5hbWUoKXtsZXQgYz10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZiQpO3JldHVybiB6NCh0''@;'; put 'put ''aGlzLCJ0b3AiKSYmKGM9WE8oYykpLGN9LGNhbGxiYWNrKGMsYSl7Y29uc3QgZD16NCh0aGlzLCJ0b3AiKTtsLnByZXBhcmVCb3JkZXIoYSwidG9wIixkKX19fWZ1bmN0aW9uIHJpdChsKXtjb25zdCBjPWwuaG90LmlzUnRsKCk/InN0YXJ0IjoiZW5kIjtyZXR1cm57a2V5OiJib3JkZXJzOnJp''@;'; put 'put ''Z2h0IixuYW1lKCl7bGV0IGE9dGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHAkKTtyZXR1cm4gejQodGhpcyxjKSYmKGE9WE8oYSkpLGF9LGNhbGxiYWNrKGEsZCl7Y29uc3QgaD16NCh0aGlzLGMpO2wucHJlcGFyZUJvcmRlcihkLGMsaCl9fX1mdW5jdGlvbiBpaXQobCl7cmV0dXJue2tleToi''@;'; put 'put ''Ym9yZGVyczpib3R0b20iLG5hbWUoKXtsZXQgYz10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoZyQpO3JldHVybiB6NCh0aGlzLCJib3R0b20iKSYmKGM9WE8oYykpLGN9LGNhbGxiYWNrKGMsYSl7Y29uc3QgZD16NCh0aGlzLCJib3R0b20iKTtsLnByZXBhcmVCb3JkZXIoYSwiYm90dG9tIixk''@;'; put 'put ''KX19fWZ1bmN0aW9uIG9pdChsKXtjb25zdCBjPWwuaG90LmlzUnRsKCk/ImVuZCI6InN0YXJ0IjtyZXR1cm57a2V5OiJib3JkZXJzOmxlZnQiLG5hbWUoKXtsZXQgYT10aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UobSQpO3JldHVybiB6NCh0aGlzLGMpJiYoYT1YTyhhKSksYX0sY2FsbGJhY2so''@;'; put 'put ''YSxkKXtjb25zdCBoPXo0KHRoaXMsYyk7bC5wcmVwYXJlQm9yZGVyKGQsYyxoKX19fWZ1bmN0aW9uIHNpdChsKXtyZXR1cm57a2V5OiJib3JkZXJzOm5vX2JvcmRlcnMiLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHYkKX0sY2FsbGJhY2soYyxhKXtsLnByZXBhcmVC''@;'; put 'put ''b3JkZXIoYSwibm9Cb3JkZXJzIil9LGRpc2FibGVkKCl7cmV0dXJuIXo0KHRoaXMpfX19ZnVuY3Rpb24gRGZlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2''@;'; put 'put ''YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBKTz0iY3VzdG9tQm9yZGVycyI7dmFyIHZLPW5ldyBXZWFrU2V0O2NsYXNzIGZpdCBleHRlbmRzIGRhe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSxmdW5jdGlvbiBhaXQobCxjKXsoZnVu''@;'; put 'put ''Y3Rpb24gbGl0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5hZGQobCl9KHRoaXMsdkspLGZ1bmN0aW9uIGNpdChsLGMsYSl7cmV0dXJu''@;'; put 'put ''IGM9ZnVuY3Rpb24gdWl0KGwpe3ZhciBjPWZ1bmN0aW9uIGRpdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5''@;'; put 'put ''cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6Yysi''@;'; put 'put ''In0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywic2F2ZWRCb3JkZXJzIixbXSl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIEpPfXN0YXRp''@;'; put 'put ''YyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDkwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtKT119ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGM9PkRmZSh2''@;'; put 'put ''Syx0aGlzLHBpdCkuY2FsbCh0aGlzLGMpKSx0aGlzLmFkZEhvb2soImluaXQiLCgpPT5EZmUodkssdGhpcyxnaXQpLmNhbGwodGhpcykpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5oaWRlQm9yZGVycygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQ''@;'; put 'put ''bHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMuY2hhbmdlQm9yZGVyU2V0dGluZ3MoKSxzdXBlci51cGRhdGVQbHVnaW4oKX1zZXRCb3JkZXJzKGMsYSl7bGV0IGQ9WyJ0b3AiLCJib3R0b20iLCJzdGFydCIsImVuZCJdLGg9bnVsbDthJiYodGhp''@;'; put 'put ''cy5jaGVja1NldHRpbmdzQ29oZXNpb24oW2FdKSxkPU9iamVjdC5rZXlzKGEpLGg9Z0soYSkpO2NvbnN0IHY9QXgoYmIoYykse2NyZWF0ZUNlbGxDb29yZHM6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMuYmluZCh0aGlzLmhvdCksY3JlYXRlQ2VsbFJhbmdlOnRoaXMuaG90Ll9jcmVhdGVD''@;'; put 'put ''ZWxsUmFuZ2UuYmluZCh0aGlzLmhvdCl9KTtUbihjLFM9Pnt2KFMpLmZvckFsbCgoVixRKT0+e1RuKGQsZGU9Pnt0aGlzLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWQoVixRLGgsZnVuY3Rpb24gdGl0KGwpe3ZhciBjO3JldHVybiBudWxsIT09KGM9ZWl0LmdldChsKSkmJnZvaWQgMCE9''@;'; put 'put ''PWM/YzpsfShkZSkpfSl9KX0pLHRoaXMuaG90LnZpZXcucmVuZGVyKCl9Z2V0Qm9yZGVycyhjKXtpZighQXJyYXkuaXNBcnJheShjKSlyZXR1cm4gdGhpcy5zYXZlZEJvcmRlcnM7Y29uc3QgZD1BeChiYihjKSx7Y3JlYXRlQ2VsbENvb3Jkczp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3Jkcy5i''@;'; put 'put ''aW5kKHRoaXMuaG90KSxjcmVhdGVDZWxsUmFuZ2U6dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZS5iaW5kKHRoaXMuaG90KX0pLGg9W107cmV0dXJuIFRuKGMsZj0+e2QoZikuZm9yQWxsKCh2LFMpPT57VG4odGhpcy5zYXZlZEJvcmRlcnMsVj0+e1Yucm93PT09diYmVi5jb2w9PT1TJiZoLnB1''@;'; put 'put ''c2gobEUoVikpfSl9KX0pLGh9Y2xlYXJCb3JkZXJzKGMpe2M/dGhpcy5zZXRCb3JkZXJzKGMpOihUbih0aGlzLnNhdmVkQm9yZGVycyxhPT57dGhpcy5jbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MoYS5pZCksdGhpcy5jbGVhck51bGxDZWxsUmFuZ2UoKSx0aGlzLmhvdC5yZW1v''@;'; put 'put ''dmVDZWxsTWV0YShhLnJvdyxhLmNvbCwiYm9yZGVycyIpfSksdGhpcy5zYXZlZEJvcmRlcnMubGVuZ3RoPTApfWluc2VydEJvcmRlckludG9TZXR0aW5ncyhjLGEpe3RoaXMuY2hlY2tTYXZlZEJvcmRlcnMoYyl8fHRoaXMuc2F2ZWRCb3JkZXJzLnB1c2goYyk7Y29uc3QgaD10aGlzLmhvdC5f''@;'; put 'put ''Y3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMucm93LGMuY29sKSk7dGhpcy5jaGVja0N1c3RvbVNlbGVjdGlvbnMoYyxoLGEpfHx0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmFkZEN1c3RvbVNlbGVjdGlvbih7Ym9yZGVyOmMsdmlzdWFsQ2VsbFJhbmdl''@;'; put 'put ''Omh9KX1wcmVwYXJlQm9yZGVyRnJvbUN1c3RvbUFkZGVkKGMsYSxkLGgpe2NvbnN0IGY9dGhpcy5ob3QuY291bnRSb3dzKCksdj10aGlzLmhvdC5jb3VudENvbHMoKTtpZihjPj1mfHxhPj12KXJldHVybjtsZXQgUz1tSyhjLGEpO2QmJihTPWZ1bmN0aW9uIFhydChsLGMpe3JldHVybiBZbChj''@;'; put 'put ''LCJib3JkZXIiKSYmYy5ib3JkZXImJihsLmJvcmRlcj1jLmJvcmRlciksWWwoYywidG9wIikmJnNvKGMudG9wKSYmKGMudG9wPyhfcyhjLnRvcCl8fChjLnRvcD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxsLnRvcD1jLnRvcCk6KGMudG9wPXtoaWRlOiEwfSxsLnRvcD1jLnRvcCkpLFlsKGMs''@;'; put 'put ''ImJvdHRvbSIpJiZzbyhjLmJvdHRvbSkmJihjLmJvdHRvbT8oX3MoYy5ib3R0b20pfHwoYy5ib3R0b209e3dpZHRoOjEsY29sb3I6IiMwMDAifSksbC5ib3R0b209Yy5ib3R0b20pOihjLmJvdHRvbT17aGlkZTohMH0sbC5ib3R0b209Yy5ib3R0b20pKSxZbChjLCJzdGFydCIpJiZzbyhjLnN0''@;'; put 'put ''YXJ0KSYmKGMuc3RhcnQ/KF9zKGMuc3RhcnQpfHwoYy5zdGFydD17d2lkdGg6MSxjb2xvcjoiIzAwMCJ9KSxsLnN0YXJ0PWMuc3RhcnQpOihjLnN0YXJ0PXtoaWRlOiEwfSxsLnN0YXJ0PWMuc3RhcnQpKSxZbChjLCJlbmQiKSYmc28oYy5lbmQpJiYoYy5lbmQ/KF9zKGMuZW5kKXx8KGMuZW5k''@;'; put 'put ''PXt3aWR0aDoxLGNvbG9yOiIjMDAwIn0pLGwuZW5kPWMuZW5kKTooYy5lbmQ9e2hpZGU6ITB9LGwuZW5kPWMuZW5kKSksbH0oUyxkKSxUbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsVj0+e2lmKFMuaWQ9PT1WLnNldHRpbmdzLmlkKXJldHVybiBPYmpl''@;'; put 'put ''Y3QuYXNzaWduKFYuc2V0dGluZ3MsZCksUy5pZD1WLnNldHRpbmdzLmlkLFMudG9wPVYuc2V0dGluZ3MudG9wLFMuYm90dG9tPVYuc2V0dGluZ3MuYm90dG9tLFMuc3RhcnQ9Vi5zZXR0aW5ncy5zdGFydCxTLmVuZD1WLnNldHRpbmdzLmVuZCwhMX0pKSx0aGlzLmhvdC5zZXRDZWxsTWV0YShj''@;'; put 'put ''LGEsImJvcmRlcnMiLGxFKFMpKSx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhTLGgpfXByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWRSYW5nZShjLGEpe2NvbnN0IGQ9TWF0aC5taW4oYy50by5yb3csdGhpcy5ob3QuY291bnRSb3dzKCktMSksaD1NYXRoLm1pbihjLnRvLmNvbCx0''@;'; put 'put ''aGlzLmhvdC5jb3VudENvbHMoKS0xKTtnbyhjLmZyb20ucm93LGQsZj0+e2dvKGMuZnJvbS5jb2wsaCx2PT57Y29uc3QgUz1tSyhmLHYpO2xldCBWPTA7Zj09PWMuZnJvbS5yb3cmJllsKGEsInRvcCIpJiYoVis9MSxTLnRvcD1hLnRvcCksZj09PWMudG8ucm93JiZZbChhLCJib3R0b20iKSYm''@;'; put 'put ''KFYrPTEsUy5ib3R0b209YS5ib3R0b20pLHY9PT1jLmZyb20uY29sJiZZbChhLCJzdGFydCIpJiYoVis9MSxTLnN0YXJ0PWEuc3RhcnQpLHY9PT1jLnRvLmNvbCYmWWwoYSwiZW5kIikmJihWKz0xLFMuZW5kPWEuZW5kKSxWPjAmJih0aGlzLmhvdC5zZXRDZWxsTWV0YShmLHYsImJvcmRlcnMi''@;'; put 'put ''LGxFKFMpKSx0aGlzLmluc2VydEJvcmRlckludG9TZXR0aW5ncyhTKSl9KX0pfXJlbW92ZUFsbEJvcmRlcnMoYyxhKXtjb25zdCBkPUFmZShjLGEpO3RoaXMuc3BsaWNlQm9yZGVyKGQpLHRoaXMuY2xlYXJCb3JkZXJzRnJvbVNlbGVjdGlvblNldHRpbmdzKGQpLHRoaXMuY2xlYXJOdWxsQ2Vs''@;'; put 'put ''bFJhbmdlKCksdGhpcy5ob3QucmVtb3ZlQ2VsbE1ldGEoYyxhLCJib3JkZXJzIil9c2V0Qm9yZGVyKGMsYSxkLGgpe2xldCBmPXRoaXMuaG90LmdldENlbGxNZXRhKGMsYSkuYm9yZGVycztmPWYmJnZvaWQgMCE9PWYuYm9yZGVyP2dLKGYpOm1LKGMsYSksaD8oZltkXT17aGlkZTohMH0sND09''@;'; put 'put ''PXRoaXMuY291bnRIaWRlKGYpP3RoaXMucmVtb3ZlQWxsQm9yZGVycyhjLGEpOih0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudShmLGQsaCl8fHRoaXMuaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzKGYpLHRoaXMuaG90LnNldENlbGxNZXRhKGMsYSwiYm9yZGVycyIs''@;'; put 'put ''bEUoZikpKSk6KGZbZF09e3dpZHRoOjEsY29sb3I6IiMwMDAifSx0aGlzLmNoZWNrQ3VzdG9tU2VsZWN0aW9uc0Zyb21Db250ZXh0TWVudShmLGQsaCl8fHRoaXMuaW5zZXJ0Qm9yZGVySW50b1NldHRpbmdzKGYpLHRoaXMuaG90LnNldENlbGxNZXRhKGMsYSwiYm9yZGVycyIsbEUoZikpKX1w''@;'; put 'put ''cmVwYXJlQm9yZGVyKGMsYSxkKXtUbihjLGg9PntsZXR7c3RhcnQ6ZixlbmQ6dn09aDtpZihmLnJvdz09PXYucm93JiZmLmNvbD09PXYuY29sKSJub0JvcmRlcnMiPT09YT90aGlzLnJlbW92ZUFsbEJvcmRlcnMoZi5yb3csZi5jb2wpOnRoaXMuc2V0Qm9yZGVyKGYucm93LGYuY29sLGEsZCk7''@;'; put 'put ''ZWxzZSBzd2l0Y2goYSl7Y2FzZSJub0JvcmRlcnMiOmdvKGYuY29sLHYuY29sLFM9PntnbyhmLnJvdyx2LnJvdyxWPT57dGhpcy5yZW1vdmVBbGxCb3JkZXJzKFYsUyl9KX0pO2JyZWFrO2Nhc2UidG9wIjpnbyhmLmNvbCx2LmNvbCxTPT57dGhpcy5zZXRCb3JkZXIoZi5yb3csUyxhLGQpfSk7''@;'; put 'put ''YnJlYWs7Y2FzZSJib3R0b20iOmdvKGYuY29sLHYuY29sLFM9Pnt0aGlzLnNldEJvcmRlcih2LnJvdyxTLGEsZCl9KTticmVhaztjYXNlInN0YXJ0IjpnbyhmLnJvdyx2LnJvdyxTPT57dGhpcy5zZXRCb3JkZXIoUyxmLmNvbCxhLGQpfSk7YnJlYWs7Y2FzZSJlbmQiOmdvKGYucm93LHYucm93''@;'; put 'put ''LFM9Pnt0aGlzLnNldEJvcmRlcihTLHYuY29sLGEsZCl9KX19KX1jcmVhdGVDdXN0b21Cb3JkZXJzKGMpe1RuKGMsYT0+e2NvbnN0IGQ9Z0soYSk7YS5yYW5nZT90aGlzLnByZXBhcmVCb3JkZXJGcm9tQ3VzdG9tQWRkZWRSYW5nZShhLnJhbmdlLGQpOnRoaXMucHJlcGFyZUJvcmRlckZyb21D''@;'; put 'put ''dXN0b21BZGRlZChhLnJvdyxhLmNvbCxkKX0pfWNvdW50SGlkZShjKXtjb25zdHt0b3A6YSxib3R0b206ZCxzdGFydDpoLGVuZDpmfT1jO3JldHVybiBNYyhbYSxkLGgsZl0sKFMsVik9PntsZXQgUT1TO3JldHVybiBWJiZWLmhpZGUmJihRKz0xKSxRfSwwKX1jbGVhckJvcmRlcnNGcm9tU2Vs''@;'; put 'put ''ZWN0aW9uU2V0dGluZ3MoYyl7Y29uc3QgYT14cyh0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZD0+ZC5zZXR0aW5ncy5pZCkuaW5kZXhPZihjKTthPi0xJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnNbYV0uY2xlYXIo''@;'; put 'put ''KX1jbGVhck51bGxDZWxsUmFuZ2UoKXtUbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsKGMsYSk9PntpZihudWxsPT09Yy5jZWxsUmFuZ2UpcmV0dXJuIHRoaXMuaG90LnNlbGVjdGlvbi5oaWdobGlnaHQuY3VzdG9tU2VsZWN0aW9uc1thXS5kZXN0cm95''@;'; put 'put ''KCksdGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5jdXN0b21TZWxlY3Rpb25zLnNwbGljZShhLDEpLCExfSl9aGlkZUJvcmRlcnMoKXtUbih0aGlzLnNhdmVkQm9yZGVycyxjPT57dGhpcy5jbGVhckJvcmRlcnNGcm9tU2VsZWN0aW9uU2V0dGluZ3MoYy5pZCksdGhpcy5jbGVhck51bGxD''@;'; put 'put ''ZWxsUmFuZ2UoKX0pfXNwbGljZUJvcmRlcihjKXtjb25zdCBhPXhzKHRoaXMuc2F2ZWRCb3JkZXJzLGQ9PmQuaWQpLmluZGV4T2YoYyk7YT4tMSYmdGhpcy5zYXZlZEJvcmRlcnMuc3BsaWNlKGEsMSl9Y2hlY2tTYXZlZEJvcmRlcnMoYyl7bGV0IGE9ITE7cmV0dXJuIDQ9PT10aGlzLmNvdW50''@;'; put 'put ''SGlkZShjKT8odGhpcy5zcGxpY2VCb3JkZXIoYy5pZCksYT0hMCk6VG4odGhpcy5zYXZlZEJvcmRlcnMsKGgsZik9PntpZihjLmlkPT09aC5pZClyZXR1cm4gdGhpcy5zYXZlZEJvcmRlcnNbZl09YyxhPSEwLCExfSksYX1jaGVja0N1c3RvbVNlbGVjdGlvbnNGcm9tQ29udGV4dE1lbnUoYyxh''@;'; put 'put ''LGQpe2xldCBoPSExO3JldHVybiBUbih0aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsZj0+e2lmKGMuaWQ9PT1mLnNldHRpbmdzLmlkKXJldHVybiBUbih0aGlzLmhvdC52aWV3Ll93dC5zZWxlY3Rpb25NYW5hZ2VyLmdldEJvcmRlckluc3RhbmNlcyhmKSxT''@;'; put 'put ''PT57Uy50b2dnbGVIaWRkZW5DbGFzcyhhLGQpfSksaD0hMCwhMX0pLGh9Y2hlY2tDdXN0b21TZWxlY3Rpb25zKGMsYSxkKXtjb25zdCBoPXRoaXMuY291bnRIaWRlKGMpO2xldCBmPSExO3JldHVybiA0PT09aD8odGhpcy5yZW1vdmVBbGxCb3JkZXJzKGMucm93LGMuY29sKSxmPSEwKTpUbih0''@;'; put 'put ''aGlzLmhvdC5zZWxlY3Rpb24uaGlnaGxpZ2h0LmN1c3RvbVNlbGVjdGlvbnMsdj0+e2lmKGMuaWQ9PT12LnNldHRpbmdzLmlkKXJldHVybiB2LnZpc3VhbENlbGxSYW5nZT1hLHYuY29tbWl0KCksZCYmVG4odGhpcy5ob3Qudmlldy5fd3Quc2VsZWN0aW9uTWFuYWdlci5nZXRCb3JkZXJJbnN0''@;'; put 'put ''YW5jZXModiksVj0+e1YuY2hhbmdlQm9yZGVyU3R5bGUoZCxjKX0pLGY9ITAsITF9KSxmfWNoYW5nZUJvcmRlclNldHRpbmdzKCl7Y29uc3QgYz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0pPXTtpZihBcnJheS5pc0FycmF5KGMpKXtjb25zdCBhPVIwKGMpO3RoaXMuY2hlY2tTZXR0aW5nc0Nv''@;'; put 'put ''aGVzaW9uKGEpLGEubGVuZ3RofHwodGhpcy5zYXZlZEJvcmRlcnM9YSksdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKGEpfWVsc2Ugdm9pZCAwIT09YyYmdGhpcy5jcmVhdGVDdXN0b21Cb3JkZXJzKHRoaXMuc2F2ZWRCb3JkZXJzKX1jaGVja1NldHRpbmdzQ29oZXNpb24oYyl7Y29uc3QgYT1m''@;'; put 'put ''dW5jdGlvbiBKcnQobCl7cmV0dXJuIGwuc29tZShjPT5zbyhjLmxlZnQpfHxzbyhjLnJpZ2h0KSl9KGMpLGQ9ZnVuY3Rpb24gUXJ0KGwpe3JldHVybiBsLnNvbWUoYz0+c28oYy5zdGFydCl8fHNvKGMuZW5kKSl9KGMpO2lmKGEmJmQpdGhyb3cgbmV3IEVycm9yKCdUaGUgImxlZnQiLyJyaWdo''@;'; put 'put ''dCIgYW5kICJzdGFydCIvImVuZCIgb3B0aW9ucyBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2Ugb25seSB0aGUgb3B0aW9uICJzdGFydCIvImVuZCIuJyk7aWYodGhpcy5ob3QuaXNSdGwoKSYmYSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAibGVmdCIvInJpZ2h0IiBwcm9w''@;'; put 'put ''ZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBSVEwuIFBsZWFzZSB1c2Ugb3B0aW9uICJzdGFydCIvImVuZCIuJyl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gcGl0KGwpe3RoaXMuaG90LmdldFNldHRpbmdzKClbSk9dJiZsLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0t''@;'; put 'put ''LS0tLSJ9LHtrZXk6ImJvcmRlcnMiLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKGgkKX0sZGlzYWJsZWQoKXtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4hKGMmJiFjLmlzU2luZ2xlSGVhZGVyKCkpfHx0aGlzLnNlbGVjdGlvbi5pc1Nl''@;'; put 'put ''bGVjdGVkQnlDb3JuZXIoKX0sc3VibWVudTp7aXRlbXM6W25pdCh0aGlzKSxyaXQodGhpcyksaWl0KHRoaXMpLG9pdCh0aGlzKSxzaXQodGhpcyldfX0pfWZ1bmN0aW9uIGdpdCgpe3RoaXMuY2hhbmdlQm9yZGVyU2V0dGluZ3MoKX1mdW5jdGlvbiBfSyhsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rp''@;'; put 'put ''b24gX2l0KGwpe3ZhciBjPWZ1bmN0aW9uIGJpdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJl''@;'; put 'put ''dHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBp''@;'; put 'put ''biBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBJZmUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVu''@;'; put 'put ''dHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfWNvbnN0IFJmZT0iZHJhZ1RvU2Nyb2xsIjt2YXIgYks9bmV3IFdlYWtTZXQ7Y2xhc3Mgd2l0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtz''@;'; put 'put ''dXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIG1pdChsLGMpeyhmdW5jdGlvbiB2aXQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFk''@;'; put 'put ''ZChsKX0odGhpcyxiSyksX0sodGhpcywiYm91bmRhcmllcyIsbnVsbCksX0sodGhpcywiY2FsbGJhY2siLG51bGwpLF9LKHRoaXMsImxpc3RlbmluZyIsITEpfXN0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBSZmV9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTAw''@;'; put 'put ''fWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtSZmVdfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYWZ0ZXJPbkNlbGxNb3VzZURvd24iLGM9PklmZShiSyx0aGlzLExmZSkuY2FsbCh0aGlzLGMpKSx0aGlzLmFkZEhvb2soImFm''@;'; put 'put ''dGVyT25DZWxsQ29ybmVyTW91c2VEb3duIixjPT5JZmUoYkssdGhpcyxMZmUpLmNhbGwodGhpcyxjKSksdGhpcy5yZWdpc3RlckV2ZW50cygpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVy''@;'; put 'put ''LnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9c2V0Qm91bmRhcmllcygpe3RoaXMuYm91bmRhcmllcz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06''@;'; put 'put ''e2xlZnQ6MCxyaWdodDp0aGlzLmhvdC5yb290V2luZG93LmlubmVyV2lkdGgsdG9wOjAsYm90dG9tOnRoaXMuaG90LnJvb3RXaW5kb3cuaW5uZXJIZWlnaHR9fXNldENhbGxiYWNrKGMpe3RoaXMuY2FsbGJhY2s9Y31jaGVjayhjLGEpe2xldCBkPTAsaD0wO2E8dGhpcy5ib3VuZGFyaWVzLnRv''@;'; put 'put ''cD9oPWEtdGhpcy5ib3VuZGFyaWVzLnRvcDphPnRoaXMuYm91bmRhcmllcy5ib3R0b20mJihoPWEtdGhpcy5ib3VuZGFyaWVzLmJvdHRvbSksYzx0aGlzLmJvdW5kYXJpZXMubGVmdD9kPWMtdGhpcy5ib3VuZGFyaWVzLmxlZnQ6Yz50aGlzLmJvdW5kYXJpZXMucmlnaHQmJihkPWMtdGhpcy5i''@;'; put 'put ''b3VuZGFyaWVzLnJpZ2h0KSx0aGlzLmNhbGxiYWNrKGQsaCl9bGlzdGVuKCl7dGhpcy5saXN0ZW5pbmc9ITB9dW5saXN0ZW4oKXt0aGlzLmxpc3RlbmluZz0hMX1pc0xpc3RlbmluZygpe3JldHVybiB0aGlzLmxpc3RlbmluZ31yZWdpc3RlckV2ZW50cygpe2NvbnN0e3Jvb3RXaW5kb3c6Y309''@;'; put 'put ''dGhpcy5ob3Q7bGV0IGE9Yztmb3IoO2E7KXRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYS5kb2N1bWVudCwiY29udGV4dG1lbnUiLCgpPT50aGlzLnVubGlzdGVuKCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYS5kb2N1bWVudCwibW91c2V1cCIsKCk9''@;'; put 'put ''PnRoaXMudW5saXN0ZW4oKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLmRvY3VtZW50LCJtb3VzZW1vdmUiLGQ9PnRoaXMub25Nb3VzZU1vdmUoZCkpLGE9ejgoYSl9dW5yZWdpc3RlckV2ZW50cygpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyKCl9b25Nb3VzZU1vdmUo''@;'; put 'put ''Yyl7dGhpcy5pc0xpc3RlbmluZygpJiZ0aGlzLmNoZWNrKGMuY2xpZW50WCxjLmNsaWVudFkpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIExmZShsKXtpZihObShsKSlyZXR1cm47Y29uc3QgYz10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLnRvcE92ZXJsYXkubWFp''@;'; put 'put ''blRhYmxlU2Nyb2xsYWJsZUVsZW1lbnQ7dGhpcy5zZXRCb3VuZGFyaWVzKGMhPT10aGlzLmhvdC5yb290V2luZG93P2MuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6dm9pZCAwKSx0aGlzLnNldENhbGxiYWNrKChhLGQpPT57dmFyIGgsZjtjb25zdCB2PW51bGwhPT0oaD1jLnNjcm9sbExlZnQp''@;'; put 'put ''JiZ2b2lkIDAhPT1oP2g6Yy5zY3JvbGxYLFM9bnVsbCE9PShmPWMuc2Nyb2xsVG9wKSYmdm9pZCAwIT09Zj9mOmMuc2Nyb2xsWTtjLnNjcm9sbCh2KzUwKk1hdGguc2lnbihhKSxTKzIwKk1hdGguc2lnbihkKSl9KSx0aGlzLmxpc3RlbigpfWZ1bmN0aW9uIE9mZShsLGMpe2lmKGMuaGFzKGwp''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24geUsobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIE1pdChsKXt2YXIgYz1mdW5jdGlvbiB4aXQobCxjKXtpZigib2JqZWN0''@;'; put 'put ''IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11''@;'; put 'put ''c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1l''@;'; put 'put ''cmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gUGZlKGwsYyxhKXtyZXR1cm4gbC5zZXQoWGgobCxjKSxhKSxhfWZ1bmN0aW9uIFhoKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0aW9ucyIpLGFvLmdldFNpbmdsZXRvbigp''@;'; put 'put ''LnJlZ2lzdGVyKCJiZWZvcmVEcm9wZG93bk1lbnVTaG93IiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyRHJvcGRvd25NZW51U2hvdyIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3Rl''@;'; put 'put ''cigiYWZ0ZXJEcm9wZG93bk1lbnVFeGVjdXRlIik7Y29uc3QgUU89ImRyb3Bkb3duTWVudSIsZVA9ImNoYW5nZVR5cGUiLHdLPVFPO3ZhciB0UD1uZXcgV2Vha01hcCx2Zj1uZXcgV2Vha1NldDtjbGFzcyBuUCBleHRlbmRzIGRhe3N0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBRT31z''@;'; put 'put ''dGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyMzB9c3RhdGljIGdldCBQTFVHSU5fREVQUygpe3JldHVyblsicGx1Z2luOkF1dG9Db2x1bW5TaXplIl19c3RhdGljIGdldCBERUZBVUxUX0lURU1TKCl7cmV0dXJuW0d4LCR4LEVzLEt4LEVzLEZPLEVzLHF4LEVzLEtoXX1jb25z''@;'; put 'put ''dHJ1Y3RvcihjKXtzdXBlcihjKSxmdW5jdGlvbiBDaXQobCxjKXtPZmUobCxjKSxjLmFkZChsKX0odGhpcyx2ZikseUsodGhpcywiY29tbWFuZEV4ZWN1dG9yIixuZXcgYWZlKHRoaXMuaG90KSkseUsodGhpcywiaXRlbXNGYWN0b3J5IixudWxsKSx5Syh0aGlzLCJtZW51IixudWxsKSxmdW5j''@;'; put 'put ''dGlvbiBTaXQobCxjLGEpe09mZShsLGMpLGMuc2V0KGwsYSl9KHRoaXMsdFAsITEpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIiwoYSxkKT0+WGgodmYsdGhpcyxBaXQpLmNhbGwodGhpcyxhLGQpKX1pc0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5ob3QuZ2V0U2V0dGluZ3Mo''@;'; put 'put ''KVtRT119ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpcztpZih0aGlzLmVuYWJsZWQpcmV0dXJuO3RoaXMuaXRlbXNGYWN0b3J5PW5ldyBkZmUodGhpcy5ob3QsblAuREVGQVVMVF9JVEVNUyksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZURvd24iLGZ1bmN0aW9uKCl7Zm9yKHZhciBo''@;'; put 'put ''PWFyZ3VtZW50cy5sZW5ndGgsZj1uZXcgQXJyYXkoaCksdj0wO3Y8aDt2KyspZlt2XT1hcmd1bWVudHNbdl07cmV0dXJuIFhoKHZmLGMsUGl0KS5jYWxsKGMsLi4uZil9KSx0aGlzLmFkZEhvb2soImJlZm9yZVZpZXdwb3J0U2Nyb2xsSG9yaXpvbnRhbGx5IixmdW5jdGlvbigpe2Zvcih2YXIg''@;'; put 'put ''aD1hcmd1bWVudHMubGVuZ3RoLGY9bmV3IEFycmF5KGgpLHY9MDt2PGg7disrKWZbdl09YXJndW1lbnRzW3ZdO3JldHVybiBYaCh2ZixjLE9pdCkuY2FsbChjLC4uLmYpfSk7Y29uc3QgYT10aGlzLmhvdC5nZXRTZXR0aW5ncygpW1FPXSxkPXtpdGVtczp0aGlzLml0ZW1zRmFjdG9yeS5nZXRJ''@;'; put 'put ''dGVtcyhhKX07dGhpcy5yZWdpc3RlckV2ZW50cygpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNhbGxiYWNrJiZ0aGlzLmNvbW1hbmRFeGVjdXRvci5zZXRDb21tb25DYWxsYmFjayhhLmNhbGxiYWNrKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCksdGhpcy5j''@;'; put 'put ''YWxsT25QbHVnaW5zUmVhZHkoKCk9Pnt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEcm9wZG93bk1lbnVEZWZhdWx0T3B0aW9ucyIsZCksdGhpcy5pdGVtc0ZhY3Rvcnkuc2V0UHJlZGVmaW5lZEl0ZW1zKGQuaXRlbXMpO2NvbnN0IGg9dGhpcy5pdGVtc0ZhY3RvcnkuZ2V0SXRlbXMoYSk7dGhp''@;'; put 'put ''cy5tZW51JiZ0aGlzLm1lbnUuZGVzdHJveSgpLHRoaXMubWVudT1uZXcgamIodGhpcy5ob3Qse2NsYXNzTmFtZToiaHREcm9wZG93bk1lbnUiLGtlZXBJblZpZXdwb3J0OiEwLGNvbnRhaW5lcjphLnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290RG9jdW1lbnQuYm9keX0pLHRoaXMuaG90LnJ1''@;'; put 'put ''bkhvb2tzKCJiZWZvcmVEcm9wZG93bk1lbnVTZXRJdGVtcyIsaCksdGhpcy5tZW51LnNldE1lbnVJdGVtcyhoKSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJiZWZvcmVPcGVuIiwoKT0+WGgodmYsdGhpcyxEaXQpLmNhbGwodGhpcykpLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImFmdGVyT3Bl''@;'; put 'put ''biIsKCk9PlhoKHZmLHRoaXMsSWl0KS5jYWxsKHRoaXMpKSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlclN1Ym1lbnVPcGVuIixmPT5YaCh2Zix0aGlzLFJpdCkuY2FsbCh0aGlzLGYpKSx0aGlzLm1lbnUuYWRkTG9jYWxIb29rKCJhZnRlckNsb3NlIiwoKT0+WGgodmYsdGhpcyxMaXQp''@;'; put 'put ''LmNhbGwodGhpcykpLHRoaXMubWVudS5hZGRMb2NhbEhvb2soImV4ZWN1dGVDb21tYW5kIixmdW5jdGlvbigpe2Zvcih2YXIgZj1hcmd1bWVudHMubGVuZ3RoLHY9bmV3IEFycmF5KGYpLFM9MDtTPGY7UysrKXZbU109YXJndW1lbnRzW1NdO3JldHVybiBjLmV4ZWN1dGVDb21tYW5kLmNhbGwo''@;'; put 'put ''YywuLi52KX0pLFRuKGgsZj0+dGhpcy5jb21tYW5kRXhlY3V0b3IucmVnaXN0ZXJDb21tYW5kKGYua2V5LGYpKX0pfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMu''@;'; put 'put ''Y2xvc2UoKSx0aGlzLm1lbnUmJnRoaXMubWVudS5kZXN0cm95KCksdGhpcy51bnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfXJlZ2lzdGVyU2hvcnRjdXRzKCl7Y29uc3QgYT0oKT0+e2NvbnN0e2hpZ2hsaWdodDpkfT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdl''@;'; put 'put ''TGFzdCgpO2lmKChkLmlzSGVhZGVyKCkmJi0xPT09ZC5yb3d8fGQuaXNDZWxsKCkpJiZkLmNvbD49MCl7dGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhkLmNvbCxkLmNvbCwtMSk7Y29uc3R7ZnJvbTpofT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGY9QU8odGhpcy5tZW51LmNvbnRh''@;'; put 'put ''aW5lcix0aGlzLmhvdC5yb290RG9jdW1lbnQpLHY9dGhpcy5ob3QuZ2V0Q2VsbCgtMSxoLmNvbCwhMCksUz12LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMub3Blbih7bGVmdDpTLmxlZnQrZi5sZWZ0LHRvcDpTLnRvcCt2Lm9mZnNldEhlaWdodCtmLnRvcH0se2xlZnQ6Uy53aWR0aH0p''@;'; put 'put ''LHRoaXMubWVudS5nZXROYXZpZ2F0b3IoKS50b0ZpcnN0SXRlbSgpfX07dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0cyhbe2tleXM6W1siU2hpZnQiLCJBbHQiLCJBcnJvd0Rvd24iXSxbIkNvbnRyb2wvTWV0YSIsIkVudGVyIl1d''@;'; put 'put ''LGNhbGxiYWNrOmEscnVuT25seUlmOigpPT57dmFyIGQ7Y29uc3QgaD1udWxsPT09KGQ9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWQ/dm9pZCAwOmQuaGlnaGxpZ2h0O3JldHVybiBoJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZShoKSYmaC5p''@;'; put 'put ''c0hlYWRlcigpJiYhdGhpcy5tZW51LmlzT3BlbmVkKCl9LGNhcHR1cmVDdHJsOiEwLGdyb3VwOndLfSx7a2V5czpbWyJTaGlmdCIsIkFsdCIsIkFycm93RG93biJdXSxjYWxsYmFjazphLHJ1bk9ubHlJZjooKT0+e3ZhciBkO2NvbnN0IGg9bnVsbD09PShkPXRoaXMuaG90LmdldFNlbGVjdGVk''@;'; put 'put ''UmFuZ2VMYXN0KCkpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLmhpZ2hsaWdodDtyZXR1cm4gaCYmdGhpcy5ob3Quc2VsZWN0aW9uLmlzQ2VsbFZpc2libGUoaCkmJmguaXNDZWxsKCkmJiF0aGlzLm1lbnUuaXNPcGVuZWQoKX0sZ3JvdXA6d0t9XSl9dW5yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMu''@;'; put 'put ''aG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKHdLKX1yZWdpc3RlckV2ZW50cygpe3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ob3Qucm9vdEVsZW1lbnQsImNsaWNrIixjPT5YaCh2Zix0aGlz''@;'; put 'put ''LGtpdCkuY2FsbCh0aGlzLGMpKX1vcGVuKGMpe3ZhciBhO2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7YWJvdmU6MCxiZWxvdzowLGxlZnQ6MCxyaWdodDowfTtudWxsIT09KGE9dGhpcy5tZW51KSYmdm9pZCAwIT09YSYmYS5p''@;'; put 'put ''c09wZW5lZCgpfHwodGhpcy5tZW51Lm9wZW4oKSxDcyhkLChoLGYpPT57dGhpcy5tZW51LnNldE9mZnNldChmLGgpfSksdGhpcy5tZW51LnNldFBvc2l0aW9uKGMpKX1jbG9zZSgpe3ZhciBjO251bGw9PT0oYz10aGlzLm1lbnUpfHx2b2lkIDA9PT1jfHxjLmNsb3NlKCl9ZXhlY3V0ZUNvbW1h''@;'; put 'put ''bmQoYyl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYT4xP2EtMTowKSxoPTE7aDxhO2grKylkW2gtMV09YXJndW1lbnRzW2hdO3RoaXMuY29tbWFuZEV4ZWN1dG9yLmV4ZWN1dGUoYywuLi5kKX1zZXRMaXN0ZW5pbmcoKXtsZXQgYz0hKGFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO3RoaXMubWVudS5pc09wZW5lZCgpJiYoYz90aGlzLm1lbnUuaG90TWVudS5saXN0ZW4oKTp0aGlzLm1lbnUuaG90TWVudS51bmxpc3RlbigpKX1kZXN0cm95KCl7dGhpcy5jbG9zZSgpLHRoaXMubWVudSYmdGhpcy5tZW51''@;'; put 'put ''LmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIEZmZShsKXtsLmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpLmFkZEN1c3RvbVNob3J0Y3V0cyhbe2tleXM6W1siQ29udHJvbC9NZXRhIiwiQSJdXSxjYWxsYmFjazooKT0+ITF9XSl9ZnVuY3Rpb24ga2l0KGwpe2lmKFlvKGwu''@;'; put 'put ''dGFyZ2V0LGVQKSl7Y29uc3QgYz1BTyh0aGlzLm1lbnUuY29udGFpbmVyLHRoaXMuaG90LnJvb3REb2N1bWVudCksYT1sLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsLnN0b3BQcm9wYWdhdGlvbigpLFBmZSh0UCx0aGlzLCExKSx0aGlzLm9wZW4oe2xlZnQ6YS5sZWZ0K2MubGVm''@;'; put 'put ''dCx0b3A6YS50b3ArbC50YXJnZXQub2Zmc2V0SGVpZ2h0KzMrYy50b3B9LHtsZWZ0OmEud2lkdGh9KX19ZnVuY3Rpb24gQWl0KGwsYyl7Y29uc3QgYT1jLnBhcmVudE5vZGU7aWYoIWEpcmV0dXJuO2NvbnN0IGQ9YS5wYXJlbnROb2RlLmNoaWxkTm9kZXMsaD1BcnJheS5wcm90b3R5cGUuaW5k''@;'; put 'put ''ZXhPZi5jYWxsKGQsYSk7aWYobDwwfHxoIT09ZC5sZW5ndGgtMSlyZXR1cm47Y29uc3QgZj1jLnF1ZXJ5U2VsZWN0b3IoYC4ke2VQfWApO2lmKHRoaXMuZW5hYmxlZCYmZilyZXR1cm47aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZChmJiZmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikp''@;'; put 'put ''O2NvbnN0IHY9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO3YuY2xhc3NOYW1lPWVQLHYudHlwZT0iYnV0dG9uIix2LnRhYkluZGV4PS0xLHRoaXMuaG90LmdldFNldHRpbmdzKCkuYXJpYVRhZ3MmJihWbyh2LFtNNCgpLGxXKCIgIildKSxWbyhjLFtjMWUo''@;'; put 'put ''Im1lbnUiKV0pKSx2Lm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sYy5maXJzdENoaWxkLmluc2VydEJlZm9yZSh2LGMuZmlyc3RDaGlsZC5maXJzdENoaWxkKX1mdW5jdGlvbiBEaXQoKXt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlRHJvcGRvd25NZW51U2hvdyIsdGhpcyl9ZnVuY3Rp''@;'; put 'put ''b24gSWl0KCl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyRHJvcGRvd25NZW51U2hvdyIsdGhpcyksWGgodmYsdGhpcyxGZmUpLmNhbGwodGhpcyx0aGlzLm1lbnUpfWZ1bmN0aW9uIFJpdChsKXtYaCh2Zix0aGlzLEZmZSkuY2FsbCh0aGlzLGwpfWZ1bmN0aW9uIExpdCgpe3RoaXMuaG90Lmxp''@;'; put 'put ''c3RlbigpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckRyb3Bkb3duTWVudUhpZGUiLHRoaXMpfWZ1bmN0aW9uIE9pdChsKXtyZXR1cm4gZnVuY3Rpb24gRWl0KGwsYyl7cmV0dXJuIGwuZ2V0KFhoKGwsYykpfSh0UCx0aGlzKT9udWxsOmx9ZnVuY3Rpb24gUGl0KGwpe1lvKGwudGFyZ2V0LGVQ''@;'; put 'put ''KSYmUGZlKHRQLHRoaXMsITApfWZ1bmN0aW9uIE5mZShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gRml0KGwpe3ZhciBjPWZ1bmN0aW9uIE5pdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEp''@;'; put 'put ''e3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShs''@;'; put 'put ''KX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1uUC5TRVBBUkFUT1I9e25hbWU6''@;'; put 'put ''RXN9O2NvbnN0IFZpdD1jbGFzcyBIaXR7Y29uc3RydWN0b3IoYyl7TmZlKHRoaXMsImhvdCIsdm9pZCAwKSxOZmUodGhpcywib3B0aW9ucyIse30pLHRoaXMuaG90PWN9c2V0T3B0aW9ucyhjKXt0aGlzLm9wdGlvbnM9Y31nZXREYXRhKCl7Y29uc3R7c3RhcnRSb3c6YyxzdGFydENvbDphLGVu''@;'; put 'put ''ZFJvdzpkLGVuZENvbDpofT10aGlzLl9nZXREYXRhUmFuZ2UoKSxmPXRoaXMub3B0aW9ucyx2PVtdO3JldHVybiBnbyhjLGQsUz0+e2NvbnN0IFY9W107IWYuZXhwb3J0SGlkZGVuUm93cyYmdGhpcy5faXNIaWRkZW5Sb3coUyl8fChnbyhhLGgsUT0+eyFmLmV4cG9ydEhpZGRlbkNvbHVtbnMm''@;'; put 'put ''JnRoaXMuX2lzSGlkZGVuQ29sdW1uKFEpfHxWLnB1c2godGhpcy5ob3QuZ2V0RGF0YUF0Q2VsbChTLFEpKX0pLHYucHVzaChWKSl9KSx2fWdldFJvd0hlYWRlcnMoKXtjb25zdCBjPVtdO2lmKHRoaXMub3B0aW9ucy5yb3dIZWFkZXJzKXtjb25zdHtzdGFydFJvdzphLGVuZFJvdzpkfT10aGlz''@;'; put 'put ''Ll9nZXREYXRhUmFuZ2UoKSxoPXRoaXMuaG90LmdldFJvd0hlYWRlcigpO2dvKGEsZCxmPT57IXRoaXMub3B0aW9ucy5leHBvcnRIaWRkZW5Sb3dzJiZ0aGlzLl9pc0hpZGRlblJvdyhmKXx8Yy5wdXNoKGhbZl0pfSl9cmV0dXJuIGN9Z2V0Q29sdW1uSGVhZGVycygpe2NvbnN0IGM9W107aWYo''@;'; put 'put ''dGhpcy5vcHRpb25zLmNvbHVtbkhlYWRlcnMpe2NvbnN0e3N0YXJ0Q29sOmEsZW5kQ29sOmR9PXRoaXMuX2dldERhdGFSYW5nZSgpLGg9dGhpcy5ob3QuZ2V0Q29sSGVhZGVyKCk7Z28oYSxkLGY9PnshdGhpcy5vcHRpb25zLmV4cG9ydEhpZGRlbkNvbHVtbnMmJnRoaXMuX2lzSGlkZGVuQ29s''@;'; put 'put ''dW1uKGYpfHxjLnB1c2goaFtmXSl9KX1yZXR1cm4gY31fZ2V0RGF0YVJhbmdlKCl7Y29uc3QgYz10aGlzLmhvdC5jb3VudENvbHMoKS0xLGE9dGhpcy5ob3QuY291bnRSb3dzKCktMTtsZXRbZD0wLGg9MCxmPWEsdj1jXT10aGlzLm9wdGlvbnMucmFuZ2U7cmV0dXJuIGQ9TWF0aC5tYXgoZCww''@;'; put 'put ''KSxoPU1hdGgubWF4KGgsMCksZj1NYXRoLm1pbihmLGEpLHY9TWF0aC5taW4odixjKSx7c3RhcnRSb3c6ZCxzdGFydENvbDpoLGVuZFJvdzpmLGVuZENvbDp2fX1faXNIaWRkZW5Sb3coYyl7cmV0dXJuIHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmlzSGlkZGVuKHRoaXMuaG90LnRvUGh5c2lj''@;'; put 'put ''YWxSb3coYykpfV9pc0hpZGRlbkNvbHVtbihjKXtyZXR1cm4gdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuaXNIaWRkZW4odGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKSl9fTtmdW5jdGlvbiBIZmUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEJpdChsKXt2YXIgYz1mdW5jdGlvbiBq''@;'; put 'put ''aXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgQ0t7c3RhdGljIGdldCBERUZBVUxUX09QVElPTlMoKXtyZXR1cm57bWltZVR5cGU6InRleHQvcGxhaW4iLGZpbGVFeHRlbnNpb246InR4dCIsZmlsZW5hbWU6Ikhh''@;'; put 'put ''bmRzb250YWJsZSBbWVlZWV0tW01NXS1bRERdIixlbmNvZGluZzoidXRmLTgiLGJvbTohMSxjb2x1bW5IZWFkZXJzOiExLHJvd0hlYWRlcnM6ITEsZXhwb3J0SGlkZGVuQ29sdW1uczohMSxleHBvcnRIaWRkZW5Sb3dzOiExLHJhbmdlOltdfX1jb25zdHJ1Y3RvcihjLGEpe0hmZSh0aGlzLCJk''@;'; put 'put ''YXRhUHJvdmlkZXIiLHZvaWQgMCksSGZlKHRoaXMsIm9wdGlvbnMiLHZvaWQgMCksdGhpcy5kYXRhUHJvdmlkZXI9Yyx0aGlzLm9wdGlvbnM9dGhpcy5fbWVyZ2VPcHRpb25zKGEpLHRoaXMuZGF0YVByb3ZpZGVyLnNldE9wdGlvbnModGhpcy5vcHRpb25zKX1fbWVyZ2VPcHRpb25zKGMpe2xl''@;'; put 'put ''dCBhPUhoKHRoaXMuY29uc3RydWN0b3IuREVGQVVMVF9PUFRJT05TKTtjb25zdCBkPW5ldyBEYXRlO3JldHVybiBhPUZjKEhoKENLLkRFRkFVTFRfT1BUSU9OUyksYSksYT1GYyhhLGMpLGEuZmlsZW5hbWU9b1coYS5maWxlbmFtZSx7WVlZWTpkLmdldEZ1bGxZZWFyKCksTU06YCR7ZC5nZXRN''@;'; put 'put ''b250aCgpKzF9YC5wYWRTdGFydCgyLCIwIiksREQ6YCR7ZC5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCIwIil9KSxhfX1jb25zdCB6aXQ9Q0ssU0s9e2NzdjpjbGFzcyBXaXQgZXh0ZW5kcyB6aXR7c3RhdGljIGdldCBERUZBVUxUX09QVElPTlMoKXtyZXR1cm57bWltZVR5cGU6InRleHQvY3N2''@;'; put 'put ''IixmaWxlRXh0ZW5zaW9uOiJjc3YiLGJvbTohMCxjb2x1bW5EZWxpbWl0ZXI6IiwiLHJvd0RlbGltaXRlcjoiXHJcbiJ9fWV4cG9ydCgpe2NvbnN0IGM9dGhpcy5vcHRpb25zLGE9dGhpcy5kYXRhUHJvdmlkZXIuZ2V0RGF0YSgpO2xldCBkPXRoaXMuZGF0YVByb3ZpZGVyLmdldENvbHVtbkhl''@;'; put 'put ''YWRlcnMoKTtjb25zdCBoPWQubGVuZ3RoPjAsZj10aGlzLmRhdGFQcm92aWRlci5nZXRSb3dIZWFkZXJzKCksdj1mLmxlbmd0aD4wO2xldCBTPWMuYm9tPyJcdWZlZmYiOiIiO3JldHVybiBoJiYoZD14cyhkLFY9PnRoaXMuX2VzY2FwZUNlbGwoViwhMCkpLHYmJihTKz1jLmNvbHVtbkRlbGlt''@;'; put 'put ''aXRlciksUys9ZC5qb2luKGMuY29sdW1uRGVsaW1pdGVyKSxTKz1jLnJvd0RlbGltaXRlciksVG4oYSwoVixRKT0+e1E+MCYmKFMrPWMucm93RGVsaW1pdGVyKSx2JiYoUys9dGhpcy5fZXNjYXBlQ2VsbChmW1FdKStjLmNvbHVtbkRlbGltaXRlciksUys9Vi5tYXAoZGU9PnRoaXMuX2VzY2Fw''@;'; put 'put ''ZUNlbGwoZGUpKS5qb2luKGMuY29sdW1uRGVsaW1pdGVyKX0pLFN9X2VzY2FwZUNlbGwoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxkPWljKGMpO3JldHVybiIiIT09ZCYmKGF8fGQuaW5kZXhPZigiXHIiKT49MHx8ZC5p''@;'; put 'put ''bmRleE9mKCciJyk+PTB8fGQuaW5kZXhPZigiXG4iKT49MHx8ZC5pbmRleE9mKHRoaXMub3B0aW9ucy5jb2x1bW5EZWxpbWl0ZXIpPj0wKSYmKGQ9ZC5yZXBsYWNlKG5ldyBSZWdFeHAoJyInLCJnIiksJyIiJyksZD1gIiR7ZH0iYCksZH19fTtjbGFzcyBKaXQgZXh0ZW5kcyBkYXtzdGF0aWMg''@;'; put 'put ''Z2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4iZXhwb3J0RmlsZSJ9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMjQwfWlzRW5hYmxlZCgpe3JldHVybiEwfWV4cG9ydEFzU3RyaW5nKGMpe3JldHVybiB0aGlzLl9jcmVhdGVUeXBlRm9ybWF0dGVyKGMsYXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5leHBvcnQoKX1leHBvcnRBc0Jsb2IoYyl7cmV0dXJuIHRoaXMuX2NyZWF0ZUJsb2IodGhpcy5fY3JlYXRlVHlwZUZvcm1hdHRlcihjLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2Fy''@;'; put 'put ''Z3VtZW50c1sxXTp7fSkpfWRvd25sb2FkRmlsZShjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307Y29uc3R7cm9vdERvY3VtZW50OmQscm9vdFdpbmRvdzpofT10aGlzLmhvdCxmPXRoaXMuX2NyZWF0ZVR5cGVGb3JtYXR0''@;'; put 'put ''ZXIoYyxhKSx2PXRoaXMuX2NyZWF0ZUJsb2IoZiksUz1oLlVSTHx8aC53ZWJraXRVUkwsVj1kLmNyZWF0ZUVsZW1lbnQoImEiKSxRPWAke2Yub3B0aW9ucy5maWxlbmFtZX0uJHtmLm9wdGlvbnMuZmlsZUV4dGVuc2lvbn1gO2lmKHZvaWQgMCE9PVYuZG93bmxvYWQpe2NvbnN0IGRlPVMuY3Jl''@;'; put 'put ''YXRlT2JqZWN0VVJMKHYpO1Yuc3R5bGUuZGlzcGxheT0ibm9uZSIsVi5zZXRBdHRyaWJ1dGUoImhyZWYiLGRlKSxWLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLFEpLGQuYm9keS5hcHBlbmRDaGlsZChWKSxWLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoImNsaWNrIikpLGQuYm9keS5y''@;'; put 'put ''ZW1vdmVDaGlsZChWKSxzZXRUaW1lb3V0KCgpPT57Uy5yZXZva2VPYmplY3RVUkwoZGUpfSwxMDApfWVsc2UgbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2ImJm5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKHYsUSl9X2NyZWF0ZVR5cGVGb3JtYXR0ZXIoYyl7bGV0IGE9YXJndW1lbnRzLmxl''@;'; put 'put ''bmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFTS1tjXSl0aHJvdyBuZXcgRXJyb3IoYEV4cG9ydCBmb3JtYXQgdHlwZSAiJHtjfSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZnVuY3Rpb24gcWl0KGwsYyxhKXtyZXR1cm4iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU0tbbF0/bmV3IFNLW2xdKGMsYSk6bnVsbH0oYyxuZXcgVml0KHRoaXMuaG90KSxhKX1fY3JlYXRlQmxvYihjKXtsZXQgYT1udWxsO3JldHVybiB0eXBlb2YgQmxvYjwidSImJihhPW5ldyBCbG9iKFtjLmV4cG9ydCgpXSx7dHlwZTpgJHtjLm9wdGlvbnMubWltZVR5cGV9O2NoYXJz''@;'; put 'put ''ZXQ9JHtjLm9wdGlvbnMuZW5jb2Rpbmd9YH0pKSxhfX1mdW5jdGlvbiBHYihsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gUWl0KGwpe3ZhciBjPWZ1bmN0aW9uIGVvdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lm''@;'; put 'put ''KHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJp''@;'; put 'put ''bmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jbGFzcyBj''@;'; put 'put ''RXtjb25zdHJ1Y3RvcihjLGEpe2xldHtpZDpkLHN0YXRlbGVzczpoPSEwfT1hO0diKHRoaXMsImhvdCIsdm9pZCAwKSxHYih0aGlzLCJpZCIsdm9pZCAwKSxHYih0aGlzLCJlbGVtZW50cyIsW10pLEdiKHRoaXMsImhpZGRlbiIsITEpLEdiKHRoaXMsInN0YXRlSWQiLCIiKSxHYih0aGlzLCJz''@;'; put 'put ''dGF0ZSIsdm9pZCAwKSx0aGlzLmhvdD1jLHRoaXMuaWQ9ZCx0aGlzLnN0YXRlSWQ9YEZpbHRlcnMuY29tcG9uZW50LiR7dGhpcy5pZH1gLHRoaXMuc3RhdGU9aD9udWxsOnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMuc3RhdGVJZCxuZXcgWkwpfWdldEVsZW1l''@;'; put 'put ''bnRzKCl7cmV0dXJuIHRoaXMuZWxlbWVudHN9cmVzZXQoKXtUbih0aGlzLmVsZW1lbnRzLGM9PmMucmVzZXQoKSl9aGlkZSgpe3RoaXMuaGlkZGVuPSEwfXNob3coKXt0aGlzLmhpZGRlbj0hMX1pc0hpZGRlbigpe3JldHVybiBudWxsPT09dGhpcy5ob3R8fHRoaXMuaGlkZGVufXJlc3RvcmVT''@;'; put 'put ''dGF0ZShjKXt0aGlzLnN0YXRlJiZ0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGUuZ2V0VmFsdWVBdEluZGV4KGMpKX1zZXRTdGF0ZSgpe3Rocm93IG5ldyBFcnJvcigiVGhlIHN0YXRlIHNldHRpbmcgbG9naWMgaXMgbm90IGltcGxlbWVudGVkIil9c2F2ZVN0YXRlKGMpe3RoaXMuc3RhdGUmJnRo''@;'; put 'put ''aXMuc3RhdGUuc2V0VmFsdWVBdEluZGV4KGMsdGhpcy5nZXRTdGF0ZSgpKX1nZXRTdGF0ZSgpe3Rocm93IG5ldyBFcnJvcigiVGhlIHN0YXRlIGdhdGhlcmluZyBsb2dpYyBpcyBub3QgaW1wbGVtZW50ZWQiKX1kZXN0cm95KCl7dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rl''@;'; put 'put ''ck1hcCh0aGlzLnN0YXRlSWQpLHRoaXMuY2xlYXJMb2NhbEhvb2tzKCksVG4odGhpcy5lbGVtZW50cyxjPT5jLmRlc3Ryb3koKSksdGhpcy5zdGF0ZT1udWxsLHRoaXMuZWxlbWVudHM9bnVsbCx0aGlzLmhvdD1udWxsfX1ybChjRSxVMSk7Y29uc3QgdUU9e307ZnVuY3Rpb24gdDUobCxjKXtp''@;'; put 'put ''ZighdUVbbF0pdGhyb3cgRXJyb3IoYEZpbHRlciBjb25kaXRpb24gIiR7bH0iIGRvZXMgbm90IGV4aXN0LmApO2NvbnN0e2NvbmRpdGlvbjphLGRlc2NyaXB0b3I6ZH09dUVbbF07bGV0IGg9YztyZXR1cm4gZC5pbnB1dFZhbHVlc0RlY29yYXRvciYmKGg9ZC5pbnB1dFZhbHVlc0RlY29yYXRv''@;'; put 'put ''cihoKSksZnVuY3Rpb24oZil7cmV0dXJuIGEuYXBwbHkoZi5tZXRhLmluc3RhbmNlLFtdLmNvbmNhdChbZl0sW2hdKSl9fWZ1bmN0aW9uIF83KGwpe2lmKCF1RVtsXSl0aHJvdyBFcnJvcihgRmlsdGVyIGNvbmRpdGlvbiAiJHtsfSIgZG9lcyBub3QgZXhpc3QuYCk7cmV0dXJuIHVFW2xdLmRl''@;'; put 'put ''c2NyaXB0b3J9ZnVuY3Rpb24gSGMobCxjLGEpe2Eua2V5PWwsdUVbbF09e2NvbmRpdGlvbjpjLGRlc2NyaXB0b3I6YX19Y29uc3QgV3U9Im5vbmUiO0hjKFd1LGZ1bmN0aW9uIHRvdCgpe3JldHVybiEwfSx7bmFtZTpLTCxpbnB1dHNDb3VudDowLHNob3dPcGVyYXRvcnM6ITF9KTtjb25zdCBk''@;'; put 'put ''RT0iZW1wdHkiO0hjKGRFLGZ1bmN0aW9uIG5vdChsKXtyZXR1cm4gb2MobC52YWx1ZSl9LHtuYW1lOk0kLGlucHV0c0NvdW50OjAsc2hvd09wZXJhdG9yczohMH0pO2NvbnN0IHJQPSJub3RfZW1wdHkiO0hjKHJQLGZ1bmN0aW9uIHJvdChsLGMpe3JldHVybiF0NShkRSxjKShsKX0se25hbWU6''@;'; put 'put ''eCQsaW5wdXRzQ291bnQ6MCxzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgaEU9ImVxIjtIYyhoRSxmdW5jdGlvbiBpb3QobCxjKXtsZXRbYV09YztyZXR1cm4gaWMobC52YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UobC5tZXRhLmxvY2FsZSk9PT1pYyhhKX0se25hbWU6RSQsaW5wdXRzQ291bnQ6''@;'; put 'put ''MSxzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgaVA9Im5lcSI7SGMoaVAsZnVuY3Rpb24gb290KGwsYyl7cmV0dXJuIXQ1KGhFLGMpKGwpfSx7bmFtZTpUJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxIYygiZ3QiLGZ1bmN0aW9uIHNvdChsLGMpe2xldFthXT1jLGQ9YTtyZXR1''@;'; put 'put ''cm4ibnVtZXJpYyI9PT1sLm1ldGEudHlwZSYmKGQ9cGFyc2VGbG9hdChkLDEwKSksbC52YWx1ZT5kfSx7bmFtZTpSJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KSxIYygiZ3RlIixmdW5jdGlvbiBhb3QobCxjKXtsZXRbYV09YyxkPWE7cmV0dXJuIm51bWVyaWMiPT09bC5tZXRh''@;'; put 'put ''LnR5cGUmJihkPXBhcnNlRmxvYXQoZCwxMCkpLGwudmFsdWU+PWR9LHtuYW1lOkwkLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLEhjKCJsdCIsZnVuY3Rpb24gbG90KGwsYyl7bGV0W2FdPWMsZD1hO3JldHVybiJudW1lcmljIj09PWwubWV0YS50eXBlJiYoZD1wYXJzZUZsb2F0''@;'; put 'put ''KGQsMTApKSxsLnZhbHVlPGR9LHtuYW1lOk8kLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pLEhjKCJsdGUiLGZ1bmN0aW9uIGNvdChsLGMpe2xldFthXT1jLGQ9YTtyZXR1cm4ibnVtZXJpYyI9PT1sLm1ldGEudHlwZSYmKGQ9cGFyc2VGbG9hdChkLDEwKSksbC52YWx1ZTw9ZH0s''@;'; put 'put ''e25hbWU6UCQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgTUs9ImRhdGVfYWZ0ZXIiO0hjKE1LLGZ1bmN0aW9uIHVvdChsLGMpe2xldFthXT1jO2NvbnN0IGQ9YXMobC52YWx1ZSxsLm1ldGEuZGF0ZUZvcm1hdCksaD1hcyhhLGwubWV0YS5kYXRlRm9ybWF0KTtyZXR1''@;'; put 'put ''cm4hKCFkLmlzVmFsaWQoKXx8IWguaXNWYWxpZCgpKSYmZC5kaWZmKGgpPj0wfSx7bmFtZTpIJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCB4Sz0iZGF0ZV9iZWZvcmUiO0hjKHhLLGZ1bmN0aW9uIGRvdChsLGMpe2xldFthXT1jO2NvbnN0IGQ9YXMobC52YWx1ZSxs''@;'; put 'put ''Lm1ldGEuZGF0ZUZvcm1hdCksaD1hcyhhLGwubWV0YS5kYXRlRm9ybWF0KTtyZXR1cm4hKCFkLmlzVmFsaWQoKXx8IWguaXNWYWxpZCgpKSYmZC5kaWZmKGgpPD0wfSx7bmFtZTpWJCxpbnB1dHNDb3VudDoxLHNob3dPcGVyYXRvcnM6ITB9KTtjb25zdCBvUD0iYmV0d2VlbiI7SGMob1AsZnVu''@;'; put 'put ''Y3Rpb24gaG90KGwsYyl7bGV0W2EsZF09YyxoPWEsZj1kO2lmKCJudW1lcmljIj09PWwubWV0YS50eXBlKXtjb25zdCB2PXBhcnNlRmxvYXQoaCwxMCksUz1wYXJzZUZsb2F0KGYsMTApO2g9TWF0aC5taW4odixTKSxmPU1hdGgubWF4KHYsUyl9ZWxzZSBpZigiZGF0ZSI9PT1sLm1ldGEudHlw''@;'; put 'put ''ZSl7Y29uc3Qgdj10NSh4SyxbZl0pLFM9dDUoTUssW2hdKTtyZXR1cm4gdihsKSYmUyhsKX1yZXR1cm4gbC52YWx1ZT49aCYmbC52YWx1ZTw9Zn0se25hbWU6RiQsaW5wdXRzQ291bnQ6MixzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgVWZlPSJub3RfYmV0d2VlbiI7SGMoVWZlLGZ1bmN0aW9u''@;'; put 'put ''IGZvdChsLGMpe3JldHVybiF0NShvUCxjKShsKX0se25hbWU6TiQsaW5wdXRzQ291bnQ6MixzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgWmZlPSJiZWdpbnNfd2l0aCI7SGMoWmZlLGZ1bmN0aW9uIHBvdChsLGMpe2xldFthXT1jO3JldHVybiBpYyhsLnZhbHVlKS50b0xvY2FsZUxvd2VyQ2Fz''@;'; put 'put ''ZShsLm1ldGEubG9jYWxlKS5zdGFydHNXaXRoKGljKGEpKX0se25hbWU6ayQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSksSGMoImVuZHNfd2l0aCIsZnVuY3Rpb24gZ290KGwsYyl7bGV0W2FdPWM7cmV0dXJuIGljKGwudmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKGwubWV0YS5s''@;'; put 'put ''b2NhbGUpLmVuZHNXaXRoKGljKGEpKX0se25hbWU6QSQsaW5wdXRzQ291bnQ6MSxzaG93T3BlcmF0b3JzOiEwfSk7Y29uc3QgRUs9ImNvbnRhaW5zIjtIYyhFSyxmdW5jdGlvbiBtb3QobCxjKXtsZXRbYV09YztyZXR1cm4gaWMobC52YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UobC5tZXRhLmxv''@;'; put 'put ''Y2FsZSkuaW5kZXhPZihpYyhhKSk+PTB9LHtuYW1lOkQkLGlucHV0c0NvdW50OjEsc2hvd09wZXJhdG9yczohMH0pO2NvbnN0IFdmZT0ibm90X2NvbnRhaW5zIjtIYyhXZmUsZnVuY3Rpb24gdm90KGwsYyl7cmV0dXJuIXQ1KEVLLGMpKGwpfSx7bmFtZTpJJCxpbnB1dHNDb3VudDoxLHNob3dP''@;'; put 'put ''cGVyYXRvcnM6ITB9KTtjb25zdCBHZmU9ImRhdGVfdG9tb3Jyb3ciO0hjKEdmZSxmdW5jdGlvbiBfb3QobCl7Y29uc3QgYz1hcyhsLnZhbHVlLGwubWV0YS5kYXRlRm9ybWF0KTtyZXR1cm4hIWMuaXNWYWxpZCgpJiZjLmlzU2FtZShhcygpLnN1YnRyYWN0KC0xLCJkYXlzIikuc3RhcnRPZigi''@;'; put 'put ''ZGF5IiksImQiKX0se25hbWU6aiQsaW5wdXRzQ291bnQ6MH0pO2NvbnN0ICRmZT0iZGF0ZV90b2RheSI7SGMoJGZlLGZ1bmN0aW9uIGJvdChsKXtjb25zdCBjPWFzKGwudmFsdWUsbC5tZXRhLmRhdGVGb3JtYXQpO3JldHVybiEhYy5pc1ZhbGlkKCkmJmMuaXNTYW1lKGFzKCkuc3RhcnRPZigi''@;'; put 'put ''ZGF5IiksImQiKX0se25hbWU6QiQsaW5wdXRzQ291bnQ6MH0pO2NvbnN0IHFmZT0iZGF0ZV95ZXN0ZXJkYXkiO0hjKHFmZSxmdW5jdGlvbiB5b3QobCl7Y29uc3QgYz1hcyhsLnZhbHVlLGwubWV0YS5kYXRlRm9ybWF0KTtyZXR1cm4hIWMuaXNWYWxpZCgpJiZjLmlzU2FtZShhcygpLnN1YnRy''@;'; put 'put ''YWN0KDEsImRheXMiKS5zdGFydE9mKCJkYXkiKSwiZCIpfSx7bmFtZTp6JCxpbnB1dHNDb3VudDowfSk7Y29uc3QgWGZlPXtudW1lcmljOltXdSxFcyxkRSxyUCxFcyxoRSxpUCxFcywiZ3QiLCJndGUiLCJsdCIsImx0ZSIsb1AsVWZlXSx0ZXh0OltXdSxFcyxkRSxyUCxFcyxoRSxpUCxFcyxa''@;'; put 'put ''ZmUsImVuZHNfd2l0aCIsRXMsRUssV2ZlXSxkYXRlOltXdSxFcyxkRSxyUCxFcyxoRSxpUCxFcyx4SyxNSyxvUCxFcyxHZmUsJGZlLHFmZV19O2Z1bmN0aW9uIGZFKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBNb3QobCl7dmFyIGM9ZnVuY3Rpb24geG90KGwsYyl7aWYoIm9iamVjdCIhPXR5''@;'; put 'put ''cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJl''@;'; put 'put ''dHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxl''@;'; put 'put ''OiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IFRLPSJidWlsdCIsa0s9ImJ1aWxkaW5nIixKZmU9WyJjbGljayIsImlucHV0Iiwia2V5ZG93biIsImtleXByZXNzIiwia2V5dXAiLCJmb2N1cyIsImJsdXIiLCJjaGFuZ2UiXTtjbGFzcyBGZHtzdGF0aWMg''@;'; put 'put ''Z2V0IERFRkFVTFRTKCl7cmV0dXJuIEhoKHtjbGFzc05hbWU6IiIsdmFsdWU6IiIsdGFnTmFtZToiZGl2IixjaGlsZHJlbjpbXSx3cmFwSXQ6ITB9KX1jb25zdHJ1Y3RvcihjLGEpe2ZFKHRoaXMsImhvdCIsdm9pZCAwKSxmRSh0aGlzLCJldmVudE1hbmFnZXIiLG5ldyB6aCh0aGlzKSksZkUo''@;'; put 'put ''dGhpcywib3B0aW9ucyIsdm9pZCAwKSxmRSh0aGlzLCJfZWxlbWVudCIsdm9pZCAwKSxmRSh0aGlzLCJidWlsZFN0YXRlIix2b2lkIDApLHRoaXMuaG90PWMsdGhpcy5vcHRpb25zPUZjKEZkLkRFRkFVTFRTLGEpLHRoaXMuX2VsZW1lbnQ9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVs''@;'; put 'put ''ZW1lbnQodGhpcy5vcHRpb25zLndyYXBJdD8iZGl2Ijp0aGlzLm9wdGlvbnMudGFnTmFtZSl9c2V0VmFsdWUoYyl7dGhpcy5vcHRpb25zLnZhbHVlPWMsdGhpcy51cGRhdGUoKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLm9wdGlvbnMudmFsdWV9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5i''@;'; put 'put ''dWlsZFN0YXRlPT09a0s/dGhpcy5fZWxlbWVudDp0aGlzLmJ1aWxkU3RhdGU9PT1USz8odGhpcy51cGRhdGUoKSx0aGlzLl9lbGVtZW50KToodGhpcy5idWlsZFN0YXRlPWtLLHRoaXMuYnVpbGQoKSx0aGlzLmJ1aWxkU3RhdGU9VEssdGhpcy5fZWxlbWVudCl9aXNCdWlsdCgpe3JldHVybiB0''@;'; put 'put ''aGlzLmJ1aWxkU3RhdGU9PT1US310cmFuc2xhdGVJZlBvc3NpYmxlKGMpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmYy5zdGFydHNXaXRoKGMxKT90aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKGMpOmN9YnVpbGQoKXtjb25zdCBjPShhLGQpPT57dGhpcy5ldmVudE1hbmFnZXIuYWRk''@;'; put 'put ''RXZlbnRMaXN0ZW5lcihhLGQsaD0+dGhpcy5ydW5Mb2NhbEhvb2tzKGQsaCx0aGlzKSl9O2lmKHRoaXMuYnVpbGRTdGF0ZXx8KHRoaXMuYnVpbGRTdGF0ZT1rSyksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwhMCksdm9pZCAwIT09dGhpcy5vcHRpb25zLnRh''@;'; put 'put ''YkluZGV4JiZ0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMub3B0aW9ucy50YWJJbmRleCksdm9pZCAwIT09dGhpcy5vcHRpb25zLnJvbGUmJnRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIix0aGlzLm9wdGlvbnMucm9sZSksdGhpcy5vcHRpb25zLmNs''@;'; put 'put ''YXNzTmFtZSYmbWkodGhpcy5fZWxlbWVudCx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSx0aGlzLm9wdGlvbnMuY2hpbGRyZW4ubGVuZ3RoKVRuKHRoaXMub3B0aW9ucy5jaGlsZHJlbixhPT50aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGEuZWxlbWVudCkpO2Vsc2UgaWYodGhpcy5vcHRpb25z''@;'; put 'put ''LndyYXBJdCl7Y29uc3QgYT10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLm9wdGlvbnMudGFnTmFtZSk7YS5zZXRBdHRyaWJ1dGUoImRhdGEtaG90LWlucHV0IiwhMCksQ3ModGhpcy5vcHRpb25zLChkLGgpPT57dm9pZCAwIT09YVtoXSYmImNsYXNzTmFtZSIhPT1o''@;'; put 'put ''JiYidGFnTmFtZSIhPT1oJiYiY2hpbGRyZW4iIT09aCYmKGFbaF09dGhpcy50cmFuc2xhdGVJZlBvc3NpYmxlKGQpKX0pLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoYSksVG4oSmZlLGQ9PmMoYSxkKSl9ZWxzZSBUbihKZmUsYT0+Yyh0aGlzLl9lbGVtZW50LGEpKX11cGRhdGUoKXt9cmVz''@;'; put 'put ''ZXQoKXt0aGlzLm9wdGlvbnMudmFsdWU9IiIsdGhpcy51cGRhdGUoKX1zaG93KCl7dGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXk9IiJ9aGlkZSgpe3RoaXMuZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJub25lIn1mb2N1cygpe31kZXN0cm95KCl7dGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveSgp''@;'; put 'put ''LHRoaXMuZXZlbnRNYW5hZ2VyPW51bGwsdGhpcy5ob3Q9bnVsbCx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50PW51bGx9fWZ1bmN0aW9uIFFmZShsLGMpe2lmKGMuaGFzKGwp''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gc1AobCxjKXtyZXR1cm4gbC5nZXQoQUsobCxjKSl9ZnVuY3Rpb24gQUsobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXJsKEZkLFUxKTt2YXIgJGI9bmV3IFdlYWtNYXAsZTNlPW5ldyBXZWFrU2V0O2Ns''@;'; put 'put ''YXNzIG41IGV4dGVuZHMgRmR7c3RhdGljIGdldCBERUZBVUxUUygpe3JldHVybiBIaCh7cGxhY2Vob2xkZXI6IiIsdHlwZToidGV4dCIsdGFnTmFtZToiaW5wdXQiLHRhYkluZGV4Oi0xfSl9Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLEZjKG41LkRFRkFVTFRTLGEpKSxmdW5jdGlvbiBFb3Qo''@;'; put 'put ''bCxjKXtRZmUobCxjKSxjLmFkZChsKX0odGhpcyxlM2UpLGZ1bmN0aW9uIFRvdChsLGMsYSl7UWZlKGwsYyksYy5zZXQobCxhKX0odGhpcywkYix2b2lkIDApLHRoaXMucmVnaXN0ZXJIb29rcygpfXJlZ2lzdGVySG9va3MoKXt0aGlzLmFkZExvY2FsSG9vaygia2V5dXAiLGM9PkFLKGUzZSx0''@;'; put 'put ''aGlzLEFvdCkuY2FsbCh0aGlzLGMpKX1idWlsZCgpe3N1cGVyLmJ1aWxkKCk7Y29uc3QgYz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7KGZ1bmN0aW9uIGtvdChsLGMsYSl7bC5zZXQoQUsobCxjKSxhKX0pKCRiLHRoaXMsdGhpcy5fZWxlbWVudC5maXJzdENo''@;'; put 'put ''aWxkKSxtaSh0aGlzLl9lbGVtZW50LCJodFVJSW5wdXQiKSxtaShjLCJodFVJSW5wdXRJY29uIiksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChjKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZSgpe3RoaXMuaXNCdWlsdCgpJiYoc1AoJGIsdGhpcykudHlwZT10aGlzLm9wdGlvbnMudHlwZSxzUCgk''@;'; put 'put ''Yix0aGlzKS5wbGFjZWhvbGRlcj10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyKSxzUCgkYix0aGlzKS52YWx1ZT10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLnZhbHVlKSl9Zm9jdXMoKXt0aGlzLmlzQnVpbHQoKSYmc1AoJGIs''@;'; put 'put ''dGhpcykuZm9jdXMoKX19ZnVuY3Rpb24gQW90KGwpe3RoaXMub3B0aW9ucy52YWx1ZT1sLnRhcmdldC52YWx1ZX1mdW5jdGlvbiBwRShsLGMsYSl7dDNlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiB0M2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5p''@;'; put 'put ''dGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIHFiKGwsYyxhKXtyZXR1cm4gbC5zZXQoZ0UobCxjKSxhKSxhfWZ1bmN0aW9uIHVjKGwsYyl7cmV0dXJuIGwuZ2V0KGdFKGwsYykpfWZ1bmN0aW9uIGdFKGwsYyxhKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIga3U9bmV3IFdlYWtNYXAsYVA9bmV3IFdlYWtNYXAs''@;'; put 'put ''bFA9bmV3IFdlYWtNYXAsREs9bmV3IFdlYWtNYXAsY1A9bmV3IFdlYWtNYXAsdVA9bmV3IFdlYWtTZXQ7Y2xhc3MgbUUgZXh0ZW5kcyBGZHtzdGF0aWMgZ2V0IERFRkFVTFRTKCl7cmV0dXJuIEhoKHtjbGFzc05hbWU6Imh0VUlTZWxlY3QiLHdyYXBJdDohMSx0YWJJbmRleDotMX0pfWNvbnN0''@;'; put 'put ''cnVjdG9yKGMsYSl7c3VwZXIoYyxGYyhtRS5ERUZBVUxUUyxhKSksZnVuY3Rpb24gRG90KGwsYyl7dDNlKGwsYyksYy5hZGQobCl9KHRoaXMsdVApLHBFKHRoaXMsa3UsbnVsbCkscEUodGhpcyxhUCxbXSkscEUodGhpcyxsUCx2b2lkIDApLHBFKHRoaXMsREssdm9pZCAwKSxwRSh0aGlzLGNQ''@;'; put 'put ''LHZvaWQgMCksdGhpcy5yZWdpc3Rlckhvb2tzKCl9Z2V0TWVudSgpe3JldHVybiB1YyhrdSx0aGlzKX1yZWdpc3Rlckhvb2tzKCl7dGhpcy5hZGRMb2NhbEhvb2soImNsaWNrIiwoKT0+Z0UodVAsdGhpcyxMb3QpLmNhbGwodGhpcykpfXNldEl0ZW1zKGMpe3FiKGFQLHRoaXMsdGhpcy50cmFu''@;'; put 'put ''c2xhdGVOYW1lcyhjKSksdWMoa3UsdGhpcykmJnVjKGt1LHRoaXMpLnNldE1lbnVJdGVtcyh1YyhhUCx0aGlzKSl9dHJhbnNsYXRlTmFtZXMoYyl7cmV0dXJuIFRuKGMsYT0+e2EubmFtZT10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUoYS5uYW1lKX0pLGN9YnVpbGQoKXtzdXBlci5idWlsZCgp''@;'; put 'put ''LHFiKGt1LHRoaXMsbmV3IGpiKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0U2VsZWN0VUkgaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUiLGtlZXBJblZpZXdwb3J0OiExLHN0YW5kYWxvbmU6ITAsY29udGFpbmVyOnRoaXMub3B0aW9ucy5tZW51Q29udGFpbmVyfSkpLHVjKGt1LHRoaXMpLnNldE1l''@;'; put 'put ''bnVJdGVtcyh1YyhhUCx0aGlzKSk7Y29uc3QgYz1uZXcgRmQodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdENhcHRpb24ifSksYT1uZXcgRmQodGhpcy5ob3Qse2NsYXNzTmFtZToiaHRVSVNlbGVjdERyb3Bkb3duIn0pO3FiKGxQLHRoaXMsYykscWIoREssdGhpcyxjLmVsZW1lbnQp''@;'; put 'put ''LHFiKGNQLHRoaXMsYSksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5hcmlhVGFncyYmKFZvKGEuZWxlbWVudCxbTTQoKV0pLFZvKHRoaXMuX2VsZW1lbnQsW1sicm9sZSIsImxpc3Rib3giXV0pKSxUbihbYyxhXSxkPT50aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGQuZWxlbWVudCkpLHVjKGt1''@;'; put 'put ''LHRoaXMpLmFkZExvY2FsSG9vaygic2VsZWN0IixkPT5nRSh1UCx0aGlzLElvdCkuY2FsbCh0aGlzLGQpKSx1YyhrdSx0aGlzKS5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLCgpPT5nRSh1UCx0aGlzLFJvdCkuY2FsbCh0aGlzKSksdGhpcy51cGRhdGUoKX11cGRhdGUoKXtpZighdGhpcy5p''@;'; put 'put ''c0J1aWx0KCkpcmV0dXJuO2xldCBjO2M9dGhpcy5vcHRpb25zLnZhbHVlP3RoaXMub3B0aW9ucy52YWx1ZS5uYW1lOnVjKGt1LHRoaXMpLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEtMKSx1YyhESyx0aGlzKS50ZXh0Q29udGVudD1jLHN1cGVyLnVwZGF0ZSgpfW9wZW5PcHRpb25zKCl7Y29u''@;'; put 'put ''c3QgYz10aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dWMoa3UsdGhpcykmJih1YyhrdSx0aGlzKS5vcGVuKCksdWMoa3UsdGhpcykuc2V0UG9zaXRpb24oe2xlZnQ6dGhpcy5ob3QuaXNMdHIoKT9jLmxlZnQtNTpjLmxlZnQtMzEsdG9wOmMudG9wLTEsd2lkdGg6Yy53aWR0''@;'; put 'put ''aCxoZWlnaHQ6Yy5oZWlnaHR9KSx1YyhrdSx0aGlzKS5nZXROYXZpZ2F0b3IoKS50b0ZpcnN0SXRlbSgpLHVjKGt1LHRoaXMpLmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpLmFkZEN1c3RvbVNob3J0Y3V0cyhbe2tleXM6W1siVGFiIl0sWyJTaGlmdCIsIlRhYiJdXSxjYWxsYmFjazphPT57''@;'; put 'put ''dGhpcy5jbG9zZU9wdGlvbnMoKSx0aGlzLnJ1bkxvY2FsSG9va3MoInRhYktleWRvd24iLGEpfX0se2tleXM6W1siQ29udHJvbC9NZXRhIiwiQSJdXSxjYWxsYmFjazooKT0+ITF9XSkpfWNsb3NlT3B0aW9ucygpe3VjKGt1LHRoaXMpJiZ1YyhrdSx0aGlzKS5jbG9zZSgpfWZvY3VzKCl7dGhp''@;'; put 'put ''cy5pc0J1aWx0KCkmJnRoaXMuZWxlbWVudC5mb2N1cygpfWRlc3Ryb3koKXt1YyhrdSx0aGlzKSYmKHVjKGt1LHRoaXMpLmRlc3Ryb3koKSxxYihrdSx0aGlzLG51bGwpKSx1YyhsUCx0aGlzKSYmdWMobFAsdGhpcykuZGVzdHJveSgpLHVjKGNQLHRoaXMpJiZ1YyhjUCx0aGlzKS5kZXN0cm95''@;'; put 'put ''KCksc3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBJb3QobCl7bC5uYW1lIT09RXMmJih0aGlzLm9wdGlvbnMudmFsdWU9bCx0aGlzLnVwZGF0ZSgpLHRoaXMucnVuTG9jYWxIb29rcygic2VsZWN0Iix0aGlzLm9wdGlvbnMudmFsdWUpKX1mdW5jdGlvbiBSb3QoKXt0aGlzLnJ1bkxvY2FsSG9v''@;'; put 'put ''a3MoImFmdGVyQ2xvc2UiKX1mdW5jdGlvbiBMb3QoKXt0aGlzLm9wZW5PcHRpb25zKCl9ZnVuY3Rpb24gbjNlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBGb3QobCl7dmFyIGM9ZnVuY3Rpb24gTm90KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5''@;'; put 'put ''bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1''@;'; put 'put ''cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZToh''@;'; put 'put ''MH0pOmxbY109YSxsfWZ1bmN0aW9uIHIzZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2Jq''@;'; put 'put ''ZWN0Iil9dmFyIElLPW5ldyBXZWFrU2V0O2NsYXNzIFJLIGV4dGVuZHMgY0V7Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLHtpZDphLmlkLHN0YXRlbGVzczohMX0pLGZ1bmN0aW9uIE9vdChsLGMpeyhmdW5jdGlvbiBQb3QobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''YW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX0odGhpcyxJSyksbjNlKHRoaXMsIm5hbWUiLCIiKSxuM2UodGhpcywiYWRkU2VwYXJhdG9yIiwhMSksdGhpcy5uYW1lPWEubmFtZSx0aGlzLmFkZFNl''@;'; put 'put ''cGFyYXRvcj1hLmFkZFNlcGFyYXRvcix0aGlzLmVsZW1lbnRzLnB1c2gobmV3IG1FKHRoaXMuaG90LHttZW51Q29udGFpbmVyOmEubWVudUNvbnRhaW5lcn0pKSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IG41KHRoaXMuaG90LHtwbGFjZWhvbGRlcjpYJH0pKSx0aGlzLmVsZW1lbnRzLnB1c2go''@;'; put 'put ''bmV3IG41KHRoaXMuaG90LHtwbGFjZWhvbGRlcjpKJH0pKSx0aGlzLnJlZ2lzdGVySG9va3MoKX1yZWdpc3Rlckhvb2tzKCl7dGhpcy5nZXRTZWxlY3RFbGVtZW50KCkuYWRkTG9jYWxIb29rKCJzZWxlY3QiLGM9PnIzZShJSyx0aGlzLEhvdCkuY2FsbCh0aGlzLGMpKS5hZGRMb2NhbEhvb2so''@;'; put 'put ''ImFmdGVyQ2xvc2UiLCgpPT50aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xvc2UiKSkuYWRkTG9jYWxIb29rKCJ0YWJLZXlkb3duIixjPT50aGlzLnJ1bkxvY2FsSG9va3MoInNlbGVjdFRhYktleWRvd24iLGMpKSxUbih0aGlzLmdldElucHV0RWxlbWVudHMoKSxjPT57Yy5hZGRMb2NhbEhv''@;'; put 'put ''b2soImtleWRvd24iLGE9PnIzZShJSyx0aGlzLFZvdCkuY2FsbCh0aGlzLGEpKX0pfXNldFN0YXRlKGMpe2lmKHRoaXMucmVzZXQoKSwhYylyZXR1cm47Y29uc3QgYT1IaChjLmNvbW1hbmQpO2EubmFtZS5zdGFydHNXaXRoKHNjKSYmKGEubmFtZT10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhy''@;'; put 'put ''YXNlKGEubmFtZSkpLHRoaXMuZ2V0U2VsZWN0RWxlbWVudCgpLnNldFZhbHVlKGEpLFRuKGMuYXJncywoZCxoKT0+e2lmKGg+YS5pbnB1dHNDb3VudC0xKXJldHVybiExO2NvbnN0IGY9dGhpcy5nZXRJbnB1dEVsZW1lbnQoaCk7Zi5zZXRWYWx1ZShkKSxmW2EuaW5wdXRzQ291bnQ+aD8ic2hv''@;'; put 'put ''dyI6ImhpZGUiXSgpLGh8fHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9PmYuZm9jdXMoKSwxMCl9KX1nZXRTdGF0ZSgpe2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RFbGVtZW50KCkuZ2V0VmFsdWUoKXx8XzcoV3UpLGE9W107cmV0dXJuIFRuKHRoaXMuZ2V0SW5wdXRFbGVtZW50cygpLChk''@;'; put 'put ''LGgpPT57Yy5pbnB1dHNDb3VudD5oJiZhLnB1c2goZC5nZXRWYWx1ZSgpKX0pLHtjb21tYW5kOmMsYXJnczphfX11cGRhdGVTdGF0ZShjLGEpe2NvbnN0IGQ9XzcoYz9jLm5hbWU6V3UpO3RoaXMuc3RhdGUuc2V0VmFsdWVBdEluZGV4KGEse2NvbW1hbmQ6ZCxhcmdzOmM/Yy5hcmdzOltdfSks''@;'; put 'put ''Y3x8VG4odGhpcy5nZXRJbnB1dEVsZW1lbnRzKCksaD0+aC5zZXRWYWx1ZShudWxsKSl9Z2V0U2VsZWN0RWxlbWVudCgpe3JldHVybiB0aGlzLmVsZW1lbnRzLmZpbHRlcihjPT5jIGluc3RhbmNlb2YgbUUpWzBdfWdldElucHV0RWxlbWVudCgpe2xldCBjPWFyZ3VtZW50cy5sZW5ndGg+MCYm''@;'; put 'put ''dm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudHMoKVtjXX1nZXRJbnB1dEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGM9PmMgaW5zdGFuY2VvZiBuNSl9Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0''@;'; put 'put ''dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxlU2VsZWN0aW9uOiEwLGhpZGRlbjooKT0+dGhpcy5pc0hpZGRlbigpLHJlbmRlcmVyOihjLGEsZCxoLGYsdik9PnttaShhLnBhcmVudE5vZGUsImh0RmlsdGVyc01lbnVDb25kaXRpb24iKSx0aGlzLmFk''@;'; put 'put ''ZFNlcGFyYXRvciYmbWkoYS5wYXJlbnROb2RlLCJib3JkZXIiKTtjb25zdCBTPXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbWkoUywiaHRGaWx0ZXJzTWVudUxhYmVsIiksUy50ZXh0Q29udGVudD12LGEuYXBwZW5kQ2hpbGQoUyksVG4odGhpcy5l''@;'; put 'put ''bGVtZW50cyxWPT5hLmFwcGVuZENoaWxkKFYuZWxlbWVudCkpLGF9fX1yZXNldCgpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0UGx1Z2luKCJmaWx0ZXJzIikuZ2V0U2VsZWN0ZWRDb2x1bW4oKTtsZXQgYT1bXzcoV3UpXTtpZihudWxsIT09Yyl7Y29uc3R7dmlzdWFsSW5kZXg6ZH09YzthPWZ1bmN0''@;'; put 'put ''aW9uIFNvdChsKXtjb25zdCBjPVtdO2xldCBhPWw7cmV0dXJuIFhmZVthXXx8KGE9InRleHQiKSxUbihYZmVbYV0sZD0+e2xldCBoO2g9ZD09PUVzP3tuYW1lOkVzfTpIaChfNyhkKSksYy5wdXNoKGgpfSksY30odGhpcy5ob3QuZ2V0RGF0YVR5cGUoMCxkLHRoaXMuaG90LmNvdW50Um93cygp''@;'; put 'put ''LGQpKX1Ubih0aGlzLmdldElucHV0RWxlbWVudHMoKSxkPT5kLmhpZGUoKSksdGhpcy5nZXRTZWxlY3RFbGVtZW50KCkuc2V0SXRlbXMoYSksc3VwZXIucmVzZXQoKSx0aGlzLmdldFNlbGVjdEVsZW1lbnQoKS5zZXRWYWx1ZShhWzBdKX19ZnVuY3Rpb24gSG90KGwpe1RuKHRoaXMuZ2V0SW5w''@;'; put 'put ''dXRFbGVtZW50cygpLChjLGEpPT57Y1tsLmlucHV0c0NvdW50PmE/InNob3ciOiJoaWRlIl0oKSwwPT09YSYmdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+Yy5mb2N1cygpLDEwKX0pLHRoaXMucnVuTG9jYWxIb29rcygiY2hhbmdlIixsKX1mdW5jdGlvbiBWb3QobCl7YWIobC5rZXlD''@;'; put 'put ''b2RlLCJFU0NBUEUiKSYmKHRoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIiksamgobCkpfWNvbnN0IHZFPXt9O2Z1bmN0aW9uIGpvdChsKXtyZXR1cm4gdkVbbF0ubmFtZX1mdW5jdGlvbiBMSyhsLGMsYSl7dkVbbF09e25hbWU6YyxmdW5jOmF9fWNvbnN0IHI1PSJjb25qdW5jdGlvbiI7TEso''@;'; put 'put ''cjUsWSQsZnVuY3Rpb24gVW90KGwsYyl7cmV0dXJuIGwuZXZlcnkoYT0+YS5mdW5jKGMpKX0pO2NvbnN0IGRQPSJkaXNqdW5jdGlvbiI7TEsoZFAsWEwsZnVuY3Rpb24gWW90KGwsYyl7cmV0dXJuIGwuc29tZShhPT5hLmZ1bmMoYykpfSk7Y29uc3QgT0s9ImRpc2p1bmN0aW9uV2l0aEV4dHJh''@;'; put 'put ''Q29uZGl0aW9uIjtmdW5jdGlvbiBpM2UobCxjLGEpeyhmdW5jdGlvbiAkb3QobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEp''@;'; put 'put ''fWZ1bmN0aW9uIF9FKGwsYyl7cmV0dXJuIGwuZ2V0KHMzZShsLGMpKX1mdW5jdGlvbiBvM2UobCxjLGEpe3JldHVybiBsLnNldChzM2UobCxjKSxhKSxhfWZ1bmN0aW9uIHMzZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9TEsoT0ssWEwsZnVuY3Rpb24gR290KGwsYyl7aWYobC5sZW5ndGg8Myl0aHJvdyBFcnJvcigiT3BlcmF0aW9uIGRvZXNuJ3Qgd29yayBvbiBsZXNz''@;'; put 'put ''IHRoZW4gdGhyZWUgY29uZGl0aW9ucy4iKTtyZXR1cm4gbC5zbGljZSgwLGwubGVuZ3RoLTEpLnNvbWUoYT0+YS5mdW5jKGMpKSYmbFtsLmxlbmd0aC0xXS5mdW5jKGMpfSk7dmFyIEtiPW5ldyBXZWFrTWFwLFBLPW5ldyBXZWFrTWFwO2NsYXNzIGhQIGV4dGVuZHMgRmR7c3RhdGljIGdldCBE''@;'; put 'put ''RUZBVUxUUygpe3JldHVybiBIaCh7dHlwZToicmFkaW8iLHRhZ05hbWU6ImlucHV0IixjbGFzc05hbWU6Imh0VUlSYWRpbyIsbGFiZWw6e319KX1jb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMsRmMoaFAuREVGQVVMVFMsYSkpLGkzZSh0aGlzLEtiLHZvaWQgMCksaTNlKHRoaXMsUEssdm9pZCAw''@;'; put 'put ''KX1idWlsZCgpe3N1cGVyLmJ1aWxkKCk7Y29uc3QgYz10aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTtjLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMubGFiZWwudGV4dENvbnRlbnQpLGMuaHRtbEZvcj10aGlzLnRy''@;'; put 'put ''YW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLmxhYmVsLmh0bWxGb3IpLG8zZShQSyx0aGlzLGMpLG8zZShLYix0aGlzLHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCksX0UoS2IsdGhpcykuY2hlY2tlZD10aGlzLm9wdGlvbnMuY2hlY2tlZCx0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk''@;'; put 'put ''KGMpLHRoaXMudXBkYXRlKCl9dXBkYXRlKCl7dGhpcy5pc0J1aWx0KCkmJihfRShQSyx0aGlzKS50ZXh0Q29udGVudD10aGlzLnRyYW5zbGF0ZUlmUG9zc2libGUodGhpcy5vcHRpb25zLmxhYmVsLnRleHRDb250ZW50KSl9aXNDaGVja2VkKCl7cmV0dXJuISF0aGlzLmlzQnVpbHQoKSYmX0Uo''@;'; put 'put ''S2IsdGhpcykuY2hlY2tlZH1zZXRDaGVja2VkKCl7bGV0IGM9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXTt0aGlzLmlzQnVpbHQoKSYmKF9FKEtiLHRoaXMpLmNoZWNrZWQ9Yyl9Zm9jdXMoKXt0aGlzLmlzQnVpbHQoKSYmX0UoS2Is''@;'; put 'put ''dGhpcykuZm9jdXMoKX19dmFyIGwzZT1uZXcgV2Vha1NldDtjbGFzcyB0c3QgZXh0ZW5kcyBjRXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMse2lkOmEuaWQsc3RhdGVsZXNzOiExfSksZnVuY3Rpb24gcW90KGwsYyl7KGZ1bmN0aW9uIEtvdChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSh0aGlzLGwzZSksZnVuY3Rpb24gWG90KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBKb3QobCl7dmFyIGM9ZnVuY3Rpb24gUW90''@;'; put 'put ''KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''QEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGws''@;'; put 'put ''Yyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJuYW1lIiwiIiksdGhpcy5uYW1lPWEubmFtZSx0aGlzLmJ1aWxkT3BlcmF0b3JzRWxlbWVudCgpfWdldE1lbnVJdGVtRGVzY3JpcHRvcigpe3JldHVybntrZXk6dGhp''@;'; put 'put ''cy5pZCxuYW1lOnRoaXMubmFtZSxpc0NvbW1hbmQ6ITEsZGlzYWJsZVNlbGVjdGlvbjohMCxoaWRkZW46KCk9PnRoaXMuaXNIaWRkZW4oKSxyZW5kZXJlcjooYyxhKT0+KG1pKGEucGFyZW50Tm9kZSwiaHRGaWx0ZXJzTWVudU9wZXJhdG9ycyIpLFRuKHRoaXMuZWxlbWVudHMsZD0+YS5hcHBl''@;'; put 'put ''bmRDaGlsZChkLmVsZW1lbnQpKSxhKX19YnVpbGRPcGVyYXRvcnNFbGVtZW50KCl7Y29uc3QgYz1bcjUsZFBdO1RuKGMsYT0+e2NvbnN0IGQ9bmV3IGhQKHRoaXMuaG90LHtuYW1lOiJvcGVyYXRvciIsbGFiZWw6e2h0bWxGb3I6YSx0ZXh0Q29udGVudDpqb3QoYSl9LHZhbHVlOmEsY2hlY2tl''@;'; put 'put ''ZDphPT09Y1swXSxpZDphfSk7ZC5hZGRMb2NhbEhvb2soImNoYW5nZSIsaD0+ZnVuY3Rpb24gZXN0KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVs''@;'; put 'put ''ZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX0obDNlLHRoaXMsbnN0KS5jYWxsKHRoaXMsaCkpLHRoaXMuZWxlbWVudHMucHVzaChkKX0pfXNldENoZWNrZWQoYyl7aWYodGhpcy5lbGVtZW50cy5sZW5ndGg8Yyl0aHJvdyBFcnJvcihOYWBSYWRpbyBidXR0b24gd2l0aCBp''@;'; put 'put ''bmRleCAke2N9IGRvZXNuJ3QgZXhpc3QuYCk7VG4odGhpcy5lbGVtZW50cywoYSxkKT0+e2Euc2V0Q2hlY2tlZChkPT09Yyl9KX1nZXRBY3RpdmVPcGVyYXRpb25JZCgpe2NvbnN0IGM9dGhpcy5lbGVtZW50cy5maW5kKGE9PmEgaW5zdGFuY2VvZiBoUCYmYS5pc0NoZWNrZWQoKSk7cmV0dXJu''@;'; put 'put ''IGM/Yy5nZXRWYWx1ZSgpOnI1fWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3BlcmF0aW9uSWQoKX1zZXRTdGF0ZShjKXt0aGlzLnJlc2V0KCksYyYmdGhpcy5nZXRBY3RpdmVPcGVyYXRpb25JZCgpIT09YyYmVG4odGhpcy5lbGVtZW50cyxhPT57YS5zZXRDaGVja2VkKGEuZ2V0''@;'; put 'put ''VmFsdWUoKT09PWMpfSl9dXBkYXRlU3RhdGUoKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06cjU7ZD09PU9LJiYoZD1kUCksdGhpcy5zdGF0ZS5zZXRWYWx1ZUF0SW5kZXgoYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sx''@;'; put 'put ''XTp2b2lkIDAsZCl9cmVzZXQoKXt0aGlzLnNldENoZWNrZWQoMCl9fWZ1bmN0aW9uIG5zdChsKXt0aGlzLnNldFN0YXRlKGwudGFyZ2V0LnZhbHVlKX1mdW5jdGlvbiBpc3QobCxjKXtsZXQgYT1sO3JldHVybiIiPT09YSYmKGE9YCgke2N9KWApLGF9UjFlKCk7Y29uc3QgRks9bmV3IFNldChb''@;'; put 'put ''MV0pLmhhcygxKSxvc3Q9RksmJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5mcm9tO2Z1bmN0aW9uIGJFKGwpe2xldCBjPWw7cmV0dXJuIEZLJiYoYz1uZXcgU2V0KGMpKSxmdW5jdGlvbihhKXtsZXQgZDtyZXR1cm4gZD1GSz9jLmhhcyhhKTohIX5jLmluZGV4T2YoYSksZH19ZnVuY3Rpb24g''@;'; put 'put ''YzNlKGwpe3JldHVybiBsPz8iIn1mdW5jdGlvbiBOSyhsKXtsZXQgYz1sO3JldHVybiBjPW9zdD9BcnJheS5mcm9tKG5ldyBTZXQoYykpOlFZKGMpLGM9Yy5zb3J0KChhLGQpPT4ibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgZD9hLWQ6YT09PWQ/MDphPmQ/MTotMSksY31m''@;'; put 'put ''dW5jdGlvbiB1M2UobCxjLGEsZCl7Y29uc3QgaD1bXSxmPWw9PT1jO2xldCB2O3JldHVybiBmfHwodj1iRShjKSksVG4obCxTPT57bGV0IFY9ITE7KGZ8fHYoUykpJiYoVj0hMCk7Y29uc3QgUT17Y2hlY2tlZDpWLHZhbHVlOlMsdmlzdWFsVmFsdWU6aXN0KFMsYSl9O2QmJmQoUSksaC5wdXNo''@;'; put 'put ''KFEpfSksaH1mdW5jdGlvbiBISyhsLGMpe3JldHVybiBsLmdldChkM2UobCxjKSl9ZnVuY3Rpb24gZDNlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRl''@;'; put 'put ''IGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgeUU9bmV3IFdlYWtNYXA7Y2xhc3Mgd0UgZXh0ZW5kcyBGZHtzdGF0aWMgZ2V0IERFRkFVTFRTKCl7cmV0dXJuIEhoKHtocmVmOiIjIix0YWdOYW1lOiJhIix0YWJJbmRleDotMSxyb2xlOiJidXR0b24ifSl9Y29u''@;'; put 'put ''c3RydWN0b3IoYyxhKXtzdXBlcihjLEZjKHdFLkRFRkFVTFRTLGEpKSxmdW5jdGlvbiBzc3QobCxjLGEpeyhmdW5jdGlvbiBhc3QobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9u''@;'; put 'put ''IGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfSh0aGlzLHlFLHZvaWQgMCl9YnVpbGQoKXtzdXBlci5idWlsZCgpLGZ1bmN0aW9uIGxzdChsLGMsYSl7bC5zZXQoZDNlKGwsYyksYSl9KHlFLHRoaXMsdGhpcy5fZWxlbWVudC5maXJzdENoaWxkKX11cGRhdGUoKXt0aGlzLmlzQnVpbHQo''@;'; put 'put ''KSYmKEhLKHlFLHRoaXMpLnRleHRDb250ZW50PXRoaXMudHJhbnNsYXRlSWZQb3NzaWJsZSh0aGlzLm9wdGlvbnMudGV4dENvbnRlbnQpKX1mb2N1cygpe3RoaXMuaXNCdWlsdCgpJiZISyh5RSx0aGlzKS5mb2N1cygpfWFjdGl2YXRlKCl7SEsoeUUsdGhpcykuY2xpY2soKX19ZnVuY3Rpb24g''@;'; put 'put ''WGIobCxjLGEpe2gzZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gaDNlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBjcyhsLGMpe3Jl''@;'; put 'put ''dHVybiBsLmdldChKYihsLGMpKX1mdW5jdGlvbiBfZihsLGMsYSl7cmV0dXJuIGwuc2V0KEpiKGwsYyksYSksYX1mdW5jdGlvbiBKYihsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9Y29uc3QgZjNlPSJtdWx0aXBsZVNlbGVjdC5pdGVtQm94Ijt2YXIgYmY9bmV3IFdlYWtNYXAsR2w9bmV3IFdlYWtNYXAsVks9bmV3IFdlYWtNYXAsVTQ9bmV3IFdlYWtNYXAsbzU9bmV3IFdl''@;'; put 'put ''YWtNYXAsczU9bmV3IFdlYWtNYXAsQ0U9bmV3IFdlYWtTZXQ7Y2xhc3MgU0UgZXh0ZW5kcyBGZHtzdGF0aWMgZ2V0IERFRkFVTFRTKCl7cmV0dXJuIEhoKHtjbGFzc05hbWU6Imh0VUlNdWx0aXBsZVNlbGVjdCIsdmFsdWU6W119KX1jb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMsRmMoU0UuREVG''@;'; put 'put ''QVVMVFMsYSkpLGZ1bmN0aW9uIGNzdChsLGMpe2gzZShsLGMpLGMuYWRkKGwpfSh0aGlzLENFKSxYYih0aGlzLGJmLFtdKSxYYih0aGlzLEdsLHZvaWQgMCksWGIodGhpcyxWSyx2b2lkIDApLFhiKHRoaXMsVTQsdm9pZCAwKSxYYih0aGlzLG81LHZvaWQgMCksWGIodGhpcyxzNSx2b2lkIDAp''@;'; put 'put ''LF9mKFU0LHRoaXMsbmV3IG41KHRoaXMuaG90LHtwbGFjZWhvbGRlcjpLJCxjbGFzc05hbWU6Imh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCJ9KSksX2YobzUsdGhpcyxuZXcgd0UodGhpcy5ob3Qse3RleHRDb250ZW50OlckLGNsYXNzTmFtZToiaHRVSVNlbGVjdEFsbCJ9KSksX2YoczUsdGhp''@;'; put 'put ''cyxuZXcgd0UodGhpcy5ob3Qse3RleHRDb250ZW50OkckLGNsYXNzTmFtZToiaHRVSUNsZWFyQWxsIn0pKSx0aGlzLnJlZ2lzdGVySG9va3MoKX1nZXRJdGVtc0JveCgpe3JldHVybiBjcyhHbCx0aGlzKX1yZWdpc3Rlckhvb2tzKCl7Y3MoVTQsdGhpcykuYWRkTG9jYWxIb29rKCJrZXlkb3du''@;'; put 'put ''IixjPT5KYihDRSx0aGlzLGRzdCkuY2FsbCh0aGlzLGMpKSxjcyhVNCx0aGlzKS5hZGRMb2NhbEhvb2soImlucHV0IixjPT5KYihDRSx0aGlzLHVzdCkuY2FsbCh0aGlzLGMpKSxjcyhvNSx0aGlzKS5hZGRMb2NhbEhvb2soImNsaWNrIixjPT5KYihDRSx0aGlzLGhzdCkuY2FsbCh0aGlzLGMp''@;'; put 'put ''KSxjcyhzNSx0aGlzKS5hZGRMb2NhbEhvb2soImNsaWNrIixjPT5KYihDRSx0aGlzLGZzdCkuY2FsbCh0aGlzLGMpKX1zZXRJdGVtcyhjKXtfZihiZix0aGlzLGMpLGNzKEdsLHRoaXMpJiZjcyhHbCx0aGlzKS5sb2FkRGF0YShjcyhiZix0aGlzKSl9c2V0TG9jYWxlKGMpe19mKFZLLHRoaXMs''@;'; put 'put ''Yyl9Z2V0TG9jYWxlKCl7cmV0dXJuIGNzKFZLLHRoaXMpfWdldEl0ZW1zKCl7cmV0dXJuWy4uLmNzKGJmLHRoaXMpXX1nZXRWYWx1ZSgpe3JldHVybiBmdW5jdGlvbiBnc3QobCl7Y29uc3QgYz1bXTtyZXR1cm4gbC5mb3JFYWNoKGE9PnthLmNoZWNrZWQmJmMucHVzaChhLnZhbHVlKX0pLGN9''@;'; put 'put ''KGNzKGJmLHRoaXMpKX1nZXRTZWFyY2hJbnB1dEVsZW1lbnQoKXtyZXR1cm4gY3MoVTQsdGhpcyl9Z2V0U2VsZWN0QWxsRWxlbWVudCgpe3JldHVybiBjcyhvNSx0aGlzKX1nZXRDbGVhckFsbEVsZW1lbnQoKXtyZXR1cm4gY3MoczUsdGhpcyl9aXNTZWxlY3RlZEFsbFZhbHVlcygpe3JldHVy''@;'; put 'put ''biBjcyhiZix0aGlzKS5sZW5ndGg9PT10aGlzLmdldFZhbHVlKCkubGVuZ3RofWJ1aWxkKCl7c3VwZXIuYnVpbGQoKTtjb25zdHtyb290RG9jdW1lbnQ6Y309dGhpcy5ob3QsYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9bmV3IEZkKHRoaXMuaG90LHtjbGFzc05hbWU6Imh0VUlTZWxlY3Rp''@;'; put 'put ''b25Db250cm9scyIsY2hpbGRyZW46W2NzKG81LHRoaXMpLGNzKHM1LHRoaXMpXX0pO3RoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY3MoVTQsdGhpcykuZWxlbWVudCksdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkLmVsZW1lbnQpLHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoYSk7Y29u''@;'; put 'put ''c3QgaD1mPT57aWYoIXRoaXMuX2VsZW1lbnQpcmV0dXJuO2NzKEdsLHRoaXMpJiZjcyhHbCx0aGlzKS5kZXN0cm95KCksbWkoZiwiaHRVSU11bHRpcGxlU2VsZWN0SG90IiksX2YoR2wsdGhpcyxuZXcgdGhpcy5ob3QuY29uc3RydWN0b3IoZix7ZGF0YTpjcyhiZix0aGlzKSxjb2x1bW5zOlt7''@;'; put 'put ''ZGF0YToiY2hlY2tlZCIsdHlwZToiY2hlY2tib3giLGxhYmVsOntwcm9wZXJ0eToidmlzdWFsVmFsdWUiLHBvc2l0aW9uOiJhZnRlciJ9fV0sYmVmb3JlUmVuZGVyZXI6KFYsUSxkZSxwZSxDZSxPZSk9PntWLnRpdGxlPU9lLmluc3RhbmNlLmdldERhdGFBdFJvd1Byb3AoUSxPZS5sYWJlbC5w''@;'; put 'put ''cm9wZXJ0eSl9LGFmdGVyTGlzdGVuOigpPT57dGhpcy5ydW5Mb2NhbEhvb2tzKCJmb2N1cyIsdGhpcyl9LGJlZm9yZU9uQ2VsbE1vdXNlVXA6KCk9PntjcyhHbCx0aGlzKS5saXN0ZW4oKX0sY29sV2lkdGhzOigpPT5jcyhHbCx0aGlzKS5jb250YWluZXIuc2Nyb2xsV2lkdGgtRXUoYyksbWF4''@;'; put 'put ''Q29sczoxLGF1dG9XcmFwQ29sOiEwLGhlaWdodDoxMTAsY29weVBhc3RlOiExLGRpc2FibGVWaXN1YWxTZWxlY3Rpb246ImFyZWEiLGZpbGxIYW5kbGU6ITEsZnJhZ21lbnRTZWxlY3Rpb246ImNlbGwiLHRhYk1vdmVzOntyb3c6MSxjb2w6MH0sbGF5b3V0RGlyZWN0aW9uOnRoaXMuaG90Lmlz''@;'; put 'put ''UnRsKCk/InJ0bCI6Imx0ciJ9KSksY3MoR2wsdGhpcykuaW5pdCgpO2NvbnN0IFM9Y3MoR2wsdGhpcykuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpO1MucmVtb3ZlU2hvcnRjdXRzQnlLZXlzKFsiVGFiIl0pLFMucmVtb3ZlU2hvcnRjdXRzQnlLZXlzKFsiU2hpZnQi''@;'; put 'put ''LCJUYWIiXSksUy5hZGRTaG9ydGN1dCh7a2V5czpbWyJFc2NhcGUiXV0sY2FsbGJhY2s6Vj0+e3RoaXMucnVuTG9jYWxIb29rcygia2V5ZG93biIsVix0aGlzKX0sZ3JvdXA6ZjNlfSksUy5hZGRTaG9ydGN1dCh7a2V5czpbWyJUYWIiXSxbIlNoaWZ0IiwiVGFiIl1dLGNhbGxiYWNrOlY9Pntj''@;'; put 'put ''cyhHbCx0aGlzKS5kZXNlbGVjdENlbGwoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLFYsdGhpcyksdGhpcy5ydW5Mb2NhbEhvb2tzKCJsaXN0VGFiS2V5ZG93biIsVix0aGlzKX0sZ3JvdXA6ZjNlfSl9O2goYSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dCgoKT0+aChhKSwxMDAp''@;'; put 'put ''fWZvY3VzKCl7dGhpcy5pc0J1aWx0KCkmJmNzKEdsLHRoaXMpLmxpc3RlbigpfXJlc2V0KCl7Y3MoVTQsdGhpcykucmVzZXQoKSxjcyhvNSx0aGlzKS5yZXNldCgpLGNzKHM1LHRoaXMpLnJlc2V0KCl9dXBkYXRlKCl7dGhpcy5pc0J1aWx0KCkmJihjcyhHbCx0aGlzKS5sb2FkRGF0YShmdW5j''@;'; put 'put ''dGlvbiBwc3QobCxjKXtjb25zdCBhPWJFKGMpO3JldHVybiBsLm1hcChkPT4oZC5jaGVja2VkPWEoZC52YWx1ZSksZCkpfShjcyhiZix0aGlzKSx0aGlzLm9wdGlvbnMudmFsdWUpKSxzdXBlci51cGRhdGUoKSl9ZGVzdHJveSgpe2NzKEdsLHRoaXMpJiZjcyhHbCx0aGlzKS5kZXN0cm95KCks''@;'; put 'put ''Y3MoVTQsdGhpcykuZGVzdHJveSgpLGNzKHM1LHRoaXMpLmRlc3Ryb3koKSxjcyhvNSx0aGlzKS5kZXN0cm95KCksX2YoVTQsdGhpcyxudWxsKSxfZihzNSx0aGlzLG51bGwpLF9mKG81LHRoaXMsbnVsbCksX2YoR2wsdGhpcyxudWxsKSxfZihiZix0aGlzLG51bGwpLHN1cGVyLmRlc3Ryb3ko''@;'; put 'put ''KX19ZnVuY3Rpb24gdXN0KGwpe2NvbnN0IGM9bC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5nZXRMb2NhbGUoKSk7bGV0IGE7YT0iIj09PWM/Wy4uLmNzKGJmLHRoaXMpXTpjcyhiZix0aGlzKS5maWx0ZXIoZD0+YCR7ZC52YWx1ZX1gLnRvTG9jYWxlTG93ZXJDYXNlKHRo''@;'; put 'put ''aXMuZ2V0TG9jYWxlKCkpLmluZGV4T2YoYyk+PTApLGNzKEdsLHRoaXMpLmxvYWREYXRhKGEpfWZ1bmN0aW9uIGRzdChsKXt0aGlzLnJ1bkxvY2FsSG9va3MoImtleWRvd24iLGwsdGhpcyksd1coYWIsbC5rZXlDb2RlKSgiQVJST1dfRE9XTiIpJiYobC5wcmV2ZW50RGVmYXVsdCgpLGpoKGwp''@;'; put 'put ''LGNzKEdsLHRoaXMpLmxpc3RlbigpLGNzKEdsLHRoaXMpLnNlbGVjdENlbGwoMCwwKSl9ZnVuY3Rpb24gaHN0KGwpe2NvbnN0IGM9W107bC5wcmV2ZW50RGVmYXVsdCgpLGNzKEdsLHRoaXMpLmdldFNvdXJjZURhdGEoKS5mb3JFYWNoKChhLGQpPT57YS5jaGVja2VkPSEwLGMucHVzaChDRyhh''@;'; put 'put ''LGQpWzBdKX0pLGNzKEdsLHRoaXMpLnNldFNvdXJjZURhdGFBdENlbGwoYyl9ZnVuY3Rpb24gZnN0KGwpe2NvbnN0IGM9W107bC5wcmV2ZW50RGVmYXVsdCgpLGNzKEdsLHRoaXMpLmdldFNvdXJjZURhdGEoKS5mb3JFYWNoKChhLGQpPT57YS5jaGVja2VkPSExLGMucHVzaChDRyhhLGQpWzBd''@;'; put 'put ''KX0pLGNzKEdsLHRoaXMpLnNldFNvdXJjZURhdGFBdENlbGwoYyl9Y29uc3QgYjc9ImJ5X3ZhbHVlIjtmdW5jdGlvbiBmUChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9SGMoYjcsZnVuY3Rpb24gbXN0KGwsYyl7bGV0W2FdPWM7cmV0dXJuIGEobC52YWx1ZSl9LHtuYW1lOiJCeSB2YWx1ZSIsaW5wdXRzQ291bnQ6MCxpbnB1dFZhbHVlc0RlY29yYXRvcihsKXtsZXRbY109''@;'; put 'put ''bDtyZXR1cm5bYkUoYyldfSxzaG93T3BlcmF0b3JzOiExfSk7dmFyIGczZSxNRT1uZXcgV2Vha1NldDtjbGFzcyBDc3QgZXh0ZW5kcyBjRXtjb25zdHJ1Y3RvcihjLGEpe3N1cGVyKGMse2lkOmEuaWQsc3RhdGVsZXNzOiExfSksZnVuY3Rpb24gdnN0KGwsYyl7KGZ1bmN0aW9uIF9zdChsLGMp''@;'; put 'put ''e2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuYWRkKGwpfSh0aGlzLE1FKSxmdW5jdGlvbiBic3QobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHlz''@;'; put 'put ''dChsKXt2YXIgYz1mdW5jdGlvbiB3c3QobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4g''@;'; put 'put ''ZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9P''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9KHRoaXMsIm5hbWUiLCIiKSx0aGlzLm5hbWU9YS5uYW1lLHRoaXMuZWxlbWVudHMucHVzaChuZXcgU0UodGhpcy5ob3QpKSx0aGlzLnJl''@;'; put 'put ''Z2lzdGVySG9va3MoKX1yZWdpc3Rlckhvb2tzKCl7dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKS5hZGRMb2NhbEhvb2soImtleWRvd24iLGM9PmZQKE1FLHRoaXMsU3N0KS5jYWxsKHRoaXMsYykpLmFkZExvY2FsSG9vaygibGlzdFRhYktleWRvd24iLGM9PnRoaXMucnVuTG9jYWxI''@;'; put 'put ''b29rcygibGlzdFRhYktleWRvd24iLGMpKSx0aGlzLmhvdC5hZGRIb29rKCJtb2RpZnlGaWx0ZXJzTXVsdGlTZWxlY3RWYWx1ZSIsKGMsYSk9PmZQKE1FLHRoaXMsTXN0KS5jYWxsKHRoaXMsYyxhKSl9Z2V0RWxlbWVudHMoKXtjb25zdCBjPXRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50''@;'; put 'put ''KCk7cmV0dXJuW2MuZ2V0U2VhcmNoSW5wdXRFbGVtZW50KCksYy5nZXRTZWxlY3RBbGxFbGVtZW50KCksYy5nZXRDbGVhckFsbEVsZW1lbnQoKSx0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpXX1zZXRTdGF0ZShjKXtpZih0aGlzLnJlc2V0KCksYyYmYy5jb21tYW5kLmtleT09PWI3''@;'; put 'put ''KXtjb25zdCBhPXRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCk7YS5zZXRJdGVtcyhjLml0ZW1zU25hcHNob3QpLGEuc2V0VmFsdWUoYy5hcmdzWzBdKSxhLnNldExvY2FsZShjLmxvY2FsZSl9fWdldFN0YXRlKCl7Y29uc3QgYz10aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgp''@;'; put 'put ''LGE9Yy5nZXRJdGVtcygpO3JldHVybntjb21tYW5kOntrZXk6Yy5pc1NlbGVjdGVkQWxsVmFsdWVzKCl8fCFhLmxlbmd0aD9XdTpiN30sYXJnczpbYy5nZXRWYWx1ZSgpXSxpdGVtc1NuYXBzaG90OmF9fXVwZGF0ZVN0YXRlKGMpe2NvbnN0IGE9KGQsaCxmLHYsUyk9Pntjb25zdFtWXT1GaCho''@;'; put 'put ''LHBlPT5wZS5uYW1lPT09YjcpLFE9e30sZGU9dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShKTCk7aWYoVil7Y29uc3QgcGU9dihkLFMpLENlPXhzKHBlLE10PT5NdC52YWx1ZSksT2U9bmV3IE1hcChwZS5tYXAoTXQ9PltNdC52YWx1ZSx0aGlzLmhvdC5nZXRDZWxsTWV0YShNdC5tZXRh''@;'; put 'put ''LnZpc3VhbFJvdyxNdC5tZXRhLnZpc3VhbENvbCldKSksWWU9TksoQ2UpO2YmJihWLmFyZ3NbMF09Zik7Y29uc3QgZXQ9W10sZHQ9dTNlKFllLFYuYXJnc1swXSxkZSxNdD0+e010LmNoZWNrZWQmJmV0LnB1c2goTXQudmFsdWUpLGZQKE1FLHRoaXMscDNlKS5jYWxsKHRoaXMsTXQsT2UpfSk7''@;'; put 'put ''US5sb2NhbGU9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoMCxjLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbikubG9jYWxlLFEuYXJncz1bZXRdLFEuY29tbWFuZD1fNyhiNyksUS5pdGVtc1NuYXBzaG90PWR0fWVsc2UgUS5hcmdzPVtdLFEuY29tbWFuZD1fNyhXdSk7dGhpcy5zdGF0ZS5zZXRW''@;'; put 'put ''YWx1ZUF0SW5kZXgoZCxRKX07YShjLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbHVtbixjLmVkaXRlZENvbmRpdGlvblN0YWNrLmNvbmRpdGlvbnMsYy5jb25kaXRpb25BcmdzQ2hhbmdlLGMuZmlsdGVyZWRSb3dzRmFjdG9yeSksYy5kZXBlbmRlbnRDb25kaXRpb25TdGFja3MubGVuZ3RoJiZh''@;'; put 'put ''KGMuZGVwZW5kZW50Q29uZGl0aW9uU3RhY2tzWzBdLmNvbHVtbixjLmRlcGVuZGVudENvbmRpdGlvblN0YWNrc1swXS5jb25kaXRpb25zLGMuY29uZGl0aW9uQXJnc0NoYW5nZSxjLmZpbHRlcmVkUm93c0ZhY3RvcnksYy5lZGl0ZWRDb25kaXRpb25TdGFjayl9Z2V0TXVsdGlwbGVTZWxlY3RF''@;'; put 'put ''bGVtZW50KCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuZmlsdGVyKGM9PmMgaW5zdGFuY2VvZiBTRSlbMF19Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxlU2VsZWN0aW9uOiEwLGhpZGRlbjooKT0+dGhp''@;'; put 'put ''cy5pc0hpZGRlbigpLHJlbmRlcmVyOihjLGEsZCxoLGYsdik9PnttaShhLnBhcmVudE5vZGUsImh0RmlsdGVyc01lbnVWYWx1ZSIpO2NvbnN0IFM9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBtaShTLCJodEZpbHRlcnNNZW51TGFiZWwiKSxTLnRl''@;'; put 'put ''eHRDb250ZW50PXYsYS5hcHBlbmRDaGlsZChTKSxUbih0aGlzLmVsZW1lbnRzLFY9PmEuYXBwZW5kQ2hpbGQoVi5lbGVtZW50KSksYX19fXJlc2V0KCl7Y29uc3QgYz10aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKEpMKSxhPXRoaXMuX2dldENvbHVtblZpc2libGVWYWx1ZXMoKSxkPWEu''@;'; put 'put ''bWFwKFY9PlYudmFsdWUpLGg9bmV3IE1hcChhLm1hcChWPT5bVi52YWx1ZSxWLm1ldGFdKSksZj1OSyhkKSx2PXUzZShmLGYsYyxWPT57ZlAoTUUsdGhpcyxwM2UpLmNhbGwodGhpcyxWLGgpfSk7dGhpcy5nZXRNdWx0aXBsZVNlbGVjdEVsZW1lbnQoKS5zZXRJdGVtcyh2KSxzdXBlci5yZXNl''@;'; put 'put ''dCgpLHRoaXMuZ2V0TXVsdGlwbGVTZWxlY3RFbGVtZW50KCkuc2V0VmFsdWUoZik7Y29uc3QgUz10aGlzLmhvdC5nZXRQbHVnaW4oImZpbHRlcnMiKS5nZXRTZWxlY3RlZENvbHVtbigpO251bGwhPT1TJiZ0aGlzLmdldE11bHRpcGxlU2VsZWN0RWxlbWVudCgpLnNldExvY2FsZSh0aGlzLmhv''@;'; put 'put ''dC5nZXRDZWxsTWV0YSgwLFMudmlzdWFsSW5kZXgpLmxvY2FsZSl9X2dldENvbHVtblZpc2libGVWYWx1ZXMoKXtjb25zdCBjPXRoaXMuaG90LmdldFBsdWdpbigiZmlsdGVycyIpLmdldFNlbGVjdGVkQ29sdW1uKCk7cmV0dXJuIG51bGw9PT1jP1tdOnhzKHRoaXMuaG90LmdldERhdGFBdENv''@;'; put 'put ''bChjLnZpc3VhbEluZGV4KSwoYSxkKT0+KHt2YWx1ZTpjM2UoYSksbWV0YTp0aGlzLmhvdC5nZXRDZWxsTWV0YShkLGMudmlzdWFsSW5kZXgpfSkpfX1mdW5jdGlvbiBTc3QobCl7YWIobC5rZXlDb2RlLCJFU0NBUEUiKSYmKHRoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIiksamgobCkpfWZ1''@;'; put 'put ''bmN0aW9uIHAzZShsLGMpe3RoaXMuaG90Lmhhc0hvb2soIm1vZGlmeUZpbHRlcnNNdWx0aVNlbGVjdFZhbHVlIikmJihsLnZpc3VhbFZhbHVlPXRoaXMuaG90LnJ1bkhvb2tzKCJtb2RpZnlGaWx0ZXJzTXVsdGlTZWxlY3RWYWx1ZSIsbC52aXN1YWxWYWx1ZSxjLmdldChsLnZhbHVlKSkpfWZ1''@;'; put 'put ''bmN0aW9uIE1zdChsLGMpe3JldHVybiJudW1lcmljIj09PWMudHlwZT93MmUobCxjKTpsfXZhciBtM2U9bmV3IFdlYWtTZXQ7Y2xhc3MgeEUgZXh0ZW5kcyBjRXtzdGF0aWMgZ2V0IEJVVFRPTl9PSygpe3JldHVybiJvayJ9c3RhdGljIGdldCBCVVRUT05fQ0FOQ0VMKCl7cmV0dXJuImNhbmNl''@;'; put 'put ''bCJ9Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLHtpZDphLmlkLHN0YXRlbGVzczohMH0pLGZ1bmN0aW9uIHhzdChsLGMpeyhmdW5jdGlvbiBFc3QobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRz''@;'; put 'put ''IHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLmFkZChsKX0odGhpcyxtM2UpLGZ1bmN0aW9uIFRzdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24ga3N0KGwpe3ZhciBjPWZ1bmN0aW9uIEFzdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1i''@;'; put 'put ''b2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJu''@;'; put 'put ''KCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9''@;'; put 'put ''KTpsW2NdPWEsbH0odGhpcywibmFtZSIsIiIpLHRoaXMubmFtZT1hLm5hbWUsdGhpcy5lbGVtZW50cy5wdXNoKG5ldyBuNSh0aGlzLmhvdCx7dHlwZToiYnV0dG9uIix2YWx1ZTokJCxjbGFzc05hbWU6Imh0VUlCdXR0b24gaHRVSUJ1dHRvbk9LIixpZGVudGlmaWVyOnhFLkJVVFRPTl9PS30p''@;'; put 'put ''KSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IG41KHRoaXMuaG90LHt0eXBlOiJidXR0b24iLHZhbHVlOnEkLGNsYXNzTmFtZToiaHRVSUJ1dHRvbiBodFVJQnV0dG9uQ2FuY2VsIixpZGVudGlmaWVyOnhFLkJVVFRPTl9DQU5DRUx9KSksdGhpcy5yZWdpc3Rlckhvb2tzKCl9cmVnaXN0ZXJIb29r''@;'; put 'put ''cygpe1RuKHRoaXMuZWxlbWVudHMsYz0+e2MuYWRkTG9jYWxIb29rKCJjbGljayIsKGEsZCk9PmZ1bmN0aW9uIERzdChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''UHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9KG0zZSx0aGlzLElzdCkuY2FsbCh0aGlzLGEsZCkpfSl9Z2V0TWVudUl0ZW1EZXNjcmlwdG9yKCl7cmV0dXJue2tleTp0aGlzLmlkLG5hbWU6dGhpcy5uYW1lLGlzQ29tbWFuZDohMSxkaXNhYmxlU2VsZWN0''@;'; put 'put ''aW9uOiEwLGhpZGRlbjooKT0+dGhpcy5pc0hpZGRlbigpLHJlbmRlcmVyOihjLGEpPT4obWkoYS5wYXJlbnROb2RlLCJodEZpbHRlcnNNZW51QWN0aW9uQmFyIiksVG4odGhpcy5lbGVtZW50cyxkPT5hLmFwcGVuZENoaWxkKGQuZWxlbWVudCkpLGEpfX1hY2NlcHQoKXt0aGlzLnJ1bkxvY2Fs''@;'; put 'put ''SG9va3MoImFjY2VwdCIpfWNhbmNlbCgpe3RoaXMucnVuTG9jYWxIb29rcygiY2FuY2VsIil9fWZ1bmN0aW9uIElzdChsLGMpe2Mub3B0aW9ucy5pZGVudGlmaWVyPT09ZzNlLkJVVFRPTl9PSz90aGlzLmFjY2VwdCgpOnRoaXMuY2FuY2VsKCl9ZnVuY3Rpb24gQksobCxjLGEpe3JldHVybiBj''@;'; put 'put ''PWZ1bmN0aW9uIFJzdChsKXt2YXIgYz1mdW5jdGlvbiBMc3QobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBl''@;'; put 'put ''b2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9''@;'; put 'put ''KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZzNlPXhFO2NvbnN0IHYzZT0iQ29uZGl0aW9uQ29sbGVjdGlvbi5maWx0ZXJpbmdTdGF0ZXMiO2NsYXNzIF8zZXtj''@;'; put 'put ''b25zdHJ1Y3RvcihjKXtsZXQgYT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO0JLKHRoaXMsImhvdCIsdm9pZCAwKSxCSyh0aGlzLCJpc01hcFJlZ2lzdHJhYmxlIix2b2lkIDApLEJLKHRoaXMsImZpbHRlcmluZ1N0YXRlcyIsbmV3''@;'; put 'put ''IFpMKSx0aGlzLmhvdD1jLHRoaXMuaXNNYXBSZWdpc3RyYWJsZT1hLCEwPT09dGhpcy5pc01hcFJlZ2lzdHJhYmxlP3RoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHYzZSx0aGlzLmZpbHRlcmluZ1N0YXRlcyk6dGhpcy5maWx0ZXJpbmdTdGF0ZXMuaW5pdCh0aGlzLmhv''@;'; put 'put ''dC5jb2x1bW5JbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5nZXRGaWx0ZXJlZENvbHVtbnMoKS5sZW5ndGh9aXNNYXRjaChjLGEpe3ZhciBkO2NvbnN0IGg9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KGEpLGY9''@;'; put 'put ''bnVsbCE9PShkPWg/LmNvbmRpdGlvbnMpJiZ2b2lkIDAhPT1kP2Q6W10sdj1oPy5vcGVyYXRpb247cmV0dXJuIHRoaXMuaXNNYXRjaEluQ29uZGl0aW9ucyhmLGMsdil9aXNNYXRjaEluQ29uZGl0aW9ucyhjLGEpe3JldHVybiFjLmxlbmd0aHx8ZnVuY3Rpb24gQm90KGwpe2lmKCF2RVtsXSl0''@;'; put 'put ''aHJvdyBFcnJvcihgT3BlcmF0aW9uIHdpdGggaWQgIiR7bH0iIGRvZXMgbm90IGV4aXN0LmApO2NvbnN0IGM9dkVbbF0uZnVuYztyZXR1cm4gZnVuY3Rpb24oYSxkKXtyZXR1cm4gYyhhLGQpfX0oYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJd''@;'; put 'put ''OnI1KShjLGEpfWFkZENvbmRpdGlvbihjLGEpe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpyNSxoPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwO2NvbnN0IGY9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEoMCxj''@;'; put 'put ''KS5sb2NhbGUsdj14cyhhLmFyZ3MsZGU9PiJzdHJpbmciPT10eXBlb2YgZGU/ZGUudG9Mb2NhbGVMb3dlckNhc2UoZik6ZGUpLFM9YS5uYW1lfHxhLmNvbW1hbmQua2V5O3RoaXMucnVuTG9jYWxIb29rcygiYmVmb3JlQWRkIixjKTtjb25zdCBWPXRoaXMuZ2V0T3BlcmF0aW9uKGMpO2lmKFYp''@;'; put 'put ''e2lmKFYhPT1kKXRocm93IEVycm9yKE5hYFRoZSBjb2x1bW4gb2YgaW5kZXggJHtjfSBoYXMgYmVlbiBhbHJlYWR5IGFwcGxpZWQgd2l0aCBhIFxgJHtWfVxgXHgyMAogICAgICAgIGZpbHRlciBvcGVyYXRpb24uIFVzZSBcYHJlbW92ZUNvbmRpdGlvbnNcYCB0byBjbGVhciB0aGUgY3VycmVu''@;'; put 'put ''dCBjb25kaXRpb25zIGFuZCB0aGVuIGFkZCBuZXcgb25lcy5ceDIwCiAgICAgICAgTWluZCB0aGF0IHlvdSBjYW5ub3QgbWl4IGRpZmZlcmVudCB0eXBlcyBvZiBvcGVyYXRpb25zIChmb3IgaW5zdGFuY2UsIGlmIHlvdSB1c2UgXGBjb25qdW5jdGlvblxgLFx4MjAKICAgICAgICB1c2UgaXQg''@;'; put 'put ''Y29uc2VxdWVudGx5IGZvciBhIHBhcnRpY3VsYXIgY29sdW1uKS5gKX1lbHNlIGlmKGRsKHZFW2RdKSl0aHJvdyBuZXcgRXJyb3IoTmFgVW5leHBlY3RlZCBvcGVyYXRpb24gbmFtZWQgXGAke2R9XGAuIFBvc3NpYmxlIG9uZXMgYXJlXHgyMAogICAgICAgIFxgZGlzanVuY3Rpb25cYCBhbmQg''@;'; put 'put ''XGBjb25qdW5jdGlvblxgLmApO2NvbnN0IFE9dGhpcy5nZXRDb25kaXRpb25zKGMpOzA9PT1RLmxlbmd0aD90aGlzLmZpbHRlcmluZ1N0YXRlcy5zZXRWYWx1ZUF0SW5kZXgoYyx7b3BlcmF0aW9uOmQsY29uZGl0aW9uczpbe25hbWU6UyxhcmdzOnYsZnVuYzp0NShTLHYpfV19LGgpOlEucHVz''@;'; put 'put ''aCh7bmFtZTpTLGFyZ3M6dixmdW5jOnQ1KFMsdil9KSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQWRkIixjKX1nZXRDb25kaXRpb25zKGMpe3ZhciBhLGQ7cmV0dXJuIG51bGwhPT0oYT1udWxsPT09KGQ9dGhpcy5maWx0ZXJpbmdTdGF0ZXMuZ2V0VmFsdWVBdEluZGV4KGMpKXx8dm9pZCAw''@;'; put 'put ''PT09ZD92b2lkIDA6ZC5jb25kaXRpb25zKSYmdm9pZCAwIT09YT9hOltdfWdldE9wZXJhdGlvbihjKXt2YXIgYTtyZXR1cm4gbnVsbD09PShhPXRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldFZhbHVlQXRJbmRleChjKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEub3BlcmF0aW9ufWdldEZpbHRlcmVk''@;'; put 'put ''Q29sdW1ucygpe3JldHVybiB0aGlzLmZpbHRlcmluZ1N0YXRlcy5nZXRFbnRyaWVzKCkubWFwKGM9PntsZXRbYV09YztyZXR1cm4gYX0pfWdldENvbHVtblN0YWNrUG9zaXRpb24oYyl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVyZWRDb2x1bW5zKCkuaW5kZXhPZihjKX1leHBvcnRBbGxDb25kaXRp''@;'; put 'put ''b25zKCl7cmV0dXJuIE1jKHRoaXMuZmlsdGVyaW5nU3RhdGVzLmdldEVudHJpZXMoKSwoYyxhKT0+e2xldFtkLHtvcGVyYXRpb246aCxjb25kaXRpb25zOmZ9XT1hO3JldHVybiBjLnB1c2goe2NvbHVtbjpkLG9wZXJhdGlvbjpoLGNvbmRpdGlvbnM6eHMoZix2PT57bGV0e25hbWU6Uyxhcmdz''@;'; put 'put ''OlZ9PXY7cmV0dXJue25hbWU6UyxhcmdzOlZ9fSl9KSxjfSxbXSl9aW1wb3J0QWxsQ29uZGl0aW9ucyhjKXt0aGlzLmNsZWFuKCksVG4oYyxhPT57VG4oYS5jb25kaXRpb25zLGQ9PnRoaXMuYWRkQ29uZGl0aW9uKGEuY29sdW1uLGQpKX0pfXJlbW92ZUNvbmRpdGlvbnMoYyl7dGhpcy5ydW5M''@;'; put 'put ''b2NhbEhvb2tzKCJiZWZvcmVSZW1vdmUiLGMpLHRoaXMuZmlsdGVyaW5nU3RhdGVzLmNsZWFyVmFsdWUoYyksdGhpcy5ydW5Mb2NhbEhvb2tzKCJhZnRlclJlbW92ZSIsYyl9Y2xlYW4oKXt0aGlzLnJ1bkxvY2FsSG9va3MoImJlZm9yZUNsZWFuIiksdGhpcy5maWx0ZXJpbmdTdGF0ZXMuY2xl''@;'; put 'put ''YXIoKSx0aGlzLnJ1bkxvY2FsSG9va3MoImFmdGVyQ2xlYW4iKX1oYXNDb25kaXRpb25zKGMsYSl7Y29uc3QgZD10aGlzLmdldENvbmRpdGlvbnMoYyk7cmV0dXJuIGE/ZC5zb21lKGg9PmgubmFtZT09PWEpOmQubGVuZ3RoPjB9ZGVzdHJveSgpe3RoaXMuaXNNYXBSZWdpc3RyYWJsZSYmdGhp''@;'; put 'put ''cy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh2M2UpLHRoaXMuZmlsdGVyaW5nU3RhdGVzPW51bGwsdGhpcy5jbGVhckxvY2FsSG9va3MoKX19cmwoXzNlLFUxKTtjb25zdCBiM2U9XzNlO2Z1bmN0aW9uIHkzZShsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gT3N0KGwpe3Zh''@;'; put 'put ''ciBjPWZ1bmN0aW9uIFBzdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93''@;'; put 'put ''IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCB3M2U9Y2xhc3MgRnN0e2NvbnN0cnVjdG9yKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2Fy''@;'; put 'put ''Z3VtZW50c1sxXTooKT0+W107eTNlKHRoaXMsImNvbmRpdGlvbkNvbGxlY3Rpb24iLHZvaWQgMCkseTNlKHRoaXMsImNvbHVtbkRhdGFGYWN0b3J5Iix2b2lkIDApLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj1jLHRoaXMuY29sdW1uRGF0YUZhY3Rvcnk9YX1maWx0ZXIoKXtsZXQgYz1bXTty''@;'; put 'put ''ZXR1cm4gVG4odGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldEZpbHRlcmVkQ29sdW1ucygpLChhLGQpPT57bGV0IGg9dGhpcy5jb2x1bW5EYXRhRmFjdG9yeShhKTtkJiYoaD10aGlzLl9nZXRJbnRlcnNlY3REYXRhKGgsYykpLGM9dGhpcy5maWx0ZXJCeUNvbHVtbihhLGgpfSksY31maWx0''@;'; put 'put ''ZXJCeUNvbHVtbihjKXtjb25zdCBkPVtdO3JldHVybiBUbihhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saD0+e3ZvaWQgMCE9PWgmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5pc01hdGNoKGgsYykmJmQucHVzaChoKX0pLGR9X2dl''@;'; put 'put ''dEludGVyc2VjdERhdGEoYyxhKXtjb25zdCBkPVtdO3JldHVybiBUbihhLGg9Pntjb25zdCBmPWgubWV0YS52aXN1YWxSb3c7dm9pZCAwIT09Y1tmXSYmKGRbZl09Y1tmXSl9KSxkfX07ZnVuY3Rpb24geTcobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFZzdChsKXt2YXIgYz1mdW5jdGlvbiBC''@;'; put 'put ''c3QobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''bCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gaksobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBU''@;'; put 'put ''eXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciBwUD1uZXcgV2Vha1NldDtjbGFzcyBDM2V7Y29uc3RydWN0b3IoYyxhKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06''@;'; put 'put ''KCk9PltdOyhmdW5jdGlvbiBOc3QobCxjKXsoZnVuY3Rpb24gSHN0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5hZGQobCl9KSh0aGlz''@;'; put 'put ''LHBQKSx5Nyh0aGlzLCJob3QiLHZvaWQgMCkseTcodGhpcywiY29uZGl0aW9uQ29sbGVjdGlvbiIsdm9pZCAwKSx5Nyh0aGlzLCJjb2x1bW5EYXRhRmFjdG9yeSIsdm9pZCAwKSx5Nyh0aGlzLCJjaGFuZ2VzIixbXSkseTcodGhpcywiZ3JvdXBpbmciLCExKSx5Nyh0aGlzLCJsYXRlc3RFZGl0''@;'; put 'put ''ZWRDb2x1bW5Qb3NpdGlvbiIsLTEpLHk3KHRoaXMsImxhdGVzdE9yZGVyU3RhY2siLFtdKSx0aGlzLmhvdD1jLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbj1hLHRoaXMuY29sdW1uRGF0YUZhY3Rvcnk9ZCx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJiZWZvcmVSZW1v''@;'; put 'put ''dmUiLGg9PmpLKHBQLHRoaXMsanN0KS5jYWxsKHRoaXMsaCkpLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRMb2NhbEhvb2soImFmdGVyUmVtb3ZlIixoPT50aGlzLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKGgpKSx0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uYWRkTG9jYWxIb29rKCJhZnRl''@;'; put 'put ''ckFkZCIsaD0+dGhpcy51cGRhdGVTdGF0ZXNBdENvbHVtbihoKSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYmVmb3JlQ2xlYW4iLCgpPT5qSyhwUCx0aGlzLHpzdCkuY2FsbCh0aGlzKSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZExvY2FsSG9vaygiYWZ0''@;'; put 'put ''ZXJDbGVhbiIsKCk9PmpLKHBQLHRoaXMsVXN0KS5jYWxsKHRoaXMpKX1ncm91cENoYW5nZXMoKXt0aGlzLmdyb3VwaW5nPSEwfWZsdXNoKCl7dGhpcy5ncm91cGluZz0hMSxUbih0aGlzLmNoYW5nZXMsYz0+e3RoaXMudXBkYXRlU3RhdGVzQXRDb2x1bW4oYyl9KSx0aGlzLmNoYW5nZXMubGVu''@;'; put 'put ''Z3RoPTB9dXBkYXRlU3RhdGVzQXRDb2x1bW4oYyxhKXt2YXIgZD10aGlzO2lmKHRoaXMuZ3JvdXBpbmcpcmV0dXJuIHZvaWQoLTE9PT10aGlzLmNoYW5nZXMuaW5kZXhPZihjKSYmdGhpcy5jaGFuZ2VzLnB1c2goYykpO2NvbnN0IGg9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmV4cG9ydEFs''@;'; put 'put ''bENvbmRpdGlvbnMoKTtsZXQgZj10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0Q29sdW1uU3RhY2tQb3NpdGlvbihjKTstMT09PWYmJihmPXRoaXMubGF0ZXN0RWRpdGVkQ29sdW1uUG9zaXRpb24pO2NvbnN0IHY9aC5zbGljZSgwLGYpLFM9aC5zbGljZShmKTtTLmxlbmd0aCYmU1swXS5j''@;'; put 'put ''b2x1bW49PT1jJiZTLnNoaWZ0KCk7Y29uc3QgVj1BMWUoZnVuY3Rpb24oZGUscGUpe2xldCBDZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W107Y29uc3QgT2U9bmV3IGIzZShkLmhvdCwhMSksWWU9W10uY29uY2F0KGRlLENlKTtPZS5p''@;'; put 'put ''bXBvcnRBbGxDb25kaXRpb25zKFllKTtjb25zdCBldD1kLmNvbHVtbkRhdGFGYWN0b3J5KHBlKTtsZXQgZHQ7ZHQ9T2UuaXNFbXB0eSgpP2V0Om5ldyB3M2UoT2UsTXQ9PmQuY29sdW1uRGF0YUZhY3RvcnkoTXQpKS5maWx0ZXIoKSxkdD14cyhkdCxNdD0+TXQubWV0YS52aXN1YWxSb3cpO2Nv''@;'; put 'put ''bnN0IGh0PWJFKGR0KTtyZXR1cm4gT2UuZGVzdHJveSgpLEZoKGV0LE10PT5odChNdC5tZXRhLnZpc3VhbFJvdykpfSkodiksUT1bXS5jb25jYXQodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbmRpdGlvbnMoYykpO3RoaXMucnVuTG9jYWxIb29rcygidXBkYXRlIix7ZWRpdGVkQ29u''@;'; put 'put ''ZGl0aW9uU3RhY2s6e2NvbHVtbjpjLGNvbmRpdGlvbnM6UX0sZGVwZW5kZW50Q29uZGl0aW9uU3RhY2tzOlMsZmlsdGVyZWRSb3dzRmFjdG9yeTpWLGNvbmRpdGlvbkFyZ3NDaGFuZ2U6YX0pfWRlc3Ryb3koKXt0aGlzLmNsZWFyTG9jYWxIb29rcygpLENzKHRoaXMsKGMsYSk9Pnt0aGlzW2Fd''@;'; put 'put ''PW51bGx9KX19ZnVuY3Rpb24ganN0KGwpe3RoaXMubGF0ZXN0RWRpdGVkQ29sdW1uUG9zaXRpb249dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldENvbHVtblN0YWNrUG9zaXRpb24obCl9ZnVuY3Rpb24genN0KCl7dGhpcy5sYXRlc3RPcmRlclN0YWNrPXRoaXMuY29uZGl0aW9uQ29sbGVj''@;'; put 'put ''dGlvbi5nZXRGaWx0ZXJlZENvbHVtbnMoKX1mdW5jdGlvbiBVc3QoKXtUbih0aGlzLmxhdGVzdE9yZGVyU3RhY2ssbD0+e3RoaXMudXBkYXRlU3RhdGVzQXRDb2x1bW4obCl9KX1ybChDM2UsVTEpO2NvbnN0IFpzdD1DM2UsRUU9ImZpbHRlcnMiO2Z1bmN0aW9uIFMzZShsLGMpe2lmKGMuaGFz''@;'; put 'put ''KGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gVEUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIHFzdChsKXt2YXIgYz1mdW5jdGlvbiBLc3QobCxjKXtpZigib2Jq''@;'; put 'put ''ZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZl''@;'; put 'put ''IG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVu''@;'; put 'put ''dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24ga0UobCxjKXtyZXR1cm4gbC5nZXQoTmQobCxjKSl9ZnVuY3Rpb24gTmQobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfWNvbnN0IHpLPSJmaWx0ZXJzIixNM2U9eks7dmFyIHc3PW5ldyBXZWFrTWFwLEpoPW5ldyBXZWFrU2V0O2NsYXNzIFFzdCBleHRlbmRzIGRhe3N0''@;'; put 'put ''YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiB6S31zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyNTB9c3RhdGljIGdldCBQTFVHSU5fREVQUygpe3JldHVyblsicGx1Z2luOkRyb3Bkb3duTWVudSIsInBsdWdpbjpIaWRkZW5Sb3dzIiwiY2VsbC10eXBlOmNoZWNrYm94''@;'; put 'put ''Il19Y29uc3RydWN0b3IoYyl7c3VwZXIoYyksZnVuY3Rpb24gR3N0KGwsYyl7UzNlKGwsYyksYy5hZGQobCl9KHRoaXMsSmgpLFRFKHRoaXMsImRyb3Bkb3duTWVudVBsdWdpbiIsbnVsbCksVEUodGhpcywiY29uZGl0aW9uQ29sbGVjdGlvbiIsbnVsbCksVEUodGhpcywiY29uZGl0aW9uVXBk''@;'; put 'put ''YXRlT2JzZXJ2ZXIiLG51bGwpLFRFKHRoaXMsImNvbXBvbmVudHMiLG5ldyBNYXAoW1siZmlsdGVyX2J5X2NvbmRpdGlvbiIsbnVsbF0sWyJmaWx0ZXJfb3BlcmF0b3JzIixudWxsXSxbImZpbHRlcl9ieV9jb25kaXRpb24yIixudWxsXSxbImZpbHRlcl9ieV92YWx1ZSIsbnVsbF0sWyJmaWx0''@;'; put 'put ''ZXJfYWN0aW9uX2JhciIsbnVsbF1dKSksVEUodGhpcywiZmlsdGVyc1Jvd3NNYXAiLG51bGwpLGZ1bmN0aW9uICRzdChsLGMsYSl7UzNlKGwsYyksYy5zZXQobCxhKX0odGhpcyx3Nyx2b2lkIDApLHRoaXMuaG90LmFkZEhvb2soImFmdGVyR2V0Q29sSGVhZGVyIiwoYSxkKT0+TmQoSmgsdGhp''@;'; put 'put ''cyxvYXQpLmNhbGwodGhpcyxhLGQpKX1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbektdfWVuYWJsZVBsdWdpbigpe2lmKHRoaXMuZW5hYmxlZClyZXR1cm47dGhpcy5maWx0ZXJzUm93c01hcD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0''@;'; put 'put ''aGlzLnBsdWdpbk5hbWUsbmV3IEV4KSx0aGlzLmRyb3Bkb3duTWVudVBsdWdpbj10aGlzLmhvdC5nZXRQbHVnaW4oImRyb3Bkb3duTWVudSIpO2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5kcm9wZG93bk1lbnUsYT1jJiZjLnVpQ29udGFpbmVyfHx0aGlzLmhvdC5yb290RG9jdW1l''@;'; put 'put ''bnQuYm9keSxkPXY9Pih2LmFkZExvY2FsSG9vaygiYWNjZXB0IiwoKT0+TmQoSmgsdGhpcyx4M2UpLmNhbGwodGhpcywiYWNjZXB0IikpLHYuYWRkTG9jYWxIb29rKCJjYW5jZWwiLCgpPT5OZChKaCx0aGlzLHgzZSkuY2FsbCh0aGlzLCJjYW5jZWwiKSksdi5hZGRMb2NhbEhvb2soImNoYW5n''@;'; put 'put ''ZSIsUz0+TmQoSmgsdGhpcyxpYXQpLmNhbGwodGhpcyx2LFMpKSx2KSxoPSgpPT5gJHt0aGlzLmhvdC5nZXRUcmFuc2xhdGVkUGhyYXNlKFUkKX06YDtpZighdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbiIpKXtjb25zdCB2PW5ldyBSSyh0aGlzLmhvdCx7aWQ6ImZp''@;'; put 'put ''bHRlcl9ieV9jb25kaXRpb24iLG5hbWU6aCxhZGRTZXBhcmF0b3I6ITEsbWVudUNvbnRhaW5lcjphfSk7di5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLCgpPT5OZChKaCx0aGlzLEUzZSkuY2FsbCh0aGlzKSksdGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2J5X2NvbmRpdGlvbiIsZCh2''@;'; put 'put ''KSl9aWYodGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpfHx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfb3BlcmF0b3JzIixuZXcgdHN0KHRoaXMuaG90LHtpZDoiZmlsdGVyX29wZXJhdG9ycyIsbmFtZToiT3BlcmF0b3JzIn0pKSwhdGhpcy5jb21wb25lbnRzLmdl''@;'; put 'put ''dCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKSl7Y29uc3Qgdj1uZXcgUksodGhpcy5ob3Qse2lkOiJmaWx0ZXJfYnlfY29uZGl0aW9uMiIsbmFtZToiIixhZGRTZXBhcmF0b3I6ITAsbWVudUNvbnRhaW5lcjphfSk7di5hZGRMb2NhbEhvb2soImFmdGVyQ2xvc2UiLCgpPT5OZChKaCx0aGlzLEUz''@;'; put 'put ''ZSkuY2FsbCh0aGlzKSksdGhpcy5jb21wb25lbnRzLnNldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiLGQodikpfWlmKHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV92YWx1ZSIpfHx0aGlzLmNvbXBvbmVudHMuc2V0KCJmaWx0ZXJfYnlfdmFsdWUiLGQobmV3IENzdCh0aGlzLmhvdCx7''@;'; put 'put ''aWQ6ImZpbHRlcl9ieV92YWx1ZSIsbmFtZTooKT0+YCR7dGhpcy5ob3QuZ2V0VHJhbnNsYXRlZFBocmFzZShaJCl9OmB9KSkpLHRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9hY3Rpb25fYmFyIil8fHRoaXMuY29tcG9uZW50cy5zZXQoImZpbHRlcl9hY3Rpb25fYmFyIixkKG5ldyB4RSh0''@;'; put 'put ''aGlzLmhvdCx7aWQ6ImZpbHRlcl9hY3Rpb25fYmFyIixuYW1lOiJBY3Rpb24gYmFyIn0pKSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9ufHwodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPW5ldyBiM2UodGhpcy5ob3QpKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyfHwodGhpcy5jb25k''@;'; put 'put ''aXRpb25VcGRhdGVPYnNlcnZlcj1uZXcgWnN0KHRoaXMuaG90LHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbix2PT50aGlzLmdldERhdGFNYXBBdENvbHVtbih2KSksdGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5hZGRMb2NhbEhvb2soInVwZGF0ZSIsdj0+TmQoSmgsdGhpcyxzYXQpLmNh''@;'; put 'put ''bGwodGhpcyx2KSkpLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKHY9PnYuc2hvdygpKSx0aGlzLmFkZEhvb2soImFmdGVyRHJvcGRvd25NZW51RGVmYXVsdE9wdGlvbnMiLHY9Pk5kKEpoLHRoaXMscmF0KS5jYWxsKHRoaXMsdikpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVTaG93''@;'; put 'put ''IiwoKT0+TmQoSmgsdGhpcyx0YXQpLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcm9wZG93bk1lbnVIaWRlIiwoKT0+TmQoSmgsdGhpcyxuYXQpLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLHY9Pk5kKEpoLHRoaXMsZWF0KS5jYWxsKHRoaXMsdikpLHRo''@;'; put 'put ''aXMuaG90LmdldFNldHRpbmdzKCkuZHJvcGRvd25NZW51JiZ0aGlzLmRyb3Bkb3duTWVudVBsdWdpbiYmKHRoaXMuZHJvcGRvd25NZW51UGx1Z2luLmRpc2FibGVQbHVnaW4oKSx0aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5lbmFibGVQbHVnaW4oKSksIWtFKHc3LHRoaXMpJiZ0aGlzLmRyb3Bk''@;'; put 'put ''b3duTWVudVBsdWdpbi5lbmFibGVkKXtjb25zdCB2PXRoaXMuZHJvcGRvd25NZW51UGx1Z2luLm1lbnUsUz1be2ZvY3VzOigpPT57Y29uc3QgUT12LmdldE5hdmlnYXRvcigpLGRlPWtFKHc3LHRoaXMpLmdldExhc3RNZW51UGFnZSgpO3YuZm9jdXMoKSxkZT4wP1Euc2V0Q3VycmVudFBhZ2Uo''@;'; put 'put ''ZGUpOlEudG9GaXJzdEl0ZW0oKX19LC4uLkFycmF5LmZyb20odGhpcy5jb21wb25lbnRzKS5tYXAoUT0+e2xldFssZGVdPVE7cmV0dXJuIGRlLmdldEVsZW1lbnRzKCl9KS5mbGF0KCldOyFmdW5jdGlvbiBYc3QobCxjLGEpe2wuc2V0KE5kKGwsYyksYSl9KHc3LHRoaXMsZnVuY3Rpb24gV3N0''@;'; put 'put ''KGwsYyl7bGV0IGE9LTE7Y29uc3QgZD1mdW5jdGlvbiBZc3QobCl7cmV0dXJuIGZmZSh7aW5pdGlhbFBhZ2U6MCxzaXplOigpPT5sLmxlbmd0aCxvbkl0ZW1TZWxlY3Q6KGEsZCk9Pntjb25zdCBoPWxbYV07cmV0dXJuIGggaW5zdGFuY2VvZiBTRT9kOiEoaC5lbGVtZW50JiYhUG0oaC5lbGVt''@;'; put 'put ''ZW50KSkmJnZvaWQgaC5mb2N1cygpfX0pfShjKSxoPVY9PigpPT57bC5pc09wZW5lZCgpJiZsLmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpLmxpc3RlbihFRSksZC5zZXRDdXJyZW50UGFnZShjLmluZGV4T2YoVikpfTtmdW5jdGlvbiBmKFYpe2NvbnN0IFE9bC5nZXRLZXlib2FyZFNob3J0''@;'; put 'put ''Y3V0c0N0cmwoKSxkZT1WLmdldEtleWJvYXJkU2hvcnRjdXRzQ3RybCgpO2QuY2xlYXIoKSxkZS5hZGRDdXN0b21TaG9ydGN1dHMoW3trZXlzOltbIlRhYiJdLFsiU2hpZnQiLCJUYWIiXV0sZm9yd2FyZFRvQ29udGV4dDpRLmdldENvbnRleHQoRUUpLGNhbGxiYWNrOigpPT57Vi5pc1N1Yk1l''@;'; put 'put ''bnUoKSYmVi5jbG9zZSgpLFEubGlzdGVuKEVFKX19XSksIVYuaXNTdWJNZW51KCkmJlEuYWRkQ3VzdG9tU2hvcnRjdXRzKFt7a2V5czpbWyJUYWIiXSxbIlNoaWZ0IiwiVGFiIl1dLGNhbGxiYWNrOnBlPT57Y29uc3QgQ2U9bC5nZXROYXZpZ2F0b3IoKTtDZS5nZXRDdXJyZW50UGFnZSgpPi0x''@;'; put 'put ''JiYoYT1DZS5nZXRDdXJyZW50UGFnZSgpKSxDZS5jbGVhcigpLHBlLnNoaWZ0S2V5P2QudG9QcmV2aW91c0l0ZW0oKTpkLnRvTmV4dEl0ZW0oKX19LHtrZXlzOltbIkVzY2FwZSJdXSxjYWxsYmFjazooKT0+e2wuY2xvc2UoKX19LHtrZXlzOltbIkVudGVyIl0sWyJTcGFjZSJdXSxwcmV2ZW50''@;'; put 'put ''RGVmYXVsdDohMSxjYWxsYmFjazpwZT0+e2NvbnN0IENlPWNbZC5nZXRDdXJyZW50UGFnZSgpXTtDZSBpbnN0YW5jZW9mIG1FJiYoQ2Uub3Blbk9wdGlvbnMoKSxwZS5wcmV2ZW50RGVmYXVsdCgpKSxDZSBpbnN0YW5jZW9mIHdFJiYoQ2UuYWN0aXZhdGUoKSxwZS5wcmV2ZW50RGVmYXVsdCgp''@;'; put 'put ''KSxDZSBpbnN0YW5jZW9mIEZkfHxwZS5wcmV2ZW50RGVmYXVsdCgpfX1dLEVFKX1yZXR1cm4gYy5mb3JFYWNoKFY9PntWIGluc3RhbmNlb2YgRmQmJihWLmFkZExvY2FsSG9vaygiY2xpY2siLGgoVikpLFYuYWRkTG9jYWxIb29rKCJmb2N1cyIsaChWKSksVi5hZGRMb2NhbEhvb2soImFmdGVy''@;'; put 'put ''Q2xvc2UiLGgoVikpKX0pLGwuYWRkTG9jYWxIb29rKCJhZnRlclNlbGVjdGlvbkNoYW5nZSIsVj0+e1Yua2V5LnN0YXJ0c1dpdGgoImZpbHRlcl8iKXx8ZC5jbGVhcigpfSksbC5hZGRMb2NhbEhvb2soImFmdGVyU3VibWVudU9wZW4iLGYpLGwuYWRkTG9jYWxIb29rKCJhZnRlck9wZW4iLGYp''@;'; put 'put ''LHsuLi5kLGxpc3RlbjpmdW5jdGlvbiB2KCl7bC5mb2N1cygpLGwuZ2V0S2V5Ym9hcmRTaG9ydGN1dHNDdHJsKCkubGlzdGVuKEVFKX0sZ2V0TGFzdE1lbnVQYWdlOmZ1bmN0aW9uIFMoKXtyZXR1cm4gYX19fSh2LFMpKTtjb25zdCBWPVE9PntrRSh3Nyx0aGlzKS5saXN0ZW4oKSxRLnByZXZl''@;'; put 'put ''bnREZWZhdWx0KCksYWIoUS5rZXlDb2RlLCJUQUIiKSYmKFEuc2hpZnRLZXk/a0UodzcsdGhpcykudG9QcmV2aW91c0l0ZW0oKTprRSh3Nyx0aGlzKS50b05leHRJdGVtKCkpfTt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfdmFsdWUiKS5hZGRMb2NhbEhvb2soImxpc3RUYWJLZXlk''@;'; put 'put ''b3duIixWKSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikuYWRkTG9jYWxIb29rKCJzZWxlY3RUYWJLZXlkb3duIixWKX10aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3ZhciBjO3RoaXMuZW5hYmxl''@;'; put 'put ''ZCYmKG51bGwhPT0oYz10aGlzLmRyb3Bkb3duTWVudVBsdWdpbikmJnZvaWQgMCE9PWMmJmMuZW5hYmxlZCYmdGhpcy5kcm9wZG93bk1lbnVQbHVnaW4ubWVudS5jbGVhckxvY2FsSG9va3MoKSx0aGlzLmNvbXBvbmVudHMuZm9yRWFjaCgoYSxkKT0+e2EuZGVzdHJveSgpLHRoaXMuY29tcG9u''@;'; put 'put ''ZW50cy5zZXQoZCxudWxsKX0pLHRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uPW51bGwsdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMo''@;'; put 'put ''KSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9cmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXQoe2tleXM6W1siQWx0IiwiQSJdXSxzdG9wUHJvcGFnYXRpb246ITAsY2FsbGJhY2s6KCk9Pntjb25zdCBj''@;'; put 'put ''PXRoaXMuaG90LmdldFNlbGVjdGVkKCk7dGhpcy5jbGVhckNvbmRpdGlvbnMoKSx0aGlzLmZpbHRlcigpLGMmJnRoaXMuaG90LnNlbGVjdENlbGxzKGMpfSxncm91cDpNM2V9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgi''@;'; put 'put ''Z3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoTTNlKX1hZGRDb25kaXRpb24oYyxhLGQpe2xldCBoPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpyNTtjb25zdCBmPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYyk7dGhpcy5jb25k''@;'; put 'put ''aXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihmLHtjb21tYW5kOntrZXk6YX0sYXJnczpkfSxoKX1yZW1vdmVDb25kaXRpb25zKGMpe2NvbnN0IGE9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24ucmVtb3ZlQ29uZGl0aW9ucyhhKX1jbGVh''@;'; put 'put ''ckNvbmRpdGlvbnMoYyl7aWYodm9pZCAwPT09Yyl0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uY2xlYW4oKTtlbHNle2NvbnN0IGE9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKTt0aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24ucmVtb3ZlQ29uZGl0aW9ucyhhKX19ZmlsdGVyKCl7Y29uc3R7''@;'; put 'put ''bmF2aWdhYmxlSGVhZGVyczpjfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLGE9dGhpcy5fY3JlYXRlRGF0YUZpbHRlcigpLGQ9IXRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5pc0VtcHR5KCk7bGV0IGg9W107Y29uc3QgZj10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZXhwb3J0QWxsQ29uZGl0''@;'; put 'put ''aW9ucygpO2lmKCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUZpbHRlciIsZikpaWYoZCl7Y29uc3QgUz1bXTt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMuZmlsdGVyc1Jvd3NNYXAuY2xlYXIoKSxoPXhzKGEuZmlsdGVyKCksUT0+US5tZXRhLnZpc3VhbFJvdyk7Y29u''@;'; put 'put ''c3QgVj1iRShoKTtnbyh0aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKS0xLFE9PntWKFEpfHxTLnB1c2goUSl9KSxUbihTLFE9Pnt0aGlzLmZpbHRlcnNSb3dzTWFwLnNldFZhbHVlQXRJbmRleChRLCEwKX0pfSwhMCksIWMmJiFoLmxlbmd0aCYmdGhpcy5ob3QuZGVzZWxlY3RDZWxsKCl9ZWxz''@;'; put 'put ''ZSB0aGlzLmZpbHRlcnNSb3dzTWFwLmNsZWFyKCk7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyRmlsdGVyIixmKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpLHRoaXMuaG90LnJlbmRlcigpLHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkmJnRoaXMuaG90LnNlbGVj''@;'; put 'put ''dENlbGwoYz8tMTowLHRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkuaGlnaGxpZ2h0LmNvbCl9Z2V0U2VsZWN0ZWRDb2x1bW4oKXt2YXIgYztjb25zdCBhPW51bGw9PT0oYz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGln''@;'; put 'put ''aHQ7cmV0dXJuIGE/e3Zpc3VhbEluZGV4OmEuY29sLHBoeXNpY2FsSW5kZXg6dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihhLmNvbCl9Om51bGx9Z2V0RGF0YU1hcEF0Q29sdW1uKGMpe2NvbnN0IGE9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oYyksZD1bXTtyZXR1cm4gVG4odGhpcy5ob3Qu''@;'; put 'put ''Z2V0U291cmNlRGF0YUF0Q29sKGEpLChoLGYpPT57dmFyIHY7Y29uc3R7cm93OlMsY29sOlYsdmlzdWFsQ29sOlEsdmlzdWFsUm93OmRlLHR5cGU6cGUsaW5zdGFuY2U6Q2UsZGF0ZUZvcm1hdDpPZSxsb2NhbGU6WWV9PXRoaXMuaG90LmdldENlbGxNZXRhKGYsYSksZXQ9bnVsbCE9PSh2PXRo''@;'; put 'put ''aXMuaG90LmdldERhdGFBdENlbGwodGhpcy5ob3QudG9WaXN1YWxSb3coZiksYSkpJiZ2b2lkIDAhPT12P3Y6aDtkLnB1c2goe21ldGE6e3JvdzpTLGNvbDpWLHZpc3VhbENvbDpRLHZpc3VhbFJvdzpkZSx0eXBlOnBlLGluc3RhbmNlOkNlLGRhdGVGb3JtYXQ6T2UsbG9jYWxlOlllfSx2YWx1''@;'; put 'put ''ZTpjM2UoZXQpfSl9KSxkfXVwZGF0ZVZhbHVlQ29tcG9uZW50Q29uZGl0aW9uKGMpe2NvbnN0IGQ9TksodGhpcy5ob3QuZ2V0RGF0YUF0Q29sKGMpKTt0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyLnVwZGF0ZVN0YXRlc0F0Q29sdW1uKGMsZCl9cmVzdG9yZUNvbXBvbmVudHMoYyl7dmFy''@;'; put 'put ''IGE7Y29uc3QgZD1udWxsPT09KGE9dGhpcy5nZXRTZWxlY3RlZENvbHVtbigpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5waHlzaWNhbEluZGV4O2MuZm9yRWFjaChoPT57aC5pc0hpZGRlbigpfHxoLnJlc3RvcmVTdGF0ZShkKX0pLHRoaXMudXBkYXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2li''@;'; put 'put ''aWxpdHkoKX1nZXRPcGVyYXRpb25CYXNlZE9uQXJndW1lbnRzKGMsYSxkLGgpe2xldCBmPWM7cmV0dXJuIGY9PT1kUCYmYS5jb21tYW5kLmtleSE9PVd1JiZkLmNvbW1hbmQua2V5IT09V3UmJmguY29tbWFuZC5rZXkhPT1XdT9mPU9LOmguY29tbWFuZC5rZXkhPT1XdSYmKGEuY29tbWFuZC5r''@;'; put 'put ''ZXk9PT1XdXx8ZC5jb21tYW5kLmtleT09PVd1KSYmKGY9cjUpLGZ9c2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl7dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4mJnRoaXMuZHJvcGRvd25NZW51UGx1Z2luLnNldExpc3RlbmluZygpfXVwZGF0ZURlcGVuZGVudENvbXBvbmVudHNWaXNpYmlsaXR5''@;'; put 'put ''KCl7Y29uc3QgYz10aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikse2NvbW1hbmQ6YX09Yy5nZXRTdGF0ZSgpLGQ9W3RoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24yIiksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIp''@;'; put 'put ''XTthLnNob3dPcGVyYXRvcnM/dGhpcy5zaG93Q29tcG9uZW50cyguLi5kKTp0aGlzLmhpZGVDb21wb25lbnRzKC4uLmQpfV9jcmVhdGVEYXRhRmlsdGVyKCl7cmV0dXJuIG5ldyB3M2UoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMu''@;'; put 'put ''Y29uZGl0aW9uQ29sbGVjdGlvbixhPT50aGlzLmdldERhdGFNYXBBdENvbHVtbihhKSl9Z2V0SW5kZXhlc09mQ29tcG9uZW50cygpe2NvbnN0IGM9W107aWYoIXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXJldHVybiBjO2NvbnN0IGE9dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4ubWVudTtmb3Io''@;'; put 'put ''dmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gVG4oaCx2PT57VG4oYS5tZW51SXRlbXMsKFMsVik9PntTLmtleT09PXYuZ2V0TWVudUl0ZW1EZXNjcmlwdG9yKCkua2V5JiZjLnB1c2goVil9KX0pLGN9Y2hh''@;'; put 'put ''bmdlQ29tcG9uZW50c1Zpc2liaWxpdHkoKXtsZXQgYz0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdO2lmKCF0aGlzLmRyb3Bkb3duTWVudVBsdWdpbilyZXR1cm47Y29uc3QgZD10aGlzLmRyb3Bkb3duTWVudVBsdWdpbi5tZW51Lmhv''@;'; put 'put ''dE1lbnUsaD1kLmdldFBsdWdpbigiaGlkZGVuUm93cyIpO2Zvcih2YXIgZj1hcmd1bWVudHMubGVuZ3RoLHY9bmV3IEFycmF5KGY+MT9mLTE6MCksUz0xO1M8ZjtTKyspdltTLTFdPWFyZ3VtZW50c1tTXTtjb25zdCBWPXRoaXMuZ2V0SW5kZXhlc09mQ29tcG9uZW50cyguLi52KTtjP2guc2hv''@;'; put 'put ''d1Jvd3MoVik6aC5oaWRlUm93cyhWKSxkLnJlbmRlcigpfWhpZGVDb21wb25lbnRzKCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYyksZD0wO2Q8YztkKyspYVtkXT1hcmd1bWVudHNbZF07dGhpcy5jaGFuZ2VDb21wb25lbnRzVmlzaWJpbGl0eSghMSwuLi5hKX1z''@;'; put 'put ''aG93Q29tcG9uZW50cygpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGMpLGQ9MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3RoaXMuY2hhbmdlQ29tcG9uZW50c1Zpc2liaWxpdHkoITAsLi4uYSl9ZGVzdHJveSgpe3RoaXMuZW5hYmxlZCYmKHRoaXMuY29tcG9u''@;'; put 'put ''ZW50cy5mb3JFYWNoKChjLGEpPT57bnVsbCE9PWMmJihjLmRlc3Ryb3koKSx0aGlzLmNvbXBvbmVudHMuc2V0KGEsbnVsbCkpfSksdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyLmRlc3Ryb3koKSx0aGlzLmhvdC5yb3dJbmRl''@;'; put 'put ''eE1hcHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSkpLHN1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gZWF0KGwpe2wmJlRuKGwsYz0+e2NvbnN0WyxhXT1jLGQ9dGhpcy5ob3QucHJvcFRvQ29sKGEpO3RoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5oYXNDb25kaXRpb25zKGQpJiZ0''@;'; put 'put ''aGlzLnVwZGF0ZVZhbHVlQ29tcG9uZW50Q29uZGl0aW9uKGQpfSl9ZnVuY3Rpb24gdGF0KCl7dGhpcy5yZXN0b3JlQ29tcG9uZW50cyhBcnJheS5mcm9tKHRoaXMuY29tcG9uZW50cy52YWx1ZXMoKSkpfWZ1bmN0aW9uIG5hdCgpe3RoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25k''@;'; put 'put ''aXRpb24iKS5nZXRTZWxlY3RFbGVtZW50KCkuY2xvc2VPcHRpb25zKCksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X2NvbmRpdGlvbjIiKS5nZXRTZWxlY3RFbGVtZW50KCkuY2xvc2VPcHRpb25zKCl9ZnVuY3Rpb24gcmF0KGwpe2wuaXRlbXMucHVzaCh7bmFtZTpFc30pLHRoaXMu''@;'; put 'put ''Y29tcG9uZW50cy5mb3JFYWNoKGM9PntsLml0ZW1zLnB1c2goYy5nZXRNZW51SXRlbURlc2NyaXB0b3IoKSl9KX1mdW5jdGlvbiB4M2UobCl7dmFyIGM7aWYoImFjY2VwdCI9PT1sKXtjb25zdCBkPXRoaXMuZ2V0U2VsZWN0ZWRDb2x1bW4oKTt2YXIgYTtpZihudWxsPT09ZClyZXR1cm4gdm9p''@;'; put 'put ''ZChudWxsPT09KGE9dGhpcy5kcm9wZG93bk1lbnVQbHVnaW4pfHx2b2lkIDA9PT1hfHxhLmNsb3NlKCkpO2NvbnN0e3BoeXNpY2FsSW5kZXg6aH09ZCxmPXRoaXMuY29tcG9uZW50cy5nZXQoImZpbHRlcl9ieV9jb25kaXRpb24iKS5nZXRTdGF0ZSgpLHY9dGhpcy5jb21wb25lbnRzLmdldCgi''@;'; put 'put ''ZmlsdGVyX2J5X2NvbmRpdGlvbjIiKS5nZXRTdGF0ZSgpLFM9dGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVlIikuZ2V0U3RhdGUoKSxWPXRoaXMuZ2V0T3BlcmF0aW9uQmFzZWRPbkFyZ3VtZW50cyh0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfb3BlcmF0b3JzIikuZ2V0''@;'; put 'put ''QWN0aXZlT3BlcmF0aW9uSWQoKSxmLHYsUyk7dGhpcy5jb25kaXRpb25VcGRhdGVPYnNlcnZlci5ncm91cENoYW5nZXMoKTtsZXQgUT10aGlzLmNvbmRpdGlvbkNvbGxlY3Rpb24uZ2V0Q29sdW1uU3RhY2tQb3NpdGlvbihoKTstMT09PVEmJihRPXZvaWQgMCksdGhpcy5jb25kaXRpb25Db2xs''@;'; put 'put ''ZWN0aW9uLnJlbW92ZUNvbmRpdGlvbnMoaCksZi5jb21tYW5kLmtleSE9PVd1JiYodGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihoLGYsVixRKSx2LmNvbW1hbmQua2V5IT09V3UmJnRoaXMuY29uZGl0aW9uQ29sbGVjdGlvbi5hZGRDb25kaXRpb24oaCx2LFYsUSkpLFMu''@;'; put 'put ''Y29tbWFuZC5rZXkhPT1XdSYmdGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmFkZENvbmRpdGlvbihoLFMsVixRKSx0aGlzLmNvbmRpdGlvblVwZGF0ZU9ic2VydmVyLmZsdXNoKCksdGhpcy5jb21wb25lbnRzLmZvckVhY2goZGU9PmRlLnNhdmVTdGF0ZShoKSksdGhpcy5maWx0ZXJzUm93c01h''@;'; put 'put ''cC5jbGVhcigpLHRoaXMuZmlsdGVyKCl9bnVsbD09PShjPXRoaXMuZHJvcGRvd25NZW51UGx1Z2luKXx8dm9pZCAwPT09Y3x8Yy5jbG9zZSgpfWZ1bmN0aW9uIGlhdChsLGMpe3RoaXMudXBkYXRlRGVwZW5kZW50Q29tcG9uZW50c1Zpc2liaWxpdHkoKSxsLmNvbnN0cnVjdG9yPT09UksmJiFj''@;'; put 'put ''LmlucHV0c0NvdW50JiZ0aGlzLnNldExpc3RlbmluZ0Ryb3Bkb3duTWVudSgpfWZ1bmN0aW9uIEUzZSgpe3RoaXMuc2V0TGlzdGVuaW5nRHJvcGRvd25NZW51KCl9ZnVuY3Rpb24gb2F0KGwsYyl7Y29uc3QgYT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGwpO3RoaXMuZW5hYmxlZCYmdGhp''@;'; put 'put ''cy5jb25kaXRpb25Db2xsZWN0aW9uLmhhc0NvbmRpdGlvbnMoYSk/bWkoYywiaHRGaWx0ZXJzQWN0aXZlIik6bHMoYywiaHRGaWx0ZXJzQWN0aXZlIil9ZnVuY3Rpb24gc2F0KGwpe3ZhciBjO2lmKG51bGw9PT0oYz10aGlzLmRyb3Bkb3duTWVudVBsdWdpbil8fHZvaWQgMD09PWN8fCFjLmVu''@;'; put 'put ''YWJsZWQpcmV0dXJuO2NvbnN0e2VkaXRlZENvbmRpdGlvblN0YWNrOntjb25kaXRpb25zOmEsY29sdW1uOmR9fT1sLGg9YS5maWx0ZXIodj0+di5uYW1lPT09YjcpLGY9YS5maWx0ZXIodj0+di5uYW1lIT09YjcpO2lmKGgubGVuZ3RoPj0yfHxmLmxlbmd0aD49MylpbChOYWBUaGUgZmlsdGVy''@;'; put 'put ''IGNvbmRpdGlvbnMgaGF2ZSBiZWVuIGFwcGxpZWQgcHJvcGVybHksIGJ1dCBjb3VsZG7igJl0IGJlIGRpc3BsYXllZCB2aXN1YWxseS5ceDIwCiAgICAgICAgVGhlIG92ZXJhbGwgYW1vdW50IG9mIGNvbmRpdGlvbnMgZXhjZWVkIHRoZSBjYXBhYmlsaXR5IG9mIHRoZSBkcm9wZG93biBtZW51''@;'; put 'put ''Llx4MjAKICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi5gKTtlbHNle2NvbnN0IHY9dGhpcy5jb25kaXRpb25Db2xsZWN0aW9uLmdldE9wZXJhdGlvbihkKTt0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uIikudXBkYXRlU3RhdGUo''@;'; put 'put ''ZlswXSxkKSx0aGlzLmNvbXBvbmVudHMuZ2V0KCJmaWx0ZXJfYnlfY29uZGl0aW9uMiIpLnVwZGF0ZVN0YXRlKGZbMV0sZCksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX29wZXJhdG9ycyIpLnVwZGF0ZVN0YXRlKHYsZCksdGhpcy5jb21wb25lbnRzLmdldCgiZmlsdGVyX2J5X3ZhbHVl''@;'; put 'put ''IikudXBkYXRlU3RhdGUobCl9fWNvbnN0IFQzZT0iaW50ZXJuYWwtdXNlLWluLWhhbmRzb250YWJsZSIsVUs9e2xpY2Vuc2VLZXk6VDNlLHVzZUFycmF5QXJpdGhtZXRpYzohMCx1c2VDb2x1bW5JbmRleDohMSx1c2VTdGF0czohMSxldmFsdWF0ZU51bGxUb1plcm86ITAscHJlY2lzaW9uRXBz''@;'; put 'put ''aWxvbjoxZS0xMyxwcmVjaXNpb25Sb3VuZGluZzoxNCxzbWFydFJvdW5kaW5nOiEwLGxlYXBZZWFyMTkwMDohMSxudWxsRGF0ZTp7eWVhcjoxODk5LG1vbnRoOjEyLGRheTozMH0sbnVsbFllYXI6MzAsZGF0ZUZvcm1hdHM6WyJERC9NTS9ZWVlZIiwiREQvTU0vWVkiXSx0aW1lRm9ybWF0czpb''@;'; put 'put ''ImhoOm1tIiwiaGg6bW06c3Muc3NzIl0sbWF0Y2hXaG9sZUNlbGw6ITAsdXNlUmVndWxhckV4cHJlc3Npb25zOiExLHVzZVdpbGRjYXJkczohMCxmdW5jdGlvbkFyZ1NlcGFyYXRvcjoiLCIsdGhvdXNhbmRTZXBhcmF0b3I6IiIsZGVjaW1hbFNlcGFyYXRvcjoiLiIsbGFuZ3VhZ2U6ImVuR0Ii''@;'; put 'put ''fTtmdW5jdGlvbiBrM2UobCl7dmFyIGM7cmV0dXJue21heENvbHVtbnM6bC5tYXhDb2x1bW5zLG1heFJvd3M6bC5tYXhSb3dzLGxhbmd1YWdlOm51bGw9PT0oYz1sW04wXSl8fHZvaWQgMD09PWN8fG51bGw9PT0oYz1jLmxhbmd1YWdlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5sYW5nQ29kZX19''@;'; put 'put ''ZnVuY3Rpb24gQTNlKGwpe3JldHVybiBPYmplY3Qua2V5cyhsKS5yZWR1Y2UoKGMsYSk9PigiaHlwZXJmb3JtdWxhIiE9PWEmJihjW2FdPWxbYV0pLGMpLHt9KX1mdW5jdGlvbiBnUCgpe2NvbnN0IGw9ImVuZ2luZV9yZWxhdGlvbnNoaXAiLGM9YWYoTjApO3JldHVybiBjLmhhc0l0ZW0obCl8''@;'; put 'put ''fGMucmVnaXN0ZXIobCxuZXcgTWFwKSxjLmdldEl0ZW0obCl9ZnVuY3Rpb24gWksoKXtjb25zdCBsPSJzaGFyZWRfZW5naW5lX3VzYWdlIixjPWFmKE4wKTtyZXR1cm4gYy5oYXNJdGVtKGwpfHxjLnJlZ2lzdGVyKGwsbmV3IE1hcCksYy5nZXRJdGVtKGwpfWZ1bmN0aW9uIEQzZShsKXt2YXIg''@;'; put 'put ''Yztjb25zdCBhPWdQKCksZD0wPT09YS5zaXplP1tdOkFycmF5LmZyb20obnVsbCE9PShjPWEuZ2V0KGwpKSYmdm9pZCAwIT09Yz9jOltdKTtyZXR1cm4gbmV3IE1hcChkLm1hcChoPT5baC5nZXRQbHVnaW4oImZvcm11bGFzIikuc2hlZXRJZCxoXSkpfWZ1bmN0aW9uIEkzZShsLGMpe2lmKGwp''@;'; put 'put ''e2NvbnN0IGE9Z1AoKSxkPWEuZ2V0KGwpLGg9WksoKSxmPWguZ2V0KGwpO2QmJmQuaW5jbHVkZXMoYykmJihkLnNwbGljZShkLmluZGV4T2YoYyksMSksMD09PWQubGVuZ3RoJiZhLmRlbGV0ZShsKSksZiYmZi5pbmNsdWRlcyhjLmd1aWQpJiYoZi5zcGxpY2UoZi5pbmRleE9mKGMuZ3VpZCks''@;'; put 'put ''MSksMD09PWYubGVuZ3RoJiYoaC5kZWxldGUobCksbC5kZXN0cm95KCkpKX19Y29uc3QgUjNlPSJERC9NTS9ZWVlZIjtmdW5jdGlvbiBMM2UobCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBsJiYiJyI9PT1sLmNoYXJBdCgwKSYmIj0iPT09bC5jaGFyQXQoMSl9ZnVuY3Rpb24gWUsobCxjKXty''@;'; put 'put ''ZXR1cm4ic3RyaW5nIj09dHlwZW9mIGwmJiJkYXRlIj09PWN9ZnVuY3Rpb24gTzNlKGwsYyl7cmV0dXJuIGFzKGwsYywhMCkuaXNWYWxpZCgpfWZ1bmN0aW9uIFAzZShsLGMpe3JldHVybiBhcyhsLGMsITApLmZvcm1hdChSM2UpfWZ1bmN0aW9uIF9hdChsLGMpe3JldHVybiBhcyhsLFIzZSwh''@;'; put 'put ''MCkuZm9ybWF0KGMpfWZ1bmN0aW9uIEYzZShsLGMpe2NvbnN0IGQ9bmV3IERhdGUoRGF0ZS5VVEMoMCwwLGwrLTEpKTtyZXR1cm4gYXMoZCkuZm9ybWF0KGMpfWZ1bmN0aW9uIFdLKGwsYyxhKXtjb25zdCBkPWZ1bmN0aW9uIHlhdChsLGMpe2NvbnN0IGE9W107cmV0dXJuIGwuZm9yRWFjaChk''@;'; put 'put ''PT57Y29uc3QgaD17ZnJvbTpkLHRvOmN9O2EuZm9yRWFjaChmPT57Zi5mcm9tPmguZnJvbSYmZi50bzw9aC5mcm9tJiZmLmZyb20+Zi50byYmKGguZnJvbSs9MSl9KSxoLmZyb20+PWMmJihjKz0xKSxhLnB1c2goaCl9KSxhfShsLGZ1bmN0aW9uIGJhdChsLGMsYSl7Y29uc3QgZD1BcnJheS5m''@;'; put 'put ''cm9tKEFycmF5KGEpLmtleXMoKSkuZmlsdGVyKGY9PiExPT09bC5pbmNsdWRlcyhmKSk7dmFyIGg7cmV0dXJuIDA9PT1jP251bGwhPT0oaD1kW2NdKSYmdm9pZCAwIT09aD9oOjA6ZFtjLTFdKzF9KGwsYyxhKSk7cmV0dXJuIGZ1bmN0aW9uIHdhdChsKXtyZXR1cm4gbC5mb3JFYWNoKChjLGEp''@;'; put 'put ''PT57bC5zbGljZShhKzEpLmZvckVhY2goaD0+e2guZnJvbT5jLmZyb20mJmguZnJvbTxoLnRvJiYoaC5mcm9tLT0xKX0pfSksbH0oZCl9ZnVuY3Rpb24gQzcobCxjLGEpeyhmdW5jdGlvbiBDYXQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6''@;'; put 'put ''ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIExsKGwsYyl7cmV0dXJuIGwuZ2V0KE4zZShsLGMpKX1mdW5jdGlvbiBhNShsLGMsYSl7cmV0dXJuIGwuc2V0KE4zZShsLGMpLGEpLGF9ZnVuY3Rpb24gTjNl''@;'; put 'put ''KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgQUU9bmV3IFdlYWtNYXAs''@;'; put 'put ''bDU9bmV3IFdlYWtNYXAsSGQ9bmV3IFdlYWtNYXAsbVA9bmV3IFdlYWtNYXAsR0s9bmV3IFdlYWtNYXAsJEs9bmV3IFdlYWtNYXAsdlA9bmV3IFdlYWtNYXA7Y29uc3QgSDNlPWNsYXNzIFNhdHtjb25zdHJ1Y3RvcihjLGEsZCl7QzcodGhpcyxBRSx2b2lkIDApLEM3KHRoaXMsbDUsdm9pZCAw''@;'; put 'put ''KSxDNyh0aGlzLEhkLHZvaWQgMCksQzcodGhpcyxtUCxbXSksQzcodGhpcyxHSyxbXSksQzcodGhpcywkSyx2b2lkIDApLEM3KHRoaXMsdlAsW10pLGE1KEFFLHRoaXMsYyksYTUobDUsdGhpcyxhKSxhNShIZCx0aGlzLGQpfXNldFJlbW92ZWRIZkluZGV4ZXMoYyl7cmV0dXJuIGE1KHZQLHRo''@;'; put 'put ''aXMsYy5tYXAoYT0+e2NvbnN0IGQ9TGwobDUsdGhpcykuZ2V0VmlzdWFsRnJvbVBoeXNpY2FsSW5kZXgoYSk7cmV0dXJuIHRoaXMuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChkKX0pKSxMbCh2UCx0aGlzKX1nZXRSZW1vdmVkSGZJbmRleGVzKCl7cmV0dXJuIExsKHZQLHRoaXMpfWdldEhm''@;'; put 'put ''SW5kZXhGcm9tVmlzdWFsSW5kZXgoYyl7Y29uc3QgYT1MbChsNSx0aGlzKS5nZXRJbmRleGVzU2VxdWVuY2UoKSxkPUxsKGw1LHRoaXMpLmdldE5vdFRyaW1tZWRJbmRleGVzKCk7cmV0dXJuIGEuaW5kZXhPZihkW2NdKX1zeW5jTW92ZXMoYyl7Y29uc3QgZD1gbW92ZSR7STAoTGwoQUUsdGhp''@;'; put 'put ''cykpfXNgO0xsKEhkLHRoaXMpLmdldEVuZ2luZSgpLmJhdGNoKCgpPT57Yy5mb3JFYWNoKGg9PntoLmZyb20hPT1oLnRvJiZoLmZyb20rMSE9PWgudG8mJkxsKEhkLHRoaXMpLmdldEVuZ2luZSgpW2RdKExsKEhkLHRoaXMpLmdldFNoZWV0SWQoKSxoLmZyb20sMSxoLnRvKX0pfSl9c3RvcmVN''@;'; put 'put ''b3Zlc0luZm9ybWF0aW9uKGMsYSxkKXshMSE9PWQmJihhNShHSyx0aGlzLGMubWFwKGg9PnRoaXMuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChoKSkpLGE1KCRLLHRoaXMsdGhpcy5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGEpKSl9Y2FsY3VsYXRlQW5kU3luY01vdmVzKGMsYSl7aWYo''@;'; put 'put ''TGwoSGQsdGhpcykuaXNQZXJmb3JtaW5nVW5kb1JlZG8oKXx8ITE9PT1jfHwhMT09PWEpcmV0dXJuO2NvbnN0IGQ9V0soTGwoR0ssdGhpcyksTGwoJEssdGhpcyksTGwobDUsdGhpcykuZ2V0TnVtYmVyT2ZJbmRleGVzKCkpO251bGw9PT1MbChIZCx0aGlzKS5nZXRTaGVldElkKCk/TGwoSGQs''@;'; put 'put ''dGhpcykuZ2V0UG9zdHBvbmVBY3Rpb24oKCk9PnRoaXMuc3luY01vdmVzKGQpKTp0aGlzLnN5bmNNb3ZlcyhkKX1nZXRJbmRleGVzQ2hhbmdlU3luY01ldGhvZCgpe2NvbnN0IGM9YHNldCR7STAoTGwoQUUsdGhpcykpfU9yZGVyYDtyZXR1cm4gYT0+e2lmKExsKEhkLHRoaXMpLmlzUGVyZm9y''@;'; put 'put ''bWluZ1VuZG9SZWRvKCkpcmV0dXJuO2NvbnN0IGQ9TGwobDUsdGhpcykuZ2V0SW5kZXhlc1NlcXVlbmNlKCk7aWYoInVwZGF0ZSI9PT1hJiZkLmxlbmd0aD4wKXtjb25zdCBoPUxsKG1QLHRoaXMpLm1hcChWPT5kLmluZGV4T2YoVikpLGY9TGwoSGQsdGhpcykuZ2V0RW5naW5lKCkuZ2V0U2hl''@;'; put 'put ''ZXREaW1lbnNpb25zKExsKEhkLHRoaXMpLmdldFNoZWV0SWQoKSk7bGV0IHY7dj0icm93Ij09PUxsKEFFLHRoaXMpP2YuaGVpZ2h0OmYud2lkdGg7Zm9yKGxldCBWPWgubGVuZ3RoO1Y8djtWKz0xKWgucHVzaChWKTtMbChIZCx0aGlzKS5nZXRFbmdpbmUoKVtjXShMbChIZCx0aGlzKS5nZXRT''@;'; put 'put ''aGVldElkKCksaCl9YTUobVAsdGhpcyxkKX19aW5pdCgpe2E1KG1QLHRoaXMsTGwobDUsdGhpcykuZ2V0SW5kZXhlc1NlcXVlbmNlKCkpfX07ZnVuY3Rpb24gUzcobCxjLGEpeyhmdW5jdGlvbiBNYXQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlh''@;'; put 'put ''bGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIFo0KGwsYyl7cmV0dXJuIGwuZ2V0KFYzZShsLGMpKX1mdW5jdGlvbiBNNyhsLGMsYSl7cmV0dXJuIGwuc2V0KFYzZShsLGMpLGEpLGF9ZnVuY3Rpb24g''@;'; put 'put ''VjNlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX12YXIgX1A9bmV3IFdlYWtN''@;'; put 'put ''YXAsYlA9bmV3IFdlYWtNYXAscUs9bmV3IFdlYWtNYXAsS0s9bmV3IFdlYWtNYXAsWEs9bmV3IFdlYWtNYXAsSks9bmV3IFdlYWtNYXAsUUs9bmV3IFdlYWtNYXA7Y29uc3QgRWF0PWNsYXNzIHhhdHtjb25zdHJ1Y3RvcihjLGEsZCl7UzcodGhpcyxfUCx2b2lkIDApLFM3KHRoaXMsYlAsdm9p''@;'; put 'put ''ZCAwKSxTNyh0aGlzLHFLLHZvaWQgMCksUzcodGhpcyxLSywhMSksUzcodGhpcyxYSywhMSksUzcodGhpcyxKSyxudWxsKSxTNyh0aGlzLFFLLG51bGwpLE03KF9QLHRoaXMsbmV3IEgzZSgicm93IixjLHRoaXMpKSxNNyhiUCx0aGlzLG5ldyBIM2UoImNvbHVtbiIsYSx0aGlzKSksTTcocUss''@;'; put 'put ''dGhpcyxkKX1nZXRGb3JBeGlzKGMpe3JldHVybiBaNCgicm93Ij09PWM/X1A6YlAsdGhpcyl9c2V0UGVyZm9ybVVuZG8oYyl7TTcoS0ssdGhpcyxjKX1zZXRQZXJmb3JtUmVkbyhjKXtNNyhYSyx0aGlzLGMpfWlzUGVyZm9ybWluZ1VuZG9SZWRvKCl7cmV0dXJuIFo0KEtLLHRoaXMpfHxaNChY''@;'; put 'put ''Syx0aGlzKX1nZXRTaGVldElkKCl7cmV0dXJuIFo0KFFLLHRoaXMpfWdldEVuZ2luZSgpe3JldHVybiBaNChKSyx0aGlzKX1nZXRQb3N0cG9uZUFjdGlvbigpe3JldHVybiBaNChxSyx0aGlzKX1zZXR1cFN5bmNFbmRwb2ludChjLGEpe003KEpLLHRoaXMsYyksTTcoUUssdGhpcyxhKSxaNChf''@;'; put 'put ''UCx0aGlzKS5pbml0KCksWjQoYlAsdGhpcykuaW5pdCgpfX07ZnVuY3Rpb24gUWIobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGthdChsKXt2YXIgYz1mdW5jdGlvbiBBYXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZl''@;'; put 'put ''XTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/''@;'; put 'put ''U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVu''@;'; put 'put ''Y3Rpb24gZVgobCxjLGEpe0IzZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gQjNlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBjNShs''@;'; put 'put ''LGMsYSl7cmV0dXJuIGwuc2V0KEdhKGwsYyksYSksYX1mdW5jdGlvbiBleShsLGMpe3JldHVybiBsLmdldChHYShsLGMpKX1mdW5jdGlvbiBHYShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9Y29uc3QgTjA9ImZvcm11bGFzIixEYXQ9WyJtYXhSb3dzIiwibWF4Q29sdW1ucyIsImxhbmd1YWdlIl07YW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyTmFtZWRFeHBy''@;'; put 'put ''ZXNzaW9uQWRkZWQiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJOYW1lZEV4cHJlc3Npb25SZW1vdmVkIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyU2hlZXRBZGRlZCIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVtb3ZlZCIp''@;'; put 'put ''LGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlclNoZWV0UmVuYW1lZCIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckZvcm11bGFzVmFsdWVzVXBkYXRlIik7Y29uc3QgdHk9bD0+IlVuZG9SZWRvLnVuZG8iPT09bHx8IlVuZG9SZWRvLnJlZG8iPT09bHx8ImF1dG8i''@;'; put 'put ''PT09bDt2YXIgWTQ9bmV3IFdlYWtNYXAsdFg9bmV3IFdlYWtNYXAsREU9bmV3IFdlYWtNYXAsb2w9bmV3IFdlYWtTZXQ7Y2xhc3MgUmF0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXt2YXIgYztzdXBlciguLi5hcmd1bWVudHMpLGM9dGhpcyxmdW5jdGlvbiBUYXQobCxjKXtCM2UobCxjKSxj''@;'; put 'put ''LmFkZChsKX0odGhpcyxvbCksZVgodGhpcyxZNCwhMSksZVgodGhpcyx0WCwhMSksZVgodGhpcyxERSxbWyJ2YWx1ZXNVcGRhdGVkIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVy''@;'; put 'put ''biBHYShvbCxjLCRhdCkuY2FsbChjLC4uLmQpfV0sWyJuYW1lZEV4cHJlc3Npb25BZGRlZCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gR2Eob2wsYyxxYXQpLmNhbGwoYywu''@;'; put 'put ''Li5kKX1dLFsibmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gR2Eob2wsYyxLYXQpLmNhbGwoYywuLi5kKX1dLFsic2hlZXRBZGRlZCIs''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gR2Eob2wsYyxYYXQpLmNhbGwoYywuLi5kKX1dLFsic2hlZXRSZW5hbWVkIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBHYShvbCxjLEphdCkuY2FsbChjLC4uLmQpfV0sWyJzaGVldFJlbW92ZWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTto''@;'; put 'put ''KyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIEdhKG9sLGMsUWF0KS5jYWxsKGMsLi4uZCl9XV0pLFFiKHRoaXMsInN0YXRpY1JlZ2lzdGVyIixhZigiZm9ybXVsYXMiKSksUWIodGhpcywiZW5naW5lIixudWxsKSxRYih0aGlzLCJzaGVldE5hbWUiLG51bGwpLFFiKHRoaXMsImluZGV4U3lu''@;'; put 'put ''Y2VyIixudWxsKSxRYih0aGlzLCJyb3dBeGlzU3luY2VyIixudWxsKSxRYih0aGlzLCJjb2x1bW5BeGlzU3luY2VyIixudWxsKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gTjB9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMjYwfXN0YXRpYyBnZXQgU0VUVElO''@;'; put 'put ''R19LRVlTKCl7cmV0dXJuW04wLC4uLkRhdF19Z2V0IHNoZWV0SWQoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2hlZXROYW1lP251bGw6dGhpcy5lbmdpbmUuZ2V0U2hlZXRJZCh0aGlzLnNoZWV0TmFtZSl9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW04wXX1lbmFi''@;'; put 'put ''bGVQbHVnaW4oKXt2YXIgYyxhPXRoaXM7aWYoIXRoaXMuZW5hYmxlZCl7aWYodGhpcy5lbmdpbmU9bnVsbCE9PShjPWZ1bmN0aW9uIHVhdChsKXtjb25zdCBjPWwuZ2V0U2V0dGluZ3MoKSxhPWNbTjBdLGQ9YT8uZW5naW5lO2lmKCEwPT09YXx8ZGwoZCkpcmV0dXJuIG51bGw7dmFyIGg7aWYo''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIGQuaHlwZXJmb3JtdWxhfHwiZnVuY3Rpb24iPT10eXBlb2YgZClyZXR1cm4gZnVuY3Rpb24gZGF0KGwsYyxhKXtjb25zdCBkPWNbTjBdLGg9ZnVuY3Rpb24gYWF0KGwpe3ZhciBjO2NvbnN0IGE9bFtOMF0sZD1BM2UobnVsbCE9YSYmbnVsbCE9PShjPWEuZW5n''@;'; put 'put ''aW5lKSYmdm9pZCAwIT09YyYmYy5oeXBlcmZvcm11bGE/YS5lbmdpbmU6e30pLGg9azNlKGwpO3JldHVybnsuLi5VSywuLi5kLC4uLmh9fShjKSxmPWdQKCksdj1aSygpOyhmdW5jdGlvbiBoYXQobCxjKXtjJiZjLmZvckVhY2goYT0+e2NvbnN0e25hbWU6ZCxwbHVnaW46aCx0cmFuc2xhdGlv''@;'; put 'put ''bnM6Zn09YTt0cnl7bC5yZWdpc3RlckZ1bmN0aW9uKGQsaCxmKX1jYXRjaCh2KXtpbCh2Lm1lc3NhZ2UpfX0pfSkobCxkLmZ1bmN0aW9ucyksZnVuY3Rpb24gZmF0KGwsYyl7aWYoYyl7Y29uc3R7bGFuZ0NvZGU6YX09Yzt0cnl7bC5yZWdpc3Rlckxhbmd1YWdlKGEsYyl9Y2F0Y2goZCl7aWwo''@;'; put 'put ''ZC5tZXNzYWdlKX19fShsLGQubGFuZ3VhZ2UpO2NvbnN0IFM9bC5idWlsZEVtcHR5KGgpO3JldHVybiBmLnNldChTLFthXSksdi5zZXQoUyxbYS5ndWlkXSksZnVuY3Rpb24gcGF0KGwsYyl7YyYmKGwuc3VzcGVuZEV2YWx1YXRpb24oKSxjLmZvckVhY2goYT0+e2NvbnN0e25hbWU6ZCxleHBy''@;'; put 'put ''ZXNzaW9uOmgsc2NvcGU6ZixvcHRpb25zOnZ9PWE7dHJ5e2wuYWRkTmFtZWRFeHByZXNzaW9uKGQsaCxmLHYpfWNhdGNoKFMpe2lsKFMubWVzc2FnZSl9fSksbC5yZXN1bWVFdmFsdWF0aW9uKCkpfShTLGQubmFtZWRFeHByZXNzaW9ucyksUy5vbigic2hlZXRBZGRlZCIsKCk9PntTLnJlYnVp''@;'; put 'put ''bGRBbmRSZWNhbGN1bGF0ZSgpfSksUy5vbigic2hlZXRSZW1vdmVkIiwoKT0+e1MucmVidWlsZEFuZFJlY2FsY3VsYXRlKCl9KSxTfShudWxsIT09KGg9ZC5oeXBlcmZvcm11bGEpJiZ2b2lkIDAhPT1oP2g6ZCxjLGwpO2lmKCJvYmplY3QiPT10eXBlb2YgZCYmZGwoZC5oeXBlcmZvcm11bGEp''@;'; put 'put ''KXtjb25zdCBmPWdQKCksdj1aSygpLmdldChkKTtyZXR1cm4gZi5oYXMoZCl8fGYuc2V0KGQsW10pLGYuZ2V0KGQpLnB1c2gobCksdiYmdi5wdXNoKGwuZ3VpZCksZC5nZXRDb25maWcoKS5saWNlbnNlS2V5fHxkLnVwZGF0ZUNvbmZpZyh7bGljZW5zZUtleTpUM2V9KSwoZC5nZXRDb25maWco''@;'; put 'put ''KS5sZWFwWWVhcjE5MDAhPT1VSy5sZWFwWWVhcjE5MDB8fCExPT09c0woZC5nZXRDb25maWcoKS5udWxsRGF0ZSxVSy5udWxsRGF0ZSkpJiZpbChOYWBJZiB5b3UgdXNlIEh5cGVyRm9ybXVsYSB3aXRoIEhhbmRzb250YWJsZSwga2VlcCB0aGUgZGVmYXVsdCBcYGxlYXBZZWFyMTkwMFxgIGFu''@;'; put 'put ''ZCBcYG51bGxEYXRlXGAgCiAgICAgIHNldHRpbmdzLiBPdGhlcndpc2UsIEh5cGVyRm9ybXVsYSdzIGRhdGVzIG1heSBub3Qgc3luYyBjb3JyZWN0bHkgd2l0aCBIYW5kc29udGFibGUncyBkYXRlcy5gKSxkfXJldHVybiBudWxsfSh0aGlzLmhvdCkpJiZ2b2lkIDAhPT1jP2M6dGhpcy5lbmdp''@;'; put 'put ''bmUsIXRoaXMuZW5naW5lKXJldHVybiB2b2lkIGlsKCJNaXNzaW5nIHRoZSByZXF1aXJlZCBgZW5naW5lYCBrZXkgaW4gdGhlIEZvcm11bGFzIHNldHRpbmdzLiBQbGVhc2UgZmlsbCBpdCB3aXRoIGVpdGhlciBhbiBlbmdpbmUgY2xhc3Mgb3IgYW4gZW5naW5lIGluc3RhbmNlLiIpO2lmKG51''@;'; put 'put ''bGwhPT10aGlzLnNoZWV0TmFtZSYmIXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKSl7Y29uc3QgZD10aGlzLmFkZFNoZWV0KHRoaXMuc2hlZXROYW1lLHRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheSgpKTshMSE9PWQmJih0aGlzLnNoZWV0TmFtZT1kKX10aGlz''@;'; put 'put ''LmFkZEhvb2soImJlZm9yZUxvYWREYXRhIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLGozZSkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlckxv''@;'; put 'put ''YWREYXRhIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLHozZSkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVVcGRhdGVEYXRhIixmdW5jdGlv''@;'; put 'put ''bigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLGozZSkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlclVwZGF0ZURhdGEiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsejNlKS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeURhdGEiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcg''@;'; put 'put ''QXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsRmF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVNvdXJjZURhdGEiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8''@;'; put 'put ''ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsTmF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVZhbGlkYXRlIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1l''@;'; put 'put ''bnRzW2ZdO3JldHVybiBHYShvbCxhLExhdCkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlclNldFNvdXJjZURhdGFBdENlbGwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07''@;'; put 'put ''cmV0dXJuIEdhKG9sLGEsSGF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2V0RGF0YUF0Q2VsbCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gR2Eob2ws''@;'; put 'put ''YSxVM2UpLmNhbGwoYSwuLi5oKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZXREYXRhQXRSb3dQcm9wIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLFUzZSkuY2Fs''@;'; put 'put ''bChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDcmVhdGVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsVmF0KS5jYWxsKGEsLi4uaCl9KSx0aGlz''@;'; put 'put ''LmFkZEhvb2soImJlZm9yZUNyZWF0ZUNvbCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gR2Eob2wsYSxCYXQpLmNhbGwoYSwuLi5oKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJD''@;'; put 'put ''cmVhdGVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsVWF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ3JlYXRlQ29sIixmdW5jdGlv''@;'; put 'put ''bigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLFphdCkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsamF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxo''@;'; put 'put ''PW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gR2Eob2wsYSx6YXQpLmNhbGwoYSwuLi5oKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0w''@;'; put 'put ''O2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEdhKG9sLGEsWWF0KS5jYWxsKGEsLi4uaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJn''@;'; put 'put ''dW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLFdhdCkuY2FsbChhLC4uLmgpfSksdGhpcy5pbmRleFN5bmNlcj1uZXcgRWF0KHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGQ9Pnt0aGlzLmhvdC5hZGRIb29rT25jZSgiaW5pdCIsKCk9PntkKCl9KX0p''@;'; put 'put ''LHRoaXMucm93QXhpc1N5bmNlcj10aGlzLmluZGV4U3luY2VyLmdldEZvckF4aXMoInJvdyIpLHRoaXMuY29sdW1uQXhpc1N5bmNlcj10aGlzLmluZGV4U3luY2VyLmdldEZvckF4aXMoImNvbHVtbiIpLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUm93U2VxdWVuY2VDaGFuZ2UiLHRoaXMucm93''@;'; put 'put ''QXhpc1N5bmNlci5nZXRJbmRleGVzQ2hhbmdlU3luY01ldGhvZCgpKSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNvbHVtblNlcXVlbmNlQ2hhbmdlIix0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SW5kZXhlc0NoYW5nZVN5bmNNZXRob2QoKSksdGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlUm93''@;'; put 'put ''TW92ZSIsKGQsaCxmLHYpPT57dGhpcy5yb3dBeGlzU3luY2VyLnN0b3JlTW92ZXNJbmZvcm1hdGlvbihkLGgsdil9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVDb2x1bW5Nb3ZlIiwoZCxoLGYsdik9Pnt0aGlzLmNvbHVtbkF4aXNTeW5jZXIuc3RvcmVNb3Zlc0luZm9ybWF0aW9uKGQsaCx2''@;'; put 'put ''KX0pLHRoaXMuaG90LmFkZEhvb2soImFmdGVyUm93TW92ZSIsKGQsaCxmLHYsUyk9Pnt0aGlzLnJvd0F4aXNTeW5jZXIuY2FsY3VsYXRlQW5kU3luY01vdmVzKHYsUyl9KSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNvbHVtbk1vdmUiLChkLGgsZix2LFMpPT57dGhpcy5jb2x1bW5BeGlzU3lu''@;'; put 'put ''Y2VyLmNhbGN1bGF0ZUFuZFN5bmNNb3Zlcyh2LFMpfSksdGhpcy5ob3QuYWRkSG9vaygiYmVmb3JlQ29sdW1uRnJlZXplIiwoZCxoKT0+e3RoaXMuY29sdW1uQXhpc1N5bmNlci5zdG9yZU1vdmVzSW5mb3JtYXRpb24oW2RdLHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3Rh''@;'; put 'put ''cnQsaCl9KSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNvbHVtbkZyZWV6ZSIsKGQsaCk9Pnt0aGlzLmNvbHVtbkF4aXNTeW5jZXIuY2FsY3VsYXRlQW5kU3luY01vdmVzKGgsaCl9KSx0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIsKGQsaCk9Pnt0aGlzLmNvbHVtbkF4''@;'; put 'put ''aXNTeW5jZXIuc3RvcmVNb3Zlc0luZm9ybWF0aW9uKFtkXSx0aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0LTEsaCl9KSx0aGlzLmhvdC5hZGRIb29rKCJhZnRlckNvbHVtblVuZnJlZXplIiwoZCxoKT0+e3RoaXMuY29sdW1uQXhpc1N5bmNlci5jYWxjdWxhdGVBbmRT''@;'; put 'put ''eW5jTW92ZXMoaCxoKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDZWxsTWV0YVJlc2V0IixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLFBhdCkuY2FsbChhLC4uLmgp''@;'; put 'put ''fSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvIiwoKT0+e3RoaXMuaW5kZXhTeW5jZXIuc2V0UGVyZm9ybVVuZG8oITApLHRoaXMuZW5naW5lLnVuZG8oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUmVkbyIsKCk9Pnt0aGlzLmluZGV4U3luY2VyLnNldFBlcmZvcm1SZWRvKCEwKSx0aGlzLmVu''@;'; put 'put ''Z2luZS5yZWRvKCl9KSx0aGlzLmFkZEhvb2soImFmdGVyVW5kbyIsKCk9Pnt0aGlzLmluZGV4U3luY2VyLnNldFBlcmZvcm1VbmRvKCExKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJVbmRvIiwoKT0+e3RoaXMuaW5kZXhTeW5jZXIuc2V0UGVyZm9ybVJlZG8oITEpfSksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckRldGFjaENoaWxkIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBHYShvbCxhLEdhdCkuY2FsbChhLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVBdXRvZmlsbCIs''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gR2Eob2wsYSxPYXQpLmNhbGwoYSwuLi5oKX0pLGV5KERFLHRoaXMpLmZvckVhY2goZD0+e2xldFtoLGZdPWQ7cmV0dXJuIHRoaXMu''@;'; put 'put ''ZW5naW5lLm9uKGgsZil9KSxzdXBlci5lbmFibGVQbHVnaW4oKX19ZGlzYWJsZVBsdWdpbigpe2V5KERFLHRoaXMpLmZvckVhY2goYz0+e2xldFthLGRdPWM7cmV0dXJuIHRoaXMuZW5naW5lLm9mZihhLGQpfSksSTNlKHRoaXMuZW5naW5lLHRoaXMuaG90KSx0aGlzLmVuZ2luZT1udWxsLHN1''@;'; put 'put ''cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oYyl7Y29uc3QgYT1mdW5jdGlvbiBsYXQobCl7dmFyIGM7Y29uc3QgYT1sW04wXTtyZXR1cm57Li4uQTNlKG51bGwhPWEmJm51bGwhPT0oYz1hLmVuZ2luZSkmJnZvaWQgMCE9PWMmJmMuaHlwZXJmb3JtdWxhP2EuZW5naW5lOnt9KSwu''@;'; put 'put ''Li5rM2UobCl9fSh0aGlzLmhvdC5nZXRTZXR0aW5ncygpKTsoZnVuY3Rpb24gY2F0KGwsYyl7cmV0dXJuIE9iamVjdC5rZXlzKGMpLnNvbWUoYT0+dm9pZCAwIT09Y1thXSYmY1thXSE9PWxbYV0pfSkodGhpcy5lbmdpbmUuZ2V0Q29uZmlnKCksYSkmJnRoaXMuZW5naW5lLnVwZGF0ZUNvbmZp''@;'; put 'put ''ZyhhKTtjb25zdCBkPXRoaXMuaG90LmdldFNldHRpbmdzKClbTjBdO2lmKHNvKGQpJiZzbyhkLnNoZWV0TmFtZSkmJmQuc2hlZXROYW1lIT09dGhpcy5zaGVldE5hbWUmJnRoaXMuc3dpdGNoU2hlZXQoZC5zaGVldE5hbWUpLCFjLmRhdGEmJm51bGw9PT10aGlzLnNoZWV0TmFtZSl7Y29uc3Qg''@;'; put 'put ''aD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW04wXS5zaGVldE5hbWU7aCYmdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QoaCk/dGhpcy5zd2l0Y2hTaGVldCh0aGlzLnNoZWV0TmFtZSk6dGhpcy5zaGVldE5hbWU9dGhpcy5hZGRTaGVldChoPz92b2lkIDAsdGhpcy5ob3QuZ2V0U291cmNlRGF0''@;'; put 'put ''YUFycmF5KCkpfXN1cGVyLnVwZGF0ZVBsdWdpbihjKX1kZXN0cm95KCl7ZXkoREUsdGhpcykuZm9yRWFjaChjPT57dmFyIGE7bGV0W2QsaF09YztyZXR1cm4gbnVsbD09PShhPXRoaXMuZW5naW5lKXx8dm9pZCAwPT09YT92b2lkIDA6YS5vZmYoZCxoKX0pLGM1KERFLHRoaXMsbnVsbCksSTNl''@;'; put 'put ''KHRoaXMuZW5naW5lLHRoaXMuaG90KSx0aGlzLmVuZ2luZT1udWxsLHN1cGVyLmRlc3Ryb3koKX1hZGRTaGVldChjLGEpe2lmKHNvKGEpJiYhcWRlKGEpKXJldHVybiBpbCgiVGhlIHByb3ZpZGVkIGRhdGEgc2hvdWxkIGJlIGFuIGFycmF5IG9mIGFycmF5cy4iKSwhMTtpZihudWxsIT1jJiZ0''@;'; put 'put ''aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdChjKSlyZXR1cm4gaWwoIlNoZWV0IHdpdGggdGhlIHByb3ZpZGVkIG5hbWUgYWxyZWFkeSBleGlzdHMuIiksITE7dHJ5e2NvbnN0IGQ9dGhpcy5lbmdpbmUuYWRkU2hlZXQoYz8/dm9pZCAwKTtyZXR1cm4gYSYmdGhpcy5lbmdpbmUuc2V0U2hlZXRD''@;'; put 'put ''b250ZW50KHRoaXMuZW5naW5lLmdldFNoZWV0SWQoZCksYSksZH1jYXRjaChkKXtyZXR1cm4gaWwoZC5tZXNzYWdlKSwhMX19c3dpdGNoU2hlZXQoYyl7aWYoIXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KGMpKXJldHVybiB2b2lkIEFXKGBUaGUgc2hlZXQgbmFtZWQgXGAke2N9XGAgZG9l''@;'; put 'put ''cyBub3QgZXhpc3QsIHN3aXRjaCBhYm9ydGVkLmApO3RoaXMuc2hlZXROYW1lPWM7Y29uc3QgYT10aGlzLmVuZ2luZS5nZXRTaGVldFNlcmlhbGl6ZWQodGhpcy5zaGVldElkKTthLmxlbmd0aD4wJiZ0aGlzLmhvdC5sb2FkRGF0YShhLGAke0kwKE4wKX0uc3dpdGNoU2hlZXRgKX1nZXRDZWxs''@;'; put 'put ''VHlwZShjLGEpe2xldCBkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLnNoZWV0SWQ7Y29uc3QgaD10aGlzLmhvdC50b1BoeXNpY2FsUm93KGMpLGY9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihhKTtyZXR1cm4gbnVsbCE9PWgm''@;'; put 'put ''Jm51bGwhPT1mP3RoaXMuZW5naW5lLmdldENlbGxUeXBlKHtzaGVldDpkLHJvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChjKSxjb2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYSl9KToiRU1QVFkifWlzRm9y''@;'; put 'put ''bXVsYUNlbGxUeXBlKGMsYSl7cmV0dXJuIHRoaXMuZW5naW5lLmRvZXNDZWxsSGF2ZUZvcm11bGEoe3NoZWV0OmFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLnNoZWV0SWQscm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4''@;'; put 'put ''RnJvbVZpc3VhbEluZGV4KGMpLGNvbDp0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChhKX0pfXJlbmRlckRlcGVuZGVudFNoZWV0cyhjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2Nv''@;'; put 'put ''bnN0IGQ9bmV3IFNldDtjLmZvckVhY2goaD0+e3ZhciBmO2NvbnN0IHY9bnVsbD09aHx8bnVsbD09PShmPWguYWRkcmVzcyl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2hlZXQ7dm9pZCAwIT09diYmKGQuaGFzKHYpfHxkLmFkZCh2KSl9KSxEM2UodGhpcy5lbmdpbmUpLmZvckVhY2goKGgsZik9''@;'; put 'put ''Pnt2YXIgdjsoYXx8ZiE9PXRoaXMuc2hlZXRJZCkmJmQuaGFzKGYpJiYoaC5yZW5kZXIoKSxudWxsPT09KHY9aC52aWV3KXx8dm9pZCAwPT09dnx8di5hZGp1c3RFbGVtZW50c1NpemUoKSl9KX12YWxpZGF0ZURlcGVuZGVudENlbGxzKGMpe2NvbnN0IGQ9Zj0+e3ZhciB2O2NvbnN0e3JvdzpT''@;'; put 'put ''LGNvbDpWLHNoZWV0OlF9PW51bGwhPT0odj1mPy5hZGRyZXNzKSYmdm9pZCAwIT09dj92Ont9O3JldHVybiBzbyhRKT9gJHtRfToke1N9eCR7Vn1gOiIifSxoPW5ldyBTZXQoKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSkubWFwKGY9''@;'; put 'put ''PmQoZikpKTtjLmZvckVhY2goZj0+e3ZhciB2LFM7Y29uc3R7cm93OlYsY29sOlF9PW51bGwhPT0odj1mLmFkZHJlc3MpJiZ2b2lkIDAhPT12P3Y6e307aWYoITE9PT1zbyhWKXx8ITE9PT1zbyhRKXx8Vj49dGhpcy5ob3QuY291bnRSb3dzKCl8fFE+PXRoaXMuaG90LmNvdW50Q29scygpKXJl''@;'; put 'put ''dHVybjtjb25zdCBkZT1udWxsPT1mfHxudWxsPT09KFM9Zi5hZGRyZXNzKXx8dm9pZCAwPT09Uz92b2lkIDA6Uy5zaGVldCxwZT1kKGYpO2lmKHZvaWQgMCE9PWRlJiYhaC5oYXMocGUpKXtjb25zdCBDZT1EM2UodGhpcy5lbmdpbmUpLmdldChkZSk7aWYoIUNlKXJldHVybjtDZS52YWxpZGF0''@;'; put 'put ''ZUNlbGwoQ2UuZ2V0RGF0YUF0Q2VsbChWLFEpLENlLmdldENlbGxNZXRhKFYsUSksKCk9Pnt9KX19KX1zeW5jQ2hhbmdlV2l0aEVuZ2luZShjLGEsZCl7Y29uc3QgaD17cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGMpLGNvbDp0aGlzLmNvbHVtbkF4''@;'; put 'put ''aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChhKSxzaGVldDp0aGlzLnNoZWV0SWR9O2lmKCF0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhoKSlyZXR1cm4gdm9pZCBpbChgTm90IHBvc3NpYmxlIHRvIHNldCBjZWxsIGRhdGEgYXQgJHtKU09OLnN0''@;'; put 'put ''cmluZ2lmeShoKX1gKTtjb25zdCBmPXRoaXMuaG90LmdldENlbGxNZXRhKGMsYSk7cmV0dXJuIFlLKGQsZi50eXBlKSYmKE8zZShkLGYuZGF0ZUZvcm1hdCk/ZD1QM2UoZCxmLmRhdGVGb3JtYXQpOiExPT09ZnVuY3Rpb24gdmF0KGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgbCYmbC5zdGFy''@;'; put 'put ''dHNXaXRoKCI9Iil9KGQpJiYoZD1gJyR7ZH1gKSksdGhpcy5lbmdpbmUuc2V0Q2VsbENvbnRlbnRzKGgsZCl9fWZ1bmN0aW9uIExhdChsLGMsYSl7Y29uc3QgZD10aGlzLmhvdC5wcm9wVG9Db2woYSk7aWYodGhpcy5pc0Zvcm11bGFDZWxsVHlwZShjLGQpKXtjb25zdCBoPXtyb3c6dGhpcy5y''@;'; put 'put ''b3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoYyksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGQpLHNoZWV0OnRoaXMuc2hlZXRJZH0sZj10aGlzLmhvdC5nZXRDZWxsTWV0YShjLGQpO2xldCB2PXRoaXMuZW5naW5lLmdl''@;'; put 'put ''dENlbGxWYWx1ZShoKTtyZXR1cm4iZGF0ZSI9PT1mLnR5cGUmJkwwKHYpJiYodj1GM2UodixmLmRhdGVGb3JtYXQpKSwib2JqZWN0Ij09dHlwZW9mIHYmJm51bGwhPT12P3YudmFsdWU6dn1yZXR1cm4gbH1mdW5jdGlvbiBPYXQobCxjLGEpe2NvbnN0e3JvdzpkLGNvbDpofT1jLmdldFRvcFN0''@;'; put 'put ''YXJ0Q29ybmVyKCkse3JvdzpmLGNvbDp2fT1jLmdldEJvdHRvbUVuZENvcm5lcigpLHtyb3c6Uyxjb2w6Vn09YS5nZXRUb3BTdGFydENvcm5lcigpLHtyb3c6USxjb2w6ZGV9PWEuZ2V0Qm90dG9tRW5kQ29ybmVyKCkscGU9e3N0YXJ0Ontyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5k''@;'; put 'put ''ZXhGcm9tVmlzdWFsSW5kZXgoZCksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGgpLHNoZWV0OnRoaXMuc2hlZXRJZH0sZW5kOntyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoZiksY29sOnRoaXMuY29s''@;'; put 'put ''dW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KHYpLHNoZWV0OnRoaXMuc2hlZXRJZH19LENlPXtzdGFydDp7cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KFMpLGNvbDp0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZy''@;'; put 'put ''b21WaXN1YWxJbmRleChWKSxzaGVldDp0aGlzLnNoZWV0SWR9LGVuZDp7cm93OnRoaXMucm93QXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KFEpLGNvbDp0aGlzLmNvbHVtbkF4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChkZSksc2hlZXQ6dGhpcy5zaGVl''@;'; put 'put ''dElkfX07aWYoITE9PT10aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhDZSkpcmV0dXJuITE7Y29uc3QgT2U9dGhpcy5lbmdpbmUuZ2V0RmlsbFJhbmdlRGF0YShwZSxDZSkse3JvdzpZZSxjb2w6ZXR9PXBlLnN0YXJ0LHtyb3c6ZHQsY29sOmh0fT1wZS5lbmQsTXQ9''@;'; put 'put ''ZHQtWWUrMSxRdD1odC1ldCsxO2ZvcihsZXQgbG49MDtsbjxPZS5sZW5ndGg7bG4rPTEpZm9yKGxldCB2bj0wO3ZuPE9lW2xuXS5sZW5ndGg7dm4rPTEpe2NvbnN0IHduPU9lW2xuXVt2bl0sbnI9bG4lTXQsdnI9dm4lUXQsTWk9dGhpcy5ob3QuZ2V0Q2VsbE1ldGEobnIsdnIpO1lLKHduLE1p''@;'; put 'put ''LnR5cGUpJiYod24uc3RhcnRzV2l0aCgiJyIpP09lW2xuXVt2bl09d24uc2xpY2UoMSk6ITE9PT10aGlzLmlzRm9ybXVsYUNlbGxUeXBlKG5yLHZyLHRoaXMuc2hlZXRJZCkmJihPZVtsbl1bdm5dPV9hdCh3bixNaS5kYXRlRm9ybWF0KSkpfXJldHVybiBPZX1mdW5jdGlvbiBqM2UobCxjKXso''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiIiKS5pbmNsdWRlcyhJMChOMCkpfHxjNSh0WCx0aGlzLGRsKHRoaXMuaG90LmdldFNldHRpbmdzKCkuZGF0YSkpfWZ1bmN0aW9uIFBhdCgpe2NvbnN0IGw9dGhpcy5ob3QuZ2V0U291cmNlRGF0''@;'; put 'put ''YUFycmF5KCk7bGV0IGM9ITE7bC5mb3JFYWNoKChhLGQpPT57YS5mb3JFYWNoKChoLGYpPT57Y29uc3Qgdj10aGlzLmhvdC5nZXRDZWxsTWV0YShkLGYpLFM9di5kYXRlRm9ybWF0O1lLKGgsdi50eXBlKSYmKGM9ITAsTzNlKGgsUyk/bFtkXVtmXT1QM2UoaCxTKTohMT09PXRoaXMuaXNGb3Jt''@;'; put 'put ''dWxhQ2VsbFR5cGUoZCxmKSYmKGxbZF1bZl09YCcke2h9YCkpfSl9KSwhMD09PWMmJihjNShZNCx0aGlzLCEwKSx0aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5zaGVldElkLGwpLGM1KFk0LHRoaXMsITEpKX1mdW5jdGlvbiB6M2UobCxjKXtpZighKGFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiIikuaW5jbHVkZXMoSTAoTjApKSlpZih0aGlzLnNoZWV0TmFtZT1mdW5jdGlvbiBnYXQobCxjKXtyZXR1cm4oZGwoYyl8fCFsLmRvZXNTaGVldEV4aXN0KGMpKSYmKGM9bC5hZGRTaGVldChjKSksY30odGhpcy5lbmdpbmUs''@;'; put 'put ''dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtOMF0uc2hlZXROYW1lKSxleSh0WCx0aGlzKSl0aGlzLnN3aXRjaFNoZWV0KHRoaXMuc2hlZXROYW1lKTtlbHNle2NvbnN0IGQ9dGhpcy5ob3QuZ2V0U291cmNlRGF0YUFycmF5KCk7aWYodGhpcy5lbmdpbmUuaXNJdFBvc3NpYmxlVG9SZXBsYWNlU2hl''@;'; put 'put ''ZXRDb250ZW50KHRoaXMuc2hlZXRJZCxkKSl7YzUoWTQsdGhpcywhMCk7Y29uc3QgaD10aGlzLmVuZ2luZS5zZXRTaGVldENvbnRlbnQodGhpcy5zaGVldElkLGQpO3RoaXMuaW5kZXhTeW5jZXIuc2V0dXBTeW5jRW5kcG9pbnQodGhpcy5lbmdpbmUsdGhpcy5zaGVldElkKSx0aGlzLnJlbmRl''@;'; put 'put ''ckRlcGVuZGVudFNoZWV0cyhoKSxjNShZNCx0aGlzLCExKX19fWZ1bmN0aW9uIEZhdChsLGMsYSxkKXtpZigiZ2V0IiE9PWR8fGV5KFk0LHRoaXMpfHxudWxsPT09dGhpcy5zaGVldE5hbWV8fCF0aGlzLmVuZ2luZS5kb2VzU2hlZXRFeGlzdCh0aGlzLnNoZWV0TmFtZSkpcmV0dXJuO2NvbnN0''@;'; put 'put ''IGg9dGhpcy5ob3QudG9WaXN1YWxSb3cobCk7aWYobnVsbD09PWh8fG51bGw9PT1jKXJldHVybjtpZighdGhpcy5pc0Zvcm11bGFDZWxsVHlwZShoLGMpJiYiQVJSQVkiIT09dGhpcy5nZXRDZWxsVHlwZShoLGMpKXJldHVybiB2b2lkKEwzZShhLnZhbHVlKSYmKGEudmFsdWU9ZnVuY3Rpb24g''@;'; put 'put ''bWF0KGwpe3JldHVybiBMM2UobCk/bC5zdWJzdHIoMSk6bH0oYS52YWx1ZSkpKTtjb25zdCB2PXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoaCksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGMpLHNo''@;'; put 'put ''ZWV0OnRoaXMuc2hlZXRJZH07bGV0IFM9dGhpcy5lbmdpbmUuZ2V0Q2VsbFZhbHVlKHYpLFY9dGhpcy5ob3QuZ2V0Q2VsbHNNZXRhKCkuZmluZChkZT0+ZGUudmlzdWFsUm93PT09aCYmZGUudmlzdWFsQ29sPT09Yyk7dm9pZCAwPT09ViYmKFY9e30pLCJkYXRlIj09PVYudHlwZSYmTDAoUykm''@;'; put 'put ''JihTPUYzZShTLFYuZGF0ZUZvcm1hdCkpLGEudmFsdWU9Im9iamVjdCI9PXR5cGVvZiBTJiZudWxsIT09Uz9TLnZhbHVlOlN9ZnVuY3Rpb24gTmF0KGwsYyxhLGQpe2lmKCJnZXQiIT09ZHx8ZXkoWTQsdGhpcyl8fG51bGw9PT10aGlzLnNoZWV0TmFtZXx8IXRoaXMuZW5naW5lLmRvZXNTaGVl''@;'; put 'put ''dEV4aXN0KHRoaXMuc2hlZXROYW1lKSlyZXR1cm47Y29uc3QgaD10aGlzLmhvdC50b1Zpc3VhbFJvdyhsKSxmPXRoaXMuaG90LnByb3BUb0NvbChjKTtpZihudWxsPT09aHx8bnVsbD09PWZ8fCF0aGlzLmlzRm9ybXVsYUNlbGxUeXBlKGgsZikmJiJBUlJBWSIhPT10aGlzLmdldENlbGxUeXBl''@;'; put 'put ''KGgsZikpcmV0dXJuO2NvbnN0IFM9dGhpcy5lbmdpbmUuZ2V0U2hlZXREaW1lbnNpb25zKHRoaXMuZW5naW5lLmdldFNoZWV0SWQodGhpcy5zaGVldE5hbWUpKTtpZigwPT09Uy53aWR0aCYmMD09PVMuaGVpZ2h0KXJldHVybjtjb25zdCBWPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhm''@;'; put 'put ''SW5kZXhGcm9tVmlzdWFsSW5kZXgoaCksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGYpLHNoZWV0OnRoaXMuc2hlZXRJZH07YS52YWx1ZT10aGlzLmVuZ2luZS5nZXRDZWxsU2VyaWFsaXplZChWKX1mdW5jdGlvbiBVM2UobCxjKXtpZih0eShj''@;'; put 'put ''KSlyZXR1cm47Y29uc3QgYT1bXSxkPVtdLGg9dGhpcy5lbmdpbmUuYmF0Y2goKCk9PntsLmZvckVhY2goZj0+e2xldFt2LFMsLFZdPWY7Y29uc3QgUT10aGlzLmhvdC5wcm9wVG9Db2woUyksZGU9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyh2KSxwZT10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1u''@;'; put 'put ''KFEpLENlPXtyb3c6dGhpcy5yb3dBeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgodiksY29sOnRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KFEpLHNoZWV0OnRoaXMuc2hlZXRJZH07bnVsbCE9PWRlJiZudWxsIT09cGU/dGhpcy5zeW5j''@;'; put 'put ''Q2hhbmdlV2l0aEVuZ2luZSh2LFEsVik6YS5wdXNoKFt2LFEsVl0pLGQucHVzaCh7YWRkcmVzczpDZX0pfSl9KTthLmxlbmd0aCYmdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyQ2hhbmdlIiwoKT0+e2NvbnN0IGY9dGhpcy5lbmdpbmUuYmF0Y2goKCk9PnthLmZvckVhY2godj0+e2xldFtT''@;'; put 'put ''LFYsUV09djt0aGlzLnN5bmNDaGFuZ2VXaXRoRW5naW5lKFMsVixRKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoZiwhMCl9KSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhoKSx0aGlzLnZhbGlkYXRlRGVwZW5kZW50Q2VsbHMoaCxkKX1mdW5jdGlvbiBIYXQobCxjKXtpZih0''@;'; put 'put ''eShjKSlyZXR1cm47Y29uc3QgYT1bXSxkPVtdO2wuZm9yRWFjaChoPT57bGV0W2YsdiwsU109aDtjb25zdCBWPXRoaXMuaG90LnByb3BUb0NvbCh2KTtpZighTDAoVikpcmV0dXJuO2NvbnN0IFE9e3Jvdzp0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChmKSxj''@;'; put 'put ''b2w6dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgoViksc2hlZXQ6dGhpcy5zaGVldElkfTt0aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1NldENlbGxDb250ZW50cyhRKT8oZC5wdXNoKHthZGRyZXNzOlF9KSxhLnB1c2goLi4udGhpcy5lbmdpbmUuc2V0''@;'; put 'put ''Q2VsbENvbnRlbnRzKFEsUykpKTppbChgTm90IHBvc3NpYmxlIHRvIHNldCBzb3VyY2UgY2VsbCBkYXRhIGF0ICR7SlNPTi5zdHJpbmdpZnkoUSl9YCl9KSx0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhhKSx0aGlzLnZhbGlkYXRlRGVwZW5kZW50Q2VsbHMoYSxkKX1mdW5jdGlvbiBWYXQo''@;'; put 'put ''bCxjKXtsZXQgYT10aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChsKTtpZihsPj10aGlzLmhvdC5jb3VudFJvd3MoKSYmKGE9bCksbnVsbD09PXRoaXMuc2hlZXRJZHx8IXRoaXMuZW5naW5lLmRvZXNTaGVldEV4aXN0KHRoaXMuc2hlZXROYW1lKXx8IXRoaXMu''@;'; put 'put ''ZW5naW5lLmlzSXRQb3NzaWJsZVRvQWRkUm93cyh0aGlzLnNoZWV0SWQsW2EsY10pKXJldHVybiExfWZ1bmN0aW9uIEJhdChsLGMpe2xldCBhPXRoaXMuY29sdW1uQXhpc1N5bmNlci5nZXRIZkluZGV4RnJvbVZpc3VhbEluZGV4KGwpO2lmKGw+PXRoaXMuaG90LmNvdW50Q29scygpJiYoYT1s''@;'; put 'put ''KSxudWxsPT09dGhpcy5zaGVldElkfHwhdGhpcy5lbmdpbmUuZG9lc1NoZWV0RXhpc3QodGhpcy5zaGVldE5hbWUpfHwhdGhpcy5lbmdpbmUuaXNJdFBvc3NpYmxlVG9BZGRDb2x1bW5zKHRoaXMuc2hlZXRJZCxbYSxjXSkpcmV0dXJuITF9ZnVuY3Rpb24gamF0KGwsYyxhKXtyZXR1cm4hMSE9''@;'; put 'put ''PXRoaXMucm93QXhpc1N5bmNlci5zZXRSZW1vdmVkSGZJbmRleGVzKGEpLmV2ZXJ5KGY9PnRoaXMuZW5naW5lLmlzSXRQb3NzaWJsZVRvUmVtb3ZlUm93cyh0aGlzLnNoZWV0SWQsW2YsMV0pKSYmdm9pZCAwfWZ1bmN0aW9uIHphdChsLGMsYSl7cmV0dXJuITEhPT10aGlzLmNvbHVtbkF4aXNT''@;'; put 'put ''eW5jZXIuc2V0UmVtb3ZlZEhmSW5kZXhlcyhhKS5ldmVyeShmPT50aGlzLmVuZ2luZS5pc0l0UG9zc2libGVUb1JlbW92ZUNvbHVtbnModGhpcy5zaGVldElkLFtmLDFdKSkmJnZvaWQgMH1mdW5jdGlvbiBVYXQobCxjLGEpe2lmKHR5KGEpKXJldHVybjtjb25zdCBkPXRoaXMuZW5naW5lLmFk''@;'; put 'put ''ZFJvd3ModGhpcy5zaGVldElkLFt0aGlzLnJvd0F4aXNTeW5jZXIuZ2V0SGZJbmRleEZyb21WaXN1YWxJbmRleChsKSxjXSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoZCl9ZnVuY3Rpb24gWmF0KGwsYyxhKXtpZih0eShhKSlyZXR1cm47Y29uc3QgZD10aGlzLmVuZ2luZS5hZGRDb2x1''@;'; put 'put ''bW5zKHRoaXMuc2hlZXRJZCxbdGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldEhmSW5kZXhGcm9tVmlzdWFsSW5kZXgobCksY10pO3RoaXMucmVuZGVyRGVwZW5kZW50U2hlZXRzKGQpfWZ1bmN0aW9uIFlhdChsLGMsYSxkKXtpZih0eShkKSlyZXR1cm47Y29uc3QgaD10aGlzLnJvd0F4aXNTeW5j''@;'; put 'put ''ZXIuZ2V0UmVtb3ZlZEhmSW5kZXhlcygpLnNvcnQoKHYsUyk9PlMtdiksZj10aGlzLmVuZ2luZS5iYXRjaCgoKT0+e2guZm9yRWFjaCh2PT57dGhpcy5lbmdpbmUucmVtb3ZlUm93cyh0aGlzLnNoZWV0SWQsW3YsMV0pfSl9KTt0aGlzLnJlbmRlckRlcGVuZGVudFNoZWV0cyhmKX1mdW5jdGlv''@;'; put 'put ''biBXYXQobCxjLGEsZCl7aWYodHkoZCkpcmV0dXJuO2NvbnN0IGg9dGhpcy5jb2x1bW5BeGlzU3luY2VyLmdldFJlbW92ZWRIZkluZGV4ZXMoKS5zb3J0KCh2LFMpPT5TLXYpLGY9dGhpcy5lbmdpbmUuYmF0Y2goKCk9PntoLmZvckVhY2godj0+e3RoaXMuZW5naW5lLnJlbW92ZUNvbHVtbnMo''@;'; put 'put ''dGhpcy5zaGVldElkLFt2LDFdKX0pfSk7dGhpcy5yZW5kZXJEZXBlbmRlbnRTaGVldHMoZil9ZnVuY3Rpb24gR2F0KGwsYyxhKXt2YXIgZDtjNShZNCx0aGlzLCEwKTtjb25zdCBoPXRoaXMuaG90LmdldFNvdXJjZURhdGFBcnJheShhLDAsYSsoKG51bGw9PT0oZD1jLl9fY2hpbGRyZW4pfHx2''@;'; put 'put ''b2lkIDA9PT1kP3ZvaWQgMDpkLmxlbmd0aCl8fDApLHRoaXMuaG90LmNvdW50U291cmNlQ29scygpKTtjNShZNCx0aGlzLCExKSxoLmZvckVhY2goKGYsdik9PntmLmZvckVhY2goKFMsVik9Pnt0aGlzLmVuZ2luZS5zZXRDZWxsQ29udGVudHMoe2NvbDpWLHJvdzphK3Ysc2hlZXQ6dGhpcy5z''@;'; put 'put ''aGVldElkfSxbW1NdXSl9KX0pfWZ1bmN0aW9uICRhdChsKXt0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJGb3JtdWxhc1ZhbHVlc1VwZGF0ZSIsbCl9ZnVuY3Rpb24gcWF0KGwsYyl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyTmFtZWRFeHByZXNzaW9uQWRkZWQiLGwsYyl9ZnVuY3Rpb24gS2F0''@;'; put 'put ''KGwsYyl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyTmFtZWRFeHByZXNzaW9uUmVtb3ZlZCIsbCxjKX1mdW5jdGlvbiBYYXQobCl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyU2hlZXRBZGRlZCIsbCl9ZnVuY3Rpb24gSmF0KGwsYyl7dGhpcy5zaGVldE5hbWU9Yyx0aGlzLmhvdC5ydW5Ib29r''@;'; put 'put ''cygiYWZ0ZXJTaGVldFJlbmFtZWQiLGwsYyl9ZnVuY3Rpb24gUWF0KGwsYyl7dGhpcy5ob3QucnVuSG9va3MoImFmdGVyU2hlZXRSZW1vdmVkIixsLGMpfWZ1bmN0aW9uIFozZShsLGMsYSl7WTNlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBZM2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFZkKGwsYyl7cmV0dXJuIGwuZ2V0KHU1KGwsYykpfWZ1bmN0aW9uIElFKGwsYyxhKXtyZXR1cm4gbC5zZXQodTUobCxjKSxhKSxhfWZ1''@;'; put 'put ''bmN0aW9uIHU1KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1hby5nZXRTaW5n''@;'; put 'put ''bGV0b24oKS5yZWdpc3RlcigiYmVmb3JlSGlkZUNvbHVtbnMiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJIaWRlQ29sdW1ucyIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVVbmhpZGVDb2x1bW5zIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFm''@;'; put 'put ''dGVyVW5oaWRlQ29sdW1ucyIpO2NvbnN0IG5YPSJoaWRkZW5Db2x1bW5zIjt2YXIgWTM9bmV3IFdlYWtNYXAsVzM9bmV3IFdlYWtNYXAseDc9bmV3IFdlYWtTZXQ7Y2xhc3MgaWx0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIG5sdChsLGMp''@;'; put 'put ''e1kzZShsLGMpLGMuYWRkKGwpfSh0aGlzLHg3KSxaM2UodGhpcyxZMyx7fSksWjNlKHRoaXMsVzMsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIG5YfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDMxMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKClbblhdfWVuYWJsZVBsdWdpbigpe3ZhciBjPXRoaXM7aWYodGhpcy5lbmFibGVkKXJldHVybjtjb25zdCBhPXRoaXMuaG90LmdldFNldHRpbmdzKClbblhdO19zKGEpJiYoSUUoWTMsdGhpcyxhKSxkbChhLmNvcHlQYXN0ZUVuYWJsZWQpJiYoYS5jb3B5UGFzdGVFbmFi''@;'; put 'put ''bGVkPSEwKSksSUUoVzMsdGhpcyxuZXcgVUwpLFZkKFczLHRoaXMpLmFkZExvY2FsSG9vaygiaW5pdCIsKCk9PnU1KHg3LHRoaXMsdWx0KS5jYWxsKHRoaXMpKSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUsVmQoVzMsdGhpcykpLHRoaXMu''@;'; put 'put ''YWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiB1NSh4NyxjLGNsdCkuY2FsbChjLC4uLmgpfSksdGhpcy5h''@;'; put 'put ''ZGRIb29rKCJhZnRlckdldENlbGxNZXRhIiwoZCxoLGYpPT51NSh4Nyx0aGlzLHNsdCkuY2FsbCh0aGlzLGQsaCxmKSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsKGQsaCk9PnU1KHg3LHRoaXMsb2x0KS5jYWxsKHRoaXMsZCxoKSwyKSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29s''@;'; put 'put ''SGVhZGVyIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiB1NSh4NyxjLGxsdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb3B5YWJsZVJhbmdlIixkPT51''@;'; put 'put ''NSh4Nyx0aGlzLGFsdCkuY2FsbCh0aGlzLGQpKSxzdXBlci5lbmFibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXt0aGlzLmhvdC5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlci51bnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSksSUUoWTMsdGhpcyx7fSksc3VwZXIuZGlzYWJsZVBsdWdpbigpLHRoaXMucmVzZXRDZWxsc01ldGEoKX1zaG93Q29sdW1ucyhjKXtjb25zdCBhPXRoaXMuZ2V0SGlkZGVuQ29sdW1ucygpLGQ9dGhpcy5pc1ZhbGlkQ29uZmlnKGMp''@;'; put 'put ''O2xldCBoPWE7Y29uc3QgZj1WZChXMyx0aGlzKS5nZXRWYWx1ZXMoKS5zbGljZSgpLHY9Yy5sZW5ndGg+MDtkJiZ2JiYoVG4oYy5tYXAoUT0+dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihRKSksUT0+e2ZbUV09ITF9KSxoPU1jKGYsKFEsZGUscGUpPT4oZGUmJlEucHVzaCh0aGlzLmhvdC50''@;'; put 'put ''b1Zpc3VhbENvbHVtbihwZSkpLFEpLFtdKSksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlVW5oaWRlQ29sdW1ucyIsYSxoLGQmJnYpJiYoZCYmdiYmVmQoVzMsdGhpcykuc2V0VmFsdWVzKGYpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCksdGhpcy5ob3QucnVuSG9v''@;'; put 'put ''a3MoImFmdGVyVW5oaWRlQ29sdW1ucyIsYSxoLGQmJnYsZCYmaC5sZW5ndGg8YS5sZW5ndGgpKX1zaG93Q29sdW1uKCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYyksZD0wO2Q8YztkKyspYVtkXT1hcmd1bWVudHNbZF07dGhpcy5zaG93Q29sdW1ucyhhKX1oaWRl''@;'; put 'put ''Q29sdW1ucyhjKXtjb25zdCBhPXRoaXMuZ2V0SGlkZGVuQ29sdW1ucygpLGQ9dGhpcy5pc1ZhbGlkQ29uZmlnKGMpO2xldCBoPWE7ZCYmKGg9QXJyYXkuZnJvbShuZXcgU2V0KGEuY29uY2F0KGMpKSkpLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUhpZGVDb2x1bW5zIixhLGgsZCkm''@;'; put 'put ''JihkJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1RuKGMsdj0+e1ZkKFczLHRoaXMpLnNldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKHYpLCEwKX0pfSwhMCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVySGlkZUNvbHVtbnMiLGEsaCxkLGQmJmgubGVuZ3Ro''@;'; put 'put ''PmEubGVuZ3RoKSl9aGlkZUNvbHVtbigpe2Zvcih2YXIgYz1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KGMpLGQ9MDtkPGM7ZCsrKWFbZF09YXJndW1lbnRzW2RdO3RoaXMuaGlkZUNvbHVtbnMoYSl9Z2V0SGlkZGVuQ29sdW1ucygpe3JldHVybiB4cyhWZChXMyx0aGlzKS5nZXRIaWRk''@;'; put 'put ''ZW5JbmRleGVzKCksYz0+dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oYykpfWlzSGlkZGVuKGMpe3JldHVybiBWZChXMyx0aGlzKS5nZXRWYWx1ZUF0SW5kZXgodGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKSl8fCExfWlzVmFsaWRDb25maWcoYyl7Y29uc3QgYT10aGlzLmhvdC5jb3VudENv''@;'; put 'put ''bHMoKTtyZXR1cm4hIShBcnJheS5pc0FycmF5KGMpJiZjLmxlbmd0aD4wKSYmYy5ldmVyeShkPT5OdW1iZXIuaXNJbnRlZ2VyKGQpJiZkPj0wJiZkPGEpfXJlc2V0Q2VsbHNNZXRhKCl7VG4odGhpcy5ob3QuZ2V0Q2VsbHNNZXRhKCksYz0+e2MmJihjLnNraXBDb2x1bW5PblBhc3RlPSExKX0p''@;'; put 'put ''fWRlc3Ryb3koKXtJRShZMyx0aGlzLG51bGwpLElFKFczLHRoaXMsbnVsbCksc3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBvbHQobCxjKXtyZXR1cm4gdGhpcy5pc0hpZGRlbihjKT8wOlZkKFkzLHRoaXMpLmluZGljYXRvcnMmJih0aGlzLmlzSGlkZGVuKGMrMSl8fHRoaXMuaXNIaWRkZW4o''@;'; put 'put ''Yy0xKSkmJiJudW1iZXIiPT10eXBlb2YgbCYmdGhpcy5ob3QuaGFzQ29sSGVhZGVycygpP2wrMTU6dm9pZCAwfWZ1bmN0aW9uIHNsdChsLGMsYSl7aWYoITE9PT1WZChZMyx0aGlzKS5jb3B5UGFzdGVFbmFibGVkJiZ0aGlzLmlzSGlkZGVuKGMpJiYoYS5za2lwQ29sdW1uT25QYXN0ZT0hMCks''@;'; put 'put ''dGhpcy5pc0hpZGRlbihjLTEpKWEuY2xhc3NOYW1lPWEuY2xhc3NOYW1lfHwiIiwtMT09PWEuY2xhc3NOYW1lLmluZGV4T2YoImFmdGVySGlkZGVuQ29sdW1uIikmJihhLmNsYXNzTmFtZSs9IiBhZnRlckhpZGRlbkNvbHVtbiIpO2Vsc2UgaWYoYS5jbGFzc05hbWUpe2NvbnN0IGQ9YS5jbGFz''@;'; put 'put ''c05hbWUuc3BsaXQoIiAiKTtpZihkLmxlbmd0aD4wKXtjb25zdCBoPWQuaW5kZXhPZigiYWZ0ZXJIaWRkZW5Db2x1bW4iKTtoPi0xJiZkLnNwbGljZShoLDEpLGEuY2xhc3NOYW1lPWQuam9pbigiICIpfX19ZnVuY3Rpb24gYWx0KGwpe2lmKFZkKFkzLHRoaXMpLmNvcHlQYXN0ZUVuYWJsZWQp''@;'; put 'put ''cmV0dXJuIGw7Y29uc3QgYz1bXSxhPShkLGgsZix2KT0+e2MucHVzaCh7c3RhcnRSb3c6ZCxlbmRSb3c6aCxzdGFydENvbDpmLGVuZENvbDp2fSl9O3JldHVybiBUbihsLGQ9PntsZXQgaD0hMCxmPTA7Z28oZC5zdGFydENvbCxkLmVuZENvbCx2PT57dGhpcy5pc0hpZGRlbih2KT8oaHx8YShk''@;'; put 'put ''LnN0YXJ0Um93LGQuZW5kUm93LGYsdi0xKSxoPSEwKTooaCYmKGY9diksdj09PWQuZW5kQ29sJiZhKGQuc3RhcnRSb3csZC5lbmRSb3csZix2KSxoPSExKX0pfSksY31mdW5jdGlvbiBsbHQobCxjKXtpZighVmQoWTMsdGhpcykuaW5kaWNhdG9yc3x8bDwwKXJldHVybjtjb25zdCBhPVtdO2w+''@;'; put 'put ''PTEmJnRoaXMuaXNIaWRkZW4obC0xKSYmYS5wdXNoKCJhZnRlckhpZGRlbkNvbHVtbiIpLGw8dGhpcy5ob3QuY291bnRDb2xzKCktMSYmdGhpcy5pc0hpZGRlbihsKzEpJiZhLnB1c2goImJlZm9yZUhpZGRlbkNvbHVtbiIpLG1pKGMsYSl9ZnVuY3Rpb24gY2x0KGwpe2wuaXRlbXMucHVzaCh7''@;'; put 'put ''bmFtZTpFc30sZnVuY3Rpb24gZWx0KGwpe3JldHVybntrZXk6ImhpZGRlbl9jb2x1bW5zX2hpZGUiLG5hbWUoKXtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRMYXN0KCk7bGV0IGE9MDtpZihBcnJheS5pc0FycmF5KGMpKXtjb25zdFssZCwsaF09YztkLWghPTAmJihhPTEpfXJldHVybiB0aGlz''@;'; put 'put ''LmdldFRyYW5zbGF0ZWRQaHJhc2UoeSQsYSl9LGNhbGxiYWNrKCl7Y29uc3R7ZnJvbTpjLHRvOmF9PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxkPU1hdGgubWF4KE1hdGgubWluKGMuY29sLGEuY29sKSwwKSxoPU1hdGgubWF4KGMuY29sLGEuY29sKSxmPVtdO2ZvcihsZXQgVj1kO1Y8''@;'; put 'put ''PWg7Vis9MSlmLnB1c2goVik7bC5oaWRlQ29sdW1ucyhmKTtjb25zdCBTPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGZbZi5sZW5ndGgtMV0sMSwhMCk7TnVtYmVyLmlzSW50ZWdlcihTKSYmUz49MD90aGlzLnNlbGVjdENvbHVtbnMoUyk6dGhpcy5k''@;'; put 'put ''ZXNlbGVjdENlbGwoKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX0sZGlzYWJsZWQ6ITEsaGlkZGVuKCl7cmV0dXJuISh0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVy''@;'; put 'put ''KCkpfX19KHRoaXMpLGZ1bmN0aW9uIHRsdChsKXtjb25zdCBjPVtdO3JldHVybntrZXk6ImhpZGRlbl9jb2x1bW5zX3Nob3ciLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKHckLGMubGVuZ3RoPjE/MTowKX0sY2FsbGJhY2soKXt2YXIgYSxkO2lmKDA9PT1jLmxlbmd0''@;'; put 'put ''aClyZXR1cm47bGV0IGg9Y1swXSxmPWNbYy5sZW5ndGgtMV07aD1udWxsIT09KGE9dGhpcy5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaC0xLC0xKSkmJnZvaWQgMCE9PWE/YTowLGY9bnVsbCE9PShkPXRoaXMuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVz''@;'; put 'put ''dE5vdEhpZGRlbkluZGV4KGYrMSwxKSkmJnZvaWQgMCE9PWQ/ZDp0aGlzLmNvdW50Q29scygpLTEsbC5zaG93Q29sdW1ucyhjKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKSxmLWgrMT09PXRoaXMuY291bnRDb2xzKCl8fHRoaXMuc2VsZWN0Q29sdW1ucyho''@;'; put 'put ''LGYpfSxkaXNhYmxlZDohMSxoaWRkZW4oKXtjb25zdCBhPXhzKGwuZ2V0SGlkZGVuQ29sdW1ucygpLHBlPT50aGlzLnRvUGh5c2ljYWxDb2x1bW4ocGUpKTtpZighdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlD''@;'; put 'put ''b3JuZXIoKXx8YS5sZW5ndGg8MSlyZXR1cm4hMDtjLmxlbmd0aD0wO2NvbnN0IGQ9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGg9ZC5nZXRUb3BTdGFydENvcm5lcigpLmNvbCxmPWQuZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sLHY9dGhpcy5jb2x1bW5JbmRleE1hcHBlcixTPXYuZ2V0''@;'; put 'put ''UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChoKSxWPXYuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChmKSxRPXYuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxkZT1bXTtpZihoIT09Zil7aWYoZi1oKzE+Vi1TKzEpe2NvbnN0IE9lPVEuc2xpY2UoaCxmKzEpO2RlLnB1c2goLi4uT2UuZmls''@;'; put 'put ''dGVyKFllPT5hLmluY2x1ZGVzKFllKSkpfX1lbHNlIGlmKDA9PT1TJiZTPGgpZGUucHVzaCguLi5RLnNsaWNlKDAsaCkpO2Vsc2UgaWYobnVsbD09PVMpZGUucHVzaCguLi5RLnNsaWNlKDAsdGhpcy5jb3VudENvbHMoKSkpO2Vsc2V7Y29uc3QgcGU9dGhpcy5jb3VudENvbHMoKS0xO1Y9PT12''@;'; put 'put ''LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodi5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgocGUsLTEpKSYmcGU+ZiYmZGUucHVzaCguLi5RLnNsaWNlKGYrMSkpfXJldHVybiBUbihkZSxwZT0+e2MucHVzaCh0aGlzLnRvVmlzdWFsQ29sdW1uKHBlKSl9KSwwPT09Yy5sZW5ndGh9fX0o''@;'; put 'put ''dGhpcykpfWZ1bmN0aW9uIHVsdCgpe0FycmF5LmlzQXJyYXkoVmQoWTMsdGhpcykuY29sdW1ucykmJnRoaXMuaGlkZUNvbHVtbnMoVmQoWTMsdGhpcykuY29sdW1ucyl9ZnVuY3Rpb24gVzNlKGwsYyxhKXtHM2UobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIEczZShsLGMpe2lmKGMuaGFzKGwp''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9ZnVuY3Rpb24gUWgobCxjKXtyZXR1cm4gbC5nZXQoZDUobCxjKSl9ZnVuY3Rpb24gUkUobCxjLGEpe3JldHVybiBsLnNldChkNShsLGMp''@;'; put 'put ''LGEpLGF9ZnVuY3Rpb24gZDUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfWFv''@;'; put 'put ''LmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVIaWRlUm93cyIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckhpZGVSb3dzIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVVuaGlkZVJvd3MiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0''@;'; put 'put ''ZXJVbmhpZGVSb3dzIik7Y29uc3Qgclg9ImhpZGRlblJvd3MiO3ZhciBXND1uZXcgV2Vha01hcCxHMz1uZXcgV2Vha01hcCxFNz1uZXcgV2Vha1NldDtjbGFzcyBnbHQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gZmx0KGwsYyl7RzNlKGws''@;'; put 'put ''YyksYy5hZGQobCl9KHRoaXMsRTcpLFczZSh0aGlzLFc0LHt9KSxXM2UodGhpcyxHMyxudWxsKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gclh9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMzIwfWlzRW5hYmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0''@;'; put 'put ''dGluZ3MoKVtyWF19ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpcztpZih0aGlzLmVuYWJsZWQpcmV0dXJuO2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtyWF07X3MoYSkmJihSRShXNCx0aGlzLGEpLGRsKGEuY29weVBhc3RlRW5hYmxlZCkmJihhLmNvcHlQYXN0ZUVuYWJsZWQ9ITAp''@;'; put 'put ''KSxSRShHMyx0aGlzLG5ldyBVTCksUWgoRzMsdGhpcykuYWRkTG9jYWxIb29rKCJpbml0IiwoKT0+ZDUoRTcsdGhpcyx3bHQpLmNhbGwodGhpcykpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSxRaChHMyx0aGlzKSksdGhpcy5hZGRIb29rKCJh''@;'; put 'put ''ZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIGQ1KEU3LGMseWx0KS5jYWxsKGMsLi4uaCl9KSx0aGlzLmFkZEhvb2soImFm''@;'; put 'put ''dGVyR2V0Q2VsbE1ldGEiLChkLGgsZik9PmQ1KEU3LHRoaXMsdmx0KS5jYWxsKHRoaXMsZCxoLGYpKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsKGQsaCk9PmQ1KEU3LHRoaXMsbWx0KS5jYWxsKHRoaXMsZCxoKSksdGhpcy5hZGRIb29rKCJhZnRlckdldFJvd0hlYWRlciIsZnVu''@;'; put 'put ''Y3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZDUoRTcsYyxibHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5Q29weWFibGVSYW5nZSIsZD0+ZDUoRTcsdGhpcyxf''@;'; put 'put ''bHQpLmNhbGwodGhpcyxkKSksc3VwZXIuZW5hYmxlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rl''@;'; put 'put ''ck1hcCh0aGlzLnBsdWdpbk5hbWUpLFJFKFc0LHRoaXMse30pLHN1cGVyLmRpc2FibGVQbHVnaW4oKSx0aGlzLnJlc2V0Q2VsbHNNZXRhKCl9c2hvd1Jvd3MoYyl7Y29uc3QgYT10aGlzLmdldEhpZGRlblJvd3MoKSxkPXRoaXMuaXNWYWxpZENvbmZpZyhjKTtsZXQgaD1hO2NvbnN0IGY9UWgo''@;'; put 'put ''RzMsdGhpcykuZ2V0VmFsdWVzKCkuc2xpY2UoKSx2PWMubGVuZ3RoPjA7ZCYmdiYmKFRuKGMubWFwKFE9PnRoaXMuaG90LnRvUGh5c2ljYWxSb3coUSkpLFE9PntmW1FdPSExfSksaD1NYyhmLChRLGRlLHBlKT0+KGRlJiZRLnB1c2godGhpcy5ob3QudG9WaXN1YWxSb3cocGUpKSxRKSxbXSkp''@;'; put 'put ''LCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVuaGlkZVJvd3MiLGEsaCxkJiZ2KSYmKGQmJnYmJlFoKEczLHRoaXMpLnNldFZhbHVlcyhmKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbmhpZGVSb3dzIixhLGgsZCYmdixkJiZoLmxlbmd0aDxhLmxlbmd0aCkpfXNob3dSb3coKXtm''@;'; put 'put ''b3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjKSxkPTA7ZDxjO2QrKylhW2RdPWFyZ3VtZW50c1tkXTt0aGlzLnNob3dSb3dzKGEpfWhpZGVSb3dzKGMpe2NvbnN0IGE9dGhpcy5nZXRIaWRkZW5Sb3dzKCksZD10aGlzLmlzVmFsaWRDb25maWcoYyk7bGV0IGg9YTtkJiYo''@;'; put 'put ''aD1BcnJheS5mcm9tKG5ldyBTZXQoYS5jb25jYXQoYykpKSksITEhPT10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlSGlkZVJvd3MiLGEsaCxkKSYmKGQmJnRoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57VG4oYyx2PT57UWgoRzMsdGhpcykuc2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRv''@;'; put 'put ''UGh5c2ljYWxSb3codiksITApfSl9LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJIaWRlUm93cyIsYSxoLGQsZCYmaC5sZW5ndGg+YS5sZW5ndGgpKX1oaWRlUm93KCl7Zm9yKHZhciBjPWFyZ3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYyksZD0wO2Q8YztkKyspYVtkXT1hcmd1bWVu''@;'; put 'put ''dHNbZF07dGhpcy5oaWRlUm93cyhhKX1nZXRIaWRkZW5Sb3dzKCl7cmV0dXJuIHhzKFFoKEczLHRoaXMpLmdldEhpZGRlbkluZGV4ZXMoKSxjPT50aGlzLmhvdC50b1Zpc3VhbFJvdyhjKSl9aXNIaWRkZW4oYyl7cmV0dXJuIFFoKEczLHRoaXMpLmdldFZhbHVlQXRJbmRleCh0aGlzLmhvdC50''@;'; put 'put ''b1BoeXNpY2FsUm93KGMpKXx8ITF9aXNWYWxpZENvbmZpZyhjKXtjb25zdCBhPXRoaXMuaG90LmNvdW50Um93cygpO3JldHVybiEhKEFycmF5LmlzQXJyYXkoYykmJmMubGVuZ3RoPjApJiZjLmV2ZXJ5KGQ9Pk51bWJlci5pc0ludGVnZXIoZCkmJmQ+PTAmJmQ8YSl9cmVzZXRDZWxsc01ldGEo''@;'; put 'put ''KXtUbih0aGlzLmhvdC5nZXRDZWxsc01ldGEoKSxjPT57YyYmKGMuc2tpcFJvd09uUGFzdGU9ITEpfSl9ZGVzdHJveSgpe1JFKFc0LHRoaXMsbnVsbCksUkUoRzMsdGhpcyxudWxsKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIG1sdChsLGMpe3JldHVybiB0aGlzLmlzSGlkZGVuKGMpPzA6''@;'; put 'put ''bH1mdW5jdGlvbiB2bHQobCxjLGEpe2lmKCExPT09UWgoVzQsdGhpcykuY29weVBhc3RlRW5hYmxlZCYmdGhpcy5pc0hpZGRlbihsKSYmKGEuc2tpcFJvd09uUGFzdGU9ITApLHRoaXMuaXNIaWRkZW4obC0xKSlhLmNsYXNzTmFtZT1hLmNsYXNzTmFtZXx8IiIsLTE9PT1hLmNsYXNzTmFtZS5p''@;'; put 'put ''bmRleE9mKCJhZnRlckhpZGRlblJvdyIpJiYoYS5jbGFzc05hbWUrPSIgYWZ0ZXJIaWRkZW5Sb3ciKTtlbHNlIGlmKGEuY2xhc3NOYW1lKXtjb25zdCBkPWEuY2xhc3NOYW1lLnNwbGl0KCIgIik7aWYoZC5sZW5ndGg+MCl7Y29uc3QgaD1kLmluZGV4T2YoImFmdGVySGlkZGVuUm93Iik7aD4t''@;'; put 'put ''MSYmZC5zcGxpY2UoaCwxKSxhLmNsYXNzTmFtZT1kLmpvaW4oIiAiKX19fWZ1bmN0aW9uIF9sdChsKXtpZihRaChXNCx0aGlzKS5jb3B5UGFzdGVFbmFibGVkKXJldHVybiBsO2NvbnN0IGM9W10sYT0oZCxoLGYsdik9PntjLnB1c2goe3N0YXJ0Um93OmQsZW5kUm93Omgsc3RhcnRDb2w6Zixl''@;'; put 'put ''bmRDb2w6dn0pfTtyZXR1cm4gVG4obCxkPT57bGV0IGg9ITAsZj0wO2dvKGQuc3RhcnRSb3csZC5lbmRSb3csdj0+e3RoaXMuaXNIaWRkZW4odik/KGh8fGEoZix2LTEsZC5zdGFydENvbCxkLmVuZENvbCksaD0hMCk6KGgmJihmPXYpLHY9PT1kLmVuZFJvdyYmYShmLHYsZC5zdGFydENvbCxk''@;'; put 'put ''LmVuZENvbCksaD0hMSl9KX0pLGN9ZnVuY3Rpb24gYmx0KGwsYyl7aWYoIVFoKFc0LHRoaXMpLmluZGljYXRvcnN8fGw8MClyZXR1cm47Y29uc3QgYT1bXTtsPj0xJiZ0aGlzLmlzSGlkZGVuKGwtMSkmJmEucHVzaCgiYWZ0ZXJIaWRkZW5Sb3ciKSxsPHRoaXMuaG90LmNvdW50Um93cygpLTEm''@;'; put 'put ''JnRoaXMuaXNIaWRkZW4obCsxKSYmYS5wdXNoKCJiZWZvcmVIaWRkZW5Sb3ciKSxtaShjLGEpfWZ1bmN0aW9uIHlsdChsKXtsLml0ZW1zLnB1c2goe25hbWU6RXN9LGZ1bmN0aW9uIGRsdChsKXtyZXR1cm57a2V5OiJoaWRkZW5fcm93c19oaWRlIixuYW1lKCl7Y29uc3QgYz10aGlzLmdldFNl''@;'; put 'put ''bGVjdGVkTGFzdCgpO2xldCBhPTA7aWYoQXJyYXkuaXNBcnJheShjKSl7Y29uc3RbZCwsaF09YztkLWghPTAmJihhPTEpfXJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoQyQsYSl9LGNhbGxiYWNrKCl7Y29uc3R7ZnJvbTpjLHRvOmF9PXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZUxhc3Qo''@;'; put 'put ''KSxkPU1hdGgubWF4KE1hdGgubWluKGMucm93LGEucm93KSwwKSxoPU1hdGgubWF4KGMucm93LGEucm93KSxmPVtdO2ZvcihsZXQgVj1kO1Y8PWg7Vis9MSlmLnB1c2goVik7bC5oaWRlUm93cyhmKTtjb25zdCBTPXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4''@;'; put 'put ''KGZbZi5sZW5ndGgtMV0sMSwhMCk7TnVtYmVyLmlzSW50ZWdlcihTKSYmUz49MD90aGlzLnNlbGVjdFJvd3MoUyk6dGhpcy5kZXNlbGVjdENlbGwoKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKX0sZGlzYWJsZWQ6ITEsaGlkZGVuKCl7cmV0dXJuISh0aGlz''@;'; put 'put ''LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKXx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCkpfX19KHRoaXMpLGZ1bmN0aW9uIGhsdChsKXtjb25zdCBjPVtdO3JldHVybntrZXk6ImhpZGRlbl9yb3dzX3Nob3ciLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFu''@;'; put 'put ''c2xhdGVkUGhyYXNlKFMkLGMubGVuZ3RoPjE/MTowKX0sY2FsbGJhY2soKXt2YXIgYSxkO2lmKDA9PT1jLmxlbmd0aClyZXR1cm47bGV0IGg9Y1swXSxmPWNbYy5sZW5ndGgtMV07aD1udWxsIT09KGE9dGhpcy5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoaC0xLC0x''@;'; put 'put ''KSkmJnZvaWQgMCE9PWE/YTowLGY9bnVsbCE9PShkPXRoaXMucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGYrMSwxKSkmJnZvaWQgMCE9PWQ/ZDp0aGlzLmNvdW50Um93cygpLTEsbC5zaG93Um93cyhjKSx0aGlzLnJlbmRlcigpLHRoaXMudmlldy5hZGp1c3RFbGVt''@;'; put 'put ''ZW50c1NpemUoKSxmLWgrMT09PXRoaXMuY291bnRSb3dzKCl8fHRoaXMuc2VsZWN0Um93cyhoLGYpfSxkaXNhYmxlZDohMSxoaWRkZW4oKXtjb25zdCBhPXhzKGwuZ2V0SGlkZGVuUm93cygpLHBlPT50aGlzLnRvUGh5c2ljYWxSb3cocGUpKTtpZighdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3Rl''@;'; put 'put ''ZEJ5Um93SGVhZGVyKCkmJiF0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8YS5sZW5ndGg8MSlyZXR1cm4hMDtjLmxlbmd0aD0wO2NvbnN0IGQ9dGhpcy5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGg9ZC5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxmPWQuZ2V0Qm90dG9tRW5k''@;'; put 'put ''Q29ybmVyKCkucm93LHY9dGhpcy5yb3dJbmRleE1hcHBlcixTPXYuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChoKSxWPXYuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChmKSxRPXYuZ2V0Tm90VHJpbW1lZEluZGV4ZXMoKSxkZT1bXTtpZihoIT09Zil7aWYoZi1oKzE+Vi1TKzEp''@;'; put 'put ''e2NvbnN0IE9lPVEuc2xpY2UoaCxmKzEpO2RlLnB1c2goLi4uT2UuZmlsdGVyKFllPT5hLmluY2x1ZGVzKFllKSkpfX1lbHNlIGlmKDA9PT1TJiZTPGgpZGUucHVzaCguLi5RLnNsaWNlKDAsaCkpO2Vsc2UgaWYobnVsbD09PVMpZGUucHVzaCguLi5RLnNsaWNlKDAsdGhpcy5jb3VudFJvd3Mo''@;'; put 'put ''KSkpO2Vsc2V7Y29uc3QgcGU9dGhpcy5jb3VudFJvd3MoKS0xO1Y9PT12LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgodi5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgocGUsLTEpKSYmcGU+ZiYmZGUucHVzaCguLi5RLnNsaWNlKGYrMSkpfXJldHVybiBUbihkZSxwZT0+e2MucHVzaCh0''@;'; put 'put ''aGlzLnRvVmlzdWFsUm93KHBlKSl9KSwwPT09Yy5sZW5ndGh9fX0odGhpcykpfWZ1bmN0aW9uIHdsdCgpe0FycmF5LmlzQXJyYXkoUWgoVzQsdGhpcykucm93cykmJnRoaXMuaGlkZVJvd3MoUWgoVzQsdGhpcykucm93cyl9ZnVuY3Rpb24gJDNlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlvbiBpWChsLGMpe3JldHVybiBsLmdldCh5UChsLGMpKX1mdW5jdGlvbiBvWChsLGMsYSl7cmV0dXJuIGwuc2V0KHlQKGwsYyksYSksYX1mdW5j''@;'; put 'put ''dGlvbiB5UChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9YW8uZ2V0U2luZ2xl''@;'; put 'put ''dG9uKCkucmVnaXN0ZXIoImJlZm9yZUNvbHVtbkZyZWV6ZSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbHVtbkZyZWV6ZSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJh''@;'; put 'put ''ZnRlckNvbHVtblVuZnJlZXplIik7Y29uc3QgcTNlPSJtYW51YWxDb2x1bW5GcmVlemUiO3ZhciBUNz1uZXcgV2Vha01hcCxzWD1uZXcgV2Vha1NldDtjbGFzcyBUbHQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gTWx0KGwsYyl7JDNlKGws''@;'; put 'put ''YyksYy5hZGQobCl9KHRoaXMsc1gpLGZ1bmN0aW9uIHhsdChsLGMsYSl7JDNlKGwsYyksYy5zZXQobCxhKX0odGhpcyxUNywhMSl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIHEzZX1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAxMTB9aXNFbmFibGVkKCl7cmV0''@;'; put 'put ''dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW3EzZV19ZW5hYmxlUGx1Z2luKCl7dGhpcy5lbmFibGVkfHwodGhpcy5hZGRIb29rKCJhZnRlckNvbnRleHRNZW51RGVmYXVsdE9wdGlvbnMiLGM9PnlQKHNYLHRoaXMsa2x0KS5jYWxsKHRoaXMsYykpLHRoaXMuYWRkSG9vaygiYmVmb3JlQ29s''@;'; put 'put ''dW1uTW92ZSIsKGMsYSk9PnlQKHNYLHRoaXMsQWx0KS5jYWxsKHRoaXMsYyxhKSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfWRpc2FibGVQbHVnaW4oKXtvWChUNyx0aGlzLCExKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5l''@;'; put 'put ''bmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1mcmVlemVDb2x1bW4oYyl7Y29uc3QgYT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLGQ9YS5maXhlZENvbHVtbnNTdGFydDx0aGlzLmhvdC5jb3VudENvbHMoKSYmYz5hLmZpeGVkQ29sdW1uc1N0YXJ0LTE7aVgoVDcsdGhpcyl8fG9Y''@;'; put 'put ''KFQ3LHRoaXMsITApLCExIT09dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbkZyZWV6ZSIsYyxkKSYmKGQmJih0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyhjLGEuZml4ZWRDb2x1bW5zU3RhcnQpLGEuX2ZpeGVkQ29sdW1uc1N0YXJ0Kz0xKSx0aGlzLmhvdC5y''@;'; put 'put ''dW5Ib29rcygiYWZ0ZXJDb2x1bW5GcmVlemUiLGMsZCkpfXVuZnJlZXplQ29sdW1uKGMpe2NvbnN0IGE9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKSxkPWEuZml4ZWRDb2x1bW5zU3RhcnQ+MCYmYzw9YS5maXhlZENvbHVtbnNTdGFydC0xO2lYKFQ3LHRoaXMpfHxvWChUNyx0aGlzLCEwKSwhMSE9''@;'; put 'put ''PXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb2x1bW5VbmZyZWV6ZSIsYyxkKSYmKGQmJihhLl9maXhlZENvbHVtbnNTdGFydC09MSx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5tb3ZlSW5kZXhlcyhjLGEuZml4ZWRDb2x1bW5zU3RhcnQpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJD''@;'; put 'put ''b2x1bW5VbmZyZWV6ZSIsYyxkKSl9fWZ1bmN0aW9uIGtsdChsKXtsLml0ZW1zLnB1c2goe25hbWU6Ii0tLS0tLS0tLSJ9LGZ1bmN0aW9uIENsdChsKXtyZXR1cm57a2V5OiJmcmVlemVfY29sdW1uIixuYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFBocmFzZShLRyl9LGNhbGxiYWNr''@;'; put 'put ''KGMsYSl7Y29uc3Rbe3N0YXJ0Ontjb2w6ZH19XT1hO2wuZnJlZXplQ29sdW1uKGQpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSxoaWRkZW4oKXtjb25zdCBjPXRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpO2xldCBhPSExO3JldHVybih2b2lkIDA9PT1jfHxj''@;'; put 'put ''Lmxlbmd0aD4xfHxjWzBdLmZyb20uY29sIT09Y1swXS50by5jb2x8fGNbMF0uZnJvbS5jb2w8PXRoaXMuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydC0xKSYmKGE9ITApLGF9fX0odGhpcyksZnVuY3Rpb24gU2x0KGwpe3JldHVybntrZXk6InVuZnJlZXplX2NvbHVtbiIsbmFtZSgp''@;'; put 'put ''e3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoWEcpfSxjYWxsYmFjayhjLGEpe2NvbnN0W3tzdGFydDp7Y29sOmR9fV09YTtsLnVuZnJlZXplQ29sdW1uKGQpLHRoaXMucmVuZGVyKCksdGhpcy52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSxoaWRkZW4oKXtjb25zdCBjPXRoaXMu''@;'; put 'put ''Z2V0U2VsZWN0ZWRSYW5nZSgpO2xldCBhPSExO3JldHVybih2b2lkIDA9PT1jfHxjLmxlbmd0aD4xfHxjWzBdLmZyb20uY29sIT09Y1swXS50by5jb2x8fGNbMF0uZnJvbS5jb2w+PXRoaXMuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCkmJihhPSEwKSxhfX19KHRoaXMpKX1mdW5j''@;'; put 'put ''dGlvbiBBbHQobCxjKXtpZihpWChUNyx0aGlzKSl7Y29uc3QgYT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkQ29sdW1uc1N0YXJ0O2lmKGM8YXx8bC5zb21lKGQ9PmQ8YSkpcmV0dXJuITF9fWZ1bmN0aW9uIHdQKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBEbHQobCl7dmFyIGM9ZnVu''@;'; put 'put ''Y3Rpb24gSWx0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IG55PSJweCIsSjNlPWNsYXNzIFJsdHtjb25zdHJ1Y3RvcihjKXt3UCh0aGlzLCJob3QiLHZvaWQgMCksd1AodGhpcywiX2VsZW1lbnQiLG51bGwpLHdQ''@;'; put 'put ''KHRoaXMsInN0YXRlIiwwKSx3UCh0aGlzLCJpbmxpbmVQcm9wZXJ0eSIsdm9pZCAwKSx0aGlzLmhvdD1jLHRoaXMuaW5saW5lUHJvcGVydHk9Yy5pc1J0bCgpPyJyaWdodCI6ImxlZnQifWFwcGVuZFRvKGMpe2MuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5zdGF0ZT0yfWJ1aWxk''@;'; put 'put ''KCl7MD09PXRoaXMuc3RhdGUmJih0aGlzLl9lbGVtZW50PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnN0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmlzQXBwZW5kZWQoKSYmdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMu''@;'; put 'put ''X2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9aXNBcHBlbmRlZCgpe3JldHVybiAyPT09dGhpcy5zdGF0ZX1pc0J1aWx0KCl7cmV0dXJuIHRoaXMuc3RhdGU+PTF9c2V0UG9zaXRpb24oYyxhKXtMMChjKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wPWMrbnkpLEww''@;'; put 'put ''KGEpJiYodGhpcy5fZWxlbWVudC5zdHlsZVt0aGlzLmlubGluZVByb3BlcnR5XT1hK255KX1nZXRQb3NpdGlvbigpe2NvbnN0IGM9dGhpcy5fZWxlbWVudC5zdHlsZTtyZXR1cm57dG9wOmMudG9wP3BhcnNlSW50KGMudG9wLDEwKTowLHN0YXJ0OmNbdGhpcy5pbmxpbmVQcm9wZXJ0eV0/cGFy''@;'; put 'put ''c2VJbnQoY1t0aGlzLmlubGluZVByb3BlcnR5XSwxMCk6MH19c2V0U2l6ZShjLGEpe0wwKGMpJiYodGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aD1jK255KSxMMChhKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUuaGVpZ2h0PWErbnkpfWdldFNpemUoKXtyZXR1cm57d2lkdGg6dGhpcy5fZWxlbWVu''@;'; put 'put ''dC5zdHlsZS53aWR0aD9wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoLDEwKTowLGhlaWdodDp0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD9wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodCwxMCk6MH19c2V0T2Zmc2V0KGMsYSl7TDAoYykmJih0aGlzLl9lbGVt''@;'; put 'put ''ZW50LnN0eWxlLm1hcmdpblRvcD1jK255KSxMMChhKSYmKHRoaXMuX2VsZW1lbnQuc3R5bGVbYG1hcmdpbiR7STAodGhpcy5pbmxpbmVQcm9wZXJ0eSl9YF09YStueSl9Z2V0T2Zmc2V0KCl7Y29uc3QgYz10aGlzLl9lbGVtZW50LnN0eWxlLGE9YG1hcmdpbiR7STAodGhpcy5pbmxpbmVQcm9w''@;'; put 'put ''ZXJ0eSl9YDtyZXR1cm57dG9wOmMubWFyZ2luVG9wP3BhcnNlSW50KGMubWFyZ2luVG9wLDEwKTowLHN0YXJ0OmNbYV0/cGFyc2VJbnQoY1thXSwxMCk6MH19fSxQbHQ9Y2xhc3MgT2x0IGV4dGVuZHMgSjNle2J1aWxkKCl7c3VwZXIuYnVpbGQoKSxtaSh0aGlzLl9lbGVtZW50LCJodF9fbWFu''@;'; put 'put ''dWFsQ29sdW1uTW92ZS0tYmFja2xpZ2h0Iil9fSxIbHQ9Y2xhc3MgTmx0IGV4dGVuZHMgSjNle2J1aWxkKCl7c3VwZXIuYnVpbGQoKSxtaSh0aGlzLl9lbGVtZW50LCJodF9fbWFudWFsQ29sdW1uTW92ZS0tZ3VpZGVsaW5lIil9fTtmdW5jdGlvbiB5ZihsLGMsYSl7UTNlKGwsYyksYy5zZXQo''@;'; put 'put ''bCxhKX1mdW5jdGlvbiBRM2UobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uICQxKGwsYyxhKXtyZXR1cm4gbC5zZXQoaDUobCxjKSxhKSxh''@;'; put 'put ''fWZ1bmN0aW9uIG1vKGwsYyl7cmV0dXJuIGwuZ2V0KGg1KGwsYykpfWZ1bmN0aW9uIGg1KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQg''@;'; put 'put ''aXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlQ29sdW1uTW92ZSIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlckNvbHVtbk1vdmUiKTtjb25zdCBsWD0ibWFudWFsQ29sdW1uTW92ZSIsZXBlPSJodF9fbWFu''@;'; put 'put ''dWFsQ29sdW1uTW92ZSIsQ1A9InNob3ctdWkiLGNYPSJvbi1tb3ZpbmctLWNvbHVtbnMiLHVYPSJhZnRlci1zZWxlY3Rpb24tLWNvbHVtbnMiO3ZhciBoMT1uZXcgV2Vha01hcCxmNT1uZXcgV2Vha01hcCxHND1uZXcgV2Vha01hcCxTUD1uZXcgV2Vha01hcCxwNT1uZXcgV2Vha01hcCxmMT1u''@;'; put 'put ''ZXcgV2Vha01hcCxNUD1uZXcgV2Vha01hcCxlMj1uZXcgV2Vha01hcCxyeT1uZXcgV2Vha01hcCx4UD1uZXcgV2Vha01hcCxMRT1uZXcgV2Vha01hcCxrNz1uZXcgV2Vha1NldDtjbGFzcyBqbHQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24g''@;'; put 'put ''Vmx0KGwsYyl7UTNlKGwsYyksYy5hZGQobCl9KHRoaXMsazcpLHlmKHRoaXMsaDEsbmV3IFBsdCh0aGlzLmhvdCkpLHlmKHRoaXMsZjUsbmV3IEhsdCh0aGlzLmhvdCkpLHlmKHRoaXMsRzQsW10pLHlmKHRoaXMsU1AsMCkseWYodGhpcyxwNSwhMSkseWYodGhpcyxmMSx7fSkseWYodGhpcyxN''@;'; put 'put ''UCx2b2lkIDApLHlmKHRoaXMsZTIsdm9pZCAwKSx5Zih0aGlzLHJ5LHZvaWQgMCkseWYodGhpcyx4UCx2b2lkIDApLHlmKHRoaXMsTEUsdm9pZCAwKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gbFh9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTIwfWlzRW5h''@;'; put 'put ''YmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtsWF19ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImJlZm9yZU9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBB''@;'; put 'put ''cnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gaDUoazcsYyx6bHQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9''@;'; put 'put ''MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBoNShrNyxjLFpsdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJhZnRlclNjcm9sbFZlcnRpY2FsbHkiLCgpPT5oNShrNyx0aGlzLFdsdCkuY2FsbCh0aGlzKSksdGhpcy5hZGRIb29rKCJhZnRlckxvYWREYXRhIixmdW5j''@;'; put 'put ''dGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBoNShrNyxjLEdsdCkuY2FsbChjLC4uLmQpfSksdGhpcy5idWlsZFBsdWdpblVJKCksdGhpcy5yZWdpc3RlckV2ZW50cygpLG1pKHRoaXMu''@;'; put 'put ''aG90LnJvb3RFbGVtZW50LGVwZSksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5tb3ZlQnlTZXR0aW5nc09yTG9hZCgpLHN1cGVyLnVwZGF0ZVBsdWdpbigpfWRpc2FibGVQbHVnaW4oKXts''@;'; put 'put ''cyh0aGlzLmhvdC5yb290RWxlbWVudCxlcGUpLHRoaXMudW5yZWdpc3RlckV2ZW50cygpLG1vKGgxLHRoaXMpLmRlc3Ryb3koKSxtbyhmNSx0aGlzKS5kZXN0cm95KCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfW1vdmVDb2x1bW4oYyxhKXtyZXR1cm4gdGhpcy5tb3ZlQ29sdW1ucyhbY10sYSl9''@;'; put 'put ''bW92ZUNvbHVtbnMoYyxhKXtjb25zdCBkPW1vKE1QLHRoaXMpLGg9dGhpcy5pc01vdmVQb3NzaWJsZShjLGEpLGY9dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNvbHVtbk1vdmUiLGMsYSxkLGgpO2lmKCQxKE1QLHRoaXMsdm9pZCAwKSwhMT09PWYpcmV0dXJuO2gmJnRoaXMuaG90LmNvbHVt''@;'; put 'put ''bkluZGV4TWFwcGVyLm1vdmVJbmRleGVzKGMsYSk7Y29uc3Qgdj1oJiZ0aGlzLmlzQ29sdW1uT3JkZXJDaGFuZ2VkKGMsYSk7cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlckNvbHVtbk1vdmUiLGMsYSxkLGgsdiksdn1kcmFnQ29sdW1uKGMsYSl7cmV0dXJuIHRoaXMuZHJhZ0NvbHVt''@;'; put 'put ''bnMoW2NdLGEpfWRyYWdDb2x1bW5zKGMsYSl7Y29uc3QgZD10aGlzLmNvdW50RmluYWxJbmRleChjLGEpO3JldHVybiAkMShNUCx0aGlzLGEpLHRoaXMubW92ZUNvbHVtbnMoYyxkKX1pc01vdmVQb3NzaWJsZShjLGEpe2NvbnN0IGQ9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0Tm90''@;'; put 'put ''VHJpbW1lZEluZGV4ZXNMZW5ndGgoKSxoPWMubGVuZ3RoK2E+ZCxmPWE8MCx2PWMuc29tZShWPT5WPDApLFM9Yy5zb21lKFY9PlY+PWQpO3JldHVybiEoaHx8Znx8dnx8Uyl9aXNDb2x1bW5PcmRlckNoYW5nZWQoYyxhKXtyZXR1cm4gYy5zb21lKChkLGgpPT5kLWghPT1hKX1jb3VudEZpbmFs''@;'; put 'put ''SW5kZXgoYyxhKXtjb25zdCBkPU1jKGMsKGgsZik9PihmPGEmJihoKz0xKSxoKSwwKTtyZXR1cm4gYS1kfWdldENvbHVtbnNXaWR0aChjLGEpe2NvbnN0IGQ9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXI7bGV0IGg9MDtmb3IobGV0IGY9YztmPD1hO2YrPTEpe2NvbnN0IHY9ZC5nZXRSZW5k''@;'; put 'put ''ZXJhYmxlRnJvbVZpc3VhbEluZGV4KGYpO2Y8MD9oKz10aGlzLmhvdC52aWV3Ll93dC53dFZpZXdwb3J0LmdldFJvd0hlYWRlcldpZHRoKCl8fDA6bnVsbCE9PXYmJihoKz10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFN0cmV0Y2hlZENvbHVtbldpZHRoKHYpfHwwKX1yZXR1cm4gaH1t''@;'; put 'put ''b3ZlQnlTZXR0aW5nc09yTG9hZCgpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtsWF07aWYoQXJyYXkuaXNBcnJheShjKSl0aGlzLm1vdmVDb2x1bW5zKGMsMCk7ZWxzZSBpZih2b2lkIDAhPT1jKXtjb25zdCBhPXRoaXMucGVyc2lzdGVudFN0YXRlTG9hZCgpO2EubGVuZ3RoJiZ0''@;'; put 'put ''aGlzLm1vdmVDb2x1bW5zKGEsMCl9fWlzRml4ZWRDb2x1bW5zU3RhcnQoYyl7cmV0dXJuIGM8dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydH1wZXJzaXN0ZW50U3RhdGVTYXZlKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJtYW51YWxD''@;'; put 'put ''b2x1bW5Nb3ZlIix0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSl9cGVyc2lzdGVudFN0YXRlTG9hZCgpe2NvbnN0IGM9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiwibWFudWFsQ29sdW1uTW92ZSIsYyksYy52''@;'; put 'put ''YWx1ZT9jLnZhbHVlOltdfXByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcoYyxhKXtjb25zdCBkPVtdO3JldHVybiBnbyhjLGEsaD0+e2QucHVzaChoKX0pLGR9cmVmcmVzaFBvc2l0aW9ucygpe2NvbnN0IGM9dGhpcy5ob3Qudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpO3RoaXMuaXNG''@;'; put 'put ''aXhlZENvbHVtbnNTdGFydChtbyhlMix0aGlzKSkmJmM+MCYmdGhpcy5ob3Quc2Nyb2xsVmlld3BvcnRUbyh7Y29sOnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChjLTEsLTEpfSk7Y29uc3QgYT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLGQ9''@;'; put 'put ''dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zY3JvbGxhYmxlRWxlbWVudCxoPSJudW1iZXIiPT10eXBlb2YgZC5zY3JvbGxYP2Quc2Nyb2xsWDpkLnNjcm9sbExlZnQ7bGV0IGY9dGhpcy5ob3Qudmlldy5USEVBRC5vZmZzZXRMZWZ0K3RoaXMuZ2V0Q29sdW1uc1dpZHRoKDAsbW8oZTIs''@;'; put 'put ''dGhpcyktMSk7Y29uc3Qgdj1hLmhpZGVyLm9mZnNldFdpZHRoLFM9YS5UQk9EWS5vZmZzZXRMZWZ0LFY9bW8oaDEsdGhpcykuZ2V0T2Zmc2V0KCkuc3RhcnQsUT1tbyhoMSx0aGlzKS5nZXRTaXplKCkud2lkdGg7bGV0IGRlPTAscGU9MDtpZih0aGlzLmhvdC5pc1J0bCgpKXtjb25zdCBZZT10''@;'; put 'put ''aGlzLmhvdC5yb290V2luZG93LGV0PVdhKHRoaXMuaG90LnJvb3RFbGVtZW50KSxkdD1ZZS5pbm5lcldpZHRoLW1vKHJ5LHRoaXMpLWV0O3BlPVllLmlubmVyV2lkdGgtbW8oZjEsdGhpcykuZXZlbnRQYWdlWC1kdC0odm9pZCAwPT09ZC5zY3JvbGxYP2g6MCl9ZWxzZSBwZT1tbyhmMSx0aGlz''@;'; put 'put ''KS5ldmVudFBhZ2VYLShtbyhyeSx0aGlzKS0odm9pZCAwPT09ZC5zY3JvbGxYP2g6MCkpO2lmKG1vKHhQLHRoaXMpJiYoZGU9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuY2xvbmUud3RUYWJsZS5nZXRDb2x1bW5IZWFkZXIoLTEpLm9mZnNldFdpZHRo''@;'; put 'put ''KSx0aGlzLmlzRml4ZWRDb2x1bW5zU3RhcnQobW8oZTIsdGhpcykpJiYoZis9aCksZis9ZGUsbW8oZTIsdGhpcyk8MCltbyhMRSx0aGlzKT4wP21vKGYxLHRoaXMpLmNvbD0wOm1vKGYxLHRoaXMpLmNvbD1jPjA/Yy0xOmM7ZWxzZSBpZihtbyhmMSx0aGlzKS5URC5vZmZzZXRXaWR0aC8yK2Y8''@;'; put 'put ''PXBlKXtjb25zdCBZZT1tbyhlMix0aGlzKT49bW8oU1AsdGhpcyk/bW8oU1AsdGhpcyktMTptbyhlMix0aGlzKTttbyhmMSx0aGlzKS5jb2w9WWUrMSxmKz1tbyhmMSx0aGlzKS5URC5vZmZzZXRXaWR0aH1lbHNlIG1vKGYxLHRoaXMpLmNvbD1tbyhlMix0aGlzKTtsZXQgQ2U9cGUsT2U9Zjtw''@;'; put 'put ''ZStRK1Y+PXY/Q2U9di1RLVY6cGUrVjxTK2RlJiYoQ2U9UytkZStNYXRoLmFicyhWKSksZj49di0xP09lPXYtMTowPT09T2U/T2U9MTp2b2lkIDAhPT1kLnNjcm9sbFgmJm1vKGUyLHRoaXMpPG1vKExFLHRoaXMpJiYoT2UtPW1vKHJ5LHRoaXMpPD1kLnNjcm9sbFg/bW8ocnksdGhpcyk6MCks''@;'; put 'put ''bW8oaDEsdGhpcykuc2V0UG9zaXRpb24obnVsbCxDZSksbW8oZjUsdGhpcykuc2V0UG9zaXRpb24obnVsbCxPZSl9cmVnaXN0ZXJFdmVudHMoKXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6Y309dGhpcy5ob3Qucm9vdERvY3VtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo''@;'; put 'put ''YywibW91c2Vtb3ZlIixhPT5oNShrNyx0aGlzLFVsdCkuY2FsbCh0aGlzLGEpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNldXAiLCgpPT5oNShrNyx0aGlzLFlsdCkuY2FsbCh0aGlzKSl9dW5yZWdpc3RlckV2ZW50cygpe3RoaXMuZXZlbnRNYW5hZ2VyLmNs''@;'; put 'put ''ZWFyKCl9YnVpbGRQbHVnaW5VSSgpe21vKGgxLHRoaXMpLmJ1aWxkKCksbW8oZjUsdGhpcykuYnVpbGQoKX1kZXN0cm95KCl7bW8oaDEsdGhpcykuZGVzdHJveSgpLG1vKGY1LHRoaXMpLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIHpsdChsLGMsYSxkKXtjb25zdCBoPXRo''@;'; put 'put ''aXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsZj10aGlzLmhvdC5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCksdj10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLFM9WW8obC50YXJnZXQsInNvcnRBY3Rpb24iKTtpZighdnx8IWZ8fG1vKHA1LHRoaXMpfHwwIT09bC5i''@;'; put 'put ''dXR0b258fFMpcmV0dXJuICQxKHA1LHRoaXMsITEpLG1vKEc0LHRoaXMpLmxlbmd0aD0wLHZvaWQgbHModGhpcy5ob3Qucm9vdEVsZW1lbnQsW2NYLENQXSk7Y29uc3QgVj1tbyhmNSx0aGlzKS5pc0J1aWx0KCkmJiFtbyhmNSx0aGlzKS5pc0FwcGVuZGVkKCksUT1tbyhoMSx0aGlzKS5pc0J1''@;'; put 'put ''aWx0KCkmJiFtbyhoMSx0aGlzKS5pc0FwcGVuZGVkKCk7ViYmUSYmKG1vKGY1LHRoaXMpLmFwcGVuZFRvKGguaGlkZXIpLG1vKGgxLHRoaXMpLmFwcGVuZFRvKGguaGlkZXIpKTtjb25zdHtmcm9tOmRlLHRvOnBlfT12LENlPU1hdGgubWluKGRlLmNvbCxwZS5jb2wpLE9lPU1hdGgubWF4KGRl''@;'; put 'put ''LmNvbCxwZS5jb2wpO2lmKGMucm93PDAmJmMuY29sPj1DZSYmYy5jb2w8PU9lKXtkLmNvbHVtbj0hMCwkMShwNSx0aGlzLCEwKTtjb25zdCBZZT1hLmZpcnN0Q2hpbGQ/QjFlKGwsYS5maXJzdENoaWxkKS54Omwub2Zmc2V0WDttbyhmMSx0aGlzKS5ldmVudFBhZ2VYPWwucGFnZVgsJDEoZTIs''@;'; put 'put ''dGhpcyxjLmNvbCksbW8oZjEsdGhpcykuVEQ9YSxtbyhmMSx0aGlzKS5jb2w9Yy5jb2wsJDEoRzQsdGhpcyx0aGlzLnByZXBhcmVDb2x1bW5zVG9Nb3ZpbmcoQ2UsT2UpKSwkMSh4UCx0aGlzLCEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5yb3dIZWFkZXJzKSwkMShTUCx0aGlzLHRoaXMuaG90''@;'; put 'put ''LmNvdW50Q29scygpKSwkMShMRSx0aGlzLHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQpLCQxKHJ5LHRoaXMseHUodGhpcy5ob3Qucm9vdEVsZW1lbnQpLmxlZnQpO2NvbnN0IGV0PW1vKHhQLHRoaXMpPy0xOjAsZHQ9aC5ob2xkZXIuc2Nyb2xsVG9wK2guZ2V0Q29s''@;'; put 'put ''dW1uSGVhZGVySGVpZ2h0KDApKzEsaHQ9Yy5jb2w8bW8oTEUsdGhpcyksTXQ9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0T3ZlcmxheU9mZnNldCgpLFF0PU1hdGguYWJzKFllLSh0aGlzLmhvdC5pc1J0bCgpP2Eub2Zmc2V0V2lkdGg6MCkpLGxu''@;'; put 'put ''PXRoaXMuZ2V0Q29sdW1uc1dpZHRoKENlLGMuY29sLTEpK1F0LHZuPXRoaXMuZ2V0Q29sdW1uc1dpZHRoKGV0LENlLTEpKyhodD9NdDowKStsbjttbyhoMSx0aGlzKS5zZXRQb3NpdGlvbihkdCx2biksbW8oaDEsdGhpcykuc2V0U2l6ZSh0aGlzLmdldENvbHVtbnNXaWR0aChDZSxPZSksaC5o''@;'; put 'put ''aWRlci5vZmZzZXRIZWlnaHQtZHQpLG1vKGgxLHRoaXMpLnNldE9mZnNldChudWxsLC1sbiksbWkodGhpcy5ob3Qucm9vdEVsZW1lbnQsY1gpfWVsc2UgbHModGhpcy5ob3Qucm9vdEVsZW1lbnQsdVgpLCQxKHA1LHRoaXMsITEpLG1vKEc0LHRoaXMpLmxlbmd0aD0wfWZ1bmN0aW9uIFVsdChs''@;'; put 'put ''KXttbyhwNSx0aGlzKSYmKG1vKGYxLHRoaXMpLmV2ZW50UGFnZVg9bC5wYWdlWCx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKSl9ZnVuY3Rpb24gWmx0KGwsYyxhLGQpeyF0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpfHwhbW8ocDUsdGhpcyl8fChtbyhHNCx0aGlzKS5pbmRleE9mKGMu''@;'; put 'put ''Y29sKT4tMT9scyh0aGlzLmhvdC5yb290RWxlbWVudCxDUCk6bWkodGhpcy5ob3Qucm9vdEVsZW1lbnQsQ1ApLGQucm93PSEwLGQuY29sdW1uPSEwLGQuY2VsbD0hMCwkMShlMix0aGlzLGMuY29sKSxtbyhmMSx0aGlzKS5URD1hKX1mdW5jdGlvbiBZbHQoKXtjb25zdCBsPW1vKGYxLHRoaXMp''@;'; put 'put ''LmNvbCxjPW1vKEc0LHRoaXMpLmxlbmd0aDtpZigkMShlMix0aGlzLHZvaWQgMCksJDEocDUsdGhpcywhMSksbHModGhpcy5ob3Qucm9vdEVsZW1lbnQsW2NYLENQLHVYXSksdGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpJiZtaSh0aGlzLmhvdC5yb290RWxl''@;'; put 'put ''bWVudCx1WCksYzwxfHx2b2lkIDA9PT1sKXJldHVybjtjb25zdCBhPW1vKEc0LHRoaXMpWzBdLGQ9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihhKSxoPXRoaXMuZHJhZ0NvbHVtbnMobW8oRzQsdGhpcyksbCk7aWYobW8oRzQsdGhpcykubGVuZ3RoPTAsITA9PT1oKXt0aGlzLnBlcnNpc3Rl''@;'; put 'put ''bnRTdGF0ZVNhdmUoKSx0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpO2NvbnN0IGY9dGhpcy5ob3QudG9WaXN1YWxDb2x1bW4oZCk7dGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhmLGYrYy0xKX19ZnVuY3Rpb24gV2x0KCl7Y29uc3QgbD10aGlzLmhv''@;'; put 'put ''dC52aWV3Ll93dC53dFRhYmxlLGQ9bC5nZXRDb2x1bW5IZWFkZXJIZWlnaHQoMCkrMStsLmhvbGRlci5zY3JvbGxUb3A7bW8oaDEsdGhpcykuc2V0UG9zaXRpb24oZCksbW8oaDEsdGhpcykuc2V0U2l6ZShudWxsLGwuaGlkZXIub2Zmc2V0SGVpZ2h0LWQpfWZ1bmN0aW9uIEdsdCgpe3RoaXMu''@;'; put 'put ''bW92ZUJ5U2V0dGluZ3NPckxvYWQoKX1mdW5jdGlvbiBIMChsLGMsYSl7dHBlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiB0cGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9u''@;'; put 'put ''IGFuIG9iamVjdCIpfWZ1bmN0aW9uIEVjKGwsYyxhKXtyZXR1cm4gbC5zZXQod2YobCxjKSxhKSxhfWZ1bmN0aW9uIEppKGwsYyl7cmV0dXJuIGwuZ2V0KHdmKGwsYykpfWZ1bmN0aW9uIHdmKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBFUD0ibWFudWFsQ29sdW1uUmVzaXplIixucGU9Im1hbnVhbENvbHVtbldpZHRocyI7dmFyICQ0PW5ldyBXZWFrTWFwLFRQ''@;'; put 'put ''PW5ldyBXZWFrTWFwLEJkPW5ldyBXZWFrTWFwLGtQPW5ldyBXZWFrTWFwLCQzPW5ldyBXZWFrTWFwLEtsdD1uZXcgV2Vha01hcCxpeT1uZXcgV2Vha01hcCxBUD1uZXcgV2Vha01hcCxxMT1uZXcgV2Vha01hcCxxND1uZXcgV2Vha01hcCxBNz1uZXcgV2Vha01hcCxEUD1uZXcgV2Vha01hcCxP''@;'; put 'put ''RT1uZXcgV2Vha01hcCxQRT1uZXcgV2Vha01hcCxqZD1uZXcgV2Vha01hcCxGRT1uZXcgV2Vha01hcCxxMz1uZXcgV2Vha1NldDtjbGFzcyBYbHQgZXh0ZW5kcyBkYXtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gRVB9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4g''@;'; put 'put ''MTMwfWNvbnN0cnVjdG9yKGMpe3N1cGVyKGMpLGZ1bmN0aW9uICRsdChsLGMpe3RwZShsLGMpLGMuYWRkKGwpfSh0aGlzLHEzKSxIMCh0aGlzLCQ0LG51bGwpLEgwKHRoaXMsVFAsbnVsbCksSDAodGhpcyxCZCxbXSksSDAodGhpcyxrUCxudWxsKSxIMCh0aGlzLCQzLG51bGwpLEgwKHRoaXMs''@;'; put 'put ''S2x0LG51bGwpLEgwKHRoaXMsaXksbnVsbCksSDAodGhpcyxBUCxudWxsKSxIMCh0aGlzLHExLHRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSksSDAodGhpcyxxNCx0aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikpLEgwKHRoaXMsQTcs''@;'; put 'put ''bnVsbCksSDAodGhpcyxEUCwhMSksSDAodGhpcyxPRSwwKSxIMCh0aGlzLFBFLG51bGwpLEgwKHRoaXMsamQsdm9pZCAwKSxIMCh0aGlzLEZFLHZvaWQgMCksbWkoSmkocTEsdGhpcyksIm1hbnVhbENvbHVtblJlc2l6ZXIiKSxtaShKaShxNCx0aGlzKSwibWFudWFsQ29sdW1uUmVzaXplckd1''@;'; put 'put ''aWRlIil9Z2V0IGlubGluZURpcigpe3JldHVybiB0aGlzLmhvdC5pc1J0bCgpPyJyaWdodCI6ImxlZnQifWlzRW5hYmxlZCgpe3JldHVybiB0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0VQXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fChFYyhqZCx0aGlzLG5ldyBabSksSmkoamQsdGhp''@;'; put 'put ''cykuYWRkTG9jYWxIb29rKCJpbml0IiwoKT0+d2YocTMsdGhpcyxKbHQpLmNhbGwodGhpcykpLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLnJlZ2lzdGVyTWFwKHRoaXMucGx1Z2luTmFtZSxKaShqZCx0aGlzKSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2xXaWR0aCIsKGMsYSk9PndmKHEz''@;'; put 'put ''LHRoaXMsaWN0KS5jYWxsKHRoaXMsYyxhKSwxKSx0aGlzLmFkZEhvb2soImJlZm9yZVN0cmV0Y2hpbmdDb2x1bW5XaWR0aCIsKGMsYSk9PndmKHEzLHRoaXMsb2N0KS5jYWxsKHRoaXMsYyxhKSksdGhpcy5hZGRIb29rKCJiZWZvcmVDb2x1bW5SZXNpemUiLChjLGEsZCk9PndmKHEzLHRoaXMs''@;'; put 'put ''c2N0KS5jYWxsKHRoaXMsYyxhLGQpKSx0aGlzLmJpbmRFdmVudHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9dXBkYXRlUGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7RWMoRkUsdGhp''@;'; put 'put ''cyxKaShqZCx0aGlzKS5nZXRWYWx1ZXMoKSksdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIudW5yZWdpc3Rlck1hcCh0aGlzLnBsdWdpbk5hbWUpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1zYXZlTWFudWFsQ29sdW1uV2lkdGhzKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0''@;'; put 'put ''ZVNhdmUiLG5wZSxKaShqZCx0aGlzKS5nZXRWYWx1ZXMoKSl9bG9hZE1hbnVhbENvbHVtbldpZHRocygpe2NvbnN0IGM9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixucGUsYyksYy52YWx1ZX1zZXRNYW51YWxTaXplKGMsYSl7Y29uc3QgZD1NYXRo''@;'; put 'put ''Lm1heChhLDIwKSxoPXRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYyk7cmV0dXJuIEppKGpkLHRoaXMpLnNldFZhbHVlQXRJbmRleChoLGQpLGR9Y2xlYXJNYW51YWxTaXplKGMpe2NvbnN0IGE9dGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbihjKTtKaShqZCx0aGlzKS5zZXRWYWx1ZUF0SW5k''@;'; put 'put ''ZXgoYSxudWxsKX1zZXR1cEhhbmRsZVBvc2l0aW9uKGMpe2lmKCFjLnBhcmVudE5vZGUpcmV0dXJuO0VjKCQ0LHRoaXMsYyk7Y29uc3R7X3d0OmF9PXRoaXMuaG90LnZpZXcsZD1hLnd0VGFibGUuZ2V0Q29vcmRzKEppKCQ0LHRoaXMpKSxoPWQuY29sO2lmKGg8MClyZXR1cm47Y29uc3QgZj1a''@;'; put 'put ''bChKaSgkNCx0aGlzKSksdj1KaSgkNCx0aGlzKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgVjtoPGEuZ2V0U2V0dGluZygiZml4ZWRDb2x1bW5zU3RhcnQiKSYmKFY9YS53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbihK''@;'; put 'put ''aSgkNCx0aGlzKSxkLnJvdyxkLmNvbCkpLFZ8fChWPWEud3RPdmVybGF5cy50b3BPdmVybGF5LmdldFJlbGF0aXZlQ2VsbFBvc2l0aW9uKEppKCQ0LHRoaXMpLGQucm93LGQuY29sKSksRWMoVFAsdGhpcyx0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXRWaXN1YWxGcm9tUmVuZGVyYWJs''@;'; put 'put ''ZUluZGV4KGgpKSxFYyhCZCx0aGlzLFtdKTtjb25zdCBRPXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2VsZWN0aW9uLmlzU2VsZWN0ZWRCeUNvbHVtbkhlYWRlcigpO3RoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkmJlEmJlRuKHRoaXMu''@;'; put 'put ''aG90LmdldFNlbGVjdGVkUmFuZ2UoKSxwZT0+e2dvKHBlLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sLHBlLmdldEJvdHRvbUVuZENvcm5lcigpLmNvbCxZZT0+e0ppKEJkLHRoaXMpLmluY2x1ZGVzKFllKXx8SmkoQmQsdGhpcykucHVzaChZZSl9KX0pLEppKEJkLHRoaXMpLmluY2x1ZGVzKEpp''@;'; put 'put ''KFRQLHRoaXMpKXx8RWMoQmQsdGhpcyxbSmkoVFAsdGhpcyldKSxFYyhBUCx0aGlzLFYuc3RhcnQtNiksRWMoaXksdGhpcyxwYXJzZUludCh2LndpZHRoLDEwKSksSmkocTEsdGhpcykuc3R5bGUudG9wPWAke1YudG9wfXB4YCxKaShxMSx0aGlzKS5zdHlsZVt0aGlzLmlubGluZURpcl09YCR7''@;'; put 'put ''SmkoQVAsdGhpcykrSmkoaXksdGhpcyl9cHhgLEppKHExLHRoaXMpLnN0eWxlLmhlaWdodD1gJHtmfXB4YCx0aGlzLmhvdC5yb290RWxlbWVudC5hcHBlbmRDaGlsZChKaShxMSx0aGlzKSl9cmVmcmVzaEhhbmRsZVBvc2l0aW9uKCl7SmkocTEsdGhpcykuc3R5bGVbdGhpcy5pbmxpbmVEaXJd''@;'; put 'put ''PWAke0ppKEFQLHRoaXMpK0ppKGtQLHRoaXMpfXB4YH1zZXR1cEd1aWRlUG9zaXRpb24oKXtjb25zdCBjPXBhcnNlSW50KFpsKEppKHExLHRoaXMpKSwxMCksYT1wYXJzZUludChKaShxMSx0aGlzKS5zdHlsZS50b3AsMTApK2MsZD1wYXJzZUludCh0aGlzLmhvdC52aWV3Lm1heGltdW1WaXNp''@;'; put 'put ''YmxlRWxlbWVudEhlaWdodCgwKSwxMCk7bWkoSmkocTEsdGhpcyksImFjdGl2ZSIpLG1pKEppKHE0LHRoaXMpLCJhY3RpdmUiKSxKaShxNCx0aGlzKS5zdHlsZS50b3A9YCR7YX1weGAsdGhpcy5yZWZyZXNoR3VpZGVQb3NpdGlvbigpLEppKHE0LHRoaXMpLnN0eWxlLmhlaWdodD1kLWMrInB4''@;'; put 'put ''Iix0aGlzLmhvdC5yb290RWxlbWVudC5hcHBlbmRDaGlsZChKaShxNCx0aGlzKSl9cmVmcmVzaEd1aWRlUG9zaXRpb24oKXtKaShxNCx0aGlzKS5zdHlsZVt0aGlzLmlubGluZURpcl09SmkocTEsdGhpcykuc3R5bGVbdGhpcy5pbmxpbmVEaXJdfWhpZGVIYW5kbGVBbmRHdWlkZSgpe2xzKEpp''@;'; put 'put ''KHExLHRoaXMpLCJhY3RpdmUiKSxscyhKaShxNCx0aGlzKSwiYWN0aXZlIil9Y2hlY2tJZkNvbHVtbkhlYWRlcihjKXtjb25zdCBhPUltKGMsWyJUSEVBRCJdLHRoaXMuaG90LnJvb3RFbGVtZW50KSx7dG9wT3ZlcmxheTpkLHRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTpofT10aGlzLmhv''@;'; put 'put ''dC52aWV3Ll93dC53dE92ZXJsYXlzO3JldHVybltkLmNsb25lLnd0VGFibGUuVEhFQUQsaC5jbG9uZS53dFRhYmxlLlRIRUFEXS5pbmNsdWRlcyhhKX1nZXRDbG9zZXN0VEhQYXJlbnQoYyl7cmV0dXJuIlRBQkxFIiE9PWMudGFnTmFtZT8iVEgiPT09Yy50YWdOYW1lP2M6dGhpcy5nZXRDbG9z''@;'; put 'put ''ZXN0VEhQYXJlbnQoYy5wYXJlbnROb2RlKTpudWxsfWFmdGVyTW91c2VEb3duVGltZW91dCgpe2NvbnN0IGM9KCk9Pnt0aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5ob3Qudmlldy5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSxhPShkLGgpPT57''@;'; put 'put ''Y29uc3QgZj10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQ29sdW1uUmVzaXplIixKaSgkMyx0aGlzKSxkLCEwKTt2b2lkIDAhPT1mJiZFYygkMyx0aGlzLGYpLCJhbGwiPT09dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKS5zdHJldGNoSD90aGlzLmNsZWFyTWFudWFsU2l6ZShkKTp0aGlzLnNldE1h''@;'; put 'put ''bnVhbFNpemUoZCxKaSgkMyx0aGlzKSksdGhpcy5zYXZlTWFudWFsQ29sdW1uV2lkdGhzKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ29sdW1uUmVzaXplIixKaSgkMyx0aGlzKSxkLCEwKSxoJiZjKCl9O0ppKE9FLHRoaXMpPj0yJiYoSmkoQmQsdGhpcykubGVuZ3RoPjE/KFRuKEppKEJk''@;'; put 'put ''LHRoaXMpLGg9PnthKGgpfSksYygpKTpUbihKaShCZCx0aGlzKSxoPT57YShoLCEwKX0pKSxFYyhPRSx0aGlzLDApLEVjKFBFLHRoaXMsbnVsbCl9YmluZEV2ZW50cygpe2NvbnN0e3Jvb3RXaW5kb3c6Yyxyb290RWxlbWVudDphfT10aGlzLmhvdDt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVu''@;'; put 'put ''dExpc3RlbmVyKGEsIm1vdXNlb3ZlciIsZD0+d2YocTMsdGhpcyxRbHQpLmNhbGwodGhpcyxkKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJtb3VzZWRvd24iLGQ9PndmKHEzLHRoaXMsZWN0KS5jYWxsKHRoaXMsZCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50''@;'; put 'put ''TGlzdGVuZXIoYywibW91c2Vtb3ZlIixkPT53ZihxMyx0aGlzLHRjdCkuY2FsbCh0aGlzLGQpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNldXAiLCgpPT53ZihxMyx0aGlzLG5jdCkuY2FsbCh0aGlzKSksdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0''@;'; put 'put ''ZW5lcihKaShxMSx0aGlzKSwiY29udGV4dG1lbnUiLCgpPT53ZihxMyx0aGlzLHJjdCkuY2FsbCh0aGlzKSl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gSmx0KCl7Y29uc3QgbD10aGlzLmhvdC5nZXRTZXR0aW5ncygpW0VQXSxjPXRoaXMubG9hZE1hbnVhbENvbHVtbldp''@;'; put 'put ''ZHRocygpO3R5cGVvZiBjPCJ1Ij90aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e2MuZm9yRWFjaCgoYSxkKT0+e0ppKGpkLHRoaXMpLnNldFZhbHVlQXRJbmRleChkLGEpfSl9LCEwKTpBcnJheS5pc0FycmF5KGwpPyh0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e2wuZm9yRWFjaCgo''@;'; put 'put ''YSxkKT0+e0ppKGpkLHRoaXMpLnNldFZhbHVlQXRJbmRleChkLGEpfSl9LCEwKSxFYyhGRSx0aGlzLGwpKTohMD09PWwmJkFycmF5LmlzQXJyYXkoSmkoRkUsdGhpcykpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e0ppKEZFLHRoaXMpLmZvckVhY2goKGEsZCk9PntKaShqZCx0aGlz''@;'; put 'put ''KS5zZXRWYWx1ZUF0SW5kZXgoZCxhKX0pfSwhMCl9ZnVuY3Rpb24gUWx0KGwpe2lmKCFfVyhsLnRhcmdldCkmJiEwIT09SmkoRFAsdGhpcykmJnRoaXMuY2hlY2tJZkNvbHVtbkhlYWRlcihsLnRhcmdldCkpe2NvbnN0IGM9dGhpcy5nZXRDbG9zZXN0VEhQYXJlbnQobC50YXJnZXQpO2lmKCFj''@;'; put 'put ''KXJldHVybjtjb25zdCBhPWMuZ2V0QXR0cmlidXRlKCJjb2xzcGFuIik7YyYmKG51bGw9PT1hfHwiMSI9PT1hKSYmKEppKEE3LHRoaXMpfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oYykpfX1mdW5jdGlvbiBlY3QobCl7bC50YXJnZXQucGFyZW50Tm9kZT09PXRoaXMuaG90LnJvb3RFbGVt''@;'; put 'put ''ZW50JiZZbyhsLnRhcmdldCwibWFudWFsQ29sdW1uUmVzaXplciIpJiYodGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKEppKCQ0LHRoaXMpKSx0aGlzLnNldHVwR3VpZGVQb3NpdGlvbigpLEVjKEE3LHRoaXMsITApLG51bGw9PT1KaShQRSx0aGlzKSYmKEVjKFBFLHRoaXMsc2V0VGltZW91dCgo''@;'; put 'put ''KT0+dGhpcy5hZnRlck1vdXNlRG93blRpbWVvdXQoKSw1MDApKSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KEppKFBFLHRoaXMpKSksRWMoT0UsdGhpcyxKaShPRSx0aGlzKSsxKSx0aGlzLnN0YXJ0WD1sLnBhZ2VYLEVjKCQzLHRoaXMsSmkoaXksdGhpcykpKX1mdW5jdGlvbiB0Y3QobCl7''@;'; put 'put ''aWYoSmkoQTcsdGhpcykpe2NvbnN0IGM9KGwucGFnZVgtdGhpcy5zdGFydFgpKnRoaXMuaG90LmdldERpcmVjdGlvbkZhY3RvcigpO0VjKGtQLHRoaXMsSmkoaXksdGhpcykrYyksVG4oSmkoQmQsdGhpcyksYT0+e0VjKCQzLHRoaXMsdGhpcy5zZXRNYW51YWxTaXplKGEsSmkoa1AsdGhpcykp''@;'; put 'put ''KX0pLHRoaXMucmVmcmVzaEhhbmRsZVBvc2l0aW9uKCksdGhpcy5yZWZyZXNoR3VpZGVQb3NpdGlvbigpfX1mdW5jdGlvbiBuY3QoKXtjb25zdCBsPSgpPT57dGhpcy5ob3QuZm9yY2VGdWxsUmVuZGVyPSEwLHRoaXMuaG90LnZpZXcucmVuZGVyKCksdGhpcy5ob3Qudmlldy5hZGp1c3RFbGVt''@;'; put 'put ''ZW50c1NpemUoKX0sYz0oYSxkKT0+e3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDb2x1bW5SZXNpemUiLEppKCQzLHRoaXMpLGEsITEpLGQmJmwoKSx0aGlzLnNhdmVNYW51YWxDb2x1bW5XaWR0aHMoKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDb2x1bW5SZXNpemUiLEppKCQzLHRoaXMp''@;'; put 'put ''LGEsITEpfTtKaShBNyx0aGlzKSYmKHRoaXMuaGlkZUhhbmRsZUFuZEd1aWRlKCksRWMoQTcsdGhpcywhMSksSmkoJDMsdGhpcykhPT1KaShpeSx0aGlzKSYmKEppKEJkLHRoaXMpLmxlbmd0aD4xPyhUbihKaShCZCx0aGlzKSxkPT57YyhkKX0pLGwoKSk6VG4oSmkoQmQsdGhpcyksZD0+e2Mo''@;'; put 'put ''ZCwhMCl9KSksdGhpcy5zZXR1cEhhbmRsZVBvc2l0aW9uKEppKCQ0LHRoaXMpKSl9ZnVuY3Rpb24gcmN0KCl7dGhpcy5oaWRlSGFuZGxlQW5kR3VpZGUoKSx0aGlzLmhvdC5yb290RWxlbWVudC5yZW1vdmVDaGlsZChKaShxMSx0aGlzKSksdGhpcy5ob3Qucm9vdEVsZW1lbnQucmVtb3ZlQ2hp''@;'; put 'put ''bGQoSmkocTQsdGhpcykpLEVjKEE3LHRoaXMsITEpLEVjKERQLHRoaXMsITApLHRoaXMuaG90Ll9yZWdpc3RlckltbWVkaWF0ZSgoKT0+e0VjKERQLHRoaXMsITEpfSl9ZnVuY3Rpb24gaWN0KGwsYyl7bGV0IGE9bDtpZih0aGlzLmVuYWJsZWQpe2NvbnN0IGQ9dGhpcy5ob3QudG9QaHlzaWNh''@;'; put 'put ''bENvbHVtbihjKSxoPUppKGpkLHRoaXMpLmdldFZhbHVlQXRJbmRleChkKTt0aGlzLmhvdC5nZXRTZXR0aW5ncygpW0VQXSYmaCYmKGE9aCl9cmV0dXJuIGF9ZnVuY3Rpb24gb2N0KGwsYyl7bGV0IGE9SmkoamQsdGhpcykuZ2V0VmFsdWVBdEluZGV4KGMpO3JldHVybiBudWxsPT09YSYmKGE9''@;'; put 'put ''bCksYX1mdW5jdGlvbiBzY3QoKXt0aGlzLmhvdC52aWV3Ll93dC53dFZpZXdwb3J0LnJlc2V0SGFzT3ZlcnNpemVkQ29sdW1uSGVhZGVyc01hcmtlZCgpfWZ1bmN0aW9uIGRYKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBhY3QobCl7dmFyIGM9ZnVuY3Rpb24gbGN0KGwsYyl7aWYoIm9iamVj''@;'; put 'put ''dCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBt''@;'; put 'put ''dXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVt''@;'; put 'put ''ZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IG95PSJweCIsb3BlPWNsYXNzIGNjdHtjb25zdHJ1Y3RvcihjKXtkWCh0aGlzLCJob3QiLHZvaWQgMCksZFgodGhpcywiX2VsZW1lbnQiLG51bGwpLGRYKHRoaXMsInN0YXRlIiwwKSx0aGlzLmhv''@;'; put 'put ''dD1jfWFwcGVuZFRvKGMpe2MuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5zdGF0ZT0yfWJ1aWxkKCl7MD09PXRoaXMuc3RhdGUmJih0aGlzLl9lbGVtZW50PXRoaXMuaG90LnJvb3REb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnN0YXRlPTEpfWRlc3Ryb3koKXt0''@;'; put 'put ''aGlzLmlzQXBwZW5kZWQoKSYmdGhpcy5fZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLnN0YXRlPTB9aXNBcHBlbmRlZCgpe3JldHVybiAyPT09dGhpcy5zdGF0ZX1pc0J1aWx0KCl7cmV0dXJuIHRoaXMuc3Rh''@;'; put 'put ''dGU+PTF9c2V0UG9zaXRpb24oYyxhKXt2b2lkIDAhPT1jJiYodGhpcy5fZWxlbWVudC5zdHlsZS50b3A9YytveSksdm9pZCAwIT09YSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUubGVmdD1hK295KX1nZXRQb3NpdGlvbigpe3JldHVybnt0b3A6dGhpcy5fZWxlbWVudC5zdHlsZS50b3A/cGFyc2VJ''@;'; put 'put ''bnQodGhpcy5fZWxlbWVudC5zdHlsZS50b3AsMTApOjAsbGVmdDp0aGlzLl9lbGVtZW50LnN0eWxlLmxlZnQ/cGFyc2VJbnQodGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0LDEwKTowfX1zZXRTaXplKGMsYSl7YyYmKHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGg9YytveSksYSYmKHRoaXMuX2Vs''@;'; put 'put ''ZW1lbnQuc3R5bGUuaGVpZ2h0PWErb3kpfWdldFNpemUoKXtyZXR1cm57d2lkdGg6dGhpcy5fZWxlbWVudC5zdHlsZS53aWR0aD9wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLndpZHRoLDEwKTowLGhlaWdodDp0aGlzLl9lbGVtZW50LnN0eWxlLmhlaWdodD9wYXJzZUludCh0aGlzLl9l''@;'; put 'put ''bGVtZW50LnN0eWxlLmhlaWdodCwxMCk6MH19c2V0T2Zmc2V0KGMsYSl7YyYmKHRoaXMuX2VsZW1lbnQuc3R5bGUubWFyZ2luVG9wPWMrb3kpLGEmJih0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQ9YStveSl9Z2V0T2Zmc2V0KCl7cmV0dXJue3RvcDp0aGlzLl9lbGVtZW50LnN0eWxl''@;'; put 'put ''Lm1hcmdpblRvcD9wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpblRvcCwxMCk6MCxsZWZ0OnRoaXMuX2VsZW1lbnQuc3R5bGUubWFyZ2luTGVmdD9wYXJzZUludCh0aGlzLl9lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQsMTApOjB9fX0saGN0PWNsYXNzIGRjdCBleHRlbmRzIG9w''@;'; put 'put ''ZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksbWkodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWJhY2tsaWdodCIpfX0sZ2N0PWNsYXNzIHBjdCBleHRlbmRzIG9wZXtidWlsZCgpe3N1cGVyLmJ1aWxkKCksbWkodGhpcy5fZWxlbWVudCwiaHRfX21hbnVhbFJvd01vdmUtLWd1aWRl''@;'; put 'put ''bGluZSIpfX07ZnVuY3Rpb24gc3kobCxjLGEpe3NwZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gc3BlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1m''@;'; put 'put ''dW5jdGlvbiBENyhsLGMsYSl7cmV0dXJuIGwuc2V0KGc1KGwsYyksYSksYX1mdW5jdGlvbiBmcyhsLGMpe3JldHVybiBsLmdldChnNShsLGMpKX1mdW5jdGlvbiBnNShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8''@;'; put 'put ''Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9YW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImJlZm9yZVJvd01vdmUiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYWZ0ZXJSb3dNb3ZlIik7Y29u''@;'; put 'put ''c3QgZlg9Im1hbnVhbFJvd01vdmUiLGFwZT0iaHRfX21hbnVhbFJvd01vdmUiLElQPSJzaG93LXVpIixwWD0ib24tbW92aW5nLS1yb3dzIixnWD0iYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIjt2YXIgcDE9bmV3IFdlYWtNYXAsbTU9bmV3IFdlYWtNYXAsSzQ9bmV3IFdlYWtNYXAsdjU9bmV3IFdl''@;'; put 'put ''YWtNYXAsSzE9bmV3IFdlYWtNYXAsUlA9bmV3IFdlYWtNYXAsSTc9bmV3IFdlYWtTZXQ7Y2xhc3MgX2N0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIG1jdChsLGMpe3NwZShsLGMpLGMuYWRkKGwpfSh0aGlzLEk3KSxzeSh0aGlzLHAxLG5l''@;'; put 'put ''dyBoY3QodGhpcy5ob3QpKSxzeSh0aGlzLG01LG5ldyBnY3QodGhpcy5ob3QpKSxzeSh0aGlzLEs0LFtdKSxzeSh0aGlzLHY1LHZvaWQgMCksc3kodGhpcyxLMSx7fSksc3kodGhpcyxSUCx2b2lkIDApfXN0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBmWH1zdGF0aWMgZ2V0IFBMVUdJ''@;'; put 'put ''Tl9QUklPUklUWSgpe3JldHVybiAxNDB9aXNFbmFibGVkKCl7cmV0dXJuISF0aGlzLmhvdC5nZXRTZXR0aW5ncygpW2ZYXX1lbmFibGVQbHVnaW4oKXt2YXIgYz10aGlzO3RoaXMuZW5hYmxlZHx8KHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe2Zvcih2''@;'; put 'put ''YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBnNShJNyxjLGJjdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZU92ZXIiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIGc1KEk3LGMsd2N0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2Nyb2xsSG9yaXpvbnRhbGx5IiwoKT0+ZzUoSTcsdGhpcyxTY3QpLmNhbGwodGhpcykpLHRo''@;'; put 'put ''aXMuYWRkSG9vaygiYWZ0ZXJMb2FkRGF0YSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gZzUoSTcsYyxNY3QpLmNhbGwoYywuLi5kKX0pLHRoaXMuYnVpbGRQbHVnaW5VSSgp''@;'; put 'put ''LHRoaXMucmVnaXN0ZXJFdmVudHMoKSxtaSh0aGlzLmhvdC5yb290RWxlbWVudCxhcGUpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKSx0aGlzLmVuYWJsZVBsdWdpbigpLHRoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKSxzdXBlci51''@;'; put 'put ''cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7bHModGhpcy5ob3Qucm9vdEVsZW1lbnQsYXBlKSx0aGlzLnVucmVnaXN0ZXJFdmVudHMoKSxmcyhwMSx0aGlzKS5kZXN0cm95KCksZnMobTUsdGhpcykuZGVzdHJveSgpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX1tb3ZlUm93KGMsYSl7cmV0''@;'; put 'put ''dXJuIHRoaXMubW92ZVJvd3MoW2NdLGEpfW1vdmVSb3dzKGMsYSl7Y29uc3QgZD1mcyhSUCx0aGlzKSxoPXRoaXMuaXNNb3ZlUG9zc2libGUoYyxhKSxmPXRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVSb3dNb3ZlIixjLGEsZCxoKTtpZihENyhSUCx0aGlzLHZvaWQgMCksITE9PT1mKXJldHVy''@;'; put 'put ''bjtoJiZ0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5tb3ZlSW5kZXhlcyhjLGEpO2NvbnN0IHY9aCYmdGhpcy5pc1Jvd09yZGVyQ2hhbmdlZChjLGEpO3JldHVybiB0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIixjLGEsZCxoLHYpLHZ9ZHJhZ1JvdyhjLGEpe3JldHVybiB0aGlzLmRy''@;'; put 'put ''YWdSb3dzKFtjXSxhKX1kcmFnUm93cyhjLGEpe2NvbnN0IGQ9dGhpcy5jb3VudEZpbmFsSW5kZXgoYyxhKTtyZXR1cm4gRDcoUlAsdGhpcyxhKSx0aGlzLm1vdmVSb3dzKGMsZCl9aXNNb3ZlUG9zc2libGUoYyxhKXtjb25zdCBkPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5vdFRyaW1t''@;'; put 'put ''ZWRJbmRleGVzTGVuZ3RoKCksaD1jLmxlbmd0aCthPmQsZj1hPDAsdj1jLnNvbWUoVj0+VjwwKSxTPWMuc29tZShWPT5WPj1kKTtyZXR1cm4hKGh8fGZ8fHZ8fFMpfWlzUm93T3JkZXJDaGFuZ2VkKGMsYSl7cmV0dXJuIGMuc29tZSgoZCxoKT0+ZC1oIT09YSl9Y291bnRGaW5hbEluZGV4KGMs''@;'; put 'put ''YSl7Y29uc3QgZD1NYyhjLChoLGYpPT4oZjxhJiYoaCs9MSksaCksMCk7cmV0dXJuIGEtZH1nZXRSb3dzSGVpZ2h0KGMsYSl7Y29uc3QgZD10aGlzLmhvdC5yb3dJbmRleE1hcHBlcjtsZXQgaD0wO2ZvcihsZXQgZj1jO2Y8PWE7ZisrKXtjb25zdCB2PWQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1''@;'; put 'put ''YWxJbmRleChmKTtudWxsIT09diYmKGgrPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUuZ2V0Um93SGVpZ2h0KHYpfHwyMyl9cmV0dXJuIGh9bW92ZUJ5U2V0dGluZ3NPckxvYWQoKXtjb25zdCBjPXRoaXMuaG90LmdldFNldHRpbmdzKClbZlhdO2lmKEFycmF5LmlzQXJyYXkoYykpdGhpcy5t''@;'; put 'put ''b3ZlUm93cyhjLDApO2Vsc2UgaWYodm9pZCAwIT09Yyl7Y29uc3QgYT10aGlzLnBlcnNpc3RlbnRTdGF0ZUxvYWQoKTthLmxlbmd0aCYmdGhpcy5tb3ZlUm93cyhhLDApfX1pc0ZpeGVkUm93VG9wKGMpe3JldHVybiBjPHRoaXMuaG90LmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wfWlzRml4''@;'; put 'put ''ZWRSb3dCb3R0b20oYyl7cmV0dXJuIGM+dGhpcy5ob3QuY291bnRSb3dzKCktMS10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbX1wZXJzaXN0ZW50U3RhdGVTYXZlKCl7dGhpcy5ob3QucnVuSG9va3MoInBlcnNpc3RlbnRTdGF0ZVNhdmUiLCJtYW51YWxSb3dNb3ZlIix0''@;'; put 'put ''aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKSl9cGVyc2lzdGVudFN0YXRlTG9hZCgpe2NvbnN0IGM9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiwibWFudWFsUm93TW92ZSIsYyksYy52YWx1ZT9jLnZhbHVlOltdfXBy''@;'; put 'put ''ZXBhcmVSb3dzVG9Nb3ZpbmcoKXtjb25zdCBjPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYT1bXTtpZighYylyZXR1cm4gYTtjb25zdHtmcm9tOmQsdG86aH09YztyZXR1cm4gZ28oTWF0aC5taW4oZC5yb3csaC5yb3cpLE1hdGgubWF4KGQucm93LGgucm93KSxTPT57YS5wdXNo''@;'; put 'put ''KFMpfSksYX1yZWZyZXNoUG9zaXRpb25zKCl7Y29uc3QgYz1mcyhLMSx0aGlzKS5jb29yZHMsYT10aGlzLmhvdC52aWV3LmdldEZpcnN0RnVsbHlWaXNpYmxlUm93KCksZD10aGlzLmhvdC52aWV3LmdldExhc3RGdWxseVZpc2libGVSb3coKSxoPXRoaXMuaG90LmNvdW50Um93cygpO3RoaXMu''@;'; put 'put ''aXNGaXhlZFJvd1RvcChjLnJvdykmJmE+MCYmdGhpcy5ob3Quc2Nyb2xsVmlld3BvcnRUbyh0aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYS0xLC0xKSksdGhpcy5pc0ZpeGVkUm93Qm90dG9tKGMucm93KSYmZDxoJiZ0aGlzLmhvdC5zY3JvbGxWaWV3''@;'; put 'put ''cG9ydFRvKHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChkKzEsMSksdm9pZCAwLCEwKTtjb25zdCBmPXRoaXMuaG90LnZpZXcuX3d0Lnd0VGFibGUsdj1mcyhLMSx0aGlzKS5URCxTPXRoaXMuaG90LnJvb3RFbGVtZW50LFY9eHUoUyksUT1ZOChTKSxk''@;'; put 'put ''ZT1mLmhvbGRlci5zY3JvbGxUb3AsQ2U9Vi50b3AtKHRoaXMuaG90LnJvb3RXaW5kb3chPT1RP1Euc2Nyb2xsVG9wOjApLE9lPWZzKEsxLHRoaXMpLmV2ZW50UGFnZVktQ2UrZGUsWWU9Zi5oaWRlci5vZmZzZXRIZWlnaHQsZXQ9Zi5UQk9EWS5vZmZzZXRUb3AsZHQ9ZnMocDEsdGhpcykuZ2V0''@;'; put 'put ''T2Zmc2V0KCkudG9wLGh0PWZzKHAxLHRoaXMpLmdldFNpemUoKS5oZWlnaHQsTXQ9di5vZmZzZXRIZWlnaHQvMixRdD12Lm9mZnNldEhlaWdodDtsZXQgbG49dGhpcy5ob3Qudmlldy5USEVBRC5vZmZzZXRIZWlnaHQrdGhpcy5nZXRSb3dzSGVpZ2h0KDAsYy5yb3ctMSk7Y29uc3Qgdm49T2U+''@;'; put 'put ''PWxuK010O3RoaXMuaXNGaXhlZFJvd1RvcChjLnJvdykmJihsbis9dGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy50b3BPdmVybGF5LmdldE92ZXJsYXlPZmZzZXQoKSksYy5yb3c8MD9mcyhLMSx0aGlzKS5yb3c9YT4wP2EtMTphOnZuPyhmcyhLMSx0aGlzKS5yb3c9Yy5yb3crMSxsbis9''@;'; put 'put ''MD09PWMucm93P1F0LTE6UXQpOmZzKEsxLHRoaXMpLnJvdz1jLnJvdztsZXQgd249T2UsbnI9bG47T2UraHQrZHQ+PVllP3duPVllLWh0LWR0Ok9lK2R0PGV0JiYod249ZXQrTWF0aC5hYnMoZHQpKSxsbj49WWUtMSYmKG5yPVllLTEpLGZzKHAxLHRoaXMpLnNldFBvc2l0aW9uKHduKSxmcyht''@;'; put 'put ''NSx0aGlzKS5zZXRQb3NpdGlvbihucil9cmVnaXN0ZXJFdmVudHMoKXtjb25zdHtkb2N1bWVudEVsZW1lbnQ6Y309dGhpcy5ob3Qucm9vdERvY3VtZW50O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywibW91c2Vtb3ZlIixhPT5nNShJNyx0aGlzLHljdCkuY2FsbCh0aGlz''@;'; put 'put ''LGEpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNldXAiLCgpPT5nNShJNyx0aGlzLENjdCkuY2FsbCh0aGlzKSl9dW5yZWdpc3RlckV2ZW50cygpe3RoaXMuZXZlbnRNYW5hZ2VyLmNsZWFyKCl9YnVpbGRQbHVnaW5VSSgpe2ZzKHAxLHRoaXMpLmJ1aWxkKCks''@;'; put 'put ''ZnMobTUsdGhpcykuYnVpbGQoKX1kZXN0cm95KCl7ZnMocDEsdGhpcykuZGVzdHJveSgpLGZzKG01LHRoaXMpLmRlc3Ryb3koKSxzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9uIGJjdChsLGMsYSxkKXtjb25zdHt3dFRhYmxlOmgsd3RWaWV3cG9ydDpmfT10aGlzLmhvdC52aWV3Ll93dCx2PXRo''@;'; put 'put ''aXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSxTPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIVN8fCF2fHxmcyh2NSx0aGlzKXx8MCE9PWwuYnV0dG9uKXJldHVybiBENyh2NSx0aGlzLCExKSxmcyhLNCx0aGlzKS5sZW5ndGg9MCx2b2lkIGxzKHRo''@;'; put 'put ''aXMuaG90LnJvb3RFbGVtZW50LFtwWCxJUF0pO2NvbnN0IFY9ZnMobTUsdGhpcykuaXNCdWlsdCgpJiYhZnMobTUsdGhpcykuaXNBcHBlbmRlZCgpLFE9ZnMocDEsdGhpcykuaXNCdWlsdCgpJiYhZnMocDEsdGhpcykuaXNBcHBlbmRlZCgpO1YmJlEmJihmcyhtNSx0aGlzKS5hcHBlbmRUbyho''@;'; put 'put ''LmhpZGVyKSxmcyhwMSx0aGlzKS5hcHBlbmRUbyhoLmhpZGVyKSk7Y29uc3R7ZnJvbTpkZSx0bzpwZX09UyxDZT1NYXRoLm1pbihkZS5yb3cscGUucm93KSxPZT1NYXRoLm1heChkZS5yb3cscGUucm93KTtpZihjLmNvbDwwJiZjLnJvdz49Q2UmJmMucm93PD1PZSl7ZC5yb3c9ITAsRDcodjUs''@;'; put 'put ''dGhpcywhMCksZnMoSzEsdGhpcykuZXZlbnRQYWdlWT1sLnBhZ2VZLGZzKEsxLHRoaXMpLmNvb3Jkcz1jLGZzKEsxLHRoaXMpLlREPWEsRDcoSzQsdGhpcyx0aGlzLnByZXBhcmVSb3dzVG9Nb3ZpbmcoKSk7Y29uc3QgWWU9aC5ob2xkZXIuc2Nyb2xsTGVmdCtmLmdldFJvd0hlYWRlcldpZHRo''@;'; put 'put ''KCksZXQ9dGhpcy5nZXRSb3dzSGVpZ2h0KENlLGMucm93LTEpK2wub2Zmc2V0WTtmcyhwMSx0aGlzKS5zZXRQb3NpdGlvbihudWxsLFllKSxmcyhwMSx0aGlzKS5zZXRTaXplKGguaGlkZXIub2Zmc2V0V2lkdGgtWWUsdGhpcy5nZXRSb3dzSGVpZ2h0KENlLE9lKSksZnMocDEsdGhpcykuc2V0''@;'; put 'put ''T2Zmc2V0KC1ldCxudWxsKSxtaSh0aGlzLmhvdC5yb290RWxlbWVudCxwWCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9ZWxzZSBscyh0aGlzLmhvdC5yb290RWxlbWVudCxnWCksRDcodjUsdGhpcywhMSksZnMoSzQsdGhpcykubGVuZ3RoPTB9ZnVuY3Rpb24geWN0KGwpe2ZzKHY1LHRoaXMp''@;'; put 'put ''JiYoZnMoSzEsdGhpcykuZXZlbnRQYWdlWT1sLnBhZ2VZLHRoaXMucmVmcmVzaFBvc2l0aW9ucygpKX1mdW5jdGlvbiB3Y3QobCxjLGEsZCl7IXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCl8fCFmcyh2NSx0aGlzKXx8KGZzKEs0LHRoaXMpLmluZGV4T2YoYy5yb3cpPi0xP2xzKHRo''@;'; put 'put ''aXMuaG90LnJvb3RFbGVtZW50LElQKTptaSh0aGlzLmhvdC5yb290RWxlbWVudCxJUCksZC5yb3c9ITAsZC5jb2x1bW49ITAsZC5jZWxsPSEwLGZzKEsxLHRoaXMpLmNvb3Jkcz1jLGZzKEsxLHRoaXMpLlREPWEpfWZ1bmN0aW9uIENjdCgpe2NvbnN0IGw9ZnMoSzEsdGhpcykucm93LGM9ZnMo''@;'; put 'put ''SzQsdGhpcykubGVuZ3RoO2lmKEQ3KHY1LHRoaXMsITEpLGxzKHRoaXMuaG90LnJvb3RFbGVtZW50LFtwWCxJUCxnWF0pLHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSYmbWkodGhpcy5ob3Qucm9vdEVsZW1lbnQsZ1gpLGM8MXx8dm9pZCAwPT09bClyZXR1cm47''@;'; put 'put ''Y29uc3QgYT1mcyhLNCx0aGlzKVswXSxkPXRoaXMuaG90LnRvUGh5c2ljYWxSb3coYSksaD10aGlzLmRyYWdSb3dzKGZzKEs0LHRoaXMpLGwpO2lmKGZzKEs0LHRoaXMpLmxlbmd0aD0wLCEwPT09aCl7dGhpcy5wZXJzaXN0ZW50U3RhdGVTYXZlKCksdGhpcy5ob3QucmVuZGVyKCksdGhpcy5o''@;'; put 'put ''b3Qudmlldy5hZGp1c3RFbGVtZW50c1NpemUoKTtjb25zdCBmPXRoaXMuaG90LnRvVmlzdWFsUm93KGQpO3RoaXMuaG90LnNlbGVjdFJvd3MoZixmK2MtMSl9fWZ1bmN0aW9uIFNjdCgpe2NvbnN0IGw9dGhpcy5ob3Qudmlldy5fd3Qud3RUYWJsZSxkPXRoaXMuaG90LnZpZXcuX3d0Lnd0Vmll''@;'; put 'put ''d3BvcnQuZ2V0Um93SGVhZGVyV2lkdGgoKStsLmhvbGRlci5zY3JvbGxMZWZ0O2ZzKHAxLHRoaXMpLnNldFBvc2l0aW9uKG51bGwsZCksZnMocDEsdGhpcykuc2V0U2l6ZShsLmhpZGVyLm9mZnNldFdpZHRoLWQpfWZ1bmN0aW9uIE1jdCgpe3RoaXMubW92ZUJ5U2V0dGluZ3NPckxvYWQoKX1m''@;'; put 'put ''dW5jdGlvbiBWMChsLGMsYSl7bHBlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBscGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGRj''@;'; put 'put ''KGwsYyxhKXtyZXR1cm4gbC5zZXQoWDQobCxjKSxhKSxhfWZ1bmN0aW9uIHFpKGwsYyl7cmV0dXJuIGwuZ2V0KFg0KGwsYykpfWZ1bmN0aW9uIFg0KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBMUD0ibWFudWFsUm93UmVzaXplIixjcGU9Im1hbnVhbFJvd0hlaWdodHMiO3ZhciBLMz1uZXcgV2Vha01hcCxPUD1uZXcgV2Vha01hcCx6ZD1uZXcgV2Vha01hcCxO''@;'; put 'put ''RT1uZXcgV2Vha01hcCxfNT1uZXcgV2Vha01hcCxtWD1uZXcgV2Vha01hcCxheT1uZXcgV2Vha01hcCxQUD1uZXcgV2Vha01hcCxnMT1uZXcgV2Vha01hcCxYMz1uZXcgV2Vha01hcCxSNz1uZXcgV2Vha01hcCxGUD1uZXcgV2Vha01hcCxIRT1uZXcgV2Vha01hcCxWRT1uZXcgV2Vha01hcCxD''@;'; put 'put ''Zj1uZXcgV2Vha01hcCxCRT1uZXcgV2Vha01hcCxiNT1uZXcgV2Vha1NldDtjbGFzcyBUY3QgZXh0ZW5kcyBkYXtzdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gTFB9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMzB9Y29uc3RydWN0b3IoYyl7c3VwZXIoYyksZnVu''@;'; put 'put ''Y3Rpb24geGN0KGwsYyl7bHBlKGwsYyksYy5hZGQobCl9KHRoaXMsYjUpLFYwKHRoaXMsSzMsbnVsbCksVjAodGhpcyxPUCxudWxsKSxWMCh0aGlzLHpkLFtdKSxWMCh0aGlzLE5FLG51bGwpLFYwKHRoaXMsXzUsbnVsbCksVjAodGhpcyxtWCxudWxsKSxWMCh0aGlzLGF5LG51bGwpLFYwKHRo''@;'; put 'put ''aXMsUFAsbnVsbCksVjAodGhpcyxnMSx0aGlzLmhvdC5yb290RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikpLFYwKHRoaXMsWDMsdGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpKSxWMCh0aGlzLFI3LCExKSxWMCh0aGlzLEZQLCExKSxWMCh0aGlzLEhFLDAp''@;'; put 'put ''LFYwKHRoaXMsVkUsbnVsbCksVjAodGhpcyxDZix2b2lkIDApLFYwKHRoaXMsQkUsdm9pZCAwKSxtaShxaShnMSx0aGlzKSwibWFudWFsUm93UmVzaXplciIpLG1pKHFpKFgzLHRoaXMpLCJtYW51YWxSb3dSZXNpemVyR3VpZGUiKX1nZXQgaW5saW5lRGlyKCl7cmV0dXJuIHRoaXMuaG90Lmlz''@;'; put 'put ''UnRsKCk/InJpZ2h0IjoibGVmdCJ9aXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKClbTFBdfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KGRjKENmLHRoaXMsbmV3IFptKSxxaShDZix0aGlzKS5hZGRMb2NhbEhvb2soImluaXQiLCgpPT5YNChiNSx0aGlzLE9j''@;'; put 'put ''dCkuY2FsbCh0aGlzKSksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lLHFpKENmLHRoaXMpKSx0aGlzLmFkZEhvb2soIm1vZGlmeVJvd0hlaWdodCIsKGMsYSk9Plg0KGI1LHRoaXMsTGN0KS5jYWxsKHRoaXMsYyxhKSksdGhpcy5iaW5kRXZlbnRz''@;'; put 'put ''KCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe2RjKEJFLHRoaXMscWkoQ2YsdGhpcykuZ2V0VmFsdWVzKCkpLHRoaXMuaG90LnJv''@;'; put 'put ''d0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAodGhpcy5wbHVnaW5OYW1lKSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9c2F2ZU1hbnVhbFJvd0hlaWdodHMoKXt0aGlzLmhvdC5ydW5Ib29rcygicGVyc2lzdGVudFN0YXRlU2F2ZSIsY3BlLHFpKENmLHRoaXMpLmdldFZhbHVlcygpKX1sb2FkTWFu''@;'; put 'put ''dWFsUm93SGVpZ2h0cygpe2NvbnN0IGM9e307cmV0dXJuIHRoaXMuaG90LnJ1bkhvb2tzKCJwZXJzaXN0ZW50U3RhdGVMb2FkIixjcGUsYyksYy52YWx1ZX1zZXRNYW51YWxTaXplKGMsYSl7Y29uc3QgZD10aGlzLmhvdC50b1BoeXNpY2FsUm93KGMpLGg9TWF0aC5tYXgoYSxQTC5ERUZBVUxU''@;'; put 'put ''X0hFSUdIVCk7cmV0dXJuIHFpKENmLHRoaXMpLnNldFZhbHVlQXRJbmRleChkLGgpLGh9Z2V0TGFzdERlc2lyZWRSb3dIZWlnaHQoKXtyZXR1cm4gcWkoTkUsdGhpcyl9c2V0dXBIYW5kbGVQb3NpdGlvbihjKXtkYyhLMyx0aGlzLGMpO2NvbnN0e3ZpZXc6YX09dGhpcy5ob3Qse193dDpkfT1h''@;'; put 'put ''LGg9ZC53dFRhYmxlLmdldENvb3JkcyhxaShLMyx0aGlzKSksZj1oLnJvdztpZihmPDApcmV0dXJuO2NvbnN0IHY9V2EocWkoSzMsdGhpcykpLFM9cWkoSzMsdGhpcykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksVj1mPGQuZ2V0U2V0dGluZygiZml4ZWRSb3dzVG9wIiksUT1mPj1hLmNvdW50''@;'; put 'put ''Tm90SGlkZGVuUm93SW5kZXhlcygwLDEpLWQuZ2V0U2V0dGluZygiZml4ZWRSb3dzQm90dG9tIik7bGV0IGRlO1Y/ZGU9ZC53dE92ZXJsYXlzLnRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheS5nZXRSZWxhdGl2ZUNlbGxQb3NpdGlvbihxaShLMyx0aGlzKSxoLnJvdyxoLmNvbCk6USYmKGRl''@;'; put 'put ''PWQud3RPdmVybGF5cy5ib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24ocWkoSzMsdGhpcyksaC5yb3csaC5jb2wpKSxkZXx8KGRlPWQud3RPdmVybGF5cy5pbmxpbmVTdGFydE92ZXJsYXkuZ2V0UmVsYXRpdmVDZWxsUG9zaXRpb24ocWkoSzMs''@;'; put 'put ''dGhpcyksaC5yb3csaC5jb2wpKSxkYyhPUCx0aGlzLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZikpLGRjKHpkLHRoaXMsW10pO2NvbnN0IHBlPXRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb3JuZXIoKXx8dGhpcy5ob3Quc2Vs''@;'; put 'put ''ZWN0aW9uLmlzU2VsZWN0ZWRCeVJvd0hlYWRlcigpO3RoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkKCkmJnBlJiZUbih0aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlKCksT2U9PntnbyhPZS5nZXRUb3BTdGFydENvcm5lcigpLnJvdyxPZS5nZXRCb3R0b21TdGFydENvcm5lcigpLnJvdyxk''@;'; put 'put ''dD0+e3FpKHpkLHRoaXMpLmluY2x1ZGVzKGR0KXx8cWkoemQsdGhpcykucHVzaChkdCl9KX0pLHFpKHpkLHRoaXMpLmluY2x1ZGVzKHFpKE9QLHRoaXMpKXx8ZGMoemQsdGhpcyxbcWkoT1AsdGhpcyldKSxkYyhQUCx0aGlzLGRlLnRvcC02KSxkYyhheSx0aGlzLHBhcnNlSW50KFMuaGVpZ2h0''@;'; put 'put ''LDEwKSkscWkoZzEsdGhpcykuc3R5bGUudG9wPWAke3FpKFBQLHRoaXMpK3FpKGF5LHRoaXMpfXB4YCxxaShnMSx0aGlzKS5zdHlsZVt0aGlzLmlubGluZURpcl09YCR7ZGUuc3RhcnR9cHhgLHFpKGcxLHRoaXMpLnN0eWxlLndpZHRoPWAke3Z9cHhgLHRoaXMuaG90LnJvb3RFbGVtZW50LmFw''@;'; put 'put ''cGVuZENoaWxkKHFpKGcxLHRoaXMpKX1yZWZyZXNoSGFuZGxlUG9zaXRpb24oKXtxaShnMSx0aGlzKS5zdHlsZS50b3A9YCR7cWkoUFAsdGhpcykrcWkoTkUsdGhpcyl9cHhgfXNldHVwR3VpZGVQb3NpdGlvbigpe2NvbnN0IGM9cGFyc2VJbnQoV2EocWkoZzEsdGhpcykpLDEwKSxhPXBhcnNl''@;'; put 'put ''SW50KHFpKGcxLHRoaXMpLnN0eWxlW3RoaXMuaW5saW5lRGlyXSwxMCkrYyxkPXBhcnNlSW50KHRoaXMuaG90LnZpZXcubWF4aW11bVZpc2libGVFbGVtZW50V2lkdGgoMCksMTApO21pKHFpKGcxLHRoaXMpLCJhY3RpdmUiKSxtaShxaShYMyx0aGlzKSwiYWN0aXZlIikscWkoWDMsdGhpcyku''@;'; put 'put ''c3R5bGUudG9wPXFpKGcxLHRoaXMpLnN0eWxlLnRvcCxxaShYMyx0aGlzKS5zdHlsZVt0aGlzLmlubGluZURpcl09YCR7YX1weGAscWkoWDMsdGhpcykuc3R5bGUud2lkdGg9ZC1jKyJweCIsdGhpcy5ob3Qucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQocWkoWDMsdGhpcykpfXJlZnJlc2hHdWlk''@;'; put 'put ''ZVBvc2l0aW9uKCl7cWkoWDMsdGhpcykuc3R5bGUudG9wPXFpKGcxLHRoaXMpLnN0eWxlLnRvcH1oaWRlSGFuZGxlQW5kR3VpZGUoKXtscyhxaShnMSx0aGlzKSwiYWN0aXZlIiksbHMocWkoWDMsdGhpcyksImFjdGl2ZSIpfWNoZWNrSWZSb3dIZWFkZXIoYyl7Y29uc3QgYT1JbShjLFsiVEJP''@;'; put 'put ''RFkiXSx0aGlzLmhvdC5yb290RWxlbWVudCkse2lubGluZVN0YXJ0T3ZlcmxheTpkLHRvcElubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTpoLGJvdHRvbUlubGluZVN0YXJ0Q29ybmVyT3ZlcmxheTpmfT10aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzO3JldHVybltkLmNsb25lLnd0VGFibGUu''@;'; put 'put ''VEJPRFksaC5jbG9uZS53dFRhYmxlLlRCT0RZLGYuY2xvbmUud3RUYWJsZS5UQk9EWV0uaW5jbHVkZXMoYSl9Z2V0Q2xvc2VzdFRIUGFyZW50KGMpe3JldHVybiJUQUJMRSIhPT1jLnRhZ05hbWU/IlRIIj09PWMudGFnTmFtZT9jOnRoaXMuZ2V0Q2xvc2VzdFRIUGFyZW50KGMucGFyZW50Tm9k''@;'; put 'put ''ZSk6bnVsbH1nZXRBY3R1YWxSb3dIZWlnaHQoYyl7Y29uc3QgYT10aGlzLmhvdC52aWV3Ll93dC53dFRhYmxlLmdldFJvd0hlaWdodChjKTtyZXR1cm4gdm9pZCAwIT09YSYmcWkoXzUsdGhpcyk8YT9hOnFpKF81LHRoaXMpfWFmdGVyTW91c2VEb3duVGltZW91dCgpe2NvbnN0IGM9KCk9Pnt0''@;'; put 'put ''aGlzLmhvdC5mb3JjZUZ1bGxSZW5kZXI9ITAsdGhpcy5ob3Qudmlldy5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfSxhPShkLGgpPT57Y29uc3QgZj10aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUm93UmVzaXplIix0aGlzLmdldEFjdHVhbFJvd0hlaWdodChk''@;'; put 'put ''KSxkLCEwKTt2b2lkIDAhPT1mJiZkYyhfNSx0aGlzLGYpLHRoaXMuc2V0TWFudWFsU2l6ZShkLHFpKF81LHRoaXMpKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dSZXNpemUiLHRoaXMuZ2V0QWN0dWFsUm93SGVpZ2h0KGQpLGQsITApLGgmJmMoKX07cWkoSEUsdGhpcyk+PTImJihxaSh6''@;'; put 'put ''ZCx0aGlzKS5sZW5ndGg+MT8oVG4ocWkoemQsdGhpcyksaD0+e2EoaCl9KSxjKCkpOlRuKHFpKHpkLHRoaXMpLGg9PnthKGgsITApfSkpLGRjKEhFLHRoaXMsMCksZGMoVkUsdGhpcyxudWxsKX1iaW5kRXZlbnRzKCl7Y29uc3R7cm9vdEVsZW1lbnQ6Yyxyb290V2luZG93OmF9PXRoaXMuaG90''@;'; put 'put ''O3RoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYywibW91c2VvdmVyIixkPT5YNChiNSx0aGlzLGtjdCkuY2FsbCh0aGlzLGQpKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGMsIm1vdXNlZG93biIsZD0+WDQoYjUsdGhpcyxBY3QpLmNhbGwodGhpcyxkKSks''@;'; put 'put ''dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJtb3VzZW1vdmUiLGQ9Plg0KGI1LHRoaXMsRGN0KS5jYWxsKHRoaXMsZCkpLHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoYSwibW91c2V1cCIsKCk9Plg0KGI1LHRoaXMsSWN0KS5jYWxsKHRoaXMpKSx0aGlz''@;'; put 'put ''LmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHFpKGcxLHRoaXMpLCJjb250ZXh0bWVudSIsKCk9Plg0KGI1LHRoaXMsUmN0KS5jYWxsKHRoaXMpKX1kZXN0cm95KCl7c3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBrY3QobCl7aWYoIV9XKGwudGFyZ2V0KSYmITAhPT1xaShGUCx0aGlz''@;'; put 'put ''KSYmdGhpcy5jaGVja0lmUm93SGVhZGVyKGwudGFyZ2V0KSl7Y29uc3QgYz10aGlzLmdldENsb3Nlc3RUSFBhcmVudChsLnRhcmdldCk7YyYmKHFpKFI3LHRoaXMpfHx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24oYykpfX1mdW5jdGlvbiBBY3QobCl7WW8obC50YXJnZXQsIm1hbnVhbFJvd1Jl''@;'; put 'put ''c2l6ZXIiKSYmKHRoaXMuc2V0dXBIYW5kbGVQb3NpdGlvbihxaShLMyx0aGlzKSksdGhpcy5zZXR1cEd1aWRlUG9zaXRpb24oKSxkYyhSNyx0aGlzLCEwKSxudWxsPT09cWkoVkUsdGhpcykmJihkYyhWRSx0aGlzLHNldFRpbWVvdXQoKCk9PnRoaXMuYWZ0ZXJNb3VzZURvd25UaW1lb3V0KCks''@;'; put 'put ''NTAwKSksdGhpcy5ob3QuX3JlZ2lzdGVyVGltZW91dChxaShWRSx0aGlzKSkpLGRjKEhFLHRoaXMscWkoSEUsdGhpcykrMSksZGMobVgsdGhpcyxsLnBhZ2VZKSxkYyhfNSx0aGlzLHFpKGF5LHRoaXMpKSl9ZnVuY3Rpb24gRGN0KGwpe3FpKFI3LHRoaXMpJiYoZGMoTkUsdGhpcyxxaShheSx0''@;'; put 'put ''aGlzKSsobC5wYWdlWS1xaShtWCx0aGlzKSkpLFRuKHFpKHpkLHRoaXMpLGM9PntkYyhfNSx0aGlzLHRoaXMuc2V0TWFudWFsU2l6ZShjLHFpKE5FLHRoaXMpKSl9KSx0aGlzLnJlZnJlc2hIYW5kbGVQb3NpdGlvbigpLHRoaXMucmVmcmVzaEd1aWRlUG9zaXRpb24oKSl9ZnVuY3Rpb24gSWN0''@;'; put 'put ''KCl7Y29uc3QgbD0oKT0+e3RoaXMuaG90LmZvcmNlRnVsbFJlbmRlcj0hMCx0aGlzLmhvdC52aWV3LnJlbmRlcigpLHRoaXMuaG90LnZpZXcuYWRqdXN0RWxlbWVudHNTaXplKCl9LGM9KGEsZCk9Pnt0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlUm93UmVzaXplIix0aGlzLmdldEFjdHVhbFJv''@;'; put 'put ''d0hlaWdodChhKSxhLCExKSxkJiZsKCksdGhpcy5zYXZlTWFudWFsUm93SGVpZ2h0cygpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJvd1Jlc2l6ZSIsdGhpcy5nZXRBY3R1YWxSb3dIZWlnaHQoYSksYSwhMSl9O3FpKFI3LHRoaXMpJiYodGhpcy5oaWRlSGFuZGxlQW5kR3VpZGUoKSxkYyhS''@;'; put 'put ''Nyx0aGlzLCExKSxxaShfNSx0aGlzKSE9PXFpKGF5LHRoaXMpJiYocWkoemQsdGhpcykubGVuZ3RoPjE/KFRuKHFpKHpkLHRoaXMpLGQ9PntjKGQpfSksbCgpKTpUbihxaSh6ZCx0aGlzKSxkPT57YyhkLCEwKX0pKSx0aGlzLnNldHVwSGFuZGxlUG9zaXRpb24ocWkoSzMsdGhpcykpKX1mdW5j''@;'; put 'put ''dGlvbiBSY3QoKXt0aGlzLmhpZGVIYW5kbGVBbmRHdWlkZSgpLHRoaXMuaG90LnJvb3RFbGVtZW50LnJlbW92ZUNoaWxkKHFpKGcxLHRoaXMpKSx0aGlzLmhvdC5yb290RWxlbWVudC5yZW1vdmVDaGlsZChxaShYMyx0aGlzKSksZGMoUjcsdGhpcywhMSksZGMoRlAsdGhpcywhMCksdGhpcy5o''@;'; put 'put ''b3QuX3JlZ2lzdGVySW1tZWRpYXRlKCgpPT57ZGMoRlAsdGhpcywhMSl9KX1mdW5jdGlvbiBMY3QobCxjKXtsZXQgYT1sO2lmKHRoaXMuZW5hYmxlZCl7Y29uc3QgZD10aGlzLmhvdC50b1BoeXNpY2FsUm93KGMpLGg9cWkoQ2YsdGhpcykuZ2V0VmFsdWVBdEluZGV4KGQpO3RoaXMuaG90Lmdl''@;'; put 'put ''dFNldHRpbmdzKClbTFBdJiZoJiYoYT1oKX1yZXR1cm4gYX1mdW5jdGlvbiBPY3QoKXtjb25zdCBsPXRoaXMuaG90LmdldFNldHRpbmdzKClbTFBdLGM9dGhpcy5sb2FkTWFudWFsUm93SGVpZ2h0cygpO3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57dHlwZW9mIGM8InUiP2MuZm9yRWFj''@;'; put 'put ''aCgoYSxkKT0+e3FpKENmLHRoaXMpLnNldFZhbHVlQXRJbmRleChkLGEpfSk6QXJyYXkuaXNBcnJheShsKT8obC5mb3JFYWNoKChhLGQpPT57cWkoQ2YsdGhpcykuc2V0VmFsdWVBdEluZGV4KGQsYSl9KSxkYyhCRSx0aGlzLGwpKTohMD09PWwmJkFycmF5LmlzQXJyYXkocWkoQkUsdGhpcykp''@;'; put 'put ''JiZxaShCRSx0aGlzKS5mb3JFYWNoKChhLGQpPT57cWkoQ2YsdGhpcykuc2V0VmFsdWVBdEluZGV4KGQsYSl9KX0sITApfWZ1bmN0aW9uIEw3KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBQY3QobCl7dmFyIGM9ZnVuY3Rpb24gRmN0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbCly''@;'; put 'put ''ZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1p''@;'; put 'put ''dGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3Vy''@;'; put 'put ''YWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IEozPWNsYXNzIE5jdHtjb25zdHJ1Y3RvcihjLGEsZCxoLGYsdil7TDcodGhpcywicm93Iix2b2lkIDApLEw3KHRoaXMsImNvbCIsdm9pZCAwKSxMNyh0aGlzLCJyb3dzcGFuIix2b2lkIDApLEw3KHRoaXMsImNvbHNwYW4iLHZv''@;'; put 'put ''aWQgMCksTDcodGhpcywicmVtb3ZlZCIsITEpLEw3KHRoaXMsImNlbGxDb29yZHNGYWN0b3J5Iix2b2lkIDApLEw3KHRoaXMsImNlbGxSYW5nZUZhY3RvcnkiLHZvaWQgMCksdGhpcy5yb3c9Yyx0aGlzLmNvbD1hLHRoaXMucm93c3Bhbj1kLHRoaXMuY29sc3Bhbj1oLHRoaXMuY2VsbENvb3Jk''@;'; put 'put ''c0ZhY3Rvcnk9Zix0aGlzLmNlbGxSYW5nZUZhY3Rvcnk9dn1zdGF0aWMgTkVHQVRJVkVfVkFMVUVTX1dBUk5JTkcoYyl7cmV0dXJuIE5hYFRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCB3aXRoIHtyb3c6ICR7Yy5yb3d9LCBjb2w6ICR7Yy5jb2x9LFx4MjAKICAgICAgcm93c3BhbjogJHtjLnJv''@;'; put 'put ''d3NwYW59LCBjb2xzcGFuOiAke2MuY29sc3Bhbn19IGNvbnRhaW5zIG5lZ2F0aXZlIHZhbHVlcywgd2hpY2ggaXNceDIwCiAgICAgIG5vdCBzdXBwb3J0ZWQuIEl0IHdpbGwgbm90IGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLmB9c3RhdGljIElTX09VVF9PRl9CT1VORFNfV0FSTklORyhj''@;'; put 'put ''KXtyZXR1cm4gTmFgVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFske2Mucm93fSwgJHtjLmNvbH1dIGlzIHBvc2l0aW9uZWRceDIwCiAgICAgIChvciBwb3NpdGlvbmVkIHBhcnRpYWxseSkgb3V0c2lkZSBvZiB0aGUgdGFibGUgcmFuZ2UuIEl0IHdhcyBub3QgYWRkZWQgdG8gdGhlIHRh''@;'; put 'put ''YmxlLCBwbGVhc2UgZml4IHlvdXIgc2V0dXAuYH1zdGF0aWMgSVNfU0lOR0xFX0NFTEwoYyl7cmV0dXJuIE5hYFRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbJHtjLnJvd30sICR7Yy5jb2x9XSBoYXMgYm90aCAicm93c3BhbiJceDIwCiAgICAgIGFuZCAiY29sc3BhbiIgZGVjbGFyZWQg''@;'; put 'put ''YXMgIjEiLCB3aGljaCBtYWtlcyBpdCBhIHNpbmdsZSBjZWxsLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uYH1zdGF0aWMgWkVST19TUEFOX1dBUk5JTkcoYyl7cmV0dXJuIE5hYFRoZSBtZXJnZWQgY2VsbCBkZWNsYXJlZCBhdCBbJHtjLnJvd30sICR7Yy5jb2x9XSBo''@;'; put 'put ''YXMgInJvd3NwYW4iXHgyMAogICAgICBvciAiY29sc3BhbiIgZGVjbGFyZWQgYXMgIjAiLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBJdCBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNvbGxlY3Rpb24uYH1zdGF0aWMgY29udGFpbnNOZWdhdGl2ZVZhbHVlcyhjKXtyZXR1cm4gYy5yb3c8MHx8''@;'; put 'put ''Yy5jb2w8MHx8Yy5yb3dzcGFuPDB8fGMuY29sc3BhbjwwfXN0YXRpYyBpc1NpbmdsZUNlbGwoYyl7cmV0dXJuIDE9PT1jLmNvbHNwYW4mJjE9PT1jLnJvd3NwYW59c3RhdGljIGNvbnRhaW5zWmVyb1NwYW4oYyl7cmV0dXJuIDA9PT1jLmNvbHNwYW58fDA9PT1jLnJvd3NwYW59c3RhdGljIGlz''@;'; put 'put ''T3V0T2ZCb3VuZHMoYyxhLGQpe3JldHVybiBjLnJvdzwwfHxjLmNvbDwwfHxjLnJvdz49YXx8Yy5yb3crYy5yb3dzcGFuLTE+PWF8fGMuY29sPj1kfHxjLmNvbCtjLmNvbHNwYW4tMT49ZH1ub3JtYWxpemUoYyl7Y29uc3QgYT1jLmNvdW50Um93cygpLGQ9Yy5jb3VudENvbHMoKTt0aGlzLnJv''@;'; put 'put ''dzwwP3RoaXMucm93PTA6dGhpcy5yb3c+YS0xJiYodGhpcy5yb3c9YS0xKSx0aGlzLmNvbDwwP3RoaXMuY29sPTA6dGhpcy5jb2w+ZC0xJiYodGhpcy5jb2w9ZC0xKSx0aGlzLnJvdyt0aGlzLnJvd3NwYW4+YS0xJiYodGhpcy5yb3dzcGFuPWEtdGhpcy5yb3cpLHRoaXMuY29sK3RoaXMuY29s''@;'; put 'put ''c3Bhbj5kLTEmJih0aGlzLmNvbHNwYW49ZC10aGlzLmNvbCl9aW5jbHVkZXMoYyxhKXtyZXR1cm4gdGhpcy5yb3c8PWMmJnRoaXMuY29sPD1hJiZ0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMT49YyYmdGhpcy5jb2wrdGhpcy5jb2xzcGFuLTE+PWF9aW5jbHVkZXNIb3Jpem9udGFsbHkoYyl7cmV0''@;'; put 'put ''dXJuIHRoaXMuY29sPD1jJiZ0aGlzLmNvbCt0aGlzLmNvbHNwYW4tMT49Y31pbmNsdWRlc1ZlcnRpY2FsbHkoYyl7cmV0dXJuIHRoaXMucm93PD1jJiZ0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMT49Y31zaGlmdChjLGEpe2NvbnN0IGQ9Y1swXXx8Y1sxXSxoPWErTWF0aC5hYnMoY1swXXx8Y1sx''@;'; put 'put ''XSktMSxmPWNbMF0/ImNvbHNwYW4iOiJyb3dzcGFuIix2PWNbMF0/ImNvbCI6InJvdyIsUz1NYXRoLm1pbihhLGgpLFY9TWF0aC5tYXgoYSxoKSxRPXRoaXNbdl0sZGU9dGhpc1t2XSt0aGlzW2ZdLTE7aWYoUT49YSYmKHRoaXNbdl0rPWQpLGQ+MClhPD1kZSYmYT5RJiYodGhpc1tmXSs9ZCk7''@;'; put 'put ''ZWxzZSBpZihkPDApe2lmKFM8PVEmJlY+PWRlKXJldHVybiB0aGlzLnJlbW92ZWQ9ITAsITE7aWYoUT49UyYmUTw9Vil7Y29uc3QgcGU9Vi1RKzEsQ2U9TWF0aC5hYnMoZCktcGU7dGhpc1t2XS09Q2UrZCx0aGlzW2ZdLT1wZX1lbHNlIFE8PVMmJmRlPj1WP3RoaXNbZl0rPWQ6UTw9UyYmZGU+''@;'; put 'put ''PVMmJmRlPFYmJih0aGlzW2ZdLT1kZS1TKzEpfXJldHVybiEwfWlzRmFydGhlcihjLGEpe3JldHVybiFjfHwoImRvd24iPT09YT9jLnJvdytjLnJvd3NwYW4tMTx0aGlzLnJvdyt0aGlzLnJvd3NwYW4tMToidXAiPT09YT9jLnJvdz50aGlzLnJvdzoicmlnaHQiPT09YT9jLmNvbCtjLmNvbHNw''@;'; put 'put ''YW4tMTx0aGlzLmNvbCt0aGlzLmNvbHNwYW4tMToibGVmdCI9PT1hP2MuY29sPnRoaXMuY29sOm51bGwpfWdldExhc3RSb3coKXtyZXR1cm4gdGhpcy5yb3crdGhpcy5yb3dzcGFuLTF9Z2V0TGFzdENvbHVtbigpe3JldHVybiB0aGlzLmNvbCt0aGlzLmNvbHNwYW4tMX1nZXRSYW5nZSgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmNlbGxSYW5nZUZhY3RvcnkodGhpcy5jZWxsQ29vcmRzRmFjdG9yeSh0aGlzLnJvdyx0aGlzLmNvbCksdGhpcy5jZWxsQ29vcmRzRmFjdG9yeSh0aGlzLnJvdyx0aGlzLmNvbCksdGhpcy5jZWxsQ29vcmRzRmFjdG9yeSh0aGlzLmdldExhc3RSb3coKSx0aGlzLmdldExhc3RD''@;'; put 'put ''b2x1bW4oKSkpfX07ZnVuY3Rpb24gdlgobCxjLGEsZCl7Yz9jLnJvdz09PWEmJmMuY29sPT09ZD8obC5zZXRBdHRyaWJ1dGUoInJvd3NwYW4iLGMucm93c3Bhbi50b1N0cmluZygpKSxsLnNldEF0dHJpYnV0ZSgiY29sc3BhbiIsYy5jb2xzcGFuLnRvU3RyaW5nKCkpKToobC5yZW1vdmVBdHRy''@;'; put 'put ''aWJ1dGUoInJvd3NwYW4iKSxsLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGwuc3R5bGUuZGlzcGxheT0ibm9uZSIpOihsLnJlbW92ZUF0dHJpYnV0ZSgicm93c3BhbiIpLGwucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksbC5zdHlsZS5kaXNwbGF5PSIiKX1mdW5jdGlvbiBfWChsLGMs''@;'; put 'put ''YSl7cmV0dXJuIGM9ZnVuY3Rpb24gQmN0KGwpe3ZhciBjPWZ1bmN0aW9uIGpjdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9i''@;'; put 'put ''amVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1mdW5jdGlvbiBOUChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMo''@;'; put 'put ''YykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIGpFPW5ldyBXZWFrU2V0O2NsYXNzIGJYe2NvbnN0cnVjdG9yKGMpeyhmdW5jdGlvbiBIY3QobCxjKXso''@;'; put 'put ''ZnVuY3Rpb24gVmN0KGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX0pKGwsYyksYy5hZGQobCl9KSh0aGlzLGpFKSxfWCh0aGlzLCJwbHVnaW4iLHZvaWQg''@;'; put 'put ''MCksX1godGhpcywibWVyZ2VkQ2VsbHMiLFtdKSxfWCh0aGlzLCJob3QiLHZvaWQgMCksdGhpcy5wbHVnaW49Yyx0aGlzLmhvdD1jLmhvdH1zdGF0aWMgSVNfT1ZFUkxBUFBJTkdfV0FSTklORyhjKXtyZXR1cm4gTmFgVGhlIG1lcmdlZCBjZWxsIGRlY2xhcmVkIGF0IFske2Mucm93fSwgJHtj''@;'; put 'put ''LmNvbH1dLCBvdmVybGFwc1x4MjAKICAgICAgd2l0aCB0aGUgb3RoZXIgZGVjbGFyZWQgbWVyZ2VkIGNlbGwuIFRoZSBvdmVybGFwcGluZyBtZXJnZWQgY2VsbCB3YXMgbm90IGFkZGVkIHRvIHRoZSB0YWJsZSwgcGxlYXNlXHgyMAogICAgICBmaXggeW91ciBzZXR1cC5gfWdldChjLGEpe2xl''@;'; put 'put ''dCBoPSExO3JldHVybiBUbih0aGlzLm1lcmdlZENlbGxzLGY9PiEoZi5yb3c8PWMmJmYucm93K2Yucm93c3Bhbi0xPj1jJiZmLmNvbDw9YSYmZi5jb2wrZi5jb2xzcGFuLTE+PWEmJihoPWYsMSkpKSxofWdldEJ5UmFuZ2UoYyl7bGV0IGQ9ITE7cmV0dXJuIFRuKHRoaXMubWVyZ2VkQ2VsbHMs''@;'; put 'put ''aD0+IShoLnJvdzw9Yy5mcm9tLnJvdyYmaC5yb3craC5yb3dzcGFuLTE+PWMudG8ucm93JiZoLmNvbDw9Yy5mcm9tLmNvbCYmaC5jb2wraC5jb2xzcGFuLTE+PWMudG8uY29sKXx8KGQ9aCxkKSksZH1nZXRXaXRoaW5SYW5nZShjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9''@;'; put 'put ''PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2NvbnN0IGQ9dGhpcy5tZXJnZWRDZWxscyxoPVtdO2xldCBmPWM7aWYoIWYuaW5jbHVkZXNSYW5nZSl7Y29uc3Qgdj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhmLmZyb20ucm93LGYuZnJvbS5jb2wpLFM9dGhpcy5ob3QuX2NyZWF0ZUNl''@;'; put 'put ''bGxDb29yZHMoZi50by5yb3csZi50by5jb2wpO2Y9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZSh2LHYsUyl9cmV0dXJuIFRuKGQsdj0+e2NvbnN0IFM9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModi5yb3csdi5jb2wpLFY9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModi5yb3crdi5y''@;'; put 'put ''b3dzcGFuLTEsdi5jb2wrdi5jb2xzcGFuLTEpLFE9dGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShTLFMsVik7YT9mLm92ZXJsYXBzKFEpJiZoLnB1c2godik6Zi5pbmNsdWRlc1JhbmdlKFEpJiZoLnB1c2godil9KSwhIWgubGVuZ3RoJiZofWFkZChjKXtjb25zdCBhPXRoaXMubWVyZ2VkQ2Vs''@;'; put 'put ''bHMsZD1jLnJvdyxoPWMuY29sLFM9bmV3IEozKGQsaCxjLnJvd3NwYW4sYy5jb2xzcGFuLHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzLHRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2UpLFY9dGhpcy5nZXQoZCxoKSxRPXRoaXMuaXNPdmVybGFwcGluZyhTKTtyZXR1cm4gVnx8UT8oaWwoYlgu''@;'; put 'put ''SVNfT1ZFUkxBUFBJTkdfV0FSTklORyhTKSksITEpOih0aGlzLmhvdCYmUy5ub3JtYWxpemUodGhpcy5ob3QpLGEucHVzaChTKSxTKX1yZW1vdmUoYyxhKXtjb25zdCBkPXRoaXMubWVyZ2VkQ2VsbHMsaD10aGlzLmdldChjLGEpLGY9aD90aGlzLm1lcmdlZENlbGxzLmluZGV4T2YoaCk6LTE7''@;'; put 'put ''cmV0dXJuISghaHx8LTE9PT1mKSYmKGQuc3BsaWNlKGYsMSksaCl9Y2xlYXIoKXtjb25zdCBhPVtdLGQ9W107VG4odGhpcy5tZXJnZWRDZWxscyxoPT57Y29uc3QgZj10aGlzLmhvdC5nZXRDZWxsKGgucm93LGguY29sKTtmJiZhLnB1c2goW2YsdGhpcy5nZXQoaC5yb3csaC5jb2wpLGgucm93''@;'; put 'put ''LGguY29sXSl9KSx0aGlzLm1lcmdlZENlbGxzLmxlbmd0aD0wLFRuKGEsKGgsZik9PntnbygwLGgucm93c3Bhbi0xLHY9PntnbygwLGguY29sc3Bhbi0xLFM9PntpZigwIT09U3x8MCE9PXYpe2NvbnN0IFY9dGhpcy5ob3QuZ2V0Q2VsbChoLnJvdyt2LGguY29sK1MpO1YmJmQucHVzaChbVixu''@;'; put 'put ''dWxsLG51bGwsbnVsbF0pfX0pfSksYVtmXVsxXT1udWxsfSksVG4oYSxoPT57dlgoLi4uaCl9KSxUbihkLGg9Pnt2WCguLi5oKX0pfWlzT3ZlcmxhcHBpbmcoYyl7Y29uc3QgYT10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKDAsMCksdGhpcy5o''@;'; put 'put ''b3QuX2NyZWF0ZUNlbGxDb29yZHMoYy5yb3csYy5jb2wpLHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMucm93K2Mucm93c3Bhbi0xLGMuY29sK2MuY29sc3Bhbi0xKSk7bGV0IGQ9ITE7cmV0dXJuIFRuKHRoaXMubWVyZ2VkQ2VsbHMsaD0+IXRoaXMuaG90Ll9jcmVhdGVDZWxsUmFuZ2Uo''@;'; put 'put ''dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoMCwwKSx0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLnJvdyxoLmNvbCksdGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoaC5yb3craC5yb3dzcGFuLTEsaC5jb2wraC5jb2xzcGFuLTEpKS5vdmVybGFwcyhhKXx8KGQ9ITAsITEpKSxkfWlz''@;'; put 'put ''Rmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbChjLGEpe2NvbnN0IGQ9dGhpcy5nZXQoYyxhKTtyZXR1cm4gZCYmdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGQucm93LDEpPT09YyYmdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5v''@;'; put 'put ''dEhpZGRlbkluZGV4KGQuY29sLDEpPT09YX1nZXRGaXJzdFJlbmRlcmFibGVDb29yZHMoYyxhKXtjb25zdCBkPXRoaXMuZ2V0KGMsYSk7aWYoIWR8fHRoaXMuaXNGaXJzdFJlbmRlcmFibGVNZXJnZWRDZWxsKGMsYSkpcmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMsYSk7Y29u''@;'; put 'put ''c3QgaD10aGlzLmhvdC5yb3dJbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZC5yb3csMSksZj10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoZC5jb2wsMSk7cmV0dXJuIHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGgsZil9''@;'; put 'put ''Z2V0U3RhcnRNb3N0Q29sdW1uSW5kZXgoYyxhKXtjb25zdCBkPU5QKGpFLHRoaXMsSFApLmNhbGwodGhpcyxjLCJjb2wiLC0xKTtsZXQgaD1hO2ZvcihsZXQgZj0wO2Y8ZC5sZW5ndGg7ZisrKWlmKGRbZl08PWEpe2g9ZFtmXTticmVha31yZXR1cm4gaH1nZXRFbmRNb3N0Q29sdW1uSW5kZXgo''@;'; put 'put ''YyxhKXtjb25zdCBkPU5QKGpFLHRoaXMsSFApLmNhbGwodGhpcyxjLCJjb2wiLDEpO2xldCBoPWE7Zm9yKGxldCBmPTA7ZjxkLmxlbmd0aDtmKyspaWYoZFtmXT49YSl7aD1kW2ZdO2JyZWFrfXJldHVybiBofWdldFRvcE1vc3RSb3dJbmRleChjLGEpe2NvbnN0IGQ9TlAoakUsdGhpcyxIUCku''@;'; put 'put ''Y2FsbCh0aGlzLGMsInJvdyIsLTEpO2xldCBoPWE7Zm9yKGxldCBmPTA7ZjxkLmxlbmd0aDtmKyspaWYoZFtmXTw9YSl7aD1kW2ZdO2JyZWFrfXJldHVybiBofWdldEJvdHRvbU1vc3RSb3dJbmRleChjLGEpe2NvbnN0IGQ9TlAoakUsdGhpcyxIUCkuY2FsbCh0aGlzLGMsInJvdyIsMSk7bGV0''@;'; put 'put ''IGg9YTtmb3IobGV0IGY9MDtmPGQubGVuZ3RoO2YrKylpZihkW2ZdPj1hKXtoPWRbZl07YnJlYWt9cmV0dXJuIGh9c2hpZnRDb2xsZWN0aW9ucyhjLGEsZCl7Y29uc3QgaD1bMCwwXTtzd2l0Y2goYyl7Y2FzZSJyaWdodCI6aFswXSs9ZDticmVhaztjYXNlImxlZnQiOmhbMF0tPWQ7YnJlYWs7''@;'; put 'put ''Y2FzZSJkb3duIjpoWzFdKz1kO2JyZWFrO2Nhc2UidXAiOmhbMV0tPWR9VG4odGhpcy5tZXJnZWRDZWxscyxmPT57Zi5zaGlmdChoLGEpfSksYkwodGhpcy5tZXJnZWRDZWxscy5sZW5ndGgtMSwwLGY9Pntjb25zdCB2PXRoaXMubWVyZ2VkQ2VsbHNbZl07diYmdi5yZW1vdmVkJiZ0aGlzLm1l''@;'; put 'put ''cmdlZENlbGxzLnNwbGljZSh0aGlzLm1lcmdlZENlbGxzLmluZGV4T2YodiksMSl9KX19ZnVuY3Rpb24gSFAobCxjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTtjb25zdCBkPW5ldyBNYXAsaD0xPT09YT9sLmdldFRvcFN0''@;'; put 'put ''YXJ0Q29ybmVyKCk6bC5nZXRCb3R0b21FbmRDb3JuZXIoKSxmPTE9PT1hP2wuZ2V0Qm90dG9tRW5kQ29ybmVyKCk6bC5nZXRUb3BTdGFydENvcm5lcigpO2ZvcihsZXQgdj1oLnJvdzsxPT09YT92PD1mLnJvdzp2Pj1mLnJvdzt2Kz1hKWZvcihsZXQgUz1oLmNvbDsxPT09YT9TPD1mLmNvbDpT''@;'; put 'put ''Pj1mLmNvbDtTKz1hKXtjb25zdCBWPSJyb3ciPT09Yz92OlMsUT10aGlzLmdldCh2LFMpO2xldCBkZT1WO1EmJihkZT0xPT09YT9RW2NdK1FbYCR7Y31zcGFuYF0tMTpRW2NdKSxkLmhhcyhWKXx8ZC5zZXQoVixuZXcgU2V0KSxkLmdldChWKS5hZGQoZGUpfXJldHVybiBBcnJheS5mcm9tKG5l''@;'; put 'put ''dyBTZXQoQXJyYXkuZnJvbShkLmVudHJpZXMoKSkuZmlsdGVyKHY9PntsZXRbLFNdPXY7cmV0dXJuIDE9PT1TLnNpemV9KS5mbGF0TWFwKHY9PntsZXRbLFNdPXY7cmV0dXJuIEFycmF5LmZyb20oUyl9KSkpfWNvbnN0IHpjdD1iWDtmdW5jdGlvbiB5WChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rp''@;'; put 'put ''b24gVWN0KGwpe3ZhciBjPWZ1bmN0aW9uIFpjdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJl''@;'; put 'put ''dHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBp''@;'; put 'put ''biBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBXY3Q9Y2xhc3MgWWN0e2NvbnN0cnVjdG9yKGMpe3lYKHRoaXMsInBsdWdpbiIsdm9pZCAwKSx5WCh0aGlzLCJtZXJn''@;'; put 'put ''ZWRDZWxsc0NvbGxlY3Rpb24iLHZvaWQgMCkseVgodGhpcywiY3VycmVudEZpbGxEYXRhIixudWxsKSx0aGlzLnBsdWdpbj1jLHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uPXRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbn1jb3JyZWN0U2VsZWN0aW9uQXJlYVNpemUoYyl7aWYo''@;'; put 'put ''Y1swXT09PWNbMl0mJmNbMV09PT1jWzNdKXtjb25zdCBhPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChjWzBdLGNbMV0pO2EmJihjWzJdPWNbMF0rYS5yb3dzcGFuLTEsY1szXT1jWzFdK2EuY29sc3Bhbi0xKX19Z2V0RGlyZWN0aW9uKGMsYSl7bGV0IGQ9bnVsbDtyZXR1cm4gZD1h''@;'; put 'put ''WzBdPT09Y1swXSYmYVsxXT09PWNbMV0mJmFbM109PT1jWzNdPyJkb3duIjphWzJdPT09Y1syXSYmYVsxXT09PWNbMV0mJmFbM109PT1jWzNdPyJ1cCI6YVsxXT09PWNbMV0mJmFbMl09PT1jWzJdPyJyaWdodCI6ImxlZnQiLGR9c25hcERyYWdBcmVhKGMsYSxkLGgpe2NvbnN0IGY9YS5zbGlj''@;'; put 'put ''ZSgwKSx2PXRoaXMuZ2V0QXV0b2ZpbGxTaXplKGMsYSxkKSxbUyxWLFEsZGVdPWMsQ2U9WyJ1cCIsImRvd24iXS5pbmRleE9mKGQpPi0xP1EtUysxOmRlLVYrMSxZZT12LU1hdGguZmxvb3Iodi9DZSkqQ2UsZXQ9dGhpcy5nZXRGYXJ0aGVzdENvbGxlY3Rpb24oYyxhLGQsaCk7aWYoZXQpaWYo''@;'; put 'put ''ImRvd24iPT09ZCl7Y29uc3QgZHQ9ZXQucm93K2V0LnJvd3NwYW4tUy1ZZTtmWzJdK2R0Pj10aGlzLnBsdWdpbi5ob3QuY291bnRSb3dzKCk/ZlsyXS09WWU6ZlsyXSs9WWU/ZHQ6MH1lbHNlIGlmKCJyaWdodCI9PT1kKXtjb25zdCBkdD1ldC5jb2wrZXQuY29sc3Bhbi1WLVllO2ZbM10rZHQ+''@;'; put 'put ''PXRoaXMucGx1Z2luLmhvdC5jb3VudENvbHMoKT9mWzNdLT1ZZTpmWzNdKz1ZZT9kdDowfWVsc2UgaWYoInVwIj09PWQpe2NvbnN0IGR0PVEtWWUtZXQucm93KzE7ZlswXStkdDwwP2ZbMF0rPVllOmZbMF0tPVllP2R0OjB9ZWxzZSBpZigibGVmdCI9PT1kKXtjb25zdCBkdD1kZS1ZZS1ldC5j''@;'; put 'put ''b2wrMTtmWzFdK2R0PDA/ZlsxXSs9WWU6ZlsxXS09WWU/ZHQ6MH1yZXR1cm4gdGhpcy51cGRhdGVDdXJyZW50RmlsbENhY2hlKHtiYXNlQXJlYTpjLGRyYWdEaXJlY3Rpb246ZCxmb3VuZE1lcmdlZENlbGxzOmgsZmlsbFNpemU6dixkcmFnQXJlYTpmLGN5Y2xlTGVuZ3RoOkNlfSksZn11cGRh''@;'; put 'put ''dGVDdXJyZW50RmlsbENhY2hlKGMpe3RoaXMuY3VycmVudEZpbGxEYXRhfHwodGhpcy5jdXJyZW50RmlsbERhdGE9e30pLEZjKHRoaXMuY3VycmVudEZpbGxEYXRhLGMpfWdldEF1dG9maWxsU2l6ZShjLGEsZCl7Y29uc3RbaCxmLHYsU109YyxbVixRLGRlLHBlXT1hO3N3aXRjaChkKXtjYXNl''@;'; put 'put ''InVwIjpyZXR1cm4gaC1WO2Nhc2UiZG93biI6cmV0dXJuIGRlLXY7Y2FzZSJsZWZ0IjpyZXR1cm4gZi1RO2Nhc2UicmlnaHQiOnJldHVybiBwZS1TO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWdldERyYWdBcmVhKGMsYSxkKXtjb25zdFtoLGYsdixTXT1jLFtWLFEsZGUscGVdPWE7c3dpdGNoKGQp''@;'; put 'put ''e2Nhc2UidXAiOnJldHVybltWLFEsaC0xLFNdO2Nhc2UiZG93biI6cmV0dXJuW3YrMSxmLGRlLFNdO2Nhc2UibGVmdCI6cmV0dXJuW1YsUSx2LGYtMV07Y2FzZSJyaWdodCI6cmV0dXJuW2gsUysxLGRlLHBlXTtkZWZhdWx0OnJldHVybiBudWxsfX1nZXRGYXJ0aGVzdENvbGxlY3Rpb24oYyxh''@;'; put 'put ''LGQsaCl7Y29uc3RbZix2LFMsVl09YyxRPVsidXAiLCJkb3duIl0uaW5kZXhPZihkKT4tMSxkZT1RP1M6VixwZT1RP2Y6dixDZT10aGlzLmdldEF1dG9maWxsU2l6ZShjLGEsZCksT2U9UT9TLWYrMTpWLXYrMSxldD1DZS1NYXRoLmZsb29yKENlL09lKSpPZTtsZXQgZHQ9bnVsbCxodD1udWxs''@;'; put 'put ''LE10PW51bGw7c3dpdGNoKGQpe2Nhc2UidXAiOmR0PSJpbmNsdWRlc1ZlcnRpY2FsbHkiLE10PWRlLWV0KzE7YnJlYWs7Y2FzZSJsZWZ0IjpkdD0iaW5jbHVkZXNIb3Jpem9udGFsbHkiLE10PWRlLWV0KzE7YnJlYWs7Y2FzZSJkb3duIjpkdD0iaW5jbHVkZXNWZXJ0aWNhbGx5IixNdD1wZStl''@;'; put 'put ''dC0xO2JyZWFrO2Nhc2UicmlnaHQiOmR0PSJpbmNsdWRlc0hvcml6b250YWxseSIsTXQ9cGUrZXQtMX1yZXR1cm4gVG4oaCxRdD0+e1F0W2R0XShNdCkmJlF0LmlzRmFydGhlcihodCxkKSYmKGh0PVF0KX0pLGh0fXJlY3JlYXRlQWZ0ZXJEYXRhUG9wdWxhdGlvbihjKXtpZighdGhpcy5jdXJy''@;'; put 'put ''ZW50RmlsbERhdGEpcmV0dXJuO2NvbnN0IGE9dGhpcy5nZXRSYW5nZUZyb21DaGFuZ2VzKGMpLGQ9dGhpcy5jdXJyZW50RmlsbERhdGEuZm91bmRNZXJnZWRDZWxscyxoPXRoaXMuY3VycmVudEZpbGxEYXRhLmRyYWdEaXJlY3Rpb24sZj0oUSxkZSk9Pntzd2l0Y2goaCl7Y2FzZSJ1cCI6cmV0''@;'; put 'put ''dXJuIFEucm93LWRlPj1hLmZyb20ucm93O2Nhc2UiZG93biI6cmV0dXJuIFEucm93K1Eucm93c3Bhbi0xK2RlPD1hLnRvLnJvdztjYXNlImxlZnQiOnJldHVybiBRLmNvbC1kZT49YS5mcm9tLmNvbHVtbjtjYXNlInJpZ2h0IjpyZXR1cm4gUS5jb2wrUS5jb2xzcGFuLTErZGU8PWEudG8uY29s''@;'; put 'put ''dW1uO2RlZmF1bHQ6cmV0dXJuIG51bGx9fTtsZXQgdj0wLFM9bnVsbCxWPTE7ZG97Zm9yKGxldCBRPTA7UTxkLmxlbmd0aDtRKz0xKXtpZihTPWRbUV0sdj1WKnRoaXMuY3VycmVudEZpbGxEYXRhLmN5Y2xlTGVuZ3RoLGYoUyx2KSlzd2l0Y2goaCl7Y2FzZSJ1cCI6dGhpcy5wbHVnaW4ubWVy''@;'; put 'put ''Z2VkQ2VsbHNDb2xsZWN0aW9uLmFkZCh7cm93OlMucm93LXYscm93c3BhbjpTLnJvd3NwYW4sY29sOlMuY29sLGNvbHNwYW46Uy5jb2xzcGFufSk7YnJlYWs7Y2FzZSJkb3duIjp0aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uYWRkKHtyb3c6Uy5yb3crdixyb3dzcGFuOlMucm93''@;'; put 'put ''c3Bhbixjb2w6Uy5jb2wsY29sc3BhbjpTLmNvbHNwYW59KTticmVhaztjYXNlImxlZnQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpTLnJvdyxyb3dzcGFuOlMucm93c3Bhbixjb2w6Uy5jb2wtdixjb2xzcGFuOlMuY29sc3Bhbn0pO2JyZWFrO2Nhc2Uicmln''@;'; put 'put ''aHQiOnRoaXMucGx1Z2luLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5hZGQoe3JvdzpTLnJvdyxyb3dzcGFuOlMucm93c3Bhbixjb2w6Uy5jb2wrdixjb2xzcGFuOlMuY29sc3Bhbn0pfVE9PT1kLmxlbmd0aC0xJiYoVis9MSl9fXdoaWxlKGYoUyx2KSk7dGhpcy5jdXJyZW50RmlsbERhdGE9bnVs''@;'; put 'put ''bCx0aGlzLnBsdWdpbi5ob3QucmVuZGVyKCksZC5sZW5ndGg+MCYmdGhpcy5wbHVnaW4uaWZDaHJvbWVGb3JjZVJlcGFpbnQoKX1nZXRSYW5nZUZyb21DaGFuZ2VzKGMpe2NvbnN0IGE9e21pbjpudWxsLG1heDpudWxsfSxkPXttaW46bnVsbCxtYXg6bnVsbH07cmV0dXJuIFRuKGMsaD0+e2Nv''@;'; put 'put ''bnN0IGY9aFswXSx2PXRoaXMucGx1Z2luLmhvdC5wcm9wVG9Db2woaFsxXSk7KG51bGw9PT1hLm1pbnx8ZjxhLm1pbikmJihhLm1pbj1mKSwobnVsbD09PWEubWF4fHxmPmEubWF4KSYmKGEubWF4PWYpLChudWxsPT09ZC5taW58fHY8ZC5taW4pJiYoZC5taW49diksKG51bGw9PT1kLm1heHx8''@;'; put 'put ''dj5kLm1heCkmJihkLm1heD12KX0pLHtmcm9tOntyb3c6YS5taW4sY29sdW1uOmQubWlufSx0bzp7cm93OmEubWF4LGNvbHVtbjpkLm1heH19fWRyYWdBcmVhT3ZlcmxhcHNDb2xsZWN0aW9ucyhjLGEsZCl7Y29uc3QgaD10aGlzLmdldERyYWdBcmVhKGMsYSxkKSxbZix2LFMsVl09aCxRPXRo''@;'; put 'put ''aXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhmLHYpLGRlPXRoaXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhTLFYpLHBlPXRoaXMucGx1Z2luLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKFEsUSxkZSk7cmV0dXJuISF0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRo''@;'; put 'put ''aW5SYW5nZShwZSwhMCl9fTtmdW5jdGlvbiB3WChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gR2N0KGwpe3ZhciBjPWZ1bmN0aW9uICRjdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3Zh''@;'; put 'put ''ciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0o''@;'; put 'put ''bCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBLY3Q9Y2xhc3MgcWN0e2Nv''@;'; put 'put ''bnN0cnVjdG9yKGMpe3dYKHRoaXMsInBsdWdpbiIsdm9pZCAwKSx3WCh0aGlzLCJob3QiLHZvaWQgMCksd1godGhpcywiZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWUiLCJmdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbCIpLHRoaXMucGx1Z2luPWMsdGhpcy5ob3Q9Yy5ob3R9Z2V0U2Vs''@;'; put 'put ''ZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lKGMsYSxkLGgpe2NvbnN0IGY9TWF0aC5taW4oZFswXSxkWzJdKSx2PU1hdGgubWluKGRbMV0sZFszXSksUz1NYXRoLm1heChkWzBdLGRbMl0pLFY9TWF0aC5tYXgoZFsxXSxkWzNdKTtpZih2b2lkIDA9PT1ofHwhdGhpcy5wbHVnaW4ubWVyZ2VkQ2Vs''@;'; put 'put ''bHNDb2xsZWN0aW9uLmlzRmlyc3RSZW5kZXJhYmxlTWVyZ2VkQ2VsbChjLGEpKXJldHVybjtjb25zdCBkZT10aGlzLnBsdWdpbi5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGMsYSk7aWYoIWRlKXJldHVybjtjb25zdCBwZT1kZS5nZXRMYXN0Um93KCksQ2U9ZGUuZ2V0TGFzdENvbHVtbigp''@;'; put 'put ''O3JldHVybiBmPD1kZS5yb3cmJnY8PWRlLmNvbCYmUz49cGUmJlY+PUNlP2Ake3RoaXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWV9LSR7aH1gOnRoaXMuaXNNZXJnZUNlbGxGdWxseVNlbGVjdGVkKGRlLHRoaXMucGx1Z2luLmhvdC5nZXRTZWxlY3RlZFJhbmdlKCkpP2Ake3Ro''@;'; put 'put ''aXMuZnVsbHlTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWV9LW11bHRpcGxlYDp2b2lkIDB9aXNNZXJnZUNlbGxGdWxseVNlbGVjdGVkKGMsYSl7Y29uc3QgZD1bXTtpZighYXx8IWMpcmV0dXJuITE7Zm9yKGxldCBoPTA7aDxjLnJvd3NwYW47aCs9MSlmb3IobGV0IGY9MDtmPGMuY29sc3Bh''@;'; put 'put ''bjtmKz0xKWQucHVzaCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLnJvdytoLGMuY29sK2YpKTtmb3IobGV0IGg9MDtoPGQubGVuZ3RoO2grPTEpe2NvbnN0IGY9W107Zm9yKGxldCB2PTA7djxhLmxlbmd0aDt2Kz0xKWZbdl09YVt2XS5pbmNsdWRlcyhkW2hdKTtpZighZi5pbmNsdWRl''@;'; put 'put ''cyghMCkpcmV0dXJuITF9cmV0dXJuITB9Z2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lVG9SZW1vdmUoKXtjb25zdCBjPVtdO2ZvcihsZXQgYT0wO2E8PTc7YSs9MSljLnB1c2goYCR7dGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZX0tJHthfWApO3JldHVybiBjLnB1''@;'; put 'put ''c2goYCR7dGhpcy5mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbENsYXNzTmFtZX0tbXVsdGlwbGVgKSxjfX07ZnVuY3Rpb24gekUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEpjdChsKXt2YXIgYz1mdW5jdGlvbiBRY3QobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3Zh''@;'; put 'put ''ciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVl''@;'; put 'put ''LiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdy''@;'; put 'put ''aXRhYmxlOiEwfSk6bFtjXT1hLGx9Y2xhc3MgdXBle2NvbnN0cnVjdG9yKGMpe3pFKHRoaXMsImRhdGEiLHZvaWQgMCksekUodGhpcywibmV4dCIsbnVsbCksekUodGhpcywicHJldiIsbnVsbCksdGhpcy5kYXRhPWN9fWNvbnN0IFZQPWNsYXNzIGV1dHtjb25zdHJ1Y3Rvcigpe3pFKHRoaXMs''@;'; put 'put ''ImZpcnN0IixudWxsKSx6RSh0aGlzLCJsYXN0IixudWxsKX1wdXNoKGMpe2NvbnN0IGE9bmV3IHVwZShjKTtpZihudWxsPT09dGhpcy5maXJzdCl0aGlzLmZpcnN0PWEsdGhpcy5sYXN0PWE7ZWxzZXtjb25zdCBkPXRoaXMubGFzdDt0aGlzLmxhc3Q9YSxhLnByZXY9ZCxkLm5leHQ9YX1yZXR1''@;'; put 'put ''cm4gYX11bnNoaWZ0KGMpe2NvbnN0IGE9bmV3IHVwZShjKTtpZihudWxsPT09dGhpcy5maXJzdCl0aGlzLmZpcnN0PWEsdGhpcy5sYXN0PWE7ZWxzZXtjb25zdCBkPXRoaXMuZmlyc3Q7dGhpcy5maXJzdD1hLGEubmV4dD1kLGQucHJldj1hfX1pbm9yZGVyKGMpe2xldCBhPXRoaXMuZmlyc3Q7''@;'; put 'put ''Zm9yKDthOyl7Y29uc3QgZD1jKGEpO2lmKGE9PT10aGlzLmxhc3R8fCEwPT09ZClicmVhazthPWEubmV4dH19cmVtb3ZlKGMpe2lmKG51bGw9PT10aGlzLmZpcnN0KXJldHVybiExO2xldCBkLGgsYT10aGlzLmZpcnN0O2Zvcig7YTspe2lmKGEuZGF0YT09PWMpcmV0dXJuIGQ9YS5uZXh0LGg9''@;'; put 'put ''YS5wcmV2LGQmJihkLnByZXY9aCksaCYmKGgubmV4dD1kKSxhPT09dGhpcy5maXJzdCYmKHRoaXMuZmlyc3Q9ZCksYT09PXRoaXMubGFzdCYmKHRoaXMubGFzdD1oKSwhMDthPWEubmV4dH1yZXR1cm4hMX1oYXNDeWNsZSgpe2xldCBjPXRoaXMuZmlyc3QsYT10aGlzLmZpcnN0O2Zvcig7Oyl7''@;'; put 'put ''aWYobnVsbD09PWN8fChjPWMubmV4dCxudWxsPT09YykpcmV0dXJuITE7aWYoYz1jLm5leHQsYT1hLm5leHQsYz09PWEpcmV0dXJuITB9fXBvcCgpe2lmKG51bGw9PT10aGlzLmxhc3QpcmV0dXJuIG51bGw7Y29uc3QgYz10aGlzLmxhc3Q7cmV0dXJuIHRoaXMubGFzdD10aGlzLmxhc3QucHJl''@;'; put 'put ''dixjfXNoaWZ0KCl7aWYobnVsbD09PXRoaXMuZmlyc3QpcmV0dXJuIG51bGw7Y29uc3QgYz10aGlzLmZpcnN0O3JldHVybiB0aGlzLmZpcnN0PXRoaXMuZmlyc3QubmV4dCxjfXJlY3Vyc2l2ZVJldmVyc2UoKXtpZighdGhpcy5maXJzdClyZXR1cm47KGZ1bmN0aW9uIGMoZCxoKXtoJiYoYyho''@;'; put 'put ''LGgubmV4dCksaC5uZXh0PWQpfSkodGhpcy5maXJzdCx0aGlzLmZpcnN0Lm5leHQpLHRoaXMuZmlyc3QubmV4dD1udWxsO2NvbnN0IGE9dGhpcy5maXJzdDt0aGlzLmZpcnN0PXRoaXMubGFzdCx0aGlzLmxhc3Q9YX1yZXZlcnNlKCl7aWYoIXRoaXMuZmlyc3R8fCF0aGlzLmZpcnN0Lm5leHQp''@;'; put 'put ''cmV0dXJuO2xldCBkLGM9dGhpcy5maXJzdC5uZXh0LGE9dGhpcy5maXJzdDtmb3IoO2M7KWQ9Yy5uZXh0LGMubmV4dD1hLGEucHJldj1jLGE9YyxjPWQ7dGhpcy5maXJzdC5uZXh0PW51bGwsdGhpcy5sYXN0LnByZXY9bnVsbCxkPXRoaXMuZmlyc3QsdGhpcy5maXJzdD1hLHRoaXMubGFzdD1k''@;'; put 'put ''fX07ZnVuY3Rpb24gTzcobCxjLGEpe2RwZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gZHBlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3QiKX1mdW5jdGlv''@;'; put 'put ''biBBYShsLGMpe3JldHVybiBsLmdldChCUChsLGMpKX1mdW5jdGlvbiBVZChsLGMsYSl7cmV0dXJuIGwuc2V0KEJQKGwsYyksYSksYX1mdW5jdGlvbiBCUChsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mz9jOmE7''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIFEzPW5ldyBXZWFrTWFwLGVwPW5ldyBXZWFrTWFwLHRwPW5ldyBXZWFrTWFwLG5wPW5ldyBXZWFrTWFwLENYPW5ldyBXZWFrTWFwLGpQPW5ldyBXZWFrTWFwLHpQ''@;'; put 'put ''PW5ldyBXZWFrTWFwLFNYPW5ldyBXZWFrU2V0O2NsYXNzIG51dHtjb25zdHJ1Y3RvcihjKXtsZXR7bWVyZ2VkQ2VsbHNHZXR0ZXI6YSxyb3dJbmRleE1hcHBlcjpkLGNvbHVtbkluZGV4TWFwcGVyOmh9PWM7KGZ1bmN0aW9uIHR1dChsLGMpe2RwZShsLGMpLGMuYWRkKGwpfSkodGhpcyxTWCks''@;'; put 'put ''TzcodGhpcyxRMyxuZXcgVlApLE83KHRoaXMsZXAsbmV3IFZQKSxPNyh0aGlzLHRwLG51bGwpLE83KHRoaXMsbnAsbnVsbCksTzcodGhpcyxDWCxudWxsKSxPNyh0aGlzLGpQLG51bGwpLE83KHRoaXMselAsbnVsbCksVWQoQ1gsdGhpcyxhKSxVZChqUCx0aGlzLGQpLFVkKHpQLHRoaXMsaCl9''@;'; put 'put ''Z2V0Q3VycmVudFZlcnRpY2FsTm9kZSgpe3JldHVybiBBYShucCx0aGlzKS5kYXRhfWdldEZpcnN0VmVydGljYWxOb2RlKCl7cmV0dXJuIEFhKGVwLHRoaXMpLmZpcnN0LmRhdGF9Z2V0TmV4dFZlcnRpY2FsTm9kZSgpe3JldHVybiBBYShucCx0aGlzKS5uZXh0LmRhdGF9Z2V0UHJldlZlcnRp''@;'; put 'put ''Y2FsTm9kZSgpe3JldHVybiBBYShucCx0aGlzKS5wcmV2LmRhdGF9Z2V0Q3VycmVudEhvcml6b250YWxOb2RlKCl7cmV0dXJuIEFhKHRwLHRoaXMpLmRhdGF9Z2V0Rmlyc3RIb3Jpem9udGFsTm9kZSgpe3JldHVybiBBYShRMyx0aGlzKS5maXJzdC5kYXRhfWdldE5leHRIb3Jpem9udGFsTm9k''@;'; put 'put ''ZSgpe3JldHVybiBBYSh0cCx0aGlzKS5uZXh0LmRhdGF9Z2V0UHJldkhvcml6b250YWxOb2RlKCl7cmV0dXJuIEFhKHRwLHRoaXMpLnByZXYuZGF0YX1zZXRQcmV2Tm9kZUFzQWN0aXZlKCl7VWQobnAsdGhpcyxBYShucCx0aGlzKS5wcmV2KSxVZCh0cCx0aGlzLEFhKHRwLHRoaXMpLnByZXYp''@;'; put 'put ''fXNldE5leHROb2RlQXNBY3RpdmUoKXtVZChucCx0aGlzLEFhKG5wLHRoaXMpLm5leHQpLFVkKHRwLHRoaXMsQWEodHAsdGhpcykubmV4dCl9YnVpbGRGb2N1c09yZGVyKGMpe2NvbnN0IGE9Yy5nZXRUb3BTdGFydENvcm5lcigpLGQ9Yy5nZXRCb3R0b21FbmRDb3JuZXIoKSxoPW5ldyBXZWFr''@;'; put 'put ''U2V0O1VkKFEzLHRoaXMsbmV3IFZQKTtmb3IobGV0IHY9YS5yb3c7djw9ZC5yb3c7disrKWlmKCFBYShqUCx0aGlzKS5pc0hpZGRlbih2KSlmb3IobGV0IFM9YS5jb2w7Uzw9ZC5jb2w7UysrKXtpZihBYSh6UCx0aGlzKS5pc0hpZGRlbihTKSljb250aW51ZTtjb25zdCBWPUJQKFNYLHRoaXMs''@;'; put 'put ''aHBlKS5jYWxsKHRoaXMsYyxBYShRMyx0aGlzKSxoLHYsUyk7ViYmVWQodHAsdGhpcyxWKX1BYShRMyx0aGlzKS5maXJzdCYmKEFhKFEzLHRoaXMpLmZpcnN0LnByZXY9QWEoUTMsdGhpcykubGFzdCxBYShRMyx0aGlzKS5sYXN0Lm5leHQ9QWEoUTMsdGhpcykuZmlyc3QpO2NvbnN0IGY9bmV3''@;'; put 'put ''IFdlYWtTZXQ7VWQoZXAsdGhpcyxuZXcgVlApO2ZvcihsZXQgdj1hLmNvbDt2PD1kLmNvbDt2KyspaWYoIUFhKHpQLHRoaXMpLmlzSGlkZGVuKHYpKWZvcihsZXQgUz1hLnJvdztTPD1kLnJvdztTKyspe2lmKEFhKGpQLHRoaXMpLmlzSGlkZGVuKFMpKWNvbnRpbnVlO2NvbnN0IFY9QlAoU1gs''@;'; put 'put ''dGhpcyxocGUpLmNhbGwodGhpcyxjLEFhKGVwLHRoaXMpLGYsUyx2KTtWJiZVZChucCx0aGlzLFYpfUFhKGVwLHRoaXMpLmZpcnN0JiYoQWEoZXAsdGhpcykuZmlyc3QucHJldj1BYShlcCx0aGlzKS5sYXN0LEFhKGVwLHRoaXMpLmxhc3QubmV4dD1BYShlcCx0aGlzKS5maXJzdCl9c2V0QWN0''@;'; put 'put ''aXZlTm9kZShjLGEpe3JldHVybiBBYShRMyx0aGlzKS5pbm9yZGVyKGQ9Pntjb25zdHtyb3dTdGFydDpoLHJvd0VuZDpmLGNvbFN0YXJ0OnYsY29sRW5kOlN9PWQuZGF0YTtpZihjPj1oJiZjPD1mJiZhPj12JiZhPD1TKXJldHVybiBVZCh0cCx0aGlzLGQpLCExfSksQWEoZXAsdGhpcykuaW5v''@;'; put 'put ''cmRlcihkPT57Y29uc3R7cm93U3RhcnQ6aCxyb3dFbmQ6Zixjb2xTdGFydDp2LGNvbEVuZDpTfT1kLmRhdGE7aWYoYz49aCYmYzw9ZiYmYT49diYmYTw9UylyZXR1cm4gVWQobnAsdGhpcyxkKSwhMX0pLHRoaXN9fWZ1bmN0aW9uIGhwZShsLGMsYSxkLGgpe2NvbnN0IGY9bC5nZXRUb3BTdGFy''@;'; put 'put ''dENvcm5lcigpLHY9bC5nZXRCb3R0b21FbmRDb3JuZXIoKSxTPWwuaGlnaGxpZ2h0LmNsb25lKCkubm9ybWFsaXplKCksVj1BYShDWCx0aGlzKS5jYWxsKHRoaXMsZCxoKTtpZihWJiZhLmhhcyhWKSlyZXR1cm4gbnVsbDtjb25zdCBRPXtjb2xTdGFydDpoLGNvbEVuZDpoLHJvd1N0YXJ0OmQs''@;'; put 'put ''cm93RW5kOmR9O2lmKFYpe2lmKGEuYWRkKFYpLFYucm93PGYucm93fHxWLnJvdytWLnJvd3NwYW4tMT52LnJvd3x8Vi5jb2w8Zi5jb2x8fFYuY29sK1YuY29sc3Bhbi0xPnYuY29sKXJldHVybiBudWxsO1EuY29sU3RhcnQ9Vi5jb2wsUS5jb2xFbmQ9Vi5jb2wrVi5jb2xzcGFuLTEsUS5yb3dT''@;'; put 'put ''dGFydD1WLnJvdyxRLnJvd0VuZD1WLnJvdytWLnJvd3NwYW4tMX1jb25zdCBkZT1jLnB1c2goUSk7cmV0dXJuIGQ9PT1TLnJvdyYmaD09PVMuY29sfHxWJiZTLnJvdz49Vi5yb3cmJlMucm93PD1WLnJvdytWLnJvd3NwYW4tMSYmUy5jb2w+PVYuY29sJiZTLmNvbDw9Vi5jb2wrVi5jb2xzcGFu''@;'; put 'put ''LTE/ZGU6bnVsbH1mdW5jdGlvbiBNWChsLGMsYSl7ZnBlKGwsYyksYy5zZXQobCxhKX1mdW5jdGlvbiBmcGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIp''@;'; put 'put ''fWZ1bmN0aW9uIHhYKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBpdXQobCl7dmFyIGM9ZnVuY3Rpb24gb3V0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8''@;'; put 'put ''ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1''@;'; put 'put ''cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIFVFKGwsYyxhKXtyZXR1cm4gbC5zZXQoJGEobCxj''@;'; put 'put ''KSxhKSxhfWZ1bmN0aW9uIHdsKGwsYyl7cmV0dXJuIGwuZ2V0KCRhKGwsYykpfWZ1bmN0aW9uICRhKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVs''@;'; put 'put ''ZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1hby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3JlTWVyZ2VDZWxscyIpLGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJhZnRlck1lcmdlQ2VsbHMiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigiYmVmb3Jl''@;'; put 'put ''VW5tZXJnZUNlbGxzIiksYW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoImFmdGVyVW5tZXJnZUNlbGxzIik7Y29uc3QgWkU9Im1lcmdlQ2VsbHMiLHBwZT1aRTt2YXIgdDI9bmV3IFdlYWtNYXAsbjI9bmV3IFdlYWtNYXAscnA9bmV3IFdlYWtNYXAsc2w9bmV3IFdlYWtTZXQ7Y2xhc3MgYXV0''@;'; put 'put ''IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIHJ1dChsLGMpe2ZwZShsLGMpLGMuYWRkKGwpfSh0aGlzLHNsKSx4WCh0aGlzLCJtZXJnZWRDZWxsc0NvbGxlY3Rpb24iLG51bGwpLHhYKHRoaXMsImF1dG9maWxsQ2FsY3VsYXRpb25zIixudWxs''@;'; put 'put ''KSx4WCh0aGlzLCJzZWxlY3Rpb25DYWxjdWxhdGlvbnMiLG51bGwpLE1YKHRoaXMsdDIsbnVsbCksTVgodGhpcyxuMix7cm93OjAsY29sOjB9KSxNWCh0aGlzLHJwLG5ldyBudXQoe21lcmdlZENlbGxzR2V0dGVyOihjLGEpPT50aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoYyxhKSxy''@;'; put 'put ''b3dJbmRleE1hcHBlcjp0aGlzLmhvdC5yb3dJbmRleE1hcHBlcixjb2x1bW5JbmRleE1hcHBlcjp0aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlcn0pKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVkoKXtyZXR1cm4gWkV9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTUwfWlzRW5h''@;'; put 'put ''YmxlZCgpe3JldHVybiEhdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtaRV19ZW5hYmxlUGx1Z2luKCl7dmFyIGM9dGhpczt0aGlzLmVuYWJsZWR8fCh0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbj1uZXcgemN0KHRoaXMpLHRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnM9bmV3IFdjdCh0aGlzKSx0''@;'; put 'put ''aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucz1uZXcgS2N0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLGx1''@;'; put 'put ''dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlUcmFuc2Zvcm1Gb2N1cyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyx1dXQpLmNhbGwoYywu''@;'; put 'put ''Li5kKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5VHJhbnNmb3JtU3RhcnQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsZHV0KS5jYWxsKGMsLi4uZCl9KSx0aGlz''@;'; put 'put ''LmFkZEhvb2soIm1vZGlmeVRyYW5zZm9ybUVuZCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxodXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVm''@;'; put 'put ''b3JlU2VsZWN0aW9uSGlnaGxpZ2h0U2V0IixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLGZ1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVT''@;'; put 'put ''ZXRSYW5nZVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLGdwZSkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZXRSYW5nZVN0YXJ0''@;'; put 'put ''T25seSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxncGUpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlU2VsZWN0aW9uRm9jdXNTZXQiLGZ1''@;'; put 'put ''bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsdnV0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uRm9jdXNTZXQiLGZ1bmN0aW9uKCl7''@;'; put 'put ''Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsX3V0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyU2VsZWN0aW9uRW5kIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLGJ1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlHZXRDZWxsQ29vcmRzIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3Ro''@;'; put 'put ''LGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLHB1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJhZnRlcklzTXVsdGlwbGVTZWxlY3Rpb24iLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcg''@;'; put 'put ''QXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsY3V0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVuZGVyZXIiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTto''@;'; put 'put ''KyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsbXV0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ29udGV4dE1lbnVEZWZhdWx0T3B0aW9ucyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2gr''@;'; put 'put ''KylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxndXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJHZXRDZWxsTWV0YSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50''@;'; put 'put ''c1toXTtyZXR1cm4gJGEoc2wsYyx5dXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydFJvd0NhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3Vt''@;'; put 'put ''ZW50c1toXTtyZXR1cm4gJGEoc2wsYyx3dXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJWaWV3cG9ydENvbHVtbkNhbGN1bGF0b3JPdmVycmlkZSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hd''@;'; put 'put ''PWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxDdXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygibW9kaWZ5QXV0b2ZpbGxSYW5nZSIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1to''@;'; put 'put ''XTtyZXR1cm4gJGEoc2wsYyxTdXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDcmVhdGVDb2wiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMs''@;'; put 'put ''TXV0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlQ29sIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLHh1dCkuY2FsbChjLC4uLmQp''@;'; put 'put ''fSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0ZVJvdyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxFdXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygi''@;'; put 'put ''YWZ0ZXJSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuICRhKHNsLGMsVHV0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyQ2hhbmdlIixmdW5j''@;'; put 'put ''dGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLGt1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVEcmF3Qm9yZGVycyIsZnVuY3Rpb24oKXtmb3IodmFy''@;'; put 'put ''IGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxBdXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJEcmF3U2VsZWN0aW9uIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLER1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVDZWxsQ2xhc3NOYW1lcyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0''@;'; put 'put ''aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gJGEoc2wsYyxJdXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlQmVnaW5FZGl0aW5nIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5''@;'; put 'put ''KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiAkYShzbCxjLFJ1dCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLChhLGQpPT57aWYoIk1lcmdlQ2VsbHMiPT09ZClyZXR1cm4hMX0pLHRoaXMucmVnaXN0ZXJTaG9ydGN1''@;'; put 'put ''dHMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuY2xlYXJDb2xsZWN0aW9ucygpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuaG90LnJlbmRlcigpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXtjb25zdCBjPXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKClbWkVdO3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5nZW5lcmF0ZUZyb21TZXR0aW5ncyhjKSxzdXBlci51cGRhdGVQbHVnaW4oKX1pZkNocm9tZUZvcmNlUmVwYWludCgpe2lmKCFTVygpKXJldHVybjtjb25zdCBjPVtdO2xldCBh''@;'; put 'put ''PVtdO3RoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLmZvckVhY2goZD0+e2NvbnN0e3JvdzpoLHJvd3NwYW46Zn09ZDtmb3IobGV0IHY9aCsxO3Y8aCtmO3YrKylhLnB1c2godil9KSxhPVsuLi5uZXcgU2V0KGEpXSxhLmZvckVhY2goZD0+e2NvbnN0IGg9dGhpcy5ob3Qu''@;'; put 'put ''cm93SW5kZXhNYXBwZXIuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChkKTt0aGlzLmhvdC52aWV3Ll93dC53dE92ZXJsYXlzLmdldE92ZXJsYXlzKCEwKS5tYXAoZj0+Im1hc3RlciI9PT1mPy5uYW1lP2Y6Zi5jbG9uZS53dFRhYmxlKS5mb3JFYWNoKGY9Pntjb25zdCB2PWYuZ2V0Um93''@;'; put 'put ''KGgpO3YmJih2LnN0eWxlLmJhY2tncm91bmQ9cmIodiwiYmFja2dyb3VuZENvbG9yIikucmVwbGFjZSgiKSIsIiwgMC45OSkiKSxjLnB1c2godikpfSl9KSx0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57Yy5mb3JFYWNoKGQ9PntkLnN0eWxlLmJhY2tncm91bmQ9cmIoZCwiYmFja2dy''@;'; put 'put ''b3VuZENvbG9yIikucmVwbGFjZSgiLCAwLjk5KSIsIikiKX0pfSwxKX12YWxpZGF0ZVNldHRpbmcoYyl7bGV0IGE9ITA7cmV0dXJuISFjJiYoSjMuY29udGFpbnNOZWdhdGl2ZVZhbHVlcyhjKT8oaWwoSjMuTkVHQVRJVkVfVkFMVUVTX1dBUk5JTkcoYykpLGE9ITEpOkozLmlzT3V0T2ZCb3Vu''@;'; put 'put ''ZHMoYyx0aGlzLmhvdC5jb3VudFJvd3MoKSx0aGlzLmhvdC5jb3VudENvbHMoKSk/KGlsKEozLklTX09VVF9PRl9CT1VORFNfV0FSTklORyhjKSksYT0hMSk6SjMuaXNTaW5nbGVDZWxsKGMpPyhpbChKMy5JU19TSU5HTEVfQ0VMTChjKSksYT0hMSk6SjMuY29udGFpbnNaZXJvU3BhbihjKSYm''@;'; put 'put ''KGlsKEozLlpFUk9fU1BBTl9XQVJOSU5HKGMpKSxhPSExKSxhKX1nZW5lcmF0ZUZyb21TZXR0aW5ncyhjKXtpZihBcnJheS5pc0FycmF5KGMpKXtjb25zdCBhPVtdO2lmKFRuKGMsZD0+e2lmKCF0aGlzLnZhbGlkYXRlU2V0dGluZyhkKSlyZXR1cm47Y29uc3QgaD10aGlzLmhvdC5fY3JlYXRl''@;'; put 'put ''Q2VsbENvb3JkcyhkLnJvdyxkLmNvbCksZj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhkLnJvdytkLnJvd3NwYW4tMSxkLmNvbCtkLmNvbHNwYW4tMSksdj10aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGgsaCxmKTt0aGlzLm1lcmdlUmFuZ2UodiwhMCwhMCksZ28oZC5yb3csZC5yb3cr''@;'; put 'put ''ZC5yb3dzcGFuLTEsUz0+e2dvKGQuY29sLGQuY29sK2QuY29sc3Bhbi0xLFY9PntTPT09ZC5yb3cmJlY9PT1kLmNvbHx8YS5wdXNoKFtTLFYsbnVsbF0pfSl9KX0pLDA9PT1hLmxlbmd0aClyZXR1cm47dGhpcy5ob3Quc2V0RGF0YUF0Q2VsbChhLHZvaWQgMCx2b2lkIDAsdGhpcy5wbHVnaW5O''@;'; put 'put ''YW1lKX19Y2xlYXJDb2xsZWN0aW9ucygpe3RoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmNsZWFyKCl9Y2FuTWVyZ2VSYW5nZShjKXtyZXR1cm4hIShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdKXx8dGhpcy52YWxpZGF0ZVNldHRpbmco''@;'; put 'put ''Yyl9bWVyZ2VTZWxlY3Rpb24oKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtpZighYylyZXR1cm47Yy5zZXREaXJlY3Rpb24odGhpcy5ob3QuaXNSdGwoKT8iTkUtU1ci''@;'; put 'put ''OiJOVy1TRSIpO2NvbnN0e2Zyb206YSx0bzpkfT1jO3RoaXMudW5tZXJnZVJhbmdlKGMsITApLHRoaXMubWVyZ2VSYW5nZShjKSx0aGlzLmhvdC5zZWxlY3RDZWxsKGEucm93LGEuY29sLGQucm93LGQuY29sLCExKX11bm1lcmdlU2VsZWN0aW9uKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4w''@;'; put 'put ''JiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWMpcmV0dXJuO2NvbnN0e2Zyb206YSx0bzpkfT1jO3RoaXMudW5tZXJnZVJhbmdlKGMsITApLHRoaXMuaG90LnNlbGVjdENlbGwoYS5yb3csYS5jb2wsZC5yb3cs''@;'; put 'put ''ZC5jb2wsITEpfW1lcmdlUmFuZ2UoYyl7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxkPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3QgaD1jLmdldFRvcFN0YXJ0''@;'; put 'put ''Q29ybmVyKCksZj1jLmdldEJvdHRvbUVuZENvcm5lcigpLHY9e3JvdzpoLnJvdyxjb2w6aC5jb2wscm93c3BhbjpmLnJvdy1oLnJvdysxLGNvbHNwYW46Zi5jb2wtaC5jb2wrMX0sUz1bXTtsZXQgVj1udWxsO3JldHVybiEhdGhpcy5jYW5NZXJnZVJhbmdlKHYsYSkmJih0aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYmVmb3JlTWVyZ2VDZWxscyIsYyxhKSxnbygwLHYucm93c3Bhbi0xLGRlPT57Z28oMCx2LmNvbHNwYW4tMSxwZT0+e2xldCBDZT1udWxsO1NbZGVdfHwoU1tkZV09W10pLDA9PT1kZSYmMD09PXBlP0NlPXRoaXMuaG90LmdldFNvdXJjZURhdGFBdENlbGwodGhpcy5ob3QudG9QaHlz''@;'; put 'put ''aWNhbFJvdyh2LnJvdyksdGhpcy5ob3QudG9QaHlzaWNhbENvbHVtbih2LmNvbCkpOnRoaXMuaG90LnNldENlbGxNZXRhKHYucm93K2RlLHYuY29sK3BlLCJoaWRkZW4iLCEwKSxTW2RlXVtwZV09Q2V9KX0pLHRoaXMuaG90LnNldENlbGxNZXRhKHYucm93LHYuY29sLCJzcGFubmVkIiwhMCks''@;'; put 'put ''IXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmFkZCh2KXx8KGQ/Vj1bdi5yb3csdi5jb2wsU106dGhpcy5ob3QucG9wdWxhdGVGcm9tQXJyYXkodi5yb3csdi5jb2wsUyx2b2lkIDAsdm9pZCAwLHRoaXMucGx1Z2luTmFtZSksYXx8dGhpcy5pZkNocm9tZUZvcmNlUmVwYWludCgpLHRoaXMu''@;'; put 'put ''aG90LnJ1bkhvb2tzKCJhZnRlck1lcmdlQ2VsbHMiLGMsdixhKSxWKSl9dW5tZXJnZVJhbmdlKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3QgZD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRXaXRoaW5S''@;'; put 'put ''YW5nZShjKTtkJiYodGhpcy5ob3QucnVuSG9va3MoImJlZm9yZVVubWVyZ2VDZWxscyIsYyxhKSxUbihkLGg9Pnt0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5yZW1vdmUoaC5yb3csaC5jb2wpLGdvKDAsaC5yb3dzcGFuLTEsZj0+e2dvKDAsaC5jb2xzcGFuLTEsdj0+e3RoaXMuaG90LnJl''@;'; put 'put ''bW92ZUNlbGxNZXRhKGgucm93K2YsaC5jb2wrdiwiaGlkZGVuIiksdGhpcy5ob3QucmVtb3ZlQ2VsbE1ldGEoaC5yb3crZixoLmNvbCt2LCJjb3B5YWJsZSIpfSl9KSx0aGlzLmhvdC5yZW1vdmVDZWxsTWV0YShoLnJvdyxoLmNvbCwic3Bhbm5lZCIpfSksdGhpcy5ob3QucnVuSG9va3MoImFm''@;'; put 'put ''dGVyVW5tZXJnZUNlbGxzIixjLGEpLHRoaXMuaG90LnJlbmRlcigpKX10b2dnbGVNZXJnZShjKXtjb25zdCBhPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChjLmZyb20ucm93LGMuZnJvbS5jb2wpO2Eucm93PT09Yy5mcm9tLnJvdyYmYS5jb2w9PT1jLmZyb20uY29sJiZhLnJvdyth''@;'; put 'put ''LnJvd3NwYW4tMT09PWMudG8ucm93JiZhLmNvbCthLmNvbHNwYW4tMT09PWMudG8uY29sP3RoaXMudW5tZXJnZVJhbmdlKGMpOnRoaXMubWVyZ2VTZWxlY3Rpb24oYyl9bWVyZ2UoYyxhLGQsaCl7Y29uc3QgZj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLGEpLHY9dGhpcy5ob3QuX2Ny''@;'; put 'put ''ZWF0ZUNlbGxDb29yZHMoZCxoKTt0aGlzLm1lcmdlUmFuZ2UodGhpcy5ob3QuX2NyZWF0ZUNlbGxSYW5nZShmLGYsdikpfXVubWVyZ2UoYyxhLGQsaCl7Y29uc3QgZj10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhjLGEpLHY9dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoZCxoKTt0aGlz''@;'; put 'put ''LnVubWVyZ2VSYW5nZSh0aGlzLmhvdC5fY3JlYXRlQ2VsbFJhbmdlKGYsZix2KSl9cmVnaXN0ZXJTaG9ydGN1dHMoKXt0aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikuYWRkU2hvcnRjdXQoe2tleXM6W1siQ29udHJvbCIsIm0iXV0sY2FsbGJhY2s6KCk9''@;'; put 'put ''Pntjb25zdCBkPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7ZCYmIWQuaXNTaW5nbGVIZWFkZXIoKSYmKHRoaXMudG9nZ2xlTWVyZ2UoZCksdGhpcy5ob3QucmVuZGVyKCkpfSxydW5Pbmx5SWY6ZD0+IWQuYWx0S2V5LGdyb3VwOnBwZX0pfXVucmVnaXN0ZXJTaG9ydGN1dHMoKXt0''@;'; put 'put ''aGlzLmhvdC5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91cChwcGUpfW1vZGlmeVZpZXdwb3J0Um93U3RhcnQoYyxhKXtjb25zdCBkPXRoaXMuaG90LnJvd0luZGV4TWFwcGVyLGg9ZC5nZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUlu''@;'; put 'put ''ZGV4KGMuc3RhcnRSb3cpO2ZvcihsZXQgZj0wO2Y8YTtmKz0xKXtjb25zdCB2PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChoLGYpO2lmKF9zKHYpKXtjb25zdCBTPWQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChkLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleCh2LnJvdywx''@;'; put 'put ''KSk7aWYoUzxjLnN0YXJ0Um93KXJldHVybiBjLnN0YXJ0Um93PVMsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Um93U3RhcnQoYyxhKX19fW1vZGlmeVZpZXdwb3J0Um93RW5kKGMsYSl7Y29uc3QgZD10aGlzLmhvdC5yb3dJbmRleE1hcHBlcixoPWQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJ''@;'; put 'put ''bmRleChjLmVuZFJvdyk7Zm9yKGxldCBmPTA7ZjxhO2YrPTEpe2NvbnN0IHY9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGgsZik7aWYoX3Modikpe2NvbnN0IFY9ZC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KGQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHYucm93K3Yu''@;'; put 'put ''cm93c3Bhbi0xLC0xKSk7aWYoVj5jLmVuZFJvdylyZXR1cm4gYy5lbmRSb3c9Vix2b2lkIHRoaXMubW9kaWZ5Vmlld3BvcnRSb3dFbmQoYyxhKX19fW1vZGlmeVZpZXdwb3J0Q29sdW1uU3RhcnQoYyxhKXtjb25zdCBkPXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLGg9ZC5nZXRWaXN1YWxG''@;'; put 'put ''cm9tUmVuZGVyYWJsZUluZGV4KGMuc3RhcnRDb2x1bW4pO2ZvcihsZXQgZj0wO2Y8YTtmKz0xKXtjb25zdCB2PXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChmLGgpO2lmKF9zKHYpKXtjb25zdCBTPWQuZ2V0UmVuZGVyYWJsZUZyb21WaXN1YWxJbmRleChkLmdldE5lYXJlc3ROb3RI''@;'; put 'put ''aWRkZW5JbmRleCh2LmNvbCwxKSk7aWYoUzxjLnN0YXJ0Q29sdW1uKXJldHVybiBjLnN0YXJ0Q29sdW1uPVMsdm9pZCB0aGlzLm1vZGlmeVZpZXdwb3J0Q29sdW1uU3RhcnQoYyxhKX19fW1vZGlmeVZpZXdwb3J0Q29sdW1uRW5kKGMsYSl7Y29uc3QgZD10aGlzLmhvdC5jb2x1bW5JbmRleE1h''@;'; put 'put ''cHBlcixoPWQuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChjLmVuZENvbHVtbik7Zm9yKGxldCBmPTA7ZjxhO2YrPTEpe2NvbnN0IHY9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGYsaCk7aWYoX3Modikpe2NvbnN0IFY9ZC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4''@;'; put 'put ''KGQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KHYuY29sK3YuY29sc3Bhbi0xLC0xKSk7aWYoVj5jLmVuZENvbHVtbilyZXR1cm4gYy5lbmRDb2x1bW49Vix2b2lkIHRoaXMubW9kaWZ5Vmlld3BvcnRDb2x1bW5FbmQoYyxhKX19fXRyYW5zbGF0ZU1lcmdlZENlbGxUb1JlbmRlcmFibGUoYyxh''@;'; put 'put ''LGQsaCl7Y29uc3R7cm93SW5kZXhNYXBwZXI6Zixjb2x1bW5JbmRleE1hcHBlcjp2fT10aGlzLmhvdDtsZXQgUyxWO3JldHVybiBTPTA9PT1hP2YuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGMsMSk6Zi5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYythLTEsLTEpLFY9MD09PWg/di5nZXRO''@;'; put 'put ''ZWFyZXN0Tm90SGlkZGVuSW5kZXgoZCwxKTp2LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChkK2gtMSwtMSksW2M+PTA/Zi5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KFMpOmMsZD49MD92LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoVik6ZF19fWZ1bmN0aW9uIGx1dCgpe3Ro''@;'; put 'put ''aXMuZ2VuZXJhdGVGcm9tU2V0dGluZ3ModGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtaRV0pLHRoaXMuaG90LnJlbmRlcigpfWZ1bmN0aW9uIGN1dChsKXtpZihsKXtjb25zdCBjPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLm1lcmdlZENlbGxzLGE9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5n''@;'; put 'put ''ZUxhc3QoKSxkPWEuZ2V0VG9wU3RhcnRDb3JuZXIoKSxoPWEuZ2V0Qm90dG9tRW5kQ29ybmVyKCk7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKz0xKWlmKGQucm93PT09Y1tmXS5yb3cmJmQuY29sPT09Y1tmXS5jb2wmJmgucm93PT09Y1tmXS5yb3crY1tmXS5yb3dzcGFuLTEmJmguY29sPT09''@;'; put 'put ''Y1tmXS5jb2wrY1tmXS5jb2xzcGFuLTEpcmV0dXJuITF9cmV0dXJuIGx9ZnVuY3Rpb24gdXV0KGwpe3dsKG4yLHRoaXMpLnJvdz1sLnJvdyx3bChuMix0aGlzKS5jb2w9bC5jb2x9ZnVuY3Rpb24gZHV0KGwpe2NvbnN0IGM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSx7aGlnaGxp''@;'; put 'put ''Z2h0OmF9PWMse2NvbHVtbkluZGV4TWFwcGVyOmQscm93SW5kZXhNYXBwZXI6aH09dGhpcy5ob3Q7d2wodDIsdGhpcykmJihudWxsIT09aC5nZXRSZW5kZXJhYmxlRnJvbVZpc3VhbEluZGV4KHdsKHQyLHRoaXMpLnJvdykmJihhLnJvdz13bCh0Mix0aGlzKS5yb3cpLG51bGwhPT1kLmdldFJl''@;'; put 'put ''bmRlcmFibGVGcm9tVmlzdWFsSW5kZXgod2wodDIsdGhpcykuY29sKSYmKGEuY29sPXdsKHQyLHRoaXMpLmNvbCksVUUodDIsdGhpcyxudWxsKSk7Y29uc3QgZj10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoYS5yb3csYS5jb2wpO2lmKCFmKXJldHVybjtjb25zdCB2PWYuY29sLFM9''@;'; put 'put ''Zi5jb2wrZi5jb2xzcGFuLTE7aWYobC5jb2w8MCl7Y29uc3QgcGU9ZC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYS5jb2w+PXYmJmEuY29sPD1TP3YtMTpTLC0xKTtsLmNvbD1udWxsPT09cGU/LXRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoMCxhLmNvbCk6''@;'; put 'put ''LU1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UocGUsYS5jb2wpLTEsMSl9ZWxzZSBpZihsLmNvbD4wKXtjb25zdCBwZT1kLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChhLmNvbD49diYmYS5jb2w8PVM/UysxOnYsMSk7bC5jb2w9bnVsbD09PXBl''@;'; put 'put ''P3RoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoYS5jb2wsdGhpcy5ob3QuY291bnRDb2xzKCkpOk1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoYS5jb2wscGUpLTEsMSl9Y29uc3QgVj1mLnJvdyxRPWYucm93K2Yu''@;'; put 'put ''cm93c3Bhbi0xO2lmKGwucm93PDApe2NvbnN0IHBlPWguZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KGEucm93Pj1WJiZhLnJvdzw9UT9WLTE6USwtMSk7bC5yb3c9bnVsbD09PXBlPy10aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKDAsYS5yb3cpOi1NYXRoLm1heCh0''@;'; put 'put ''aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKHBlLGEucm93KS0xLDEpfWVsc2UgaWYobC5yb3c+MCl7Y29uc3QgcGU9aC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYS5yb3c+PVYmJmEucm93PD1RP1ErMTpWLDEpO2wucm93PW51bGw9PT1wZT90aGlzLmhvdC52aWV3''@;'; put 'put ''LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKGEucm93LHRoaXMuaG90LmNvdW50Um93cygpKTpNYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKGEucm93LHBlKS0xLDEpfX1mdW5jdGlvbiBodXQobCl7Y29uc3QgYz10aGlzLmhvdC5nZXRTZWxlY3Rl''@;'; put 'put ''ZFJhbmdlTGFzdCgpLGE9Yy5jbG9uZSgpLHt0bzpkfT1jLHtjb2x1bW5JbmRleE1hcHBlcjpoLHJvd0luZGV4TWFwcGVyOmZ9PXRoaXMuaG90LHY9KFMsVik9PnthLmV4cGFuZCh0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhTLFYpKTtmb3IobGV0IFE9MDtRPHRoaXMubWVyZ2VkQ2VsbHND''@;'; put 'put ''b2xsZWN0aW9uLm1lcmdlZENlbGxzLmxlbmd0aDtRKz0xKWEuZXhwYW5kQnlSYW5nZSh0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxsc1tRXS5nZXRSYW5nZSgpKX07aWYobC5jb2w8MCl7bGV0IFM9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0U3RhcnRNb3N0Q29s''@;'; put 'put ''dW1uSW5kZXgoYyxkLmNvbCkrbC5jb2w7dihkLnJvdyxTKSwiRS1XIj09PWMuZ2V0SG9yaXpvbnRhbERpcmVjdGlvbigpJiYiRS1XIj09PWEuZ2V0SG9yaXpvbnRhbERpcmVjdGlvbigpJiYoUz1hLmdldFRvcFN0YXJ0Q29ybmVyKCkuY29sKTtjb25zdCBWPWguZ2V0TmVhcmVzdE5vdEhpZGRl''@;'; put 'put ''bkluZGV4KFMsMSk7bnVsbCE9PVYmJihsLmNvbD0tTWF0aC5tYXgodGhpcy5ob3Qudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZShWLGQuY29sKS0xLDEpKX1lbHNlIGlmKGwuY29sPjApe2xldCBTPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldEVuZE1vc3RDb2x1bW5J''@;'; put 'put ''bmRleChjLGQuY29sKStsLmNvbDt2KGQucm93LFMpLCJXLUUiPT09Yy5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJiJXLUUiPT09YS5nZXRIb3Jpem9udGFsRGlyZWN0aW9uKCkmJihTPWEuZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sKTtjb25zdCBWPWguZ2V0TmVhcmVzdE5vdEhpZGRlbklu''@;'; put 'put ''ZGV4KFMsLTEpO251bGwhPT1WJiYobC5jb2w9TWF0aC5tYXgodGhpcy5ob3Qudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZShkLmNvbCxWKS0xLDEpKX1pZihsLnJvdzwwKXtsZXQgUz10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXRUb3BNb3N0Um93SW5kZXgoYyxkLnJv''@;'; put 'put ''dykrbC5yb3c7dihTLGQuY29sKSwiUy1OIj09PWMuZ2V0VmVydGljYWxEaXJlY3Rpb24oKSYmIlMtTiI9PT1hLmdldFZlcnRpY2FsRGlyZWN0aW9uKCkmJihTPWEuZ2V0VG9wU3RhcnRDb3JuZXIoKS5yb3cpO2NvbnN0IFY9Zi5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoUywxKTtudWxsIT09''@;'; put 'put ''ViYmKGwucm93PS1NYXRoLm1heCh0aGlzLmhvdC52aWV3LmNvdW50UmVuZGVyYWJsZVJvd3NJblJhbmdlKFYsZC5yb3cpLTEsMSkpfWVsc2UgaWYobC5yb3c+MCl7bGV0IFM9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0Qm90dG9tTW9zdFJvd0luZGV4KGMsZC5yb3cpK2wucm93O3Yo''@;'; put 'put ''UyxkLmNvbCksIk4tUyI9PT1jLmdldFZlcnRpY2FsRGlyZWN0aW9uKCkmJiJOLVMiPT09YS5nZXRWZXJ0aWNhbERpcmVjdGlvbigpJiYoUz1hLmdldEJvdHRvbVN0YXJ0Q29ybmVyKCkucm93KTtjb25zdCBWPWYuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFMsLTEpO251bGwhPT1WJiYobC5y''@;'; put 'put ''b3c9TWF0aC5tYXgodGhpcy5ob3Qudmlldy5jb3VudFJlbmRlcmFibGVSb3dzSW5SYW5nZShkLnJvdyxWKS0xLDEpKX19ZnVuY3Rpb24gZnV0KCl7Y29uc3QgbD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLHtoaWdobGlnaHQ6Y309bDtpZih0aGlzLmhvdC5zZWxlY3Rpb24uaXNT''@;'; put 'put ''ZWxlY3RlZEJ5Q29sdW1uSGVhZGVyKCl8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlSb3dIZWFkZXIoKSlyZXR1cm4gdm9pZCBVRSh0Mix0aGlzLGMuY2xvbmUoKSk7Zm9yKGxldCBkPTA7ZDx0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscy5sZW5ndGg7ZCs9''@;'; put 'put ''MSlsLmV4cGFuZEJ5UmFuZ2UodGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24ubWVyZ2VkQ2VsbHNbZF0uZ2V0UmFuZ2UoKSwhMSk7Zm9yKGxldCBkPTA7ZDx0aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5tZXJnZWRDZWxscy5sZW5ndGg7ZCs9MSlsLmV4cGFuZEJ5UmFuZ2UodGhpcy5tZXJn''@;'; put 'put ''ZWRDZWxsc0NvbGxlY3Rpb24ubWVyZ2VkQ2VsbHNbZF0uZ2V0UmFuZ2UoKSwhMSk7Y29uc3QgYT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoYy5yb3csYy5jb2wpO1VFKHQyLHRoaXMsYy5jbG9uZSgpKSxhJiZjLmFzc2lnbihhKX1mdW5jdGlvbiBwdXQobCxjKXtpZihsPDB8fGM8''@;'; put 'put ''MClyZXR1cm47Y29uc3QgYT10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQobCxjKTtpZighYSlyZXR1cm47Y29uc3R7cm93OmQsY29sOmgsY29sc3BhbjpmLHJvd3NwYW46dn09YTtyZXR1cm5bZCxoLGQrdi0xLGgrZi0xXX1mdW5jdGlvbiBndXQobCl7bC5pdGVtcy5wdXNoKHtuYW1l''@;'; put 'put ''OiItLS0tLS0tLS0ifSxmdW5jdGlvbiBYY3QobCl7cmV0dXJue2tleToibWVyZ2VDZWxscyIsbmFtZSgpe2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RlZExhc3QoKTtpZihjKXtjb25zdCBhPWwubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChjWzBdLGNbMV0pO2lmKGEucm93PT09Y1swXSYmYS5j''@;'; put 'put ''b2w9PT1jWzFdJiZhLnJvdythLnJvd3NwYW4tMT09PWNbMl0mJmEuY29sK2EuY29sc3Bhbi0xPT09Y1szXSlyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKFFHKX1yZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKEpHKX0sY2FsbGJhY2soKXtjb25zdCBjPXRoaXMuZ2V0U2Vs''@;'; put 'put ''ZWN0ZWRSYW5nZUxhc3QoKTtpZighYylyZXR1cm47Yy5zZXREaXJlY3Rpb24odGhpcy5pc1J0bCgpPyJORS1TVyI6Ik5XLVNFIik7Y29uc3R7ZnJvbTphLHRvOmR9PWM7bC50b2dnbGVNZXJnZShjKSx0aGlzLnNlbGVjdENlbGwoYS5yb3csYS5jb2wsZC5yb3csZC5jb2wsITEpfSxkaXNhYmxl''@;'; put 'put ''ZCgpe2NvbnN0IGM9dGhpcy5nZXRTZWxlY3RlZExhc3QoKTtyZXR1cm4hY3x8SjMuaXNTaW5nbGVDZWxsKHtyb3c6Y1swXSxjb2w6Y1sxXSxyb3dzcGFuOmNbMl0tY1swXSsxLGNvbHNwYW46Y1szXS1jWzFdKzF9KXx8dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZEJ5Q29ybmVyKCl9LGhpZGRl''@;'; put 'put ''bjohMX19KHRoaXMpKX1mdW5jdGlvbiBtdXQobCxjLGEpe2NvbnN0IGQ9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0KGMsYSksaD1fcyhkKT9IaChkKTp2b2lkIDA7aWYoX3MoaCkpe2NvbnN0e3Jvd0luZGV4TWFwcGVyOmYsY29sdW1uSW5kZXhNYXBwZXI6dn09dGhpcy5ob3Qse3Jv''@;'; put 'put ''dzpTLGNvbDpWLGNvbHNwYW46USxyb3dzcGFuOmRlfT1oLFtwZSxDZV09dGhpcy50cmFuc2xhdGVNZXJnZWRDZWxsVG9SZW5kZXJhYmxlKFMsZGUsVixRKSxldD1wZS1mLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoYykrMSxkdD1DZS12LmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5k''@;'; put 'put ''ZXgoYSkrMTtoLnJvdz1mLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChoLnJvdywxKSxoLmNvbD12LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChoLmNvbCwxKSxoLnJvd3NwYW49TWF0aC5taW4oaC5yb3dzcGFuLGV0KSxoLmNvbHNwYW49TWF0aC5taW4oaC5jb2xzcGFuLGR0KX12WChsLGgs''@;'; put 'put ''YyxhKX1mdW5jdGlvbiBncGUoKXtVRSh0Mix0aGlzLG51bGwpfWZ1bmN0aW9uIHZ1dCgpe2lmKHdsKHQyLHRoaXMpLmlzQ2VsbCgpKXJldHVybjtjb25zdCBsPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYz1sLmdldFZlcnRpY2FsRGlyZWN0aW9uKCksYT1sLmdldEhvcml6b250''@;'; put 'put ''YWxEaXJlY3Rpb24oKSxkPXdsKHQyLHRoaXMpLmNsb25lKCkubm9ybWFsaXplKCk7d2wocnAsdGhpcykuc2V0QWN0aXZlTm9kZShkLnJvdyxkLmNvbCksd2wobjIsdGhpcykucm93PjB8fHdsKG4yLHRoaXMpLmNvbD4wP3dsKHJwLHRoaXMpLnNldFByZXZOb2RlQXNBY3RpdmUoKTooIkUtVyI9''@;'; put 'put ''PT1hJiZ3bChuMix0aGlzKS5jb2w8MHx8IlMtTiI9PT1jJiZ3bChuMix0aGlzKS5yb3c8MCkmJndsKHJwLHRoaXMpLnNldE5leHROb2RlQXNBY3RpdmUoKX1mdW5jdGlvbiBfdXQobCxjKXtjb25zdCBhPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkse2NvbHVtbkluZGV4TWFwcGVy''@;'; put 'put ''OmQscm93SW5kZXhNYXBwZXI6aH09dGhpcy5ob3Q7bGV0IGY9bnVsbCx2PW51bGw7aWYod2wobjIsdGhpcykuY29sPDApe2NvbnN0e3Jvd0VuZDpTLGNvbEVuZDpWfT13bChycCx0aGlzKS5nZXRQcmV2SG9yaXpvbnRhbE5vZGUoKTt2PWQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFYsLTEp''@;'; put 'put ''LGY9aC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoUywtMSl9ZWxzZSBpZih3bChuMix0aGlzKS5jb2w+MCl7Y29uc3R7cm93U3RhcnQ6Uyxjb2xTdGFydDpWfT13bChycCx0aGlzKS5nZXROZXh0SG9yaXpvbnRhbE5vZGUoKTt2PWQuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFYsMSksZj1o''@;'; put 'put ''LmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChTLDEpfWVsc2UgaWYod2wobjIsdGhpcykucm93PDApe2NvbnN0e3Jvd0VuZDpTLGNvbEVuZDpWfT13bChycCx0aGlzKS5nZXRQcmV2VmVydGljYWxOb2RlKCk7dj1kLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChWLC0xKSxmPWguZ2V0TmVhcmVz''@;'; put 'put ''dE5vdEhpZGRlbkluZGV4KFMsLTEpfWVsc2UgaWYod2wobjIsdGhpcykucm93PjApe2NvbnN0e3Jvd1N0YXJ0OlMsY29sU3RhcnQ6Vn09d2wocnAsdGhpcykuZ2V0TmV4dFZlcnRpY2FsTm9kZSgpO3Y9ZC5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoViwxKSxmPWguZ2V0TmVhcmVzdE5vdEhp''@;'; put 'put ''ZGRlbkluZGV4KFMsMSl9aWYobnVsbCE9PWZ8fG51bGwhPT12KXtjb25zdCBTPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGYsdiksVj10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5nZXQoUy5yb3csUy5jb2wpLFE9dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGb2N1cygp''@;'; put 'put ''O2w9Uy5yb3csYz1TLmNvbCxhLmhpZ2hsaWdodC5hc3NpZ24oVj97cm93OnRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmdldE5lYXJlc3ROb3RIaWRkZW5JbmRleChWLnJvdywxKSxjb2w6dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TmVhcmVzdE5vdEhpZGRlbkluZGV4KFYuY29sLDEp''@;'; put 'put ''fTpTKSxRLmNsZWFyKCksUS5hZGQoUykuY29tbWl0KCl9d2wocnAsdGhpcykuc2V0QWN0aXZlTm9kZShsLGMpLFVFKG4yLHRoaXMse3JvdzowLGNvbDowfSl9ZnVuY3Rpb24gYnV0KCl7dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKS5pc0hlYWRlcigpfHx3bChycCx0aGlzKS5idWls''@;'; put 'put ''ZEZvY3VzT3JkZXIodGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl9ZnVuY3Rpb24geXV0KGwsYyxhKXtjb25zdCBkPXRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldChsLGMpO2QmJihkLnJvdyE9PWx8fGQuY29sIT09Yz9hLmNvcHlhYmxlPSExOihhLnJvd3NwYW49ZC5yb3dz''@;'; put 'put ''cGFuLGEuY29sc3Bhbj1kLmNvbHNwYW4pKX1mdW5jdGlvbiB3dXQobCl7Y29uc3QgYz10aGlzLmhvdC5jb3VudENvbHMoKTt0aGlzLm1vZGlmeVZpZXdwb3J0Um93U3RhcnQobCxjKSx0aGlzLm1vZGlmeVZpZXdwb3J0Um93RW5kKGwsYyl9ZnVuY3Rpb24gQ3V0KGwpe2NvbnN0IGM9dGhpcy5o''@;'; put 'put ''b3QuY291bnRSb3dzKCk7dGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtblN0YXJ0KGwsYyksdGhpcy5tb2RpZnlWaWV3cG9ydENvbHVtbkVuZChsLGMpfWZ1bmN0aW9uIFN1dChsLGMpe3RoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuY29ycmVjdFNlbGVjdGlvbkFyZWFTaXplKGMpO2NvbnN0IGE9''@;'; put 'put ''dGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5nZXREaXJlY3Rpb24oYyxsKTtsZXQgZD1sO2lmKHRoaXMuYXV0b2ZpbGxDYWxjdWxhdGlvbnMuZHJhZ0FyZWFPdmVybGFwc0NvbGxlY3Rpb25zKGMsZCxhKSlyZXR1cm4gZD1jLGQ7Y29uc3QgaD10aGlzLm1lcmdlZENlbGxzQ29sbGVjdGlvbi5n''@;'; put 'put ''ZXRXaXRoaW5SYW5nZSh7ZnJvbTp7cm93OmNbMF0sY29sOmNbMV19LHRvOntyb3c6Y1syXSxjb2w6Y1szXX19KTtyZXR1cm4gaCYmKGQ9dGhpcy5hdXRvZmlsbENhbGN1bGF0aW9ucy5zbmFwRHJhZ0FyZWEoYyxkLGEsaCkpLGR9ZnVuY3Rpb24gTXV0KGwsYyl7dGhpcy5tZXJnZWRDZWxsc0Nv''@;'; put 'put ''bGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygicmlnaHQiLGwsYyl9ZnVuY3Rpb24geHV0KGwsYyl7dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygibGVmdCIsbCxjKX1mdW5jdGlvbiBFdXQobCxjLGEpeyJhdXRvIiE9PWEmJnRoaXMubWVyZ2VkQ2VsbHNDb2xs''@;'; put 'put ''ZWN0aW9uLnNoaWZ0Q29sbGVjdGlvbnMoImRvd24iLGwsYyl9ZnVuY3Rpb24gVHV0KGwsYyl7dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uc2hpZnRDb2xsZWN0aW9ucygidXAiLGwsYyl9ZnVuY3Rpb24ga3V0KGwsYyl7IkF1dG9maWxsLmZpbGwiPT09YyYmdGhpcy5hdXRvZmlsbENhbGN1''@;'; put 'put ''bGF0aW9ucy5yZWNyZWF0ZUFmdGVyRGF0YVBvcHVsYXRpb24obCl9ZnVuY3Rpb24gQXV0KGwsYyl7aWYoYyYmImFyZWEiPT09Yyl7Y29uc3QgYT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpO1RuKHRoaXMubWVyZ2VkQ2VsbHNDb2xsZWN0aW9uLmdldFdpdGhpblJhbmdlKGEpLGg9''@;'; put 'put ''PnthLmdldEJvdHRvbUVuZENvcm5lcigpLnJvdz09PWguZ2V0TGFzdFJvdygpJiZhLmdldEJvdHRvbUVuZENvcm5lcigpLmNvbD09PWguZ2V0TGFzdENvbHVtbigpJiYobFsyXT1oLnJvdyxsWzNdPWguY29sKX0pfX1mdW5jdGlvbiBEdXQobCxjLGEsZCl7aWYoYSlyZXR1cm4gdGhpcy5zZWxl''@;'; put 'put ''Y3Rpb25DYWxjdWxhdGlvbnMuZ2V0U2VsZWN0ZWRNZXJnZWRDZWxsQ2xhc3NOYW1lKGwsYyxhLGQpfWZ1bmN0aW9uIEl1dCgpe3JldHVybiB0aGlzLnNlbGVjdGlvbkNhbGN1bGF0aW9ucy5nZXRTZWxlY3RlZE1lcmdlZENlbGxDbGFzc05hbWVUb1JlbW92ZSgpfWZ1bmN0aW9uIFJ1dChsLGMs''@;'; put 'put ''YSxkKXtpZighKGQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSlyZXR1cm47Y29uc3QgaD10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGY9dGhpcy5tZXJnZWRDZWxsc0NvbGxlY3Rpb24uZ2V0QnlSYW5nZShoKTtpZighZilyZXR1cm47Y29uc3Qgdj10aGlzLmhvdC5fY3JlYXRlQ2Vs''@;'; put 'put ''bENvb3JkcyhmLnJvdyxmLmNvbCksUz10aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhmLnJvdytmLnJvd3NwYW4tMSxmLmNvbCtmLmNvbHNwYW4tMSk7cmV0dXJuIDA9PT10aGlzLmhvdC5zZWxlY3Rpb24uZ2V0TGF5ZXJMZXZlbCgpJiZoLmlzRXF1YWwodGhpcy5ob3QuX2NyZWF0ZUNlbGxS''@;'; put 'put ''YW5nZSh2LHYsUykpfWZ1bmN0aW9uIG1wZSgpe2lsKE5hYFBsdWdpbnMgXGBjb2x1bW5Tb3J0aW5nXGAgYW5kIFxgbXVsdGlDb2x1bW5Tb3J0aW5nXGAgc2hvdWxkIG5vdCBiZSBlbmFibGVkIHNpbXVsdGFuZW91c2x5LiAKICAgIE9ubHkgXGBtdWx0aUNvbHVtblNvcnRpbmdcYCB3aWxsIHdv''@;'; put 'put ''cmsuYCl9Y29uc3QgVVA9Im11bHRpQ29sdW1uU29ydGluZyIsX3BlPSJjb2x1bW5Tb3J0aW5nIixicGU9VVA7WTJlKFVQLGZ1bmN0aW9uIEx1dChsLGMpe3JldHVybiBmdW5jdGlvbihhLGQpe2NvbnN0WywuLi5oXT1hLFssLi4uZl09ZDtyZXR1cm4gZnVuY3Rpb24gdihTKXtjb25zdCBWPWxb''@;'; put 'put ''U10sUT1jW1NdLGRlPWhbU10scGU9ZltTXSxDZT1RLm11bHRpQ29sdW1uU29ydGluZyxZZT0oQ2UuY29tcGFyZUZ1bmN0aW9uRmFjdG9yeT9DZS5jb21wYXJlRnVuY3Rpb25GYWN0b3J5OlcyZShRLnR5cGUpKShWLFEsQ2UpKGRlLHBlKTtpZihZZT09PXozKXtjb25zdCBldD1TKzE7aWYodHlw''@;'; put 'put ''ZW9mIGNbZXRdPCJ1IilyZXR1cm4gdihldCl9cmV0dXJuIFllfSgwKX19KTtjbGFzcyBCdXQgZXh0ZW5kcyByZmV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIEZ1dChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gTnV0KGwpe3ZhciBjPWZ1bmN0aW9uIEh1dChs''@;'; put 'put ''LGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBA''@;'; put 'put ''dG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMs''@;'; put 'put ''e3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywicGx1Z2luS2V5IixVUCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIFVQfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDE3MH1pc0VuYWJs''@;'; put 'put ''ZWQoKXtyZXR1cm4gc3VwZXIuaXNFbmFibGVkKCl9ZW5hYmxlUGx1Z2luKCl7IXRoaXMuZW5hYmxlZCYmdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVt0aGlzLnBsdWdpbktleV0mJnRoaXMuaG90LmdldFNldHRpbmdzKClbX3BlXSYmbXBlKCksc3VwZXIuZW5hYmxlUGx1Z2luKCl9ZGlzYWJsZVBs''@;'; put 'put ''dWdpbigpe3N1cGVyLmRpc2FibGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygpe3N1cGVyLnJlZ2lzdGVyU2hvcnRjdXRzKCksdGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLmFkZFNob3J0Y3V0KHtrZXlzOltbIlNoaWZ0IiwiRW50ZXIiXV0sY2Fs''@;'; put 'put ''bGJhY2s6KCk9Pntjb25zdHtoaWdobGlnaHQ6Y309dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKTtyZXR1cm4tMT09PWMucm93JiZjLmNvbD49MCYmdGhpcy5zb3J0KHRoaXMuZ2V0TmV4dFNvcnRDb25maWcoYy5jb2wsVE8pKSwhMX0scnVuT25seUlmOigpPT57dmFyIGMsYTtjb25z''@;'; put 'put ''dCBkPW51bGw9PT0oYz10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWdobGlnaHQ7cmV0dXJuIGQmJihudWxsPT09KGE9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuaXNTaW5nbGUoKSkm''@;'; put 'put ''JnRoaXMuaG90LnNlbGVjdGlvbi5pc0NlbGxWaXNpYmxlKGQpJiZkLmlzSGVhZGVyKCl9LHJlbGF0aXZlVG9Hcm91cDpZbSxwb3NpdGlvbjoiYmVmb3JlIixncm91cDpicGV9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7c3VwZXIudW5yZWdpc3RlclNob3J0Y3V0cygpLHRoaXMuaG90LmdldFNo''@;'; put 'put ''b3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5yZW1vdmVTaG9ydGN1dHNCeUdyb3VwKGJwZSl9c29ydChjKXtzdXBlci5zb3J0KGMpfWNsZWFyU29ydCgpe3N1cGVyLmNsZWFyU29ydCgpfWlzU29ydGVkKCl7cmV0dXJuIHN1cGVyLmlzU29ydGVkKCl9Z2V0U29ydENvbmZpZyhj''@;'; put 'put ''KXtyZXR1cm4gc3VwZXIuZ2V0U29ydENvbmZpZyhjKX1zZXRTb3J0Q29uZmlnKGMpe3N1cGVyLnNldFNvcnRDb25maWcoYyl9Z2V0Tm9ybWFsaXplZFNvcnRDb25maWdzKCl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3Jl''@;'; put 'put ''dHVybiBBcnJheS5pc0FycmF5KGMpP2M6W2NdfXVwZGF0ZUhlYWRlckNsYXNzZXMoYyl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYT4xP2EtMTowKSxoPTE7aDxhO2grKylkW2gtMV09YXJndW1lbnRzW2hdO3N1cGVyLnVwZGF0ZUhlYWRlckNsYXNzZXMoYywuLi5k''@;'; put 'put ''KSxscyhjLGZ1bmN0aW9uIFB1dChsKXtjb25zdCBjPWwuY2xhc3NOYW1lLnNwbGl0KCIgIiksYT1uZXcgUmVnRXhwKCJec29ydC1bMC05XXsxLDJ9JCIpO3JldHVybiBjLmZpbHRlcihkPT5hLnRlc3QoZCkpfShjKSksITEhPT10aGlzLmVuYWJsZWQmJm1pKGMsZnVuY3Rpb24gT3V0KGwsYyxh''@;'; put 'put ''KXtjb25zdCBkPVtdO3JldHVybiExPT09YXx8bC5pc0NvbHVtblNvcnRlZChjKSYmbC5nZXROdW1iZXJPZlNvcnRlZENvbHVtbnMoKT4xJiZkLnB1c2goYHNvcnQtJHtsLmdldEluZGV4T2ZDb2x1bW5JblNvcnRRdWV1ZShjKSsxfWApLGR9KC4uLmQpKX1vblVwZGF0ZVNldHRpbmdzKGMpe3Ro''@;'; put 'put ''aXMuaG90LmdldFNldHRpbmdzKClbdGhpcy5wbHVnaW5LZXldJiZ0aGlzLmhvdC5nZXRTZXR0aW5ncygpW19wZV0mJm1wZSgpLHN1cGVyLm9uVXBkYXRlU2V0dGluZ3MoYyl9b25BZnRlck9uQ2VsbE1vdXNlRG93bihjLGEpeyExIT09cXEoYS5yb3csYS5jb2wsYykmJnRoaXMud2FzQ2xpY2th''@;'; put 'put ''YmxlSGVhZGVyQ2xpY2tlZChjLGEuY29sKSYmKHRoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmlzQ3RybFByZXNzZWQoKT8odGhpcy5ob3QuZGVzZWxlY3RDZWxsKCksdGhpcy5ob3Quc2VsZWN0Q29sdW1ucyhhLmNvbCksdGhpcy5zb3J0KHRoaXMuZ2V0TmV4dFNvcnRDb25maWcoYS5j''@;'; put 'put ''b2wsVE8pKSk6dGhpcy5zb3J0KHRoaXMuZ2V0Q29sdW1uTmV4dENvbmZpZyhhLmNvbCkpKX19ZnVuY3Rpb24geXBlKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBqdXQobCl7dmFyIGM9ZnVuY3Rpb24genV0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1s''@;'; put 'put ''W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1y''@;'; put 'put ''ZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJs''@;'; put 'put ''ZTohMH0pOmxbY109YSxsfWNsYXNzIFl1dCBleHRlbmRzIGRhe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx5cGUodGhpcywiZHJhZ2dlZCIsW10pLHlwZSh0aGlzLCJsYXN0U2V0Q2VsbCIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIm11bHRpcGxlU2Vs''@;'; put 'put ''ZWN0aW9uSGFuZGxlcyJ9c3RhdGljIGdldCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMTYwfWlzRW5hYmxlZCgpe3JldHVybiBUNCgpfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxlZHx8KHRoaXMucmVnaXN0ZXJMaXN0ZW5lcnMoKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9cmVnaXN0ZXJM''@;'; put 'put ''aXN0ZW5lcnMoKXtjb25zdCBjPXRoaXMse3Jvb3RFbGVtZW50OmF9PXRoaXMuaG90O2Z1bmN0aW9uIGQoaCl7aWYoMT09PWMuZHJhZ2dlZC5sZW5ndGgpcmV0dXJuIGMuZHJhZ2dlZC5zcGxpY2UoMCxjLmRyYWdnZWQubGVuZ3RoKSwhMDtjb25zdCBmPWMuZHJhZ2dlZC5pbmRleE9mKGgpO2lm''@;'; put 'put ''KC0xPT09ZilyZXR1cm4hMTswPT09Zj9jLmRyYWdnZWQ9Yy5kcmFnZ2VkLnNsaWNlKDAsMSk6MT09PWYmJihjLmRyYWdnZWQ9Yy5kcmFnZ2VkLnNsaWNlKC0xKSl9dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihhLCJ0b3VjaHN0YXJ0IixoPT57bGV0IGY7cmV0dXJuIFlvKGgu''@;'; put 'put ''dGFyZ2V0LCJ0b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhmPWMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCksYy5kcmFnZ2VkLnB1c2goInRvcCIpLGMudG91Y2hTdGFydFJhbmdlPXt3aWR0aDpmLmdldFdpZHRoKCksaGVpZ2h0OmYuZ2V0SGVpZ2h0KCksZGlyZWN0aW9uOmYuZ2V0''@;'; put 'put ''RGlyZWN0aW9uKCl9LGgucHJldmVudERlZmF1bHQoKSwhMSk6WW8oaC50YXJnZXQsImJvdHRvbVNlbGVjdGlvbkhhbmRsZS1IaXRBcmVhIik/KGY9Yy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxjLmRyYWdnZWQucHVzaCgiYm90dG9tIiksYy50b3VjaFN0YXJ0UmFuZ2U9e3dpZHRoOmYu''@;'; put 'put ''Z2V0V2lkdGgoKSxoZWlnaHQ6Zi5nZXRIZWlnaHQoKSxkaXJlY3Rpb246Zi5nZXREaXJlY3Rpb24oKX0saC5wcmV2ZW50RGVmYXVsdCgpLCExKTp2b2lkIDB9KSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEsInRvdWNoZW5kIixoPT5ZbyhoLnRhcmdldCwidG9wU2VsZWN0''@;'; put 'put ''aW9uSGFuZGxlLUhpdEFyZWEiKT8oZC5jYWxsKGMsInRvcCIpLGMudG91Y2hTdGFydFJhbmdlPXZvaWQgMCxoLnByZXZlbnREZWZhdWx0KCksITEpOllvKGgudGFyZ2V0LCJib3R0b21TZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSIpPyhkLmNhbGwoYywiYm90dG9tIiksYy50b3VjaFN0YXJ0UmFu''@;'; put 'put ''Z2U9dm9pZCAwLGgucHJldmVudERlZmF1bHQoKSwhMSk6dm9pZCAwKSx0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKGEsInRvdWNobW92ZSIsaD0+e2NvbnN0e3Jvb3REb2N1bWVudDpmfT10aGlzLmhvdDtsZXQgdixTLFYsUSxkZSxwZTtpZigwPT09Yy5kcmFnZ2VkLmxlbmd0''@;'; put 'put ''aClyZXR1cm47Y29uc3QgQ2U9Zi5lbGVtZW50RnJvbVBvaW50KGgudG91Y2hlc1swXS5jbGllbnRYLGgudG91Y2hlc1swXS5jbGllbnRZKTshQ2V8fENlPT09Yy5sYXN0U2V0Q2VsbHx8KCgiVEQiPT09Q2Uubm9kZU5hbWV8fCJUSCI9PT1DZS5ub2RlTmFtZSkmJih2PWMuaG90LmdldENvb3Jk''@;'; put 'put ''cyhDZSksLTE9PT12LmNvbCYmKHYuY29sPTApLFM9Yy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxWPVMuZ2V0V2lkdGgoKSxRPVMuZ2V0SGVpZ2h0KCksZGU9Uy5nZXREaXJlY3Rpb24oKSwxPT09ViYmMT09PVEmJmMuaG90LnNlbGVjdGlvbi5zZXRSYW5nZUVuZCh2KSxwZT1jLmdldEN1''@;'; put 'put ''cnJlbnRSYW5nZUNvb3JkcyhTLHYsYy50b3VjaFN0YXJ0UmFuZ2UuZGlyZWN0aW9uLGRlLGMuZHJhZ2dlZFswXSksbnVsbCE9PXBlLnN0YXJ0JiZjLmhvdC5zZWxlY3Rpb24uc2V0UmFuZ2VTdGFydChwZS5zdGFydCksYy5ob3Quc2VsZWN0aW9uLnNldFJhbmdlRW5kKHBlLmVuZCksYy5sYXN0''@;'; put 'put ''U2V0Q2VsbD1DZSksaC5wcmV2ZW50RGVmYXVsdCgpKX0pfWdldEN1cnJlbnRSYW5nZUNvb3JkcyhjLGEsZCxoLGYpe2NvbnN0IHY9Yy5nZXRUb3BTdGFydENvcm5lcigpLFM9Yy5nZXRCb3R0b21FbmRDb3JuZXIoKSxWPWMuZ2V0Qm90dG9tU3RhcnRDb3JuZXIoKSxRPWMuZ2V0VG9wRW5kQ29y''@;'; put 'put ''bmVyKCk7bGV0IGRlPXtzdGFydDpudWxsLGVuZDpudWxsfTtzd2l0Y2goZCl7Y2FzZSJORS1TVyI6c3dpdGNoKGgpe2Nhc2UiTkUtU1ciOmNhc2UiTlctU0UiOmRlPSJ0b3AiPT09Zj97c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYS5yb3csYy5oaWdobGlnaHQuY29sKSxlbmQ6''@;'; put 'put ''dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoVi5yb3csYS5jb2wpfTp7c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYy5oaWdobGlnaHQucm93LGEuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYS5yb3csdi5jb2wpfTticmVhaztjYXNlIlNFLU5XIjoiYm90''@;'; put 'put ''dG9tIj09PWYmJihkZT17c3RhcnQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoUy5yb3csYS5jb2wpLGVuZDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdyx2LmNvbCl9KX1icmVhaztjYXNlIk5XLVNFIjpzd2l0Y2goaCl7Y2FzZSJORS1TVyI6InRvcCI9PT1mP2RlPXtzdGFy''@;'; put 'put ''dDphLGVuZDpWfTpkZS5lbmQ9YTticmVhaztjYXNlIk5XLVNFIjoidG9wIj09PWY/ZGU9e3N0YXJ0OmEsZW5kOlN9OmRlLmVuZD1hO2JyZWFrO2Nhc2UiU0UtTlciOiJ0b3AiPT09Zj9kZT17c3RhcnQ6YSxlbmQ6dn06ZGUuZW5kPWE7YnJlYWs7Y2FzZSJTVy1ORSI6InRvcCI9PT1mP2RlPXtz''@;'; put 'put ''dGFydDphLGVuZDpRfTpkZS5lbmQ9YX1icmVhaztjYXNlIlNXLU5FIjpzd2l0Y2goaCl7Y2FzZSJOVy1TRSI6ZGU9ImJvdHRvbSI9PT1mP3tzdGFydDp0aGlzLmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhhLnJvdyx2LmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKFYucm93LGEu''@;'; put 'put ''Y29sKX06e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKHYucm93LGEuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHMoYS5yb3csUy5jb2wpfTticmVhaztjYXNlIlNXLU5FIjpkZT0idG9wIj09PWY/e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMu''@;'; put 'put ''aGlnaGxpZ2h0LnJvdyxhLmNvbCksZW5kOnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGEucm93LFMuY29sKX06e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGEucm93LHYuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModi5yb3csYS5jb2wpfTticmVhaztj''@;'; put 'put ''YXNlIlNFLU5XIjoiYm90dG9tIj09PWY/ZGU9e3N0YXJ0OnRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGEucm93LFEuY29sKSxlbmQ6dGhpcy5ob3QuX2NyZWF0ZUNlbGxDb29yZHModi5yb3csYS5jb2wpfToidG9wIj09PWYmJihkZT17c3RhcnQ6VixlbmQ6YX0pfWJyZWFrO2Nhc2UiU0Ut''@;'; put 'put ''TlciOnN3aXRjaChoKXtjYXNlIk5XLVNFIjpjYXNlIk5FLVNXIjpjYXNlIlNXLU5FIjoidG9wIj09PWYmJihkZS5lbmQ9YSk7YnJlYWs7Y2FzZSJTRS1OVyI6InRvcCI9PT1mP2RlLmVuZD1hOmRlPXtzdGFydDphLGVuZDp2fX19cmV0dXJuIGRlfWlzRHJhZ2dlZCgpe3JldHVybiB0aGlzLmRy''@;'; put 'put ''YWdnZWQubGVuZ3RoPjB9fWZ1bmN0aW9uIEVYKCl7bGV0e2xhYmVsOmw9IiIsY29sc3BhbjpjPTEsb3JpZ0NvbHNwYW46YT0xLGNvbGxhcHNpYmxlOmQ9ITEsY3Jvc3NIaWRkZW5Db2x1bW5zOmg9W10saXNDb2xsYXBzZWQ6Zj0hMSxpc0hpZGRlbjp2PSExLGlzUm9vdDpTPSExLGlzUGxhY2Vo''@;'; put 'put ''b2xkZXI6Vj0hMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybntsYWJlbDpsLGNvbHNwYW46YyxvcmlnQ29sc3BhbjphLGNvbGxhcHNpYmxlOmQsaXNDb2xsYXBzZWQ6Zixjcm9zc0hpZGRlbkNvbHVtbnM6aCxpc0hpZGRl''@;'; put 'put ''bjp2LGlzUm9vdDpTLGlzUGxhY2Vob2xkZXI6Vn19ZnVuY3Rpb24gVFgobCxjLGEpeyhmdW5jdGlvbiBHdXQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIp''@;'; put 'put ''fSkobCxjKSxjLnNldChsLGEpfWZ1bmN0aW9uIFNmKGwsYyl7cmV0dXJuIGwuZ2V0KENwZShsLGMpKX1mdW5jdGlvbiBZRShsLGMsYSl7cmV0dXJuIGwuc2V0KENwZShsLGMpLGEpLGF9ZnVuY3Rpb24gQ3BlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSly''@;'; put 'put ''ZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25zdCBTcGU9WyJsYWJlbCIsImNvbGxhcHNpYmxlIl07dmFyIEo0PW5ldyBXZWFrTWFwLFA3PW5ldyBXZWFrTWFw''@;'; put 'put ''LGtYPW5ldyBXZWFrTWFwO2NsYXNzICR1dHtjb25zdHJ1Y3Rvcigpe1RYKHRoaXMsSjQsW10pLFRYKHRoaXMsUDcsMCksVFgodGhpcyxrWCwxLzApfXNldENvbHVtbnNMaW1pdChjKXtZRShrWCx0aGlzLGMpfXNldERhdGEoKXtZRShKNCx0aGlzLGZ1bmN0aW9uIFd1dChsKXtsZXQgYz1hcmd1''@;'; put 'put ''bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MS8wO2NvbnN0IGE9W107aWYoMD09PWMpcmV0dXJuIGE7VG4obCxoPT57Y29uc3QgZj1bXTtsZXQgdj0wO2EucHVzaChmKSxUbihoLFM9Pntjb25zdCBWPUVYKCk7aWYoX3MoUykpe2NvbnN0e2xhYmVs''@;'; put 'put ''OmRlLGNvbHNwYW46cGV9PVM7Vi5sYWJlbD1pYyhkZSksIm51bWJlciI9PXR5cGVvZiBwZSYmcGU+MSYmKFYuY29sc3Bhbj1wZSxWLm9yaWdDb2xzcGFuPXBlKX1lbHNlIFYubGFiZWw9aWMoUyk7dis9Vi5vcmlnQ29sc3BhbjtsZXQgUT0hMTtpZih2Pj1jJiYoVi5jb2xzcGFuPVYub3JpZ0Nv''@;'; put 'put ''bHNwYW4tKHYtYyksVi5vcmlnQ29sc3Bhbj1WLmNvbHNwYW4sUT0hMCksZi5wdXNoKFYpLFYuY29sc3Bhbj4xKWZvcihsZXQgZGU9MDtkZTxWLmNvbHNwYW4tMTtkZSsrKWYucHVzaCh7bGFiZWw6IiIsaXNQbGFjZWhvbGRlcjohMH0pO3JldHVybiFRfSl9KTtjb25zdCBkPU1hdGgubWF4KC4u''@;'; put 'put ''LnhzKGEsaD0+aC5sZW5ndGgpKTtyZXR1cm4gVG4oYSxoPT57aWYoaC5sZW5ndGg8ZCl7Y29uc3QgZj14cyhuZXcgQXJyYXkoZC1oLmxlbmd0aCksKCk9PkVYKCkpO2guc3BsaWNlKGgubGVuZ3RoLDAsLi4uZil9fSksYX0oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNb''@;'; put 'put ''MF0/YXJndW1lbnRzWzBdOltdLFNmKGtYLHRoaXMpKSksWUUoUDcsdGhpcyxTZihKNCx0aGlzKS5sZW5ndGgpfWdldERhdGEoKXtyZXR1cm4gU2YoSjQsdGhpcyl9bWVyZ2VXaXRoKGMpe1RuKGMsYT0+e2xldHtyb3c6ZCxjb2w6aCwuLi5mfT1hO2NvbnN0IHY9dGhpcy5nZXRIZWFkZXJTZXR0''@;'; put 'put ''aW5ncyhkLGgpO251bGwhPT12JiZGYyh2LGYsU3BlKX0pfW1hcChjKXtUbihTZihKNCx0aGlzKSxhPT57VG4oYSxkPT57Y29uc3QgaD1jKHsuLi5kfSk7X3MoaCkmJkZjKGQsaCxTcGUpfSl9KX1nZXRIZWFkZXJTZXR0aW5ncyhjLGEpe3ZhciBkO2lmKGM+PVNmKFA3LHRoaXMpfHxjPDApcmV0''@;'; put 'put ''dXJuIG51bGw7Y29uc3QgaD1TZihKNCx0aGlzKVtjXTtyZXR1cm4hMT09PUFycmF5LmlzQXJyYXkoaCl8fGE+PWgubGVuZ3RoP251bGw6bnVsbCE9PShkPWhbYV0pJiZ2b2lkIDAhPT1kP2Q6bnVsbH1nZXRIZWFkZXJzU2V0dGluZ3MoYyxhKXtsZXQgZD1hcmd1bWVudHMubGVuZ3RoPjImJnZv''@;'; put 'put ''aWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTtjb25zdCBoPVtdO2lmKGM+PVNmKFA3LHRoaXMpfHxjPDApcmV0dXJuIGg7Y29uc3QgZj1TZihKNCx0aGlzKVtjXTtsZXQgdj0wO2ZvcihsZXQgUz1hO1M8Zi5sZW5ndGg7UysrKXtjb25zdCBWPWZbU107aWYoVi5pc1BsYWNlaG9s''@;'; put 'put ''ZGVyKXRocm93IG5ldyBFcnJvcigiVGhlIGZpcnN0IGNvbHVtbiBzZXR0aW5ncyBjYW5ub3Qgb3ZlcmxhcCB0aGUgb3RoZXIgaGVhZGVyIGxheWVycyIpO2lmKHYrPVYuY29sc3BhbixoLnB1c2goViksVi5jb2xzcGFuPjEmJihTKz1WLmNvbHNwYW4tMSksdj09PWQpYnJlYWs7aWYodj5kKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVGhlIGxhc3QgY29sdW1uIHNldHRpbmdzIGNhbm5vdCBvdmVybGFwIHRoZSBvdGhlciBoZWFkZXIgbGF5ZXJzIil9cmV0dXJuIGh9Z2V0TGF5ZXJzQ291bnQoKXtyZXR1cm4gU2YoUDcsdGhpcyl9Z2V0Q29sdW1uc0NvdW50KCl7cmV0dXJuIFNmKFA3LHRoaXMpPjA/''@;'; put 'put ''U2YoSjQsdGhpcylbMF0ubGVuZ3RoOjB9Y2xlYXIoKXtZRShKNCx0aGlzLFtdKSxZRShQNyx0aGlzLDApfX1mdW5jdGlvbiBBWChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gcXV0KGwpe3ZhciBjPWZ1bmN0aW9uIEt1dChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7''@;'; put 'put ''dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFs''@;'; put 'put ''dWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAs''@;'; put 'put ''d3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBNcGU9IkRGLXByZS1vcmRlciIsa3BlPW5ldyBNYXAoW1tNcGUsZnVuY3Rpb24geHBlKGwsYyl7bGV0IGE9bC5jYWxsKGMsdGhpcyk7Zm9yKGxldCBkPTA7ZDx0aGlzLmNoaWxkcy5sZW5ndGg7ZCsrKXtpZighMT09PWEpcmV0dXJuITE7YT14''@;'; put 'put ''cGUuY2FsbCh0aGlzLmNoaWxkc1tkXSxsLGMpfXJldHVybiBhfV0sWyJERi1wb3N0LW9yZGVyIixmdW5jdGlvbiBFcGUobCxjKXtmb3IobGV0IGE9MDthPHRoaXMuY2hpbGRzLmxlbmd0aDthKyspaWYoITE9PT1FcGUuY2FsbCh0aGlzLmNoaWxkc1thXSxsLGMpKXJldHVybiExO3JldHVybiBs''@;'; put 'put ''LmNhbGwoYyx0aGlzKX1dLFsiQkYiLGZ1bmN0aW9uIEp1dChsLGMpe2NvbnN0IGE9W3RoaXNdOyFmdW5jdGlvbiBkKCl7aWYoMD09PWEubGVuZ3RoKXJldHVybjtjb25zdCBoPWEuc2hpZnQoKTthLnB1c2goLi4uaC5jaGlsZHMpLCExIT09bC5jYWxsKGMsaCkmJmQoKX0oKX1dXSk7Y2xhc3Mg''@;'; put 'put ''WlB7Y29uc3RydWN0b3IoYyl7QVgodGhpcywiZGF0YSIse30pLEFYKHRoaXMsInBhcmVudCIsbnVsbCksQVgodGhpcywiY2hpbGRzIixbXSksdGhpcy5kYXRhPWN9YWRkQ2hpbGQoYyl7Yy5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcy5wdXNoKGMpfWNsb25lVHJlZSgpe2xldCBjPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0aGlzO2NvbnN0IGE9bmV3IFpQKHsuLi5jLmRhdGF9KTtmb3IobGV0IGQ9MDtkPGMuY2hpbGRzLmxlbmd0aDtkKyspYS5hZGRDaGlsZCh0aGlzLmNsb25lVHJlZShjLmNoaWxkc1tkXSkpO3JldHVybiBhfXJl''@;'; put 'put ''cGxhY2VUcmVlV2l0aChjKXt0aGlzLmRhdGE9ey4uLmMuZGF0YX0sdGhpcy5jaGlsZHM9W107Zm9yKGxldCBhPTA7YTxjLmNoaWxkcy5sZW5ndGg7YSsrKXRoaXMuYWRkQ2hpbGQoYy5jaGlsZHNbYV0pfXdhbGtEb3duKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJn''@;'; put 'put ''dW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiQkYiO2lmKCFrcGUuaGFzKGEpKXRocm93IG5ldyBFcnJvcihgVHJhdmVyc2FsIHN0cmF0ZWd5ICIke2F9IiBkb2VzIG5vdCBleGlzdGApO2twZS5nZXQoYSkuY2FsbCh0aGlzLGMsdGhpcyl9d2Fsa1VwKGMpe2NvbnN0IGE9dGhpcyxkPWg9PnshMSE9''@;'; put 'put ''PWMuY2FsbChhLGgpJiZudWxsIT09aC5wYXJlbnQmJmQoaC5wYXJlbnQpfTtkKHRoaXMpfX1mdW5jdGlvbiBEWChsLGMsYSl7KGZ1bmN0aW9uIGUwdChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVu''@;'; put 'put ''dHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gbTEobCxjKXtyZXR1cm4gbC5nZXQoQXBlKGwsYykpfWZ1bmN0aW9uIEFwZShsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8''@;'; put 'put ''Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9dmFyIGx5PW5ldyBXZWFrTWFwLEY3PW5ldyBXZWFrTWFwLGN5PW5ldyBXZWFrTWFwO2NsYXNzIG4wdHtjb25zdHJ1Y3RvcihjKXtEWCh0aGlzLGx5LG5ldyBN''@;'; put 'put ''YXApLERYKHRoaXMsRjcsbmV3IE1hcCksRFgodGhpcyxjeSxudWxsKSxmdW5jdGlvbiB0MHQobCxjLGEpe2wuc2V0KEFwZShsLGMpLGEpfShjeSx0aGlzLGMpfWdldFJvb3RzKCl7cmV0dXJuIEFycmF5LmZyb20obTEobHksdGhpcykudmFsdWVzKCkpfWdldFJvb3RCeUNvbHVtbihjKXtsZXQg''@;'; put 'put ''YTtyZXR1cm4gbTEoRjcsdGhpcykuaGFzKGMpJiYoYT1tMShseSx0aGlzKS5nZXQobTEoRjcsdGhpcykuZ2V0KGMpKSksYX1nZXROb2RlKGMsYSl7Y29uc3QgZD10aGlzLmdldFJvb3RCeUNvbHVtbihhKTtpZighZClyZXR1cm47Y29uc3QgaD1hLW0xKEY3LHRoaXMpLmdldChhKTtsZXQgdixm''@;'; put 'put ''PTA7cmV0dXJuIGQud2Fsa0Rvd24oUz0+e2NvbnN0e2RhdGE6e29yaWdDb2xzcGFuOlYsaGVhZGVyTGV2ZWw6UX19PVM7aWYoYz09PVEpe2lmKGg+PWYmJmg8PWYrVi0xKXJldHVybiB2PVMsdi5kYXRhLmlzUm9vdD1hPT09di5kYXRhLmNvbHVtbkluZGV4LCExO2YrPVZ9fSksdn1yZWJ1aWxk''@;'; put 'put ''VHJlZUluZGV4KCl7bGV0IGM9MDttMShGNyx0aGlzKS5jbGVhcigpLFRuKG0xKGx5LHRoaXMpLGE9PntsZXRbLHtkYXRhOntjb2xzcGFuOmR9fV09YTtmb3IobGV0IGg9YztoPGMrZDtoKyspbTEoRjcsdGhpcykuc2V0KGgsYyk7Yys9ZH0pfWJ1aWxkVHJlZSgpe3RoaXMuY2xlYXIoKTtjb25z''@;'; put 'put ''dCBjPW0xKGN5LHRoaXMpLmdldENvbHVtbnNDb3VudCgpO2xldCBhPTA7Zm9yKDthPGM7KXtjb25zdCBkPW0xKGN5LHRoaXMpLmdldEhlYWRlclNldHRpbmdzKDAsYSksaD1uZXcgWlA7bTEobHksdGhpcykuc2V0KGEsaCksdGhpcy5idWlsZExlYXZlcyhoLGEsMCxkLm9yaWdDb2xzcGFuKSxh''@;'; put 'put ''Kz1kLm9yaWdDb2xzcGFufXRoaXMucmVidWlsZFRyZWVJbmRleCgpfWJ1aWxkTGVhdmVzKGMsYSxkKXtsZXQgaD1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MTtjb25zdCBmPW0xKGN5LHRoaXMpLmdldEhlYWRlcnNTZXR0aW5ncyhkLGEs''@;'; put 'put ''aCk7ZCs9MSxUbihmLHY9Pntjb25zdCBTPXsuLi52LGhlYWRlckxldmVsOmQtMSxjb2x1bW5JbmRleDphfTtsZXQgVjsxPT09ZD8oYy5kYXRhPVMsVj1jKTooVj1uZXcgWlAoUyksYy5hZGRDaGlsZChWKSksZDxtMShjeSx0aGlzKS5nZXRMYXllcnNDb3VudCgpJiZ0aGlzLmJ1aWxkTGVhdmVz''@;'; put 'put ''KFYsYSxkLHYub3JpZ0NvbHNwYW4pLGErPXYub3JpZ0NvbHNwYW59KX1jbGVhcigpe20xKGx5LHRoaXMpLmNsZWFyKCksbTEoRjcsdGhpcykuY2xlYXIoKX19ZnVuY3Rpb24gRHBlKGwsYyl7bC53YWxrRG93bihhPT57bGV0e2RhdGE6ZCxjaGlsZHM6aH09YTtpZighZC5pc0hpZGRlbiYmKGMo''@;'; put 'put ''ZC5jb2x1bW5JbmRleCksMD09PWgubGVuZ3RoKSlmb3IobGV0IGY9MTtmPGQuY29sc3BhbjtmKyspYyhkLmNvbHVtbkluZGV4K2YpfSl9ZnVuY3Rpb24gWVAobCxjKXtsZXR7Y2hpbGRzOmF9PWw7aWYoMCE9PWEubGVuZ3RoKXJldHVybiBhWzBdLmRhdGFbY119ZnVuY3Rpb24gV1AobCl7cmV0''@;'; put 'put ''dXJuIFlQKGwsIm9yaWdDb2xzcGFuIik9PT1sLmRhdGEub3JpZ0NvbHNwYW59ZnVuY3Rpb24gSVgobCl7Y29uc3R7ZGF0YTpjLGNoaWxkczphfT1sO2lmKCFjLmlzQ29sbGFwc2VkfHxjLmlzSGlkZGVufHxjLm9yaWdDb2xzcGFuPD0xKXJldHVybntyb2xsYmFja01vZGlmaWNhdGlvbjooKT0+''@;'; put 'put ''e30sYWZmZWN0ZWRDb2x1bW5zOltdLGNvbHNwYW5Db21wZW5zYXRpb246MH07aWYoV1AobCkpcmV0dXJuIElYKGFbMF0pO2MuaXNDb2xsYXBzZWQ9ITE7Y29uc3QgaD1hLnNsaWNlKDEpLGY9bmV3IFNldDtsZXQgdj0wO2lmKGgubGVuZ3RoPjApVG4oaCxTPT57Uy5yZXBsYWNlVHJlZVdpdGgo''@;'; put 'put ''Uy5kYXRhLmNsb25lZFRyZWUpLFMuZGF0YS5jbG9uZWRUcmVlPW51bGwsdis9Uy5kYXRhLmNvbHNwYW4sRHBlKFMsUT0+e2YuYWRkKFEpfSl9KTtlbHNle2NvbnN0e2NvbHNwYW46UyxvcmlnQ29sc3BhbjpWLGNvbHVtbkluZGV4OlF9PWM7dj1WLVM7Zm9yKGxldCBkZT0xO2RlPFY7ZGUrKylm''@;'; put 'put ''LmFkZChRK2RlKX1yZXR1cm4gbC53YWxrVXAoUz0+e2NvbnN0e2RhdGE6Vn09UztWLmNvbHNwYW4rPXYsVi5jb2xzcGFuPj1WLm9yaWdDb2xzcGFuPyhWLmNvbHNwYW49Vi5vcmlnQ29sc3BhbixWLmlzQ29sbGFwc2VkPSExKTpXUChTKSYmKFYuaXNDb2xsYXBzZWQ9WVAoUywiaXNDb2xsYXBz''@;'; put 'put ''ZWQiKSl9KSx7cm9sbGJhY2tNb2RpZmljYXRpb246KCk9PlJYKGwpLGFmZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKGYpLGNvbHNwYW5Db21wZW5zYXRpb246dn19ZnVuY3Rpb24gUlgobCl7dmFyIGM7Y29uc3R7ZGF0YTphLGNoaWxkczpkfT1sO2lmKGEuaXNDb2xsYXBzZWR8fGEuaXNIaWRk''@;'; put 'put ''ZW58fGEub3JpZ0NvbHNwYW48PTEpcmV0dXJue3JvbGxiYWNrTW9kaWZpY2F0aW9uOigpPT57fSxhZmZlY3RlZENvbHVtbnM6W10sY29sc3BhbkNvbXBlbnNhdGlvbjowfTtpZihXUChsKSlyZXR1cm4gUlgoZFswXSk7YS5pc0NvbGxhcHNlZD0hMDtjb25zdCBmPWQuc2xpY2UoMSksdj1uZXcg''@;'; put 'put ''U2V0O2lmKGYubGVuZ3RoPjApVG4oZixWPT57RHBlKFYsUT0+e3YuYWRkKFEpfSksVi5kYXRhLmNsb25lZFRyZWU9Vi5jbG9uZVRyZWUoKSxWLndhbGtEb3duKFE9PntsZXR7ZGF0YTpkZX09UTtkZS5pc0hpZGRlbj0hMH0pfSk7ZWxzZXtjb25zdHtvcmlnQ29sc3BhbjpWLGNvbHVtbkluZGV4''@;'; put 'put ''OlF9PWE7Zm9yKGxldCBkZT0xO2RlPFY7ZGUrKyl2LmFkZChRK2RlKX1jb25zdCBTPWEuY29sc3Bhbi0obnVsbCE9PShjPVlQKGwsImNvbHNwYW4iKSkmJnZvaWQgMCE9PWM/YzoxKTtyZXR1cm4gbC53YWxrVXAoVj0+e2NvbnN0e2RhdGE6UX09VjtRLmNvbHNwYW4tPVMsUS5jb2xzcGFuPD0x''@;'; put 'put ''PyhRLmNvbHNwYW49MSxRLmlzQ29sbGFwc2VkPSEwKTpXUChWKSYmKFEuaXNDb2xsYXBzZWQ9WVAoViwiaXNDb2xsYXBzZWQiKSl9KSx7cm9sbGJhY2tNb2RpZmljYXRpb246KCk9PklYKGwpLGFmZmVjdGVkQ29sdW1uczpBcnJheS5mcm9tKHYpLGNvbHNwYW5Db21wZW5zYXRpb246U319Y29u''@;'; put 'put ''c3QgSXBlPW5ldyBNYXAoW1siY29sbGFwc2UiLFJYXSxbImV4cGFuZCIsSVhdLFsiaGlkZS1jb2x1bW4iLGZ1bmN0aW9uIHIwdChsLGMpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXRocm93IG5ldyBFcnJvcigiVGhlIHBhc3NlZCBncmlkQ29sdW1uSW5kZXggYXJndW1lbnQgaGFzIGludmFs''@;'; put 'put ''aWQgdHlwZS4iKTtpZihsLmNoaWxkcy5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoTmFgVGhlIHBhc3NlZCBub2RlIGlzIG5vdCB0aGUgbGFzdCBub2RlIG9uIHRoZSB0cmVlLiBPbmx5IGZvclx4MjAKdGhlIGxhc3Qgbm9kZSwgdGhlIGhpZGUgY29sdW1uIG1vZGlmaWNhdGlvbiBjYW4gYmUg''@;'; put 'put ''YXBwbGllZC5gKTtjb25zdHtjcm9zc0hpZGRlbkNvbHVtbnM6YX09bC5kYXRhO2lmKGEuaW5jbHVkZXMoYykpcmV0dXJuO2xldCBkPSExO2wud2Fsa1VwKGg9Pntjb25zdHtkYXRhOntjb2xsYXBzaWJsZTpmfX09aDtpZihmKXJldHVybiBkPSEwLCExfSksIWQmJmwud2Fsa1VwKGg9Pntjb25z''@;'; put 'put ''dHtkYXRhOmZ9PWg7Zi5jcm9zc0hpZGRlbkNvbHVtbnMucHVzaChjKSxmLmNvbHNwYW4+MT9mLmNvbHNwYW4tPTE6Zi5pc0hpZGRlbj0hMH0pfV0sWyJzaG93LWNvbHVtbiIsZnVuY3Rpb24gaTB0KGwsYyl7aWYoIU51bWJlci5pc0ludGVnZXIoYykpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGFz''@;'; put 'put ''c2VkIGdyaWRDb2x1bW5JbmRleCBhcmd1bWVudCBoYXMgaW52YWxpZCB0eXBlLiIpO2lmKGwuY2hpbGRzLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcihOYWBUaGUgcGFzc2VkIG5vZGUgaXMgbm90IHRoZSBsYXN0IG5vZGUgb24gdGhlIHRyZWUuIE9ubHkgZm9yXHgyMAp0aGUgbGFzdCBub2Rl''@;'; put 'put ''LCB0aGUgc2hvdyBjb2x1bW4gbW9kaWZpY2F0aW9uIGNhbiBiZSBhcHBsaWVkLmApO2NvbnN0e2Nyb3NzSGlkZGVuQ29sdW1uczphfT1sLmRhdGE7aWYoIWEuaW5jbHVkZXMoYykpcmV0dXJuO2xldCBkPSExO2wud2Fsa1VwKGg9Pntjb25zdHtkYXRhOntjb2xsYXBzaWJsZTpmfX09aDtpZihm''@;'; put 'put ''KXJldHVybiBkPSEwLCExfSksIWQmJmwud2Fsa1VwKGg9Pntjb25zdHtkYXRhOmZ9PWg7Zi5jcm9zc0hpZGRlbkNvbHVtbnMuc3BsaWNlKGYuY3Jvc3NIaWRkZW5Db2x1bW5zLmluZGV4T2YoYyksMSksIWYuaXNIaWRkZW4mJmYuY29sc3BhbjxmLm9yaWdDb2xzcGFuJiYoZi5jb2xzcGFuKz0x''@;'; put 'put ''KSxmLmlzSGlkZGVuPSExfSl9XV0pO2Z1bmN0aW9uIEdQKGwpe2NvbnN0IGM9W107cmV0dXJuIFRuKGwsYT0+e2Eud2Fsa0Rvd24oZD0+e2NvbnN0IGg9ZC5kYXRhLHtvcmlnQ29sc3BhbjpmLGNvbHVtbkluZGV4OnYsaGVhZGVyTGV2ZWw6Uyxjcm9zc0hpZGRlbkNvbHVtbnM6Vn09aCxRPWZ1''@;'; put 'put ''bmN0aW9uIGEwdChsLGMpe2xldCBhO3JldHVybiBBcnJheS5pc0FycmF5KGxbY10pP2E9bFtjXTooYT1bXSxsW2NdPWEpLGF9KGMsUyk7bGV0IGRlPSExO2ZvcihsZXQgcGU9djtwZTx2K2Y7cGUrKylpZihWLmluY2x1ZGVzKHBlKXx8ZGUpUS5wdXNoKHtsYWJlbDoiIixpc1BsYWNlaG9sZGVy''@;'; put 'put ''OiEwfSk7ZWxzZXtjb25zdCBPZT1zMHQoaCk7T2UuaXNSb290PSEwLFEucHVzaChPZSksZGU9ITB9fSl9KSxjfWZ1bmN0aW9uIHMwdChsKXtjb25zdHtjcm9zc0hpZGRlbkNvbHVtbnM6YywuLi5hfT1FWChsKTtyZXR1cm4gYX1mdW5jdGlvbiBMWChsLGMsYSl7KGZ1bmN0aW9uIGwwdChsLGMp''@;'; put 'put ''e2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gV0UobCxjLGEpe3JldHVybiBsLnNldChScGUobCxjKSxhKSxhfWZ1''@;'; put 'put ''bmN0aW9uIGhjKGwsYyl7cmV0dXJuIGwuZ2V0KFJwZShsLGMpKX1mdW5jdGlvbiBScGUobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBp''@;'; put 'put ''cyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciBpcD1uZXcgV2Vha01hcCxYMT1uZXcgV2Vha01hcCxONz1uZXcgV2Vha01hcDtjbGFzcyBjMHR7Y29uc3RydWN0b3IoKXtMWCh0aGlzLGlwLG5ldyAkdXQpLExYKHRoaXMsWDEsbmV3IG4wdChoYyhpcCx0aGlzKSkpLExYKHRoaXMs''@;'; put 'put ''TjcsW1tdXSl9c2V0U3RhdGUoYyl7aGMoaXAsdGhpcykuc2V0RGF0YShjKTtsZXQgYT0hMTt0cnl7aGMoWDEsdGhpcykuYnVpbGRUcmVlKCl9Y2F0Y2h7aGMoWDEsdGhpcykuY2xlYXIoKSxoYyhpcCx0aGlzKS5jbGVhcigpLGE9ITB9cmV0dXJuIFdFKE43LHRoaXMsR1AoaGMoWDEsdGhpcyku''@;'; put 'put ''Z2V0Um9vdHMoKSkpLGF9c2V0Q29sdW1uc0xpbWl0KGMpe2hjKGlwLHRoaXMpLnNldENvbHVtbnNMaW1pdChjKX1tZXJnZVN0YXRlV2l0aChjKXtjb25zdCBhPXhzKGMsZD0+e2xldHtyb3c6aCwuLi5mfT1kO3JldHVybntyb3c6aDwwP3RoaXMucm93Q29vcmRzVG9MZXZlbChoKTpoLC4uLmZ9''@;'; put 'put ''fSk7aGMoaXAsdGhpcykubWVyZ2VXaXRoKGEpLGhjKFgxLHRoaXMpLmJ1aWxkVHJlZSgpLFdFKE43LHRoaXMsR1AoaGMoWDEsdGhpcykuZ2V0Um9vdHMoKSkpfW1hcFN0YXRlKGMpe2hjKGlwLHRoaXMpLm1hcChjKSxoYyhYMSx0aGlzKS5idWlsZFRyZWUoKSxXRShONyx0aGlzLEdQKGhjKFgx''@;'; put 'put ''LHRoaXMpLmdldFJvb3RzKCkpKX1tYXBOb2RlcyhjKXtyZXR1cm4gTWMoaGMoWDEsdGhpcykuZ2V0Um9vdHMoKSwoYSxkKT0+KGQud2Fsa0Rvd24oaD0+e2NvbnN0IGY9YyhoLmRhdGEpO3ZvaWQgMCE9PWYmJmEucHVzaChmKX0pLGEpLFtdKX10cmlnZ2VyTm9kZU1vZGlmaWNhdGlvbihjLGEs''@;'; put 'put ''ZCl7YTwwJiYoYT10aGlzLnJvd0Nvb3Jkc1RvTGV2ZWwoYSkpO2NvbnN0IGg9aGMoWDEsdGhpcykuZ2V0Tm9kZShhLGQpO2xldCBmO3JldHVybiBoJiYoZj1mdW5jdGlvbiBvMHQobCxjLGEpe2lmKCFJcGUuaGFzKGwpKXRocm93IG5ldyBFcnJvcihgVGhlIG5vZGUgbW9kaWZpZXIgYWN0aW9u''@;'; put 'put ''ICgiJHtsfSIpIGRvZXMgbm90IGV4aXN0LmApO3JldHVybiBJcGUuZ2V0KGwpKGMsYSl9KGMsaCxkKSxXRShONyx0aGlzLEdQKGhjKFgxLHRoaXMpLmdldFJvb3RzKCkpKSksZn10cmlnZ2VyQ29sdW1uTW9kaWZpY2F0aW9uKGMsYSl7cmV0dXJuIHRoaXMudHJpZ2dlck5vZGVNb2RpZmljYXRp''@;'; put 'put ''b24oYywtMSxhKX1yb3dDb29yZHNUb0xldmVsKGMpe2lmKGM+PTApcmV0dXJuIG51bGw7Y29uc3QgYT1jK01hdGgubWF4KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSwxKTtyZXR1cm4gYTwwP251bGw6YX1sZXZlbFRvUm93Q29vcmRzKGMpe2lmKGM8MClyZXR1cm4gbnVsbDtjb25zdCBhPWMtTWF0''@;'; put 'put ''aC5tYXgodGhpcy5nZXRMYXllcnNDb3VudCgpLDEpO3JldHVybiBhPj0wP251bGw6YX1nZXRIZWFkZXJTZXR0aW5ncyhjLGEpe3ZhciBkLGg7cmV0dXJuIGM8MCYmKGM9dGhpcy5yb3dDb29yZHNUb0xldmVsKGMpKSxudWxsPT09Y3x8Yz49dGhpcy5nZXRMYXllcnNDb3VudCgpP251bGw6bnVs''@;'; put 'put ''bCE9PShkPW51bGw9PT0oaD1oYyhONyx0aGlzKVtjXSl8fHZvaWQgMD09PWg/dm9pZCAwOmhbYV0pJiZ2b2lkIDAhPT1kP2Q6bnVsbH1nZXRIZWFkZXJUcmVlTm9kZURhdGEoYyxhKXtjb25zdCBkPXRoaXMuZ2V0SGVhZGVyVHJlZU5vZGUoYyxhKTtyZXR1cm4gZD97Li4uZC5kYXRhfTpudWxs''@;'; put 'put ''fWdldEhlYWRlclRyZWVOb2RlKGMsYSl7cmV0dXJuIGM8MCYmKGM9dGhpcy5yb3dDb29yZHNUb0xldmVsKGMpKSxudWxsPT09Y3x8Yz49dGhpcy5nZXRMYXllcnNDb3VudCgpP251bGw6aGMoWDEsdGhpcykuZ2V0Tm9kZShjLGEpfHxudWxsfWZpbmRUb3BNb3N0RW50aXJlSGVhZGVyTGV2ZWwo''@;'; put 'put ''Yyl7dmFyIGE7bGV0IGQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmM7Y29uc3QgaD1kLWMrMTtsZXQgZj0hMSx2PW51bGw7Zm9yKGxldCBTPWM7Uzw9ZDtTKyspe2NvbnN0IFY9aGMoWDEsdGhpcykuZ2V0Um9vdEJ5Q29sdW1uKFMpO2lm''@;'; put 'put ''KCFWKWJyZWFrO2Y9ITAsVi53YWxrRG93bihRPT57Y29uc3R7Y29sdW1uSW5kZXg6ZGUsaGVhZGVyTGV2ZWw6cGUsb3JpZ0NvbHNwYW46Q2UsaXNIaWRkZW46T2V9PVEuZGF0YTtPZXx8Q2U8PWgmJmRlPj1jJiZkZStDZS0xPD1kJiYobnVsbD09PXZ8fHBlPHYpJiYodj1wZSl9LE1wZSl9cmV0''@;'; put 'put ''dXJuIGYmJm51bGw9PT12Py0xOnRoaXMubGV2ZWxUb1Jvd0Nvb3JkcyhudWxsIT09KGE9dikmJnZvaWQgMCE9PWE/YTowKX1maW5kTGVmdE1vc3RDb2x1bW5JbmRleChjLGEpe3ZhciBkO2NvbnN0e2lzUm9vdDpofT1udWxsIT09KGQ9dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhjLGEpKSYmdm9p''@;'; put 'put ''ZCAwIT09ZD9kOntpc1Jvb3Q6ITB9O2lmKGgpcmV0dXJuIGE7bGV0IGY9YS0xO2Zvcig7Zj49MDspe3ZhciB2O2NvbnN0e2lzUm9vdDpTfT1udWxsIT09KHY9dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhjLGYpKSYmdm9pZCAwIT09dj92Ontpc1Jvb3Q6ITB9O2lmKFMpYnJlYWs7Zi09MX1yZXR1''@;'; put 'put ''cm4gZn1maW5kUmlnaHRNb3N0Q29sdW1uSW5kZXgoYyxhKXt2YXIgZDtjb25zdHtpc1Jvb3Q6aCxvcmlnQ29sc3BhbjpmfT1udWxsIT09KGQ9dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhjLGEpKSYmdm9pZCAwIT09ZD9kOntpc1Jvb3Q6ITAsb3JpZ0NvbHNwYW46MX07aWYoaClyZXR1cm4gYStm''@;'; put 'put ''LTE7bGV0IHY9YSsxO2Zvcig7djx0aGlzLmdldENvbHVtbnNDb3VudCgpOyl7dmFyIFM7Y29uc3R7aXNSb290OlZ9PW51bGwhPT0oUz10aGlzLmdldEhlYWRlclNldHRpbmdzKGMsdikpJiZ2b2lkIDAhPT1TP1M6e2lzUm9vdDohMH07aWYoVilicmVhazt2Kz0xfXJldHVybiB2LTF9Z2V0TGF5''@;'; put 'put ''ZXJzQ291bnQoKXtyZXR1cm4gaGMoaXAsdGhpcykuZ2V0TGF5ZXJzQ291bnQoKX1nZXRDb2x1bW5zQ291bnQoKXtyZXR1cm4gaGMoaXAsdGhpcykuZ2V0Q29sdW1uc0NvdW50KCl9Y2xlYXIoKXtXRShONyx0aGlzLFtdKSxoYyhpcCx0aGlzKS5jbGVhcigpLGhjKFgxLHRoaXMpLmNsZWFyKCl9''@;'; put 'put ''fWZ1bmN0aW9uIEdFKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiB1MHQobCl7dmFyIGM9ZnVuY3Rpb24gZDB0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8''@;'; put 'put ''ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1''@;'; put 'put ''cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWNvbnN0IGYwdD1jbGFzcyBoMHR7Y29uc3RydWN0b3IoYyxhKXtH''@;'; put 'put ''RSh0aGlzLCJob3QiLHZvaWQgMCksR0UodGhpcywibmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXIiLHZvaWQgMCksR0UodGhpcywibGF5ZXJzQ291bnQiLDApLEdFKHRoaXMsImNvbnRhaW5lciIsdm9pZCAwKSxHRSh0aGlzLCJ3aWR0aHNNYXAiLHZvaWQgMCksdGhpcy5ob3Q9Yyx0aGlzLm5l''@;'; put 'put ''c3RlZEhlYWRlclNldHRpbmdzR2V0dGVyPWEsdGhpcy53aWR0aHNNYXA9dGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuY3JlYXRlQW5kUmVnaXN0ZXJJbmRleE1hcCgibmVzdGVkSGVhZGVycy53aWR0aHNNYXAiLCJwaHlzaWNhbEluZGV4VG9WYWx1ZSIpfXNldExheWVyc0NvdW50KGMpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmxheWVyc0NvdW50PWMsdGhpc31nZXRXaWR0aChjKXtyZXR1cm4gdGhpcy53aWR0aHNNYXAuZ2V0VmFsdWVBdEluZGV4KHRoaXMuaG90LnRvUGh5c2ljYWxDb2x1bW4oYykpfWJ1aWxkV2lkdGhzTWFwKCl7dGhpcy5jb250YWluZXI9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhbmRzb250YWJsZSIsImh0R2hvc3RUYWJsZSIsImh0QXV0b1NpemUiKSx0aGlzLl9idWlsZEdob3N0VGFibGUodGhpcy5jb250YWluZXIpLHRoaXMuaG90LnJvb3REb2N1bWVudC5ib2R5LmFwcGVuZENo''@;'; put 'put ''aWxkKHRoaXMuY29udGFpbmVyKTtjb25zdCBjPXRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoInRyOmxhc3Qtb2YtdHlwZSB0aCIpLGE9Yy5sZW5ndGg7dGhpcy53aWR0aHNNYXAuY2xlYXIoKTtmb3IobGV0IGQ9MDtkPGE7ZCsrKXtjb25zdCBoPXRoaXMuaG90LmNvbHVtbkluZGV4''@;'; put 'put ''TWFwcGVyLmdldFZpc3VhbEZyb21SZW5kZXJhYmxlSW5kZXgoZCksZj10aGlzLmhvdC50b1BoeXNpY2FsQ29sdW1uKGgpO3RoaXMud2lkdGhzTWFwLnNldFZhbHVlQXRJbmRleChmLGNbZF0ub2Zmc2V0V2lkdGgpfXRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5j''@;'; put 'put ''b250YWluZXIpLHRoaXMuY29udGFpbmVyPW51bGx9X2J1aWxkR2hvc3RUYWJsZShjKXtjb25zdHtyb290RG9jdW1lbnQ6YSxjb2x1bW5JbmRleE1hcHBlcjpkfT10aGlzLmhvdCxoPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGY9YS5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHY9ISF0aGlz''@;'; put 'put ''LmhvdC5nZXRTZXR0aW5ncygpLmRyb3Bkb3duTWVudSxTPWQuZ2V0UmVuZGVyYWJsZUluZGV4ZXNMZW5ndGgoKTtmb3IobGV0IFY9MDtWPHRoaXMubGF5ZXJzQ291bnQ7VisrKXtjb25zdCBRPWEuY3JlYXRlRWxlbWVudCgidHIiKTtmb3IobGV0IGRlPTA7ZGU8UztkZSsrKXtsZXQgcGU9ZC5n''@;'; put 'put ''ZXRWaXN1YWxGcm9tUmVuZGVyYWJsZUluZGV4KGRlKTtudWxsPT09cGUmJihwZT1kZSk7Y29uc3QgQ2U9YS5jcmVhdGVFbGVtZW50KCJ0aCIpLE9lPXRoaXMubmVzdGVkSGVhZGVyU2V0dGluZ3NHZXR0ZXIoVixwZSk7aWYoT2UmJighT2UuaXNQbGFjZWhvbGRlcnx8T2UuaXNIaWRkZW4pKXts''@;'; put 'put ''ZXQgWWU9T2UubGFiZWw7diYmKFllKz0nPGJ1dHRvbiBjbGFzcz0iY2hhbmdlVHlwZSI+PC9idXR0b24+JyksWjgoQ2UsWWUpLENlLmNvbFNwYW49T2UuY29sc3BhbixRLmFwcGVuZENoaWxkKENlKX19Zi5hcHBlbmRDaGlsZChRKX1oLmFwcGVuZENoaWxkKGYpLGMuYXBwZW5kQ2hpbGQoaCl9''@;'; put 'put ''Y2xlYXIoKXt0aGlzLndpZHRoc01hcC5jbGVhcigpLHRoaXMuY29udGFpbmVyPW51bGx9fTtmdW5jdGlvbiBMcGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGcwdChsKXt2YXIgYz1mdW5jdGlvbiBtMHQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxb''@;'; put 'put ''U3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJl''@;'; put 'put ''dHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxl''@;'; put 'put ''OiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gJFAobCxjLGEpe09wZShsLGMpLGMuc2V0KGwsYSl9ZnVuY3Rpb24gT3BlKGwsYyl7aWYoYy5oYXMobCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmpl''@;'; put 'put ''Y3QiKX1mdW5jdGlvbiBINyhsLGMsYSl7cmV0dXJuIGwuc2V0KGZjKGwsYyksYSksYX1mdW5jdGlvbiBlYShsLGMpe3JldHVybiBsLmdldChmYyhsLGMpKX1mdW5jdGlvbiBmYyhsLGMsYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGw/bD09PWM6bC5oYXMoYykpcmV0dXJuIGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGg8Mz9jOmE7dGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBlbGVtZW50IGlzIG5vdCBwcmVzZW50IG9uIHRoaXMgb2JqZWN0Iil9Y29uc3QgUHBlPSJuZXN0ZWRIZWFkZXJzIjt2YXIgcWE9bmV3IFdlYWtNYXAseTU9bmV3IFdlYWtNYXAsJEU9bmV3IFdlYWtNYXAscVA9bmV3IFdl''@;'; put 'put ''YWtNYXAsVGM9bmV3IFdlYWtTZXQ7Y2xhc3MgXzB0IGV4dGVuZHMgZGF7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIHAwdChsLGMpe09wZShsLGMpLGMuYWRkKGwpfSh0aGlzLFRjKSwkUCh0aGlzLHFhLG5ldyBjMHQpLCRQKHRoaXMseTUsbnVsbCksJFAodGhp''@;'; put 'put ''cywkRSxudWxsKSwkUCh0aGlzLHFQLCExKSxMcGUodGhpcywiZ2hvc3RUYWJsZSIsbmV3IGYwdCh0aGlzLmhvdCwoYyxhKT0+dGhpcy5nZXRIZWFkZXJTZXR0aW5ncyhjLGEpKSksTHBlKHRoaXMsImRldGVjdGVkT3ZlcmxhcHBlZEhlYWRlcnMiLCExKX1zdGF0aWMgZ2V0IFBMVUdJTl9LRVko''@;'; put 'put ''KXtyZXR1cm4gUHBlfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDI4MH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbUHBlXX1lbmFibGVQbHVnaW4oKXt2YXIgYz10aGlzO2lmKHRoaXMuZW5hYmxlZClyZXR1cm47Y29uc3R7bmVzdGVkSGVh''@;'; put 'put ''ZGVyczphfT10aGlzLmhvdC5nZXRTZXR0aW5ncygpOyghQXJyYXkuaXNBcnJheShhKXx8IUFycmF5LmlzQXJyYXkoYVswXSkpJiZpbChOYWBZb3VyIE5lc3RlZCBIZWFkZXJzIHBsdWdpbiBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuIFRoZSBzZXR0aW5ncyBoYXMgdG8gYmVceDIwCiAgICAg''@;'; put 'put ''ICAgICAgICAgICAgICAgICAgIHBhc3NlZCBhcyBhbiBhcnJheSBvZiBhcnJheXMgZS5xLiBbWydBMScsIHsgbGFiZWw6ICdBMicsIGNvbHNwYW46IDIgfV1dYCksdGhpcy5hZGRIb29rKCJpbml0IiwoKT0+ZmMoVGMsdGhpcyxPMHQpLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJM''@;'; put 'put ''b2FkRGF0YSIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZmMoVGMsYyxQMHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixm''@;'; put 'put ''dW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLEMwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlck9uQ2VsbE1vdXNlRG93biIsZnVuY3Rpb24oKXtm''@;'; put 'put ''b3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZmMoVGMsYyxTMHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VPdmVyIixmdW5jdGlvbigpe2Zvcih2YXIgZD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLE0wdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVPbkNlbGxNb3VzZVVwIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLHgwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZWxlY3Rpb25IaWdobGlnaHRTZXQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgs''@;'; put 'put ''aD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIGZjKFRjLGMsRTB0KS5jYWxsKGMsLi4uaCl9KSx0aGlzLmFkZEhvb2soIm1vZGlmeVRyYW5zZm9ybVN0YXJ0IixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5''@;'; put 'put ''KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLFQwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlclNlbGVjdGlvbiIsKCk9PmZjKFRjLHRoaXMsS1ApLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYWZ0ZXJTZWxlY3Rpb25Gb2N1c1Nl''@;'; put 'put ''dCIsKCk9PmZjKFRjLHRoaXMsS1ApLmNhbGwodGhpcykpLHRoaXMuYWRkSG9vaygiYmVmb3JlVmlld3BvcnRTY3JvbGxIb3Jpem9udGFsbHkiLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07''@;'; put 'put ''cmV0dXJuIGZjKFRjLGMsYjB0KS5jYWxsKGMsLi4uaCl9KSx0aGlzLmFkZEhvb2soImFmdGVyR2V0Q29sdW1uSGVhZGVyUmVuZGVyZXJzIixkPT5mYyhUYyx0aGlzLEEwdCkuY2FsbCh0aGlzLGQpKSx0aGlzLmFkZEhvb2soIm1vZGlmeUNvbFdpZHRoIixmdW5jdGlvbigpe2Zvcih2YXIgZD1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLEkwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlDb2x1bW5IZWFkZXJWYWx1ZSIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRz''@;'; put 'put ''Lmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZmMoVGMsYyxSMHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlSGlnaGxpZ2h0aW5nQ29sdW1uSGVhZGVyIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLHkwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVDb3B5IixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQp''@;'; put 'put ''LGY9MDtmPGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLHcwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVTZWxlY3RDb2x1bW5zIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7Zisr''@;'; put 'put ''KWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLGswdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJhZnRlclZpZXdwb3J0Q29sdW1uQ2FsY3VsYXRvck92ZXJyaWRlIixmdW5jdGlvbigpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtm''@;'; put 'put ''PGQ7ZisrKWhbZl09YXJndW1lbnRzW2ZdO3JldHVybiBmYyhUYyxjLEQwdCkuY2FsbChjLC4uLmgpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlGb2N1c2VkRWxlbWVudCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2Zd''@;'; put 'put ''PWFyZ3VtZW50c1tmXTtyZXR1cm4gZmMoVGMsYyxMMHQpLmNhbGwoYywuLi5oKX0pLHRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmFkZExvY2FsSG9vaygiY2FjaGVVcGRhdGVkIiwoKT0+ZmMoVGMsdGhpcyxLUCkuY2FsbCh0aGlzKSksdGhpcy5ob3Qucm93SW5kZXhNYXBwZXIuYWRkTG9j''@;'; put 'put ''YWxIb29rKCJjYWNoZVVwZGF0ZWQiLCgpPT5mYyhUYyx0aGlzLEtQKS5jYWxsKHRoaXMpKSxzdXBlci5lbmFibGVQbHVnaW4oKSx0aGlzLnVwZGF0ZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe2lmKCF0aGlzLmhvdC52aWV3KXJldHVybjtjb25zdHtuZXN0ZWRIZWFkZXJzOmN9PXRoaXMuaG90''@;'; put 'put ''LmdldFNldHRpbmdzKCk7ZWEocWEsdGhpcykuc2V0Q29sdW1uc0xpbWl0KHRoaXMuaG90LmNvdW50Q29scygpKSxBcnJheS5pc0FycmF5KGMpJiYodGhpcy5kZXRlY3RlZE92ZXJsYXBwZWRIZWFkZXJzPWVhKHFhLHRoaXMpLnNldFN0YXRlKGMpKSx0aGlzLmRldGVjdGVkT3ZlcmxhcHBlZEhl''@;'; put 'put ''YWRlcnMmJmlsKE5hYFlvdXIgTmVzdGVkIEhlYWRlcnMgcGx1Z2luIHNldHVwIGNvbnRhaW5zIG92ZXJsYXBwaW5nIGhlYWRlcnMuIFRoaXMga2luZCBvZiBjb25maWd1cmF0aW9uXHgyMAogICAgICAgICAgICAgICAgICAgICAgICBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC5gKSx0aGlz''@;'; put 'put ''LmVuYWJsZWQmJnRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmhpZGluZ01hcHNDb2xsZWN0aW9uLmdldE1lcmdlZFZhbHVlcygpLmZvckVhY2goKGEsZCk9Pntjb25zdCBoPSEwPT09YT8iaGlkZS1jb2x1bW4iOiJzaG93LWNvbHVtbiI7ZWEocWEsdGhpcykudHJpZ2dlckNvbHVtbk1vZGlm''@;'; put 'put ''aWNhdGlvbihoLGQpfSksIWVhKHk1LHRoaXMpJiZ0aGlzLmVuYWJsZWQmJkg3KHk1LHRoaXMsdGhpcy5ob3QuY29sdW1uSW5kZXhNYXBwZXIuY3JlYXRlQ2hhbmdlc09ic2VydmVyKCJoaWRpbmciKS5zdWJzY3JpYmUoYT0+e2EuZm9yRWFjaChkPT57bGV0e29wOmgsaW5kZXg6ZixuZXdWYWx1''@;'; put 'put ''ZTp2fT1kO2lmKCJyZXBsYWNlIj09PWgpe2NvbnN0IFM9ITA9PT12PyJoaWRlLWNvbHVtbiI6InNob3ctY29sdW1uIjtlYShxYSx0aGlzKS50cmlnZ2VyQ29sdW1uTW9kaWZpY2F0aW9uKFMsZil9fSksdGhpcy5naG9zdFRhYmxlLmJ1aWxkV2lkdGhzTWFwKCl9KSksdGhpcy5naG9zdFRhYmxl''@;'; put 'put ''LnNldExheWVyc0NvdW50KHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSkuYnVpbGRXaWR0aHNNYXAoKSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5jbGVhckNvbHNwYW5zKCksZWEocWEsdGhpcykuY2xlYXIoKSxlYSh5NSx0aGlzKS51bnN1YnNjcmliZSgpLEg3KHk1''@;'; put 'put ''LHRoaXMsbnVsbCksdGhpcy5naG9zdFRhYmxlLmNsZWFyKCksc3VwZXIuZGlzYWJsZVBsdWdpbigpfWdldFN0YXRlTWFuYWdlcigpe3JldHVybiBlYShxYSx0aGlzKX1nZXRMYXllcnNDb3VudCgpe3JldHVybiBlYShxYSx0aGlzKS5nZXRMYXllcnNDb3VudCgpfWdldEhlYWRlclNldHRpbmdz''@;'; put 'put ''KGMsYSl7cmV0dXJuIGVhKHFhLHRoaXMpLmdldEhlYWRlclNldHRpbmdzKGMsYSl9Y2xlYXJDb2xzcGFucygpe2lmKCF0aGlzLmhvdC52aWV3KXJldHVybjtjb25zdHtfd3Q6Y309dGhpcy5ob3QudmlldyxhPWMuZ2V0U2V0dGluZygiY29sdW1uSGVhZGVycyIpLmxlbmd0aCxkPWMud3RUYWJs''@;'; put 'put ''ZS5USEVBRCxoPWMud3RPdmVybGF5cy50b3BPdmVybGF5LmNsb25lLnd0VGFibGUuVEhFQUQsZj1jLnd0T3ZlcmxheXMudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5P2Mud3RPdmVybGF5cy50b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXkuY2xvbmUud3RUYWJsZS5USEVBRDpudWxsO2Zv''@;'; put 'put ''cihsZXQgdj0wO3Y8YTt2Kyspe2NvbnN0IFM9ZC5jaGlsZE5vZGVzW3ZdO2lmKCFTKWJyZWFrO2NvbnN0IFY9aC5jaGlsZE5vZGVzW3ZdLFE9Zj9mLmNoaWxkTm9kZXNbdl06bnVsbDtmb3IobGV0IGRlPTAscGU9Uy5jaGlsZE5vZGVzLmxlbmd0aDtkZTxwZTtkZSsrKVMuY2hpbGROb2Rlc1tk''@;'; put 'put ''ZV0ucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksbHMoUy5jaGlsZE5vZGVzW2RlXSwiaGlkZGVuSGVhZGVyIiksViYmVi5jaGlsZE5vZGVzW2RlXSYmKFYuY2hpbGROb2Rlc1tkZV0ucmVtb3ZlQXR0cmlidXRlKCJjb2xzcGFuIiksbHMoVi5jaGlsZE5vZGVzW2RlXSwiaGlkZGVuSGVhZGVy''@;'; put 'put ''IikpLGYmJlEmJlEuY2hpbGROb2Rlc1tkZV0mJihRLmNoaWxkTm9kZXNbZGVdLnJlbW92ZUF0dHJpYnV0ZSgiY29sc3BhbiIpLGxzKFEuY2hpbGROb2Rlc1tkZV0sImhpZGRlbkhlYWRlciIpKX19aGVhZGVyUmVuZGVyZXJGYWN0b3J5KGMpe3ZhciBhPXRoaXM7Y29uc3QgZD10aGlzLmhvdC52''@;'; put 'put ''aWV3Ll93dC5nZXRTZXR0aW5nKCJmaXhlZENvbHVtbnNTdGFydCIpO3JldHVybihoLGYpPT57dmFyIHY7Y29uc3R7Y29sdW1uSW5kZXhNYXBwZXI6Uyx2aWV3OlZ9PXRoaXMuaG90O2xldCBRPVMuZ2V0VmlzdWFsRnJvbVJlbmRlcmFibGVJbmRleChoKTtudWxsPT09USYmKFE9aCksZi5yZW1v''@;'; put 'put ''dmVBdHRyaWJ1dGUoImNvbHNwYW4iKSxscyhmLCJoaWRkZW5IZWFkZXIiKTtjb25zdHtjb2xzcGFuOmRlLGlzSGlkZGVuOnBlLGlzUGxhY2Vob2xkZXI6Q2V9PW51bGwhPT0odj1lYShxYSx0aGlzKS5nZXRIZWFkZXJTZXR0aW5ncyhjLFEpKSYmdm9pZCAwIT09dj92OntsYWJlbDoiIn07aWYo''@;'; put 'put ''Q2V8fHBlKW1pKGYsImhpZGRlbkhlYWRlciIpO2Vsc2UgaWYoZGU+MSl7dmFyIE9lLFllO2NvbnN0e3d0T3ZlcmxheXM6ZXR9PVYuX3d0LGR0PW51bGw9PT0oT2U9ZXQudG9wSW5saW5lU3RhcnRDb3JuZXJPdmVybGF5KXx8dm9pZCAwPT09T2U/dm9pZCAwOk9lLmNsb25lLnd0VGFibGUuVEhF''@;'; put 'put ''QUQuY29udGFpbnMoZiksaHQ9bnVsbD09PShZZT1ldC5pbmxpbmVTdGFydE92ZXJsYXkpfHx2b2lkIDA9PT1ZZT92b2lkIDA6WWUuY2xvbmUud3RUYWJsZS5USEVBRC5jb250YWlucyhmKSxNdD1kdHx8aHQ/TWF0aC5taW4oZGUsZC1oKTpkZTtNdD4xJiZmLnNldEF0dHJpYnV0ZSgiY29sc3Bh''@;'; put 'put ''biIsTXQpfXRoaXMuaG90LnZpZXcuYXBwZW5kQ29sSGVhZGVyKFEsZixmdW5jdGlvbigpe3JldHVybiBhLmdldENvbHVtbkhlYWRlclZhbHVlKC4uLmFyZ3VtZW50cyl9LGMpfX1nZXRDb2x1bW5IZWFkZXJWYWx1ZShjLGEpe3ZhciBkO2NvbnN0e2lzSGlkZGVuOmgsaXNQbGFjZWhvbGRlcjpm''@;'; put 'put ''fT1udWxsIT09KGQ9ZWEocWEsdGhpcykuZ2V0SGVhZGVyU2V0dGluZ3MoYSxjKSkmJnZvaWQgMCE9PWQ/ZDp7fTtyZXR1cm4gZnx8aD8iIjp0aGlzLmhvdC5nZXRDb2xIZWFkZXIoYyxhKX1kZXN0cm95KCl7SDcocWEsdGhpcyxudWxsKSxudWxsIT09ZWEoeTUsdGhpcykmJihlYSh5NSx0aGlz''@;'; put 'put ''KS51bnN1YnNjcmliZSgpLEg3KHk1LHRoaXMsbnVsbCkpLHN1cGVyLmRlc3Ryb3koKX1fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29yZHMoYyl7aWYoIShjLnJvdz49MHx8Yy5jb2w8MCkpcmV0dXJuIGVhKHFhLHRoaXMpLmdldEhlYWRlclRyZWVOb2RlRGF0YShjLnJvdyxjLmNvbCl9fWZ1''@;'; put 'put ''bmN0aW9uIEtQKCl7dmFyIGw7Y29uc3QgYz1udWxsPT09KGw9dGhpcy5ob3QpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWMpcmV0dXJuO2NvbnN0e2hpZ2hsaWdodDphfT1jO2lmKGEuaXNIZWFkZXIoKSYmYS5jb2w+PTApe2NvbnN0IGg9ZWEocWEs''@;'; put 'put ''dGhpcykuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoYS5yb3csYS5jb2wpLGY9dGhpcy5ob3Quc2VsZWN0aW9uLmhpZ2hsaWdodC5nZXRGb2N1cygpO2YudmlzdWFsQ2VsbFJhbmdlLmhpZ2hsaWdodC5jb2w9aCxmLnZpc3VhbENlbGxSYW5nZS5mcm9tLmNvbD1oLGYudmlzdWFsQ2VsbFJhbmdl''@;'; put 'put ''LnRvLmNvbD1oLGYuY29tbWl0KCl9fWZ1bmN0aW9uIGIwdChsKXtjb25zdCBjPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCk7aWYoIWMpcmV0dXJuIGw7Y29uc3R7aGlnaGxpZ2h0OmF9PWM7aWYoIShhLmlzSGVhZGVyKCkmJmEuY29sPj0wKSlyZXR1cm4gbDtjb25zdCBoPXRoaXMu''@;'; put 'put ''aG90LnZpZXcuZ2V0Rmlyc3RGdWxseVZpc2libGVDb2x1bW4oKSxmPXRoaXMuaG90LnZpZXcuZ2V0TGFzdEZ1bGx5VmlzaWJsZUNvbHVtbigpLHY9ZWEocWEsdGhpcykuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoYS5yb3csYS5jb2wpLFM9ZWEocWEsdGhpcykuZmluZFJpZ2h0TW9zdENvbHVt''@;'; put 'put ''bkluZGV4KGEucm93LGEuY29sKTtyZXR1cm4gdjxoJiZTPmY/bDp2PGg/djpTfWZ1bmN0aW9uIHkwdChsLGMsYSl7Y29uc3QgZD1lYShxYSx0aGlzKS5nZXRIZWFkZXJUcmVlTm9kZURhdGEoYyxsKTtpZighZClyZXR1cm4gbDtjb25zdHtjb2x1bW5DdXJzb3I6aCxzZWxlY3Rpb25UeXBlOmYs''@;'; put 'put ''c2VsZWN0aW9uV2lkdGg6dn09YSx7aXNSb290OlMsY29sc3BhbjpWfT1lYShxYSx0aGlzKS5nZXRIZWFkZXJTZXR0aW5ncyhjLGwpO2lmKGY9PT1pcSl7aWYoIVMpcmV0dXJuIGQuY29sdW1uSW5kZXh9ZWxzZSBpZihmPT09cGhlJiYoVj52LWh8fCFTKSlyZXR1cm4gbnVsbDtyZXR1cm4gbH1m''@;'; put 'put ''dW5jdGlvbiB3MHQobCxjLGEpe2xldHtjb2x1bW5IZWFkZXJzQ291bnQ6ZH09YTtpZigwIT09ZClmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKyl7Y29uc3R7c3RhcnRSb3c6dixzdGFydENvbDpTLGVuZFJvdzpWLGVuZENvbDpRfT1jW2ZdLGRlPVYtdisxO2lmKHY+PTB8fDE9PVMtUSsxKWJy''@;'; put 'put ''ZWFrO2ZvcihsZXQgQ2U9UztDZTw9UTtDZSsrKWZvcihsZXQgT2U9djtPZTw9VjtPZSsrKXt2YXIgaDtjb25zdCBZZT1kZStPZSxldD1DZS1TOzAhPT1ldCYmITE9PT0obnVsbD09PShoPWVhKHFhLHRoaXMpLmdldEhlYWRlclRyZWVOb2RlRGF0YShPZSxDZSkpfHx2b2lkIDA9PT1oP3ZvaWQg''@;'; put 'put ''MDpoLmlzUm9vdCkmJihsW1llXVtldF09IiIpfX19ZnVuY3Rpb24gQzB0KGwsYyxhLGQpe3RoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKGMpJiYoZC5jb2x1bW49ITApfWZ1bmN0aW9uIFMwdChsLGMpe2NvbnN0IGE9dGhpcy5fZ2V0SGVhZGVyVHJlZU5vZGVEYXRhQnlDb29y''@;'; put 'put ''ZHMoYyk7aWYoIWEpcmV0dXJuO0g3KCRFLHRoaXMsYy5jbG9uZSgpKSxINyhxUCx0aGlzLCEwKTtjb25zdHtzZWxlY3Rpb246ZH09dGhpcy5ob3QsaD1kLmlzU2VsZWN0ZWQoKT9kLmdldFNlbGVjdGVkUmFuZ2UoKS5jdXJyZW50KCk6bnVsbCxmPVtdLHtjb2x1bW5JbmRleDp2LG9yaWdDb2xz''@;'; put 'put ''cGFuOlN9PWEsVj0hZC5pbkluU2VsZWN0aW9uKGMpO2wuc2hpZnRLZXkmJmg/Yy5jb2w8aC5mcm9tLmNvbD9mLnB1c2goaC5nZXRUb3BFbmRDb3JuZXIoKS5jb2wsdixjLnJvdyk6Zi5wdXNoKGMuY29sPmguZnJvbS5jb2w/aC5nZXRUb3BTdGFydENvcm5lcigpLmNvbDp2LHYrUy0xLGMucm93''@;'; put 'put ''KTooZEwobCl8fE5tKGwpJiZWKSYmZi5wdXNoKHYsditTLTEsYy5yb3cpLGQuc2VsZWN0Q29sdW1ucyguLi5mKX1mdW5jdGlvbiBNMHQobCxjLGEsZCl7aWYoIXRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKSlyZXR1cm47Y29uc3QgaD10aGlzLl9nZXRIZWFkZXJUcmVlTm9kZURhdGFCeUNv''@;'; put 'put ''b3JkcyhjKTtpZighaClyZXR1cm47Y29uc3R7Y29sdW1uSW5kZXg6ZixvcmlnQ29sc3Bhbjp2fT1oLFM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxWPVMuZ2V0VG9wU3RhcnRDb3JuZXIoKSxRPVMuZ2V0Qm90dG9tRW5kQ29ybmVyKCkse2Zyb206ZGV9PVM7ZC5jb2x1bW49ITAs''@;'; put 'put ''ZC5jZWxsPSEwO2NvbnN0IHBlPVtdLENlPUhhKGMucm93LC0xLzAsLTEpO2MuY29sPGRlLmNvbD9wZS5wdXNoKFEuY29sLGYsQ2UpOnBlLnB1c2goYy5jb2w+ZGUuY29sP1YuY29sOmYsZit2LTEsQ2UpLHRoaXMuaG90LnNlbGVjdGlvbi5zZWxlY3RDb2x1bW5zKC4uLnBlKX1mdW5jdGlvbiB4''@;'; put 'put ''MHQoKXtINyhxUCx0aGlzLCExKX1mdW5jdGlvbiBFMHQoKXtjb25zdHtuYXZpZ2FibGVIZWFkZXJzOmx9PXRoaXMuaG90LmdldFNldHRpbmdzKCk7aWYoIXRoaXMuaG90LnZpZXcuaXNNb3VzZURvd24oKXx8IWVhKHFQLHRoaXMpfHwhbClyZXR1cm47Y29uc3QgYz10aGlzLmhvdC5nZXRTZWxl''@;'; put 'put ''Y3RlZFJhbmdlTGFzdCgpLGE9Yy5nZXRUb3BTdGFydENvcm5lcigpLmNvbCxkPWMuZ2V0Qm90dG9tRW5kQ29ybmVyKCkuY29sLHtjb2x1bW5JbmRleDpoLG9yaWdDb2xzcGFuOmZ9PWVhKHFhLHRoaXMpLmdldEhlYWRlclRyZWVOb2RlRGF0YShlYSgkRSx0aGlzKS5yb3csZWEoJEUsdGhpcyku''@;'; put 'put ''Y29sKTtpZihjLnNldEhpZ2hsaWdodChlYSgkRSx0aGlzKSksZj5jLmdldFdpZHRoKCl8fGg8YXx8aCtmLTE+ZCl7Y29uc3Qgdj1lYShxYSx0aGlzKS5maW5kVG9wTW9zdEVudGlyZUhlYWRlckxldmVsKEhhKGEsaCxoK2YtMSksSGEoZCxoLGgrZi0xKSk7Yy5oaWdobGlnaHQucm93PXYsYy5o''@;'; put 'put ''aWdobGlnaHQuY29sPWMuZnJvbS5jb2x9fWZ1bmN0aW9uIFQwdChsKXtjb25zdHtoaWdobGlnaHQ6Y309dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSxhPXRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGMucm93K2wucm93LGMuY29sK2wuY29sKTtpZighKGEuaXNIZWFkZXIoKSYm''@;'; put 'put ''YS5jb2w+PTApKXJldHVybjtjb25zdCBoPWVhKHFhLHRoaXMpLmZpbmRMZWZ0TW9zdENvbHVtbkluZGV4KGEucm93LGEuY29sKSxmPWVhKHFhLHRoaXMpLmZpbmRSaWdodE1vc3RDb2x1bW5JbmRleChhLnJvdyxhLmNvbCk7aWYobC5jb2w8MCl7Y29uc3QgUz10aGlzLmhvdC5jb2x1bW5JbmRl''@;'; put 'put ''eE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYy5jb2w+PWgmJmMuY29sPD1mP2gtMTpmLC0xKTtsLmNvbD1udWxsPT09Uz8tdGhpcy5ob3Qudmlldy5jb3VudFJlbmRlcmFibGVDb2x1bW5zSW5SYW5nZSgwLGMuY29sKTotTWF0aC5tYXgodGhpcy5ob3Qudmlldy5jb3VudFJlbmRl''@;'; put 'put ''cmFibGVDb2x1bW5zSW5SYW5nZShTLGMuY29sKS0xLDEpfWVsc2UgaWYobC5jb2w+MCl7Y29uc3QgUz10aGlzLmhvdC5jb2x1bW5JbmRleE1hcHBlci5nZXROZWFyZXN0Tm90SGlkZGVuSW5kZXgoYy5jb2w+PWgmJmMuY29sPD1mP2YrMTpoLDEpO2wuY29sPW51bGw9PT1TP3RoaXMuaG90LnZp''@;'; put 'put ''ZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoYy5jb2wsdGhpcy5ob3QuY291bnRDb2xzKCkpOk1hdGgubWF4KHRoaXMuaG90LnZpZXcuY291bnRSZW5kZXJhYmxlQ29sdW1uc0luUmFuZ2UoYy5jb2wsUyktMSwxKX19ZnVuY3Rpb24gazB0KGwsYyl7Y29uc3QgYT1sLnJvdyxkPXRo''@;'; put 'put ''aXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKHtyb3c6YSxjb2w6bC5jb2x9KSxoPXRoaXMuX2dldEhlYWRlclRyZWVOb2RlRGF0YUJ5Q29vcmRzKHtyb3c6YSxjb2w6Yy5jb2x9KTtjLmNvbDxsLmNvbD8oZCYmKGwuY29sPWQuY29sdW1uSW5kZXgrZC5vcmlnQ29sc3Bhbi0xKSxo''@;'; put 'put ''JiYoYy5jb2w9aC5jb2x1bW5JbmRleCkpOmMuY29sPj1sLmNvbCYmKGQmJihsLmNvbD1kLmNvbHVtbkluZGV4KSxoJiYoYy5jb2w9aC5jb2x1bW5JbmRleCtoLm9yaWdDb2xzcGFuLTEpKX1mdW5jdGlvbiBBMHQobCl7bC5sZW5ndGg9MDtmb3IobGV0IGM9MDtjPGVhKHFhLHRoaXMpLmdldExh''@;'; put 'put ''eWVyc0NvdW50KCk7YysrKWwucHVzaCh0aGlzLmhlYWRlclJlbmRlcmVyRmFjdG9yeShjKSl9ZnVuY3Rpb24gRDB0KGwpe2NvbnN0IGM9ZWEocWEsdGhpcykuZ2V0TGF5ZXJzQ291bnQoKTtsZXQgYT1sLnN0YXJ0Q29sdW1uLGQ9ISFjO2ZvcihsZXQgaD0wO2g8YztoKyspe2NvbnN0IGY9ZWEo''@;'; put 'put ''cWEsdGhpcykuZmluZExlZnRNb3N0Q29sdW1uSW5kZXgoaCxsLnN0YXJ0Q29sdW1uKSx2PXRoaXMuaG90LmNvbHVtbkluZGV4TWFwcGVyLmdldFJlbmRlcmFibGVGcm9tVmlzdWFsSW5kZXgoZik7aWYoZj49MCYmKGQ9ITEpLEwwKHYpJiZ2PGwuc3RhcnRDb2x1bW4pe2E9djticmVha319bC5z''@;'; put 'put ''dGFydENvbHVtbj1kP2VhKHFhLHRoaXMpLmdldEhlYWRlclRyZWVOb2RlRGF0YSgwLGEpLmNvbHVtbkluZGV4OmF9ZnVuY3Rpb24gSTB0KGwsYyl7Y29uc3QgYT10aGlzLmdob3N0VGFibGUuZ2V0V2lkdGgoYyk7cmV0dXJuIGw+YT9sOmF9ZnVuY3Rpb24gUjB0KGwsYyxhKXt2YXIgZDtjb25z''@;'; put 'put ''dHtsYWJlbDpofT1udWxsIT09KGQ9ZWEocWEsdGhpcykuZ2V0SGVhZGVyVHJlZU5vZGVEYXRhKGEsYykpJiZ2b2lkIDAhPT1kP2Q6e2xhYmVsOiIifTtyZXR1cm4gaH1mdW5jdGlvbiBMMHQobCxjKXtpZihsPDApcmV0dXJuIHRoaXMuaG90LmdldENlbGwobCxlYShxYSx0aGlzKS5maW5kTGVm''@;'; put 'put ''dE1vc3RDb2x1bW5JbmRleChsLGMpLCEwKX1mdW5jdGlvbiBPMHQoKXt0aGlzLnVwZGF0ZVBsdWdpbigpfWZ1bmN0aW9uIFAwdChsLGMpe2N8fHRoaXMudXBkYXRlUGx1Z2luKCl9ZnVuY3Rpb24gcUUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEYwdChsKXt2YXIgYz1mdW5jdGlvbiBOMHQo''@;'; put 'put ''bCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJA''@;'; put 'put ''QHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxj''@;'; put 'put ''LHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgVjB0PWNsYXNzIEgwdHtjb25zdHJ1Y3RvcihjLGEpe3FFKHRoaXMsImhvdCIsdm9pZCAwKSxxRSh0aGlzLCJkYXRhIixudWxsKSxxRSh0aGlzLCJwbHVnaW4iLHZvaWQg''@;'; put 'put ''MCkscUUodGhpcywicGFyZW50UmVmZXJlbmNlIixuZXcgV2Vha01hcCkscUUodGhpcywiY2FjaGUiLHtsZXZlbHM6W10sbGV2ZWxDb3VudDowLHJvd3M6W10sbm9kZUluZm86bmV3IFdlYWtNYXB9KSx0aGlzLmhvdD1hLHRoaXMucGx1Z2luPWN9c2V0RGF0YShjKXt0aGlzLmRhdGE9Y31nZXRE''@;'; put 'put ''YXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1nZXRSYXdTb3VyY2VEYXRhKCl7bGV0IGM9bnVsbDtyZXR1cm4gdGhpcy5wbHVnaW4uZGlzYWJsZUNvcmVBUElNb2RpZmllcnMoKSxjPXRoaXMuaG90LmdldFNvdXJjZURhdGEoKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksY311''@;'; put 'put ''cGRhdGVXaXRoRGF0YShjKXt0aGlzLnNldERhdGEoYyksdGhpcy5yZXdyaXRlQ2FjaGUoKX1yZXdyaXRlQ2FjaGUoKXt0aGlzLmNhY2hlPXtsZXZlbHM6W10sbGV2ZWxDb3VudDowLHJvd3M6W10sbm9kZUluZm86bmV3IFdlYWtNYXB9LGdvKDAsdGhpcy5kYXRhLmxlbmd0aC0xLGM9Pnt0aGlz''@;'; put 'put ''LmNhY2hlTm9kZSh0aGlzLmRhdGFbY10sMCxudWxsKX0pfWNhY2hlTm9kZShjLGEsZCl7dGhpcy5jYWNoZS5sZXZlbHNbYV18fCh0aGlzLmNhY2hlLmxldmVsc1thXT1bXSx0aGlzLmNhY2hlLmxldmVsQ291bnQrPTEpLHRoaXMuY2FjaGUubGV2ZWxzW2FdLnB1c2goYyksdGhpcy5jYWNoZS5y''@;'; put 'put ''b3dzLnB1c2goYyksdGhpcy5jYWNoZS5ub2RlSW5mby5zZXQoYyx7cGFyZW50OmQscm93OnRoaXMuY2FjaGUucm93cy5sZW5ndGgtMSxsZXZlbDphfSksdGhpcy5oYXNDaGlsZHJlbihjKSYmVG4oYy5fX2NoaWxkcmVuLGg9Pnt0aGlzLmNhY2hlTm9kZShoLGErMSxjKX0pfWdldERhdGFPYmpl''@;'; put 'put ''Y3QoYyl7cmV0dXJuIG51bGw9PWM/bnVsbDp0aGlzLmNhY2hlLnJvd3NbY119cmVhZFRyZWVOb2RlcyhjLGEsZCxoKXtsZXQgZj0hMSx2PWE7aWYoaXNOYU4odikmJnYuZW5kKXJldHVybiB2O2xldCBTPWM7cmV0dXJuIFN8fChTPXtfX2NoaWxkcmVuOnRoaXMuZGF0YX0sZj0hMCx2LT0xKSxu''@;'; put 'put ''dWxsIT1kJiZ2PT09ZD97cmVzdWx0OlMsZW5kOiEwfTpudWxsIT1oJiZTPT09aD97cmVzdWx0OnYsZW5kOiEwfToodis9MSxTLl9fY2hpbGRyZW4mJlRuKFMuX19jaGlsZHJlbixWPT57aWYodGhpcy5wYXJlbnRSZWZlcmVuY2Uuc2V0KFYsZj9udWxsOlMpLHY9dGhpcy5yZWFkVHJlZU5vZGVz''@;'; put 'put ''KFYsdixkLGgpLGlzTmFOKHYpJiZ2LmVuZClyZXR1cm4hMX0pLHYpfW1vY2tQYXJlbnQoKXtjb25zdCBjPXRoaXMubW9ja05vZGUoKTtyZXR1cm4gYy5fX2NoaWxkcmVuPXRoaXMuZGF0YSxjfW1vY2tOb2RlKCl7Y29uc3QgYz17fTtyZXR1cm4gQ3ModGhpcy5kYXRhWzBdLChhLGQpPT57Y1tk''@;'; put 'put ''XT1udWxsfSksY31nZXRSb3dJbmRleChjKXtyZXR1cm4gbnVsbD09Yz9udWxsOnRoaXMuY2FjaGUubm9kZUluZm8uZ2V0KGMpLnJvd31nZXRSb3dJbmRleFdpdGhpblBhcmVudChjKXtsZXQgYT1udWxsO2E9aXNOYU4oYyk/Yzp0aGlzLmdldERhdGFPYmplY3QoYyk7Y29uc3QgZD10aGlzLmdl''@;'; put 'put ''dFJvd1BhcmVudChjKTtyZXR1cm4gbnVsbD09ZD90aGlzLmRhdGEuaW5kZXhPZihhKTpkLl9fY2hpbGRyZW4uaW5kZXhPZihhKX1jb3VudEFsbFJvd3MoKXtyZXR1cm4gdGhpcy5jb3VudENoaWxkcmVuKHtfX2NoaWxkcmVuOnRoaXMuZGF0YX0pfWNvdW50Q2hpbGRyZW4oYyl7bGV0IGE9MCxk''@;'; put 'put ''PWM7cmV0dXJuIGlzTmFOKGQpfHwoZD10aGlzLmdldERhdGFPYmplY3QoZCkpLGQmJmQuX19jaGlsZHJlbj8oVG4oZC5fX2NoaWxkcmVuLGg9PnthKz0xLGguX19jaGlsZHJlbiYmKGErPXRoaXMuY291bnRDaGlsZHJlbihoKSl9KSxhKTowfWdldFJvd1BhcmVudChjKXtsZXQgYTtyZXR1cm4g''@;'; put 'put ''YT1pc05hTihjKT9jOnRoaXMuZ2V0RGF0YU9iamVjdChjKSx0aGlzLmdldFJvd09iamVjdFBhcmVudChhKX1nZXRSb3dPYmplY3RQYXJlbnQoYyl7cmV0dXJuIGMmJiJvYmplY3QiPT10eXBlb2YgYz90aGlzLmNhY2hlLm5vZGVJbmZvLmdldChjKS5wYXJlbnQ6bnVsbH1nZXRSb3dMZXZlbChj''@;'; put 'put ''KXtsZXQgYT1udWxsO3JldHVybiBhPWlzTmFOKGMpP2M6dGhpcy5nZXREYXRhT2JqZWN0KGMpLGE/dGhpcy5nZXRSb3dPYmplY3RMZXZlbChhKTpudWxsfWdldFJvd09iamVjdExldmVsKGMpe3JldHVybiBudWxsPT1jP251bGw6dGhpcy5jYWNoZS5ub2RlSW5mby5nZXQoYykubGV2ZWx9aGFz''@;'; put 'put ''Q2hpbGRyZW4oYyl7bGV0IGE9YztyZXR1cm4gaXNOYU4oYSl8fChhPXRoaXMuZ2V0RGF0YU9iamVjdChhKSksISghYS5fX2NoaWxkcmVufHwhYS5fX2NoaWxkcmVuLmxlbmd0aCl9aXNDaGlsZChjKXtyZXR1cm4gbnVsbCE9PXRoaXMuZ2V0Um93UGFyZW50KGMpfWdldENoaWxkKGMsYSl7dmFy''@;'; put 'put ''IGQ7cmV0dXJuKG51bGw9PT0oZD1jLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT1kP3ZvaWQgMDpkW2FdKXx8bnVsbH1pc1Jvd0hpZ2hlc3RMZXZlbChjKXtyZXR1cm4hdGhpcy5pc0NoaWxkKGMpfWlzUGFyZW50KGMpe3ZhciBhO2xldCBkPWM7cmV0dXJuIGlzTmFOKGQpfHwoZD10aGlzLmdldERh''@;'; put 'put ''dGFPYmplY3QoZCkpLGQmJiEhZC5fX2NoaWxkcmVuJiYwIT09KG51bGw9PT0oYT1kLl9fY2hpbGRyZW4pfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmxlbmd0aCl9YWRkQ2hpbGQoYyxhKXtsZXQgZD1hO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVBZGRDaGlsZCIsYyxkKTtsZXQgaD1udWxsO2Mm''@;'; put 'put ''JihoPXRoaXMuZ2V0Um93SW5kZXgoYykpLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLGgrdGhpcy5jb3VudENoaWxkcmVuKGMpKzEsMSk7bGV0IGY9YztjfHwoZj10aGlzLm1vY2tQYXJlbnQoKSksZi5fX2NoaWxkcmVufHwoZi5fX2NoaWxkcmVuPVtdKSxkfHwoZD10aGlz''@;'; put 'put ''Lm1vY2tOb2RlKCkpLGYuX19jaGlsZHJlbi5wdXNoKGQpLHRoaXMucmV3cml0ZUNhY2hlKCk7Y29uc3Qgdj10aGlzLmdldFJvd0luZGV4KGQpO3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXModiwxKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJDcmVhdGVSb3ciLHYsMSks''@;'; put 'put ''dGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGMsZCl9YWRkQ2hpbGRBdEluZGV4KGMsYSxkKXtsZXQgZixoPWQ7aWYoaHx8KGg9dGhpcy5tb2NrTm9kZSgpKSx0aGlzLmhvdC5ydW5Ib29rcygiYmVmb3JlQWRkQ2hpbGQiLGMsaCxhKSxjKXtjb25zdCBTPXRoaXMuZ2V0Um93SW5k''@;'; put 'put ''ZXgoYykrYSsxO3RoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLFMsMSksYy5fX2NoaWxkcmVuLnNwbGljZShhLG51bGwsaCksdGhpcy5yZXdyaXRlQ2FjaGUoKSx0aGlzLnBsdWdpbi5kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpLHRoaXMuaG90LnNldFNvdXJjZURhdGFBdENl''@;'; put 'put ''bGwodGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChjKSwiX19jaGlsZHJlbiIsYy5fX2NoaWxkcmVuLCJOZXN0ZWRSb3dzLmFkZENoaWxkQXRJbmRleCIpLHRoaXMuaG90LnJvd0luZGV4TWFwcGVyLmluc2VydEluZGV4ZXMoUywxKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZp''@;'; put 'put ''ZXJzKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixTLDEpLGY9U31lbHNlIHRoaXMucGx1Z2luLmRpc2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3QuYWx0ZXIoImluc2VydF9yb3dfYWJvdmUiLGEsMSwiTmVzdGVkUm93cy5hZGRDaGlsZEF0SW5kZXgiKSx0aGlz''@;'; put 'put ''LnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZpZXJzKCksZj10aGlzLmdldFJvd0luZGV4KHRoaXMuZGF0YVthXSk7aD10aGlzLmdldERhdGFPYmplY3QoZiksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQWRkQ2hpbGQiLGMsaCxhKX1hZGRTaWJsaW5nKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiYmVsb3ciO2NvbnN0IGQ9dGhpcy50cmFuc2xhdGVUcmltbWVkUm93KGMpLGg9dGhpcy5nZXRSb3dQYXJlbnQoZCksZj10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGQpO3N3aXRjaChhKXtjYXNlImJlbG93Ijp0''@;'; put 'put ''aGlzLmFkZENoaWxkQXRJbmRleChoLGYrMSxudWxsKTticmVhaztjYXNlImFib3ZlIjp0aGlzLmFkZENoaWxkQXRJbmRleChoLGYsbnVsbCl9fWRldGFjaEZyb21QYXJlbnQoYyl7bGV0IGE9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sx''@;'; put 'put ''XSxkPW51bGw7Y29uc3QgaD1bXTtBcnJheS5pc0FycmF5KGMpPyhnbyhjWzBdLGNbMl0sQ2U9Pntjb25zdCBPZT10aGlzLnRyYW5zbGF0ZVRyaW1tZWRSb3coQ2UpO2gucHVzaCh0aGlzLmdldERhdGFPYmplY3QoT2UpKX0pLGdvKDAsaC5sZW5ndGgtMixDZT0+e3RoaXMuZGV0YWNoRnJvbVBh''@;'; put 'put ''cmVudChoW0NlXSwhMSl9KSxkPWhbaC5sZW5ndGgtMV0pOmQ9Yztjb25zdCBmPXRoaXMuZ2V0Um93SW5kZXgoZCksdj10aGlzLmNvdW50Q2hpbGRyZW4oZCksUz10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGQpLFY9dGhpcy5nZXRSb3dQYXJlbnQoZCksUT10aGlzLmdldFJvd1BhcmVu''@;'; put 'put ''dChWKSxkZT10aGlzLmdldFJvd0luZGV4KFEpO2xldCBwZT1udWxsO2lmKHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVEZXRhY2hDaGlsZCIsVixkKSxudWxsIT1TKXtjb25zdCBDZT1BcnJheS5mcm9tKG5ldyBBcnJheShmK3YrMSkua2V5cygpKS5zcGxpY2UoLTEqKHYrMSkpO2lmKHRoaXMu''@;'; put 'put ''aG90LnJ1bkhvb2tzKCJiZWZvcmVSZW1vdmVSb3ciLGYsdisxLENlLHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLFYuX19jaGlsZHJlbi5zcGxpY2UoUywxKSx0aGlzLnJld3JpdGVDYWNoZSgpLHRoaXMuaG90LnJ1bkhvb2tzKCJhZnRlclJlbW92ZVJvdyIsZix2KzEsQ2UsdGhpcy5wbHVnaW4u''@;'; put 'put ''cGx1Z2luTmFtZSksUSl7cGU9ZGUrdGhpcy5jb3VudENoaWxkcmVuKFEpO2NvbnN0IE9lPXRoaXMuZ2V0Q2hpbGQoUSx0aGlzLmNvdW50Q2hpbGRyZW4oUSktMSksWWU9dGhpcy5nZXRSb3dJbmRleChPZSk7dGhpcy5ob3QucnVuSG9va3MoImJlZm9yZUNyZWF0ZVJvdyIsWWUrMSx2KzEsdGhp''@;'; put 'put ''cy5wbHVnaW4ucGx1Z2luTmFtZSksUS5fX2NoaWxkcmVuLnB1c2goZCl9ZWxzZSBwZT10aGlzLmhvdC5jb3VudFJvd3MoKSsxLHRoaXMuaG90LnJ1bkhvb2tzKCJiZWZvcmVDcmVhdGVSb3ciLHBlLTIsdisxLHRoaXMucGx1Z2luLnBsdWdpbk5hbWUpLHRoaXMuZGF0YS5wdXNoKGQpfXRoaXMu''@;'; put 'put ''cmV3cml0ZUNhY2hlKCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyQ3JlYXRlUm93IixwZS0yLHYrMSx0aGlzLnBsdWdpbi5wbHVnaW5OYW1lKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJEZXRhY2hDaGlsZCIsVixkLHRoaXMuZ2V0Um93SW5kZXgoZCkpLGEmJnRoaXMuaG90LnJlbmRlcigp''@;'; put 'put ''fWZpbHRlckRhdGEoYyxhLGQpe2NvbnN0IGg9W107VG4oZCxmPT57aC5wdXNoKHRoaXMuZ2V0RGF0YU9iamVjdChmKSl9KSxUbihoLGY9Pntjb25zdCB2PXRoaXMuZ2V0Um93SW5kZXhXaXRoaW5QYXJlbnQoZiksUz10aGlzLmdldFJvd1BhcmVudChmKTtudWxsPT09Uz90aGlzLmRhdGEuc3Bs''@;'; put 'put ''aWNlKHYsMSk6Uy5fX2NoaWxkcmVuLnNwbGljZSh2LDEpfSksdGhpcy5yZXdyaXRlQ2FjaGUoKX1zcGxpY2VEYXRhKGMsYSxkKXtjb25zdCBoPXRoaXMuZ2V0RGF0YU9iamVjdChjLTEpO2xldCBmPW51bGwsdj1jO2gmJmguX19jaGlsZHJlbiYmMD09PWguX19jaGlsZHJlbi5sZW5ndGg/KGY9''@;'; put 'put ''aCx2PTApOmM8dGhpcy5jb3VudEFsbFJvd3MoKSYmKGY9dGhpcy5nZXRSb3dQYXJlbnQoYyksdj10aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGMpKSxmP2Q/Zi5fX2NoaWxkcmVuLnNwbGljZSh2LGEsLi4uZCk6Zi5fX2NoaWxkcmVuLnNwbGljZSh2LGEpOmQ/dGhpcy5kYXRhLnNwbGlj''@;'; put 'put ''ZSh2LGEsLi4uZCk6dGhpcy5kYXRhLnNwbGljZSh2LGEpLHRoaXMucmV3cml0ZUNhY2hlKCl9c3luY1Jvd1dpdGhSYXdTb3VyY2UoYyl7bGV0IGE9YyxkPW51bGw7ZG97ZD10aGlzLmdldFJvd1BhcmVudChkKSxudWxsIT09ZCYmKGE9ZCl9d2hpbGUobnVsbCE9PWQpO3RoaXMucGx1Z2luLmRp''@;'; put 'put ''c2FibGVDb3JlQVBJTW9kaWZpZXJzKCksdGhpcy5ob3Quc2V0U291cmNlRGF0YUF0Q2VsbCh0aGlzLmdldFJvd0luZGV4KGEpLCJfX2NoaWxkcmVuIixhLl9fY2hpbGRyZW4sIk5lc3RlZFJvd3Muc3luY1Jvd1dpdGhSYXdTb3VyY2UiKSx0aGlzLnBsdWdpbi5lbmFibGVDb3JlQVBJTW9kaWZp''@;'; put 'put ''ZXJzKCl9bW92ZVJvdyhjLGEsZCxoKXtjb25zdCBmPWE9PT10aGlzLmhvdC5jb3VudFJvd3MoKSx2PXRoaXMuZ2V0Um93UGFyZW50KGMpLFM9dGhpcy5nZXRSb3dJbmRleFdpdGhpblBhcmVudChjKSxWPXYuX19jaGlsZHJlbi5zbGljZShTLFMrMSksUT1jPmE7bGV0IGRlPXRoaXMuZ2V0Um93''@;'; put 'put ''UGFyZW50KGY/YS0xOmEpO251bGw9PWRlJiYoZGU9dGhpcy5nZXRSb3dQYXJlbnQoYS0xKSksbnVsbD09ZGUmJihkZT10aGlzLmdldERhdGFPYmplY3QoYS0xKSksZGU/ZGUuX19jaGlsZHJlbnx8KGRlLl9fY2hpbGRyZW49W10pOihkZT10aGlzLmdldERhdGFPYmplY3QoYSksZGUuX19jaGls''@;'; put 'put ''ZHJlbj1bXSk7Y29uc3QgcGU9Znx8ZHx8aD9kZS5fX2NoaWxkcmVuLmxlbmd0aDp0aGlzLmdldFJvd0luZGV4V2l0aGluUGFyZW50KGEpLENlPXY9PT1kZTtkZS5fX2NoaWxkcmVuLnNwbGljZShwZSwwLFZbMF0pLHYuX19jaGlsZHJlbi5zcGxpY2UoUysoUSYmQ2U/MTowKSwxKSx0aGlzLnN5''@;'; put 'put ''bmNSb3dXaXRoUmF3U291cmNlKHYpLENlfHx0aGlzLnN5bmNSb3dXaXRoUmF3U291cmNlKGRlKX10cmFuc2xhdGVUcmltbWVkUm93KGMpe3JldHVybiB0aGlzLnBsdWdpbi5jb2xsYXBzaW5nVUk/dGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJLnRyYW5zbGF0ZVRyaW1tZWRSb3coYyk6Y311bnRy''@;'; put 'put ''YW5zbGF0ZVRyaW1tZWRSb3coYyl7cmV0dXJuIHRoaXMucGx1Z2luLmNvbGxhcHNpbmdVST90aGlzLnBsdWdpbi5jb2xsYXBzaW5nVUkudW50cmFuc2xhdGVUcmltbWVkUm93KGMpOmN9fTtmdW5jdGlvbiBGcGUobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIEIwdChsKXt2YXIgYz1mdW5jdGlv''@;'; put 'put ''biBqMHQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVy''@;'; put 'put ''cm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9Y29uc3QgT1g9Y2xhc3MgejB0e2NvbnN0cnVjdG9yKGMsYSl7RnBlKHRoaXMsImhvdCIsdm9pZCAwKSxGcGUodGhpcywicGx1Z2luIix2b2lkIDApLHRoaXMuaG90PWEs''@;'; put 'put ''dGhpcy5wbHVnaW49Y319O2NsYXNzIFE0IGV4dGVuZHMgT1h7c3RhdGljIGdldCBDU1NfQ0xBU1NFUygpe3JldHVybntpbmRpY2F0b3JDb250YWluZXI6Imh0X25lc3RpbmdMZXZlbHMiLHBhcmVudDoiaHRfbmVzdGluZ1BhcmVudCIsaW5kaWNhdG9yOiJodF9uZXN0aW5nTGV2ZWwiLGVtcHR5''@;'; put 'put ''SW5kaWNhdG9yOiJodF9uZXN0aW5nTGV2ZWxfZW1wdHkiLGJ1dHRvbjoiaHRfbmVzdGluZ0J1dHRvbiIsZXhwYW5kQnV0dG9uOiJodF9uZXN0aW5nRXhwYW5kIixjb2xsYXBzZUJ1dHRvbjoiaHRfbmVzdGluZ0NvbGxhcHNlIn19Y29uc3RydWN0b3IoYyxhKXtzdXBlcihjLGEpLHRoaXMuZGF0''@;'; put 'put ''YU1hbmFnZXI9dGhpcy5wbHVnaW4uZGF0YU1hbmFnZXIsdGhpcy5jb2xsYXBzaW5nVUk9dGhpcy5wbHVnaW4uY29sbGFwc2luZ1VJLHRoaXMucm93SGVhZGVyV2lkdGhDYWNoZT1udWxsfWFwcGVuZExldmVsSW5kaWNhdG9ycyhjLGEpe2NvbnN0IGQ9dGhpcy5ob3QudG9QaHlzaWNhbFJvdyhj''@;'; put 'put ''KSxoPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93TGV2ZWwoZCksZj10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZCksdj1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJESVYiKVswXSxTPXYucXVlcnlTZWxlY3Rvcigic3Bhbi5yb3dIZWFkZXIiKSxWPXYucXVlcnlTZWxlY3RvckFsbCgn''@;'; put 'put ''W2NsYXNzXj0iaHRfbmVzdGluZyJdJyksUT10aGlzLmhvdC5nZXRTZXR0aW5ncygpLmFyaWFUYWdzO2lmKFRuKFYsZGU9PntkZSYmdi5yZW1vdmVDaGlsZChkZSl9KSxtaShhLFE0LkNTU19DTEFTU0VTLmluZGljYXRvckNvbnRhaW5lciksaCl7Y29uc3R7cm9vdERvY3VtZW50OmRlfT10aGlz''@;'; put 'put ''LmhvdCxwZT1TLmNsb25lTm9kZSghMCk7di5pbm5lckhUTUw9IiIsZ28oMCxoLTEsKCk9Pntjb25zdCBDZT1kZS5jcmVhdGVFbGVtZW50KCJTUEFOIik7bWkoQ2UsUTQuQ1NTX0NMQVNTRVMuZW1wdHlJbmRpY2F0b3IpLHYuYXBwZW5kQ2hpbGQoQ2UpfSksdi5hcHBlbmRDaGlsZChwZSl9aWYo''@;'; put 'put ''dGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihmKSl7Y29uc3QgZGU9dGhpcy5ob3Qucm9vdERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO1EmJlZvKGRlLFtNNCgpXSksbWkoYSxRNC5DU1NfQ0xBU1NFUy5wYXJlbnQpLHRoaXMuY29sbGFwc2luZ1VJLmFyZUNoaWxkcmVuQ29sbGFw''@;'; put 'put ''c2VkKGQpPyhtaShkZSxgJHtRNC5DU1NfQ0xBU1NFUy5idXR0b259ICR7UTQuQ1NTX0NMQVNTRVMuZXhwYW5kQnV0dG9ufWApLFEmJlZvKGEsW05oKCExKV0pKToobWkoZGUsYCR7UTQuQ1NTX0NMQVNTRVMuYnV0dG9ufSAke1E0LkNTU19DTEFTU0VTLmNvbGxhcHNlQnV0dG9ufWApLFEmJlZv''@;'; put 'put ''KGEsW05oKCEwKV0pKSx2LmFwcGVuZENoaWxkKGRlKX19dXBkYXRlUm93SGVhZGVyV2lkdGgoYyl7bGV0IGE9YzthfHwoYT10aGlzLmRhdGFNYW5hZ2VyLmNhY2hlLmxldmVsQ291bnQpLHRoaXMucm93SGVhZGVyV2lkdGhDYWNoZT1NYXRoLm1heCg1MCwxMSsxMCphKzI1KSx0aGlzLmhvdC5y''@;'; put 'put ''ZW5kZXIoKX19Y29uc3QgTnBlPVE0LFowdD1jbGFzcyBVMHQgZXh0ZW5kcyBPWHtjb25zdHJ1Y3RvcihjLGEpe3ZhciBkO3N1cGVyKGMsYSksZD10aGlzLHRoaXMuZGF0YU1hbmFnZXI9dGhpcy5wbHVnaW4uZGF0YU1hbmFnZXIsdGhpcy5jb2xsYXBzZWRSb3dzPVtdLHRoaXMuY29sbGFwc2Vk''@;'; put 'put ''Um93c1N0YXNoPXtzdGFzaDpmdW5jdGlvbigpe2xldCBoPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07ZC5sYXN0Q29sbGFwc2VkUm93cz1kLmNvbGxhcHNlZFJvd3Muc2xpY2UoMCksZC5leHBhbmRNdWx0aXBsZUNoaWxkcmVuKGQubGFz''@;'; put 'put ''dENvbGxhcHNlZFJvd3MsaCl9LHNoaWZ0U3Rhc2g6ZnVuY3Rpb24oaCxmKXtsZXQgdj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTtudWxsPT1mJiYoZj0xLzApLFRuKGQubGFzdENvbGxhcHNlZFJvd3MsKFMsVik9PntTPj1oJiZTPGYm''@;'; put 'put ''JihkLmxhc3RDb2xsYXBzZWRSb3dzW1ZdPVMrdil9KX0sYXBwbHlTdGFzaDpmdW5jdGlvbigpe2QuY29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuKGQubGFzdENvbGxhcHNlZFJvd3MsIShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSksZC5s''@;'; put 'put ''YXN0Q29sbGFwc2VkUm93cz12b2lkIDB9LHRyaW1TdGFzaDooaCxmKT0+e2dvKGgsaCtmLTEsdj0+e2NvbnN0IFM9dGhpcy5sYXN0Q29sbGFwc2VkUm93cy5pbmRleE9mKHYpO1M+LTEmJnRoaXMubGFzdENvbGxhcHNlZFJvd3Muc3BsaWNlKFMsMSl9KX19fWNvbGxhcHNlQ2hpbGRyZW4oYyl7''@;'; put 'put ''bGV0IGE9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxkPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07Y29uc3QgaD1bXTtsZXQgZj1udWxsLHY9bnVsbCxTPW51bGw7cmV0''@;'; put 'put ''dXJuIGlzTmFOKGMpPyhmPWMsdj10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KGYpKTooZj10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoYyksdj1jKSx0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGYpJiZUbihmLl9fY2hpbGRyZW4sVj0+e2gucHVzaCh0aGlzLmRhdGFN''@;'; put 'put ''YW5hZ2VyLmdldFJvd0luZGV4KFYpKX0pLFM9dGhpcy5jb2xsYXBzZVJvd3MoaCwhMCwhMSksZCYmdGhpcy50cmltUm93cyhTKSxhJiZ0aGlzLnJlbmRlckFuZEFkanVzdCgpLC0xPT09dGhpcy5jb2xsYXBzZWRSb3dzLmluZGV4T2YodikmJnRoaXMuY29sbGFwc2VkUm93cy5wdXNoKHYpLFN9''@;'; put 'put ''Y29sbGFwc2VNdWx0aXBsZUNoaWxkcmVuKGMpe2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sZD0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO2NvbnN0IGg9W107''@;'; put 'put ''VG4oYyxmPT57aC5wdXNoKC4uLnRoaXMuY29sbGFwc2VDaGlsZHJlbihmLCExLCExKSl9KSxkJiZ0aGlzLnRyaW1Sb3dzKGgpLGEmJnRoaXMucmVuZGVyQW5kQWRqdXN0KCl9Y29sbGFwc2VSb3coYyl7dGhpcy5jb2xsYXBzZVJvd3MoW2NdLCEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAh''@;'; put 'put ''PT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0pfWNvbGxhcHNlUm93cyhjKXtsZXQgYT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50''@;'; put 'put ''c1syXTtjb25zdCBoPVtdO3JldHVybiBUbihjLGY9PntoLnB1c2goZiksYSYmdGhpcy5jb2xsYXBzZUNoaWxkUm93cyhmLGgpfSksZCYmdGhpcy50cmltUm93cyhoKSxofWNvbGxhcHNlQ2hpbGRSb3dzKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFd''@;'; put 'put ''P2FyZ3VtZW50c1sxXTpbXSxoPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107dGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihjKSYmVG4odGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGMpLl9fY2hpbGRyZW4sdj0+e2NvbnN0''@;'; put 'put ''IFM9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleCh2KTthLnB1c2goUyksdGhpcy5jb2xsYXBzZUNoaWxkUm93cyhTLGEpfSksaCYmdGhpcy50cmltUm93cyhhKX1leHBhbmRSb3coYyl7dGhpcy5leHBhbmRSb3dzKFtjXSwhKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1l''@;'; put 'put ''bnRzWzFdKXx8YXJndW1lbnRzWzFdKX1leHBhbmRSb3dzKGMpe2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sZD1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2NvbnN0''@;'; put 'put ''IGg9W107cmV0dXJuIFRuKGMsZj0+e2gucHVzaChmKSxhJiZ0aGlzLmV4cGFuZENoaWxkUm93cyhmLGgpfSksZCYmdGhpcy51bnRyaW1Sb3dzKGgpLGh9ZXhwYW5kQ2hpbGRSb3dzKGMpe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sx''@;'; put 'put ''XTpbXSxoPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107dGhpcy5kYXRhTWFuYWdlci5oYXNDaGlsZHJlbihjKSYmVG4odGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGMpLl9fY2hpbGRyZW4sdj0+e2lmKCF0aGlzLmlzQW55UGFy''@;'; put 'put ''ZW50Q29sbGFwc2VkKHYpKXtjb25zdCBTPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgodik7YS5wdXNoKFMpLHRoaXMuZXhwYW5kQ2hpbGRSb3dzKFMsYSl9fSksaCYmdGhpcy51bnRyaW1Sb3dzKGEpfWV4cGFuZENoaWxkcmVuKGMpe2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2''@;'; put 'put ''b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sZD0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO2NvbnN0IGg9W107bGV0IGY9bnVsbCx2PW51bGwsUz1udWxsO3JldHVybiBpc05hTihjKT8oZj1jLHY9dGhpcy5kYXRh''@;'; put 'put ''TWFuYWdlci5nZXRSb3dJbmRleChjKSk6KGY9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGMpLHY9YyksdGhpcy5jb2xsYXBzZWRSb3dzLnNwbGljZSh0aGlzLmNvbGxhcHNlZFJvd3MuaW5kZXhPZih2KSwxKSx0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGYpJiZUbihmLl9f''@;'; put 'put ''Y2hpbGRyZW4sVj0+e2NvbnN0IFE9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChWKTtoLnB1c2goUSl9KSxTPXRoaXMuZXhwYW5kUm93cyhoLCEwLCExKSxkJiZ0aGlzLnVudHJpbVJvd3MoUyksYSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKSxTfWV4cGFuZE11bHRpcGxlQ2hpbGRyZW4o''@;'; put 'put ''Yyl7bGV0IGE9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxkPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07Y29uc3QgaD1bXTtUbihjLGY9PntoLnB1c2goLi4udGhpcy5l''@;'; put 'put ''eHBhbmRDaGlsZHJlbihmLCExLCExKSl9KSxkJiZ0aGlzLnVudHJpbVJvd3MoaCksYSYmdGhpcy5yZW5kZXJBbmRBZGp1c3QoKX1jb2xsYXBzZUFsbCgpe2NvbnN0IGM9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhKCksYT1bXTtUbihjLGQ9Pnt0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVu''@;'; put 'put ''KGQpJiZhLnB1c2goZCl9KSx0aGlzLmNvbGxhcHNlTXVsdGlwbGVDaGlsZHJlbihhKSx0aGlzLnJlbmRlckFuZEFkanVzdCgpfWV4cGFuZEFsbCgpe2NvbnN0IGM9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhKCksYT1bXTtUbihjLGQ9Pnt0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGQp''@;'; put 'put ''JiZhLnB1c2goZCl9KSx0aGlzLmV4cGFuZE11bHRpcGxlQ2hpbGRyZW4oYSksdGhpcy5yZW5kZXJBbmRBZGp1c3QoKX10cmltUm93cyhjKXt0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1RuKGMsYT0+e3RoaXMucGx1Z2luLmNvbGxhcHNlZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KGEs''@;'; put 'put ''ITApfSl9LCEwKX11bnRyaW1Sb3dzKGMpe3RoaXMuaG90LmJhdGNoRXhlY3V0aW9uKCgpPT57VG4oYyxhPT57dGhpcy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5zZXRWYWx1ZUF0SW5kZXgoYSwhMSl9KX0sITApfWFyZUNoaWxkcmVuQ29sbGFwc2VkKGMpe2xldCBhPWlzTmFOKGMpP2M6dGhp''@;'; put 'put ''cy5kYXRhTWFuYWdlci5nZXREYXRhT2JqZWN0KGMpLGQ9ITA7cmV0dXJuIG51bGw9PT1hJiYoYT17X19jaGlsZHJlbjp0aGlzLmRhdGFNYW5hZ2VyLmRhdGF9KSx0aGlzLmRhdGFNYW5hZ2VyLmhhc0NoaWxkcmVuKGEpJiZUbihhLl9fY2hpbGRyZW4saD0+e2NvbnN0IGY9dGhpcy5kYXRhTWFu''@;'; put 'put ''YWdlci5nZXRSb3dJbmRleChoKTtpZighdGhpcy5wbHVnaW4uY29sbGFwc2VkUm93c01hcC5nZXRWYWx1ZUF0SW5kZXgoZikpcmV0dXJuIGQ9ITEsITF9KSxkfWlzQW55UGFyZW50Q29sbGFwc2VkKGMpe2xldCBhPWM7Zm9yKDtudWxsIT09YTspe2E9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQ''@;'; put 'put ''YXJlbnQoYSk7Y29uc3QgZD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd0luZGV4KGEpO2lmKHRoaXMuY29sbGFwc2VkUm93cy5pbmRleE9mKGQpPi0xKXJldHVybiEwfXJldHVybiExfXRvZ2dsZVN0YXRlKGMsYSl7aWYoYS5jb2w+PTApcmV0dXJuO2NvbnN0IGQ9dGhpcy50cmFuc2xhdGVUcmlt''@;'; put 'put ''bWVkUm93KGEucm93KTtZbyhjLnRhcmdldCxOcGUuQ1NTX0NMQVNTRVMuYnV0dG9uKSYmKHRoaXMuYXJlQ2hpbGRyZW5Db2xsYXBzZWQoZCk/dGhpcy5leHBhbmRDaGlsZHJlbihkKTp0aGlzLmNvbGxhcHNlQ2hpbGRyZW4oZCksamgoYykpfXRyYW5zbGF0ZVRyaW1tZWRSb3coYyl7cmV0dXJu''@;'; put 'put ''IHRoaXMuaG90LnRvUGh5c2ljYWxSb3coYyl9dW50cmFuc2xhdGVUcmltbWVkUm93KGMpe3JldHVybiB0aGlzLmhvdC50b1Zpc3VhbFJvdyhjKX1yZW5kZXJBbmRBZGp1c3QoKXt0aGlzLmhvdC5yZW5kZXIoKSx0aGlzLmhvdC52aWV3LmFkanVzdEVsZW1lbnRzU2l6ZSgpfX07dmFyIEhwZT1u''@;'; put 'put ''ZXcgV2Vha01hcDtjb25zdCBRMHQ9Y2xhc3MgSjB0IGV4dGVuZHMgT1h7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIEcwdChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gJDB0KGwpe3ZhciBjPWZ1bmN0aW9uIHEwdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2Yg''@;'; put 'put ''bHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4g''@;'; put 'put ''YSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxj''@;'; put 'put ''b25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH0odGhpcywiZGF0YU1hbmFnZXIiLHRoaXMucGx1Z2luLmRhdGFNYW5hZ2VyKSxmdW5jdGlvbiBZMHQobCxjLGEpeyhmdW5jdGlvbiBXMHQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5p''@;'; put 'put ''dGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxjKSxjLnNldChsLGEpfSh0aGlzLEhwZSx7cm93X2Fib3ZlOihjLGEpPT57dGhpcy5kYXRhTWFuYWdlci5hZGRTaWJsaW5nKGFbYS5sZW5ndGgtMV0uc3RhcnQucm93LCJhYm92ZSIpfSxy''@;'; put 'put ''b3dfYmVsb3c6KGMsYSk9Pnt0aGlzLmRhdGFNYW5hZ2VyLmFkZFNpYmxpbmcoYVthLmxlbmd0aC0xXS5zdGFydC5yb3csImJlbG93Iil9fSl9YXBwZW5kT3B0aW9ucyhjKXtjb25zdCBhPVt7a2V5OiJhZGRfY2hpbGQiLG5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkUGhyYXNlKF8k''@;'; put 'put ''KX0sY2FsbGJhY2s6KCk9Pntjb25zdCBkPXRoaXMuZGF0YU1hbmFnZXIudHJhbnNsYXRlVHJpbW1lZFJvdyh0aGlzLmhvdC5nZXRTZWxlY3RlZExhc3QoKVswXSksaD10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoZCk7dGhpcy5kYXRhTWFuYWdlci5hZGRDaGlsZChoKX0sZGlzYWJs''@;'; put 'put ''ZWQ6KCk9Pntjb25zdCBkPXRoaXMuaG90LmdldFNlbGVjdGVkTGFzdCgpO3JldHVybiFkfHxkWzBdPDB8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5IZWFkZXIoKXx8dGhpcy5ob3QuY291bnRSb3dzKCk+PXRoaXMuaG90LmdldFNldHRpbmdzKCkubWF4Um93c319LHtr''@;'; put 'put ''ZXk6ImRldGFjaF9mcm9tX3BhcmVudCIsbmFtZSgpe3JldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRQaHJhc2UoYiQpfSxjYWxsYmFjazooKT0+e3RoaXMuZGF0YU1hbmFnZXIuZGV0YWNoRnJvbVBhcmVudCh0aGlzLmhvdC5nZXRTZWxlY3RlZExhc3QoKSl9LGRpc2FibGVkOigpPT57Y29uc3Qg''@;'; put 'put ''ZD10aGlzLmhvdC5nZXRTZWxlY3RlZExhc3QoKSxoPXRoaXMuZGF0YU1hbmFnZXIudHJhbnNsYXRlVHJpbW1lZFJvdyhkWzBdKTtyZXR1cm4hdGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQoaCl8fCFkfHxkWzBdPDB8fHRoaXMuaG90LnNlbGVjdGlvbi5pc1NlbGVjdGVkQnlDb2x1bW5I''@;'; put 'put ''ZWFkZXIoKXx8dGhpcy5ob3QuY291bnRSb3dzKCk+PXRoaXMuaG90LmdldFNldHRpbmdzKCkubWF4Um93c319LHtuYW1lOiItLS0tLS0tLS0ifV07cmV0dXJuIGdvKDAsYy5pdGVtcy5sZW5ndGgtMSxkPT57aWYoMD09PWQpcmV0dXJuIFRuKGEsKGgsZik9PntjLml0ZW1zLnNwbGljZShkK2Ys''@;'; put 'put ''MCxoKX0pLCExfSksdGhpcy5tb2RpZnlSb3dJbnNlcnRpbmdPcHRpb25zKGMpfW1vZGlmeVJvd0luc2VydGluZ09wdGlvbnMoYyl7cmV0dXJuIGdvKDAsYy5pdGVtcy5sZW5ndGgtMSxhPT57Y29uc3QgZD1mdW5jdGlvbiBLMHQobCxjKXtyZXR1cm4gbC5nZXQoZnVuY3Rpb24gWDB0KGwsYyxh''@;'; put 'put ''KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX0obCxjKSl9KEhwZSx0aGlzKVtjLml0ZW1z''@;'; put 'put ''W2FdLmtleV07bnVsbCE9ZCYmKGMuaXRlbXNbYV0uY2FsbGJhY2s9ZCl9KSxjfX07ZnVuY3Rpb24gWFAobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIGUxdChsKXt2YXIgYz1mdW5jdGlvbiB0MXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9s''@;'; put 'put ''LnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigi''@;'; put 'put ''c3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6''@;'; put 'put ''bFtjXT1hLGx9Y2xhc3MgbjF0e2NvbnN0cnVjdG9yKGMpe1hQKHRoaXMsInBsdWdpbiIsdm9pZCAwKSxYUCh0aGlzLCJob3QiLHZvaWQgMCksWFAodGhpcywiZGF0YU1hbmFnZXIiLHZvaWQgMCksWFAodGhpcywiY29sbGFwc2luZ1VJIix2b2lkIDApLHRoaXMucGx1Z2luPWMsdGhpcy5ob3Q9''@;'; put 'put ''Yy5ob3QsdGhpcy5kYXRhTWFuYWdlcj1jLmRhdGFNYW5hZ2VyLHRoaXMuY29sbGFwc2luZ1VJPWMuY29sbGFwc2luZ1VJfW9uQmVmb3JlUm93TW92ZShjLGEsZCxoKXtpZih0aGlzLmRpc3BsYXlBUElDb21wYXRpYmlsaXR5V2FybmluZyh7cm93czpjLGZpbmFsSW5kZXg6YSxkcm9wSW5kZXg6''@;'; put 'put ''ZCxtb3ZlUG9zc2libGU6aH0pKXJldHVybiExO3RoaXMubW92ZWRUb0NvbGxhcHNlZD0hMTtjb25zdCB2PWQ9PT10aGlzLmhvdC5jb3VudFJvd3MoKSxTPXY/dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCk6dGhpcy5kYXRhTWFuYWdlci50cmFuc2xhdGVUcmltbWVkUm93KGQpO2xldCBWPSEw''@;'; put 'put ''O2NvbnN0IFE9Yy5tYXAoWWU9PntpZighVilyZXR1cm4hMTtjb25zdCBldD10aGlzLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coWWUpO3JldHVybiBWPXRoaXMuc2hvdWxkQWxsb3dNb3ZpbmcoZXQsUyksZXR9KSxkZT0tMT09PVEuaW5kZXhPZihTKTtpZighVnx8IWRlKXJldHVy''@;'; put 'put ''biExO2NvbnN0IHBlPXRoaXMuZ2V0QmFzZVBhcmVudChRKSxDZT10aGlzLmdldFRhcmdldFBhcmVudCh2LFMpLE9lPXBlPT09Q2U7cmV0dXJuIHRoaXMubW92ZWRUb0NvbGxhcHNlZD10aGlzLmNvbGxhcHNpbmdVSS5hcmVDaGlsZHJlbkNvbGxhcHNlZChDZSksdGhpcy5jb2xsYXBzaW5nVUku''@;'; put 'put ''Y29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCksdGhpcy5zaGlmdENvbGxhcHNpYmxlUGFyZW50c0xvY2F0aW9ucyhRLFMsT2UpLHRoaXMubW92ZVJvd3MoUSxTLENlKSx0aGlzLmRhdGFNYW5hZ2VyLnJld3JpdGVDYWNoZSgpLHRoaXMubW92ZUNlbGxzTWV0YShRLFMpLHRoaXMuY29sbGFwc2lu''@;'; put 'put ''Z1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5hcHBseVN0YXNoKCExKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJSb3dNb3ZlIixjLGEsZCxoLGgmJnRoaXMuaXNSb3dPcmRlckNoYW5nZWQoYyxhKSksdGhpcy5ob3QucmVuZGVyKCksdGhpcy5zZWxlY3RDZWxscyhjLGQpLCExfWRpc3BsYXlBUElD''@;'; put 'put ''b21wYXRpYmlsaXR5V2FybmluZyhjKXtjb25zdHtyb3dzOmEsZmluYWxJbmRleDpkLGRyb3BJbmRleDpoLG1vdmVQb3NzaWJsZTpmfT1jO2xldCB2PSExO3JldHVybiBkbChoKSYmKGlsKE5hYFNpbmNlIHZlcnNpb24gOC4wLjAgb2YgdGhlIEhhbmRzb250YWJsZSB0aGUgJ21vdmVSb3dzJyBt''@;'; put 'put ''ZXRob2QgaXNuJ3QgdXNlZCBmb3IgbW92aW5nIHJvd3NceDIwCiAgICAgIHdoZW4gdGhlIE5lc3RlZFJvd3MgcGx1Z2luIGlzIGVuYWJsZWQuIFBsZWFzZSB1c2UgdGhlICdkcmFnUm93cycgbWV0aG9kIGluc3RlYWQuYCksdGhpcy5ob3QucnVuSG9va3MoImFmdGVyUm93TW92ZSIsYSxkLGgs''@;'; put 'put ''ZiwhMSksdj0hMCksdn1zaG91bGRBbGxvd01vdmluZyhjLGEpe3JldHVybiEodGhpcy5kYXRhTWFuYWdlci5pc1BhcmVudChjKXx8dGhpcy5kYXRhTWFuYWdlci5pc1Jvd0hpZ2hlc3RMZXZlbChjKXx8Yz09PWF8fDA9PT1hKX1nZXRCYXNlUGFyZW50KGMpe3JldHVybiB0aGlzLmRhdGFNYW5h''@;'; put 'put ''Z2VyLmdldFJvd1BhcmVudChjWzBdKX1nZXRUYXJnZXRQYXJlbnQoYyxhKXtsZXQgZD10aGlzLmRhdGFNYW5hZ2VyLmdldFJvd1BhcmVudChjP2EtMTphKTtyZXR1cm4gbnVsbD09ZCYmKGQ9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQoYS0xKSksZH1zaGlmdENvbGxhcHNpYmxlUGFy''@;'; put 'put ''ZW50c0xvY2F0aW9ucyhjLGEsZCl7ZHx8KE1hdGgubWF4KC4uLmMpPD1hP3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zaGlmdFN0YXNoKGNbMF0sYSwtMSpjLmxlbmd0aCk6dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2goYSxjWzBd''@;'; put 'put ''LGMubGVuZ3RoKSl9bW92ZVJvd3MoYyxhLGQpe2NvbnN0IGg9YT09PXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5kZXgoZCkrdGhpcy5kYXRhTWFuYWdlci5jb3VudENoaWxkcmVuKGQpKzE7dGhpcy5ob3QuYmF0Y2hSZW5kZXIoKCk9PntjLmZvckVhY2goZj0+e3RoaXMuZGF0YU1hbmFnZXIu''@;'; put 'put ''bW92ZVJvdyhmLGEsdGhpcy5tb3ZlZFRvQ29sbGFwc2VkLGgpfSl9KX1tb3ZlQ2VsbHNNZXRhKGMsYSl7Y29uc3QgZD1bXSxoPU1hdGgubWF4KC4uLmMpPGE7Yy5mb3JFYWNoKGY9PntkLnB1c2godGhpcy5ob3QuZ2V0Q2VsbE1ldGFBdFJvdyhmKSl9KSx0aGlzLmhvdC5zcGxpY2VDZWxsc01l''@;'; put 'put ''dGEoY1swXSxjLmxlbmd0aCksdGhpcy5ob3Quc3BsaWNlQ2VsbHNNZXRhKGEtKGg/ZC5sZW5ndGg6MCksMCwuLi5kKX1zZWxlY3RDZWxscyhjLGEpe2NvbnN0IGQ9Yy5sZW5ndGg7bGV0IGg9MCxmPTAsdj1udWxsLFM9bnVsbDtpZih0aGlzLm1vdmVkVG9Db2xsYXBzZWQpe2xldCBWPW51bGw7''@;'; put 'put ''Vj10aGlzLmRhdGFNYW5hZ2VyLnRyYW5zbGF0ZVRyaW1tZWRSb3coY1tkLTFdPGE/YS1kOmEpO2NvbnN0IFE9dGhpcy5kYXRhTWFuYWdlci5nZXRSb3dQYXJlbnQobnVsbD09PVY/dGhpcy5ob3QuY291bnRTb3VyY2VSb3dzKCktMTpWLTEpLGRlPXRoaXMuZGF0YU1hbmFnZXIuZ2V0Um93SW5k''@;'; put 'put ''ZXgoUSk7aD10aGlzLmRhdGFNYW5hZ2VyLnVudHJhbnNsYXRlVHJpbW1lZFJvdyhkZSksZj1ofWVsc2UgY1tkLTFdPGE/KGY9YS0xLGg9Zi1kKzEpOihoPWEsZj1oK2QtMSk7dj10aGlzLmhvdC5zZWxlY3Rpb24sUz10aGlzLmhvdC5jb3VudENvbHMoKS0xLHYuc2V0UmFuZ2VTdGFydCh0aGlz''@;'; put 'put ''LmhvdC5fY3JlYXRlQ2VsbENvb3JkcyhoLDApKSx2LnNldFJhbmdlRW5kKHRoaXMuaG90Ll9jcmVhdGVDZWxsQ29vcmRzKGYsUyksITApfWlzUm93T3JkZXJDaGFuZ2VkKGMsYSl7cmV0dXJuIGMuc29tZSgoZCxoKT0+ZC1oIT09YSl9fWZ1bmN0aW9uIFZwZShsLGMsYSl7QnBlKGwsYyksYy5z''@;'; put 'put ''ZXQobCxhKX1mdW5jdGlvbiBCcGUobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIFBYKGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiBpMXQo''@;'; put 'put ''bCl7dmFyIGM9ZnVuY3Rpb24gbzF0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfWZ1bmN0aW9uIEpQKGwsYyl7cmV0dXJuIGwuZ2V0KEF1KGwsYykpfWZ1bmN0aW9uIFFQKGwsYyxhKXtyZXR1cm4gbC5zZXQoQXUobCxjKSxh''@;'; put 'put ''KSxhfWZ1bmN0aW9uIEF1KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX1jb25z''@;'; put 'put ''dCBlRj0ibmVzdGVkUm93cyIsanBlPWVGO3ZhciB0Rj1uZXcgV2Vha01hcCx1eT1uZXcgV2Vha01hcCxHdT1uZXcgV2Vha1NldDtjbGFzcyBsMXQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gcjF0KGwsYyl7QnBlKGwsYyksYy5hZGQobCl9''@;'; put 'put ''KHRoaXMsR3UpLFBYKHRoaXMsImRhdGFNYW5hZ2VyIixudWxsKSxQWCh0aGlzLCJoZWFkZXJzVUkiLG51bGwpLFBYKHRoaXMsImNvbGxhcHNlZFJvd3NNYXAiLG51bGwpLFZwZSh0aGlzLHRGLCExKSxWcGUodGhpcyx1eSwhMSl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIGVGfXN0''@;'; put 'put ''YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDMwMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbZUZdfWVuYWJsZVBsdWdpbigpe3ZhciBjPXRoaXM7dGhpcy5lbmFibGVkfHwodGhpcy5jb2xsYXBzZWRSb3dzTWFwPXRoaXMuaG90LnJvd0luZGV4''@;'; put 'put ''TWFwcGVyLnJlZ2lzdGVyTWFwKCJuZXN0ZWRSb3dzIixuZXcgRXgpLHRoaXMuZGF0YU1hbmFnZXI9bmV3IFYwdCh0aGlzLHRoaXMuaG90KSx0aGlzLmNvbGxhcHNpbmdVST1uZXcgWjB0KHRoaXMsdGhpcy5ob3QpLHRoaXMuaGVhZGVyc1VJPW5ldyBOcGUodGhpcyx0aGlzLmhvdCksdGhpcy5j''@;'; put 'put ''b250ZXh0TWVudVVJPW5ldyBRMHQodGhpcyx0aGlzLmhvdCksdGhpcy5yb3dNb3ZlQ29udHJvbGxlcj1uZXcgbjF0KHRoaXMpLHRoaXMuYWRkSG9vaygiYWZ0ZXJJbml0IixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRb''@;'; put 'put ''aF09YXJndW1lbnRzW2hdO3JldHVybiBBdShHdSxjLEMxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVWaWV3UmVuZGVyIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hd''@;'; put 'put ''O3JldHVybiBBdShHdSxjLFMxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlSb3dEYXRhIixmdW5jdGlvbigpe3JldHVybiBjLm9uTW9kaWZ5Um93RGF0YSguLi5hcmd1bWVudHMpfSksdGhpcy5hZGRIb29rKCJtb2RpZnlTb3VyY2VMZW5ndGgiLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIGMub25Nb2RpZnlTb3VyY2VMZW5ndGgoLi4uYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRGF0YVNwbGljZSIsZnVuY3Rpb24oKXtyZXR1cm4gYy5vbkJlZm9yZURhdGFTcGxpY2UoLi4uYXJndW1lbnRzKX0pLHRoaXMuYWRkSG9vaygiZmlsdGVyRGF0YSIsZnVuY3Rpb24o''@;'; put 'put ''KXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gQXUoR3UsYyxkMXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJDb250ZXh0TWVudURlZmF1bHRPcHRpb25zIixmdW5jdGlvbigp''@;'; put 'put ''e2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBBdShHdSxjLGgxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJhZnRlckdldFJvd0hlYWRlciIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gQXUoR3UsYyxmMXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlT25DZWxsTW91c2VEb3duIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVu''@;'; put 'put ''Z3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBBdShHdSxjLHUxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW1vdmVSb3ciLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXko''@;'; put 'put ''YSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIEF1KEd1LGMsbTF0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRb''@;'; put 'put ''aF09YXJndW1lbnRzW2hdO3JldHVybiBBdShHdSxjLGcxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJiZWZvcmVBZGRDaGlsZCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTty''@;'; put 'put ''ZXR1cm4gQXUoR3UsYyx2MXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYWZ0ZXJBZGRDaGlsZCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gQXUoR3UsYyxfMXQp''@;'; put 'put ''LmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIEF1KEd1LGMsYjF0KS5jYWxsKGMsLi4uZCl9''@;'; put 'put ''KSx0aGlzLmFkZEhvb2soImFmdGVyRGV0YWNoQ2hpbGQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD0wO2g8YTtoKyspZFtoXT1hcmd1bWVudHNbaF07cmV0dXJuIEF1KEd1LGMseTF0KS5jYWxsKGMsLi4uZCl9KSx0aGlzLmFkZEhvb2so''@;'; put 'put ''Im1vZGlmeVJvd0hlYWRlcldpZHRoIixmdW5jdGlvbigpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLGQ9bmV3IEFycmF5KGEpLGg9MDtoPGE7aCsrKWRbaF09YXJndW1lbnRzW2hdO3JldHVybiBBdShHdSxjLHAxdCkuY2FsbChjLC4uLmQpfSksdGhpcy5hZGRIb29rKCJhZnRlckNyZWF0''@;'; put 'put ''ZVJvdyIsZnVuY3Rpb24oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gQXUoR3UsYyx3MXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlUm93TW92ZSIsZnVuY3Rpb24oKXtm''@;'; put 'put ''b3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gQXUoR3UsYyxjMXQpLmNhbGwoYywuLi5kKX0pLHRoaXMuYWRkSG9vaygiYmVmb3JlTG9hZERhdGEiLGE9PkF1KEd1LHRoaXMsenBlKS5jYWxsKHRoaXMs''@;'; put 'put ''YSkpLHRoaXMuYWRkSG9vaygiYmVmb3JlVXBkYXRlRGF0YSIsYT0+QXUoR3UsdGhpcyx6cGUpLmNhbGwodGhpcyxhKSksdGhpcy5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmVuYWJsZVBsdWdpbigpKX1kaXNhYmxlUGx1Z2luKCl7dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIudW5yZWdpc3Rl''@;'; put 'put ''ck1hcCgibmVzdGVkUm93cyIpLHRoaXMudW5yZWdpc3RlclNob3J0Y3V0cygpLHN1cGVyLmRpc2FibGVQbHVnaW4oKX11cGRhdGVQbHVnaW4oKXt0aGlzLmRpc2FibGVQbHVnaW4oKTtjb25zdCBjPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YSgpO3RoaXMuZW5hYmxlUGx1Z2luKCksdGhpcy5k''@;'; put 'put ''YXRhTWFuYWdlci51cGRhdGVXaXRoRGF0YShjKSxzdXBlci51cGRhdGVQbHVnaW4oKX1yZWdpc3RlclNob3J0Y3V0cygpe3RoaXMuaG90LmdldFNob3J0Y3V0TWFuYWdlcigpLmdldENvbnRleHQoImdyaWQiKS5hZGRTaG9ydGN1dCh7a2V5czpbWyJFbnRlciJdXSxjYWxsYmFjazooKT0+e2Nv''@;'; put 'put ''bnN0e2hpZ2hsaWdodDpjfT10aGlzLmhvdC5nZXRTZWxlY3RlZFJhbmdlTGFzdCgpLGE9dGhpcy5jb2xsYXBzaW5nVUkudHJhbnNsYXRlVHJpbW1lZFJvdyhjLnJvdyk7cmV0dXJuIHRoaXMuY29sbGFwc2luZ1VJLmFyZUNoaWxkcmVuQ29sbGFwc2VkKGEpP3RoaXMuY29sbGFwc2luZ1VJLmV4''@;'; put 'put ''cGFuZENoaWxkcmVuKGEpOnRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlQ2hpbGRyZW4oYSksITF9LHJ1bk9ubHlJZjooKT0+e3ZhciBjLGE7Y29uc3QgZD1udWxsPT09KGM9dGhpcy5ob3QuZ2V0U2VsZWN0ZWRSYW5nZUxhc3QoKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuaGlnaGxpZ2h0O3Jl''@;'; put 'put ''dHVybiBkJiYobnVsbD09PShhPXRoaXMuaG90LmdldFNlbGVjdGVkUmFuZ2VMYXN0KCkpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmlzU2luZ2xlKCkpJiZ0aGlzLmhvdC5zZWxlY3Rpb24uaXNDZWxsVmlzaWJsZShkKSYmLTE9PT1kLmNvbCYmZC5yb3c+PTB9LGdyb3VwOmpwZSxyZWxhdGl2ZVRv''@;'; put 'put ''R3JvdXA6WW0scG9zaXRpb246ImJlZm9yZSJ9KX11bnJlZ2lzdGVyU2hvcnRjdXRzKCl7dGhpcy5ob3QuZ2V0U2hvcnRjdXRNYW5hZ2VyKCkuZ2V0Q29udGV4dCgiZ3JpZCIpLnJlbW92ZVNob3J0Y3V0c0J5R3JvdXAoanBlKX1kaXNhYmxlQ29yZUFQSU1vZGlmaWVycygpe1FQKHV5LHRoaXMs''@;'; put 'put ''ITApfWVuYWJsZUNvcmVBUElNb2RpZmllcnMoKXtRUCh1eSx0aGlzLCExKX1vbk1vZGlmeVJvd0RhdGEoYyl7aWYoIUpQKHV5LHRoaXMpKXJldHVybiB0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFPYmplY3QoYyl9b25Nb2RpZnlTb3VyY2VMZW5ndGgoKXtpZighSlAodXksdGhpcykpcmV0dXJu''@;'; put 'put ''IHRoaXMuZGF0YU1hbmFnZXIuY291bnRBbGxSb3dzKCl9b25CZWZvcmVEYXRhU3BsaWNlKGMsYSxkKXtyZXR1cm4hKCFKUCh1eSx0aGlzKSYmIXRoaXMuZGF0YU1hbmFnZXIuaXNSb3dIaWdoZXN0TGV2ZWwoYykmJih0aGlzLmRhdGFNYW5hZ2VyLnNwbGljZURhdGEoYyxhLGQpLDEpKX1kZXN0''@;'; put 'put ''cm95KCl7c3VwZXIuZGVzdHJveSgpfX1mdW5jdGlvbiBjMXQobCxjLGEsZCl7cmV0dXJuIHRoaXMucm93TW92ZUNvbnRyb2xsZXIub25CZWZvcmVSb3dNb3ZlKGwsYyxhLGQpfWZ1bmN0aW9uIHUxdChsLGMsYSl7dGhpcy5jb2xsYXBzaW5nVUkudG9nZ2xlU3RhdGUobCxjLGEpfWZ1bmN0aW9u''@;'; put 'put ''IGQxdChsLGMsYSl7cmV0dXJuIHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpLHRoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC50cmltU3Rhc2goYVswXSxjKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guc2hpZnRTdGFz''@;'; put 'put ''aChhWzBdLG51bGwsLTEqYyksdGhpcy5kYXRhTWFuYWdlci5maWx0ZXJEYXRhKGwsYyxhKSxRUCh0Rix0aGlzLCEwKSx0aGlzLmRhdGFNYW5hZ2VyLmdldERhdGEoKS5zbGljZSgpfWZ1bmN0aW9uIGgxdChsKXtyZXR1cm4gdGhpcy5jb250ZXh0TWVudVVJLmFwcGVuZE9wdGlvbnMobCl9ZnVu''@;'; put 'put ''Y3Rpb24gZjF0KGwsYyl7dGhpcy5oZWFkZXJzVUkuYXBwZW5kTGV2ZWxJbmRpY2F0b3JzKGwsYyl9ZnVuY3Rpb24gcDF0KGwpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlYWRlcnNVSS5yb3dIZWFkZXJXaWR0aENhY2hlLGwpfWZ1bmN0aW9uIGcxdChsLGMsYSxkKXtkIT09dGhpcy5wbHVnaW5O''@;'; put 'put ''YW1lJiZ0aGlzLmhvdC5fcmVnaXN0ZXJUaW1lb3V0KCgpPT57UVAodEYsdGhpcywhMSksdGhpcy5oZWFkZXJzVUkudXBkYXRlUm93SGVhZGVyV2lkdGgoKSx0aGlzLmNvbGxhcHNpbmdVSS5jb2xsYXBzZWRSb3dzU3Rhc2guYXBwbHlTdGFzaCgpfSl9ZnVuY3Rpb24gbTF0KGwsYyxhKXtjb25z''@;'; put 'put ''dCBkPUFycmF5LmZyb20oYS5yZWR1Y2UoKGgsZik9PntpZih0aGlzLmRhdGFNYW5hZ2VyLmlzUGFyZW50KGYpKXtjb25zdCB2PXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YU9iamVjdChmKS5fX2NoaWxkcmVuO3JldHVybiBoLmFkZChmKSxBcnJheS5pc0FycmF5KHYpJiZ2LmZvckVhY2goUz0+''@;'; put 'put ''aC5hZGQodGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChTKSkpLGh9cmV0dXJuIGguYWRkKGYpfSxuZXcgU2V0KSk7YS5sZW5ndGg9MCxhLnB1c2goLi4uZCl9ZnVuY3Rpb24gdjF0KCl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnN0YXNoKCl9ZnVuY3Rpb24gXzF0''@;'; put 'put ''KGwsYyl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2godGhpcy5kYXRhTWFuYWdlci5nZXRSb3dJbmRleChjKSksdGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLmFwcGx5U3Rhc2goKSx0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFk''@;'; put 'put ''ZXJXaWR0aCgpfWZ1bmN0aW9uIGIxdCgpe3RoaXMuY29sbGFwc2luZ1VJLmNvbGxhcHNlZFJvd3NTdGFzaC5zdGFzaCgpfWZ1bmN0aW9uIHkxdChsLGMsYSl7dGhpcy5jb2xsYXBzaW5nVUkuY29sbGFwc2VkUm93c1N0YXNoLnNoaWZ0U3Rhc2goYSxudWxsLC0xKSx0aGlzLmNvbGxhcHNpbmdV''@;'; put 'put ''SS5jb2xsYXBzZWRSb3dzU3Rhc2guYXBwbHlTdGFzaCgpLHRoaXMuaGVhZGVyc1VJLnVwZGF0ZVJvd0hlYWRlcldpZHRoKCl9ZnVuY3Rpb24gdzF0KCl7dGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX1mdW5jdGlvbiBDMXQoKXt0aGlzLmhlYWRlcnNVSS51cGRhdGVSb3dIZWFkZXJX''@;'; put 'put ''aWR0aCgpfWZ1bmN0aW9uIFMxdChsLGMpe0pQKHRGLHRoaXMpJiYoYy5za2lwUmVuZGVyPSEwKX1mdW5jdGlvbiB6cGUobCl7aWYoIUtkZShsKSlyZXR1cm4gQVcoIlRoZSBOZXN0ZWQgUm93cyBwbHVnaW4gcmVxdWlyZXMgYW4gQXJyYXkgb2YgT2JqZWN0cyBhcyBhIGRhdGFzZXQgdG8gYmUg''@;'; put 'put ''cHJvdmlkZWQuIFRoZSBwbHVnaW4gaGFzIGJlZW4gZGlzYWJsZWQuIiksdGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtlRl09ITEsdm9pZCB0aGlzLmRpc2FibGVQbHVnaW4oKTt0aGlzLmRhdGFNYW5hZ2VyLnNldERhdGEobCksdGhpcy5kYXRhTWFuYWdlci5yZXdyaXRlQ2FjaGUoKX1mdW5jdGlv''@;'; put 'put ''biBGWChsLGMsYSl7cmV0dXJuIGM9ZnVuY3Rpb24gTTF0KGwpe3ZhciBjPWZ1bmN0aW9uIHgxdChsLGMpe2lmKCJvYmplY3QiIT10eXBlb2YgbHx8IWwpcmV0dXJuIGw7dmFyIGE9bFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PWEpe3ZhciBkPWEuY2FsbChsLGN8fCJkZWZhdWx0''@;'; put 'put ''Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBkKXJldHVybiBkO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Yz9TdHJpbmc6TnVtYmVyKShsKX0obCwic3RyaW5nIik7cmV0dXJuInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBjP2M6YysiIn0oYyksYyBpbiBsP09iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGMse3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpsW2NdPWEsbH1jb25zdCBUMXQ9Y2xhc3MgRTF0e2NvbnN0cnVjdG9yKGMpe2xldCBhPWFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp3aW5kb3c7RlgodGhpcywicm9vdFdpbmRvdyIsdm9pZCAwKSxGWCh0aGlzLCJwcmVmaXgiLHZvaWQgMCksRlgodGhpcywic2F2ZWRLZXlzIixbXSksdGhpcy5yb290V2luZG93PWEsdGhpcy5wcmVmaXg9''@;'; put 'put ''Yyx0aGlzLmxvYWRTYXZlZEtleXMoKX1zYXZlVmFsdWUoYyxhKXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5wcmVmaXh9XyR7Y31gLEpTT04uc3RyaW5naWZ5KGEpKSwtMT09PXRoaXMuc2F2ZWRLZXlzLmluZGV4T2YoYykmJih0aGlzLnNhdmVkS2V5cy5w''@;'; put 'put ''dXNoKGMpLHRoaXMuc2F2ZVNhdmVkS2V5cygpKX1sb2FkVmFsdWUoYyxhKXtjb25zdCBoPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLnByZWZpeH1fJHt0eXBlb2YgYz4idSI/YTpjfWApO3JldHVybiBudWxsPT09aD92b2lkIDA6SlNPTi5wYXJzZShoKX1y''@;'; put 'put ''ZXNldChjKXt0aGlzLnJvb3RXaW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYCR7dGhpcy5wcmVmaXh9XyR7Y31gKX1yZXNldEFsbCgpe1RuKHRoaXMuc2F2ZWRLZXlzLChjLGEpPT57dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMucHJlZml4fV8k''@;'; put 'put ''e3RoaXMuc2F2ZWRLZXlzW2FdfWApfSksdGhpcy5jbGVhclNhdmVkS2V5cygpfWxvYWRTYXZlZEtleXMoKXtjb25zdCBjPXRoaXMucm9vdFdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLnByZWZpeH1fX3BlcnNpc3RlbnRTdGF0ZUtleXNgKSxhPSJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''Yz9KU09OLnBhcnNlKGMpOnZvaWQgMDt0aGlzLnNhdmVkS2V5cz1hfHxbXX1zYXZlU2F2ZWRLZXlzKCl7dGhpcy5yb290V2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGAke3RoaXMucHJlZml4fV9fcGVyc2lzdGVudFN0YXRlS2V5c2AsSlNPTi5zdHJpbmdpZnkodGhpcy5zYXZlZEtleXMp''@;'; put 'put ''KX1jbGVhclNhdmVkS2V5cygpe3RoaXMuc2F2ZWRLZXlzLmxlbmd0aD0wLHRoaXMuc2F2ZVNhdmVkS2V5cygpfX07YW8uZ2V0U2luZ2xldG9uKCkucmVnaXN0ZXIoInBlcnNpc3RlbnRTdGF0ZVNhdmUiKSxhby5nZXRTaW5nbGV0b24oKS5yZWdpc3RlcigicGVyc2lzdGVudFN0YXRlTG9hZCIp''@;'; put 'put ''LGFvLmdldFNpbmdsZXRvbigpLnJlZ2lzdGVyKCJwZXJzaXN0ZW50U3RhdGVSZXNldCIpO2NvbnN0IFVwZT0icGVyc2lzdGVudFN0YXRlIjtjbGFzcyBSMXQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gazF0KGwsYyxhKXtyZXR1cm4gYz1m''@;'; put 'put ''dW5jdGlvbiBBMXQobCl7dmFyIGM9ZnVuY3Rpb24gRDF0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9m''@;'; put 'put ''IGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpOdW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShj''@;'; put 'put ''KSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJzdG9yYWdlIix2b2lkIDApfXN0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBVcGV9c3RhdGljIGdl''@;'; put 'put ''dCBQTFVHSU5fUFJJT1JJVFkoKXtyZXR1cm4gMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbVXBlXX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fCh0aGlzLnN0b3JhZ2V8fCh0aGlzLnN0b3JhZ2U9bmV3IFQxdCh0aGlzLmhvdC5yb290RWxlbWVudC5p''@;'; put 'put ''ZCx0aGlzLmhvdC5yb290V2luZG93KSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVTYXZlIiwoYyxhKT0+dGhpcy5zYXZlVmFsdWUoYyxhKSksdGhpcy5hZGRIb29rKCJwZXJzaXN0ZW50U3RhdGVMb2FkIiwoYyxhKT0+dGhpcy5sb2FkVmFsdWUoYyxhKSksdGhpcy5hZGRIb29rKCJw''@;'; put 'put ''ZXJzaXN0ZW50U3RhdGVSZXNldCIsKCk9PnRoaXMucmVzZXRWYWx1ZSgpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuc3RvcmFnZT12b2lkIDAsc3VwZXIuZGlzYWJsZVBsdWdpbigpfXVwZGF0ZVBsdWdpbigpe3RoaXMuZGlzYWJsZVBsdWdpbigpLHRoaXMu''@;'; put 'put ''ZW5hYmxlUGx1Z2luKCksc3VwZXIudXBkYXRlUGx1Z2luKCl9bG9hZFZhbHVlKGMsYSl7YS52YWx1ZT10aGlzLnN0b3JhZ2UubG9hZFZhbHVlKGMpfXNhdmVWYWx1ZShjLGEpe3RoaXMuc3RvcmFnZS5zYXZlVmFsdWUoYyxhKX1yZXNldFZhbHVlKGMpe3R5cGVvZiBjPiJ1Ij90aGlzLnN0b3Jh''@;'; put 'put ''Z2UucmVzZXRBbGwoKTp0aGlzLnN0b3JhZ2UucmVzZXQoYyl9ZGVzdHJveSgpe3N1cGVyLmRlc3Ryb3koKX19ZnVuY3Rpb24gTlgobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFAxdChsKXt2YXIgYz1mdW5jdGlvbiBGMXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBs''@;'; put 'put ''O3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZh''@;'; put 'put ''bHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEw''@;'; put 'put ''LHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gWnBlKGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgbD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQg''@;'; put 'put ''b24gdGhpcyBvYmplY3QiKX1jb25zdCBIWD0ic2VhcmNoIixWMXQ9ZnVuY3Rpb24obCxjLGEsZCxoKXtsLmdldENlbGxNZXRhKGMsYSkuaXNTZWFyY2hSZXN1bHQ9aH0sQjF0PWZ1bmN0aW9uKGwsYyxhKXtyZXR1cm4hKGRsKGwpfHxudWxsPT09bHx8IWwudG9Mb2NhbGVMb3dlckNhc2V8fDA9''@;'; put 'put ''PT1sLmxlbmd0aHx8ZGwoYyl8fG51bGw9PT1jKSYmLTEhPT1jLnRvU3RyaW5nKCkudG9Mb2NhbGVMb3dlckNhc2UoYS5sb2NhbGUpLmluZGV4T2YobC50b0xvY2FsZUxvd2VyQ2FzZShhLmxvY2FsZSkpfTt2YXIgVlg9bmV3IFdlYWtTZXQ7Y2xhc3MgajF0IGV4dGVuZHMgZGF7Y29uc3RydWN0''@;'; put 'put ''b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLGZ1bmN0aW9uIEwxdChsLGMpeyhmdW5jdGlvbiBPMXQobCxjKXtpZihjLmhhcyhsKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfSkobCxj''@;'; put 'put ''KSxjLmFkZChsKX0odGhpcyxWWCksTlgodGhpcywiY2FsbGJhY2siLFYxdCksTlgodGhpcywicXVlcnlNZXRob2QiLEIxdCksTlgodGhpcywic2VhcmNoUmVzdWx0Q2xhc3MiLCJodFNlYXJjaFJlc3VsdCIpfXN0YXRpYyBnZXQgUExVR0lOX0tFWSgpe3JldHVybiBIWH1zdGF0aWMgZ2V0IFBM''@;'; put 'put ''VUdJTl9QUklPUklUWSgpe3JldHVybiAxOTB9aXNFbmFibGVkKCl7cmV0dXJuIHRoaXMuaG90LmdldFNldHRpbmdzKClbSFhdfWVuYWJsZVBsdWdpbigpe3ZhciBjPXRoaXM7aWYodGhpcy5lbmFibGVkKXJldHVybjtjb25zdCBhPXRoaXMuaG90LmdldFNldHRpbmdzKClbSFhdO3RoaXMudXBk''@;'; put 'put ''YXRlUGx1Z2luU2V0dGluZ3MoYSksdGhpcy5hZGRIb29rKCJiZWZvcmVSZW5kZXJlciIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCxoPW5ldyBBcnJheShkKSxmPTA7ZjxkO2YrKyloW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gWnBlKFZYLGMsWXBlKS5jYWxsKGMsLi4u''@;'; put 'put ''aCl9KSxzdXBlci5lbmFibGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7dmFyIGM9dGhpcztjb25zdCBhPWZ1bmN0aW9uKCl7Zm9yKHZhciBkPWFyZ3VtZW50cy5sZW5ndGgsaD1uZXcgQXJyYXkoZCksZj0wO2Y8ZDtmKyspaFtmXT1hcmd1bWVudHNbZl07cmV0dXJuIFpwZShWWCxjLFlwZSku''@;'; put 'put ''Y2FsbChjLC4uLmgpfTt0aGlzLmhvdC5hZGRIb29rKCJiZWZvcmVSZW5kZXJlciIsYSksdGhpcy5ob3QuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsKCk9Pnt0aGlzLmhvdC5yZW1vdmVIb29rKCJiZWZvcmVSZW5kZXJlciIsYSl9KSxzdXBlci5kaXNhYmxlUGx1Z2luKCl9dXBkYXRl''@;'; put 'put ''UGx1Z2luKCl7dGhpcy5kaXNhYmxlUGx1Z2luKCksdGhpcy5lbmFibGVQbHVnaW4oKSxzdXBlci51cGRhdGVQbHVnaW4oKX1xdWVyeShjKXtsZXQgYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5nZXRDYWxsYmFjaygpLGQ9YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnRoaXMuZ2V0UXVlcnlNZXRob2QoKTtjb25zdCBoPXRoaXMuaG90LmNvdW50Um93cygpLGY9dGhpcy5ob3QuY291bnRDb2xzKCksdj1bXSxTPXRoaXMuaG90O3JldHVybiBnbygwLGgtMSxWPT57Z28o''@;'; put 'put ''MCxmLTEsUT0+e2NvbnN0IGRlPXRoaXMuaG90LmdldERhdGFBdENlbGwoVixRKSxwZT10aGlzLmhvdC5nZXRDZWxsTWV0YShWLFEpLENlPXBlLnNlYXJjaC5jYWxsYmFja3x8YSxZZT0ocGUuc2VhcmNoLnF1ZXJ5TWV0aG9kfHxkKShjLGRlLHBlKTtZZSYmdi5wdXNoKHtyb3c6Vixjb2w6USxk''@;'; put 'put ''YXRhOmRlfSksQ2UmJkNlKFMsVixRLGRlLFllKX0pfSksdn1nZXRDYWxsYmFjaygpe3JldHVybiB0aGlzLmNhbGxiYWNrfXNldENhbGxiYWNrKGMpe3RoaXMuY2FsbGJhY2s9Y31nZXRRdWVyeU1ldGhvZCgpe3JldHVybiB0aGlzLnF1ZXJ5TWV0aG9kfXNldFF1ZXJ5TWV0aG9kKGMpe3RoaXMu''@;'; put 'put ''cXVlcnlNZXRob2Q9Y31nZXRTZWFyY2hSZXN1bHRDbGFzcygpe3JldHVybiB0aGlzLnNlYXJjaFJlc3VsdENsYXNzfXNldFNlYXJjaFJlc3VsdENsYXNzKGMpe3RoaXMuc2VhcmNoUmVzdWx0Q2xhc3M9Y311cGRhdGVQbHVnaW5TZXR0aW5ncyhjKXtfcyhjKSYmKGMuc2VhcmNoUmVzdWx0Q2xh''@;'; put 'put ''c3MmJnRoaXMuc2V0U2VhcmNoUmVzdWx0Q2xhc3MoYy5zZWFyY2hSZXN1bHRDbGFzcyksYy5xdWVyeU1ldGhvZCYmdGhpcy5zZXRRdWVyeU1ldGhvZChjLnF1ZXJ5TWV0aG9kKSxjLmNhbGxiYWNrJiZ0aGlzLnNldENhbGxiYWNrKGMuY2FsbGJhY2spKX1kZXN0cm95KCl7c3VwZXIuZGVzdHJv''@;'; put 'put ''eSgpfX1mdW5jdGlvbiBZcGUobCxjLGEsZCxoLGYpe2NvbnN0IHY9Zi5jbGFzc05hbWV8fFtdO2xldCBTPVtdOyJzdHJpbmciPT10eXBlb2Ygdj9TPXYuc3BsaXQoIiAiKTpTLnB1c2goLi4udiksdGhpcy5pc0VuYWJsZWQoKSYmZi5pc1NlYXJjaFJlc3VsdD9TLmluY2x1ZGVzKHRoaXMuc2Vh''@;'; put 'put ''cmNoUmVzdWx0Q2xhc3MpfHxTLnB1c2goYCR7dGhpcy5zZWFyY2hSZXN1bHRDbGFzc31gKTpTLmluY2x1ZGVzKHRoaXMuc2VhcmNoUmVzdWx0Q2xhc3MpJiZTLnNwbGljZShTLmluZGV4T2YodGhpcy5zZWFyY2hSZXN1bHRDbGFzcyksMSksZi5jbGFzc05hbWU9Uy5qb2luKCIgIil9ZnVuY3Rp''@;'; put 'put ''b24gbkYobCxjLGEpe3JldHVybiBjPWZ1bmN0aW9uIFoxdChsKXt2YXIgYz1mdW5jdGlvbiBZMXQobCxjKXtpZigib2JqZWN0IiE9dHlwZW9mIGx8fCFsKXJldHVybiBsO3ZhciBhPWxbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1hKXt2YXIgZD1hLmNhbGwobCxjfHwiZGVmYXVs''@;'; put 'put ''dCIpO2lmKCJvYmplY3QiIT10eXBlb2YgZClyZXR1cm4gZDt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWM/U3RyaW5nOk51bWJlcikobCl9KGwsInN0cmluZyIpO3JldHVybiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgYz9jOmMrIiJ9KGMpLGMgaW4gbD9PYmplY3QuZGVmaW5lUHJvcGVydHkobCxjLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bFtjXT1hLGx9ZnVuY3Rpb24gQlgobCxjLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBsP2w9''@;'; put 'put ''PT1jOmwuaGFzKGMpKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDM/YzphO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgZWxlbWVudCBpcyBub3QgcHJlc2VudCBvbiB0aGlzIG9iamVjdCIpfXZhciByRj1uZXcgV2Vha1NldDtjbGFzcyAkMXQgZXh0ZW5kcyBkYXtjb25zdHJ1Y3Rvcigp''@;'; put 'put ''e3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gejF0KGwsYyl7KGZ1bmN0aW9uIFUxdChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9KShsLGMpLGMu''@;'; put 'put ''YWRkKGwpfSh0aGlzLHJGKSxuRih0aGlzLCJzY3JvbGxiYXJzIixbXSksbkYodGhpcywiY2xvbmVzIixbXSksbkYodGhpcywibG9ja2VkQ29sbGVjdGlvbiIsITEpLG5GKHRoaXMsImZyZWV6ZU92ZXJsYXlzIiwhMSl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuInRvdWNoU2Nyb2xs''@;'; put 'put ''In1zdGF0aWMgZ2V0IFBMVUdJTl9QUklPUklUWSgpe3JldHVybiAyMDB9c3RhdGljIGdldCBTRVRUSU5HX0tFWVMoKXtyZXR1cm4hMH1pc0VuYWJsZWQoKXtyZXR1cm4gQ1coKX1lbmFibGVQbHVnaW4oKXt0aGlzLmVuYWJsZWR8fCh0aGlzLmFkZEhvb2soImFmdGVyVmlld1JlbmRlciIsKCk9''@;'; put 'put ''PkJYKHJGLHRoaXMscTF0KS5jYWxsKHRoaXMpKSx0aGlzLnJlZ2lzdGVyRXZlbnRzKCksc3VwZXIuZW5hYmxlUGx1Z2luKCkpfXVwZGF0ZVBsdWdpbigpe3RoaXMubG9ja2VkQ29sbGVjdGlvbj0hMSxzdXBlci51cGRhdGVQbHVnaW4oKX1kaXNhYmxlUGx1Z2luKCl7c3VwZXIuZGlzYWJsZVBs''@;'; put 'put ''dWdpbigpfXJlZ2lzdGVyRXZlbnRzKCl7dGhpcy5hZGRIb29rKCJiZWZvcmVUb3VjaFNjcm9sbCIsKCk9PkJYKHJGLHRoaXMsSzF0KS5jYWxsKHRoaXMpKSx0aGlzLmFkZEhvb2soImFmdGVyTW9tZW50dW1TY3JvbGwiLCgpPT5CWChyRix0aGlzLFgxdCkuY2FsbCh0aGlzKSl9fWZ1bmN0aW9u''@;'; put 'put ''IHExdCgpe2lmKHRoaXMubG9ja2VkQ29sbGVjdGlvbilyZXR1cm47Y29uc3R7dG9wT3ZlcmxheTpsLGJvdHRvbU92ZXJsYXk6YyxpbmxpbmVTdGFydE92ZXJsYXk6YSx0b3BJbmxpbmVTdGFydENvcm5lck92ZXJsYXk6ZCxib3R0b21JbmxpbmVTdGFydENvcm5lck92ZXJsYXk6aH09dGhpcy5o''@;'; put 'put ''b3Qudmlldy5fd3Qud3RPdmVybGF5czt0aGlzLmxvY2tlZENvbGxlY3Rpb249ITAsdGhpcy5zY3JvbGxiYXJzLmxlbmd0aD0wLHRoaXMuc2Nyb2xsYmFycy5wdXNoKGwpLGMuY2xvbmUmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKGMpLHRoaXMuc2Nyb2xsYmFycy5wdXNoKGEpLGQmJnRoaXMuc2Ny''@;'; put 'put ''b2xsYmFycy5wdXNoKGQpLGgmJmguY2xvbmUmJnRoaXMuc2Nyb2xsYmFycy5wdXNoKGgpLHRoaXMuY2xvbmVzPVtdLGwubmVlZEZ1bGxSZW5kZXImJnRoaXMuY2xvbmVzLnB1c2gobC5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2RlKSxjLm5lZWRGdWxsUmVuZGVyJiZ0aGlzLmNsb25l''@;'; put 'put ''cy5wdXNoKGMuY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSksYS5uZWVkRnVsbFJlbmRlciYmdGhpcy5jbG9uZXMucHVzaChhLmNsb25lLnd0VGFibGUuaG9sZGVyLnBhcmVudE5vZGUpLGQmJnRoaXMuY2xvbmVzLnB1c2goZC5jbG9uZS53dFRhYmxlLmhvbGRlci5wYXJlbnROb2Rl''@;'; put 'put ''KSxoJiZoLmNsb25lJiZ0aGlzLmNsb25lcy5wdXNoKGguY2xvbmUud3RUYWJsZS5ob2xkZXIucGFyZW50Tm9kZSl9ZnVuY3Rpb24gSzF0KCl7dGhpcy5mcmVlemVPdmVybGF5cz0hMCxUbih0aGlzLmNsb25lcyxsPT57bWkobCwiaGlkZS10d2VlbiIpfSl9ZnVuY3Rpb24gWDF0KCl7dGhpcy5m''@;'; put 'put ''cmVlemVPdmVybGF5cz0hMSxUbih0aGlzLmNsb25lcyxsPT57bHMobCwiaGlkZS10d2VlbiIpLG1pKGwsInNob3ctdHdlZW4iKX0pLHRoaXMuaG90Ll9yZWdpc3RlclRpbWVvdXQoKCk9PntUbih0aGlzLmNsb25lcyxsPT57bHMobCwic2hvdy10d2VlbiIpfSl9LDQwMCksVG4odGhpcy5zY3Jv''@;'; put 'put ''bGxiYXJzLGw9PntsLnJlZnJlc2goKSxsLnJlc2V0Rml4ZWRQb3NpdGlvbigpfSksdGhpcy5ob3Qudmlldy5fd3Qud3RPdmVybGF5cy5zeW5jU2Nyb2xsV2l0aE1hc3RlcigpfWNvbnN0IGlGPSJ0cmltUm93cyI7dmFyIFdwZT1uZXcgV2Vha1NldDtjbGFzcyBvZHQgZXh0ZW5kcyBkYXtjb25z''@;'; put 'put ''dHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksZnVuY3Rpb24gSjF0KGwsYyl7KGZ1bmN0aW9uIFExdChsLGMpe2lmKGMuaGFzKGwpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0Iil9''@;'; put 'put ''KShsLGMpLGMuYWRkKGwpfSh0aGlzLFdwZSksZnVuY3Rpb24gZWR0KGwsYyxhKXtyZXR1cm4gYz1mdW5jdGlvbiB0ZHQobCl7dmFyIGM9ZnVuY3Rpb24gbmR0KGwsYyl7aWYoIm9iamVjdCIhPXR5cGVvZiBsfHwhbClyZXR1cm4gbDt2YXIgYT1sW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9p''@;'; put 'put ''ZCAwIT09YSl7dmFyIGQ9YS5jYWxsKGwsY3x8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIGQpcmV0dXJuIGQ7dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1jP1N0cmluZzpO''@;'; put 'put ''dW1iZXIpKGwpfShsLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGM/YzpjKyIifShjKSxjIGluIGw/T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsYyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmxbY109YSxsfSh0aGlzLCJ0cmlt''@;'; put 'put ''bWVkUm93c01hcCIsbnVsbCl9c3RhdGljIGdldCBQTFVHSU5fS0VZKCl7cmV0dXJuIGlGfXN0YXRpYyBnZXQgUExVR0lOX1BSSU9SSVRZKCl7cmV0dXJuIDMzMH1pc0VuYWJsZWQoKXtyZXR1cm4hIXRoaXMuaG90LmdldFNldHRpbmdzKClbaUZdfWVuYWJsZVBsdWdpbigpe3RoaXMuZW5hYmxl''@;'; put 'put ''ZHx8KHRoaXMudHJpbW1lZFJvd3NNYXA9dGhpcy5ob3Qucm93SW5kZXhNYXBwZXIucmVnaXN0ZXJNYXAoInRyaW1Sb3dzIixuZXcgRXgpLHRoaXMudHJpbW1lZFJvd3NNYXAuYWRkTG9jYWxIb29rKCJpbml0IiwoKT0+ZnVuY3Rpb24gcmR0KGwsYyxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''bD9sPT09YzpsLmhhcyhjKSlyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzP2M6YTt0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGVsZW1lbnQgaXMgbm90IHByZXNlbnQgb24gdGhpcyBvYmplY3QiKX0oV3BlLHRoaXMsc2R0KS5jYWxsKHRoaXMpKSxzdXBlci5lbmFibGVQbHVnaW4oKSl9''@;'; put 'put ''dXBkYXRlUGx1Z2luKCl7Y29uc3QgYz10aGlzLmhvdC5nZXRTZXR0aW5ncygpW2lGXTtBcnJheS5pc0FycmF5KGMpJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e3RoaXMudHJpbW1lZFJvd3NNYXAuY2xlYXIoKSxUbihjLGE9Pnt0aGlzLnRyaW1tZWRSb3dzTWFwLnNldFZhbHVlQXRJ''@;'; put 'put ''bmRleChhLCEwKX0pfSwhMCksc3VwZXIudXBkYXRlUGx1Z2luKCl9ZGlzYWJsZVBsdWdpbigpe3RoaXMuaG90LnJvd0luZGV4TWFwcGVyLnVucmVnaXN0ZXJNYXAoInRyaW1Sb3dzIiksc3VwZXIuZGlzYWJsZVBsdWdpbigpfWdldFRyaW1tZWRSb3dzKCl7cmV0dXJuIHRoaXMudHJpbW1lZFJv''@;'; put 'put ''d3NNYXAuZ2V0VHJpbW1lZEluZGV4ZXMoKX10cmltUm93cyhjKXtjb25zdCBhPXRoaXMuZ2V0VHJpbW1lZFJvd3MoKSxkPXRoaXMuaXNWYWxpZENvbmZpZyhjKTtsZXQgaD1hO2QmJihoPUFycmF5LmZyb20obmV3IFNldChhLmNvbmNhdChjKSkpKSwhMSE9PXRoaXMuaG90LnJ1bkhvb2tzKCJi''@;'; put 'put ''ZWZvcmVUcmltUm93IixhLGgsZCkmJihkJiZ0aGlzLmhvdC5iYXRjaEV4ZWN1dGlvbigoKT0+e1RuKGMsdj0+e3RoaXMudHJpbW1lZFJvd3NNYXAuc2V0VmFsdWVBdEluZGV4KHYsITApfSl9LCEwKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJUcmltUm93IixhLGgsZCxkJiZoLmxlbmd0aD5h''@;'; put 'put ''Lmxlbmd0aCkpfXRyaW1Sb3coKXtmb3IodmFyIGM9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShjKSxkPTA7ZDxjO2QrKylhW2RdPWFyZ3VtZW50c1tkXTt0aGlzLnRyaW1Sb3dzKGEpfXVudHJpbVJvd3MoYyl7Y29uc3QgYT10aGlzLmdldFRyaW1tZWRSb3dzKCksZD10aGlzLmlzVmFs''@;'; put 'put ''aWRDb25maWcoYyk7bGV0IGg9YTtjb25zdCBmPXRoaXMudHJpbW1lZFJvd3NNYXAuZ2V0VmFsdWVzKCkuc2xpY2UoKSx2PWMubGVuZ3RoPjA7ZCYmdiYmKFRuKGMsVj0+e2ZbVl09ITF9KSxoPU1jKGYsKFYsUSxkZSk9PihRJiZWLnB1c2goZGUpLFYpLFtdKSksITEhPT10aGlzLmhvdC5ydW5I''@;'; put 'put ''b29rcygiYmVmb3JlVW50cmltUm93IixhLGgsZCYmdikmJihkJiZ2JiZ0aGlzLnRyaW1tZWRSb3dzTWFwLnNldFZhbHVlcyhmKSx0aGlzLmhvdC5ydW5Ib29rcygiYWZ0ZXJVbnRyaW1Sb3ciLGEsaCxkJiZ2LGQmJmgubGVuZ3RoPGEubGVuZ3RoKSl9dW50cmltUm93KCl7Zm9yKHZhciBjPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgsYT1uZXcgQXJyYXkoYyksZD0wO2Q8YztkKyspYVtkXT1hcmd1bWVudHNbZF07dGhpcy51bnRyaW1Sb3dzKGEpfWlzVHJpbW1lZChjKXtyZXR1cm4gdGhpcy50cmltbWVkUm93c01hcC5nZXRWYWx1ZUF0SW5kZXgoYyl8fCExfXVudHJpbUFsbCgpe3RoaXMudW50cmlt''@;'; put 'put ''Um93cyh0aGlzLmdldFRyaW1tZWRSb3dzKCkpfWlzVmFsaWRDb25maWcoYyl7Y29uc3QgYT10aGlzLmhvdC5jb3VudFNvdXJjZVJvd3MoKTtyZXR1cm4gYy5ldmVyeShkPT5OdW1iZXIuaXNJbnRlZ2VyKGQpJiZkPj0wJiZkPGEpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCl9fWZ1bmN0aW9u''@;'; put 'put ''IHNkdCgpe2NvbnN0IGw9dGhpcy5ob3QuZ2V0U2V0dGluZ3MoKVtpRl07QXJyYXkuaXNBcnJheShsKSYmdGhpcy5ob3QuYmF0Y2hFeGVjdXRpb24oKCk9PntUbihsLGM9Pnt0aGlzLnRyaW1tZWRSb3dzTWFwLnNldFZhbHVlQXRJbmRleChjLCEwKX0pfSwhMCl9ZnVuY3Rpb24gV2kobCl7Y29u''@;'; put 'put ''c3QgYz10aGlzO3RoaXMuaW5zdGFuY2U9bCx0aGlzLmRvbmVBY3Rpb25zPVtdLHRoaXMudW5kb25lQWN0aW9ucz1bXSx0aGlzLmlnbm9yZU5ld0FjdGlvbnM9ITEsdGhpcy5lbmFibGVkPSExLGwuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLGZ1bmN0aW9uKGQsaCl7Y29uc3QgZj1kJiZkLmxlbmd0''@;'; put 'put ''aDtmJiZkLmZpbmQoVj0+e2NvbnN0WywsUSxkZV09VjtyZXR1cm4gUSE9PWRlfSkmJmMuZG9uZSgoKT0+e2NvbnN0IFY9ZC5yZWR1Y2UoKGRlLHBlKT0+KGRlLnB1c2goWy4uLnBlXSksZGUpLFtdKTtUbihWLGRlPT57ZGVbMV09bC5wcm9wVG9Db2woZGVbMV0pfSk7Y29uc3QgUT1mPjE/dGhp''@;'; put 'put ''cy5nZXRTZWxlY3RlZCgpOltbVlswXVswXSxWWzBdWzFdXV07cmV0dXJuIG5ldyBXaS5DaGFuZ2VBY3Rpb24oVixRKX0saCl9KSxsLmFkZEhvb2soImFmdGVyQ3JlYXRlUm93IiwoZCxoLGYpPT57Yy5kb25lKCgpPT5uZXcgV2kuQ3JlYXRlUm93QWN0aW9uKGQsaCksZil9KTtjb25zdCBhPShk''@;'; put 'put ''LGgsZix2KT0+e2NvbnN0IFM9WyJ2aXN1YWxSb3ciLCJ2aXN1YWxDb2wiLCJyb3ciLCJjb2wiLCJwcm9wIl0sVj1TLmxlbmd0aCxRPVtdO3JldHVybiBnbyhmLHYsZGU9PntnbyhkLGgscGU9Pntjb25zdCBDZT1sLmdldENlbGxNZXRhKHBlLGRlKTtpZihPYmplY3Qua2V5cyhDZSkubGVuZ3Ro''@;'; put 'put ''IT09Vil7Y29uc3QgT2U9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKENlKS5maWx0ZXIoWWU9PntsZXRbZXRdPVllO3JldHVybiExPT09Uy5pbmNsdWRlcyhldCl9KSk7US5wdXNoKFtDZS52aXN1YWxSb3csQ2UudmlzdWFsQ29sLE9lXSl9fSl9KSxRfTtsLmFkZEhvb2soImJl''@;'; put 'put ''Zm9yZVJlbW92ZVJvdyIsKGQsaCxmLHYpPT57Yy5kb25lKCgpPT57Y29uc3QgVj1sLnRvUGh5c2ljYWxSb3coZCksUT1WK2gtMSxkZT1SMChjLmluc3RhbmNlLmdldFNvdXJjZURhdGEoViwwLFYraC0xLGMuaW5zdGFuY2UuY291bnRTb3VyY2VDb2xzKCktMSkpO3JldHVybiBuZXcgV2kuUmVt''@;'; put 'put ''b3ZlUm93QWN0aW9uKFYsZGUsbC5nZXRTZXR0aW5ncygpLmZpeGVkUm93c0JvdHRvbSxsLmdldFNldHRpbmdzKCkuZml4ZWRSb3dzVG9wLGwucm93SW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksYShWLFEsMCxsLmNvdW50Q29scygpLTEpKX0sdil9KSxsLmFkZEhvb2soImFmdGVy''@;'; put 'put ''Q3JlYXRlQ29sIiwoZCxoLGYpPT57Yy5kb25lKCgpPT5uZXcgV2kuQ3JlYXRlQ29sdW1uQWN0aW9uKGQsaCksZil9KSxsLmFkZEhvb2soImJlZm9yZVJlbW92ZUNvbCIsKGQsaCxmLHYpPT57Yy5kb25lKCgpPT57Y29uc3QgVj1jLmluc3RhbmNlLmdldFNvdXJjZURhdGFBcnJheSgpLFE9KGMu''@;'; put 'put ''aW5zdGFuY2UuY291bnRDb2xzKCkrZCklYy5pbnN0YW5jZS5jb3VudENvbHMoKSxkZT1RK2gtMSxwZT1bXSxDZT1bXSxPZT1bXTtnbyhWLmxlbmd0aC0xLGR0PT57Y29uc3QgaHQ9W10sTXQ9VltkdF07Z28oUSxkZSxRdD0+e2h0LnB1c2goTXRbbC50b1BoeXNpY2FsQ29sdW1uKFF0KV0pfSks''@;'; put 'put ''cGUucHVzaChodCl9KSxnbyhoLTEsZHQ9PntPZS5wdXNoKGwudG9QaHlzaWNhbENvbHVtbihRK2R0KSl9KSxBcnJheS5pc0FycmF5KGwuZ2V0U2V0dGluZ3MoKS5jb2xIZWFkZXJzKSYmZ28oaC0xLGR0PT57Q2UucHVzaChsLmdldFNldHRpbmdzKCkuY29sSGVhZGVyc1tsLnRvUGh5c2ljYWxD''@;'; put 'put ''b2x1bW4oUStkdCldfHxudWxsKX0pO2NvbnN0IFllPWwuY29sdW1uSW5kZXhNYXBwZXIuZ2V0SW5kZXhlc1NlcXVlbmNlKCksZXQ9bC5yb3dJbmRleE1hcHBlci5nZXRJbmRleGVzU2VxdWVuY2UoKTtyZXR1cm4gbmV3IFdpLlJlbW92ZUNvbHVtbkFjdGlvbihRLE9lLHBlLENlLFllLGV0LGwu''@;'; put 'put ''Z2V0U2V0dGluZ3MoKS5maXhlZENvbHVtbnNTdGFydCxhKDAsbC5jb3VudFJvd3MoKSxRLGRlKSl9LHYpfSksbC5hZGRIb29rKCJiZWZvcmVDZWxsQWxpZ25tZW50IiwoZCxoLGYsdik9PntjLmRvbmUoKCk9Pm5ldyBXaS5DZWxsQWxpZ25tZW50QWN0aW9uKGQsaCxmLHYpKX0pLGwuYWRkSG9v''@;'; put 'put ''aygiYmVmb3JlRmlsdGVyIixkPT57Yy5kb25lKCgpPT5uZXcgV2kuRmlsdGVyc0FjdGlvbihkKSl9KSxsLmFkZEhvb2soImJlZm9yZVJvd01vdmUiLChkLGgpPT57ITEhPT1kJiZjLmRvbmUoKCk9Pm5ldyBXaS5Sb3dNb3ZlQWN0aW9uKGQsaCkpfSksbC5hZGRIb29rKCJiZWZvcmVDb2x1bW5N''@;'; put 'put ''b3ZlIiwoZCxoKT0+eyExIT09ZCYmYy5kb25lKCgpPT5uZXcgV2kuQ29sdW1uTW92ZUFjdGlvbihkLGgpKX0pLGwuYWRkSG9vaygiYmVmb3JlTWVyZ2VDZWxscyIsKGQsaCk9PntofHxjLmRvbmUoKCk9Pm5ldyBXaS5NZXJnZUNlbGxzQWN0aW9uKGwsZCkpfSksbC5hZGRIb29rKCJhZnRlclVu''@;'; put 'put ''bWVyZ2VDZWxscyIsKGQsaCk9PntofHxjLmRvbmUoKCk9Pm5ldyBXaS5Vbm1lcmdlQ2VsbHNBY3Rpb24obCxkKSl9KSxsLmFkZEhvb2soImFmdGVySW5pdCIsKCk9PntjLmluaXQoKX0pfWZ1bmN0aW9uICRwZShsLGMpe2lmKCJsb2FkRGF0YSI9PT1jKXJldHVybiB0aGlzLnVuZG9SZWRvLmNs''@;'; put 'put ''ZWFyKCl9Uig1NzcyKSxXaS5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbihsLGMpe2lmKHRoaXMuaWdub3JlTmV3QWN0aW9uc3x8IlVuZG9SZWRvLnVuZG8iPT09Y3x8IlVuZG9SZWRvLnJlZG8iPT09Y3x8ImF1dG8iPT09YylyZXR1cm47Y29uc3QgZD10aGlzLmRvbmVBY3Rpb25zLnNsaWNlKCk7''@;'; put 'put ''aWYoITE9PT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLGQsYykpcmV0dXJuO2NvbnN0IGY9bCgpLHY9dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5kb25lQWN0aW9ucy5wdXNoKGYpLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVW5k''@;'; put 'put ''b1N0YWNrQ2hhbmdlIixkLHRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIix2KSx0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPTAsdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2Ui''@;'; put 'put ''LHYsdGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCkpfSxXaS5wcm90b3R5cGUudW5kbz1mdW5jdGlvbigpe2lmKHRoaXMuaXNVbmRvQXZhaWxhYmxlKCkpe2NvbnN0IGw9dGhpcy5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVuZG9TdGFja0NoYW5n''@;'; put 'put ''ZSIsbCk7Y29uc3QgYz10aGlzLmRvbmVBY3Rpb25zLnBvcCgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVW5kb1N0YWNrQ2hhbmdlIixsLHRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKSk7Y29uc3QgYT1SMChjKTtpZighMT09PXRoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVVu''@;'; put 'put ''ZG8iLGEpKXJldHVybjt0aGlzLmlnbm9yZU5ld0FjdGlvbnM9ITA7Y29uc3QgaD10aGlzLGY9dGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCk7dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYmVmb3JlUmVkb1N0YWNrQ2hhbmdlIixmKSxjLnVuZG8odGhpcy5pbnN0YW5jZSwoKT0+e2guaWdub3Jl''@;'; put 'put ''TmV3QWN0aW9ucz0hMSxoLnVuZG9uZUFjdGlvbnMucHVzaChjKX0pLHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyUmVkb1N0YWNrQ2hhbmdlIixmLHRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpKSx0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJhZnRlclVuZG8iLGEpfX0sV2kucHJvdG90''@;'; put 'put ''eXBlLnJlZG89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVkb0F2YWlsYWJsZSgpKXtjb25zdCBsPXRoaXMudW5kb25lQWN0aW9ucy5zbGljZSgpO3RoaXMuaW5zdGFuY2UucnVuSG9va3MoImJlZm9yZVJlZG9TdGFja0NoYW5nZSIsbCk7Y29uc3QgYz10aGlzLnVuZG9uZUFjdGlvbnMucG9wKCk7''@;'; put 'put ''dGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvU3RhY2tDaGFuZ2UiLGwsdGhpcy51bmRvbmVBY3Rpb25zLnNsaWNlKCkpO2NvbnN0IGE9UjAoYyk7aWYoITE9PT10aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVSZWRvIixhKSlyZXR1cm47dGhpcy5pZ25vcmVOZXdBY3Rpb25z''@;'; put 'put ''PSEwO2NvbnN0IGg9dGhpcyxmPXRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKTt0aGlzLmluc3RhbmNlLnJ1bkhvb2tzKCJiZWZvcmVVbmRvU3RhY2tDaGFuZ2UiLGYpLGMucmVkbyh0aGlzLmluc3RhbmNlLCgpPT57aC5pZ25vcmVOZXdBY3Rpb25zPSExLGguZG9uZUFjdGlvbnMucHVzaChjKX0p''@;'; put 'put ''LHRoaXMuaW5zdGFuY2UucnVuSG9va3MoImFmdGVyVW5kb1N0YWNrQ2hhbmdlIixmLHRoaXMuZG9uZUFjdGlvbnMuc2xpY2UoKSksdGhpcy5pbnN0YW5jZS5ydW5Ib29rcygiYWZ0ZXJSZWRvIixhKX19LFdpLnByb3RvdHlwZS5pc1VuZG9BdmFpbGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kb25lQWN0aW9ucy5sZW5ndGg+MH0sV2kucHJvdG90eXBlLmlzUmVkb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVuZG9uZUFjdGlvbnMubGVuZ3RoPjB9LFdpLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZG9uZUFjdGlvbnMubGVuZ3RoPTAsdGhpcy51bmRv''@;'; put 'put ''bmVBY3Rpb25zLmxlbmd0aD0wfSxXaS5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5hYmxlZH0sV2kucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe2lmKHRoaXMuaXNFbmFibGVkKCkpcmV0dXJuO2NvbnN0IGw9dGhpcy5pbnN0YW5jZTt0aGlzLmVuYWJs''@;'; put 'put ''ZWQ9ITAsZnVuY3Rpb24gdWR0KGwpe2wudW5kbz1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLnVuZG8oKX0sbC5yZWRvPWZ1bmN0aW9uKCl7cmV0dXJuIGwudW5kb1JlZG8ucmVkbygpfSxsLmlzVW5kb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmlzVW5kb0F2''@;'; put 'put ''YWlsYWJsZSgpfSxsLmlzUmVkb0F2YWlsYWJsZT1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmlzUmVkb0F2YWlsYWJsZSgpfSxsLmNsZWFyVW5kbz1mdW5jdGlvbigpe3JldHVybiBsLnVuZG9SZWRvLmNsZWFyKCl9fShsKSx0aGlzLnJlZ2lzdGVyU2hvcnRjdXRzKCksbC5hZGRIb29r''@;'; put 'put ''KCJhZnRlckNoYW5nZSIsJHBlKX0sV2kucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXtpZighdGhpcy5pc0VuYWJsZWQoKSlyZXR1cm47Y29uc3QgbD10aGlzLmluc3RhbmNlO3RoaXMuZW5hYmxlZD0hMSxmdW5jdGlvbiBkZHQobCl7ZGVsZXRlIGwudW5kbyxkZWxldGUgbC5yZWRvLGRl''@;'; put 'put ''bGV0ZSBsLmlzVW5kb0F2YWlsYWJsZSxkZWxldGUgbC5pc1JlZG9BdmFpbGFibGUsZGVsZXRlIGwuY2xlYXJVbmRvfShsKSx0aGlzLnVucmVnaXN0ZXJTaG9ydGN1dHMoKSxsLnJlbW92ZUhvb2soImFmdGVyQ2hhbmdlIiwkcGUpfSxXaS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuY2xlYXIoKSx0aGlzLmluc3RhbmNlPW51bGwsdGhpcy5kb25lQWN0aW9ucz1udWxsLHRoaXMudW5kb25lQWN0aW9ucz1udWxsfSwoV2kuQWN0aW9uPWZ1bmN0aW9uKCl7fSkucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24oKXt9LFdpLkFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbigp''@;'; put 'put ''e30sV2kuQ2hhbmdlQWN0aW9uPWZ1bmN0aW9uKGwsYyl7dGhpcy5jaGFuZ2VzPWwsdGhpcy5zZWxlY3RlZD1jLHRoaXMuYWN0aW9uVHlwZT0iY2hhbmdlIn0sRDMoV2kuQ2hhbmdlQWN0aW9uLFdpLkFjdGlvbiksV2kuQ2hhbmdlQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGwsYyl7''@;'; put 'put ''Y29uc3QgYT1SMCh0aGlzLmNoYW5nZXMpLGQ9bC5jb3VudEVtcHR5Um93cyghMCksaD1sLmNvdW50RW1wdHlDb2xzKCEwKTtmb3IobGV0IHY9MCxTPWEubGVuZ3RoO3Y8Uzt2KyspYVt2XS5zcGxpY2UoMywxKTtsLmFkZEhvb2tPbmNlKCJhZnRlckNoYW5nZSIsYyksbC5zZXREYXRhQXRDZWxs''@;'; put 'put ''KGEsbnVsbCxudWxsLCJVbmRvUmVkby51bmRvIik7Zm9yKGxldCB2PTAsUz1hLmxlbmd0aDt2PFM7disrKXtjb25zdFtWLFFdPWFbdl07bC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyYmVisxK2wuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3M9PT1sLmNvdW50Um93cygpJiZkPT09bC5n''@;'; put 'put ''ZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyYmKGwuYWx0ZXIoInJlbW92ZV9yb3ciLHBhcnNlSW50KFYrMSwxMCksbC5nZXRTZXR0aW5ncygpLm1pblNwYXJlUm93cyksbC51bmRvUmVkby5kb25lQWN0aW9ucy5wb3AoKSksbC5nZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scyYmUSsxK2wuZ2V0''@;'; put 'put ''U2V0dGluZ3MoKS5taW5TcGFyZUNvbHM9PT1sLmNvdW50Q29scygpJiZoPT09bC5nZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scyYmKGwuYWx0ZXIoInJlbW92ZV9jb2wiLHBhcnNlSW50KFErMSwxMCksbC5nZXRTZXR0aW5ncygpLm1pblNwYXJlQ29scyksbC51bmRvUmVkby5kb25lQWN0aW9u''@;'; put 'put ''cy5wb3AoKSl9Y29uc3QgZj1sLmdldFNlbGVjdGVkTGFzdCgpO2lmKHZvaWQgMCE9PWYpe2NvbnN0W3YsU109YVswXSxbVixRXT1mLENlPXY+PWwudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZVJvdygpLE9lPVM+PWwudmlldy5nZXRGaXJzdEZ1bGx5VmlzaWJsZUNvbHVtbigpO2lmKCExPT09''@;'; put 'put ''KENlJiZPZSkmJjE9PShWIT09dnx8USE9PVMpKXtjb25zdCBkdD17cm93OnYsY29sOlN9OyExPT09Q2UmJihkdC52ZXJ0aWNhbFNuYXA9InRvcCIpLCExPT09T2UmJihkdC5ob3Jpem9udGFsU25hcD0ic3RhcnQiKSxsLnNjcm9sbFZpZXdwb3J0VG8oZHQpfX1sLnNlbGVjdENlbGxzKHRoaXMu''@;'; put 'put ''c2VsZWN0ZWQsITEsITEpfSxXaS5DaGFuZ2VBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24obCxjKXtjb25zdCBhPVIwKHRoaXMuY2hhbmdlcyk7Zm9yKGxldCBkPTAsaD1hLmxlbmd0aDtkPGg7ZCsrKWFbZF0uc3BsaWNlKDIsMSk7bC5hZGRIb29rT25jZSgiYWZ0ZXJDaGFuZ2UiLGMp''@;'; put 'put ''LGwuc2V0RGF0YUF0Q2VsbChhLG51bGwsbnVsbCwiVW5kb1JlZG8ucmVkbyIpLHRoaXMuc2VsZWN0ZWQmJmwuc2VsZWN0Q2VsbHModGhpcy5zZWxlY3RlZCwhMSwhMSl9LFdpLkNyZWF0ZVJvd0FjdGlvbj1mdW5jdGlvbihsLGMpe3RoaXMuaW5kZXg9bCx0aGlzLmFtb3VudD1jLHRoaXMuYWN0''@;'; put 'put ''aW9uVHlwZT0iaW5zZXJ0X3JvdyJ9LEQzKFdpLkNyZWF0ZVJvd0FjdGlvbixXaS5BY3Rpb24pLFdpLkNyZWF0ZVJvd0FjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihsLGMpe2NvbnN0IGE9bC5jb3VudFJvd3MoKSxkPWwuZ2V0U2V0dGluZ3MoKS5taW5TcGFyZVJvd3M7dGhpcy5pbmRl''@;'; put 'put ''eD49YSYmdGhpcy5pbmRleC1kPGEmJih0aGlzLmluZGV4LT1kKSxsLmFkZEhvb2tPbmNlKCJhZnRlclJlbW92ZVJvdyIsYyksbC5hbHRlcigicmVtb3ZlX3JvdyIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8udW5kbyIpfSxXaS5DcmVhdGVSb3dBY3Rpb24ucHJvdG90eXBlLnJl''@;'; put 'put ''ZG89ZnVuY3Rpb24obCxjKXtsLmFkZEhvb2tPbmNlKCJhZnRlckNyZWF0ZVJvdyIsYyksbC5hbHRlcigiaW5zZXJ0X3Jvd19hYm92ZSIsdGhpcy5pbmRleCx0aGlzLmFtb3VudCwiVW5kb1JlZG8ucmVkbyIpfSxXaS5SZW1vdmVSb3dBY3Rpb249ZnVuY3Rpb24obCxjLGEsZCxoLGYpe3RoaXMu''@;'; put 'put ''aW5kZXg9bCx0aGlzLmRhdGE9Yyx0aGlzLmFjdGlvblR5cGU9InJlbW92ZV9yb3ciLHRoaXMuZml4ZWRSb3dzQm90dG9tPWEsdGhpcy5maXhlZFJvd3NUb3A9ZCx0aGlzLnJvd0luZGV4ZXNTZXF1ZW5jZT1oLHRoaXMucmVtb3ZlZENlbGxNZXRhcz1mfSxEMyhXaS5SZW1vdmVSb3dBY3Rpb24s''@;'; put 'put ''V2kuQWN0aW9uKSxXaS5SZW1vdmVSb3dBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXtjb25zdCBhPWwuZ2V0U2V0dGluZ3MoKSxkPVtdO2EuZml4ZWRSb3dzQm90dG9tPXRoaXMuZml4ZWRSb3dzQm90dG9tLGEuZml4ZWRSb3dzVG9wPXRoaXMuZml4ZWRSb3dzVG9wLHRoaXMu''@;'; put 'put ''ZGF0YS5mb3JFYWNoKChoLGYpPT57T2JqZWN0LmtleXMoaCkuZm9yRWFjaCh2PT57Y29uc3QgUz1wYXJzZUludCh2LDEwKTtkLnB1c2goW3RoaXMuaW5kZXgrZixpc05hTihTKT92OlMsaFt2XV0pfSl9KSxsLmFsdGVyKCJpbnNlcnRfcm93X2Fib3ZlIix0aGlzLmluZGV4LHRoaXMuZGF0YS5s''@;'; put 'put ''ZW5ndGgsIlVuZG9SZWRvLnVuZG8iKSx0aGlzLnJlbW92ZWRDZWxsTWV0YXMuZm9yRWFjaChoPT57bGV0W2YsdixTXT1oO2wuc2V0Q2VsbE1ldGFPYmplY3QoZix2LFMpfSksbC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixjKSxsLnNldFNvdXJjZURhdGFBdENlbGwoZCxudWxsLG51''@;'; put 'put ''bGwsIlVuZG9SZWRvLnVuZG8iKSxsLnJvd0luZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLnJvd0luZGV4ZXNTZXF1ZW5jZSl9LFdpLlJlbW92ZVJvd0FjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe2wuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlUm93IixjKSxs''@;'; put 'put ''LmFsdGVyKCJyZW1vdmVfcm93Iix0aGlzLmluZGV4LHRoaXMuZGF0YS5sZW5ndGgsIlVuZG9SZWRvLnJlZG8iKX0sV2kuQ3JlYXRlQ29sdW1uQWN0aW9uPWZ1bmN0aW9uKGwsYyl7dGhpcy5pbmRleD1sLHRoaXMuYW1vdW50PWMsdGhpcy5hY3Rpb25UeXBlPSJpbnNlcnRfY29sIn0sRDMoV2ku''@;'; put 'put ''Q3JlYXRlQ29sdW1uQWN0aW9uLFdpLkFjdGlvbiksV2kuQ3JlYXRlQ29sdW1uQWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGwsYyl7bC5hZGRIb29rT25jZSgiYWZ0ZXJSZW1vdmVDb2wiLGMpLGwuYWx0ZXIoInJlbW92ZV9jb2wiLHRoaXMuaW5kZXgsdGhpcy5hbW91bnQsIlVuZG9S''@;'; put 'put ''ZWRvLnVuZG8iKX0sV2kuQ3JlYXRlQ29sdW1uQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7bC5hZGRIb29rT25jZSgiYWZ0ZXJDcmVhdGVDb2wiLGMpLGwuYWx0ZXIoImluc2VydF9jb2xfc3RhcnQiLHRoaXMuaW5kZXgsdGhpcy5hbW91bnQsIlVuZG9SZWRvLnJlZG8iKX0s''@;'; put 'put ''V2kuUmVtb3ZlQ29sdW1uQWN0aW9uPWZ1bmN0aW9uKGwsYyxhLGQsaCxmLHYsUyl7dGhpcy5pbmRleD1sLHRoaXMuaW5kZXhlcz1jLHRoaXMuZGF0YT1hLHRoaXMuYW1vdW50PXRoaXMuZGF0YVswXS5sZW5ndGgsdGhpcy5oZWFkZXJzPWQsdGhpcy5jb2x1bW5Qb3NpdGlvbnM9aC5zbGljZSgw''@;'; put 'put ''KSx0aGlzLnJvd1Bvc2l0aW9ucz1mLnNsaWNlKDApLHRoaXMuYWN0aW9uVHlwZT0icmVtb3ZlX2NvbCIsdGhpcy5maXhlZENvbHVtbnNTdGFydD12LHRoaXMucmVtb3ZlZENlbGxNZXRhcz1TfSxEMyhXaS5SZW1vdmVDb2x1bW5BY3Rpb24sV2kuQWN0aW9uKSxXaS5SZW1vdmVDb2x1bW5BY3Rp''@;'; put 'put ''b24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXtsLmdldFNldHRpbmdzKCkuZml4ZWRDb2x1bW5zU3RhcnQ9dGhpcy5maXhlZENvbHVtbnNTdGFydDtjb25zdCBkPXRoaXMuaW5kZXhlcy5zbGljZSgwKS5zb3J0KCksaD0oUSxkZSxwZSk9PnBlW3RoaXMuaW5kZXhlcy5pbmRleE9mKGRb''@;'; put 'put ''ZGVdKV0sZj10aGlzLmRhdGEubGVuZ3RoLHY9W107Zm9yKGxldCBRPTA7UTxmO1ErKyl2LnB1c2goeHModGhpcy5kYXRhW1FdLGgpKTtjb25zdCBTPXhzKHRoaXMuaGVhZGVycyxoKSxWPVtdO2wuYWx0ZXIoImluc2VydF9jb2xfc3RhcnQiLHRoaXMuaW5kZXhlc1swXSx0aGlzLmluZGV4ZXMu''@;'; put 'put ''bGVuZ3RoLCJVbmRvUmVkby51bmRvIiksVG4obC5nZXRTb3VyY2VEYXRhQXJyYXkoKSwoUSxkZSk9PntUbihkLChwZSxDZSk9PntRW3BlXT12W2RlXVtDZV0sVi5wdXNoKFtkZSxwZSxRW3BlXV0pfSl9KSxsLnNldFNvdXJjZURhdGFBdENlbGwoVix2b2lkIDAsdm9pZCAwLCJVbmRvUmVkby51''@;'; put 'put ''bmRvIiksdHlwZW9mIHRoaXMuaGVhZGVyczwidSImJlRuKFMsKFEsZGUpPT57bC5nZXRTZXR0aW5ncygpLmNvbEhlYWRlcnNbZFtkZV1dPVF9KSx0aGlzLnJlbW92ZWRDZWxsTWV0YXMuZm9yRWFjaChRPT57bGV0W2RlLHBlLENlXT1RO2wuc2V0Q2VsbE1ldGFPYmplY3QoZGUscGUsQ2UpfSks''@;'; put 'put ''bC5iYXRjaEV4ZWN1dGlvbigoKT0+e2wucm93SW5kZXhNYXBwZXIuc2V0SW5kZXhlc1NlcXVlbmNlKHRoaXMucm93UG9zaXRpb25zKSxsLmNvbHVtbkluZGV4TWFwcGVyLnNldEluZGV4ZXNTZXF1ZW5jZSh0aGlzLmNvbHVtblBvc2l0aW9ucyl9LCEwKSxsLmFkZEhvb2tPbmNlKCJhZnRlclZp''@;'; put 'put ''ZXdSZW5kZXIiLGMpLGwucmVuZGVyKCl9LFdpLlJlbW92ZUNvbHVtbkFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe2wuYWRkSG9va09uY2UoImFmdGVyUmVtb3ZlQ29sIixjKSxsLmFsdGVyKCJyZW1vdmVfY29sIix0aGlzLmluZGV4LHRoaXMuYW1vdW50LCJVbmRvUmVkby5y''@;'; put 'put ''ZWRvIil9LFdpLkNlbGxBbGlnbm1lbnRBY3Rpb249ZnVuY3Rpb24obCxjLGEsZCl7dGhpcy5zdGF0ZUJlZm9yZT1sLHRoaXMucmFuZ2U9Yyx0aGlzLnR5cGU9YSx0aGlzLmFsaWdubWVudD1kfSxXaS5DZWxsQWxpZ25tZW50QWN0aW9uLnByb3RvdHlwZS51bmRvPWZ1bmN0aW9uKGwsYyl7VG4o''@;'; put 'put ''dGhpcy5yYW5nZSxhPT57YS5mb3JBbGwoKGQsaCk9PntkPj0wJiZoPj0wJiZsLnNldENlbGxNZXRhKGQsaCwiY2xhc3NOYW1lIix0aGlzLnN0YXRlQmVmb3JlW2RdW2hdfHwiIGh0TGVmdCIpfSl9KSxsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLGwucmVuZGVyKCl9LFdpLkNl''@;'; put 'put ''bGxBbGlnbm1lbnRBY3Rpb24ucHJvdG90eXBlLnJlZG89ZnVuY3Rpb24obCxjKXtLbSh0aGlzLnJhbmdlLHRoaXMudHlwZSx0aGlzLmFsaWdubWVudCwoYSxkKT0+bC5nZXRDZWxsTWV0YShhLGQpLChhLGQsaCxmKT0+bC5zZXRDZWxsTWV0YShhLGQsaCxmKSksbC5hZGRIb29rT25jZSgiYWZ0''@;'; put 'put ''ZXJWaWV3UmVuZGVyIixjKSxsLnJlbmRlcigpfSxXaS5GaWx0ZXJzQWN0aW9uPWZ1bmN0aW9uKGwpe3RoaXMuY29uZGl0aW9uc1N0YWNrPWwsdGhpcy5hY3Rpb25UeXBlPSJmaWx0ZXIifSxEMyhXaS5GaWx0ZXJzQWN0aW9uLFdpLkFjdGlvbiksV2kuRmlsdGVyc0FjdGlvbi5wcm90b3R5cGUu''@;'; put 'put ''dW5kbz1mdW5jdGlvbihsLGMpe2NvbnN0IGE9bC5nZXRQbHVnaW4oImZpbHRlcnMiKTtsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLGEuY29uZGl0aW9uQ29sbGVjdGlvbi5pbXBvcnRBbGxDb25kaXRpb25zKHRoaXMuY29uZGl0aW9uc1N0YWNrLnNsaWNlKDAsdGhpcy5jb25k''@;'; put 'put ''aXRpb25zU3RhY2subGVuZ3RoLTEpKSxhLmZpbHRlcigpfSxXaS5GaWx0ZXJzQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7Y29uc3QgYT1sLmdldFBsdWdpbigiZmlsdGVycyIpO2wuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsYyksYS5jb25kaXRpb25Db2xsZWN0''@;'; put 'put ''aW9uLmltcG9ydEFsbENvbmRpdGlvbnModGhpcy5jb25kaXRpb25zU3RhY2spLGEuZmlsdGVyKCl9LFdpLk1lcmdlQ2VsbHNBY3Rpb249Y2xhc3MgbGR0IGV4dGVuZHMgV2kuQWN0aW9ue2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoKSx0aGlzLmNlbGxSYW5nZT1hO2NvbnN0IGQ9dGhpcy5jZWxs''@;'; put 'put ''UmFuZ2UuZ2V0VG9wU3RhcnRDb3JuZXIoKSxoPXRoaXMuY2VsbFJhbmdlLmdldEJvdHRvbUVuZENvcm5lcigpO3RoaXMucmFuZ2VEYXRhPWMuZ2V0RGF0YShkLnJvdyxkLmNvbCxoLnJvdyxoLmNvbCl9dW5kbyhjLGEpe2NvbnN0IGQ9Yy5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTtjLmFkZEhv''@;'; put 'put ''b2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGEpLGQudW5tZXJnZVJhbmdlKHRoaXMuY2VsbFJhbmdlLCEwKTtjb25zdCBoPXRoaXMuY2VsbFJhbmdlLmdldFRvcFN0YXJ0Q29ybmVyKCk7Yy5wb3B1bGF0ZUZyb21BcnJheShoLnJvdyxoLmNvbCx0aGlzLnJhbmdlRGF0YSx2b2lkIDAsdm9pZCAw''@;'; put 'put ''LCJNZXJnZUNlbGxzIil9cmVkbyhjLGEpe2NvbnN0IGQ9Yy5nZXRQbHVnaW4oIm1lcmdlQ2VsbHMiKTtjLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGEpLGQubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSl9fSxXaS5Vbm1lcmdlQ2VsbHNBY3Rpb249Y2xhc3MgY2R0IGV4dGVuZHMg''@;'; put 'put ''V2kuQWN0aW9ue2NvbnN0cnVjdG9yKGMsYSl7c3VwZXIoKSx0aGlzLmNlbGxSYW5nZT1hfXVuZG8oYyxhKXtjb25zdCBkPWMuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7Yy5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixhKSxkLm1lcmdlUmFuZ2UodGhpcy5jZWxsUmFuZ2UsITApfXJl''@;'; put 'put ''ZG8oYyxhKXtjb25zdCBkPWMuZ2V0UGx1Z2luKCJtZXJnZUNlbGxzIik7Yy5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixhKSxkLnVubWVyZ2VSYW5nZSh0aGlzLmNlbGxSYW5nZSwhMCksYy5yZW5kZXIoKX19LFdpLlJvd01vdmVBY3Rpb249ZnVuY3Rpb24obCxjKXt0aGlzLnJvd3M9''@;'; put 'put ''bC5zbGljZSgpLHRoaXMuZmluYWxSb3dJbmRleD1jLHRoaXMuYWN0aW9uVHlwZT0icm93X21vdmUifSxEMyhXaS5Sb3dNb3ZlQWN0aW9uLFdpLkFjdGlvbiksV2kuUm93TW92ZUFjdGlvbi5wcm90b3R5cGUudW5kbz1mdW5jdGlvbihsLGMpe2NvbnN0IGE9bC5nZXRQbHVnaW4oIm1hbnVhbFJv''@;'; put 'put ''d01vdmUiKTtsLmFkZEhvb2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLFdLKHRoaXMucm93cyx0aGlzLmZpbmFsUm93SW5kZXgsbC5yb3dJbmRleE1hcHBlci5nZXROdW1iZXJPZkluZGV4ZXMoKSkucmV2ZXJzZSgpLmZvckVhY2goaD0+e2xldHtmcm9tOmYsdG86dn09aDtmPHYmJih2LT0x''@;'; put 'put ''KSxhLm1vdmVSb3codixmKX0pLGwucmVuZGVyKCksbC5kZXNlbGVjdENlbGwoKSxsLnNlbGVjdFJvd3ModGhpcy5yb3dzWzBdLHRoaXMucm93c1swXSt0aGlzLnJvd3MubGVuZ3RoLTEpfSxXaS5Sb3dNb3ZlQWN0aW9uLnByb3RvdHlwZS5yZWRvPWZ1bmN0aW9uKGwsYyl7Y29uc3QgYT1sLmdl''@;'; put 'put ''dFBsdWdpbigibWFudWFsUm93TW92ZSIpO2wuYWRkSG9va09uY2UoImFmdGVyVmlld1JlbmRlciIsYyksYS5tb3ZlUm93cyh0aGlzLnJvd3Muc2xpY2UoKSx0aGlzLmZpbmFsUm93SW5kZXgpLGwucmVuZGVyKCksbC5kZXNlbGVjdENlbGwoKSxsLnNlbGVjdFJvd3ModGhpcy5maW5hbFJvd0lu''@;'; put 'put ''ZGV4LHRoaXMuZmluYWxSb3dJbmRleCt0aGlzLnJvd3MubGVuZ3RoLTEpfSxXaS5Db2x1bW5Nb3ZlQWN0aW9uPWZ1bmN0aW9uKGwsYyl7dGhpcy5jb2x1bW5zPWwuc2xpY2UoKSx0aGlzLmZpbmFsQ29sdW1uSW5kZXg9Yyx0aGlzLmFjdGlvblR5cGU9ImNvbF9tb3ZlIn0sRDMoV2kuQ29sdW1u''@;'; put 'put ''TW92ZUFjdGlvbixXaS5BY3Rpb24pLFdpLkNvbHVtbk1vdmVBY3Rpb24ucHJvdG90eXBlLnVuZG89ZnVuY3Rpb24obCxjKXtjb25zdCBhPWwuZ2V0UGx1Z2luKCJtYW51YWxDb2x1bW5Nb3ZlIik7bC5hZGRIb29rT25jZSgiYWZ0ZXJWaWV3UmVuZGVyIixjKSxXSyh0aGlzLmNvbHVtbnMsdGhp''@;'; put 'put ''cy5maW5hbENvbHVtbkluZGV4LGwuY29sdW1uSW5kZXhNYXBwZXIuZ2V0TnVtYmVyT2ZJbmRleGVzKCkpLnJldmVyc2UoKS5mb3JFYWNoKGg9PntsZXR7ZnJvbTpmLHRvOnZ9PWg7Zjx2JiYodi09MSksYS5tb3ZlQ29sdW1uKHYsZil9KSxsLnJlbmRlcigpLGwuZGVzZWxlY3RDZWxsKCksbC5z''@;'; put 'put ''ZWxlY3RDb2x1bW5zKHRoaXMuY29sdW1uc1swXSx0aGlzLmNvbHVtbnNbMF0rdGhpcy5jb2x1bW5zLmxlbmd0aC0xKX0sV2kuQ29sdW1uTW92ZUFjdGlvbi5wcm90b3R5cGUucmVkbz1mdW5jdGlvbihsLGMpe2NvbnN0IGE9bC5nZXRQbHVnaW4oIm1hbnVhbENvbHVtbk1vdmUiKTtsLmFkZEhv''@;'; put 'put ''b2tPbmNlKCJhZnRlclZpZXdSZW5kZXIiLGMpLGEubW92ZUNvbHVtbnModGhpcy5jb2x1bW5zLnNsaWNlKCksdGhpcy5maW5hbENvbHVtbkluZGV4KSxsLnJlbmRlcigpLGwuZGVzZWxlY3RDZWxsKCksbC5zZWxlY3RDb2x1bW5zKHRoaXMuZmluYWxDb2x1bW5JbmRleCx0aGlzLmZpbmFsQ29s''@;'; put 'put ''dW1uSW5kZXgrdGhpcy5jb2x1bW5zLmxlbmd0aC0xKX0sV2kucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtjb25zdCBsPXRoaXMuaW5zdGFuY2UuZ2V0U2V0dGluZ3MoKS51bmRvLGM9dHlwZW9mIGw+InUifHxsO3RoaXMuaW5zdGFuY2UudW5kb1JlZG98fCh0aGlzLmluc3RhbmNlLnVuZG9S''@;'; put 'put ''ZWRvPXRoaXMpLGM/dGhpcy5pbnN0YW5jZS51bmRvUmVkby5lbmFibGUoKTp0aGlzLmluc3RhbmNlLnVuZG9SZWRvLmRpc2FibGUoKX0sV2kucHJvdG90eXBlLnJlZ2lzdGVyU2hvcnRjdXRzPWZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0''@;'; put 'put ''KCJncmlkIikuYWRkU2hvcnRjdXRzKFt7a2V5czpbWyJDb250cm9sL01ldGEiLCJ6Il1dLGNhbGxiYWNrOigpPT57dGhpcy51bmRvKCl9fSx7a2V5czpbWyJDb250cm9sL01ldGEiLCJ5Il0sWyJDb250cm9sL01ldGEiLCJTaGlmdCIsInoiXV0sY2FsbGJhY2s6KCk9Pnt0aGlzLnJlZG8oKX19''@;'; put 'put ''XSx7cnVuT25seUlmOmg9PiFoLmFsdEtleSxncm91cDoidW5kb1JlZG8ifSl9LFdpLnByb3RvdHlwZS51bnJlZ2lzdGVyU2hvcnRjdXRzPWZ1bmN0aW9uKCl7dGhpcy5pbnN0YW5jZS5nZXRTaG9ydGN1dE1hbmFnZXIoKS5nZXRDb250ZXh0KCJncmlkIikucmVtb3ZlU2hvcnRjdXRzQnlHcm91''@;'; put 'put ''cCgidW5kb1JlZG8iKX07Y29uc3QgS0U9YW8uZ2V0U2luZ2xldG9uKCk7S0UuYWRkKCJhZnRlclVwZGF0ZVNldHRpbmdzIixmdW5jdGlvbigpe3ZhciBsO251bGw9PT0obD10aGlzLmdldFBsdWdpbigidW5kb1JlZG8iKSl8fHZvaWQgMD09PWx8fGwuaW5pdCgpfSksS0UucmVnaXN0ZXIoImJl''@;'; put 'put ''Zm9yZVVuZG8iKSxLRS5yZWdpc3RlcigiYWZ0ZXJVbmRvIiksS0UucmVnaXN0ZXIoImJlZm9yZVJlZG8iKSxLRS5yZWdpc3RlcigiYWZ0ZXJSZWRvIiksV2kuUExVR0lOX0tFWT0idW5kb1JlZG8iLFdpLlNFVFRJTkdfS0VZUz0hMDtjb25zdCBoZHQ9V2k7ZnVuY3Rpb24gb0YoKXsoZnVuY3Rp''@;'; put 'put ''b24gS0plKCl7VjEoQ2IpLFYxKE1xKSxWMShvMmUpLFYxKGgyZSksVjEoSXEpLFYxKENxKSxWMShmMmUpLFYxKHAyZSksVjEobTJlKSxWMShhNyksVjEodjJlKX0pKCksZnVuY3Rpb24gcFFlKCl7UmQoTWIpLFJkKFB4KSxSZChQcSksUmQoT3EpLFJkKE5xKSxSZChMcSksUmQoSHEpLFJkKFZx''@;'; put 'put ''KSxSZChCcSksUmQoUDQpLFJkKGpxKX0oKSxmdW5jdGlvbiBDUWUoKXskOChGeCksJDgoenEpLCQ4KHZPKSwkOChVcSksJDgoX08pfSgpLGZ1bmN0aW9uIExRZSgpe0doKFNRZSksR2goTVFlKSxHaChFUWUpLEdoKFRRZSksR2goa1FlKSxHaChBUWUpLEdoKERRZSksR2goSVFlKSxHaChRaGUp''@;'; put 'put ''LEdoKFJRZSl9KCksZnVuY3Rpb24gZmR0KCl7cmEoSHgpLHJhKHBldCkscmEoangpLHJhKEdldCkscmEodHR0KSxyYShyZmUpLHJhKEt0dCkscmEod250KSxyYShXTykscmEoanJ0KSxyYShmaXQpLHJhKHdpdCkscmEoblApLHJhKEppdCkscmEoUXN0KSxyYShSYXQpLHJhKGlsdCkscmEoZ2x0''@;'; put 'put ''KSxyYShUbHQpLHJhKGpsdCkscmEoWGx0KSxyYShfY3QpLHJhKFRjdCkscmEoYXV0KSxyYShCdXQpLHJhKFl1dCkscmEoXzB0KSxyYShsMXQpLHJhKFIxdCkscmEoajF0KSxyYSgkMXQpLHJhKG9kdCkscmEoaGR0KX0oKX1sZXQgcjI9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVm''@;'; put 'put ''YWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pfX1yZXR1cm4gbH0pKCksZHk9KCgpPT57Y2xhc3MgbHtuZ09uSW5pdCgpe31zdGF0aWN7dGhpcy5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe3Byb3ZpZGVyczpbZlUsaDBlXSxpbXBvcnRzOltvbyxyYyxDYyxjMCxyMl19KX19cmV0dXJuIGx9KSgpLFhFPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvb119KX19cmV0dXJuIGx9KSgpLHFwZT0oKCk9Pntj''@;'; put 'put ''bGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sYzAsb28scmNdfSl9fXJldHVybiBsfSkoKSxWNz0oKCk9''@;'; put 'put ''PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28scmMsYzAsQ2MsZHksWEUscjIscXBlXX0pfX1yZXR1''@;'; put 'put ''cm4gbH0pKCk7dmFyIHpYLFVYLFpYLFlYLFdYLGVnPVIoNTk0OCk7Y2xhc3Mgalh7Y29uc3RydWN0b3IoKXt0aGlzLnF1ZXVlPVtdfWFkZFRvUXVldWUoYyl7dGhpcy5xdWV1ZS5wdXNoKC4uLmMpfX1vRigpLGZ1bmN0aW9uIHBkdChsKXtjb25zdCBjPSEodHlwZW9mIHdpbmRvdz4idSIpJiZ3''@;'; put 'put ''aW5kb3cualF1ZXJ5O2MmJihjLmZuLmhhbmRzb250YWJsZT1mdW5jdGlvbihhKXtjb25zdCBkPXRoaXMuZmlyc3QoKTtsZXQgZixoPWQuZGF0YSgiaGFuZHNvbnRhYmxlIik7aWYoInN0cmluZyIhPXR5cGVvZiBhKXtjb25zdCBRPWF8fHt9O3JldHVybiBoP2gudXBkYXRlU2V0dGluZ3MoUSk6''@;'; put 'put ''KGg9bmV3IGwuQ29yZShkWzBdLFEpLGQuZGF0YSgiaGFuZHNvbnRhYmxlIixoKSxoLmluaXQoKSksZH1pZihoKXtpZighKHR5cGVvZiBoW2FdPCJ1IikpdGhyb3cgbmV3IEVycm9yKGBIYW5kc29udGFibGUgZG8gbm90IHByb3ZpZGUgYWN0aW9uOiAke2F9YCk7Zm9yKHZhciB2PWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGgsUz1uZXcgQXJyYXkodj4xP3YtMTowKSxWPTE7Vjx2O1YrKylTW1YtMV09YXJndW1lbnRzW1ZdO2Y9aFthXS5jYWxsKGgsLi4uUyksImRlc3Ryb3kiPT09YSYmZC5yZW1vdmVEYXRhKCl9cmV0dXJuIGZ9KX0oSXMpLElzLl9fR2hvc3RUYWJsZT1ZcSxJcy5fZ2V0TGlzdGVuZXJz''@;'; put 'put ''Q291bnRlcj1mdW5jdGlvbiBJWWUoKXtyZXR1cm4gcEx9LElzLl9nZXRSZWdpc3RlcmVkTWFwc0NvdW50ZXI9ZnVuY3Rpb24gbHFlKCl7cmV0dXJuIEFHfSxJcy5FdmVudE1hbmFnZXI9emg7Y29uc3QgZ2R0PVtvZSxqLHosQixJLE0seCxFLE8sbSxHLFRdLG1kdD1bc2UsRF07SXMuaGVscGVy''@;'; put 'put ''PXt9LElzLmRvbT17fSxUbihnZHQsbD0+e1RuKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGwpLGM9PnsiXyIhPT1jLmNoYXJBdCgwKSYmKElzLmhlbHBlcltjXT1sW2NdKX0pfSksVG4obWR0LGw9PntUbihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhsKSxjPT57Il8iIT09Yy5jaGFy''@;'; put 'put ''QXQoMCkmJihJcy5kb21bY109bFtjXSl9KX0pLElzLmNlbGxUeXBlcz1udWxsIT09KHpYPUlzLmNlbGxUeXBlcykmJnZvaWQgMCE9PXpYP3pYOnt9LFRuKHZLZSgpLGw9PntJcy5jZWxsVHlwZXNbbF09cHEobCl9KSxJcy5jZWxsVHlwZXMucmVnaXN0ZXJDZWxsVHlwZT1HaCxJcy5jZWxsVHlw''@;'; put 'put ''ZXMuZ2V0Q2VsbFR5cGU9cHEsSXMuZWRpdG9ycz1udWxsIT09KFVYPUlzLmVkaXRvcnMpJiZ2b2lkIDAhPT1VWD9VWDp7fSxUbihNWWUoKSxsPT57SXMuZWRpdG9yc1tgJHtJMChsKX1FZGl0b3JgXT1mTChsKX0pLElzLmVkaXRvcnMucmVnaXN0ZXJFZGl0b3I9VjEsSXMuZWRpdG9ycy5nZXRF''@;'; put 'put ''ZGl0b3I9ZkwsSXMucmVuZGVyZXJzPW51bGwhPT0oWlg9SXMucmVuZGVyZXJzKSYmdm9pZCAwIT09Wlg/Wlg6e30sVG4ocldlKCksbD0+e2NvbnN0IGM9d0wobCk7ImJhc2UiPT09bCYmKElzLnJlbmRlcmVycy5jZWxsRGVjb3JhdG9yPWMpLElzLnJlbmRlcmVyc1tgJHtJMChsKX1SZW5kZXJl''@;'; put 'put ''cmBdPWN9KSxJcy5yZW5kZXJlcnMucmVnaXN0ZXJSZW5kZXJlcj1SZCxJcy5yZW5kZXJlcnMuZ2V0UmVuZGVyZXI9d0wsSXMudmFsaWRhdG9ycz1udWxsIT09KFlYPUlzLnZhbGlkYXRvcnMpJiZ2b2lkIDAhPT1ZWD9ZWDp7fSxUbihzV2UoKSxsPT57SXMudmFsaWRhdG9yc1tgJHtJMChsKX1W''@;'; put 'put ''YWxpZGF0b3JgXT1aVyhsKX0pLElzLnZhbGlkYXRvcnMucmVnaXN0ZXJWYWxpZGF0b3I9JDgsSXMudmFsaWRhdG9ycy5nZXRWYWxpZGF0b3I9WlcsSXMucGx1Z2lucz1udWxsIT09KFdYPUlzLnBsdWdpbnMpJiZ2b2lkIDAhPT1XWD9XWDp7fSxUbihVVygpLGw9PntJcy5wbHVnaW5zW2xdPWF4''@;'; put 'put ''KGwpfSksSXMucGx1Z2luc1tgJHtJMChkYS5QTFVHSU5fS0VZKX1QbHVnaW5gXT1kYSxJcy5wbHVnaW5zLnJlZ2lzdGVyUGx1Z2luPXJhLElzLnBsdWdpbnMuZ2V0UGx1Z2luPWF4O2NvbnN0IEdYPUlzLCRYPShsLGMsYSk9Pntmb3IobGV0IGQgb2YgbCl7Y29uc3QgaD1jLmZpbmQodj0+di5k''@;'; put 'put ''YXRhPT09ZC5OQU1FKSxmPWEudmFyc1tkLk5BTUVdO2YmJihkLlRZUEU9WyJEQVRFIiwiREFURVRJTUUiLCJUSU1FIl0uaW5jbHVkZXMoZC5ERFRZUEUpPyJudW0iOmYudHlwZSksaCYmZC5ERVNDJiYoaC5kZXNjPWQuREVTQyksaCYmZi5sZW5ndGgmJihoLmxlbmd0aD1wYXJzZUludChmLmxl''@;'; put 'put ''bmd0aCkpLGgmJmQuQ0xTX1JVTEUmJihoLmNsc1J1bGU9ZC5DTFNfUlVMRSl9cmV0dXJuIGN9O2Z1bmN0aW9uIHFYKGwsYyl7aWYobnVsbD09bHx8IWlzTmFOKGwpJiZpc0Zpbml0ZShsKSlyZXR1cm4gYyYmYyghMCksITA7Y29uc3QgYT0oMCxlZy5pc1NwZWNpYWxNaXNzaW5nKShsKTtyZXR1''@;'; put 'put ''cm4gYyYmYyhhKSxhfWNvbnN0IEtwZT17Q0FTRToobCxjKT0+e3N3aXRjaChjKXtjYXNlIlVQQ0FTRSI6cmV0dXJuISFbdm9pZCAwLG51bGxdLmluY2x1ZGVzKGwpfHwic3RyaW5nIj09dHlwZW9mIGwmJmwudG9TdHJpbmcoKT09PWwudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO2Nhc2UiTE9X''@;'; put 'put ''Q0FTRSI6cmV0dXJuISFbdm9pZCAwLG51bGxdLmluY2x1ZGVzKGwpfHwic3RyaW5nIj09dHlwZW9mIGwmJmwudG9TdHJpbmcoKT09PWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfXJldHVybiEwfSxNSU5WQUw6KGwsYyk9Pntjb25zdCBhPXFYKGwpLGQ9cGFyc2VGbG9hdChsKTtyZXR1cm4o''@;'; put 'put ''IWF8fCFpc05hTihkKSkmJmQ+PU51bWJlcihjLnRvU3RyaW5nKCkpfSxNQVhWQUw6KGwsYyk9Pntjb25zdCBhPXFYKGwpLGQ9cGFyc2VGbG9hdChsKTtyZXR1cm4hKCFhfHwhaXNOYU4oZCkpfHxkPD1OdW1iZXIoYy50b1N0cmluZygpKX0sTk9UTlVMTDoobCxjKT0+bnVsbCE9bCYmbC50b1N0''@;'; put 'put ''cmluZygpLmxlbmd0aD4wfTt2YXIgS1g9Uig3ODM3NSk7Y2xhc3Mgd2R0IGV4dGVuZHMgR1guZWRpdG9ycy5BdXRvY29tcGxldGVFZGl0b3J7Y29uc3RydWN0b3IoYyl7c3VwZXIoYyl9Y3JlYXRlRWxlbWVudHMoKXtzdXBlci5jcmVhdGVFbGVtZW50cygpfW9wZW4oYyl7c3VwZXIub3Blbihj''@;'; put 'put ''KSx0aGlzLmlzQ2VsbE51bWVyaWMoKT90aGlzLmh0Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm51bWVyaWNMaXN0Ym94Iik6dGhpcy5odENvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJudW1lcmljTGlzdGJveCIpfWlzQ2VsbE51bWVyaWMoKXtyZXR1cm4gdGhpcy5jZWxsUHJvcGVydGll''@;'; put 'put ''cz8uY2xhc3NOYW1lPy5pbmNsdWRlcygiaHROdW1lcmljIil9fWNsYXNzIFhwZXtjb25zdHJ1Y3RvcihjLGEsZCxoLGYsdil7dGhpcy5ydWxlcz1bXSx0aGlzLmRxcnVsZXM9W10sdGhpcy5kcWRhdGE9W10sdGhpcy5oaWRkZW5Db2x1bW5zPVtdLHRoaXMucHJpbWFyeUtleXM9W10sdGhpcy5l''@;'; put 'put ''eGVjdXRlSG90VmFsaWRhdG9yPShTLFYsUSk9Pntjb25zdCBkZT17Li4uUyx2YWxpZGF0b3I6dm9pZCAwLGNvcnJlY3RGb3JtYXQ6ITEscm93OjAsY29sOjAsaW5zdGFuY2U6bmV3IEdYKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHt9KSx2aXN1YWxSb3c6MCx2aXN1YWxDb2w6MCxw''@;'; put 'put ''cm9wOjB9O251bGw9PVYmJihWPSIiKSxTJiZTLnZhbGlkYXRvciYmImZ1bmN0aW9uIj09dHlwZW9mIFMudmFsaWRhdG9yP1MudmFsaWRhdG9yLmNhbGwoZGUsVixwZT0+e1EmJlEocGUpfSk6USYmUSghMSl9LHRoaXMucmVnaXN0ZXJDdXN0b21FZGl0b3JzKCksdGhpcy5zYXNwYXJhbXM9Yyx0''@;'; put 'put ''aGlzLmhvdEluc3RhbmNlPXYsdGhpcy5ydWxlcz0obD0+e3RyeXtyZXR1cm4gSlNPTi5wYXJzZShgWyR7bH1dYCl9Y2F0Y2h7cmV0dXJuW119fSkoYy5DT0xUWVBFKSx0aGlzLnJ1bGVzPSRYKGQsdGhpcy5ydWxlcyxhKSx0aGlzLnJ1bGVzPShsPT57aWYoIUtYW3dpbmRvdy5uYXZpZ2F0b3Iu''@;'; put 'put ''bGFuZ3VhZ2VdKXJldHVybiBsO2ZvcihsZXQgYSBvZiBsKSJudW1lcmljIj09PWEudHlwZSYmKGEubnVtZXJpY0Zvcm1hdD17cGF0dGVybjoiMCwwIixjdWx0dXJlOndpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2V9KTtyZXR1cm4gbH0pKHRoaXMucnVsZXMpLHRoaXMuZHFydWxlcz1oLHRoaXMu''@;'; put 'put ''ZHFkYXRhPWYsdGhpcy5wcmltYXJ5S2V5cz1jLlBLLnNwbGl0KCIgIiksdGhpcy51cGRhdGVEcURhdGEoKSx0aGlzLnNldHVwVmFsaWRhdGlvbnMoKX1yZWdpc3RlckN1c3RvbUVkaXRvcnMoKXtHWC5lZGl0b3JzLnJlZ2lzdGVyRWRpdG9yKCJhdXRvY29tcGxldGUuY3VzdG9tIix3ZHQpfWdl''@;'; put 'put ''dFJ1bGVzKCl7cmV0dXJuIHRoaXMucnVsZXN9Z2V0UnVsZShjKXtjb25zdCBhPXRoaXMuZ2V0UnVsZUluZGV4KGMpO3JldHVybiB0aGlzLnJ1bGVzW2FdfWdldEhpZGRlbkNvbHVtbnMoKXtyZXR1cm4gdGhpcy5oaWRkZW5Db2x1bW5zfXVwZGF0ZVJ1bGUoYyxhKXtsZXQgZD10aGlzLmdldFJ1''@;'; put 'put ''bGVJbmRleChjKTt0aGlzLnJ1bGVzW2RdPXsuLi50aGlzLnJ1bGVzW2RdLC4uLmF9fXJlbW92ZVJ1bGUoYyl7Y29uc3QgYT10aGlzLmdldFJ1bGVJbmRleChjKTt0aGlzLnJ1bGVzLnNwbGljZShhLDEpfWdldERxRGV0YWlscyhjKXtyZXR1cm4gYz90aGlzLmRxcnVsZXMuZmlsdGVyKGE9PmEu''@;'; put 'put ''QkFTRV9DT0w9PT1jKTp0aGlzLmRxcnVsZXN9aXNEcUNvbChjKXtyZXR1cm4hIXRoaXMuZHFydWxlcy5maW5kKGE9PmEuQkFTRV9DT0w9PT1jKX1oYXNEcVJ1bGVzKGMsYSxkPSExKXtyZXR1cm4gZD90aGlzLmRxcnVsZXMuZmlsdGVyKGg9PmguQkFTRV9DT0w9PT1jJiZhLmluY2x1ZGVzKGgu''@;'; put 'put ''UlVMRV9UWVBFKSkubGVuZ3RoPT09YS5sZW5ndGg6ISF0aGlzLmRxcnVsZXMuZmluZChoPT5oLkJBU0VfQ09MPT09YyYmYS5pbmNsdWRlcyhoLlJVTEVfVFlQRSkpfWdldERxRHJvcGRvd25Tb3VyY2UoYyl7bGV0IGE9W107cmV0dXJuIHRoaXMuZHFydWxlcy5mb3JFYWNoKGQ9PntkLkJBU0Vf''@;'; put 'put ''Q09MLnRvU3RyaW5nKCk9PT1jLmRhdGEmJmMuZGF0YS50b1N0cmluZygpJiZbIkhBUkRTRUxFQ1QiLCJTT0ZUU0VMRUNUIiwiSEFSRFNFTEVDVF9IT09LIiwiU09GVFNFTEVDVF9IT09LIl0uaW5jbHVkZXMoZC5SVUxFX1RZUEUudG9TdHJpbmcoKSkmJnRoaXMuZHFkYXRhLmZpbHRlcihoPT5o''@;'; put 'put ''LkJBU0VfQ09MPT09ZC5CQVNFX0NPTCkuZm9yRWFjaChoPT57YS5wdXNoKGMudHlwZSYmIm51bWVyaWMiPT09Yy50eXBlP051bWJlcihoLlJVTEVfREFUQSk6aC5SVUxFX0RBVEEpfSl9KSxhfXVwZGF0ZURxRGF0YSgpe3RoaXMuZHFkYXRhLmxlbmd0aD4wJiYobD0+e2NvbnN0IGM9W107cmV0''@;'; put 'put ''dXJuIHRoaXMuZHFkYXRhLmZvckVhY2goYT0+e2MuaW5jbHVkZXMoYS5CQVNFX0NPTCl8fGMucHVzaChhLkJBU0VfQ09MKX0pLGN9KSgpLmZvckVhY2goYT0+e2xldCBkPSExO3RoaXMuZHFydWxlcy5sZW5ndGg+MCYmdGhpcy5kcXJ1bGVzLmZvckVhY2goaD0+e2guQkFTRV9DT0w9PT1hJiYo''@;'; put 'put ''IlNPRlRTRUxFQ1QiPT09aC5SVUxFX1RZUEV8fCJIQVJEU0VMRUNUIj09PWguUlVMRV9UWVBFKSYmKGQ9ITApfSksZHx8dGhpcy5kcXJ1bGVzLnB1c2goe0JBU0VfQ09MOmEsUlVMRV9UWVBFOiJTT0ZUU0VMRUNUIixSVUxFX1ZBTFVFOmEsWDoxfSl9KX1zZXR1cFZhbGlkYXRpb25zKCl7Zm9y''@;'; put 'put ''KGxldCBjPTA7Yzx0aGlzLnJ1bGVzLmxlbmd0aDtjKyspe2NvbnN0IGE9dGhpcy5ydWxlc1tjXS5kYXRhfHwiIjtpZigiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiE9PWEpe2lmKHRoaXMuaXNEcUNvbChhKSl7bGV0IGg9dGhpcy5nZXREcURyb3Bkb3duU291cmNlKHRoaXMucnVs''@;'; put 'put ''ZXNbY10pO2gubGVuZ3RoPjAmJih0aGlzLnJ1bGVzW2NdLnNvdXJjZT1oLHRoaXMucnVsZXNbY10udHlwZT0iYXV0b2NvbXBsZXRlIix0aGlzLnJ1bGVzW2NdLmVkaXRvcj0iYXV0b2NvbXBsZXRlLmN1c3RvbSIsdGhpcy5ydWxlc1tjXS5maWx0ZXI9ITEpLHRoaXMuaGFzRHFSdWxlcyhhLFsi''@;'; put 'put ''U09GVFNFTEVDVCJdKSYmKHRoaXMucnVsZXNbY10uc3RyaWN0PSExKSx0aGlzLmhhc0RxUnVsZXMoYSxbIkhBUkRTRUxFQ1QiXSkmJih0aGlzLnJ1bGVzW2NdLnN0cmljdD0hMCksdGhpcy5oYXNEcVJ1bGVzKGEsWyJTT0ZUU0VMRUNUX0hPT0siXSkmJih0aGlzLnJ1bGVzW2NdLnN0cmljdD0h''@;'; put 'put ''MSksdGhpcy5oYXNEcVJ1bGVzKGEsWyJIQVJEU0VMRUNUX0hPT0siXSkmJih0aGlzLnJ1bGVzW2NdLnN0cmljdD0hMCksdGhpcy5oYXNEcVJ1bGVzKGEsWyJOT1ROVUxMIl0pJiYodGhpcy5ydWxlc1tjXS5hbGxvd0VtcHR5PSExKX0idHJ1ZSI9PT10aGlzLnJ1bGVzW2NdLmNvcnJlY3RGb3Jt''@;'; put 'put ''YXQmJih0aGlzLnJ1bGVzW2NdLmNvcnJlY3RGb3JtYXQ9ITApLHRoaXMuc2V0RGVmYXVsdFZhbGlkYXRvcih0aGlzLGMpLHRoaXMuc2V0Q29sdW1uTGV2ZWxTZWN1cml0eShjKX19dGhpcy5zYXNwYXJhbXM/LkNMU19GTEFHJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaCgwKX1zZXREZWZhdWx0''@;'; put 'put ''VmFsaWRhdG9yKGMsYSl7dGhpcy5ydWxlc1thXS52YWxpZGF0b3I9ZnVuY3Rpb24oZCxoKXtjb25zdCBmPWMucnVsZXNbYV0uZGF0YT8udG9TdHJpbmcoKSx2PWMucnVsZXNbYV0udHlwZXx8IiI7bGV0IFM9bnVsbDtyZXR1cm4iYXV0b2NvbXBsZXRlIiE9PXRoaXMuZWRpdG9yJiYiYXV0b2Nv''@;'; put 'put ''bXBsZXRlLmN1c3RvbSIhPT10aGlzLmVkaXRvcnx8KGMuZ2V0SGFuZHNvbnRhYmxlVmFsaWRhdG9yKCJhdXRvY29tcGxldGUiKS5jYWxsKHRoaXMsZCxWPT57Uz1WfSksUyk/KGMuZ2V0SGFuZHNvbnRhYmxlVmFsaWRhdG9yKHYpLmNhbGwodGhpcyxkLFY9PntTPVZ9KSxTP2MubGVuZ3RoQ2hl''@;'; put 'put ''Y2soZCxjLnJ1bGVzW2FdLmxlbmd0aCx2KT9jLmlzRHFDb2woZnx8IiIpJiYhKChsLGMpPT57Zm9yKGxldCBhIG9mIGwpaWYoS3BlW2EuUlVMRV9UWVBFXSYmIUtwZVthLlJVTEVfVFlQRV0oYyxhLlJVTEVfVkFMVUUpKXJldHVybiBjb25zb2xlLndhcm4oYERRIEludmFsaWQgUmVhc29uOiAk''@;'; put 'put ''e2EuUlVMRV9UWVBFfVxuVmFsdWU6ICR7Y30pXG5SdWxlIFZhbHVlOiAke2EuUlVMRV9WQUxVRS5sZW5ndGg+MCYmIiAiIT09YS5SVUxFX1ZBTFVFP2EuUlVMRV9WQUxVRToiTm90IGRlZmluZWQifWApLCExO3JldHVybiEwfSkoYy5nZXREcURldGFpbHMoZnx8IiIpLGQpPyhjb25zb2xlLndh''@;'; put 'put ''cm4oYERRIFZhbGlkYXRpb24gLSBpbnZhbGlkIChWYWx1ZTogJHtkfSlgKSx2b2lkIGgoITEpKTp2b2lkIGgoITApOihjb25zb2xlLndhcm4oYExlbmd0aCBWYWxpZGF0aW9uIC0gaW52YWxpZCAoVmFsdWU6ICR7ZH0pYCksdm9pZCBoKCExKSk6KGNvbnNvbGUud2FybihgSE9UIE5hdGl2ZSBW''@;'; put 'put ''YWxpZGF0aW9uIC0gaW52YWxpZCAoVmFsdWU6ICR7ZH0pYCksdm9pZCBoKCExKSkpOihjb25zb2xlLndhcm4oYEhPVCBOYXRpdmUgVmFsaWRhdGlvbiAoYXV0b2NvbXBsZXRlKSAtIGludmFsaWQgKFZhbHVlOiAke2R9KWApLHZvaWQgaCghMSkpfX1sZW5ndGhDaGVjayhjLGEsZCl7aWYoKDAs''@;'; put 'put ''ZWcuaXNTcGVjaWFsTWlzc2luZykoYyl8fG51bGw9PWN8fG51bGw9PWEpcmV0dXJuITA7aWYoIm51bWVyaWMiPT09ZCl7aWYoOD09PWEpcmV0dXJuITA7aWYoYTwzfHxhPjh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXJldHVybiBjb25zb2xlLndhcm4oImludmFsaWQgbGVuZ3RoIGZyb20gU0FT''@;'; put 'put ''LCBydWxlIGxlbmd0aCBjYW4gb25seSBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMy04IiksITE7Y29uc3QgaD1OdW1iZXIoYyk9PT1jJiZjJTEhPTA7aWYoYTw4JiZoKXJldHVybiBjb25zb2xlLndhcm4oInJlZHVjZWQgbGVuZ3RoIG51bWVyaWNzIGNhbm5vdCBjb250YWluIGRlY2ltYWxzIGVs''@;'; put 'put ''c2UgcHJlY2lzaW9uIHdpbGwgYmUgYWZmZWN0ZWQiKSwhMTtzd2l0Y2goYSl7Y2FzZSAzOnJldHVybiBjPD04MTkyO2Nhc2UgNDpyZXR1cm4gYzw9MjA5NzE1MjtjYXNlIDU6cmV0dXJuIGM8PTUzNjg3MDkxMjtjYXNlIDY6cmV0dXJuIGM8PTEzNzQzODk1MzQ3MjtjYXNlIDc6cmV0dXJuIGM8''@;'; put 'put ''PTM1MTg0MzcyMDg4ODMyfX1yZXR1cm4gYy50b1N0cmluZygpLmxlbmd0aDw9YX1nZXRIYW5kc29udGFibGVWYWxpZGF0b3IoYyl7c3dpdGNoKGMpe2Nhc2UiYXV0b2NvbXBsZXRlIjpyZXR1cm4gRng7Y2FzZSJudW1lcmljIjpyZXR1cm4gcVg7Y2FzZSJkYXRlIjpyZXR1cm4gdk87Y2FzZSJ0''@;'; put 'put ''aW1lIjpyZXR1cm4gX087ZGVmYXVsdDpyZXR1cm4oYSxkKT0+ZD9kKCEwKTpudWxsfX1nZXRSdWxlSW5kZXgoYyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBjP2M6dGhpcy5ydWxlcy5maW5kSW5kZXgoYT0+YS5kYXRhPT09Yyl9c2V0Q29sdW1uTGV2ZWxTZWN1cml0eShjKXtpZighdGhpcy5z''@;'; put 'put ''YXNwYXJhbXM/LkNMU19GTEFHKXJldHVybjtjb25zdCBhPXRoaXMucnVsZXNbY107aWYodGhpcy5wcmltYXJ5S2V5cy5pbmNsdWRlcyhhLmRhdGEpJiYoYS5jbHNSdWxlPSJSRUFEIiksIkhJREUiPT09YS5jbHNSdWxlJiZ0aGlzLmhpZGRlbkNvbHVtbnMucHVzaChjKSwiUkVBRCI9PT1hLmNs''@;'; put 'put ''c1J1bGUmJihhLnJlYWRPbmx5PSEwKSwiRURJVCI9PT1hLmNsc1J1bGUpe2EucmVhZE9ubHk9ITE7Y29uc3QgZD10aGlzLmhpZGRlbkNvbHVtbnMuaW5kZXhPZihjKTt0aGlzLmhpZGRlbkNvbHVtbnMuc3BsaWNlKGQsMSl9fX1jb25zdCBzRj17bnVtZXJpYzoiIixkZWZhdWx0OiIifSxDZHQ9''@;'; put 'put ''KGwsYyk9Pmw/ImF1dG9jb21wbGV0ZSI9PT1sP2MmJmMuc291cmNlP2Muc291cmNlWzBdOltdOnNGLmhhc093blByb3BlcnR5KGwpP3NGW2xdOnNGLmRlZmF1bHQ6c0YuZGVmYXVsdCxYWD1sPT5uZXcgRGF0ZShNYXRoLnJvdW5kKDg2NDAwKihsLTI1NTY5KSoxZTMpKSxNZHQ9KGwsYyxhLGQs''@;'; put 'put ''aCxmLHYpPT4oUVgoYyksYy5pbm5lckhUTUw9YCR7Zj9mLnRvU3RyaW5nKCk6IiJ9IDxjZHMtaWNvbiBzaGFwZT0iZXhjbGFtYXRpb24tdHJpYW5nbGUiIHN0YXR1cz0id2FybmluZyI+PC9jZHMtaWNvbj5gLGMpLEpYPShsLGMsYSxkLGgsZix2KT0+KFFYKGMpLGMuaW5uZXJIVE1MPWZ8fCIi''@;'; put 'put ''LGMpLHhkdD0obCxjLGEsZCxoLGYsdik9PihRWChjKSxjLmlubmVySFRNTD1gJHtmP2YudG9TdHJpbmcoKToiIn0gPHNwYW4gY2xhc3M9InNwaW5uZXIgc3Bpbm5lci1zbSB2ZXJ0aWNhbC1hbGlnbi1taWRkbGUiPjwvc3Bhbj5gLGMpLFFYPWw9PntsLmNsYXNzTGlzdC5jb250YWlucygiaHRE''@;'; put 'put ''YXJrIil8fGwuY2xhc3NMaXN0LmFkZCgiaHREYXJrIil9LGVKPWZ1bmN0aW9uIFRkdChsKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGx8fF9fKGwpJiYiW29iamVjdCBTeW1ib2xdIj09cF8obCl9O3ZhciBrZHQ9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9c''@;'; put 'put ''MSlcXS8sQWR0PS9eXHcqJC87ZnVuY3Rpb24gdEoobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgbHx8bnVsbCE9YyYmImZ1bmN0aW9uIiE9dHlwZW9mIGMpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgYSBmdW5jdGlvbiIpO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGQ9YXJndW1lbnRz''@;'; put 'put ''LGg9Yz9jLmFwcGx5KHRoaXMsZCk6ZFswXSxmPWEuY2FjaGU7aWYoZi5oYXMoaCkpcmV0dXJuIGYuZ2V0KGgpO3ZhciB2PWwuYXBwbHkodGhpcyxkKTtyZXR1cm4gYS5jYWNoZT1mLnNldChoLHYpfHxmLHZ9O3JldHVybiBhLmNhY2hlPW5ldyh0Si5DYWNoZXx8d1UpLGF9dEouQ2FjaGU9d1U7''@;'; put 'put ''Y29uc3QgTGR0PXRKO3ZhciBOZHQ9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csSGR0PS9cXChcXCk/L2csVmR0PWZ1bmN0aW9uIFBkdChsKXt2YXIgYz1MZHQo''@;'; put 'put ''bCxmdW5jdGlvbihkKXtyZXR1cm4gNTAwPT09YS5zaXplJiZhLmNsZWFyKCksZH0pLGE9Yy5jYWNoZTtyZXR1cm4gY30oZnVuY3Rpb24obCl7dmFyIGM9W107cmV0dXJuIDQ2PT09bC5jaGFyQ29kZUF0KDApJiZjLnB1c2goIiIpLGwucmVwbGFjZShOZHQsZnVuY3Rpb24oYSxkLGgsZil7Yy5w''@;'; put 'put ''dXNoKGg/Zi5yZXBsYWNlKEhkdCwiJDEiKTpkfHxhKX0pLGN9KTtjb25zdCBCZHQ9VmR0O3ZhciBKcGU9cG0/cG0ucHJvdG90eXBlOnZvaWQgMCxRcGU9SnBlP0pwZS50b1N0cmluZzp2b2lkIDA7Y29uc3QgWmR0PWZ1bmN0aW9uIGU0ZShsKXtpZigic3RyaW5nIj09dHlwZW9mIGwpcmV0dXJu''@;'; put 'put ''IGw7aWYoYl8obCkpcmV0dXJuIGZ1bmN0aW9uIGpkdChsLGMpe2Zvcih2YXIgYT0tMSxkPW51bGw9PWw/MDpsLmxlbmd0aCxoPUFycmF5KGQpOysrYTxkOyloW2FdPWMobFthXSxhLGwpO3JldHVybiBofShsLGU0ZSkrIiI7aWYoZUoobCkpcmV0dXJuIFFwZT9RcGUuY2FsbChsKToiIjt2YXIg''@;'; put 'put ''Yz1sKyIiO3JldHVybiIwIj09YyYmMS9sPT0tMS8wPyItMCI6Y30sJGR0PWZ1bmN0aW9uIEdkdChsLGMpe3JldHVybiBiXyhsKT9sOmZ1bmN0aW9uIERkdChsLGMpe2lmKGJfKGwpKXJldHVybiExO3ZhciBhPXR5cGVvZiBsO3JldHVybiEoIm51bWJlciIhPWEmJiJzeW1ib2wiIT1hJiYiYm9v''@;'; put 'put ''bGVhbiIhPWEmJm51bGwhPWwmJiFlSihsKSl8fEFkdC50ZXN0KGwpfHwha2R0LnRlc3QobCl8fG51bGwhPWMmJmwgaW4gT2JqZWN0KGMpfShsLGMpP1tsXTpCZHQoZnVuY3Rpb24gWWR0KGwpe3JldHVybiBudWxsPT1sPyIiOlpkdChsKX0obCkpfSxYZHQ9ZnVuY3Rpb24gS2R0KGwpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2YgbHx8ZUoobCkpcmV0dXJuIGw7dmFyIGM9bCsiIjtyZXR1cm4iMCI9PWMmJjEvbD09LTEvMD8iLTAiOmN9LE9sPWZ1bmN0aW9uIGVodChsLGMsYSl7dmFyIGQ9bnVsbD09bD92b2lkIDA6ZnVuY3Rpb24gSmR0KGwsYyl7Zm9yKHZhciBhPTAsZD0oYz0kZHQoYyxsKSku''@;'; put 'put ''bGVuZ3RoO251bGwhPWwmJmE8ZDspbD1sW1hkdChjW2ErK10pXTtyZXR1cm4gYSYmYT09ZD9sOnZvaWQgMH0obCxjKTtyZXR1cm4gdm9pZCAwPT09ZD9hOmR9O2xldCBaZD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoKXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmhlbHBlclNlcnZp''@;'; put 'put ''Y2U9ZCx0aGlzLmxvZ2dlclNlcnZpY2U9aCx0aGlzLnJlc3BvbnNlPW5ldyB0bix0aGlzLmNoYW5nZWRUYWJsZT1uZXcgdG4sdGhpcy5kZXRhaWxzPW5ldyB0bix0aGlzLmRpZmZzPW5ldyB0bix0aGlzLmNvbHVtbnM9bmV3IHRuLHRoaXMudmFsdWVzPW5ldyB0bix0aGlzLmZpbHRlcj1uZXcg''@;'; put 'put ''dG4sdGhpcy5xdWVyeT1uZXcgdG4sdGhpcy5zdWJtaXR0RGV0YWlsPW5ldyB0bix0aGlzLnJlbW92ZVF1ZXJ5PW5ldyB0bix0aGlzLnNldFN1Ym1pdD1uZXcgdG4sdGhpcy5zZXRTdWJtaXRMaXN0PW5ldyB0bn1jYWxsU2VydmljZShhLGQsaCxmKXt2YXIgdj10aGlzO3JldHVybiBZKGZ1bmN0''@;'; put 'put ''aW9uKigpe2NvbnN0IFM9e307cmV0dXJuIFNbZF09W2FdLHtkYXRhOih5aWVsZCB2LnNhc1NlcnZpY2UucmVxdWVzdChoLFMpKS5hZGFwdGVyUmVzcG9uc2UsbGliZHM6Zn19KSgpfXVwZGF0ZVRhYmxlKGEsZCxoLGYsdixTLFYpe3ZhciBRPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0''@;'; put 'put ''IGRlPXtqc2RhdGE6ZH07aWYodil7bGV0IENlPVEucGFyc2VGb3JtYXRzKHYpO2RlLiRqc2RhdGE9e2Zvcm1hdHM6Q2V9fXJldHVybiBkZVtoXT1bYV0seWllbGQgUS5zYXNTZXJ2aWNlLnJlcXVlc3QoZixkZSxWLHtzdXBwcmVzc0Vycm9yQWJvcnRNb2RhbDpTLHN1cHByZXNzU3VjY2Vzc0Fi''@;'; put 'put ''b3J0TW9kYWw6U30pfSkoKX1nZXRBcHByb3ZhbHMoYSxkLGgpe3ZhciBmPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IHY9e307cmV0dXJuIHZbZF09W2FdLCh5aWVsZCBmLnNhc1NlcnZpY2UucmVxdWVzdChoLHYpKS5hZGFwdGVyUmVzcG9uc2V9KSgpfXNlbmREZXRhaWxzKGEsZCxo''@;'; put 'put ''KXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCB2PU9iamVjdC5hc3NpZ24oe3N1YjohMH0sYSk7Zi5zdWJtaXR0RGV0YWlsLm5leHQoe2RhdGE6aFtkXSx2aWV3RGF0YTp2fSl9KSgpfWdldFN1Ym1pdHRzKCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtyZXR1''@;'; put 'put ''cm4oeWllbGQgYS5zYXNTZXJ2aWNlLnJlcXVlc3QoImVkaXRvcnMvZ2V0c3VibWl0cyIsbnVsbCkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9dmlld0xpYnMoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe3JldHVybih5aWVsZCBhLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3Zp''@;'; put 'put ''ZXdsaWJzIixudWxsKSkuYWRhcHRlclJlc3BvbnNlfSkoKX1yZWZyZXNoTGliSW5mbyhhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2NvbnN0IGg9e2xpYjJyZWZyZXNoOlt7bGlicmVmOmF9XX07cmV0dXJuKHlpZWxkIGQuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvcmVm''@;'; put 'put ''cmVzaGxpYmluZm8iLGgpKS5hZGFwdGVyUmVzcG9uc2V9KSgpfXZpZXdUYWJsZXMoYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgaD17U0FTQ29udHJvbFRhYmxlOlt7TVBMSUI6YX1dfTtyZXR1cm4oeWllbGQgZC5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3''@;'; put 'put ''dGFibGVzIixoKSkuYWRhcHRlclJlc3BvbnNlfSkoKX12aWV3RGF0YShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGY9e1NBU0NvbnRyb2xUYWJsZTpbe0xJQkRTOmEsRklMVEVSX1JLOmR9XX07cmV0dXJuKHlpZWxkIGguc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJs''@;'; put 'put ''aWMvdmlld2RhdGEiLGYpKS5hZGFwdGVyUmVzcG9uc2V9KSgpfXZpZXdEYXRhU2VhcmNoKGEsZD0hMSxoLGYpe3ZhciB2PXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IFY9e1NBU0NvbnRyb2xUYWJsZTpbe1NFQVJDSFRZUEU6YS5sZW5ndGg+MD9kPyJOVU0iOiJDSEFSIjoiTk9ORSIs''@;'; put 'put ''U0VBUkNIVkFMOmEsTElCRFM6aCxGSUxURVJfUks6Zn1dfTtyZXR1cm4oeWllbGQgdi5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy92aWV3ZGF0YSIsVikpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Z2V0WExNYXBSdWxlcyhhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2NvbnN0''@;'; put 'put ''IGg9e2dldHhsbWFwc19pbjpbe1hMTUFQX0lEOmF9XX07cmV0dXJuKHlpZWxkIGQuc2FzU2VydmljZS5yZXF1ZXN0KCJlZGl0b3JzL2dldHhsbWFwcyIsaCkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9c2hvd0RpZmZzKGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCB2''@;'; put 'put ''PXt9O3JldHVybiB2W2RdPVthXSwoeWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoaCx2LHt1c2VDb21wdXRlQXBpOiExfSkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9cmVqZWN0aW5nKGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCB2PXt9O3JldHVybiB2W2RdPVth''@;'; put 'put ''XSwoeWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoaCx2LHt1c2VDb21wdXRlQXBpOiExfSkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9YXBwcm92ZVRhYmxlKGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCB2PXt9O3JldHVybiB2W2RdPVthXSwoeWllbGQgZi5zYXNT''@;'; put 'put ''ZXJ2aWNlLnJlcXVlc3QoaCx2KSkuYWRhcHRlclJlc3BvbnNlfSkoKX1nZXRIaXN0b3J5KGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCB2PXt9O3JldHVybiB2W2RdPVthXSwoeWllbGQgZi5zYXNTZXJ2aWNlLnJlcXVlc3QoaCx2KSkuYWRhcHRlclJlc3BvbnNl''@;'; put 'put ''fSkoKX1zZXRRdWVyeVZhcmlhYmxlcyhhLGQpe3RoaXMuY29sdW1ucy5uZXh0KHtkYXRhOntjb2xzOmR9LGxpYmRzOmF9KX1nZXRDaGFuZ2VJbmZvKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGY9e1NBU0NvbnRyb2xUYWJsZTpbe1RBQkxFOmF9XX07cmV0dXJuKHlp''@;'; put 'put ''ZWxkIGQuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Y2hhbmdlaW5mbyIsZikpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Z2V0UXVlcnlWYWx1ZXMoYSxkLGgsZix2KXt2YXIgUz10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2xldCBWPXtpd2FudDpbe2xpYmRzOmQsY29sOmEsLi4uZiYm''@;'; put 'put ''e1NUQVJUUk9XOmZ9LC4uLnYmJntST1dTOnZ9fV19O3JldHVybiBoLmxlbmd0aD4wJiYoVi5GSUxURVJRVUVSWT1oKSwoeWllbGQgUy5zYXNTZXJ2aWNlLnJlcXVlc3QoInB1YmxpYy9nZXRjb2x2YWxzIixWKS5jYXRjaChRPT57dGhyb3cgUX0pKS5hZGFwdGVyUmVzcG9uc2V9KSgpfXNhdmVR''@;'; put 'put ''dWVyeShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGY9e2l3YW50Olt7ZmlsdGVyX3RhYmxlOmF9XSxmaWx0ZXJxdWVyeTpkfTtjb25zdCB2PXlpZWxkIGguc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmFsaWRhdGVmaWx0ZXIiLGYpO3JldHVybiBoLmZpbHRl''@;'; put 'put ''ci5uZXh0KHYpLHYuYWRhcHRlclJlc3BvbnNlfSkoKX1vcGVuVGFibGUoYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgaD17aXdhbnQ6W3t0YWJsZV9pZDphfV19O3JldHVybih5aWVsZCBkLnNhc1NlcnZpY2UucmVxdWVzdCgiYXVkaXRvcnMvZ2V0c3RhZ2V0YWJsZSIs''@;'; put 'put ''aCkpLmFkYXB0ZXJSZXNwb25zZX0pKCl9Y2hlY2tPcGVyYXRvcihhLGQsaCl7bGV0IGY7c3dpdGNoKGEpe2Nhc2UiQkVUV0VFTiI6ZCBpbnN0YW5jZW9mIEFycmF5JiYoIiIhPT1kWzBdJiYiIiE9PWRbMV0/Zj1kWzBdKyIgQU5EICIrZFsxXToiIiE9PWRbMF0mJiIiPT09ZFsxXT8oZFsxXT0i''@;'; put 'put ''LiIsZj1kWzBdKyIgQU5EICIrZFsxXSk6IiI9PT1kWzBdJiYiIiE9PWRbMV0/KGRbMF09Ii4iLGY9ZFswXSsiIEFORCAiK2RbMV0pOihkWzBdPSIuIixkWzFdPSIuIixmPWRbMF0rIiBBTkQgIitkWzFdKSk7YnJlYWs7Y2FzZSJJTiI6Y2FzZSJOT1QgSU4iOmxldCBTPVtdO2lmKHR5cGVvZiBk''@;'; put 'put ''PCJ1Iilmb3IobGV0IFY9MDtWPGQubGVuZ3RoO1YrKykhMD09PWRbVl0uY2hlY2tlZCYmKCJjaGFyIj09PWg/KCJzdHJpbmciPT10eXBlb2YgZFtWXS52YWwmJihkW1ZdLnZhbD1kW1ZdLnZhbC5yZXBsYWNlKCInIiwiJyciKSksUy5wdXNoKCInIitkW1ZdLnZhbCsiJyIpKToobnVsbD09PWRb''@;'; put 'put ''Vl0udmFsJiYoZFtWXS52YWw9Ii4iKSxTLnB1c2goZFtWXS52YWwpKSk7ZD0iKCIrUysiKSI7YnJlYWs7Y2FzZSJDT05UQUlOUyI6YT0iPyI7YnJlYWs7Y2FzZSJOT1QgRVFVQUwiOmE9Im5lIn1yZXR1cm4ibnVtIj09PWgmJm51bGw9PT1kJiYoZD0iLiIpLCJQbGVhc2Ugc2VsZWN0IHZhbHVl''@;'; put 'put ''Ij09PWQmJihkPSIiKSwtMSE9PVsiPSIsIj4iLCI8IiwiPD0iLCI+PSIsIm5lIl0uaW5kZXhPZihhKSYmIm51bSI9PT1oJiYiIj09PWQmJihkPSIuIiksIkJFVFdFRU4iPT09YT97dmFsdWU6ZixvcGVyYXRvcjphfTp7dmFsdWU6ZCxvcGVyYXRvcjphfX13aGVyZUNsYXVzZUNyZWF0b3IoYSxk''@;'; put 'put ''LGgpe2xldCBWLHBlLGY9IiIsUT0iIixkZT1bXTtmb3IobGV0IE9lPTA7T2U8YS5xdWVyeU9iai5sZW5ndGg7T2UrKyl7bGV0IFllPSIiLGV0PWEucXVlcnlPYmpbT2VdO2ZvcihsZXQgZHQ9MDtkdDxldC5lbGVtZW50cy5sZW5ndGg7ZHQrKyl7bGV0IE10LGh0PWV0LmVsZW1lbnRzW2R0XTtW''@;'; put 'put ''PWR0PGV0LmVsZW1lbnRzLmxlbmd0aC0xP2V0LmNsYXVzZUxvZ2ljOiIiO2ZvcihsZXQgdnI9MDt2cjxodC52YWx1ZXMubGVuZ3RoO3ZyKyspe2lmKCJzdHJpbmciPT10eXBlb2YgaHQudmFsdWUmJiJudW1iZXIiPT10eXBlb2YgaHQudmFsdWVzW3ZyXS5mb3JtYXR0ZWQpaHQudmFsdWU9PT1K''@;'; put 'put ''U09OLnN0cmluZ2lmeShodC52YWx1ZXNbdnJdLmZvcm1hdHRlZCkmJihNdD1odC52YWx1ZXNbdnJdLnVuZm9ybWF0dGVkKTtlbHNle2xldCBQaT0ibnVtYmVyIiE9dHlwZW9mIGh0LnZhbHVlc1t2cl0uZm9ybWF0dGVkJiZudWxsIT09aHQudmFsdWVzW3ZyXS5mb3JtYXR0ZWQ/aHQudmFsdWVz''@;'; put 'put ''W3ZyXS5mb3JtYXR0ZWQudHJpbSgpOmh0LnZhbHVlc1t2cl0uZm9ybWF0dGVkO2h0LnZhbHVlPT09UGkmJihNdD1odC52YWx1ZXNbdnJdLnVuZm9ybWF0dGVkKX0iUGxlYXNlIHNlbGVjdCB2YWx1ZSI9PT1odC52YWx1ZSYmLTEhPT1bIj0iLCI+IiwiPCIsIjw9IiwiPj0iLCJuZSJdLmluZGV4''@;'; put 'put ''T2YoaHQub3BlcmF0b3IpJiYoTXQ9IiIpLCgiQ09OVEFJTlMiPT09aHQub3BlcmF0b3J8fCJMSUtFIj09PWh0Lm9wZXJhdG9yfHwiQkVHSU5TX1dJVEgiPT09aHQub3BlcmF0b3IpJiYoTXQ9aHQudmFsdWUpfWlmKE10fHwoTXQ9aHQudmFsdWUpLGh0LnZhbHVlIGluc3RhbmNlb2YgQXJyYXkm''@;'; put 'put ''JiJCRVRXRUVOIj09PWh0Lm9wZXJhdG9yKXtNdD1bXSxNdC5wdXNoKGh0LnZhbHVlWzBdKSxNdC5wdXNoKGh0LnZhbHVlWzFdKTtmb3IobGV0IHZyPTA7dnI8aHQudmFsdWVzLmxlbmd0aDt2cisrKU10WzBdPT09aHQudmFsdWVzW3ZyXS5mb3JtYXR0ZWQmJihNdFswXT1odC52YWx1ZXNbdnJd''@;'; put 'put ''LnVuZm9ybWF0dGVkKSxNdFsxXT09PWh0LnZhbHVlc1t2cl0uZm9ybWF0dGVkJiYoTXRbMV09aHQudmFsdWVzW3ZyXS51bmZvcm1hdHRlZCl9aWYoaHQudmFsdWUgaW5zdGFuY2VvZiBBcnJheSYmKCJJTiI9PT1odC5vcGVyYXRvcnx8Ik5PVCBJTiI9PT1odC5vcGVyYXRvcikpe010PVtdLE10''@;'; put 'put ''PWh0LnZhbHVlO2ZvcihsZXQgdnI9MDt2cjxodC52YWx1ZXMubGVuZ3RoO3ZyKyspTXRbdnJdJiZNdFt2cl0udmFsPT09aHQudmFsdWVzW3ZyXS5mb3JtYXR0ZWQmJihNdFt2cl0udmFsPWh0LnZhbHVlc1t2cl0udW5mb3JtYXR0ZWQpfWxldCBRdD1odC50eXBlO2NvbnN0IGxuPWh0LnZhbHVl''@;'; put 'put ''VmFyaWFibGU7bGV0IG5yLHZuPW51bGw9PT1odC52YXJpYWJsZT8iIjpodC52YXJpYWJsZSx3bj1udWxsPT09aHQub3BlcmF0b3I/IiI6aHQub3BlcmF0b3I7bnI9dGhpcy5jaGVja09wZXJhdG9yKHduLE10LFF0KS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIG5yJiYiKCIhPT1uclswXSYmKG5y''@;'; put 'put ''PW5yLnJlcGxhY2UoIiciLCInJyIpKSx3bj10aGlzLmNoZWNrT3BlcmF0b3Iod24sbnIsUXQpLm9wZXJhdG9yLCJjaGFyIj09PVF0JiYiSU4iIT09d24mJiJOT1QgSU4iIT09d24/KHR5cGVvZiBucj4idSImJihucj0iIiksbnI9bG4/IiAiK25yKyIgIjoiICciK25yKyInICIsWWU9WWUrIiAi''@;'; put 'put ''K3ZuKyIgIit3bitucitWKTooIm51bSI9PT1RdCYmdHlwZW9mIG5yPiJ1IiYmKG5yPSIuIiksbnI9dHlwZW9mIG5yPiJ1Ij8iIjoiICIrbnIrIiAiLFllPVllKyIgIit2bisiICIrd24rbnIrVil9ZGUucHVzaChZZSl9UT0iIjtmb3IobGV0IE9lPTA7T2U8ZGUubGVuZ3RoO09lKyspcGU9T2U8''@;'; put 'put ''ZGUubGVuZ3RoLTE/ZDoiIixRPTE9PT1kZS5sZW5ndGg/ZGVbMF06USsiICgiK2RlW09lXSsiKSAiK3BlO3JldHVybiBmPVEuc3Vic3RyKDEpLnNsaWNlKDAsLTEpLFE9IldIRVJFIitRKyI7Iix0aGlzLnF1ZXJ5Lm5leHQoe3doZXJlQ2xhdXNlOlEsc3RyaW5nOmYsb2JqOmEsbGliZHM6aH0p''@;'; put 'put ''LHt3aGVyZUNsYXVzZTpRLHN0cmluZzpmfX1jcmVhdGVGaWx0ZXJRdWVyeVRhYmxlKGEpe2NvbnN0IGQ9W107cmV0dXJuIGEuZmlsdGVyR3JvdXBzLmZvckVhY2goKGgsZik9PntoLmZpbHRlckNsYXVzZXMuZm9yRWFjaCh2PT57bGV0IFM9IiI7IkJFVFdFRU4iPT09di5vcGVyYXRvcj9TPWAk''@;'; put 'put ''e3YudmFsdWVbMF19IEFORCAke3YudmFsdWVbMV19YDoiSU4iPT09di5vcGVyYXRvcnx8Ik5PVCBJTiI9PT12Lm9wZXJhdG9yPyh2LnZhbHVlLmZvckVhY2goVj0+e2lmKFYuY2hlY2tlZCl7Y29uc3QgUT1WLnZhbDsic3RyaW5nIiE9dHlwZW9mIFF8fCgwLGVnLmlzU3BlY2lhbE1pc3Npbmcp''@;'; put 'put ''KFEpJiYiY2hhciIhPT12LnR5cGU/Uy5sZW5ndGg+MD9TKz1gLCR7UX1gOlM9YCgke1F9YDpTLmxlbmd0aD4wP1MrPWAsJyR7US5yZXBsYWNlKC8nL2csIicnIil9J2A6Uz1gKCcke1EucmVwbGFjZSgvJy9nLCInJyIpfSdgfX0pLFMubGVuZ3RoPjAmJihTKz0iKSIpKToiIj09PXYudmFsdWU/''@;'; put 'put ''Uz0iY2hhciI9PT12LnR5cGU/IicgJyI6Ii4iOiJjaGFyIj09PXYudHlwZSYmIXYudmFsdWVWYXJpYWJsZSYmKFM9YCcke3YudmFsdWUucmVwbGFjZSgvJy9nLCInJyIpfSdgKSxkLnB1c2goe0dST1VQX0xPR0lDOmEuZ3JvdXBMb2dpYyxTVUJHUk9VUF9MT0dJQzpoLmNsYXVzZUxvZ2ljfHwi''@;'; put 'put ''QU5EIixTVUJHUk9VUF9JRDpmLFZBUklBQkxFX05NOnYudmFyaWFibGUsT1BFUkFUT1JfTk06di5vcGVyYXRvcixSQVdfVkFMVUU6U3x8di52YWx1ZX0pfSl9KSxkfWluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoYSxkKXtjb25zdCBoPXtxdWVyeU9iajpbXSxjbGF1c2VMb2dpYzpbXSxn''@;'; put 'put ''cm91cExvZ2ljOk9sKEhuLGEpLmZpbHRlci5xdWVyeVswXS5HUk9VUF9MT0dJQ307T2woSG4sYSkuZmlsdGVyLmNsYXVzZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShoKSxPbChIbixhKS5maWx0ZXIuZ3JvdXBMb2dpYz1PbChIbixhKS5maWx0ZXIucXVlcnlbMF0uR1JPVVBfTE9H''@;'; put 'put ''SUM7bGV0IGY9IiIsdj17ZWxlbWVudHM6W119LFM9MDtPbChIbixhKS5maWx0ZXIucXVlcnkuZm9yRWFjaChWPT57Y29uc3QgUT17fTtmb3IobGV0IGRlPTA7ZGU8ZC5sZW5ndGg7ZGUrKylpZihkW2RlXS5OQU1FPT09Vi5WQVJJQUJMRV9OTSl7aWYoZj1WLlNVQkdST1VQX0xPR0lDLFEuZGR0''@;'; put 'put ''eXBlPWRbZGVdLkREVFlQRSxRLnR5cGU9ZFtkZV0uVFlQRSxRLm9wZXJhdG9ycz0ibnVtIj09PWRbZGVdLlRZUEU/SG4ub3BlcmF0b3JzLm51bU9wZXJhdG9yczpIbi5vcGVyYXRvcnMuY2hhck9wZXJhdG9ycyxRLmxvZ2ljPW51bGwsUS5vcGVyYXRvcj1WLk9QRVJBVE9SX05NLFEudmFyaWFi''@;'; put 'put ''bGU9Vi5WQVJJQUJMRV9OTSwiY2hhciI9PT1kW2RlXS5UWVBFKWlmKCJJTiI9PT1WLk9QRVJBVE9SX05NfHwiTk9UIElOIj09PVYuT1BFUkFUT1JfTk0pe2NvbnN0IHBlPVtdLE9lPVYuUkFXX1ZBTFVFLnNsaWNlKDEsLTEpLnNwbGl0KCInLCciKTsxPT09T2UubGVuZ3RoP3BlLnB1c2goe2No''@;'; put 'put ''ZWNrZWQ6ITAsdmFsOk9lWzBdLnNsaWNlKDEsLTEpLnJlcGxhY2UoLycnL2csIiciKX0pOk9lLmZvckVhY2goKFllLGV0KT0+e3BlLnB1c2goMD09PWV0P3tjaGVja2VkOiEwLHZhbDpZZS5zbGljZSgxKS5yZXBsYWNlKC8nJy9nLCInIil9OmV0PT09T2UubGVuZ3RoLTE/e2NoZWNrZWQ6ITAs''@;'; put 'put ''dmFsOlllLnNsaWNlKDAsLTEpLnJlcGxhY2UoLycnL2csIiciKX06e2NoZWNrZWQ6ITAsdmFsOlllLnJlcGxhY2UoLycnL2csIiciKX0pfSksUS52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHBlKX1lbHNlIFEudmFsdWU9Vi5SQVdfVkFMVUUuc2xpY2UoMSwtMSkucmVwbGFj''@;'; put 'put ''ZSgvJycvZywiJyIpO2Vsc2UgaWYoIklOIj09PVYuT1BFUkFUT1JfTk18fCJOT1QgSU4iPT09Vi5PUEVSQVRPUl9OTSl7Y29uc3QgcGU9W107Vi5SQVdfVkFMVUUuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5mb3JFYWNoKChZZSxldCk9PntwZS5wdXNoKHtjaGVja2VkOiEwLHZhbDpZZX0pfSks''@;'; put 'put ''US52YWx1ZT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHBlKX1lbHNlIGlmKCJCRVRXRUVOIj09PVYuT1BFUkFUT1JfTk0pe2NvbnN0IHBlPVYuUkFXX1ZBTFVFLnNwbGl0KCIgQU5EICIpO1EudmFsdWU9cGV9ZWxzZSBRLnZhbHVlPVYuUkFXX1ZBTFVFO1EudmFsdWVzPVtdLFM9PT1W''@;'; put 'put ''LlNVQkdST1VQX0lEfHwoT2woSG4sYSkuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHYpKSxPbChIbixhKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialtTXS5jbGF1c2VMb2dpYz1mLE9sKEhuLGEpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5''@;'; put 'put ''T2JqW1NdLmludmFsaWRDbGF1c2U9ITEsUysrLHYuZWxlbWVudHM9W10pLHYuZWxlbWVudHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFEpKTticmVha319KSx2LmVsZW1lbnRzLmxlbmd0aD4wJiYoT2woSG4sYSkuZmlsdGVyLmNsYXVzZXMucXVlcnlPYmoucHVzaCh0aGlz''@;'; put 'put ''LmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHYpKSxPbChIbixhKS5maWx0ZXIuY2xhdXNlcy5xdWVyeU9ialtTXS5jbGF1c2VMb2dpYz1mLE9sKEhuLGEpLmZpbHRlci5jbGF1c2VzLnF1ZXJ5T2JqW1NdLmludmFsaWRDbGF1c2U9ITEpLE9sKEhuLGEpLmZpbHRlci5xdWVyeT1bXX1yZW1vdmVD''@;'; put 'put ''bGF1c2UoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe3JldHVybiBhLnJlbW92ZVF1ZXJ5Lm5leHQoITApLCEwfSkoKX1zcGVjQ29udmVyc2lvbihhKXtsZXQgZD17fSxoPVtdO2lmKGg9YS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuTkFNRS50b1VwcGVyQ2FzZSgpfSksYSBp''@;'; put 'put ''bnN0YW5jZW9mIEFycmF5KWZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKWRbaFtmXV09MT09PWFbZl0uVFlQRT97Y29sVHlwZToibnVtIixjb2xMZW5ndGg6YVtmXS5MRU5HVEh9Ontjb2xUeXBlOiJzdHJpbmciLGNvbExlbmd0aDphW2ZdLkxFTkdUSH07cmV0dXJuIGR9c2V0U3VibWl0UmVh''@;'; put 'put ''ZHkoKXt0aGlzLnNldFN1Ym1pdC5uZXh0KCEwKX1wYXJzZUZvcm1hdHMoYSl7Y29uc3QgZD17fSxoPWEudmFycztmb3IobGV0IGYgb2YgT2JqZWN0LmtleXMoaCkpe2NvbnN0IHY9aFtmXS50eXBlLFM9aFtmXS5sZW5ndGg7Im51bSI9PT12P2RbZl09ImJlc3QuIjoiY2hhciI9PT12JiYoZFtm''@;'; put 'put ''XT1gJGNoYXIke1N9LmApfXJldHVybiBkfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKGNyKHZhKSxjcihldSksY3IoTzEpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBs''@;'; put 'put ''fSkoKTtjb25zdCB0NGU9bD0+e2xldCBjPSgiMCIrbC5nZXRVVENIb3VycygpKS5zbGljZSgtMikrIjoiO3JldHVybiBjPWMrKCIwIitsLmdldFVUQ01pbnV0ZXMoKSkuc2xpY2UoLTIpKyI6IixjKz0oIjAiK2wuZ2V0VVRDU2Vjb25kcygpKS5zbGljZSgtMiksY30sbko9bD0+bC5nZXRGdWxs''@;'; put 'put ''WWVhcigpKyItIisoIjAiKyhsLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSsiLSIrKCIwIitsLmdldERhdGUoKSkuc2xpY2UoLTIpLHJKPWw9PiEhL14tezAsMX1cZCskLy50ZXN0KGwpLG40ZT1sPT4hIS9eXGQrXC5cZCskLy50ZXN0KGwpLGlKPShsLGMpPT5uZXcgRmlsZShbbF0sYyx7bGFz''@;'; put 'put ''dE1vZGlmaWVkOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSk7dmFyIFZjPVIoNjM1NzgpLHI0ZT1SKDk0MjQ4KSxpNGU9Uig4MzgzOCk7Y2xhc3MgbzRle2NvbnN0cnVjdG9yKGMpe3RoaXMubGljZW5jZVN0YXRlPWMubGljZW5jZVN0YXRlfXBhcnNlU3ByZWFkc2hlZXRGaWxlKGMsYSxkLGgpe3Zh''@;'; put 'put ''ciBmPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKCh2LFMpPT57Y29uc3QgVj1jLnVwbG9hZGVyfHxuZXcgalg7aWYoYy53b3JrYm9vayl0aGlzLnBhcnNlRXhjZWxGaWxlKGMsYy53b3JrYm9vayxWLGgpLnRoZW4oUT0+e3YoUSl9KS5jYXRjaChRPT57UyhRKX0pO2Vsc2V7Y29uc3QgZGU9Yy5m''@;'; put 'put ''aWxlO2MuZW5jb2Rpbmd8fChjLmVuY29kaW5nPSJVVEYtOCIpLGQmJmQoYExvYWRpbmcgJHtkZS5uYW1lfSBpbnRvIHRoZSBicm93c2VyYCk7bGV0IHBlPWRlLm5hbWUuc2xpY2UoZGUubmFtZS5sYXN0SW5kZXhPZigiLiIpKzEsZGUubmFtZS5sYXN0SW5kZXhPZigiLiIpKzQpO2lmKCJ4bHMi''@;'; put 'put ''IT09cGUudG9Mb3dlckNhc2UoKSl7aWYoImNzdiI9PT1wZS50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLnBhcnNlQ3N2RmlsZShjLFYscGUpO3tsZXQgQ2U9J0ludmFsaWQgZmlsZSB0eXBlICI8Yj4nK2MuZmlsZS5uYW1lKyc8L2I+Ii4gUGxlYXNlIHVwbG9hZCBjc3Ygb3IgZXhjZWwgZmls''@;'; put 'put ''ZS4nO3JldHVybiBWLnF1ZXVlLnBvcCgpLFMoQ2UpfX17bGV0IENlPW5ldyBGaWxlUmVhZGVyO0NlLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBZZT1ZKGZ1bmN0aW9uKihldCl7Y29uc3QgZHQ9eWllbGQgZi54c2x4U3RhcnRSZWFkaW5nKGV0LGEsYy5wYXNzd29yZCk7aWYoIWR0KXJldHVybiBT''@;'; put 'put ''KCJObyB3b3JrYm9vayBmb3VuZC4iKTtmLnBhcnNlRXhjZWxGaWxlKGMsZHQsVixoKS50aGVuKGh0PT57dihodCl9KS5jYXRjaChodD0+e1MoaHQpfSl9KTtyZXR1cm4gZnVuY3Rpb24oZXQpe3JldHVybiBZZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLENlLnJlYWRBc0FycmF5QnVmZmVy''@;'; put 'put ''KGRlKX19fSl9cGFyc2VFeGNlbEZpbGUoYyxhLGQsaCl7cmV0dXJuIG5ldyBQcm9taXNlKChmLHYpPT57bGV0IFM9ITEsVj1bXTtjb25zdCBRPVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiwuLi5jLmhlYWRlckFycmF5XSxkZT10aGlzLnNlYXJjaERhdGFJbkV4Y2VsKGEsYyk7''@;'; put 'put ''bGV0IHBlPVtdO2lmKGRlLmZvdW5kPyhTPSEwLHBlPWRlLmZvdW5kLmFycmF5RGF0YSxkZS5mb3VuZC5oZWFkZXJzLmluY2x1ZGVzKCJfX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18iKXx8KHBlPXBlLm1hcChZZT0+KFllLnVuc2hpZnQoe3Y6IiJ9KSxZZSkpKSxoJiZoKGBTaGVldDog''@;'; put 'put ''JHtkZS5mb3VuZC5zaGVldE5hbWV9XG5SYW5nZTogJHtkZS5mb3VuZC5zdGFydEFkZHJlc3N9OiR7ZGUuZm91bmQuZW5kQWRkcmVzc31gKSk6Vj1kZS5taXNzaW5nfHxbXSxWLmxlbmd0aD4wKXtsZXQgWWU9Vi5tYXAoZXQ9PmBTaGVldDogJHtldC5zaGVldE5hbWV9LlxuTWlzc2luZyBjb2x1''@;'; put 'put ''bW5zOiAke2V0Lm1pc3NpbmdIZWFkZXJzLmpvaW4oIiwiKX1gKS5qb2luKCJcblxuIik7cmV0dXJuIGQucXVldWUucG9wKCksdihZZSl9aWYoMD09PXBlLmxlbmd0aHx8MD09PXBlWzBdLmxlbmd0aCl7bGV0IFllPSJObyByZWxldmFudCBkYXRhIGZvdW5kIGluIEZpbGUgISI7cmV0dXJuIGQu''@;'; put 'put ''cXVldWUucG9wKCksdihZZSl9aWYoKGMuZGF0ZVRpbWVIZWFkZXJzLmxlbmd0aD4wfHxjLmRhdGVIZWFkZXJzLmxlbmd0aD4wfHxjLnRpbWVIZWFkZXJzLmxlbmd0aD4wKSYmKHBlPXRoaXMudXBkYXRlRGF0ZVRpbWVDb2xzKFEscGUsYykpLGMueGxSdWxlcy5sZW5ndGg+MCYmKHBlPXRoaXMu''@;'; put 'put ''dXBkYXRlWExSdWxlQ29scyhRLHBlLGMpKSwhUyl7bGV0IFllPSIiO3JldHVybiBZZT0wPT09Vi5sZW5ndGg/Ik5vIHJlbGV2YW50IGRhdGEgZm91bmQgaW4gRmlsZSAhIjpWLm1hcChldD0+YFNoZWV0OiAke2V0LnNoZWV0TmFtZX0uXG5NaXNzaW5nIGNvbHVtbnM6ICR7ZXQubWlzc2luZ0hl''@;'; put 'put ''YWRlcnMuam9pbigiLCIpfWApLmpvaW4oIlxuXG4iKSxkLnF1ZXVlLnBvcCgpLHYoWWUpfXtjLmhlYWRlclNob3c9USxwZT1wZS5tYXAoUXQ9PlF0Lm1hcChsbj0+Im4iPT09bG4udHx8bG4udz9sbi52OiJzdHJpbmciPT10eXBlb2YgbG4udj9sbi52LnRyaW0oKTpsbi52KSkscGU9cGUubWFw''@;'; put 'put ''KFF0PT5RdC5tYXAoKGxuLHZuKT0+eyFsbiYmMCE9PWxuJiYobG49IiIpO2NvbnN0IHduPWMuaGVhZGVyU2hvd1t2bl07cmV0dXJuIm51bWVyaWMiPT09Yy5kY1ZhbGlkYXRvcj8uZ2V0UnVsZSh3bik/LnR5cGUmJigwLGVnLmlzU3BlY2lhbE1pc3NpbmcpKGxuKSYmIWxuLmluY2x1ZGVzKCIu''@;'; put 'put ''IikmJihsbj0iLiIrbG4pLGxufSkpO2NvbnN0IFllPXBlLnNsaWNlKDAsdGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQpO2xldCBodCxldD1WYy51dGlscy5qc29uX3RvX3NoZWV0KFllLHtza2lwSGVhZGVyOiEwfSksZHQ9VmMudXRpbHMuc2hlZXRfdG9fY3N2KGV0''@;'; put 'put ''KTtpZihkdD1RLmpvaW4oIiwiKSsiXG4iK2R0LCJXTEFUSU4xIj09PWMuZW5jb2Rpbmcpe2xldCBRdD1yNGUuZGVjb2RlKGk0ZS5CdWZmZXIuZnJvbShkdCksIkNQLTEyNTIiKTtodD1uZXcgQmxvYihbUXRdLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSl9ZWxzZSBodD1uZXcgQmxvYihbZHRd''@;'; put 'put ''LHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSk7bGV0IE10PWlKKGh0LGMuZmlsZS5uYW1lKyIuY3N2Iik7ZC5hZGRUb1F1ZXVlKFtNdF0pfWlmKDA9PT1wZS5sZW5ndGgpcmV0dXJuIHYoYFRhYmxlIGluIHRoZSBmaWxlIGlzIGVtcHR5LiBEYXRhIGZvdW5kIG9uIHNoZWV0OiAke2RlLmZvdW5k''@;'; put 'put ''Py5zaGVldE5hbWV8fCIifWApO2lmKCFkZS5mb3VuZClyZXR1cm4gdigiTm8gcmVsZXZhbnQgZGF0YSBmb3VuZC4gJ2ZvdW5kJyBvYmplY3QgaXMgZW1wdHksIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQuIik7Y29uc3QgQ2U9ZGUuZm91bmQuc3RhcnRBZGRyZXNzfHwiIixPZT1kZS5mb3Vu''@;'; put 'put ''ZC5lbmRBZGRyZXNzfHwiIjtyZXR1cm4gZih7dXBsb2FkZXI6ZCxkYXRhOnBlLHJhbmdlU2hlZXRSZXM6e2ZvdW5kOiEhZGUuZm91bmQsc2hlZXROYW1lOmRlLmZvdW5kLnNoZWV0TmFtZSxyYW5nZVN0YXJ0QWRkcmVzczpDZSxyYW5nZUVuZEFkZHJlc3M6T2UscmFuZ2VBZGRyZXNzOmAke0Nl''@;'; put 'put ''fToke09lfWAsbWlzc2luZ0hlYWRlcnM6Vn0saGVhZGVyU2hvdzpjLmhlYWRlclNob3d9KX0pfXBhcnNlQ3N2RmlsZShjLGEsZCl7cmV0dXJuIG5ldyBQcm9taXNlKChoLGYpPT57aWYodGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQhPT0xLzApcmV0dXJuIGEucXVl''@;'; put 'put ''dWUucG9wKCksZigiRXhjZWwgZmlsZXMgb25seS4gVG8gdW5sb2NrIENTViB1cGxvYWRzLCBwbGVhc2UgY29udGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIik7aWYoIldMQVRJTjEiIT09Yy5lbmNvZGluZylyZXR1cm4gaCh7dXBsb2FkZXI6YX0pO3tsZXQgdj1uZXcgRmlsZVJlYWRl''@;'; put 'put ''cjt2Lm9ubG9hZD1WPT57bGV0IFE9cjRlLmRlY29kZShpNGUuQnVmZmVyLmZyb20oVi50YXJnZXQucmVzdWx0KSwiQ1AtMTI1MiIpLGRlPW5ldyBCbG9iKFtRXSx7dHlwZTpkfSkscGU9aUooZGUsYy5maWxlLm5hbWUpO3JldHVybiBhLnF1ZXVlLnBvcCgpLGEuYWRkVG9RdWV1ZShbcGVdKSxo''@;'; put 'put ''KHt1cGxvYWRlcjphfSl9LHYucmVhZEFzQXJyYXlCdWZmZXIoYy5maWxlKX19KX1ieXRlc1RvTUIoYyl7cmV0dXJuIHBhcnNlRmxvYXQoKGMvMTA0ODU3NikudG9GaXhlZCgyKSl9eHNseFN0YXJ0UmVhZGluZyhjLGEsZCl7dmFyIGg9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgZj1ZKGZ1bmN0aW9uKih2LFMpe2NvbnN0IFY9aC50b0JzdHIoYy50YXJnZXQucmVzdWx0KTtsZXQgUSxkZT0hMTtjb25zdCBwZT17dHlwZToiYmluYXJ5IixjZWxsRGF0ZXM6ITEsY2VsbEZvcm11bGE6ITAsY2VsbFN0eWxlczohMCxjZWxsTkY6ITEsY2VsbFRleHQ6ITEscGFzc3dv''@;'; put 'put ''cmQ6ZH07dHJ5e1E9eWllbGQgaC54bHN4UmVhZChWLHsuLi5wZX0pfWNhdGNoKENlKXtpZighQ2UubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpKXJldHVybiBTKCJFcnJvciByZWFkaW5nIHRoZSBmaWxlIik7e2RlPSEwO2xldCBPZT0hMTtmb3IoO2RlOyl7Y29u''@;'; put 'put ''c3QgWWU9eWllbGQgYSh7ZXJyb3I6T2V9KTtpZihZZSl0cnl7UT15aWVsZCBoLnhsc3hSZWFkKFYsey4uLnBlLHBhc3N3b3JkOlllfSksZGU9ITEsT2U9ITF9Y2F0Y2goZXQpe09lPSEwLGV0Lm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygicGFzc3dvcmQiKXx8KGRlPSExKX1lbHNl''@;'; put 'put ''IGRlPSExfX19cmV0dXJuIFE/dihRKTpTKCJGYWlsZWQgdG8gcGFyc2UgYSB3b3JrYm9vayIpfSk7cmV0dXJuIGZ1bmN0aW9uKHYsUyl7cmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9eGxzeFJlYWQoYyxhKXtyZXR1cm4gbmV3IFByb21pc2UoKGQsaCk9PntpZihhJiZhLnBh''@;'; put 'put ''c3N3b3JkKXJldHVybiBjb25zb2xlLmluZm8oIk5vdCB1c2luZyB3b3JrZXIgdG8gcGFyc2UgdGhlIFhMU1ggLSBoYXMgcGFzc3dvcmQiKSxkKFZjLnJlYWQoYyxhKSk7aWYodHlwZW9mIFdvcmtlcj4idSIpcmV0dXJuIGNvbnNvbGUuaW5mbygiTm90IHVzaW5nIHdvcmtlciB0byBwYXJzZSB0''@;'; put 'put ''aGUgWExTWCAtIG5vIFdvcmtlciBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudCIpLGQoVmMucmVhZChjLGEpKTtjb25zb2xlLmluZm8oIlVzaW5nIHdvcmtlciB0byBwYXJzZSB0aGUgWExTWCIpO2NvbnN0IGY9bmV3IFdvcmtlcihSLnR1KG5ldyBVUkwoUi5wK1IudSg0MTEpLFIuYikp''@;'; put 'put ''KTtmLm9ubWVzc2FnZT0oe2RhdGE6dn0pPT57InJlYWRpbmdfZW5kIj09PXYuZXZlbnQ/ZCh2Lndvcmtib29rKTp2LmVycm9yP2godi5lcnJvcik6KGNvbnNvbGUuaW5mbygiV29ya2VyIGZhaWxlZCB0byBwYXJzZSB0aGUgWExTWCAtIGZhbGxiYWNrIHRvIG5vbiB3b3JrZXIgcGFyc2luZyIp''@;'; put 'put ''LGQoVmMucmVhZCh2LGEpKSl9LGYucG9zdE1lc3NhZ2Uoe2RhdGE6YyxvcHRzOmF9KSxzZXRUaW1lb3V0KCgpPT5kKFZjLnJlYWQoYyxhKSksNmU1KX0pfXNlYXJjaERhdGFJbkV4Y2VsKGMsYSl7bGV0IGQsaCxmLHYsUz0iIixWPVtdLGRlPVsiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9f''@;'; put 'put ''X19fIiwuLi5hLmhlYWRlckFycmF5XS5tYXAoQ2U9PkNlLnRvTG93ZXJDYXNlKCkpLHBlPWRlLnJlZHVjZSgoQ2UsT2UpPT4oQ2VbT2VdPS0xLENlKSx7fSk7Zm9yKGxldCBDZSBvZiBjLlNoZWV0TmFtZXMpe2Q9dm9pZCAwLGg9dm9pZCAwLHBlPWRlLnJlZHVjZSgod24sbnIpPT4od25bbnJd''@;'; put 'put ''PS0xLHduKSx7fSk7bGV0IE9lPVtdO1M9Q2U7Y29uc3QgWWU9Yy5TaGVldHNbU107aWYoT2JqZWN0LmtleXMoWWUpLmZvckVhY2god249Pntjb25zdCBucj1ZZVt3bl0udjtpZihuciYmInN0cmluZyI9PXR5cGVvZiBucil7Y29uc3QgdnI9bnIudG9Mb3dlckNhc2UoKTtkZS5pbmRleE9mKHZy''@;'; put 'put ''KT4tMSYmKHBlW3ZyXT13bixkfHwoZD13biksaD13bil9fSksLTE9PT1wZS5fX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18mJmRlbGV0ZSBwZS5fX19fX2RlbGV0ZV9fdGhpc19fcmVjb3JkX19fX18sT2U9T2JqZWN0LmtleXMocGUpLmZpbHRlcih3bj0+LTE9PT1wZVt3bl0pLE9lLmxl''@;'; put 'put ''bmd0aD4wKXtWLnB1c2goe3NoZWV0TmFtZTpTLG1pc3NpbmdIZWFkZXJzOk9lLm1hcCh3bj0+d24udG9VcHBlckNhc2UoKSl9KTtjb250aW51ZX1jb25zdCBldD1PYmplY3Qua2V5cyhwZSk7bGV0IE10LGR0PVtdLGh0PVtdO2V0LnNvcnQoKHduLG5yKT0+e2NvbnN0IHZyPWEuaGVhZGVyUGtz''@;'; put 'put ''LmluY2x1ZGVzKHduKT8xOjA7cmV0dXJuKGEuaGVhZGVyUGtzLmluY2x1ZGVzKG5yKT8xOjApLXZyfSkuZm9yRWFjaCh3bj0+e2NvbnN0IG5yPXBlW3duXSx2cj1uci5tYXRjaCgvXEQrLyksTWk9bnIubWF0Y2goL1xkKy8pLFBpPSh2cj92clswXTotMSl8fC0xLF9pPXBhcnNlSW50KChNaT9N''@;'; put 'put ''aVswXTotMSl8fC0xKSsxO2xldCBVcj0wO2lmKE10KWZvcihsZXQgSW49X2k7SW48PU10O0luKyspe2NvbnN0IFduPVllW2Ake1BpfSR7SW59YF07aWYoYS5oZWFkZXJQa3MuaW5jbHVkZXMod24pJiYodm9pZCAwPT09V258fHZvaWQgMD09PVduLnYpKXtNdD1JbjticmVha31kdFtVcl18fGR0''@;'; put 'put ''LnB1c2goe30pLFduJiYoZHRbVXJdW3duXT0ic3RyaW5nIj09dHlwZW9mIFduLnY/V24udi50cmltKCk6V24udiksaHRbVXJdfHxodC5wdXNoKFtdKSxodFtVcl0ucHVzaChXbj8/e3Y6IiJ9KSxVcisrfWVsc2V7bGV0IEluPV9pO2Zvcig7dm9pZCAwPT09TXQ7KXtjb25zdCBPcj1gJHtQaX0k''@;'; put 'put ''e0lufWAsV249WWVbT3JdO2lmKCFXbnx8dm9pZCAwPT09V24udil7TXQ9SW4tMTticmVha31kdFtVcl18fGR0LnB1c2goe30pLGR0W1VyXVt3bl09Im4iPT09WWVbT3JdLnQ/WWVbT3JdLnY6WWVbT3JdLnc/WWVbT3JdLnc6InN0cmluZyI9PXR5cGVvZiBZZVtPcl0udj9ZZVtPcl0udi50cmlt''@;'; put 'put ''KCk6WWVbT3JdLnYsaHRbVXJdfHxodC5wdXNoKFtdKSxodFtVcl0ucHVzaChXbj8/e3Y6IiJ9KSxJbisrLFVyKyt9fWlmKGQmJmgpe2NvbnN0IEluPWgubWF0Y2goL1xEKy8pO2Y9ZCx2PWAke0lufSR7TXR9YH19KTtjb25zdCBsbj1bXTtsZXQgdm47cmV0dXJuIGR0LmZvckVhY2goKHduLG5y''@;'; put 'put ''KT0+e2xldCB2cj0hMTthLmhlYWRlclBrcy5mb3JFYWNoKE1pPT57dm9pZCAwPT09d25bTWkudG9Mb3dlckNhc2UoKV0mJih2cj0hMCl9KSx2ciYmKGxuLnB1c2gobnIpLHZufHwodm49bnIpKX0pLHZuPyhkdC5zcGxpY2Uodm4sMS8wKSxodC5zcGxpY2Uodm4sMS8wKSk6bG4uc29ydCgod24s''@;'; put 'put ''bnIpPT5uci13bikuZm9yRWFjaCh3bj0+e2R0LnNwbGljZSh3biwxKSxodC5zcGxpY2Uod24sMSl9KSxodC5sZW5ndGg/e2ZvdW5kOntkYXRhOmR0LGFycmF5RGF0YTpodCxzaGVldE5hbWU6UyxzdGFydEFkZHJlc3M6ZixlbmRBZGRyZXNzOnYsaGVhZGVyczpldH19Ont9fXJldHVybnttaXNz''@;'; put 'put ''aW5nOlZ9fXVwZGF0ZURhdGVUaW1lQ29scyhjLGEsZCl7aWYoZC5kYXRlSGVhZGVycy5sZW5ndGg+MCl7Y29uc3QgaD1bXTtkLmRhdGVIZWFkZXJzLmZvckVhY2goZj0+ey0xIT09Yy5pbmRleE9mKGYpJiZoLnB1c2goYy5pbmRleE9mKGYpKX0pLGEuZm9yRWFjaChmPT57aC5mb3JFYWNoKHY9''@;'; put 'put ''Pntjb25zdCBTPWZbdl07aWYockooUy52KSl7Y29uc3QgVj1YWChOdW1iZXIoUy52KSk7Uy52PVYuZ2V0RnVsbFllYXIoKSsiLSIrKCIwIisoVi5nZXRNb250aCgpKzEpKS5zbGljZSgtMikrIi0iKygiMCIrVi5nZXREYXRlKCkpLnNsaWNlKC0yKX1lbHNlIGlmKFMmJlMudiYmLTE9PT1TLnYu''@;'; put 'put ''dG9TdHJpbmcoKS5pbmRleE9mKCI6Iikpe2NvbnN0IFY9bmV3IERhdGUoUy52KTsiSW52YWxpZCBEYXRlIiE9PVYudG9VVENTdHJpbmcoKSYmKFMudj1uSihWKSl9Zlt2XT1TfSl9KX1pZihkLnRpbWVIZWFkZXJzLmxlbmd0aD4wKXtsZXQgaD1bXTtkLnRpbWVIZWFkZXJzLmZvckVhY2goZj0+''@;'; put 'put ''ey0xIT09Yy5pbmRleE9mKGYpJiZoLnB1c2goYy5pbmRleE9mKGYpKX0pLGEuZm9yRWFjaChmPT57aC5mb3JFYWNoKHY9Pntjb25zdCBTPWZbdl07aWYockooUy52KXx8bjRlKFMudil8fFMudi5pbmNsdWRlcygiRS0iKSl7Y29uc3QgVj1YWChOdW1iZXIoUy52KSk7Uy52PXQ0ZShWKX1mW3Zd''@;'; put 'put ''PVN9KX0pfWlmKGQuZGF0ZVRpbWVIZWFkZXJzLmxlbmd0aD4wKXtsZXQgaD1bXTtkLmRhdGVUaW1lSGVhZGVycy5mb3JFYWNoKGY9PnstMSE9PWMuaW5kZXhPZihmKSYmaC5wdXNoKGMuaW5kZXhPZihmKSl9KSxhLmZvckVhY2goZj0+e2guZm9yRWFjaCh2PT57Y29uc3QgUz1mW3ZdO2lmKHJK''@;'; put 'put ''KFMudil8fG40ZShTLnYpKXtjb25zdCBWPVhYKE51bWJlcihTLnYpKTtTLnY9bkooVikrIiAiK3Q0ZShWKX1lbHNle2lmKC0xPT09Uy52LmluZGV4T2YoIiAiKSYmLTEhPT1TLnYuaW5kZXhPZigiOiIpKXtsZXQgUT1TLnYuc3Vic3RyaW5nKDAsUy52LmluZGV4T2YoIjoiKSk7UT1RKyIgIitT''@;'; put 'put ''LnYuc3Vic3RyaW5nKFMudi5pbmRleE9mKCI6IikrMSksUy52PVF9Y29uc3QgVj1uZXcgRGF0ZShTLnYpOyJJbnZhbGlkIERhdGUiIT09Vi50b1VUQ1N0cmluZygpJiYoUy52PW5KKFYpKyIgIisobD0+e2xldCBjPSgiMCIrbC5nZXRIb3VycygpKS5zbGljZSgtMikrIjoiO3JldHVybiBjPWMr''@;'; put 'put ''KCIwIitsLmdldE1pbnV0ZXMoKSkuc2xpY2UoLTIpKyI6IixjKz0oIjAiK2wuZ2V0U2Vjb25kcygpKS5zbGljZSgtMiksY30pKFYpKX1mW3ZdPVN9KX0pfXJldHVybiBhfXVwZGF0ZVhMUnVsZUNvbHMoYyxhLGQpe2lmKGQueGxSdWxlcy5sZW5ndGg+MCl7Y29uc3QgaD1bXTtkLnhsUnVsZXMu''@;'; put 'put ''Zm9yRWFjaChmPT57LTEhPT1jLmluZGV4T2YoZi5YTF9DT0xVTU4pJiYoZi5pbmRleD1jLmluZGV4T2YoZi5YTF9DT0xVTU4pLGgucHVzaChmKSl9KSxhLmZvckVhY2goZj0+e2guZm9yRWFjaCh2PT57Y29uc3QgUz1mW3YuaW5kZXhdOyJGT1JNVUxBIj09PXYuWExfUlVMRSYmImYiaW4gUyYm''@;'; put 'put ''KCJuIj09PVMudD9TLnY9Ij0iK1MuZjpTLnc9Ij0iK1MuZiksZlt2XT1TfSl9KX1yZXR1cm4gYX10b0JzdHIoYyl7bGV0IGE9bmV3IFVpbnQ4QXJyYXkoYyksZD0iIixoPWEuYnl0ZUxlbmd0aDtmb3IobGV0IGY9MDtmPGg7ZisrKWQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtmXSk7cmV0dXJu''@;'; put 'put ''IGR9fWxldCBzNGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5leGNlbFBhc3N3b3JkTW9kYWxTZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLmxpY2VuY2VTZXJ2aWNlPWgsdGhpcy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNl''@;'; put 'put ''U3RhdGUsdGhpcy5wcm9tcHRFeGNlbFBhc3N3b3JkPWY9Pm5ldyBQcm9taXNlKCh2LFMpPT57dGhpcy5leGNlbFBhc3N3b3JkTW9kYWxTZXJ2aWNlLm9wZW4oZikuc3Vic2NyaWJlKFY9Pnt2KFYucGFzc3dvcmQpfSl9KX1wYXJzZUV4Y2VsRmlsZShhLGQsaCl7cmV0dXJuIG5ldyBvNGUoe2xp''@;'; put 'put ''Y2VuY2VTdGF0ZTp0aGlzLmxpY2VuY2VTdGF0ZX0pLnBhcnNlU3ByZWFkc2hlZXRGaWxlKGEsdGhpcy5wcm9tcHRFeGNlbFBhc3N3b3JkLGQsaCl9eGxzeFJlYWRGaWxlKGEpe3JldHVybiBuZXcgUHJvbWlzZSgoZCxoKT0+e2NvbnN0IGY9bmV3IG80ZSh7bGljZW5jZVN0YXRlOnRoaXMubGlj''@;'; put 'put ''ZW5jZVN0YXRlfSk7bGV0IHY9bmV3IEZpbGVSZWFkZXI7di5vbmxvYWQ9Uz0+e2YueHNseFN0YXJ0UmVhZGluZyhTLHRoaXMucHJvbXB0RXhjZWxQYXNzd29yZCkudGhlbihWPT57ZChWKX0pLmNhdGNoKFY9PntoKFYpfSl9LHYucmVhZEFzQXJyYXlCdWZmZXIoYSl9KX1wYXJzZUV4Y2VsU2hl''@;'; put 'put ''ZXROYW1lcyhhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgoaCxmKT0+e2NvbnN0IHY9bmV3IEZpbGVSZWFkZXI7aWYoIWEpcmV0dXJuIGNvbnNvbGUud2FybigiZmlsZSBpcyBtaXNzaW5nIiksaCh7c2hlZXROYW1lczpbXX0pO3Yub25sb2Fk''@;'; put 'put ''PWZ1bmN0aW9uKCl7dmFyIFM9WShmdW5jdGlvbiooVil7aWYoIVY/LnRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIkZpbGUgcmVhZGVyIGV2ZW50LnRhcmdldCBpcyBtaXNzaW5nIik7bGV0IFEscGUsZGU9ITE7Y29uc3QgQ2U9Vi50YXJnZXQucmVzdWx0O3RyeXtRPVZjLnJlYWQo''@;'; put 'put ''Q2Use2Jvb2tTaGVldHM6ITAsdHlwZToiYmluYXJ5In0pfWNhdGNoKE9lKXtpZighT2UubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpKXJldHVybiBmKCJFcnJvciByZWFkaW5nIHRoZSBmaWxlIik7e2RlPSEwO2xldCBZZT0hMTtmb3IoO2RlOyl7aWYocGU9eWll''@;'; put 'put ''bGQgZC5wcm9tcHRFeGNlbFBhc3N3b3JkKHtlcnJvcjpZZX0pLCFwZSlyZXR1cm4gZGU9ITEsZigiTm8gcGFzc3dvcmQgcHJvdmlkZWQiKTt0cnl7UT1WYy5yZWFkKENlLHtib29rU2hlZXRzOiEwLHR5cGU6ImJpbmFyeSIscGFzc3dvcmQ6cGV9KSxkZT0hMSxZZT0hMX1jYXRjaChldCl7WWU9''@;'; put 'put ''ITAsZXQubWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJwYXNzd29yZCIpfHwoZGU9ITEpfWlmKCFwZSlyZXR1cm4gZigiSW52YWxpZCBwYXNzd29yZCwgZmFpbGVkIHRvIGRlY3J5cHQgdGhlIGZpbGUiKX19fWlmKCFRKXJldHVybiBmKCJFcnJvciBwYXJzaW5nIHRoZSB3b3JrYm9v''@;'; put 'put ''ayIpO3RyeXtyZXR1cm4gaCh7c2hlZXROYW1lczpRLlNoZWV0TmFtZXMscGFzc3dvcmQ6cGV9KX1jYXRjaChPZSl7Y29uc29sZS5lcnJvcihPZSl9fSk7cmV0dXJuIGZ1bmN0aW9uKFYpe3JldHVybiBTLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksdi5vbmVycm9yPWZ1bmN0aW9uKFMpe2Nv''@;'; put 'put ''bnNvbGUubG9nKFMpfSx2LnJlYWRBc0JpbmFyeVN0cmluZyhhKX0pfSkoKX1ieXRlc1RvTUIoYSl7cmV0dXJuIHBhcnNlRmxvYXQoKGEvMTA0ODU3NikudG9GaXhlZCgyKSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IoZjBlKSxjcihEbCks''@;'; put 'put ''Y3IoQTApKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtjb25zdCBCNz12b2lkIDAsaWh0PVsiZW4tR0IiLFtbImEiLCJwIl0sWyJhbSIsInBtIl0sQjddLFtbImFtIiwicG0i''@;'; put 'put ''XSxCNyxCN10sW1siUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLFsiU3UiLCJN''@;'; put 'put ''byIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXV0sQjcsW1siSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXB0IiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51''@;'; put 'put ''YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxCNyxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1d''@;'; put 'put ''LDEsWzYsMF0sWyJkZC9NTS95IiwiZCBNTU0geSIsImQgTU1NTSB5IiwiRUVFRSwgZCBNTU1NIHkiXSxbIkhIOm1tIiwiSEg6bW06c3MiLCJISDptbTpzcyB6IiwiSEg6bW06c3Mgenp6eiJdLFsiezF9LCB7MH0iLEI3LCJ7MX0gJ2F0JyB7MH0iLEI3XSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwi''@;'; put 'put ''LSIsIkUiLCJceGQ3IiwiXHUyMDMwIiwiXHUyMjFlIiwiTmFOIiwiOiJdLFsiIywjIzAuIyMjIiwiIywjIzAlIiwiXHhhNCMsIyMwLjAwIiwiI0UwIl0sIkdCUCIsIlx4YTMiLCJCcml0aXNoIFBvdW5kIix7SlBZOlsiSlBceGE1IiwiXHhhNSJdLFVTRDpbIlVTJCIsIiQiXX0sImx0ciIsZnVu''@;'; put 'put ''Y3Rpb24gcmh0KGwpe2NvbnN0IGE9TWF0aC5mbG9vcihNYXRoLmFicyhsKSksZD1sLnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09YSYmMD09PWQ/MTo1fV0sb2h0PVsiaW5wdXQiXSxzaHQ9WyIqIl0sYWh0PShsLGMpPT4oeyJ3aWR0aC5weCI6''@;'; put 'put ''bCwibWF4LWhlaWdodC5weCI6Y30pO2Z1bmN0aW9uIGxodChsLGMpe2lmKDEmbCYmKGdlKDAsIm9wdGlvbiIsNyksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxtcigiICIsYS5sb2FkaW5nTW9yZT8iTG9hZGluZy4uLiI6IkxPQUQgTU9SRSIsIiAiKX19bGV0IGE0ZT0oKCk9''@;'; put 'put ''PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuY2RyPWEsdGhpcy5pbnB1dElkPSIiLHRoaXMucGxhY2Vob2xkZXI9IiIsdGhpcy52YWx1ZT0iIix0aGlzLmRpc2FibGVkPSExLHRoaXMudHlwZT0idGV4dCIsdGhpcy5hdXRvY29tcGxldGU9Im9mZiIsdGhpcy50YWJpbmRleD0iIix0aGlz''@;'; put 'put ''LmVtaXRPbmx5U2VsZWN0ZWQ9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT0hMSx0aGlzLm9uSW5wdXRLZXlkb3duPW5ldyBEcix0aGlzLm9uSW5wdXRDaGFuZ2U9bmV3IERyLHRoaXMudmFsdWVDaGFuZ2U9bmV3IERyLHRoaXMub25Mb2FkaW5nTW9yZT1uZXcgRHIsdGhpcy5kYXRhbGlzdE9wZW49''@;'; put 'put ''ITEsdGhpcy5hZnRlck9wZW5Mb2NrRGVsYXk9MTUwLHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMSx0aGlzLmlucHV0Rm9jdXNlZD0hMSx0aGlzLmlucHV0Q2xpZW50UmVjdD17fSx0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMubG9hZGluZ01vcmU9ITF9bmdPbkluaXQoKXt9bmdBZnRl''@;'; put 'put ''clZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuY2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpfSw1MDApfW9uSW5wdXRGaXJlZChhLGQsaCl7dGhpcy5vcGVuRGF0YWxpc3QoImNsaWNrIiE9PWgpLHRoaXMudW5zZWxlY3RBbGxPcHRpb25zKCksdGhpcy5maWx0ZXJPcHRpb25zTGlzdCgp''@;'; put 'put ''LCghdGhpcy5lbWl0T25seVNlbGVjdGVkfHxkKSYmKHRoaXMub25JbnB1dENoYW5nZS5lbWl0KHt0YXJnZXQ6e3ZhbHVlOnRoaXMudmFsdWV9fSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpKX1vbklucHV0Q2xpY2soYSl7dGhpcy5vcGVuRGF0YWxpc3QoKX1vcGVuRGF0YWxp''@;'; put 'put ''c3QoYT0hMCl7dGhpcy5kYXRhbGlzdE9wZW49ITAsYSYmKHRoaXMuYWZ0ZXJPcGVuTG9jaz0hMCx0aGlzLmFmdGVyT3BlbkxvY2tEZWxheVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e3RoaXMuYWZ0ZXJPcGVuTG9jaz0hMX0sdGhpcy5hZnRlck9wZW5Mb2NrRGVsYXkpKX1jbG9zZURhdGFsaXN0''@;'; put 'put ''KCl7Y2xlYXJUaW1lb3V0KHRoaXMuYWZ0ZXJPcGVuTG9ja0RlbGF5VGltZW91dCksdGhpcy5hZnRlck9wZW5Mb2NrPSExLHRoaXMuZGF0YWxpc3RPcGVuPSExfXJlc2V0RGF0YWxpc3RGaWx0ZXIoKXt0aGlzLmZpbHRlck9wdGlvbnNMaXN0KCEwKX1vbklucHV0Rm9jdXNpbihhKXt0aGlzLmlu''@;'; put 'put ''cHV0Rm9jdXNlZD0hMH1vbklucHV0Rm9jdXNvdXQoYSl7dGhpcy5pbnB1dEZvY3VzZWQ9ITEsdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1vbklucHV0TW91c2VlbnRlcihhKXt0aGlzLmlucHV0Q2xpZW50UmVjdC53aWR0aHx8dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9ZmlsdGVy''@;'; put 'put ''T3B0aW9uc0xpc3QoYSl7Y29uc3QgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbmApO2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKXtjb25zdCBmPWRbaF07aWYoMD09PXRoaXMudmFsdWUubGVuZ3RoKXtmLmNsYXNzTGlzdC5y''@;'; put 'put ''ZW1vdmUoImhpZGRlbiIpO2NvbnRpbnVlfWlmKGEpe2YuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Y29udGludWV9Y29uc3Qgdj1mLmlubmVyVGV4dHx8IiIsUz1mLnZhbHVlfHwiIjsoditTKT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpP2Yu''@;'; put 'put ''Y2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6Zi5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19c2V0VG9DbG9zZURhdGFsaXN0KCl7dGhpcy5kYXRhbGlzdENsb3NlVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5wcmV2ZW50RGF0YWxpc3RDbG9zZXx8dGhpcy5hZnRlck9wZW5Mb2NrfHwo''@;'; put 'put ''dGhpcy5jbG9zZURhdGFsaXN0KCksdGhpcy51bnNlbGVjdEFsbE9wdGlvbnMoKSx0aGlzLnJlc2V0RGF0YWxpc3RGaWx0ZXIoKSl9LDEwMCl9Y2FsY3VsYXRlSW5wdXRQb3NpdGlvbigpe2NvbnN0IGQ9dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRS''@;'; put 'put ''ZWN0KCk7ZC53aWR0aD4wJiZkLmhlaWdodD4wJiYodGhpcy5pbnB1dENsaWVudFJlY3Q9e3dpZHRoOmQud2lkdGgsYm90dG9tOmQuYm90dG9tfSksdGhpcy5pbm5lckhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHR9b25EYXRhTGlzdE1vdXNlRW50ZXIoYSl7dGhpcy5wcmV2ZW50RGF0YWxpc3RD''@;'; put 'put ''bG9zZT0hMH1vbkRhdGFMaXN0TW91c2VMZWF2ZShhKXt0aGlzLnByZXZlbnREYXRhbGlzdENsb3NlPSExLHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkRhdGFMaXN0U2Nyb2xsKGEpe3RoaXMuc2V0VG9DbG9zZURhdGFsaXN0KCl9b25EYXRhTGlzdENsaWNrKGEp''@;'; put 'put ''e2NvbnN0IGQ9YS50YXJnZXQ7ImxvYWQtbW9yZSIhPT1kLmRhdGFzZXQ/LnR5cGU/Ik9QVElPTiIhPT1kLnRhZ05hbWV8fHRoaXMuc2V0T3B0aW9uVmFsdWUoZC5pbm5lclRleHQsZC52YWx1ZSk6dGhpcy5sb2FkTW9yZSgpfWxvYWRNb3JlKCl7dGhpcy5vbkxvYWRpbmdNb3JlLmVtaXQoe2xv''@;'; put 'put ''YWRNb3JlRmluaXNoZWQ6YT0+e3RoaXMubG9hZGluZ01vcmU9ITEsdGhpcy5lbmFibGVMb2FkTW9yZT1hfX0pLHRoaXMubG9hZGluZ01vcmU9ITB9c2V0T3B0aW9uVmFsdWUoYSxkKXsoYXx8ZCkmJihkfHwoZD1hKSksZCYmKHRoaXMucHJldmVudERhdGFsaXN0Q2xvc2U9ITEsdGhpcy52YWx1''@;'; put 'put ''ZT1kLHRoaXMub25JbnB1dEZpcmVkKG51bGwsITAsImNsaWNrIiksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKSl9b25NYWluS2V5ZG93bihhKXtzd2l0Y2goYS5rZXkpe2Nhc2UiQXJyb3dVcCI6dGhpcy5nZXRPcHRpb25zTW92ZUZvY3VzKCJ1cCIpO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjp0''@;'; put 'put ''aGlzLmdldE9wdGlvbnNNb3ZlRm9jdXMoImRvd24iKTticmVhaztjYXNlIkVudGVyIjp0aGlzLnNlbGVjdEZvY3VzZWRPcHRpb24oKX19b25JbnB1dEtleXVwKGEpe3JldHVybiF0aGlzLmRhdGFsaXN0T3Blbnx8KCJFc2NhcGUiPT09YS5rZXk/KGEuc3RvcFByb3BhZ2F0aW9uKCksYS5zdG9w''@;'; put 'put ''SW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnNldFRvQ2xvc2VEYXRhbGlzdCgpLCExKTp2b2lkIDApfXVuc2VsZWN0QWxsT3B0aW9ucygpe2NvbnN0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb25gKTtmb3IobGV0IGQ9MDtk''@;'; put 'put ''PGEubGVuZ3RoO2QrKylhW2RdLmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKX1zZWxlY3RGb2N1c2VkT3B0aW9uKCl7Y29uc3QgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjZGF0YWxpc3RfJHt0aGlzLmlucHV0SWR9IG9wdGlvbi5mb2N1c2VkYCk7YSYmdGhpcy5vbkRhdGFMaXN0Q2xp''@;'; put 'put ''Y2soe3RhcmdldDphfSksdGhpcy5zZXRUb0Nsb3NlRGF0YWxpc3QoKX1nZXRPcHRpb25zTW92ZUZvY3VzKGEpe2NvbnN0IGQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI2RhdGFsaXN0XyR7dGhpcy5pbnB1dElkfSBvcHRpb246bm90KC5oaWRkZW4pYCk7bGV0IGg9MDtmb3IobGV0IGY9''@;'; put 'put ''MDtmPGQubGVuZ3RoO2YrKyl7Y29uc3Qgdj1kW2ZdO2lmKHYuY2xhc3NMaXN0LmNvbnRhaW5zKCJmb2N1c2VkIikpe2g9ImRvd24iPT09YT9mKzE6Zi0xLGg8MCYmKGg9ZC5sZW5ndGgtMSksaD5kLmxlbmd0aC0xJiYoaD0wKSx2LmNsYXNzTGlzdC5yZW1vdmUoImZvY3VzZWQiKTticmVha319''@;'; put 'put ''ZFtoXS5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIil9b25SZXNpemUoYSl7dGhpcy5jYWxjdWxhdGVJbnB1dFBvc2l0aW9uKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoY2EpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmws''@;'; put 'put ''c2VsZWN0b3JzOltbImFwcC1hdXRvY29tcGxldGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGQsaCl7aWYoMSZkJiZIbyhvaHQsNSksMiZkKXtsZXQgZjtsaShmPWNpKCkpJiYoaC5pbnB1dEVsZW1lbnQ9Zi5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0KCJyZXNp''@;'; put 'put ''emUiLGZ1bmN0aW9uKHYpe3JldHVybiBoLm9uUmVzaXplKHYpfSwwLEh3KX0saW5wdXRzOntpbnB1dElkOiJpbnB1dElkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0eXBlOiJ0eXBlIixhdXRvY29tcGxldGU6ImF1dG9jb21w''@;'; put 'put ''bGV0ZSIsdGFiaW5kZXg6InRhYmluZGV4IixlbWl0T25seVNlbGVjdGVkOiJlbWl0T25seVNlbGVjdGVkIixlbmFibGVMb2FkTW9yZToiZW5hYmxlTG9hZE1vcmUifSxvdXRwdXRzOntvbklucHV0S2V5ZG93bjoib25JbnB1dEtleWRvd24iLG9uSW5wdXRDaGFuZ2U6Im9uSW5wdXRDaGFuZ2Ui''@;'; put 'put ''LHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25Mb2FkaW5nTW9yZToib25Mb2FkaW5nTW9yZSJ9LG5nQ29udGVudFNlbGVjdG9yczpzaHQsZGVjbHM6OSx2YXJzOjE1LGNvbnN0czpbWyJpbnB1dCIsIiJdLFsib3B0aW9ucyIsIiJdLFsxLCJhdXRvY29tcGxldGUtd3JhcHBlciIsMywia2V5''@;'; put 'put ''ZG93biJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLCJ0YWJpbmRleCIsIjAiLDEsImlucHV0LXZhbCIsMywibmdNb2RlbENoYW5nZSIsImNsaWNrIiwibW91c2VlbnRlciIsImZvY3VzIiwiZm9jdXNvdXQiLCJrZXl1cCIsImlkIiwicGxhY2Vo''@;'; put 'put ''b2xkZXIiLCJuZ01vZGVsIiwiZGlzYWJsZWQiXSxbMSwib3ZlcmxheSJdLFsxLCJkYXRhbGlzdCIsMywiY2xpY2siLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInNjcm9sbCIsIm5nU3R5bGUiLCJpZCJdLFsiZGF0YS10eXBlIiwibG9hZC1tb3JlIiwiY2xhc3MiLCJsb2FkLW1vcmUiLDQs''@;'; put 'put ''Im5nSWYiXSxbImRhdGEtdHlwZSIsImxvYWQtbW9yZSIsMSwibG9hZC1tb3JlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7aWYoMSZkKXtjb25zdCBmPVNuKCk7SGkoKSxnZSgwLCJkaXYiLDIpLEl0KCJrZXlkb3duIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksYnQoaC5vbk1haW5LZXlk''@;'; put 'put ''b3duKFMpKX0pLGdlKDEsImlucHV0IiwzLDApLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC52YWx1ZSxTKXx8KGgudmFsdWU9UyksYnQoUyl9KSxJdCgiY2xpY2siLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxidChoLm9uSW5wdXRDbGljayhTKSl9''@;'; put 'put ''KSgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25JbnB1dEZpcmVkKFMpKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksYnQoaC5vbklucHV0TW91c2VlbnRlcihTKSl9KSgiZm9jdXMiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChm''@;'; put 'put ''KSxidChoLm9uSW5wdXRGb2N1c2luKFMpKX0pKCJmb2N1c291dCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25JbnB1dEZvY3Vzb3V0KFMpKX0pKCJrZXl1cCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25JbnB1dEtleXVwKFMpKX0pLG1lKCksWXQoMywiZGl2Iiw0''@;'; put 'put ''KSxnZSg0LCJkaXYiLDUpLEl0KCJjbGljayIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25EYXRhTGlzdENsaWNrKFMpKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksYnQoaC5vbkRhdGFMaXN0TW91c2VFbnRlcihTKSl9KSgibW91c2VsZWF2ZSIsZnVu''@;'; put 'put ''Y3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25EYXRhTGlzdE1vdXNlTGVhdmUoUykpfSkoInNjcm9sbCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25EYXRhTGlzdFNjcm9sbChTKSl9KSxnZSg1LCJkaXYiLG51bGwsMSksSXIoNyksbWUoKSxndCg4LGxodCwyLDEsIm9wdGlv''@;'; put 'put ''biIsNiksbWUoKSgpfWlmKDImZCl7Y29uc3QgZj1HaSg2KTtfZSgpLFJlKCJpZCIsaC5pbnB1dElkKSgicGxhY2Vob2xkZXIiLGgucGxhY2Vob2xkZXIpLFlyKCJuZ01vZGVsIixoLnZhbHVlKSxSZSgiZGlzYWJsZWQiLGguZGlzYWJsZWQpLHVyKCJsaXN0IiwiZGF0YWxpc3RfIitoLmlucHV0''@;'; put 'put ''SWQpLF9lKDIpLHByKCJoaWRkZW4iLCFoLmRhdGFsaXN0T3BlbiksX2UoKSxwcigiaGlkZGVuIiwhaC5kYXRhbGlzdE9wZW4pLFJlKCJuZ1N0eWxlIixmMygxMixhaHQsaC5pbnB1dENsaWVudFJlY3Qud2lkdGgsaC5pbm5lckhlaWdodCYmaC5pbnB1dENsaWVudFJlY3QuYm90dG9tP2guaW5u''@;'; put 'put ''ZXJIZWlnaHQtaC5pbnB1dENsaWVudFJlY3QuYm90dG9tOnZvaWQgMCkpKCJpZCIsImRhdGFsaXN0XyIraC5pbnB1dElkKSxfZSg0KSxSZSgibmdJZiIsZi5jaGlsZHJlbi5sZW5ndGg+MCYmaC5lbmFibGVMb2FkTW9yZSl9fSxkZXBlbmRlbmNpZXM6WyRpLGxyZSxHMiwkMix1bCxfYSx1YV0s''@;'; put 'put ''c3R5bGVzOlsiLmlucHV0LXZhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjBweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTk5OTl9aW5wdXRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7b3V0bGluZTpub25lfWlucHV0W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye21hcmdpbi10b3A6LTVweH0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5kYXRhbGlzdHtiYWNrZ3JvdW5kOiMyMTMzM2I7Ym9yZGVyOjFweCBzb2xpZCAjNTc1NzU3fSAgYm9keVtjZHMtdGhlbWU9ZGFya10g''@;'; put 'put ''aW5wdXR7Y29sb3I6I2ZmZn0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5kYXRhbGlzdCBvcHRpb257Y29sb3I6I2ZmZn0gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuZGF0YWxpc3R7YmFja2dyb3VuZDojZmZmfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAub3Zl''@;'; put 'put ''cmxheVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjE1MDB9LmF1dG9jb21wbGV0ZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCAx''@;'; put 'put ''MHB4IC0xcHggIzAwMDAwMDJiO292ZXJmbG93OmF1dG87ei1pbmRleDoyMDAwfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgICBvcHRpb257cGFkZGluZzo1cHggMTBweDtjdXJzb3I6cG9pbnRlcn0uYXV0''@;'; put 'put ''b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFsaXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgb3B0aW9uOmhvdmVye2JhY2tncm91bmQ6IzAwMDAwMDBmfS5hdXRvY29tcGxldGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3RbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgICBvcHRpb24uZm9jdXNlZHtiYWNrZ3JvdW5kOiMwMDAwMDAwZn0uYXV0b2NvbXBsZXRlLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLmxvYWQtbW9yZVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQg''@;'; put 'put ''I2U2ZTZlNn0iXX0pfX1yZXR1cm4gbH0pKCksY2h0PSgoKT0+e2NsYXNzIGx7dHJhbnNmb3JtKGEsZCl7aWYoInN0cmluZyI9PXR5cGVvZiBhJiZhLmxlbmd0aDwxKXJldHVybiBhO3N3aXRjaChkKXtjYXNlImRhdGUiOnJldHVybiBhcyhhLCJERE1NTVlZWVk6aGg6bW06c3MiKS5mb3JtYXQo''@;'; put 'put ''IkREL01NL1lZWVkiKTtjYXNlInRpbWUiOntpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKCJFcnJvciBwYXJzaW5nIHRpbWUuIFZhbHVlIGlzIG5vdCBzdHJpbmcuIik7Y29uc3QgaD1wYXJzZUludChhLnNwbGl0KCI6IilbMF0pLGY9cGFyc2VJbnQoYS5zcGxpdCgiOiIp''@;'; put 'put ''WzFdKSx2PXBhcnNlSW50KGEuc3BsaXQoIjoiKVsyXSk7cmV0dXJuYCR7aDwxMD8iMCIraDpofToke2Y8MTA/IjAiK2Y6Zn06JHt2PDEwPyIwIit2OnZ9YH19cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhP2E6YS50b1N0cmluZygpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXty''@;'; put 'put ''ZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtuYW1lOiJkYXRlVGltZUZvcm1hdHRlciIsdHlwZTpsLHB1cmU6ITB9KX19cmV0dXJuIGx9KSgpO2NvbnN0IHVodD1bImlucHV0Il0sZGh0PVsiKiJdO2Z1bmN0aW9uIGhodChsLGMpe2lmKDEmbCl7Y29uc3QgYT1T''@;'; put 'put ''bigpO1ZyKDApLFBlKDEsIiAvICIpLGdlKDIsInNwYW4iLDUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikub25DaGFuZ2VMYWJlbCgic2Vjb25kIikpfSksUGUoMyksbWUoKSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSgyKSxwcigidmFsdWUtdHlw''@;'; put 'put ''ZS1zZWxlY3RlZCIsInNlY29uZCI9PT1hLmxhYmVsU2VsZWN0ZWQpLF9lKCksbHIoYS5zZWNvbmRMYWJlbCl9fWZ1bmN0aW9uIGZodChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImxhYmVsIiw0KSgxLCJzcGFuIiw1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEp''@;'; put 'put ''LGJ0KE5lKCkub25DaGFuZ2VMYWJlbCgiZmlyc3QiKSl9KSxQZSgyKSxtZSgpLGd0KDMsaGh0LDQsMywibmctY29udGFpbmVyIiw2KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO3ByKCJzZWNvbmRMYWJlbEFjdGl2ZSIsYS5zZWNvbmRMYWJlbCYmYS5zZWNvbmRMYWJlbC5sZW5ndGg+MCks''@;'; put 'put ''X2UoKSxwcigidmFsdWUtdHlwZS1zZWxlY3RlZCIsImZpcnN0Ij09PWEubGFiZWxTZWxlY3RlZCksX2UoKSxscihhLmxhYmVsKSxfZSgpLFJlKCJuZ0lmIixhLnNlY29uZExhYmVsKX19ZnVuY3Rpb24gcGh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiY2xyLWRhdGUt''@;'; put 'put ''Y29udGFpbmVyIikoMiwiaW5wdXQiLDcpLGdhKDMsImRhdGVUaW1lRm9ybWF0dGVyIiksSXQoImNsckRhdGVDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSgpLm9uRGF0ZUlucHV0RmlyZWQoaCkpfSkoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgp''@;'; put 'put ''LmlucHV0Rm9jdXNlZD0hMCl9KSgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuaW5wdXRGb2N1c2VkPSExKX0pKCJmb2N1c2luIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5vbkZvY3VzaW5JbnB1dChoKSl9KSgibW91c2VvdmVyIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBfdChhKSxidChOZSgpLm9uSW5wdXRNb3VzZU92ZXIoKSl9KSgibW91c2VvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25JbnB1dE1vdXNlT3V0KCkpfSksbWUoKSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoMiksUmUoImlkIixhLmlucHV0''@;'; put 'put ''SWQpKCJwbGFjZWhvbGRlciIsVTYoMyw1LGEudGVtcCwiZGF0ZSIpKSgiY2xyRGF0ZSIsYS52YWx1ZSkoImRpc2FibGVkIixhLmRpc2FibGVkKSx1cigibGlzdCIsImRhdGFsaXN0XyIrYS5pbnB1dElkKX19ZnVuY3Rpb24gZ2h0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2Uo''@;'; put 'put ''MSwiaW5wdXQiLDgpLEl0KCJpbnB1dCIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25JbnB1dEZpcmVkKGgpKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5pbnB1dEZvY3VzZWQ9ITApfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBf''@;'; put 'put ''dChhKSxidChOZSgpLmlucHV0Rm9jdXNlZD0hMSl9KSgiZm9jdXNpbiIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25Gb2N1c2luSW5wdXQoaCkpfSkoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5vbklucHV0TW91c2VPdmVyKCkpfSkoIm1v''@;'; put 'put ''dXNlb3V0IixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLm9uSW5wdXRNb3VzZU91dCgpKX0pLG1lKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJ2YWx1ZSIsYS52YWx1ZSkoImlkIixhLmlucHV0SWQpKCJkaXNhYmxlZCIsYS5kaXNhYmxlZCksdXIoImxpc3Qi''@;'; put 'put ''LCJkYXRhbGlzdF8iK2EuaW5wdXRJZCl9fWZ1bmN0aW9uIG1odChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsImFwcC1hdXRvY29tcGxldGUiLDksMCksSXQoIm9uSW5wdXRDaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSgpLm9uSW5wdXRGaXJlZCho''@;'; put 'put ''KSl9KSgib25Mb2FkaW5nTW9yZSIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuYXV0b2NvbXBsZXRlTG9hZGluZ01vcmUoaCkpfSksSXIoMyksbWUoKSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKCksUmUoImlucHV0SWQiLGEuaW5wdXRJZCkoInZhbHVlIiwobnVsbD09''@;'; put 'put ''YS52YWx1ZT9udWxsOmEudmFsdWUudG9TdHJpbmcoKSl8fCIiKSgiZW5hYmxlTG9hZE1vcmUiLGEuZW5hYmxlTG9hZE1vcmUpKCJlbWl0T25seVNlbGVjdGVkIixhLmVtaXRPbmx5U2VsZWN0ZWQpKCJkaXNhYmxlZCIsYS5kaXNhYmxlZCl9fWxldCBsNGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1''@;'; put 'put ''Y3Rvcigpe3RoaXMuaW5wdXRJZD0iIix0aGlzLnZhbHVlPSIiLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy50eXBlPSJ0ZXh0Iix0aGlzLmRpc2FibGVTb2Z0c2VsZWN0PSExLHRoaXMuZW1pdE9ubHlTZWxlY3RlZD0hMSx0aGlzLmVuYWJsZUxvYWRNb3JlPSExLHRoaXMudmFsdWVDaGFuZ2U9bmV3''@;'; put 'put ''IERyLHRoaXMub25JbnB1dEV2ZW50PW5ldyBEcix0aGlzLmZvY3VzaW5JbnB1dD1uZXcgRHIsdGhpcy5vbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlPW5ldyBEcix0aGlzLnNlbGVjdGVkTGFiZWxDaGFuZ2U9bmV3IERyLHRoaXMudGVtcD0iIix0aGlzLmlucHV0Rm9jdXNlZD0hMSx0aGlzLmxh''@;'; put 'put ''YmVsU2VsZWN0ZWQ9ImZpcnN0In1uZ09uQ2hhbmdlcyhhKXthLnZhbHVlJiZhLnZhbHVlLmN1cnJlbnRWYWx1ZSE9PWEudmFsdWUucHJldmlvdXNWYWx1ZSYmdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGEudmFsdWUuY3VycmVudFZhbHVlKX1uZ09uSW5pdCgpe31hdXRvY29tcGxldGVMb2FkaW5n''@;'; put 'put ''TW9yZShhKXt0aGlzLm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUuZW1pdChhKX1vbklucHV0RmlyZWQoYSl7Y29uc3QgZD1hLnRhcmdldC52YWx1ZTt0aGlzLnRlbXA9ZCx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZCksdGhpcy5vbklucHV0RXZlbnQuZW1pdChhKX1vbkRhdGVJbnB1dEZpcmVk''@;'; put 'put ''KGEpe3RoaXMudGVtcD1hLHRoaXMudmFsdWVDaGFuZ2UuZW1pdChhKSx0aGlzLm9uSW5wdXRFdmVudC5lbWl0KGEpfW9uSW5wdXRNb3VzZU91dCgpe3RoaXMuZGlzYWJsZVNvZnRzZWxlY3R8fCh0aGlzLnZhbHVlPXRoaXMudGVtcCx0aGlzLnRlbXA9IiIpfW9uSW5wdXRNb3VzZU92ZXIoKXt0''@;'; put 'put ''aGlzLmRpc2FibGVTb2Z0c2VsZWN0fHwodGhpcy50ZW1wPXRoaXMudmFsdWU/dGhpcy52YWx1ZToiIix0aGlzLnZhbHVlPSIiKX1vbkZvY3VzaW5JbnB1dChhKXt0aGlzLmZvY3VzaW5JbnB1dC5lbWl0KGEpfW9uQ2hhbmdlTGFiZWwoYSl7dGhpcy5sYWJlbFNlbGVjdGVkPWEsdGhpcy5zZWxl''@;'; put 'put ''Y3RlZExhYmVsQ2hhbmdlLmVtaXQoImZpcnN0Ij09PWE/dGhpcy5sYWJlbDp0aGlzLnNlY29uZExhYmVsKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1z''@;'; put 'put ''b2Z0LXNlbGVjdCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oZCxoKXtpZigxJmQmJkhvKHVodCw1KSwyJmQpe2xldCBmO2xpKGY9Y2koKSkmJihoLmlucHV0RWxlbWVudD1mLmZpcnN0KX19LGlucHV0czp7aW5wdXRJZDoiaW5wdXRJZCIsbGFiZWw6ImxhYmVsIixzZWNvbmRMYWJlbDoic2Vjb25k''@;'; put 'put ''TGFiZWwiLHZhbHVlOiJ2YWx1ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIix0eXBlOiJ0eXBlIixkaXNhYmxlU29mdHNlbGVjdDoiZGlzYWJsZVNvZnRzZWxlY3QiLGVtaXRPbmx5U2VsZWN0ZWQ6ImVtaXRPbmx5U2VsZWN0ZWQiLGVuYWJsZUxvYWRNb3JlOiJlbmFibGVMb2FkTW9yZSJ9LG91dHB1''@;'; put 'put ''dHM6e3ZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSIsb25JbnB1dEV2ZW50OiJvbklucHV0RXZlbnQiLGZvY3VzaW5JbnB1dDoiZm9jdXNpbklucHV0IixvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlOiJvbkF1dG9jb21wbGV0ZUxvYWRpbmdNb3JlIixzZWxlY3RlZExhYmVsQ2hhbmdlOiJzZWxl''@;'; put 'put ''Y3RlZExhYmVsQ2hhbmdlIn0sZmVhdHVyZXM6W0phXSxuZ0NvbnRlbnRTZWxlY3RvcnM6ZGh0LGRlY2xzOjUsdmFyczo1LGNvbnN0czpbWyJpbnB1dCIsIiJdLFsiY2xhc3MiLCJjbHItY29udHJvbC1sYWJlbCIsMywic2Vjb25kTGFiZWxBY3RpdmUiLDQsIm5nSWYiXSxbMywibmdTd2l0Y2gi''@;'; put 'put ''XSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsImNsci1jb250cm9sLWxhYmVsIl0sWzMsImNsaWNrIl0sWzQsIm5nSWYiXSxbInR5cGUiLCJkYXRlIiwiY2xyRGF0ZSIsIiIsMywiY2xyRGF0ZUNoYW5nZSIsImZvY3VzIiwiZm9jdXNvdXQiLCJmb2N1c2luIiwibW91c2VvdmVyIiwibW91c2VvdXQi''@;'; put 'put ''LCJpZCIsInBsYWNlaG9sZGVyIiwiY2xyRGF0ZSIsImRpc2FibGVkIl0sWyJ0eXBlIiwidGltZSIsInN0ZXAiLCIxIiwxLCJpbnB1dC12YWwiLDMsImlucHV0IiwiZm9jdXMiLCJmb2N1c291dCIsImZvY3VzaW4iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsInZhbHVlIiwiaWQiLCJkaXNhYmxl''@;'; put 'put ''ZCJdLFsidHlwZSIsInRleHQiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJhdXRvZm9jdXMiLCIiLDEsImlucHV0LXZhbCIsMywib25JbnB1dENoYW5nZSIsIm9uTG9hZGluZ01vcmUiLCJpbnB1dElkIiwidmFsdWUiLCJlbmFibGVMb2FkTW9yZSIsImVtaXRPbmx5U2VsZWN0ZWQiLCJkaXNhYmxl''@;'; put 'put ''ZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKEhpKCksZ3QoMCxmaHQsNCw2LCJsYWJlbCIsMSksVnIoMSwyKSxndCgyLHBodCw0LDgsIm5nLWNvbnRhaW5lciIsMykoMyxnaHQsMiw0LCJuZy1jb250YWluZXIiLDMpKDQsbWh0LDQsNSwibmctY29udGFpbmVyIiwzKSxCcigpKSwy''@;'; put 'put ''JmQmJihSZSgibmdJZiIsaC5sYWJlbCksX2UoKSxSZSgibmdTd2l0Y2giLGgudHlwZSksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwiZGF0ZSIpLF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIsInRpbWUiKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJ0ZXh0IikpfSxkZXBlbmRlbmNpZXM6WyRpLHdo''@;'; put 'put ''LHAzLCRzLERNLFVaLFpaLGE0ZSxjaHRdLHN0eWxlczpbIi5pbnB1dC12YWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOTk5OTk5fWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAl''@;'; put 'put ''O291dGxpbmU6bm9uZX1pbnB1dFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcnttYXJnaW4tdG9wOi01cHh9Y2xyLWRhdGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjJweCFpbXBv''@;'; put 'put ''cnRhbnR9Y2xyLWRhdGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAgIGlucHV0Ojotd2Via2l0LWNh''@;'; put 'put ''bGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bWFyZ2luLXJpZ2h0OjIwcHg7bWFyZ2luLXRvcDotNXB4fWxhYmVsLnNlY29uZExhYmVsQWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdOm5vdCgudmFsdWUtdHlwZS1zZWxlY3RlZCl7dGV4dC1kZWNvcmF0''@;'; put 'put ''aW9uOmxpbmUtdGhyb3VnaDtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5Oi42fSJdfSl9fXJldHVybiBsfSkoKSxoeT0oKCk9PntjbGFzcyBse3NldCBuZ1ZhcihhKXt0aGlzLmNvbnRleHQuJGltcGxpY2l0PXRoaXMuY29udGV4dC5uZ1Zhcj1hLHRoaXMuaGFzVmlld3x8KHRoaXMudmNSZWYuY3Jl''@;'; put 'put ''YXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsdGhpcy5jb250ZXh0KSx0aGlzLmhhc1ZpZXc9ITApfWNvbnN0cnVjdG9yKGEsZCl7dGhpcy50ZW1wbGF0ZVJlZj1hLHRoaXMudmNSZWY9ZCx0aGlzLmNvbnRleHQ9eyRpbXBsaWNpdDpudWxsLG5nVmFyOm51bGx9LHRoaXMuaGFzVmll''@;'; put 'put ''dz0hMX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShVYSksSmUoaHMpKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsIm5nVmFyIiwiIl1dLGlucHV0czp7bmdWYXI6Im5nVmFyIn19KX19cmV0dXJu''@;'; put 'put ''IGx9KSgpLHZodD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuaGVscGVyU2VydmljZT1hfXRyYW5zZm9ybShhLGQ9ImRheXMiLGg9ITEpe2lmKHZvaWQgMD09PWEmJihhPSIiKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEudG9TdHJpbmcoKSksMD09PWEubGVuZ3RoKXtpZigi''@;'; put 'put ''ZGF5cyI9PT1kKXJldHVybiBudWxsO2lmKCJzZWNvbmRzIj09PWQpcmV0dXJuIGg/IjExOjAwOjAwIjpudWxsfWxldCBmPXRoaXMuaGVscGVyU2VydmljZS5jb252ZXJ0U2FzRGF5c1RvSnNEYXRlKGEsZCk7aWYoND09PWEuc3BsaXQoIjoiKS5sZW5ndGgpe2NvbnN0IFM9YS5zcGxpdCgiOiIp''@;'; put 'put ''O2Y9bmV3IERhdGUoU1swXSksZi5zZXRIb3VycyhwYXJzZUludChTWzFdKSksZi5zZXRNaW51dGVzKHBhcnNlSW50KFNbMl0pKSxmLnNldFNlY29uZHMocGFyc2VJbnQoU1szXSkpfWVsc2UgaXNOYU4oTnVtYmVyKGEpKSYmKGY9bmV3IERhdGUoYSkpO2xldCB2PWAke3RoaXMuaGVscGVyU2Vy''@;'; put 'put ''dmljZS5hZGRMZWFkaW5nWmVybyhmLmdldEhvdXJzKCkudG9TdHJpbmcoKSl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKGYuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhmLmdldFNlY29uZHMoKS50b1N0''@;'; put 'put ''cmluZygpKX1gO3JldHVybiBoP3Y6Zn1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShldSwxNikpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtuYW1lOiJzYXNUb0pzRGF0ZSIsdHlwZTpsLHB1cmU6ITB9KX19cmV0dXJuIGx9KSgpLF9o''@;'; put 'put ''dD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEpe3RoaXMuaGVscGVyU2VydmljZT1hfXRyYW5zZm9ybShhKXtpZihudWxsPT1hfHwiIj09PWEpcmV0dXJuIiI7bGV0IGQsaCxmO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmMz09PWEuc3BsaXQoIjoiKS5sZW5ndGgpe2NvbnN0IHY9YS5zcGxp''@;'; put 'put ''dCgiOiIpO2Q9dlswXSxoPXZbMV0sZj12WzJdfWVsc2UibnVtYmVyIiE9dHlwZW9mIGEmJihhPXBhcnNlSW50KGEpKSxkPU1hdGguZmxvb3IoYS8zNjAwKSxoPU1hdGguZmxvb3IoYSUzNjAwLzYwKSxmPU1hdGguZmxvb3IoYSUzNjAwJTYwKTtyZXR1cm5gJHt0aGlzLmhlbHBlclNlcnZpY2Uu''@;'; put 'put ''YWRkTGVhZGluZ1plcm8oZCl9OiR7dGhpcy5oZWxwZXJTZXJ2aWNlLmFkZExlYWRpbmdaZXJvKGgpfToke3RoaXMuaGVscGVyU2VydmljZS5hZGRMZWFkaW5nWmVybyhmKX1gfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGV1LDE2KSl9fXN0''@;'; put 'put ''YXRpY3t0aGlzLlx1MDI3NXBpcGU9d2Eoe25hbWU6InNlY29uZHNQYXJzZXIiLHR5cGU6bCxwdXJlOiEwfSl9fXJldHVybiBsfSkoKTtjb25zdCBiaHQ9KGwsYyxhKT0+KHtxdWVyeTpsLHF1ZXJ5SW5kZXg6YyxjbGF1c2VJbmRleDphfSkseWh0PShsLGMsYSxkKT0+KHtxdWVyeTpsLHF1ZXJ5''@;'; put 'put ''SW5kZXg6YyxjbGF1c2VJbmRleDphLGlzRGF0ZVRpbWU6ZH0pLHdodD0obCxjLGEsZCk9Pih7cmFuZ2U6InN0YXJ0IixxdWVyeTpsLHF1ZXJ5VmFsdWVJbmRleDowLHF1ZXJ5SW5kZXg6YyxjbGF1c2VJbmRleDphLGlzRGF0ZVRpbWU6ZH0pLENodD0obCxjLGEsZCk9Pih7cmFuZ2U6ImVuZCIs''@;'; put 'put ''cXVlcnk6bCxxdWVyeVZhbHVlSW5kZXg6MSxxdWVyeUluZGV4OmMsY2xhdXNlSW5kZXg6YSxpc0RhdGVUaW1lOmR9KTtmdW5jdGlvbiBTaHQobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDIyKSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInNlbGVjdGVkIixO''@;'; put 'put ''ZSgpLmxvZ2ljT3BlcmF0b3JzWzBdKSxfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIE1odChsLGMpezEmbCYmKGdlKDAsImRpdiIsMjMpLFBlKDEsIlxuICAgICAgICAiKSxZdCgyLCJwcm9ncmVzcyIpLFBlKDMsIlxuICAgICAgIiksbWUoKSl9ZnVuY3Rpb24geGh0KGwsYyl7MSZsJiZZ''@;'; put 'put ''dCgwLCJkaXYiKX1mdW5jdGlvbiBFaHQobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDIyKSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInNlbGVjdGVkIixOZSgyKS5sb2dpY09wZXJhdG9yc1swXSksX2UoKSxtcigiICIsYSwiICIpfX1mdW5jdGlvbiBUaHQo''@;'; put 'put ''bCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDMyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLmFkZEdyb3VwQ2xhdXNlKCkpfSksWXQoMSwiY2xyLWljb24iLDMzKSxnZSgyLCJzcGFuIiksUGUoMywiR3JvdXAiKSxtZSgpKCl9fWZ1''@;'; put 'put ''bmN0aW9uIGtodChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwzNCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS5pbmRleDtyZXR1cm4gYnQoTmUoKS5yZW1vdmVHcm91cENsYXVzZShoKSl9KSxtZSgpfX1mdW5jdGlvbiBBaHQobCxj''@;'; put 'put ''KXtpZigxJmwmJihnZSgwLCJvcHRpb24iKSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxtcigiICIsYS5OQU1FLCIgIil9fWZ1bmN0aW9uIERodChsLGMpe2lmKDEmbCYmKGdlKDAsIm9wdGlvbiIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNp''@;'; put 'put ''dDtfZSgpLGxyKGEpfX1mdW5jdGlvbiBJaHQobCxjKXsxJmwmJnpsKDApfWZ1bmN0aW9uIFJodChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNTEpKDEsImJ1dHRvbiIsNTIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpLmluZGV4LGY9TmUo''@;'; put 'put ''KS5pbmRleCx2PU5lKCk7cmV0dXJuIHYuY3VycmVudFF1ZXJ5SW5kZXg9aCxidCh2LmN1cnJlbnRDbGF1c2VJbmRleD1mKX0pLFBlKDIsIiBDaG9vc2UgdmFsdWVzICIpLG1lKCksZ3QoMyxJaHQsMSwwLCJuZy1jb250YWluZXIiLDUzKSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgyKSxkPWEu''@;'; put 'put ''JGltcGxpY2l0LGg9YS5pbmRleCxmPU5lKCkuaW5kZXg7TmUoKTtjb25zdCB2PUdpKDM3KTtfZSgzKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsdikoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuUygyLGJodCxkLGgsZikpfX1mdW5jdGlvbiBMaHQobCxjKXsxJmwmJnpsKDApfWZ1bmN0aW9u''@;'; put 'put ''IE9odChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNTQpLGd0KDEsTGh0LDEsMCwibmctY29udGFpbmVyIiw1MyksbWUoKSksMiZsKXtjb25zdCBhPU5lKCkubmdWYXIsZD1OZSgpLGg9ZC4kaW1wbGljaXQsZj1kLmluZGV4LHY9TmUoKS5pbmRleCxTPU5lKCksVj1HaSgzMSksUT1HaSgzMyk7''@;'; put 'put ''X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsYSYmUy51c2VQaWNrZXJzP1Y6USkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Iix4RCgyLHlodCxoLGYsdixhKSl9fWZ1bmN0aW9uIFBodChsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24gRmh0KGwsYyl7MSZsJiZ6bCgwKX1mdW5jdGlvbiBOaHQo''@;'; put 'put ''bCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDU1KSgxLCJkaXYiLDU2KSxndCgyLFBodCwxLDAsIm5nLWNvbnRhaW5lciIsNTMpLG1lKCksZ2UoMywiZGl2Iiw1NyksZ3QoNCxGaHQsMSwwLCJuZy1jb250YWluZXIiLDUzKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpLm5nVmFyLGQ9TmUoKSxo''@;'; put 'put ''PWQuJGltcGxpY2l0LGY9ZC5pbmRleCx2PU5lKCkuaW5kZXgsUz1OZSgpLFY9R2koMzEpLFE9R2koMzUpO19lKDIpLFJlKCJuZ1RlbXBsYXRlT3V0bGV0IixhJiZTLnVzZVBpY2tlcnM/VjpRKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLHhEKDQsd2h0LGgsZix2LGEpKSxfZSgyKSxSZSgi''@;'; put 'put ''bmdUZW1wbGF0ZU91dGxldCIsYSYmUy51c2VQaWNrZXJzP1Y6USkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Iix4RCg5LENodCxoLGYsdixhKSl9fWZ1bmN0aW9uIEhodChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNTgpKDEsImxhYmVsIiw3KSxQZSgyLCJWYWx1ZSIp''@;'; put 'put ''LG1lKCksZ2UoMywiaW5wdXQiLDU5KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYudmFsdWUsaCl8fChmLnZhbHVlPWgpLGJ0KGgpfSksSXQoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2Nv''@;'; put 'put ''bnN0IGY9TmUoMikuaW5kZXgsdj1OZSgpLmluZGV4O3JldHVybiBidChOZSgpLnNldFZhcmlhYmxlVmFsdWVzKGgsZix2KSl9KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpLiRpbXBsaWNpdDtfZSgzKSxZcigibmdNb2RlbCIsYS52YWx1ZSl9fWZ1bmN0aW9uIFZodChsLGMpe2lmKDEm''@;'; put 'put ''bCYmKGdlKDAsImRpdiIsNDYpLGd0KDEsUmh0LDQsNiwiZGl2Iiw0NykoMixPaHQsMiw3LCJkaXYiLDQ4KSgzLE5odCw1LDE0LCJkaXYiLDQ5KSg0LEhodCw0LDEsImRpdiIsNTApLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwiSU4iPT09YS5vcGVy''@;'; put 'put ''YXRvcnx8Ik5PVCBJTiI9PT1hLm9wZXJhdG9yKSxfZSgpLFJlKCJuZ0lmIiwiQkVUV0VFTiIhPT1hLm9wZXJhdG9yJiYiSU4iIT09YS5vcGVyYXRvciYmIk5PVCBJTiIhPT1hLm9wZXJhdG9yJiYiTElLRSIhPT1hLm9wZXJhdG9yJiYiQ09OVEFJTlMiIT09YS5vcGVyYXRvciYmIkJFR0lOU19X''@;'; put 'put ''SVRIIiE9PWEub3BlcmF0b3IpLF9lKCksUmUoIm5nSWYiLCJCRVRXRUVOIj09PWEub3BlcmF0b3IpLF9lKCksUmUoIm5nSWYiLCJMSUtFIj09PWEub3BlcmF0b3J8fCJCRUdJTlNfV0lUSCI9PT1hLm9wZXJhdG9yfHwiQ09OVEFJTlMiPT09YS5vcGVyYXRvcil9fWZ1bmN0aW9uIEJodChsLGMp''@;'; put 'put ''e2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTApKDEsImRpdiIsMzUpKDIsImRpdiIsMzYpKDMsImFwcC1zb2Z0LXNlbGVjdCIsMzcpLFdyKCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYudmFyaWFibGUsaCl8fChm''@;'; put 'put ''LnZhcmlhYmxlPWgpLGJ0KGgpfSksSXQoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKSx2PWYuJGltcGxpY2l0LFM9Zi5pbmRleCxWPU5lKCkuaW5kZXg7cmV0dXJuIGJ0KE5lKCkudmFyaWFibGVJbnB1dENoYW5nZSh2LnZhcmlhYmxlLFMsVixoKSl9KSxndCg0LEFo''@;'; put 'put ''dCwyLDEsIm9wdGlvbiIsMzgpLG1lKCkoKSgpLGdlKDUsImRpdiIsMzkpKDYsImNsci1zZWxlY3QtY29udGFpbmVyIikoNywibGFiZWwiKSxQZSg4LCJPcGVyYXRvciIpLG1lKCksZ2UoOSwic2VsZWN0Iiw0MCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSku''@;'; put 'put ''JGltcGxpY2l0O3JldHVybiBHcihmLm9wZXJhdG9yLGgpfHwoZi5vcGVyYXRvcj1oKSxidChoKX0pLEl0KCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSksZj1oLiRpbXBsaWNpdCx2PWguaW5kZXgsUz1OZSgpLmluZGV4O3JldHVybiBidChOZSgpLnNldFZhcmlhYmxl''@;'; put 'put ''T3BlcmF0b3IodixmLm9wZXJhdG9yLFMpKX0pLGd0KDEwLERodCwyLDEsIm9wdGlvbiIsMzgpLG1lKCkoKSgpLGd0KDExLFZodCw1LDQsImRpdiIsNDEpLGdlKDEyLCJkaXYiLDQyKSgxMywiYnV0dG9uIiw0MyksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuaW5kZXgsZj1O''@;'; put 'put ''ZSgpLmluZGV4O3JldHVybiBidChOZSgpLnJlbW92ZUNsYXVzZShoLGYpKX0pLFl0KDE0LCJjbHItaWNvbiIsNDQpKDE1LCJzcGFuIiksbWUoKSxnZSgxNiwiYnV0dG9uIiw0NSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS5pbmRleDtyZXR1cm4gYnQoTmUoKS5h''@;'; put 'put ''ZGRDbGF1c2UoaCkpfSksWXQoMTcsImNsci1pY29uIiwzMykoMTgsInNwYW4iKSxtZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1jLmluZGV4LGg9TmUoKS5pbmRleCxmPU5lKCk7cHIoImludmFsaWQtY2xhdXNlIixhLmludmFsaWRDbGF1c2UpLF9lKDMpLFJlKCJpZCIs''@;'; put 'put ''InNlbGVjdF92YWxzX3Zhcl9pZCIrZCsiXyIraCkoImlucHV0SWQiLCJ2YWxzX3Zhcl9pZCIrZCsiXyIraCkoImVtaXRPbmx5U2VsZWN0ZWQiLCEwKSxZcigidmFsdWUiLGEudmFyaWFibGUpLF9lKCksUmUoIm5nRm9yT2YiLGYuY29scyksX2UoNSksWXIoIm5nTW9kZWwiLGEub3BlcmF0b3Ip''@;'; put 'put ''LF9lKCksUmUoIm5nRm9yT2YiLGEub3BlcmF0b3JzKSxfZSgpLFJlKCJuZ1ZhciIsIkRBVEUiPT09YS5kZHR5cGV8fCJEQVRFVElNRSI9PT1hLmRkdHlwZXx8IlRJTUUiPT09YS5kZHR5cGUpLF9lKDIpLFJlKCJkaXNhYmxlZCIsMT09PWYuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50cy5s''@;'; put 'put ''ZW5ndGgpfX1mdW5jdGlvbiBqaHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDI0KSgxLCJkaXYiLDEwKSgyLCJkaXYiLDI1KSgzLCJkaXYiLDI2KSg0LCJjbHItc2VsZWN0LWNvbnRhaW5lciIpKDUsImxhYmVsIiksUGUoNiwiTG9naWMiKSxtZSgpLGdlKDcsInNlbGVj''@;'; put 'put ''dCIsMjcpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5jbGF1c2VMb2dpYyxoKXx8KGYuY2xhdXNlTG9naWM9aCksYnQoaCl9KSxJdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUo''@;'; put 'put ''KS5zZXRMb2dpYygpKX0pLGd0KDgsRWh0LDIsMiwib3B0aW9uIiwxMyksbWUoKSgpKCksWXQoOSwiYnIiKSxndCgxMCxUaHQsNCwwLCJidXR0b24iLDI4KSxtZSgpLGdlKDExLCJkaXYiLDI5KSxndCgxMixraHQsMSwwLCJjbHItaWNvbiIsMzApKDEzLEJodCwxOSwxMSwiZGl2IiwzMSksbWUo''@;'; put 'put ''KSgpLFl0KDE0LCJiciIpLG1lKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKTtfZSgpLHByKCJpbnZhbGlkLWNsYXVzZSIsYS5pbnZhbGlkQ2xhdXNlKSxfZSg2KSxZcigibmdNb2RlbCIsYS5jbGF1c2VMb2dpYyksUmUoImRpc2FibGVkIixhLmVsZW1lbnRzLmxlbmd0aDwy''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0Zvck9mIixkLmxvZ2ljT3BlcmF0b3JzKSxfZSgyKSxSZSgibmdJZiIsZC5pbm5lcldpZHRoPjc2OCksX2UoMiksUmUoIm5nSWYiLGQuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MSksX2UoKSxSZSgibmdGb3JPZiIsYS5lbGVtZW50cyl9fWZ1bmN0aW9uIHpodChsLGMp''@;'; put 'put ''e2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsImFwcC1zb2Z0LXNlbGVjdCIsNjIpLGdhKDIsInNhc1RvSnNEYXRlIiksZ2EoMywic2FzVG9Kc0RhdGUiKSxJdCgidmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKSx2PWYucXVlcnksUz1mLnF1ZXJ5VmFs''@;'; put 'put ''dWVJbmRleCxWPWYucXVlcnlJbmRleCxRPWYuY2xhdXNlSW5kZXg7cmV0dXJuIGJ0KE5lKCkuZGF0ZUNoYW5nZShoLHYsVixRLFMpKX0pLG1lKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKSxkPWEucXVlcnksaD1hLnF1ZXJ5VmFsdWVJbmRleCxmPWEucXVlcnlJbmRleCx2PWEuY2xhdXNl''@;'; put 'put ''SW5kZXg7X2UoKSxSZSgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfZGF0ZSIrZisiXyIrdikoInZhbHVlIix2b2lkIDAhPT1oP1VsKDIsMyxkLnZhbHVlW2hdKTpVbCgzLDUsZC52YWx1ZSkpfX1mdW5jdGlvbiBVaHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtW''@;'; put 'put ''cigwKSxnZSgxLCJhcHAtc29mdC1zZWxlY3QiLDYzKSxnYSgyLCJzYXNUb0pzRGF0ZSIpLGdhKDMsInNhc1RvSnNEYXRlIiksSXQoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCksdj1mLnF1ZXJ5SW5kZXgsUz1mLmNsYXVzZUluZGV4O3JldHVybiBidChOZSgp''@;'; put 'put ''LmdldFF1ZXJ5RGF0ZVRpbWUoUyx2KS5kYXRlPWgpfSkoIm9uSW5wdXRFdmVudCIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCksZj1oLnF1ZXJ5LHY9aC5xdWVyeVZhbHVlSW5kZXgsUz1oLnF1ZXJ5SW5kZXgsVj1oLmNsYXVzZUluZGV4O3JldHVybiBidChOZSgpLmRhdGVUaW1lQ2hh''@;'; put 'put ''bmdlKGYsUyxWLHYpKX0pLG1lKCksZ2UoNCwiYXBwLXNvZnQtc2VsZWN0Iiw2NCksZ2EoNSwic2FzVG9Kc0RhdGUiKSxnYSg2LCJzYXNUb0pzRGF0ZSIpLEl0KCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLHY9Zi5xdWVyeUluZGV4LFM9Zi5jbGF1c2VJbmRl''@;'; put 'put ''eDtyZXR1cm4gYnQoTmUoKS5nZXRRdWVyeURhdGVUaW1lKFMsdikudGltZT1oKX0pKCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpLGY9aC5xdWVyeSx2PWgucXVlcnlWYWx1ZUluZGV4LFM9aC5xdWVyeUluZGV4LFY9aC5jbGF1c2VJbmRleDtyZXR1cm4gYnQo''@;'; put 'put ''TmUoKS5kYXRlVGltZUNoYW5nZShmLFMsVix2KSl9KSxtZSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKCksZD1hLnF1ZXJ5LGg9YS5xdWVyeVZhbHVlSW5kZXgsZj1hLnF1ZXJ5SW5kZXgsdj1hLmNsYXVzZUluZGV4O19lKCksUmUoImRpc2FibGVTb2Z0c2VsZWN0IiwhMCkoImlucHV0SWQi''@;'; put 'put ''LCJ2YWxzX2RhdGUiK2YrIl8iK3YpKCJ2YWx1ZSIsdm9pZCAwIT09aD9VNigyLDYsZC52YWx1ZVtoXSwic2Vjb25kcyIpOlU2KDMsOSxkLnZhbHVlLCJzZWNvbmRzIikpLF9lKDMpLFJlKCJkaXNhYmxlU29mdHNlbGVjdCIsITApKCJpbnB1dElkIiwidmFsc190aW1lIitmKyJfIit2KSgidmFs''@;'; put 'put ''dWUiLHZvaWQgMCE9PWg/dWooNSwxMixkLnZhbHVlW2hdLCJzZWNvbmRzIiwhMCk6dWooNiwxNixkLnZhbHVlLCJzZWNvbmRzIiwhMCkpfX1mdW5jdGlvbiBaaHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtWcigwKSxnZSgxLCJhcHAtc29mdC1zZWxlY3QiLDY1KSxnYSgyLCJzZWNvbmRz''@;'; put 'put ''UGFyc2VyIiksZ2EoMywic2Vjb25kc1BhcnNlciIpLEl0KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKSx2PWYucXVlcnksUz1mLnF1ZXJ5VmFsdWVJbmRleCxWPWYucXVlcnlJbmRleCxRPWYuY2xhdXNlSW5kZXg7cmV0dXJuIGJ0KE5lKCkudGltZUNoYW5n''@;'; put 'put ''ZShoLHYsVixRLFMpKX0pLG1lKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKSxkPWEucXVlcnksaD1hLnF1ZXJ5VmFsdWVJbmRleCxmPWEucXVlcnlJbmRleCx2PWEuY2xhdXNlSW5kZXg7X2UoKSxSZSgiZGlzYWJsZVNvZnRzZWxlY3QiLCEwKSgiaW5wdXRJZCIsInZhbHNfIitmKyJfIit2''@;'; put 'put ''KSgidmFsdWUiLHZvaWQgMCE9PWg/VWwoMiwzLGQudmFsdWVbaF0pOlVsKDMsNSxkLnZhbHVlKSl9fWZ1bmN0aW9uIFlodChsLGMpezEmbCYmKFZyKDAsNjApLGd0KDEsemh0LDQsNywibmctY29udGFpbmVyIiw2MSkoMixVaHQsNywyMCwibmctY29udGFpbmVyIiw2MSkoMyxaaHQsNCw3LCJu''@;'; put 'put ''Zy1jb250YWluZXIiLDYxKSxCcigpKSwyJmwmJihSZSgibmdTd2l0Y2giLGMucXVlcnkuZGR0eXBlKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJEQVRFIiksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwiREFURVRJTUUiKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJUSU1FIikpfWZ1bmN0aW9u''@;'; put 'put ''IFdodChsLGMpe2lmKDEmbCYmKGdlKDAsIm9wdGlvbiIsNjgpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgidmFsdWUiLGEudW5mb3JtYXR0ZWQpLF9lKCksbXIoIiAiLGEuZm9ybWF0dGVkLnRyaW0oKSwiICIpfX1mdW5jdGlvbiBHaHQobCxjKXtpZigxJmwmJihn''@;'; put 'put ''ZSgwLCJkaXYiKSxndCgxLFdodCwyLDIsIm9wdGlvbiIsNjcpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLnF1ZXJ5O19lKCksUmUoIm5nRm9yT2YiLGEudmFsdWVzKX19ZnVuY3Rpb24gJGh0KGwsYyl7aWYoMSZsJiYoZ2UoMCwib3B0aW9uIiw2OCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKCkuJGltcGxpY2l0O1JlKCJ2YWx1ZSIsYS5OQU1FKSxfZSgpLG1yKCIgIixhLk5BTUUsIiAiKX19ZnVuY3Rpb24gcWh0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSwkaHQsMiwyLCJvcHRpb24iLDY5KSxCcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgyKS5xdWVyeTtf''@;'; put 'put ''ZSgpLFJlKCJuZ0lmIixhLlRZUEU9PT1kLnR5cGUpfX1mdW5jdGlvbiBLaHQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiKSxndCgxLHFodCwyLDEsIm5nLWNvbnRhaW5lciIsMzgpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgpLFJlKCJuZ0Zvck9mIixhLmNvbHMpfX1mdW5jdGlvbiBY''@;'; put 'put ''aHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJhcHAtc29mdC1zZWxlY3QiLDY2KSxJdCgic2VsZWN0ZWRMYWJlbENoYW5nZSIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS5xdWVyeTtyZXR1cm4gYnQoTmUoKS5zZWxlY3RlZExhYmVsQ2hhbmdlKGgsZikpfSksV3IoInZhbHVl''@;'; put 'put ''Q2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLnF1ZXJ5O3JldHVybiBHcihmLnZhbHVlLGgpfHwoZi52YWx1ZT1oKSxidChoKX0pLEl0KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSksdj1mLnF1ZXJ5SW5kZXgsUz1mLmNsYXVzZUluZGV4O3JldHVybiBi''@;'; put 'put ''dChOZSgpLnNldFZhcmlhYmxlVmFsdWVzKGgudGFyZ2V0LnZhbHVlLHYsUykpfSkoIm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUiLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSksdj1mLnF1ZXJ5LFM9Zi5xdWVyeUluZGV4LFY9Zi5jbGF1c2VJbmRleDtyZXR1cm4gYnQoTmUoKS5vbkF1dG9j''@;'; put 'put ''b21wbGV0ZUxvYWRpbmdNb3JlKGgsdi52YXJpYWJsZSxTLFYpKX0pLGd0KDEsR2h0LDIsMSwiZGl2IiwyMCkoMixLaHQsMiwxLCJkaXYiLDIwKSxtZSgpfWlmKDImbCl7Y29uc3QgYT1jLnF1ZXJ5LGQ9Yy5xdWVyeUluZGV4LGg9Yy5jbGF1c2VJbmRleDtSZSgic2Vjb25kTGFiZWwiLCJWYXJp''@;'; put 'put ''YWJsZSIpKCJlbWl0T25seVNlbGVjdGVkIixhLnZhbHVlVmFyaWFibGUpKCJpbnB1dElkIiwidmFsc18iK2QrIl8iK2gpLFlyKCJ2YWx1ZSIsYS52YWx1ZSksUmUoImVuYWJsZUxvYWRNb3JlIixhLm5vYnM+YS52YWx1ZXMubGVuZ3RoKSxfZSgpLFJlKCJuZ0lmIiwhYS52YWx1ZVZhcmlhYmxl''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlVmFyaWFibGUpfX1mdW5jdGlvbiBKaHQobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDY4KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInZhbHVlIixhLmZvcm1hdHRlZCksX2UoKSxtcigiICIsYS5mb3JtYXR0ZWQs''@;'; put 'put ''IiAiKX19ZnVuY3Rpb24gUWh0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYXBwLXNvZnQtc2VsZWN0Iiw3MCksV3IoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLHY9Zi5xdWVyeSxTPWYucXVlcnlWYWx1ZUluZGV4O3JldHVybiBHcih2LnZhbHVlW1Nd''@;'; put 'put ''LGgpfHwodi52YWx1ZVtTXT1oKSxidChoKX0pLEl0KCJvbklucHV0RXZlbnQiLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKSxmPWgucXVlcnksdj1oLnF1ZXJ5SW5kZXgsUz1oLmNsYXVzZUluZGV4O3JldHVybiBidChOZSgpLnNldFZhcmlhYmxlVmFsdWVzKGYudmFsdWUsdixTKSl9KSgib25B''@;'; put 'put ''dXRvY29tcGxldGVMb2FkaW5nTW9yZSIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKSx2PWYucXVlcnksUz1mLnF1ZXJ5SW5kZXgsVj1mLmNsYXVzZUluZGV4O3JldHVybiBidChOZSgpLm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUoaCx2LnZhcmlhYmxlLFMsVikpfSksZ3QoMSxKaHQsMiwy''@;'; put 'put ''LCJvcHRpb24iLDY3KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1jLnJhbmdlLGQ9Yy5xdWVyeSxoPWMucXVlcnlWYWx1ZUluZGV4O1JlKCJpbnB1dElkIiwidmFscy0iK2ErIl8iK2MucXVlcnlJbmRleCsiXyIrYy5jbGF1c2VJbmRleCksWXIoInZhbHVlIixkLnZhbHVlW2hdKSxSZSgiZW5hYmxl''@;'; put 'put ''TG9hZE1vcmUiLGQubm9icz5kLnZhbHVlcy5sZW5ndGgpKCJkaXNhYmxlZCIsdm9pZCAwIT09aCYmInN0YXJ0IiE9PWEmJiFkLnZhbHVlWzBdKSxfZSgpLFJlKCJuZ0Zvck9mIixkLnZhbHVlcyl9fWZ1bmN0aW9uIGUydChsLGMpezEmbCYmKGdlKDAsImg1Iiw3OCksUGUoMSwiIE5vIHZhbHVl''@;'; put 'put ''cyBhdmFpbGFibGUuICIpLG1lKCkpfWZ1bmN0aW9uIHQydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1jaGVja2JveC13cmFwcGVyIikoMSwiaW5wdXQiLDgwKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS5pbmRleCx2PU5lKDIpLnF1''@;'; put 'put ''ZXJ5O3JldHVybiBHcih2LnZhbHVlW2ZdLmNoZWNrZWQsaCl8fCh2LnZhbHVlW2ZdLmNoZWNrZWQ9aCksYnQoaCl9KSxJdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKSx2PWYucXVlcnlJbmRleCxTPWYuY2xhdXNlSW5kZXg7cmV0dXJuIGJ0KE5lKCku''@;'; put 'put ''c2V0VmFyaWFibGVWYWx1ZXMoaCx2LFMpKX0pLG1lKCksZ2UoMiwibGFiZWwiKSxQZSgzKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9Yy5pbmRleCxoPU5lKDIpLnF1ZXJ5O19lKCksWXIoIm5nTW9kZWwiLGgudmFsdWVbZF0uY2hlY2tlZCksX2UoMiksbXIoIiAiLGEu''@;'; put 'put ''Zm9ybWF0dGVkLCIgIil9fWZ1bmN0aW9uIG4ydChsLGMpe2lmKDEmbCYmKGdlKDAsInNlY3Rpb24iLDc5KSgxLCJjbHItY2hlY2tib3gtY29udGFpbmVyIiksZ3QoMix0MnQsNCwyLCJjbHItY2hlY2tib3gtd3JhcHBlciIsMzgpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCkucXVlcnk7X2Uo''@;'; put 'put ''MiksUmUoIm5nRm9yT2YiLGEudmFsdWVzKX19ZnVuY3Rpb24gcjJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLW1vZGFsIiw3MSkoMSwiaDMiLDcyKSxQZSgyLCJTZWxlY3QgdmFsdWVzIiksbWUoKSxnZSgzLCJkaXYiLDczKSxndCg0LGUydCwyLDAsImg1Iiw3NCkoNSxu''@;'; put 'put ''MnQsMywxLCJzZWN0aW9uIiw3NSksbWUoKSxnZSg2LCJkaXYiLDc2KSg3LCJidXR0b24iLDc3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpO3JldHVybiBoLmN1cnJlbnRRdWVyeUluZGV4PS0xLGJ0KGguY3VycmVudENsYXVzZUluZGV4PS0xKX0pLFBlKDgsIiBB''@;'; put 'put ''cHBseSAiKSxtZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy5xdWVyeSxkPWMucXVlcnlJbmRleCxoPWMuY2xhdXNlSW5kZXgsZj1OZSgpO1JlKCJjbHJNb2RhbE9wZW4iLGYuY3VycmVudFF1ZXJ5SW5kZXg9PT1kJiZmLmN1cnJlbnRDbGF1c2VJbmRleD09PWgpKCJjbHJNb2RhbENsb3NhYmxl''@;'; put 'put ''IiwhMSksX2UoNCksUmUoIm5nSWYiLCFmLmlzQXJyKGEudmFsdWUpKSxfZSgpLFJlKCJuZ0lmIixmLmlzQXJyKGEudmFsdWUpKX19IWZ1bmN0aW9uIFQ5ZShsLGMsYSl7KGZ1bmN0aW9uIG41ZShsLGMsYSl7InN0cmluZyIhPXR5cGVvZiBjJiYoYT1jLGM9bFtjbC5Mb2NhbGVJZF0pLGM9Yy50''@;'; put 'put ''b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpLEh2W2NdPWwsYSYmKEh2W2NdW2NsLkV4dHJhRGF0YV09YSl9KShsLGMsYSl9KGlodCk7bGV0IG9KPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5zYXNTdG9yZVNlcnZpY2U9YSx0aGlzLmV2ZW50U2VydmljZT1k''@;'; put 'put ''LHRoaXMuaGVscGVyU2VydmljZT1oLHRoaXMuY2RmPWYsdGhpcy5jYWNoaW5nPSEwLHRoaXMucm93c19pbmNyZW1lbnQ9MTAwLHRoaXMuaW5pdGlhbF9yb3dzPTFlMyx0aGlzLmNsYXVzZUFtdD1bIiJdLHRoaXMubnVtT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkJFVFdFRU4i''@;'; put 'put ''LCJJTiIsIk5PVCBJTiIsIk5FIl0sdGhpcy5jaGFyT3BlcmF0b3JzPVsiPSIsIjwiLCI+IiwiPD0iLCI+PSIsIkNPTlRBSU5TIiwiSU4iLCJOT1QgSU4iLCJORSJdLHRoaXMubm90SW49ITEsdGhpcy5ub3RBcnI9ITAsdGhpcy53YXNCZXR3ZWVuPSExLHRoaXMud2hlcmVDbGF1c2VMb2FkaW5n''@;'; put 'put ''PSExLHRoaXMuZHluYW1pY1doZXJlQ2xhdXNlPSEwLHRoaXMudXNlUGlja2Vycz0hMSx0aGlzLnF1ZXJ5T2JqPXtlbGVtZW50czpbe2xvZ2ljOm51bGwsdHlwZTpudWxsLGRkdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlVmFyaWFibGU6ITEs''@;'; put 'put ''c3RhcnRyb3c6MCxyb3dzOjAsbm9iczowLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XSxjbGF1c2VMb2dpYzoiIixpbnZhbGlkQ2xhdXNlOiExfSx0aGlzLnNlbFZhcj17aW5kZXg6bnVsbCxmb3JtYXQ6bnVsbCx0eXBlOm51bGx9LHRoaXMuaW5PYmo9W3tjaGVja2VkOiExLHZhbHVlOm51bGx9''@;'; put 'put ''XSx0aGlzLmdyb3VwTG9naWM9IkFORCIsdGhpcy5jbGF1c2VzPXtxdWVyeU9iajpbdGhpcy5xdWVyeU9ial0sY2xhdXNlTG9naWM6W10sZ3JvdXBMb2dpYzp0aGlzLmdyb3VwTG9naWN9LHRoaXMubG9naWNPcGVyYXRvcnM9WyJBTkQiLCJPUiJdLHRoaXMucXVlcnlEYXRlVGltZT1bXSx0aGlz''@;'; put 'put ''LmN1cnJlbnRDbGF1c2VJbmRleD0tMSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PS0xLHRoaXMucGVuZGluZ0lOVmFsdWVzU2V0PW51bGwsdGhpcy5pbm5lcldpZHRoPXdpbmRvdy5zY3JlZW4ud2lkdGgsdGhpcy5pbm5lcldpZHRoPjc2OCYmKHRoaXMubm9Cb3JkZXI9ImJvcmRlci1sZWZ0OiAy''@;'; put 'put ''cHggc29saWQgZ3JheTsiKX1nZXRRdWVyeURhdGVUaW1lKGEsZCl7bGV0IGg9dGhpcy5xdWVyeURhdGVUaW1lLmZpbmQoZj0+Zi5jbGF1c2VJbmRleD09PWEmJmYucXVlcnlJbmRleD09PWQpO2lmKCFoKXtjb25zdCBmPXRoaXMucXVlcnlEYXRlVGltZS5wdXNoKHtjbGF1c2VJbmRleDphLHF1''@;'; put 'put ''ZXJ5SW5kZXg6ZCxkYXRlOiIiLHRpbWU6IiJ9KS0xO2g9dGhpcy5xdWVyeURhdGVUaW1lW2ZdfXJldHVybiBofXVzZVBpY2tlcnNDaGFuZ2UoKXt0aGlzLnF1ZXJ5RGF0ZVRpbWU9W10sdGhpcy51c2VQaWNrZXJzJiZ0aGlzLmNsYXVzZXMucXVlcnlPYmouZm9yRWFjaChhPT57YS5lbGVtZW50''@;'; put 'put ''cy5mb3JFYWNoKGQ9PntbIkRBVEVUSU1FIiwiVElNRSIsIkRBVEUiXS5pbmNsdWRlcyhkLmRkdHlwZSkmJmQudmFsdWVWYXJpYWJsZSYmKGQudmFsdWU9IiIsZC52YWx1ZVZhcmlhYmxlPSExKX0pfSl9cmVzZXRGaWx0ZXIoKXt0aGlzLndoZXJlU3RyaW5nPXZvaWQgMCx0aGlzLndoZXJlQ2xh''@;'; put 'put ''dXNlPXZvaWQgMCx0aGlzLnF1ZXJ5T2JqPXtlbGVtZW50czpbe2xvZ2ljOm51bGwsdHlwZTpudWxsLGRkdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XX0sdGhpcy5jbGF1c2VzPXtxdWVyeU9iajpbdGhpcy5x''@;'; put 'put ''dWVyeU9ial0sY2xhdXNlTG9naWM6W10sZ3JvdXBMb2dpYzp0aGlzLmdyb3VwTG9naWN9LHRoaXMud2hlcmVDbGF1c2VGbighMCl9c2V0VG9HbG9iYWxzKCl7aWYoIXRoaXMuY2FjaGluZylyZXR1cm47bGV0IGE9IiI7ImhvbWUiPT09SG4ucm9vdFBhcmFtfHwiZWRpdG9yIj09PUhuLnJvb3RQ''@;'; put 'put ''YXJhbT9hPXRoaXMudmlld2JveElkP2B2aWV3Ym94ZXMuJHt0aGlzLnZpZXdib3hJZH1gOiJlZGl0b3IiOiJ2aWV3Ij09PUhuLnJvb3RQYXJhbSYmKGE9InZpZXdlciIpLE9sKEhuLGEpLmZpbHRlci5ncm91cExvZ2ljPXRoaXMuZ3JvdXBMb2dpYywic3RyaW5nIj09dHlwZW9mIHRoaXMud2hl''@;'; put 'put ''cmVDbGF1c2UmJihPbChIbixhKS5maWx0ZXIud2hlcmVDbGF1c2U9dGhpcy53aGVyZUNsYXVzZSksInN0cmluZyI9PXR5cGVvZiB0aGlzLmxpYmRzJiYoT2woSG4sYSkuZmlsdGVyLmxpYmRzPXRoaXMubGliZHMpLE9sKEhuLGEpLmZpbHRlci5jbGF1c2VzPXRoaXMuY2xhdXNlc31nZXRGcm9t''@;'; put 'put ''R2xvYmFscygpe2lmKCF0aGlzLmNhY2hpbmcpcmV0dXJuO2xldCBhPSIiOyJob21lIj09PUhuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Ibi5yb290UGFyYW0/YT10aGlzLnZpZXdib3hJZD9gdmlld2JveGVzLiR7dGhpcy52aWV3Ym94SWR9YDoiZWRpdG9yIjoidmlldyI9PT1Ibi5yb290UGFy''@;'; put 'put ''YW0mJihhPSJ2aWV3ZXIiKSxPbChIbixhKS5maWx0ZXIuY29scy5sZW5ndGg+MCYmKHRoaXMuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KE9sKEhuLGEpLmZpbHRlci5jb2xzKSkpLE9sKEhuLGEpLmZpbHRlci52YWxzLmxlbmd0aD4wJiYodGhpcy52YWxzPUpTT04ucGFyc2UoSlNP''@;'; put 'put ''Ti5zdHJpbmdpZnkoT2woSG4sYSkuZmlsdGVyLnZhbHMpKSksIiIhPT1PbChIbixhKS5maWx0ZXIuZ3JvdXBMb2dpYyYmKHRoaXMuZ3JvdXBMb2dpYz1PbChIbixhKS5maWx0ZXIuZ3JvdXBMb2dpYyx0aGlzLndoZXJlQ2xhdXNlPU9sKEhuLGEpLmZpbHRlci53aGVyZUNsYXVzZSx0aGlzLmxp''@;'; put 'put ''YmRzPU9sKEhuLGEpLmZpbHRlci5saWJkcyx0aGlzLmNsYXVzZXM9T2woSG4sYSkuZmlsdGVyLmNsYXVzZXMsdGhpcy53aGVyZUNsYXVzZUZuKCkpfXNldEdyb3VwTG9naWMoYSl7dGhpcy5ncm91cExvZ2ljPWEsdGhpcy5jbGF1c2VzLmdyb3VwTG9naWM9YSx0aGlzLndoZXJlQ2xhdXNlRm4o''@;'; put 'put ''KSx0aGlzLnNldFRvR2xvYmFscygpfWRhdGVDaGFuZ2UoYSxkLGgsZix2KXtsZXQgUz10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0ZShhKTsiQkVUV0VFTiI9PT1kLm9wZXJhdG9yJiZ2b2lkIDAhPT12JiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRz''@;'; put 'put ''W2hdLnZhbHVlW3ZdPVMpLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXMoUyxoLGYpfWRhdGVUaW1lQ2hhbmdlKGEsZCxoLGYpe2NvbnN0IHY9dGhpcy5nZXRRdWVyeURhdGVUaW1lKGgsZCk7aWYoIiI9PT12LmRhdGUpe2lmKCIiPT09YS52YWx1ZSlyZXR1cm47di5kYXRlPWEudmFsdWUuc3BsaXQo''@;'; put 'put ''IjoiKVswXX1jb25zdCBTPXBhcnNlSW50KHYudGltZS5zcGxpdCgiOiIpWzBdKSxWPXBhcnNlSW50KHYudGltZS5zcGxpdCgiOiIpWzFdKSxRPXBhcnNlSW50KHYudGltZS5zcGxpdCgiOiIpWzJdKXx8MDtsZXQgZGU9bmV3IERhdGUodi5kYXRlKSxwZT1uZXcgRGF0ZShkZS5nZXRGdWxsWWVh''@;'; put 'put ''cigpLGRlLmdldE1vbnRoKCksZGUuZ2V0RGF0ZSgpLFMsVixRKSxDZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEpzRGF0ZVRvU2FzRGF0ZShwZSwic2Vjb25kcyIpOyJCRVRXRUVOIj09PWEub3BlcmF0b3ImJnZvaWQgMCE9PWYmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVu''@;'; put 'put ''dHNbZF0udmFsdWVbZl09Q2UpLHRoaXMuc2V0VmFyaWFibGVWYWx1ZXMoQ2UsZCxoKX10aW1lQ2hhbmdlKGEsZCxoLGYsdil7YT1hLnRhcmdldC52YWx1ZTtsZXQgQ2U9NjAqcGFyc2VJbnQoYS5zcGxpdCgiOiIpWzBdKSo2MCs2MCpwYXJzZUludChhLnNwbGl0KCI6IilbMV0pKyhwYXJzZUlu''@;'; put 'put ''dChhLnNwbGl0KCI6IilbMl0pfHwwKTsiQkVUV0VFTiI9PT1kLm9wZXJhdG9yJiZ2b2lkIDAhPT12JiYodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW2hdLnZhbHVlW3ZdPUNlKSx0aGlzLnNldFZhcmlhYmxlVmFsdWVzKENlLGgsZil9ZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRv''@;'; put 'put ''cihhLGQpe2xldCBoPVtdO2lmKHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg+MXx8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzLmxlbmd0aD4xKWZvcihsZXQgZj0wO2Y8dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aDtmKyspZm9yKGxldCB2PTA7djx0aGlzLmNsYXVz''@;'; put 'put ''ZXMucXVlcnlPYmpbZl0uZWxlbWVudHMubGVuZ3RoO3YrKyl7aWYoZj09PWEmJnY9PT1kfHxbbnVsbCx2b2lkIDBdLmluY2x1ZGVzKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1t2XS52YXJpYWJsZSl8fFtudWxsLHZvaWQgMF0uaW5jbHVkZXModGhpcy5jbGF1c2VzLnF1ZXJ5''@;'; put 'put ''T2JqW2ZdLmVsZW1lbnRzW3ZdLm9wZXJhdG9yKXx8W251bGwsdm9pZCAwXS5pbmNsdWRlcyh0aGlzLmNsYXVzZXMucXVlcnlPYmpbZl0uZWxlbWVudHNbdl0udmFsdWUpKWNvbnRpbnVlO2xldCBTPSIiO2NvbnN0IFY9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW3ZdLm9wZXJh''@;'; put 'put ''dG9yLFE9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW3ZdLnZhcmlhYmxlOyJCRVRXRUVOIj09PVY/Uz1gJHt0aGlzLmNsYXVzZXMucXVlcnlPYmpbZl0uZWxlbWVudHNbdl0udmFsdWVbMF19IEFORCAke3RoaXMuY2xhdXNlcy5xdWVyeU9ialtmXVt2XS52YWx1ZVsxXX1gOiJJ''@;'; put 'put ''TiI9PT1WfHwiTk9UIElOIj09PVY/KHRoaXMuY2xhdXNlcy5xdWVyeU9ialtmXVt2XS52YWx1ZS5mb3JFYWNoKGRlPT57aWYoZGUuY2hlY2tlZCl7bGV0IHBlPWRlLnZhbDsic3RyaW5nIiE9dHlwZW9mIHBlfHwoMCxlZy5pc1NwZWNpYWxNaXNzaW5nKShwZSk/Uy5sZW5ndGg+MD9TKz1gLCR7''@;'; put 'put ''cGV9YDpTPWAoJHtwZX1gOlMubGVuZ3RoPjA/Uys9YCwnJHtwZX0nYDpTPWAoJyR7cGV9J2B9fSksUy5sZW5ndGg+MCYmKFMrPSIpIikpOiIiPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW3ZdLnZhbHVlP1M9ImNoYXIiPT09dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVs''@;'; put 'put ''ZW1lbnRzW3ZdLnR5cGU/IicgJyI6Ii4iOiJjaGFyIj09PXRoaXMuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1t2XS50eXBlJiYoUz1gJyR7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW3ZdLnZhbHVlfSdgKSxoLnB1c2goe0dST1VQX0xPR0lDOnRoaXMuY2xhdXNlcy5n''@;'; put 'put ''cm91cExvZ2ljLFNVQkdST1VQX0xPR0lDOnRoaXMuY2xhdXNlcy5xdWVyeU9ialtmXS5jbGF1c2VMb2dpY3x8IkFORCIsU1VCR1JPVVBfSUQ6ZixWQVJJQUJMRV9OTTpRLE9QRVJBVE9SX05NOlYsUkFXX1ZBTFVFOlN8fHRoaXMuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1t2XS52YWx1''@;'; put 'put ''ZX0pfXJldHVybiBofWdldFZhbHVlc0xvYWRNb3JlKGEsZCxoLGYpe3ZhciB2PXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7Y29uc3QgUz12LmxpYmRzfHwiIjt0cnl7aWYodm9pZCAwIT09di5jb2xzKXtmb3IobGV0IGV0PTA7ZXQ8di5jb2xzLmxlbmd0aDtldCsrKXYuY29sc1tldF0uTkFN''@;'; put 'put ''RT09PWQmJih2LnNlbFZhci5pbmRleD1ldCk7Y29uc3QgVj12LmNvbHNbdi5zZWxWYXIuaW5kZXhdLkREVFlQRSx7c3RhcnRyb3c6USxyb3dzOmRlfT12LmNsYXVzZXMucXVlcnlPYmpbZl0uZWxlbWVudHNbaF0scGU9di5yb3dzX2luY3JlbWVudCxDZT1RK2RlO2xldCBPZT1bXTt2LmR5bmFt''@;'; put 'put ''aWNXaGVyZUNsYXVzZSYmKE9lPXYuZHluYW1pY1doZXJlQ2xhdXNlQ3JlYXRvcihmLGgpKTtjb25zdCBZZT1bIkRBVEVUSU1FIiwiVElNRSIsIkRBVEUiXS5pbmNsdWRlcyhWKTt2LnNhc1N0b3JlU2VydmljZS5nZXRRdWVyeVZhbHVlcyhkLFMsT2UsQ2UscGUpLnRoZW4oZXQ9Pntjb25zdCBk''@;'; put 'put ''dD1ldC52YWxzLHtTVEFSVFJPVzpodCxST1dTOk10LE5PQlM6UXR9PWV0Lm1ldGFbMF07aWYodi5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW2hdLnN0YXJ0cm93PWh0LHYuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1toXS5yb3dzPU10LHYuY2xhdXNlcy5xdWVyeU9ialtmXS5l''@;'; put 'put ''bGVtZW50c1toXS5ub2JzPVF0LDE9PT1kdC5sZW5ndGgmJiIiPT09ZHRbMF0uRk9STUFUVEVEJiYiIj09PWR0WzBdLlVORk9STUFUVEVEP2EubG9hZE1vcmVGaW5pc2hlZCghMSk6KHYuY2xhdXNlcy5xdWVyeU9ialtmXS5lbGVtZW50c1toXS52YWx1ZXMucHVzaCguLi5kdC5tYXAod249Pntj''@;'; put 'put ''b25zdCBucj0ibnVtIj09PWV0LiR2YWxzLnZhcnMuVU5GT1JNQVRURUQudHlwZTtsZXQgTWk9bnImJigwLGVnLmlzU3BlY2lhbE1pc3NpbmcpKHduLlVORk9STUFUVEVEKT8iLiIrd24uVU5GT1JNQVRURUQ6d24uVU5GT1JNQVRURUQ7cmV0dXJuIG5yJiZudWxsPT09TWkmJihNaT0iLiIpLHtm''@;'; put 'put ''b3JtYXR0ZWQ6WWU/d24uRk9STUFUVEVELnNwbGl0KCIuIilbMF06d24uRk9STUFUVEVELHVuZm9ybWF0dGVkOk1pfX0pKSxhLmxvYWRNb3JlRmluaXNoZWQoUXQtdi5jbGF1c2VzLnF1ZXJ5T2JqW2ZdLmVsZW1lbnRzW2hdLnZhbHVlcy5sZW5ndGg+MCkpLHYud2hlcmVDbGF1c2VGbigpLHYu''@;'; put 'put ''c2V0VG9HbG9iYWxzKCksdi53aGVyZUNsYXVzZUxvYWRpbmc9ITEsbnVsbCE9PXYucGVuZGluZ0lOVmFsdWVzU2V0KXtjb25zdHtjbGF1c2VJbmRleDpsbixxdWVyeUluZGV4OnZufT12LnBlbmRpbmdJTlZhbHVlc1NldDt2LnNldElOVmFsdWVzKGxuLHZuKSx2LnBlbmRpbmdJTlZhbHVlc1Nl''@;'; put 'put ''dD1udWxsfXYuY2RmLmRldGVjdENoYW5nZXMoKX0pLmNhdGNoKGV0PT57di53aGVyZUNsYXVzZUxvYWRpbmc9ITF9KX19Y2F0Y2goVil7di5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJwdWJsaWMvZ2V0Y29sdmFscyIsVil9fSkoKX1nZXRWYWx1ZXMoYSxkLGgpe3ZhciBmPXRo''@;'; put 'put ''aXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7Zi53aGVyZUNsYXVzZUxvYWRpbmc9ITA7bGV0IHY9IiI7dm9pZCAwIT09Zi5saWJkcyYmKHY9Zi5saWJkcyksZi5jbGVhclZhbHVlcyhkLGgpLGYuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1tkXS52YWx1ZXM9W10sZi5jbGF1c2VzLnF1ZXJ5''@;'; put 'put ''T2JqW2hdLmVsZW1lbnRzW2RdLnZhbHVlPSIiLGYuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1tkXS5vcGVyYXRvcj0iPSIsZi5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2RdLnZhcmlhYmxlPWE7dHJ5e2lmKHZvaWQgMCE9PWYuY29scyl7Zm9yKGxldCBkZT0wO2RlPGYuY29s''@;'; put 'put ''cy5sZW5ndGg7ZGUrKylmLmNvbHNbZGVdLk5BTUU9PT1hJiYoZi5zZWxWYXIuaW5kZXg9ZGUpO2NvbnN0IFM9Zi5jb2xzW2Yuc2VsVmFyLmluZGV4XS5ERFRZUEU7Zi5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2RdLmRkdHlwZT1TLGYuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50''@;'; put 'put ''c1tkXS50eXBlPWYuY29sc1tmLnNlbFZhci5pbmRleF0uVFlQRSxmLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ub3BlcmF0b3JzPSJudW0iPT09Zi5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2RdLnR5cGU/Zi5udW1PcGVyYXRvcnM6Zi5jaGFyT3BlcmF0b3JzO2xldCBW''@;'; put 'put ''PVtdO2YuZHluYW1pY1doZXJlQ2xhdXNlJiYoVj1mLmR5bmFtaWNXaGVyZUNsYXVzZUNyZWF0b3IoaCxkKSk7Y29uc3QgUT1bIkRBVEVUSU1FIiwiVElNRSIsIkRBVEUiXS5pbmNsdWRlcyhTKTtmLnNhc1N0b3JlU2VydmljZS5nZXRRdWVyeVZhbHVlcyhhLHYsViwxLGYuaW5pdGlhbF9yb3dz''@;'; put 'put ''KS50aGVuKGRlPT57Y29uc3QgcGU9ZGUudmFscyx7U1RBUlRST1c6Q2UsUk9XUzpPZSxOT0JTOlllfT1kZS5tZXRhWzBdO2lmKGYuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1tkXS5zdGFydHJvdz1DZSxmLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ucm93cz1PZSxmLmNs''@;'; put 'put ''YXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ubm9icz1ZZSxmLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0udmFsdWVzPXBlLm1hcChldD0+e2NvbnN0IGR0PSJudW0iPT09ZGUuJHZhbHMudmFycy5VTkZPUk1BVFRFRC50eXBlO2xldCBNdD1kdCYmKDAsZWcuaXNTcGVjaWFs''@;'; put 'put ''TWlzc2luZykoZXQuVU5GT1JNQVRURUQpPyIuIitldC5VTkZPUk1BVFRFRDpldC5VTkZPUk1BVFRFRDtyZXR1cm4gZHQmJm51bGw9PT1NdCYmKE10PSIuIikse2Zvcm1hdHRlZDpRP2V0LkZPUk1BVFRFRC5zcGxpdCgiLiIpWzBdOmV0LkZPUk1BVFRFRCx1bmZvcm1hdHRlZDpNdH19KS5zbGlj''@;'; put 'put ''ZSgwLDJlMyksZi53aGVyZUNsYXVzZUZuKCksZi5zZXRUb0dsb2JhbHMoKSxmLndoZXJlQ2xhdXNlTG9hZGluZz0hMSxudWxsIT09Zi5wZW5kaW5nSU5WYWx1ZXNTZXQpe2NvbnN0e2NsYXVzZUluZGV4OmV0LHF1ZXJ5SW5kZXg6ZHR9PWYucGVuZGluZ0lOVmFsdWVzU2V0O2Yuc2V0SU5WYWx1''@;'; put 'put ''ZXMoZXQsZHQpLGYucGVuZGluZ0lOVmFsdWVzU2V0PW51bGx9Zi5jZGYuZGV0ZWN0Q2hhbmdlcygpfSkuY2F0Y2goZGU9PntmLndoZXJlQ2xhdXNlTG9hZGluZz0hMX0pfX1jYXRjaChTKXtmLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoInB1YmxpYy9nZXRjb2x2YWxzIixTKX19''@;'; put 'put ''KSgpfWdldGxvZ2ljKGEpe3RoaXMubG9naWM9YSx0aGlzLndoZXJlQ2xhdXNlRm4oKX1zZXRMb2dpYygpe3RoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9aXNBcnIoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBBcnJheSYmYS5sZW5ndGg+MCYmdHlwZW9mIGFbMF0uY2hl''@;'; put 'put ''Y2tlZDwidSJ9c2VsZWN0ZWRMYWJlbENoYW5nZShhLGQpe2QudmFsdWVWYXJpYWJsZT0iVmFyaWFibGUiPT09YSxkLnZhbHVlPSIiLHRoaXMud2hlcmVDbGF1c2VGbigpfXZhcmlhYmxlSW5wdXRDaGFuZ2UoYSxkLGgsZil7dGhpcy5nZXRWYWx1ZXMoYSxkLGgpfXNldFZhcmlhYmxlVmFsdWVz''@;'; put 'put ''KGEsZCxoKXtsZXQgZj10aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbZF0ub3BlcmF0b3I7IkJFVFdFRU4iIT09ZiYmIklOIiE9PWYmJiJOT1QgSU4iIT09ZiYmKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1tkXS52YWx1ZT1hLnRvU3RyaW5nKCkpLHRoaXMud2hl''@;'; put 'put ''cmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9c2V0VmFyaWFibGVPcGVyYXRvcihhLGQsaCl7bGV0IGY9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2hdLmVsZW1lbnRzW2FdLnZhbHVlO2YgaW5zdGFuY2VvZiBBcnJheSYmIklOIiE9PWQmJiJOT1QgSU4iIT09ZCYmKGY9ZiBpbnN0YW5j''@;'; put 'put ''ZW9mIEFycmF5JiYyPT09Zi5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgZlswXT9mWzBdOiIiKSx0aGlzLmNsZWFyVmFsdWVzT3BlcmF0b3IoYSxoKSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbYV0ub3BlcmF0b3I9ZCwoIj0iPT09ZHx8Ij4iPT09ZHx8IjwiPT09ZHx8Ijw9''@;'; put 'put ''Ij09PWR8fCI+PSI9PT1kfHwiTkUiPT09ZCkmJih0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbYV0udmFsdWU9ZiksIkJFVFdFRU4iPT09ZCYmKHRoaXMuY2xhdXNlcy5xdWVyeU9ialtoXS5lbGVtZW50c1thXS52YWx1ZT1bXSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxl''@;'; put 'put ''bWVudHNbYV0udmFsdWUucHVzaChmKSx0aGlzLmNsYXVzZXMucXVlcnlPYmpbaF0uZWxlbWVudHNbYV0udmFsdWUucHVzaCgiIikpLCgiSU4iPT09ZHx8Ik5PVCBJTiI9PT1kKSYmdGhpcy5zZXRJTlZhbHVlcyhoLGEpLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9''@;'; put 'put ''c2V0SU5WYWx1ZXMoYSxkKXtjb25zdCBoPVtdLGY9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzW2RdLnZhbHVlcztmLmxlbmd0aDwxJiYodGhpcy5wZW5kaW5nSU5WYWx1ZXNTZXQ9e2NsYXVzZUluZGV4OmEscXVlcnlJbmRleDpkfSk7Zm9yKGxldCB2PTA7djxmLmxlbmd0aDt2''@;'; put 'put ''KyspaC5wdXNoKHtjaGVja2VkOiExLHZhbDpmW3ZdLmZvcm1hdHRlZH0pO3RoaXMuY2xhdXNlcy5xdWVyeU9ialthXS5lbGVtZW50c1tkXS52YWx1ZT1ofWNsZWFyVmFsdWVzKGEsZCl7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2RdLmVsZW1lbnRzW2FdLnZhbHVlPSIifWNsZWFyVmFsdWVzT3Bl''@;'; put 'put ''cmF0b3IoYSxkKXtsZXQgaD10aGlzLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHNbYV0ub3BlcmF0b3I7KCJCRVRXRUVOIj09PWh8fCJJTiI9PT1ofHwiTk9UIElOIj09PWh8fCJDT05UQUlOUyI9PT1oKSYmdGhpcy5jbGVhclZhbHVlcyhhLGQpfWhhc0ludmFsaWRDbHVhc2UoYSl7Zm9y''@;'; put 'put ''KGxldCBkIG9mIGEpaWYoZC5pbnZhbGlkQ2xhdXNlPSExLCIiPT09ZC52YWx1ZSYmIk5FIiE9PWQub3BlcmF0b3ImJiJDT05UQUlOUyIhPT1kLm9wZXJhdG9yfHxudWxsPT09ZC52YXJpYWJsZXx8bnVsbD09PWQub3BlcmF0b3J8fG51bGw9PT1kLnZhbHVlKXJldHVybiBkLmludmFsaWRDbGF1''@;'; put 'put ''c2U9ITAsITA7cmV0dXJuIGEuaW52YWxpZENsYXVzZT0hMSwhMX1oYXNJbnZhbGlkR3JvdXBDbHVhc2UoKXtmb3IobGV0IGE9MDthPHRoaXMuY2xhdXNlcy5xdWVyeU9iai5sZW5ndGg7YSsrKXtpZih0aGlzLmhhc0ludmFsaWRDbHVhc2UodGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1l''@;'; put 'put ''bnRzKSlyZXR1cm4gdGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmludmFsaWRDbGF1c2U9ITAsITA7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmludmFsaWRDbGF1c2U9ITF9cmV0dXJuITF9YWRkQ2xhdXNlKGEpe2lmKHRoaXMuaGFzSW52YWxpZENsdWFzZSh0aGlzLmNsYXVzZXMucXVlcnlP''@;'; put 'put ''YmpbYV0uZWxlbWVudHMpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik7dGhpcy5jbGF1c2VBbXQucHVzaCgiIiks''@;'; put 'put ''dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmVsZW1lbnRzLnB1c2goe2xvZ2ljOm51bGwsdHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119KTtsZXQgZD10aGlzLmNsYXVzZXMucXVlcnlPYmpbYV0uY2xhdXNlTG9n''@;'; put 'put ''aWM7dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqW2FdLmNsYXVzZUxvZ2ljPXR5cGVvZiBkPiJ1Ij8iQU5EIjoiT1IiPT09ZD8iT1IiOiJBTkQiLHRoaXMud2hlcmVDbGF1c2VGbigpLHRoaXMuc2V0VG9HbG9iYWxzKCl9YWRkR3JvdXBDbGF1c2UoKXt0aGlzLmhhc0ludmFsaWRHcm91cENsdWFzZSgp''@;'; put 'put ''P3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkVycm9yIiwiQ2Fubm90IGFkZCBuZXcgY2xhdXNlLCB3aGVuIG9uZSBvciBtb3JlIGNsYXVzZXMgYXJlIGludmFsaWQgb3IgZW1wdHkuIik6KHRoaXMuY2xhdXNlcy5xdWVyeU9iai5wdXNoKHtlbGVtZW50czpbe2xvZ2ljOm51bGws''@;'; put 'put ''dHlwZTpudWxsLHZhcmlhYmxlOm51bGwsb3BlcmF0b3I6bnVsbCx2YWx1ZTpudWxsLHZhbHVlczpbXSxvcGVyYXRvcnM6W119XX0pLHRoaXMuc2V0VG9HbG9iYWxzKCkpfWlzSW5IdG1sQ29sbGVjdGlvbihhLGQpe2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKWlmKGRbaF0udmFsdWU9PT1h''@;'; put 'put ''KXJldHVybiEwO3JldHVybiExfXJlbW92ZUdyb3VwQ2xhdXNlKGEpe3RoaXMuY2xhdXNlcy5xdWVyeU9iai5zcGxpY2UoYSwxKSx0aGlzLndoZXJlQ2xhdXNlRm4oKX1yZW1vdmVDbGF1c2UoYSxkKXt0aGlzLmNsYXVzZXMucXVlcnlPYmpbZF0uZWxlbWVudHMuc3BsaWNlKGEsMSksdGhpcy53''@;'; put 'put ''aGVyZUNsYXVzZUZuKCksdGhpcy5zZXRUb0dsb2JhbHMoKX13aGVyZUNsYXVzZUZuKGE9ITEpe2NvbnN0IGQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmNsYXVzZXMpO2lmKGEmJihkLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzPVtdKSx2b2lkIDAhPT10aGlzLmxpYmRzKXtsZXQg''@;'; put 'put ''aD10aGlzLnNhc1N0b3JlU2VydmljZS53aGVyZUNsYXVzZUNyZWF0b3IoZCx0aGlzLmdyb3VwTG9naWMsdGhpcy5saWJkcyk7YXx8KHRoaXMud2hlcmVDbGF1c2U9aC53aGVyZUNsYXVzZSx0aGlzLndoZXJlU3RyaW5nPWguc3RyaW5nKX19bmdBZnRlclZpZXdJbml0KCl7dmFyIGE9dGhpczty''@;'; put 'put ''ZXR1cm4gWShmdW5jdGlvbiooKXthLl9yZW1vdmVRcnk9YS5zYXNTdG9yZVNlcnZpY2UucmVtb3ZlUXVlcnkuc3Vic2NyaWJlKGQ9PnthLmNsYXVzZXMucXVlcnlPYmoubGVuZ3RoPj0xJiYoYS5jbGF1c2VzLnF1ZXJ5T2JqLmxlbmd0aD0xLGEuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50''@;'; put 'put ''cy5sZW5ndGg+PTEmJihhLmNsYXVzZXMucXVlcnlPYmpbMF0uZWxlbWVudHMubGVuZ3RoPTEsYS5jbGF1c2VzLnF1ZXJ5T2JqWzBdLmVsZW1lbnRzPVtdLGEuY2xhdXNlcy5xdWVyeU9ialswXS5lbGVtZW50cy5wdXNoKHtsb2dpYzpudWxsLHR5cGU6bnVsbCx2YXJpYWJsZTpudWxsLG9wZXJh''@;'; put 'put ''dG9yOm51bGwsdmFsdWU6bnVsbCx2YWx1ZXM6W10sb3BlcmF0b3JzOltdfSksYS53aGVyZUNsYXVzZUZuKCkpKX0pLGEuY29sdW1uc1N1Yj1hLnNhc1N0b3JlU2VydmljZS5jb2x1bW5zLnN1YnNjcmliZShkPT57bGV0IGg9ZC5kYXRhLmNvbHM7ImhvbWUiIT09SG4ucm9vdFBhcmFtJiYiZWRp''@;'; put 'put ''dG9yIiE9PUhuLnJvb3RQYXJhbXx8KGEuY29scz1oLGEubGliZHM9ZC5saWJkcyxIbi5lZGl0b3IuZmlsdGVyLmNvbHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoKSkpLCJ2aWV3Ij09PUhuLnJvb3RQYXJhbSYmSG4udmlld2VyLmZpbHRlci5jb2xzLmxlbmd0aDwxJiYoYS5jb2xzPWgs''@;'; put 'put ''YS5saWJkcz1kLmxpYmRzLEhuLnZpZXdlci5maWx0ZXIuY29scz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGgpKSksYS5saWJkc3x8KGEubGliZHM9ZC5saWJkcyl9KSxhLnZhbHVlc1N1Yj1hLnNhc1N0b3JlU2VydmljZS52YWx1ZXMuc3Vic2NyaWJlKGQ9PnsoImhvbWUiPT09SG4ucm9v''@;'; put 'put ''dFBhcmFtfHwiZWRpdG9yIj09PUhuLnJvb3RQYXJhbSkmJkhuLmVkaXRvci5maWx0ZXIudmFscy5sZW5ndGg8MSYmKGEudmFscz1kLnZhbHMsSG4uZWRpdG9yLmZpbHRlci52YWxzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZC52YWxzKSkpLCJ2aWV3Ij09PUhuLnJvb3RQYXJhbSYmSG4u''@;'; put 'put ''dmlld2VyLmZpbHRlci52YWxzLmxlbmd0aDwxJiYoYS52YWxzPWQudmFscyxIbi52aWV3ZXIuZmlsdGVyLnZhbHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkLnZhbHMpKSl9KX0pKCl9b25BdXRvY29tcGxldGVMb2FkaW5nTW9yZShhLGQsaCxmKXt0aGlzLmdldFZhbHVlc0xvYWRNb3Jl''@;'; put 'put ''KGEsZCxoLGYpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuZ2V0RnJvbUdsb2JhbHMoKSxzZXRUaW1lb3V0KCgpPT57bGV0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ZhbHNfdmFyX2lkMF8wIik7YSYmYS5mb2N1cygpfSw1MDApfW5nT25EZXN0cm95KCl7dGhpcy5jb2x1bW5zU3Vi''@;'; put 'put ''JiZ0aGlzLmNvbHVtbnNTdWIudW5zdWJzY3JpYmUoKSx0aGlzLnZhbHVlc1N1YiYmdGhpcy52YWx1ZXNTdWIudW5zdWJzY3JpYmUoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShaZCksSmUoRGwpLEplKGV1KSxKZShjYSkpfX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXF1ZXJ5Il1dLGlucHV0czp7Y2FjaGluZzoiY2FjaGluZyIsdmlld2JveElkOiJ2aWV3Ym94SWQifSxmZWF0dXJlczpbWmkoW3twcm92aWRlOlYyLHVzZVZhbHVlOiJlbi1HQiJ9XSldLGRlY2xzOjM4LHZhcnM6MTEs''@;'; put 'put ''Y29uc3RzOltbInBpY2tlciIsIiJdLFsibm90UGlja2VyIiwiIl0sWyJub3RQaWNrZXJSYW5nZSIsIiJdLFsiY2hlY2tib3hWYWx1ZXMiLCIiXSxbMSwiY2xyLWZsZXgtcm93IiwiY2xyLWZvcm0tY29udHJvbCIsIm0tMCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiXSxbImNsckNoZWNr''@;'; put 'put ''Ym94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsxLCJjbHItY29udHJvbC1sYWJlbCJdLFsxLCJjbHItY29udHJvbC1jb250YWluZXIiLCJtbC0xNSJdLFsiY2xyQ2hlY2tib3giLCIiLCJ0eXBlIiwiY2hlY2tib3giLCJpZCIsInVzZVBpY2tl''@;'; put 'put ''cnMiLDMsIm5nTW9kZWxDaGFuZ2UiLCJjaGFuZ2UiLCJuZ01vZGVsIl0sWzEsImNsci1yb3ciXSxbMSwic2VsZWN0IiwiY2xyLWNvbC1tZC0yIiwibWItMzAiXSxbImNsclNlbGVjdCIsIiIsMywibmdNb2RlbENoYW5nZSIsImRpc2FibGVkIiwibmdNb2RlbCJdLFszLCJzZWxlY3RlZCIsNCwi''@;'; put 'put ''bmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNsci1jb2wtbWQtMTAiLCJtYi0zMCJdLFsxLCJsaW5lLW51bWJlcnMiLCJsYW5ndWFnZS1tYXJrdXAiXSxbImNsYXNzIiwicHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWzEsImxhbmd1YWdlLXNxbCJdLFsxLCJjb250ZW50Il0s''@;'; put 'put ''WzEsImNsYXVzZXMtY29udGFpbmVyIiwiY2xyLWNvbC1tZC0xMiJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsImNsYXVzZS1yb3ciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJzZWxlY3RlZCJdLFsxLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzEsImNsYXVzZS1yb3ciXSxb''@;'; put 'put ''MSwiY2xhdXNlLWxvZ2ljIiwiY2xyLWNvbC1tZC0yIl0sWzEsInNlbGVjdCJdLFsiY2xyU2VsZWN0IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCIsImRpc2FibGVkIl0sWyJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2sgbXQtMTAiLDMsImNsaWNrIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsImNsYXVzZS1xdWVyeSIsImNsci1jb2wtbWQtMTAiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLCJjbGFzcyIsInJlbW92ZS1ncm91cC1jbGF1c2UtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItcm93IiwzLCJpbnZhbGlkLWNsYXVzZSIsNCwibmdG''@;'; put 'put ''b3IiLCJuZ0Zvck9mIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5IiwiYnRuLWJsb2NrIiwibXQtMTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsInBsdXMiXSxbInNoYXBlIiwidGltZXMiLCJzaXplIiwiMzYiLDEsInJlbW92ZS1ncm91cC1jbGF1c2UtYnV0dG9uIiwzLCJjbGljayJdLFsxLCJ2YXJp''@;'; put 'put ''YWJsZS1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWzEsImRhdGFsaXN0LXdyYXBwZXIiXSxbImxhYmVsIiwiVmFyaWFibGUiLDMsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50IiwiaWQiLCJpbnB1dElkIiwiZW1pdE9ubHlTZWxlY3RlZCIsInZhbHVlIl0sWzQsIm5nRm9y''@;'; put 'put ''IiwibmdGb3JPZiJdLFsxLCJvcGVyYXRvci1jb2wiLCJmb3JtLWdyb3VwIiwiY2xyLWNvbC1tZC0zIl0sWyJjbHJTZWxlY3QiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJjbGFzcyIsInZhbHVlLWNvbCBmb3JtLWdyb3VwIGNsci1jb2wtbWQtMyIsNCwibmdWYXIiXSxbMSwi''@;'; put 'put ''Y2xhdXNlLWJ1dHRvbnMiLCJjbHItY29sLW1kLTIiLCJidG4tZ3JvdXAiXSxbMSwiYnRuIiwiYnRuLXdhcm5pbmciLCJidG4tYmxvY2siLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInNoYXBlIiwibWludXMiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLCJidG4tYmxvY2siLDMsImNsaWNrIl0s''@;'; put 'put ''WzEsInZhbHVlLWNvbCIsImZvcm0tZ3JvdXAiLCJjbHItY29sLW1kLTMiXSxbImNsYXNzIiwiY2hlY2tib3gtdmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJzaW5nbGUtZmllbGQtdmFscyIsNCwibmdJZiJdLFsiY2xhc3MiLCJyYW5nZS12YWxzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRh''@;'; put 'put ''aW5zLXZhbHMiLDQsIm5nSWYiXSxbMSwiY2hlY2tib3gtdmFscyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLWxpbmsiLDMsImNsaWNrIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJzaW5nbGUtZmllbGQtdmFscyJdLFsxLCJy''@;'; put 'put ''YW5nZS12YWxzIl0sWzEsImZyb20iXSxbMSwidG8iXSxbMSwiY29udGFpbnMtdmFscyJdLFsidHlwZSIsInRleHQiLDEsImlucHV0LXZhbCIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJsYWJlbCIsIlZhbHVlIiwidHlw''@;'; put 'put ''ZSIsImRhdGUiLDMsInZhbHVlQ2hhbmdlIiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwiZGF0ZSIsMywidmFsdWVDaGFuZ2UiLCJvbklucHV0RXZlbnQiLCJkaXNhYmxlU29mdHNlbGVjdCIsImlucHV0SWQiLCJ2YWx1ZSJd''@;'; put 'put ''LFsidHlwZSIsInRpbWUiLDMsInZhbHVlQ2hhbmdlIiwib25JbnB1dEV2ZW50IiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwidmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLCJ0eXBlIiwidGltZSIsMywib25JbnB1dEV2ZW50IiwiZGlzYWJsZVNvZnRzZWxlY3QiLCJpbnB1dElkIiwi''@;'; put 'put ''dmFsdWUiXSxbImxhYmVsIiwiVmFsdWUiLDMsInNlbGVjdGVkTGFiZWxDaGFuZ2UiLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCIsIm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUiLCJzZWNvbmRMYWJlbCIsImVtaXRPbmx5U2VsZWN0ZWQiLCJpbnB1dElkIiwidmFsdWUiLCJlbmFibGVM''@;'; put 'put ''b2FkTW9yZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl0sWzMsInZhbHVlIiw0LCJuZ0lmIl0sWyJsYWJlbCIsIlZhbHVlIiwzLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCIsIm9uQXV0b2NvbXBsZXRlTG9hZGluZ01vcmUiLCJpbnB1dElkIiwidmFs''@;'; put 'put ''dWUiLCJlbmFibGVMb2FkTW9yZSIsImRpc2FibGVkIl0sWzEsImluLXZhbHVlcy1tb2RhbCIsMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjbGFzcyIsIm5vLXZhbHVlcyIsNCwibmdJZiJdLFsiY2xhc3Mi''@;'; put 'put ''LCJmb3JtLWJsb2NrIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWzEsIm5vLXZhbHVlcyJdLFsxLCJmb3JtLWJsb2NrIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJDaGVja2JveCIsIiIsMywi''@;'; put 'put ''bmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXtpZigxJmQpe2NvbnN0IGY9U24oKTtnZSgwLCJkaXYiLDQpKDEsImRpdiIsNSkoMiwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgzLCJpbnB1dCIsNiksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKFMp''@;'; put 'put ''e3JldHVybiBfdChmKSxHcihoLmR5bmFtaWNXaGVyZUNsYXVzZSxTKXx8KGguZHluYW1pY1doZXJlQ2xhdXNlPVMpLGJ0KFMpfSksbWUoKSxnZSg0LCJsYWJlbCIsNyksUGUoNSwiRHluYW1pYyB3aGVyZSBjbGF1c2UiKSxtZSgpKCkoKSxnZSg2LCJkaXYiLDgpKDcsImNsci1jaGVja2JveC13''@;'; put 'put ''cmFwcGVyIikoOCwiaW5wdXQiLDkpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC51c2VQaWNrZXJzLFMpfHwoaC51c2VQaWNrZXJzPVMpLGJ0KFMpfSksSXQoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC51c2VQaWNrZXJzQ2hh''@;'; put 'put ''bmdlKCkpfSksbWUoKSxnZSg5LCJsYWJlbCIsNyksUGUoMTAsIiBVc2UgcGlja2VycyAiKSxtZSgpKCkoKSgpLGdlKDExLCJkaXYiLDEwKSgxMiwiZGl2IiwxMSkoMTMsImNsci1zZWxlY3QtY29udGFpbmVyIikoMTQsImxhYmVsIiksUGUoMTUsIkdyb3VwIGxvZ2ljIiksbWUoKSxnZSgxNiwi''@;'; put 'put ''c2VsZWN0IiwxMiksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLmdyb3VwTG9naWMsUyl8fChoLmdyb3VwTG9naWM9UyksYnQoUyl9KSxJdCgibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5zZXRHcm91cExvZ2ljKGgu''@;'; put 'put ''Z3JvdXBMb2dpYykpfSksZ3QoMTcsU2h0LDIsMiwib3B0aW9uIiwxMyksbWUoKSgpKCksZ2UoMTgsImRpdiIsMTQpKDE5LCJwcmUiLDE1KSxQZSgyMCwiICAgICAgIiksZ3QoMjEsTWh0LDQsMCwiZGl2IiwxNiksUGUoMjIsIlxuXG4gICAgICAiKSxnZSgyMywiY29kZSIsMTcpLFBlKDI0KSxt''@;'; put 'put ''ZSgpLFBlKDI1LCJcbiAgICAiKSxtZSgpKCkoKSxnZSgyNiwiZGl2IiwxOCkoMjcsImRpdiIsMTkpLGd0KDI4LHhodCwxLDAsImRpdiIsMjApKDI5LGpodCwxNSw4LCJkaXYiLDIxKSxtZSgpKCksZ3QoMzAsWWh0LDQsNCwibmctdGVtcGxhdGUiLG51bGwsMCxidSkoMzIsWGh0LDMsNywibmct''@;'; put 'put ''dGVtcGxhdGUiLG51bGwsMSxidSkoMzQsUWh0LDIsNSwibmctdGVtcGxhdGUiLG51bGwsMixidSkoMzYscjJ0LDksNCwibmctdGVtcGxhdGUiLG51bGwsMyxidSl9MiZkJiYoX2UoMyksWXIoIm5nTW9kZWwiLGguZHluYW1pY1doZXJlQ2xhdXNlKSxfZSg1KSxZcigibmdNb2RlbCIsaC51c2VQ''@;'; put 'put ''aWNrZXJzKSxfZSg4KSxSZSgiZGlzYWJsZWQiLChudWxsPT1oLmNsYXVzZXN8fG51bGw9PWguY2xhdXNlcy5xdWVyeU9iaj9udWxsOmguY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgpPDEpLFlyKCJuZ01vZGVsIixoLmdyb3VwTG9naWMpLF9lKCksUmUoIm5nRm9yT2YiLGgubG9naWNPcGVyYXRv''@;'; put 'put ''cnMpLF9lKDQpLFJlKCJuZ0lmIixoLndoZXJlQ2xhdXNlTG9hZGluZyksX2UoMyksbHIoaC53aGVyZUNsYXVzZSksX2UoMykscHIoImNsci1jb2wtbWQtMTAiLChudWxsPT1oLmNsYXVzZXN8fG51bGw9PWguY2xhdXNlcy5xdWVyeU9iaj9udWxsOmguY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgp''@;'; put 'put ''PjEpLF9lKCksUmUoIm5nSWYiLChudWxsPT1oLmNsYXVzZXN8fG51bGw9PWguY2xhdXNlcy5xdWVyeU9iaj9udWxsOmguY2xhdXNlcy5xdWVyeU9iai5sZW5ndGgpPjEpLF9lKCksUmUoIm5nRm9yT2YiLGguY2xhdXNlcy5xdWVyeU9iaikpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLHZkLHdoLHAz''@;'; put 'put ''LFlhLFBjLGl1LCRzLGExLFBfLHMxLFpfLFVfLEcyLCQyLHVsLFEwLFcyLF9hLHVhLGw0ZSxoeSx2aHQsX2h0XSxzdHlsZXM6WydAY2hhcnNldCAiVVRGLTgiOyAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmNsYXVzZS1sb2dpY3tiYWNrZ3JvdW5kOiMxOTJhMzB9ICBib2R5W2Nkcy10aGVtZT1k''@;'; put 'put ''YXJrXSAuY2xhdXNlLXF1ZXJ5e2JhY2tncm91bmQ6IzI2M2U0OH0gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuY2xhdXNlLWxvZ2lje2JhY2tncm91bmQ6I2U5ZTllOX0gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAuY2xhdXNlLXF1ZXJ5e2JhY2tncm91bmQ6I2ZiZjhmOH0uY29udGVudFtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xh''@;'; put 'put ''dXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1sb2dpY1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6MTVweH0uY29udGVudFtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzozMHB4IDAgMjBweCAyMHB4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3Np''@;'; put 'put ''dGlvbjpyZWxhdGl2ZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gPiAuY2xyLXJvd1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OnNw''@;'; put 'put ''YWNlLWJldHdlZW59LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdID4gLmNsci1yb3dbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCl7cGFk''@;'; put 'put ''ZGluZy1ib3R0b206MTVweDttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTYpfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5yZW1vdmUtZ3JvdXAtY2xhdXNlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MTBweDtjb2xvcjpncmF5fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YXJpYWJsZS1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3BhZGRpbmctYm90dG9tOjFweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFyaWFibGUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRhbGlzdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNvbnRlbnRbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhcmlhYmxlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWxpc3Qtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICBp''@;'; put 'put ''bnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAub3BlcmF0b3ItY29sW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAub3BlcmF0b3ItY29sW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXSAgIGNsci1zZWxlY3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDVweDttYXJnaW4tdG9wOjA7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAg''@;'; put 'put ''LmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtwYWRkaW5nLWJvdHRvbToxcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFp''@;'; put 'put ''bmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY2hlY2tib3gtdmFsc1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtwYWRkaW5nOjAgNXB4O2JvcmRlci1ib3R0b206''@;'; put 'put ''MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjMpfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNo''@;'; put 'put ''ZWNrYm94LXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWNoZWNrYm94LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNl''@;'; put 'put ''LXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNoZWNrYm94LXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDoxMjBweDtvdmVyZmxvdy15OnNjcm9sbH0uY29udGVu''@;'; put 'put ''dFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQtdmFsc1tfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQt''@;'; put 'put ''dmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zaW5nbGUtZmllbGQtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpub25lfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''bGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRh''@;'; put 'put ''aW5lciAuY2xyLWlucHV0LXdyYXBwZXIgLmNsci1pbnB1dC1ncm91cHt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1j''@;'; put 'put ''b2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnNpbmdsZS1maWVsZC12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7cGFkZGlu''@;'; put 'put ''Zy1yaWdodDoxN3B4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''cmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXJ7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXJ7bWF4LXdpZHRoOm5vbmV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNs''@;'; put 'put ''YXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNs''@;'; put 'put ''ci1pbnB1dC13cmFwcGVyIC5jbHItaW5wdXQtZ3JvdXB7d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjEwcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5j''@;'; put 'put ''bGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAucmFuZ2UtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAuZnJvbVtfbmdjb250ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29u''@;'; put 'put ''dGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAu''@;'; put 'put ''Y2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1j''@;'; put 'put ''b250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b1tfbmdjb250ZW50LSVDT01QJV17bWluLXdpZHRoOjEw''@;'; put 'put ''MHB4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLnJhbmdlLXZhbHNbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLmZyb21bX25nY29udGVudC0lQ09NUCVdID4gaW5wdXRbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b1tfbmdjb250ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNl''@;'; put 'put ''cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5mcm9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0''@;'; put 'put ''W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5yYW5nZS12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b1tfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTdweH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNl''@;'; put 'put ''cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRy''@;'; put 'put ''b2wtY29udGFpbmVye3dpZHRoOjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29u''@;'; put 'put ''dGFpbnMtdmFsc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItY29udHJvbC1jb250YWluZXIgLmNsci1pbnB1dC13cmFwcGVye21heC13aWR0aDpub25lfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xh''@;'; put 'put ''dXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC52YWx1ZS1jb2xbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRhaW5zLXZhbHNbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlciAuY2xyLWlucHV0LWdyb3Vwe3dpZHRo''@;'; put 'put ''OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWNvbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGFpbnMtdmFsc1tfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gPiBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtY29s''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250YWlucy12YWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDoxN3B4fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2VzLWNv''@;'; put 'put ''bnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGF1c2UtYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7ZmxleC1kaXJlY3Rpb246cm93O2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcn0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNsYXVzZS1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xhdXNlLWJ1dHRvbnNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6YXV0b30uaW52YWxpZC1jbGF1c2VbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjZDk0YjMxfS5jbGF1c2Utcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46''@;'; put 'put ''MH0uY2xhdXNlLXJvd1tfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7cG9zaXRpb246cmVsYXRpdmU7Y29udGVudDoiIjtoZWlnaHQ6LjQxNjY3cmVtO3dpZHRoOi40MTY2N3JlbTt0b3A6LjI5MTY3cmVtO3JpZ2h0Oi4yNXJlbTtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4''@;'; put 'put ''bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmdcXDIwMjYlMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVw''@;'; put 'put ''ZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MH0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5saW5lLW51bWJlcnN7Ym9yZGVyLWNvbG9yOiM5ODk3OTchaW1wb3J0YW50fXByZVtjbGFzcyo9bGFuZ3VhZ2UtXVtfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17cGFkZGluZzo4cHg7bWFyZ2luOjA7Ym9yZGVyLXJhZGl1czoxcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi1oZWlnaHQ6NjZweDtwb3NpdGlvbjpyZWxhdGl2ZX1wcmVbY2xhc3MqPWxhbmd1YWdlLV1bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgc3Bhbi5zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7dG9wOjEwcHh9cHJlW2NsYXNzKj1sYW5ndWFnZS1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNvZGVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOnByZS13cmFw''@;'; put 'put ''O3dvcmQtYnJlYWs6YnJlYWstd29yZH0uaW5wdXQtdmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MHB4O2JhY2tncm91bmQ6I2ZiZjhmODtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOTk5OTk5fWNsci1kYXRlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoy''@;'; put 'put ''cHghaW1wb3J0YW50fWlucHV0W3R5cGU9dGltZV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2IzYjNiM31pbnB1dFt0eXBlPXRpbWVdW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lOm5v''@;'; put 'put ''bmV9LmluLXZhbHVlcy1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAubW9kYWwtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZDhkOGQ4O21hcmdpbi10b3A6MTBweH0ucHJvZ3Jlc3NbX25nY29udGVudC0lQ09NUCVdLCAucHJvZ3Jlc3Mtc3RhdGlj''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3dpZHRoOjEwMCU7aGVpZ2h0OjRweDt0b3A6M3B4fSddfSl9fXJldHVybiBsfSkoKSxvcD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fW9uQ2xpY2soYSl7YS50YXJnZXQuZm9jdXMoKX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1ZGlyPWdyKHt0eXBlOmwsc2VsZWN0b3JzOltbIiIsImFwcFN0ZWFsRm9jdXMiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MSZkJiZJdCgiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KHYpe3JldHVybiBoLm9uQ2xpY2sodil9KX19KX19cmV0dXJuIGx9KSgpO2NvbnN0IGkydD1bInNlYXJjaExpYlRyZWVJbnB1dCJdO2Z1bmN0aW9uIG8ydChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDExKX1mdW5jdGlvbiBzMnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJj''@;'; put 'put ''bHItaWNvbiIsMTIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBoLmxpYnJhcmllc1NlYXJjaD0iIixidChoLmxpYnJhcnlPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIGEydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10''@;'; put 'put ''cmVlLW5vZGUiLDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDgsMCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5saWJyYXJpZXNTZWFyY2gsaCl8fChmLmxpYnJhcmllc1NlYXJjaD1oKSxidChoKX0pLEl0KCJrZXl1cCIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5saWJyYXJ5T25GaWx0ZXIoKSl9KSxtZSgpLGd0KDQsbzJ0LDEsMCwiY2xyLWljb24iLDkpKDUsczJ0LDEsMCwiY2xyLWljb24iLDEwKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDMpLGQ9TmUoKTtfZSgyKSxZcigibmdNb2RlbCIsZC5s''@;'; put 'put ''aWJyYXJpZXNTZWFyY2gpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gbDJ0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMTEpfWZ1bmN0aW9uIGMydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1Tbigp''@;'; put 'put ''O2dlKDAsImNsci1pY29uIiwxMiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpLE5lKCk7Y29uc3QgaD1HaSgzKSxmPU5lKDIpLiRpbXBsaWNpdCx2PU5lKCk7cmV0dXJuIGgudmFsdWU9IiIsZi5zZWFyY2hTdHJpbmc9IiIsYnQodi50cmVlT25GaWx0ZXIoZiwidGFibGVzLlRBQkxFTkFN''@;'; put 'put ''RSIpKX0pLG1lKCl9fWZ1bmN0aW9uIHUydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDYpKDEsImRpdiIsNykoMiwiaW5wdXQiLDE4LDIpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpLiRpbXBsaWNpdDty''@;'; put 'put ''ZXR1cm4gR3IoZi5zZWFyY2hTdHJpbmcsaCl8fChmLnNlYXJjaFN0cmluZz1oKSxidChoKX0pLEl0KCJrZXl1cCIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS50cmVlT25GaWx0ZXIoaCwidGFibGVzIikpfSksbWUoKSxndCg0LGwydCwx''@;'; put 'put ''LDAsImNsci1pY29uIiw5KSg1LGMydCwxLDAsImNsci1pY29uIiwxMCksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1HaSgzKSxkPU5lKDIpLiRpbXBsaWNpdDtfZSgyKSxZcigibmdNb2RlbCIsZC5zZWFyY2hTdHJpbmcpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJl''@;'; put 'put ''KCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gZDJ0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMjYpfWZ1bmN0aW9uIGgydChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDI3KX1mdW5jdGlvbiBmMnQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiksUGUoMSwiIFRvIHVubG9j''@;'; put 'put ''ayBhbGwgdGFibGVzLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIiksbWUoKSl9ZnVuY3Rpb24gcDJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMjgpLGd0KDEsZjJ0LDIsMCwic3BhbiIsMjUpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLm5n''@;'; put 'put ''VmFyO19lKCksUmUoIm5nSWYiLGEpfX1mdW5jdGlvbiBnMnQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwxMSl9ZnVuY3Rpb24gbTJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDEyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSksTmUoKTtjb25zdCBo''@;'; put 'put ''PUdpKDMpLGY9TmUoMykuJGltcGxpY2l0LHY9TmUoMyk7cmV0dXJuIGgudmFsdWU9IiIsZi5zZWFyY2hTdHJpbmc9IiIsYnQodi50cmVlT25GaWx0ZXIoZiwiY29sdW1ucy5DT0xOQU1FIikpfSksbWUoKX19ZnVuY3Rpb24gdjJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xy''@;'; put 'put ''LXRyZWUtbm9kZSIsNikoMSwiZGl2Iiw3KSgyLCJpbnB1dCIsMjksMiksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMykuJGltcGxpY2l0O3JldHVybiBHcihmLnNlYXJjaFN0cmluZyxoKXx8KGYuc2VhcmNoU3RyaW5nPWgpLGJ0KGgpfSksSXQoImtl''@;'; put 'put ''eXVwIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMykuJGltcGxpY2l0O3JldHVybiBidChOZSgzKS50cmVlT25GaWx0ZXIoaCwiY29sdW1ucy5DT0xOQU1FIikpfSksbWUoKSxndCg0LGcydCwxLDAsImNsci1pY29uIiw5KSg1LG0ydCwxLDAsImNsci1pY29uIiwxMCksbWUoKSgpfWlm''@;'; put 'put ''KDImbCl7Y29uc3QgYT1HaSgzKSxkPU5lKDMpLiRpbXBsaWNpdDtfZSgyKSxZcigibmdNb2RlbCIsZC5zZWFyY2hTdHJpbmcpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gXzJ0KGwsYyl7aWYoMSZs''@;'; put 'put ''KXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsMzApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdCxmPU5lKDMpLiRpbXBsaWNpdCx2PU5lKDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5jb2x1bW5PbkNsaWNrKGgs''@;'; put 'put ''dixmKSl9KSxZdCgyLCJjbHItaWNvbiIsMzEpLFBlKDMpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSg2KTtfZSgpLHByKCJjb2x1bW4tYWN0aXZlIixkLmxpYkNvbHVtbkFjdGl2ZShhLkNPTFVSSSkpLF9lKDIpLG1yKCIgIixhLkNPTE5BTUUsIiAiKX19ZnVuY3Rp''@;'; put 'put ''b24gYjJ0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSx2MnQsNiwzLCJjbHItdHJlZS1ub2RlIiwzKSgyLF8ydCw0LDMsImNsci10cmVlLW5vZGUiLDQpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgyKS4kaW1wbGljaXQ7X2UoKSxSZSgibmdJZiIsYS5jb2x1bW5zKSxfZSgpLFJlKCJuZ0Zvck9m''@;'; put 'put ''IixhLmNvbHVtbnMpfX1mdW5jdGlvbiB5MnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdG9vbHRpcCIpKDEsImJ1dHRvbiIsMjApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLm5nVmFyLGY9TmUoKS4kaW1wbGljaXQsdj1OZSgyKS4kaW1wbGljaXQs''@;'; put 'put ''Uz1OZSgpO3JldHVybiBidChoPyIiOlMudGFibGVPbkNsaWNrKGYuVEFCTEVVUkksZix2KSl9KSxWcigyLDIxKSxndCgzLGQydCwxLDAsImNsci1pY29uIiwyMikoNCxoMnQsMSwwLCJjbHItaWNvbiIsMjMpLEJyKCksUGUoNSksbWUoKSxndCg2LHAydCwyLDEsImNsci10b29sdGlwLWNvbnRl''@;'; put 'put ''bnQiLDI0KSg3LGIydCwzLDIsIm5nLWNvbnRhaW5lciIsMjUpLG1lKCl9aWYoMiZsKXtjb25zdCBhPWMubmdWYXIsZD1OZSgpLiRpbXBsaWNpdCxoPU5lKDIpLiRpbXBsaWNpdCxmPU5lKCk7X2UoKSxwcigiZGMtbG9ja2VkLWNvbnRyb2wiLGEpKCJhY3RpdmUiLGYubGliVGFiQWN0aXZlKGgu''@;'; put 'put ''TElCUkFSWVJFRixkKSksX2UoKSxSZSgibmdTd2l0Y2giLGQuaW5jbHVkZXMoIi1GQyIpKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCEwKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCExKSxfZSgpLG1yKCIgIixkLnJlcGxhY2UoIi1GQyIsIiIpLCIgIiksX2UoMiksUmUoIm5nSWYiLGYuaGFz''@;'; put 'put ''Q29sdW1ucyl9fWZ1bmN0aW9uIHcydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDE0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSkuJGltcGxpY2l0LHY9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChOZSgpLnRyZWVOb2RlQ2xp''@;'; put 'put ''Y2tlZChoLGYsdi50YWJsZXMpKX0pLFdyKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYuZXhwYW5kZWQsaCl8fChmLmV4cGFuZGVkPWgpLGJ0KGgpfSksZ3QoMSx5MnQsOCw5LCJjbHItdG9vbHRpcCIsMTkpLG1lKCl9''@;'; put 'put ''aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9Yy5pbmRleCxoPU5lKDMpO3ByKCJjbHItZXhwYW5kZWQiLGEuZXhwYW5kZWQpLFlyKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCksUmUoImNsckxvYWRpbmciLGEubG9hZGluZ0NvbHVtbnMmJiFhLmNvbHVtbnMpLF9lKCksUmUoIm5nVmFy''@;'; put 'put ''IixkKzE+aC5saWNlbmNlU3RhdGUudmFsdWUudGFibGVzX2luX2xpYnJhcnlfbGltaXQpfX1mdW5jdGlvbiBDMnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiwxNCwxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1w''@;'; put 'put ''bGljaXQsdj1OZSgpO3JldHVybiBidCh2LnRyZWVOb2RlQ2xpY2tlZChoLGYsdi5saWJyYXJ5TGlzdCkpfSksV3IoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuJGltcGxpY2l0O3JldHVybiBHcihmLmV4cGFuZGVkLGgpfHwoZi5leHBhbmRlZD1o''@;'; put 'put ''KSxidChoKX0pLGdlKDIsInAiLDE1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1HaSgxKSxmPU5lKCkuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gdi5saWI9Zi5MSUJSQVJZSUQsYnQodi5saWJyYXJ5T25DbGljayh2LmxpYnx8IiIsZixoKSl9KSxZdCgzLCJjbHItaWNv''@;'; put 'put ''biIsMTYpLFBlKDQpLG1lKCksZ3QoNSx1MnQsNiwzLCJjbHItdHJlZS1ub2RlIiwzKSg2LHcydCwyLDUsImNsci10cmVlLW5vZGUiLDE3KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtwcigiY2xyLWV4cGFuZGVkIixhLmV4cGFuZGVkKSxZcigiY2xyRXhwYW5kZWQiLGEu''@;'; put 'put ''ZXhwYW5kZWQpLFJlKCJjbHJMb2FkaW5nIixhLmxvYWRpbmdUYWJsZXMmJiFhLnRhYmxlcyksX2UoNCksbXIoIiAiLGEuTElCUkFSWU5BTUUsIiAiKSxfZSgpLFJlKCJuZ0lmIixhLnRhYmxlcyksX2UoKSxSZSgibmdGb3JPZiIsYS50YWJsZXMpfX1mdW5jdGlvbiBTMnQobCxjKXtpZigxJmwm''@;'; put 'put ''JihWcigwKSxndCgxLEMydCw3LDcsImNsci10cmVlLW5vZGUiLDEzKSxCcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdJZiIsIWEuaGlkZGVuJiZhLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIE0ydChsLGMpezEmbCYmKGdlKDAsImRpdiIsMzIpKDEsInNwYW4iLDMz''@;'; put 'put ''KSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpKCkpfWxldCB4MnQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMuaGVscGVyU2VydmljZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9ZCx0aGlzLnNlYXJjaExpYklucHV0TGlzdD1uZXcgeDEsdGhpcy50YWJsZU9uQ2xpY2tFbWl0''@;'; put 'put ''dGVyPW5ldyBEcix0aGlzLmxpYnJhcnlPbkNsaWNrRW1pdHRlcj1uZXcgRHIsdGhpcy5oYXNDb2x1bW5zPSExLHRoaXMucGFnaW5nPSEwLHRoaXMubGlicmFyaWVzU2VhcmNoPSIiLHRoaXMubGliPSIiLHRoaXMudGFibGU9IiIsdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEsdGhpcy5saWNlbmNl''@;'; put 'put ''U3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGV9bmdPbkluaXQoKXt9bmdBZnRlclZpZXdJbml0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuc2VhcmNoTGliSW5wdXRMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX0pfW5nT25DaGFuZ2VzKGEpe2EubGlicmFyeUxp''@;'; put 'put ''c3Q/LmN1cnJlbnRWYWx1ZSYmdGhpcy5saWJyYXJ5TGlzdCYmdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCl9dHJlZU9uRmlsdGVyKGEsZCl7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihhLGQpfWxpYnJhcnlPbkZpbHRlcigpe3Ro''@;'; put 'put ''aXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJ5TGlzdCx0aGlzLmxpYnJhcmllc1NlYXJjaCwiTElCUkFSWU5BTUUiKSxIbi5saW5lYWdlLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH10cmVlTm9kZUNsaWNrZWQoYSxkLGgpeyJDb2xsYXBz''@;'; put 'put ''ZSI9PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyhoLGQpfWxpYnJhcnlPbkNsaWNrKGEsZCxoKXtkLmluRm9yZWdyb3VuZD0hMDtjb25zdCBmPSgpPT5zZXRUaW1lb3V0KCgpPT5oLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnF1''@;'; put 'put ''ZXJ5U2VsZWN0b3IoImlucHV0IikuZm9jdXMoKSk7aWYoZC50YWJsZXMpZC5leHBhbmRlZD0hZC5leHBhbmRlZCx0aGlzLmxpYnJhcnlPbkNsaWNrRW1pdHRlci5lbWl0KHtsaWJpZDphLGxpYnJhcnk6ZCx0YWJsZXNMb2FkZWQ6ITB9KTtlbHNle2QubG9hZGluZ1RhYmxlcz0hMCx0aGlzLmxp''@;'; put 'put ''YnJhcnlPbkNsaWNrRW1pdHRlci5lbWl0KHtsaWJpZDphLGxpYnJhcnk6ZCx0YWJsZXNMb2FkZWQ6ITF9KTtjb25zdCB2PXNldEludGVydmFsKCgpPT57ZC5sb2FkaW5nVGFibGVzfHwoZigpLGNsZWFySW50ZXJ2YWwodikpfSw1MDApfWQuZXhwYW5kZWQmJmYoKSx0aGlzLmNvbGxhcHNlVHJl''@;'; put 'put ''ZUl0ZW1zKHRoaXMubGlicmFyeUxpc3QsZCl9dGFibGVPbkNsaWNrKGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2YuaGVscGVyU2VydmljZS5kZWJvdW5jZUNhbGwoNTAsKCk9PntmLmhhc0NvbHVtbnM/KGQuY29sdW1ucz8oZC5leHBhbmRlZD0hZC5leHBhbmRlZCwh''@;'; put 'put ''MD09PWQuZXhwYW5kZWQmJihmLnRhYmxlPWEsZi50YWJsZU9uQ2xpY2tFbWl0dGVyLmVtaXQoe3RhYmxldXJpOmEsbGliVGFibGU6ZCxsaWJyYXJ5OmgsY29sdW1uc0xvYWRlZDohMH0pKSk6KGQuZXhwYW5kZWQ9IWQuZXhwYW5kZWQsZC5sb2FkaW5nQ29sdW1ucz0hMCxmLnRhYmxlPWEsZi50''@;'; put 'put ''YWJsZU9uQ2xpY2tFbWl0dGVyLmVtaXQoe3RhYmxldXJpOmEsbGliVGFibGU6ZCxsaWJyYXJ5OmgsY29sdW1uc0xvYWRlZDohMX0pKSxmLmNvbGxhcHNlVHJlZUl0ZW1zKGgudGFibGVzLGQpKTpmLnRhYmxlT25DbGlja0VtaXR0ZXIuZW1pdCh7dGFibGV1cmk6YSxsaWJUYWJsZTpkLGxpYnJh''@;'; put 'put ''cnk6aCxjb2x1bW5zTG9hZGVkOiExfSl9KX0pKCl9Y29sdW1uT25DbGljayhhLGQsaCl7dGhpcy5saWI9ZC5MSUJSQVJZSUQsdGhpcy50YWJsZT1oLlRBQkxFVVJJLHRoaXMuY29sdW1uPWEuQ09MVVJJfWxpYlRhYkFjdGl2ZShhLGQpe3JldHVybiEoIXRoaXMubGlifHwhdGhpcy50YWJsZSkm''@;'; put 'put ''JmE9PT10aGlzLmxpYiYmZD09PXRoaXMudGFibGV9bGliQ29sdW1uQWN0aXZlKGEpe2lmKCF0aGlzLmNvbHVtbilyZXR1cm4hMTtsZXQgZD1hLnNwbGl0KCJcXCIpLGg9dGhpcy5jb2x1bW4uc3BsaXQoIlxcIik7cmV0dXJuIGRbZC5sZW5ndGgtMV09PWhbaC5sZW5ndGgtMV19Y29sbGFwc2VU''@;'; put 'put ''cmVlSXRlbXMoYSxkKXthLmZvckVhY2goaD0+e0pTT04uc3RyaW5naWZ5KGgpIT09SlNPTi5zdHJpbmdpZnkoZCkmJihoLmV4cGFuZGVkPSExKX0pfWxvYWRNb3JlTGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmllc1BhZ2luZz0hMCx0aGlzLmhlbHBlclNl''@;'; put 'put ''cnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxpYnJhcnlMaXN0LCEwKSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSl9aGFuZGxlU2Nyb2xsKGEpe2xldCBkPWEudGFyZ2V0O2QmJmQuc2Nyb2xsVG9wPj1kLnNjcm9sbEhlaWdodC1kLm9mZnNldEhlaWdodC0xMCYmdGhpcy5sb2FkTW9yZUxp''@;'; put 'put ''YnJhcmllcygpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGV1KSxKZShBMCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siZGMtdHJlZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oZCxoKXtpZigxJmQm''@;'; put 'put ''JkhvKGkydCw1KSwyJmQpe2xldCBmO2xpKGY9Y2koKSkmJihoLnNlYXJjaExpYklucHV0TGlzdD1mKX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbihkLGgpezEmZCYmSXQoInNjcm9sbCIsZnVuY3Rpb24odil7cmV0dXJuIGguaGFuZGxlU2Nyb2xsKHYpfSl9LGlucHV0czp7aGFzQ29sdW1uczoi''@;'; put 'put ''aGFzQ29sdW1ucyIscGFnaW5nOiJwYWdpbmciLGxpYnJhcnlMaXN0OiJsaWJyYXJ5TGlzdCJ9LG91dHB1dHM6e3RhYmxlT25DbGlja0VtaXR0ZXI6InRhYmxlT25DbGlja0VtaXR0ZXIiLGxpYnJhcnlPbkNsaWNrRW1pdHRlcjoibGlicmFyeU9uQ2xpY2tFbWl0dGVyIn0sZmVhdHVyZXM6W0ph''@;'; put 'put ''XSxkZWNsczo0LHZhcnM6Myxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJsaWJUcmVlTm9kZSIsIiJdLFsic2VhcmNoVHJlZUlucHV0IiwiIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJ3LTEwMCB0''@;'; put 'put ''ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkxpYnJhcmllcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywi''@;'; put 'put ''bmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJj''@;'; put 'put ''bHJMb2FkaW5nIiwiY2xyLWV4cGFuZGVkIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJdLFszLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiwiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hh''@;'; put 'put ''cGUiLCJyYWNrLXNlcnZlciJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFi''@;'; put 'put ''bGVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWzQsIm5nVmFyIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsMSwiY2xyLXRyZWVub2RlLWxpbmsiLDMsImNsaWNrIl0sWzMsIm5nU3dpdGNoIl0sWyJz''@;'; put 'put ''aGFwZSIsImJvbHQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic2hhcGUiLCJ0YWJsZSIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWzQsIm5nSWYiXSxbInNoYXBlIiwiYm9sdCJdLFsic2hhcGUiLCJ0''@;'; put 'put ''YWJsZSJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tcmlnaHQiLCJjbHJTaXplIiwibGciXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiQ29sdW1ucyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIs''@;'; put 'put ''ImtleXVwIiwibmdNb2RlbCJdLFsxLCJjbHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbInNoYXBlIiwib2JqZWN0cyJdLFsxLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiY2xy''@;'; put 'put ''LXRyZWUiKSxndCgxLGEydCw2LDMsImNsci10cmVlLW5vZGUiLDMpKDIsUzJ0LDIsMSwibmctY29udGFpbmVyIiw0KSxtZSgpLGd0KDMsTTJ0LDMsMCwiZGl2Iiw1KSksMiZkJiYoX2UoKSxSZSgibmdJZiIsaC5saWJyYXJ5TGlzdCksX2UoKSxSZSgibmdGb3JPZiIsaC5saWJyYXJ5TGlzdCks''@;'; put 'put ''X2UoKSxSZSgibmdJZiIsaC5saWJyYXJpZXNQYWdpbmcpKX0sZGVwZW5kZW5jaWVzOltWcywkaSx3aCxwMyxBZCxIMSx5NCxZYSxsMCxraCxFZCxGOCxIOCxOOCx1bCxfYSx1YSxoeSxvcF0sc3R5bGVzOlsiY2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH1jbHItdHJlZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyOmZvY3VzIC5jbHItdHJlZW5vZGUtbGlua3tiYWNrZ3JvdW5kOiNlOGU4ZTg7YmFja2dyb3VuZDp2YXIoLS1jbHItdHJl''@;'; put 'put ''ZS1saW5rLWhvdmVyLWNvbG9yLCAjZThlOGU4KTt0ZXh0LWRlY29yYXRpb246bm9uZX0iXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgRTJ0PVsicmVzaXplQm94Il0sVDJ0PVsiZHJhZ0hhbmRsZUNvcm5lciJdLGsydD0obCxjLGEpPT4oe2NvbEhlYWRlcnNIaWRkZW46bCxjb2xIZWFkZXJzVmlz''@;'; put 'put ''aWJsZTpjLGhlYWRlclBrczphfSksQTJ0PShsLGMpPT4oe3g6bCx5OmN9KTtmdW5jdGlvbiBEMnQobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiwzNyksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxfdSgiVG8gdW5sb2NrIG1vcmUgdGhlbiAiLGEubGljZW5jZVN0YXRlLnZh''@;'; put 'put ''bHVlLnZpZXdib3hfbGltaXQsIiAiLDE9PT1hLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0PyJ2aWV3Ym94Ijoidmlld2JveGVzIiwiLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKX19ZnVuY3Rpb24gSTJ0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwzOCksWXQo''@;'; put 'put ''MSwiY2xyLXNwaW5uZXIiLDM5KSxtZSgpKX1mdW5jdGlvbiBSMnQobCxjKXsxJmwmJihnZSgwLCJwIiw0MCksUGUoMSwiIFZpZXdib3ggb3BlbiBsaW1pdCByZWFjaGVkICIpLG1lKCkpfWZ1bmN0aW9uIEwydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRjLXRyZWUiLDQxKSxJ''@;'; put 'put ''dCgibGlicmFyeU9uQ2xpY2tFbWl0dGVyIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5saWJyYXJ5T25DbGljayhoKSl9KSgidGFibGVPbkNsaWNrRW1pdHRlciIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkudGFibGVPbkNsaWNrKGgpKX0pLG1lKCl9MiZsJiZS''@;'; put 'put ''ZSgibGlicmFyeUxpc3QiLE5lKCkubGlicmFyaWVzKX1mdW5jdGlvbiBPMnQobCxjKXsxJmwmJihnZSgwLCJwIiw0MiksUGUoMSwiIFBpY2sgdGFibGUgZnJvbSB0aGUgbGlzdCBvbiB0aGUgbGVmdCAiKSxtZSgpKX1mdW5jdGlvbiBQMnQobCxjKXsxJmwmJll0KDAsImNsci1zcGlubmVyIiw1''@;'; put 'put ''MCl9ZnVuY3Rpb24gRjJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYSIsMTcpLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBsaWNpdCx2PU5lKCk7cmV0dXJuIHYubWluaW1pemUoZiksYnQodi5zdG9wUHJvcGFnYXRpb24oaCkpfSksWXQo''@;'; put 'put ''MSwiY2xyLWljb24iLDIwKSxnZSgyLCJzcGFuIiwxOSksUGUoMywiTWluaW1pemUgdmlld2JveCIpLG1lKCkoKX19ZnVuY3Rpb24gTjJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYSIsMTcpLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBs''@;'; put 'put ''aWNpdCx2PU5lKCk7cmV0dXJuIHYucmVzdG9yZShmKSxidCh2LnN0b3BQcm9wYWdhdGlvbihoKSl9KSxZdCgxLCJjbHItaWNvbiIsMjEpLGdlKDIsInNwYW4iLDE5KSxQZSgzLCJSZXN0b3JlIHZpZXdib3giKSxtZSgpKCl9fWZ1bmN0aW9uIEgydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1Tbigp''@;'; put 'put ''O2dlKDAsImRpdiIsNDMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5zZWxlY3RWaWV3Ym94KGgpKX0pLGdlKDEsImRpdiIsNDQpLFBlKDIpLGd0KDMsUDJ0LDEsMCwiY2xyLXNwaW5uZXIiLDQ1KSxtZSgpLGdlKDQsImRpdiIp''@;'; put 'put ''KDUsImEiLDQ2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSkuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gdi5yZXNldFBvc1NpemUoZiksYnQodi5zdG9wUHJvcGFnYXRpb24oaCkpfSksWXQoNiwiY2xyLWljb24iLDQ3KSxnZSg3LCJzcGFuIiwxOSksUGUoOCwiUmVzZXQg''@;'; put 'put ''cG9zaXRpb24gYW5kIHNpemUiKSxtZSgpKCksZ3QoOSxGMnQsNCwwLCJhIiw0OCkoMTAsTjJ0LDQsMCwiYSIsNDgpLGdlKDExLCJhIiwxNyksSXQoImNsaWNrIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdCx2PU5lKCk7cmV0dXJuIHYuY2xvc2UoZiksYnQodi5zdG9wUHJv''@;'; put 'put ''cGFnYXRpb24oaCkpfSksWXQoMTIsImNsci1pY29uIiw0OSksZ2UoMTMsInNwYW4iLDE5KSxQZSgxNCwiQ2xvc2Ugdmlld2JveCIpLG1lKCkoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKTtwcigic2VsZWN0ZWQiLChudWxsPT1kLnNlbGVjdGVkVmlld2JveD9udWxs''@;'; put 'put ''OmQuc2VsZWN0ZWRWaWV3Ym94LmlkKT09PWEuaWQpLF9lKDIpLEgyKCIgIyIsYS5pZCwiICIsYS5saWJyYXJ5LCIuIixhLnRhYmxlLCIgIiksX2UoKSxSZSgibmdJZiIsYS5sb2FkaW5nRGF0YSksX2UoMikscHIoImRpc2FibGVkIiwwPT09YS54JiYwPT09YS55KSxfZSg0KSxSZSgibmdJZiIs''@;'; put 'put ''IWEubWluaW1pemVkKSxfZSgpLFJlKCJuZ0lmIixhLm1pbmltaXplZCl9fWZ1bmN0aW9uIFYydChsLGMpe2lmKDEmbCYmKGdlKDAsIm9wdGlvbiIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIEIydChsLGMpe2lmKDEm''@;'; put 'put ''bCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsImRpdiIsNTMpKDIsImFwcC1hdXRvY29tcGxldGUiLDU0LDApLEl0KCJ2YWx1ZUNoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1HaSgzKSx2PU5lKCkubmdWYXI7cmV0dXJuIGJ0KE5lKCkub25Db2xzZWFyY2hDaGFuZ2UoZixoLHYu''@;'; put 'put ''Y29sSGVhZGVyc0hpZGRlbikpfSksZ3QoNCxWMnQsMiwxLCJvcHRpb24iLDU1KSxtZSgpKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKS5uZ1ZhcjtfZSgyKSxSZSgiaW5wdXRJZCIsInZpZXdib3gtY29sdW1uLXNlYXJjaCIpKCJlbWl0T25seVNlbGVjdGVkIiwhMCksX2UoMiksUmUoIm5n''@;'; put 'put ''Rm9yT2YiLGEuY29sSGVhZGVyc0hpZGRlbil9fWZ1bmN0aW9uIGoydChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDYxKX1mdW5jdGlvbiB6MnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNvbiIsNjIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBo''@;'; put 'put ''PU5lKCkuJGltcGxpY2l0O3JldHVybiBidChOZSgzKS5vbkNvbFJlbW92ZShoKSl9KSxtZSgpfX1mdW5jdGlvbiBVMnQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDU4KSgxLCJzcGFuIiksUGUoMiksZ3QoMyxqMnQsMSwwLCJjbHItaWNvbiIsNTkpLG1lKCksZ3QoNCx6MnQsMSwwLCJjbHIt''@;'; put 'put ''aWNvbiIsNjApLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPU5lKDIpLm5nVmFyLGg9TmUoKTtfZWUoImNvbC1ib3ggY29sdW1uLSIsYSwiIikscHIoImN1cnNvci1kZWZhdWx0LWkiLGQuaGVhZGVyUGtzLmluY2x1ZGVzKGEpKSgicHJpbWFyeUtleUhlYWRlclN0eWxlIixkLmhl''@;'; put 'put ''YWRlclBrcy5pbmNsdWRlcyhhKSksUmUoImNka0RyYWdEYXRhIixhKSgiY2RrRHJhZ0Rpc2FibGVkIixkLmhlYWRlclBrcy5pbmNsdWRlcyhhKSksX2UoMiksX3UoIiAiLGEsIiAiLCJudW0iPT09KG51bGw9PWguc2VsZWN0ZWRWaWV3Ym94VGFibGV8fG51bGw9PWguc2VsZWN0ZWRWaWV3Ym94''@;'; put 'put ''VGFibGUuaG90VGFibGU/bnVsbDpoLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLiRkYXRhZm9ybWF0cy52YXJzW2FdLnR5cGUpPyIobnVtZXJpYykiOiIiLCIgIiksX2UoKSxSZSgibmdJZiIsZC5oZWFkZXJQa3MuaW5jbHVkZXMoYSkpLF9lKCksUmUoIm5nSWYiLCFkLmhlYWRlclBr''@;'; put 'put ''cy5pbmNsdWRlcyhhKSl9fWZ1bmN0aW9uIFoydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1ZyKDApLGdlKDEsInAiLDEwKSxQZSgyLCJDb2x1bW5zIFRvIERpc3BsYXkgKGRyYWcgYW5kIHJlLW9yZGVyKSIpLG1lKCksZ2UoMywiZGl2Iiw1NiksSXQoImNka0Ryb3BMaXN0RHJvcHBlZCIs''@;'; put 'put ''ZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLmNvbHVtbnNEcm9wKGgpKX0pLGd0KDQsVTJ0LDUsMTMsImRpdiIsNTcpLG1lKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoKS5uZ1ZhcjtfZSgzKSxSZSgiY2RrRHJvcExpc3REYXRhIixhLmNvbEhlYWRlcnNWaXNpYmxlKSxfZSgp''@;'; put 'put ''LFJlKCJuZ0Zvck9mIixhLmNvbEhlYWRlcnNWaXNpYmxlKX19ZnVuY3Rpb24gWTJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw1MSksZ3QoMSxCMnQsNSwzLCJuZy1jb250YWluZXIiLDUyKSgyLFoydCw1LDIsIm5nLWNvbnRhaW5lciIsNTIpLG1lKCkpLDImbCl7Y29uc3QgYT1jLm5nVmFy''@;'; put 'put ''O19lKCksUmUoIm5nSWYiLGEuY29sSGVhZGVyc0hpZGRlbiksX2UoKSxSZSgibmdJZiIsYS5jb2xIZWFkZXJzVmlzaWJsZSl9fWZ1bmN0aW9uIFcydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiw4NiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0''@;'; put 'put ''IGg9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkuY29sbGFwc2UoaCkpfSksbWUoKX19ZnVuY3Rpb24gRzJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDg3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpLiRpbXBsaWNpdDty''@;'; put 'put ''ZXR1cm4gYnQoTmUoKS5leHBhbmQoaCkpfSksbWUoKX19ZnVuY3Rpb24gJDJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDg4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpLiRpbXBsaWNpdCxmPUdpKDE2KTtyZXR1cm4gYnQoTmUo''@;'; put 'put ''KS5zZWFyY2hUYWJsZShmLGgpKX0pLG1lKCl9fWZ1bmN0aW9uIHEydChsLGMpezEmbCYmKGdlKDAsInNwYW4iLDg5KSxQZSgxLCIgTG9hZGluZy4uLiAiKSxtZSgpKX1mdW5jdGlvbiBLMnQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiw5MCksUGUoMSwiTG9hZGluZy4uLiIpLG1lKCkpfWZ1bmN0''@;'; put 'put ''aW9uIFgydChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiw5MSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1HaSgxNik7cmV0dXJuIE5lKCkucmVsb2FkVGFibGVEYXRhKGgpLGJ0KGYudmFsdWU9IiIpfSksbWUo''@;'; put 'put ''KX19ZnVuY3Rpb24gSjJ0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2Iiw5NSksWXQoMSwiY2xyLXNwaW5uZXIiLDM5KSxtZSgpKX1mdW5jdGlvbiBRMnQobCxjKXtpZigxJmwmJll0KDAsImhvdC10YWJsZSIsOTYpLDImbCl7Y29uc3QgYT1OZSgpLm5nVmFyLGQ9TmUoKS4kaW1wbGljaXQsaD1OZSgp''@;'; put 'put ''O1JlKCJob3RJZCIsImhvdEluc3RhbmNlX3ZpZXdib3hfIitkLmlkKSgicmVhZE9ubHkiLCEwKSgibW9kaWZ5Q29sV2lkdGgiLGgubWF4V2lkdGhDaGVrZXIpKCJjb3B5UGFzdGUiLGgudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5jb3B5UGFzdGUpKCJjb250ZXh0TWVudSIsaC52aWV3Ym94''@;'; put 'put ''VGFibGVzW2FdLmhvdFRhYmxlLmNvbnRleHRNZW51KSgibXVsdGlDb2x1bW5Tb3J0aW5nIiwhMCkoInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0Iiw1MCkoImRhdGEiLGgudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5kYXRhKSgiY29sSGVhZGVycyIsaC52aWV3Ym94VGFibGVzW2FdLmhv''@;'; put 'put ''dFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixoLnZpZXdib3hUYWJsZXNbYV0uaG90VGFibGUuY29sdW1ucykoImZpbHRlcnMiLCEwKSgiZHJvcGRvd25NZW51IixoLnZpZXdib3hUYWJsZXNbYV0uaG90VGFibGUuZHJvcGRvd25NZW51KSgiaGVpZ2h0IixoLnZpZXdib3hUYWJsZXNbYV0u''@;'; put 'put ''aG90VGFibGUuaGVpZ2h0KSgiY2VsbHMiLGgudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5jZWxscykoIm1heFJvd3MiLGgudmlld2JveFRhYmxlc1thXS5ob3RUYWJsZS5tYXhSb3dzKSgibWFudWFsQ29sdW1uUmVzaXplIiwhMCkoImxpY2Vuc2VLZXkiLGgudmlld2JveFRhYmxlc1thXS5o''@;'; put 'put ''b3RUYWJsZS5saWNlbnNlS2V5KX19ZnVuY3Rpb24gZWZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw5MiksZ3QoMSxKMnQsMiwwLCJkaXYiLDkzKSgyLFEydCwxLDE3LCJob3QtdGFibGUiLDk0KSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy5uZ1ZhcixkPU5lKCkuJGltcGxpY2l0O2dkKCJkaXNw''@;'; put 'put ''bGF5IixkLmNvbGxhcHNlZD8ibm9uZSI6IiIpLF9lKCksUmUoIm5nSWYiLGQubG9hZGluZ0RhdGEmJmE8MCksX2UoKSxSZSgibmdJZiIsYT4tMSl9fWZ1bmN0aW9uIHRmdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNjMsMSksSXQoIm1vdXNlZG93biIsZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5mb2N1c1ZpZXdib3goaCkpfSkoImNka0RyYWdFbmRlZCIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkudmlld2JveERyYWdFbmRlZChoLGYpKX0pLGdlKDIsImRpdiIsNjQp''@;'; put 'put ''KDMsInNwYW4iLDY1KSxQZSg0KSxtZSgpLGdlKDUsImRpdiIsNjYpLGd0KDYsVzJ0LDEsMCwiY2xyLWljb24iLDY3KSg3LEcydCwxLDAsImNsci1pY29uIiw2OCksZ2UoOCwiY2xyLWljb24iLDY5KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQ7cmV0dXJu''@;'; put 'put ''IGJ0KE5lKCkubWluaW1pemUoaCkpfSksbWUoKSxnZSg5LCJjbHItaWNvbiIsNzApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5jbG9zZShoKSl9KSxtZSgpKCkoKSxnZSgxMCwic3BhbiIsNzEsMiksSXQoImNka0RyYWdNb3Zl''@;'; put 'put ''ZCIsZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS4kaW1wbGljaXQsdj1HaSgxKSxTPUdpKDExKTtyZXR1cm4gYnQoTmUoKS5kcmFnTW92ZShTLHYsZixoKSl9KSxtZSgpLGdlKDEyLCJmb3JtIiw3MikoMTMsImRpdiIsNzMpKDE0LCJkaXYiLDc0KSgxNSwiaW5wdXQiLDc1LDMpLEl0KCJrZXl1''@;'; put 'put ''cC5lbnRlciIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdCxmPUdpKDE2KTtyZXR1cm4gYnQoTmUoKS5zZWFyY2hUYWJsZShmLGgpKX0pLG1lKCksZ3QoMTcsJDJ0LDEsMCwiY2xyLWljb24iLDc2KSgxOCxxMnQsMiwwLCJzcGFuIiw3NyksbWUoKSxnZSgxOSwiY2xyLWNoZWNr''@;'; put 'put ''Ym94LWNvbnRhaW5lciIpKDIwLCJjbHItY2hlY2tib3gtd3JhcHBlciIpKDIxLCJpbnB1dCIsNzgpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5zZWFyY2hOdW1lcmljLGgpfHwoZi5zZWFyY2hOdW1lcmljPWgpLGJ0''@;'; put 'put ''KGgpfSksbWUoKSxnZSgyMiwibGFiZWwiKSxQZSgyMywiTnVtZXJpYyIpLG1lKCkoKSgpKCksZ2UoMjQsImRpdiIsNDQpLGd0KDI1LEsydCwyLDAsInNwYW4iLDc5KSgyNixYMnQsMSwwLCJjbHItaWNvbiIsODApLGdlKDI3LCJhIiw4MSksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9''@;'; put 'put ''X3QoYSkuJGltcGxpY2l0LGY9R2koMTYpO3JldHVybiBOZSgpLm9wZW5GaWx0ZXIoaCksYnQoZi52YWx1ZT0iIil9KSxZdCgyOCwiY2xyLWljb24iLDgyKSxnZSgyOSwic3BhbiIsODMpLFBlKDMwKSxtZSgpKCksZ2UoMzEsImNsci1pY29uIiw4NCksSXQoImNsaWNrIixmdW5jdGlvbigpe2Nv''@;'; put 'put ''bnN0IGg9X3QoYSkuJGltcGxpY2l0O3JldHVybiBidChOZSgpLm9wZW5UYWJsZUVkaXQoaCkpfSksbWUoKSgpKCksZ3QoMzIsZWZ0LDMsNCwiZGl2Iiw4NSksbWUoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgpO2dkKCJkaXNwbGF5IixhLm1pbmltaXplZD8ibm9uZSI6IiIp''@;'; put 'put ''KCJ3aWR0aCIsYS53aWR0aCwicHgiKSgiaGVpZ2h0IixhLmhlaWdodCwicHgiKSgicG9pbnRlci1ldmVudHMiLGEuY29sbGFwc2VkPyJub25lIjoiIikoImJveC1zaGFkb3ciLGEuY29sbGFwc2VkPyJub25lIjoiIikscHIoImZvY3VzZWQiLGEuZm9jdXNlZCksUmUoImNka0RyYWdGcmVlRHJh''@;'; put 'put ''Z1Bvc2l0aW9uIixmMygzNCxBMnQsYS54LGEueSkpKCJpZCIsInZpZXdib3hfIithLmlkKSxfZSg0KSxIMigiICMiLGEuaWQsIiAiLGEubGlicmFyeSwiLiIsYS50YWJsZSwiICIpLF9lKDIpLFJlKCJuZ0lmIiwhYS5jb2xsYXBzZWQpLF9lKCksUmUoIm5nSWYiLGEuY29sbGFwc2VkKSxfZSgz''@;'; put 'put ''KSxSZSgiaWQiLCJoYW5kbGVfdmlld2JveF8iK2EuaWQpLF9lKDIpLGdkKCJkaXNwbGF5IixhLmNvbGxhcHNlZD8ibm9uZSI6IiIpLF9lKDMpLFJlKCJ0eXBlIixhLnNlYXJjaE51bWVyaWM/Im51bWJlciI6InRleHQiKSxfZSgyKSxSZSgibmdJZiIsIWEuc2VhcmNoTG9hZGluZyksX2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsYS5zZWFyY2hMb2FkaW5nKSxfZSgzKSxZcigibmdNb2RlbCIsYS5zZWFyY2hOdW1lcmljKSxfZSg0KSxSZSgibmdJZiIsYS5sb2FkaW5nRGF0YSksX2UoKSxSZSgibmdJZiIsIWEubG9hZGluZ0RhdGEpLF9lKDIpLHByKCJmaWx0ZXItYWN0aXZlIiwiMCIhPT1hLmZpbHRlcl9w''@;'; put 'put ''ayksX2UoMiksbHIoYS5maWx0ZXJUZXh0KSxfZSgpLHByKCJkaXNhYmxlZCIsIWQudGFibGVFZGl0RXhpc3RzKGEpKSxfZSgpLFJlKCJuZ1ZhciIsZC5nZXRWaWV3Ym94VGFibGVJbmRleChhKSl9fWZ1bmN0aW9uIG5mdChsLGMpe2lmKDEmbCYmWXQoMCwiYXBwLXF1ZXJ5Iiw5Nyw0KSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9TmUoKTtSZSgidmlld2JveElkIixudWxsPT1hLmZpbHRlcmluZ1ZpZXdib3g/bnVsbDphLmZpbHRlcmluZ1ZpZXdib3guaWQpfX1sZXQgYzRlPSgoKT0+e2NsYXNzIGx7Z2V0IHZpZXdib3hNb2RhbCgpe3JldHVybiB0aGlzLl92aWV3Ym94TW9kYWx9c2V0IHZpZXdib3hNb2Rh''@;'; put 'put ''bChhKXtpZighMT09PXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3gmJmEpcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgiVmlld2JveGVzIiksdm9pZCB0aGlzLnZpZXdib3hNb2RhbENoYW5nZS5lbWl0KCExKTt0aGlzLl92aWV3Ym94TW9kYWw9YSxh''@;'; put 'put ''JiZ0aGlzLnVuc2V0U2VsZWN0ZWRWaWV3Ym94KCl9Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRLGRlLHBlKXt0aGlzLm5nWm9uZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9ZCx0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLmV2ZW50U2VydmljZT1mLHRoaXMuc2FzU3RvcmVTZXJ2aWNlPXYsdGhp''@;'; put 'put ''cy5sb2dnZXJTZXJ2aWNlPVMsdGhpcy5oZWxwZXJTZXJ2aWNlPVYsdGhpcy5yb3V0ZXI9USx0aGlzLmFjdGl2YXRlZFJvdXRlPWRlLHRoaXMuY2RmPXBlLHRoaXMuX3ZpZXdib3hNb2RhbD0hMSx0aGlzLnZpZXdib3hNb2RhbENoYW5nZT1uZXcgRHIsdGhpcy5saWJpbmZvPW51bGwsdGhpcy5s''@;'; put 'put ''aWJyYXJpZXNMb2FkaW5nPSEwLHRoaXMudmlld2JveGVzPVtdLHRoaXMuZGVmYXVsdENvbmZpZz17aWQ6LTEsbGlicmFyeToiIix0YWJsZToiIix3aWR0aDo1MDAsaGVpZ2h0OjMwMCx4OjAseToxNTAsY29sdW1uczpbXX0sdGhpcy5zYXNqc0NvbmZpZz1uZXcgeWQuU0FTanNDb25maWcsdGhp''@;'; put 'put ''cy5ob3RUYWJsZURlZmF1bHQ9e2RhdGE6W10saGVhZGVyUGtzOltdLCRkYXRhZm9ybWF0czp7fSxhbGxDb2xIZWFkZXJzOltdLGNvbEhlYWRlcnNIaWRkZW46W10sY29sSGVhZGVyc1Zpc2libGU6W10sY29sSGVhZGVyczpbXSxjb250ZXh0TWVudTpbImNvcHlfd2l0aF9jb2x1bW5faGVhZGVy''@;'; put 'put ''cyIsImNvcHlfY29sdW1uX2hlYWRlcnNfb25seSJdLGNvcHlQYXN0ZTp7Y29weUNvbHVtbkhlYWRlcnM6ITAsY29weUNvbHVtbkhlYWRlcnNPbmx5OiEwfSxjb2x1bW5zOltdLGNvbHM6W10saGVpZ2h0OiIxMDAlIixzZXR0aW5nczp7fSxoaWRkZW5Db2x1bW5zOiEwLG1hbnVhbENvbHVtbk1v''@;'; put 'put ''dmU6ITEsYWZ0ZXJHZXRDb2xIZWFkZXI6dm9pZCAwLGxpY2Vuc2VLZXk6dm9pZCAwLGRyb3Bkb3duTWVudTp2b2lkIDB9LHRoaXMudmlld2JveFRhYmxlcz1bXSx0aGlzLmZpbHRlcj0hMSx0aGlzLmZpbHRlckxvYWRpbmc9ITEsdGhpcy5udWxsVmFyaWFibGVzPSExLHRoaXMubGljZW5jZVN0''@;'; put 'put ''YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMubWF4Vmlld2JveGVzPXRoaXMubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdib3hfbGltaXQ9PT0xLzA/Njp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0fHw2LHRoaXMu''@;'; put 'put ''aG90VGFibGVSZWdpc3RlcmVyPW5ldyBXbX1uZ09uSW5pdCgpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihkPT57dGhpcy5saWJyYXJpZXM9ZC5zYXNsaWJzfSkuY2F0Y2goZD0+e3RoaXMubG9nZ2VyU2VydmljZS5lcnJvcihkKX0pLmZpbmFsbHkoKCk9Pnt0aGlzLmxp''@;'; put 'put ''YnJhcmllc0xvYWRpbmc9ITF9KSx0aGlzLl9xdWVyeT10aGlzLnNhc1N0b3JlU2VydmljZS5xdWVyeS5zdWJzY3JpYmUoZD0+e3RoaXMuY2xhdXNlcz1kLm9iaix0aGlzLmZpbHRlckxpYmRzPWQubGliZHN9KSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZp''@;'; put 'put ''ZygpLHRoaXMubGljZW5jZVNlcnZpY2UuaG90X2xpY2Vuc2Vfa2V5LnN1YnNjcmliZShkPT57dGhpcy5ob3RUYWJsZURlZmF1bHQubGljZW5zZUtleT1kfSk7Y29uc3QgYT10aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnZpZXdib3hlczthJiYoITE9PT10aGlzLmxp''@;'; put 'put ''Y2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94PyhzZXRUaW1lb3V0KCgpPT50aGlzLmV2ZW50U2VydmljZS5zaG93RGVtb0xpbWl0TW9kYWwoIkxpbmtpbmcgVmlld2JveGVzIikpLHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLHtyZWxhdGl2ZVRvOnRoaXMuYWN0aXZhdGVkUm91dGUscXVlcnlQYXJh''@;'; put 'put ''bXM6e319KSk6KHRoaXMudmlld2JveGVzPXRoaXMuZGVjb2RlVXJsRGF0YShhKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKX0pKSksdGhpcy5yZUxvYWRWaWV3Ym94dGFibGVzKHRoaXMudmlld2JveGVzKX1uZ0FmdGVyVmlld0luaXQoKXt9Z2V0IHZpZXdi''@;'; put 'put ''b3hMaW1pdFJlYWNoZWQoKXtyZXR1cm4gdGhpcy52aWV3Ym94ZXMubGVuZ3RoPj10aGlzLm1heFZpZXdib3hlc31jbHJNb2RhbE9wZW5DaGFuZ2UoYSl7dGhpcy52aWV3Ym94TW9kYWxDaGFuZ2UuZW1pdChhKX1saWJyYXJ5T25DbGljayhhKXthLnRhYmxlc0xvYWRlZHx8dGhpcy5sb2FkVGFi''@;'; put 'put ''bGVzKGEubGlicmFyeS5MSUJSQVJZUkVGLGEubGlicmFyeSl9dGFibGVPbkNsaWNrKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aWYoZC52aWV3Ym94TGltaXRSZWFjaGVkKXJldHVybjtjb25zdCBoPXsuLi5kLmRlZmF1bHRDb25maWcsdGFibGU6YS5saWJUYWJsZSxsaWJy''@;'; put 'put ''YXJ5OmEubGlicmFyeS5MSUJSQVJZTkFNRSxsb2FkaW5nRGF0YTohMCxmaWx0ZXJfcGs6IjAiLGlkOmQudmlld2JveGVzLmxlbmd0aCsxLHg6d2luZG93LmlubmVyV2lkdGgtZC5kZWZhdWx0Q29uZmlnLndpZHRoLHk6MTUwfTtkLnZpZXdib3hlcy5wdXNoKGgpLHNldFRpbWVvdXQoKCk9Pntk''@;'; put 'put ''LnNldEFsbEhhbmRsZVRyYW5zZm9ybSgpfSk7Y29uc3QgZj1gJHthLmxpYnJhcnkuTElCUkFSWVJFRn0uJHthLmxpYlRhYmxlfWA7eWllbGQgZC5sb2FkRGF0YShmLGgpLGgubG9hZGluZ0RhdGE9ITEsZC5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIiksZC5zbmFwVG9Hcmlk''@;'; put 'put ''KCl9KSgpfWxvYWRUYWJsZXMoYSxkKXt0aGlzLnNhc1N0b3JlU2VydmljZS52aWV3VGFibGVzKGEpLnRoZW4oaD0+e2xldCBmPWgubXB0YWJsZXMubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2Lk1FTU5BTUV9KTt0aGlzLmxpYmluZm89aC5saWJpbmZvfHxbXSx0aGlzLnRhYmxlcz1mLGQmJihk''@;'; put 'put ''LnRhYmxlcz1mLGQubGliaW5mbz10aGlzLmxpYmluZm8sZC5sb2FkaW5nVGFibGVzPSExLGYubGVuZ3RoPjAmJihkLmV4cGFuZGVkPSEwKSl9KS5jYXRjaChoPT57dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKGgpfSl9cmVsb2FkRGF0YShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rp''@;'; put 'put ''b24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmLHYpPT57bGV0IFM9aC52aWV3Ym94VGFibGVzLmZpbmQoVj0+Vi52aWV3Ym94SWQ9PT1kLmlkKTtoLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YShhLHBhcnNlSW50KGQuZmlsdGVyX3BrfHwiMCIpKS50aGVuKFY9PntTJiYoUy5ob3RUYWJsZS5k''@;'; put 'put ''YXRhPVYudmlld2RhdGEpLGYobnVsbCl9KS5jYXRjaCgoKT0+e3YoKX0pfSl9KSgpfWxvYWREYXRhKGEsZCl7dmFyIGg9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKGYsdik9PntsZXQgUz0hMSxWPWgudmlld2JveFRhYmxlcy5maW5kKFE9PlEudmlld2Jv''@;'; put 'put ''eElkPT09ZC5pZCk7ViYmKCIwIj09PWQuZmlsdGVyX3BrfHwhZC5maWx0ZXJfcGspJiZmKCksaC5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGEoYSxwYXJzZUludChkLmZpbHRlcl9wa3x8IjAiKSkudGhlbihRPT57Vj9TPSEwOlY9e3ZpZXdib3hJZDpkLmlkLHZpZXdib3hMaWJEYXRhc2V0OmEs''@;'; put 'put ''aG90VGFibGU6T0koaC5ob3RUYWJsZURlZmF1bHQpfSxWLmhvdFRhYmxlLmRhdGE9US52aWV3ZGF0YSxWLmhvdFRhYmxlLiRkYXRhZm9ybWF0cz1RLiR2aWV3ZGF0YSxWLmhvdFRhYmxlLmNvbHM9US5jb2xzLCRYKFYuaG90VGFibGUuY29scyxbXSxRLiR2aWV3ZGF0YSk7bGV0IGRlPVtdLHBl''@;'; put 'put ''PVtdO2ZvcihsZXQgQ2UgaW4gUS52aWV3ZGF0YVswXSlDZSYmcGUucHVzaChDZSk7Zm9yKGxldCBDZT0wO0NlPHBlLmxlbmd0aDtDZSsrKWRlLnB1c2goe2RhdGE6cGVbQ2VdfSk7Vi5ob3RUYWJsZS5oZWFkZXJQa3M9T0koUS5zYXNwYXJhbXNbMF0uUEtfRklFTERTLnNwbGl0KCIgIikpLFYu''@;'; put 'put ''aG90VGFibGUuYWxsQ29sSGVhZGVycz1wZS5maWx0ZXIoQ2U9PiFWLmhvdFRhYmxlLmhlYWRlclBrcy5pbmNsdWRlcyhDZSkpLFYuaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbj1PSShWLmhvdFRhYmxlLmFsbENvbEhlYWRlcnMpLFYuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGU9cGUuZmls''@;'; put 'put ''dGVyKENlPT5WLmhvdFRhYmxlLmhlYWRlclBrcy5pbmNsdWRlcyhDZSkpLFYuaG90VGFibGUuY29sSGVhZGVycz1wZSxWLmhvdFRhYmxlLmNvbHVtbnM9ZGUsZC5jb2x1bW5zJiZkLmNvbHVtbnMubGVuZ3RoPjA/KFYuaG90VGFibGUubWFudWFsQ29sdW1uTW92ZT1kLmNvbHVtbnMsZC5jb2x1''@;'; put 'put ''bW5zPy5tYXAoKENlLE9lKT0+e2NvbnN0IFllPXBlW0NlXSxldD1WLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4uaW5kZXhPZihZZSk7ZXQ+LTEmJihWLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW4uc3BsaWNlKGV0LDEpLFYuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGVbT2VdPVllKX0p''@;'; put 'put ''KTpWLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLnB1c2goLi4uVi5ob3RUYWJsZS5jb2xIZWFkZXJzSGlkZGVuLnNwbGljZSgwLDEwKSksVi5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZT1WLmhvdFRhYmxlLmNvbEhlYWRlcnNWaXNpYmxlLmZpbHRlcihDZT0+Q2UpLFN8fGgudmlld2Jv''@;'; put 'put ''eFRhYmxlcy5wdXNoKFYpLGQucXVlcnk9aC5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShRLnF1ZXJ5KSxkLmZpbHRlclRleHQ9US5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQsc2V0VGltZW91dCgoKT0+e2gudXBkYXRlSG90Q29sdW1ucyhWLmhvdFRhYmxlLmNvbEhlYWRlcnNIaWRkZW58fFtd''@;'; put 'put ''LGQuaWQpO2NvbnN0IENlPWguZ2V0Vmlld2JveEhvdEluc3RhbmNlKGQuaWQpO0NlPy51cGRhdGVTZXR0aW5ncyh7bWFudWFsQ29sdW1uTW92ZTpWLmhvdFRhYmxlLm1hbnVhbENvbHVtbk1vdmUsYWZ0ZXJHZXRDb2xIZWFkZXI6KE9lLFllKT0+e2NvbnN0IGV0PUNlPy5jb2xUb1Byb3AoT2Up''@;'; put 'put ''O2V0JiZWLmhvdFRhYmxlLmhlYWRlclBrcy5pbmRleE9mKGV0KT4tMSYmWWUuY2xhc3NMaXN0LmFkZCgicHJpbWFyeUtleUhlYWRlclN0eWxlIiksWWUuY2xhc3NMaXN0LmFkZChIbi5oYW5kc29udGFibGUuZGFya1RhYmxlSGVhZGVyQ2xhc3MpfX0pLENlPy5yZW5kZXIoKSxoLnNlbGVjdGVk''@;'; put 'put ''Vmlld2JveCYmaC5yZXNldFNlbGVjdGVkVmlld2JveChkKX0pLGYoKX0pLmNhdGNoKFE9PntoLmxvZ2dlclNlcnZpY2UuZXJyb3IoUSksdigpfSl9KX0pKCl9cmVMb2FkVmlld2JveHRhYmxlcyhhKXthLm1hcChkPT57Y29uc3QgaD1gJHtkLmxpYnJhcnl9LiR7ZC50YWJsZX1gO2QubG9hZGlu''@;'; put 'put ''Z0RhdGE9ITAsdGhpcy5sb2FkRGF0YShoLGQpLnRoZW4oKCk9PntkLmxvYWRpbmdEYXRhPSExfSl9KX1tYXhXaWR0aENoZWtlcihhLGQpe3JldHVybiBhPjIwMD8yMDA6YX1nZXRWaWV3Ym94VGFibGVJbmRleChhKXtyZXR1cm4gdGhpcy52aWV3Ym94VGFibGVzLmZpbmRJbmRleChoPT5oLnZp''@;'; put 'put ''ZXdib3hJZD09PWEuaWQpfXJlc2l6ZShhLGQpe2NvbnN0IGg9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj1oLmxlZnQtZi5sZWZ0K2gud2lkdGgsUz1oLnRvcC1mLnRvcCtoLmhlaWdodDtyZXR1cm4gZC5zdHlsZS53aWR0aD12KyJweCIs''@;'; put 'put ''ZC5zdHlsZS5oZWlnaHQ9UysicHgiLHRoaXMuc2V0QWxsSGFuZGxlVHJhbnNmb3JtKCksdGhpcy5oZWxwZXJTZXJ2aWNlLmRlYm91bmNlQ2FsbCgxZTMsKCk9Pnt0aGlzLnZpZXdib3hDaGFuZ2VkKCksdGhpcy5ldmVudFNlcnZpY2UuZGlzcGF0Y2hFdmVudCgicmVzaXplIil9KSx7d2lkdGg6''@;'; put 'put ''dixoZWlnaHQ6U319ZHJhZ01vdmUoYSxkLGgsZil7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pntjb25zdCB2PXRoaXMucmVzaXplKGEsZCk7aC53aWR0aD12LndpZHRoLGguaGVpZ2h0PXYuaGVpZ2h0fSl9c2V0QWxsSGFuZGxlVHJhbnNmb3JtKCl7dGhpcy5yZXNpemVCb3hR''@;'; put 'put ''dWVyeS5mb3JFYWNoKGE9Pntjb25zdCBkPWEubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPWBoYW5kbGVfJHthLm5hdGl2ZUVsZW1lbnQuaWR9YCxmPXRoaXMuZHJhZ0hhbmRsZUNvcm5lclF1ZXJ5LmZpbmQoKHYsUyk9PnYubmF0aXZlRWxlbWVudC5pZD09PWgpO3Ro''@;'; put 'put ''aXMuc2V0SGFuZGxlVHJhbnNmb3JtKGY/Lm5hdGl2ZUVsZW1lbnQsZCwiYm90aCIpfSl9c2V0SGFuZGxlVHJhbnNmb3JtKGEsZCxoKXtjb25zdCBmPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bGV0IHY9ZC53aWR0aC1mLndpZHRoLFM9ZC5oZWlnaHQtZi5oZWlnaHQ7dis9NSxTKz01LCJ4''@;'; put 'put ''Ij09PWgmJihhLnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7dn1weCwgMClgKSwieSI9PT1oJiYoYS5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgwLCAke1N9cHgpYCksImJvdGgiPT09aCYmKGEuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGUoJHt2fXB4LCAke1N9cHgpYCl9Zm9j''@;'; put 'put ''dXNWaWV3Ym94KGEpe3RoaXMudmlld2JveGVzLm1hcChkPT57ZC5mb2N1c2VkPSExfSksYS5mb2N1c2VkPSEwfXZpZXdib3hEcmFnRW5kZWQoYSxkKXtsZXQgZj1hLnNvdXJjZS5nZXRSb290RWxlbWVudCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2QueD1mLmxlZnQsZC55PWYudG9wLHRo''@;'; put 'put ''aXMudmlld2JveENoYW5nZWQoKX1zbmFwVG9HcmlkKCl7Y29uc3QgYT13aW5kb3cuaW5uZXJXaWR0aCxkPXdpbmRvdy5pbm5lckhlaWdodCxTPU1hdGguY2VpbCh0aGlzLnZpZXdib3hlcy5sZW5ndGgvMiksVj1NYXRoLmZsb29yKHRoaXMudmlld2JveGVzLmxlbmd0aC8yKSxwZT0oYS01KihT''@;'; put 'put ''KzEpKS9TLENlPShhLTUqKFYrMSkpL1Y7bGV0IFllPTAsZHQ9KGQtMjUwLTYwKS8yLGh0PTAsTXQ9MDtmb3IobGV0IFF0PTA7UXQ8dGhpcy52aWV3Ym94ZXMubGVuZ3RoO1F0Kyspe2xldCBsbj10aGlzLnZpZXdib3hlc1tRdF0sdm49IShRdD5TLTEpO2NvbnN0IHduPXZuP3BlOkNlOyF2biYm''@;'; put 'put ''MD09PU10JiYoaHQ9MCxNdCsrLFllPTApLGxuLng9NStZZStodCood24rNSksbG4ueT0yNTArTXQqKGR0KzUpLGxuLndpZHRoPXduLGxuLmhlaWdodD1kdCxodCsrfXRoaXMudmlld2JveENoYW5nZWQoKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5zZXRBbGxIYW5kbGVUcmFuc2Zvcm0oKX0pfW1p''@;'; put 'put ''bmltaXplQWxsKCl7dGhpcy52aWV3Ym94ZXMuZm9yRWFjaChhPT57YS5taW5pbWl6ZWQ9ITB9KSx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9cmVzdG9yZUFsbCgpe3RoaXMudmlld2JveGVzLmZvckVhY2goYT0+e2EubWluaW1pemVkPSExfSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfXJlc2V0UG9z''@;'; put 'put ''U2l6ZShhKXthLng9d2luZG93LmlubmVyV2lkdGgtdGhpcy5kZWZhdWx0Q29uZmlnLndpZHRoLGEueT10aGlzLmRlZmF1bHRDb25maWcueSxhLndpZHRoPXRoaXMuZGVmYXVsdENvbmZpZy53aWR0aCxhLmhlaWdodD10aGlzLmRlZmF1bHRDb25maWcuaGVpZ2h0LHRoaXMudmlld2JveENoYW5n''@;'; put 'put ''ZWQoKX1taW5pbWl6ZShhKXthLm1pbmltaXplZD0hMCx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9cmVzdG9yZShhKXthLm1pbmltaXplZD0hMSx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9Y29sbGFwc2UoYSl7YS5jb2xsYXBzZWQ9ITAsdGhpcy52aWV3Ym94Q2hhbmdlZCgpfWV4cGFuZChhKXthLmNv''@;'; put 'put ''bGxhcHNlZD0hMSx0aGlzLnZpZXdib3hDaGFuZ2VkKCl9Y2xvc2UoYSl7Y29uc3QgZD10aGlzLnZpZXdib3hlcy5maW5kSW5kZXgoZj0+Zi5pZD09PWEuaWQpLGg9dGhpcy52aWV3Ym94VGFibGVzLmZpbmRJbmRleChmPT5mLnZpZXdib3hJZD09PWEuaWQpO2Q+LTEmJnRoaXMudmlld2JveGVz''@;'; put 'put ''LnNwbGljZShkLDEpLGg+LTEmJnRoaXMudmlld2JveFRhYmxlcy5zcGxpY2UoaCwxKSx0aGlzLnNlbGVjdGVkVmlld2JveD8uaWQ9PT1hLmlkJiZ0aGlzLnVuc2V0U2VsZWN0ZWRWaWV3Ym94KCksSG4udmlld2JveGVzW2EuaWRdPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoaXopLHRo''@;'; put 'put ''aXMudmlld2JveENoYW5nZWQoKX1zZWxlY3RWaWV3Ym94KGEpe3ZvaWQgMD09PXRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUmJnZvaWQgMD09PXRoaXMuc2VsZWN0ZWRWaWV3Ym94P3RoaXMucmVzZXRTZWxlY3RlZFZpZXdib3goYSk6YS5pZD09PXRoaXMuc2VsZWN0ZWRWaWV3Ym94Py5pZD90''@;'; put 'put ''aGlzLnVuc2V0U2VsZWN0ZWRWaWV3Ym94KCk6dGhpcy5yZXNldFNlbGVjdGVkVmlld2JveChhKX1jb2x1bW5zRHJvcChhKXt0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzSGlkZGVuJiYoYS5wcmV2aW91c0NvbnRhaW5lcj09PWEuY29udGFpbmVyP2JjZShh''@;'; put 'put ''LmNvbnRhaW5lci5kYXRhLGEucHJldmlvdXNJbmRleCxhLmN1cnJlbnRJbmRleCk6ZnVuY3Rpb24gaVJlKGwsYyxhLGQpe2NvbnN0IGg9Z00oYSxsLmxlbmd0aC0xKSxmPWdNKGQsYy5sZW5ndGgpO2wubGVuZ3RoJiZjLnNwbGljZShmLDAsbC5zcGxpY2UoaCwxKVswXSl9KGEucHJldmlvdXND''@;'; put 'put ''b250YWluZXIuZGF0YSxhLmNvbnRhaW5lci5kYXRhLGEucHJldmlvdXNJbmRleCxhLmN1cnJlbnRJbmRleCksdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZSYmIm9iamVjdCI9PXR5cGVvZiB0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlLmNvbEhlYWRlcnMpJiZ0''@;'; put 'put ''aGlzLnVwZGF0ZUNvbHVtbk9yZGVySG90KGEuaXRlbS5kYXRhLGEuY3VycmVudEluZGV4LHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUudmlld2JveElkKX1vbkNvbHNlYXJjaENoYW5nZShhLGQsaCl7Y29uc3QgZj1oLmluZGV4T2YoZCk7aC5zcGxpY2UoZiwxKSxhLnZhbHVlPSIiLHRoaXMu''@;'; put 'put ''c2VsZWN0ZWRWaWV3Ym94VGFibGU/LmhvdFRhYmxlJiYodGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZS5wdXNoKGQpLHRoaXMudXBkYXRlSG90Q29sdW1ucyh0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzSGlk''@;'; put 'put ''ZGVuLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUudmlld2JveElkKSx0aGlzLnVwZGF0ZUNvbHVtbk9yZGVySG90KGQsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZS5sZW5ndGgtMSx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hJ''@;'; put 'put ''ZCkpfW9uQ29sUmVtb3ZlKGEpe2lmKHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGU/LmhvdFRhYmxlKXtjb25zdCBkPXRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc1Zpc2libGUuaW5kZXhPZihhKTt0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxl''@;'; put 'put ''LmNvbEhlYWRlcnNWaXNpYmxlLnNwbGljZShkLDEpLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbi5wdXNoKGEpLHRoaXMudXBkYXRlSG90Q29sdW1ucyh0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzSGlkZGVu''@;'; put 'put ''LHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGUudmlld2JveElkKSx0aGlzLnVwZGF0ZUNvbHVtbk9yZGVySG90KGEsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZS5sZW5ndGgsdGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZS52aWV3Ym94SWQpfX1y''@;'; put 'put ''ZXNldFNlbGVjdGVkVmlld2JveChhKXt0aGlzLnNlbGVjdGVkVmlld2JveD1hLHRoaXMuc2VsZWN0ZWRWaWV3Ym94VGFibGU9dGhpcy52aWV3Ym94VGFibGVzLmZpbmQoZD0+ZC52aWV3Ym94SWQ9PT1hLmlkKX11bnNldFNlbGVjdGVkVmlld2JveCgpe3RoaXMuc2VsZWN0ZWRWaWV3Ym94PXZv''@;'; put 'put ''aWQgMCx0aGlzLnNlbGVjdGVkVmlld2JveFRhYmxlPXZvaWQgMH1zdG9wUHJvcGFnYXRpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX1vcGVuRmlsdGVyKGEpe3RoaXMuc2VsZWN0Vmlld2JveChhKTtjb25zdCBkPXRoaXMudmlld2JveFRhYmxlc1t0aGlzLmdldFZpZXdib3hUYWJsZUluZGV4''@;'; put 'put ''KGEpXTt0aGlzLmZpbHRlckxpYmRzPWAke2EubGlicmFyeX0uJHthLnRhYmxlfWAsdGhpcy5maWx0ZXJpbmdWaWV3Ym94PWEsdGhpcy5maWx0ZXI9ITAsdGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFF1ZXJ5VmFyaWFibGVzKHRoaXMuZmlsdGVyTGli''@;'; put 'put ''ZHMsZC5ob3RUYWJsZS5jb2xzKX1vcGVuVGFibGVFZGl0KGEpe2NvbnN0IGQ9YS5saWJyYXJ5KyIuIithLnRhYmxlO2xldCBoPWxvY2F0aW9uLmhyZWYuc2xpY2UoMCxsb2NhdGlvbi5ocmVmLmluZGV4T2YoIiMiKSk7aD1gJHtofSMvZWRpdG9yLyR7ZH1gLHdpbmRvdy5vcGVuKGgsIl9ibGFu''@;'; put 'put ''ayIpfXJlc2V0RmlsdGVyKCl7dGhpcy5maWx0ZXJpbmdWaWV3Ym94JiYodGhpcy5maWx0ZXJpbmdWaWV3Ym94LmZpbHRlcl9waz0iMCIsdGhpcy5yZWxvYWRUYWJsZURhdGEodGhpcy5maWx0ZXJpbmdWaWV3Ym94KSx0aGlzLmZpbHRlcj0hMSx0aGlzLnZpZXdib3hDaGFuZ2VkKCksSG4udmll''@;'; put 'put ''d2JveGVzW3RoaXMuZmlsdGVyaW5nVmlld2JveC5pZF09dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShpeikpfXNlbmRDbGF1c2UoKXt0aGlzLmZpbHRlckxvYWRpbmc9ITA7bGV0IGE9W10sZD1bXTtpZih0eXBlb2YgdGhpcy5jbGF1c2VzPiJ1IilyZXR1cm4gdGhpcy5udWxsVmFyaWFi''@;'; put 'put ''bGVzPSEwLHZvaWQodGhpcy5maWx0ZXJMb2FkaW5nPSExKTt7bGV0IGg9dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKXtjb25zdCB2PWhbZl0uZWxlbWVudHM7YT12LmZpbHRlcihmdW5jdGlvbihTKXtyZXR1cm4gbnVsbD09PVMudmFyaWFibGV9KSxh''@;'; put 'put ''Lmxlbmd0aCYmZC5wdXNoKHYpfX1pZihkLmxlbmd0aClyZXR1cm4gdGhpcy5udWxsVmFyaWFibGVzPSEwLHZvaWQodGhpcy5maWx0ZXJMb2FkaW5nPSExKTt0cnl7aWYodm9pZCAwIT09dGhpcy5jbGF1c2VzJiZ0aGlzLmZpbHRlckxpYmRzKXtjb25zdCBoPXtncm91cExvZ2ljOnRoaXMuY2xh''@;'; put 'put ''dXNlcy5ncm91cExvZ2ljLGZpbHRlckdyb3VwczpbXX07dGhpcy5jbGF1c2VzLnF1ZXJ5T2JqLmZvckVhY2godj0+e2NvbnN0IFM9e2ZpbHRlckNsYXVzZXM6W119O3YuZWxlbWVudHMuZm9yRWFjaChWPT57Uy5maWx0ZXJDbGF1c2VzLnB1c2godGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9u''@;'; put 'put ''ZShWKSl9KSxTLmNsYXVzZUxvZ2ljPXYuY2xhdXNlTG9naWMsaC5maWx0ZXJHcm91cHMucHVzaCh0aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFMpKX0pO2NvbnN0IGY9dGhpcy5zYXNTdG9yZVNlcnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZShoKTt0aGlzLnNhc1N0b3JlU2Vydmlj''@;'; put 'put ''ZS5zYXZlUXVlcnkodGhpcy5maWx0ZXJMaWJkcyxmKS50aGVuKHY9Pnt0aGlzLmZpbHRlcmluZ1ZpZXdib3guZmlsdGVyX3BrPXYucmVzdWx0WzBdLkZJTFRFUl9SSyx0aGlzLmxvYWREYXRhKHRoaXMuZmlsdGVyTGliZHMsdGhpcy5maWx0ZXJpbmdWaWV3Ym94KS50aGVuKCgpPT57dGhpcy5m''@;'; put 'put ''aWx0ZXI9ITEsdGhpcy5maWx0ZXJMb2FkaW5nPSExfSksdGhpcy52aWV3Ym94Q2hhbmdlZCgpfSkuY2F0Y2godj0+e3RoaXMuZmlsdGVyTG9hZGluZz0hMX0pfX1jYXRjaHt0aGlzLmZpbHRlckxvYWRpbmc9ITF9fXNlYXJjaFRhYmxlKGEsZCl7dmFyIGg9dGhpcztyZXR1cm4gWShmdW5jdGlv''@;'; put 'put ''biooKXtkLnNlYXJjaExvYWRpbmc9ITA7bGV0IGY9YS52YWx1ZSx2PWQubGlicmFyeSsiLiIrZC50YWJsZSxTPXBhcnNlSW50KGQuZmlsdGVyX3BrfHwiMCIpO2NvbnN0IFY9aC52aWV3Ym94VGFibGVzLmZpbmQoUT0+US52aWV3Ym94SWQ9PT1kLmlkKTtWJiYoeWllbGQgaC5zYXNTdG9yZVNl''@;'; put 'put ''cnZpY2Uudmlld0RhdGFTZWFyY2goZixkLnNlYXJjaE51bWVyaWMsdixTKS50aGVuKFE9PntRLnNhc3BhcmFtc3x8US52aWV3RGF0YT9WLmhvdFRhYmxlLmRhdGE9US52aWV3ZGF0YTpkLnNlYXJjaExvYWRpbmc9ITB9KS5jYXRjaChRPT57aC5sb2dnZXJTZXJ2aWNlLmVycm9yKFEpfSksZC5z''@;'; put 'put ''ZWFyY2hMb2FkaW5nPSExKX0pKCl9cmVsb2FkVGFibGVEYXRhKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7Y29uc3QgaD1gJHthLmxpYnJhcnl9LiR7YS50YWJsZX1gO2EubG9hZGluZ0RhdGE9ITAseWllbGQgZC5yZWxvYWREYXRhKGgsYSksYS5sb2FkaW5nRGF0YT0hMSxk''@;'; put 'put ''LmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pKCl9dXBkYXRlSG90Q29sdW1ucyhhLGQpe3RoaXMudXBkYXRlSGlkZGVuQ29sdW1uc0hvdChhLGQpLHRoaXMuc2V0Q29sdW1uT3JkZXIoZCl9dXBkYXRlQ29sdW1uT3JkZXJIb3QoYSxkLGgpe2NvbnN0IGY9dGhpcy5nZXRW''@;'; put 'put ''aWV3Ym94SG90SW5zdGFuY2UoaCk7aWYoZil7Y29uc3Qgdj1mLnByb3BUb0NvbChhKTtmLmdldFBsdWdpbigibWFudWFsQ29sdW1uTW92ZSIpLm1vdmVDb2x1bW4odixkKSxmLnJlbmRlcigpLHRoaXMuc2V0Q29sdW1uT3JkZXIoaCl9fXRhYmxlRWRpdEV4aXN0cyhhKXtjb25zdCBkPUhuLmVk''@;'; put 'put ''aXRvci5saWJzQW5kVGFibGVzLGg9YS5saWJyYXJ5O3JldHVybiEhZFtoXSYmZFtoXS5pbmNsdWRlcyhhLnRhYmxlKX1zZXRDb2x1bW5PcmRlcihhKXtjb25zdCBkPXRoaXMudmlld2JveGVzLmZpbmQoaD0+aC5pZD09PWEpO2lmKGQpe2NvbnN0IGg9dGhpcy5jcmVhdGVDb2x1bW5PcmRlcihh''@;'; put 'put ''KTtkLmNvbHVtbnM9aC5sZW5ndGg+MD9oOmQuY29sdW1uc310aGlzLnZpZXdib3hDaGFuZ2VkKCl9Y3JlYXRlQ29sdW1uT3JkZXIoYSl7Y29uc3QgZD10aGlzLmdldFZpZXdib3hIb3RJbnN0YW5jZShhKTtpZighZClyZXR1cm5bXTtjb25zdCBoPWQuZ2V0Q29sSGVhZGVyKCksZj10aGlzLnNl''@;'; put 'put ''bGVjdGVkVmlld2JveFRhYmxlPy5ob3RUYWJsZS5jb2xIZWFkZXJzO2lmKCFmKXJldHVybltdO2NvbnN0IHY9dGhpcy5zZWxlY3RlZFZpZXdib3hUYWJsZT8uaG90VGFibGU/LmNvbEhlYWRlcnNWaXNpYmxlLmxlbmd0aHx8NSxTPVtdO3JldHVybiBoLm1hcCgoVixRKT0+e2lmKFE8dil7Y29u''@;'; put 'put ''c3QgZGU9Zi5pbmRleE9mKFYpO2RlPi0xJiZTLnB1c2goZGUpfX0pLFN9dXBkYXRlSGlkZGVuQ29sdW1uc0hvdChhLGQpe2NvbnN0IGg9dGhpcy5nZXRWaWV3Ym94SG90SW5zdGFuY2UoZCk7aWYoaCl7Y29uc3QgZj1hLm1hcCh2PT5oLnByb3BUb0NvbCh2KSk7aC51cGRhdGVTZXR0aW5ncyh7''@;'; put 'put ''aGlkZGVuQ29sdW1uczp7Y29sdW1uczpmfX0pLGgucmVuZGVyKCl9fWdldFZpZXdib3hIb3RJbnN0YW5jZShhKXtyZXR1cm4gYT90aGlzLmhvdFRhYmxlUmVnaXN0ZXJlci5nZXRJbnN0YW5jZShgaG90SW5zdGFuY2Vfdmlld2JveF8ke2F9YCk6dm9pZCAwfXZpZXdib3hDaGFuZ2VkKCl7bGV0''@;'; put 'put ''IGE7Y29uc3QgZD10aGlzLmVuY29kZVVybERhdGEodGhpcy52aWV3Ym94ZXMpO2QubGVuZ3RoPjAmJihhPXt2aWV3Ym94ZXM6ZH0pLHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLHtyZWxhdGl2ZVRvOnRoaXMuYWN0aXZhdGVkUm91dGUscXVlcnlQYXJhbXM6YX0pLHRoaXMucHJlcGFyZUZpbHRl''@;'; put 'put ''ckNhY2hlKCl9cHJlcGFyZUZpbHRlckNhY2hlKCl7Zm9yKGxldCBhIG9mIHRoaXMudmlld2JveGVzKWlmKEhuLnZpZXdib3hlc1thLmlkXXx8KEhuLnZpZXdib3hlc1thLmlkXT10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKGl6KSksYS5xdWVyeSYmYS5xdWVyeS5sZW5ndGg+MCl7Y29u''@;'; put 'put ''c3QgZD10aGlzLnZpZXdib3hUYWJsZXMuZmluZChmPT5mLnZpZXdib3hJZD09PWEuaWQpLGg9YHZpZXdib3hlcy4ke2EuaWR9YDtIbi52aWV3Ym94ZXNbYS5pZF0uZmlsdGVyLnF1ZXJ5PWEucXVlcnksSG4udmlld2JveGVzW2EuaWRdLmZpbHRlci5saWJkcz1hLmxpYnJhcnkrIi4iK2EudGFi''@;'; put 'put ''bGUsdGhpcy5zYXNTdG9yZVNlcnZpY2UuaW5pdGlhbGl6ZUdsb2JhbEZpbHRlckNsYXVzZShoLGQ/LmhvdFRhYmxlLmNvbHMpfX1lbmNvZGVVcmxEYXRhKGEpe2xldCBkPSIiO3JldHVybiBhLm1hcCgoaCxmKT0+e2QrPWAke2guaWR9LSR7aC5saWJyYXJ5fS0ke2gudGFibGV9LSR7aC53aWR0''@;'; put 'put ''aH0tJHtoLmhlaWdodH0tJHtoLnh9LSR7aC55fS0ke2guY29sbGFwc2VkPzE6MH0tJHtoLm1pbmltaXplZD8xOjB9LSR7aC5maWx0ZXJfcGt8fDB9JHtoLmNvbHVtbnMmJmguY29sdW1ucy5sZW5ndGg+MD8iLSIraC5jb2x1bW5zPy5qb2luKCIsIik6IiJ9YCxmIT09YS5sZW5ndGgtMSYmKGQr''@;'; put 'put ''PSI7Iil9KSxkfWRlY29kZVVybERhdGEoYSl7bGV0IGg9W107cmV0dXJuIGEuc3BsaXQoIjsiKS5tYXAodj0+e2NvbnN0IFM9di5zcGxpdCgiLSIpO2gucHVzaCh7aWQ6cGFyc2VJbnQoU1swXSksbGlicmFyeTpTWzFdLHRhYmxlOlNbMl0sd2lkdGg6cGFyc2VJbnQoU1szXSksaGVpZ2h0OnBh''@;'; put 'put ''cnNlSW50KFNbNF0pLHg6cGFyc2VJbnQoU1s1XSkseTpwYXJzZUludChTWzZdKSxjb2xsYXBzZWQ6ISFwYXJzZUludChTWzddKSxtaW5pbWl6ZWQ6ISFwYXJzZUludChTWzhdKSxjb2x1bW5zOlNbMTBdPy5zcGxpdCgiLCIpLm1hcChWPT5wYXJzZUludChWKSl8fFtdLGZpbHRlcl9wazpTWzld''@;'; put 'put ''fSl9KSxofW5nT25EZXN0cm95KCl7dGhpcy5fcXVlcnk/LnVuc3Vic2NyaWJlKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoTW8pLEplKEEwKSxKZSh2YSksSmUoRGwpLEplKFpkKSxKZShPMSksSmUoZXUpLEplKEpzKSxKZShPYyksSmUo''@;'; put 'put ''Y2EpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC12aWV3Ym94ZXMiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKGQsaCl7aWYoMSZkJiYoSG8oRTJ0LDUpLEhvKFQydCw1KSksMiZkKXtsZXQgZjtsaShmPWNpKCkpJiYoaC5yZXNpemVCb3hRdWVyeT1m''@;'; put 'put ''KSxsaShmPWNpKCkpJiYoaC5kcmFnSGFuZGxlQ29ybmVyUXVlcnk9Zil9fSxpbnB1dHM6e3ZpZXdib3hNb2RhbDoidmlld2JveE1vZGFsIn0sb3V0cHV0czp7dmlld2JveE1vZGFsQ2hhbmdlOiJ2aWV3Ym94TW9kYWxDaGFuZ2UifSxkZWNsczo1Nix2YXJzOjIzLGNvbnN0czpbWyJpbnB1dCIs''@;'; put 'put ''IiJdLFsicmVzaXplQm94IiwiIl0sWyJkcmFnSGFuZGxlQ29ybmVyIiwiIl0sWyJzZWFyY2hFbCIsIiJdLFsicXVlcnlGaWx0ZXIiLCIiXSxbImFwcERyYWdOZHJvcCIsIiIsMSwicm9vdC1tb2RhbCIsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2Rh''@;'; put 'put ''bE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxTaXplIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJjbGFzcyIsImxpY2VuY2Utbm90aWNlIiw0LCJuZ0lmIl0sWzEsIm1vZGFsLWJvZHkiLCJkLWZsZXgiXSxbMSwiYWRkLW5ldyIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsx''@;'; put 'put ''LCJtdC0wLWkiXSxbMSwidy0xMDAiXSxbImNsYXNzIiwibXktMTAtbXgtYXV0byB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJtLTAgdmlld2JveC1saW1pdC1ub3RpY2UiLDQsIm5nSWYiXSxbMywibGlicmFyeUxpc3QiLCJsaWJyYXJ5T25DbGlja0VtaXR0ZXIiLCJ0YWJsZU9u''@;'; put 'put ''Q2xpY2tFbWl0dGVyIiw0LCJuZ0lmIl0sWzEsImN1cnJlbnRseS1vcGVuIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiJdLFsicm9sZSIsInRvb2x0aXAiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwidG9vbHRpcCIsInRvb2x0aXAtbWQiLCJ0b29sdGlwLWJv''@;'; put 'put ''dHRvbS1sZWZ0IiwibWwtMyIsMywiY2xpY2siXSxbInNoYXBlIiwiZ3JpZC12aWV3Iiwic2l6ZSIsIjE5Il0sWzEsInRvb2x0aXAtY29udGVudCJdLFsic2hhcGUiLCJtaW51cyIsInNpemUiLCIxOSJdLFsic2hhcGUiLCJ3aW5kb3ctcmVzdG9yZSIsInNpemUiLCIxOSJdLFsiY2xhc3MiLCJ0''@;'; put 'put ''ZXh0LWNlbnRlciB3LTEwMCBtLTAiLDQsIm5nSWYiXSxbImNsYXNzIiwib3Blbi12aWV3Ym94IGQtZmxleCBjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4gY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsMywic2VsZWN0ZWQiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImQtZmxl''@;'; put 'put ''eCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLCJtdC0xMCJdLFsxLCJtLTAiXSxbImNsYXNzIiwiY29uZmlndXJhdGlvbi13cmFwcGVyIiwiY2RrRHJvcExpc3RHcm91cCIsIiIsNCwibmdWYXIiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0''@;'; put 'put ''eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwidmlld2JveGVzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJ2aWV3Ym94IiwiY2RrRHJhZ0JvdW5kYXJ5IiwiLnZpZXdib3hlcy1jb250YWluZXIiLCJjZGtEcmFnIiwiIiwidGFiaW5kZXgi''@;'; put 'put ''LCIwIiwzLCJmb2N1c2VkIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwicG9pbnRlci1ldmVudHMiLCJib3gtc2hhZG93IiwiY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb24iLCJpZCIsIm1vdXNlZG93biIsImNka0RyYWdFbmRlZCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImZpbHRlci1t''@;'; put 'put ''b2RhbCIsMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSIsImNlbnRlciIsInRleHQtY2VudGVyIiwiY29sb3ItZGFya2VyLWdyYXkiXSxbMSwibW9kYWwtYm9keSJdLFszLCJ2aWV3''@;'; put 'put ''Ym94SWQiLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsImxpY2VuY2Ut''@;'; put 'put ''bm90aWNlIl0sWzEsIm15LTEwLW14LWF1dG8iLCJ0ZXh0LWNlbnRlciJdLFsiY2xyTWVkaXVtIiwiIl0sWzEsIm0tMCIsInZpZXdib3gtbGltaXQtbm90aWNlIl0sWzMsImxpYnJhcnlPbkNsaWNrRW1pdHRlciIsInRhYmxlT25DbGlja0VtaXR0ZXIiLCJsaWJyYXJ5TGlzdCJdLFsxLCJ0ZXh0''@;'; put 'put ''LWNlbnRlciIsInctMTAwIiwibS0wIl0sWzEsIm9wZW4tdmlld2JveCIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLDMsImNsaWNrIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsclNtYWxs''@;'; put 'put ''IiwiIiwiY2xhc3MiLCJtbC0zIiw0LCJuZ0lmIl0sWyJyb2xlIiwidG9vbHRpcCIsImFyaWEtaGFzcG9wdXAiLCJ0cnVlIiwxLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLDMsImNsaWNrIl0sWyJzaGFwZSIsImN1cnNvci1tb3ZlIiwic2l6ZSIsIjEzIl0s''@;'; put 'put ''WyJyb2xlIiwidG9vbHRpcCIsImFyaWEtaGFzcG9wdXAiLCJ0cnVlIiwiY2xhc3MiLCJ0b29sdGlwIHRvb2x0aXAtbWQgdG9vbHRpcC1ib3R0b20tbGVmdCBtbC0zIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsInNpemUiLCIxOSJdLFsiY2xyU21hbGwiLCIiLDEsIm1s''@;'; put 'put ''LTMiXSxbImNka0Ryb3BMaXN0R3JvdXAiLCIiLDEsImNvbmZpZ3VyYXRpb24td3JhcHBlciJdLFs0LCJuZ0lmIl0sWzEsImNvbHMtc2VhcmNoIl0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImF1dG9mb2N1cyIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIGNvbHVtbnMi''@;'; put 'put ''LCJ0YWJpbmRleCIsIjAiLDMsInZhbHVlQ2hhbmdlIiwiaW5wdXRJZCIsImVtaXRPbmx5U2VsZWN0ZWQiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjZGtEcm9wTGlzdCIsIiIsMSwiY29scy1saXN0IiwzLCJjZGtEcm9wTGlzdERyb3BwZWQiLCJjZGtEcm9wTGlzdERhdGEiXSxbImNka0Ry''@;'; put 'put ''YWciLCIiLDMsImNsYXNzIiwiY3Vyc29yLWRlZmF1bHQtaSIsInByaW1hcnlLZXlIZWFkZXJTdHlsZSIsImNka0RyYWdEYXRhIiwiY2RrRHJhZ0Rpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNka0RyYWciLCIiLDMsImNka0RyYWdEYXRhIiwiY2RrRHJhZ0Rpc2FibGVkIl0sWyJz''@;'; put 'put ''aGFwZSIsImtleSIsNCwibmdJZiJdLFsic2hhcGUiLCJ0cmFzaCIsImNsYXNzIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImtleSJdLFsic2hhcGUiLCJ0cmFzaCIsMSwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJjZGtEcmFnQm91bmRhcnki''@;'; put 'put ''LCIudmlld2JveGVzLWNvbnRhaW5lciIsImNka0RyYWciLCIiLCJ0YWJpbmRleCIsIjAiLDEsInZpZXdib3giLDMsIm1vdXNlZG93biIsImNka0RyYWdFbmRlZCIsImNka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uIiwiaWQiXSxbImNka0RyYWdIYW5kbGUiLCIiLDEsImRyYWctaGFuZGxlIiwiZC1m''@;'; put 'put ''bGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJ0YWJsZS10aXRsZSJdLFsxLCJhY3Rpb25zIl0sWyJzaGFwZSIsImFuZ2xlIHRvcCIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwiYW5nbGUgZG93biIsMywiY2xpY2si''@;'; put 'put ''LDQsIm5nSWYiXSxbInNoYXBlIiwibWludXMiLDMsImNsaWNrIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFsiY2RrRHJhZyIsIiIsMSwiZHJhZ0hhbmRsZSIsImNvcm5lciIsMywiY2RrRHJhZ01vdmVkIiwiaWQiXSxbImNsckZvcm0iLCIiLDEsImQtZmxleCIsImFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciIsImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsImNsci1mbGV4LXdyYXAiLCJ0YWJsZS1zZWFyY2gtd3JhcHBlciJdLFsxLCJkLWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItZmxleC13cmFwIl0sWzEsImlucHV0LXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwi''@;'; put 'put ''cGxhY2Vob2xkZXIiLCJTZWFyY2giLCJuYW1lIiwic2VhcmNoLWlucHV0IiwzLCJrZXl1cC5lbnRlciIsInR5cGUiXSxbInNoYXBlIiwic2VhcmNoIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJzcGlubmVyIHNwaW5uZXItaW5saW5lIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiY2hlY2ti''@;'; put 'put ''b3giLCJjbHJDaGVja2JveCIsIiIsIm5hbWUiLCJudW1lcmljX2NoZWNrIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsiY2xhc3MiLCJzcGlubmVyIHNwaW5uZXItc20iLDQsIm5nSWYiXSxbInNoYXBlIiwicmVmcmVzaCIsImNsYXNzIiwiY2xpY2staWNvbiIsMywiY2xpY2siLDQs''@;'; put 'put ''Im5nSWYiXSxbInJvbGUiLCJ0b29sdGlwIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsInRvb2x0aXAiLCJ0b29sdGlwLWxnIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsIm1sLTUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImZpbHRlciIsMSwiY2xpY2staWNvbiJdLFsxLCJ0b29sdGlwLWNvbnRl''@;'; put 'put ''bnQiLCJ0b29sdGlwLWxvbmciXSxbInNoYXBlIiwicGVuY2lsIiwxLCJjbGljay1pY29uIiwibWwtNSIsMywiY2xpY2siXSxbImNsYXNzIiwiY29udGVudCIsMywiZGlzcGxheSIsNCwibmdWYXIiXSxbInNoYXBlIiwiYW5nbGUgdG9wIiwzLCJjbGljayJdLFsic2hhcGUiLCJhbmdsZSBkb3du''@;'; put 'put ''IiwzLCJjbGljayJdLFsic2hhcGUiLCJzZWFyY2giLDMsImNsaWNrIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLWlubGluZSJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSJdLFsic2hhcGUiLCJyZWZyZXNoIiwxLCJjbGljay1pY29uIiwzLCJjbGljayJdLFsxLCJjb250ZW50Il0sWyJjbGFz''@;'; put 'put ''cyIsImhvdC1zcGlubmVyIG15LTEwLW14LWF1dG8gdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImlkIiwiaG90VGFibGUiLCJjbGFzc05hbWUiLCJodERhcmsiLCJzdHJldGNoSCIsImFsbCIsMywiaG90SWQiLCJyZWFkT25seSIsIm1vZGlmeUNvbFdpZHRoIiwiY29weVBhc3RlIiwiY29udGV4''@;'; put 'put ''dE1lbnUiLCJtdWx0aUNvbHVtblNvcnRpbmciLCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsImZpbHRlcnMiLCJkcm9wZG93bk1lbnUiLCJoZWlnaHQiLCJjZWxscyIsIm1heFJvd3MiLCJtYW51YWxDb2x1bW5SZXNpemUiLCJsaWNl''@;'; put 'put ''bnNlS2V5Iiw0LCJuZ0lmIl0sWzEsImhvdC1zcGlubmVyIiwibXktMTAtbXgtYXV0byIsInRleHQtY2VudGVyIl0sWyJpZCIsImhvdFRhYmxlIiwiY2xhc3NOYW1lIiwiaHREYXJrIiwic3RyZXRjaEgiLCJhbGwiLDMsImhvdElkIiwicmVhZE9ubHkiLCJtb2RpZnlDb2xXaWR0aCIsImNvcHlQ''@;'; put 'put ''YXN0ZSIsImNvbnRleHRNZW51IiwibXVsdGlDb2x1bW5Tb3J0aW5nIiwidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLCJkYXRhIiwiY29sSGVhZGVycyIsImNvbHVtbnMiLCJmaWx0ZXJzIiwiZHJvcGRvd25NZW51IiwiaGVpZ2h0IiwiY2VsbHMiLCJtYXhSb3dzIiwibWFudWFsQ29sdW1u''@;'; put 'put ''UmVzaXplIiwibGljZW5zZUtleSJdLFszLCJ2aWV3Ym94SWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJjbHItbW9kYWwiLDUpLEl0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBoLmNsck1vZGFsT3BlbkNoYW5nZSh2KX0pLGdlKDEsImgz''@;'; put 'put ''Iiw2KSxQZSgyLCIgVmlld2JveGVzICIpLGd0KDMsRDJ0LDIsMiwic3BhbiIsNyksbWUoKSxnZSg0LCJkaXYiLDgpKDUsImRpdiIsOSkoNiwicCIsMTApLFBlKDcsIkFkZCBuZXciKSxtZSgpLFl0KDgsImhyIiwxMSksZ3QoOSxJMnQsMiwwLCJkaXYiLDEyKSgxMCxSMnQsMiwwLCJwIiwxMyko''@;'; put 'put ''MTEsTDJ0LDEsMSwiZGMtdHJlZSIsMTQpLG1lKCksZ2UoMTIsImRpdiIsMTUpKDEzLCJkaXYiLDE2KSgxNCwicCIsMTApLFBlKDE1LCJDdXJyZW50bHkgb3BlbiIpLG1lKCksZ2UoMTYsImRpdiIpKDE3LCJhIiwxNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBoLnNuYXBUb0dyaWQo''@;'; put 'put ''KX0pLFl0KDE4LCJjbHItaWNvbiIsMTgpLGdlKDE5LCJzcGFuIiwxOSksUGUoMjAsIlNuYXAgdmlld2JveGVzIHRvIGdyaWQiKSxtZSgpKCksZ2UoMjEsImEiLDE3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGgubWluaW1pemVBbGwoKX0pLFl0KDIyLCJjbHItaWNvbiIsMjApLGdl''@;'; put 'put ''KDIzLCJzcGFuIiwxOSksUGUoMjQsIk1pbmltaXplIGFsbCB2aWV3Ym94ZXMiKSxtZSgpKCksZ2UoMjUsImEiLDE3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGgucmVzdG9yZUFsbCgpfSksWXQoMjYsImNsci1pY29uIiwyMSksZ2UoMjcsInNwYW4iLDE5KSxQZSgyOCwiUmVzdG9y''@;'; put 'put ''ZSBhbGwgdmlld2JveGVzIiksbWUoKSgpKCkoKSxZdCgyOSwiaHIiKSxndCgzMCxPMnQsMiwwLCJwIiwyMikoMzEsSDJ0LDE1LDEwLCJkaXYiLDIzKSxnZSgzMiwiZGl2IiwyNCkoMzMsInAiLDI1KSxQZSgzNCksbWUoKSgpLFl0KDM1LCJociIpLGd0KDM2LFkydCwzLDIsImRpdiIsMjYpLG1l''@;'; put 'put ''KCkoKSxnZSgzNywiZGl2IiwyNykoMzgsImJ1dHRvbiIsMjgpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaC52aWV3Ym94TW9kYWw9ITF9KSxQZSgzOSwiIE9rICIpLG1lKCkoKSgpLGdlKDQwLCJkaXYiLDI5KSxndCg0MSx0ZnQsMzMsMzcsImRpdiIsMzApLG1lKCksZ2UoNDIsImNs''@;'; put 'put ''ci1tb2RhbCIsMzEpLFdyKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBHcihoLmZpbHRlcix2KXx8KGguZmlsdGVyPXYpLHZ9KSxnZSg0MywiaDMiLDMyKSxQZSg0NCwiIEZpbHRlciBmb3Igdmlld2JveCB0YWJsZTogIiksZ2UoNDUsInNwYW4iKSxQZSg0NiksbWUo''@;'; put 'put ''KSgpLGdlKDQ3LCJkaXYiLDMzKSxndCg0OCxuZnQsMiwxLCJhcHAtcXVlcnkiLDM0KSxtZSgpLGdlKDQ5LCJkaXYiLDI3KSg1MCwiYnV0dG9uIiwzNSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBoLnJlc2V0RmlsdGVyKCl9KSxQZSg1MSwiIHJlc2V0IGZpbHRlciAiKSxtZSgpLGdl''@;'; put 'put ''KDUyLCJidXR0b24iLDI4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGguZmlsdGVyPSExfSksUGUoNTMsIiBDYW5jZWwgIiksbWUoKSxnZSg1NCwiYnV0dG9uIiwzNiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBoLnNlbmRDbGF1c2UoKX0pLFBlKDU1LCIgT2sgIiksbWUo''@;'; put 'put ''KSgpKCkpLDImZCYmKFJlKCJjbHJNb2RhbE9wZW4iLGgudmlld2JveE1vZGFsKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApKCJjbHJNb2RhbFNpemUiLCJsZyIpLF9lKDMpLFJlKCJuZ0lmIixoLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3Ym94X2xpbWl0IT09aC5JbmZpbml0eSksX2UoNiksUmUo''@;'; put 'put ''Im5nSWYiLGgubGlicmFyaWVzTG9hZGluZyksX2UoKSxSZSgibmdJZiIsaC52aWV3Ym94TGltaXRSZWFjaGVkKSxfZSgpLFJlKCJuZ0lmIixoLnZpZXdib3hNb2RhbCksX2UoMTkpLFJlKCJuZ0lmIixoLnZpZXdib3hlcy5sZW5ndGg8MSksX2UoKSxSZSgibmdGb3JPZiIsaC52aWV3Ym94ZXMp''@;'; put 'put ''LF9lKDMpLG1yKCIgQ29uZmlndXJhdGlvbiAoIixudWxsIT1oLnNlbGVjdGVkVmlld2JveFRhYmxlJiZoLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hMaWJEYXRhc2V0PyIjIisobnVsbD09aC5zZWxlY3RlZFZpZXdib3hUYWJsZT9udWxsOmguc2VsZWN0ZWRWaWV3Ym94VGFibGUudmll''@;'; put 'put ''d2JveElkKSsiICIrKG51bGw9PWguc2VsZWN0ZWRWaWV3Ym94VGFibGU/bnVsbDpoLnNlbGVjdGVkVmlld2JveFRhYmxlLnZpZXdib3hMaWJEYXRhc2V0KToic2VsZWN0IHZpZXdib3ggZnJvbSBhYm92ZSIsIikgIiksX2UoMiksUmUoIm5nVmFyIixuUygxOSxrMnQsbnVsbD09aC5zZWxlY3Rl''@;'; put 'put ''ZFZpZXdib3hUYWJsZXx8bnVsbD09aC5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZT9udWxsOmguc2VsZWN0ZWRWaWV3Ym94VGFibGUuaG90VGFibGUuY29sSGVhZGVyc0hpZGRlbixudWxsPT1oLnNlbGVjdGVkVmlld2JveFRhYmxlfHxudWxsPT1oLnNlbGVjdGVkVmlld2JveFRhYmxl''@;'; put 'put ''LmhvdFRhYmxlP251bGw6aC5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RUYWJsZS5jb2xIZWFkZXJzVmlzaWJsZSxudWxsPT1oLnNlbGVjdGVkVmlld2JveFRhYmxlfHxudWxsPT1oLnNlbGVjdGVkVmlld2JveFRhYmxlLmhvdFRhYmxlP251bGw6aC5zZWxlY3RlZFZpZXdib3hUYWJsZS5ob3RU''@;'; put 'put ''YWJsZS5oZWFkZXJQa3MpKSxfZSg1KSxSZSgibmdGb3JPZiIsaC52aWV3Ym94ZXMpLF9lKCksWXIoImNsck1vZGFsT3BlbiIsaC5maWx0ZXIpLFJlKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksX2UoNCksX3UoIiAjIixudWxsPT1oLmZpbHRlcmluZ1ZpZXdi''@;'; put 'put ''b3g/bnVsbDpoLmZpbHRlcmluZ1ZpZXdib3guaWQsIiAiLGguZmlsdGVyTGliZHMsIiAiKSxfZSgyKSxSZSgibmdJZiIsaC5maWx0ZXIpLF9lKDYpLFJlKCJjbHJMb2FkaW5nIixoLmZpbHRlckxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOltWcywkaSxZYSxQYyxpdSxsMCxEaCwkcyx0dWUsYTEs''@;'; put 'put ''UF8sczEsRWQseGQsdTgsRzIsJDIsUTAsX2EsbDgsdWEsTTMsb0osU2IsVGNlLEVjZSxfWix4Y2UsYTRlLHgydCxoeSxqTV0sc3R5bGVzOlsiLmxpY2VuY2Utbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtkaXNwbGF5OmJsb2NrO29wYWNpdHk6LjZ9Y2xyLW1vZGFs''@;'; put 'put ''LnJvb3QtbW9kYWxbX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MTMwMH1jbHItbW9kYWwucm9vdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1ib2R5LXdyYXBwZXJ7aGVpZ2h0OmNhbGMoMTAwJSAtIDYwcHgpfWNsci1tb2RhbC5yb290LW1vZGFsW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgICAgLm1vZGFsLWNvbnRlbnR7aGVpZ2h0Ojgwdmh9Y2xyLW1vZGFsLnJvb3QtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1vZGFsLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowfWNsci1tb2RhbC5yb290LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC5tb2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7aGVpZ2h0OjEwMCV9ZGMtdHJlZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6YXV0bztmbGV4OjF9LnRvb2x0aXAtbG9uZ1tfbmdjb250ZW50LSVDT01QJV17d29yZC1icmVhazpicmVhay13b3JkfS5h''@;'; put 'put ''ZGQtbmV3W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDo1MCU7cGFkZGluZy1yaWdodDo1cHh9LmFkZC1uZXdbX25nY29udGVudC0lQ09NUCVdID4gcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbToxcHh9LnZpZXdib3gtbGltaXQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtv''@;'; put 'put ''cGFjaXR5Oi43O2NvbG9yOiNlNzRjM2N9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuY3VycmVudGx5LW9wZW4gLm9wZW4tdmlld2JveDpob3ZlcntiYWNrZ3JvdW5kOiMzMTRiNTd9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAuY29scy1saXN0e2JhY2tncm91bmQ6IzMxNGI1Nztjb2xvcjojZmZm''@;'; put 'put ''O2JvcmRlci1jb2xvcjojODU4NTg1fSAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmNvbC1ib3h7YmFja2dyb3VuZDojMzE0YjU3O2JvcmRlci1jb2xvcjojODU4NTg1O2NvbG9yOmluaGVyaXR9ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLmN1cnJlbnRseS1vcGVuIC5vcGVuLXZpZXdib3g6aG92''@;'; put 'put ''ZXJ7YmFja2dyb3VuZDojZThlOGU4fSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5jb2xzLWxpc3R7YmFja2dyb3VuZDojZmZmfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5jb2wtYm94e2JhY2tncm91bmQ6I2ZmZn0uY3VycmVudGx5LW9wZW5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjUw''@;'; put 'put ''JX0uY3VycmVudGx5LW9wZW5bX25nY29udGVudC0lQ09NUCVdICAgLm9wZW4tdmlld2JveFtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzozcHggNXB4fS5jdXJyZW50bHktb3Blbltfbmdjb250ZW50LSVDT01QJV0gICAub3Blbi12aWV3Ym94LnNlbGVjdGVkW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMzYzg1MDAyZX0udmlld2JveGVzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6OTk5fS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXXttaW4t''@;'; put 'put ''d2lkdGg6MjAwcHg7bWluLWhlaWdodDoyMDBweDtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7dG9wOjA7cG9pbnRlci1ldmVudHM6YWxsO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4''@;'; put 'put ''O2JveC1zaGFkb3c6MCAwIDEwcHggLTNweCAjMDAwfS52aWV3Ym94LmZvY3VzZWRbX25nY29udGVudC0lQ09NUCVde3otaW5kZXg6MTEwMDtvdXRsaW5lOm5vbmV9LnZpZXdib3hbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29s''@;'; put 'put ''aWQgcmdiYSgwLDAsMCwuMzAxOTYwNzg0Myk7YmFja2dyb3VuZDojZmZmO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7ZmxleDoxO292ZXJmbG93LXg6YXV0b30udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWlu''@;'; put 'put ''LWhlaWdodDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzNjODUwMDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgNXB4O3BvaW50ZXItZXZlbnRzOmFsbH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLnRhYmxlLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLWJyZWFrOmJyZWFrLWFsbH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDttaW4td2lkdGg6MzVweH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWlj''@;'; put 'put ''b25bX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjVweH0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuZHJhZy1oYW5kbGVbX25nY29udGVudC0lQ09NUCVdICAgLmFjdGlvbnNbX25nY29udGVudC0lQ09NUCVdICAgY2xyLWljb25bX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVdOmhvdmVye3RyYW5zZm9ybTpzY2FsZSgxLjMpfS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbGljay1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcn0udmlld2JveFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xpY2staWNvbltfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV06aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMyl9LnZpZXdib3hbX25nY29udGVudC0lQ09NUCVdICAgLmRyYWdIYW5kbGVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlfS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcmFnSGFuZGxlLmNvcm5lcltf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtjdXJzb3I6bndzZS1yZXNpemV9LnZpZXdib3hbX25nY29udGVudC0lQ09NUCVdICAgLmRyYWdIYW5kbGUucmlnaHRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjJweDtoZWlnaHQ6MTAwJTtjdXJzb3I6ZXctcmVzaXpl''@;'; put 'put ''fS52aWV3Ym94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kcmFnSGFuZGxlLmJvdHRvbVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjJweDt3aWR0aDoxMDAlO2N1cnNvcjpucy1yZXNpemV9LmNvbHMtc2VhcmNoW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21hcmdpbi10b3A6NXB4''@;'; put 'put ''O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMjc4NDMxMzcyNSk7Ym9yZGVyLXJhZGl1czozcHh9LmNvbHMtbGlzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCAjY2NjO21pbi1oZWlnaHQ6NjBweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW47ZGlz''@;'; put 'put ''cGxheTpibG9jazt3aWR0aDo0MDBweDttYXgtd2lkdGg6MTAwJTttYXJnaW4tdG9wOjVweH0uY29sLWJveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMTBweDtib3JkZXItYm90dG9tOnNvbGlkIDFweCAjY2NjO2NvbG9yOiMwMDAwMDBkZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJl''@;'; put 'put ''Y3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOm1vdmU7Zm9udC1zaXplOjE0cHh9LmNvbC1ib3guc2VhcmNoW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOiMwMDAw''@;'; put 'put ''MDAxYX0uY29sLWJveC5wcmltYXJ5S2V5SGVhZGVyU3R5bGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzMwNmIwMDI0fS5jZGstZHJhZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzow''@;'; put 'put ''IDVweCA1cHggLTNweCAjMDAwMywwIDhweCAxMHB4IDFweCAjMDAwMDAwMjQsMCAzcHggMTRweCAycHggIzAwMDAwMDFmO3otaW5kZXg6MTMwMCFpbXBvcnRhbnR9LmNkay1kcmFnLXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1kcmFnLWFuaW1hdGluZ1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBjdWJpYy1iZXppZXIoMCwwLC4yLDEpfS5jb2wtYm94W19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxke2JvcmRlcjpub25lfS5jb2xzLWxpc3QuY2RrLWRyb3AtbGlzdC1kcmFnZ2luZ1tfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV0gICAuY29sLWJveFtfbmdjb250ZW50LSVDT01QJV06bm90KC5jZGstZHJhZy1wbGFjZWhvbGRlcil7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBjdWJpYy1iZXppZXIoMCwwLC4yLDEpfS5kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNTt0cmFuc2Zvcm06bm9u''@;'; put 'put ''ZSFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0uZmlsdGVyLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzAwNzJhM31ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSBidXR0b24uY2hhbmdlVHlwZXtkaXNwbGF5Om5v''@;'; put 'put ''bmV9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZSwgaG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0''@;'; put 'put ''LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kOiMzMDZiMDBiMH1ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQ6IzMwNmIwMDZlfWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIHRoLnJlYWRvbmx5''@;'; put 'put ''Q2VsbCBkaXZ7b3BhY2l0eTouNH1ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICB0ZC5yZWFkb25seUNlbGx7b3BhY2l0eTouNX0iXX0pfX1yZXR1cm4gbH0pKCksdTRlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7dGhpcy5maWxlT3Zlcj1uZXcgRHIsdGhpcy5maWxlRHJv''@;'; put 'put ''cD1uZXcgRHIsdGhpcy5lbGVtZW50PWF9b25Ecm9wKGEpe3RoaXMuX3ByZXZlbnRBbmRTdG9wKGEpO2NvbnN0IGQ9YS5kYXRhVHJhbnNmZXI/LmZpbGVzLGg9W107aWYoZClmb3IobGV0IGY9MDtmPGQubGVuZ3RoO2YrKyloLnB1c2goZFtmXSk7dGhpcy51cGxvYWRlcj8uYWRkVG9RdWV1ZSho''@;'; put 'put ''KSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpLHRoaXMuZmlsZURyb3AuZW1pdChoKX1vbkRyYWdPdmVyKGEpe3RoaXMuX3ByZXZlbnRBbmRTdG9wKGEpO2NvbnN0IGQ9YS5kYXRhVHJhbnNmZXI7aWYoZCl7aWYoLTE9PT1kLnR5cGVzLmluZGV4T2YoIkZpbGVzIikpcmV0dXJuO2QuZHJvcEVmZmVj''@;'; put 'put ''dD0iY29weSJ9dGhpcy5maWxlT3Zlci5lbWl0KCEwKX1vbkRyYWdMZWF2ZShhKXt0aGlzLl9wcmV2ZW50QW5kU3RvcChhKSx0aGlzLmZpbGVPdmVyLmVtaXQoITEpfV9wcmV2ZW50QW5kU3RvcChhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKX1zdGF0aWN7dGhpcy5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiYXBwRmlsZURyb3AiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKGQsaCl7MSZkJiZJdCgiZHJvcCIsZnVuY3Rpb24o''@;'; put 'put ''dil7cmV0dXJuIGgub25Ecm9wKHYpfSkoImRyYWdvdmVyIixmdW5jdGlvbih2KXtyZXR1cm4gaC5vbkRyYWdPdmVyKHYpfSkoImRyYWdsZWF2ZSIsZnVuY3Rpb24odil7cmV0dXJuIGgub25EcmFnTGVhdmUodil9KX0saW5wdXRzOnt1cGxvYWRlcjoidXBsb2FkZXIifSxvdXRwdXRzOntmaWxl''@;'; put 'put ''T3ZlcjoiZmlsZU92ZXIiLGZpbGVEcm9wOiJmaWxlRHJvcCJ9fSl9fXJldHVybiBsfSkoKSxkNGU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhKXt0aGlzLmZpbGVTZWxlY3RlZD1uZXcgRHIsdGhpcy5lbGVtZW50PWF9aXNFbXB0eUFmdGVyU2VsZWN0aW9uKCl7cmV0dXJuISF0aGlzLmVs''@;'; put 'put ''ZW1lbnQubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzLm11bHRpcGxlfW9uQ2hhbmdlKCl7Y29uc3QgYT10aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5maWxlczt0aGlzLnVwbG9hZGVyPy5hZGRUb1F1ZXVlKGEpLHRoaXMuZmlsZVNlbGVjdGVkLmVtaXQoYSksdGhpcy5pc0VtcHR5QWZ0ZXJT''@;'; put 'put ''ZWxlY3Rpb24oKSYmKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShOaSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwiYXBwRmls''@;'; put 'put ''ZVNlbGVjdCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGgub25DaGFuZ2UoKX0pfSxpbnB1dHM6e3VwbG9hZGVyOiJ1cGxvYWRlciJ9LG91dHB1dHM6e2ZpbGVTZWxlY3RlZDoiZmlsZVNlbGVjdGVkIn19KX19cmV0''@;'; put 'put ''dXJuIGx9KSgpO2Z1bmN0aW9uIHJmdChsLGMpezEmbCYmKGdlKDAsInAiLDgpLFBlKDEsIiBObyBkYXRhc2V0IG1ldGEgdG8gc2hvdy4gIiksbWUoKSl9ZnVuY3Rpb24gaWZ0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwiY2xyLWRnLWNvbHVtbiIpLFBlKDIpLG1lKCksQnIoKSksMiZsKXtj''@;'; put 'put ''b25zdCBhPWMuJGltcGxpY2l0O19lKDIpLGxyKGEuY29sTmFtZXx8YS5jb2xLZXkpfX1mdW5jdGlvbiBvZnQobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJjbHItZGctY2VsbCIpLFBlKDIpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKS4kaW1wbGljaXQ7X2Uo''@;'; put 'put ''MiksbHIoZFthLmNvbEtleV0pfX1mdW5jdGlvbiBzZnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItZGctcm93IiwxMyksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuJGltcGxpY2l0LGY9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChmLm9uUm93Q2xp''@;'; put 'put ''Y2s/Zi5vblJvd0NsaWNrKGgpOiIiKX0pLGd0KDEsb2Z0LDMsMSwibmctY29udGFpbmVyIiw1KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgyKS4kaW1wbGljaXQ7X2UoKSxSZSgibmdGb3JPZiIsYS5jb2xzVG9EaXNwbGF5KX19ZnVuY3Rpb24gYWZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xy''@;'; put 'put ''LXRhYi1jb250ZW50IiwxMSkoMSwiY2xyLWRhdGFncmlkIiksZ3QoMixpZnQsMywxLCJuZy1jb250YWluZXIiLDUpKDMsc2Z0LDIsMSwiY2xyLWRnLXJvdyIsMTIpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O19lKDIpLFJlKCJuZ0Zvck9mIixhLmNvbHNUb0Rpc3BsYXkp''@;'; put 'put ''LF9lKCksUmUoIm5nRm9yT2YiLGEubWV0YSl9fWZ1bmN0aW9uIGxmdChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10YWIiKSgxLCJidXR0b24iLDkpLFBlKDIpLG1lKCksZ3QoMyxhZnQsNCwyLCJjbHItdGFiLWNvbnRlbnQiLDEwKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1j''@;'; put 'put ''LmluZGV4O19lKDIpLGxyKGEubmFtZSksX2UoKSxSZSgiY2xySWZBY3RpdmUiLDA9PT1kKX19bGV0IGg0ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5vcGVuPSExLHRoaXMuZHNtZXRhPVtdLHRoaXMudmVyc2lvbnM9W10sdGhpcy5vcGVuQ2hhbmdlPW5ldyBEcix0aGlzLnJv''@;'; put 'put ''d0NsaWNrZWQ9bmV3IERyLHRoaXMuZHNtZXRhVGFicz1bXSx0aGlzLnZlcnNpb25zVGFicz1bXSx0aGlzLnRhYnM9W119bmdPbkluaXQoKXt9bmdPbkNoYW5nZXMoYSl7YS5kc21ldGE/LmN1cnJlbnRWYWx1ZT8ubGVuZ3RoPjAmJih0aGlzLnBhcnNlRFNNZXRhKCksdGhpcy5wYXJzZVZlcnNp''@;'; put 'put ''b25zKCksdGhpcy50YWJzPVsuLi50aGlzLmRzbWV0YVRhYnMsLi4udGhpcy52ZXJzaW9uc1RhYnNdKX1wYXJzZURTTWV0YSgpe3RoaXMuZHNtZXRhVGFicz1bXTtmb3IobGV0IGEgb2YgdGhpcy5kc21ldGEpe2xldCBkPXRoaXMuZHNtZXRhVGFicy5maW5kSW5kZXgoaD0+aC5uYW1lPT09YS5P''@;'; put 'put ''RFNfVEFCTEUpO2Q8MCYmKGQ9dGhpcy5kc21ldGFUYWJzLnB1c2goe25hbWU6YS5PRFNfVEFCTEUsdGl0bGU6IkRhdGFzZXQgTWV0YSIsY29sc1RvRGlzcGxheTpbe2NvbEtleToiTkFNRSJ9LHtjb2xLZXk6IlZBTFVFIn1dLG1ldGE6W10sb25Sb3dDbGljazpoPT57dGhpcy5yb3dDbGlja2Vk''@;'; put 'put ''LmVtaXQoaCl9fSktMSksdGhpcy5kc21ldGFUYWJzW2RdLm1ldGEucHVzaChhKX19cGFyc2VWZXJzaW9ucygpe3RoaXMudmVyc2lvbnNUYWJzPVt7bmFtZToiVkVSU0lPTlMiLHRpdGxlOiJEYXRhc2V0IE1ldGEiLGNvbHNUb0Rpc3BsYXk6W3tjb2xLZXk6IkxPQURfUkVGIn0se2NvbEtleToi''@;'; put 'put ''VVNFUl9OTSJ9LHtjb2xLZXk6IlZFUlNJT05fRFRUTSJ9LHtjb2xLZXk6Ik5FV19SRUNPUkRTIixjb2xOYW1lOiJBREQifSx7Y29sS2V5OiJDSEFOR0VEX1JFQ09SRFMiLGNvbE5hbWU6Ik1PRCJ9LHtjb2xLZXk6IkRFTEVURURfUkVDT1JEUyIsY29sTmFtZToiREVMIn0se2NvbEtleToiVkVS''@;'; put 'put ''U0lPTl9ERVNDIn1dLG1ldGE6dGhpcy52ZXJzaW9ucyxvblJvd0NsaWNrOmE9Pnt0aGlzLnJvd0NsaWNrZWQuZW1pdChhKX19XX1vbk9wZW5DaGFuZ2UoYSl7dGhpcy5vcGVuPWEsdGhpcy5vcGVuQ2hhbmdlLmVtaXQoYSl9b25DbG9zZUNsaWNrKCl7dGhpcy5vbk9wZW5DaGFuZ2UoITEpfXN0''@;'; put 'put ''YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWRhdGFzZXQtaW5mbyJdXSxpbnB1dHM6e29wZW46Im9wZW4iLGRzbWV0YToiZHNtZXRhIix2ZXJzaW9uczoidmVy''@;'; put 'put ''c2lvbnMifSxvdXRwdXRzOntvcGVuQ2hhbmdlOiJvcGVuQ2hhbmdlIixyb3dDbGlja2VkOiJyb3dDbGlja2VkIn0sZmVhdHVyZXM6W0phXSxkZWNsczoxMCx2YXJzOjUsY29uc3RzOltbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9k''@;'; put 'put ''YWxDbG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSIsImNlbnRlciIsInRleHQtY2VudGVyIiwiY29sb3ItZGFya2VyLWdyYXkiXSxbMSwibW9kYWwtYm9keSJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xyTGF5b3V0IiwidmVydGljYWwiXSxbNCwibmdGb3IiLCJuZ0Zv''@;'; put 'put ''ck9mIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWluZm8tb3V0bGluZSIsMywiY2xpY2siXSxbMSwidGV4dC1jZW50ZXIiXSxbImNsclRhYkxpbmsiLCIiLCJpZCIsImxpbmsxIl0sWyJpZCIsImNvbnRlbnQxIiwiY2xhc3MiLCJk''@;'; put 'put ''LWZsZXggY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAiLDQsImNscklmQWN0aXZlIl0sWyJpZCIsImNvbnRlbnQxIiwxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsInctMTAwIl0sWyJjbGFzcyIsImNsaWNrYWJsZS1yb3ciLDMsImNsaWNrIiw0LCJuZ0Zv''@;'; put 'put ''ciIsIm5nRm9yT2YiXSxbMSwiY2xpY2thYmxlLXJvdyIsMywiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJjbHItbW9kYWwiLDApLEl0KCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBoLm9uT3BlbkNoYW5nZSh2KX0pLGdlKDEsImgz''@;'; put 'put ''IiwxKSxQZSgyLCJEYXRhc2V0IE1ldGEiKSxtZSgpLGdlKDMsImRpdiIsMiksZ3QoNCxyZnQsMiwwLCJwIiwzKSxnZSg1LCJjbHItdGFicyIsNCksZ3QoNixsZnQsNCwyLCJjbHItdGFiIiw1KSxtZSgpKCksZ2UoNywiZGl2Iiw2KSg4LCJidXR0b24iLDcpLEl0KCJjbGljayIsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gaC5vbkNsb3NlQ2xpY2soKX0pLFBlKDksIiBDbG9zZSAiKSxtZSgpKCkoKSksMiZkJiYoUmUoImNsck1vZGFsT3BlbiIsaC5vcGVuKSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApLF9lKDQpLFJlKCJuZ0lmIixoLmRzbWV0YVRhYnMubGVuZ3Ro''@;'; put 'put ''PDEpLF9lKDIpLFJlKCJuZ0Zvck9mIixoLnRhYnMpKX0sZGVwZW5kZW5jaWVzOltWcywkaSxrOCxfNCxUOCxDbSxTbSxBOCxYXyxNbSxNOCx3bSx4OCxQYyxpdSxJXyxFbSxrbSxQOCxUbSx4bSxMOF0sc3R5bGVzOlsiLm1vZGFsLWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgY2xyLXRhYnNb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde21heC1oZWlnaHQ6NzB2aH0ubW9kYWwtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICAgIC50YWItY29udGVudHt3aWR0aDoxMDAlO292ZXJmbG93OmF1dG99Lm1vZGFsLWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgICAudGFiLWNvbnRlbnQgLmRhdGFncmlk''@;'; put 'put ''LW91dGVyLXdyYXBwZXJ7d2lkdGg6MTAwJX1jbHItbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtZGlhbG9ne2hlaWdodDoxMDAlfS5jbGlja2FibGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcn0gIC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2Vs''@;'; put 'put ''bDpmb2N1c3tvdXRsaW5lOm5vbmU7b3V0bGluZS1vZmZzZXQ6MH0iXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgY2Z0PSgpPT5bIm51bWVyaWMiLHZvaWQgMF0sZjRlPSgpPT5bImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZS5jdXN0b20iXSxzSj0obCxjKT0+KHtjb2w6bCxjb2xJbmRleDpj''@;'; put 'put ''fSksdWZ0PSgpPT5bdm9pZCAwXSxkZnQ9KCk9PlsiU09GVFNFTEVDVCIsIlNPRlRTRUxFQ1RfSE9PSyJdO2Z1bmN0aW9uIGhmdChsLGMpe2lmKDEmbCYmKGdlKDAsInNwYW4iLDE1KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxscihhLmdlbmVyYXRlZFJlY29yZFVybCl9''@;'; put 'put ''fWZ1bmN0aW9uIGZmdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsMTYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsKCkpfSksUGUoMSksbWUoKX1pZigyJmwpe2NvbnN0IGE9TmUoMik7UmUo''@;'; put 'put ''ImRpc2FibGVkIixhLmdlbmVyYXRlRWRpdFJlY29yZFVybExvYWRpbmcpLF9lKCksbXIoIiAiLGEuZ2VuZXJhdGVkUmVjb3JkVXJsPyJjb3B5IHRvIGNsaXBib2FyZCI6YS5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPyJHZW5lcmF0aW5nIHVybC4uLiI6IkxpbmsgdG8gdGhpcyByZWNv''@;'; put 'put ''cmQiLCIgIil9fWZ1bmN0aW9uIHBmdChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsaGZ0LDIsMSwic3BhbiIsMTMpKDIsZmZ0LDIsMiwiYnV0dG9uIiwxNCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIShudWxsIT1hLmN1cnJlbnRSZWNvcmQmJmEuY3VycmVudFJl''@;'; put 'put ''Y29yZC5ub0xpbmtPcHRpb24pKSxfZSgpLFJlKCJuZ0lmIiwhKG51bGwhPWEuY3VycmVudFJlY29yZCYmYS5jdXJyZW50UmVjb3JkLm5vTGlua09wdGlvbikpfX1mdW5jdGlvbiBnZnQobCxjKXsxJmwmJihnZSgwLCJkaXYiLDE3KSgxLCJzcGFuIiwxOCksUGUoMiwiIExvYWRpbmcuLi4gIiks''@;'; put 'put ''bWUoKSgpKX1mdW5jdGlvbiBtZnQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwzMSl9ZnVuY3Rpb24gdmZ0KGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIsMzIpLFBlKDEsIiBMb2FkaW5nLi4uICIpLG1lKCkpfWZ1bmN0aW9uIF9mdChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDMzKX1mdW5j''@;'; put 'put ''dGlvbiBiZnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaW5wdXQtY29udGFpbmVyIiwzNSkoMSwiaW5wdXQiLDM2KSxJdCgiZm9jdXNpbiIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgzKS5pbmRleDtyZXR1cm4gYnQoTmUoMikub25SZWNvcmRJbnB1dEZvY3Vz''@;'; put 'put ''KGgsZikpfSkoInBhc3RlIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoNSkucmVjb3JkSW5wdXRQYXN0ZShoKSl9KSgiaW5wdXQiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMykuJGltcGxpY2l0LHY9TmUoMik7cmV0dXJuIHYucmVjb3JkSW5wdXRDaGFuZ2UoaCxmLmtl''@;'; put 'put ''eSksYnQodi5jdXJyZW50UmVjb3JkLm5vTGlua09wdGlvbj0hMCl9KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgzKS4kaW1wbGljaXQsdj1OZSgyKTtyZXR1cm4gR3Iodi5jdXJyZW50UmVjb3JkW2Yua2V5XSxoKXx8KHYuY3VycmVudFJlY29yZFtm''@;'; put 'put ''LmtleV09aCksYnQoaCl9KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpLiRpbXBsaWNpdCxkPU5lKDIpO3ByKCJpbnZhbGlkLWRhdGEiLGQuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKGEua2V5KSksX2UoKSxZcigibmdNb2RlbCIsZC5jdXJyZW50UmVjb3JkW2Eua2V5''@;'; put 'put ''XSl9fWZ1bmN0aW9uIHlmdChsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24gd2Z0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiksZ3QoMSx5ZnQsMSwwLCJuZy1jb250YWluZXIiLDM3KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyksZD1hLiRpbXBsaWNpdCxoPWEuaW5kZXg7TmUoMik7Y29uc3Qg''@;'; put 'put ''Zj1HaSgxNik7X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZikoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixmMygyLHNKLGQsaCkpfX1mdW5jdGlvbiBDZnQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLGJmdCwyLDMsImNsci1pbnB1dC1jb250YWluZXIiLDM0KSgyLHdmdCwyLDUsImRp''@;'; put 'put ''diIsNSksQnIoKSksMiZsKXtsZXQgYSxkO2NvbnN0IGg9TmUoMikuJGltcGxpY2l0LGY9TmUoMik7X2UoKSxSZSgibmdJZiIsbGEoMixjZnQpLmluY2x1ZGVzKG51bGw9PWYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGE9Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUo''@;'; put 'put ''aC5rZXkpKT9udWxsOmEuZWRpdG9yKSksX2UoKSxSZSgibmdJZiIsbGEoMyxmNGUpLmluY2x1ZGVzKG51bGw9PWYuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGQ9Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUoaC5rZXkpKT9udWxsOmQuZWRpdG9yKSl9fWZ1bmN0aW9u''@;'; put 'put ''IFNmdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10ZXh0YXJlYS1jb250YWluZXIiKSgxLCJ0ZXh0YXJlYSIsMzgsMSksSXQoImZvY3VzaW4iLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMykuaW5kZXg7cmV0dXJuIGJ0KE5lKDIpLm9uUmVjb3JkSW5wdXRGb2N1''@;'; put 'put ''cyhoLGYpKX0pKCJwYXN0ZSIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKDUpLnJlY29yZElucHV0UGFzdGUoaCkpfSkoImlucHV0IixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDMpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoMikucmVjb3JkSW5wdXRDaGFuZ2UoaCxmLmtl''@;'; put 'put ''eSkpfSksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMykuJGltcGxpY2l0LHY9TmUoMik7cmV0dXJuIEdyKHYuY3VycmVudFJlY29yZFtmLmtleV0saCl8fCh2LmN1cnJlbnRSZWNvcmRbZi5rZXldPWgpLGJ0KGgpfSksUGUoMywiICAgICAgICAgICAg''@;'; put 'put ''ICAgICAgIiksbWUoKSxnZSg0LCJjbHItY29udHJvbC1oZWxwZXIiKSxQZSg1KSxtZSgpKCl9aWYoMiZsKXtsZXQgYSxkLGg7Y29uc3QgZj1HaSgyKSx2PU5lKDMpLiRpbXBsaWNpdCxTPU5lKDIpO19lKCkscHIoImludmFsaWQtZGF0YSIsUy5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5j''@;'; put 'put ''bHVkZXModi5rZXkpKSgibm90LWNoYXIiLG51bGw9PVMuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGE9Uy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUodi5rZXkpKT9udWxsOmEudHlwZSksUmUoInJvd3MiLHYudmFsdWUubGVuZ3RoPjgwPzY6MSksWXIoIm5nTW9kZWwi''@;'; put 'put ''LFMuY3VycmVudFJlY29yZFt2LmtleV0pLFJlKCJtYXhMZW5ndGgiLG51bGw9PVMuY3VycmVudFJlY29yZFZhbGlkYXRvcnx8bnVsbD09KGQ9Uy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmdldFJ1bGUodi5rZXkpKT9udWxsOmQubGVuZ3RoKSxfZSg0KSxfdSgiIixmLnZhbHVlLmxlbmd0aCwi''@;'; put 'put ''IC8gIixudWxsPT1TLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShoPVMuY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKHYua2V5KSk/bnVsbDpoLmxlbmd0aCwiIil9fWZ1bmN0aW9uIE1mdChsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24geGZ0KGwsYyl7aWYoMSZsJiYoZ2Uo''@;'; put 'put ''MCwiZGl2IiksZ3QoMSxNZnQsMSwwLCJuZy1jb250YWluZXIiLDM3KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyksZD1hLiRpbXBsaWNpdCxoPWEuaW5kZXg7TmUoMik7Y29uc3QgZj1HaSgxNik7X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZikoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0''@;'; put 'put ''IixmMygyLHNKLGQsaCkpfX1mdW5jdGlvbiBFZnQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLFNmdCw2LDksImNsci10ZXh0YXJlYS1jb250YWluZXIiLDUpKDIseGZ0LDIsNSwiZGl2Iiw1KSxCcigpKSwyJmwpe2xldCBhLGQ7Y29uc3QgaD1OZSgyKS4kaW1wbGljaXQsZj1OZSgyKTtfZSgp''@;'; put 'put ''LFJlKCJuZ0lmIixsYSgyLHVmdCkuaW5jbHVkZXMobnVsbD09Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oYT1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6YS5lZGl0b3IpKSxfZSgpLFJlKCJuZ0lmIixsYSgzLGY0ZSkuaW5jbHVkZXMobnVs''@;'; put 'put ''bD09Zi5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oZD1mLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShoLmtleSkpP251bGw6ZC5lZGl0b3IpKX19ZnVuY3Rpb24gVGZ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRleHRhcmVhLWNvbnRhaW5lciIs''@;'; put 'put ''MzkpKDEsInRleHRhcmVhIiw0MCksSXQoInBhc3RlIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoNCkucmVjb3JkSW5wdXRQYXN0ZShoKSl9KSgiaW5wdXQiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChOZSgyKS5yZWNvcmRJbnB1''@;'; put 'put ''dENoYW5nZShoLGYua2V5KSl9KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKS4kaW1wbGljaXQsdj1OZSgyKTtyZXR1cm4gR3Iodi5jdXJyZW50UmVjb3JkW2Yua2V5XSxoKXx8KHYuY3VycmVudFJlY29yZFtmLmtleV09aCksYnQoaCl9KSxtZSgp''@;'; put 'put ''LGdlKDIsImNsci1jb250cm9sLWhlbHBlciIpLFBlKDMsIkhIOm1tOnNzIiksbWUoKSgpfWlmKDImbCl7bGV0IGE7Y29uc3QgZD1OZSgyKS4kaW1wbGljaXQsaD1OZSgyKTtfZSgpLHByKCJpbnZhbGlkLWRhdGEiLGguY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluY2x1ZGVzKGQua2V5KSko''@;'; put 'put ''Im5vdC1jaGFyIixudWxsPT1oLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShhPWguY3VycmVudFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGQua2V5KSk/bnVsbDphLnR5cGUpLFJlKCJyb3dzIixkLnZhbHVlLmxlbmd0aD44MD82OjEpLFlyKCJuZ01vZGVsIixoLmN1cnJlbnRSZWNv''@;'; put 'put ''cmRbZC5rZXldKX19ZnVuY3Rpb24ga2Z0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwzOSkoMSwidGV4dGFyZWEiLDQxKSxJdCgicGFzdGUiLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSg0KS5yZWNvcmRJbnB1dFBhc3RlKGgpKX0pKCJpbnB1dCIsZnVuY3Rp''@;'; put 'put ''b24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKDIpLnJlY29yZElucHV0Q2hhbmdlKGgsZi5rZXkpKX0pLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpLiRpbXBsaWNpdCx2PU5lKDIpO3JldHVybiBHcih2LmN1''@;'; put 'put ''cnJlbnRSZWNvcmRbZi5rZXldLGgpfHwodi5jdXJyZW50UmVjb3JkW2Yua2V5XT1oKSxidChoKX0pLG1lKCksZ2UoMiwiY2xyLWRhdGUtY29udGFpbmVyIiw0MikoMywiaW5wdXQiLDQzKSxJdCgiY2xyRGF0ZUNoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKS4kaW1wbGlj''@;'; put 'put ''aXQ7cmV0dXJuIGJ0KE5lKDIpLnJlY29yZERhdGVDaGFuZ2UoaCxmLmtleSkpfSksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpLiRpbXBsaWNpdCxkPU5lKDIpO19lKCkscHIoImludmFsaWQtZGF0YSIsZC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMuaW5jbHVkZXMoYS5rZXkpKSxZ''@;'; put 'put ''cigibmdNb2RlbCIsZC5jdXJyZW50UmVjb3JkW2Eua2V5XSl9fWZ1bmN0aW9uIEFmdChsLGMpezEmbCYmemwoMCl9ZnVuY3Rpb24gRGZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiksZ3QoMSxBZnQsMSwwLCJuZy1jb250YWluZXIiLDM3KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMiksZD1h''@;'; put 'put ''LiRpbXBsaWNpdCxoPWEuaW5kZXg7TmUoMik7Y29uc3QgZj1HaSgxNik7X2UoKSxSZSgibmdUZW1wbGF0ZU91dGxldCIsZikoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixmMygyLHNKLGQsaCkpfX1mdW5jdGlvbiBJZnQobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJkaXYiLDIwKSgyLCJk''@;'; put 'put ''aXYiLDIxKSgzLCJwIiwyMiksUGUoNCksZ3QoNSxtZnQsMSwwLCJjbHItaWNvbiIsMjMpLG1lKCksZ2UoNiwicCIsMjQpLFBlKDcpLG1lKCkoKSxnZSg4LCJkaXYiLDI1KSxndCg5LHZmdCwyLDAsInNwYW4iLDI2KSgxMCxfZnQsMSwwLCJjbHItaWNvbiIsMjcpKDExLENmdCwzLDQsIm5nLWNv''@;'; put 'put ''bnRhaW5lciIsMjgpKDEyLEVmdCwzLDQsIm5nLWNvbnRhaW5lciIsMjgpKDEzLFRmdCw0LDYsImNsci10ZXh0YXJlYS1jb250YWluZXIiLDI5KSgxNCxrZnQsNCwzLCJkaXYiLDI5KSgxNSxEZnQsMiw1LCJkaXYiLDI4KSxtZSgpKCksWXQoMTYsImhyIiwzMCksQnIoKSksMiZsKXtsZXQgYSxk''@;'; put 'put ''O2NvbnN0IGg9TmUoKSxmPWguJGltcGxpY2l0LHY9aC5pbmRleCxTPU5lKDIpO19lKDQpLG1yKCIgIixmLmtleSwiICIpLF9lKCksUmUoIm5nSWYiLFMuaXNDb2xQayhmLmtleSkpLF9lKDIpLG1yKCIgIixudWxsPT1TLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShhPVMuY3VycmVu''@;'; put 'put ''dFJlY29yZFZhbGlkYXRvci5nZXRSdWxlKGYua2V5KSk/bnVsbDphLmRlc2MsIiAiKSxfZSgpLFJlKCJuZ1N3aXRjaCIsbnVsbD09Uy5jdXJyZW50UmVjb3JkVmFsaWRhdG9yfHxudWxsPT0oZD1TLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShmLmtleSkpP251bGw6ZC50eXBlKSxf''@;'; put 'put ''ZSgpLFJlKCJuZ0lmIixTLmN1cnJlbnRSZWNvcmRMb2FkaW5ncy5pbmNsdWRlcyh2KSksX2UoKSxSZSgibmdJZiIsUy5jdXJyZW50UmVjb3JkRXJyb3JzLmluY2x1ZGVzKHYpKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJudW1lcmljIiksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIix2b2lkIDAp''@;'; put 'put ''LF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIsInRpbWUiKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJkYXRlIiksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwiYXV0b2NvbXBsZXRlIil9fWZ1bmN0aW9uIFJmdChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsSWZ0LDE3LDExLCJuZy1jb250YWluZXIi''@;'; put 'put ''LDUpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwiQWN0aW9uIiE9PWEua2V5JiYiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIiE9PWEua2V5JiYibm9MaW5rT3B0aW9uIiE9PWEua2V5KX19ZnVuY3Rpb24gTGZ0KGwsYyl7aWYoMSZsJiYoVnIo''@;'; put 'put ''MCksZ3QoMSxSZnQsMiwxLCJuZy1jb250YWluZXIiLDE5KSxnYSgyLCJrZXl2YWx1ZSIpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKCksUmUoIm5nRm9yT2YiLFU2KDIsMixhLmN1cnJlbnRSZWNvcmQsYS5vcmlnaW5hbE9yZGVyKSkoIm5nRm9yVHJhY2tCeSIsYS50cmFja0J5Rm4pfX1m''@;'; put 'put ''dW5jdGlvbiBPZnQobCxjKXsxJmwmJihnZSgwLCJjbHItYWxlcnQiLDQ0KSgxLCJjbHItYWxlcnQtaXRlbSIpKDIsInNwYW4iLDQ1KSxQZSgzLCIgRGF0YSBWYWxpZGF0aW9uIEVycm9ycyAtIFBsZWFzZSBSZXZpZXcgIiksbWUoKSgpKCkpLDImbCYmKGdkKCJ2aXNpYmlsaXR5IixOZSgpLmN1''@;'; put 'put ''cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MD8idmlzaWJsZSI6ImhpZGRlbiIpLFJlKCJjbHJBbGVydENsb3NhYmxlIiwhMSkoImNsckFsZXJ0VHlwZSIsImRhbmdlciIpKX1mdW5jdGlvbiBQZnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDQ2KSgxLCJidXR0''@;'; put 'put ''b24iLDQ3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25QcmV2aW91c1JlY29yZENsaWNrKCkpfSksWXQoMiwiY2xyLWljb24iLDQ4KSxtZSgpLGdlKDMsInAiKSxQZSg0LCIgQ3VycmVudCByb3c6ICIpLGdlKDUsInN0cm9uZyIpLFBlKDYpLG1lKCkoKSxn''@;'; put 'put ''ZSg3LCJidXR0b24iLDQ3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25OZXh0UmVjb3JkQ2xpY2soKSl9KSxZdCg4LCJjbHItaWNvbiIsNDkpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJkaXNhYmxlZCIsYS5jdXJyZW50UmVjb3Jk''@;'; put 'put ''SW52YWxpZENvbHMubGVuZ3RoPjApLF9lKDUpLG1yKCIgIixhLmN1cnJlbnRSZWNvcmRJbmRleCsxLCIgIiksX2UoKSxSZSgiZGlzYWJsZWQiLGEuY3VycmVudFJlY29yZEludmFsaWRDb2xzLmxlbmd0aD4wKX19ZnVuY3Rpb24gRmZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwib3B0aW9uIiw1Myks''@;'; put 'put ''UGUoMSksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJuZ1ZhbHVlIixhKSxfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIE5mdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIpKDEsImFwcC1zb2Z0LXNlbGVjdCIsNTEpLEl0KCJmb2N1c2luIixmdW5j''@;'; put 'put ''dGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuY29sSW5kZXg7cmV0dXJuIGJ0KE5lKCkub25SZWNvcmRJbnB1dEZvY3VzKGgsZikpfSksV3IoInZhbHVlQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuY29sLHY9TmUoKTtyZXR1cm4gR3Iodi5jdXJyZW50UmVjb3JkW2Yu''@;'; put 'put ''a2V5XSxoKXx8KHYuY3VycmVudFJlY29yZFtmLmtleV09aCksYnQoaCl9KSxJdCgib25JbnB1dEV2ZW50IixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKSxmPWguY29sLHY9aC5jb2xJbmRleDtyZXR1cm4gYnQoTmUoKS5vblJlY29yZERyb3Bkb3duQ2hhbmdlKGYua2V5LHYpKX0pLGd0''@;'; put 'put ''KDIsRmZ0LDIsMiwib3B0aW9uIiw1MiksbWUoKSgpfWlmKDImbCl7bGV0IGE7Y29uc3QgZD1OZSgpLmNvbCxoPU5lKCk7X2UoKSxZcigidmFsdWUiLGguY3VycmVudFJlY29yZFtkLmtleV0pLFJlKCJpbnB1dElkIixkLmtleSksX2UoKSxSZSgibmdGb3JPZiIsbnVsbD09aC5jdXJyZW50UmVj''@;'; put 'put ''b3JkVmFsaWRhdG9yfHxudWxsPT0oYT1oLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3IuZ2V0UnVsZShkLmtleSkpP251bGw6YS5zb3VyY2UpfX1mdW5jdGlvbiBIZnQobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDU2KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUo''@;'; put 'put ''InZhbHVlIixhKSxfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIFZmdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsInNlbGVjdCIsNTQpLEl0KCJmb2N1c2luIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuY29sSW5kZXg7cmV0dXJuIGJ0KE5lKCkub25SZWNvcmRJ''@;'; put 'put ''bnB1dEZvY3VzKGgsZikpfSksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS5jb2wsdj1OZSgpO3JldHVybiBHcih2LmN1cnJlbnRSZWNvcmRbZi5rZXldLGgpfHwodi5jdXJyZW50UmVjb3JkW2Yua2V5XT1oKSxidChoKX0pLGd0KDEsSGZ0LDIsMiwi''@;'; put 'put ''b3B0aW9uIiw1NSksbWUoKX1pZigyJmwpe2xldCBhO2NvbnN0IGQ9TmUoKS5jb2wsaD1OZSgpO1lyKCJuZ01vZGVsIixoLmN1cnJlbnRSZWNvcmRbZC5rZXldKSxfZSgpLFJlKCJuZ0Zvck9mIixudWxsPT1oLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3J8fG51bGw9PShhPWguY3VycmVudFJlY29y''@;'; put 'put ''ZFZhbGlkYXRvci5nZXRSdWxlKGQua2V5KSk/bnVsbDphLnNvdXJjZSl9fWZ1bmN0aW9uIEJmdChsLGMpe2lmKDEmbCYmZ3QoMCxOZnQsMywzLCJkaXYiLDUwKSgxLFZmdCwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDIsYnUpLDImbCl7Y29uc3QgYT1jLmNvbCxkPUdpKDIpLGg9TmUoKTtSZSgi''@;'; put 'put ''bmdJZiIsbnVsbD09aC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yP251bGw6aC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yLmhhc0RxUnVsZXMoYS5rZXksbGEoMixkZnQpKSkoIm5nSWZFbHNlIixkKX19bGV0IGpmdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCl7dGhpcy5zYXNTdG9yZVNl''@;'; put 'put ''cnZpY2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9ZCx0aGlzLnJlY29yZEFjdGlvbj1udWxsLHRoaXMuZmlsdGVyPSExLHRoaXMuc3VibWl0TG9hZGluZz0hMSx0aGlzLmhlYWRlclBrcz1bXSx0aGlzLmNlbGxWYWxpZGF0aW9uPVtdLHRoaXMuY3VycmVudFJlY29yZEluZGV4PS0xLHRoaXMuY3Vy''@;'; put 'put ''cmVudFJlY29yZExvYWRpbmdzPVtdLHRoaXMuY3VycmVudFJlY29yZEVycm9ycz1bXSx0aGlzLm9uUmVjb3JkQ2hhbmdlPW5ldyBEcix0aGlzLm9uUmVjb3JkSW5wdXRGb2N1c2VkPW5ldyBEcix0aGlzLm9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkPW5ldyBEcix0aGlzLm9uUmVjb3JkRWRpdENs''@;'; put 'put ''b3NlPW5ldyBEcix0aGlzLm9uUmVjb3JkRWRpdENvbmZpcm09bmV3IERyLHRoaXMub25OZXh0UmVjb3JkPW5ldyBEcix0aGlzLm9uUHJldmlvdXNSZWNvcmQ9bmV3IERyLHRoaXMuY3VycmVudFJlY29yZEludmFsaWRDb2xzPVtdLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0h''@;'; put 'put ''MSx0aGlzLmdlbmVyYXRlZFJlY29yZFVybD1udWxsLHRoaXMuYWRkUmVjb3JkVXJsPW51bGwsdGhpcy5yZWNvcmROZXdPclBrTW9kaWZpZWQ9ITEsdGhpcy5hZGRSZWNvcmRMb2FkaW5nPSExLHRoaXMub3JpZ2luYWxPcmRlcj0oaCxmKT0+MH1uZ09uSW5pdCgpe312YWxpZGF0ZVJlY29yZENv''@;'; put 'put ''bChhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmLHYpPT57aC5jdXJyZW50UmVjb3JkVmFsaWRhdG9yPy5leGVjdXRlSG90VmFsaWRhdG9yKGEsZCxTPT57ZihTKX0pfSl9KSgpfXJlY29yZERhdGVDaGFuZ2UoYSxkKXtsZXQgaD10aGlz''@;'; put 'put ''LmN1cnJlbnRSZWNvcmRWYWxpZGF0b3I/LmdldFJ1bGUoZCksZj1oP2guZGF0ZUZvcm1hdDoiIjt0aGlzLmN1cnJlbnRSZWNvcmQmJih0aGlzLmN1cnJlbnRSZWNvcmRbZF09TnJlKCkoYSkuZm9ybWF0KGYpKX1jb25maXJtUmVjb3JkRWRpdCgpe3RoaXMuY3VycmVudFJlY29yZEludmFsaWRD''@;'; put 'put ''b2xzLmxlbmd0aDwxJiZ0aGlzLm9uUmVjb3JkQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UmVjb3JkKX1jbG9zZVJlY29yZEVkaXQoKXt0aGlzLm9uUmVjb3JkRWRpdENsb3NlLmVtaXQoKX1vblJlY29yZERyb3Bkb3duQ2hhbmdlKGEsZCl7dGhpcy5vblJlY29yZERyb3Bkb3duQ2hhbmdlZC5l''@;'; put 'put ''bWl0KHtjb2xOYW1lOmEsY29sOmR9KX1vblJlY29yZElucHV0Rm9jdXMoYSxkKXt0aGlzLm9uUmVjb3JkSW5wdXRGb2N1c2VkLmVtaXQoe2V2ZW50OmEsY29sTmFtZTpkfSl9cmVjb3JkSW5wdXRQYXN0ZShhKXtzZXRUaW1lb3V0KCgpPT57YS50YXJnZXQudmFsdWU9YS50YXJnZXQudmFsdWUu''@;'; put 'put ''cmVwbGFjZSgvXHMrJC8sIiIpfSwwKX1yZWNvcmRJbnB1dENoYW5nZShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7Y29uc3QgZj1oLmN1cnJlbnRSZWNvcmRWYWxpZGF0b3I/LmdldFJ1bGUoZCksdj1hLnRhcmdldC52YWx1ZTtoLmhlbHBlclNlcnZpY2UuZGVib3VuY2VD''@;'; put 'put ''YWxsKDMwMCwoKT0+e2gudmFsaWRhdGVSZWNvcmRDb2woZix2KS50aGVuKFM9Pntjb25zdCBWPWguY3VycmVudFJlY29yZEludmFsaWRDb2xzLmluZGV4T2YoZCk7Uz9WPi0xJiZoLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5zcGxpY2UoViwxKTpWPDAmJmguY3VycmVudFJlY29yZEludmFs''@;'; put 'put ''aWRDb2xzLnB1c2goZCl9KX0pfSkoKX1vbk5leHRSZWNvcmRDbGljaygpe3RoaXMub25OZXh0UmVjb3JkLmVtaXQoKX1vblByZXZpb3VzUmVjb3JkQ2xpY2soKXt0aGlzLm9uUHJldmlvdXNSZWNvcmQuZW1pdCgpfWNvcHlUb0NsaXAoYSl7Y29uc3QgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9y''@;'; put 'put ''KCIjcmVjb3JkTW9kYWxSZWYgLm1vZGFsLXRpdGxlIik7aWYoZCl7Y29uc3QgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2guc3R5bGUucG9zaXRpb249ImZpeGVkIixoLnN0eWxlLmxlZnQ9IjAiLGguc3R5bGUudG9wPSIwIixoLnN0eWxlLm9wYWNpdHk9IjAiLGguc3R5''@;'; put 'put ''bGUuekluZGV4PSI1MDAwIixoLnZhbHVlPWEsZC5hcHBlbmRDaGlsZChoKSxoLmZvY3VzKCksaC5zZWxlY3QoKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLGQucmVtb3ZlQ2hpbGQoaCksdGhpcy5nZW5lcmF0ZWRSZWNvcmRVcmw9YX19Z2VuZXJhdGVFZGl0UmVjb3JkVXJsKCl7dmFy''@;'; put 'put ''IGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtpZihhLmdlbmVyYXRlZFJlY29yZFVybClhLmNvcHlUb0NsaXAoYS5nZW5lcmF0ZWRSZWNvcmRVcmwpO2Vsc2V7YS5nZW5lcmF0ZUVkaXRSZWNvcmRVcmxMb2FkaW5nPSEwO2NvbnN0IGQ9W107YS5oZWFkZXJQa3MuZm9yRWFjaChoPT57bGV0''@;'; put 'put ''IGY9IkMiLHY9IiI7Zm9yKGxldCBTPTA7UzxhLmNlbGxWYWxpZGF0aW9uLmxlbmd0aDtTKyspe2NvbnN0IFY9YS5jZWxsVmFsaWRhdGlvbltTXTtpZihWLmRhdGE9PT1oKXsoIm51bWVyaWMiPT09Vi50eXBlfHwiZGF0ZSI9PT1WLnR5cGV8fCJ0aW1lIj09PVYudHlwZSkmJihmPSJOIik7YnJl''@;'; put 'put ''YWt9fXY9IkMiPT09Zj9gJyR7YS5jdXJyZW50UmVjb3JkW2hdfSdgOmEuY3VycmVudFJlY29yZFtoXS50b1N0cmluZygpLGQucHVzaCh7R1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfTE9HSUM6IkFORCIsU1VCR1JPVVBfSUQ6MCxWQVJJQUJMRV9OTTpoLE9QRVJBVE9SX05NOiI9IixSQVdf''@;'; put 'put ''VkFMVUU6dn0pfSksZC5sZW5ndGg+MCYmYS5saWJkcyYmKHlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLnNhdmVRdWVyeShhLmxpYmRzLGQpLnRoZW4oaD0+e2EucXVlcnlGaWx0ZXI9e2lkOmgucmVzdWx0WzBdLkZJTFRFUl9SSyx0YWJsZTpoLnJlc3VsdFswXS5GSUxURVJfVEFCTEV9O2NvbnN0''@;'; put 'put ''IFM9bG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdKyIjL2VkaXRvci9lZGl0LXJlY29yZC8iK2EucXVlcnlGaWx0ZXIudGFibGUrIi8iK2EucXVlcnlGaWx0ZXIuaWQ7YS5jb3B5VG9DbGlwKFMpLGEuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSxhLmZpbHRlcj0hMX0pLmNhdGNo''@;'; put 'put ''KGg9PnthLnN1Ym1pdExvYWRpbmc9ITF9KSl9fSkoKX1pc0NvbFBrKGEpe3JldHVybiB0aGlzLmhlYWRlclBrcy5pbmRleE9mKGEpPi0xfXRyYWNrQnlGbihhLGQpe3JldHVybiBhfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKFpkKSxKZShl''@;'; put 'put ''dSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWVkaXQtcmVjb3JkIl1dLGlucHV0czp7Y3VycmVudFJlY29yZDoiY3VycmVudFJlY29yZCIscmVjb3JkQWN0aW9uOiJyZWNvcmRBY3Rpb24iLGxpYmRzOiJsaWJkcyIscXVlcnlGaWx0ZXI6InF1''@;'; put 'put ''ZXJ5RmlsdGVyIixmaWx0ZXI6ImZpbHRlciIsc3VibWl0TG9hZGluZzoic3VibWl0TG9hZGluZyIsaGVhZGVyUGtzOiJoZWFkZXJQa3MiLGNlbGxWYWxpZGF0aW9uOiJjZWxsVmFsaWRhdGlvbiIsY3VycmVudFJlY29yZEluZGV4OiJjdXJyZW50UmVjb3JkSW5kZXgiLGN1cnJlbnRSZWNvcmRM''@;'; put 'put ''b2FkaW5nczoiY3VycmVudFJlY29yZExvYWRpbmdzIixjdXJyZW50UmVjb3JkRXJyb3JzOiJjdXJyZW50UmVjb3JkRXJyb3JzIixjdXJyZW50UmVjb3JkVmFsaWRhdG9yOiJjdXJyZW50UmVjb3JkVmFsaWRhdG9yIn0sb3V0cHV0czp7b25SZWNvcmRDaGFuZ2U6Im9uUmVjb3JkQ2hhbmdlIixv''@;'; put 'put ''blJlY29yZElucHV0Rm9jdXNlZDoib25SZWNvcmRJbnB1dEZvY3VzZWQiLG9uUmVjb3JkRHJvcGRvd25DaGFuZ2VkOiJvblJlY29yZERyb3Bkb3duQ2hhbmdlZCIsb25SZWNvcmRFZGl0Q2xvc2U6Im9uUmVjb3JkRWRpdENsb3NlIixvblJlY29yZEVkaXRDb25maXJtOiJvblJlY29yZEVkaXRD''@;'; put 'put ''b25maXJtIixvbk5leHRSZWNvcmQ6Im9uTmV4dFJlY29yZCIsb25QcmV2aW91c1JlY29yZDoib25QcmV2aW91c1JlY29yZCJ9LGRlY2xzOjE3LHZhcnM6MTEsY29uc3RzOltbImF1dG9jb21wbGV0ZSIsIiJdLFsiY2hhclRleHRhcmVhIiwiIl0sWyJvdGhlcl90aGFuX3NvZnRfc2VsZWN0Iiwi''@;'; put 'put ''Il0sWyJpZCIsInJlY29yZE1vZGFsUmVmIiwxLCJyZWNvcmQtZWRpdC1tb2RhbCIsInBvc2l0aW9uLXJlbGF0aXZlIiwzLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbENsb3NhYmxlIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzQsIm5nSWYiXSxbMSwibW9kYWwtYm9keSJdLFsiY2xhc3MiLCJkLWZs''@;'; put 'put ''ZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgcHktMTAiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIiwicC0wIiwiY2xyLWdhcC01IiwiY2xyLWdhcC1tZC0wIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtbWQtcm93Il0sWyJjbGFzcyIs''@;'; put 'put ''InZhbGlkYXRpb24taW5mby1hbGVydCIsMywidmlzaWJpbGl0eSIsImNsckFsZXJ0Q2xvc2FibGUiLCJjbHJBbGVydFR5cGUiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJldi1uZXh0Iiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsImZvY3VzYWJsZSIs''@;'; put 'put ''Im1yLTVpIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJmb2N1c2FibGUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbImNsYXNzIiwicG9zaXRpb24tYWJzb2x1dGUgZ2VuZXJhdGUtcmVjb3JkLXVybCIsNCwibmdJZiJdLFsiY2xhc3MiLCJidG4g''@;'; put 'put ''YnRuLWxpbmsgZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b24gcG9zaXRpb24tYWJzb2x1dGUiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwicG9zaXRpb24tYWJzb2x1dGUiLCJnZW5lcmF0ZS1yZWNvcmQtdXJsIl0sWzEsImJ0biIsImJ0bi1saW5rIiwiZ2VuZXJhdGUtcmVj''@;'; put 'put ''b3JkLXVybC1idXR0b24iLCJwb3NpdGlvbi1hYnNvbHV0ZSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIiwidy0xMDAiLCJweS0xMCJdLFsxLCJzcGlubmVyIl0sWzQsIm5nRm9yIiwibmdGb3JP''@;'; put 'put ''ZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJjb2x1bW4tZW50cnkiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZmxleC1tZC1yb3ciXSxbMSwibmFtZS1pbnB1dC1yb3ciXSxbMSwiZm9udC13ZWlnaHQtYm9sZCJdLFsic2hhcGUiLCJrZXkiLDQsIm5nSWYiXSxbMSwiY2VsbC1kZXNjIl0sWzEsImlu''@;'; put 'put ''cHV0cy13cmFwcGVyIiwicG9zaXRpb24tcmVsYXRpdmUiLDMsIm5nU3dpdGNoIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1pbmxpbmUgZmxleC11bnNldCBwb3NpdGlvbi1hYnNvbHV0ZSBlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCIsNCwibmdJZiJdLFsiY2xhc3MiLCJmbGV4LXVuc2V0''@;'; put 'put ''IHBvc2l0aW9uLWFic29sdXRlIGVudHJ5LWlucHV0LWxlZnQtb2Zmc2V0Iiwic2hhcGUiLCJlcnJvci1zdGFuZGFyZCIsInN0YXR1cyIsIndhcm5pbmciLDQsIm5nSWYiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsImRhdGUtZmllbGQiLDQsIm5nU3dpdGNoQ2FzZSJdLFsxLCJtdC0x''@;'; put 'put ''MCJdLFsic2hhcGUiLCJrZXkiXSxbMSwic3Bpbm5lciIsInNwaW5uZXItaW5saW5lIiwiZmxleC11bnNldCIsInBvc2l0aW9uLWFic29sdXRlIiwiZW50cnktaW5wdXQtbGVmdC1vZmZzZXQiXSxbInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLCJzdGF0dXMiLCJ3YXJuaW5nIiwxLCJmbGV4LXVu''@;'; put 'put ''c2V0IiwicG9zaXRpb24tYWJzb2x1dGUiLCJlbnRyeS1pbnB1dC1sZWZ0LW9mZnNldCJdLFsiY2xhc3MiLCJudW1lcmljLWlucHV0IiwzLCJpbnZhbGlkLWRhdGEiLDQsIm5nSWYiXSxbMSwibnVtZXJpYy1pbnB1dCJdLFsiY2xySW5wdXQiLCIiLCJ0eXBlIiwidGV4dCIsMSwibm90LWNoYXIi''@;'; put 'put ''LDMsImZvY3VzaW4iLCJwYXN0ZSIsImlucHV0IiwibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJjbHJUZXh0YXJlYSIsIiIsMywiZm9jdXNpbiIsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdl''@;'; put 'put ''Iiwicm93cyIsIm5nTW9kZWwiLCJtYXhMZW5ndGgiXSxbMSwiZGF0ZS1maWVsZCJdLFsiY2xyVGV4dGFyZWEiLCIiLDMsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdlIiwicm93cyIsIm5nTW9kZWwiXSxbImNsclRleHRhcmVhIiwiIiwicm93cyIsIjEiLCJjb2xzIiwiYXV0byIsMSwi''@;'; put 'put ''bm90LWNoYXIiLDMsInBhc3RlIiwiaW5wdXQiLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsxLCJkYXRlLXBpY2tlciJdLFsidHlwZSIsImRhdGUiLCJuYW1lIiwiZGF0ZSIsImNsckRhdGUiLCIiLDEsImQtbm9uZSIsMywiY2xyRGF0ZUNoYW5nZSJdLFsxLCJ2YWxpZGF0aW9uLWluZm8t''@;'; put 'put ''YWxlcnQiLDMsImNsckFsZXJ0Q2xvc2FibGUiLCJjbHJBbGVydFR5cGUiXSxbMSwiYWxlcnQtdGV4dCJdLFsxLCJwcmV2LW5leHQiXSxbInR5cGUiLCJidXR0b24iLCJ0YWJpbmRleCIsIjAiLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwiZm9jdXNhYmxlIiwzLCJjbGljayIsImRpc2FibGVkIl0s''@;'; put 'put ''WyJzaGFwZSIsImFuZ2xlIGxlZnQiLCJzaXplIiwiMjMiXSxbInNoYXBlIiwiYW5nbGUgcmlnaHQiLCJzaXplIiwiMjMiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWzMsImZvY3VzaW4iLCJ2YWx1ZUNoYW5nZSIsIm9uSW5wdXRFdmVudCIsInZhbHVlIiwiaW5wdXRJZCJdLFszLCJuZ1ZhbHVl''@;'; put 'put ''Iiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibmdWYWx1ZSJdLFsiY2xyU2VsZWN0IiwiIiwzLCJmb2N1c2luIiwibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpe2lmKDEm''@;'; put 'put ''ZCl7Y29uc3QgZj1TbigpO2dlKDAsImNsci1tb2RhbCIsMykoMSwiaDMiLDQpLFBlKDIpLGd0KDMscGZ0LDMsMiwibmctY29udGFpbmVyIiw1KSxtZSgpLGdlKDQsImRpdiIsNiksZ3QoNSxnZnQsMywwLCJkaXYiLDcpKDYsTGZ0LDMsNSwibmctY29udGFpbmVyIiw1KSxtZSgpLGdlKDcsImRp''@;'; put 'put ''diIsOCksZ3QoOCxPZnQsNCw0LCJjbHItYWxlcnQiLDkpKDksUGZ0LDksMywiZGl2IiwxMCksZ2UoMTAsImRpdiIpKDExLCJidXR0b24iLDExKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGguY3VycmVudFJlY29yZC5ub0xpbmtPcHRpb249ITEsYnQoaC5jbG9zZVJlY29y''@;'; put 'put ''ZEVkaXQoKSl9KSxQZSgxMiwiIENhbmNlbCAiKSxtZSgpLGdlKDEzLCJidXR0b24iLDEyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguY29uZmlybVJlY29yZEVkaXQoKSl9KSxQZSgxNCwiIENvbmZpcm0gIiksbWUoKSgpKCksZ3QoMTUsQmZ0LDMsMywibmctdGVt''@;'; put 'put ''cGxhdGUiLG51bGwsMCxidSksbWUoKX0yJmQmJihSZSgiY2xyTW9kYWxPcGVuIiwhMCkoImNsck1vZGFsQ2xvc2FibGUiLCExKSxfZSgyKSxIMigiICIsIkFERCI9PT1oLnJlY29yZEFjdGlvbj8iQWRkIjoiRWRpdCIsIiByZWNvcmQgaW4gIixudWxsPT1oLmxpYmRzP251bGw6aC5saWJkcy5z''@;'; put 'put ''cGxpdCgiLiIpWzBdLCIuIixudWxsPT1oLmxpYmRzP251bGw6aC5saWJkcy5zcGxpdCgiLiIpWzFdLCIgIiksX2UoKSxSZSgibmdJZiIsIkVESVQiPT09aC5yZWNvcmRBY3Rpb24pLF9lKDIpLFJlKCJuZ0lmIixoLmFkZFJlY29yZExvYWRpbmcpLF9lKCksUmUoIm5nSWYiLCFoLmFkZFJlY29y''@;'; put 'put ''ZExvYWRpbmcpLF9lKDIpLFJlKCJuZ0lmIixoLmN1cnJlbnRSZWNvcmRJbnZhbGlkQ29scy5sZW5ndGg+MCksX2UoKSxSZSgibmdJZiIsaC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVuZ3RoPDEpLF9lKDQpLFJlKCJkaXNhYmxlZCIsaC5jdXJyZW50UmVjb3JkSW52YWxpZENvbHMubGVu''@;'; put 'put ''Z3RoPjApKX0sZGVwZW5kZW5jaWVzOltWcywkaSx2ZCx3aCxwMyxHMiwkMix1bCxXMixfYSx1YSxGTSxCdWUsTk0sWWEsUGMsaXUsZ1IsRE0sVVosWlosRWQsRlosWl8sd1IscHVlLGw0ZSwkRF0sc3R5bGVzOlsiLnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1''@;'; put 'put ''bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAubmFtZS1pbnB1dC1yb3dbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWF4LXdpZHRoOjI2MHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lLWlucHV0LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAuY2VsbC1kZXNj''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6MzBweDttYXJnaW4tdG9wOjEwcHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgLmlucHV0cy13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtm''@;'; put 'put ''bGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAuaW5wdXRzLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgID4qOm5vdCguZGF0ZS1m''@;'; put 'put ''aWVsZCk6bm90KGNsci1zZWxlY3QtY29udGFpbmVyKXtmbGV4OjF9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDowfS5yZWNvcmQtZWRpdC1tb2Rh''@;'; put 'put ''bFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbi10b3A6MCFpbXBvcnRhbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgICAuY2xyLWZvcm0tY29udHJvbHttYXJnaW4tdG9wOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgYXBwLXNvZnQtc2VsZWN0e2Rpc3BsYXk6YmxvY2s7''@;'; put 'put ''d2lkdGg6MjI0cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2NvbG9yOiMwMDA7cGFkZGluZzpjYWxjKC4yNXJlbSArIDJweCkgLjVyZW07Ym9yZGVyLXJhZGl1czouMTI1cmVtO2ZvbnQtc2l6ZTouNTQxNjY3cmVtO21hcmdpbi1yaWdodDo2cHh9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jb2x1bW4tZW50cnlbX25nY29udGVudC0lQ09NUCVdICAgICBhcHAtc29mdC1zZWxlY3QgaW5wdXR7d2lkdGg6MTAwJTtib3JkZXI6MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uLWVudHJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgYXBwLXNvZnQtc2VsZWN0IGlucHV0''@;'; put 'put ''Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCAucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV0gICAgIGFwcC1zb2Z0LXNlbGVjdCBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFw''@;'; put 'put ''cGVhcmFuY2U6bm9uZTttYXJnaW46MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbi1lbnRyeVtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGQgICBwW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnJlY29yZC1l''@;'; put 'put ''ZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kYXRlLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtZmllbGRbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgdGV4dGFyZWFbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIzMHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAuZGF0ZS1waWNrZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFi''@;'; put 'put ''c29sdXRlO3JpZ2h0OjA7dG9wOjRweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGUtcGlja2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1pbnB1dC1ncm91cHtib3JkZXI6MCFpbXBvcnRh''@;'; put 'put ''bnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb2RhbC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxMHB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVye2JvcmRlcjox''@;'; put 'put ''cHggc29saWQgIzk5OTtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6LjEyNXJlbTttYXJnaW4tcmlnaHQ6NXB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDp1bnNldH0u''@;'; put 'put ''cmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye3RvcDoxNXB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIHNlbGVj''@;'; put 'put ''dHtoZWlnaHQ6YXV0bztwYWRkaW5nOjEwcHggMjBweCAxMHB4IDEwcHg7Ym9yZGVyOjAhaW1wb3J0YW50fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1zZWxlY3QtY29udGFpbmVyIHNlbGVjdDpmb2N1c3tiYWNrZ3JvdW5kOjAgMCFpbXBvcnRhbnR9LnJl''@;'; put 'put ''Y29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0OmhvdmVye2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lcnt3aWR0aDoy''@;'; put 'put ''MjRweDtib3JkZXI6MXB4IHNvbGlkICM5OTk7Y29sb3I6IzAwMDtwYWRkaW5nOmNhbGMoLjI1cmVtICsgMnB4KSAuNXJlbTtib3JkZXItcmFkaXVzOi4xMjVyZW07Zm9udC1zaXplOi41NDE2NjdyZW07bWFyZ2luLXJpZ2h0OjZweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgICBjbHItaW5wdXQtY29udGFpbmVyIGlucHV0e3dpZHRoOjEwMCU7Ym9yZGVyOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lciBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjAhaW1wb3J0YW50fS5y''@;'; put 'put ''ZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sIC5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pbnB1dC1jb250YWluZXIgaW5wdXQ6Oi13''@;'; put 'put ''ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLWlucHV0LWNvbnRhaW5lci5pbnZhbGlkLWRhdGF7Ym9yZGVyLWNvbG9yOnJlZH0ucmVjb3JkLWVkaXQtbW9k''@;'; put 'put ''YWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtZGlhbG9ne3dpZHRoOjgwdnd9LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAgIC5jbHItY29udHJvbC1jb250YWluZXIgdGV4dGFyZWF7d2lkdGg6MTAwJTtyZXNpemU6bm9uZTtib3JkZXItY29sb3I6Izk5OX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhLmludmFsaWQtZGF0YXti''@;'; put 'put ''b3JkZXItY29sb3I6cmVkO291dGxpbmU6MH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhLm5vdC1jaGFye2ZvbnQtZmFtaWx5Okx1Y2lkYSBDb25zb2xlLE1vbmFjbyxtb25vc3BhY2V9LnJlY29yZC1lZGl0''@;'; put 'put ''LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmdlbmVyYXRlLXJlY29yZC11cmx7cmlnaHQ6NDBweDt0b3A6NDBweDtmb250LXNpemU6MTJweH0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAuZ2VuZXJhdGUtcmVjb3JkLXVybC1idXR0b257cmlnaHQ6MjVw''@;'; put 'put ''eDt0b3A6NXB4fS5yZWNvcmQtZWRpdC1tb2RhbFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5tb2RhbC1oZWFkZXJ7cGFkZGluZzowIDAgMXJlbX0ucmVjb3JkLWVkaXQtbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtZm9vdGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpj''@;'; put 'put ''ZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnJlY29yZC1lZGl0LW1vZGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1vZGFsLWZvb3RlciAuYWxlcnR7bWFyZ2luOjB9LnByZXYtbmV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNl''@;'; put 'put ''bnRlcn0ucHJldi1uZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowfS5wcmV2LW5leHRbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAxMHB4fS5mb2N1c2FibGVbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdOmZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAjNWFhMjIwfS5lbnRyeS1pbnB1dC1sZWZ0LW9mZnNldFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMzBweH0udmFsaWRhdGlvbi1pbmZvLWFsZXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMTBweH0iXX0pfX1yZXR1cm4gbH0pKCk7''@;'; put 'put ''ZnVuY3Rpb24gemZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwicCIsMyksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKCksbXIoIiAiLGEsIiAiKX19bGV0IFVmdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7dGhpcy5zdGF0ZXNMaXN0PVtdLHRoaXMucHJvY2Vzc2Vk''@;'; put 'put ''U3RhdGVzPVtdLHRoaXMuc3RhdGVySW5Qcm9ncmVzcz0hMSx0aGlzLm1pbkRlbGF5PTFlM31uZ09uSW5pdCgpe31hcHBlbmRTdGF0ZShhKXtpZigie2ZpbmlzaH0iPT09YSlyZXR1cm4gdGhpcy5zdGF0ZXJJblByb2dyZXNzPSExLHZvaWQgY2xlYXJJbnRlcnZhbCh0aGlzLnN0YXRlSW50ZXJ2''@;'; put 'put ''YWwpO3RoaXMuc3RhdGVzTGlzdC5wdXNoKGEpLHRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1c2goYSl9cmVwbGFjZUxhc3RTdGF0ZShhKXt0aGlzLnN0YXRlc0xpc3QubGVuZ3RoPjA/KHRoaXMuc3RhdGVzTGlzdC5wb3AoKSx0aGlzLnN0YXRlc0xpc3QucHVzaChhKSk6dGhpcy5wcm9jZXNzZWRT''@;'; put 'put ''dGF0ZXNbdGhpcy5wcm9jZXNzZWRTdGF0ZXMubGVuZ3RoLTFdPWF9Y2xlYXJTdGF0ZXMoKXt0aGlzLnByb2Nlc3NlZFN0YXRlcz1bXX1zdGFydFN0YXRlcigpe3RoaXMuc3RhdGVySW5Qcm9ncmVzcz0hMCx0aGlzLnN0YXRlc0xpc3QubGVuZ3RoPjAmJnRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1''@;'; put 'put ''c2godGhpcy5zdGF0ZXNMaXN0LnNoaWZ0KCl8fCIiKSx0aGlzLnN0YXRlSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLnN0YXRlc0xpc3QubGVuZ3RoPjAmJnRoaXMucHJvY2Vzc2VkU3RhdGVzLnB1c2godGhpcy5zdGF0ZXNMaXN0LnNoaWZ0KCl8fCIiKX0sdGhpcy5taW5EZWxheSl9''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtdXBsb2FkLXN0YXRlciJdXSxkZWNsczo1LHZhcnM6MSxjb25zdHM6W1siY2xhc3MiLCJtLTAiLDQsIm5nRm9y''@;'; put 'put ''IiwibmdGb3JPZiJdLFsxLCJ0ZXh0LWNlbnRlciJdLFsxLCJzcGlubmVyIiwic3Bpbm5lci1zbSIsInZlcnRpY2FsLWFsaWduLW1pZGRsZSJdLFsxLCJtLTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJkaXYiKSxndCgxLHpmdCwyLDEsInAiLDApLG1lKCksZ2UoMiwi''@;'; put 'put ''ZGl2IiwxKSgzLCJzcGFuIiwyKSxQZSg0LCJMb2FkaW5nLi4uIiksbWUoKSgpKSwyJmQmJihfZSgpLFJlKCJuZ0Zvck9mIixoLnByb2Nlc3NlZFN0YXRlcykpfSxkZXBlbmRlbmNpZXM6W1ZzXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9cFtfbmdjb250ZW50LSVD''@;'; put 'put ''T01QJV17bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXJ9Il19KX19cmV0dXJuIGx9KSgpLFpmdD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhKXtyZXR1cm4gYS5yZXBsYWNlKC9cfC9nLCIgfCAiKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1cGlwZT13YSh7bmFtZToicGtTcGFjZVNlcGFyYXRlIix0eXBlOmwscHVyZTohMH0pfX1yZXR1cm4gbH0pKCkscDRlPSgoKT0+e2NsYXNzIGx7dHJhbnNmb3JtKGEsZCl7cmV0dXJuIHRoaXMuYWRkU2VwYXJhdG9ycyhhLnRvU3RyaW5nKCksZCl9YWRkU2VwYXJh''@;'; put 'put ''dG9ycyhhLGQ9IiAiKXtjb25zdCBoPShhKz0iIikuc3BsaXQoIi4iKTtsZXQgZj1oWzBdO2NvbnN0IHY9aC5sZW5ndGg+MT8iLiIraFsxXToiIixTPS8oXGQrKShcZHszfSkvO2Zvcig7Uy50ZXN0KGYpOylmPWYucmVwbGFjZShTLCIkMSIrZCsiJDIiKTtyZXR1cm4gZit2fXN0YXRpY3t0aGlz''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtuYW1lOiJ0aG91c2FuZFNlcGFyYXRvciIsdHlwZTpsLHB1cmU6ITB9KX19cmV0dXJuIGx9KSgpO2NvbnN0IFlmdD1bImh0Il0sV2Z0PVsidXBsb2FkU3RhdGVyIl0sR2Z0''@;'; put 'put ''PVsicXVlcnlGaWx0ZXIiXSwkZnQ9WyJob3RJbnN0YW5jZSJdLHFmdD1bImZpbGVVcGxvYWRJbnB1dCJdLEtmdD0obCxjKT0+KHtsaWJOYW1lOmwsdGFibGVOYW1lOmN9KSxnNGU9KCk9PlsiIiwiICJdLFhmdD1sPT4oe2hlYWRlckJhckZpbHRlcjpsfSksSmZ0PSgpPT5bIi9ob21lIl07ZnVu''@;'; put 'put ''Y3Rpb24gUWZ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw2NCkoMSwic3BhbiIsNjUpKDIsImxhYmVsIiw2NiksUGUoMywiIEJyb3dzZSAiKSxtZSgpKCksZ2UoNCwiaW5wdXQiLDY3LDMpLEl0KCJjaGFuZ2UiLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSgp''@;'; put 'put ''LmF0dGFjaEZpbGUoaCkpfSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKDQpLFJlKCJ1cGxvYWRlciIsYS51cGxvYWRlcil9fWZ1bmN0aW9uIGUzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNjgpKDEsImJ1dHRvbiIsNjkpLEl0KCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS51cGxvYWRQYXJzZWRGaWxlcygpKX0pLFBlKDIsIiBVcGxvYWQgIiksbWUoKSgpfTImbCYmKF9lKCksUmUoImRpc2FibGVkIiwhMCkpfWZ1bmN0aW9uIHQzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsNzApLEl0KCJj''@;'; put 'put ''bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5zaG93VXBsb2FkTW9kYWw9ITEpfSksUGUoMSwiIENsb3NlICIpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7UmUoImRpc2FibGVkIixhLmV4Y2VsRmlsZVBhcnNpbmd8fGEudXBsb2FkTG9hZGluZyl9fWZ1bmN0aW9uIG4z''@;'; put 'put ''dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsNzEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5zaG93VXBsb2FkTW9kYWw9ITEpfSksUGUoMSwiIFNraXAgIiksbWUoKX19ZnVuY3Rpb24gcjN0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2''@;'; put 'put ''Iiw3MiksWXQoMSwiYXBwLXVwbG9hZC1zdGF0ZXIiLG51bGwsNCksbWUoKSl9ZnVuY3Rpb24gaTN0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYXBwLWVkaXQtcmVjb3JkIiw3MyksSXQoIm9uUmVjb3JkQ2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmNv''@;'; put 'put ''bmZpcm1SZWNvcmRFZGl0KCkpfSkoIm9uUmVjb3JkSW5wdXRGb2N1c2VkIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5vblJlY29yZElucHV0Rm9jdXMoaCkpfSkoIm9uUmVjb3JkRWRpdENsb3NlIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmNsb3NlUmVjb3Jk''@;'; put 'put ''RWRpdCgpKX0pKCJvbk5leHRSZWNvcmQiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25OZXh0UmVjb3JkKCkpfSkoIm9uUHJldmlvdXNSZWNvcmQiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25QcmV2aW91c1JlY29yZCgpKX0pLG1lKCl9aWYoMiZsKXtjb25z''@;'; put 'put ''dCBhPU5lKCk7UmUoImN1cnJlbnRSZWNvcmQiLGEuY3VycmVudEVkaXRSZWNvcmQpKCJyZWNvcmRBY3Rpb24iLGEucmVjb3JkQWN0aW9uKSgibGliZHMiLGEubGliZHMpKCJxdWVyeUZpbHRlciIsYS5xdWVyeUZpbHRlcikoImZpbHRlciIsYS5maWx0ZXIpKCJzdWJtaXRMb2FkaW5nIixhLnN1''@;'; put 'put ''Ym1pdExvYWRpbmcpKCJoZWFkZXJQa3MiLGEuaGVhZGVyUGtzKSgiY2VsbFZhbGlkYXRpb24iLGEuY2VsbFZhbGlkYXRpb24pKCJjdXJyZW50UmVjb3JkSW5kZXgiLGEuY3VycmVudEVkaXRSZWNvcmRJbmRleCkoImN1cnJlbnRSZWNvcmRMb2FkaW5ncyIsYS5jdXJyZW50RWRpdFJlY29yZExv''@;'; put 'put ''YWRpbmdzKSgiY3VycmVudFJlY29yZEVycm9ycyIsYS5jdXJyZW50RWRpdFJlY29yZEVycm9ycykoImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLGEuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3IpfX1mdW5jdGlvbiBvM3QobCxjKXsxJmwmJihnZSgwLCJkaXYiLDc0KSxZdCgxLCJwcm9ncmVz''@;'; put 'put ''cyIpLG1lKCkpfWZ1bmN0aW9uIHMzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNzUpKDEsInNwYW4iLDc2KSxZdCgyLCJjbHItaWNvbiIsNzcpLGdlKDMsInNwYW4iLDc4KSxQZSg0LCJCYWNrIHRvIHRhYmxlIHNlbGVjdGlvbiIpLG1lKCkoKSxnZSg1LCJzcGFuIiw3''@;'; put 'put ''OSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnZpZXdib3hNYW5hZ2VyKCkpfSksWXQoNiwiY2xyLWljb24iLDgwKSxnZSg3LCJzcGFuIiw3OCksUGUoOCwiVmlld2JveGVzIiksbWUoKSgpKCl9MiZsJiYoX2UoKSxSZSgicm91dGVyTGluayIsbGEoMSxKZnQp''@;'; put 'put ''KSl9ZnVuY3Rpb24gYTN0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsODYpfWZ1bmN0aW9uIGwzdChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10b29sdGlwLWNvbnRlbnQiLDg4KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxtcigiICIsYS5kc05vdGUsIiAiKX19ZnVu''@;'; put 'put ''Y3Rpb24gYzN0KGwsYyl7MSZsJiYoVnIoMCksZ3QoMSxsM3QsMiwxLCJjbHItdG9vbHRpcC1jb250ZW50Iiw4NyksQnIoKSl9ZnVuY3Rpb24gdTN0KGwsYyl7aWYoMSZsJiYoVnIoMCksUGUoMSksZ2EoMiwidGhvdXNhbmRTZXBhcmF0b3IiKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2Uo''@;'; put 'put ''KSxDRCgiICgiLFU2KDIsNCxhLmRhdGFTb3VyY2UubGVuZ3RoLCIsIiksIiAiLDE9PT1hLmRhdGFTb3VyY2UubGVuZ3RoPyJyb3ciOiJyb3dzIiwiLCAiLGEuY29scy5sZW5ndGgsIiIsMT09PWEuY29scy5sZW5ndGg/IiBjb2wiOiIgY29scyIsIikgIil9fWZ1bmN0aW9uIGQzdChsLGMpezEm''@;'; put 'put ''bCYmKFZyKDApLFBlKDEsIiAoMCByb3dzKSAiKSxCcigpKX1mdW5jdGlvbiBoM3QobCxjKXtpZigxJmwmJihWcigwKSxndCgxLHUzdCwzLDcsIm5nLWNvbnRhaW5lciIsMzkpKDIsZDN0LDIsMCwibmctY29udGFpbmVyIiwzOSksQnIoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5n''@;'; put 'put ''SWYiLCFhLnplcm9GaWx0ZXJSb3dzKSxfZSgpLFJlKCJuZ0lmIixhLnplcm9GaWx0ZXJSb3dzKX19ZnVuY3Rpb24gZjN0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiaDQiLDgxKSgxLCJjbHItdG9vbHRpcCIpKDIsImNsci1pY29uIiw4MiksSXQoImNsaWNrIixmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBfdChhKSxidChOZSgpLmRhdGFzZXRJbmZvPSEwKX0pLG1lKCksZ3QoMyxhM3QsMSwwLCJjbHItaWNvbiIsODMpLGdlKDQsInNwYW4iLDg0KSxQZSg1KSxnZSg2LCJhIiw4NSksUGUoNyksbWUoKSgpLGd0KDgsYzN0LDIsMCwibmctY29udGFpbmVyIiwzOSksbWUoKSxndCg5LGgz''@;'; put 'put ''dCwzLDIsIm5nLWNvbnRhaW5lciIsMzkpLG1lKCl9aWYoMiZsKXtjb25zdCBhPWMubmdWYXIsZD1OZSgpO19lKDMpLFJlKCJuZ0lmIixhLnRhYmxlTmFtZS5pbmNsdWRlcygiLUZDIikpLF9lKDIpLG1yKCIgIixhLmxpYk5hbWUsIi4iKSxfZSgpLFJlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvZGF0''@;'; put 'put ''YS8iK2QubGliZHMpLF9lKCksbHIoYS50YWJsZU5hbWUucmVwbGFjZSgiLUZDIiwiIikpLF9lKCksUmUoIm5nSWYiLGQuZHNOb3RlJiZkLmRzTm90ZS5sZW5ndGg+MCksX2UoKSxSZSgibmdJZiIsZC5kYXRhU291cmNlKX19ZnVuY3Rpb24gcDN0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7''@;'; put 'put ''Z2UoMCwiYnV0dG9uIiw5NSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5vblNob3dVcGxvYWRNb2RhbCgpKX0pLFl0KDEsImNsci1pY29uIiw5NiksZ2UoMiwic3BhbiIsNzgpLFBlKDMsIlVwbG9hZCIpLG1lKCkoKX19ZnVuY3Rpb24gZzN0KGwsYyl7aWYo''@;'; put 'put ''MSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiYnV0dG9uIiw5MCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5vcGVuUWIoKSl9KSxZdCgyLCJjbHItaWNvbiIsOTEpLGdlKDMsInNwYW4iLDc4KSxQZSg0LCJGaWx0ZXIiKSxtZSgpKCksZ2UoNSwiYnV0''@;'; put 'put ''dG9uIiw5MiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5lZGl0VGFibGUoKSl9KSxZdCg2LCJjbHItaWNvbiIsOTMpLGdlKDcsInNwYW4iLDc4KSxQZSg4LCJFZGl0IiksbWUoKSgpLGd0KDkscDN0LDQsMCwiYnV0dG9uIiw5NCksQnIoKX1pZigyJmwpe2Nv''@;'; put 'put ''bnN0IGE9TmUoMik7X2UoOSksUmUoIm5nSWYiLCFhLmNvbHVtbkxldmVsU2VjdXJpdHlGbGFnKX19ZnVuY3Rpb24gbTN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSg0KTtfZSgpLF91KCJUbyB1bmxvY2sgbW9yZSB0aGFuICIsYS5saWNl''@;'; put 'put ''bmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiICIsMT09PWEubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQ/InJvdyI6InJvd3MiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiB2M3QobCxjKXtpZigxJmwmJihn''@;'; put 'put ''ZSgwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw4OCksZ3QoMSxtM3QsMiwyLCJzcGFuIiwzOSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoIm5nSWYiLGEucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93KX19ZnVuY3Rpb24gXzN0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7''@;'; put 'put ''VnIoMCksZ2UoMSwiYnV0dG9uIiw5NyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5jYW5jZWxFZGl0KCkpfSksWXQoMiwiY2xyLWljb24iLDk4KSxnZSgzLCJzcGFuIiksUGUoNCwiQ2FuY2VsIiksbWUoKSgpLGdlKDUsImNsci10b29sdGlwIikoNiwiYnV0''@;'; put 'put ''dG9uIiw5OSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGJ0KGgucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93PyIiOmguYWRkUm93KCkpfSksWXQoNywiY2xyLWljb24iLDEwMCksUGUoOCwiQWRkIFJvdyAiKSxtZSgpLGd0KDksdjN0LDIsMSwi''@;'; put 'put ''Y2xyLXRvb2x0aXAtY29udGVudCIsODcpLG1lKCksZ2UoMTAsImJ1dHRvbiIsNDQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikuY2hlY2tTYXZlKCkpfSksWXQoMTEsImNsci1pY29uIiwxMDEpLFBlKDEyLCJTdWJtaXQgIiksbWUoKSxCcigpfWlmKDImbCl7''@;'; put 'put ''Y29uc3QgYT1OZSgyKTtfZSg2KSxwcigiZGMtbG9ja2VkLWNvbnRyb2wiLGEucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93KSxSZSgiY2xyTG9hZGluZyIsYS5hZGRpbmdOZXdSb3cpfX1mdW5jdGlvbiBiM3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDEwNSks''@;'; put 'put ''SXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5tYW51YWxGaWxlRWRpdE1vZGFsPSEwKX0pLFl0KDEsImNsci1pY29uIiw5MyksZ2UoMiwic3BhbiIpLFBlKDMsIkVkaXQiKSxtZSgpKCl9fWZ1bmN0aW9uIHkzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO1Zy''@;'; put 'put ''KDApLGdlKDEsImJ1dHRvbiIsMTAyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLmRpc2NhcmRTb3VyY2VGaWxlPSEwKX0pLFl0KDIsImNsci1pY29uIiw5OCksZ2UoMywic3BhbiIpLFBlKDQsIkRpc2NhcmQgZmlsZSIpLG1lKCkoKSxndCg1LGIzdCw0LDAs''@;'; put 'put ''ImJ1dHRvbiIsMTAzKSxnZSg2LCJidXR0b24iLDEwNCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5zdWJtaXRFeGNlbCgpKX0pLFl0KDcsImNsci1pY29uIiwxMDEpLFBlKDgsIiBTdWJtaXQgIiksbWUoKSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtf''@;'; put 'put ''ZSg1KSxSZSgibmdJZiIsYS5ob3RUYWJsZS5yZWFkT25seSksX2UoKSxSZSgiY2xyTG9hZGluZyIsYS51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24gdzN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw4OSksZ3QoMSxnM3QsMTAsMSwibmctY29udGFpbmVyIiwzOSkoMixfM3QsMTMsMywibmct''@;'; put 'put ''Y29udGFpbmVyIiwzOSkoMyx5M3QsOSwyLCJuZy1jb250YWluZXIiLDM5KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0lmIixhLmhvdFRhYmxlLnJlYWRPbmx5JiYhYS51cGxvYWRQcmV2aWV3KSxfZSgpLFJlKCJuZ0lmIiwhYS5ob3RUYWJsZS5yZWFkT25seSYmIWEudXBs''@;'; put 'put ''b2FkUHJldmlldyksX2UoKSxSZSgibmdJZiIsYS51cGxvYWRQcmV2aWV3KX19ZnVuY3Rpb24gQzN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxMDYpKDEsInNwYW4iKSxQZSgyLCJGSUxURVIgOiAiKSxnZSgzLCJiIiksUGUoNCksbWUoKSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDQp''@;'; put 'put ''LGxyKGEucXVlcnlUZXh0KX19ZnVuY3Rpb24gUzN0KGwsYyl7MSZsJiYoVnIoMCksZ2UoMSwic3BhbiIsMTA5KSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpLGdlKDMsImRpdiIsMTEwKSg0LCJwIiwxMTEpLFBlKDUsIkxvYWRpbmcgdGFibGUiKSxtZSgpKCksQnIoKSl9ZnVuY3Rpb24gTTN0''@;'; put 'put ''KGwsYyl7MSZsJiYoVnIoMCksZ2UoMSwic3BhbiIpLFl0KDIsImNsci1pY29uIiwxMTIpLG1lKCksZ2UoMywiZGl2IiwxMTApKDQsInAiLDExMSksUGUoNSwiTG9hZGluZyB0YWJsZSBlcnJvciIpLG1lKCkoKSxCcigpKX1mdW5jdGlvbiB4M3QobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDEw''@;'; put 'put ''NykoMSwiZGl2IiwxMDgpLGd0KDIsUzN0LDYsMCwibmctY29udGFpbmVyIiwzOSkoMyxNM3QsNiwwLCJuZy1jb250YWluZXIiLDM5KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDIpLFJlKCJuZ0lmIiwhYS5nZXRkYXRhRXJyb3IpLF9lKCksUmUoIm5nSWYiLGEuZ2V0ZGF0YUVycm9y''@;'; put 'put ''KX19ZnVuY3Rpb24gRTN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgpLF91KCJUbyB1bmxvY2sgbW9yZSB0aGFuICIsYS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiICIsMT09PWEubGljZW5jZVN0''@;'; put 'put ''YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQ/InJvdyI6InJvd3MiLCIsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpfX1mdW5jdGlvbiBUM3QobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdG9vbHRpcC1jb250ZW50IiwxMTUpLGd0KDEsRTN0LDIsMiwic3BhbiIsMzkp''@;'; put 'put ''LG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgpLFJlKCJuZ0lmIixhLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdyl9fWZ1bmN0aW9uIGszdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10b29sdGlwIikoMSwiYnV0dG9uIiwxMTMpLEl0KCJjbGljayIsZnVuY3Rp''@;'; put 'put ''b24oKXtfdChhKTtjb25zdCBoPU5lKCk7cmV0dXJuIGJ0KGgucmVzdHJpY3Rpb25zLnJlc3RyaWN0QWRkUm93PyIiOmguYWRkUmVjb3JkQnV0dG9uQ2xpY2soKSl9KSxZdCgyLCJjbHItaWNvbiIsMTAwKSxQZSgzLCIgQWRkIFJlY29yZCAiKSxtZSgpLGd0KDQsVDN0LDIsMSwiY2xyLXRvb2x0''@;'; put 'put ''aXAtY29udGVudCIsMTE0KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKCkscHIoImRjLWxvY2tlZC1jb250cm9sIixhLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdyl9fWZ1bmN0aW9uIEEzdChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDExNiksUGUoMSksWXQoMiwiY29udGFjdC1s''@;'; put 'put ''aW5rIiksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxtcigiIFRvIGRpc3BsYXkgbW9yZSB0aGFuICIsYS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCwiIHJvd3MsIGNvbnRhY3QgIil9fWZ1bmN0aW9uIEQzdChsLGMpe2lmKDEmbCYmKGdlKDAsInNwYW4iLDEy''@;'; put 'put ''OCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksX3UoIk9ubHkgIixhLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCwiICIsMT09PWEubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0PyJyb3ciOiJyb3dzIiwiIHdpbGwgYmUgc3VibWl0''@;'; put 'put ''dGVkLiBUbyByZW1vdmUgdGhlIHJlc3RyaWN0aW9uLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iKX19ZnVuY3Rpb24gSTN0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwxMjkpKDEsImRpdiIsMTMwKSgyLCJsYWJlbCIsMTMxKSxQZSgzLCJNZXNzYWdl''@;'; put 'put ''IiksbWUoKSxnZSg0LCJ0ZXh0YXJlYSIsMTMyKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgyKTtyZXR1cm4gR3IoZi5tZXNzYWdlLGgpfHwoZi5tZXNzYWdlPWgpLGJ0KGgpfSksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO19lKDQpLFly''@;'; put 'put ''KCJuZ01vZGVsIixhLm1lc3NhZ2UpLFJlKCJkaXNhYmxlZCIsIWEudmFsaWRhdGlvbkRvbmUpKCJ2YWx1ZSIsYS52YWxpZGF0aW9uRG9uZT8iIjoiUGxlYXNlIHdhaXQgd2hpbGUgd2UgdmFsaWRhdGUgIithLmNvbHMubGVuZ3RoKmEubW9kaWZlZFJvd3NJbmRleGVzLmxlbmd0aCsiIGNlbGxz''@;'; put 'put ''LiIpfX1mdW5jdGlvbiBSM3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDExNykoMSwiZGl2IiwxMTgpKDIsImRpdiIsMTE5KSgzLCJkaXYiLDEyMCkoNCwiYnV0dG9uIiwxMjEpLFl0KDUsImNsci1pY29uIiwxMjIpLG1lKCksZ2UoNiwiaDMiLDgpLFBlKDcpLG1lKCko''@;'; put 'put ''KSxnZSg4LCJkaXYiLDkpLGd0KDksRDN0LDIsMiwic3BhbiIsMTIzKSgxMCxJM3QsNSwzLCJkaXYiLDEyNCksbWUoKSxnZSgxMSwiZGl2IiwxMjUpKDEyLCJidXR0b24iLDEyNiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKTtyZXR1cm4gYnQoaC5zYXZlVGFibGUo''@;'; put 'put ''aC5ob3RUYWJsZS5kYXRhKSl9KSxQZSgxMywiIFN1Ym1pdCAiKSxtZSgpLGdlKDE0LCJidXR0b24iLDEyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKTtyZXR1cm4gaC5jYW5jZWxTdWJtaXQoKSxoLnN1Ym1pdD0hMSxidChoLnZhbGlkYXRpb25Eb25lPTApfSks''@;'; put 'put ''UGUoMTUsIiBDYW5jZWwgIiksbWUoKSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKDcpLEgyKCIgU3VibWl0IGZvciBBcHByb3ZhbCAoIixhLnJvd3NDaGFuZ2VkLnJvd3NBZGRlZCwiIGFkZGVkLCAiLGEucm93c0NoYW5nZWQucm93c1VwZGF0ZWQsIiB1cGRhdGVkLCAiLGEucm93''@;'; put 'put ''c0NoYW5nZWQucm93c0RlbGV0ZWQsIiBkZWxldGVkKSAiKSxfZSgyKSxSZSgibmdJZiIsYS50b3RhbFJvd3NDaGFuZ2VkPmEubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0JiZhLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCE9PWEuSW5maW5pdHkpLF9l''@;'; put 'put ''KCksUmUoIm5nSWYiLGEudGFibGVUcnVlKSxfZSgyKSxSZSgiZGlzYWJsZWQiLCFhLnZhbGlkYXRpb25Eb25lKX19ZnVuY3Rpb24gTDN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIsMTMzKSxQZSgxKSxnYSgyLCJwa1NwYWNlU2VwYXJhdGUiKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1w''@;'; put 'put ''bGljaXQsZD1OZSgpO19lKCksX3UoIiBPbiByb3cgIixhKzEsIjogIixVbCgyLDIsZC5wa0ZpZWxkc1thXS5yZXBsYWNlKCJ8IiwiIikpLCIgIil9fWZ1bmN0aW9uIE8zdChsLGMpe2lmKDEmbCYmKGdlKDAsInAiKSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxI''@;'; put 'put ''MigiICIsYS5jb2wsIigiLGEubGVuLCIpLCAiLGEudmFsLCIgIil9fWZ1bmN0aW9uIFAzdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMTM0KSgxLCJkaXYiLDEzNSkoMiwiZGl2IiwxMTkpKDMsImRpdiIsMTIwKSg0LCJidXR0b24iLDEyMSksWXQoNSwiY2xyLWljb24i''@;'; put 'put ''LDEyMiksbWUoKSxnZSg2LCJoMyIsOCksUGUoNywiRXJyb3IiKSxtZSgpKCksZ2UoOCwiZGl2Iiw5KSg5LCJwIiksUGUoMTAsIllvdSBjYW5ub3Qgc3VibWl0IGVtcHR5IGNsYXVzZXMiKSxtZSgpKCksZ2UoMTEsImRpdiIsMjMpKDEyLCJidXR0b24iLDQ0KSxJdCgiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkubnVsbFZhcmlhYmxlcz0hMSl9KSxQZSgxMywiIE9rICIpLG1lKCkoKSgpKCkoKX19ZnVuY3Rpb24gRjN0KGwsYyl7MSZsJiZZdCgwLCJhcHAtcXVlcnkiLG51bGwsNSl9ZnVuY3Rpb24gTjN0KGwsYyl7MSZsJiYoZ2UoMCwicCIsMTM2KSxQZSgxLCIg''@;'; put 'put ''U29ycnkgdGhhdCBkaWRuJ3Qgd29yaywgdHJ5IGFnYWluLiAiKSxtZSgpKX1sZXQgYUY9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5jbnQ9MH1zdGF0aWN7dGhpcy5ub25Qa0NudD0wfXN0YXRpY3t0aGlzLmxhc3RDZWxsPTB9Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRLGRlLHBlLENl''@;'; put 'put ''KXt0aGlzLmxpY2VuY2VTZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLmxvZ2dlclNlcnZpY2U9aCx0aGlzLnNhc1N0b3JlU2VydmljZT1mLHRoaXMuaGVscGVyU2VydmljZT12LHRoaXMucm91dGVyPVMsdGhpcy5yb3V0ZT1WLHRoaXMuc2FzU2VydmljZT1RLHRoaXMuY2RmPWRl''@;'; put 'put ''LHRoaXMuaG90UmVnaXN0ZXJlcj1wZSx0aGlzLnNwcmVhZHNoZWV0U2VydmljZT1DZSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0PW5ldyB4MSx0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3Q9bmV3IHgxLHRoaXMuaG90SW5zdGFuY2VDb21wTGlzdD1uZXcgeDEsdGhpcy5maWxlVXBsb2FkSW5w''@;'; put 'put ''dXRDb21wTGlzdD1uZXcgeDEsdGhpcy5tZXNzYWdlPSIiLHRoaXMuJGRhdGFGb3JtYXRzPW51bGwsdGhpcy5jb2xzPVtdLHRoaXMucmVzdHJpY3Rpb25zPXt9LHRoaXMuZGF0YXNldEluZm89ITEsdGhpcy5kc21ldGE9W10sdGhpcy52ZXJzaW9ucz1bXSx0aGlzLmRzTm90ZT0iIix0aGlzLnZp''@;'; put 'put ''ZXdib3hlcz0hMSx0aGlzLkluZmluaXR5PTEvMCx0aGlzLmhvdFRhYmxlPXtkYXRhOltdLGNvbEhlYWRlcnM6W10saGlkZGVuOiEwLGNvbHVtbnM6W10saGVpZ2h0OiIxMDAlIixtaW5TcGFyZVJvd3M6MSxsaWNlbnNlS2V5OnZvaWQgMCxyZWFkT25seTohMCxjb3B5UGFzdGU6e2NvcHlDb2x1''@;'; put 'put ''bW5IZWFkZXJzOiEwLGNvcHlDb2x1bW5IZWFkZXJzT25seTohMH0sc2V0dGluZ3M6e2NvbnRleHRNZW51OntpdGVtczp7ZWRpdF9yb3c6e25hbWU6IkVkaXQgcm93IixoaWRkZW4oKXtjb25zdCBldD10aGlzLmdldFNlbGVjdGVkUmFuZ2UoKTtpZighZXQpcmV0dXJuITE7Y29uc3QgZHQ9ZXRb''@;'; put 'put ''MF07cmV0dXJuIGR0LmZyb20ucm93IT09ZHQudG8ucm93fSxjYWxsYmFjazooWWUsZXQsZHQpPT57bGV0IGh0PWV0WzBdO2h0LnN0YXJ0LnJvdz09PWh0LmVuZC5yb3cmJnRoaXMuZWRpdFJlY29yZChudWxsLGh0LnN0YXJ0LnJvdyl9fSxyb3dfYWJvdmU6e25hbWU6Ikluc2VydCBSb3cgYWJv''@;'; put 'put ''dmUifSxyb3dfYmVsb3c6e25hbWU6Ikluc2VydCBSb3cgYmVsb3cifSxyZW1vdmVfcm93OntuYW1lOiJJZ25vcmUgcm93In0sY29weTp7bmFtZToiQ29weSB3aXRob3V0IGhlYWRlcnMifSxjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnM6e25hbWU6IkNvcHkgd2l0aCBoZWFkZXJzIn0sY29weV9j''@;'; put 'put ''b2x1bW5faGVhZGVyc19vbmx5OntuYW1lOiJDb3B5IGhlYWRlcnMgb25seSJ9LHNwMTp7bmFtZToiLS0tLS0tLS0tIn0sdW5kbzp7bmFtZToiVW5kbyJ9LHJlZG86e25hbWU6IlJlZG8ifX19fX0sdGhpcy5ob3RDZWxsc1Byb3BSb3c9bnVsbCx0aGlzLmZpbHRlcj0hMSx0aGlzLnN1Ym1pdExv''@;'; put 'put ''YWRpbmc9ITEsdGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOjAscm93c0RlbGV0ZWQ6MCxyb3dzQWRkZWQ6MH0sdGhpcy5tb2RpZmVkUm93c0luZGV4ZXM9W10sdGhpcy5xdWVyeUVycj0hMSx0aGlzLnN1Y2Nlc3NFbmFibGU9ITEsdGhpcy5udWxs''@;'; put 'put ''VmFyaWFibGVzPSExLHRoaXMucGtGaWVsZHM9W10sdGhpcy5maWxlbmFtZT0iIix0aGlzLnN1Ym1pdExpbWl0Tm90aWNlPSExLHRoaXMuYmFkRWRpdD0hMSx0aGlzLnNhdmVMb2FkaW5nPSExLHRoaXMuYXBwcm92ZXJzPVtdLHRoaXMuZXJyVmFsaWRhdGlvbj0hMSx0aGlzLnBrTnVsbD0hMSx0''@;'; put 'put ''aGlzLm5vUGtOdWxsPSExLHRoaXMudGFibGVEYXRhPVtdLHRoaXMucXVlcnlUZXh0PSIiLHRoaXMucXVlcnlUZXh0U2F2ZWQ9IiIsdGhpcy5zaG93QXBwcm92ZXJzPSExLHRoaXMucGtEdXBzPSExLHRoaXMudmFsaWRhdGlvbkRvbmU9MCx0aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcz1bXSx0aGlz''@;'; put 'put ''LmNvbHVtbkhlYWRlcj1bXSx0aGlzLnNwZWNJbmZvPVtdLHRoaXMudG9vTG9uZz0hMSx0aGlzLmV4Y2VlZENlbGxzPVtdLHRoaXMudXBsb2FkZXI9bmV3IGpYLHRoaXMudXBsb2FkVXJsPSIiLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxG''@;'; put 'put ''aWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbCx0aGlzLmRhdGE9W10sdGhpcy5oZWFkZXJBcnJheT1bXSx0aGlzLmhvdERhdGFTY2hlbWE9e30sdGhpcy5oZWFkZXJTaG93PVtdLHRoaXMuaGVhZGVyVmlzaWJsZT0hMSx0aGlzLmhhc0Jhc2VEcm9wWm9uZU92ZXI9ITEs''@;'; put 'put ''dGhpcy5oYXNBbm90aGVyRHJvcFpvbmVPdmVyPSExLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc9ITEsdGhpcy5kYXRlVGltZUhlYWRlcnM9W10sdGhpcy50aW1lSGVhZGVycz1bXSx0aGlzLmRhdGVIZWFkZXJzPVtdLHRoaXMueGxSdWxlcz1bXSx0aGlz''@;'; put 'put ''LmVuY29kaW5nPSJVVEYtOCIsdGhpcy5oZWFkZXJDb2x1bW5zPVtdLHRoaXMuY2VsbFZhbGlkYXRpb249W10sdGhpcy5maWxlUGFzc3dvcmRTdWJqZWN0PW5ldyB0bix0aGlzLmZpbGVVbmxvY2tFcnJvcj0hMSx0aGlzLmZpbGVQYXNzd29yZE1vZGFsPSExLHRoaXMuc2hvd1VwbG9hZE1vZGFs''@;'; put 'put ''PSExLHRoaXMuZGlzY2FyZFNvdXJjZUZpbGU9ITEsdGhpcy5tYW51YWxGaWxlRWRpdE1vZGFsPSExLHRoaXMucmVjb3JkQWN0aW9uPW51bGwsdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzPVtdLHRoaXMuY3VycmVudEVkaXRSZWNvcmRFcnJvcnM9W10sdGhpcy5jdXJyZW50RWRpdFJl''@;'; put 'put ''Y29yZEluZGV4PS0xLHRoaXMuZ2VuZXJhdGVFZGl0UmVjb3JkVXJsTG9hZGluZz0hMSx0aGlzLmdlbmVyYXRlZFJlY29yZFVybD1udWxsLHRoaXMuYWRkUmVjb3JkVXJsPW51bGwsdGhpcy5yZWNvcmROZXdPclBrTW9kaWZpZWQ9ITEsdGhpcy5hZGRSZWNvcmRMb2FkaW5nPSExLHRoaXMuc2lu''@;'; put 'put ''Z2xlUm93U2VsZWN0ZWQ9ITEsdGhpcy5hZGRpbmdOZXdSb3c9ITEsdGhpcy5nZXRkYXRhRXJyb3I9ITEsdGhpcy56ZXJvRmlsdGVyUm93cz0hMSx0aGlzLnRhYmxlRmlsZURyYWdPdmVyPSExLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2U9W10sdGhpcy52YWxpZGF0aW9uVGFibGVMaW1pdD0y''@;'; put 'put ''MCx0aGlzLmV4dGVuZGVkQ2VsbFZhbGlkYXRpb25GaWVsZHM9e0RJU1BMQVlfSU5ERVg6MCxFWFRSQV9DT0xfTkFNRToxLERJU1BMQVlfVkFMVUU6MixESVNQTEFZX1RZUEU6MyxSQVdfVkFMVUVfTlVNOjQsUkFXX1ZBTFVFX0NIQVI6NSxGT1JDRV9GTEFHOjZ9LHRoaXMuY2VsbFZhbGlkYXRp''@;'; put 'put ''b25GaWVsZHM9e0RJU1BMQVlfSU5ERVg6MCxESVNQTEFZX1ZBTFVFOjEsUkFXX1ZBTFVFOjJ9LHRoaXMuZGlzYWJsZWRCYXNpY0R5bmFtaWNDZWxsVmFsaWRhdGlvbk1hcD1bXSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLnRpbWVzQ2xp''@;'; put 'put ''Y2tlZD0wLEtYW3dpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2VdJiZjUWUoKS5yZWdpc3Rlckxhbmd1YWdlKEtYW3dpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2VdKSx0aGlzLmhvdFJlZ2lzdGVyZXI9bmV3IFdtLHRoaXMucGFyc2VSZXN0cmljdGlvbnMoKSx0aGlzLnNldFJlc3RyaWN0aW9ucygp''@;'; put 'put ''fXBhcnNlUmVzdHJpY3Rpb25zKCl7dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSZWNvcmQ9ITE9PT10aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5hZGRSZWNvcmQsdGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RFZGl0UmVjb3JkPSExPT09dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZWRp''@;'; put 'put ''dFJlY29yZCx0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEZpbGVVcGxvYWQ9ITE9PT10aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5maWxlVXBsb2FkfXNldFJlc3RyaWN0aW9ucyhhKXthJiYodGhpcy5yZXN0cmljdGlvbnM9ey4uLnRoaXMucmVzdHJpY3Rpb25zLC4uLmF9KSx0aGlzLnJlc3Ry''@;'; put 'put ''aWN0aW9ucy5yZW1vdmVFZGl0UmVjb3JkQnV0dG9uJiZkZWxldGUodGhpcy5ob3RUYWJsZT8uc2V0dGluZ3M/LmNvbnRleHRNZW51KS5pdGVtcy5lZGl0X3Jvdyx0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdyYmKGRlbGV0ZSh0aGlzLmhvdFRhYmxlPy5zZXR0aW5ncz8uY29udGV4''@;'; put 'put ''dE1lbnUpLml0ZW1zLnJvd19hYm92ZSxkZWxldGUodGhpcy5ob3RUYWJsZT8uc2V0dGluZ3M/LmNvbnRleHRNZW51KS5pdGVtcy5yb3dfYmVsb3csZGVsZXRlKHRoaXMuaG90VGFibGU/LnNldHRpbmdzPy5jb250ZXh0TWVudSkuaXRlbXMucmVtb3ZlX3Jvdyl9Y2hlY2tSb3dMaW1pdCgpe3Ro''@;'; put 'put ''aXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWd8fHRoaXMubGljZW5jZVN0YXRlLnZhbHVlLmVkaXRvcl9yb3dzX2FsbG93ZWQhPT0xLzAmJih0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEFkZFJvdz10aGlzLmRhdGFTb3VyY2U/Lmxlbmd0aD49dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuZWRp''@;'; put 'put ''dG9yX3Jvd3NfYWxsb3dlZCl9cmVzZXRGaWx0ZXIoKXt0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmlyc3QmJnRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdC5yZXNldEZpbHRlcigpfW9uU2hvd1VwbG9hZE1vZGFsKCl7dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RGaWxlVXBsb2Fk''@;'; put 'put ''P3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dEZW1vTGltaXRNb2RhbCgiRmlsZSBVcGxvYWQiKTp0aGlzLmNvbHVtbkxldmVsU2VjdXJpdHlGbGFnP3RoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkluZm9ybWF0aW9uIiwiVXBsb2FkIGZlYXR1cmUgaXMgZGlzYWJsZWQgd2hpbGUgQ29s''@;'; put 'put ''dW1uIExldmVsIFNlY3VyaXR5IHJ1bGVzIGFyZSBhY3RpdmUiKTp0aGlzLnVwbG9hZFByZXZpZXd8fCh0aGlzLnNob3dVcGxvYWRNb2RhbD0hMCl9ZmlsZU92ZXJCYXNlKGEpe3RoaXMuaGFzQmFzZURyb3Bab25lT3Zlcj1hfWF0dGFjaEZpbGUoYSxkPSExKXtsZXQgaD1kP2FbMF06YS50YXJn''@;'; put 'put ''ZXQuZmlsZXNbMF07dGhpcy5leGNlbFVwbG9hZFN0YXRlPSJMb2FkaW5nIix0aGlzLmV4Y2VsRmlsZVBhcnNpbmc9ITAsdGhpcy5leGNlbEZpbGVSZWFkeT0hMSx0aGlzLmZpbGVuYW1lPWgubmFtZSx0aGlzLnNwcmVhZHNoZWV0U2VydmljZS5wYXJzZUV4Y2VsRmlsZSh7ZmlsZTpoLHVwbG9h''@;'; put 'put ''ZGVyOnRoaXMudXBsb2FkZXIsZGNWYWxpZGF0b3I6dGhpcy5kY1ZhbGlkYXRvcixoZWFkZXJQa3M6dGhpcy5oZWFkZXJQa3MsaGVhZGVyQXJyYXk6dGhpcy5oZWFkZXJBcnJheSxoZWFkZXJTaG93OnRoaXMuaGVhZGVyU2hvdyx0aW1lSGVhZGVyczp0aGlzLnRpbWVIZWFkZXJzLGRhdGVIZWFk''@;'; put 'put ''ZXJzOnRoaXMuZGF0ZUhlYWRlcnMsZGF0ZVRpbWVIZWFkZXJzOnRoaXMuZGF0ZVRpbWVIZWFkZXJzLHhsUnVsZXM6dGhpcy54bFJ1bGVzLGVuY29kaW5nOnRoaXMuZW5jb2Rpbmd9LGY9Pnt0aGlzLmFwcGVuZFVwbG9hZFN0YXRlKGYpfSxmPT57dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9N''@;'; put 'put ''b2RhbCgiVGFibGUgRm91bmQiLGYpfSkudGhlbihmPT57ZiYmKHRoaXMuZXhjZWxGaWxlUmVhZHk9ITAsdGhpcy51cGxvYWRlcj1mLnVwbG9hZGVyLGYuZGF0YSYmZi5oZWFkZXJTaG93Pyh0aGlzLmRhdGE9Zi5kYXRhLHRoaXMuaGVhZGVyU2hvdz1mLmhlYWRlclNob3csdGhpcy5nZXRQZW5k''@;'; put 'put ''aW5nRXhjZWxQcmV2aWV3KCkpOnRoaXMudXBsb2FkUGFyc2VkRmlsZXMoKSl9KS5jYXRjaChmPT57dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCxmLG51bGwpLHRoaXMuc2hvd1VwbG9hZE1vZGFsPSExLHRoaXMudXBsb2FkUHJldmlldz0hMSxzZXRUaW1lb3V0KCgpPT57''@;'; put 'put ''dGhpcy5maWxlbmFtZT0iIn0pfSkuZmluYWxseSgoKT0+e3RoaXMuZXhjZWxGaWxlUGFyc2luZz0hMX0pfXN1Ym1pdEV4Y2VsKCl7dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQ9PT0xLzA/dGhpcy51cGxvYWRQYXJzZWRGaWxlcygpOnRoaXMuc3VibWl0TGltaXRO''@;'; put 'put ''b3RpY2U9ITB9dXBsb2FkUGFyc2VkRmlsZXMoKXtpZih0aGlzLmNoZWNrSW52YWxpZCgpKXJldHVybiB2b2lkIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIkludmFsaWQgdmFsdWVzIGFyZSBwcmVzZW50LiIpO2lmKHRoaXMudmFsaWRhdGVQcmltYXJ5S2V5cygpLDAh''@;'; put 'put ''PT10aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgpcmV0dXJuIHRoaXMucGtEdXBzPSEwLHZvaWQodGhpcy5zdWJtaXQ9ITEpO3RoaXMucGtEdXBzPSExLHRoaXMudXBsb2FkTG9hZGluZz0hMDtsZXQgYT1bXTtmb3IoY29uc3QgZCBvZiB0aGlzLnVwbG9hZGVyLnF1ZXVlKWEucHVzaCh7''@;'; put 'put ''ZmlsZTpkLGZpbGVOYW1lOmQubmFtZX0pO3RoaXMuc2FzU2VydmljZS51cGxvYWRGaWxlKHRoaXMudXBsb2FkVXJsLGEse3RhYmxlOnRoaXMubGliZHN9KS50aGVuKGQ9PntpZih0eXBlb2YgZC5hZGFwdGVyUmVzcG9uc2Uuc2FzanNBYm9ydD4idSIpe2lmKHR5cGVvZiBkLmFkYXB0ZXJSZXNw''@;'; put 'put ''b25zZS5zYXNwYXJhbXM+InUiKXJldHVybjt7dGhpcy51cGxvYWRMb2FkaW5nPSExO2xldCBoPWQuYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtc1swXTt0aGlzLnN1Y2Nlc3NFbmFibGU9ITAsdGhpcy50YWJsZUlkPWguRFNJRCx0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIit0''@;'; put 'put ''aGlzLnRhYmxlSWQpfX1lbHNle2NvbnN0IGg9ZC5hZGFwdGVyUmVzcG9uc2UsZj1oLnNhc2pzQWJvcnRbMF0uTVNHLHY9aC5zYXNqc0Fib3J0WzBdLk1BQzt0aGlzLnVwbG9hZExvYWRpbmc9ITEsdGhpcy5maWxlbmFtZT0iIix0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYo''@;'; put 'put ''dGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKSx0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCIiLGYse1NZU1dBUk5JTkdURVhUOmguU1lTV0FSTklOR1RFWFQsU1lTRVJST1JURVhU''@;'; put 'put ''OmguU1lTRVJST1JURVhULE1BQzp2fSl9fSxkPT57dGhpcy51cGxvYWRMb2FkaW5nPSExLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QmJih0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpLHRoaXMudXBsb2FkZXIucXVl''@;'; put 'put ''dWU9W10sdGhpcy5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJmaWxlIHVwbG9hZCIsZC5hZGFwdGVyUmVzcG9uc2UpfSl9Z2V0UGVuZGluZ0V4Y2VsUHJldmlldygpe3RoaXMucXVlcnlUZXh0U2F2ZWQ9dGhpcy5xdWVyeVRleHQsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy5leGNl''@;'; put 'put ''bFVwbG9hZFN0YXRlPSJQYXJzaW5nIix0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKTtsZXQgYT1bXTt0aGlzLmRhdGEubWFwKGg9PntsZXQgZj17fTt0aGlzLmhlYWRlclNob3cubWFwKCh2LFMpPT57Zlt2XT1oW1NdfSksZi5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JE''@;'; put 'put ''X19fX198fChmLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXz0iTm8iKSxhLnB1c2goZil9KSx0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpLHRoaXMuZGF0YVNvdXJjZT1hLHRoaXMuaG90VGFibGUuZGF0''@;'; put 'put ''YT1hO2NvbnN0IGQ9dGhpcy5ob3RJbnN0YW5jZTt0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9IlZhbGlkYXRpbmctSE9UIixkLnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuZGF0YVNvdXJjZSxtYXhSb3dzOjEvMH0sITEpLGQucmVuZGVyKCksdGhpcy5hcHBlbmRVcGxvYWRTdGF0ZSgiVmFsaWRh''@;'; put 'put ''dGluZyByb3dzIiksZC52YWxpZGF0ZUNlbGxzKCgpPT57dGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy51cGxvYWRQcmV2aWV3PSEwLHRoaXMuZXhjZWxGaWxlUGFyc2luZz0hMSx0aGlzLmV4Y2VsVXBsb2FkU3RhdGU9bnVsbH0pfWRpc2NhcmRQZW5kaW5nRXhjZWwoYSl7dGhpcy5ob3RJ''@;'; put 'put ''bnN0YW5jZS51cGRhdGVTZXR0aW5ncyh7bWF4Um93czp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkfSksYSYmdGhpcy5jYW5jZWxFZGl0KCksdGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdCYmKHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3Qu''@;'; put 'put ''Zmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZT0iIiksdGhpcy51cGxvYWRQcmV2aWV3PSExLHRoaXMuZXhjZWxGaWxlUmVhZHk9ITEsdGhpcy51cGxvYWRlci5xdWV1ZT1bXSxpc05hTihwYXJzZUludCh0aGlzLnJvdXRlci51cmwuc3BsaXQoIi8iKS5wb3AoKXx8IiIpKXx8dGhpcy5xdWVyeVRl''@;'; put 'put ''eHRTYXZlZC5sZW5ndGg+MCYmKHRoaXMucXVlcnlUZXh0PXRoaXMucXVlcnlUZXh0U2F2ZWQsdGhpcy5xdWVyeVRleHRTYXZlZD0iIil9cHJldmlld1RhYmxlRWRpdENvbmZpcm0oKXt0aGlzLmRpc2NhcmRQZW5kaW5nRXhjZWwoKSx0aGlzLmNvbnZlcnRUb0NvcnJlY3RUeXBlcyh0aGlzLmRh''@;'; put 'put ''dGFTb3VyY2UpLHRoaXMuZWRpdFRhYmxlKCEwKX1hcHBlbmRVcGxvYWRTdGF0ZShhLGQ9ITEpe3RoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0JiYoZD90aGlzLnVwbG9hZFN0YXRlckNvbXBMaXN0LmZpcnN0LnJlcGxhY2VMYXN0U3RhdGUo''@;'; put 'put ''YSk6dGhpcy51cGxvYWRTdGF0ZXJDb21wTGlzdC5maXJzdC5hcHBlbmRTdGF0ZShhKSl9aXNDb2xQayhhKXtyZXR1cm4gdGhpcy5oZWFkZXJQa3MuaW5kZXhPZihhKT4tMX1pc1JlYWRvbmx5Q29sKGEpe3JldHVybiB0aGlzLmRjVmFsaWRhdG9yPy5nZXRSdWxlKGEpPy5yZWFkT25seX1pc0Nv''@;'; put 'put ''bEhlYWRlcihhKXtyZXR1cm4gdGhpcy5oZWFkZXJBcnJheS5pbmRleE9mKGEudG9VcHBlckNhc2UoKSk+LTF9cmVtb3ZlUXVlcnkoKXt0aGlzLnNhc1N0b3JlU2VydmljZS5yZW1vdmVDbGF1c2UoKX1zZW5kQ2xhdXNlKCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXthLnN1Ym1p''@;'; put 'put ''dExvYWRpbmc9ITA7bGV0IGQ9W10saD1bXTtpZih0eXBlb2YgYS5jbGF1c2VzPiJ1IilyZXR1cm4gYS5udWxsVmFyaWFibGVzPSEwLHZvaWQoYS5zdWJtaXRMb2FkaW5nPSExKTt7bGV0IGY9YS5jbGF1c2VzLnF1ZXJ5T2JqO2lmKGZbMF0uZWxlbWVudHMubGVuZ3RoPDEpcmV0dXJuKCJob21l''@;'; put 'put ''Ij09PUhuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Ibi5yb290UGFyYW0pJiYoSG4uZWRpdG9yLmZpbHRlci5jbGF1c2VzPVtdLEhuLmVkaXRvci5maWx0ZXIucXVlcnk9W10sSG4uZWRpdG9yLmZpbHRlci5ncm91cExvZ2ljPSIiKSx2b2lkIGEucm91dGVyLm5hdmlnYXRlKFsiL2VkaXRvci8i''@;'; put 'put ''K2EubGliZHNdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KTtmb3IobGV0IHY9MDt2PGYubGVuZ3RoO3YrKyl7Y29uc3QgUz1mW3ZdLmVsZW1lbnRzO2Q9Uy5maWx0ZXIoZnVuY3Rpb24oVil7cmV0dXJuIG51bGw9PT1WLnZhcmlhYmxlfSksZC5sZW5ndGgmJmgucHVzaChTKX19''@;'; put 'put ''aWYoaC5sZW5ndGgpcmV0dXJuIGEubnVsbFZhcmlhYmxlcz0hMCx2b2lkKGEuc3VibWl0TG9hZGluZz0hMSk7dHJ5e2lmKHZvaWQgMCE9PWEuY2xhdXNlcyYmYS5saWJkcyl7Y29uc3QgZj17Z3JvdXBMb2dpYzphLmNsYXVzZXMuZ3JvdXBMb2dpYyxmaWx0ZXJHcm91cHM6W119O2EuY2xhdXNl''@;'; put 'put ''cy5xdWVyeU9iai5mb3JFYWNoKFM9Pntjb25zdCBWPXtmaWx0ZXJDbGF1c2VzOltdfTtTLmVsZW1lbnRzLmZvckVhY2goUT0+e1YuZmlsdGVyQ2xhdXNlcy5wdXNoKGEuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUoUSkpfSksVi5jbGF1c2VMb2dpYz1TLmNsYXVzZUxvZ2ljLGYuZmlsdGVyR3Jv''@;'; put 'put ''dXBzLnB1c2goYS5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShWKSl9KTtjb25zdCB2PWEuc2FzU3RvcmVTZXJ2aWNlLmNyZWF0ZUZpbHRlclF1ZXJ5VGFibGUoZik7eWllbGQgYS5zYXNTdG9yZVNlcnZpY2Uuc2F2ZVF1ZXJ5KGEubGliZHMsdikudGhlbihTPT57YS5xdWVyeUZpbHRlcj17aWQ6''@;'; put 'put ''Uy5yZXN1bHRbMF0uRklMVEVSX1JLLHRhYmxlOlMucmVzdWx0WzBdLkZJTFRFUl9UQUJMRX0sYS5yb3V0ZXIubmF2aWdhdGUoWyIvIl0se3NraXBMb2NhdGlvbkNoYW5nZTohMCxxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KS50aGVuKCgpPT5hLnJvdXRlci5uYXZpZ2F0ZShbIi9l''@;'; put 'put ''ZGl0b3IvIithLnF1ZXJ5RmlsdGVyLnRhYmxlKyIvIithLnF1ZXJ5RmlsdGVyLmlkXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJlc2VydmUifSkpLGEuZmlsdGVyPSExfSkuY2F0Y2goUz0+e2Euc3VibWl0TG9hZGluZz0hMX0pfX1jYXRjaChmKXthLnF1ZXJ5RXJyPSEwLGEuc3VibWl0TG9h''@;'; put 'put ''ZGluZz0hMSxhLnF1ZXJ5RXJyTWVzc2FnZT1mfX0pKCl9b3BlblFiKCl7dGhpcy5saWJkcyYmKHRoaXMuZmlsdGVyPSEwLHRoaXMuY2RmLmRldGVjdENoYW5nZXMoKSx0aGlzLnN1Ym1pdExvYWRpbmc9ITEsdGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0UXVlcnlWYXJpYWJsZXModGhpcy5saWJk''@;'; put 'put ''cyx0aGlzLmNvbHMpKX1lZGl0VGFibGUoYSxkKXt0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCEwKTtjb25zdCBoPXRoaXMuaG90SW5zdGFuY2U7bGV0IGY9aC5nZXRQbHVnaW4oIm11bHRpQ29sdW1uU29ydGluZyIpLHY9Zi5nZXRTb3J0Q29uZmlnKCksUz1BcnJheS5pc0Fy''@;'; put 'put ''cmF5KHYpP3Y6W3ZdO3NldFRpbWVvdXQoKCk9PnthfHwodGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKSxkJiZ0aGlzLmRhdGFTb3VyY2VVbmNoYW5nZWQucG9wKCkpLHRoaXMuaG90VGFibGUucmVhZE9ubHk9ITEs''@;'; put 'put ''dGhpcy5ob3RUYWJsZS5kYXRhPXRoaXMuZGF0YVNvdXJjZSxoLnVwZGF0ZVNldHRpbmdzKHtyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5fSwhMSksaC5yZW5kZXIoKTtmb3IobGV0IFYgb2YgUylmLnNvcnQoVik7dGhpcy5yZVNldENlbGxWYWxpZGF0aW9uVmFsdWVzKCl9LDApfWNv''@;'; put 'put ''bnZlcnRUb0NvcnJlY3RUeXBlcyhhKXtmb3IobGV0IGQgb2YgYSlmb3IobGV0IGggaW4gZCl7bGV0IGY9dGhpcy5jb2xzLmZpbmQodj0+di5OQU1FPT09aCk7ZiYmIiIhPT1kW2hdJiYibnVtIj09PWYuVFlQRSYmIWYuRERUWVBFLmluY2x1ZGVzKCJUSU1FIikmJiFmLkREVFlQRS5pbmNsdWRl''@;'; put 'put ''cygiREFURSIpJiYoZFtoXT1wYXJzZUludChkW2hdKSl9fWNhbmNlbEVkaXQoKXt0aGlzLnRvZ2dsZUhvdFBsdWdpbigiY29udGV4dE1lbnUiLCExKSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlPVtdO2NvbnN0IGE9dGhpcy5ob3RJbnN0YW5jZTtsZXQgZD1hLmdldFBsdWdpbigibXVsdGlD''@;'; put 'put ''b2x1bW5Tb3J0aW5nIiksaD1kLmdldFNvcnRDb25maWcoKSxmPUFycmF5LmlzQXJyYXkoaCk/aDpbaF07dGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkJiYodGhpcy5kYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlVW5jaGFuZ2VkKSksdGhpcy5o''@;'; put 'put ''b3RUYWJsZS5kYXRhPXRoaXMuZGF0YVNvdXJjZSx0aGlzLmhvdFRhYmxlLnJlYWRPbmx5PSEwLGEudXBkYXRlU2V0dGluZ3Moe3JlYWRPbmx5OnRoaXMuaG90VGFibGUucmVhZE9ubHksZGF0YTp0aGlzLmRhdGFTb3VyY2V9LCExKSxhLnZhbGlkYXRlUm93cyh0aGlzLm1vZGlmZWRSb3dzSW5k''@;'; put 'put ''ZXhlcyk7Zm9yKGxldCB2IG9mIGYpZC5zb3J0KHYpO3RoaXMuY2hlY2tSb3dMaW1pdCgpfWhvdENsaWNrZWQoKXsxPT09dGhpcy50aW1lc0NsaWNrZWQmJnRoaXMuaG90VGFibGUucmVhZE9ubHkmJnRoaXMuZWRpdFRhYmxlKCksMD09PXRoaXMudGltZXNDbGlja2VkJiYodGhpcy50aW1lc0Ns''@;'; put 'put ''aWNrZWQrKyxzZXRUaW1lb3V0KCgpPT57dGhpcy50aW1lc0NsaWNrZWQ9MH0sMjAwKSl9Y2xlYW5FeGNlZWQoKXt0aGlzLmV4Y2VlZENlbGxzPVtdfWFwcHJvdmVyc1RvZ2dsZSgpe3RoaXMuc2hvd0FwcHJvdmVycz0hdGhpcy5zaG93QXBwcm92ZXJzfWFkZFJvdygpe3RoaXMuYWRkaW5nTmV3''@;'; put 'put ''Um93PSEwLHNldFRpbWVvdXQoKCk9Pntjb25zdCBhPXRoaXMuaG90SW5zdGFuY2U7bGV0IGQ9dGhpcy5kYXRhU291cmNlLmxlbmd0aDthLmFsdGVyKCJpbnNlcnRfcm93X2JlbG93IixkLDEpLGEudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksYS5zZWxlY3RDZWxs''@;'; put 'put ''KHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMSwwKSxhLnJlbmRlcigpLHRoaXMuZGF0YVNvdXJjZVtkXSYmKHRoaXMuZGF0YVNvdXJjZVtkXS5ub0xpbmtPcHRpb249ITApLHRoaXMuYWRkaW5nTmV3Um93PSExLHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfSl9Y2FuY2VsU3VibWl0''@;'; put 'put ''KCl7dGhpcy5kYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlQmVmb3JlU3VibWl0KSx0aGlzLmRhdGFTb3VyY2VCZWZvcmVTdWJtaXQ9W10sdGhpcy5ob3RUYWJsZS5kYXRhPXRoaXMuZGF0YVNvdXJjZTtjb25zdCBhPXRoaXMuaG90SW5zdGFu''@;'; put 'put ''Y2U7YS51cGRhdGVTZXR0aW5ncyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2UsY29sSGVhZGVyczp0aGlzLmhlYWRlckNvbHVtbnMsY29sdW1uczp0aGlzLmNlbGxWYWxpZGF0aW9uLG1vZGlmeUNvbFdpZHRoOmZ1bmN0aW9uKGQsaCl7cmV0dXJuIDA9PT1oPzYwOmQ+NTAwPzUwMDpkfX0sITEpLGEu''@;'; put 'put ''c2VsZWN0Q2VsbCgwLDApLGEucmVuZGVyKCksYS52YWxpZGF0ZVJvd3ModGhpcy5tb2RpZmVkUm93c0luZGV4ZXMpLHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpfWdldFJvd3NTdWJtaXR0aW5nQ291bnQoKXt0aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKS5kZWJ1ZyYm''@;'; put 'put ''KHRoaXMubG9nZ2VyU2VydmljZS5sb2codGhpcy5kYXRhU291cmNlKSx0aGlzLmxvZ2dlclNlcnZpY2UubG9nKHRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZCkpO2xldCBhPTAsZD0wLGg9MDt0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcz1bXSx0aGlzLmRhdGFNb2RpZmllZD1bXTtmb3IobGV0IGY9''@;'; put 'put ''MDtmPHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7ZisrKXtsZXQgdj10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVtmXSk7aWYoIlllcyI9PT12Ll9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXyl0aGlzLmRhdGFNb2RpZmllZC5wdXNoKHYpLGQrKztlbHNl''@;'; put 'put ''e2xldCBTPXRoaXMuZGF0YVNvdXJjZVVuY2hhbmdlZC5maW5kKFY9Pntmb3IobGV0IFEgb2YgdGhpcy5oZWFkZXJQa3MpaWYoVltRXSE9PXZbUV0pcmV0dXJuITE7cmV0dXJuITB9KTtTP0pTT04uc3RyaW5naWZ5KHYpIT09SlNPTi5zdHJpbmdpZnkoUykmJih0aGlzLmRhdGFNb2RpZmllZC5w''@;'; put 'put ''dXNoKHYpLHRoaXMubW9kaWZlZFJvd3NJbmRleGVzLnB1c2goZiksYSsrKToodGhpcy5kYXRhTW9kaWZpZWQucHVzaCh2KSx0aGlzLm1vZGlmZWRSb3dzSW5kZXhlcy5wdXNoKGYpLGgrKyl9fXRoaXMucm93c0NoYW5nZWQ9e3Jvd3NVcGRhdGVkOmEscm93c0RlbGV0ZWQ6ZCxyb3dzQWRkZWQ6''@;'; put 'put ''aH19dmFsaWRhdGVQcmltYXJ5S2V5cygpe2NvbnN0IGE9dGhpcy5ob3RJbnN0YW5jZTtsZXQgZD1hLmdldERhdGEoKTt0aGlzLnBrRmllbGRzPVtdO2ZvcihsZXQgUz0wO1M8ZC5sZW5ndGg7UysrKXtsZXQgVj0iIjtmb3IobGV0IFE9MTtRPHRoaXMucmVhZE9ubHlGaWVsZHMrMTtRKyspVj1W''@;'; put 'put ''KyJ8IitkW1NdW1FdO3RoaXMucGtGaWVsZHMucHVzaChWKX1sZXQgdixoPVtdLGY9dGhpcy5kYXRhU291cmNlLmxlbmd0aDtmb3IobGV0IFM9MDtTPHRoaXMucGtGaWVsZHMubGVuZ3RoO1MrKylmb3IobGV0IFY9MDtWPHRoaXMucGtGaWVsZHMubGVuZ3RoO1YrKyl0aGlzLnBrRmllbGRzW1Nd''@;'; put 'put ''PT09dGhpcy5wa0ZpZWxkc1tWXSYmViE9PVMmJmgucHVzaChWKTtpZih0aGlzLnBrRmllbGRzLmxlbmd0aD5mKWZvcihsZXQgUz1mO1M8dGhpcy5wa0ZpZWxkcy5sZW5ndGg7UysrKWZvcihsZXQgVj1mO1Y8dGhpcy5wa0ZpZWxkcy5sZW5ndGg7VisrKVM8ViYmdGhpcy5wa0ZpZWxkc1tTXT09''@;'; put 'put ''PXRoaXMucGtGaWVsZHNbVl0mJmgucHVzaChWKTtmb3IobGV0IFM9MDtTPGgubGVuZ3RoO1MrKylmb3IobGV0IFY9MTtWPHRoaXMucmVhZE9ubHlGaWVsZHMrMTtWKyspdj1hLmdldENlbGxNZXRhKGhbU10sViksdi52YWxpZD0hMSx2LmR1cEtleT0hMCxhLnJlbmRlcigpO3RoaXMuZHVwbGlj''@;'; put 'put ''YXRlUGtJbmRleGVzPVsuLi5uZXcgU2V0KGguc29ydCgpKV19cmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcyhhPSExLGQpe2NvbnN0IGg9dGhpcy5ob3RJbnN0YW5jZTtmb3IobGV0IGYgb2YgdGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZSl7Y29uc3Qgdj1mLnZhbHVlcy5tYXAoUz0+U1t0aGlz''@;'; put 'put ''LmNlbGxWYWxpZGF0aW9uRmllbGRzLlJBV19WQUxVRV0pO2guYmF0Y2goKCk9Pntjb25zdCBTPWguZ2V0Q2VsbE1ldGEoZi5yb3csZi5jb2wpLFY9dGhpcy5kY1ZhbGlkYXRvcj8uZ2V0UnVsZShTLmRhdGF8fCIiKTtsZXQgUTtWJiYoUT10aGlzLmRjVmFsaWRhdG9yPy5nZXREcURyb3Bkb3du''@;'; put 'put ''U291cmNlKFYpKSxRfHwoUT1bXSk7Y29uc3QgZGU9Wy4uLm5ldyBTZXQoWy4uLlEsLi4udl0pXTt0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGYuY29sLHtzb3VyY2U6ZGV9KSxoLnNldENlbGxNZXRhKGYucm93LGYuY29sLCJzb3VyY2UiLGRlKSxmLnZhbHVl''@;'; put 'put ''cy5sZW5ndGg+MCYmKGguc2V0Q2VsbE1ldGEoZi5yb3csZi5jb2wsInJlbmRlcmVyIiwiYXV0b2NvbXBsZXRlIiksaC5zZXRDZWxsTWV0YShmLnJvdyxmLmNvbCwiZWRpdG9yIiwiYXV0b2NvbXBsZXRlLmN1c3RvbSIpLGguc2V0Q2VsbE1ldGEoZi5yb3csZi5jb2wsInN0cmljdCIsZi5zdHJp''@;'; put 'put ''Y3QpLGguc2V0Q2VsbE1ldGEoZi5yb3csZi5jb2wsImZpbHRlciIsITEpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I/LnVwZGF0ZVJ1bGUoZi5jb2wse3JlbmRlcmVyOiJhdXRvY29tcGxldGUiLGVkaXRvcjoiYXV0b2NvbXBsZXRlLmN1c3RvbSIsc3RyaWN0OmYuc3RyaWN0LGZp''@;'; put 'put ''bHRlcjohMX0pKSx0aGlzLnJlU2V0RXh0ZW5kZWRDZWxsVmFsaWRhdGlvblZhbHVlcyhmLHZvaWQgMCxhLGQpLGgucmVuZGVyKCl9KX19cmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKGEsZCxoPSExLGYpe2lmKGEpe2R8fChkPWEucm93KTtjb25zdCBTPXRoaXMuZ2V0RXh0ZW5k''@;'; put 'put ''ZWRWYWx1ZXNCeUNlbGxWYWx1ZShhKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyhhLGQsUyxoLGYpfWVsc2UgZm9yKGxldCBTIG9mIHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Upe2NvbnN0IFY9dGhpcy5nZXRFeHRlbmRlZFZhbHVlc0J5Q2VsbFZhbHVlKFMpO3RoaXMuc2V0RXh0''@;'; put 'put ''ZW5kZWRWYWx1ZXNUb0NlbGxzKFMsUy5yb3csVixoLGYpfX1zZXRFeHRlbmRlZFZhbHVlc1RvQ2VsbHMoYSxkLGgsZj0hMSx2KXtjb25zdCBTPXRoaXMuaG90SW5zdGFuY2U7bGV0IFY9W107Zm9yKGxldCBRIG9mIGgpVi5pbmRleE9mKFEuRVhUUkFfQ09MX05BTUUpPDAmJlYucHVzaChRLkVY''@;'; put 'put ''VFJBX0NPTF9OQU1FKTtmb3IobGV0IFEgb2YgVil7Y29uc3QgZGU9aC5maWx0ZXIoTXQ9Pk10LkVYVFJBX0NPTF9OQU1FPT09USk7bGV0IHBlPWRlLm1hcChNdD0+IkMiPT09TXQuRElTUExBWV9UWVBFP010LlJBV19WQUxVRV9DSEFSOk10LlJBV19WQUxVRV9OVU0pO2NvbnN0IENlPVMucHJv''@;'; put 'put ''cFRvQ29sKFEpO3RoaXMuZGlzYWJsZWRCYXNpY0R5bmFtaWNDZWxsVmFsaWRhdGlvbk1hcC5maW5kKE10PT5NdC5yb3c9PT1kJiZNdC5jb2w9PT1DZSl8fHRoaXMuZGlzYWJsZWRCYXNpY0R5bmFtaWNDZWxsVmFsaWRhdGlvbk1hcC5wdXNoKHtyb3c6ZCxjb2w6Q2UsYWN0aXZlOiExfSksUy5z''@;'; put 'put ''ZXRDZWxsTWV0YShkLENlLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLFMuc2V0Q2VsbE1ldGEoZCxDZSwiZWRpdG9yIiwiYXV0b2NvbXBsZXRlLmN1c3RvbSIpLFMuc2V0Q2VsbE1ldGEoZCxDZSwic3RyaWN0IixhLnN0cmljdCksUy5zZXRDZWxsTWV0YShkLENlLCJmaWx0ZXIiLCExKSx0''@;'; put 'put ''aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKENlLHtyZW5kZXJlcjoiYXV0b2NvbXBsZXRlIixlZGl0b3I6ImF1dG9jb21wbGV0ZS5jdXN0b20iLHN0cmljdDphLnN0cmljdCxmaWx0ZXI6ITF9KTtjb25zdCBZZT1TLmdldENlbGxNZXRhKGQsQ2UpLGV0PXRoaXMu''@;'; put 'put ''ZGNWYWxpZGF0b3I/LmdldFJ1bGUoWWUuZGF0YXx8IiIpO2xldCBkdDtldCYmKGR0PXRoaXMuZGNWYWxpZGF0b3I/LmdldERxRHJvcGRvd25Tb3VyY2UoZXQpKSxkdHx8KGR0PVtdKSwibnVtZXJpYyI9PT1ldD8udHlwZT8oZHQ9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVl''@;'; put 'put ''cyhkdCwibnVtYmVyIikscGU9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhwZSwibnVtYmVyIikpOihkdD10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKGR0LCJzdHJpbmciKSxwZT10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVz''@;'; put 'put ''KHBlLCJzdHJpbmciKSk7Y29uc3QgaHQ9Wy4uLm5ldyBTZXQoWy4uLmR0LC4uLnBlXSldO2lmKFMuc2V0Q2VsbE1ldGEoZCxDZSwic291cmNlIixodCksdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZShDZSx7c291cmNlOmh0fSksZil7aWYodiYmdiE9PWQpcmV0''@;'; put 'put ''dXJuO2NvbnN0IE10PWRlLmZpbmQoUXQ9PjE9PT1RdC5GT1JDRV9GTEFHKTtNdCYmc2V0VGltZW91dCgoKT0+e1Muc2V0RGF0YUF0Q2VsbChkLENlLCJDIj09PU10LkRJU1BMQVlfVFlQRT9NdC5SQVdfVkFMVUVfQ0hBUjpNdC5SQVdfVkFMVUVfTlVNLCJmb3JjZV9jZWxsX3ZhbGlkYXRpb25f''@;'; put 'put ''dmFsdWUiKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9PT1kJiYodGhpcy5kYXRhU291cmNlW3RoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleF1bUV09IkMiPT09TXQuRElTUExBWV9UWVBFP010LlJBV19WQUxVRV9DSEFSOk10LlJBV19WQUxVRV9OVU0pfSl9fX1nZXRFeHRlbmRlZFZh''@;'; put 'put ''bHVlc0J5Q2VsbFZhbHVlKGEsZCl7Y29uc3QgZj10aGlzLmhvdEluc3RhbmNlLmdldERhdGFBdENlbGwoZHx8YS5yb3csYS5jb2wpLHY9KGEudmFsdWVzLmZpbmQoZGU9PmRlW3RoaXMuY2VsbFZhbGlkYXRpb25GaWVsZHMuUkFXX1ZBTFVFXT09PWYpfHxbXSlbdGhpcy5jZWxsVmFsaWRhdGlv''@;'; put 'put ''bkZpZWxkcy5ESVNQTEFZX0lOREVYXSxTPWEuZXh0ZW5kZWRfdmFsdWVzPy5maWx0ZXIoZGU9PmRlWzBdPT09diksVj10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZXh0ZW5kZWRDZWxsVmFsaWRhdGlvbkZpZWxkcyksUT1bXTtmb3IobGV0IGRlIG9mIFN8fFtdKXtsZXQgcGU9''@;'; put 'put ''e307Zm9yKGxldCBDZSBvZiBPYmplY3Qua2V5cyhWKSlwZVtDZV09ZGVbVltDZV1dO1EucHVzaChwZSl9cmV0dXJuIFF9Y2hlY2tTYXZlKCl7aWYodGhpcy5nZXRSb3dzU3VibWl0dGluZ0NvdW50KCksMD09PXRoaXMucm93c0NoYW5nZWQucm93c0FkZGVkJiYwPT09dGhpcy5yb3dzQ2hhbmdl''@;'; put 'put ''ZC5yb3dzVXBkYXRlZCYmMD09PXRoaXMucm93c0NoYW5nZWQucm93c0RlbGV0ZWQpcmV0dXJuIHRoaXMuYmFkRWRpdFRpdGxlPSJObyBjaGFuZ2VzIHRvIHN1Ym1pdCIsdGhpcy5iYWRFZGl0Q2F1c2U9IlBsZWFzZSBtb2RpZnkgc29tZSB2YWx1ZXMgYW5kIHRyeSBhZ2Fpbi4iLHZvaWQodGhp''@;'; put 'put ''cy5iYWRFZGl0PSEwKTtjb25zdCBhPXRoaXMuaG90SW5zdGFuY2U7dGhpcy5kYXRhU291cmNlQmVmb3JlU3VibWl0PXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5kYXRhU291cmNlKTtmb3IobGV0IGg9MDtoPHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7aCsrKWRlbGV0ZSB0aGlz''@;'; put 'put ''LmRhdGFTb3VyY2VbaF0ubm9MaW5rT3B0aW9uO2EudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixtb2RpZnlDb2xXaWR0aDpmdW5jdGlvbihoLGYpe3JldHVybiBoPjUw''@;'; put 'put ''MD81MDA6aH19LCExKSx0aGlzLnJlU2V0Q2VsbFZhbGlkYXRpb25WYWx1ZXMoKSxsLmNudD0wLGwubm9uUGtDbnQ9MDtsZXQgZD1hLmdldERhdGEoKTtpZihkLmxlbmd0aD4xJiZhLmlzRW1wdHlSb3coZC5sZW5ndGgtMSkmJmEuYWx0ZXIoInJlbW92ZV9yb3ciLGQubGVuZ3RoLTEpLHRoaXMu''@;'; put 'put ''dmFsaWRhdGVQcmltYXJ5S2V5cygpLDAhPT10aGlzLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgpcmV0dXJuIHRoaXMucGtEdXBzPSEwLHRoaXMuc3VibWl0PSExLHZvaWQgdGhpcy5jYW5jZWxTdWJtaXQoKTt0aGlzLnBrRHVwcz0hMSxhLnZhbGlkYXRlUm93cyh0aGlzLm1vZGlmZWRSb3dz''@;'; put 'put ''SW5kZXhlcywoKT0+e3RoaXMuY2hlY2tJbnZhbGlkKCk/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiVmFsaWRhdGlvbiBlcnJvciIsIkludmFsaWQgVmFsdWVzIGFyZSBQcmVzZW50Iik6KHRoaXMuc3VibWl0PSEwLHRoaXMudmFsaWRhdGlvbkRvbmU9MSxzZXRUaW1lb3V0KCgp''@;'; put 'put ''PT57bGV0IGg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1GaWVsZHNfOCIpO2gmJmguZm9jdXMoKX0sMjAwKSl9KX1zYXZlVGFibGUoYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtpZihkLmhvdEluc3RhbmNlLmdldERhdGEoKSxhPShhPWEuZmlsdGVyKHY9PiEhZC5k''@;'; put 'put ''YXRhTW9kaWZpZWQuZmluZChWPT57Zm9yKGxldCBRIG9mIGQuaGVhZGVyUGtzKWlmKFZbUV0hPT12W1FdKXJldHVybiExO3JldHVybiEwfSkpKS5tYXAodj0+e2xldCBTPXYuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fO3JldHVybiBkZWxldGUgdi5fX19fX0RFTEVURV9fVEhJU19f''@;'; put 'put ''UkVDT1JEX19fX18sdi5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX189UyxPYmplY3Qua2V5cyh2KS5tYXAoVj0+eyJudW1lcmljIj09PWQuZGNWYWxpZGF0b3I/LmdldFJ1bGUoVik/LnR5cGUmJiIuIj09PXZbVl0mJih2W1ZdPW51bGwpfSksdn0pLGQubG9nZ2VyU2VydmljZS5sb2co''@;'; put 'put ''IkRhdGEgc3VibWl0dGVkIixhKSxkLmNoZWNrSW52YWxpZCgpKXJldHVybiBkLmV2ZW50U2VydmljZS5zaG93SW5mb01vZGFsKCJWYWxpZGF0aW9uIGVycm9yIiwiSW52YWxpZCBWYWx1ZXMgYXJlIFByZXNlbnQiKSxkLmNhbmNlbFN1Ym1pdCgpLHZvaWQoZC5zdWJtaXQ9ITEpO2lmKGQudmFs''@;'; put 'put ''aWRhdGlvbkRvbmU9MCxkLnNhdmVMb2FkaW5nPSEwLGwuY250PDEmJjA9PT1kLmR1cGxpY2F0ZVBrSW5kZXhlcy5sZW5ndGgmJmwubm9uUGtDbnQ8MSl7ZC5zYXZlTG9hZGluZz0hMCxkLmRpc2FibGVTdWJtaXQ9ITEsZC5zdWJtaXQ9ITA7bGV0IHY9e0FDVElPTjoiTE9BRCJ9O2lmKGQubWVz''@;'; put 'put ''c2FnZT1kLm1lc3NhZ2UucmVwbGFjZSgvXG4vZywiLiAiKSx2Lk1FU1NBR0U9ZC5tZXNzYWdlLHYuTElCRFM9ZC5saWJkcyxkLmNvbHMpe2NvbnN0IFM9YS5zbGljZSgwLGQubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0KTtpZih5aWVsZCBkLnNhc1N0b3JlU2VydmljZS51''@;'; put 'put ''cGRhdGVUYWJsZSh2LFMsIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvc3RhZ2VkYXRhIixkLiRkYXRhRm9ybWF0cykudGhlbihRPT57aWYodHlwZW9mIFEuYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFtczwidSIpcmV0dXJuIGQucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9zdGFnZS8iK1EuYWRh''@;'; put 'put ''cHRlclJlc3BvbnNlLnNhc3BhcmFtc1swXS5EU0lEKSwhMDtsZXQgZGU9IlN1Ym1pdCByZXF1ZXN0IGZhaWxlZCI7USYmKGRlKz1gXG4keyJzdHJpbmciPT10eXBlb2YgUT9ROkpTT04uc3RyaW5naWZ5KFEpfWApLGQuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJlZGl0b3JzL3N0YWdl''@;'; put 'put ''ZGF0YSIsZGUsbnVsbCwiU3VibWl0IGVycm9yIil9KS5jYXRjaChRPT57Y29uc29sZS5sb2coImVyciIsUSksbC5jbnQ9MCxsLm5vblBrQ250PTAsZC5kaXNhYmxlU3VibWl0PSEwLGQuc3VibWl0PSExO2xldCBkZT0ic3RyaW5nIj09dHlwZW9mIFEuYWRhcHRlclJlc3Buc2U/US5hZGFwdGVy''@;'; put 'put ''UmVzcG5zZTpKU09OLnN0cmluZ2lmeShRLmFkYXB0ZXJSZXNwbnNlKTtyZXR1cm4gZC5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImVkaXRvcnMvc3RhZ2VkYXRhIixgU3VibWl0IHJlcXVlc3QgZmFpbGVkXG4ke2RlfWAsbnVsbCwiU3VibWl0IGVycm9yIiksITF9KSlyZXR1cm59fWwu''@;'; put 'put ''Y250Pj0xPyhkLnBrTnVsbD0hMCxkLnN1Ym1pdD0hMCk6ZC5zdWJtaXQ9ITEsbC5ub25Qa0NudD49MT8oZC5ub1BrTnVsbD0hMCxkLnN1Ym1pdD0hMCk6ZC5zdWJtaXQ9ITEsZC5jYW5jZWxTdWJtaXQoKSxsLmNudD0wLGwubm9uUGtDbnQ9MCxkLmRpc2FibGVTdWJtaXQ9ITB9KSgpfXZhbGlk''@;'; put 'put ''YXRvclJ1bGVTb3VyY2UoYSl7cmV0dXJuIHRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUoYSl9Y2hlY2tJbnZhbGlkKCl7cmV0dXJuIHRoaXMuaG90SW5zdGFuY2VDb21wTGlzdC5maXJzdC5jb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuaHRJbnZhbGlkIikubGVu''@;'; put 'put ''Z3RoPjB9Z29Ub0VkaXRvcigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi8iKX1jbG9zZVJlY29yZEVkaXQoYSl7dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PS0xLHRoaXMuY3VycmVudEVkaXRSZWNvcmQ9dm9pZCAwLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I9dm9p''@;'; put 'put ''ZCAwLCJBREQiPT09dGhpcy5yZWNvcmRBY3Rpb24mJiFhJiYodGhpcy5kYXRhU291cmNlPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5wcmV2RGF0YVNvdXJjZSksdGhpcy5ob3RJbnN0YW5jZS51cGRhdGVTZXR0aW5ncyh7ZGF0YTp0aGlzLmRhdGFTb3VyY2V9LCExKSl9Y29u''@;'; put 'put ''ZmlybVJlY29yZEVkaXQoYT0hMCl7Y29uc3QgZD10aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg7YSYmKHRoaXMuY3VycmVudEVkaXRSZWNvcmRJbmRleD0tMSksdGhpcy5jb2x1bW5IZWFkZXIubWFwKGY9Pntjb25zdCB2PXRoaXMuY3VycmVudEVkaXRSZWNvcmRbZl0sUz0ibnVtIj09PXRo''@;'; put 'put ''aXMuJGRhdGFGb3JtYXRzPy52YXJzW2ZdPy50eXBlLFY9KDAsZWcuaXNTcGVjaWFsTWlzc2luZykodik7UyYmIWlzTmFOKHYpJiYhViYmKHRoaXMuY3VycmVudEVkaXRSZWNvcmRbZl09MSp2KX0pLHRoaXMuZGF0YVNvdXJjZVtkXT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90VGFi''@;'; put 'put ''bGUuZGF0YVtkXT10aGlzLmN1cnJlbnRFZGl0UmVjb3JkLHRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlfSwhMSksYSYmKHRoaXMuY3VycmVudEVkaXRSZWNvcmQ9dm9pZCAwKX1vbk5leHRSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRFZGl0''@;'; put 'put ''KCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4Pj10aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTE/MDp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgrMSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5k''@;'; put 'put ''ZXgpfW9uUHJldmlvdXNSZWNvcmQoKXt0aGlzLmNvbmZpcm1SZWNvcmRFZGl0KCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXg9dGhpcy5jdXJyZW50RWRpdFJlY29yZEluZGV4PD0wP3RoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMTp0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgtMSx0''@;'; put 'put ''aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgpfWFkZFJlY29yZEJ1dHRvbkNsaWNrKCl7dGhpcy5yZXN0cmljdGlvbnMucmVzdHJpY3RBZGRSZWNvcmQ/dGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCJBZGQgUmVjb3JkIik6dGhpcy5h''@;'; put 'put ''ZGRFZGl0TmV3UmVjb3JkKCl9YWRkRWRpdE5ld1JlY29yZCgpe3RoaXMuYWRkUmVjb3JkKCksc2V0VGltZW91dCgoKT0+e3RoaXMuZWRpdFJlY29yZChudWxsLHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgtMSwhMCl9LDFlMyl9YWRkUmVjb3JkKCl7dGhpcy5hZGRSb3coKX1lZGl0UmVjb3JkKGEs''@;'; put 'put ''ZCxoKXtpZih0aGlzLnJlc3RyaWN0aW9ucy5yZXN0cmljdEVkaXRSZWNvcmQpdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0RlbW9MaW1pdE1vZGFsKCJFZGl0IFJlY29yZCIpO2Vsc2UgaWYoISh2b2lkIDA9PT1kfHxkPDB8fHRoaXMucmVzdHJpY3Rpb25zLnJlc3RyaWN0RWRpdFJlY29yZCkpe2lm''@;'; put 'put ''KHRoaXMucmVjb3JkQWN0aW9uPWg/IkFERCI6IkVESVQiLHRoaXMuaG90VGFibGUucmVhZE9ubHkmJnRoaXMuZWRpdFRhYmxlKCExLGgpLHRoaXMuY3VycmVudEVkaXRSZWNvcmRWYWxpZGF0b3I9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRjVmFsaWRhdG9yKSxoKXRoaXMu''@;'; put 'put ''cHJldkRhdGFTb3VyY2U9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFTb3VyY2UpLHRoaXMucHJldkRhdGFTb3VyY2UucG9wKCk7ZWxzZXtjb25zdCBmPXRoaXMuaGVscGVyU2VydmljZS5kZWVwQ2xvbmUodGhpcy5ob3RJbnN0YW5jZS5nZXRDZWxsTWV0YUF0Um93KGQp''@;'; put 'put ''KTtmb3IobGV0IHYgb2YgZilpZih2KXtjb25zdCBTPXYucHJvcD8udG9TdHJpbmcoKTtkZWxldGUgdi5wcm9wLGRlbGV0ZSB2LmRhdGEsdGhpcy5jdXJyZW50RWRpdFJlY29yZFZhbGlkYXRvcj8udXBkYXRlUnVsZSh2LmNvbCx7Li4udixkYXRhOlN9KX19dGhpcy5jdXJyZW50RWRpdFJlY29y''@;'; put 'put ''ZEluZGV4PWQsdGhpcy5jdXJyZW50RWRpdFJlY29yZD10aGlzLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKHRoaXMuZGF0YVNvdXJjZVtkXSl9fXRvZ2dsZUhvdFBsdWdpbihhLGQpe2NvbnN0IGg9dGhpcy5ob3RJbnN0YW5jZTtoLmJhdGNoKCgpPT57bGV0IGY9aC5nZXRQbHVnaW4oYSk7Zj8o''@;'; put 'put ''c2V0VGltZW91dCgoKT0+e2Q/Zi5lbmFibGVQbHVnaW4oKTpmLmRpc2FibGVQbHVnaW4oKX0sMTAwKSxoLnJlbmRlcigpKTpjb25zb2xlLndhcm4oIlRvZ2dsZSBIb3QgUGx1Z2luIGZhaWxlZCAtIFBsdWdpbiBuYW1lZDogIithKyIgLSBjb3VsZCBub3QgYmUgZm91bmQuIil9KX1keW5hbWlj''@;'; put 'put ''Q2VsbFZhbGlkYXRpb25EaXNhYmxlZChhLGQpe3JldHVybiEhdGhpcy5kaXNhYmxlZEJhc2ljRHluYW1pY0NlbGxWYWxpZGF0aW9uTWFwLmZpbmQoZj0+Zi5yb3c9PT1hJiZmLmNvbD09PWQmJiFmLmFjdGl2ZSl9ZHluYW1pY0NlbGxWYWxpZGF0aW9uKGEsZCl7aWYodGhpcy5keW5hbWljQ2Vs''@;'; put 'put ''bFZhbGlkYXRpb25EaXNhYmxlZChhLGQpKXJldHVybjtjb25zdCBoPXRoaXMuaG90SW5zdGFuY2U7aWYoaC5nZXRDZWxsTWV0YShhLGQpLnJlYWRPbmx5KXJldHVybjtjb25zdCB2PWguZ2V0RGF0YUF0Q2VsbChhLGQpLFM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLmRhdGFT''@;'; put 'put ''b3VyY2VbYV0pLFY9T2JqZWN0LmtleXMoUylbZF0sUT10aGlzLmhlbHBlclNlcnZpY2UuZGVsZXRlS2V5c0FuZEhhc2goUyxbViwibm9MaW5rT3B0aW9uIl0sITEpLGRlPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KHBlPT5wZS5oYXNoPT09USk7aWYoZGU+LTEpe2xldCBw''@;'; put 'put ''ZT10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlW2RlXS52YWx1ZXMubWFwKFllPT5ZZVt0aGlzLmNlbGxWYWxpZGF0aW9uRmllbGRzLlJBV19WQUxVRV0pO2NvbnN0IENlPShoLmdldENlbGxNZXRhKGEsZCkuc291cmNlfHxbXSkubGVuZ3RoPDEsT2U9IiAiIT09djtoLmJhdGNoKCgpPT57Y29u''@;'; put 'put ''c3QgWWU9aC5nZXRDZWxsTWV0YShhLGQpLGV0PXRoaXMuZGNWYWxpZGF0b3I/LmdldFJ1bGUoWWUuZGF0YXx8IiIpO2xldCBkdDtldCYmKGR0PXRoaXMuZGNWYWxpZGF0b3I/LmdldERxRHJvcGRvd25Tb3VyY2UoZXQpKSxkdHx8KGR0PVtdKSwibnVtZXJpYyI9PT1ldD8udHlwZT8oZHQ9dGhp''@;'; put 'put ''cy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhkdCwibnVtYmVyIikscGU9dGhpcy5oZWxwZXJTZXJ2aWNlLmNvbnZlcnRBcnJheVZhbHVlcyhwZSwibnVtYmVyIikpOihkdD10aGlzLmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKGR0LCJzdHJpbmciKSxwZT10aGlz''@;'; put 'put ''LmhlbHBlclNlcnZpY2UuY29udmVydEFycmF5VmFsdWVzKHBlLCJzdHJpbmciKSk7Y29uc3QgaHQ9Wy4uLm5ldyBTZXQoWy4uLmR0LC4uLnBlXSldO2lmKGguc2V0Q2VsbE1ldGEoYSxkLCJzb3VyY2UiLGh0KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGQs''@;'; put 'put ''e3NvdXJjZTpodH0pLHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbZGVdLnZhbHVlcy5sZW5ndGg+MCl7Y29uc3QgTXQ9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZVtkZV0uc3RyaWN0O2guc2V0Q2VsbE1ldGEoYSxkLCJyZW5kZXJlciIsImF1dG9jb21wbGV0ZSIpLGguc2V0Q2VsbE1ldGEo''@;'; put 'put ''YSxkLCJlZGl0b3IiLCJhdXRvY29tcGxldGUuY3VzdG9tIiksaC5zZXRDZWxsTWV0YShhLGQsInN0cmljdCIsTXQpLGguc2V0Q2VsbE1ldGEoYSxkLCJmaWx0ZXIiLCExKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkVmFsaWRhdG9yPy51cGRhdGVSdWxlKGQse3JlbmRlcmVyOiJhdXRvY29tcGxl''@;'; put 'put ''dGUiLGVkaXRvcjoiYXV0b2NvbXBsZXRlLmN1c3RvbSIsc3RyaWN0Ok10LGZpbHRlcjohMX0pfXRoaXMucmVTZXRFeHRlbmRlZENlbGxWYWxpZGF0aW9uVmFsdWVzKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbZGVdLGEsQ2UmJk9lKSxoLnJlbmRlcigpfSl9aWYoZGU8MCl7Y29uc3QgcGU9''@;'; put 'put ''e1NBU0NvbnRyb2xUYWJsZTpbe2xpYmRzOnRoaXMubGliZHMsdmFyaWFibGVfbm06Vn1dLHNvdXJjZV9yb3c6W1NdfSxDZT10aGlzLmRjVmFsaWRhdG9yPy5nZXREcURldGFpbHMoVikuZmluZChPZT0+IlNPRlRTRUxFQ1RfSE9PSyI9PT1PZS5SVUxFX1RZUEV8fCJIQVJEU0VMRUNUX0hPT0si''@;'; put 'put ''PT09T2UuUlVMRV9UWVBFKTtDZSYmKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UucHVzaCh7cm93OmEsY29sOmQsc3RyaWN0OiJIQVJEU0VMRUNUX0hPT0siPT09Q2UuUlVMRV9UWVBFLHZhbHVlczpbXSxoYXNoOlEsY291bnQ6dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5sZW5ndGgrMX0p''@;'; put 'put ''LGguc2V0Q2VsbE1ldGEoYSxkLCJyZW5kZXJlciIseGR0KSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MucHVzaChkKSxoLnJlbmRlcigpLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJlZGl0b3JzL2dldGR5bmFtaWNjb2x2YWxzIixwZSx2b2lkIDAse3N1cHByZXNzU3VjY2Vzc0Fi''@;'; put 'put ''b3J0TW9kYWw6ITAsc3VwcHJlc3NFcnJvckFib3J0TW9kYWw6ITB9KS50aGVuKE9lPT57aWYoT2UuYWRhcHRlclJlc3BvbnNlLmR5bmFtaWNfdmFsdWVzLm1hcChldD0+ZXRbdGhpcy5jZWxsVmFsaWRhdGlvbkZpZWxkcy5SQVdfVkFMVUVdKS5sZW5ndGg+MCl7Y29uc3QgZXQ9dGhpcy5jZWxs''@;'; put 'put ''VmFsaWRhdGlvblNvdXJjZS5maW5kSW5kZXgoZHQ9PmR0Lmhhc2g9PT1RKTtldD4tMSYmKHRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2VbZXRdPXsuLi50aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlW2V0XSxyb3c6YSxjb2w6ZCx2YWx1ZXM6T2UuYWRhcHRlclJlc3BvbnNlLmR5bmFtaWNfdmFs''@;'; put 'put ''dWVzLGV4dGVuZGVkX3ZhbHVlczpPZS5hZGFwdGVyUmVzcG9uc2UuZHluYW1pY19leHRlbmRlZF92YWx1ZXN9KSxoLnNldENlbGxNZXRhKGEsZCwicmVuZGVyZXIiLEpYKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3Muc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5n''@;'; put 'put ''cy5pbmRleE9mKGQpLDEpLGguZGVzZWxlY3RDZWxsKCksaC5yZW5kZXIoKSxoLmJhdGNoKCgpPT57c2V0VGltZW91dCgoKT0+e3RoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcyghMCxhKSxoLnJlbmRlcigpLGgudmFsaWRhdGVSb3dzKFthXSl9LDEwMCl9KX1pZihoLnNldENlbGxNZXRh''@;'; put 'put ''KGEsZCwicmVuZGVyZXIiLEpYKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3Muc3BsaWNlKHRoaXMuY3VycmVudEVkaXRSZWNvcmRMb2FkaW5ncy5pbmRleE9mKGQpLDEpLGguZGVzZWxlY3RDZWxsKCksaC5yZW5kZXIoKSx0aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLmxlbmd0aD50''@;'; put 'put ''aGlzLnZhbGlkYXRpb25UYWJsZUxpbWl0KXtjb25zdCBldD10aGlzLmNlbGxWYWxpZGF0aW9uU291cmNlLnJlZHVjZSgoaHQsTXQpPT5odC5jb3VudDxNdC5jb3VudD9odDpNdCksZHQ9dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5pbmRleE9mKGV0KTt0aGlzLmNlbGxWYWxpZGF0aW9uU291''@;'; put 'put ''cmNlLnNwbGljZShkdCwxKX19KS5jYXRjaChPZT0+e2NvbnN0IFllPXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2UuZmluZEluZGV4KGV0PT5ldC5oYXNoPT09USk7dGhpcy5jZWxsVmFsaWRhdGlvblNvdXJjZS5zcGxpY2UoWWUsMSksaC5iYXRjaCgoKT0+e2guc2V0Q2VsbE1ldGEoYSxkLCJy''@;'; put 'put ''ZW5kZXJlciIsTWR0KSxoLnJlbmRlcigpfSksdGhpcy5jdXJyZW50RWRpdFJlY29yZExvYWRpbmdzLnNwbGljZSh0aGlzLmN1cnJlbnRFZGl0UmVjb3JkTG9hZGluZ3MuaW5kZXhPZihkKSwxKSx0aGlzLmN1cnJlbnRFZGl0UmVjb3JkRXJyb3JzLnB1c2goZCksc2V0VGltZW91dCgoKT0+e2gu''@;'; put 'put ''c2V0Q2VsbE1ldGEoYSxkLCJyZW5kZXJlciIsSlgpLGgucmVuZGVyKCksdGhpcy5jdXJyZW50RWRpdFJlY29yZEVycm9ycy5zcGxpY2UodGhpcy5jdXJyZW50RWRpdFJlY29yZEVycm9ycy5pbmRleE9mKGQpLDEpfSwzZTMpLHRoaXMucmVTZXRDZWxsVmFsaWRhdGlvblZhbHVlcygpLHRoaXMu''@;'; put 'put ''bG9nZ2VyU2VydmljZS5sb2coImdldGR5bmFtaWNjb2x2YWxzIGVycm9yOiIsT2UpfSkpfX1jaGVja0VtcHR5Um93V2hlbkZpbHRlcigpe3RoaXMuemVyb0ZpbHRlclJvd3M9ITEsdHlwZW9mIHRoaXMuZmlsdGVyX3BrPCJ1IiYmMT09PXRoaXMuaG90VGFibGUuZGF0YS5sZW5ndGgmJltudWxs''@;'; put 'put ''LCIiXS5pbmNsdWRlcyh0aGlzLmhvdFRhYmxlLmRhdGFbMF1bdGhpcy5oZWFkZXJQa3NbMF1dKSYmKHRoaXMuemVyb0ZpbHRlclJvd3M9ITApfW9uUmVjb3JkSW5wdXRGb2N1cyhhKXt0aGlzLmR5bmFtaWNDZWxsVmFsaWRhdGlvbih0aGlzLmN1cnJlbnRFZGl0UmVjb3JkSW5kZXgsYS5jb2xO''@;'; put 'put ''YW1lKX1leGVjdXRlRHluYW1pY0NlbGxWYWxpZGF0aW9uSWZBcHBsaWNhYmxlKGEsZCxoKXtjb25zdCBmPXRoaXMuaGVscGVyU2VydmljZS5kZWxldGVLZXlzQW5kSGFzaCh0aGlzLmRhdGFTb3VyY2VbaF0sW2EsIm5vTGlua09wdGlvbiJdKSx2PXRoaXMuY2VsbFZhbGlkYXRpb25Tb3VyY2Uu''@;'; put 'put ''ZmluZChTPT5TLmhhc2g9PT1mJiZkPT09Uy5jb2wpO2lmKHYmJnYuZXh0ZW5kZWRfdmFsdWVzJiZ2LmV4dGVuZGVkX3ZhbHVlcy5sZW5ndGg+MCl7Y29uc3QgUz10aGlzLmdldEV4dGVuZGVkVmFsdWVzQnlDZWxsVmFsdWUodixoKTt0aGlzLnNldEV4dGVuZGVkVmFsdWVzVG9DZWxscyh2LGgs''@;'; put 'put ''UywhMCl9fWRhdGFzZXRJbmZvTW9kYWxSb3dDbGlja2VkKGEpe3ZvaWQgMCE9PWEuTE9BRF9SRUYmJnRoaXMucm91dGVyLm5hdmlnYXRlKFtgL3N0YWdlLyR7YS5MT0FEX1JFRn1gXSl9dmlld2JveE1hbmFnZXIoKXt0aGlzLnZpZXdib3hlcz0hMH1nZXQgdG90YWxSb3dzQ2hhbmdlZCgpe3Jl''@;'; put 'put ''dHVybiB0aGlzLnJvd3NDaGFuZ2VkLnJvd3NVcGRhdGVkK3RoaXMucm93c0NoYW5nZWQucm93c0RlbGV0ZWQrdGhpcy5yb3dzQ2hhbmdlZC5yb3dzQWRkZWR9c2V0Q2VsbEZpbHRlcihhKXtjb25zdCBkPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKSxoPWQmJmRbMF07aWYoaCl7Y29u''@;'; put 'put ''c3QgZj1oWzBdLFM9aFsxXTtpZihmPT09aFsyXSYmUz09PWhbM10pe2NvbnN0IFE9dGhpcy5ob3RJbnN0YW5jZS5nZXRDZWxsTWV0YShmLFMpO1EmJlEuZmlsdGVyPT09IWEmJnRoaXMuaG90SW5zdGFuY2Uuc2V0Q2VsbE1ldGEoZixTLCJmaWx0ZXIiLGEpfX19bmdPbkluaXQoKXt2YXIgYT10''@;'; put 'put ''aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2EubGljZW5jZVNlcnZpY2UuaG90X2xpY2Vuc2Vfa2V5LnN1YnNjcmliZShoPT57YS5ob3RUYWJsZS5saWNlbnNlS2V5PWh9KSxhLl9xdWVyeT1hLnNhc1N0b3JlU2VydmljZS5xdWVyeS5zdWJzY3JpYmUoaD0+e2gubGliZHM9PT1hLmxpYmRzJiYo''@;'; put 'put ''YS53aGVyZVN0cmluZz1oLnN0cmluZyxhLmNsYXVzZXM9aC5vYmopfSk7bGV0IGQ9e307dHlwZW9mIGEucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbTwidSImJihhLmxpYmRzPWEucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSxhLmZpbHRlcl9waz1hLnJvdXRlLnNuYXBzaG90LnBh''@;'; put 'put ''cmFtcy5maWx0ZXJJZCwiZWRpdC1yZWNvcmQiPT09YS5yb3V0ZS5zbmFwc2hvdC51cmxbMF0ucGF0aCYmKGEucmVjb3JkQWN0aW9uPXR5cGVvZiBhLmZpbHRlcl9wazwidSI/IkVESVQiOiJBREQiKSxkLkxJQkRTPWEubGliZHMsdHlwZW9mIGEuZmlsdGVyX3BrPCJ1IiYmKGQuRklMVEVSX1JL''@;'; put 'put ''PXBhcnNlSW50KGEuZmlsdGVyX3BrKSksZC5PVVRERVNUPSJXRUIiLGEubGliZHMmJihIbi5lZGl0b3IubGlicmFyeT1hLmxpYmRzLnNwbGl0KCIuIilbMF0sSG4uZWRpdG9yLnRhYmxlPWEubGliZHMuc3BsaXQoIi4iKVsxXSkpLGEubGliZHMmJihhLmdldGRhdGFFcnJvcj0hMSx5aWVsZCBh''@;'; put 'put ''LnNhc1N0b3JlU2VydmljZS5jYWxsU2VydmljZShkLCJTQVNDb250cm9sVGFibGUiLCJlZGl0b3JzL2dldGRhdGEiLGEubGliZHMpLnRoZW4oaD0+e2EuaW5pdFNldHVwKGgpfSkuY2F0Y2goaD0+e2EuZ2V0ZGF0YUVycm9yPSEwLGEudGFibGVUcnVlPSEwfSkpfSkoKX1uZ0FmdGVyVmlld0lu''@;'; put 'put ''aXQoKXt9aW5pdFNldHVwKGEpe2lmKHRoaXMuaG90SW5zdGFuY2U9dGhpcy5ob3RSZWdpc3RlcmVyLmdldEluc3RhbmNlKCJob3RJbnN0YW5jZSIpLHRoaXMuZ2V0ZGF0YUVycm9yfHwhYXx8IWEuZGF0YSlyZXR1cm47dGhpcy5jb2xzPWEuZGF0YS5jb2xzLHRoaXMuZHNtZXRhPWEuZGF0YS5k''@;'; put 'put ''c21ldGEsdGhpcy52ZXJzaW9ucz1hLmRhdGEudmVyc2lvbnN8fFtdO2NvbnN0IGQ9dGhpcy5kc21ldGEuZmluZChRPT4iTk9URVMiPT09US5OQU1FKSxoPXRoaXMuZHNtZXRhLmZpbmQoUT0+IkREX0xPTkdERVNDIj09PVEuTkFNRSksZj10aGlzLmRzbWV0YS5maW5kKFE9PiJERF9TSE9SVERF''@;'; put 'put ''U0MiPT09US5OQU1FKTt0aGlzLmRzTm90ZT1kJiZkLlZBTFVFP2QuVkFMVUU6aCYmaC5WQUxVRT9oLlZBTFVFOmYmJmYuVkFMVUU/Zi5WQUxVRToiIjtjb25zdCB2PXRoaXMuaG90SW5zdGFuY2UsUz1hLmRhdGEuYXBwcm92ZXJzO3RoaXMuY29scyYmKHRoaXMuaGVhZGVyQXJyYXk9KGw9Pntj''@;'; put 'put ''b25zdCBjPVtdO2ZvcihsZXQgYSBvZiBsKSJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iIT09YS5OQU1FJiZjLnB1c2goYS5OQU1FKTtyZXR1cm4gY30pKHRoaXMuY29scykpLFMuZm9yRWFjaChRPT57dGhpcy5hcHByb3ZlcnMucHVzaChRLlBFUlNPTk5BTUUpfSksdGhpcy50YWJs''@;'; put 'put ''ZVRydWU9ITAsdGhpcy5saWJkcz1hLmxpYmRzLHRoaXMuaG90VGFibGUuZGF0YT1hLmRhdGEuc2FzZGF0YSx0aGlzLmhlYWRlckNvbHVtbnM9YS5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksdGhpcy5oZWFkZXJQa3M9YS5kYXRhLnNhc3BhcmFtc1swXS5QSy5zcGxp''@;'; put 'put ''dCgiICIpLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWc9ISFhLmRhdGEuc2FzcGFyYW1zWzBdLkNMU19GTEFHLHRoaXMuY29sdW1uTGV2ZWxTZWN1cml0eUZsYWcmJnRoaXMuc2V0UmVzdHJpY3Rpb25zKHtyZXN0cmljdEFkZFJvdzohMCxyZW1vdmVFZGl0UmVjb3JkQnV0dG9uOiEwLHJl''@;'; put 'put ''bW92ZUFkZFJlY29yZEJ1dHRvbjohMH0pLHRoaXMuY2hlY2tFbXB0eVJvd1doZW5GaWx0ZXIoKSwtMSE9PXRoaXMuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iKSYmKHRoaXMuaGVhZGVyQ29sdW1uc1t0aGlzLmhlYWRlckNvbHVtbnMuaW5k''@;'; put 'put ''ZXhPZigiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIildPSJEZWxldGU/IiksdGhpcy5oZWFkZXJBcnJheT10aGlzLmhlYWRlckNvbHVtbnMuc2xpY2UoMSksIiIhPT1hLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUyYmKHRoaXMuZGF0ZUhlYWRlcnM9YS5kYXRhLnNhc3BhcmFtc1sw''@;'; put 'put ''XS5EVFZBUlMuc3BsaXQoIiAiKSksIiIhPT1hLmRhdGEuc2FzcGFyYW1zWzBdLlRNVkFSUyYmKHRoaXMudGltZUhlYWRlcnM9YS5kYXRhLnNhc3BhcmFtc1swXS5UTVZBUlMuc3BsaXQoIiAiKSksIiIhPT1hLmRhdGEuc2FzcGFyYW1zWzBdLkRUVE1WQVJTJiYodGhpcy5kYXRlVGltZUhlYWRl''@;'; put 'put ''cnM9YS5kYXRhLnNhc3BhcmFtc1swXS5EVFRNVkFSUy5zcGxpdCgiICIpKSxhLmRhdGEueGxfcnVsZXMubGVuZ3RoPjAmJih0aGlzLnhsUnVsZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShhLmRhdGEueGxfcnVsZXMpKSx0aGlzLmRjVmFsaWRhdG9yPW5ldyBYcGUoYS5kYXRhLnNh''@;'; put 'put ''c3BhcmFtc1swXSxhLmRhdGEuJHNhc2RhdGEsdGhpcy5jb2xzLGEuZGF0YS5kcXJ1bGVzLGEuZGF0YS5kcWRhdGEpLHRoaXMuY2VsbFZhbGlkYXRpb249dGhpcy5kY1ZhbGlkYXRvci5nZXRSdWxlcygpLHRoaXMuZGF0YVNvdXJjZT1hLmRhdGEuc2FzZGF0YSx0aGlzLiRkYXRhRm9ybWF0cz1h''@;'; put 'put ''LmRhdGEuJHNhc2RhdGE7Zm9yKGxldCBRPTA7UTx0aGlzLmhlYWRlckNvbHVtbnMubGVuZ3RoO1ErKyl0aGlzLmhvdERhdGFTY2hlbWFbdGhpcy5jZWxsVmFsaWRhdGlvbltRXS5kYXRhXT1DZHQodGhpcy5jZWxsVmFsaWRhdGlvbltRXS50eXBlLHRoaXMuY2VsbFZhbGlkYXRpb25bUV0pO3Ro''@;'; put 'put ''aXMuY2hlY2tSb3dMaW1pdCgpLHYudXBkYXRlU2V0dGluZ3Moe2RhdGE6dGhpcy5kYXRhU291cmNlLGNvbEhlYWRlcnM6dGhpcy5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5jZWxsVmFsaWRhdGlvbixoZWlnaHQ6dGhpcy5ob3RUYWJsZS5oZWlnaHQsZm9ybXVsYXM6dGhpcy5ob3RUYWJs''@;'; put 'put ''ZS5mb3JtdWxhcyxzdHJldGNoSDoiYWxsIixyZWFkT25seTp0aGlzLmhvdFRhYmxlLnJlYWRPbmx5LGhpZGRlbkNvbHVtbnM6e2luZGljYXRvcnM6ITAsY29sdW1uczp0aGlzLmRjVmFsaWRhdG9yLmdldEhpZGRlbkNvbHVtbnMoKX0sbW9kaWZ5Q29sV2lkdGg6ZnVuY3Rpb24oUSxkZSl7cmV0''@;'; put 'put ''dXJuIDA9PT1kZT82MDpRPjUwMD81MDA6UX0sY29weVBhc3RlOnRoaXMuaG90VGFibGUuY29weVBhc3RlLG1hbnVhbENvbHVtbkZyZWV6ZTohMSxtdWx0aUNvbHVtblNvcnRpbmc6ITAsbWFudWFsQ29sdW1uUmVzaXplOiEwLGZpbHRlcnM6ITEsbWFudWFsUm93UmVzaXplOiEwLHZpZXdwb3J0''@;'; put 'put ''Um93UmVuZGVyaW5nT2Zmc2V0OjUwLHJvd0hlYWRlcnM6UT0+IiAiLHJvd0hlYWRlcldpZHRoOjE1LHJvd0hlaWdodHM6MjQsbWF4Um93czp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkfHwxLzAsaW52YWxpZENlbGxDbGFzc05hbWU6Imh0SW52YWxpZCIsZHJv''@;'; put 'put ''cGRvd25NZW51OntpdGVtczp7bWFrZV9yZWFkX29ubHk6e25hbWU6Im1ha2VfcmVhZF9vbmx5In0sYWxpZ25tZW50OntuYW1lOiJhbGlnbm1lbnQifSxzcDE6e25hbWU6Ii0tLS0tLS0tLSJ9LGluZm86e25hbWU6InRlc3QgaW5mbyIscmVuZGVyZXI6KFEsZGUscGUsQ2UsT2UsWWUpPT57Y29u''@;'; put 'put ''c3QgZXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2xldCBkdCxodD0iTm8gaW5mbyBmb3VuZCI7aWYodGhpcy5ob3RJbnN0YW5jZSl7Y29uc3QgTXQ9dGhpcy5ob3RJbnN0YW5jZS5nZXRTZWxlY3RlZCgpfHxbXSxRdD1NdD9NdFswXVsxXTotMSxsbj10aGlzLmhvdEluc3RhbmNl''@;'; put 'put ''Py5jb2xUb1Byb3AoUXQpO2R0PXRoaXMuJGRhdGFGb3JtYXRzPy52YXJzW2xuXSxkdCYmKGh0PWBMQUJFTDogJHtkdD8ubGFiZWx9PGJyPlRZUEU6ICR7ZHQ/LnR5cGV9PGJyPkxFTkdUSDogJHtkdD8ubGVuZ3RofTxicj5GT1JNQVQ6ICR7ZHQ/LmZvcm1hdH1gKX1yZXR1cm4gZXQuaW5uZXJI''@;'; put 'put ''VE1MPWh0LGV0fX19fSxkYXRhU2NoZW1hOnRoaXMuaG90RGF0YVNjaGVtYSxjb250ZXh0TWVudTp0aGlzLmhvdFRhYmxlLnNldHRpbmdzLmNvbnRleHRNZW51LGN1cnJlbnRIZWFkZXJDbGFzc05hbWU6ImN1c3RvbUgiLGFmdGVyR2V0Q29sSGVhZGVyOihRLGRlKT0+e2NvbnN0IHBlPXRoaXMu''@;'; put 'put ''Y29sdW1uSGVhZGVyW1FdLENlPXBlJiZ0aGlzLmlzQ29sUGsocGUpLE9lPXBlJiZ0aGlzLmlzUmVhZG9ubHlDb2wocGUpO0NlJiZkZS5jbGFzc0xpc3QuYWRkKCJwcmltYXJ5S2V5SGVhZGVyU3R5bGUiKSxPZSYmIUNlJiZkZS5jbGFzc0xpc3QuYWRkKCJyZWFkb25seUNlbGwiKSwwPT09USYm''@;'; put 'put ''ZGUuY2xhc3NMaXN0LmFkZCgiZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSIpLGRlLmNsYXNzTGlzdC5hZGQoSG4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX0sYWZ0ZXJHZXRDZWxsTWV0YTooUSxkZSxwZSk9PntkZSYmdGhpcy5pc1JlYWRvbmx5Q29sKGRlKSYmKHBlLmNsYXNz''@;'; put 'put ''TmFtZT0icmVhZG9ubHlDZWxsIil9fSwhMSksdGhpcy5ob3RUYWJsZS5oaWRkZW49ITEsdGhpcy50b2dnbGVIb3RQbHVnaW4oImNvbnRleHRNZW51IiwhMSksdGhpcy5xdWVyeVRleHQ9YS5kYXRhLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVCx0aGlzLmNvbHVtbkhlYWRlcj1hLmRhdGEuc2Fz''@;'; put 'put ''cGFyYW1zWzBdLkNPTEhFQURFUlMuc3BsaXQoIiwiKSx0aGlzLmNvbHVtbkhlYWRlclswXT0iRGVsZXRlPyIsdGhpcy5yZWFkT25seUZpZWxkcz1hLmRhdGEuc2FzcGFyYW1zWzBdLlBLQ05UO2xldCBWPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3RJbnN0YW5jZSIpO1YmJlYuYWRkRXZl''@;'; put 'put ''bnRMaXN0ZW5lcigibW91c2Vkb3duIixRPT57dGhpcy51cGxvYWRQcmV2aWV3fHx0aGlzLmhvdENsaWNrZWQoKSxzZXRUaW1lb3V0KCgpPT57bGV0IGRlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5kZWJ1Zy1zd2l0Y2gtaXRlbSIpfHx2b2lkIDA7ZGUmJmRlLmNsaWNrKCl9LDEwMCl9KSx2''@;'; put 'put ''LmFkZEhvb2soImFmdGVyU2VsZWN0aW9uIiwoUSxkZSxwZSxDZSxPZSxZZSk9PntRPT09cGUmJmRlPT09Q2UmJiExPT09dGhpcy5ob3RUYWJsZS5yZWFkT25seSYmdGhpcy5keW5hbWljQ2VsbFZhbGlkYXRpb24oUSxkZSl9KSx2LmFkZEhvb2soImFmdGVyQmVnaW5FZGl0aW5nIiwoKT0+e3Ro''@;'; put 'put ''aXMuc2V0Q2VsbEZpbHRlcighMSl9KSx2LmFkZEhvb2soImJlZm9yZUtleURvd24iLCgpPT57dGhpcy5zZXRDZWxsRmlsdGVyKCEwKX0pLHYuYWRkSG9vaygiYWZ0ZXJDaGFuZ2UiLChRLGRlKT0+e2lmKCJlZGl0Ij09PWRlKXtjb25zdCBwZT10aGlzLmhvdEluc3RhbmNlLENlPVFbMF1bMF0s''@;'; put 'put ''T2U9UVswXVsxXSxZZT1wZS5wcm9wVG9Db2woT2UpLGV0PXBlLmdldENlbGxNZXRhKENlLFllKTtldCYmITE9PT1ldC5maWx0ZXImJnBlLnNldENlbGxNZXRhKENlLFllLCJmaWx0ZXIiLCEwKSx0aGlzLmV4ZWN1dGVEeW5hbWljQ2VsbFZhbGlkYXRpb25JZkFwcGxpY2FibGUoT2UsWWUsQ2Up''@;'; put 'put ''fX0pLHYuYWRkSG9vaygiYWZ0ZXJSZW5kZXIiLFE9Pnt0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaEV2ZW50KCJyZXNpemUiKX0pLHYuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLChRLGRlKT0+e2lmKFE+dGhpcy5kYXRhU291cmNlLmxlbmd0aCl7bGV0IHBlPWRvY3VtZW50LnF1ZXJ5U2Vs''@;'; put 'put ''ZWN0b3IoIi53dEhvbGRlciIpO3NldFRpbWVvdXQoKCk9PntwZSYmKHBlLnNjcm9sbFRvcD1wZS5zY3JvbGxIZWlnaHQpfSl9fSksdi5hZGRIb29rKCJiZWZvcmVQYXN0ZSIsKFEsZGUpPT57Y29uc3QgcGU9ZGVbMF0uc3RhcnRDb2w7UVswXT1RWzBdLm1hcCgoQ2UsT2UpPT57Y29uc3QgWWU9''@;'; put 'put ''dGhpcy5jb2x1bW5IZWFkZXJbcGUrT2VdLGV0PSJudW0iPT09dGhpcy4kZGF0YUZvcm1hdHM/LnZhcnNbWWVdPy50eXBlLGR0PSgwLGVnLmlzU3BlY2lhbE1pc3NpbmcpKENlKTtyZXR1cm4gZXQmJiFpc05hTihDZSkmJiFkdCYmKENlKj0xKSxDZX0pfSksdi5hZGRIb29rKCJhZnRlclJlbW92''@;'; put 'put ''ZVJvdyIsKCk9Pnt0aGlzLmNoZWNrUm93TGltaXQoKX0pLHYuYWRkSG9vaygiYWZ0ZXJDcmVhdGVSb3ciLCgpPT57dGhpcy5jaGVja1Jvd0xpbWl0KCl9KSx0aGlzLnVwbG9hZFVybD0ic2VydmljZXMvZWRpdG9ycy9sb2FkZmlsZSIsbnVsbCE9PXRoaXMucmVjb3JkQWN0aW9uJiYoIkFERCI9''@;'; put 'put ''PT10aGlzLnJlY29yZEFjdGlvbj8odGhpcy5hZGRSZWNvcmQoKSx0aGlzLmVkaXRSZWNvcmQobnVsbCx0aGlzLmRhdGFTb3VyY2UubGVuZ3RoLTEsITApKToxPT09dGhpcy5kYXRhU291cmNlLmxlbmd0aCYmdGhpcy5lZGl0UmVjb3JkKG51bGwsMCkpLGEuZGF0YS5xdWVyeS5sZW5ndGg+MCYm''@;'; put 'put ''KCJob21lIj09PUhuLnJvb3RQYXJhbXx8ImVkaXRvciI9PT1Ibi5yb290UGFyYW0pJiYwPT09SG4uZWRpdG9yLmZpbHRlci5jbGF1c2VzLmxlbmd0aCYmKEhuLmVkaXRvci5maWx0ZXIucXVlcnk9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShhLmRhdGEucXVlcnkpLEhuLmVkaXRvci5m''@;'; put 'put ''aWx0ZXIubGliZHM9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoImVkaXRvciIsdGhpcy5jb2xzKSksdi5yZW5kZXIoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0''@;'; put 'put ''dXJuIG5ldyhkfHxsKShKZShBMCksSmUoRGwpLEplKE8xKSxKZShaZCksSmUoZXUpLEplKEpzKSxKZShPYyksSmUodmEpLEplKGNhKSxKZShXbSksSmUoczRlKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtZWRpdG9yIl1dLHZpZXdRdWVyeTpm''@;'; put 'put ''dW5jdGlvbihkLGgpe2lmKDEmZCYmKEhvKFlmdCw3KSxIbyhXZnQsNSksSG8oR2Z0LDUpLEhvKCRmdCw1KSxIbyhxZnQsNSkpLDImZCl7bGV0IGY7bGkoZj1jaSgpKSYmKGguaHQ9Zi5maXJzdCksbGkoZj1jaSgpKSYmKGgudXBsb2FkU3RhdGVyQ29tcExpc3Q9ZiksbGkoZj1jaSgpKSYmKGgu''@;'; put 'put ''cXVlcnlGaWx0ZXJDb21wTGlzdD1mKSxsaShmPWNpKCkpJiYoaC5ob3RJbnN0YW5jZUNvbXBMaXN0PWYpLGxpKGY9Y2koKSkmJihoLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0PWYpfX0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE3Nyx2YXJzOjc0LGNvbnN0czpb''@;'; put 'put ''WyJodCIsIiJdLFsiaG90SW5zdGFuY2UiLCIiXSxbImZpbGVQYXNzd29yZElucHV0IiwiIl0sWyJmaWxlVXBsb2FkSW5wdXQiLCIiXSxbInVwbG9hZFN0YXRlciIsIiJdLFsicXVlcnlGaWx0ZXIiLCIiXSxbMSwiY29udGVudC1hcmVhIiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWyJh''@;'; put 'put ''cHBGaWxlRHJvcCIsIiIsMSwicmVsYXRpdmUiLDMsImZpbGVPdmVyIiwiZmlsZURyb3AiLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJ1cGxvYWRlciIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCJjbHJNb2RhbENsb3NhYmxlIiwiY2xyTW9kYWxPcGVuIl0sWzEsIm1v''@;'; put 'put ''ZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiZHJvcC1hcmVhIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiY2xyLXJvdyIsImNhcmQtYmxvY2siLCJtdC0xNSIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIl0sWzEsImNsci1jb2wtbWQtYXV0byJdLFsxLCJlbmNv''@;'; put 'put ''ZGluZy1ibG9jayJdLFsiY2xySW5saW5lIiwiIiwxLCJtdC0wLWkiXSxbInR5cGUiLCJyYWRpbyIsImNsclJhZGlvIiwiIiwidmFsdWUiLCJVVEYtOCIsIm5hbWUiLCJlbmNvZGluZyIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJkaXNhYmxlZCJdLFsidHlwZSIsInJhZGlvIiwiY2xy''@;'; put 'put ''UmFkaW8iLCIiLCJ2YWx1ZSIsIldMQVRJTjEiLCJuYW1lIiwiZW5jb2RpbmciLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0zIGZpbHRlckJ0biIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTMgZWRpdEJ0biIsNCwi''@;'; put 'put ''bmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGJ0bi1wcmltYXJ5IG1yLTAiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBtci0wIiwzLCJjbGljayIsNCwibmdJZiJdLFsiY2xhc3MiLCJl''@;'; put 'put ''eGNlbC1wYXJzaW5nIGNsci1jb2wtbWQtMTIiLDQsIm5nSWYiXSxbMSwibW9kYWwtZm9vdGVyIl0sWzMsImN1cnJlbnRSZWNvcmQiLCJyZWNvcmRBY3Rpb24iLCJsaWJkcyIsInF1ZXJ5RmlsdGVyIiwiZmlsdGVyIiwic3VibWl0TG9hZGluZyIsImhlYWRlclBrcyIsImNlbGxWYWxpZGF0aW9u''@;'; put 'put ''IiwiY3VycmVudFJlY29yZEluZGV4IiwiY3VycmVudFJlY29yZExvYWRpbmdzIiwiY3VycmVudFJlY29yZEVycm9ycyIsImN1cnJlbnRSZWNvcmRWYWxpZGF0b3IiLCJvblJlY29yZENoYW5nZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNv''@;'; put 'put ''cmQiLCJvblByZXZpb3VzUmVjb3JkIiw0LCJuZ0lmIl0sWzEsImNsci1mbGV4LTEiXSxbImNsYXNzIiwicHJvZ3Jlc1N0YXRpYyBwcm9ncmVzcyBsb29wIiw0LCJuZ0lmIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNhcmQiLCJib3JkZXItMCIsImJveC1zaGFkb3ctbm9uZS1pIiwicG9zaXRp''@;'; put 'put ''b24tcmVsYXRpdmUiLCJoLTEwMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiLDMsImZpbGVEcmFnZ2VkT3ZlciJdLFsxLCJjYXJkLWhlYWRlciIsImNsci1yb3ciLCJidXR0b25CYXIiLCJoZWFkZXJCYXIiLCJjbHItZmxleC1tZC1yb3ciLCJj''@;'; put 'put ''bHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIl0sWyJjbGFzcyIsImNsci1jb2wtMTIgY2xyLWNvbC1tZC0zIGNsci1jb2wtbGctNCBiYWNrQnRuIiw0LCJuZ0lmIl0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLW1kLTUiLCJjbHItY29sLWxn''@;'; put 'put ''LTQiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJlZGl0b3ItdGl0bGUgdGV4dC1jZW50ZXIgbXQtMC1pIiw0LCJuZ1ZhciJdLFsiY2xhc3MiLCJjbHItY29sLTEyIGNsci1jb2wtbWQtNCBjbHItY29sLWxnLTQgYnRuQ3RybCIsNCwibmdJ''@;'; put 'put ''ZiJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTEyIGluZm9CYXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1ibG9jayIsInAtMCIsImNsci1mbGV4LTEiLCJiYWNrZ3JvdW5kLXRyYW5zcGFyZW50IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsImNhcmQtdGV4dCIsNCwibmdJZiJdLFsxLCJjYXJkLXRleHQi''@;'; put 'put ''LCJob3RFZGl0b3IiLCJoLTEwMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQiXSxbMSwiaG90LXdyYXBwZXIiLCJjbHItZmxleC0xIl0sWyJob3RJZCIsImhvdEluc3RhbmNlIiwiaWQiLCJob3RUYWJsZSIsImNsYXNzTmFtZSIsImh0RGFyayIs''@;'; put 'put ''MSwiZWRpdC1ob3QiLDMsImxpY2Vuc2VLZXkiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJtdC0yLWkgdy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwibW9kYWwiLDQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIl0sWzEsIm0tMCJdLFsi''@;'; put 'put ''dHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbMSwiZHVwbGljYXRlLWtleXMtbW9kYWwiLDMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFs''@;'; put 'put ''T3BlbiJdLFsiY2xhc3MiLCJkLWJsb2NrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vZGFsIHotaW5kZXgtaGlnaGVzdCIsNCwibmdJZiJdLFsxLCJmaWx0ZXItbW9kYWwiLDMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3Bl''@;'; put 'put ''biIsImNsck1vZGFsU2l6ZSIsImNsck1vZGFsQ2xvc2FibGUiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayIsMywiY2xpY2siXSxbInR5cGUiLCJi''@;'; put 'put ''dXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGlu''@;'; put 'put ''ZSIsMywiY2xpY2siXSxbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siXSxbMSwibW9kYWwt''@;'; put 'put ''Ym9keSIsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWyJkYXRhLWxwaWdub3JlIiwidHJ1ZSIsImF1dG9jb21wbGV0ZSIsIm9mZiIsImlkIiwiZmlsZVBhc3N3b3JkSW5wdXQiLCJ0eXBlIiwidGV4dCIsMSwiY2xyLWlucHV0IiwiZGlzYWJsZS1wYXNzd29yZC1tYW5h''@;'; put 'put ''Z2VyIl0sWyJjbGFzcyIsIm0tMCBjb2xvci1yZWQiLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzLW91dGxpbmUiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbMywib3BlbkNoYW5nZSIsInJvd0NsaWNrZWQiLCJvcGVuIiwiZHNtZXRhIiwi''@;'; put 'put ''dmVyc2lvbnMiXSxbMywidmlld2JveE1vZGFsQ2hhbmdlIiwidmlld2JveE1vZGFsIl0sWzEsImNsci1jb2wtbWQtMyIsImZpbHRlckJ0biJdLFsxLCJmaWx0ZXJCdG4iLCJ3LTEwMCJdLFsiZm9yIiwiZmlsZS11cGxvYWQiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwicHJvZmls''@;'; put 'put ''ZS1idXR0b25zIiwidy0xMDAiXSxbImhpZGRlbiIsIiIsImlkIiwiZmlsZS11cGxvYWQiLCJ0eXBlIiwiZmlsZSIsImFwcEZpbGVTZWxlY3QiLCIiLDMsImNoYW5nZSIsInVwbG9hZGVyIl0sWzEsImNsci1jb2wtbWQtMyIsImVkaXRCdG4iXSxbMSwiYnRuVmlldyIsImJ0biIsImJ0bi1zbSIs''@;'; put 'put ''ImJ0bi1zdWNjZXNzIiwicHJvZmlsZS1idXR0b25zIiwidy0xMDAiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwibXItMCIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXByaW1h''@;'; put 'put ''cnkiLCJtci0wIiwzLCJjbGljayJdLFsxLCJleGNlbC1wYXJzaW5nIiwiY2xyLWNvbC1tZC0xMiJdLFszLCJvblJlY29yZENoYW5nZSIsIm9uUmVjb3JkSW5wdXRGb2N1c2VkIiwib25SZWNvcmRFZGl0Q2xvc2UiLCJvbk5leHRSZWNvcmQiLCJvblByZXZpb3VzUmVjb3JkIiwiY3VycmVudFJl''@;'; put 'put ''Y29yZCIsInJlY29yZEFjdGlvbiIsImxpYmRzIiwicXVlcnlGaWx0ZXIiLCJmaWx0ZXIiLCJzdWJtaXRMb2FkaW5nIiwiaGVhZGVyUGtzIiwiY2VsbFZhbGlkYXRpb24iLCJjdXJyZW50UmVjb3JkSW5kZXgiLCJjdXJyZW50UmVjb3JkTG9hZGluZ3MiLCJjdXJyZW50UmVjb3JkRXJyb3JzIiwi''@;'; put 'put ''Y3VycmVudFJlY29yZFZhbGlkYXRvciJdLFsxLCJwcm9ncmVzU3RhdGljIiwicHJvZ3Jlc3MiLCJsb29wIl0sWzEsImNsci1jb2wtMTIiLCJjbHItY29sLW1kLTMiLCJjbHItY29sLWxnLTQiLCJiYWNrQnRuIl0sWzEsImJ0biIsImljb24tY29sbGFwc2UiLCJidG4tc20iLCJidG4taWNvbiIs''@;'; put 'put ''ImJ0bi1kaW1tZWQiLDMsInJvdXRlckxpbmsiXSxbInNoYXBlIiwiY2FyZXQiLCJkaXIiLCJsZWZ0Iiwic2l6ZSIsIjIwIl0sWzEsInRleHQiXSxbMSwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0bi1zbSIsImJ0bi1pY29uIiwiYnRuLWRpbW1lZCIsInZpZXdib3gtb3BlbiIsMywiY2xpY2si''@;'; put 'put ''XSxbInNoYXBlIiwidmlldy1jYXJkcyIsInNpemUiLCIyMCJdLFsxLCJlZGl0b3ItdGl0bGUiLCJ0ZXh0LWNlbnRlciIsIm10LTAtaSJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLCJzaGFwZSIsImluZm8tY2lyY2xlIiwic2l6ZSIsIjI0IiwxLCJpcy1oaWdobGlnaHQiLCJjdXJzb3ItcG9p''@;'; put 'put ''bnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwiYm9sdCIsImNsYXNzIiwiY29sb3IteWVsbG93Iiw0LCJuZ0lmIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiJdLFsxLCJtci0xMCIsInZpZXctdGFibGUiLDMsInJvdXRlckxpbmsiXSxbInNoYXBlIiwiYm9sdCIsMSwiY29sb3IteWVsbG93Il0s''@;'; put 'put ''WyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0IiwiY2xyU2l6ZSIsImxnIiw0LCJjbHJJZk9wZW4iXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiLCJjbHJTaXplIiwibGciXSxbMSwiY2xyLWNvbC0xMiIsImNsci1jb2wtbWQtNCIsImNsci1jb2wtbGctNCIsImJ0bkN0cmwiXSxbInR5''@;'; put 'put ''cGUiLCJidXR0b24iLDEsImJ0blZpZXciLCJidG4iLCJpY29uLWNvbGxhcHNlIiwiYnRuLXNtIiwiYnRuLWljb24iLCJidG4tYmxvY2siLCJidG4tZGltbWVkIiwzLCJjbGljayJdLFsic2hhcGUiLCJmaWx0ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImljb24tY29sbGFwc2UiLCJi''@;'; put 'put ''dG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi1ibG9jayIsMywiY2xpY2siXSxbInNoYXBlIiwibm90ZSJdLFsidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwiYnRuIGljb24tY29sbGFwc2UgYnRuLXNtIGJ0bi1zdWNjZXNzIGJ0bi1ibG9jayBtci0wIiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlw''@;'; put 'put ''ZSIsImJ1dHRvbiIsMSwiYnRuIiwiaWNvbi1jb2xsYXBzZSIsImJ0bi1zbSIsImJ0bi1zdWNjZXNzIiwiYnRuLWJsb2NrIiwibXItMCIsMywiY2xpY2siXSxbInNoYXBlIiwidXBsb2FkIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5l''@;'; put 'put ''LWRhbmdlciIsMywiY2xpY2siXSxbInNoYXBlIiwidGltZXMiXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsic2hhcGUiLCJwbHVzIiwic2l6ZSIsIjE2Il0sWyJz''@;'; put 'put ''aGFwZSIsImNoZWNrIiwic2l6ZSIsIjIwIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4taWNvbiIsImJ0bi1vdXRsaW5lLWRhbmdlciIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLCJjbGFzcyIsImJ0biBidG4tc20gYnRu''@;'; put 'put ''LXByaW1hcnkgYnRuLXVwbG9hZC1wcmV2aWV3IiwzLCJjbGljayIsNCwibmdJZiJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJwcmV2aWV3LXN1Ym1pdCIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJi''@;'; put 'put ''dG4tc20iLCJidG4tcHJpbWFyeSIsImJ0bi11cGxvYWQtcHJldmlldyIsMywiY2xpY2siXSxbMSwiY2xyLWNvbC1tZC0xMiIsImluZm9CYXIiXSxbMSwiY2FyZC10ZXh0Il0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWdu''@;'; put 'put ''LWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWzEsIm10LTEwIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iXSxbInNoYXBlIiwiZXJyb3Itc3RhbmRhcmQiLDEsImVycm9yLWljb24iXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwi''@;'; put 'put ''YnRuLXN1Y2Nlc3MiLCJtdC01LWkiLDMsImNsaWNrIl0sWyJjbHJQb3NpdGlvbiIsInRvcC1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsInRvcC1yaWdodCIsImNsclNpemUiLCJsZyJdLFsxLCJtdC0yLWkiLCJ3LTEwMCIsInRleHQtY2VudGVy''@;'; put 'put ''Il0sWzEsIm1vZGFsIl0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciLCJtb2RhbC1sZyJdLFsxLCJtb2RhbC1jb250ZW50Il0sWzEsIm1vZGFsLWhlYWRlciJdLFsiYXJpYS1sYWJlbCIsIkNsb3NlIiwidHlwZSIsImJ1dHRvbiIsMSwiY2xv''@;'; put 'put ''c2UiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsInNoYXBlIiwiY2xvc2UiXSxbImNsYXNzIiwiZC1ibG9jayB3LTEwMCB0ZXh0LWNlbnRlciBjb2xvci1yZWQiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLW9mZnNldC1tZC0yIGNsci1jb2wtbWQtOCIsNCwibmdJZiJdLFsxLCJtb2RhbC1mb290''@;'; put 'put ''ZXIiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyLWkiXSxbImlkIiwic3VibWl0QnRuIiwidHlwZSIsInN1Ym1pdCIsInRhYmluZGV4IiwiMCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsIm0tMCIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsiaWQiLCJjYW5jZWxTdWJt''@;'; put 'put ''aXRCdG4iLCJ0eXBlIiwiYnV0dG9uIiwidGFiaW5kZXgiLCIwIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbMSwiZC1ibG9jayIsInctMTAwIiwidGV4dC1jZW50ZXIiLCJjb2xvci1yZWQiXSxbMSwiY2xyLW9mZnNldC1tZC0yIiwiY2xyLWNvbC1tZC04Il0s''@;'; put 'put ''WzEsInRleHQtYXJlYS1mdWxsLXdpZHRoIl0sWyJmb3IiLCJmb3JtRmllbGRzXzgiLDEsIm1iLTUiLCJkLWJsb2NrIl0sWyJjbHJUZXh0YXJlYSIsIiIsInRhYmluZGV4IiwiMCIsInR5cGUiLCJ0ZXh0IiwiaWQiLCJmb3JtRmllbGRzXzgiLDEsInN1Ym1pdC1yZWFzb24iLDMsIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiLCJ2YWx1ZSJdLFsxLCJkLWJsb2NrIl0sWzEsIm1vZGFsIiwiei1pbmRleC1oaWdoZXN0Il0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbMSwibS0wIiwiY29sb3ItcmVkIl1dLHRlbXBs''@;'; put 'put ''YXRlOmZ1bmN0aW9uKGQsaCl7aWYoMSZkKXtjb25zdCBmPVNuKCk7Z2UoMCwiZGl2Iiw2KSgxLCJjbHItbW9kYWwiLDcpLEl0KCJmaWxlT3ZlciIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGguZmlsZU92ZXJCYXNlKFMpKX0pKCJmaWxlRHJvcCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90''@;'; put 'put ''KGYpLGJ0KGguYXR0YWNoRmlsZShTLCEwKSl9KSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5zaG93VXBsb2FkTW9kYWwsUyl8fChoLnNob3dVcGxvYWRNb2RhbD1TKSxidChTKX0pLGdlKDIsImgzIiw4KSxQZSgzLCJVcGxvYWQgRmlsZSIp''@;'; put 'put ''LG1lKCksZ2UoNCwiZGl2Iiw5KSg1LCJkaXYiLDEwKSg2LCJzcGFuIiksUGUoNywiRHJvcCBmaWxlIGFueXdoZXJlIHRvIHVwbG9hZCEiKSxtZSgpKCksZ2UoOCwiZGl2IiwxMSkoOSwiZGl2IiwxMikoMTAsImRpdiIsMTMpKDExLCJkaXYiLDE0KSgxMiwiY2xyLXJhZGlvLWNvbnRhaW5lciIs''@;'; put 'put ''MTUpKDEzLCJjbHItcmFkaW8td3JhcHBlciIpKDE0LCJpbnB1dCIsMTYpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5lbmNvZGluZyxTKXx8KGguZW5jb2Rpbmc9UyksYnQoUyl9KSxtZSgpLGdlKDE1LCJsYWJlbCIpLFBlKDE2LCJVVEYtOCIpLG1l''@;'; put 'put ''KCkoKSxnZSgxNywiY2xyLXJhZGlvLXdyYXBwZXIiKSgxOCwiaW5wdXQiLDE3KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguZW5jb2RpbmcsUyl8fChoLmVuY29kaW5nPVMpLGJ0KFMpfSksbWUoKSxnZSgxOSwibGFiZWwiKSxQZSgyMCwiV0xBVElO''@;'; put 'put ''MSIpLG1lKCkoKSgpKCkoKSxndCgyMSxRZnQsNiwxLCJkaXYiLDE4KSgyMixlM3QsMywxLCJkaXYiLDE5KSxnZSgyMywiZGl2IiwxMyksZ3QoMjQsdDN0LDIsMSwiYnV0dG9uIiwyMCkoMjUsbjN0LDIsMCwiYnV0dG9uIiwyMSksbWUoKSxndCgyNixyM3QsMywwLCJkaXYiLDIyKSxtZSgpKCko''@;'; put 'put ''KSxZdCgyNywiZGl2IiwyMyksbWUoKSxndCgyOCxpM3QsMSwxMiwiYXBwLWVkaXQtcmVjb3JkIiwyNCksZ2UoMjksImRpdiIsMjUsMCksZ3QoMzEsbzN0LDIsMCwiZGl2IiwyNiksZ2UoMzIsImRpdiIsMjcpLEl0KCJmaWxlRHJhZ2dlZE92ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0''@;'; put 'put ''KGgub25TaG93VXBsb2FkTW9kYWwoKSl9KSxnZSgzMywiZGl2IiwyOCksZ3QoMzQsczN0LDksMiwiZGl2IiwyOSksZ2UoMzUsImRpdiIsMzApLGd0KDM2LGYzdCwxMCw2LCJoNCIsMzEpLG1lKCksZ3QoMzcsdzN0LDQsMywiZGl2IiwzMikoMzgsQzN0LDUsMSwiZGl2IiwzMyksbWUoKSxnZSgz''@;'; put 'put ''OSwiZGl2IiwzNCksZ3QoNDAseDN0LDQsMiwiZGl2IiwzNSksZ2UoNDEsImRpdiIsMzYpKDQyLCJkaXYiLDM3KSxZdCg0MywiaG90LXRhYmxlIiwzOCwxKSxtZSgpLGdlKDQ1LCJkaXYiKSxndCg0NixrM3QsNSwyLCJjbHItdG9vbHRpcCIsMzkpKDQ3LEEzdCwzLDEsInAiLDQwKSxtZSgpLGd0''@;'; put 'put ''KDQ4LFIzdCwxNiw2LCJkaXYiLDQxKSxnZSg0OSwiY2xyLW1vZGFsIiw0MiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguc3VibWl0TGltaXROb3RpY2UsUyl8fChoLnN1Ym1pdExpbWl0Tm90aWNlPVMpLGJ0KFMpfSksZ2UoNTAsImgzIiw4''@;'; put 'put ''KSxQZSg1MSwiTm90aWNlIiksbWUoKSxnZSg1MiwiZGl2Iiw5KSg1MywicCIsNDMpLFBlKDU0KSxtZSgpKCksZ2UoNTUsImRpdiIsMjMpKDU2LCJidXR0b24iLDQ0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguc3VibWl0TGltaXROb3RpY2U9ITEpfSksUGUoNTcs''@;'; put 'put ''IiBDYW5jZWwgIiksbWUoKSxnZSg1OCwiYnV0dG9uIiw0NCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLnVwbG9hZFBhcnNlZEZpbGVzKCksYnQoaC5zdWJtaXRMaW1pdE5vdGljZT0hMSl9KSxQZSg1OSwiIFN1Ym1pdCAiKSxtZSgpKCkoKSxnZSg2MCwiY2xyLW1vZGFs''@;'; put 'put ''Iiw0MiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguYmFkRWRpdCxTKXx8KGguYmFkRWRpdD1TKSxidChTKX0pLGdlKDYxLCJoMyIsOCksUGUoNjIpLG1lKCksZ2UoNjMsImRpdiIsOSkoNjQsInAiKSxQZSg2NSksbWUoKSgpLGdlKDY2LCJk''@;'; put 'put ''aXYiLDIzKSg2NywiYnV0dG9uIiw0NCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLmJhZEVkaXQ9ITEpfSksUGUoNjgsIiBPayAiKSxtZSgpKCkoKSxnZSg2OSwiY2xyLW1vZGFsIiw0MiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJu''@;'; put 'put ''IF90KGYpLEdyKGgucGtOdWxsLFMpfHwoaC5wa051bGw9UyksYnQoUyl9KSxnZSg3MCwiaDMiLDgpLFBlKDcxLCJFcnJvciIpLG1lKCksZ2UoNzIsImRpdiIsOSkoNzMsInAiKSxQZSg3NCwiIE51bGwgdmFsdWVzIG9yIGluY29ycmVjdCBkYXRhIHR5cGVzIGNhbm5vdCBiZSBzdWJtaXR0ZWQg''@;'; put 'put ''Zm9yIFByaW1hcnkgS2V5IGNvbHVtbnMgIiksbWUoKSgpLGdlKDc1LCJkaXYiLDIzKSg3NiwiYnV0dG9uIiw0NSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLnBrTnVsbD0hMSxidChoLmJhZEVkaXQ9ITEpfSksUGUoNzcsIiBPayAiKSxtZSgpKCkoKSxnZSg3OCwiY2xy''@;'; put 'put ''LW1vZGFsIiw0MiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGgubm9Qa051bGwsUyl8fChoLm5vUGtOdWxsPVMpLGJ0KFMpfSksZ2UoNzksImgzIiw4KSxQZSg4MCwiRXJyb3IiKSxtZSgpLGdlKDgxLCJkaXYiLDkpKDgyLCJwIiksUGUoODMs''@;'; put 'put ''IkluY29ycmVjdCBkYXRhIHR5cGVzIGluIG5vbi1QcmltYXJ5IEtleSBjb2x1bW5zIiksbWUoKSgpLGdlKDg0LCJkaXYiLDIzKSg4NSwiYnV0dG9uIiw0NSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLm5vUGtOdWxsPSExLGJ0KGguYmFkRWRpdD0hMSl9KSxQZSg4Niwi''@;'; put 'put ''IE9rICIpLG1lKCkoKSgpLGdlKDg3LCJjbHItbW9kYWwiLDQ2KSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5wa0R1cHMsUyl8fChoLnBrRHVwcz1TKSxidChTKX0pLGdlKDg4LCJoMyIsOCksUGUoODksIkVycm9yIiksbWUoKSxnZSg5MCwi''@;'; put 'put ''ZGl2Iiw5KSg5MSwicCIpLFBlKDkyLCIgRHVwbGljYXRlIHZhbHVlcyBjYW5ub3QgYmUgc3VibWl0dGVkIGZvciBQcmltYXJ5IEtleSBjb2x1bW5zICIpLG1lKCksZ2UoOTMsInAiKSxQZSg5NCwiRHVwbGljYXRlcyBmb3VuZDoiKSxtZSgpLGd0KDk1LEwzdCwzLDQsInNwYW4iLDQ3KSxtZSgp''@;'; put 'put ''LGdlKDk2LCJkaXYiLDIzKSg5NywiYnV0dG9uIiw0NSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLnBrRHVwcz0hMSl9KSxQZSg5OCwiIE9rICIpLG1lKCkoKSgpLGdlKDk5LCJjbHItbW9kYWwiLDQyKSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihT''@;'; put 'put ''KXtyZXR1cm4gX3QoZiksR3IoaC50b29Mb25nLFMpfHwoaC50b29Mb25nPVMpLGJ0KFMpfSksZ2UoMTAwLCJoMyIsOCksUGUoMTAxLCJFcnJvciIpLG1lKCksZ2UoMTAyLCJkaXYiLDkpKDEwMywicCIpLFBlKDEwNCwiIFRoZSBmb2xsb3dpbmcgY29sdW1ucyBoYXZlIHZhbHVlcyB0aGF0IGV4''@;'; put 'put ''Y2VlZCBsZW5ndGggbGltaXRzOiAiKSxtZSgpLGd0KDEwNSxPM3QsMiwzLCJwIiw0OCksbWUoKSxnZSgxMDYsImRpdiIsMjMpKDEwNywiYnV0dG9uIiw0NSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLnRvb0xvbmc9ITEsYnQoaC5jbGVhbkV4Y2VlZCgpKX0pLFBlKDEw''@;'; put 'put ''OCwiIE9rICIpLG1lKCkoKSgpKCkoKSgpKCkoKSxndCgxMDksUDN0LDE0LDAsImRpdiIsNDkpLGdlKDExMCwiY2xyLW1vZGFsIiw1MCksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguZmlsdGVyLFMpfHwoaC5maWx0ZXI9UyksYnQoUyl9KSxn''@;'; put 'put ''ZSgxMTEsImgzIiw1MSksUGUoMTEyLCIgRmlsdGVyIGZvciB0YWJsZTogIiksZ2UoMTEzLCJzcGFuIiksUGUoMTE0KSxtZSgpKCksZ2UoMTE1LCJkaXYiLDkpLGd0KDExNixGM3QsMiwwLCJhcHAtcXVlcnkiLDM5KSxtZSgpLGdlKDExNywiZGl2IiwyMykoMTE4LCJidXR0b24iLDUyKSxJdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgucmVzZXRGaWx0ZXIoKSl9KSxQZSgxMTksIiByZXNldCBmaWx0ZXIgIiksbWUoKSxnZSgxMjAsImJ1dHRvbiIsNTMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5maWx0ZXI9ITEpfSksUGUoMTIxLCIg''@;'; put 'put ''Q2FuY2VsICIpLG1lKCksZ2UoMTIyLCJidXR0b24iLDU0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguc2VuZENsYXVzZSgpKX0pLFBlKDEyMywiIE9rICIpLG1lKCkoKSgpLGdlKDEyNCwiY2xyLW1vZGFsIiw0MiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVu''@;'; put 'put ''Y3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGgucXVlcnlFcnIsUyl8fChoLnF1ZXJ5RXJyPVMpLGJ0KFMpfSksZ2UoMTI1LCJoMyIsOCksUGUoMTI2LCJFcnJvciIpLG1lKCksZ2UoMTI3LCJkaXYiLDkpKDEyOCwicCIpLFBlKDEyOSksbWUoKSgpLGdlKDEzMCwiZGl2IiwyMykoMTMxLCJidXR0''@;'; put 'put ''b24iLDU1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgucXVlcnlFcnI9ITEpfSksUGUoMTMyLCIgQ2FuY2VsICIpLG1lKCksZ2UoMTMzLCJidXR0b24iLDQ1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgucXVlcnlFcnI9ITEpfSksUGUo''@;'; put 'put ''MTM0LCIgT2sgIiksbWUoKSgpKCksZ2UoMTM1LCJjbHItbW9kYWwiLDU2KSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5kaXNjYXJkU291cmNlRmlsZSxTKXx8KGguZGlzY2FyZFNvdXJjZUZpbGU9UyksYnQoUyl9KSxnZSgxMzYsImgzIiw1''@;'; put 'put ''MSksUGUoMTM3LCJXYXJuaW5nIiksbWUoKSxnZSgxMzgsImRpdiIsOSksUGUoMTM5LCIgVGhpcyBhY3Rpb24gd2lsbCBkaXNjYXJkIHRoZSBzb3VyY2UgZmlsZSBhbmQgaXQncyBsb2FkZWQgZGF0YSAiKSxnZSgxNDAsImIiKSxQZSgxNDEpLG1lKCksUGUoMTQyLCIgRG8geW91IHdpc2ggdG8g''@;'; put 'put ''cHJvY2VlZD8gIiksbWUoKSxnZSgxNDMsImRpdiIsMjMpKDE0NCwiYnV0dG9uIiw1MyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLmRpc2NhcmRTb3VyY2VGaWxlPSExKX0pLFBlKDE0NSwiIENhbmNlbCAiKSxtZSgpLGdlKDE0NiwiYnV0dG9uIiw1NyksSXQoImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLmRpc2NhcmRTb3VyY2VGaWxlPSExLGJ0KGguZGlzY2FyZFBlbmRpbmdFeGNlbCghMCkpfSksUGUoMTQ3LCIgT2sgIiksbWUoKSgpKCksZ2UoMTQ4LCJjbHItbW9kYWwiLDU2KSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihT''@;'; put 'put ''KXtyZXR1cm4gX3QoZiksR3IoaC5maWxlUGFzc3dvcmRNb2RhbCxTKXx8KGguZmlsZVBhc3N3b3JkTW9kYWw9UyksYnQoUyl9KSxnZSgxNDksImgzIiw1MSksUGUoMTUwLCIgUGFzc3dvcmQgUHJvdGVjdGVkIEZpbGUgIiksbWUoKSxnZSgxNTEsImRpdiIsNTgpKDE1MiwicCIsNDMpLFBlKDE1''@;'; put 'put ''MywiUGxlYXNlIGVudGVyIHBhc3N3b3JkOiIpLG1lKCksWXQoMTU0LCJpbnB1dCIsNTksMiksbWUoKSxnZSgxNTYsImRpdiIsMjMpLGd0KDE1NyxOM3QsMiwwLCJwIiw2MCksZ2UoMTU4LCJidXR0b24iLDUzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGguZmlsZVBhc3N3''@;'; put 'put ''b3JkTW9kYWw9ITEsYnQoaC5maWxlUGFzc3dvcmRTdWJqZWN0Lm5leHQodm9pZCAwKSl9KSxQZSgxNTksIiBDYW5jZWwgdXBsb2FkICIpLG1lKCksZ2UoMTYwLCJidXR0b24iLDYxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoZik7Y29uc3QgUz1HaSgxNTUpO3JldHVybiBoLmZpbGVQYXNz''@;'; put 'put ''d29yZE1vZGFsPSExLGJ0KGguZmlsZVBhc3N3b3JkU3ViamVjdC5uZXh0KFMudmFsdWUpKX0pLFBlKDE2MSwiIFVubG9jayAiKSxtZSgpKCkoKSxnZSgxNjIsImNsci1tb2RhbCIsNTYpLFdyKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLm1hbnVh''@;'; put 'put ''bEZpbGVFZGl0TW9kYWwsUyl8fChoLm1hbnVhbEZpbGVFZGl0TW9kYWw9UyksYnQoUyl9KSxnZSgxNjMsImgzIiw1MSksUGUoMTY0LCJXYXJuaW5nIiksbWUoKSxnZSgxNjUsImRpdiIsOSksUGUoMTY2LCIgTWFudWFsbHkgZWRpdGluZyB0aGlzIGRhdGEgd2lsbCBtZWFuIHRoZSBzb3VyY2Ug''@;'; put 'put ''ZmlsZSAiKSxnZSgxNjcsImIiKSxQZSgxNjgpLG1lKCksUGUoMTY5LCIgd2lsbCBiZSBkaXNjYXJkZWQuIERvIHlvdSB3aXNoIHRvIHByb2NlZWQ/ICIpLG1lKCksZ2UoMTcwLCJkaXYiLDIzKSgxNzEsImJ1dHRvbiIsNTMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQo''@;'; put 'put ''aC5tYW51YWxGaWxlRWRpdE1vZGFsPSExKX0pLFBlKDE3MiwiIENhbmNlbCAiKSxtZSgpLGdlKDE3MywiYnV0dG9uIiw1NyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLm1hbnVhbEZpbGVFZGl0TW9kYWw9ITEsYnQoaC5wcmV2aWV3VGFibGVFZGl0Q29uZmlybSgpKX0p''@;'; put 'put ''LFBlKDE3NCwiIE9rICIpLG1lKCkoKSgpLGdlKDE3NSwiYXBwLWRhdGFzZXQtaW5mbyIsNjIpLFdyKCJvcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5kYXRhc2V0SW5mbyxTKXx8KGguZGF0YXNldEluZm89UyksYnQoUyl9KSxJdCgicm93Q2xpY2tlZCIsZnVuY3Rp''@;'; put 'put ''b24oUyl7cmV0dXJuIF90KGYpLGJ0KGguZGF0YXNldEluZm9Nb2RhbFJvd0NsaWNrZWQoUykpfSksbWUoKSxnZSgxNzYsImFwcC12aWV3Ym94ZXMiLDYzKSxXcigidmlld2JveE1vZGFsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC52aWV3Ym94ZXMsUyl8fChoLnZpZXdi''@;'; put 'put ''b3hlcz1TKSxidChTKX0pLG1lKCl9aWYoMiZkKXtjb25zdCBmPUdpKDE1NSk7X2UoKSxSZSgidXBsb2FkZXIiLGgudXBsb2FkZXIpKCJjbHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbFN0YXRpY0JhY2tkcm9wIiwhMSkoImNsck1vZGFsQ2xvc2FibGUiLCJWYWxpZGF0aW5nLURRIj09PWgu''@;'; put 'put ''ZXhjZWxVcGxvYWRTdGF0ZSksWXIoImNsck1vZGFsT3BlbiIsaC5zaG93VXBsb2FkTW9kYWwpLF9lKDEzKSxZcigibmdNb2RlbCIsaC5lbmNvZGluZyksUmUoImRpc2FibGVkIiwiIiE9aC5maWxlbmFtZSksX2UoNCksWXIoIm5nTW9kZWwiLGguZW5jb2RpbmcpLFJlKCJkaXNhYmxlZCIsIiIh''@;'; put 'put ''PWguZmlsZW5hbWUpLF9lKDMpLFJlKCJuZ0lmIiwhaC5leGNlbEZpbGVQYXJzaW5nJiYhaC51cGxvYWRMb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIiwhaC5leGNlbEZpbGVQYXJzaW5nJiYhaC51cGxvYWRMb2FkaW5nKSxfZSgyKSxSZSgibmdJZiIsIlZhbGlkYXRpbmciIT09aC5leGNlbFVwbG9h''@;'; put 'put ''ZFN0YXRlKSxfZSgpLFJlKCJuZ0lmIiwiVmFsaWRhdGluZy1EUSI9PT1oLmV4Y2VsVXBsb2FkU3RhdGUpLF9lKCksUmUoIm5nSWYiLGguZXhjZWxGaWxlUGFyc2luZyksX2UoMiksUmUoIm5nSWYiLGguY3VycmVudEVkaXRSZWNvcmRJbmRleD4tMSksX2UoMyksUmUoIm5nSWYiLCFoLnZhbGlk''@;'; put 'put ''YXRpb25Eb25lJiZoLnN1Ym1pdCksX2UoMyksUmUoIm5nSWYiLGgudGFibGVUcnVlKSxfZSgpLHByKCJjbHItY29sLWxnLTEyIiwhaC50YWJsZVRydWUpLF9lKCksUmUoIm5nVmFyIixmMyg2NyxLZnQsbnVsbD09aC5saWJkcz9udWxsOmgubGliZHMuc3BsaXQoIi4iKVswXSxudWxsPT1oLmxp''@;'; put 'put ''YmRzP251bGw6aC5saWJkcy5zcGxpdCgiLiIpWzFdKSksX2UoKSxSZSgibmdJZiIsaC50YWJsZVRydWUpLF9lKCksUmUoIm5nSWYiLCFsYSg3MCxnNGUpLmluY2x1ZGVzKGgucXVlcnlUZXh0KSksX2UoKSxSZSgibmdDbGFzcyIsaDMoNzIsWGZ0LCFsYSg3MSxnNGUpLmluY2x1ZGVzKGgucXVl''@;'; put 'put ''cnlUZXh0KSkpLF9lKCksUmUoIm5nSWYiLCFoLnRhYmxlVHJ1ZSksX2UoMykscHIoImhpZGRlbiIsaC5ob3RUYWJsZS5oaWRkZW4pLFJlKCJsaWNlbnNlS2V5IixoLmhvdFRhYmxlLmxpY2Vuc2VLZXkpLF9lKDMpLFJlKCJuZ0lmIixoLnRhYmxlVHJ1ZSYmIWgucmVzdHJpY3Rpb25zLnJlbW92''@;'; put 'put ''ZUFkZFJlY29yZEJ1dHRvbiksX2UoKSxSZSgibmdJZiIsaC5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9yX3Jvd3NfYWxsb3dlZCE9PWguSW5maW5pdHkmJmguZGF0YVNvdXJjZSYmaC5kYXRhU291cmNlLmxlbmd0aD5oLmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkKSxf''@;'; put 'put ''ZSgpLFJlKCJuZ0lmIixoLnN1Ym1pdCksX2UoKSxZcigiY2xyTW9kYWxPcGVuIixoLnN1Ym1pdExpbWl0Tm90aWNlKSxfZSg1KSxtcigiIER1ZSB0byBjdXJyZW50IGxpY2VuY2UsIG9ubHkgIixoLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCwiIHJvd3MgaW4gYSBmaWxl''@;'; put 'put ''IHdpbGwgYmUgc3VibWl0dGVkLiBUbyByZW1vdmUgdGhlIHJlc3RyaWN0aW9uLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIiksX2UoNiksWXIoImNsck1vZGFsT3BlbiIsaC5iYWRFZGl0KSxfZSgyKSxscihoLmJhZEVkaXRUaXRsZXx8IkVycm9yIiksX2UoMyksbHIoaC5i''@;'; put 'put ''YWRFZGl0Q2F1c2UpLF9lKDQpLFlyKCJjbHJNb2RhbE9wZW4iLGgucGtOdWxsKSxfZSg5KSxZcigiY2xyTW9kYWxPcGVuIixoLm5vUGtOdWxsKSxfZSg5KSxZcigiY2xyTW9kYWxPcGVuIixoLnBrRHVwcyksX2UoOCksUmUoIm5nRm9yT2YiLGguZHVwbGljYXRlUGtJbmRleGVzKSxfZSg0KSxZ''@;'; put 'put ''cigiY2xyTW9kYWxPcGVuIixoLnRvb0xvbmcpLF9lKDYpLFJlKCJuZ0Zvck9mIixoLmV4Y2VlZENlbGxzKSxfZSg0KSxSZSgibmdJZiIsaC5udWxsVmFyaWFibGVzKSxfZSgpLFlyKCJjbHJNb2RhbE9wZW4iLGguZmlsdGVyKSxSZSgiY2xyTW9kYWxTaXplIiwieGwiKSgiY2xyTW9kYWxDbG9z''@;'; put 'put ''YWJsZSIsITEpLF9lKDQpLG1yKCIgIixoLmxpYmRzLCIgIiksX2UoMiksUmUoIm5nSWYiLGguZmlsdGVyKSxfZSg2KSxSZSgiY2xyTG9hZGluZyIsaC5zdWJtaXRMb2FkaW5nKSxfZSgyKSxZcigiY2xyTW9kYWxPcGVuIixoLnF1ZXJ5RXJyKSxfZSg1KSxscihoLnF1ZXJ5RXJyTWVzc2FnZSks''@;'; put 'put ''X2UoNiksWXIoImNsck1vZGFsT3BlbiIsaC5kaXNjYXJkU291cmNlRmlsZSksUmUoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxfZSg2KSxscihoLmZpbGVuYW1lKSxfZSg3KSxZcigiY2xyTW9kYWxPcGVuIixoLmZpbGVQYXNzd29yZE1vZGFsKSxSZSgiY2xy''@;'; put 'put ''TW9kYWxTaXplIiwibWQiKSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLF9lKDkpLFJlKCJuZ0lmIixoLmZpbGVVbmxvY2tFcnJvciksX2UoMyksUmUoImRpc2FibGVkIixmLnZhbHVlLmxlbmd0aDwxKSxfZSgyKSxZcigiY2xyTW9kYWxPcGVuIixoLm1hbnVhbEZpbGVFZGl0TW9kYWwpLFJlKCJj''@;'; put 'put ''bHJNb2RhbFNpemUiLCJ4bCIpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksX2UoNiksbHIoaC5maWxlbmFtZSksX2UoNyksWXIoIm9wZW4iLGguZGF0YXNldEluZm8pLFJlKCJkc21ldGEiLGguZHNtZXRhKSgidmVyc2lvbnMiLGgudmVyc2lvbnMpLF9lKCksWXIoInZpZXdib3hNb2RhbCIsaC52''@;'; put 'put ''aWV3Ym94ZXMpfX0sZGVwZW5kZW5jaWVzOltjNGUsSmMsVnMsJGksdWwsR0ksX2EsdWEsazAsWWEsUGMsaXUsbDAsa2gsRGgsJHMsV1osWEhlLFlaLHdSLEY4LEg4LE44LFNiLGh5LGpNLHU0ZSxkNGUsaDRlLEhSLG9KLGpmdCxVZnQsWmZ0LHA0ZV0sc3R5bGVzOlsiLmNhcmRbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde21hcmdpbi10b3A6MDtib3JkZXI6MH0uYnV0dG9uQmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn0udGVzdFJlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmMDBjIWltcG9ydGFudH1o''@;'; put 'put ''b3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuZmlyc3RDb2x1bW5IZWFkZXJTdHlsZSBidXR0b24uY2hhbmdlVHlwZXtkaXNwbGF5Om5vbmV9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlL''@;'; put 'put ''ZXlIZWFkZXJTdHlsZSwgaG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmhhbmRzb250YWJsZSB0aGVhZCB0aC5odF9faGlnaGxpZ2h0LnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDBiMCFpbXBvcnRhbnR9aG90LXRhYmxlW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgICAgLnByaW1hcnlLZXlIZWFkZXJTdHlsZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDZiMDA2ZSFpbXBvcnRhbnR9aG90LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgdGgucmVhZG9ubHlDZWxsIGRpdntvcGFjaXR5Oi40fWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICAgIHRkLnJlYWRvbmx5Q2VsbHtvcGFjaXR5Oi41fS5zdWJtaXQtcmVhc29uW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjEyMHB4O21heC1oZWlnaHQ6MTIwcHg7aGVpZ2h0OjEyMHB4fS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjE0cHg7YmFja2dyb3Vu''@;'; put 'put ''ZDojNDk1OTY3O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzozcHg7Zm9udC1zaXplOjE2cHg7aGVpZ2h0OjMwcHg7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwfS5pbmZvQmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IHNwYW5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjgwJX0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7aGVpZ2h0OnVuc2V0O3doaXRlLXNwYWNlOm5vcm1hbH0uaW5mb0Jhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0''@;'; put 'put ''aDp1bnNldH0ucGtIZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzY4NzY4Mjtjb2xvcjojZmZmO21hcmdpbjotMXB4fS5oZWFkZXJCYXJbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYmct''@;'; put 'put ''Y29sb3IpfS5lcnJvci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMHB4O2hlaWdodDozMHB4O2NvbG9yOnJlZH0uYnRuQ3RybFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50fS5oaWRkZW5bX25nY29udGVudC0lQ09NUCVde3Zpc2liaWxpdHk6aGlkZGVufS5teS1kcm9wLXpvbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggbGlnaHRncmF5O2JvcmRlci1yYWRpdXM6MTBweDti''@;'; put 'put ''YWNrZ3JvdW5kOiNmNWY1ZjU7Ym94LXNoYWRvdzppbnNldCAwIDAgNHB4IDJweCAjYTdhNWE1MmI7aGVpZ2h0OjUwdmh9Lm52LWZpbGUtb3Zlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDJweCBncmVlbn0uZmlsZS1kcm9wLXRleHRbX25nY29udGVudC0lQ09NUCVde3RleHQt''@;'; put 'put ''YWxpZ246Y2VudGVyfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KXsucHJvZ3Jlc1N0YXRpY1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50fS5wcm9ncmVzc1tfbmdjb250ZW50LSVDT01QJV0sIC5wcm9ncmVzcy1zdGF0aWNbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3dpZHRoOmNhbGMoMTAwJSAtIDE0cHgpfX0uaG90RWRpdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZXhjZWwtcGFyc2luZ1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpj''@;'; put 'put ''ZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9LmV4Y2VsLXBhcnNpbmdbX25nY29udGVudC0lQ09NUCVdICAgLmRldGFpbHNbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNDVweH0uZWRpdC1yZWNvcmQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17''@;'; put 'put ''ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZjk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MTAwJTt6LWluZGV4OjUwMH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCl7''@;'; put 'put ''LnByb2dyZXNTdGF0aWNbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MzJweCFpbXBvcnRhbnR9LmNhcmQtYmxvY2tbX25nY29udGVudC0lQ09NUCVdLCAuY2FyZC1mb290ZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MTBweCAwIDB9fS5jb250ZW50LWFyZWFbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3BhZGRpbmc6MCAuOHJlbSAuOHJlbSFpbXBvcnRhbnQ7cGFkZGluZy10b3A6MH0uZHJvcC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmZsZXgtc3Rh''@;'; put 'put ''cnQ7bWFyZ2luOjFweDtib3JkZXI6MnB4IGRhc2hlZCAjZmZmO3otaW5kZXg6LTF9LmRyb3AtYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweDttYXJnaW4tdG9wOjIwcHg7cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6I2RiZGJk''@;'; put 'put ''Yjtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojMDAwfSNzdWJtaXRCdG5bX25nY29udGVudC0lQ09NUCVdLCAjY2FuY2VsU3VibWl0QnRuW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNTBweH0udmlldy10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0''@;'; put 'put ''YW50fUBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCl7Lmljb24tY29sbGFwc2VbX25nY29udGVudC0lQ09NUCVdICAgLnRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX19Il19KX19cmV0dXJuIGx9KSgpO2NvbnN0IEgzdD1be3BhdGg6IjpsaWJNZW0iLGNvbXBvbmVudDphRn0s''@;'; put 'put ''e3BhdGg6IjpsaWJNZW0vOmZpbHRlcklkIixjb21wb25lbnQ6YUZ9LHtwYXRoOiJlZGl0LXJlY29yZC86bGliTWVtIixjb21wb25lbnQ6YUZ9LHtwYXRoOiJlZGl0LXJlY29yZC86bGliTWVtLzpmaWx0ZXJJZCIsY29tcG9uZW50OmFGfV07bGV0IFYzdD0oKCk9PntjbGFzcyBse3N0YXRpY3t0''@;'; put 'put ''aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sQ2MuZm9yQ2hpbGQoSDN0KSxDY119KX19cmV0dXJuIGx9KSgpLEpFPSgoKT0+e2Ns''@;'; put 'put ''YXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxjMCxvbyxyYyxyMl19KX19cmV0dXJuIGx9KSgpLGFKPSgo''@;'; put 'put ''KT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxjMCxvbyxyYyxWNyxYRSxyMl19KX19cmV0dXJu''@;'; put 'put ''IGx9KSgpLG00ZT0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sYzAsb28scmMsYUosbDcs''@;'; put 'put ''a2NlLHFwZSxKRSxyMl19KX19cmV0dXJuIGx9KSgpO29GKCk7bGV0IEIzdD0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWlu''@;'; put 'put ''aj1zaSh7aW1wb3J0czpbbTRlLG9vLHJjLFYzdCxjMCxsNy5mb3JSb290KCksVjcscjIsZHksWEUsSkUsa2NlLGFKXX0pfX1yZXR1cm4gbH0pKCksajN0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9bmdPbkRlc3Ryb3koKXt9c3RhdGlje3RoaXMuXHUwMjc1ZmFj''@;'; put 'put ''PWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtaG9tZS1yb3V0ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24oZCxo''@;'; put 'put ''KXsxJmQmJll0KDAsInJvdXRlci1vdXRsZXQiKX0sZGVwZW5kZW5jaWVzOltjNF19KX19cmV0dXJuIGx9KSgpO2NvbnN0IHozdD1bInNpZGViYXJOYXYiXSxVM3Q9WyIqIl0sWjN0PSgpPT5bIi92aWV3L3VzZXJuYXYvdXNlcnMiXSxZM3Q9KCk9PlsiL3ZpZXcvdXNlcm5hdi9ncm91cHMiXSxX''@;'; put 'put ''M3Q9KCk9PlsiL3ZpZXcvdXNlcm5hdi9yb2xlcyJdO2Z1bmN0aW9uIEczdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImEiLDE4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDMpLm5hdmlnYXRlVG9WaWV3ZXIoKSl9KSxQZSgxLCJEYXRhIiksbWUo''@;'; put 'put ''KX19ZnVuY3Rpb24gJDN0KGwsYyl7MSZsJiYoZ2UoMCwiYSIsMTkpLFBlKDEsIkFQSSBFeHBsb3JlciIpLG1lKCkpfWZ1bmN0aW9uIHEzdChsLGMpezEmbCYmKGdlKDAsImEiLDIwKSxQZSgxLCJMaW5lYWdlIiksbWUoKSl9ZnVuY3Rpb24gSzN0KGwsYyl7MSZsJiYoZ2UoMCwiYSIsMjEpLFBl''@;'; put 'put ''KDEsIk1ldGFkYXRhIiksbWUoKSl9ZnVuY3Rpb24gWDN0KGwsYyl7MSZsJiYoZ2UoMCwiYSIsMjIpLFBlKDEsIiBVc2VycyIpLG1lKCkpfWZ1bmN0aW9uIEozdChsLGMpezEmbCYmKGdlKDAsImEiLDIzKSxQZSgxLCJTdWJtaXR0ZWQiKSxtZSgpKX1mdW5jdGlvbiBRM3QobCxjKXsxJmwmJihn''@;'; put 'put ''ZSgwLCJhIiwyNCksUGUoMSwiVG8gQXBwcm92ZSIpLG1lKCkpfWZ1bmN0aW9uIGVwdChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci1kcm9wZG93bi1tZW51IiksZ3QoMSxHM3QsMiwwLCJhIiwxMSkoMiwkM3QsMiwwLCJhIiwxMikoMyxxM3QsMiwwLCJhIiwxMykoNCxLM3QsMiwwLCJhIiwxNCko''@;'; put 'put ''NSxYM3QsMiwwLCJhIiwxNSkoNixKM3QsMiwwLCJhIiwxNikoNyxRM3QsMiwwLCJhIiwxNyksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoInZpZXciKSksX2UoKSxSZSgibmdJZiIsYS5pc01haW5Sb3V0ZSgidmlldyIpJiYiU0FTVklZQSI9''@;'; put 'put ''PT1hLnNlcnZlclR5cGUpLF9lKCksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoInZpZXciKSYmIlNBUzkiPT09YS5zZXJ2ZXJUeXBlKSxfZSgpLFJlKCJuZ0lmIixhLmlzTWFpblJvdXRlKCJ2aWV3IikmJiJTQVM5Ij09PWEuc2VydmVyVHlwZSksX2UoKSxSZSgibmdJZiIsYS5pc01haW5Sb3V0''@;'; put 'put ''ZSgidmlldyIpKSxfZSgpLFJlKCJuZ0lmIixhLmlzTWFpblJvdXRlKCJhcHByb3ZlIikpLF9lKCksUmUoIm5nSWYiLGEuaXNNYWluUm91dGUoImFwcHJvdmUiKSl9fWZ1bmN0aW9uIHRwdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNykoMSwiY2xyLWRyb3Bkb3duIikoMiwiYnV0dG9uIiw4''@;'; put 'put ''KSxQZSgzKSxZdCg0LCJjbHItaWNvbiIsOSksbWUoKSxndCg1LGVwdCw4LDcsImNsci1kcm9wZG93bi1tZW51IiwxMCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxtcigiICIsYS5nZXRTdWJQYWdlKCksIiAiKX19ZnVuY3Rpb24gbnB0KGwsYyl7MSZsJiZZdCgwLCJjbHItdGFi''@;'; put 'put ''LWNvbnRlbnQiKX1mdW5jdGlvbiBycHQobCxjKXsxJmwmJll0KDAsImNsci10YWItY29udGVudCIpfWZ1bmN0aW9uIGlwdChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10YWIiKSgxLCJidXR0b24iLDI2KSgyLCJwIiwyNyksWXQoMywiY2xyLWljb24iLDMyKSxQZSg0LCIgUm9sZXMgIiksbWUo''@;'; put 'put ''KSgpLGd0KDUscnB0LDEsMCwiY2xyLXRhYi1jb250ZW50IiwzMCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoInJvdXRlckxpbmsiLGxhKDIsVzN0KSksX2UoNCksUmUoImNscklmQWN0aXZlIixhLmlzTWFpblJvdXRlKCIvdmlldy91c2VybmF2L3JvbGVzIikpfX1mdW5jdGlv''@;'; put 'put ''biBvcHQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdGFicyIsMjUpKDEsImNsci10YWIiKSgyLCJidXR0b24iLDI2KSgzLCJwIiwyNyksWXQoNCwiY2xyLWljb24iLDI4KSxQZSg1LCIgVXNlcnMiKSxtZSgpKCksWXQoNiwiY2xyLXRhYi1jb250ZW50IiksbWUoKSxnZSg3LCJjbHItdGFiIiko''@;'; put 'put ''OCwiYnV0dG9uIiwyNikoOSwicCIsMjcpLFl0KDEwLCJjbHItaWNvbiIsMjkpLFBlKDExLCIgR3JvdXBzIiksbWUoKSgpLGd0KDEyLG5wdCwxLDAsImNsci10YWItY29udGVudCIsMzApLG1lKCksZ3QoMTMsaXB0LDYsMywiY2xyLXRhYiIsMzEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpO19l''@;'; put 'put ''KDIpLFJlKCJyb3V0ZXJMaW5rIixsYSg0LFozdCkpLF9lKDYpLFJlKCJyb3V0ZXJMaW5rIixsYSg1LFkzdCkpLF9lKDQpLFJlKCJjbHJJZkFjdGl2ZSIsYS5pc01haW5Sb3V0ZSgiL3ZpZXcvdXNlcm5hdi9ncm91cHMiKSksX2UoKSxSZSgibmdJZiIsIlNBUzkiPT09YS5zZXJ2ZXJUeXBlKX19''@;'; put 'put ''ZnVuY3Rpb24gc3B0KGwsYyl7MSZsJiYoZ2UoMCwiY2xyLWRyb3Bkb3duLW1lbnUiKSgxLCJhIiwzMyksUGUoMiwiVGFibGVzIiksbWUoKSxnZSgzLCJhIiwzNCksUGUoNCwiRXhjZWwgTWFwcyIpLG1lKCksZ2UoNSwiYSIsMzUpLFBlKDYsIk11bHRpIExvYWQiKSxtZSgpKCkpfWZ1bmN0aW9u''@;'; put 'put ''IGFwdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNykoMSwiY2xyLWRyb3Bkb3duIikoMiwiYnV0dG9uIiw4KSxQZSgzKSxZdCg0LCJjbHItaWNvbiIsOSksbWUoKSxndCg1LHNwdCw3LDAsImNsci1kcm9wZG93bi1tZW51IiwxMCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxt''@;'; put 'put ''cigiICIsYS5nZXRTdWJQYWdlKCksIiAiKX19bGV0IHNwPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgpe3RoaXMuX3JvdXRlcj1hLHRoaXMuZXZlbnRTZXJ2aWNlPWQsdGhpcy5fc2FzU2VydmljZT1oLHRoaXMuc2Nyb2xsZWRUb0JvdHRvbT1uZXcgRHIsdGhpcy5zaWRlYmFyT3Bl''@;'; put 'put ''bj0hMCx0aGlzLnNpZGViYXJXaWR0aD1udWxsLHRoaXMuc2lkZWJhck1heFdpZHRoPW51bGwsdGhpcy5yZXNpemluZz0hMSx0aGlzLnNhc2pzQ29uZmlnPW5ldyB5ZC5TQVNqc0NvbmZpZyx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuX3Nhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLnNl''@;'; put 'put ''cnZlclR5cGU9dGhpcy5fc2FzU2VydmljZS5nZXRTZXJ2ZXJUeXBlKCl9bmdPbkluaXQoKXt0aGlzLmV2ZW50U2VydmljZS5vblNpZGViYXJUb2dnbGUuc3Vic2NyaWJlKGE9Pnt0aGlzLnNpZGViYXJPcGVuPWE/YS5vcGVuOiF0aGlzLnNpZGViYXJPcGVuLHRoaXMuZXZlbnRTZXJ2aWNlLmRp''@;'; put 'put ''c3BhdGNoRXZlbnQoInJlc2l6ZSIpfSl9b25UcmVlU2Nyb2xsKGEpe2xldCBkPWEudGFyZ2V0O2Quc2Nyb2xsVG9wPj1kLnNjcm9sbEhlaWdodC1kLm9mZnNldEhlaWdodC0xMCYmdGhpcy5zY3JvbGxlZFRvQm90dG9tLmVtaXQoKX1pc01haW5Sb3V0ZShhKXtyZXR1cm4gdGhpcy5fcm91dGVy''@;'; put 'put ''LnVybC5pbmNsdWRlcyhhKX1nZXRTdWJQYWdlKCl7cmV0dXJuIHRoaXMuX3JvdXRlci51cmwuc3BsaXQoIi8iKVsyXX1uYXZpZ2F0ZVRvVmlld2VyKCl7SG4udmlld2VyLmN1cnJlbnRTZWxlY3Rpb249IiIsdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1yZXNpemVT''@;'; put 'put ''dGFydCgpe3RoaXMucmVzaXppbmc9ITAsZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXS5zdHlsZS5jc3NUZXh0PSJ1c2VyLXNlbGVjdDogbm9uZSJ9cmVzaXplRW5kKCl7dGhpcy5yZXNpemluZz0hMSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp''@;'; put 'put ''WzBdLnN0eWxlLmNzc1RleHQ9IiJ9b25Nb3VzZU1vdmUoYSl7aWYodGhpcy5yZXNpemluZyl7dGhpcy5zaWRlYmFyV2lkdGg9YS5jbGllbnRYO2xldCBkPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm5hdi10cmVlIilbMF07dGhpcy5zaWRlYmFyV2lkdGgmJnRoaXMuaXNPdmVy''@;'; put 'put ''Zmxvd24oZCkmJih0aGlzLnNpZGViYXJNYXhXaWR0aD10aGlzLnNpZGViYXJXaWR0aD49Mzc1P3RoaXMuc2lkZWJhcldpZHRoKzEwOnRoaXMuc2lkZWJhck1heFdpZHRoKX19b25Nb3VzZVVwKGEpe3RoaXMucmVzaXppbmcmJnRoaXMucmVzaXplRW5kKCl9aXNPdmVyZmxvd24oYSl7cmV0dXJu''@;'; put 'put ''IGEuc2Nyb2xsV2lkdGg+YS5jbGllbnRXaWR0aH1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShKcyksSmUoRGwpLEplKHZhKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtc2lkZWJhciJdXSx2''@;'; put 'put ''aWV3UXVlcnk6ZnVuY3Rpb24oZCxoKXtpZigxJmQmJkhvKHozdCw1KSwyJmQpe2xldCBmO2xpKGY9Y2koKSkmJihoLnNpZGViYXJOYXY9Zi5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsxJmQmJkl0KCJtb3VzZW1vdmUiLGZ1bmN0aW9uKHYpe3JldHVybiBoLm9uTW91c2VN''@;'; put 'put ''b3ZlKHYpfSwwLFFmKSgibW91c2V1cCIsZnVuY3Rpb24odil7cmV0dXJuIGgub25Nb3VzZVVwKHYpfSwhMSxRZil9LG91dHB1dHM6e3Njcm9sbGVkVG9Cb3R0b206InNjcm9sbGVkVG9Cb3R0b20ifSxuZ0NvbnRlbnRTZWxlY3RvcnM6VTN0LGRlY2xzOjksdmFyczoxMyxjb25zdHM6W1sic2lk''@;'; put 'put ''ZWJhck5hdiIsIiJdLFsiaWQiLCJzaWRlYmFyTmF2Il0sWyJjbGFzcyIsImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHN1Yi1kcm9wZG93biIsNCwibmdJZiJdLFsiY2xhc3MiLCJwLTEwIiw0LCJuZ0lmIl0sWzEsIm5hdi1kaXZpZGVyIl0sWzEsIm5hdi10cmVlIiwzLCJzY3JvbGwi''@;'; put 'put ''XSxbMSwicmVzaXplLWhhbmRsZSIsMywibW91c2Vkb3duIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJzdWItZHJvcGRvd24iXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsMSwiZHJvcGRvd24tdG9nZ2xlIiwiYnRuIiwiYnRuLWxpbmsiXSxbInNoYXBlIiwiY2Fy''@;'; put 'put ''ZXQgZG93biJdLFs0LCJjbHJJZk9wZW4iXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdml5YS1hcGktZXhwbG9yZXIiLCJy''@;'; put 'put ''b3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbGluZWFnZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsi''@;'; put 'put ''LCIvdmlldy9tZXRhZGF0YSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2Iiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsNCwibmdJZiJdLFsiY2xyVmVydGljYWxOYXZM''@;'; put 'put ''aW5rIiwiIiwicm91dGVyTGluayIsIi9yZXZpZXcvYXBwcm92ZS9zdWJtaXR0ZWQiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIiw0LCJuZ0lmIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3Jldmlldy9hcHByb3ZlL3RvYXBwcm92ZSIsInJvdXRlckxpbmtB''@;'; put 'put ''Y3RpdmUiLCJhY3RpdmUiLDQsIm5nSWYiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLDMsImNsaWNrIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvdml5YS1hcGktZXhwbG9yZXIiLCJyb3V0ZXJMaW5r''@;'; put 'put ''QWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3ZpZXcvbGluZWFnZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy9tZXRhZGF0YSIsInJvdXRlckxp''@;'; put 'put ''bmtBY3RpdmUiLCJhY3RpdmUiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2Iiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdLFsiY2xyVmVydGljYWxOYXZMaW5rIiwiIiwicm91dGVyTGluayIsIi9yZXZpZXcvYXBwcm92ZS9zdWJtaXR0''@;'; put 'put ''ZWQiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL3Jldmlldy9hcHByb3ZlL3RvYXBwcm92ZSIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbMSwicC0xMCJdLFsiY2xyVGFiTGluayIsIiIsMSwidXNlci1u''@;'; put 'put ''YXYtYnRuIiwzLCJyb3V0ZXJMaW5rIl0sWzEsInplcm8tbWFyZ2luIl0sWyJzaGFwZSIsInVzZXIiXSxbInNoYXBlIiwidXNlcnMiXSxbNCwiY2xySWZBY3RpdmUiXSxbNCwibmdJZiJdLFsic2hhcGUiLCJibG9ja3MtZ3JvdXAiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRlckxp''@;'; put 'put ''bmsiLCIvaG9tZS90YWJsZXMiLCJyb3V0ZXJMaW5rQWN0aXZlIiwiYWN0aXZlIl0sWyJjbHJWZXJ0aWNhbE5hdkxpbmsiLCIiLCJyb3V0ZXJMaW5rIiwiL2hvbWUvZXhjZWwtbWFwcyIsInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiXSxbImNsclZlcnRpY2FsTmF2TGluayIsIiIsInJvdXRl''@;'; put 'put ''ckxpbmsiLCIvaG9tZS9tdWx0aS1sb2FkIiwicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpe2lmKDEmZCl7Y29uc3QgZj1TbigpO0hpKCksZ2UoMCwiY2xyLXZlcnRpY2FsLW5hdiIsMSwwKSxndCgyLHRwdCw2LDEsImRpdiIsMikoMyxvcHQsMTQs''@;'; put 'put ''NiwiY2xyLXRhYnMiLDMpKDQsYXB0LDYsMSwiZGl2IiwyKSxZdCg1LCJkaXYiLDQpLGdlKDYsImRpdiIsNSksSXQoInNjcm9sbCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGgub25UcmVlU2Nyb2xsKFMpKX0pLElyKDcpLG1lKCksZ2UoOCwic3BhbiIsNiksSXQoIm1vdXNlZG93biIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5yZXNpemVTdGFydCgpKX0pLG1lKCkoKX0yJmQmJihnZCgid2lkdGgiLGguc2lkZWJhcldpZHRoLCJweCIpKCJtYXgtd2lkdGgiLGguc2lkZWJhck1heFdpZHRoLCJweCIpLHByKCJjbG9zZWQiLCFoLnNpZGViYXJPcGVuKSgicmVzaXppbmci''@;'; put 'put ''LGgucmVzaXppbmcpLF9lKDIpLFJlKCJuZ0lmIixoLmlzTWFpblJvdXRlKCJ2aWV3IikpLF9lKCksUmUoIm5nSWYiLGguaXNNYWluUm91dGUoInZpZXcvdXNlcm5hdiIpKSxfZSgpLFJlKCJuZ0lmIixoLmlzTWFpblJvdXRlKCJob21lIikpLF9lKDQpLHByKCJyZXNpemluZyIsaC5yZXNpemlu''@;'; put 'put ''ZykpfSxkZXBlbmRlbmNpZXM6WyRpLFlhLElfLGtoLEVtLGttLFA4LFRtLHhtLEw4LEd1ZSwkdWUsdzQsSTgsUjgsazAselNdLHN0eWxlczpbIi5jbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYXYtbGluay5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dHJhbnNwYXJlbnR9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjcycHg7bWluLXdpZHRoOjI3MnB4O2hlaWdodDoxMDAlO21heC13aWR0aDozNzVweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMCA1cHggIzAwMDAwMDFmfWNsci12''@;'; put 'put ''ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLnN1bi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDozNnB4fWNsci12ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLm5hdi10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtvdmVy''@;'; put 'put ''Zmxvdy15OmF1dG99Y2xyLXZlcnRpY2FsLW5hdi5jbG9zZWRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0Oi0yNzJweH1jbHItdmVydGljYWwtbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZXNpemUtaGFuZGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0''@;'; put 'put ''b3A6MDtib3R0b206MDtyaWdodDotM3B4O2JvcmRlci1yaWdodDo0cHggc29saWQgIzgwYjQ0MTtjdXJzb3I6Y29sLXJlc2l6ZTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgLjFzIGVhc2UtaW4tb3V0fWNsci12ZXJ0aWNhbC1uYXZbX25nY29udGVudC0lQ09NUCVdICAgLnJlc2l6ZS1oYW5k''@;'; put 'put ''bGVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjV9Y2xyLXZlcnRpY2FsLW5hdltfbmdjb250ZW50LSVDT01QJV0gICAucmVzaXplLWhhbmRsZS5yZXNpemluZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfWNsci12ZXJ0aWNhbC1uYXYucmVzaXppbmdbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9Lm5hdi1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZDNkM2QzO21hcmdpbi1ib3R0b206MH0ucGFnZS10aXRsZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjA7Zm9u''@;'; put 'put ''dC1zaXplOjE4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Lnplcm8tbWFyZ2luW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MH0udXNlci1uYXYtYnRuW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjAgMnB4fSNzaWRlYmFyTmF2W19uZ2NvbnRlbnQtJUNPTVAlXXt6LWluZGV4OjIwMH1AbWVk''@;'; put 'put ''aWEgKG1heC13aWR0aDogNzY3cHgpeyNzaWRlYmFyTmF2W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt0b3A6MH19Il19KX19cmV0dXJuIGx9KSgpO2Z1bmN0aW9uIGxwdChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDEzKX1mdW5jdGlvbiBjcHQobCxj''@;'; put 'put ''KXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNvbiIsMTQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBoLmxpYnJhcmllc1NlYXJjaD0iIixidChoLmxpYnJhcnlPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIHVwdChsLGMpe2lm''@;'; put 'put ''KDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDgpKDEsImRpdiIsOSkoMiwiaW5wdXQiLDEwLDApLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYubGlicmFyaWVzU2VhcmNoLGgpfHwoZi5saWJyYXJpZXNT''@;'; put 'put ''ZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkubGlicmFyeU9uRmlsdGVyKCkpfSksbWUoKSxndCg0LGxwdCwxLDAsImNsci1pY29uIiwxMSkoNSxjcHQsMSwwLCJjbHItaWNvbiIsMTIpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2ko''@;'; put 'put ''MyksZD1OZSgpO19lKDIpLFlyKCJuZ01vZGVsIixkLmxpYnJhcmllc1NlYXJjaCksX2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBkcHQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwxMyl9ZnVuY3Rp''@;'; put 'put ''b24gaHB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDE0KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSksTmUoKTtjb25zdCBoPUdpKDMpLGY9TmUoMikuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gaC52YWx1ZT0iIixmLnNlYXJjaFN0cmluZz0iIixidCh2''@;'; put 'put ''LnRyZWVPbkZpbHRlcihmLCJ0YWJsZXMiKSl9KSxtZSgpfX1mdW5jdGlvbiBmcHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiw4KSgxLCJkaXYiLDkpKDIsImlucHV0IiwxOSwxKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29u''@;'; put 'put ''c3QgZj1OZSgyKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYuc2VhcmNoU3RyaW5nLGgpfHwoZi5zZWFyY2hTdHJpbmc9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkudHJlZU9uRmlsdGVyKGgsInRhYmxl''@;'; put 'put ''cyIpKX0pLG1lKCksZ3QoNCxkcHQsMSwwLCJjbHItaWNvbiIsMTEpKDUsaHB0LDEsMCwiY2xyLWljb24iLDEyKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDMpLGQ9TmUoMikuJGltcGxpY2l0O19lKDIpLFlyKCJuZ01vZGVsIixkLnNlYXJjaFN0cmluZyksX2UoMiksUmUoIm5nSWYiLGEu''@;'; put 'put ''dmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBwcHQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwyNil9ZnVuY3Rpb24gZ3B0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMjcpfWZ1bmN0aW9uIG1wdChsLGMpezEmbCYmKGdlKDAs''@;'; put 'put ''ImNsci10b29sdGlwLWNvbnRlbnQiLDI5KSgxLCJzcGFuIiksUGUoMiwiIFRvIHVubG9jayBhbGwgdGFibGVzLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIiksbWUoKSgpKX1mdW5jdGlvbiB2cHQobCxjKXsxJmwmJihWcigwKSxndCgxLG1wdCwzLDAsImNsci10b29sdGlw''@;'; put 'put ''LWNvbnRlbnQiLDI4KSxCcigpKX1mdW5jdGlvbiBfcHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdG9vbHRpcCIpKDEsImJ1dHRvbiIsMjEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLm5nVmFyLGY9TmUoKS4kaW1wbGljaXQsdj1OZSgyKS4kaW1w''@;'; put 'put ''bGljaXQsUz1OZSgpO3JldHVybiBidChoPyIiOlMub25UYWJsZUNsaWNrKGYsdikpfSksVnIoMiwyMiksZ3QoMyxwcHQsMSwwLCJjbHItaWNvbiIsMjMpKDQsZ3B0LDEsMCwiY2xyLWljb24iLDI0KSxCcigpLFBlKDUpLG1lKCksZ3QoNix2cHQsMiwwLCJuZy1jb250YWluZXIiLDI1KSxtZSgp''@;'; put 'put ''fWlmKDImbCl7Y29uc3QgYT1jLm5nVmFyLGQ9TmUoKS4kaW1wbGljaXQsaD1OZSgyKS4kaW1wbGljaXQsZj1OZSgpO19lKCkscHIoImRjLWxvY2tlZC1jb250cm9sIixhKSgiYWN0aXZlIixmLmxpYlRhYkFjdGl2ZShoLkxJQlJBUllSRUYsZCkpLF9lKCksUmUoIm5nU3dpdGNoIixkLmluY2x1''@;'; put 'put ''ZGVzKCItRkMiKSksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwhMCksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwhMSksX2UoKSxtcigiICIsZC5yZXBsYWNlKCItRkMiLCIiKSwiICIpLF9lKCksUmUoIm5nSWYiLGEpfX1mdW5jdGlvbiBicHQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdHJlZS1u''@;'; put 'put ''b2RlIiksZ3QoMSxfcHQsNyw5LCJjbHItdG9vbHRpcCIsMjApLG1lKCkpLDImbCl7Y29uc3QgYT1jLmluZGV4LGQ9TmUoMyk7X2UoKSxSZSgibmdWYXIiLGErMT5kLmxpY2VuY2VTdGF0ZS52YWx1ZS50YWJsZXNfaW5fbGlicmFyeV9saW1pdCl9fWZ1bmN0aW9uIHlwdChsLGMpe2lmKDEmbCl7''@;'; put 'put ''Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDE2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQsdj1OZSgpO3JldHVybiB2LnRyZWVOb2RlQ2xpY2tlZChoLGYpLGJ0KHYubGliPWYuTElCUkFSWVJFRil9KSxXcigiY2xyRXhwYW5k''@;'; put 'put ''ZWRDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYuZXhwYW5kZWQsaCl8fChmLmV4cGFuZGVkPWgpLGJ0KGgpfSksZ2UoMSwicCIsMTcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCkuJGltcGxpY2l0LGY9''@;'; put 'put ''TmUoKTtyZXR1cm4gZi5saWI9aC5MSUJSQVJZUkVGLGJ0KGYubGlicmFyeU9uQ2xpY2soaC5MSUJSQVJZUkVGLGgpKX0pLFl0KDIsImNsci1pY29uIiwxOCksUGUoMyksbWUoKSxndCg0LGZwdCw2LDMsImNsci10cmVlLW5vZGUiLDIpKDUsYnB0LDIsMSwiY2xyLXRyZWUtbm9kZSIsMyksbWUo''@;'; put 'put ''KX1pZigyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQ7cHIoImNsci1leHBhbmRlZCIsYS5leHBhbmRlZCksWXIoImNsckV4cGFuZGVkIixhLmV4cGFuZGVkKSxSZSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nVGFibGVzJiYhYS50YWJsZXMpLF9lKDMpLG1yKCIgIixhLkxJQlJBUllSRUYsIiAi''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIixhLnRhYmxlcyksX2UoKSxSZSgibmdGb3JPZiIsYS50YWJsZXMpfX1mdW5jdGlvbiB3cHQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLHlwdCw2LDcsImNsci10cmVlLW5vZGUiLDE1KSxCcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdJ''@;'; put 'put ''ZiIsIWEuaGlkZGVuKX19ZnVuY3Rpb24gQ3B0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwzMCkoMSwiZGl2IiwzMSkoMiwic3BhbiIsMzIpLFBlKDMsIiBMb2FkaW5nLi4uICIpLG1lKCkoKSgpKX1mdW5jdGlvbiBTcHQobCxjKXsxJmwmJihnZSgwLCJwIiwzNiksUGUoMSwiIFBsZWFzZSBzZWxl''@;'; put 'put ''Y3QgYSB0YWJsZSAiKSxtZSgpKX1mdW5jdGlvbiBNcHQobCxjKXsxJmwmJihnZSgwLCJwIiwzNiksUGUoMSwiIE5vIEVkaXRhYmxlIFRhYmxlcyBDb25maWd1cmVkICIpLG1lKCkpfWZ1bmN0aW9uIHhwdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMzMpLFl0KDEsImNsci1pY29uIiwzNCks''@;'; put 'put ''Z3QoMixTcHQsMiwwLCJwIiwzNSkoMyxNcHQsMiwwLCJwIiwzNSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMiksUmUoIm5nSWYiLChudWxsPT1hLnRyZWVOb2RlTGlicmFyaWVzP251bGw6YS50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPjApLF9lKCksUmUoIm5nSWYiLChudWxsPT1h''@;'; put 'put ''LnRyZWVOb2RlTGlicmFyaWVzP251bGw6YS50cmVlTm9kZUxpYnJhcmllcy5sZW5ndGgpPDEpfX1sZXQgRXB0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMpe3RoaXMucm91dGU9YSx0aGlzLnJvdXRlcj1kLHRoaXMubGljZW5jZVNlcnZpY2U9aCx0aGlzLmhlbHBlclNl''@;'; put 'put ''cnZpY2U9Zix0aGlzLmV2ZW50U2VydmljZT12LHRoaXMuc2FzU2VydmljZT1TLHRoaXMudHJlZU5vZGVMaWJyYXJpZXM9bnVsbCx0aGlzLmxpYnJhcmllc1NlYXJjaD0iIix0aGlzLmxpYj0iIix0aGlzLnRhYmxlPSIiLHRoaXMuZW5jb2Rpbmc9IlVURi04Iix0aGlzLmxvYWRpbmc9ITAsdGhp''@;'; put 'put ''cy5saWNlbmNlU3RhdGU9dGhpcy5saWNlbmNlU2VydmljZS5saWNlbmNlU3RhdGV9Y29sbGFwc2VMaWJyYXJ5SXRlbXMoYSxkKXthLmZvckVhY2goaD0+e2guTElCUkFSWUlEIT09ZC5MSUJSQVJZSUQmJihoLmV4cGFuZGVkPSExKX0pfXRyZWVOb2RlQ2xpY2tlZChhLGQpeyJDb2xsYXBzZSI9''@;'; put 'put ''PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyxkKX1saWJyYXJ5T25DbGljayhhLGQpe2QuZXhwYW5kZWQ9IWQuZXhwYW5kZWQsZC5leHBhbmRlZCYmIXRoaXMudGFibGUmJnRoaXMuc2VsZWN0TGlicmFyeShhLCExLGQpLHRoaXMuY29s''@;'; put 'put ''bGFwc2VMaWJyYXJ5SXRlbXModGhpcy5saWJyYXJpZXMsZCl9c2VsZWN0TGlicmFyeShhLGQsaCl7aC5sb2FkaW5nVGFibGVzPSEwO2xldCBmLHY9W107aWYodGhpcy5saWJzQW5kVGFibGVzJiYoZj10aGlzLmxpYnNBbmRUYWJsZXNbYV0sdGhpcy50YWJsZT12b2lkIDAsIlBsZWFzZSBzZWxl''@;'; put 'put ''Y3QgbGlicmFyeSIhPT1hKSl7bGV0IFM9Zi5maWx0ZXIoZnVuY3Rpb24oVil7cmV0dXJuLTE9PT12LmluZGV4T2YoVikmJih2LnB1c2goViksITApfSk7dGhpcy50YWJsZXM9UyxIbi5lZGl0b3IubGlicmFyaWVzPXRoaXMubGlicmFyaWVzfUhuLmVkaXRvci5saWJyYXJ5PWEsZHx8dGhpcy5j''@;'; put 'put ''bGVhckdsb2JhbHNGaWx0ZXIoKSxoLmxvYWRpbmdUYWJsZXM9ITEsaC5leHBhbmRlZD0hMH1zZWxlY3RUYWJsZShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aC5saWJUYWI9aC5saWIrIi4iK2gudGFibGUsaC5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksSG4uZWRp''@;'; put 'put ''dG9yLnRhYmxlPWEsZHx8aC5jbGVhckdsb2JhbHNGaWx0ZXIoKX0pKCl9Y2xlYXJHbG9iYWxzRmlsdGVyKCl7SG4uZWRpdG9yLmZpbHRlci5saWJkcz0iIixIbi5lZGl0b3IuZmlsdGVyLndoZXJlQ2xhdXNlPSIiLEhuLmVkaXRvci5maWx0ZXIuZ3JvdXBMb2dpYz0iIixIbi5lZGl0b3IuZmls''@;'; put 'put ''dGVyLmNsYXVzZXM9W10sSG4uZWRpdG9yLmZpbHRlci52YWxzPVtdLEhuLmVkaXRvci5maWx0ZXIuY29scz1bXX1saWJUYWJBY3RpdmUoYSxkKXtyZXR1cm4hKCF0aGlzLmxpYnx8IXRoaXMudGFibGUpJiZhPT09dGhpcy5saWImJmQ9PT10aGlzLnRhYmxlfXRyZWVPbkZpbHRlcihhLGQpe3Ro''@;'; put 'put ''aXMuaGVscGVyU2VydmljZS50cmVlT25GaWx0ZXIoYSxkKX1saWJyYXJ5T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMudHJlZU5vZGVMaWJyYXJpZXMsdGhpcy5saWJyYXJpZXNTZWFyY2gsIkxJQlJBUllSRUYiKSxIbi5saW5lYWdlLmxpYnJhcmll''@;'; put 'put ''c1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH1vblRhYmxlQ2xpY2soYSxkKXt0aGlzLnRhYmxlPWEsdGhpcy5saWI9ZC5MSUJSQVJZUkVGLHRoaXMuc2VsZWN0VGFibGUoYSksdGhpcy5lZGl0VGFibGUoKX1lZGl0VGFibGUoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3Iv''@;'; put 'put ''Iit0aGlzLmxpYisiLiIrdGhpcy50YWJsZSl9Z2V0TGlicmFyeVRhYmxlU3RhdGUoKXtpZihudWxsIT09SG4uZWRpdG9yLnRyZWVOb2RlTGlicmFyaWVzJiYodGhpcy50cmVlTm9kZUxpYnJhcmllcz1Ibi5lZGl0b3IudHJlZU5vZGVMaWJyYXJpZXMpLCIiIT09SG4uZWRpdG9yLmxpYnJhcnkp''@;'; put 'put ''e3RoaXMubGliPUhuLmVkaXRvci5saWJyYXJ5O2xldCBhPW51bGw7dGhpcy50cmVlTm9kZUxpYnJhcmllcyYmKGE9dGhpcy50cmVlTm9kZUxpYnJhcmllcy5maW5kKGQ9PmQuTElCUkFSWVJFRj09PXRoaXMubGliKSksdGhpcy5zZWxlY3RMaWJyYXJ5KEhuLmVkaXRvci5saWJyYXJ5LCEwLGEp''@;'; put 'put ''fX1nZXRGcm9tR2xvYmFscygpe3RoaXMubGlic0FuZFRhYmxlcz1Ibi5lZGl0b3IubGlic0FuZFRhYmxlcyx0aGlzLmxpYnJhcmllcz1Ibi5lZGl0b3IubGlicmFyaWVzLHRoaXMuZ2V0TGlicmFyeVRhYmxlU3RhdGUoKSx0aGlzLmxvYWRpbmc9ITF9bmdBZnRlckNvbnRlbnRJbml0KCl7SG4u''@;'; put 'put ''ZWRpdG9yLnN0YXJ0dXBTZXQ/dGhpcy5nZXRGcm9tR2xvYmFscygpOnRoaXMuZXZlbnRTZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5nZXRGcm9tR2xvYmFscygpfSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8''@;'; put 'put ''bCkoSmUoSnMpLEplKE9jKSxKZShBMCksSmUoZXUpLEplKERsKSxKZSh2YSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siaG9tZS1jb21wb25lbnQiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjgsdmFyczo0LGNvbnN0''@;'; put 'put ''czpbWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQtYmxvY2siXSxbImNsYXNzIiwic3Bpbm5lci13cmFw''@;'; put 'put ''cGVyLWZ1bGxwYWdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIiw0LCJuZ0lmIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImNscklucHV0IiwiIiwiYXBwU3RlYWxGb2N1cyIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVz''@;'; put 'put ''IiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFw''@;'; put 'put ''ZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxb''@;'; put 'put ''MSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIlRhYmxlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENo''@;'; put 'put ''YW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFs0LCJuZ1ZhciJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFszLCJuZ1N3aXRjaCJdLFsic2hhcGUiLCJib2x0Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInNoYXBlIiwidGFibGUiLDQsIm5n''@;'; put 'put ''U3dpdGNoQ2FzZSJdLFs0LCJuZ0lmIl0sWyJzaGFwZSIsImJvbHQiXSxbInNoYXBlIiwidGFibGUiXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IiwiY2xyU2l6ZSIsImxnIiw0LCJjbHJJZk9wZW4iXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IiwiY2xyU2l6ZSIsImxnIl0s''@;'; put 'put ''WzEsInNwaW5uZXItd3JhcHBlci1mdWxscGFnZSJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNsYXNz''@;'; put 'put ''IiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSBtdC0xMCIsImNkcy10ZXh0Iiwic2VjdGlvbiIsNCwibmdJZiJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIiwxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiLCJtdC0xMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImFwcC1z''@;'; put 'put ''aWRlYmFyIikoMSwiY2xyLXRyZWUiKSxndCgyLHVwdCw2LDMsImNsci10cmVlLW5vZGUiLDIpKDMsd3B0LDIsMSwibmctY29udGFpbmVyIiwzKSxtZSgpKCksZ2UoNCwiZGl2Iiw0KSg1LCJkaXYiLDUpLGd0KDYsQ3B0LDQsMCwiZGl2Iiw2KSg3LHhwdCw0LDIsImRpdiIsNyksbWUoKSgpKSwy''@;'; put 'put ''JmQmJihfZSgyKSxSZSgibmdJZiIsKG51bGw9PWgudHJlZU5vZGVMaWJyYXJpZXM/bnVsbDpoLnRyZWVOb2RlTGlicmFyaWVzLmxlbmd0aCk+MCksX2UoKSxSZSgibmdGb3JPZiIsaC50cmVlTm9kZUxpYnJhcmllcyksX2UoMyksUmUoIm5nSWYiLGgubG9hZGluZyksX2UoKSxSZSgibmdJZiIs''@;'; put 'put ''IWgubG9hZGluZykpfSxkZXBlbmRlbmNpZXM6W3VsLF9hLHVhLEFkLEgxLHk0LFlhLGwwLGtoLEVkLEY4LEg4LE44LHNwLFZzLCRpLHdoLHAzLGh5LG9wXSxzdHlsZXM6WyJjbHItdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUt''@;'; put 'put ''c3BhY2U6bm93cmFwfS5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtwYWRkaW5nOjB9Lm5vLXRhYmxlLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJX0gIGNsci1pY29uLmlzLWJsdWUsICAgY2xyLWljb24u''@;'; put 'put ''aXMtaW5mb3tmaWxsOiM2YTkyMzV9LnNwaW5uZXItd3JhcHBlci1mdWxscGFnZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Il19KX19cmV0dXJuIGx9KSgpO2Nv''@;'; put 'put ''bnN0IFRwdD1sPT57Zm9yKGNvbnN0IGMgaW4gbClpZigiX19yb3dOdW1fXyIhPT1jKXJldHVybiExO3JldHVybiEwfSxsSj1sPT57Y29uc3QgYT1sLm1hdGNoKC9SXFsoXGQrKVxdQ1xbKFxkKylcXS8pO3JldHVybiBhP3tyb3c6cGFyc2VJbnQoYVsxXSwxMCksY29sdW1uOnBhcnNlSW50KGFb''@;'; put 'put ''Ml0sMTApfTpudWxsfSx2NGU9KGwsYyk9PntpZihsLnN0YXJ0c1dpdGgoIkFCU09MVVRFICIpJiYobD1sLnJlcGxhY2UoIkFCU09MVVRFICIsIiIpKSxsLnN0YXJ0c1dpdGgoIlJFTEFUSVZFICIpKXtjb25zdCBhPWxKKGwpO2lmKGEpe2NvbnN0e3JvdzpkLGNvbHVtbjpofT1hO2w9VmMudXRp''@;'; put 'put ''bHMuZW5jb2RlX2NlbGwoe3I6ZC0xLGM6aC0xfSl9fWlmKGwuc3RhcnRzV2l0aCgiTUFUQ0ggIikpe2xldCBhPSIiO2NvbnN0IGQ9bC5tYXRjaCgvQ1xbXGQrXF06KC4rKS8pO2QmJihhPWRbMV0pO2NvbnN0IGY9bC5zcGxpdCgiICIpWzFdO2xldCB2PSIiLFM9LTEsVj0iIjtpZihpc05hTihO''@;'; put 'put ''dW1iZXIoZikpP3Y9ZjpTPXBhcnNlSW50KGYpLC0xIT09Uyl7Y29uc3QgcGU9Y1tTLTFdO2Zvcihjb25zdCBDZSBpbiBwZSlpZigiX19yb3dOdW1fXyIhPT1DZSYmcGVbQ2VdPT09YSl7Vj1DZStTO2JyZWFrfX1lbHNlIGZvcihsZXQgcGU9MDtwZTxjLmxlbmd0aDtwZSsrKWlmKGNbcGVdW3Zd''@;'; put 'put ''PT09YSl7Vj12KyhwZSsxKTticmVha31jb25zdCBRPVZjLnV0aWxzLmRlY29kZV9jZWxsKFYpLGRlPWxKKGwpO2lmKGRlKXtjb25zdHtyb3c6cGUsY29sdW1uOkNlfT1kZTtsPVZjLnV0aWxzLmVuY29kZV9jZWxsKHtyOlEucitwZSxjOlEuYytDZX0pfX1yZXR1cm4gbH0sQXB0PVsiZmlsZVVw''@;'; put 'put ''bG9hZElucHV0Il07ZnVuY3Rpb24gRHB0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwyOCksWXQoMSwiY2xyLXNwaW5uZXIiLDI5KSxtZSgpKX1mdW5jdGlvbiBJcHQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwzMCl9ZnVuY3Rpb24gUnB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2Uo''@;'; put 'put ''MCwiY2xyLWljb24iLDMxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpO3JldHVybiBoLnNlYXJjaFN0cmluZz0iIixidChoLnhsbWFwTGlzdE9uRmlsdGVyKCkpfSksbWUoKX19ZnVuY3Rpb24gTHB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2Uo''@;'; put 'put ''MSwiY2xyLXRyZWUtbm9kZSIpKDIsImJ1dHRvbiIsMzIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS54bG1hcE9uQ2xpY2soaCkpfSksWXQoMywiY2xyLWljb24iLDMzKSxQZSg0KSxtZSgpKCksQnIoKX1pZigyJmwpe2NvbnN0''@;'; put 'put ''IGE9Yy4kaW1wbGljaXQsZD1OZSgpO19lKDIpLHByKCJhY3RpdmUiLGQuaXNBY3RpdmVYTE1hcChhLmlkKSksX2UoMiksbXIoIiAiLGEuaWQsIiAiKX19ZnVuY3Rpb24gT3B0KGwsYyl7MSZsJiYoZ2UoMCwicCIsMzcpLFBlKDEsIiBQbGVhc2Ugc2VsZWN0IGEgbWFwICIpLG1lKCkpfWZ1bmN0''@;'; put 'put ''aW9uIFBwdChsLGMpezEmbCYmKGdlKDAsInAiLDM3KSxQZSgxLCIgTm8gZXhjZWwgbWFwIGlzIGZvdW5kICIpLG1lKCkpfWZ1bmN0aW9uIEZwdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMzQpLFl0KDEsImNsci1pY29uIiwzNSksZ3QoMixPcHQsMiwwLCJwIiwzNikoMyxQcHQsMiwwLCJw''@;'; put 'put ''IiwzNiksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMiksUmUoIm5nSWYiLGEueGxtYXBzLmxlbmd0aD4wKSxfZSgpLFJlKCJuZ0lmIixhLnhsbWFwcy5sZW5ndGg8MSl9fWZ1bmN0aW9uIE5wdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMzgpKDEsInNwYW4iLDM5KSxQZSgyLCIgTG9h''@;'; put 'put ''ZGluZy4uLiAiKSxtZSgpLGdlKDMsImRpdiIpKDQsImg0IiksUGUoNSksbWUoKSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDUpLGxyKGEuaXNMb2FkaW5nRGVzYyl9fWZ1bmN0aW9uIEhwdChsLGMpezEmbCYmWXQoMCwiY2xyLXRhYi1jb250ZW50Iil9ZnVuY3Rpb24gVnB0KGwsYyl7MSZs''@;'; put 'put ''JiZZdCgwLCJjbHItdGFiLWNvbnRlbnQiKX1mdW5jdGlvbiBCcHQobCxjKXsxJmwmJnpsKDApfWZ1bmN0aW9uIGpwdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNDApLEl0KCJmaWxlRHJhZ2dlZE92ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25T''@;'; put 'put ''aG93VXBsb2FkTW9kYWwoKSl9KSxnZSgxLCJjbHItdGFicyIpKDIsImNsci10YWIiKSgzLCJidXR0b24iLDQxKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpO3JldHVybiBidChoLnNlbGVjdGVkVGFiPWguVGFic0VudW0uUnVsZXMpfSksUGUoNCwiUnVsZXMiKSxt''@;'; put 'put ''ZSgpLGd0KDUsSHB0LDEsMCwiY2xyLXRhYi1jb250ZW50Iiw0MiksbWUoKSxnZSg2LCJjbHItdGFiIikoNywiYnV0dG9uIiw0MSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKTtyZXR1cm4gYnQoaC5zZWxlY3RlZFRhYj1oLlRhYnNFbnVtLkRhdGEpfSksUGUoOCwi''@;'; put 'put ''RGF0YSIpLG1lKCksZ3QoOSxWcHQsMSwwLCJjbHItdGFiLWNvbnRlbnQiLDQyKSxtZSgpKCksZ3QoMTAsQnB0LDEsMCwibmctY29udGFpbmVyIiw0MyksZ2UoMTEsImRpdiIsNDQpKDEyLCJoMyIsNDUpLFBlKDEzKSxtZSgpLGdlKDE0LCJpIiw0NSksUGUoMTUpLG1lKCksZ2UoMTYsImg1Iiw0''@;'; put 'put ''NSksUGUoMTcsIiBSdWxlcyBTb3VyY2U6ICIpLGdlKDE4LCJhIiw0NiksUGUoMTkpLG1lKCkoKSxnZSgyMCwiaDUiLDQ1KSxQZSgyMSwiIFRhcmdldCBkYXRhc2V0OiAiKSxnZSgyMiwiYSIsNDYpLFBlKDIzKSxtZSgpKCkoKSxnZSgyNCwiZGl2Iiw0NyksWXQoMjUsImhvdC10YWJsZSIsNDgp''@;'; put 'put ''LG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoKSxkPUdpKDQxKTtfZSg1KSxSZSgiY2xySWZBY3RpdmUiLGEuc2VsZWN0ZWRUYWI9PT1hLlRhYnNFbnVtLlJ1bGVzKSxfZSg0KSxSZSgiY2xySWZBY3RpdmUiLGEuc2VsZWN0ZWRUYWI9PT1hLlRhYnNFbnVtLkRhdGEpLF9lKCksUmUoIm5nVGVt''@;'; put 'put ''cGxhdGVPdXRsZXQiLGQpLF9lKDMpLG1yKCIgIixhLnNlbGVjdGVkWExNYXAuaWQsIiAiKSxfZSgyKSxscihhLnNlbGVjdGVkWExNYXAuZGVzY3JpcHRpb24pLF9lKDMpLFJlKCJyb3V0ZXJMaW5rIiwiL3ZpZXcvZGF0YS8iK2EucnVsZXNTb3VyY2UpLF9lKCksbXIoIiAiLGEucnVsZXNTb3Vy''@;'; put 'put ''Y2UsIiAiKSxfZSgzKSxSZSgicm91dGVyTGluayIsIi92aWV3L2RhdGEvIithLnNlbGVjdGVkWExNYXAudGFyZ2V0RFMpLF9lKCksbXIoIiAiLGEuc2VsZWN0ZWRYTE1hcC50YXJnZXREUywiICIpLF9lKDIpLFJlKCJtdWx0aUNvbHVtblNvcnRpbmciLCEwKSgidmlld3BvcnRSb3dSZW5kZXJp''@;'; put 'put ''bmdPZmZzZXQiLDUwKSgiZGF0YSIsYS5zZWxlY3RlZFRhYj09PWEuVGFic0VudW0uUnVsZXM/YS54bG1hcFJ1bGVzOmEueGxEYXRhKSgiY29sSGVhZGVycyIsYS5zZWxlY3RlZFRhYj09PWEuVGFic0VudW0uUnVsZXM/YS54bG1hcFJ1bGVzSGVhZGVyczphLnhsVXBsb2FkSGVhZGVyKSgiY29s''@;'; put 'put ''dW1ucyIsYS5zZWxlY3RlZFRhYj09PWEuVGFic0VudW0uUnVsZXM/YS54bG1hcFJ1bGVzQ29sdW1uczphLnhsVXBsb2FkQ29sdW1ucykoImZpbHRlcnMiLCEwKSgiaGVpZ2h0IiwiMTAwJSIpKCJhZnRlckdldENvbEhlYWRlciIsYS5hZnRlckdldENvbEhlYWRlcikoIm1vZGlmeUNvbFdpZHRo''@;'; put 'put ''IixhLm1heFdpZHRoQ2hlY2tlcikoImNlbGxzIixhLmdldENlbGxDb25maWd1cmF0aW9uKSgibWF4Um93cyIsYS5ob3RUYWJsZU1heFJvd3MpKCJtYW51YWxDb2x1bW5SZXNpemUiLCEwKSgicm93SGVhZGVycyIsYS5yb3dIZWFkZXJzKSgicm93SGVhZGVyV2lkdGgiLDE1KSgicm93SGVpZ2h0''@;'; put 'put ''cyIsMjApKCJsaWNlbnNlS2V5IixhLmhvdFRhYmxlTGljZW5zZUtleSl9fWZ1bmN0aW9uIHpwdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNTEpKDEsImJ1dHRvbiIsNTIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikub25TaG93VXBs''@;'; put 'put ''b2FkTW9kYWwoKSl9KSxZdCgyLCJjbHItaWNvbiIsNTMpLGdlKDMsInNwYW4iKSxQZSg0LCJVcGxvYWQiKSxtZSgpKCkoKX19ZnVuY3Rpb24gVXB0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw1MSkoMSwiYnV0dG9uIiw1MiksSXQoImNsaWNrIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBfdChhKSxidChOZSgyKS5zdWJtaXRFeGNlbCgpKX0pLFl0KDIsImNsci1pY29uIiw1MyksZ2UoMywic3BhbiIpLFBlKDQsIlN1Ym1pdCIpLG1lKCkoKSgpfX1mdW5jdGlvbiBacHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDUxKSgxLCJidXR0b24iLDU0KSxJ''@;'; put 'put ''dCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLmRpc2NhcmRFeHRyYWN0ZWREYXRhKCkpfSksWXQoMiwiY2xyLWljb24iLDU1KSxnZSgzLCJzcGFuIiksUGUoNCwiRGlzY2FyZCIpLG1lKCkoKSgpfX1mdW5jdGlvbiBZcHQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYi''@;'; put 'put ''LDQ5KSxndCgxLHpwdCw1LDAsImRpdiIsNTApKDIsVXB0LDUsMCwiZGl2Iiw1MCkoMyxacHQsNSwwLCJkaXYiLDUwKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0lmIixhLnN0YXR1cz09PWEuU3RhdHVzRW51bS5SZWFkeVRvVXBsb2FkKSxfZSgpLFJlKCJuZ0lmIixhLnN0''@;'; put 'put ''YXR1cz09PWEuU3RhdHVzRW51bS5SZWFkeVRvU3VibWl0KSxfZSgpLFJlKCJuZ0lmIixhLnN0YXR1cz09PWEuU3RhdHVzRW51bS5SZWFkeVRvU3VibWl0KX19dmFyIG8yPWZ1bmN0aW9uKGwpe3JldHVybiBsW2wuTm9NYXBTZWxlY3RlZD0wXT0iTm9NYXBTZWxlY3RlZCIsbFtsLkZldGNoaW5n''@;'; put 'put ''UnVsZXM9MV09IkZldGNoaW5nUnVsZXMiLGxbbC5SZWFkeVRvVXBsb2FkPTJdPSJSZWFkeVRvVXBsb2FkIixsW2wuRXh0cmFjdGluZ0RhdGE9M109IkV4dHJhY3RpbmdEYXRhIixsW2wuUmVhZHlUb1N1Ym1pdD00XT0iUmVhZHlUb1N1Ym1pdCIsbFtsLlN1Ym1pdHRpbmdFeHRyYWN0ZWREYXRh''@;'; put 'put ''PTVdPSJTdWJtaXR0aW5nRXh0cmFjdGVkRGF0YSIsbFtsLlN1Ym1pdHRpbmc9Nl09IlN1Ym1pdHRpbmciLGx9KG8yfHx7fSksZnk9ZnVuY3Rpb24obCl7cmV0dXJuIGxbbC5SdWxlcz0wXT0iUnVsZXMiLGxbbC5EYXRhPTFdPSJEYXRhIixsfShmeXx8e30pO2xldCBfNGU9KCgpPT57Y2xhc3Mg''@;'; put 'put ''bHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWKXt0aGlzLmV2ZW50U2VydmljZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9ZCx0aGlzLmxvZ2dlclNlcnZpY2U9aCx0aGlzLnJvdXRlPWYsdGhpcy5yb3V0ZXI9dix0aGlzLnNhc1N0b3JlU2VydmljZT1TLHRoaXMuc2FzU2VydmljZT1WLHRoaXMu''@;'; put 'put ''Y29udGVudENvbnRhaW5lckNsYXNzPSEwLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3Q9bmV3IHgxLHRoaXMuU3RhdHVzRW51bT1vMix0aGlzLlRhYnNFbnVtPWZ5LHRoaXMuc2VsZWN0ZWRUYWI9ZnkuUnVsZXMsdGhpcy5ydWxlc1NvdXJjZT1Ibi5kY0xpYisiLk1QRV9YTE1BUF9SVUxF''@;'; put 'put ''UyIsdGhpcy54bG1hcHM9W10sdGhpcy5zZWxlY3RlZFhMTWFwPXZvaWQgMCx0aGlzLnNlYXJjaFN0cmluZz0iIix0aGlzLnhsbWFwc0xvYWRpbmc9ITAsdGhpcy5pc0xvYWRpbmc9ITEsdGhpcy5pc0xvYWRpbmdEZXNjPSIiLHRoaXMuc3RhdHVzPW8yLk5vTWFwU2VsZWN0ZWQsdGhpcy54bG1h''@;'; put 'put ''cFJ1bGVzSGVhZGVycz1bIlhMTUFQX1NIRUVUIiwiWExNQVBfUkFOR0VfSUQiLCJYTE1BUF9TVEFSVCIsIlhMTUFQX0ZJTklTSCJdLHRoaXMueGxtYXBSdWxlc0NvbHVtbnM9W3tkYXRhOiJYTE1BUF9TSEVFVCJ9LHtkYXRhOiJYTE1BUF9SQU5HRV9JRCJ9LHtkYXRhOiJYTE1BUF9TVEFSVCJ9''@;'; put 'put ''LHtkYXRhOiJYTE1BUF9GSU5JU0gifV0sdGhpcy54bG1hcFJ1bGVzPVtdLHRoaXMueGxVcGxvYWRIZWFkZXI9WyJYTE1BUF9SQU5HRV9JRCIsIlJPV19OTyIsIkNPTF9OTyIsIlZBTFVFX1RYVCJdLHRoaXMueGxVcGxvYWRDb2x1bW5zPVt7ZGF0YToiWExNQVBfUkFOR0VfSUQifSx7ZGF0YToi''@;'; put 'put ''Uk9XX05PIn0se2RhdGE6IkNPTF9OTyJ9LHtkYXRhOiJWQUxVRV9UWFQifV0sdGhpcy54bERhdGE9W10sdGhpcy5zaG93VXBsb2FkTW9kYWw9ITEsdGhpcy5oYXNCYXNlRHJvcFpvbmVPdmVyPSExLHRoaXMuZmlsZW5hbWU9IiIsdGhpcy5zdWJtaXRMaW1pdE5vdGljZT0hMSx0aGlzLnVwbG9h''@;'; put 'put ''ZGVyPW5ldyBqWCx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLmhvdFRhYmxlTGljZW5zZUtleT12b2lkIDAsdGhpcy5ob3RUYWJsZU1heFJvd3M9dGhpcy5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZHx8MS8wfWFm''@;'; put 'put ''dGVyR2V0Q29sSGVhZGVyKGEsZCl7ZC5jbGFzc0xpc3QuYWRkKEhuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9eGxtYXBPbkNsaWNrKGEpe2EuaWQhPT10aGlzLnNlbGVjdGVkWExNYXA/LmlkJiYodGhpcy5zZWxlY3RlZFhMTWFwPWEsdGhpcy54bERhdGE9W10sdGhpcy5m''@;'; put 'put ''aWxlbmFtZT0iIix0aGlzLnVwbG9hZGVyLnF1ZXVlPVtdLHRoaXMuZmlsZVVwbG9hZElucHV0Q29tcExpc3QuZmlyc3QmJih0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQudmFsdWU9IiIpLHRoaXMuc2VsZWN0ZWRUYWI9ZnkuUnVsZXMsdGhpcy52aWV3''@;'; put 'put ''WExNYXBSdWxlcygpLHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9ob21lL2V4Y2VsLW1hcHMvIithLmlkKSl9eGxtYXBMaXN0T25GaWx0ZXIoKXt0aGlzLnhsbWFwcz10aGlzLnNlYXJjaFN0cmluZy5sZW5ndGg+MD9Ibi54bG1hcHMuZmlsdGVyKGQ9PmQuaWQudG9Mb3dlckNhc2UoKS5p''@;'; put 'put ''bmNsdWRlcyh0aGlzLnNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKSk6SG4ueGxtYXBzfWlzQWN0aXZlWExNYXAoYSl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRYTE1hcD8uaWQ9PT1hfW1heFdpZHRoQ2hlY2tlcihhLGQpe3JldHVybiBhPjIwMD8yMDA6YX1nZXRDZWxsQ29uZmlndXJhdGlvbigp''@;'; put 'put ''e3JldHVybntyZWFkT25seTohMH19cm93SGVhZGVycygpe3JldHVybiIgIn1vblNob3dVcGxvYWRNb2RhbCgpe3RoaXMuc2hvd1VwbG9hZE1vZGFsPSEwfWZpbGVPdmVyQmFzZShhKXt0aGlzLmhhc0Jhc2VEcm9wWm9uZU92ZXI9YX1nZXRGaWxlRGVzYyhhLGQ9ITEpe3ZhciBoPXRoaXM7Y29u''@;'; put 'put ''c3QgZj1kP2FbMF06YS50YXJnZXQuZmlsZXNbMF07aWYoIWYpcmV0dXJuO2NvbnN0IHY9Zi5uYW1lO2lmKHRoaXMuZmlsZW5hbWU9diwieGxzIj09PXYuc2xpY2Uodi5sYXN0SW5kZXhPZigiLiIpKzEsdi5sYXN0SW5kZXhPZigiLiIpKzQpLnRvTG93ZXJDYXNlKCkpe3RoaXMuc2hvd1VwbG9h''@;'; put 'put ''ZE1vZGFsPSExLHRoaXMuaXNMb2FkaW5nPSEwLHRoaXMuaXNMb2FkaW5nRGVzYz0iRXh0cmFjdGluZyBEYXRhIix0aGlzLnN0YXR1cz1vMi5FeHRyYWN0aW5nRGF0YTtjb25zdCBWPW5ldyBGaWxlUmVhZGVyO1Yub25sb2FkPWZ1bmN0aW9uKCl7dmFyIFE9WShmdW5jdGlvbiooZGUpe2NvbnN0''@;'; put 'put ''IHBlPShsPT57Y29uc3QgYz1uZXcgVWludDhBcnJheShsKTtsZXQgYT0iIjtjb25zdCBkPWMuYnl0ZUxlbmd0aDtmb3IobGV0IGg9MDtoPGQ7aCsrKWErPVN0cmluZy5mcm9tQ2hhckNvZGUoY1toXSk7cmV0dXJuIGF9KShkZS50YXJnZXQucmVzdWx0KTtsZXQgQ2U7Y29uc3QgT2U9e3R5cGU6''@;'; put 'put ''ImJpbmFyeSIsY2VsbERhdGVzOiExLGNlbGxGb3JtdWxhOiEwLGNlbGxTdHlsZXM6ITAsY2VsbE5GOiExLGNlbGxUZXh0OiExfTt0cnl7Q2U9VmMucmVhZChwZSx7Li4uT2V9KX1jYXRjaChZZSl7aC5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCxZZSx2b2lkIDAsIkVycm9yIHJl''@;'; put 'put ''YWRpbmcgZmlsZSIpfWlmKCFDZSlyZXR1cm4gaC5pc0xvYWRpbmc9ITEsaC5pc0xvYWRpbmdEZXNjPSIiLGguc3RhdHVzPW8yLlJlYWR5VG9VcGxvYWQsdm9pZCBoLnVwbG9hZGVyLnF1ZXVlLnBvcCgpO2guZXh0cmFjdERhdGEoQ2UpfSk7cmV0dXJuIGZ1bmN0aW9uKGRlKXtyZXR1cm4gUS5h''@;'; put 'put ''cHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFYucmVhZEFzQXJyYXlCdWZmZXIoZil9ZWxzZSB0aGlzLmlzTG9hZGluZz0hMSx0aGlzLmlzTG9hZGluZ0Rlc2M9IiIsdGhpcy5zdGF0dXM9bzIuUmVhZHlUb1VwbG9hZCx0aGlzLnNob3dVcGxvYWRNb2RhbD0hMCx0aGlzLnVwbG9hZGVyLnF1ZXVl''@;'; put 'put ''LnBvcCgpLHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsJ0ludmFsaWQgZmlsZSB0eXBlICI8Yj4nK3RoaXMuZmlsZW5hbWUrJzwvYj4iLiBQbGVhc2UgdXBsb2FkIGV4Y2VsIGZpbGUuJyl9ZGlzY2FyZEV4dHJhY3RlZERhdGEoKXt0aGlzLmlzTG9hZGluZz0hMSx0aGlz''@;'; put 'put ''LmlzTG9hZGluZ0Rlc2M9IiIsdGhpcy5zdGF0dXM9bzIuUmVhZHlUb1VwbG9hZCx0aGlzLnhsRGF0YT1bXSx0aGlzLnNlbGVjdGVkVGFiPWZ5LlJ1bGVzLHRoaXMuZmlsZW5hbWU9IiIsdGhpcy51cGxvYWRlci5xdWV1ZT1bXSx0aGlzLmZpbGVVcGxvYWRJbnB1dENvbXBMaXN0LmZpcnN0JiYo''@;'; put 'put ''dGhpcy5maWxlVXBsb2FkSW5wdXRDb21wTGlzdC5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlPSIiKX1zdWJtaXRFeGNlbCgpe3RoaXMubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0PT09MS8wP3RoaXMuc3VibWl0KCk6dGhpcy5zdWJtaXRMaW1pdE5vdGljZT0hMH1zdWJt''@;'; put 'put ''aXQoKXtpZighdGhpcy5zZWxlY3RlZFhMTWFwfHwhdGhpcy54bERhdGEubGVuZ3RoKXJldHVybjt0aGlzLnN0YXR1cz1vMi5TdWJtaXR0aW5nLHRoaXMuaXNMb2FkaW5nPSEwLHRoaXMuaXNMb2FkaW5nRGVzYz0iU3VibWl0dGluZyBleHRyYWN0ZWQgZGF0YSI7Y29uc3QgYT1bXTtmb3IoY29u''@;'; put 'put ''c3QgUyBvZiB0aGlzLnVwbG9hZGVyLnF1ZXVlKWEucHVzaCh7ZmlsZTpTLGZpbGVOYW1lOlMubmFtZX0pO2NvbnN0IGQ9T2JqZWN0LmtleXModGhpcy54bERhdGFbMF0pLmpvaW4oIiwiKSsiXG4iK3RoaXMueGxEYXRhLnNsaWNlKDAsdGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jv''@;'; put 'put ''d3NfbGltaXQpLm1hcChTPT5PYmplY3QudmFsdWVzKFMpLmpvaW4oIiwiKSkuam9pbigiXG4iKSxoPW5ldyBCbG9iKFtkXSx7dHlwZToiYXBwbGljYXRpb24vY3N2In0pLGY9aUooaCx0aGlzLmZpbGVuYW1lKyIuY3N2Iik7YS5wdXNoKHtmaWxlOmYsZmlsZU5hbWU6Zi5uYW1lfSksdGhpcy5z''@;'; put 'put ''YXNTZXJ2aWNlLnVwbG9hZEZpbGUoInNlcnZpY2VzL2VkaXRvcnMvbG9hZGZpbGUiLGEse3RhYmxlOnRoaXMuc2VsZWN0ZWRYTE1hcC50YXJnZXREU30pLnRoZW4oUz0+e2lmKFMuYWRhcHRlclJlc3BvbnNlLnNhc2pzQWJvcnQpe2NvbnN0IFY9Uy5hZGFwdGVyUmVzcG9uc2U7dGhpcy5ldmVu''@;'; put 'put ''dFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoIiIsVi5zYXNqc0Fib3J0WzBdLk1TRyx7U1lTV0FSTklOR1RFWFQ6Vi5TWVNXQVJOSU5HVEVYVCxTWVNFUlJPUlRFWFQ6Vi5TWVNFUlJPUlRFWFQsTUFDOlYuc2FzanNBYm9ydFswXS5NQUN9KX1lbHNlIFMuYWRhcHRlclJlc3BvbnNlLnNhc3BhcmFt''@;'; put 'put ''cyYmdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrUy5hZGFwdGVyUmVzcG9uc2Uuc2FzcGFyYW1zWzBdLkRTSUQpfSkuY2F0Y2goUz0+e3RoaXMuZXZlbnRTZXJ2aWNlLmNhdGNoUmVzcG9uc2VFcnJvcigiZmlsZSB1cGxvYWQiLFMucmVzcG9uc2UpfSkuZmluYWxseSgoKT0+''@;'; put 'put ''e3RoaXMuc3RhdHVzPW8yLlJlYWR5VG9TdWJtaXQsdGhpcy5pc0xvYWRpbmc9ITEsdGhpcy5pc0xvYWRpbmdEZXNjPSIifSl9ZXh0cmFjdERhdGEoYSl7Y29uc3QgZD1bXTt0aGlzLnhsbWFwUnVsZXMuZm9yRWFjaChoPT57bGV0IGY9aC5YTE1BUF9TSEVFVDtpZihmLnN0YXJ0c1dpdGgoIi8i''@;'; put 'put ''KSl7Y29uc3QgT2U9Zi5zcGxpdCgiLyIpWzFdLFllPXBhcnNlSW50KE9lKS0xO2Y9YS5TaGVldE5hbWVzW1llXX1jb25zdCB2PWEuU2hlZXRzW2ZdLFM9VmMudXRpbHMuc2hlZXRfdG9fanNvbih2LHtyYXc6ITAsaGVhZGVyOiJBIixibGFua3Jvd3M6ITB9KSxWPXY0ZShoLlhMTUFQX1NUQVJU''@;'; put 'put ''LFMpLFE9KChsLGMsYSk9PntpZigiIj09PWMpcmV0dXJuIGw7aWYoYy5zdGFydHNXaXRoKCJBQlNPTFVURSAiKSYmKGM9Yy5yZXBsYWNlKCJBQlNPTFVURSAiLCIiKSksYy5zdGFydHNXaXRoKCJSRUxBVElWRSAiKSl7Y29uc3QgZD1sSihjKTtpZihkKXtjb25zdHtyb3c6aCxjb2x1bW46Zn09''@;'; put 'put ''ZCx7cjp2LGM6U309VmMudXRpbHMuZGVjb2RlX2NlbGwobCk7Yz1WYy51dGlscy5lbmNvZGVfY2VsbCh7cjp2K2gsYzpTK2Z9KX19aWYoYy5zdGFydHNXaXRoKCJNQVRDSCAiKSYmKGM9djRlKGMsYSkpLCJMQVNURE9XTiI9PT1jKXtjb25zdHtyOmQsYzpofT1WYy51dGlscy5kZWNvZGVfY2Vs''@;'; put 'put ''bChsKSxmPVZjLnV0aWxzLmVuY29kZV9jb2woaCk7bGV0IHY9ZDtmb3IobGV0IFM9ZCsxO1M8YS5sZW5ndGgmJmFbU11bZl07UysrKXY9UztjPWYrKHYrMSl9aWYoIkJMQU5LUk9XIj09PWMpe2NvbnN0e3I6ZH09VmMudXRpbHMuZGVjb2RlX2NlbGwobCk7bGV0IGg9ZDtmb3IobGV0IFY9ZCsx''@;'; put 'put ''O1Y8YS5sZW5ndGgmJiFUcHQoYVtWXSk7VisrKWg9VjtjPU9iamVjdC5rZXlzKGFbaF0pLmZpbHRlcihWPT4iX19yb3dOdW1fXyIhPT1WKS5yZWR1Y2UoKFYsUSk9PlE+Vj9ROlYsIiIpKyhoKzEpfXJldHVybiBjfSkoVixoLlhMTUFQX0ZJTklTSCxTKSxkZT1gJHtWfToke1F9YCxwZT1WYy51''@;'; put 'put ''dGlscy5kZWNvZGVfcmFuZ2UoZGUpLENlPVZjLnV0aWxzLnNoZWV0X3RvX2pzb24odix7cmF3OiEwLHJhbmdlOmRlLGhlYWRlcjoiQSIsYmxhbmtyb3dzOiEwfSk7Zm9yKGxldCBPZT0wO09lPENlLmxlbmd0aDtPZSsrKXtjb25zdCBZZT1DZVtPZV07Zm9yKGxldCBldD1wZS5zLmMsZHQ9MDtl''@;'; put 'put ''dDw9cGUuZS5jO2V0KyssZHQrKyl7Y29uc3QgaHQ9VmMudXRpbHMuZW5jb2RlX2NvbChldCk7aHQgaW4gWWUmJmQucHVzaCh7TE9BRF9SRUY6IjAiLFhMTUFQX0lEOmguWExNQVBfSUQsWExNQVBfUkFOR0VfSUQ6aC5YTE1BUF9SQU5HRV9JRCxST1dfTk86T2UrMSxDT0xfTk86ZHQrMSxWQUxV''@;'; put 'put ''RV9UWFQ6WWVbaHRdfSl9fX0pLHRoaXMuc3RhdHVzPW8yLlJlYWR5VG9TdWJtaXQsdGhpcy5pc0xvYWRpbmc9ITEsdGhpcy5pc0xvYWRpbmdEZXNjPSIiLHRoaXMueGxEYXRhPWQsdGhpcy5zZWxlY3RlZFRhYj1meS5EYXRhfXZpZXdYTE1hcFJ1bGVzKCl7dmFyIGE9dGhpcztyZXR1cm4gWShm''@;'; put 'put ''dW5jdGlvbiooKXthLnNlbGVjdGVkWExNYXAmJihhLmlzTG9hZGluZz0hMCxhLmlzTG9hZGluZ0Rlc2M9IkxvYWRpbmcgZXhjZWwgcnVsZXMiLGEuc3RhdHVzPW8yLkZldGNoaW5nUnVsZXMseWllbGQgYS5zYXNTdG9yZVNlcnZpY2UuZ2V0WExNYXBSdWxlcyhhLnNlbGVjdGVkWExNYXAuaWQp''@;'; put 'put ''LnRoZW4oZD0+e2EueGxtYXBSdWxlcz1kLnhsbWFwcnVsZXMsYS5zdGF0dXM9bzIuUmVhZHlUb1VwbG9hZH0pLmNhdGNoKGQ9PnthLmxvZ2dlclNlcnZpY2UuZXJyb3IoZCl9KSxhLmlzTG9hZGluZz0hMSxhLmlzTG9hZGluZ0Rlc2M9IiIpfSkoKX1sb2FkKCl7dGhpcy54bG1hcHM9SG4ueGxt''@;'; put 'put ''YXBzLHRoaXMueGxtYXBzTG9hZGluZz0hMTtjb25zdCBhPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmlkO2lmKGEpe2NvbnN0IGQ9dGhpcy54bG1hcHMuZmluZChoPT5oLmlkPT09YSk7ZCYmKHRoaXMuc2VsZWN0ZWRYTE1hcD1kLHRoaXMudmlld1hMTWFwUnVsZXMoKSl9fW5nT25Jbml0''@;'; put 'put ''KCl7dGhpcy5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGE9Pnt0aGlzLmhvdFRhYmxlTGljZW5zZUtleT1hfSl9bmdBZnRlclZpZXdJbml0KCl7fW5nQWZ0ZXJDb250ZW50SW5pdCgpe0huLmVkaXRvci5zdGFydHVwU2V0P3RoaXMubG9hZCgpOnRoaXMuZXZlbnRT''@;'; put 'put ''ZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5sb2FkKCl9KX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShEbCksSmUoQTApLEplKE8xKSxKZShPYyksSmUoSnMpLEplKFpkKSxKZSh2YSkpfX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXhsbWFwIl1dLHZpZXdRdWVyeTpmdW5jdGlvbihkLGgpe2lmKDEmZCYmSG8oQXB0LDUpLDImZCl7bGV0IGY7bGkoZj1jaSgpKSYmKGguZmlsZVVwbG9hZElucHV0Q29tcExpc3Q9Zil9fSxob3N0VmFyczoyLGhvc3RC''@;'; put 'put ''aW5kaW5nczpmdW5jdGlvbihkLGgpezImZCYmcHIoImNvbnRlbnQtY29udGFpbmVyIixoLmNvbnRlbnRDb250YWluZXJDbGFzcyl9LGRlY2xzOjQyLHZhcnM6MTYsY29uc3RzOltbInNlYXJjaFhMTWFwVHJlZUlucHV0IiwiIl0sWyJmaWxlVXBsb2FkSW5wdXQiLCIiXSxbImFjdGlvbkJ1dHRv''@;'; put 'put ''bnMiLCIiXSxbImNsYXNzIiwibXktMTAtbXgtYXV0byB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBJZCIsIm5h''@;'; put 'put ''bWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250''@;'; put 'put ''ZW50LWFyZWEiXSxbImNsYXNzIiwibm8tdGFibGUtc2VsZWN0ZWQiLDQsIm5nSWYiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbImFwcERyYWdOZHJvcCIsIiIsImNsYXNzIiwiY2FyZCBoLTEwMCBkLWZsZXggY2xyLWZsZXgtY29sdW1uIiwzLCJmaWxlRHJhZ2dlZE92''@;'; put 'put ''ZXIiLDQsIm5nSWYiXSxbImFwcEZpbGVEcm9wIiwiIiwxLCJyZWxhdGl2ZSIsMywiZmlsZU92ZXIiLCJmaWxlRHJvcCIsImNsck1vZGFsT3BlbkNoYW5nZSIsInVwbG9hZGVyIiwiY2xyTW9kYWxTaXplIiwiY2xyTW9kYWxTdGF0aWNCYWNrZHJvcCIsImNsck1vZGFsQ2xvc2FibGUiLCJjbHJN''@;'; put 'put ''b2RhbE9wZW4iXSxbMSwibW9kYWwtdGl0bGUiXSxbMSwibW9kYWwtYm9keSJdLFsxLCJkcm9wLWFyZWEiXSxbMSwiY2xyLWNvbC1tZC0xMiJdLFsxLCJjbHItcm93IiwiY2FyZC1ibG9jayIsIm10LTE1IiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWJldHdlZW4iXSxbMSwiY2xyLWNvbC1t''@;'; put 'put ''ZC0zIiwiZmlsdGVyQnRuIl0sWzEsImZpbHRlckJ0biIsInctMTAwIl0sWyJmb3IiLCJmaWxlLXVwbG9hZCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJwcm9maWxlLWJ1dHRvbnMiLCJ3LTEwMCJdLFsiaGlkZGVuIiwiIiwiaWQiLCJmaWxlLXVwbG9hZCIsInR5cGUiLCJmaWxl''@;'; put 'put ''IiwiYXBwRmlsZVNlbGVjdCIsIiIsMywiY2hhbmdlIiwidXBsb2FkZXIiXSxbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIl0sWzEsIm0tMCJdLFsxLCJtb2RhbC1mb290ZXIiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwzLCJj''@;'; put 'put ''bGljayJdLFsxLCJteS0xMC1teC1hdXRvIiwidGV4dC1jZW50ZXIiXSxbImNsck1lZGl1bSIsIiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFsic2hhcGUiLCJmaWxlIl0sWzEsIm5vLXRh''@;'; put 'put ''YmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSBtdC0xMCIsImNkcy10ZXh0Iiwic2VjdGlvbiIsNCwibmdJZiJdLFsiY2RzLXRleHQi''@;'; put 'put ''LCJzZWN0aW9uIiwxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiLCJtdC0xMCJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWyJhcHBEcmFnTmRyb3AiLCIiLDEsImNhcmQiLCJoLTEwMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiIsMywiZmlsZURyYWdnZWRPdmVy''@;'; put 'put ''Il0sWyJjbHJUYWJMaW5rIiwiIiwzLCJjbGljayJdLFs0LCJjbHJJZkFjdGl2ZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsImNsci1yb3ciLCJtLTAiLCJtYi0xMC1pIiwidmlld2VyVGl0bGUiXSxbMSwiZC1mbGV4IiwiY2xyLWNvbC0xMiIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2Vu''@;'; put 'put ''dGVyIiwibXQtNS1pIl0sWyJjZHMtdGV4dCIsImxhYmVsTGluayIsMSwibWwtMTAiLDMsInJvdXRlckxpbmsiXSxbMSwiY2xyLWZsZXgtMSJdLFsiaG90SWQiLCJob3RJbnN0YW5jZSIsImlkIiwiaG90LXRhYmxlIiwiY2xhc3NOYW1lIiwiaHREYXJrIiwic3RyZXRjaEgiLCJhbGwiLDMsIm11''@;'; put 'put ''bHRpQ29sdW1uU29ydGluZyIsInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0IiwiZGF0YSIsImNvbEhlYWRlcnMiLCJjb2x1bW5zIiwiZmlsdGVycyIsImhlaWdodCIsImFmdGVyR2V0Q29sSGVhZGVyIiwibW9kaWZ5Q29sV2lkdGgiLCJjZWxscyIsIm1heFJvd3MiLCJtYW51YWxDb2x1bW5S''@;'; put 'put ''ZXNpemUiLCJyb3dIZWFkZXJzIiwicm93SGVhZGVyV2lkdGgiLCJyb3dIZWlnaHRzIiwibGljZW5zZUtleSJdLFsxLCJjbHItcm93IiwibS0wIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiZC1mbGV4IGNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGNsci1jb2wt''@;'; put 'put ''MTIgY2xyLWNvbC1sZy00Iiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiY2xyLWNvbC0xMiIsImNsci1jb2wtbGctNCJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJidG4tYmxvY2siLCJtci0wIiwz''@;'; put 'put ''LCJjbGljayJdLFsic2hhcGUiLCJ1cGxvYWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lLWRhbmdlciIsImJ0bi1ibG9jayIsIm1yLTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsInRpbWVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7aWYoMSZkKXtj''@;'; put 'put ''b25zdCBmPVNuKCk7Z2UoMCwiYXBwLXNpZGViYXIiKSxndCgxLERwdCwyLDAsImRpdiIsMyksZ2UoMiwiY2xyLXRyZWUiKSgzLCJjbHItdHJlZS1ub2RlIiw0KSg0LCJkaXYiLDUpKDUsImlucHV0Iiw2LDApLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3Io''@;'; put 'put ''aC5zZWFyY2hTdHJpbmcsUyl8fChoLnNlYXJjaFN0cmluZz1TKSxidChTKX0pLEl0KCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC54bG1hcExpc3RPbkZpbHRlcigpKX0pLG1lKCksZ3QoNyxJcHQsMSwwLCJjbHItaWNvbiIsNykoOCxScHQsMSwwLCJjbHItaWNvbiIsOCks''@;'; put 'put ''bWUoKSgpLGd0KDksTHB0LDUsMywibmctY29udGFpbmVyIiw5KSxtZSgpKCksZ2UoMTAsImRpdiIsMTApLGd0KDExLEZwdCw0LDIsImRpdiIsMTEpKDEyLE5wdCw2LDEsImRpdiIsMTIpKDEzLGpwdCwyNiwyNSwiZGl2IiwxMyksZ2UoMTQsImNsci1tb2RhbCIsMTQpLEl0KCJmaWxlT3ZlciIs''@;'; put 'put ''ZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGguZmlsZU92ZXJCYXNlKFMpKX0pKCJmaWxlRHJvcCIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLGJ0KGguZ2V0RmlsZURlc2MoUywhMCkpfSksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGgu''@;'; put 'put ''c2hvd1VwbG9hZE1vZGFsLFMpfHwoaC5zaG93VXBsb2FkTW9kYWw9UyksYnQoUyl9KSxnZSgxNSwiaDMiLDE1KSxQZSgxNiwiVXBsb2FkIEZpbGUiKSxtZSgpLGdlKDE3LCJkaXYiLDE2KSgxOCwiZGl2IiwxNykoMTksInNwYW4iKSxQZSgyMCwiRHJvcCBmaWxlIGFueXdoZXJlIHRvIHVwbG9h''@;'; put 'put ''ZCEiKSxtZSgpKCksZ2UoMjEsImRpdiIsMTgpKDIyLCJkaXYiLDE5KSgyMywiZGl2IiwyMCkoMjQsInNwYW4iLDIxKSgyNSwibGFiZWwiLDIyKSxQZSgyNiwiIEJyb3dzZSAiKSxtZSgpKCksZ2UoMjcsImlucHV0IiwyMywxKSxJdCgiY2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiks''@;'; put 'put ''YnQoaC5nZXRGaWxlRGVzYyhTKSl9KSxtZSgpKCkoKSgpKCkoKSxnZSgyOSwiY2xyLW1vZGFsIiwyNCksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguc3VibWl0TGltaXROb3RpY2UsUyl8fChoLnN1Ym1pdExpbWl0Tm90aWNlPVMpLGJ0KFMp''@;'; put 'put ''fSksZ2UoMzAsImgzIiwxNSksUGUoMzEsIk5vdGljZSIpLG1lKCksZ2UoMzIsImRpdiIsMTYpKDMzLCJwIiwyNSksUGUoMzQpLG1lKCkoKSxnZSgzNSwiZGl2IiwyNikoMzYsImJ1dHRvbiIsMjcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5zdWJtaXRMaW1pdE5v''@;'; put 'put ''dGljZT0hMSl9KSxQZSgzNywiIENhbmNlbCAiKSxtZSgpLGdlKDM4LCJidXR0b24iLDI3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGguc3VibWl0KCksYnQoaC5zdWJtaXRMaW1pdE5vdGljZT0hMSl9KSxQZSgzOSwiIFN1Ym1pdCAiKSxtZSgpKCkoKSgpLGd0KDQwLFlw''@;'; put 'put ''dCw0LDMsIm5nLXRlbXBsYXRlIixudWxsLDIsYnUpfWlmKDImZCl7Y29uc3QgZj1HaSg2KTtfZSgpLFJlKCJuZ0lmIixoLnhsbWFwc0xvYWRpbmcpLF9lKDQpLFlyKCJuZ01vZGVsIixoLnNlYXJjaFN0cmluZyksX2UoMiksUmUoIm5nSWYiLGYudmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5n''@;'; put 'put ''SWYiLGYudmFsdWUubGVuZ3RoPjApLF9lKCksUmUoIm5nRm9yT2YiLGgueGxtYXBzKSxfZSgyKSxSZSgibmdJZiIsIWguc2VsZWN0ZWRYTE1hcCksX2UoKSxSZSgibmdJZiIsaC5pc0xvYWRpbmcpLF9lKCksUmUoIm5nSWYiLCFoLmlzTG9hZGluZyYmaC5zZWxlY3RlZFhMTWFwKSxfZSgpLFJl''@;'; put 'put ''KCJ1cGxvYWRlciIsaC51cGxvYWRlcikoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsU3RhdGljQmFja2Ryb3AiLCExKSgiY2xyTW9kYWxDbG9zYWJsZSIsITApLFlyKCJjbHJNb2RhbE9wZW4iLGguc2hvd1VwbG9hZE1vZGFsKSxfZSgxMyksUmUoInVwbG9hZGVyIixoLnVwbG9hZGVy''@;'; put 'put ''KSxfZSgyKSxZcigiY2xyTW9kYWxPcGVuIixoLnN1Ym1pdExpbWl0Tm90aWNlKSxfZSg1KSxtcigiIER1ZSB0byBjdXJyZW50IGxpY2VuY2UsIG9ubHkgIixoLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCwiIHJvd3MgaW4gYSBmaWxlIHdpbGwgYmUgc3VibWl0dGVkLiBU''@;'; put 'put ''byByZW1vdmUgdGhlIHJlc3RyaWN0aW9uLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIil9fSxkZXBlbmRlbmNpZXM6W1NiLGswLHVsLF9hLHVhLEFkLEgxLHk0LFlhLFBjLGl1LElfLCRzLEVkLEVtLGttLFA4LFRtLHhtLEw4LHhkLHNwLFZzLCRpLHZkLGpNLHU0ZSxkNGUs''@;'; put 'put ''b3BdLHN0eWxlczpbIi5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjA7ZmxleDoxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Y2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNl''@;'; put 'put ''Om5vd3JhcH0ubm8tdGFibGUtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZS1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmhlYWRl''@;'; put 'put ''ci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLm9wdGlvbnMtY29sW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5zd1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjFyZW0gMHJlbSAuNXJlbSAxcmVtfS52aWV3ZXJUaXRsZVtfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcmRGbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1u''@;'; put 'put ''fWhvdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAgIC5wcmltYXJ5S2V5SGVhZGVyU3R5bGV7YmFja2dyb3VuZDojMzA2YjAwNmV9LmRyb3AtYXJlYVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRl''@;'; put 'put ''cjttYXJnaW46MXB4O2JvcmRlcjoycHggZGFzaGVkICNmZmY7ei1pbmRleDotMX0uZHJvcC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4O21hcmdpbi10b3A6MjBweDtjb2xvcjojZmZmfSJdfSl9fXJldHVybiBsfSkoKTtj''@;'; put 'put ''b25zdCBXcHQ9W3twYXRoOiIiLGNvbXBvbmVudDooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fW5nT25EZXN0cm95KCl7fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5''@;'; put 'put ''cGU6bCxzZWxlY3RvcnM6W1siYXBwLXhsbWFwLXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmWXQoMCwicm91dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W2M0XX0pfX1yZXR1cm4g''@;'; put 'put ''bH0pKCksY2hpbGRyZW46W3twYXRoOiIiLGNvbXBvbmVudDpfNGV9LHtwYXRoOiI6aWQiLGNvbXBvbmVudDpfNGV9XX1dO2xldCBHcHQ9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1bW9k''@;'; put 'put ''PWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W0NjLmZvckNoaWxkKFdwdCksQ2NdfSl9fXJldHVybiBsfSkoKTtvRigpO2xldCAkcHQ9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W2w3LEdwdCxyYyxjMCxWNyxvbyxKRSxyMl19KX19cmV0dXJuIGx9KSgpLHFwdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fW5nT25EZXN0''@;'; put 'put ''cm95KCl7fXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLW11bHRpLWRhdGFzZXQtcm91dGUiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJd''@;'; put 'put ''LGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiZZdCgwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVuZGVuY2llczpbYzRdLGVuY2Fwc3VsYXRpb246Mn0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgS3B0PShsLGMsYSk9PntjLmNsYXNzTGlzdC5hZGQoSG4uaGFuZHNvbnRh''@;'; put 'put ''YmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX0sWHB0PVsiY29udGVudEFyZWEiXSxKcHQ9KCk9PlsiaHREYXJrIiwiaHRDdXN0b21IaWRkZW4iXTtmdW5jdGlvbiBRcHQobCxjKXsxJmwmJihnZSgwLCJkaXYiLDI0KSxZdCgxLCJjbHItc3Bpbm5lciIsMjIpLG1lKCkpfWZ1bmN0aW9uIGU0dChs''@;'; put 'put ''LGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsMjUpKDEsImJ1dHRvbiIsMjYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoR2koNCkuY2xpY2soKSl9KSxQZSgyLCIgQnJvd3NlIGZpbGUgIiksbWUoKSxnZSgzLCJpbnB1dCIsMjcsMSksSXQoImNoYW5n''@;'; put 'put ''ZSIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25GaWxlQ2hhbmdlKGgpKX0pLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJkaXNhYmxlZCIsbnVsbCE9PWEuc2VsZWN0ZWRGaWxlfHxhLnN1Ym1pdHRpbmdDc3YpfX1mdW5jdGlvbiB0NHQobCxjKXtpZigx''@;'; put 'put ''Jmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDI1KSgxLCJidXR0b24iLDMwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLm9uRGlzY2FyZCgpKX0pLFBlKDIsIiBEaXNjYXJkICIpLG1lKCksZ2UoMywiYnV0dG9uIiwzMSksSXQoImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBfdChhKSxidChOZSgyKS5vblN1Ym1pdEFsbCgpKX0pLFBlKDQsIiBTdWJtaXQgQWxsICIpLG1lKCkoKX19ZnVuY3Rpb24gbjR0KGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsMzYpfWZ1bmN0aW9uIHI0dChsLGMpezEmbCYmWXQoMCwiY2RzLWljb24iLDM3KX1mdW5jdGlv''@;'; put 'put ''biBpNHQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLG40dCwxLDAsImNkcy1pY29uIiwzNCkoMixyNHQsMSwwLCJjZHMtaWNvbiIsMzUpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIixhLnN1Ym1pdFJlc3VsdC5lcnJvciksX2UoKSxSZSgibmdJZiIs''@;'; put 'put ''YS5zdWJtaXRSZXN1bHQuc3VjY2Vzcyl9fWZ1bmN0aW9uIG80dChsLGMpezEmbCYmWXQoMCwiY2RzLWljb24iLDM2KX1mdW5jdGlvbiBzNHQobCxjKXsxJmwmJll0KDAsImNkcy1pY29uIiwzOSl9ZnVuY3Rpb24gYTR0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxvNHQsMSwwLCJjZHMtaWNv''@;'; put 'put ''biIsMzQpKDIsczR0LDEsMCwiY2RzLWljb24iLDM4KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMikuJGltcGxpY2l0O19lKCksUmUoIm5nSWYiLCEoYS5kYXRhc291cmNlLmxlbmd0aCYmYS5wYXJzZVJlc3VsdCkpLF9lKCksUmUoIm5nSWYiLGEuZGF0YXNvdXJjZS5sZW5ndGgmJmEucGFyc2VS''@;'; put 'put ''ZXN1bHQpfX1mdW5jdGlvbiBsNHQobCxjKXsxJmwmJll0KDAsImNkcy1pY29uIiwzOSl9ZnVuY3Rpb24gYzR0KGwsYyl7MSZsJiZZdCgwLCJjbHItc3Bpbm5lciIsNDEpfWZ1bmN0aW9uIHU0dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsbDR0LDEsMCwiY2RzLWljb24iLDM4KSgyLGM0dCwx''@;'; put 'put ''LDAsImNsci1zcGlubmVyIiw0MCksQnIoKSksMiZsKXtjb25zdCBhPU5lKDIpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwhYS5wYXJzaW5nVGFibGUpLF9lKCksUmUoIm5nSWYiLGEucGFyc2luZ1RhYmxlKX19ZnVuY3Rpb24gZDR0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxhNHQsMywy''@;'; put 'put ''LCJuZy1jb250YWluZXIiLDQpKDIsdTR0LDMsMiwibmctY29udGFpbmVyIiw0KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQ7X2UoKSxSZSgibmdJZiIsYS5kYXRhc291cmNlKSxfZSgpLFJlKCJuZ0lmIiwhYS5kYXRhc291cmNlKX19ZnVuY3Rpb24gaDR0KGwsYyl7aWYoMSZs''@;'; put 'put ''KXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIpKDEsImJ1dHRvbiIsMzIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoMikub25QYXJzZWREYXRhc2V0Q2xpY2soaCkpfSksZ3QoMixpNHQsMywyLCJuZy1jb250YWlu''@;'; put 'put ''ZXIiLDQpKDMsZDR0LDMsMiwibmctY29udGFpbmVyIiw0KSxnZSg0LCJzcGFuIiwzMyksUGUoNSksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKCkscHIoImFjdGl2ZSIsYS5hY3RpdmUpLF9lKCksUmUoIm5nSWYiLGEuc3VibWl0UmVzdWx0KSxfZSgpLFJlKCJuZ0lm''@;'; put 'put ''IiwhYS5zdWJtaXRSZXN1bHQpLF9lKDIpLG1yKCIgIixhLmxpYmRzLCIgIil9fWZ1bmN0aW9uIGY0dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsdDR0LDUsMCwiZGl2IiwzKSxnZSgyLCJwIiwyOCksUGUoMywiRm91bmQgdGFibGVzOiIpLG1lKCksZ2UoNCwiY2xyLXRyZWUiKSxndCg1LGg0''@;'; put 'put ''dCw2LDUsImNsci10cmVlLW5vZGUiLDI5KSxtZSgpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKCksUmUoIm5nSWYiLCFhLmV4Y2Vsc1N1Ym1pdHRlZCksX2UoNCksUmUoIm5nRm9yT2YiLGEucGFyc2VkRGF0YXNldHMpfX1mdW5jdGlvbiBwNHQobCxjKXsxJmwmJll0KDAsImNkcy1pY29u''@;'; put 'put ''IiwzNil9ZnVuY3Rpb24gZzR0KGwsYyl7MSZsJiZZdCgwLCJjZHMtaWNvbiIsMzcpfWZ1bmN0aW9uIG00dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiKSgxLCJidXR0b24iLDQzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1w''@;'; put 'put ''bGljaXQ7cmV0dXJuIGJ0KE5lKDIpLm9uU3VibWl0dGVkQ3N2RGF0YXNldENsaWNrKGgpKX0pLGd0KDIscDR0LDEsMCwiY2RzLWljb24iLDM0KSgzLGc0dCwxLDAsImNkcy1pY29uIiwzNSksWXQoNCwiY2RzLWljb24iLDM5KSxQZSg1KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxp''@;'; put 'put ''Y2l0O19lKCkscHIoImFjdGl2ZSIsYS5hY3RpdmUpLF9lKCksUmUoIm5nSWYiLGEuZXJyb3IpLF9lKCksUmUoIm5nSWYiLGEuc3VjY2VzcyksX2UoMiksbXIoIiAiLGEubGliZHMsIiAiKX19ZnVuY3Rpb24gdjR0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwicCIsNDIpLFBlKDIsIlN1Ym1p''@;'; put 'put ''dHRlZCB0YWJsZXM6IiksbWUoKSxnZSgzLCJjbHItdHJlZSIpLGd0KDQsbTR0LDYsNSwiY2xyLXRyZWUtbm9kZSIsMjkpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoNCksUmUoIm5nRm9yT2YiLGEuc3VibWl0dGVkQ3N2RGF0YXNldHMpfX1mdW5jdGlvbiBfNHQobCxjKXsxJmwm''@;'; put 'put ''JihnZSgwLCJkaXYiLDQ0KSxZdCgxLCJjbHItaWNvbiIsNDUpLGdlKDIsInAiLDQ2KSxQZSgzLCIgUGxlYXNlIHVwbG9hZCBhIGZpbGUgIiksbWUoKSgpKX1mdW5jdGlvbiBiNHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtWcigwKSxnZSgxLCJkaXYiLDQ3KSgyLCJkaXYiLDQ4KSgzLCJw''@;'; put 'put ''Iiw0OSksUGUoNCwiIFNlbGVjdGVkIGZpbGU6ICIpLGdlKDUsInN0cm9uZyIpLFBlKDYpLG1lKCksZ2UoNywiY2xyLXRvb2x0aXAiKSg4LCJjZHMtaWNvbiIsNTApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikub25EaXNjYXJkRmlsZSgpKX0pLG1lKCksZ2Uo''@;'; put 'put ''OSwiY2xyLXRvb2x0aXAtY29udGVudCIpLFBlKDEwLCIgRGlzY2FyZCB0aGUgZmlsZSAiKSxtZSgpKCkoKSxnZSgxMSwicCIsNTEpLFBlKDEyLCIgRmlsZSBzaXplOiAiKSxnZSgxMywic3Ryb25nIiksUGUoMTQpLG1lKCkoKSxnZSgxNSwicCIsNTIpLFBlKDE2LCIgUGFzdGUgb3IgdHlwZSB0''@;'; put 'put ''aGUgbGlzdCBvZiBkYXRhc2V0cyB0byB1cGxvYWQ6ICIpLG1lKCksZ2UoMTcsImNsci1jb250cm9sLWhlbHBlciIsNTMpLFBlKDE4LCJFYWNoIHJvdyBpcyBvbmUgZGF0YXNldC4gV2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdCB0YWJsZXMgYnkgdGhlIHNoZWV0bmFtZSBhbmQgcG9wdWxh''@;'; put 'put ''dGUgaWYgYW55LiIpLG1lKCksWXQoMTksImhvdC10YWJsZSIsNTQpLGdlKDIwLCJkaXYiLDU1KSgyMSwiYnV0dG9uIiw1NiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5vblN0YXJ0UGFyc2luZ0ZpbGUoKSl9KSxQZSgyMiwiIENvbnRpbnVlICIpLG1lKCko''@;'; put 'put ''KSgpKCksQnIoKX1pZigyJmwpe2NvbnN0IGE9TmUoMik7X2UoNiksbHIoYS5zZWxlY3RlZEZpbGUubmFtZSksX2UoOCksbXIoIiIsYS5zZWxlY3RlZEZpbGUuc2l6ZU1CLCIgTUIiKSxfZSg1KSxSZSgiYWZ0ZXJHZXRDb2xIZWFkZXIiLGEuYWZ0ZXJHZXRDb2xIZWFkZXIpKCJzZXR0aW5ncyIs''@;'; put 'put ''YS5ob3RVc2VyRGF0YXNldHMpKCJsaWNlbnNlS2V5IixhLmhvdFRhYmxlTGljZW5zZUtleSksX2UoMiksUmUoImRpc2FibGVkIiwhYS5tYXRjaGVkRGF0YXNldHMubGVuZ3RoKSgiY2xyTG9hZGluZyIsYS51cGxvYWRMb2FkaW5nKX19ZnVuY3Rpb24geTR0KGwsYyl7aWYoMSZsJiYoVnIoMCks''@;'; put 'put ''WXQoMSwiY2xyLWljb24iLDU3KSxnZSgyLCJwIiw0NiksUGUoMyksbWUoKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoNCk7X2UoMyksbXIoIiAiLGEuZmlsZUxvYWRpbmdTdGF0ZSwiLi4uICIpfX1mdW5jdGlvbiB3NHQobCxjKXsxJmwmJihWcigwKSxZdCgxLCJjbHItaWNvbiIsNDUpLGdlKDIs''@;'; put 'put ''InAiLDQ2KSxQZSgzLCIgUGxlYXNlIHNlbGVjdCBhIGRhdGFzZXQgb24gdGhlIGxlZnQgdG8gcmV2aWV3IHRoZSBkYXRhICIpLG1lKCksQnIoKSl9ZnVuY3Rpb24gQzR0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw0NCksZ3QoMSx5NHQsNCwxLCJuZy1jb250YWluZXIiLDQpKDIsdzR0LDQs''@;'; put 'put ''MCwibmctY29udGFpbmVyIiw0KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxSZSgibmdJZiIsYS5maWxlTG9hZGluZ1N0YXRlIT09YS5GaWxlTG9hZGluZ1N0YXRlLnBhcnNlZCksX2UoKSxSZSgibmdJZiIsYS5maWxlTG9hZGluZ1N0YXRlPT09YS5GaWxlTG9hZGluZ1N0YXRlLnBh''@;'; put 'put ''cnNlZCl9fWZ1bmN0aW9uIFM0dChsLGMpezEmbCYmKGdlKDAsInNwYW4iLDc0KSgxLCJzdHJvbmciKSxQZSgyLCJTVUNDRVNTIiksbWUoKSgpKX1mdW5jdGlvbiBNNHQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiw3NSkoMSwic3Ryb25nIiksUGUoMiwiRVJST1IiKSxtZSgpKCkpfWZ1bmN0aW9u''@;'; put 'put ''IHg0dChsLGMpezEmbCYmKGdlKDAsInAiLDYyKSxQZSgxLCIgRXJyb3IgZGV0YWlsczogIiksbWUoKSl9ZnVuY3Rpb24gRTR0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiYnV0dG9uIiw3NiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoNSk7cmV0dXJu''@;'; put 'put ''IGJ0KGgucmVTdWJtaXRUYWJsZShoLmFjdGl2ZVBhcnNlZERhdGFzZXQpKX0pLFBlKDEsIiBSZXN1Ym1pdCAiKSxtZSgpfTImbCYmUmUoImNsckxvYWRpbmciLE5lKDUpLnN1Ym1pdExvYWRpbmcpfWZ1bmN0aW9uIFQ0dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsNjgp''@;'; put 'put ''KDEsImRpdiIpKDIsInAiLDYxKSxQZSgzLCIgU3VibWl0IFN0YXR1czogIiksZ3QoNCxTNHQsMywwLCJzcGFuIiw2OSkoNSxNNHQsMywwLCJzcGFuIiw3MCksbWUoKSxndCg2LHg0dCwyLDAsInAiLDcxKSxtZSgpLGdlKDcsImRpdiIpLGd0KDgsRTR0LDIsMSwiYnV0dG9uIiw3MiksZ2UoOSwi''@;'; put 'put ''YnV0dG9uIiw3MyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoNCk7cmV0dXJuIGJ0KGguZG93bmxvYWRGaWxlKGguYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQubG9nfHxoLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LnN1Y2Nlc3N8fGgu''@;'; put 'put ''YWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQuZXJyb3IpKX0pLFBlKDEwLCIgRG93bmxvYWQgbG9nICIpLG1lKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSg0KTtfZSg0KSxSZSgibmdJZiIsbnVsbD09YS5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3VsdD9udWxsOmEuYWN0''@;'; put 'put ''aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQuc3VjY2VzcyksX2UoKSxSZSgibmdJZiIsbnVsbD09YS5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3VsdD9udWxsOmEuYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQuZXJyb3IpLF9lKCksUmUoIm5nSWYiLG51bGw9PWEu''@;'; put 'put ''YWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQ/bnVsbDphLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmVycm9yKSxfZSgyKSxSZSgibmdJZiIsIWEuc3VibWl0dGluZ0NzdiYmKG51bGw9PWEuYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQ/bnVsbDphLmFj''@;'; put 'put ''dGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmVycm9yKSl9fWZ1bmN0aW9uIGs0dChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNzcpKDEsImRpdiIsNzgpLFBlKDIpLGdhKDMsImpzb24iKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg0KTtfZSgyKSxtcigiICIsVWwoMywxLG51bGw9''@;'; put 'put ''PWEuYWN0aXZlUGFyc2VkRGF0YXNldC5zdWJtaXRSZXN1bHQ/bnVsbDphLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0LmVycm9yKSwiICIpfX1mdW5jdGlvbiBBNHQobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJzdHJvbmciKSxQZSgyKSxtZSgpLEJyKCkpLDImbCl7Y29uc3Qg''@;'; put 'put ''YT1OZSg0KTtfZSgyKSxfdSgnIicsbnVsbD09YS5hY3RpdmVQYXJzZWREYXRhc2V0LnBhcnNlUmVzdWx0LnJhbmdlU2hlZXRSZXM/bnVsbDphLmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2VSZXN1bHQucmFuZ2VTaGVldFJlcy5zaGVldE5hbWUsJyIhJyxudWxsPT1hLmFjdGl2ZVBhcnNlZERh''@;'; put 'put ''dGFzZXQucGFyc2VSZXN1bHQucmFuZ2VTaGVldFJlcz9udWxsOmEuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdC5yYW5nZVNoZWV0UmVzLnJhbmdlQWRkcmVzcywiIil9fWZ1bmN0aW9uIEQ0dChsLGMpezEmbCYmKGdlKDAsInN0cm9uZyIpLFBlKDEsIk5vIGRhdGEgZm91bmQiKSxt''@;'; put 'put ''ZSgpKX1mdW5jdGlvbiBJNHQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiw4MCkoMSwic3Ryb25nIiksUGUoMiwiU2VhcmNoaW5nIGZvciB0aGUgZGF0YS4uLiIpLG1lKCksWXQoMywiY2xyLXNwaW5uZXIiLDgxKSxtZSgpKX1mdW5jdGlvbiBSNHQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLEQ0''@;'; put 'put ''dCwyLDAsInN0cm9uZyIsNCkoMixJNHQsNCwwLCJzcGFuIiw3OSksQnIoKSksMiZsKXtjb25zdCBhPU5lKDQpO19lKCksUmUoIm5nSWYiLCFhLmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2luZ1RhYmxlKSxfZSgpLFJlKCJuZ0lmIixhLmFjdGl2ZVBhcnNlZERhdGFzZXQucGFyc2luZ1RhYmxl''@;'; put 'put ''KX19ZnVuY3Rpb24gTDR0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2Iiw4MiksWXQoMSwiY2xyLXNwaW5uZXIiLDgzKSxtZSgpKX1mdW5jdGlvbiBPNHQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtWcigwKSxndCgxLFQ0dCwxMSw0LCJkaXYiLDU4KSgyLGs0dCw0LDMsImRpdiIsNTkpLGdlKDMs''@;'; put 'put ''ImRpdiIsNjApKDQsImRpdiIpKDUsInAiLDYxKSxQZSg2LCIgRm91bmQgaW4gcmFuZ2U6ICIpLGd0KDcsQTR0LDMsMiwibmctY29udGFpbmVyIiw0KSg4LFI0dCwzLDIsIm5nLWNvbnRhaW5lciIsNCksbWUoKSxnZSg5LCJwIiw2MiksUGUoMTAsIiBEYXRhc2V0OiAiKSxnZSgxMSwic3Ryb25n''@;'; put 'put ''IikoMTIsImNsci10b29sdGlwIikoMTMsImEiLDYzKSxQZSgxNCksbWUoKSxnZSgxNSwiY2xyLXRvb2x0aXAtY29udGVudCIsNjQpLFBlKDE2LCIgQ2xpY2sgdG8gZWRpdCB0aGUgdGFibGUgIiksbWUoKSgpKCkoKSgpLGdlKDE3LCJkaXYiKSgxOCwiY2xyLXRvZ2dsZS13cmFwcGVyIikoMTks''@;'; put 'put ''ImlucHV0Iiw2NSksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMyk7cmV0dXJuIEdyKGYuYWN0aXZlUGFyc2VkRGF0YXNldC5pbmNsdWRlSW5TdWJtaXNzaW9uLGgpfHwoZi5hY3RpdmVQYXJzZWREYXRhc2V0LmluY2x1ZGVJblN1Ym1pc3Npb249aCks''@;'; put 'put ''YnQoaCl9KSxtZSgpLGdlKDIwLCJsYWJlbCIpLFBlKDIxLCJJbmNsdWRlIGluIHN1Ym1pc3Npb24iKSxtZSgpKCkoKSgpLGd0KDIyLEw0dCwyLDAsImRpdiIsNjYpLFl0KDIzLCJob3QtdGFibGUiLDY3KSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgzKTtfZSgpLFJlKCJuZ0lmIixhLmFjdGl2''@;'; put 'put ''ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0KSxfZSgpLFJlKCJuZ0lmIixudWxsPT1hLmFjdGl2ZVBhcnNlZERhdGFzZXQuc3VibWl0UmVzdWx0P251bGw6YS5hY3RpdmVQYXJzZWREYXRhc2V0LnN1Ym1pdFJlc3VsdC5lcnJvciksX2UoNSksUmUoIm5nSWYiLGEuYWN0aXZlUGFyc2VkRGF0''@;'; put 'put ''YXNldC5wYXJzZVJlc3VsdCksX2UoKSxSZSgibmdJZiIsIWEuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdCksX2UoNSksUmUoInJvdXRlckxpbmsiLCIvZWRpdG9yLyIrYS5hY3RpdmVQYXJzZWREYXRhc2V0LmxpYmRzKSxfZSgpLGxyKGEuYWN0aXZlUGFyc2VkRGF0YXNldC5saWJk''@;'; put 'put ''cyksX2UoKSxSZSgiY2xyUG9zaXRpb24iLCJ0b3AtcmlnaHQiKSgiY2xyU2l6ZSIsInNtIiksX2UoNCksWXIoIm5nTW9kZWwiLGEuYWN0aXZlUGFyc2VkRGF0YXNldC5pbmNsdWRlSW5TdWJtaXNzaW9uKSxSZSgiZGlzYWJsZWQiLCEoYS5hY3RpdmVQYXJzZWREYXRhc2V0LmRhdGFzb3VyY2Um''@;'; put 'put ''JmEuYWN0aXZlUGFyc2VkRGF0YXNldC5wYXJzZVJlc3VsdCkpLF9lKDMpLFJlKCJuZ0lmIixhLmlzSG90SGlkZGVuKSxfZSgpLFJlKCJhZnRlckdldENvbEhlYWRlciIsYS5hZnRlckdldENvbEhlYWRlcikoImNsYXNzTmFtZSIsbGEoMTgsSnB0KSkoImxpY2Vuc2VLZXkiLGEuaG90VGFibGVM''@;'; put 'put ''aWNlbnNlS2V5KSgibXVsdGlDb2x1bW5Tb3J0aW5nIiwhMCkoInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0Iiw1MCkoIm1hbnVhbENvbHVtblJlc2l6ZSIsITApKCJmaWx0ZXJzIiwhMCl9fWZ1bmN0aW9uIFA0dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsQzR0LDMsMiwiZGl2Iiw5KSgy''@;'; put 'put ''LE80dCwyNCwxOSwibmctY29udGFpbmVyIiw0KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdJZiIsIWEuYWN0aXZlUGFyc2VkRGF0YXNldCksX2UoKSxSZSgibmdJZiIsYS5hY3RpdmVQYXJzZWREYXRhc2V0KX19ZnVuY3Rpb24gRjR0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2''@;'; put 'put ''Iiw0NCksWXQoMSwiY2xyLWljb24iLDQ1KSxnZSgyLCJwIiw0NiksUGUoMywiIFBsZWFzZSBzZWxlY3QgYSBkYXRhc2V0IG9uIHRoZSBsZWZ0IHRvIHJldmlldyB0aGUgc3VibWl0IHJlc3VsdHMgIiksbWUoKSgpKX1mdW5jdGlvbiBONHQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLEY0dCw0''@;'; put 'put ''LDAsImRpdiIsOSksQnIoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLCFhLmFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQpfX1mdW5jdGlvbiBINHQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiw3NCkoMSwic3Ryb25nIiksUGUoMiwiU1VDQ0VTUyIpLG1lKCkoKSl9ZnVuY3Rp''@;'; put 'put ''b24gVjR0KGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIsNzUpKDEsInN0cm9uZyIpLFBlKDIsIkVSUk9SIiksbWUoKSgpKX1mdW5jdGlvbiBCNHQobCxjKXsxJmwmJihnZSgwLCJwIiw2MiksUGUoMSwiIEVycm9yIGRldGFpbHM6ICIpLG1lKCkpfWZ1bmN0aW9uIGo0dChsLGMpe2lmKDEmbCYmKGdl''@;'; put 'put ''KDAsImRpdiIsNzcpKDEsImRpdiIsNzgpLFBlKDIpLGdhKDMsImpzb24iKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgyKSxtcigiICIsVWwoMywxLGEuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldC5lcnJvciksIiAiKX19ZnVuY3Rpb24gejR0KGwsYyl7aWYoMSZsKXtjb25zdCBh''@;'; put 'put ''PVNuKCk7VnIoMCksZ2UoMSwiZGl2Iiw4NCkoMiwiZGl2IikoMywicCIsNjEpLFBlKDQsIiBNYXRjaGVkIHdpdGggZGF0YXNldDogIiksZ2UoNSwic3Ryb25nIikoNiwiY2xyLXRvb2x0aXAiKSg3LCJhIiw2MyksUGUoOCksbWUoKSxnZSg5LCJjbHItdG9vbHRpcC1jb250ZW50Iiw2NCksUGUo''@;'; put 'put ''MTAsIiBDbGljayB0byBlZGl0IHRoZSB0YWJsZSAiKSxtZSgpKCkoKSgpLGdlKDExLCJwIiw2MSksUGUoMTIsIiBTdGF0dXM6ICIpLGd0KDEzLEg0dCwzLDAsInNwYW4iLDY5KSgxNCxWNHQsMywwLCJzcGFuIiw3MCksbWUoKSxndCgxNSxCNHQsMiwwLCJwIiw3MSksbWUoKSxnZSgxNiwiZGl2''@;'; put 'put ''IikoMTcsImJ1dHRvbiIsNzMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBidChoLmRvd25sb2FkRmlsZShoLmFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQuc3VjY2Vzc3x8aC5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yKSl9KSxQZSgx''@;'; put 'put ''OCwiIERvd25sb2FkIGxvZyAiKSxtZSgpKCkoKSxndCgxOSxqNHQsNCwzLCJkaXYiLDU5KSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSg3KSxSZSgicm91dGVyTGluayIsIi9lZGl0b3IvIithLmFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQubGliZHMpLF9lKCksbHIoYS5hY3RpdmVT''@;'; put 'put ''dWJtaXR0ZWRDc3ZEYXRhc2V0LmxpYmRzKSxfZSgpLFJlKCJjbHJQb3NpdGlvbiIsInRvcC1yaWdodCIpKCJjbHJTaXplIiwic20iKSxfZSg0KSxSZSgibmdJZiIsYS5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LnN1Y2Nlc3MpLF9lKCksUmUoIm5nSWYiLGEuYWN0aXZlU3VibWl0dGVkQ3N2''@;'; put 'put ''RGF0YXNldC5lcnJvciksX2UoKSxSZSgibmdJZiIsYS5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yKSxfZSg0KSxSZSgibmdJZiIsYS5hY3RpdmVTdWJtaXR0ZWRDc3ZEYXRhc2V0LmVycm9yKX19ZnVuY3Rpb24gVTR0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxiNHQsMjMsNywi''@;'; put 'put ''bmctY29udGFpbmVyIiw0KSgyLFA0dCwzLDIsIm5nLWNvbnRhaW5lciIsNCkoMyxONHQsMiwxLCJuZy1jb250YWluZXIiLDQpKDQsejR0LDIwLDgsIm5nLWNvbnRhaW5lciIsNCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEucGFyc2VkRGF0YXNldHMubGVuZ3Ro''@;'; put 'put ''JiZudWxsIT09YS5zZWxlY3RlZEZpbGUpLF9lKCksUmUoIm5nSWYiLGEucGFyc2VkRGF0YXNldHMubGVuZ3RoJiYhYS5zdWJtaXR0ZWRDc3ZEYXRhc2V0cy5sZW5ndGgpLF9lKCksUmUoIm5nSWYiLGEuc3VibWl0dGVkQ3N2RGF0YXNldHMubGVuZ3RoKSxfZSgpLFJlKCJuZ0lmIixhLmFjdGl2''@;'; put 'put ''ZVN1Ym1pdHRlZENzdkRhdGFzZXQpfX1mdW5jdGlvbiBaNHQobCxjKXtpZigxJmwmJihnZSgwLCJwIiw4NSksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxtcigiIER1ZSB0byBjdXJyZW50IGxpY2VuY2UsIG9ubHkgIixhLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93''@;'; put 'put ''c19saW1pdCwiIHJvd3MgaW4gZWFjaCBmaWxlIHdpbGwgYmUgc3VibWl0dGVkLiBUbyByZW1vdmUgdGhlIHJlc3RyaWN0aW9uLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8uICIpfX12YXIgcHk9ZnVuY3Rpb24obCl7cmV0dXJuIGwucmVhZGluZz0iUmVhZGluZyB0aGUgZmls''@;'; put 'put ''ZSIsbC5wYXJzaW5nPSJTZWFyY2hpbmcgZm9yIHRoZSBkYXRhIGluIHRoZSBmaWxlIixsLnBhcnNlZD0iU2VhcmNoaW5nIGZvciB0aGUgZGF0YSBmaW5pc2hlZCIsbC5ub3RTZWxlY3RlZD0iRmlsZSBub3Qgc2VsZWN0ZWQiLGx9KHB5fHx7fSk7Y29uc3QgWTR0PVt7cGF0aDoiIixjb21wb25l''@;'; put 'put ''bnQ6cXB0LGNoaWxkcmVuOlt7cGF0aDoiIixjb21wb25lbnQ6KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYsUyxWKXt0aGlzLmV2ZW50U2VydmljZT1hLHRoaXMubGljZW5jZVNlcnZpY2U9ZCx0aGlzLmhlbHBlclNlcnZpY2U9aCx0aGlzLnNhc1N0b3JlU2VydmljZT1mLHRo''@;'; put 'put ''aXMuc3ByZWFkc2hlZXRTZXJ2aWNlPXYsdGhpcy5zYXNTZXJ2aWNlPVMsdGhpcy5jZHI9Vix0aGlzLmNvbnRlbnRDb250YWluZXJDbGFzcz0hMCx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLkluZmluaXR5PTEvMCx0aGlzLmZpbGVMb2Fk''@;'; put 'put ''aW5nU3RhdGU9cHkubm90U2VsZWN0ZWQsdGhpcy5GaWxlTG9hZGluZ1N0YXRlPXB5LHRoaXMuaG90VGFibGVMaWNlbnNlS2V5PXZvaWQgMCx0aGlzLmhvdFRhYmxlTWF4Um93cz10aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3ZXJfcm93c19hbGxvd2VkfHwxLzAsdGhpcy5jc3ZGaWxlcz1b''@;'; put 'put ''XSx0aGlzLmNzdlN1Ym1pdHRpbmc9ITEsdGhpcy5hdXRvRGV0ZWN0aW5nQ29sdW1ucz0hMSx0aGlzLnNlbGVjdGVkRmlsZT1udWxsLHRoaXMucGFyc2VkRGF0YXNldHM9W10sdGhpcy5zdWJtaXR0ZWRDc3ZEYXRhc2V0cz1bXSx0aGlzLmRhdGFzZXRzTG9hZGluZz0hMSx0aGlzLnVwbG9hZExv''@;'; put 'put ''YWRpbmc9ITEsdGhpcy5zdWJtaXRMb2FkaW5nPSExLHRoaXMubWF0Y2hlZERhdGFzZXRzPVtdLHRoaXMuc2hlZXROYW1lcz1bXSx0aGlzLnVzZXJJbnB1dERhdGFzZXRzPSIiLHRoaXMubGlic0FuZFRhYmxlcz17fSx0aGlzLnNob3dTdWJtaXRSZWFzb25Nb2RhbD0hMSx0aGlzLnN1Ym1pdFJl''@;'; put 'put ''YXNvbk1lc3NhZ2U9IiIsdGhpcy5ob3RVc2VyRGF0YXNldHM9e2NvbEhlYWRlcnM6WyJMaWJyYXJ5IiwiVGFibGUiXSxkYXRhOltbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIiLCIiXSxbIiIsIiJdLFsiIiwiIl0sWyIi''@;'; put 'put ''LCIiXV0sY29sdW1uczpbe3R5cGU6ImF1dG9jb21wbGV0ZSIsZmlsdGVyOiExLHNvdXJjZTpbXX0se3R5cGU6ImF1dG9jb21wbGV0ZSIsZmlsdGVyOiExLHNvdXJjZTpbXX1dLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjMwNXB4IixjbGFzc05hbWU6WyJodERhcmsiXSxjb250ZXh0TWVudTp7aXRl''@;'; put 'put ''bXM6e3Jvd19hYm92ZTp7bmFtZToiSW5zZXJ0IFJvdyBhYm92ZSJ9LHJvd19iZWxvdzp7bmFtZToiSW5zZXJ0IFJvdyBiZWxvdyJ9fX0sbWFudWFsUm93TW92ZTohMCxjb2x1bW5Tb3J0aW5nOiEwfSx0aGlzLmFmdGVyR2V0Q29sSGVhZGVyPUtwdCx0aGlzLmhvdFJlZ2lzdGVyZXI9bmV3IFdt''@;'; put 'put ''fW5nT25Jbml0KCl7dGhpcy5saWNlbmNlU2VydmljZS5ob3RfbGljZW5zZV9rZXkuc3Vic2NyaWJlKGE9Pnt0aGlzLmhvdFRhYmxlTGljZW5zZUtleT1hfSl9bmdBZnRlckNvbnRlbnRJbml0KCl7SG4uZWRpdG9yLnN0YXJ0dXBTZXQ/dGhpcy5nZXRGcm9tR2xvYmFscygpOnRoaXMuZXZlbnRT''@;'; put 'put ''ZXJ2aWNlLm9uU3RhcnR1cERhdGFMb2FkZWQuc3Vic2NyaWJlKCgpPT57dGhpcy5nZXRGcm9tR2xvYmFscygpfSl9Z2V0RnJvbUdsb2JhbHMoKXt0aGlzLmxpYnNBbmRUYWJsZXM9SG4uZWRpdG9yLmxpYnNBbmRUYWJsZXM7Y29uc3QgYT1PYmplY3Qua2V5cyh0aGlzLmxpYnNBbmRUYWJsZXMp''@;'; put 'put ''O3RoaXMuaG90VXNlckRhdGFzZXRzPy5jb2x1bW5zJiYodGhpcy5ob3RVc2VyRGF0YXNldHMuY29sdW1uc1swXS5zb3VyY2U9YSl9b25GaWxlQ2hhbmdlKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7Y29uc3QgaD1hPy50YXJnZXQ/LmZpbGVzfHxbXTtpZihoLmxlbmd0aDwx''@;'; put 'put ''KXJldHVybiB2b2lkIGQuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIk5vIGZpbGUgZm91bmQuIixudWxsLCJGaWxlIFVwbG9hZCIpO2xldCBmPSIiO2ZvcihsZXQgdiBvZiBoKXtjb25zdCBTPXYubmFtZS5zcGxpdCgiLiIpLnBvcCgpO2lmKGZ8fChmPVMpLGYhPT1TKXJldHVy''@;'; put 'put ''biB2b2lkIGQuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk1peGVkIGV4dGVuc2lvbnMgZXJyb3IiLCJQbGVhc2Ugc2VsZWN0IGZpbGVzIHdpdGggc2FtZSBleHRlbnNpb24uIik7Zj1TfWlmKFsieGxzeCIsInhsc20iLCJ4bG0iXS5pbmNsdWRlcyhmKSlkLnNlbGVjdGVkRmlsZT1hLnRh''@;'; put 'put ''cmdldC5maWxlc1swXSxkLnNlbGVjdGVkRmlsZSYmKGQuZmlsZUxvYWRpbmdTdGF0ZT1weS5yZWFkaW5nLGQuc2VsZWN0ZWRGaWxlLnNpemVNQj1kLnNwcmVhZHNoZWV0U2VydmljZS5ieXRlc1RvTUIoZC5zZWxlY3RlZEZpbGUuc2l6ZSksZC5zcHJlYWRzaGVldFNlcnZpY2UueGxzeFJlYWRG''@;'; put 'put ''aWxlKGQuc2VsZWN0ZWRGaWxlKS50aGVuKHY9PntkLmZpbGVMb2FkaW5nU3RhdGU9cHkucGFyc2luZyxkLnNlbGVjdGVkRmlsZS53b3JrYm9vaz12fSkpLGQuaW5pdFVzZXJJbnB1dEhvdCgpLGQub25BdXRvRGV0ZWN0Q29sdW1ucygpO2Vsc2V7aWYoImNzdiIhPT1mKXJldHVybiB2b2lkIGQu''@;'; put 'put ''ZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKG51bGwsIk9ubHkgZXhjZWwgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gKHhsc3gpIixudWxsLCJFeHRlbnNpb24gRXJyb3IiKTtkLm9uTXVsdGlDc3ZGaWxlcyhhLnRhcmdldC5maWxlcyl9YS50YXJnZXQudmFsdWU9IiJ9KSgpfW9uTXVsdGlD''@;'; put 'put ''c3ZGaWxlcyhhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2ZvcihsZXQgaCBvZiBhKXtjb25zdCBmPWQucGFyc2VEYXRhc2V0RnJvbUNzdk5hbWUoaC5uYW1lKTtkLmlzVmFsaWREYXRhc2V0Rm9ybWF0KGYpJiZkLmlzVmFsaWREYXRhc2V0UmVmZXJlbmNlKGYpJiZkLmNzdkZp''@;'; put 'put ''bGVzLnB1c2goe2ZpbGU6aCxmaWxlTmFtZTpoLm5hbWV9KX1kLmNzdkZpbGVzLmxlbmd0aD8oZC5jc3ZTdWJtaXR0aW5nPSEwLHlpZWxkIGQuc3VibWl0Q3N2RmlsZXMoKSxkLmNzdlN1Ym1pdHRpbmc9ITEpOmQuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIkNTViBVcGxvYWQiLCJOb25l''@;'; put 'put ''IG9mIHRoZSBhdHRhY2hlZCBDU1YgZmlsZSBuYW1lcyBtYXRjaGVkIGFuIGFjdHVhbCBkYXRhc2V0LiIpfSkoKX1vbkRpc2NhcmRGaWxlKCl7dGhpcy5zZWxlY3RlZEZpbGU9bnVsbCx0aGlzLnVzZXJJbnB1dERhdGFzZXRzPSIifW9uU3RhcnRQYXJzaW5nRmlsZSgpe3ZhciBhPXRoaXM7cmV0''@;'; put 'put ''dXJuIFkoZnVuY3Rpb24qKCl7YS51cGxvYWRMb2FkaW5nPSEwO2NvbnN0IGQ9W107bGV0IGg9W107Zm9yKGxldCBmIG9mIGEubWF0Y2hlZERhdGFzZXRzKXtjb25zdCB2PWEuZmV0Y2hEYXRhc2V0KGYpO2QucHVzaCh2KX1Qcm9taXNlLmFsbFNldHRsZWQoZCkudGhlbihmPT57Zi5mb3JFYWNo''@;'; put 'put ''KFM9PnsiZnVsZmlsbGVkIj09PVMuc3RhdHVzJiZTLnZhbHVlJiZoLnB1c2goUy52YWx1ZSl9KSxhLnVwbG9hZExvYWRpbmc9ITEsYS5idWlsZERhdGFzZXRzT2JqZWN0cyhoKS5mb3JFYWNoKFM9PnthLnBhcnNlZERhdGFzZXRzLnB1c2goe2xpYmRzOlMubGliZHMsaW5jbHVkZUluU3VibWlz''@;'; put 'put ''c2lvbjohMCxkYXRhc2V0SW5mbzpTLHBhcnNpbmdUYWJsZTohMH0pfSksYS53b3JrYm9va0xvYWRlZCgpLnRoZW4oUz0+e2ZvcihsZXQgViBvZiBhLnBhcnNlZERhdGFzZXRzKWEuc3ByZWFkc2hlZXRTZXJ2aWNlLnBhcnNlRXhjZWxGaWxlKHtmaWxlOmEuc2VsZWN0ZWRGaWxlLHdvcmtib29r''@;'; put 'put ''OlMscGFzc3dvcmQ6YS5zZWxlY3RlZEZpbGUucGFzc3dvcmR8fHZvaWQgMCxkY1ZhbGlkYXRvcjpWLmRhdGFzZXRJbmZvLmRjVmFsaWRhdG9yLGhlYWRlclBrczpWLmRhdGFzZXRJbmZvLmhlYWRlclBrcyxoZWFkZXJBcnJheTpWLmRhdGFzZXRJbmZvLmhlYWRlckFycmF5LGhlYWRlclNob3c6''@;'; put 'put ''W10sdGltZUhlYWRlcnM6Vi5kYXRhc2V0SW5mby50aW1lSGVhZGVycyxkYXRlSGVhZGVyczpWLmRhdGFzZXRJbmZvLmRhdGVIZWFkZXJzLGRhdGVUaW1lSGVhZGVyczpWLmRhdGFzZXRJbmZvLmRhdGVUaW1lSGVhZGVycyx4bFJ1bGVzOlYuZGF0YXNldEluZm8ueGxSdWxlc30pLnRoZW4oUT0+''@;'; put 'put ''e2lmKGEuZmlsZUxvYWRpbmdTdGF0ZT1weS5wYXJzZWQsUSYmUS5kYXRhKXtsZXQgZGU9W107US5kYXRhLm1hcChwZT0+e2xldCBDZT17fTtRLmhlYWRlclNob3cubWFwKChPZSxZZSk9PntDZVtPZV09cGVbWWVdfSksQ2UuX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19ffHwoQ2UuX19f''@;'; put 'put ''X19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fPSJObyIpLGRlLnB1c2goQ2UpfSksVi5kYXRhc291cmNlPWRlLFYucGFyc2VSZXN1bHQ9USxWLnBhcnNpbmdUYWJsZT0hMX19KS5jYXRjaChRPT57Y29uc29sZS53YXJuKCJQYXJzaW5nIGV4Y2VsIGZpbGUgZXJyb3IuIixRKSxWLmRhdGFzb3Vy''@;'; put 'put ''Y2U9W10sVi5pbmNsdWRlSW5TdWJtaXNzaW9uPSExLFYucGFyc2luZ1RhYmxlPSExfSl9KX0pfSkoKX1vblN1Ym1pdEFsbCgpe3RoaXMudGFibGVzVG9TdWJtaXQubGVuZ3RoP3RoaXMuc2hvd1N1Ym1pdFJlYXNvbk1vZGFsPSEwOnRoaXMuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk5v''@;'; put 'put ''IHRhYmxlcyB0byBzdWJtaXQiLCJQbGVhc2UgaW5jbHVkZSBhdCBsZWFzdCBvbmUgdGFibGUgdG8gcHJvY2VlZC4iKX1vbkRpc2NhcmQoKXt0aGlzLnBhcnNlZERhdGFzZXRzPVtdLHRoaXMubWF0Y2hlZERhdGFzZXRzPVtdLHRoaXMuc2VsZWN0ZWRGaWxlPW51bGwsdGhpcy51c2VySW5wdXRE''@;'; put 'put ''YXRhc2V0cz0iIix0aGlzLnN1Ym1pdFJlYXNvbk1lc3NhZ2U9IiJ9aW5pdEhvdCgpe3NldFRpbWVvdXQoKCk9Pnt0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90UmVnaXN0ZXJlci5nZXRJbnN0YW5jZSgiaG90SW5zdGFuY2UiKTtjb25zdCBkPXRoaXMuY29udGVudEFyZWFSZWYubmF0aXZlRWxl''@;'; put 'put ''bWVudC5jbGllbnRIZWlnaHQtMTYwKyJweCI7dGhpcy5hY3RpdmVQYXJzZWREYXRhc2V0JiZ0aGlzLmhvdEluc3RhbmNlLnVwZGF0ZVNldHRpbmdzKHtkYXRhOnRoaXMuYWN0aXZlUGFyc2VkRGF0YXNldC5kYXRhc291cmNlfHxbXSxjb2xIZWFkZXJzOnRoaXMuYWN0aXZlUGFyc2VkRGF0YXNl''@;'; put 'put ''dC5kYXRhc2V0SW5mby5oZWFkZXJDb2x1bW5zLGNvbHVtbnM6dGhpcy5hY3RpdmVQYXJzZWREYXRhc2V0LmRhdGFzZXRJbmZvLmRjVmFsaWRhdG9yPy5nZXRSdWxlcygpLHJlYWRPbmx5OiEwLGhlaWdodDpkfHwiMzAwcHgiLGNsYXNzTmFtZToiaHREYXJrIn0pfSl9aW5pdFVzZXJJbnB1dEhv''@;'; put 'put ''dCgpe3ZhciBhPXRoaXM7c2V0VGltZW91dCgoKT0+e3RoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldD10aGlzLmhvdFJlZ2lzdGVyZXIuZ2V0SW5zdGFuY2UoImhvdEluc3RhbmNlVXNlckRhdGFzZXQiKSx0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuYWRkSG9vaygiYmVmb3JlQ2hhbmdl''@;'; put 'put ''IiwoZCxoKT0+e2lmKGQpZm9yKGxldCBmIG9mIGQpZiYmZlszXSYmKGZbM109ZlszXS50b1VwcGVyQ2FzZSgpKX0pLHRoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5hZGRIb29rKCJhZnRlckNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZD1ZKGZ1bmN0aW9uKihoLGYpe2lmKGgpeyJlZGl0Ij09''@;'; put 'put ''PWYmJih5aWVsZCBhLm9uVXNlcklucHV0RGF0YXNldHNDaGFuZ2UoKSk7Zm9yKGxldCB2IG9mIGgpYS5tYXJrVW5tYXRjaGVkUm93cyh2WzBdKTthLmR5bmFtaWNDZWxsVmFsaWRhdGlvbnMoKSxhLmhvdEluc3RhbmNlVXNlckRhdGFzZXQucmVuZGVyKCl9fSk7cmV0dXJuIGZ1bmN0aW9uKGgs''@;'; put 'put ''Zil7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSksdGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LmFkZEhvb2soImFmdGVyUmVtb3ZlUm93IixmdW5jdGlvbigpe3ZhciBkPVkoZnVuY3Rpb24qKGgsZix2LFMpe3lpZWxkIGEub25Vc2VySW5wdXREYXRhc2V0c0NoYW5nZSgp''@;'; put 'put ''O2ZvcihsZXQgViBvZiB2KWEubWFya1VubWF0Y2hlZFJvd3MoVil9KTtyZXR1cm4gZnVuY3Rpb24oaCxmLHYsUyl7cmV0dXJuIGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSl9KX1keW5hbWljQ2VsbFZhbGlkYXRpb25zKCl7dGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0LmdldERhdGEo''@;'; put 'put ''KS5mb3JFYWNoKChkLGgpPT57Y29uc3QgZj1kWzBdO2YmJmYubGVuZ3RoJiZ0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuc2V0Q2VsbE1ldGEoaCwxLCJzb3VyY2UiLHRoaXMubGlic0FuZFRhYmxlc1tmXSl9KX1tYXJrVW5tYXRjaGVkUm93cyhhKXtjb25zdCBkPXRoaXMuaG90SW5zdGFu''@;'; put 'put ''Y2VVc2VyRGF0YXNldC5nZXREYXRhQXRSb3coYSksaD1gJHtkWzBdfS4ke2RbMV19YCxmPXRoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5nZXRDZWxsTWV0YUF0Um93KGEpO2QmJmRbMF0mJmRbMV0/dGhpcy5tYXRjaGVkRGF0YXNldHMuaW5jbHVkZXMoaCk/Zi5mb3JFYWNoKHY9Pnt0aGlz''@;'; put 'put ''LmhvdEluc3RhbmNlVXNlckRhdGFzZXQuc2V0Q2VsbE1ldGEoYSx2LmNvbCwiY2xhc3NOYW1lIiwiIil9KTpmLmZvckVhY2godj0+e3RoaXMuaG90SW5zdGFuY2VVc2VyRGF0YXNldC5zZXRDZWxsTWV0YShhLHYuY29sLCJjbGFzc05hbWUiLCJub3QtbWF0Y2hlZCIpfSk6Zi5mb3JFYWNoKHY9''@;'; put 'put ''Pnt0aGlzLmhvdEluc3RhbmNlVXNlckRhdGFzZXQuc2V0Q2VsbE1ldGEoYSx2LmNvbCwiY2xhc3NOYW1lIiwiIil9KX1vblVzZXJJbnB1dERhdGFzZXRzQ2hhbmdlKCl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGQpPT57dGhpcy5oZWxwZXJTZXJ2aWNlLmRlYm91bmNlQ2FsbCgxMDAsKCk9Pntj''@;'; put 'put ''b25zdCBoPXRoaXMuZ2V0RGF0YXNldHNGcm9tSG90KCk7dGhpcy5tYXRjaGVkRGF0YXNldHM9W10saC5mb3JFYWNoKGY9Pntjb25zdCB2PWYudHJpbSgpO3RoaXMuaXNWYWxpZERhdGFzZXRGb3JtYXQodikmJnRoaXMuaXNWYWxpZERhdGFzZXRSZWZlcmVuY2UodikmJiF0aGlzLm1hdGNoZWRE''@;'; put 'put ''YXRhc2V0cy5pbmNsdWRlcyh2KT90aGlzLm1hdGNoZWREYXRhc2V0cy5wdXNoKHYpOmNvbnNvbGUud2FybihgU2hlZXQgbmFtZTogJHt2fSBpcyBub3QgYW4gYWN0dWFsIGRhdGFzZXQgcmVmZXJlbmNlLmApfSksdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpLGEodm9pZCAwKX0pfSl9b25BdXRv''@;'; put 'put ''RGV0ZWN0Q29sdW1ucygpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IGQ9ITE7aWYoeWllbGQgYS5wYXJzZUV4Y2VsU2hlZXROYW1lcygpLnRoZW4odj0+e2Euc2hlZXROYW1lcz12fSkuY2F0Y2godj0+e3YuaW5jbHVkZXMoInBhc3N3b3JkIikmJihkPSEwKX0pLGQpcmV0''@;'; put 'put ''dXJuIGEub25EaXNjYXJkRmlsZSgpLHZvaWQgYS5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiTG9ja2VkIGZpbGUiLCJXZSBmYWlsZWQgdG8gdW5sb2NrIHRoZSBmaWxlLiIpO2Euc2hlZXROYW1lcyYmKGEubWF0Y2hlZERhdGFzZXRzPVtdLGEudXNlcklucHV0RGF0YXNldHM9IiIsYS5z''@;'; put 'put ''aGVldE5hbWVzLmZvckVhY2goKHYsUyk9Pntjb25zdCBWPXYudHJpbSgpO2EuaXNWYWxpZERhdGFzZXRGb3JtYXQoVikmJmEuaXNWYWxpZERhdGFzZXRSZWZlcmVuY2UoVik/YS5tYXRjaGVkRGF0YXNldHMucHVzaChWKTpjb25zb2xlLndhcm4oYFNoZWV0IG5hbWU6ICR7Vn0gaXMgbm90IGFu''@;'; put 'put ''IGFjdHVhbCBkYXRhc2V0IHJlZmVyZW5jZS5gKX0pKSxhLnVzZXJJbnB1dERhdGFzZXRzPWEubWF0Y2hlZERhdGFzZXRzLmpvaW4oIlxuIik7Y29uc3QgaD1hLm1hdGNoZWREYXRhc2V0cy5tYXAodj0+W3Yuc3BsaXQoIi4iKVswXSx2LnNwbGl0KCIuIilbMV1dKSxmPWEuaG90VXNlckRhdGFz''@;'; put 'put ''ZXRzLmRhdGEubGVuZ3RoO2lmKGgubGVuZ3RoPGYpe2NvbnN0IHY9Zi1oLmxlbmd0aDtmb3IobGV0IFM9MDtTPHY7UysrKWgucHVzaChbIiIsIiJdKX1hLmhvdEluc3RhbmNlVXNlckRhdGFzZXQudXBkYXRlRGF0YShoKSxhLmR5bmFtaWNDZWxsVmFsaWRhdGlvbnMoKX0pKCl9b25QYXJzZWRE''@;'; put 'put ''YXRhc2V0Q2xpY2soYSl7dGhpcy5kZXNlbGVjdEFsbFBhcnNlZERhdGFzZXRzKCksYS5hY3RpdmU9ITAsdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuaW5pdEhvdCgpfW9uU3VibWl0dGVkQ3N2RGF0YXNldENsaWNrKGEpe3RoaXMuZGVzZWxlY3RBbGxTdWJtaXR0ZWRDc3ZEYXRhc2V0''@;'; put 'put ''cygpLGEuYWN0aXZlPSEwfWdldCBhY3RpdmVQYXJzZWREYXRhc2V0KCl7cmV0dXJuIHRoaXMucGFyc2VkRGF0YXNldHMuZmluZChhPT5hLmFjdGl2ZSl9Z2V0IGFjdGl2ZVN1Ym1pdHRlZENzdkRhdGFzZXQoKXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWRDc3ZEYXRhc2V0cy5maW5kKGE9PmEuYWN0''@;'; put 'put ''aXZlKX1nZXQgbm90Rm91bmREYXRhc2V0cygpe3JldHVybiB0aGlzLmdldERhdGFzZXRzRnJvbUhvdCgpLmZpbHRlcihkPT4hdGhpcy5tYXRjaGVkRGF0YXNldHMuaW5jbHVkZXMoZC50cmltKCkpKS5maWx0ZXIoZD0+ZC5sZW5ndGgpfWdldCBpc0hvdEhpZGRlbigpe2lmKCF0aGlzLmhvdElu''@;'; put 'put ''c3RhbmNlKXJldHVybiEwO3RyeXtjb25zdCBhPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2V0dGluZ3MoKS5jbGFzc05hbWU7cmV0dXJuISFhJiZhLmluY2x1ZGVzKCJodEN1c3RvbUhpZGRlbiIpfWNhdGNoe3JldHVybiEwfX1nZXQgdGFibGVzVG9TdWJtaXQoKXtyZXR1cm4gdGhpcy5wYXJzZWRE''@;'; put 'put ''YXRhc2V0cy5maWx0ZXIoYT0+YS5kYXRhc291cmNlJiZhLnBhcnNlUmVzdWx0JiZhLmluY2x1ZGVJblN1Ym1pc3Npb24pfWdldCBzdWJtaXR0aW5nQ3N2KCl7cmV0dXJuIHRoaXMuY3N2RmlsZXMubGVuZ3RoPjB9Z2V0IGV4Y2Vsc1N1Ym1pdHRlZCgpe3JldHVybiEhdGhpcy5wYXJzZWREYXRh''@;'; put 'put ''c2V0cy5maWx0ZXIoYT0+YS5zdWJtaXRSZXN1bHQpLmxlbmd0aH1kb3dubG9hZEZpbGUoYSl7dGhpcy5oZWxwZXJTZXJ2aWNlLmRvd25sb2FkVGV4dEZpbGUoYHN0YWdlZGF0YS0ke3RoaXMuYWN0aXZlU3VibWl0dGVkQ3N2RGF0YXNldD8ubGliZHN9LWxvZ2AsSlNPTi5zdHJpbmdpZnkoYSkp''@;'; put 'put ''fXN1Ym1pdENzdkZpbGVzKCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgZD1bXTtmb3IobGV0IGggb2YgYS5jc3ZGaWxlcyl7Y29uc3QgZj1hLnBhcnNlRGF0YXNldEZyb21Dc3ZOYW1lKGguZmlsZU5hbWUpO2xldCB2LFM7eWllbGQgYS5zYXNTZXJ2aWNlLnVwbG9hZEZp''@;'; put 'put ''bGUoInNlcnZpY2VzL2VkaXRvcnMvbG9hZGZpbGUiLFtoXSx7dGFibGU6Zn0pLnRoZW4oVj0+e3R5cGVvZiBWLmFkYXB0ZXJSZXNwb25zZS5zYXNqc0Fib3J0PCJ1Ij92PVYuYWRhcHRlclJlc3BvbnNlLnNhc2pzQWJvcnQ6Uz1WLmFkYXB0ZXJSZXNwb25zZX0sVj0+e2NvbnNvbGUuZXJyb3Io''@;'; put 'put ''ImVyciIsViksdj1WLmFkYXB0ZXJSZXNwb25zZX0pLGQucHVzaCh7c3VjY2VzczpTLGVycm9yOnYsbGliZHM6Zn0pfWEuc3VibWl0dGVkQ3N2RGF0YXNldHM9ZH0pKCl9ZmV0Y2hEYXRhc2V0KGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aWYoYSlyZXR1cm4gZC5zYXNTdG9y''@;'; put 'put ''ZVNlcnZpY2UuY2FsbFNlcnZpY2Uoe0xJQkRTOmEsT1VUREVTVDoiV0VCIn0sIlNBU0NvbnRyb2xUYWJsZSIsImVkaXRvcnMvZ2V0ZGF0YSIsYSkudGhlbihmPT5mKS5jYXRjaChmPT57Y29uc29sZS53YXJuKGBFcnJvciBmZXRjaGluZyAke2F9YCxmKX0pfSkoKX1zdWJtaXRUYWJsZXMoYSl7''@;'; put 'put ''dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtjb25zb2xlLmluZm8oIlN1Ym1pdHRpbmcgbXVsdGlwbGUgdGFibGVzIixkLnBhcnNlZERhdGFzZXRzKSxkLnN1Ym1pdExvYWRpbmc9ITA7Zm9yKGxldCBoIG9mIGQucGFyc2VkRGF0YXNldHMpe2lmKCFoLnBhcnNlUmVzdWx0fHwhaC5k''@;'; put 'put ''YXRhc291cmNlfHwhaC5pbmNsdWRlSW5TdWJtaXNzaW9ufHxhJiYhYS5pbmNsdWRlcyhoLmxpYmRzKSljb250aW51ZTtsZXQgZj17fTtkLnN1Ym1pdFJlYXNvbk1lc3NhZ2U9ZC5zdWJtaXRSZWFzb25NZXNzYWdlLnJlcGxhY2UoL1xuL2csIi4gIiksZi5BQ1RJT049IkxPQUQiLGYuTUVTU0FH''@;'; put 'put ''RT1kLnN1Ym1pdFJlYXNvbk1lc3NhZ2UsZi5MSUJEUz1oLmxpYmRzO2xldCB2PWguZGF0YXNvdXJjZTtpZih2KXt2PXYubWFwKENlPT57bGV0IE9lPUNlLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19fXztyZXR1cm4gZGVsZXRlIENlLl9fX19fREVMRVRFX19USElTX19SRUNPUkRfX19f''@;'; put 'put ''XyxDZS5fX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX189T2UsT2JqZWN0LmtleXMoQ2UpLm1hcChZZT0+eyJudW1lcmljIj09PWguZGF0YXNldEluZm8uZGNWYWxpZGF0b3I/LmdldFJ1bGUoWWUpPy50eXBlJiYiLiI9PT1DZVtZZV0mJihDZVtZZV09bnVsbCl9KSxDZX0pO2NvbnN0IFM9''@;'; put 'put ''di5zbGljZSgwLGQubGljZW5jZVN0YXRlLnZhbHVlLnN1Ym1pdF9yb3dzX2xpbWl0KTtsZXQgVixRLGRlO3lpZWxkIGQuc2FzU3RvcmVTZXJ2aWNlLnVwZGF0ZVRhYmxlKGYsUywiU0FTQ29udHJvbFRhYmxlIiwiZWRpdG9ycy9zdGFnZWRhdGEiLGguZGF0YXNldEluZm8uZGF0YS4kc2FzZGF0''@;'; put 'put ''YSwhMCx7ZGVidWc6ITB9KS50aGVuKENlPT57UT1DZS5hZGFwdGVyUmVzcG9uc2UsZGU9Q2UubG9nfSkuY2F0Y2goQ2U9Pntjb25zb2xlLmVycm9yKCJlcnIiLENlKSxWPUNlLmFkYXB0ZXJSZXNwb25zZSxkZT1DZS5sb2d9KSxoLnN1Ym1pdFJlc3VsdD17c3VjY2VzczpRLGVycm9yOlYsbG9n''@;'; put 'put ''OmRlLHBhcnNlUmVzdWx0OmgucGFyc2VSZXN1bHQsbGliZHM6aC5saWJkc319fWQuc2hvd1N1Ym1pdFJlYXNvbk1vZGFsPSExLGQuc3VibWl0TG9hZGluZz0hMSxkLmRlc2VsZWN0QWxsUGFyc2VkRGF0YXNldHMoKX0pKCl9cmVTdWJtaXRUYWJsZShhKXt2YXIgZD10aGlzO3JldHVybiBZKGZ1''@;'; put 'put ''bmN0aW9uKigpe3lpZWxkIGQuc3VibWl0VGFibGVzKFthLmxpYmRzXSk7Y29uc3QgaD1kLnBhcnNlZERhdGFzZXRzLmZpbmQoZj0+Zi5saWJkcz09PWEubGliZHMpO2gmJihoLmFjdGl2ZT0hMCl9KSgpfXdvcmtib29rTG9hZGVkKCl7cmV0dXJuIG5ldyBQcm9taXNlKChhLGQpPT57dGhpcy5z''@;'; put 'put ''ZWxlY3RlZEZpbGV8fGQoIk5vIGZpbGUgc2VsZWN0ZWQiKSx0aGlzLndvcmtib29rSW50ZXJ2YWw9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLnNlbGVjdGVkRmlsZS53b3JrYm9vayYmKGNsZWFySW50ZXJ2YWwodGhpcy53b3JrYm9va0ludGVydmFsKSxhKHRoaXMuc2VsZWN0ZWRGaWxlLndvcmti''@;'; put 'put ''b29rKSl9LDUwMCl9KX1wYXJzZURhdGFzZXRGcm9tQ3N2TmFtZShhKXtjb25zdCBkPWEuc3BsaXQoIi4iKTtyZXR1cm4gZC5wb3AoKSxkLmpvaW4oIi4iKX1nZXREYXRhc2V0c0Zyb21Ib3QoKXtyZXR1cm4gdGhpcy5ob3RJbnN0YW5jZVVzZXJEYXRhc2V0P3RoaXMuaG90SW5zdGFuY2VVc2Vy''@;'; put 'put ''RGF0YXNldC5nZXREYXRhKCkuZmlsdGVyKGQ9PmRbMF0/Lmxlbmd0aCYmZFsxXT8ubGVuZ3RoKS5tYXAoZD0+ZD9gJHtkWzBdfS4ke2RbMV19YDoiIik6W119cGFyc2VFeGNlbFNoZWV0TmFtZXMoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe3JldHVybiBuZXcgUHJvbWlzZSgo''@;'; put 'put ''ZCxoKT0+e2lmKCFhLnNlbGVjdGVkRmlsZSlyZXR1cm4gZChbXSk7YS5zcHJlYWRzaGVldFNlcnZpY2UucGFyc2VFeGNlbFNoZWV0TmFtZXMoYS5zZWxlY3RlZEZpbGUpLnRoZW4oZj0+KGYucGFzc3dvcmQmJihhLnNlbGVjdGVkRmlsZS5wYXNzd29yZD1mLnBhc3N3b3JkKSxkKGYuc2hlZXRO''@;'; put 'put ''YW1lcykpKS5jYXRjaChmPT5oKGYpKX0pfSkoKX1pc1ZhbGlkRGF0YXNldEZvcm1hdChhKXtyZXR1cm4vXlx3ezEsOH1cLlx3ezEsMzJ9JC9naW0udGVzdChhKX1pc1ZhbGlkRGF0YXNldFJlZmVyZW5jZShhKXtjb25zdCBkPWEuc3BsaXQoIi4iKVswXSxoPWEuc3BsaXQoIi4iKVsxXTtyZXR1''@;'; put 'put ''cm4hIXRoaXMubGlic0FuZFRhYmxlc1tkXT8uaW5jbHVkZXMoaCl9YnVpbGREYXRhc2V0c09iamVjdHMoYSl7aWYoIWEpcmV0dXJuW107Y29uc3QgZD1bXTtmb3IobGV0IGggb2YgYSlpZihoLmRhdGEpe2NvbnN0IGY9ey4uLmgsaG90VGFibGU6e2RhdGE6aC5kYXRhLnNhc2RhdGEsc2V0dGlu''@;'; put 'put ''Z3M6e319LGNvbHM6W10saGVhZGVyQ29sdW1uczpbXSxoZWFkZXJQa3M6W10saGVhZGVyQXJyYXk6W10sZGF0ZUhlYWRlcnM6W10sdGltZUhlYWRlcnM6W10sZGF0ZVRpbWVIZWFkZXJzOltdLHhsUnVsZXM6W10sY29sdW1uSGVhZGVyOltdfTtmLmNvbHM9aC5kYXRhLmNvbHMsZi5oZWFkZXJD''@;'; put 'put ''b2x1bW5zPWguZGF0YS5zYXNwYXJhbXNbMF0uQ09MSEVBREVSUy5zcGxpdCgiLCIpLGYuaGVhZGVyUGtzPWguZGF0YS5zYXNwYXJhbXNbMF0uUEsuc3BsaXQoIiAiKSwtMSE9PWYuaGVhZGVyQ29sdW1ucy5pbmRleE9mKCJfX19fX0RFTEVURV9fVEhJU19fUkVDT1JEX19fX18iKSYmKGYuaGVh''@;'; put 'put ''ZGVyQ29sdW1uc1tmLmhlYWRlckNvbHVtbnMuaW5kZXhPZigiX19fX19ERUxFVEVfX1RISVNfX1JFQ09SRF9fX19fIildPSJEZWxldGU/IiksZi5oZWFkZXJBcnJheT1mLmhlYWRlckNvbHVtbnMuc2xpY2UoMSksIiIhPT1oLmRhdGEuc2FzcGFyYW1zWzBdLkRUVkFSUyYmKGYuZGF0ZUhlYWRl''@;'; put 'put ''cnM9aC5kYXRhLnNhc3BhcmFtc1swXS5EVFZBUlMuc3BsaXQoIiAiKSksIiIhPT1oLmRhdGEuc2FzcGFyYW1zWzBdLlRNVkFSUyYmKGYudGltZUhlYWRlcnM9aC5kYXRhLnNhc3BhcmFtc1swXS5UTVZBUlMuc3BsaXQoIiAiKSksIiIhPT1oLmRhdGEuc2FzcGFyYW1zWzBdLkRUVE1WQVJTJiYo''@;'; put 'put ''Zi5kYXRlVGltZUhlYWRlcnM9aC5kYXRhLnNhc3BhcmFtc1swXS5EVFRNVkFSUy5zcGxpdCgiICIpKSxoLmRhdGEueGxfcnVsZXMubGVuZ3RoPjAmJihmLnhsUnVsZXM9dGhpcy5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShoLmRhdGEueGxfcnVsZXMpKSxmLmRjVmFsaWRhdG9yPW5ldyBYcGUo''@;'; put 'put ''aC5kYXRhLnNhc3BhcmFtc1swXSxoLmRhdGEuJHNhc2RhdGEsaC5kYXRhLmNvbHMsaC5kYXRhLmRxcnVsZXMsaC5kYXRhLmRxZGF0YSksZi5jb2x1bW5IZWFkZXI9aC5kYXRhLnNhc3BhcmFtc1swXS5DT0xIRUFERVJTLnNwbGl0KCIsIiksZC5wdXNoKGYpfXJldHVybiBkfWRlc2VsZWN0QWxs''@;'; put 'put ''UGFyc2VkRGF0YXNldHMoKXtmb3IobGV0IGEgb2YgdGhpcy5wYXJzZWREYXRhc2V0cylhLmFjdGl2ZT0hMX1kZXNlbGVjdEFsbFN1Ym1pdHRlZENzdkRhdGFzZXRzKCl7Zm9yKGxldCBhIG9mIHRoaXMuc3VibWl0dGVkQ3N2RGF0YXNldHMpYS5hY3RpdmU9ITF9c3RhdGlje3RoaXMuXHUwMjc1''@;'; put 'put ''ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoRGwpLEplKEEwKSxKZShldSksSmUoWmQpLEplKHM0ZSksSmUodmEpLEplKGNhKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbXVsdGktZGF0YXNldCJdXSx2aWV3UXVlcnk6ZnVu''@;'; put 'put ''Y3Rpb24oZCxoKXtpZigxJmQmJkhvKFhwdCw3KSwyJmQpe2xldCBmO2xpKGY9Y2koKSkmJihoLmNvbnRlbnRBcmVhUmVmPWYuZmlyc3QpfX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24oZCxoKXsyJmQmJnByKCJjb250ZW50LWNvbnRhaW5lciIsaC5jb250ZW50Q29udGFpbmVy''@;'; put 'put ''Q2xhc3MpfSxkZWNsczozNyx2YXJzOjE4LGNvbnN0czpbWyJjb250ZW50QXJlYSIsIiJdLFsiZmlsZVVwbG9hZElucHV0IiwiIl0sWyJjbGFzcyIsIm15LTEwLW14LWF1dG8gdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgbWItMTAiLDQsIm5nSWYiXSxbNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCIsIm5vLWJvcmRlcnMiLCJoLTEwMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIi''@;'; put 'put ''LCJ3LTEwMCIsIm0tMCJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIHBvaW50ZXItZXZlbnRzLW5vbmUiLDQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxDbG9zYWJsZSJdLFsxLCJtb2Rh''@;'; put 'put ''bC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWyJjZHMtdGV4dCIsImJvZHkiLCJjbGFzcyIsImxpY2VuY2UtbGltaXQtbm90aWNlIG10LTAgbWItMTUiLDQsIm5nSWYiXSxbMSwidGV4dC1hcmVhLWZ1bGwtd2lkdGgiXSxbImZvciIsImZvcm1GaWVsZHNfOCIsMSwibWItNSIsImQtYmxvY2si''@;'; put 'put ''XSxbImNsclRleHRhcmVhIiwiIiwidGFiaW5kZXgiLCIwIiwidHlwZSIsInRleHQiLCJpZCIsImZvcm1GaWVsZHNfOCIsMSwic3VibWl0LXJlYXNvbiIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbImNkcy10ZXh0IiwiY2FwdGlvbl9jbGVhbiIsMSwibXQtMTAiXSxbMSwibW9kYWwt''@;'; put 'put ''Zm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsidHlwZSIsImJ1dHRvbiIsImlkIiwic3VibWl0LXRhYmxlcyIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsxLCJ0ZXh0LWNl''@;'; put 'put ''bnRlciJdLFsiY2xyTWVkaXVtIiwiIl0sWyJjZHMtdGV4dCIsImNhcHRpb25fY2xlYW4iLDEsIm10LTEwIiwidGV4dC1jZW50ZXIiXSxbMSwibXktMTAtbXgtYXV0byIsInRleHQtY2VudGVyIl0sWzEsInRleHQtY2VudGVyIiwibWItMTAiXSxbImlkIiwiYnJvd3NlLWZpbGUiLDEsImJ0biIs''@;'; put 'put ''ImJ0bi1wcmltYXJ5IiwiYnRuLXNtIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJoaWRkZW4iLCIiLCJpZCIsImZpbGUtdXBsb2FkIiwidHlwZSIsImZpbGUiLCJtdWx0aXBsZSIsIiIsMywiY2hhbmdlIl0sWyJjZHMtdGV4dCIsImNhcHRpb24iLDEsIm1sLTEwIiwibWItMTAiXSxbNCwibmdG''@;'; put 'put ''b3IiLCJuZ0Zvck9mIl0sWzEsImJ0biIsImJ0bi1kYW5nZXIiLCJidG4tc20iLCJtci0xMCIsMywiY2xpY2siXSxbImlkIiwic3VibWl0LWFsbCIsMSwiYnRuIiwiYnRuLXByaW1hcnkiLCJidG4tc20iLDMsImNsaWNrIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwid2hpdGVzcGFjZS1ub3dy''@;'; put 'put ''YXAiLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwzLCJjbGljayJdLFsxLCJtbC01Il0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSIsNCwibmdJZiJdLFsic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIiw0LCJu''@;'; put 'put ''Z0lmIl0sWyJzdGF0dXMiLCJkYW5nZXIiLCJzaGFwZSIsImV4Y2xhbWF0aW9uLWNpcmNsZSJdLFsic3RhdHVzIiwic3VjY2VzcyIsInNoYXBlIiwiY2hlY2stY2lyY2xlIl0sWyJzaGFwZSIsInRhYmxlIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRhYmxlIl0sWyJjbHJTbWFsbCIsIiIsNCwibmdJ''@;'; put 'put ''ZiJdLFsiY2xyU21hbGwiLCIiXSxbImNkcy10ZXh0IiwiY2FwdGlvbiIsMSwibWwtMTAiLCJtYi0xMCIsIm10LTEwIl0sWzEsImNsci10cmVlbm9kZS1saW5rIiwid2hpdGVzcGFjZS1ub3dyYXAiLDMsImNsaWNrIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIiwicG9pbnRlci1ldmVudHMtbm9u''@;'; put 'put ''ZSJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjQwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iLDEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSIsIm10LTEwIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQt''@;'; put 'put ''Y2VudGVyIiwibXQtMTUiXSxbMSwiZGF0YXNldC1pbnB1dC13cmFwcGVyIl0sWyJjZHMtdGV4dCIsInNlY29uZGFyeSByZWd1bGFyIiwxLCJtYi01Il0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsInNoYXBlIiwidHJhc2giLCJzdGF0dXMiLCJkYW5nZXIiLDEsIm1sLTUiLCJjdXJzb3ItcG9p''@;'; put 'put ''bnRlciIsMywiY2xpY2siXSxbImNkcy10ZXh0Iiwic2Vjb25kYXJ5IHJlZ3VsYXIiLDEsIm1iLTIwIl0sWyJjZHMtdGV4dCIsInNlY29uZGFyeSByZWd1bGFyIiwxLCJtYi0xNSJdLFsxLCJtYi01Il0sWyJob3RJZCIsImhvdEluc3RhbmNlVXNlckRhdGFzZXQiLCJpZCIsImhvdFRhYmxlVXNl''@;'; put 'put ''ckRhdGFzZXQiLCJzdHJldGNoSCIsImFsbCIsMSwibXQtMTUiLDMsImFmdGVyR2V0Q29sSGVhZGVyIiwic2V0dGluZ3MiLCJsaWNlbnNlS2V5Il0sWzEsImRhdGFzZXQtc2VsZWN0aW9uLWFjdGlvbnMiLCJ0ZXh0LXJpZ2h0IiwibXQtMTAiXSxbImlkIiwiY29udGludWUtYnRuIiwxLCJidG4i''@;'; put 'put ''LCJidG4tcHJpbWFyeSIsImJ0bi1zbSIsMywiY2xpY2siLCJkaXNhYmxlZCIsImNsckxvYWRpbmciXSxbInNoYXBlIiwicHJvY2Vzcy1vbi12bSIsInNpemUiLCI0MCIsMSwiaXMtaW5mbyIsImljb24tZGMtZmlsbCJdLFsiY2xhc3MiLCJkLWZsZXggY2xyLWp1c3RpZnktY29udGVudC1iZXR3''@;'; put 'put ''ZWVuIHAtMTAgbXQtMTUgc3VibWlzc2lvbi1yZXN1bHRzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImVycm9yLWZpZWxkIG10LTE1Iiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsInAtMTAiLCJtdC0xNSJdLFsiY2RzLXRleHQiLCJzZWNvbmRhcnkg''@;'; put 'put ''cmVndWxhciIsMSwibWItMTAiXSxbImNkcy10ZXh0Iiwic2Vjb25kYXJ5IHJlZ3VsYXIiXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwzLCJyb3V0ZXJMaW5rIl0sWzMsImNsclBvc2l0aW9uIiwiY2xyU2l6ZSJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyVG9nZ2xlIiwiIiwibmFtZSIsIm9w''@;'; put 'put ''dGlvbnMiLCJyZXF1aXJlZCIsIiIsInZhbHVlIiwib3B0aW9uMSIsMywibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiLCJkaXNhYmxlZCJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciB3LTEwMCIsNCwibmdJZiJdLFsiaG90SWQiLCJob3RJbnN0YW5jZSIsImlkIiwiaG90VGFibGUiLCJzdHJldGNo''@;'; put 'put ''SCIsImFsbCIsMSwibXQtMTUiLDMsImFmdGVyR2V0Q29sSGVhZGVyIiwiY2xhc3NOYW1lIiwibGljZW5zZUtleSIsIm11bHRpQ29sdW1uU29ydGluZyIsInZpZXdwb3J0Um93UmVuZGVyaW5nT2Zmc2V0IiwibWFudWFsQ29sdW1uUmVzaXplIiwiZmlsdGVycyJdLFsxLCJkLWZsZXgiLCJjbHIt''@;'; put 'put ''anVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJwLTEwIiwibXQtMTUiLCJzdWJtaXNzaW9uLXJlc3VsdHMiXSxbImNsYXNzIiwiY29sb3ItZ3JlZW4iLDQsIm5nSWYiXSxbImNsYXNzIiwiY29sb3ItcmVkIiw0LCJuZ0lmIl0sWyJjZHMtdGV4dCIsInNlY29uZGFyeSByZWd1bGFyIiw0LCJuZ0lm''@;'; put 'put ''Il0sWyJjbGFzcyIsImJ0biBidG4tcHJpbWFyeSBtdC0xMCIsMywiY2xyTG9hZGluZyIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImJ0biIsImJ0bi1wcmltYXJ5LW91dGxpbmUiLCJtdC0xMCIsMywiY2xpY2siXSxbMSwiY29sb3ItZ3JlZW4iXSxbMSwiY29sb3ItcmVkIl0sWzEsImJ0biIsImJ0''@;'; put 'put ''bi1wcmltYXJ5IiwibXQtMTAiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdLFsxLCJlcnJvci1maWVsZCIsIm10LTE1Il0sWzEsImxvZy13cmFwcGVyIl0sWyJjbGFzcyIsImQtZmxleCBjbHItYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVt''@;'; put 'put ''cy1jZW50ZXIiXSxbImNsclNtYWxsIiwiIiwxLCJtbC01Il0sWzEsInRleHQtY2VudGVyIiwidy0xMDAiXSxbMSwic3Bpbm5lci1tZCJdLFsxLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWJldHdlZW4iLCJwLTEwIl0sWyJjZHMtdGV4dCIsImJvZHkiLDEsImxpY2VuY2UtbGltaXQt''@;'; put 'put ''bm90aWNlIiwibXQtMCIsIm1iLTE1Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7aWYoMSZkKXtjb25zdCBmPVNuKCk7Z2UoMCwiYXBwLXNpZGViYXIiKSxndCgxLFFwdCwyLDAsImRpdiIsMikoMixlNHQsNSwxLCJkaXYiLDMpKDMsZjR0LDYsMiwibmctY29udGFpbmVyIiw0KSg0LHY0dCw1''@;'; put 'put ''LDEsIm5nLWNvbnRhaW5lciIsNCksbWUoKSxnZSg1LCJkaXYiLDUsMCkoNywiZGl2Iiw2KSg4LCJkaXYiLDcpKDksInAiLDgpLFBlKDEwLCJNdWx0aSBEYXRhc2V0IExvYWQiKSxtZSgpKCksZ3QoMTEsXzR0LDQsMCwiZGl2Iiw5KSgxMixVNHQsNSw0LCJuZy1jb250YWluZXIiLDQpLG1lKCko''@;'; put 'put ''KSxnZSgxMywiY2xyLW1vZGFsIiwxMCksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguc2hvd1N1Ym1pdFJlYXNvbk1vZGFsLFMpfHwoaC5zaG93U3VibWl0UmVhc29uTW9kYWw9UyksYnQoUyl9KSxnZSgxNCwiaDMiLDExKSxQZSgxNSksbWUo''@;'; put 'put ''KSxnZSgxNiwiZGl2IiwxMiksZ3QoMTcsWjR0LDIsMSwicCIsMTMpLGdlKDE4LCJkaXYiLDE0KSgxOSwibGFiZWwiLDE1KSxQZSgyMCwiTWVzc2FnZSIpLG1lKCksZ2UoMjEsInRleHRhcmVhIiwxNiksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLnN1''@;'; put 'put ''Ym1pdFJlYXNvbk1lc3NhZ2UsUyl8fChoLnN1Ym1pdFJlYXNvbk1lc3NhZ2U9UyksYnQoUyl9KSxtZSgpKCksZ2UoMjIsInAiLDE3KSxQZSgyMywiIFRhYmxlcyB3aWxsIGJlIHNlbnQgc2VxdWVudGlhbGx5LCBsb2dzIHdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGFsbCB0YWJsZXMgYXJlIHN1''@;'; put 'put ''Ym1pdHRlZC4gIiksbWUoKSgpLGdlKDI0LCJkaXYiLDE4KSgyNSwiYnV0dG9uIiwxOSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLnNob3dTdWJtaXRSZWFzb25Nb2RhbD0hMSl9KSxQZSgyNiwiIENhbmNlbCAiKSxtZSgpLGdlKDI3LCJidXR0b24iLDIwKSxJdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguc3VibWl0VGFibGVzKCkpfSksUGUoMjgsIiBTdWJtaXQgIiksbWUoKSgpKCksZ2UoMjksImNsci1tb2RhbCIsMTApLFdyKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLmNzdlN1Ym1p''@;'; put 'put ''dHRpbmcsUyl8fChoLmNzdlN1Ym1pdHRpbmc9UyksYnQoUyl9KSxnZSgzMCwiaDMiLDExKSxQZSgzMSksbWUoKSxnZSgzMiwiZGl2IiwxMikoMzMsImRpdiIsMjEpLFl0KDM0LCJjbHItc3Bpbm5lciIsMjIpLG1lKCksZ2UoMzUsInAiLDIzKSxQZSgzNiwiIFRoaXMgd2lsbCB0YWtlIGZldyBt''@;'; put 'put ''b21lbnRzICIpLG1lKCkoKSgpfTImZCYmKF9lKCksUmUoIm5nSWYiLGguZGF0YXNldHNMb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIiwhaC5wYXJzZWREYXRhc2V0cy5sZW5ndGgpLF9lKCksUmUoIm5nSWYiLGgucGFyc2VkRGF0YXNldHMubGVuZ3RoJiYhaC5zdWJtaXR0ZWRDc3ZEYXRhc2V0cy5s''@;'; put 'put ''ZW5ndGgpLF9lKCksUmUoIm5nSWYiLGguc3VibWl0dGVkQ3N2RGF0YXNldHMubGVuZ3RoKSxfZSg3KSxSZSgibmdJZiIsbnVsbD09PWguc2VsZWN0ZWRGaWxlJiYhaC5zdWJtaXR0aW5nQ3N2KSxfZSgpLFJlKCJuZ0lmIixudWxsIT09aC5zZWxlY3RlZEZpbGV8fGguc3VibWl0dGluZ0Nzdiks''@;'; put 'put ''X2UoKSxZcigiY2xyTW9kYWxPcGVuIixoLnNob3dTdWJtaXRSZWFzb25Nb2RhbCksUmUoImNsck1vZGFsQ2xvc2FibGUiLCExKSxfZSgyKSxfdSgiIFN1Ym1pdCAiLGgudGFibGVzVG9TdWJtaXQubGVuZ3RoLCIgIiwxPT09aC50YWJsZXNUb1N1Ym1pdC5sZW5ndGg/InRhYmxlIjoidGFibGVz''@;'; put 'put ''IiwiIGZvciBhcHByb3ZhbCAiKSxfZSgyKSxSZSgibmdJZiIsaC5saWNlbmNlU3RhdGUudmFsdWUuc3VibWl0X3Jvd3NfbGltaXQhPT1oLkluZmluaXR5KSxfZSg0KSxZcigibmdNb2RlbCIsaC5zdWJtaXRSZWFzb25NZXNzYWdlKSxfZSg0KSxSZSgiZGlzYWJsZWQiLGguc3VibWl0TG9hZGlu''@;'; put 'put ''ZyksX2UoMiksUmUoImNsckxvYWRpbmciLGguc3VibWl0TG9hZGluZyksX2UoMiksWXIoImNsck1vZGFsT3BlbiIsaC5jc3ZTdWJtaXR0aW5nKSxSZSgiY2xyTW9kYWxDbG9zYWJsZSIsITEpLF9lKDIpLF91KCIgU3VibWl0dGluZyAiLGguY3N2RmlsZXMubGVuZ3RoLCIgQ1NWICIsMT09PWgu''@;'; put 'put ''Y3N2RmlsZXMubGVuZ3RoPyJmaWxlIjoiZmlsZXMiLCIgIikpfSxkZXBlbmRlbmNpZXM6W1NiLGswLHVsLFEwLF9hLEpVLHVhLEFkLEgxLHk0LFlhLEdzLFBjLGl1LGwwLERoLCRzLGdSLGExLHMxLHdSLEY4LEg4LE44LHhkLHNwLFZzLCRpLFdqXSxzdHlsZXM6WyIubm8tdGFibGUtc2VsZWN0''@;'; put 'put ''ZWRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yKTt6LWlu''@;'; put 'put ''ZGV4OjEwO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjB9LmhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MTVweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkM2QzZDN9LmRhdGFzZXQtaW5wdXQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRo''@;'; put 'put ''OjUwMHB4O3dpZHRoOjEwMCV9LmRhdGFzZXQtaW5wdXQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0YXJlYVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoyMDBweDtoZWlnaHQ6MjAwcHh9LnN1Ym1pdC1yZWFzb25bX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6''@;'; put 'put ''NzBweDttYXgtaGVpZ2h0OjcwcHg7aGVpZ2h0OjcwcHh9LmxvZy13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAxMHB4O2hlaWdodDphdXRvfSAgdGQubm90LW1hdGNoZWR7YmFja2dyb3VuZC1jb2xvcjojZmYwMDAwNTR9LmRhdGFzZXQtc2VsZWN0aW9uLWFjdGlvbnNbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDN9LmxpY2VuY2UtbGltaXQtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyayl9LnN1Ym1pc3Npb24tcmVzdWx0c1tfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkM30iXX0pfX1yZXR1cm4gbH0pKCl9XX1dO2xldCBXNHQ9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1bW9kPWVpKHt0eXBlOmx9''@;'; put 'put ''KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W0NjLmZvckNoaWxkKFk0dCksQ2NdfSl9fXJldHVybiBsfSkoKTtvRigpO2xldCBHNHQ9KCgpPT57Y2xhc3MgbHtzdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1bW9kPWVpKHt0eXBlOmx9KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W2w3LFc0dCxyYyxjMCxWNyxvbyxKRSxyMl19KX19cmV0dXJuIGx9KSgpO2NvbnN0ICQ0dD1be3BhdGg6IiIsY29tcG9uZW50OmozdCxjaGlsZHJlbjpbe3BhdGg6IiIscGF0aE1hdGNoOiJm''@;'; put 'put ''dWxsIixyZWRpcmVjdFRvOiJ0YWJsZXMifSx7cGF0aDoidGFibGVzIixjb21wb25lbnQ6RXB0fSx7cGF0aDoiZXhjZWwtbWFwcyIsbG9hZENoaWxkcmVuOigpPT4kcHR9LHtwYXRoOiJtdWx0aS1sb2FkIixsb2FkQ2hpbGRyZW46KCk9Pkc0dH1dfV07bGV0IHE0dD0oKCk9PntjbGFzcyBse3N0''@;'; put 'put ''YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbQ2MuZm9yQ2hpbGQoJDR0KSxDY119KX19cmV0dXJuIGx9KSgpLEs0dD0oKCk9''@;'; put 'put ''PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbcTR0LHJjLGMwLFY3LG9vLEpFLHIyXX0pfX1yZXR1cm4g''@;'; put 'put ''bH0pKCksY0o9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQpe3RoaXMubGljZW5jZVNlcnZpY2U9YSx0aGlzLnJvdXRlcj1kfWNhbkFjdGl2YXRlKGEsZCl7cmV0dXJuISEodm9pZCAwIT09ZD8ucm9vdC5xdWVyeVBhcmFtcy5mb3JjZXx8ZD8udXJsLmluY2x1ZGVzKCJsaWNlbnNpbmcv''@;'; put 'put ''dXBkYXRlIikmJnRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWR8fG51bGwhPT10aGlzLmxpY2VuY2VTZXJ2aWNlLmlzQXBwQWN0aXZhdGVkLnZhbHVlJiYhMT09PXRoaXMubGljZW5jZVNlcnZpY2UuaXNBcHBBY3RpdmF0ZWQudmFsdWUpfHwodGhpcy5yb3V0ZXIubmF2aWdhdGVC''@;'; put 'put ''eVVybCgiL2hvbWUiKSwhMSl9Y2FuRGVhY3RpdmF0ZShhLGQsaCxmKXtyZXR1cm4hKGg/LnVybC5pbmNsdWRlcygibGljZW5zaW5nL3JlZ2lzdGVyIil8fHRoaXMubGljZW5jZVNlcnZpY2UuYXBwTG9ja2VkLnZhbHVlKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJu''@;'; put 'put ''IG5ldyhkfHxsKShjcihBMCksY3IoSnMpKX19c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjfSl9fXJldHVybiBsfSkoKTtsZXQgdzU9e2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFk''@;'; put 'put ''ZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9r''@;'; put 'put ''ZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfTtmdW5jdGlvbiBiNGUobCl7dzU9bH1jb25zdCB5NGU9L1smPD4iJ10vLFg0dD1uZXcgUmVnRXhwKHk0ZS5zb3VyY2UsImciKSx3NGU9L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykv''@;'; put 'put ''LEo0dD1uZXcgUmVnRXhwKHc0ZS5zb3VyY2UsImciKSxRNHQ9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9LEM0ZT1sPT5RNHRbbF07ZnVuY3Rpb24gQjAobCxjKXtpZihjKXtpZih5NGUudGVzdChsKSlyZXR1cm4gbC5yZXBsYWNl''@;'; put 'put ''KFg0dCxDNGUpfWVsc2UgaWYodzRlLnRlc3QobCkpcmV0dXJuIGwucmVwbGFjZShKNHQsQzRlKTtyZXR1cm4gbH1jb25zdCBlZ3Q9LyYoIyg/OlxkKyl8KD86I3hbMC05QS1GYS1mXSspfCg/Olx3KykpOz8vZ2k7ZnVuY3Rpb24gUzRlKGwpe3JldHVybiBsLnJlcGxhY2UoZWd0LChjLGEpPT4i''@;'; put 'put ''Y29sb24iPT09KGE9YS50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09YS5jaGFyQXQoMCk/IngiPT09YS5jaGFyQXQoMSk/U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhLnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK2Euc3Vic3RyaW5nKDEpKToiIil9Y29uc3Qg''@;'; put 'put ''dGd0PS8oXnxbXlxbXSlcXi9nO2Z1bmN0aW9uIFZhKGwsYyl7bD0ic3RyaW5nIj09dHlwZW9mIGw/bDpsLnNvdXJjZSxjPWN8fCIiO2NvbnN0IGE9e3JlcGxhY2U6KGQsaCk9PihoPShoPWguc291cmNlfHxoKS5yZXBsYWNlKHRndCwiJDEiKSxsPWwucmVwbGFjZShkLGgpLGEpLGdldFJlZ2V4''@;'; put 'put ''OigpPT5uZXcgUmVnRXhwKGwsYyl9O3JldHVybiBhfWNvbnN0IG5ndD0vW15cdzpdL2cscmd0PS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gTTRlKGwsYyxhKXtpZihsKXtsZXQgZDt0cnl7ZD1kZWNvZGVVUklDb21wb25lbnQoUzRlKGEpKS5yZXBsYWNlKG5ndCwi''@;'; put 'put ''IikudG9Mb3dlckNhc2UoKX1jYXRjaHtyZXR1cm4gbnVsbH1pZigwPT09ZC5pbmRleE9mKCJqYXZhc2NyaXB0OiIpfHwwPT09ZC5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PWQuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH1jJiYhcmd0LnRlc3QoYSkmJihhPWZ1bmN0aW9uIGFndChs''@;'; put 'put ''LGMpe2xGWyIgIitsXXx8KGxGWyIgIitsXT1pZ3QudGVzdChsKT9sKyIvIjp1RihsLCIvIiwhMCkpO2NvbnN0IGE9LTE9PT0obD1sRlsiICIrbF0pLmluZGV4T2YoIjoiKTtyZXR1cm4iLy8iPT09Yy5zdWJzdHJpbmcoMCwyKT9hP2M6bC5yZXBsYWNlKG9ndCwiJDEiKStjOiIvIj09PWMuY2hh''@;'; put 'put ''ckF0KDApP2E/YzpsLnJlcGxhY2Uoc2d0LCIkMSIpK2M6bCtjfShjLGEpKTt0cnl7YT1lbmNvZGVVUkkoYSkucmVwbGFjZSgvJTI1L2csIiUiKX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4gYX1jb25zdCBsRj17fSxpZ3Q9L15bXjpdKzpcLypbXi9dKiQvLG9ndD0vXihbXjpdKzopW1xzXFNd''@;'; put 'put ''KiQvLHNndD0vXihbXjpdKzpcLypbXi9dKilbXHNcU10qJC8sY0Y9e2V4ZWM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiB4NGUobCxjKXtjb25zdCBkPWwucmVwbGFjZSgvXHwvZywoZix2LFMpPT57bGV0IFY9ITEsUT12O2Zvcig7LS1RPj0wJiYiXFwiPT09U1tRXTspVj0hVjtyZXR1cm4gVj8i''@;'; put 'put ''fCI6IiB8In0pLnNwbGl0KC8gXHwvKTtsZXQgaD0wO2lmKGRbMF0udHJpbSgpfHxkLnNoaWZ0KCksZC5sZW5ndGg+MCYmIWRbZC5sZW5ndGgtMV0udHJpbSgpJiZkLnBvcCgpLGQubGVuZ3RoPmMpZC5zcGxpY2UoYyk7ZWxzZSBmb3IoO2QubGVuZ3RoPGM7KWQucHVzaCgiIik7Zm9yKDtoPGQu''@;'; put 'put ''bGVuZ3RoO2grKylkW2hdPWRbaF0udHJpbSgpLnJlcGxhY2UoL1xcXHwvZywifCIpO3JldHVybiBkfWZ1bmN0aW9uIHVGKGwsYyxhKXtjb25zdCBkPWwubGVuZ3RoO2lmKDA9PT1kKXJldHVybiIiO2xldCBoPTA7Zm9yKDtoPGQ7KXtjb25zdCBmPWwuY2hhckF0KGQtaC0xKTtpZihmIT09Y3x8''@;'; put 'put ''YSl7aWYoZj09PWN8fCFhKWJyZWFrO2grK31lbHNlIGgrK31yZXR1cm4gbC5zbGljZSgwLGQtaCl9ZnVuY3Rpb24gRTRlKGwsYyxhLGQpe2NvbnN0IGg9Yy5ocmVmLGY9Yy50aXRsZT9CMChjLnRpdGxlKTpudWxsLHY9bFsxXS5yZXBsYWNlKC9cXChbXFtcXV0pL2csIiQxIik7aWYoIiEiIT09''@;'; put 'put ''bFswXS5jaGFyQXQoMCkpe2Quc3RhdGUuaW5MaW5rPSEwO2NvbnN0IFM9e3R5cGU6ImxpbmsiLHJhdzphLGhyZWY6aCx0aXRsZTpmLHRleHQ6dix0b2tlbnM6ZC5pbmxpbmVUb2tlbnModil9O3JldHVybiBkLnN0YXRlLmluTGluaz0hMSxTfXJldHVybnt0eXBlOiJpbWFnZSIscmF3OmEsaHJl''@;'; put 'put ''ZjpoLHRpdGxlOmYsdGV4dDpCMCh2KX19Y2xhc3MgZEZ7Y29uc3RydWN0b3IoYyl7dGhpcy5vcHRpb25zPWN8fHc1fXNwYWNlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5uZXdsaW5lLmV4ZWMoYyk7aWYoYSYmYVswXS5sZW5ndGg+MClyZXR1cm57dHlwZToic3BhY2UiLHJhdzphWzBd''@;'; put 'put ''fX1jb2RlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5jb2RlLmV4ZWMoYyk7aWYoYSl7Y29uc3QgZD1hWzBdLnJlcGxhY2UoL14gezEsNH0vZ20sIiIpO3JldHVybnt0eXBlOiJjb2RlIixyYXc6YVswXSxjb2RlQmxvY2tTdHlsZToiaW5kZW50ZWQiLHRleHQ6dGhpcy5vcHRpb25zLnBl''@;'; put 'put ''ZGFudGljP2Q6dUYoZCwiXG4iKX19fWZlbmNlcyhjKXtjb25zdCBhPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4ZWMoYyk7aWYoYSl7Y29uc3QgZD1hWzBdLGg9ZnVuY3Rpb24gdWd0KGwsYyl7Y29uc3QgYT1sLm1hdGNoKC9eKFxzKykoPzpgYGApLyk7aWYobnVsbD09PWEpcmV0dXJuIGM7''@;'; put 'put ''Y29uc3QgZD1hWzFdO3JldHVybiBjLnNwbGl0KCJcbiIpLm1hcChoPT57Y29uc3QgZj1oLm1hdGNoKC9eXHMrLyk7aWYobnVsbD09PWYpcmV0dXJuIGg7Y29uc3Rbdl09ZjtyZXR1cm4gdi5sZW5ndGg+PWQubGVuZ3RoP2guc2xpY2UoZC5sZW5ndGgpOmh9KS5qb2luKCJcbiIpfShkLGFbM118''@;'; put 'put ''fCIiKTtyZXR1cm57dHlwZToiY29kZSIscmF3OmQsbGFuZzphWzJdP2FbMl0udHJpbSgpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6YVsyXSx0ZXh0Omh9fX1oZWFkaW5nKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5oZWFkaW5nLmV4ZWMoYyk7aWYoYSl7''@;'; put 'put ''bGV0IGQ9YVsyXS50cmltKCk7aWYoLyMkLy50ZXN0KGQpKXtjb25zdCBoPXVGKGQsIiMiKTsodGhpcy5vcHRpb25zLnBlZGFudGljfHwhaHx8LyAkLy50ZXN0KGgpKSYmKGQ9aC50cmltKCkpfXJldHVybnt0eXBlOiJoZWFkaW5nIixyYXc6YVswXSxkZXB0aDphWzFdLmxlbmd0aCx0ZXh0OmQs''@;'; put 'put ''dG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKGQpfX19aHIoYyl7Y29uc3QgYT10aGlzLnJ1bGVzLmJsb2NrLmhyLmV4ZWMoYyk7aWYoYSlyZXR1cm57dHlwZToiaHIiLHJhdzphWzBdfX1ibG9ja3F1b3RlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5ibG9ja3F1b3RlLmV4ZWMoYyk7aWYo''@;'; put 'put ''YSl7Y29uc3QgZD1hWzBdLnJlcGxhY2UoL14gKj5bIFx0XT8vZ20sIiIpLGg9dGhpcy5sZXhlci5zdGF0ZS50b3A7dGhpcy5sZXhlci5zdGF0ZS50b3A9ITA7Y29uc3QgZj10aGlzLmxleGVyLmJsb2NrVG9rZW5zKGQpO3JldHVybiB0aGlzLmxleGVyLnN0YXRlLnRvcD1oLHt0eXBlOiJibG9j''@;'; put 'put ''a3F1b3RlIixyYXc6YVswXSx0b2tlbnM6Zix0ZXh0OmR9fX1saXN0KGMpe2xldCBhPXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKGMpO2lmKGEpe2xldCBkLGgsZix2LFMsVixRLGRlLHBlLENlLE9lLFllLGV0PWFbMV0udHJpbSgpO2NvbnN0IGR0PWV0Lmxlbmd0aD4xLGh0PXt0eXBlOiJs''@;'; put 'put ''aXN0IixyYXc6IiIsb3JkZXJlZDpkdCxzdGFydDpkdD8rZXQuc2xpY2UoMCwtMSk6IiIsbG9vc2U6ITEsaXRlbXM6W119O2V0PWR0P2BcXGR7MSw5fVxcJHtldC5zbGljZSgtMSl9YDpgXFwke2V0fWAsdGhpcy5vcHRpb25zLnBlZGFudGljJiYoZXQ9ZHQ/ZXQ6IlsqKy1dIik7Y29uc3QgTXQ9''@;'; put 'put ''bmV3IFJlZ0V4cChgXiggezAsM30ke2V0fSkoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpYCk7Zm9yKDtjJiYoWWU9ITEsKGE9TXQuZXhlYyhjKSkmJiF0aGlzLnJ1bGVzLmJsb2NrLmhyLnRlc3QoYykpOyl7aWYoZD1hWzBdLGM9Yy5zdWJzdHJpbmcoZC5sZW5ndGgpLGRlPWFbMl0uc3Bs''@;'; put 'put ''aXQoIlxuIiwxKVswXS5yZXBsYWNlKC9eXHQrLyxsbj0+IiAiLnJlcGVhdCgzKmxuLmxlbmd0aCkpLHBlPWMuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KHY9MixPZT1kZS50cmltTGVmdCgpKToodj1hWzJdLnNlYXJjaCgvW14gXS8pLHY9dj40PzE6dixPZT1kZS5z''@;'; put 'put ''bGljZSh2KSx2Kz1hWzFdLmxlbmd0aCksVj0hMSwhZGUmJi9eICokLy50ZXN0KHBlKSYmKGQrPXBlKyJcbiIsYz1jLnN1YnN0cmluZyhwZS5sZW5ndGgrMSksWWU9ITApLCFZZSl7Y29uc3QgbG49bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsdi0xKX19KD86WyorLV18XFxkezEsOX1b''@;'; put 'put ''LildKSgoPzpbIFx0XVteXFxuXSopPyg/OlxcbnwkKSlgKSx2bj1uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyx2LTEpfX0oKD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpYCksd249bmV3IFJlZ0V4cChgXiB7MCwke01hdGgubWluKDMsdi0xKX19''@;'; put 'put ''KD86XGBcYFxgfH5+filgKSxucj1uZXcgUmVnRXhwKGBeIHswLCR7TWF0aC5taW4oMyx2LTEpfX0jYCk7Zm9yKDtjJiYoQ2U9Yy5zcGxpdCgiXG4iLDEpWzBdLHBlPUNlLHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKHBlPXBlLnJlcGxhY2UoL14gezEsNH0oPz0oIHs0fSkqW14gXSkvZywiICAi''@;'; put 'put ''KSksISh3bi50ZXN0KHBlKXx8bnIudGVzdChwZSl8fGxuLnRlc3QocGUpfHx2bi50ZXN0KGMpKSk7KXtpZihwZS5zZWFyY2goL1teIF0vKT49dnx8IXBlLnRyaW0oKSlPZSs9IlxuIitwZS5zbGljZSh2KTtlbHNle2lmKFZ8fGRlLnNlYXJjaCgvW14gXS8pPj00fHx3bi50ZXN0KGRlKXx8bnIu''@;'; put 'put ''dGVzdChkZSl8fHZuLnRlc3QoZGUpKWJyZWFrO09lKz0iXG4iK3BlfSFWJiYhcGUudHJpbSgpJiYoVj0hMCksZCs9Q2UrIlxuIixjPWMuc3Vic3RyaW5nKENlLmxlbmd0aCsxKSxkZT1wZS5zbGljZSh2KX19aHQubG9vc2V8fChRP2h0Lmxvb3NlPSEwOi9cbiAqXG4gKiQvLnRlc3QoZCkmJihR''@;'; put 'put ''PSEwKSksdGhpcy5vcHRpb25zLmdmbSYmKGg9L15cW1sgeFhdXF0gLy5leGVjKE9lKSxoJiYoZj0iWyBdICIhPT1oWzBdLE9lPU9lLnJlcGxhY2UoL15cW1sgeFhdXF0gKy8sIiIpKSksaHQuaXRlbXMucHVzaCh7dHlwZToibGlzdF9pdGVtIixyYXc6ZCx0YXNrOiEhaCxjaGVja2VkOmYsbG9v''@;'; put 'put ''c2U6ITEsdGV4dDpPZX0pLGh0LnJhdys9ZH1odC5pdGVtc1todC5pdGVtcy5sZW5ndGgtMV0ucmF3PWQudHJpbVJpZ2h0KCksaHQuaXRlbXNbaHQuaXRlbXMubGVuZ3RoLTFdLnRleHQ9T2UudHJpbVJpZ2h0KCksaHQucmF3PWh0LnJhdy50cmltUmlnaHQoKTtjb25zdCBRdD1odC5pdGVtcy5s''@;'; put 'put ''ZW5ndGg7Zm9yKFM9MDtTPFF0O1MrKylpZih0aGlzLmxleGVyLnN0YXRlLnRvcD0hMSxodC5pdGVtc1tTXS50b2tlbnM9dGhpcy5sZXhlci5ibG9ja1Rva2VucyhodC5pdGVtc1tTXS50ZXh0LFtdKSwhaHQubG9vc2Upe2NvbnN0IGxuPWh0Lml0ZW1zW1NdLnRva2Vucy5maWx0ZXIod249PiJz''@;'; put 'put ''cGFjZSI9PT13bi50eXBlKSx2bj1sbi5sZW5ndGg+MCYmbG4uc29tZSh3bj0+L1xuLipcbi8udGVzdCh3bi5yYXcpKTtodC5sb29zZT12bn1pZihodC5sb29zZSlmb3IoUz0wO1M8UXQ7UysrKWh0Lml0ZW1zW1NdLmxvb3NlPSEwO3JldHVybiBodH19aHRtbChjKXtjb25zdCBhPXRoaXMucnVs''@;'; put 'put ''ZXMuYmxvY2suaHRtbC5leGVjKGMpO2lmKGEpe2NvbnN0IGQ9e3R5cGU6Imh0bWwiLGJsb2NrOiEwLHJhdzphWzBdLHByZTohdGhpcy5vcHRpb25zLnNhbml0aXplciYmKCJwcmUiPT09YVsxXXx8InNjcmlwdCI9PT1hWzFdfHwic3R5bGUiPT09YVsxXSksdGV4dDphWzBdfTtpZih0aGlzLm9w''@;'; put 'put ''dGlvbnMuc2FuaXRpemUpe2NvbnN0IGg9dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKGFbMF0pOkIwKGFbMF0pO2QudHlwZT0icGFyYWdyYXBoIixkLnRleHQ9aCxkLnRva2Vucz10aGlzLmxleGVyLmlubGluZShoKX1yZXR1cm4gZH19ZGVmKGMpe2NvbnN0''@;'; put 'put ''IGE9dGhpcy5ydWxlcy5ibG9jay5kZWYuZXhlYyhjKTtpZihhKXtjb25zdCBkPWFbMV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9ccysvZywiICIpLGg9YVsyXT9hWzJdLnJlcGxhY2UoL148KC4qKT4kLywiJDEiKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpOiIi''@;'; put 'put ''LGY9YVszXT9hWzNdLnN1YnN0cmluZygxLGFbM10ubGVuZ3RoLTEpLnJlcGxhY2UodGhpcy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIik6YVszXTtyZXR1cm57dHlwZToiZGVmIix0YWc6ZCxyYXc6YVswXSxocmVmOmgsdGl0bGU6Zn19fXRhYmxlKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5i''@;'; put 'put ''bG9jay50YWJsZS5leGVjKGMpO2lmKGEpe2NvbnN0IGQ9e3R5cGU6InRhYmxlIixoZWFkZXI6eDRlKGFbMV0pLm1hcChoPT4oe3RleHQ6aH0pKSxhbGlnbjphWzJdLnJlcGxhY2UoL14gKnxcfCAqJC9nLCIiKS5zcGxpdCgvICpcfCAqLykscm93czphWzNdJiZhWzNdLnRyaW0oKT9hWzNdLnJl''@;'; put 'put ''cGxhY2UoL1xuWyBcdF0qJC8sIiIpLnNwbGl0KCJcbiIpOltdfTtpZihkLmhlYWRlci5sZW5ndGg9PT1kLmFsaWduLmxlbmd0aCl7ZC5yYXc9YVswXTtsZXQgZix2LFMsVixoPWQuYWxpZ24ubGVuZ3RoO2ZvcihmPTA7ZjxoO2YrKylkLmFsaWduW2ZdPS9eICotKzogKiQvLnRlc3QoZC5hbGln''@;'; put 'put ''bltmXSk/InJpZ2h0IjovXiAqOi0rOiAqJC8udGVzdChkLmFsaWduW2ZdKT8iY2VudGVyIjovXiAqOi0rICokLy50ZXN0KGQuYWxpZ25bZl0pPyJsZWZ0IjpudWxsO2ZvcihoPWQucm93cy5sZW5ndGgsZj0wO2Y8aDtmKyspZC5yb3dzW2ZdPXg0ZShkLnJvd3NbZl0sZC5oZWFkZXIubGVuZ3Ro''@;'; put 'put ''KS5tYXAoUT0+KHt0ZXh0OlF9KSk7Zm9yKGg9ZC5oZWFkZXIubGVuZ3RoLHY9MDt2PGg7disrKWQuaGVhZGVyW3ZdLnRva2Vucz10aGlzLmxleGVyLmlubGluZShkLmhlYWRlclt2XS50ZXh0KTtmb3IoaD1kLnJvd3MubGVuZ3RoLHY9MDt2PGg7disrKWZvcihWPWQucm93c1t2XSxTPTA7UzxW''@;'; put 'put ''Lmxlbmd0aDtTKyspVltTXS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUoVltTXS50ZXh0KTtyZXR1cm4gZH19fWxoZWFkaW5nKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5ibG9jay5saGVhZGluZy5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImhlYWRpbmciLHJhdzphWzBdLGRlcHRoOiI9Ij09''@;'; put 'put ''PWFbMl0uY2hhckF0KDApPzE6Mix0ZXh0OmFbMV0sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKGFbMV0pfX1wYXJhZ3JhcGgoYyl7Y29uc3QgYT10aGlzLnJ1bGVzLmJsb2NrLnBhcmFncmFwaC5leGVjKGMpO2lmKGEpe2NvbnN0IGQ9IlxuIj09PWFbMV0uY2hhckF0KGFbMV0ubGVuZ3RoLTEp''@;'; put 'put ''P2FbMV0uc2xpY2UoMCwtMSk6YVsxXTtyZXR1cm57dHlwZToicGFyYWdyYXBoIixyYXc6YVswXSx0ZXh0OmQsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKGQpfX19dGV4dChjKXtjb25zdCBhPXRoaXMucnVsZXMuYmxvY2sudGV4dC5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6InRleHQiLHJh''@;'; put 'put ''dzphWzBdLHRleHQ6YVswXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUoYVswXSl9fWVzY2FwZShjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5lLmVzY2FwZS5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImVzY2FwZSIscmF3OmFbMF0sdGV4dDpCMChhWzFdKX19dGFnKGMpe2NvbnN0IGE9''@;'; put 'put ''dGhpcy5ydWxlcy5pbmxpbmUudGFnLmV4ZWMoYyk7aWYoYSlyZXR1cm4hdGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePGEgL2kudGVzdChhWzBdKT90aGlzLmxleGVyLnN0YXRlLmluTGluaz0hMDp0aGlzLmxleGVyLnN0YXRlLmluTGluayYmL148XC9hPi9pLnRlc3QoYVswXSkmJih0aGlz''@;'; put 'put ''LmxleGVyLnN0YXRlLmluTGluaz0hMSksIXRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmL148KHByZXxjb2RlfGtiZHxzY3JpcHQpKFxzfD4pL2kudGVzdChhWzBdKT90aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITA6dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrJiYvXjxcLyhw''@;'; put 'put ''cmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLnRlc3QoYVswXSkmJih0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2s9ITEpLHt0eXBlOnRoaXMub3B0aW9ucy5zYW5pdGl6ZT8idGV4dCI6Imh0bWwiLHJhdzphWzBdLGluTGluazp0aGlzLmxleGVyLnN0YXRlLmluTGluayxpblJhd0Jsb2Nr''@;'; put 'put ''OnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayxibG9jazohMSx0ZXh0OnRoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoYVswXSk6QjAoYVswXSk6YVswXX19bGluayhjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5l''@;'; put 'put ''LmxpbmsuZXhlYyhjKTtpZihhKXtjb25zdCBkPWFbMl0udHJpbSgpO2lmKCF0aGlzLm9wdGlvbnMucGVkYW50aWMmJi9ePC8udGVzdChkKSl7aWYoIS8+JC8udGVzdChkKSlyZXR1cm47Y29uc3Qgdj11RihkLnNsaWNlKDAsLTEpLCJcXCIpO2lmKChkLmxlbmd0aC12Lmxlbmd0aCklMj09MCly''@;'; put 'put ''ZXR1cm59ZWxzZXtjb25zdCB2PWZ1bmN0aW9uIGxndChsLGMpe2lmKC0xPT09bC5pbmRleE9mKGNbMV0pKXJldHVybi0xO2NvbnN0IGE9bC5sZW5ndGg7bGV0IGQ9MCxoPTA7Zm9yKDtoPGE7aCsrKWlmKCJcXCI9PT1sW2hdKWgrKztlbHNlIGlmKGxbaF09PT1jWzBdKWQrKztlbHNlIGlmKGxb''@;'; put 'put ''aF09PT1jWzFdJiYoZC0tLGQ8MCkpcmV0dXJuIGg7cmV0dXJuLTF9KGFbMl0sIigpIik7aWYodj4tMSl7Y29uc3QgVj0oMD09PWFbMF0uaW5kZXhPZigiISIpPzU6NCkrYVsxXS5sZW5ndGgrdjthWzJdPWFbMl0uc3Vic3RyaW5nKDAsdiksYVswXT1hWzBdLnN1YnN0cmluZygwLFYpLnRyaW0o''@;'; put 'put ''KSxhWzNdPSIifX1sZXQgaD1hWzJdLGY9IiI7aWYodGhpcy5vcHRpb25zLnBlZGFudGljKXtjb25zdCB2PS9eKFteJyJdKlteXHNdKVxzKyhbJyJdKSguKilcMi8uZXhlYyhoKTt2JiYoaD12WzFdLGY9dlszXSl9ZWxzZSBmPWFbM10/YVszXS5zbGljZSgxLC0xKToiIjtyZXR1cm4gaD1oLnRy''@;'; put 'put ''aW0oKSwvXjwvLnRlc3QoaCkmJihoPXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmIS8+JC8udGVzdChkKT9oLnNsaWNlKDEpOmguc2xpY2UoMSwtMSkpLEU0ZShhLHtocmVmOmgmJmgucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx0aXRsZTpmJiZmLnJlcGxhY2UodGhp''@;'; put 'put ''cy5ydWxlcy5pbmxpbmUuX2VzY2FwZXMsIiQxIil9LGFbMF0sdGhpcy5sZXhlcil9fXJlZmxpbmsoYyxhKXtsZXQgZDtpZigoZD10aGlzLnJ1bGVzLmlubGluZS5yZWZsaW5rLmV4ZWMoYykpfHwoZD10aGlzLnJ1bGVzLmlubGluZS5ub2xpbmsuZXhlYyhjKSkpe2xldCBoPShkWzJdfHxkWzFd''@;'; put 'put ''KS5yZXBsYWNlKC9ccysvZywiICIpO2lmKGg9YVtoLnRvTG93ZXJDYXNlKCldLCFoKXtjb25zdCBmPWRbMF0uY2hhckF0KDApO3JldHVybnt0eXBlOiJ0ZXh0IixyYXc6Zix0ZXh0OmZ9fXJldHVybiBFNGUoZCxoLGRbMF0sdGhpcy5sZXhlcil9fWVtU3Ryb25nKGMsYSxkPSIiKXtsZXQgaD10''@;'; put 'put ''aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5sRGVsaW0uZXhlYyhjKTtpZighKCFofHxoWzNdJiZkLm1hdGNoKC9bXHB7TH1ccHtOfV0vdSkpJiYoIWhbMV0mJiFoWzJdfHwhZHx8dGhpcy5ydWxlcy5pbmxpbmUucHVuY3R1YXRpb24uZXhlYyhkKSkpe2NvbnN0IHY9aFswXS5sZW5ndGgtMTts''@;'; put 'put ''ZXQgUyxWLFE9dixkZT0wO2NvbnN0IHBlPSIqIj09PWhbMF1bMF0/dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGltQXN0OnRoaXMucnVsZXMuaW5saW5lLmVtU3Ryb25nLnJEZWxpbVVuZDtmb3IocGUubGFzdEluZGV4PTAsYT1hLnNsaWNlKC0xKmMubGVuZ3RoK3YpO251bGwhPSho''@;'; put 'put ''PXBlLmV4ZWMoYSkpOyl7aWYoUz1oWzFdfHxoWzJdfHxoWzNdfHxoWzRdfHxoWzVdfHxoWzZdLCFTKWNvbnRpbnVlO2lmKFY9Uy5sZW5ndGgsaFszXXx8aFs0XSl7USs9Vjtjb250aW51ZX1pZigoaFs1XXx8aFs2XSkmJnYlMyYmISgoditWKSUzKSl7ZGUrPVY7Y29udGludWV9aWYoUS09VixR''@;'; put 'put ''PjApY29udGludWU7Vj1NYXRoLm1pbihWLFYrUStkZSk7Y29uc3QgQ2U9Yy5zbGljZSgwLHYraC5pbmRleCtWKzEpO2lmKE1hdGgubWluKHYsViklMil7Y29uc3QgWWU9Q2Uuc2xpY2UoMSwtMSk7cmV0dXJue3R5cGU6ImVtIixyYXc6Q2UsdGV4dDpZZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxp''@;'; put 'put ''bmVUb2tlbnMoWWUpfX1jb25zdCBPZT1DZS5zbGljZSgyLC0yKTtyZXR1cm57dHlwZToic3Ryb25nIixyYXc6Q2UsdGV4dDpPZSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnMoT2UpfX19fWNvZGVzcGFuKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5pbmxpbmUuY29kZS5leGVjKGMpO2lm''@;'; put 'put ''KGEpe2xldCBkPWFbMl0ucmVwbGFjZSgvXG4vZywiICIpO2NvbnN0IGg9L1teIF0vLnRlc3QoZCksZj0vXiAvLnRlc3QoZCkmJi8gJC8udGVzdChkKTtyZXR1cm4gaCYmZiYmKGQ9ZC5zdWJzdHJpbmcoMSxkLmxlbmd0aC0xKSksZD1CMChkLCEwKSx7dHlwZToiY29kZXNwYW4iLHJhdzphWzBd''@;'; put 'put ''LHRleHQ6ZH19fWJyKGMpe2NvbnN0IGE9dGhpcy5ydWxlcy5pbmxpbmUuYnIuZXhlYyhjKTtpZihhKXJldHVybnt0eXBlOiJiciIscmF3OmFbMF19fWRlbChjKXtjb25zdCBhPXRoaXMucnVsZXMuaW5saW5lLmRlbC5leGVjKGMpO2lmKGEpcmV0dXJue3R5cGU6ImRlbCIscmF3OmFbMF0sdGV4''@;'; put 'put ''dDphWzJdLHRva2Vuczp0aGlzLmxleGVyLmlubGluZVRva2VucyhhWzJdKX19YXV0b2xpbmsoYyxhKXtjb25zdCBkPXRoaXMucnVsZXMuaW5saW5lLmF1dG9saW5rLmV4ZWMoYyk7aWYoZCl7bGV0IGgsZjtyZXR1cm4iQCI9PT1kWzJdPyhoPUIwKHRoaXMub3B0aW9ucy5tYW5nbGU/YShkWzFd''@;'; put 'put ''KTpkWzFdKSxmPSJtYWlsdG86IitoKTooaD1CMChkWzFdKSxmPWgpLHt0eXBlOiJsaW5rIixyYXc6ZFswXSx0ZXh0OmgsaHJlZjpmLHRva2Vuczpbe3R5cGU6InRleHQiLHJhdzpoLHRleHQ6aH1dfX19dXJsKGMsYSl7bGV0IGQ7aWYoZD10aGlzLnJ1bGVzLmlubGluZS51cmwuZXhlYyhjKSl7''@;'; put 'put ''bGV0IGgsZjtpZigiQCI9PT1kWzJdKWg9QjAodGhpcy5vcHRpb25zLm1hbmdsZT9hKGRbMF0pOmRbMF0pLGY9Im1haWx0bzoiK2g7ZWxzZXtsZXQgdjtkb3t2PWRbMF0sZFswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoZFswXSlbMF19d2hpbGUodiE9PWRbMF0pO2g9QjAo''@;'; put 'put ''ZFswXSksZj0id3d3LiI9PT1kWzFdPyJodHRwOi8vIitkWzBdOmRbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzpkWzBdLHRleHQ6aCxocmVmOmYsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmgsdGV4dDpofV19fX1pbmxpbmVUZXh0KGMsYSl7Y29uc3QgZD10aGlzLnJ1bGVzLmlubGluZS50''@;'; put 'put ''ZXh0LmV4ZWMoYyk7aWYoZCl7bGV0IGg7cmV0dXJuIGg9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrP3RoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIoZFswXSk6QjAoZFswXSk6ZFswXTpCMCh0aGlzLm9wdGlvbnMu''@;'; put 'put ''c21hcnR5cGFudHM/YShkWzBdKTpkWzBdKSx7dHlwZToidGV4dCIscmF3OmRbMF0sdGV4dDpofX19fWNvbnN0IEJvPXtuZXdsaW5lOi9eKD86ICooPzpcbnwkKSkrLyxjb2RlOi9eKCB7NH1bXlxuXSsoPzpcbig/OiAqKD86XG58JCkpKik/KSsvLGZlbmNlczovXiB7MCwzfShgezMsfSg/PVte''@;'; put 'put ''YFxuXSooPzpcbnwkKSl8fnszLH0pKFteXG5dKikoPzpcbnwkKSg/OnwoW1xzXFNdKj8pKD86XG58JCkpKD86IHswLDN9XDFbfmBdKiAqKD89XG58JCl8JCkvLGhyOi9eIHswLDN9KCg/Oi1bXHQgXSopezMsfXwoPzpfWyBcdF0qKXszLH18KD86XCpbIFx0XSopezMsfSkoPzpcbit8JCkvLGhl''@;'; put 'put ''YWRpbmc6L14gezAsM30oI3sxLDZ9KSg/PVxzfCQpKC4qKSg/OlxuK3wkKS8sYmxvY2txdW90ZTovXiggezAsM30+ID8ocGFyYWdyYXBofFteXG5dKikoPzpcbnwkKSkrLyxsaXN0Oi9eKCB7MCwzfWJ1bGwpKFsgXHRdW15cbl0rPyk/KD86XG58JCkvLGh0bWw6Il4gezAsM30oPzo8KHNjcmlw''@;'; put 'put ''dHxwcmV8c3R5bGV8dGV4dGFyZWEpW1xccz5dW1xcc1xcU10qPyg/OjwvXFwxPlteXFxuXSpcXG4rfCQpfGNvbW1lbnRbXlxcbl0qKFxcbit8JCl8PFxcP1tcXHNcXFNdKj8oPzpcXD8+XFxuKnwkKXw8IVtBLVpdW1xcc1xcU10qPyg/Oj5cXG4qfCQpfDwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/''@;'; put 'put ''KD86XFxdXFxdPlxcbip8JCl8PC8/KHRhZykoPzogK3xcXG58Lz8+KVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpfDwoPyFzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKShbYS16XVtcXHctXSopKD86YXR0cmlidXRlKSo/ICovPz4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8o''@;'; put 'put ''PzooPzpcXG4gKikrXFxufCQpfDwvKD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSlbYS16XVtcXHctXSpcXHMqPig/PVsgXFx0XSooPzpcXG58JCkpW1xcc1xcU10qPyg/Oig/OlxcbiAqKStcXG58JCkpIixkZWY6L14gezAsM31cWyhsYWJlbClcXTogKig/OlxuICopPyhbXjxcc11bXlxz''@;'; put 'put ''XSp8PC4qPz4pKD86KD86ICsoPzpcbiAqKT98ICpcbiAqKSh0aXRsZSkpPyAqKD86XG4rfCQpLyx0YWJsZTpjRixsaGVhZGluZzovXigoPzooPyFeYnVsbCApLnxcbig/IVxufGJ1bGwgKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxuXSsoPzpcbig/''@;'; put 'put ''IWhyfGhlYWRpbmd8bGhlYWRpbmd8YmxvY2txdW90ZXxmZW5jZXN8bGlzdHxodG1sfHRhYmxlfCArXG4pW15cbl0rKSopLyx0ZXh0Oi9eW15cbl0rLyxfbGFiZWw6Lyg/IVxzKlxdKSg/OlxcLnxbXlxbXF1cXF0pKy8sX3RpdGxlOi8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpc''@;'; put 'put ''blteJ1xuXSspKlxuPyd8XChbXigpXSpcKSkvfTtCby5kZWY9VmEoQm8uZGVmKS5yZXBsYWNlKCJsYWJlbCIsQm8uX2xhYmVsKS5yZXBsYWNlKCJ0aXRsZSIsQm8uX3RpdGxlKS5nZXRSZWdleCgpLEJvLmJ1bGxldD0vKD86WyorLV18XGR7MSw5fVsuKV0pLyxCby5saXN0SXRlbVN0YXJ0PVZh''@;'; put 'put ''KC9eKCAqKShidWxsKSAqLykucmVwbGFjZSgiYnVsbCIsQm8uYnVsbGV0KS5nZXRSZWdleCgpLEJvLmxpc3Q9VmEoQm8ubGlzdCkucmVwbGFjZSgvYnVsbC9nLEJvLmJ1bGxldCkucmVwbGFjZSgiaHIiLCJcXG4rKD89XFwxPyg/Oig/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXsz''@;'; put 'put ''LH0pKD86XFxuK3wkKSkiKS5yZXBsYWNlKCJkZWYiLCJcXG4rKD89IitCby5kZWYuc291cmNlKyIpIikuZ2V0UmVnZXgoKSxCby5fdGFnPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRl''@;'; put 'put ''dGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1l''@;'; put 'put ''c3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJhbXxzZWN0aW9ufHNvdXJjZXxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixCby5fY29tbWVudD0vPCEtLSg/IS0/PilbXHNcU10qPyg/Oi0tPnwkKS8sQm8uaHRtbD1WYShCby5odG1sLCJp''@;'; put 'put ''IikucmVwbGFjZSgiY29tbWVudCIsQm8uX2NvbW1lbnQpLnJlcGxhY2UoInRhZyIsQm8uX3RhZykucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxC''@;'; put 'put ''by5saGVhZGluZz1WYShCby5saGVhZGluZykucmVwbGFjZSgvYnVsbC9nLEJvLmJ1bGxldCkuZ2V0UmVnZXgoKSxCby5wYXJhZ3JhcGg9VmEoQm8uX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEJvLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVh''@;'; put 'put ''ZGluZyIsIiIpLnJlcGxhY2UoInx0YWJsZSIsIiIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiZmVuY2VzIiwiIHswLDN9KD86YHszLH0oPz1bXmBcXG5dKlxcbil8fnszLH0pW15cXG5dKlxcbiIpLnJlcGxhY2UoImxpc3QiLCIgezAsM30oPzpbKistXXwxWy4p''@;'; put 'put ''XSkgIikucmVwbGFjZSgiaHRtbCIsIjwvPyg/OnRhZykoPzogK3xcXG58Lz8+KXw8KD86c2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYXwhLS0pIikucmVwbGFjZSgidGFnIixCby5fdGFnKS5nZXRSZWdleCgpLEJvLmJsb2NrcXVvdGU9VmEoQm8uYmxvY2txdW90ZSkucmVwbGFjZSgicGFyYWdy''@;'; put 'put ''YXBoIixCby5wYXJhZ3JhcGgpLmdldFJlZ2V4KCksQm8ubm9ybWFsPXsuLi5Cb30sQm8uZ2ZtPXsuLi5Cby5ub3JtYWwsdGFibGU6Il4gKihbXlxcbiBdLipcXHwuKilcXG4gezAsM30oPzpcXHwgKik/KDo/LSs6PyAqKD86XFx8ICo6Py0rOj8gKikqKSg/OlxcfCAqKT8oPzpcXG4oKD86KD8h''@;'; put 'put ''ICpcXG58aHJ8aGVhZGluZ3xibG9ja3F1b3RlfGNvZGV8ZmVuY2VzfGxpc3R8aHRtbCkuKig/OlxcbnwkKSkqKVxcbip8JCkifSxCby5nZm0udGFibGU9VmEoQm8uZ2ZtLnRhYmxlKS5yZXBsYWNlKCJociIsQm8uaHIpLnJlcGxhY2UoImhlYWRpbmciLCIgezAsM30jezEsNn0gIikucmVwbGFj''@;'; put 'put ''ZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJjb2RlIiwiIHs0fVteXFxuXSIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJl''@;'; put 'put ''cGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsQm8uX3RhZykuZ2V0UmVnZXgoKSxCby5nZm0ucGFyYWdyYXBoPVZhKEJvLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixCby5ociku''@;'; put 'put ''cmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ0YWJsZSIsQm8uZ2ZtLnRhYmxlKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpc''@;'; put 'put ''XG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxufC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsQm8uX3RhZyku''@;'; put 'put ''Z2V0UmVnZXgoKSxCby5wZWRhbnRpYz17Li4uQm8ubm9ybWFsLGh0bWw6VmEoIl4gKig/OmNvbW1lbnQgKig/OlxcbnxcXHMqJCl8PCh0YWcpW1xcc1xcU10rPzwvXFwxPiAqKD86XFxuezIsfXxcXHMqJCl8PHRhZyg/OlwiW15cIl0qXCJ8J1teJ10qJ3xcXHNbXidcIi8+XFxzXSopKj8vPz4g''@;'; put 'put ''Kig/OlxcbnsyLH18XFxzKiQpKSIpLnJlcGxhY2UoImNvbW1lbnQiLEJvLl9jb21tZW50KS5yZXBsYWNlKC90YWcvZywiKD8hKD86YXxlbXxzdHJvbmd8c21hbGx8c3xjaXRlfHF8ZGZufGFiYnJ8ZGF0YXx0aW1lfGNvZGV8dmFyfHNhbXB8a2JkfHN1YnxzdXB8aXxifHV8bWFya3xydWJ5fHJ0''@;'; put 'put ''fHJwfGJkaXxiZG98c3Bhbnxicnx3YnJ8aW5zfGRlbHxpbWcpXFxiKVxcdysoPyE6fFteXFx3XFxzQF0qQClcXGIiKS5nZXRSZWdleCgpLGRlZjovXiAqXFsoW15cXV0rKVxdOiAqPD8oW15ccz5dKyk+Pyg/OiArKFsiKF1bXlxuXStbIildKSk/ICooPzpcbit8JCkvLGhlYWRpbmc6L14oI3sx''@;'; put 'put ''LDZ9KSguKikoPzpcbit8JCkvLGZlbmNlczpjRixsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSspICooPzpcbit8JCkvLHBhcmFncmFwaDpWYShCby5ub3JtYWwuX3BhcmFncmFwaCkucmVwbGFjZSgiaHIiLEJvLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIiku''@;'; put 'put ''cmVwbGFjZSgibGhlYWRpbmciLEJvLmxoZWFkaW5nKS5yZXBsYWNlKCJibG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoInxmZW5jZXMiLCIiKS5yZXBsYWNlKCJ8bGlzdCIsIiIpLnJlcGxhY2UoInxodG1sIiwiIikuZ2V0UmVnZXgoKX07Y29uc3QgdG89e2VzY2FwZTovXlxcKFshIiMk''@;'; put 'put ''JSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sYXV0b2xpbms6L148KHNjaGVtZTpbXlxzXHgwMC1ceDFmPD5dKnxlbWFpbCk+Lyx1cmw6Y0YsdGFnOiJeY29tbWVudHxePC9bYS16QS1aXVtcXHc6LV0qXFxzKj58XjxbYS16QS1aXVtcXHctXSooPzphdHRyaWJ1dGUpKj9cXHMq''@;'; put 'put ''Lz8+fF48XFw/W1xcc1xcU10qP1xcPz58XjwhW2EtekEtWl0rXFxzW1xcc1xcU10qPz58XjwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPiIsbGluazovXiE/XFsobGFiZWwpXF1cKFxzKihocmVmKSg/OlxzKyh0aXRsZSkpP1xzKlwpLyxyZWZsaW5rOi9eIT9cWyhsYWJlbClcXVxbKHJl''@;'; put 'put ''ZilcXS8sbm9saW5rOi9eIT9cWyhyZWYpXF0oPzpcW1xdKT8vLHJlZmxpbmtTZWFyY2g6InJlZmxpbmt8bm9saW5rKD8hXFwoKSIsZW1TdHJvbmc6e2xEZWxpbTovXig/OlwqKyg/OigoPyFcKilbcHVuY3RdKXxbXlxzKl0pKXxeXysoPzooKD8hXylbcHVuY3RdKXwoW15cc19dKSkvLHJEZWxp''@;'; put 'put ''bUFzdDovXlteXypdKj9fX1teXypdKj9cKlteXypdKj8oPz1fXyl8W14qXSsoPz1bXipdKXwoPyFcKilbcHVuY3RdKFwqKykoPz1bXHNdfCQpfFtecHVuY3Rcc10oXCorKSg/IVwqKSg/PVtwdW5jdFxzXXwkKXwoPyFcKilbcHVuY3Rcc10oXCorKSg/PVtecHVuY3Rcc10pfFtcc10oXCorKSg/''@;'; put 'put ''IVwqKSg/PVtwdW5jdF0pfCg/IVwqKVtwdW5jdF0oXCorKSg/IVwqKSg/PVtwdW5jdF0pfFtecHVuY3Rcc10oXCorKSg/PVtecHVuY3Rcc10pLyxyRGVsaW1VbmQ6L15bXl8qXSo/XCpcKlteXypdKj9fW15fKl0qPyg/PVwqXCopfFteX10rKD89W15fXSl8KD8hXylbcHVuY3RdKF8rKSg/PVtc''@;'; put 'put ''c118JCl8W15wdW5jdFxzXShfKykoPyFfKSg/PVtwdW5jdFxzXXwkKXwoPyFfKVtwdW5jdFxzXShfKykoPz1bXnB1bmN0XHNdKXxbXHNdKF8rKSg/IV8pKD89W3B1bmN0XSl8KD8hXylbcHVuY3RdKF8rKSg/IV8pKD89W3B1bmN0XSkvfSxjb2RlOi9eKGArKShbXmBdfFteYF1bXHNcU10qP1te''@;'; put 'put ''YF0pXDEoPyFgKS8sYnI6L14oIHsyLH18XFwpXG4oPyFccyokKS8sZGVsOmNGLHRleHQ6L14oYCt8W15gXSkoPzooPz0gezIsfVxuKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKl9dfFxiX3wkKXxbXiBdKD89IHsyLH1cbikpKS8scHVuY3R1YXRpb246L14oKD8hWypfXSlbXHNwdW5jdHVhdGlv''@;'; put 'put ''bl0pL307ZnVuY3Rpb24gZGd0KGwpe3JldHVybiBsLnJlcGxhY2UoLy0tLS9nLCJcdTIwMTQiKS5yZXBsYWNlKC8tLS9nLCJcdTIwMTMiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNC8oXFt7IlxzXSknL2csIiQxXHUyMDE4IikucmVwbGFjZSgvJy9nLCJcdTIwMTkiKS5yZXBsYWNlKC8oXnxbLVx1''@;'; put 'put ''MjAxNC8oXFt7XHUyMDE4XHNdKSIvZywiJDFcdTIwMWMiKS5yZXBsYWNlKC8iL2csIlx1MjAxZCIpLnJlcGxhY2UoL1wuezN9L2csIlx1MjAyNiIpfWZ1bmN0aW9uIFQ0ZShsKXtsZXQgYSxkLGM9IiI7Y29uc3QgaD1sLmxlbmd0aDtmb3IoYT0wO2E8aDthKyspZD1sLmNoYXJDb2RlQXQoYSks''@;'; put 'put ''TWF0aC5yYW5kb20oKT4uNSYmKGQ9IngiK2QudG9TdHJpbmcoMTYpKSxjKz0iJiMiK2QrIjsiO3JldHVybiBjfXRvLl9wdW5jdHVhdGlvbj0iXFxwe1B9JCs8PT5gXnx+Iix0by5wdW5jdHVhdGlvbj1WYSh0by5wdW5jdHVhdGlvbiwidSIpLnJlcGxhY2UoL3B1bmN0dWF0aW9uL2csdG8uX3B1''@;'; put 'put ''bmN0dWF0aW9uKS5nZXRSZWdleCgpLHRvLmJsb2NrU2tpcD0vXFtbXltcXV0qP1xdXChbXlwoXCldKj9cKXxgW15gXSo/YHw8W148Pl0qPz4vZyx0by5hbnlQdW5jdHVhdGlvbj0vXFxbcHVuY3RdL2csdG8uX2VzY2FwZXM9L1xcKFtwdW5jdF0pL2csdG8uX2NvbW1lbnQ9VmEoQm8uX2NvbW1l''@;'; put 'put ''bnQpLnJlcGxhY2UoIig/Oi0tXHgzZXwkKSIsIi0tXHgzZSIpLmdldFJlZ2V4KCksdG8uZW1TdHJvbmcubERlbGltPVZhKHRvLmVtU3Ryb25nLmxEZWxpbSwidSIpLnJlcGxhY2UoL3B1bmN0L2csdG8uX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLHRvLmVtU3Ryb25nLnJEZWxpbUFzdD1WYSh0''@;'; put 'put ''by5lbVN0cm9uZy5yRGVsaW1Bc3QsImd1IikucmVwbGFjZSgvcHVuY3QvZyx0by5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksdG8uZW1TdHJvbmcuckRlbGltVW5kPVZhKHRvLmVtU3Ryb25nLnJEZWxpbVVuZCwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLHRvLl9wdW5jdHVhdGlvbikuZ2V0UmVn''@;'; put 'put ''ZXgoKSx0by5hbnlQdW5jdHVhdGlvbj1WYSh0by5hbnlQdW5jdHVhdGlvbiwiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLHRvLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSx0by5fZXNjYXBlcz1WYSh0by5fZXNjYXBlcywiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLHRvLl9wdW5jdHVhdGlvbikuZ2V0''@;'; put 'put ''UmVnZXgoKSx0by5fc2NoZW1lPS9bYS16QS1aXVthLXpBLVowLTkrLi1dezEsMzF9Lyx0by5fZW1haWw9L1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpB''@;'; put 'put ''LVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLyx0by5hdXRvbGluaz1WYSh0by5hdXRvbGluaykucmVwbGFjZSgic2NoZW1lIix0by5fc2NoZW1lKS5yZXBsYWNlKCJlbWFpbCIsdG8uX2VtYWlsKS5nZXRSZWdleCgpLHRvLl9hdHRyaWJ1dGU9L1xzK1thLXpBLVo6X11bXHcu''@;'; put 'put ''Oi1dKig/OlxzKj1ccyoiW14iXSoifFxzKj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8sdG8udGFnPVZhKHRvLnRhZykucmVwbGFjZSgiY29tbWVudCIsdG8uX2NvbW1lbnQpLnJlcGxhY2UoImF0dHJpYnV0ZSIsdG8uX2F0dHJpYnV0ZSkuZ2V0UmVnZXgoKSx0by5fbGFiZWw9''@;'; put 'put ''Lyg/OlxbKD86XFwufFteXFtcXVxcXSkqXF18XFwufGBbXmBdKmB8W15cW1xdXFxgXSkqPy8sdG8uX2hyZWY9LzwoPzpcXC58W15cbjw+XFxdKSs+fFteXHNceDAwLVx4MWZdKi8sdG8uX3RpdGxlPS8iKD86XFwiP3xbXiJcXF0pKiJ8Jyg/OlxcJz98W14nXFxdKSonfFwoKD86XFxcKT98W14p''@;'; put 'put ''XFxdKSpcKS8sdG8ubGluaz1WYSh0by5saW5rKS5yZXBsYWNlKCJsYWJlbCIsdG8uX2xhYmVsKS5yZXBsYWNlKCJocmVmIix0by5faHJlZikucmVwbGFjZSgidGl0bGUiLHRvLl90aXRsZSkuZ2V0UmVnZXgoKSx0by5yZWZsaW5rPVZhKHRvLnJlZmxpbmspLnJlcGxhY2UoImxhYmVsIix0by5f''@;'; put 'put ''bGFiZWwpLnJlcGxhY2UoInJlZiIsQm8uX2xhYmVsKS5nZXRSZWdleCgpLHRvLm5vbGluaz1WYSh0by5ub2xpbmspLnJlcGxhY2UoInJlZiIsQm8uX2xhYmVsKS5nZXRSZWdleCgpLHRvLnJlZmxpbmtTZWFyY2g9VmEodG8ucmVmbGlua1NlYXJjaCwiZyIpLnJlcGxhY2UoInJlZmxpbmsiLHRv''@;'; put 'put ''LnJlZmxpbmspLnJlcGxhY2UoIm5vbGluayIsdG8ubm9saW5rKS5nZXRSZWdleCgpLHRvLm5vcm1hbD17Li4udG99LHRvLnBlZGFudGljPXsuLi50by5ub3JtYWwsc3Ryb25nOntzdGFydDovXl9ffFwqXCovLG1pZGRsZTovXl9fKD89XFMpKFtcc1xTXSo/XFMpX18oPyFfKXxeXCpcKig/PVxT''@;'; put 'put ''KShbXHNcU10qP1xTKVwqXCooPyFcKikvLGVuZEFzdDovXCpcKig/IVwqKS9nLGVuZFVuZDovX18oPyFfKS9nfSxlbTp7c3RhcnQ6L15ffFwqLyxtaWRkbGU6L14oKVwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKil8Xl8oPz1cUykoW1xzXFNdKj9cUylfKD8hXykvLGVuZEFzdDovXCooPyFc''@;'; put 'put ''KikvZyxlbmRVbmQ6L18oPyFfKS9nfSxsaW5rOlZhKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIix0by5fbGFiZWwpLmdldFJlZ2V4KCkscmVmbGluazpWYSgvXiE/XFsobGFiZWwpXF1ccypcWyhbXlxdXSopXF0vKS5yZXBsYWNlKCJsYWJlbCIsdG8uX2xhYmVs''@;'; put 'put ''KS5nZXRSZWdleCgpfSx0by5nZm09ey4uLnRvLm5vcm1hbCxlc2NhcGU6VmEodG8uZXNjYXBlKS5yZXBsYWNlKCJdKSIsIn58XSkiKS5nZXRSZWdleCgpLF9leHRlbmRlZF9lbWFpbDovW0EtWmEtejAtOS5fKy1dKyhAKVthLXpBLVowLTktX10rKD86XC5bYS16QS1aMC05LV9dKlthLXpBLVow''@;'; put 'put ''LTldKSsoPyFbLV9dKS8sdXJsOi9eKCg/OmZ0cHxodHRwcz8pOlwvXC98d3d3XC4pKD86W2EtekEtWjAtOVwtXStcLj8pK1teXHM8XSp8XmVtYWlsLyxfYmFja3BlZGFsOi8oPzpbXj8hLiw6OypfJyJ+KCkmXSt8XChbXildKlwpfCYoPyFbYS16QS1aMC05XSs7JCl8Wz8hLiw6OypfJyJ+KV0r''@;'; put 'put ''KD8hJCkpKy8sZGVsOi9eKH5+PykoPz1bXlxzfl0pKFtcc1xTXSo/W15cc35dKVwxKD89W15+XXwkKS8sdGV4dDovXihbYH5dK3xbXmB+XSkoPzooPz0gezIsfVxuKXwoPz1bYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXStAKXxbXHNcU10qPyg/Oig/PVtcXDwhXFtgKn5fXXxcYl98''@;'; put 'put ''aHR0cHM/OlwvXC98ZnRwOlwvXC98d3d3XC58JCl8W14gXSg/PSB7Mix9XG4pfFteYS16QS1aMC05LiEjJCUmJyorXC89P19ge1x8fX4tXSg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApKSkvfSx0by5nZm0udXJsPVZhKHRvLmdmbS51cmwsImkiKS5yZXBsYWNlKCJlbWFp''@;'; put 'put ''bCIsdG8uZ2ZtLl9leHRlbmRlZF9lbWFpbCkuZ2V0UmVnZXgoKSx0by5icmVha3M9ey4uLnRvLmdmbSxicjpWYSh0by5icikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6VmEodG8uZ2ZtLnRleHQpLnJlcGxhY2UoIlxcYl8iLCJcXGJffCB7Mix9XFxuIikucmVwbGFjZSgv''@;'; put 'put ''XHsyLFx9L2csIioiKS5nZXRSZWdleCgpfTtjbGFzcyBhcHtjb25zdHJ1Y3RvcihjKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2Vucy5saW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucz1jfHx3NSx0aGlzLm9wdGlvbnMudG9rZW5pemVyPXRoaXMub3B0aW9ucy50b2tlbml6''@;'; put 'put ''ZXJ8fG5ldyBkRix0aGlzLnRva2VuaXplcj10aGlzLm9wdGlvbnMudG9rZW5pemVyLHRoaXMudG9rZW5pemVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLHRoaXMudG9rZW5pemVyLmxleGVyPXRoaXMsdGhpcy5pbmxpbmVRdWV1ZT1bXSx0aGlzLnN0YXRlPXtpbkxpbms6ITEsaW5SYXdCbG9jazoh''@;'; put 'put ''MSx0b3A6ITB9O2NvbnN0IGE9e2Jsb2NrOkJvLm5vcm1hbCxpbmxpbmU6dG8ubm9ybWFsfTt0aGlzLm9wdGlvbnMucGVkYW50aWM/KGEuYmxvY2s9Qm8ucGVkYW50aWMsYS5pbmxpbmU9dG8ucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihhLmJsb2NrPUJvLmdmbSxhLmlubGluZT10aGlz''@;'; put 'put ''Lm9wdGlvbnMuYnJlYWtzP3RvLmJyZWFrczp0by5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWF9c3RhdGljIGdldCBydWxlcygpe3JldHVybntibG9jazpCbyxpbmxpbmU6dG99fXN0YXRpYyBsZXgoYyxhKXtyZXR1cm4gbmV3IGFwKGEpLmxleChjKX1zdGF0aWMgbGV4SW5saW5lKGMsYSl7''@;'; put 'put ''cmV0dXJuIG5ldyBhcChhKS5pbmxpbmVUb2tlbnMoYyl9bGV4KGMpe2xldCBhO2ZvcihjPWMucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxvY2tUb2tlbnMoYyx0aGlzLnRva2Vucyk7YT10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKGEuc3JjLGEu''@;'; put 'put ''dG9rZW5zKTtyZXR1cm4gdGhpcy50b2tlbnN9YmxvY2tUb2tlbnMoYyxhPVtdKXtsZXQgZCxoLGYsdjtmb3IoYz10aGlzLm9wdGlvbnMucGVkYW50aWM/Yy5yZXBsYWNlKC9cdC9nLCIgICAgIikucmVwbGFjZSgvXiArJC9nbSwiIik6Yy5yZXBsYWNlKC9eKCAqKShcdCspL2dtLChTLFYsUSk9''@;'; put 'put ''PlYrIiAgICAiLnJlcGVhdChRLmxlbmd0aCkpO2M7KWlmKCEodGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5ibG9jay5zb21lKFM9PiEhKGQ9Uy5jYWxsKHtsZXhlcjp0aGlzfSxjLGEpKSYmKGM9''@;'; put 'put ''Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCksITApKSkpe2lmKGQ9dGhpcy50b2tlbml6ZXIuc3BhY2UoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSwxPT09ZC5yYXcubGVuZ3RoJiZhLmxlbmd0aD4wP2FbYS5sZW5ndGgtMV0ucmF3Kz0iXG4iOmEucHVzaChkKTtj''@;'; put 'put ''b250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLmNvZGUoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxoPWFbYS5sZW5ndGgtMV0sIWh8fCJwYXJhZ3JhcGgiIT09aC50eXBlJiYidGV4dCIhPT1oLnR5cGU/YS5wdXNoKGQpOihoLnJhdys9IlxuIitkLnJhdyxoLnRleHQrPSJcbiIr''@;'; put 'put ''ZC50ZXh0LHRoaXMuaW5saW5lUXVldWVbdGhpcy5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPWgudGV4dCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5mZW5jZXMoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2Vu''@;'; put 'put ''aXplci5oZWFkaW5nKGMpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksYS5wdXNoKGQpO2NvbnRpbnVlfWlmKGQ9dGhpcy50b2tlbml6ZXIuaHIoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5ibG9ja3F1''@;'; put 'put ''b3RlKGMpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksYS5wdXNoKGQpO2NvbnRpbnVlfWlmKGQ9dGhpcy50b2tlbml6ZXIubGlzdChjKSl7Yz1jLnN1YnN0cmluZyhkLnJhdy5sZW5ndGgpLGEucHVzaChkKTtjb250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLmh0bWwoYykpe2M9Yy5z''@;'; put 'put ''dWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5kZWYoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxoPWFbYS5sZW5ndGgtMV0sIWh8fCJwYXJhZ3JhcGgiIT09aC50eXBlJiYidGV4dCIhPT1oLnR5cGU/dGhpcy50b2tl''@;'; put 'put ''bnMubGlua3NbZC50YWddfHwodGhpcy50b2tlbnMubGlua3NbZC50YWddPXtocmVmOmQuaHJlZix0aXRsZTpkLnRpdGxlfSk6KGgucmF3Kz0iXG4iK2QucmF3LGgudGV4dCs9IlxuIitkLnJhdyx0aGlzLmlubGluZVF1ZXVlW3RoaXMuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1oLnRleHQp''@;'; put 'put ''O2NvbnRpbnVlfWlmKGQ9dGhpcy50b2tlbml6ZXIudGFibGUoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5saGVhZGluZyhjKSl7Yz1jLnN1YnN0cmluZyhkLnJhdy5sZW5ndGgpLGEucHVzaChkKTtjb250aW51''@;'; put 'put ''ZX1pZihmPWMsdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0QmxvY2spe2xldCBTPTEvMDtjb25zdCBWPWMuc2xpY2UoMSk7bGV0IFE7dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuc3RhcnRCbG9jay5mb3JFYWNoKGZ1bmN0aW9uKGRlKXtRPWRl''@;'; put 'put ''LmNhbGwoe2xleGVyOnRoaXN9LFYpLCJudW1iZXIiPT10eXBlb2YgUSYmUT49MCYmKFM9TWF0aC5taW4oUyxRKSl9KSxTPDEvMCYmUz49MCYmKGY9Yy5zdWJzdHJpbmcoMCxTKzEpKX1pZih0aGlzLnN0YXRlLnRvcCYmKGQ9dGhpcy50b2tlbml6ZXIucGFyYWdyYXBoKGYpKSl7aD1hW2EubGVu''@;'; put 'put ''Z3RoLTFdLHYmJiJwYXJhZ3JhcGgiPT09aC50eXBlPyhoLnJhdys9IlxuIitkLnJhdyxoLnRleHQrPSJcbiIrZC50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9aC50ZXh0KTphLnB1c2goZCksdj1mLmxl''@;'; put 'put ''bmd0aCE9PWMubGVuZ3RoLGM9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKTtjb250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLnRleHQoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxoPWFbYS5sZW5ndGgtMV0saCYmInRleHQiPT09aC50eXBlPyhoLnJhdys9IlxuIitkLnJhdyxo''@;'; put 'put ''LnRleHQrPSJcbiIrZC50ZXh0LHRoaXMuaW5saW5lUXVldWUucG9wKCksdGhpcy5pbmxpbmVRdWV1ZVt0aGlzLmlubGluZVF1ZXVlLmxlbmd0aC0xXS5zcmM9aC50ZXh0KTphLnB1c2goZCk7Y29udGludWV9aWYoYyl7Y29uc3QgUz0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2MuY2hhckNv''@;'; put 'put ''ZGVBdCgwKTtpZih0aGlzLm9wdGlvbnMuc2lsZW50KXtjb25zb2xlLmVycm9yKFMpO2JyZWFrfXRocm93IG5ldyBFcnJvcihTKX19cmV0dXJuIHRoaXMuc3RhdGUudG9wPSEwLGF9aW5saW5lKGMsYT1bXSl7cmV0dXJuIHRoaXMuaW5saW5lUXVldWUucHVzaCh7c3JjOmMsdG9rZW5zOmF9KSxh''@;'; put 'put ''fWlubGluZVRva2VucyhjLGE9W10pe2xldCBkLGgsZixTLFYsUSx2PWM7aWYodGhpcy50b2tlbnMubGlua3Mpe2NvbnN0IGRlPU9iamVjdC5rZXlzKHRoaXMudG9rZW5zLmxpbmtzKTtpZihkZS5sZW5ndGg+MClmb3IoO251bGwhPShTPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5yZWZs''@;'; put 'put ''aW5rU2VhcmNoLmV4ZWModikpOylkZS5pbmNsdWRlcyhTWzBdLnNsaWNlKFNbMF0ubGFzdEluZGV4T2YoIlsiKSsxLC0xKSkmJih2PXYuc2xpY2UoMCxTLmluZGV4KSsiWyIrImEiLnJlcGVhdChTWzBdLmxlbmd0aC0yKSsiXSIrdi5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUu''@;'; put 'put ''cmVmbGlua1NlYXJjaC5sYXN0SW5kZXgpKX1mb3IoO251bGwhPShTPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5ibG9ja1NraXAuZXhlYyh2KSk7KXY9di5zbGljZSgwLFMuaW5kZXgpKyJbIisiYSIucmVwZWF0KFNbMF0ubGVuZ3RoLTIpKyJdIit2LnNsaWNlKHRoaXMudG9rZW5pemVy''@;'; put 'put ''LnJ1bGVzLmlubGluZS5ibG9ja1NraXAubGFzdEluZGV4KTtmb3IoO251bGwhPShTPXRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5hbnlQdW5jdHVhdGlvbi5leGVjKHYpKTspdj12LnNsaWNlKDAsUy5pbmRleCkrIisrIit2LnNsaWNlKHRoaXMudG9rZW5pemVyLnJ1bGVzLmlubGluZS5h''@;'; put 'put ''bnlQdW5jdHVhdGlvbi5sYXN0SW5kZXgpO2Zvcig7YzspaWYoVnx8KFE9IiIpLFY9ITEsISh0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMuaW5saW5lJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUuc29tZShkZT0+ISEoZD1kZS5jYWxsKHts''@;'; put 'put ''ZXhlcjp0aGlzfSxjLGEpKSYmKGM9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCksITApKSkpe2lmKGQ9dGhpcy50b2tlbml6ZXIuZXNjYXBlKGMpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksYS5wdXNoKGQpO2NvbnRpbnVlfWlmKGQ9dGhpcy50b2tlbml6ZXIudGFn''@;'; put 'put ''KGMpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksaD1hW2EubGVuZ3RoLTFdLGgmJiJ0ZXh0Ij09PWQudHlwZSYmInRleHQiPT09aC50eXBlPyhoLnJhdys9ZC5yYXcsaC50ZXh0Kz1kLnRleHQpOmEucHVzaChkKTtjb250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLmxpbmsoYykpe2M9''@;'; put 'put ''Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5yZWZsaW5rKGMsdGhpcy50b2tlbnMubGlua3MpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksaD1hW2EubGVuZ3RoLTFdLGgmJiJ0ZXh0Ij09PWQudHlwZSYmInRleHQi''@;'; put 'put ''PT09aC50eXBlPyhoLnJhdys9ZC5yYXcsaC50ZXh0Kz1kLnRleHQpOmEucHVzaChkKTtjb250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLmVtU3Ryb25nKGMsdixRKSl7Yz1jLnN1YnN0cmluZyhkLnJhdy5sZW5ndGgpLGEucHVzaChkKTtjb250aW51ZX1pZihkPXRoaXMudG9rZW5pemVyLmNv''@;'; put 'put ''ZGVzcGFuKGMpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksYS5wdXNoKGQpO2NvbnRpbnVlfWlmKGQ9dGhpcy50b2tlbml6ZXIuYnIoYykpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5kZWwoYykpe2M9Yy5z''@;'; put 'put ''dWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoZD10aGlzLnRva2VuaXplci5hdXRvbGluayhjLFQ0ZSkpe2M9Yy5zdWJzdHJpbmcoZC5yYXcubGVuZ3RoKSxhLnB1c2goZCk7Y29udGludWV9aWYoIXRoaXMuc3RhdGUuaW5MaW5rJiYoZD10aGlzLnRva2VuaXpl''@;'; put 'put ''ci51cmwoYyxUNGUpKSl7Yz1jLnN1YnN0cmluZyhkLnJhdy5sZW5ndGgpLGEucHVzaChkKTtjb250aW51ZX1pZihmPWMsdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0SW5saW5lKXtsZXQgZGU9MS8wO2NvbnN0IHBlPWMuc2xpY2UoMSk7bGV0''@;'; put 'put ''IENlO3RoaXMub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0SW5saW5lLmZvckVhY2goZnVuY3Rpb24oT2Upe0NlPU9lLmNhbGwoe2xleGVyOnRoaXN9LHBlKSwibnVtYmVyIj09dHlwZW9mIENlJiZDZT49MCYmKGRlPU1hdGgubWluKGRlLENlKSl9KSxkZTwxLzAmJmRlPj0wJiYoZj1jLnN1YnN0''@;'; put 'put ''cmluZygwLGRlKzEpKX1pZihkPXRoaXMudG9rZW5pemVyLmlubGluZVRleHQoZixkZ3QpKXtjPWMuc3Vic3RyaW5nKGQucmF3Lmxlbmd0aCksIl8iIT09ZC5yYXcuc2xpY2UoLTEpJiYoUT1kLnJhdy5zbGljZSgtMSkpLFY9ITAsaD1hW2EubGVuZ3RoLTFdLGgmJiJ0ZXh0Ij09PWgudHlwZT8o''@;'; put 'put ''aC5yYXcrPWQucmF3LGgudGV4dCs9ZC50ZXh0KTphLnB1c2goZCk7Y29udGludWV9aWYoYyl7Y29uc3QgZGU9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitjLmNoYXJDb2RlQXQoMCk7aWYodGhpcy5vcHRpb25zLnNpbGVudCl7Y29uc29sZS5lcnJvcihkZSk7YnJlYWt9dGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKGRlKX19cmV0dXJuIGF9fWNsYXNzIGhGe2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHx3NX1jb2RlKGMsYSxkKXtjb25zdCBoPShhfHwiIikubWF0Y2goL1xTKi8pWzBdO2lmKHRoaXMub3B0aW9ucy5oaWdobGlnaHQpe2NvbnN0IGY9dGhpcy5vcHRpb25zLmhpZ2hsaWdodChj''@;'; put 'put ''LGgpO251bGwhPWYmJmYhPT1jJiYoZD0hMCxjPWYpfXJldHVybiBjPWMucmVwbGFjZSgvXG4kLywiIikrIlxuIixoPyc8cHJlPjxjb2RlIGNsYXNzPSInK3RoaXMub3B0aW9ucy5sYW5nUHJlZml4K0IwKGgpKyciPicrKGQ/YzpCMChjLCEwKSkrIjwvY29kZT48L3ByZT5cbiI6IjxwcmU+PGNv''@;'; put 'put ''ZGU+IisoZD9jOkIwKGMsITApKSsiPC9jb2RlPjwvcHJlPlxuIn1ibG9ja3F1b3RlKGMpe3JldHVybmA8YmxvY2txdW90ZT5cbiR7Y308L2Jsb2NrcXVvdGU+XG5gfWh0bWwoYyxhKXtyZXR1cm4gY31oZWFkaW5nKGMsYSxkLGgpe3JldHVybiB0aGlzLm9wdGlvbnMuaGVhZGVySWRzP2A8aCR7''@;'; put 'put ''YX0gaWQ9IiR7dGhpcy5vcHRpb25zLmhlYWRlclByZWZpeCtoLnNsdWcoZCl9Ij4ke2N9PC9oJHthfT5cbmA6YDxoJHthfT4ke2N9PC9oJHthfT5cbmB9aHIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8aHIvPlxuIjoiPGhyPlxuIn1saXN0KGMsYSxkKXtjb25zdCBoPWE/Im9sIjoi''@;'; put 'put ''dWwiO3JldHVybiI8IitoKyhhJiYxIT09ZD8nIHN0YXJ0PSInK2QrJyInOiIiKSsiPlxuIitjKyI8LyIraCsiPlxuIn1saXN0aXRlbShjKXtyZXR1cm5gPGxpPiR7Y308L2xpPlxuYH1jaGVja2JveChjKXtyZXR1cm4iPGlucHV0ICIrKGM/J2NoZWNrZWQ9IiIgJzoiIikrJ2Rpc2FibGVkPSIi''@;'; put 'put ''IHR5cGU9ImNoZWNrYm94IicrKHRoaXMub3B0aW9ucy54aHRtbD8iIC8iOiIiKSsiPiAifXBhcmFncmFwaChjKXtyZXR1cm5gPHA+JHtjfTwvcD5cbmB9dGFibGUoYyxhKXtyZXR1cm4gYSYmKGE9YDx0Ym9keT4ke2F9PC90Ym9keT5gKSwiPHRhYmxlPlxuPHRoZWFkPlxuIitjKyI8L3RoZWFk''@;'; put 'put ''PlxuIithKyI8L3RhYmxlPlxuIn10YWJsZXJvdyhjKXtyZXR1cm5gPHRyPlxuJHtjfTwvdHI+XG5gfXRhYmxlY2VsbChjLGEpe2NvbnN0IGQ9YS5oZWFkZXI/InRoIjoidGQiO3JldHVybihhLmFsaWduP2A8JHtkfSBhbGlnbj0iJHthLmFsaWdufSI+YDpgPCR7ZH0+YCkrYytgPC8ke2R9Plxu''@;'; put 'put ''YH1zdHJvbmcoYyl7cmV0dXJuYDxzdHJvbmc+JHtjfTwvc3Ryb25nPmB9ZW0oYyl7cmV0dXJuYDxlbT4ke2N9PC9lbT5gfWNvZGVzcGFuKGMpe3JldHVybmA8Y29kZT4ke2N9PC9jb2RlPmB9YnIoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnhodG1sPyI8YnIvPiI6Ijxicj4ifWRlbChjKXtyZXR1''@;'; put 'put ''cm5gPGRlbD4ke2N9PC9kZWw+YH1saW5rKGMsYSxkKXtpZihudWxsPT09KGM9TTRlKHRoaXMub3B0aW9ucy5zYW5pdGl6ZSx0aGlzLm9wdGlvbnMuYmFzZVVybCxjKSkpcmV0dXJuIGQ7bGV0IGg9JzxhIGhyZWY9IicrYysnIic7cmV0dXJuIGEmJihoKz0nIHRpdGxlPSInK2ErJyInKSxoKz0i''@;'; put 'put ''PiIrZCsiPC9hPiIsaH1pbWFnZShjLGEsZCl7aWYobnVsbD09PShjPU00ZSh0aGlzLm9wdGlvbnMuc2FuaXRpemUsdGhpcy5vcHRpb25zLmJhc2VVcmwsYykpKXJldHVybiBkO2xldCBoPWA8aW1nIHNyYz0iJHtjfSIgYWx0PSIke2R9ImA7cmV0dXJuIGEmJihoKz1gIHRpdGxlPSIke2F9ImAp''@;'; put 'put ''LGgrPXRoaXMub3B0aW9ucy54aHRtbD8iLz4iOiI+IixofXRleHQoYyl7cmV0dXJuIGN9fWNsYXNzIGRKe3N0cm9uZyhjKXtyZXR1cm4gY31lbShjKXtyZXR1cm4gY31jb2Rlc3BhbihjKXtyZXR1cm4gY31kZWwoYyl7cmV0dXJuIGN9aHRtbChjKXtyZXR1cm4gY310ZXh0KGMpe3JldHVybiBj''@;'; put 'put ''fWxpbmsoYyxhLGQpe3JldHVybiIiK2R9aW1hZ2UoYyxhLGQpe3JldHVybiIiK2R9YnIoKXtyZXR1cm4iIn19Y2xhc3MgaEp7Y29uc3RydWN0b3IoKXt0aGlzLnNlZW49e319c2VyaWFsaXplKGMpe3JldHVybiBjLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoLzxbIVwvYS16XS4qPz4v''@;'; put 'put ''Z2ksIiIpLnJlcGxhY2UoL1tcdTIwMDAtXHUyMDZGXHUyRTAwLVx1MkU3RlxcJyEiIyQlJigpKissLi86Ozw9Pj9AW1xdXmB7fH1+XS9nLCIiKS5yZXBsYWNlKC9ccy9nLCItIil9Z2V0TmV4dFNhZmVTbHVnKGMsYSl7bGV0IGQ9YyxoPTA7aWYodGhpcy5zZWVuLmhhc093blByb3BlcnR5KGQp''@;'; put 'put ''KXtoPXRoaXMuc2VlbltjXTtkb3toKyssZD1jKyItIitofXdoaWxlKHRoaXMuc2Vlbi5oYXNPd25Qcm9wZXJ0eShkKSl9cmV0dXJuIGF8fCh0aGlzLnNlZW5bY109aCx0aGlzLnNlZW5bZF09MCksZH1zbHVnKGMsYT17fSl7Y29uc3QgZD10aGlzLnNlcmlhbGl6ZShjKTtyZXR1cm4gdGhpcy5n''@;'; put 'put ''ZXROZXh0U2FmZVNsdWcoZCxhLmRyeXJ1bil9fWNsYXNzIGxwe2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHx3NSx0aGlzLm9wdGlvbnMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyfHxuZXcgaEYsdGhpcy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXIsdGhpcy5y''@;'; put 'put ''ZW5kZXJlci5vcHRpb25zPXRoaXMub3B0aW9ucyx0aGlzLnRleHRSZW5kZXJlcj1uZXcgZEosdGhpcy5zbHVnZ2VyPW5ldyBoSn1zdGF0aWMgcGFyc2UoYyxhKXtyZXR1cm4gbmV3IGxwKGEpLnBhcnNlKGMpfXN0YXRpYyBwYXJzZUlubGluZShjLGEpe3JldHVybiBuZXcgbHAoYSkucGFyc2VJ''@;'; put 'put ''bmxpbmUoYyl9cGFyc2UoYyxhPSEwKXtsZXQgaCxmLHYsUyxWLFEsZGUscGUsQ2UsT2UsWWUsZXQsZHQsaHQsTXQsUXQsbG4sdm4sd24sZD0iIjtjb25zdCBucj1jLmxlbmd0aDtmb3IoaD0wO2g8bnI7aCsrKWlmKE9lPWNbaF0sdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMmJnRoaXMub3B0aW9u''@;'; put 'put ''cy5leHRlbnNpb25zLnJlbmRlcmVycyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW09lLnR5cGVdJiYod249dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW09lLnR5cGVdLmNhbGwoe3BhcnNlcjp0aGlzfSxPZSksITEhPT13bnx8IVsic3BhY2UiLCJociIsImhl''@;'; put 'put ''YWRpbmciLCJjb2RlIiwidGFibGUiLCJibG9ja3F1b3RlIiwibGlzdCIsImh0bWwiLCJwYXJhZ3JhcGgiLCJ0ZXh0Il0uaW5jbHVkZXMoT2UudHlwZSkpKWQrPXdufHwiIjtlbHNlIHN3aXRjaChPZS50eXBlKXtjYXNlInNwYWNlIjpjb250aW51ZTtjYXNlImhyIjpkKz10aGlzLnJlbmRlcmVy''@;'; put 'put ''LmhyKCk7Y29udGludWU7Y2FzZSJoZWFkaW5nIjpkKz10aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5wYXJzZUlubGluZShPZS50b2tlbnMpLE9lLmRlcHRoLFM0ZSh0aGlzLnBhcnNlSW5saW5lKE9lLnRva2Vucyx0aGlzLnRleHRSZW5kZXJlcikpLHRoaXMuc2x1Z2dlcik7Y29udGludWU7''@;'; put 'put ''Y2FzZSJjb2RlIjpkKz10aGlzLnJlbmRlcmVyLmNvZGUoT2UudGV4dCxPZS5sYW5nLE9lLmVzY2FwZWQpO2NvbnRpbnVlO2Nhc2UidGFibGUiOmZvcihwZT0iIixkZT0iIixTPU9lLmhlYWRlci5sZW5ndGgsZj0wO2Y8UztmKyspZGUrPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFy''@;'; put 'put ''c2VJbmxpbmUoT2UuaGVhZGVyW2ZdLnRva2Vucykse2hlYWRlcjohMCxhbGlnbjpPZS5hbGlnbltmXX0pO2ZvcihwZSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhkZSksQ2U9IiIsUz1PZS5yb3dzLmxlbmd0aCxmPTA7ZjxTO2YrKyl7Zm9yKFE9T2Uucm93c1tmXSxkZT0iIixWPVEubGVuZ3Ro''@;'; put 'put ''LHY9MDt2PFY7disrKWRlKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0aGlzLnBhcnNlSW5saW5lKFFbdl0udG9rZW5zKSx7aGVhZGVyOiExLGFsaWduOk9lLmFsaWduW3ZdfSk7Q2UrPXRoaXMucmVuZGVyZXIudGFibGVyb3coZGUpfWQrPXRoaXMucmVuZGVyZXIudGFibGUocGUsQ2UpO2Nv''@;'; put 'put ''bnRpbnVlO2Nhc2UiYmxvY2txdW90ZSI6Q2U9dGhpcy5wYXJzZShPZS50b2tlbnMpLGQrPXRoaXMucmVuZGVyZXIuYmxvY2txdW90ZShDZSk7Y29udGludWU7Y2FzZSJsaXN0Ijpmb3IoWWU9T2Uub3JkZXJlZCxldD1PZS5zdGFydCxkdD1PZS5sb29zZSxTPU9lLml0ZW1zLmxlbmd0aCxDZT0i''@;'; put 'put ''IixmPTA7ZjxTO2YrKylNdD1PZS5pdGVtc1tmXSxRdD1NdC5jaGVja2VkLGxuPU10LnRhc2ssaHQ9IiIsTXQudGFzayYmKHZuPXRoaXMucmVuZGVyZXIuY2hlY2tib3goUXQpLGR0P010LnRva2Vucy5sZW5ndGg+MCYmInBhcmFncmFwaCI9PT1NdC50b2tlbnNbMF0udHlwZT8oTXQudG9rZW5z''@;'; put 'put ''WzBdLnRleHQ9dm4rIiAiK010LnRva2Vuc1swXS50ZXh0LE10LnRva2Vuc1swXS50b2tlbnMmJk10LnRva2Vuc1swXS50b2tlbnMubGVuZ3RoPjAmJiJ0ZXh0Ij09PU10LnRva2Vuc1swXS50b2tlbnNbMF0udHlwZSYmKE10LnRva2Vuc1swXS50b2tlbnNbMF0udGV4dD12bisiICIrTXQudG9r''@;'; put 'put ''ZW5zWzBdLnRva2Vuc1swXS50ZXh0KSk6TXQudG9rZW5zLnVuc2hpZnQoe3R5cGU6InRleHQiLHRleHQ6dm59KTpodCs9dm4pLGh0Kz10aGlzLnBhcnNlKE10LnRva2VucyxkdCksQ2UrPXRoaXMucmVuZGVyZXIubGlzdGl0ZW0oaHQsbG4sUXQpO2QrPXRoaXMucmVuZGVyZXIubGlzdChDZSxZ''@;'; put 'put ''ZSxldCk7Y29udGludWU7Y2FzZSJodG1sIjpkKz10aGlzLnJlbmRlcmVyLmh0bWwoT2UudGV4dCxPZS5ibG9jayk7Y29udGludWU7Y2FzZSJwYXJhZ3JhcGgiOmQrPXRoaXMucmVuZGVyZXIucGFyYWdyYXBoKHRoaXMucGFyc2VJbmxpbmUoT2UudG9rZW5zKSk7Y29udGludWU7Y2FzZSJ0ZXh0''@;'; put 'put ''Ijpmb3IoQ2U9T2UudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoT2UudG9rZW5zKTpPZS50ZXh0O2grMTxuciYmInRleHQiPT09Y1toKzFdLnR5cGU7KU9lPWNbKytoXSxDZSs9IlxuIisoT2UudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoT2UudG9rZW5zKTpPZS50ZXh0KTtkKz1hP3RoaXMucmVu''@;'; put 'put ''ZGVyZXIucGFyYWdyYXBoKENlKTpDZTtjb250aW51ZTtkZWZhdWx0Ontjb25zdCB2cj0nVG9rZW4gd2l0aCAiJytPZS50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcih2cik7dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KHZyKX19cmV0dXJuIGR9cGFyc2VJbmxpbmUoYyxhKXthPWF8fHRoaXMucmVuZGVyZXI7bGV0IGgsZix2LGQ9IiI7Y29uc3QgUz1jLmxlbmd0aDtmb3IoaD0wO2g8UztoKyspaWYoZj1jW2hdLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJl''@;'; put 'put ''cnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tmLnR5cGVdJiYodj10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbZi50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sZiksITEhPT12fHwhWyJlc2NhcGUiLCJodG1sIiwibGluayIsImltYWdlIiwic3Ryb25nIiwi''@;'; put 'put ''ZW0iLCJjb2Rlc3BhbiIsImJyIiwiZGVsIiwidGV4dCJdLmluY2x1ZGVzKGYudHlwZSkpKWQrPXZ8fCIiO2Vsc2Ugc3dpdGNoKGYudHlwZSl7Y2FzZSJlc2NhcGUiOmNhc2UidGV4dCI6ZCs9YS50ZXh0KGYudGV4dCk7YnJlYWs7Y2FzZSJodG1sIjpkKz1hLmh0bWwoZi50ZXh0KTticmVhaztj''@;'; put 'put ''YXNlImxpbmsiOmQrPWEubGluayhmLmhyZWYsZi50aXRsZSx0aGlzLnBhcnNlSW5saW5lKGYudG9rZW5zLGEpKTticmVhaztjYXNlImltYWdlIjpkKz1hLmltYWdlKGYuaHJlZixmLnRpdGxlLGYudGV4dCk7YnJlYWs7Y2FzZSJzdHJvbmciOmQrPWEuc3Ryb25nKHRoaXMucGFyc2VJbmxpbmUo''@;'; put 'put ''Zi50b2tlbnMsYSkpO2JyZWFrO2Nhc2UiZW0iOmQrPWEuZW0odGhpcy5wYXJzZUlubGluZShmLnRva2VucyxhKSk7YnJlYWs7Y2FzZSJjb2Rlc3BhbiI6ZCs9YS5jb2Rlc3BhbihmLnRleHQpO2JyZWFrO2Nhc2UiYnIiOmQrPWEuYnIoKTticmVhaztjYXNlImRlbCI6ZCs9YS5kZWwodGhpcy5w''@;'; put 'put ''YXJzZUlubGluZShmLnRva2VucyxhKSk7YnJlYWs7ZGVmYXVsdDp7Y29uc3QgVj0nVG9rZW4gd2l0aCAiJytmLnR5cGUrJyIgdHlwZSB3YXMgbm90IGZvdW5kLic7aWYodGhpcy5vcHRpb25zLnNpbGVudClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFYpO3Rocm93IG5ldyBFcnJvcihWKX19''@;'; put 'put ''cmV0dXJuIGR9fWNsYXNzIGZGe2NvbnN0cnVjdG9yKGMpe3RoaXMub3B0aW9ucz1jfHx3NX1zdGF0aWMgcGFzc1Rocm91Z2hIb29rcz1uZXcgU2V0KFsicHJlcHJvY2VzcyIsInBvc3Rwcm9jZXNzIl0pO3ByZXByb2Nlc3MoYyl7cmV0dXJuIGN9cG9zdHByb2Nlc3MoYyl7cmV0dXJuIGN9fWNv''@;'; put 'put ''bnN0IGo3PW5ldyBjbGFzcyBoZ3R7ZGVmYXVsdHM9e2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixt''@;'; put 'put ''YW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfTtvcHRpb25zPXRoaXMuc2V0T3B0aW9ucztwYXJzZT10aGlzLiNl''@;'; put 'put ''KGFwLmxleCxscC5wYXJzZSk7cGFyc2VJbmxpbmU9dGhpcy4jZShhcC5sZXhJbmxpbmUsbHAucGFyc2VJbmxpbmUpO1BhcnNlcj1scDtwYXJzZXI9bHAucGFyc2U7UmVuZGVyZXI9aEY7VGV4dFJlbmRlcmVyPWRKO0xleGVyPWFwO2xleGVyPWFwLmxleDtUb2tlbml6ZXI9ZEY7U2x1Z2dlcj1o''@;'; put 'put ''SjtIb29rcz1mRjtjb25zdHJ1Y3RvciguLi5jKXt0aGlzLnVzZSguLi5jKX13YWxrVG9rZW5zKGMsYSl7bGV0IGQ9W107Zm9yKGNvbnN0IGggb2YgYylzd2l0Y2goZD1kLmNvbmNhdChhLmNhbGwodGhpcyxoKSksaC50eXBlKXtjYXNlInRhYmxlIjpmb3IoY29uc3QgZiBvZiBoLmhlYWRlcilk''@;'; put 'put ''PWQuY29uY2F0KHRoaXMud2Fsa1Rva2VucyhmLnRva2VucyxhKSk7Zm9yKGNvbnN0IGYgb2YgaC5yb3dzKWZvcihjb25zdCB2IG9mIGYpZD1kLmNvbmNhdCh0aGlzLndhbGtUb2tlbnModi50b2tlbnMsYSkpO2JyZWFrO2Nhc2UibGlzdCI6ZD1kLmNvbmNhdCh0aGlzLndhbGtUb2tlbnMoaC5p''@;'; put 'put ''dGVtcyxhKSk7YnJlYWs7ZGVmYXVsdDp0aGlzLmRlZmF1bHRzLmV4dGVuc2lvbnMmJnRoaXMuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2VucyYmdGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9rZW5zW2gudHlwZV0/dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zLmNoaWxkVG9r''@;'; put 'put ''ZW5zW2gudHlwZV0uZm9yRWFjaChmPT57ZD1kLmNvbmNhdCh0aGlzLndhbGtUb2tlbnMoaFtmXSxhKSl9KTpoLnRva2VucyYmKGQ9ZC5jb25jYXQodGhpcy53YWxrVG9rZW5zKGgudG9rZW5zLGEpKSl9cmV0dXJuIGR9dXNlKC4uLmMpe2NvbnN0IGE9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25z''@;'; put 'put ''fHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fTtyZXR1cm4gYy5mb3JFYWNoKGQ9Pntjb25zdCBoPXsuLi5kfTtpZihoLmFzeW5jPXRoaXMuZGVmYXVsdHMuYXN5bmN8fGguYXN5bmN8fCExLGQuZXh0ZW5zaW9ucyYmKGQuZXh0ZW5zaW9ucy5mb3JFYWNoKGY9PntpZighZi5uYW1lKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTtpZihmLnJlbmRlcmVyKXtjb25zdCB2PWEucmVuZGVyZXJzW2YubmFtZV07YS5yZW5kZXJlcnNbZi5uYW1lXT12P2Z1bmN0aW9uKC4uLlMpe2xldCBWPWYucmVuZGVyZXIuYXBwbHkodGhpcyxTKTtyZXR1cm4hMT09PVYm''@;'; put 'put ''JihWPXYuYXBwbHkodGhpcyxTKSksVn06Zi5yZW5kZXJlcn1pZihmLnRva2VuaXplcil7aWYoIWYubGV2ZWx8fCJibG9jayIhPT1mLmxldmVsJiYiaW5saW5lIiE9PWYubGV2ZWwpdGhyb3cgbmV3IEVycm9yKCJleHRlbnNpb24gbGV2ZWwgbXVzdCBiZSAnYmxvY2snIG9yICdpbmxpbmUnIik7''@;'; put 'put ''YVtmLmxldmVsXT9hW2YubGV2ZWxdLnVuc2hpZnQoZi50b2tlbml6ZXIpOmFbZi5sZXZlbF09W2YudG9rZW5pemVyXSxmLnN0YXJ0JiYoImJsb2NrIj09PWYubGV2ZWw/YS5zdGFydEJsb2NrP2Euc3RhcnRCbG9jay5wdXNoKGYuc3RhcnQpOmEuc3RhcnRCbG9jaz1bZi5zdGFydF06ImlubGlu''@;'; put 'put ''ZSI9PT1mLmxldmVsJiYoYS5zdGFydElubGluZT9hLnN0YXJ0SW5saW5lLnB1c2goZi5zdGFydCk6YS5zdGFydElubGluZT1bZi5zdGFydF0pKX1mLmNoaWxkVG9rZW5zJiYoYS5jaGlsZFRva2Vuc1tmLm5hbWVdPWYuY2hpbGRUb2tlbnMpfSksaC5leHRlbnNpb25zPWEpLGQucmVuZGVyZXIp''@;'; put 'put ''e2NvbnN0IGY9dGhpcy5kZWZhdWx0cy5yZW5kZXJlcnx8bmV3IGhGKHRoaXMuZGVmYXVsdHMpO2Zvcihjb25zdCB2IGluIGQucmVuZGVyZXIpe2NvbnN0IFM9Zlt2XTtmW3ZdPSguLi5WKT0+e2xldCBRPWQucmVuZGVyZXJbdl0uYXBwbHkoZixWKTtyZXR1cm4hMT09PVEmJihRPVMuYXBwbHko''@;'; put 'put ''ZixWKSksUX19aC5yZW5kZXJlcj1mfWlmKGQudG9rZW5pemVyKXtjb25zdCBmPXRoaXMuZGVmYXVsdHMudG9rZW5pemVyfHxuZXcgZEYodGhpcy5kZWZhdWx0cyk7Zm9yKGNvbnN0IHYgaW4gZC50b2tlbml6ZXIpe2NvbnN0IFM9Zlt2XTtmW3ZdPSguLi5WKT0+e2xldCBRPWQudG9rZW5pemVy''@;'; put 'put ''W3ZdLmFwcGx5KGYsVik7cmV0dXJuITE9PT1RJiYoUT1TLmFwcGx5KGYsVikpLFF9fWgudG9rZW5pemVyPWZ9aWYoZC5ob29rcyl7Y29uc3QgZj10aGlzLmRlZmF1bHRzLmhvb2tzfHxuZXcgZkY7Zm9yKGNvbnN0IHYgaW4gZC5ob29rcyl7Y29uc3QgUz1mW3ZdO2Zbdl09ZkYucGFzc1Rocm91''@;'; put 'put ''Z2hIb29rcy5oYXModik/Vj0+e2lmKHRoaXMuZGVmYXVsdHMuYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZShkLmhvb2tzW3ZdLmNhbGwoZixWKSkudGhlbihkZT0+Uy5jYWxsKGYsZGUpKTtjb25zdCBRPWQuaG9va3Nbdl0uY2FsbChmLFYpO3JldHVybiBTLmNhbGwoZixRKX06KC4uLlYp''@;'; put 'put ''PT57bGV0IFE9ZC5ob29rc1t2XS5hcHBseShmLFYpO3JldHVybiExPT09USYmKFE9Uy5hcHBseShmLFYpKSxRfX1oLmhvb2tzPWZ9aWYoZC53YWxrVG9rZW5zKXtjb25zdCBmPXRoaXMuZGVmYXVsdHMud2Fsa1Rva2VucztoLndhbGtUb2tlbnM9ZnVuY3Rpb24odil7bGV0IFM9W107cmV0dXJu''@;'; put 'put ''IFMucHVzaChkLndhbGtUb2tlbnMuY2FsbCh0aGlzLHYpKSxmJiYoUz1TLmNvbmNhdChmLmNhbGwodGhpcyx2KSkpLFN9fXRoaXMuZGVmYXVsdHM9ey4uLnRoaXMuZGVmYXVsdHMsLi4uaH19KSx0aGlzfXNldE9wdGlvbnMoYyl7cmV0dXJuIHRoaXMuZGVmYXVsdHM9ey4uLnRoaXMuZGVmYXVs''@;'; put 'put ''dHMsLi4uY30sdGhpc30jZShjLGEpe3JldHVybihkLGgsZik9PnsiZnVuY3Rpb24iPT10eXBlb2YgaCYmKGY9aCxoPW51bGwpO2NvbnN0IHY9ey4uLmh9O2g9ey4uLnRoaXMuZGVmYXVsdHMsLi4udn07Y29uc3QgUz10aGlzLiN0KGguc2lsZW50LGguYXN5bmMsZik7aWYodHlwZW9mIGQ+InUi''@;'; put 'put ''fHxudWxsPT09ZClyZXR1cm4gUyhuZXcgRXJyb3IoIm1hcmtlZCgpOiBpbnB1dCBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7aWYoInN0cmluZyIhPXR5cGVvZiBkKXJldHVybiBTKG5ldyBFcnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyBvZiB0eXBlICIrT2Jq''@;'; put 'put ''ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGQpKyIsIHN0cmluZyBleHBlY3RlZCIpKTtpZihmdW5jdGlvbiBjZ3QobCxjKXshbHx8bC5zaWxlbnR8fChjJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBjYWxsYmFjayBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3Vs''@;'; put 'put ''ZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFJlYWQgbW9yZSBoZXJlOiBodHRwczovL21hcmtlZC5qcy5vcmcvdXNpbmdfcHJvI2FzeW5jIiksKGwuc2FuaXRpemV8fGwuc2FuaXRpemVyKSYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogc2FuaXRpemUg''@;'; put 'put ''YW5kIHNhbml0aXplciBwYXJhbWV0ZXJzIGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC43LjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFJlYWQgbW9yZSBoZXJlOiBodHRwczovL21hcmtlZC5qcy5vcmcvIy9VU0lOR19BRFZB''@;'; put 'put ''TkNFRC5tZCNvcHRpb25zIiksKGwuaGlnaGxpZ2h0fHwibGFuZ3VhZ2UtIiE9PWwubGFuZ1ByZWZpeCkmJmNvbnNvbGUud2FybigibWFya2VkKCk6IGhpZ2hsaWdodCBhbmQgbGFuZ1ByZWZpeCBwYXJhbWV0ZXJzIGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBu''@;'; put 'put ''b3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1oaWdobGlnaHQuIiksbC5tYW5nbGUmJmNvbnNvbGUud2FybigibWFya2VkKCk6IG1hbmdsZSBwYXJhbWV0ZXIgaXMgZW5h''@;'; put 'put ''YmxlZCBieSBkZWZhdWx0LCBidXQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFRvIGNsZWFyIHRoaXMgd2FybmluZywgaW5zdGFsbCBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtbWFuZ2xl''@;'; put 'put ''LCBvciBkaXNhYmxlIGJ5IHNldHRpbmcgYHttYW5nbGU6IGZhbHNlfWAuIiksbC5iYXNlVXJsJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBiYXNlVXJsIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSBy''@;'; put 'put ''ZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1iYXNlLXVybC4iKSxsLnNtYXJ0eXBhbnRzJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzbWFydHlwYW50cyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2''@;'; put 'put ''ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtc21hcnR5cGFudHMuIiksbC54aHRtbCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTog''@;'; put 'put ''eGh0bWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLXhodG1sLiIpLChs''@;'; put 'put ''LmhlYWRlcklkc3x8bC5oZWFkZXJQcmVmaXgpJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBoZWFkZXJJZHMgYW5kIGhlYWRlclByZWZpeCBwYXJhbWV0ZXJzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIGFuZCB3aWxsIGJlIHJl''@;'; put 'put ''bW92ZWQgaW4gdGhlIGZ1dHVyZS4gVG8gY2xlYXIgdGhpcyB3YXJuaW5nLCBpbnN0YWxsICBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtZ2ZtLWhlYWRpbmctaWQsIG9yIGRpc2FibGUgYnkgc2V0dGluZyBge2hlYWRlcklkczogZmFsc2V9YC4iKSl9KGgsZiksaC5ob29r''@;'; put 'put ''cyYmKGguaG9va3Mub3B0aW9ucz1oKSxmKXtjb25zdCBWPWguaGlnaGxpZ2h0O2xldCBRO3RyeXtoLmhvb2tzJiYoZD1oLmhvb2tzLnByZXByb2Nlc3MoZCkpLFE9YyhkLGgpfWNhdGNoKENlKXtyZXR1cm4gUyhDZSl9Y29uc3QgZGU9Q2U9PntsZXQgT2U7aWYoIUNlKXRyeXtoLndhbGtUb2tl''@;'; put 'put ''bnMmJnRoaXMud2Fsa1Rva2VucyhRLGgud2Fsa1Rva2VucyksT2U9YShRLGgpLGguaG9va3MmJihPZT1oLmhvb2tzLnBvc3Rwcm9jZXNzKE9lKSl9Y2F0Y2goWWUpe0NlPVllfXJldHVybiBoLmhpZ2hsaWdodD1WLENlP1MoQ2UpOmYobnVsbCxPZSl9O2lmKCFWfHxWLmxlbmd0aDwzfHwoZGVs''@;'; put 'put ''ZXRlIGguaGlnaGxpZ2h0LCFRLmxlbmd0aCkpcmV0dXJuIGRlKCk7bGV0IHBlPTA7cmV0dXJuIHRoaXMud2Fsa1Rva2VucyhRLENlPT57ImNvZGUiPT09Q2UudHlwZSYmKHBlKyssc2V0VGltZW91dCgoKT0+e1YoQ2UudGV4dCxDZS5sYW5nLChPZSxZZSk9PntpZihPZSlyZXR1cm4gZGUoT2Up''@;'; put 'put ''O251bGwhPVllJiZZZSE9PUNlLnRleHQmJihDZS50ZXh0PVllLENlLmVzY2FwZWQ9ITApLHBlLS0sMD09PXBlJiZkZSgpfSl9LDApKX0pLHZvaWQoMD09PXBlJiZkZSgpKX1pZihoLmFzeW5jKXJldHVybiBQcm9taXNlLnJlc29sdmUoaC5ob29rcz9oLmhvb2tzLnByZXByb2Nlc3MoZCk6ZCku''@;'; put 'put ''dGhlbihWPT5jKFYsaCkpLnRoZW4oVj0+aC53YWxrVG9rZW5zP1Byb21pc2UuYWxsKHRoaXMud2Fsa1Rva2VucyhWLGgud2Fsa1Rva2VucykpLnRoZW4oKCk9PlYpOlYpLnRoZW4oVj0+YShWLGgpKS50aGVuKFY9PmguaG9va3M/aC5ob29rcy5wb3N0cHJvY2VzcyhWKTpWKS5jYXRjaChTKTt0''@;'; put 'put ''cnl7aC5ob29rcyYmKGQ9aC5ob29rcy5wcmVwcm9jZXNzKGQpKTtjb25zdCBWPWMoZCxoKTtoLndhbGtUb2tlbnMmJnRoaXMud2Fsa1Rva2VucyhWLGgud2Fsa1Rva2Vucyk7bGV0IFE9YShWLGgpO3JldHVybiBoLmhvb2tzJiYoUT1oLmhvb2tzLnBvc3Rwcm9jZXNzKFEpKSxRfWNhdGNoKFYp''@;'; put 'put ''e3JldHVybiBTKFYpfX19I3QoYyxhLGQpe3JldHVybiBoPT57aWYoaC5tZXNzYWdlKz0iXG5QbGVhc2UgcmVwb3J0IHRoaXMgdG8gaHR0cHM6Ly9naXRodWIuY29tL21hcmtlZGpzL21hcmtlZC4iLGMpe2NvbnN0IGY9IjxwPkFuIGVycm9yIG9jY3VycmVkOjwvcD48cHJlPiIrQjAoaC5tZXNz''@;'; put 'put ''YWdlKyIiLCEwKSsiPC9wcmU+IjtyZXR1cm4gYT9Qcm9taXNlLnJlc29sdmUoZik6ZD92b2lkIGQobnVsbCxmKTpmfWlmKGEpcmV0dXJuIFByb21pc2UucmVqZWN0KGgpO2lmKCFkKXRocm93IGg7ZChoKX19fSh3NSk7ZnVuY3Rpb24gQmEobCxjLGEpe3JldHVybiBqNy5wYXJzZShsLGMsYSl9''@;'; put 'put ''QmEub3B0aW9ucz1CYS5zZXRPcHRpb25zPWZ1bmN0aW9uKGwpe3JldHVybiBqNy5zZXRPcHRpb25zKGwpLGI0ZShCYS5kZWZhdWx0cz1qNy5kZWZhdWx0cyksQmF9LEJhLmdldERlZmF1bHRzPWZ1bmN0aW9uIHVKKCl7cmV0dXJue2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0''@;'; put 'put ''ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhpZ2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxl''@;'; put 'put ''bnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxsLHhodG1sOiExfX0sQmEuZGVmYXVsdHM9dzUsQmEudXNlPWZ1bmN0aW9uKC4uLmwpe3JldHVybiBqNy51c2UoLi4ubCksYjRlKEJhLmRlZmF1bHRzPWo3LmRlZmF1bHRzKSxCYX0sQmEud2Fsa1Rva2Vu''@;'; put 'put ''cz1mdW5jdGlvbihsLGMpe3JldHVybiBqNy53YWxrVG9rZW5zKGwsYyl9LEJhLnBhcnNlSW5saW5lPWo3LnBhcnNlSW5saW5lLEJhLlBhcnNlcj1scCxCYS5wYXJzZXI9bHAucGFyc2UsQmEuUmVuZGVyZXI9aEYsQmEuVGV4dFJlbmRlcmVyPWRKLEJhLkxleGVyPWFwLEJhLmxleGVyPWFwLmxl''@;'; put 'put ''eCxCYS5Ub2tlbml6ZXI9ZEYsQmEuU2x1Z2dlcj1oSixCYS5Ib29rcz1mRixCYS5wYXJzZT1CYTtjb25zdCBwZ3Q9WyJtYXJrZG93bkNhcmQiXTtmdW5jdGlvbiBnZ3QobCxjKXsxJmwmJll0KDAsImNsci1zcGlubmVyIiw4KX1sZXQgbWd0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSl7''@;'; put 'put ''dGhpcy5zYXNTZXJ2aWNlPWEsdGhpcy5hZ3JlZUNoZWNrZWQ9ITEsdGhpcy5hZ3JlZUJveExvY2tlZD0hMCx0aGlzLmFncmVlQ2xpY2tlZD0hMSx0aGlzLmV1bGFfbWFya2Rvd249J1xuTGljZW5jZSBBZ3JlZW1lbnQgZm9yIERhdGEgQ29udHJvbGxlciBmb3IgU0FTXHhhZVxuPT09PT09PT09''@;'; put 'put ''PT09PT09PT09PT1cblxuQ29weXJpZ2h0IChjKSBCb3dlIElPIEx0ZFxuXG5EYXRhIENvbnRyb2xsZXIgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgYnkgNEdMIEFwcHMsIGEgYnJhbmQgb3duZWQgYnkgQm93ZSBJTyBMdGQsIGEgVUsgTGltaXRlZCBDb21wYW55IGhlYWRxdWFydGVkIGluIDI5''@;'; put 'put ''IE9sZGZpZWxkIFJkLCBDdW1icmlhLCByZWdpc3RlcmVkIGF0IENvbXBhbmllcyBIb3VzZSB3aXRoIGNvbXBhbnkgbnVtYmVyIDA4Nzc3MTcxLCBWQVQgbnVtYmVyOiAyMDM5MTQyNDBcblxuVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3cywg''@;'; put 'put ''aW5jbHVkaW5nIGludGVybmF0aW9uYWwgdHJlYXRpZXMsIGFuZCBkdWFsLWxpY2Vuc2VkIFx1MjAxMyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3VyIHVzZSBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcywgbWVhbmluZyBpbnRlbmRlZCBmb3Igb3IgcmVzdWx0aW5nIGluIGNvbW1lcmNpYWwgYWR2''@;'; put 'put ''YW50YWdlIG9yIG1vbmV0YXJ5IGNvbXBlbnNhdGlvbiwgb3Igbm90LlxuXG5JZiB5b3VyIHVzZSBpcyBzdHJpY3RseSBwZXJzb25hbCBvciBzb2xlbHkgZm9yIGV2YWx1YXRpb24gcHVycG9zZXMsIG1lYW5pbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0ZXN0aW5nIHRoZSBzdWl0YWJpbGl0eSwg''@;'; put 'put ''cGVyZm9ybWFuY2UsIGFuZCB1c2VmdWxuZXNzIG9mIHRoaXMgc29mdHdhcmUgb3V0c2lkZSB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgeW91IGFncmVlIHRvIGJlIGJvdW5kIGJ5IHRoZSB0ZXJtcyBpbmNsdWRlZCBpbiB0aGUgImxpY2VuY2Utbm9uLWNvbW1lcmNpYWwtZGF0YWNvbnRy''@;'; put 'put ''b2xsZXIubWQiIGZpbGUgYXZhaWxhYmxlIGhlcmU6ICBodHRwczovL2dpdC5kYXRhY29udHJvbGxlci5pby9kYy9kYy9zcmMvYnJhbmNoL21haW4vbGljZW5jZS1ub24tY29tbWVyY2lhbC1kYXRhY29udHJvbGxlci5tZFxuXG5Zb3VyIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGZvciBjb21tZXJj''@;'; put 'put ''aWFsIHB1cnBvc2VzIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGluY2x1ZGVkIGluIGFuIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQuXG5cbkluIGFueSBjYXNlLCB5b3UgbXVzdCBub3QgbWFrZSBhbnkgc3VjaCB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBhcyB0byBkZXZlbG9wIHNvZnR3''@;'; put 'put ''YXJlIHdoaWNoIG1heSBiZSBjb25zaWRlcmVkIGNvbXBldGl0aXZlIHdpdGggdGhpcyBzb2Z0d2FyZS5cblxuVU5MRVNTIEVYUFJFU1NMWSBBR1JFRUQgT1RIRVJXSVNFLCA0R0wgQVBQUyBQUk9WSURFUyBUSElTIFNPRlRXQVJFIE9OIEFOICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFO''@;'; put 'put ''VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBBTkQgSU4gTk8gRVZFTlQgQU5EIFVOREVSIE5PIExFR0FMIFRIRU9SWSwgU0hBTEwgNEdMIEFQUFMgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJ''@;'; put 'put ''REVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBBUklTSU5HIEZST00gVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhJUyBTT0ZUV0FSRS5cblxuXG4nfW5nT25Jbml0KCl7Y29uc3QgYT1CYS5zZXRPcHRpb25zKHt9KTt0aGlzLmV1bGFfbWFya2Rvd249''@;'; put 'put ''YS5wYXJzZSh0aGlzLmV1bGFfbWFya2Rvd24pfW5nQWZ0ZXJWaWV3SW5pdCgpe3NldFRpbWVvdXQoKCk9Pnt0aGlzLm1hcmtkb3duQ2FyZCYmdGhpcy5tYXJrZG93bkNhcmQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgic2Nyb2xsIikpfSl9dGVybXNBZ3Jl''@;'; put 'put ''ZUNoYW5nZSgpe3RoaXMuYWdyZWVDaGVja2VkJiYodGhpcy5hZ3JlZUJveExvY2tlZD0hMCx0aGlzLmFncmVlQ2xpY2tlZD0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgicHVibGljL3JlZ2lzdGVydXNlciIse1NBU0NvbnRyb2xUYWJsZTpbe0FDQ0VQVEVEOiJ5ZXMifV19KS50aGVuKGQ9''@;'; put 'put ''PntkLmFkYXB0ZXJSZXNwb25zZS5yZXR1cm4mJmQuYWRhcHRlclJlc3BvbnNlLnJldHVyblswXSYmIlNVQ0NFU1MiPT09ZC5hZGFwdGVyUmVzcG9uc2UucmV0dXJuWzBdLk1TRyYmbG9jYXRpb24ucmVsb2FkKCl9KS5jYXRjaChkPT5kKS5maW5hbGx5KCgpPT57c2V0VGltZW91dCgoKT0+e3Ro''@;'; put 'put ''aXMuYWdyZWVCb3hMb2NrZWQ9ITEsdGhpcy5hZ3JlZUNsaWNrZWQ9ITEsdGhpcy5hZ3JlZUNoZWNrZWQ9ITF9LDFlMyl9KSl9b25DYXJkQmxvY2tTY3JvbGwoYSl7aWYoIXRoaXMuYWdyZWVDbGlja2VkKXtsZXQgZD1hLnRhcmdldDtkJiYodGhpcy5hZ3JlZUJveExvY2tlZD0hKGQuc2Nyb2xs''@;'; put 'put ''VG9wK2Qub2Zmc2V0SGVpZ2h0Pj1kLnNjcm9sbEhlaWdodC0yMCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZSh2YSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXRlcm1zIl1dLHZpZXdR''@;'; put 'put ''dWVyeTpmdW5jdGlvbihkLGgpe2lmKDEmZCYmSG8ocGd0LDUpLDImZCl7bGV0IGY7bGkoZj1jaSgpKSYmKGgubWFya2Rvd25DYXJkPWYuZmlyc3QpfX0sZGVjbHM6MTMsdmFyczo2LGNvbnN0czpbWyJtYXJrZG93bkNhcmQiLCIiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJj''@;'; put 'put ''YXJkLWJsb2NrIiwzLCJzY3JvbGwiLCJpbm5lckhUTUwiXSxbMSwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJhY2NlcHQtY2hlY2tib3giXSxbImNsckNoZWNrYm94IiwiIiwidHlwZSIsImNoZWNrYm94IiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdlIiwibmdNb2Rl''@;'; put 'put ''bCIsImRpc2FibGVkIl0sWyJjbHJJbmxpbmUiLCJzbWFsbCIsNCwibmdJZiJdLFsiY2xySW5saW5lIiwic21hbGwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXtpZigxJmQpe2NvbnN0IGY9U24oKTtnZSgwLCJkaXYiLDEpKDEsImRpdiIsMiksUGUoMiwiIEVuZCBVc2VyIExpY2Vuc2UgQWdy''@;'; put 'put ''ZWVtZW50ICIpLGdlKDMsInAiKSxQZSg0LCIgV2VsY29tZSB0byBEYXRhIENvbnRyb2xsZXIgZm9yIFNBUyEgUGxlYXNlIHJldmlldyBhbmQgYWNjZXB0IGFncmVlbWVudCBiZWxvdyBpbiBvcmRlciB0byBwcm9jZWVkLiAiKSxtZSgpKCksZ2UoNSwiZGl2IiwzLDApLEl0KCJzY3JvbGwiLGZ1''@;'; put 'put ''bmN0aW9uKFMpe3JldHVybiBfdChmKSxidChoLm9uQ2FyZEJsb2NrU2Nyb2xsKFMpKX0pLG1lKCksZ2UoNywiZGl2Iiw0KSg4LCJjbHItY2hlY2tib3gtd3JhcHBlciIsNSkoOSwiaW5wdXQiLDYpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5hZ3Jl''@;'; put 'put ''ZUNoZWNrZWQsUyl8fChoLmFncmVlQ2hlY2tlZD1TKSxidChTKX0pLEl0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgudGVybXNBZ3JlZUNoYW5nZSgpKX0pLG1lKCksZ2UoMTAsImxhYmVsIiksUGUoMTEsIkkgaGF2ZSByZWFkIGFuZCBhZ3JlZSB0byB0aGUgdGVybXMg''@;'; put 'put ''b2YgYWJvdmUuIiksbWUoKSgpLGd0KDEyLGdndCwxLDAsImNsci1zcGlubmVyIiw3KSxtZSgpKCl9MiZkJiYoX2UoNSksUmUoImlubmVySFRNTCIsaC5ldWxhX21hcmtkb3duLFpwKSxfZSgzKSxwcigiZGlzYWJsZWQiLGguYWdyZWVCb3hMb2NrZWQpLF9lKCksWXIoIm5nTW9kZWwiLGguYWdy''@;'; put 'put ''ZWVDaGVja2VkKSxSZSgiZGlzYWJsZWQiLGguYWdyZWVCb3hMb2NrZWQpLF9lKDMpLFJlKCJuZ0lmIixoLmFncmVlQm94TG9ja2VkJiZoLmFncmVlQ2xpY2tlZCkpfSxkZXBlbmRlbmNpZXM6WyRpLFEwLF9hLHVhLCRzLGExLHMxLHhkXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2hlaWdo''@;'; put 'put ''dDoxMDAlO2JhY2tncm91bmQ6I2Y1ZjZmZn0uY2xyLWNoZWNrYm94LXdyYXBwZXIuZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjV9LmNhcmRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWFyZ2lu''@;'; put 'put ''LXRvcDowfS5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjE7b3ZlcmZsb3c6YXV0b30uYWNjZXB0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjEwcHggMTVweH0iXX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rp''@;'; put 'put ''b24gdmd0KGwsYyl7MSZsJiYoZ2UoMCwicCIsMjkpLFBlKDEsIiBMaWNlbmNlIGtleSBpcyBpbnZhbGlkLiBXZSBjYW4ndCBwcm92aWRlIHlvdSBtb3JlIGRldGFpbHMgYXQgdGhlIG1vbWVudCAiKSxtZSgpKX1mdW5jdGlvbiBfZ3QobCxjKXtpZigxJmwmJll0KDAsInAiLDMwKSwyJmwpe2Nv''@;'; put 'put ''bnN0IGE9TmUoMyk7UmUoImlubmVySFRNTCIsYS5saWNlbnNlRXJyb3JzW2Eua2V5RXJyb3JdLFpwKX19ZnVuY3Rpb24gYmd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwicCIpKDEsInN0cm9uZyIpLFBlKDIsIkRldGFpbHM6IiksbWUoKSxQZSgzKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2Uo''@;'; put 'put ''MyksbXIoIiAiLGEuZXJyb3JEZXRhaWxzLCIiKX19ZnVuY3Rpb24geWd0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSx2Z3QsMiwwLCJwIiwyNykoMixfZ3QsMSwxLCJwIiwyOCkoMyxiZ3QsNCwxLCJwIiw0KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdJZiIsIWEua2V5''@;'; put 'put ''RXJyb3IpLF9lKCksUmUoIm5nSWYiLGEua2V5RXJyb3IpLF9lKCksUmUoIm5nSWYiLGEuZXJyb3JEZXRhaWxzKX19ZnVuY3Rpb24gd2d0KGwsYyl7MSZsJiYoVnIoMCksZ2UoMSwicCIsMjkpLFBlKDIsIiBUaGUgcmVnaXN0ZXJlZCBudW1iZXIgb2YgdXNlcnMgcmVhY2hlZCB0aGUgbGltaXQg''@;'; put 'put ''c3BlY2lmaWVkIGZvciB5b3VyIGxpY2VuY2UuIFBsZWFzZSBjb250YWN0ICIpLFl0KDMsImNvbnRhY3QtbGluayIsMzEpLFBlKDQsIiBvciB5b3VyIHJlc2VsbGVyIHRvIGFycmFuZ2UgYWRkaXRpb25hbCBsaWNlbmNlcyBmb3IgdGhpcyBwcm9kdWN0LiAiKSxtZSgpLEJyKCkpfWZ1bmN0aW9u''@;'; put 'put ''IENndChsLGMpezEmbCYmKFZyKDApLGdlKDEsInAiLDI5KSxQZSgyLCIgVXBkYXRlIHRoZSBsaWNlbnNlIGtleSBieSB1cGxvYWRpbmcgdGhlIGxpY2VuY2UgZmlsZSBvciBieSBwYXN0aW5nIGEgbGljZW5zZSBrZXkgYW5kIGFjdGl2YXRpb24ga2V5IGluIHRoZSBpbnB1dHMgYmVsb3cuICIp''@;'; put 'put ''LG1lKCksQnIoKSl9ZnVuY3Rpb24gU2d0KGwsYyl7aWYoMSZsJiYoZ2UoMCwic3BhbiIpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPWMuaW5kZXgsaD1OZSgyKTtwcigibWlzc2tleSIsaC5taXNzbWF0Y2hlZEtleSYmaC5taXNzbWF0Y2hlZEtleT09PWEpLF9lKCks''@;'; put 'put ''X3UoIiAiLGEsIiIsZD09PShudWxsPT1oLnN5c3NpdGUudmFsdWU/bnVsbDpoLnN5c3NpdGUudmFsdWUubGVuZ3RoKS0xPyIiOiIsIiwiICIpfX1mdW5jdGlvbiBNZ3QobCxjKXtpZigxJmwmJihnZSgwLCJwIiwzMikoMSwic3Ryb25nIiksUGUoMiwiQWxsb3dlZCB1c2VyczoiKSxtZSgpLFBl''@;'; put 'put ''KDMpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgzKSxtcigiICIsYS5saWNlbnNlS2V5RGF0YS51c2Vyc19hbGxvd2VkLCIgIil9fWZ1bmN0aW9uIHhndChsLGMpezEmbCYmWXQoMCwiY2xyLXNwaW5uZXIiLDMzKX1mdW5jdGlvbiBFZ3QobCxjKXsxJmwmJihnZSgwLCJkaXYiKSxQZSgx''@;'; put 'put ''LCIgRHJvcCAvIEJyb3dzZSBsaWNlbmNlIGZpbGUgIiksbWUoKSl9ZnVuY3Rpb24gVGd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiksUGUoMSwiIFNlbGVjdGVkIGZpbGU6ICIpLGdlKDIsInN0cm9uZyIpLFBlKDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKDMpLGxyKGEubGlj''@;'; put 'put ''ZW5jZWZpbGUuZmlsZW5hbWUpfX1mdW5jdGlvbiBrZ3QobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiKSgxLCJzdHJvbmciKSxQZSgyKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgyKSxscihhLmxpY2VuY2VGaWxlRXJyb3IpfX1mdW5jdGlvbiBBZ3QobCxjKXtpZigxJmwmJihWcigw''@;'; put 'put ''KSxndCgxLEVndCwyLDAsImRpdiIsNCkoMixUZ3QsNCwxLCJkaXYiLDQpKDMsa2d0LDMsMSwiZGl2Iiw0KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdJZiIsIiI9PT1hLmxpY2VuY2VmaWxlLmZpbGVuYW1lKSxfZSgpLFJlKCJuZ0lmIiwiIiE9PWEubGljZW5jZWZpbGUu''@;'; put 'put ''ZmlsZW5hbWUpLF9lKCksUmUoIm5nSWYiLGEubGljZW5jZUZpbGVFcnJvcil9fWZ1bmN0aW9uIERndChsLGMpezEmbCYmKGdlKDAsImJ1dHRvbiIsMzQpLFBlKDEsIiBDb250aW51ZSB3aXRoIGZyZWUgdGllciAiKSxtZSgpKX1mdW5jdGlvbiBJZ3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24o''@;'; put 'put ''KTtnZSgwLCJkaXYiLDUpKDEsImRpdiIsNiksUGUoMiwiTGljZW5jaW5nIiksbWUoKSxnZSgzLCJkaXYiLDcpKDQsImRpdiIsOCksZ3QoNSx5Z3QsNCwzLCJuZy1jb250YWluZXIiLDkpKDYsd2d0LDUsMCwibmctY29udGFpbmVyIiw5KSg3LENndCwzLDAsIm5nLWNvbnRhaW5lciIsOSksZ2Uo''@;'; put 'put ''OCwicCIpKDksInN0cm9uZyIpLFBlKDEwLCJTWVNTSVRFOiIpLG1lKCksZ3QoMTEsU2d0LDIsNCwic3BhbiIsMTApLGdlKDEyLCJhIiwxMSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9R2koMTQpLGY9R2koMTYpLHY9TmUoKTtyZXR1cm4gYnQodi5jb3B5U3lzc2l0ZSho''@;'; put 'put ''LGYsdi5zeXNzaXRlLnZhbHVlfHxbXSkpfSksWXQoMTMsImNsci1pY29uIiwxMiwwKSxnZSgxNSwic3BhbiIsMTMsMSksUGUoMTcsIkNvcHkgdG8gY2xpcGJvYXJkIiksbWUoKSgpKCksZ3QoMTgsTWd0LDQsMSwicCIsMTQpLGdlKDE5LCJjbHItdGFicyIpKDIwLCJjbHItdGFiIikoMjEsImJ1''@;'; put 'put ''dHRvbiIsMTUpLFBlKDIyLCJVcGxvYWQgbGljZW5jZSIpLG1lKCksZ2UoMjMsImNsci10YWItY29udGVudCIpKDI0LCJpbnB1dCIsMTYsMiksSXQoImNoYW5nZSIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25GaWxlQ2FwdHVyZShoKSl9KSxtZSgpLGdlKDI2LCJkaXYiLDE3''@;'; put 'put ''KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KEdpKDI1KS5jbGljaygpKX0pKCJmaWxlRHJvcCIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkub25GaWxlQ2FwdHVyZShoLCEwKSl9KSxndCgyNyx4Z3QsMSwwLCJjbHItc3Bpbm5lciIsMTgpKDI4LEFndCw0''@;'; put 'put ''LDMsIm5nLWNvbnRhaW5lciIsNCksbWUoKSgpKCksZ2UoMjksImNsci10YWIiKSgzMCwiYnV0dG9uIiwxNSksUGUoMzEsIlBhc3RlIGxpY2VuY2UiKSxtZSgpLGdlKDMyLCJjbHItdGFiLWNvbnRlbnQiKSgzMywiZm9ybSIsMTkpKDM0LCJwIiksUGUoMzUsIkxpY2VuY2Uga2V5OiIpLG1lKCks''@;'; put 'put ''Z2UoMzYsImRpdiIsMjApKDM3LCJ0ZXh0YXJlYSIsMjEpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYubGljZW5jZUtleVZhbHVlLGgpfHwoZi5saWNlbmNlS2V5VmFsdWU9aCksYnQoaCl9KSxJdCgibW91c2VsZWF2ZSIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS50cmltS2V5cygpKX0pLG1lKCkoKSgpLGdlKDM4LCJmb3JtIiwyMikoMzksInAiKSxQZSg0MCwiQWN0aXZhdGlvbiBrZXk6IiksbWUoKSxnZSg0MSwiZGl2IiwyMCkoNDIsInRleHRhcmVhIiwyMyksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0''@;'; put 'put ''aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5hY3RpdmF0aW9uS2V5VmFsdWUsaCl8fChmLmFjdGl2YXRpb25LZXlWYWx1ZT1oKSxidChoKX0pLEl0KCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnRyaW1LZXlzKCkpfSksbWUoKSgpKCko''@;'; put 'put ''KSgpKCkoKSxnZSg0MywiZGl2IiwyNCkoNDQsImJ1dHRvbiIsMjUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5hcHBseUtleXMoKSl9KSxQZSg0NSwiIEFwcGx5IGxpY2VuY2Uga2V5cyAiKSxtZSgpLGd0KDQ2LERndCwyLDAsImJ1dHRvbiIsMjYpLG1lKCko''@;'; put 'put ''KSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKDMpLFJlKCJuZ1N3aXRjaCIsYS5hY3Rpb24pLF9lKDIpLFJlKCJuZ1N3aXRjaENhc2UiLCJrZXkiKSxfZSgpLFJlKCJuZ1N3aXRjaENhc2UiLCJsaW1pdCIpLF9lKCksUmUoIm5nU3dpdGNoQ2FzZSIsInVwZGF0ZSIpLF9lKDQpLFJlKCJuZ0Zv''@;'; put 'put ''ck9mIixhLnN5c3NpdGUudmFsdWUpLF9lKDcpLFJlKCJuZ0lmIixhLmxpY2Vuc2VLZXlEYXRhJiZhLnVzZXJDb3VudExpbWl0YXRpb24pLF9lKDkpLFJlKCJuZ0lmIixhLmxpY2VuY2VGaWxlTG9hZGluZyksX2UoKSxSZSgibmdJZiIsIWEubGljZW5jZUZpbGVMb2FkaW5nKSxfZSg5KSxZcigi''@;'; put 'put ''bmdNb2RlbCIsYS5saWNlbmNlS2V5VmFsdWUpLF9lKDUpLFlyKCJuZ01vZGVsIixhLmFjdGl2YXRpb25LZXlWYWx1ZSksX2UoMiksUmUoImNsckxvYWRpbmciLGEuYXBwbHlpbmdLZXlzKSgiZGlzYWJsZWQiLGEuZGlzYWJsZUFwcGx5QnV0dG9uKSxfZSgyKSxSZSgibmdJZiIsYS5pc0FwcEZy''@;'; put 'put ''ZWVUaWVyLnZhbHVlKX19ZnVuY3Rpb24gUmd0KGwsYyl7MSZsJiZZdCgwLCJhcHAtdGVybXMiKX12YXIgazRlPWZ1bmN0aW9uKGwpe3JldHVybiBsLmtleT0ia2V5IixsLnJlZ2lzdGVyPSJyZWdpc3RlciIsbC5saW1pdD0ibGltaXQiLGwudXBkYXRlPSJ1cGRhdGUiLGx9KGs0ZXx8e30pO2Nv''@;'; put 'put ''bnN0IExndD1be3BhdGg6IjphY3Rpb24iLGNvbXBvbmVudDooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMucm91dGU9YSx0aGlzLmxpY2VuY2VTZXJ2aWNlPWQsdGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5hcHBTZXJ2aWNlPWYsdGhpcy5hY3Rpb249bnVsbCx0aGlzLmxp''@;'; put 'put ''Y2Vuc2VFcnJvcnM9e21pc3Npbmc6J0xpY2VuY2Uga2V5IGlzIG1pc3NpbmcgLSBwbGVhc2UgY29udGFjdCA8YSBjbGFzcz0iY29sb3ItZ3JlZW4iIGhyZWY9Im1haWx0bzogc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyI+c3VwcG9ydEBkYXRhY29udHJvbGxlci5pbzwvYT4gYW5kIGVudGVy''@;'; put 'put ''IHZhbGlkIGtleXMgYmVsb3cuJyxleHBpcmVkOidMaWNlbmNlIGtleSBpcyBleHBpcmVkIC0gcGxlYXNlIGNvbnRhY3QgPGEgY2xhc3M9ImNvbG9yLWdyZWVuIiBocmVmPSJtYWlsdG86IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8iPnN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW88L2E+IGFu''@;'; put 'put ''ZCBlbnRlciB2YWxpZCBrZXlzIGJlbG93LicsaW52YWxpZDonTGljZW5jZSBrZXkgaXMgaW52YWxpZCAtIHBsZWFzZSBjb250YWN0IDxhIGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlv''@;'; put 'put ''PC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy4nLG1pc3NtYXRjaDonWW91ciBTWVNTSVRFIChiZWxvdykgaXMgbm90IGZvdW5kIGluIHRoZSBsaWNlbmNlIGtleSAtIHBsZWFzZSBjb250YWN0IDxhIGNsYXNzPSJjb2xvci1ncmVlbiIgaHJlZj0ibWFpbHRvOiBzdXBwb3J0QGRhdGFj''@;'; put 'put ''b250cm9sbGVyLmlvIj5zdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvPC9hPiBhbmQgZW50ZXIgdmFsaWQga2V5cyBiZWxvdy4nfSx0aGlzLmxpY2VuY2VLZXlWYWx1ZT0iIix0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT0iIix0aGlzLmFwcGx5aW5nS2V5cz0hMSx0aGlzLnN5c3NpdGU9dGhpcy5h''@;'; put 'put ''cHBTZXJ2aWNlLnN5c3NpdGUsdGhpcy5jdXJyZW50TGljZW5jZUtleT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VLZXksdGhpcy5jdXJyZW50QWN0aXZhdGlvbktleT10aGlzLmxpY2VuY2VTZXJ2aWNlLmFjdGl2YXRpb25LZXksdGhpcy5pc0FwcEZyZWVUaWVyPXRoaXMubGljZW5jZVNl''@;'; put 'put ''cnZpY2UuaXNBcHBGcmVlVGllcix0aGlzLnVzZXJDb3VudExpbWl0YXRpb249dGhpcy5saWNlbmNlU2VydmljZS51c2VyQ291bnRMaW1pdGF0aW9uLHRoaXMubGljZW5zZUtleURhdGE9bnVsbCx0aGlzLmlucHV0VHlwZT0iZmlsZSIsdGhpcy5saWNlbmNlRmlsZUxvYWRpbmc9ITEsdGhpcy5s''@;'; put 'put ''aWNlbmNlZmlsZT17ZmlsZW5hbWU6IiJ9fW5nT25Jbml0KCl7dGhpcy5saWNlbmNlS2V5VmFsdWU9dGhpcy5jdXJyZW50TGljZW5jZUtleXx8IiIsdGhpcy5hY3RpdmF0aW9uS2V5VmFsdWU9dGhpcy5jdXJyZW50QWN0aXZhdGlvbktleXx8IiIsdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJz''@;'; put 'put ''Y3JpYmUoYT0+e3RoaXMua2V5RXJyb3I9YS5lcnJvcix0aGlzLm1pc3NtYXRjaGVkS2V5PWEubWlzc21hdGNoSWQsYS5kZXRhaWxzJiYodGhpcy5lcnJvckRldGFpbHM9YXRvYihhLmRldGFpbHMpKX0pLHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShhPT57bGV0IGQ9YS5hY3Rpb247ZCYm''@;'; put 'put ''T2JqZWN0LnZhbHVlcyhrNGUpLmluY2x1ZGVzKGQpJiYodGhpcy5hY3Rpb249ZCl9KSx0aGlzLmxpY2Vuc2VLZXlEYXRhPXRoaXMubGljZW5jZVNlcnZpY2UuZ2V0TGljZW5zZUtleURhdGEoKX10cmltS2V5cygpe3RoaXMubGljZW5jZUtleVZhbHVlPXRoaXMubGljZW5jZUtleVZhbHVlLnRy''@;'; put 'put ''aW0oKSx0aGlzLmFjdGl2YXRpb25LZXlWYWx1ZT10aGlzLmFjdGl2YXRpb25LZXlWYWx1ZS50cmltKCl9Y29weVN5c3NpdGUoYSxkLGgpe2NvbnN0IGY9aC5qb2luKCJcbiIpO25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGYpLnRoZW4oKCk9PnthLnNldEF0dHJpYnV0ZSgic2hhcGUi''@;'; put 'put ''LCJjaGVjayIpLGEuc2V0QXR0cmlidXRlKCJjbGFzcyIsImlzLXN1Y2Nlc3MiKSxkLmlubmVyVGV4dD0iQ29waWVkISIsc2V0VGltZW91dCgoKT0+e2Euc2V0QXR0cmlidXRlKCJzaGFwZSIsImNvcHkiKSxhLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSxkLmlubmVyVGV4dD0iQ29weSB0byBj''@;'; put 'put ''bGlwYm9hcmQifSwxZTMpfSl9YXBwbHlLZXlzKCl7dGhpcy5hcHBseWluZ0tleXM9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImFkbWluL3JlZ2lzdGVya2V5Iix7a2V5dXBsb2FkOlt7QUNUSVZBVElPTl9LRVk6dGhpcy5hY3RpdmF0aW9uS2V5VmFsdWUsTElDRU5DRV9LRVk6dGhpcy5s''@;'; put 'put ''aWNlbmNlS2V5VmFsdWV9XX0pLnRoZW4oZD0+e2QuYWRhcHRlclJlc3BvbnNlLnJldHVybiYmZC5hZGFwdGVyUmVzcG9uc2UucmV0dXJuWzBdJiYiU1VDQ0VTUyI9PT1kLmFkYXB0ZXJSZXNwb25zZS5yZXR1cm5bMF0uTVNHJiZsb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uLmhyZWYuc3BsaXQo''@;'; put 'put ''IiMiKVswXSl9KS5maW5hbGx5KCgpPT57dGhpcy5hcHBseWluZ0tleXM9ITF9KX1vbkZpbGVDYXB0dXJlKGEsZD0hMSl7bGV0IGg9ZD9hWzBdOmEudGFyZ2V0LmZpbGVzWzBdO2lmKHRoaXMubGljZW5jZWZpbGUuZmlsZW5hbWU9aC5uYW1lLCFoKXJldHVybjt0aGlzLmxpY2VuY2VGaWxlTG9h''@;'; put 'put ''ZGluZz0hMDtjb25zdCBmPW5ldyBGaWxlUmVhZGVyO2Yub25sb2FkPXY9PntpZih0aGlzLmxpY2VuY2VGaWxlRXJyb3I9IkVycm9yIHJlYWRpbmcgZmlsZS4iLCF2fHwhdi50YXJnZXR8fDIhPXYudGFyZ2V0LnJlYWR5U3RhdGV8fHYudGFyZ2V0LmVycm9yfHwhdi50YXJnZXQucmVzdWx0KXJl''@;'; put 'put ''dHVybjt0aGlzLmxpY2VuY2VGaWxlTG9hZGluZz0hMSx0aGlzLmxpY2VuY2VGaWxlRXJyb3I9dm9pZCAwO2NvbnN0IFM9di50YXJnZXQucmVzdWx0LnRvU3RyaW5nKCkuc3BsaXQoIlxuIik7dGhpcy5hY3RpdmF0aW9uS2V5VmFsdWU9U1sxXSx0aGlzLmxpY2VuY2VLZXlWYWx1ZT1TWzBdfSxm''@;'; put 'put ''LnJlYWRBc1RleHQoaCl9c3dpdGNoVHlwZShhKXt0aGlzLmlucHV0VHlwZT1hfWdldCBkaXNhYmxlQXBwbHlCdXR0b24oKXtyZXR1cm4gdGhpcy5saWNlbmNlS2V5VmFsdWUubGVuZ3RoPDF8fHRoaXMuYWN0aXZhdGlvbktleVZhbHVlLmxlbmd0aDwxfHx0aGlzLmxpY2VuY2VLZXlWYWx1ZT09''@;'; put 'put ''PXRoaXMuY3VycmVudExpY2VuY2VLZXkmJnRoaXMuYWN0aXZhdGlvbktleVZhbHVlPT09dGhpcy5jdXJyZW50QWN0aXZhdGlvbktleX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShPYyksSmUoQTApLEplKHZhKSxKZShQSSkpfX1zdGF0aWN7''@;'; put 'put ''dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWxpY2Vuc2luZyJdXSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1siY29weUljb24iLCIiXSxbImNvcHlUb29sdGlwIiwiIl0sWyJsaWNlbmNlRmlsZSIsIiJdLFsiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWzQsIm5n''@;'; put 'put ''SWYiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJjYXJkLWJsb2NrIiwzLCJuZ1N3aXRjaCJdLFsxLCJjYXJkLXRleHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzMsIm1pc3NrZXkiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0''@;'; put 'put ''aXAtdG9wLXJpZ2h0IiwzLCJjbGljayJdLFsic2hhcGUiLCJjb3B5Iiwic2l6ZSIsIjE1IiwxLCJjdXJzb3ItcG9pbnRlciJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbImNsYXNzIiwibS0wIiw0LCJuZ0lmIl0sWyJjbHJUYWJMaW5rIiwiIl0sWyJ0eXBlIiwiZmlsZSIsImhpZGRlbiIsIiIs''@;'; put 'put ''MywiY2hhbmdlIl0sWyJhcHBGaWxlRHJvcCIsIiIsMSwiZHJvcC1hcmVhIiwzLCJjbGljayIsImZpbGVEcm9wIl0sWyJjbGFzcyIsInNwaW5uZXItc20iLDQsIm5nSWYiXSxbMSwiY2xyLWZvcm0iLCJsaWNlbnNlLWtleS1mb3JtIl0sWzEsImNsci1jb250cm9sLWNvbnRhaW5lciJdLFsibmFt''@;'; put 'put ''ZSIsImxpY2Vuc2Uta2V5LWFyZWEiLCJwbGFjZWhvbGRlciIsIlBhc3RlIGxpY2VuY2Uga2V5IGhlcmUiLDEsImNsci10ZXh0YXJlYSIsMywibmdNb2RlbENoYW5nZSIsIm1vdXNlbGVhdmUiLCJuZ01vZGVsIl0sWzEsImNsci1mb3JtIiwiYWN0aXZhdGlvbi1rZXktZm9ybSJdLFsibmFtZSIs''@;'; put 'put ''ImFjdGl2YXRpb24ta2V5LWFyZWEiLCJwbGFjZWhvbGRlciIsIlBhc3RlIGFjdGl2YXRpb24ga2V5IGhlcmUiLDEsImNsci10ZXh0YXJlYSIsMywibmdNb2RlbENoYW5nZSIsIm1vdXNlbGVhdmUiLCJuZ01vZGVsIl0sWzEsImNhcmQtZm9vdGVyIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciJdLFsxLCJidG4iLCJidG4tcHJpbWFyeSIsImFwcGx5LWtleXMiLDMsImNsaWNrIiwiY2xyTG9hZGluZyIsImRpc2FibGVkIl0sWyJyb3V0ZXJMaW5rIiwiLyIsImNsYXNzIiwiYnRuIGJ0bi1zbSBidG4tbGluayIsNCwibmdJZiJdLFsiY2xhc3MiLCJrZXktZXJyb3IiLDQsIm5n''@;'; put 'put ''SWYiXSxbImNsYXNzIiwia2V5LWVycm9yIiwzLCJpbm5lckhUTUwiLDQsIm5nSWYiXSxbMSwia2V5LWVycm9yIl0sWzEsImtleS1lcnJvciIsMywiaW5uZXJIVE1MIl0sWyJjbGFzc2VzIiwiY29sb3ItZ3JlZW4iXSxbMSwibS0wIl0sWzEsInNwaW5uZXItc20iXSxbInJvdXRlckxpbmsiLCIv''@;'; put 'put ''IiwxLCJidG4iLCJidG4tc20iLCJidG4tbGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmZ3QoMCxJZ3QsNDcsMTMsImRpdiIsMykoMSxSZ3QsMSwwLCJhcHAtdGVybXMiLDQpLDImZCYmKFJlKCJuZ0lmIiwicmVnaXN0ZXIiIT09aC5hY3Rpb24pLF9lKCksUmUoIm5nSWYiLCJy''@;'; put 'put ''ZWdpc3RlciI9PT1oLmFjdGlvbikpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLHdoLHAzLHU4LHVsLF9hLGw4LHVhLE0zLFlhLGwwLERoLEVtLGttLFA4LFRtLHhtLEw4LHhkLGswLG1ndCxIUl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtoZWlnaHQ6Y2FsYygxMDAlIC0gOTZweCk7cGFkZGlu''@;'; put 'put ''ZzoyMHB4fS5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjB9LmtleS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1pc3NrZXlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNlNzRjM2N9LmxpY2Vuc2Uta2V5LWZvcm1bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdLCAuYWN0aXZhdGlvbi1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzowfS5saWNlbnNlLWtleS1mb3JtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItY29udHJvbC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuYWN0aXZhdGlvbi1rZXktZm9ybVtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV0gICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5saWNlbnNlLWtleS1mb3JtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbHItY29udHJvbC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgdGV4dGFyZWFbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdLCAuYWN0aXZhdGlvbi1rZXktZm9ybVtfbmdjb250ZW50LSVDT01QJV0gICAuY2xyLWNvbnRyb2wtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRhcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO2hlaWdodDoxNzBweDttYXgtaGVpZ2h0OjE3''@;'; put 'put ''MHB4O21pbi1oZWlnaHQ6MTcwcHg7cmVzaXplOm5vbmV9LmFwcGx5LWtleXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0MHB4fS5kcm9wLWFyZWFbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRk''@;'; put 'put ''aW5nOjE1cHg7Ym9yZGVyOjJweCBkYXNoZWQgI2IyYjJiMjtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9pbnRlcjttYXJnaW46MTBweCAwfWNsci10YWJzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH0i''@;'; put 'put ''XX0pfX1yZXR1cm4gbH0pKCksY2FuQWN0aXZhdGU6W2NKXSxjYW5EZWFjdGl2YXRlOltjSl19XTtsZXQgT2d0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltDYy5mb3JDaGlsZChMZ3QpLENjXX0pfX1yZXR1cm4gbH0pKCksUGd0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1l''@;'; put 'put ''aSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxyYyxjMCxPZ3QsZHldfSl9fXJldHVybiBsfSkoKTtjb25zdCBGZ3Q9KCk9Pih7c3RhbmRhbG9uZTohMH0pLEE0ZT0obCxjLGEpPT4oe2FkZGVkUm93OmwsZGVsZXRlZFJvdzpjLHVwZGF0ZWRSb3c6YX0p''@;'; put 'put ''LEQ0ZT1sPT4oeyJjaCB0b29sdGlwIHRvb2x0aXAtbWQgdG9vbHRpcC10b3AtcmlnaHQiOmx9KTtmdW5jdGlvbiBOZ3QobCxjKXtpZigxJmwmJihnZSgwLCJ0ZCIsMTkpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdCxkPU5lKCk7UmUoInJvdXRlckxpbmsiLCIvc3Rh''@;'; put 'put ''Z2UvIitkLmpzUGFyYW1zW2FdKSxfZSgpLG1yKCIgIixkLmpzUGFyYW1zW2FdLCIgIil9fWZ1bmN0aW9uIEhndChsLGMpe2lmKDEmbCYmKGdlKDAsInRkIiw0KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQsZD1OZSgpO19lKCksbXIoIiAiLGQuanNQYXJhbXNbYV0s''@;'; put 'put ''IiAiKX19ZnVuY3Rpb24gVmd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsNCksUGUoMiksbWUoKSxndCgzLE5ndCwyLDIsInRkIiwxNykoNCxIZ3QsMiwxLCJ0ZCIsMTgpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgyKSxscihhKSxfZSgpLFJlKCJuZ0lmIixh''@;'; put 'put ''LmluY2x1ZGVzKCJUQUJMRV9JRCIpKSxfZSgpLFJlKCJuZ0lmIiwhYS5pbmNsdWRlcygiVEFCTEVfSUQiKSl9fWZ1bmN0aW9uIEJndChsLGMpe2lmKDEmbCYmKGdlKDAsInRyIikoMSwidGQiLDQpLFBlKDIpLG1lKCksZ2UoMywidGQiLDQpLFBlKDQpLG1lKCkoKSksMiZsKXtjb25zdCBhPWMu''@;'; put 'put ''JGltcGxpY2l0LGQ9TmUoMyk7X2UoMiksbHIoYSksX2UoMiksbHIoZC5zdWJtaXREZXRhaWxzW2FdKX19ZnVuY3Rpb24gamd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRhYi1jb250ZW50IikoMSwiZGl2IiwyMikoMiwidGFibGUiLDMpKDMsInRoZWFkIikoNCwidHIiKSg1LCJ0aCIsNCks''@;'; put 'put ''UGUoNiwiTmFtZSIpLG1lKCksZ2UoNywidGgiLDQpLFBlKDgsIlZhbHVlIiksbWUoKSgpKCksZ2UoOSwidGJvZHkiKSxndCgxMCxCZ3QsNSwyLCJ0ciIsNSksbWUoKSgpKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDEwKSxSZSgibmdGb3JPZiIsYS5zdWJtaXRBcnIpfX1mdW5jdGlvbiB6''@;'; put 'put ''Z3QobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIpKDEsInRkIiw0KSxQZSgyKSxtZSgpLGdlKDMsInRkIiw0KSxQZSg0KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPU5lKDIpO19lKDIpLGxyKGEpLF9lKDIpLGxyKGQuanNQYXJhbXNbYV0pfX1mdW5jdGlvbiBVZ3QobCxjKXtp''@;'; put 'put ''ZigxJmwmJihnZSgwLCJjbHItdGFicyIpKDEsImNsci10YWIiKSgyLCJidXR0b24iLDIwKSxQZSgzLCJTdWJtaXR0ZWQgVGFibGUgRGV0YWlscyIpLG1lKCksZ3QoNCxqZ3QsMTEsMSwiY2xyLXRhYi1jb250ZW50IiwyMSksbWUoKSxnZSg1LCJjbHItdGFiIikoNiwiYnV0dG9uIiwyMCksUGUo''@;'; put 'put ''NywiQmFzZSBUYWJsZSBEZXRhaWxzIiksbWUoKSxnZSg4LCJjbHItdGFiLWNvbnRlbnQiKSg5LCJkaXYiLDIyKSgxMCwidGFibGUiLDMpKDExLCJ0aGVhZCIpKDEyLCJ0ciIpKDEzLCJ0aCIsNCksUGUoMTQsIk5hbWUiKSxtZSgpLGdlKDE1LCJ0aCIsNCksUGUoMTYsIlZhbHVlIiksbWUoKSgp''@;'; put 'put ''KCksZ2UoMTcsInRib2R5IiksZ3QoMTgsemd0LDUsMiwidHIiLDUpLG1lKCkoKSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSg0KSxSZSgiY2xySWZBY3RpdmUiLCEwKSxfZSgxNCksUmUoIm5nRm9yT2YiLGEua2V5c0FycmF5KX19ZnVuY3Rpb24gWmd0KGwsYyl7MSZsJiYoZ2UoMCwi''@;'; put 'put ''cCIsNzIpLFBlKDEsIiBUaGVyZSBhcmUgbm8gZGV0YWlscyB0byBzaG93ICIpLG1lKCkpfWZ1bmN0aW9uIFlndChsLGMpe2lmKDEmbCYmKFZyKDApLGdlKDEsImRpdiIsNzMpKDIsInNwYW4iKSxQZSgzLCJUYWJsZSBJZDoiKSxtZSgpLGdlKDQsInN0cm9uZyIsNzQpLFBlKDUpLG1lKCkoKSxn''@;'; put 'put ''ZSg2LCJkaXYiKSg3LCJzcGFuIiksUGUoOCwiU3VibWl0dGVyOiIpLG1lKCksZ2UoOSwic3BhbiIsNzUpLFBlKDEwKSxtZSgpKCksZ2UoMTEsImRpdiIpKDEyLCJzcGFuIiksUGUoMTMsIlN1Ym1pdHRlZCBvbjoiKSxtZSgpLGdlKDE0LCJzcGFuIiw3NSksUGUoMTUpLG1lKCkoKSxnZSgxNiwi''@;'; put 'put ''ZGl2IikoMTcsInNwYW4iKSxQZSgxOCwiU3VibWl0dGVkIFJlYXNvbjoiKSxtZSgpLGdlKDE5LCJzcGFuIiw3NSksUGUoMjApLG1lKCkoKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoNSk7X2UoNCksUmUoInJvdXRlckxpbmsiLCIvc3RhZ2UvIisobnVsbD09YS50YWJsZURldGFpbHM/bnVsbDph''@;'; put 'put ''LnRhYmxlRGV0YWlscy5UQUJMRV9JRCkpLF9lKCksbXIoIiAiLG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuVEFCTEVfSUQsIiAiKSxfZSg1KSxtcigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5TVUJNSVRURURfQllfTk0sIiAi''@;'; put 'put ''KSxfZSg1KSxtcigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5TVUJNSVRURURfT05fRFRUTSwiICIpLF9lKDUpLG1yKCIgIixudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9SRUFTT05fVFhULCIgIil9fWZ1bmN0''@;'; put 'put ''aW9uIFdndChsLGMpezEmbCYmKGdlKDAsInNwYW4iLDc2KSxZdCgxLCJjbHItaWNvbiIsNzcpLFBlKDIsIiBPbmx5IHRoZSBmaXJzdCAxMDAgaW5zZXJ0cywgdXBkYXRlcyBvciBkZWxldGVzIGFyZSBkaXNwbGF5ZWQgIiksbWUoKSl9ZnVuY3Rpb24gR2d0KGwsYyl7aWYoMSZsKXtjb25zdCBh''@;'; put 'put ''PVNuKCk7Z2UoMCwiZGl2Iiw0OSkoMSwiZGl2Iiw1MCkoMiwiZGl2Iiw1MSksZ3QoMyxaZ3QsMiwwLCJwIiw0NSkoNCxZZ3QsMjEsNSwibmctY29udGFpbmVyIiw4KSxtZSgpLGdlKDUsImRpdiIsNTIpKDYsImRpdiIsNTMpKDcsImRpdiIsNTQpKDgsImRpdiIsNTUpKDksImJ1dHRvbiIsNTYp''@;'; put 'put ''LEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDQpO3JldHVybiBidChoLmdvVG9CYXNlKG51bGw9PWguanNQYXJhbXM/bnVsbDpoLmpzUGFyYW1zLlRBQkxFX05NKSl9KSxQZSgxMCwiIFZpZXcgYmFzZSB0YWJsZSAiKSxtZSgpLGdlKDExLCJidXR0b24iLDU3KSxJdCgi''@;'; put 'put ''Y2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSg0KTtyZXR1cm4gYnQoaC5nZXRUYWJsZShoLnRhYmxlSWQpKX0pLFBlKDEyLCIgVmlldyBzdGFnZWQgZGF0YSAiKSxtZSgpLGdlKDEzLCJidXR0b24iLDU4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSg0''@;'; put 'put ''KTtyZXR1cm4gYnQoaC5nb0JhY2sobnVsbD09aC5qc1BhcmFtcz9udWxsOmguanNQYXJhbXMuVEFCTEVfTk0pKX0pLFBlKDE0LCIgRWRpdCBiYXNlIHRhYmxlICIpLG1lKCkoKSgpKCksZ2UoMTUsImRpdiIsNTkpKDE2LCJidXR0b24iLDYwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IF90KGEpLGJ0KE5lKDQpLmFwcHJvdmVUYWJsZSgpKX0pLFBlKDE3LCIgQUNDRVBUICIpLG1lKCksZ2UoMTgsImJ1dHRvbiIsNjEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoNCkucmVqZWN0T3Blbj0hMCl9KSxQZSgxOSwiIFJFSkVDVCAiKSxtZSgpLGdlKDIw''@;'; put 'put ''LCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsNjIpKDIxLCJjbHItdG9nZ2xlLXdyYXBwZXIiKSgyMiwiaW5wdXQiLDYzKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSg0KTtyZXR1cm4gR3IoZi5mb3JtYXR0ZWRWYWx1ZXMsaCl8fChmLmZvcm1hdHRlZFZh''@;'; put 'put ''bHVlcz1oKSxidChoKX0pLEl0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDQpLmZvcm1hdHRpbmdDaGFuZ2VkKCkpfSksbWUoKSxnZSgyMywibGFiZWwiLDY0KSxQZSgyNCksbWUoKSgpKCkoKSxnZSgyNSwiZGl2Iiw2NSksZ3QoMjYsV2d0LDMsMCwic3BhbiIsNjYp''@;'; put 'put ''LGdlKDI3LCJkaXYiLDMxKSgyOCwiZGl2Iiw2NykoMjksInNwYW4iLDY4KSxQZSgzMCwiIENoYW5nZWQgUm93cyAiKSxnZSgzMSwic3BhbiIsNjkpLFBlKDMyKSxtZSgpKCksZ2UoMzMsInNwYW4iLDcwKSxQZSgzNCwiIEFkZGVkIFJvd3MgIiksZ2UoMzUsInNwYW4iLDY5KSxQZSgzNiksbWUo''@;'; put 'put ''KSgpLGdlKDM3LCJzcGFuIiw3MSksUGUoMzgsIiBEZWxldGVkIFJvd3MgIiksZ2UoMzksInNwYW4iLDY5KSxQZSg0MCksbWUoKSgpKCkoKSgpKCkoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSg0KTtfZSgzKSxSZSgibmdJZiIsIWEudGFibGVEZXRhaWxzKSxfZSgpLFJlKCJuZ0lmIixhLnRhYmxl''@;'; put 'put ''RGV0YWlscyksX2UoMTIpLFJlKCJjbHJMb2FkaW5nIixhLmFjY2VwdExvYWRpbmcpKCJkaXNhYmxlZCIsIWEubG9hZGluZ1RhYmxlfHwiTk8iPT09KG51bGw9PWEucGFyYW1zP251bGw6YS5wYXJhbXMuSVNBUFBST1ZFUil8fGEubm9DaGFuZ2VzKSxfZSgyKSxSZSgiZGlzYWJsZWQiLCFhLmxv''@;'; put 'put ''YWRpbmdUYWJsZXx8Ik5PIj09PShudWxsPT1hLnBhcmFtcz9udWxsOmEucGFyYW1zLklTQVBQUk9WRVIpfHxhLm5vQ2hhbmdlcyksX2UoNCksWXIoIm5nTW9kZWwiLGEuZm9ybWF0dGVkVmFsdWVzKSxfZSgyKSxscihhLmZvcm1hdHRlZFZhbHVlcz8iRm9ybWF0dGVkIjoiVW5mb3JtYXR0ZWQi''@;'; put 'put ''KSxfZSgyKSxSZSgibmdJZiIsYS5kaWZmc0xpbWl0KSxfZSg2KSxscihhLmxlbnMudXBkYXRlZCksX2UoNCksbHIoYS5sZW5zLm5ldyksX2UoNCksbHIoYS5sZW5zLmRlbGV0ZWQpfX1mdW5jdGlvbiAkZ3QobCxjKXsxJmwmJihnZSgwLCJkaXYiLDc1KSgxLCJwIiw4MSksUGUoMiwiTG9hZGlu''@;'; put 'put ''ZyB0YWJsZSIpLG1lKCkoKSl9ZnVuY3Rpb24gcWd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2Iiw3OCkoMSwic3BhbiIsNzkpLFBlKDIsIiBMb2FkaW5nLi4uICIpLG1lKCksZ3QoMywkZ3QsMywwLCJkaXYiLDgwKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoNCk7X2UoMyksUmUoIm5nSWYiLCFh''@;'; put 'put ''LmxvYWRpbmdUYWJsZSl9fWZ1bmN0aW9uIEtndChsLGMpezEmbCYmKGdlKDAsInAiLDcyKSxQZSgxLCIgVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gc2hvdyAiKSxtZSgpKX1mdW5jdGlvbiBYZ3QobCxjKXtpZigxJmwmJihnZSgwLCJ0aCIsNCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPWMu''@;'; put 'put ''JGltcGxpY2l0O19lKCksbHIoYSl9fWZ1bmN0aW9uIEpndChsLGMpe2lmKDEmbCYmKGdlKDAsInNwYW4iLDg2KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKS5pbmRleCxkPU5lKDIpLmluZGV4LGg9TmUoNCk7X2UoKSxtcigiT3JpZ2luYWwgdmFsdWUgaXM6ICIsaC5hcnJPZkNoYW5n''@;'; put 'put ''ZXNbZF1bYV0sIiIpfX1mdW5jdGlvbiBRZ3QobCxjKXtpZigxJmwmJihnZSgwLCJ0ZCIsODQpLFBlKDEpLGd0KDIsSmd0LDIsMSwic3BhbiIsODUpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPWMuaW5kZXgsaD1OZSgyKS5pbmRleCxmPU5lKDQpO1JlKCJuZ0NsYXNzIixoMygz''@;'; put 'put ''LEQ0ZSwxPT1mLmFyckNoYW5nZWRbaF1bZF0mJiJ1cGRhdGVkIj09Zi5jaEFycltoXSkpLF9lKCksbXIoIiAiLGYuZGlmZlRhYmxlLmRhdGFbaF1bYV0sIiAiKSxfZSgpLFJlKCJuZ0lmIiwxPT1mLmFyckNoYW5nZWRbaF1bZF0mJiJ1cGRhdGVkIj09Zi5jaEFycltoXSl9fWZ1bmN0aW9uIGVt''@;'; put 'put ''dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsUWd0LDMsNSwidGQiLDgzKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKS5pbmRleCxkPU5lKDQpO19lKCksUmUoIm5nRm9yT2YiLGQucm93S2V5c1thXSl9fWZ1bmN0aW9uIHRtdChsLGMpe2lmKDEmbCYmKGdlKDAsInRkIiw0KSxQZSgxKSxtZSgp''@;'; put 'put ''KSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1OZSgyKS5pbmRleCxoPU5lKDQpO19lKCksbXIoIiAiLGguZGlmZlRhYmxlLmRhdGFbZF1bYV0sIiAiKX19ZnVuY3Rpb24gbm10KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSx0bXQsMiwxLCJ0ZCIsNDcpLEJyKCkpLDImbCl7Y29uc3QgYT1O''@;'; put 'put ''ZSgpLmluZGV4LGQ9TmUoNCk7X2UoKSxSZSgibmdGb3JPZiIsZC5yb3dLZXlzW2FdKX19ZnVuY3Rpb24gcm10KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiLDgyKSxndCgxLGVtdCwyLDEsIm5nLWNvbnRhaW5lciIsOCkoMixubXQsMiwxLCJuZy1jb250YWluZXIiLDgpLG1lKCkpLDImbCl7Y29u''@;'; put 'put ''c3QgYT1jLmluZGV4LGQ9TmUoNCk7UmUoIm5nQ2xhc3MiLG5TKDMsQTRlLCJhZGRlZCI9PWQuY2hBcnJbYV0sImRlbGV0ZWQiPT1kLmNoQXJyW2FdLCJ1cGRhdGVkIj09ZC5jaEFyclthXSkpLF9lKCksUmUoIm5nSWYiLCJ1cGRhdGVkIj09PWQuY2hBcnJbYV0pLF9lKCksUmUoIm5nSWYiLCJ1''@;'; put 'put ''cGRhdGVkIiE9PWQuY2hBcnJbYV0pfX1mdW5jdGlvbiBpbXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDI5KSgxLCJkaXYiLDMwKSgyLCJkaXYiLDMxKSgzLCJkaXYiLDMyKSg0LCJzcGFuIiwzMyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChO''@;'; put 'put ''ZSgzKS5nb1RvQXBwcm92YWxzTGlzdCgpKX0pLFl0KDUsImNsci1pY29uIiwzNCksUGUoNiwiQmFjayB0byBhcHByb3ZhbHMgbGlzdCAiKSxtZSgpKCksZ2UoNywiZGl2IiwzNSkoOCwiaDMiLDM2KSxQZSg5KSxtZSgpKCksZ2UoMTAsImRpdiIsMzcpKDExLCJhIiwzOCksSXQoImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5nZXREZXRhaWxzKCkpfSksWXQoMTIsImNsci1pY29uIiwzOSksbWUoKSgpKCksZ2UoMTMsInAiLDQwKSxQZSgxNCksbWUoKSgpLGdlKDE1LCJkaXYiLDQxKSxndCgxNixHZ3QsNDEsMTEsImRpdiIsNDIpLG1lKCksZ3QoMTcscWd0LDQs''@;'; put 'put ''MSwiZGl2Iiw0MyksZ2UoMTgsImRpdiIsNDQpLGd0KDE5LEtndCwyLDAsInAiLDQ1KSxnZSgyMCwidGFibGUiLDMpKDIxLCJ0aGVhZCIpKDIyLCJ0ciIsNDYpLGd0KDIzLFhndCwyLDEsInRoIiw0NyksbWUoKSgpLGdlKDI0LCJ0Ym9keSIpLGd0KDI1LHJtdCwzLDcsInRyIiw0OCksbWUoKSgp''@;'; put 'put ''KCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoMyk7X2UoOSksbXIoIiAiLG51bGw9PWEuanNQYXJhbXM/bnVsbDphLmpzUGFyYW1zLlRBQkxFX05NLCIgIiksX2UoNSksbXIoIiAiLG51bGw9PWEuanNQYXJhbXM/bnVsbDphLmpzUGFyYW1zLlRBQkxFX0RFU0MsIiAiKSxfZSgyKSxSZSgibmdJZiIs''@;'; put 'put ''YS5sb2FkZWQpLF9lKCksUmUoIm5nSWYiLCFhLmxvYWRpbmdUYWJsZSksX2UoMiksUmUoIm5nSWYiLGEubG9hZGluZ1RhYmxlJiZhLm5vQ2hhbmdlcyksX2UoNCksUmUoIm5nRm9yT2YiLGEucm93SGVhZGVyKSxfZSgyKSxSZSgibmdGb3JPZiIsYS5yb3dLZXlzKX19ZnVuY3Rpb24gb210KGws''@;'; put 'put ''Yyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyNyksZ3QoMSxpbXQsMjYsNywiZGl2IiwyOCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLGEubG9hZGVkKX19ZnVuY3Rpb24gc210KGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIsNzkpLFBlKDEsIiBMb2FkaW5nLi4uICIpLG1l''@;'; put 'put ''KCkpfWZ1bmN0aW9uIGFtdChsLGMpezEmbCYmKGdlKDAsImRpdiIpKDEsImgzIiksUGUoMiwiTG9hZGluZyBwcmV2aWV3IiksbWUoKSgpKX1mdW5jdGlvbiBsbXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDg3KSxndCgxLHNtdCwyLDAsInNwYW4iLDg4KSgyLGFtdCwzLDAsImRpdiIsOCks''@;'; put 'put ''bWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLCFhLmxvYWRlZCksX2UoKSxSZSgibmdJZiIsIWEubG9hZGVkKX19ZnVuY3Rpb24gY210KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyMyksZ3QoMSxvbXQsMiwxLCJkaXYiLDI0KSxnZSgyLCJkaXYiLDI1KSxndCgzLGxt''@;'; put 'put ''dCwzLDIsImRpdiIsMjYpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsYS5sb2FkZWQpLF9lKDIpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiB1bXQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiw3NiksWXQoMSwiY2xyLWljb24iLDc3KSxQZSgyLCIgT25s''@;'; put 'put ''eSB0aGUgZmlyc3QgMTAwIGluc2VydHMsIHVwZGF0ZXMgb3IgZGVsZXRlcyBhcmUgZGlzcGxheWVkICIpLG1lKCkpfWZ1bmN0aW9uIGRtdChsLGMpezEmbCYmWXQoMCwiZGl2Iiw0OSl9ZnVuY3Rpb24gaG10KGwsYyl7MSZsJiYoZ2UoMCwiZGl2Iiw3NSkoMSwicCIsODEpLFBlKDIsIkxvYWRp''@;'; put 'put ''bmcgdGFibGUiKSxtZSgpKCkpfWZ1bmN0aW9uIGZtdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMTA0KSgxLCJzcGFuIiw3OSksUGUoMiwiIExvYWRpbmcuLi4gIiksbWUoKSxndCgzLGhtdCwzLDAsImRpdiIsODApLG1lKCkpLDImbCl7Y29uc3QgYT1OZSg0KTtfZSgzKSxSZSgibmdJZiIs''@;'; put 'put ''IWEubG9hZGluZ1RhYmxlKX19ZnVuY3Rpb24gcG10KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGgiLDQpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLGxyKGEpfX1mdW5jdGlvbiBnbXQobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiw4NiksUGUoMSksbWUoKSksMiZs''@;'; put 'put ''KXtjb25zdCBhPU5lKCkuaW5kZXgsZD1OZSgyKS5pbmRleCxoPU5lKDQpO19lKCksbXIoIk9yaWdpbmFsIHZhbHVlIGlzOiAiLGguYXJyT2ZDaGFuZ2VzW2RdW2FdLCIiKX19ZnVuY3Rpb24gbW10KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGQiLDg0KSxQZSgxKSxndCgyLGdtdCwyLDEsInNwYW4i''@;'; put 'put ''LDg1KSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQsZD1jLmluZGV4LGg9TmUoMikuaW5kZXgsZj1OZSg0KTtSZSgibmdDbGFzcyIsaDMoMyxENGUsMT09Zi5hcnJDaGFuZ2VkW2hdW2RdJiYidXBkYXRlZCI9PWYuY2hBcnJbaF0pKSxfZSgpLG1yKCIgIixmLmRpZmZUYWJsZS5kYXRh''@;'; put 'put ''W2hdW2FdLCIgIiksX2UoKSxSZSgibmdJZiIsMT09Zi5hcnJDaGFuZ2VkW2hdW2RdJiYidXBkYXRlZCI9PWYuY2hBcnJbaF0pfX1mdW5jdGlvbiB2bXQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLG1tdCwzLDUsInRkIiw4MyksQnIoKSksMiZsKXtjb25zdCBhPU5lKCkuaW5kZXgsZD1OZSg0''@;'; put 'put ''KTtfZSgpLFJlKCJuZ0Zvck9mIixkLnJvd0tleXNbYV0pfX1mdW5jdGlvbiBfbXQobCxjKXtpZigxJmwmJihnZSgwLCJ0ZCIsNCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoMikuaW5kZXgsaD1OZSg0KTtfZSgpLG1yKCIgIixoLmRpZmZUYWJsZS5kYXRhW2Rd''@;'; put 'put ''W2FdLCIgIil9fWZ1bmN0aW9uIGJtdChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsX210LDIsMSwidGQiLDQ3KSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoKS5pbmRleCxkPU5lKDQpO19lKCksUmUoIm5nRm9yT2YiLGQucm93S2V5c1thXSl9fWZ1bmN0aW9uIHltdChsLGMpe2lmKDEmbCYmKGdl''@;'; put 'put ''KDAsInRyIiw4MiksZ3QoMSx2bXQsMiwxLCJuZy1jb250YWluZXIiLDgpKDIsYm10LDIsMSwibmctY29udGFpbmVyIiw4KSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy5pbmRleCxkPU5lKDQpO1JlKCJuZ0NsYXNzIixuUygzLEE0ZSwiYWRkZWQiPT1kLmNoQXJyW2FdLCJkZWxldGVkIj09ZC5jaEFy''@;'; put 'put ''clthXSwidXBkYXRlZCI9PWQuY2hBcnJbYV0pKSxfZSgpLFJlKCJuZ0lmIiwidXBkYXRlZCI9PT1kLmNoQXJyW2FdKSxfZSgpLFJlKCJuZ0lmIiwidXBkYXRlZCIhPT1kLmNoQXJyW2FdKX19ZnVuY3Rpb24gd210KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw5MykoMSwi''@;'; put 'put ''ZGl2Iiw5NCkoMiwiZGl2IiwzMSkoMywiZGl2IiwzMikoNCwic3BhbiIsOTUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMykuZ29Ub1N1Ym1pdExpc3QoKSl9KSxZdCg1LCJjZHMtaWNvbiIsOTYpLFBlKDYsIkJhY2sgdG8gc3VibWl0dGVkIGxpc3QgIiksbWUo''@;'; put 'put ''KSgpLGdlKDcsImRpdiIsOTcpKDgsImgzIiw5OCksUGUoOSksbWUoKSgpLGdlKDEwLCJkaXYiLDM3KSgxMSwiYSIsMzgpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMykudGFibGVGbGFnPSEwKX0pLFl0KDEyLCJjbHItaWNvbiIsMzkpLG1lKCkoKSgpLGdlKDEz''@;'; put 'put ''LCJwIiw5OSksUGUoMTQpLG1lKCkoKSxnZSgxNSwiZGl2Iiw1MCkoMTYsImRpdiIsNTEpKDE3LCJkaXYiLDczKSgxOCwic3BhbiIpLFBlKDE5LCJUYWJsZSBJZDoiKSxtZSgpLGdlKDIwLCJzdHJvbmciLDc0KSgyMSwic3BhbiIpLFBlKDIyKSxtZSgpKCkoKSxnZSgyMywiZGl2IikoMjQsInNw''@;'; put 'put ''YW4iKSxQZSgyNSwiU3VibWl0dGVkIG9uOiIpLG1lKCksZ2UoMjYsInNwYW4iLDc1KSxQZSgyNyksbWUoKSgpLGdlKDI4LCJkaXYiKSgyOSwic3BhbiIpLFBlKDMwLCJTdWJtaXQgTWVzc2FnZToiKSxtZSgpLGdlKDMxLCJzcGFuIiksUGUoMzIpLG1lKCkoKSgpLGdlKDMzLCJkaXYiLDUyKSgz''@;'; put 'put ''NCwiZGl2Iiw1MykoMzUsImRpdiIsNTQpKDM2LCJkaXYiLDU1KSgzNywiYnV0dG9uIiw1NiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMyk7cmV0dXJuIGJ0KGguZ29Ub0Jhc2UoaC5zdWJPYmouYmFzZSkpfSksUGUoMzgsIiBWaWV3IGJhc2UgdGFibGUgIiksbWUo''@;'; put 'put ''KSxnZSgzOSwiYnV0dG9uIiw1NyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMyk7cmV0dXJuIGJ0KGguZ2V0VGFibGUoaC5zdWJPYmoudGFibGVJZCkpfSksUGUoNDAsIiBWaWV3IHN0YWdlZCBkYXRhICIpLG1lKCksZ2UoNDEsImJ1dHRvbiIsNTgpLEl0KCJjbGlj''@;'; put 'put ''ayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDMpO3JldHVybiBidChoLmdvQmFjayhoLnN1Yk9iai5iYXNlKSl9KSxQZSg0MiwiIEVkaXQgYmFzZSB0YWJsZSAiKSxtZSgpKCkoKSgpLGdlKDQzLCJkaXYiLDY1KSxndCg0NCx1bXQsMywwLCJzcGFuIiw2NiksZ2UoNDUsImRpdiIsMzEp''@;'; put 'put ''KDQ2LCJkaXYiLDY3KSg0Nywic3BhbiIsNjgpLFBlKDQ4LCIgQ2hhbmdlZCBSb3dzICIpLGdlKDQ5LCJzcGFuIiw2OSksUGUoNTApLG1lKCkoKSxnZSg1MSwic3BhbiIsNzApLFBlKDUyLCIgQWRkZWQgUm93cyAiKSxnZSg1Mywic3BhbiIsNjkpLFBlKDU0KSxtZSgpKCksZ2UoNTUsInNwYW4i''@;'; put 'put ''LDcxKSxQZSg1NiwiIERlbGV0ZWQgUm93cyAiKSxnZSg1Nywic3BhbiIsNjkpLFBlKDU4KSxtZSgpKCkoKSgpKCksZ2UoNTksImRpdiIsNTMpKDYwLCJjbHItdG9nZ2xlLWNvbnRhaW5lciIsMTAwKSg2MSwiY2xyLXRvZ2dsZS13cmFwcGVyIikoNjIsImlucHV0Iiw2MyksV3IoIm5nTW9kZWxD''@;'; put 'put ''aGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMyk7cmV0dXJuIEdyKGYuZm9ybWF0dGVkVmFsdWVzLGgpfHwoZi5mb3JtYXR0ZWRWYWx1ZXM9aCksYnQoaCl9KSxJdCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5mb3JtYXR0aW5nQ2hhbmdlZCgp''@;'; put 'put ''KX0pLG1lKCksZ2UoNjMsImxhYmVsIiksUGUoNjQpLG1lKCkoKSgpKCkoKSgpLGdlKDY1LCJkaXYiLDEwMSksZ3QoNjYsZG10LDEsMCwiZGl2Iiw0MiksbWUoKSxndCg2NyxmbXQsNCwxLCJkaXYiLDEwMiksZ2UoNjgsImRpdiIsMTAzKSg2OSwidGFibGUiLDMpKDcwLCJ0aGVhZCIpKDcxLCJ0''@;'; put 'put ''ciIsNDYpLGd0KDcyLHBtdCwyLDEsInRoIiw0NyksbWUoKSgpLGdlKDczLCJ0Ym9keSIpLGd0KDc0LHltdCwzLDcsInRyIiw0OCksbWUoKSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoMyk7X2UoOSksbXIoIiAiLGEuc3ViT2JqLmJhc2UsIiAiKSxfZSg1KSxtcigiICIsYS50YWJsZURlc2Ny''@;'; put 'put ''aXB0aW9uLCIgIiksX2UoNiksUmUoInJvdXRlckxpbmsiLCIvc3RhZ2UvIithLnN1Yk9iai50YWJsZUlkKSxfZSgyKSxtcigiICIsYS5zdWJPYmoudGFibGVJZCwiIiksX2UoNSksbXIoIiAiLGEuc3ViT2JqLnN1Ym1pdHRlZCwiICIpLF9lKDUpLG1yKCIgIixhLnN1Yk9iai5zdWJtaXRSZWFz''@;'; put 'put ''b24sIiAiKSxfZSgxMiksUmUoIm5nSWYiLGEuZGlmZnNMaW1pdCksX2UoNiksbHIoYS5sZW5zLnVwZGF0ZWQpLF9lKDQpLGxyKGEubGVucy5uZXcpLF9lKDQpLGxyKGEubGVucy5kZWxldGVkKSxfZSg0KSxZcigibmdNb2RlbCIsYS5mb3JtYXR0ZWRWYWx1ZXMpLF9lKDIpLGxyKGEuZm9ybWF0''@;'; put 'put ''dGVkVmFsdWVzPyJGb3JtYXR0ZWQiOiJVbmZvcm1hdHRlZCIpLF9lKDIpLFJlKCJuZ0lmIixhLmxvYWRlZCksX2UoKSxSZSgibmdJZiIsIWEubG9hZGluZ1RhYmxlKSxfZSg1KSxSZSgibmdGb3JPZiIsYS5yb3dIZWFkZXIpLF9lKDIpLFJlKCJuZ0Zvck9mIixhLnJvd0tleXMpfX1mdW5jdGlv''@;'; put 'put ''biBDbXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDkxKSxndCgxLHdtdCw3NSwxNiwiZGl2Iiw5MiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLGEubG9hZGVkKX19ZnVuY3Rpb24gU210KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyLCJMb2Fk''@;'; put 'put ''aW5nIHN1Ym1pdHRlZCB0YWJsZSIpLG1lKCkoKSl9ZnVuY3Rpb24gTW10KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxMDUpKDEsImRpdiIsMTA2KSgyLCJzcGFuIiw3OSksUGUoMywiIExvYWRpbmcuLi4gIiksbWUoKSxndCg0LFNtdCwzLDAsImRpdiIsOCksbWUoKSgpKSwyJmwpe2NvbnN0''@;'; put 'put ''IGE9TmUoMik7X2UoNCksUmUoIm5nSWYiLCFhLmxvYWRlZCl9fWZ1bmN0aW9uIHhtdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIpLGd0KDEsQ210LDIsMSwiZGl2Iiw4OSkoMixNbXQsNSwxLCJkaXYiLDkwKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0lmIixhLmxvYWRl''@;'; put 'put ''ZCksX2UoKSxSZSgibmdJZiIsIWEubG9hZGVkKX19bGV0IEk0ZT0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuc2FzU3RvcmVTZXJ2aWNlPWEsdGhpcy5ldmVudFNlcnZpY2U9ZCx0aGlzLnJvdXRlcj1oLHRoaXMucm91dGU9Zix0aGlzLmRldGFpbHNPcGVuPSExLHRo''@;'; put 'put ''aXMucmVqZWN0T3Blbj0hMSx0aGlzLmxlbnM9e25ldzowLHVwZGF0ZWQ6MCxkZWxldGVkOjB9LHRoaXMubG9hZGVkPSExLHRoaXMubG9hZGluZ1RhYmxlPSExLHRoaXMuc3VibWl0UmVhc29uPSIiLHRoaXMuaW5zdGFuY2U9ImhvdEluc3RhbmNlIix0aGlzLmFjY2VwdExvYWRpbmc9ITEsdGhp''@;'; put 'put ''cy5yZWplY3RMb2FkaW5nPSExLHRoaXMuc3VibWl0dGVkPSExLHRoaXMudGFibGVGbGFnPSExLHRoaXMucm93S2V5cz1bXSx0aGlzLmNoQXJyPVtdLHRoaXMuc2Vjb25kT3Blbj0hMSx0aGlzLmZvcm1hdHRlZFZhbHVlcz0hMCx0aGlzLmNoYW5nZXNBcnI9W10sdGhpcy5kaWZmVGFibGU9e2Rh''@;'; put 'put ''dGE6W119LHRoaXMuZGlmZnNMaW1pdD0hMSx0aGlzLnJlY29yZHNMaW1pdD0xMDB9Z2V0IG5vQ2hhbmdlcygpe3JldHVybiAwPT09dGhpcy5sZW5zLm5ldyYmMD09PXRoaXMubGVucy51cGRhdGVkJiYwPT09dGhpcy5sZW5zLmRlbGV0ZWR9Z29Ub0Jhc2UoYSl7dGhpcy5yb3V0ZS5uYXZpZ2F0''@;'; put 'put ''ZUJ5VXJsKCIvdmlldy9kYXRhLyIrYSl9Z29Ub0FwcHJvdmFsc0xpc3QoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9yZXZpZXcvYXBwcm92ZSIpfWdldFRhYmxlKGEpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrYSl9Z29CYWNrKGEpe3RoaXMucm91dGUubmF2aWdh''@;'; put 'put ''dGVCeVVybCgiL2VkaXRvci8iK2EpfWdvVG9WaWV3ZXIoKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1zaG93RGV0YWlsc1NlbGVjdChhKXthLnByZXZlbnREZWZhdWx0KCksdGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfWdldERldGFpbHMoKXt0aGlzLmRl''@;'; put 'put ''dGFpbHNPcGVuPSEwfW9uSG90U2VsZWN0aW9uKGEpe3RoaXMuaG90U2VsZWN0aW9uPWEuc2xpY2UoMCw0KX1vbkhvdERlc2VsZWN0KCl7c2V0VGltZW91dCgoKT0+e3RoaXMuaG90U2VsZWN0aW9uPW51bGx9LDEwMCl9cmVqZWN0aW5nKCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbioo''@;'; put 'put ''KXthLnJlamVjdExvYWRpbmc9ITAsYS5zdWJtaXRSZWFzb249YS5zdWJtaXRSZWFzb24ucmVwbGFjZSgvXG4vZywiLiAiKTtsZXQgZD17U1RQX0FDVElPTjoiUkVKRUNUX1RBQkxFIixUQUJMRTphLnRhYmxlSWQsU1RQX1JFQVNPTjphLnN1Ym1pdFJlYXNvbn07eWllbGQgYS5zYXNTdG9yZVNl''@;'; put 'put ''cnZpY2UucmVqZWN0aW5nKGQsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvcmVqZWN0aW9uIikudGhlbihoPT57YS5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvcmV2aWV3L2hpc3RvcnkiKX0pLmNhdGNoKGg9PnthLmFjY2VwdExvYWRpbmc9ITEsYS5yZWplY3RMb2FkaW5nPSExfSl9KSgpfWFw''@;'; put 'put ''cHJvdmVUYWJsZSgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7YS5hY2NlcHRMb2FkaW5nPSEwO2xldCBkPXtBQ1RJT046IkFQUFJPVkVfVEFCTEUiLFRBQkxFOmEudGFibGVJZCxESUZGVElNRTphLnBhcmFtcz8uRElGRlRJTUUsTElCRFM6YS5wYXJhbXM/LkxJQkRTfTt5aWVs''@;'; put 'put ''ZCBhLnNhc1N0b3JlU2VydmljZS5hcHByb3ZlVGFibGUoZCwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKGg9PnthLnJvdXRlLm5hdmlnYXRlQnlVcmwoIi9yZXZpZXcvaGlzdG9yeSIpfSkuY2F0Y2goaD0+e2EuYWNjZXB0TG9hZGluZz0hMX0pfSkoKX1nb1Rv''@;'; put 'put ''U3VibWl0TGlzdCgpe3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL3Jldmlldy9zdWJtaXR0ZWQiKX1jYWxsQ2hhbmdlc0luZm8oYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXt5aWVsZCBkLnNhc1N0b3JlU2VydmljZS5nZXRDaGFuZ2VJbmZvKGEpLnRoZW4oaD0+e2QudGFi''@;'; put 'put ''bGVEZXRhaWxzPWguanNwYXJhbXNbMF0sZC5qc1BhcmFtcz1oLmpzcGFyYW1zWzBdO2xldCBmPVtdO2Zvcihjb25zdCB2IGluIGQuanNQYXJhbXMpZC5qc1BhcmFtcy5oYXNPd25Qcm9wZXJ0eSh2KSYmZi5wdXNoKHYpO2Qua2V5c0FycmF5PWZ9KS5jYXRjaChoPT57ZC5hY2NlcHRMb2FkaW5n''@;'; put 'put ''PSExfSkuZmluYWxseSgoKT0+e2QubG9hZGVkPSEwfSl9KSgpfWZvcm1hdHRpbmdDaGFuZ2VkKCl7dGhpcy5jYWxjRGlmZigpfWNhbGNEaWZmKCl7aWYoIXRoaXMucmVzcG9uc2UpcmV0dXJuO2xldCBhPXRoaXMucmVzcG9uc2UubmV3LGQ9dGhpcy5yZXNwb25zZS51cGRhdGVzLGg9dGhpcy5y''@;'; put 'put ''ZXNwb25zZS5kZWxldGVkLGY9dGhpcy5yZXNwb25zZS5vcmlnaW5hbHM7dGhpcy5mb3JtYXR0ZWRWYWx1ZXMmJihhPXRoaXMucmVzcG9uc2UuZm10X25ldyxkPXRoaXMucmVzcG9uc2UuZm10X3VwZGF0ZXMsaD10aGlzLnJlc3BvbnNlLmZtdF9kZWxldGVkLGY9dGhpcy5yZXNwb25zZS5mbXRf''@;'; put 'put ''b3JpZ2luYWxzKSx0aGlzLm9yaWdpbmFscz1mLHRoaXMucm93S2V5cz1bXTtmb3IobGV0IE10PTA7TXQ8ZC5sZW5ndGg7TXQrKyl7bGV0IFF0PU9iamVjdC5rZXlzKGRbTXRdKTtmb3IobGV0IGxuPTA7bG48UXQubGVuZ3RoO2xuKyspZFtNdF1bUXRbbG5dXSE9PWZbTXRdW1F0W2xuXV0mJnRo''@;'; put 'put ''aXMuY2hhbmdlc0Fyci5wdXNoKHtpbmQ6TXQsZmllbGQ6UXRbbG5dLHByb3A6ZFtNdF1bUXRbbG5dXSxvcmlnaW5hbDpmW010XVtRdFtsbl1dfSl9dGhpcy5sZW5zPXtuZXc6dGhpcy5wYXJhbXM/Lk5VTV9BRERFRHx8MCx1cGRhdGVkOnRoaXMucGFyYW1zPy5OVU1fVVBEQVRFRHx8MCxkZWxl''@;'; put 'put ''dGVkOnRoaXMucGFyYW1zPy5OVU1fREVMRVRFRHx8MH07bGV0IFE9W10sZGU9ZC5jb25jYXQoYSxoKTtmb3IobGV0IE10PTA7TXQ8dGhpcy5yZXNwb25zZS5jb2xzLmxlbmd0aDtNdCsrKVEucHVzaCh0aGlzLnJlc3BvbnNlLmNvbHNbTXRdLk5BTUUpO2xldCBwZT10aGlzLmxlbnMubmV3PnRo''@;'; put 'put ''aXMucmVjb3Jkc0xpbWl0P3RoaXMucmVjb3Jkc0xpbWl0OnRoaXMubGVucy5uZXcsQ2U9dGhpcy5sZW5zLnVwZGF0ZWQ+dGhpcy5yZWNvcmRzTGltaXQ/dGhpcy5yZWNvcmRzTGltaXQ6dGhpcy5sZW5zLnVwZGF0ZWQ7dGhpcy5kaWZmc0xpbWl0PXRoaXMubGVucy5uZXc+dGhpcy5yZWNvcmRz''@;'; put 'put ''TGltaXR8fHRoaXMubGVucy51cGRhdGVkPnRoaXMucmVjb3Jkc0xpbWl0fHx0aGlzLmxlbnMuZGVsZXRlZD50aGlzLnJlY29yZHNMaW1pdCx0aGlzLmFkZENvdW50PXBlO2xldCBZZT1bXSxldD1bXTtmb3IobGV0IE10PTA7TXQ8US5sZW5ndGg7TXQrKylldC5wdXNoKHtkYXRhOlFbTXRdLHJl''@;'; put 'put ''YWRPbmx5OiEwfSk7dGhpcy5kaWZmVGFibGUuZGF0YT1kZTtmb3IobGV0IE10PTA7TXQ8ZGUubGVuZ3RoO010Kyspe2xldCBsbj1PYmplY3Qua2V5cyhkZVtNdF0pO3RoaXMucm93S2V5cy5wdXNoKGxuKX1sZXQgZHQ9W10saHQ9W107Zm9yKGxldCBNdD0wO010PHRoaXMuZGlmZlRhYmxlLmRh''@;'; put 'put ''dGEubGVuZ3RoO010Kyspe2lmKE10PENlJiYwIT09Q2Upe2R0LnB1c2goW10pLGh0LnB1c2goW10pLFllLnB1c2goInVwZGF0ZWQiKTtsZXQgUXQ9T2JqZWN0LmtleXModGhpcy5kaWZmVGFibGUuZGF0YVtNdF0pO2ZvcihsZXQgbG49MDtsbjxRdC5sZW5ndGg7bG4rKyl7bGV0IHZuPVF0W2xu''@;'; put 'put ''XTtmW010XVt2bl0hPT1kW010XVt2bl0/KGR0W010XS5wdXNoKCEwKSxodFtNdF0ucHVzaChmW010XVt2bl0pKTooZHRbTXRdLnB1c2goITEpLGh0W010XS5wdXNoKG51bGwpKX10aGlzLmFyckNoYW5nZWQ9ZHQsdGhpcy5hcnJPZkNoYW5nZXM9aHR9TXQ+PUNlJiZNdDxDZStwZSYmWWUucHVz''@;'; put 'put ''aCgiYWRkZWQiKSxNdD5wZStDZS0xJiZZZS5wdXNoKCJkZWxldGVkIil9dGhpcy5jaEFycj1ZZSx0aGlzLnJvd0hlYWRlcj10aGlzLnJvd0tleXNbMF0sdGhpcy5kaWZmVGFibGUuZGF0YT1kZX1uZ0FmdGVyVmlld0luaXQoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2lmKGEu''@;'; put 'put ''X2RldGFpbHNTdWI9YS5zYXNTdG9yZVNlcnZpY2Uuc3VibWl0dERldGFpbC5zdWJzY3JpYmUoZnVuY3Rpb24oKXt2YXIgaD1ZKGZ1bmN0aW9uKihmKXthLnN1Yk9iaj1mLnZpZXdEYXRhLGEudGFibGVJZD1mLnZpZXdEYXRhLnRhYmxlSWQsYS5zdWJtaXR0ZWQ9Zi52aWV3RGF0YS5zdWIsYS5z''@;'; put 'put ''dWJtaXREZXRhaWxzPWYuZGF0YSxhLnN1Ym1pdEFycj1bXTtmb3IobGV0IFMgaW4gYS5zdWJtaXREZXRhaWxzKSJzdWIiIT09UyYmYS5zdWJtaXRBcnIucHVzaChTKTtsZXQgdj17QUNUSU9OOiJTSE9XX0RJRkZTIixUQUJMRTphLnRhYmxlSWQsRElGRlRJTUU6KG5ldyBEYXRlKS50b1VUQ1N0''@;'; put 'put ''cmluZygpfTthLnNhc1N0b3JlU2VydmljZS5zaG93RGlmZnModiwiU0FTQ29udHJvbFRhYmxlIiwiYXVkaXRvcnMvcG9zdGRhdGEiKS50aGVuKFM9PnthLnBhcmFtcz1TLnBhcmFtc1swXSxhLnJlc3BvbnNlPVMsYS5jYWxjRGlmZigpfSkuY2F0Y2goUz0+UykuZmluYWxseSgoKT0+e2EubG9h''@;'; put 'put ''ZGluZ1RhYmxlPSEwfSksYS5jYWxsQ2hhbmdlc0luZm8oYS50YWJsZUlkKX0pO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSx0eXBlb2YgYS5yb3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ+InUiKXJldHVybjthLnRhYmxlSWQ9YS5y''@;'; put 'put ''b3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ7bGV0IGQ9e0FDVElPTjoiU0hPV19ESUZGUyIsVEFCTEU6YS50YWJsZUlkLERJRkZUSU1FOihuZXcgRGF0ZSkudG9VVENTdHJpbmcoKX07YS5zYXNTdG9yZVNlcnZpY2Uuc2hvd0RpZmZzKGQsIlNBU0NvbnRyb2xUYWJsZSIsImF1ZGl0b3Jz''@;'; put 'put ''L3Bvc3RkYXRhIikudGhlbihoPT57YS5wYXJhbXM9aC5wYXJhbXNbMF0sYS5yZXNwb25zZT1oLGEuY2FsY0RpZmYoKX0pLmNhdGNoKGg9PnthLmFjY2VwdExvYWRpbmc9ITF9KS5maW5hbGx5KCgpPT57YS5sb2FkaW5nVGFibGU9ITAsYS5zZXRGb2N1cygpfSksYS5jYWxsQ2hhbmdlc0luZm8o''@;'; put 'put ''YS50YWJsZUlkKX0pKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXRhaWxzU3ViJiZ0aGlzLl9kZXRhaWxzU3ViLnVuc3Vic2NyaWJlKCl9c2V0Rm9jdXMoKXtzZXRUaW1lb3V0KCgpPT57bGV0IGE9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2NlcHRCdG4iKTthJiZhLmZvY3Vz''@;'; put 'put ''KCl9LDIwMCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoWmQpLEplKERsKSxKZShPYyksSmUoSnMpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1hcHByb3ZlLWRldGFpbHMiXV0saG9zdEF0''@;'; put 'put ''dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjQyLHZhcnM6MTIsY29uc3RzOltbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIl0sWzEsIm1vZGFsLXRpdGxlIl0sWzEsIm1vZGFsLWJvZHkiXSxbMSwidGFibGUiXSxbMSwibGVmdCJdLFs0LCJuZ0ZvciIsIm5n''@;'; put 'put ''Rm9yT2YiXSxbMSwibW9kYWwtZm9vdGVyIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbNCwibmdJZiJdLFsxLCJmb3JtLWJsb2NrIl0sWzEsImZvcm0tZ3JvdXAiXSxbImZvciIsImZvcm1GaWVsZHNfOCJdLFsiaWQiLCJmb3Jt''@;'; put 'put ''RmllbGRzXzgiLCJyb3dzIiwiNSIsMSwidy0xMDAiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwibmdNb2RlbE9wdGlvbnMiLCJpbm5lckhUTUwiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwzLCJjbGljayJdLFsidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwi''@;'; put 'put ''YnRuLXN1Y2Nlc3Mtb3V0bGluZSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsiY2xhc3MiLCJjYXJkIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImxlZnQgbGluay1pdCIsMywicm91dGVyTGluayIsNCwibmdJZiJdLFsiY2xhc3MiLCJsZWZ0Iiw0LCJuZ0lmIl0s''@;'; put 'put ''WzEsImxlZnQiLCJsaW5rLWl0IiwzLCJyb3V0ZXJMaW5rIl0sWyJjbHJUYWJMaW5rIiwiIl0sWzQsImNscklmQWN0aXZlIl0sWzEsIm92ZXJmbG93LWF1dG8iXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJjYXJkLWhlYWRlciBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRl''@;'; put 'put ''ciIsNCwibmdJZiJdLFsxLCJvdmVyZmxvdy1hdXRvIiwibXItMTIiXSxbImNsYXNzIiwiaC03MHZoIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsImQtZmxleCIsImZsZXgtY29s''@;'; put 'put ''dW1uIiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiY2xhc3MiLCJtdC0wIiw0LCJuZ0lmIl0sWzEsIm10LTAiXSxbMSwiY2FyZC1oZWFkZXIiLCJwLTAiXSxbMSwiY2xyLXJvdyJdLFsxLCJjbHItY29sLW1kLTQiLCJhcHByb3ZhbEJhY2siXSxbMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJt''@;'; put 'put ''LTAiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNhcmV0IiwiZGlyIiwibGVmdCIsInNpemUiLCIyMCJdLFsxLCJjbHItY29sLW1kLTQiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm10LTAiLCJmb250LXdlaWdodC0zMDAiXSxbMSwiY2xyLWNvbC1tZC00IiwiYXBwcm92''@;'; put 'put ''YWxJbmZvIl0sWzEsInRvb2x0aXAiLCJ0b29sdGlwLXNtIiwidG9vbHRpcC10b3AtbGVmdCIsMywiY2xpY2siXSxbInNoYXBlIiwiaW5mby1zdGFuZGFyZCIsInNpemUiLCIyOCJdLFsxLCJ0ZXh0LWNlbnRlciIsIm10LTEwIl0sWzEsImNhcmQtYmxvY2siLCJwLTAiXSxbImNsYXNzIiwiY2Fy''@;'; put 'put ''ZC10ZXh0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImgtMjR2aCBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbMSwidGFibGVDb250IiwibXQtMCJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXNpemUtMTgi''@;'; put 'put ''LDQsIm5nSWYiXSxbMSwiZC1mbGV4Il0sWyJjbGFzcyIsImxlZnQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJkLWZsZXgiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjYXJkLXRleHQiXSxbMSwiY2xyLXJvdyIsImZvbnQtc2l6ZS0xNSJdLFsxLCJjbHIt''@;'; put 'put ''Y29sLW1kLTUiXSxbMSwiY2xyLWNvbC1tZC03Il0sWzEsImNhcmQtYmxvY2siLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJtdC0wIl0sWzEsImNsci1yb3ciLCJjbHItZ2FwLTUiLCJjbHItZ2FwLXNtLTAi''@;'; put 'put ''XSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLCJ0ZXh0LWNlbnRlciIsIm10LTUiLCJtci01aSIsMywiY2xpY2siXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3Mtb3V0bGluZSIsInRleHQtY2VudGVyIiwibXQtNSIsIm1yLTVpIiwzLCJjbGljayJdLFsxLCJidG4iLCJi''@;'; put 'put ''dG4tc20iLCJidG4taW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtdC01IiwzLCJjbGljayJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiIsImNsci1nYXAtNSIsImNsci1mbGV4LXNtLXJvdyIsImNsci1nYXAt''@;'; put 'put ''c20tMCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImlkIiwiYWNjZXB0QnRuIiwidHlwZSIsInN1Ym1pdCIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXN1Y2Nlc3MiLCJtci01aSIsMywiY2xpY2siLCJjbHJMb2FkaW5nIiwiZGlzYWJsZWQiXSxbImlkIiwicmVqZWN0QnRuIiwxLCJidG4i''@;'; put 'put ''LCJidG4tc20iLCJidG4iLCJidG4tZGFuZ2VyIiwibXItNWkiLDMsImNsaWNrIiwiZGlzYWJsZWQiXSxbMSwibS0wIiwibWwtMjBpIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLCJjaGVja2VkIiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdlIiwibmdNb2RlbCJdLFsx''@;'; put 'put ''LCJmb3JtYXR0ZWQtdmFsdWVzLXRvZ2dsZSJdLFsxLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwiY2xyLWFsaWduLWl0ZW1zLWNlbnRlciIsImNsci1mbGV4LWNvbHVtbiJdLFsiY2xhc3MiLCJyb3dzLW5vdGljZSIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iLCJjbHIt''@;'; put 'put ''Z2FwLTUiLCJjbHItZmxleC1zbS1yb3ciLCJjbHItZ2FwLXNtLTAiXSxbMSwibGFiZWwiLCJsYWJlbC13YXJuaW5nIl0sWzEsImJhZGdlIl0sWzEsImxhYmVsIiwibGFiZWwtc3VjY2VzcyJdLFsxLCJsYWJlbCIsImxhYmVsLWRhbmdlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtc2l6ZS0x''@;'; put 'put ''OCJdLFsxLCJtdC0xNSJdLFsxLCJsaW5rLWl0IiwzLCJyb3V0ZXJMaW5rIl0sWzEsIm10LTEwIl0sWzEsInJvd3Mtbm90aWNlIl0sWyJzaGFwZSIsImV4Y2xhbWF0aW9uLXRyaWFuZ2xlIiwxLCJtYi01IiwiY29sb3Itb3JhbmdlIl0sWzEsImgtMjR2aCIsImQtZmxleCIsImZsZXgtY29sdW1u''@;'; put 'put ''IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJzcGlubmVyIl0sWyJjbGFzcyIsIm10LTEwIiw0LCJuZ0lmIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iXSxbMSwiZC1mbGV4IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsImxlZnQiLDMsIm5nQ2xhc3Mi''@;'; put 'put ''LDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJsZWZ0IiwzLCJuZ0NsYXNzIl0sWyJjbGFzcyIsInRvb2x0aXAtY29udGVudCIsNCwibmdJZiJdLFsxLCJ0b29sdGlwLWNvbnRlbnQiXSxbMSwiaC03MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwi''@;'; put 'put ''YWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZC1ibG9jayIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJmbGV4LWNv''@;'; put 'put ''bHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwiY2FyZCBtLTAiLDQsIm5nSWYiXSxbMSwiY2FyZCIsIm0tMCJdLFsxLCJjYXJkLWhlYWRlciJdLFsxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbInNoYXBlIiwiYW5nbGUiLCJkaXJlY3Rpb24iLCJsZWZ0''@;'; put 'put ''Iiwic2l6ZSIsIjIwIl0sWzEsImNsci1jb2wtbWQtNCJdLFsxLCJtdC0wIiwiZm9udC13ZWlnaHQtMzAwIiwidGV4dC1jZW50ZXIiXSxbMSwibS0wIiwidGV4dC1jZW50ZXIiLCJjb2xvci1kYXJrZXItZ3JheSJdLFsxLCJtLTAiLCJtbC0yMC1pIl0sWzEsImNhcmQtYmxvY2siLCJwLTAiLCJv''@;'; put 'put ''dmVyZmxvdy1hdXRvIiwibXItMTIiXSxbImNsYXNzIiwiaC0yNXZoIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciIsNCwibmdJZiJdLFsxLCJ0YWJsZUNvbnQiXSxbMSwiaC0yNXZoIiwiZC1mbGV4IiwiZmxleC1jb2x1bW4iLCJq''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWzEsImNhcmQtYmxvY2siXSxbMSwibG9hZGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiY2xyLW1vZGFsIiwwKSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1''@;'; put 'put ''cm4gR3IoaC5kZXRhaWxzT3Blbix2KXx8KGguZGV0YWlsc09wZW49diksdn0pLGdlKDEsImgzIiwxKSxQZSgyLCJBcHByb3ZhbCBEZXRhaWxzIiksbWUoKSxnZSgzLCJkaXYiLDIpKDQsInRhYmxlIiwzKSg1LCJ0aGVhZCIpKDYsInRyIikoNywidGgiLDQpLFBlKDgsIk5hbWUiKSxtZSgpLGdl''@;'; put 'put ''KDksInRoIiw0KSxQZSgxMCwiVmFsdWUiKSxtZSgpKCkoKSxnZSgxMSwidGJvZHkiKSxndCgxMixWZ3QsNSwzLCJ0ciIsNSksbWUoKSgpKCksZ2UoMTMsImRpdiIsNikoMTQsImJ1dHRvbiIsNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBoLmRldGFpbHNPcGVuPSExfSksUGUoMTUs''@;'; put 'put ''IiBPayAiKSxtZSgpKCkoKSxnZSgxNiwiY2xyLW1vZGFsIiwwKSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC50YWJsZUZsYWcsdil8fChoLnRhYmxlRmxhZz12KSx2fSksZ2UoMTcsImgzIiwxKSxQZSgxOCwiQWxsIERldGFpbHMiKSxtZSgpLGdlKDE5''@;'; put 'put ''LCJkaXYiLDIpLGd0KDIwLFVndCwxOSwyLCJjbHItdGFicyIsOCksbWUoKSxnZSgyMSwiZGl2Iiw2KSgyMiwiYnV0dG9uIiw3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGgudGFibGVGbGFnPSExfSksUGUoMjMsIiBPayAiKSxtZSgpKCkoKSxnZSgyNCwiY2xyLW1vZGFsIiwwKSxX''@;'; put 'put ''cigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC5yZWplY3RPcGVuLHYpfHwoaC5yZWplY3RPcGVuPXYpLHZ9KSxnZSgyNSwiaDMiLDEpLFBlKDI2LCJSZWFzb24gTWVzc2FnZSIpLG1lKCksZ2UoMjcsImRpdiIsMikoMjgsImZvcm0iKSgyOSwic2VjdGlvbiIs''@;'; put 'put ''OSkoMzAsImRpdiIsMTApKDMxLCJsYWJlbCIsMTEpLFBlKDMyLCJSZWFzb24gZm9yIHJlamVjdGluZz8iKSxtZSgpLGdlKDMzLCJ0ZXh0YXJlYSIsMTIpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC5zdWJtaXRSZWFzb24sdil8fChoLnN1Ym1pdFJlYXNvbj12''@;'; put 'put ''KSx2fSksbWUoKSgpKCkoKSgpLGdlKDM0LCJkaXYiLDYpKDM1LCJidXR0b24iLDEzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGgucmVqZWN0T3Blbj0hMX0pLFBlKDM2LCIgQ2FuY2VsICIpLG1lKCksZ2UoMzcsImJ1dHRvbiIsMTQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gaC5yZWplY3RpbmcoKX0pLFBlKDM4LCIgT0sgIiksbWUoKSgpKCksZ2UoMzksImRpdiIsMTUpLGd0KDQwLGNtdCw0LDIsImRpdiIsMTYpKDQxLHhtdCwzLDIsImRpdiIsOCksbWUoKSksMiZkJiYoWXIoImNsck1vZGFsT3BlbiIsaC5kZXRhaWxzT3BlbiksX2UoMTIpLFJlKCJuZ0Zvck9m''@;'; put 'put ''IixoLmtleXNBcnJheSksX2UoNCksWXIoImNsck1vZGFsT3BlbiIsaC50YWJsZUZsYWcpLF9lKDQpLFJlKCJuZ0lmIixoLnRhYmxlRmxhZyksX2UoNCksWXIoImNsck1vZGFsT3BlbiIsaC5yZWplY3RPcGVuKSxfZSg5KSxZcigibmdNb2RlbCIsaC5zdWJtaXRSZWFzb24pLFJlKCJuZ01vZGVs''@;'; put 'put ''T3B0aW9ucyIsbGEoMTEsRmd0KSkoImlubmVySFRNTCIsaC5zdWJtaXRSZWFzb24sWnApLF9lKDQpLFJlKCJjbHJMb2FkaW5nIixoLnJlamVjdExvYWRpbmcpLF9lKDMpLFJlKCJuZ0lmIiwhaC5zdWJtaXR0ZWQpLF9lKCksUmUoIm5nSWYiLGguc3VibWl0dGVkKSl9LGRlcGVuZGVuY2llczpb''@;'; put 'put ''SmMsVnMsJGksdTgsdWwsUTAsX2EsbDgsdWEsTTMsazAsWWEsR3MsUGMsaXUsbDAsSV8sRGgsJHMsYTEsUF8sczEsRW0sa20sUDgsVG0seG0sTDhdLHN0eWxlczpbJy5sb2FkZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2hlaWdodDo3''@;'; put 'put ''NXZoO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1vZGFsTGFyZ2VbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjUwcmVtIWltcG9ydGFudH0uYWRkZWRSb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgcmdiYSg5LDc3LDExNywuMik7Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czo1cHh9LmRlbGV0ZWRSb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgcmdiYSg3MCw3MSw3MCwuMik7Ym9yZGVyLXJhZGl1czo1cHh9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSB0YWJsZSAudXBkYXRlZFJvd3tiYWNrZ3JvdW5kOiM5Mzk3MWV9ICBib2R5''@;'; put 'put ''W2Nkcy10aGVtZT1kYXJrXSB0YWJsZSAuYWRkZWRSb3d7YmFja2dyb3VuZDojNTY5OTVmfSAgYm9keVtjZHMtdGhlbWU9ZGFya10gdGFibGUgLmRlbGV0ZWRSb3d7YmFja2dyb3VuZDojOGE1YTVhfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIHRhYmxlIC51cGRhdGVkUm93e2JhY2tncm91bmQ6''@;'; put 'put ''I2ZhZmRhOH0gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSB0YWJsZSAuYWRkZWRSb3d7YmFja2dyb3VuZDojOTJkMDlhfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIHRhYmxlIC5kZWxldGVkUm93e2JhY2tncm91bmQ6I2U2YjNiM30udXBkYXRlZFJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVy''@;'; put 'put ''OjFweCBzb2xpZCByZ2JhKDksMTE3LDksLjIpO2JvcmRlci1yYWRpdXM6NXB4fS5jaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwMDAwMWE7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEwNCwxMDAsMCwuNCk7Ym9yZGVyLXJhZGl1czo1cHh9LmNoW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XTpob3ZlcntiYWNrZ3JvdW5kOiNmYzg3Nzg2Nn0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHRbX25nY29udGVudC0lQ09NUCVdID4gLnRv''@;'; put 'put ''b2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouNTQxNjdyZW07Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtiYWNrZ3Jv''@;'; put 'put ''dW5kOiMzMTQzNTE7Ym9yZGVyLXJhZGl1czouMTI1cmVtO2NvbG9yOiNmMGYxZWM7bGluZS1oZWlnaHQ6Ljc1cmVtO21hcmdpbjowO3BhZGRpbmc6LjM3NXJlbSAuNXJlbTt3aWR0aDoyMzVweDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIGF1dG8gMTAwJSAxMnB4O2JvcmRlci1ib3R0''@;'; put 'put ''b20tbGVmdC1yYWRpdXM6MDttYXJnaW4tYm90dG9tOi42NjY2N3JlbX0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmUsIC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTotLjM3NXJl''@;'; put 'put ''bTtsZWZ0OjA7dG9wOmF1dG87cmlnaHQ6YXV0bztjb250ZW50OiIiO2JvcmRlci1sZWZ0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci10b3A6LjIwODMzcmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOi4yMDgz''@;'; put 'put ''M3JlbSBzb2xpZCB0cmFuc3BhcmVudH0udGFibGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowcHggc29saWR9LnRvZ2dsZS1zd2l0Y2hbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbdHlwZT1jaGVja2JveF1bX25nY29udGVudC0lQ09NUCVdOmNoZWNrZWQgKyBsYWJlbFtfbmdjb250''@;'; put 'put ''ZW50LSVDT01QJV06YmVmb3Jle2JvcmRlci1jb2xvcjojMzE0MzUxO2JhY2tncm91bmQtY29sb3I6IzMxNDM1MSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjouMTVzIGVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0udGFibGVDb250W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvO21hcmdpbjoxNXB4IDEwcHggMTBweH0udGFibGVDb250W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LmFwcHJvdmFsSW5mb1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxh''@;'; put 'put ''eTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uYXBwcm92YWxCYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5hcHByb3ZhbEluZm9bX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MTVweH0uYXBwcm92YWxCYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tYm90dG9tOjE1cHh9LmNhcmRbX25nY29udGVu''@;'; put 'put ''dC0lQ09NUCVde21hcmdpbi10b3A6MHJlbSFpbXBvcnRhbnQ7bWluLWhlaWdodDpjYWxjKDEwMHZoICsgLTBweCkhaW1wb3J0YW50fS50YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0ZC5sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoLmxl''@;'; put 'put ''ZnRbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246bGVmdDt3aWR0aDoxNTBweCFpbXBvcnRhbnQ7ZmxleDowfX0udGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGQubGVmdFtfbmdjb250ZW50LSVDT01QJV0sIC50YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aC5sZWZ0W19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmxlZnQ7ZmxleDoxO3dpZHRoOjMwMHB4IWltcG9ydGFudH0udG9vbGxbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6I2U2YjNiMztjb2xvcjojMzE0MzUxO3RvcDowO2hlaWdodDozNnB4O3dpZHRoOjEwMCU7''@;'; put 'put ''bGVmdDowO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0jYWNjZXB0QnRuW19uZ2NvbnRlbnQtJUNPTVAlXSwgI3JlamVjdEJ0bltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTc1cHh9LmZvcm1hdHRlZC12YWx1ZXMtdG9nZ2xlW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXttaW4td2lkdGg6NzVweH1jbHItbW9kYWxbX25nY29udGVudC0lQ09NUCVdICAgICAubW9kYWwtYm9keS13cmFwcGVye292ZXJmbG93OmF1dG99LnJvd3Mtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdp''@;'; put 'put ''bi1yaWdodDoxMHB4O2NvbG9yOiM2YTZhNmE7Zm9udC1zaXplOjE1cHh9LnJvd3Mtbm90aWNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MH0nXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgRW10PWw9Pih7bm9Cb3JkZXI6bH0pLFRtdD0o''@;'; put 'put ''KT0+WzMsNSwxMCwxNV07ZnVuY3Rpb24ga210KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwxMCkoMSwiZGl2IiwxMSksWXQoMiwiY2xyLWljb24iLDEyKSxnZSgzLCJoMyIsMTMpLFBlKDQsIlRoZXJlIGFyZSBubyBhcHByb3ZhbHMgcmVtYWluaW5nIiksbWUoKSgpKCkpfWZ1bmN0aW9uIEFtdChs''@;'; put 'put ''LGMpezEmbCYmKGdlKDAsImgzIiwxNCksUGUoMSwiIFJFVklFVyAiKSxtZSgpKX1mdW5jdGlvbiBEbXQobCxjKXtpZigxJmwmJihnZSgwLCJwIiwxNSksUGUoMSwiIFlvdSBoYXZlICIpLGdlKDIsInNwYW4iKSxQZSgzKSxtZSgpLFBlKDQsImFwcHJvdmFscyByZW1haW5pbmcgIiksbWUoKSks''@;'; put 'put ''MiZsKXtjb25zdCBhPU5lKCk7X2UoMyksbXIoIiIsYS5yZW1haW5lZCwiICIpfX1mdW5jdGlvbiBJbXQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiwxOCksUGUoMSwiIExvYWRpbmcuLi4gIiksbWUoKSl9ZnVuY3Rpb24gUm10KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyLCJM''@;'; put 'put ''b2FkaW5nIGFwcHJvdmFscyBsaXN0IiksbWUoKSgpKX1mdW5jdGlvbiBMbXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDE2KSxndCgxLEltdCwyLDAsInNwYW4iLDE3KSgyLFJtdCwzLDAsImRpdiIsOSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEubG9hZGVk''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiBPbXQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwzNil9ZnVuY3Rpb24gUG10KGwsYyl7MSZsJiZZdCgwLCJjbHItc3Bpbm5lciIsMzcpLDImbCYmUmUoImNsclNtYWxsIiwhMCl9ZnVuY3Rpb24gRm10KGwsYyl7aWYoMSZs''@;'; put 'put ''KXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWRnLXJvdyIpKDEsImNsci1kZy1jZWxsIiksUGUoMiksbWUoKSxnZSgzLCJjbHItZGctY2VsbCIpLFBlKDQpLG1lKCksZ2UoNSwiY2xyLWRnLWNlbGwiKSxQZSg2KSxtZSgpLGdlKDcsImNsci1kZy1jZWxsIiksUGUoOCksbWUoKSxnZSg5LCJjbHIt''@;'; put 'put ''ZGctY2VsbCIpKDEwLCJkaXYiLDI0KSgxMSwiYSIsMjUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLmluZGV4O3JldHVybiBidChOZSgyKS5nZXRDbGlja2VkKGgpKX0pLFl0KDEyLCJjbHItaWNvbiIsMjYpLGdlKDEzLCJzcGFuIiwyNyksUGUoMTQsIkdvIHRvIHJldmll''@;'; put 'put ''dyBwYWdlIHNjcmVlbiIpLG1lKCkoKSxnZSgxNSwiYSIsMjgpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLGY9aC4kaW1wbGljaXQsdj1oLmluZGV4LFM9TmUoMik7cmV0dXJuIGJ0KGYucmVqZWN0TG9hZGluZz8iIjpTLnJlamVjdGluZyh2KSl9KSxndCgxNixPbXQsMSww''@;'; put 'put ''LCJjbHItaWNvbiIsMjkpKDE3LFBtdCwxLDEsImNsci1zcGlubmVyIiwzMCksZ2UoMTgsInNwYW4iLDI3KSxQZSgxOSwiUmVqZWN0IiksbWUoKSgpLGdlKDIwLCJhIiwzMSksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuJGltcGxpY2l0O3JldHVybiBidChOZSgyKS5nZXRU''@;'; put 'put ''YWJsZShoLnRhYmxlSWQpKX0pLFl0KDIxLCJjbHItaWNvbiIsMzIpLGdlKDIyLCJzcGFuIiwyNyksUGUoMjMsIkdvIHRvIHN0YWdlZCBkYXRhIHNjcmVlbiIpLG1lKCkoKSgpKCksZ2UoMjQsImNsci1kZy1jZWxsIiwzMykoMjUsImJ1dHRvbiIsMzQpLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7''@;'; put 'put ''Y29uc3QgZj1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIE5lKDIpLmRvd25sb2FkKGYudGFibGVJZCksYnQoaC5zdG9wUHJvcGFnYXRpb24oKSl9KSxZdCgyNiwiY2xyLWljb24iLDM1KSxtZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoMiksbHIoYS5zdWJtaXR0ZXIpLF9l''@;'; put 'put ''KDIpLGxyKGEuYmFzZVRhYmxlKSxfZSgyKSxscihhLnN1Ym1pdHRlZCksX2UoMiksbHIoYS5zdWJtaXRSZWFzb24pLF9lKDgpLFJlKCJuZ0lmIiwhYS5yZWplY3RMb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIixhLnJlamVjdExvYWRpbmcpLF9lKDgpLFJlKCJpZCIsYS50YWJsZUlkKX19ZnVuY3Rp''@;'; put 'put ''b24gTm10KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiY2xyLWRhdGFncmlkIiwxOSkoMiwiY2xyLWRnLWNvbHVtbiIsMjApLFBlKDMsIlNVQk1JVFRFUiIpLG1lKCksZ2UoNCwiY2xyLWRnLWNvbHVtbiIsMjApLFBlKDUsIkJBU0UgVEFCTEUiKSxtZSgpLGdlKDYsImNsci1kZy1jb2x1''@;'; put 'put ''bW4iLDIwKSxQZSg3LCJTVUJNSVRURUQiKSxtZSgpLGdlKDgsImNsci1kZy1jb2x1bW4iLDIwKSxQZSg5LCJTVUJNSVQgUkVBU09OIiksbWUoKSxnZSgxMCwiY2xyLWRnLWNvbHVtbiIpLFBlKDExLCJBQ1RJT04iKSxtZSgpLGdlKDEyLCJjbHItZGctY29sdW1uIiksUGUoMTMsIkRPV05MT0FE''@;'; put 'put ''IiksbWUoKSxndCgxNCxGbXQsMjcsNywiY2xyLWRnLXJvdyIsMjEpLGdlKDE1LCJjbHItZGctZm9vdGVyIikoMTYsImNsci1kZy1wYWdpbmF0aW9uIiwyMiwwKSgxOCwiY2xyLWRnLXBhZ2Utc2l6ZSIsMjMpLFBlKDE5LCJJdGVtcyBwZXIgcGFnZSIpLG1lKCksUGUoMjApLG1lKCkoKSgpKCkp''@;'; put 'put ''LDImbCl7Y29uc3QgYT1HaSgxNyksZD1OZSgpO19lKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVyIiksX2UoMiksUmUoImNsckRnRmllbGQiLCJiYXNlVGFibGUiKSxfZSgyKSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1pdHRlZCIpLF9lKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3VibWl0UmVh''@;'; put 'put ''c29uIiksX2UoNiksUmUoImNsckRnSXRlbXNPZiIsZC5hcHByb3ZlTGlzdCksX2UoMiksUmUoImNsckRnUGFnZVNpemUiLDEwKSxfZSgyKSxSZSgiY2xyUGFnZVNpemVPcHRpb25zIixsYSgxMCxUbXQpKSxfZSgyKSxIMigiICIsYS5maXJzdEl0ZW0rMSwiIC0gIixhLmxhc3RJdGVtKzEsIiBv''@;'; put 'put ''ZiAiLGEudG90YWxJdGVtcywiIGFwcHJvdmFscyAiKX19bGV0IEhtdD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdil7dGhpcy5zYXNTdG9yZVNlcnZpY2U9YSx0aGlzLmV2ZW50U2VydmljZT1kLHRoaXMucm91dGU9aCx0aGlzLnNhc1NlcnZpY2U9Zix0aGlzLmNkcj12LHRo''@;'; put 'put ''aXMubG9hZGVkPSExLHRoaXMuaXRlbXNOdW09MTB9Z2V0VGFibGUoYSl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIithKX1nZXRDbGlja2VkKGEpe3ZvaWQgMCE9PXRoaXMuYXBwcm92ZUxpc3QmJih0aGlzLnRhYmxlSWQ9dGhpcy5hcHByb3ZlTGlzdFthXS50YWJsZUlkLHRo''@;'; put 'put ''aXMucm91dGUubmF2aWdhdGVCeVVybCgicmV2aWV3L2FwcHJvdmVEZXQvIit0aGlzLmFwcHJvdmVMaXN0W2FdLnRhYmxlSWQpKX1yZWplY3RpbmcoYSl7dmFyIGQ9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXt2b2lkIDAhPT1kLmFwcHJvdmVMaXN0JiYoZC50YWJsZUlkPWQuYXBwcm92ZUxp''@;'; put 'put ''c3RbYV0udGFibGVJZCk7bGV0IGg9e1NUUF9BQ1RJT046IlJFSkVDVF9UQUJMRSIsVEFCTEU6ZC50YWJsZUlkLFNUUF9SRUFTT046InF1aWNrIHJlamVjdGlvbiJ9O3RyeXsoZC5hcHByb3ZlTGlzdHx8W10pW2FdLnJlamVjdExvYWRpbmc9ITAsKHlpZWxkIGQuc2FzU3RvcmVTZXJ2aWNlLnJl''@;'; put 'put ''amVjdGluZyhoLCJCcm93c2VyUGFyYW1zIiwiYXBwcm92ZXJzL3JlamVjdGlvbiIpKS5mcm9tc2FzWzBdLlJFU1BPTlNFLmluY2x1ZGVzKCJTVUNDRVNTIikmJigoZC5hcHByb3ZlTGlzdHx8W10pW2FdLnJlamVjdExvYWRpbmc9ITEsZC5hcHByb3ZlTGlzdD8uc3BsaWNlKGEsMSksZC5yZW1h''@;'; put 'put ''aW5lZC0tLGQuY2RyLmRldGVjdENoYW5nZXMoKSl9Y2F0Y2goZil7ZC5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJhcHByb3ZlcnMvcmVqZWN0aW9uIixmKX19KSgpfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXthLmZldGNoQXBwcm92YWxzKCl9''@;'; put 'put ''KSgpfWZldGNoQXBwcm92YWxzKCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXthLml0ZW1zTnVtPTEwO2xldCBkPXtTVFBfQUNUSU9OOiJPUEVOX0FQUFJPVkFMUyJ9O3RyeXtsZXQgaD15aWVsZCBhLnNhc1N0b3JlU2VydmljZS5nZXRBcHByb3ZhbHMoZCwiQnJvd3NlclBhcmFt''@;'; put 'put ''cyIsImFwcHJvdmVycy9nZXRhcHByb3ZhbHMiKTthLnJlbWFpbmVkPWguZnJvbXNhcy5sZW5ndGg7bGV0IGY9aC5mcm9tc2FzLm1hcChmdW5jdGlvbih2KXtyZXR1cm57dGFibGVJZDp2LlRBQkxFX0lELHN1Ym1pdHRlcjp2LlNVQk1JVFRFRF9CWV9OTSxzdWJtaXR0ZWQ6di5TVUJNSVRURURf''@;'; put 'put ''T05fRFRUTSxiYXNlVGFibGU6di5CQVNFX1RBQkxFLHN1Ym1pdFJlYXNvbjp2LlNVQk1JVFRFRF9SRUFTT05fVFhUfX0pO2EuYXBwcm92ZUxpc3Q9ZixhLmxvYWRlZD0hMH1jYXRjaChoKXthLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRhcHByb3ZhbHMi''@;'; put 'put ''LGgpfX0pKCl9ZG93bmxvYWQoYSl7bGV0IGQ9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksaD1kLnNlcnZlclVybCxmPWQuYXBwTG9jLHY9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihoK3YrIi8/X3Byb2dyYW09IitmKyIvc2VydmljZXMv''@;'; put 'put ''YXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrYSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoWmQpLEplKERsKSxKZShKcyksSmUodmEpLEplKGNhKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpb''@;'; put 'put ''WyJhcHAtYXBwcm92ZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6OSx2YXJzOjgsY29uc3RzOltbInBhZ2luYXRpb24iLCIiXSxbMSwiY29udGVudC1hcmVhIl0sWzEsImNhcmQiXSxbImNsYXNzIiwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQs''@;'; put 'put ''Im5nSWYiXSxbMSwiY2FyZC1oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwiY2VudGVyIGNsci1jb2wtbWQtMTIgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgZm9udC13ZWlnaHQtNzAwIGNvbG9yLWRhcmstZ3JheSIsNCwibmdJZiJdLFsiY2xhc3Mi''@;'; put 'put ''LCJhcHByb3ZhbHMtbGlzdC13cmFwcGVyIiw0LCJuZ0lmIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLWNvbC1tZC0xMiJdLFs0LCJuZ0lmIl0sWzEsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbMSwiY2FyZC1ibG9jayIsIm5vYXBwcm92YWxzLWluZm8td3JhcHBlciJd''@;'; put 'put ''LFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJkIiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWzEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSJdLFsxLCJjZW50ZXIiLCJjbHItY29sLW1kLTEyIiwidGV4dC1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJmb250''@;'; put 'put ''LXdlaWdodC03MDAiLCJjb2xvci1kYXJrLWdyYXkiXSxbMSwiYXBwcm92YWxzLWxpc3Qtd3JhcHBlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXIiXSxbMSwiZGF0YWdyaWQtY29tcGFjdCIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdGaWVs''@;'; put 'put ''ZCJdLFs0LCJjbHJEZ0l0ZW1zIiwiY2xyRGdJdGVtc09mIl0sWzMsImNsckRnUGFnZVNpemUiXSxbMywiY2xyUGFnZVNpemVPcHRpb25zIl0sWyJyb2xlIiwidG9vbHRpcCIsMSwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWFyb3VuZCJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0''@;'; put 'put ''b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJjb2xvci1ncmVlbiIsMywiY2xpY2siXSxbInNoYXBlIiwiY2hlY2siLCJzaXplIiwiMjQiXSxbMSwidG9vbHRpcC1jb250ZW50Il0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlw''@;'; put 'put ''LW1kIiwidG9vbHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLXJlZCIsMywiY2xpY2siXSxbInNoYXBlIiwiYmFuIiwic2l6ZSIsIjIyIiw0LCJuZ0lmIl0sWzMsImNsclNtYWxsIiw0LCJuZ0lmIl0sWzEsImNvbHVtbi1jZW50ZXIiLCJsaW5rcyIsInRvb2x0aXAiLCJ0b29sdGlwLW1kIiwidG9v''@;'; put 'put ''bHRpcC1ib3R0b20tbGVmdCIsImNvbG9yLWJsdWUiLDMsImNsaWNrIl0sWyJzaGFwZSIsImNvZGUiLCJzaXplIiwiMjgiXSxbMSwicC0wIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiY2xpY2siLCJpZCJdLFsic2hhcGUiLCJk''@;'; put 'put ''b3dubG9hZCJdLFsic2hhcGUiLCJiYW4iLCJzaXplIiwiMjIiXSxbMywiY2xyU21hbGwiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJkaXYiLDEpKDEsImRpdiIsMiksZ3QoMixrbXQsNSwwLCJkaXYiLDMpLGdlKDMsImRpdiIsNCksZ3QoNCxBbXQsMiwwLCJoMyIsNSko''@;'; put 'put ''NSxEbXQsNSwxLCJwIiw2KSxtZSgpLGd0KDYsTG10LDMsMiwiZGl2Iiw3KSxnZSg3LCJkaXYiLDgpLGd0KDgsTm10LDIxLDExLCJkaXYiLDkpLG1lKCkoKSgpKSwyJmQmJihfZSgyKSxSZSgibmdJZiIsMD09PWgucmVtYWluZWQpLF9lKCksUmUoIm5nQ2xhc3MiLGgzKDYsRW10LCFoLmxvYWRl''@;'; put 'put ''ZCkpLF9lKCksUmUoIm5nSWYiLGgubG9hZGVkJiYwIT09aC5yZW1haW5lZCksX2UoKSxSZSgibmdJZiIsaC5sb2FkZWQmJjAhPT1oLnJlbWFpbmVkKSxfZSgpLFJlKCJuZ0lmIiwhaC5sb2FkZWQpLF9lKDIpLFJlKCJuZ0lmIixoLmFwcHJvdmVMaXN0JiYwIT09aC5yZW1haW5lZCkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W0pjLCRpLGs4LF80LFQ4LFJSLEdfLE9NLExSLENtLFNtLEE4LFhfLE1tLE04LHdtLHg4LFlhLHhkXSxzdHlsZXM6WyIuY29sdW1uLWNlbnRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu''@;'; put 'put ''dGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uZGF0YWdyaWRbX25nY29udGVudC0lQ09NUCVdICAgLmRhdGFncmlkLWNvbHVtbltfbmdjb250ZW50LSVDT01QJV0gICAuZGF0YWdyaWQtY29sdW1uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fS5saW5rc1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyfS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzE0MzUxIWltcG9ydGFudH0udG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXSA+IC50b29sdGlwLWNvbnRlbnRbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdOmJlZm9yZSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLXJpZ2h0Oi4yNXJlbSBzb2xpZCAjMzE0MzUxO2JvcmRlci1ib3R0b206LjIwODMzcmVt''@;'; put 'put ''IHNvbGlkICMzMTQzNTF9Lm5vQm9yZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmFwcHJvdmFscy1saXN0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MHZoO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9Lm5vYXBwcm92YWxzLWluZm8td3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcjtoZWlnaHQ6Y2FsYygxMDB2aCAtIDIwMHB4KX0iXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgVm10PWw9Pih7bm9Cb3JkZXI6bH0pLEJtdD0oKT0+WzMsNSwxMCwxNV07ZnVuY3Rpb24gam10KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwxMykoMSwiZGl2IiwxNCksWXQoMiwi''@;'; put 'put ''Y2xyLWljb24iLDE1KSxnZSgzLCJoMyIsMTYpLFBlKDQsIiBZb3UgaGF2ZSBub3Qgc3VibWl0dGVkIGFueSB0YWJsZXMgIiksbWUoKSgpKCkpfWZ1bmN0aW9uIHptdChsLGMpezEmbCYmKGdlKDAsImgzIiwxNyksUGUoMSwiIFNVQk1JVCBRVUVVRSAiKSxtZSgpKX1mdW5jdGlvbiBVbXQobCxj''@;'; put 'put ''KXtpZigxJmwmJihnZSgwLCJwIiwxOCksUGUoMSwiIFlvdSBoYXZlICIpLGdlKDIsInNwYW4iKSxQZSgzKSxtZSgpLFBlKDQsInN1Ym1pc3Npb25zIHdhaXRpbmcgdG8gYmUgYXBwcm92ZWQgIiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKDMpLG1yKCIiLGEucmVtYWluZWQsIiAiKX19''@;'; put 'put ''ZnVuY3Rpb24gWm10KGwsYyl7MSZsJiYoZ2UoMCwic3BhbiIsMjEpLFBlKDEsIiBMb2FkaW5nLi4uICIpLG1lKCkpfWZ1bmN0aW9uIFltdChsLGMpezEmbCYmKGdlKDAsImRpdiIpKDEsImgzIiksUGUoMiwiTG9hZGluZyBzdWJtaXR0ZWQgbGlzdCIpLG1lKCkoKSl9ZnVuY3Rpb24gV210KGws''@;'; put 'put ''Yyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxOSksZ3QoMSxabXQsMiwwLCJzcGFuIiwyMCkoMixZbXQsMywwLCJkaXYiLDMpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpLF9lKCksUmUoIm5nSWYiLCFhLmxvYWRlZCl9fWZ1bmN0aW9uIEdtdChsLGMp''@;'; put 'put ''e2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1kZy1yb3ciLDI4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKDUpLmdvVG9EZXRhaWxzKGgudGFibGVJZCkpfSksZ2UoMSwiY2xyLWRnLWNlbGwiKSxQZSgyKSxtZSgpLGdl''@;'; put 'put ''KDMsImNsci1kZy1jZWxsIiksUGUoNCksbWUoKSxnZSg1LCJjbHItZGctY2VsbCIpLFBlKDYpLG1lKCksZ2UoNywiY2xyLWRnLWNlbGwiKSg4LCJkaXYiLDI5KSg5LCJhIiwzMCksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuJGltcGxpY2l0O3JldHVybiBidChOZSg1KS5n''@;'; put 'put ''b1RvU3RhZ2UoaC50YWJsZUlkKSl9KSxZdCgxMCwiY2xyLWljb24iLDMxKSxnZSgxMSwic3BhbiIsMzIpLFBlKDEyLCJHbyB0byBzdGFnZWQgZGF0YSBzY3JlZW4iKSxtZSgpKCkoKSgpLGdlKDEzLCJjbHItZGctY2VsbCIsMzMpKDE0LCJidXR0b24iLDM0KSxJdCgiY2xpY2siLGZ1bmN0aW9u''@;'; put 'put ''KGgpe2NvbnN0IGY9X3QoYSkuJGltcGxpY2l0O3JldHVybiBOZSg1KS5kb3dubG9hZChmLnRhYmxlSWQpLGJ0KGguc3RvcFByb3BhZ2F0aW9uKCkpfSksWXQoMTUsImNsci1pY29uIiwzNSksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKDIpLGxyKGEuYmFzZSksX2Uo''@;'; put 'put ''MiksbHIoYS5zdWJtaXR0ZWQpLF9lKDIpLGxyKGEuc3VibWl0UmVhc29uKX19ZnVuY3Rpb24gJG10KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiY2xyLWRhdGFncmlkIiwyMykoMiwiY2xyLWRnLWNvbHVtbiIpLFBlKDMsIkJBU0UgVEFCTEUiKSxtZSgpLGdlKDQsImNsci1kZy1jb2x1''@;'; put 'put ''bW4iLDI0KSxQZSg1LCJTVUJNSVRURUQiKSxtZSgpLGdlKDYsImNsci1kZy1jb2x1bW4iLDI0KSxQZSg3LCJTVUJNSVQgUkVBU09OIiksbWUoKSxnZSg4LCJjbHItZGctY29sdW1uIiwxMyksUGUoOSwiQUNUSU9OIiksbWUoKSxnZSgxMCwiY2xyLWRnLWNvbHVtbiIsMTMpLFBlKDExLCJET1dO''@;'; put 'put ''TE9BRCIpLG1lKCksZ3QoMTIsR210LDE2LDMsImNsci1kZy1yb3ciLDI1KSxnZSgxMywiY2xyLWRnLWZvb3RlciIpKDE0LCJjbHItZGctcGFnaW5hdGlvbiIsMjYsMCkoMTYsImNsci1kZy1wYWdlLXNpemUiLDI3KSxQZSgxNywiSXRlbXMgcGVyIHBhZ2UiKSxtZSgpLFBlKDE4KSxtZSgpKCko''@;'; put 'put ''KSgpKSwyJmwpe2NvbnN0IGE9R2koMTUpLGQ9TmUoNCk7X2UoNCksUmUoImNsckRnRmllbGQiLCJzdWJtaXR0ZWQiKSxfZSgyKSxSZSgiY2xyRGdGaWVsZCIsInN1Ym1pdFJlYXNvbiIpLF9lKDYpLFJlKCJjbHJEZ0l0ZW1zT2YiLGQuc3VibWl0dGVyTGlzdCksX2UoMiksUmUoImNsckRnUGFn''@;'; put 'put ''ZVNpemUiLDEwKSxfZSgyKSxSZSgiY2xyUGFnZVNpemVPcHRpb25zIixsYSg4LEJtdCkpLF9lKDIpLEgyKCIgIixhLmZpcnN0SXRlbSsxLCIgLSAiLGEubGFzdEl0ZW0rMSwiIG9mICIsYS50b3RhbEl0ZW1zLCIgc3VibWlzc2lvbnMgIil9fWZ1bmN0aW9uIHFtdChsLGMpe2lmKDEmbCYmKGdl''@;'; put 'put ''KDAsImRpdiIsMjIpLGd0KDEsJG10LDE5LDksImRpdiIsMyksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoIm5nSWYiLGEuc3VibWl0dGVyTGlzdCYmMCE9PWEucmVtYWluZWQpfX1mdW5jdGlvbiBLbXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDYpLGd0KDEsam10LDUsMCwi''@;'; put 'put ''ZGl2Iiw3KSxnZSgyLCJkaXYiLDgpLGd0KDMsem10LDIsMCwiaDMiLDkpKDQsVW10LDUsMSwicCIsMTApLG1lKCksZ3QoNSxXbXQsMywyLCJkaXYiLDExKSg2LHFtdCwyLDEsImRpdiIsMTIpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgpLFJlKCJuZ0lmIiwwPT09YS5yZW1haW5lZCYm''@;'; put 'put ''YS5sb2FkZWQpLF9lKCksUmUoIm5nQ2xhc3MiLGgzKDYsVm10LCFhLmxvYWRlZCkpLF9lKCksUmUoIm5nSWYiLDAhPT1hLnJlbWFpbmVkKSxfZSgpLFJlKCJuZ0lmIixhLmxvYWRlZCYmMCE9PWEucmVtYWluZWQpLF9lKCksUmUoIm5nSWYiLCFhLmxvYWRlZCksX2UoKSxSZSgibmdJZiIsYS5s''@;'; put 'put ''b2FkZWQpfX1mdW5jdGlvbiBYbXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDQpLGd0KDEsS210LDcsOCwiZGl2Iiw1KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0lmIiwhYS5zdWJSZWFkeSl9fWZ1bmN0aW9uIEptdChsLGMpezEmbCYmKGdlKDAsImRpdiIpLFl0KDEs''@;'; put 'put ''ImFwcC1hcHByb3ZlLWRldGFpbHMiKSxtZSgpKX1sZXQgUjRlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2KXt0aGlzLnNhc1N0b3JlU2VydmljZT1hLHRoaXMuZXZlbnRTZXJ2aWNlPWQsdGhpcy5yb3V0ZXI9aCx0aGlzLnJvdXRlPWYsdGhpcy5zYXNTZXJ2aWNlPXYsdGhp''@;'; put 'put ''cy5yZW1haW5lZD0wLHRoaXMubG9hZGVkPSExLHRoaXMuc3ViUmVhZHk9ITEsdGhpcy5kZXRhaWxzT3Blbj0hMX1nb1RvU3RhZ2UoYSl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3N0YWdlLyIrYSl9Z29Ub0RldGFpbHMoYSl7dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3Jldmll''@;'; put 'put ''dy9zdWJtaXR0ZWQvIithKX1nZXREZXRhaWxzKGEsZCl7dGhpcy5zdWJSZWFkeT0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2VuZERldGFpbHMoYSxkLHRoaXMuc3VibWl0RGF0YSl9LDApfW5nT25Jbml0KCl7dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbioo''@;'; put 'put ''KXtjb25zdCBkPWEucm91dGUuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ7YS5pdGVtc051bT0xMDt0cnl7bGV0IGg9eWllbGQgYS5zYXNTdG9yZVNlcnZpY2UuZ2V0U3VibWl0dHMoKTtpZihhLnJlbWFpbmVkPWguZnJvbXNhcy5sZW5ndGgsYS5yZW1haW5lZD4wKXthLnN1Ym1pdHRlcj1oLmZy''@;'; put 'put ''b21zYXNbMF0uU1VCTUlUVEVEX0JZX05NO2xldCBmPWguZnJvbXNhcy5tYXAoZnVuY3Rpb24odil7cmV0dXJue3RhYmxlSWQ6di5UQUJMRV9JRCxiYXNlOnYuQkFTRV9UQUJMRSxzdWJtaXR0ZWQ6di5TVUJNSVRURURfT05fRFRUTSxzdWJtaXR0ZXI6di5TVUJNSVRURURfQllfTk0sc3VibWl0''@;'; put 'put ''UmVhc29uOnYuU1VCTUlUVEVEX1JFQVNPTl9UWFR9fSk7aWYoYS5zdWJtaXR0ZXJMaXN0PWYsYS5zdWJtaXREYXRhPWguZnJvbXNhcyx0eXBlb2YgZDwidSIpe2NvbnN0IHY9YS5zdWJtaXR0ZXJMaXN0LmZpbmRJbmRleChTPT5TLnRhYmxlSWQ9PT1kKTt2Pi0xJiZhLmdldERldGFpbHMoYS5z''@;'; put 'put ''dWJtaXR0ZXJMaXN0W3ZdLHYpfX1hLmxvYWRlZD0hMH1jYXRjaChoKXthLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImVkaXRvcnMvZ2V0c3VibWl0cyIsaCl9fSkoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9yZWFkeVN1Yj10aGlzLnNhc1N0b3JlU2VydmljZS5zZXRTdWJt''@;'; put 'put ''aXQuc3Vic2NyaWJlKGE9Pnt0aGlzLnN1YlJlYWR5PWF9KSx0aGlzLl9iYWNrVG9TdWI9dGhpcy5zYXNTdG9yZVNlcnZpY2Uuc2V0U3VibWl0TGlzdC5zdWJzY3JpYmUoYT0+e3RoaXMuc3ViUmVhZHk9IXRoaXMuc3ViUmVhZHksdGhpcy5kZXRhaWxzT3Blbj0hMX0pfWRvd25sb2FkKGEpe2xl''@;'; put 'put ''dCBkPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGg9ZC5zZXJ2ZXJVcmwsZj1kLmFwcExvYyx2PXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oaCt2KyIvP19wcm9ncmFtPSIrZisiL3NlcnZpY2VzL2F1ZGl0b3JzL2dldGF1ZGl0ZmlsZSZ0''@;'; put 'put ''YWJsZT0iK2EpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKFpkKSxKZShEbCksSmUoSnMpLEplKE9jKSxKZSh2YSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXN1Ym1pdHRlciJdXSxob3N0''@;'; put 'put ''QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbInBhZ2luYXRpb24iLCIiXSxbMSwidy0xMDAiXSxbImNsYXNzIiwiY29udGVudC1hcmVhIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImNhcmQiLDQs''@;'; put 'put ''Im5nSWYiXSxbMSwiY2FyZCJdLFsiY2xhc3MiLCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciIsNCwibmdJZiJdLFsxLCJjYXJkLWhlYWRlciIsMywibmdDbGFzcyJdLFsiY2xhc3MiLCJjZW50ZXIgY2xyLWNvbC1tZC0xMiB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0''@;'; put 'put ''ZXh0LWNlbnRlciBmb250LXdlaWdodC03MDAgY29sb3ItZGFyay1ncmF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImgtNzB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2xyLWNvbC1tZC0x''@;'; put 'put ''MiIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsIm5vLXN1Ym1pdHRlZC10YWJsZXMiLCJjYXJkLWJsb2NrIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJzaGFw''@;'; put 'put ''ZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iXSxbMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5Il0sWzEsImNlbnRlciIsImNsci1jb2wtbWQtMTIiLCJ0ZXh0LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsImZvbnQtd2VpZ2h0LTcwMCIsImNvbG9yLWRh''@;'; put 'put ''cmstZ3JheSJdLFsxLCJoLTcwdmgiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFsxLCJzcGlubmVyIl0sWzEsImNsci1jb2wtbWQtMTIiXSxbMSwiZGF0YWdy''@;'; put 'put ''aWQtY29tcGFjdCIsImRhdGFncmlkLWN1c3RvbS1mb290ZXIiXSxbMywiY2xyRGdGaWVsZCJdLFsiY2xhc3MiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siLDQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdlU2l6ZSJdLFszLCJjbHJQYWdlU2l6ZU9wdGlvbnMi''@;'; put 'put ''XSxbMSwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJyb2xlIiwidG9vbHRpcCIsMSwicm93IiwianVzdGlmeS1jb250ZW50LWFyb3VuZCJdLFsxLCJjb2x1bW4tY2VudGVyIiwibGlua3MiLCJ0b29sdGlwIiwidG9vbHRpcC1tZCIsInRvb2x0aXAtYm90dG9tLWxlZnQiLCJjb2xvci1i''@;'; put 'put ''bHVlIiwzLCJjbGljayJdLFsic2hhcGUiLCJjb2RlIiwic2l6ZSIsIjI4Il0sWzEsInRvb2x0aXAtY29udGVudCJdLFsxLCJwLTAiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIl0sWzEsImJ0biIsImJ0bi1zdWNjZXNzIiwzLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJd''@;'; put 'put ''XSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImRpdiIsMSksZ3QoMSxYbXQsMiwxLCJkaXYiLDIpKDIsSm10LDIsMCwiZGl2IiwzKSxtZSgpKSwyJmQmJihfZSgpLFJlKCJuZ0lmIiwhaC5zdWJSZWFkeSksX2UoKSxSZSgibmdJZiIsaC5zdWJSZWFkeSkpfSxkZXBlbmRlbmNp''@;'; put 'put ''ZXM6W0pjLCRpLGs4LF80LFQ4LFJSLEdfLE9NLExSLENtLFNtLEE4LFhfLE1tLE04LHdtLHg4LFlhLEk0ZV0sc3R5bGVzOlsiLm5vQm9yZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB0cmFuc3BhcmVudCFpbXBvcnRhbnR9LnRvb2x0aXAudG9vbHRpcC1i''@;'; put 'put ''b3R0b20tbGVmdFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9vbHRpcC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWJvdHRvbS1sZWZ0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5k''@;'; put 'put ''OiMzMTQzNTEhaW1wb3J0YW50fS50b29sdGlwLnRvb2x0aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdID4gLnRvb2x0aXAtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06YmVmb3JlLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1jb250ZW50LnRvb2x0''@;'; put 'put ''aXAtYm90dG9tLWxlZnRbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItcmlnaHQ6LjI1cmVtIHNvbGlkICMzMTQzNTE7Ym9yZGVyLWJvdHRvbTouMjA4MzNyZW0gc29saWQgIzMxNDM1MX0ubm8tc3VibWl0dGVkLXRhYmxlc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OmNhbGMo''@;'; put 'put ''MTAwdmggLSAyMDBweCl9Il19KX19cmV0dXJuIGx9KSgpO2NvbnN0IFFtdD0obCxjKT0+KHtyZWplY3RlZDpsLGFjY2VwdGVkOmN9KTtmdW5jdGlvbiBlNXQobCxjKXsxJmwmJihnZSgwLCJkaXYiLDEyKSxZdCgxLCJjbHItaWNvbiIsMTMpLGdlKDIsImgzIiwxNCksUGUoMywiVGhlcmUgaXMg''@;'; put 'put ''bm8gaGlzdG9yeSB0byBzaG93IiksbWUoKSgpKX1mdW5jdGlvbiB0NXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJhIiwxNyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1OZSgpO3JldHVybiBidChmLmdldFRhYmxlKGYuYXBw''@;'; put 'put ''cm92ZURhdGFbaF0pKX0pLFBlKDEpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0LGQ9TmUoKTtfZSgpLGxyKGQuYXBwcm92ZURhdGFbYV0pfX1mdW5jdGlvbiBuNXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiKSgxLCJhIiwxNyksSXQoImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1OZSgpO3JldHVybiBidChmLmdldEJhc2VUYWJsZShmLmFwcHJvdmVEYXRhW2hdKSl9KSxQZSgyLCJWSUVXIiksbWUoKSxnZSgzLCJzcGFuIiksUGUoNCwiIC8gIiksbWUoKSxnZSg1LCJhIiwxNyksSXQoImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1OZSgpO3JldHVybiBidChmLmdldEVkaXRUYWJsZShmLmFwcHJvdmVEYXRhW2hdKSl9KSxQZSg2LCJFRElUIiksbWUoKSgpfX1mdW5jdGlvbiByNXQobCxjKXtpZigxJmwmJihnZSgwLCJzcGFuIiksUGUoMSksbWUoKSks''@;'; put 'put ''MiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0LGQ9TmUoKTtfZSgpLGxyKGQuYXBwcm92ZURhdGFbYV0pfX1mdW5jdGlvbiBpNXQobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIpKDEsInRkIiw2KSxQZSgyKSxtZSgpLGdlKDMsInRkIiw2KSxndCg0LHQ1dCwyLDEsImEiLDE1KSg1LG41dCw3LDAs''@;'; put 'put ''ImRpdiIsMTYpKDYscjV0LDIsMSwic3BhbiIsMTYpLG1lKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9Yy5pbmRleDtfZSgyKSxscihhKSxfZSgyKSxSZSgibmdJZiIsZDwxKSxfZSgpLFJlKCJuZ0lmIixkPDImJmQ+PTEpLF9lKCksUmUoIm5nSWYiLGQ+PTIpfX1mdW5jdGlvbiBv''@;'; put 'put ''NXQobCxjKXsxJmwmJihnZSgwLCJzcGFuIiwyMCksUGUoMSwiIExvYWRpbmcuLi4gIiksbWUoKSl9ZnVuY3Rpb24gczV0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyLCJMb2FkaW5nIGhpc3RvcnkiKSxtZSgpKCkpfWZ1bmN0aW9uIGE1dChsLGMpe2lmKDEmbCYmKGdlKDAs''@;'; put 'put ''ImRpdiIsMTgpLGd0KDEsbzV0LDIsMCwic3BhbiIsMTkpKDIsczV0LDMsMCwiZGl2IiwxNiksbWUoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEubG9hZGVkKSxfZSgpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiBsNXQobCxjKXsxJmwmJihnZSgwLCJoMyIs''@;'; put 'put ''MjgpLFBlKDEsIkhJU1RPUlkiKSxtZSgpKX1mdW5jdGlvbiBjNXQobCxjKXtpZigxJmwmJihnZSgwLCJwIiwyOSksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksbXIoIiBUbyB1bmxvY2sgbW9yZSB0aGFuICIsYS5saWNlbmNlU3RhdGUudmFsdWUuaGlzdG9yeV9yb3dzX2Fs''@;'; put 'put ''bG93ZWQsIiByZWNvcmRzLCBjb250YWN0IHN1cHBvcnRAZGF0YWNvbnRyb2xsZXIuaW8gIil9fWZ1bmN0aW9uIHU1dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1kZy1yb3ciLDMzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQ7cmV0''@;'; put 'put ''dXJuIGJ0KE5lKDMpLmdldEFwcHJJbmRleChoKSl9KSxnZSgxLCJjbHItZGctY2VsbCIsMzQpKDIsImEiLDM1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKDMpLmdldEJhc2VUYWJsZShoLmJhc2V0YWJsZSkpfSksUGUoMyksbWUo''@;'; put 'put ''KSgpLGdlKDQsImNsci1kZy1jZWxsIiwzNiksUGUoNSksbWUoKSxnZSg2LCJjbHItZGctY2VsbCIsMzQpLFBlKDcpLG1lKCksZ2UoOCwiY2xyLWRnLWNlbGwiLDM0KSxQZSg5KSxtZSgpLGdlKDEwLCJjbHItZGctY2VsbCIsMzQpLFBlKDExKSxtZSgpLGdlKDEyLCJjbHItZGctY2VsbCIsMzQp''@;'; put 'put ''LFBlKDEzKSxtZSgpLGdlKDE0LCJjbHItZGctY2VsbCIsMzcpKDE1LCJidXR0b24iLDM4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe2NvbnN0IGY9X3QoYSkuJGltcGxpY2l0O3JldHVybiBOZSgzKS5kb3dubG9hZChmLnRhYmxlSWQpLGJ0KGguc3RvcFByb3BhZ2F0aW9uKCkpfSksWXQoMTYs''@;'; put 'put ''ImNsci1pY29uIiwzOSksbWUoKSgpKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKDMpLGxyKGEuYmFzZXRhYmxlKSxfZSgpLFJlKCJuZ0NsYXNzIixmMyg3LFFtdCwiUkVKRUNURUQiPT09YS5zdGF0dXMsIkFQUFJPVkVEIj09PWEuc3RhdHVzKSksX2UoKSxscihhLnN0YXR1cyks''@;'; put 'put ''X2UoMiksbHIoYS5zdWJtaXR0ZXIpLF9lKDIpLGxyKGEuc3VibWl0dGVkUmVhc29uKSxfZSgyKSxscihhLnN1Ym1pdHRlZCksX2UoMiksbHIoYS5yZXZpZXdlZCl9fWZ1bmN0aW9uIGQ1dChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci1kYXRhZ3JpZCIsMzApKDEsImNsci1kZy1jb2x1bW4iLDMx''@;'; put 'put ''KSxQZSgyLCJCQVNFX1RBQkxFIiksbWUoKSxnZSgzLCJjbHItZGctY29sdW1uIiwzMSksUGUoNCwiU1RBVFVTIiksbWUoKSxnZSg1LCJjbHItZGctY29sdW1uIiwzMSksUGUoNiwiU1VCTUlUVEVSIiksbWUoKSxnZSg3LCJjbHItZGctY29sdW1uIiwzMSksUGUoOCwiU1VCTUlUIFJFQVNPTiIp''@;'; put 'put ''LG1lKCksZ2UoOSwiY2xyLWRnLWNvbHVtbiIsMzEpLFBlKDEwLCJTVUJNSVRURUQiKSxtZSgpLGdlKDExLCJjbHItZGctY29sdW1uIiwzMSksUGUoMTIsIkFQUFJPVkVEIC8gUkVKRUNURUQiKSxtZSgpLGdlKDEzLCJjbHItZGctY29sdW1uIiksUGUoMTQsIkRPV05MT0FEIiksbWUoKSxndCgx''@;'; put 'put ''NSx1NXQsMTcsMTAsImNsci1kZy1yb3ciLDMyKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgiY2xyRGdGaWVsZCIsImJhc2V0YWJsZSIpLF9lKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3RhdHVzIiksX2UoMiksUmUoImNsckRnRmllbGQiLCJzdWJtaXR0ZXIiKSxfZSgyKSxSZSgi''@;'; put 'put ''Y2xyRGdGaWVsZCIsInN1Ym1pdHRlZFJlYXNvbiIpLF9lKDIpLFJlKCJjbHJEZ0ZpZWxkIiwic3VibWl0dGVkIiksX2UoMiksUmUoImNsckRnRmllbGQiLCJyZXZpZXdlZCIpLF9lKDQpLFJlKCJjbHJEZ0l0ZW1zT2YiLGEuaGlzdG9yeSl9fWZ1bmN0aW9uIGg1dChsLGMpe2lmKDEmbCl7Y29u''@;'; put 'put ''c3QgYT1TbigpO2dlKDAsImJ1dHRvbiIsNDApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMikubG9hZERhdGEoKSl9KSxQZSgxKSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtSZSgiY2xyTG9hZGluZyIsYS5sb2FkaW5nTW9yZSksX2UoKSxtcigiIExvYWQg''@;'; put 'put ''IixhLnJvd3NMZWZ0VG9Mb2FkLCIgbW9yZSAiKX19ZnVuY3Rpb24gZjV0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyMSkoMSwiZGl2IiwyMiksZ3QoMixsNXQsMiwwLCJoMyIsMjMpKDMsYzV0LDIsMSwicCIsMjQpLG1lKCksZ3QoNCxkNXQsMTYsNywiY2xyLWRhdGFncmlkIiwyNSksZ2Uo''@;'; put 'put ''NSwiZGl2IiwyNiksZ3QoNixoNXQsMiwyLCJidXR0b24iLDI3KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDIpLFJlKCJuZ0lmIixhLmxvYWRlZCksX2UoKSxSZSgibmdJZiIsYS5saWNlbmNlU3RhdGUudmFsdWUuaGlzdG9yeV9yb3dzX2FsbG93ZWQhPT1hLkluZmluaXR5KSxfZSgp''@;'; put 'put ''LFJlKCJuZ0lmIixhLmxvYWRlZCksX2UoMiksUmUoIm5nSWYiLGEubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkPT09YS5JbmZpbml0eSYmYS5yb3dzTGVmdFRvTG9hZD4wKX19Y29uc3QgcDV0PVt7cGF0aDoiYXBwcm92ZSIsY29tcG9uZW50OkhtdH0se3BhdGg6ImFw''@;'; put 'put ''cHJvdmVEZXQvOnRhYmxlSWQiLGNvbXBvbmVudDpJNGV9LHtwYXRoOiJzdWJtaXR0ZWQiLGNvbXBvbmVudDpSNGV9LHtwYXRoOiJzdWJtaXR0ZWQvOnRhYmxlSWQiLGNvbXBvbmVudDpSNGV9LHtwYXRoOiJoaXN0b3J5Iixjb21wb25lbnQ6KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQs''@;'; put 'put ''aCxmLHYpe3RoaXMubGljZW5jZVNlcnZpY2U9YSx0aGlzLnNhc1N0b3JlU2VydmljZT1kLHRoaXMuZXZlbnRTZXJ2aWNlPWgsdGhpcy5yb3V0ZXI9Zix0aGlzLnNhc1NlcnZpY2U9dix0aGlzLmhpc3Rvcnk9W10sdGhpcy50YWJsZVRpdGxlcz1bXSx0aGlzLmhpc3RvcnlBcnI9W10sdGhpcy5s''@;'; put 'put ''b2FkZWQ9ITEsdGhpcy5pdGVtc051bT0xMCx0aGlzLm9wZW5Nb2RhbD0hMSx0aGlzLm5vRGF0YT0hMSx0aGlzLmFwcHJvdmVEYXRhPXt9LHRoaXMuc2FzanNDb25maWc9bmV3IHlkLlNBU2pzQ29uZmlnLHRoaXMuaGlzdFBhcmFtcz17SElTVDowLFNUQVJUUk9XOjEsTk9CUzotMX0sdGhpcy5s''@;'; put 'put ''b2FkaW5nTW9yZT0hMSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLkluZmluaXR5PTEvMCx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpfWdldFRhYmxlKGEpe3RoaXMucm91dGVyLm5hdmlnYXRl''@;'; put 'put ''QnlVcmwoIi9zdGFnZS8iK2EpfWdldEJhc2VUYWJsZShhKXt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrYSl9Z2V0RWRpdFRhYmxlKGEpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIithKX1nZXRBcHBySW5kZXgoYSl7Y29uc3QgZD10aGlzLmhp''@;'; put 'put ''c3RvcnlBcnIuZmluZEluZGV4KGg9PmguVEFCTEVfSUQ9PT1hLnRhYmxlSWQpO2Q+LTEmJih0aGlzLmFwcHJvdmVEYXRhPXRoaXMuaGlzdG9yeUFycltkXSx0aGlzLm9wZW5Nb2RhbD0hMCl9Z2V0IHJvd3NMZWZ0VG9Mb2FkKCl7Y29uc3QgYT10aGlzLmhpc3RQYXJhbXMuTk9CUy10aGlzLmhp''@;'; put 'put ''c3RvcnkubGVuZ3RoLGQ9dGhpcy5oaXN0UGFyYW1zLkhJU1Q7cmV0dXJuIGE8PTA/MDphPmQ/ZDphfWRvd25sb2FkKGEpe2xldCBkPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGg9ZC5zZXJ2ZXJVcmwsZj1kLmFwcExvYyx2PXRoaXMuc2FzU2VydmljZS5nZXRFeGVjdXRpb25Q''@;'; put 'put ''YXRoKCk7d2luZG93Lm9wZW4oaCt2KyIvP19wcm9ncmFtPSIrZisiL3NlcnZpY2VzL2F1ZGl0b3JzL2dldGF1ZGl0ZmlsZSZ0YWJsZT0iK2ErIiZfY29udGV4dG5hbWU9Iit0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lKX1sb2FkRGF0YSgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rp''@;'; put 'put ''b24qKCl7bGV0IGQ9e1NUQVJUUk9XOmEuaGlzdFBhcmFtcy5ISVNUK2EuaGlzdFBhcmFtcy5TVEFSVFJPV307YS5sb2FkaW5nTW9yZT0hMDt0cnl7bGV0IGYsaD15aWVsZCBhLnNhc1N0b3JlU2VydmljZS5nZXRIaXN0b3J5KGQsIkJyb3dzZXJQYXJhbXMiLCJhcHByb3ZlcnMvZ2V0aGlzdG9y''@;'; put 'put ''eSIpO2EubG9hZGluZ01vcmU9ITEsYS5oaXN0UGFyYW1zPWguaGlzdHBhcmFtc1swXTtjb25zdCB2PWguZnJvbXNhcy5zbGljZSgwLGEubGljZW5jZVN0YXRlLnZhbHVlLmhpc3Rvcnlfcm93c19hbGxvd2VkKTtpZih2Lmxlbmd0aD4wKXtjb25zdCBTPXY7YS5oaXN0b3J5QXJyPXYsZj1PYmpl''@;'; put 'put ''Y3Qua2V5cyhTWzBdKSxhLnRhYmxlVGl0bGVzPWY7bGV0IFY9di5tYXAoZnVuY3Rpb24oUSl7cmV0dXJue3RhYmxlSWQ6US5UQUJMRV9JRCxzdWJtaXR0ZXI6US5TVUJNSVRURVIsc3VibWl0dGVkUmVhc29uOlEuU1VCTUlUVEVEX1JFQVNPTl9UWFQsc3VibWl0dGVkOlEuU1VCTUlUVEVELHN0''@;'; put 'put ''YXR1czpRLlNUQVRVUyxyZXZpZXdSZWFzb246US5SRVZJRVdfUkVBU09OX1RYVCxyZXZpZXdlcjpRLlJFVklFV0VSLHJldmlld2VkOlEuUkVWSUVXRUQsbnVtT2ZBcHByb3ZhbHM6US5OVU1fT0ZfQVBQUk9WQUxTX1JFUVVJUkVELGJhc2V0YWJsZTpRLkJBU0VfVEFCTEV9fSk7YS5oaXN0b3J5''@;'; put 'put ''LnB1c2goLi4uViksYS5sb2FkZWQ9ITB9ZWxzZSBhLmxvYWRlZD0hMCwwPT09YS5oaXN0b3J5Lmxlbmd0aCYmKGEubm9EYXRhPSEwKX1jYXRjaChoKXthLmV2ZW50U2VydmljZS5jYXRjaFJlc3BvbnNlRXJyb3IoImFwcHJvdmVycy9nZXRoaXN0b3J5IixoKSxhLmxvYWRpbmdNb3JlPSExfX0p''@;'; put 'put ''KCl9bmdPbkluaXQoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2EubG9hZERhdGEoKX0pKCl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoQTApLEplKFpkKSxKZShEbCksSmUoSnMpLEplKHZhKSl9fXN0YXRpY3t0aGlzLlx1''@;'; put 'put ''MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtaGlzdG9yeSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6MjAsdmFyczo2LGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsiaWQiLCJub0RhdGFDb250YWluZXIiLCJjbGFzcyIsImNhcmQtYmxv''@;'; put 'put ''Y2sgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1vZGFsT3BlbiIsImNsck1vZGFsU2l6ZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0s''@;'; put 'put ''WzEsInRhYmxlIl0sWzEsImxlZnQiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJjbGFzcyIsImgtNzB2aCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4''@;'; put 'put ''LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwiY2FyZCIsNCwibmdJZiJdLFsiaWQiLCJub0RhdGFDb250YWluZXIiLDEsImNhcmQtYmxvY2siLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIiwiZmxleC1jb2x1bW4iLCJhbGlnbi1pdGVtcy1j''@;'; put 'put ''ZW50ZXIiXSxbInNoYXBlIiwid2FybmluZy1zdGFuZGFyZCIsInNpemUiLCI2MCIsMSwiaXMtaW5mbyJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxbImNsYXNzIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwiY3Vyc29yLXBvaW50''@;'; put 'put ''ZXIiLDMsImNsaWNrIl0sWzEsImgtNzB2aCIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50ZXIiLCJmbGV4LWNvbHVtbiIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsiY2xhc3MiLCJzcGlubmVyIiw0LCJuZ0lmIl0sWzEsInNwaW5uZXIiXSxbMSwiY2FyZCJdLFsxLCJjYXJkLWhlYWRl''@;'; put 'put ''ciJdLFsiY2xhc3MiLCJjZW50ZXIgY2xyLWNvbC1tZC0xMiB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJ0ZXh0LWNlbnRlciBmb250LXdlaWdodC03MDAgY29sb3ItZGFyay1ncmF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRhdGFncmlkLWhpc3RvcnkgZGF0YWdyaWQtY3VzdG9t''@;'; put 'put ''LWZvb3RlciIsNCwibmdJZiJdLFsxLCJsb2FkLW1vcmUiLCJkLWZsZXgiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbImNsYXNzIiwiYnRuIGJ0bi1zdWNjZXNzIiwzLCJjbHJMb2FkaW5nIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwiY2Vu''@;'; put 'put ''dGVyIiwiY2xyLWNvbC1tZC0xMiIsInRleHQtY2VudGVyIl0sWzEsInRleHQtY2VudGVyIiwiZm9udC13ZWlnaHQtNzAwIiwiY29sb3ItZGFyay1ncmF5Il0sWzEsImRhdGFncmlkLWhpc3RvcnkiLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzMsImNsckRnRmllbGQiXSxbMywiY2xpY2si''@;'; put 'put ''LDQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xpY2siXSxbMSwidmVyQ2VudGVyIl0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1saW5rIiwibS0wIiwzLCJjbGljayJdLFsxLCJ2ZXJDZW50ZXIiLDMsIm5nQ2xhc3MiXSxbMSwidmVyQ2VudGVyIiwicC0wIiwiZC1mbGV4Iiwi''@;'; put 'put ''anVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJidG4iLCJidG4tc3VjY2VzcyIsMywiY2xpY2siXSxbInNoYXBlIiwiZG93bmxvYWQiXSxbMSwiYnRuIiwiYnRuLXN1Y2Nlc3MiLDMsImNsaWNrIiwiY2xyTG9hZGluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImRp''@;'; put 'put ''diIsMCksZ3QoMSxlNXQsNCwwLCJkaXYiLDEpLGdlKDIsImNsci1tb2RhbCIsMiksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24odil7cmV0dXJuIEdyKGgub3Blbk1vZGFsLHYpfHwoaC5vcGVuTW9kYWw9diksdn0pLGdlKDMsImg0IiwzKSxQZSg0LCJBcHByb3ZhbCBkZXRhaWxz''@;'; put 'put ''IiksbWUoKSxnZSg1LCJkaXYiLDQpKDYsInRhYmxlIiw1KSg3LCJ0aGVhZCIpKDgsInRyIikoOSwidGgiLDYpLFBlKDEwLCJOYW1lIiksbWUoKSxnZSgxMSwidGgiLDYpLFBlKDEyLCJWYWx1ZSIpLG1lKCkoKSgpLGdlKDEzLCJ0Ym9keSIpLGd0KDE0LGk1dCw3LDQsInRyIiw3KSxtZSgpKCko''@;'; put 'put ''KSxnZSgxNSwiZGl2Iiw4KSgxNiwiYnV0dG9uIiw5KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGgub3Blbk1vZGFsPSExfSksUGUoMTcsIiBPSyAiKSxtZSgpKCkoKSxndCgxOCxhNXQsMywyLCJkaXYiLDEwKSgxOSxmNXQsNyw0LCJkaXYiLDExKSxtZSgpKSwyJmQmJihfZSgpLFJl''@;'; put 'put ''KCJuZ0lmIixoLm5vRGF0YSksX2UoKSxZcigiY2xyTW9kYWxPcGVuIixoLm9wZW5Nb2RhbCksUmUoImNsck1vZGFsU2l6ZSIsInhsIiksX2UoMTIpLFJlKCJuZ0Zvck9mIixoLnRhYmxlVGl0bGVzKSxfZSg0KSxSZSgibmdJZiIsIWgubG9hZGVkKSxfZSgpLFJlKCJuZ0lmIiwhaC5ub0RhdGEm''@;'; put 'put ''JmgubG9hZGVkKSl9LGRlcGVuZGVuY2llczpbSmMsVnMsJGksazgsXzQsVDgsR18sQ20sU20sQTgsWF8sTW0sTTgsd20seDgsWWEsUGMsaXUsbDAsRGhdLHN0eWxlczpbIi5yZWplY3RlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y4MzEyNjtmb250LXdlaWdodDo3MDB9LmFjY2VwdGVk''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojM2ZjNDI0O2ZvbnQtd2VpZ2h0OjcwMH0uaHNDZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnQ7''@;'; put 'put ''YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudDtwYWRkaW5nOjdweH0uYnRDZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS52ZXJDZW50ZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Zmxl''@;'; put 'put ''eDthbGlnbi1pdGVtczpjZW50ZXI7d29yZC1icmVhazpicmVhay1hbGx9LmxvYWQtbW9yZVtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6OTBweH0jbm9EYXRhQ29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6Y2FsYygxMDB2aCAt''@;'; put 'put ''IDIwMHB4KX0iXX0pfX1yZXR1cm4gbH0pKCl9XTtsZXQgZzV0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtp''@;'; put 'put ''bXBvcnRzOltvbyxDYy5mb3JDaGlsZChwNXQpLENjXX0pfX1yZXR1cm4gbH0pKCksbTV0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMu''@;'; put 'put ''XHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxyYyxnNXQsYzAsbDcuZm9yUm9vdCgpLHIyLGR5XX0pfX1yZXR1cm4gbH0pKCksdjV0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoKXt9bmdPbkluaXQoKXt9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8''@;'; put 'put ''bCl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtcmV2aWV3LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmWXQoMCwicm91dGVyLW91dGxl''@;'; put 'put ''dCIpfSxkZXBlbmRlbmNpZXM6W2M0XX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgXzV0PShsLGMpPT4oe3JlamVjdGVkOmwsYWNjZXB0ZWQ6Y30pO2Z1bmN0aW9uIGI1dChsLGMpezEmbCYmKGdlKDAsInNwYW4iLDYpLFBlKDEsIiBMb2FkaW5nLi4uICIpLG1lKCkpfWZ1bmN0aW9uIHk1dChsLGMp''@;'; put 'put ''ezEmbCYmKGdlKDAsImRpdiIpKDEsImgzIiksUGUoMiwiTG9hZGluZyBzdWJtaXR0ZWQgdGFibGUiKSxtZSgpKCkpfWZ1bmN0aW9uIHc1dChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNCksZ3QoMSxiNXQsMiwwLCJzcGFuIiw1KSgyLHk1dCwzLDAsImRpdiIsMyksbWUoKSksMiZsKXtjb25z''@;'; put 'put ''dCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEubG9hZGVkKSxfZSgpLFJlKCJuZ0lmIiwhYS5sb2FkZWQpfX1mdW5jdGlvbiBDNXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDI4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLmFw''@;'; put 'put ''cHJvdmVUYWJsZVNjcmVlbigpKX0pLFBlKDEsIiBBcHByb3ZlICIpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO1JlKCJkaXNhYmxlZCIsIkFQUFJPVkVEIj09PShudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQpfHwiUkVKRUNURUQi''@;'; put 'put ''PT09KG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCkpKCJkaXNhYmxlZCIsYS5yZXZlcnRpbmdDaGFuZ2VzKX19ZnVuY3Rpb24gUzV0KGwsYyl7MSZsJiYoZ2UoMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMzEpKDEsInNwYW4iKSxQZSgy''@;'; put 'put ''LCIgUmV2ZXJ0IHRoaXMgYW5kIGFsbCBzdWJzZXF1ZW50IGNoYW5nZXMgIiksbWUoKSgpKX1mdW5jdGlvbiBNNXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDI5KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLnJldmVydENoYW5n''@;'; put 'put ''ZXMoKSl9KSxQZSgxLCIgUkVWRVJUICIpLGd0KDIsUzV0LDMsMCwiY2xyLXRvb2x0aXAtY29udGVudCIsMzApLG1lKCl9MiZsJiZSZSgiY2xyTG9hZGluZyIsTmUoMikucmV2ZXJ0aW5nQ2hhbmdlcyl9ZnVuY3Rpb24geDV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiko''@;'; put 'put ''MSwiZGl2Iiw3KSgyLCJkaXYiLDgpKDMsImg0Iiw5KSxQZSg0LCJTdGFnZWQgRGF0YSIpLG1lKCkoKSgpLGdlKDUsImRpdiIsMTApKDYsImRpdiIsMTEpKDcsImRpdiIsMTIpKDgsImRpdiIsOCksUGUoOSwiQmFzaWMgU3VibWl0dGVkIERldGFpbHMiKSxtZSgpKCksZ2UoMTAsImRpdiIpKDEx''@;'; put 'put ''LCJzcGFuIiksUGUoMTIsIlRhYmxlIElkOiIpLG1lKCksZ2UoMTMsInN0cm9uZyIpKDE0LCJzcGFuIiksUGUoMTUpLG1lKCkoKSgpLGdlKDE2LCJkaXYiKSgxNywic3BhbiIpLFBlKDE4LCJCYXNlIFRhYmxlOiIpLG1lKCksZ2UoMTksImEiLDEzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIF90KGEpLGJ0KE5lKCkudmlld2VyVGFibGVTY3JlZW4oKSl9KSxQZSgyMCksbWUoKSgpLGdlKDIxLCJkaXYiKSgyMiwic3BhbiIpLFBlKDIzLCJTdWJtaXQgRGF0ZToiKSxtZSgpLGdlKDI0LCJzcGFuIiwxNCksUGUoMjUpLG1lKCkoKSxnZSgyNiwiZGl2IikoMjcsInNwYW4iKSxQZSgy''@;'; put 'put ''OCwiUmV2aWV3IFN0YXR1czoiKSxtZSgpLGdlKDI5LCJzcGFuIiwxNSksUGUoMzApLG1lKCkoKSgpLGdlKDMxLCJkaXYiLDE2KSgzMiwiZGl2IiwxMikoMzMsImRpdiIsOCksUGUoMzQsIkFjdGlvbnMiKSxtZSgpKCksZ2UoMzUsImRpdiIsMTcpKDM2LCJkaXYiLDE4KSgzNywiYnV0dG9uIiwx''@;'; put 'put ''OSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnZpZXdlclRhYmxlU2NyZWVuKCkpfSksUGUoMzgsIiBWaWV3IGJhc2UgdGFibGUgIiksbWUoKSxndCgzOSxDNXQsMiwyLCJidXR0b24iLDIwKSxnZSg0MCwiYnV0dG9uIiwyMSksSXQoImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBfdChhKSxidChOZSgpLmdvQmFjaygpKX0pLFBlKDQxLCIgRWRpdCBiYXNlIHRhYmxlICIpLG1lKCksZ2UoNDIsImJ1dHRvbiIsMjIpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCk7cmV0dXJuIGJ0KGguZG93bmxvYWQobnVsbD09aC50YWJsZURl''@;'; put 'put ''dGFpbHM/bnVsbDpoLnRhYmxlRGV0YWlscy5UQUJMRV9JRCkpfSksWXQoNDMsImNsci1pY29uIiwyMyksbWUoKSxnZSg0NCwiY2xyLXRvb2x0aXAiKSxndCg0NSxNNXQsMywxLCJidXR0b24iLDI0KSxtZSgpKCkoKSgpKCksZ2UoNDYsImRpdiIsMjUpLFl0KDQ3LCJob3QtdGFibGUiLDI2KSxt''@;'; put 'put ''ZSgpLFl0KDQ4LCJkaXYiLDI3KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpO19lKDE1KSxtcigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5UQUJMRV9JRCwiIiksX2UoNSksbXIoIiAiLG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6YS50YWJsZURldGFp''@;'; put 'put ''bHMuQkFTRV9UQUJMRSwiICIpLF9lKDUpLG1yKCIgIixudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlNVQk1JVFRFRF9PTl9EVFRNLCIgIiksX2UoNCksUmUoIm5nQ2xhc3MiLGYzKDE3LF81dCwiUkVKRUNURUQiPT09KG51bGw9PWEudGFibGVEZXRhaWxzP251bGw6''@;'; put 'put ''YS50YWJsZURldGFpbHMuUkVWSUVXX1NUQVRVU19JRCksIkFQUFJPVkVEIj09PShudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLlJFVklFV19TVEFUVVNfSUQpKSksX2UoKSxtcigiICIsbnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5SRVZJ''@;'; put 'put ''RVdfU1RBVFVTX0lELCIgIiksX2UoNyksUmUoImRpc2FibGVkIixhLnJldmVydGluZ0NoYW5nZXMpLF9lKDIpLFJlKCJuZ0lmIiwiWUVTIiE9PShudWxsPT1hLnRhYmxlRGV0YWlscz9udWxsOmEudGFibGVEZXRhaWxzLkFMTE9XX1JFU1RPUkUpKSxfZSgpLFJlKCJkaXNhYmxlZCIsYS5yZXZl''@;'; put 'put ''cnRpbmdDaGFuZ2VzKSxfZSg1KSxSZSgibmdJZiIsIllFUyI9PT0obnVsbD09YS50YWJsZURldGFpbHM/bnVsbDphLnRhYmxlRGV0YWlscy5BTExPV19SRVNUT1JFKSksX2UoMiksUmUoImRhdGEiLGEuaG90VGFibGUuZGF0YSkoImNvbEhlYWRlcnMiLGEuaG90VGFibGUuY29sSGVhZGVycyko''@;'; put 'put ''ImNvbHVtbnMiLGEuaG90VGFibGUuY29sdW1ucykoIm1heFJvd3MiLGEuaG90VGFibGUubWF4Um93cykoImhlaWdodCIsYS5ob3RUYWJsZS5oZWlnaHQpKCJsaWNlbnNlS2V5IixhLmhvdFRhYmxlLmxpY2Vuc2VLZXkpKCJhZnRlckdldENvbEhlYWRlciIsYS5ob3RUYWJsZS5hZnRlckdldENv''@;'; put 'put ''bEhlYWRlcikoImNlbGxzIixhLmhvdFRhYmxlLmNlbGxzKX19Y29uc3QgRTV0PVt7cGF0aDoiOnRhYmxlSWQiLGNvbXBvbmVudDooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPWEsdGhpcy5zYXNTdG9yZVNlcnZpY2U9ZCx0aGlzLmV2''@;'; put 'put ''ZW50U2VydmljZT1oLHRoaXMucm91dGU9Zix0aGlzLnJvdXRlcj12LHRoaXMuc2FzU2VydmljZT1TLHRoaXMubG9hZGVkPSExLHRoaXMucmV2ZXJ0aW5nQ2hhbmdlcz0hMSx0aGlzLmxpY2VuY2VTdGF0ZT10aGlzLmxpY2VuY2VTZXJ2aWNlLmxpY2VuY2VTdGF0ZSx0aGlzLmhvdFRhYmxlPXtk''@;'; put 'put ''YXRhOltdLGNvbEhlYWRlcnM6W10sY29sdW1uczpbXSxoZWlnaHQ6NTAwLHNldHRpbmdzOnt9LGxpY2Vuc2VLZXk6dm9pZCAwLG1heFJvd3M6dGhpcy5saWNlbmNlU3RhdGUudmFsdWUuc3RhZ2Vfcm93c19hbGxvd2VkfHwxLzAsYWZ0ZXJHZXRDb2xIZWFkZXI6KFYsUSxkZSk9PntRLmNsYXNz''@;'; put 'put ''TGlzdC5hZGQoSG4uaGFuZHNvbnRhYmxlLmRhcmtUYWJsZUhlYWRlckNsYXNzKX19fXN1Ym1pdHRlZFRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvc3RhZ2UvIit0aGlzLnRhYmxlX2lkKX1hcHByb3ZlVGFibGVTY3JlZW4oKXt0aGlzLnJvdXRlLm5hdmlnYXRlQnlV''@;'; put 'put ''cmwoIi9yZXZpZXcvYXBwcm92ZURldC8iK3RoaXMudGFibGVfaWQpfXZpZXdlclRhYmxlU2NyZWVuKCl7dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9kYXRhLyIrdGhpcy50YWJsZURldGFpbHMuQkFTRV9UQUJMRSl9Z29CYWNrKCl7SG4ueGxtYXBzLmZpbmQoZD0+ZC50YXJnZXRE''@;'; put 'put ''Uz09PXRoaXMudGFibGVEZXRhaWxzLkJBU0VfVEFCTEUpP3RoaXMucm91dGUubmF2aWdhdGVCeVVybCgiL2hvbWUvZXhjZWwtbWFwcy8iK3RoaXMuaG90VGFibGUuZGF0YVswXS5YTE1BUF9JRCk6dGhpcy5yb3V0ZS5uYXZpZ2F0ZUJ5VXJsKCIvZWRpdG9yLyIrdGhpcy50YWJsZURldGFpbHMu''@;'; put 'put ''QkFTRV9UQUJMRSl9ZG93bmxvYWQoYSl7bGV0IGQ9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksaD1kLnNlcnZlclVybCxmPWQuYXBwTG9jLHY9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTt3aW5kb3cub3BlbihoK3YrIi8/X3Byb2dyYW09IitmKyIvc2Vydmlj''@;'; put 'put ''ZXMvYXVkaXRvcnMvZ2V0YXVkaXRmaWxlJnRhYmxlPSIrYSl9bmdPbkluaXQoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2lmKGEubGljZW5jZVNlcnZpY2UuaG90X2xpY2Vuc2Vfa2V5LnN1YnNjcmliZShkPT57YS5ob3RUYWJsZS5saWNlbnNlS2V5PWR9KSx0eXBlb2YgYS5y''@;'; put 'put ''b3V0ZXIuc25hcHNob3QucGFyYW1zLnRhYmxlSWQ8InUiKXthLnRhYmxlX2lkPWEucm91dGVyLnNuYXBzaG90LnBhcmFtcy50YWJsZUlkO3RyeXtsZXQgZD15aWVsZCBhLnNhc1N0b3JlU2VydmljZS5nZXRDaGFuZ2VJbmZvKGEudGFibGVfaWQpO2lmKCFkfHwhZC5qc3BhcmFtcyl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoImpzcGFyYW1zIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSByZXNwb25zZS4iKTthLnRhYmxlRGV0YWlscz1kLmpzcGFyYW1zWzBdfWNhdGNoKGQpe2xldCBoPXt9O2QuTUVTU0FHRT9oPWQ6aC5NRVNTQUdFPWQsYS5ldmVudFNlcnZpY2UuY2F0Y2hSZXNwb25zZUVycm9yKCJw''@;'; put 'put ''dWJsaWMvZ2V0Y2hhbmdlaW5mbyIsaCl9dHJ5e2xldCBkPXlpZWxkIGEuc2FzU3RvcmVTZXJ2aWNlLm9wZW5UYWJsZShhLnRhYmxlX2lkKTtpZighZHx8IWQuc3RhZ2V0YWJsZSl0aHJvdyBuZXcgRXJyb3IoIlN0YWdldGFibGUgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHJlc3BvbnNlLiIp''@;'; put 'put ''O2xldCBoPWQuc3RhZ2V0YWJsZVswXSxmPVtdLHY9W107Zm9yKGxldCBWIGluIGgpaCYmZi5wdXNoKFYpO2ZvcihsZXQgVj0wO1Y8Zi5sZW5ndGg7VisrKXYucHVzaCh7ZGF0YTpmW1ZdfSk7bGV0IFM9ZnVuY3Rpb24oKXtyZXR1cm57cmVhZE9ubHk6ITB9fTthLmhvdFRhYmxlLmRhdGE9ZC5z''@;'; put 'put ''dGFnZXRhYmxlLGEuaG90VGFibGUuY29sSGVhZGVycz1mLGEuaG90VGFibGUuY29sdW1ucz12LGEuaG90VGFibGUuY2VsbHM9UyxhLmxvYWRlZD0hMCxhLnNldEZvY3VzKCl9Y2F0Y2goZCl7bGV0IGg9e307ZC5NRVNTQUdFfHwoaC5NRVNTQUdFPWQpLGEuZXZlbnRTZXJ2aWNlLmNhdGNoUmVz''@;'; put 'put ''cG9uc2VFcnJvcigiYXVkaXRvcnMvZ2V0c3RhZ2V0YWJsZSIsaCksYS5sb2FkZWQ9ITF9fX0pKCl9cmV2ZXJ0Q2hhbmdlcygpe3RoaXMucmV2ZXJ0aW5nQ2hhbmdlcz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgiZWRpdG9ycy9yZXN0b3JlIix7cmVzdG9yZV9pbjpbe2xvYWRfcmVmOnRo''@;'; put 'put ''aXMudGFibGVfaWR9XX0pLnRoZW4oZD0+e2QuYWRhcHRlclJlc3BvbnNlLnJlc3RvcmVfb3V0JiZ0aGlzLnJvdXRlLm5hdmlnYXRlKFsiL3N0YWdlIl0pLnRoZW4oKCk9Pnt0aGlzLnJvdXRlLm5hdmlnYXRlKFtgL3N0YWdlLyR7ZC5hZGFwdGVyUmVzcG9uc2UucmVzdG9yZV9vdXRbMF0uTE9B''@;'; put 'put ''RFJFRn1gXSl9KX0pLmZpbmFsbHkoKCk9Pnt0aGlzLnJldmVydGluZ0NoYW5nZXM9ITF9KX1zZXRGb2N1cygpe3NldFRpbWVvdXQoKCk9PntsZXQgYT13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFwcHJvdmFsLWJ0biIpO2EmJmEuZm9jdXMoKX0sMjAwKX1zdGF0aWN7dGhpcy5c''@;'; put 'put ''dTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShBMCksSmUoWmQpLEplKERsKSxKZShKcyksSmUoT2MpLEplKHZhKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtc3RhZ2UiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNv''@;'; put 'put ''bnRhaW5lciJdLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjbHItY29sLW1kLTEyIiwiY2FyZCJdLFsiY2xhc3MiLCJoLTgwdmggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIiw0LCJuZ0lm''@;'; put 'put ''Il0sWzQsIm5nSWYiXSxbMSwiaC04MHZoIiwiZC1mbGV4IiwianVzdGlmeS1jb250ZW50LWNlbnRlciIsImZsZXgtY29sdW1uIiwiYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMSwic3Bpbm5lciJdLFsibmctaWYiLCJsb2FkZWQiLDEsImNhcmQt''@;'; put 'put ''aGVhZGVyIl0sWzEsImNhcmQtdGl0bGUiLCJ0ZXh0LWNlbnRlciJdLFsxLCJtdC0wIl0sWyJuZy1pZiIsImxvYWRlZCIsMSwiY2xyLXJvdyJdLFsxLCJjYXJkLWJsb2NrIiwiY2xyLWNvbC1tZC02Iiwibm8tYm9yZGVycyJdLFsxLCJjYXJkLWhlYWRlciIsInB5LTUiXSxbMSwiYmFzZVRhYmxl''@;'; put 'put ''TGluayIsMywiY2xpY2siXSxbMSwibXQtMTAiXSxbMSwibXQtMTAiLDMsIm5nQ2xhc3MiXSxbMSwiY2xyLWNvbC1tZC02IiwiY2FyZC1ibG9jayIsIm5vLWJvcmRlcnMiXSxbMSwibXQtMjAiXSxbMSwicm93Il0sWzEsImJ0biIsImJ0bi1zbSIsImJ0bi1vdXRsaW5lIiwidGV4dC1jZW50ZXIi''@;'; put 'put ''LCJtci01aSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsiaWQiLCJhcHByb3ZhbC1idG4iLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLXN1Y2Nlc3Mtb3V0bGluZSB0ZXh0LWNlbnRlciBtci01aSIsMywiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJidG4iLCJidG4tc20iLCJidG4t''@;'; put 'put ''aW5mby1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtci01aSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2VzcyIsInRleHQtY2VudGVyIiwibXItNWkiLCJtaW4tdy0wIiwzLCJjbGljayJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsiY2xyVG9vbHRp''@;'; put 'put ''cFRyaWdnZXIiLCIiLCJjbGFzcyIsImJ0biBidG4tc20gYnRuLWRhbmdlciB0ZXh0LWNlbnRlciBtdC0yMCIsMywiY2xyTG9hZGluZyIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImNhcmQtYmxvY2siXSxbImhvdElkIiwiaG90SW5zdGFuY2UiLCJpZCIsImhvdFRhYmxlIiwiY2xhc3NOYW1lIiwi''@;'; put 'put ''aHREYXJrIiwic3RyZXRjaEgiLCJhbGwiLDMsImRhdGEiLCJjb2xIZWFkZXJzIiwiY29sdW1ucyIsIm1heFJvd3MiLCJoZWlnaHQiLCJsaWNlbnNlS2V5IiwiYWZ0ZXJHZXRDb2xIZWFkZXIiLCJjZWxscyJdLFsxLCJjYXJkLWZvb3RlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1jZW50''@;'; put 'put ''ZXIiXSxbImlkIiwiYXBwcm92YWwtYnRuIiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwidGV4dC1jZW50ZXIiLCJtci01aSIsMywiY2xpY2siLCJkaXNhYmxlZCJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImJ0biIsImJ0bi1zbSIsImJ0bi1kYW5nZXIiLCJ0''@;'; put 'put ''ZXh0LWNlbnRlciIsIm10LTIwIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbImNsclBvc2l0aW9uIiwiYm90dG9tLWxlZnQiLCJjbHJTaXplIiwibGciLDQsImNscklmT3BlbiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyJdXSx0ZW1wbGF0ZTpmdW5jdGlv''@;'; put 'put ''bihkLGgpezEmZCYmKGdlKDAsImRpdiIsMCkoMSwiZGl2IiwxKSxndCgyLHc1dCwzLDIsImRpdiIsMikoMyx4NXQsNDksMjAsImRpdiIsMyksbWUoKSgpKSwyJmQmJihfZSgyKSxSZSgibmdJZiIsIWgubG9hZGVkKSxfZSgpLFJlKCJuZ0lmIixoLmxvYWRlZCkpfSxkZXBlbmRlbmNpZXM6W0pj''@;'; put 'put ''LCRpLFlhLGwwLGtoLERoLEY4LEg4LE44LFNiXSxzdHlsZXM6WyIucmVqZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmODMxMjY7Zm9udC13ZWlnaHQ6NzAwfS5hY2NlcHRlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzNmYzQyNDtmb250LXdlaWdodDo3MDB9LmJhc2VUYWJs''@;'; put 'put ''ZUxpbmtbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO21hcmdpbi10b3A6MTBweDtjb2xvcjojMDA3Y2JifSAgYm9keVtjZHMtdGhlbWU9ZGFya10gLmJhc2VUYWJsZUxpbmt7Y29sb3I6IzRlYzBmZn0iXX0pfX1yZXR1cm4gbH0pKCl9XTtsZXQgVDV0PSgoKT0+e2NsYXNzIGx7''@;'; put 'put ''c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltvbyxjMCxDYy5mb3JDaGlsZChFNXQpLGw3LmZvclJvb3QoKV19KX19cmV0''@;'; put 'put ''dXJuIGx9KSgpO2Z1bmN0aW9uIGs1dChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDE3KSxQZSgxLCIgVmlld2VyIHJvd3MgbGltaXQ6ICIpLGdlKDIsInNwYW4iLDcpLFBlKDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMyksbHIoYS5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jv''@;'; put 'put ''d3NfYWxsb3dlZCl9fWZ1bmN0aW9uIEE1dChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDE3KSxQZSgxLCIgRWRpdG9yIHJvd3MgbGltaXQ6ICIpLGdlKDIsInNwYW4iLDcpLFBlKDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMyksbHIoYS5saWNlbmNlU3RhdGUudmFsdWUuZWRpdG9y''@;'; put 'put ''X3Jvd3NfYWxsb3dlZCl9fWZ1bmN0aW9uIEQ1dChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDE3KSxQZSgxLCIgU3RhZ2Ugcm93cyBsaW1pdDogIiksZ2UoMiwic3BhbiIsNyksUGUoMyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxscihhLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdGFn''@;'; put 'put ''ZV9yb3dzX2FsbG93ZWQpfX1mdW5jdGlvbiBJNXQobCxjKXtpZigxJmwmJihnZSgwLCJwIiwxNyksUGUoMSwiIEhpc3Rvcnkgcm93cyBsaW1pdDogIiksZ2UoMiwic3BhbiIsNyksUGUoMyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxscihhLmxpY2VuY2VTdGF0ZS52YWx1ZS5o''@;'; put 'put ''aXN0b3J5X3Jvd3NfYWxsb3dlZCl9fWZ1bmN0aW9uIFI1dChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDE3KSxQZSgxLCIgU3VibWl0IHJvd3MgbGltaXQ6ICIpLGdlKDIsInNwYW4iLDcpLFBlKDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMyksbHIoYS5saWNlbmNlU3RhdGUudmFs''@;'; put 'put ''dWUuc3VibWl0X3Jvd3NfbGltaXQpfX1mdW5jdGlvbiBMNXQobCxjKXtpZigxJmwmJihnZSgwLCJwIiwxNyksUGUoMSwiIFRhYmxlcyBpbiBsaWJyYXJ5IGxpbWl0OiAiKSxnZSgyLCJzcGFuIiw3KSxQZSgzKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDMpLGxyKGEubGljZW5jZVN0''@;'; put 'put ''YXRlLnZhbHVlLnRhYmxlc19pbl9saWJyYXJ5X2xpbWl0KX19ZnVuY3Rpb24gTzV0KGwsYyl7aWYoMSZsJiYoZ2UoMCwicCIsMTcpLFBlKDEsIiBWaWV3Ym94ZXMgbGltaXQ6ICIpLGdlKDIsInNwYW4iLDcpLFBlKDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoMyksbHIoYS5saWNl''@;'; put 'put ''bmNlU3RhdGUudmFsdWUudmlld2JveF9saW1pdCl9fWZ1bmN0aW9uIFA1dChsLGMpe2lmKDEmbCYmKGdlKDAsInAiLDE3KSxQZSgxLCIgTGluZWFnZSBkYWlseSBsaW1pdDogIiksZ2UoMiwic3BhbiIsNyksUGUoMyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxscihhLmxpY2Vu''@;'; put 'put ''Y2VTdGF0ZS52YWx1ZS5saW5lYWdlX2RhaWx5X2xpbWl0KX19ZnVuY3Rpb24gRjV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwxOSksUGUoMSwiIFJlZnJlc2ggRGF0YSBMaW5lYWdlICIpLGdlKDIsImJ1dHRvbiIsMjApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gX3QoYSksYnQoTmUoMikucmVmcmVzaERhdGFMaW5lYWdlKCkpfSksUGUoMywiIFJFRlJFU0ggIiksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSgyKSxSZSgiY2xyTG9hZGluZyIsYS5yZWZyZXNoaW5nRGF0YUxpbmVhZ2UpfX1mdW5jdGlvbiBONXQobCxjKXtpZigxJmwpe2Nv''@;'; put 'put ''bnN0IGE9U24oKTtWcigwKSxndCgxLEY1dCw0LDEsImRpdiIsMTgpLGdlKDIsImRpdiIsMTkpLFBlKDMsIiBSZWZyZXNoIERhdGEgQ2F0YWxvZyAiKSxnZSg0LCJidXR0b24iLDIwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkucmVmcmVzaERhdGFDYXRhbG9n''@;'; put 'put ''KCkpfSksUGUoNSwiIFJFRlJFU0ggIiksbWUoKSgpLGdlKDYsImRpdiIsMTkpLFBlKDcsIiBEb3dubG9hZCBDb25maWd1cmF0aW9uICIpLGdlKDgsImJ1dHRvbiIsMjEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5kb3dubG9hZENvbmZpZ3VyYXRpb24oKSl9''@;'; put 'put ''KSxQZSg5LCIgRE9XTkxPQUQgIiksbWUoKSgpLGdlKDEwLCJkaXYiLDE5KSxQZSgxMSwiIFVwZGF0ZSBMaWNlbmNlIEtleSAiKSxnZSgxMiwiYnV0dG9uIiwyMiksUGUoMTMsIiBVUERBVEUgIiksbWUoKSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIlNBUzki''@;'; put 'put ''PT09YS5zZXJ2ZXJUeXBlKSxfZSgzKSxSZSgiY2xyTG9hZGluZyIsYS5yZWZyZXNoaW5nRGF0YUNhdGFsb2cpfX1jb25zdCBINXQ9W3twYXRoOiIiLGNvbXBvbmVudDooKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYpe3RoaXMuYXBwU2VydmljZT1hLHRoaXMuc2FzU2VydmljZT1k''@;'; put 'put ''LHRoaXMubGljZW5jZVNlcnZpY2U9aCx0aGlzLmFwcFNldHRpbmdzU2VydmljZT1mLHRoaXMuYXBwSW5mbz17YWRhcHRlclZlcnNpb246IjQuMTAuMiIsYXBwVmVyc2lvbjoidjYuMTIuMiIucmVwbGFjZSgidiIsIiIpLGJ1aWxkVGltZXN0YW1wOk5yZSgpKHBhcnNlSW50KCIxNzM3OTc3NDAz''@;'; put 'put ''NTkwIikpLmZvcm1hdCgiREQtTU1NLVlZWVkgSEg6TU0iKX0sdGhpcy5odHRwPSJodHRwOiI9PT1sb2NhdGlvbi5wcm90b2NvbCx0aGlzLnJlZnJlc2hpbmdEYXRhQ2F0YWxvZz0hMSx0aGlzLnJlZnJlc2hpbmdEYXRhTGluZWFnZT0hMSx0aGlzLnJlc3BvbnNlPSJObyByZXNwb25zZSIsdGhp''@;'; put 'put ''cy5yZXNwb25zZU1vZGFsPSExLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMubGljZW5jZVN0YXRlPXRoaXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuc2VydmVyVHlwZT10aGlzLnNhc1NlcnZpY2UuZ2V0U2VydmVyVHlwZSgpLHRoaXMubGljZW5jZUluZm89dGhpcy5saWNlbmNl''@;'; put 'put ''U2VydmljZS5nZXRMaWNlbnNlS2V5RGF0YSgpLHRoaXMuZW52aXJvbm1lbnRJbmZvPXRoaXMuYXBwU2VydmljZS5nZXRFbnZpcm9ubWVudEluZm8oKSx0aGlzLnNldHRpbmdzPXRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnZhbHVlLHRoaXMuZW52aXJvbm1lbnRJbmZvLkFVVE9F''@;'; put 'put ''WEVDJiYodGhpcy5lbnZpcm9ubWVudEluZm8uQVVUT0VYRUM9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuZW52aXJvbm1lbnRJbmZvLkFVVE9FWEVDKSksdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc3Vic2NyaWJlKHY9Pnt0aGlzLnNldHRpbmdzPXZ9KX1uZ09uSW5pdCgpe31z''@;'; put 'put ''ZXR0aW5nQ2hhbmdlKGEpe3RoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLnNldEFwcFNldHRpbmdzKHRoaXMuc2V0dGluZ3MpfWRvd25sb2FkQ29uZmlndXJhdGlvbigpe2xldCBhPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLGQ9YS5zZXJ2ZXJVcmwsaD1hLmFwcExvYyxmPXRoaXMu''@;'; put 'put ''c2FzU2VydmljZS5nZXRFeGVjdXRpb25QYXRoKCk7d2luZG93Lm9wZW4oZCtmKyIvP19wcm9ncmFtPSIraCsiL3NlcnZpY2VzL2FkbWluL2V4cG9ydGNvbmZpZyIpfXJlZnJlc2hEYXRhQ2F0YWxvZygpe3RoaXMucmVmcmVzaGluZ0RhdGFDYXRhbG9nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1''@;'; put 'put ''ZXN0KCJhZG1pbi9yZWZyZXNoY2F0YWxvZyIsbnVsbCkudGhlbihhPT57dGhpcy5yZXNwb25zZT10aGlzLnBhcnNlUmVzcG9uc2UoYS5hZGFwdGVyUmVzcG9uc2UpLHRoaXMucmVzcG9uc2VNb2RhbD0hMH0pLmNhdGNoKGE9Pnt0aGlzLnJlc3BvbnNlPXRoaXMucGFyc2VSZXNwb25zZShhLmFk''@;'; put 'put ''YXB0ZXJSZXNwb25zZSksdGhpcy5yZXNwb25zZU1vZGFsPSEwfSkuZmluYWxseSgoKT0+e3RoaXMucmVmcmVzaGluZ0RhdGFDYXRhbG9nPSExfSl9cmVmcmVzaERhdGFMaW5lYWdlKCl7dGhpcy5yZWZyZXNoaW5nRGF0YUxpbmVhZ2U9ITAsdGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoImFkbWlu''@;'; put 'put ''L3JlZnJlc2h0YWJsZWxpbmVhZ2UiLG51bGwpLnRoZW4oYT0+e3RoaXMucmVzcG9uc2U9dGhpcy5wYXJzZVJlc3BvbnNlKGEuYWRhcHRlclJlc3BvbnNlKSx0aGlzLnJlc3BvbnNlTW9kYWw9ITB9KS5jYXRjaChhPT57dGhpcy5yZXNwb25zZT10aGlzLnBhcnNlUmVzcG9uc2UoYS5hZGFwdGVy''@;'; put 'put ''UmVzcG9uc2UpLHRoaXMucmVzcG9uc2VNb2RhbD0hMH0pLmZpbmFsbHkoKCk9Pnt0aGlzLnJlZnJlc2hpbmdEYXRhTGluZWFnZT0hMX0pfXBhcnNlUmVzcG9uc2UoYSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP0pTT04uc3RyaW5naWZ5KGEpOmF9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUoUEkpLEplKHZhKSxKZShBMCksSmUoU0kpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1zeXN0ZW0iXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjEzOCx2YXJz''@;'; put 'put ''OjM2LGNvbnN0czpbWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIiwicC0xMCIsImQtZmxleCIsImNsci1mbGV4LWNvbHVtbiIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJ0ZXh0LWNlbnRlciIsIm0tMCJdLFsxLCJ3LTEwMCIs''@;'; put 'put ''ImxpZ2h0Il0sWzEsImNvbnRlbnQtYm94IiwiZC1mbGV4IiwiY2xyLWZsZXgtY29sdW1uIl0sWzEsInN5cy1pbmZvIiwiZC1mbGV4IiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJjbHItZmxleC1jb2x1bW4iLCJjbHItZmxleC1sZy1yb3ciXSxbImNkcy10ZXh0Iiwic3Vic2VjdGlv''@;'; put 'put ''biIsMSwibWItMTAiXSxbMSwiZGFyayJdLFsiY2RzLXRleHQiLCJsYWJlbCIsMSwibS0wIl0sWzEsImQtZmxleCIsImNsci1qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIl0sWyJjbGFzcyIsIm0tMCIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzMsImNsck1vZGFsT3BlbkNoYW5nZSIsImNsck1v''@;'; put 'put ''ZGFsT3BlbiJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWzEsIm0tMCJdLFsiY2xhc3MiLCJhZG1pbi1hY3Rpb24iLDQsIm5nSWYi''@;'; put 'put ''XSxbMSwiYWRtaW4tYWN0aW9uIl0sWzEsImJ0biIsImJ0bi1pbmZvIiwiYnRuLXNtIiwzLCJjbGljayIsImNsckxvYWRpbmciXSxbMSwiYnRuIiwiYnRuLWluZm8iLCJidG4tc20iLDMsImNsaWNrIl0sWyJyb3V0ZXJMaW5rIiwiL2xpY2Vuc2luZy91cGRhdGUiLDEsImJ0biIsImJ0bi1pbmZv''@;'; put 'put ''IiwiYnRuLXNtIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGQsaCl7MSZkJiYoZ2UoMCwiZGl2IiwwKSgxLCJkaXYiLDEpKDIsImg0IiwyKSxQZSgzLCJTeXN0ZW0gaW5mb3JtYXRpb24iKSxtZSgpLFl0KDQsImhyIiwzKSxnZSg1LCJkaXYiLDQpKDYsImRpdiIsNSkoNywiZGl2IikoOCwiaDYiLDYp''@;'; put 'put ''LFBlKDksIiBFbnZpcm9ubWVudCBEZXRhaWxzICIpLFl0KDEwLCJzcGFuIiw3KSxtZSgpLGdlKDExLCJwIiw4KSxQZSgxMiwiIFNZU1NJVEU6ICIpLGdlKDEzLCJzcGFuIiw3KSxQZSgxNCksbWUoKSgpLGdlKDE1LCJwIiw4KSxQZSgxNiwiIFNZU1NDUEw6ICIpLGdlKDE3LCJzcGFuIiw3KSxQ''@;'; put 'put ''ZSgxOCksbWUoKSgpLGdlKDE5LCJwIiw4KSxQZSgyMCwiIFNZU1RDUElQSE9TVE5BTUU6ICIpLGdlKDIxLCJzcGFuIiw3KSxQZSgyMiksbWUoKSgpLGdlKDIzLCJwIiw4KSxQZSgyNCwiIFNZU1ZMT05HOiAiKSxnZSgyNSwic3BhbiIsNyksUGUoMjYpLG1lKCkoKSxnZSgyNywicCIsOCksUGUo''@;'; put 'put ''MjgsIiBNRU1TSVpFOiAiKSxnZSgyOSwic3BhbiIsNyksUGUoMzApLG1lKCkoKSxnZSgzMSwicCIsOCksUGUoMzIsIiBTWVNQUk9DRVNTTU9ERTogIiksZ2UoMzMsInNwYW4iLDcpLFBlKDM0KSxtZSgpKCksZ2UoMzUsInAiLDgpLFBlKDM2LCIgU1lTSE9TVE5BTUU6ICIpLGdlKDM3LCJzcGFu''@;'; put 'put ''Iiw3KSxQZSgzOCksbWUoKSgpLGdlKDM5LCJwIiw4KSxQZSg0MCwiIFNZU1VTRVJJRDogIiksZ2UoNDEsInNwYW4iLDcpLFBlKDQyKSxtZSgpKCksZ2UoNDMsInAiLDgpLFBlKDQ0LCIgU1lTSE9TVElORk9MT05HOiAiKSxnZSg0NSwic3BhbiIsNyksUGUoNDYpLG1lKCkoKSxnZSg0NywicCIs''@;'; put 'put ''OCksUGUoNDgsIiBTWVNFTkNPRElORzogIiksZ2UoNDksInNwYW4iLDcpLFBlKDUwKSxtZSgpKCksZ2UoNTEsInAiLDgpLFBlKDUyLCIgQVVUT0VYRUM6ICIpLGdlKDUzLCJzcGFuIiw3KSxQZSg1NCksbWUoKSgpKCksZ2UoNTUsImRpdiIsOSkoNTYsImRpdiIpKDU3LCJoNiIsNiksUGUoNTgs''@;'; put 'put ''IiBEYXRhIENvbnRyb2xsZXIgRGV0YWlscyAiKSxZdCg1OSwic3BhbiIsNyksbWUoKSxnZSg2MCwicCIsOCksUGUoNjEsIiBBcHBsaWNhdGlvbiB2ZXJzaW9uOiAiKSxnZSg2Miwic3BhbiIsNyksUGUoNjMpLG1lKCkoKSxnZSg2NCwicCIsOCksUGUoNjUsIiBCdWlsZCB0aW1lc3RhbXA6ICIp''@;'; put 'put ''LGdlKDY2LCJzcGFuIiw3KSxQZSg2NyksbWUoKSgpLGdlKDY4LCJwIiw4KSxQZSg2OSwiIEFkYXB0ZXIgdmVyc2lvbjogIiksZ2UoNzAsInNwYW4iLDcpLFBlKDcxKSxtZSgpKCksZ2UoNzIsInAiLDgpLFBlKDczLCIgSFRUUDogIiksZ2UoNzQsInNwYW4iLDcpLFBlKDc1KSxtZSgpKCksZ2Uo''@;'; put 'put ''NzYsInAiLDgpLFBlKDc3LCIgREMgQWRtaW4gR3JvdXA6ICIpLGdlKDc4LCJzcGFuIiw3KSxQZSg3OSksbWUoKSgpLGdlKDgwLCJwIiw4KSxQZSg4MSwiIEFwcCBMb2NhdGlvbjogIiksZ2UoODIsInNwYW4iLDcpLFBlKDgzKSxtZSgpKCkoKSgpLGdlKDg0LCJkaXYiKSg4NSwiaDYiLDYpLFBl''@;'; put 'put ''KDg2LCIgTGljZW5jZSBkZXRhaWxzICIpLFl0KDg3LCJzcGFuIiw3KSxtZSgpLGdlKDg4LCJwIiw4KSxQZSg4OSwiIFZhbGlkIHVudGlsOiAiKSxnZSg5MCwic3BhbiIsNyksUGUoOTEpLG1lKCkoKSxnZSg5MiwicCIsOCksUGUoOTMsIiBVc2VycyBhbGxvd2VkOiAiKSxnZSg5NCwic3BhbiIs''@;'; put 'put ''NyksUGUoOTUpLG1lKCkoKSxnZSg5NiwicCIsOCksUGUoOTcsIiBTaXRlIElEczogIiksZ2UoOTgsInNwYW4iLDcpLFBlKDk5KSxtZSgpKCksZ2UoMTAwLCJwIiw4KSxQZSgxMDEsIiBGcmVlIFRpZXI6ICIpLGdlKDEwMiwic3BhbiIsNyksUGUoMTAzKSxtZSgpKCksZ3QoMTA0LGs1dCw0LDEs''@;'; put 'put ''InAiLDEwKSgxMDUsQTV0LDQsMSwicCIsMTApKDEwNixENXQsNCwxLCJwIiwxMCkoMTA3LEk1dCw0LDEsInAiLDEwKSgxMDgsUjV0LDQsMSwicCIsMTApKDEwOSxMNXQsNCwxLCJwIiwxMCkoMTEwLE81dCw0LDEsInAiLDEwKSgxMTEsUDV0LDQsMSwicCIsMTApLGdlKDExMiwicCIsOCksUGUo''@;'; put 'put ''MTEzLCIgVmlld2JveGVzOiAiKSxnZSgxMTQsInNwYW4iLDcpLFBlKDExNSksbWUoKSgpLGdlKDExNiwicCIsOCksUGUoMTE3LCIgRmlsZSBVcGxvYWQ6ICIpLGdlKDExOCwic3BhbiIsNyksUGUoMTE5KSxtZSgpKCksZ2UoMTIwLCJwIiw4KSxQZSgxMjEsIiBFZGl0IHJlY29yZDogIiksZ2Uo''@;'; put 'put ''MTIyLCJzcGFuIiw3KSxQZSgxMjMpLG1lKCkoKSxnZSgxMjQsInAiLDgpLFBlKDEyNSwiIEFkZCByZWNvcmQ6ICIpLGdlKDEyNiwic3BhbiIsNyksUGUoMTI3KSxtZSgpKCkoKSgpLFl0KDEyOCwiaHIiLDMpLGd0KDEyOSxONXQsMTQsMiwibmctY29udGFpbmVyIiwxMSksbWUoKSgpKCksZ2Uo''@;'; put 'put ''MTMwLCJjbHItbW9kYWwiLDEyKSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC5yZXNwb25zZU1vZGFsLHYpfHwoaC5yZXNwb25zZU1vZGFsPXYpLHZ9KSxnZSgxMzEsImgzIiwxMyksUGUoMTMyLCJSZXNwb25zZSIpLG1lKCksZ2UoMTMzLCJkaXYiLDE0''@;'; put 'put ''KSxQZSgxMzQpLG1lKCksZ2UoMTM1LCJkaXYiLDE1KSgxMzYsImJ1dHRvbiIsMTYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gaC5yZXNwb25zZU1vZGFsPSExfSksUGUoMTM3LCIgT2sgIiksbWUoKSgpKCkpLDImZCYmKF9lKDE0KSxscihudWxsPT1oLmVudmlyb25tZW50SW5mbz9u''@;'; put 'put ''dWxsOmguZW52aXJvbm1lbnRJbmZvLlNZU1NJVEUpLF9lKDQpLGxyKG51bGw9PWguZW52aXJvbm1lbnRJbmZvP251bGw6aC5lbnZpcm9ubWVudEluZm8uU1lTU0NQTCksX2UoNCksbHIobnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5TWVNUQ1BJUEhPU1RO''@;'; put 'put ''QU1FKSxfZSg0KSxscihudWxsPT1oLmVudmlyb25tZW50SW5mbz9udWxsOmguZW52aXJvbm1lbnRJbmZvLlNZU1ZMT05HKSxfZSg0KSxscihudWxsPT1oLmVudmlyb25tZW50SW5mbz9udWxsOmguZW52aXJvbm1lbnRJbmZvLk1FTVNJWkUpLF9lKDQpLGxyKG51bGw9PWguZW52aXJvbm1lbnRJ''@;'; put 'put ''bmZvP251bGw6aC5lbnZpcm9ubWVudEluZm8uU1lTUFJPQ0VTU01PREUpLF9lKDQpLGxyKG51bGw9PWguZW52aXJvbm1lbnRJbmZvP251bGw6aC5lbnZpcm9ubWVudEluZm8uU1lTSE9TVE5BTUUpLF9lKDQpLGxyKG51bGw9PWguZW52aXJvbm1lbnRJbmZvP251bGw6aC5lbnZpcm9ubWVudElu''@;'; put 'put ''Zm8uU1lTVVNFUklEKSxfZSg0KSxscihudWxsPT1oLmVudmlyb25tZW50SW5mbz9udWxsOmguZW52aXJvbm1lbnRJbmZvLlNZU0hPU1RJTkZPTE9ORyksX2UoNCksbHIobnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5TWVNFTkNPRElORyksX2UoNCksbHIo''@;'; put 'put ''bnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5BVVRPRVhFQyksX2UoOSksbHIoaC5hcHBJbmZvLmFwcFZlcnNpb24pLF9lKDQpLGxyKGguYXBwSW5mby5idWlsZFRpbWVzdGFtcCksX2UoNCksbHIoaC5hcHBJbmZvLmFkYXB0ZXJWZXJzaW9uKSxfZSg0KSxs''@;'; put 'put ''cihoLmh0dHA/IllFUyI6Ik5PIiksX2UoNCksbHIobnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5EQ19BRE1JTl9HUk9VUCksX2UoNCksbHIobnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5BUFBfTE9DKSxfZSg4KSxs''@;'; put 'put ''cihudWxsPT1oLmxpY2VuY2VJbmZvP251bGw6aC5saWNlbmNlSW5mby52YWxpZF91bnRpbCksX2UoNCksbHIobnVsbD09aC5saWNlbmNlSW5mbz9udWxsOmgubGljZW5jZUluZm8udXNlcnNfYWxsb3dlZCksX2UoNCksbHIobnVsbD09aC5saWNlbmNlSW5mbz9udWxsOmgubGljZW5jZUluZm8u''@;'; put 'put ''c2l0ZV9pZF9tdWx0aXBsZSksX2UoNCksbHIobnVsbCE9aC5saWNlbmNlSW5mbyYmaC5saWNlbmNlSW5mby5kZW1vPyJZRVMiOiJOTyIpLF9lKCksUmUoIm5nSWYiLGgubGljZW5jZVN0YXRlLnZhbHVlLnZpZXdlcl9yb3dzX2FsbG93ZWQhPT1oLkluZmluaXR5KSxfZSgpLFJlKCJuZ0lmIixo''@;'; put 'put ''LmxpY2VuY2VTdGF0ZS52YWx1ZS5lZGl0b3Jfcm93c19hbGxvd2VkIT09aC5JbmZpbml0eSksX2UoKSxSZSgibmdJZiIsaC5saWNlbmNlU3RhdGUudmFsdWUuc3RhZ2Vfcm93c19hbGxvd2VkIT09aC5JbmZpbml0eSksX2UoKSxSZSgibmdJZiIsaC5saWNlbmNlU3RhdGUudmFsdWUuaGlzdG9y''@;'; put 'put ''eV9yb3dzX2FsbG93ZWQhPT1oLkluZmluaXR5KSxfZSgpLFJlKCJuZ0lmIixoLmxpY2VuY2VTdGF0ZS52YWx1ZS5zdWJtaXRfcm93c19saW1pdCE9PWguSW5maW5pdHkpLF9lKCksUmUoIm5nSWYiLGgubGljZW5jZVN0YXRlLnZhbHVlLnRhYmxlc19pbl9saWJyYXJ5X2xpbWl0IT09aC5JbmZp''@;'; put 'put ''bml0eSksX2UoKSxSZSgibmdJZiIsaC5saWNlbmNlU3RhdGUudmFsdWUudmlld2JveF9saW1pdCE9PWguSW5maW5pdHkpLF9lKCksUmUoIm5nSWYiLGgubGljZW5jZVN0YXRlLnZhbHVlLmxpbmVhZ2VfZGFpbHlfbGltaXQhPT1oLkluZmluaXR5KSxfZSg0KSxscihoLmxpY2VuY2VTdGF0ZS52''@;'; put 'put ''YWx1ZS52aWV3Ym94PyJZRVMiOiJOTyIpLF9lKDQpLGxyKGgubGljZW5jZVN0YXRlLnZhbHVlLmZpbGVVcGxvYWQ/IllFUyI6Ik5PIiksX2UoNCksbHIoaC5saWNlbmNlU3RhdGUudmFsdWUuZWRpdFJlY29yZD8iWUVTIjoiTk8iKSxfZSg0KSxscihoLmxpY2VuY2VTdGF0ZS52YWx1ZS5hZGRS''@;'; put 'put ''ZWNvcmQ/IllFUyI6Ik5PIiksX2UoMiksUmUoIm5nSWYiLDE9PT0obnVsbD09aC5lbnZpcm9ubWVudEluZm8/bnVsbDpoLmVudmlyb25tZW50SW5mby5JU0FETUlOKSksX2UoKSxZcigiY2xyTW9kYWxPcGVuIixoLnJlc3BvbnNlTW9kYWwpLF9lKDQpLG1yKCIgIixoLnJlc3BvbnNlLCIgIikp''@;'; put 'put ''fSxkZXBlbmRlbmNpZXM6WyRpLGswLFBjLGl1LGwwLERoXSxzdHlsZXM6WyIuY29udGVudC1ib3hbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxMjg5cHh9LnN5cy1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSA+IGRpdltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxfS5zeXMtaW5mb1tf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV0gICBkaXZbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZCgyKXttYXJnaW46MCAzMHB4fS5hZG1pbi1hY3Rpb25bX25nY29udGVudC0lQ09NUCVdLCAudXNlci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6''@;'; put 'put ''c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo1cHggMTBweDtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MXB4IHNvbGlkICNkZWRlZGU7bWFyZ2luLWJvdHRvbTo1cHh9LmFkbWluLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdLCAudXNlci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4td2lkdGg6MTAycHh9LmRhcmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tbGVmdDo1cHh9QG1lZGlhIChtYXgtd2lkdGg6IDk5M3B4''@;'; put 'put ''KXsuc3lzLWluZm9bX25nY29udGVudC0lQ09NUCVdICAgZGl2W19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQoMil7bWFyZ2luOjB9LnN5cy1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGRpdltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjIwcHggMH19Il19KX19cmV0dXJuIGx9KSgp''@;'; put 'put ''fV07bGV0IFY1dD0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbQ2MuZm9yQ2hpbGQoSDV0KSxD''@;'; put 'put ''Y119KX19cmV0dXJuIGx9KSgpLEI1dD0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bH0pfXN0YXRpY3t0aGlzLlx1MDI3NWluaj1zaSh7aW1wb3J0czpbb28sVjV0''@;'; put 'put ''LGMwLHJjXX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gajV0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uIHo1dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwxMyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUo''@;'; put 'put ''Mik7cmV0dXJuIGguZ3JvdXBTZWFyY2g9IiIsYnQoaC5ncm91cExpc3RPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIFU1dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDcpKDEsImRpdiIsOCkoMiwiaW5wdXQiLDksMCksV3IoIm5nTW9kZWxDaGFu''@;'; put 'put ''Z2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5ncm91cFNlYXJjaCxoKXx8KGYuZ3JvdXBTZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuZ3JvdXBMaXN0T25GaWx0ZXIoKSl9KSxtZSgpLGd0KDQs''@;'; put 'put ''ajV0LDEsMCwiY2xyLWljb24iLDEwKSg1LHo1dCwxLDAsImNsci1pY29uIiwxMSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1HaSgzKSxkPU5lKCk7X2UoMiksWXIoIm5nTW9kZWwiLGQuZ3JvdXBTZWFyY2gpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lm''@;'; put 'put ''IixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gWjV0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCkuJGltcGxpY2l0O3JldHVybiBidChOZSgpLmdyb3VwT25DbGljayho''@;'; put 'put ''KSl9KSxnZSgxLCJwIiwxNiksWXQoMiwiY2xyLWljb24iLDE3KSxQZSgzKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0LGQ9TmUoKTtwcigiYWN0aXZlIixhLkdST1VQVVJJPT09ZC5ncm91cFVyaSksX2UoMyksbXIoIiAiLGEuR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9u''@;'; put 'put ''IFk1dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsWjV0LDQsMywiY2xyLXRyZWUtbm9kZSIsMTQpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwhYS5oaWRkZW4pfX1mdW5jdGlvbiBXNXQobCxjKXsxJmwmJihnZSgwLCJkaXYiLDE4KSgxLCJzcGFuIiwx''@;'; put 'put ''OSksUGUoMiwiIExvYWRpbmcuLi4gIiksbWUoKSgpKX1mdW5jdGlvbiBHNXQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDIxKSgxLCJkaXYiLDIyKSgyLCJ0YWJsZSIsMjQpKDMsInRib2R5IikoNCwidHIiKSg1LCJ0ZCIsMjUpKDYsInAiLDI2KSg3LCJiIiksUGUoOCksbWUoKSgpKCkoKSxn''@;'; put 'put ''ZSg5LCJ0ciIpKDEwLCJ0ZCIsMjUpKDExLCJpIiksUGUoMTIpLG1lKCkoKSgpKCkoKSgpKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSg4KSxscihhLmdyb3VwTmFtZSksX2UoNCksbHIoYS5ncm91cERlc2N8fCJubyBkZXNjcmlwdGlvbiIpfX1mdW5jdGlvbiAkNXQobCxjKXsxJmwmJihnZSgw''@;'; put 'put ''LCJoNSIpLFBlKDEsIk5vIE1lbWJlcnMgUHJlc2VudCIpLG1lKCkpfWZ1bmN0aW9uIHE1dChsLGMpezEmbCYmKFZyKDApLGdlKDEsInRkIiwzMSkoMiwiYiIpLFBlKDMsIk5BTUUiKSxtZSgpKCksZ2UoNCwidGQiLDMxKSg1LCJiIiksUGUoNiwiRU1BSUwiKSxtZSgpKCksZ2UoNywidGQiLDMx''@;'; put 'put ''KSg4LCJiIiksUGUoOSwiQ1JFQVRFRCIpLG1lKCkoKSxnZSgxMCwidGQiLDMyKSgxMSwiYiIpLFBlKDEyLCJVUERBVEVEIiksbWUoKSgpLEJyKCkpfWZ1bmN0aW9uIEs1dChsLGMpezEmbCYmKFZyKDApLGdlKDEsInRkIiwzMSkoMiwiYiIpLFBlKDMsIklEIiksbWUoKSgpLGdlKDQsInRkIiwz''@;'; put 'put ''MSkoNSwiYiIpLFBlKDYsIkRJU1BMQVkgTkFNRSIpLG1lKCkoKSxnZSg3LCJ0ZCIsMzEpKDgsImIiKSxQZSg5LCJVU0VSIE5BTUUiKSxtZSgpKCksQnIoKSl9ZnVuY3Rpb24gWDV0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwidGQiLDMyKSxQZSgyKSxtZSgpLGdlKDMsInRkIiwzMiksUGUo''@;'; put 'put ''NCksbWUoKSxnZSg1LCJ0ZCIsMzIpLFBlKDYpLG1lKCksZ2UoNywidGQiLDMyKSxQZSg4KSxtZSgpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgyKSxscihhLk1FTUJFUk5BTUUpLF9lKDIpLGxyKGEuRU1BSUwpLF9lKDIpLGxyKGEuTUVNQkVSQ1JFQVRFRCksX2UoMiks''@;'; put 'put ''bHIoYS5NRU1CRVJVUERBVEVEKX19ZnVuY3Rpb24gSjV0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwidGQiLDMyKSxQZSgyKSxtZSgpLGdlKDMsInRkIiwzMiksUGUoNCksbWUoKSxnZSg1LCJ0ZCIsMzIpLFBlKDYpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O19l''@;'; put 'put ''KDIpLGxyKGEuSUQpLF9lKDIpLGxyKGEuRElTUExBWU5BTUUpLF9lKDIpLGxyKGEuVVNFUk5BTUUpfX1mdW5jdGlvbiBRNXQobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIsMzMpLGd0KDEsWDV0LDksNCwibmctY29udGFpbmVyIiw2KSgyLEo1dCw3LDMsIm5nLWNvbnRhaW5lciIsNiksbWUoKSks''@;'; put 'put ''MiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoNCk7UmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIrKGEuVVJJTUVNfHxhLklEKSksX2UoKSxSZSgibmdJZiIsZC5zZXJ2ZXJUeXBlPT09ZC5TZXJ2ZXJUeXBlLlNhczkpLF9lKCksUmUoIm5nSWYiLGQuc2VydmVyVHlw''@;'; put 'put ''ZT09PWQuU2VydmVyVHlwZS5TYXNqcyl9fWZ1bmN0aW9uIGU2dChsLGMpe2lmKDEmbCYmKGdlKDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpLGd0KDMscTV0LDEzLDAsIm5nLWNvbnRhaW5lciIsNikoNCxLNXQsMTAsMCwibmctY29udGFpbmVyIiw2KSxtZSgpKCksZ2UoNSwidGJv''@;'; put 'put ''ZHkiKSxndCg2LFE1dCwzLDMsInRyIiwzMCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoMyksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXM5KSxfZSgpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzanMpLF9lKDIpLFJlKCJu''@;'; put 'put ''Z0Zvck9mIixhLmdyb3VwTWVtYmVycyl9fWZ1bmN0aW9uIHQ2dChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIpKDEsImgzIiksUGUoMiksbWUoKSxndCgzLCQ1dCwyLDAsImg1Iiw2KSxnZSg0LCJkaXYiLDI3KSxndCg1LGU2dCw3LDMsInRhYmxlIiwyOCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9''@;'; put 'put ''TmUoMik7X2UoMiksbXIoIk1FTUJFUlMgKCIsYS5ncm91cE1lbWJlckNvdW50LCIpIiksX2UoKSxSZSgibmdJZiIsMD09YS5ncm91cE1lbWJlckNvdW50KSxfZSgyKSxSZSgibmdJZiIsMCE9YS5ncm91cE1lbWJlckNvdW50KX19ZnVuY3Rpb24gbjZ0KGwsYyl7MSZsJiYoZ2UoMCwiaDUiKSxQ''@;'; put 'put ''ZSgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSxtZSgpKX1mdW5jdGlvbiByNnQobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIsMzMpKDEsInRkIiwzMiksUGUoMiksbWUoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIrYS5N''@;'; put 'put ''RU1CRVJJRCksX2UoMiksbHIoYS5NRU1CRVJOQU1FKX19ZnVuY3Rpb24gaTZ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGFibGUiLDI5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiKSg0LCJiIiksUGUoNSksbWUoKSgpKCkoKSxnZSg2LCJ0Ym9keSIpLGd0KDcscjZ0LDMsMiwidHIiLDMwKSxt''@;'; put 'put ''ZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSg1KSxtcigiTUVNQkVSUyAoIixhLmdyb3VwTWVtYmVyQ291bnQsIikiKSxfZSgyKSxSZSgibmdGb3JPZiIsYS5ncm91cE1lbWJlcnMpfX1mdW5jdGlvbiBvNnQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiKSgxLCJoMyIpLFBlKDIpLG1lKCks''@;'; put 'put ''Z3QoMyxuNnQsMiwwLCJoNSIsNiksZ2UoNCwiZGl2IiwyNyksZ3QoNSxpNnQsOCwyLCJ0YWJsZSIsMjgpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDIpLGxyKGEuZ3JvdXBOYW1lKSxfZSgpLFJlKCJuZ0lmIiwwPT1hLmdyb3VwTWVtYmVyQ291bnQpLF9lKDIpLFJlKCJuZ0lmIiww''@;'; put 'put ''IT1hLmdyb3VwTWVtYmVyQ291bnQpfX1mdW5jdGlvbiBzNnQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiKSxndCgxLEc1dCwxMywyLCJkaXYiLDIwKSxnZSgyLCJkaXYiLDIxKSgzLCJkaXYiLDIyKSg0LCJkaXYiLDIzKSxndCg1LHQ2dCw2LDMsImRpdiIsNikoNixvNnQsNiwzLCJkaXYiLDYp''@;'; put 'put ''LFl0KDcsImJyIiksbWUoKSgpKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlIT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLF9lKDQpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGUhPT1hLlNlcnZlclR5cGUuU2FzVml5YSksX2UoKSxSZSgibmdJZiIsYS5z''@;'; put 'put ''ZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpfX1sZXQgTDRlPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2KXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9ZCx0aGlzLnJvdXRlcj1oLHRoaXMubG9jYXRpb249Zix0aGlzLnJvdXRlPXYsdGhp''@;'; put 'put ''cy5ncm91cFNlYXJjaD0iIix0aGlzLnBhcmFtUHJlc2VudD0hMSx0aGlzLnBhcmFtVVJJPSIiLHRoaXMuZ3JvdXBVcmk9IiIsdGhpcy5ncm91cE5hbWU9IiIsdGhpcy5ncm91cERlc2M9IiIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgeWQuU0FTanNDb25maWcsdGhpcy5pc1ZpeWE9ITEsdGhpcy5s''@;'; put 'put ''b2FkaW5nPSExLHRoaXMuU2VydmVyVHlwZT1CdS5ZLHRoaXMuc2FzanNDb25maWc9dGhpcy5zYXNTZXJ2aWNlLmdldFNhc2pzQ29uZmlnKCksdGhpcy5zZXJ2ZXJUeXBlPXRoaXMuc2FzU2VydmljZS5nZXRTZXJ2ZXJUeXBlKCksIlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJU''@;'; put 'put ''eXBlJiYodGhpcy5pc1ZpeWE9ITApfW5nT25Jbml0KCl7SG4udmlld2VyLmN1cnJlbnRTZWxlY3Rpb249InZpZXcvdXNlcm5hdi9ncm91cHMiLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSYmKHRoaXMucGFyYW1QcmVzZW50PSEwLHRoaXMucGFyYW1VUkk9dGhpcy5y''@;'; put 'put ''b3V0ZS5zbmFwc2hvdC5wYXJhbXMudXJpKSxIbi51c2VybmF2Lmdyb3VwTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50Pyh0aGlzLmdyb3Vwcz1Ibi51c2VybmF2Lmdyb3VwTGlzdCx0aGlzLmdyb3VwU2VhcmNoPUhuLnVzZXJuYXYuZ3JvdXBTZWFyY2gpOih2b2lkIDA9PT1Ibi51c2VybmF2Lmdy''@;'; put 'put ''b3VwTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy9ncm91cHM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihhPT5hLnRleHQoKSkudGhlbihh''@;'; put 'put ''PT57bGV0IGg9SlNPTi5wYXJzZShhKS5pdGVtcy5tYXAoZj0+KHtHUk9VUFVSSTpmLmlkLEdST1VQTkFNRTpmLm5hbWUsR1JPVVBERVNDOmYuZGVzY3JpcHRpb259KSk7dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBzPWgsSG4udXNlcm5hdi5ncm91cExpc3Q9aH0pOnRoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZS5yZXF1ZXN0KCJwdWJsaWMvZ2V0Z3JvdXBzIixudWxsKS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cHM9YS5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzLEhuLnVzZXJuYXYuZ3JvdXBMaXN0PWEuYWRhcHRlclJlc3BvbnNlLmdyb3Vwc30pKToodGhpcy5ncm91cHM9SG4udXNl''@;'; put 'put ''cm5hdi5ncm91cExpc3QsdGhpcy5ncm91cFNlYXJjaD1Ibi51c2VybmF2Lmdyb3VwU2VhcmNoKSx0aGlzLnBhcmFtUHJlc2VudCYmKHRoaXMubG9hZGluZz0hMCx0aGlzLmlzVml5YT9mZXRjaCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCsiL2lkZW50aXRpZXMvZ3JvdXBzLyIrdGhpcy5w''@;'; put 'put ''YXJhbVVSSSsiL21lbWJlcnM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihhPT5hLnRleHQoKSkudGhlbihhPT57bGV0IGQ9SlNPTi5wYXJzZShhKTt0aGlzLmxvYWRpbmc9ITE7bGV0IGg9ZC5pdGVtcy5tYXAoZj0+KHtNRU1CRVJOQU1F''@;'; put 'put ''OmYubmFtZSxNRU1CRVJJRDpmLmlkfSkpO3RoaXMuZ3JvdXBNZW1iZXJzPWgsdGhpcy5ncm91cE1lbWJlckNvdW50PWgubGVuZ3RoLHRoaXMuZ3JvdXBVcmk9dGhpcy5wYXJhbVVSSSx0aGlzLmdyb3VwTmFtZT10aGlzLnBhcmFtVVJJfSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJu''@;'; put 'put ''YXYvdXNlcm1lbWJlcnNieWdyb3VwIix7aXdhbnQ6W3tncm91cGlkOnRoaXMucGFyYW1VUkl9XX0pLnRoZW4oZD0+e3RoaXMuZ3JvdXBNZW1iZXJzPWQuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMsdGhpcy5ncm91cE1lbWJlckNvdW50PWQuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMu''@;'; put 'put ''bGVuZ3RoLHZvaWQgMCE9PWQuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnNbMF0mJih0aGlzLmxvYWRpbmc9ITEsdGhpcy5ncm91cFVyaT1kLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzWzBdLlVSSU1FTXx8dGhpcy5wYXJhbVVSSSx0aGlzLmdyb3VwTmFtZT1kLmFkYXB0ZXJSZXNwb25z''@;'; put 'put ''ZS5zYXNtZW1iZXJzWzBdLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1kLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzWzBdLkdST1VQREVTQyx0aGlzLmdyb3VwTmFtZXx8KHRoaXMuZ3JvdXBOYW1lPXRoaXMucGFyYW1VUkkpKX0pKSl9Z3JvdXBMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBl''@;'; put 'put ''clNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMuZ3JvdXBzLHRoaXMuZ3JvdXBTZWFyY2gsIkdST1VQTkFNRSIpLEhuLnVzZXJuYXYuZ3JvdXBTZWFyY2g9dGhpcy5ncm91cFNlYXJjaH1ncm91cE9uQ2xpY2soYSl7dGhpcy5sb2FkaW5nPSEwO2xldCBkPXRoaXMucm91dGVyLnVybDt0aGlz''@;'; put 'put ''LmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD9kLnNsaWNlKDAsZC5sYXN0SW5kZXhPZigiLyIpKSsiLyIrZW5jb2RlVVJJKGEuR1JPVVBVUkkpOmQrIi8iK2VuY29kZVVSSShhLkdST1VQVVJJKSksdGhpcy5pc1ZpeWE/ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2''@;'; put 'put ''ZXJVcmwrIi9pZGVudGl0aWVzL2dyb3Vwcy8iK2EuR1JPVVBVUkkrIi9tZW1iZXJzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oaD0+aC50ZXh0KCkpLnRoZW4oaD0+e2xldCBmPUpTT04ucGFyc2UoaCk7dGhpcy5sb2FkaW5nPSExLHRo''@;'; put 'put ''aXMuZ3JvdXBVcmk9YS5HUk9VUFVSSSx0aGlzLmdyb3VwTmFtZT1hLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1hLkdST1VQREVTQztsZXQgdj1mLml0ZW1zLm1hcChTPT4oe01FTUJFUk5BTUU6Uy5uYW1lLE1FTUJFUklEOlMuaWR9KSk7dGhpcy5ncm91cE1lbWJlcnM9dix0aGlzLmdyb3Vw''@;'; put 'put ''TWVtYmVyQ291bnQ9di5sZW5ndGh9KTp0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5Z3JvdXAiLHtpd2FudDpbe2dyb3VwaWQ6YS5HUk9VUFVSSX1dfSkudGhlbihmPT57dGhpcy5sb2FkaW5nPSExLHRoaXMuZ3JvdXBVcmk9YS5HUk9VUFVSSSx0aGlzLmdy''@;'; put 'put ''b3VwTmFtZT1hLkdST1VQTkFNRSx0aGlzLmdyb3VwRGVzYz1hLkdST1VQREVTQyx0aGlzLmdyb3VwTWVtYmVycz1mLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLHRoaXMuZ3JvdXBNZW1iZXJDb3VudD1mLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLmxlbmd0aH0pfXN0YXRpY3t0aGlz''@;'; put 'put ''Llx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKHZhKSxKZShldSksSmUoSnMpLEplKG1kKSxKZShPYykpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLWdyb3VwIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWlu''@;'; put 'put ''ZXIiXSxkZWNsczo3LHZhcnM6NCxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWzEsInNpZGViYXItaGVpZ2h0Il0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbImNsYXNzIiwibG9hZGlu''@;'; put 'put ''Z1NwaW5uZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBHcm91cHMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29t''@;'; put 'put ''cGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMs''@;'; put 'put ''ImFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlzdC1wYWRkaW5nIl0sWyJzaGFwZSIsInVzZXJzIl0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbImNsYXNzIiwiY2xyLXJvdyIsNCwibmdJZiJdLFsx''@;'; put 'put ''LCJjbHItcm93Il0sWzEsImNsci1jb2wtOCJdLFsxLCJjYXJkIiwiZ3JvdXAtZGF0YSJdLFsxLCJ0YWJsZSIsImdyb3VwLWluZm8iXSxbMSwibGVmdCJdLFsxLCJncm91cC1pbmZvLXRleHQiXSxbMSwidGFibGUtY29udGFpbmVyIl0sWyJjbGFzcyIsInRhYmxlIG1lbWJlci10YWJsZSIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJ0YWJsZSIsIm1lbWJlci10YWJsZSJdLFszLCJyb3V0ZXJMaW5rIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwid2lkdGgtMjUiXSxbMSwiIl0sWzMsInJvdXRlckxpbmsiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJhcHAtc2lkZWJhciIsMSkoMSwi''@;'; put 'put ''Y2xyLXRyZWUiKSxndCgyLFU1dCw2LDMsImNsci10cmVlLW5vZGUiLDIpKDMsWTV0LDIsMSwibmctY29udGFpbmVyIiwzKSxtZSgpKCksZ2UoNCwiZGl2Iiw0KSxndCg1LFc1dCwzLDAsImRpdiIsNSkoNixzNnQsOCwzLCJkaXYiLDYpLG1lKCkpLDImZCYmKF9lKDIpLFJlKCJuZ0lmIixoLmdy''@;'; put 'put ''b3VwcyksX2UoKSxSZSgibmdGb3JPZiIsaC5ncm91cHMpLF9lKDIpLFJlKCJuZ0lmIixoLmxvYWRpbmcpLF9lKCksUmUoIm5nSWYiLGguZ3JvdXBNZW1iZXJzJiYhaC5sb2FkaW5nKSl9LGRlcGVuZGVuY2llczpbVnMsJGksazAsdWwsX2EsdWEsQWQsSDEsWWEsRWQsc3Asb3BdLHN0eWxlczpb''@;'; put 'put ''ImJvZHlbY2RzLXRoZW1lPWRhcmtdIC5ncm91cC1pbmZve2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC5ncm91cC1kYXRhe2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX0gIGJv''@;'; put 'put ''ZHlbY2RzLXRoZW1lPWRhcmtdIC5tZW1iZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjk0MDRifSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5ncm91cC1pbmZve2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93''@;'; put 'put ''OjAgMnB4IDVweCAjZGFkN2Q3fSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5ncm91cC1kYXRhe2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5tZW1iZXItdGFi''@;'; put 'put ''bGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2fS5zaWRlYmFyLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9Lmdyb3VwLWluZm8tdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOjIwcHh9Lmdyb3VwLWlu''@;'; put 'put ''Zm9bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9Lmdyb3VwLWluZm9bX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXtib3Jk''@;'; put 'put ''ZXI6MXB4IHNvbGlkO2JvcmRlci1yYWRpdXM6M3B4fS5ncm91cC1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmF1dG99Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAuZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV0g''@;'; put 'put ''ICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9Lmdyb3VwLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgLm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICAubWVtYmVyLXRhYmxl''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgt''@;'; put 'put ''d2lkdGg6IDc2OHB4KXsuZ3JvdXAtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldCFpbXBvcnRhbnR9fSJdfSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBhNnQoKXt9ZnVuY3Rpb24gZkoobCl7cmV0dXJuIG51bGw9PWw/YTZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''cXVlcnlTZWxlY3RvcihsKX19ZnVuY3Rpb24gTzRlKGwpe3JldHVybiBudWxsPT1sP1tdOkFycmF5LmlzQXJyYXkobCk/bDpBcnJheS5mcm9tKGwpfWZ1bmN0aW9uIGM2dCgpe3JldHVybltdfWZ1bmN0aW9uIFA0ZShsKXtyZXR1cm4gbnVsbD09bD9jNnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5xdWVyeVNlbGVjdG9yQWxsKGwpfX1mdW5jdGlvbiBGNGUobCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyhsKX19ZnVuY3Rpb24gTjRlKGwpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYy5tYXRjaGVzKGwpfX12YXIgaDZ0PUFycmF5LnByb3RvdHlwZS5maW5k''@;'; put 'put ''O2Z1bmN0aW9uIHA2dCgpe3JldHVybiB0aGlzLmZpcnN0RWxlbWVudENoaWxkfXZhciBtNnQ9QXJyYXkucHJvdG90eXBlLmZpbHRlcjtmdW5jdGlvbiB2NnQoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKX1mdW5jdGlvbiBINGUobCl7cmV0dXJuIG5ldyBBcnJheShsLmxlbmd0''@;'; put 'put ''aCl9ZnVuY3Rpb24gcEYobCxjKXt0aGlzLm93bmVyRG9jdW1lbnQ9bC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPWwubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9bCx0aGlzLl9fZGF0YV9fPWN9ZnVuY3Rpb24gUzZ0KGwsYyxhLGQsaCxmKXtmb3Io''@;'; put 'put ''dmFyIFMsdj0wLFY9Yy5sZW5ndGgsUT1mLmxlbmd0aDt2PFE7Kyt2KShTPWNbdl0pPyhTLl9fZGF0YV9fPWZbdl0sZFt2XT1TKTphW3ZdPW5ldyBwRihsLGZbdl0pO2Zvcig7djxWOysrdikoUz1jW3ZdKSYmKGhbdl09Uyl9ZnVuY3Rpb24gTTZ0KGwsYyxhLGQsaCxmLHYpe3ZhciBTLFYsT2Us''@;'; put 'put ''UT1uZXcgTWFwLGRlPWMubGVuZ3RoLHBlPWYubGVuZ3RoLENlPW5ldyBBcnJheShkZSk7Zm9yKFM9MDtTPGRlOysrUykoVj1jW1NdKSYmKENlW1NdPU9lPXYuY2FsbChWLFYuX19kYXRhX18sUyxjKSsiIixRLmhhcyhPZSk/aFtTXT1WOlEuc2V0KE9lLFYpKTtmb3IoUz0wO1M8cGU7KytTKU9l''@;'; put 'put ''PXYuY2FsbChsLGZbU10sUyxmKSsiIiwoVj1RLmdldChPZSkpPyhkW1NdPVYsVi5fX2RhdGFfXz1mW1NdLFEuZGVsZXRlKE9lKSk6YVtTXT1uZXcgcEYobCxmW1NdKTtmb3IoUz0wO1M8ZGU7KytTKShWPWNbU10pJiZRLmdldChDZVtTXSk9PT1WJiYoaFtTXT1WKX1mdW5jdGlvbiB4NnQobCl7''@;'; put 'put ''cmV0dXJuIGwuX19kYXRhX199ZnVuY3Rpb24gVDZ0KGwpe3JldHVybiJvYmplY3QiPT10eXBlb2YgbCYmImxlbmd0aCJpbiBsP2w6QXJyYXkuZnJvbShsKX1mdW5jdGlvbiBMNnQobCxjKXtyZXR1cm4gbDxjPy0xOmw+Yz8xOmw+PWM/MDpOYU59cEYucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjpw''@;'; put 'put ''RixhcHBlbmRDaGlsZDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShsLHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24obCxjKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShsLGMpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKGwp''@;'; put 'put ''e3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvcihsKX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwobCl9fTt2YXIgcEo9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO2NvbnN0IFY0ZT17c3ZnOiJo''@;'; put 'put ''dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6cEoseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBn''@;'; put 'put ''RihsKXt2YXIgYz1sKz0iIixhPWMuaW5kZXhPZigiOiIpO3JldHVybiBhPj0wJiYieG1sbnMiIT09KGM9bC5zbGljZSgwLGEpKSYmKGw9bC5zbGljZShhKzEpKSxWNGUuaGFzT3duUHJvcGVydHkoYyk/e3NwYWNlOlY0ZVtjXSxsb2NhbDpsfTpsfWZ1bmN0aW9uIEI2dChsKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShsKX19ZnVuY3Rpb24gajZ0KGwpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsKX19ZnVuY3Rpb24gejZ0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUobCxj''@;'; put 'put ''KX19ZnVuY3Rpb24gVTZ0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwsYyl9fWZ1bmN0aW9uIFo2dChsLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWE/dGhpcy5yZW1vdmVB''@;'; put 'put ''dHRyaWJ1dGUobCk6dGhpcy5zZXRBdHRyaWJ1dGUobCxhKX19ZnVuY3Rpb24gWTZ0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09YT90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGwuc3BhY2UsbC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1''@;'; put 'put ''dGVOUyhsLnNwYWNlLGwubG9jYWwsYSl9fWZ1bmN0aW9uIEI0ZShsKXtyZXR1cm4gbC5vd25lckRvY3VtZW50JiZsLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fGwuZG9jdW1lbnQmJmx8fGwuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gRzZ0KGwpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5''@;'; put 'put ''bGUucmVtb3ZlUHJvcGVydHkobCl9fWZ1bmN0aW9uICQ2dChsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShsLGMsYSl9fWZ1bmN0aW9uIHE2dChsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09''@;'; put 'put ''ZD90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGwpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkobCxkLGEpfX1mdW5jdGlvbiBneShsLGMpe3JldHVybiBsLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoYyl8fEI0ZShsKS5nZXRDb21wdXRlZFN0eWxlKGwsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShj''@;'; put 'put ''KX1mdW5jdGlvbiBYNnQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbbF19fWZ1bmN0aW9uIEo2dChsLGMpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbbF09Y319ZnVuY3Rpb24gUTZ0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7''@;'; put 'put ''bnVsbD09YT9kZWxldGUgdGhpc1tsXTp0aGlzW2xdPWF9fWZ1bmN0aW9uIGo0ZShsKXtyZXR1cm4gbC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gZ0oobCl7cmV0dXJuIGwuY2xhc3NMaXN0fHxuZXcgejRlKGwpfWZ1bmN0aW9uIHo0ZShsKXt0aGlzLl9ub2RlPWwsdGhpcy5fbmFt''@;'; put 'put ''ZXM9ajRlKGwuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gVTRlKGwsYyl7Zm9yKHZhciBhPWdKKGwpLGQ9LTEsaD1jLmxlbmd0aDsrK2Q8aDspYS5hZGQoY1tkXSl9ZnVuY3Rpb24gWjRlKGwsYyl7Zm9yKHZhciBhPWdKKGwpLGQ9LTEsaD1jLmxlbmd0aDsrK2Q8aDspYS5y''@;'; put 'put ''ZW1vdmUoY1tkXSl9ZnVuY3Rpb24gdDh0KGwpe3JldHVybiBmdW5jdGlvbigpe1U0ZSh0aGlzLGwpfX1mdW5jdGlvbiBuOHQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7WjRlKHRoaXMsbCl9fWZ1bmN0aW9uIHI4dChsLGMpe3JldHVybiBmdW5jdGlvbigpeyhjLmFwcGx5KHRoaXMsYXJndW1lbnRz''@;'; put 'put ''KT9VNGU6WjRlKSh0aGlzLGwpfX1mdW5jdGlvbiBvOHQoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIHM4dChsKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PWx9fWZ1bmN0aW9uIGE4dChsKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1sLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKTt0aGlzLnRleHRDb250ZW50PWM/PyIifX1mdW5jdGlvbiBjOHQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiB1OHQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9bH19ZnVuY3Rpb24gZDh0KGwpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPWwuYXBwbHko''@;'; put 'put ''dGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPWM/PyIifX1mdW5jdGlvbiBmOHQoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gZzh0KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRC''@;'; put 'put ''ZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gdjh0KGwpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXRoaXMub3duZXJEb2N1bWVudCxhPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBhPT09cEomJmMuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09''@;'; put 'put ''PXBKP2MuY3JlYXRlRWxlbWVudChsKTpjLmNyZWF0ZUVsZW1lbnROUyhhLGwpfX1mdW5jdGlvbiBfOHQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobC5zcGFjZSxsLmxvY2FsKX19ZnVuY3Rpb24gWTRlKGwpe3ZhciBjPWdG''@;'; put 'put ''KGwpO3JldHVybihjLmxvY2FsP184dDp2OHQpKGMpfWZ1bmN0aW9uIHk4dCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIEM4dCgpe3ZhciBsPXRoaXMucGFyZW50Tm9kZTtsJiZsLnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIE04dCgpe3ZhciBsPXRoaXMuY2xvbmVOb2RlKCExKSxjPXRoaXMu''@;'; put 'put ''cGFyZW50Tm9kZTtyZXR1cm4gYz9jLmluc2VydEJlZm9yZShsLHRoaXMubmV4dFNpYmxpbmcpOmx9ZnVuY3Rpb24geDh0KCl7dmFyIGw9dGhpcy5jbG9uZU5vZGUoITApLGM9dGhpcy5wYXJlbnROb2RlO3JldHVybiBjP2MuaW5zZXJ0QmVmb3JlKGwsdGhpcy5uZXh0U2libGluZyk6bH1mdW5j''@;'; put 'put ''dGlvbiBEOHQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5fX29uO2lmKGMpe2Zvcih2YXIgZixhPTAsZD0tMSxoPWMubGVuZ3RoO2E8aDsrK2EpZj1jW2FdLGwudHlwZSYmZi50eXBlIT09bC50eXBlfHxmLm5hbWUhPT1sLm5hbWU/Y1srK2RdPWY6dGhpcy5yZW1vdmVFdmVudExp''@;'; put 'put ''c3RlbmVyKGYudHlwZSxmLmxpc3RlbmVyLGYub3B0aW9ucyk7KytkP2MubGVuZ3RoPWQ6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIEk4dChsLGMsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGgsZD10aGlzLl9fb24sZj1mdW5jdGlvbiBrOHQobCl7cmV0dXJuIGZ1bmN0aW9uKGMpe2wu''@;'; put 'put ''Y2FsbCh0aGlzLGMsdGhpcy5fX2RhdGFfXyl9fShjKTtpZihkKWZvcih2YXIgdj0wLFM9ZC5sZW5ndGg7djxTOysrdilpZigoaD1kW3ZdKS50eXBlPT09bC50eXBlJiZoLm5hbWU9PT1sLm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoLnR5cGUsaC5saXN0ZW5lcixoLm9w''@;'; put 'put ''dGlvbnMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihoLnR5cGUsaC5saXN0ZW5lcj1mLGgub3B0aW9ucz1hKSx2b2lkKGgudmFsdWU9Yyk7dGhpcy5hZGRFdmVudExpc3RlbmVyKGwudHlwZSxmLGEpLGg9e3R5cGU6bC50eXBlLG5hbWU6bC5uYW1lLHZhbHVlOmMsbGlzdGVuZXI6ZixvcHRpb25z''@;'; put 'put ''OmF9LGQ/ZC5wdXNoKGgpOnRoaXMuX19vbj1baF19fWZ1bmN0aW9uIFc0ZShsLGMsYSl7dmFyIGQ9QjRlKGwpLGg9ZC5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2YgaD9oPW5ldyBoKGMsYSk6KGg9ZC5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxhPyhoLmluaXRFdmVudChj''@;'; put 'put ''LGEuYnViYmxlcyxhLmNhbmNlbGFibGUpLGguZGV0YWlsPWEuZGV0YWlsKTpoLmluaXRFdmVudChjLCExLCExKSksbC5kaXNwYXRjaEV2ZW50KGgpfWZ1bmN0aW9uIEw4dChsLGMpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXNGUodGhpcyxsLGMpfX1mdW5jdGlvbiBPOHQobCxjKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24oKXtyZXR1cm4gVzRlKHRoaXMsbCxjLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXo0ZS5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihsKXt0aGlzLl9uYW1lcy5pbmRleE9mKGwpPDAmJih0aGlzLl9uYW1lcy5wdXNoKGwpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFz''@;'; put 'put ''cyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbihsKXt2YXIgYz10aGlzLl9uYW1lcy5pbmRleE9mKGwpO2M+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoYywxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxj''@;'; put 'put ''b250YWluczpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihsKT49MH19O3ZhciBtSj1bbnVsbF07ZnVuY3Rpb24gdjEobCxjKXt0aGlzLl9ncm91cHM9bCx0aGlzLl9wYXJlbnRzPWN9ZnVuY3Rpb24gRzRlKCl7cmV0dXJuIG5ldyB2MShbW2RvY3VtZW50LmRvY3VtZW50''@;'; put 'put ''RWxlbWVudF1dLG1KKX12MS5wcm90b3R5cGU9RzRlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6djEsc2VsZWN0OmZ1bmN0aW9uIGw2dChsKXsiZnVuY3Rpb24iIT10eXBlb2YgbCYmKGw9ZkoobCkpO2Zvcih2YXIgYz10aGlzLl9ncm91cHMsYT1jLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7''@;'; put 'put ''aDxhOysraClmb3IodmFyIFYsUSxmPWNbaF0sdj1mLmxlbmd0aCxTPWRbaF09bmV3IEFycmF5KHYpLGRlPTA7ZGU8djsrK2RlKShWPWZbZGVdKSYmKFE9bC5jYWxsKFYsVi5fX2RhdGFfXyxkZSxmKSkmJigiX19kYXRhX18iaW4gViYmKFEuX19kYXRhX189Vi5fX2RhdGFfXyksU1tkZV09USk7''@;'; put 'put ''cmV0dXJuIG5ldyB2MShkLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gZDZ0KGwpe2w9ImZ1bmN0aW9uIj09dHlwZW9mIGw/ZnVuY3Rpb24gdTZ0KGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBPNGUobC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0obCk6UDRlKGwpO2Zv''@;'; put 'put ''cih2YXIgYz10aGlzLl9ncm91cHMsYT1jLmxlbmd0aCxkPVtdLGg9W10sZj0wO2Y8YTsrK2YpZm9yKHZhciBWLHY9Y1tmXSxTPXYubGVuZ3RoLFE9MDtRPFM7KytRKShWPXZbUV0pJiYoZC5wdXNoKGwuY2FsbChWLFYuX19kYXRhX18sUSx2KSksaC5wdXNoKFYpKTtyZXR1cm4gbmV3IHYxKGQs''@;'; put 'put ''aCl9LHNlbGVjdENoaWxkOmZ1bmN0aW9uIGc2dChsKXtyZXR1cm4gdGhpcy5zZWxlY3QobnVsbD09bD9wNnQ6ZnVuY3Rpb24gZjZ0KGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoNnQuY2FsbCh0aGlzLmNoaWxkcmVuLGwpfX0oImZ1bmN0aW9uIj09dHlwZW9mIGw/bDpONGUobCkpKX0s''@;'; put 'put ''c2VsZWN0Q2hpbGRyZW46ZnVuY3Rpb24gYjZ0KGwpe3JldHVybiB0aGlzLnNlbGVjdEFsbChudWxsPT1sP3Y2dDpmdW5jdGlvbiBfNnQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG02dC5jYWxsKHRoaXMuY2hpbGRyZW4sbCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgbD9sOk40ZShsKSkp''@;'; put 'put ''fSxmaWx0ZXI6ZnVuY3Rpb24geTZ0KGwpeyJmdW5jdGlvbiIhPXR5cGVvZiBsJiYobD1GNGUobCkpO2Zvcih2YXIgYz10aGlzLl9ncm91cHMsYT1jLmxlbmd0aCxkPW5ldyBBcnJheShhKSxoPTA7aDxhOysraClmb3IodmFyIFYsZj1jW2hdLHY9Zi5sZW5ndGgsUz1kW2hdPVtdLFE9MDtRPHY7''@;'; put 'put ''KytRKShWPWZbUV0pJiZsLmNhbGwoVixWLl9fZGF0YV9fLFEsZikmJlMucHVzaChWKTtyZXR1cm4gbmV3IHYxKGQsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gRTZ0KGwsYyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIEFycmF5LmZyb20odGhpcyx4NnQpO3ZhciBhPWM/TTZ0''@;'; put 'put ''OlM2dCxkPXRoaXMuX3BhcmVudHMsaD10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIGwmJihsPWZ1bmN0aW9uIEM2dChsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbH19KGwpKTtmb3IodmFyIGY9aC5sZW5ndGgsdj1uZXcgQXJyYXkoZiksUz1uZXcgQXJyYXkoZiksVj1uZXcg''@;'; put 'put ''QXJyYXkoZiksUT0wO1E8ZjsrK1Epe3ZhciBkZT1kW1FdLHBlPWhbUV0sQ2U9cGUubGVuZ3RoLE9lPVQ2dChsLmNhbGwoZGUsZGUmJmRlLl9fZGF0YV9fLFEsZCkpLFllPU9lLmxlbmd0aCxldD1TW1FdPW5ldyBBcnJheShZZSksZHQ9dltRXT1uZXcgQXJyYXkoWWUpO2EoZGUscGUsZXQsZHQs''@;'; put 'put ''VltRXT1uZXcgQXJyYXkoQ2UpLE9lLGMpO2Zvcih2YXIgbG4sdm4sTXQ9MCxRdD0wO010PFllOysrTXQpaWYobG49ZXRbTXRdKXtmb3IoTXQ+PVF0JiYoUXQ9TXQrMSk7ISh2bj1kdFtRdF0pJiYrK1F0PFllOyk7bG4uX25leHQ9dm58fG51bGx9fXJldHVybih2PW5ldyB2MSh2LGQpKS5fZW50''@;'; put 'put ''ZXI9Uyx2Ll9leGl0PVYsdn0sZW50ZXI6ZnVuY3Rpb24gdzZ0KCl7cmV0dXJuIG5ldyB2MSh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChINGUpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGs2dCgpe3JldHVybiBuZXcgdjEodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1h''@;'; put 'put ''cChINGUpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIEE2dChsLGMsYSl7dmFyIGQ9dGhpcy5lbnRlcigpLGg9dGhpcyxmPXRoaXMuZXhpdCgpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBsPyhkPWwoZCkpJiYoZD1kLnNlbGVjdGlvbigpKTpkPWQuYXBwZW5kKGwrIiIpLG51bGwh''@;'; put 'put ''PWMmJihoPWMoaCkpJiYoaD1oLnNlbGVjdGlvbigpKSxudWxsPT1hP2YucmVtb3ZlKCk6YShmKSxkJiZoP2QubWVyZ2UoaCkub3JkZXIoKTpofSxtZXJnZTpmdW5jdGlvbiBENnQobCl7Zm9yKHZhciBjPWwuc2VsZWN0aW9uP2wuc2VsZWN0aW9uKCk6bCxhPXRoaXMuX2dyb3VwcyxkPWMuX2dy''@;'; put 'put ''b3VwcyxoPWEubGVuZ3RoLHY9TWF0aC5taW4oaCxkLmxlbmd0aCksUz1uZXcgQXJyYXkoaCksVj0wO1Y8djsrK1YpZm9yKHZhciBPZSxRPWFbVl0sZGU9ZFtWXSxwZT1RLmxlbmd0aCxDZT1TW1ZdPW5ldyBBcnJheShwZSksWWU9MDtZZTxwZTsrK1llKShPZT1RW1llXXx8ZGVbWWVdKSYmKENl''@;'; put 'put ''W1llXT1PZSk7Zm9yKDtWPGg7KytWKVNbVl09YVtWXTtyZXR1cm4gbmV3IHYxKFMsdGhpcy5fcGFyZW50cyl9LHNlbGVjdGlvbjpmdW5jdGlvbiBOOHQoKXtyZXR1cm4gdGhpc30sb3JkZXI6ZnVuY3Rpb24gSTZ0KCl7Zm9yKHZhciBsPXRoaXMuX2dyb3VwcyxjPS0xLGE9bC5sZW5ndGg7Kytj''@;'; put 'put ''PGE7KWZvcih2YXIgdixkPWxbY10saD1kLmxlbmd0aC0xLGY9ZFtoXTstLWg+PTA7KSh2PWRbaF0pJiYoZiYmNF52LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGYpJiZmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHYsZiksZj12KTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBSNnQobCl7''@;'; put 'put ''ZnVuY3Rpb24gYyhwZSxDZSl7cmV0dXJuIHBlJiZDZT9sKHBlLl9fZGF0YV9fLENlLl9fZGF0YV9fKTohcGUtIUNlfWx8fChsPUw2dCk7Zm9yKHZhciBhPXRoaXMuX2dyb3VwcyxkPWEubGVuZ3RoLGg9bmV3IEFycmF5KGQpLGY9MDtmPGQ7KytmKXtmb3IodmFyIFEsdj1hW2ZdLFM9di5sZW5n''@;'; put 'put ''dGgsVj1oW2ZdPW5ldyBBcnJheShTKSxkZT0wO2RlPFM7KytkZSkoUT12W2RlXSkmJihWW2RlXT1RKTtWLnNvcnQoYyl9cmV0dXJuIG5ldyB2MShoLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gTzZ0KCl7dmFyIGw9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNb''@;'; put 'put ''MF09dGhpcyxsLmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBQNnQoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzKX0sbm9kZTpmdW5jdGlvbiBGNnQoKXtmb3IodmFyIGw9dGhpcy5fZ3JvdXBzLGM9MCxhPWwubGVuZ3RoO2M8YTsrK2MpZm9yKHZhciBkPWxbY10s''@;'; put 'put ''aD0wLGY9ZC5sZW5ndGg7aDxmOysraCl7dmFyIHY9ZFtoXTtpZih2KXJldHVybiB2fXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIE42dCgpe2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgdGhpcykrK2w7cmV0dXJuIGx9LGVtcHR5OmZ1bmN0aW9uIEg2dCgpe3JldHVybiF0aGlzLm5vZGUoKX0s''@;'; put 'put ''ZWFjaDpmdW5jdGlvbiBWNnQobCl7Zm9yKHZhciBjPXRoaXMuX2dyb3VwcyxhPTAsZD1jLmxlbmd0aDthPGQ7KythKWZvcih2YXIgUyxoPWNbYV0sZj0wLHY9aC5sZW5ndGg7Zjx2OysrZikoUz1oW2ZdKSYmbC5jYWxsKFMsUy5fX2RhdGFfXyxmLGgpO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0''@;'; put 'put ''aW9uIFc2dChsLGMpe3ZhciBhPWdGKGwpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGQ9dGhpcy5ub2RlKCk7cmV0dXJuIGEubG9jYWw/ZC5nZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwpOmQuZ2V0QXR0cmlidXRlKGEpfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWM/YS5sb2Nh''@;'; put 'put ''bD9qNnQ6QjZ0OiJmdW5jdGlvbiI9PXR5cGVvZiBjP2EubG9jYWw/WTZ0Olo2dDphLmxvY2FsP1U2dDp6NnQpKGEsYykpfSxzdHlsZTpmdW5jdGlvbiBLNnQobCxjLGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1jP0c2dDoiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''Yz9xNnQ6JDZ0KShsLGMsYT8/IiIpKTpneSh0aGlzLm5vZGUoKSxsKX0scHJvcGVydHk6ZnVuY3Rpb24gZTh0KGwsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWM/WDZ0OiJmdW5jdGlvbiI9PXR5cGVvZiBjP1E2dDpKNnQpKGwsYykpOnRoaXMubm9kZSgp''@;'; put 'put ''W2xdfSxjbGFzc2VkOmZ1bmN0aW9uIGk4dChsLGMpe3ZhciBhPWo0ZShsKyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgZD1nSih0aGlzLm5vZGUoKSksaD0tMSxmPWEubGVuZ3RoOysraDxmOylpZighZC5jb250YWlucyhhW2hdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4g''@;'; put 'put ''dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgYz9yOHQ6Yz90OHQ6bjh0KShhLGMpKX0sdGV4dDpmdW5jdGlvbiBsOHQobCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PWw/bzh0OigiZnVuY3Rpb24iPT10eXBlb2YgbD9hOHQ6czh0KShsKSk6dGhpcy5ub2Rl''@;'; put 'put ''KCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gaDh0KGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT1sP2M4dDooImZ1bmN0aW9uIj09dHlwZW9mIGw/ZDh0OnU4dCkobCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gcDh0KCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuZWFjaChmOHQpfSxsb3dlcjpmdW5jdGlvbiBtOHQoKXtyZXR1cm4gdGhpcy5lYWNoKGc4dCl9LGFwcGVuZDpmdW5jdGlvbiBiOHQobCl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIGw/bDpZNGUobCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''YXBwZW5kQ2hpbGQoYy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LGluc2VydDpmdW5jdGlvbiB3OHQobCxjKXt2YXIgYT0iZnVuY3Rpb24iPT10eXBlb2YgbD9sOlk0ZShsKSxkPW51bGw9PWM/eTh0OiJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6ZkooYyk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKGEuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfSxyZW1vdmU6ZnVuY3Rpb24gUzh0KCl7cmV0dXJuIHRoaXMuZWFjaChDOHQpfSxjbG9uZTpmdW5jdGlvbiBFOHQobCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuc2VsZWN0KGw/eDh0Ok04dCl9LGRhdHVtOmZ1bmN0aW9uIFQ4dChsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsbCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIFI4dChsLGMsYSl7dmFyIGgsdixkPWZ1bmN0aW9uIEE4''@;'; put 'put ''dChsKXtyZXR1cm4gbC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKGMpe3ZhciBhPSIiLGQ9Yy5pbmRleE9mKCIuIik7cmV0dXJuIGQ+PTAmJihhPWMuc2xpY2UoZCsxKSxjPWMuc2xpY2UoMCxkKSkse3R5cGU6YyxuYW1lOmF9fSl9KGwrIiIpLGY9ZC5sZW5ndGg7aWYoIShh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPDIpKXtmb3IoUz1jP0k4dDpEOHQsaD0wO2g8ZjsrK2gpdGhpcy5lYWNoKFMoZFtoXSxjLGEpKTtyZXR1cm4gdGhpc312YXIgUz10aGlzLm5vZGUoKS5fX29uO2lmKFMpZm9yKHZhciBkZSxWPTAsUT1TLmxlbmd0aDtWPFE7KytWKWZvcihoPTAsZGU9U1tWXTtoPGY7''@;'; put 'put ''KytoKWlmKCh2PWRbaF0pLnR5cGU9PT1kZS50eXBlJiZ2Lm5hbWU9PT1kZS5uYW1lKXJldHVybiBkZS52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gUDh0KGwsYyl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGM/Tzh0Okw4dCkobCxjKSl9LFtTeW1ib2wuaXRlcmF0b3Jd''@;'; put 'put ''OmZ1bmN0aW9uKkY4dCgpe2Zvcih2YXIgbD10aGlzLl9ncm91cHMsYz0wLGE9bC5sZW5ndGg7YzxhOysrYylmb3IodmFyIHYsZD1sW2NdLGg9MCxmPWQubGVuZ3RoO2g8ZjsrK2gpKHY9ZFtoXSkmJih5aWVsZCB2KX19O2NvbnN0IHo3PUc0ZTtmdW5jdGlvbiB2SihsKXtyZXR1cm4ic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGw/bmV3IHYxKFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGwpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHYxKFtPNGUobCldLG1KKX1mdW5jdGlvbiBacyhsKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGw/bmV3IHYxKFtbZG9jdW1lbnQucXVlcnlTZWxl''@;'; put 'put ''Y3RvcihsKV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgdjEoW1tsXV0sbUopfXZhciBIOHQ9e3ZhbHVlOigpPT57fX07ZnVuY3Rpb24gJDRlKCl7Zm9yKHZhciBkLGw9MCxjPWFyZ3VtZW50cy5sZW5ndGgsYT17fTtsPGM7KytsKXtpZighKGQ9YXJndW1lbnRzW2xdKyIiKXx8''@;'; put 'put ''ZCBpbiBhfHwvW1xzLl0vLnRlc3QoZCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrZCk7YVtkXT1bXX1yZXR1cm4gbmV3IG1GKGEpfWZ1bmN0aW9uIG1GKGwpe3RoaXMuXz1sfWZ1bmN0aW9uIEI4dChsLGMpe2Zvcih2YXIgaCxhPTAsZD1sLmxlbmd0aDthPGQ7KythKWlmKCho''@;'; put 'put ''PWxbYV0pLm5hbWU9PT1jKXJldHVybiBoLnZhbHVlfWZ1bmN0aW9uIHE0ZShsLGMsYSl7Zm9yKHZhciBkPTAsaD1sLmxlbmd0aDtkPGg7KytkKWlmKGxbZF0ubmFtZT09PWMpe2xbZF09SDh0LGw9bC5zbGljZSgwLGQpLmNvbmNhdChsLnNsaWNlKGQrMSkpO2JyZWFrfXJldHVybiBudWxsIT1h''@;'; put 'put ''JiZsLnB1c2goe25hbWU6Yyx2YWx1ZTphfSksbH1tRi5wcm90b3R5cGU9JDRlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bUYsb246ZnVuY3Rpb24obCxjKXt2YXIgaCxhPXRoaXMuXyxkPWZ1bmN0aW9uIFY4dChsLGMpe3JldHVybiBsLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rp''@;'; put 'put ''b24oYSl7dmFyIGQ9IiIsaD1hLmluZGV4T2YoIi4iKTtpZihoPj0wJiYoZD1hLnNsaWNlKGgrMSksYT1hLnNsaWNlKDAsaCkpLGEmJiFjLmhhc093blByb3BlcnR5KGEpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2EpO3JldHVybnt0eXBlOmEsbmFtZTpkfX0pfShsKyIiLGEp''@;'; put 'put ''LGY9LTEsdj1kLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWMmJiJmdW5jdGlvbiIhPXR5cGVvZiBjKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitjKTtmb3IoOysrZjx2OylpZihoPShsPWRbZl0pLnR5cGUpYVtoXT1xNGUoYVtoXSxsLm5h''@;'; put 'put ''bWUsYyk7ZWxzZSBpZihudWxsPT1jKWZvcihoIGluIGEpYVtoXT1xNGUoYVtoXSxsLm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK2Y8djspaWYoKGg9KGw9ZFtmXSkudHlwZSkmJihoPUI4dChhW2hdLGwubmFtZSkpKXJldHVybiBofSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGw9e30sYz10''@;'; put 'put ''aGlzLl87Zm9yKHZhciBhIGluIGMpbFthXT1jW2FdLnNsaWNlKCk7cmV0dXJuIG5ldyBtRihsKX0sY2FsbDpmdW5jdGlvbihsLGMpe2lmKChoPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIGgsZixhPW5ldyBBcnJheShoKSxkPTA7ZDxoOysrZClhW2RdPWFyZ3VtZW50c1tkKzJdO2lm''@;'; put 'put ''KCF0aGlzLl8uaGFzT3duUHJvcGVydHkobCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrbCk7Zm9yKGQ9MCxoPShmPXRoaXMuX1tsXSkubGVuZ3RoO2Q8aDsrK2QpZltkXS52YWx1ZS5hcHBseShjLGEpfSxhcHBseTpmdW5jdGlvbihsLGMsYSl7aWYoIXRoaXMuXy5oYXNPd25Q''@;'; put 'put ''cm9wZXJ0eShsKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitsKTtmb3IodmFyIGQ9dGhpcy5fW2xdLGg9MCxmPWQubGVuZ3RoO2g8ZjsrK2gpZFtoXS52YWx1ZS5hcHBseShjLGEpfX07Y29uc3QgX0o9JDRlO3ZhciB2Rix0VCxteT0wLFFFPTAsZVQ9MCxLNGU9MWUzLF9GPTAs''@;'; put 'put ''VTc9MCxiRj0wLG5UPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFg0ZT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJp''@;'; put 'put ''bmQod2luZG93KTpmdW5jdGlvbihsKXtzZXRUaW1lb3V0KGwsMTcpfTtmdW5jdGlvbiBiSigpe3JldHVybiBVN3x8KFg0ZShqOHQpLFU3PW5ULm5vdygpK2JGKX1mdW5jdGlvbiBqOHQoKXtVNz0wfWZ1bmN0aW9uIHlGKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1m''@;'; put 'put ''dW5jdGlvbiBKNGUobCxjLGEpe3ZhciBkPW5ldyB5RjtyZXR1cm4gZC5yZXN0YXJ0KGwsYyxhKSxkfWZ1bmN0aW9uIFE0ZSgpe1U3PShfRj1uVC5ub3coKSkrYkYsbXk9UUU9MDt0cnl7IWZ1bmN0aW9uIHo4dCgpe2JKKCksKytteTtmb3IodmFyIGMsbD12RjtsOykoYz1VNy1sLl90aW1lKT49''@;'; put 'put ''MCYmbC5fY2FsbC5jYWxsKHZvaWQgMCxjKSxsPWwuX25leHQ7LS1teX0oKX1maW5hbGx5e215PTAsZnVuY3Rpb24gWjh0KCl7Zm9yKHZhciBsLGEsYz12RixkPTEvMDtjOyljLl9jYWxsPyhkPmMuX3RpbWUmJihkPWMuX3RpbWUpLGw9YyxjPWMuX25leHQpOihhPWMuX25leHQsYy5fbmV4dD1u''@;'; put 'put ''dWxsLGM9bD9sLl9uZXh0PWE6dkY9YSk7dFQ9bCx5SihkKX0oKSxVNz0wfX1mdW5jdGlvbiBVOHQoKXt2YXIgbD1uVC5ub3coKSxjPWwtX0Y7Yz5LNGUmJihiRi09YyxfRj1sKX1mdW5jdGlvbiB5SihsKXtteXx8KFFFJiYoUUU9Y2xlYXJUaW1lb3V0KFFFKSksbC1VNz4yND8obDwxLzAmJihR''@;'; put 'put ''RT1zZXRUaW1lb3V0KFE0ZSxsLW5ULm5vdygpLWJGKSksZVQmJihlVD1jbGVhckludGVydmFsKGVUKSkpOihlVHx8KF9GPW5ULm5vdygpLGVUPXNldEludGVydmFsKFU4dCxLNGUpKSxteT0xLFg0ZShRNGUpKSl9ZnVuY3Rpb24gd0YobCxjLGEpe3ZhciBkPW5ldyB5RjtyZXR1cm4gZC5yZXN0''@;'; put 'put ''YXJ0KGg9PntkLnN0b3AoKSxsKGgrYyl9LGM9bnVsbD09Yz8wOitjLGEpLGR9eUYucHJvdG90eXBlPUo0ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnlGLHJlc3RhcnQ6ZnVuY3Rpb24obCxjLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBsKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNr''@;'; put 'put ''IGlzIG5vdCBhIGZ1bmN0aW9uIik7YT0obnVsbD09YT9iSigpOithKSsobnVsbD09Yz8wOitjKSwhdGhpcy5fbmV4dCYmdFQhPT10aGlzJiYodFQ/dFQuX25leHQ9dGhpczp2Rj10aGlzLHRUPXRoaXMpLHRoaXMuX2NhbGw9bCx0aGlzLl90aW1lPWEseUooKX0sc3RvcDpmdW5jdGlvbigpe3Ro''@;'; put 'put ''aXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAseUooKSl9fTt2YXIgWTh0PV9KKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLFc4dD1bXSxlZ2U9MCxDSj0yLENGPTMsU0o9NSxTRj02O2Z1bmN0aW9uIE1GKGwsYyxhLGQsaCxmKXt2YXIgdj1sLl9f''@;'; put 'put ''dHJhbnNpdGlvbjtpZih2KXtpZihhIGluIHYpcmV0dXJufWVsc2UgbC5fX3RyYW5zaXRpb249e307IWZ1bmN0aW9uIEc4dChsLGMsYSl7dmFyIGgsZD1sLl9fdHJhbnNpdGlvbjtmdW5jdGlvbiB2KFEpe3ZhciBkZSxwZSxDZSxPZTtpZigxIT09YS5zdGF0ZSlyZXR1cm4gVigpO2ZvcihkZSBp''@;'; put 'put ''biBkKWlmKChPZT1kW2RlXSkubmFtZT09PWEubmFtZSl7aWYoT2Uuc3RhdGU9PT1DRilyZXR1cm4gd0Yodik7ND09PU9lLnN0YXRlPyhPZS5zdGF0ZT1TRixPZS50aW1lci5zdG9wKCksT2Uub24uY2FsbCgiaW50ZXJydXB0IixsLGwuX19kYXRhX18sT2UuaW5kZXgsT2UuZ3JvdXApLGRlbGV0''@;'; put 'put ''ZSBkW2RlXSk6K2RlPGMmJihPZS5zdGF0ZT1TRixPZS50aW1lci5zdG9wKCksT2Uub24uY2FsbCgiY2FuY2VsIixsLGwuX19kYXRhX18sT2UuaW5kZXgsT2UuZ3JvdXApLGRlbGV0ZSBkW2RlXSl9aWYod0YoZnVuY3Rpb24oKXthLnN0YXRlPT09Q0YmJihhLnN0YXRlPTQsYS50aW1lci5yZXN0''@;'; put 'put ''YXJ0KFMsYS5kZWxheSxhLnRpbWUpLFMoUSkpfSksYS5zdGF0ZT1DSixhLm9uLmNhbGwoInN0YXJ0IixsLGwuX19kYXRhX18sYS5pbmRleCxhLmdyb3VwKSxhLnN0YXRlPT09Q0ope2ZvcihhLnN0YXRlPUNGLGg9bmV3IEFycmF5KENlPWEudHdlZW4ubGVuZ3RoKSxkZT0wLHBlPS0xO2RlPENl''@;'; put 'put ''OysrZGUpKE9lPWEudHdlZW5bZGVdLnZhbHVlLmNhbGwobCxsLl9fZGF0YV9fLGEuaW5kZXgsYS5ncm91cCkpJiYoaFsrK3BlXT1PZSk7aC5sZW5ndGg9cGUrMX19ZnVuY3Rpb24gUyhRKXtmb3IodmFyIGRlPVE8YS5kdXJhdGlvbj9hLmVhc2UuY2FsbChudWxsLFEvYS5kdXJhdGlvbik6KGEu''@;'; put 'put ''dGltZXIucmVzdGFydChWKSxhLnN0YXRlPVNKLDEpLHBlPS0xLENlPWgubGVuZ3RoOysrcGU8Q2U7KWhbcGVdLmNhbGwobCxkZSk7YS5zdGF0ZT09PVNKJiYoYS5vbi5jYWxsKCJlbmQiLGwsbC5fX2RhdGFfXyxhLmluZGV4LGEuZ3JvdXApLFYoKSl9ZnVuY3Rpb24gVigpe2Zvcih2YXIgUSBp''@;'; put 'put ''biBhLnN0YXRlPVNGLGEudGltZXIuc3RvcCgpLGRlbGV0ZSBkW2NdLGQpcmV0dXJuO2RlbGV0ZSBsLl9fdHJhbnNpdGlvbn1kW2NdPWEsYS50aW1lcj1KNGUoZnVuY3Rpb24gZihRKXthLnN0YXRlPTEsYS50aW1lci5yZXN0YXJ0KHYsYS5kZWxheSxhLnRpbWUpLGEuZGVsYXk8PVEmJnYoUS1h''@;'; put 'put ''LmRlbGF5KX0sMCxhLnRpbWUpfShsLGEse25hbWU6YyxpbmRleDpkLGdyb3VwOmgsb246WTh0LHR3ZWVuOlc4dCx0aW1lOmYudGltZSxkZWxheTpmLmRlbGF5LGR1cmF0aW9uOmYuZHVyYXRpb24sZWFzZTpmLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTplZ2V9KX1mdW5jdGlvbiBNSihsLGMpe3Zh''@;'; put 'put ''ciBhPU1mKGwsYyk7aWYoYS5zdGF0ZT5lZ2UpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gYX1mdW5jdGlvbiBjcChsLGMpe3ZhciBhPU1mKGwsYyk7aWYoYS5zdGF0ZT5DRil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1''@;'; put 'put ''bm5pbmciKTtyZXR1cm4gYX1mdW5jdGlvbiBNZihsLGMpe3ZhciBhPWwuX190cmFuc2l0aW9uO2lmKCFhfHwhKGE9YVtjXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBhfWZ1bmN0aW9uIHhGKGwsYyl7dmFyIGQsaCx2LGE9bC5fX3RyYW5zaXRpb24s''@;'; put 'put ''Zj0hMDtpZihhKXtmb3IodiBpbiBjPW51bGw9PWM/bnVsbDpjKyIiLGEpKGQ9YVt2XSkubmFtZT09PWM/KGg9ZC5zdGF0ZT5DSiYmZC5zdGF0ZTxTSixkLnN0YXRlPVNGLGQudGltZXIuc3RvcCgpLGQub24uY2FsbChoPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLGwsbC5fX2RhdGFfXyxkLmluZGV4''@;'; put 'put ''LGQuZ3JvdXApLGRlbGV0ZSBhW3ZdKTpmPSExO2YmJmRlbGV0ZSBsLl9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gdXAobCxjKXtyZXR1cm4gbD0rbCxjPStjLGZ1bmN0aW9uKGEpe3JldHVybiBsKigxLWEpK2MqYX19dmFyIEVGLG5nZT0xODAvTWF0aC5QSSx4Sj17dHJhbnNsYXRlWDowLHRyYW5z''@;'; put 'put ''bGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiByZ2UobCxjLGEsZCxoLGYpe3ZhciB2LFMsVjtyZXR1cm4odj1NYXRoLnNxcnQobCpsK2MqYykpJiYobC89dixjLz12KSwoVj1sKmErYypkKSYmKGEtPWwqVixkLT1jKlYpLChTPU1hdGguc3FydChh''@;'; put 'put ''KmErZCpkKSkmJihhLz1TLGQvPVMsVi89UyksbCpkPGMqYSYmKGw9LWwsYz0tYyxWPS1WLHY9LXYpLHt0cmFuc2xhdGVYOmgsdHJhbnNsYXRlWTpmLHJvdGF0ZTpNYXRoLmF0YW4yKGMsbCkqbmdlLHNrZXdYOk1hdGguYXRhbihWKSpuZ2Usc2NhbGVYOnYsc2NhbGVZOlN9fWZ1bmN0aW9uIGln''@;'; put 'put ''ZShsLGMsYSxkKXtmdW5jdGlvbiBoKFEpe3JldHVybiBRLmxlbmd0aD9RLnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oUSxkZSl7dmFyIHBlPVtdLENlPVtdO3JldHVybiBRPWwoUSksZGU9bChkZSksZnVuY3Rpb24gZihRLGRlLHBlLENlLE9lLFllKXtpZihRIT09cGV8fGRlIT09Q2Up''@;'; put 'put ''e3ZhciBldD1PZS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGMsbnVsbCxhKTtZZS5wdXNoKHtpOmV0LTQseDp1cChRLHBlKX0se2k6ZXQtMix4OnVwKGRlLENlKX0pfWVsc2UocGV8fENlKSYmT2UucHVzaCgidHJhbnNsYXRlKCIrcGUrYytDZSthKX0oUS50cmFuc2xhdGVYLFEudHJhbnNsYXRl''@;'; put 'put ''WSxkZS50cmFuc2xhdGVYLGRlLnRyYW5zbGF0ZVkscGUsQ2UpLGZ1bmN0aW9uIHYoUSxkZSxwZSxDZSl7USE9PWRlPyhRLWRlPjE4MD9kZSs9MzYwOmRlLVE+MTgwJiYoUSs9MzYwKSxDZS5wdXNoKHtpOnBlLnB1c2goaChwZSkrInJvdGF0ZSgiLG51bGwsZCktMix4OnVwKFEsZGUpfSkpOmRl''@;'; put 'put ''JiZwZS5wdXNoKGgocGUpKyJyb3RhdGUoIitkZStkKX0oUS5yb3RhdGUsZGUucm90YXRlLHBlLENlKSxmdW5jdGlvbiBTKFEsZGUscGUsQ2Upe1EhPT1kZT9DZS5wdXNoKHtpOnBlLnB1c2goaChwZSkrInNrZXdYKCIsbnVsbCxkKS0yLHg6dXAoUSxkZSl9KTpkZSYmcGUucHVzaChoKHBlKSsi''@;'; put 'put ''c2tld1goIitkZStkKX0oUS5za2V3WCxkZS5za2V3WCxwZSxDZSksZnVuY3Rpb24gVihRLGRlLHBlLENlLE9lLFllKXtpZihRIT09cGV8fGRlIT09Q2Upe3ZhciBldD1PZS5wdXNoKGgoT2UpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtZZS5wdXNoKHtpOmV0LTQseDp1cChRLHBlKX0s''@;'; put 'put ''e2k6ZXQtMix4OnVwKGRlLENlKX0pfWVsc2UoMSE9PXBlfHwxIT09Q2UpJiZPZS5wdXNoKGgoT2UpKyJzY2FsZSgiK3BlKyIsIitDZSsiKSIpfShRLnNjYWxlWCxRLnNjYWxlWSxkZS5zY2FsZVgsZGUuc2NhbGVZLHBlLENlKSxRPWRlPW51bGwsZnVuY3Rpb24oT2Upe2Zvcih2YXIgZHQsWWU9''@;'; put 'put ''LTEsZXQ9Q2UubGVuZ3RoOysrWWU8ZXQ7KXBlWyhkdD1DZVtZZV0pLmldPWR0LngoT2UpO3JldHVybiBwZS5qb2luKCIiKX19fXZhciBYOHQ9aWdlKGZ1bmN0aW9uIHE4dChsKXtjb25zdCBjPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgRE9NTWF0cml4P0RPTU1hdHJpeDpXZWJLaXRDU1NNYXRy''@;'; put 'put ''aXgpKGwrIiIpO3JldHVybiBjLmlzSWRlbnRpdHk/eEo6cmdlKGMuYSxjLmIsYy5jLGMuZCxjLmUsYy5mKX0sInB4LCAiLCJweCkiLCJkZWcpIiksb2dlPWlnZShmdW5jdGlvbiBLOHQobCl7cmV0dXJuIG51bGwhPWwmJihFRnx8KEVGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov''@;'; put 'put ''L3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLEVGLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixsKSxsPUVGLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP3JnZSgobD1sLm1hdHJpeCkuYSxsLmIsbC5jLGwuZCxsLmUsbC5mKTp4Sn0sIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBK''@;'; put 'put ''OHQobCxjKXt2YXIgYSxkO3JldHVybiBmdW5jdGlvbigpe3ZhciBoPWNwKHRoaXMsbCksZj1oLnR3ZWVuO2lmKGYhPT1hKWZvcih2YXIgdj0wLFM9KGQ9YT1mKS5sZW5ndGg7djxTOysrdilpZihkW3ZdLm5hbWU9PT1jKXsoZD1kLnNsaWNlKCkpLnNwbGljZSh2LDEpO2JyZWFrfWgudHdlZW49''@;'; put 'put ''ZH19ZnVuY3Rpb24gUTh0KGwsYyxhKXt2YXIgZCxoO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZj1jcCh0aGlzLGwpLHY9Zi50d2VlbjtpZih2IT09ZCl7aD0oZD12KS5zbGljZSgpO2Zvcih2YXIgUz17bmFtZTpjLHZhbHVl''@;'; put 'put ''OmF9LFY9MCxRPWgubGVuZ3RoO1Y8UTsrK1YpaWYoaFtWXS5uYW1lPT09Yyl7aFtWXT1TO2JyZWFrfVY9PT1RJiZoLnB1c2goUyl9Zi50d2Vlbj1ofX1mdW5jdGlvbiBFSihsLGMsYSl7dmFyIGQ9bC5faWQ7cmV0dXJuIGwuZWFjaChmdW5jdGlvbigpe3ZhciBoPWNwKHRoaXMsZCk7KGgudmFs''@;'; put 'put ''dWV8fChoLnZhbHVlPXt9KSlbY109YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbihoKXtyZXR1cm4gTWYoaCxkKS52YWx1ZVtjXX19ZnVuY3Rpb24gVEoobCxjLGEpe2wucHJvdG90eXBlPWMucHJvdG90eXBlPWEsYS5jb25zdHJ1Y3Rvcj1sfWZ1bmN0aW9uIHNnZShsLGMpe3Zh''@;'; put 'put ''ciBhPU9iamVjdC5jcmVhdGUobC5wcm90b3R5cGUpO2Zvcih2YXIgZCBpbiBjKWFbZF09Y1tkXTtyZXR1cm4gYX1mdW5jdGlvbiByVCgpe312YXIgVEY9MS8uNyx2eT0iXFxzKihbKy1dP1xcZCspXFxzKiIsb1Q9IlxccyooWystXT8oPzpcXGQqXFwuKT9cXGQrKD86W2VFXVsrLV0/XFxkKyk/''@;'; put 'put ''KVxccyoiLGRwPSJcXHMqKFsrLV0/KD86XFxkKlxcLik/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsdDd0PS9eIyhbMC05YS1mXXszLDh9KSQvLG43dD1uZXcgUmVnRXhwKGBecmdiXFwoJHt2eX0sJHt2eX0sJHt2eX1cXCkkYCkscjd0PW5ldyBSZWdFeHAoYF5yZ2JcXCgke2RwfSwk''@;'; put 'put ''e2RwfSwke2RwfVxcKSRgKSxpN3Q9bmV3IFJlZ0V4cChgXnJnYmFcXCgke3Z5fSwke3Z5fSwke3Z5fSwke29UfVxcKSRgKSxvN3Q9bmV3IFJlZ0V4cChgXnJnYmFcXCgke2RwfSwke2RwfSwke2RwfSwke29UfVxcKSRgKSxzN3Q9bmV3IFJlZ0V4cChgXmhzbFxcKCR7b1R9LCR7ZHB9LCR7ZHB9''@;'; put 'put ''XFwpJGApLGE3dD1uZXcgUmVnRXhwKGBeaHNsYVxcKCR7b1R9LCR7ZHB9LCR7ZHB9LCR7b1R9XFwpJGApLGFnZT17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2''@;'; put 'put ''MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0''@;'; put 'put ''NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVu''@;'; put 'put ''OjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRh''@;'; put 'put ''cmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdy''@;'; put 'put ''YXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29s''@;'; put 'put ''ZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeTox''@;'; put 'put ''Njc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGln''@;'; put 'put ''aHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0''@;'; put 'put ''NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4''@;'; put 'put ''NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10''@;'; put 'put ''dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4''@;'; put 'put ''LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0''@;'; put 'put ''MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJv''@;'; put 'put ''d246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAw''@;'; put 'put ''MzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUs''@;'; put 'put ''dHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBsZ2UoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgo''@;'; put 'put ''KX1mdW5jdGlvbiBjZ2UoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBaNyhsKXt2YXIgYyxhO3JldHVybiBsPShsKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoYz10N3QuZXhlYyhsKSk/KGE9Y1sxXS5sZW5ndGgsYz1wYXJzZUludChjWzFdLDE2KSw2PT09YT91''@;'; put 'put ''Z2UoYyk6Mz09PWE/bmV3IEoxKGM+PjgmMTV8Yz4+NCYyNDAsYz4+NCYxNXwyNDAmYywoMTUmYyk8PDR8MTUmYywxKTo4PT09YT9rRihjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LCgyNTUmYykvMjU1KTo0PT09YT9rRihjPj4xMiYxNXxjPj44JjI0MCxjPj44JjE1fGM+PjQmMjQwLGM+''@;'; put 'put ''PjQmMTV8MjQwJmMsKCgxNSZjKTw8NHwxNSZjKS8yNTUpOm51bGwpOihjPW43dC5leGVjKGwpKT9uZXcgSjEoY1sxXSxjWzJdLGNbM10sMSk6KGM9cjd0LmV4ZWMobCkpP25ldyBKMSgyNTUqY1sxXS8xMDAsMjU1KmNbMl0vMTAwLDI1NSpjWzNdLzEwMCwxKTooYz1pN3QuZXhlYyhsKSk/a0Yo''@;'; put 'put ''Y1sxXSxjWzJdLGNbM10sY1s0XSk6KGM9bzd0LmV4ZWMobCkpP2tGKDI1NSpjWzFdLzEwMCwyNTUqY1syXS8xMDAsMjU1KmNbM10vMTAwLGNbNF0pOihjPXM3dC5leGVjKGwpKT9mZ2UoY1sxXSxjWzJdLzEwMCxjWzNdLzEwMCwxKTooYz1hN3QuZXhlYyhsKSk/ZmdlKGNbMV0sY1syXS8xMDAs''@;'; put 'put ''Y1szXS8xMDAsY1s0XSk6YWdlLmhhc093blByb3BlcnR5KGwpP3VnZShhZ2VbbF0pOiJ0cmFuc3BhcmVudCI9PT1sP25ldyBKMShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHVnZShsKXtyZXR1cm4gbmV3IEoxKGw+PjE2JjI1NSxsPj44JjI1NSwyNTUmbCwxKX1mdW5jdGlvbiBrRihs''@;'; put 'put ''LGMsYSxkKXtyZXR1cm4gZDw9MCYmKGw9Yz1hPU5hTiksbmV3IEoxKGwsYyxhLGQpfWZ1bmN0aW9uIEFGKGwsYyxhLGQpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9mdW5jdGlvbiB1N3QobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiByVHx8KGw9WjcobCkpLGw/bmV3IEoxKChsPWwucmdi''@;'; put 'put ''KCkpLnIsbC5nLGwuYixsLm9wYWNpdHkpOm5ldyBKMX0obCk6bmV3IEoxKGwsYyxhLGQ/PzEpfWZ1bmN0aW9uIEoxKGwsYyxhLGQpe3RoaXMucj0rbCx0aGlzLmc9K2MsdGhpcy5iPSthLHRoaXMub3BhY2l0eT0rZH1mdW5jdGlvbiBkZ2UoKXtyZXR1cm5gIyR7VzcodGhpcy5yKX0ke1c3KHRo''@;'; put 'put ''aXMuZyl9JHtXNyh0aGlzLmIpfWB9ZnVuY3Rpb24gaGdlKCl7Y29uc3QgbD1ERih0aGlzLm9wYWNpdHkpO3JldHVybmAkezE9PT1sPyJyZ2IoIjoicmdiYSgifSR7WTcodGhpcy5yKX0sICR7WTcodGhpcy5nKX0sICR7WTcodGhpcy5iKX0kezE9PT1sPyIpIjpgLCAke2x9KWB9YH1mdW5jdGlv''@;'; put 'put ''biBERihsKXtyZXR1cm4gaXNOYU4obCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsbCkpfWZ1bmN0aW9uIFk3KGwpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKGwpfHwwKSl9ZnVuY3Rpb24gVzcobCl7cmV0dXJuKChsPVk3KGwpKTwxNj8iMCI6IiIpK2wudG9T''@;'; put 'put ''dHJpbmcoMTYpfWZ1bmN0aW9uIGZnZShsLGMsYSxkKXtyZXR1cm4gZDw9MD9sPWM9YT1OYU46YTw9MHx8YT49MT9sPWM9TmFOOmM8PTAmJihsPU5hTiksbmV3IHhmKGwsYyxhLGQpfWZ1bmN0aW9uIHBnZShsKXtpZihsIGluc3RhbmNlb2YgeGYpcmV0dXJuIG5ldyB4ZihsLmgsbC5zLGwubCxs''@;'; put 'put ''Lm9wYWNpdHkpO2lmKGwgaW5zdGFuY2VvZiByVHx8KGw9WjcobCkpLCFsKXJldHVybiBuZXcgeGY7aWYobCBpbnN0YW5jZW9mIHhmKXJldHVybiBsO3ZhciBjPShsPWwucmdiKCkpLnIvMjU1LGE9bC5nLzI1NSxkPWwuYi8yNTUsaD1NYXRoLm1pbihjLGEsZCksZj1NYXRoLm1heChjLGEsZCks''@;'; put 'put ''dj1OYU4sUz1mLWgsVj0oZitoKS8yO3JldHVybiBTPyh2PWM9PT1mPyhhLWQpL1MrNiooYTxkKTphPT09Zj8oZC1jKS9TKzI6KGMtYSkvUys0LFMvPVY8LjU/ZitoOjItZi1oLHYqPTYwKTpTPVY+MCYmVjwxPzA6dixuZXcgeGYodixTLFYsbC5vcGFjaXR5KX1mdW5jdGlvbiB4ZihsLGMsYSxk''@;'; put 'put ''KXt0aGlzLmg9K2wsdGhpcy5zPStjLHRoaXMubD0rYSx0aGlzLm9wYWNpdHk9K2R9ZnVuY3Rpb24gZ2dlKGwpe3JldHVybihsPShsfHwwKSUzNjApPDA/bCszNjA6bH1mdW5jdGlvbiBJRihsKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLGx8fDApKX1mdW5jdGlvbiBrSihsLGMsYSl7''@;'; put 'put ''cmV0dXJuIDI1NSoobDw2MD9jKyhhLWMpKmwvNjA6bDwxODA/YTpsPDI0MD9jKyhhLWMpKigyNDAtbCkvNjA6Yyl9ZnVuY3Rpb24gbWdlKGwsYyxhLGQsaCl7dmFyIGY9bCpsLHY9ZipsO3JldHVybigoMS0zKmwrMypmLXYpKmMrKDQtNipmKzMqdikqYSsoMSszKmwrMypmLTMqdikqZCt2Kmgp''@;'; put 'put ''LzZ9VEooclQsWjcse2NvcHkobCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxsKX0sZGlzcGxheWFibGUoKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6bGdlLGZvcm1hdEhleDpsZ2UsZm9ybWF0SGV4ODpmdW5jdGlvbiBsN3Qo''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXg4KCl9LGZvcm1hdEhzbDpmdW5jdGlvbiBjN3QoKXtyZXR1cm4gcGdlKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6Y2dlLHRvU3RyaW5nOmNnZX0pLFRKKEoxLEFGLHNnZShyVCx7YnJpZ2h0ZXIobCl7cmV0dXJuIGw9bnVsbD09bD9U''@;'; put 'put ''RjpNYXRoLnBvdyhURixsKSxuZXcgSjEodGhpcy5yKmwsdGhpcy5nKmwsdGhpcy5iKmwsdGhpcy5vcGFjaXR5KX0sZGFya2VyKGwpe3JldHVybiBsPW51bGw9PWw/Ljc6TWF0aC5wb3coLjcsbCksbmV3IEoxKHRoaXMucipsLHRoaXMuZypsLHRoaXMuYipsLHRoaXMub3BhY2l0eSl9LHJnYigp''@;'; put 'put ''e3JldHVybiB0aGlzfSxjbGFtcCgpe3JldHVybiBuZXcgSjEoWTcodGhpcy5yKSxZNyh0aGlzLmcpLFk3KHRoaXMuYiksREYodGhpcy5vcGFjaXR5KSl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41''@;'; put 'put ''PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpkZ2UsZm9ybWF0SGV4OmRnZSxmb3JtYXRIZXg4OmZ1bmN0aW9uIGQ3dCgpe3JldHVybmAjJHtXNyh0aGlzLnIpfSR7VzcodGhpcy5nKX0ke1c3KHRoaXMuYil9JHtXNygyNTUqKGlz''@;'; put 'put ''TmFOKHRoaXMub3BhY2l0eSk/MTp0aGlzLm9wYWNpdHkpKX1gfSxmb3JtYXRSZ2I6aGdlLHRvU3RyaW5nOmhnZX0pKSxUSih4ZixmdW5jdGlvbiBoN3QobCxjLGEsZCl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3BnZShsKTpuZXcgeGYobCxjLGEsZD8/MSl9LHNnZShyVCx7YnJpZ2h0''@;'; put 'put ''ZXIobCl7cmV0dXJuIGw9bnVsbD09bD9URjpNYXRoLnBvdyhURixsKSxuZXcgeGYodGhpcy5oLHRoaXMucyx0aGlzLmwqbCx0aGlzLm9wYWNpdHkpfSxkYXJrZXIobCl7cmV0dXJuIGw9bnVsbD09bD8uNzpNYXRoLnBvdyguNyxsKSxuZXcgeGYodGhpcy5oLHRoaXMucyx0aGlzLmwqbCx0aGlz''@;'; put 'put ''Lm9wYWNpdHkpfSxyZ2IoKXt2YXIgbD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGM9aXNOYU4obCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsYT10aGlzLmwsZD1hKyhhPC41P2E6MS1hKSpjLGg9MiphLWQ7cmV0dXJuIG5ldyBKMShrSihsPj0yNDA/bC0yNDA6bCsxMjAsaCxkKSxrSihs''@;'; put 'put ''LGgsZCksa0oobDwxMjA/bCsyNDA6bC0xMjAsaCxkKSx0aGlzLm9wYWNpdHkpfSxjbGFtcCgpe3JldHVybiBuZXcgeGYoZ2dlKHRoaXMuaCksSUYodGhpcy5zKSxJRih0aGlzLmwpLERGKHRoaXMub3BhY2l0eSkpfSxkaXNwbGF5YWJsZSgpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8''@;'; put 'put ''aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsKCl7Y29uc3QgbD1ERih0aGlzLm9wYWNpdHkpO3JldHVybmAkezE9PT1sPyJoc2woIjoiaHNsYSgifSR7Z2dlKHRoaXMuaCl9LCAkezEwMCpJRih0''@;'; put 'put ''aGlzLnMpfSUsICR7MTAwKklGKHRoaXMubCl9JSR7MT09PWw/IikiOmAsICR7bH0pYH1gfX0pKTtjb25zdCBBSj1sPT4oKT0+bDtmdW5jdGlvbiBfZ2UobCxjKXt2YXIgYT1jLWw7cmV0dXJuIGE/ZnVuY3Rpb24gdmdlKGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBsK2EqY319KGws''@;'; put 'put ''YSk6QUooaXNOYU4obCk/YzpsKX1jb25zdCBSRj1mdW5jdGlvbiBsKGMpe3ZhciBhPWZ1bmN0aW9uIG03dChsKXtyZXR1cm4gMT09KGw9K2wpP19nZTpmdW5jdGlvbihjLGEpe3JldHVybiBhLWM/ZnVuY3Rpb24gZzd0KGwsYyxhKXtyZXR1cm4gbD1NYXRoLnBvdyhsLGEpLGM9TWF0aC5wb3co''@;'; put 'put ''YyxhKS1sLGE9MS9hLGZ1bmN0aW9uKGQpe3JldHVybiBNYXRoLnBvdyhsK2QqYyxhKX19KGMsYSxsKTpBSihpc05hTihjKT9hOmMpfX0oYyk7ZnVuY3Rpb24gZChoLGYpe3ZhciB2PWEoKGg9QUYoaCkpLnIsKGY9QUYoZikpLnIpLFM9YShoLmcsZi5nKSxWPWEoaC5iLGYuYiksUT1fZ2UoaC5v''@;'; put 'put ''cGFjaXR5LGYub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGRlKXtyZXR1cm4gaC5yPXYoZGUpLGguZz1TKGRlKSxoLmI9VihkZSksaC5vcGFjaXR5PVEoZGUpLGgrIiJ9fXJldHVybiBkLmdhbW1hPWwsZH0oMSk7ZnVuY3Rpb24gYmdlKGwpe3JldHVybiBmdW5jdGlvbihjKXt2YXIgdixTLGE9''@;'; put 'put ''Yy5sZW5ndGgsZD1uZXcgQXJyYXkoYSksaD1uZXcgQXJyYXkoYSksZj1uZXcgQXJyYXkoYSk7Zm9yKHY9MDt2PGE7Kyt2KVM9QUYoY1t2XSksZFt2XT1TLnJ8fDAsaFt2XT1TLmd8fDAsZlt2XT1TLmJ8fDA7cmV0dXJuIGQ9bChkKSxoPWwoaCksZj1sKGYpLFMub3BhY2l0eT0xLGZ1bmN0aW9u''@;'; put 'put ''KFYpe3JldHVybiBTLnI9ZChWKSxTLmc9aChWKSxTLmI9ZihWKSxTKyIifX19YmdlKGZ1bmN0aW9uIGY3dChsKXt2YXIgYz1sLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihhKXt2YXIgZD1hPD0wP2E9MDphPj0xPyhhPTEsYy0xKTpNYXRoLmZsb29yKGEqYyksaD1sW2RdLGY9bFtkKzFdO3Jl''@;'; put 'put ''dHVybiBtZ2UoKGEtZC9jKSpjLGQ+MD9sW2QtMV06MipoLWYsaCxmLGQ8Yy0xP2xbZCsyXToyKmYtaCl9fSksYmdlKGZ1bmN0aW9uIHA3dChsKXt2YXIgYz1sLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGQ9TWF0aC5mbG9vcigoKGElPTEpPDA/KythOmEpKmMpO3JldHVybiBtZ2Uo''@;'; put 'put ''KGEtZC9jKSpjLGxbKGQrYy0xKSVjXSxsW2QlY10sbFsoZCsxKSVjXSxsWyhkKzIpJWNdKX19KTt2YXIgREo9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLElKPW5ldyBSZWdFeHAoREouc291cmNlLCJnIik7ZnVuY3Rpb24geWdlKGwsYyl7dmFyIGQsaCxm''@;'; put 'put ''LGE9REoubGFzdEluZGV4PUlKLmxhc3RJbmRleD0wLHY9LTEsUz1bXSxWPVtdO2ZvcihsKz0iIixjKz0iIjsoZD1ESi5leGVjKGwpKSYmKGg9SUouZXhlYyhjKSk7KShmPWguaW5kZXgpPmEmJihmPWMuc2xpY2UoYSxmKSxTW3ZdP1Nbdl0rPWY6U1srK3ZdPWYpLChkPWRbMF0pPT09KGg9aFsw''@;'; put 'put ''XSk/U1t2XT9TW3ZdKz1oOlNbKyt2XT1oOihTWysrdl09bnVsbCxWLnB1c2goe2k6dix4OnVwKGQsaCl9KSksYT1JSi5sYXN0SW5kZXg7cmV0dXJuIGE8Yy5sZW5ndGgmJihmPWMuc2xpY2UoYSksU1t2XT9TW3ZdKz1mOlNbKyt2XT1mKSxTLmxlbmd0aDwyP1ZbMF0/ZnVuY3Rpb24gXzd0KGwp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbChjKSsiIn19KFZbMF0ueCk6ZnVuY3Rpb24gdjd0KGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBsfX0oYyk6KGM9Vi5sZW5ndGgsZnVuY3Rpb24oUSl7Zm9yKHZhciBwZSxkZT0wO2RlPGM7KytkZSlTWyhwZT1WW2RlXSkuaV09cGUueChR''@;'; put 'put ''KTtyZXR1cm4gUy5qb2luKCIiKX0pfWZ1bmN0aW9uIHdnZShsLGMpe3ZhciBhO3JldHVybigibnVtYmVyIj09dHlwZW9mIGM/dXA6YyBpbnN0YW5jZW9mIFo3P1JGOihhPVo3KGMpKT8oYz1hLFJGKTp5Z2UpKGwsYyl9ZnVuY3Rpb24gYjd0KGwpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVt''@;'; put 'put ''b3ZlQXR0cmlidXRlKGwpfX1mdW5jdGlvbiB5N3QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwpfX1mdW5jdGlvbiB3N3QobCxjLGEpe3ZhciBkLGYsaD1hKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciB2PXRoaXMuZ2V0QXR0cmli''@;'; put 'put ''dXRlKGwpO3JldHVybiB2PT09aD9udWxsOnY9PT1kP2Y6Zj1jKGQ9dixhKX19ZnVuY3Rpb24gQzd0KGwsYyxhKXt2YXIgZCxmLGg9YSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdj10aGlzLmdldEF0dHJpYnV0ZU5TKGwuc3BhY2UsbC5sb2NhbCk7cmV0dXJuIHY9PT1oP251bGw6dj09PWQ/''@;'; put 'put ''ZjpmPWMoZD12LGEpfX1mdW5jdGlvbiBTN3QobCxjLGEpe3ZhciBkLGgsZjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdixWLFM9YSh0aGlzKTtyZXR1cm4gbnVsbD09Uz92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKGwpOih2PXRoaXMuZ2V0QXR0cmlidXRlKGwpKT09PShWPVMrIiIpP251bGw6''@;'; put 'put ''dj09PWQmJlY9PT1oP2Y6KGg9VixmPWMoZD12LFMpKX19ZnVuY3Rpb24gTTd0KGwsYyxhKXt2YXIgZCxoLGY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHYsVixTPWEodGhpcyk7cmV0dXJuIG51bGw9PVM/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGwuc3BhY2UsbC5sb2NhbCk6KHY9dGhp''@;'; put 'put ''cy5nZXRBdHRyaWJ1dGVOUyhsLnNwYWNlLGwubG9jYWwpKT09PShWPVMrIiIpP251bGw6dj09PWQmJlY9PT1oP2Y6KGg9VixmPWMoZD12LFMpKX19ZnVuY3Rpb24gazd0KGwsYyl7dmFyIGEsZDtmdW5jdGlvbiBoKCl7dmFyIGY9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGYhPT1k''@;'; put 'put ''JiYoYT0oZD1mKSYmZnVuY3Rpb24gVDd0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3RoaXMuc2V0QXR0cmlidXRlTlMobC5zcGFjZSxsLmxvY2FsLGMuY2FsbCh0aGlzLGEpKX19KGwsZikpLGF9cmV0dXJuIGguX3ZhbHVlPWMsaH1mdW5jdGlvbiBBN3QobCxjKXt2YXIgYSxkO2Z1bmN0aW9u''@;'; put 'put ''IGgoKXt2YXIgZj1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZiE9PWQmJihhPShkPWYpJiZmdW5jdGlvbiBFN3QobCxjKXtyZXR1cm4gZnVuY3Rpb24oYSl7dGhpcy5zZXRBdHRyaWJ1dGUobCxjLmNhbGwodGhpcyxhKSl9fShsLGYpKSxhfXJldHVybiBoLl92YWx1ZT1jLGh9ZnVu''@;'; put 'put ''Y3Rpb24gSTd0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7TUoodGhpcyxsKS5kZWxheT0rYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFI3dChsLGMpe3JldHVybiBjPStjLGZ1bmN0aW9uKCl7TUoodGhpcyxsKS5kZWxheT1jfX1mdW5jdGlvbiBPN3QobCxjKXtyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24oKXtjcCh0aGlzLGwpLmR1cmF0aW9uPStjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gUDd0KGwsYyl7cmV0dXJuIGM9K2MsZnVuY3Rpb24oKXtjcCh0aGlzLGwpLmR1cmF0aW9uPWN9fXZhciBLN3Q9ejcucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIENnZShs''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGwpfX12YXIgcDl0PTA7ZnVuY3Rpb24gaHAobCxjLGEsZCl7dGhpcy5fZ3JvdXBzPWwsdGhpcy5fcGFyZW50cz1jLHRoaXMuX25hbWU9YSx0aGlzLl9pZD1kfWZ1bmN0aW9uIFJKKGwpe3JldHVybiB6NygpLnRy''@;'; put 'put ''YW5zaXRpb24obCl9ZnVuY3Rpb24gU2dlKCl7cmV0dXJuKytwOXR9dmFyIHRnPXo3LnByb3RvdHlwZTtocC5wcm90b3R5cGU9UkoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpocCxzZWxlY3Q6ZnVuY3Rpb24gJDd0KGwpe3ZhciBjPXRoaXMuX25hbWUsYT10aGlzLl9pZDsiZnVuY3Rpb24iIT10''@;'; put 'put ''eXBlb2YgbCYmKGw9ZkoobCkpO2Zvcih2YXIgZD10aGlzLl9ncm91cHMsaD1kLmxlbmd0aCxmPW5ldyBBcnJheShoKSx2PTA7djxoOysrdilmb3IodmFyIGRlLHBlLFM9ZFt2XSxWPVMubGVuZ3RoLFE9Zlt2XT1uZXcgQXJyYXkoViksQ2U9MDtDZTxWOysrQ2UpKGRlPVNbQ2VdKSYmKHBlPWwu''@;'; put 'put ''Y2FsbChkZSxkZS5fX2RhdGFfXyxDZSxTKSkmJigiX19kYXRhX18iaW4gZGUmJihwZS5fX2RhdGFfXz1kZS5fX2RhdGFfXyksUVtDZV09cGUsTUYoUVtDZV0sYyxhLENlLFEsTWYoZGUsYSkpKTtyZXR1cm4gbmV3IGhwKGYsdGhpcy5fcGFyZW50cyxjLGEpfSxzZWxlY3RBbGw6ZnVuY3Rpb24g''@;'; put 'put ''cTd0KGwpe3ZhciBjPXRoaXMuX25hbWUsYT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgbCYmKGw9UDRlKGwpKTtmb3IodmFyIGQ9dGhpcy5fZ3JvdXBzLGg9ZC5sZW5ndGgsZj1bXSx2PVtdLFM9MDtTPGg7KytTKWZvcih2YXIgZGUsVj1kW1NdLFE9Vi5sZW5ndGgscGU9MDtwZTxROysr''@;'; put 'put ''cGUpaWYoZGU9VltwZV0pe2Zvcih2YXIgT2UsQ2U9bC5jYWxsKGRlLGRlLl9fZGF0YV9fLHBlLFYpLFllPU1mKGRlLGEpLGV0PTAsZHQ9Q2UubGVuZ3RoO2V0PGR0OysrZXQpKE9lPUNlW2V0XSkmJk1GKE9lLGMsYSxldCxDZSxZZSk7Zi5wdXNoKENlKSx2LnB1c2goZGUpfXJldHVybiBuZXcg''@;'; put 'put ''aHAoZix2LGMsYSl9LHNlbGVjdENoaWxkOnRnLnNlbGVjdENoaWxkLHNlbGVjdENoaWxkcmVuOnRnLnNlbGVjdENoaWxkcmVuLGZpbHRlcjpmdW5jdGlvbiBqN3QobCl7ImZ1bmN0aW9uIiE9dHlwZW9mIGwmJihsPUY0ZShsKSk7Zm9yKHZhciBjPXRoaXMuX2dyb3VwcyxhPWMubGVuZ3RoLGQ9''@;'; put 'put ''bmV3IEFycmF5KGEpLGg9MDtoPGE7KytoKWZvcih2YXIgVixmPWNbaF0sdj1mLmxlbmd0aCxTPWRbaF09W10sUT0wO1E8djsrK1EpKFY9ZltRXSkmJmwuY2FsbChWLFYuX19kYXRhX18sUSxmKSYmUy5wdXNoKFYpO3JldHVybiBuZXcgaHAoZCx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhp''@;'; put 'put ''cy5faWQpfSxtZXJnZTpmdW5jdGlvbiB6N3QobCl7aWYobC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBjPXRoaXMuX2dyb3VwcyxhPWwuX2dyb3VwcyxkPWMubGVuZ3RoLGY9TWF0aC5taW4oZCxhLmxlbmd0aCksdj1uZXcgQXJyYXkoZCksUz0wO1M8ZjsrK1MpZm9y''@;'; put 'put ''KHZhciBDZSxWPWNbU10sUT1hW1NdLGRlPVYubGVuZ3RoLHBlPXZbU109bmV3IEFycmF5KGRlKSxPZT0wO09lPGRlOysrT2UpKENlPVZbT2VdfHxRW09lXSkmJihwZVtPZV09Q2UpO2Zvcig7UzxkOysrUyl2W1NdPWNbU107cmV0dXJuIG5ldyBocCh2LHRoaXMuX3BhcmVudHMsdGhpcy5fbmFt''@;'; put 'put ''ZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBYN3QoKXtyZXR1cm4gbmV3IEs3dCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gaDl0KCl7Zm9yKHZhciBsPXRoaXMuX25hbWUsYz10aGlzLl9pZCxhPVNnZSgpLGQ9dGhpcy5fZ3JvdXBzLGg9''@;'; put 'put ''ZC5sZW5ndGgsZj0wO2Y8aDsrK2YpZm9yKHZhciBWLHY9ZFtmXSxTPXYubGVuZ3RoLFE9MDtRPFM7KytRKWlmKFY9dltRXSl7dmFyIGRlPU1mKFYsYyk7TUYoVixsLGEsUSx2LHt0aW1lOmRlLnRpbWUrZGUuZGVsYXkrZGUuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjpkZS5kdXJhdGlvbixl''@;'; put 'put ''YXNlOmRlLmVhc2V9KX1yZXR1cm4gbmV3IGhwKGQsdGhpcy5fcGFyZW50cyxsLGEpfSxjYWxsOnRnLmNhbGwsbm9kZXM6dGcubm9kZXMsbm9kZTp0Zy5ub2RlLHNpemU6dGcuc2l6ZSxlbXB0eTp0Zy5lbXB0eSxlYWNoOnRnLmVhY2gsb246ZnVuY3Rpb24gWTd0KGwsYyl7dmFyIGE9dGhpcy5f''@;'; put 'put ''aWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9NZih0aGlzLm5vZGUoKSxhKS5vbi5vbihsKTp0aGlzLmVhY2goZnVuY3Rpb24gWjd0KGwsYyxhKXt2YXIgZCxoLGY9ZnVuY3Rpb24gVTd0KGwpe3JldHVybihsKyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoZnVuY3Rpb24oYyl7''@;'; put 'put ''dmFyIGE9Yy5pbmRleE9mKCIuIik7cmV0dXJuIGE+PTAmJihjPWMuc2xpY2UoMCxhKSksIWN8fCJzdGFydCI9PT1jfSl9KGMpP01KOmNwO3JldHVybiBmdW5jdGlvbigpe3ZhciB2PWYodGhpcyxsKSxTPXYub247UyE9PWQmJihoPShkPVMpLmNvcHkoKSkub24oYyxhKSx2Lm9uPWh9fShhLGws''@;'; put 'put ''YykpfSxhdHRyOmZ1bmN0aW9uIHg3dChsLGMpe3ZhciBhPWdGKGwpLGQ9InRyYW5zZm9ybSI9PT1hP29nZTp3Z2U7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKGwsImZ1bmN0aW9uIj09dHlwZW9mIGM/KGEubG9jYWw/TTd0OlM3dCkoYSxkLEVKKHRoaXMsImF0dHIuIitsLGMpKTpudWxsPT1jPyhh''@;'; put 'put ''LmxvY2FsP3k3dDpiN3QpKGEpOihhLmxvY2FsP0M3dDp3N3QpKGEsZCxjKSl9LGF0dHJUd2VlbjpmdW5jdGlvbiBEN3QobCxjKXt2YXIgYT0iYXR0ci4iK2w7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihhPXRoaXMudHdlZW4oYSkpJiZhLl92YWx1ZTtpZihudWxsPT1jKXJldHVybiB0''@;'; put 'put ''aGlzLnR3ZWVuKGEsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMpdGhyb3cgbmV3IEVycm9yO3ZhciBkPWdGKGwpO3JldHVybiB0aGlzLnR3ZWVuKGEsKGQubG9jYWw/azd0OkE3dCkoZCxjKSl9LHN0eWxlOmZ1bmN0aW9uIG45dChsLGMsYSl7dmFyIGQ9InRyYW5zZm9ybSI9PShsKz0i''@;'; put 'put ''Iik/WDh0OndnZTtyZXR1cm4gbnVsbD09Yz90aGlzLnN0eWxlVHdlZW4obCxmdW5jdGlvbiBKN3QobCxjKXt2YXIgYSxkLGg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGY9Z3kodGhpcyxsKSx2PSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGwpLGd5KHRoaXMsbCkpO3JldHVybiBmPT09dj9u''@;'; put 'put ''dWxsOmY9PT1hJiZ2PT09ZD9oOmg9YyhhPWYsZD12KX19KGwsZCkpLm9uKCJlbmQuc3R5bGUuIitsLENnZShsKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGM/dGhpcy5zdHlsZVR3ZWVuKGwsZnVuY3Rpb24gZTl0KGwsYyxhKXt2YXIgZCxoLGY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHY9Z3kodGhp''@;'; put 'put ''cyxsKSxTPWEodGhpcyksVj1TKyIiO3JldHVybiBudWxsPT1TJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShsKSxWPVM9Z3kodGhpcyxsKSksdj09PVY/bnVsbDp2PT09ZCYmVj09PWg/ZjooaD1WLGY9YyhkPXYsUykpfX0obCxkLEVKKHRoaXMsInN0eWxlLiIrbCxjKSkpLmVhY2goZnVu''@;'; put 'put ''Y3Rpb24gdDl0KGwsYyl7dmFyIGEsZCxoLFMsZj0ic3R5bGUuIitjLHY9ImVuZC4iK2Y7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIFY9Y3AodGhpcyxsKSxRPVYub24sZGU9bnVsbD09Vi52YWx1ZVtmXT9TfHwoUz1DZ2UoYykpOnZvaWQgMDsoUSE9PWF8fGghPT1kZSkmJihkPShhPVEpLmNvcHko''@;'; put 'put ''KSkub24odixoPWRlKSxWLm9uPWR9fSh0aGlzLl9pZCxsKSk6dGhpcy5zdHlsZVR3ZWVuKGwsZnVuY3Rpb24gUTd0KGwsYyxhKXt2YXIgZCxmLGg9YSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdj1neSh0aGlzLGwpO3JldHVybiB2PT09aD9udWxsOnY9PT1kP2Y6Zj1jKGQ9dixhKX19KGws''@;'; put 'put ''ZCxjKSxhKS5vbigiZW5kLnN0eWxlLiIrbCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBvOXQobCxjLGEpe3ZhciBkPSJzdHlsZS4iKyhsKz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihkPXRoaXMudHdlZW4oZCkpJiZkLl92YWx1ZTtpZihudWxsPT1jKXJldHVybiB0aGlz''@;'; put 'put ''LnR3ZWVuKGQsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGMpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGQsZnVuY3Rpb24gaTl0KGwsYyxhKXt2YXIgZCxoO2Z1bmN0aW9uIGYoKXt2YXIgdj1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdiE9PWgmJihkPSho''@;'; put 'put ''PXYpJiZmdW5jdGlvbiByOXQobCxjLGEpe3JldHVybiBmdW5jdGlvbihkKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KGwsYy5jYWxsKHRoaXMsZCksYSl9fShsLHYsYSkpLGR9cmV0dXJuIGYuX3ZhbHVlPWMsZn0obCxjLGE/PyIiKSl9LHRleHQ6ZnVuY3Rpb24gbDl0KGwpe3JldHVybiB0aGlz''@;'; put 'put ''LnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgbD9mdW5jdGlvbiBhOXQobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9bCh0aGlzKTt0aGlzLnRleHRDb250ZW50PWM/PyIifX0oRUoodGhpcywidGV4dCIsbCkpOmZ1bmN0aW9uIHM5dChsKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LnRleHRDb250ZW50PWx9fShudWxsPT1sPyIiOmwrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIGQ5dChsKXt2YXIgYz0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihjPXRoaXMudHdlZW4oYykpJiZjLl92YWx1ZTtpZihudWxsPT1sKXJldHVybiB0aGlzLnR3ZWVuKGMsbnVs''@;'; put 'put ''bCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGwpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGMsZnVuY3Rpb24gdTl0KGwpe3ZhciBjLGE7ZnVuY3Rpb24gZCgpe3ZhciBoPWwuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBoIT09YSYmKGM9KGE9aCkmJmZ1bmN0aW9uIGM5''@;'; put 'put ''dChsKXtyZXR1cm4gZnVuY3Rpb24oYyl7dGhpcy50ZXh0Q29udGVudD1sLmNhbGwodGhpcyxjKX19KGgpKSxjfXJldHVybiBkLl92YWx1ZT1sLGR9KGwpKX0scmVtb3ZlOmZ1bmN0aW9uIEc3dCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixmdW5jdGlvbiBXN3QobCl7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIGM9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgYSBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrYSE9PWwpcmV0dXJuO2MmJmMucmVtb3ZlQ2hpbGQodGhpcyl9fSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBlN3QobCxjKXt2YXIgYT10aGlzLl9pZDtpZihsKz0iIixh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgdixkPU1mKHRoaXMubm9kZSgpLGEpLnR3ZWVuLGg9MCxmPWQubGVuZ3RoO2g8ZjsrK2gpaWYoKHY9ZFtoXSkubmFtZT09PWwpcmV0dXJuIHYudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09Yz9KOHQ6UTh0KShhLGws''@;'; put 'put ''YykpfSxkZWxheTpmdW5jdGlvbiBMN3QobCl7dmFyIGM9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgbD9JN3Q6Ujd0KShjLGwpKTpNZih0aGlzLm5vZGUoKSxjKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gRjd0KGwpe3Zh''@;'; put 'put ''ciBjPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGw/Tzd0OlA3dCkoYyxsKSk6TWYodGhpcy5ub2RlKCksYykuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gSDd0KGwpe3ZhciBjPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbiBON3QobCxjKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYyl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7Y3AodGhpcyxsKS5lYXNlPWN9fShjLGwpKTpNZih0aGlzLm5vZGUoKSxjKS5lYXNlfSxlYXNlVmFyeWluZzpmdW5jdGlvbiBC''@;'; put 'put ''N3QobCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGwpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gVjd0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yO2NwKHRoaXMsbCkuZWFzZT1hfX0odGhpcy5faWQsbCkpfSxlbmQ6ZnVuY3Rpb24gZjl0KCl7dmFyIGwsYyxhPXRoaXMsZD1hLl9pZCxoPWEuc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmLHYpe3ZhciBTPXt2YWx1ZTp2fSxWPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0t''@;'; put 'put ''aCYmZigpfX07YS5lYWNoKGZ1bmN0aW9uKCl7dmFyIFE9Y3AodGhpcyxkKSxkZT1RLm9uO2RlIT09bCYmKChjPShsPWRlKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2goUyksYy5fLmludGVycnVwdC5wdXNoKFMpLGMuXy5lbmQucHVzaChWKSksUS5vbj1jfSksMD09PWgmJmYoKX0pfSxbU3ltYm9s''@;'; put 'put ''Lml0ZXJhdG9yXTp0Z1tTeW1ib2wuaXRlcmF0b3JdfTt2YXIgbTl0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBnOXQobCl7cmV0dXJuKChsKj0yKTw9MT9sKmwqbDoobC09MikqbCpsKzIpLzJ9fTtmdW5jdGlvbiB2OXQobCxjKXtmb3IodmFyIGE7IShh''@;'; put 'put ''PWwuX190cmFuc2l0aW9uKXx8IShhPWFbY10pOylpZighKGw9bC5wYXJlbnROb2RlKSl0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtjfSBub3QgZm91bmRgKTtyZXR1cm4gYX16Ny5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uICQ4dChsKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0''@;'; put 'put ''aW9uKCl7eEYodGhpcyxsKX0pfSx6Ny5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiBfOXQobCl7dmFyIGMsYTtsIGluc3RhbmNlb2YgaHA/KGM9bC5faWQsbD1sLl9uYW1lKTooYz1TZ2UoKSwoYT1tOXQpLnRpbWU9YkooKSxsPW51bGw9PWw/bnVsbDpsKyIiKTtmb3IodmFyIGQ9dGhp''@;'; put 'put ''cy5fZ3JvdXBzLGg9ZC5sZW5ndGgsZj0wO2Y8aDsrK2YpZm9yKHZhciBWLHY9ZFtmXSxTPXYubGVuZ3RoLFE9MDtRPFM7KytRKShWPXZbUV0pJiZNRihWLGwsYyxRLHYsYXx8djl0KFYsYykpO3JldHVybiBuZXcgaHAoZCx0aGlzLl9wYXJlbnRzLGwsYyl9O3ZhciBiOXQ9W251bGxdO2NvbnN0''@;'; put 'put ''IExKPXtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9O2Z1bmN0aW9uIE9KKGwpe2wucHJldmVudERlZmF1bHQoKSxsLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIE1nZShsKXtyZXR1cm4oKGw9TWF0aC5leHAobCkpKzEvbCkvMn1jb25zdCBFOXQ9ZnVuY3Rpb24gbChjLGEsZCl7''@;'; put 'put ''ZnVuY3Rpb24gaChmLHYpe3ZhciBkdCxodCxTPWZbMF0sVj1mWzFdLFE9ZlsyXSxDZT12WzJdLE9lPXZbMF0tUyxZZT12WzFdLVYsZXQ9T2UqT2UrWWUqWWU7aWYoZXQ8MWUtMTIpaHQ9TWF0aC5sb2coQ2UvUSkvYyxkdD1mdW5jdGlvbihucil7cmV0dXJuW1MrbnIqT2UsVitucipZZSxRKk1h''@;'; put 'put ''dGguZXhwKGMqbnIqaHQpXX07ZWxzZXt2YXIgTXQ9TWF0aC5zcXJ0KGV0KSxRdD0oQ2UqQ2UtUSpRK2QqZXQpLygyKlEqYSpNdCksbG49KENlKkNlLVEqUS1kKmV0KS8oMipDZSphKk10KSx2bj1NYXRoLmxvZyhNYXRoLnNxcnQoUXQqUXQrMSktUXQpLHduPU1hdGgubG9nKE1hdGguc3FydChs''@;'; put 'put ''bipsbisxKS1sbik7aHQ9KHduLXZuKS9jLGR0PWZ1bmN0aW9uKG5yKXt2YXIgdnI9bnIqaHQsTWk9TWdlKHZuKSxQaT1RLyhhKk10KSooTWkqZnVuY3Rpb24geDl0KGwpe3JldHVybigobD1NYXRoLmV4cCgyKmwpKS0xKS8obCsxKX0oYyp2cit2biktZnVuY3Rpb24gTTl0KGwpe3JldHVybigo''@;'; put 'put ''bD1NYXRoLmV4cChsKSktMS9sKS8yfSh2bikpO3JldHVybltTK1BpKk9lLFYrUGkqWWUsUSpNaS9NZ2UoYyp2cit2bildfX1yZXR1cm4gZHQuZHVyYXRpb249MWUzKmh0KmMvTWF0aC5TUVJUMixkdH1yZXR1cm4gaC5yaG89ZnVuY3Rpb24oZil7dmFyIHY9TWF0aC5tYXgoLjAwMSwrZiksUz12''@;'; put 'put ''KnY7cmV0dXJuIGwodixTLFMqUyl9LGh9KE1hdGguU1FSVDIsMiw0KTtmdW5jdGlvbiBHNyhsLGMpe2lmKGw9ZnVuY3Rpb24gVDl0KGwpe2xldCBjO2Zvcig7Yz1sLnNvdXJjZUV2ZW50OylsPWM7cmV0dXJuIGx9KGwpLHZvaWQgMD09PWMmJihjPWwuY3VycmVudFRhcmdldCksYyl7dmFyIGE9''@;'; put 'put ''Yy5vd25lclNWR0VsZW1lbnR8fGM7aWYoYS5jcmVhdGVTVkdQb2ludCl7dmFyIGQ9YS5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBkLng9bC5jbGllbnRYLGQueT1sLmNsaWVudFksWyhkPWQubWF0cml4VHJhbnNmb3JtKGMuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxkLnldfWlmKGMu''@;'; put 'put ''Z2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgaD1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltsLmNsaWVudFgtaC5sZWZ0LWMuY2xpZW50TGVmdCxsLmNsaWVudFktaC50b3AtYy5jbGllbnRUb3BdfX1yZXR1cm5bbC5wYWdlWCxsLnBhZ2VZXX1jb25zdCBMRj1sPT4oKT0+bDtm''@;'; put 'put ''dW5jdGlvbiBrOXQobCx7c291cmNlRXZlbnQ6Yyx0YXJnZXQ6YSx0cmFuc2Zvcm06ZCxkaXNwYXRjaDpofSl7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7dHlwZTp7dmFsdWU6bCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc291cmNlRXZlbnQ6e3ZhbHVlOmMsZW51bWVy''@;'; put 'put ''YWJsZTohMCxjb25maWd1cmFibGU6ITB9LHRhcmdldDp7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sdHJhbnNmb3JtOnt2YWx1ZTpkLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxfOnt2YWx1ZTpofX0pfWZ1bmN0aW9uIG5nKGwsYyxhKXt0aGlzLms9bCx0''@;'; put 'put ''aGlzLng9Yyx0aGlzLnk9YX1uZy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm5nLHNjYWxlOmZ1bmN0aW9uKGwpe3JldHVybiAxPT09bD90aGlzOm5ldyBuZyh0aGlzLmsqbCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGwsYyl7cmV0dXJuIDA9PT1sJjA9PT1jP3RoaXM6bmV3''@;'; put 'put ''IG5nKHRoaXMuayx0aGlzLngrdGhpcy5rKmwsdGhpcy55K3RoaXMuaypjKX0sYXBwbHk6ZnVuY3Rpb24obCl7cmV0dXJuW2xbMF0qdGhpcy5rK3RoaXMueCxsWzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24obCl7cmV0dXJuIGwqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0''@;'; put 'put ''aW9uKGwpe3JldHVybiBsKnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbihsKXtyZXR1cm5bKGxbMF0tdGhpcy54KS90aGlzLmssKGxbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKGwpe3JldHVybihsLXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKGwp''@;'; put 'put ''e3JldHVybihsLXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbihsKXtyZXR1cm4gbC5jb3B5KCkuZG9tYWluKGwucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcChsLmludmVydCxsKSl9LHJlc2NhbGVZOmZ1bmN0aW9uKGwpe3JldHVybiBsLmNvcHkoKS5kb21haW4o''@;'; put 'put ''bC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKGwuaW52ZXJ0LGwpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIE9GPW5ldyBuZygxLDAsMCk7ZnVuY3Rpb24gUEYo''@;'; put 'put ''bCl7Zm9yKDshbC5fX3pvb207KWlmKCEobD1sLnBhcmVudE5vZGUpKXJldHVybiBPRjtyZXR1cm4gbC5fX3pvb219ZnVuY3Rpb24gUEoobCl7bC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBzVChsKXtsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wSW1tZWRpYXRlUHJvcGFn''@;'; put 'put ''YXRpb24oKX1mdW5jdGlvbiBBOXQobCl7cmV0dXJuIShsLmN0cmxLZXkmJiJ3aGVlbCIhPT1sLnR5cGV8fGwuYnV0dG9uKX1mdW5jdGlvbiBEOXQoKXt2YXIgbD10aGlzO3JldHVybiBsIGluc3RhbmNlb2YgU1ZHRWxlbWVudD8obD1sLm93bmVyU1ZHRWxlbWVudHx8bCkuaGFzQXR0cmlidXRl''@;'; put 'put ''KCJ2aWV3Qm94Iik/W1sobD1sLnZpZXdCb3guYmFzZVZhbCkueCxsLnldLFtsLngrbC53aWR0aCxsLnkrbC5oZWlnaHRdXTpbWzAsMF0sW2wud2lkdGguYmFzZVZhbC52YWx1ZSxsLmhlaWdodC5iYXNlVmFsLnZhbHVlXV06W1swLDBdLFtsLmNsaWVudFdpZHRoLGwuY2xpZW50SGVpZ2h0XV19''@;'; put 'put ''ZnVuY3Rpb24geGdlKCl7cmV0dXJuIHRoaXMuX196b29tfHxPRn1mdW5jdGlvbiBJOXQobCl7cmV0dXJuLWwuZGVsdGFZKigxPT09bC5kZWx0YU1vZGU/LjA1OmwuZGVsdGFNb2RlPzE6LjAwMikqKGwuY3RybEtleT8xMDoxKX1mdW5jdGlvbiBSOXQoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRv''@;'; put 'put ''dWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gTDl0KGwsYyxhKXt2YXIgZD1sLmludmVydFgoY1swXVswXSktYVswXVswXSxoPWwuaW52ZXJ0WChjWzFdWzBdKS1hWzFdWzBdLGY9bC5pbnZlcnRZKGNbMF1bMV0pLWFbMF1bMV0sdj1sLmludmVydFkoY1sxXVsxXSkt''@;'; put 'put ''YVsxXVsxXTtyZXR1cm4gbC50cmFuc2xhdGUoaD5kPyhkK2gpLzI6TWF0aC5taW4oMCxkKXx8TWF0aC5tYXgoMCxoKSx2PmY/KGYrdikvMjpNYXRoLm1pbigwLGYpfHxNYXRoLm1heCgwLHYpKX1mdW5jdGlvbiBFZ2UobCl7dmFyIGM9e30sYT1sLm5vZGUoKS5ub2RlTmFtZTtjLnRhZz1hLCIj''@;'; put 'put ''dGV4dCI9PWE/Yy50ZXh0PWwudGV4dCgpOiIjY29tbWVudCI9PWEmJihjLmNvbW1lbnQ9bC50ZXh0KCkpLGMuYXR0cmlidXRlcz17fTt2YXIgZD1sLm5vZGUoKS5hdHRyaWJ1dGVzO2lmKGQpZm9yKHZhciBoPTA7aDxkLmxlbmd0aDtoKyspe3ZhciBmPWRbaF07Yy5hdHRyaWJ1dGVzW2YubmFt''@;'; put 'put ''ZV09Zi52YWx1ZX12YXIgZGUsVj1sLm5vZGUoKS50cmFuc2Zvcm07aWYoViYmMCE9Vi5iYXNlVmFsLm51bWJlck9mSXRlbXMpe3ZhciBRPVYuYmFzZVZhbC5jb25zb2xpZGF0ZSgpLm1hdHJpeDtjLnRyYW5zbGF0aW9uPXt4OlEuZSx5OlEuZn0sYy5zY2FsZT1RLmF9aWYoImVsbGlwc2UiPT1h''@;'; put 'put ''JiYoYy5jZW50ZXI9e3g6Yy5hdHRyaWJ1dGVzLmN4LHk6Yy5hdHRyaWJ1dGVzLmN5fSksInBvbHlnb24iPT1hKXt2YXIgcGU9KGRlPWwuYXR0cigicG9pbnRzIikuc3BsaXQoIiAiKSkubWFwKGZ1bmN0aW9uKFF0KXtyZXR1cm4gUXQuc3BsaXQoIiwiKVswXX0pLENlPWRlLm1hcChmdW5jdGlv''@;'; put 'put ''bihRdCl7cmV0dXJuIFF0LnNwbGl0KCIsIilbMV19KSxPZT1NYXRoLm1pbi5hcHBseShudWxsLHBlKSxZZT1NYXRoLm1heC5hcHBseShudWxsLHBlKSxldD1NYXRoLm1pbi5hcHBseShudWxsLENlKSxkdD1NYXRoLm1heC5hcHBseShudWxsLENlKTtjLmJib3g9e3g6T2UseTpldCx3aWR0aDpZ''@;'; put 'put ''ZS1PZSxoZWlnaHQ6ZHQtZXR9LGMuY2VudGVyPXt4OihPZStZZSkvMix5OihldCtkdCkvMn19InBhdGgiPT1hJiYoKGRlPWwuYXR0cigiZCIpLnNwbGl0KC9bQS1aIF0vKSkuc2hpZnQoKSxwZT1kZS5tYXAoZnVuY3Rpb24oeXIpe3JldHVybit5ci5zcGxpdCgiLCIpWzBdfSksQ2U9ZGUubWFw''@;'; put 'put ''KGZ1bmN0aW9uKHlyKXtyZXR1cm4reXIuc3BsaXQoIiwiKVsxXX0pLE9lPU1hdGgubWluLmFwcGx5KG51bGwscGUpLFllPU1hdGgubWF4LmFwcGx5KG51bGwscGUpLGV0PU1hdGgubWluLmFwcGx5KG51bGwsQ2UpLGR0PU1hdGgubWF4LmFwcGx5KG51bGwsQ2UpLGMuYmJveD17eDpPZSx5OmV0''@;'; put 'put ''LHdpZHRoOlllLU9lLGhlaWdodDpkdC1ldH0sYy5jZW50ZXI9e3g6KE9lK1llKS8yLHk6KGV0K2R0KS8yfSxjLnRvdGFsTGVuZ3RoPWwubm9kZSgpLmdldFRvdGFsTGVuZ3RoKCkpO3JldHVybiJ0ZXh0Ij09YSYmKGMuY2VudGVyPXt4OmwuYXR0cigieCIpLHk6bC5hdHRyKCJ5Iil9KSwiI3Rl''@;'; put 'put ''eHQiPT1hP2MudGV4dD1sLnRleHQoKToiI2NvbW1lbnQiPT1hJiYoYy5jb21tZW50PWwudGV4dCgpKSxjfWZ1bmN0aW9uICQ3KGwpe3ZhciBjPUVnZShsKTtyZXR1cm4gYy5jaGlsZHJlbj1bXSx2SihsLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9JDcoWnModGhp''@;'; put 'put ''cykpO2QucGFyZW50PWMsYy5jaGlsZHJlbi5wdXNoKGQpfSksY31mdW5jdGlvbiBGSihsKXtyZXR1cm4iI3RleHQiPT1sLnRhZz9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik6IiNjb21tZW50Ij09bC50YWc/ZG9jdW1lbnQuY3JlYXRlQ29tbWVudChsLmNvbW1lbnQpOmRvY3VtZW50LmNy''@;'; put 'put ''ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGwudGFnKX1mdW5jdGlvbiBOSihsKXt2YXIgYz1GSihsKSxhPVpzKGMpLGQ9bC5hdHRyaWJ1dGVzO2Zvcih2YXIgaCBvZiBPYmplY3Qua2V5cyhkKSlhLmF0dHIoaCxkW2hdKTtyZXR1cm4gY31mdW5jdGlvbiBUZ2Uo''@;'; put 'put ''bCxjKXt2YXIgYT1acyhsLm5vZGUoKS5wYXJlbnROb2RlKSxkPU5KKGMpLGg9YS5pbnNlcnQoZnVuY3Rpb24oKXtyZXR1cm4gZH0sZnVuY3Rpb24oKXtyZXR1cm4gbC5ub2RlKCl9KTtyZXR1cm4gbC5yZW1vdmUoKSxofWZ1bmN0aW9uIEhKKGwsYyl7IWZ1bmN0aW9uIFA5dChsLGMpe2wuZGF0''@;'; put 'put ''dW0oYyksbC5kYXRhKFtjXSxmdW5jdGlvbihhKXtyZXR1cm4gYS5rZXl9KX0obCxjKSx2SihsLm5vZGUoKS5jaGlsZE5vZGVzKS5lYWNoKGZ1bmN0aW9uKGQsaCl7SEooWnModGhpcyksYy5jaGlsZHJlbltoXSl9KX1mdW5jdGlvbiBhVChsLGM9MCl7dmFyIGE9WnModGhpcyksaD1sLmF0dHJp''@;'; put 'put ''YnV0ZXMsZj1hLm5vZGUoKS5hdHRyaWJ1dGVzO2lmKGYpZm9yKHZhciB2PTA7djxmLmxlbmd0aDt2Kyspe3ZhciBTPWZbdl0sVj1TLm5hbWU7aWYoInhtbG5zIiE9Vi5zcGxpdCgiOiIpWzBdJiZTLm5hbWVzcGFjZVVSSSl7dmFyIFE9Uy5uYW1lc3BhY2VVUkkuc3BsaXQoIi8iKTtWPVFbUS5s''@;'; put 'put ''ZW5ndGgtMV0rIjoiK1Z9ViBpbiBofHwoaFtWXT1udWxsKX1mb3IodmFyIHBlIG9mIE9iamVjdC5rZXlzKGgpKWEuYXR0cihwZSxoW3BlXSk7bC50ZXh0JiZhLnRleHQobC50ZXh0KSxmdW5jdGlvbiBGOXQobCxjKXt2YXIgYT1sLnNlbGVjdEFsbChmdW5jdGlvbigpe3JldHVybiBsLm5vZGUo''@;'; put 'put ''KS5jaGlsZE5vZGVzfSksZD0oYT1hLmRhdGEoZnVuY3Rpb24odil7cmV0dXJuIHYuY2hpbGRyZW59LGZ1bmN0aW9uKHYpe3JldHVybiB2LnRhZysiLSIrY30pKS5lbnRlcigpLmFwcGVuZChmdW5jdGlvbih2KXtyZXR1cm4gRkoodil9KSxoPWEuZXhpdCgpO2g9aC5yZW1vdmUoKSxhPWQubWVy''@;'; put 'put ''Z2UoYSk7dmFyIGY9e307YS5lYWNoKGZ1bmN0aW9uKHYpe3ZhciBTPXYudGFnO251bGw9PWZbU10mJihmW1NdPTApO3ZhciBWPWZbU10rKzthVC5jYWxsKHRoaXMsdixWKX0pfShhLGMpfWZ1bmN0aW9uIGtnZShsLGMpe3ZhciB2LGE9Yz9jLmxlbmd0aDowLGQ9bD9NYXRoLm1pbihhLGwubGVu''@;'; put 'put ''Z3RoKTowLGg9bmV3IEFycmF5KGQpLGY9bmV3IEFycmF5KGEpO2Zvcih2PTA7djxkOysrdiloW3ZdPUZGKGxbdl0sY1t2XSk7Zm9yKDt2PGE7Kyt2KWZbdl09Y1t2XTtyZXR1cm4gZnVuY3Rpb24oUyl7Zm9yKHY9MDt2PGQ7Kyt2KWZbdl09aFt2XShTKTtyZXR1cm4gZn19ZnVuY3Rpb24gTjl0''@;'; put 'put ''KGwsYyl7dmFyIGE9bmV3IERhdGU7cmV0dXJuIGw9K2wsYz0rYyxmdW5jdGlvbihkKXtyZXR1cm4gYS5zZXRUaW1lKGwqKDEtZCkrYypkKSxhfX1mdW5jdGlvbiBIOXQobCxjKXt2YXIgaCxhPXt9LGQ9e307Zm9yKGggaW4obnVsbD09PWx8fCJvYmplY3QiIT10eXBlb2YgbCkmJihsPXt9KSwo''@;'; put 'put ''bnVsbD09PWN8fCJvYmplY3QiIT10eXBlb2YgYykmJihjPXt9KSxjKWggaW4gbD9hW2hdPUZGKGxbaF0sY1toXSk6ZFtoXT1jW2hdO3JldHVybiBmdW5jdGlvbihmKXtmb3IoaCBpbiBhKWRbaF09YVtoXShmKTtyZXR1cm4gZH19ZnVuY3Rpb24gVjl0KGwsYyl7Y3x8KGM9W10pO3ZhciBoLGE9''@;'; put 'put ''bD9NYXRoLm1pbihjLmxlbmd0aCxsLmxlbmd0aCk6MCxkPWMuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKGg9MDtoPGE7KytoKWRbaF09bFtoXSooMS1mKStjW2hdKmY7cmV0dXJuIGR9fWZ1bmN0aW9uIEZGKGwsYyl7dmFyIGQsYT10eXBlb2YgYztyZXR1cm4gbnVsbD09Y3x8ImJv''@;'; put 'put ''b2xlYW4iPT09YT9BSihjKTooIm51bWJlciI9PT1hP3VwOiJzdHJpbmciPT09YT8oZD1aNyhjKSk/KGM9ZCxSRik6eWdlOmMgaW5zdGFuY2VvZiBaNz9SRjpjIGluc3RhbmNlb2YgRGF0ZT9OOXQ6ZnVuY3Rpb24gQjl0KGwpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcobCkmJiEobCBpbnN0''@;'; put 'put ''YW5jZW9mIERhdGFWaWV3KX0oYyk/Vjl0OkFycmF5LmlzQXJyYXkoYyk/a2dlOiJmdW5jdGlvbiIhPXR5cGVvZiBjLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBjLnRvU3RyaW5nfHxpc05hTihjKT9IOXQ6dXApKGwsYyl9ZnVuY3Rpb24gQWdlKCl7dmFyIGw9dGhpcyxkPVpzKHRoaXMu''@;'; put 'put ''X3NlbGVjdGlvbi5ub2RlKCkucXVlcnlTZWxlY3Rvcigic3ZnIikpO2lmKDA9PWQuc2l6ZSgpKXJldHVybiB0aGlzO3RoaXMuX3pvb21TZWxlY3Rpb249ZDt2YXIgaD1mdW5jdGlvbiBPOXQoKXt2YXIgZGUscGUsQ2UsbD1BOXQsYz1EOXQsYT1MOXQsZD1JOXQsaD1SOXQsZj1bMCwxLzBdLHY9''@;'; put 'put ''W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sUz0yNTAsVj1FOXQsUT1fSigic3RhcnQiLCJ6b29tIiwiZW5kIiksT2U9NTAwLFllPTE1MCxldD0wLGR0PTEwO2Z1bmN0aW9uIGh0KEluKXtJbi5wcm9wZXJ0eSgiX196b29tIix4Z2UpLm9uKCJ3aGVlbC56b29tIix2cix7cGFzc2l2ZTohMX0pLm9u''@;'; put 'put ''KCJtb3VzZWRvd24uem9vbSIsTWkpLm9uKCJkYmxjbGljay56b29tIixQaSkuZmlsdGVyKGgpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLHlyKS5vbigidG91Y2htb3ZlLnpvb20iLF9pKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixVcikuc3R5bGUoIi13ZWJraXQtdGFwLWhp''@;'; put 'put ''Z2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBNdChJbixPcil7cmV0dXJuKE9yPU1hdGgubWF4KGZbMF0sTWF0aC5taW4oZlsxXSxPcikpKT09PUluLms/SW46bmV3IG5nKE9yLEluLngsSW4ueSl9ZnVuY3Rpb24gUXQoSW4sT3IsV24pe3ZhciBUcj1PclswXS1Xblsw''@;'; put 'put ''XSpJbi5rLEVyPU9yWzFdLVduWzFdKkluLms7cmV0dXJuIFRyPT09SW4ueCYmRXI9PT1Jbi55P0luOm5ldyBuZyhJbi5rLFRyLEVyKX1mdW5jdGlvbiBsbihJbil7cmV0dXJuWygrSW5bMF1bMF0rICtJblsxXVswXSkvMiwoK0luWzBdWzFdKyArSW5bMV1bMV0pLzJdfWZ1bmN0aW9uIHZuKElu''@;'; put 'put ''LE9yLFduLFRyKXtJbi5vbigic3RhcnQuem9vbSIsZnVuY3Rpb24oKXt3bih0aGlzLGFyZ3VtZW50cykuZXZlbnQoVHIpLnN0YXJ0KCl9KS5vbigiaW50ZXJydXB0Lnpvb20gZW5kLnpvb20iLGZ1bmN0aW9uKCl7d24odGhpcyxhcmd1bWVudHMpLmV2ZW50KFRyKS5lbmQoKX0pLnR3ZWVuKCJ6''@;'; put 'put ''b29tIixmdW5jdGlvbigpe3ZhciBFcj10aGlzLHpyPWFyZ3VtZW50cyxCaT13bihFcix6cikuZXZlbnQoVHIpLFN0PWMuYXBwbHkoRXIsenIpLEx0PW51bGw9PVduP2xuKFN0KToiZnVuY3Rpb24iPT10eXBlb2YgV24/V24uYXBwbHkoRXIsenIpOlduLFV0PU1hdGgubWF4KFN0WzFdWzBdLVN0''@;'; put 'put ''WzBdWzBdLFN0WzFdWzFdLVN0WzBdWzFdKSxGbj1Fci5fX3pvb20sS249ImZ1bmN0aW9uIj09dHlwZW9mIE9yP09yLmFwcGx5KEVyLHpyKTpPcixkcj1WKEZuLmludmVydChMdCkuY29uY2F0KFV0L0ZuLmspLEtuLmludmVydChMdCkuY29uY2F0KFV0L0tuLmspKTtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''a3Ipe2lmKDE9PT1rcilrcj1LbjtlbHNle3ZhciBqcj1kcihrciksVGk9VXQvanJbMl07a3I9bmV3IG5nKFRpLEx0WzBdLWpyWzBdKlRpLEx0WzFdLWpyWzFdKlRpKX1CaS56b29tKG51bGwsa3IpfX0pfWZ1bmN0aW9uIHduKEluLE9yLFduKXtyZXR1cm4hV24mJkluLl9fem9vbWluZ3x8bmV3''@;'; put 'put ''IG5yKEluLE9yKX1mdW5jdGlvbiBucihJbixPcil7dGhpcy50aGF0PUluLHRoaXMuYXJncz1Pcix0aGlzLmFjdGl2ZT0wLHRoaXMuc291cmNlRXZlbnQ9bnVsbCx0aGlzLmV4dGVudD1jLmFwcGx5KEluLE9yKSx0aGlzLnRhcHM9MH1mdW5jdGlvbiB2cihJbiwuLi5Pcil7aWYobC5hcHBseSh0''@;'; put 'put ''aGlzLGFyZ3VtZW50cykpe3ZhciBXbj13bih0aGlzLE9yKS5ldmVudChJbiksVHI9dGhpcy5fX3pvb20sRXI9TWF0aC5tYXgoZlswXSxNYXRoLm1pbihmWzFdLFRyLmsqTWF0aC5wb3coMixkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSx6cj1HNyhJbik7aWYoV24ud2hlZWwpKFduLm1vdXNl''@;'; put 'put ''WzBdWzBdIT09enJbMF18fFduLm1vdXNlWzBdWzFdIT09enJbMV0pJiYoV24ubW91c2VbMV09VHIuaW52ZXJ0KFduLm1vdXNlWzBdPXpyKSksY2xlYXJUaW1lb3V0KFduLndoZWVsKTtlbHNle2lmKFRyLms9PT1FcilyZXR1cm47V24ubW91c2U9W3pyLFRyLmludmVydCh6cildLHhGKHRoaXMp''@;'; put 'put ''LFduLnN0YXJ0KCl9c1QoSW4pLFduLndoZWVsPXNldFRpbWVvdXQoZnVuY3Rpb24gQmkoKXtXbi53aGVlbD1udWxsLFduLmVuZCgpfSxZZSksV24uem9vbSgibW91c2UiLGEoUXQoTXQoVHIsRXIpLFduLm1vdXNlWzBdLFduLm1vdXNlWzFdKSxXbi5leHRlbnQsdikpfX1mdW5jdGlvbiBNaShJ''@;'; put 'put ''biwuLi5Pcil7aWYoIUNlJiZsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIFduPUluLmN1cnJlbnRUYXJnZXQsVHI9d24odGhpcyxPciwhMCkuZXZlbnQoSW4pLEVyPVpzKEluLnZpZXcpLm9uKCJtb3VzZW1vdmUuem9vbSIsZnVuY3Rpb24gTHQoRm4pe2lmKHNUKEZuKSwhVHIubW92ZWQp''@;'; put 'put ''e3ZhciBLbj1Gbi5jbGllbnRYLUJpLGRyPUZuLmNsaWVudFktU3Q7VHIubW92ZWQ9S24qS24rZHIqZHI+ZXR9VHIuZXZlbnQoRm4pLnpvb20oIm1vdXNlIixhKFF0KFRyLnRoYXQuX196b29tLFRyLm1vdXNlWzBdPUc3KEZuLFduKSxUci5tb3VzZVsxXSksVHIuZXh0ZW50LHYpKX0sITApLm9u''@;'; put 'put ''KCJtb3VzZXVwLnpvb20iLGZ1bmN0aW9uIFV0KEZuKXtFci5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxmdW5jdGlvbiBDOXQobCxjKXt2YXIgYT1sLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxkPVpzKGwpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7YyYmKGQu''@;'; put 'put ''b24oImNsaWNrLmRyYWciLE9KLExKKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5vbigiY2xpY2suZHJhZyIsbnVsbCl9LDApKSwib25zZWxlY3RzdGFydCJpbiBhP2Qub24oInNlbGVjdHN0YXJ0LmRyYWciLG51bGwpOihhLnN0eWxlLk1velVzZXJTZWxlY3Q9YS5fX25vc2VsZWN0LGRlbGV0''@;'; put 'put ''ZSBhLl9fbm9zZWxlY3QpfShGbi52aWV3LFRyLm1vdmVkKSxzVChGbiksVHIuZXZlbnQoRm4pLmVuZCgpfSwhMCksenI9RzcoSW4sV24pLEJpPUluLmNsaWVudFgsU3Q9SW4uY2xpZW50WTsoZnVuY3Rpb24gdzl0KGwpe3ZhciBjPWwuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9WnMobCku''@;'; put 'put ''b24oImRyYWdzdGFydC5kcmFnIixPSixMSik7Im9uc2VsZWN0c3RhcnQiaW4gYz9hLm9uKCJzZWxlY3RzdGFydC5kcmFnIixPSixMSik6KGMuX19ub3NlbGVjdD1jLnN0eWxlLk1velVzZXJTZWxlY3QsYy5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9KShJbi52aWV3KSxQSihJbiksVHIu''@;'; put 'put ''bW91c2U9W3pyLHRoaXMuX196b29tLmludmVydCh6cildLHhGKHRoaXMpLFRyLnN0YXJ0KCl9fWZ1bmN0aW9uIFBpKEluLC4uLk9yKXtpZihsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIFduPXRoaXMuX196b29tLFRyPUc3KEluLmNoYW5nZWRUb3VjaGVzP0luLmNoYW5nZWRUb3VjaGVz''@;'; put 'put ''WzBdOkluLHRoaXMpLEVyPVduLmludmVydChUciksQmk9YShRdChNdChXbixXbi5rKihJbi5zaGlmdEtleT8uNToyKSksVHIsRXIpLGMuYXBwbHkodGhpcyxPciksdik7c1QoSW4pLFM+MD9acyh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oUykuY2FsbCh2bixCaSxUcixJbik6WnModGhp''@;'; put 'put ''cykuY2FsbChodC50cmFuc2Zvcm0sQmksVHIsSW4pfX1mdW5jdGlvbiB5cihJbiwuLi5Pcil7aWYobC5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB6cixCaSxTdCxMdCxXbj1Jbi50b3VjaGVzLFRyPVduLmxlbmd0aCxFcj13bih0aGlzLE9yLEluLmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09''@;'; put 'put ''PVRyKS5ldmVudChJbik7Zm9yKFBKKEluKSxCaT0wO0JpPFRyOysrQmkpTHQ9W0x0PUc3KFN0PVduW0JpXSx0aGlzKSx0aGlzLl9fem9vbS5pbnZlcnQoTHQpLFN0LmlkZW50aWZpZXJdLEVyLnRvdWNoMD8hRXIudG91Y2gxJiZFci50b3VjaDBbMl0hPT1MdFsyXSYmKEVyLnRvdWNoMT1MdCxF''@;'; put 'put ''ci50YXBzPTApOihFci50b3VjaDA9THQsenI9ITAsRXIudGFwcz0xKyEhZGUpO2RlJiYoZGU9Y2xlYXJUaW1lb3V0KGRlKSksenImJihFci50YXBzPDImJihwZT1MdFswXSxkZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZGU9bnVsbH0sT2UpKSx4Rih0aGlzKSxFci5zdGFydCgpKX19ZnVuY3Rp''@;'; put 'put ''b24gX2koSW4sLi4uT3Ipe2lmKHRoaXMuX196b29taW5nKXt2YXIgenIsQmksU3QsTHQsV249d24odGhpcyxPcikuZXZlbnQoSW4pLFRyPUluLmNoYW5nZWRUb3VjaGVzLEVyPVRyLmxlbmd0aDtmb3Ioc1QoSW4pLHpyPTA7enI8RXI7Kyt6cilTdD1HNyhCaT1Uclt6cl0sdGhpcyksV24udG91''@;'; put 'put ''Y2gwJiZXbi50b3VjaDBbMl09PT1CaS5pZGVudGlmaWVyP1duLnRvdWNoMFswXT1TdDpXbi50b3VjaDEmJlduLnRvdWNoMVsyXT09PUJpLmlkZW50aWZpZXImJihXbi50b3VjaDFbMF09U3QpO2lmKEJpPVduLnRoYXQuX196b29tLFduLnRvdWNoMSl7dmFyIFV0PVduLnRvdWNoMFswXSxGbj1X''@;'; put 'put ''bi50b3VjaDBbMV0sS249V24udG91Y2gxWzBdLGRyPVduLnRvdWNoMVsxXSxrcj0oa3I9S25bMF0tVXRbMF0pKmtyKyhrcj1LblsxXS1VdFsxXSkqa3IsanI9KGpyPWRyWzBdLUZuWzBdKSpqcisoanI9ZHJbMV0tRm5bMV0pKmpyO0JpPU10KEJpLE1hdGguc3FydChrci9qcikpLFN0PVsoVXRb''@;'; put 'put ''MF0rS25bMF0pLzIsKFV0WzFdK0tuWzFdKS8yXSxMdD1bKEZuWzBdK2RyWzBdKS8yLChGblsxXStkclsxXSkvMl19ZWxzZXtpZighV24udG91Y2gwKXJldHVybjtTdD1Xbi50b3VjaDBbMF0sTHQ9V24udG91Y2gwWzFdfVduLnpvb20oInRvdWNoIixhKFF0KEJpLFN0LEx0KSxXbi5leHRlbnQs''@;'; put 'put ''dikpfX1mdW5jdGlvbiBVcihJbiwuLi5Pcil7aWYodGhpcy5fX3pvb21pbmcpe3ZhciB6cixCaSxXbj13bih0aGlzLE9yKS5ldmVudChJbiksVHI9SW4uY2hhbmdlZFRvdWNoZXMsRXI9VHIubGVuZ3RoO2ZvcihQSihJbiksQ2UmJmNsZWFyVGltZW91dChDZSksQ2U9c2V0VGltZW91dChmdW5j''@;'; put 'put ''dGlvbigpe0NlPW51bGx9LE9lKSx6cj0wO3pyPEVyOysrenIpQmk9VHJbenJdLFduLnRvdWNoMCYmV24udG91Y2gwWzJdPT09QmkuaWRlbnRpZmllcj9kZWxldGUgV24udG91Y2gwOlduLnRvdWNoMSYmV24udG91Y2gxWzJdPT09QmkuaWRlbnRpZmllciYmZGVsZXRlIFduLnRvdWNoMTtpZihX''@;'; put 'put ''bi50b3VjaDEmJiFXbi50b3VjaDAmJihXbi50b3VjaDA9V24udG91Y2gxLGRlbGV0ZSBXbi50b3VjaDEpLFduLnRvdWNoMClXbi50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KFduLnRvdWNoMFswXSk7ZWxzZSBpZihXbi5lbmQoKSwyPT09V24udGFwcyYmKEJpPUc3KEJpLHRoaXMpLE1h''@;'; put 'put ''dGguaHlwb3QocGVbMF0tQmlbMF0scGVbMV0tQmlbMV0pPGR0KSl7dmFyIFN0PVpzKHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7U3QmJlN0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBodC50cmFuc2Zvcm09ZnVuY3Rpb24oSW4sT3IsV24sVHIpe3ZhciBFcj1Jbi5zZWxlY3Rp''@;'; put 'put ''b24/SW4uc2VsZWN0aW9uKCk6SW47RXIucHJvcGVydHkoIl9fem9vbSIseGdlKSxJbiE9PUVyP3ZuKEluLE9yLFduLFRyKTpFci5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7d24odGhpcyxhcmd1bWVudHMpLmV2ZW50KFRyKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgT3I/T3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOk9yKS5lbmQoKX0pfSxodC5zY2FsZUJ5PWZ1bmN0aW9uKEluLE9yLFduLFRyKXtodC5zY2FsZVRvKEluLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX196b29tLmsqKCJmdW5jdGlvbiI9PXR5cGVvZiBPcj9Pci5hcHBseSh0aGlzLGFyZ3Vt''@;'; put 'put ''ZW50cyk6T3IpfSxXbixUcil9LGh0LnNjYWxlVG89ZnVuY3Rpb24oSW4sT3IsV24sVHIpe2h0LnRyYW5zZm9ybShJbixmdW5jdGlvbigpe3ZhciBFcj1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx6cj10aGlzLl9fem9vbSxCaT1udWxsPT1Xbj9sbihFcik6ImZ1bmN0aW9uIj09dHlwZW9mIFdu''@;'; put 'put ''P1duLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpXbixTdD16ci5pbnZlcnQoQmkpLEx0PSJmdW5jdGlvbiI9PXR5cGVvZiBPcj9Pci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6T3I7cmV0dXJuIGEoUXQoTXQoenIsTHQpLEJpLFN0KSxFcix2KX0sV24sVHIpfSxodC50cmFuc2xhdGVCeT1mdW5jdGlv''@;'; put 'put ''bihJbixPcixXbixUcil7aHQudHJhbnNmb3JtKEluLGZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBPcj9Pci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6T3IsImZ1bmN0aW9uIj09dHlwZW9mIFduP1duLmFwcGx5KHRoaXMsYXJndW1l''@;'; put 'put ''bnRzKTpXbiksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdil9LG51bGwsVHIpfSxodC50cmFuc2xhdGVUbz1mdW5jdGlvbihJbixPcixXbixUcixFcil7aHQudHJhbnNmb3JtKEluLGZ1bmN0aW9uKCl7dmFyIHpyPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpLEJpPXRoaXMuX196b29tLFN0PW51''@;'; put 'put ''bGw9PVRyP2xuKHpyKToiZnVuY3Rpb24iPT10eXBlb2YgVHI/VHIuYXBwbHkodGhpcyxhcmd1bWVudHMpOlRyO3JldHVybiBhKE9GLnRyYW5zbGF0ZShTdFswXSxTdFsxXSkuc2NhbGUoQmkuaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBPcj8tT3IuYXBwbHkodGhpcyxhcmd1bWVu''@;'; put 'put ''dHMpOi1PciwiZnVuY3Rpb24iPT10eXBlb2YgV24/LVduLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotV24pLHpyLHYpfSxUcixFcil9LG5yLnByb3RvdHlwZT17ZXZlbnQ6ZnVuY3Rpb24oSW4pe3JldHVybiBJbiYmKHRoaXMuc291cmNlRXZlbnQ9SW4pLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLnRoYXQuX196b29taW5nPXRoaXMsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSx6b29tOmZ1bmN0aW9uKEluLE9yKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PUluJiYodGhpcy5tb3VzZVsxXT1Pci5pbnZlcnQodGhpcy5tb3Vz''@;'; put 'put ''ZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09SW4mJih0aGlzLnRvdWNoMFsxXT1Pci5pbnZlcnQodGhpcy50b3VjaDBbMF0pKSx0aGlzLnRvdWNoMSYmInRvdWNoIiE9PUluJiYodGhpcy50b3VjaDFbMV09T3IuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1P''@;'; put 'put ''cix0aGlzLmVtaXQoInpvb20iKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGRlbGV0ZSB0aGlzLnRoYXQuX196b29taW5nLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oSW4pe3ZhciBPcj1acyh0aGlzLnRoYXQpLmRhdHVtKCk7''@;'; put 'put ''US5jYWxsKEluLHRoaXMudGhhdCxuZXcgazl0KEluLHtzb3VyY2VFdmVudDp0aGlzLnNvdXJjZUV2ZW50LHRhcmdldDpodCx0eXBlOkluLHRyYW5zZm9ybTp0aGlzLnRoYXQuX196b29tLGRpc3BhdGNoOlF9KSxPcil9fSxodC53aGVlbERlbHRhPWZ1bmN0aW9uKEluKXtyZXR1cm4gYXJndW1l''@;'; put 'put ''bnRzLmxlbmd0aD8oZD0iZnVuY3Rpb24iPT10eXBlb2YgSW4/SW46TEYoK0luKSxodCk6ZH0saHQuZmlsdGVyPWZ1bmN0aW9uKEluKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgSW4/SW46TEYoISFJbiksaHQpOmx9LGh0LnRvdWNoYWJsZT1mdW5jdGlv''@;'; put 'put ''bihJbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIEluP0luOkxGKCEhSW4pLGh0KTpofSxodC5leHRlbnQ9ZnVuY3Rpb24oSW4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiBJbj9JbjpMRihbWytJblswXVswXSwr''@;'; put 'put ''SW5bMF1bMV1dLFsrSW5bMV1bMF0sK0luWzFdWzFdXV0pLGh0KTpjfSxodC5zY2FsZUV4dGVudD1mdW5jdGlvbihJbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGZbMF09K0luWzBdLGZbMV09K0luWzFdLGh0KTpbZlswXSxmWzFdXX0saHQudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKElu''@;'; put 'put ''KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odlswXVswXT0rSW5bMF1bMF0sdlsxXVswXT0rSW5bMV1bMF0sdlswXVsxXT0rSW5bMF1bMV0sdlsxXVsxXT0rSW5bMV1bMV0saHQpOltbdlswXVswXSx2WzBdWzFdXSxbdlsxXVswXSx2WzFdWzFdXV19LGh0LmNvbnN0cmFpbj1mdW5jdGlvbihJ''@;'; put 'put ''bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9SW4saHQpOmF9LGh0LmR1cmF0aW9uPWZ1bmN0aW9uKEluKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0rSW4saHQpOlN9LGh0LmludGVycG9sYXRlPWZ1bmN0aW9uKEluKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVj1JbixodCk6''@;'; put 'put ''Vn0saHQub249ZnVuY3Rpb24oKXt2YXIgSW49US5vbi5hcHBseShRLGFyZ3VtZW50cyk7cmV0dXJuIEluPT09UT9odDpJbn0saHQuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbihJbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGV0PShJbj0rSW4pKkluLGh0KTpNYXRoLnNxcnQoZXQpfSxodC50''@;'; put 'put ''YXBEaXN0YW5jZT1mdW5jdGlvbihJbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGR0PStJbixodCk6ZHR9LGh0fSgpLnNjYWxlRXh0ZW50KHRoaXMuX29wdGlvbnMuem9vbVNjYWxlRXh0ZW50KS50cmFuc2xhdGVFeHRlbnQodGhpcy5fb3B0aW9ucy56b29tVHJhbnNsYXRlRXh0ZW50KS5p''@;'; put 'put ''bnRlcnBvbGF0ZShGRikub24oInpvb20iLGZ1bmN0aW9uIGModil7WnMoZC5ub2RlKCkucXVlcnlTZWxlY3RvcigiZyIpKS5hdHRyKCJ0cmFuc2Zvcm0iLHYudHJhbnNmb3JtKSxsLl9kaXNwYXRjaC5jYWxsKCJ6b29tIixsKX0pO3RoaXMuX3pvb21CZWhhdmlvcj1oO3ZhciBmPVpzKGQubm9k''@;'; put 'put ''ZSgpLnF1ZXJ5U2VsZWN0b3IoImciKSk7cmV0dXJuIGQuY2FsbChoKSx0aGlzLl9hY3RpdmV8fEJKLmNhbGwodGhpcyxmKSx0aGlzLl9vcmlnaW5hbFRyYW5zZm9ybT1QRihkLm5vZGUoKSksdGhpc31mdW5jdGlvbiBWSihsKXt2YXIgYz10aGlzLl90cmFuc2xhdGlvbixhPXRoaXMuX3NjYWxl''@;'; put 'put ''LGQ9bC5kYXR1bSgpLnRyYW5zbGF0aW9uLGg9bC5kYXR1bSgpLnNjYWxlLGY9UEYodGhpcy5fem9vbVNlbGVjdGlvbi5ub2RlKCkpO3JldHVybiBjJiYoZj0oZj1mLnNjYWxlKDEvYSkpLnRyYW5zbGF0ZSgtYy54LC1jLnkpKSwoZj1mLnRyYW5zbGF0ZShkLngsZC55KSkuc2NhbGUoaCl9ZnVu''@;'; put 'put ''Y3Rpb24gQkoobCl7dGhpcy5fem9vbUJlaGF2aW9yLnRyYW5zZm9ybSh0aGlzLl96b29tU2VsZWN0aW9uLFZKLmNhbGwodGhpcyxsKSksdGhpcy5fdHJhbnNsYXRpb249bC5kYXR1bSgpLnRyYW5zbGF0aW9uLHRoaXMuX3NjYWxlPWwuZGF0dW0oKS5zY2FsZSx0aGlzLl9vcmlnaW5hbFRyYW5z''@;'; put 'put ''Zm9ybT1PRi50cmFuc2xhdGUobC5kYXR1bSgpLnRyYW5zbGF0aW9uLngsbC5kYXR1bSgpLnRyYW5zbGF0aW9uLnkpLnNjYWxlKGwuZGF0dW0oKS5zY2FsZSl9ZnVuY3Rpb24gRzl0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgYT1sLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gRkYoW2Rb''@;'; put 'put ''MF1bMF0sZFswXVsxXV0sW2RbMV1bMF0sZFsxXVsxXV0pfSk7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBkPDE/Ik0iK2EubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBoKGQpfSkuam9pbigiTCIpOmN9fX1mdW5jdGlvbiBEZ2UobCl7cmV0dXJuImVkZ2UiPT1sLmF0dHJpYnV0ZXMuY2xhc3N8''@;'; put 'put ''fCJhIj09bC50YWcmJiJnIj09bC5wYXJlbnQudGFnJiYiZWRnZSI9PWwucGFyZW50LnBhcmVudC5hdHRyaWJ1dGVzLmNsYXNzfWZ1bmN0aW9uIElnZShsKXtyZXR1cm4gbC5wYXJlbnQmJkRnZShsLnBhcmVudCl9ZnVuY3Rpb24gUmdlKGwpe3ZhciBjPXRoaXMuX3RyYW5zaXRpb24sYT10aGlz''@;'; put 'put ''Ll9vcHRpb25zLmZhZGUmJm51bGwhPWMsZD10aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHMsaD10aGlzLl9vcHRpb25zLnR3ZWVuU2hhcGVzLGY9dGhpcy5fb3B0aW9ucy5jb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zLHY9dGhpcy5fb3B0aW9ucy5ncm93RW50ZXJpbmdFZGdlcyYmbnVsbCE9YyxT''@;'; put 'put ''PXRoaXMuX2F0dHJpYnV0ZXIsVj10aGlzO3ZhciBwZT10aGlzLl9zZWxlY3Rpb247aWYobnVsbCE9Yyl7dmFyIENlPXRoaXMuX2pvYnM7aWYoVi5fYWN0aXZlKXJldHVybiBDZS5wdXNoKG51bGwpLHRoaXM7cGUudHJhbnNpdGlvbihjKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMCkub24oImVu''@;'; put 'put ''ZCIsZnVuY3Rpb24oKXtWLl9hY3RpdmU9ITEsMCE9Q2UubGVuZ3RoJiYoQ2Uuc2hpZnQoKSxWLnJlbmRlcigpKX0pLHRoaXMuX2FjdGl2ZT0hMH1udWxsIT1jJiZwZS50cmFuc2l0aW9uKGMpLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtWLl9kaXNwYXRjaC5jYWxsKCJ0cmFuc2l0aW9uU3RhcnQi''@;'; put 'put ''LFYpfSkub24oImVuZCIsZnVuY3Rpb24oKXtWLl9kaXNwYXRjaC5jYWxsKCJ0cmFuc2l0aW9uRW5kIixWKX0pLnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7Vi5fZGlzcGF0Y2guY2FsbCgicmVzdG9yZUVuZCIsViksVi5fZGlzcGF0Y2guY2FsbCgiZW5k''@;'; put 'put ''IixWKSxsJiZsLmNhbGwoVil9KTt2YXIgT2U9dGhpcy5fZGF0YSxZZT1wZS5zZWxlY3RBbGwoInN2ZyIpLmRhdGEoW09lXSxmdW5jdGlvbihldCl7cmV0dXJuIGV0LmtleX0pO3JldHVybiBZZT1ZZS5lbnRlcigpLmFwcGVuZCgic3ZnIikubWVyZ2UoWWUpLGZ1bmN0aW9uIGRlKGV0KXt2YXIg''@;'; put 'put ''ZHQ9WnModGhpcyk7aWYoInN2ZyI9PWV0LnRhZyl7dmFyIGh0PVYuX29wdGlvbnM7aWYobnVsbCE9aHQud2lkdGh8fG51bGwhPWh0LmhlaWdodCl7dmFyIE10PWh0LndpZHRoLFF0PWh0LmhlaWdodDtudWxsPT1NdD9NdD00KmV0LmF0dHJpYnV0ZXMud2lkdGgucmVwbGFjZSgicHQiLCIiKS8z''@;'; put 'put ''OihkdC5hdHRyKCJ3aWR0aCIsTXQpLGV0LmF0dHJpYnV0ZXMud2lkdGg9TXQpLG51bGw9PVF0P1F0PTQqZXQuYXR0cmlidXRlcy5oZWlnaHQucmVwbGFjZSgicHQiLCIiKS8zOihkdC5hdHRyKCJoZWlnaHQiLFF0KSxldC5hdHRyaWJ1dGVzLmhlaWdodD1RdCksaHQuZml0fHwoZHQuYXR0cigi''@;'; put 'put ''dmlld0JveCIsYDAgMCAkezMqTXQvNC9odC5zY2FsZX0gJHszKlF0LzQvaHQuc2NhbGV9YCksZXQuYXR0cmlidXRlcy52aWV3Qm94PWAwIDAgJHszKk10LzQvaHQuc2NhbGV9ICR7MypRdC80L2h0LnNjYWxlfWApfTEhPWh0LnNjYWxlJiYoaHQuZml0fHxudWxsPT1odC53aWR0aCYmbnVsbD09''@;'; put 'put ''aHQuaGVpZ2h0KSYmKE10PWV0LmF0dHJpYnV0ZXMudmlld0JveC5zcGxpdCgiICIpWzJdLFF0PWV0LmF0dHJpYnV0ZXMudmlld0JveC5zcGxpdCgiICIpWzNdLGR0LmF0dHIoInZpZXdCb3giLGAwIDAgJHtNdC9odC5zY2FsZX0gJHtRdC9odC5zY2FsZX1gKSxldC5hdHRyaWJ1dGVzLnZpZXdC''@;'; put 'put ''b3g9YDAgMCAke010L2h0LnNjYWxlfSAke1F0L2h0LnNjYWxlfWApfVMmJmR0LmVhY2goUyk7dmFyIGxuPWV0LnRhZyx2bj1ldC5hdHRyaWJ1dGVzLHduPWR0Lm5vZGUoKS5hdHRyaWJ1dGVzO2lmKHduKWZvcih2YXIgbnI9MDtucjx3bi5sZW5ndGg7bnIrKyl7dmFyIHZyPXduW25yXSxNaT12''@;'; put 'put ''ci5uYW1lO2lmKCJ4bWxucyIhPU1pLnNwbGl0KCI6IilbMF0mJnZyLm5hbWVzcGFjZVVSSSl7dmFyIFBpPXZyLm5hbWVzcGFjZVVSSS5zcGxpdCgiLyIpO01pPVBpW1BpLmxlbmd0aC0xXSsiOiIrTWl9TWkgaW4gdm58fCh2bltNaV09bnVsbCl9dmFyIF9pPSExLFVyPSExO2lmKGgmJmMpe2lm''@;'; put 'put ''KCgicG9seWdvbiI9PXRoaXMubm9kZU5hbWV8fCJlbGxpcHNlIj09dGhpcy5ub2RlTmFtZSkmJmV0LmFsdGVybmF0aXZlT2xkJiYoVXI9ITApLCgicG9seWdvbiI9PWxufHwiZWxsaXBzZSI9PWxuKSYmZXQuYWx0ZXJuYXRpdmVOZXcmJihfaT0hMCksInBvbHlnb24iPT10aGlzLm5vZGVOYW1l''@;'; put 'put ''JiYicG9seWdvbiI9PWxuJiZldC5hbHRlcm5hdGl2ZU9sZCl7dmFyIEluPUVnZShkdCk7aWYoIWYpe3ZhciBXbj1Jbi5hdHRyaWJ1dGVzLnBvaW50cy5zcGxpdCgiICIpLmxlbmd0aDsoVHI9ZXQuYXR0cmlidXRlcy5wb2ludHMpLnNwbGl0KCIgIikubGVuZ3RoPT1XbiYmKF9pPSExLFVyPSEx''@;'; put 'put ''KX19aWYoVXIpe3ZhciBCaT1UZ2UoZHQsZXQuYWx0ZXJuYXRpdmVPbGQpO0JpLmRhdGEoW2V0XSxmdW5jdGlvbigpe3JldHVybiBldC5rZXl9KSxkdD1CaX1faSYmKGxuPSJwYXRoIix2bj1ldC5hbHRlcm5hdGl2ZU5ldy5hdHRyaWJ1dGVzKX12YXIgTHQ9ZHQ7aWYoYyYmKEx0PUx0LnRyYW5z''@;'; put 'put ''aXRpb24oYyksYSYmTHQuZmlsdGVyKGZ1bmN0aW9uKHJzKXtyZXR1cm4iIyI9PXJzLnRhZ1swXT9udWxsOnRoaXN9KS5zdHlsZSgib3BhY2l0eSIsMSksTHQuZmlsdGVyKGZ1bmN0aW9uKHJzKXtyZXR1cm4iIyI9PXJzLnRhZ1swXT9udWxsOnRoaXN9KS5vbigiZW5kIixmdW5jdGlvbihycyl7''@;'; put 'put ''WnModGhpcykuYXR0cigic3R5bGUiLHJzJiZycy5hdHRyaWJ1dGVzJiZycy5hdHRyaWJ1dGVzLnN0eWxlfHxudWxsKX0pKSx2JiYicGF0aCI9PWxuJiZldC5vZmZzZXQpe3ZhciBGbj1ldC50b3RhbExlbmd0aDtkdC5hdHRyKCJzdHJva2UtZGFzaGFycmF5IixGbisiICIrRm4pLmF0dHIoInN0''@;'; put 'put ''cm9rZS1kYXNob2Zmc2V0IixGbikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZXQub2Zmc2V0LngrIiwiK2V0Lm9mZnNldC55KyIpIiksdm5bInN0cm9rZS1kYXNob2Zmc2V0Il09MCx2bi50cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDApIixMdC5hdHRyKCJzdHJva2UtZGFzaG9mZnNl''@;'; put 'put ''dCIsdm5bInN0cm9rZS1kYXNob2Zmc2V0Il0pLmF0dHIoInRyYW5zZm9ybSIsdm4udHJhbnNmb3JtKS5vbigic3RhcnQiLGZ1bmN0aW9uKCl7WnModGhpcykuc3R5bGUoIm9wYWNpdHkiLG51bGwpfSkub24oImVuZCIsZnVuY3Rpb24oKXtacyh0aGlzKS5hdHRyKCJzdHJva2UtZGFzaG9mZnNl''@;'; put 'put ''dCIsbnVsbCkuYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsbnVsbCkuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfWlmKHYmJiJwb2x5Z29uIj09bG4mJklnZShldCkmJmV0Lm9mZnNldCYmInBhdGgiPT1ldC5wYXJlbnQuY2hpbGRyZW5bM10udGFnKXt2YXIgZHI9WnMoZHQubm9kZSgpLnBhcmVu''@;'; put 'put ''dE5vZGUucXVlcnlTZWxlY3RvcigicGF0aCIpKSxrcj1kci5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aCgwKSxqcj1kci5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChldC50b3RhbExlbmd0aCksVGk9ZHIubm9kZSgpLmdldFBvaW50QXRMZW5ndGgoZXQudG90YWxMZW5ndGgtMSksbm89MTgwKk1h''@;'; put 'put ''dGguYXRhbjIoanIueS1UaS55LGpyLngtVGkueCkvTWF0aC5QSSxDaT1rci54LWpyLngrZXQub2Zmc2V0LngscW89a3IueS1qci55K2V0Lm9mZnNldC55O2R0LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0NpKyIsIitxbysiKSIpLEx0LmF0dHJUd2VlbigidHJhbnNmb3JtIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBmdW5jdGlvbihycyl7dmFyIE50PWRyLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKGV0LnRvdGFsTGVuZ3RoKnJzKSxOcz1kci5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChldC50b3RhbExlbmd0aCpycysxKSxQbz0xODAqTWF0aC5hdGFuMihOcy55LU50LnksTnMueC1O''@;'; put 'put ''dC54KS9NYXRoLlBJLW5vO3JldHVybiJ0cmFuc2xhdGUoIisoQ2k9TnQueC1qci54K2V0Lm9mZnNldC54KigxLXJzKSkrIiwiKyhxbz1OdC55LWpyLnkrZXQub2Zmc2V0LnkqKDEtcnMpKSsiKSByb3RhdGUoIitQbysiICIranIueCsiICIranIueSsiKSJ9fSkub24oInN0YXJ0IixmdW5jdGlv''@;'; put 'put ''bigpe1pzKHRoaXMpLnN0eWxlKCJvcGFjaXR5IixudWxsKX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7WnModGhpcykuYXR0cigidHJhbnNmb3JtIixudWxsKX0pfXZhciBoYT1kJiZjJiYicGF0aCI9PWxuJiZudWxsIT1kdC5hdHRyKCJkIik7Zm9yKHZhciBXbyBvZiBPYmplY3Qua2V5cyh2bikp''@;'; put 'put ''e3ZhciBLaT12bltXb107aWYoaGEmJiJkIj09V28pe3ZhciBUcjsoVHI9KGV0LmFsdGVybmF0aXZlT2xkfHxldCkucG9pbnRzKSYmTHQuYXR0clR3ZWVuKCJkIixHOXQoVHIsS2kpKX1lbHNle2lmKCJ0cmFuc2Zvcm0iPT1XbyYmZXQudHJhbnNsYXRpb24paWYoYyl7dmFyIFFvPUx0Lm9uKCJl''@;'; put 'put ''bmQiKTtMdC5vbigic3RhcnQiLGZ1bmN0aW9uKCl7Vi5fem9vbUJlaGF2aW9yJiZMdC50d2VlbigiYXR0ci50cmFuc2Zvcm0iLGZ1bmN0aW9uKCl7dmFyIHJzPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKE50KXtycy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsb2dlKFBGKFYuX3pvb21TZWxlY3Rp''@;'; put 'put ''b24ubm9kZSgpKS50b1N0cmluZygpLFZKLmNhbGwoVixkdCkudG9TdHJpbmcoKSkoTnQpKX19KX0pLm9uKCJlbmQiLGZ1bmN0aW9uKCl7UW8uY2FsbCh0aGlzKSxWLl96b29tQmVoYXZpb3ImJkJKLmNhbGwoVixkdCl9KX1lbHNlIFYuX3pvb21CZWhhdmlvciYmKEJKLmNhbGwoVixkdCksS2k9''@;'; put 'put ''VkouY2FsbChWLGR0KS50b1N0cmluZygpKTtMdC5hdHRyKFdvLEtpKX19X2kmJkx0Lm9uKCJlbmQiLGZ1bmN0aW9uKHJzLE50LE5zKXtUZ2UoQmk9WnModGhpcykscnMpLmRhdGEoW3JzXSxmdW5jdGlvbigpe3JldHVybiBycy5rZXl9KX0pLGV0LnRleHQmJkx0LnRleHQoZXQudGV4dCksZnVu''@;'; put 'put ''Y3Rpb24gUShldCl7dmFyIGR0PWV0LnNlbGVjdEFsbChmdW5jdGlvbigpe3JldHVybiBldC5ub2RlKCkuY2hpbGROb2Rlc30pLGh0PShkdD1kdC5kYXRhKGZ1bmN0aW9uKGxuKXtyZXR1cm4gbG4uY2hpbGRyZW59LGZ1bmN0aW9uKGxuKXtyZXR1cm4gbG4ua2V5fSkpLmVudGVyKCkuYXBwZW5k''@;'; put 'put ''KGZ1bmN0aW9uKGxuKXt2YXIgdm49RkoobG4pO3JldHVybiIjdGV4dCI9PWxuLnRhZyYmYSYmKHZuLm5vZGVWYWx1ZT1sbi50ZXh0KSx2bn0pOyhhfHx2JiZEZ2UoZXQuZGF0dW0oKSkpJiZodC5maWx0ZXIoZnVuY3Rpb24obG4pe3JldHVybiIjIj09bG4udGFnWzBdP251bGw6dGhpc30pLmVh''@;'; put 'put ''Y2goZnVuY3Rpb24obG4pe3ZhciB2bj1acyh0aGlzKTtmb3IodmFyIHduIG9mIE9iamVjdC5rZXlzKGxuLmF0dHJpYnV0ZXMpKXZuLmF0dHIod24sbG4uYXR0cmlidXRlc1t3bl0pfSkuZmlsdGVyKGZ1bmN0aW9uKGxuKXtyZXR1cm4ic3ZnIj09bG4udGFnfHwiZyI9PWxuLnRhZz9udWxsOnRo''@;'; put 'put ''aXN9KS5zdHlsZSgib3BhY2l0eSIsMCk7dmFyIFF0PWR0LmV4aXQoKTtTJiZRdC5lYWNoKFMpLGMmJihRdD1RdC50cmFuc2l0aW9uKGMpLGEmJlF0LmZpbHRlcihmdW5jdGlvbihsbil7cmV0dXJuIiMiPT1sbi50YWdbMF0/bnVsbDp0aGlzfSkuc3R5bGUoIm9wYWNpdHkiLDApKSxRdD1RdC5y''@;'; put 'put ''ZW1vdmUoKSwoZHQ9aHQubWVyZ2UoZHQpLm9yZGVyKCkpLmVhY2goZGUpfShkdCl9LmNhbGwoWWUubm9kZSgpLE9lKSx0aGlzLl9vcHRpb25zLnpvb20mJiF0aGlzLl96b29tQmVoYXZpb3ImJkFnZS5jYWxsKHRoaXMpLFYuX2Rpc3BhdGNoLmNhbGwoInJlbmRlckVuZCIsViksbnVsbD09YyYm''@;'; put 'put ''KHRoaXMuX2Rpc3BhdGNoLmNhbGwoImVuZCIsdGhpcyksbCYmbC5jYWxsKHRoaXMpKSx0aGlzfVBGLnByb3RvdHlwZT1uZy5wcm90b3R5cGU7dmFyIGV2dD1BcnJheUJ1ZmZlcixCYz1VaW50OEFycmF5LE5GPVVpbnQxNkFycmF5LHR2dD1JbnQxNkFycmF5LEhGPUludDMyQXJyYXksako9ZnVu''@;'; put 'put ''Y3Rpb24obCxjLGEpe2lmKEJjLnByb3RvdHlwZS5zbGljZSlyZXR1cm4gQmMucHJvdG90eXBlLnNsaWNlLmNhbGwobCxjLGEpOyhudWxsPT1jfHxjPDApJiYoYz0wKSwobnVsbD09YXx8YT5sLmxlbmd0aCkmJihhPWwubGVuZ3RoKTt2YXIgZD1uZXcgQmMoYS1jKTtyZXR1cm4gZC5zZXQobC5z''@;'; put 'put ''dWJhcnJheShjLGEpKSxkfSxsVD1mdW5jdGlvbihsLGMsYSxkKXtpZihCYy5wcm90b3R5cGUuZmlsbClyZXR1cm4gQmMucHJvdG90eXBlLmZpbGwuY2FsbChsLGMsYSxkKTtmb3IoKG51bGw9PWF8fGE8MCkmJihhPTApLChudWxsPT1kfHxkPmwubGVuZ3RoKSYmKGQ9bC5sZW5ndGgpO2E8ZDsr''@;'; put 'put ''K2EpbFthXT1jO3JldHVybiBsfSxudnQ9ZnVuY3Rpb24obCxjLGEsZCl7aWYoQmMucHJvdG90eXBlLmNvcHlXaXRoaW4pcmV0dXJuIEJjLnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwobCxjLGEsZCk7Zm9yKChudWxsPT1hfHxhPDApJiYoYT0wKSwobnVsbD09ZHx8ZD5sLmxlbmd0aCkmJihk''@;'; put 'put ''PWwubGVuZ3RoKTthPGQ7KWxbYysrXT1sW2ErK119LHJ2dD1bImludmFsaWQgenN0ZCBkYXRhIiwid2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKSIsImludmFsaWQgYmxvY2sgdHlwZSIsIkZTRSBhY2N1cmFjeSB0b28gaGlnaCIsIm1hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIs''@;'; put 'put ''InVuZXhwZWN0ZWQgRU9GIl0sc3U9ZnVuY3Rpb24obCxjLGEpe3ZhciBkPW5ldyBFcnJvcihjfHxydnRbbF0pO2lmKGQuY29kZT1sLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkLHN1KSwhYSl0aHJvdyBkO3JldHVybiBkfSxMZ2U9ZnVuY3Rpb24o''@;'; put 'put ''bCxjLGEpe2Zvcih2YXIgZD0wLGg9MDtkPGE7KytkKWh8PWxbYysrXTw8KGQ8PDMpO3JldHVybiBofSxpdnQ9ZnVuY3Rpb24obCxjKXt2YXIgYSxoPWxbMF18bFsxXTw8OHxsWzJdPDwxNjtpZigzMTI2NTY4PT1oJiYyNTM9PWxbM10pe3ZhciBmPWxbNF0sdj1mPj41JjEsUz1mPj4yJjEsVj0z''@;'; put 'put ''JmYsUT1mPj42OzgmZiYmc3UoMCk7dmFyIGRlPTYtdixwZT0zPT1WPzQ6VixDZT1MZ2UobCxkZSxwZSksT2U9UT8xPDxROnYsWWU9TGdlKGwsZGUrPXBlLE9lKSsoMT09USYmMjU2KSxldD1ZZTtpZighdil7dmFyIGR0PTE8PDEwKyhsWzVdPj4zKTtldD1kdCsoZHQ+PjMpKig3JmxbNV0pfWV0''@;'; put 'put ''PjIxNDUzODY0OTYmJnN1KDEpO3ZhciBodD1uZXcgQmMoKDE9PWM/WWV8fGV0OmM/MDpldCkrMTIpO3JldHVybiBodFswXT0xLGh0WzRdPTQsaHRbOF09OCx7YjpkZStPZSx5OjAsbDowLGQ6Q2UsdzpjJiYxIT1jP2M6aHQuc3ViYXJyYXkoMTIpLGU6ZXQsbzpuZXcgSEYoaHQuYnVmZmVyLDAs''@;'; put 'put ''MyksdTpZZSxjOlMsbTpNYXRoLm1pbigxMzEwNzIsZXQpfX1pZigyNTQ4MTg5Mz09KGg+PjR8bFszXTw8MjApKXJldHVybiA4KygoKGE9bClbNF18YVs1XTw8OHxhWzZdPDwxNnxhWzddPDwyNCk+Pj4wKTtzdSgwKX0scTc9ZnVuY3Rpb24obCl7Zm9yKHZhciBjPTA7MTw8Yzw9bDsrK2MpO3Jl''@;'; put 'put ''dHVybiBjLTF9LGNUPWZ1bmN0aW9uKGwsYyxhKXt2YXIgZD00KyhjPDwzKSxoPTUrKDE1JmxbY10pO2g+YSYmc3UoMyk7Zm9yKHZhciBmPTE8PGgsdj1mLFM9LTEsVj0tMSxRPS0xLGRlPWYscGU9bmV3IGV2dCg1MTIrKGY8PDIpKSxDZT1uZXcgdHZ0KHBlLDAsMjU2KSxPZT1uZXcgTkYocGUs''@;'; put 'put ''MCwyNTYpLFllPW5ldyBORihwZSw1MTIsZiksZXQ9NTEyKyhmPDwxKSxkdD1uZXcgQmMocGUsZXQsZiksaHQ9bmV3IEJjKHBlLGV0K2YpO1M8MjU1JiZ2PjA7KXt2YXIgTXQ9cTcodisxKSxRdD1kPj4zLGxuPSgxPDxNdCsxKS0xLHZuPShsW1F0XXxsW1F0KzFdPDw4fGxbUXQrMl08PDE2KT4+''@;'; put 'put ''KDcmZCkmbG4sd249KDE8PE10KS0xLG5yPWxuLXYtMSx2cj12biZ3bjtpZih2cjxucj8oZCs9TXQsdm49dnIpOihkKz1NdCsxLHZuPnduJiYodm4tPW5yKSksQ2VbKytTXT0tLXZuLC0xPT12bj8odis9dm4sZHRbLS1kZV09Uyk6di09dm4sIXZuKWRve3ZhciBNaT1kPj4zO1Y9KGxbTWldfGxb''@;'; put 'put ''TWkrMV08PDgpPj4oNyZkKSYzLGQrPTIsUys9Vn13aGlsZSgzPT1WKX0oUz4yNTV8fHYpJiZzdSgwKTtmb3IodmFyIFBpPTAseXI9KGY+PjEpKyhmPj4zKSszLF9pPWYtMSxVcj0wO1VyPD1TOysrVXIpe3ZhciBJbj1DZVtVcl07aWYoSW48MSlPZVtVcl09LUluO2Vsc2UgZm9yKFE9MDtRPElu''@;'; put 'put ''OysrUSl7ZHRbUGldPVVyO2Rve1BpPVBpK3lyJl9pfXdoaWxlKFBpPj1kZSl9fWZvcihQaSYmc3UoMCksUT0wO1E8ZjsrK1Epe3ZhciBPcj1PZVtkdFtRXV0rKyxXbj1odFtRXT1oLXE3KE9yKTtZZVtRXT0oT3I8PFduKS1mfXJldHVybltkKzc+PjMse2I6aCxzOmR0LG46aHQsdDpZZX1dfSxv''@;'; put 'put ''dnQ9Y1QobmV3IEJjKFs4MSwxNiw5OSwxNDAsNDksMTk4LDI0LDk5LDEyLDMzLDE5NiwyNCw5OSwxMDIsMTAyLDEzNCw3MCwxNDYsNF0pLDAsNilbMV0sc3Z0PWNUKG5ldyBCYyhbMzMsMjAsMTk2LDI0LDk5LDE0MCwzMywxMzIsMTYsNjYsOCwzMywxMzIsMTYsNjYsOCwzMyw2OCw2OCw2OCw2''@;'; put 'put ''OCw2OCw2OCw2OCw2OCwzNiw5XSksMCw2KVsxXSxhdnQ9Y1QobmV3IEJjKFszMiwxMzIsMTYsNjYsMTAyLDcwLDY4LDY4LDY4LDY4LDM2LDczLDJdKSwwLDUpWzFdLE9nZT1mdW5jdGlvbihsLGMpe2Zvcih2YXIgYT1sLmxlbmd0aCxkPW5ldyBIRihhKSxoPTA7aDxhOysraClkW2hdPWMsYys9''@;'; put 'put ''MTw8bFtoXTtyZXR1cm4gZH0seko9bmV3IEJjKG5ldyBIRihbMCwwLDAsMCwxNjg0MzAwOSw1MDUyODc3MCwxMzQ2NzgwMjAsMjAyMDUwMDU3LDI2OTQyMjA5M10pLmJ1ZmZlciwwLDM2KSxsdnQ9T2dlKHpKLDApLFVKPW5ldyBCYyhuZXcgSEYoWzAsMCwwLDAsMCwwLDAsMCwxNjg0MzAwOSw1''@;'; put 'put ''MDUyODc3MCwxMTc3NjkyMjAsMTg1MjA3MDQ4LDI1MjU3OTA4NCwxNl0pLmJ1ZmZlciwwLDUzKSxjdnQ9T2dlKFVKLDMpLHVUPWZ1bmN0aW9uKGwsYyxhKXt2YXIgZD1sLmxlbmd0aCxoPWMubGVuZ3RoLGY9bFtkLTFdLHY9KDE8PGEuYiktMSxTPS1hLmI7Znx8c3UoMCk7Zm9yKHZhciBWPTAs''@;'; put 'put ''UT1hLmIsZGU9KGQ8PDMpLTgrcTcoZiktUSxwZT0tMTtkZT5TJiZwZTxoOyl7dmFyIENlPWRlPj4zO2NbKytwZV09YS5zW1Y9KFY8PFF8KGxbQ2VdfGxbQ2UrMV08PDh8bFtDZSsyXTw8MTYpPj4oNyZkZSkpJnZdLGRlLT1RPWEubltWXX1kZT09UyYmcGUrMT09aHx8c3UoMCl9LHV2dD1mdW5j''@;'; put 'put ''dGlvbihsLGMsYSl7dmFyIGQ9NixoPWMubGVuZ3RoKzM+PjIsZj1oPDwxLHY9aCtmO3VUKGwuc3ViYXJyYXkoZCxkKz1sWzBdfGxbMV08PDgpLGMuc3ViYXJyYXkoMCxoKSxhKSx1VChsLnN1YmFycmF5KGQsZCs9bFsyXXxsWzNdPDw4KSxjLnN1YmFycmF5KGgsZiksYSksdVQobC5zdWJhcnJh''@;'; put 'put ''eShkLGQrPWxbNF18bFs1XTw8OCksYy5zdWJhcnJheShmLHYpLGEpLHVUKGwuc3ViYXJyYXkoZCksYy5zdWJhcnJheSh2KSxhKX0sZHZ0PWZ1bmN0aW9uKGwsYyxhKXt2YXIgZCxoPWMuYixmPWxbaF0sdj1mPj4xJjM7Yy5sPTEmZjt2YXIgUz1mPj4zfGxbaCsxXTw8NXxsW2grMl08PDEzLFY9''@;'; put 'put ''KGgrPTMpK1M7aWYoMT09dilyZXR1cm4gaD49bC5sZW5ndGg/dm9pZCAwOihjLmI9aCsxLGE/KGxUKGEsbFtoXSxjLnksYy55Kz1TKSxhKTpsVChuZXcgQmMoUyksbFtoXSkpO2lmKCEoVj5sLmxlbmd0aCkpe2lmKDA9PXYpcmV0dXJuIGMuYj1WLGE/KGEuc2V0KGwuc3ViYXJyYXkoaCxWKSxj''@;'; put 'put ''LnkpLGMueSs9UyxhKTpqSihsLGgsVik7aWYoMj09dil7dmFyIFE9bFtoXSxkZT0zJlEscGU9UT4+MiYzLENlPVE+PjQsT2U9MCxZZT0wO2RlPDI/MSZwZT9DZXw9bFsrK2hdPDw0fCgyJnBlJiZsWysraF08PDEyKTpDZT1RPj4zOihZZT1wZSxwZTwyPyhDZXw9KDYzJmxbKytoXSk8PDQsT2U9''@;'; put 'put ''bFtoXT4+NnxsWysraF08PDIpOjI9PXBlPyhDZXw9bFsrK2hdPDw0fCgzJmxbKytoXSk8PDEyLE9lPWxbaF0+PjJ8bFsrK2hdPDw2KTooQ2V8PWxbKytoXTw8NHwoNjMmbFsrK2hdKTw8MTIsT2U9bFtoXT4+NnxsWysraF08PDJ8bFsrK2hdPDwxMCkpLCsraDt2YXIgZXQ9YT9hLnN1YmFycmF5''@;'; put 'put ''KGMueSxjLnkrYy5tKTpuZXcgQmMoYy5tKSxkdD1ldC5sZW5ndGgtQ2U7aWYoMD09ZGUpZXQuc2V0KGwuc3ViYXJyYXkoaCxoKz1DZSksZHQpO2Vsc2UgaWYoMT09ZGUpbFQoZXQsbFtoKytdLGR0KTtlbHNle3ZhciBodD1jLmg7aWYoMj09ZGUpe3ZhciBNdD1mdW5jdGlvbihXbyxLaSl7dmFy''@;'; put 'put ''IFFvPTAscnM9LTEsTnQ9bmV3IEJjKDI5MiksTnM9V29bS2ldLFBvPU50LnN1YmFycmF5KDAsMjU2KSxEYT1OdC5zdWJhcnJheSgyNTYsMjY4KSxqYT1uZXcgTkYoTnQuYnVmZmVyLDI2OCk7aWYoTnM8MTI4KXt2YXIgZDA9Y1QoV28sS2krMSw2KSx6MD1kMFsxXSxhMj1kMFswXTw8MyxEdT1X''@;'; put 'put ''b1tLaSs9TnNdO0R1fHxzdSgwKTtmb3IodmFyIHBjPTAsZnA9MCxsMj16MC5iLHBwPWwyLEl1PSgrK0tpPDwzKS04K3E3KER1KTshKChJdS09bDIpPGEyKTspe3ZhciBFZj1JdT4+MztpZihQb1srK3JzXT16MC5zW3BjKz0oV29bRWZdfFdvW0VmKzFdPDw4KT4+KDcmSXUpJigxPDxsMiktMV0s''@;'; put 'put ''KEl1LT1wcCk8YTIpYnJlYWs7ZnArPShXb1tFZj1JdT4+M118V29bRWYrMV08PDgpPj4oNyZJdSkmKDE8PHBwKS0xLFBvWysrcnNdPXowLnNbZnBdLGwyPXowLm5bcGNdLHBjPXowLnRbcGNdLHBwPXowLm5bZnBdLGZwPXowLnRbZnBdfSsrcnM+MjU1JiZzdSgwKX1lbHNle2Zvcihycz1Ocy0x''@;'; put 'put ''Mjc7UW88cnM7UW8rPTIpe3ZhciBUZj1Xb1srK0tpXTtQb1tRb109VGY+PjQsUG9bUW8rMV09MTUmVGZ9KytLaX12YXIgTHM9MDtmb3IoUW89MDtRbzxyczsrK1FvKShrZj1Qb1tRb10pPjExJiZzdSgwKSxMcys9a2YmJjE8PGtmLTE7dmFyIGdjPXE3KExzKSsxLFJ1PTE8PGdjLHJnPVJ1LUxz''@;'; put 'put ''O2ZvcihyZyZyZy0xJiZzdSgwKSxQb1tycysrXT1xNyhyZykrMSxRbz0wO1FvPHJzOysrUW8pe3ZhciBrZj1Qb1tRb107KytEYVtQb1tRb109a2YmJmdjKzEta2ZdfXZhciBoVD1uZXcgQmMoUnU8PDEpLGZUPWhULnN1YmFycmF5KDAsUnUpLHBUPWhULnN1YmFycmF5KFJ1KTtmb3IoamFbZ2Nd''@;'; put 'put ''PTAsUW89Z2M7UW8+MDstLVFvKXt2YXIgZ1Q9amFbUW9dO2xUKHBULFFvLGdULGphW1FvLTFdPWdUK0RhW1FvXSooMTw8Z2MtUW8pKX1mb3IoamFbMF0hPVJ1JiZzdSgwKSxRbz0wO1FvPHJzOysrUW8pe3ZhciBYNz1Qb1tRb107aWYoWDcpe3ZhciBtVD1qYVtYN107bFQoZlQsUW8sbVQsamFb''@;'; put 'put ''WDddPW1UKygxPDxnYy1YNykpfX1yZXR1cm5bS2kse246cFQsYjpnYyxzOmZUfV19KGwsaCk7T2UrPWgtKGg9TXRbMF0pLGMuaD1odD1NdFsxXX1lbHNlIGh0fHxzdSgwKTsoWWU/dXZ0OnVUKShsLnN1YmFycmF5KGgsaCs9T2UpLGV0LnN1YmFycmF5KGR0KSxodCl9dmFyIFF0PWxbaCsrXTtp''@;'; put 'put ''ZihRdCl7MjU1PT1RdD9RdD0zMjUxMisobFtoKytdfGxbaCsrXTw8OCk6UXQ+MTI3JiYoUXQ9UXQtMTI4PDw4fGxbaCsrXSk7dmFyIGxuPWxbaCsrXTszJmxuJiZzdSgwKTtmb3IodmFyIHZuPVtzdnQsYXZ0LG92dF0sd249Mjt3bj4tMTstLXduKXt2YXIgbnI9bG4+PjIrKHduPDwxKSYzO2lm''@;'; put 'put ''KDE9PW5yKXt2YXIgdnI9bmV3IEJjKFswLDAsbFtoKytdXSk7dm5bd25dPXtzOnZyLnN1YmFycmF5KDIsMyksbjp2ci5zdWJhcnJheSgwLDEpLHQ6bmV3IE5GKHZyLmJ1ZmZlciwwLDEpLGI6MH19ZWxzZSAyPT1ucj8oaD0oZD1jVChsLGgsOS0oMSZ3bikpKVswXSx2blt3bl09ZFsxXSk6Mz09''@;'; put 'put ''bnImJihjLnR8fHN1KDApLHZuW3duXT1jLnRbd25dKX12YXIgTWk9Yy50PXZuLFBpPU1pWzBdLHlyPU1pWzFdLF9pPU1pWzJdLFVyPWxbVi0xXTtVcnx8c3UoMCk7dmFyIEluPShWPDwzKS04K3E3KFVyKS1faS5iLE9yPUluPj4zLFduPTAsVHI9KGxbT3JdfGxbT3IrMV08PDgpPj4oNyZJbikm''@;'; put 'put ''KDE8PF9pLmIpLTEsRXI9KGxbT3I9KEluLT15ci5iKT4+M118bFtPcisxXTw8OCk+Pig3JkluKSYoMTw8eXIuYiktMSx6cj0obFtPcj0oSW4tPVBpLmIpPj4zXXxsW09yKzFdPDw4KT4+KDcmSW4pJigxPDxQaS5iKS0xO2ZvcigrK1F0Oy0tUXQ7KXt2YXIgQmk9X2kuc1tUcl0sU3Q9X2kubltU''@;'; put 'put ''cl0sTHQ9UGkuc1t6cl0sVXQ9UGkublt6cl0sRm49eXIuc1tFcl0sS249eXIubltFcl0sZHI9MTw8Rm4sa3I9ZHIrKChsW09yPShJbi09Rm4pPj4zXXxsW09yKzFdPDw4fGxbT3IrMl08PDE2fGxbT3IrM108PDI0KT4+Pig3JkluKSZkci0xKTtPcj0oSW4tPVVKW0x0XSk+PjM7dmFyIGpyPWN2''@;'; put 'put ''dFtMdF0rKChsW09yXXxsW09yKzFdPDw4fGxbT3IrMl08PDE2KT4+KDcmSW4pJigxPDxVSltMdF0pLTEpO09yPShJbi09ekpbQmldKT4+Mzt2YXIgVGk9bHZ0W0JpXSsoKGxbT3JdfGxbT3IrMV08PDh8bFtPcisyXTw8MTYpPj4oNyZJbikmKDE8PHpKW0JpXSktMSk7aWYoT3I9KEluLT1TdCk+''@;'; put 'put ''PjMsVHI9X2kudFtUcl0rKChsW09yXXxsW09yKzFdPDw4KT4+KDcmSW4pJigxPDxTdCktMSksT3I9KEluLT1VdCk+PjMsenI9UGkudFt6cl0rKChsW09yXXxsW09yKzFdPDw4KT4+KDcmSW4pJigxPDxVdCktMSksT3I9KEluLT1Lbik+PjMsRXI9eXIudFtFcl0rKChsW09yXXxsW09yKzFdPDw4''@;'; put 'put ''KT4+KDcmSW4pJigxPDxLbiktMSksa3I+MyljLm9bMl09Yy5vWzFdLGMub1sxXT1jLm9bMF0sYy5vWzBdPWtyLT0zO2Vsc2V7dmFyIG5vPWtyLSgwIT1UaSk7bm8/KGtyPTM9PW5vP2Mub1swXS0xOmMub1tub10sbm8+MSYmKGMub1syXT1jLm9bMV0pLGMub1sxXT1jLm9bMF0sYy5vWzBdPWty''@;'; put 'put ''KTprcj1jLm9bMF19Zm9yKHduPTA7d248VGk7Kyt3billdFtXbit3bl09ZXRbZHQrd25dO2R0Kz1UaTt2YXIgQ2k9KFduKz1UaSkta3I7aWYoQ2k8MCl7dmFyIHFvPS1DaSxoYT1jLmUrQ2k7Zm9yKHFvPmpyJiYocW89anIpLHduPTA7d248cW87Kyt3billdFtXbit3bl09Yy53W2hhK3duXTtX''@;'; put 'put ''bis9cW8sanItPXFvLENpPTB9Zm9yKHduPTA7d248anI7Kyt3billdFtXbit3bl09ZXRbQ2krd25dO1duKz1qcn1pZihXbiE9ZHQpZm9yKDtkdDxldC5sZW5ndGg7KWV0W1duKytdPWV0W2R0KytdO2Vsc2UgV249ZXQubGVuZ3RoO2E/Yy55Kz1XbjpldD1qSihldCwwLFduKX1lbHNlIGlmKGEp''@;'; put 'put ''e2lmKGMueSs9Q2UsZHQpZm9yKHduPTA7d248Q2U7Kyt3billdFt3bl09ZXRbZHQrd25dfWVsc2UgZHQmJihldD1qSihldCxkdCkpO3JldHVybiBjLmI9VixldH1zdSgyKX19O3ZhciBndnQ9KHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LGZ1bmN0aW9uKGw9e30pe3ZhciBjLGEsZCxo''@;'; put 'put ''LGY9T2JqZWN0LmFzc2lnbih7fSxsKSx2PW5ldyBQcm9taXNlKCgkZSx1dCk9PntjPSRlLGE9dXR9KSxWPU9iamVjdC5hc3NpZ24oe30sZiksUT1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGRlPWNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKGYsViksVj1udWxs''@;'; put 'put ''LGYud2FzbUJpbmFyeSYmKGQ9Zi53YXNtQmluYXJ5KTt2YXIgcGUsQ2UsT2UsWWUsZXQsZHQsaHQ9ITE7ZnVuY3Rpb24gTXQoJGUsdXQpeyRlfHx5cih1dCl9ZnVuY3Rpb24gUXQoKXt2YXIgJGU9aC5idWZmZXI7Zi5IRUFQOD1wZT1uZXcgSW50OEFycmF5KCRlKSxmLkhFQVAxNj1PZT1uZXcg''@;'; put 'put ''SW50MTZBcnJheSgkZSksZi5IRUFQVTg9Q2U9bmV3IFVpbnQ4QXJyYXkoJGUpLGYuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoJGUpLGYuSEVBUDMyPVllPW5ldyBJbnQzMkFycmF5KCRlKSxmLkhFQVBVMzI9ZXQ9bmV3IFVpbnQzMkFycmF5KCRlKSxmLkhFQVBGMzI9bmV3IEZsb2F0MzJBcnJh''@;'; put 'put ''eSgkZSksZi5IRUFQRjY0PWR0PW5ldyBGbG9hdDY0QXJyYXkoJGUpfXZhciBsbj1bXSx2bj1bXSx3bj1bXSxucj0wLHZyPW51bGw7ZnVuY3Rpb24gTWkoJGUpe25yKyt9ZnVuY3Rpb24gUGkoJGUpe2lmKDA9PS0tbnImJnZyKXt2YXIgdXQ9dnI7dnI9bnVsbCx1dCgpfX1mdW5jdGlvbiB5cigk''@;'; put 'put ''ZSl7ZGUoJGU9IkFib3J0ZWQoIiskZSsiKSIpLGh0PSEwLCRlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHV0PW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoJGUpO3Rocm93IGEodXQpLHV0fXZhciBfaSxVcixJbixPcj0kZT0+JGUuc3RhcnRz''@;'; put 'put ''V2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpO2Z1bmN0aW9uIEVyKCRlLHV0LFJ0KXtyZXR1cm4oV3Q9JGUsUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ZnVuY3Rpb24gVHIoJGUpe2lmKCRlPT1faSYmZClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZCk7dGhy''@;'; put 'put ''b3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifShXdCkpKS50aGVuKFd0PT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShXdCx1dCkpLnRoZW4oUnQsV3Q9PntkZShgZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJHtXdH1gKSx5''@;'; put 'put ''cihXdCl9KTt2YXIgV3R9T3IoX2k9ImdyYXBodml6bGliLndhc20iKXx8KF9pPSIiK19pKTt2YXIgenI9ezE3MjkyODooJGUsdXQpPT57dmFyIFJ0PU5zKCRlKSxXdD1Ocyh1dCk7TnQuY3JlYXRlUGF0aCgiLyIsVXQuZGlybmFtZShSdCkpLE50LndyaXRlRmlsZShVdC5qb2luKCIvIixSdCks''@;'; put 'put ''V3QpfX07ZnVuY3Rpb24gQmkoJGUpe3RoaXMubmFtZT0iRXhpdFN0YXR1cyIsdGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7JGV9KWAsdGhpcy5zdGF0dXM9JGV9dmFyIFN0PSRlPT57Zm9yKDskZS5sZW5ndGg+MDspJGUuc2hpZnQoKShmKX07Y2xhc3MgTHR7''@;'; put 'put ''Y29uc3RydWN0b3IodXQpe3RoaXMuZXhjUHRyPXV0LHRoaXMucHRyPXV0LTI0fXNldF90eXBlKHV0KXtldFt0aGlzLnB0cis0Pj4yXT11dH1nZXRfdHlwZSgpe3JldHVybiBldFt0aGlzLnB0cis0Pj4yXX1zZXRfZGVzdHJ1Y3Rvcih1dCl7ZXRbdGhpcy5wdHIrOD4+Ml09dXR9Z2V0X2Rlc3Ry''@;'; put 'put ''dWN0b3IoKXtyZXR1cm4gZXRbdGhpcy5wdHIrOD4+Ml19c2V0X2NhdWdodCh1dCl7cGVbdGhpcy5wdHIrMTJdPXV0PXV0PzE6MH1nZXRfY2F1Z2h0KCl7cmV0dXJuIDAhPXBlW3RoaXMucHRyKzEyXX1zZXRfcmV0aHJvd24odXQpe3BlW3RoaXMucHRyKzEzXT11dD11dD8xOjB9Z2V0X3JldGhy''@;'; put 'put ''b3duKCl7cmV0dXJuIDAhPXBlW3RoaXMucHRyKzEzXX1pbml0KHV0LFJ0KXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCksdGhpcy5zZXRfdHlwZSh1dCksdGhpcy5zZXRfZGVzdHJ1Y3RvcihSdCl9c2V0X2FkanVzdGVkX3B0cih1dCl7ZXRbdGhpcy5wdHIrMTY+PjJdPXV0fWdldF9hZGp1c3Rl''@;'; put 'put ''ZF9wdHIoKXtyZXR1cm4gZXRbdGhpcy5wdHIrMTY+PjJdfWdldF9leGNlcHRpb25fcHRyKCl7aWYocG1lKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIGV0W3RoaXMuZXhjUHRyPj4yXTt2YXIgdXQ9dGhpcy5nZXRfYWRqdXN0ZWRfcHRyKCk7cmV0dXJuIDAhPT11dD91dDp0aGlzLmV4Y1B0cn19''@;'; put 'put ''dmFyIFV0PXtpc0FiczokZT0+Ii8iPT09JGUuY2hhckF0KDApLHNwbGl0UGF0aDokZT0+L14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/OltcL10qKSQvLmV4ZWMoJGUpLnNsaWNlKDEpLG5vcm1hbGl6ZUFycmF5OigkZSx1dCk9Pntmb3IodmFy''@;'; put 'put ''IFJ0PTAsV3Q9JGUubGVuZ3RoLTE7V3Q+PTA7V3QtLSl7dmFyIGtuPSRlW1d0XTsiLiI9PT1rbj8kZS5zcGxpY2UoV3QsMSk6Ii4uIj09PWtuPygkZS5zcGxpY2UoV3QsMSksUnQrKyk6UnQmJigkZS5zcGxpY2UoV3QsMSksUnQtLSl9aWYodXQpZm9yKDtSdDtSdC0tKSRlLnVuc2hpZnQoIi4u''@;'; put 'put ''Iik7cmV0dXJuICRlfSxub3JtYWxpemU6JGU9Pnt2YXIgdXQ9VXQuaXNBYnMoJGUpLFJ0PSIvIj09PSRlLnN1YnN0cigtMSk7cmV0dXJuKCRlPVV0Lm5vcm1hbGl6ZUFycmF5KCRlLnNwbGl0KCIvIikuZmlsdGVyKFd0PT4hIVd0KSwhdXQpLmpvaW4oIi8iKSl8fHV0fHwoJGU9Ii4iKSwkZSYm''@;'; put 'put ''UnQmJigkZSs9Ii8iKSwodXQ/Ii8iOiIiKSskZX0sZGlybmFtZTokZT0+e3ZhciB1dD1VdC5zcGxpdFBhdGgoJGUpLFJ0PXV0WzBdLFd0PXV0WzFdO3JldHVybiBSdHx8V3Q/KFd0JiYoV3Q9V3Quc3Vic3RyKDAsV3QubGVuZ3RoLTEpKSxSdCtXdCk6Ii4ifSxiYXNlbmFtZTokZT0+e2lmKCIv''@;'; put 'put ''Ij09PSRlKXJldHVybiIvIjt2YXIgdXQ9KCRlPSgkZT1VdC5ub3JtYWxpemUoJGUpKS5yZXBsYWNlKC9cLyQvLCIiKSkubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXV0PyRlOiRlLnN1YnN0cih1dCsxKX0sam9pbjooLi4uJGUpPT5VdC5ub3JtYWxpemUoJGUuam9pbigiLyIpKSxqb2lu''@;'; put 'put ''MjooJGUsdXQpPT5VdC5ub3JtYWxpemUoJGUrIi8iK3V0KX0sRm49JGU9PihGbj0oKCk9PntpZigib2JqZWN0Ij09dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpcmV0dXJuIHV0PT5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHV0KTt5cigi''@;'; put 'put ''aW5pdFJhbmRvbURldmljZSIpfSkoKSkoJGUpLEtuPXtyZXNvbHZlOiguLi4kZSk9Pntmb3IodmFyIHV0PSIiLFJ0PSExLFd0PSRlLmxlbmd0aC0xO1d0Pj0tMSYmIVJ0O1d0LS0pe3ZhciBrbj1XdD49MD8kZVtXdF06TnQuY3dkKCk7aWYoInN0cmluZyIhPXR5cGVvZiBrbil0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2lmKCFrbilyZXR1cm4iIjt1dD1rbisiLyIrdXQsUnQ9VXQuaXNBYnMoa24pfXJldHVybihSdD8iLyI6IiIpKyh1dD1VdC5ub3JtYWxpemVBcnJheSh1dC5zcGxpdCgiLyIpLmZpbHRlcihzcj0+''@;'; put 'put ''ISFzciksIVJ0KS5qb2luKCIvIikpfHwiLiJ9LHJlbGF0aXZlOigkZSx1dCk9PntmdW5jdGlvbiBSdChHbyl7Zm9yKHZhciBwcz0wO3BzPEdvLmxlbmd0aCYmIiI9PT1Hb1twc107cHMrKyk7Zm9yKHZhciBxcz1Hby5sZW5ndGgtMTtxcz49MCYmIiI9PT1Hb1txc107cXMtLSk7cmV0dXJuIHBz''@;'; put 'put ''PnFzP1tdOkdvLnNsaWNlKHBzLHFzLXBzKzEpfSRlPUtuLnJlc29sdmUoJGUpLnN1YnN0cigxKSx1dD1Lbi5yZXNvbHZlKHV0KS5zdWJzdHIoMSk7Zm9yKHZhciBXdD1SdCgkZS5zcGxpdCgiLyIpKSxrbj1SdCh1dC5zcGxpdCgiLyIpKSxzcj1NYXRoLm1pbihXdC5sZW5ndGgsa24ubGVuZ3Ro''@;'; put 'put ''KSxvcj1zcixOcj0wO05yPHNyO05yKyspaWYoV3RbTnJdIT09a25bTnJdKXtvcj1OcjticmVha312YXIgQ289W107Zm9yKE5yPW9yO05yPFd0Lmxlbmd0aDtOcisrKUNvLnB1c2goIi4uIik7cmV0dXJuKENvPUNvLmNvbmNhdChrbi5zbGljZShvcikpKS5qb2luKCIvIil9fSxkcj10eXBlb2Yg''@;'; put 'put ''VGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxrcj0oJGUsdXQsUnQpPT57Zm9yKHZhciBXdD11dCtSdCxrbj11dDskZVtrbl0mJiEoa24+PVd0KTspKytrbjtpZihrbi11dD4xNiYmJGUuYnVmZmVyJiZkcilyZXR1cm4gZHIuZGVjb2RlKCRlLnN1YmFycmF5''@;'; put 'put ''KHV0LGtuKSk7Zm9yKHZhciBzcj0iIjt1dDxrbjspe3ZhciBvcj0kZVt1dCsrXTtpZigxMjgmb3Ipe3ZhciBOcj02MyYkZVt1dCsrXTtpZigxOTIhPSgyMjQmb3IpKXt2YXIgQ289NjMmJGVbdXQrK107aWYoKG9yPTIyND09KDI0MCZvcik/KDE1Jm9yKTw8MTJ8TnI8PDZ8Q286KDcmb3IpPDwx''@;'; put 'put ''OHxOcjw8MTJ8Q288PDZ8NjMmJGVbdXQrK10pPDY1NTM2KXNyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG9yKTtlbHNle3ZhciBHbz1vci02NTUzNjtzcis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxHbz4+MTAsNTYzMjB8MTAyMyZHbyl9fWVsc2Ugc3IrPVN0cmluZy5mcm9tQ2hhckNvZGUo''@;'; put 'put ''KDMxJm9yKTw8NnxOcil9ZWxzZSBzcis9U3RyaW5nLmZyb21DaGFyQ29kZShvcil9cmV0dXJuIHNyfSxqcj1bXSxUaT0kZT0+e2Zvcih2YXIgdXQ9MCxSdD0wO1J0PCRlLmxlbmd0aDsrK1J0KXt2YXIgV3Q9JGUuY2hhckNvZGVBdChSdCk7V3Q8PTEyNz91dCsrOld0PD0yMDQ3P3V0Kz0yOld0''@;'; put 'put ''Pj01NTI5NiYmV3Q8PTU3MzQzPyh1dCs9NCwrK1J0KTp1dCs9M31yZXR1cm4gdXR9LG5vPSgkZSx1dCxSdCxXdCk9PntpZighKFd0PjApKXJldHVybiAwO2Zvcih2YXIga249UnQsc3I9UnQrV3QtMSxvcj0wO29yPCRlLmxlbmd0aDsrK29yKXt2YXIgTnI9JGUuY2hhckNvZGVBdChvcik7aWYo''@;'; put 'put ''TnI+PTU1Mjk2JiZOcjw9NTczNDMmJihOcj02NTUzNisoKDEwMjMmTnIpPDwxMCl8MTAyMyYkZS5jaGFyQ29kZUF0KCsrb3IpKSxOcjw9MTI3KXtpZihSdD49c3IpYnJlYWs7dXRbUnQrK109TnJ9ZWxzZSBpZihOcjw9MjA0Nyl7aWYoUnQrMT49c3IpYnJlYWs7dXRbUnQrK109MTkyfE5yPj42''@;'; put 'put ''LHV0W1J0KytdPTEyOHw2MyZOcn1lbHNlIGlmKE5yPD02NTUzNSl7aWYoUnQrMj49c3IpYnJlYWs7dXRbUnQrK109MjI0fE5yPj4xMix1dFtSdCsrXT0xMjh8TnI+PjYmNjMsdXRbUnQrK109MTI4fDYzJk5yfWVsc2V7aWYoUnQrMz49c3IpYnJlYWs7dXRbUnQrK109MjQwfE5yPj4xOCx1dFtS''@;'; put 'put ''dCsrXT0xMjh8TnI+PjEyJjYzLHV0W1J0KytdPTEyOHxOcj4+NiY2Myx1dFtSdCsrXT0xMjh8NjMmTnJ9fXJldHVybiB1dFtSdF09MCxSdC1rbn07ZnVuY3Rpb24gQ2koJGUsdXQsUnQpe3ZhciBXdD1UaSgkZSkrMSxrbj1uZXcgQXJyYXkoV3QpLHNyPW5vKCRlLGtuLDAsa24ubGVuZ3RoKTty''@;'; put 'put ''ZXR1cm4gdXQmJihrbi5sZW5ndGg9c3IpLGtufXZhciBxbz17dHR5czpbXSxpbml0KCl7fSxzaHV0ZG93bigpe30scmVnaXN0ZXIoJGUsdXQpe3FvLnR0eXNbJGVdPXtpbnB1dDpbXSxvdXRwdXQ6W10sb3BzOnV0fSxOdC5yZWdpc3RlckRldmljZSgkZSxxby5zdHJlYW1fb3BzKX0sc3RyZWFt''@;'; put 'put ''X29wczp7b3BlbigkZSl7dmFyIHV0PXFvLnR0eXNbJGUubm9kZS5yZGV2XTtpZighdXQpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNDMpOyRlLnR0eT11dCwkZS5zZWVrYWJsZT0hMX0sY2xvc2UoJGUpeyRlLnR0eS5vcHMuZnN5bmMoJGUudHR5KX0sZnN5bmMoJGUpeyRlLnR0eS5vcHMuZnN5''@;'; put 'put ''bmMoJGUudHR5KX0scmVhZCgkZSx1dCxSdCxXdCxrbil7aWYoISRlLnR0eXx8ISRlLnR0eS5vcHMuZ2V0X2NoYXIpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNjApO2Zvcih2YXIgc3I9MCxvcj0wO29yPFd0O29yKyspe3ZhciBOcjt0cnl7TnI9JGUudHR5Lm9wcy5nZXRfY2hhcigkZS50dHkp''@;'; put 'put ''fWNhdGNoe3Rocm93IG5ldyBOdC5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1OciYmMD09PXNyKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYpO2lmKG51bGw9PU5yKWJyZWFrO3NyKyssdXRbUnQrb3JdPU5yfXJldHVybiBzciYmKCRlLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLHNy''@;'; put 'put ''fSx3cml0ZSgkZSx1dCxSdCxXdCxrbil7aWYoISRlLnR0eXx8ISRlLnR0eS5vcHMucHV0X2NoYXIpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNjApO3RyeXtmb3IodmFyIHNyPTA7c3I8V3Q7c3IrKykkZS50dHkub3BzLnB1dF9jaGFyKCRlLnR0eSx1dFtSdCtzcl0pfWNhdGNoe3Rocm93IG5l''@;'; put 'put ''dyBOdC5FcnJub0Vycm9yKDI5KX1yZXR1cm4gV3QmJigkZS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxzcn19LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6JGU9PigoKT0+e2lmKCFqci5sZW5ndGgpe3ZhciB1dD1udWxsO2lmKHR5cGVvZiB3aW5kb3c8InUiJiYiZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2Ygd2luZG93LnByb21wdD9udWxsIT09KHV0PXdpbmRvdy5wcm9tcHQoIklucHV0OiAiKSkmJih1dCs9IlxuIik6ImZ1bmN0aW9uIj09dHlwZW9mIHJlYWRsaW5lJiZudWxsIT09KHV0PXJlYWRsaW5lKCkpJiYodXQrPSJcbiIpLCF1dClyZXR1cm4gbnVsbDtqcj1DaSh1dCwhMCl9cmV0''@;'; put 'put ''dXJuIGpyLnNoaWZ0KCl9KSgpLHB1dF9jaGFyKCRlLHV0KXtudWxsPT09dXR8fDEwPT09dXQ/KFEoa3IoJGUub3V0cHV0LDApKSwkZS5vdXRwdXQ9W10pOjAhPXV0JiYkZS5vdXRwdXQucHVzaCh1dCl9LGZzeW5jKCRlKXskZS5vdXRwdXQmJiRlLm91dHB1dC5sZW5ndGg+MCYmKFEoa3IoJGUu''@;'; put 'put ''b3V0cHV0LDApKSwkZS5vdXRwdXQ9W10pfSxpb2N0bF90Y2dldHM6JGU9Pih7Y19pZmxhZzoyNTg1NixjX29mbGFnOjUsY19jZmxhZzoxOTEsY19sZmxhZzozNTM4NyxjX2NjOlszLDI4LDEyNywyMSw0LDAsMSwwLDE3LDE5LDI2LDAsMTgsMTUsMjMsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCww''@;'; put 'put ''LDAsMCwwLDAsMF19KSxpb2N0bF90Y3NldHM6KCRlLHV0LFJ0KT0+MCxpb2N0bF90aW9jZ3dpbnN6OiRlPT5bMjQsODBdfSxkZWZhdWx0X3R0eTFfb3BzOntwdXRfY2hhcigkZSx1dCl7bnVsbD09PXV0fHwxMD09PXV0PyhkZShrcigkZS5vdXRwdXQsMCkpLCRlLm91dHB1dD1bXSk6MCE9dXQm''@;'; put 'put ''JiRlLm91dHB1dC5wdXNoKHV0KX0sZnN5bmMoJGUpeyRlLm91dHB1dCYmJGUub3V0cHV0Lmxlbmd0aD4wJiYoZGUoa3IoJGUub3V0cHV0LDApKSwkZS5vdXRwdXQ9W10pfX19LGhhPSgkZSx1dCk9Pk1hdGguY2VpbCgkZS91dCkqdXQsV289JGU9PnskZT1oYSgkZSw2NTUzNik7dmFyIFJ0LHV0''@;'; put 'put ''PWZtZSg2NTUzNiwkZSk7cmV0dXJuIHV0PyhDZS5maWxsKDAsUnQ9dXQsUnQrJGUpLFJ0KTowfSxLaT17b3BzX3RhYmxlOm51bGwsbW91bnQ6JGU9PktpLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCksY3JlYXRlTm9kZSgkZSx1dCxSdCxXdCl7aWYoTnQuaXNCbGtkZXYoUnQpfHxOdC5p''@;'; put 'put ''c0ZJRk8oUnQpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtLaS5vcHNfdGFibGV8fD17ZGlyOntub2RlOntnZXRhdHRyOktpLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpLaS5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpLaS5ub2RlX29wcy5sb29rdXAsbWtub2Q6S2kubm9kZV9vcHMu''@;'; put 'put ''bWtub2QscmVuYW1lOktpLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6S2kubm9kZV9vcHMudW5saW5rLHJtZGlyOktpLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6S2kubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOktpLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOktpLnN0cmVhbV9v''@;'; put 'put ''cHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpLaS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6S2kubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6S2kuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpLaS5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6S2kuc3RyZWFtX29wcy53cml0''@;'; put 'put ''ZSxhbGxvY2F0ZTpLaS5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6S2kuc3RyZWFtX29wcy5tbWFwLG1zeW5jOktpLnN0cmVhbV9vcHMubXN5bmN9fSxsaW5rOntub2RlOntnZXRhdHRyOktpLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpLaS5ub2RlX29wcy5zZXRhdHRyLHJlYWRsaW5rOktp''@;'; put 'put ''Lm5vZGVfb3BzLnJlYWRsaW5rfSxzdHJlYW06e319LGNocmRldjp7bm9kZTp7Z2V0YXR0cjpLaS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6S2kubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOk50LmNocmRldl9zdHJlYW1fb3BzfX07dmFyIGtuPU50LmNyZWF0ZU5vZGUoJGUsdXQsUnQsV3Qp''@;'; put 'put ''O3JldHVybiBOdC5pc0Rpcihrbi5tb2RlKT8oa24ubm9kZV9vcHM9S2kub3BzX3RhYmxlLmRpci5ub2RlLGtuLnN0cmVhbV9vcHM9S2kub3BzX3RhYmxlLmRpci5zdHJlYW0sa24uY29udGVudHM9e30pOk50LmlzRmlsZShrbi5tb2RlKT8oa24ubm9kZV9vcHM9S2kub3BzX3RhYmxlLmZpbGUu''@;'; put 'put ''bm9kZSxrbi5zdHJlYW1fb3BzPUtpLm9wc190YWJsZS5maWxlLnN0cmVhbSxrbi51c2VkQnl0ZXM9MCxrbi5jb250ZW50cz1udWxsKTpOdC5pc0xpbmsoa24ubW9kZSk/KGtuLm5vZGVfb3BzPUtpLm9wc190YWJsZS5saW5rLm5vZGUsa24uc3RyZWFtX29wcz1LaS5vcHNfdGFibGUubGluay5z''@;'; put 'put ''dHJlYW0pOk50LmlzQ2hyZGV2KGtuLm1vZGUpJiYoa24ubm9kZV9vcHM9S2kub3BzX3RhYmxlLmNocmRldi5ub2RlLGtuLnN0cmVhbV9vcHM9S2kub3BzX3RhYmxlLmNocmRldi5zdHJlYW0pLGtuLnRpbWVzdGFtcD1EYXRlLm5vdygpLCRlJiYoJGUuY29udGVudHNbdXRdPWtuLCRlLnRpbWVz''@;'; put 'put ''dGFtcD1rbi50aW1lc3RhbXApLGtufSxnZXRGaWxlRGF0YUFzVHlwZWRBcnJheTokZT0+JGUuY29udGVudHM/JGUuY29udGVudHMuc3ViYXJyYXk/JGUuY29udGVudHMuc3ViYXJyYXkoMCwkZS51c2VkQnl0ZXMpOm5ldyBVaW50OEFycmF5KCRlLmNvbnRlbnRzKTpuZXcgVWludDhBcnJheSgw''@;'; put 'put ''KSxleHBhbmRGaWxlU3RvcmFnZSgkZSx1dCl7dmFyIFJ0PSRlLmNvbnRlbnRzPyRlLmNvbnRlbnRzLmxlbmd0aDowO2lmKCEoUnQ+PXV0KSl7dXQ9TWF0aC5tYXgodXQsUnQqKFJ0PDEwNDg1NzY/MjoxLjEyNSk+Pj4wKSwwIT1SdCYmKHV0PU1hdGgubWF4KHV0LDI1NikpO3ZhciBXdD0kZS5j''@;'; put 'put ''b250ZW50czskZS5jb250ZW50cz1uZXcgVWludDhBcnJheSh1dCksJGUudXNlZEJ5dGVzPjAmJiRlLmNvbnRlbnRzLnNldChXdC5zdWJhcnJheSgwLCRlLnVzZWRCeXRlcyksMCl9fSxyZXNpemVGaWxlU3RvcmFnZSgkZSx1dCl7aWYoJGUudXNlZEJ5dGVzIT11dClpZigwPT11dCkkZS5jb250''@;'; put 'put ''ZW50cz1udWxsLCRlLnVzZWRCeXRlcz0wO2Vsc2V7dmFyIFJ0PSRlLmNvbnRlbnRzOyRlLmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KHV0KSxSdCYmJGUuY29udGVudHMuc2V0KFJ0LnN1YmFycmF5KDAsTWF0aC5taW4odXQsJGUudXNlZEJ5dGVzKSkpLCRlLnVzZWRCeXRlcz11dH19LG5vZGVf''@;'; put 'put ''b3BzOntnZXRhdHRyKCRlKXt2YXIgdXQ9e307cmV0dXJuIHV0LmRldj1OdC5pc0NocmRldigkZS5tb2RlKT8kZS5pZDoxLHV0Lmlubz0kZS5pZCx1dC5tb2RlPSRlLm1vZGUsdXQubmxpbms9MSx1dC51aWQ9MCx1dC5naWQ9MCx1dC5yZGV2PSRlLnJkZXYsdXQuc2l6ZT1OdC5pc0RpcigkZS5t''@;'; put 'put ''b2RlKT80MDk2Ok50LmlzRmlsZSgkZS5tb2RlKT8kZS51c2VkQnl0ZXM6TnQuaXNMaW5rKCRlLm1vZGUpPyRlLmxpbmsubGVuZ3RoOjAsdXQuYXRpbWU9bmV3IERhdGUoJGUudGltZXN0YW1wKSx1dC5tdGltZT1uZXcgRGF0ZSgkZS50aW1lc3RhbXApLHV0LmN0aW1lPW5ldyBEYXRlKCRlLnRp''@;'; put 'put ''bWVzdGFtcCksdXQuYmxrc2l6ZT00MDk2LHV0LmJsb2Nrcz1NYXRoLmNlaWwodXQuc2l6ZS91dC5ibGtzaXplKSx1dH0sc2V0YXR0cigkZSx1dCl7dm9pZCAwIT09dXQubW9kZSYmKCRlLm1vZGU9dXQubW9kZSksdm9pZCAwIT09dXQudGltZXN0YW1wJiYoJGUudGltZXN0YW1wPXV0LnRpbWVz''@;'; put 'put ''dGFtcCksdm9pZCAwIT09dXQuc2l6ZSYmS2kucmVzaXplRmlsZVN0b3JhZ2UoJGUsdXQuc2l6ZSl9LGxvb2t1cCgkZSx1dCl7dGhyb3cgTnQuZ2VuZXJpY0Vycm9yc1s0NF19LG1rbm9kOigkZSx1dCxSdCxXdCk9PktpLmNyZWF0ZU5vZGUoJGUsdXQsUnQsV3QpLHJlbmFtZSgkZSx1dCxSdCl7''@;'; put 'put ''aWYoTnQuaXNEaXIoJGUubW9kZSkpe3ZhciBXdDt0cnl7V3Q9TnQubG9va3VwTm9kZSh1dCxSdCl9Y2F0Y2h7fWlmKFd0KWZvcih2YXIga24gaW4gV3QuY29udGVudHMpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNTUpfWRlbGV0ZSAkZS5wYXJlbnQuY29udGVudHNbJGUubmFtZV0sJGUucGFy''@;'; put 'put ''ZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpLCRlLm5hbWU9UnQsdXQuY29udGVudHNbUnRdPSRlLHV0LnRpbWVzdGFtcD0kZS5wYXJlbnQudGltZXN0YW1wLCRlLnBhcmVudD11dH0sdW5saW5rKCRlLHV0KXtkZWxldGUgJGUuY29udGVudHNbdXRdLCRlLnRpbWVzdGFtcD1EYXRlLm5vdygpfSxy''@;'; put 'put ''bWRpcigkZSx1dCl7dmFyIFJ0PU50Lmxvb2t1cE5vZGUoJGUsdXQpO2Zvcih2YXIgV3QgaW4gUnQuY29udGVudHMpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNTUpO2RlbGV0ZSAkZS5jb250ZW50c1t1dF0sJGUudGltZXN0YW1wPURhdGUubm93KCl9LHJlYWRkaXIoJGUpe3ZhciB1dD1bIi4i''@;'; put 'put ''LCIuLiJdO2Zvcih2YXIgUnQgb2YgT2JqZWN0LmtleXMoJGUuY29udGVudHMpKXV0LnB1c2goUnQpO3JldHVybiB1dH0sc3ltbGluaygkZSx1dCxSdCl7dmFyIFd0PUtpLmNyZWF0ZU5vZGUoJGUsdXQsNDE0NzEsMCk7cmV0dXJuIFd0Lmxpbms9UnQsV3R9LHJlYWRsaW5rKCRlKXtpZighTnQu''@;'; put 'put ''aXNMaW5rKCRlLm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDI4KTtyZXR1cm4gJGUubGlua319LHN0cmVhbV9vcHM6e3JlYWQoJGUsdXQsUnQsV3Qsa24pe3ZhciBzcj0kZS5ub2RlLmNvbnRlbnRzO2lmKGtuPj0kZS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgb3I9TWF0aC5t''@;'; put 'put ''aW4oJGUubm9kZS51c2VkQnl0ZXMta24sV3QpO2lmKG9yPjgmJnNyLnN1YmFycmF5KXV0LnNldChzci5zdWJhcnJheShrbixrbitvciksUnQpO2Vsc2UgZm9yKHZhciBOcj0wO05yPG9yO05yKyspdXRbUnQrTnJdPXNyW2tuK05yXTtyZXR1cm4gb3J9LHdyaXRlKCRlLHV0LFJ0LFd0LGtuLHNy''@;'; put 'put ''KXtpZih1dC5idWZmZXI9PT1wZS5idWZmZXImJihzcj0hMSksIVd0KXJldHVybiAwO3ZhciBvcj0kZS5ub2RlO2lmKG9yLnRpbWVzdGFtcD1EYXRlLm5vdygpLHV0LnN1YmFycmF5JiYoIW9yLmNvbnRlbnRzfHxvci5jb250ZW50cy5zdWJhcnJheSkpe2lmKHNyKXJldHVybiBvci5jb250ZW50''@;'; put 'put ''cz11dC5zdWJhcnJheShSdCxSdCtXdCksb3IudXNlZEJ5dGVzPVd0LFd0O2lmKDA9PT1vci51c2VkQnl0ZXMmJjA9PT1rbilyZXR1cm4gb3IuY29udGVudHM9dXQuc2xpY2UoUnQsUnQrV3QpLG9yLnVzZWRCeXRlcz1XdCxXdDtpZihrbitXdDw9b3IudXNlZEJ5dGVzKXJldHVybiBvci5jb250''@;'; put 'put ''ZW50cy5zZXQodXQuc3ViYXJyYXkoUnQsUnQrV3QpLGtuKSxXdH1pZihLaS5leHBhbmRGaWxlU3RvcmFnZShvcixrbitXdCksb3IuY29udGVudHMuc3ViYXJyYXkmJnV0LnN1YmFycmF5KW9yLmNvbnRlbnRzLnNldCh1dC5zdWJhcnJheShSdCxSdCtXdCksa24pO2Vsc2UgZm9yKHZhciBOcj0w''@;'; put 'put ''O05yPFd0O05yKyspb3IuY29udGVudHNba24rTnJdPXV0W1J0K05yXTtyZXR1cm4gb3IudXNlZEJ5dGVzPU1hdGgubWF4KG9yLnVzZWRCeXRlcyxrbitXdCksV3R9LGxsc2VlaygkZSx1dCxSdCl7dmFyIFd0PXV0O2lmKDE9PT1SdD9XdCs9JGUucG9zaXRpb246Mj09PVJ0JiZOdC5pc0ZpbGUo''@;'; put 'put ''JGUubm9kZS5tb2RlKSYmKFd0Kz0kZS5ub2RlLnVzZWRCeXRlcyksV3Q8MCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7cmV0dXJuIFd0fSxhbGxvY2F0ZSgkZSx1dCxSdCl7S2kuZXhwYW5kRmlsZVN0b3JhZ2UoJGUubm9kZSx1dCtSdCksJGUubm9kZS51c2VkQnl0ZXM9TWF0aC5tYXgo''@;'; put 'put ''JGUubm9kZS51c2VkQnl0ZXMsdXQrUnQpfSxtbWFwKCRlLHV0LFJ0LFd0LGtuKXtpZighTnQuaXNGaWxlKCRlLm5vZGUubW9kZSkpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNDMpO3ZhciBzcixvcixOcj0kZS5ub2RlLmNvbnRlbnRzO2lmKDIma258fE5yLmJ1ZmZlciE9PXBlLmJ1ZmZlcil7''@;'; put 'put ''aWYoKFJ0PjB8fFJ0K3V0PE5yLmxlbmd0aCkmJihOcj1Oci5zdWJhcnJheT9Oci5zdWJhcnJheShSdCxSdCt1dCk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoTnIsUnQsUnQrdXQpKSxvcj0hMCwhKHNyPVdvKHV0KSkpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNDgpO3BlLnNldChOcixz''@;'; put 'put ''cil9ZWxzZSBvcj0hMSxzcj1Oci5ieXRlT2Zmc2V0O3JldHVybntwdHI6c3IsYWxsb2NhdGVkOm9yfX0sbXN5bmM6KCRlLHV0LFJ0LFd0LGtuKT0+KEtpLnN0cmVhbV9vcHMud3JpdGUoJGUsdXQsMCxXdCxSdCwhMSksMCl9fSxRbz1bXSxycz0oJGUsdXQpPT57dmFyIFJ0PTA7cmV0dXJuICRl''@;'; put 'put ''JiYoUnR8PTM2NSksdXQmJihSdHw9MTQ2KSxSdH0sTnQ9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDohMSxpZ25vcmVQZXJtaXNzaW9uczohMCxFcnJub0Vycm9y''@;'; put 'put ''OmNsYXNze2NvbnN0cnVjdG9yKCRlKXt0aGlzLm5hbWU9IkVycm5vRXJyb3IiLHRoaXMuZXJybm89JGV9fSxnZW5lcmljRXJyb3JzOnt9LGZpbGVzeXN0ZW1zOm51bGwsc3luY0ZTUmVxdWVzdHM6MCxGU1N0cmVhbTpjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2hhcmVkPXt9fWdldCBvYmpl''@;'; put 'put ''Y3QoKXtyZXR1cm4gdGhpcy5ub2RlfXNldCBvYmplY3QoJGUpe3RoaXMubm9kZT0kZX1nZXQgaXNSZWFkKCl7cmV0dXJuIDEhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfWdldCBpc1dyaXRlKCl7cmV0dXJuISEoMjA5NzE1NSZ0aGlzLmZsYWdzKX1nZXQgaXNBcHBlbmQoKXtyZXR1cm4gMTAyNCZ0''@;'; put 'put ''aGlzLmZsYWdzfWdldCBmbGFncygpe3JldHVybiB0aGlzLnNoYXJlZC5mbGFnc31zZXQgZmxhZ3MoJGUpe3RoaXMuc2hhcmVkLmZsYWdzPSRlfWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZC5wb3NpdGlvbn1zZXQgcG9zaXRpb24oJGUpe3RoaXMuc2hhcmVkLnBvc2l0aW9uPSRl''@;'; put 'put ''fX0sRlNOb2RlOmNsYXNze2NvbnN0cnVjdG9yKCRlLHV0LFJ0LFd0KXskZXx8KCRlPXRoaXMpLHRoaXMucGFyZW50PSRlLHRoaXMubW91bnQ9JGUubW91bnQsdGhpcy5tb3VudGVkPW51bGwsdGhpcy5pZD1OdC5uZXh0SW5vZGUrKyx0aGlzLm5hbWU9dXQsdGhpcy5tb2RlPVJ0LHRoaXMubm9k''@;'; put 'put ''ZV9vcHM9e30sdGhpcy5zdHJlYW1fb3BzPXt9LHRoaXMucmRldj1XdCx0aGlzLnJlYWRNb2RlPTM2NSx0aGlzLndyaXRlTW9kZT0xNDZ9Z2V0IHJlYWQoKXtyZXR1cm4odGhpcy5tb2RlJnRoaXMucmVhZE1vZGUpPT09dGhpcy5yZWFkTW9kZX1zZXQgcmVhZCgkZSl7JGU/dGhpcy5tb2RlfD10''@;'; put 'put ''aGlzLnJlYWRNb2RlOnRoaXMubW9kZSY9fnRoaXMucmVhZE1vZGV9Z2V0IHdyaXRlKCl7cmV0dXJuKHRoaXMubW9kZSZ0aGlzLndyaXRlTW9kZSk9PT10aGlzLndyaXRlTW9kZX1zZXQgd3JpdGUoJGUpeyRlP3RoaXMubW9kZXw9dGhpcy53cml0ZU1vZGU6dGhpcy5tb2RlJj1+dGhpcy53cml0''@;'; put 'put ''ZU1vZGV9Z2V0IGlzRm9sZGVyKCl7cmV0dXJuIE50LmlzRGlyKHRoaXMubW9kZSl9Z2V0IGlzRGV2aWNlKCl7cmV0dXJuIE50LmlzQ2hyZGV2KHRoaXMubW9kZSl9fSxsb29rdXBQYXRoKCRlLHV0PXt9KXtpZighKCRlPUtuLnJlc29sdmUoJGUpKSlyZXR1cm57cGF0aDoiIixub2RlOm51bGx9''@;'; put 'put ''O2lmKCh1dD1PYmplY3QuYXNzaWduKHtmb2xsb3dfbW91bnQ6ITAscmVjdXJzZV9jb3VudDowfSx1dCkpLnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigzMik7Zm9yKHZhciBSdD0kZS5zcGxpdCgiLyIpLmZpbHRlcihHbz0+ISFHbyksV3Q9TnQucm9vdCxrbj0iLyIs''@;'; put 'put ''c3I9MDtzcjxSdC5sZW5ndGg7c3IrKyl7dmFyIG9yPXNyPT09UnQubGVuZ3RoLTE7aWYob3ImJnV0LnBhcmVudClicmVhaztpZihXdD1OdC5sb29rdXBOb2RlKFd0LFJ0W3NyXSksa249VXQuam9pbjIoa24sUnRbc3JdKSxOdC5pc01vdW50cG9pbnQoV3QpJiYoIW9yfHxvciYmdXQuZm9sbG93''@;'; put 'put ''X21vdW50KSYmKFd0PVd0Lm1vdW50ZWQucm9vdCksIW9yfHx1dC5mb2xsb3cpZm9yKHZhciBOcj0wO050LmlzTGluayhXdC5tb2RlKTspe3ZhciBDbz1OdC5yZWFkbGluayhrbik7aWYoa249S24ucmVzb2x2ZShVdC5kaXJuYW1lKGtuKSxDbyksV3Q9TnQubG9va3VwUGF0aChrbix7cmVjdXJz''@;'; put 'put ''ZV9jb3VudDp1dC5yZWN1cnNlX2NvdW50KzF9KS5ub2RlLE5yKys+NDApdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoMzIpfX1yZXR1cm57cGF0aDprbixub2RlOld0fX0sZ2V0UGF0aCgkZSl7Zm9yKHZhciB1dDs7KXtpZihOdC5pc1Jvb3QoJGUpKXt2YXIgUnQ9JGUubW91bnQubW91bnRwb2lu''@;'; put 'put ''dDtyZXR1cm4gdXQ/Ii8iIT09UnRbUnQubGVuZ3RoLTFdP2Ake1J0fS8ke3V0fWA6UnQrdXQ6UnR9dXQ9dXQ/YCR7JGUubmFtZX0vJHt1dH1gOiRlLm5hbWUsJGU9JGUucGFyZW50fX0saGFzaE5hbWUoJGUsdXQpe2Zvcih2YXIgUnQ9MCxXdD0wO1d0PHV0Lmxlbmd0aDtXdCsrKVJ0PShSdDw8''@;'; put 'put ''NSktUnQrdXQuY2hhckNvZGVBdChXdCl8MDtyZXR1cm4oJGUrUnQ+Pj4wKSVOdC5uYW1lVGFibGUubGVuZ3RofSxoYXNoQWRkTm9kZSgkZSl7dmFyIHV0PU50Lmhhc2hOYW1lKCRlLnBhcmVudC5pZCwkZS5uYW1lKTskZS5uYW1lX25leHQ9TnQubmFtZVRhYmxlW3V0XSxOdC5uYW1lVGFibGVb''@;'; put 'put ''dXRdPSRlfSxoYXNoUmVtb3ZlTm9kZSgkZSl7dmFyIHV0PU50Lmhhc2hOYW1lKCRlLnBhcmVudC5pZCwkZS5uYW1lKTtpZihOdC5uYW1lVGFibGVbdXRdPT09JGUpTnQubmFtZVRhYmxlW3V0XT0kZS5uYW1lX25leHQ7ZWxzZSBmb3IodmFyIFJ0PU50Lm5hbWVUYWJsZVt1dF07UnQ7KXtpZihS''@;'; put 'put ''dC5uYW1lX25leHQ9PT0kZSl7UnQubmFtZV9uZXh0PSRlLm5hbWVfbmV4dDticmVha31SdD1SdC5uYW1lX25leHR9fSxsb29rdXBOb2RlKCRlLHV0KXt2YXIgUnQ9TnQubWF5TG9va3VwKCRlKTtpZihSdCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcihSdCk7Zm9yKHZhciBXdD1OdC5oYXNoTmFt''@;'; put 'put ''ZSgkZS5pZCx1dCksa249TnQubmFtZVRhYmxlW1d0XTtrbjtrbj1rbi5uYW1lX25leHQpaWYoa24ucGFyZW50LmlkPT09JGUuaWQmJmtuLm5hbWU9PT11dClyZXR1cm4ga247cmV0dXJuIE50Lmxvb2t1cCgkZSx1dCl9LGNyZWF0ZU5vZGUoJGUsdXQsUnQsV3Qpe3ZhciBrbj1uZXcgTnQuRlNO''@;'; put 'put ''b2RlKCRlLHV0LFJ0LFd0KTtyZXR1cm4gTnQuaGFzaEFkZE5vZGUoa24pLGtufSxkZXN0cm95Tm9kZSgkZSl7TnQuaGFzaFJlbW92ZU5vZGUoJGUpfSxpc1Jvb3Q6JGU9PiRlPT09JGUucGFyZW50LGlzTW91bnRwb2ludDokZT0+ISEkZS5tb3VudGVkLGlzRmlsZTokZT0+MzI3Njg9PSg2MTQ0''@;'; put 'put ''MCYkZSksaXNEaXI6JGU9PjE2Mzg0PT0oNjE0NDAmJGUpLGlzTGluazokZT0+NDA5NjA9PSg2MTQ0MCYkZSksaXNDaHJkZXY6JGU9PjgxOTI9PSg2MTQ0MCYkZSksaXNCbGtkZXY6JGU9PjI0NTc2PT0oNjE0NDAmJGUpLGlzRklGTzokZT0+NDA5Nj09KDYxNDQwJiRlKSxpc1NvY2tldDokZT0+''@;'; put 'put ''ISg0OTE1MiZ+JGUpLGZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKCRlKXt2YXIgdXQ9WyJyIiwidyIsInJ3Il1bMyYkZV07cmV0dXJuIDUxMiYkZSYmKHV0Kz0idyIpLHV0fSxub2RlUGVybWlzc2lvbnM6KCRlLHV0KT0+TnQuaWdub3JlUGVybWlzc2lvbnN8fCghdXQuaW5jbHVkZXMoInIiKXx8''@;'; put 'put ''MjkyJiRlLm1vZGUpJiYoIXV0LmluY2x1ZGVzKCJ3Iil8fDE0NiYkZS5tb2RlKSYmKCF1dC5pbmNsdWRlcygieCIpfHw3MyYkZS5tb2RlKT8wOjIsbWF5TG9va3VwOiRlPT5OdC5pc0RpcigkZS5tb2RlKT9OdC5ub2RlUGVybWlzc2lvbnMoJGUsIngiKXx8KCRlLm5vZGVfb3BzLmxvb2t1cD8w''@;'; put 'put ''OjIpOjU0LG1heUNyZWF0ZSgkZSx1dCl7dHJ5e3JldHVybiBOdC5sb29rdXBOb2RlKCRlLHV0KSwyMH1jYXRjaHt9cmV0dXJuIE50Lm5vZGVQZXJtaXNzaW9ucygkZSwid3giKX0sbWF5RGVsZXRlKCRlLHV0LFJ0KXt2YXIgV3Q7dHJ5e1d0PU50Lmxvb2t1cE5vZGUoJGUsdXQpfWNhdGNoKHNy''@;'; put 'put ''KXtyZXR1cm4gc3IuZXJybm99dmFyIGtuPU50Lm5vZGVQZXJtaXNzaW9ucygkZSwid3giKTtpZihrbilyZXR1cm4ga247aWYoUnQpe2lmKCFOdC5pc0RpcihXdC5tb2RlKSlyZXR1cm4gNTQ7aWYoTnQuaXNSb290KFd0KXx8TnQuZ2V0UGF0aChXdCk9PT1OdC5jd2QoKSlyZXR1cm4gMTB9ZWxz''@;'; put 'put ''ZSBpZihOdC5pc0RpcihXdC5tb2RlKSlyZXR1cm4gMzE7cmV0dXJuIDB9LG1heU9wZW46KCRlLHV0KT0+JGU/TnQuaXNMaW5rKCRlLm1vZGUpPzMyOk50LmlzRGlyKCRlLm1vZGUpJiYoInIiIT09TnQuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcodXQpfHw1MTImdXQpPzMxOk50Lm5vZGVQZXJt''@;'; put 'put ''aXNzaW9ucygkZSxOdC5mbGFnc1RvUGVybWlzc2lvblN0cmluZyh1dCkpOjQ0LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZCgpe2Zvcih2YXIgJGU9MDskZTw9TnQuTUFYX09QRU5fRkRTOyRlKyspaWYoIU50LnN0cmVhbXNbJGVdKXJldHVybiAkZTt0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigz''@;'; put 'put ''Myl9LGdldFN0cmVhbUNoZWNrZWQoJGUpe3ZhciB1dD1OdC5nZXRTdHJlYW0oJGUpO2lmKCF1dCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTtyZXR1cm4gdXR9LGdldFN0cmVhbTokZT0+TnQuc3RyZWFtc1skZV0sY3JlYXRlU3RyZWFtOigkZSx1dD0tMSk9PigkZT1PYmplY3QuYXNzaWdu''@;'; put 'put ''KG5ldyBOdC5GU1N0cmVhbSwkZSksLTE9PXV0JiYodXQ9TnQubmV4dGZkKCkpLCRlLmZkPXV0LE50LnN0cmVhbXNbdXRdPSRlLCRlKSxjbG9zZVN0cmVhbSgkZSl7TnQuc3RyZWFtc1skZV09bnVsbH0sZHVwU3RyZWFtKCRlLHV0PS0xKXt2YXIgUnQ9TnQuY3JlYXRlU3RyZWFtKCRlLHV0KTty''@;'; put 'put ''ZXR1cm4gUnQuc3RyZWFtX29wcz8uZHVwPy4oUnQpLFJ0fSxjaHJkZXZfc3RyZWFtX29wczp7b3BlbigkZSl7dmFyIHV0PU50LmdldERldmljZSgkZS5ub2RlLnJkZXYpOyRlLnN0cmVhbV9vcHM9dXQuc3RyZWFtX29wcywkZS5zdHJlYW1fb3BzLm9wZW4/LigkZSl9LGxsc2Vlaygpe3Rocm93''@;'; put 'put ''IG5ldyBOdC5FcnJub0Vycm9yKDcwKX19LG1ham9yOiRlPT4kZT4+OCxtaW5vcjokZT0+MjU1JiRlLG1ha2VkZXY6KCRlLHV0KT0+JGU8PDh8dXQscmVnaXN0ZXJEZXZpY2UoJGUsdXQpe050LmRldmljZXNbJGVdPXtzdHJlYW1fb3BzOnV0fX0sZ2V0RGV2aWNlOiRlPT5OdC5kZXZpY2VzWyRl''@;'; put 'put ''XSxnZXRNb3VudHMoJGUpe2Zvcih2YXIgdXQ9W10sUnQ9WyRlXTtSdC5sZW5ndGg7KXt2YXIgV3Q9UnQucG9wKCk7dXQucHVzaChXdCksUnQucHVzaCguLi5XdC5tb3VudHMpfXJldHVybiB1dH0sc3luY2ZzKCRlLHV0KXsiZnVuY3Rpb24iPT10eXBlb2YgJGUmJih1dD0kZSwkZT0hMSksTnQu''@;'; put 'put ''c3luY0ZTUmVxdWVzdHMrKyxOdC5zeW5jRlNSZXF1ZXN0cz4xJiZkZShgd2FybmluZzogJHtOdC5zeW5jRlNSZXF1ZXN0c30gRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29ya2ApO3ZhciBSdD1OdC5nZXRNb3VudHMo''@;'; put 'put ''TnQucm9vdC5tb3VudCksV3Q9MDtmdW5jdGlvbiBrbihvcil7cmV0dXJuIE50LnN5bmNGU1JlcXVlc3RzLS0sdXQob3IpfWZ1bmN0aW9uIHNyKG9yKXtpZihvcilyZXR1cm4gc3IuZXJyb3JlZD92b2lkIDA6KHNyLmVycm9yZWQ9ITAsa24ob3IpKTsrK1d0Pj1SdC5sZW5ndGgmJmtuKG51bGwp''@;'; put 'put ''fVJ0LmZvckVhY2gob3I9PntpZighb3IudHlwZS5zeW5jZnMpcmV0dXJuIHNyKG51bGwpO29yLnR5cGUuc3luY2ZzKG9yLCRlLHNyKX0pfSxtb3VudCgkZSx1dCxSdCl7dmFyIFd0LGtuPSIvIj09PVJ0LHNyPSFSdDtpZihrbiYmTnQucm9vdCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigxMCk7''@;'; put 'put ''aWYoIWtuJiYhc3Ipe3ZhciBvcj1OdC5sb29rdXBQYXRoKFJ0LHtmb2xsb3dfbW91bnQ6ITF9KTtpZihSdD1vci5wYXRoLE50LmlzTW91bnRwb2ludChXdD1vci5ub2RlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigxMCk7aWYoIU50LmlzRGlyKFd0Lm1vZGUpKXRocm93IG5ldyBOdC5FcnJu''@;'; put 'put ''b0Vycm9yKDU0KX12YXIgTnI9e3R5cGU6JGUsb3B0czp1dCxtb3VudHBvaW50OlJ0LG1vdW50czpbXX0sQ289JGUubW91bnQoTnIpO3JldHVybiBDby5tb3VudD1OcixOci5yb290PUNvLGtuP050LnJvb3Q9Q286V3QmJihXdC5tb3VudGVkPU5yLFd0Lm1vdW50JiZXdC5tb3VudC5tb3VudHMu''@;'; put 'put ''cHVzaChOcikpLENvfSx1bm1vdW50KCRlKXt2YXIgdXQ9TnQubG9va3VwUGF0aCgkZSx7Zm9sbG93X21vdW50OiExfSk7aWYoIU50LmlzTW91bnRwb2ludCh1dC5ub2RlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7dmFyIFJ0PXV0Lm5vZGUsV3Q9UnQubW91bnRlZCxrbj1OdC5nZXRN''@;'; put 'put ''b3VudHMoV3QpO09iamVjdC5rZXlzKE50Lm5hbWVUYWJsZSkuZm9yRWFjaChvcj0+e2Zvcih2YXIgTnI9TnQubmFtZVRhYmxlW29yXTtOcjspe3ZhciBDbz1Oci5uYW1lX25leHQ7a24uaW5jbHVkZXMoTnIubW91bnQpJiZOdC5kZXN0cm95Tm9kZShOciksTnI9Q299fSksUnQubW91bnRlZD1u''@;'; put 'put ''dWxsO3ZhciBzcj1SdC5tb3VudC5tb3VudHMuaW5kZXhPZihXdCk7UnQubW91bnQubW91bnRzLnNwbGljZShzciwxKX0sbG9va3VwOigkZSx1dCk9PiRlLm5vZGVfb3BzLmxvb2t1cCgkZSx1dCksbWtub2QoJGUsdXQsUnQpe3ZhciBXdD1OdC5sb29rdXBQYXRoKCRlLHtwYXJlbnQ6ITB9KS5u''@;'; put 'put ''b2RlLGtuPVV0LmJhc2VuYW1lKCRlKTtpZigha258fCIuIj09PWtufHwiLi4iPT09a24pdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoMjgpO3ZhciBzcj1OdC5tYXlDcmVhdGUoV3Qsa24pO2lmKHNyKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKHNyKTtpZighV3Qubm9kZV9vcHMubWtub2QpdGhy''@;'; put 'put ''b3cgbmV3IE50LkVycm5vRXJyb3IoNjMpO3JldHVybiBXdC5ub2RlX29wcy5ta25vZChXdCxrbix1dCxSdCl9LGNyZWF0ZTooJGUsdXQpPT4odXQ9dm9pZCAwIT09dXQ/dXQ6NDM4LHV0Jj00MDk1LE50Lm1rbm9kKCRlLHV0fD0zMjc2OCwwKSksbWtkaXI6KCRlLHV0KT0+KHV0PXZvaWQgMCE9''@;'; put 'put ''PXV0P3V0OjUxMSx1dCY9MTAyMyxOdC5ta25vZCgkZSx1dHw9MTYzODQsMCkpLG1rZGlyVHJlZSgkZSx1dCl7Zm9yKHZhciBSdD0kZS5zcGxpdCgiLyIpLFd0PSIiLGtuPTA7a248UnQubGVuZ3RoOysra24paWYoUnRba25dKXtXdCs9Ii8iK1J0W2tuXTt0cnl7TnQubWtkaXIoV3QsdXQpfWNh''@;'; put 'put ''dGNoKHNyKXtpZigyMCE9c3IuZXJybm8pdGhyb3cgc3J9fX0sbWtkZXY6KCRlLHV0LFJ0KT0+KHZvaWQgMD09PVJ0JiYoUnQ9dXQsdXQ9NDM4KSxOdC5ta25vZCgkZSx1dHw9ODE5MixSdCkpLHN5bWxpbmsoJGUsdXQpe2lmKCFLbi5yZXNvbHZlKCRlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJv''@;'; put 'put ''cig0NCk7dmFyIFJ0PU50Lmxvb2t1cFBhdGgodXQse3BhcmVudDohMH0pLm5vZGU7aWYoIVJ0KXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDQ0KTt2YXIgV3Q9VXQuYmFzZW5hbWUodXQpLGtuPU50Lm1heUNyZWF0ZShSdCxXdCk7aWYoa24pdGhyb3cgbmV3IE50LkVycm5vRXJyb3Ioa24pO2lm''@;'; put 'put ''KCFSdC5ub2RlX29wcy5zeW1saW5rKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtyZXR1cm4gUnQubm9kZV9vcHMuc3ltbGluayhSdCxXdCwkZSl9LHJlbmFtZSgkZSx1dCl7dmFyIFJ0LFd0LGtuPVV0LmRpcm5hbWUoJGUpLHNyPVV0LmRpcm5hbWUodXQpLG9yPVV0LmJhc2VuYW1lKCRl''@;'; put 'put ''KSxOcj1VdC5iYXNlbmFtZSh1dCk7aWYoUnQ9TnQubG9va3VwUGF0aCgkZSx7cGFyZW50OiEwfSkubm9kZSxXdD1OdC5sb29rdXBQYXRoKHV0LHtwYXJlbnQ6ITB9KS5ub2RlLCFSdHx8IVd0KXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDQ0KTtpZihSdC5tb3VudCE9PVd0Lm1vdW50KXRocm93''@;'; put 'put ''IG5ldyBOdC5FcnJub0Vycm9yKDc1KTt2YXIgQ28sR289TnQubG9va3VwTm9kZShSdCxvcikscHM9S24ucmVsYXRpdmUoJGUsc3IpO2lmKCIuIiE9PXBzLmNoYXJBdCgwKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7aWYoIi4iIT09KHBzPUtuLnJlbGF0aXZlKHV0LGtuKSkuY2hhckF0''@;'; put 'put ''KDApKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDU1KTt0cnl7Q289TnQubG9va3VwTm9kZShXdCxOcil9Y2F0Y2h7fWlmKEdvIT09Q28pe3ZhciBxcz1OdC5pc0RpcihHby5tb2RlKSxqbz1OdC5tYXlEZWxldGUoUnQsb3IscXMpO2lmKGpvKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKGpvKTtp''@;'; put 'put ''Zihqbz1Dbz9OdC5tYXlEZWxldGUoV3QsTnIscXMpOk50Lm1heUNyZWF0ZShXdCxOcikpdGhyb3cgbmV3IE50LkVycm5vRXJyb3Ioam8pO2lmKCFSdC5ub2RlX29wcy5yZW5hbWUpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNjMpO2lmKE50LmlzTW91bnRwb2ludChHbyl8fENvJiZOdC5pc01v''@;'; put 'put ''dW50cG9pbnQoQ28pKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDEwKTtpZihXdCE9PVJ0JiYoam89TnQubm9kZVBlcm1pc3Npb25zKFJ0LCJ3IikpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKGpvKTtOdC5oYXNoUmVtb3ZlTm9kZShHbyk7dHJ5e1J0Lm5vZGVfb3BzLnJlbmFtZShHbyxXdCxO''@;'; put 'put ''cil9Y2F0Y2goc2Epe3Rocm93IHNhfWZpbmFsbHl7TnQuaGFzaEFkZE5vZGUoR28pfX19LHJtZGlyKCRlKXt2YXIgdXQ9TnQubG9va3VwUGF0aCgkZSx7cGFyZW50OiEwfSkubm9kZSxSdD1VdC5iYXNlbmFtZSgkZSksV3Q9TnQubG9va3VwTm9kZSh1dCxSdCksa249TnQubWF5RGVsZXRlKHV0''@;'; put 'put ''LFJ0LCEwKTtpZihrbil0aHJvdyBuZXcgTnQuRXJybm9FcnJvcihrbik7aWYoIXV0Lm5vZGVfb3BzLnJtZGlyKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtpZihOdC5pc01vdW50cG9pbnQoV3QpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDEwKTt1dC5ub2RlX29wcy5ybWRpcih1dCxS''@;'; put 'put ''dCksTnQuZGVzdHJveU5vZGUoV3QpfSxyZWFkZGlyKCRlKXt2YXIgdXQ9TnQubG9va3VwUGF0aCgkZSx7Zm9sbG93OiEwfSkubm9kZTtpZighdXQubm9kZV9vcHMucmVhZGRpcil0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig1NCk7cmV0dXJuIHV0Lm5vZGVfb3BzLnJlYWRkaXIodXQpfSx1bmxp''@;'; put 'put ''bmsoJGUpe3ZhciB1dD1OdC5sb29rdXBQYXRoKCRlLHtwYXJlbnQ6ITB9KS5ub2RlO2lmKCF1dCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig0NCk7dmFyIFJ0PVV0LmJhc2VuYW1lKCRlKSxXdD1OdC5sb29rdXBOb2RlKHV0LFJ0KSxrbj1OdC5tYXlEZWxldGUodXQsUnQsITEpO2lmKGtuKXRo''@;'; put 'put ''cm93IG5ldyBOdC5FcnJub0Vycm9yKGtuKTtpZighdXQubm9kZV9vcHMudW5saW5rKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtpZihOdC5pc01vdW50cG9pbnQoV3QpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDEwKTt1dC5ub2RlX29wcy51bmxpbmsodXQsUnQpLE50LmRlc3Ryb3lO''@;'; put 'put ''b2RlKFd0KX0scmVhZGxpbmsoJGUpe3ZhciB1dD1OdC5sb29rdXBQYXRoKCRlKS5ub2RlO2lmKCF1dCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig0NCk7aWYoIXV0Lm5vZGVfb3BzLnJlYWRsaW5rKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDI4KTtyZXR1cm4gS24ucmVzb2x2ZShOdC5nZXRQ''@;'; put 'put ''YXRoKHV0LnBhcmVudCksdXQubm9kZV9vcHMucmVhZGxpbmsodXQpKX0sc3RhdCgkZSx1dCl7dmFyIFJ0PU50Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohdXR9KS5ub2RlO2lmKCFSdCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig0NCk7aWYoIVJ0Lm5vZGVfb3BzLmdldGF0dHIpdGhyb3cgbmV3''@;'; put 'put ''IE50LkVycm5vRXJyb3IoNjMpO3JldHVybiBSdC5ub2RlX29wcy5nZXRhdHRyKFJ0KX0sbHN0YXQ6JGU9Pk50LnN0YXQoJGUsITApLGNobW9kKCRlLHV0LFJ0KXt2YXIgV3Q7aWYoIShXdD0ic3RyaW5nIj09dHlwZW9mICRlP050Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohUnR9KS5ub2RlOiRl''@;'; put 'put ''KS5ub2RlX29wcy5zZXRhdHRyKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtXdC5ub2RlX29wcy5zZXRhdHRyKFd0LHttb2RlOjQwOTUmdXR8LTQwOTYmV3QubW9kZSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2htb2QoJGUsdXQpe050LmNobW9kKCRlLHV0LCEwKX0sZmNobW9kKCRl''@;'; put 'put ''LHV0KXt2YXIgUnQ9TnQuZ2V0U3RyZWFtQ2hlY2tlZCgkZSk7TnQuY2htb2QoUnQubm9kZSx1dCl9LGNob3duKCRlLHV0LFJ0LFd0KXt2YXIga247aWYoIShrbj0ic3RyaW5nIj09dHlwZW9mICRlP050Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohV3R9KS5ub2RlOiRlKS5ub2RlX29wcy5zZXRh''@;'; put 'put ''dHRyKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDYzKTtrbi5ub2RlX29wcy5zZXRhdHRyKGtuLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2hvd24oJGUsdXQsUnQpe050LmNob3duKCRlLHV0LFJ0LCEwKX0sZmNob3duKCRlLHV0LFJ0KXt2YXIgV3Q9TnQuZ2V0U3RyZWFtQ2hlY2tlZCgk''@;'; put 'put ''ZSk7TnQuY2hvd24oV3Qubm9kZSx1dCxSdCl9LHRydW5jYXRlKCRlLHV0KXtpZih1dDwwKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDI4KTt2YXIgUnQ7aWYoIShSdD0ic3RyaW5nIj09dHlwZW9mICRlP050Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohMH0pLm5vZGU6JGUpLm5vZGVfb3BzLnNl''@;'; put 'put ''dGF0dHIpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNjMpO2lmKE50LmlzRGlyKFJ0Lm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDMxKTtpZighTnQuaXNGaWxlKFJ0Lm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDI4KTt2YXIgV3Q9TnQubm9kZVBlcm1pc3Npb25zKFJ0LCJ3''@;'; put 'put ''Iik7aWYoV3QpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoV3QpO1J0Lm5vZGVfb3BzLnNldGF0dHIoUnQse3NpemU6dXQsdGltZXN0YW1wOkRhdGUubm93KCl9KX0sZnRydW5jYXRlKCRlLHV0KXt2YXIgUnQ9TnQuZ2V0U3RyZWFtQ2hlY2tlZCgkZSk7aWYoISgyMDk3MTU1JlJ0LmZsYWdzKSl0''@;'; put 'put ''aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7TnQudHJ1bmNhdGUoUnQubm9kZSx1dCl9LHV0aW1lKCRlLHV0LFJ0KXt2YXIgV3Q9TnQubG9va3VwUGF0aCgkZSx7Zm9sbG93OiEwfSkubm9kZTtXdC5ub2RlX29wcy5zZXRhdHRyKFd0LHt0aW1lc3RhbXA6TWF0aC5tYXgodXQsUnQpfSl9LG9w''@;'; put 'put ''ZW4oJGUsdXQsUnQpe2lmKCIiPT09JGUpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNDQpO3ZhciBXdDtpZihSdD12b2lkIDA9PT1SdD80Mzg6UnQsUnQ9NjQmKHV0PSJzdHJpbmciPT10eXBlb2YgdXQ/KE5yPT57dmFyIENvPXtyOjAsInIrIjoyLHc6NTc3LCJ3KyI6NTc4LGE6MTA4OSwiYSsi''@;'; put 'put ''OjEwOTB9W05yXTtpZih2b2lkIDA9PT1Dbyl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZmlsZSBvcGVuIG1vZGU6ICR7TnJ9YCk7cmV0dXJuIENvfSkodXQpOnV0KT80MDk1JlJ0fDMyNzY4OjAsIm9iamVjdCI9PXR5cGVvZiAkZSlXdD0kZTtlbHNleyRlPVV0Lm5vcm1hbGl6ZSgkZSk7dHJ5''@;'; put 'put ''e1d0PU50Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohKDEzMTA3MiZ1dCl9KS5ub2RlfWNhdGNoe319dmFyIGtuPSExO2lmKDY0JnV0KWlmKFd0KXtpZigxMjgmdXQpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoMjApfWVsc2UgV3Q9TnQubWtub2QoJGUsUnQsMCksa249ITA7aWYoIVd0KXRocm93''@;'; put 'put ''IG5ldyBOdC5FcnJub0Vycm9yKDQ0KTtpZihOdC5pc0NocmRldihXdC5tb2RlKSYmKHV0Jj0tNTEzKSw2NTUzNiZ1dCYmIU50LmlzRGlyKFd0Lm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDU0KTtpZigha24pe3ZhciBzcj1OdC5tYXlPcGVuKFd0LHV0KTtpZihzcil0aHJvdyBuZXcg''@;'; put 'put ''TnQuRXJybm9FcnJvcihzcil9NTEyJnV0JiYha24mJk50LnRydW5jYXRlKFd0LDApLHV0Jj0tMTMxNzEzO3ZhciBvcj1OdC5jcmVhdGVTdHJlYW0oe25vZGU6V3QscGF0aDpOdC5nZXRQYXRoKFd0KSxmbGFnczp1dCxzZWVrYWJsZTohMCxwb3NpdGlvbjowLHN0cmVhbV9vcHM6V3Quc3RyZWFt''@;'; put 'put ''X29wcyx1bmdvdHRlbjpbXSxlcnJvcjohMX0pO3JldHVybiBvci5zdHJlYW1fb3BzLm9wZW4mJm9yLnN0cmVhbV9vcHMub3BlbihvciksIWYubG9nUmVhZEZpbGVzfHwxJnV0fHwoTnQucmVhZEZpbGVzfHwoTnQucmVhZEZpbGVzPXt9KSwkZSBpbiBOdC5yZWFkRmlsZXN8fChOdC5yZWFkRmls''@;'; put 'put ''ZXNbJGVdPTEpKSxvcn0sY2xvc2UoJGUpe2lmKE50LmlzQ2xvc2VkKCRlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTskZS5nZXRkZW50cyYmKCRlLmdldGRlbnRzPW51bGwpO3RyeXskZS5zdHJlYW1fb3BzLmNsb3NlJiYkZS5zdHJlYW1fb3BzLmNsb3NlKCRlKX1jYXRjaCh1dCl7dGhy''@;'; put 'put ''b3cgdXR9ZmluYWxseXtOdC5jbG9zZVN0cmVhbSgkZS5mZCl9JGUuZmQ9bnVsbH0saXNDbG9zZWQ6JGU9Pm51bGw9PT0kZS5mZCxsbHNlZWsoJGUsdXQsUnQpe2lmKE50LmlzQ2xvc2VkKCRlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTtpZighJGUuc2Vla2FibGV8fCEkZS5zdHJlYW1f''@;'; put 'put ''b3BzLmxsc2Vlayl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig3MCk7aWYoMCE9UnQmJjEhPVJ0JiYyIT1SdCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7cmV0dXJuICRlLnBvc2l0aW9uPSRlLnN0cmVhbV9vcHMubGxzZWVrKCRlLHV0LFJ0KSwkZS51bmdvdHRlbj1bXSwkZS5wb3NpdGlv''@;'; put 'put ''bn0scmVhZCgkZSx1dCxSdCxXdCxrbil7aWYoV3Q8MHx8a248MCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7aWYoTnQuaXNDbG9zZWQoJGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDgpO2lmKDE9PSgyMDk3MTU1JiRlLmZsYWdzKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTtp''@;'; put 'put ''ZihOdC5pc0RpcigkZS5ub2RlLm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDMxKTtpZighJGUuc3RyZWFtX29wcy5yZWFkKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDI4KTt2YXIgc3I9dm9pZCAwIT09a247aWYoc3Ipe2lmKCEkZS5zZWVrYWJsZSl0aHJvdyBuZXcgTnQuRXJybm9F''@;'; put 'put ''cnJvcig3MCl9ZWxzZSBrbj0kZS5wb3NpdGlvbjt2YXIgb3I9JGUuc3RyZWFtX29wcy5yZWFkKCRlLHV0LFJ0LFd0LGtuKTtyZXR1cm4gc3J8fCgkZS5wb3NpdGlvbis9b3IpLG9yfSx3cml0ZSgkZSx1dCxSdCxXdCxrbixzcil7aWYoV3Q8MHx8a248MCl0aHJvdyBuZXcgTnQuRXJybm9FcnJv''@;'; put 'put ''cigyOCk7aWYoTnQuaXNDbG9zZWQoJGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDgpO2lmKCEoMjA5NzE1NSYkZS5mbGFncykpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoOCk7aWYoTnQuaXNEaXIoJGUubm9kZS5tb2RlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigzMSk7aWYoISRlLnN0''@;'; put 'put ''cmVhbV9vcHMud3JpdGUpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoMjgpOyRlLnNlZWthYmxlJiYxMDI0JiRlLmZsYWdzJiZOdC5sbHNlZWsoJGUsMCwyKTt2YXIgb3I9dm9pZCAwIT09a247aWYob3Ipe2lmKCEkZS5zZWVrYWJsZSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig3MCl9ZWxzZSBr''@;'; put 'put ''bj0kZS5wb3NpdGlvbjt2YXIgTnI9JGUuc3RyZWFtX29wcy53cml0ZSgkZSx1dCxSdCxXdCxrbixzcik7cmV0dXJuIG9yfHwoJGUucG9zaXRpb24rPU5yKSxOcn0sYWxsb2NhdGUoJGUsdXQsUnQpe2lmKE50LmlzQ2xvc2VkKCRlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTtpZih1dDww''@;'; put 'put ''fHxSdDw9MCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOCk7aWYoISgyMDk3MTU1JiRlLmZsYWdzKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig4KTtpZighTnQuaXNGaWxlKCRlLm5vZGUubW9kZSkmJiFOdC5pc0RpcigkZS5ub2RlLm1vZGUpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDQz''@;'; put 'put ''KTtpZighJGUuc3RyZWFtX29wcy5hbGxvY2F0ZSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigxMzgpOyRlLnN0cmVhbV9vcHMuYWxsb2NhdGUoJGUsdXQsUnQpfSxtbWFwKCRlLHV0LFJ0LFd0LGtuKXtpZigyJld0JiYhKDIma24pJiYyIT0oMjA5NzE1NSYkZS5mbGFncykpdGhyb3cgbmV3IE50''@;'; put 'put ''LkVycm5vRXJyb3IoMik7aWYoMT09KDIwOTcxNTUmJGUuZmxhZ3MpKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDIpO2lmKCEkZS5zdHJlYW1fb3BzLm1tYXApdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNDMpO3JldHVybiAkZS5zdHJlYW1fb3BzLm1tYXAoJGUsdXQsUnQsV3Qsa24pfSxtc3lu''@;'; put 'put ''YzooJGUsdXQsUnQsV3Qsa24pPT4kZS5zdHJlYW1fb3BzLm1zeW5jPyRlLnN0cmVhbV9vcHMubXN5bmMoJGUsdXQsUnQsV3Qsa24pOjAsaW9jdGwoJGUsdXQsUnQpe2lmKCEkZS5zdHJlYW1fb3BzLmlvY3RsKXRocm93IG5ldyBOdC5FcnJub0Vycm9yKDU5KTtyZXR1cm4gJGUuc3RyZWFtX29w''@;'; put 'put ''cy5pb2N0bCgkZSx1dCxSdCl9LHJlYWRGaWxlKCRlLHV0PXt9KXtpZih1dC5mbGFncz11dC5mbGFnc3x8MCx1dC5lbmNvZGluZz11dC5lbmNvZGluZ3x8ImJpbmFyeSIsInV0ZjgiIT09dXQuZW5jb2RpbmcmJiJiaW5hcnkiIT09dXQuZW5jb2RpbmcpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlk''@;'; put 'put ''IGVuY29kaW5nIHR5cGUgIiR7dXQuZW5jb2Rpbmd9ImApO3ZhciBSdCxXdD1OdC5vcGVuKCRlLHV0LmZsYWdzKSxrbj1OdC5zdGF0KCRlKS5zaXplLHNyPW5ldyBVaW50OEFycmF5KGtuKTtyZXR1cm4gTnQucmVhZChXdCxzciwwLGtuLDApLCJ1dGY4Ij09PXV0LmVuY29kaW5nP1J0PWtyKHNy''@;'; put 'put ''LDApOiJiaW5hcnkiPT09dXQuZW5jb2RpbmcmJihSdD1zciksTnQuY2xvc2UoV3QpLFJ0fSx3cml0ZUZpbGUoJGUsdXQsUnQ9e30pe1J0LmZsYWdzPVJ0LmZsYWdzfHw1Nzc7dmFyIFd0PU50Lm9wZW4oJGUsUnQuZmxhZ3MsUnQubW9kZSk7aWYoInN0cmluZyI9PXR5cGVvZiB1dCl7dmFyIGtu''@;'; put 'put ''PW5ldyBVaW50OEFycmF5KFRpKHV0KSsxKSxzcj1ubyh1dCxrbiwwLGtuLmxlbmd0aCk7TnQud3JpdGUoV3Qsa24sMCxzcix2b2lkIDAsUnQuY2FuT3duKX1lbHNle2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcodXQpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7TnQu''@;'; put 'put ''d3JpdGUoV3QsdXQsMCx1dC5ieXRlTGVuZ3RoLHZvaWQgMCxSdC5jYW5Pd24pfU50LmNsb3NlKFd0KX0sY3dkOigpPT5OdC5jdXJyZW50UGF0aCxjaGRpcigkZSl7dmFyIHV0PU50Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohMH0pO2lmKG51bGw9PT11dC5ub2RlKXRocm93IG5ldyBOdC5FcnJu''@;'; put 'put ''b0Vycm9yKDQ0KTtpZighTnQuaXNEaXIodXQubm9kZS5tb2RlKSl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig1NCk7dmFyIFJ0PU50Lm5vZGVQZXJtaXNzaW9ucyh1dC5ub2RlLCJ4Iik7aWYoUnQpdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoUnQpO050LmN1cnJlbnRQYXRoPXV0LnBhdGh9LGNy''@;'; put 'put ''ZWF0ZURlZmF1bHREaXJlY3Rvcmllcygpe050Lm1rZGlyKCIvdG1wIiksTnQubWtkaXIoIi9ob21lIiksTnQubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURlZmF1bHREZXZpY2VzKCl7TnQubWtkaXIoIi9kZXYiKSxOdC5yZWdpc3RlckRldmljZShOdC5tYWtlZGV2KDEsMykse3Jl''@;'; put 'put ''YWQ6KCk9PjAsd3JpdGU6KFd0LGtuLHNyLG9yLE5yKT0+b3J9KSxOdC5ta2RldigiL2Rldi9udWxsIixOdC5tYWtlZGV2KDEsMykpLHFvLnJlZ2lzdGVyKE50Lm1ha2VkZXYoNSwwKSxxby5kZWZhdWx0X3R0eV9vcHMpLHFvLnJlZ2lzdGVyKE50Lm1ha2VkZXYoNiwwKSxxby5kZWZhdWx0X3R0''@;'; put 'put ''eTFfb3BzKSxOdC5ta2RldigiL2Rldi90dHkiLE50Lm1ha2VkZXYoNSwwKSksTnQubWtkZXYoIi9kZXYvdHR5MSIsTnQubWFrZWRldig2LDApKTt2YXIgJGU9bmV3IFVpbnQ4QXJyYXkoMTAyNCksdXQ9MCxSdD0oKT0+KDA9PT11dCYmKHV0PUZuKCRlKS5ieXRlTGVuZ3RoKSwkZVstLXV0XSk7''@;'; put 'put ''TnQuY3JlYXRlRGV2aWNlKCIvZGV2IiwicmFuZG9tIixSdCksTnQuY3JlYXRlRGV2aWNlKCIvZGV2IiwidXJhbmRvbSIsUnQpLE50Lm1rZGlyKCIvZGV2L3NobSIpLE50Lm1rZGlyKCIvZGV2L3NobS90bXAiKX0sY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCl7TnQubWtkaXIoIi9wcm9jIik7''@;'; put 'put ''dmFyICRlPU50Lm1rZGlyKCIvcHJvYy9zZWxmIik7TnQubWtkaXIoIi9wcm9jL3NlbGYvZmQiKSxOdC5tb3VudCh7bW91bnQoKXt2YXIgdXQ9TnQuY3JlYXRlTm9kZSgkZSwiZmQiLDE2ODk1LDczKTtyZXR1cm4gdXQubm9kZV9vcHM9e2xvb2t1cChSdCxXdCl7dmFyIHNyPU50LmdldFN0cmVh''@;'; put 'put ''bUNoZWNrZWQoK1d0KSxvcj17cGFyZW50Om51bGwsbW91bnQ6e21vdW50cG9pbnQ6ImZha2UifSxub2RlX29wczp7cmVhZGxpbms6KCk9PnNyLnBhdGh9fTtyZXR1cm4gb3IucGFyZW50PW9yLG9yfX0sdXR9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpfSxjcmVhdGVTdGFuZGFyZFN0cmVhbXMoKXtm''@;'; put 'put ''LnN0ZGluP050LmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGluIixmLnN0ZGluKTpOdC5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKSxmLnN0ZG91dD9OdC5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsZi5zdGRvdXQpOk50LnN5bWxpbmsoIi9kZXYvdHR5IiwiL2Rl''@;'; put 'put ''di9zdGRvdXQiKSxmLnN0ZGVycj9OdC5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsZi5zdGRlcnIpOk50LnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIiksTnQub3BlbigiL2Rldi9zdGRpbiIsMCksTnQub3BlbigiL2Rldi9zdGRvdXQiLDEpLE50Lm9wZW4oIi9k''@;'; put 'put ''ZXYvc3RkZXJyIiwxKX0sc3RhdGljSW5pdCgpe1s0NF0uZm9yRWFjaCgkZT0+e050LmdlbmVyaWNFcnJvcnNbJGVdPW5ldyBOdC5FcnJub0Vycm9yKCRlKSxOdC5nZW5lcmljRXJyb3JzWyRlXS5zdGFjaz0iPGdlbmVyaWMgZXJyb3IsIG5vIHN0YWNrPiJ9KSxOdC5uYW1lVGFibGU9bmV3IEFy''@;'; put 'put ''cmF5KDQwOTYpLE50Lm1vdW50KEtpLHt9LCIvIiksTnQuY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzKCksTnQuY3JlYXRlRGVmYXVsdERldmljZXMoKSxOdC5jcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXMoKSxOdC5maWxlc3lzdGVtcz17TUVNRlM6S2l9fSxpbml0KCRlLHV0LFJ0KXtOdC5pbml0''@;'; put 'put ''LmluaXRpYWxpemVkPSEwLGYuc3RkaW49JGV8fGYuc3RkaW4sZi5zdGRvdXQ9dXR8fGYuc3Rkb3V0LGYuc3RkZXJyPVJ0fHxmLnN0ZGVycixOdC5jcmVhdGVTdGFuZGFyZFN0cmVhbXMoKX0scXVpdCgpe050LmluaXQuaW5pdGlhbGl6ZWQ9ITE7Zm9yKHZhciAkZT0wOyRlPE50LnN0cmVhbXMu''@;'; put 'put ''bGVuZ3RoOyRlKyspe3ZhciB1dD1OdC5zdHJlYW1zWyRlXTt1dCYmTnQuY2xvc2UodXQpfX0sZmluZE9iamVjdCgkZSx1dCl7dmFyIFJ0PU50LmFuYWx5emVQYXRoKCRlLHV0KTtyZXR1cm4gUnQuZXhpc3RzP1J0Lm9iamVjdDpudWxsfSxhbmFseXplUGF0aCgkZSx1dCl7dHJ5eyRlPShXdD1O''@;'; put 'put ''dC5sb29rdXBQYXRoKCRlLHtmb2xsb3c6IXV0fSkpLnBhdGh9Y2F0Y2h7fXZhciBSdD17aXNSb290OiExLGV4aXN0czohMSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOiExLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5''@;'; put 'put ''e3ZhciBXdD1OdC5sb29rdXBQYXRoKCRlLHtwYXJlbnQ6ITB9KTtSdC5wYXJlbnRFeGlzdHM9ITAsUnQucGFyZW50UGF0aD1XdC5wYXRoLFJ0LnBhcmVudE9iamVjdD1XdC5ub2RlLFJ0Lm5hbWU9VXQuYmFzZW5hbWUoJGUpLFd0PU50Lmxvb2t1cFBhdGgoJGUse2ZvbGxvdzohdXR9KSxSdC5l''@;'; put 'put ''eGlzdHM9ITAsUnQucGF0aD1XdC5wYXRoLFJ0Lm9iamVjdD1XdC5ub2RlLFJ0Lm5hbWU9V3Qubm9kZS5uYW1lLFJ0LmlzUm9vdD0iLyI9PT1XdC5wYXRofWNhdGNoKGtuKXtSdC5lcnJvcj1rbi5lcnJub31yZXR1cm4gUnR9LGNyZWF0ZVBhdGgoJGUsdXQsUnQsV3QpeyRlPSJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgJGU/JGU6TnQuZ2V0UGF0aCgkZSk7Zm9yKHZhciBrbj11dC5zcGxpdCgiLyIpLnJldmVyc2UoKTtrbi5sZW5ndGg7KXt2YXIgc3I9a24ucG9wKCk7aWYoc3Ipe3ZhciBvcj1VdC5qb2luMigkZSxzcik7dHJ5e050Lm1rZGlyKG9yKX1jYXRjaHt9JGU9b3J9fXJldHVybiBvcn0sY3Jl''@;'; put 'put ''YXRlRmlsZSgkZSx1dCxSdCxXdCxrbil7dmFyIHNyPVV0LmpvaW4yKCJzdHJpbmciPT10eXBlb2YgJGU/JGU6TnQuZ2V0UGF0aCgkZSksdXQpLG9yPXJzKFd0LGtuKTtyZXR1cm4gTnQuY3JlYXRlKHNyLG9yKX0sY3JlYXRlRGF0YUZpbGUoJGUsdXQsUnQsV3Qsa24sc3Ipe3ZhciBvcj11dDsk''@;'; put 'put ''ZSYmKCRlPSJzdHJpbmciPT10eXBlb2YgJGU/JGU6TnQuZ2V0UGF0aCgkZSksb3I9dXQ/VXQuam9pbjIoJGUsdXQpOiRlKTt2YXIgTnI9cnMoV3Qsa24pLENvPU50LmNyZWF0ZShvcixOcik7aWYoUnQpe2lmKCJzdHJpbmciPT10eXBlb2YgUnQpe2Zvcih2YXIgR289bmV3IEFycmF5KFJ0Lmxl''@;'; put 'put ''bmd0aCkscHM9MCxxcz1SdC5sZW5ndGg7cHM8cXM7KytwcylHb1twc109UnQuY2hhckNvZGVBdChwcyk7UnQ9R299TnQuY2htb2QoQ28sMTQ2fE5yKTt2YXIgam89TnQub3BlbihDbyw1NzcpO050LndyaXRlKGpvLFJ0LDAsUnQubGVuZ3RoLDAsc3IpLE50LmNsb3NlKGpvKSxOdC5jaG1vZChD''@;'; put 'put ''byxOcil9fSxjcmVhdGVEZXZpY2UoJGUsdXQsUnQsV3Qpe3ZhciBrbj1VdC5qb2luMigic3RyaW5nIj09dHlwZW9mICRlPyRlOk50LmdldFBhdGgoJGUpLHV0KSxzcj1ycyghIVJ0LCEhV3QpO050LmNyZWF0ZURldmljZS5tYWpvcnx8KE50LmNyZWF0ZURldmljZS5tYWpvcj02NCk7dmFyIG9y''@;'; put 'put ''PU50Lm1ha2VkZXYoTnQuY3JlYXRlRGV2aWNlLm1ham9yKyssMCk7cmV0dXJuIE50LnJlZ2lzdGVyRGV2aWNlKG9yLHtvcGVuKE5yKXtOci5zZWVrYWJsZT0hMX0sY2xvc2UoTnIpe1d0Py5idWZmZXI/Lmxlbmd0aCYmV3QoMTApfSxyZWFkKE5yLENvLEdvLHBzLHFzKXtmb3IodmFyIGpvPTAs''@;'; put 'put ''c2E9MDtzYTxwcztzYSsrKXt2YXIgJGw7dHJ5eyRsPVJ0KCl9Y2F0Y2h7dGhyb3cgbmV3IE50LkVycm5vRXJyb3IoMjkpfWlmKHZvaWQgMD09PSRsJiYwPT09am8pdGhyb3cgbmV3IE50LkVycm5vRXJyb3IoNik7aWYobnVsbD09JGwpYnJlYWs7am8rKyxDb1tHbytzYV09JGx9cmV0dXJuIGpv''@;'; put 'put ''JiYoTnIubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksam99LHdyaXRlKE5yLENvLEdvLHBzLHFzKXtmb3IodmFyIGpvPTA7am88cHM7am8rKyl0cnl7V3QoQ29bR28ram9dKX1jYXRjaHt0aHJvdyBuZXcgTnQuRXJybm9FcnJvcigyOSl9cmV0dXJuIHBzJiYoTnIubm9kZS50aW1lc3RhbXA9''@;'; put 'put ''RGF0ZS5ub3coKSksam99fSksTnQubWtkZXYoa24sc3Isb3IpfSxmb3JjZUxvYWRGaWxlKCRlKXtpZigkZS5pc0RldmljZXx8JGUuaXNGb2xkZXJ8fCRlLmxpbmt8fCRlLmNvbnRlbnRzKXJldHVybiEwO3Rocm93IHR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSI/bmV3IEVycm9yKCJMYXp5IGxv''@;'; put 'put ''YWRpbmcgc2hvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgKGNvbnRlbnRzIHNldCkgaW4gY3JlYXRlTGF6eUZpbGUsIGJ1dCBpdCB3YXMgbm90LiBMYXp5IGxvYWRpbmcgb25seSB3b3JrcyBpbiB3ZWIgd29ya2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNj''@;'; put 'put ''IG9uIHRoZSBtYWluIHRocmVhZC4iKTpuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfSxjcmVhdGVMYXp5RmlsZSgkZSx1dCxSdCxXdCxrbil7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1Iil0aHJvdyJDYW5ub3QgZG8gc3luY2hy''@;'; put 'put ''b25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgc3I9e2lzRGV2aWNlOiExLHVybDpSdH0sb3I9TnQuY3JlYXRlRmlsZSgkZSx1dCxzcixXdCxrbik7c3Iu''@;'; put 'put ''Y29udGVudHM/b3IuY29udGVudHM9c3IuY29udGVudHM6c3IudXJsJiYob3IuY29udGVudHM9bnVsbCxvci51cmw9c3IudXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvcix7dXNlZEJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGh9fX0pO3ZhciBO''@;'; put 'put ''cj17fTtmdW5jdGlvbiBDbyhHbyxwcyxxcyxqbyxzYSl7dmFyICRsPUdvLm5vZGUuY29udGVudHM7aWYoc2E+PSRsLmxlbmd0aClyZXR1cm4gMDt2YXIgWWQ9TWF0aC5taW4oJGwubGVuZ3RoLXNhLGpvKTtpZigkbC5zbGljZSlmb3IodmFyIEx1PTA7THU8WWQ7THUrKylwc1txcytMdV09JGxb''@;'; put 'put ''c2ErTHVdO2Vsc2UgZm9yKEx1PTA7THU8WWQ7THUrKylwc1txcytMdV09JGwuZ2V0KHNhK0x1KTtyZXR1cm4gWWR9cmV0dXJuIE9iamVjdC5rZXlzKG9yLnN0cmVhbV9vcHMpLmZvckVhY2goR289Pnt2YXIgcHM9b3Iuc3RyZWFtX29wc1tHb107TnJbR29dPSguLi5xcyk9PihOdC5mb3JjZUxv''@;'; put 'put ''YWRGaWxlKG9yKSxwcyguLi5xcykpfSksTnIucmVhZD0oR28scHMscXMsam8sc2EpPT4oTnQuZm9yY2VMb2FkRmlsZShvciksQ28oR28scHMscXMsam8sc2EpKSxOci5tbWFwPShHbyxwcyxxcyxqbyxzYSk9PntOdC5mb3JjZUxvYWRGaWxlKG9yKTt2YXIgJGw9V28ocHMpO2lmKCEkbCl0aHJv''@;'; put 'put ''dyBuZXcgTnQuRXJybm9FcnJvcig0OCk7cmV0dXJuIENvKEdvLHBlLCRsLHBzLHFzKSx7cHRyOiRsLGFsbG9jYXRlZDohMH19LG9yLnN0cmVhbV9vcHM9TnIsb3J9fSxOcz0oJGUsdXQpPT4kZT9rcihDZSwkZSx1dCk6IiIsUG89e0RFRkFVTFRfUE9MTE1BU0s6NSxjYWxjdWxhdGVBdCgkZSx1''@;'; put 'put ''dCxSdCl7aWYoVXQuaXNBYnModXQpKXJldHVybiB1dDt2YXIgV3Q7aWYoV3Q9LTEwMD09PSRlP050LmN3ZCgpOlBvLmdldFN0cmVhbUZyb21GRCgkZSkucGF0aCwwPT11dC5sZW5ndGgpe2lmKCFSdCl0aHJvdyBuZXcgTnQuRXJybm9FcnJvcig0NCk7cmV0dXJuIFd0fXJldHVybiBVdC5qb2lu''@;'; put 'put ''MihXdCx1dCl9LGRvU3RhdCgkZSx1dCxSdCl7dmFyIFd0PSRlKHV0KTtZZVtSdD4+Ml09V3QuZGV2LFllW1J0KzQ+PjJdPVd0Lm1vZGUsZXRbUnQrOD4+Ml09V3QubmxpbmssWWVbUnQrMTI+PjJdPVd0LnVpZCxZZVtSdCsxNj4+Ml09V3QuZ2lkLFllW1J0KzIwPj4yXT1XdC5yZGV2LEluPVtX''@;'; put 'put ''dC5zaXplPj4+MCwoVXI9V3Quc2l6ZSwrTWF0aC5hYnMoVXIpPj0xP1VyPjA/K01hdGguZmxvb3IoVXIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoVXItKyh+flVyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sWWVbUnQrMjQ+PjJdPUluWzBdLFllW1J0KzI4Pj4yXT1JblsxXSxZ''@;'; put 'put ''ZVtSdCszMj4+Ml09NDA5NixZZVtSdCszNj4+Ml09V3QuYmxvY2tzO3ZhciBrbj1XdC5hdGltZS5nZXRUaW1lKCksc3I9V3QubXRpbWUuZ2V0VGltZSgpLG9yPVd0LmN0aW1lLmdldFRpbWUoKTtyZXR1cm4gSW49W01hdGguZmxvb3Ioa24vMWUzKT4+PjAsKFVyPU1hdGguZmxvb3Ioa24vMWUz''@;'; put 'put ''KSwrTWF0aC5hYnMoVXIpPj0xP1VyPjA/K01hdGguZmxvb3IoVXIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoVXItKyh+flVyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sWWVbUnQrNDA+PjJdPUluWzBdLFllW1J0KzQ0Pj4yXT1JblsxXSxldFtSdCs0OD4+Ml09a24lMWUzKjFl''@;'; put 'put ''MyxJbj1bTWF0aC5mbG9vcihzci8xZTMpPj4+MCwoVXI9TWF0aC5mbG9vcihzci8xZTMpLCtNYXRoLmFicyhVcik+PTE/VXI+MD8rTWF0aC5mbG9vcihVci80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChVci0rKH5+VXI+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxZZVtSdCs1Nj4+''@;'; put 'put ''Ml09SW5bMF0sWWVbUnQrNjA+PjJdPUluWzFdLGV0W1J0KzY0Pj4yXT1zciUxZTMqMWUzLEluPVtNYXRoLmZsb29yKG9yLzFlMyk+Pj4wLChVcj1NYXRoLmZsb29yKG9yLzFlMyksK01hdGguYWJzKFVyKT49MT9Vcj4wPytNYXRoLmZsb29yKFVyLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNl''@;'; put 'put ''aWwoKFVyLSsofn5Vcj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLFllW1J0KzcyPj4yXT1JblswXSxZZVtSdCs3Nj4+Ml09SW5bMV0sZXRbUnQrODA+PjJdPW9yJTFlMyoxZTMsSW49W1d0Lmlubz4+PjAsKFVyPVd0LmlubywrTWF0aC5hYnMoVXIpPj0xP1VyPjA/K01hdGguZmxvb3IoVXIv''@;'; put 'put ''NDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoVXItKyh+flVyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sWWVbUnQrODg+PjJdPUluWzBdLFllW1J0KzkyPj4yXT1JblsxXSwwfSxkb01zeW5jKCRlLHV0LFJ0LFd0LGtuKXtpZighTnQuaXNGaWxlKHV0Lm5vZGUubW9kZSkpdGhyb3cg''@;'; put 'put ''bmV3IE50LkVycm5vRXJyb3IoNDMpO2lmKDImV3QpcmV0dXJuIDA7dmFyIHNyPUNlLnNsaWNlKCRlLCRlK1J0KTtOdC5tc3luYyh1dCxzcixrbixSdCxXdCl9LGdldFN0cmVhbUZyb21GRDokZT0+TnQuZ2V0U3RyZWFtQ2hlY2tlZCgkZSksdmFyYXJnczp2b2lkIDAsZ2V0U3RyOiRlPT5Ocygk''@;'; put 'put ''ZSl9O2Z1bmN0aW9uIERhKCl7dmFyICRlPVllWytQby52YXJhcmdzPj4yXTtyZXR1cm4gUG8udmFyYXJncys9NCwkZX12YXIgamE9RGEsZDA9KCRlLHV0KT0+dXQrMjA5NzE1Mj4+PjA8NDE5NDMwNS0hISRlPygkZT4+PjApKzQyOTQ5NjcyOTYqdXQ6TmFOLGowPVtdLGEyPSRlPT57dmFyIHV0''@;'; put 'put ''PSgkZS1oLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNjt0cnl7cmV0dXJuIGguZ3Jvdyh1dCksUXQoKSwxfWNhdGNoe319LER1PXt9LHBjPSgpPT57aWYoIXBjLnN0cmluZ3Mpe3ZhciAkZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8i''@;'; put 'put ''LEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciB1dCBp''@;'; put 'put ''biBEdSl2b2lkIDA9PT1EdVt1dF0/ZGVsZXRlICRlW3V0XTokZVt1dF09RHVbdXRdO3ZhciBSdD1bXTtmb3IodmFyIHV0IGluICRlKVJ0LnB1c2goYCR7dXR9PSR7JGVbdXRdfWApO3BjLnN0cmluZ3M9UnR9cmV0dXJuIHBjLnN0cmluZ3N9LGwyPSRlPT4kZSU0PT0wJiYoJGUlMTAwIT0wfHwk''@;'; put 'put ''ZSU0MDA9PTApLHBwPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sSXU9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtOdC5jcmVhdGVQcmVsb2FkZWRGaWxlPSgkZSx1dCxSdCxXdCxrbixzcixvcixOcixDbyxHbyk9Pnt2YXIgam8sc2EsJGwsTHUs''@;'; put 'put ''cHM9dXQ/S24ucmVzb2x2ZShVdC5qb2luMigkZSx1dCkpOiRlO2Z1bmN0aW9uIHFzKGpvKXtmdW5jdGlvbiBzYSgkbCl7R28/LigpLE5yfHxOdC5jcmVhdGVEYXRhRmlsZSgkZSx1dCwkbCxXdCxrbixDbyksc3I/LigpLFBpKCl9KCgkbCxZZCxMdSxvZyk9Pnt0eXBlb2YgQnJvd3NlcjwidSIm''@;'; put 'put ''JkJyb3dzZXIuaW5pdCgpO3ZhciBNNT0hMTtyZXR1cm4gUW8uZm9yRWFjaCh4NT0+e001fHx4NS5jYW5IYW5kbGUoWWQpJiYoeDUuaGFuZGxlKCRsLFlkLEx1LG9nKSxNNT0hMCl9KSxNNX0pKGpvLHBzLHNhLCgpPT57b3I/LigpLFBpKCl9KXx8c2Eoam8pfU1pKCksInN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBSdD8oc2E9cXMsJGw9b3IsTHU9YGFsICR7am89UnR9YCwodm9pZCAwKShqbyxvZz0+e3NhKG5ldyBVaW50OEFycmF5KG9nKSksTHUmJlBpKCl9LG9nPT57aWYoISRsKXRocm93YExvYWRpbmcgZGF0YSBmaWxlICIke2pvfSIgZmFpbGVkLmA7JGwoKX0pLEx1JiZNaSgpKTpxcyhSdCl9LE50''@;'; put 'put ''LnN0YXRpY0luaXQoKTt2YXIgJGUsdXQsUnQsV3Qsa24sVGY9e2I6KCRlLHV0LFJ0KT0+e3Rocm93IG5ldyBMdCgkZSkuaW5pdCh1dCxSdCksJGV9LGw6ZnVuY3Rpb24oJGUsdXQsUnQsV3Qpe3RyeXtpZih1dD1Qby5nZXRTdHIodXQpLHV0PVBvLmNhbGN1bGF0ZUF0KCRlLHV0KSwtOCZSdCly''@;'; put 'put ''ZXR1cm4tMjg7dmFyIGtuPU50Lmxvb2t1cFBhdGgodXQse2ZvbGxvdzohMH0pLm5vZGU7aWYoIWtuKXJldHVybi00NDt2YXIgc3I9IiI7cmV0dXJuIDQmUnQmJihzcis9InIiKSwyJlJ0JiYoc3IrPSJ3IiksMSZSdCYmKHNyKz0ieCIpLHNyJiZOdC5ub2RlUGVybWlzc2lvbnMoa24sc3IpPy0y''@;'; put 'put ''OjB9Y2F0Y2gob3Ipe2lmKHZvaWQgMD09PU50fHwiRXJybm9FcnJvciIhPT1vci5uYW1lKXRocm93IG9yO3JldHVybi1vci5lcnJub319LGk6ZnVuY3Rpb24oJGUsdXQsUnQpe1BvLnZhcmFyZ3M9UnQ7dHJ5e3ZhciBXdD1Qby5nZXRTdHJlYW1Gcm9tRkQoJGUpO3N3aXRjaCh1dCl7Y2FzZSAw''@;'; put 'put ''OmlmKChrbj1EYSgpKTwwKXJldHVybi0yODtmb3IoO050LnN0cmVhbXNba25dOylrbisrO3JldHVybiBOdC5kdXBTdHJlYW0oV3Qsa24pLmZkO2Nhc2UgMTpjYXNlIDI6Y2FzZSAxMzpjYXNlIDE0OnJldHVybiAwO2Nhc2UgMzpyZXR1cm4gV3QuZmxhZ3M7Y2FzZSA0OnZhciBrbj1EYSgpO3Jl''@;'; put 'put ''dHVybiBXdC5mbGFnc3w9a24sMDtjYXNlIDEyOnJldHVybiBrbj1qYSgpLE9lW2tuKzA+PjFdPTIsMH1yZXR1cm4tMjh9Y2F0Y2goc3Ipe2lmKHZvaWQgMD09PU50fHwiRXJybm9FcnJvciIhPT1zci5uYW1lKXRocm93IHNyO3JldHVybi1zci5lcnJub319LHk6ZnVuY3Rpb24oJGUsdXQpe3Ry''@;'; put 'put ''eXt2YXIgUnQ9UG8uZ2V0U3RyZWFtRnJvbUZEKCRlKTtyZXR1cm4gUG8uZG9TdGF0KE50LnN0YXQsUnQucGF0aCx1dCl9Y2F0Y2goV3Qpe2lmKHZvaWQgMD09PU50fHwiRXJybm9FcnJvciIhPT1XdC5uYW1lKXRocm93IFd0O3JldHVybi1XdC5lcnJub319LHo6ZnVuY3Rpb24oJGUsdXQsUnQp''@;'; put 'put ''e1BvLnZhcmFyZ3M9UnQ7dHJ5e3ZhciBXdD1Qby5nZXRTdHJlYW1Gcm9tRkQoJGUpO3N3aXRjaCh1dCl7Y2FzZSAyMTUwOTpjYXNlIDIxNTEwOmNhc2UgMjE1MTE6Y2FzZSAyMTUxMjpjYXNlIDIxNTI0OmNhc2UgMjE1MTU6cmV0dXJuIFd0LnR0eT8wOi01OTtjYXNlIDIxNTA1OmlmKCFXdC50''@;'; put 'put ''dHkpcmV0dXJuLTU5O2lmKFd0LnR0eS5vcHMuaW9jdGxfdGNnZXRzKXt2YXIga249V3QudHR5Lm9wcy5pb2N0bF90Y2dldHMoV3QpLHNyPWphKCk7WWVbc3I+PjJdPWtuLmNfaWZsYWd8fDAsWWVbc3IrND4+Ml09a24uY19vZmxhZ3x8MCxZZVtzcis4Pj4yXT1rbi5jX2NmbGFnfHwwLFllW3Ny''@;'; put 'put ''KzEyPj4yXT1rbi5jX2xmbGFnfHwwO2Zvcih2YXIgb3I9MDtvcjwzMjtvcisrKXBlW3NyK29yKzE3XT1rbi5jX2NjW29yXXx8MDtyZXR1cm4gMH1yZXR1cm4gMDtjYXNlIDIxNTA2OmNhc2UgMjE1MDc6Y2FzZSAyMTUwODppZighV3QudHR5KXJldHVybi01OTtpZihXdC50dHkub3BzLmlvY3Rs''@;'; put 'put ''X3Rjc2V0cyl7c3I9amEoKTt2YXIgTnI9WWVbc3I+PjJdLENvPVllW3NyKzQ+PjJdLEdvPVllW3NyKzg+PjJdLHBzPVllW3NyKzEyPj4yXSxxcz1bXTtmb3Iob3I9MDtvcjwzMjtvcisrKXFzLnB1c2gocGVbc3Irb3IrMTddKTtyZXR1cm4gV3QudHR5Lm9wcy5pb2N0bF90Y3NldHMoV3QudHR5''@;'; put 'put ''LHV0LHtjX2lmbGFnOk5yLGNfb2ZsYWc6Q28sY19jZmxhZzpHbyxjX2xmbGFnOnBzLGNfY2M6cXN9KX1yZXR1cm4gMDtjYXNlIDIxNTE5OnJldHVybiBXdC50dHk/KHNyPWphKCksWWVbc3I+PjJdPTAsMCk6LTU5O2Nhc2UgMjE1MjA6cmV0dXJuIFd0LnR0eT8tMjg6LTU5O2Nhc2UgMjE1MzE6''@;'; put 'put ''cmV0dXJuIHNyPWphKCksTnQuaW9jdGwoV3QsdXQsc3IpO2Nhc2UgMjE1MjM6aWYoIVd0LnR0eSlyZXR1cm4tNTk7aWYoV3QudHR5Lm9wcy5pb2N0bF90aW9jZ3dpbnN6KXt2YXIgam89V3QudHR5Lm9wcy5pb2N0bF90aW9jZ3dpbnN6KFd0LnR0eSk7c3I9amEoKSxPZVtzcj4+MV09am9bMF0s''@;'; put 'put ''T2Vbc3IrMj4+MV09am9bMV19cmV0dXJuIDA7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKHNhKXtpZih2b2lkIDA9PT1OdHx8IkVycm5vRXJyb3IiIT09c2EubmFtZSl0aHJvdyBzYTtyZXR1cm4tc2EuZXJybm99fSx3OmZ1bmN0aW9uKCRlLHV0LFJ0LFd0KXt0cnl7dXQ9UG8uZ2V0U3RyKHV0''@;'; put 'put ''KTt2YXIga249MjU2Jld0LHNyPTQwOTYmV3Q7cmV0dXJuIFd0Jj0tNjQwMSx1dD1Qby5jYWxjdWxhdGVBdCgkZSx1dCxzciksUG8uZG9TdGF0KGtuP050LmxzdGF0Ok50LnN0YXQsdXQsUnQpfWNhdGNoKG9yKXtpZih2b2lkIDA9PT1OdHx8IkVycm5vRXJyb3IiIT09b3IubmFtZSl0aHJvdyBv''@;'; put 'put ''cjtyZXR1cm4tb3IuZXJybm99fSxlOmZ1bmN0aW9uKCRlLHV0LFJ0LFd0KXtQby52YXJhcmdzPVd0O3RyeXt1dD1Qby5nZXRTdHIodXQpLHV0PVBvLmNhbGN1bGF0ZUF0KCRlLHV0KTt2YXIga249V3Q/RGEoKTowO3JldHVybiBOdC5vcGVuKHV0LFJ0LGtuKS5mZH1jYXRjaChzcil7aWYodm9p''@;'; put 'put ''ZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PXNyLm5hbWUpdGhyb3cgc3I7cmV0dXJuLXNyLmVycm5vfX0scjpmdW5jdGlvbigkZSx1dCxSdCxXdCl7dHJ5e2lmKHV0PVBvLmdldFN0cih1dCksdXQ9UG8uY2FsY3VsYXRlQXQoJGUsdXQpLFd0PD0wKXJldHVybi0yODt2YXIga249TnQucmVhZGxp''@;'; put 'put ''bmsodXQpLHNyPU1hdGgubWluKFd0LFRpKGtuKSksb3I9cGVbUnQrc3JdO3JldHVybiBubyhrbixDZSxSdCxXdCsxKSxwZVtSdCtzcl09b3Isc3J9Y2F0Y2goTnIpe2lmKHZvaWQgMD09PU50fHwiRXJybm9FcnJvciIhPT1Oci5uYW1lKXRocm93IE5yO3JldHVybi1Oci5lcnJub319LHM6ZnVu''@;'; put 'put ''Y3Rpb24oJGUpe3RyeXtyZXR1cm4gJGU9UG8uZ2V0U3RyKCRlKSxOdC5ybWRpcigkZSksMH1jYXRjaCh1dCl7aWYodm9pZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PXV0Lm5hbWUpdGhyb3cgdXQ7cmV0dXJuLXV0LmVycm5vfX0seDpmdW5jdGlvbigkZSx1dCl7dHJ5e3JldHVybiAkZT1Qby5n''@;'; put 'put ''ZXRTdHIoJGUpLFBvLmRvU3RhdChOdC5zdGF0LCRlLHV0KX1jYXRjaChSdCl7aWYodm9pZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PVJ0Lm5hbWUpdGhyb3cgUnQ7cmV0dXJuLVJ0LmVycm5vfX0sdDpmdW5jdGlvbigkZSx1dCxSdCl7dHJ5e3JldHVybiB1dD1Qby5nZXRTdHIodXQpLHV0PVBv''@;'; put 'put ''LmNhbGN1bGF0ZUF0KCRlLHV0KSwwPT09UnQ/TnQudW5saW5rKHV0KTo1MTI9PT1SdD9OdC5ybWRpcih1dCk6eXIoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0IiksMH1jYXRjaChXdCl7aWYodm9pZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PVd0Lm5hbWUpdGhyb3cgV3Q7cmV0''@;'; put 'put ''dXJuLVd0LmVycm5vfX0sajooKT0+MSxrOigkZSx1dCxSdCk9PkNlLmNvcHlXaXRoaW4oJGUsdXQsdXQrUnQpLG06ZnVuY3Rpb24oJGUsdXQsUnQsV3Qsa24sc3Isb3IsTnIpe3ZhciBDbz1kMChrbixzcik7dHJ5e2lmKGlzTmFOKENvKSlyZXR1cm4gNjE7dmFyIEdvPVBvLmdldFN0cmVhbUZy''@;'; put 'put ''b21GRChXdCkscHM9TnQubW1hcChHbywkZSxDbyx1dCxSdCkscXM9cHMucHRyO3JldHVybiBZZVtvcj4+Ml09cHMuYWxsb2NhdGVkLGV0W05yPj4yXT1xcywwfWNhdGNoKGpvKXtpZih2b2lkIDA9PT1OdHx8IkVycm5vRXJyb3IiIT09am8ubmFtZSl0aHJvdyBqbztyZXR1cm4tam8uZXJybm99''@;'; put 'put ''fSxuOmZ1bmN0aW9uKCRlLHV0LFJ0LFd0LGtuLHNyLG9yKXt2YXIgTnI9ZDAoc3Isb3IpO3RyeXt2YXIgQ289UG8uZ2V0U3RyZWFtRnJvbUZEKGtuKTsyJlJ0JiZQby5kb01zeW5jKCRlLENvLHV0LFd0LE5yKX1jYXRjaChHbyl7aWYodm9pZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PUdvLm5h''@;'; put 'put ''bWUpdGhyb3cgR287cmV0dXJuLUdvLmVycm5vfX0sYTooKT0+e3lyKCIiKX0sQTooJGUsdXQsUnQpPT4oKCRlLHV0LFJ0KT0+e3ZhciBXdD0oKGtuLHNyKT0+e3ZhciBvcjtmb3IoajAubGVuZ3RoPTA7b3I9Q2Vba24rK107KXt2YXIgTnI9MTA1IT1vcjtzcis9KE5yJj0xMTIhPW9yKSYmc3Il''@;'; put 'put ''OD80OjAsajAucHVzaCgxMTI9PW9yP2V0W3NyPj4yXToxMDU9PW9yP1llW3NyPj4yXTpkdFtzcj4+M10pLHNyKz1Ocj84OjR9cmV0dXJuIGowfSkodXQsUnQpO3JldHVybiB6clskZV0oLi4uV3QpfSkoJGUsdXQsUnQpLGM6KCk9PkRhdGUubm93KCkscTokZT0+e3ZhciB1dD1DZS5sZW5ndGgs''@;'; put 'put ''UnQ9MjE0NzQ4MzY0ODtpZigoJGU+Pj49MCk+UnQpcmV0dXJuITE7Zm9yKHZhciBXdCxzcj0xO3NyPD00O3NyKj0yKXt2YXIgb3I9dXQqKDErLjIvc3IpO29yPU1hdGgubWluKG9yLCRlKzEwMDY2MzI5Nik7dmFyIE5yPU1hdGgubWluKFJ0LChXdD1NYXRoLm1heCgkZSxvcikpKyg2NTUzNi1X''@;'; put 'put ''dCU2NTUzNiklNjU1MzYpO2lmKGEyKE5yKSlyZXR1cm4hMH1yZXR1cm4hMX0sdTooJGUsdXQpPT57dmFyIFJ0PTA7cmV0dXJuIHBjKCkuZm9yRWFjaCgoV3Qsa24pPT57dmFyIHNyPXV0K1J0O2V0WyRlKzQqa24+PjJdPXNyLCgob3IsTnIpPT57Zm9yKHZhciBDbz0wO0NvPG9yLmxlbmd0aDsr''@;'; put 'put ''K0NvKXBlW05yKytdPW9yLmNoYXJDb2RlQXQoQ28pO3BlW05yXT0wfSkoV3Qsc3IpLFJ0Kz1XdC5sZW5ndGgrMX0pLDB9LHY6KCRlLHV0KT0+e3ZhciBSdD1wYygpO2V0WyRlPj4yXT1SdC5sZW5ndGg7dmFyIFd0PTA7cmV0dXJuIFJ0LmZvckVhY2goa249Pld0Kz1rbi5sZW5ndGgrMSksZXRb''@;'; put 'put ''dXQ+PjJdPVd0LDB9LGY6KCRlLHV0KT0+e2h0PSEwLCgoUnQsV3QpPT57dGhyb3cgV3R9KSgwLG5ldyBCaSgkZSkpfSxkOmZ1bmN0aW9uKCRlKXt0cnl7dmFyIHV0PVBvLmdldFN0cmVhbUZyb21GRCgkZSk7cmV0dXJuIE50LmNsb3NlKHV0KSwwfWNhdGNoKFJ0KXtpZih2b2lkIDA9PT1OdHx8''@;'; put 'put ''IkVycm5vRXJyb3IiIT09UnQubmFtZSl0aHJvdyBSdDtyZXR1cm4gUnQuZXJybm99fSxnOmZ1bmN0aW9uKCRlLHV0LFJ0LFd0KXt0cnl7dmFyIGtuPSgoc3Isb3IsTnIsQ28pPT57Zm9yKHZhciBHbz0wLHBzPTA7cHM8TnI7cHMrKyl7dmFyIHFzPWV0W29yPj4yXSxqbz1ldFtvcis0Pj4yXTtv''@;'; put 'put ''cis9ODt2YXIgc2E9TnQucmVhZChzcixwZSxxcyxqbyx2b2lkIDApO2lmKHNhPDApcmV0dXJuLTE7aWYoR28rPXNhLHNhPGpvKWJyZWFrfXJldHVybiBHb30pKFBvLmdldFN0cmVhbUZyb21GRCgkZSksdXQsUnQpO3JldHVybiBldFtXdD4+Ml09a24sMH1jYXRjaChzcil7aWYodm9pZCAwPT09''@;'; put 'put ''TnR8fCJFcnJub0Vycm9yIiE9PXNyLm5hbWUpdGhyb3cgc3I7cmV0dXJuIHNyLmVycm5vfX0sbzpmdW5jdGlvbigkZSx1dCxSdCxXdCxrbil7dmFyIHNyPWQwKHV0LFJ0KTt0cnl7aWYoaXNOYU4oc3IpKXJldHVybiA2MTt2YXIgb3I9UG8uZ2V0U3RyZWFtRnJvbUZEKCRlKTtyZXR1cm4gTnQu''@;'; put 'put ''bGxzZWVrKG9yLHNyLFd0KSxJbj1bb3IucG9zaXRpb24+Pj4wLChVcj1vci5wb3NpdGlvbiwrTWF0aC5hYnMoVXIpPj0xP1VyPjA/K01hdGguZmxvb3IoVXIvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoVXItKyh+flVyPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sWWVba24+PjJd''@;'; put 'put ''PUluWzBdLFllW2tuKzQ+PjJdPUluWzFdLG9yLmdldGRlbnRzJiYwPT09c3ImJjA9PT1XdCYmKG9yLmdldGRlbnRzPW51bGwpLDB9Y2F0Y2goTnIpe2lmKHZvaWQgMD09PU50fHwiRXJybm9FcnJvciIhPT1Oci5uYW1lKXRocm93IE5yO3JldHVybiBOci5lcnJub319LGg6ZnVuY3Rpb24oJGUs''@;'; put 'put ''dXQsUnQsV3Qpe3RyeXt2YXIga249KChzcixvcixOcixDbyk9Pntmb3IodmFyIEdvPTAscHM9MDtwczxOcjtwcysrKXt2YXIgcXM9ZXRbb3I+PjJdLGpvPWV0W29yKzQ+PjJdO29yKz04O3ZhciBzYT1OdC53cml0ZShzcixwZSxxcyxqbyx2b2lkIDApO2lmKHNhPDApcmV0dXJuLTE7R28rPXNh''@;'; put 'put ''fXJldHVybiBHb30pKFBvLmdldFN0cmVhbUZyb21GRCgkZSksdXQsUnQpO3JldHVybiBldFtXdD4+Ml09a24sMH1jYXRjaChzcil7aWYodm9pZCAwPT09TnR8fCJFcnJub0Vycm9yIiE9PXNyLm5hbWUpdGhyb3cgc3I7cmV0dXJuIHNyLmVycm5vfX0scDooJGUsdXQsUnQsV3Qsa24pPT4oKCRl''@;'; put 'put ''LHV0LFJ0LFd0KT0+e3ZhciBrbj1ldFtXdCs0MD4+Ml0sc3I9e3RtX3NlYzpZZVtXdD4+Ml0sdG1fbWluOlllW1d0KzQ+PjJdLHRtX2hvdXI6WWVbV3QrOD4+Ml0sdG1fbWRheTpZZVtXdCsxMj4+Ml0sdG1fbW9uOlllW1d0KzE2Pj4yXSx0bV95ZWFyOlllW1d0KzIwPj4yXSx0bV93ZGF5Olll''@;'; put 'put ''W1d0KzI0Pj4yXSx0bV95ZGF5OlllW1d0KzI4Pj4yXSx0bV9pc2RzdDpZZVtXdCszMj4+Ml0sdG1fZ210b2ZmOlllW1d0KzM2Pj4yXSx0bV96b25lOmtuP05zKGtuKToiIn0sb3I9TnMoUnQpLE5yPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZ''@;'; put 'put ''LSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIs''@;'; put 'put ''IiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIENv''@;'; put 'put ''IGluIE5yKW9yPW9yLnJlcGxhY2UobmV3IFJlZ0V4cChDbywiZyIpLE5yW0NvXSk7dmFyIEdvPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxwcz1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXBy''@;'; put 'put ''aWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07ZnVuY3Rpb24gcXMoRmksU3MsUTEpe2Zvcih2YXIgaDA9Im51bWJlciI9PXR5cGVvZiBGaT9GaS50b1N0cmluZygpOkZpfHwiIjtoMC5sZW5ndGg8U3M7''@;'; put 'put ''KWgwPVExWzBdK2gwO3JldHVybiBoMH1mdW5jdGlvbiBqbyhGaSxTcyl7cmV0dXJuIHFzKEZpLFNzLCIwIil9ZnVuY3Rpb24gc2EoRmksU3Mpe2Z1bmN0aW9uIFExKEo3KXtyZXR1cm4gSjc8MD8tMTpKNz4wPzE6MH12YXIgaDA7cmV0dXJuIDA9PT0oaDA9UTEoRmkuZ2V0RnVsbFllYXIoKS1T''@;'; put 'put ''cy5nZXRGdWxsWWVhcigpKSkmJjA9PT0oaDA9UTEoRmkuZ2V0TW9udGgoKS1Tcy5nZXRNb250aCgpKSkmJihoMD1RMShGaS5nZXREYXRlKCktU3MuZ2V0RGF0ZSgpKSksaDB9ZnVuY3Rpb24gJGwoRmkpe3N3aXRjaChGaS5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShGaS5nZXRG''@;'; put 'put ''dWxsWWVhcigpLTEsMTEsMjkpO2Nhc2UgMTpyZXR1cm4gRmk7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShGaS5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShGaS5nZXRGdWxsWWVhcigpLDAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShGaS5nZXRGdWxsWWVhcigp''@;'; put 'put ''LDAsMSk7Y2FzZSA1OnJldHVybiBuZXcgRGF0ZShGaS5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoRmkuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gWWQoRmkpe3ZhciBTcz0oKGhDdCxHRik9Pntmb3IodmFyIFdkPW5ldyBEYXRlKGhDdC5n''@;'; put 'put ''ZXRUaW1lKCkpO0dGPjA7KXt2YXIgZkN0PWwyKFdkLmdldEZ1bGxZZWFyKCkpLGVRPVdkLmdldE1vbnRoKCksbW1lPShmQ3Q/cHA6SXUpW2VRXTtpZighKEdGPm1tZS1XZC5nZXREYXRlKCkpKXJldHVybiBXZC5zZXREYXRlKFdkLmdldERhdGUoKStHRiksV2Q7R0YtPW1tZS1XZC5nZXREYXRl''@;'; put 'put ''KCkrMSxXZC5zZXREYXRlKDEpLGVRPDExP1dkLnNldE1vbnRoKGVRKzEpOihXZC5zZXRNb250aCgwKSxXZC5zZXRGdWxsWWVhcihXZC5nZXRGdWxsWWVhcigpKzEpKX1yZXR1cm4gV2R9KShuZXcgRGF0ZShGaS50bV95ZWFyKzE5MDAsMCwxKSxGaS50bV95ZGF5KSxRMT1uZXcgRGF0ZShTcy5n''@;'; put 'put ''ZXRGdWxsWWVhcigpLDAsNCksaDA9bmV3IERhdGUoU3MuZ2V0RnVsbFllYXIoKSsxLDAsNCksSjc9JGwoUTEpLGRDdD0kbChoMCk7cmV0dXJuIHNhKEo3LFNzKTw9MD9zYShkQ3QsU3MpPD0wP1NzLmdldEZ1bGxZZWFyKCkrMTpTcy5nZXRGdWxsWWVhcigpOlNzLmdldEZ1bGxZZWFyKCktMX12''@;'; put 'put ''YXIgTHU9eyIlYSI6Rmk9PkdvW0ZpLnRtX3dkYXldLnN1YnN0cmluZygwLDMpLCIlQSI6Rmk9PkdvW0ZpLnRtX3dkYXldLCIlYiI6Rmk9PnBzW0ZpLnRtX21vbl0uc3Vic3RyaW5nKDAsMyksIiVCIjpGaT0+cHNbRmkudG1fbW9uXSwiJUMiOkZpPT5qbygoRmkudG1feWVhcisxOTAwKS8xMDB8''@;'; put 'put ''MCwyKSwiJWQiOkZpPT5qbyhGaS50bV9tZGF5LDIpLCIlZSI6Rmk9PnFzKEZpLnRtX21kYXksMiwiICIpLCIlZyI6Rmk9PllkKEZpKS50b1N0cmluZygpLnN1YnN0cmluZygyKSwiJUciOllkLCIlSCI6Rmk9PmpvKEZpLnRtX2hvdXIsMiksIiVJIjpGaT0+e3ZhciBTcz1GaS50bV9ob3VyO3Jl''@;'; put 'put ''dHVybiAwPT1Tcz9Tcz0xMjpTcz4xMiYmKFNzLT0xMiksam8oU3MsMil9LCIlaiI6Rmk9PmpvKEZpLnRtX21kYXkrKChTcyxRMSk9Pntmb3IodmFyIGgwPTAsSjc9MDtKNzw9UTE7aDArPVNzW0o3KytdKTtyZXR1cm4gaDB9KShsMihGaS50bV95ZWFyKzE5MDApP3BwOkl1LEZpLnRtX21vbi0x''@;'; put 'put ''KSwzKSwiJW0iOkZpPT5qbyhGaS50bV9tb24rMSwyKSwiJU0iOkZpPT5qbyhGaS50bV9taW4sMiksIiVuIjooKT0+IlxuIiwiJXAiOkZpPT5GaS50bV9ob3VyPj0wJiZGaS50bV9ob3VyPDEyPyJBTSI6IlBNIiwiJVMiOkZpPT5qbyhGaS50bV9zZWMsMiksIiV0IjooKT0+Ilx0IiwiJXUiOkZp''@;'; put 'put ''PT5GaS50bV93ZGF5fHw3LCIlVSI6Rmk9PmpvKE1hdGguZmxvb3IoKEZpLnRtX3lkYXkrNy1GaS50bV93ZGF5KS83KSwyKSwiJVYiOkZpPT57dmFyIFNzPU1hdGguZmxvb3IoKEZpLnRtX3lkYXkrNy0oRmkudG1fd2RheSs2KSU3KS83KTtpZigoRmkudG1fd2RheSszNzEtRmkudG1feWRheS0y''@;'; put 'put ''KSU3PD0yJiZTcysrLFNzKXtpZig1Mz09U3Mpe3ZhciBRMT0oRmkudG1fd2RheSszNzEtRmkudG1feWRheSklNzs0PT1RMXx8Mz09UTEmJmwyKEZpLnRtX3llYXIpfHwoU3M9MSl9fWVsc2V7U3M9NTI7dmFyIGgwPShGaS50bV93ZGF5KzctRmkudG1feWRheS0xKSU3Oyg0PT1oMHx8NT09aDAm''@;'; put 'put ''JmwyKEZpLnRtX3llYXIlNDAwLTEpKSYmU3MrK31yZXR1cm4gam8oU3MsMil9LCIldyI6Rmk9PkZpLnRtX3dkYXksIiVXIjpGaT0+am8oTWF0aC5mbG9vcigoRmkudG1feWRheSs3LShGaS50bV93ZGF5KzYpJTcpLzcpLDIpLCIleSI6Rmk9PihGaS50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCku''@;'; put 'put ''c3Vic3RyaW5nKDIpLCIlWSI6Rmk9PkZpLnRtX3llYXIrMTkwMCwiJXoiOkZpPT57dmFyIFNzPUZpLnRtX2dtdG9mZjtyZXR1cm4oU3M+PTA/IisiOiItIikrKCIwMDAwIisoU3M9KFNzPU1hdGguYWJzKFNzKS82MCkvNjAqMTAwK1NzJTYwKSkuc2xpY2UoLTQpfSwiJVoiOkZpPT5GaS50bV96''@;'; put 'put ''b25lLCIlJSI6KCk9PiIlIn07Zm9yKHZhciBDbyBpbiBvcj1vci5yZXBsYWNlKC8lJS9nLCJcMFwwIiksTHUpb3IuaW5jbHVkZXMoQ28pJiYob3I9b3IucmVwbGFjZShuZXcgUmVnRXhwKENvLCJnIiksTHVbQ29dKHNyKSkpO3ZhciB4NT1DaShvcj1vci5yZXBsYWNlKC9cMFwwL2csIiUiKSwh''@;'; put 'put ''MSk7cmV0dXJuIHg1Lmxlbmd0aD51dD8wOihwZS5zZXQoeDUsJGUpLHg1Lmxlbmd0aC0xKX0pKCRlLHV0LFJ0LFd0KX0sTHM9KGtuPXthOlRmfSxNaSgpLCgkZT1kLHV0PV9pLFJ0PWtuLFd0PWZ1bmN0aW9uKG9yKXshZnVuY3Rpb24gc3Iob3IsTnIpe2g9KExzPW9yLmV4cG9ydHMpLkIsUXQo''@;'; put 'put ''KSx2bi51bnNoaWZ0KExzLkMpLFBpKCl9KG9yLmluc3RhbmNlKX0sJGV8fCJmdW5jdGlvbiIhPXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ3x8T3IodXQpfHwoJGU9PiRlLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSkodXQpfHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/''@;'; put 'put ''RXIodXQsUnQsV3QpOmZldGNoKHV0LHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihvcj0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcob3IsUnQpLnRoZW4oV3QsZnVuY3Rpb24oTnIpe3JldHVybiBkZShgd2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICR7''@;'; put 'put ''TnJ9YCksZGUoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksRXIodXQsUnQsV3QpfSkpKS5jYXRjaChhKSx7fSk7Zi5fd2ViaWRsX2ZyZWU9JGU9PihmLl93ZWJpZGxfZnJlZT1Mcy5EKSgkZSksZi5fZnJlZT0kZT0+KGYuX2ZyZWU9THMuRSkoJGUpLGYuX3dl''@;'; put 'put ''YmlkbF9tYWxsb2M9JGU9PihmLl93ZWJpZGxfbWFsbG9jPUxzLkYpKCRlKSxmLl9tYWxsb2M9JGU9PihmLl9tYWxsb2M9THMuRykoJGUpO3ZhciBnYyxSdT1mLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPSRlPT4oUnU9Zi5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJf''@;'; put 'put ''X19kZXN0cm95X19fMD1Mcy5IKSgkZSkscmc9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X0dyYXBodml6XzI9KCRlLHV0KT0+KHJnPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9HcmFwaHZpel8yPUxzLkkpKCRlLHV0KSxrZj1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfdmVy''@;'; put 'put ''c2lvbl8wPSgpPT4oa2Y9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3ZlcnNpb25fMD1Mcy5KKSgpLGhUPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9sYXN0RXJyb3JfMD0oKT0+KGhUPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9sYXN0RXJyb3JfMD1Mcy5LKSgpLGZUPWYu''@;'; put 'put ''X2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9jcmVhdGVGaWxlXzI9KCRlLHV0LFJ0KT0+KGZUPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9jcmVhdGVGaWxlXzI9THMuTCkoJGUsdXQsUnQpLHBUPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9sYXlvdXRfMz0oJGUsdXQsUnQsV3Qp''@;'; put 'put ''PT4ocFQ9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2xheW91dF8zPUxzLk0pKCRlLHV0LFJ0LFd0KSxnVD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfYWN5Y2xpY18zPSgkZSx1dCxSdCxXdCk9PihnVD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfYWN5Y2xpY18zPUxzLk4p''@;'; put 'put ''KCRlLHV0LFJ0LFd0KSxYNz1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfdHJlZF8zPSgkZSx1dCxSdCxXdCk9PihYNz1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfdHJlZF8zPUxzLk8pKCRlLHV0LFJ0LFd0KSxtVD1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfdW5mbGF0dGVu''@;'; put 'put ''XzQ9KCRlLHV0LFJ0LFd0LGtuKT0+KG1UPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel91bmZsYXR0ZW5fND1Mcy5QKSgkZSx1dCxSdCxXdCxrbiksbm1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9nZXRfbGF5b3V0X3Jlc3VsdF8wPSRlPT4obm1lPWYuX2Vtc2NyaXB0ZW5fYmlu''@;'; put 'put ''ZF9HcmFwaHZpel9nZXRfbGF5b3V0X3Jlc3VsdF8wPUxzLlEpKCRlKSxybWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3NldF9sYXlvdXRfcmVzdWx0XzE9KCRlLHV0KT0+KHJtZT1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfc2V0X2xheW91dF9yZXN1bHRfMT1Mcy5SKSgkZSx1''@;'; put 'put ''dCksaW1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9nZXRfYWN5Y2xpY19vdXRGaWxlXzA9JGU9PihpbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2dldF9hY3ljbGljX291dEZpbGVfMD1Mcy5TKSgkZSksb21lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9zZXRfYWN5''@;'; put 'put ''Y2xpY19vdXRGaWxlXzE9KCRlLHV0KT0+KG9tZT1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfc2V0X2FjeWNsaWNfb3V0RmlsZV8xPUxzLlQpKCRlLHV0KSxzbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2dldF9hY3ljbGljX251bV9yZXZfMD0kZT0+KHNtZT1mLl9lbXNjcmlw''@;'; put 'put ''dGVuX2JpbmRfR3JhcGh2aXpfZ2V0X2FjeWNsaWNfbnVtX3Jldl8wPUxzLlUpKCRlKSxhbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3NldF9hY3ljbGljX251bV9yZXZfMT0oJGUsdXQpPT4oYW1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9zZXRfYWN5Y2xpY19udW1fcmV2''@;'; put 'put ''XzE9THMuVikoJGUsdXQpLGxtZT1mLl9lbXNjcmlwdGVuX2JpbmRfR3JhcGh2aXpfZ2V0X3RyZWRfb3V0XzA9JGU9PihsbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2dldF90cmVkX291dF8wPUxzLlcpKCRlKSxjbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3NldF90cmVk''@;'; put 'put ''X291dF8xPSgkZSx1dCk9PihjbWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X3NldF90cmVkX291dF8xPUxzLlgpKCRlLHV0KSx1bWU9Zi5fZW1zY3JpcHRlbl9iaW5kX0dyYXBodml6X2dldF90cmVkX2Vycl8wPSRlPT4odW1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9nZXRf''@;'; put 'put ''dHJlZF9lcnJfMD1Mcy5ZKSgkZSksZG1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9zZXRfdHJlZF9lcnJfMT0oJGUsdXQpPT4oZG1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9zZXRfdHJlZF9lcnJfMT1Mcy5aKSgkZSx1dCksaG1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFw''@;'; put 'put ''aHZpel9fX2Rlc3Ryb3lfX18wPSRlPT4oaG1lPWYuX2Vtc2NyaXB0ZW5fYmluZF9HcmFwaHZpel9fX2Rlc3Ryb3lfX18wPUxzLl8pKCRlKSxmbWU9KCRlLHV0KT0+KGZtZT1Mcy5hYSkoJGUsdXQpLHBtZT0kZT0+KHBtZT1Mcy5iYSkoJGUpO2Z1bmN0aW9uIGdtZSgpe25yPjB8fChTdChsbiks''@;'; put 'put ''bnI+MHx8Z2N8fChnYz0hMCxmLmNhbGxlZFJ1bj0hMCxodHx8KGYubm9GU0luaXR8fE50LmluaXQuaW5pdGlhbGl6ZWR8fE50LmluaXQoKSxOdC5pZ25vcmVQZXJtaXNzaW9ucz0hMSxTdCh2biksYyhmKSxTdCh3bikpKSl9ZnVuY3Rpb24gYzIoKXt9ZnVuY3Rpb24gV0YoJGUpe3JldHVybigk''@;'; put 'put ''ZXx8YzIpLl9fY2FjaGVfX31mdW5jdGlvbiBRSigkZSx1dCl7dmFyIFJ0PVdGKHV0KSxXdD1SdFskZV07cmV0dXJuIFd0fHwoKFd0PU9iamVjdC5jcmVhdGUoKHV0fHxjMikucHJvdG90eXBlKSkucHRyPSRlLFJ0WyRlXT1XdCl9Zi5VVEY4VG9TdHJpbmc9TnMsdnI9ZnVuY3Rpb24gJGUoKXtn''@;'; put 'put ''Y3x8Z21lKCksZ2N8fCh2cj0kZSl9LGdtZSgpLChjMi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShjMi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1jMixjMi5wcm90b3R5cGUuX19jbGFzc19fPWMyLGMyLl9fY2FjaGVfXz17fSxmLldyYXBwZXJPYmplY3Q9YzIsZi5nZXRDYWNoZT1XRixmLndy''@;'; put 'put ''YXBQb2ludGVyPVFKLGYuY2FzdE9iamVjdD1mdW5jdGlvbigkZSx1dCl7cmV0dXJuIFFKKCRlLnB0cix1dCl9LGYuTlVMTD1RSigwKSxmLmRlc3Ryb3k9ZnVuY3Rpb24oJGUpe2lmKCEkZS5fX2Rlc3Ryb3lfXyl0aHJvdyJFcnJvcjogQ2Fubm90IGRlc3Ryb3kgb2JqZWN0LiAoRGlkIHlvdSBj''@;'; put 'put ''cmVhdGUgaXQgeW91cnNlbGY/KSI7JGUuX19kZXN0cm95X18oKSxkZWxldGUgV0YoJGUuX19jbGFzc19fKVskZS5wdHJdfSxmLmNvbXBhcmU9ZnVuY3Rpb24oJGUsdXQpe3JldHVybiAkZS5wdHI9PT11dC5wdHJ9LGYuZ2V0UG9pbnRlcj1mdW5jdGlvbigkZSl7cmV0dXJuICRlLnB0cn0sZi5n''@;'; put 'put ''ZXRDbGFzcz1mdW5jdGlvbigkZSl7cmV0dXJuICRlLl9fY2xhc3NfX307dmFyIG9hPXtidWZmZXI6MCxzaXplOjAscG9zOjAsdGVtcHM6W10sbmVlZGVkOjAscHJlcGFyZSgpe2lmKG9hLm5lZWRlZCl7Zm9yKHZhciAkZT0wOyRlPG9hLnRlbXBzLmxlbmd0aDskZSsrKWYuX3dlYmlkbF9mcmVl''@;'; put 'put ''KG9hLnRlbXBzWyRlXSk7b2EudGVtcHMubGVuZ3RoPTAsZi5fd2ViaWRsX2ZyZWUob2EuYnVmZmVyKSxvYS5idWZmZXI9MCxvYS5zaXplKz1vYS5uZWVkZWQsb2EubmVlZGVkPTB9b2EuYnVmZmVyfHwob2Euc2l6ZSs9MTI4LG9hLmJ1ZmZlcj1mLl93ZWJpZGxfbWFsbG9jKG9hLnNpemUpLE10''@;'; put 'put ''KG9hLmJ1ZmZlcikpLG9hLnBvcz0wfSxhbGxvYygkZSx1dCl7TXQob2EuYnVmZmVyKTt2YXIgUnQsa249JGUubGVuZ3RoKnV0LkJZVEVTX1BFUl9FTEVNRU5UO3JldHVybiBrbj1oYShrbiw4KSxvYS5wb3Mra24+PW9hLnNpemU/KE10KGtuPjApLG9hLm5lZWRlZCs9a24sUnQ9Zi5fd2ViaWRs''@;'; put 'put ''X21hbGxvYyhrbiksb2EudGVtcHMucHVzaChSdCkpOihSdD1vYS5idWZmZXIrb2EucG9zLG9hLnBvcys9a24pLFJ0fSxjb3B5KCRlLHV0LFJ0KXtSdC89dXQuQllURVNfUEVSX0VMRU1FTlQ7Zm9yKHZhciBXdD0wO1d0PCRlLmxlbmd0aDtXdCsrKXV0W1J0K1d0XT0kZVtXdF19fTtmdW5jdGlv''@;'; put 'put ''biB1MigkZSl7aWYoInN0cmluZyI9PXR5cGVvZiAkZSl7dmFyIHV0PUNpKCRlKSxSdD1vYS5hbGxvYyh1dCxwZSk7cmV0dXJuIG9hLmNvcHkodXQscGUsUnQpLFJ0fXJldHVybiAkZX1mdW5jdGlvbiBpZygpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBWb2lkUHRyLCBubyBjb25zdHJ1Y3Rv''@;'; put 'put ''ciBpbiBJREwifWZ1bmN0aW9uIERvKCRlLHV0KXskZSYmIm9iamVjdCI9PXR5cGVvZiAkZSYmKCRlPSRlLnB0ciksdXQmJiJvYmplY3QiPT10eXBlb2YgdXQmJih1dD11dC5wdHIpLHRoaXMucHRyPXJnKCRlLHV0KSxXRihEbylbdGhpcy5wdHJdPXRoaXN9cmV0dXJuKGlnLnByb3RvdHlwZT1P''@;'; put 'put ''YmplY3QuY3JlYXRlKGMyLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWlnLGlnLnByb3RvdHlwZS5fX2NsYXNzX189aWcsaWcuX19jYWNoZV9fPXt9LGYuVm9pZFB0cj1pZyxpZy5wcm90b3R5cGUuX19kZXN0cm95X189aWcucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7UnUodGhp''@;'; put 'put ''cy5wdHIpfSwoRG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYzIucHJvdG90eXBlKSkuY29uc3RydWN0b3I9RG8sRG8ucHJvdG90eXBlLl9fY2xhc3NfXz1EbyxEby5fX2NhY2hlX189e30sZi5HcmFwaHZpej1EbyxEby5wcm90b3R5cGUudmVyc2lvbj1Eby5wcm90b3R5cGUudmVyc2lvbj1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBOcyhrZigpKX0sRG8ucHJvdG90eXBlLmxhc3RFcnJvcj1Eby5wcm90b3R5cGUubGFzdEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIE5zKGhUKCkpfSxEby5wcm90b3R5cGUuY3JlYXRlRmlsZT1Eby5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbigkZSx1dCl7''@;'; put 'put ''dmFyIFJ0PXRoaXMucHRyO29hLnByZXBhcmUoKSwkZT0kZSYmIm9iamVjdCI9PXR5cGVvZiAkZT8kZS5wdHI6dTIoJGUpLHV0PXV0JiYib2JqZWN0Ij09dHlwZW9mIHV0P3V0LnB0cjp1Mih1dCksZlQoUnQsJGUsdXQpfSxEby5wcm90b3R5cGUubGF5b3V0PURvLnByb3RvdHlwZS5sYXlvdXQ9''@;'; put 'put ''ZnVuY3Rpb24oJGUsdXQsUnQpe3ZhciBXdD10aGlzLnB0cjtyZXR1cm4gb2EucHJlcGFyZSgpLCRlPSRlJiYib2JqZWN0Ij09dHlwZW9mICRlPyRlLnB0cjp1MigkZSksdXQ9dXQmJiJvYmplY3QiPT10eXBlb2YgdXQ/dXQucHRyOnUyKHV0KSxSdD1SdCYmIm9iamVjdCI9PXR5cGVvZiBSdD9S''@;'; put 'put ''dC5wdHI6dTIoUnQpLE5zKHBUKFd0LCRlLHV0LFJ0KSl9LERvLnByb3RvdHlwZS5hY3ljbGljPURvLnByb3RvdHlwZS5hY3ljbGljPWZ1bmN0aW9uKCRlLHV0LFJ0KXt2YXIgV3Q9dGhpcy5wdHI7cmV0dXJuIG9hLnByZXBhcmUoKSwkZT0kZSYmIm9iamVjdCI9PXR5cGVvZiAkZT8kZS5wdHI6''@;'; put 'put ''dTIoJGUpLHV0JiYib2JqZWN0Ij09dHlwZW9mIHV0JiYodXQ9dXQucHRyKSxSdCYmIm9iamVjdCI9PXR5cGVvZiBSdCYmKFJ0PVJ0LnB0ciksISFnVChXdCwkZSx1dCxSdCl9LERvLnByb3RvdHlwZS50cmVkPURvLnByb3RvdHlwZS50cmVkPWZ1bmN0aW9uKCRlLHV0LFJ0KXt2YXIgV3Q9dGhp''@;'; put 'put ''cy5wdHI7b2EucHJlcGFyZSgpLCRlPSRlJiYib2JqZWN0Ij09dHlwZW9mICRlPyRlLnB0cjp1MigkZSksdXQmJiJvYmplY3QiPT10eXBlb2YgdXQmJih1dD11dC5wdHIpLFJ0JiYib2JqZWN0Ij09dHlwZW9mIFJ0JiYoUnQ9UnQucHRyKSxYNyhXdCwkZSx1dCxSdCl9LERvLnByb3RvdHlwZS51''@;'; put 'put ''bmZsYXR0ZW49RG8ucHJvdG90eXBlLnVuZmxhdHRlbj1mdW5jdGlvbigkZSx1dCxSdCxXdCl7dmFyIGtuPXRoaXMucHRyO3JldHVybiBvYS5wcmVwYXJlKCksJGU9JGUmJiJvYmplY3QiPT10eXBlb2YgJGU/JGUucHRyOnUyKCRlKSx1dCYmIm9iamVjdCI9PXR5cGVvZiB1dCYmKHV0PXV0LnB0''@;'; put 'put ''ciksUnQmJiJvYmplY3QiPT10eXBlb2YgUnQmJihSdD1SdC5wdHIpLFd0JiYib2JqZWN0Ij09dHlwZW9mIFd0JiYoV3Q9V3QucHRyKSxOcyhtVChrbiwkZSx1dCxSdCxXdCkpfSxEby5wcm90b3R5cGUuZ2V0X2xheW91dF9yZXN1bHQ9RG8ucHJvdG90eXBlLmdldF9sYXlvdXRfcmVzdWx0PWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIE5zKG5tZSh0aGlzLnB0cikpfSxEby5wcm90b3R5cGUuc2V0X2xheW91dF9yZXN1bHQ9RG8ucHJvdG90eXBlLnNldF9sYXlvdXRfcmVzdWx0PWZ1bmN0aW9uKCRlKXt2YXIgdXQ9dGhpcy5wdHI7b2EucHJlcGFyZSgpLCRlPSRlJiYib2JqZWN0Ij09dHlwZW9mICRl''@;'; put 'put ''PyRlLnB0cjp1MigkZSkscm1lKHV0LCRlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KERvLnByb3RvdHlwZSwibGF5b3V0X3Jlc3VsdCIse2dldDpEby5wcm90b3R5cGUuZ2V0X2xheW91dF9yZXN1bHQsc2V0OkRvLnByb3RvdHlwZS5zZXRfbGF5b3V0X3Jlc3VsdH0pLERvLnByb3RvdHlwZS5n''@;'; put 'put ''ZXRfYWN5Y2xpY19vdXRGaWxlPURvLnByb3RvdHlwZS5nZXRfYWN5Y2xpY19vdXRGaWxlPWZ1bmN0aW9uKCl7cmV0dXJuIE5zKGltZSh0aGlzLnB0cikpfSxEby5wcm90b3R5cGUuc2V0X2FjeWNsaWNfb3V0RmlsZT1Eby5wcm90b3R5cGUuc2V0X2FjeWNsaWNfb3V0RmlsZT1mdW5jdGlvbigk''@;'; put 'put ''ZSl7dmFyIHV0PXRoaXMucHRyO29hLnByZXBhcmUoKSwkZT0kZSYmIm9iamVjdCI9PXR5cGVvZiAkZT8kZS5wdHI6dTIoJGUpLG9tZSh1dCwkZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEby5wcm90b3R5cGUsImFjeWNsaWNfb3V0RmlsZSIse2dldDpEby5wcm90b3R5cGUuZ2V0X2FjeWNs''@;'; put 'put ''aWNfb3V0RmlsZSxzZXQ6RG8ucHJvdG90eXBlLnNldF9hY3ljbGljX291dEZpbGV9KSxEby5wcm90b3R5cGUuZ2V0X2FjeWNsaWNfbnVtX3Jldj1Eby5wcm90b3R5cGUuZ2V0X2FjeWNsaWNfbnVtX3Jldj1mdW5jdGlvbigpe3JldHVybiBzbWUodGhpcy5wdHIpfSxEby5wcm90b3R5cGUuc2V0''@;'; put 'put ''X2FjeWNsaWNfbnVtX3Jldj1Eby5wcm90b3R5cGUuc2V0X2FjeWNsaWNfbnVtX3Jldj1mdW5jdGlvbigkZSl7JGUmJiJvYmplY3QiPT10eXBlb2YgJGUmJigkZT0kZS5wdHIpLGFtZSh0aGlzLnB0ciwkZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEby5wcm90b3R5cGUsImFjeWNsaWNfbnVt''@;'; put 'put ''X3JldiIse2dldDpEby5wcm90b3R5cGUuZ2V0X2FjeWNsaWNfbnVtX3JldixzZXQ6RG8ucHJvdG90eXBlLnNldF9hY3ljbGljX251bV9yZXZ9KSxEby5wcm90b3R5cGUuZ2V0X3RyZWRfb3V0PURvLnByb3RvdHlwZS5nZXRfdHJlZF9vdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gTnMobG1lKHRoaXMu''@;'; put 'put ''cHRyKSl9LERvLnByb3RvdHlwZS5zZXRfdHJlZF9vdXQ9RG8ucHJvdG90eXBlLnNldF90cmVkX291dD1mdW5jdGlvbigkZSl7dmFyIHV0PXRoaXMucHRyO29hLnByZXBhcmUoKSwkZT0kZSYmIm9iamVjdCI9PXR5cGVvZiAkZT8kZS5wdHI6dTIoJGUpLGNtZSh1dCwkZSl9LE9iamVjdC5kZWZp''@;'; put 'put ''bmVQcm9wZXJ0eShEby5wcm90b3R5cGUsInRyZWRfb3V0Iix7Z2V0OkRvLnByb3RvdHlwZS5nZXRfdHJlZF9vdXQsc2V0OkRvLnByb3RvdHlwZS5zZXRfdHJlZF9vdXR9KSxEby5wcm90b3R5cGUuZ2V0X3RyZWRfZXJyPURvLnByb3RvdHlwZS5nZXRfdHJlZF9lcnI9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gTnModW1lKHRoaXMucHRyKSl9LERvLnByb3RvdHlwZS5zZXRfdHJlZF9lcnI9RG8ucHJvdG90eXBlLnNldF90cmVkX2Vycj1mdW5jdGlvbigkZSl7dmFyIHV0PXRoaXMucHRyO29hLnByZXBhcmUoKSwkZT0kZSYmIm9iamVjdCI9PXR5cGVvZiAkZT8kZS5wdHI6dTIoJGUpLGRtZSh1dCwk''@;'; put 'put ''ZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEby5wcm90b3R5cGUsInRyZWRfZXJyIix7Z2V0OkRvLnByb3RvdHlwZS5nZXRfdHJlZF9lcnIsc2V0OkRvLnByb3RvdHlwZS5zZXRfdHJlZF9lcnJ9KSxEby5wcm90b3R5cGUuX19kZXN0cm95X189RG8ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1''@;'; put 'put ''bmN0aW9uKCl7aG1lKHRoaXMucHRyKX0sdn0pO2xldCBkVCxaSjtmdW5jdGlvbiBtdnQobCl7cmV0dXJue3BhdGg6bC5wYXRoLGRhdGE6YDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PlxuPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8v''@;'; put 'put ''RFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj5cbjxzdmcgd2lkdGg9IiR7bC53aWR0aH0iIGhlaWdodD0iJHtsLmhlaWdodH0iPjwvc3ZnPmB9fWNsYXNzIEM1e2NvbnN0cnVjdG9yKGMpe3RoaXMuX21vZHVsZT1jfXN0''@;'; put 'put ''YXRpYyBsb2FkKCl7cmV0dXJuKFpKfHwoWko9ZnVuY3Rpb24gcHZ0KGwpe3JldHVybiBmdW5jdGlvbihhLGQpe2Zvcih2YXIgaD1bXSxmPSshZCx2PTAsUz0wO2EubGVuZ3RoOyl7dmFyIFY9aXZ0KGEsZnx8ZCk7aWYoIm9iamVjdCI9PXR5cGVvZiBWKXtmb3IoZj8oZD1udWxsLFYudy5sZW5n''@;'; put 'put ''dGg9PVYudSYmKGgucHVzaChkPVYudyksUys9Vi51KSk6KGgucHVzaChkKSxWLmU9MCk7IVYubDspe3ZhciBRPWR2dChhLFYsZCk7UXx8c3UoNSksZD9WLmU9Vi55OihoLnB1c2goUSksUys9US5sZW5ndGgsbnZ0KFYudywwLFEubGVuZ3RoKSxWLncuc2V0KFEsVi53Lmxlbmd0aC1RLmxlbmd0''@;'; put 'put ''aCkpfXY9Vi5iKzQqVi5jfWVsc2Ugdj1WO2E9YS5zdWJhcnJheSh2KX1yZXR1cm4gZnVuY3Rpb24obCxjKXtpZigxPT1sLmxlbmd0aClyZXR1cm4gbFswXTtmb3IodmFyIGE9bmV3IEJjKGMpLGQ9MCxoPTA7ZDxsLmxlbmd0aDsrK2Qpe3ZhciBmPWxbZF07YS5zZXQoZixoKSxoKz1mLmxlbmd0''@;'; put 'put ''aH1yZXR1cm4gYX0oaCxTKX0oZnVuY3Rpb24oYSl7Y29uc3QgZD1hLmxlbmd0aCxoPVtdO2xldCBmPTAsdj0wLFM9LTE7Zm9yKGxldCBWPTA7VjxkO1YrKyl7Y29uc3QgUT0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkhIyQl''@;'; put 'put ''JigpKissLi86Ozw9Pj9AW11eX2B7fH1+IicuaW5kZXhPZihhW1ZdKTtpZigtMSE9PVEpaWYoUzwwKVM9UTtlbHNle1MrPTkxKlEsZnw9Uzw8dix2Kz0oODE5MSZTKT44OD8xMzoxNDtkb3toLnB1c2goMjU1JmYpLGY+Pj04LHYtPTh9d2hpbGUodj43KTtTPS0xfX1yZXR1cm4gUz4tMSYmaC5w''@;'; put 'put ''dXNoKDI1NSYoZnxTPDx2KSksbmV3IFVpbnQ4QXJyYXkoaCl9KGwpKX0oJ3Y3I2FTWE4uPkRqblk6ZH50WV54XzJodFMjey8lQHw7XXV5YlBWanZEPDo5dj01PXlzPCx4V3hgMEhHNSpxJDpLejBoOk9bUXVPXW5VZU5CPH5XUCI0dTVsc0JYRV5laFZaSHxxLGJqcSg7eWdYXUNmPk1kVUNoNSIq''@;'; put 'put ''PCRsNT9VWkckJVBmTT1iOUJxKTlQXU5CKzd6VT5iNjVOS15CSlF8KU1ienJCSStwX1FreWduWExBcmZZQXJNcGgxIV9KU20uYlpzWm1XY2JfUnwmbylreV0qdUwobUVeMHBMaFpteU0rU3s6T21dMEY6eTdWTUVfeFN3XlcrelZVaT1kUi5gQ0I+QW5wbS93KUV5O2hdLERgYXg4bD40WHg8Vz03''@;'; put 'put ''aUFPaD5ge1k0KSZLfDk9X1tRXX1vN31AbV1ePiRCPnc+eypYLDBdK3hKfSpMQ1Q7eDo0Q0VuTyYsL1tedH5gSiRpYjlBRmRhPm5dZiw3d3NLbzNtOytiO205YiJwPHBiXyR8RXxjP0JqNDJuRnQ+LiZGe3dTdyZPfEgxSShYZ1FadGhvNWw3b2Q/TXMlTn1pV25+YjddZVY9Snw0JGF2bTZ+aSlW''@;'; put 'put ''TzhUZ1NmKWJUcGBuO0tCX0lxX344IyF+clsvVGt5ayZCPmJXSDdVTCFWSGVCbiQ9LE1rXX5VPTJOdz58IzJZRHkha1s8ZVYrfmY7N3RUOmRlZ0p4d25gOC5XayFSUT19IkgyZHpTRk5yQHh6SHRoYjRkVUREQj51QVY8N1FHNXZWPVY6K2xAWyZAOjZqKlZUO1FedW4sRDV1RCQlOnxqXldzN2Q+''@;'; put 'put ''O2heSjJgNz0sZXhfVThabWlFZElsT0orOV0vcSRBYV43OjcpOmlIM2F7L3ZoUWtSYGM2QSUhUTYvJURIfXMuIzpDeEhsV0pXPW0wQFlpN1Q8MUp5b1ZYIn0odlEjZjxtT3xneEpMZH5xJCFMZDdzK3glY05pJk1QbG46bE9Hfm5pLE5GNS8mRkt3NyV8STt8dnhFTGFTfnt7TCVhanRdSVlFJi8y''@;'; put 'put ''P1YxVk8oU1tLYVJzN3BGPWA6T3B7MEEmXSZbJnpiNnVOfC5BI3dscm5nckU7YTJyOjJJcEspRGNDNDwvNmJ+eTJ3NHBHNjg2dFFTZ1ElKVljc1p7V2haN3t7SSVuJkBZaTdzVjklNTJKbXNFeTVwI1dVdkcydmxHXm0/bV1lbzV8YGM8QjFGUGhHNy40VWFPJX1KcyVKPCpgNitFZGlCIS89Y080''@;'; put 'put ''V24hQHY7U1hwWVlvdmFoIiNPVlc9TGA8KTFLTXs2QyE7T1k6PUB5MW5zbThIVXoreHdxc2FLWjtFYiNRTnhVOi9rNmJlbU04fWsrSlN+a1V5fXk5NSglJTZAQlNiXnlMJUsjOlcmSWZzaUZuVk8qOF5EJWY4ZF1oWEI2RSZtVTV9aWtNXyt2ZGo3LnYwclZpfUBeVktwM0cmSzlELkEocWI5VHBH''@;'; put 'put ''OnNCODp2VV1+Ky9rQV9CL0dTWVJyV2VrbzpdI0Y5K1A1Ojc3NU9UMUR4RDVWTl5eUC5ybFZOUVBALCMxYzZ0ZDNfSFVGSiYlWmlAZl9AUGRqO3thKl0jWSMqcn15RWguNTFhd1Y6UDp6IzxPb0o4NTgrbGtDbnNTZUJtW1FVbVJmNXd5XmUyLkFQc3I2VT9jMDYiYj9tQyhDKDVzNFVtInZ9UTo6''@;'; put 'put ''bnxhIyIlM18uYEdLfXw8QWNhXytjfWAzLytsa3h9JEI0UDtFOCt0RF9eS1ZzdjdlKFZOWi97OCVRb2ZuMGg2RX1iciRuUUh7ZFpIW09sZ1ZZP2NOZj47O10zJWM7PGpqR3JUfXs+PEBGK3Y3WCRpTEdiMnpTd15JJStyd3I1SixeN1UjWilgJHtQbyMyTnd3NkxIc0w7PldwP3BFS2BZJERwZGYw''@;'; put 'put ''ZXpkeSw/TCR8YE4jLGZCanJMeVVNQHc4Iy5DLzIue05XLHRIXUUmfFd9fSN5czAlWjZudXo7c2lxYV8uc1p+O01wYUZWNzF+Vlt3X2NCdVEobksqNjVJTjxtRSoxJCk8UlZMTl1uNU93ckkzSz40WjomK1pDej03IkdfSEJ3YGtjdnx2OmtwPXNZbURgSEB2fkhtNX53eGA7Wy8vK19dYSxNcTt0''@;'; put 'put ''UiZ4YiFGREM7XmQiUF5sdT0rQXAkcl15eiUwfHAubl8lZmhBJSM9Nk05XVd+TV9RcC5rYyVdflVWU35FS0lgVjk3OHQrOV8sck14dFA7c0JJIX5eXkF4QV8sViZ2Nzs2RVFEbTdXUzt7Vix4eTQrTWtKTldwfFVTM1FES3wyZjJJMCFfbm1HYEx3L0clJj9Gc1Q5aWs/eE1aKyMjVng1cWZhXkVO''@;'; put 'put ''bC5tfH15cStbYHVbUl1aMzFjMEZIKyh7YjcmN3EoWyZxbTN8JVFIOFV5YitgcnxvSHV4cEdqZHVuUS5fJndRdiFZT287OyE/MWMyNj1bRXM9OmFgJWwqSzhaO21Say5mO20yMDVUZDpBLmlSWUh6PmplOStqMiMyZjNnJDo6NVF8Uz9hNTI6Y001WV1RcGcwJmxKIUd3YWc6JHxwMjpde2YyQlQ6''@;'; put 'put ''dHNwdzZvXzxbd11JMl86UTM7NmRLe2xlZDk6NWM7ZVRnKG88PXp9MHp9b203SjIlKDJmUyp1ZXArbW0jLjFCblBMOWRIJjF6SSo9SS82JVJdWnxtKDArdSVwRHBwUDskPkgydytIWjp0X0I7Y2QySDhXOyQuSipSbVYwb0dvOHNbWVpzWk19PGVQVzcuWzVxZFEoRjtYWjJsZWs3ZHVuKDVhISg5''@;'; put 'put ''NU9xJGIsKDhTcCMsX21eb0tyW3doN3QmWlI2QFsmQFlnVzksSSh5K2FoTTxSOlslV3BDMyslPS95UmE1fVNbREA6enh+dFVwWE1ZNCkmWnohQHguSHBpQkNzQyVtczM2c3lPdy9AVGJYOigxYGVvKD15REYyeyVYbVU0ZWZfW10qa1JfUSxsbHJtSns8XiVvZ2QqV0N7aSYiWHZoWW1MUTw7Tz95''@;'; put 'put ''Wn44TndXJGt4OTUlTyorT3Bfe05sNkFKOzJWIyokSUFaeUh7Rms6SnNDK2hvYlJhJVUxWms5QHF5NDE6eS4vcEd6MCMuTil8JFBVMUskMjImdzZyVlc9Zz5wL35PWE0lSExkNFZbUFlXN1NKI1l7U1J6LmQ6MiMkXUU1PDd9XXRxcWVfW053LGZZcENMTjRnOCpsYT5EP3FTRChLOWdtY1QyRjZ5''@;'; put 'put ''cyg4UiEuXWt0K0BxYT4sL3liW21jcH5yajluQ1Q7fTpQcSk8WF1XbGVAXyE9ZGhvQT5IWFUhaEhhOXVkWSpMfS5dcWYkS11SYTJPZ15ZTEMpN0I6NVVGO0w5MXtMQGlCc2IrOmAqdnlLfUN5Nz1UbGE4VzhPI1tbOTk3YmVqUG5Hd3pyTyl4Zl85WW5PeTJOclcsIWpmWk8vRzk9MXYxVWNZK1Z+''@;'; put 'put ''NiI2eSZsPHhMX29OUmJfRnMqTXQ7eSZ7OGJaQllKMyZmXmouLlpfTytXTSxzVm16NkY+NmdLb3w4WyYidzh1ejtPQFtLRFFEOXB5VlguXTBhKzpXaCRLbUZdMWI5TFtbI19iOUh4IUtrOi9nZTshREoiSzBmXXZrYTsyZDcqbCxLVDhBZT03NWUwLytsPVlUVSVxbDBWLnpGUTg9ZCMzTDlUMGoj''@;'; put 'put ''YnhXSUg9Zz4/MFFaOEwyU29iOnl+ajJ5dlJZQDclSmlWN2FeKTVKZnRNen55JkpDTHFwZH0lfjFfZVZHSXIlX0M1Zl1YfXVZLlswS3pSKUx9SlZaQklLKjshIyZVSl5BayRlc3s2ZWZdbFpPVUApMl9dNGlZSTBUTEd7OztJWzJeZlsyS1JGSiYleH1yP3lgRm9YTVEzTnB8PEFjLltqL1skY0ta''@;'; put 'put ''YThUM2EhMC9qX2AsVjtVTV0xPndVejAzeGl4OkxIeyJ8ezxZWmRXayQjJi9pZys0QFFVR0w+eGRuTDVEOWJXOV0leWJne25XP1sjMm1UNjlqfXsreDx6QTtFJjJDU3dZcDJdeFZFXWN6WXZ6OyRYNzkubDRFYTZyWm0jc14kRy5ZcntOJFY9V004KFNweV5oXU4uSGF9bS9nc2M3Kk9YfClURztj''@;'; put 'put ''ZjA7O0BxbHIlcy5afVRpdChzQysybnl3ZEZocV1BYDdmKGQwfCMrWiU6WWpYcEs4U0x0KyVwYmp3LDIrK0MsI0M7KGhJfEN4RFZdNTJUQld8TzdkVEhVX28kPjc1ZSo8Yjg7ZUJfVnA5b19eTVFETi8jMD9IWmx7OT5MRzJ9QW5ATEhsJCYoViZNRUoyX0RrPCs2VlspMCs3bFIkTVNQP317XTgw''@;'; put 'put ''dXdkYXI7bE1fMjdxVm9XY0tLY0VMYTtnbVFFe1tNK1opMSVNelpMSTl4KThTOz13Sl1iViF+blpaOixGbXJTO3t9Jnp9e05HN3xgWnQ4alRGUmAlbGpbLlYmKW8ybVBHJDVZN3A4fSZERnNfPCVWNnlsdGl9SDh9e1doa3FvXmMlQHoqbCRwTnB3aCtOKHU/bio7RF5GX0tDMDRlc2QhXkR9bkBY''@;'; put 'put ''Z0tiaiMpZDM8KDA6Z0ksUUs1YV5bJnBaMHlDTWI6LntYTSQlJjlAI2duV00sPSQ+LFl8O0NfeHwuNlFVKjtXTTJEZStCJkdMP1AzNSguIjdrTig3aD5eWUJ4RTZYWmg6Lns+Ly57fjgwXjcqNjVFWlhZTT1XJDI3Z2x3Ni9lWmc8QGBaR30wZi5XKm1QR1JvZFcpbXlNJEp7XiVvNWVpVXliY2BP''@;'; put 'put ''a3VUXWxnfittWFVmR3MlNEoyfVNsImdhXmhdZzJhdER2eWcuZEtXWnY0ezdVYnBXVHRWM0o3Ni5MLExEK29yaDZJMnY2ZXlRVjhiIT45TzduZ2NAdUtQSS9II2JeamNaTillKV8jYXlUJEwzIXN+YTw7Knd6IV09dmcydSoybWtYazFUMUwqUWY2UUIpMyVMRzB9X3sqN3IuSjklT1ZhO21COFha''@;'; put 'put ''Ki5dXklKQm84VjRtUUghTnFUbiZNcTFydEQqeyU2L1s9PGprUWBuSkMoZkBUW0BTT18iTjRMenkzfjF6L0Iqe11YTFdvIVl7fmN7YjpkPlFgSWR5QWEjZzAjK0szYW1sXiVQdiVjQjZqfUNRX3dAcF1rSn1veWklciJ8LzJucWhuZzpCO2E5ImI3fXtEIkgvcnN9e0B8OVNnNiJ3PXJHak16T3xA''@;'; put 'put ''ZltwUXFjZSZ4OStyfERJfCtPfHkjWnhCc29PMl0hZ15rUi5VPUBQS2RQU2ZdRkxvYHJ1L0ZraS9GcS5weCwvaEddQ24kcXBlWSVzcn1jYWY2YmUpWVJ4ZzdESSxdQFBIZDJqeWk9N2IkcWFIUWc3eSNseDRteT0wQmdhXVtDWixnUUwwVEZ5Z3FVTlV8V21JSzAjRXM+QD9iW1BJezZNcSwqc1k1''@;'; put 'put ''ISRLeX1nWyNqeXQwbjphciE6K2YhWVprZ245OjN9TV9wPUk5Oi9XMU8hZ11BcFdkXWs8XlJ7cCxIezszb0pgITYvJl8iUEBHPz1ZfnRZN3RWLCN9dVkkaClpJCM6TGQ4Q298YSJmNnJ7aURJWVBUKysqOiFqe1VbaGYlPj5hVjpTfTNvPWFlZCo3TXx5PXd4cWpzcnEsU2R3O1ZGdyo1JUZ7eVNd''@;'; put 'put ''OCZWa2lAZmdzYWY5Olo6ezhWcyN2KF5KYy5SVi5HYE44WDVLfDwjRn5VWkdtWE18eTNydjd5O0hseEllMTh1MVVEVnZ+PzhvMj1xNURhLF9bUURLY1UoZCFMWzsvaEdhbkAldCohOklyYT4+eC5WWWR3bVcxYTByXSpaeCVWLkJfLFByVWcsVGtsP25+OEVuJHw6Y0h8YUk5ImB9e1MwQThkKGhv''@;'; put 'put ''TkwzYV5UbkZbZGVaSUU/KXg4P2hzQSJERSl7ZU50XUJgNVhyXTlXPzs3ZCJUQ01rVngxKGBCWEUsZkI9cUkrKFRCPGcwKV05ZSJ6Q1ksOlNnI090N0MsKChIL2gmQUpHT0d9O2RjRUR3NH5sPz5BKX5BL0daVEBAL2hpWFJNIk9ySUFpXkFtSFM2dDg1KFtCbmZhaUZfP2hNQkFKJTFWeDYoRUNS''@;'; put 'put ''aEdle1F6IkJFQVMpVV5RMiI1RV88aTZwbkI/dHQlRV88KCw4KG9Ddm4iUzxoWkJtUWU+V2U8aGRCdlZCPV85Smk8WFpIVmQyUjMvNHpIYUJQdGZQbWQ0Z3V9Y28hYmYqeURDcSlwTlNqRVg4T05rbHhrK29ZakpwYH47Kyg9QiJiJVB1PHtlUXRkRXtpTThXRTMoW0JeSXR4fmxNdHopPUh9JFdl''@;'; put 'put ''OjEwK3VZV1FmcGxFbCtZdXdVZjtveCNSdWphTVVGe18uSTIrNlkuSyZHVTkjUj4oWGFOTE9lVEMpJC4rbCpYYXRMJkc0ITRMO0lKdzg4bSt5dTdqLlUzUjdMcEdBMjx2LzBTIiZpXkNMZmwzXmFuKzh1JmVuUmNmPXlvRG0vMntUampYeFB7NU9tbys+dUZsUTgzUiZMIUglaj0wVWp0WCRTd20v''@;'; put 'put ''SVt5SkV3O31AVWp5WHtRXkQ0Ui5Md0paJHhKNFIvTF5JTThQXnErYnZGbGY7N1I8TG9KbjdseE90blhWVDxjKUh7aEVEZj5rRXMrQ0MqRCk/XWFzK3h2Om1oNTUhNSJwWDZVN2ZjZipXIihBR3ZIbF9zKzN2fnBHZTdSX0w9S1B+Xyk5eUtBJERONXhkeld7QS9EaWkwa0oiIkE9NVFARHReQn1R''@;'; put 'put ''R09JIjtCPEkvYER0TEJRaEg3SSJ8QkhUZFpNdENDblRIN010VkJZbzZ5T0EjQzpPenwvYF4yI19wQmspSDdKIjkqPEZKYHZXMylkSFpUZSs0VyVBN0xhU2YjTkFsRUF3TFBPdHZCbHhNY2IiMUJ2ekxQT3RXQ2NrOTVGdDdCaDl5OkZ0JUJvNDZ5VUE4RG43Ty9XQSREQzY3eVZBMERLaTJbTSJ8''@;'; put 'put ''QnZQRTBHdH5CMSVOL2MiSHZ9ai9gR3RLQ3IjeW01Rm0vMkEvUmhgd1dvTSFIZWgsNzIobnZFVHFtO1NCZkt1OlI4VXVQSSlYSiwjamFEIWdDSm1IO0JmVXUwVCg/TlBFIXVDem8kQHhQTyksSnddTTgyUFApMEs4QCowSWltRnlzXV9yRDNldG4ldzNjRWUwLGwjUCI7KTRIeW16LCokbipkSUN1''@;'; put 'put ''dldIQklnVy5UWGEyaU5QJVF1NmRPLjM7NW5MMV4+VVFZPyNmc2dHb0wxfCQ0QHtFVioqUUldMmU2bktJeW52Q2BtRUU7VGNQX29EcGBUX0grLGlnUlhneGhTdylsNn0oU1ZmPzhLTmJvYk86VTlEVXYrODElVFk3YFhWP3VpTip+KGU0cUM9bzxbQykoaSZJKWN9WT5KKiR8KDBES006d2ZlVSFW''@;'; put 'put ''OSN6ZVZSJTJ1TmE3SGtnWSkyTjx3U1ElTE1hXkRDZypbeylKR0Z1ImolJTtsLiR5dV1iWk5sZ29YZ0UpNkgsKG5bdkhYLEgwPSVOKWliO1ZSRFl5TCJ3SVFIJVMmfUxfPnVpLEZidTszPk8iVldoZ3NbJCZUdit7WE9HN1lsRmIqUVkvYSxYdEZBKyR9fUx7PkI1TyozTF9DKVgpTVY6VFJtRkpZ''@;'; put 'put ''elAiNDpGV3ZEd2FYaUcleiVOKWlTMmpxRDV9PiNmK3l9TF1PQDI+Kz4+QSl0KVEsL1JZS29iZCU0O0Q/bUNtVGZiR3BvNmU/VVFoPzNKVCVUOjFuW0VDP2JQPiR2dnpvLkBXUWw/LEppKWsjfSRddW1mOWp0Y2B2bilsUXFHVDlXPypISGxLMSIkRHYpbFpKVDlhP3FJemZPOmRQPCRQdkptfTw/''@;'; put 'put ''WjokVHY2aixqLmFmKVBTdlhVOX5uOUV1Oz1aLyQxdjRwIXVXUVElcXVhakhQVDlPP29HaDM6bC8kIXUja0N1U1FSJTx1RWx4JTYuNi42LjYuXSROVi5MZ2EmRztuUCtDTT1GL3V6UFliQVl3L2JxNUc7WXZIPnUsZVNjVVgzSD1CKl9gdjNHe0JbSCxQfSFYN31Yfl9idklRfCNOPH4pVEdJdi5R''@;'; put 'put ''ZGxWa1IkIjRbRltZKUkkKylrQSpdTGJGKHE2OnU/fEZsdTdDJkQ4Y3NQIlFzdERDNjZNOF05dHR7TjJFS2xHbXZjfXYhWHhKRD0qWyIpPkwwYX5KeUA/VCJYVkcwdm9RKnByUFtoIUEwRilFXjpPdFFEM3omYTQoXkJRSlY1JmE1KF5CbmZpNnw5MnRSRSwoJmFCIXkiKkV7aTRZO2hSQmBUI3pe''@;'; put 'put ''UV1MOmJ1SS8lMyFPeml4NGNUdlVqNXp0RTY9a0VSIk5CRyEwa010R0NSVkg3NFcsQWxOL2BFdGFDP2JIN00iTUNeLE4vRGl0RTF4KUhHaVdGQzZYTFdBcUloJjVGNm4+Ql81K2lTOUI/ZUVWYnhZamcoPz1IT3J0XjJleW5leGBpSTg8XSwkKCorTjdEdFBjP0NJPzFjUD0kLkBUMVZjdXVTOW8/''@;'; put 'put ''KURYdGosRSomNG1ZbkhvJkpWUGNBIWV1fk4qdDRMYkE9WkkiZHZFZmI7VDpdRm1wSDJfaC4/bCxEVEt5dyloRHovdDYiKmFpMUEqbXZlPUpXdjpCKi9JPF8obGsjYj1Kc3Y2QkJgTG16KEpkR2VYeGpDYENsUm8hUiJLbDddQFE7UlYxbSFsaTRCVDh3bSNUOUt6WkRYVSlOREBDSWZdKG1qI2pU''@;'; put 'put ''fDdGWWE/O1QhZCl4ZlA/b1FUWkA0R0Zyd0xHe0NHXngoXyo/e34qeGQhYSYxViwubjg3PSlOeVtqdG5QSiE0VkV1MV9dMDQ8Xzs3K1V6NThnJWlFeU5VIW86cGFPb0cpNX54SV5deWIqIiszT09fSXJ8Q05VeUMxY0VlQjgkZUFQQWVoMlZwKz8lWENme3R1NiJnfTdUMz9DQmU0LnxweF1gYls8''@;'; put 'put ''OVhFOCNCfWQiaEpxRS9WKXVgTmxTWVgrdEZSbDEjOCRIO10rPnQ+bSVTNT5VKj16MVNLNU5ic3dPYlh2cUwxYEBSbDI6OjRPNSM5MVV5KzFpLkJbOlUyUTU+a3cpJXgmfV1TVnQ8ZjJrPkMrc3dPOzB3Jm9KU3IkNFY2N3A9VCV8QUA8MyQ0VnJHbCVfXXxkMDdociYlK2dkT2t5RTZCbFVBUF1N''@;'; put 'put ''QzpBMUdLXWZ4IzZEVmIyayZtcV1QPDdiaStLU1p0fUlyJDpGUzF3YmQlcDNjQjh0WT8hPGl6cnB5YmQ0VU5PXlYmQ0s/Sk9PMDdvS3lSajxhIjFCLnJMRjJ5RjQhMEZIQVp6aD8rMk1XWUkhKCxDOCpGbzVrUGVjOWhiP3Y9JVNWZSRxSkJ0UT1OKTl5RzFIV2BeZFU+NzBGdnB9TmN1IzJxS1VF''@;'; put 'put ''aXB3KFt7Nzs5UyQ/cWo4ZjclVns9XV1VIzsrNGJrcXAmcEkzPV10VHF1ViRGZVloVW1PYnwjamY0aVlwdy40Nz1VS0t6LE0hNj16KCphYklsRDhvNC55b0MiLCZQJUA6aWhERldJKUdEdCZhPnRFJUBwaVZXPXkqRTtHIXIyMFNuXXNbJk01RnMmel9uS1VCVFg9T3ovLnEmRlZobzMianovKTMu''@;'; put 'put ''UXlycHlXfnl5aj5adXlfeyV1OF4zS2pYKlNucHIkOXdWNzNFR0dwSk1FYXJJXzooJUlpJCZzPEJ5bmVuIyZNdyEjVXYoR2h8LkJBSCRAS2JYI2YiRkF8bnt3czpwcHNlT2pGN1kxKXkmPjdLPy4mYXxJaThoWEFTdiM5Lzk8OTJrIT1MQitXYlszTDtiRyFmWz0lUm46dk5AdzFnYll2PHdQQXBw''@;'; put 'put ''WklQOXYpKF9UUS9GWCk9SFBqKnBlKGpyW0taQmplJXBWIzVeJi5JZWBBelZhJVBLRCRiJGBAIiUiKV5qWC8uTF5BPm9JeTNJdW5PP2JMMj9+SUhgeigjOCpAbmB3cUBuZVAxUEtWYVFzXypTLCZtRG4se2VWQyNiOFRvMzQzPURsW0YlWHhrMXRAXUtlUE1bKTJNOF5wNComSkZyMUJDQ3dWbStS''@;'; put 'put ''TSEyQ2JIM0JtLyxqSy9wd1J+SSVlNC5iMndPaTliUlIvUXwmYV1uRz41R3ZJIWJjeWFeOkVvQEIlfnlXdUk8akVJdU5SeklMfENffThIMHhAZ3s6amA8T2doa1tnX21KS0tzdlBJJk9LXT5zTiFALklzXUdAXjhwOmpZJlIqSGNBWiZOdGMmbiRdLDsubmlZVndxfUlqJW4kVy5wWFRCbUdqc2M5''@;'; put 'put ''fSleQGRuWVRnRFtqa0FQK2hbY18+dF8vW3o7byY4MFVxSFklS0BUc3ZpQ3RHOzVlPlQ1c2xRRXF2cTEmanNtOXpJSnx3Jmp4JDl5WEdgel9oc1pPRXljZGV+OXAmdFZ5IUhMSHEjRDdtbndGZVVgeyFnVis5eTptK1UuQHRyZ1t+LEorUHxdIXhDWFV8Z0FDXTJqWVBDSStLalRzbTt6KlMrV0s2''@;'; put 'put ''PS4mS3xuOS57SnwsQ0lfPWo5czFoWl03LGszVXkvTVYyJS4sJn5hT3w3I3NbVX16PlJPfiwpJmJQMHNaPj4sS2osVCl8TilPIShvcHl+ISt9W1Brb00+TjdNIl5CfT0uRzVCX3QheSosdDF6TXx6VD9vVVt0IUI+ZlN0IUJlI2oiIUJEZ3s+KHkiYTRvclQpR0M+ISg0W3Axc25pM2BSMDNJS2BS''@;'; put 'put ''ZHM4TnROJVZkYn4xMCluQyJhTCMoR3ROP0xlSU5RdyNtM2NeeWElT3VSd0RkWERhVk8rKz8ralskXiFpa0tKSENdO1dpPC5QWDA7dE52RGRbKyxCTWIzPHdEamxwdFErLyVHSCs6PXRdUSZXTl8qZCYuUWEzPFp3Rkh1T08qaykkMXYjRjpsTmspXlc4LERSbnRTUT82ayRtM3pOaTwxNFZ4YTRm''@;'; put 'put ''Xm5qbmdURlsrRixRYXVWaTxLMXZqR3pMYXVLcHRFOiZ6NkkzcFRjKzxpUWk8Y15rQDlCOiRLT0pVaTw8I0IrRk4rLm00dkQmV1lEQCtncTtVdU4vX0ArPiRuM2NeeFJDMVIjbEtYRjlpXWdzT3phe2QmIS5uTDY7YXV9O3R1Vmk8XSReakNRLDomIS5uQFpwZ3g3Qys7Ym1dVXE2LD5Xfmh2SmJv''@;'; put 'put ''PGs4RFMmYmxGKkwsUWAlYjZNPT13WFpOVi5XMW9jMFBlcE8sJXRrQX5BWmNFYT8jXygyImU0U3B9Um5Rd1RvYmg6Tz9QXU0mQ1VlNWVZeUlZTHEzIyRnNHUzPjBDXkciMlEzajRtclkoJTNNWUxXSjYlSGtVN2FURFlmdzw1OjpLfVBiQSNaZkEjSWU7S1hpO3RQWXBneVNBUSx4Q3xJRGZ6NV1n''@;'; put 'put ''aEZWZUNoaFVTIzV7Pnc5YzR8OX5uJWE3RzwhUlIrRko7cTdNSENaTzUwYzdEUDV5Jnw6MCIpPCM0W2olZWtjY15AQ2pVOmZCTD0rMW5SZ1prOyxeO3VYamMhaD14dHw1fDZSOFc8T0ddL2NgKF58aEZ7cWMjVFpXYjQrfFRnan1wMmBzeWpoenYlbHNTPWYiRE53KyN4fC8/WVU8MXR8JDZ5L1c8''@;'; put 'put ''Nz1mZHp5IzNlPDV4e2E1Mm0kZmlVYkE6UmB7M14rdDQiLClKP0RNO1pbMGtRLkwlXm90MDA9alE3OXguUDJTYVdgeF8wOi56V0IhY3hTIVE6KyVUWW0sUEMvfTImdTkwQGNVNSw4YTt7V18jZDxXU3AwJk1HYn5xRTVIZXNeQjg0cnQlOyZjMy9sbzN4Z348RDNOOy9FYTlIODYkJGQjTVluI2Eh''@;'; put 'put ''TWB+SzkzIUNMMFpeZmt5L3A8XV0rMWd5ZkkxK1paX1FiOVRPX05dPDIyUyMwNmdKKF1aK3NgaVg1MC9JM0ZSKSEqViluPHBSamc9O2dhUXxMN3d6O29pPSU4T2klWFF3KWxnS0tgK1pYNDh6NX09QyZUZSE7aT4ydXFefEBocE9La2ZHfVJhIT5KKz1ZaEFEemBbY3w/bVBxTHdlfjhsd341SVFM''@;'; put 'put ''ZEcyfDhsW21tKGZ2QGtwNkAjckBbOixtdjVpN2ZVbi8+SFlsUnJKcDVfIn5BSV1sJV1NcDp6VjlaT2JVY3Y1fnJaJUd2NUhvd1dZNnB+VEJDelVUOGJ0K2FsUUVLcDp6ZVVxeiZ4UlIrbVl6RGcyOl5LSVIsXlQ0KFpKSktFUD9DVnpId2ZQOlJVMHdYYChUWHBTaXQkfm5eTkU4VGh4NzRaUHko''@;'; put 'put ''OiI8eytgYTVVO2MvZyNZYD9iJX1MUTs7KT5qQm97XndvXmw5XWs/I258UzZINVhdQH43Jl5LfU0yNnBPJntkOixUe3U5Q2t1ZlJaPmVYcFlndz57I0QoTCVJU0FsQSQ9RHFbaWEuT3o3TXJZSVI9MVcpZ2ZYYygkK251SVc1bTh2KVQreXVLdUNTfmgxTURhNF1qQ1RCJTU9NG1BQXMjZylUbSll''@;'; put 'put ''Ilt9OlR1K11xUThiIjw1Mi5YLDc2VEM7LH1pPlIiM0RHT1Rsfj9IIzw6M2UwIWMzMytdXiJDaDZaQF9IK1ZjW3I5dn1XfWRJQTJmdTlzQWVCOHBUMXchKV5DTldLPkp7fU5OXVhhcnJjQDNTKCFuZjQ2YWRUKDZ5UFg7bS5jeVZ7amN7aX1zJkt8S3xASzU+LiVmd1sqeTwiYEAjRFolSzBIJjJB''@;'; put 'put ''cXMlVGVEY1Y9XiRiOCUyZSEwV1JYeUM/S1FabzVgTE4lfHAjOU1VY2hWLFp5fXlYbkdzK1skLlRlKl1gez8zYz10UW1GWDJiOWFeeDE1Z2N6SmplZHFaN087PS5rczszbH4/cl1eW3wxczZDSXF6UiVGJk16Mm5CMCtEV1F9cHAjWEBnYTdlfVRHJWBwfFRgblUpWjosX1ZCfV5CfFIsc0BPPkUv''@;'; put 'put ''WFcvaiNkUlg4a2JlaFg0Yy5UbyxoWVcqZmJHOWN5W3Iod0cqYXMoYjFROWRhZjo9IWMqb1NwLipzXSFQc3IoX0cvZGVXOFcsLkZmbCpRSE9qSF90ZGVmN19eMSMjWW9JIigjKG57aDhbWTdDSGQ0LzVxNVVdY012REQ/Mk9IYFFXVSpCM1Y3KXtEZmJRRWZIMUIwWyYjWno8c2E2MXZeKX5FMX4+''@;'; put 'put ''JlI1VEBpeTNXYnlhYzA/Jm5gOHM6KzNxY2p5R3J9e1ldKHdPfFldU0ZeKjkoL1VRSXh8ezZeY0dzSTZ7LjNrekt7NnsucD9oVyN7PGNOeyV4QzRbXzFzY1pOQFIxK09aKlVmPTNtdFoyPmdVNztXOTpoMSVVNFl6KlhaeGF0NWVDN3QoOnFWOEV4KnJWYn1GIyNKcHJDXWtxTDBgXXQ/Pyp5I3Fe''@;'; put 'put ''JF1te00zYFh5PnYkbll0ci95LktxL1BeS3pCVVJFJlY9bXB6eVJYYG14THF7aV5wcDZ+W3JlSVNUTFdockxKcT10Q2ViXyFNdDtOYkojWHBCeUorLlo1SGskdzF0VWx4QjZnWnc+O1tCNzgrInFTWkt9aEZJVGF7PXd+MVdIQGErMWs/ZnZ7YXR9RnldbFQ1bSReK3FiN0piVFNVM213LjQwZkQy''@;'; put 'put ''I2grOmRzXl1gRm1FIyxtQjo3Yz01byRCXXg4ZEJjfGF8OG5geUQoVTtUaStteV1pLn44NXxteihpWVFLNSRKU2d7Tkk4QGNWYGh6Ok4sTF1GPG1ZaE9fbnZKayVTZGFmakx6PXlIRCEwOzsoMSErWFlSb05XQFtJREssZXo0TSJWY1pwM0YlTjgwPkdlZTpxTCFoRWljP1Nvb2c5bjkkK3Z1Vi5f''@;'; put 'put ''R31mSlg8TCQrbTs9Xk1rRzxkMyU7L1Bhb3tDaE1bd3hVNDg2azMjK183Sj5VO1V3O2c8L3tWQ0dQcFdUTktWdzBmVU8kZWd1cXJ3V0d9dUU8WDVzTndlVyNhWysrVSpMTkQpN3dSaWE2fj5aVX0kNkt6YnB8PFglcVo3SmFhXmZSSipEPGluekUleCRpdHpTPi8lTDNtKn1YPjtJeWd5Ri4uZmZg''@;'; put 'put ''RHZydmBvaHZbWzNUcz1Eejl0MiY3RE51a3NLfihTXV5zdkt7ZHMuPmQzRyw9PD9Ac31ic1BofHBHfWxKLFQrZSFoVCM3TV1vKXlpUDhkdDomITs7Qz5xMnd3Q29fTFNINXNVaHR4SyMoYSxfOW93L0w4VzhzdEMxOStCTGFpX2trO1dMNS97VXA9fDM+VXV5e3IwSHBDXTZLfFM0fUw0Zk98dCop''@;'; put 'put ''SC4qNiJoVio6fHx0YllmeCY2YVB8VEg0ZDBlTW93X1taa1E3ZGgmPXNIaDRbKW9gMmNYUiYsaWJgR2JlQVU4Q1RlTipBSzplMkJBQFZuL19DXy8maj5HVlFPfF5uZGpHOyxxYDJjbVUzMTtXdntRcWlZVXF9VXZ6PjlETnRgR146NGpYM35ENzgyJTNFYC9vZGVBVUxYY0JKX1gxYUpwMEdLK1Rh''@;'; put 'put ''Y2FfK3VYeEosY0Z5bl1xP1F9VU5NRCs4LG0qaWRIYWx+ZnkmPUVIRGh4WmhBQW9BRlZQRXVDXi40OHRFS0omYWMrKzgmS1A6QVFac0tDXXNGY2wieGJJc0tTaUBPeSlJRndPdWJkTkowPU9EK1Eodzc3LDl7TFBFdVN6OEZIakBaXyt7Y0JjRmVlTlA3JmdCXnxeVko7Ii5uJiIxaXNTXiFmcDla''@;'; put 'put ''OGFWWTYqYDciKzRVZU44ayZnOVA+fGFUPzBwPSZuIWdffX1JL19pT1Q0I2c1Zzhncn1MNGBJTlFNSCxRTjB+KHZ9fnt5ZyNjfXltbmIhXXw5MEthentWVzZmZXNZaytBT1Z8V1Z3fnEvQU9WfVdWdy5gc2xRVDg3PSZwLk9YRWRCM24jfWwrdz9PY0AjYT1DeEd4aGtYano5QGchTWxWSkB1eTdR''@;'; put 'put ''UUkiTCh6cSVGLEwoR3BhOyk1dF1nTmloRm9YMjFCZzpLP0IlXVFAZEhPNnMydThuWHtSP1RjW20uMHVgQXNbKkUhODtPbENfXkg1JTxUZl5eZDsqMDJTTEdFeFh+KmtUYTNhS05SYTA7QEZ9PnkzcFl3QjhYZm5PS0QoPH49XlEoKG5lRXsvSVFJfGk5Qj5DI11MRFE7TEM7N0pKZFA0Lmo6eSFR''@;'; put 'put ''WE0sTUpdOGhWVHU5YGZhbjFFV35BKztDdVpbI0dCSzltR3BZcF1ZPm5ENHIsSEtkSFFEKn1lbU1NISVEU1BlTEJNZDpPPy9xeUxBU0d8aylLJSM5NDRfV08qQm42LENNdWpASUt1ZzdvWHhKdXVxNiE1JjVQQks9TCxiLEZRWDVJXXddQ0k1YyEjeSZ2KmtdRHg6XUZRIiJUQD9Fe3VYfj9sbSN3''@;'; put 'put ''LnNtc20qMHQzYlFOZDJmQjNMLENXYWkjOiRgaEJhO3xEW3B2NXFGLnlAKEY+e2Uzai4xZjJWS1tiYVVYWk5lbktgIXNeOkkmWV1bKTtPSURpZmwsR3o8VHwkSWMmVy5CRzZIO2w2OT9JUXhBVDBqKjFbfShWZmlVOkc4TD0xI2Q3KGw2bTU4QCN2VilhSFlFLi5ncmtHTXs8Z2xwTmVlOFdmMS5L''@;'; put 'put ''aUBmd3Qqeno6PVohd2dhOTxxUHkpUHx1fGYjdC5zRC5kViZiI2wjY0xnOGRVd1tGP2NZZFVAO1JbRSNJRlk/dl15Und0aXA9OU58amciK3k+WSgkPGZ4RWgrbDxuSiR5N1R6PmJDOSkvcXRwY2MqRy9yOz1NWWZEbHN7aE1HMXQjSVVGRkJ2THRuUUhaaCErVntnK15lIVlpUHZzYzwiSClXdFpY''@;'; put 'put ''UikhOU0vXXRLR0QjSlosPXsqPT10JXg/Mz1IQXttK21KKCZdcl5pREYzfFFwRHlAdHt7fj0qblh3YShSOilfdigxNTUqUXcsQl9VfkpXK2IwPDY+R2wzRVhSKDlBM24+Y3EuZHpzaHFTQWdrNzRKW3BEdH1VSnUyNjJSXUpQXl0zVU5TSC9UYzwlOkM6SyUjbFdSckYwPzRHVWhXTnh2P3BHRTcv''@;'; put 'put ''YHQ6eyg8PDMma2ZqbTxANkclO2VDLlNwdzUoM1RLdns0ST1wbn5SQHk4MlVjfiliPWY9UHxjZ0BFeDVAJE1DVyo2UytqWywvYGErRi87OylkJVRQZUx0ZHZnU11QOUFxeGxBPmpEZW9BMlAzZjhMP19kXzp8VjY6M2U9X28yUzx0bEYlUjpuclVRa0xrKD5MWlVlMXlpdCZOX3d0I2hoOE1VbVRW''@;'; put 'put ''KXNuWlt9Syw6ZDhxVDl1c1Eucl1ePGZLfH55WVpge3k9MkgoNlNPRVosUTdpUUk+JiVTWjk5eShoeUxwOi5uWiI9W00yQEtjfUlTbWt2N2Q8Vj03eDRtVEBBeElZK15WV118eiY6dXk3Xjt+bFdkfEBLR3p5WXM5UnZGaXp1VjtoaCE/Kn5sfF1NeHQlU19QbEdkRi5ZaSE+eTckJXc9dy41LEQ5''@;'; put 'put ''bGspI2kraVIoTl9Xfj8ld3QuelRnQmBUYmhvRE1IMmNiRns3WTVxImlkbmU4V2VfTCRfbVNmfmU6PWVSK3toLj1qdDYlNjo1bV04d2EmLyorOiEkNyZKI0RiP2ZPeX1tLGwkRU5OZDs6aW8pSWZiRzw1cF0iMD1bYnYwWW1nL2dBPitbc0BFbzx9Km8lOm1WJT4zJFlaPW0jOVUkekBnJVohUHk3''@;'; put 'put ''bEt+bkpWK3RacHI4b2EhakB1SzdLOW8yN21Kb2dNd1o8UHV1bjRiaXpeLnxvU2hVLyUlIiRqazdlW3tSXWFDfHtdV3lbY3FwZCtiZH1vSFtwSDJbVDZ0QVJGVUVzX1tRRFA0YT86PlB7cl1JfUcvcnMsKkhWdzNKIzxGKDZYUVp4LGYucGJHM0FpRTVYVmo3M3VaYThddXowPUVCV2w4RkJ4dlgk''@;'; put 'put ''Ok8hTHdHPm9jeHxVKG5ZPTA3JFV9eDlNcT9Jb0E+S0JFQk0/NEw1NVhEVyklQzM0ZTEzJCFKbD5NPmkyKyk/byFNJj4+UGk7QmVCOHpKX2srVmt5Z3svPyk1KEA+JlsxPypOR1hgN0pXb1g5az4/OEFlbDkzVWZdbzlLcmFPR2QxZWwjKGx3czdpJng+OHpKenxBZSJPT18sJjJUaiQydDIua0ss''@;'; put 'put ''fE5EYCF9ayZSNDEsZkhrSHVUZzJqO3NobyoxXTtQXTphNDZMek52THVbYURZemVCOFhwPzpFXnpzJVVGXi9LSGFuUSZlbWQsRTg4MGNkT0c4TGUsWCVOfHl6IyRddGlvYlFWJXo7ZWpRKHVrc0FPXjE6eDxGP09ldGNzQDJofE5fUVUoOmRFfHtYSzhdUGo1VHouXnRdbE5nbHlYXmkuekJIN3sj''@;'; put 'put ''IUIqZ0ltWGZ0P2p+O3k8OV1Ka3h9b2smM2x0YlZsaysreSJGa1ZvVU5oJWhgO1YpYCsrZ1hkbzhYXkArfFsxU0JrN3hbQE55KWdJfiJSKGZnQmo2bWgueTBGZFcvYEpLMkJkUWo7ZkM6ZTFnN1clcXw0JTpGOj4qI2hfeytOSm0ucy5ScGp7X14+UnQoImVoRlgoX0R6eFsvPntCelMmbGs7WHxk''@;'; put 'put ''dVVrciNZcSVSLlNsaillT1AlPnF1bzRgJkBiZTxdVHh7MXs+YzI0SisoeTxATnlrZzBWclUvIkE3OFp0ZTl1L0Bnenc8YlQvaHp2WlZDZ25vW3RBRUt9XnB+WmJyPjdQRms3T3N3IT9le1ZbdGg1JUF9dlEwfTtQJVY4QlBxR14mKHlEelpjXjI9c29SUWxqZXROUEUpUGtpVX11b35aSiVFOiN+''@;'; put 'put ''UUtTXiVNcWtke1suYyFfYnMuJFhbJWA4enYlbD5ZMExWLjVUSUI1SDs3P1M+LFJXZ3FHWnRWZ3F9VDF8e1twfCxUImZVVnx9bGMiTjAwRF4yPjVePmg5WVc/fWdlNytfcTByWUtBfDNXZWNfM3hNOlJHUGBMNEBkVkpMVkZXM2VJQHsyLE1tIXtqZFtMXSR+Pyt8cVU0Q3U1S1Y8Nlg1eUFMX1t3''@;'; put 'put ''dlhaP0tCS0FJUU0ybC4uO28ybGBbfE4oNTQ1cDEkZ0NLRHZaQSFad3VjL1M7UHI1ZHV3LzBJcnZZJUJJJm13PDUrPzUhTl52ayk5MF5Pa3ArXmR0Zk12R0t3YGVPJTExZSQ/ME1ZSGN7W0xBSHBjZElPVnRlaFhBXXZ0bXlgS0pRYWNpQHlHPVRIe3B4KWYud29yW0ZgOVNdfC4vMDB7SER9OUNt''@;'; put 'put ''TDolbl4wUVE5TjghSjA0e0ZvX3FYdG8vaiErYlsmVlpXNzA+PFhtMGNjazdUaHZkTXZvRT8ydlZifTZJY3FHXjloQGNGOz5ERl9ecEFKQ05+PHwjQ05jUFBsKTojb1VnZjtfIzw9VVthN2BCRVIyOk89VDRBOHchNnF9P3ovfjxZX2V9aDpwJTpaWyl6b0F8eGc+S1MkOHtrXXh1Z3xzJVU7Vitg''@;'; put 'put ''LmQkSnw5PW5eQnxXaGRJcThGL090L0Zoej03cXlgbkxgcUR6Nm9EaC5BM2tFYjY8Rn1UaHRUa2pFYGN9ZFRlVj0mYkohb35sJDkvZjopdk1YVnt4Z3pyfG9Se0hAdnImOW8kIjg5VGtwOzJOYkFvMnYhaGp4cjVZXWlpP21ZaGl1MkI6YFl0KlgqYyJoITYxYnFdO0ohTGVYW0dUTjhXP04lWlBG''@;'; put 'put ''bFpgOm0odlUvSXNDcmJZQCh1JFlbRzQ+bkRRVHJiK21kdDtqNFVHOzovImspO3ptZzhHelJRQSEiK3FeRDhXSXlwV3siSDxqLEc0dT5iLlttJG9GZW9hJWIvbTNOfDksakt3IUNqaS5HOU01JCV6JTg9UjsrVkd6R1lAKXxxZEZ3IVdyQ1o9VjRma0orc1UjYzVOI2U4fXp4XVRiO1dvXjJzY1Ql''@;'; put 'put ''JVA7bEZbcksyQHFiYGU6S25xZzd7PGtFeFNibExtRl0xKSQpNT09X0NscW4meSRfPE9hQXhBYz5TSmE7NzwoITgoNTZJO0VmPFpUaXpzXWVIM3xkOU1IOTVjaiJDR2h0Py9dfUoqPSF6K10qazxeXWAvUSl8eWlnfXdoIiRpL0tAV1FsVGBxVXBLfCVbeU53OztOYX4uJG8yZ15Pa0Q0WVo2fUx4''@;'; put 'put ''blldWDo8ZC5fK296YFt5aX5yOiNybSg9WCpHZFY9bjBpZ05xMXtFMzg9SW1nOiRiZzAmZ08oTTNgWnE0UnxdV3d6RV9nS3hdMFFtWmk5fGJzSyVlZ3pwJC9nPUpJQyNnX3QrOnpvLzI4Ki5nZUF6ND9oVHsvJHN1V3E5Ojl1YFUidllaIUlIUm92TWAxJUMxXVlzdSkkZCghO2cyQlkkc0UjKm82''@;'; put 'put ''NTxgcTZlOFkoXy8zNnNwUF0zVSRQOn1xME5vbWIlI29sIypudlBQZmZUU1J7YFlaTm5SIThFdz9xQU9sVF9bVnclVjUlWzZWUzMiKEcsWkJxaWtiKEMxWHZWRlpdYV5OaHZkbE9deS9MaGQpM2o2RlVMTiwqTTRVfFtvdl97W3U0OFhGXzgwOGdWYUtXVGwzIU4yeEhxfSM9UWBpc3YrdTt1fTcx''@;'; put 'put ''RXRsLytbPHN8P1h2Qi55IUpvbjxON31MTnJSYEluRGUqRnpdZ3FoRnxwSHxWdmNBWE17ZixdZUh2NEZUVTI6a1ZXeGRoOl0jK2hlZC4jc2VQXVs5OTdjMnNlYX5EfkVybUsxQmIjI0Q9TT90en5BcU9uSXtzXTxVenxPQSJ1bGZxXjp7Rzg7OW9EKT9McklfUnU/cGhNOV1ad353MDRULF92L315''@;'; put 'put ''YWc4emojaCFMfjIsR0AqPHsxNk5vOHR2XTVqVGU1Mn1OJE9LNlZUJDl7RShsbmtybTFMbSROb3JtOjhkLisjLnFyO0tfWCUrNnRuMjskeVF7VXkoQFs9LHJxWGJlK1hTN0NwYlB0fTtnKVk1cyxFSW9+UyEjNFU5LDJaRmo6eWhCR1ZtejZDLmYxdTpEIWA9IzRyJUU7L3RnTT9CJmJFOE1Ydypz''@;'; put 'put ''bTdNPys0e04oZik1cDJdUGd7Nng6W0xgUUBfKm1kSmFtI0tSaXpxMz1HY3pCc1NAKTJ2RV9IezEqNj1neHl9MWVMM11iZ2V8Y11wLHE5U2gzZ2JLWlVpelVaLkdERzVBdz5+cThSeTp+PEB3aj01Vl5ebXp7TEJpfkYlO0N4LFhhLld8bHBBTTBYPmtEVDRVRE02dExvTWgocV4xX0p+RWIkaEZo''@;'; put 'put ''fEJJcmdaKmpAX0UwNGB0aVRTUXp6TWBDSSJrJiRYTTFYeDNZWz48ak17aE5hRjR2cTo9JTpQK0dtUFZrJFswYk5INSU8KjR4Yk53WGB1UnNgIjY4RkczUXorclcuOlQ/IlUrfklkXS9PezQ3MUtEMStBTEwzXW9FfSR3NWl2N0hEISxCK3p1NHBXQFp4RngsWSp8cU0meklSQnl5MUYrLCx+cTso''@;'; put 'put ''QXFPeWg6QytJdiZXdTVAbjYhRGdsdkJHeiNSUUdZV3VyZ3klV0c+NXFAL01NeCR4QWhocXZuPGtvaFMrQEQpZmJrT3RmMH17YElHdSldP3o5cXYlP0Q3Lz1QXipxNUx4OmtHbikjX3s8PEYpODYvdSE7WlU9UTVfSWJCV1VyI2BgVFdSQHtHU3EuYTBnQ2FwUGYkM0xbRHh6NT8jUF9DaWJAZUVQ''@;'; put 'put ''KCElI11ZSUwrSS50XU5+JCM6QnNWZn5pKmp4PDZGNmElLzpLU3dNPWMhflp6MVN4eU08ZXF0JTY3aEZedyg0OCJxXU5EPytfd2hKSEteYU8hejc9KmBDbVdCY1Z+RDc9Iz5TRzxzQ0VaTkNLMGFAcG9IUT5jZkhuP2FGb2w+aTFYNzU0TnEkQUVBcjFxPDE4bHJ2aWNmUlNRTWRyKVF5UyZYKHVN''@;'; put 'put ''MXxnNkJHaSZ8SURNcD9hWioxS0o0RGByKEBqRDA0TEozIj5PQ2B6eHpqTTJOJGApUlIsLkdTITR1diQ3fipWU0V5QVVgVmIuUVlBSy42OklCVUd5MTpLXiM3X0AofC9mSnJxMTVDcDA1KzUrNGc2M3V2NFR5YlNeWWk6Yyt2KVBWLlNSaDIxTmc1Pm91Q2RJVHdBZ0EmTFF4ajsjM2ZJSyE3OkIm''@;'; put 'put ''fV84NDpsSm81T2x+d3JqRk9jcGtmW085PSYudyZyOl8iR3B5dVhhaGIkSDBNOkZeRzUwWWlVanB4a0pVQCVuPXZpLjFCNWR7KyVJaDlFTUFgK2Q7KUtDc3IlSEFYOGxpYW0jSTtQYj5QXipLZFdGOk9Za353ZUA/eS4mMXdDfCs6IUZMWz8qW0kkYTEue21bViZjNGx1NiIsaF1VbiltMT45bEZW''@;'; put 'put ''U1dpVjg6MTx5aj5XV29sP2RtJFUkblBgb2wsZi94Jkw1eCZsd3NCeCovdGdPaiRYPzpYZ0lfRz9gKzVEYSluVVJMNEpNNl5NNCFuMV4xPllfTGk7QilwNiVjMjdUa0thWGQpZiE0aCwlPiUmLFYiZ0NiI1BAP1RqKVgjYWNsWE1fPFI6QDxIZWg7RnRLd3ksZnxgQ0s5Qi5Fcy9GfD1oXWN7PTo+''@;'; put 'put ''MVVdaXYycms/R3JUWiROfGYxPiN+UzVDb1lIM1NfW2c2SV59dUFTSC5aWnZHQjIhfEx+dS9CX2ZkfjhCRSFaa2I+Rik2VisubGtUJSZkMz86KUxtdCZYNV50VU8wXUlvZSxFJjorJXUvLntHdGNnI3NYanldSjJRKzRLRE0lMnpMO2wvJTA4antXWmUhSCY+fEBqQ2AiVjNlPWImfmplKDcuPFo+''@;'; put 'put ''MTF1O3JgJTNCbztMO2ghfGUsdmZfPkhjODBPXTdUUW12XUM3bFZ0M2g+XWNhZnpvRDl4JCojc2h1LHpCJX0jeHVsUiR1O0ZwQmVXcjtfMkhmNUJ4WzckP3BYZzFMcGxSTHtZXk1DVzR+M2tvJnpmd0NiQn1aSkpxWSYiWjFWdCVMfX4yNit6LklGJU1TSzdaVHZ4Qnp2UVZvJGReVVhTfUAuPjhu''@;'; put 'put ''SmYxY3pQRzFSS0ssWmA6SnExIzY6T35RWFg1SVo1VlpyeSFrfiU3OGc7czB0YWNKU1B2QXdkN2RLaVViWDwhTXVVMF9bNlooOn48X2NLZ1ZrKkZ7MDg3X1JGYSZnUm97TiFkJFY6TldCKyozTGRpdHttKkBpOnlvOW0jLDNOa19jIyM/d1FDIVouRzhQPWZOblh0fHpLRHA7fixNJFldSGVCOHBU''@;'; put 'put ''IkcvJTB2dnJfJG9nazxQU15MTHE3IkdBTjB0TSlLN2QrNjNwKjYzaklzP3VwZ3U9RHNYS15hJGMjOFMuUmJBOGtNK2RlWGhzXVpuYVA7KHwld3pyWTxTek13ZDt5Znc2JWxXSWZ5azMmVTY0Xj8vTXFbdmIlU285S1U6NFd3Y3p6UkNRc1F9UEA6VGY3ZyVTdDpFb2ElSV15b1E7SSQmOClLMTl1''@;'; put 'put ''MzgvaHI3UHApMFI+a0BueCY1UyhvTm8vJCIkWTV2Jm4mRmo6N29kQW55Lm1sT2t9RSoxTmw9Z0dCRWQjWXhiNz1ZdkwoRyVAfmpkdFNjVio7SX51YGZYUjt+PTs5UWJvcDN5VXA6UV4xZzBbcmwjN05yJH5wc31gWjpsREpfaTpMOT5ORkp9KCVVO3c+KEJqSns7ODZhZCRCIi8+UzhkYF59UEAw''@;'; put 'put ''fjozeHQwP3VSOlgse0c5biUyQGFjKFtlPyVgdSpZbSNSTUJTV001YXtJfXQieFI2fHFkcCo8XkhjRCtJMz99KXQlfnBZPTUhUjZQWi9jOEorLyxiMHdwYzg3UDBJPSZvPk54JXR3UEY9IXVndWBsZDYsQ0BWZHtEV3gmeHRYa2x0K3UwPD1acClOfSldeXpyTG97ZmRScWtbSzgvOFZAZFgjb2A5''@;'; put 'put ''PktERnt7NntqVyt9RFE7WTsuJCYiRntULD9kTUAidUIvQkREaV8yWndeSTwpV0g1JW8/VlcrN1RoVCxlWCgoMm8mdWF1dX40US5US3wuRjZsRUlIYV96PzB6dyZnLyxdTDt7bD1WezhGYHM7K31SSUo8a0VqKi9LZFJrLzQycCVaa3tzXyVsWitMRDQrNmJ0W01YZUVJZDFxbls5WnZhY3R0aTtj''@;'; put 'put ''amwhYW8xelpubUx6UHxeKmxFIThbY0haaDo0NS53Rz9yMzUoJUxKfTUsYzdlSytteVdkWT9jNCFGIm5PdWJIQW5ffjJuMUxMW31LTFhmfUxpOioyMzxaP3t4JT5ZMGAyYlpvRjcseW5PS29IJnx7eG9FPko7M2B0IzVNQlBoMiwiQzBXUjpxU0hwaytEZVlQbDhlPGoha1VoZEdgJTg5RypIQVVv''@;'; put 'put ''UXMkVTg/RFpCITtsWXNLXm95UEFvSn4+OHRQSipue3dJPWQjWWBHe3A/Pzk1VXgrdzkiTTRxbHt0aitoZEZJKWI7T2V0PjZxLj9UYFtBZExsJDZAI3RnailjJTttPzRQYjVmcERzSEZTSEQ1ejghS0tKQkYpOChLTmBkPT0vRkh2ckEwZChIPHU3InRdWnVSQTgqUUlnWUtSUy8kVGNUc0UsNF4+''@;'; put 'put ''XUBkSnNFSUJHfSkvVmpucEFMby53REg6JXAmWDQwOVkrNjBKNkNyIX1acjNnOFdzIVl2aHRvc1ByZWVsNXJXLjUyeWs7WEQzfSZSakcoK1pKTDc5dUlgdHF3TFZNeCNjfmd3RSw6VmlDUVFleVY0OnV2YC9XQ246WC5eQ25kfUZETWNYK0ZHX30pOHRTXndzKU5nPDo9e2VRLn4zXlRjPHgyWVZT''@;'; put 'put ''bn0ybGM5d14rIVM4a0xNWHI1MHRRXlg4a1MxKVV1PlNGcmpeKVVLOzd9YHJ0XVBkdDRVQG92SU5AV0JzXT5bV0hlTEkzUF4uVVZEKXcxbiMvX253ejdYcEY2WlpfQjZDV0A6dE9NO1ViOC4ka3dIZ0g4fEUuRHlmUFQoPjd4PFR5ZlBNUWIsVj1Qay9naSI0ZTw6XWFgSj1AJm19WEQ5d2kqIlQo''@;'; put 'put ''RztoMSZ4Mjc6Zy9nY15nYyJmPEYxXyNYSnJlTDljNFpzJV09XTducWFqRlFuajgoSjcjekRpOChKNyFHeDNFfT9sIkdDUFE5USZ7L0h8UCFqTHdsPTVYMWt6eGooV2QoZ2BwVGRDTzQ4cWdhW2g/ITImUHJwWkd9fHRBVDxmLFQ9QHEmLDU+MyRIbkM1JixRTV9WJSF3b3VGUkk7ZUYyTWNUJV8z''@;'; put 'put ''N25UNmFmTjRwKyF5VislOUN7PFcjY3U9eGJRQHVsL2xdJU9nNExHUEx5bD91K3JjejpoWDc/Wk1eejp1RVVYRiRgKVM2PW84I3hxN11Pa0Rnbl5eYzFsfld4XW5daDs3V1FnVW14dUVXLlc7fnhgXnRKTlE4MitAY2dJeTV6TWM1L3wrWHs8Q2tVW0YlSC5qcSJ9bUdxI01PdH1sYy90fDMyKmU3''@;'; put 'put ''WjEyeE98b1NnTUZ+eFspNWA0ZGBbRkVkY2ZiUEwhOix7WG40MXc6KFAoPyRKXXwreigsSVN7bng9Y0MoM1opRDNtSFNBOHdnVGl6KEJ9eU84QTg+JkUxfE0rWHFPcFk1Wns2STs9ZypYZUI7KTNmN2pbTzEvNHQzdXZANHQzIUh0SzkqZEs9QE1BUTt0aWM4fGBOKmlBMFRkLiRGPHw0JWtCc2lG''@;'; put 'put ''WmwoeWU/PU53b3ImMEJzajkoWT5QIVVhfCtJPSRyNjgxRTJVdXAjSHVhS2pFLl5JQGIvaFZKJSxVRCUoaW8kdSpUWERVdXl0SDw3QWV2e2hGRGZ7dDBfLCZlQ3ZdSWprJi58RnhyW187eHkzbzYkT2AhflAyRlZmXSpLVGksV1tDVkM8cWZIX2gyN3MqKTxXLG0wU2RHOjJOeWJ+fCl7c3lkbjQ6''@;'; put 'put ''VzpZRnZwbzxlP3x6QEB8XllFYHhlcilzdjxsXXhONFFxUj5IbnlTTzp3MWMmfFFoa3k2c2M4dGw4N3xgU1ltZGVqSTxUNzQoSG8zTmRwOzt7OjIvXjEzMXxefnFKNVspeWYma1ZULmxJZnlmdk5CTGZSVlg7IlUjO1U6bXF1YSJQWDhbXzZlTUkwSVVDQFpYY0VgeCxVR0BGQnwzIlpvbz9eJVpi''@;'; put 'put ''SDwmPSpnKCVaI2RhaFF1VmRuZTY2ZzhxRik1JWVgS1BkKkNdSTgxcktKeTNteFVBS0plZDoqKXsmNDZNMU9mZDpyeTtwbWVvWEkrPFJCOGReMVNVLHk+eTdGQEgoO282O3x5Jj1PZXM+I1Jkb1NZbTsyTn4zOVRUYWwyaFZzOVNid3lzMig7Mk5WUzVeOWt+VSxGeDEyaS4mZ0VkZzdAbDVIVW5k''@;'; put 'put ''RWoiQTZRKDpYaztYUylqbmRwZltfSFJeN2I5Z0c2UGxhJSQ/YFB3Y2dxVy5tJCE1ezgoWlR7YTdFT1chcHdafVR0bmUuUzE2Lzp4czttdl1IcSkya11GTGBIWU87IW1GOCEpcm0ha0xuUU09PFU2RzhvO1hVfTJ1L0Y8dG8pWyZFfT1pZSRYQGpZXk5AIyxePWNuezZrb2d+eVouJm1OMH13NF06''@;'; put 'put ''Yk5rVF1BKFoqZCZ8SiNTJGY2YyRALyRYX0lVey5taD1hOTpNYCNpNGNYTmFvOldzSCZmOHI1ZyIxSlAmbiVLJk86ZjM9aSssajxXQCZKWmdkMFQ5b2d2dDk1VHJtaiNhOlFMYEhkcy8yQTV9bl96N1pjcG04eEtlUTpwbEEiTmZhWHkyRWVGNV82Ykx5XTpGX1ROW3d6QmZhaVlBKkhzVTBqI3tA''@;'; put 'put ''RHdPfGQ/NVlHT31dKm5NKC5JOFpEQzViTTg+aTF7Tm5+N1NyU1cmTUs/U09KJD1qfCkzeVRgbiRhKXIpTDNYfENOOU0zTyRyMnZHKDAxMiNAXVB8SGFSKCQ+SEtdTntbOVRYfS89ZiJKcHMlKlVEZDY1RTVjYiplOzQxcWQka0cjbDtHYkt2TDk+SlB3dkEqOkJpK0hTbnRiKDtRN3loWCZweWhR''@;'; put 'put ''N3x9RDdrbGRDIys9K142Y0V8K1ElI3lTNTJLblY6bkRTdjghVj9ZNFJdOGUlQVhLJERaQkUoJkxJayQjTkx9W3Q9W352RWcvKUZlfFJBd0d2KjBIMEp9KWcuQmA2ZChYRz86dWVNel1US0Y4TCIhRFJRKSQ3QVRTRCxeLzpeUkdZcmBpaHZNMXxlTioyazF7Kns8d0NSL0JwZmldSUIlOGVzMTVU''@;'; put 'put ''Lmo/I3k1JVJ7PEUyIW5yVlFAWV9YWWlyYjBlQXtRSk1SaW9vdk8jdTN4WXo2Oz5KUUY4ZSUudUs/fWVAOWhtSV5dWk5VN3ppJHFyS0J5NUNdNTdTPkomLHlYbzlkO0JAfjF7W2swPTgxbDxnL2E5N0pPMm84OX1OZmRiS1laNFBMRlFEIzhaQDBYNDV1diVvWHZTWVkmQmRUeT9AdFJjbDtWQVV8''@;'; put 'put ''MUBlKGhdaTVYYF9RenA8S280VVV9OWwvZTpkb2lGWi5TMkNxbUJWdVJjbEVLOiwwWDRqQUZvW0hqNVhnWDVLPV1DNmIxSitybyoxN1NxRkJ5KkM9MzE0elJDUTM/ISk5R0UpMCxsY1V0L0B+a1VoRXNianBnZ3xOWFhTZkJQJX5UKCo+OGJpZHoqaXVSPm5gYCF1ImEjL1QwO3cxcGJWSX17ZHMm''@;'; put 'put ''T0cpPFM0KFZlVjNZc0QzPS5vdlFKXl8wKnwpZTtII31mI01xR0FfYSp1Wiwjb1lDQUlsTVU3ZTZqeUZfUilQIT95bFshL1F7fnFLNXdhJXtVQHhwOEI3NH1nekQwfHsicWNNWkJ+QGw2Lzp6OWpSV118OTBGSSRUe0Y/dF5Vb2dEcHVYRG1qZ2tDb2xuLzQ6QnNAdElfS2A9WUhqWE15P1ZbeTg5''@;'; put 'put ''XkZ8IlBwci5NO0RxPUZEKVJBe3Fee2k0SnpNUX05U0dRMDZiKXVWXSlZIUpqbHdwbzI7TSgrPW9URn0xN2dxVkhbTEM9UVVxJlYjUGdUXlJDT1B0P0txcCsyVz1OPmBBVS8pcSxhMTZEXl1AQFhJezpYe0ssWU1lXnQmX0pIVSxNeT5PVTA/dHx+YTIvTGV9fDkvWHdbNHRHYGVIMjdJKEt+X3g/''@;'; put 'put ''Z2xkKkNzd2hzR3BVbWBvO11HRjspLDpCcGcyOzlySD9AZFBVZS50Z2hLWGBsdiZvVmBQW2tpSUtdI3hZVHNkJVFdQitORjVRMWVKRjVPO09kM2svVDFIYk9JSShyWnxmR3hvMGFacWRgc1hNfk9oYTolPk1BZCVtMkx9UDZLWUdRNkE7YGZCdWxFXjlaKVJzWFIvT0d0TDkqaWl9Uk0xOi89VGJE''@;'; put 'put ''cyxHUC5pcT8ja3NXKVddRHc/SXFMZj9fSHIqNX0kYU55NDg2WDVtNSVxaW1QeD1iOSJxWl9MfkRlUkteRn1eSytIUGV1QCwwTnZgUGU2Q3hSOFlKYFteOlZWWltLVipsKVBraSpLfVc4fURwWlYrT181dGFHeWJDUShOQVAqSzVJcX0rTjl4SFpUa3NfbDJmVCVMPUBMNyRENDlgKD9hX0xTZlAl''@;'; put 'put ''VWFTV2ZOI1A5fD8pcWklRkxgYWxULGhvfCppN3ppeCZZJVhnYGE7bTJXbiNtYVpMeTZhOUUub3pAQDozKU5vUC9AJVpWKlpAWDY+QGw/O05CYEt7fCF5TCRiU2hYTUVxa3hYYFFLPWUzVXteYjMmK3Epfis4UGk3VSUuW05CNV9TbzB6c0BgWUU4ZmRhOUhadSU/dSRKJWkqMitLdm9bPVQqaCxQ''@;'; put 'put ''PmdqPTZ2LkRiIWpMfVErLzowLFJoQ18pcVleQnRGNSIlXyszbGU4fTVDRWZlbF1zbUwoR3BteylTNzBMOWE5LmtSRTkuJGY9d2pecSw5VEpzayZken14Zk83SG9VbUZZJXNeUEplNXRiQl0uWmlqPzwmI0siO1I5QD5JPFljRC5hSGFfbzlHRjh6bSx5VlFVTUtgNlp9QmNiJDF6UXE9Zk8lPyM3''@;'; put 'put ''VjM9X1lmIUo9ZG83RVtDRlc4ZGhXQnR2MzpsXl58fjJEbHtjO2NPXXNfbUhUY2I9T2R1OlNAYF4rTXo8ODAlJl55XSY5N0s8a10vR0VYKj1EdSRRXTZnZUEhfER1dVhDRXY3SmsrN2ZuRGVoLy5iRmhYTkwwYVhAT1crNmQvMFZ1Q2llejpjMDArJnBlQWNdVCVtemojPypbVDovV2BZLEdwUTg0''@;'; put 'put ''SmN9N3Z0VmVrNV5nbitBW1ZfeVN0dXJIZSpdb0clPD0pZC56QkJuTCpWZ3taV01CXSlaKWxIdCF8SzxDMkBwXTApZzI1aEMyYVBeQ3VbRlJeRlloKEhYLF50YWdQcUxNbX1vU3V5PmhFJGFUT2Q5ZXhqdz8pS35YOWlrOlczaFlYU19hdkBrUW1dJUt6alt2MHI4fj9LIyErd0YxOV8mO004cG1D''@;'; put 'put ''SShdP0BDaDYoTXc9Z1hTVytZNnlWelI1ISsveX1RWTw4OD1uSUVeRS5lLigjU0R4Y2t3ZHJiUCMrN3tdJnFgP2tDO3YialJAIXcqQ2Y8Zmg1O2lOUSZrd08sKXlEIiE6NEhpemplVXxrXXRTJkd5MiglJSV3W31eaUVxdVJIMXdvdT1eJlZyLCsvUnddRkFTdjxWSUF9fUhBfTgxV3BbWyooOUxR''@;'; put 'put ''Q2JSQnltclNRPDs9R2p1OCREfnVZZHtAI3Z8YCZIKyU+RH40O0FqW1NoOio/Yi4yI0BdQGZbSkRvdH5XTUY4KGwrcHNZJnE8ZU16KW9TZXdCV25ZYHs4P0AiUHFZImY9Q2t+bltwTm8xeEMlWyxNMDt+MGk3c2Y9eHxKPVtBcDZbJHRscip9WyxWMSY9VnJ5UlYmejl2VWxUbUo6UD53bzlAX1Um''@;'; put 'put ''bio/XzlIUDJYVj9SKDp9VU1VZ1hYeV1jQ1ZZc3cmTXF9bVUrKkdvSGtaaSovYz1uYk9gJHojIUlyMl1lX3chMiZkOWpIQzt5NXZmSVhYR31bRyM/V3x8e3B9TnE8Om15QktvSEM0djdONTxybU9oYyklNmc4NW5YaTlTYl47PipmcEU0Yyx+SHAkY1JvME9eSjpNW3xOKDV3eVIkT3BZNWwvaVJe''@;'; put 'put ''byF4VzVrbH5RSjJJMl1GRlcmWTNTdFFBITxAI2FPZlg4YF0uaz08Mjg+UyFaVE4xaVhqfEtyWkhdTnciMiVkYEdwN29EXyxBM3dnY2VfSlYsXnliKGhaNGMyMCNZRSpnNUlYV0lDdVJBSEVlQWx4am5EP0JBKnM6N0pPeDdlSkltMG4lc2sjSj1peihZODsyI1o5LFZRVnl7OXhFLmc0azBMOEZU''@;'; put 'put ''W1NQVCFkZHc3YVVRTiQ+LkB5dFQ2fXRdKS51WCIpV2FwZGpPLl5iKVpzbiZXP0ZzNGBUSFBVYGs/X2Y5aHpPfEBPMWUvLz1uSDR0OjdkWVRYcEtIMlF8Mmh9WVFIbyhAb3dKMk5ESVZ4PVBkdmt2RjN8NEpSYFlkJStINCwyeU8mOXxxLHRWOSxQfWkkJDVYXj1gWztod2RsV3cySz5VdV9nZEBs''@;'; put 'put ''YjF1NX5zem9ZcDNURFUuIXg/MzE/dTxEM3gzZXRWPUglVTs1RWp6aUN6IVtpfTMyPU92UiowT0R7dDoqS3J0YDR9dTlWYUouR2BTU1E7QSl5QHEwWCFAVGhJUlNRcCMoPVBHXV9DbFkjWjpuInFJVjBYPmVjJXdrNUszPmV8VXEpKlQmN1JeRig4V2Rid1hpN0goOFZYXUkoSDwmd3JdSHYyUFVT''@;'; put 'put ''ITZNfX13KzQkW1suXzZBJm1PY2JMNk1adDpfZ0dzN2hsMnBnSjE0K3c0dUxQczJSKyxZW3EpWkpOPHJYUXJ5dVAwWHI3VHhHSSFsOkVVYkZCWTdEN0U3VnA/JnZxZzdXeHkmN158cjMiVjtlR1lhX017TX1aeFZQRFdpNVNfKzN5N1MpMyVHb0NXS3I9WE1idDpCJkYmQFY/cUNXQ1ckZF9gI3Z8''@;'; put 'put ''Sm1GYC4uOnVPP3FDV2VYMFRgLn0+UVpWNmlzb2QrQiFpdV9Mcm07SmsyI2gjZUpCNFdlY15gT115dkpYZkUvUjssZmw2NFUidyxCN1JHXnFpXkQ6NjlMN0doKjxVWWZLNVI5UVYxaHg9NlErbV1bUndqcUZjLkgzQi81OyReMyxZUkVUdEs0OXx4bDAyQHRSey4kZHI+Ojgsb2xdMlNAbkojNWRJ''@;'; put 'put ''KDU8W0tEamNAd153fDg/V1JyI2dpV2d1QSRRT1FPT35KST1oQWpQUzxoXilSYztmNipXcG4iS0k0SH5KUF9GRlB6SV1sTStpbEUoXUNiKVp2RHQ0QXtLNHNxbCJLNCxaQDc2dWlJUTBkQ21+SkpiZ25rSExMVSx5c2M+TV8kRWJYMV9GWGsvP2NzZyxWOT15ZSFBK15LMn14YjFwMEBpaXQzNlpC''@;'; put 'put ''b341QVVUSEc8R1Y4dEB7ezRQWHFgJUY6QmlKV1R0fUwxMSk/OFZJYlImTU0oVmRbcGBIUnM2KUZsc1V+PF4pUXtmQy9GVyk6eXYzKk8zSlA+QXhHe3J7RyZ3eDtZP2dLQCxUbXA0JXNMKSYiQiZNQmFYNXR6TEckbnBjVGpYNXEwWEc2L048ejckVTkse1J+K25EQWI7eWwyO1BsMjtQdFkrbXk1''@;'; put 'put ''SFU6MUs2OEZBVm1XdkwrM3FyKHR6X2xjUU1nVl96TTkoX0NrK21WbXA8bWpaXTFpLElTa3gxMGZdJFY7NmFQcDk6VVtvYUtJO3tJLmlLLkdxRXByfXBWe3lNNzFLI3BgaztvaDBqTXdIdiYjOiQmVDMxdXZLMyVRQnlrZkEjaFhVd3FDaEB+Rl0xRV1ZQGFSMU4ocUIzYUBzYDgrfEB9MSZxVmRh''@;'; put 'put ''ViFLV2ZwfnU8ZjxubkMrcDpNU31FbH5PMXU/emArSWQsS1tCVUxuMWxYRm8lLlNmUXouY0d0S2hAfkZDJT5sdUd+WHhYWlIxTkVAJnF5biRVX09Bb3d8dDY0TSVDNjNkeWhFJnN7NT9KSnl9YFNZdWc3NW9OWkJDVTVYY0FrfkNAOWhFcy81cVp8azV4VHo9N01NYXVeWyt1Si5ecSRae1R0N1Mr''@;'; put 'put ''UVZQYFRVQGE+X2J5V1pXYl9AJnxGcntqYWN2cXtpd1I+WE9gRGB6dkwrbkgmbmhWe2pmQEZAdCZ6LyopNTVvTnJgM2dadiE+QkBVc3NFNDd4K0V8a3NYUS9naUwsLkFGNlE9N2F1WCo8UXh5ZE5vSDRnWyZWOiJCfjF2Um85cV8iMU1gdGZvM1lrUzN4eURWT2R+K0FXdDNWVFJ9aiglPCUuXSNq''@;'; put 'put ''eVVsIXBKaVhGWkMzbTlDa3VudSlYMWxsaFE7ZH5YOXFfJWVySTBmZmNzOHZELlgidmZUR0NDNXIwU2J0fTxALDQ6IS5TaUpkU0ZIYXhyRG12ejssTWEsRChjN0I7USVtY2JPMn16Z2RnSUVLN3FaIjhhS0BteEhjaSE+NF1mK25ERUg4V0NzPHF2bFtfayl2K0EqZ3ZaXWZ0QkcuMjVxNmJ3eipi''@;'; put 'put ''aV41WGhqPTAhR1NrQTtfaWlycm0oQCMsMmR0Y1JXX2l0Y3RleWZgP1AyL1tkY1pod1hrUWpjY0Y2WCU5cn5DSiM1TyJkNitmb3BFPiVsJWQ/eChwZldtOFZUQzN4d2NiZkh9UDE7K2FTajhPOjdKVGUzKzg1LGglflR+dEx8RzJ4KWFDV3A2Ln0/Sn1EJXc7P20/XSFqOGROYDNPQjJwdklCVk17''@;'; put 'put ''PEJPXTJPLkRGWGo7cGdYZ0U0WFB+eStwRDhkYW4uOkFsWjN9eS5zWkBXc1tyZmRFbWRFVXYoc2Q8W1dWYSMrKFU1NHB0S1ZCY1RyX3VCcldDNV9nQWEiNGd4ZE48SSp6e1oud1tJb3xvV3VFSUV1SDJBe3EzWjowNT9NTihtVi5TaD5OIVR7cGdlKkNeRypncWksKFkzTjI0MHcqeDh3QG82bUQz''@;'; put 'put ''VUUrc0NXPyU6TnpYZnhydnJWYn02ZCxnO3U+VExYYGJMQ196aU9deUNATjVOdXl8KUtuMXVHcEF7Z0l3ZVg4SVJJP19MI25vWkxqR2VyVWl8YmxvWkxEK0hXfGVzSzd8clYlY2wqdE1nXXJGK09dPmJdK0UrTzBJbjB5SXJkLHVLZFhYMDxlWkFWTD8yVS9jNipRKD5kMkJbW2A3SXcrRCVLX0xs''@;'; put 'put ''OGQ1bE9ANjBPPVRrW2ZPOT9pOjZISkFMXyY5MmpkdHglVERvJi9zJjRJczcocSk5Z2xWPU8xP2FGVSs5T2F4RnFkJSpZTUhUaUt7XnV8PnYzIlE2OEsjOTRsSDhwOi55SFBpa2IjbzA7JTZqWnd6SDttKDMkO0Ezd3pkd0R5eXtiKCg7OVMjVnd9TzoueUhgbWduW256THAqeH1Fcy5mc3Y9XXQ8''@;'; put 'put ''Vi5lTzA/UGpYWjhXRH4iRXE2b1s/VC8xOFU8TTFVYDY0PkFsNFUiKlVjKTVofCUje0UrXkM6SlN3eG9PSkEhO151fXghYFEwZE94eis+fj0vVFYqUT9QakE+NkcvemVdMjBRe3BMMHdkRENuW0xyY2w3X040bjs0MXY/TTcsXmxpdzl5cCR2VnFDOUZmTl1DaVEkal87azN2eDw0K3M8ayI6Q0pp''@;'; put 'put ''WUxvUjkkJW5uMDtPKlZ9Mm9HNTklbUgkZHIzLC5mdHNiUGZCJl1NWzdFRVdbWXZgW0tZc0hwKSp3SU5QKkpjWWpGVUJOJl86ImtxJWByUHY9eWcxRy9fNkNCPHx9O0QmNWYpbm8vZ2kifWVebG1mcD0xZyRJcTNrK3MoPHwwfGpobHBHcUJafmZHbi59blIhN2dvNWVQSyIkQihjUy5ZaGFFaCZs''@;'; put 'put ''bDV1JTo9QTZeSStmcm95NFU0SHwoTV5bPGVCNkNMQjAhQDowdDt4JT9dekAyIlY9bl0sL3BNRkpQdkwoK3J8LnRnMD92d1lwM3VZLFs1PGRRcVNqYjxQayRGKFM1VXlPX2EpSmdNSjp9UilGPnIySTVjU21VXiVmRjlmNypsaHRdZ29OYjdeeHs/KT1VbTI1fV07eU9iZDA/N08wZ2VwKipmUlpp''@;'; put 'put ''O3wkYWlOQj5IXUxSPm41fHE8O3pRNGNbI05PNWpDM2dEayQ+Nl1Xe2NDT3pgdSVpcyh9V3F3PktRbT9FSlR0QWNWZkozUEg2eS5rVl47a1pkMk4/OHJpQFlUVXB5OiFyaiI3RDtnbGAxPiRYNVtSczpzJk5HaWY6LEwqJmp5Uj0yJGl+MyljcSZ0WWxTMTRCJjloSjNGPGBLRl44djNVLnRIfGd5''@;'; put 'put ''JF4/R0lPME18PG9VMTRLLEo6Lld9PGg1JTwoRjd1emckanYhRzZAJmw4ZHFXOE9JWD9+N2RxX2lKMyg8NSFRZSwkQzlvJWE+SyRsYng+UVVkN0BbPWZYQE9wSjFzcWcrO2dyZDcpTG9EQHomdSR7QH4qe0gmLzNMWmhNeGBIWn1+VUNsejYpJSFIbilpNSVjW2kmbGI3YWpGRiwkJnlZN209byMv''@;'; put 'put ''bFtXP34ySTNWcjVCTWpXfilAMW9HSnI2aEBgYFVQXXohb114SCVCRjJDPmxkPl1FU1Nifi9CX3Q/dSspPihXSj56fSk+byZhb1l6aEp+LH10YUU1RzFpKWZ5bV92fkYxI0wrekhaWTRZX1FENGVCKzZpREY4YjF6OCQqcDs+ZW8yc1EseVckTmFKKC5KbyhRUUJOSWFwOzE1PypuRnYvVTI/KlVw''@;'; put 'put ''MWppP00ye0kyX1I1JGRaOWh6PXZaNUdoQ1dWZk1EL3RyajFkK1QyXi46c1RALzN4QVN5JVJiM182NjV3MFNEYWxjTWQ0THc4VGJ7QzxoVGtOayUlO0c5MnB3fEBoTjozWU0yTnh+eSZXdU8hc3xXaDJuemRKfkxGMm5INHBnNDBTYktXd3hEQnc6fT5ZMTxdLklCQ2QyakRfRzpXYGEmLHJDdyZ6''@;'; put 'put ''YiNCaygvNlgyMTV5KWhfYjdZdCIvSV9UYn5wcFt4cHc3OFVWYUl8IU5RZj5dOVhvSDlAbjVrTip2e2FKNWROV2c2QHskUHAlcCY3bi9HKjVFbTUpV2dXWGEzXTk1aitWNHZIekM4fTpVNUtuS0xiMWRZPGd4ZUFLe2Y1MVdSO3BGMmoxbGtjeD1zcE9EemdRI0o+JjJqeUNMcX1HcyxHMi9YJlp9''@;'; put 'put ''TFFGeXtFPngxVH5vekUhTkRtdXd5enVVOElYNWdoaXBiVU5lJTlYKmVgdV5KI2xWQiYvWl9nNiVCY2JQPEtXX2oyX0xmJHw+WGNvLG14Qkc4cU1wV35Se0NWWl9lXUcsSzIpbj9ra3I2I3tAJmx8aSNSOmZfYEJ6KHFeS0k/aF8jdCk1aTUvSHxlXl5IRFV3MmUsQzdMN0l8U15LPCk8L3h8MFVF''@;'; put 'put ''Xk0ydERncC9IWVguOikzb3BXMWUpbiZXZ3U/NFNmP287ME1sYyN5Wit8JGNBYCJaQnA3aDJzOV8ld1JMbEt+aU89Q3N5MCJDND1MeWx2ezxmWyM0eWJucXkyVW5VVEQ6TDgsKzV7IzVZfGdbS0ZyMXdROHtkRHh5PjV5TXooTV8rOVVEeTF5Xy5UKTdJIzNyKEBdLD1ge308Y3pgI2w+eXJUX3hV''@;'; put 'put ''U0R+VTMlNE9UcCUySHNdLEBeUj1uSlp1K3Y7XT9idSUmTSklQEZ5PChtPl4uTGpde3N9ZW9ic1pAN11vOj59K2ZhdyY5R0YkS3UzVDNYPyN2RkhqJFg7MnwrJCh0SzN7Lmw+RytGP2hPbXxGQHtqSWJ9eiF0TzxMX1tkYm4wdkNIV0RfUXpLbHZhbkptYkI+bVMoPSVHSX01UExkeHl0IzguK3kz''@;'; put 'put ''V0xXSV0pVCs8RnszQkA1TnA/QH5ZL2NddXw+KXdufEp9WlBVdX5PM11Te2xXIlcsU1IudTMuYEx9MjNUbGhzbmJ3Izs1cEZDb0lrYykyUXRjc25CKGNWcUZaX0kyTFY4PyElWjd2NzcsTmYkY2lZK15MRnA9PjVsP1FGcD1SVHJMLj1OfExid2A/ZjtMa3k4JjhddWc7Tl5GcSU3O2xXfFc2fk8r''@;'; put 'put ''fVE5eyNEUzMrcTwpTH1rX3JzNG8jYWIqaUl7NGcxXUFvbHZPM0QjeG99Ry9QJHJwaVkqd1UmOitXRTh8JFRFe1NhM34vQj95WHhQMHVfcnNzTWtUaj81K3Jzd1MjZEFoQVQsYlZWR0dKJHlpRn5YSyU7VDc5fHtbdyRsXSh4STI2cGJycDA2bl5QSXwjV0NXP2RWKztkTFV1TXZdYDokYl46aFVi''@;'; put 'put ''VlB5OVl1OlNAfE59ZkklZEdkUDxxXXVXYzhoIldvbzZnK1hwXUdrd2g/dWt4SDw5JVhzdmA7UV00VntMOUdyUUliR2UkJDRSMGlWbl04UylNJj5De2hKTDZYbD5RRXM3KVssRkU+NCQ2SSxeI3ptTVsoM0x7Kz00XXBte2koRGA6MX0zKmpwQWx6Xk1LcmRgWWE4bTNaYWRnVFNMRkZ1KFtbLl5v''@;'; put 'put ''Z0ksWEh9VUtsQl00VXBFcEAuTEZlNWgjWkIhVyFyMVVAYChEIUohQzRuLztBeX55V29DV0NWYG1qR2R7d3pIWFUuSXk0PTQiKzJMXSM5Oz9HZmZqIVcrckxDS0BOXktxamRGJSFLey9ySH4lIigyOjxmOVY0UT1QX0NgTn53a01XQkFGPHF+akkjb2g7KFArbGI2W05UPEVObldNNCtLSzJLNF50''@;'; put 'put ''NC4vYFJFc0RZZjx0Q0dgK05wYipLXVAuck57eGwhc0I3MiI8USRZckcobihuYihDekQlRG9ZTER2Tkw/Tz0oPnl0TS5PMz9FU3BjIkdmQGxdKTIiVExpWkxZXWl6cmJxNjN6PTcwPURzL1QqbkNXOCFSYzIreyR7TWQ4VDphSk16Mm4zWlJAan5fM2tPIVBoeTpNPFgvPS9FdFpZTE83XzFvTnJt''@;'; put 'put ''MUhPPHFkXSl2bWdqRlhnWjE3TnMzfF1pdSNJZyt0TXpnM1NrdSMpbSZRZih4TiIvIyV9cFN0I0tNNj9saUZzbkowbk8+Q3A+e2FpcjE+bmZLcjgkMz47LFVYPmM0K3kvOU4iLygxdEJCV2pBM3wxPllZOyNSWSVfIi84NiJYJXc1bE5dMjc8V2lydVMxLDJLYzg7dzdPOHhWVENaOzUxVTlDUW8+''@;'; put 'put ''a2tYa1suKmZqejQ5QjNtI3FSMSIkYEw9ZyF4dm1iZVRyKGAxakA+bXFkT350KV4rZFE5RTg/VnEpJU48L3ZwL1VWfD14IWokdjE0NTMvWUtVeWorZz9TOTBWOSg5UWl5TTl2a3g0SV0/OFIhSTt2N1M0eU9OYiV6fWZ6Iz4sYmRnby9YZUM0ZFpHMV9dVzBweHg2dFZHWmM5XmxkdGZ1O2J7K3ZD''@;'; put 'put ''Qjg9aXwhQVFOPEVna2coNF88PEBaImRhPyM8WzZTWmkoIXc/a2dxaiUpV0Rdak4kK2tgSURKMEc2aTJgP1hKMzZNWCl0QjFZTUNQb0I9OmspZnJZa0I0NlNCX3loVEZkM1hvbFIhTXp3SndPRlhAT0BYLFJGKVBQQDtlMCVsdTphTiFYZFlLMGVKKFk9LmNraStJUTJpZmw6Mls9XmhAdDUme1J1''@;'; put 'put ''MH13c2tmKmxsUzd+a18sckgqbilmaH50UDl4MUc2LDQkbFQvI3tpJGYlUDdRJlhyIzNqcmZwaTlMXlteS0lgNEQ0a0J0dVc6Q2VsOSVHQUxDN0MlSWA5eTdeZkh8Snp0Pm5MMXkzV2dVVWQjRnFPbjUyQW1QSmQ4bHJmSVIveUVYWFRiLEVzWE1nLCJMRUZya1NaTGloMmdBSmI6Q0FBMEVvNHMh''@;'; put 'put ''QHJNPEBZXUNJTDsvTVY0IXFGXUxxdSp4SCp1QzkoXSZFMFt3KDg4OktPcXUkb1ZYW2BgPk1EQGNjaHRPJEpFZGkzWDhqaVs3X3pXaTM2QWtsWn1APTlkOWZsX1RdNl1FTmR6eTFrIm1PbXVtODBfXXY8KVlJKXkmaz5YPk1meHFxe2srRXNKQC46THwsMW5nSXJdeDA3K1lUSExgJXMyQSNrTlg+''@;'; put 'put ''QH5KPHdBTy9NYFh5QiVEJGg+UyRhPFg6NXBCTTMwSThMK21VKCwzWiZicCE3NjdzfHNdJkBWJX52MlVPYVRlbmdVLC9lXW17RlR7Y0tHNkZUTUBNbERnMS8uU1hGdXVJP1A3czkpLzNkQVNpR3owZ2N8fWUyTiEsTWJFWzUzTHpTN1JAXW8jVTNXZHZgSHEhYWAuek0walN6ZV1JWGNqLk0kZWFd''@;'; put 'put ''SHElNDYsUVZuW1g5VTM2eXA/dUtSeF9dZ3x0SnFlSTM0ZGVrSjE4S0ZgYihpfTttZHtnR0wzdDFXelBrVGBrOmhvRkJYX0ZEY1EqK0FMSiROTCZ+eUBtJX03cD9RcFpuSE5eVygrUy4qWix2bS5ARyxKJFhYPGU8bXssSi5YQW4yQk5wcHsmPDhFOE1jaHM1IzpXaF0kYTw0OjBgd25xOWU5KGM1''@;'; put 'put ''OjJVW1ppR1RxL2d0fENhYlZaTF1JUkRvTEp9dCZWdF9dTilXLn48Wn5gbzlFSCVHOVRjOU0vJTIkZ1F6enJkNnAmUDllVFpBNmRwQF1TPU5efEw6L2BJRjRaen1vIyZvbmwwJXJlT180MTwhYENHZEl1OVRPMDd+T14reSkjOm5PVnBwcGZeUFtjS150XmwsZGhddCFTcHlgdU12ejZaWFdXe20l''@;'; put 'put ''KExLKTxMbF0ybjUwNyt6X1NiWGhjVGtkSzNnaGI0R252V1A1MSJ4OTJvNVV3NkR0O3p3UWhxUH0vaE9GbWNfOXEpZFYwSEk2TVM7aF51dzQwQ2BtQ283LHYkMDhucytLe1o/eEwxdHxCLl1vWGsheFJ5JipOUFc9QFd6Jm9DZzdaMkthZnBoPCZ6c1lbbmY3Tm8oWFUoaiNDeWxdaDcmOWVsM3xf''@;'; put 'put ''cCpmNHgyMVdtNU1lZl4xJEc0Z25KdnlKanNZRmUxd25pZ282U095OlFuIyI6YHNWNXxxVzVRVig3JDkkbF53d11GI012U2VOZUwhOXhURml6YnV3N1J7ZHl7YWo6fHh6SWtuci5dPltuN2lHJCo1ZEZ+P28rWDs4U2NDdHwoPWc1VEM6Zj1WX1IzSD50UWtbYGlpWE82LzpbciIwSyN6YiElWnlN''@;'; put 'put ''RUp1TytteyphNXIwN3NbUmpBT0A0YHxAMURtI3UrV0lFOjF8VCxDfCM3c1BwZldNblF1WWYsMDBnUnxFdW5+d2dpdzxDUlpMT1ZbITZSIXwsbGxwPltAbSFmMktuUkAmfEQse3xEQSlWbExpS3tLZD5lTXdGRCI8bHhEKi5rcDQyR3FHUjJjPEglXywwK0YoPlU0P3NQfUQpP1kuLz0rY0R3Omtr''@;'; put 'put ''Kj88bVQyaUk2P1NMV0NpKDdyVEBQYmQ1Kz1iODt6WTpkOTBOMlNQVmdsXU9uJEUzSi9KZTVBYSJIaGcoRDoxdFElWzMhczY3aWVkNlFqQTQmMENMcGJLbipvL1NRWW5zRTw7P2tRcC56eml6Jm9DYnRVXywmYXxrTy9MTiMiblR7S2B9UnFSMmElcz9lbiojOiRMPzhGfTBUVTZ3XXtfLywvPTYr''@;'; put 'put ''REtSOnVDIlsyKj9KWXFfNnNZNy5SKVldcGlWRD1rSn1oSmRhQWlrQnVZJkBPXW56Z3RMR24qNiYoQEddbnpTTE1MUUhEbzBJNGFETU0rd0tSR3tqZEZXL2g3VDN8NVQ/Uio+WnJDb0hhYnEwdnhkRUg5IjFbT0U5eVJ+NjkvfXlgUys8SF1jdlUpQEBXemddQXheWmEwejdveTEjPyoyPEBkMyt3''@;'; put 'put ''S2FWMC9qSXE7SVFuLHo7NCZyU0haPW05KVRYPmkjKzFxV3tPMnJEIVc/Wns/d087UUolcm1+R2ErRjoiJEYrPitee25WV013cSQvaFVzW21tYGI8YTxtXWNMIT5ZK1ZwVCh1QDcoKHJaTzUhdzF2NXJpOkxhKDd2UjJVeiEhfmZKIzVKRlhgYE9+SDcyXnhkS21AcWM3VS8pRkBKWnJqIk9uNnBE''@;'; put 'put ''MTdLZlFSTH0iakpoJENhIT5YZ0h5Ok1UPzpfQFpwcTFNQV5HMDtMOWd7XiRHWVVTZT1EY1FTZEl9MDlaeEVaXWtiVmQ9Jj41ZTc4TVNKc0NuKntzWVlLTjFOIy57OWFyZzkyOi8lQ3UkT3M2I01uVCVUaSpNaEc+ZkJJcmVadnVzWT91JE8rZDg1YDMhOkdmflM+WExXbGtCTGY8QmpgYWwraV13''@;'; put 'put ''UEdNMFFAT3Vkbylke2dJVzF+bzA+T3RsPzR0K3NKeTMxQTR4amxIJXNxSDpqWCFpaElLODpmX14lTXtQM24wVT1DZGJGXjA0dT1ZbHlMS2VaXUM1NCJyM11CW2ZkPW18cDA1UVlQXUdvRypYcCRPR01uSmRJbztgKElgT2JaT1N0S10vOmllVHE3dlNaem9MV0RWM1toWngzJVZbUClTYjIwJlFs''@;'; put 'put ''QWVUZT56fTVoRzpMSU1WP1N0YjdNYCVnVU9FeVFqViErVShMMlVeQE53S0xPYnNHKj1DYmpaQyZrNShIJV1tdXc4RStmQ2o1UiMpSXtSQkx8QzZkNDxvey8kQEMxczQzP1JUMVNjRTxJM0k2bGI/cUd4ZDdPOjNVL08pQlJYS0EqPV4wNDp9UEhac1pyZDIjbyMkQ212QyEvTWYrSUg6RXNeK1Yj''@;'; put 'put ''Rl17ZHAuSX5XbnghIkJHNy8jcypHRE13KV12VytbVHxbc3ZYfHRsM30iSiJgfHJ1bW5EKT8/bmE2OTo/TEdZTUBITDciLDE2Vk1dVl9wOnlSTWpFZ0ZMJC8jWStASC5ZOiQ7MHJndVkrLF5GI31VbC5bLG1FUnBJOHJvK3xbc2RaUXE+QiNjYSp1I2lTamRSa2U1N1J7d1FWOD8oYWNINS90VkB8''@;'; put 'put ''L2I/I1cre1sicytpVmlWaWBuJiU+Z2MuQDhaKUZgcjk7RCIkNEtUMG85L0N1LnEuWWU2O3Z5eFhaJllnWWdNa2Z6eGhETTE2ZCtZViNKWGshIXlYXSx6ZXAyaDRPTmA6Um9dcUouezglVVthfThEdUs5YHJhfTAoTjVBOVZ9OnkwPnk3UXBgRjY0WkxASyhzcW9wbyslLkxobTZwbkpaPnYuJXQ+''@;'; put 'put ''ZzEuYTMlZWBLemdhK0oyXmBdNnc/VT8uT2hheU07USZ7b0ArX3FgKXxIX3BaUFJtbSFjMXlLZl0sRSVdLENVJV19YHpCfkNjYlkqU0VHYFVkb2F0VnxWXVQ6STlBW3wyP0FZZjhafWMwb0oxclAsKmxjMDJqem9bLFJoRE1GbzF8KEtTeiNrbzVSI11oc1Jhal8saDdiK0x6I1NyUlpRWiUiJEx7''@;'; put 'put ''XlAoMHN4bVNETTovNm82NXl2I1NuUn1UfFt6b1svKktDVzghVFdxQE5Pb3xDNjZnRn0pZCRhRE1AfFQ0OFYpPWR+OFZBfjNVfTxJKWB7TltwWl1AIytwbVR7PVF1MT48cFhDTVIrPSQhY15jZCU6bF9jQXliWDQ/cHlAZEdnW3syNGRgdFcvPVpVUkRrRHlbdzdIOXB9al4jT1BdRm9ffmA1bzJK''@;'; put 'put ''eyludj9lI1ZXRkxbL2UjQFY4ITZSNXltcEEkLiRMNUhJbGkhMzlfRCVFb3t4LlZwYmpLSTZwWS41RSh1YkAzfl5+dyl1azJIVX5UVkpfXi5QTXo/WyYvZ21wJEdbW14xM1ZQKkswTms7e1EjZEFFNG5ZQGxUVHszeSR5LzdCPnYjKGZte0R2VmtXOTtUJC9iKilKP0Q9Mip+ZzlbYVtJbDIydm9S''@;'; put 'put ''fjddcyF1NVRNb30lS31RcWJlcV1hS3gjLHokOGEvfXdDQEJxSjpOPzFKR1k6X0J4QkdvUSMpQURNSWwyP24qdHlkKG87SG41MXc9T1Qrekl3dklycFpmTkolfSJCR2R6R2drZzI7T0svfWl5WTVILld2a2cpWmA8Nm0vVmtPVmFlWlBqaDVsQWQ0M1FjbGJHdzwmRzFQKmdqdGRaKz5CRH5GfGAh''@;'; put 'put ''VF16OTlWKnwyNFVqIz0wdUdtXjZGRX4sfFMseW9JVFtHL1JAYnVIIkZsYyFwfiRCYkBjal5MN3B+cjB0TUVhMyZ2WzdqU2gjekRBRXxzRVFyK3Jsfn1SIV1Ib0clXSw3UDdOYnNLVyhoWUc2RjlWSzRTRV1GQUZSWk17WTByTiYlflRwIkwvMGZRO1VvN0ZJSCZ4S1FPRT5TfHBiRj5TXS5BNCRn''@;'; put 'put ''SkxzP0pvKl9sJlR8QCRNX35JPSxYKX15P1hwVlReXWR0Kzd0e1NmLkl0ViJkImgiWitTT2gjY3x2cmQ1Sk1kWjdOQkEkPGVTPWtWImdZJXVNV0ZMO0xtI35Aa0JqOjhBQkJ2ckBBS11mTXxBRz4qS3B5NTJ6UkNRSWB4fFVzSUFLRlFBc3VPL1IyRHRBQSMyWjRyMCR4TWRMaS9PR1hQQmsrfHAl''@;'; put 'put ''YUMvKW49NDFMRFouU05GflJwZ1U3SyM5PT5TP2g4OG8kWzA0PW0wdE0qMzM0KUt2UTNHMz92VyhLaFcxajFsQV8lR3AxajkqXlYuW3N9bjFGODg9VFJTPmImK0NoS2dmOVFSemxsdkozbyxJZUI4ezhVNUtsOVErckFUMUtuUikxPVtqP3lqWGxCJkVgeT5qSyNBd2VRTG0kQWVKSClsVyU0MUM5''@;'; put 'put ''ezNLOEksODx9YjpbPGVRJV9HaDMwJjc9Y0ttUG1kSDNXUkpgSmYqWlUpWzNDTl92bF8vLkZMZF53eGxfRjBmKz4rQDtRITEyQGZ3cHhOdDthaVY9RHdjM3wxL3pGU0IuRGVYeTVDUHlPI1tbckhOb3FUK1NtJFl5aTFiUjZvfldUZztfIXUvUnNeLkh0UV1PQVVAbzVlflY5LEpQRC50OlhTO1kp''@;'; put 'put ''WUFeUEZrNUpWVEo9by51LykydmFjXSRJKyw2TFlUS1FWIlV9enkwQ0huKlZwT2UvVGQ6V1tFV1YvTFtecG80Llp1JDsveWJjUW4kbzY3ITM1OFthLyszRSVaJldqV01RNG9DWF1uVzs8W3thMUhKIUYldEtFJjRxIXxARnJ7MDI8TWpANnNnRn0wUjI1ZWxzczU8YCFyajlWcGh1UnFyQ11+WVNa''@;'; put 'put ''MzRAVnM6P0dYc2E3UVh6WT55WXpwakd+P0o1Yyt9TzEmfDIpWjVqLHJPLDoxPCQ8TWBXMGI5YT84LCQxZkUvM1E4Tyw8NFBUVzhrUl0wQHBmXU1fZyMoTSRkOWpGYi4hXS8+bVFvIUZTZzwlaXlGPFc5S18wUkM9Yzh4fS5ORCVrJlorVUA0ZTZMWlY4Vyl1Q2FXQl5Obm58SlpWaXR1KTlIJDJV''@;'; put 'put ''MVs7c2I9aGN0JSl2KyhrJk4oenthP0dpd15jJnV0cEpAP0dnKyl6e2FFb05geEtMeEN6eHxdTHtUK19ARFZYNHddLl8kUHskdl51IzpTUG9QR1hIJnBMVD0/ME1xP0lURCpRSTU3dUdSdz5sPj8wd1pZKlowK1JQTmxyPmMlZGJ8WT5AUytrVj86ekEpPXZzYk8+fCEvKiFObF1BVm40SVgoIWNi''@;'; put 'put ''bVIjKklKaT1zQ0lfOkojdSMpZiszMHlKcEpaX0o4fW1vfDlUYXNbSUhEPWl6anA7bU8+bCUyd11XNGMhdU06SWtKRE1qOD5KW3NhKyt+W3t+SS5Hcj9HbyhuLjFweTMuVitYNGgjMVcyU0F0QVp5V19ZZEMkTip8YlpHWTdYS1BDRD5wbzJdLGUycSZDM01XVkw7NGJSV0x8fSx9OzRtQT5+JXQl''@;'; put 'put ''djxXfXNdLGUyRltGb24vRy5JW0dgRXk4a1JBfWJAT3pSQ1ErcSZIdU5UIk97Pls8dnRlalV9W3NtfSFWSis5RlAsLE1+YGFxeWA8VUwjIkR5QiVmcmhsX1QrLjNCWyx9eUZQYi9Lfms7ZWJCJikueXl6TGg4L2dpMlYsKmsuZnd0Q2VRI1BsNGdrSjt4KUNkNit0IWhOQy5hOXQiazMmIytiNT9B''@;'; put 'put ''WF9AcEZCUGNye3cuLllheHJIM2QkbDxsVTY2Q3k2SFJseFJRc2pzUCIlTm9yXS9sQlcmbHRmNXhUbCFrJExMRXVDVW46b18lQ0YwS2BSMUlRby45UDAzNlozdzVXWDEzSFEsZDs6XVs3K0Q7Q2s+JnA8cmdeQiF9fV0hS2JmMDsmamRBTXw1MEd3UDZhJVcsTT81Xkk1fHFmWS5fJTdUMH54MldW''@;'; put 'put ''ey5uano/OjA5SV42YD0uMzlkU3szM2k3az5AaTpHYGZ5PyJfOztTdns3UUpNQihULH1TYilLV2gpSDBLaF9bSURDJlhvQzM1NnNndjZkU0EqSmtWI1l6JHgxJnN2NVkiUyFARSlFdG44TFszanNTM2cuTD9QaCFlRVp8K0Q7ViVnZDM3byg3RDlEPmJDeyVPcFVFR1ttdX56Ois2ST9wWWhoRHFt''@;'; put 'put ''Sj9ldEM6Rn44VDtzUk1NPyUmUlhbTCs2QE5FXUBra0UzdUomL2I0QGA/aHx6bzNAWXB4Y2J2TGkuNWJTe0NCQitedU1MZ0J4aiFGJElJWilwPTVGQzRpTF9YayErQyIlQjhKMkg1QGV8RjwxN19iMktFVVtMQFYrNm1OalBkbnFpYkw4enM2L1BfISxafnYwVU48XXxDTVBOP2RlNSRhaF92YUIr''@;'; put 'put ''fmUwLlNKW2MySyNYWjkkT3ZTUW0lblpAb0ROMDBRODpzMTk9UUo8e2pdbUI4PUYjU25SJExqbEJXTFhxPDx2YikhYnM7QiN9aEojPUNDS104W3lIY1h1YGwmc0hOMnU1U2VuUmAxdSU1Wj5QRFY+Ll5iPiZYNlUmLEp1fWp0cH10Im1AJH5XNTdzRS9kZkRdRHwlVilSdVBufW86OyEreUx7Uyxe''@;'; put 'put ''QEMpZCV9RSRaKzBOaEMxLDJ0UThJb3hQZ1o8MnwialQ0JTIrNk42d3JZZTg7ZXxnKnVNdkJmWDhAaSNFSjt3ZjYlWHAzcGpUNVVSeUU0VCxGOWsrek11V1o4Sm9GMmRMaGk1MDNfMXVCN2BtPHljZ2NWJk1ZRn1vWWREOzA2W3p0P1YvXTU/STFtLGQ1KzcyU3BKQ1tjKmVMVmhafU5lfl9QWSFN''@;'; put 'put ''SzRYPk11WVhGczFWTUZac15ETzE4U2g/UV1aezw+WEVyOH1QTXs8WzJ6aUZyQUVCdkNsSjFKZyYlcFZdQ0s5ZmR1R3g3JnhGdFVJXkJLOXZYM3E4NndaPmQ1MWkrWEgiSXZ4Lk1BQT1bRUFrKVFEU0pDUi5rbylSQGhIZ2dZUXAhdV1xaW5MenZseG1SKUFBQUFBQUFBQUFBQUFiS01eXjIkS1ZR''@;'; put 'put ''cTx4KTtTd0dLWWIwJFRFQ2dYdSopKnUma1VkcFUqOmYwbEc/UFo4Lih3fSx1PjkuMTVpMS9qPXBFZUsjfGEyckkuR2s9Rmg0aWUodlJiVT85MCUzVnNEcVZhTi4sVDhiOl9VbW8pLnZoSDVAX1h3Rl9fbG9EQkI6WD5jTyFGKGAwX2krdkM9OWBORGxeZ1YsNC9GezN1UTZDWzM0X3E3U1cxVlVh''@;'; put 'put ''YmU0cm8/ayZUcGxbTGo7MXFZMXMuQy5tfS80RnBOKyFyTGRhUkt+NUlteERxN05YamxKNXs3YC5PdVhATzxCXk13fEVTcTlHdXQwJVQ9SExJKCw7ZCJVcEMueE1hOVgqTylVdEdXP3Jqa3wze05Ed205eVskMnw+bj4xU2QvRHE1eU06Wj9lW2p3cnRMUT9nL1NVXU48Mz5xMnp7TT16VEhFTXRi''@;'; put 'put ''LnJkWnVkWH5zfHc+WyYrQ2YxMXJ3VVgkXyxTKER6QSxbPntnUFM0LF1DRn5aUzwwMEJRNS5NS2s2RmJVIl9QTj8/WG5aWzshfktLeXslLyE3M0ZIM05ue3ptVn1ady5PcGR0KGR+Zi9rIXEvW3V+fTlwVm19blp4Lk8ofDAkKnZPcnAkSWckZmZZQ2dZemB4YH56VytxMGVgMn5LNng6ZV8uMSlq''@;'; put 'put ''Unx6ITtAbSlEOj8mYVtgXzFfOCN2Rz1WTSFhcVQmJFU0VSxQOnpTVEM6dCJoZk1WaSxTRGBUYV5NZiRBeTZPaCgqcXdLTiNIciF3PVBqd2xkTyNYR1BbNE1zdkZaS0ZuNCtpNl5SYk80QWRmY2kpQlhCJS5OTSFDPWhadyh0PzVddk0uK1BYKz1CaTFeL3gzfnJ2LFsxXnJnNl1fMnc0VWkjbn5E''@;'; put 'put ''X3QyTld2ZzlEOEpXTzZnIzFTd1R4d2IoUTd9OEZ6ej9qKDRFKCRmWF1mbkNfdmB1TTU2d25YdjUoJStVSzUjZzozPVJtejVGbHM9XUteTz1od3N+USVGe2JzSHwjWip0PCU7V3U/b3lkcEg6Vm57ZW0jWHxtfHc+PCUhYmFDOjc9P1N2THldUy8jSFJtUV4wbXNwZSUxS19pcEZqRl5tJip6QlpA''@;'; put 'put ''ZH5YInEheFYwaERTbW5LWytGOGVAOVc3Mz9nRCZ8WmBlYF1XSltwST83a20kR0gqbHZoIVFYVUQ9VzR5TW4pQyw+aXd6VWd5VlFuekc9Q2FCPCEiUXxpUWo+I3tfN051UCRmK25lZkZgI3FBVmlsa1JDUjhJQjlYbCwoIUVJRUF1ck9YR0xoeFpaZlhQKjBLR1kpP2pvPWM2bGBhdUBXbzJ6ITlC''@;'; put 'put ''NmlAM1JzUEhPKGVmI1pyeEFMcnNxYX5Yd1VKMzxrKjJRRmptPStuMmtQXThTPiphcWg3fDE5XndyOTAvI0gsejk5W0NoPFI8UGtDPy86d0ZFT3hVZU1CUHdraGZ9UzhETDBbdVkrRU90UGlwMy9CVCo9STtQT3N5PUhxaT5+RDpdNHJQNFdUQn19aml5Xi9TQ2lXe3s1fHBYUGxkTWRzMnBmaEt4''@;'; put 'put ''dH5GO3lLQnpKM1BMekZYN2w/MlRVN00wImdgXTxqWlNmYXRTP3AiLFM6I2ppLGUkME8vVUFSej01KU5SUmBhYm1xRG5nd0Y4dHw8Om85dGI1Ym15ZEk1NGdgNS8/MSl0bFBxTWQhemEiYjE1K1lNTURGP2JXZSMzVWZSbEFLWGtmWmpONVYqSz1lY0N6Qz1xfSVQIzg3KUt1K0lTe0ZrbjdjYjpp''@;'; put 'put ''SE1yY1d6XXtMWjVZRHMiRixLKDVdNn5WPyJfU21aWG9iKkJeNkVEN1FgV2VncEY9MDMjMTA5U2ZvR2VNRW9majhpNChWSEQhd0l0TUE8QEdFQXd+IU5yL1M8ZF9ULzN7R08oO05XYUB2NVVGSV9XXldARjtOZ1RQRF0mR2dzI0w0UWo5V31KQEBfR3o7bVlyMEQrW29CT0NWPmJiYS5FL1c0elBj''@;'; put 'put ''ZiUuZCpoW3c1fVFAek17QHZdQVAjeyFkQ2FoXmZvPnVVbE87aGV3UXg0QmpYb11DbFJ0Xj49PjVULzBJdFJrPEp9QX08TElzc1E1XnwiZn5KUF56ZiRSLmcmTVp2LlVeS1Ihei5UUEJYMUpkb294dnxne15iUWU3QmN4LC8wV2EsLyZLR0dgS00zKyZLK2tYKVQ4fCs7ZHBfR3pDfEplMGNrNUN5''@;'; put 'put ''cFo7TXtjMFVGJHxybF4reCFKJE5udUFIfWNYTWVSfTsiTzFnQiw2Yix8R2N0MDReNkQkcUN6cX5KOVN+ZEY6NDs6YCNxeDUyOkpuWigpOFROcShdZnZyZyR3WnVmbkZpcExNeV0yaT8kMHNhNDo4SFFkLEQraXEsQHlwI2lxakt1K2oucmI5X1prKmIwQ1MyIkIiZ1BZTnZfcTMwb2l2TEhWL0x0''@;'; put 'put ''M2FLcFUjUVVqeHQzKSt5QHxnZU0yRUhzY05GbldyNGJEa3IueC5qJXBFamdZVVlnYlBDNiZyZXg5YUlfTW9OIjRbTWlaU2soJG4rSXpQd0t5NGdBTVVSJX56PSpCMzlmcEdjPCpwKEpMTEJle15LWWZAJCopR1NrcSRqa0IpOUBGSTI9JE9pMG9qITRgOHlYWSNgMGJzZnlPSWVYQzlvRHN2Izwq''@;'; put 'put ''THtfPzx5WGhDZkhaVihGe3g5K2FyJUNZU1tnPTN4SD55TGErd2dzOHVGNm41KSViIV48bFdQLComXylgLnRJI0RiJDJTU3JJdCZaV1MkXmh7alB5OSsiQGk6N3BMSmYqNUpoUjp+aiRUX25dWDxLRGFzUjxickptMXpiWVl0OjVfeyhKS2xUQU0iXjkuaE1sXmdbLkA7M2NmT3FPUkhYLEpFVWZC''@;'; put 'put ''PyEmWUd+T1YmcmYsPWA5eFMoRW04NV43PD46LlFOQ2oiJCNgNnwzOE48amBZM1cjYTx0UGUlIV1ueXhwaDQrbDpEKHU/VnclIklDeWQiQ1YsZXkreCRwVn1yQnV1Wih8TWQzOChtcFQwTj05VUNEeEx3YWFEX0pZNTByb0I2d29kKEF4V1FeMWxBPGAwYkwpKDAjTGRldFpeUDJmPUE6S2sudG9e''@;'; put 'put ''dz40P0RoP2ZdIXRmL0NnL0xdTjJkeXxBIjloQ3khWFMibk4+Tihub3s0MHVwQDQrbDFhRWswfHtYN3h1SDpneWxSN0AoRmZ2VWJSZ0NJYENjUzptVTVeR2t4V21CSio7als0Y1Y/TDUvO0lmVndxOTtyYE9iQSY1akUqXW55OGB+IzxfYz9SRHZnLFFnKUU8cHg0enNAOVtNbG8+bGFbeTtdXipP''@;'; put 'put ''ayRHcjBDfW09UyFzJV5kLDU+XTRfLitvZUgmKjxuS0k7Jik6PXVzMkxxRERifHsycGdsNmZAan5ERVs8cnVqNE8xKUVGW0Zee3pNdGBGYihjU1VnUH0ybUxpclBadyYqNzhyaWhuVXxKIyVtWHdTdjdDQTBhbixnTTR6S0pKPUxZPDhaU2J1T31VOnFoRjZGbFJZckVYYF91KCUpXUFxK08jSCg2''@;'; put 'put ''Pl9fd3xpfFk2Sn5sU1tsRDJGaHZJRmEmZ2ckYzNealhKbU9bbzhmX0J9b1ZGQFB0RywjPWVkZDpTXW1LIyhvMj96Vl1LTiV7THgse1Rhd31oR2c6K2VSUGc/OjhAVz4oSD59cW50elF3YVZqZnUsYCE/e3tQLyIjZEFzXVgqPWxydk1tODxzW0FyfWF0V3w3aF1aMnFCJUNDa3ksNTlTOTFjPUci''@;'; put 'put ''VSIyRlM2WXJJMHAsS0RwbHFDeGBvNjl7IW1+VjxPQ1FSaz5CQFUjVnMwOEo2UmR4QywvUjcpS3lnRHw1YjUsU2leVGNCQTZTITBTRXIiLmV0d2YjIT5WWkZibS5+a0V+YSwlcS5DUkohRT9hdTVIaClBNyM7JiphJnNPeEcpV1suZXU+TiIsdnIpOGQ9eTBOOnAvZ0VrL2MwTjtqZSw/TjEzPHln''@;'; put 'put ''fjQ3PFJoI1lrWSp0Q1ptcj9QbURNbm1KIldAOC9HKi5nRiNRTlNlfSpBSWt7Sl1GXm16NHpJX1JZMixYSWhqdDd1WmE+YmFqZiR0I0wvPk1zOStWcHY/JCFYQmF0XSsmNlFrY3hSKkpiN1oyISxiR19gQDx5THxTcyFfMk5wRzdLXXtYfiJ1TGJFaXdwc2QlZCVYQzRHNF1qSmxWZyUjNEQzZnBV''@;'; put 'put ''aFBdMjkrcHspPU4xRH1VRjBhNThjVj12REwzPllFemp1ZF46Q04sODI9OGYxOlFAZGx2UEFTOEsmRDspU3RMXitIYz1ITTZ+Rztad2ZjKSIxTVBwZWJwb1RWLFEwW3olZGlRcklaeXo3W2tCYG1yTmldRCNTbltKdltWMHIyPl9SQFYvJDQjbWF2OTVTOHd5NihLIjpZRD0sLjBxRXFzT0hpQzcs''@;'; put 'put ''VH4pN0FjbFRoPEZDS05QX1JPYWFLfik8KmxUPjVkVHxELEkhKF9DbWgmaiZabDBUW0s3b0A8XTBGeFNId1BWYzU+RkIqdXwlaypoP1RgV3RFUWZ7fkBaZmllYzVGbXldW3Y1UiopJmI4Q3xFSSo9PVptWXZzSFFwLDVCfilueT5gLHgoZlBZc3Y4WDl+ZHJbPTEuP30sMWl2Kj8qJClYX1tdMXhI''@;'; put 'put ''ekRUejR6KksqXnRlRXpGXn0mV1pAK1tORjs8RX1QJUoyQnR7WVpGTlpePTp3Wi93fi50T2csNVlUJjU1IXpPbS9SSDwleXtJb0t2LClCTFpFVGU+TWJwbDBuYnN6cCY2XWVDemEzV3NKKkRfOGAwIndCeXpLfSMjdTlfU2IuXl9FUHJZQlhSSyo4P2dNTVFPdihlQCRvMm0jSytIIzVkTmBlPWxk''@;'; put 'put ''THBIPlpXczhVNiZnRztSSTI0ay8meiUvZEByd0JHbkBjLz1wRkM/XypXKCNZPDFRdGN7dCkvdTMmP2Y+Mk8ra0deYm9gYXgpTUxLUzJaK1VJfmtFeG5kbTE3UlQkUF5JMCVJVVZDbltDUnUwOixrPDt3VEJWUGtJclE1cUxyTnRmN2hVIi9KJVNPQ2gwcCg3alRJdGFUTio+aiEzOzV7RS9TQ1op''@;'; put 'put ''NXZkYFZ6LFQ+fiNTQE5HdDxHdyJaTEV9WlNaaVtFXllUMXt1W0QxKFMhKzMxKXBDZFdwb1VJUF0jRF9JT11DVTJWKGdsMGV4XkFnO1FtSWQye0dgcF1pOStpQUFiblgvZVdOSyQ0PTx8OileXSNAITtMVUFURC5GbXBua1VQWWZOYCw3PVhxcjRTVHJ9O3dNYHFVajE8Mn1wUmx+bTVIcmxkXTlY''@;'; put 'put ''OCUiQCl6VH5GfSxsVE5XNCtbInF1a101d3pdTypxdHQ0LmRZbChjLiNfWUBbRyFmJnZaQStFTD4kWmYvKShjb3gzUl1rYXgrWHNyaTUxMU4zbzw5OFAlLmpNV0dqT21jYlteJH4sKl9EMSFufX1FK31MaWszQyU1ZjdoSHg6Omt5MGJMLiNtOX5lSjU0Wzs6W0BILnBWeyRidVF+bXV7ZVROdiZa''@;'; put 'put ''NVNIaH03WnY7UTYveH5ndW1uLGhZME8zaUYzV2RATTpQbFYoL3xtXTo8YW16WDhGTXNxSXs7KWxZXzw+QjcyOjsiUCZ2fSNxNmpVaj5lfHF0NXtlUCxTOT1kaFF6bkk6TSpPT2BuSjdxfm5dVUx7TERtY3Y0Iy9Ec2RwSEhlR0l1VEBsMkJKdHFqc2I9WFhteCxnKmVwWncxNzBYO20kPltjfj5h''@;'; put 'put ''LGEmaCFFNkhoNltya019aUlne3kmRG1eTCs2Q2B2JUJuXXJ+ZkNbNz1bWFdUaERkSHp+a1JEdTosQC88WTVvYElbJWpBdykhejQzMjoqZDBZdXZOWGdKUyE+UjB1cmNQUmo1KWtqX1RgUHtQUTtma0NmUz5tLyYkIWZbT2dCWjNBNTJFITwuVXB6PFZCR2QyZjYxdmsrMkVeaUJlZWxFQzZ9JEFX''@;'; put 'put ''aDRTQXZRXnhadiR1PSY4cjMiQlAiM25+ZntIbjZXJmlVdHRWOytfRzNqdkBEMSFsRHh8U0kzWjY1ajp0U3IlXmlBTHk0TDVAentJVmFmVkFyOGl2a19lfW9UcTF6R2IzNXNjR11zelBFUkpEdkFAO3RePWVHNTtlTElbaS5jQHtRYCFUR1B9XlJGb0NOUkhlJUNPYmJKb3UmNSwwPyMiRSQ5S19O''@;'; put 'put ''OWomYlpWRUJgZXg2dHNDfkVxOk01Kj89cGElRHpiVkJLJDJNQVZtT0s+ZFU8U3pXNWNeWFdvL1hrJS5oTX43On1uQWpHOHEzcVluMGlPV1VjSWMiK2ReSVRPTWY0dHYleVJzJk0iQX5QWmFve0RgXVUqXVNhTzJUV2hCM3kvWkFDJHdeeVJ7bzVZP2B6RDJZSUhCR20lN0VkLyxDcCFOaVVabVl3''@;'; put 'put ''RyQoQkkuKEt9KWYhfCUkbzcoWTNKRCEzTmA8KFJpNDslRWVzV1B4c290STpvKmNmTmVFNSUwQkhqT0k0SUR2SW8oNTc0Xyw8QGVGfnt9I0Y4SmB+Y3lBJmdMQEdmcFhDeXkjUkJ7NXRYXUd1ITA8IWNXUW1sKVQ3T1I7eDN8UnthMT98ZGx7VFZmZjNzek4+e3ZraSUjTHVTNHN3WTheaV9IUlhq''@;'; put 'put ''cW5mT0Fke0ZTMG1VNjd7T3RyKzxYMj4ybHZvSz9Nd3gqU3c7Yld7UClISTJqVz9GYllSIjQ4c25idEddT3J7NypvfktyWGpxW21OKnRteTJgQ1RleVpRP2csaS9dYl92PyliOGBQSC4kMjNbbkVnJnIucDBVdW8veyspX3dDelBlOClYP3lhe0J+MGpkN1p1X2pnWG1SIzZXRV5zN2E8VFFkLjRp''@;'; put 'put ''K1lVaXx4UEhCKiFUPFJkQTJzeX41dlhLQX16IT9pQEVHeVNuR19pYEpCK35tNkpYcDx0LjN6cTt1WD9UITZwMG4uVi9+YSZLdWRIal01MmZoJX1qM1h+ZDwqbWA/IVFMTTNbclBBSWBGREdSYCtYPjYiPl5FaFV3PTgmWmJWZUViPlczXT1IQD5fV3U4OnAySVNhNyNxQ317UDd4fFcvV3dLdnpu''@;'; put 'put ''MFBPKWxDWkddU2N7Pj8jSnludUhtUn5GdEtBK1AvXXtmeDhaU3lsOV9ieU1GdUohTldjeElLOXxDejUpYnd2ajY9V3xpKiMkbj94Q3orfjBgXS53PiphJFFqSSYjODJiR3xuWiN0I1hzQS9GWlRwWEhLbnc8fGBFZGptUSxxY2xndGg0OGpEV2FTaVhac1M1Mn5jN2lCaFR2UDlRUnRRa3lzXyk+''@;'; put 'put ''JktkUSkodEt1Xj8+NjhJPCEjM3NPXUZrVFNNVy5kfDk4OmI5ZTEvNVJ3Pnl3dExSSGdMdzdeQkleKyJKMCFYMXNfJndmZis9WEV+UTVROn4rMjtQI2gxcmFJOzY/di9idV0uQkUqe1dPe2ZXdUR3Z0h3WncqKEw1RW06KWt7bWUqbDFYWGcpZlo2PnJ6fClaKnxYa14+QVVjM3VlTWRTNj85PGF1''@;'; put 'put ''dzxnbXtqfGM7MWMvVTdZdE9qZ2pyfiVUbi9FSTt4JVpiaXIkQCkjL1VOKHomKn1lbix0Rz5LR2VjK1UuLCZ5X1omV2txTl5wcU1TTj5jPi9RbzlsaHMpLyFZKj93RHRiczlsU1omYj8oWk9Vdm9RPTwwKGM/ME9TIXp8dl1zX2R+cit5KTpAb3c5a353VWg7dlkkeVs9JnJvNChvPWZSV1JyRHYi''@;'; put 'put ''KHU1JCNNP0dPTjdYW1hNLHo8I2Y1ZEU2bEt0dV5SZ2QkI3FLeGoyZ2JbUCJGeDhlXitbMy9CP0h0NFkoPiN+UUlbUjB0YU1WU3VwbTQ4SFheOyEpZUZCNDtuVW9wJF1hTntjcldSe0wlKDMmM0ZsW25kamd3NXc+M0dlYSVjfEo3bi9+ZHBbOTw6Oz4sWGt6bjIuT2k4XzB2MzVyWkcyZU07ciIl''@;'; put 'put ''dU0+LzdLRC9PS2t4WUJMOFIoTT9GNn1BZTIjPldYIyheN3o3IyomNXxhXl89NUFMTCVCZHtSLng5dm18OkhAJWQmakNLaktPdnRuaEsjIzJaYDFhfHtbL1ZMQ0VuVEMhZSh5LEh5a1VaRDM3fUM2VzpHblgzLjpTazVHVEQ3NFJPV2tQV083WHZqN1pRUDBGJTBSREdSeF5LW2wkeXNFZTEqOU0l''@;'; put 'put ''dDo1WUcmdit5fWBlOl1qU3pUM2FuJFtQSGU5aigrLC8ubGZ4VkhPOTtSIWVQcFNNOHVbNVRmdXtKX0JSUHBPdWF9eVclLkdRMmdZQ3Q+YUVuTGdIM2NLQTNYXVZDYzEhY3QrWDFmfSRKITV1VDE2SHFlTzxzYHw2dXxJbDsjPHxxbzNFRU9bZEZAQjpxYyh8OGwlcjklR3dOJDlGRzlsX2BjMkt2''@;'; put 'put ''OTJoUEl2TUlLOFlaW3NnPFkhO09sRTRvend+P3JfdztRZVVKT0tOfV0pcX4reCsiOUdYOnkjWF5mQjJjPEcucHJfY2dpW0A7K3xdJi9oeGZpWVNrbE5PX1Esb0xmNSI+YStYfSxOM2dqY0kmNlhWZHlCLFY+TVJ5d3ksdnY3bEdYTzc4e2E1RWx4SyIuSipWNCt7aCswdTAjKmVMdChzYD4pUGRv''@;'; put 'put ''ZkhsODQ2WVgoVTh+VFIoZXxVO1kocVdNeHYubW1IXU1zI1ksZCVucXQ0KjZlVzRuRzJMOz42blBxZGVfLHdnYEl1S2M1U0dPYjZKNC9zMnxMUXdAVXBxfXh9ZVVSYVE6d3hpKD0/QXhiSSFWYnp4W1JtPkNDbGs4UUZoUiU7ezAsMXY+QF9lWFVhPTR1UWR1Qm9FKkRiSFFfYGhdbl1ReWBLbTQ0''@;'; put 'put ''PktmcDxUSW5lTXpeZzoyNDFETyF8OmptWmBpRU42Kn10Uy84JWl+NEZqMkAvZmp5UjIkPixGXnUxTDxCNVt7Riw6a2M2WHUqWVMkIixPYkNsMkAuREMhPj53U0ltTTFmdHA4Uz98SktfKkdRKVZuWDNvJis1ZllPbCYpZXhJWCpSc15OJXZnMV9CV0t8ekxxRkJySGcrb2EwSDhJYWw3KlhCNi9N''@;'; put 'put ''XXcldXt5RldtZTR0d0ZMS2t6WChtSHNEdXJzWiFOOD5lIyY8dHtXSF4ibm90VVJRemhVVlVnUVpgVjtPPT5uQz9GYnpCWTVVLzk4dyxfNC9ZVEZCSCFabGNNRExLKXg5OFd4ekxOLCRjV3ZLelYwVTtZXTNqVGE0ZlhZfixufi9pd2QxNVMjOFZ4cixKRT5TXk4rMkg9fHlwImpfJSFyUjBDUHw1''@;'; put 'put ''fGlAZUxdW2ExWS5gOjUycGJpRWpfZkAyQGFRTn52QyRKWG5xQio1JTVtKXJab2JxMGldQXBrVVNacyhBNHRwZ2V9NkxtVjg+eWpQTzozRjM0aTB9Lzc0SC4qcU5dVmxSZ3xWXmhOaCQvcWArKnRWNy5xV1FkWClXSC49c1o4dz9WPWtbSVVKI2MjOEwiYn5YYU9+KXJCRy5JUFJ0aSolRzAkL2FH''@;'; put 'put ''U3kjP2piezgmLlZ4NjFtLk1JSUU0RSNeMTozZy9LMTZ6cURtPEFII048TDRBUTh3fXAyQSVUQ35fKmZ0QyImbEhWbXtkRiM2Wll8NmJAb2EqeWIlZVplPW5GfHRxalp2ez5EYU1UcWgwMms2YTU5R3dnSitdenRWQzI3bzZdRXIhYDhhYmYwQ3hQSFhidFhDaWZWZk0rbj9ZJGZFN1BLZF1UWipL''@;'; put 'put ''TiY1P3h6Ki5pUD4sbChiKiQqKyxOdUVMOzlvQlNdQURzbmpYanN7N0xua2Rre0JRb0R7TUdLKVNVMi5KKzYiNTZhOiYoNF9TJGI2QXM/TXtYSCxISWgmfEc0a2NdSTBEKk9UaW80bloxRmpRK2k9Wy5Hd2tSVmEpKmwiczVjWFpUdjFFRn4rWVJadWJiQmFkeF9JejtHPyVvVnJxXVp0UE0rTTgr''@;'; put 'put ''ST5ZIksqW2ooM1doNDtgZG5afV9tViNjM31SeUomZD5tZ1JteHg/SyFIKVg4Onlke3tjaTV3ak1lODt+UmNxPER8cSxpQE95aGtlZzI2Vm5BUG14aCxpfURUIi4pdHQ7dnIkakRkRSh4N0dNMVYqWVleXUlCYF8wMDcpNV80VC4/P1dAcmx6MGgyWk5kRzImXkhCanY/S0EufnJ4MyVvKykjPXUq''@;'; put 'put ''Rno2bjteZ2A1UiRDezp6aVFgQHEuKV02PGJaI2Z9U0o9cXFoRj08MjFHIVBxdFMsVkRZSVd2aiZ9Ql50QUFhcT8jXWAzND9vREIudS9iKngpX2RPazNOSyJlVWs9NClhVGZpYnVHVD0/ZmVnXUddYkk0MDxPYSJ8OU1xIilQcGh8KShwcGVtSV5NeTlxTCVxcEpUWlV2e04xQFY6dy8vYGI7el86''@;'; put 'put ''SzRIMT93OnRvP3BoLzk7ZiolSTh0MXBpMjNXeS9RTDVMU0ZPc3YlXTMuazQ6QXB8fVFNTFROZDxDMT9sN3RDKnlEOWxiVl0qZX5ASzBsaVZFNyRKR0dsJiM1ZnRzMUJUYGxTYyVFd0Z4KDJeSzUsWjYzVCRwWTl7ZWE8N3o9O1U1QWcjQFAmNXcvUk5mb0JWaFFzWllGcTEzbjUpdj1MPkEjUzl+''@;'; put 'put ''UCJjcEU9YTQxWS8iQ1VNOXRVaFlfd2NTN0VORzBuLGlmRHQxZXF3e2Vmcj0mZllmWFZga3c/OV45KiV8Ql57UGY6dSRqLlhpUTMpYXNVR2tqSVR3UHxaKWQlKF41PGB1SV9rKHU1eE1haVomQCE6W1ovbXN0bkRvSHhweWFxREBNNlYzMzRpTU05PyhgLFtHPHMkLEw1a2Q5MF85fXIoT2Z9UEch''@;'; put 'put ''Mz1LZWRsPlpFbj4sVkt4JnZDLFdXTkxvRDJNZnYqVG45ekhFVSxhel0xZTkoRG0wQz05cGFdeCJSKSlZaiN1P0dYcCkqVk1PSE1gMmdnSzJaTmR5fls1cWZuYkI3cENddlBIXixgZSgpRWRBNWZKMU1eWnBWfURZIndxRDVbWTtJTEdtUE9sQ313Png2cXAiVzZWJEZVK2siSkNgZC5gPmdrUltj''@;'; put 'put ''MyRFJXN0KTNOTi5+O1h+SD9hRll4ZmZOaExfQl9ZNmUlKFdJKldHblFjUWt6L3FtYDNAM2hDe3h+ekspZVJ+cUxZUjwzNy5WUFJoVlFjRSRDeU4wQlJqb3xCT205SGtAXjAqfkxtPkB8d1M6ITJ3JUE2RGVjTyMhR1MyVGBXeV51KjokJUZOWnlHYHNgREtsNlZjViZNTypAZ0FUMiRdMkIzK2FY''@;'; put 'put ''IVBFKjMvYXJWPEhJWGovKl05fjokKiRSTlJhXjQ0fHpWZ2VfWSlsUEY4aTV6SlJ7NHpgNURhOHNsWEwyaGc3bmwvPjtxSHJgRyMjJFd8fUNKc0Rsb3hOL0pyUSIrbWk5bnRwW2ohM2JYb1tpRn5UT2k5Y3tQc29hfUBHVls3Pk9MWz1vcit2NG44VUJqSiEvQyZIam44WCM7d0w0Ok0peUZIVEM5''@;'; put 'put ''L0UkdTpMb05GTkFWP08lRillTklkY35ePFpNIW9fJWI8KEU/ZColelBrInZ9d35BY2F9Y28pSUs4NC99I0NdSDNySyk7YGcmRWZtXV96L3xTJUJQRkB6akR0SVguflEwNzNeOTB9eUNtPHhlOGRTPlEvVlNnXks2UVt7eXxRKTwqPTtGVkJuQkQ6XlldfSEoSkpnJlEuTEtjSlRUNyUjSUNXKyUi''@;'; put 'put ''ZE06N1o3fjold2tOVlNzNUYqUTM+QXhpNSlYZUBOTyw8bGBrbmM0RHlHaD97V1d2S0dRV0NYeDdpZCx3IypaNk8wLyNiLnNVXzciOSVVeClFMW54b25DS21fK3smTmddYjw1aWwsNXIhOUlMMGVDT2A7d19USTZHYzghfV9HPGEib3VbX1R9VCNAXXh1W0lANUhzZG5ZVX1IX0VibCgzOjExNm5t''@;'; put 'put ''UGpQJVklMGVBLjV4KFRVLm0xIXRjRkdhcms1fl9GNkNebFU8cmIhWHRfNGp1S3FVeEoxZlJWQX45TlVCM0Z2P2l1PH5nVC9INSNOLmNUYnU6OEJyUSM3IWJxdmh5ZW0zc2NES0QuQzErKVAqcTRMLmJ5aGkpYGFaYV9DY052YUBgd00qZXwxUkkhWm9uJSVzNyFLcVMuSC4uTj8mK0Q2Pix1U21N''@;'; put 'put ''MjQ5XUpWLCpbfEtwQmp0Zng4WXo5Y3FDaiVEInJPUUZ3fWdVQiQoR3JvaG9hcEwvWyozeS57RF9WOVpYM3VXRUgjOH5id0wsSGF6Rk0lVzZqL2NSQk82IntgOjFAMis2M31LekVmTHNXTz85cj5uR1J4WCMyKDE6WFVnc09sRmxYUHlRbVo+TVUwM0lXaTFKMFdZM0F2cFt1InhIV0B6azFqTCRE''@;'; put 'put ''RipnaiVJSkZkckZEQVp3djBbelMqUlc9K0ZXe211L2dYWylqZk4iUUk4emBwaTB+IiIvVXtpQVYvakdXO3lFeX1IcGlWcCtaUTIiQGhZcFJZJWErPWN4MEBOSFUoOXArUCZRS0hmRFNAPi5VLF9pdjNPZEQxMGRsNVM8SU4jZ3c5d0Ivc2JKKksvLks4VTE3JkB5WVl7Z01vUkZLW1RXRkw7YVJw''@;'; put 'put ''MVpsXkVNfDJSOXp2YiZtRyZpOyphTkgman1XP1c0bV03ZD09O3NmRjF7NXxFOy96alRbJHE5dUVuKiF3Q3Q2NzlNU1paYX18emtMRFIqN0daQzJ5WTZaLi9VQ1RvME90ajMrWntSbWpKeE01JCgjVUZdNjNiJDA2bCMvb2RZblpiXz4+TT5EZnZAVSNbbEE/dk1UdihBZCYjISt4fH5KPTwlTnJz''@;'; put 'put ''InZtY1FAbzM2e1FLPUZUOE45en1rfUVrdUd+PmtZb1Uhfis5cGNNRE9NT302WXo6cD5UeW9ySTlWUkdMKkxTfjFWQn1bRGs0eF44KTdwc04hSSpLRVAmLmkhUEZ3XWlxRVIjdy42JHR3cHB3OykjQ2l1S1M9eldVVkJMOmBhNj1UcXtVVnlGSWxpPHBkTF1UT184fVk+XWJiR3BGe29JX2dAKzBO''@;'; put 'put ''NDtLPjk9eEdhXmR+fixfMV9ZKjchL3huWV1vMFY3XjFtVU8iUjgzejZmY0opUVcpZUduYDdpMGY6cXIkTVZnQW1MVDJ1RHVTdzpRUGxrUkNiMCNrVUJmODcmTzhoVmpuTWk3RUIjI3g8JU0xRDUzaXpQVW15cS5rdG1Bc05Fdnhmd2oqKzhhJEVbRyI0P2RPITR9ckwrUUhiKnRjMiUpVkp7Wmtq''@;'; put 'put ''SSMzeUU7d35GN1tobmxPTE1VZnhKaDBmJVRDYnZDImFSSik8bWpANTV5RCFSMFpYKjFWUkI/NzNfT0gxSmx8aU1Ifk8wKS4+RzJCYVY2RG5JX0hrVjt1eH1rWXpOYzZdUmZoXjdJSl1eWVNVSlRfbFNhY0xpM3w4YWssUUhhdW48YmdKRkJPVChTRDJvLEAkK01Xdkg2WzFvYTR9YWI5NzVHSjA2''@;'; put 'put ''TCZgRngzL15HW2JgYkwsIzJ8YUx8RXwwbTpzMShDLHdKYVZLVDlOQUg8My9MMWglI0hKNS5YP1NHUWRHbHhuRy5hXmk8PGk/aSlZIiJSa0lqVmNMMCJMQ1JWT205c1I8aTNDUmAjXSw8Wy4jImNoPT1CR3E/V11xNytZcltCUSp8Unk/T3M0QjZjdCVnSmtbLiVBZzpIYGRWU1opcn5GXz46WFUu''@;'; put 'put ''c2NVPSZdO3M2WTVOOXM6eVY7OlQ6STxkR1NjaUo+QkRdRS9lPj4iajVqfUk/c0ZOZGR6NmVjSF01aFJMTnhyKFJKNDtfWlN8QXdTWEBeIiJON0grY1VlNVRpVzB5SVZLLmBjciNDJDosQjwvKHBqVzp1Wk1eYTVuQEF1K3FrQCNrS306aUZqe09iZG5eMik9TSJ5K2lFRl9HW3x9ZF9GPE9LQnVb''@;'; put 'put ''L2t6M0xnKlV4VEtAOXNSPC8zTSoxNzVHUmhVP15gSWV1SHVFNHRQMXg4MzlxS11NZXh0WExDPnFadlpWcWJdZF1NYWpZV0N1RT1aWDt9IUkwLFB4IiM7LzJDdTkwKXE9PzEuMlEuZDVfJXVeTEdObSNvZXRWejE8bkg8T3thN2p7YnQreU5jIkJ4bnlSckFbK100SUheY3M4TSFsVStSMyx0bzk6''@;'; put 'put ''OmdMZC8vaTh0Nm4wJWlLOlVWLjpnVllHc2V8dDwpQGsjQ355dj1efGg0Ujh1dDl0SVd5QypkS3h+aG98UzA/PWVULiF7UEUwWCgrYSRgfDghK21WSXVmR280VmA8Z1dpcip6d0V1ck94TyspWj0pdXU4eCVxRWkzZW5KOXZLLGo5Wl10RU1MI01CI3x7dDtaUEQ4ZDo7Ny53KDZ+TilqXi9geiIo''@;'; put 'put ''KjpCcDIxVWUwNDNWOXY6ekJ0TWg1QExpMG03bV4ybmpiQyooPVg1V0teRzo3cCNpekJBfWJbYTVWX1YydSt4Z0xtJFJhPDU2Py89PF5sWFdIKGFJcSQ4cE95dWwsSlJ6JXZaIXVzcihxc3tPNShCTyRnOiNwcnomOzJgU1JxL1VIXVJjTW92VTFMdEY5R3NKTnRIYyM3UWhCYm98XU13TndJbzpu''@;'; put 'put ''VVVeWk41VXlDOF9IZWFhaSs/WDM0KUBEY1R1QCx1dDxBOHt4TmVwKHpqKlI1ZF9SZ2t3K2B3NSp9elJ1IU55ajJSQm5+MExgWmlVfWFsJU1RXUlbQEJ5fjhFcCFVcnRrcWtIXjtvcVg0KUZ7PXosWkpSLm57UnxCUkEwP1c7dyQ0M2NFSVJBYF58XjF9ayNAazZ7R0R7e2pVM1hhJGlxJCN0R3cw''@;'; put 'put ''ZDwsLkRJI2NqeUwrUXdzbCJ7QH06RVB2JTZkZEcyUj9NdXQ1IVl3Yl04WHQucThwNlJ6RFI5XzQ3Kml0WW1wN241MyNgSDtaRCZKdjRaUTdiVS5mfmUqNyo+NSEmNWNWR0JVfCM7P3VXJS46d2NAYyFDPERVPEs6Z3t6KytbOGtkPUcuKSFCZHdTdyNSVztJKHZQT1lbLn0zJX01KDdjYjVBUkN+''@;'; put 'put ''c0k/cCtWS2tMLHdEPzB+VC5kRWNhbStlVVE+JVV6eCpCVV1ORDVfQ0hwUWVvVCpPSClVZjkxIzVUfGw7cCZSKSVtJUs9N0c6QFBYLmt+eHczPzRdeD9ecj1eZ1doYVc8KDlCVkA4XitoZWFXUVJkaytEI29FN1VofF5QWWd2QXk1P2lkNXBsTDl5T28+Z0VpKVV6MUBjSGwpcXRON2d5V2hWU0c9''@;'; put 'put ''YWpvJiswUGN6KyQjSWVieGNIfCN9Y2plPDFlaDNYUGE1Kn5UXjlxKEMlLF9jNzhkc1tDRHNYa0FPJkZtbXlASCVqSVhxcT8qdzQkXTtgL0gwYUF0dn5XNUU8KEhhW0dRQG1RMGMxJSVOb0lhTkdLJUBdSnZFOVVGOitwJXQ1VHxkcDlOQlJ8OkJMVl0hUzohfSVDbDJZfGIjN0JPOXZBIXwwI3Mj''@;'; put 'put ''eX1vZilrZjhQUEdwVzJEN15mfiZadlNkcndbZnBbOmNOa0JpJVlicHdwOGZhUzpVM35TM05weSw2YX14TipjOShYXSUkUS4+cHE4XzM2bnt7Ojs3VGJncygrc1hQZiFodXhoZG0ocWZMbkMlcVpwXzk2M1o1QE1MYT4pd0F1STdmcCpQJkJMWjRJNDYhTEdMfFk+Lm97fGZEXWNqKmpqY2cocTRQ''@;'; put 'put ''ajl2PCFgMSJRcyZLaVlHNmsoQUJnMiFvKDMoS1gmLk8yNUJCajtHRUNOdjBlUihOeDxUSmRJc2RGekI/T2xaLGVjQH4uRHNfKiNgO2pOfn1NW1FhRXRwL0Rbdn0lflFJeUlmVTNGQlRRbCozNG92PDFqZFF1KHReT2olWWVRQzhlIihTfnZLPkpzI290N3AqbUhJPGddPiwxOU9HSztfc0dlVkMw''@;'; put 'put ''KjVtWXF9KG9afGVEcV0kMyU7dig6WD5sPmUraS4rZ35FTjx4RzxMY2xybFkzQ1k2TzQzcyZTZFNsZz5HeyxFPVJiTDZSXkZnYHNMKl1BTCZkZW59Ml1+OU1fYkhoUE51KXJEI3VSVXNsVk5DZihUa2hvKCNOMGVfV3xpLGdLJHtGIUtEYHJAXTZ9bGhyUHQ2JlRDaVk5Y045Uns6W11FJD0jOWxf''@;'; put 'put ''PGt7S0IqMi53cSRvPmJaZWxsR14vW2Y+UmAyejpEJn5MRTtlRmtDPTxXaTopdFtFRFolNndScnQhMFM4NUhacGJBb3JhIVAqX3pEOkt+Z086N1I4XjtNNXplO1JYOzRmLHUuW3N3emh6fXh3ITB1ZT1LWDgwTnwoUlBDb2ImbzpVe3NzKiUmMF8zPiJdOVk+bD16NmgjcSVVOGc1dXc5bGBoZF8k''@;'; put 'put ''Tl8uSUJxMkp9N1V1Rmgjan1wJG0/QWoxYFBZYjlGe3dVTV15bHQkZDYxTT9QYm9kWXloVW8zNyVPJTJnLis2QmtTJVt+bnNYa3lxNywsWmpGQVFwM11DI2xsOmN0dk4yeUB3ZXpYeFBGJGFuKlNkfVp2fk9UKSIvfnV9QC4wP1g2a2tDS3QkVH09IilVMHZHUz8uZilSLygibz1dUFlJNWlvYUNw''@;'; put 'put ''OE03RDFxPXBfdVFBS1VlZ11gMnBGYVl6dnpuPmFoZ1tiQmh4QjdERV14KiFUVmA0RFRmSCtCZyVkVjB0M2pMWlhySDA1UnddXjNiLiFlVVdbcUduenkjPFh3WjJZVCgvUTxBRl9uOWIpfWNLJnhvdWd5fn50U0txcm9IJntyOT05MzRielA7JUVjL2tDPDMxPSp4dnwiKE5tKDRxdGlCdGAhWmls''@;'; put 'put ''dCtTImt7NnJfMWRxfThDTiMvLlZ7Q3hIZVRUV3ttbTU6dzNaLGlYS1UlPytre1JPWEt3NXN+RF9YdXFmSWwvMykwfnd1cUNaRCFKSjRnNlZPMDU6cWlwUml6NyQiVXVvXndCaz9rZj19XUBoJE1xPiRaeCR9fWpaVTlrPUU5T0V0VTgxP3xaW1Jvc3xULEo0YUQpZntyM19wKE08Ni9TZTV1LGIs''@;'; put 'put ''OzQwb0UyQjJxbyohfkN+WHg3ZileMzE4PGl7ajhfNFI3KytwP1VLfnhOXlFpVjRLUDwwYTIrfn0ld15FQ1U0ayQxe15qcVhKMCpnaVNVRnIqczJZX292WHVoJXBxMGkjZVEuaWFiPV8sN34+anthLCRLaGxmJjA9bzE9cTxbUSEmREIlcF1GZjkoP3FWIWYxI2UsQnQ0b05tYT9GNilPQSVqVExq''@;'; put 'put ''IzxLfkhKL2pySGtRcSxNK3M3KWlyYVRMVGRgXm91ISFBKzBWbWRpQUtic0tFVyw0dStxXWp0NnBbSSNwW14mXjZSQlBOMHFbKURTbV5VVktbUUBGc3w7InJCQD5JZmQ3RzBEfl5tfShDJHdVcXVoIXB5dTBSY219cTVRa3B9PkdMZlBPRD4uVGJ5YUsxVVNCSEs9TnlEUGkrMWgleGJHaD9CeWB9''@;'; put 'put ''PW9UMDZZNntYb3tBZjFwYSN6LiViLG1tUm1iN1goIWcqRStoUEJuc1M0dy53UXxJOmBAJEZxOlhMMigpPCgoIj1LL2JdT0hKNipHP1J0JmhYRiRUWWgzbSY5fUZUK3xsRHJufj5WUXNJT2AoWG49QXZMKlhSaCJKMEg9TTlSRm9pazV1N3VDYkttbyIpRDAsd3ZQbE19ZUZaRHlrQDEoSmcxKEZu''@;'; put 'put ''Oml4SFZ+X1AqWUh5YlZ7fVUrJU06V09oL3Vnc3tEfl1reWBVMDg9RkZOcDcmfiR9L3VsNCUjJXVifiUmby9XNHw0fTdRdS87fUB3Y1Y4X2BPITxHPkJHdSNDaEJFYTBzSlhgTX5xfGAreDZHNkRPQU8pQW5icThQc0sxblZBJHBFbnI5aDlPKUIkcil3LH5SWCNFSFQzPzA9N30vXldRNiZGQUI6''@;'; put 'put ''NDQoPFs0dSEvZFZ1aFsqaHIydWw0em1nRHl5fTxEbiQ/JlApb016KF8+eiVJITx9NWVfTjtlJTRzbU9YXXF0SHFhWjFtdTwlQ3BacHBZSzsrYipwe00yQVE2fWMrOl5bR01qdFoxXT9kUWxvMVpsYCt7JkZjZG4sKCJxdW5RZF41VlNIeyo3O2h0OTlOXiRtL1tlPCg1ck4sdn01fi5VYiZJUk1v''@;'; put 'put ''fVpSVD1Ndm1MWCswRj4ib10vUzk/RiZSPl5TbWI2ekl7OH54IV5IR01TfnhtdzsqJEIvciokXy89X2pvSGdhV3xrdFB3TjYzUzc0OzJnTEJSNy9kYVNvVip9aF5MY0EpVnBtO2guZnw/ZGgsJHRIcmgxZFckX0VPIWcrX0V8NlNUZ3VqbH5ua3Jod05+WkdlbzdWWlUqXVFZInF9Y25OeVl+TEMx''@;'; put 'put ''JXQ8OEp6PXJVMmMmJktbdjVOLHdrYHV3QyJYeTJeP2A1SCojLFJKVERKUFRHUE96NCQ1L3JaWT1dSl4mVm9ZJj0/Zl9zcmdPfiFuMSVTJWJxez43c0pEc1Ekcj1jaVc8K3U0UnB3I0IvWXhrUHZPMXorKSNFVGZFMFNBIUcjLlBeMTpFPFJWM3YhZV1+N1kpRkQrV1hOVFtbYkEzTFImLHNfMFs6''@;'; put 'put ''RG1UXnBwRENfd0xtO3AsNmRyTFMpKTB9Sk5eRHs4UCUySXtYIz5fLyR3Nm5fTXlHMS5eW0pEY2BkPjB8cXlKTlhXVDg/TSlwQUBtQ0N3KmtgfXNLdy9vVX4hYUdhJXtmQGlpY1VkSyhbK3J1YCR3UDYjPWdtbGJ0PUxKNyZ8NCVBIzxIdzsqfG8yRSNnUz9DUlt3R351UzR3JDNhQ1RjaWQvVTdF''@;'; put 'put ''ITJ0dlZ8Ojd4MltmdVo7clpiV0thTEAkKEQ6d0o1eWIzXmZtakNgVzoqL1FENDRPdGwvNClFd300akxbKmoybm19Il9nOUo3bUt6NCZMPEZDZkwvYDVmNz8zRHZiMTpFbDFuMS82SDwrITxAZmU1QiIyYz9jeDR9bEo5IjpEOnojXzM6Zz9gcHIkMEclREUzcUtHMFNnJklzRDo9YW0qOSVxWSN+''@;'; put 'put ''SFM3eFJ5b2ErKWBkLj1TYFBJOj1aTWRWUi5CQll8M1o4IygjM14mUktFW0MseFd5XktEb3g9KnZdbT4oNXxMPEMpb2lgNXl0QVFLUnJnTCg+S0hpX2lnQDcuKz9CUDY3TG58TnsyKDBLVFdnPklebSw4MWxXJlkzJF1VYGlLS2dmP3AsdGM2TGAqI2EhXVd1eUFgPytsMiQjVUd1L2UoUGNIZmxm''@;'; put 'put ''SHBnJEIvZXhCaHgla3lmLylufXhRbGRSdls1Pj1oYGVVSkRnclM2fDdyTUYvQmk2fk9beCloSCFiRE4jK1tDUi84YG4icl94OGQ+NCVGdT1LPzJhcU4rQWFrbVFXS09DLGoxInZfTGBue3Z+OnIpKihfe1cmRz1HcXZ+JH5AOiRpXztyTUsoQm9tcDFacUJySTVWc3RkPitFZGgzTkRVSjdYfixi''@;'; put 'put ''ayJeXlJqPDJsU0A8dDEscERzQSNsaSo0THllPl1xS2ouK0FqaFpWWXRTe3hOUVVNfFImKn1TXjhwdHVte1VWITZfUD5WOVo7I31oLlZXIjhRRn4rd3l9bC4sW1Y4UjxKRDorLnhxSUYlIV9sI1s1eEMkc2NIRkg1JGFiJVRrdHRGTSxYK29ANTEmNiY4elZdT2N+RzRIfWpgfCZvZDRuR3hMSEI0''@;'; put 'put ''R2BFfGhzcVUueE0yOk41YVFCTz0wXXZRd3tpe2JOY3JfNkBlcExqRDFhVDVUYFgwcWZOVy5yTyVKPW04Mn42byhFe2YkZ2R3NSZddVEjVkhzNSp0QGo4YihDfW1MVHoke01Na3lzUkwue0cxPmh1PXtWOVEpcTZuTHpxSF19NyVxaih5KXp3JmZldS43YWkjY04hIyw9fCxYPXpoX2Z+c0R7cD0l''@;'; put 'put ''dzNXd2Esa2teVUtMdHciYTpybT5efCtecWBXbGEjLDkqYnZKQXxVRV1DKy5lLHg4bUR9UUJIPV1xK1FPLHRnQk4kZzowVWBtVXgudzpuVktjI3QqSjhvPlVvLkkhT1pvNn1RakpuYW4+MERrbTYzNXZJPXs4PjNWOiR9TWk/SkVkakJxOlA1bWRVc0Y3QilVQkx+XS4kaTkxY3l0VCpqM0ozN20x''@;'; put 'put ''WkZEd0QrOEFbOmFUUS9HfEVPa0tpZjopfW5CYnU5RWt4WyRJWSUyIVFrfVg2OXBRO3dvZypvOCRsSnUza1RFLlF9UW9FI2pCNyl+dkpvYWAiaHslTjpwWilhRnAhSj9ANlljSVZtKz8vb25oSHZXXmlNeGJNO2ZIUCkzdC9lOzRyNVQkSGRUWGxkZ1t8JW1ZKFVrYTImaWt3TmlqMzVrXlEjJUNQ''@;'; put 'put ''XjwyOi5TTSEqUH1VUEFiaEEhYCZqbyx4c2gyQGI1IXlPekRDRXI7VGdPV21FMzh+eVp3ODVEWkF7JGpiN249X1tdcWBodEg8KkNSQ1tSMHRMWntDfD5oOCxOQlNMdXtQKmRmUzpWLixvSFFpO0I0LD1bVjVkY1pOfVN5KzFeKUs/WE9HKipBWmxbRGd+PypGSWE5Jk5rQltIUE48ai9VN31nNXx7''@;'; put 'put ''PmVPYjFYPTpobnhrZjM6PVY3Sj1NR3B5ZWFVVmhmdGtgRik9U0xHeXpiSyMlJFdBZWRhOmZrWUV6Q0c7RjZGLkcvZFlVQVs7ZiwvTyFJZWMydk5WUWg1dnt+SyklMzhqNGUsfUVodXdOKkgiOWZLKW1JdyZmRmYvSkVFZTg7X3lHWH5kWTA+WWpUJHhYOjFHTjwwW1hEUWlseiZ8akh4YTZ1V103''@;'; put 'put ''ZEcpWmBsRT48PHNdZjNKWX5jZ2lNXjlhIiooRV1YYiR+SEVxSlI1Ryt1XV4uKFlKQCp3cn4waHZHPiguWGY2UTYwc2w9cWElOTNJbzZERHlxVG52RCQ2eXBJKX1QTl5aLDlfNjZ5KjRSWm1RT28+TnhTUFhSezVCJHpzRShvcXIxPUpYezZyY1MmM0FpLyZMWG9nYX59PVJbb3lraXBIZnBHT3Yp''@;'; put 'put ''fmJrZlc5Wnh5PFhPKnBONl09Vm9xZnJUNi4kcyVXeFNGe1toOH1bWnBbZFUucDJQPCgsWGJ9OyxSSDh2e2hSKmp2dSNVPnZ6VnBHYnlVbkx2ZldkXlE8eSwldWt5bDZebndJfllfKXRANXU1WjcvNTI5JTJHPSxAXVhIfDkpTGJReTw6SztPJUUjVHclM3ovTkFCPXRyMVMqTWRCU0x2On10S1BZ''@;'; put 'put ''PkgyNVdoZyYxSnFzYi9fcEIzcGNfXz10c1dCPUNOZDF4JUZDPXJxbEtlWSROLHcsVllpVTY5IlR3V15ue0p7Q1hAbD1uNyhDYTomI0MqMyxAPihVcTwrQyVBYElJIVdgYmZiISNGKmklLnYoUEA+T1o4YENLOiFLe1BqOGAiZCosInZ4I2VbUFt7a0N3dzA3I2FSZjV1O3BHODp0YWVeLlZETEtJ''@;'; put 'put ''Kz42M017aj9MQmp2cE1TOEJyaVo+LjImSWEkdmUkNzE7UyhVaXorVHFuQHNLO1FqPVVvQTFbP1QsRSRUZltUb0IyVjhXS1UjM115dW1OZkgkdCZJfUtiYzk3dk87dVgpU3M4XThjMWAjYndbOkRxSnUje2dnQT9KYXpIJVNiZmV0JWNTUDdifGgyUi52JlUoenokcHJ1Ul9OcyZmVnJsQitlI0p4''@;'; put 'put ''XXtfSXcpZUI3bmIzelRBNDpeb18mVllTXUNwNXQ4ZFRZXypGUF47MD9DUzwpQzpqa0xOLGNvSitecilwbE96bi9hc29tImI+RzduLiwqeTorQDlhcjFJI28oKUIqey9yb0IvU1UkMiw4TDZkaj1+Vk53eW0odEA7VW5BXWp9KGRsYkQ3d0A0OlUpT2xAJklNIXdbenI4X0xMSjRCflF6U3khQitA''@;'; put 'put ''SW5HbCEwd1IqWVVjcm5hbk5mNH1HL1hnOlc6IXc9JGEpeyVdaWpCJUc1fmF0QmQ2SWJVR0VEKCpRPilyUW16dF04TUNkKFp6JkhVZXlSOFBDbnNMVX11XSxHPzRXOGNMYVpeNntKWFlEPDx8KEIqfkhGeS85NWNQdyomYlpEeiZPSGRvdmlzcHFNP3ZwMDV2IWdXKzs7WDxaOkU+bU12I0tjaWs1''@;'; put 'put ''clNDRzxpKEZHYDVmUClkallYK3V4Wz0lZi83ems0bkVeJllyQn5lJnVdNCVyVGMxMzdfJmYoVixYSzpjRkB5RkR5dUV0ODpnNmVZKUBgcChNUEtxN1BBVWZWWSNaVU10UitVNUJ0c28+OUIre3lvc0BkdWdALFFOO1RtUFlyUGleO3t3Z2EpTlduIUhbNn1ieWJaWW5BIjFFJW84NVU7SFZjbU87''@;'; put 'put ''OnleQU5xVXRgSkpBSmFsa3dqSHFHJCR5Xk1dZlEhalMrdihWZVAzUC9FLl1fbS5xajR2WCZJaEVwbjJocG14Oi5neXpyfUQ0dmgma0p8I2FqJklpbSVfKFJoKVdyZ195YCNJZjcxS0Q9NnROc0tWWTdjPHM1In4uJjMoWDYqb1RRTUI/dnJfR3kvdm9LSTV4OHhpVUc6dHgxa2F+ZkgvRVhAaFMm''@;'; put 'put ''cWtpcWF1VE1gMypVMU5DUG1HQTsmc2A7TF9xQzpGZy44ZX4zN25JcDI6UF1JPn0jdGFBckxgNjs+Q1tDRU5DPDIsbVlNMHcid1ptR3NHT1o1MUVXNnVNXWRiS2dXOnhwd1QqaEdgMFdrWnJ2L2dzQFFaVzU/bU54Ky99PS9OdyFDZikqPURXPmxZLG1BVGNaIiZ0bDE8ZyplQkd1SVs8TUp0VSNv''@;'; put 'put ''Yk9iNipYWmhQem8xLiU1fjs0IW1LOlpoSTNAM1ZBbCZqd1pqb1lMVVBMPF9iM1smekk9TEUsR2ZwREBnYjAoY01sWj1gZktrS0NrWDlYWjNfOHQxLkk6dXVjeDAhLEYlP0w8Y1UqbUtRfVRpfnpTQVRdQHpwNlo5czJjbHdJX14yWGtaNFdWU15GZCZUcm9YUzZVN1JlMl1EPSpoXyUyZDBCWkt+''@;'; put 'put ''W09eejVTM08yYm9KLGJQRHVHJm8mKTVydGBMbiQ6alhEY0QhSjxUVGZGVSJeKm9UezhiKGpZTmM4c2ZjbXVSXVk+bm1MbXkrZD8wfShNfWU/JmNXR2ppVUppMXk3dz43ZFtdTkgyYHI5QmJ1Q085LD8/em8vIzZ4PDhjJSFHamhdcEovc3Q1LCNJRClBdVV5Z2Z4WFYzTXdTVnw+MU41RG8wS3po''@;'; put 'put ''Mkp4Sn5EblAyUzhNZHZ4bTJ5SHhPRjRFN3hQZ3RqOnhFRDdpSV5ocmVbKlAiJTl+UT1oMVh9JklnaGprfXIuJjQ5JF4sOk5jaiteMS9QLzZpRSRHVkNIeHBzZDRYcHBzeHYhRT0lXl4/OSs9Ti5qaE8yYz9MYyZSM2pCLnBvSFB7bFssfTI4Lkd2ciptP2R2L3hpaTZRTD9oYitTeTZEYEl9Z0VZ''@;'; put 'put ''RCRoQT9Fclc+eSU/OGRMNFZJIlNLeCgweDwuK3NKZHV5dTR3Onx5ZDZPQEt3QDt+MHkiUClPdHlkeVl1YltrSFtsJUkpXnxtPy9sJSN9Yi4sN3V6bUFLME54U186ejFLUGcsaTJbTTh1PERkK1k3SmBVRntwU3UxJENwe1JSXypBUVNCRF85aTAjQlRfIUohQi5QOFBLVyZ6Rl9iJHZPKGguME4+''@;'; put 'put ''aUdXTGd6N047aX5UXm5QZ1NbbC5qMDAqLFZUckViYk9zU29Ydm56TVl8TnglfClMUnAuRlZJbjMvfFlIfmN8LkNRfWBESkVuWiNDemAhRy9ZKlJWcHQjYCQlWjZhJVpZfk1AYj5bd2hXVmszTSExK3l4aTNTSCk1T2JCKzpqNnkmXiwoam9NV0dYa3pRYXQma30sO2BidWNyJklXbVRsdih5ZmV9''@;'; put 'put ''NWpSc3JZKiFOViteaFY/WElNaCMuLl45Y0xBO0c8bHZmeGI9ZlhYT0hySTVLKT9PTUZuTWtWej0zTVh4Mmt5M3dPZUV+RD0ocGxfOEMwTDdycEI3Rmh9ZVYsRGdeKlVgS1VbTTolUVRiKldvOX5sc2omZ1I0QFZhJVhAemg9cUd2MDN4dDdMZyZlUmIuckRxakcjSUtzTTlKTDgmbEEsbXM9MTpI''@;'; put 'put ''d3pSdjslPEcqeHVpbi8jY3ViaEk4Sn5qZi4hTjFUNUMyXlEqTV46I345aj5zYy93eXtdOzQ5JCRCS2g2TEs/dyZoPVFQeyptR1g1YSViSzZLPEt1dDohWzg9TGhSKn0paWxgcDMuMVVLdVVUfl98czshajlWbFROW35DRHZZR3lUUXc1RzJePmt1W3dpQClgUTF8dEs3TSRPbCU4V21bJFhMd3V+''@;'; put 'put ''KHBhV3o3KE16dGR1IWZ0bHYpIUBiW0NRTix0PElkSn1kVi5mbTpbOHFRLEpYU3c0VUNmZWF7PkI7U35UcytUWlJTLiN6OmdGRWg2YDJiY1ErTFpLZGJSajxIczw/cVBmRkF8OWArXk88WGV9QGtfRi5nQ2U9Y1ApbD16Z35heXJPbTtSZFAuRXtyVmR2cngsOV01ezt4MSx5b004cEJybH1CRWtb''@;'; put 'put ''QCl+eCRtRGwxSVgyV1VANC5jZ0taIzlXaSRLQHF5MU0leVdsWmtsdExGZ254TE9Ud1gjflBKMzE4MWcmSWlSSmNtZFkmYCVyflU2PU1oTU9LczIsK0gzUWp4YyF+SzNGbmMzN0poIz9ZKENlc1kwX0EpKEYhVTxZSEU5WGdycWdeMDQ3KUk5Z2x2QXReSDVZZTloPmB9PFNmRCxBNE8ycWU4IXxx''@;'; put 'put ''XjQid0FEN1k2U0MpKks5dFpWfEJIMUF9IW4rVV1bZnpbSEY5ciJjeD18MUxTL3lWWjBuLlhvdyE2Yl1wTlZIVXhZdjRRbDxXI1t+QCNrelQpVn0iXXttL0s3UTNMPDQxTDozPDQ4PnBKcnFKMD4rPTd8ZjNDOkNAWzcyXzV8fGlgWFJtX3RvL0FjflppXk8mLHJHe3A+LFR+VFghQFtUN0orbWxV''@;'; put 'put ''NEdbZlcjVWV1N189a3J+Oj1sJEV6ZE9UfXdFX1d1REVmbWRaO3NmQHJPJl9fYGpEQSgqX1N0PExJSVJmITZ+NTQwVkBtT1JFUnlgYjdeZX1OJUt5UDApND5PQj5zdCV+XWNUaWcucnJWXklgVlhqPlpBLy5MXyQjWUwxS10/RT5MaTElWEJ4NDhZa291ImVhVG9vdlQ0KTFFMXUoLzBAe1kkP2hV''@;'; put 'put ''SjhvTXM9NCI1SnhFNnghVDBweTZtIVo+Im02U2A2aFkvM1gzJFk6MFR1bGdwOj1nVV48KWx3XSJ3X3p0UFRTdl5SdVl0KlFjWkllJSEqOnphUDBjN1JkSzFdOUU4Q0goKmNBP0lkRnhJLnt5ajJHWHZyfCg8QCFAOFRNMSRUMHV9Ozd2bCRIfXAkMn55WXd3bEIsUSx0MXVzKXg5dzYqNEAya2Rz''@;'; put 'put ''Zm09ZmohNDhuMHdqRURdVHtZbmAmTC9TNisqMVd4XigzQHk8QV8qakZiKFRgSm9KR3thRTY6fHkyfm9COX5ZWnpMNlVjQSlCWWRwLCNQa0E4N3ltXUd1Q3d3NXVYVShQc21jQzdMd0V7IVg9c04qImZeSjJ2ND5rcS49Wi5OXVp1b2pOWEt4OTk+VHZQbGFpWEZWT109OS9uMEI2KkldT3p8eyVu''@;'; put 'put ''Li5BZGxAVm8vb3swIiU0PFtKYVgyVCssYXxKWCU/aFFXU3ApTFIyTGo2PmA2XSNpcGNyZ296M2tkXlVqTyprRG51YDNiRlI+NElwRlREYH4mMndSOXRHZEdZYnNHfW41TSRPe2VaQmVqQ1l3T0pFNCV4dWdBPEN2e1hYdU4ibmVVTl9YUCovMy8xQyxtQ3hJbGd6eTJeUDciK1labV1lSj1MN0kp''@;'; put 'put ''eF9SLjB3USxudmthYE81PnNOY3VAMkAhYmhGWjd2PXd4RD5pYTxvWmZ6OCU8YHBzcjlTNTJuTEMzfSlwQXIhXWcuVWxrdU1wZ3Q9aUkzbkdaNW9aaSVyKUo/M0ZiL3V4VVkzPFoyck4qbiF8QXx4Zm1eYyp1QXo3KlBqeXtWWDlUOkhKT1hLRF5GbE4wWSYlQzprPkpnZUs4Y0hzL3tGbVtme249''@;'; put 'put ''K3ttYnpqR3wrOlR2Z2BPVjoqfWVRRWc5R3lCeFNPKixgeD8qY2drI3cjPEVvVDNjY1RDW3NSKEZAeHolZXV+YEojIiYuPVkpUnQla19DS0tHMzdmbmxhMjJ3ImE9b2R0NTJxPGlRQHVlMXhuNnl2dT44PUZZRWMwa2QyKmNEN2NSMT0heEx6OCU2YVJgOXtvO3pgIiRzIVZHXiRkWG5kTT9tTWdT''@;'; put 'put ''SH56UHVAViY0M2Z6a3d4T2xvcy8kUUlTZ2YrUU1hQil4aT9zQHhiQGMkTyorTyQ0Tl8icypXQTc5bGJSYjFuJlo0Nnw9JGB9diR7fmQvSVlVWFc8IS9LaG1EVWF6NTY9XiNOc0deYSZpPCQ/TmF1RlZOMExVKF5xMDkvW2JnS31wNmMyWjpJeVo1ZH1rU2lANkJiJkQhW1ZsMj05eS9EOzFZRUU3''@;'; put 'put ''V3JhUV9eQCx7WzB4YVtKZ1cyYDgmTTVNd3I+elpkMzNKRzkwUl9+QjdnRn5tciFUOm5LKnAre30hTGNtcTs/TjVqNTtmU0QhWlZIWTJNPnQ3VzhVJlBENnp9QVphY0s1VkZZJTBBMyFCZypKezBMYjEyc1d6WnxtVHZ4W2UvYnEwQip4W3RbMU5kKzxMSWdUZWo8YXBKfGY2fFZfL08oVCRgVUVV''@;'; put 'put ''MFguK2Z0IUI+SzohaTNGJHJqPz1TRWl+TFZ1U0dMci5gMy94UH14aG1XeXIwcWBTa109IylzVTp5cVA1TlR1L1teRHR8cnk1MFFLQGtGb31+MG50IzxMZy83a20wQkxONHRnUD1teihyaWcvezpXSjglK2cwTlhdMzpPMldaWWllKldqdSRYXlJNc0tVLEJEdGw1OFp6R1YraE4iOWNNYTxjSm5P''@;'; put 'put ''VnosUkJmb0plekJuc2A+ZEM2JVk2S080TSFAIUteOy9YaFVeay5MTV9zal5EeFlNSFohJDJ3flRgU2dgfj1rc3lQYUxeTHQ2LjVANEwpUENzOjUoQGJ4MT8sVTFyYX0pNEIpRHBgQEQ+V18sQnxtQk0sOWY0Oiw4QTQ7Ri5QYGpFfDN4eFs4T0dVI3xpTDxWT1dbb1VFRSNHZjhKQ3RxL0JrWFIq''@;'; put 'put ''JnFzJWBzb2IvbDs+VGtjV2hUNz02QzFiKFdjSl07K20jV0J2d1N8X0x+fn5iakN0XXZiekZSV0IsMEpfLCNgezRBWTpCYUpbRXB+LDp5NjBDcExOPnZOTlN6V2dhZnxrKCU/MFFIekxGbWMqME1hKGMvdTFsVGEldE8oODpYd09md1tueFgvWnRHS3h4fVpTOzpsUlI3WH1UJXB7YX5rNnV7dVJP''@;'; put 'put ''OE9xe0FjKWQsU3hmNzcqRGdleig1aXp7ITIvZE5UUSwrNCQhO0c3Mk9lcHdiUkAkfV8jYXM/KFBtU3RkMz0qWV4yYE8kJUYleVcie112I3wjWnlMIVBMQFghNFcrMDswaDRDSUJmVTZCSipNWnQ1Lzl7Q0MjQ29wc2ssV0hMO3s0SUFsZ2BTSzNVZl8qKHJ0KDpldzIxakA7MmFsMTJublh8P302''@;'; put 'put ''Lnd6KFloJUB+alttIX4uLnc7K183fXp0JT9kTjZASjJOa28iZT1yI0B1SUgieXJWezMsPXorUjlRWDspUiwwdUhHWSYkK3pLPmRlK2ZwaHd5WVVgOyl4Tl88ZjcwWyZxd2hafG16el9UO1orNENSR3h7WU97PzchUWA8KF4+bV1uRHVWYmM3L1ljSktnInp0flRYKWB3dDA6ZT1wb0d6fDpqOFYk''@;'; put 'put ''NEZSYyMzKkB1IXlRT301V1BUOVpUP2ZkMEZPSywoUjlCeF5ZZl1Lcnx2RlpSZkw2KFZOSV1CYEAxV0xMIyNiZFVJdEdBcTVEJHo9aVVpVWJKTiMkKkNzXWUkVmUsOE0/JntSJj9CcyFVP1FJQE1eZ2s4KSxCTVZPIi8udlFuVzpCYHNlaTp+MnFed3RhPixkc09wOWkxa3liPGY0TjBwUC93Qn1v''@;'; put 'put ''d3hufDo6JHVjfUYzfTlOdmAiKF1mfnBTdG1aQGw3cSZgTl1SPzR5SmQzcDIsOl5ATjdBN3dAP3pCei57WkJqUTZmQ3c9fUZkfD12VEBDVjVDL1QveD9vZj9pL3A7QCwxYGwuI158MlV6eU9gTGRgJSNJQUwoO0lRc1tYeT5AK3FOZDA+VTwlOEN+P0czMkc5QjZYM09HVjlMfTByT3tOYSp7UTBJ''@;'; put 'put ''L1Y5OztNRXZ1eUhjQyRQNXNMK207WGFbcVk9ZWVyLjZNPjgmZU1vIWtwUClgPFQqeF0oYHdNel9ZRlZSVHg3ei4sSno6U3xHT3ZrTTRTZHJXdS5FVVZxaT1hR2FkTiNzJFh7OzcsYDlDfC5CbVhEPkw3OT5vXTJEV3ZGbGVHKFRbY3UsOyg0Nk92SyNKJl1yZUI1LjlSMjpQZFtAKVE5QSN+Rzcy''@;'; put 'put ''eXY9R3w2SVtSOkpJPjJNWHM2eD9jN1kyYFg2WFQqYWMjPSNzRSohdzU6WXJ8RixtUTJib212VytXdFJDIUA3R00rdFtqVlRuOnVldUQma1kkVE5ZXXxFbj1CYmo8QFNHM2dxdEN1IkpNN2tweGpCLChiY2NUWDk3Oz84RUQhajJKUyxed1pWJGYwOnRFS3VxQCp5UmR8cnVfbWJwNCNOJXVIWS5J''@;'; put 'put ''PC9qSV5QSWA6Tkg8I3dkNXp0Oi4/aDI/RFUwTT5kQUc5WUEkdkNtI3ZdbFJpbCtlOyY+VGxSSDxaJnUlJmZNWk5JQFt1UV9LQndkNkM/KHgmbG1WPjcuUUswTFdDfU00eTlVQ0ldRmgiYlszRDVNVSlaVUlKbjcoRDhAVGQ8NEoiIT1kMU1fOzVrInJYNXVlXmMyUTAuY1lSRkUua0NyIlV2eDxb''@;'; put 'put ''eSZiKVFPNGBGTG9MZGMuW0YjfF5qWCUhYnE6cUM3MyZiIVFBd0xbSXFnW2FZQ3RBVUVFK3daUW9fUS5haUpJe1kyMTBZa3M/UnxkQVpqOS4lS2huXkdfWF8qS25CYkpdIWFCX0hxfCshUCNMP0FgZykyJTgyJHJXdG1aJHtbK2x5VjhqNG4lPkljamcwOX5fXi55aTUkMCNEdV5KKkdxW0ZdSWdt''@;'; put 'put ''VWpuSiNXfipoN3lubndCVl81dV5QUTEjeTkiITR3PSo4ZnNqNk58Ii5UQzsjRHltW1lHdiZsWmk/RC4zWTd4NlNdRiFfXWszRCI5OExQJXdxXl0iK2trdXE0VV5edSF7SE96N01QWiQ7ZGZjWnNpfUd+NzNnezgpa2NAM0JwbD9PRWxfIV5EQiF+YlhxIUxidWdvPShHQncoK3AscW0sKHR4UUEz''@;'; put 'put ''T0tRQSpBb0wsRm0lZD83SG4+PkRBKURvamBdPjVocT0ycHxZPVNYcnZhPX5xTm9+Y047PCI3fCxsYXg5VVcwLEpsL0l+aUx0YDVIcEgleChAdWopeU5afSx4XStTVEVvaGxWWF1DRGMqNWZSd0RSdWtWXSlTYDhpRTxPMVp2PzF7fEZiSCRROz5aZik9LHJ6dn47cy44JVtadXtHNlYveGwzUjVg''@;'; put 'put ''Nml5RmhAfFJleT1UeSZKPE50QGIyaVBAQXBsUjdWfCFkTj5lITF4I0xLVXFSUzIzZlZReXVdQ0MvNWxyRGxeZmhjdF5seVEqP1QrMS55TUNTUVJ1aHlfd2BkL3Y9L09OeVkmRiFDVUhGPWwzMFc7N0hSWDs1IWhuTDd3bFVQK3o4KSRecFciVmJNOi5FP0MlSV88b05nXlkxd0lYW1cxd198SzRW''@;'; put 'put ''ej0wO3V4RltZUm5DTT57eHw7WjxJZCh2fHV9YTxfRS83cUVdfWRWKVc4YnJENkx0VSJ0a2xTdn4ueCYjXTNibUMsSz51SCRuSUB9Mn48Kjg5RVt9dj55P3xvbChSOkkwZkljMiRfLGp2cmJgJEQsNSYsUXVfJi5mNUtfZVghUmZFcFFHeGEwc3M0L0Z9YDB1NmZqJUxMUGdaRHNtO0g6T1FJLmJ3''@;'; put 'put ''biM7aVRXaUpWRH5fNjpLcTNkaFhyaUM1elB2WVdfeTA6UGUpUlp9WVVqPGdDNHFPaWRZSDFkcitHVTdaXSwqNl1KRnQxSnJNKFM9SUQ8OXdHL2khYGB3YyYxIXlaL0c/NmZzSS5CQUdqb18pWVFALFBiJl1TRVdCRGx9XXZtbCpdTihqRnBlVUZpTmczMkUxJEI5OmJdXWhYRiFjSH1wcm4mK21k''@;'; put 'put ''P2csdmMwelFDQEBvcWp0SFVDKixtWmUvST01Mj8lN1pDRi8+Wy5eZ0RycHRdbzJ3UV4waGszTzxmIzJhaUZTYXlnIzJaYWZUQTdybUlQIzFIOE9SSXEqbFUib3p6Y3sydn5TbmxBVkhSaSpEcl5lPVleRmFVMXwmWkxheER4eUE4fXhfV0hFN3g1PGxycFRNPyJAdkVweHhwIV1vTj16KUE3entu''@;'; put 'put ''SGUqNnU3M1BkJTtIdHh5aX5DU05kNUJBeW9gfnthJmt6TnAxQypAUUtaMCFsTjhmMEB6YDQxbm5NUTtVVisyKFUyWypdYWkjK2c2eH1nS0xwIzJ3RlVCeUpacDBuS3AvMDA2LGYwe3BRdShdTjo1MzR+dVN1TEo+cnVzJGw6VlhTfXZATzFTWHxoNn0+b08/aiNMKSo1IkB4UEZoYXskamhTZVlg''@;'; put 'put ''T2I+VCY5Uyx0YEQkOGBRTFFXTnEuQEtWd3c3Z1ZVSWN6a2lYZ0c7IkVESF1DbVksRn5iSX1BXjZRLiZFMzhYQm9QUHxOWUhBIWwicC52O3lPYnRNQD56XmQhNFhfQGwkcTs1Wz1eaEIrZ2QofSFMd3o5fClVZUMhSDRFSmtxXzdDJF44RT5ZUn0hJFdIRjJuSkp2QVV3d0IzbHNHR304TFlYVUlC''@;'; put 'put ''IVlxWnBsJCN6KHR+fWg/VylxRDxXPWFNM3ZjZk9yU0kpdnZebVA6PEgmQHptYmNRdiQuJTB2ZWdRSHJTcHlXem52R1QsdX1bRW1iSG09QkVqJlF3Xi5sM1oveEp9LyJ2cyZrUU4rM250RUpja1slOURYVVVHYFUxYl1xR3ZEfUY9YyI7O146cW5iYT1kZ0dkbHMkKk5RZ04+fXQ3SHFoaVcyP3RX''@;'; put 'put ''Tj41MWZhXT5fYjZVW3UhPmE2OGojcDUjXU49Kj5QLD1zODBjUntWJFQrUGtWJD1CQmQxTHNzQ149LzE6NlZyVkI8cDhdSE84O24iT3B6cUpwWFQ1UVlJcSpoNHEseyZXcHpdVTZuNjhPZlNoKHJMVlAzXl13bXFYWmJWY15KUzNVamokeyM0KFZ5KDRwTU9CUkBYdHBJVyRZTGs6WDtmRWswQGBu''@;'; put 'put ''NV9xUUEuT2s1QGwsQ0g7Nnpvb3UqKHYrZ1tgRjw0bldFcHNbRSF4NjpNVFtqQWFRdEV+OSMvWDM0e3IrJGptZU9WIUVZQDJOdGFfTkhSfFhNaSpbQyIqfmtzJnJKL1AqXThKQVtIcj8+UTZsRWlqakpzNCQpNV5URDt4Q0Rie01jZTVZYD5Kay56Xnt6XV5fR1QqTT9+THt5dG11KWIvQkxkeE46''@;'; put 'put ''OzplQTo/b3hhQlplKjldcnxQXiJuPTByIn5hQHtiaWF9d2NYRGc5UyNOQlBsayZAcUZoU0hZcXdfflk0KEkmSTBUenR1OF9FOlZae2E0SCIyWSIuWlBoOmBWUnt3Wn5OUChlOXRQR0JhNkY4WTlIey42PVkmQG9sPDE6VXJ0RmlSazw/XkhkYyxgUDUxS2csa2xyNjM9XUFgYlAuKiR7VDB1KmBP''@;'; put 'put ''R2pEPDlGSlNocEx1YHQ4MHlAKUVpSWhfPSxwO0JaTn4udHxxImhkMVt1VUV2UXU7R11tVFszUXpaQiw9MEtbKGZwOyxlUW9CaUwsflB9UkpOLy95MnZjUGlTKTdFWT0hX2R7Y1NZX0NyQCMqdzE2SE13NWR9LF59Pl0rI3s5IVdVRkJqJFAsV31vMCNwLDE+Rms0WFFSW2A0JiJDZE8uRllvXmJW''@;'; put 'put ''SSFFP0x+bSMvfnZFPGs9Xy97THpbL0xzT1dXZVAxdX5Nay5gTkVXdT4qI1ZkcC47aFM8cj46Nno8ckAuNltLbVc5eE1hcFA0KmUwa3lkUWwmOX5hYmsranhaeE57flBaRWc7KnY3S3d0Uyw4SyFtUWMyTjdbeF1zcUsiZDtwWiF5XWhwSmlxZWUyb3RMZXp6fDcuTktkXn43RDdhRyFUOEw7flc/''@;'; put 'put ''YlA+Ly9OVGRjdFNUXV88dXgjLG00UDcofHZZVDtzR0ZJYDlvSSk/WUZEWllsS2pUNyZVRDdBYXh3Sk9wVE9nejIxcVVoQUZ+JjFaPGIlV29sUlslcTZzb2dSOFRCIy9zOn47Wi8rLFVhfClXKyZVaCRxa3spKVk4biU0cjQyPVUzNyMrY1l2NitgcVhCKnpke152dFh8IjpgcCRFUmNNVjcqYyxe''@;'; put 'put ''PXRsJncuRDY8ZmtlRmx8NWwsTUAuMiF1T0pzSTtQL2BZclt5b35XVGppWFoxYEtEWllLKU5wNjY7Sj9KOFZARyNnK1JCMipofENBcTFyfERdbkt7VSNAeXErTzc5MH1oZkc3VW59Pj18KTBbYlt2YTlYc1tgcTA6OHBqZy95WStDWXROTHQsTWtucU5GX21hKTo1enNoRVUvYHZtblN8NH1OJlFF''@;'; put 'put ''WS54JGBKTStNe1I9MV1mTEp7Pk8kKmMiMyFIKURUfig4cjlTJDwyWE4oRVt9SiY2I2JAVC5mNjZEWW5KRnAsey9UYUNzaVsjRDtSNlJzemllOnR9PHdyYyVQNnhOZ0B6WnRfMXVzS31vOTgkRHdIZ31XTmUxR2dBKzgsZ1E5eWZaSEkhemMjLHQ9Sj1TYCk9XmFEci95fWE6PihXUF9tK2I0KEd5''@;'; put 'put ''N2h9Kys3KCJmVXx+XjtxO2dkbWApaTl9QmYxXSZyWjk4JGYraWdaWCZVUSUzUHNiMmtQcUIoVSUxeFM8fXE0Vy51dXpiWFFecTFkOypeKzUwNj5kR009SDNaUi9SW3ZeRyt3LlhvY2VRb1AkNVQyc1FqLiVPOiU/NFBSJTNUXmJ3WEZ7ZmVNbTVXY2Y9bEg6RjwmOVFZKFAiekJHQ2lZPm1kT3N0''@;'; put 'put ''Tk4ye0tldVc2dDs+P3QwQ3srRlVEN3AzclldcWJYK2xqUDNaKTVZTChoaz95dEhlcz9PPEFFa1tKIy54ZkdiYGpELGoyTEByO0ZGJSYjQFgiRkApbXZMVEdvNnVbbD9ZTnN0cGZNdytbeFZqIjY9VEJgTz1tdjJybFdRVmsmfEEiR180dSFtMF0qd3dRdmZpYWIlfndUQll+JmNCSSleaSwmK1tB''@;'; put 'put ''WksmaVpMcGVWRTVuV0h+d2VpW2pqZHAuOnliU0wqeT1UME9SdXVVd2oiT3UsOCk/cnN3QGFSTERkNDh0WVdedDx5QXRKKTxNfCE2XkluOT9lJCFlRE5KezVsTGMyYThjSz0/YWltY1MsTUMvWkhUWTxDST8he1BGbS5wbXZmVzJwcmpZTjdJZnR+LEluaiteRDZOUC9yaSJJRiNVKzM9YVdmYytY''@;'; put 'put ''ZGRYVmRLWj0manwsXy4kSiRNK1FlOmNLfD9WYnxoKS5DTyksRH1AeFBwX20lUH5CI0ZIX0ssYjREKWB5QHlXI1E+ZmN1MzwsKDhUZFQqVT1JQikjd1lzRFp4ViZHXyJhOj0lYCJNNEM4K09lRUtAUFE1Ty82fWFsQys8R3ZhQjkmYkouPVJSQ0Q0Q2p9M286e1F9Ql4uNDZHRER0Q2pXM2FJUWgz''@;'; put 'put ''aXElISQjQ2xHdUcjPGg5MnMjYChaQlVrLCYvcWl8V3IvQUZkZkJJL1EubW1dVUVqY0BKeHZuUiJmMSZ9dzI1JSpDJVpRSmVoXUJaQFdzTDdXbVBRI2F2S2A6RlgwUStwdXpDKUF7fDhYOTFXa3g3fmokTXtge0EvJjJUQ257KS9aQGBOQkVsMit5O3Q/JjokI3xSSWN1fiF8fX4vdHgpPTkqcFZC''@;'; put 'put ''YW5CeGN9RGpuaixSczldSD5RSU05KFtZOUw4aGJLUmlXPT5yW1IiTmNfXTJucF02WCQlVXpnIitDIjVMdSxiY3tsUHhzR0Rgey9PWXx2NXxwNypEel9pT3Q/PSFxYF1PYnEya055TklaKEB4d1tITyMqRk9gcS9lJEpvTktvSltnLEhfdXkqSHQhMi5HfUAmYWhwT1MiLjdBdF94Wk8vbHt0czkz''@;'; put 'put ''dV4oeno5Ql0+WHRmQ1JnSXVRSW1ofWwwP3x1e0tnJDQ+b2cqaH1yMEs5UUkjY2VlMDNHeDZhQXZueCoyRzJgbSoxWnRiYUAmVjRSRD9ocUUyVSJFNURHNjpGJW5rQ14xemtBPmE6Y2N8MU1hRnd5W3l3UmtaXz8lez85bFFVSjhKczlIdWQoZ19JRV16MUVMcHJWT1g1ajdEN0IvO3NmQzcxNHcm''@;'; put 'put ''fVhFVUc5SDtaTFlhYEViMVZ3THgsWDVRI15HdTJWMzxhKjJzMnZ8a0Nsa1dANVNIQTRsR19bQmk4WVpHTDprJXMkeyU6X0ZCSE0hK1V2R09aIzU0Ll9UJEphS2tFQzYoIjYsZEhOUDxyN3pXRkpgY30pfTJkeVdoZFpYWXBjV1YrSlNjWF1kTj9OZCFZbipqZ3ojNmU1V3IzXWIidi5zJjBXc0pY''@;'; put 'put ''YE42Tl1bSiFLMF98TUZ9Y0krTiE2VzR1UEhCNUZPTVEpIjRTNW1SYDQ9bVh7IS9XPG5mX19JYnV6OSRPPXVKUDZlTX10NzQrTEQ8KzM/bV94bV96KmR3TDh1dD5fezUlWFFebj1OVVlBW1dZOkg8fjZSflZzM3RSW3ttQWcwQ1VJXWF1biwjJVpYZkhwZDMiaVBxJSt6U3xwJkx4Nm86IWtQbFJo''@;'; put 'put ''TiRVQmhvNTopTT0+bzJ1UUpncCZgMDNob2IpR0hnWGleY1lyZ25TW1dXMjROcTE8O2tmVEs1JktRIlUybyU3NV1fJmluZmU7STFsTzo2cUs0MDg5JnEyMnB0fGhPWG1jeytQKytNY3dXbiVUK3ZiLDliU31XdCQzXU1tO1NNL0gwK3cqRCU1Tio7PF5Edy9GOGJSbVllP09EeXtDLzQ4WyVNYG92''@;'; put 'put ''JFpyMHk1cDdYfFJ2TGlgRmFzRF5ZUzs0KT1FYEV3Ol9VXz9ve0o1UXFYSiE+PjxKV0k3elE1Y3A6VkJ7M2x+Vm1OUjA5e0szZXRKfWNrZiFmI3tRbVpndj06MF95PjtDW0FXazttfj1MPH5IRjN1OkBSNmVsdyRxT31ldGttZz5TQGJUU29YOFd1MW5UNXVCYzZ0aC87V352Vl0lNWcveWdxUUMj''@;'; put 'put ''eXs3Omd9OEZ+fSVnY2UhJHkyak5LXSNuaTR3ckhWSjB5aT5wYiVINzshSEJUMWZ2c3JmRUNHQ3d7cHZidUd9dj9dYEB4fVZUNkR9Rk5xcEVlOVJURzcje2ZmaTMqfU19UDVaW0MyJkMpX3NBNC5iKU13eF87bjlzK21dPmQ0Ji8mWHIleyYmZVBoSWlqRDZvancjY1h7NDtjU15XKlRQTkFjPjAi''@;'; put 'put ''dyRtTlYjayg3UEFRcnFzLzdtcTBILEhza2U1YDwjXXg6XW9gNmdwemFCJndaey9UWTlge1JBKTBdcEVPUyl4YzZqODc4KD94ITtQKWppZGwrRV8udFYqUHxzZkZGTncjZFNmemBQfTJBZ05kVStTKGFOV3UoWSwqL1c/ZFsoez8mVGIkO0dlSUlBXmFESUVOW1FUcltEV3plLm0wcFcjRS5TTExY''@;'; put 'put ''VG1CUX4/dW8yY3s3Mk1+cEhjbSZEIkBAajh8UnNHTk5Ydi5FSS9nbVQkeF95bG58bTN+ZygqXm9SYiU6fHQsRTtsdmokWX47SFNRV0kmSHl4aUY5WDkvW0U2Jl0oUGROZFVBRigxbk1BUSZ6Qj5jLiJZPXNwPSs/cE96S1kqb1pGblhGdHcweURPeCMuWD1hUG1dYkxELDdSPj5OIlE7KEI0MCtT''@;'; put 'put ''K2d2MCV6aiZVaylAc15UeTw1ekxfaCt2VC9bVCMiQVUqQWtQfmlaNUIiMFp1MXk5KHdlNkFJXSRoX29qW29aJmNlJjFvNkYybXB6T2MuPU5sZ1dvbzhVKlhnO3o6S1spTW1Yfjg9RURbVFZiNWZlcVNxenxneVtvc2h4XlB6W05oUkNpeT1Yd2t4WEp+SGo2Yk53RHdQTiF1Wk1qYEd0KnwsbkFe''@;'; put 'put ''SmtaakcsQiNaSXxOM3B8KDRsNF95Z2dpN3suNTFpSjZ0fTNOUzhbPlo7UTEreltWdFkzUUIhTGlIcHo8bnIzYUBNLkY0aiQ9UnBTYU4oeTlwMjd9V2hvXThdaDovTH0pT2FJNngwVldYNT9JM3FbfHlVcl4jay9EOlR3KXFBS2oqMV4wJHMrKV5sRjFhcXtiPyp9KyFqZUU1NFMuKyMuSyU6UFc/''@;'; put 'put ''KGBsbFhiY010MXRrfXRbPDNgaCVlLFNxWSkpQ0k6IUVXZSVXJGc8fjtwVV9vRiNoYXFaTnsmJiU5fkFBdUJEVnNTdSp6PlExe0khUWBbXWRBIyh6Mj0+LylbXjVkVkIpSXI3MHQqQUNNdCMvXkp1MldBNHI8QXg/UmlDMDpzeTNPS0tzYEZhTz1ueXBIRUYsdngyfEVZaFN8Nk18KDVaQDNJN0dK''@;'; put 'put ''elYrbytYL3hBSFVaNERNMDZALiI0WT4hZVlWU0QyNlU+LDBmNTszUVU3NHx9ZzZlSiJfMEhWNXppZXh9dXg5b0U+KUZrVDNTN2ZrXzxXRGV2WFpyJXhuWmQvNXp7WHcvUiE4MGRkemRhX35NfGV9anN3XWMudlJha3dPc0l9T3B0SFFvX2FKcE0wfSlPaSR5aykqRGN4WHhYLzREUm54OGN1V1JA''@;'; put 'put ''Zy8vN0VkSDJSfShuXih7SDhEYjUpSUJFWGFGd3pwZ0ZQdiRFVWooLFRKeCJNa0VXI2guX1ZtI0EhNzxgVCF+Wk0zIUYzbSlSUlg1RiRISEhpPSk3bC59XTVIMWkpOD8uWUM6ZWF1OmN8PkZhdXxvUWxmJn1kc1o2WWRxOC9ZQXUhaDN1THgvS3poczZaI3BDYmZnZnZtIT10dzZiR09UIWAiInVF''@;'; put 'put ''U0VYI1dvYmpdaTJudl5uPHMuU0U1PSo/M1o4TyU0SXZpb0ssfjU+ITJ5bWEuVmh7czIvUj1rVy8rLDZNO3UhZEU1ekhwQENCKixpJSJORzNeY2tzWU17M0JpbW5GdHRTdlkuPFZCUjFbdThTL0YzZmQhOSFrImwjaUJxXWFATXslXnM9P01hbFJpfEVmbSlMIk5xeyhAMlB1O0I9Ink4OUYiNWRL''@;'; put 'put ''JTFhTz45WlRda01tNio6PHdoJiIkdzJEKTduRS9jfjY/I2dgeGBlZytDfj0vbEl8Y00odnNpdEB8LDVvWnt4NFZXZUI+VFg6KnBuWXMjIys6ViwyWEdFQlMkRHJvWlJmKE5rVTh9VHFVT315RWlofDw0Oy50dntITSlhInZoS0Z1UkFtSjc2LkZnNTQubzgyT3A7VGsxdEV5X11WZTZjbjwkdHRu''@;'; put 'put ''cTBiXk9+ZUM3RnhZSlhvSHBqKzcsPihqSUsoU35DRzhCcTFSKGNWKXxnQFEpbj1+P19RcDFMMFZULGZ8OHJedXtxVHJkSFNFMk1CPyp+XSZtVlBrd0dPQDBCLGV4fi4qUkBpbW1zbWkwRE5ve1NxQyxaZDRGXX0/K1tSSVhfVTp7aTlGW2lNenBjLlIwT0JeJFlSWlN0ZDBqLkspLC5BO1Q3ZVh4''@;'; put 'put ''RHJoVkFaSEY8IlpMe3dpM2VUaER6NTNUIiNMJSs0STt6bWJLJGdHKGg/W2k+ciY4Pyg1cTBvJC89bklhbkYsVnUkKE1CZE8hXSQwJGV+P1QoW117ZGtRWFBCZEdQOz8iSERqXmhNO3lheWo+XkErKTVqQjlheCtsVkovP3Z6LF5uSGRTfnIzYkEkOEFGR1s5amNUX0VFT1R0NEwjbDkkXzdQNGcw''@;'; put 'put ''RUt1ez92cl1MKkdSOjVSdi9URi8kT18hVyhjQ181N11bYkNwTHtQNCFSdXs1aixBKH1vTzlMPk89P0BeKThKWUxqWyJedlFjYl55MH17JHNbNzYmdmIuc3hMej9MXkNlTDBFLkRrK2tiNChMbHhLdz1uNSFvPFJPIX01MWREbXJpTiNKX2g+KEFhXmBXdURZfEx4WjtCWypQM2U+WCE1PywyZiU6''@;'; put 'put ''QmBULy9MZVdhanUoPUwpZiZHJWBoX3tmIzxnOUUwejQsYEI6NmBaSzY6b0hzNitiI2paNGFuXWFYSmh5cEJ8UD5udEpXMi4kJmFqOkJCYytxbFhBYGY7SUtgOz5UeXpDOm19fXVQY3c3Wig8JU0vXVhmdyN7ZUM6USxKUHFoc2p3OmpTWmU+TkB+bVVoLjpKVmFeRENsa3ZqPV0ja1BtX3I/UX0j''@;'; put 'put ''c2RoOGtRYGhPOHFxPWVaSUpiYWcudmo+eXRMKnJgSWhvUGFeLzN+QkslSSUlOUJfMDpKJGtPUF15a3ZDJSYuPnwoLyllISJwdzVIOl04cGc1bTp9TWo2XmZYImZMKWdwLEBKNCooOSFAQUwlR2g0QHNPMDFAZz9bJGR+Sk5LezcyVGddNTFZY2Rtfl8+R3VVQWZ+YSpYIyQ/UHFaPX5+Li5hMntf''@;'; put 'put ''Xk9da3lnZGw0SGxJQHd5Vll8PEB6JE5+Uy89UjA7N3YmITxZeDZvajFYOGwuPkNuWmQlc31PNiwjI0JUe0Y+OCpfWH57ey4hYFkxKk1AbkZsRjlYPyUjXmBQOitONkNoMl1BI2p+PCJrdEx3Jkl+UGojIzVnZV19bWA7Z3VLIXZjenAiaCwiQ29FPE8sRDhvX1BiKCwhV1VpeWBqVWhfKDF9V19g''@;'; put 'put ''MCghPTtdY2ZhPyJZS18vanFYO2d0eVA+K2JeZzYoYVlDL3tpcmliZVMqOWdtKD1EZDltZjM+Sy9CYzxMU0hKMnpqdiNsKzgybjpuVy9oMz00a1Y/aThkMklRMXNDJHoxJFRdeEdORSZoOncoeU1UPDh7bl4sWChoWSMrd3NOZWwvY2tATTRySFhgJXBtNGg/NTdkK1p3L2B5UC9FbXUmJWtNMjQ6''@;'; put 'put ''STw5LywkZGosTnc2Z1I5cjUjeyYlNCVTNSNALF12Y2QweCYrb2ZlX2N6Oz5nPHtvQj06KVFpSkZHWitsJVd0IVEpKWJzMjtqaG4xMVg7Vn1ERCNLdTh2IXE6KmM8WENwQ2U2OSxWaUZqMVNlfF5kUlQ6OFZxKkF6V08hc0ImY2s4fWc5cXFhT2wqcHV5VE4kVSFAQk1lYU9acG1XOHkmOGM1X1Iy''@;'; put 'put ''Zyo8OTBQQVNbbClbUEpnZCpYMG53fSo1c21bTTVuOzRFM3xlOX5daGJOSzReQDk4QSFrZkdfRi5zImh7eEUuXVlbJFtMWngkajFfaiFiSSNDaG1KS00uZCErN0BAeEgyQ11gY2d4OFIvbT07WjpgQipyclNzIUYqYW1KQ0BwWlZBSXZ+JktPImJBbHh3ODZ5X1JbSnlCcVk2Yjxvby9EZSZvZ1hk''@;'; put 'put ''QiQsR2omX3dSJlImZ15ZcT0iWTZfe0w0IVcmfFZZJnk5a209Ykc9bnVtdj12a20yMT95L3wwZTZaWSVHYXRKejppTmBWcmheTShlKk9JXVdxRTEkVHhgWzg8SEBZWnhQRjxpXXFwOEd4aGxtQCpLXjYlWHVJYW5dTzY4WjIkRyg6bip9WDZZMDY0bitDKlJuRyhxL1MqMzUqIlVbUWgmcDpIWVR4''@;'; put 'put ''K2gzfjx7bTp9QltdVjA8ek0sUjA2KEwsNTtdaWBFdz5kMG5MLkheU3RLPzllfj9xIys/SUpGWzI5aVR9alhNM11Ud19GfXplUGwpaVcpWih2TTpZQVlPPzM6XSE9KDV9bnVJWzdXNF99PDxxU1YhSkRaPmtgLDQ6Nz5pNTsyMVBpe01pWjE+anElY1QoeHBicFY6JDpGJi47RUFCSk9fdmVhdVFa''@;'; put 'put ''IXhwN3RnQmxSI3NxLyMyb31GS05SZkhTSE88MFIkalRVXVFjKmNwcnNafiNvVCVKd15FbDFXW1FNRz8pNTY9Pn16Tzs3dD54bDtQQG9UK3pkIypGK31ZfkE/TmhMa2l4VHk2anBWU3VaQ2pCb09qcXF3LygvUG0vKDVVYE1dPT1wUFc8OyVVSlRAMnNTfjolXlJke3VSOzxePTtWaC5YTT4udElZ''@;'; put 'put ''JWdxcUddLGpkfHxOJiFOdGpnbERpVHRse3FXXyhTSyxUM31CMzdtRCU+fTJkeGt7L0w4WVM+M2pzLzluTGxaeGJPUyN8WlV6WXY3ISFNNzl6UEZOcl5FaTppRkJrJm4kMChhNFhmN1YvZjx4K2YwUFYvX3pxSmg3S1F8U1REPT1QK1khMCowaHIhO21XWDk/cnFXZ1RUWSFQR2dmSnMhfk0rUUg2''@;'; put 'put ''LDsjSTg5TUgvLGJ2UTJaT2ljWXdgM2JmNFZKLnRmXUZoSTZiI3VOZyw6WC57fHJyLGFCaXNGTlYzRTpBJENCdkREUmBAKU09PGFiMkZIMyp9IVJMQk5ua0YzW0BoRXIlYmsmWDowNDReOVM4MyxAU1lgfChFV0xUbkxTRj9nJEE5clpnNltgfCkmdTdRQzB4Kk4pMCZHUE1zaTtTb3VVZm9gI2NF''@;'; put 'put ''QmAjb0t0KnxfL0BJa2sydFlkI3crbHFaUjQpQ005fCE8VCkmdyhEYVRRciwldlkrc0VrQnRvPSZyW0NnSmd6blBfcjliRTczKUxkRz1XXXhgMCtee0pxQy95dCE5VX5jI3d2JCZNcDtQdyhZb3NSZWcqOCFpUXEoX1l5fXorOzFkdVU/OUpfcTs8emx0VC8rQnh0cEFCTnR+MjNEfXxNTiUvTn4y''@;'; put 'put ''eCtbWytOWGpNPFAyRGtVVk4udExHck1wMW9CTnpsaXQjKll8XmcweTNiP3JpR1RPQmRhQnlPXi5FP1Yxe0NlRj1JOUJNVThkdFFhciwyeEgjRWlle0I6UzYrSXFSfUVeW1JCVHZWTkg3SncsfXFPeS5oOVZIN31Ga1clWGEpJUg7Kj9LYkFZZG90T31TaVAyYX1jYzNIIyIsNkhmVVEoLj0xS19o''@;'; put 'put ''ZEIsNVMrLj5dZHVGO1p1Syo+azRFWlR6aE4iMUw2NmlEZSRTfHVWKCFzdkArVn5IWChbdXNDey4hfVFvOTZfUjUpP2FTVT0lPyZdZD5tJFQmd2VZYXl+KTorIixHVF5deTxjZTlQaXQ2S3BJQjBqSS5Ma001KG94eDBYfjUpcXh2YkpmWSY+NlRBLy4oR2NBMUVIM2ZkMSlXZXV1X3o9Oj5pYmEh''@;'; put 'put ''NWJBfjdBJko0UWUidTdhUzBiVncxR3Y7Y0FHJGc8a15JREU8aWJfSlJudWlJI1c3dSpjQjU9MFkzfGROQyhkK0hmfDAlNDYueT1pYS54bnBjSiwmMU5KcllRYSkvQ1c7YiguXUtPfT1APzF4Zyh2cGNqOTZ0P3JRZGhlOjd1WFM1e0VVSDUpeSl8JU5Ebn4lLFgmUWxgITFYV2A2bGRpYHx+a1Uw''@;'; put 'put ''WmZnJVRFOFFsP28vaS5ASXQkR1ZXeGRSIWdVdTt+PUxja29OL21iQVpmcDksbyluKkxgKVB8eiJlZVUhK0cmVEo0YUteRjheNVIqNElQekJRKVZwODtsaWFyfDRNL0E4YFJrUltzVk9zQkUsdV9SSGkqNDFmSVR3Tkk9NjZTJnNqYVJzbn5vTil2OV9dRyV8NkM/Z0Q/M01edkZdNEQ2JDlwUF5D''@;'; put 'put ''X3kkOUwrdntSbyhFWVUweEtoSksuVWJ2TClAU1Z2VSJDNVhWVCRUbThrUStjMDo3ZDp0Ykk6MmlqO2VzRjp1QllLK05bdXM+V3gocmQvblVnQTtbPjQzbEcwLjdUdyQufGQ2SkA2NVY9R0puLjB2MWs7PWhKdEU4Q1VTfS9yTWEqSWB8VCk5REtuKylvQ1omJihnd1tEWkBfNXFLe11eTyl7VSp2''@;'; put 'put ''QXhMRUkzb0RzTkB4bCxlVVppOV1CPTBqYXljNkhDVWVKXipTIVcwZUtnOURvZls9aUdMWEt9Om9jYDEuZCw+SFkjXXBNdkJLWGt5fEdHYyxiTnROT11hLixibVFQcH00ajVJI28+Tj9HYEQqQi9zTSh2IUc4fkIwRnpUUXJsW1Q6VyU+YGNKPkl1XzRfS2IkaG8rJjFrPHBNVDZKKjlPfTcvKElO''@;'; put 'put ''eE1jcS5+fWE9Pl9NUyRFVHVhMHROZHQ+RFd1ODUkeWN6WW1fK2AzTURzakhOJClUT2JdUWVxcHhHPCN5KiM8a1U8e1g3cGwsZDxCY0trSTR1WWZmcD9ae1UiLDVHQXV8R2o6aVpdJEhIcllSSDx8YlUrKlhPMytUZXVwW3V0P3oqMWtHQDxTaHQ0WSNlJH4hZTRnJkNqR3IkSUpHXkx0L1dpLmEm''@;'; put 'put ''KzBHIVklNFAuTS49aX5mSC9Hc0czRmxSdm14Wmk8NCxdK1hpWXp6IURycGNzKGF6NXBHTi55NGt4bCJPLDVnQH5qVjBfTGRjPDBWT2UzNS91NWE7fFRaaFdiPWJfU2wxMEZPeiwqfThkTFolOThqPUpCfktkO20jX2hCfUVJYnZKP2BlR1JkT1hyO0hsKGNhMCZzdDBVPDJPKUE7XV07fnNWSGpF''@;'; put 'put ''JlBnOWMvdXVtWVAvTU5NUmk/WkZwUHc0VHYvL3pXUWdnYFVuT1JNO209V15CU2QkeTpvblFiL1tWUDs5PkN2UkA4cX59blcjZHtvTmBdP1o3KT1TTDZQYiYqR28iVWlaeyVZPS4jW3MreFRYQG9mb3Q/ZUdkK2FgZTglPnJVblZDeXJeWVYvJEVtS3kmd3dkWG1UMyhGPmNdNF51MSJtYj1he1NU''@;'; put 'put ''bWx2e2UrJSIvJlo7Iz5qSzshfC9uQWouR2FTYVFGOFlqaFZPL3kvVlQ7VlQ4VXB4Oj0+WlJqZW9RZUNfRzdwQ1JnJExvajY7anJdPDtAS1VPe0JeXz17SEB1SmVOLl8wLCFZRDkmdEZxNG1TNnpdTXNXRFd9b2YsYWZMSUo4K2ZdY0omWlpOfXN3WHw5ZkVQQjRqVEVte1RxcmJGVSh+Qk8lejRe''@;'; put 'put ''KXU4MmhxL2tLNWp6eHMiMGFqPDp0e009M2p3bER+WkQuU3lfQUFjdltAKzRqZnt8c1UweSMiS2clQnQ1SzxMaF1ifDt0d0NfQXBHWSt5Njd9T1srI2BQWGZ3K3xYLHhzMV5dVjZodS4+WGgjLjllT0N+RjtwUis4R0FHTzN+SEc9bXp0aklPRU9EYHVKc3xyTzpEb2tqW11VM21UT1g/XkRiYXc0''@;'; put 'put ''ZTFkeCIjMU5fdnVpRWlOd1BKNyReKzl4RnxrYFd5RzoocyVHVUpaTzwhQ3B1IWhKYntZO343KjZ+LztwUCtMUXdFbjlAen5+SHhxdlIhNFEjOXhgd25dTyE+QFo4e052dWYjMmIpL3loYVU1MWYqP188O3NQeFs0bV9EMzFDYHxAaipnMDE/WV1xLzBjOVJmMmlCMkYkb3dgLlNPPDwyYk18eCRH''@;'; put 'put ''MCw/eXc/Vjh5ZVtyXnZ3LnM5WDpTMFJ3LGwxImR1XUIsYjVwMHtMaSVjU3csITI/aEtVNSRlbW9McUtJd3I/RnwiYkd9bzI/en5rMFpwXkpwMSVCd3h2fCI8W2pVSlNKPCRTV0t3ekFSc2I7bkREZzJUJFM3TTI8aj4+XUxzbU13PFRXU0ZUbVc+flNpIjRqN3dSKU9AYHs1Ykx8JilLTHZHc0wv''@;'; put 'put ''amYmcDsvRFZpYCYvK3RYdDhRcSQvbWAya2g1a3dNal9FMG8xMnpzRSh5X11UVClJbzNCbCFKVjc1RnNIbDo3MllLZD5sPmk1L0tNZDxzRW9AfmBHWm1VcmhteW1KZ09CVTB6Umd9W1EyfCRSXnhHMyksPGh8XSRfWTB9UXIxLG1nU2d9dkUxfXVVMVtgUFpjNVF5OUtfU2skTUI7LjQpPn5eI00+''@;'; put 'put ''c19MbjRpdTp7QTkrOiZBN1E9JHAodTcvJjBadiRQNGQ6R213S08zYSY6NG9hfkcqIz4hP1dfL2YmXS8iWk5zTUZaeSpQb3JaZXN6aVpxTXFVVEImX103JFF8cDtYfkole0wwOyFmeDgvOVh7V0k0dy92fDplU1hfKWAsIj1lMTUsa0JEdEYsST04OXBqQTRoUzRnak0wPixiPmZ7KWJKMz07ZiRu''@;'; put 'put ''eEZ6PDhAKFsmL1AvbTdKbyNLfnx8fWkwLltmRDkqaEtRKyY+OEZLYnhUPS93KmVlOip0YWNffnlGTEomVUksPSlCdWgie1N4LF9nZlM0TTI9fl5Lal9zRkB+LHxZQHUoYSFMY2xfI3MpYWJXK3lDfl9EX0ZmbXRNemM4K0Y7PTgyTlI+JlBwQkcmL3YkVTgoZVBNYSNPfDdZSVc2SUd1d0l7OEBD''@;'; put 'put ''VHBGWSlQJjB9elY4PX42dHxESVU+QD0lZjZ1bXV5fFFvJWdrdkNLXXl0IXclZTh0bnwmYjcuJGx+V1gyaFUkKzU0LERMMjFZa3l3Iio0XWcyNUhUTnkzTnIyYW9dLzorJUk2VTdQeVBHdnBuIzphLDxRK3AxcGtaXnV0ZlNmflR4JSlDV35wQXwxTnB6O1s6RWZSa1ZWfUJ5W1svPG0kcDZvWmJI''@;'; put 'put ''UUB2ZG4/TGdfdDRueiwiOCsxOGRpUz5IQSlnSm1nWWFsZFE+b14/SztUOyo+dEhAb25Ncktsd2MhRmplXVpmWTF2U1R6d1o1Yl5XQlY8dWNpajw7RUhmUE1dMUU3dGAlO11KYGIvPXlqVEwoWCEwaW40JiIsfD1CXWkvbT9JInM/XyksYDcyM3E/Lz88QD5yYX5hJCIwN1BTTnF1UG4oJi5oej9l''@;'; put 'put ''R2h6bmI1OEVGWDVIMU4+bCRdcEwlbkNbTE57LlEvJG9vOi9RKzxaT3ssZF1tRGI1QCo5VCVPTD47VFpueDtAXXBXfnclJnFWKiksTTtxa3QsVzUjIlB7TSEselJGK15oZ1lyLmppPl57Tnp7JTxATnp7JU1RLm5vMXdwfElDSHplYD5qc2UpVShCYCRCRXVLQks7VCVMU3kvVW5aRS8pLHZmYTM/''@;'; put 'put ''TCJhZzc1a0RAQCNxTmFaWlQhVVJ4YVB8JUdBb3NOREhhRTt4Uz1wMj99QCFlXkhedTAzbFBPQXNzUnFyMHVXa3I9NyFLLEksVzVnM1p+QURNM1ZuSyxOSHw0MH1kTmY2Vj5WIz9ifWkpe11sMWZVZ2psdEpQczRDSlhoLDt1flYpVDBJJikwP09RdURuRktLeTUlTi9JNixVYj80ZnFiOSFgNn5v''@;'; put 'put ''dncpLyFrO31pOjgibFZsTWsweGh6LHIiR0MhZSozZU50W0hJUFdyQ0M1U3RdbjEvOSZmdl5eNyxjZSRLNU14IXpCRk9tbGhTeV5oc0NZdTUoISZHfCo7aVNXR19HSU0pU09aYnlickJWQ3UlK1ZNOCVWUndwIiU7OEhYOig9eXJeZWBXaUdaJHEkMjA8ZHIqQmYmdGZwcjdUaSxac2p9LzgkU1Fs''@;'; put 'put ''IW4iKypqRVFLNChSKVBYMERkTWF1eEIjUVNEMjpMKFI7QHRCbk1tOGw8OWNSVjdCMm51YyFZe0ozcHtgfj1rUFRdOk8zQkA3azhobGRQQT9OUHk3eVFydHg4ckh+Ilc5JHdiOTp5KyhlYTF3bFpeQkZIfCU9ImxQaTl3WDI6PUN0MEQlMGh9JSF0KD13fjV6bnZBZyhNTiVFQ0lIQlIlfD8wLyVP''@;'; put 'put ''Tz9AdjVDdW0sKkU1bCpjYk1CQ3YuYjdrY3t3KEJ5ampud2pCLFc1KTlje1BbYVVbISJCMlo4WmtaV3dZMGt8UVt5PGtgbzp4LD1qYCFyPGIwa2BaLE12WGp9czMsJCxqbzFVO15BUiZ8YlFZRl0sQD8lSDo7LElIIVZ+fjBSVypUSjNjaEYpcXkiZytJU09bJTFLdjhEK1RFd0MkSjA5YlF+IzVP''@;'; put 'put ''NiR9PDpkN2hpJjYqZF9QRlZjdF49KCRDfD0iOz0oUHBycSxeell3I2E1YigiNU01fXFKfG5vfE8/e2B+YUksfmJpe19QUWRPRTFDdjosX3MzZ3haVCUxaSt9JV9VUmU3MG53PV5AKHxoc3lwVXhHQmt4a3g3XVBXLE47X18yMSlMKE5KbX5KdWppYWlgNDlSUz5xfWJGI0BaUyZNXkBUJW8qbFp0''@;'; put 'put ''KG1uZmpAfV57MzpObWtgQWlualJSXVRsLE9qWDY8JEhiIWMoQX5qazspMURvenRBMzV0UHs+STNwL0BYZHN2UnhGMSNVUnZ6WH0jPS44PGZWUDIvOyRFSigwNDQsTjooJi9AciF5Jn52WW9YPUpPUUM4ZDhSXntWYyRyKjY0P1p0ZF0iQ3RNQl5eO2hUSkMiW3MmP3A3cShnWCVBIz1oRmF3akY0''@;'; put 'put ''Vk8oTSlRcjc1LDdTX0h0TXtGOG5KfFRdOl1aJFQ6LmZxVXBXflJNakMzNzNWR1A3UUY3YVJgNElJeiRVM1gmTU5oRHUpKz9HM1EuUUB9MjkhaVJvVip3RE5DQEpYRWsoUlJoXStkT091YkIlUCg/PyRxb0hiTXViMyMwKUpCUkNFTi9aeThdcFpnZ2FRdjtsPjZ2UGZldU1UKFd5eWRMe2xCLG41''@;'; put 'put ''RmNjYUpBMW9KRTFRcGBpWH07KTIlYlFnfTtWO15oKEN1LDlldFtfW0VialM6ND15dHQsM3k6XmtjTG9nJFI9aCVLaWg1cDU2eXxmeSUjVz1CYnZnMHk3JnlBejpJRmdydSl3SHosISwvWX1RTVpqU21ReGlgfXBjWlpOTTZUXlJVPDZ+Q20kODs4YCtASykmZVVGcHJxTn52e3VyUEFiLCtyYlJP''@;'; put 'put ''TTY1PDM2VEAzRnw/RCRoaltPYW9+ZSRULF4kNHgjaix9WT8vXkxhTVFGNHpPYUlwQTp4bGlIIU1CWl0uQlN5VGQuTjBdcFNtIUk9aXQ9YEx5e2ZYV1kmSWZNdklqdj5abltTKGxOL2ZAcWJSWHV2W1ZZbyojS3R9dCxCdUpTaDJrWUtbcWxoLiJGPikpJCN2c25EeTNGa30uL2sqIUtUZT8udUQk''@;'; put 'put ''TC91OUZYSlVQUXVMTyokdktOIW9DXnY1T1FUUyFANSwvQmV4fH1AdHhYczwjclNHa25Seyw8aWllO0lNNDUveDJEZmJpaEFkOjBUSldwRnFZQHlTWCQqJUk+IzFMX2AvVnhGcVlqLz98V2UjbFJYQ3NNIXRma0ZNXStqQDw+STEyNStGUUcoXn1OdGwvYUNTdWhtWj0sVEkmYnBxMFZJfCR4KlZR''@;'; put 'put ''Wl1UZiEveVElcTdhMHV3Oigyfks4N20mcUBuMlFVYi5HSCwmZThmVVgkPWVHJSNvR3hyZ2tvLmskJjxAMVElcW9+SVtGQnJJQH0oalR2XT5UZjJXPmFVJUVfWWQjOml4V2QvbTNQZmNCI1Fwam9OMixbTiVkNUg1XnN1Mm8/a2Y7O1Q8ZEh+SVc/KyQzUlViZiptazEuVkpwTzt4IjEhIXQyYEBs''@;'; put 'put ''L1cjV207eDxtcWp9azc7O15Idyo4QjApVDNbNlRGVC8sWzNdelJUMitgZmBgemBQWzhnX3FlVWNbbSYhcC5HRnh8MjJnen1wTmFjKns0ViNXWnZORFNlLnU5YVhkLz1nJm1qKTYiUiZGQk5oN0Z1bmc8UEJGMy9qPSNSRjp3S1IhSDAhVmFFSVhgcmtaV0pBckwhXk1AJWxUakRlOX45SmMkT0lV''@;'; put 'put ''NXZgV0gvUWJoWiR3Xj1ocC4zQnlGNlpjeGJ1RVhLLFJaPkBnQnw2NlRHVEUqJlVjW0hxQkNZaHhHdEt0P0pWU3whPGxle1pdL1lVPGQ2c1lPU0NQeVlSRDFFTDBzZm9xY3k5bEJ9QTRKNGIvNWEsfU50SFJ5MXZrbjQyezsvcVpKXW55NntAZy5lYWthMVlnISNzciMqNjpmK355LEp2SEJNIili''@;'; put 'put ''UmxCYzQ+S0BXdVEscmNqT2JHaXZPflJaSzN6QzBzJWJydkBkUWpAbHAmLDplQE8vR2NSX20vbiwlfHs6UzNteX03cTpQNzl2e01uO3IyLl8xMWNBfkg6YWBhYX5OOXgxaCs9MCEyX2VSOXEzTnlaQWNQbXJ4IzJ0MEMwPGRyZHYlTFNyT1pvPnhxWUZAZT12JiQ4ITZjV0tfRCwubX5pKExoPV43''@;'; put 'put ''O1MoZTB2Szk0QH4jYEBaUXpgKj17Zn01T2lGKWQwVERAKj0zLlUiI0tANU9vRDhZR3d9b1tlXS5qaFkhbmlCOlcoeXNURElNSzJYe0xZWnZZQDY+eihyTiZqazNkQF9pMW5zR0cyMjlXRnw/bXRyfC9BXTxpUzczTm1Rd1svLlo1Wm5ZUXJqaEEjKVB3eE5XZmR+ai8hTWFyPUBrLzk1ZjQzNzE/''@;'; put 'put ''YCg6MHxEeX5qNn5mYm0mWCh+L2hTNlR8R3B9OmVkelFgNV1qTXlbRC9pWFZoRm5vUkQuJWpFYk9vK251ZWp4WGZOaW50VERTMWJNKV52M3UsO2hDclBuOjREa0E0bDx+JF5wKilGbyJZPSpUcmFVPVQuSkdeQShTTWY6JC4/P2MvfF48XWV4eSx5P20lSFhjcCRjO3J9YUEreHhAXUxsaXAueCkz''@;'; put 'put ''QnlwK2dITDBzUmpvQTZLbj5dY0NsLmNPNXtBSDQsK3FxWUFrbWpCW1khd3klSHV+WFdAZVVAallHVyE9XzsmKV5fO31hczY+Tj1UYTA8bGRiQE88dnJ2OT9Ie2k7cEt+Sz88LEoleUM0SFFQbnt+aG01ITpwOTxfSmg4dS9yfXNaWl1URCttRFNVc1dAKV57ajt2V0NgaVVEKy50TCElaVs0L2Ew''@;'; put 'put ''IUUuJj9hckJFOExZQGR4fCpRV2Vec3tFeVRjeDdGPWVTQ3lkaCppUGAvMDZMXjlLbzhZQFF4UUdCeSgxOlRLQ3lHLzF7UUdlIk5SSzBtTz5uV0BHbTVGNSE5SlB0fmhPVkRLdHlFVF18Ik5JNm5IKzlCaT8rZGhhKU0iYVllK2hMRVVDeWRoeihhSkl1NUx2X2RadU1TTUV3b2N1ST9XZzpOb29z''@;'; put 'put ''QStlXzF7eS5rNEdPdkRAQUx0ZUBIXkZRWHRdKDRkMHV4V2grNUlZTGwrU2YpdURERHlvaSF2IlY2WHUhVytia1pkYjk2U0dRKyJQIkJGJG1mTV9WfWtqK0dHU05oI1B2eSRRaX1RdE1pVnF1M19nZ3s6L0lSTXBYV2o4LGB1cytzbWZNdFN3aWRHeUFkdCVqKDpbKiFjM3FuVWJwdzlBeUpgKSwq''@;'; put 'put ''SkJgWGg1JW8+PDFUWTEhcz8/OyI6aXw2Pk0xOU51b00vKHFDMEhtYCElc2RKV3RkNDR1XlhnQTtGJGMyKDxAVXQ4LEx3ZEw8Q2BoSFZsQmojO1V+YDlTMmAzKFdeNVdyQisiI3JKSFVMQzF1WGQvLEArdGZMSG59b2ZASEQ9aWZgflBDIUIlSERXYTsoTCpmSkI3PiM6KGtGY2JDPHttZj0uWm1j''@;'; put 'put ''TWVNRj1Aa011VUsjNT1TXlt+NExleWJGZkB2RztgazFzLExsPyE6R0AlQiZ2PCg/aWZyQi9YSkJxOTUrTTRReip6WGhQIU1mckhOI0AlbVgjYG0xUF59RXQyNCFyJk1RL1A9cU5UeURNNiQoUndYKW8ubykhVSVxfSF0I0k9eVUyRT8lV2wlSnp3JGhOTFRlU2UpJiNZVEBDbjhRXyR6fUZaKik3''@;'; put 'put ''R3YqLG5lSWkjY1tSPCFJfSNsJHhne2g3Ozs3ZD96SForKCFbeClKYFhOWVJxaSZeKX5zbHtRZnJ+bFBHUWxYMkVRPjowbCwxMSsje1RZMnA8MCxkSyx5Qkh7OWExI1JSWThGJSs5Vk9ZKXd+Zj1oKXRIe2BfKW1DKzNHK2s1YHMhOG5LSyVFYDp3PWVzRDN+PF5VYjF+cSExW3ZeYTQ1eF1uPFNK''@;'; put 'put ''ZXlnYWwsQFk1Ik5WXlQkPncqLjFYJFtGP25ITjgqSiVIbXExXWFnZHowbEVjSCZPJk8yLF1UejVQM0klbDNtOS9AcTNpalRNXXlIQComQWJaX14hXlhNIjgrbUNkZnNgLFJCUjY5PTEqWixObDpXOmtHdmIuPG93W0liUiUpLjB6IzNHLlJvWzNPKnF3TDRSaDJiMFZYSCpjLjYxQTJ5PDAzMkpG''@;'; put 'put ''YjMrVGtQWy42WzJyIWMxdDshISFLL2IrQVF7IWVHOmY4ZDBSLnMucmJWZVtgJkk0aj5GKk1bZUBzQVc8MCZQNV5yIUpJOzxLbEtMYGtoMmFSMW81T1R3cl1fLDxLNURGc2BvZSZtczBAWDsyR11wLit2WiMrWmlXOk9vRlprbXkyNGs4Nil6Ljx7NmN3PlhDYlViImFGcC5HX0dnKTthSnBxSDd1''@;'; put 'put ''c0ZIJHhyei9vUC98fWhsN05XdUs0SEpleXpLaDEzIXJwJV9gZGhaLjspUSlQejlqXiwua1p2fWlqW3tDQ1MuJCsxUmw8ZmxkWTIqd3xsNDgzIW8kPGEpTGQ6eWM4OGx9cjQhbkRrd3l9YXIuYCVFT3JAPHUmST1paHh6T0B4UFlDXk0rPTdpI2VyeTgxKWo/OWlUYHg2T2RhTWtJclVeRT1TaDI/''@;'; put 'put ''NF4kVUpZMFZIfTkkV1NCZmpPfTlrfDReTzM6JTEqUk4lelkpeFk2UFRpb1AuZFVFJHN3VSprZilGZHRsQkshMzlUcU9QMy4vMEkhY3VFWkthdk9jciNCV144YnRxSmRxNj10LjwhaUBMbFhrbTV4UCw7emxHdmFbWzdZeEBtRnV2RWElKyguVjpQYG1Oa21aKCNhLjw7SGQwLHshOSFiTCgvbmF9''@;'; put 'put ''JXxCYiUpO2EwK2xscFcpSVhdWTQ5PT9jKHAkTFNUKVhrbXVZVk1TVCw/cmIvNUt2d0dISTx8dXd3RyJyZ3hzR0Z6Zm9AIXFJWUNhSCw3OygqVU52e2wkaXZ2Mz8uVSt9QSRNKn1wfFNHR2Fjdj0uYmZYdX5VMzhTITU/ZUJ8NV5NPmp2YiV2a3ZMV2oxPUhwImd1d3E3QTxveXN6MVFqQGhROW11''@;'; put 'put ''JjJ3SChweGdYRFo8M25SMGk4K2pzd0ssYzU/TCxETjVzQCFVSThMQCssTCYvW2lDZEgzcVs4RVBoencmQHYlVzk7X0MwI0B9KyI9ZDYueCwmZV52I2grSGxQJCV7NmNzdyx5ZyVbe0FrZE83cD9tQDBlNXFYR1pFK3pnZj1EcUghUTFgekQwKD1ONStmdHNeVV8jP3IqLDEjc1Jqc3dUZ2tIU2FF''@;'; put 'put ''SnJaKlFhZmI4TUJ7Xnc7RmhYa20zUnY2VUJnO31pLjlieixMeFk9WyNpZF5ITUsqdWNEMlEjQ09hO3VFJmB8NDRQQ1QsWjt5Mmp7aWNWMHxganh9eyxnbTdpeSNfYG5eY2l0bGRPaXRjeTlSRipeb1cqc1RBcW15ciU6L1NCUDA2LDM+SHYxNWtKZT1pWyMobCt7PU5RWXFteFdfNTl9cTMkQyt5''@;'; put 'put ''QFglMT0yWCEoMnF8UndeYkBYPjdzZ3dwTkpRaiZle1pQVmowOHpIR0s4aCxlaFBNVSVYRj9MZk1QM2w+R0M3QllzcHxxLHFWQDpbeHN3bXY4eEA6WzJOZyYyRWw7T3JIOmRpLz5fTkhrUHo1fndNTXlWempaIV5OZjplWWw1L21PUzgmajIkKXtYTlFCKU1oO2JPTGlxMyFzPkZZM3tKM05hUCg+''@;'; put 'put ''cWh9Z29VZ2k/JEZZdTM6blspem04WUVpOTtVK3dVVDhNIXM5RG00L3shLjlPdTlfX29KMH50fHM/SmxidnAyTnxVeVA9MW05VFRZLlRCfDg6ei9IK0YxdzxYdzlVdmxaTl5TWWFAYT1dY0dyXllGP304Ym9jdXwpWjlMNCw+OSRkckswTTxkXnw0OlIrSGE1UF9YeD9IK0YmbnkrT2ZiamsyLEtp''@;'; put 'put ''WkRERUtuOG1BJVl+QUQreT9rSkgsJXZIWHZ4QiE7K0VDXzF9Ujk6a08jRS9VSHhzVHheNDw/XSwvLy9qWVc1Z2hYbSg1OG4xd0tIdWE3VFg0Ty4lajNoMlEzejleIW91TmN9eVJxKGZfYCNka3dbailAfXt6NypVUSI1Nl45X2BsSDlhOFokZXJMZ3ZGIzBCX0ZWNDNhM2Ykby90Nj18R31GKE56''@;'; put 'put ''QmZBaiNNZU5TIT8xWG5NekwjRCl7QE01MW9QPW13OV5TWWVUcSU8KzUvQGJDMHE/aUNhfjc7Nl59LDt3JH12ViZvUlliMCtNQ3c0ZFcjbn06MUN2biZafX1AOkdwZVQzLCZtc340LClZXnFwcWsrTVpeXWxrVn0xQGxNV1VddTt+ZDRwRUwhOS9ue1FNa3NmclMiYV1yVDZjVkdScktjQUklZz5w''@;'; put 'put ''Xio4VE9BdilMWUo8SGEvfCpKZDIxVU9ldkAsWFVESENAYTNQekNyb1R8LFVEbVpOLFVdbHNiPnptc01YT0g2dmZLbi5QRj9ablN4QGdbWnk0YUhuUyR4TXh9aSpCUDFhMTIjUk59WkVUQlgmbDlIUTshSWdnLGhnY2o1cVdvai8jQm4xVns3c2RXcG05WkxeP11rPzNwOlQsKnpRdTpbZT9Taj9r''@;'; put 'put ''VmhyYkose1g8JX5SdG55ZUltWDdvfnp9WHl0M0JxYTVdLCgvdjA7alJTQntHRjw3Q30/Ujw3SGxzYjtqeFNOe1V5YU9wPGQkfGsiPXJPQntaWS4xcTNNe1YhblNNX31Xb3YwTENgLD0qOixASzBmei5+S0lhenhiRX4+XVR1O3luSy9ERUUobHhdTW9aOXdhTmN+NGg8b3w+YHtxRlU7L0A8eVIl''@;'; put 'put ''I0B4LlI9XmNNejVPRjRKLHhVIyRsYzpLTG9IKC8lOkEhKzNqSlV6QURBYjA5PHhtTV4/S0VBJUUlelVvM2I5ViwlODMzOG1VZ3oqRllgZzQ5QHhXfjc5UCwzPjlePzs2bF90YFl+azgpTFNIaHdPdj10ZUZ3ZHlDU0dYQDJ9djRPQzl7cn5FcE04ZFtxQl9ASUp+MCZGTG5dV1MwU3xeR0t2RkJr''@;'; put 'put ''Pmxze0VkXkoqTTs6Ll5aW1ZieVpyYjoxbnZ+ZCUwfTdTViZYRXA9UkVZI2lTOyIvWXBXYDJJVTs+fUgwMXZ4e18sQW5jeHVJSkNKKWImWDF4RG0/Xl1PckowLzlQbyFga0k2aE83JnQ3b00mLkVwclN1TTJgNDosSFtIeWsrZThGYEF4ZkNUMiEifnhlR24/W2AoTXVvSSl9VCE5anRudGlNdWtB''@;'; put 'put ''e007OFVlVWNAZGYjdlZ6bVtfLCJXOSwzM1c1Z3peUmRAc0Z0JmJ8S0l0VD4wNkdrOiReS3dNT3ZbYUpLPSsiJH1MejFxQCxEPkZjWD8rYFclKkVddzBQe3csXmlLbU0jRX1dOyNCKV1VL15IJm9kfF5WRjxlX1QleE4waDxsTyM1SVpbP0ImW250UlZaSFhMeTxaKGtlZl5eUHApSkAvSWYycjE9''@;'; put 'put ''cVNUUyVpeHJEQ2labUAjSktGVks2a204OF9YNkd7cj1vW0dsKFMiPVRtWGgoMndzTyhAeTIrRC5zJk4sMXo1UXtscH0iPSgxUSVMd0ZIamp8KCRkJmBlNjp1MEZJLCpdOSFESlJvMTl4en49MT5peDhxOiM1XT9IYS8jPUVMMSwsLl86cSpRWmFzOXtqezBycH4oWHI1MT5zJWR0TiNZVil8ZlUx''@;'; put 'put ''eXFtbXgsbEV4WHdSPWp9IVVlNXxYYFZ5Uk1wej5xI3FVNWlORHZrMCRiKCY7ZFtiakBzW25lejRdfEUvQDFfMG5PeihLPl40aU5NeF9AWzB4OmVHJUg0bXpxP1ZNQ1IyfSxIVTtMejRdWVpPZl9vaHlIWG95TTY3LG56ImYzaHNiPngyZmUlSiZNeiglRUsrRmFbdDV+NG5Qc1I5YXFkfWkiT0dx''@;'; put 'put ''PnwrJV9HYDZONWt5d1RIdDtedWY6ZXVmQUEwbFdxYERVUHhMdG5YRXVUKH42PnR3dUltdGBsNUxpWX5qSXIpUFhaS1tJWmtPQ2lGWUdIe2BMZW10IzMmQF9KajJNTDVkQ3BkNyFDXmQvX091diZoL0pfV3koRlRSVitnMH1gZG5INjNzIy5CNEJucTpxeDhxXzVjM2Y3Lzt4QGc+RCViYFheOUBt''@;'; put 'put ''d3ZOfDZeQGNHTW1TNkYmKlhre3J5WTMuM19UU3dLODs7Wmc1YnAkImYvL2lhV05APTZCclBPX0NYOWAqa1M2LEBqUTRDclBgUCgvQztiJik4WCwiYHI5W3tYb3tONSYvbkZxKjkqdzJCT2hpZT9waVZfIz83WGVTOEFFT1JZKjw/aGpoUVlHd1QvbjNQeSorYEclTTpUJillfVpKSEA9Ti4yTkVk''@;'; put 'put ''d01tTjFPPHBxPmFsX19CX2dWZjhjZC5hXSxTbz1VJShiVS5qYCpQNjFTMHM9W1lYL1dzJmhiWXhDLHFaYWJ+K1k3dz4keU91c2Z5YFdVL3g1L3BNe1kmUGJGUWgkP2g4XU1xeEgsPyV3PWRicTt0U0JyQElFKExRfCFwcEUmMEh5UnN0KXJbRj9YSz5eS0ZMeEgpX1RRNV5jLj8kKXMvU1d2LExf''@;'; put 'put ''YDJMR0wwTyImZDc9NVROakpzJFt1WmpINGB7dnJrcFVKL1s6OzhrRHN+RSZqPVRWUFFUQUlLWi9TK3goLDFJfnU1L3hVVnM9RXx3Qys7QF8yVk01SyZKPE9aUU5RaGljSWI2N0A0Y0htTHowOSNKTHhCWj9falFjVDxrX19DTSFZPTF1LkFpVVE0Yn1CYHkxPW5pR2ZeZGZZTllVWlUmclNYLEkp''@;'; put 'put ''Rmp1TXtSOldNVTtAQWw6dipbZjNVZU4jTitwLHt2VjE1b01JJlB+KVNvei82OXRKaXMucipjd0x7I11STEBkYSx7YGx2ZzpSXm9RVnk0aXk1JjVAYm5aS2s5NVkyaUlUdWMsWj9xZTxPRk1rWCREVE92dnB0NnRtJDtBVF9DU1NoW2BpcH5eOlVIMmtYKkRXRlg2MnA5UTQ3cE8xZEpIWyUxJEk/''@;'; put 'put ''KD9gLEd3XmYpKTBHZihFeERaSDxsJktQPCpSdypCPXQre058aFRZR3ltUlFDe3lbZWZFP247ZnRvSzA6PFVETm9vUX5yMF5XZXNXeHomNToyPUgreyVbWUI4SU10IzFeZHV5bVJZIkVdI3slWzh0ZCgjcH1ofFNWSkAmJXUiYURaSz9pK2pmdSNbKGgjaC4iZWhRQjdSXnZqQ1ohakB8cGx6IXxH''@;'; put 'put ''NGY8SXB4Lzs8bVVjMURvU3tocj5EK3pjNTd4cUBKUHFyR0dLb3Z3QDMvXy5eSTUrflg0TFRlL1svayE9ajVOYmtUIT05MyIueWg2PVBsU31nOCZPdiQkMlhGUiY4I3UlbTBbNSE2SyFOWEQsLnxZME1aajhWLnh+IVVQK3B9djIoJmJzP0xHXjpifis5Ylp4KEZYVTkyZGFQP2ozQn1ARUI+dHY2''@;'; put 'put ''fkgzTHdaKy8wbHJ+UmN4QUdXVUAlfXJnWSJmPF5KR1kidzpuZ05kWGx1a3VkVy49bHJRej5HSkNmYE8sUUkzLDYrPy5kXTBMZyl2R2VfI11ee2UxZ3k7d1peMEhNYVhdSHQ2OU8zTXw8byRfZV4lI013Niw/bls9Zy5xcGpOLHRxQWE2PFVYN2NyaWo8MUFQLHNRQ1lRb0M5Jk9iODhATStPYVl8''@;'; put 'put ''OyxKWyEuMExUZTAuKSJxeFJFL3lUV3hvKnNMOzo7RmNNMzFqS1khdzVsWWRWLmFeMzR7cms2aXJkMkd+NC4oej5xRi4sTDY/ZjdzNjRFTEJZZWRDWGUqYnkrcmJpeHUpVzpDdi5UL0htX3ZzclY4OCpVJUA/KTtDMlcwZiVQZms/IW5mVl5JOWZvVkpvRWM9O28lKVEldVZFJHJZQnNqNkQzaTVZ''@;'; put 'put ''MHZ+RWsjKTErWnBqd1RmUXdzUnBDdlpDKGwuSiohaWtaXU9uVjQ3VmJeN0hJNzFJbVoqIz8vd0NsbnR3IyhjNUR7Wk5DaWxzcDx2R1U3WjlOTVpCSENARWxLPjssU01aaSNNTj44ITBNL2ZpZyo8dk9BRm9xNFJ4dUwqbyEsWkpvV113K1BCXVlDXlEwRGRdNGllKXBlal1TKm5GMERkSlRLV2xQ''@;'; put 'put ''OCxDKG5gVFtEWkNeb2YlUEwkQUQqOG4qcj9jaiIsMEBbK0ssXy9ncyI1YyRNLEdsNEkodXRmIT0rM3MwPnE6ZWY+bikrKTZ0dCludzBmelVoQ1VYZStGT0QhRW5xfSNwNGlqUjxtRXEkXWp2ZWZtNVY1QDRzbTdZMEBuK3leR3BBd3o+YkMoQFdWQUo4Rn5pPGl4Lzs/fG9IWDZVUDV1Y1pvYmpd''@;'; put 'put ''W1JNUXlqWihxalR4UW44eV9PV2JqcWlmL2U7RlVWXVh5T0hueSxGTWZYQFZWdXVCPDkvdl83UEYzTUJGbnBCPk0+K3U5RS57T2lDLFs6Wy5YWnF6NUo6TVc4RiZYangwMWVLcUYmem4sMTFiXilGMEAkbyp7S0t1TSE8OWNBNXsjOyk7bnQ5c3ZGWCkpXjRYRU1jb3lZY2hIZHcxST9NT0x+a1p2''@;'; put 'put ''dmpOcjlJIXxwP3JQcGpVT01oVj1DYClGbFhsSC9JR0tMU3gvNC8zMmZMTyl8ZUREb2MpZ3hZIltiT09IIj5+eWlge1dFLGtWaXd3bTRpdF9Ndzc9QG9yLyQmeGU/VUdSeWsuZiFrJllrTihtIWpoLnFieTJeVVgyN1clOUlSSGo8eixrYTtUem5obUpodi8wRU4xI3ZqRHpPczIuZFVdP1UrYTJ5''@;'; put 'put ''YFBddj9sLCZGSixsO3U2UWl4Z1EkfiZDTTo8UmZ2aXU4OmRUay5UfTttUU5xTytVOyFRQFQuPEwmMnBjeUM8XkpGeTFuTlJMWlAjKWkqY0NRWnsrIUEzd0lyRTJeUCxtOF5dRFo3djRRR1JOPTlHP0s1UEphckozdSg/M3Q3PmY5WzMvP2wsJkZMfjBZc0c5UnE2NDhFJExSISwkWklENVFhSWVq''@;'; put 'put ''Zmo0Smg0Nz1gQm5OSiRweSQwUkhVSTlxKEJCRHM9IW82JmMufnRVU0dRamo4dXFiNzhbSXZadE9Be0QueFozT1hoQjJ8W3UmN1IqWEsxZnlTUSZPYW5ZbFBzRCN0RjVHRyFxSitaUH4wXVhBa2xAdEcsQTBSPjtmbS5AYT06W056KmFRakNRKVVhcDBXb0hjSDN3ZkYsdUZSIVBzcixCMEMua0Bm''@;'; put 'put ''dV92Q1Fody9lMV5dbkAqSHU6KGQwRURmfWw8Lyx2NiZAS2M5XnBOJkZSdF8pbGFlOnNtPSZBYlJrYFMsOzFiKTxPbFAuVF5aIW1WYX1HWjQrWSIpZ1ZDTlBTbDlrcXZtLCh5YF5TNSI/PnFOUmlbQW9vM3tXc1lBfXdNc0p2OkRLWkxpImN1aTB9TEk/SE08RztVeTFbL3htbFg2N2d5Q0RpZys2''@;'; put 'put ''MnwjWk9ZbXdnUS57LEdSelhPUypJRGg2MSlSfk92aH05TEBMPFRKM3lxMWdlYm8rRGM4Un1AaFtNPj1eMiMoMEwyR1EvR0g0NT9xXWEzLlEpZ0RIVk99WnIxait4L2ouS011PVFFNWxgZXFrSVd6Xz88bSxlLzBZLjkwUGBXTlIuZlBWTnMre2FgPk4ha0t0bEImMnNnLCZoaXNRMDYxKWwsd3pS''@;'; put 'put ''X0YmZTFETWtJZWJhd0E0NGl8aGhnL00xYjhzMjMmKFohZVNBXys5cjZdV0dpclZbe3xsK14qLmtyJD1CPGVOfHhDWj5obyp1TVReIXBlWUp1VXNmJSx7OzYwVyRBZ0QyTlZPRTEzUjVSKU1EMzJHMml9Omlod1dLOmN3O1F9JG9bdTFSI2dpQ2koLm4+JClLaSNqaXZlP0RjT0VzTStBZ04lQkVS''@;'; put 'put ''aHcpTlhkZjFxaUtvQ3kyR2xYY3VCeX4qU15LXz1TdE15fXdSNmB0UHsjX2B9XUFmanduRUpDUCl7Smh8T0ZEJG1WI197VnU1UShZKSNqbTt8PUdXPU5RXVVGbl43LlJhN0NDbXF2QHM4Njw+flpHdHVWUGhqRm45Zn1GW0RoOEBNeSIuNTIhPU8sOk98U11UdG0pcEIyOCZSMUJTY3JXSURifG1R''@;'; put 'put ''WSg/bTJsPCMpRDJsPFpTZH1VYXAwTXNWNTBAVnk3ezB2X2x1NmxIaS9vTTtrdXc2OGVDT1IjKiRJIk4rVFNCTiN7clZOImBleGIxQnJde3kuUSRYYkRdcEMuW0dKbDNXR11gQDtBfFVeSTt5I3xAOkptI1owfSVKKHpHW3dXdk1dPUtGeSgzW2Q1JEhNaWluaXlTPHdrLDhlb2ErZysxeTB1M1ZP''@;'; put 'put ''bCRIZ1YiREgycWZOUTBCJld7enYrSCltfGRmJTpkTWF1VjRYKkJBZndLQGhJfkBtTSRwMHVhP0w3e2p5QVRKbkNgQmpOLy5FNlAzTylOL24pVSlhMz8yQ2hxMz9kcGxOXmh6PGh3Z0pGYjsocj83VF1UajMxaDwzIjVMa0ErS1lVU3BmWkRSdEUwQHRyXUsxaHlNXXc8bD1FOS8kNS8uW31Hd0lB''@;'; put 'put ''U1RmOSxwZCpQfEUwdiF7R1NHU3o3e1Y4I3I8ZT1hYSRfPzFfIUJAWjR2IzIjV3A5ai5VLnpZN3MmRiF1eTApXnlzKnwyZk9rbFRGZkovTW9aQm1bSV52e3l7Lk8sc2N+MCZ8Z1FgcUNLNUQsbXJLPHdKUF8meU1kdSpKeEAlZWosbkBsTCF6NyFqZzRMK1h4dmxCKVh9IjwsYl9LTzRpamlYUmFz''@;'; put 'put ''d0xdVCl0SlokP15pe3Y7MDVkTVM9Wjt+OmFyak1KSHY/V3oqOi5zLm5MLHd7dD15QEImKyY5KzNGIV5hPE1MMCNAP1ddRTdMNkM4TXk/VTxHMVtZKDlmTEVZbUg9NFtJcS9zU0ksdUkweH0maWJYazVuemEveVpSIyFdLEleWVIrNUZ5JEVyenoyfDc5Zykwdz9lQ3JRK2ZiQ15nclorLCZNZXIr''@;'; put 'put ''MmJePzQze2VSZXU1VUxAPjdlYDsuTiVtYk4+dj42SDhMdSJhbmlVXTFacix9USJoMEokclcxPWZDQFt2S2o4WiE5QzRdWGVUeFp8OSl8aEkpTFRpYTNmLGxAMGM1YSx5WTh7fWEsKEVPe2pQWkgjPkhLMSsjI3pGMUs/UCEpaSMhQWk6fV1ee1BzWTErKCNaWi5NcTBOUURvRlkjTUwxUnsyZypu''@;'; put 'put ''KjBoZ0N1YHdtNjdWNDpsKSg5L2RVK1IqfHlPbyMjbCRlRUM9djVhOFZCTWdUblhkVW48N2N5P3glUVZNXVQkcTxlXl5HIS89ODtdOVNpO1tJNT5fVCVgXyFZfW0yVlg8V1k3PEIlbn12Pns9W1g0dmd+IytWOE5TNypSI2dVJD1kVzdbentKUTlZKyxWTFZpRyxPejhWc2dGM2FaLjxCRilqN1ZV''@;'; put 'put ''bGhCbjJjayx6Yl4/Wi9uamBWMUdNbWpzQ3BreSxOSWt3MzA4X1IqYmJ8Rk9eRnh9LD45WEdmdm1SIyphSz42V2BSdDBtfm1uYj1kbF84b2kybzppN2dyUTMydFFIaHZyXmV9IXlNKUBWWyFya1tHYyRsfTIkPzNDb2hoWSg5YnJKdUQ2MTFtKXAhWCs4VjRYLl1oUWcqPzYuJHAjc3hMdnMxYjZ3''@;'; put 'put ''MmoieyQ0dTY6bnAzJWN2JTwxWShMNGU6S24kLmtncl0jbXBIdX1NQGB6VzRVN05EZCFwfn1qJEQqRX4mc1d4VWFQKHhQLjUlYWpAMmQ8PGVuIXRKX306L2ozQkI9eUlqXiplfSxbMk5nQEpaL3d1JjBOMWJ1Wy5dfCVxfjQuWWAyJHMkOTo1fDs2Knc/KUluNFQ+SyNxRGI5fVZyY08/JDJnamMm''@;'; put 'put ''Lk9iI25BNyJtQStAUDxbVCVrb3A6c3dnQkRiX3pCXW5wVUN9JSx3VmwrLig9fTslTmREOmpPWkV+NmVKbihuP0IrMjpkL2t0azpeLnp7QEMod3JeO2pGajNQNGlTOH53dUIvNntvVSxlandHSFcudW5vflErYDojSkQpfXllbkdHcTJnViRhPVApY0pfbUkreVUqIXhmXTtQMDVgYjB0SVErQ1Bl''@;'; put 'put ''MVNMbEY9LCE2fDJFdn5ZSSt0SSlpY0NzU3lERWsoOVtSMiMiSFh6Ri88eHBBcHgmbVtPeEBXWS5zMl8qcWJ2akgvPygzUjtHeXYsM3wqX05CRFBFY0N6JmZYLHk8VyJ5SWR7UnhAbkVRLFJ4dFNdRishVkRaTCMrZkd4ajlSV2xjeG5FSiluRUlYJUxdenN0WWBaRCQpbkVYOj9rPFJOITRfem51''@;'; put 'put ''UDo7flR9LzdKcnc/LiRlWTw6KDpseUx3KExia3VQRCwwbEpCan1RMWt4Nk0jWzFXZixJLEpfYWxtYHhyL0t6YnohTGpoYE5kNUUsYW03QmRYYHI9d0s4NComeUtqckhIe3JZYD1RNUh+cF4iTUVDKyNIMn5fK1FAb1p2fHd0Sil1QDdKfFdeT29Ocjp+QXFyYFpRZmpBJTlQYzl6bzNRelk8a3g9''@;'; put 'put ''PSkoT2wpdG5ERXlWc2pSVUlTNDd8QH02bksyPFNeRFNqMkVbeiZ9MThoIVBVRiRWV1VMLn1jL2d0N1A9bjl+e3p5MCQvWzYlW0dadyJvRmE6NEs4SUhbQyZSNjl0dHNDc2NbO1VoSHJtZENzMk5UMjdMc2lXcmtqOFlzR3M0MndZTz5aYlgxYzZGSVlKRzVMeCYuaVBHfGs8SEgzNltWXTNjcWM/''@;'; put 'put ''Py89Nl5qeHRtaz19cXQyUTp4MGY+TCsoR1VhXWEhbmZ0ZW9bOzwzTjRpaXp7Si57MV03aWk5ZTM9UHM/bEV+Uz9dNnp9W19ocSVuTV9BKXwhWVMzPVFLdW5NX1JpfUo+KXs0a3JGNDwrVHI3JTg2YGxiOjJRZSl1a0dXdTxeYEpAZlZ7bHZ1azVJbDlqXU52d0c6Wyl3akVPandUO2FuVkphRThW''@;'; put 'put ''QHhwJksocHtbWHYqd2pJXSZ4VzRCMzV0fkBZJSFrQDpSTUBKX0Y7Ulgud2BJM1UqT3gqVHdDYixQKGwsZGN0Kz05ISswKXNvIiRDIUZGbF0rcSQzQGViSmdgYDlZLntTSmYkZVRlT0lqSkFvJFNLLixhd1BVO0R2fkBYLldTeF02WWkoSnI3OSE5M2Q0PW1dWCVaJVFrelZ0Mz54NjcpMzpAWGRS''@;'; put 'put ''P0EoI0pUaGtUMTFQT3ZzMSY/ZiQuUVZrUEJXOjxmdjIjPng5S2xtPV5dSm9zT01TVGlXa1Avez9IQS5NajdVc3xUPkE6dTs1LDw6b28yMzFaRH4vbXx6dmpFJm52emNfYWpfIkQ8O0N1JjhNVX5SY3IySnYsbWZ+I0tnIis0VnksQTEoemsrTHtNOzVyI1ooW0xJLFhuWGZWcnw/NTVZeV9PVnpo''@;'; put 'put ''OSpodEFyKzlsdz8hYis2U3VPI3Vma3FSMDVbeXlUViZ9YipqWjp0VH08dHRoa2pMNWpHPz1WMVEoYTdIPkV4L0FCLkx2WlBQJjw3UCROOSNORmlgSHVaT043OUZ7KkxIdDRibG5PXnkhcU96TGE4Lz5uV00qRmVmJGF3bTpGbWFzNzVoPzViZmZCZjExMERYMSsoOW8hXmFddWY0alpmNnNjO08j''@;'; put 'put ''IkRHI1glS1J0OVtpWnZWTklUZW15ZmZnR0FyPVk5UHkmVnZ5amRKQyszRXd5KyI9cFMydVNpdztJMyt9QFAuLlA0OGgkc1V7UFRnMlp7MXROWytuZnlMa0J+R1ciM0RPV3B0JVY0MDEwZnRSdGtfd0BILEFVQUtCeUIrQkBBb0FVQUtCeUIrQkBzVVE7JWo/IVpKY3QjZiVQPzB5YEdVeXoqUHl6''@;'; put 'put ''djEjSiJZKnIyUWVhWmk4UyY5KUkwZiQxQnEyUTAuaXJBLjAxS0pxXlpwVGsuPyMqdmw9YyRbcyZTSUNSVEl8LypVOT5uayN7PTxbfDxnJClbTFprfS9fayMpV19zJlI3dzMrWiQ1aXZncGJDeiZpcTtJSzxFW2cjI3ZlMl8yTkV9N1F6ZnViV3U2M3xwIV1URlR5enVhcSRgYHUxTGApW3EjWyNk''@;'; put 'put ''P0o5WzxdZltQZmtYeVJ1WW9udil0SHt1MUtvSWBUSUIkVzU5e28leFE9MCU/JmYwaSZzU3BrJkdOZDVMYUBPIjFjX0xTPUleV2koeW9zcU5hNFk5UzNUa2RGPC9kX1IrfHkqTX0yL0Q3Ykg8XjptJGVPSTI5OFd0RHVzZkJlVlYpb0lUZVhEMSg0WWssNykwYyhMS3VJKUY3WTBEZDE/PlFJSzEz''@;'; put 'put ''eEBZb11YYW9vZ2FlL0k9S252ZE5zJD5LbnYpSSlgfUA2I01ZYWwvbWlgYnJEZGZAMitxWTlOLkAlaSIrfks9aTlGZjxCTntaWyojTENgZXo1aVg9X3Y5eXdnQDdreDBJWnArTTI/MitLKV5WLGBiQy91Ozchc0c2NEVQJV95bmBld24hXTtbOV09ZFF4R2khQTNwLCVqWTBVYTVKYSQvPF8rMzpY''@;'; put 'put ''K2BKaXokUig1YjNQTkEoWGhCcH1LQks8dmxiZj1kMFhfZCtiSklWVlVSKCFecnJOakRzJn0oUEp9YTk4NG86MXNUTmhFVURZM1grbixkV1FTTDgyYF5wUXMqelgmaV5GfWhrelJMNHAjK2paSmZ2LH1KdHdCL2pGTWJaTWE7S2k+b0d0UTViRC9GcCMzcHNVXShVTDREW1dMKjFXSU85fEYjQyFy''@;'; put 'put ''QyRAWnV1aVtdYEMjcEtvXiIoKEI7eExvMCMvXzpiUGtbVGEoeGMjMCt4PnRbeVopYmJYSEM+R3xvR0skWz9Fb0BrVyY4YjpDMlddV1tINSxBJV8lXT1MYStackszUlE1YGBmMVpBdVNuT1VLZ0h6OCZPL3cpKXE6PH5LPTw5aTs+TmtJNCosb31qTWlqOUQ+OnAkWmxXMT1GMl91MXhRej5VNjNH''@;'; put 'put ''Uzd+XixVZ3I0RjlLTUpZbVdzb0YxeyVAXXo9ZHBxT3FbJmB0JUY1On5NbkA0N2Rra3NPaXJXXkkmY3pWTVpKb1UiRFspfCx9PykhYCokST1pNyhPSjk7SiVUV3RsZUwsb3pOK0JKfihwJS81OSo9JCpaeHB6YVg3NmlPUF8xOzRndm91YF0uR2ZPKC5rSlMiLHk3QDFJQnVMcllrdDVnbCM6SW9q''@;'; put 'put ''c1J1O2dPfS55QDAsR3JbMFJvYUg2VmcveyN7MywwJiJYak0ybnNTdFJodG9RYkh6V35ffF5GOnU2LEBNJEouJW9gNEMvUGtbW0A4aVZqS0NHXjx7P1JJaERTLz8qUXVZcmV2TytrIkQ7WFtPTFh2LGg8ajt6fTF5TFsxXUUzfHk7dmpIZ0MvV2NAW0ZITHJZa3E9b3pwOyxBaG0yVyFaOmpzO14+''@;'; put 'put ''JFRyRH5+JCpiV3VBLlhLdzk/VylFaFhdOTh2PUtTPjg7VmducF4hbnZSNSMwL0dSNzdUPV11NUwyKGgpdCgoJCo2VjwqfXJVUyRscX1sVE1wQDpObDY+VH5JLmVoYXJSP2cpZXFUaCtLaVZGTSJgJiV0YCFyW3olaktxI3lyVkdpNWF6SyxGMXt4JTFMN2k2WSQ7Wn1QIzRhaDBDXyJtLzlsck0h''@;'; put 'put ''fFUhYWpLLDExe2plTTwkLzBPPCkyWEpeI3VRIXpVL11fLGJwPFslLl86QlFXSG4/QTxdUGI8K3xqW2twQWBUe0VvVHI/MXsyJXA4emhpbF9hcmk8Kl40JHUxaT0rLDhsb1FwZlcjJnJ+InliaGZCS2AuY30oRlZTVHlFKiVQLHBlPyFIeXtNJDhsNT45amhQVyNbbzh6UD9TZntjVSYvWT99eHp7''@;'; put 'put ''bDI1ImZYYTd0Yld9MVApTzdabXRMI2BiMSt4KCl7eUhfJnA8Rj5KVUM7LDZnQXEpIihXP2lqJD1KQysobGtAZ0szKyQrNFFTb2FQLyRNUVA1Q0w1Lit8S1Zfe31pQzo6MXElRTxFNU8sO0g9KS9ufGZUIU4wJEdhbGZmKilYaGwpWFgsSXhiVnJmVnR2eTU9WzFjPSFHPEozSXVgVD51cktPQzQp''@;'; put 'put ''YTRFSzAifXVdcGtQWnNuZXUwSDNpR1pzMVkmUjpwMjkiKFQpejJvTUtIPXJgeyZfRlZbXVtWXU1mJV4wdl5wa1E9X040K0BWTDxWckRRQ1BDbCopcSZFWU5sUVk3VkM8QUwqKSRJei5OI2tNQVE+b1I4e3UvVXoubjZ6ITNnV1ExT118QiguUnpIR2A+K20vXU1mNXtEcUVoYDNnQXVtZnpoWD93''@;'; put 'put ''Ol9KeGZ6aGwhKkp3Mz47Jn1qZ05Edmt1b3xbQWMkVlZ1PnNEPVJhbnlyK0k2JVA/MDUpM1ZmfUxUY1s+OiZAUl9uWU9DUTcydnpBazs0b2BYWi8lUHpZZT9McmAhSiZCbl9AWCoyeWBeQDQrKWBrblY5S1kjUEx8WlkoWj51VFUqRXRkLlJ9cXdZbDBSa1slYEp0IiFgcG1pcWdiPGZUTX1WeltA''@;'; put 'put ''O3xoSHA1XXllP3coMSwrN01TTXR3VCIhSlpCb081SU1Ga3tGeGthM1hkdFJVOkVNKT0hdkZ1entYUzB1KFUzU3l6JHFyYG5nSnk3I183cGVxXm1EVE0lNjJ6XmVdW3hzW3pRRUEpaEx7dCUldCZUMTF5YWZoW2B3YEJkVWFxOTNFWlloSjApdDlTJEhmNFU0RjFtV2x0U2cwPHVxVWx1UE5qWEI+''@;'; put 'put ''MEwzQCwrfCRbWTIvQHdhYSwpeDshMkUvfXtHdk1nOikwTTpjWj1DV1dTTXViQ2JnQTVbaklZMy5RV3VMbzc8bHVJTzcpQ102IUclPXNjRSRGWW9nNSJpeDJuLF9+aEdbMXIrNGpyOjVue2k1eGU2KnlTaik6aV0oW2E1JElMM29kWWRBOkElODFGaW5idE5KZT8ySUdJMTVzdFA2LDEpX0tqOkB0''@;'; put 'put ''MW91SkNqemJWIkIqeEpqKlQiMlJMRywlKyQ6OzV2V098ZzsvPGJBRWc4QiRgbThwWiJvRTc1TCU3W1k0eUNEVGs0OFc9Vm1vUkd4Zjx0T3tAMTJxaXR4Z0J9IXg6eD99dXVObVssVCZ6cnJJbldkd3k6OVUhaklCUnphUmNMRFVHS19YbEwlNlpsM1AzNjYqKlJ+Ji81eF17a3dnKFN3bnA/blA1''@;'; put 'put ''S2okR1JOcDlEO1IkUyomTGtpbzgkTDRDTyFjdV57OC5raV5lbF1MZXZJNip7dE85WWZPVntdbyY7O11+bjI2dFNLWUw1OEduU0A4diNQb2NAYVFqLkpvVitrQG1EOE96NCY7MHJDeEteb2RVQSNQJn4jOVRNKD5rcjdlKHMyREluWT9pK31QL0IjPkImOmUhfG0oeF1FWGorW0tZaCVAWUY8ZVIu''@;'; put 'put ''enwyZmVvWm9zNTs9VzVQZnhabll7RSJSfFcoMythYkBxZ2JDNV1HZENTKjF9YEAmRl1zbiJmUCE9TGRLNis2cUpxTX47am0mO1JiRHE+eG5oNTZHPF9yJVJ5O2p5ZnhIXl1aKF41JjomMy45fEt4X1laeFR8WyguTiVuOE1hbE9MIVt6JTpBISgvcSZiVlZNVGVnZXNHJmtyTjhUKDdOcTBoNFFA''@;'; put 'put ''YEsxQDAwPkFyQGx8W1s1QCo/Z0F5ZSZtMCY/a1NNMDspcD9gLEJeSVh2WiIoU2RpX2dTLDYrNkt7WEpQdU1VYCZIZH50amRETDFqViMvSipud19JN0lJY0hZSkRdRl02MHZLNGFwLCJXe2JKOzIkL2JxaGUzYCZpdDV9W3A+IVZKVGJTcG4yVGVRMUE5MzFHRXtnVzJHLFc/VFFIeyV8InV1Sjs4''@;'; put 'put ''XVk8YCU/JTd9VWY4OmU1XjJdYkYrOT1JNlI2USFnbS5sYEQyR1BPI0tLMzBoNV1hSix0b0VkY2BXN1BIS1J1QCUhSyRAJFoxJklyPChPI0B9eFhwaTN4UU05a1BCNj0+bHMwN2BsJHZJKWg5OFFrNyJ5SzEsMWhvaSZtWVZqSVl2XSgwQiZeMDVzXiF8SVIsQWgkPkQlaGBMMyYqO0c5ZyVeKXY4''@;'; put 'put ''eilQPVI1KGlhLkkseFhSImZufE98KyokMTlfODZKIXx6d3dXemssbUx0PW94aTMyKyslRTFQSDFhK2NJKWdfSjRDa3ZGbkA1LzZdMjlMfC84TFo7fT5wUGZHXyJmIWNgbF4mRm54TlQkMitqT141L2FhP3N5aVVzezQzYUcxaDk6N0U7SlZ8cWhaezFhbFBycVloOmVnWGRyV2g3aWd0eCZgJnUv''@;'; put 'put ''bClsU0EuRSs2dmA+ckVpckNeP2x0PClKe3liJjN7fj9rKEx7NCxGPnVMYkNAPzolQ11aTkFWdVVtb0pxME82LFBTMSpsQltxektrLkx8JHYxTC4rX2Apa34jdU91RjVnaHU8WzYlW2d7VTohSVp2T0taKTltOXZPKnc6WV5tJl9NO0k1SjdbO3BUNngmPXtSVTo9Jj1yOitbQkZnd1VsMHt4NHRm''@;'; put 'put ''KyUlODEyZn1Acy9PeGhafHBySiJmJiU0d2Nkb2gqU35mYGp7U0F7MmMyQH4wVjVJNTYqQkxPOiRndU9wMEIyMnhJPVl9PTdkbiVae2w1QFR7V05lKn0mUTBLQTNaSVl7bGlQc3AxWjxZWj5GdWBaMzhvXVdQbWQvRWEhK1tZKS59RmhMUEciIlA1emtTSSlJaGVgJEtzbTd2ZnFHczhqZHs2OWZg''@;'; put 'put ''YD9XUExAS052T056NHd1SUBObFAkPTdFRig+NUFUW1RkOEdGcDNhNTkxU0p+X0BpWXEkWW8oUVskU1F1UkpyTT0uMjB7aXl6O21TNHJaRzZRd1kxVUpVLn5mfGlZR0QhWCpzNzFLRCFjQ2xoLmFJdmhrXV4zcHFnPFZrOD9lSmolem8sL2pXTiRMPys2cTteKkwkOGlRNWBxTnZ9cVpjZj03ZjVE''@;'; put 'put ''M1prdFFQJSpKKnwyZkVRNWJHbn5gX0koW0loPGVrclowKzNDVSJmX3JnMG0/L0pMYHw5JG1MUCs2WX19QE0rIk5fQElmS3JQeSQ2Qzw7ZVhZfTdxIzcuViteYjQ3dXA0WCJPeFhmLjRFNTNWPWJNdEh5ZGx1e15pJEA7X2k5PTY2ZCZAXmVoXz1xQWQ/KVBsP1dJPHFKLDJmb0lzMzhyOjFYY3ZG''@;'; put 'put ''IUFTcXE/dGFvK0ExIXlFRDlNcS87aTJFRGo7SEV5S0JbeVMoTUVgQk1+JjU1RnZNUm1mQV52Oy9DdmxQPGFEQ3ZrWntqLEwyRUk2O045WktLIys5JnBEKz5MfTxxPGIxMHZ8RWopaz8jXS4+V3YwbCp4Szl+UV5kLjs7OT53fHxbO141dWFOLF1NQCxaSWNONkE9WGZCd1Q4JkhgVmE+fXtrd2Jr''@;'; put 'put ''c3NjTXJkNz5DXmQyTmdMez4zNks4QSp+ck1pLyUpSzVkbTl0Y3orSGFzUjZ2PChlI0A1LkgpYlFCVlpTcWFPc2pDfDt+Jj17cFpeX2woSnJNRiZveVAlRzRUV0twYXZ1aD9pSDMwNUg0PHE1YW1bclNXbU1oen5vdW1mOXJPTkElblNpeVFWLDt2cXE5anpjPG5qaUksREpRPGxTJllMbmRTcWNf''@;'; put 'put ''SiM9PWxLcSxmcFJZeS9BWzBHTnp5V3Z2fEE7L2MlNTljYX0pdGVKcUF7OmcmUG04fl5NKzopPXxvMmIpOmJwUExgKW5iciwuIkgqaGAuZ21zdjVLI3EuZSNyOV85TEdRPShuXy5FWExUMmc3fFI8VjxZcHNSRjAiWHI9eFs1bmp0dkgwN2Y2JCZ0JFVCMmUmQ1cxNDJ4UGhBRTJZUE58eFlrSyhz''@;'; put 'put ''dnkkRywlK088eVpVQCI6T0xQKX1UYCZWd3U/T2UvdDchcFRhL1JlPHBwNWhjWilRVW5gbzZKUDJdWmh3cjlHamFEQFEhVmpXSiRjNSEkU1Mpc0ZNcCtDOiMhRmdab1k1diJlNmVGe3VVbG85ZF5TPTFwVUloOH5DKyJHdi9hQEtBcXs/eSE5JC9gcWhGX0w6VW0+VkNSaEN1fkR5YjNjVTNgSSJS''@;'; put 'put ''XX1FWypWXUA9O0hHT2AlJjlEM2M0OWdAKGVkfHxqK0pDdmlPYGluOHZvaHh4ZyZUOWFRb0hFfEdSQ2x6NU15djFad3lHeXNTJG1wWCMhZjNWWDxdPnk7MVNKIWxsPWYqKyF5ezZOUXZCalgsU3BDWW9MKjgjTzxNI3chKylYQmpGZWcqeishYENZeDg9OyFPOE0jd3dAVzI9Nk1jaEhFLGJeR34/''@;'; put 'put ''U0d0JWpaLyF5NX5VQV57KiM6aGpObnthQCRPPTU5RER6XyMhRjwxJTw2SXYhNWtaN29tUDIiIWAjOz47MTw3Sk9nV1lmYmYpVF4vbD1dIipSUHl9YShVP3hATG5+YiJBVzFmfVV0JkQ8ZXhFOituRiFPPCYvYnNTK0pkTGpMNkFXcCgkKno0KT0+VDFOI1ArY11VTzp8YT5NdiF9dEglQUNZTW9K''@;'; put 'put ''JDdpQjhkIz5iLGopd1E3M2ZAeiVWODw+XU85VG86JXJhVnJdQ3JmVDwwZnQueW9oXmRfblVKVyZlcDEwPGI8dE16Py5kdnleblswfC88WmtSSnQ9MHxZVHBaWCouL1ZbKGtkdVVVQDFIWE9HS0gkRzBQUllbYFcwTWF2T2VDRmdscy9HdiZDRzxpUTB6d2I1USpkcVdoMDZ9L3EmT3VhNUFUMXoq''@;'; put 'put ''TDAqeW00by9YNz04VnAwSSklLiNqO2tLUy9CL086PTNjdCUhWkRzL0V9RiZYOTsqOjFmJTJELjtkUlV5NFdXe3AmLi9Yc3xCfTg4aHohWSg4aHorJHJZTFkhOlQ5NnYxQFFTfkVSPntKajA/VWdKQmdMW2NPW3dqKlRfT0g/JGk6VyNgeWFFTWopPShYQ3xka0BMV1lpOERVNCtHVHNHWyZlenZI''@;'; put 'put ''c1MkRXNzLjBKTUA1SFpNJCovZnMreGI1W1Y7N1kpfXIpQGlRPjV+NGosSSFrSWxRVi9GOm9PQGI/KDhLNjlMbnY6VSNBIz01OEpJXjpmVipJNn5JO15EYyNhcXQ4allKOThDPURuMEAibGNnPCFYJUgweVhSajA0YSlSRkhXdyZIcFQmNjFjUjhFI1kxcG9pWHZde3NgemdqcEFUPylONVNoMVp+''@;'; put 'put ''P3coM05ebzJKcXsqP0Q9LylOUkhnSVtjQ34hLE1kLFR7WmM1ZE5PM0YqOExXMnM1NC4sUn5qPHYmVkhRdT1LQjorSkttPiVbYDw0ZVpoOjZqKy5yMn1Kemh8RXhvcD5CPU91Zk9MeC9GXzNFaWpiYS9SdW1SJFNVPGI7W3o7NGdjPHt0PSlAXWdid0VnYEZwJE5nUl40QEZgaXk0XUpXOU1zK1do''@;'; put 'put ''SXJLJVlNM2c0THlZa3Z2JiRwQC99OD4pYGtJcW5TSXNBY24kXmNURUNyMDVZVSU0Z2ExS3JQOVhgVm4sRig1cUksMDZoOjw9anZtc3dKTCkkejU4OU5gYWghPkp3VH4odCFkY2wkOW8sNnpDMDZ3JmNxdlsuWnUmRF9nU0U3NGIifClbbDVtSHJiT0R6WVhaRno/eC9scmhmOV59Jj1jLGJfJm5o''@;'; put 'put ''MVg8KVdEPkZ8MSpZXWBGXntfLFo/T3VsY0ZXKnFjUn4mNHx8LGxIUEpBeWQmXWNCci4rfjBwZENuYjJPSUt8Q1tvLk17WnRkQip4RSxVLj5AMDxUX3J9NjxVWkg0I3YmeD1sKCZiPUFddGVBVmN4YEswJTdQTVt0QGtoekBpYSZ8fHFtTndueyMsPC4wcnJpcGZCaD9rZj5YL2YrKzN8SHNxcHxx''@;'; put 'put ''WW43PmBuXVR0bS9JQTFjMThoL3FNNFJ0SCVjTndaOS90bSopWXM6a042fl10VChbUm11bzZxfDRnMShZb1MpOGx5NGc0Sz9NPX5DQD9AViVKTm9yQH1UUllsKE5afC5VTSNfOX5rVj10U1lXcU9rVFB8MVN4MVQ0WnkvSSs3SzRBdyI9XTs3ZDpmM31hfVNtLEtUeF5lS09SdDxVOihlYUQ2bTQ8''@;'; put 'put ''QHJyJXFkR3YxTyhdX1Mie3hDWlgoVyYvc3NCSltkWVB0XnBNIjxAQD86MDc0U09vUTohZWpGREAqcHJPIz9MSEtjYSxZXWg1dSNQLlNiMmxeNTZlNU5sSVcxPlZwTX1FXSt4QTpQXzxONzg8e0RfPE5re1tLTnF9SjBoUT9FOD1bQEtGcXZaX1tJfGR9e3NNUih9aj5heERePDcqfm9VRTpKLylW''@;'; put 'put ''djYlal9bQDI0alkkeHdIL15ubF5zWFt7d1VSbCEmMjh+bThlQnlULlpuZjdNemNGe2lxMEBXIk87QDxbSVooWVpPKF4mZigpOWYkMkQyVm4jTzEyN2R8VmwlYTYwMz8vZzYkMCJ0fUhbPGBnWV5IeGt5ZSI5KnhJZ28oa1kleyNjejZeWFd4dGd8O142bDNoTWxLTD1eRiVyfT8kc1IxQGhoeSVN''@;'; put 'put ''b04sOVUyKl82U2VlYEVZS01AR3FFeVV5Yi85VGZbSDBJeWJANE9dSnc+dTVkI2prMDNAQHQldnVfaCFkVnUxdTE9YWh9LlRENXdATFo9bDxwfTdQJX5kPktQJSNlZ2J8VFdpJnE+NlJXUDE1eU9wfVQ5OWNoOXEzUCQqcSpiYD99SXo+Sj4sJjIqYl1wZkVrIyJJcSxwbz93RmMmLGdxOl5HRTJQ''@;'; put 'put ''ZGVAQU1YT3RSNCRVMipKUEUuZ2hkLnZ8Q0M6bTFNIUtlYFRmIkJqQGkuJHBsdTcpfnZgSkhbSWZ0S2xzVWdVQHBpMmB1LCYyYWl8bklSK1MmMGpzRk04Umc6Y2AjYmF8ZGhASytJWig3ODM5TXYmaGRzcns9LFc6Zm8/VDYwUkNHfHpIRjE6PyZpY3o5U2dFN3Q8JClqQkZDKHY6ZXgzXXk8bHNZ''@;'; put 'put ''RzolWjY/djhAPis5aHdWZUkjS1F4UVY/MSo7QT1iJClhXXtOfmwheSEuZE9eRDI7MGhiUWw4PSxYcllPIXRleV9EKTdsZ2J+XSFGJCpzQyUybjFEezRvP245cSEocCpvKX0jV0VneGtURTdrTmR5OFQjR1d+eS5xcF9dbHRHMml3aEpZZFR7SUA9WHhNMXZZOkw5PyUvblViRVVjbFp3LiN+ZnFw''@;'; put 'put ''d29BfDhhekMqOz8/MC9UdmAyO0BXRDkqWDFMRj40Ui9fMTtAL0d9OTpQLzZmJTlLUypqXWp3UVFGXnUhY2VZaXp0Ky8vVjByKXdsVEpFUXhAUGlEfFpPST07b1Q9UStLXndjRi45JWk/bntCS3BkNzx9TCpMZ0ZwJm59aD5JVDNQc1Vzc3ZFXkNaU1JpJiVzc3Z3UCVzamlPVXB+ZnhTLDtpUGVn''@;'; put 'put ''Olo4KippYDE9JWl3OnwhSj5oKHcpdXV+RW03PVNsbz8he25yb31SdFFZRnQhPH1bJlQ2UlJXYl5TKHVsKWN4SW46VipAdS5MInVCayhPOG9PWl00Nz4iMVpMNytIVyxqeSF6emZnb1hrTWFbQiZESlJpIWRWZnlIe34sMz1jaD8rLGp5ITxySW5nYi45JWlhSygyaTBdO2dSMmc0S2RdMyxBJD5E''@;'; put 'put ''XnAyPWNoYF9BQEgkUSs4Z143MmZlV0Y6LDFbaGRoNDd+Ki5pZXhaa0xxSGoiKDcmZGBUZitpUCUiUTNQa3hXcFQ/SGtATyRsNkAsKml4WHtyb2R1SHlPJSxqZjpqKHEyLlRTPGxvRjRvdyh1XncjdT1pTFNXW3BaUGs2d1BocU0kM14jWHg2N2ZLSXFnQjchQGg9VClOI2QxaGlpe1J2MkpmdG5E''@;'; put 'put ''YiUpfXJaZHkwQGBbUUAlOVIzQGQ7YFAwWUY7VlhfI1dsIUFgNi9GYUk+Uj9iQEBrNStKel5LKGgwIyoxWjk8TFl3M1B4Tih7TD4jRHJRS0tsUkd2PnYrIzYmPEhUQXNXNERKa3YsLE9scXBHWzxXanE9cVRaPi5JPTMyKTNFNz9tZzBgMHohTkRZb31IZU0lXSE/QTlyelBje3dCRDFQN1JHXmVr''@;'; put 'put ''LjElbzo7fG07ZkpnRX5WSl5pNXhYXTRWWnpZenRyKTJVUTUzNjtuUnFvXz0vP3IrfXkxKmB5cCZ+ZDVDXmM2OVdsY3phPU46LnJjSSp3RWBDXTZUIyooMSpjI2RXSGpDdFYhZzZwdiM3KVZwNlYwXmhzJjdXPSh7LlFGPF8lbGNNKFRlYixWRkladDZzLFRuJClNTk0oNGNnbj43NlQhOnU+V30z''@;'; put 'put ''MVJ1Im06bkB1Vzk7OEMkOFIjKUlgfjx5SjlTWjt8e2ZWXjxMe2F6PEoiezNdOG9mRmRDU3VvUmRoUC5DV2gya1ckVV9GbU11TnJaP3V3I2JibG1IWGdMeUdrUDZYX0JUPmhGME95ZCJMeGlsIVdrT0M0L0UwOVp1TT07IUlkUz1XJkIrRUN5Z29pdXZjVXFOSiIoJEYofVBVZFh8JHBiPi5FRVpC''@;'; put 'put ''WEdtUE9iV0dWdF10dnY4eVohWCQ3SGZBMUZPWWhMUUBIXkkzNDRAQ0tCN1YmeU13LDZJdGE/VktxQ1pvSCxyNEROO2d0WEBIYSZfYDluM1BbRTIuYWlzaGE1XUg2ITQlX2dLSERANjlrdW5WcTl9YHI+a0tucmB3ejlXZ0o4UnFDVnNKWl0yS3B7Uy53aFcxMmhrPDxwZjVVaUAqKC5rNzU0Wjwx''@;'; put 'put ''JGt3KEt+eVEvelVWL0d2L3JNX3BRUmdIZldiKmVmbj9sZXpgYTwvM2E3JT1iI2N+NCtJRWMzVjJGP0VvfCo7JW5mNStfez5JNi5zKCUhJkduO3xTXXslR1Ele30sWyRBJjpwIiVEL0woaCRoOlFXJn5Ia1BhTTN7PXx9QysuWjFATG9ELC51WGxUeSwwPFsmdV93PEU8SG9yRCtxL2hXSV9UUTY/''@;'; put 'put ''cnxzYHE/JW1BOlledDwuM0dXbGBbYXRrZm96NXtjcn4hclIsMCE+UkI7fE9nN2A/OStAKV57ZGlnN3I9PHModkZ5bVdWZj03XmRbVFR+MFtTXlJ2Yjk9IWNQMHQ9JD0uRXg+TD91MnRsNEMkOzpfa05CMTBhdmgrRlV8RUkwYiFqMyNBIl9TVFopWGhHd2YmLkVOTlV1V0JQciZgbVJdVFBTKm1t''@;'; put 'put ''KUdrJDhgRiZMNEVaUntNZ0VXeEQpWFguaU4wSUVZdEgkYm9mWWtQSVtUSC5oTUVfUGZ3dUkmaiNJZWN5LDovfHI3RD5KJWtgaXhMaCN9ODRman1yem88VDJSeH5rWmBeU1FaMTpdVSZ2YHY6XmRrbTs6WX47OUxxckhKO3JQPHBybHReTlRCOTgwfCk4V0B0ZjBnN31FI2NrMkQ9JCJYNDVvU25e''@;'; put 'put ''X1QiZ0x4RSlHYXE6NlN9UHUmRzwkaXJaSDBJMklRU0pIMywvVltZMHRKW3grRmNydjVUYkIwMWlrOWpPNEpzQmxOJnVuUDR3Tj1MZFlAfGNxNiFMKCV7LkV1X0BAbU14KEY5Z0UmWT5VWyJ4fnxya2o/Yl95RG1zTWtlJktZUkR8S35NYEZCPGlmaE0rM1Q6aUNaKXtSRExeKzZzKXEob1U+MC46''@;'; put 'put ''dyM8QGtPR3lQPE89NzRtU3UlOCtoLHthe147cipvPCE5Y1J1bHdEUFtSMntadk9uWzlTbjJvOnBqeExpR0F2ZE4zWCQma20sJSJxU3phYzRaOFpOT1NWbjdrbndxOVdTVE0pXzxna0NfLDlbPEJCJUVDQ25Ke21dcl5kbCZKckQ1UWwiaWQzQVM9UmJLSDdPVFJKenN7NkhsfDFJSis+STtSbHVL''@;'; put 'put ''SlZxMHVGa3gwRmt4TT4/TFJJfkBOc1V7PGtYciVuX2NePnhsblA0bkNlV3tLUig6LjM+KlFCcDZRZU5SalZqV1AyYWV8VCpsMClDQXZGYSx8RTp+cldYVEJrPW56Zk1CQUFrZX1FQUh0XStxQlB1b0tSdit4OW0mZjVTbGFpcD8pcUdTekVGXlFWUSNQfl1LU1VJIShrbjFMOSk9dWp5TjQmVyVP''@;'; put 'put ''YGhPdUZnQlF1b1tINUsoNUwzMnVAKkt7Pnk2YXY/R1laVm9qUy8jRTxnM2N9P1JiOnRedGFsNmJtbTI8YCglVjBrIW0wcCpsS1NUKXVMRCZYLyVXI04ye2AhWXY6fWl1fSJZK2h0bzlMPzEhNyNZMiw9OStLX0ZRUyIsdzM5O105SClsIWVdSzFrUD4xVXBUX2JTU19xcH5scFRSeiRvWVNreD1i''@;'; put 'put ''R1tYKSJAWzNQeHkvS25oOChAM3ErMj9vQiZ7I2dzfSt7PUI8LmRreHRiaShMciNYNjZjMjlhWFMiZ01zOVlsOnNrX2VtU3hdTVdqJHljMF46PXZFTVBBL086bHBzOHdfWWRiJDhkIVBCTFNxJnhQfSw7QjspbD47RyhYcE51d2h9X0lTKnF9bC52fGhTTltvTiEpOH5GOS4ifUNOJmluRzUvT3cw''@;'; put 'put ''SFdIPE9aTFZIfEZ3UyJpWE1TVnw2YWlkM1dRaShAR0EqJj0pcksuaX0rZStkeDckJmNDYS8+T1pFREFHV086OEVgRl9eWCVjUUB+MCRAKmtUIjc1PkMwSjJbfS49KWIxUlZaMFNpM3MzdGtbSHpHLHxDITVufkBxPSljYkMiY3BDUGBdc1drcz54biJZcz5UfilHQlMvOVYqQz10bzVlI1J8UzRG''@;'; put 'put ''cF1QUyxRS2t4fFlEIXF+Oz9bdUJqdC8oMzdyZj86IyY5L0BAWGQoLl0lcSNIZm1TNkhYWG9bVDdPYDxGelNdZnd3X0loN1JubiN1QkBXeH4oVEUuNXFTbzgoMzJmTGp0MXhvfjR9I3g6dm9+YkxhIVZeNHtjMjFwMjM3XT5Qdn0+SSpaOHwjOUd4K0g+SWpWR0FnTURBYTxXODswV3NeLGU1NX1K''@;'; put 'put ''Xnw6XUQwa2FDcFBqSlBBXSxfe3k5UCs+dz4qMmBNa0ZMRkxGTGFpMnR2dXlKfG4zTnU9NWdsVEMvXzFJI0tBWEFJOGh1NjdMOnZvTXJUMVhkVDIvMjs0Pld5ekZjI1JyeX5nZjJiTSN3RyVXKEN5dWpZXy8wa0V2KTt5VDRKdUk8fFRsWjpzZUVzMypNViN2alkxKUYmTEh7KWNUXkwuKTN+PHws''@;'; put 'put ''T2c7TEVaPj93WTlZViQuZk1eJWpLcDc5cztrWn4sQ190PHxpbT9wPHFrM11XNSU3PHBBfEY8KTNvWT5NYylzJlkwQmx8Iih7V1I1WGJ3NW46Xm52Jit7bixxWD4/TGhqS1Ejbzo3OE1ULlVjI3YhPWhONkNMUSNvOXklfnVHPFApWihKQHV9Y09JNS8hPU8+PlVLKTokeFEzTG5zYntWaG5PQHck''@;'; put 'put ''Kyk9WkheQnRPNnVmRTdLZyw7KG0rNS9McEdUMHc1L3ZhT3AsXl1VSlhSYCFlQENnajprW0U/Zy9PM2UxY01pZjI+aWtTXShBQUMiUWJBQXNJdFpBKUd1Iio4RmNLSWNEIlVxKF1gOU01b2FMKj55bVJRQ3VXQUFBQUFBZkRYTEBqbnUoMGxtSUpJYHV0PjN4M0oxemtGQDMxIzZaIVFzSiYwYlly''@;'; put 'put ''emAmZj1SPGhbNDAuQXldcC4kbE5RXywzMCtAbEJzK3l0enYqd2pNfWxac0M3W3k7X0xzOio8Uz84TyZzeEc5WTssZk9NMypfYF9AK3tQXWpbb31NPzdVOHA8NFNGcGYsYWdEJVkpS2V2OFIhUFA8SSZEN3EsWWhqc24hT117Z317bj97YHpzdnojW0RHYTVUIzgsV1R2NHdyZ259KlBUYEdLXXc5''@;'; put 'put ''VVFFUHRLKFAwWGJtPilVVz4/YjhKWEVxPzw7RThTYzlvejo6MSo4PjI2KnFIeXpkc1h5YzIyRS9vXjVHai83Pyl0O20vSDM3MzkwKFhxRSxdV01Wcz5pVHNbeGtzNkpPbyxXYDA9aCtJRW4xQlZTWzNDQlN5Uy55dy9ramJTSWA4UCtDUzpbcW5MSTRFQy4yMH1jY3R4JUluOWpiR0Q2WChic016''@;'; put 'put ''WEZEezBLfD5QMXZTJk9uNXA/fnsjJD00OSQpI0JGR0U4XnwuREQ9cXouVHh7WE8kbVNEUn1FRCNEWzsySWQsK25kdjQ5K2B7TmIldyl4USUvL3U3VFNLND9pPjUpK0hOTlB7azBFc2M1RykzfWVWdk9FVndUMCxOeG81eEtOVzBhQk13W1tGKyZQL1M1RDFDTWRhfCpdJFROfiIkOkFVX30qVzdx''@;'; put 'put ''dFZHKkAuL1YzP0wiS0tWWix2NiREKzxudW9ybTZ8IUxWIUgsYjlwaHRbLEU+YTUxYyJmWzNTQHR1PTg3OS9GcVJ+WEhnenxudFh5ZjdzW2tYOGVLNyNfekZbNWV5UUtYNE56cEhdYSF5YVhneDt8JT1GWUtdc29UQ2JvTThmS1taezBabS9bIzssI1M8bFk4QnVbdGhUQFtYVE4/Jl13KCwoM3Ry''@;'; put 'put ''YTUsX3Z7QWF3c2JIJnlOMz1mLEFUV3Y8T3ZKYU46KXR+dTBdcklDQCp8dUx3IThmI3I4RH5XL2NqVXQxeFIzRHgkfXcvcFRuanh8RTpYYzhjdUhyUXAzXzoiMk1CSXtGKXAhfUhuSzRuPmIpZkUuOjNyeGJPV3wqRlJuLEtvKXZTW1o7YFRKWUR0UDFaWW9ma2VsWyF5ODBeNnYjSjBNOVFMQW1B''@;'; put 'put ''Ik9wLzV2Mz08JkleKDVVIz5wYDxILz01LD05TVU+cTMwRlVLaWozXjFpLD57ei59bjdneEprPFNNL3w/Mm1Zc3lGQ2FEUnBOfDQhOVpJdypbJDc+LyR1V1dDL2FXOFJ3bHZzXUtUeFsrS0M2NFtFZlJpOHozZTxHPm1XOCNHMi9Nd1llSm48b3hWJD5NRl1mIV1bQmtxfUlWcGZudFdkZn5FYV9n''@;'; put 'put ''PyMpKjwkZyNQNjxISmdgRlNjPC56MGNfUXVIZnB1VDJ2VVo3KEh8N2JHX2tne0IoSGN2TGBRIW5feHIsL0pzMXxoRDRzezY+YFdzeXNJa2pMdExGOHVaP05LX3pPNldyK3xHdylFdUNEOHFoN2lCZDZWYm96Q1tdTWs8ej9POVR1YzRVZHk8Xz50ezlxXVdSK3o5XTVsOEg9SUpLRnNGVypPeH1I''@;'; put 'put ''PSN6fH5pY0FVRUJ0KltlbiFoISNCU3w7Vzw6YHReSi9kPTtzci5FVHdeb11+SkVtbDZ4YCM7UHAxYl5mLDJ9NV5FOSx5REVRaVl2a1F3SWJBTTgqXWZOR0lOSHE5b0NNMVs5fDU/Pm5tVmUmTGl5aGJMb0pKc19dR2UwcSlkLiNndF0vOHwpN3k6KyN+Ynpkc0oybGZ4aG1GKThHckg8OztuMk4z''@;'; put 'put ''MHpdQ14oL1Z7IWpzPXI4SDY6bjNOS31ZPnBiZEJEJWVvbCIpQ0NGSXBtV1IlOSUkMmFwUDZsQjEhSk5QPzZXYyNkWTdGfHB8YVBxVDtebiFXUl5UbnQkRzVwIyZrN1AuWzhLPCgqKUNoaGV4Okk9KiRiLFRMeH05ZXp9KCE7bDVbQmIiUDU3OD4heHxjLk82KiYjRF1CPkdRUUlkLk9MRktmUCtD''@;'; put 'put ''ZDtxP0hpUGVPLnNsYDJMekwhP2xCcjwoJFg8RUl6KFt+YUxLI0lsVFNzRCMsWHM7UkQ0RShUVD40REdGend1JTlvNXQkIU1ZfHl7b1Z+YyFiZ1RiX15EVSJZIzolOyZsL3hmJjF7Wjx2JTpSZ2UkVUg3VldtTlAwOUlgPiI4RFhQaU1SPG9kKkpeVjB9JVZydD91Z1B7OU9ebVNrQkA2U2RVY0BU''@;'; put 'put ''d2l1KihecGxPQjd6MC9OXSJiVjgsW2F8QCYxSmlnaW9PLjx1QyZVOnIlVEozY3d+Z0BVSW9AJFZXN0E5QFg/TUxhS2I3c21WWGBkUXBSKVRMNzhJbU9zPCsyTnJWYy4kJjwkejIoZkYhMV9zW0w/Uj56TmJWWzQubCVOdWFOZGNsRyU8YjVDbHpWdCsjKVVjdmA+eFQvO29YYU5GIXMwX0tidlQ5''@;'; put 'put ''VUV4JGVHOF9nYDBWak1dTXhwfk5ZSUtbJkUoPmAlVnM0QDZKT1FrTHR9aXIjMm1tNzJmfXRAJDN+Vj4iWGFrZmg2azBCSE84X0FSMUcpPEMuL3JvKUhDeCw6KDNPRzlfWVZoUElJVjF7ZEs4PDt5QDx9bXhfMG06KjMzdzEqJkU1KDc7fCtYLG1SfmlWSiFeNmEyO1FXXU0mRmEhYl5LLDAuPyN4''@;'; put 'put ''cGk+IVQ7JmkzQzdwJkdwMnFuSiQ5Z1B3T29SYmdHX1FNLls/dWJhJWZYZDg9YntLbkgwYVdFPitVPXVRNmhzOlBPUDwsVSV9emAqfHw5Qk1kYDRQTWg/MD42I15wbjtmPXJUeyVZJVQ7XWYqLDI5JHFhUUxEeWZffmJ+WWYqaFlKMiR2NjVLIy9SX0ZmclAsYlMzPCF9Ijx4SHJgSnJVeEdZa3Aj''@;'; put 'put ''fn17Z1lYY0g5dSo3SytvTmJYSCRIJXhON1dPRzFDOkgwWy9hKTBpVXNqaiNDcih4YWIkIi8pVC97OUU+KSFlUl11MkQwOmVBInJ+TDJPcVBdZ086IiJjYD43fGZEXWA7JTk0O3Rze1VCZ18qPjA7ejVIMGxScXwlKmklPzcjQHRBKGpUUjdZYiF0Xk9aZ3slU0l+OiVVPygmbmZ2flpTNU9QUyE/''@;'; put 'put ''WEB5ITsiQnRpO2pMaHBnVXRid2U5YUpEP2lLZ3k6fF8+Ny4wViNmOWouZUhfJjIvOT0hdGhqXiw8cF1QTzc7YC5MbXhoWXxrSGkmakJXWVRPdUEvS0pgL3xkQzR3OGR9MEJxNy94RTRePjJTTkQ5QFtSOUVbM3A4d0I8ZS4uS25ZJjFgZEp4Pik4JlFbJVp6TkBqUkBSeCF4LE5zIjJWaH5QLzQ7''@;'; put 'put ''dGg2NF0pZnVENW9pP3tockJVL1o5fVlZaGE3MmolJlFgU0FXeGFXN1BoelVQViN8YFBHO1c5T24mOiNkTm5TPnpmPTxaU2BCMVNQLGVMJiRfJFFXUDFhaF4sajdCUzhqeDcpSjllbVhLbjlPWGUwTSw4ZTpCbis9QFNHd1kraFhFUkleaUBZTT5sR2ZpUHlnPkpuW0FgbVZYd3UjKCFsV1s2YUBg''@;'; put 'put ''LjtiPF4xKTZYOWNKWUleQ2RpYEA1PlZmNjtJRjdzT0AqWjZyXWU0KDBGK3AsSXklYnYzN3ZeQ3BKe3h7Q1Q7VlJZb01HTHdZZikmTUwsXzhXfS5oVjZdcz1+Py9aeVtNbmo/YS4lYH4rOWMqZTF7Vi4wajcvVldSVWIkdEd3KmxySjdWeH0iVXVUdmdwbTNNY0ZaLygjc1YuU0U7QnI7ZDY9cmY9''@;'; put 'put ''NG48aCwmKzpQJE5kWng/M1tZKU9UTGN2fGdNXmxeXURLYWZ3QDtBTmE2RTFGfWl5bE9HUU44VWFlQFRVQnZhTGpkeVMmaCl+b15VdnpdUDYlQ2FvdWpfIVlvcUF1WWtiNCldbkx2WzhzOCNCQjw2ZitdaD1sO0RRKmdQQjI0a3pjXVEmKFozLjFUWXlSMVdiNCJmZFJOLkFQe3QjOVN3alJVNlNT''@;'; put 'put ''QjRDeXslaGVZI08sa1FhTEJoOzgmRkE9R0gzW0lnPDwuTm46Snx1VXdOeGtnXjJmMjtgKCx2QEd9fmlKQ2kzenh4S20pL3k1eCpPWzE0MHt2WFtmWUJOaV1rYDdxdkpqdlNuW084WV5zSzMxTDlQYz5mLkIsTixEWUxYZXckNjZ5Wyp2UCYsbEM1SGwzJVp+Zl1EcFpzfUhCZFJfZ0NzaklUNGIh''@;'; put 'put ''e1ExK2JObkIvbkM7Zkc2YklIM1B1TUV8SHQpajJ4Uz1uaFlUbVtTaDtAWkQrKCkqOChQJjJyMm94fXZbOkxqWFQ/VDhqTE02OD9sbjlPdE55TChEY0VtbmIyNEk6L2J4fHIySzw7c0EoMUVaKW9VX0kqNzdKMCh2TlJNMFIifVd+cU5GWEZYL3s8T21+KD4mV0JmT1ZHT1s3bXZbQVA9LFsiVUE5''@;'; put 'put ''SGZ3YzlVVEtLPVFUNTgsWXpaIXkydUBtW18pSjRpKTFJWX41RTJORWQsY2A9JSJoWGgrXSpnMH5GOTZyMnB3fH5OJEwsWCouYW1UVjVpfmRjYT1RMVJYQXMydy4mWH4xa2I6KmZ2ZHxObVpXeSosLzZFNEM7b04jMEQueyRtdD5PXWckPXc/ZD9kdlhBXkJFXkdjKTJrQUJAalI4bzpJM0tiIURm''@;'; put 'put ''W15SJjRRWnlsWCtWbXR6ZGVqSiUsKUBQUXhvN3oyd15AeDhURyFoMiZ0YFFXQVhjU0hbV3lALGMpczd4cXZOWVkwN2w1WiVzIWVZVFFrckZ8ck0rcWI5Y3gmMndCOVI0Z0IyR0l8TUUhX10iWGVQUSloS2VRdCNMS1clfkN8L1A+LGgpcFZpfGBKI3RoYEFfRDh7cDksWkJ+fTFbWWs1Y1NfW0pT''@;'; put 'put ''M0RQTWZCc1cuIzdBYX42QF5JeiIoKHEvQ2Y5TGlmMDc7KzZFTSxCIjpLTGAhbyNgayNmSyE3dkVFVDxWNTl8QiVqVSwlL3huO1ksZjNZOU5OR3dyWjRFWnRgd2lnd3hRdjBpbT9QS2w2ZGI+JSwzcClLdGleREdzTSRFdyJLN2l3V2olXUBze05gRSxnNHwpTzEsJj51SmBYfjlDMnp2bkZwb010''@;'; put 'put ''KDsmaGw2Yz1CTnRNRCwzSkdkYXN0WzRYSlRpT0FsWFh7biFBP1ozV1ApRzxYIUcqZEFwKilqfkNuMFZsfDJzQjhGTUZXayNwa2F+eHF7fXc7Pj4zNnJfLlRdWFssZ0xvWks0eT4qOVEocm9LP2UjZyMmKjM+cz4iQFEhLmFUUllsdyw7VlZXZ15VOFlFNWY5XzE/SCp+eSQrSDZFXl06NWhKMFEy''@;'; put 'put ''YEokMilEX1J3czA5Ki8+ZmE/VlsxYjdBc15MQEosK2YyOGVGUiFuLDtdZ3NLQyp4O0wrb3xsVUI+eUpHNlhKeGhbZXROITo5JG8ue1ZZclR5VGAxZCZ3Syh0M35OQmlnNz8hXnlqTE9ZYl42RmE4Jio/R1pSTU5pVykzNGxSZ3tEOkN5PEtPWF54eHZdY2kyTylAYHZtan1TRTNyPkgrIXY0W2JA''@;'; put 'put ''KyhieWFTL3UxclkjNzhKcHxDYWQlK2pyZEJEZFlMMDYjVUhPPHw0QT0+Z1Z8Kn53MzdtOkpmcj9sWClDYENJX1lfMjxdOmRXSWopYDZvIXxZcmhWc31IcUVVbW5SN3MzbCpDSXs0ITYvQChwLmk7dTxbNi9aTGw7Zj0oOzVUO0JpbzUoTlA0KWtuJSxDd21saVVtZ114YUZ5VEYoSnQkJHgvcWdV''@;'; put 'put ''bkVQZzRWXW5NM3QzMmYkKyJbLE5UbUlfOHhLWDBVWU48Zyl9dT88MzVWPV92YmtjQSFUKWB1JkkjbW1qMTJpdDRRaiR5al1uLkBUJCozWUNZXURKbFkxTXY8JCk/MDUmT0RZO0laYXFpUTBNdXdmVWchayVjLyk/JCZJcE9jRDFnWDh4NkNje3xXIyEuTjdjUHchKX5EcTtjYGg0OG42e2VZM0x3''@;'; put 'put ''KDYmJkRBaU0ue0dmdVFVVDEzVWBJQEJNSWhZKXxyQnd9c3tANEl9c1JxJWd2N1V4I19MU0ZMTyNKMkNwQDZlTyp8fFZqTTdhWGopOEBWL2QqZ0tncyhQfkAqPSMyLmZtTU1Pe0hqbyloNS5zVE4+azpAOEhuYSpzcVpQNSNHaF02JmJtN2E4P01sLylGRHRXKiNDcTNSYiJMU0tiZChMIzdiW04+''@;'; put 'put ''PTViQVszK1FNQ2RZeW97MkBvUm4vKFAyMTp3TFhXVGgoam9va2JTczpMLk1haGcxW0ozT1N3WjZCQkVRRzohbiZOVEowfV4uWz1xejpuRGleR3pnOnwhcVdHSyNdTU5SY0wpW3VXVG1ZNFQ8VEVhYT0zcUBZeHpNSS8sO2M8enI1XXlIKltZfVU2b1s8MjJqMmkpIVsjcmg6Z1pCY2pIbUMrVChk''@;'; put 'put ''YntqM1Q9PzosQCJwO1Fdfl5DKTc3b0lUJCN+TG9oYD1uYSttLFQ+ZExoWE1dUlR0OWNNdTYpNHFJV2ppQ35EI0hHc3FaMG5vUEdGQFtePG94ZTFuTWFoSH55Mk8xPTdHNiYuLjRdOmdFY2xpJUUvc2IxLnIzOmosJl1ZaERXNC89dnZPKDt7WTBxbnpMRXwiU15wS11Wd2VLbGxmRnFLdXtHQEJ1''@;'; put 'put ''Riw2bXBUZTtZfElXcT43OG98Sy57KU9GW15CVlBuNyJ2Q3wqaj0lfFhDcWFiSFUxSUt7cXZuRG1BQ3diQFsvJXkpTGc/RWY7SUlRLGk/cVE0ZUY7fVtgPGN6ZV4/bnFqQzo1QFVSVXpke0twRm9Jb1IsNkJzX0I0QUs+UW85KmVeRE5hK2xwP1hhVFFOMl40MlplV2kyP2Y0T01gU2RBImtoImtx''@;'; put 'put ''Sk5yaUhEQjQ6WjJmcVEwQHIhLlUkYzslKHk1QT5oYUFaPXhSel0wanpKPElHXUEjYm1PYVgqKUFzViNWaElEK2o3MiRXdH5LRClSRDUkY3Rrcy9dPEtDPjVdY1poYjkjeHNeSChbVWNZI1klQ2l1fHtZOFBQMyFIRWlALlNCMFthWXFJOUFLZi5XX2cxMWh3Xnoqfm1jcn0zNCRjanVHMDtrTCZM''@;'; put 'put ''PU8ieXJ5bS4sJkRZWlRTTFY5JVI3UkRMRyVoP3F8I2hoU2ouJix3P3NjZWNAd10jQlNUfmVLcHhmTlZKVVRRNEd5Yzk3Z1EoM25+RFIqIV9dYCwiXS9vQm89IiZyUD47bDFBPyRiL2YmRjJEflh9cXhofT0lSEJ4KEYhMT9FflRzIXxRdUlvLzJ4T1RAVkpWL3BQNmRZfk4vWyRpQSNNK20hKkk8''@;'; put 'put ''P0dKUnZueTo4W20wRCw5eiZ7LFRMT0xANnFfUSVweCVAUUFGTTNyY0FGOVh8XmpeITNFRV9HZFVyV08uT1tYTSNET0E5Q0FZLDczUEI4NGEmS29uMnhVQ216YFZ+bk5HJF5kXz5XT1lYel8/YSNASnRgPENuNkg9R2NFI2p9aiZqJns9MCteXmVxN0l7K2dRXVB7aSs1X1haYGVoSDpyd0YqN0tn''@;'; put 'put ''W05QTzcyNSxkSC8zTU1GPH0wTjIpb0goVjRmV2lkJSIrU2ZdUkteLmhqRFhEdWJXQGNkKzJ3SkdFNH1iYmBFQEFKWTBTMnNSbTFgOmRZM3ZtUzNhaSZ1JCpdZ3tFUXFrfTw8cGJNO2hyWE1pT1BfanB7RkIhKjtnOXUwKFRHcylLeDlQdU0wKTo4Qk5eWmY/QCMyU3RTeSRTfF5HXUQ2OWh5K2lV''@;'; put 'put ''bXQvT1AySlhVTmQwOHhfUGYjWm5hcTYkdHxdSSVxJCJleiZiJiEwRmZNTGB5dUBZI3Vufj8oImR3bEJeKFI9fkZbQ2l3Rk9dfTI6MG5lWnxeVCNXYSs8MEskRV00S1lJI1MoP1FFb09uMHArcUxbciRnW3FfMGZSI3UuZ08lbUpaRlIjSHhwXyVVKDkjcl5hLnVdUVNUZUVTdFE+MTcpQjopW2dU''@;'; put 'put ''JlkpU2xAIVpQI3MzQSxvTTlJWlJVJjViaG1wbD8+bjRmKWBzU2cvYkdBNUlyR2Y0OmVTJngsVH5ia2hTZURMZ0tCZ11sNFppL2RUQF0zeihqWXhqMSZRaVBrQTB7Xzh0XjwzbUhgVkpHJi5kTzUlK2FbfigoKk9KZDxoYnlsQWJXUCNEJmMyTCgoTzZbJW5PbD5nT0hRLy46UjYqdTpTbmNkdDVT''@;'; put 'put ''V3Y1TkYvYWZ+N3QoU0Yra0ZbTnFIR1pJfjJZL2d5fkFwNDVIdHhtMnRKMkNJbGpZPi5ibzcyX1M+TnBdIVlqK3FXYVljLCsvMkA6cHMpOVBzTkBwLlpQNEZQayRpdTZnVXJUL3cyOSZpZFcuaC5MV2R5YD5QPWNSUixqemMzU284cD5IJWk6VS45VWV+OygiTlVlUmhqIU0uSlV9YXlzaCZgVVJo''@;'; put 'put ''bj1UPCtWOV1MTm1hVUBBUiteczgmW2xdYX5MNSFzMmVNZiFASlN1XS9hfjZ0KDgqQ3dCXmpsXih4ZXQkTzt8ezNATUI1KHNRKEo/JWphZCg0PFV1eGNdL0JDZFZpbXguYFkhcj5sZz4kTTArYGtBLnxsT2BqVjxHKFIlUURlfFRXWH1dVnNjb1JxcGZrPmRgPUxQcDFucHo1MmtLKkxYcixaZEhn''@;'; put 'put ''M092bE0wOltYeixRYHo8al1JXUthNDhvdDVSOS41eGtkdk1JbUB0Rkpzfil0dWN3ZFF+WVJhTE07QzQkbm1KRj97RnddM3E/Q2BhdUhhMkVpNVBiWmlZfFQ9ei9+RV1JSXA5Rmd3S1YsbDwpaFc9ZHIvMVZ0QkkwTE1eImRDQ3VKOSE6SFJYZTdVLldyOTo+SnN6KVZ7V0khTWpYNHx2NTN8TGV0''@;'; put 'put ''YWBET1VIbUkuTVgidlM/W29yIUF7dk1ZcmNvPUNiIlR2SGRFaDQ1RiMyXzZJVzoqZ0d+OTxgKn45KkFUKj0yaj5LOE0/MGZ3S19fKEBlOGlGTTxGX0JCU2w8QnV+QD95R1dtTHVuP0xXeC8lWVd6YmUjaWhvYlYqOWtJV2pbT1YsbTVHXSV0Vk9MI2tFWSF4eTMrOltUQXsrTEo7ak5dWkR1fnpV''@;'; put 'put ''TWB1WmUhakIrN0l0UCpGITFTQSl9UClabUxhVTEqSz1FZiRVO0JtJGREWnckQTdGeU5UOTF8ZjsuUVJwTTNFcTBoZXA2TjZVUyFyLEpLNHQxQmxHZkBAQk4kJDhVQmEhfSk1OUNFRSxbRExaNG8/fChrV3F6bUJxdEB6JVhgIUw4NXovYkkoai9HJkxQaSg2fWp0VlphIiswb0hAblI1IUNUaXcp''@;'; put 'put ''UERMRF8hOTM/Zm52ajhjdS5xOSsjJERNe2Vhc2lTWl4uQ0FORHV7LnMwdmd7aChXSTBnZ3JYJltdLzhoK0o5djJDREMvZjcoQW9fcThDSGQ9UjhDP1syaTNVUSwoaTBZcUc+KmprTzFiO0wzOHEjfiwvVUJzM3hYW3h9TGs4QiR2c0VAMDdXN3x6JEZheEpHMlomSkdebipyaz1XMjZsSmBHcyko''@;'; put 'put ''UGZIPmpqUkc2NjAmV1RQO2lWKCg5RVBMZjF3WVBTY3ROUilba257TSRDUm4oc2VuJUA7KExTPGgmTiUlQS48cGRMUXxIPWh1LDR7TVp+TSY9cURoQ3BwbHxsV0pTfjghPlskN0goTEhyV3x1QVR7eldMRFA2NT19aWRmRnM4NzZvNHU1L345SGhTSix7dCVlJSwlU08vND0hWEVXJkdjUlAzMCJ0''@;'; put 'put ''TWFDbjhLdkFfLzk3bUdsUC5gSiZPZ2pTY1pUYSszOnE7PGZacHMjeF1rXytBcyEuI0B3aXt+O15aQTk3fkBvRVVrP2hwV2VYfiJ9U1A4bW5maTMmflJfeV9IMWpTO2spPXdJWCNFTU52SjY2RChSTGAvRnYzTGRUOjtIRHRlSEJ4IWRmZCpTSnBFOGRfN2VGe3plTT1DV2A3UDFETWpXLzdhdi9M''@;'; put 'put ''UDBxfTJ8L1o6P2RsQkAlW3ljST11OXg4SHdkLzxXZSp5dS9FTjdiPUk3RXpQX3hXMHhkeGc2YURoJjdvMGBHYiMqQ2x3LC4vejNMe1M4a00vRFdjXmIsZiVNQ3ZzRFd2bCEucF86Q2M8WFVCOXtXLERlYjkqXWMkTVNpZi50ajglXkpmIzROJGhrMFdXTEZOTEA7ITFGc0t1P3l+TC9lS3U4WnNU''@;'; put 'put ''eik6QWo3RF9abDg2NissUj5ONUt8ZT5UfUBjTi5PVUl1QDlfTDdPZW1wVVFOLDB3QmlTVGduKS4xSSo9X2JyJSJSYyZebnlCKVRGIWE7fjlrNUhsJG5TYjtnLiY4bW1CKjFZJGRELD02YC5JPjxDRCJbMHovJUd7e0UkdlhqOFpLMG5DdjNBSjMwW1ZZYlQqREZzNUphUzlsM30rMkwjPTJwNktY''@;'; put 'put ''fSFlUU5RLD50WXJhejVyTV1MRCVxMCo/bDZFOlMobnEvcHM2bjtReD87Sl1ZMiFqTiE8d1ZMKUxZbjdDVjw/eTZuQFRgNC95dmsyKzZvNDIoOj1SYjc6I3QiNTVxJFBlLkc9QHtnMyJJamc7Zz1nN0s5MF9+MDt7aHR2U1pyKFVCYFRPNXorPUliKmc9fSs6SGUiNyg6cmBOTVlofEV5JHxob2Fm''@;'; put 'put ''VzFqMzEoImM4YSYsfmYlbW9Db1UkVTAke3k6al81SWJOKiN8SGE/Zk07bEghNGhKRSMqaz4xIkovenwqaW9mYU4hSHZmZ1lKYk8ldmErUlYoTV07YV0jWStYIkhYZTopKSVhazsoXzU8RShZZSs7NEA1ZiRQNUxSbzIzQDk3KkhhdTlmSW5qUyJQVmUqKipqZkQvYmlrKDdnRSM9amBpXXEwN1kk''@;'; put 'put ''IilROmo/ayslW1tGZTRQaz8oJnFqYyQrfXVkMGU9TH4jeHd4aSpTVC9XK3UhMyVwNndQQUZfe090SS9DcWZlInVFMmptZE9Ab0hQZjQ3TllGaWFyYj8sbCVLQ2ZraSppakclPiEkayxpP2IoZnglXV1pUXl2IWsvRiokRDA8IWtOLGwqLmwzc3dsX052NWgrcU1mc1gkOEImSylZakFvaz9Bb1s/''@;'; put 'put ''ZV9vTCsxc2Z+NjIuZCQ/OGpSRT0rOTs1Tmw0d29xLnREIVpjNyNbc244KTVtRTcpbStoZmRuY3V3VzFhWEFPT3E/WCsibSNFczBOJjsyQFh6LD1ESnBjandaeVtlfWY3ZmtyL0N+azVEKGZBYywkYHFlOjl3ezx3JFZnXW1NN1BXeWZNK0pHaiZMOEAjRmFKJXZYRTpZQ3lkZzEpdkNNdjFgU2wh''@;'; put 'put ''d3JORWUwWSxxczg0MWBqTUNDL2EqLnA9emRUd286N09zSTl+eCgkQTdwNGYxP2JhJmIlfVBzM1FyLilOcTEsbS4iNilhIV57WWJvZywsbypORVAuWCt9LlR2OlE1OzRvPCw2TGpac1RVUEwvUlJMSGlIfmB9LHBLSi5RPlZ9IilufVJ9TmFZI1heWllJUmwhUVgkTlsvTV5ocnE9Pmx8ajR0djQz''@;'; put 'put ''b2BnfFtUa3d2IUdzdlg3SVdOI1RiMDQyblN5QVVRLmRBamFOMlByb0V2d2BYJCpGIkdwNU03I3ohLmBzVXt5ekpjJjQoVUFVQiZuQ3h8ZzN1OX5BYHA3X1o6IVdadGlucWZAOmRdLGN6PTZiV2wiZDs0OmNgfT9IM3kvVGkjSFVodEwhL3BdV3g2KzcyXlFMckNdbF5SLldidnozXztKWVZqaDxg''@;'; put 'put ''YTp7LkVIM344SU9qN1VIMzlUTnheSHlHZC5MLkdiMD8hL0lTJW1XSW4jQyVQMERqM3dHO3M7R3QpTWYsOj48W3tEJndLPjNEVVQ1SzhHTEJdOGw3JkUkLDxLKn5PYUFSbEd2eUJqamFGMihebHQxKWN8cTV9djhEazZIIX5rcS4hciwpWDd1WHgqUipWRDdAOStoVyZWNDV5QzVxQU9wTlp6ezFQ''@;'; put 'put ''WiNocGR9OjY1X3tHOFAjYndhKFdWUjNsW0kscVNteStve3tvR1kpOj5IWDJBOmZuMWtfaCVgYW1mQkovbUNxMFkkQ0hYWzZOJGpzIj8oQkpBWX5kT2RUWkRLMipxVGpxMFFaYHFhUCwsRmhqcCVPR0VWZXBkeC9JVHVYKn53THo0Sno4IWZDLl0jXzFMMWs5NiglZFQlIit1Zmo6ZUpwXXZtPk9T''@;'; put 'put ''eWtCJSR3LiIsWHxJUGIlWl1SZTZbUmI2WXBxbmsyX25sfWsobVE/SkBmXTFhMXF7QVhsVSNvXlh4QW4jYCk1diFDW1UuYD1FYm9FZWs9a28/LFRZaUclKE9dMG9KODkwP14mdCZHS09ZJjRtREQ7JDJ4Rm5xY30xSEh6Tjw2Iyw+ZE1CeCs2UmcuKip4XVZ4eFhlUXVuKkJ5ZkooQ01kJlVuOSwh''@;'; put 'put ''aUglMSNhcSs5O2MwUDRidTFIRkkmYz86bjh3cypPJG4yPn5SSz51TEEuW1hIZklLZ3Z2ZCJ9SyRZeVI0SShlamJMP3d+UXdAP01aZkVSaTopOD1ZODd5cCJBM11ha0JUcUlCPzdtdFREZSFrfm9CaDFMfG80WnR7VCJ4UE87eCkuI2t2JjZuaXI4cCo7Z1dBLkVRZiM6eDFiVDY7dktaI05GKF4j''@;'; put 'put ''YS5UT0o/d2YxKFpuayxyS1UraToqdy89anRkQjJwPjwvJVRlZHl3THpMMDAuPTokRSlnajk8MyFCbnw1RkJMSF4vYm1AUDdiIX50M2NVVDg1Kjc9TFpCWCQyKU0sNFM0WDJuKlN2XjxLbk8iNCwpLFpgRlBqck1yVGFHSz55ZG03QGR3emI6bXA8Y0dBPSEqR2ZlOV03LzRnSSJZKSVvXURNO21T''@;'; put 'put ''Z2NrK0YqSSRlZWJNOC4jcmtmTjdwe3dOezVTP1gmTnIiWEtQXXhEVU9sKlk3L0F+KzpuVFFMKFNnYSM6c3VVIWFhMSRhP1Y4UmFoPkJEY30+YjFaIz0xX3A3ZnZdSy5BcUVofns9NVJ5OER0Um9+VWAqaG8uUVJ1P3Nme2c4PyloUW1LZy9nWHdZQ0xITWZWU2VmejpQOHpoQ1AqRzd7PztxV2E5''@;'; put 'put ''LFNKc3txTDxMOSNQNVJOZjtLOXNKXk1ocy43MF4zPTFCPjVXNSh2TXJ6Xy9sTm4hMThFcC9sal83QHxLdSQiUFVWaSJiNCZfWVtiTFosJjMqWyZ7KVksN3tPd3cvIzAqSWgsVHoiKDdaUiNsIkA7XVc5X2U4O3lhWi9ARTgrMzF3I2JfQlJ7Nzo3KWw3ZiNAKmhtdmlGIzZaSytNTE9MP3hWfixL''@;'; put 'put ''TUxkWnA0PHNzJmFzaGRad21IZD5tSm5HXjdwTktWUyVWWll4LFt+ZmJJNjRAaEZKeCRgZGs7QGJQKm4qfS8mTHhuc1gjbWYpU2oyQ0haYS9uWy9fTElrRGMuakxeI0l3bk9MUl5XQGMxSWQlVFU4IixQe2BaP1JOc2w6YF89c3pzZn55S2hZO3BXdT8/Ol46NnprJDtDTEsyUHlaVkckfE1PcmJu''@;'; put 'put ''ciopRlMuUmtOJkRnS25pXVRKRWtGJUpIPGpEQiphTFUxVkhYfnooVnNOaWkjPzJyZCtyVzZoR2ZbZExvUzQ8aiIrcmxqYFZROVl+N0FFRFQrKyZ9elcmW3YiMyRue1QxIlpNU3NrNztKYE9JU2lKIzdbbispNm8vK1VyT2tETWkqPVNTZ2wpMTY6Q303QUhQfHVfWC47M0pMZURsJSs3Zz1yYVc8''@;'; put 'put ''VmN1VE0rRzBUPEVZQSR0ZGRTNGVWKEAqVUJkP2JoXmdRVkVdcko7cm0oNk5vN3U5V3VrZyZpYTlFcSwuVWI3VlRNZH1wPWVhai9gLjN2PGVON0k9cD13RUpDX3leezo1PytZO3hZaGNbK2pqTHZNcDQwOj9vbClmQVsqL2w5bHdmb2thMUZ9NGhJdTtzcXYuMn1jJChaJUAyTEY2TnlpZTdJWCtN''@;'; put 'put ''aEBSVjlnNyhAQEh8U21YTiZ2dyghW3omLH1NSDF0S2giL3ozJSp8MlBOTHhdKGxkOkQ7Y2Fbc0kzPmp3XmA1Q19gbko1RnNsJntMOyJ6W3g/NC9wUF5JT0dJanFiMm82az58Wj8kJiR1aFMoNFsrO15iUk9ubGN4WmtmNlhFenJ1RkJ8W1FBPkRBLCZBe3pmSEVEJjhTOHQ/cSZkPCIkfCJ1QGtq''@;'; put 'put ''ZWEvZy89NCV3YEZwMSJ9T1k0TTBqWXcvNVlVcitDTnNwJUtWezFKLGAhMTYsQE5HZmRqZmdCMV87L3xMb2RgLDsrSzNkdzdzbjdZWUt8YTB5KkZ9R3tGMEgueylDSFE6e046TnNzdjJ2VFBQcjA3KGRFSHZYbFNIWzJ3aj46dSR+TXVzNzZZZz8laGxwdHdpcUlPNGxOMik3VDcmW2dEfH40ZzUy''@;'; put 'put ''SHV2SFlxT1NubSF7Qn0veTx1Q3wxUkRJaGwvISFpeTc9Jk9TYT9AOWhpfjAyXmtZTyJDelNNXjYyIzdsIjI3ZU1pPCJRO1ZHMFlEWWVJblE7a19gLkduPHQrWkM3Um9IdlFJNHt6dVloZzBabCRhPXtGQms3QjBLW18yWjIpa1FqInJDNk1RUD52XWhlLDJJZyY6NVghazNTTXMrJis7d10zJSZt''@;'; put 'put ''JXphP3ZScDJ5dzF2L20rNWhmaE5lfU9ZXStuTUg2PEA7dF1HXj4pNEFCZHwwbjFsfHx9ZCNkeVlWQzc9W3M4Zl1qWysid09BNGRiZXdRN15JdXNZUjFHYENEcEl7bVVOLHJWO1dOVl0wMD8qTzVgZEVPfiRJWmhdOiZ2TDghI2NvbEVLdVpiMUNOZWhrenxoa3RBTSFPLzkxV3JFPWMsKCh3OUNG''@;'; put 'put ''UCNHYltIfFgyaCMwc3ZqTXBpeHhARTdJfiRvVzpRfHVIOVMjcGZPb1YmW3klcHhBOV1EX0Y4YkQre3oyTi58dC5Ic2YpKkJ6Xl9OPG1zcmdwfiEoSGc0NC9wcFVJZXZkTXlXUSgsMyQzWk0uMGUhfHI7dS4lamY8P3NiI3M9RDtIQSt3YCt9LFBEejE2d29gISkwWWB7czA/OGsyT3ovYDlDV1V8''@;'; put 'put ''UnZQSlprPkRaTCZKXnE6YUV1PTVEZFkvczUmaiQhVHVYZ3NpWjc1PituW1ojZktmTFAwUU4mV2pQRjdxW2ljY28/NlY1WUpoO3hHay9nUVc/Yi5pRWdVQDg/R0NvUGErYXViWzVlQ0h5SytVREtaTn1odiJHWS5TcW5bQT42Xi8rJkQreVVSPFdpLmk2RThtNTgpbXlDelo9fj1IcHwjVmJncHJw''@;'; put 'put ''NnJ0RCJASjw6WEViYWN2NjtOJWV2ZzJScClSclRXWT5STl9yTDs8ZG5PPDhFRn5KZDB5YUVaMipXcHhML1JvTmUkIVNmNmlfd3UmbmdpOkEqYThJSiZLajR4Yi9je2VMYE5BN1p0NmB7RkM7NT1EbXJPQ19PRX5DZy5hNkZgJi8pVjRfV0NxVDFhQU82eEZRTFVvUWlCVHlDPC8zdFIqVFAzZH5E''@;'; put 'put ''RmMlRDpRO2Nreilzfj1fNjBvaVFgTVtgQjokJmxTRSx8Q3JRN0piWDdzcXhJTn0hTWhYZnRbWC5YO15Ncl13bCtkRnhPY2M2ZWwqfjMmRzlPSUovQEJRZjB4K3g5eCRNIi42WVJlQiRfYHZsSlB7YyltKl88VC9HbUhAJXpEfVF+IlIvcGdgSlRROENqI1h2dix4cDB0Sig2LCEzOkI0QSYsJkop''@;'; put 'put ''TVhKZiFMaG0wRWMlZW5SSygkKmp2cEB0RjdYMWhLYkRJZC5wX2Y3O05NSChQUkU8Xlo+SHlldToqQj9uYGw3YFQsOkc+Q2c5fktnYDx3TXAzXjYqfkh1dGlUMmA6eWReZHE9c2NobWlGYWEmQiRedEx7dkNjR3RBe1NqPkJ0bjQkdi5JV3ohWVJDQ2ZOeChiPSo2XmJKdzFqQCZIJENaIXBVOmJp''@;'; put 'put ''KV9DeEk9UigjR2JAb2JPMXUmKnVrTVdMLjB1LlZXOiYuTiF8MW9lJW08UnNtQDlkMXRYO3VuKFdLeU5CNXcjdjBzeUMqa1FvZFpPMWBMLkljdjtqVTBXejFmS15KbW96eFlbT2owU1EvdEc3JWciYjZZdjtiSHZNVW4oQ0k3Tm8zNVdAJVN7YnI2dmJ9SnIyZihdJUxCOj58dislfHZWbmxmenEs''@;'; put 'put ''aiEudCZCQmYiRV9vWHU/e3xgUThISFFyQnkqYVt7PF1TYmwmV0VCR0BKaHJxbkd3THdFLHVsZTV+TlBBTztZXXpiPmlDKlpbY0BDPUVvSDp5bShZM2RYe2pjTi9mOzNmenhJTjxNJklkcXhmQkhmd1VrS2hLblgpTmVNelVxL1N1TCV+IzArKER5OXJ0TjJBMjYuUmxaPzhGW2dBY0x8KERbeXdn''@;'; put 'put ''QHIlKWEjIz8lLzQ8O15ySDp2NzRgSGQ0bSRnPElDNncuOT8xLzxVYl14XmNsJldhJTJvVVV8W184dWRCaUpDfC5XWS47LE9LTnMxQX5beXhIJlArPXMmLmYmWiFhMFtFP25PR3hjfjw1e2pkM3A/K2U5TEt0aCxEN3pfcjdFcWl9dnx4cHRZUCQ4ZUVLIz4+ZU83TEsufmdeImZrRTxuPmVRW3VX''@;'; put 'put ''KSxuPiVQZ00/akA2b1lvQnQjaGUiTkBBeX4mNk59V09vTVVZREpbe2F+ITFUUWd9Plt3dnc/dnNZJm9WdyZqOD9yZyY6Sm8iTDlefno6aGRBMTVLR0RPSW9INTFnNE5ZP2hicys2ekdRJUYyR0k+NHRPQ25vV3N+eFAseiMmWD5NLjBidV12TiMrJWdxd1F1QypfKztLdER6S1d7a1o8WUUqVWNg''@;'; put 'put ''NHNSVSleXil0c2l7dj8qU2ZbVGQmRk5PPGI4bSl0eHV3e2NadWJqciE8OGppZl0xZi9dcztwM01xJF4/fW1Vb2xkKm86IzIheGtvd3JibUdYJUIlYCEzL3tTPHc7bz57OykhZ0dLc2lqYFc3IkMoNmlmPXddOmxEUCY2ejZdXkNfeWQ7Tn1NUjNoS2QkTDdaOlVzJVlIS1FuVCtFbFcwc3MjOVFt''@;'; put 'put ''QXoiLmZeLF58TFM9Wk5TXjs2I31vPlVqTzZEUVoyVmFsWHk4blp+bXlxQElKVjE2VF1hMnVVNDFZISZEQjhhMjVlSUohanFgL2MuQVRgLnEyN0t0bVAvRDoyWUUmKVtgKlRYc21vaHByZzRScDJJJUNfWjhqMS82KzR9bChONWpKMGsjUl0+eCJDZTc3cXhrSjB1SkNlVy9gM1JoTi5IR0kmOGhL''@;'; put 'put ''Wz8qdlJYTUk9L2FGQVd8ITFrNXRCOT5fQ2hsTyU2Vm85dS9bJmldcytzR3tteT8vYU88PHUsMSpbPzk8Uz97Jkpxc0hBbTtneyxSfUV6c216RT08fCk7N35pRUFxbCIxd3l3anohKyhXXXssaCJyZiRwMXd0eU9iSkVzL2RUVTpKPH4vdlE8bV4kWjJYMntHN2Y+K217fV9GTWdFdCVucjU0a087''@;'; put 'put ''dTBdWVBmPntMSzIsbXdyWFJdY1tyfGt5TE0xKz4ieHNhIUlZX0YiIWhTYGUmOiRrLGBNI1UoYWU1a3BkZiQ/QGUuST1Xc31rUVckXlohR1A9NzMxYUc4cD4oR1ZyNWZuVCR3Z0Z9b1dqaGYlbkohPTBDZFRmNmc3L1I3VDNOPjN+XmtuciFXRj1RTCxGQXElQiR8MjE6TC5JP2BUdGZNZzZkM1Bi''@;'; put 'put ''cXw6bzNATz85a2AkK0IoYzgzbFI6JVhSfUlHMCNwYlFqJWxrYkU5KzM2by5XJCJyQyNSKGIwYn1HelJvRk1CJWFARW5hQDhqWjppJVBqfiZgK11OTFdQRipWekNYbFIvaj0vJXk7K0o4UG9bMEUkTV9vLE1VNTR5IzFoQnp5YHdvSUMmeG9SanI3QnwyKTByP2ZSJTAmPFsrcGx4dmFaR2EqNFVs''@;'; put 'put ''ZGdlXXlDbzZYLFdYZzJfNGtVd2RTRzZ1STh8UitUV1I7Y1JwbzZwQiIrVExHUExGfmdkZz1kfUA9Nz5EZU0qOHddLGhLVUJDQ3RgST1zJEpFcVJhK35ZLzlUMkRDb1ZNZ21NKFEvdmB0dUtdRnczPXZQdlBGIWouQHJsaXNPNGNkPXg0PCZtdzZ6PSJ1TiR4UjV4Qzd9SnMqXUIzYF5HRTcobldq''@;'; put 'put ''bHhTJFJCOzQhaj07bWt4NEp6djo+UiNoVXRXTGZdd25HYzl4UUVfdV5YIlIxKllFY1V6O3ZHMElDZlckRiZ3SUY/KGozXzRvJU0qdzM8eWttJkV0L3ArYmRFSCprZHdhTF1APXtVUzRRTVd+JVtbaWNUJWlYMUtefE1+IU90RVZKJkE9MEJgaC85P29gaWhlel88Kyl0aSF+XTY7M0Q+Um8hPiFw''@;'; put 'put ''enZ+ezNaZ1JoJWUxeX1AZ1dlNzJQY3xoO0x0KCgsancjUGxiM0hiYFhXUUEha1YwUzFUNVtgXXZXZClobHVGdj59RCgpUGpnRGsxc0FVYmNLaCkzXW5LYlJQby96WVlfU1NqRmxGJSZoUmM6YlpRX3ZwdXE3MUNhIzUld2pOMzokJUkvVDNqPDAhMnhjQkMlXiI6IzI7Ny43JS5RWnI5PlZlITY/''@;'; put 'put ''Xz9zNXg1ZzY+Zz5pVixBN0FbcFhxRzVQPGhJITBQS2JqQzhHVy4yKEdYXm0udVtxdU9OKi5MYnM/S15LPHxhWDMuWDElTGJwQS9sVURVJTxwTzIkUjc9VCtfITJCWj9DSy5TOGVSIVomRS8obm9ISGdeI2RheXlHWHpxISF1UVl9WV8zbVkpRk5IS3hpKVt1fTRQWW0/Uzo+X2Q4TklYcmssYHBB''@;'; put 'put ''SmhoUEtDPU4lQypdQmUmZiNjWDZsRmlCMUhhdXw+Q1l6bS5Nd3NwWHJSODBeMnklcGtTcjNxI1NFXVF0bVJtQmhMaFpvPGVVUTtdSyJTSyx5WmMpbV8mRCN2OTR3QmRkbX1SX0J+T0BLaXwjdnZkY2cjQmNpNF4hU1khcDMpZXEqQmxUTXV1Mjk3eUt1IjF5R3t4SlMka19OQTI4c0Y1QEhUY2pg''@;'; put 'put ''WEh5NTtAc0lhMDc5dnlRdUVTa25bKllmR0pnckksI3dBUWs5Q3M5UlJeOTxQKklnV00peVdQUjpEUH1LLDM8bUsqcFldNzM1WzwmR2tuQXFudkd5KU1zQF5kS1JGZTolfTpPRlQ1cWJVNjswTF1Pal4rPnEva2xmelpEcEY4NjIpeUlRW2ZwLkgjOGJMUmdAcnU1UkxSU2FONH42TlUkdiV7dHRX''@;'; put 'put ''TzpENjx6KVlLLkxzd1s0TzFyKzhUPEdXTjEuQDtEbHdsRFdqc09DQXBRdCJEUVsoJl9tSmZ9JSIpSCJqWG80Sk0pdjg7VGYjKEU+Ky9iRz1Menp9YEB1YS5xO1M8d35NPT5QJUoqfHsrIX5TbThxTmVjVnwyL0B3SndnT3g4RVRhQ0dZW1hbaTNMazJTWnokKnhJfn5pNkxLVjg9Rj80NkorXVNQ''@;'; put 'put ''KiM4TjVRfjQoRjosWXxwMHFKdzQpKF80cDs6ZE1qaCEzJGxGKWVbflM6KW4hSkpNNEVAcnFIZlprSz5OOixMIjU+PDY+cjRgRGpCL1poNnteUm5rQm1MJiopcmFSKVN6T11rTGlsXWF7Ylt5Oz86YmQ3eiYxQDgmeCZ+fXFmQCQkSWB5bTtoaSJTPi8scikqeDp6d1dvO0lMJklObCVmbVh9el14''@;'; put 'put ''NFM6RnBoakRFXWJ0LjVWOTh2ZFhGWCxKakhoYComIWF7LCtmek5HcDFPRiRaKTk/MWNARGtVJkx4Xyk9TlMvTCl7cm93ajxPOF1PR1U/RipLR0JqZj9zKEcxIjEsU05TI1N0dVhmVFtHfWU8dkhibX44QCZQQD5nWlNxcUY2Ozl3JVNAY1Q5dlhWQkIvOl0zOWE4LlNCV2ZzW3szc2Vfe1Y2JEdL''@;'; put 'put ''XUZ2UT9WS3VAZyxnUj5zRmN3YDVUOV1FUSRjeSRtSTFVXWJUKnc3PTJEVWBGdlRPUUpHRnJAN2RrYCk8ajhkeSp8fHt0OjhHY3R7VUE0akdreHBHbnN+UUFQRE1UZTgoMnZDaEpVMEFrSDgxeGlMT3g7a0QiU01lJEYxcTw1OVpON3BTbG5OMip6IyxnL118Pi9aYG9qRWJiIWA7WE40P0klYnN4''@;'; put 'put ''NlBCJEI7ZCt9eTUiSGxkLGVqYWVpNywweDRXfHphQCVqQX05S3MxLE96U0E/W3RuRERdbFFadUBlMCFMI29DYk1POypEUzhAIU5QSEg0aXk0ZFVkJnt3MihSNmAoKUk3WTRWY1h0S2NrUl58X2t6WTJiO3FYUEI6R2koSilRWlQoam80eEJMcVBybzdGUTtiUkRecSQva0ZRVWFTK2NqfSREMnc8''@;'; put 'put ''aWNvPSUwMWU3dDZAV3FrVShxLkV6OXQ0b1lJazo5ZnY2LiNTQSpUK3N7VHRFeGNBe1FlLmQ8KU9jaWtaTDsxY2RBZjRGKXUmcXU8aXBZSmZPWi5CenIkPExudHk4Xn0sdn40bmZvNmEsTzNpTVBDVj9PYjJhKisjSGxrdUpXWyEmODdhd2U2NE91R2o/O05BIW9KMzJLdCo2Ky8lW2JuPyJRYXBE''@;'; put 'put ''Mmx9K0tLeUxZXjN1KllvQk1SMVlJb1ksP19rM0xxbmlsSG5oPTZKYDg5WSF5Z3A5YnJHIzhtbl58SWJuVmh0Wm0xSDFzKk5eRmAjMGI8amZEbFkybWx3RVp4L2k/WCU8JSZPPGRRTX5Rb2tYLHY2byM/RlphelJCZ29IRW9QelpdYkFSUG0zSUlSIUgzJnZBdWMsen57e2lIJDMsSXAqWCtALDU2''@;'; put 'put ''UXVfOyo2akMwdXw7bjAjeWN5M3gsMXNTLG91M0N5cWQybSE2PiJxX3UhakdaNCpHMz96T3hIQHhBLEFETkEjWXQ7UXg/SkNzdiY5bit5blo6L0BmJT15Tm4jLDBEdFcwITchVFRCeG1ZdDVIQE1BZDl8OnJGP0ArVChzO0tzXnd3QylPYGQrRi5nMlFuUTB1JihGPnpYY2xAbWgwaWxRc1cqW3V1''@;'; put 'put ''SEp9cnF2bi9AIytIMyIhJCNPZj5mRmFmKHdjS290cmlXRzNTWUl+azlaLGJVZmBQIWk3IWczNm4mKHtOKyJmVFNdVUxrM3whSiNrZT1qbzc4R313SHdya3JffFQ/fn5CcG1PZn4uOTkzeGxVNm5ieWB4dCgqM3AjX1JUXltFZU1TWis/MVdwdjVgYG9+V2NNZ2ZZXUVmP2xFJWZId0AxKVB+UUxh''@;'; put 'put ''VHdOPXRrRFp1fntUZGFsO3lZNFtGblRgcE1HSDBNWCkzM3R0UElAQkY+dyZNW0FnWWcxLD14a0h+SiFFSD1xIUcjIXBVOFU/L29XZWYjcXR9OmFkd1dpMX1zaUxvSkNCTXgvcktXYWBqbUg7fW5PPjYxYyVjaDJTYGhBRDU/QDZIZFt2dGB5eUcvZTtsfDFkQElkYEokJil9L3w7THcsI2ErKHVh''@;'; put 'put ''ZyVNUnF6QkdnRys+MlBOX2tKKHlwZ1I4OyNhaiomMCJPP2xzWCJIImZBRWQkNHBQfCR5aHJRWSxeT3xeS11JUXkiNTdPUEAiNWh6RCQmQzJ6cyoyekFlUkI3aX46eUkiTjdbJXkzdFcyPkAjXzJdQkclQHMlMiVIWTc7bWh1Wj5XNWgkd1VSbEx2L0xDS2xtPVlJTXsjbFhWZjt1JjdXPiNNYCl5''@;'; put 'put ''QTclVTJfLkBWXVBmN251cFlwQHUsfDkjUmF5MmxEXk1XVzF4NCtHTXNKe1l0e05yLjloan15RyhMLDR9IkxNTiQ2XyR2YX5HKGQ3UF1uRlRYbCRub1lwXzppdSEuQkUxT15Cdys+XU9Zc35bdS8uSUZsO3xidlZNVGw1dT1NSDd9WyZ6eilsTiMsKk0xIyEmTmFzW0htcHAsc2tNKi9QbzJfclFK''@;'; put 'put ''dHVINGt9Pl9saFNNdlh0NWRGQ0dMIy9wezFwQy57O0J4cjx9VkRVU0BqdU9TTnI4VUlyWTJXWVg+OWxfNnwqMmdhLyFTc34sZ3A9ImRNbGwvdGFrLjRPdEBOfS5vVjxjZVNNKmg2RFJnTmc8RmcyWzpXWGJ4fTtueHoxfShCL1E1N0p+Y0ZuTTk4OiEmWnR4fVVuSVpmaH5ubzR+QVRlQjIpclRC''@;'; put 'put ''QGltQWlWKHhjYUFENyVTI1pdMnxnXWlra3c9O159b2pHW3VzWygzN3VobVhZUXFbSWkqT0crW2NDR0R4cHd7Kit9RTpfRX0zQWw0VlpJJWI2YSFbXzRGJTw+ZndBd2pPZUZoZGIhNEdMVX4lOntSR1NzM0IoNilxNWBXWXI9SSgjflc6eXVwX1BQelJFYG5fRC9mWGFZakQkW21aPlsrZmxiYmkj''@;'; put 'put ''WWplRmBXe1NMd0tJNFhsX1ZfLDxhVnw1Z25bSVNhPW4lRCZEZk12N3VpXW0uIlRGdUM0WzZjQnIkcylZRDJVJlFFLFt8Lis8X3VxaXBUVEFFQEk6UzJDJFl9Nj97YTdfRjRFXXh6eThmSTs8QXU0blUoTEc3cUk+Pix8e1opa3c9QC9FdzN3T3Bzb0FgQ0lfJip4SjdKYldfImpWWDVLXmlPdG0v''@;'; put 'put ''d3dBMX5hMyFhInIxX2oqeH0/aihPNCVbendnRj1Cbzp7e15dIkkveFQ8XUIhY0BLb2YvVUdvOSNgWC9qfHZtPShlZTcmXjZfe1RlKEkjSU8vVGl9VzkmOVdpVDAkVUYjM0IjMzE9RiFGVjs6S1FrO35qcjE/JkFgVVc9XSY6QH00O3AuaCo5LDdOSDFgaDdYUDc2T29xNUVzbjNtPVNIRUFwQntZ''@;'; put 'put ''YSNrMkNle0h5PD84biU9aiYpTHFvQV93KXEuRVJCJj5yPGhoT0pMeXB0fEA2PkM8dHgzVl43TyF3NGsrP2YpcEooQmt2ZlsxY21+USVOOyU5XnVuTk8oInk4OjNYQ3NqU2AkeFBQXipUZSZZTFVdPEpTLmhGJFQ5cEhYb2V+Pk9pQWZ0NDthUFFzMmtYLj40QjIhPSJbXm9qMyVZbnNManYqRUNf''@;'; put 'put ''WyFXQCVXc30uJUF7Nz19aWFpJXJRYjxBcVh5eVpGPjksYnpZLylnTDlHVldzaDtgSSoqdWZUTTdEPzhlZzQiSl5KZ0BPTUF1R0ZKRXlZL3VLSjdQVUYhZCVSJjg0N28rQ1FqRVc8MVg9JiZfVnZ9PHM4fTl+figqQ1sxKlhKZ0pjdVlFaDlwNi48PV1VdU1Xdj1TQWhwOWNPRH59d3AvRTs+Nl4/''@;'; put 'put ''XSFCIkZdZCNRQn4zTHBoLDshRDllVFM9dVdhOl4uVVEsK0VWZVQsL2FOXVs/WE1CLENrZWFRLmBJYWFlLFVlLCtsZVovWXdUYFYjSWNiVnpPNGBbMSI2RkdjMHx6bCUjRGpGWF1VKnhSY3hSKDZMY1RBdytrc0lrP2FUN2k8T0hPbXgkYkt7YndhNTtxY3BKXkd8Xm1Yak1oa1FnQE5PLjwicl9L''@;'; put 'put ''fGZMJUs3aDlsL0doVnVRYHJNVTh+Ll0sRyt8VjRMTyRMOUJYI2NAUSZQYHRDNzxoNlUwPV5DNGg5REdfQ3VgVW1kMTN9Mjl0L1MqPSk/Rl9bKEhqNT5QSWcoUURae0A5OV07PEtLKHRCbF92bXVQOlV4JjMhTnN1dWxXai5DRz5yPzZ0S2BSNm1aUWVNKVZ9b0N0Tz8hInpqVHF8SUpiYCFsRTp2''@;'; put 'put ''WTNuZzpmc2o2a1kqRVZockRaTE8wbmNheEl4TEk0d3QxcjV7JiwjIWd3JVRxeSh1c2oyZWklWT5LWXwqc29keS9FMUxYY11XW3B5IX1USXhVS0khNlUvczV3dSRveDVGKFU1enAvPDgwZkt6Ui4kZlFaP1NqUE5VRlZSX1BQa19WcmwxcnhdYllje3o+Kk0kZHN7NVk0WWosLCxdZ1F3N1ZFOyY2''@;'; put 'put ''SDxOVkBlYUx6OmxkWlptQiM4W2ZPbm9eSDU3bWRIazU7NjRuYXVzdEJVNy4/eFgmRk9wL2d5QylJQDVAeitwY25oK2pjTkBefFIzcE5fL0B0WnIpIz5EOHd2PHBxcExnSz1XRlVQeityJXVXSG5EdEU9T14zL009cTU9Sz1+LlVERU1XaHR3WXJCPzFFcSVmQVYzbWhbYSkoLG90TSUjTT5ePzwu''@;'; put 'put ''eSJMWDdsPlp4Wz4sT3ZNUitIYWpLRSNeJFQpVyJtKHomO3J7KlldJX1rZGUvNXgsJkh4VSZQKkk6bD88YzQsJHR8PGEycD1XKy9ufTBWaz1adHc9RlB4Jlk/akR9WGYlTn02WWhQbCV8KHw7YCFrUjl3ejZ7VEt+bS4mOkhuNlA3OmVqbzlPMzVKci5KImRPKU5MQ0N8cVc3O2JFezp6R0ArL2Aj''@;'; put 'put ''aEgjbElJVWRsWkZdOlRpUnQweC9+bHNkT2VUWz5lNEhCMVUocTFAL0NlWUM9RVklKz1zPVF+ND0sekE5UHYkNlRgZkQvfCteW0QzUj92TTA6WFs5JFBCeUI4aWAubHxrKWRwaCgzL3Zmd2RNT3VqWzFXeHIjNTV4fX5oLmFTfWUhPjo9TWdsYWR+NmA+JUsvfkRFaVJAa0VoLEQ2Zno+V2ZiPjVP''@;'; put 'put ''YVEkQnovKyZbUXkzbnc1fiRUUjFlbXZKSEt+MjxvUE4kWT14PWklZ1dYLjQ1KGUlZTNWOzU4MW9Zdi9vYjloSDs9cEY7THAyJmF9R0A0VU9zKjUuLkJ6WFpQW2JNejVAL2AoJEBaQVtDY35CJm5EKSl5UWMxWTs7bzM7OGlOaWRhailOZUpBISgsXkFyUnxoO0UxSVh+X1JfOndibCF+QzhJZWFN''@;'; put 'put ''XkJoXltiIzkyIV0+VGd6Wn1dP3V0M18uazFgR0k7ZFZrMnchMjFAKUd9JUp8WDRxME52bnUjOzFLLEpXQT5NSk1iPERjXTN8T3VCKC59eE1JXV5tQGMsZl9ERHBqSCEiMCkpcChKYHhiSn5DbWNGInNhVloyTHdzbVROWlFYRD07QilaX3t1dTBqMnRfQkhNSlVYTHA1OUlRJjBaXUY3ezZ7QjJw''@;'; put 'put ''czEwUHNRaDk5NVE4TTB0MSVmKmVGN0taVj50WHVLamQifExVWUNnL1RKLjheJkZbR1t6LEBPMHAqQSRPOlFeJGYoIzZ3SS9ERmBua207KUhCdkZQIWM7VSlIaClkKEhwYGViezlbOip1MF1vYnxTQz55bmlBYDQ4dVZqc1ZfYypLKDB+JUAqe3xsU0Nvc0dbKkU0MFlZY1lnYSxOSHRnXzF7OGol''@;'; put 'put ''NkB6P1RqWGBKO1oxbVpOQiFXSjZ3cDpLP34hUUxRblQianR1K0t9Xk1uU2BzI2A/PHQ4QngvSTNaaXFWcWBKYyRFJF9oPigzelghdDhYOTg7c3ZeLDpOO0lkJkk3a15MUSUvTl5YVlYsfn1gV3lya3JrM0o7MVgoaW4zLzF5akZgNlI3NVYjSnRiYjxWK3lWLm4xa0NRXnMwXWZ8cyU/PEc0WiUo''@;'; put 'put ''MnMrP1BiWHllWE9eUj1yOUpWMSk2VHNHVWVSRTZTMzRhJkd7NDVBcmhpVnBFe245XTtRbS9RTlVvdXdlb3BCWkRfRiVUcGcpXnBFU35veS5aLkJuSns4YjhfVUZLL0k9Qkl7bHVDcV1bImNjMT9rK1hhcS8xJnNBMiRIfTV5OUtKJH12UHkwQC5HKUl5JD9hUzssSW89XURRUVJ8VHB2KWkkblQx''@;'; put 'put ''K0NSR3hHYCE0MTFHflptfFtOKjh0LD1BJFg/JltgTF4zZlNsYUxlVF8+L2N1dlptM2hjUnU7Q2hwJDQ1NCpTWVgxcnRdYyZFTD0rWDBNPnBTNVYmNl92a0swZ2BkdChmQXZdbH0yYCNbNWEzNklNbVJtSC5yTElhVjM0M0o9dixrblZgMz1LbD52aGkrTXQ6WURfdFpdPyhbSj5OOENmcHZNMk9Q''@;'; put 'put ''dU1ZaV5GdyFsMzdLZ3okJSYjM0UmPmsoaHh+QnRhfT1fZygzMjVZdj9sSW0sfCJTR3xgWW1zRUVJZiRkUEcxeyY/cHlpTTIzQW8vUW1iIVdXQGlNMGk4OW0yN1gqJVFTPXBaSGR3PFNYOztIeHghI2dTajddZ3tbWT0kbWVqSVVaM1NLXi4kUE8zP09RQG5Tal1ELD59JVBWM21yPE07N2wwV2tN''@;'; put 'put ''dUA5dkBbfmQkOmNtZWdfTCwsNzdsPCJmb1FlWCl6KEkqLnFddjJ5d21+K1UjRXZ6eT1daXdHOiRBKCtAKEM0T1VXUldCKGE/PEEpTUFfImtPPUIyZSFgb2gjPEV0WjcxbmZrUnZjRlYyIkUlLjpdQVF4VTF1dlVRRiFgLz8wTkFSMihqKEE3Q2ZvWUNaTlZpLDNhLHJYLmBFPk5mIT1PYEpka3R1''@;'; put 'put ''bHZ5eVJMPGh5QkEpaT5dXnlSZzVFLyJEST9wKXdjWHA3YHt8b2leVy81ej5fIUl6ak4iPSNENypySlYzdXE6bl8ucylvcHt4WiRiZ3lSYSpQLlJZSGhPSHZFaUIyci9vfjk9X3hMV3IoKDc2Tj19ZlooOU49TU5jOV82amR0TX1kIU5+Ok8hZj0lNjRbKTUwNikpeC45IWkve3clTElfO1RkUm0k''@;'; put 'put ''KUZ0SVshfGUqKlMyZnBHMyVjP2E/V2plOnJYciZZaF01ZCRgQD9IQl13eW8pai9eN3JDa2RoJStnfmlobGhqYjZ3UnVCeTReNHtKKHokYXNMRy9sczIlNHlJRTVzVlkpUWRiSnhrKltEfE1uPy5nKyZ0N1pAIjMjOWZWYm5rKl50TX5jWUMzTCNOY0k3TDdrUiw2KSsqN3piMjd7T2ZyU1pqZltG''@;'; put 'put ''Oz9iMFh0Ty4zK1JTSmc0WntvanVnaikwKlViVExONyxOPWVAZjFQREFUP2MqRC83bUE4LzhFMVpsRGR3VjU2IUwyUGIlYzxUOSx3RW9OKSE3IzU5YlJmPnZ5V3NkQ2k6WU8uPmZMTD4mWDN9a1FKSi5OUDhWMFdWPV4vUls5U2RZRHlNWylFdHhgd35dM2QjO2lSNypLVFVCZSNVQkZdcXQ2QE9G''@;'; put 'put ''ajJMMG9WIUp6ZFR3SGU3RlVDMWA6eyZCOStkKVVYYT0zUXl6b086Kj1IVUxvUVNDJFYlKFVrOT1zI3ErYF9YNi40VGxuQDl3UWt6UD5hVH5Nai9nP2wmeyF4KHBaajVQRzQlZ19pLFRZOGdIaGU2aHx8JEljW088aXRFWytGJWM6WHpCcihHWSI4dXojME03UjB4MDBlJCNMNkE1USRjI1dbdXEq''@;'; put 'put ''SC9ZUiV1OU9gQTo3X05TZE82d0ZnayxgPzt2d3NyST9uOVN3QygmTWpmRDVZajRMRkB4NE9PODN8SDdHSk02XSQlTkh6eXMxfGQjR2BuUHkzXnJrWkV+aVc5JmhXXm55bER4UEsuTnl0eExAI2ZNcEdwPDlEfkdTN2JEdlUlQVhlVDtpJnFlKXQqd3xjIT9UZ0F5JXpRUStXNGswQV9QTTkrd2Qy''@;'; put 'put ''cXhncz14MXNVP0E+WVcjRjd7TE5jd2ovJS8vQldnJWtEalRpZUNCKnZQIyxbLCElR3cjUUcqJkElPi54KWpbSSQwYltATT1XdEc3SSVjSWIzPDtReFJCIjgwU2s1ODQmSDJIY3dpezx3dXF5WH1KKjx8eGlFemg3YDg7NjR2LFB5NUg9NlYlYTAqIWxvd3JISm9mVElEOS40dnRxJHJoN1NUYCVt''@;'; put 'put ''Z3chVCYhdW8qZFE2PEd5TjBWWDtJa3Y5IX5EaWgkT2VNRHlBNkMxSCYjdXNLWHooK2heZFgrfWtBb18pYmhNZyssVH1WTCtsVzhrSWhxRG1OPC40UitibEUxLlRrZytbZVBkPEpkflh7UFJvMUA+aC5VVVd6SEYlbipjYyx5NnVAVmg+PUBAMGwiMzRxWW9mcV9iZHR1SWs6VH5KYF4yU0gxUTB9''@;'; put 'put ''RGxUK04rYSRFRiVeSTpVKDZiLyNbXXIsKGRaWSVedTZVfHx9JDpTUT97dkROOio3ejBuRSovQltYNX1uUjBqP3BAQnowQngkcCxRVXFteTFMZ0l+cT1oUVtGaFBCOmNgViN5UXpWeTNwdW08OmwiPGBacjsiViZrL19tPDchMDJ4NjQpKFgwUy5PSG4kK3oxM1V7Ui5QLl07ZkVXdmxaZm5EcFZL''@;'; put 'put ''RFI3PXtCTUJxUU1fW35MY0c2Iksmak1GKlpaNjU3TFdHSiRlTX0kPn5mWnpyP0twdzlDa0l7fHhmTGgvI0s4Rz5OUnp1Ymo9bXZkXm1xSUlkKjBHJDxpdypWYmNuLCJBRVVESG8wRCQ0MDttT1JiYl5XTypgQz5aPV9PVTYwRHpJXj1keUdGP04zTjd4RURXbSkpNG9mS3tHLHAic1pzKzVwWTZO''@;'; put 'put ''Mn1BL3g6bzReeV1EbGE5dW49PDFQeiVHLmZoMHNVLERJMiNxMERaMTYmTUw9VFpZc35BVzVuPF98KWdWKGRSQyl7Y1lXOVpIbXQ+JDlyVk9PWkFjJUAkV0kvbl01Ly5haldrP3IsMkRUJTFWbnRoKnJvPnFQd09XKj92eDAhYG10L3cqdjFtX1ZNSVRKWVVYTH0wXUI3KzVJdiVaRCwvelJ4M3p2''@;'; put 'put ''aXEjX0xMVVFOJF91V21zQmVoSzQlenl1PmwwQyFLL2VaTkl3RVVHSmA2RjtYI2IzYFdzOlBua3UoTXxxYiwlfTtXKkl+NFdCUyk6JDl4JVlLO2IrXlthNmhYZiRvND5QTGEoT31ZLHpuOVhkJmZIMlRLIWJGXileODVZVihHfkFteSxtaixTOTJ8UDR9bG56ZGQxLjo4YXAsS0lePnljYmpqX0RU''@;'; put 'put ''Km06eFNULzhnKGAhXk95JDJraCVtZ3BXLlB2QkhTP3tTQmVMfjc6RTx2cj9sIkV4WkRCO0BpQzNganEybmckQzszPldHYSFbPGw1SmAiemkoaHVHOk59QDR8KnFdQjpxczRZTUIuWSNoPnl8LEpHKVtzPVZlPEgjc2ZLS2Z5PUZaTzxgKzlsP0V+NXxgJHNadyRAKHJdXlJpQz1HRWYjOTNGZi9k''@;'; put 'put ''NW0yYmgxLCwzI1o8S35JJH5VZXpAOi80M20/RDRiQixpbGE7UylRL0dlQiF4WnBuSTlMeHFjUW0ze3hRKVBYJnVNZS4jT0l+STQpajAkNlNsdCpoYlEwR2M3YnwjcDFSc2IhI1NbbEIqeH0hek5bQFlqdV02PUIvUylyXlRMQjZDMC9Yekl2OkRQQmJfR0luPFJsZkNEc3cqUVFCZX5lYSg1cSRm''@;'; put 'put ''ajE3ZkRdPEdQKX17VE5fMmBBIlE3Z1VVV3YwTTsqSkgpVDtXdFRbMGwxZW1TY3ZKYjBlZSlrIndRJTN9PUJIXXZTZ2h8KDVnaX4xNFYhXjNpImN9aWc/STo4RHJzaVU1JFdZLDs0PC52ImFCQSQmUHppTFNZS2J5IWthO1hjTn1UdTQoXnZxW3BoLldbcndfNzJlNGtkWmNpVSZjOUApOTlMZyQ7''@;'; put 'put ''LlkzMXYqJWxTPElYQDI3fEp5PFE/eXJIIXZjdDk1Rm1iVngpRCZobSJmWFRxNEJuS0tWK1FTditAc2AxbGNLLmhZNloyIihINjVyNHhLR2RfTU9BalJNI3BMZD1rNzlaYnd5XSRrfU0yJElkLHFESkoiRSEzfjBnRFZJVk9BPjtjYTJbe0hLalhZXz1xcWVncExCSnlJdGdfTztrQFImVkN3ZTU0''@;'; put 'put ''JXUiOV8sOGZLQk8jU0d7PGx0JkVUQyJdTHYmeFs9W0lUXTd7QTkmRnhWa187NVtZbi9pVHV9aTQ2O1dYUTEuczswInc8ZX03QF5vaS9Ha3J3ZClXJk0wcn4+YkxOV05DeTMxdVk3NyRbKXd3MUd+P0pTJFgxL0B5aUEwcFU2aEtMe0xaXlgxYjRPa1pGPTR+bCxDZlE3SVhKNzsmek56RCxvRjFX''@;'; put 'put ''OjREY3xhQjN8NVlzY2t2O3F7QnIiTkRGLGRNUGxae0l8PWZFYldEQWVJNktzX3VTIS9rZCtocGhLVDhgN0x0O2l9S0JtW15zUmp9V19DcklhPXMqOXJ7RjhleUleKEc8WCZ2WFp1dnc2S3dHSV51QXZdVDszVlN7Tmd9RUlCVSY6VThARzRaPndNZVZuRUc6KkRkQFgpVTRlL3F4Mnp+I2ZqYSRZ''@;'; put 'put ''NHdKU35ZW2lzJkk9RUIpQ0EiIywvJTxzfCZ4XmlJK2wjO21xYEhONiNLZDYheypFZCxMe0dAZilYcEI5OzQsRUkpKGY8dnFjSnQsYTdGISw2N0ZzMm1VKWNTLD90dj8wOyNhcClQY0w/Ylt3XTEpTkFERSxdcUhQWj9ZfEVjZjc2RlghXmlNPk5HRDgobyFsdy92M0k0VUUlZzpBUlVFaUxpZz04''@;'; put 'put ''UV5zXVYwRCh0fnY6OTtAU3JIaG42QkVMdyN4d0Z4aHxNMlQ5fkRaMVoqckBrN3wwbjFaNSNBfTg0OS57Wz97XzdQc0k7czooUj8qSWtrfGVpc1AvQFVQajgiJFNeOihAR2AjcXBLOHY8LyElQER7dmh7X1FAREhpIXtKUnpGPnQkenBqZnpMJjteaUxjSCtlMGU4S2RbMGIoUm9dREFNPWpUWksr''@;'; put 'put ''SzIwZjg2blJEdH1MYmpEZUE3OUIqfXRaSEJ1T0oha0hfW3csTmU7MFVIJGw1U1tZZzcpLiRNL0AkbF9xQ2JmYE5vVD1PIlcyfncuSSMjO0xTTUZ0NyZMOHIuO30jZz4vdnxQbz0kRTQiaC8pJXVbWGJ1Kj9WJUJmYEVyYVJWKHVlUCJBd31kZElBZWNKcXVPXzlwMzgzeCFdZD0zITZyemE7U3Bd''@;'; put 'put ''UWFxS1AhZEtART5mMDRIQkI+bHxqYnorQjQmVWtVQl9DN3FfN1svYj1renhAa2p4cHBab0YzZU9rVG9HdWl2QDBmVEhVNSp7KkxeMTJdQm9MKDZgKW0pMklSYGFkYXNmc0tpfGxrPThRKUgoYXVZN15zd1RXUUYzOXIxJShZezA+IypyZXBqYWcidUQxSjhySSJqVX5AIyF8eDk9bEQ4enNwe1JA''@;'; put 'put ''MnUzXVY4KWF1SUIrKH4zaS5WSXY9bEshcCtjR3JlUX5bVENZZjNHcHB3TElZanpCRUcsNFoxWWQ4K2J0JD0scTc2ZiZZajE+ez5jP2pVbn1ASSRyUS5FX0BpNT1wbzZjL3hlZ1MhW0c9aXp2TUdCZClEL1d8LjFOb25POmgkQXd5cFlQP3ZgUUZiYnZvckgsMjwva0F1Qz57bWhHPUBobSNGOTku''@;'; put 'put ''cnMibzE9YH5VWFJ8I3dbR11GT2BGSClzaHVON3pLJi5bbFRabnYpSyFBITVkVF0uOS9MU2VQbmUhLF95SUs0WDZ6d21TNGVZV0dNNVFsUzchNHx1czQkNGdeIWR8XktAQj9VJH5aOCNGNmwscWU/Nyo8In0rWjExUGJAL1FQSnByeikmY0B1RTcxNC4yISFTdyNmfUYsSm0yOWo8Rnc0TVo8VGBs''@;'; put 'put ''Z3s6aUdQWVlhXzdZVDFXY252LFVWNnhzZ3tTSn1zczE7cEJ0ZURAVHBKZSE0Ojc7MHpSRm0jVXFDcjBnYjVVcj9RSWJxPF5Fcj0lUFdDOnFKJihTKCRvTlZAfEM/R2V5djAxfERvNVRHdn1zMylDbV1ienlSS0xWU2k6XTRVVWs3eWlaMC83PzZYLlMqRUImJE19XnA1cHpZfWI/dlhLeDJIeTgp''@;'; put 'put ''JGV4QSl5RDdub2ckKT5EZGl8JjtDKlEqOCJxT2UsZ0d+dCg6IlhWISZ7Nnh0Z0tMLE09ZEtsSXhIZW5YMk9BT093Qjk5RVlUWz9FIU0/UmJhaiRyYkN0KTdhcHp9VWMmN29bVHVIPSN1Q0kkRWg8YGVPLCJqTGdPdl1OV1YhYUI3RXR0Tjd4QmQhO3BbWCopMHM+N0wrJT86YHYmakI7XVVQejlX''@;'; put 'put ''SW8jQ29haiVUcF52cFRMRSl1Mzx2dGQ0YkJvU0JgbSUkeiwmTVBWO1dCcl9kMSokOXM1alE9b1hNUDlFKDhXUjZPR2ZAL2VzLDwzTTJLZWlrTDRMZDgvIyV1SSp5SythTURTd3o4L087WGM1Q1ZSUGB+LHhgPl55OWpbMCVdI1NFT3t9TXo1T3ZVUlUiaVtCOkRwQFV8RlhzbiFQakNCWCliYUpU''@;'; put 'put ''RDR+d0RCVXFJfnJzOGtvRkgoV116KGM5bzsmWWsiTlA3Kz53KjtTInE6cDJHfCpnaXF4bmNsQDImKzhmP3Z9S00/Qyg0LCNNZTYyKEpjXkl7IWNqIV1zfTQyZlJ0X2AjQlVhfEo6PVNKXjtENEpkNEApXzsvN09WUyp2c1UrM0pUbyxbd1ZvfmtZbU8oditfP0JhW1V8d1Y0Il8heDsyR0JLQmQm''@;'; put 'put ''YW9YZj1FRkhvQjEuN1VgZkFPKThwLy9KTXUqTEk2Wn4/VHZ0LHxGMCJaUjNQIVB9I1RWW3QmbmBMeXx+cFdJLmspMnV2VS96dmY2bFEkVmEqQCZKfDNJMVREP3FRamphUHVbJEJmUyg3ckRvSlRHPCNwPyozLzdNJkJeNGYxbyhdcSpELGdhMFFURHQ2MUV7Z0dBPC8pLmJWT30yOU0vTjZhb20r''@;'; put 'put ''Jjg/aERRcDkhRDF9SFhsYDdSRWM3JXVJIjJMOFFdV0FNSGNFdD1LIURUSSY+LCN8O3MrQF0lUiVEZ14ybDMxNlBYWjYkaV9+NUV5KENpejlzUU5XYHVuVlMrL0AzVDBKe2dyUEN1QyI6PSVwNl5GPi8mKkdCWV44aHt5WE1jRnRqLEYpMFdjKnQ5KTJsdkM2ZVo0fik6Jld+SVt+XS9mezF3UnI4''@;'; put 'put ''IyVCTkRZb3c1OF5JVkxaNDciblUlTzxCKj8yS3AmJF9Wfj0wV1dMVipKfXZsUlJtaEs3d3lZIy4ufDQvOjx8Q3YlazZHTUwoUXJ+c2ZzU1pQQkpMJlVQb1VWVTl8Jjg/NmpDQmFQRXIiMz42THt0KEBPVHp8UyZhLEtlTCs9ZkQ2TWJldGVIRCQ1QkguOUdbQik/VDB+QEtUaU0/bCFnIVQ5ZWUz''@;'; put 'put ''KkksNWJmalVNOjJ4V3hEPXEiLDUhdFlycFJDL1toLGcyMU5YcENybGdJPGdxOXtFW3IpKV9LOkN6MzhDPzxsWTp4KkxUYzMwQyowSXsqVnhkIlcxRXZIRGE4T15zTzlLKWsoSFgjM1RafmAkV1BxVUwvejYjblkiIUZhPm5QLyQiNS5yKGI/N1osZDtAN3VnaE5WaXw3WjNxSDJ9TngwX3M6d253''@;'; put 'put ''RVk9R2dge2VgQFVVLHFUYz8pPGRYKiJ2MkhkSEtuYCEmW0RbW09NUFY2JGQzZHEoOElTaXt3IXBHWCsmXnxoYmpOS3VXUT5aRmhueTBRUkV0QjFbWlpbOTREKS8/Pzl2XUI+SX5taUBPRmVCYFArYWxDQ2liV1RAcyhlLkw5Jnk8NSV5STJzeVBmJWxeTFNbMUdwQFZyX0tud0RHeTsoak1bWXt3''@;'; put 'put ''Ri4peUUmRn1KekpaMTRsMylZbz9EPz93TFVQSlJmPllDVF5RaSZNfl9+QWk3OygqOWxPYVBoL3lLdTBCTmgjfCxjW3RHWFZ3W1k5cWBKfD5LIks0XWskPkI9cGQsNHc+fm49ZjtKZXxePWB0KWlTKjZQKE0zQV91T15NajNvamklQTFGdHpOPVA4dkVzcWtCXyFwSFNCRmcjSXBDcls1XTciV0Ml''@;'; put 'put ''bShHfGl9dWRVQ0E4RlhAb1AxUyppcVNGZFc5ZmxZX3MoTTtidjV6Q2BldWIzbmNMS19rZGtZUG0vWHoyMXxqSzkpMXJAQm0vN0o8WXl+aGApcGR0PG1SRWRManc8XyZeS2IwLjtAd1l8UWd+a15dUnIyfF4wQ3UycW1iImZqd3M8NFk8THlbfEpHemtRa2JXJV5DIyYxblklMG0hJSJSPH0qcyJL''@;'; put 'put ''SnozcjNBW3wkaVVseShKVE9PLnxgJWl7aUdPfjx8VkBaMm8ybkVLJiN7Ynx4QVRLSWZjNWZ+JDoiPEcwSFshU0phdXE6ME0uX1UwQysqNjg2fF9+RURtMCl1eDBGNzMqKXxmTmNiYy5LYVMweHIpO1pfIUY8InVAN3ZWanQ8P1hydDlMUnJ6eThoRCheKTBlOm1pfTJ2ejVAZ25WUyVVIjVBaCxV''@;'; put 'put ''W0xCXXJAeUVYVUh+e28/IW5NdTRXSTs7dUwqSnhNWHErYCREYnBfbjxMezl0dCpWXz52RiN8IVVaY3ptdXZnIUBjSzhqMEE1akB4ZWFrKnVxbGIxPTx5YjZ2fGlSbWdiMldnQyIwdEtbYDBkMFB5PEg4KFgmS1V9YT5nY15UYmxDTF9jXyE9byNANGJdSEZWc0V8UDEsXTE2QSxnIW42dUpvbExl''@;'; put 'put ''RSVZL0U2SkVTWWJ6Nm07Wk4iLEsrdE4hOTJjcyVkV1VZfnxralR1Sy9BSmdIb1ZsRW40Jj1rbEs5eWVlKyVIa1k0UiFIJF1JbiZZbE98M3h7Tkx2VC4mTFNzc0VLImU0ejd6bEh6WER9KiQ/WzVIVmFmVkNbfjY+PytxJXlkbSxpOGokWkVYd2tDa2NjRi9HJShUWFNhUjV2Kjc0O1FIPGNhOFdz''@;'; put 'put ''YGooJTxMTSh2bisqc3o0cDlhIzt+VHxlUihacGZuL0pmbn4hT3w4XlVXYGEsRE8iMnBAY0xlR2YzOF0wR2t6OEBMQmJPISheX31RXyU7fUtVdndxSVVqS0R5a0leTkN8JlMseXM/QyppLGwmNWJ5U0BXL09WTkF5aFlsI3lNNUdTMH0wNyZNNmp2V1J7aiFqPE9fczBQfjQ7NW5UQ1olL1BsaShU''@;'; put 'put ''YWR6K3d3YTJsNUB0YCxJNz9HLnFITWJ2b2theDZwRUkoRDxWNyx2QzIjdCZARUVoY3JMIisoajlNYEhOJkl7eWsyLzprPXViZH1Ac0dkXl8lXWtDfUk+K2hLfitZJTtObHlzcjtPZVNnMHQ7UXNfMUlrRlgqc2ZraG1wUFFyaEcmPWNYPWV1UXFVOmJZdzNve0hiK2U9alhdK0lyMzI8XSh1az5m''@;'; put 'put ''aTBzfks5aGJTeGNuTGBbNDpTIXsiKW05M3lbZl4pdXY8PlR7XmxuRio+Yy9HcjA5XS86Jls3TEM7UzpHWUA6dG9MYFU+TTo8JXhXQVpfOD5VUEopITdXVjp+aT4qM2E2Zmc6NVRfKXxyN0NnOyQiZlJeM21VUEczS31iT2JfMWx1Ql9zN3FTZFYuSWtxK0FIWEk4UVkwOl9mUkVWYUReYkcwbX0r''@;'; put 'put ''ZTAya1toMWRtRXNyL3g1OFhxayZjMndGT2cjPlt4VSEzTj0qS1R4OCkkb2I4XmB+Pi8hMVsldmxKTytaPGk1Qj1TJHFMaF46cTUlNXFmfW54OV5DMnZYRGFhOEJYPjN9S141R3psOzJldikybEhPImpPIztbTG1YVno8fTgwTSNOSW4hY0M1KzBCU0EyfE1oKiomUl52bT48fVtBS1JLXVYxIX5f''@;'; put 'put ''cTpiciIrKDNCKSR3RTxRJVZOSipDR2l8W3BFcEBGfTFsWE40Tk4oazh0cnFoTTMvbF1MeUpjLG5gSyFjWHYrWyVpQWwpKCRicS5Rcld+UT0jOWk6fiQmMiZqQloiM3lAZGo/KjxIOTNeYX1QWGpnXVtTZ2MsOiR1JUQiSFVkU2dbZyM8RGxHZ0ksM31vaCM+YCQ9V2IyR3NNQiU+RWVOQl5qYWN6''@;'; put 'put ''ZTY2Pk9FNi5ySkdseSIjMkQvWzJzYUg2cC5kPTEvfnM+QUBFQEpwcEhhdHVPTEtwUHBLX0Fpb3NzTmhHZygmeX5XcSxxPn1wNm4qJlU3LEBoN0g3YCNbeSwxb3I1SCNUYT80Kk1NNDBNND4/Q2g8US9LZndmcHl7TSZSeVpYX147dCZEKlkjUH5YczJ4YkR1Oy9gcWE/cD42W3F2SGFWRilzOCNw''@;'; put 'put ''YHw4eDN6Oj4wdEIkUmQ9UnlXT0JefGE7UHJHeFskNXBZWiRlMTFhP1EjcSReQEBBT1NVYDhJLEYscSNCaG4oMz5IO1ZXdmRhTT9gdGtdUHxuTj92ISh1K1llVFd3bEZfIWdjPFZ8OiMwdHUxUnBUP1JpWy9kXlcvUmVZc046LEJTQDN1d1F3KVlTdmV7Sm09YDxIPFsqWmZTO3BENSJZWG8xeCsz''@;'; put 'put ''LFNiZltxQCU6O3VlPC5aMyx6R3JFUTBDU2VaP1JWZm1gV2U5eFIpcTNbPTM6PCh2PlN1dUw3YHhxcE1Wem5RRExNNCJUQSthUCVwKG5pQDl5ZVdkLyFaPHRFaWZJMFchSkBSRTJrIlJJTXM7L2wjQnhacSx+bFAmR2VvfH1BOCY+MS5kWH1GUDpPIkpXWl1TYH1idz1CRD14fH4rKlZEelk/MVR9''@;'; put 'put ''eTlGW3U3dWNWeCt0U3tsTGtVfjEubDRRMDl+P3IsWXdZfD5OUjVTcmRacUVQPmd7PlJ4My86dERkTEQ4PmVzZWRPVDZRd0hPcHBiWj9RQ1k5YVgzeVgzX0cyO2QxV35LUyM9ekx4JihOXlMmXztFfG1SIz9MPS9MeyQ0OShRT0tEKVNuUm1MO0MyUD9paE1+fkQ2MW9YNG1uTztMbUMoNzg5ISkv''@;'; put 'put ''STJCTFtNcHdjTSs8JnEyZD5nLHNNcV47YHNQfHVEPGQ3OjA1UGtPIiVuLF4relprQ1oxJnhtPU9ZPTAiaXcoSnJBMlBmTD9AJXgxcGpqKlJ4aSszPEkkbEA7NmlPQypTdnxySC8pZH1mcXxeQllpJkdNPzw5QEZlbiheSCVdR1BHdGlCbTJXLj9hVDBdK0l8RmBDVmRMXzB7T21HSE8kYDFWVkcv''@;'; put 'put ''I31ufFVDdTRqWyQzQXlVO1NpYFQySSlRNUZANXtqd243RFFyNDJKfnNDPl1rSlNTUEBWNksiIjAiUXx2ZHN1flZzSTtvMGt0alI5JmNdYj5kSCxoLC5eRmt1N206e1VtW0E2XltHcl1eXylwPD9Xfk1yZ1g7Lm0uM2VtP1lWVVcuMnEvWEFRYSJBJHs1eExtWyR4PjpweUVHeGZxe28ufTFRYTNj''@;'; put 'put ''bk1AISVGVEVQfDxIW04+PV4/ZV1nTkZCUjpOKTUxOkp7QHxFcG86Ilg9NkpOTGc1KWUkaTk+OS5ZcTA7dk1iITJIRGdAWzF1ZDtAcGU4U215c3pjYThJc3NsRnc4PWsyfGJKRF0uN142TUdudTRDXiRMYnx4LjgvYChvWjZ6amovYCpFNV8jdHlFZX4/QkRtTCM1SjYiZTEwMzZrdkU0LlJdVEop''@;'; put 'put ''ZUpNMnMxXS40L3xCVDIkJlNCSTx5R2EhXSE+QkphdjBwOUtJZm9uMlNZeDVPIiZScG4xSXt2YXpMKF0wZ150M3h5NihuIUBzdHU1PTAhUnpUPUolW1JmSld5eW5nST9JLiFzRGo/Uj9KWT0vfTwxbGZGeVc6KVhBJWY2XmR4Mm5VL1hrWilnPXBVOHA7LiphRj9TTkxuSHxgT2Z0P3BONl9TOHNa''@;'; put 'put ''O0NRX3wiOndTVVsqfno+Vm0wViZuJGVmL11JZDxXZGNKYEskRDdQWHEpMWl4WVhlciNMR00/MSZiSDtmenQ3ZzNfR35zXkgrLixjQSlhOyVLQWB3YXl3OWFQKH51P0JjaSM6Rl0+KHk5SjEoP30heDVrcXt6eENwdDkoaCtOSmNNMkhTOXB7dD89QTd7NCwiMkw7QXZNfTRkJDkiKFYxZkB9RlA2''@;'; put 'put ''cUxQWGBpQGdiQio5cEUiPE1CTl5vZShtIWRqMWdkQVlDU2t8TWdqcGd3OlooSjlpL15mbih2e29EajNuTXpHfTN4eSZ0T3wvOHN5bGNzLzFxenovbmdWelVZeV9WKzd6WT9sZCtPPGAhdCgxe0NsSnsuYUhYa1Mjb1Nab299Sm9HMUwmPGoiMn5rUHI+Knwvd3JFTmhtM0YxX1VrSTtbc10vcjlM''@;'; put 'put ''PWNwY3pEfnBAIis1PkRYMWBiPGQxKC4pTl5hQjNQM2NKNTk2TiZLMXEuNkVVYio2M3k4dk5jSC4mZkIoPW9TL2BGNmQxP2hxb0VVQ0BbaWB9JTJtZDs8ajozdk4wJVIhT1d+JGhFK0pWNWA/Qlh8SE0lPV15VlRycG5KND9Iby57fCRbP18udzE5ZWBYLGRfazJJOlZbd3YwSCh0Z05ZOTlNN09V''@;'; put 'put ''cWdHejF5Wlp6Si86MSN0WExIQm1YN2RFUyI0ZWtmeHkmJElyNCVxdEshNGBRVkwzJHdiciUhYnJvMGciYTlReWwzLjpuazYvY2lvXztma1VvNWtQSEh7dkdMfERzJUMjVVp8czRTfm03XyxGaXBfZ2xCT0AweXd4ZVYiN3B+QEd0aXwzYEVZJkhaTnsmdV5xZnVKMnVEcSwzMUhzI2l5IyhBXn01''@;'; put 'put ''V1oucF1vNXlRI2h6Vk12Vjd5L1hvIUMsb0BSRHE0QkEidzZwe1pGTCZQTnhzYXFlUVM6JH19TVRDP0dzTzsjZEkkW3RLR3pfdyJdKSkpMjRDTXZZKEVsSDFZc3tAKTxDSFR4UWMuT0RWUClRVERNUDR9eCooIWphLzZYJjoyfU4wWUQ5bEVpYSZYZmxnKmo/R0EzeHxmME4sbz1BcSRedUcvfUt7''@;'; put 'put ''ZjI4PDN2WzFVWlAwVnx7UUR+NFhyMV93TTN8IUs9NFFRMDwmLnxEbVg8SnRPYCVjW09Oe0FeVHxvQ2R9NkgkbmpgWDskbl54IUBIXjJNT2MrIipSTlJGVkQ5a0c8JDdxMDgpJk5YKV5HUntzRCQvaUcwdmUrPS5JYlV1fnMwVGhhPlsqOnczfTJkX2pRRSluPSM+YDVjZlRjZ35ZRlhhJkdVdzNG''@;'; put 'put ''eCZ8eUpNals2TWlwen5nVT0rdHp6ZVk6M0NxfUZtRGpqNUdtTjdaRHQ5bFYie3UlKVg7dmhJc3FMdnhvJkpJIWovWzVxd1RheD0kZ11XbE0rVWF4VElVOFtZciJLQ1VqRD81KEBrJkM0UEgjQ0t9NClKJSQoK0hHM31EUHwjbThBYEwqQDdbVD5aJWhNSltsYzpDKHAwYVpEMSZSTEM1Pz5FXjtx''@;'; put 'put ''YTJUeHx0L0h8dHhIcWtzUSM+RC5bezk1OHJkcU5vKXlJWmY/bjgpSmtgSHo+WHxKQjxfUyJgRDdkQmpOWlFJRDhbVTheMWxpW2RXeXY9LltDUyxKXWtBOyZPWnlmLFIldSNMWUkxblVyW2p6M2FwUSYoZnJ+XShvNmJLfXR2MVlQNW5NaVZuV2tML1g9YVgwSGhUdG9qYEQkeUk0UkErUFI0dyRU''@;'; put 'put ''QnkpLzRTa0JOIlhMYjNEbDpkdUhibkxFMm5CNk16UkouIiRdPnksSDtwPlFTWUVUfChDfkhWbmd9c3g9VnRwZFhtNCpoIlYqSGhoVEkvLjU9ZXQqd2x3YytSR0lvXXpab1tCei5WQiRdKFppayI1QTQoXiV2IX1tdmJVc3BaQ3UrbCU+byZHVGUqSUl+cUVBeC9rd0wkdko9YjQmTnokQEF3UXwy''@;'; put 'put ''ZG1wfnNzWnVFY09yM2JMMktfSmQ7Xm98cTxVTVdWTzxNfHtfeCVMUGsrO1dKcC8/IlolZDxgWm5XbVNsJiY6VDdxUVVONWRPUTwleDlAfVN+dHVhNFE4KDY1UFt6dnRiTHxeM2VSX0I9ZVd0OXE7RkJpSV94YHlpIkdOUE88ZWEmOlY2NkV0UCo3YUVXfWNEampebXgqQmtdbTFOZXZXdmo7O01p''@;'; put 'put ''XmEqSXJOQzhbU1NQamMrandbZlgvbmxqKTxYRGwzVCFIY2IhPFBZOXU0eHpnLmRRIUhKR0NpP3B0V1pGNz57UmZrX2ZPNXRUUXtLSDgySTVXPCVVMiFrIUhzLzJmRm1aKDghWF1JPnpCT0Y6MmZhUDc+Mzg+REQ/VnhfMTUicCplcUpRTnRnS1owSWA+LD5NfGpwZiY+b3MwTyRhKShHVkBuMG5E''@;'; put 'put ''QGppPjosPSJPdHIpLDFTNXUqX2A3Jit7cXAzcG9QLEVqYG00dVQ2MGFDV1UucXNGRWpMPXFJJTIqJklrbF9NSj9VSWtGXzByQGJkN29CeCpvdjxMWiVQe2I3SmdfeT40U0E2dGAwNGc0c1VHfnBKQU5rNEMrcTRlUl4ieGJSWHlyQjxkW3RmbmtbdD0lbmV5cUlmUWx6Mzh+YUtSdz0xZTBMaCQi''@;'; put 'put ''XnBDITJdaHVFeDc8WUN9V0x7Zz5UNCtZXSN+QCt7NHRKbCskNXJpSlM/NCMzMFhpUHRZVi42Qzw9OXAmfkhgMTdJdlBMdCVhUnIhcSJXJCJ0VShZNEguU0sqJDw9c35beSFJV3o9diV9aVJQIj5yN11rKGwmSSxqOkVRVT1LTlYhdylPPVpMJkZzRCsyU1k4LGtrVmd4Wkl2cDJHdD9IV2lwPE9T''@;'; put 'put ''OnU+eis8W0o2VUI0XWFMSGJZUzM1UmV4T0s7aVJfblJyNEw+PHRXZFBUVyxPVilrJHFhMGNRJkBZeDArZlkiRjIjeE5Ldyg7Tkl3TkgsaEc+X3lHMj10WktTUD15azFNcUM/PVI9eTRQRDcjUEh5TytMVzQmaWRnJFI9Qi9wYHYhS2Voc2M5RjA9TVNeUFVqOF9iYlZVPGNRdF0zX15sOV01aSh5''@;'; put 'put ''ZDJ4UEZbcWZRUERqSFl6Lm5WMm1CamszOkExNVY/cnpRRU9FKjYwfkZ4QDxTL3U/VDJmSCRNY1A9WlcuZiYoSlMrPElOcGhbZ0N9an5JU0UoMFMqNFM1LGRGVVFXX1IpMGA7dC9aVTN+dlAmc0BRVmBze3UrKGkiYjp9ZEhyZHkhWEl9JSksLE9lUklCLHMmMUd0TSMjYV90NT1wSnlIZFo6bmlJ''@;'; put 'put ''QEomdE02U2pGRlpHNnNOcllfdywvSUdtYWMySGwhQGwha3tnczpKSGVydHUqS2xIKXFqYHFfOUplW1p8RHFqREJHNDcmL0M0bEs0S0wwPW1zTlZwVHBEJGxaLyEzcjp3TkYlWGN1NmJgS2lpNTZzV1RdOzN5QyFrMnFkTjM1dk5SO1BgQUJVekNpNGUxUl5oLy5ZKXVxUjQwXitCUV5pRFkpU2Ul''@;'; put 'put ''TXxIV35IZXl6eEljXUk4W3xadnxVPU4/XjdKXjUkO35BUmQ+bF5zN2hJQ1c4fXZ+PWZURWtNeDJzK3ZVOChYUFd2Q3ZCPEI2OHJwbCRZWDhSeGYrcUZ7elpLdVgvWDxWU2hxXzg3Kz8mZkQyJHtBcWY5dSFvLzpyVVohfjlFcGtFe25UIlZUNEVYVnZ3I2lqaWJufDdFNWR9ND1bY1Q8WSNaaUlx''@;'; put 'put ''NGFidUwyR0tWPmUwUlosKCtaKGU7VjpwUEBdTmspbGVUKzhicEsrTmBecGpvJUJwYUlFaD4wRGVxPShYR2d4JilAW1RxaH5hP098UWtQYHQ4dTMuTGdMNTFKYUQ+KX5gbzM0Yk9zQHk1NysxPHdQOWVhP1Q1dGBJeVJaJmA1K2h5clN5UXw8O01wUXx6Kzx3LkBdZ3VyXVY8IShzVU84MCMhKiM+''@;'; put 'put ''cywodGI7RF1uL0QyQnVaRWZuI2MzUiZGUiEmb0Q4NiprLi9+Z3IzSiVaUHdPNFs8LDRkSVF4ZjBScFBiaFIvcysxfUpOQj1AbWNScVczYUpmOGJqMl5VIzZPS3F+b1I5aipja0V1ak50LG59amNKUkEiUHdLaGheRjJsRD9pZTZldGNLU347JiRDQURJUTpXOyE2eXkoayovYmxZU2gmQzp8biN3''@;'; put 'put ''Zz99KzdEUGRHNU5qLzkyXU1oQ3EpamN+Jm9wMGdgQjx4PUJaQGE9cF4iblkwJXhMZE91WihwLldXUjNvZ1YuMmBJK2EwU1U5cFIqVGI7WkM6fUBeSyZbInVvTVtFYHZBUnhCS1tMVT8qTFk6QnAzO31RIWdTMltCTypOJDNDa3lwe15TMUMjNjB7YTBZdmBAU2wiRkl6Vk5dRSU6OUczUGI+KjFM''@;'; put 'put ''JilNKXVaSyQpdDYjV2U2UVJ1ZUM9OHVASkdkP05sa0ZWJDtHPnMkMUVBbkl0c0BmYl1hOkVoTDhiQV05YW0sTzs+dntOfSg7UXJQVUg3Y0NlK1hAOTUoez9BejpLRj1NdiZWW052K1t3UCFHMkNYbCpEUzEqcGsrSD15Pn1QOjwhLk4pRjtXSThJNGFZelZOdTx0UlJdZ3l9QClORjkodl9wNFZT''@;'; put 'put ''djc+clUval9KOS98UE4hdEFVXU9CQm1GeHUwY0AxLHhOUU9FISZXYG5edjdbd2VsWCtXUTQkK2ssQDgvaUhLfkFoVHx9UiVGUU90c3FfMTNlZGc3dnIhPmlpXXoufGs8K1UrNWtLUy5dKUkuXlV5OEJNZVhiTm9ZIjtuU3VSIWRkKGVFN2p3UHEseUw4I3A3MFAqSEJLc3BiLFI8L09Ae2Z5MDMq''@;'; put 'put ''KT8zO2ZdPXxPfFl3cz9rTXtzfD5tT2J2MH1nays0U3xIK1l8aXdFOFc4Zz5dUE42Z0Q7YT9KKSYrUHk6cWRhQVZLfjFtM3hLOkYiM0VpPCooQjY7YG9XSW5FenBGbyVgSmVMakpNYCIvSX1EXVhEJE0kRz99Rj1PezEvb2BjOFdXTERDOj8sImAhX1UoVCRVNlU0VndzZT9xdyJMYD4vNXE4IS51''@;'; put 'put ''XnQuK3JGPS5oeHw/fC8mVFQ1OXQvQ3hiOXNHMEIrIWFdNV17V1BFLihRPjFfTz1CSGpNOEAzLGohfUBeb3pjMz0vVD0laHJORSU/cDh8an1NaSsmP2JsXyV2IUg/TX1HaEFmRX05Zi5pS1kseFFqTSgjWXdbIzFLJWhSKmt9fkZCbVd+VnFHdyooQEk8R3R6cEY1OytCPChTaD9kNTI5WmxMOigl''@;'; put 'put ''YFVMNHQ+W21+bUBOTDxOOyxaOjs2flRPJTRBPWlvQHNDXmE/bjV8Q0NJbnBMcFVtemNyXT1gQ0h7dy4pdXE8VEhvQ11uZzpZfVd6QUxraU1aTUF4NXFaJX07aD9fJWVxKGF3ND8oL0JNeG0oSztwUURSNGA7citFbWIyciorNl9GUjVDKHQ0eVY0Wm0oKUNERlNeTmFkVSZOKCpWaHtUR2gkW3Z1''@;'; put 'put ''fW5wbX0qQlI4dmBCSTFrRGk5LnJaeXovOEwhW3pdY3M7XjgiJmdTfik8Q2NQSSJwbDpqS0FLLCUwSGk0SixTW15HPFQuMWkkalE8ZCw/OU5lOVlNY2kiQU5fUWpofFJgb2IjfXNJLlomJkVPOSlAYWR+JXEsQ2VVa2ZGYGlGfUFGcmY+ZGMvVCs+Y2AzQDBfQUg+RDJKayNUUytbdT81KTIvfUJn''@;'; put 'put ''P1lWdSZKQEZsIXRSflNyejRCX2dFd15jNHdxO2EoKFtdOzxoRWF0PT1qSSN5c0JyUzFEOTl8YzpseE9PaUB9S1FCJHtzaHNge0pfSilAPy5oUTluUnY7ZCU9MylkKiM5M0ZyZkZeO3tzVjY2RnZXQV5BdFFZd31Oal8hOHBVMllgKWk0XVJMVF5mYEsmYnE8RzNydyhfRUwjOko7YW5zTEN7SiE/''@;'; put 'put ''KDY8UlQ6TC94YiEvQ3BhJmtPRV5Zb09CZHJZXWBafn1yKyZRPXFHS0p1KHBjMkV+VGpyR1tlUjhHP187ZXRUUjRgPlFEQUlqKFhaazFDSkJ8eWN7IjdTdypbQT9zUEh6Kz9sPzQuWl1BOFhpUUZpI2FCJkVMR0N8ZXc9Ni9VJEMrWEAoZFh9RURIVDJnb2tjeUFwJF1nTDRkZjldN2x6MFBQTFVf''@;'; put 'put ''Q0BaZmBnOEo6R1B9YjVhTzIuTHMkIm95PXJNKmVIRjliMT5TZSZMa01NI3AlPkgrU2U3cTRfQyVQekxiQ0RQcG9wY3REME52cHNLOElEQGBDUm86PWNpUXdBX3w1ODdRJCNdWTpgKVRpN0lURyRhaXQxbDgjdDtDM3V4Lz8qNjcwZ0J1PG4yP2ZLdSRJS211OlpSUmVLRl0rZ293OlB4SGUuanpS''@;'; put 'put ''MyZ7WSZ0fnd4THRASCw5IWx7eGtRfms4ZXlvMHhWKWNVWXB7Rz1JZntWbmE9KTQoM09BK3U3TWh+UnRhLExHfWUvRnk0PFArOG09MDBKVHpMKl5SS1tfeSMoWmAkJCRfRyZ4WHVRVkxSSlsqbz5YNSZ0L3AkPyVQXXF4N0svT1U7eSVKMS93JUg3dmo5WWR9ZkdrRG1bJDk3JVtmIUI1bGQ9e1Qh''@;'; put 'put ''cFpnRWQ/Uzk7Mns4aF91fFssaUdafGdHYCZDVzE/X2Q7K3Q9cTZ4THdNeixJcGxwPVg/dmRWVyJaZj1iKl9SP01XLlRaelolUF5xJCohRml3cl5zM3c5Ny9LVHtSInw3VH0lU21eOS9+JXA+QSM2MmtsUUlVZ0Z+I218W1VqZX1QeDgzRnkqREEvL3Z1eCgvSFl1OF5bTDVCRDpsbDpRbFhjNWRx''@;'; put 'put ''M3QsKTRiMSxfeHZCUE5oVkp2N3g5QzRvbyxfSE19c3EhLGt5NVhMNUk6dj5QVnJybkdFX0FpdigxJnh7Z25NZ2haXjl6UXE+YzVLbzxjcSorc0gpXl43Okx1Mk40YVVRYFlnPCowV3RtLz5sbkk+RnVkNXt4JC9gU0NoYkRNaiFqNiRtS0RATV9HSnxBMENATm4sfDgyUk1oSXB1SitaSnZeYlhg''@;'; put 'put ''T0d5K0N4M3teeyE5K1VzPzlkdDxsI3JnSjpgN3pPdjJqXVtrKHZaK2BTQndqUllyaCYuNkhUVWdEaDRPX0ZtZGZ9TiQzOCUvLyI5UkNaPUQ7LzcvbnY8Y1tnd21PWUkkQiZpN1FCN1AuN1lxdWFqQ3Rsdkh1Z2l1TDBAYVg4Om4yKUJlK2AwM3crKX1fMnNmemM8fmxFSWdVZj88cERsL3xdcytn''@;'; put 'put ''RHsweVcsTmUjSDxQaVR+UyRyLyM3WHpdVjohZi8xbkt7OUdENH00VjVYZnA3JCI9LHxmbT1zWldNPXhQMWtpPmordmMqW109fVghJHB0MEMyWjJFeVE6Xypme3xNR2JYcSEzUUFdIjBsbWRaQX1hcTR4JCtxKiRLU3NOKEdQfWssXUJbRUxYTEZLWGZRczg/Pl5KR1JRPC5wT2UwMXY/RS4jSHVM''@;'; put 'put ''UUMhfS9TXSxDJkVXZHhlP2pFUFNudGw2Uj81QjwzOz9KN0lsTn1EfSFAKyNwY1U5b01Re2dxRiQpPVlbUHVbfTxecyYmX2d+JChrSTleTDpwXUY/SVNEciomVWo+K2J6d1MkP0txOzh8OFZkaC4wczx6c0RQXjxiME1adnl4Nyp3YUovfFklO3xSVEVUZEpRMiFiSls3dC9JSDd1UEI7ckFHckxJ''@;'; put 'put ''WV9WZzRWKCttI181VCQjYDw+WWcxaEpMQXMyOjZTZWZ+SS8qcUV6VmAhekYobVNZT20ofGNtW35LVz5GKSNBeH1YPWpTc1tUT2F1PyZDIjd0dkVTZSwifCxDMGpQMixTOUleJUooXTNseWIjeUhgLHcxfXhVKXp0K001LFYqajtEaD9udTBGfmcqaVE/YTVvNVkxeDFFQVMxQlk1ViYyJT4kZWdh''@;'; put 'put ''ZHIjQV1AXS94I210UDxVdURiQjBLcHElUjB9VSs4dXJkb3c/XkMhY3lNTVhVJGViVUQuTEkrSVE0dl1MR3FHOEIwPG0rM35KaWlteVBeWzNkTW5HIkx8K0x1JXJZXlk9TFZQVGh1SiEwMFQ6PmxdI1subFgwbiJ1NEV5eztNNENUWilubWJjRTpgY1s4e1BAXms9TFpTP1IhSyo7fkNFSDg2WXUm''@;'; put 'put ''R2pRZWpGNVE2Jk54VzVXOjJaMGVjKSJhOHRYVHEqMiF6ZlRxWGo0QDNuQ2NvUVBmSn5vNlMqODQ6U2A8X1NWL3h6cHNbV3lISDRFWVNbMi8ySFJ0RV1PKmY+dXFVODlWfjxzZSM3P21bNFtTZzh6IXwpPWwjRiM9OFRPK058JSh3XW9IO3EjZks8byM6IVlvYH5rd0BVTCpFdV5dcS4uLDpiSV9a''@;'; put 'put ''MV0kRHlmSjRMJGgmIWR3SChkdDtDcSNHZVY6Q09nb10xUnVhRiRAJUpqc2JRY0dZRHRQeU1xOk51WSEvdDJ3MWVjZX5aanZKZFRiMEIqKU9CanhCY2JzPFUrJnttc145JDZkPnZEbEtjW1ViMTpoMXh1a3cjJH0hTkxBYldjRiJeWzRmLn0uUEl8OlVhSyx8SXFEMlIqTWpUazsyLnpXak42NipF''@;'; put 'put ''eks2WGRPI1Fpekh6cERyentmOz4ja105fkZmMUNjMDNYN2Fzd1YmcGZ0eyEifVt2KDgkcEVfWkVWWUlnLmZXcSh9KEVxO1VMVWBIdVAsO3xVTmcwaX1ifnY7TDlhZVA0SHJ0RDFOUGUwTUVBPFk0TWVzXWxqbmJ5V3NNKnBFYnclVnt5SnxCdWVQZjE3MGJUKD9hfGEkNkM8Z1ZVOVRZLjNpZDlJ''@;'; put 'put ''MVUpaW9qLmNNOzV2UzphOmc8NHJ5L0N2LFc5akBFayVmOmBHej1mWFVuLiNxWCx9Y1B0MTZgQVpnNHhmOHFGeHpWd01PQnZpZTlBXV9EUjQxPCFNVnNpbU8oTSEsbVo+KCpON3ZbKTgqeUVQR00lU25zaVIxODdRQzNrUX1fREZJK3lzWTgqYiQldGY8bGlOJiZwejFObFplRX1ncnhxdlE8dk0w''@;'; put 'put ''cyJ1LyJZfmQ0a0QsKV5JJlVsJHhqa1FdUXImbX1tTnhKKGgoIW49SjNdK18wc2BHUE1+OkRSO3lUOUx7dS5oK2BoJjoiKHB0a2NaNUhWeTQwJD1dNXphUnZyJnklW0hwdHsvWDQje3NwZURkNl0jfHk9dj5aOGdhRihIdz1GeFhTW1cqJDJ3cGgjSFhpIX5Gc3Z3bl0wLis/Mil+X0ksQiVMImJm''@;'; put 'put ''QWRONFg3RzlvWXIhU1l2PWhyXipALHxFVjMvWTciOVY8N24sTHJuaH5Vc156eGZMbipnKVE8TVQwdWFPfWA5TUxdPHsza0AlfnxeLENzNFdXWkJ2eyREYCtYXzlXXi9BOlZYP2FFWFhuRTw3c1UscSpdcCIvOXZPKC42NUEpanxVdDJXU0ZNV0huO1l6TiNIVlZFYUQxUmE0YDE1SklJdmJeQ3kw''@;'; put 'put ''X3QwNjFgZFJ0aUx3Z0N9eW5icVhQJWlfai4wYm4pYkJCUVlhczYhUCF0NzxjMnEhPVZ4ZG9QIm4uaDIkOENNcnBMX040cm0zbUx3a086RiMoI348U14iMTM+ZXooRitZRCtvKzRXVUl4LGFhMHMrKmRvaSpGT1c2entfQG1jV05iPDZZdXV7UyE2TnhdZn16WTskc1o9IUpnRn1xKFJjJDpyQDBL''@;'; put 'put ''dEluWE8jLGlibmElXXFIeVdtSSMiQ00iZDQxKGMzMzwqdnkjcDMrRl5DYW0rVUkqbnhWb14qUDpVcXRsI2k8L05ZP0U3QTlxPVU9LFl8VmdnXXRtZ1I2TGhTcG1vYGAlUUdbZFNlSy82R3ZzNSM9YissM0xvJGNJd1hjJFZ3dER6clJZLkI8Q09vb1laRXxRX2ZtRDtaW0QjYzVfMDFAOWtedDA9''@;'; put 'put ''flIyTyY/Vj9OVXttWUI7aTcvS2s7cFB5RXFDa15XL2lxPXs2cGNEM1kxa0J9TF88WGRRNHhuXWFsXjBOQj8hQFtea0xHQ00oZWRNN25eJF5eOyQieTYpSixyKC8qKHorS0orIz5LKWNBVn0hJVc7aykwKWc/UVZtcDJ7Y09PXUojSTdZel52WixxOUVqZkZ1Y1slZWk9NkZlIlpCRVJXMnM+Yl9m''@;'; put 'put ''YCpvZD1WVyhyQjVNN204W1hkKzZzfj59aSR0LFk4fjF5ZGc5YXRAUkZ2bTxLQmJqT2QhVmYpSFBxYUs0OS87LDxwMVVKT3tqXXJ1Xnc7QCRXfHAhVWU/XzFLJm5lazt5UCFvfGxMIVh9ZDFJQ0oiJWB+dlhxPXhpVDVCRG9oR0duIlFSUH1LXVFpTFJPNj8jIU9+eWJEUE9PVD9YfDtdeCVEYC9J''@;'; put 'put ''JFYofjohbWo0VFhSOl1gZUA1JEhORDxUUWptS3lEclU2ZXMoJlo6LjkrcTx3UkppUzZiVSx1P3s3Ij17PXhvbHNjYW5QNEU8QSFKMDwka2loUFAqNmltKWdzSjBFfUN7Y29jZTIrQWFucmlGSUFPdk59c1lRWiJaOmxKbFJkfTg+LmReRlRfflNKYzN3fn0yMzY2MD5lfVl5ZTE1OzRRJn4+MSZb''@;'; put 'put ''IUA4UGQpSCYoY1pDT1N4WktNXkUzYCN0fWpFKWhVVGN7WU80LEd7MVhbdFo5ejw2aSpsflFoU0VVXlU1XTlyWVN+ZElnPnBILD8xbnlxb0FFO0BrYXhaRzBxbTRnP100anQ5R3IsRjZddj5ZIXoyOXglUmBhMTlKPVNOVlRuYiR6eVEkTi5KcVhnTXlOfCFKTDVNPTRHdV9eT3ZgQFR1LmBHW1lb''@;'; put 'put ''ST9aMWt7Z102MHBzeDcuSzxGdEtCalt2cGd2XUdpR2tEJVRDPUIoPzx0YnQkIixSPHdEQG9Jej0mPUIvWDYjVkFiZkcqSmVlbil3bDpFc3ptU0NldmMyPl9fZjRNfSlaNXF9PF8lajBraVJEVk8mSDJVRTApckIuJjlSVEc4WlBEMnJAOEcpT0giMDUyM0Bvbn55N2xwXmR4a2ZDQWMpazQ9d1Be''@;'; put 'put ''YU1zSF4qWFpNcDN3Qyx9a2VFSzVtWyRWeVZZIjAmMVA8aGx+KCRfN0JNbD8ueyNbKDEyezl3cUJPRXpKOTd+UHAwVUEjbGcjb1MiMnhyNGBPPEU8NGNvZUNmRW1pWWF+YVJRe0lRe3lwM3NXb1BuMz1NLy5TfFtVbVRUI3Nib2s5bEVSK0xZYV8qQlUjb3xuYik4SyZ+US9sUEUiTTNPem5qNVdL''@;'; put 'put ''QC9yc1lBNFIxSTR6NHJyLmwhKmo7ei8wcjs0YCFHamlKQVl5YWh7a2IzPmtKLkVVXldYYTBXfGxfTUc0WnxhVlo1cGFubX57YCxpWTo/PVc5bVtTNCFLRDRMYnIvbWF0NE0kTSlINCgqUE1zZFVKYFtOeksjKEdpO0B+fHRSSmAwXz1bbVpZODU/O0M4JChxZX4qPHh5RDFGKkpWSUwuSTVVYTF6''@;'; put 'put ''VyJ1OW9jYlslIXlufH5APXZrSUkkZn1kUHYvQFB1MDNJemFNO3hEfjFELz8wJWVzdkF2fmRYKmU3UjRTUklXMGhYKGwuPU5bfXtaK21qMTEkaT8/MSFpLCIvfnpmJkouNU5iaH47P1ZKSFR5TnY2W3pXezk1UUc4VXRVL34wayFfUy5jZSFCeGhtZV8kb2VCVENBZWl2XVlEZnF7L11iPEhqVnsv''@;'; put 'put ''T21+aTtHQkslNXsobFNYOTgpRk9IYHhaKVBNbHMhJi5kIVtJMllKVXIrblM4JGoyWSgwOFpEJWh7amN2SSlPcXIvUT1CLnBGLzslaj8hKi9uLCFMd29LfGRnbGJIdnpuXUZIbDx3aW1aWyI2M1clWClVc2k6Rlo7SGppaGBuMzE2LHROdTJQZWhzSnEmbjBbfnp1WFRkQGpjJlVoQXElU14hW0Uv''@;'; put 'put ''JiJqQE9VZU1pSyFbMSZ0L0pLNG82bjZleFpqSyFbMSE6aExXIyE6R0VeZ3JSXThHSVFpUGFrNUx4bkMvZWUqV3UmVm0sWjQlMT8pcVF+e0lvW0s4KF5fa3VicnYrTilkKjFOdnVDRyhZUilVaWh1UyZbOXRuRWFZdyZMLjl5bXhRfFpVVT9NLnFHIzYwLlo1bT99Smcwcl1AJGgjQDp5dGhgJmVS''@;'; put 'put ''Q3JOOXZ+bHFgSSlULGE6c1ElVH1abzQhY1R0eTlpPm5CR0FffDN5W28kMyQrW2VIdzVCeUE0flFBYFReNFY8djMqcGppfTImNj0vND1TNDcmcERRWjd8cTJ3cHdRP2xWaElWdVFuVFYwRyQ2KzJGbnZCJUUqP2FAVTByJkAiezVhRj9gVkQkfFJ2XlI8UGE9JX09SWI9PWBpVGEhaXQhXz1fQS84''@;'; put 'put ''RiImaEY5LDRFSHMiYV19PWI2Uzt3ejt4TjphKT5eNDBZMUBiJGhtdEZ4MTZeO11iMSFVNjRebHFqTXdBLih4OyxqO1osYWV2KE9IVyNaS1JoTk5dJm1GVjE0bER7O0NdVGR3KyVHPFgrWXUiVktpVWE1LGpyQVNAcmpOIzFDUDdFOjtJO3xgYHdeXU11ejtKaGNQZ01MQU1DTUIoNC5iT1AzNGBr''@;'; put 'put ''WTZ9X0NZS0claSFpbWlJdztmcD1HXVdOWyt3UGEqXlBiMHdEXmdyK2U+KlopJDV7Y3UpSjVwcFM1PVRGRiZseSVJcXg3Y3BpamtEPmteRlBwcFFfOi4qZXR4PFtENz0/LnpTPTJPez19e1peLyw9T15dRE1YLEJieSs+NiNpNHpnZitZcEhSYFEuXms/VVZKNkN0UzZSTmU/cklWdzB9YmQ5SVlV''@;'; put 'put ''TD5XWCpnfCllazZ1RmJyWFhbPzwlQWVke3JkVExYKSZZPVJPXiJ8QzhmcChNWHRWWypsP19PYlskOiwvTiw/ZjJPfUdzQWd5ci59RU5DZX1DTU1kfTRiSyUrXjJCOzFyVWc8fFpeNSFWZl0iO3hpIUpsSXJlKiYsSWZadU14TEFXMXZFZy5WcHpGWkl2byV7e2F5M2V+ekRAJlRKeHQ3dm9LWFcz''@;'; put 'put ''UU1RMEI4KCxaUGcjc0w1OVUxIkthYHx2cEt4JEV0akteRDkkPDs7OVlwMlRPNS8mSlspT1ZESDFkfmJYcTVmKWpSInxVIUteMDVlRGFLbyYsVDBVfnJmUFZFXkNtW11vS3Mjdk1jOm4mMklzeDVOcHRbfWBndFp6X1taQTBDbjk/bj5GZzloTkk3VTkiKDVedD85MHxvOkltYCQzNmpLTl1tLl95''@;'; put 'put ''NjJnWDUpSX1WOF0lUV1OflpdRyJNRDEkTzhqeC9MWV03IzZXL0k2K2ZCfkZHSX5QW0B2bE9JNWx6NmdtWnsjUk9XI3xFV1JtQEg8ZCNzTUhEKCJJWFEycz9oZXdqSVhuUWoqYDwqVm9nRTlUPk5lcTtLX3kvNE4iVmt0JHQxOjw/UTtofk1mITtFZjQ9SypiZGlNeV0hPCEyU1pEO1J9YiM7UylM''@;'; put 'put ''V1QrZzgrWXAjLHlib1I5LzxicSV4UnJYI1Mrcl1CM19RUlJodlEjM0tJeH1sKVhtTCZiPkhrPWgpP1VzOzBKRVUiNF5XP290PHFMdSZCMXZ7QjF2c0IhYDlqLnhEciVoYXRgTFVkIT1ldDU3bF45KFdGTnhtSWU0bjQpVzJuY0xeOSNZTmk+VUg+IVNbWnpudWtMNlJzJHpgUyo6YnYkYnxbNi4r''@;'; put 'put ''SDlXWyI8cT8ifm5KN3okZCMkcjdbRjZ+U25HNXYvRTU9fGxGbCg7a01MN15hKDtnUG9wZywxdiF3Snl+IyNdZzc/VCl2fDw9RTw5LlRqPE9qeHZucjVFNlh3OSZxPVZobV5YU0JlMiV3LC51MUxXMzl+XiJ8a2lkYnZvN0UhWEZ4UXZ9XmohOis0MH5NczorOVtGcGIyPiZ1OXIzKD4vMzRYU0Y9''@;'; put 'put ''NnQvKU46ZUpXZTReWFlkeF9vO1JEMUt4SzA+b0osb1ghSUtnMGdsZ18sJWpGODFpck1uLzxrPk9uL0NwPE9JOV0qcC87RltqXUdzKVYsYUR8NUQpVyRdSjk8b21tNWRxVihJYiZJWTB3R1ZYIksxak5wK0BpKEN1bElaMHtyOktxdS9GVlhdQzRMcXUvRlZYa01WYEYpIihdRnhwPkIzX1JGPHBV''@;'; put 'put ''QnhRXnY4ZlVNezombyp3ciZNXlIpfnZmNlZyayNiZ0VqSGJDNE5bT3ZBTzBgenFhaFhmUFpNJmAoW3FrI1tRIyNiVzQ/OGNzcTFUZz55cjRWd0dwTlBuJjhDQEYjb0o8OmRecV5zfFV5YzQ/dEF9c1VgOjd1JG9pNT9VI1dGLmlyVHRJMklYJWI/W2M+dGI1TCgpYTtWSXR5YjkxekNHSWFgdn1o''@;'; put 'put ''YXM2bEwqMUtae1tZc1JUVnVjd0UvLjV2WktQdGgqNVlVI1tvS312SWteWHdUIykvVkxQQkBgT30kdVFUKUBHNE9mOkIlKXQ2PyNVYEVHb3YrUilANnJweT47PzdMZ1hEV0B1Rj4yRSUzKjVme11xd0REXz1wNUp+ITBmNWVLZDh1MXc7WUdReSZ5PldOdyliKGpOd114YXh3SSNdeGl+aVFYSn5o''@;'; put 'put ''d3VTKkRdMnNZWHV1Iz1GdEsrU0x4QWJ9UT1uQXE0Jlppayt6SDJ3Pj5wVXRlQStdSyhQY0IsbzRgPlFjVWIkWmkqVGlmQVNTQy5OZDs4Ul11XXo2JHdJeitsZX4zdkxbUzlXOjtLYlBUR3FZPSg6T3xtPjJMcjcjdUpoVFJbWT1CYjw0RTRqaDVeNWwuJXYuKnE3S1A+W21xem9LaD1jKzRmOXNe''@;'; put 'put ''WGBdbEdvViMpfE45YWVgMkdkYFp7Rmo1aSNaZ3VIeUVDXmh8bkdPM2w9MEl3NDVAWTZycWVpaFhnaUxucUhhZk1dWjtzJXNgd0RDXThUZlJtam4qL0YsWF5gcltUeERsTCl8UUArKkszWC9rdHg+PmljY1MyeSJ4OnQpQG1ndCNWU0tWdFNxelIlcG87VX1xQCV6cyVjMjF7NDMmcWBhNXtuJGZP''@;'; put 'put ''U3ddaVA9WFpsdCVFU2pMeG10PnpwXmM5YEY+PDNzSnRLL019T0REJCNVUSY6Qn03ZD83TjZqYHx0ey93JU0uQVpBXjNGV1dyRFBTSmJWOGk2QkY0aFJIYkgwdFBvYXlHaXBuJlcrPEBvOXo8eFU4aSZVQEYuaDMwJVApczJqRE9tYi9yYm1pNkYqNGA5Xks7QVg3OEBMYj10bUFKQD5NS2M2W0N6''@;'; put 'put ''RWpCY3VhPEVfKmdJeGkmWnphS2Vfb2csX3x1OCM1LFslRktZfnFOMGlXLEYpQzYwW05rRFBbPSMmOCkmYGx1JSo5TWIwVWV3dz0kb0F2UG9WeHRTdUhSPUc2ST4rMENPWTR9dFVHOk44YiRPTEJ+NVBNVGNwJmxqTmk+QFM1LkhacSgmM1ZzeEA8LzQ3XWg+OUJhQkwubz0+NV9SW2o6XlNnZiEp''@;'; put 'put ''Xi4/JjtIcSYlQylpcltvJiVXa11jYyhGW056QmRWNkJ7NWJ8NXRLUUclW0Y8JGwhMW03K3c0YnJWWn1BNGZ3KXVRbmMhJGQ0Qi5FNlVmIT9LL3U8cXtbSSUoRG1bTWEzN0N6WmR+LjBNaFIpbnhme3t+Rm9MaFFSRGIzMzZrLioyY2BGUV9dImByVUU8PWc2PFRWZFBAMFtgVjJYKj93U1BdbElY''@;'; put 'put ''Pjx6YHBpLFtgO0gzLk1VRnRZbGR7KUVUQHdWRGFLaFFpfHJjfkxMTmVtRkphL3VsZCM2bGZQeUVCWVRTbTpfLHYpKGokdDJbVVhyJTtiI2xtWCwlNzZPOiRhY0ZYUTJBPkQsWys4LFNNKjdqZG96aXUldlpwTzdZSH4kens0V2dnWlREMi5pOyE2PSRhXjxUV21ZelZ+R3p8a2tPRGJrRyFBTFEm''@;'; put 'put ''KlpPN1A3R2AyQ0QoVHx3Sz5eJkpuKi9pPUlZRjEwOi93Nlh0OyVqPyFDVXB1I30hKDxUYWEjcWVMIV81c2Y/fE0vXkV9PlA5Y3IvMzZeZmxrO0hXbCFeeXMpM01leWllKGN5elomL05ZKntuU0VNZWQ+b1lHYig2ODNsLD04I1NKVVEyQWs5I1ZtSGB+bUdkWEtiUC9kcnJoU29iUUBSfkRdWztr''@;'; put 'put ''USQlTCFnKFM5PHxQUjtHS1czP0oxRCU/bkhNak9oTkFgMk0xNXVGKjFpKClqInd6YlZJZHBRJVgvOH0pZVB0dWVPVHRtd3Nma0drVF5XK2kuaER6STBTQ1AqeFFGe09Gd11UVj5bPyVQK0cwYzQ0PzYlZTBnXkZaOHVDNT4vUmJ4NTZ8Il9wWi5OXShDZT87NXRFMkFGLk5BT3tnZk5SeCs0bDR0''@;'; put 'put ''ZzNKNiZ1eFlKKVtedzVyOHA7XyJ6PFVLez09Z3RaeisiPUwzUzYocHY9bHIpfXNLSzR2T19JSEI0M1lAN0RRQn5HemkyOWNJOGN3aEd+ViJNQW9BbEdxISVWOSJjc11UYnJhblJKZ2ZqSCFnRSJXe1hnbz9pKUA4TipIZWkkajNQQHkiVmohMEVvUE1eaT4keCxrSCFoeDtkN0t9JXEoOnZ8bXJb''@;'; put 'put ''QiFYQ1tQN0s6O0l8N3VFMW44aElXTV9JdCYlUXFrPUVRKElvMGBeQDJmfHZTUTB0KmYvJE96dlc1LzpXT1ZlWVlCRHtxJTljImJ1MSMpUnVqRkhGM0hAZHM8N3s5YVpsPGZZVVNhUCRQbmE2KCYrJVBuemBoLHlxbEpkWlB2LCE3bj5gNyprWkEvZUokQ081d0ZbQH5HMjIzJD9wOCM9Z1A9ZSRF''@;'; put 'put ''PihxQ1RUM1l6PGAsYDFRIm4uJVF+ITw8Q197RWIrZzUpdyNuOiJHem9deTtgaV9rYmd6fjNqSiFFc3RZMHUsZiUsVnhHRzQrTTB7dSwiPUJfMilsUj0sQmhXc1RybU9UVjw/en5OdmssdT5sdW5pUk1sPnlybTtodVNud0ZWWFheRi5lI0ZSSW9bP2M9Ki9SZWBefGVNTD14UFZ+eERSaDpKI3Q7''@;'; put 'put ''QXFCJm45I1khNU0uOjAwInRYe21hYV9UfmVZKDltZUpEI1tAWldaOEl6KyhzJjd6SXdfazd1eGBZajdnZi42Xm1SRnZNV0w+In1XfC8/bU9hdWs+QkZOJFk+X2VZPWpnKnc4byN3QmVlKSIvcSVWbFN3fiRwU1lqRDoxI3UsZiorTnIsMm17cT9HW14hMEMwXyMlbV8wYiRpY1N5KjlNcjxedWN2''@;'; put 'put ''YiRZbiRpLGViIno3S0h2RGwjT002Rz1vOjRzKU5CWiRHU3dYK3VTQ09nKVk9Uit5ZUJIcz4zMEkuJUdmYD9yVXojSnMjMz51UCRYcmBTUlMpcFZZOD5DYHR1I0IzcSZnNSw2JElwPGxsVmsyRW1jeks1NXE8RnBQaXYqO3pdKjI2MDI7UEMjVjhVOkVRRElQMzJEJW0hIWw8bVYhOXt3Nlk5KTti''@;'; put 'put ''NzlMVGNyaV5aJG1HSDsmUHROWzhsKTdxJXJUekN4TDV5Xl9kKnxRIXtJaUp+bmlUaG5vW1E6RVRiN3I5YDV4QH56QzV9fXh8JndmVy9aLzZyNmxGI0JLam04SCFJU3pTfks+PWVPWCslMSwmS3w+Z1ZfLCZxfC8/KFk6JUI+MyRCPnJ7PGlUSmZPN3E7YV5WbUhIRj9sTjxpTSxmT2pjT1I1PyZn''@;'; put 'put ''KjYoTFRjZE1Ncz5rVCMqJTFgd21SKW18TnVeVmJ8ZF5ieXd7bUorP25EZjZbcVo7Xj11XTVTS3xJZFV0UlhrTFB7NiJZbE4wKFc+dHxDZWo3XSptaTldanZsTlB8UDM/O0tDajUpJUB9KD0sXVRpdiY1b3FZTjApYkYzWzN0WV9MaD40Sj84NHslTGE1Syk/amFhXkFfJDgrWjxgPVJkJnc8X3Y3''@;'; put 'put ''e0dFXURlaTVIS1k3ZCRhfTIpblQsXzFadWlMK0JfIXBBX0g7ZksranB8OS9Ec2MyPndKbGY1REomSHtSekk7KzlTT3U2azZDel9TXVMyJjE7WFBWMilNVl5aclNKP214fTlVVklAInBdY29yc2R4dEJ7bCg7W0c6fTdmYiQ8X3FxQSR8dyNoRlcyfXc9UUVVNkY1MVgsNFdlR3VoWTQpbkk3L3gl''@;'; put 'put ''Rl5mV09sSX18eit7QG1rfiVbW2w0dmlZVVovO1BKOi57e3s/IX15VVhzPSQoYXN+fFNJR2tVRmlScXV9MXwzdWg8QntuNyE/KVV+Ulg3Wnorbit3aF1uWVtWcFo5YDJWOnBeI3RYJGFNNFpseyQ+aWZ9N1J4bXdPI0RMOVdGYklJUkYuWF5VKHpeMSkxKnNpb19bViVadTtrWG1be1ZbS1M4cTE1''@;'; put 'put ''NmN4UXVAIlFzalUkSTE8ZjxLZzZtaTppbXt9STpZcHo7WjR4aHt5aDlkbi9aS1Q2YTRvSE5wXy81OihkPHdhO1JfX00zVmErdj08ZDxBR1BibjgqaiEhITQvIyI/TzcqQHVIJFApdF5lUUAlT1BBcT9wUiZpPzEhcFpeZiEqfDUpZEFoJUMmPHY/V0BMZVlaK1lyclA6WTZHM1BeJTFUcjxnW3xl''@;'; put 'put ''Mk5WPihoeG0vV2tCQywyQVBVIz9kZTpSU3JebmB9QUBTNHsuZ0hGKHc0L2kqSWlJa30seFgyM0A7MT5ueSg+SUMyUSZxZUgjWWJSZj4pZTBTVWRKOHM3LER1LDFjejh3U3Q6eUMqcTxaezk4KTpMZFdVOUxfL1lgTjZ3TTUreFJ1fClYMEYpQjt1ZXxpIl5gN0QzTihaXVVIVWp1NH1lbkhzNztI''@;'; put 'put ''clglRDcvYGNzUDV6P2hYT0FISXhbSGdIPC9YPCs2YUs7dFI6VFJGMC5ZSXZgYCIwWD5ySjIubChiRWlGZjZQfn5gVz46JEFRKTFJZVc+WkUpWXliY1BWSX4+eUorM3F1WFklNmdiRkJKTz9SYlJgV08sckRpViR6Vy9qZHR4bXdBSnY2OkcpQEFrYDV+azB3dFpXW3NzIz0pVD9vTC9WUWUyWWFU''@;'; put 'put ''UVRufGRSeD59aiYwWTF7VWwhYXIsVWlAUGsqNm56YXVGeXNhdl4hNUxzNVBtd01le143NzlyME9vMlNCZVhQMipLMTo8dSMwWUpSN0VdUnBUVy4uVFNQeDhWW2E6SlgocGNtMkVQV19WaUtJLF9paEpgOmY3IVliKmIyJShIbFR6RU1mOz1eWWE4cFNfYXtwSEhAJC8vS00jcUtSUTNLQHB1aShy''@;'; put 'put ''Im1+TUQxLEkodGBaVHJHInVXfVgsNT9kQ0JZTHp2R3tsRmNTJFlobE0iI2o1JT9tdWRiIztBWnouXS84eGJfZHlwQlopJGtgVlJeZHlwIVlgTW5wc00rVnF1cFdZTXxWbixMeihsKVk6PG9+QEs/U3JobGolRkt1VT9NNExCSTRha2VBdGg9JTBaYC5OJVVgK09SNWVmdiNQSEhGWWN2Ry9VSiU+''@;'; put 'put ''PTo3V0wzOihjaGNrYkA8UmdATUM5Sy90XnBjKXA8bFg0aWdIRns4ZT01dj1sZkBPSz5sbW1ZX1N7MFl4NXlmejRgdzAqJSpxWS9oNmpOUSkrPSpNfXRwSnFgPk9iQjt7SX4ybF8leFBgImxZSnkydjkpbU1dbiFHeHY5V1Era0htfUB+OlQjWSVAOmVlRkB2ZzVpfWclI2Y0byQubDdnUzcyODA5''@;'; put 'put ''aSk8UXZVTjc4eEA6MWtgUnsjI1VnbGsjYTUuTSE4LjImX2A/Z3JVMlEhZyhMeHJXaV4vYlZUYC5nOndgSzNgYUwkR00qbmtwS01zbGMmfiwxTmssMU5BXj42cWRdNmIke3hRVm1OP20/WVQ3QGFMMztoeE4/Jm87fXhNb2I7Ik9pPWNVRzNiSTFiSkt5Wi5paXc2a1l3ajJ5NGNVW2suXXgmfnFx''@;'; put 'put ''QzFXO3ZLP0pwUmBnWnxYfTI2YmE5KV9gWE02KjUqQlJ4Q0dkTGxSTipISy9JLFcsV3NTY3duT35JaEE/MCtdWEwxYklOJTE9WnRTTUhsKXwyM0Q9XztiW0xVIyJ9YzJOe2FbRltSSl1tfDdXJWRTPzhJUnw2cWRRPCxTdzpweG9zMFNFN0MxITNHZ3g7UjBiZERRS2I/OjleOjpza3UlenolKHE4''@;'; put 'put ''RnNnJVdOdE1SIUk7NGl2ZkYoY1R+PyUuUiQmT2xKNVMsZVRsd21LbGFnUTp8Z0ZUKGw9JW85Ui5vYFdfWypgZzV2QXl5aU0rRlZbWitVZyVvKiN5X0lPRj4uPV4zPCY9JCxkd3RgM3YpI3tZaW02N2loRVshKldRMCppRVlrclZPaHxAIWN+Oyl8ciwrK1o1TE5AZ2A2bGhvJHg8K3tsbDlYV1R0''@;'; put 'put ''aDU2dHJyMlN2THhVI2xDQXxaVEArc3FYJkZUYD9GVG4vKTgpWEZ6dT9PKmUvaDcwLG5KZ2hlZkAqLm5mdlRiUjBySn1uWG05YVZJO1E7RXFRMG14UlVnXi9Qc0A8YEB0Vn1LWzwsajVCMiQ6emdtRyl5PTU9U3RyMm5qQTFSTSx7YC5te1NDdFN0WUgkZ098U2MrOmQ6UUxabFIzVlokPEJAbng/''@;'; put 'put ''WjBFakgxfVBKXX5fbiU2Smg+NzU8PCpqKGlTR1Jbflk/bWprcUhjcTFMVkxrdSIqP0M5SFQ8RDl3WXs+V1tOWEJkWUpWT3BxZ0ZBOHpzOixyNSRjKiY3eGV2Im8zK2J2UnI2a1pNTWV5YDt6bSRWKD4zI3R0U2hCMXlLX3dyJjg1M3xSXXlRPShaPGBRTWtvS3pDMlV5VlNien1RTXhGNTJxei4o''@;'; put 'put ''YSk3WGpzJl9HS1tLXTs0M3NUZDM5SiYocld9TTRKNTAmWV00Sns9TT0xNX1iNWdnQ088RnIySiZiMkxLWHQrYGQ0USFeTHs9NGhPPGpINmQxRD89eVkkaiYkU0hYKiF2ZE80fHxtNWRDUz58JSgzQ2VYUlI4WSl6ZUV6PjZxbDBuSzljTnF6QUYkU0Y8NSU5ZCJqeiVVJGpldUkyLCI6XVNtWVZy''@;'; put 'put ''Qk97bG5tfTUucHhBT357SUJMR1doVVZwLDNhQDZobV0hY3VGcSs7RXV3LmoiTyM6Xz5xSnojU3VzcTFQcn14Kn0zY1ZpLDBZdGZpQk87PCUpXj9mYGkpbWRDe1U9QH5NZnBoZWt6YW58NkNBYiNWZ3VXcTtqSCVeXi48VTVjKUB0WTpsWWFiMHs6ayF0VUVnU2BKMyM4QHg8QlNgOkY3R01jTXJQ''@;'; put 'put ''OnVmO1JxTzhUWzdaS0JBZV81Q08yZl9AfHlGQ1d1bW1WdjxXckNzc0xuYzlLbUU2NCZqKXRmJSg9Smcuek9EOlVaOGZWYi9wTk5sd09ydmU0ZlYmR10iZExiMyhub3oqRmZQW1dHdD1jZFcjcm5XfjdBW2k5b2tQSEBsaDpdeHFIRFkuWylnJUp4NVNEKnNCeWJ7aE1VeXV5WXlkU3V3dzFwdkhP''@;'; put 'put ''NUpMRi5YVitiVE5Gc1lMbyljVi5wYFIpfkVXOD0sNjNZVDBUKX1TS3YmKi90MSkkbUB6RjVGQjYiUzczZHI1cE9xYz5SV2Z0Il1SO2l4N2xGb2R9PDlLK28pPyU2NjxzaVg2XXZnPms4Y0xgKGxTaGY3MmxsIVpAYURSP15HcDRQS10rOU0ob1BeXiF6cG8icDhBcT0+L0dmbF8hNCZIJDlCTWcr''@;'; put 'put ''OTA/MEI5fWdDYkAlU3xqNzBVO25GZ3lXQlFpeHwzOmJhOVJSXWVwck1RaWhITUAiRjNYK0JQMUlqP2J3aVNkZSpyZFtQcFYlQmh0WU9wTGM5OkgwK1EuV3Y5ankoW1JvcktbVCNlIS8mbUZJNmo5WXJRYiE4fS9MUnxvKTFQfFB6Xik+VW8iRTddWXFRZCQmPFlEb014fSxgaV50elRydXlCOD1W''@;'; put 'put ''UX0wemA7Q0w+YSJTcDRqTyNoXXB4Z3RYanVvLFthOiNgeWx9Nl1na145PVV4ZStrSWN6STxGZ01iS0cmP0NAbmZ5VWY/dT9RQzJWOGJIRUJXWChocUBNYklDWV5JTGkmbDdQOjxTd2Z3U1pXVXI6UihxMX1adlF6MiV3bU5WaX55aEd+ZVEyLnd6ZT51dnc1dzgoVEMjIT9pT1d4JGljOyMwaVBE''@;'; put 'put ''OkcoP1RVZzpNVUFaK0Vxa31wa2JDcTE5VVZ3dyxdWVdBciVxaEAyJC8/Z2NYeUssJi9LUXF0Z240Qj5AVGlvb11pU1t7JDc/eDhKX2Q6KjA3UzpPMWEjI1VYdjEpYWlPIUt8Lz9dczM5KDRhcj5eeHowfHloWXk6YmxqYks4YVtLb1N7PWQ6TzozeF92Uy8+bUZfPVslaT5tUjRlNyZAdEIocmNj''@;'; put 'put ''MF1PIiQyRztfZE8we1MhS2pEO0dvNVdRTFUlUzVmSGQsUGk3Indbaj07LkBiOldReHEhY3R5Y1sjUHA+PFJiW2RGMjQ0UlV5WjwqeFRKenVMeUFlQlB8TjFrX2R8UHBFMURzZFBHfE0lXig6S0BNRl51I109X15JUDNCV11iMkRwVWdNcS92bWIkWk0zVlFSWyhhTT03X1tOUkhmX0opcCprOnxK''@;'; put 'put ''ZFZISGVoaUdBam0lT0tjQnJ+N29vaiY7Nyoscm8wNHNqMzFKOmpSY3g1VT1JezJ2PG5ROU9qYVJuOUk9aUYqYWl4KGl7Nj1OSEJXTX5fVlRKRC98Zkw2UyRPPV4pVnFTSyp8NitsVSs2TT9GTH4vfEV+RSNmMzM7UTNWX1lvRj9mTTBjWVU4X25jSXNmT2wzfitIR2ArbkIlOnZgZzpPTXJbRV0m''@;'; put 'put ''X2w4Vzc1fTdoO1V+Oix9N25oS1FgYnZKPk5AfnlhX2dSaFIrQ1Vffi9sSTAmQWA6dE9lTzNWSzZAQHhnNWludjtdQGorMVI8SGkoKGU1c1UzSC5LT21VTWpDXypaWzxVYXhhWT41TEhwMURJV1s/dXJXL0pqRSlEZTNaSnpFdHd0Ryp9ajV9VGs1a35HPWtNO3o0P0JSWUkqSWZNdjFIayg/fUlj''@;'; put 'put ''Sl94PCVgbCE2LlZ2ey41azUlSWlaXipbNF1sJXBvRzFTWiV4QExgfCRvJm1DMj0kJFB1VEJBXzdSclc3Xj9NRD9wJVprUz81WkpePmE+cn0xbyxxWXxQOTJbUCMlPWFTdyw/MjNDMTpmOElDLzFhJnghaHgjXWReeVIxZiZpM05iIToyd2ssVyZ+USJRJTtYQCQ+ViJAXmQ1dGg/QE5QZyx6L2U+''@;'; put 'put ''dXt5MlFXMlZodWFTVWdUaCY5dzVhXVMraTM6QkkrVih3Nko3R0hiYjdoO0VtRi5HYmI4PjQuKGZ1ZlhaZGBBTShnSng7L3htezZZIVtVfnFBR00rTl5zUWVUIlZFI3M1bVsoIzp2Yi4rRy9YcWo0RmFqeDIhMFpjUFR6XT8kTl0vM1IoUWk3Qks1MU8qaD1tTzU4RmRaVEA4PyovQXpWV3NWNlpV''@;'; put 'put ''K19gSys/YlBvUnoydlVHYFkyY1BUdXw1d0lzdVg3WXhVLkU6R2k8NURtJFtFXU9UWlt1YnVXTiMxPXViXnVtbTssRyMvQFppcmd7TCtXcEllT3RmQ29Ee1smaTVwdXRHMUJMNmFlbFhhfmZrXmZ0T31pPXRoPmopM28pImN1YC5+elRyZFFeOmY4aX1VImR8XitoTUw9eGpwQmVVXl9keDFBKHE4''@;'; put 'put ''MSZjfmpyVDVVMGJeTTdQUnQsKylgZEZ8MH57SiNKLnZpKE45bnEyPTNwa0ZrIyhVdGdiT0osOFlmNlpEZXZvfDpJalJvWjNWTEI3RixrT1ljPlI8e2csP2B6Jis3PTdYfVJyNUF6b3FAbmU9SSlOKVFHUV4wSEJZK3JYOUNmSHlYbVVsTzhRb0dgfSRIP2AjRCwhJn5uRkFCZTwmSmdFIXhpRThB''@;'; put 'put ''e1E4dVJPUDozbHlkPjxILHtrWTVHPns7JWUsJF5LNSMmZnUvMnwkPGZ8ZmYyKkQyVHRxPm52fU1FNGxmNUxSMzF2JFpwaCVyWnFdbmlgSVRPIiFxSDMmVUlBUHdoUmJhaHg7TXJ1aCUjayh1MEZzbit4TTQ3Lkw0N2BnKXdsTmciaktWeHpwLCs0cHhobSFFdGpLVnhkQVlxIiY0InI2QnY+Qm5S''@;'; put 'put ''MzFsRTRMWng2K20pQn5tfEs4XSZjNVgpSVYqWVMhS1JndGQ1IXNbcmAyW0BLalNzbl4zaXtGKyNhaipMPGJpKCkpXlBiOCxpQDA1b1pkVF96ZTFecFkjVV9AR1N+RSEjRDN3Z29OdTMzOT14bDpZRHVIKncjLnAyYWgrQVhHQ1FiNHZJI11iUklHUD1Xa0tsYH1YWVp7OWRddSpsOVJaRyJWZm1h''@;'; put 'put ''WUxlanI2U2ZtPT9ZMnAjRzwuYW4oJWU0OG14L2pOODtjYClHSElebnNPNXgjXix3TTlHLCpzXVlqIUp7MFk2NTdzXkklaj5UOylleTNRYkY0QVY9bEk5dytLOkJQaT5RKUx8SGxdJXgqfEN8VWQjayNNJGU1U30hcGRjZ3g5Yzk6TmxxXllicTdIbEAqSnc7VTAkJG02RDJUYTE8QE89R1EjKk8+''@;'; put 'put ''VSpOOj0lQ1psPUY4aDteaFkzR2FsKjVMKzxKamU9bCYlXT8hQUltUzo1Ujs2IVJdPHtneXJBOHBYKHcqcmYlUFM3JmRaaUVRTj8/c29XZD5jTHBOP0RzSUNwSHYlP1llWWYmWmZHMF1wY1RQZnRSUXV1JT92R0FZU2hkcGRmYFhUUCVuKTNxdFBPNm8+V2YjOi4hKENCbWZdRjFXIkNtKlZLeEJE''@;'; put 'put ''NS5hKFgpdF52dWJ0KkgqVCxKMGBYVTg3cVJqLklTQ0B0WXFvTDlmUGE3XyxHNENNd31iIkMsU15XTEhMKVRjfU8zdH5GemxsI1lJVXVTcXVwckh9TDZPITxAVzM1aEd9RklfO3N0P3h7bFgxc3lJQiFbQjR6WEtUU1c2KyFqbGwyOjQ4VGsrOVBGQW9hPnlnZkpCalZMWmwlUFdNVH1vSEJ4ZmBC''@;'; put 'put ''RDxuaztPJEE/XUghOUZJPmd6QnQxMz50bkBIQ0pgMFQjUmdyeXomMVpdPn1yYS9yN3RtbzQoZytkdmkrLzckWWhraE5YRlFOMz85Z2wkbk9RSkclUF1wdjI8QD94TmNPbGwpNU8hYCYxdFUsX2V1SVVeOFVteWtrUipmUlRpTlBXM09kRXpdOVo8QzVjWEReNX0/IzY3PitVaUVGMXJRX2Z7IWR2''@;'; put 'put ''UzRvVyFdNEp6RTM/TWZYSXw6fFRgZ3EzcXF9Pjd5fX58Ykd4ZyJLdFhMT0dhPFoiSTdibnFKJiVRU3tZOzljeDskL2J2fUNLMjpQXWwzZzQ3V2NUJWNId147LCZHfHlQXyg9YlBnSFNlYE9+TCQ/eFFdWSY0K2hzbiRqNFVtdHRMM1gjRzw5NU9AKmo0cClmZHdaQnZVXWZGKWwyXlB6THhiR2NQ''@;'; put 'put ''JUNzaSJPNCVedmY5elZLRmNaaExjRS4sflcpYHx2X0Y7SlsyYEtwPzIrOVA7K1orSSU5PWM5QHtMRn14OWFCSlNmISlkYHwlU3FtWVosOVc2RVJDUntjI0ZgdzA8eWY5aCIoVHFVJWUkbVBMeExOejF9OWQ1ZF11aXE+dSx1VVJXXUI4fT1JdjR1NmJvWHkobHwhfl9VUT94T0lPImd+ZE1sPU59''@;'; put 'put ''N2lLLj0vN3Zwcy8xLFNaWlhiRiwuXVlePG9aPlYvZzopXTU3ITheImBRTSV2XjFXPDk0Ok08W0AyNDAhMi5sdFVtdCxkSFc3Yyg4QF1yMXBSVEY3Wnp0OjhxSDoqcFRSZEBCUiF1MCV3KUdKXWdSQnJBakA8XzdtT3dGUSMraUB9b0g2UVJRQ2M+L1RpWmIiNColT1p7TV9mNXtwWEhKPzJySEJv''@;'; put 'put ''QnpwQjJ4NiMiX0RNdihSdWQjL3kqfUlFP0NbMTREZkI2RzxXZC8ybWVDWjhidjAwQVhPL1l3RHcrOjl8VTBZM2RTNkZJb0ReOTBUJitdY05ocVgoKEUjJWUwP1dobERUUXVuNSFrVi9FY2dQPTg4dTJMY3M3dj5hI1Q6KGZjc2JpK3tZQjVQamJELCltRSVrL243WDs0YXU4eTdGVWYzWyImL3Rz''@;'; put 'put ''NE9SR0VYQitXNFc8UHYpOn1ydm9EdUJOSG11TlhqNG8ldGgkWEpSYHwuMjgwLlpfP1ElLk8ycyIpez59cnhFO046Njx+ekJuPEZISGI6aFNXaStuOWVZbTRhdTh5PkVWQTI6VVhGI1IvZ14yMzorTXlrVTwmS0tAZUJjYi91QyNKU1o6SztfQlN5NmsiYXhafUBpI1VSMio5ZlIhaGBaRj57UjZq''@;'; put 'put ''bGlHKVFJeDsqdX16S3hSdnUjKkB8WDJbSFsufi53ImtTI3A4ejVnKXpgNXVzR3AmaWxJJjJ2JVVVdytPbFVFVmhbMS8zeFhPSEpvSEMxb1h9TFEyV2VIdEFANkBRdGxCMCRJLCtBTWUqWiJCPV86RzYrZTdLJHtPZTU6ZHZFInI/bSorLzNHOnVUdHdFXTk+ZXs7N3NzazJZZ2Z+QURVMklvYCFm''@;'; put 'put ''Pzl6NVtgKURAe2Y3emBOPF1JSkZOMUl3MVdfW2ZzT3NzbFExISZnbnV0bEZPYGM5UTh9R1RCODBPS2EvKEQ/fkBJUjRqRFJSSmtFWWFpZW5qVmk7bH4+VVJUPkVSKCZac2pONmZHJSlvJFBNSDJ1V0Q5fip0IiMhYCMmQSZlWEN7QXFvKio7YHc4Y3BZZjdWWj99bCtkTnJEUTBNZWh1cl1GOyxT''@;'; put 'put ''NW9MKnRGP21hfldNRnZ4IT9LfV1fYVApXXt3fWcleHVoZVNmZiFbd0JaKWhGLHZqP08xKmZjY1BsNTpIXXdEU2dTXS9fMCE/Xm9nMUkmbkhiNSJuR1k7dD1rYDB7T1BxbHE7XiRmVyl9dzdCJTRbUyFqY2tDSVRrRiVZYUhlQWshOjNNSCV3JVpdU1B+NXE1UDgqUUpjVHcvQCJoLGw3MWdoP1dz''@;'; put 'put ''bSlZU2RxYWhqakc+LEZ3OChCVHxYbE13O1R5NGZNUGtHP3tfRiNWVH5gd2wuUmYzND9yUTJmKDJtdEVJeVR0MWZ7JX0+UCVpQ1Z+e3VUYVAvRUczV1EzZjNZWmVVNHpPWVBAOXRdeHtOSTdUUVUhJSVuKnNCUDNae2ssNHNkbHJWYy5COHNJa15wWW9ZbjMheG01Z1crbC8+WFlfKFBiSCleUCF+''@;'; put 'put ''Xj8wTU5oJXY4fExIa0VJdjxxYjAqdTd0aCZWYztfZ1dPeVIxMkRIWjtAV0Jfek9kK0lhX2p3fV1CT3JMfiNbQ0wvaiN7akkobXpxL3goJGE8OV0/SXhRTyZ0SiZbdHVRZ3U6LlM3dy83X3trbGpXMWFnXXdRKCtPaCpkRG10QGNSKzxIUmo5WiF1ekYkK2pCWDpgPilvKXhmKj5TajFGQyhKZypp''@;'; put 'put ''ezcpTmxnUE5FbVsmWSk9ZmZ+KWVQVks4TCFnPWtZX2VjIjRUd0RMWFN1SDoucXhUeEhadWJXY25nNlpTMikzdnRuKCN3Omg+OXNDT2sqTy5jVXFmM2F2Q3tOeSlVMnl5S0l+QHorLjZYbGBTJDIzRjlfOmIxdjkpNXZrbFp8Nn16VzQ0YSk3VHtZQG1oelZVcXt+XnpqO3cvZ3FzXSQoWDh4NGRR''@;'; put 'put ''THRScXxjJHNwN2h2SGdzUFlSbHJdQXlNUCFPZXEqKDpvVWJPTUlxdVlJcHBeIV1fZSwvNUo7ZiFObihmQHtueEo4VGYvJTpLdiFkUHdtKHtpeEIxI2pJb0FNS29adGBJVENTdDt5aklYTUcxPmVVQGx3eCM+OHIsZCNibl9SVixfaTFnYnJ9XVkqTEVvKzI9P2ErblolSmY4ZkhgZGJGNThbcj1Q''@;'; put 'put ''O304KkBzN3BRcEVlY0chdileMSwydDRmWDMhfV1FLE0yTHVyUSMqMytuWmIscmRkTmZIdWpmZkZ9PmR7Uzw3Vil7OCtNPC88eVpHUF8oOF9dbVFHJSUrLk07Z1FELnRtOUVlKlM/OHJhX2FQSDVhVXM7VHNdZlcyTTxadS5hWTQxMDt6MWJ2ZnpAQTg2LHxhdH0+OyhZNT5TbTMxbkZlWURVM1hb''@;'; put 'put ''a01RMjJMWSlObyVfLCI3OCFqIiYxdCE6Jj1KT05nMWxsfkJHfjJdXlM0QmlSNUJjMndyXSR6InZBZkQ7YSs8OjptIVkiVkQpUS4jRUQ0RGkiPmg5Jjs/XX1UPCV3OFMjKUFDOF9LTFFQaXYvOmxFZ3F5YThycSh5d0daWE9Lb0N9JU9mKnVtJDUkME8sLHlpT05HSSFMUXlmNU8pTVJmN21XNV4h''@;'; put 'put ''aTF9WHh1OF1+aiZhdSYhYVEmZUgmcEJOdjM7O09QSDJROSwsQz8pPUIsKyV0UC41R20keSpHWj89OzkrTV0pJnViKFR7I2p7d1dGfU5+LG5RNSxxaXM0eyx4U0EwcS4rcHtUPn5LNkI2YE5RcCFzZzlKOkZlQTYjXm58TkU+MXAyfFcsbCRzKioiTFhlfHJ9d1AhQCp7S0k5SU81PC8sYW5zVGJN''@;'; put 'put ''eWozK3lHazg/Pi9SYHVCckJPZTxze0JlTTA6KigqWlZbUXNLVTQqW1dtKGZQUj0/cGJpST13c1A/S2xLeVUmXyhGUUpsR0JHeTpCS0hEeSh3SUNJOVkoVEdwTXZfeXolYzw2bjVFRSNDWF4uJUxiZV95a2VYT3lDUjUrLHVMWEo2LkM/Z2VxWl5nTTMhNWBaQC9HSnpEOHRXIi51MExeSWNsVzJx''@;'; put 'put ''eDEmKSkwbkNackh5NCFrTTx7YmNFRGxBfSl1PGtwajpKc0c1RU1ub3dhaGo/RWY8THgpLmJhOmwqa2N4S0xJQTo8aTdYelgubCFzayFRUDRaJTV+JSp+MWh0K20xcnBON0klWDVlMmspMHBrTUpKJHU8JmVbbS8yX01sMnYpWUlbaWs8eExyWH18JU04UmB2bWgmSVlqa1AsVWl3UH5sUm5mMWBd''@;'; put 'put ''c3lTemcjOTAsNVZ4OWRLO1ovL0guay95KyFaXlcpUDlSLDdmLHkrISMlRTgoIyRTUEhzZ1JeOkgvJj1jNDZ3Q2s2IWBMQHpNYz4xeVF9VyMsaj8/U1grWXxbTTk/NCZQPlF7VTMlYlJrU0d7bnBdKU5+cmBKWXB0LkZ7QClvTUk4YFhHSlpwKldyPD9haEVfNitJREA5cEhScy5UVixQRF92aXw5''@;'; put 'put ''a1Y2IkQ4VSs/ZUAkU3tgJGEhTyIwYWgqJSUvJFM2R0ttYEVuUkpHNHFCJkFoTHw9cEw4WjcxaCkxOWNTODdjMjRtTG1pJSg7XiguOS4obiU2XXo7eTsvQDdgOl9+YyRBVzlHcSNBam9pekc0KWI3c25ZPlA5SHhMWkhVVjUodyl0QzVkeDF3fTw/cmVoOmxeaiNgZXQqOHkwNGY+Ri5rYjBvP0M5''@;'; put 'put ''MGdaOm98ZlBNRTdDP117YioqTisleDM0UjpqRXQqS2F6bz4qSTFYUStIalF5LHNKK15GfCIiRSZCQkFgZyY6SCp4dypmWUBvTHxVd1lMcnN1ejFwfDsqJn1LVCZHPlFqWTFCWikyQlpoUHM0NGdmRjEseG97W2pQbkwrQkNbeFZ9UUp5Uk99UUlYWiU5S3QxLEBQMjtxcGRrSXhMK0J+QChxO2Yz''@;'; put 'put ''MVJPXlA2LDA1KDQvKmsqVlArQkh7ND1OSVdjOm1UbCs0TEtTY14/fDhISD0xalFzNDQ9MCRGVlF1c29dXjMlNTJSNEB1fDcyUkprNTJoUWgycm11VW5dc210JUVrUXVuYGkmU3BxWCtjR0hoMnJtcmhGIy9FbDxEbzM3eyNnN3koQF9MUFBLSUVwTUI2WTJfZDxqb1E6P1JEOj9hSWgmLkBWUXVM''@;'; put 'put ''S0VPdi4zXXQjL1s3fVRkOEFpfVRwO3h4ITg+Y3dNcDpBUH41RyVTVF1vZyElXSo9dk1Dcz4xTk9+Mz9lI3FrbHdnR0l9MHNGeWU4SXBrejpsOW9vajcxJjNmPWdmNlM4IihJazUyPjtKa2pgaTdRJVMrXjkyJV9hOWc6KGQ2KWUwNzQ3QWhVOixZOm1VL2Y/cnZPbD88bmFtUH03KCVnJm06Ryts''@;'; put 'put ''KCoyYipwOk4xInRPeDAuNF86NHg/LnxWVTVhaTYvZDpfd1Vka0c0JmFQU3o4eE1vNTxoVXtiTmU7bU5sTW8uZSsuXSQoKXFZfWB3RyV0aS9kK3hgTSwsMl5FYkxHUlBpXncyNW1wQDsrcVFfIUNVKColSXF4X1p6SXx5Z2ZVNm0qYToqKjAhPlJnZiZAWi9jZlROTXRFOFRfOl5+eHclPzE/STNC''@;'; put 'put ''VTRPIVhILDF7O2d9PypyYHM9SCxleVZRVjhQfjVGcngke2lFeUVvNlQrcW1MOjcjd0lzdmdNO0lQIV0+PzFdMShZNldadGxSfHVvRCxObzlRJSFAOklwOSVnNSE8ITwhX3VzT2Z4K1IpbVUlTVFSP341WTM7amFPKlhOKlhpTTFUMExWRCUrRW96WFYzcEQ3e35dK1RRZDJzIXFkUVRZbEErLEco''@;'; put 'put ''cy5GLHgjaj0oYyk3fDVZIUlnWVIrLFcwVXU/bltSP1tbLkAkYmltIUcqPWZzU2poKyE9Y3lAVSF6YC93akdCbEssLzR4Qk4vL0lxdGwjPkYpTSpHWnA2cDBvdiRnfXZua1dXU1U+a1YvcmV1P0FvTUVGRWlbJjc2aT1DJERUUyRjLls1YntzQTh0JXAkUH4pNS8mW0pQQEQqZipgKHxGQnBrViwu''@;'; put 'put ''c0JyR08/WzR8diluRiIlVT8ldTt6YVEhRFJKQFF7U2dDQX1VfDgkfnQ8UCslTmpWVGhiXWhbMGF4bHZxVSZ4eEsmaUY3S2FzVX5xRDs/IWBBQFJsRmBOSmxtYmFnRm9gInYkS1V1QVpBaCMyRFJKLnk/bDBeNDJSQXZYayJ3X1AjbnFDeV9uTDBleShePExxI2RXRklQI3JRMSZ0c2FdJFFHZCpg''@;'; put 'put ''O3wpdGdPKDI6VHVucCMiM2Zoa2YlLCNJQn1yR2hYTGFIS2BpMCQ2ek9PZFMifjZ0MVtDbGxDcjZhUHdDWX5nOHk3d3ZkeiguUmE1Rk92W0xlQ341M2FCJkFbN2c+UnprI0E6dG0uJmFfI0ReSz09Uys0LG5wKXZAJXZHdl0zYXdHPlZOaF9DQ0IvWU9MbiV8THF2Z1F1KzU0IVc/IlApcyl1P3FW''@;'; put 'put ''P0chK3FIZE0jNX1lb24oTVJmKGVCZGQ1KTBUcSN5SDVWTjBJbWVOWHN0IiIpdEo6YEVYNmQydGhXWHZlaWkjXi59RmpWP0cpcikxelcwKixSe0BXaFgjVjxvUkA7XStbaU9qbj9bKTgqPj4qSSVBN1pyfD9paGZSRk1iUEo0dWo9MDo4JUtaUWBbaFlLdHpUX0gpRGlGX1tPW3lqJVA3KkBNWi5Q''@;'; put 'put ''cWUlbShuS1B9Jl80YmJkamNrY2E3ZDIjO259eTVJZEBmaDV7Kkk1RilKSVN7XTBaNypxcWRETCZdVS4lJjpicC4jRGgkZDIjO35DUkxsYyNpcGU/V2tKLDdvTFhxbXUiVDBfbUlDNEBtISNKSFk0UmtOK281VGNfVE83ZDJKPVJsVVlZI0J+PDJKP2codDdvajwwZkx3cSF5eUpoeUtUZXVCPiY7''@;'; put 'put ''ZypuWzJSV19vP2Q8NCxSalIhJDNqPSlsMixzZ0hZPEtnMSI/SmpscTcvL25eTVYhUjUwJkRaRG9OUyReKlsybiJYNlopfmxoVyVfVTs3RG9BVVlOcVs1M2F9PXgwZWtIMHx9b2Q3O2YlaXBFcUtvZU8hbCoxSEdmJEUhJTdsTVVXWEE5NFF1Il1MTkc8ejVXN1VAfUUmNVc2PzZlKSh8eTNZb25Y''@;'; put 'put ''QEFoallneVg+bG97MFpDTkBWSHFLR28wRFZGRy8xRjAxTG96cSskfVJ6KSsxb15FZWomIzAqLG83cil5JltCNXZIdj9YQ19tMGZWcEMyLHhSfHBiYV9WTE88b251MU5bOzBYbURzLDBeJG9+ZDJzZjxydS4kSDpzdXZ0YnIxPm17Syt2PTBzJlYqJXMhXyxSV2VZaDsod1J0QCNeS2F7K3B8aXRH''@;'; put 'put ''SmclUEc4QmByTF1WUFRDVU4/S3Nbb3BXaUNuQ31nS3orJk9INmRTQGduJDA9NkNtI11HP2UodDl9YEhAQz5fbSlBSDhlPEN4WEo7XXAueWI/cHY/dW4lbCoqLmRVdz0yVHI2MDFedDJ3JnsiNyhdPFFlNlB8SjpIQFB7O05WXWlPNTtvMVNHOjFIM19iMFtZUUpUZ0ArMjhSeDVnOEhJeSRXWW0+''@;'; put 'put ''c3taZHYleFNtPk9mVER6TjkwT3F0XylgZDhHTj5SOmIxVXpCbzgsY0FDRnI/UlJhRlRNbmc1WSpUZCExUUVqfmRKSGhZbTRCai5pfFEiKF11dk09KzUhUDF5I2ImbEY6bm9PeG14ZUZWaWJPLilQKywwPk1YLy57WEFQbF1xbjElLnoleXpEO2BzPykuUVhqcjdPPnxeYFpwQGAxd2NIdD0oaiJ0''@;'; put 'put ''NCQrTT94ZDooUnlBc3VBRFZfRlZ8NlNEbz5mdUtxNWozTDVqLEw1andBNWpUSENHc3F+WFZ1N1I8d2pyekooazA0XyomPVBGYldUPkVjY2BPXTZycGQiVkQ3KF1QLm4mRmM4VkQ3O0tweXh8YWQ2M3ZdQmw3a0ZNIXBWaDBqWmF0e3A8bksxT1Z5aSwjZiZfODtsSzhwayZJQE9iM2cmY25vLiI7''@;'; put 'put ''WWxvNGRSVjlTfXVVR1RPWEpnZXQ/Rlg5cCpMcSRyY00pIVo9NlIwJDU+Tks9Y0d0b2F0ViVQOnclYCZRMHR9QmRpcVExKzNMSUkwPS9Ld3w4b3VRSXoyNi9BYF1TLFM7YTVjYFkkPnAkamNUOHRjXXwsPkMyWkFIWHQ/eShqYzZYbDkiKTJkK0wmNF52S0RdQWYjLmNgMXMlW202LnRMZU00Q0hY''@;'; put 'put ''RWZAdlg3M3QqRjcwUjgoWTpaL3hKRF92YEN0fC98IkpfPzBBYHBRYkJKW10uQGFUKCxucllWM0tjU2A9Q2V+OykubjB7ST4xfl57ZC8kNW9IKiY9UixUY2plOGM0PkouY1NsdUIzOEpDV2hLc0pCTFEwZ0NDL25ONUsvS01SL0t3cVIlVGd8bTNUdTUpMyE9V3thWzt8QUE8aTNIfDhLQHdlMSNT''@;'; put 'put ''WEYxdGh3K3czKjUqcXNMRX0hYzNSYEl6bUE4YDlQQW91TDZPdnVrMVtpUSZqKmlvOjwhPVB7OypnW0d2WlglNntUZEhkUzxyPCMvOC5BKDgvaEJfUlpEe1F2JkBQWlg/MCZtO2tkMW1qQmEzUiswMjU1ezZvSWxMXUckSll5LF4ua0BDVCNuZGpJXUQkOW4pIX4sM3FBU1RFTCtCQG1vcjUmLns2''@;'; put 'put ''RiUuKGlRaCRkMEgxUyQ6fnZeTFM8dm8mZ30leyFNdiYzLGU6VVlXSFEwWCNLaW86Y1lgJmoofSohVnAuMUZNIltHYmtbfGMib0BtJnBbOkJndzBRTilLKjBteFU2MGkwWyF2eE11VF1Xem5EKSxXemJkLy8qc0MuY0d4KVB2bTZDJWp9W2BJKEh7d0g+LmNVR2kiPCMrS1RDLmk1UT1HLiw2eC9J''@;'; put 'put ''cDk7YHFNb28kPnRhQlJ0OTVCa1s/a0hpIlVZZEE3RnIjQi5uO3Y9L3BoJD1ZMndAbTgqQzVnKihFfSU5cHVeWT5MZDpqRzFHdjBTUHNgTXkjcEJvbTRKOzZ+anBSOjNGa0R4WkcqcT1uJSNGJmMmO1tmPmhleDo1eDVTK1hFKyMmb3djVjgsZjFdQigsNlVgNmhgWG53OXM+eCRALlE5fHIrZUtm''@;'; put 'put ''Xnw6aSUkc2BHWFJVfCZQVCx8PnF0LjhIT0t1fGwxWkcqcXliJm9xe0JjbGtNZUByQWhjUUgibnFYUlpVQGlWZGNKe2BdMT9APjQ6TGNtYiRPPTBtczxKZGNVMzdBL3xyLkApdFgxWm8zbS5ZSixpNVY2OGNGcXhAQilRLiprQFVDTUNGJSNKbT9yZFVxIUpZKiw1fEspJk9Pd1ZLTz0/JUZrVEpH''@;'; put 'put ''PWlvPTdUV3B9IjByeHVvcCNKbWJ0ImQzT00oazVgUHRGcEhxS3pnb258QE9sMF1sNUp5VmpTK2BBdS9SbVNHQy8pbG9vUGVUWEZWUEBiaiVTZSN+ZypMRVMyMl1wNVs4VjgzazJodzU2YjB2KGJ2RHRCfTdhVlJ0K01vIUcyLl8uK2ZoT0pjJjM7dU1qUWpJOkN5Ym8hQCVyLnc9fS9kWjt1eD9x''@;'; put 'put ''bm0/MGtySDk0MnJhTCtHMTlnI3JiJGI+WmsqX1EzaUcpIzIsOlhOOntxJnModDsqeG9HSU9LfCRXPn5yV1FdS0tVRTxEdHJQb2k1N0tTWiU8Ky9KSGhPMmxALnpIZXBAeUREZD9pVk5gbzJpTlcqU3A2KzlCcHpHTW1EUDpydWchRGd3RklNQGw1fiFfbHpJT31QQiEvRjJDJTJmZVZfe3FTKSYu''@;'; put 'put ''V21TQ2VmQ2Y1OjkjRl9kKnB8ZUVAVCVGe3F9cTVjI0tpIlJCMmlSa2csKExeIi5URVcsRVUqbj4/dFQoQnl8aHRQRkIpbmZzWWM+InQ8W0g4LHBHR25Db2ZMZlBDUj8majtDajpdTnhxUFc1OSsoOm9ObDRgUDkxMyh6Q1cqZWBhXX1XNk99biohSHdSR0J9fF1Scys0fk9oQj9EYmkhMERHNz8p''@;'; put 'put ''cHBySEdDYX5pTk0vXmhuPFhUU3VmSEtVXitKMnZEZ0E9UC9iUmpJb1FXJEF4dzxCKyJLWXxOaW84SFFealNbTVRlRGY7Ikk4WGppWD9aTU8idT5fOCgsVn43YnQjeStERVRMP21EXU1LcCJdV3doInxCeDdbdEtPZW5oY2VFNUY+THpqSCtiOWFYVXRmfGp6QHBCJjBfeVs6LGJuMTRkU3dkfD8/''@;'; put 'put ''VDZPRHcsXXJmXnFJdjM0VVtPJkFQNzs6P3hxOjF1clYpUDBKW0tsKE8iPGlOWCg8QnF+MGAxKipEMS9NQDRvMi5ddyVBSixNNm9iTFl3TTYkNko5UyEwSCFNI248XlkkNW1gaFlOelRLNXc2O3BeTH5HMT1fPFsjWHBEaUJxbk4+a0JjYlopPVRSbDBNNXA3UURgV1BgVE5EOGN+dk9IWDh4U3pT''@;'; put 'put ''JmpnbSpeclYucEdbX1osISg7PnVWM2RgKFdkIjo4WFVDWVF0Q2JVbyI+UDNHZXVqJEErOUdULjlOfG9fIllUQTRMZTlBaSZRdV5ZLFh5O11RcldyeDxLakxqdW8kMU8rN3xRWSR4TSt+Wjw+ZzV4TmhGTS53YXIoP3EhVDR3bUBHRFdSLjRsU0IyKHc/cV50X0IkQkVbfFJIeE18LGxjO1dOaFI4''@;'; put 'put ''Wj4hTUdEVW9YVjN7OzdMU0NIbj5+NWU+Rm40ZUBGV3heTl5RKHw8KDZnMWMxYiQmNHo+M0R2cHdIOnhuOWlyZyEmZj95P2xJWHhENHtyXW1DQz0kWyFFZ2VAbF89W0NULldnLDAkdCpsP2hEbFpXSW1YZTZ0aEZgaCQ4VltrfS9EeTp7Yk04XnwhRztuTD8hZi9vXmFXLy9UajxRaG5gYjFBW3Vu''@;'; put 'put ''RSF4I1c2d3ZVSCRHM1VSY2xYWmwiZGNVPCNAUHV0VkhtXyVELkJsdnhAbGdSY1RjUGQ/ZV0wL2cvQFJVRmUjaE5kPFJBVHo6VkVIXSo0KXFTT09hYkVQXSw0KXEkWzFpLmdlUWw2ai9veF9AJnxIbFJ0a2JdLCxsUmNUUHAuXl19IXArWFE3a1hCQ0Z8Rm9GYjtgPnFVd0NuPz1fVElETDl0cl95''@;'; put 'put ''SzwpY0ZJRU1JR0ZDQFBnTXNDK2kxTVhBciJ0WnVoVSJLdFpIMTtvZSlSVVIxTTBheDhQSkQpJG5leDBXPm55blFlTz5PdkcpOWtvKldEKSNPK2RHMD1GR09TLyF9QGYlSEZGOjtObyttMlh8JntTKXFvfl5CTGNSN2wwQmBpY0pbKVg7QzF8JCY3PyoqPFFyRXQudix0b3BaPCtCMUl4NywxRnVu''@;'; put 'put ''NGliUT0mejlfQlBPYls1O29gaVBjVUNQTio8UWJoRk9KRDVpUXVlb35nUXFTL3w5ZlNUUEtLJnNLQmx2UnVWIVJPO0Rdd34+cG8zZz9gImUualJSWjNJRlBjOFIiM19CZlthWyF2TnBvbzUsaTErNC40fGJ1Mjg8M3p5Y2ZMMUpVMXdqdHRzIWMyY2ZiaTdbbVdWUi56fChUXWh0d2UkKlMkbDc3''@;'; put 'put ''SERgS2ZdK1FmMEQvNnszOFByemMzI1IiITQ1UyRVPlNATlo9Ll5vWGJ4O2czM0wmeGw4IypzS29STjVZRilCMEN8ZH1RJixmS3BET3ldN3dnbjFMNG5qZHlLOXAhYV0kWWxUa0Q4LltPdk5fJE1RS0hpJlVncHlVaFR3bC4kKGROfCRzUS4ieVZ+QTJPWDZCRGMuKDpzNEpNYXY7YGIxV0lHPFIv''@;'; put 'put ''WnFwKiNTWVF+YVdwSDpybyhoYXRUbC9nYjZvaTx8bGVOcFBkMGRHczo3S2ZlbWM8aDRePjJYZ2JASVYvcV9lYyQhTTB0dEgwMXVqbkU1NlA3Q0tPYFFpNFFhKFchWXJpMltdRGtnV3RPZU41VEEyWyo8RTxHK2B2ZDRaJnJ0fld4cW5YQ14jS3dTK0ouRzQ6dzdpMjk8aFo7W0ppOElqNFomeSJ3''@;'; put 'put ''UjVbOy5APjkoRTllPj8/LjgwY35aVms6O0AxPWI2a21KSEYzSGRYIj9UK2l4NTs0b0xQVUZqUW5YMjMzLnQ4YmA7R1t3W3lvfV1qMjFVbyNkR1dzSX1zbmpYPzpULzZWJnJfZ0pkPEgrVEY9cTJpKFc4Y3Uzci8vRltEUCppSDlpUUw/MWx4RkRWJj5PeXdTNlUmIkNCISJdVlkoP1QyL2FOeHAq''@;'; put 'put ''Xm8zL1A3QTp4fEVddFNBKVEyfTBQSjBWSD40WFhTVSZpP1F1TDE6Ljt5LGw5am5YS3UkNWY/bU9jRF10YnFdVEZHfVF1XyV0OD9qPDooZWh0VFFpbVlkKyJPWUh4Z2pYYS8vdFlCc0k+VjtSLHxsWEMyQHh4STM0YUY8Znt8KTdLPyNuOmsvWmwzTE0rLzhPLGJjVXlsYlZuRyVpO3gyJXhgM3Yz''@;'; put 'put ''bSlfUld5QGpTIkcpWTVRK1RCeCQ2RWM7SD5kKX1AMkN6P2hOLmpFWzIkLy97JXpPJnBCZVApQiJiLmdHYWdgflF2WXdCRm1gME1RZkJQYmRuezIzay93eSh+eFFQL1QhO00+K19wUUpLJChFeTtWJiR0aiw7Jjh2NUsrKDcmWyNvM25fPmYuInRFbDdmN1FvVyJWWXRsQmJMU1lMemZLOnd7KDpT''@;'; put 'put ''QCZPLiRKNHE/XUFTREp1bl8+NHx0blU+JUdYRmspbHI9VmByeTBycSFAOUk6eCJoZHhyNE8oZyoyLCtHdyFNK3llVUhRfHVkIm5CbUJRcVkqKDZ9QUNjW11PYHRbdVp1VkVjNUd2cTQoW2FbfiovcG5LYj1YSXxDWjJtQlspMU5+VjdwM1tKT0U4dGlyRHl2JFs2NWYrNEFwSn5wVnJrQmtDc0Nr''@;'; put 'put ''Q0trflZqQnFuPGgrKjJ0RUROaS53UWZoSVthVipKXl0wQzxuJnJ0Q29FOlo2JjQ9RltOfnlXP0pwM2J3ZSR1Nkh5dlQvPFN+eU1QRSFwKkg4QFFgK3xNLj9iMT5yV1Q1ak16b346SWw6LEBIKVMqUypbfSI/Kz13TWpXfFNUcH4wfEBocEQyfEBNenlsfGRSVlRNQjJ4NjhTZjJRLm85amxzSDBd''@;'; put 'put ''SUVPYV9WJTJROl83MlJOWTxSbjYha3BIZ2VhR30hI1N9UUpdQTsqZCFFYCxUdUV7OGksMVttaGJ9X2cmLDYpWG0vSzNFWTJRXVIyN11AdVYyUTVhWF15aXFvLlslWXglY1FMfX56NjEzMTdZeC9FciRbR1puYD59QzVaNkxwVVF5LFpNWjdHTjNKakVDeC5UXWFMdSslJFt8Y0RLIisoZlE6dVhp''@;'; put 'put ''KDxRP0kwLHclUWh6VjZaWCZkMXJKKzdJbnlWbV0lWUd9b35rOlB1dGowUTYsT2R9Nz9JMnhGe343dDA0OkxoSDBnXTc6Z10hPEk4bWZ4bUdQNTEzfmxgKUtOMSVMMUwkeltURW9saGQzUFQsO3ltMFJmS0hGO0F1d1I8e2hjdUI6eXNgMzVCTDIrfGI9SSk/YG4wLz8rR2ROJnxRRFErWnxSJDta''@;'; put 'put ''WUdgLnReRjg6PTtZSyV5NilEbVt8QyV0KVlXZjNZeHVJcl9tZXhzfEgmdlkoWDxrS3NoKUNdZyl3anRCdHVYPlhrY0J4cX1IQXo/X1VKbHMqOStNPC9nKFN3OGMscUhoOUpEakxHOlc7V15WQmwwOz5zJnAqLkJ3SXc1KVRkZVd4ZzRMcXUjRH4qYTp5YippXiVtdkdbS045TDRZfUxgUk93eCh8''@;'; put 'put ''KF9WZWdAW1RzL0s6eE9AdEJSLl96YHN0e1tiYSlxbyl9Py86LGk1Yzp3IzlkMWwjb1lHcWZlX0RyX3lpeG97Z3V8bXJveUx0b3N4YHchdyoiW01ZMWUpKUwmZCx8dmZoWFoqRWtwamNvKmldQzFYMyhuZiVQSDxvfF5kMllEe1NnU3hFXVUhPGloeFNNLEtUej5ZWUhhbX49LnIrbClWJjZ8RHZb''@;'; put 'put ''OyhJayY+OlhRfExeXURjQkBKUzZbS3AmcixTW1RYbStCJUUrNXhrNUN9Tm8wKEJlJV4zUEhKSDpMUjNWc1JiTVFTMFlEe1t4cnFwPyxMaWk4RV4vflZ7Km52KW5HKzw0KHdqWDU9VyVMQjZbPUA+JVt2dHNSdT1bTkl7cCtGNHhWSDk/eUkzUkNtVUspOz9iNCFzaiQ8TGU6aFg9c0UvSTBLOy89''@;'; put 'put ''THVfcHg2Z3N8JGY1PUhwaUdOb0NeMWtLaE1jTDhEMkM4SlImfWtZbDNjSVVVZnVuT29iVipKJDRRI3o8QyZYUm1CUXVZY3R8cXcoVyVKMDF4eXc4Pzd+VCs6ZXBZX1ZKbk4uIkQia35mKHxtY35wRCUuK2BsQVN6TS58KUlNdEsrJVouSnQ3MVFTNFVSMyZWanhgYl8hLmswO1tZY01uNFAiajlS''@;'; put 'put ''S0wyRjFEd3BiV0tofTB1ZHZIOypBPjJTfWowVUUsNSM8OnB2YlpFUlspKk9GNz1OU1p1ZFlheW9MR3g3bC5zV1Y3SzsjZEpLUl9ofExAQipkY2AvIW1od0xWPmRYfERxa0hoQmU0aH5jeENGTjVIe1E4KFpIIXFzcSNXbiZwWCRgSSptXXI+JEoubUsyX1dMa0dfT1c4YUddcCozfTdfZ21JQVBN''@;'; put 'put ''OXM1Xk4hJGxxfDgjNXc1O195P3NxOlldWlIqLmdoJjZjWU9yVTl1RSM3el1DSz1waTJ+TDx7c2xKQnk/azUlVV1yMV56e28jZFdvYyRmUm1icGJGUE11Vn5eRCZtW1t1PlZ6IWUsZyolUE03X2h3NjJfejg/JV0/SUUqJjVja2NFPFt5dUEofSYzWGlrUnhRekBQSEoxWDd3K1k9WytmVHJ5eUUl''@;'; put 'put ''eCgkPjpiPEZ1c0ZrfUd8PnNwczs9W1loeXAiKSImK1k9W0FJI3ZeXVliY1lMa35mL0k0N2U9YllbeV5RTTtHZFhBKTxOZUQ2emAuaCNva00pZHVBWDd6dlA+IlFIMG1gZkd9akIyfCwvUHFiLmR+LHdzPjhqLzxPTX1KY1NAaSNpNXVdbXhEaCQ4XTNEViI3aTo+VGIkOGE5VSxzYToyY2FEQ2hp''@;'; put 'put ''Mjk8OUJJIywsaiJJckkxV2gjL1hQfj8pbW4jeTpESylKWGtdbmN3TjQyUDYqU141Rj5iNWo8aHdjNlJXZy9ZMExmYHUwczZEUlBzR0o9SmF4TFZgVHJhYDBjUWFBMi9JOH17fEJFTmR2Rm96UlI5NGhiO2BzfXR2RzhiUkhJYWsqQTY1YzQvaSpHVDRSMToyfkBqYn5MYS9AIXM1PVdtfng2K1hm''@;'; put 'put ''Y0JHKTRJUyVBVWNXSWs1a0dkbElfP1toZyM7N3VSKUtPSlRpeypUXUgqTjxrVlcrR2pTOHNdJUMhP0MpQHZiOFVSKiZnZnNzKEV9MmgrJUc5en1pMjY4d0lyeGlbeU93bC4pRjxPVWNqS3F1ZFdwSl1XZjd6TV8hRUA+ciVtdF5sM257UFA4aUh3cytUK0ddTD9YZkI4WiE4dEFQfGRxcHt5ci8x''@;'; put 'put ''cyFFdU1dKUpadS44KUFlSH5CM1ohbT9vWS8mJV0uJVApQnU7WytEa1kwdHRTflpaX2g0Xj56fUp3OTBWUlN5cXNKWlZXbkJJOEdsMisyT204dWNXV0o/eCR3W2FldEEja3xjTjNDeGY9akt9N1tDU2NZKFNPLDNkSmh2dzpUSzhpW0RgPjZGfmRlXyFXMFVob0MrKHk6aD01YmQpTih0Y1Z5RjA0''@;'; put 'put ''ZW1aP2B4ZSFgfDlVNkQsOk1hWlloL3gqe0t9USU7NmBFOXJEczQsLnEpR0IwQyZKIm5qbUdgRjx9fX0mU1FQY29OUiFHJTFsZUMiRyspNEU0K3lVJWtvZ3U2YSUqRkF+N1hKT1N1PDJCLmNYPFNdZSVbN0duLzZrRml6TUtnLHxqO1tSWER4a0ArOiRYKDZmbXhkOWlhY35mYWMiMk4/NCVpSWdo''@;'; put 'put ''d2Z7cE4oKUchZixlbUZCME5VNTB3Z2NsMDhxN2FyRHkieTo8LjgzZCY6bjAsY1hOdkpQSWJuJGssbU9GOVF3bEM7YThvdkUiKWE6fG1rKmkvWi4yVmI0VT1GZWIsIVlYNis9JmtzbjFiXjR+ZmFkbyE+YGliTDw5JUVyM2IyMmEodzchXWRjMEVkVWRzI3VZeTk8M2FvRSZqWVhWKH09WEdyXmZq''@;'; put 'put ''OGopIVFSJXluektHX0l8V194LHRMU2pIKFZdOGIpbmJ3ZV9qLyx8aVhAKiUxUlZ4SCk/YGAqQTAzIXEhdnhEOnJeUSxfVTY+fSoofEM6L1JpZzowc3N+XzlGYHxtYHslbXhEOjFUeiN+aUpSSGZgKi5IVkcxNmBAK0BOZSElYlBfJG49bU9LfitUO1VnI0pFcC5iYV1kOnVUP3h1bVJjVVJPO0RF''@;'; put 'put ''P0cpMTxvdCVLWFs0RTg8dUw6LnUzMnFWeWduOyksbUshKy93Y0suRSRYVkFfJitQYyt2WktPXmhPYyUoUFMldEs/W25TcD9nSzZUcVFOcWBHXV5rS1hzOlNKIURgSThMKnNwfTJ8Q0AwXjRMS0NNPSM2UW1TWiw2ISE/eDpnKCEkcndWZTJIdTI6JXRLJD8rJT8wfFgvWlsmI30+TnVeakkvaGxq''@;'; put 'put ''e3BUYDFmMHooX2E4WS5JZz9ZQWhqNWZLXlA3O2pAbkNEPkNHUEp8XWklZyE3SENoKzEyU0RqRFJ9cVdMWD5RUGx+Zj9tN1l8SlAybCZbVUpNWEVYO2Nrcz0ibCNWbHgxdGtZSy83SWdCUFJfPSRzXjxiQTUhMHBwMmIqdDM5bzdpSiJDNlpQZW5ENXo+XVYjSnZ6O2B0ciZ3OTV7RUdCU2AySHxX''@;'; put 'put ''SDpEc1lVYGlVZTVjeV1CTlhXdm9vL3xfJjpDNTRRLjApZS9YPHVlYlB4ckdkSUJpL0M3OXptKz8wVyFud3RHOWR8I0ppWD0lTDNbUldJWVR0UlhubkU1bUxsRSEiW3Q3fjJbXisvR2NxW0hBdTZzc24ma0dJVWdTcW80JmtuKGVEdGRRekRDdzQmdnU1aVB0WDRoP0hLOWhnZSNnUXMye0I5Lzw5''@;'; put 'put ''cFVVdnE0Q05PRjx3UGZzaUkrKUojRCwmTS41cSoqa35wd2FoV09NNGEvUCNjNE4oPkk8YTVwdEY1SCIrP2FYUHhGRGA2YHJDVTVZRjt1MzYlW11UekZ2SU5uI1J2cmlMPWU8SCQ7cWhQJE4+Vit8WGVyKiFUZUooIkhPOCZaXShwMkhbW0UlaEwxQ2o/Ry87RlcwUSQ6ei5JOzkmZ1RSL3MrQigm''@;'; put 'put ''QGh8OFglWHlRX247L1VQLmp3OCVIPUU1fVh4cCpaTDxVVkYjYTw9NiRXJV1rWEAiKVBJU2FtZXYvQT07LGQ3WXtqdmtlRlVrIkI5KHtQbjZzbVo+O0lZR1luP0F7NzhxfE1vcTEhYSoxTFN6SENlR2lRMmlhemRpUSkzVSl2Vm4rLmtUL0VBNlluQVVFL1RIel0ieWlyQ0BjRC9odUNBMzpRZSFr''@;'; put 'put ''c2NbSD92dk89aWdFQ3RBQUFBQUFBQURBaEtFKWY5cDs8RlFubT1OQzpGLitRZmAlLk1uJTBnYy8qLz07a0I/XSkrNndteWwhQj0pKGg8bUl3fktdN0xTZC9ibWcmUkhzSk11WSMuTj96MzxpKy81ViQxQzddNXB6NXxJWih8eFtWNStMeGhsb0l3P3dbZWRDQjB3cGp9eV4yVCN0dlZjRSsyJT9f''@;'; put 'put ''aWFFJERhZjZ5bnAxN3ZwNHVJPWhjNiU6dFtuQlNXN3N5UilCOy9DK0Y7OnZ6LzlRdEgrI14oXmFTKnNQJD5gM2EkYkgvaGIpUXsqSVUhRik6LzJleUBxUmhyVkdvT1A8VjBvXlteNHI7bzQsQjltOmt6PlRXXkhjV155UEwpYFc8XjgqXyh5Q1M9dWlDQ18hIWZvc3lieTo9Xl9NXnp8LjNRUD1G''@;'; put 'put ''JlIyJCoyQmwlWl52YXd3RDlJQkordnAmcXJsTitvITo8ZjJSPztjJnorRWR3TkRMfjQoeUhqPmpVRWA0YU8iTkhteTJ1T113V09uQmhWfjQuMD40Sjx3fUFAbisiSm1fbGx6VVZgez57YFU8aEg2I0J2ZE9dU35qajE+Wkp6SE00JGAkZnd+OWd6cUpSSD5Wcks1MnsxJWBUI3lDZHhdJDFvKnpJ''@;'; put 'put ''SGs8fmlEcF1WPHZ6aD1ZVk18aTZsKHxTKkglTFddJE81In5JSy5zQUN7KFFxZTsyQyxmVk1pK3B5ZWZQMCQpS3xGT0hHLkc7bE8jQTQjTX43V3xge3Ava25NYUZKTWQvcCRFTGA7cCJlQjlmMzRORDFtQ3VIJTVGWGx0VDwlVEt6P3ZddW9ocHVhTyNHcFA9Q2VGa0tgNCZZLi5DLDdjd19ZWUt3''@;'; put 'put ''T3IlcGNeeiVhPUoxX149K2xRUlhufkoyJkhmJm5wZiguNlMlYyRLPHRnOiwsUkJre2NRdmtHL04vK1JQL0thOTMqfE8vQU0zQz9RTiRzMXJ0bTpSeDtxSXwkVWlnUDpkLjliYyhLJEoyaSh1VWAyQFBZYTZHa0pMKEV4XUpINmUodTZzOjV0RVcjQTA/aFdZbyRAYj1WdHBFN20xYVtlV0I6MyN2''@;'; put 'put ''dWMjaig7Wk0/OUosKTJrUiVyVit5PCMhOyYiW3h2Vz1WfjVrVz5EPVspYGVvO2BFWCNOLH46Kk9MfjF6OldHeFVqVlg+QHRrLGg0UVgpaV1UNlh4K3cuM143UXpIKVk/YyRwODAjcl5BLlgjOmtNa1Nlc2V3elg9fGkmPFI+XnBDKTJEeiVlQnhVXzs/ZDk2WnF2Xjg4MHk6UXc1QmZ9TDsqd0FK''@;'; put 'put ''ZCQkOGJkUnRwfEkyUCNGZktWRzBSMmJdXisxNjhmdmpWb2V4bG5hLiM/TzFoZHQsZ3M/X0A5N0ZSTDA2RXtBbF9zak9zWj9gckwlbk1+TFg4YUZyVFlxd3RbdERyIjRYNEU+cWB+eXF3TnVeWk4hLl9OfW1gdDM1ck9wKmlZXz81PCpjRGVGJlNTZzNTVy9IaV4qWSsxLyE0TGpfTlNFQUcweS9v''@;'; put 'put ''XjtWbyN4ODB7QT06PHU0Kkw5JjEsdiYlIlZPMTB0bHdXP1hdXStoMTFgcXFOfFkvZ2hKSWUyMWFPcnF6cmlbY115X1V6T3FQWEo2NF1EQUg3eDtCX1g6VGQoLE5HVmFOP2hARXBjJkR1bG5od1hmRjhNR2kqb2l+MTN3b3VJOlpdW1suMFpbbi8vSnpRV0lDeEQlNC9tI1pzaj5JM2QpITldcCNp''@;'; put 'put ''TGdIS1oxaHZ6dSglTlF0bltWP19xSCt+RiomXlhBWE5oW21vPip6QyQiaC8wOGp5MVlrMVJCTTBuKmxjRyMufmhkTFQuQDd5QDdJelhWOD5bSis8XnBVQXxVMDVRKzhkX1JXR1tse0RXRToydm9RTSh+QV0+NShbRnZYdX0zI3FJdUZOT1o9RjYwWmRKSSw1R3sqY3FYKF9QfSpHfm0kSVM/cXRW''@;'; put 'put ''RGlFOmc3YHJwdi9zflM9Ozt7ZWh3PFZ3fDF0fEAzXk0hZX1jMyNKWCM7WWdWMHJNUE0+U2lAL1pDMmN3blQxbVEsP2o6NEZHNXRSQ1JUSW40Viome3JDQz9qfm4jWWQwJGI2JDFKfkgkKHI8Z257N0wpcSFnM3NaZVAqeUVOal1GJVF0XSNpUWcoUj9LRlE8K0JPMX0ofmc0cVovdTsjOXFtQU16''@;'; put 'put ''dnlRJStqIklZWUopaD5PLlJHbERlczUxM0tXMSguWyZEOCFCJDsvOy88JElebSZtVGI+Mzx9VzN2Mz9Qel4vfkcodyhLcHJedjVVcH5pR3w7NGJfajNmOCxgJUJneDwleCV1PGpsNTtuXnI7NnhmSVJldjJeQzUqOH5fZTRBKF42TSZFTDVZQytOXy9aJkd6cnRHayZYIk9bQytETz5DXix1dkBg''@;'; put 'put ''YXtjR2prUWRqRkZiZHE4dkAody96bn1bdzdPbXJudGlKalQ2TyUjZS5WKTFEKWlHcE0+UD9FaUNpTk8rcDtFN0F6ZiR5LjBAZyspcHJuOlQyRCI7ZXIzLGpgOCNmW0wyRyhCK2Q3I3dQPTZ0cnBjPGI8Ty4/R1FrWik5SmNoc3JoU2thb3NnazQyYXQ4W2VuOEZNai4mV1IzPCIhOy9YLEM5Y2Io''@;'; put 'put ''WCVJLHgzXWN7ISRpVH1EYkRJdSMoX1I1YUR7QFcuUGQ9WCElfXtHVSNmWUcuKSpofmN7dXtaRyo8Ul5UN0YlYnZ4b3IhdkZlSmpmYjhKLHtZVSo4OzdrbEUlQ2VhblQ6cF10dWU/aH5kIUh5MkE6RjNrKlk2PXVCeChCaHtXcHN5bnx4I18weThHYDpPLmV6PHpdNTZ3OXQ7dyM3VSkiSTY2d1k7''@;'; put 'put ''b3B0KHxEW3JgODNvdTZ1OU9wVmpaTiNHU2JoOSx+JiEyUyRTd3w9YDEvX2gzeCtgXzBzV21jMmAre2pqbG9xRlMoI3VaaitDYDtwVFBBNmdnalhQSVRXVXYkQjJDRT9GI3k7bTllZWxRbjxpa2c3ais1ZXs1eXZfJXM6flpFO0pEVk5LMSY0OFpjSGZgKTArTEI8NGp2IltlOEsrZWNNciZtSj8y''@;'; put 'put ''XSRQbVdINUs3eDhEVjwqWENyQUlkbEQ7PG8wdyFuMH0lWlNiNFdqS1YvZT1NMXYzd1VMcnJgTGsiMj9ifGg/cWs+OnxmamoiTEpNXW8qO2Bwa3djczhySkRhKjRhRDVnNVs/Yys4LG55bl1nZjQ7KTx5SnAxRHcrUz0mSlE5JGxIUXxbMlR4dzxxbmN4JG5UTkpebyZbXnFvWWlAQW9iUi4+LDR2''@;'; put 'put ''RkI4Nl13NT00Ymgyd19ee2RSNGNqT3dlLzYsTURHZms7dlNAaTBYOVkpKiU0VmhFfGZQUmg4NVhjQVErQj9pTHh3Rj5vcjN8QyQ7Sm02dWVWWzheQyo9Vll9fj43Vn4hL1k9PXZmejxySzN3KEtXby5DeiMhJFRFSVNvPDZ9KCM7VmVNfDM4XW9peDlALCUuSzFIUCRKKC5uXTleemFJZUBuJltE''@;'; put 'put ''WDJEN3xCOFNhdURYa0o3fSl0JGd7RWQ6fDRFXixEQkdJTWFjVlQ1TFIvTn0lV3okd1kydG1jVlJBRXMzO2lkbyIpKlRKZW94bUZxMVV7dHVWdTxIJm45NDh0ZDs+Z3pWS25eKl5yPEA+NiFjeW9mbWFtPmtbW2U1R0dZPzJraFI4Izg4ZjdFQi9da343Z2dVWSQkZyteaj1GWWI0Kj5LJX0mfVJU''@;'; put 'put ''RUx+VTdocDBjQDgmXix1JEtoMyFFYD44KXYoeFBEKkVfX31nPkR0Y3s1a2tOLiVGMiozOzltNEUrLHomQC9rSlF2Z1I3XipQOmFqZmllR0FvY3lodGNiJmpmfCRDeE88YSV8cWR9QzdARHkuVXZaXVRDMUNmMi4hND9TVlBVTGpvRjVSdkN1QDc+T1BHPjVDV11pdCxHL1gwOkhtfVV1RFtnRjZf''@;'; put 'put ''X190YCwoISghLEhqQ3dyS3UkOltEUi9pUX0lLG5AKUplKFF1ZD1PVTVaRjs7QylqVCN3ZEZDdzQzNWJ0V0NVSyE9a156O1NZWVhVUFFhPS4/RjdbYXVddVkzTmt5OWp5ZXE4W102PCwvZmN1UWEhJSkoTXJXZU1dRnc8VSlsT3RlKnFlLHYmdXByblVPRzRjQyhqUH5SaHw0TERRXzEwVktfR1Us''@;'; put 'put ''LkkhXX1SfEIxbUhLIXVtbGVRZXt9YWlCUV0zRH5abGxVXWByfDxPJDJJT2ZlRyI+QlRiX1okXVFAZ3BFVUw8KTF9KzMoXkY6Pit9QnJsQnJySXZaWTptdUVYPWY+VmhTK2daVV9VYWJLYTcrTDt1VkhtMFpkKFtsOT9NeU5YSGFNbHpyP1FfcFl9ISl4ZWwmLGtxLyguPUs+eERkfWxaPlUzOmh1''@;'; put 'put ''KFdKbHI1JWhGSmJ+SkJATHJeOUxkfS8zdTwkLC9NTUtiYEM1el18Xz5gZjl9JT09bFF4cG81Nkx9N0J6VT1ZMGlZcXUsQShYW3F6KkkrMH50PWsvWnYkQDZWKF5iPUAuW2BNd1BPdS5zNWFUfU0maTZsbX1ZbWgqXWV4QD5wSEZMVnpvZHdsbCFXJnlWJX51LiVdWysoMyhQdyVDN2hzYENkIWAm''@;'; put 'put ''bVEuWmwrUyxzYC4yRT9HO0NfK3gpfVZfI25wMGwkSDNTV3FXdl5gZU4zTG9JWXN+eVl7LmxpR3NYYClIaVRgQVAqYUhsT1cwJUcmJG9tfX5DKytNYig0fXAweERHaEpGZmIqI0V6XmMkJTt5PmQxU1oiRD5VZUhePkIoQyY5aU14TXJsKDxdeU9UeTJ5UyNMNzxwaiI5N1syIjV7eDpmWlliPklH''@;'; put 'put ''REk1XjkoYnhEKkwyZHo6RVFdbFsyZHcqLF1vUF5vV2oxdVY0P1twViE5UWpsL1lAS3R2KTc9YFtMNyVHN1g2YnJzZC9ZbnI4OU05Z2ptPSxydSpLLjIue246Ol56UDt6cCR7KXZTTnhYMDBONjBCRXEsMExVbCtoV1ZFMHV0KTY/QzZ4VnU6Nm4/aEVdOVBvMDspSWB6T2s+ZUZdXnpaNDhbKzB0''@;'; put 'put ''ZyFVZU1HJlY7MkdMWUlxRSF4T2hTZzd2UkBpajVhUClvLHU1RDs7Vl9gSDx4SjM1Tk8yTEgyekFeVTNpdjx8c0pDfktFaHo1KWAuMlRkejsmamlVOyEsIS8qLFdiYj9+R3M9MXFnaiVCOVs7NUZvWD9COXsucEZ0TmFid0cjOS43RzsmZUYuQiJhL15PY20zYy9LaH1RPGM/Y0dAWyhDQVN6WGBR''@;'; put 'put ''WzVub0ZSVnY1Un4yPjhONG89WiwjY3tDYlV4RkRQeEtsIUh+YDkjSTR9cigzPi5YNj46W0cpJF0vcjdGUHMrYUhaV3kjc3UlNFV2MT4pI2wvSF9bVnNMNGh9SypAYS5XbFsuKzw/am1Ad0dnbVpZW3NmSj8ha0FSXT5beUAvazkwOURVa0o5SEo7aSliOT51SiQpKD5kRzlWYXsmSk56OXwkL0JI''@;'; put 'put ''T1RndDZodWkkPUUwPHZdQSQ4Jk9icjQ7akNhbElAJS97RFhgSlsleDN5eWpsQ2xHQzVXWUlaUFEoWnFNJS5UUXl7QDJCdylUX1tOaEtTayl0ZEVVI0V5djI8TFU8Knd9KiN3Z3YheGt2M2lgSmtaTVlWWW15NUgyKWtqY3FGdXZxVC9QamJwRTJxemAzYXtYKGo5WmpHc3NQZEB4YH4maE15MGQw''@;'; put 'put ''dXcuaEV8O1F2KmBLciZocm9ISkBKPDxQaCNWfW5jKz0oQHRHUCNdZ3JdTFswQVpAY1k9TUYyJUgqJSRyey9JT24xP3k1cUZyY05QbztjeikhbWQoUU8kX19jImgkQ113Zk9GaCVoWGBIKShdM2VTKGlvSj9oPVZteG40ZHA0UGZdaHdSfjBEWkw8TGw0bkdMQ3h0NWJEfV9SKXdrQ1lSVlMwVmVr''@;'; put 'put ''QD5UeT1RL1ldJlY7RzJHSnR8Z198fURoR0Q8Kik9M0goJmVUKyZaXVY1LmgsMnUqdUw/NTY5eks0cXgkaW48PiVfOW5JPVskR0NOKDA8WU1mL3IsYSt3UiUmXihHRnxyMVdZL0gpUVU+eFluMHNvLkdhTjZyTGZeeD9LV1ZYNWklT1hEI1JXM2RhYVlxT2ZIe3V9JkA3enNWInBne0ZLdl9FOn5H''@;'; put 'put ''N0lAVVF9M1RENF5td0hXVjtbRUglfSk2LihuJUdeQCxlZz9qUUI4ZmltYik6RlJSLCZDZUN4PmdWNkRTLnlxUyhQRnp6W3cpPG4jLGhIfkhWUzhlXWtHeDk6eEM2RFBAXVQuN11wVHdFZnd+Ki8wX3JVNEhTMGdiaChTNk0oaVJXfEJqRnAhU2gqTCVgMWxGeExYNntVcyRyXW90LyRqU3hOUTVN''@;'; put 'put ''c3MjfXdadzNZfiZWcyFrOmhKOktLKjFVdE9ofldBTCxBQkF2I0d0RnhzYHVpNTVdSUc6bigxbig8Zil2cyRdLlRfOEFXWGpqfTlEKS9YMGJARTNLcXlPTlRsRFJTSEh2fUJjc2IpdUhrN1QmZyM3ZVdpLzs3IWhyUExpVik2YFp+MldoVVJjZTlqS1Fga35VZ0FPUD1SWztQMWduPTx5NnlYUUpC''@;'; put 'put ''U3YrQGVzLGJXazl1R1BvND8yX31lLHdDX2tLfjJvWHVhMFZiYCVIWlpCKj1fbF5LU1IoOFZFXT1XXmpXMTFmPUQoSW50LDB9dCRDKDRZWVkiP0JZfDZmVlpZLEJFT09SYDokV2ZUeyVmMlE8Wz5CTFprdztlN3k6JCM+R2Q5e0ZQZTFvNE8hXzJDLGt+QUhbLmxeYHp7LDhjLFk6R1ZreyhvWWd6''@;'; put 'put ''N0FqWTFyazNPcDFUcF15aV5BK3QscThePW9nPE5eUmRLSEcoNkBOYT9oTG1TJEZLQilGQTFdZFdpOXpQIV94Z2VsZiMmeWB6RjpLOH52JmFIbTwjbUI2e2M8XUhOPTEqW113Zy4+RzcoXiV8Lzhbc1J4Xz55fXx6b14kQC93YHNKMTNNaUwwOmVKJVt1N3N7W0QiOm1DJS9QcEIkKC9ocFMjc1cy''@;'; put 'put ''MitYM2J8XnwxbitiJnNrPWZ6UVprOjVVMVEpJl03M11CfDg0JSJYcU01VyNqIz0mQmt3STRAZ2UyQCJFKDY6QyloPCEwcGJjTDNYJVE4P2BGSm84WSRUPmBaU1QmcTsvMFkpPFtzRWBreVtHX2M1ZFs5RFJWdGRYRTNdbzFNfj8rL2VQSzlNNiFUKmgkRUlKRmRWQ0xpZ2UvMWhxYyhOZCRFKzMw''@;'; put 'put ''Pm4+Sy9rXSNHVWlxVj08aHxJIy5ld2E2TTh6JlhvNV9XcylBKDNQYUdzZzt2elg/JSRGWzckKG1QK2l1bHphTnF+TUdbWG9GQE1VVnAlPmhUWG9PMX1SO0ROfXRSZURCPDl+QyhZaUdVNWtFZShVJU48O0E7UkAxWGRMI2BXbGZNSjUiTFVvRWhgXTE7RTQofmdwenlAV0RzW35uST1FLG9vWnhr''@;'; put 'put ''NCtGRH1eSndIRDFEZm5CKVVuMypBMEAjS0c2OCRNbUhPO0VfYG9EfGFPIVFwZDJHMn1dYHh4Yms/V3J7d012ZnEpNHxOP0hdMitjWVZdQFl7Wz47RkdNRCtNTm1PaW8/c1VCNys6V0krZW9wSjdYQ2JjVltwKShiIkVmLkhlT0cmJHpQI0FvOX4rUzdbITNfK2ptNDIiLmpoSzl2bnVhJGk1Pyth''@;'; put 'put ''bixjLDRNU04kV0NhQnhfe2xidnx9dEolJCJZZj9Ub2s+dDF2THJEMHRhRk40Xl1KOnJleE1WRHI4ZUBhLEgsV1twfm5ZXzdTIWQ9dHd5MDgiYUlnemtOIyNZVmdzd1s6Sj1jTXJmLn53TGRQdmpWcUVsan5AYUxfUWlafmVFaUEpUUAyZm1MfmxNW3ReLjA/VTdtNl55fjNgKFVJfD9ZMilOdjUp''@;'; put 'put ''JDl9OGtVd3pjdjY+Xkk/XUhaXSNtPHxUSUcoaXVgVzpGXW9DXVdNSFVjYiNGUHsuR3orQENXO2I3QiEwI1pyZXN3R3NffG5bMVdVdU9PMUBbdyp1UC9kazoxKyF3NHYuYCpRLFtSR1BOM1I0Vit9OSE7a0x4fWF4Y0dbLlFSR0F9cCteUXMiMmBAPno6VUBdWjxWSGBEb3pdRzNKQlZ9WVRSc150''@;'; put 'put ''Tnc6bm9UTT8kaSZYUnpMOFtud3tSW2ZCPj55QU1HN2NEWz9EZ1BHYGk7JixzTDdlXzJVXU1VamlsQ3xnY0lFYl9sOlE/e1pfTTdGJShqcEI2ZEc3TnY5TTNmUlJBditXVl9scT5DWkh+ISZ6OyxdKFp1SntHekssd34/RHEmZiJ3QCg9UjNAaFA5NGsweWh7Y3pOd3t1WEVQQSR+JU5mOFozN09L''@;'; put 'put ''e3lEc2o+ajJgZzhSdzpWeHBFakN5OE5IJS4+VUdYWnsxJks5Xkl8MlZseXZiV0NRVmoxTCkmaHgqXUA5SD0sJFB1dSt8YzlIL3FAQkRpdHRuTHJiXmtJX3ooQEd4emlybCs8eDxTUWFDZ2t2TjJbaytaXT9EcXlubztKYXxRYnR4djMyNmpXPFY3ZHhDYEN3b1kqR3JLYGliLlJoUUkoOXw/ZXAl''@;'; put 'put ''KUBIdDsmfmAqcHN2V3s6Qyp2Zn1KY24pUnoxXnd+NEJbVW1ZbypBT3lbPHxuLz88Lml7dUklQy9geGQ3KS87XmxiRmBfPTFEZndsPUhMLldQaEYveDVhSFdsQEAjVCp4aTVaSE5gXnBqYDBbVC9VSENRJGQwVyltdzxKVyY3PmF4KVA1KmA+YG9+c01kOzB3S3tpMEpaO21VWmg2XkNrL2xpN208''@;'; put 'put ''a0s2ej8yZytGQHlFMUR3ezpGWXAyUElMenN8fU4lZGVdSDgjVCF+bkUkKSxeIUZ+VXVjLi87cVs4QCIsc1B6UEBPMSpzUzBIKkVkMFJJbGFlfld8PXs1fT8hcjcrUl9fVUxgXkUzYVNdZU97JFF4PDc+K1Uqb2tFeztyKVVYIWd4KT0qZ0smX34pPVozPnZDYmBLX3FrVTElPFM5QUkwJlYzXVte''@;'; put 'put ''TTBXTkhHVEQuMWo9PWhne2U9Y0EpKDksY0RYUXliX1Y9bUQmLDFvMkhfJEhUWTZCN1RsKXFZS2hpW0YhLEZsN2g7cU8rZShVbyNhQ2xqamU6UUVRc2VUdkdjIW0lTEhzPzhZKXBkRHhFLyRlNGJtYExMSGE1M1pgODJZcihffF0lWjdpai86JEVldkNEIVIiZT96dExQUXhdZzBiRSR+LjB6JD4m''@;'; put 'put ''MnRgdWlWJl5mXWhAYjdYNFUlOFMhNlcsNjkvLEtaSnI3JH4wbDUsbW9HQio0SWxDLz4ibHpVQURzUEk8aWVoPCgpfXMrc2YvO0NuPG9EO30pLl0maGY8ancuT0xETF81QUJENzA2VCpYc2F6fGAmK3Q2YXhWTk5nPCRGN3FAVHFzM2xkczBiQT4jPU4seSJ6Y2VUPWopX1MkV105TWdKKD4+Wkpj''@;'; put 'put ''bng/Y2IiYVdXKGNIQlBLbHB0VkhKaDBSKl5LakZOdEVmSjtCfksvdVo1JF1uMyMsPUpMJGxoTT1nW1tkX09WW2Q2WzVwcWMuUzRHR2UxMF92RSZnK25aQlhuK1BOOXU/R2dnY05NJXtyL3lyKHgzJEhQYFJHOTJuRjsqYzl3dW55ZU87P3doZW4pWWBJRyFXW0g9RmFWd1VFfEA7PV13fnV0YVBW''@;'; put 'put ''Mjk2JHxKLEBjWTQ6OFcsd3tUKHNqQEtLWDMlbXZlP2NTbnFnOjBgIWpoX185XyoveyhAb3UqSG8rKTQiL2pEc1MpfGVrVmYpQ01IN1ZwUV9RX3E6XjwrJiVWVGZ9W0J+WXFDPS9rL205VXFnQVMiViR3RDc8OX1KYXo7ZVVRRml5fUwlXVt4bG1uXzQ1eiowOFRlMTN1fj5fP05GSXJPbyJZbTBW''@;'; put 'put ''em0yIThQSDpzSmtmT2FuKlVVRl5vflE6TCRMW3RkMSp7aSl+QVgrUXgvTUclZGoxaHY9YmckQD90UiozazB5UGJOQkdQNjxuTkJbRWF9M25VfmA6TXdAP3QqWyxESWJoVUtyUHVEK1JyYDU3SyomcytTM0p1TDI8LzFFIjFSRHF4dEB6R3Z5KDVEWjspVE5UVmImaU15OihbS1ssKj97TVZtVlFm''@;'; put 'put ''KUFpJmldeTxbRDB8IkJ0K000ImB6L0MrdCtEWD9bTnxycWR9a3szI1gvS3IyYDt2XjRnXllPYzdjZVArNz1TaUNuSy9Jc0VkYT5OMTRZVXNRJG1PJTp4e00yNkJjWlQjR3YlQmNdMHdQUX5kV2pdZik8ZSRyN21oJTd8fDRQMztpalNRMFtFNDVOOH55aSo6PitdZi5FNUphaVMxMWQqTFZafjZG''@;'; put 'put ''WTQoYHorclZCNEZNdHpuNWcmTDpjQUA+MilVS31RfG58NT9iTzdIRDVkbG9jOV1FanA0aEo1ZzRbPWl+eFRHazJMWHNAdWBCUi5QKzs0fXF7T1gxZFFHLkQlXnBNZmA6YG1TbGcpOFVbNE5NWC9XbngvJUUxaCQjW2plZXtmTGxLZ2A6VEd6Oys/Ol4/YFJtcnJlN319XyxyVSxFOGJyQHc8TURT''@;'; put 'put ''VGFWfE9pUXMkX040MDA0cWp+anFvYytHaDhaN1VzbkU1Z1Yvcl4wXU5TQSRwPFc+aFJAQ2M0fUowMHp8VHpxJkd4djI5alNHcm9LKCRrNW8kP3EjJjBVUyxbPl8yTFtzImJHMVNJR3R7ZGgrOSpEPVdwO2Y9JEtSZXBxdi50KFlMRCwkJHx6VUJgMnBTXkIlL3NRbkNCcDhheUl8aGVRUHUqdTw3''@;'; put 'put ''MGJ+bUZUek41RyghY3ouejJsaXNfJWskbGFsY29nQyp4Wll6TztbPF8xMnw4Xi9AalZ8d3c+bjBzQDc8YUUoM2w7fkhDVyl9cEloXUZhKldFM2wjYGR1I2NSUXtNIXVJSWhhaixlRVdYTEFAaDleK1FxUn4/ZiY8RVNeSV82NS9PdVIqKWtidEN5VFMvW0R2OUpWaEZoM2hUQXRJPjU+LkZIaUVC''@;'; put 'put ''OTlvZilxaHhvKHdpYFd5aXVgKFt+eGAlcm8wckAxNFIzfkpgL1BfbXFTemJYWGl3Q196WTttJlkibDoyTmMkR1k5MHxkXnxQXmsuLiF5Nz5+VTF5P1JoZE1pa2Y5LnVeXnxgflBsKFF1L3M1Ry9INytCJXJ9WUpgJHxCXiV5VncrRGxCPnZgWWU7bVFWc3M+PUJTLml5Y086ZUEpOT48fSFLYShW''@;'; put 'put ''Ly9SYn5yQjN9NU8zdnFwIiM+JUMpQiF+dWMvd1l2bT9dKVJfWU5VcDJlMyY9eGI4bTNrditEJEpZXThhXkgufDwzfkdpTDBSSGg7RDFSeCRHUVhzXnomcE1bbnY7QTpRVTk0VjJMenUxPi9gNjtEPEB8YT4oQm86d3spam95Y2VZbmExeVYmW0FdK3NrO1F1XSZWMTdISyFgU208ZjI1OHJ3XTtr''@;'; put 'put ''I1svRi5eKXpAdClSdSQ6dXBZOkRkLCI/VXxFSzV8e20+KjRZQmosbV9mYiwvNDNAJW5GUn1qIWYiPFlecTEraTcoPXVKcnpiXUUifktAYVBEYktnIndTLyNuTVZLTl9eP09YOTVdd2lMUnEqVWFZNmxwbzBzMyVCYldWXyJIMjl0Q1QuSHBES3VLO1NlWkshYVJySlhnLiMva3VCMVIvLCplXXFH''@;'; put 'put ''fVt8U15MQHAwOFddcCVVJlBlX19bNXNoRm1GKzpIPk9+PDw4anlVIzgzKGllQWg/cTNUZ1QlOilVdGhZaGBZKEciczwlXzAiMHNHZl1gPkVzRHFCbjRWPHdTT2t4OE5ENC57d2gvbj90Z0BxUEVCUFN7OCQhU0heLF5CKmw1UjpSTUNVJWpRYGNiMVRXMFVKRUk0RDA7YCRxVWx6dEpoKnUyJG9B''@;'; put 'put ''dEVRdns+RD8uL1llQ24kY2xjY2wiUUAqJHticjglN2I1Y3JqJmFjZX0pd1g/LlBedEZQZ0VYdk9STExoSGdNR0suNXA3dUo6WThaLHV5Wlc6MlIqLlA5RV5rJl9YPiFDQlRDan5HakNdVDtUM1o8dTQ0YD4+bDxgeXcsXzE/PSldYzJJRjB4bUo6fS8wV2RxI319YDd5b0F2I09iYj4oR2wwS3Yq''@;'; put 'put ''VkVuUkcuREU4dk08bn0/T3ZINkpzUWdSNH1LbFliM3BFMH12NlBGLjVlKE43VkNCUEVTSE8hRiVuL2w5bV5vRklDI1RQI0omS3t+SCI1YTtJWEtSciMzMmBUdX44bl9UdmN7Oih4VGJOQUdQSDojVUVHWDhrSmdZOywjejFxdUxsVEhmXUppVjl7V3NOeTNNWUQ0OkBUZHRbdERaJEV8XzdFWXpU''@;'; put 'put ''ZGkkdWYhQmR5bFY7YVZ7cTRyVko+XiNCXTk3bnZ8WkMsNnRARFhOLk1DPTUxUmJmRGtVZE08TF9oTDQuOztaYH1QT14zYFF0UnBadXRiQktBcj5NWHoyS3lORFMzcGNYcHEmeDt1dSopbzpbblQwcElPP1NMJmRdPCxWN1Y9cl5QfXIlfTlYJE5vZkosdlpzUSRVXzZAZH5GMUtvLE99Xzs0Xko6''@;'; put 'put ''Y1lXezUpRDc4SlJqTC85M1BBcEZDRzJ4O1cpK3Uvb1NZZH1ddjBdK0owJk8/U25jOSpMK2A2djpWPi8kc3R2e2ZJfmVNbU13Zj0vKDM3IWQmNEVUVVVfcFZdbHlTNlMzOy8pVD94ei54T1IoREpYSlpELyF1PUtyTCZOQDtFI1JiIlhePDFQaFJSaStCbWYjNWx+NTIkdjdxQlE4Nk9AR0tsZHld''@;'; put 'put ''VUA0WjZmeEg8aUJVP1BIeFA6fTBSWyo8YGtOZXdzb0k+SmxZb0BHaipVT3AraHdiN1tOZXlLay9tJFdwJSs/UCkpK0tCQ15ZRz5fK3NIaDtQKStSSyZIYzQ+NSVdMVY+aktOMnA4X1RVRXMyZWs7JFlaVUs0X1l+Nm8ldlovNTRmcnUyekhZLyZGfEw7enJZa0MkUHQ1eGU8S2BPbXR1RH5+Mn1Y''@;'; put 'put ''S1NrSmJhTnNSO3g8ZDorNiJ0Qy5GQEI/PH5TTSYqT0hSIl9NRjplYTxQMy9mNUNaJldQKnB1ZSNPeHpfUHx8ZiZIS0JZJC43SFlqYXZ2a1B1bFJ+cnFoLDlCKCZmd24vRmIuMkk7RFcpeiMvamJ6VyYlRj1TfSE8YiJJe0IqNWxAPD5DZ09nRT9mTzQ6b0BfQVVOJmZwYHhDKWl5Q1UwR1gmRVRK''@;'; put 'put ''PjB1R2JzL2IhYUN0MCYsSlIvbnthQSZpI10pcmxyQnskWHgpcER7NVpfXkVMLzVvRzg1VitdUWh2enh5MlIxZyYraHpPZWZ8VENeTD07cD97bE15ZE57MHxDL19ZLlUkR05OPCxYTHN7UCFKeUZfMDJlQ25ScmRVR3xBIzZDOndlaUA/UmF3M35iP2JMPzgpelVnZ1Usay8rWzYoeHk3P09dTWFZ''@;'; put 'put ''V0pfT3xhKil0Kjc3XzZlV2IwZ2xiV1tMajd5NlJZWHNUPSlUKGNdRkRxVSxCNC9VKSQ4PkFwQmtlSlJAOXIxVDxYOip7YUBANihqai5mb0RmcUBJbk9oUVJZbndEfmhyJGZYWihMdH5leDNaaCZ+PHJfajk9bVNPSDh7YFBZWDd0RCNOOWBzN0NoekBTOHNeVT1+O2Mxa0MvYmlEb2ErUVJSbHRS''@;'; put 'put ''QylSKlkzUEtvYmB4Wnk1bjRTRXE6ZX50TTUxfCFePmAsUSJKQmtbR1JzNjBdMXxFLygscDlZT2x7aEl5SF1sJlhMOjdNKSUlbzRxP0YjQ0htVmFFezwlZn4/YjM4e0hzYFhDazFIdDp4bkcqTzJHVnNxOk1QIy96ZW17OSVZY11ZJTB9PXFZP1ldQEZAZyVSb3RVMzVhU1A9SG9CKSYyaldYVX1Q''@;'; put 'put ''Mm4xWX5aW3w8RWM4M2sxNlNFJlE3eigreyR0JG1tcCYkbDBeMHQmWTJWdzA2eEMrPWdyfTBeYWYrOCg3Y1lGTCRxJitEWGQwI2c9SzxsVCwiN2lYJGZkRm4+RkNmT1lGQHN6JWA8Mm42Nmc4eXV9UCN5XmpuInY2ZVhIZ2ZxMkZfe3EzbDdaJkosdDVaa25vVz8sWk1lPz1OUm8zcUA7TnhvUVIp''@;'; put 'put ''MyNjRiR+NWJVI08/SC8yMjVJKkI5KFkxeDVhLm05bSImY15MWC81XXFbWVAle05kQU47SkNBbmEpIV5VY2tOTG9NNns2bDYpSnI3SjRXbjtYPS9TV3tjd2pKS3VfLypQalNSYyRNTUxAOzw+UlAhOFR3PUNGNUNsX1Zab3Y2QUdWSGZRMjlsOlhyeW5hcEYxV2JyP1VVWUVbXUlWQVh0a3E+VXEk''@;'; put 'put ''L0hzdm4lfDs/SkpGUU8vRypyLGxNL0xXZ1VMeVBiY2pSQnhLJSJsO2hEeHxIKGIwczZLYkcoKUVUIz4uOTtIVz1JXio2Q2UyKn1dUEljSDlffS5TNDdeZ1R0Km1odSZeV2k1Vz1oMnxvSns4SktCZjteIUdzN3Z5SUN1c1M3XyFEd0UhXTBsbiRTMCM4cTg+ZnNrVjQmKDd1dn56dGM8OG5kZl5F''@;'; put 'put ''Y3dESzwwIzE8eShyMEU1fFkpIzh3PHU1eU1iUUt8IUNVSjsrRWRLKVhDITRLfF9yO1tkN3EjT35hUX09JX1AbzxYaTUhRiYuTSZ6ZSJ1cWd1fFZlS2FjfVg1KD1vRWVWejk7NTg5TiNsbCYhWF5xd2U6UlNJai43KXVWSXxYPGltNit1akdXVk1SVTR6W2dmR0lLMEJSZHlyS2hlXT5MLDxTcVZP''@;'; put 'put ''eHhmI0dufHZhWzhBdEBmOGBwV2k8MlE8SGwvZy8sMlE9YjhIWkYsKm55Ln5nSHcpL0VUQXd4NmVxNUZ6QzNMNC94RzNMYmZ9LylNY1Iwe2xQeWRIP19lRzRXJHc0XyRjNmdQdz1teHBJOC8ubnB4OkBzZzouMGYpa1FDfS89e1BMUVp8TiNwcWpzWyQsYTErJippdX1lSH47TH0+NG9aMlYoP3BJ''@;'; put 'put ''bTp0PncsPW1CIXpqSUdleV4jQ0IkLC9TUEI2bT8wVVMzIW1QNCh3TDBfTjB+KDNqIjpqeTU5W3ddZFI3TnQkbUNPZCxbVHlVRmoxNE5BdXorViIqVTY9RkQwTlthNnIlemR6d31FVzo6SCU+IiU4aVB2LHZ2P0hYNSRUUmlbbCkiRmE/JXJtZz10RUpgNVNQNm9sJXlMTFpxPC59VEs+TmRRRXVX''@;'; put 'put ''Mm0pIm8rcyUmQ2ZnU3BaQUExOGldS2k8fHtnXjZRRzM6WEVzemtPeHVqUil2dmt5fjV6ckRMKEkqKlRVbkd3M2E8KEpiTCxNYkowQDl9eDc8Ti4wZ20rUz9ZXklXe35eYiZLfGRyeGcjJlpSYClxSV9PdCFWPU5wY3h0Kzg4W2hPOEVwRCxkfFZCQEMqSnF5eWw/SUNxfjR7I35ObDBgRnI6YFMv''@;'; put 'put ''Nl5xNn0kPWNLUG8uR18iNk9yUV93PzFMP1lMX2AmdlNiT1c7dTBBR1Nxans2MyFOMjw8ZSp2UiIyREtHSzdpa2xdQXhbQnoxfjYiX1tmdkBydEJlQDwsY25TUz1pcDE5PFtgWj95ZGRKK15zYXJUVFthdSxbdWEjP3FFeXwuTWhwWm8kfWZ7WnZLU3ZofjBTQlBoV2RsdkYrRzw4PCkzX2JMSHVM''@;'; put 'put ''MGpbYEh4enp4PzkzbDN6MD5WSlMvO0U6M2ZCMyV8S0R1bWEsQVBjKC5UMytKT2ZZWEgyd2EwIUdtMHk3ZDNdYHFuKSp5aXdYZUNXLjttY31lX0tYMkZMYFpIeXR9a05CXyFuWGNdMjpLQjUyWVYqbncvYEBYU0BScHpzK15YRkIxQXF0IVZTRTs1OD5FWk87W3oyU3Q7fEBUXTt2IUxlRCkiV1NK''@;'; put 'put ''MiVFa2I8RSwqS01ISmt6ZzlIUX08Mno0P11RRVZEa293NXptKEowZkxML2wme3ouYlMhRSYqci4mVj0wPlIpSzdiNFdyOS9qelNuMjkwfHJsUTw5ezVKdC5TND9CMkxJSkJ2QE5zKmAibnN7cVZacj10XldfPkd4XnBrWj1yUDA6WyZ8S25PPyh1P1goV1k+T3YvNmxWQ2tyM2BPKzVoMD8mRGVh''@;'; put 'put ''O3w2clEhNFksRig/eXd1dV5kM24lV0N2WjMsRmN+OzFDRUouSit+SiF+JlRHdGZfYV9rZG9PM3dKdGN+fHwjb2ljKilOfFcuUkt9ZmJ8SmYqfSY1a1NkP2dIdSIxVUc4KlElVW51W3BAJVovXnNaOnB6PlBGM2oxbWU3R3s4Nyo9TmBDUFMkOG5hbCtqUyZRW3FpQkcqL0tISzdgMj5zRjRaNXkp''@;'; put 'put ''O1VQMV5nUHZ8b3RVVjdnU19danNFaUR1OG9Fem9GeVtEbG1ZI2g3PyNScypPeHo0RFZUREhFUjlhaVFyWzhdVSFtbSR1QFp0aVRgKz4pJDQzOyVFODQ8JWNGIWg+cFcuWihUZkdIXWRGR1Y4ei50QzxaI3ZTbzgoImMxPyN8IndKUUx5RStfMjluKCMhVkVWLipPR1tvMzVRVEc4MUd1IVBpYExy''@;'; put 'put ''KiwuUHksVV9kbjZVeypKUFVyRy5CcSxlfiVsZXxWJWdVQ0d0cD46aHltKHhkXm1KKylGXVRJdjdTU0NiTykqVHorfC5yV3tSZWFYUy92NENxfCVmQV17a0BHXUYraT1GVT5bcXsmIiRNNE51VUNDU14mOSZ0P0xlJjQqOTR4KCV3NTtnJm5LYkt2XnVaYno3bjU6MmciYmNzPEBdKiEzRFZVaH57''@;'; put 'put ''O19MYDJuamBVYm1vbzYrOyN2dHI8NUheU0lTVUg2K2dBKTlFYl9odEZOen5pTGRlODxgfT44M1I4M3UzUlhII2cxLGFGdlFHQGM3NFMrZFRkSXtwWE57b2VPeGg/Zl5Ia1NBZmVMW0xWNTFvJmFyWkJ+K19wJnpwO25oanwiPHFdI3tubyZPc34oa2dfKyFMMEQ3V14qUz5wWUt9VjA4ND9veXRq''@;'; put 'put ''WT1CQHVMNC4qUFk0LFhtfGFmI0dgQHxza0I/X09WS3RITygjaT5TIjRGLFNdYmtIdzcvaVRVcDplNjo5NXZkeysqOyU+PSNOJUs7Z3VTVUZRKS9+MSFlMFZeTFdmTyJ5SE5TJUJYO0wpN14wMGgrLExBb3JwNihkRnA5IllANGJbU2A9aERAI0g7NG1SWSJxRUhuVTdXbyxeJms7KjdpKFgpNXlh''@;'; put 'put ''bz0iUyYpU3VxeXV5aCtPUlIxIUBkY257PGQoKyMkZEQmUWM8L2FKRElyKTJ2dTxWXSEqcFRxI3drTl5OMCFCKH5KSzopOzFuVTlHa0lYW3ZFNlF9Li86UXtrdkVGRCZ1UCY0PENSRFJNKmhDOlZkKG9jITJLUWFieUNsbW9GOUxuV2hMYkwyWG5XLmhuJCVjQEY8bCteM2dEUSQhe2QleFlsPCw6''@;'; put 'put ''c116THFdSiJ4VmBLM1J1KSZQfjFdcDFMbl4yYDk0Y2ZmO2MqIjZJezdjMihOPS5gInxBazclWjZ7ZWIqPElTdT9mcStPc01GO0BJdWduWXlxRU9oeG1AcD1jJUY9NE5VPzEzVn01Vj59RnpsOWclbz9mYUBqLEsufjNDYF5sV0lwQUlTRlNSWGYiTmRrJTJDJnQ3fSV6ZjZQaGxFKWczeks5PjVB''@;'; put 'put ''UlZkNUA9LHNeYHp5cjRFUnFOcnJtayR8LjsqOyJab3olPlU7U107PCtpM19ARSU/ZUVNJlQ6aytMeDMsVzBWe0FSfTw+aiI1R0tFMzsvTzQvRkR4UHk3aHJIL10/RyJ0OmRwMyJyaS4/KlF7ITcvKltjISNgdztCaGowfHVrMVc2YWZwW1Y4cm07aWROXi5ZeWNOaF9UKTBVKU1sO0E3LE8jUlI1''@;'; put 'put ''fEx1JWU1LG5IRnZ8Xy4rfjt7eUR+VnFWPUZ6L1Q8KCVmbHp4Wn12L3hgQj1eVXxOck50QCtUe09EIzwiNTo0Tz09P2Qia2soaFFaOFMpbDsoLHp5PGptfVVjViJQX1dLUz1KOCZfRVY8UlovaG9mJUp2JC87VSRzLDheKDc7TUQvZnlQQk53Tz1OcWRDR3pCWDFHdVk0QytFJkApVVVKaFZOKTlk''@;'; put 'put ''OlJwRipCXTFFdHcoWGpzbn1XSUBnVVlDNCtCR2QjcF9SKCF+WSwzMUslUSVIJjxpJE9nMipOJSokbn1gXzlNI0BZP3gyLEchcElJVS9DYWg/b0xPUypqKm9QWWdrWG91dSFSY096IUUhNjxkPiw4biFoRSUlciZGNn5hO1FeUjBGSEYlMl0+Q31GKTAmZnhTTiFZSz89ZHRmPGtCXjpwdGwrJEde''@;'; put 'put ''eCkiKkAmZl9gRyx0U09HPy4iQ2NpZXFNLF9waytNTyFVUHZuRD1OM0QsTlhAPVpQK2E6PD8uakRKLE0zRlJ3SUgyMiowcnhCKnljem0qWU9RaC5gPHJCSzddbmRxMCpdM3VbSSloS0V2WGdqLzs/UmByNXNLZmE4Vm4uPT18OXIjMjQyTS5GLG5yS145I1IzeXc7R21iRGpFcUFfST8xVT5dc3xQ''@;'; put 'put ''TSZhWEh+PmVxbENJK0BsYiEjYklKQ0w5PVhhJjVpWXRsKVgpMjgjVHR+K0Y3cHJBMXFiTTd6YEIqYU9HUVJEMjdOZ0k4XS5bbnN2MXRYalFDJWtPJDNicnlJOEBZRkdXPlEmK09MWD19aS9jMjQ3fHlYS3d7K2w4Smg/KGQ2Pn5COnZMfGFIPnFafHUqSjgxQFlLMExLZyspJXp2cVF1Vkd8JUhL''@;'; put 'put ''ZHZ9Z2FlUHopKVsleFBHM2o+O3B7MWVDa0kscXB5JnovNjlnanFvaVh7W3tTUWssVC9pPWt7dkZEMXNJWThhN0ExV34wcTphL1Q/Jml8Q1RVbF54I2BmVHp5RHk5L3drSkRrcmZPNF46PFJKe1Qlbm97I1szTVtULypnSGppKih3NWlqQzNZNWZxLko2JWQwNnV8ZkpXQ2NWQVVfa0shRDg+YH56''@;'; put 'put ''W3dBRCU/U1BrMElaaSxHVnRrSkQmTTt+Njk4Q2BENX4+OShyXSZUdSgyIU4rRTJ7SE9DUVc3Jk5vcyFbbXRPWVAhOW9rT0BiQzkxSW1EWDgkfGAoLno2PF9edz5oWDh5dmRvSyJCTjtHcmdVZWVuUSlYdGB5RXAoMi42R2dMWkh1YTBxeCgySDhyNDcwKWRDU0B2V0pvZTVlfj9ILm5QJGVfXT04''@;'; put 'put ''W3ZZMUI+bHl0W0QxNmpeQ305a0krVTFOI3kxT1YwYkBlQ3tvdFtpPWRQQ1J+YSIpMkFMW34zQTRvPzU1KjNpcl4lLFVdbXQmPngjY1IrbVBzKDFHb3R0bj4hPlUhdkNiUFpYdF4odn59a0FvPjNVKFRAfERNMygpK0BUSmpCPEI3aGMvP2JTd1dfaj5oNTxZOXQ7dEVWeG5UUHpzSHR8IVNuMjBk''@;'; put 'put ''LnB9U1lPJHUvdypiXXFtKm4lWXkyJFc9a0pLQ0tuPmJsUG1FV0h0azBkZTRiJEt7WFVnQkRkTldAPn1OVWYsR1pybWFBMSxMO0traFVoSHpkdyVAdCk3Mm5TMEtmWWQ7SFFtZWFCJGwiUmJDIU96MjZ3PH51OXBfSFJ6U2x3K2pTanlJVlJ1cTtheVJ0Jm5YelVSay41KSUpKXIjKSt4T2BnTmho''@;'; put 'put ''JTx1JDdFNHxJJHNrRCRpcE5QKkJ8Oy5hP01WMiZjMmt6a3ddQTl8IUdhLzZQb0Z0UCM2KH1+WCZDUWR7T3N3e1NMKzIhbHxfZV9aVklYeTU3M0AwRzZ+Wi9wTn14VGRkSnpnUTdJNmkifCNSSnshQGN6bFp9fUtBJWJyZGJ9IVsxRnBGbFNPbXFbVjNmRFJAOT9gNzRZXUF5R3EvKWR4LEd1NUU0''@;'; put 'put ''SVdWSTAjT21lKSVjc05FQ0pFV11CT3lpQV5CK0I4JWgxWWw8SDk/amZFcnAoUDs+X19+IS5rdCU8RF9ZaGxtNFRLXmhTMW1NWiZ8ZDdPfEFbWENjUzxxfDBQPV4/NDZOPFFYdD5OemlDKk5PZFZtJVdhMS9jI24sWlF5PVU6KkQ6MGlsMzNZV1daJkhZJklHYnlvLlRKUHp0Il4wVlZMbXZeTkQm''@;'; put 'put ''anBfOVFCa25aQn0jdVJjfUshO0F7YmUsfndDREAjP2JXX2tQXzp5Q05uOF5iSmppRCE5Y2NtJTJ0OzZRcnNNVzZyNDlTNkxOOTM4Im9lL3gsQGN5OFF2TWNwYywlNU9vYV1ORmArOyFGdmJ6RXN4XX5LSC5gPFhha0taeXxdc3xHb2B0PUFTcl9tMjZCSi9OTTomPEZbNz5fem9sRmkyaCgmTS9W''@;'; put 'put ''NVVzMVVxYV8jTUt5endZOUAyNHgsezdaS1VPRDNBOjI5PGklX153SU8oQ20wU3xiRlI8TnlRV1NBMSVTPF5wQ3NpaXk6KnsoQFM0e25Gbjx7RF4xT211S10vOD8kUnlvZXlSQ05acFduQyEhaX0+cEk2TShHKSNmOlYoX3BBfUg1UiJTeWZHKXoxQHJEO0JFQ3dISGVQcFUib108Z2YiZW1WIVNW''@;'; put 'put ''O0k6XykuU01rVmNleVhyLD9ZSElNRV4yXTdhIUNpeGBtY3FmOFhyRlAqVHQhK2ZRR1ZpTUdeY0V8TVNnM2IhVGhTJVF6T3AiQz0jL2BeVmNpUUxXITFGSFkqfWg4ODQ5ZV9tR1NASklPMi89VnVBckJ5Tik4XnN2ZT9QTUpabTllNyomVnd0QT84Z3U3d1FeOkplbHtoUUFQJT0ifFpqKXo+cUZ6''@;'; put 'put ''SC48elZYQmxYYDYrYjUqTEQ3UFF2WjR1YzhgQSxtKncraloqYD1fWi44QGYlMkJiTHAvSSw1ZUdSKlUhcX44JFFablhTLEdyYHc0LHEvMG1qSHsrSiQrfTt7elEkVzp2Lkp1L0JqeElVVG8lPDBYKVJ5aj5IQ0oiZlchQj8iSl4leGo6ODIubyljTWtrRXwlVyUpQDRmbGw2QX5aV3YhZUt9P1gy''@;'; put 'put ''Jjd8XzVVPHcmMFJSfjZUQ05zRSs4PUEpeEp6Sj4vcFFxVFgsUGpXelg2Jm9jd0FXelRScm5ZKSglWVJPe1swNUhVLG9gc0x9TUEkUCNJNmNfXk1jemMkVjdRK2o4UjRhMDheZ0NTdWIxNiMyKDdMQX5Ra2g7RHEmL0hCMClsUHpWIVhKezRXODd5bz46NENsLjZ4QnJVeyJ+T29XKylMaVBSKzQp''@;'; put 'put ''Y1AlezMkPkN9M1hDalNeRGVxPENuRHN2djJxS1kjOl5ib2lYOysyNDlxMX5AflhRUTlyNEJ9IjdnTz0qNTR2OSp1b21UfGRFR0JHSi9PLmg0Pm8qPnZPJldrfSlRTUB1OHJLaGxuaVpyVyxDTCpxfm1qSyZJaTA0QGE+MkpoOTQmWlNRazRFZjxFI3ZGQVlKP1VxekpZWEp9RXxRMjl+c0V7X3Ip''@;'; put 'put ''dXt5SCV7RGM5YWFqOGsjfUpiR09aIlJGRkRlIylLaFBbYkUsKVlgO15rc1FzKGx3P0k5InBrKlcwfUMibz0mdkZJSE8zQH4wflQlWFR7I2lyYDdFJEErS092WEEjTDFhdiwrUEoiIyhEcHZSK2MvbWg4VyI9Y1Z2am5SMjFUTj50PD9sTGt4aFB7UiYiclYxe28rOVlpNWlBXldTOEVhZkhqYmlC''@;'; put 'put ''WzElQ3VUV3BgRmxVXi5OJnllVS9VY0RnZUlXMHxmUGJEcS4qLChHISE5YHIkNXM8QXNlR1NNYUBAaStqUCFCWm4rVlFvN01CX000MnY0ZkMkVSlhVmQqIWk8OCZmMllbRGEhR2pZT0siV3lqX1JlOSwzSHNRPS4yRTxvcnNMOldwMH16TCl8ZEFaQjdqeVB6RCxPPT40eEJeNWN1UHg5S35fLF95''@;'; put 'put ''NUx8OltwIWw0eVkuTD53e01FcklkdVBwWCkxWWpHJX5+NVZqJUVhPGJvTHh5QXZZXXN5VCNTZ1UwczR6Q1pRT2EqLjdqWUskPCssd1g5KGdXPl9ZO1VXJlNZJW86ZixHTF1QJWYyXkorSndsTEkkTEZQcHdAWEMpQjpDRV9MbClTaWkyNGZUKlpfKEtwLlZyc0gvdVh7eUZtQmpXa0RsNzd+ZCs8''@;'; put 'put ''cVtScF9PS2dNbUptZS9FdWdvZV9FKXUoSSx6eTg4QzBRPTVrMFNYLEpONFZKJigvOmsvXmFpWz1pM3ZWTUhQWmYmLFJvVF1NRmVSKlFGUGtiSzREVCxtfSJEWWQyQ0owKTo4eF1eO10mfFd3eWEsUXJqQVc3SjQvInhBZ2tkbHZiR0JrVigkcWlBNVQzckolW01mSl85YUU0MmwrSDRJVFdASTlV''@;'; put 'put ''W0tYTkRKWkFgO1RBTCtjTlR3Tjh8RyhFc2ZabFIiRnZTMmwhaT5xOCg2UEZvdCF1dUB9alZxd2FRaGYqQjVhXzxBPzp3SyVqN2M4UDUqVkwqfktxNH1SKFM0enk2MTNTTlVzfihATH5ndDNLLzszbz9JZ2VIcDF4SFpbcCQ5QixHaHgjRkFLSUUhfm4uZE1JMChffGV8aWxvSiUyNlhEQSFgRV9V''@;'; put 'put ''QFRnaEhvaUdRZjp1VVZsJW1XRkZVW1N5VDgqKWtbZmk0dEYkXWZZYU9SfD1YJkgwcGQsQV9Va2ZxKToxY3t5OFpfUDYmSitSZSZRcHRQcXdEa3JhP2FdUlFMMStbMjN7cyVaaHBofkVDaXs/OXJ9az4zOFRsNCJpMEJ9amBlcWByZD82cXtBeyNPblEhY3JSO3A1e3V+QzNWVn5VL11XUGxTcyNp''@;'; put 'put ''Om0pZSJ+d1E+PF9BRGBPRXxWSH0uOXgxUWdWVVRATCpEZm4iTVp7fEImZykzPXdIc1FYby57IV4xOU8hT3oudSxDKnZQL2t7NU5UWUBIMy9WXVR8X3FMQXslKy52eDVBJEBHS0h+fW1gKnJXSCYsbiNUYXp2dVVrNENDPmh9THFSRSEpIypNRjM5WkQ/KnluOEVXWTleVGYpRDE4M0hpfn1oWkdx''@;'; put 'put ''aXw+eEc9b0p2OU56eWMuMTs/OlghaCZNMWsrOlZdLnUzZFA3d1lZL0NkJW4yJTJ9Y0ZuczVBS3hxKFcsPVtPVVIjO3hRaHpnZ1R2PzMxajlXQG0rSjdvSy8wKUpebj8sKjlhYl5GaH47R0lsKjh3NXlhUyo5I0k4cDZUVG9oKUtgL0dCPShtK1FGK3pkazFkR0oqYns4anFsM3ZlJX0sKmRbMjtu''@;'; put 'put ''UVBaPDp9YlkpNjd4VEBGO2M0NDhpI2RGZ09yYUUwaGlgRGJxViVbTDNba3EyfEV3Zjhaa0VodVsrNS83Vy5bPFosVD1Lb1A5XmEiJiFJdElKI15MdnUiYzJ8YTxeOmx5TDtsQUo2cFtKd0k9T3wqKjgpS3hbQFlRbl51cCs6eXkofkolcSNeI3BTRkpwPEtQRilQeUwhdXRAP3ZePUNuZ25aLmxe''@;'; put 'put ''UlRudXtNUiNtcUZ6aH1sWSU6K0oyajtIYkZSXSZHQjJfPV9TU2QzMXBJWzl1ZENYQF5ELF86MFQuSFszTTZ5IyxlcT0vLi9kKSVIaF90clF8T3JgXmtQOS5GMksudWRydUFSN2ckN08zQ1BHMEVUQ3tjfT9rXjZ+el58PD5sezdjKllvQ2NsdXhwciRqNWlldnM+R0BDXU0/ckkxJT0+VmlqYmFf''@;'; put 'put ''KHl3QywhcW9ONlpPc2cqRFgjWnFPU0pvW2FYczNMMXc3Iz5aXjRmPEUma0ZKREMsb3Z5ZHBBSXFDe3A2UFlKOVtsXV50QV95YVFDa2NIRWckUVVrUUQ3NClSUj83aWZbV1Y+YFQ6cV51TWpiLFIsKyRJcXdReWcoXW9uWE1FfFBZbzgqPit0aWoiITY3Q3BQfHF2Tk1HYlNKJjoxTy5yYCxbM0Yj''@;'; put 'put ''OmwyTlJRV21sWHQxZEV5R3FHNDlUdz9vN210NFlbNT45IjdNRCk8fF97YT5MPUYmOlRWREE9MTZ+YUY6RGl+UCM0M0BZWHk/MHwzeyVCMmJUUDdadUo3NzwyJHcqVXkueFhOey8yY05OXk1yImglJkdWKS8pc1VZQTN+aGN2dTs7eGRTS08mRjYka1lQMztXeT9vU0pGK2lgRWtLImBgelBSVVUp''@;'; put 'put ''bnUwVk9TaCN7XlQwcDVOT2NvLFJYJlgwNV9MQVQuUVovSVQzPjw1Mjhmbzd9TkhLUnZXXXJDdXdHfVFbPHR8Xn1FSldebEV7eCorKTJlP1FEWTJsZkZEYj9qNmVaKGY3MGklal9FUjVaW1Z9VjlnWVR2XnxMZ2czL3x6cHtFSyZISCgqOXc9cSxIPlF3V0xWN01FQEUpSSQ7L0ZpeTM6TkdPL1Vv''@;'; put 'put ''dnNtXyR7QEd7VVtxW0NWMFRSOT5DVD9gKWZ1RUZ2Vko8SkxQQ0tGWF1tSCk0NjgxfSpsLjxabT0+d0sjJnwqYVpiVEFpLkJ0T1FuKShoKVIxXUh2eyV+d3FVa100IXs3UFlKdHJGaHoleHcrVGJKWGdTKWFUM05eQ0ZRZjNISSpDITEvdHdhKVp4azRWW3o8WylqUSghWTUwfmBkKSgoKHtkU047''@;'; put 'put ''R3p8NFVKbU9IKE0ibChOLmBDIXhZdS9aLDEuPVNETHdSazZBJTVZS01rUUhZVk1rWTdITlVAPXJkNmx1T1hLfXNwPHY5OTVDKi5QJUI+YHZdJVZuYmJpcCx+WUtePz9zYWwwdUp6ezk7TTVdLFtEZCw/emsrbGJpfHJuWFVeJj8lTlNhLldmOkhIVUMpVV1xcExCJE4/RkRaMigxayQxVzxHNjZP''@;'; put 'put ''O186WURgME5ILDE8XV0ibVQhOjhiU2BdcTQqSm17TT4rLCQ6I3BxJSE8ViVTb1thTjZMOzZsdE9ST3slbGNbbEVhWGJZVVg6X3NUMmEye0xETV0uVzBGQ3dlU29YLmUzVS8zUU1VOjpQO0sjbml9NGxJQ3JYQDlnKDNTfDd0fClWcVlrMj1iYSVnQklYdjBuM3M0N05KSHptfGwya0NtR0Fwc0gr''@;'; put 'put ''SDtNUl0+dSY1NUF8XlRISl5TRkpeRHd8S21PNj1qZDdSJHM2d0A7VG5KcitZKGdWP1N6ZTkpfiIkaVBdZnVUTSVoZyw8WCFXaX58OGwwRndvTDU/eHxSMVRMQmppO0tyZ349Z3dLeCYwOn1bempMd1pMJmohVDY4MHNOS1EyYiJYSlE5bmRNSXJdeDRZV2NKLChQKV9oI3lgRihUM1hgaWQsZlBu''@;'; put 'put ''cDBNUXwqUjhiI1BIdDllaSFvfG15PWp6WG5LLFNPPDxCI3EwOVA4Ri5RVSFkUnRvIW87eD5PZXkjOzxEbVZkNTJpRUpDb144eFciUGBWek8mQSZLPl1VVWlwPC48PlZfI3kzaSJER3N7ZHc+dGpZVytnQ307Sz55SD5PJFM0Umg3R3klVDV9cHtzW3dVKXJ0Yz0wW3FmaVRyTWdnZXNjMUlXPSpS''@;'; put 'put ''cSVkWTk5U0FMUn5WZ2lDNiM3MSsueHJecWw1cWdwfVk/Ok9XTkRyQldCTE8qcmNOLlRjflQyZz9dbllIVVF4Uy8rc2w/M1NbKVc4Zl16XXtzcS9RRkNrYnVGeXM/WW9GMlRKLnlrJCFfa0xsYURnR3BoRTZiLy8zSCtjYVRMans+eFZxMn1nTH4zJHMpZ2BoXVBFNU9pTFZ4fkwxI0QycHM0OE9M''@;'; put 'put ''YFNkSTJYVDorN3Z0Vn01SDZaXSxeVnhWZDVQaDpkS0tQLzh8JTFXPjRBbTZmKEgrNXwrYG1RcGNWODpVL1FsekZLWSRCeFR6NzJ5TD10UEBEcT11MElIcVRybHBBRSpvUGVrRS5MMENGen54UW4qVTdvLi5bKXh4XlIiRy5oVVkpdFZacj4kRFg/cltsZXNoZXlvMHcobHlLPz4pWihPNV4xVGgm''@;'; put 'put ''cjJ3UWRjQmBhVkNucCE4JnVCbH4oWHRWN0VrMTdrQnZ+Y2Nqb0BxYVc3SlFzNilyVTtuXThOQlk1W3V3dTchNFVseyQ/RiFDSytfQihFVnFAJWA2MncuUTBNa0VZRUozLyZVdl5CNGkkdFNkJStHcm0mPTJGd3JkRmhOVUlDQlN2VGZ1P0lsSiZidE9laD1AQz1DQWNhOSx+RXckWTc6VHQhY2JJ''@;'; put 'put ''eyg7K3JSMSZrclMkJTVVPS54UmdqRCUzY09tPTVCNmp6PmttVVY3Tn5bRyFWR0ByZis1JExKWTZfRHtjZFYrRllQLjx0P194e1prNCZ6akJIeTNMdyYmP2M9JF0pKD9dUDg0ZyNqd1c3TmIvYTMpVGlNZzYuayRJIzJWdGtsOzVHZ0A4WitgcC5ea3VfTyI5YW9zWkIqLlF5eDxASE8uTkZgXSM0''@;'; put 'put ''LEEhLE82SE8+K3pUfCZjOTNbJEhHVSgrUVtqKiE0PUlHTXRdLzwlJm4kNkhkQ0FpN0NJNCpxWFhMPmNPL3dpKnA4KC4yaWErOXc6JEwxIUFtdnVpU09SPHliTF00YldpOz1jRypkaV1zc3BSS31tMW5mMVcpO1Q8WjRRfSJsKzo0SnRCKilnVSkxbz07dTdqQnlKS0YuPytuPjV+c01mR3NvXVpK''@;'; put 'put ''TFg1OSEwJmxTLHJ6Z2VINGpZNVskISokaWoufGw+THB1bFFAUU1Dc3tVImFDeVBHIn0/Tzw2TUpqYj5ralBnX3ZwM3xhQVYvcWBxPXhqMUUxX1IuSXEoP1QyZW1RcjhuXUM6Pm5eVDYiZShJcCM0bSt+MyZLL1N3Q0FrOzxgKDAzb3s2SXdgRzRZV1k3Yj9tU21bezghVl09Om5zWXdRZTVwSzBg''@;'; put 'put ''RTltU0ZXWSp9T2AoLCRbVF05QlA6aSpHTm1QYF9xIXlOUm48R0MvOWQ9eW4iOj8sfEtCXyZaZn5fMyJmRXtzLlIodjd4d09QTExnSiN7UT9DYUc/JmtuPzNfa19JQ3BtezVyPncoWllKbGksOEZJLllKfUh1K3p5KitVblpJNXklNFBiTEw1PjcsVVNrIzJYTHlJa0V1Ozt1SChZelkmM0ddRXoq''@;'; put 'put ''ZShWY19PIXgxSWhGRCRZemRaTUQlIXJBdkh+VmhKU1ghOG82R2B1bTZ4ZTo5PGclZ0l0Ril6XykzJWFNIVlrdHxBO25IeTBqIXB2MEAuOUAsO0NzRDlZcSRddypZVFErYURkXiF5RTZ6N2Nlbz9oZ1dmUGtUWlFgOWZCeTJLWlJybUQvKTlyeihze0NWajdKK2dAVGROQTBEfT5VJmJjXy87XjNb''@;'; put 'put ''aXVJRzsrK3JiVTtLdihnPU1IRFQ/MzFvNnRMWD8uZ1hyJklGSiRXSSxXPXNhMzx6cSorPH4rQ2pFWWApKEpKUElfL31eS3RtdCkmUC4pQEBEalV9PVhack8zSk8mI3VEJEVPXUk9PH4sK0MiXVs5IkQoKGopNDhxfXZEeFckPT5MciYqVCliKTt0PlQ3dW4wMXF5SE42cGNpUT1bIiVfZkFKZClK''@;'; put 'put ''R0BtKzQlPlBtdEZ0Zk9BMVNdVnZCWCt0JSxrXl0jJnpVLmZve2lLVV59QSkrbkMjKn1fXT46JHgkJWl5eWE+Oj1bUGE9NiglKGA+PlhMfDs/R1I+QDhQNmNTXyQmK34lS1p1dytmQyEuUUE5KVhQRXFWRjw1eUxheHxTUDc9JDRJRjcmYm1EIzkwZj9sSjA5QGsuIjcrVVtDdDBbcEU1c1Zga3M/''@;'; put 'put ''RkJmLG9DXmc7cCQqPCJ3e01yYm1IRltBQkM/PllLaVJPblVHUDduV2xWUjhTXU8/Wi4wVi9ELipzaE1dNWtwXytmeDFuQE8oc2w0Y2Voejp8K3JQMygudz5aNWc1eXw6byk/InE5Rk9tNWF1IUFFd1pCKDh9aXxZWGpkYF8ueFJ6JkU1LFtzeGQ3Z0l6XU9oUj95Mn5FbGlZOUwzQlM+VWJHQ30u''@;'; put 'put ''JVlEWnFNRGM0aFZDan0/WnxRTnNtRDswSHFBdkpnP0hWSzJQSyFQbW5YJEMjNGBedk9yfnQ/XnQ/bWZEXlhCXnVEZH5bImFmeFhOdVJPaWYwYCxBdjU/QE1eSmBLIlZIaGhpJmRDTGFhZVdTPipuWSQzQHJ7SS5MbjNLYG9MZ0U+I2BfKCZIQnFfeVZCKD9vK3R0aD9SOlcqOCl8VTolRkpCZDwi''@;'; put 'put ''cHNyZlJed3ZOYmh3IS4/KFl5QkNZZWk1IT4lc1hlbW5zIkh2cG49MzVje3YxOmYwWSE1akxgXVMlW0xGSHR4IjsjSWBNWSVQM1ZfR2pSdjAhSUZpJkU9RDhPNlF1YHRnWkNjN2FuX2M3d1gkMWtxKyFpUFpJWmpyV35fKXFvTCh4VFNIaFpBZ2NNYVJ7JSRISkpTUHROVSR5RWdWdXI5WkJKbVcz''@;'; put 'put ''TzBJTUFlNXBeLzJFI3RtTFp7P048RToxdH0reW8/VC5oX3VHXmA1dmclLz98QmR8ciZ3W10sckYiaEZsRkIkc3YvTDhpJX5vW0pjL3xqNXBMJjpzUmZFS0ZCRCJfUm1YJVI4aHNYUiQuam8vaDxbMC5gUU9tdVQmQnM+RWZiUjohLiR2bih0WFhKP0haa0lBZ2B+Z28raUpBNkhiQjtlJlhHLCo5''@;'; put 'put ''QUZzZTp9IkNQZGZyV3x9VS9qdXdefVlPZFBeJn5OYjUsfTgmVjUmel1JITZna2F4bzZfQi5ARFs2a20sfUE2TXJDO3tZX0hDaF51Tl9pSkpWcT0zQzpGbmh6dG9LMi48W0B2dVhWWGJ1QDhMRWd0YWxvPjdefCZCSEtaemp6KX1QfHY0KX03aVJAZSk9bl9wWmlNSWwvVjBWJWAoLkRVcToiRD10''@;'; put 'put ''bTN5b3cpRyhWbypCNDVbL3ZPOXxmQyprRjlmKDx9JV1mYlV6QnVmPllTLn1ubFBoW0dfVF5hVEA/WGFYQUd2QGZ5eGVzSmUmUStHVWMyXlY6OmplSiY5aH0ufCszMjE4JGJkaTBlPGEoUCRhXm8zTS9NMTJPOVJ0ZUgrMXo7cTZ6YktiUD09UyUmYlo7cTxZVXZYYktmKypGP3czbEpIcF9ET0A5''@;'; put 'put ''SiR0cHswPyx+QzBud3V9Y2NdR3hAT21+c1dUeTZ4bENKY0diVSxOcnYiayF3Y046dUFkOmAmdTk4QnIzcDlmbjdEfEN5b3twdm8wfEpfPj9vIkYuUExteyY7NDMyKSskRzg9Q2F1KEVFMG04ek11MzY1UislK2NpZFM/Pn17Mi9Re3QraWFQNzNkZE40IU9wSG1jWjZPW1pHNkk9djAhd0FkN1o/''@;'; put 'put ''OzBLc1ROeHBeWTx2QlYvN0R0PXQwIzx3PGhheyJPTTYzKnNHbElidDp1akViNUdpdkt9X2Q0Rjt3QUQ2K0IrMkRtK2xeY0E8XUczbEtXaTsuY2pEbURyaldfJDsuL2o9MUUiPSYhNkZpZVNVU2hUODF7SUpUWjY7V3tBZlpDKXlSW1shIi96UEQsaUVNK1VybzEoTkxKP0NLTGo9SixhNEM7MlRB''@;'; put 'put ''TDgqJVg/PmFmXWskUTNCaHk0Qk1mYzYkZCU2YDd9KyksYiNIQ3NsKXtmTD90OWxqa1poJWM0JlJVYHQvIlB7MFt7cGA4Un4sa0t9RWdbJlE6WTs7SWlUdyZBNyE/TzoxQSRJUUl9UyhKMShYZTAhbEVyXUxvcz0lPSM7S0lGY250eyx5Z15FaHs+KWc7emlvcVskVEBpU3F4QShVP3ROeV9ISzMq''@;'; put 'put ''KE8zWVY9QSp6UzJ2b2EmVDAlSDdDJjZ+IklXMHZQMSk8LG9hclptPzZZb2s+ZUEuWlR9MSpKSGVlL1ZxTWtda1RTcU87QVF0UX1Qc3tbTiQ3LltQWC9EUn5JS0t2JkJ7cFA6ZHkzcXReeSZCQjBiTFlBcCpTMlVKNCluSW8lKV56QC5fYH0rIUZ0L1RteDV2NSxUKUZaaiw4XkFtaHdvcDtfKXRf''@;'; put 'put ''ZCE8R1UwPXo9RVlIaEw1WmB3dVslciN5eHEqe1kuWG5FXTRQSUk/WFpBdj1mbHA/WyFnTD5OSUR4JDlFdXJlLi5leW01OmwzOU5bZV9uZSR4dXI/Uk9LSWt1Vm1+ISZPKTomTlImdGU7RkxgMWNWKVlMbzVWYixMYUVrZEU0QWRxencoNTttZlVZJnI9SGx+YXx1UCFxSVRBcDA+USRRJD88dmd1''@;'; put 'put ''cFkxOlpIKFBgMzhuRnx2Ji5+M0A3T2RHeXZHJE5zVnBHSHNlfFZHOSF5fWpqWV9hTiViKiY4JHp1UVRFfGJUIVR8d1Y1IV1EbVJON2BaZHJPRXUldkI4QHQ8Oys7M1t2L3BGbiN3Tm95XltzZDhFPmMuKCo4MV5+ZnddYVVPV2h1Qlo8fSx4Tno7PF9lZD5yM2VtKW5oaj5pSEVUezNvVlBWRT54''@;'; put 'put ''V0FrTjhDbWJ7cXI2eURdQTJ2I0FJSDdWaWpFckh8Z3tsV25HaTRgdEhuRzJFVytefFUoeS9jPismOlMzYnVOLFJiSWB8fFhqTFhTSWVdZFo6dyR+c192RkcwPyZjd094ejlHfUsuWyI9U01yYUhkezJbQitUWlJHUnJIe21lOWR4YyVoSE81KkwzO35ibXssPlNaZkVORXE3T3x8florI2p9dTF8''@;'; put 'put ''Jm90PW5eSjVpNE47VkA8RkE8NVQ+aH1xISR8cnxKXURqSSJIQGpnRERIXzBNM09TKUsiISRjVnJYRm87VVppRW0vOFtZSyFMTiJxdGE/QWpgIytYbSQ/eC9xbjh7VCYrKH14MUVRbV4yOEhbbiFhOU9BUiF9eUM7R1shK1QxWzhmS1gvOkwyOGh2K3NubV1AJFkkQk5UUHJVLDcrflliP0NoWyJI''@;'; put 'put ''P3ApNU1PMmVbdCxiMGp4WHNdeW9mQ2B+U1JPU2hFMHYyLzhpWXMqNkNHPXdnfmNpNjB6fj46OGJnSTI4akZ7dFtEQmZdSmJqeTVbc2JBRGQ2a240K0p6ZVdfeF1fWmZCd2gyL0N4anhQN30pLlAjUVJicEMjIyFSSkNLLCx2PHd0fipTOXBgZHddX0RhPXQuM05XdV5gU1szbFNjLnFeTXJTZX1C''@;'; put 'put ''JSgjYT45T0ZgQ0RWdzBJLHBSc0c+KWEsX3h6Zio0JDI3YmlJN1hDcUNnW1liUWB0KVVlOWx8LHdweGclRy8/MXVUdD4qajomY0xObyFjRilTYi47TH1KJjM+QERlTGJKbk9mKSo7dVopQko6P0JiV2lXUlIoPiY/Q2t5UFtVKmVTfkt8VTkqUTcwbWdqODhyPExxciZ1InVhMkxXVCRrbnFwc0hS''@;'; put 'put ''PmdRMzxsR2VRK3pmMmZEcU19IW5ZfFIvUGpEZGxnYHQ0O1A1cFojK04oSmxFNTJAZXBpdyk/c1QsLlokUkQvYWhkaW09dC9aenR3bG91MjFbTFo5RjBdV0ZeRSRFcXNiZUVpcDp6P0hpX0habD8/Y1l4NmxsOWUlNSI2JlFrc2R3Z1l1KDhAWnIhLko3citoVkV5JU5ZRHk7eGE4aWRnI0ZtI3xE''@;'; put 'put ''ck9ZaHx1SWZVTjtXUV8yZFMwJmR8cnwrV2s7VkNaK3tBNyNTdE8+ImRGVXI7dlZ6aVlMRDZJN1phd2JiPDhnZzQqKDpiKGBIaH5NYnBCLmpVWEY4QUR4MiJXWXtgJTFwU3xmWGllcSIzSzBKX1BHM1JjJF1ZL2trbkBsVGM7c25ufUZHPnpDRTpTXXRAZDc5Ind8PmMyXUcqZHtOdkolWV9MIUNl''@;'; put 'put ''UHZ0YnoiT3d8TWwzRV0iZDZ8Ryhpcjc4U35rKk1zTXpxJCkwWHJPVjVOdE1ZRERCeThWTVI5cHlnVkg/SHg4dlNVTWIxdFd4TWxIZiFfWUUmRSRfZiUiSGFUY2U4WVRnKkJlY0FNXnRbcjAhQjVMckYvR1JVfTRVfEYpNWk4VldOTkhqcXQ2Onhxa3FwJmpaWVBhaV00ZyVQRn5kJmdRMHBPRDgq''@;'; put 'put ''KysiTCkoRGhOTDVjY2A9PHxJfChgNGgqKnw0aUUlSS4maUdLUD5iOD5aREg3MTpIRn4qPXJuQElqJjR5MDdOd282Lm87NTtLdDhQZ30xV3JbI0tKUE1vYTJ0N3MoTSttc1lQanBQUyFYV2JaQktzeWdLPGpjSllPcWNGfVVKKXdZNlF9NH5zbXF8WSE8cnlTaD8zOm1QOnp7O2RZRCN5bjdOdDRe''@;'; put 'put ''cT09LEwoTkN1PCRsIXgrJGIoMT1gLGZ1L3U7ej00L3kqTT11OnJVSEk2NiI+OU4sSV91cSg4O0g7Ujt8cWM1d3R3ZihDVmI9QjcpSFlvYUlIZUYuSG1wfGdjcXg9LGh9I30qQjc8TUUzP3doQX5BdG18VnljOD5rPHs9MCFZfnpEKlshLjBfaDNGTzp5NWBBVXE2TjVkJH5BOzBzc3g4KXAoSjlK''@;'; put 'put ''VEFtW0xnbDNZaCYsMmlgWWBxWHJWZ1dQXSF3c3JiWFZrU21wJjhdelcuZ2NAZjVuUWA0fT4lR2BxRkxzIVUxLEJ4LFB3SnsyMFREQmtvL1dBW31lZV9efXRMcVVXOkVJakxGNz8mRGN5QSZlQjV0enhRY3xSMDVCIWVASUhFM0FtPE5DO1JrOnVfeURKei4+P1E7d0dYSWEjeXdXPVhkZHI2Z0Jz''@;'; put 'put ''L2peeSo5S35GSjhHRU8lakxfISVaMHFATkNfU1AhbGNEMHpfXSZXKTQ4TzY3bUN3ZFt+OjM4Oi97KXJ9OUwsS2cuIzhGYDkkTkNKNzVVeXEuPUxUWDgzYmJ7Tm98bFBpVVN7XXtdYG1bKUBWajldeFh2VFRzOHt5T3J0JFBZbyw/KCllLDZOcz5hZkM2ejxuek18dCtFdztYKkFsTCk5UGhHflM8''@;'; put 'put ''SDEpKWBZb0A0YClUellRRWsjKXYrVG0uKnY3Mjk5bVMxSVtOV251ZSM+d2pBdWQyOm4vR2RXImJPUyFvNltfeUc8KHlOajlsW1g4S2UpNDtHMWszKkxiXS54Pj9BeCJDKDVTbkVsVHtjREcsZG5KZ01OfUJvZUhteyhyYWgvMXhbLDBxSVNRR1lNfW4ibGA3Q0RxI1FfKEYsW0JvTWN2RCFgW0lm''@;'; put 'put ''eVZSMklUYkY0IWBZaik6ciVNMVJkR1M8OHp0emxmI3t6K2g1YCFhK1VbTlhEVCpRfDMyO2dKNWd8V3QzN2BpUWlLaDRCUEdNTWI1ISRnIkAoQCFHSTI4JFohTDBJPFJHJVFPKk52bHJoVm9HQmc8NHZDSykzbVBGWFlpRXtrZU81Jm9mdyVgPzNmYGtfcC9XaWtzb1c3THtEMmw9OXkra2s+ITsy''@;'; put 'put ''bzBOe0U2LEs/YmsvUnd0Wz43WzFJUnNJWX5oM1krbyl4T0VAM0VnTSQ1LF5NdkpPPTxJND04YTFBVGNnaHt+YSFMXlshfEtveGl5cjIrPHFXWV50KVlDb058ez9EPDQ4Z0cveVF2TWk3ZXg+ezIkImJtU3B5e2hLVm8leTpbKkwqY0A6OUwjNkVtUX1yRnw5bkJ8TmEvTVcwa2VpYyVWaEBNci96''@;'; put 'put ''NipjOzdlOzZ1cmIhUT1GOF98dF5lVHhbTSVuWkw/KzZbKl16K20/cDpFXU9Mck9PVU9RRFdbI1cyTGo/QFp4TGdNZyohSnNiNVBUaUlhbSgydlJeMn1HYFBwd1RmeXdpRi9+fkp1d3N+YHorIWluTzN2R0xFXj1XIzZuaVtlUzV+VTxbYTIpZSpfZFZuIjhWNXp5NylOPm0jZXdRekBuJiFOJmJ8''@;'; put 'put ''VylaaVM8Z3dIPj9UQSNzPGh6fFF5KTNZWyJqMVl4ZkZ7QHFWeHdhdWQpO0BnUyQqVkAsJDQuVT5DZlcpOjZgUj82LnB0M2VFV3U5a1JFPyJiUCJLYmg/MjpKV2BfTCZ8WlRYYUxJKkFESnVYcFghQyMxPHxZSD1AKE5raSVaT2huWnY/cGAsdjRTI25MaUFCRV4xR1BmIXw2UkEkWDU+ZEF3ZW1h''@;'; put 'put ''fHpkZU19QjE0RUpAP2NpODE6Vk9pI2laWjwqNTB3R0JCTlpXNm1oVj1GYi4mST02R1R6bU9rUHxLN0lRIjhbXUcxQDIxX0N+RV9KYHFKMSxkKmk9ZFFbSzNUU2M/flQhYWhqO0lfYWk6eGhKK2goPkMoTmA/ZGR1T2NaYlNJcmA+LF9FZF4+dj0heFdyL0wyPUtPOG00byI6YyQ8bCo2TiROLkdg''@;'; put 'put ''PzdfK0csUFhFL1hFViQ1aTwoZGxBaSVnQkdeJn5pN1hLPWIjekFZLHVMd205ZH1+In40PTd8e0laL3gpQ3w+YTdhVDNBL35qOCVhPztEW0cwOyJ2MX1MInMmUUppUiRePTYvKSRyfXJ3V1RJdWJtYzZYIThSZVBVLk04QytfbVhKLi4pOjx1PmR3R14rWjlMeXAlN0BJQFhTcl5bOGRSRWtoSTFw''@;'; put 'put ''JV04fnZxSGplWV8oVE9KUXs4amlaKmBYdTZGfCN8bmk2eiVAOy9xI3F6MiMiL1I4bXYvWTRPbyg9dUk2MlE9Izk8Z3BlKDtDMHJlalJ0eCo6akQqaythbWFtXUQwIy5XUiRVNXN3Xjk8JWw5dCw5cjU6blZCQENaP2Q5SksrVWVIKStOK2x7fjVvP3hYN34jX1lEQVQzRSRZTDJHT11xMzZAWCos''@;'; put 'put ''NVRLXSEsOnA1TVE0fGFZRnxpcykqXylHbFMqeVowMmtPN25HVVR6NENQSE80I1NhdG5WO0wsQVRscF1WdHd+YX1DaTBzZ1pYcF5nWXIzent3JG9MTjAsUV85LCtbLlpWa18kbGcrOmdUJUp+XikwQkZRQzt+V2ZbMik6LCZnJGxmWztqOzB6bilvIXU3eihpWGR3ZENHREdIbU0rVXIuPW9+YE4r''@;'; put 'put ''O3JddDxsXWhlfEdFe2M7cjskIWFbbVMpdilNNkB9IyhgUlA+K2FoSFs8KDhxPX5mMVl6ezZBSkBIS2E4M0pObWJkJWBkT29dPStie2xwNXBlLzpPeno/aVFAeWgsfEJVN1R3TG5IWE1kZmV0S1kmQHJ3SVhMeFNZNkVHTUBXPEQ1NitxU3ljYV5WZm0qOFcxfDtWQiFlLyt0dTFNT19XZV98KGt4''@;'; put 'put ''dzJDV0RCc0hvLEdDalhFaD40I3xfOX15ZkV9Vks9eXlmVzc0dF5Hfm1qdSVzdU44Xis3ISx8JnpnODx6ZF1weiklNjUvfEFdenhsMXdaRHYxOzJ6cj9EZmVjQTprQjBGd1NdcXU3IU9XbTN2UEszdzszdW4mUVZLLyFDR3VyNWFYKF4lVjwjSUNxT20pVFAjajVybyxPY0lZX3F2IXt+X2FrL15d''@;'; put 'put ''eTRgfklENTouYXhvYWU1XUtsM0M5SEhdMVdtYy8kIlJ2NWt0SjEmPjt4T21XN0BKWEkka258fHYvbTh0LjpXQnAhUStmQU1ZT2hTWyVHX3ZDeUx1JDQjYSZWVmtvKX5GPzYhfDteXzIpU2p9e1BFQWVDPT4qU1U4UnspXldrQ3o2RC4jQi5PKj9WY20iT1IkVU9la3BvZCxwLCkiQDBsJlBLMyI9''@;'; put 'put ''QT4pekVGPVZ2VWw9TXV8OkBOMT1XMmYkWFA4YGNqa3k3bH4wazkmdHcsRWlXNGFHY3BaOTM0WmBZYXxlfiUiUi42ams+W2xCfn14KHt5ZSh7L0MublFQLEFRfSVAd0VYTj1dTkE0LEdBXXcrUFJXZGtYTXFLLFc2KSEhWWhuc111NDN0TTt+O0YxMzR+dzlsNVRpMyRKO0lMIlVvOE9zISpgfXUo''@;'; put 'put ''I0ZFSWpZRHxqQnpVUllbM0UsOShoNWUyYXh7KkFYcWY3YkpUM14vazNPJDliZlpeSUVsbDIpXlIqTXxCQ0NMdSMiS2BhQVc6Om9TPE5LanRidkFRO3NEcC9IJE1UdjxwS3NlMkU1biEzMmk/OzN1RmtYPnVCejk6PiVxZ29vYkx8YzBHNmAsdVlIUyh9bFdHOjx6PXU7eVdWLzt6IWN2MmVdPW9D''@;'; put 'put ''al0rJnVZU2RjWD5KQWc8X3dfMz46fk4/JlRAeXZVL0tBa0pifXFNPGUuJno3cndPJW43azNJdH4kIkheSSE5ZXR2IWI2cDxnIWZUYEMmUi85I3c1TEBEPiNxP0BgXytoLE03RigjVVokYndZPEptTk81JVc+Vm52XWlKTzxIPjxVY2VfL00uKSYjW2JgWilkRiZuY3xDJjRJVWVUTGY0cm4oNDll''@;'; put 'put ''RFZiJF4rSjo1JE8zQi5BXnZPWiZoMHN8blJGRi57bVpgSEUzVmo8MDhTSl8rJVE3d29vYi5oUWwhKXUidWdDbWZJMUAmZGRAWFN0Xy8iNVVhKjB7ZXlERm4sLypdKVlBQl8/d1pqc3plNE05Wi5DO2t5d1R2dzp9dmQxOUBoPE1iejhLMkpySldsI2ViVGpdUj4mNTB4bEZYfE1qYF48NWt4RiRq''@;'; put 'put ''bGBdbUM+LmY5RyRjV15TQEVJMngjOGI7SlB7LmdTamFVKVFtdXNeeiwpJj5QSXRmXU5xbVVEfk9nWD1TejV7NFs7JmZjfip1U05VUnhaNCtTSkpHfTcvVUNyKllSfExXOig9MGRvMytNVktVP18/MCFHLmQ1OU07WiVONT1mIkg+diZgXV9zMXsjYDd1KDskWy9SQ1NKS2d6dXx4PnxscGMrZnlA''@;'; put 'put ''KlJRXyZMaWpfTSVvfXBoRk9OWV99ZyxJayNmVVh5YT9XcVZFRXZHSkV4M18+ej1qYjckcGdxbW94LjZNZUFRPHglSkNAczE8L1Fbc3EiWT56VDN9PTBhTWh+YzsrUmVFenZaNlNkO2x1QyZAd1JUKEJyJiNYcHVYcnJqb3wjKjE8VywoMGdsZ2YzayJrd3h4VSR6aVE+aFE4KTJAVzZvOTQ/cEBe''@;'; put 'put ''fjhLKjZ3UTR5PDN0fURPSGlqakJPVzdgfGprOGs8U0c8OkprWXNuOjMsa0opQEQyVC5renZ7a2c7bzVqUm1QQVhNP24mIVJgKEk5KDY/ajhDbnJIeH0lOm08MCRueVImSTFiQjJXcyRhcntHfFNJVU05KCE1LjQwNDpqaHBndyFfLyw9Omx8KmRDJkp4KXYjKC4menhIcGRIQD43MGBhITM+XXFQ''@;'; put 'put ''IU9ERzBOYSJ1aj1jaSYrYkRhfTFqX2dlaFM1KExKTDIqayF9JmhMVzhyfE5AOl1XTDpjVTo+R0tPfj4jMVBFcy49IkkzZDE1fn5KLDJ+LEpVLGAjdyRafWVWIS59fFNKUkR+M3U5PVkhMENfaFdxRmVMWHRuMlBwdF1PUEZnRVNMfCR4U1JyKFNISileREh+VDk4NTx6IUFdfnBKWXcvWGp5cXZl''@;'; put 'put ''KHZTeW1GRCY6cks/aDNWJT9iXSokTnlPSW9mMCJAJD89e2ZENjpKNm9rUCUpR0pgbzZ3Jl0pO2F+My59MyFKUUoqa0UjaU0oPUlSVHxAYG5ldDlxN3JrUkpzSn16PVh1TFUmfjJyTT95djE4ZXFITW9jK0RJSGlIMVQxajc8dD9DRkddfE84Z3lQO3kmUHh3diN5O1hSPlNvT0F0KGUkPCp5S2JY''@;'; put 'put ''QkQsMngwTGdCNV55dEtFVn5+OE8qOnxWZXVCeVpUS3liVUJ7TXooaVN7TkBYRFpNWl1uMkhhTW1UQkgydFt7KVBubXQ8IkIrWFoyJigraV9Td0BeZjN0I1p0WGtmSlh8PFt4QjlZK0tZUEYxJFdSc34vZ1FlO20lVVo0I25aPm5lInNnJjowRl4xV3YhK109XzMvbmhXQi8kJXVZK2l+JU4jMkt9''@;'; put 'put ''UWRjQyVFY0QlYDhMInZ7QFpvdzRNTSNob3NIKj0wMSUiTG0/LCN2L21PSllwKC89YFN8WUVRRz0pJDRnYWN1bSk7Y2MoPS8reW9kPi5UOmwzaH0wVkMjVT9XIyw9R1BxVDlgV2cqTncubUxmWl4xKj8+Wk5WT25nZWVyWUpDaWJqa0BjWG9fWHtdUHdDU0hRUU1zL3x9LEl6Si5DTGNMND9bd3Ys''@;'; put 'put ''bjduezhKNzZdZVVfOU12XyEqQ3VseXViM3hhbV1YanMld0t7Z2ZlK3lLXVdxczUjZCEwN2ksTjdbNDhuemJEe2lLJkFQcm44XUVbNSo4VTxOIT5RP1c9N0RleF5CKGJ2OWkhRSNIJFZwdm1ZMHFxPTx2c3YsVz8rfnw2OmlPa1R7d2ZyNkBxS1ttSilqbWlVeFl6RXIjSHtdZWlzW2J1SFN9RCg4''@;'; put 'put ''Nk8va2d6SjwrYkMlS1VzVjIpK3JDUHQwJXo5Nk1gKTkvcWM7a3tEZmVhYzVAXzZoTzImYSx2SjBQISg3c2BKOC41Sl5tSXhgcXdHKE1EZVVPfik/eXZwcjl0fCpyb2xvJHkvb2xWZjhzcDI9cEl1czNOO0oyUXZAW1B+M0RdejFIX3lGMip+SjhFVmhIYD4jITpWUGNRKGNPcDlWP2F+N1taRTJk''@;'; put 'put ''dypEWzUuWl4zUHtiWVltRS44c2lJN0Ezb18rOGFlUmZHZn1ZcypRO3pzdSUyc0hAc1NMbSheWXY5RSwuVl0vT18+OkwqTklyUDhIRE1oLHNWbDcmZilRRTQ2aTJ6NSZwTiQyOkBONFVISiY1KkFOKjAkWm4hNlMrK3xySSs4O1tZcU0yVG9Ld0IzQmVjeS9DYUFaNE88PE1+PzhGMWhpQCVVclZU''@;'; put 'put ''X1gpPTpgb0BZYGpRVnpWRHhITGwiPllFUC4yPnZCPV92Ji9jbzw8ZTFVfXtMKVtBfmU6byxtSk99Ykp0SFZWNF5ydXQ9blpOOmhWckJ0ZU9JdGc4N153d3h1Mkg6ayMwSTdycyt4RlA0ZHZ5KjRzWXVrQXd2Y2ZaM01NSjFDJGspN0V8a1s3dH4xIn45eVttPisiJEhaLkYxR2s3e2hPN0VnU3Vk''@;'; put 'put ''RENES0w4Wy9MUVNYKUNzfXooXWc1W2F2Zlo/MCNsPmRGUGhfP2RTfC5ecVc5ZlFuTE5kejk5M118b3JScjlUWnJeXyxGeTckbDw1bX5LUTNeVFFUOlM5TjB6cz1xd2Rme0ZIOFo/VUxtd1kqIzYqMncuV3BDXjZteHJIcn5kd3ZASyZLUT1QUjRLMykjXXBZcn5iOU5hfk8qMW1GbF9dZ0B9RjR6''@;'; put 'put ''QGcoKClJKG0sdCNEeGovaFZ4OXh5NmV0a2dJPTU6YzVzdlh0SUI3T2hJT1k0ZSFkeDsySHswb3FkWFUoQnFlfDYjaUpJN3dYXXYqK24paXIyZ1BFUWltXV0lMisqOj1LTXg4QThYd1V+bUlydGxlR1IzYEBKYCpmZE0+OXBKRWtBOmkpdWFnczsoQmdVYFVKRmM9VkVOenRpWEBscSFuTyVMPHZP''@;'; put 'put ''WmM7IighRjhmOFI1WW9NTjVgR1hQN2gvZEs9NkJjQlhUfFg3N1FRaiR4ZUZWUnpJYE90SklgYyVtc3g4Zn5Lbj4wd2RLcjhzdmtMdjF1PVg0XkIqcGdqUyRvU2w/PDJJTjY0dlZYRyUxQls/enVCQ1lMbVZUIil2NHhTPzRhPHgqe2JeNGVHVTU0OUpXVEdvYVEvNDVlNkBTR2g8cy8iMDFDeyUr''@;'; put 'put ''dTI4cm0uaTNAQWlbfnUqUS8/Rl9YQX49R0R3TyNteSRgNjA3aFVqTktTfStYPHRXczI2V1duL305ZU9jaGB4NltuO1p7byhucStpMVhrTFJUVT1UKkd5Vml+RHw1IUN3TkEuTERbN3JffUdiSk9HXXtaNkJScDlbUTRjfEJ7a3VROSZqNXlKYnNOMnIwXk1qYGJoZj5Ob3A7KTw+OS8/Qm0wUmJf''@;'; put 'put ''dHVSOEMlTCMkLmg5TEUzN2VjJmh1KUZEKW9OVTcxW0IqaFlBbWl5fipba18mKShBOCFbI35SaWdeMEAsbSkyZWRbSCZMKFF2fDh1P29WODh+fGE1Kz5rUmc1MEM1MGp7ZmNJPnV3NzR3RSpfdTpsb3VrSF1DIXsscGBJbHhjSUN0VU0qcjUicjNAXy9kKlIuVWI4TiFidWpgYFBlQlg3TWNodEAj''@;'; put 'put ''TVJbcEVEVzRVPWpFYmJNYXBeOUt1YmU7cFZiem9QaFNSRmZzfEVdOUk3aDxxX3llOEMiITYxK0l7OXokSDRpMitYYGhBWUZRZV1nWjBhXj9Iayw2L2ovNXo0Lm5PVXxtX2dkXkgpQ1hLKDlDWT5dQ2lNSXA0ezBISlU5cShDLjRrPDtVeUx3VjxTKE83ayJJM2VyYjdzKWY7fmk+NlBqWkZPbGVf''@;'; put 'put ''YmRGJCV2PD9mRiFVUEFWKmFPWiZIPX4qPCJkKTZzWT41I1I7KityLktqKT54TCp5QnVaKVN4dUtafn19cGRTWiQ0fFp7aW9iQ2V5SVYvTVheNm5EYS5vKiRSUypFcTk0cFZkaD1GOEpuYV5MQyZNKERJaFYiPHQmd1NdbUp+RHhMNzN+c3k2fjNkZDloUHBoSVYiZiZ1THFre1lAPWV5cjFITWRT''@;'; put 'put ''InFjOUhgdGRoR3xsQVVNI2xuOnNhW2Z8UD5faDt+YksjUiFRQjJVWVlRQms2Vl12fEJRZUkwQzk9RnUwekRYIyRzMjU/WEZEfHxYLi4heU9gUTVMISZaTGZvT21TK3EkZUZ0SGhgXmkvMlFQKWt8OThFe0VBe2ksIXgxKnB4JjdIfSluNTZnRnMqdD0qaU9rISJ8TGJHM2orMFN1JD1eYGtZVT9M''@;'; put 'put ''SVB3cnVOeTU1M1N5SGI1Ijo4Jk9jTkwzL1kwdXNWSEtqJC4oZGE1eGZ0SDtBTGdxN3JeelpYWGkpW0NFdT9beUB3VHhGSE5rTzVpTldheTtdeEpAdClyfjxCWURRTiV3OEF6VExOY2liYitpUTVJP3ZXKl5DLkJoWHYxJkA6MyI/ayxVPH5Wazh3QHskMTEsa1A/eD1pMFRJT2B3aWMwd2NbOnEj''@;'; put 'put ''Mkp5aVZ9ZlVFIUhAWjRHUVEldSNtTlgwJX16c0g1R35LJmY+Y0NaaHAoe1Ala0V+YF95LFtZYH1TWEF8ZUwid2hNaEljS0J9RHJaVyosLmF7O10yXnBKKSJfMnE6IXNdZHh+JUMkI1B5QiQrR2RZY2I8JGJPP3VrWnpsVEQya0leJmJNKThnTHpMVklrflJUTCgkei94KlNBTTtaMl53Pz1GZjQ/''@;'; put 'put ''eXtJcmt3IXYmeShsJDxvOGtWLjw+XUd4JkhDQSNYe0VoT2hTekQ7dFpudFtKK2lZaywjM0Y0OEo+bF5UYWtFLHZ3eDYmRER0ZndKWilSaH5Qal1PJTlqK3FXJjZmMDw2UFVdODtBVVt0ZnNzelpfKlh4MENNcWB+KT0jLDpEJE9TM3Y7dEYlcnRCenkyLmBIRitLOT1FfE5aeFZqVEVfd2csMUUm''@;'; put 'put ''MktbNEc2Zm9DeEVRfS5hZ3dGJmk+Zkhqb3FmSU90dVpNeFRWPHFQV3BPW2MyRms9NVFgOW9renE3SmMzMU0lOEB7YkxofStZJURNS1BPN081RCR+c1srdixhZF5pdjc7fDM5aF0yV2pgeD5fa0xnaSZAfEUuazIwSkdBM3s4R3BDdHBSKmo3cXRVJmY4TV0yRlFTZix9P3x2WlRuNjZGKmYhMk1Z''@;'; put 'put ''aGFLL2JMSiJZYT1IPmo9PjZ3WkosKDAiO0g4MS96RX47cTMlPHY0X1VNQ1t8OWtBQjI7QyFxIlFubVdVbEZRWWhdUCZgeipsSUhTXlEkdGpNNGhVYG5LK31rVU5OfVFVUXZoTHdIMFBNcDBUT2tuXnBIbl88WmFyL3o7aCM+Rl4mQmUjMXJJIU1DVituYixsTkdxIXJvcikiSk9IX1J0YiYyR1Jq''@;'; put 'put ''KUVXcylrTU93Njt9Q0d8JWZITCgjZzZgT2o4eXBzK3YsVEN7Y3pOTX5fWEk1S0IkeCpsO0VqPVpeI2tbeyYwSXF0OUxoezNaJiZ+ciRNZm89fTUqX012RHxoTkBxSWJ3blhfNnQ0JjIxd0FrRmJQNi83djIsW29+UlFCTVEoRGdNYU5TZDdxYyNeTlVjPnArYmY3dlZSTG0hej5qOFo/LE15LDg2''@;'; put 'put ''clpZZV8xJTlqJjVbYVVVV0o/ISFQM34sTjIwRDBnL3IrYlZ4W2gsLHJnTT1sPGpMLE9JIS8sRSpgIn4yfE5GYnpbM1BCI252VGMhaUwpQ3Zjcyw+cSg4TTA3VjRDcGZdPDVXaGZdVmNANEp9aUh8P0lZbCplP1JMWHRAWyM5QlQhakp6c2I5YDhDVHB+MnZ9RihvW0c5Q2UxXi4xdyEhayZhQy9K''@;'; put 'put ''SV1nT21GcHZ3ZX1dTFNXbiRSYXF2KlNsdE0kcl1HSnl9aztleHc2Wkowcy8lQlF5Ml1OVSMpVG17enNYYXU4IlN6QHxjeGJxRy8uTSo0PDUvWmxuJkMzKy4mVz8iczlqRk1HLkYxWD0rdSlpeDVJZW5CL25bOUJNPnY/cix1YTZfdFlrc2JNX2I1QkQ0XzlORyxke19EfVpOeSombEZQRW9jNDg6''@;'; put 'put ''MXMoUGhSayF4Jitte24qN2YsUWYpbF5vWDN7dyprZ01YUDNUSH18ZFU+czUlOXZScUVAVCtvWGpHLkNGRFo0KmMuNlQwbEU7cXtoPnFobFtzMHljbyUvaVhKPFYxY1MkN3w+LCR3fkRnPjFUWUwoJkhEX00+WTVMZl1taE5qdEw1RGhGXS83Pn49dT5lX3QuWz9MK0F+WSZeMzJ8UyxSditEcSxk''@;'; put 'put ''Q2B5THRPOF5OMkMrKEdDUFExWCFgMzkzOSJnR3dMJlJ1Z3k3QUB2XlBpM3hnZSJJfndMNj5dOnh6TGpsQSpxa3RVT1lCJihxVV9ZeWskKGlkP1ksMShWcGNdLjpHW2whVHp3JTU3bHxLVVY6bk00RSl+YUR3IndBJUs1aXllQzUiVmJCOVluY1J4ckIreDp1Ukg6JVYzOFc0Uz1uVDpCUnJuUkEy''@;'; put 'put ''LlhGfjhaJVJRTF50T2gxOWFHUSU+JlRyVCEsNDo9Q1p7Q0Jmb0E0Z3UzWCpzPWM9OVNaW1AxPjBDQi9wfXd7cDcqImMrQnNzRmh2YmAjVkteR0JtdkBqWE49ZjA3azVgMXhRd0Y+OSlUNDl6YXVhQnNWO29rRWZ9SlJLI04uTzReYltyWGJDMVNhOVU+ezdxdGFVO3FTYUpEJT99NUd+YXBOZ21m''@;'; put 'put ''S1BARU9AVGklZzp1R11hNDNLV09kU2daOjJGLGRERk13ZmN3UXxKP1VhXzR+cCt1U2F7ITQoVDhjO0ZAUCRFXi4oKHFCOip3OipPYiJLJXhPTDw9RylHTW80bUhEMks8SzVaKjpWVGlqbVQ5VTpCXmp0fEVkeWtnXyhhM2l1JUpfRlVBejNCaS5CWHpNMmh6I0A7NUM9bThQN0l+SS8jVToqQlAk''@;'; put 'put ''eHF9d0wiUXF9MUlbcDtRRFU5MnI6R2U5d3RWLmxpRyxpOC9GWSRJSTQ1eD9vRDVpYHc4eEx4ZjAqN3EkbypnLmtHciMwa3g8Uys9d3FETFhZPmFUc2hkLlJhJnp2Y25wTV91Uz1DOTI8WGpIejdbcnpYfmU5ZF5bXlpLbDJXdnVWci9zWnxnS0J0RFlLUiFEfCJAOUVwdFUyRHpWRH5Sd04/dDVH''@;'; put 'put ''KSUra0BMIjRRT10pJVJYMF5eSyRCIypWeERwVDxeIWJlN3w9REFQMWdrMCZCTjJBKFhbWVUoL1JFW1JkbXtTY3gsRyg/LyQ3WFFtfUMrU0QzPlFmSmciI3N6bys8KjozRWp9JU5JImQsKjExRzMkSG15cGtxTFN4I1tldF0zUEIjMn1RUlNfKzJCQ3hyfFFzV1tSXmF1dDc9QXtsL2NzP3pCdWxt''@;'; put 'put ''R0U2QHt+UCFGYnJpZ3BpPmYqZldgbipGMFsoZzcwT2dlTUhIfHx3KVdOLkFPPnMkUTtMTDVDYjQ5dEV2Y0p7KXR9IkRJfGxdYGVCcUBWd0VIeGdAb0c8NytOZSspeWEkT2NWOX1jKCM0eVQ7TE9RKDtDIVNnMWxLOHg2ZUljRGA8ZU9CJFB4dDore29Bcnt4QGlCcy9RV2AhLmo4e348N3xzMDQi''@;'; put 'put ''XkMsK0huKU1HSHNdSiIqPjYlXixsIU44YGJbRCpyckhua1YlQkZlWncjRFhnNl1MS05QM2skKWo2L3UqWT5sbCgzV0lxJiFvRnU5NEp6KkB5NFBvfnslUGZiQCt2clh7dXpdMiJvZHRNJkNmVUUlVkZxIzFMdldrQUNTVHQ7bStxQyg/d2NLSDN4Mk8oO1hoVnRNSWpCVUpQKkxKWnBHPkImN1I0''@;'; put 'put ''JUZTJkgvbHs5ZXh7NyshK3l5OEhDITFfSihXYyw5KFN6WEMpWmg0O1EofSEmcW81S09HTGQ2eUopZSJDdF1HTGR2ai55TGcpI3E+c2pqfkZDd0c+bVhuNn0wLFRIQDdgeTl3SSpTaGpXSz1RdSIyYU1XalQmKEdTdjkrQzFkWkkwRmNuSkJDbW9DJk0oLDFrfis8djBhLkN0W1l4QzBiM0hpfCVM''@;'; put 'put ''ZH1jcnd8dntqXVFiI1NtNkVVVXF9MyhfXUxCXXxXVGQoaDhPUTRfa2BzVmo5WldtVmdoanZaeDMjUDVVOWlwTip1cWJyfDcmNlNZRFVfQDlbKCZhKjFrW0JXXVIyKSN7cUoiTl1UOlQqYmBqWlFEa2t5JWtpIWlTIWc9M09lLmhUKnpJS14kQ3UrdU97eUBHc2VNP15OMkcwTHp6PG1Ka0djLm58''@;'; put 'put ''WUBjM1F1cUB9UGNHXVteO1J0TVFZQUYvLH1OSTY0enJfMTRMYiQ7OGdFTU5hNz48RCMqIkNDNnI3IjhGNzVKYWRISy5WdzZsUUt5X2g8XWl5diFXamx5PC5SeypYY2dYUnQrVjUleWskayU7WzhLNjVJV1o0NTVofWlXP19VZSlnRUZafCxEPWY+QHFHOG12UXVQXnNmLkF5dFFMaTFzQDsrQnZm''@;'; put 'put ''Z2pWdiNmVkBER1BqdmEvJjxlfjJHJUhsVjoqQURkQmk7fTdvVV9sIXMmTGgmYzIhL05DPUtlSH1TUHg8bk9+STVKdmFRVGtyKClVJjAsYmR0RU5oM3dyc2c1cm5SPntTdkQ7JihqUDshTkdEJCZ+WzM+QE1NU1FCK0AjQF03PjVZfl52SytsP3I1JU9lcHB9OmhsInZ8KW84fTF5QikhVzIhaWIl''@;'; put 'put ''fVtWcFpMWFhYM2A8TXE7JXF+bSx2Mj1Jbks8PzsjdmBnW045cG54Si9aMWVEJTRjd3MjQDVWcmQsRX5rNkAhOXIyJGdOPk0oJTI2RUBRTSxJSHtZJW1FWlY8W1tvJUBkeURdMj4+TVlQaD4wMDgjQTtGOCNYSj5AZUVSeWd3dWg1dmA4S1lMaFsmaVRWZHN5e28rPjRPKUVKUztjWys7R2h+OGBt''@;'; put 'put ''amRvNlFzNWZFJnpfXnxFcV8iUSNmN2R4QVM5bjVCXl5yVX0pI2M3KDBjVFZhUl93bVdUSVhMay9bOi5YKjYiTXJ5YiZ6XkhZbncpJihdZkwvb3ZpUVE4dHFNeiMhVVEqbUhRTjUpNzE6Jm9kUnIzLGtxUGkuay5pQW5ERWBxU29eNDB1S2hsM2p9Ln41figzLHxsX1BWPVNwdEQ3JHc0dU1QNXg3''@;'; put 'put ''WEReajdqZypMNyVuZV1bRDd+dDRHem8jWW9ialhic2ddaDxqaDBZViU1LnNwWHtgazc+emQ5bWBNM11CYT1+TTNxM2FaSyhRU0ZSU1orKUBZMCQqJGhLXzQ+RltSWFl1a2wqX1FdeG5rZjBlSSRlJCVHNGV2OiZfLlE3VkV4NU9WL3Z5NnVJQVNaWCh8KXEwYjFJaDJ8WHBTVEheOTZBNlpVPkt9''@;'; put 'put ''I3hqcGwjPWtwam5AZEwuQXJRZXtdVmI7JTVsdlcoNjFqSFpeLCoxMy5fTmVLOHlJVjVpa304KzN3PG10Q040OEFpKHJOLkZkdytHRH1EQT8ldy95LHVkR195NEYlKWZRWSExeCRTXilMRihXdWRiY31RU3hJOzBpUEFWVHt5SWVvNHM3NCxQN11EUUIxKH16Omdta1hjJFdAKV82NGxtR0lUYW49''@;'; put 'put ''N1MqZGptJnRVYDM2Ny5KMXdTMV1FRkk6e0VHY1kqZygmYjA7RyYkNnxrMjgiTn14LmhTTFJebVNfZHlIWyNeOSpfcVppMEAiKFQhbSxtLlt5OCpXKUprOUxRXTxuIi9ISUtKbilDakQmfUIsaT8zT0lQIUV6JiQuSl48VUF2YUBFTzlYXUE4JVdrZ2Ijb3Jve1c6SXVxJn1DMVFYOGQ7Nzl2K29a''@;'; put 'put ''cEZ7MShBSFpGT34sYzczYUI6KVZETH0vUWxFakVvYjIvJlckfjQiMHR+XkFZeDl6fjdDOCFXOiVDVDBRPklRMnlNVTFOQ0laQDpZYExsISQ1SzVmWyhMSTo1UF92YWxMQG9MSHwuSylXRWp+dz5xWUYpOmcxJWQ8Qn0zcSNBUThoTT0uVjhdRnJNbzFwQ2NDQkJWY1Y3Ul9JekkrPEpuYWVMVTlo''@;'; put 'put ''PjZ9dyZfK0BIck1jfT4rbGAmZz1vI3QsVUlwcUM9d0s4WDB0azs1SWBQMGVfRFNMNz8lSSI2ajZzUWVQJWFrWk5iV2BLc1clYTVSZGlab1llSShOK2VVMkQwalVZX05AMUk2cElDZ0QyYXpRI052OWliVF8pWHlOLz1vMm9yZldjZWZCS2FvNk9VdjhZKVt1KV8+bj8+LztLND8jNGFzXUhmNH1g''@;'; put 'put ''VS4+a3J9WXpbaX48Mn4qbVFOdlc2KX5LTHtfcVFWT0AoUCRJLmYrb3AvZTpEZnp5LnUmUld8dX1rMFhEZkgjVCxVd2Y0bzUkQyY6JiladCRHPVRiOyxoelVSaUVSclBxX2MrOExjVSo+TEJVT0J1NExGaDAjSzUqSiV3QkclNylmPHs4UHVIZX1WNyNfW1JadC8rOVRSemMlQDtSdCp5aUVyZUsm''@;'; put 'put ''emMoYUl8JllhclgjKiM2VjV2VjoxbmR0SjttKSkiayRoX2J8UlcyQURBbXJwbkZZKEksRDdXZjRyXms2clR9d2A0QyhYaEsqTkk0bT8qIU4rfEc2RngoT0V2cUIqQFYoKkI4aGBdIX5gUS9pb19dIjcpNGNGRkw5NEk1KXN2bCFteGg2JTgyUERWcU03IzR1dUlQeVooVnsiRTRaVUN7SXspRnQ5''@;'; put 'put ''NGAiQFFPWmNmJV1iUTkvUVlqNFpxRChIfiV9Vj55cWpwU1ddXl91PUVsRFJlMm51W2A9bHlzZ28xeXYqbCY9JnlOYytuODpZS3BHKjw4QiF7L21uezcxUGclMVtJST0/JDpTbl9rIXdVNVlJUXFmaWwqeUJlOHdtKXtRIn4jS3lgJigyVV1ySUxucVh4Rk5IKmt0dDBtfW10cHNrMnlnOVJWVmVC''@;'; put 'put ''ZzFQRzglKXpeTWNdal5mcU5feDwmRXR0fFtuUHVqJnBLfXdZTHBaRFMwMi9hazQ9X1R0YHBJLGt6Miw5TmNmKmFeZ354Omg6UC9Mal5yZFRsX2xkKmIlLHwzeH0qYDl2QEQqcENCPm48RUp5OFUrTSRHTV9YL2gsXVZ2e3R0RDt9bF05fnI0fEFKSUVQVXI0TSZKfCNQc3g/cU1ae15AVU5VSHxa''@;'; put 'put ''JjhMSEVzIlc4WS95dmUxazdjKiExN2YiR01qd0xhREwsO2hAQE1BInhzSSp+MU0lRCxxSURoJnU1UThmPSxob2p0TXxXa08lQkxra0t1dUFzPXJPNUUoW2ByMlVyZ0orQjdCcGBrO11tP2UuflYqTEUxRHBEcGprKCpxMy57QUIyfD1jUzw9M01xYHEsT0Y1Y0khN2M9QUk2UUN1Nlk7NyJLRWZk''@;'; put 'put ''QFFvX1MrTV1ieX1lOjBHeSgzWzspfllqNTF5V2ozOmJre08xdldPYU0pTnBFNTgmMCIrcXBfbEB1flBka2ZqIUNeQ217Izw2YSFnJCg0QD4yYylTfXdZNUZodUs6RzIsZXlYOlFwYz8pX2p5ezs3X0I6PnZIREkvOTY0c25tfCZzVGJmWSFvOjc6bFFDNW9wd1VpO1t8byJYVHN4bSRUaCF3Mnh3''@;'; put 'put ''amtGSX5+OzB1IXJKdDB6ZnNgeEpDZ1UrYTt5RkNAMFF8d0FkYkVwTz0zKF9hd29xYWwhY3tLQElreWxdQm4pKXU8fVkkdUI2T25QcURCUTRbVWNvPksxP0x1aDh9TTtjTi97ZW4vfWxXP1gmK01uSyYkV3RudCY+LEYmLHF0dD9xQihLREJMKjRhZkp6UDskeTkxSlN2THM/R3VgazkyQUtoWi9K''@;'; put 'put ''dlt9KUQiLHZlIVN8KzJyJHM3WEJFQV08SW1bcDcoKl4zRDFpP2NzN3JmUGwqIX5HZX04KjloQlklSXYxXXUxIz1kV2RNWjdYWzhfVFkoaWNjMCtlKGpoRTA7bTBsOl1dKHkxezJRUVIsLk4jKDFuZXlOe0U0WTRfRDNBd2xjNj8/QlV7UmtkL0dZWWV4eXJNcl0rYmUyTXo2eCs7WV5bZ2h2dVY4''@;'; put 'put ''RUA+ZiZeai9hfTp6dzBfRGlpNHAjJldjKVEkc2JbNkxYUGRbdGpZdTc3dUkrKF9adkZ0P2hpPmJJTWZrcn03UmYxZCk6KUpnIUo/JExCSmI1QjAoPipOR2skU2JFJHRIVWA5aTBsVXVBUHteVDtecTk9VklDbkZqdi9iPEk3VV5WeiJJS0BKd3ZFfi58XSEhLzp+KFZfV2VJXXRNQntVdmwweWFK''@;'; put 'put ''RVYkWkloaTJBYWg9SjV6b20rckxbS1EveH1mSWRGdCs3QzVbQVN8XTkiS1d3bTJwZVgvNFd3LkhYdTZIY2l6VHtWam1pdWk2cCIpSkY7RHBLZzBKL11fWWc1YCJRXXNfenZQTil9Tyk8Vi49PGhidiFPU1dMRDxKUSVLOHIyd34xVnd0X0B8PywuLz99eTpUM2lyYE1mbl5YcWhhXWEoY10wWFQx''@;'; put 'put ''QChqQ0g7c1oxRkw+dEZ3YXRqVz1AZyJpWlE5fFhDQDNwVCtlK2JIe0VlK1YiKmRQRkNvcFJPaVBvSDFDQHlJfXhNSz5BL3lFaGlDZUQueWNibW97NHdfRnFmbSR1VXxrNk8zK3VeWE5PKzh5dEJrNFlafXxuMV0jOTxbcW1OXWNVIUxyM2UoTkxoTWRZLHEwYjhoPzEoaUtHTTBfMnRkSEZ6MiRf''@;'; put 'put ''Nldke3h8Uy94Myg6NGZzI0krcXk4M01dW15EflM9NSJWX0lZZkFTITp3PSxwSiNmdHBIRV1eZDp0O3crJWQ1W319OTViMCpvRWA3dXpgMFF+cVRMLkAwVDZZIlU9TXw0fFg0K30/O1IkTEhmSyhCYyZyJVUlcCM4RFtmW1BqPl5JQFMxdXRqWmNZZHwpdFc2LDBkcm9sOllTTkdENXZPfUssRUxF''@;'; put 'put ''JUFbL2RYRTkxej5XOiRvaCREWyIlezZYMmUvTHYhT203aTBMMkBQVThtRi5AMDxzKHJLW35YeS88JCVEdE1jbGNbXm88U0YpIztxc3NtSjJmaGt7fW9obD9NTTZuaC58S0tVcnphQWQ8UCM9ek5NWUpHc2FdaCZCbCo9TzFqdT10fi4yKn1vPHkxQX5zcUJRcSo2c2dQeHxsfSp7LD95XklfIy9F''@;'; put 'put ''fmI0c1tadnNkY1JxazksWDNPWz80biw9VTJodHZWXmFyJENbQzphREJ8bXBtNVZvRV0+VG97QnRkZHRDK0tILz1aUikyNWEsKW8yUyxgVStrIlslbFowIXBnLElCbzQ+Z0YmZnpZUnEsYV19O1I/KnZyVEVDclk4KXp8VntIeXA1blB1ZUV0JTdHeloyWlFaOTImeEUvcndbfU85cWx4Ul0qdGpD''@;'; put 'put ''ZT1lJVoxSCo7PWBDalApWm9ESXNZfmt7ZU8/Uz8wTThSeU1lRU5HY24iO00+QyRhQildJGVLeDhNXlBIMHhlOk9TcEBUTVtacWpGTF9lbkp6b0s6OyM4N35USmosLE5nbmguen53all6T0EiZztNZTEvbzZKOldVYzE3bkwrcSJMcE0mOnRdNmU5fms/LDVQTENTLEB4MUYmcEx0dHZ8WnUlTEkp''@;'; put 'put ''M3A9JioxRytfSU5bc3FEbVZgQ0tqL34yN0wjITYvZ2BkKld1O01tV0dAZzE3cmpzIz5eYXxEI0JibjV+TWNDI1R5ODBTPlghV0JgbmRaYWhVZWV+RGk7ZWIsZSElcTxKZH53OnxCeXFSPWc0XUpbQHxBS3tZUFUzfEcufXl+JVVTYTg1Pn1qYnRhU30kSEMmfnw+JV5lSCssKCZhT2ohXSlhZ1d5''@;'; put 'put ''U0BVWj4lQWdGdUd0V19PW0c1KyNNPT8/Lm4rPjE6X2tCKXBUdEQ4Qy5hWE07JkchM1NvbXhoR2VpTVc5KT8jJnFDKC97T1NvTmxLdlBTQFU9eT08dl1EdDp2Q3tudHR+KyViWyQ7LGhiZ3tPZy9aSk9kZyVvOnxSWSpXWVRJJWVBcV1JcF5FU10lIWlGeFowRV1ueFE/OjpTKmYjRllDdDxfcyxq''@;'; put 'put ''T11heH1afSheb11FXTNtS1VVKXV2NyFRRkxkfWM6fG4qW0MkWFoyRCYlIyNkUzkkZXBnakM7NDNjVy89Kk08XW93dXlbNzNEK3BMTy92d1tPY0Zfa3MpaGZsZDp8PlJhcFtGUE0rQyEuckNhXWY4QE0sKU5Wflp5TnRbckBQand3IV9TIWhITnorZGY5K0tIck1COjBHND5xfkNvMD8vJDNpTzlz''@;'; put 'put ''ImJWU31iR011Z1RsPF4xLylMdDZ9UHk+eDUmI20qbyI4bHBvWmM7d21YYzJmblJNYDZiNW5oezk5PyhRSjp0IXlJPD4qaVlmUG4lcHlHK1AqfXQxWlZqJGNxcW8vX2EmX0VYT2c+Ojd9NHl4Im8idSVBfmJTWVQ9OkZ+O3xYOE5LL0c1Wz0rdTxrRWFHNkJrTy5qcH48PlU5YlRmckg4ZXRmMnsw''@;'; put 'put ''IWVoNV9fbUBFInJVcEZLM3siYG9DNyRzJnJ5QSJ8PUpENk55MlBeTlFKcVkuV2psaW9GPnowe0dLM0leaVMsODxhVmEmMj9HcEdzclFIOypQQSRXM2pOP2lZMEJWWEJRUCYsTVVjI287S3dJLF0xd3tKM2w9aDBBcjJkdjhFaUdaJWMkfjs2JjFrS1hCSnJuL3smI08wantsQCtFNEIuI3ksc285''@;'; put 'put ''VXAmJTwrV3I3RGk6amkzNmVVfmJPcFRAbz82fDQmTUtSemBzJE9iUkIyVjBAIS5kXTBLZF52MW0yI1lKRzZCey9VKittbFV5XkZCMy8scyY3JXFscCVbJlNfSyM5OVI9OzZbW1MhXylxXzkzKW0hV25EbEtIVlNvbTJwdyhNQzdIM0F7e2JDW1UrWTpUaT5zOGBHMXhYVkg8TE80cCZGJCpoZioy''@;'; put 'put ''JkJXOi5xaWwmUE1TLkdiPSZmaCxFKjJ4LlNFQU5HQiRKSG5EWjkodk9INlkwLkZ4YnZPM0BnMDZvMi4oQ3l0Nz8wSklwKzx5cnVTXTdGOmAlY29ZKEFRQmkzPFlrJCpCPE5UYXJ7em0mPnM9RVdVNV1LeCglNy9Ic1doZE9eW00pKH5dYFFbdU9lfn5FPHguVkdpNnJCUT9WXSpabUZkR291RGxu''@;'; put 'put ''MldWWig8VHluX3w7W2w5bFhbdl19cCQ2O3EmJTtadk88WndxZEd0YENxZj1BflAzN29IaEZSPj42OV1sOV46XUlDbXBFY2NxPStQXz9telVZaWVFSEhUWSRMbiZQMUwoT0lvJkcoRU4kMUxbZ0hGe3k6aU9mXiEiLDM9JkVObD99TikmPVRNYVBkSUYycmo/WHBkfDgiUyw/e2o/RD0qSnBkMmo9''@;'; put 'put ''IyIkekVTTn1sJSNFaEZdVXBPJGJ9b0ZiTEoiNmRVPUtxTipMaFhfOEFOSzdBTktoYTpzenI8IyVldVEqVz5nKTl5emIlOW1dSz0iKSk6PXhMOCZ+MzJ+aVV7OzAuNTZHSSk2bDosQyNgdVJuKVkuZFVIKVleNnY2YWA7KmA4N2ZlRk1QUz9pX1ssKktVdU0sVSIwTFlhZ1YsZT5benNdOGdtKShb''@;'; put 'put ''bGRfTUBhQ149X1lLYVo6LHZ5UHU6eGMlMWZ9Y1BkTWFRcmtmMWFtSkVJJUU3NT4hUiw3K0goTVZsZF46MVdhIjIhSTxueXA5NHV6I0I9cDZeZSVQLDBvLGNpKnApdzojcCx4P1J6Yyl0ZlVHUH1fOT07IUVncF5GMnNKOG5ePCZEaHZlWzcweVQyVVtkRiEsTnFVO2FzMikwQFkwM28uJl4qa084''@;'; put 'put ''em9AZGI+MGA9QChmM28hKF9pRT0mKHAsWDdebj9LPHhbUDM2ZmxtbVdyZnxCKCJmNjkpLzsscTttPDMxKzJzdksoUlFuez59RUhuS3ZNKl0xPmg4eyRdb0U+P3p9TlRsQD9dLEJSLHJ5IXhmaF9qYzsmSVYhVTFefjh6OEZrKFhSWDFQS2RFMzguZz5UQDttQm89UFNLRXQxaz9qOSQsME9oZEdJ''@;'; put 'put ''fGtSeGBVXVspclRfckNAaiE5KXAycGY5a0ZPdjt7K1ZsOWp9YXhsSUFxckZbJDxOaWRyYik2Q08jI3xSKSxacFtIY1s6MmpkdmRUaDIuZFU+P314e2IvXkt7NWFiPU05VnVLbyk4Y2B4IU18dHB4KXM8bjwibllmT19sOUdwJTsrfjNWUig3YTorZitfNFVJVjxNIUM8eWtteUxGWHN6IUNTd2ty''@;'; put 'put ''eG8seHs/c3kjPWwwaHxZfiFQLDRvUixbXV9TbHZuMmNfe2F2RD1ZX0YsT3hbOVVDWmhJZkNKMm5sXiopRjFKUXZHQixtaTNfaTBfWzlqZkkuJXJEbSJsKWt+PVVkWX1SLCZ9JkpSOix5LHMlIm1gYXorK3JVej4+bEY2IjVLPiVqW3lAMGs3ZDxnaUxBTyN2MCglXWdMPE1scVR2W3s/RypXaWxq''@;'; put 'put ''ZyZocT9mK0xfZiU6bHgkcXp5ZlJuPG81RjFFbjNIJEI6QkhNd35KTHV7L1F+NjRKIj9wcmAjd1ROZmZoM1VaRTtAWCZbRTpJcj55cmR0LFgyKlFoK0t9eSRJYzUzeyplQTZpTFhJc3taPlpFQDJdJGckTnA9UUk1Wj9AKHE4WTM1cGo2UyUrc1Z7IjtGL2xkYDZFSmtCZkFjZDQmXVUpUFd+e0Mu''@;'; put 'put ''cywuI0NyTE5+bElZYUxacGdLXWtgfj9AUjwqPDw+SC9yQ2JAJENie0lMUlJ7eHRgJVIjbkI6TGZEZzBMOj1eMlclLCliPEs8WkFUITdubCJBQjJGd1g6aWFHbmM2dntMPjJdeU9pa2NWX3ouJTYrMVVOZjRuTm9UO1EreENmNiNxQiFYJkV2bGlMWH1oXmYxUmh7Mjw8Ljk2SkBiKylvOG9uYH5a''@;'; put 'put ''Vkk2YylsQjBtUiFZVyt5ST9nVFRDazhuJTA6Si47c21qYi4laWFtTDAwalh7blVDcmwwMHJsTXMkUWUwYz5CdVFWfD4oX3VTZm1KYmd1UXswbFgrX0ZIQzZJd1F3d3FjcWVwcT9jIiJkZjFgcWN7SzUpNlc7VnBaVUFfcSJdTWkjdl0oYXw9dmJIPVgucjpDKT9zRDppK3lfcTNyJXcyQGF+UXtB''@;'; put 'put ''JV5vXzZxaTZjd1dCWjlKWHZIekhjOUpYdkh6azNAVGlidyFUWSJCL3pwdXBUIik6I2pdTCRRMz1UPzppREVaIlswX0EpPCRfKTIyPmVmYiNOVyFta2NjZF5vWmh6XTooelMxX1QuX2x8dVp+OllGenImWmRkPVdscEpacCpPd081KXBBaVgqMGNKL1dUIUxyZlBLOmp8fSRoenA0TFpjL1dzKEtE''@;'; put 'put ''YU15M1IyWyE1KEpvMnZjYjNRZFA1UVdUZUx1V3poRVBxQ0VQczNWdGgrLjs+Y0l1LHJYTCxAZjpxNllMdlc+fTpNNDo+Y0Q5T0d7VVVQQ2FzR3AyMVAoRF91YStxcD9SeSEoNCRQVks4UUtaKTBhRzBBMmlLWERBT3QzUTFCP2NTTilIJT5sPnEqblUzcX4+fWhuUXRMclg8WEIpYn5SKlVwMHVx''@;'; put 'put ''fWgmRn46V118TiZZb0loM1VIS3NARGl2UTguQi40YkNoJipHL3YrblhfIWI7fmVTRlB4KDdtTX07PHVZRWtIcSkzZi5adGZBMlZOQENEVVhrIiF2dkpIOkxsamk8PVheai80ZnxRdztSPH1gOipSNDB0TjxSVEx1Q2EhZkUmfjhrQElSWHYzN0MwOlo/NVJjPmI0V2BXfXxTYHpfV0hKRylsZWRX''@;'; put 'put ''fU0hIUFgZUxsdTdsUEh3MzNmQ1ZDTF8hSkoydyRHJX07STpXNk0yWGRfNGRnV2tVd1Q8LnxfTWBxd1ZWQFRZKDA/THVRTHZ7ISM5MjY+Oj59YEUlOltlMnV7SkYlazdYPyQoeVp2NygyTTJYfXojfXd9ZUw4NUZNQ3pbb2VUXktgYXhwc0l3PkEqVERWQklzWTA6NlUhW2VOdXQqUipbSDteJEBI''@;'; put 'put ''K1g6eWBwM3p3PnAzQDVXSjJbK29RdktqVjlvUXNIYHArUnl+RUpFYjFaIXhOJThgLFNAS0JZYjMmZHttOGFFWmVNO2llLHpXKG5FT3ZpaDhwbWArVnZPMHhJd3ghYzxWTFNTJWpfZz1JQ21uWy8uL0ZxVCgpTWZgUipvWjlNUmNoYEEzcS5DckA8WGY/R1pXQD4uN1BNcFlNNFJjT09vakU5X0gr''@;'; put 'put ''SXxFQEBPKSVWJX5nMHArejB6PXFEaUhORChLc2FWNnN1ZTZ1cHB3T3RFb1RJbUY2aE9TR0JMcEgre0ticEV4e2klKSQxfHttQj06TkVoa0dKbWlmNlImV2lgM2JOa0U8SVNkX3dmPjFOSFRNajgwXytRYmlrMWAvTVgvN2gjWnJFeWprPjBoJjRHK1EqTWgwQng0Ym8zanpJZ0c6cHczb140VDhM''@;'; put 'put ''Wnl2eCEydj9vcloxe3A6JjVadXg3SiJkWzhvQWdIWDB7b09WM0BKb0wuJWs3bXF1JXQ5ImhxYEZWNi49QEY1XXpDcF5iRWEpQWs0WnVKRGh1fDVDak9eKFheZk5efGJlVUFvbnhOUXo1I1gvYlNOMWc1LlQmNCE5Lnc3RURxVXBFbXohJC5oZS5NU2gwbmRUeGhPZEBnPkwlW2t1XittJXlWcXch''@;'; put 'put ''PzZYdW9dYUJ6VSQmXz9iWC5OaCxGWnxDM0s9USxAKHE1MCtwI1BeLEpKeGsoaj9SN3pnIXN9THBfVX17ejg+fVg6QFJlWy5zL3BjKUMsSmxbaFJmUD0oQGtqSFltVUJTfXhiWFZ7OWpyNWsvMFE0USw8TW4wYV1QKUs2d1pLfUE8RWNpWEY2d0xeeDRtcTh0fSF1PiJWXndnKkRYRF1KcDJjTyRo''@;'; put 'put ''MjRvVWVWaHVPaDBUWnQkdjg5I3I1cFJsJkQ9WGVteD1AI3g5eXs/UGpNMmxiNyJKPWNZTEluSFUqaUlESmJpTlJsRiV6WlVhKTdKSHpub21TI1lSMklbKHxlSmRlQis2JjZrYFthQlBqVHZFOlRpWiYhfXkwKTRNWSxkVjxfP2srbUNVPURhJipuMV9sNV4+OEJaN0xCQzBOL0VeVWtFanpbQD9d''@;'; put 'put ''KWEzRngrOjtWKkQ7eWJCJHBPbXJ7el1kSyRQITImPFZVIkxpM1FJdn4paVJoW1Q0Jml4YFkpZXM/cFshJmQoXy9yN0cuJn1OSChxP1tIPXFLJT8uaVp5M3p7PUA/RHdDPSk6fU9gZ35iQzxdSUJAXzdTaElBQ2YlfSF3PmkveXJmPl5yYiM7MShtbVQhSUJ0bD53eCNYUTNIUSJlYT4hfi9scnpf''@;'; put 'put ''ZnBhfExYMDJfVCJ1L2d6WHBBIUdxIlF9cCZ6JHxsVElfK0BJXmFnSlQrOjEjaDIxU35eZWQ9dm9dZmEsaGJFb2NEKU1ROVZ5KXhpMUVXKT5PREd0OEhpVEJgMF8zOShOZTBILiRKSlh1MWJbQ19GeT9BZzJdYyVpdHppaCsvS0JhXlguK1l7Ql1+a2k8VSxBNm1FWFhkd3xYJTc2LFhHQDxUVEIk''@;'; put 'put ''cHU2KXJ8V1J2XiF9SDBPY3UxYklVYGBfTjM9W3dFdFBIalU8TyZrS0EyUCY1ZWxUMWdtcER4UltGLjw7OE8ldV5dN3YkP1swYWlPUm88NnVfY0xzNENlTCNBTl08ZDM5XV47WFVtci82dHlIN0l0VTVFIndgZmNOJVNSYm44ZzdwT2FyeThPUCQja2xyOVNSO2NxZjFPTDhxW3ouQVRJX0x2dzlZ''@;'; put 'put ''PmRqcHdOOFN5YThEQDp9bT5XcDJCT013YWBneyF0SkJmXnZGJHk7XjQuJnFvKzBqWi5oPVUkdj4qQSkjWyJ8cEZ2Y0NRWXZ1KVZyLj5HZ2Y6fCtATmdIWDMhRGh6SVR9YyhVOGJ8ODtxN0EyYH5UQ1Y7cCgsQ0I3XmRaZWxFYkZiVns8R1lXWEd+OTB+c0ErKk5adHs/bSQsZFB7dW0pIVJuUHhu''@;'; put 'put ''OWAkTU40Rm5rPlRJY3U+Sy9edjlJXzN6fV1nKmE8PCN0ezF7U3kwNzBwREw0YH1dKz0jUEJZIitCaDd8SGQ1RCgmPmouKCsrYDt5LyxNUTNhfD53ZFsjdnw/eGNMUFNXVD83IXxpW2hNc2dNVCk8bkM8ekh3RWpYIXkuYiJDd1hHNC5iSmosRHlSMypKZyxeYF9XcX1MLF5fblVqI0RwcmVxKEtX''@;'; put 'put ''WGVHOUJjUmVTT0NOdWNWIy9bMjBYbXQlSV5RLkl5KUt0OXJjZkp2T1IiKXx6ST57T1QzOHdJWCQheD0zKX5qd3U+S35lSmo2Q3lSdVlqRTA0I1k7W3l0fHFWVmp5Jk40WDgyMlI1OTdQdHRJd0hSc3VoQSskclBiJDtIcVJaZVZKcXVrUk1WRGFlR1h2bWZeOVlJayEyUkJKMUJoIW5POEEmRU5N''@;'; put 'put ''VUAjLjhIYnZbX3s5QHc7REBCJjElVCtPWm8hKjBFaio5XyhURUVjWW89c2N8Qm0rcmY5MzssX3lfM2Ysez40a0xINikqUl41enwxRS9RUStCRzdCX2h3bi5PX3U5TFl8PFBWJkN5dSk8JkE2OH1bZDRJOV9GYDZNMzhUKHBLMjxSIWVqZkRKTj5qX0g8dU9xM1QpVDB8aF8kRDRYOXI/SChsaG9O''@;'; put 'put ''b0RHXlV2M25kYm1vcTlNJX4/ajB8WF0yR29ZOXJuWD9gZSsvRjQpYj4oW3k+KCkxalJqNyxkOS5iJWs1KXgrVUY8bCNqdDB6Jl1LNCkiSF5pTnw/KHZeWjYmS00kdGM3bEM2c1U4UktEVFhGTFNkYnYoU2VhWywjNVNXbEpReiQ9cEZUKGF8Qm5wPnp8NSkka1EmZXQ7RmtrfDNiJnw7P31uKi59''@;'; put 'put ''KVlLLFVGViVeIm5DLzA9bHc4V2VNMElpWGMySltYNHUqd21EUStvbi99QXM/RGl8O0guXj8mYXxtPkoraD4sK3xJS1lwNz83TXIydU8qPndId1JAMTpNWERXPCxnY3Ihe09ESDQ+c2A6RDQ+MmZ8ZDJDenlbRy9MPzZ3MEgoTk99dy8oU2BrcW0/Y1R5RWFYPWpkSnxEPF9kP1d0NUY+LCxeRj43''@;'; put 'put ''cDQhOUo2dW4hKFRrM1BEOStdZEtsN2pLKyRJPWldMnd0KGpuWEx+S3omYmYqO255TWUhVlBiWXVtQmRwcjEqM0NTTChKdV5lcGpeRzFucj9sT0Q3KTt5ellZRCNvcGRMTldZPEtvRF5peHlhanRFTmlJdnIyblJRLz5sbCsrZGBaUTYvYjNoKypBKChIPlldVXhMMjY/e31CZms8VzlZa3hIMVd9''@;'; put 'put ''PDA+azxia3MsOzB7aDhmVHN3UltidEhvO3RfdFkxRXl7YmY0N3VARzVtV1oqKFh3bj8sVWtxeVAlaEBFKiM2YiIwQG0jWVc6Oj9EIWNkbW83Ll5kekN1N3VqU3JGOVtdNE5BSzsxbD4vbWYmWj5KaWRfeGx+LCtxSjJPUTUwPWpyZTRTJkBtSTQ1b3BDP0IzMmM7cDFpPV9kISMhXmp+VX1tbnNw''@;'; put 'put ''SysqXjNNczZWXjNwKl9nYHRVKW84WDJ6UjIzWlRrR3I7cXpWfjc2fCV8SVl1M11+YkFYcWVSPjZ9MyQmX2RMI01hc0s8dyxlfWYzI3F3WmZeJSV5e1RSO2ZPZ0hYaUkoKkZtQGEyfT5jNClJUV4vYn1jQDU0Ny9sfSNHc2pIKi8jTVFwZClzQ2g8VX1xVldjQzRre0RGeTldalhWemp4NkpdN3sv''@;'; put 'put ''VUR5LjFaYzY8eGBOJHpEeGVSPH11QlF7MGt6T3BlMCYmOE4xMnNIaEgxRnthMj5hOHh0U2BhN0ViMj5hPyFXaGoqMDA+Z285SFJDP3tbPGZwRHlbbSZ8MzMzc3p+cUVtKSo5VkJYITpmJXxlLjcqe35QRHNYJihpTzpqPjMsZHUqME14L21nZWVebn4/akM/S3NnSDRhOmpQU2RlU0gwaDQ4UCFP''@;'; put 'put ''LDVTRHlVZ3VAMzlNQGUpQC9MSyJbO0ZLb0h5elRddlsyRFpNP205Jjs9NG1db098OXtLQzphJDkwNlJ8XV9GLGFTXUUuTksvZ1lVWGQvcF4zQGh2bzEucHcyRkI+dF5rYk5dTERpVnlVITFGX14sP1pAO3wrMG0+Umw4bmtEYzliQFVWZn44YnQoL05nJVBwZXdoUktbNl5uJTd8Xio7LD1eYWhh''@;'; put 'put ''MmZsak9KZVVDMlVlMSZkUGlYRVo4aTYiMkgiKCx0TU1SYXQkbyFYMzo3ImVdZk1hdntBLCYwcmZWSiV7LzxkYjk2Mmw8cGZpOW5YUkRMNClQYCRBYzUxKH47WkYzRHApcm59NUBTYUUxSjt7bkZnWl97bGkiL1BxZUAraElyMSU8Tm9FOSZTXjUlWyRnJlk2UV9ucGIxQy9BdS4va2UiVXRvYDVR''@;'; put 'put ''Nix9Wmxidj5NO3paVXxafWdiV1ZmbU8iNTV1JSFyMypbJW9eTU03VjZpZSNdPipWM35yWD1HOjIvKSg/bC4rWV9WZlc6OW0uZFZmOG9tJHUvZyFGYVk7RGpMa1o7QTtlS043RShOU2tCVjUqTEBVJi5ye156b3gxaChwcTwyOWF+M09HKFspM05Ub0pWQ0NXcmFlWktFLmRVYmsxMkFMVypWJjMr''@;'; put 'put ''fENkRTJIbUtPUlMjbjcvR2FSbzJQcEJqaHhbL2kqMFpyVDpGSEc+ZDkqYHFUSH1jOFFWYHM2fE9rUFBoKy99KDAvNGoxa3YoQF84cV4raWshcn47VD1Ndj4lWk1bL1RdOyhMRExNdz9sSE5SMi9uUVRpRF97fHguW1Z0djRiWikleF8zOjYjflA9LCtkS1I2Vjt1bXdJNlJgRFlBSkh1bHA5eDBO''@;'; put 'put ''YiRwVVhdQ0F6Vk5PJFNCJE9EaGNeQmtZa1NGRjZXLHRsXUM0TDBEWyUzUW8hQztUaW9GUEduK115aWEzS0IsaiQ0WzMzSCo6RWsxSUY0KU9xVndyJE8jMmpPLHRUTUFAITZDNj1QNlJYX0pbWyZDfD08Rm8hY34sKy9aPEJxUEtQXyUiOUJKZ3k9XnM5Xzt+MFcwIyp5eUNvJWM+d00pXyxOYk1S''@;'; put 'put ''XVVRRyhQIl0zQzxsQndGMl5rSXtaaWJOOzJ6RHlpRHg1MFtuUG1lfjwsb0tWK1k+dz9QWUJ9ayRuVUA3WyFGWSx4SiV1Ly9weTxdXW54aTY3cjYudnU2KVhsJkhCQGM3PXd4U2pyQTshZmlhZzVmfnxwc1swNj9ANklKLDJGYFR3VD1zU2wvPVdUP1tCRCJ6Z0tsQ2htLF5ZW254TDx3YWxyWGVO''@;'; put 'put ''MWxyQG14KzJMN3V8TS5DQjQreF5VWE1mV0AhMSxmKT8iO2NoYiVhPVV2P2o9dj9wUzV9X0hARX1vMFFjJT9nTXckb09xbEIuVVV3UixsPU9FUixdQEwlOTVZIXVpcUJjK2M5ZWphbEVDfTZsdDl9PlA9Y2FWOjhyRDgvTm9NTSQ0IzVaWk5hT2F9P28jX0l8V1lhQkR+fU1zPHpgRV5ESCtdXUhU''@;'; put 'put ''bVBMTCxaQFc7VixDPUhldlY5cDc1NllETHE9M1o8azN3UDRwN2FANld5IzIkSXhQXVlda1Z8Q1R7WTRNdF4jT3tZVjlHVjpsTj1LdExgcVU6TiI1XnpWPW9fa1oqR1R9azk8eWhDKEAuLGRXNDNGbiVbMTNKeGMmL2NdTjpwTlRFdjp9O3lEeEFyU3h3K1YmJFQ+Q0JnY0BTYkxkZys8QDkqfjFi''@;'; put 'put ''LGQrSXp5UFlWc3RxSX52KHlzRy9IXz1YeWpLd1IuJnxeU3lYeWJIczZAJHE6YmNkbWw/ekRtZnYyZ1l8Njdjc2V9NyF9ajFZME4hQj8kTjl5Nn50SkdyS2phUlR5e1d6ezEyfW0kLnk9I0d0cTYoTGg3eDpwZkdYfXN4IzhZZnVOWkwsfGhOclJveE1zSkVCPUZta0siX3BGK0BZMC9lfCUpVlQ4''@;'; put 'put ''OXhATnslWipDazVZc3xnTTxPKCpZVHZETVlYaWZ5M2RuTyJsRntReTxyPUY4dSMsQFBKXT5zbXlHW0g5WDxsJG1kcCRbc1Y9QE8jTjNCdUo6bmt3RFc+dzdfNkAsPHBhP0RVPXV9dXgjfEJIdTl3IUAzbzRWQDxONi5OME9EfDwzelN1bkhWVShfZD9HSChMTWhbb01teT4lc3BGdHEpOEltVVIk''@;'; put 'put ''PDl6ZSQ2RVlMdkg8VyZ2dU9sTyVAO1tqN3BCJENyL1IuVFI7IlgmVEQxOUg8KX5gbj5neXp7ZFlhejhYdlt5Mi5gJnZqbS9Vezs1UiVRd3B5OkgkTl0kYWxLcUR1VHl9anh3fnR7ITZ1ak1uVTlNYX1wR292WiM8JEhCPyI1PzR2T3JjVDs2fDV0XUlCNT80dnliYnoyW1VRQDQwSU9PPm8vYiJ8''@;'; put 'put ''Ii96JkIkRiZ+TDcpZHp5PVJORXohIz1kQkgjNyg9bVIjKilNWUdtR1EzJWVxfUg1N29jRCZWb2hbVXg/MEpmTVFDSzBleCRPZG9Mezpkfm0pKGQ+RV1UOGU4YjlKenI4KnxGeml9QV1eTyVJM18pMnJ7WT4lM31dejUyaHRBXyxkeys/S0lWZl1yak8uc3pTQHF1M3JYMSl0P28sc0dVY3Ame0lN''@;'; put 'put ''JH5CN2trI0FnNlNBSCNsa09aSmRPKFB7YUEve2ZHdmUyUDF5fitrQUVmdj9dRyliJG88WzBXaE1hXz17JElweDFKe0hUWyooKV4jSzg+WT56PHspS2xhKixGLmViIXA1VC5yRz5ELkhdVyR5WTprLmxsIz0+bz8+WT56dyZAbi98TnZoJjJqW21HLFoybl1vXV11IV9WRH41R2VhVlhndWB9bTFn''@;'; put 'put ''Z0gzTlJyZjB2eGhUa148JHNobi4+SD1GMElxVWh5fllFNDImYn02RGlTZ3VgdHxTW1FFM190ZiEubHJ3c1VtRGd3Zkg4d1c5MXxWVE1RaVNfXUtEYF0xVGlOZzw4ViI6V31fVylVfFpQLno2MHhoZnw7Yj04JVN7fEB8NiM4WF1IS1gmQFB2I2c4Q2ddKTVSI28oYnNSfm05LChaSkQvWixba0Bp''@;'; put 'put ''Rz5kTD5bdzt7RGRadn4zNkltNWdoIz9BTDljOU5YeTA+aHRaMC5SdzZ2TVdicDB7b0ZudzJsZExsUHtLa05eWVVhRWJZIXdXOC4rTTIlT0cpb1gpTkswKC9ROnNYeWEyV3w3fU97WUAxR21oMFhdbXEqSzVjSFA8c2piRHtfdE9YSXZiZVs+ZCM3UDlfNlVVWGpqbihRal5CP1dLczs4MTN1Q1dO''@;'; put 'put ''SiJdUzYzU2RJZVMkbDpyIW9sZEo3bEsuTG5BOUNeLiJkTV8/JH1+e1E2ell0YCZZWkVeeWhHaEZ2RFRdOjhDS3g+RTJJeU9DOn1VbHFzU3NFL1NvO3V4VXJPNjVZMFhoejZNZlBnNzMzLmJJWV0meSZQPC5aS1FTfSVMYCtIIytsamNdYWJKcUkoJjs/Z25RQlh2P2J8YEpfJCF2WHU4ciVdWWZp''@;'; put 'put ''cWNfbFIoTkRxcj1zLH5MMjNsUlM3cVJkcjFZS3cxJlQ1PSRDO19nd3hVc0EkKEdedW4mWi8heXFATXwhU2pIOiomT3ZGRlN8bXJ5JHw8MHAjdnBnPiJrZm17MVUodSpYYlZiSCghcW9EbTZQPEl6ZCN4V3BnKEsuIVQlOl5tJi9tSlRuYVc6bm9rL1VFLHJqLEFSR1Z8SjkxKU5aUVBZXl9USlkw''@;'; put 'put ''LiFicjx2VFpoO08xQVJJdlV6TVdrQi8ueSZraT1sN1UjYmNReXJvPXZPXzJzPStZeVN3U3ZNKzkhYzRLazsqc2lVOHMhTnd+NCZsXTQpZnxmXSNFNW1eUm59WW5hPUdRbXIiW1R1K1o3V05SfmMsOTxrZiVKezg5ejhNLjMpZ30+VHBPOkAmd1lTZks7XyxUbW1AdSpXezZbU31RPFZVVmRWfSl4''@;'; put 'put ''d316fSYpNClXYmRkM19dciVCa0ohYCRCbUlwcyFVdHsmL055NkZ+QEBfMW9IU1VAbDw2PDZPZlteazpWV2NwTz8qZm5wanlDQkhPfVFmfUVqOmthY1ljW2laeWMmcGFzZlBbMldpYXpdb10zYSVYPFlGW2ghZTk5cURkdC9yXiE/eSRsaCh6Xko5MSFqUTk8XVQlSDpbQGxTVFplWGMpNnR0RVpg''@;'; put 'put ''UEtWZktRS283YDU8bmxpN2IpSnJdUj1tZWMxenhmKUsxTmIhNyV7eF5SNHtucGpPTWRIXWl9WlpkaGNyITxibTVJRWE+eDk/X1A1e0ppKjttPkUsMTZvXVhafjZvXWRIfD98IWJvfU5FPHFTNW1JT0Y9Zj48PCNxSSxZQzolNzZZQkhITGovLEV7KWdTZylhTDkqTnQxU34lUHdSXy50ZjtUNXtu''@;'; put 'put ''YHpOcClILypeZVghXTx8LE1qOTJiMElnJXopRFF4YVFobCQ4OVowNnoqSmo5MjhIM2ZqKmcsVkhfRUk1R1cjZU9QOjA8NlZ3Mj87JlY4KkhsWEkkPCNzVz19XTgmQjI7NnFVJXYxKWEhTUhOOXNPWTVpbCtyW1soL0E0ZXQwcmN+QEB9JlFnQX1TUU14UWh7L352blNueG9RSncrJTNMR2pxWmYh''@;'; put 'put ''VVpnUlVHfnBaeyY5UEdMRW54KGkhSWxNYFRTLm4qQHkjfSU3dTZYbykiVTxlMVVoRURWIUYubiNOZ3NALD8qWHY9Onl0OTpOLlE4QE9sZ25UcyZWOmRmbXNtMHNab1MySW51TE5mbmQyPkk0QVJnWz10d2pWZl19LyUjSiVffTY4dkshcHVQZjYraTA5JiY8fmQidk5MVjhUbilEc3tdQ31QK31X''@;'; put 'put ''PSNyNjVyZzFeOUhCenlpdFU+ZTRyYk9QbXwqYCFaJlFne2JtP0NIbXJ9WDp7bmdkOHkhWndeJkclPChOdWJgWDJjMmpYVHIpRlY/Vz9RM285WCtwPWJtMUR3cj5EfDJYSXNJTmBhWmdMYHI3LChFR1pgMVY/JEV3Pnw4Typ8UllheG1teVdRU0lnb2lWelMyRyQzXmBYOkI9Nkg4djBoaCEhPGUw''@;'; put 'put ''cD0lci4wUHU0SDB3dHskKCZ3UDl2eiZ2R1AyY0dSOD9mWSU8Ij82X0N7T0hSZ1tjNGIrfkF2O2Q3MzB7c2MzWWVvOmEycTQvcHlaZG8+T3pkTmkwJT9mWT9kVEg4LmBJMmhqYmpiVG9sMCYwXlJRYktja3FeXyl4NEdEVU1hRUNsTklHSCFBR1Z9cUc9MypJYUVvcCYlTDtKXmdoQjU/OW5RaVZf''@;'; put 'put ''fXZHbyhNWlpAa2BvUE9CJklXTkdvWTBJRTMxZ1lZKWVdLyZBWVFZOHZaPHlOSzZLLDh7NGpnMGVEL18lW2t0LEhxKiRAU2pGWExXX3E0RGZ1diEyN11ocWBReEljJSMzOm5fRm4kb2chQGU0Z0gsSiF5ZCouSHwlbzo/I0s8T1NMRiFBP0V2ImdsMWFHRnc0OTpJPFohT2tnLiMwMFhPMD1tUDBt''@;'; put 'put ''ZTg6bFRAbmQwOShzaSVsKUxfIWhKK2F8YDkyUnpMIjF6cCxSQ1B3aUsseFh2ZVRibCoiPkUsSFtqZlVvcGsiKzghTzgvWT8hfFBoJSRmZmFlQGAiRU5kLkFYR0JoMC9fPW4hYEtXSCUiRjFxQjlEUGd4KzFlTzBqNGR7OkIkTU9KKDxrSWF9WyM7d0ldb2tnUH06R3tKQGFKVHBxIkpHUTdVdjsq''@;'; put 'put ''YFlVMGFRTXh5UiVNKWhmaWVQLlUhUWZ4Ll9eeXI6K118bWFeaTxbcVtIX3F4MjhxT0ZRdWtCUjNiWEdOT0A2KVR7P3g3eUsyK1R0KTsleE4lcS9TOks6eEVvO35CYzs0Y3cydGIlezxXSjtCckkpO1goJkxrKz9JK1Ijemw1MDJdUyk1ISxEO3dPRjJLRigmUEB9RDleWz1fYlIwaSNmKmtNOzw2''@;'; put 'put ''RWRKXyIocHFTeiIrYnAjaXVJSGlHSGkzVD1FdmNyRld9PjEvK1hYTyxCRHlBPCskRzQjPX4+ZEx9ZmxbJDk5bztgfGZhe3E8ZnlsW3c/XmNubiV3TnhSOXVNd1lRYF0oUk0mNyooXXVue308NlNLc2xwPXdoRUs3R2p1JXFPNCtuWXFnbGQ4UE16YVZuaERYeEF3ai8uPXVzaDh6biQkWSlPWE1D''@;'; put 'put ''KlVKMDNgWF5fRFopTyQ/QVp6aFt4QE16IXlKcDBzU15AMWxOVGE8THBgI0dUVHlUT1Y1bEJoeCxQP054bVM8TF0zYypYXiZ4dmJOKW5rcUlWd0hPfEIuQEUyLHQsOSZxISxSPWVrPFo5dStNRUBhLlJMZks0LHkwb18sS147ZXhYfWZIbkEzTHo4cDByaSkwWTJJc1FkUl1ZNHN4azF9Y2hrJEow''@;'; put 'put ''WU8lTlc4Tz5+QGQxT3pkPmo4eGohUT89fWEvNFVmLEJTZTpAdnROQjMrJHE3azghWjIickFeO0BjOSpSTHh4KXkib10/OTJJdGdAR2IxejJSTiFsUkcvXnU6dWwiJFRgWmIoPzQkMH49bDh4bytAanVTbW9Dek5eVFgqM0FsKF5baj87d2BTTEleSkJ2eDIuNHBSNHRnY213KXdean5qXkckeno1''@;'; put 'put ''KHpHVlN2QnkidylZdGY2ZnMiMWtsRiRKbU8xd3FOb2VbdjVCIVNAd2hNRVchRnhRRWZFTlJlVXZ3ZDVPI3leWEtbREAwOTpxazllV1B+OFliJTs7JjFiJShdaTRVM3h9JXlRUV8lZXx3TzpobTdQW3A7WyoxQHU3eklZPiRfN0xgV3YmVylFKiw+L2I2MWBTRmN2SXkxLiI8YCxuNkBfYnFmZSR6''@;'; put 'put ''OipfVG1Oe1hPeEkyamVQJU9tTXdOK0osOypfYFUxTl5ySTlYKHBWKko/clY5e28raGthXkV2clZUMDxfVnN0NWVtdXFIJEE8I0wiVDNWVSZBeWV8cml1cXUhbiQsdXw/fS44Wil4clZ0R1ZZXzNQd3dKcntqJV10KF5HfF9ZZkd+TkRIP3ElS3hjUFQ5KCVDRGdBbT5eR3xrdHNKfTl5ajdyRkxp''@;'; put 'put ''T3g/b0o8aHluPnkiSktmVkQkUzRlT0hhcCZfUWsqdE5JWm98KSUreD1zL0pRL184IVhnd1RrSzBgZl46KEpsQz4pLzl7WlA4Q3o+IktnfjNHWFN9RGxxJDUka01VKjVgKkk1WDRNQTQ6MVJrYyxGMz02YSlVKjpMXnNWJCF2X0olWUN3empJPjBzUF5iO0xbeXVCN1JOIWdzMCJkT2BIfXVqO2A+''@;'; put 'put ''fGhyMTpgWEVxQ3s1NXUzWV91UVIpUDB0a0BpOXAwKkdTUyksVV85RHhvKTMlK0FIKWlbN1pwVkldMCRVZ1p4Lm1FTygsaXkzaWxTV0JORkVoZUdPRnZkTnVrZko6OSZ3T3oxOl1GRUN3ejB6KlhbO1JlW2s6Klo/UnZCLyFla3B4TU96MUNSNVNqXyxWS0J4WU0vKzEmXlBPelFOY3BvJlJWLnR7''@;'; put 'put ''ZkpJQ3hPcTpJY2ZUKE14bDQ+aDBFRkpray99YU1VPEUhT2B8RVFtRz5KVGlnVlE+R0VgM0VGQnhCUztFVkJaSz5nN1M9aVlvOHQiZTc0M2R7VUtwdyVgTCF5QzBYbCtVS2x4cVZJVGFJTTt+RCQha0BAZltZdl54ZDNoKSQkWTFobm42RFFRWUdJP2JAK19sVlFZPnFVVndZSzk3JXldenRNd3BG''@;'; put 'put ''e19lTC53SCkrPklpayg3d0M8S1J7VGMjYkhaPyk5QEsiR1taWWhNUCFePD0sRDJCLmxbW3tQKG8rUmZaRVl8aHB4V0d8LilgLF9KJUBUej1QSVtNeWlqektXd0Y8T0R5VXNHNE9ETjlCQCJaa2t+VEJubm5vU1kmU0RmRiJKPlReWmt1TVJ3W3JbLFp7WyM9JnhkU0s4U157aDJDRGRmUzVsaF5L''@;'; put 'put ''IWczTnYqQHNeP100M1pjTWVAcEdwPHlTTHBgdSxCfSJiImpFQEEvSi9sPWhAWEVMPilgQCp+SSJHU3NeU1UmfCwzQyZqbUlMe2dfe2YuTk0wbyZgey80ZzFlK1JScj93dlRFbW5ZdFRxYTMzZ0d6dkkmYUNuKVVtRnxsQVU6TlRlZCg0XVd+KyV9PG5vbG8wNWBnSnBeYFlVNiZWcnZ+QG1gOnY9''@;'; put 'put ''ZmVveSVRJTpFQExWR2tvYGhReVA4fmM4SnxmP0ppQDtMQEFvI251TCQ/IWUiWyosfHkwSl1JOCMjUmxaWXdvTyQ5JDErbVFMV0BQSXhGSUt3TnY1dkROKjUhbkI9XXUzWDFmbzAkSX5faClHd35McCYyamlRYXokeFJJKXtieGlgJXB0SU8xPE51YE0+Lk1RTFhSP0ppVFM2PVghXi9BdigmMD5P''@;'; put 'put ''QSopSVAlN288YE05OyE/fX1qLGhjUjxoRG1fTWZGfmU4SjhFPF0iIklZM0d8UG5PJTNeNj4hLGY+UzV3NVooS3xrPnlyQD02diU2PlBeM0s+X28zVVpFcDAqRjMxJGhFR1NfM3NDQ3Izc25tVyUxSmh5I2ZfXVJdI1Y2MTA5MD8xakx7VD1FNExyTilYM2B3UlpKbjw2dD1bQzx4emxLOTdLdX5t''@;'; put 'put ''fGU+KW1yPHBmRykxMFA5JG5TbDVZQ3k9Y0R4QCJzZUouUFgxQmx8d21JVEczRiVFSnVWKTtJfEIxWD9Wc3xETjFyeytafS9MW3h3QXErU35ZR1NjS2BhYi8sS2djIyQ7MnooJnh2XntPT3x0XjtfcFtNez5jS0ElZyN6cUhjYDQhd2M9LG1mW0JOXkE9eTdna2NecCNFZT5HZnBVKV4/Z2RKeSQx''@;'; put 'put ''IWRleENDOU9ncnlNIyZfXmdGKzYzWUp9KTclfjhiNTErdV8wWSRpQTxdQGVWRGNzNj8qQnlsaEcpOyl8Zm8rZWs2V3BgSDBVcXBVcmU8Ql0zbzRIIyMuRk0jPUJGaFl6LmleQVFxSyJKSVM+cEtTQ1BSLElKX3ZYITo2S3M1bW9YVDFTbH5SczlYU0Y/dDYmfF1jQSxgUTh4Sm1HbjJoWj8jKE9G''@;'; put 'put ''RjZfOEFHYXBgck9GYER+TiZlPWVJZXxPNF5IWCo2OCUzIyZZaUV7UG0sPCZrczNJL1EpRjwxJCFIflRCMlBlfDpJWEJ2enVsaiY5RCwwS3ooNEYub2B4aF4hInJCTWc7Z1Z1NHBwKGVbQ1E4NCpJcD9UPF85dzRuZUxsezUpd2wwaGxJQnxIQlMya2B2NGFNM24iSENlO2pAZXBkLz9tbD1kMSpJ''@;'; put 'put ''cCt8dW51PUlTTX5pZS5kISx3JVJtJSw6I35CUlM+cCx8VShuYC4yVjtSRTdRKzsmR2lrX117Pzw9cHFnSnIzeElGT1YoZ19IaCIuKCVtODBZJiVbcD5nLz1RcHRsZ18zaGE1NmNxSyoqIjpGaDEzY3BKPzFjVzs0MWtzP2UiVWxXKHx1MVhxITl9PU50PFVTZXJTNDd1PDJjLDg+VkJfYnZfb1M2''@;'; put 'put ''NixFbFBsQmFASSpYYU48KiZ1Kj0uR0AxWGtyVTNRcmpBZ11McHBHQnNqTHMoJW5galokZkZJfTU/VX5aVD1CfmFeRCNzZSV3MFk2KFlqNmVkfmxGNmx3LGImSUhLN05oJkdkejlpZFVmQDprUk1ncSomUTs9Lip3aCVgNCpKQ0VhNkxWT3olTyRmQmdkTXZZaCUsaE1JY3VMWGtSVD10LE5oTDs8''@;'; put 'put ''WEdxTHEyPXU3aU1NU0lWNzJvRDtAQyRRX20ja0ZXRCk7TGxjKnlQNj1MdXo+bEA0PUBqXyxyNngoTUNAMXdabEZoIU9jcF80WTtwaUpIZEJRLmVIKDpALy59dGVWSTlbZltfLmN0cTNFdn0qX21bMVd1cyNaViVjS3BvYCkpTi9oOltsOXM1ZlpaOXsiVGpdT3VZWiMoNkU9RzlOMStJYzRHaHl7''@;'; put 'put ''djcwJENwNT92VUQ/Rm5qU2lhNlBBeEtuQV9KX0FHUSw2UTouZnV7I1FmPVFPTCxpNGIuM0VWJntfSk5GMF1efjZzIy5NTyZZVCQ0bUAjUHgkb28mJFlxTTdSakZJaVBwb3E0RUosdTNzOU9xNj18fTMzd1QqVkJGTWF9ZHxnZT5eLmRedChUYT5PPmRGJEk5XzslZXZZKFh3VCF8WX1KTE5UekVG''@;'; put 'put ''YXpdUWFuZT5EWVpQfTBQW2UzaiVPMX5FYTdQOmU4LmoxaHJEJSlWKl1QZj9MIUx8dzorVn1Tb2p5RmRPb2hhTW52PXdoJlplaEV1ejowXVlwcGpSfHQkWGNZMEV2JnhiI3xFJXsyXUpNYyNTXlU9QXlOQzBdWyNRZUZYUmp0fX5mNDVkX1F8LH52aCJCJmU+RCFEQTArMltuNzIiYXRgPTZnaWMh''@;'; put 'put ''UkVUNG1sRllXNWkhTStYOS87V3AjSkQ8UjtePzRpblE4fGVkNWJXSmVUXmlCO3YjMjhMIWY3Ujw0PS9RW11PeloycUZBeXc+QGtiQHViKGY7UEwkWjl5VFNWUHpzaDJoZllTKGw1dzJRZi84OUkrdz1VeDhPbzhyRyFDWlUuJFsobTY2Rk49JiwsVSZ1OFE3W3RQXiMvX2pjLjJIIVgrK0FNaDUv''@;'; put 'put ''JkM7fShebHt2UilBSGNyeyUoZ2F3eHp1fms+bmRWSVhxa0A3c110NmFhIVZIOiVbcUYsaF5ZeyEuMG1+PXxFYCxqZXpiTDpuRiZqOkwsRldDVnxfVXAoXV9rWD07MCtwM3wmKy4yKylPIytaRCRhdSFnR2g6eF1BK2ZbQStwSGg6c1FOXj1fQ3NtYE9iM2hTOCluLlZuKGF8P201X3ozNnBVZkYs''@;'; put 'put ''OHp2ITg9UnRkMTI9cTMwez1bUiFBazQzcHpLKSMrRX1kUmZSQVdycCwsLGlIdCFIPUh3ano2Z3JbeFZeKmVacjZFVDhoJn1gMHZkLkEvPixaUkVqSDZGSlpyRipSbzcoeXJRdjV6QFRRMHQjOT1qbyM5SnAsWGpvMmooRn5vNyQ+R2g6Vm1kWmNfUU9jOSshWW9qM1UmImxtZmFJOXU8MGBjI08k''@;'; put 'put ''Qy9ZVHMzc0FNP05rYmVVU192KnRZI3RpNVo2dXlPZ09gc1BkPlgzNjU8ZGpien4pLDc2KCN0LGdIcmUlZExweyZJRUdOU2tPUXEzZ1o4M3Y8W2pvSVY8YkkvUUtUNmskIztpZWw3R3BGVXFTI05gemF7S0V4NWQ+XSx3emxQYVJ4Z3cvP11oLmBITzR1ISh0Izg6fml2LysyRVk6Szc6UVkxd2RX''@;'; put 'put ''cHZOY0Z8NFF5TmZOWjtUfDtIRGlkdD9qPVhSSDQqcWpHe1pUUTs7Uz4rKHpyNjJ6RmI6Iys5JSZjRVZDXUREPSl7RikmcStxJCsyaWBgfHAoKld1cmBseEBnRHFOMHMsX29zZEM/RTEhSy5hN1JlN3wmUTpfYC5vXyZ5YWpRLFFiME0odn06aUR4d15sKHFHQiZhNS9aM29Ien5YKGt6UF5teFcq''@;'; put 'put ''Nk9KcVg6OSZ3d2omTylZKHhTJUUjMSNpcn0jL1kwNWE9W09xJGtqc0pqa2dqT3cjMEArTmQ6MV0xe1srPURCMCwyYnAmdFFecClWLmN4MCgiV0JoNz0pRmBuajhjbHFWYyIsMiVgVlhFLEBdVDxfIk83PH40WEYyLFFwSXI2YVJ8a1NLaEBFNCZweThGSG1edz15PV47WW1yZl1UVU1RR2F1SXBU''@;'; put 'put ''L1VVamkwZ0gqcTNwODpwZG5kRlsrKzJTRGcmemFrO0w1PDpqNT1RN3BHeCwqdyg4SWQvNHcwIyxWaD11MysuK0NJKS52cCl5eGcsIWlkbHh3azNFb2RSWWlePVB2aEo8JjtuS2BtUDR0eF1WajFXbDhKP2w9a0FFbmQyczJeZj4iYEBlbDxJbGlyfWhvTWU6MUlHTllYY1UpajBfM3BhaiJDKXpK''@;'; put 'put ''VWA7SkVCLER3fGJDQEQ2TTBzOW1xN0F2QHVrRSFkY1RWTnc6SHgvZFUrSEFhcXFRK2laWHY1PyowcnYxTCxIL0Zhd1FDfDU3b2ZhWFZvY35bcmU8aU5Sd19nTHkrUU8lY1U2bDpzM042NEleeVEvVHRDYEdkZHg7RDdjJHRzWCRdc0RkXzB2VmxpY191QW9iMzBDOmBZNDdQQktKLmQhJVVxdnVk''@;'; put 'put ''IzwufTlqYWpvT3BMR0NyWEM4RXZjPE9vYSZSam1XQi4uSSMqcCtuLFFFJUxDLCQoYltYajA6bHguMFt+SHYpeV5LIjczUmQ9eF8xUjtqNjhJOzVZVHZyRTtEV3VUN18yeT19UkQhKzt8QiNSZEBAVGxkZXl+TmZAQURzNzZLQ2RGbkN1P0ZVdU88OVNweXNxflNNYW15T3x7M2x4dnx8Lz9sJjd9''@;'; put 'put ''JFAmbE4ofjJgI1BFIUJvP25bbDxRTkc2Vkl1Kk1MNC9iYSFxblkuYEs8bEduJnNgI2IlYTNkUlpdUV08VD8zODJ4ZW9zXmxLK0hEPWloNShedkhpIXxvMThvVW5xRi9MeS9vUHQsYCtZQV1kR21jUUNJWWJrbHkjbklAN15GUkB3dzBYJl0kbjV+NTJ4IzNsM18sQWpbaWR5eXlhS0dUOGMhNypK''@;'; put 'put ''OFVfJWlqZzJfLGs1bkVzSnFyPSxqKWFLNl4/enhvQ2RaUXdEKUJPbmlURSs8Ulpde0AuZ00zbFR+MzkwVF0uLGkqfXlsRVBWNGlJKkRuZ0g/NnlvLyEocTNwMzldbCw/WypBVVFTKXhsPlReQGJjLFB8NCo2VkJVO1JMY2Ehe2pnd3tPTDFKQEpZbXlEP2ljIjZmTFUrLyRDSnVxMSlJWWRGUk11''@;'; put 'put ''K1dYTVlkRlsofExTSGpxbl9EfElhPnhMTTRsO0RLW3p4T09hVnZ0NXFbaX12d0dKQD12fWJidEY/T08ydGlEQXpBR189di8yL0xVKChrSGVbQzopMFRxVF9gbz9MSCgxR3gkRCR4RkgocSxaT1YzbkIlXkVrOWBZeHp3QzpVVWVfS1hrK3JmYnZZOShjPWZdPD49TGt+OCJUXUM2ekZtPERzSDwu''@;'; put 'put ''ZzQiN0k0Vk1bPnJQOnlOKjFpYmVxdUl6b1U3T0dOIkdHdXN3b1VAdiNjSytwPDQiMWB7d0BuaWZMKXFIS2o9YiY6KjYrVzs2IV9xc0FULGAhMEBYNClpWVheJmMkT1JVTzZWInVKNEp4TyZAR1pZSDR6MHokQVghQ2FycHpQYGh5aXlTfkhMPVtuZyUjYDZMc285dD9qREcoQEVeZFViayF2U3RR''@;'; put 'put ''QGlgbHxwLnFTU0dwaH55Y1Z5VmNUUCpKe0A9LlM4S1U9YjVadVt+KkJsTDVdVmZxfXU5MVljVyxnUjA/M15hemJEdShlWFlkKFt1ej0iI3guTlV+a0xfTzJNUEE8dk9xd0Zva3lAfXF3Oyx4MGtxdnNddik7UyV9fXV1SXp2MmxkIWBGdjg0bHFbTFkzZ21BXixFXzFdUWU1KC5wdjVNIWZtT31N''@;'; put 'put ''ZEdbUWtzYmNfJndPVnNkeC9PJWthZSZfenRAV01GbmFzUVVPfUZNMmNmTV1faDs4R0NAIUNhWWExdlJPUTtgdn1xV2pUWC9OcmZfd0khRns+a2ZbTltYaG5hUSMrS3kwUlBIOVZOUTNYKWtlQHtVYUc7QnJ9UER7L05pNSI1K1hbT0toWlFNO3QwMmN+SFFQWmtxPnlye2JOLH1pUmdWbDpXJTls''@;'; put 'put ''Pj9nN3EvVTwwaCk7Kk5zZDtMaCJSS3d3W3JtdmUpKiRXPUtaVGF3OitdTSNQZDlIPDBtZ3g5SXRCNCRyfFVleEtoJj5jKShobmw4MkNQbnE8fGV1cVB5UnNNSUBBaVtKQiYlIyhoJTEmJll5LnVOKl9NXT9oMUA7bV5SW3g/NlQlR3BKMERVIkY4WiZnc1BfPk9lcUpZanRXL1ZHWX1KQm9IUHJL''@;'; put 'put ''Zl46K2ImO2RxYDguQEZMYCp9NlZlQENjOW94JUl2ZUArQHlqbEo2dXBBKU5nOn14WiVPREtGUl0yZm0weUdgcl1+OkpAIXAkQnFJYnE+M15Qd1U6cTltZndVSkd2WiYrVkowKFI4eGUucjw7SCU3dDZsIXhfXnlyPnhTO3hSVTUmKzF1cnNgOXw/Q3l0YSQyTG9WW2g9YEBVeU1JbmdrKmlVfElY''@;'; put 'put ''T2olJCh5JlF6T1M3Z0dgOUV1Zz8rbGBtOXhndihZcEg7aEVRcCwhSkBlUiJ7NG5iJG1OZVlERGNRcmRHfGlKakxPZVNoaz02WzZZSjhXMmU8TihHYFIqUCNII3UzJSlVKTY7NjxEZTMuYTg1eDBFNENNbG00YG9vSWpuTEVeQCxKa046LGR0WSVxNTohJjd9L3w7MyFXQm5nYmc1Rm8uTG9KfHpi''@;'; put 'put ''aTwhZCZVejMqQENgUncoQz9qPVU9VDxePkgjXkYhcTIhdlNMakw1NnM+P3svYTc7Z1U1fl9ATUtge09iO2xDQFdnVlhgPG9oMiwjcGwmck5NKzJYTEFTQX40SVlMRUZXfF40YkcpNlUuKzczUVJUPV1AclZweVZ5cz4ydj5IKipQQTdVV1Q1dCptOURvfWtOfmJIQUNvXikrYSxRY3BTPXdEZF1a''@;'; put 'put ''MzB5VnE5RGsxTS9+NTJEN2VDaUB5KyxoOGokbnkkPW41cGcvI1Foe2B5ZXo0N1twJFBnMEhbZU1USDF7PGBtbVF0OWYsSVIqSEZsPjwjJTp7V04jVSU1bVNdVVF8Qj1KYC4rbWNXTk5ASUolI19wTE5bKU9DPDpWWDZRfl1uYSIkajsmKmNRMSNQPypYeSMsaiptIyhNd09oMFo3TkZePUtwSytf''@;'; put 'put ''cyQve21TW0c8OyNeYD9FWGU1YCV5NFd+I0dXfjU9b1M6YXdWOm12NER3SjJmMnBmUEtYIVpjSHYvcDgyP054aipALkQ0XlFZfFh2dE49WiM6TCIpIUZ2cyxpfkApTWxYfUBFNHEzbl1ROyszRDRNeyFDUyZOPSIwTV4ldHg/ZGdHKkprcXV1e05Fc0hVfmd3TDMsYGZwVXp6VFZ0OyxMNEhpTl59''@;'; put 'put ''bklabnB8fSNaQzxne1piWmFgdiNoUl1eJXEiOyw8M3lSSG9yPzoqJStzRGl1cG8uL34vcm9TO1oqOU40M3NVJk5Sd29CPV11JTN+VUJEZVorVjIqW0NjQWNBY0FjQU5CNW9xV0UockZMTDNvXX4+TSp6fHhicEs2OUJVSDY1QmRmYVVlcDMuWCpqXWlmJmV5PUZTKmEsOi4lSn5qLCs5WEhhXmZk''@;'; put 'put ''Qy5BI3BOW2hBPkUpcio2Xi92THJFIkZlYiRHOEM4czskfStGe1FpJUpOcUY2ST1Nb3pBPD1oLl97eD4rJGM+RSw4QyRjSjYsZ1Jxa2xzfm4rJSo5Pk9SZ1QsKl5SQlIvel0vX2U2bzlKTiQ2OWAoYnFsJFBGbjZ3Kz9HWmVbLkQ6KVhiVl42eUZSPlVXakNGLERyS0ZeMFpvLF5odVVGe1hRXjlX''@;'; put 'put ''VUFQK11PMlR2YzVZQjFhWmFSIylyLDA/VikwOks1KENyb2NGK0xoMzVBcHAjRnt+TlBLIVFHYFtvVGhROjc0OG99cWp5RDoxPFE6RjY4b3RgKUtqWWNbZjZJKkwre1E1OCsqMi4lSFNre2J0dXVlfTxQfVYzOEVoLiMxa2dCb2F6WiRTPUpAKHg0NT55KHBRbDlPVGVPOVohOjZCcm8wYDdHcSZk''@;'; put 'put ''MGEreldtQSZCPitYMWBrcT86XnI1JHssWCVkOTpwSVc0Xn5SQmtzPGpoQ1p0byJ8WHN9ciNRW255UXVVXXt3R3EzK1JKIykxQGAzYnR9SW4waGVeTGc1XT49bzkjKis1Ni5ue015Uz1ROzdvMCFsPVhJQWhWaTQsTnI3ZSw/TDFRSTMreDpWUTUmdlh9JSpWb29KLm1gWW0hLGNjY087dzxTfG1h''@;'; put 'put ''T098TzBxeDxeM2NyUlF6Jj9gXUMsJFIwVykieFdTb3wzVGRTfXJzKCwlcVdse0BScDR5MjBVVH04d25MI2FMP1dRPmk9W0BCVWVAO3hVYTBQUFpzW3FxTU1FfG9Zcn1YVW9qKGNdKkFeWzQrMyxRdlU4cGd0cn1MNFA/QVQvQmNEby42UHVZYV5NOmphUjlCTFJnLHVrfDpFcFJwJilsRS99Mysl''@;'; put 'put ''MmJPXm9nU2kyS3BLUmdHdEM7JHRxY3BbcUohP0ZkIzdUOHdyaEhadjtzUVl2VmJXdntTJmB7NVk/Q29WRHl6RkEuWkZpQHB0JjMpJF9DTHQrZF1RcWh3NT9YfGNTYFNpMzNXcTl5eCgqbzYlcls8XW57NipTdiNwTnxiQEU2TVBbQUtBTzs3byFKNWhVUSlBfCR8ZWolUik0bl4uQy9HJSpJOU18''@;'; put 'put ''LjB6PXEvcD81TFUpcF5rfm42JVlRSH5fKHdIYzd9UUBGfjRmekl4eUxIb2w8SkZlOzpWN0poT2xeNDtmP342PGhKPFdmYXxAQCV8NFoiWmozWHBsQCxGPUoiZX17P2lqJU1NVSZBeTFyRzQiI3R6XjNNYzB3SiUmM3I3MWFCVS5jaUBAcXJMd3JfVTo+R3Q5KEhpUEZlMk5tbjM7VlVaV3hGQ2El''@;'; put 'put ''VisrXmQyeUN6T0ciakAwaWNHM3hZKH0jTzM3eG41NXo6XS4yMSFjcTpDcCpjKyJLdCRkMjd9QUttKCIydzBXeXZ2TFc0TGsqKlUiRWxHNTRYRCFwXmxjVUt7bWQ6L01uX3IyO1p+fj5UJkF5ZUVhXjRUUERiTFcreDN4cV9KKy5GcEpGLzlsP0dwNSo7MGBLam5QUV94RyImNWxrQjs1OjAxZD5u''@;'; put 'put ''XlhdfURhKm8iQEAhbmt6d1t3ZlNRKnQxL1l4ckZVeXZ2cUlKblJTXyVjXU1LLG1kZ2BuWWljR2lZNiU5OzdiT3AsblR1PCk1fmcuZiVFb15tSktAMGNRTWNxImBgWWFGKFBbPn41UVlodG95SypvIjx4JXkkMXZTfD9pNnQyOVlvYX5yU3N2LDwlNERCIm1nSHEkOmxYa0Ircy5bM01xWGlZck5A''@;'; put 'put ''bEI8ZT9IMC5GX0V2NllVbyQibWBZe2hoJlA2PXpOTnUsRlJjbkdtdCxocDBQamNwXk5pYHRBOjF7Y1lAYzhCWmNfZ2NfeF07JTRyYDM9M1UyZD4kTl1nY2wzY11aeSw+M3ApUzZAZjEoNHcwX29hfXJKfl0haXE4WFokZVBZISYmSl9jWlBnRys1ZW5GUTFxWDhjcDBdTWViQG9SbXdFQTVdNVUu''@;'; put 'put ''VyJKW2NzYEx8JDszYVVsXy5JSFpvfnhVQGMqRVp9ZX5uYCVhR31Ud0UwNWdWej03Z1d9M3Y7YnF9flpneU1JUj5MaFVEe3FpdWArIXt9PVssdWhxSl5db0ckJFssXklsY0hmQmZleSZiY3p3KmJJWEdjKDBPbUJodXpAfW58SHlGODFzcD0pYTt1UDR5VnlCdylTcDBvOXNTd1cyb295YDpJW0Jj''@;'; put 'put ''azR7YEVtUHw0dDM8S0MseEkvbEN0VHslbSk5KnF3TTF9RS58aDghJHR2dT1wbk9yM29HNFlLNy5yal49IVVYXVsuLF97bFMhPkp0eWlvKE1iWygsQHs3ZzBGZyZ3fC5DaCtWeSZeX2g8ezc9VVJiJmdIWXEvNnxvKiZlRHdqMD5wZiJtTyhYVFR8c05SOWFAJEVpSzlSXnEqYktfTU4yQnpDVCNK''@;'; put 'put ''bUxAI1EmInpTNV1vK1lRPFs+eFA7eEQ6cTNeRCMjS2g9KEkpVUFBdnF7eDI7WW1CX2Y9Ol9zU0JEWWt0bSlkQXs3LEhrZVVOIXt2MFdgbjM6VXpWeSRra01SMntGZlRqfkpeKDEhYlomalVMe35UPzFGP04qKFMzNSE7VC9KUHwpP1VTIyYrZ3k0UEU8WSF6XVlYN0Yzbz5xWDhHREVSW3kiSiZ8''@;'; put 'put ''LiRAW09ScHEiSiVxIWhgJXJdWXZye1IjNnRWfiksODFFXnd5Wk1lPiwjJltZW0tMO1o8M2BifjYielVXNX4/akVpaE9VXjYqcmZ+MT03RjswLF8zT0NsY3FvXmlxaDRhQj9ZTX0lb2NedmIkWSRVfk1xIkoueG94dm5bVGBAXW1SPG1qTjpTXUxwPSMrOltIMGZ6N2F1KjpHbkZuellPZ3xfMT9I''@;'; put 'put ''JSg3JVNwc089flQxSj9vRTZoeWx8YC9TSjZnPWFKSTN0I2B5Nnh7PHwkb3AyU2dOTT8uQXhtQ2JDInB8ODBxZFU+JFU4ZHtMVntFTzB8biNoRTM6XVoreVUkSD44emBGWzopQGdjb0l8YiUxKWFAbTwoM0B3eHAxK1EsIXcuM2wzTFZTLDlEMXEzcE5IPnhsW2c+X2Y3Ozkha30jb2AjcUQ4b2tx''@;'; put 'put ''dyowXlBaLjRUQHpwe1pKOkledmtYemJQTXoxfXBaU1N7OTdtJURPfDMrZj1jdTA5OF5ee1UoYDFFUCwjPCo7PHomMGwwK3MmcmldVmdlN1IsWXUwN3ZXaSthUEIlL1spW2cmbmtCYEZvIT9AaEhTMjEzekFKP3c2dnNNO0N4QUZYenBDekokZCxSM3pLMi44bVhSR0JBQUFTOlRBbEJ0SXRaRHpH''@;'; put 'put ''dTdDcDBVXiN0Q0EleUI7M3A9N2VPJUZFZCUqJElrIkFBQUFBQUFBQUFMdmpMaTpbbWF6QW8hPDFKVXRtYUtYcHhMb1BPcHlWZitxWSJNO2VjOnc/RTUoc2FjUihOV0Z6cihKeyU+Q0d5SzozMXB3YWo+e3YpJkQ8QG9nO0xBLChNODUwflN5bypYd3hbVVVwd2lDajVVQEFkfFMzfj1TU1lGQ2Ev''@;'; put 'put ''P3oxcyVMfXIwPUtVTXJJYkN7PzBFM2QjRUdiI28mTysmbyV9PmZJOUkwPWddWzZXQ2pnK042S3pFOiRESVlNTnYjNEJnNls4dTF7JmVXUngzLGIvY0Mpb0ReOCN+YjQuVWpFMTY/bE1KUzNBMXwuUnl8VVE/KmU+OHJ+PVBUbGJuTixGTkxjR1hkQVVgR3dLMEtDQnJ9P0NoRXxXTE9MSUh6ST1q''@;'; put 'put ''cUhTTX4vWjkka0VKQDtzbTdDTDYoZj8iWThdP1skTkZZUlF7O2VYb3UxRmNDMGRmJEhaREh3Q3w2flhVSjU6YlhnL31ObkQuX0VzLEVdJSJ7NndNK31CPEh7QTtmZWNxPzdzISZIcCxWPikiUmB7QzR9LFl3OTpxd34sX29nLzw0bDwzTUVGKik7P1h8cy8/Q3JMVWQsVyZ9b0x+SVkwO1hBe15g''@;'; put 'put ''TGVFaHd3LiYjJlRdcXQvN35pSzRjMW9ob0A8aHpxVkxvZUBjVDNedn0mSkpYXjgiI1MwaEFAQFRYV2Y/JmxncWNbaDR+UTcwNz07JilDRGZMalFmLFsmLHVSWSxyNGZWTTIoOGU4WFZqLEJUZntbWFAsRCpUbX0lPGlNZyUxdz1QOC92WSlCNU00L05WbFtPc1k0cW8jWjQyNDdlNVpHbEdUJCh5''@;'; put 'put ''Vk07OjdOTzB0dExEQDM5OzJvZGIoLzlqX347eTA9UF99bUd3TW4wR0l7XjxucTI9Rjd9cmF1Yn0oV1U3TH5WfDo5T1lfOSw/W0tZVWBFYm14JW0+QWdOWWc5RmRITiZaYk1gYD45aX5mWSVlSmhASCFPdiQhN18wb2h2K2N4WC4+fCszY0V1PXZqTFE7XzdaTzhVMDZZNnBXW3BuTj52VFpsMHZe''@;'; put 'put ''bntZP1RTZjVRYiM3TVJUOHA5NUVNKFl2VWtFKUxJMUcwOGQ7Wy5LVDducVgmfjs5WGEhR3pVbUB1c3RyO1RfanE6dnd9dmk8V305ZStTXTVaNEEjPWMsSXZNXjU2UH4qMy9iSm1LY0d7Vn1AKVJBQlVyPVJjNiJ2Rk9+Lzp6KjBdJnNuW1EjQnBreE5IKGhXVTxfMCh4Wk0kZEh2dko0YF9nYy83''@;'; put 'put ''dFl8R09xXTomTT9pYyVwT3dhZVJTRV5tXV9KflEyeFgvZFQld0ZKXV0oOjZDcz1BNW86U1ZNQk5gK0dvVVtCaUZHKUE+QTthTlczSiRWO0x0azBXU3tXTHNFbWNAIk01cU1NeDRrMXplcW5hOTVNT1VnN2pdOE5LYExbe1JRem4jZSt0Q3N8bXA6VW9SZnplLHg6fiRLZXEuZCokU0U5JiFpTm1W''@;'; put 'put ''ZFFGZyZHL1p1R3kudUpEdkUqKm5BKUIsYXd1JjQ4W0ZxXTBXRTY/K316VHVgS3E4aUZNT0E0ZVtoU0taIXc4Qy9KNXk0XThlZmQzN31qPlElVTlgd3xCVCIicWhMOSpaUldqJFhCRy4yRXdIVlpSRnxgOl1CO0RybjkpaTUlPlssbiF6OE5Gc2d9KC82cVA4W0AvMnxFMixnZy5CbiJhRks8Rzxp''@;'; put 'put ''PTFjc1cjNEFFLER1aEpOQ0A7WHZgXip2YjZ2bWs7Ty5xISVxMXIwU2x9RiwrNG95VCpHJWldczh6YGJdOmcxfUZ7K3tORz00c2R0MWUqJlRFTVZGKjxjOnR8eGpVMXxSfmFbXkt9Wy49UUpycz02VnBCWlheNWQoZEYpejV1czpIJEtNbUVLLGJbP3xzPGgoPXNWYjJ8QWxpKTMmMVhFMWQhSm9Y''@;'; put 'put ''em1bYCM2OT40Rk9lWFgiVSE4fXAxbUNJcSEwbzd0fCRvVEpjdnlmMn0ieHR7SDRsIWteMCxBNG1AZEBaPzU6fl5oRnFAfjBUcG06N1Rwbz1BY3xuYnZCaXFTT2BGayE8RVBOUnAxOmsjU14lPk9bZFR0JGo1TntFJFl6K211RX51RmVaOmo7ckoqU005YCYiRmE5diouO3BzMm54XyYjPDEoLH11''@;'; put 'put ''WTwmaFUyTU4pYj9ORXc4ZCYya3RzanxeaGFyX31MJX0ud3ZaeS5XWzo4VCNqJiU/WS9xVShtSCh0IUUiMDwzWjJDZj5vOGxzV21rUmk8d3NNJWlvPjY6PHxub043XTVlTHRiMm1LLl9JLC97bndUJk9IWHImWzliNSt2Qkx3cGo9N3h3fnpaJHIsVDo3fW9WNjRwJSZCKktFakVvSXE7REY6a1lD''@;'; put 'put ''dkswIlIybiVdOTEycnRyPXVHd3E/OFZSRy5qKmAxdFdhWiQoMHtpX09mOGtLTF4ufnBGcjZPeTpIJnNxd0cxW2Q3JCNJTz5SbzA0Il5nSGJOSTRgb0ZkWHo4cVFNQio5RC5YcCZ3XyhYRipycFNfbTVIPHcwI1o2ei43NkwlfDUrKktILDlSQ3RWQHlyUEB5aGxVNn5nOE46WzlVSndoNDhHQ0Bf''@;'; put 'put ''JH1kUlFiNkFNbzU0YWZUWEs0MDNQLGJYeDpfVmAhQU0+OVRAKVl3VlJ+XnNtWzY+X0YycmtLWG53PStVYXhAOk8heEJtbiVwZWhLMX5aUWZHXVRHeUZXeWlAMzRdRig8VWcjLk1mRjp7XmBPNnpnRmllcTMwazZqQC5qO20pTEpGeWQuVUNeMFlrWCQ6d3k8NCUjWU8qUDs6IngyOXpwO1I2UlpQ''@;'; put 'put ''IzBLRDBwWkBBPk9BVXc1eFZ1YzJKW2NSL00iNCtKZXNTVjsuXW1TOFQ8YC9aK3VUI2s2MWo3WFcoQylndm83UXtqSVQ8JWp4MzhPL1BLYDcwdDE0Q3g5I2A7ey5jVVV0eHxLO1hMZGR0IWxJP1lkQEkvRWRQTG5+ZSIyTng9eDlZeTh1Ln0uelY1OlttKzxmVHpmJnx5aEJfPkhjRWA7TEReMHYm''@;'; put 'put ''eDo6dWBjdixDKzp1TW5VW0kyRlBgbn59L1ZwWzg0ej1WYWJuOE5pQ2prKE5YYnA4RDNwe2tycW1bYXM7TEtOayRYanBzImNoOmQwRV5AWVN+dCR7e0B6ITdhTmVlfCNUVCV0RUAucWo/dUI5ek5sbSRxUHtFUGM4XXkoeyFgbVtPYjgjcFZER1IjKGouLEZmTWBraT1YWWRRXV9mfT9pfHA1TF9Z''@;'; put 'put ''LmFCP3F6MEMkTVN1cmZMSjZxdz51fi5yO29RbEolekgoTHciJkFvdTxQVDUpYi87W0lvJWB0Ln5rfWAjbWwuTWFmMG46WW9neCVeJlhIanp4dHM9fD9XYSU9Qj5lTzsxNjFsIVRmY1YlOzNgdHBodzJNX1JFNVM4XVNtK3pqX2tNPE9tPnFANi5mVil3OmM8bntTc1svLy5xK0FabkRbNHQ1WUJI''@;'; put 'put ''WHVNMkcrKGVdWjAxZW9Dd0NvZHMlazwyUyJGIXdvdCJwTUJxbSlLJUUxOylZen4wfVdNa0V2JXhPcVIhKkhnNSoydzBoJHlQLD1HIl1AMmppLDk3WiNfIXdPaV8jYTRpZCVxMzJJTG1ObCJidjxEe0o+LlpxfWdpTXBwKG8xOTFlYkRBKTtEZGF3KVRCM3clTjNEYEtAKSFwOUpIK3luZlEjVz0u''@;'; put 'put ''OnZEWV9xaGV9UzE1P0dgI015PF9kSCtOVDAkNV4seVFqOGllMH1hKlhZU29GS0xReFMiWUlJOHBiP1lzYHg3T2FZL0BAXyMsMV1YMzlmXjpba3d5e14/bi5KJmY/WDUkVShWNjBAcHo/bkZtI0k/OkpFVkBXbElOTCpCRChYMD5wLGo4aVA8WmFkMDpwJSk/SFF4ZDEqP1hicyU1P1p+QXArVyN3''@;'; put 'put ''XXNFUzt2WD1ubDJ0QmtjZGJDfFBUYGhrSlF9bD9eUHo3ci9wVXIhWTZSKlF9YTA7Y0ZyTC5BJURMLjRRaiVoInRoOFV2cFNfSFhdNHBgdVhKWGE2V3BpSHdrUXA/Vm1ZVkc0WU1ScDdEIyJdYHZfaVBvRDRkUEgqWjlgSFFqVChMLHV6LmQjME9VcHtQI0JoVjdDTzxJbCR7c0YpPCpJNk86aiZ2''@;'; put 'put ''XzBRVEFCfV5eMl1pISQ9RGJbWXJxUkN2KUxWd0ExdzcqQDE7Iis8WSpOL013ZlFXLHVSWV4kK1l3Sjd9c2d3PmN1eUlOeG9afEBWNC9sbXNEXnB7WyYiIUtoOz1bMFZ0JmdBT1d3K3RoPXhTaHp7ckNxZzs3Yj9eZHs8WiNbN0xOXjhTKG44ZiZyMjsoRG8mTEI/UTdffmZ7SC40W3UrMH1oMW5W''@;'; put 'put ''KyVyJW1BfiQ7T3l8O2Q/QHokU05xKF1UUnlCQkFRTV9Kd25eN0JOd142TklPQE9GTmNFbmBULjY1aSJtOUduYmFBMTFPJXtzMFR+Z09bU29rdHhEUmR2M1pAJU4ycztmaGwkKFg4PEpyRlhyUWVFMipCXSx8e15hZmwhZmFfT1dbTmZPKCowfVd6TXpmX35jdngvS3UhJilWemYyaFVtfk90VDZo''@;'; put 'put ''IkpzWTh+fihrPDUqblQ2ZXdWcjE0X2hob358dX18U0AoVUFSdWkienlWPFt4YG8kd3NYOWVZa2s1MHprOVBUenQuaFEyRWg4fCl4cGReX1smTmUhUD1oXkR+dSN5PVFIPldhVV51bWxvZDxNeGwhQEh3KSZ+VkouOTgjODhVdiMpTTUhKHMsdE1ZZ34idmY3P11UT15FS2Bya2dgfW44TWVEWngy''@;'; put 'put ''RDQ+TW5QRmlFLEx+VyVSZF9yY2lQJj8/VWcrUDgjXm8qcy8jfUYmQXQyKC9mOiQ2R3cySVZ1PUMmTldAc3JeSDJ1X09pdU1SX3MlTEFvUX1CRk11bD4/blo+ai58JWBKQilnREZmQ056MmFmL2VUWHI3V2RCVjtuO2ZuZWxQfmI5TyReZCtyPDt+a21OYn1la0ZEcDRnKlM4eW5AUjU7Kz14JVgv''@;'; put 'put ''Y3QvMGNCNHRhK3p8Vzh0UkQ1OVJCW1tdLnssSkVhfjtLVzIwKlBSQi4xRndHS1p+VTI+UnBxOkNCOm1GOV90N2ZkRHAqeXhyQzs0fUo0amJSS1UvSnRMO240TSRpRj1aY0IrbCtFbSZDMTVmRDxPQkYmJWtSPjlrQn0iRzleW3BXeUZyJW0pZm83Ki4zYzcjSlllIWhOY2lAdjlgYnZGOFQoUT89''@;'; put 'put ''OWdYYDFESSFLUlYxcEVeZSI7XUNtOHh8Yl5BQHomR0RuXjh7OlRwMz1tciRuMmdgUi9LIlBLc1QoJHpCOXFJfkVudCE4Ok9+dVQuKy96I1M+Y31jSHU6cHBTNzcqeWBRLiF6dURFU31MXlBjVkd4Ij8hQik3T1tAOjdqLkV1MHZkSWc0UEA2c2U/NnU8YiglVTZxdjhgTntPTHYmM2wwdUFIMixK''@;'; put 'put ''NWchfHU2Jl5sZDBAfkV6SilFSVdzPyMvR0haMHFPd2JmcC82SFR6LGBLSHdgLywqfj0/JXd0dzV2eEwlQHhwK1c2fEJbTiRTVT8sNkxAQzFwJXVmfjNoSmJseDFvUV5BZHdvRVlie1UyQ1dbXjx5WHgpeyEsTGNJMVtCMF1oamxiempJZ1c8JWRXWkBCP3xRKW5ndDtaVyZSMUd9ZEYxWXZ3Uz9Y''@;'; put 'put ''YSF4dCpEdlJqRyVUQk0/d31eP24xc152dFlfWlBiMT92MWduemN9W0E7Sn1sVlhvbzpwIUdLfHdPY2E2cHUqNEU0fkgrMjhpJV03JHlXOCp1Z1lGcGtfX3NKK3c0WCl7OloobXRTdzRNKzVvMjR7a0prP10sWk81NllOcUsmNU9rJGdBI0wmcXVPWURdSUQ5ISZwWGY8Tjt1ZXZbP2xoXUd6aDd4''@;'; put 'put ''QSYqTX1eWU83X3tjUHpRdFNQaWVCNkAmfTpTeVsiLEFHWkooU0g3UVl5Uk9UQT4ueH1ud1g/XjwueTImWk4qL2llSW0jQj5vM3lZcmpLZCZLSHZqaFI9ejYvWnJLbE87JkIlYC94WCNCOlBTWTlbN2hodUFLJCh1fiNBXlB8ZGB6WmdHQE9PMnxnJXhhMm1IPn4qNjdELkB0TTg8UzZMZkklQ0tT''@;'; put 'put ''SH04YkU6XXpIeitQeCMkekJaOSQwdE9zO2EoN2srSUkhazVKKyMwbDJzN0phdHlfSHw5ZDghfUcrcWwoR3hNVT1mNXlyRHFCd11HRmpiaSZRbkBCLyUlOktPWykmakNBLz00P3ZhIXAoNVc1XllvcyY1Ql8qR1ZEJD08YGQhdHUjQ092Z2dNWk4hJFklX01FLnV5W21BQiEjQkxQQF1+bUIyXT1V''@;'; put 'put ''LEZ5TmA5ZmQ9az5NP18/Plp0U2ZCWGhtOipYIWgjVEE3dXxRfjY8SHFvdF4kWU0kfEBnMih6STtrfVhvSX1eYTh6QFYiJCp3YGB7UT15eTpMVj16Ty49KSYvVk1xT1BJXiVGSVtNfTNWWDAjSGh9KS5UbWhdPmdvXnZGXUN4Sk0kUX1sWDFzYSsuWl1gWE4mX3Y9ezgiRkVkOnk4a2soKFI0L0dG''@;'; put 'put ''ZnhOZyg7b1pER1FIPUwmXjUhZD5JcElOKSsidVAqYz12ckZedzx2cHZnVUJSXVFOVCxPb2xrT0dadGUuIyRBXmNLXzV2MT9jVShDZjZAaz5ONXMwN3FoLzJXQDEhSWA1NCFjdXh5WmZ4OF1WQ1pedCN8KiklNT1MVFF3MUouJkhXSldmWDlFIVsxZFZlWV58T15SWDVdaG14ek46RjBlM2luTls4''@;'; put 'put ''PFR5VFs8bEdtcmd0OFF3Qk5HdFsudzZOJTldUHA/bXIsO2licTdZe0VDSk9wcD5FMHpAO2YyRSMheUgpYHEjUlBaR2g1LElAb097MztnT2sva1pJSEA/bkhKYDFLYSxuQ14uezpgMmA8dCZaPmVqe28keGtja3QwXlFzJCRkPV8vKyV0RS5gTC9ET0RgZkVhe2BdTXJxdUJ7e2R0NCpvSClJU0lL''@;'; put 'put ''IUtPR09aT3dae3lWVX1IOFNzK2FPImp2STRDSDZ9QktXYXd+Jl1qTW1iPDBeTHRoN3tLcVpHSUFSaDJNLFRxTlVReDJDcUJyNFEvenc2ZSNyam09cjs1MGMyeHRgKVttVmA7R1pDK20jUGdybT9MYCxydHtHY1YwbUFJYX1Pa2VgODB7Km1yYE0mLkIqenNlbyYmdm4rbi5EIzdTKTBaRkYoejFU''@;'; put 'put ''R240azsqdFhHUmZxM2EkZDo0OEd6VStQXzRmI2kpcjRCQ3I3I0hVfls4NT5nJHBtaFpAJG5lWlVIVTpbdDI9Lz1zIjM9dTN0a3szKW06UkcxN0JpbWBdYjV8KE5nKiZFenlzaE1JOmBuMmVjPVJxIkNAbiErM3tPQWM2WiFET3wuWm1nOjdMIVIqUEVpRXFoaDo/cUxvTiMjK3h6QTpFTiVKJjRB''@;'; put 'put ''Nzhpc055cXRGLyVCPUJGNGI7NW11cH5iWVpZYzwyMGorV0xQZGVqI3o3I21PYjJxcG0vInxmJEVsaUc5cE1mJEBsT31XeCNCNVZiYWhDNXVNRXF9Ul8sMjZ4N299SyN2OiF6cW8wI1IyYlJ1TGx2ekAqdWhWIi5UXXReLDRidnt6XltSfjM5YXB1b0VoYFtCWDYqfilzWTQybysoWCFDbTheVzI2''@;'; put 'put ''UXJTZmdbdGV5fFB5ZCo/PFlLK3tyPFR6RWF3K092XyMqS31dWThPWjNJTE8+TEZERD1ITDdWU2pqendYcT4xN1Q8TGdoZWNuPGg3aSM/a3k+alR9MDwldF4vPURCSVgrQTRvaGh9LjE1fGxiV0ZrTEJfWzY1aGRUWVReQkJPLDYsLDZ4c1lYfVg0MGhDZHY1dEA3aEBlZSxzTm8wVXZ9Km5uTWFD''@;'; put 'put ''IzQvJWAjMFNMXk5xc0dgeTRtbHY3VGh6ZFd5MSl4SyF4YzYuRHhEQE1nZm8jZEA8TD1ge1RhUWZ8Wjp3VHNZZ2Q9Q0k7MGk7JFdKUDNCOSMuWD1URkQ3V1A6fFtgM29JLjQjPFNzZkBWJXtWcTpxK1guRXV4XkhDLCN1PU1ETkZKMTRacVdTaWJWXTdxenBHTn5qIyh5LzhkZjEocygwRzNZfS90''@;'; put 'put ''OCQwdF5tRSNMRiVNTEdqYSspaFllT3liM1ckLmNmd0QlYmklM1ZNMClGcGUxdi5yNlAudm8kRiYoSVh0cGU2MigmeS4+Jm1LZyxleEAuSlJObn0kMzBDTjoiV1JUQz01NSleIilrfkJwInEsIkJtdm58fV97cXk8LC49JXo7Z3pFel1GNV87PjR5I0NrOkIqLC56IiJCZTIpP35SVFQjVzg9Oj82''@;'; put 'put ''OUw9TmlwLGVmMCooZHdFODVyQnVNc3w9bnhZJk91Ql53UD40JFQ6UTxCZVNtZWopb0YjZjs9Lit7L3Fgalh6MG57fkxuQlo+S017dyhacX5hJHlsfEshY25wVUd3UF4/e1EjaFdwUF1FUzRmd24hYnhDcV12WXZ8WEdGamcoPzVAMXIoKSFDWj91OCUwXTUlOSteKm5vUyJnQ0NGXiNLYjZQZVtD''@;'; put 'put ''ekQ0MVA3cV5DcXt2Iz1+ZDlgWmtJYFNaRyJ7aXIzPkgjQVE6PzVvNGBCMk48I2E1M0M4YjcjYUZ+P0EoZltQSkg2bWB3X3cybnwmUDUwb0RXcjk/WFlKLjlDKyxNPGd3d0A+RCkhSTBeWjQqIWo0T29vfko/R24+SDNSQislI0NCRV5UNzxZLj9pXz42InlMfD5mZVthIWRjdWosfUtHWyhAKlMw''@;'; put 'put ''Lk5kQVhDOUd7PmMpTFZmSWQrdCtNMHNjTT9+aUojb2d+dmpYP3VdRX5sTyJZUzhoZnp6RVVYaTxQXmhkfCZQWDU4d312aklkMntnLEJgRVZzbWFXaiN7WHlqRHo6JkhWSV8hLFtIQH1+bVpdNiRCeGMqTl1OMlhPPlswK2NuPFlFOl92PUEjMWl4MUxda1ciQCpYfTRRXV5jJmdLYnBkI3UvVyR6''@;'; put 'put ''Y092MTArRUVEN1JjRnhyXioodV5mfTQwUXw6XVFhXTpEIiV1R112Lj93byExPk99YXIhTUFSaihCUUQjdzQ7P31NSzhpSCxmaTNFPV57a351YVhVWC98SS9GXURvNWlnNXljKCM8XjB7OlIjSE5hPTRoOjFBNmZ6eUhAbTBMdU4sVnRSXjlmfUsqWn1YOmdwQi8hYVI7fk15S2IzfCsiYU5EcFRC''@;'; put 'put ''VlRgRUAqK3hAZDk6NExVckgwWVtKfjFQcDtfPiFbL30vY0I3SjJuMnAsKEdUVmtEXW47KUNGVjpTMXFHcV1GTnM+WC9WSFpXdD06YjYvP0tCKnIifkNETj5XdHhHQ2hoazV8TDNiM0shNDJKOkg8KUR0ITFoLF8pc1NLOEg3bWJCajU9PyQ/KTsjQTMlWip6X1hFXjNjRCh2RmY1SlNaSixyYEBS''@;'; put 'put ''dzRXemQlWDViJWxbWzdvVkooSmJRUmNpJmRiQnp5UyhwbjpjOWN7Sj10fUpJOzlgUUIvTGBISHkkRGtgZk9POHxqMj8sS1diPUJ0TEl6T3R4NUtjT2JqfmIqVlpkLnlGXzpiKjI9aF5AdXU2VDQqUl9icGBoPnZwbmpwM3NrNSEoKSlaMXcxQGFgVUxqcyVLOnxPbi9xaiwlUSl0ZXR5ezx0Pll1''@;'; put 'put ''fHlWOkUsbkdXPjhFM3cxO0c8bkZYL2I7TiYmUkN2R244JWdNNTtKcSNBSmt8czAhM0p+ITpJIzZiSENpL3dWRl84az5OUmhDemNwUGo7VjsqTVhKMk9TVF9vXjo/VTB7cmhdLEMwcE1lajxEWms8aV88b0VYNkkqXVt+aW1KeSEsJDpsSFg2ZTs8RSM5UHt4ZEg+JE54bktfSms8Pj5GdjRLXzVg''@;'; put 'put ''Z1pTN31ANWlSTk5lUiw2RXx4WSxFQUhVXndbcUY2TlV0XVtAS2B0S1gscVE5YiFuTUlpZGBDYkdeano2e1hIVzUsYnFHYnw5TCF0L2VFUHhtR30hZiwxTzk/RUVsVjpYKGFOZChsR0RNPWVLVllSQWwjZkc0ezMlbHBgKmBbc31qWjJyPUdgem0zbzRQVClAdUJ8SmtSN11xUl5rdGEpU05YQzFv''@;'; put 'put ''O3ZRUyN+fV9uInI8YXUpKWhyNEk9Mi88KHJ7W0l2RDBYRVJwcVJ2WF4qUEhYZWZBSE81QHwiUWdFXkFIdmksVkxOXiNXcE4xdzV+WVpFPjV8S2Yxfm9eeXdNeGp2djddTGFbYzhmYDd8IUc2PkRPWU8+ZltHeTl+bGVUIV1ERHBgXlRpUjc0TEBWXmY0ZkYhVUVnJF9eU2EoPFZkUlZRbSlNUFdy''@;'; put 'put ''LmQ6XjAjMXF2N30rfElzaSVIdSNMNHMwcHdhM3QyQDQ/YV4sOUNqZzYibDw5JWo1bz8iQHpWUk1sZjAyaXM/SkJNbmU8MSosVHJaKWNASTdnT2UpSV91X19rVT9pU20rOUBGNXJ8U107XV5PbnAjbWdYVSpbY2p9OWNTUFtNe1l8Q2AjQkAuInp2Q3BhfDY1JVZybV9iL0BWW0w1KDJhYFNJPnNR''@;'; put 'put ''RSxjc1U4Wld0eHNVYTR+T1VVfEhXP0J6Km5YJFRPSlV6a1M/MWU5L0ZYdH0jOS9OVVNjU0hgWGE1fDNVQSIkUXR9Y2g6ZChhI2pOb0IjVnJuSG0mP3V5P3VQOG99aSFkJnIoaFNMXURgXSs3X0RSRnxMUmp7TyY8W1BnPyg+VUdWKX5BT2pgQyU1SnMseik8JUw4bSY0SSowWUw5JVh1Pz45OSpA''@;'; put 'put ''SmxXSyNZYll0L0VKPyhaNXIhUjA4XWM/Tl9LZzxdeUVFOFdoPFtoMSJXTiV3dCJEXVVaLjVfQzkpQDJKRXspLFgzRy5lM0dSMUl7aUJWXypfQkYxNlNmRy8zKk59NCspMUU8SHNVYHZ7ZVlvX1tEJXU+ZUZ9XkRmbGdaLmptNDRLT1EzNFtWI1d2cypQMnkueHBVZEdjUX05fFJGYUQ1Umc7eSkv''@;'; put 'put ''R19FUWptPih8I0tUQDVHfUxDM18/bUNxc2JzMjB7cTFYUEhtSjs6YG46b0ZyN0huVXtFNSk3ZHdON1RdWyRaRmdWI0VVNkl7a3dbV2FnUTxyRGx5VXVeTVdKP0RqOmlVTFFNU21iU04jZDo9Y3dvbC5aRDxETUU7Rk5RPEQ/M04xOHQycmlUMGd1bjgpNC9EUipYQig3Mik8fTs1cn4xbXE4O2Bz''@;'; put 'put ''YFRgVFlfMU5hWDhNMERHfHRPVG5KM3gkZTVldj1bYVojWSNtXyJfOWZ2OXtGa0hQe2k1U0olWCp4LzdKUFp+T0ZQZkxdUi8qdStsN1ZqQCFwRkhPRVZ9WlcuN2lSaHRVVT9RTlB6X1hvI1dCd10xc25ZfkFyekw/M0s1en1UW3hbYG8pTH1+OkB1OWYwP3xUTVA6UntvLi9VOUpLVVtPUHEyTCE/''@;'; put 'put ''NFc3MWMhNEZvNGR+ejRXSTpmflFxfWk2Vz9dc2ttLGFVWjBESWM3WGlIYE86ODchRmQ/XS96ejM8IV46OmNCOk0xPHA3UHZFRipHcCohLHNsSklbTCJacXVCZFl+P0wmLzZbK0EpK3B3RXVmOlhleFo4S1d7fkB4fUA7P2RxJVAwK0VnK2tmP11vPy58dkcwaGpwQndGTTRCTWN0Y3pVSj1VQnpK''@;'; put 'put ''fmNSLlgzbmJ+NElsIUR3TkcuWmpROzBZJjN7X2ozcHc6UltzZjx4VzZNcnRrM1A2WEg+YTw5MyNENSwqLGtLVEg1O31XZm48TC5bQ2BfV2l9TzJyVGBQKl1vVGlqOUJkT3pkUGVdJUNYX2UjVFJrXUhkIXhTO3IqdD9VRUVkZDtXPUs3YzA+OCMiVHY8UWk8X1ZGLlhNJiJvWEg0Jjh6eUBISnNk''@;'; put 'put ''Um0jPF49RkYuQVhEbiM5O0RTPV42UTNuT3JTd2QiU0E3PUVQdVtKJHNDfnRMejA7cD4uST51RmltLnpmUys2VERuVT13IzcxeV5hNW1hLCNTYTleblpBe3RIenpIQSlrRHEqVUdiQi52VF4yeVtUKWRBTHtkIygwIyhMd0xvR21TYGFuQytfVzlddjg0YD5pK2dnMS5ZWzNpXVQiNihqNTFnPjlA''@;'; put 'put ''WWNVe09pdTQ4YnpFWXNZNFBDLm87Y1llVkNhZG9jZWxNZjdjSjZbTi9EU0JWfkkzJClRRFJYfT16OjlZMiYlMiRxMy94Kj9oRHZeMlRSWFMwMzc3dXdsXTd0UnRUSGhGLkskQFBUXks2MkQ2TnpxfkpdPSR8U1Vodz9zczcqYXlAcVNqVkE7UWtUKE1wUn0wQVo4VyhyKUhGYzFJNkxfamleLz1Y''@;'; put 'put ''bjVsTkdyVl4lJWJRaVVoXllxPiNgKCw6QC9TKEgmdiNJJGApaHFXdntMeiY2eyIwWVB6NHN4T2h1MCZ6V0RMMFIoRGl1dnBbU0ghSTIye2U7aHBycF9NWGU5V0ZQREpXMSx9PWhSfllnRU8qPng8WDRBPShFTlklOSN6P3FtPnQ4TTgxYWIpNlhMbC53QmtIQHpSX0U2KDwzTCZVM3UxSThARldW''@;'; put 'put ''ejJ1bzVvWlAodkYpRj0veT4jaWdgS2AzfUk6YE1JPEB5dFBhJF58Q1ApK3UzJHQpYGRadGY8blc0dHp4LFF1VzNrY1d5Vzx9YTAyMEhDVDkoM3xRVF5Pa15hMWkjMiZzPGtqVmRkIWVBQVo0VXM8a0EuUT9+XlN2ZCU+fHVSZ2MwOFRXUzsqUiN7MlMhTlkxei9iTFIidlJCcm1TKCQqemE7UC9W''@;'; put 'put ''KnA+MUhYbVFLXmNgaXkyfnlMJDxmYSN5eXUpanZyaHpjME5iZyY6KGJzRjBrJCErMig7fS9yImNzPW8rIlUya0wxdTtIcSJOLEZKJGheWy4kamJzMTAmaD0+ZypqKTpzMXR6Ql0xTjNxUElkMjs+JipYJTpBTDtxdFo4NkJVblVqfSR5Iyh1aWphVylQI3Yzcll1OEVIeSMqOjZYalcwbFlNPEdZ''@;'; put 'put ''OFNaK0UreHF7JjUzZFksOTdROHR5Xm5aRHoyeWUySitfbTIwODA7LyNxTWglYCI5TS46Tm1nW0ddSERsfStZNW9mJlEpQHhhLFBCfDo/RGF1cls4bnpmWWI9d3cvWW9JYnQ0SC5wW15SInxUOmg9VTVzPmMxel16a1hKPEx4OSM9U0ZoVXw1IjlkcSxoM2RpcV9kP1VWWzpRN3dUTSZzNE4hTVgq''@;'; put 'put ''Z05DQiQkWClHODNHVSR5e2IyLzlkQz5bKVA6ZVosR3hCVE8qLzREaTp2LCRwLl9WX3M0PCksJHgmM3VBL3Bsdit+Wkw6dnFhKD09NW0wQjxZKV5KPGY9ImclciYqPV9jI1duaExOKVpncHgjXSh8My99Wik7UEA/ZlJOTl18JFI1MjokMFhBOCZvKnJURWNufUEsNS5NSE1vaG04NmxwTSQ7dzlN''@;'; put 'put ''QXR4O2lEODhNYkFqQmxBY3UqbGlWOyhAWTJYQlpxQ0QmLElTLytNUmgzN2MoUmlAb0prZVplJk00TVt4VHZ9RFhWRVhtS3RhPjN5JUxiejwramlDNlM+I1g6SFF+SFA5Xig8Pno4TnMhKlZsMEUoRU5ULHg0dUBFWnVmQjtFI2tUUVJnZnpzLHdUInkicVolVWREbXJyUjBBPDZxJjV+Jl9lPy9e''@;'; put 'put ''JSlCLGUleW4/MHczVE9MNmhkfUZmXXopMlQ8OlcqQCFSZStyYWl5bE9Ec0p+Jk90Im9EeGNDIUBRR2BRMGRrKDRHczA5Sn1iNkhhVDtxZGBxcmghNXFWWWpCMHNVNz1NWkQ/KyZ0OCJ2alZpUlVHIzZzYSxjIX46bjZYekBfS1R+ZEcycGJFPS9RVU4vX1Y0QHNRPm5DaHQkOzNjckx8RTVfOVlm''@;'; put 'put ''M0FPb21rR2RGXV9UbkRWP0MhWyRgNmhyNnhHPHY6Xm8vNj10P1UyJFB9Vn11eChTKWJ7bl4sbWhkW2lFT0x3KVs4dGI9d2NufkhkZVhbJjMiYFg0Mj9qcV5ASEA+UT8zNnBMO1B5OFk+Vmh2V1o1cCVRKjBHZjQxYHNxTFh8S0J8QjUvIVAxcDAobEsoKDxmZnRvV0teQ2BDaFNlJndXWW16QkNg''@;'; put 'put ''fi5sfigmQmJOOlgseGN2KFduVTM9NVtSP2hjQ3xyMzVeZDhWdUxpe1FRJHpNNClSLmM2Syt8QTgvLy5LfC90fSUwOE9WeX0pdWwwUCF5e10uaWlNITFNUVUmeVFqODpoUXZ7LColQip5YjF+bDVMdnhvUmMxL2xrO2w8ak90eCNeTU5dKSwrM3RoVkRqbCZJJHhOL0UjWUwxI2NfLnllU0RxfitD''@;'; put 'put ''aE8iVkdQLk0jNmJMbn45YyFjRyo/YFUmfU4hVSMray9FISxWU087YFRfQktBYzx+c2pHeV8yT2NhbmwuQlB2IjZLb2M5fCROX0h9MCRuIjUqckBTW214cih8XUdUbU50fH1HJkhzV0hyaWshRG4zOTs8PURrT0RdQCssQHosW3FBZjNKUmFme0FdYygqMnNATX1vSnh5LmhGLChQbi8lZnJTb3Aw''@;'; put 'put ''XWkmcXh7OmU4ZTkmSy9XSkZYPyEhbjVZUENJWD47alVTWyx2TTlXPVY6V110Uzl2ZHkxJipjKUh2UzsyK1lXTnpUOXUseXk+XkdyUTl1NCY/XWdPdFg0cjpkekpPQz1aeldFKixycFdlI0tuIWZJOV5jOiloR29WZTxxaFBlL3cuQktkVjkpM3NjYkpeRHhDPVpgQDk1PnlGe3JKPVgvS15DSGBd''@;'; put 'put ''OEdVam9NPzVUYlk3RX5aRlB3amdXNjo2YFBJITNjeC5deCRiJj1HVDBFNSZ2NmZsdWVGbUsyfEA8WFpFWXZtRjJsek5SLmRVRUhwXV40dEp9WmA/TT16SmhrRXNNSGZuQGRzWEg6bF94KGpTXnRNNHlXcl5xaXdRSVBDI0JDSVJefUVlRE5rPSVGYG1dVGJwTXpdXmE9VDVpXkZzd3RKajFDSCNb''@;'; put 'put ''eGF5bERldCJ0ZktgeVQjTXV3emdwJlVjZGBhLiQ9dEEjZ1ZuNSMpWENfKE5vW2tWKCJGdmA7NXdAdFNmWnlCaF85dz15NGoldzJLZjE/XjlkO1M5JFJPekoyIiEhdEFxWHRAVU9GeWdDJVlGaExxVWpuREhgXV01UmxvZko0Y25PVGZ0SE1UeU09PD9lXXc0TGFdU0wuZ2tmTU8sSV57Nk07X3tT''@;'; put 'put ''JFVfUFgrJXVLIWFjRVU6bykwWkZkLE5deDRUX1lLIjRDRU5DfmtaJnRrWltFSTV1aD14ZH5sall3Xyo7aUA/KkB1JTgwIitUUiNITjFFN15jLEBnTHleW1JATml+Kj82RGYvNTxpM0NMQUJHcGtYMXRFQCxCN0NwUFJJJmtKZ2dNKCxfcVhfT3I6Y35JZ29zOFkpckxFT28ra1FGSWxNc3I+cG9H''@;'; put 'put ''Ny9iQjJ9Xzs6Y18+M3prfmJqP3tVRFEldX1iO05Lel9PIlZwbEkwM35FaTdXJWh7JSNVRlY/KFZmYm09NHZ2cikjeVc1T0tAJkJ+Yil1aG0pIWtXZClPXUlsPXZfd09OdyNvdT08U110PjNHeXpMblNPRXIoYXxDOUMlTF0ySzRofmo6QDJiIWZAWSkpYz93Qjs1JGlnNkNeXnNUU3tEYGlOMi5t''@;'; put 'put ''Rk9rUGJPLlsrTlhneyYzVV5QNDRJWDxQNjZFY0V3NWthJG90WGZ1LnZuSiFRI3k+dH4iNHkpbTRCfk1sSTkzTm0wNXt0bFQqSjF+NipDVF0pZnEzOz1kQGEyJi8pYzopJX5DdT8rX19vXnlsLHs2Rk5IcSxDSlchajlwX29AZF4/aDgsR2ZYL31NbF9JSXlTd0NdZFI7UiNtNkp1WUpYUDF3U3M+''@;'; put 'put ''bzh9JD1YeWt7by5hXVBGOHIkPHUha2dAJX0jeCwmPztPN2RFdVFfbHQoZTd5PU1oQGtJRU1Vbn1MPUdqPGNrfEEvTCtSLGMsbkJbNC5TT0doaWVScUtQbTdGNjg7Xj4mWGRKeis/I3YvPSltfiN0eHguSFQkciZqcC98WiFqeDBRL0RLLG8kIilzMU93I2RRRC83cClDbGpsPXExNyIjLk1fXkxO''@;'; put 'put ''SnFPPTZHYk4lOz07ak1bNi9RVSw7ZzU4PjMrU1ZqKGciPFl0RlVLVUBlazhXNzNXSCU5Z05PKSJhI1E0TSsubmJiUTJnSmZkcmpvPENQY1IqMz5NRiNzZUh0LChCSjsmNUpuUzR0YiR5UUVEVnJzdXc1bE1vUFlQd1BJbCJ3aFQqfXIsS2FfYTlqOG1Ld2pGREcwTU1zJmoiUVdgc2pSPmM1fG1T''@;'; put 'put ''Y2hZWXZjUlUweVB1fUVkLmxFdFhYPXJAT2UvKFF+VH42RzovaH0vJVQobDZJVjBRS3loMENfYTFxYSMqQkYlaUIpRz9ZIjF+bGo8bmFaSWR5PUZWcThPbHd3KjlvJmBjOy48SWFKQyZJfWVfTF0reEZWam5FTGBSMzdLOH1ic1Blay59NlVzclAiWFA+RjNuTklGMVlCSE9rUEJjSzgmNE93TT91''@;'; put 'put ''JWxdUFMzLGtFNipOLnlSLzdSOntbPFBqJE5CdGdvdXAoQUxpWltaQERbbns2dDNNZDM/Om5XMClXakZTVEJab3t2Iy9wWnlNJTNpUkdNV3dabV9zUzl9RWw6cClsX0ZdKHEoYV1uelc6Rjc7TGU2bXo0ZGh1L2V1LyxSJGQ4YHZsOGRqJDpCNUg9dDZmenhlUjtnNlNPSSw/KnZrV2MkRSFQMH0+''@;'; put 'put ''djFGbXtzRE4uXTArUilhTVBkXy5mcipYeDRxXSNdPjZvMzdYWD5XLmwkby93MnxQN05XImxTYmtfQGhoW0whKWFAOU1XM0toLHZ6U1hZVjNNVk4uU2g4NyY8Wm0vY1l8Ty5dcUx7RiZwTkUsVGIwdDdwWng7QmNBZ0plZlouM3Rwe1NtZHRaYGlBdjJYPUxKWktFL15tdT5SMiZaanBpUDNNSXpJ''@;'; put 'put ''YSw2fUFoc1EweyRVVllifTQ6KklsZGNKRSJGdjtOJGwiQExqdDVAUVUuZ1RpQGlDfUwkTTA5Z30wbWQ1JU4sd3E2JE12cm94M2dZbnU1OWsuWVJ3XVN7TTpzJElVMTckO3xBTXxLUko+WyRdSlVUY0RYJmV+aF9LKyI7bzJJMFdCPGR7fkU8V0pvOyhXam8iSCV7cypoIkMzd1IpSXdfX1J7djUx''@;'; put 'put ''biNdbl09SnJnOy8+ZFIifkokdm5MVGhTVWYoL0R+aUY+OmEyWjZxcWZkPUtQJHkwV15rZ28/TFJiITkjXlcsTE5TLHVTZUA7VFNjMn1QP0BCZzNdO0cwPDheOCVCZElyVlQvP0Q9UkIkTitSREZtX2tTZ012ZXBkUmVSTHwjcmRtL183aT8vUilbdChDcS5HbElOZWN6b1BaZiolfWMvPU5PZVlj''@;'; put 'put ''bmp9PVIvKjV9WHxKIj80KTIvKDl1Oj9wNSh6S1dVZmBaaUUha0sjUjEhQElZZk0wTiZ4XV85Lk13bWw8RlE5QmxMPUwpaU01Jl8mVUc9ZmM3TXEqb21hbzZ7K3NMMX42TDg1UyUwb29jNSZ5YylFdi8pazNlTCFeeW9KYmxselJ3alhvUXZXXjpvcWBKZXVbOVkpSGJOcWFGMTBDNDR3eD5oVDhs''@;'; put 'put ''cFNZNX1WaClOTlguY3ddTzZeSXZkbHpjSndVZnpIYSQyY1V2SzNLRVBTMiUjVnxFNUlSRUU9NTg9e1IoYzV6aUBQOV1KZlYxNm0zUyJ3VChsaHheKnMyU1B2VUpTPVVRI0ome3RPckEud3JLKjhYKlB+Ri5OSkZZKVE4cFFzVn1kR1RTZ0FDLD1UUTokZitvPkY8WFdLOD9LWCFwJn5wMm5fIkZx''@;'; put 'put ''Ln5vLElTLF1VdEVyTl1kZyF6Tn1PUXomdDV2JS5jdzBLIWskcFMhV1pPfmIyLnI1ZWk4O2QqY2o+aSNyMVhHem5jM2pBO25XbkA9S1R0P2NZcEhPZy5OeVA6aT1gN1hIM3d2Kzp9Uyh7PFJvUVNDOyhkcz5lcmtIYDVlK3FpcH1PQyxAZyU4cV8oSzk9U01yJnZNYyQoXX5yP1lPcCpjQnE8S0tn''@;'; put 'put ''OjJvSiZTLEwhTmFUWjp2MysmZ3spVH1mUk9Bc0tzK2h3YVJzUU4vS1giYmBhdEhyb3MrNk44QFQrPStDbUB+ZEUyL0M5QlhMcSFwM3gqdVl6JXdAOiI5O1JObnUxck5UWFBwdmBzRHlPJldUNHdWeSRofiZnYyFdRlJMdm1tNitIP2BqPGl6YiEvbjhBI0A6MlBtQHFfP2FHVlJ7XjNrSypiKnh+''@;'; put 'put ''IyZoeUBCaE15UHY7ISReNHN2bkZdYWdybDl7VVRZK2lqNUZCNXojWV8vSll+blNCMGl4blBHSmcxNCxBeFRDLGNeNCNhcT1uNUVbSkB3MFJlP0s8XzZnVGNxZGA1e3Q5JVpIXUc+K01NeldXWyVIdlZSRmVtTm0iWz0kenFiMixFKFkkbSlzU116I1ZmOGtWRlZnTS5rTFR9XT03Vnxuazg6KGNB''@;'; put 'put ''eFQlVmcseEEhKUJafTYpWDY7Y2Raal0mem9DdkVlR3FOYlprQWk+MlkqVntFUCtRVH1dLD5aPVJDOE5fQj1KQiY5aSpIbzFbO2U9b2NXdlkraDgzKTpuVVUkdFFrOlFGbG08YWh5akBJMDpVTSY3eypzI35RKys9eT02XX5XdjgqKFUyXXd8TmZRIXU1QXZ2TGtoKy4+Q0prayVIZkxAfFFjV298''@;'; put 'put ''e0x8XXEvUFJHUD9JKkxQJGR4cHtafkMxN1IpV1pJNS8seWRBe3shREVvVkFON1tiQ2tvMnlhOyhUVmV+OD9sQitCZC80QnkwRFJNZ0F0PWE8PFZpeiFGbVI1az1nVHNGNUdadHorLzQ9N0cwNEdzSSl1XnxnPCM1UHZJNVlYcio3bllkVG5mXV17TUo4PDZuUEQ1UEVeSU8wQUFqPmlJS1ZgVzsj''@;'; put 'put ''TEEwMX55U2JVKWo3PlB+Q3Q4RC5JI2ZvZlZfZkMqWUAyKFNGRGI0K2hIcSIraiIoI2JVSztBbntYQns+aGYzVGFqTDFtajE2cnNhVmU/REM5KGdrdnpaJCEvMStHMlVrYDBZYmdOZT9vNmxnKDxyYGdhTHI8PEdJe2VASihYL0hyXW5tVnhPOS5oPTR6QHtSPTgqLyF5ZzlRUjMqIWZ0QlsmTiFS''@;'; put 'put ''YSlkI3s1VlhEIlApL08wPk0sb1p0STxnWG0pUWBqfiE0SzxqSUxLeWhuLkldJTB+T3c+eztlT3RdVGUpN24van53MVhpRnU8cE5QSnVxSUt9fmBPW1FJW3Isekw1I0w6XTAsXmcjNWwzWzM7TDZLMkkiW0hoaERIemI5MyQ5R3JiazA+K2c0WDNMKW0qfkw8eXUyPyZLeV1PK1J7NWFfQ1swUzwk''@;'; put 'put ''YlIhcG02Q3o7NyVkXi5RN3dQZ2QjNzg2UngqXTx1WXYuSGFHN0YwMWJoa1ZCWWVXLF9FcUFYXn0kRnYkaU9wIjNfYFVlQntnWU1WaFl5UjI9ZXpIW1QsLjwyMTY3c2o6YGI1eTJ8SVYyRT9zI102N3sqKmVGMCMyTWVSVnwufWxSJHlmR1s0cS5OOn5KOWVXWTpMImNoVyNfd0Usc0UpODJRVF1C''@;'; put 'put ''KC9wWVFePiFVdy9PV15uKFtLeUk7aiopZEtBS0A8Jnl7WU5NPEs5VWElbTheRl5afVA/YzVvdit6dDBYUURTWyF6S302MVsyaEBuRjtkMEpdYTRiaFg4bGptbkpAOUp5cDFsTThffUtSfSlKd3J0RltCeGYvJG8zOEheeihhc3g6ZHs3QWY4JGMxciopQSgkd0pQPUg1d2ljcTVqJnRydmdJMjte''@;'; put 'put ''JVIqViJHYT5RXzY6Km9sNmAlVkF9L0dqUCpDPVUqPm9oOS9NLDt8eShHVmtGWmpPJFt6enVyIURCW1d4PWVJUFZ4XjVleXhPdkAlZ2NzIXt8W2dLWTUpbjFdYGNNLFYucG96Iyt3JC9lRjM+ZShCI0lfMzIyO09zV0ImZk5INnlqNUA6SzlsL2kxUDw9dkVoVzlXLGM7JCsxaiRfeEJrPHNSSTtK''@;'; put 'put ''JVp7VktkUWBZJipLcWhRQH5LQz4odXk2ZW5hdG89fn0hTDlDM2dQU0JgL09VfUZ8QUFQOCs5QCwiTShGSTouXitJJiZpaSYhfnhNIkNGclhnN0FrTE1YIy98KWx6YnEkIT5pZHAsPyNvWkJuIWViL3xWaCk4b1lKUFZralh5cTpzfDklSkwxQGI+RCZxMGtWMy8ze2VCUWl+bjskT1ZXbXQpTVNo''@;'; put 'put ''MjNKV0VXWjQjY283eTBvNCo3MXV3NVI2QFlWazFUeC9rQkUweyl+Vllwd1tecyYsalJsdjNJbFVEa2s3PVVzOzVuMk5ndG86KzJMajZLPT9KY11tblk2I1A0fXsuaztaaW1qfDQhW201KCpyJmd9a0NEMDdWfTB+Jkk6XXhtYSl7VWZJa2I7e2tGPm1tQFVmd1lIYl51c0FYISZxUyxLSEBQZXxz''@;'; put 'put ''LzJmQChGd2BZJHlQJFFqVG5HSDs4O0NIYH0sZmNUU29aSzBNSX5bUFh1fEIxcyFhJHJadH5wVTd5SDlGfVNlZzEiczJsQl9JPk1eW09JPl9zbClRMHdMa1FvfFZzNWNrOTAhanVfRHt9eXF6PzM5LkdWYl9dekVed2QqWmVIYnA6T0IwYThEKHAqKCh1YHZMYTNrQCpsa2lFSFRlI2BoY0kzZUko''@;'; put 'put ''fDV8JHRibSJDQFpfQGdeKWolKm06ZW5sITVFeTxUV0AvajtTNj8pTGdtT0p6QUxiYF5be0llPmQoeiptYUltZUxxQ1IhTzZ1O2g+OEtDczhCcmA7PT1oeUdPYT59cH4sTUgzUzlSJkRDJGlZbll0eCspfHw7Z0dbWk1MP1JIYH5FPEkuM2dMWltFJmM6ZlpYRFJQKzhsdUZzUzZrRTkmIml8eSJ6''@;'; put 'put ''TS80QVNVP1lydj01T0w9ViZdTmI8aHZ+VVElWVtobSpiaUZgeGlHMytCbE1NKF9lQy8zZFVZRSVycTo/VnhdbzVVVTs7RVhRY2N+aC4pPXtBXSpyYVF5WkRrRVJvYmRNY24pZHtzOEozfV5uSXZfT0ZSMk5BY2NNRlR8Yj1UIU0rNkAiWloicD8vcEhMZzYpVzw5WlZ7eXssL286Z09DQXw6ajR0''@;'; put 'put ''fWJKdEcmbFNvXjJTK1RhPyRldj1tRyElKkt+WmdZK1gpbnpXfkN8ZjZFM0ouW14hUEN6Kj1mI3Qqcjt6ZlFdTSVQKG1zNlkubD9PX3I2bEYmKzhxMDhPSU9PPHEqbUtmUXErRlBDNzJZTENVPiN6QD49bzt0Un09Mk82WDtCd2VgejF6UVc+YT9DTzdTWT9ZKVVNWz9bN257eSJjInhLUSNoRjxb''@;'; put 'put ''KFYsJG5KJmFMVzUvJFJUYV0sT1tBdkU3e1lxNHxNOHE1QSxqaHM/d3tYKnhpVWdTb0g3eD9KLylHXyxRISgzdjYqfCVRaFFTPD5pdjIue0hEJU1kSCp+Oi8uc31dcT5RN0pJUTFpa1B5IXRSdz5RaDFoZH1hSDAzR011UDNyJiR0XjN7Iy5ucn4zdCtIVVRtdWd4dHhKXTZ1SDB7PCs8amtmaGkm''@;'; put 'put ''OWZFWm1wWTxjMmtvKERdOFFzT25XNWtucC8jZ2xVbHw3LjE8ZjFzJkYmd2RMNUVrPDcvNnpTc0JBYXhUZTwlclNmcVljNCNLLHdzTld2dEgxMENjeXNyYEsleHgyJnQ2UXh8K1NLVFFXVm9IVSxWMEU6JmtPeGd9MntMQHpJY3xuQ1puNTN1RHVUfl15bHhocTdIaD53JFpgXixldnxzY1EhRiJ7''@;'; put 'put ''bWU9S2JxfDxIX0g+VjMqZkZdWDtOYkNAeDMmeX58KjtdTlAvWVhbTyRDZ29GRzE6SDhrMCh1WzhXMFQ7YztidWRZM2csYTRKa2lhfEVCaE5RUzxNa0V+ZFYzQ04zRTlsZk5PclZTIiNUej1gUUpQMiNRIkdmRyhHKl9HXWxaSERXUnd7OmQwQm9COSskLHUoczBBKUp7NHQuN3RPZCR9Nno6TCU9''@;'; put 'put ''Yyx7YlZ9XkN1RFpzND0kODVLSUNxKEwoIXIvVUo6d2wvTEtwUkZNVz0vQkI0OUVrNGU/ITF0NVNaMmUoWiJgQkgvZUB2R1Bna185Iz92YTlQaWx+Vk4mI3pDblhEeDo2M3VlX1M4TWJnfiQ4JGhxOUZzKyZzQlJkR0EkW2o4cW1na3pRKj5oY010TkhoY0YuVU5CeHN1P3laclojISVYbV5bK0tn''@;'; put 'put ''enNyZ08vQWFGd1BXX0t6OlllVGNIWF5aa2llUU53blovfmJZc1ZrLHNOTVRBPnorTUxSbnBlR1U1eFYxY15BRCE0Wng9bDc2dEdwTG47enJfIytXQVV5SWVWQndQNV1xey8mXmI/Sl0lYmYybSQud0x+Z05ePCxPcjtzTGxMaksjITUqblB6aTgiXjBiPSQ8fEJtTkNXTkgse2YqY3s5OkUoL0N5''@;'; put 'put ''bS9ScGVySm1pWXVGamorMldQSmxPe0RbdEVuPU9UNWB3Qj95W0xbfU1DWXNiVVVKJUNxNkU2YF4zQThiRSRGTF0vNUk7O19QcyFvNFAkbjdScGJ3cSVfaGBibF02bD9PST0jViVGT1ZQPDBEMDIxOXRDYEhacCg5PiJgKD9yVCZjfWBhZ1J3UXt2LGl7SD93dTN8K1NkK3lXeml7N2dQcFJeZUB4''@;'; put 'put ''KkRMbjNeI057Myw+QVsxMTxjI00mfihROyY/Jkt8QjgkRkpnQz5gKyosR1RLYHJWNk0iP3lnKiU2KWohczhCeyJWIj04Oi8/LjZuPm5JJldWNEM4cywkcnsqTytFeShDM2pKRlshcHwib1I5YmZDMnshd1dGIkoqSl9FcT0meCRqOTo6UkdFbHdXO1ZQI3tqeEd7VGVwI3FUMWJPaEtARExYSFBa''@;'; put 'put ''NnlpW1ZgN0kmczJXaHdeQjxjZDdMQEk2I00/LlBCOERVKDhMMmYhLFp2YHxjSD9AeCheRGtPJWkmTmhjTjFQVmVdLD9EVzB6WG4qYWFpIX1+Nzo/VCY8dld3fjFDbGtAYks0flkpaEllZDI3dy9HZjBaRiYlQDczSS9WWmFZaUFLTWQzLlY3Q302dGBZbkVjI1MlamV4UH0sJl85NX0vUzkoJDF3''@;'; put 'put ''bkZ+fSN8TkNKX2Fma3hMcnd7KmM0U35tYFlfTjFYUiRDbX5nZ0ZfbiI0TEAoWmxSR3IjL340diFvLDRvPFUyOjNnRypHL2paTXBsezBiUCg2Ryl8LH5wX0A1IVR1WTtWQDBvJD88eDpRUU44cDc9I0Eydn4zYy42JmoibURNY3p4fkJ5JndDYSlsLFkoUTNnJGZHenNsRUJKOyMpKzouNnJVSCFQ''@;'; put 'put ''U2BKViEwYmpuPSpjK0hDWWUxQz4+OHg5YSl+LGpjKSE8O25ONCpNSEx8cyFkImA8Jk40OWZ6dkB4I0JmKjFgK1t6dUo7XnlpTl8pWz0lUyY0V1k8I3AvdS8ub2N9aFIhLEZ3dmNWMGthT2EyMHdKKWx1PUYlblJwWmFGLnQ5KG9ZT081JF5uYFVbI0tZVU5kWlE4P0RpfjVQNnQlTil9byU4Y3NG''@;'; put 'put ''KzAhKnZgV1ddJmBZMjNbTEohTHl7LnEvPHE7Pjw7Lmh1JTtLZXxCfWEwaXN2dj5hQEUyI3shemY7Ym9JOGQ3bVtCWW82eXxYODNnRS9Na2dLL2VVQn1ZcEY/Pn5IcTNPfDB6JXZdaW1yMDZLOi4pI1slOTJ+JDN1UyVudD81fVdbRDtCeF53QlRwbzkmcz1sNyhYWjc9IX1AT01tPTI4V1hzeWo/''@;'; put 'put ''NnxdPnV3ayNLaDVGRHk2ZkNQeFhWP1BLO15AZH1ATEB8R2RfRnxRO0BYeiFKcUg4WyJWSTdFI2l0M0wiRzNLcih6YHkzcCNgc1pgRHlwPHgsM0hmRSRkdltbc0UqdT9yMHFqfWJUIzZZeGd1N3FvKys4NXZjTisvUHs5QmE0OCllZ1l4Z1NMQz16ZCtfKXhFVyU4LCwlT1szVkUvKEZyQUNkfiF7''@;'; put 'put ''VWc0MVl9a09RJE1IU0ZzaXksN1IlNEEiNT9gd3F8YzZBJixeeSNqOj9hRTpiS35daXZqSkIxOnJ7blQ4LyJzUERteEliI3kjdWVOW3Q0PjhzUFhpYGEjdSFUJUk1RFZKRXVbTTZtbUc0V20jPzB0YFZ1bT94eFN3YkV+IWFeK2MuSHBAc1R7NkFHU3ZnbiZbeWFATGt0ej1teFQ1aWVfUyYhfi9a''@;'; put 'put ''QWcwdGk0VVUyWXxqbiteO0d9TlE1fEdCZnxdMXh9Ul49UTczcWVyeW4oYT9MUit4JGREWlUza1UhO3lKa2tvaUowJXY1LH5dRSYwVm0lR3ZydEp3d15TQ1FRcm8rL2J4ZzFTIWl9Rih1QytOMHx0PXQpKktjeVdIKmlJRElWfEZOIit7Un5CUnJMe257ay5QI2pMK1swJEVfYjVHeWQmeWdaS0xC''@;'; put 'put ''c3xYOnpEcjJ8RHBuLlArP1FbMzBHfFBIcFJfWS9ga3RsY2dZP3siaSFOMWkjWnBlUC9OM3E4UHQ8Kk87aGNWe29hYV0vQ1NHYGQ/IzhRWjhFYVE9RW0hfDprYCtVWnQ6JTNRT0VjVjc2N2MrdmExdjB8ZGoyVWt8ImlabldYdnEwPEx2cmQ0bk4wJXVEJHhwajZzQmkpZi9dVG9YJj0wP1UxZ2Rt''@;'; put 'put ''PSZ+Xz56fmQoWTt2cUhyL29QVHRvMlJXdzs4bWVGViY7SnE+I0gsMGg6KmpBLGZXM3JMVENtUHgiOWJ0XW80TW9EW3N8LlgzIXViekM2Xk5HaUJUbnk1LlA3PkxkIlAza1VOfVlDTD1JISUsKDwvMzNxV0lAVzZjayJvL1pKTSg7IXFDSXghOUQwSDZ7NS85WUFCS0BWSmJUfldjKURuP09Ibjx0''@;'; put 'put ''Xm07cWdXOVV5PUdreSNIMEcqe1tmeW91MzIxSERmZV5bayNsUEplQnFzWmk8NF5lN2wufDIxS104Vjo5Y3EzVWJHbzFed0hBd0M1S284fl88VW1mU1JsMz5bMltlP0pdJCxELyFlc1E4bUc+cComMGxyamk4W2F3d25xSF8kVzRMa2tnaWM6OkFZaF8xckdtYTFlV04pZjdXOGtdOFlrQUhuMVd0''@;'; put 'put ''aFpnNGB5PHxpY3FYU3VDeS89WyZ5c1kmP0p0OyQpWEhmb31aVzo2WW9MMDBaYWR6L2lvPFlmdURZS3NUbWw1JUVkT1lVSn1HUlhea0g2TzxUbEssQzZFSyw9Qzw6YT1tYihtVThKbSFYJVpAP3s7IipLeyF0VWIqMlElbDQ+YUN7UWV9b3tDYVFtSi9dR0lTTW9TMDhbJTNpQTM3N34kRXQ1Rz9A''@;'; put 'put ''QTh0K0BmI0d8aC8keSRYYnJ8Xi92ZzgsZlR1e2VQKkcqRG9JKTooRFI7eWdKYi4xNyFweXhHQDZgQzVkbXgoSlU4ZnpOOEI8OV9xYDxJTV0mJDorbXBjLllJdldRTzR7TFgkOG5bKSYwOitDfkgqTChqRTpvczZHX3RnMj4vfFQhZDJefCR7VjZlRyZlKU8hfEJgS2FCb1pHSSxWKnVpW3k6MDgk''@;'; put 'put ''Rm8id1VgOjsufjZyMXhXfHI4SnN+bH5rUjpgR0NIKVtXUG5uOWE5e15DMiYjanN9cTZjWmBfJjZJc2Fjcj5oWEN8MHRCN3Z0fGtNRVBLVF1qbDdZfD1PO1UsfkVgc1VkdjY1WjZeaCZJSSFkU0k0NntnNXoramF6dX5wR1FJOiFSVEZ7a0hOTjxdMWJ+TkoxKEgoVHk0ck9PdDp9bFlDLD5gMTB4''@;'; put 'put ''eVheSG1WX1BDMDFYZHI9JXtVSDF8fGdbXmg9cX4zPGRneD9bUHxURUlqYWF1O01aJGp5L0Z2fnU6XyM5PylEUUBAOTxwWHYpQFQyOnVJIVosNzYqcmZIO11TTCRKeiovJFdnO31DOEVuWVVBWWFqS0hnKndOaEVfKiV5by9FRTghZVF5aVAqQl96fUZsYUJnLE1IdC9KSFg2OUshO11sPEw3I0ZM''@;'; put 'put ''dFE/dFgsRjgoOlZvRjg4bTUkOkhYeTtlPSx2bCMmK0orRmwodm9sZ0giMzttZnZPJEc+Nz92SnQ1PGk/U2okKHVNb1k7ai9nR2ZpJWhMelQ1KDxvPSxrPiN2dkV6b0pyTTNgIjxZMEBZbzI3OHY/Vk5BVyZjanhaNk4wNChobXxEKyluS0VUai5BRyYmbGp3UEUke0ckVDA8b31fdGR2Z3c5TENJ''@;'; put 'put ''PDR8TiFKPlZ9V0MxUDc5WCNGcitHSSQsOXc7fiMjcUw4c1V4KGAkTXBwWFA9ZHB1Qjx5dFtdfkJpM0BeNTRGN0hbe0BGWWdoK0hBOzhUMUlrI2xYPVk3TDN3QChPZTsoYCQ8O2QzM14wIVc8az41dD1mb3klMTp5anp1SjMzJSYxQlVFRFkpI35dXn4rOVYscU4xMFJpZX1ZNUdILylDRkgseWhj''@;'; put 'put ''RWUiYXM1KTgwTnZgK0NFLiE/fWlNbjZZc0BwSW9IaHJ1cUwiVEQvfn5LIWZdRn09TVM8JEdrK3Rxc1h9YFleQjpIRkw+O05YRHBSRnpKV2Y9UUI4OVM+V14ieTJdamJySiNIYWQleV44c3I4d19hPnRuPGZmXW5HYWo2Ui46eWd4V3omRXxYVmQpRV9CYWYiaVs9XzNDYHdWd05yc3xocGdLR0l+''@;'; put 'put ''P0JqOlkyJGJyblkpTHJ3YEk0K1I2ITd2aFgpcU8lIW9BYWQ7b2R3ImxUUmRhWnFna1BEXTJpSGp2cFVTOjQ5cXteQXdgW2wzU2pKWTt1fjw6SV4zblZAZUQ8KkljWmdFamc/W147bWxVfXZDI1EzeUhPMnlCSmFmUT9zQGIuYlN0OjJgbjs5fFJKUj9OXzhTQmMyQitLW0o1JjtnWjlIMlB3Nzsy''@;'; put 'put ''aSIuWmFKcXNIIkZoXyxNTD4xTCxicVt3XX1UQDBfJSR8Y2xNIW8jUlBQNlpueS9UVzlrb0ltXk49enV9PUF5WWc4b3QvW31TWk84cVJRUXBBQChCS1NPci92YCo+QUVKR01mV19DbG5aR3s2ci9QSz9jcyNkL3p3NGQiUWRQeEc/OUQ3e2QxcHNZdzNEQyE3XjV4VHZ1QVRKVyh7dWNEemR9MX44''@;'; put 'put ''KiE0L2FUMWApUzJmYiVaNiMvVFtpeExzRjhCNmJFeShdai9Ka09GKzs4bmZOL29qXXdvTW4jMllIMX1HJUlpYUNsb3dSRzpdaCZoK15bb3hIPjlOZWkxIT4kYHZPeSs9cllIIypSdkZSdUp7U0YyOnpeVldrcj5eJCYsfWp9dSFfOzorS24pR1g4bDohbC8qe3FZT2wwbiZgO3Y5VVVeQG9TOXlh''@;'; put 'put ''JFBMc1N6MVZSWDthb2FJVz8/W3l+KDFZVCpRaldjKGVQPVk4KCEmMy47RVRIdy87Zy5KPChNOFhEYUc4PV03PDZ9YWArU3R4OjBvX3UuYl9LImVPQ29Ccn0rLm9uWDViUTN7aEhETmBwX2s7ZXxPanIqPy55P1Qqb1M/VkAhezQ2OylCLG51VyZuJXU1Q357QHd4fCNyJGhJaiVxXz10KiJaRVRk''@;'; put 'put ''TmQmdURNd15Db1tmaVB8OEZ8dz5mK1E1JHQ+OU5zbWIuQ0FMcm10dVFqI1MqfDomTH1ydXJUdDlYc1U/fD9YVWBSaVJUfHYxajA1LktVIV94cis0MTxtUD5AQlZMUFtzV15fNExMbHZkWypVXj9JcXFMcHNBVkl3NjtbKCo9ZiMqQDxOXjAvdWxbOn0mM05SWHU6WSlUI2g0RV13bER8dCUwV15v''@;'; put 'put ''ZzExVDZpKWRmRiZJXXB1SE9oPS9WQCNGMzc5OzFEckdNaHZBOComIzZNUWMjZ1pTR0tCel9lSyo8ZzpTaHtyanJ+b1ExdnRtRW12OkBFeHZiIiRdODFAa2Vbb1deUixPKHcuKiRabzcuYWJgRGFrck96QD5EUWZWWlQkbSN3MGA/ZkVpa1lgdlhGOiVXLDR1M3cmaTpaX11mLEN2O1J9dX17VShg''@;'; put 'put ''QlN6Yk0qVG8qXSFCTjUuU1t9KDtJRHBgJmUqIV5IJFRofFsjJElMKTAuTnhyUkkkcXsvVnJVYVB8b1MkRGkuUjk0VCxVSU0vMTBda3o4enpMP3Uwdyptb3RGRCJzWko6MCtZR35KKUA1XzJLfSZzTmdGSz5KWjA4YGt5cjJ5OkcoaVh7QHJsfTBWTngiT1ZdMmI9eiU3eFlVdGApQ2c8TkJXfHMq''@;'; put 'put ''PytmSktOM21jMl0mXit5XmI4XSghNzFmfG1CKkAzXkU3P3lHNikkPFFoZTl+cXdrU1I/SzpXYWFCKX1UKWtyazRNVj0rUGFObyQrSEVMOTc7dmlKMjxdcCFtU01NPnVgX1M0aS5FPU1sSG4/JktydzlQSjApZFkzLGdiOT80PWFEez1mdyhtbjV4e3VRTi9fI2ducj9vXztuRU9ubTsvNVI6MU00''@;'; put 'put ''bUFCO28uTzB5T0RFLEw5Pl9VfDh0fTQrajs4czZRK2Uhcj00SEJYYXVFdFYxdUZ2YHZDaD5HQiwzZ351NiYkQF4uQmhrZlk1YGM2IX5ITWJsVnJkW11HRzZLQFJqNUR4PFJrdjUzbU1UKENJRTM3WmR9XSp7SSs3PzYpcX5PTHc/PlpnN3E3dkNmJE4wd3c3Zz1IUDslNWRlKHFvNlRIYV0qYDUh''@;'; put 'put ''KFFDSUJ7RmtHfTAobTBgd2IoJFVEZVZZMihdbkhXfHBxKXM5YStYW2JvVGReNSkyNjhBc2xPOUdfeUpfK2lVTXNYJChQNl8kcykpWX48Qik1flhUaXJXOW9zTk5LfjZsJGJMKUJYZ2U5Six9cmJTIiwvN2tLRXwsZkd2V2ZMQlRkY2EyfjkmLFNXJD5vY1t5RnRJO3JVX2hNXX12ZjFUXnZpVVY8''@;'; put 'put ''fmEpaHV1QUdEWFM+W05KMFdOOmFxczRVcS4iKF1LUWBEX2E2PHtJNzppY1g9IndbPCVqeSJ+fW40ZmwvPHA6d214OmBTNTBPI2F9YUIpW1NrWnJhUCxULHBOOVhfR0MkdmBDMFhxR0JUKEUkfSVdUDpLQipIc1tzMHZGL2RbKCorSlYuK0ZERyEweEphXVpwb0kpakE9WVB8Vjs8VWZORUF1ejpj''@;'; put 'put ''OSJwWjxvT2tPQ1MoaUw6IT9wSDY5WnUoYDA/VVhDNUh4UFp6e1lPYEdJLF13ZDxHd0pQTTRSW0NFKztfaCNlOFBacy5UVjFHNkc4XjBaaChVPGkqNlZJTiVtIns+I2FZZjxHNyVhWE8vVHBMaCpPemFEUXFYVls3dFRLPVtIR3l7eDAzcWo0a1tFbjFscFhAOjR0P0I0bGkhU2F8Oj1rdUlnX2Ez''@;'; put 'put ''fjUwc2dpZllPZi9XXiN+USh8fE5TKGwuRjx1VmB4UDxLfSF8KC9SJDRMUixZYC80Tm5VdzJDbkgmJE9jISFiclo1WSgpYkBfPH01Z1Y7I0YzZDRpQWZ9TXFKM0tVdExCKyNqVlBmUiFQO1ZSIXNKbHBXW1tieyw/LzxkbTNoMjlbS0o6PDY9S0tRRS5aKEM7V09BdzNvM1A0RlYwO343P1ZEZ2xM''@;'; put 'put ''Vm9BXUtGTF5kOl8iUFRlVTB6KWU5cnl5QG44LHs+dV0qPWJ9aVRPbWFdbXUrMF8jaCJWRFBTYmJxR1A9b2kyKHNuKSQ2IkFAX2lPZCU0aUguUU5AZ0VoUGpDdXo2Ul1JPj93Z11eJi9Cdl1xQ0xzQnViPURQMHAyd3gmV3k5KilgRzFhQExMLH5hMG1XN3pKbzQxTytYbX5HOjZMU3NsITY1RipH''@;'; put 'put ''REYpayUxaWcxaDwyWz9+YUE4fkZ3XytMcmdbY1V7Q2Jacn5NMFNHeHNPJHY3MkhTcnlZfE9yanY6Y3hjMmJHKTJtOCRsY3duanRWW2xJZlgyTGtYP1lJbVdRSlhScyxuMnUvdjI7MXEmSG8uaU1MN0AhN3FiJXxdMCJFSTNWUyFjRlF6MDhVdlN4TVAyejRvVHMvI0ouO25JLDdhMUVfcF5XJm0j''@;'; put 'put ''ampyXTthX2hMIl4mcjEvQXhwUmVSQ3tJIiZPVVF9M3wuNjhiUzN+LkZAaGs/XkhxSWdmPTVlLE0wJXpwREpmKlp0I0JCR2xhalI0UHJqQ0A9SWI9OzBoVT0oIjMkJj1uKGN6XkU2K3ZgMGZyaSMsU0hEPzpLcSt9IURpfjU9Kz0pV2FBSylUdDRmdnRsIXdHYnFedSZfJlk9MWpgaFU4T1hibTlJ''@;'; put 'put ''SFshIyNyODE+SmVuXnBHTSlpREUvVVokbVBZenQrRXQ8bi90ZzJ7VShMKGhdRDBAQE16KFNEPCkuamt9bTUsSXUzV1RuYUtsWkRoYyw2V0FFXWJNaXl3I25yfFkyZ29MI3VWd0B0RSZZSFp6SX1VQyxLWHhTV3ZAL0k0MHRJLEFRVElHRWtjKWoyfVtdc31EQjsmOCM3cWx6bmAjMG86YyMobix5''@;'; put 'put ''T0Y8L3dTWVBBIWlCN04qbiZ4MD53YEtNJnczSy5hO3RCVWZJKEZaMzZIeld7aFBQdkkvfkJfakxfQHlET05pbCNeYSNTX2A3YEYud0MyW2R6ZEsuM08yKzZvPVtqOUlSPUtYUkx1ey5kLCt6XnBgblFrTWIqIT1eRXJiUGovPH0pNUNgKEAvPiYjUjtObTpMVjVAXyZXQnh6LzxKN3FlQix6TlBe''@;'; put 'put ''WkBoOCZRK0VuLzd0Kk5nbmIpaVt5XmpDRz1oJTEwbnt8MCphJDQ4b2UsTHEmKStdVXx+bHpbUW1mRS41d296cFA0ciM9L3Aidzo/eFgoZT1ybk0kZ2xUJEpFNXpBKTpwSUt2fC54Q3t3JkVuN1c/ZXlbelFMLGZHfjtINm9DeHMjOyloNFBDV1M+UEZbJUsweXFPKzg4VmtTRFF+Wz5vYWF8QUMr''@;'; put 'put ''UGlkbFtyanNRcjdDRU8jOEgyOTp+SVYsPnxAUksvYFFYTnA+NW1BRiQsck58MyZ0U1JUQG8wY21URF07Rl5DI05CZVAmKVcrPkdOQ186T2x5YWZzZjosRGoyMyNzK2VbaEwwfTkqeDliRGEpNjl8Q0MsOkROfDx5c0FYQkl3UWRSezlZX0ZbVStIQDo9PUMxeFFvPillbFRlW2V+QC5RXVRyS2Ip''@;'; put 'put ''cihZWyhQRkJoI1BbY3w8U3tIZk1pdVMvYTJlT0dkcStFYnwqXzc8MFRBYmk4aVVQQUtueHxmWUdAMFpTb2EpWmwjeDlWNWY1TkJhVGJyLix0e0o4ZiVMQyVPQ3Iza0VhZmhlIyUmLFNKISRWbXZaTFAuNVRPU2NsYW5+fF9CRyxWX2c2PlUycUJ0ZGtgOlk6eDUuNjw+c2M0Tm5kc1lpY2s2TEE8''@;'; put 'put ''UElbRVkhTHw2KTp4Xj1GL0ZfRWJmS348MWkvI1tQWG05NER+anVCX1BxMHVTclpdUFZFQE1XTTx2bHw0THhHb2FAZDhuMkJoflB8U0BHSjhdalAoWWUyZF9CbiQyZFcsLDs2Y3hwKyFpQlJOfDVpZHc3WkRMUyYhLjJway5hUWh+eipUVkAsIVZjY0FUUGhmN3VKPU5jN2tVWlorM3ImNDkjblI8''@;'; put 'put ''cTtpP0dAdmM5UFE4R10oLFhITWR0MVYzfTAsTXxacHByRm9lVyo5THB8OEoxWm9EMVRhLEB5fmA6d3ozTV5PRzxtOGhZSjIlIyVlNUFzY0d8TlhQYnlPRypBNDxXcX4kbnw7MlZxSVpHbjV4ZW5lSih4NmY3Sk8halhUeVk7VGkzQmY8dDJMJmRLdCRyWj1PaHQzUUhxeld2L35TW3FRZywka14l''@;'; put 'put ''KXgvQlcjSSNaYikyTD4oKTJmQldhRSg3RnJmTXRuOlNvXkl9T0RSVm4vfDgqPWJKbHpydmJSR1VPOTw6dlZvbDIob3leJGM8OXZwMToqZ1swa1MsNU5peHRARmxKNVNDZ0Fna2VXPEBLYSx4aTp1U1lbKnI/aG5wKF9Wbm1VOkpZSnk8VyUpMHZzMi5saSFzMFtAfXpmYiZ4N353TGNwYCtYKiQs''@;'; put 'put ''OCo1QU5+flBpX2kpMWdNLC8qTmBVWiRabHVQaFRRJEM2JDhfVEs6YXNHNz5FRkp3KHlDaX5qeDtUSz1kOH0qOjlHPWI2Q24pXXpgZUA5QF5II0pNbUJtOC4ublkkcl0rVF4rJWNYN0ckOTxYdWN1W1J3bDAiXiM5WG5vQE11Q0UvMnYsW0Z+O2lsJCtjOzRbKGAoPUR6Wy9OLmpsM29OL0dGSSht''@;'; put 'put ''LEd5ZH4uVW5NWnBSTCZ7fVIjaUBWenp1Z18yJlRLLF9GI15Md1BqKm4wOy59dlVYNmF6JVoyZGIwIjIyJUIrOmkwJGVDXTQkSSVwbz9VJlNsTzBPSD9bYUNefDJycypyVDV+ZGBOSXIxRlk0THpDUS5yTXM4IzFzKj4sVjt4RihmSDUqaEsmKUN8W1g3XVFnO0R+QVI2MUQrJV5sSVp0bEFVPyVJ''@;'; put 'put ''aVMiSTx0X1kzQmwheSZrejZPSUs/YVFYN19ea0U2dnFHS0Ezbm19cTdjRHM7cEZVTHpXeTxfW0E+QGp+XTp9PE1jO3t+RFc7YkRYeCEjJX1YMHZbI1B2OyF7LmwjaTJYQVQqcmg9cXR5RzUzVSJ5dDo1L0xNUnsrKVYlcSJzVkQuXXlpQTozdU5nKy5KekJwIkNuUU0yaERUaHpkcCM2eTtuRUxT''@;'; put 'put ''YFg/fGVzekhQPzZ7XU43eFM+KTB4KDtyUzxdbk1RaEV2VWdgb0dHYWpUbnJZZV95VEIhOkM3dSs7bC81OWU5bHM4R29oYiRBI1F8bisoLzBCejVOOmxrcEt0Liwqe2llKCNaeTZjI3M0SzJRb19TKH56cUs5V1FreU8pdXZ8QSxKY2J7WFJVIzdjeDYyZXFUYyNNfWJPZXF+LkBPZFQ3Kl5ZVWFX''@;'; put 'put ''ZXIycl45XTBpWjQhX1ZoPVApV3sueF1iPz1fbzZtbiFRVHRUXSxhYSwqJTd9OVk2IiZYWlchYjxARnV7TUhOS2FAP3lgdVFNZ1Y4N1VrciZOb1dKUjJaWjdIPy5LemUzI09bMEx+aGxlW0NmYSprKHZXJmwheUdqX1grOCphY1IuJFpFZ0xbLHZvWmVTJiY9X1ReQm9jQzZZcTk7Ykl6fSRNYG9p''@;'; put 'put ''b2JmWCh2Iz1aInNGZn5FVmArL0doQEx+VWVKamBqdSN2bkgwX2slRUtCUlFbTlp7W2Z9TyZLTyhUazZFRjBCQzJ2OXMqaSM2cWp5cDUrLlEkJWROcUV9UkohZ2ZgMSNPK1VTTXtJSmxNLCQhTCJuVHRCMFVvV3gkNWE+a3dAQUtJcUh7S1ZubDI0RWdJeVVZOzkjZjVXdjFqUlUoS2BUJjxYezkh''@;'; put 'put ''SEtSTXJEXk1ReGg/I0lmRE1HNyl3QlUqaixXcUgqa3h8a1tvWnhzNUNHZXR9QiEsSEldL10yWEdBc3g3dERDYW8rIn5SVj1VY2puTUIlbWNzS31dJlYuQUspNkB5PWZSfiwpKnpIcCwkTUNORmIvaS5jPnhsJTRTYmVkTTZpSCtuel9HODY1amNETCo9SF5nP0RuZ1NNMHkmKlg2fmMmNmVOazVG''@;'; put 'put ''S0NGMHEodShXc21+ZlY0eT5COUooczBiIUxrWDljOnBafX5XYVZlRjF3bl5mfHgldDpLPz1neUlDKTEreGFuQHwmKF9MZUt5b3ssb3UmLHJ1dGlTb3xnQzhAZHMuflFUXTU9ZSFlMmFXQGBNQURvY1svKmBRIjVVOV59dG1HRkJfRXMlQ3pbIj52VntVYV5pQkF+LjgsckA0eU06XU1SMXciOTck''@;'; put 'put ''Kl9xeyVhbHBsdFlTbyl9US5NSF8wMnxVWHl2JGYiSWI3QzhKS3huYjgkYTxwal9oYXk4fCVbQDZ9ZHImOCRvQ2VSKU1KZlFyQnk/QV58aiEzbmRFQGNSW3tEQ0w6QEV0XVFKYHxSYnI1e2RkeGNyUFI9M0Y2eCowNEZ+NGxiVURsTE4mUGc1Ky4vbGN9YnJbNmlGZWF0TngzU2pmPHpXRy4zWSQx''@;'; put 'put ''Ti5wQ35kaEZYfnVQTkBYeVdmcipwaUdEYVJjfUIpIndlLHxdd01oYT9+bHZWS0xfR3dnUWhYSXM6L2ciXjs7fjoscXtIP3tbTyhecShVdyt0bFFfb1pSJW1je1J1XTQzIVV+Viw1PjJ9bkxifGJkX0NsMl5WRGFjKXQxZ3RKM3g0KCVDdlFQSmkifWM6ODJlW2B6XSpYeVFZcjBKIXkwb1Z7OVgs''@;'; put 'put ''IXRINmVGJGg3dFZLVlBQVFdtaSReVy9IcEszdV91WkpVLllrTkQyLENKLnhtUC5zRkIxLGlTXXVwLlEwP3w7Pn40SG17eGJGSS86PlIrYUwiPDkiIlNyOn5vaCNtTntqMV9sYV46dCFTWCFjbWt7VXROS3QhZi9IJlldPk07WEkycHJ0bmx2aHB2WlprbiZDM3F0STNATGZqITs+ZU10I2VETlV3''@;'; put 'put ''SUghanB9dzZpW28uJWlZQXMiQ1tWUi9vamlvJHtbOWJteis8S0BDTUcsV0YjKWtrMmpxP3AjTjMyfDdNWiJfa2I5NzJRWDMvSVlFRTpOeyJoYyp+TDBZQlklLkNQQyI9NVh0PXRkcnJyO3YyMywoNTtnXiFwUzBhZ21YQi9MQGg/X35Rfjc5eGg8fE48ZU94ayRhW3BfKS46UiteKkNiN11tVCpZ''@;'; put 'put ''R2U1PlFgViFWciN2eF4yfUlaIUJNY0Y/ST1UaTt3cWIyXUNea0Ysc2ojRTNSISJzc0k4YX42L18wJFA/NzQxT0xuY0lmaXQxeFlkOHc7SVFkWFlrQnxPPDx+JlVoWWMmN3dWRjI/MDkvLCl6YCEmW114c2dDcHR4MjBydDs/ZzhzS1QieTI9aCxKdV9eeW1JM21mIjsyT0BERVlCN0QhTUlia2cq''@;'; put 'put ''ZE1OUk5UWDBqTzhJVF08JXwueEY0dEQ7d2pJcylDPUwmez4pTF5ZVXR4PCwsbi54fn0qOlJjayY2Ujt5KklUPVledTtAI3t7IVt3Vz0vWFJ+Z3llVyExamdJSS9UdD0wUl1uaWoyRV5ZP1lVJWZGQ0xSdVdidyVJMWF6fW0+KnNuVDxOLGIxbzRdNFh7dU5fJGhyaSl4T1UxSm9kbyVpeiF8dzo5''@;'; put 'put ''ZWE/fTlDayk2Tm5XeyhjZ05kKFJIfFJWQlFefHs5enxUbjI3OEc1LnpbO157YUZpPmp3ZmQlZGgkQVhHR21pVn1IcFBqPSNYb1hBZT9VczN4fn5kTyQ3RjU3NFdvQW9nVm9FUWZoJDpMdlVLL0NfUmJ9XTlSfDtgWj8mY25EeiZxY0VVMipIISxvXmQpdEQ9IXw/RGR1cT9Ab0tPNik3PiYqWFBw''@;'; put 'put ''Jm1qJGtwW1cpcX4xaj9bYTkjaWpOUWo4NjY5QSRhJDEwU1NQQTIufXBwPSo7PH5mZnMuTm1gfFVNK2tRQls5UHU+cEVIN1R9JjFjWkU7e353R2F3UCFxIUdSdlF5Szk4YDJ1WlImdyZnXiosPV9pP2lRZXd9UV9eZX4kQDU0TGIrT34xQ0JPYjFga1VZPnJzYFR2dFhWeUFSUCFuNHcpY3FxK0hP''@;'; put 'put ''UEU1KFB7TytfV09AWWNSRnFfJXgwOihzMVhdVHhURyx1bm5pKGZ5PUR3fUdbR2FtN30rMD5ySVBDLFlqSGh0bzUsUCZOeD9OYnZKWUFpcmxNQ188V2JQUlgyL0h4aUczTXImUV5raFNdL1UuaCksOWxkb2FXTn5EIzVwKWRYfSw1bEFpL3l4d2Z2XlsvQD5JYVFbVnlqPmZbWmMhS2VBP2dRW0Vm''@;'; put 'put ''YDNSeHhxUWxvb3EjcXBocV8qPDJrZjBPI2QzUWdXWTI5KXV7KWB1TEIwfDs0ekoyLEduOTsvb3k9LlU0JiU/UnkhMn5FVEVhQ3AycDt7KXE0SyZ2W0tDa01MJjV3XWpFbUp0c0ssO0NSeVBaWSxOTXBidVQ/JFJ3ejo9RiFlQnprP0VdUHdqRy96JX1fdCZfblQwZD4zUTJ4XnxPWzg1KUQpWzZT''@;'; put 'put ''MXE0Q0ZPRVJibTF3X2RdNl13Ik45bShnclZ9NkBJdlVhREUjT3Zwdz5GTURSKVdMNzZ+TTwqO0Q1dXU7czJIRzxWNiIrOE49MjlOaGRwNm1OR15jYDMzfVYjT2xAJTtmSHRfZFYkWHApbWkkaSpDQStjOmBzU3VWVVVleFp7USljKDtyX3s5b044PTNIQ2tLL0RqTnV4JGRuS3AmemM8SzljNU8q''@;'; put 'put ''PntKQlJOKnAjUDN1JF56bElPb2VpO3JWZHxDSCNsTjkjK0xtMjNGZjskXTF+MV9AP2FKSiQ7O0s/YnVSMTZXMVg6OmxwbDEob0BeZV0wKiY3UTtgXkI1cSwoLGF5fXdxKHdTNVVqVDgyZyxgdF82aj8mSnU0Uyw2PEUycUJ6aDZkJktCT1d1MXpxPE02fkp2M0lXaEtWdFBFI19qIzNhKEtdY2BB''@;'; put 'put ''KFtae14vNnhvKzpxMTQ/PF4jU0dCQncmMXAqP01qfH1vKmBESEhpdmN9UT55K196Izk2cV4kSWwlR3lfcD5AVGp4WCZGaVVSZWY5RnE3NGhAIUEqNDF7Rz9JQjNlY3QjZmx7Wl5ZY0U/Tj9FblRgUX0rNGZROHVDIzNmeDBKbGsvNmVYQFtBO3kqb3orYE0+d0woUzIraWtPQ1B2b3o3d2MqJCxO''@;'; put 'put ''bTsuUy9vKkJmfSR4eCZXXm1AUkRmZFNMelk/anooXmVYO19ReSpoJG1YcDd9Wk5WR2Z0JCw3a2E2cDl5Yz12VGg1d2ouUFdzYElTQUQxUFszMGx2Ymo8fWlNOnRFIjU2OSVKKzt+VGRsZzNgQyN2e2ltLl04Q35DZD5taTw6OiNaZyVzMXw6YzdMM2c0OGhvYy4sWGhwaWpmLC8vRmdKVFE7Xzoz''@;'; put 'put ''THJZS0JPNHxSUndFR3BFQ1p0RTVSKElEK05DaHgwbl9mdyg7VD1mRjc1cndYdWFefVFTfiMrWVFmVyNGTSklbiopPS9UL1JgZyNBJjtiVVA6ZzJxXV9LKnY1eitvRm90RDFEOTVrb0M1MiJEQXVHVUp6QlNtfW1zQWxiMSsjZVpqVX1MMklyKVUjdEA/aWNTcEBRNG1FN3JqMmM1YEIpd2FpK2cv''@;'; put 'put ''MHE/dWNDcT87T0Ysbm5kVER3Ok83RDRDfVVPN29zI1AvbTxpMiIvc2hBdy9RIVN7YT5YdTcjSENmNEh8PkwweWZaTG5nOXxYaGRPPjVEVSg7XikwRTwjVzM9V289TV46ZmcjYWI+Q3MrcGVEOVIwQFpzdENgMTYkckQvfmB+QmtmUGVoKkpzYCh0K2F3dVlaLGkrYXR5UGpCYUdzdlNATzo7bSpf''@;'; put 'put ''TE0jU2ZibjtxJlN2V3tOX0FzfCNgN3osL3VLJix0MEV3PUFlcyxeLEAjT3N7Mj9VW14oeTYldzVQZzdlVmo8JXA4XlYydWlvRXlEWmtWekZYb1s/W0A6ND5eXUVsaj9ufTNaWy8pNmY0M3o0MlFlUVUjSGRpYk12T0h9bnFJZlV0QlBmXnNFaDUpSEF5OnNPbFlAJHhIQzQlRXMlUysyQGpgYWMl''@;'; put 'put ''dE5DVmFWNEQoO09jREp3anAod35WfEg4cW12RTE/NjJVR0p8YzQ+QlIxcDZrenRHb286cXMiXkJEPnZYfi9qOGEvK3wrez1kS0kmRGtfKGtjeiwsemVpcngpZ0JRXk9wMy9jZyZKM3BZbHIzLjNKTExANDJxRXpLRl92dXI4YV99Km5wOTtwZH0hYHhvc3QhZWFrdDF0OWVyJXpIO2FmI2dFeFs+''@;'; put 'put ''Zy9Hb1t2SHJaKkpOcldbZHd3Kit5LnkqPU5JTVFvSko4cmh2RUtENTRvSykmaiFRPGJvITlIKCpeKjp6My5mQnhYaFZ3a300TGNvO2kqRnp6IzQ4IVp9OVI0Q29dY3lTMWNYT1d8RWBJYUVJPiRhNmY2YWU8Z0JuPXJAO1c/JGBubiRebDVDP2RUKnlvckdgSHVfV3FoQmVIaixbUlQiUm5na1pv''@;'; put 'put ''MiZwZWVvU35dQi5PImk3ZTZwMjlYRGk4VlIkI11VS1B4NmxvVW1BM3x3e11eZikya2kkQG55PkIsRG1XfUd3RitaNzxUJCtlXldyT3tZJF9YLiZBWi93cSpkbjEhIk1hYy9SflR+cElxSTo2bn5lbkNKLFI8VGJoKyVQTmw4W3hnM35lJlBWLyEvK15RVzUqLCFCJUt5akNbLjxXektEKSs8KCJD''@;'; put 'put ''JCZxPSt8SiR4LmZGWnpaWi9PN3ZXSSVzPEVgWUlZMV5JXi59Q1FaRFBOS19NW152R0ZiVUJlK0ZPbS9UM1hJWDpDRm1OKDltJmlvcXdwRGUqQmAyKSppMTgwcSReKW5obk5LWiNUVl4/aS4jO0ZQOSRJIyoiKlVXQTFtQ3N6dGBTT0orKzYxfGl8PUNWRlZnQCg6SW0qQ25TVFdRaUZiVDl3bnl6''@;'; put 'put ''eyQ8QTVUcTRCV0V9cyo2dzVOZyU/P2RLVzEpQGoySGdRMkNUKioxZ3BjNXArP0B+T18mSGlqWVRAO1RIeFZbSz1BdVd8bmhwW0p7M1tST3JJOCxeWjAwT3BIelRjWzMhdDU2XWQ9TlNUL2t5e1EsO2VjZiEhSHpYXXh0dk9ILm5iZj8sflB7I0FBbX5MaF86SUEifCUiXkh0WlNJeXpfQEA2cTBx''@;'; put 'put ''NEBAUCtlZk85YSIoZjdiMCkhVFVyIWdga35aZX1tbHBGNEppSlQrOVhBLzEuNDU5ODZNTVZfU1Y5WFUqa1s8IX05TzN2eyg1SCQvTnsmSDxfb0JJcDxXPjZSYmlKanUwe3c4ajJ4KTdCJFV7eV1aPU8qLFV8YVYmJnBSckc+KjJGK1doSDk3bDpSR1c3Ljs6Sng9Zi9yal18YStxW2t2Y3hJQnY6''@;'; put 'put ''bzp1Z01YNlZrcTRTXyF8fSY+ZnNra0hYbyZoNW9QQ2U2SF8saSxqSkhYMzZ0YHl4LFF2SzBjQFRidGNkZUJuNTYsK1RmU2JOTH15a2l9LERURktGfDd5c1d9NXQidyk2N1dTdStzQHRZWCxXSkE9NXlJaTRMQWdGJHsqZXsmJGZPVndJcT1SdSllViZLeEplaVJacnw8I3VVUTtiI2phUzI1QF9V''@;'; put 'put ''TkZ2e1pvb0Jge1EvLkhZNHRGKiYjTTRvcGRFdzhOXXNYI1tbdT1aZkcoVDpXOS5QdkBGcGxyV2NZY11Vfj5kYFV8Yj18UVNbcD9wL242KHozQ0JJNSxVKih0bSl0OHNoKCRgNFd7WnVfK1pWRlkidHldbDF6YkpzLi8/ZFIrZjtxTUwoOGx3KiRAeDU3Kl1OVGtTMVozLFQqd1NlMjIjPkh0M0cz''@;'; put 'put ''Km5GJWA9ZWNhMy5TKmUuN3xOL2g3KklHfkV1cjZEM3xzJG1RcWw0d0dVOCZXempQTFZ+dTM7aCVpKkNZSWs0bV4sVDNGNzJObXFwbT83d205Vj5jO19Gdkp0MTI1bix9U2IwQXk1NG11PDI3MDYvckBiNU4qcm5aPUw9YUwrVyFSIS9WUzRRelpLWW4zMUMqMXhfY3htJT4oUk4iLHZTeyl7VDd4''@;'; put 'put ''JkNmQ0tHJUwqNipAUStHfGtPfkFyLGlVS0l5elEjLDczTGZPcGA1THMmaXY1cmM7Vi9yOFpsTmNTJH5neE47JXM8VDRNISw5KXtgMUd3dmt4TWU5Knp2PH05K1tMXzw1Y1lNRlZBUlFQJmZdKGlNJV1xQkg8akNHQjV4Tj5zKUI0emlMYGB6djVTbixHfVFZVVtkfVtTcEwoaSpYL0Y8ZUQ8cmtX''@;'; put 'put ''XS8jT2tPb3orLzgpdCxUQ185cld1QWRGdlFjck5mVC9wRWhCR2hfcV8hOjY1dTNZI2lCfjNuTDJjb2NENDchWmxLKGNhaDMxMWJ1c1c+QmRjcVZnRXM5XSJYYDx9NGl+LGlwUiU2e2VRTWQsQCVJRCoiTlNDWCNqNUZkfXEhQGRsOl1NOnJ6PEBnU0BpcThnST8qbkdWXihleiV1KWt1NXFAd3Vp''@;'; put 'put ''YTcuTEBvbl1nNnVvOF0wLiltMTNXSTVwbmR9KE5TM0ZmZmF4Li8qIzxOT0Q8Szg9a2I9ek04UF9CUlZhKissVzdRdiJtJW5+WzFnW1BjNiJLM0JxUSFydjBkTihVLkQ6T203WTk2IiRCbyVQc2ZkOypkTl4wdnspXSplUSw1XS8lSVJ5e0YzO31eZWZASFFOTkRKLElALCUjRCJRV2tsJFksVzFp''@;'; put 'put ''b0NtNF8sITtCLEtkRzVpTyFAMWFFPXk6JnFmeXhpbE8pa1NMcGk8Wk41JXo1KWk0RXBFYyVHXlFxT1ZYW0x2NTZWQyNBJVcvIXRLOH1zJkNuNSteeG1EOG81UzAqSyJAcXd2V2lrRnJDKmcvJEdqQmwjZzlWZnNfMERSLG5UP2lvNCMoTGtNUnxmZG1lSFVJRiRpcH4paEJZemA7dCxWOlskflpE''@;'; put 'put ''Xk1rQDlLZyljUExaOEc2bD1pM21sWi83Kjo/JltXQ0ZJSWtpT1JhdmElPC5NKjpKOis/W3J2P0RoXSIjJU5EfGNIK14mLk9WcGhibGV5amdJc009UTpkOGY6W0tERGJNQGJsWEYvNlpBe3oobnE0OG1jQmp4VFBDZHhRI2NaPGh6M01EeitzPjxXbF1EcmRPOHdSZGZpMTx1VihwRFljVUdsd2wq''@;'; put 'put ''MGdSJlpFV209fUREIyhQRjZyOl4uekJ6e3diMmVRZGdyPTFhfH1DWmY2Yjd5Y3x0bmRiPkxnfktmVFlrKjNlI2dUTS9fNjN2PHFIUF1YX2Q9UXpFeC5TODo9QE5nK30pY2hdRlJUSjRULlVhdVohVCwifCZlXW9uIVM/M1M0MWJsZVAkWipwfV14SUtCL3Q9UFk1a0w4Y1lEY0ByWiYqV19AZWQq''@;'; put 'put ''XVV7dTlsMDUhPyFPM2peXzIuP25NJEBfU1lgO1dhcT5mXXooZ08+ZEApQmshK1lhWDE0cmN+InpsOCE+PktvYmtyVTFTbHh9MDheOiU4WFUyZGUiW35uakx3diJwOShWZiQ0Qi4wfnR2PlZQVEg2QX5IaTkhSCNYVjNrWSxyeyw4TiFvZ0AwbHlnZVQxaHgxPXB5TWZIVF0zQiU8eDdRUXcsKGE+''@;'; put 'put ''b3E+Rz5pb2FNJVYlIik1cD9kQjZgcT45VXhFVkEiJmo7WnImOjRsKV1PJkE+VHUyIU13bDArQmpiM0V6N2VbKERhdihXV142UyU+eG5ZRzFtVlhiYDNMcH0qd3g4OkJlQSRvR3olOVZCK3JRfDByXiVvVENGNXpZWEhWZT4xRSRxUmt1YWhWRERHLjNWRXJ2MTN6YTR3U0F2K2tAfT9HaFFnXTlJ''@;'; put 'put ''WXx1M34xZkUhNXQkSDsmZyEkMVEmajkrZE02YEt1M25GL1IuTk9Xbz8rJXFlcHJZLnhWZlcwPylhZ3UiXTlZZTNMJXg+TTB8Znh8SFd6dWw0YmVVc2c8LlpvXjI+XlFzdzpLcmgzXyY6fWk5XnxqbC8wa1lRJjNKfUYyUzp0UUlhOVgvQ2dxKjIwX1s7P0xwLkxuXzhnZiNpZ29PTFF7NVhFfTV9''@;'; put 'put ''Wjp2Rz51N0ZdUXdiMXxkeXdYPGpCNTx8Z1ckZ3B1MTBZSWFWS2hbU3lDZzJFd287Kj14I2g2anNjNlY4djlYcyxtQnI7SD50bUhiLDpbb31qNVJGdGdmKSg0JXk+W1tvJTgmbFB4VCt6Z30/OHprRSh8U3ppa2BLbj96dmQoMH1mVDpkTWhxODFESXhbWmZ2cGglc0MuVU19Q0VoTHBjK21sOXRw''@;'; put 'put ''SjJ7QnRBZmZuSyVeeygkdz1Jc1ldcz5XKFUmWjV+M1pkMGBfR25ZcT1qdzh8WENhLytWamlqUjYyUj8hdXtjSUJrcVJSeVg2STMrUTxoellqb2NpNnNBSGlxbVc1a05bcFdxRDtHYXo/KSVTRFNsZFNmK149S1ZTMmhXUDJxLEs8fWJUdy5kZyNyWmxVO25fLCxHSk1xKGNeM1d3fStIS0c6ckx0''@;'; put 'put ''KEQlTzB1eUUjZVpENUROUDtbKyomNHomJFhLaXppSCtOb3BLPCtHOX47dUc4WjA2PEZIcEtBYCpGQWlXM0g7eHgxL0NyPmQzSFtMek5UNi5zZFNkMFF2djciTC9UdzA7NH58LmVDVDp3STR0K1pyJmNgdHN3WWBPcG1jLlBLUHdvVlNibEpEaFlQN2xzfk5jU0xdW20rfWR8TG1leC9MXTZBdE1W''@;'; put 'put ''MXd9TSFWbX4wVS5jd35CO2FEcnV6Y0BGcWkoakc0fjdjWyNHZmExLyIsfEtHMFBEdUh9ODFqYEM7IUtSQmE1I3ZKekBFNHJ4LiRQTWl5KlZrcytocShNaU85UnZpPlpaMTlTMUkiZ15IJFptaUdNKEBYe0VRZm5WL0xPOGFUfThTM3lKIikuP2xaSmhaQ1p3dG1kdlE1PUM3c05IQjRfamZ6OiRb''@;'; put 'put ''dlc/R30zVCZWV2psKCMxMF0rRHsqU05iQmFQZ2t0UkopInd7ckMlWUBWcF00fGo4NVNrST81JHxkKyxWY01MMT00YEZ3fDgoI0tULHFYO0FMbClyQHgsZywkUzAxQFJ7OD42L3JyTV9OM0suOkp4KnFDLElVU3AhVlUzI0xNRyRjRm9EdiwleHA0WVA4bWBNSkFCcVA3MHUwcnJfJjM2UXVtKShY''@;'; put 'put ''NTNFMH1JZiQxOGllbTQ5QTdVM3J0XUF3flBvNjY0VTwwR25IdWwuVzpnMikkUjJ4YXtgTi99MD1vRltxQlZrVGVVNmtyczVMcFRrQjxIa2V5cVhUQWNbW0paVD44JWhfYFYieiImS0kmcD9FMXc+MVtRan4xdW9STFB5TzdXa3FmMngzdmFSVHs3YCN3Wm9RYmRQYTMwJXRfWUA0QHxhIVkjMG1Q''@;'; put 'put ''UV0rXk0qTEVGPilKVFhKYXprSilSUEFwQF58bz9RP2JkK1EvT1YwNHw7amlDOUBQVlhNJjJefXBkSEJNOlF7Z35eWj0yT08yaWdvIXYiPHx5MzVoQFZwZVYiXWQ9eDpNUTtgIlkzU2tuazMkU2B0bDBDTjEkIkBPbSRERDIxZ2Z6UHl4emNTJVY0bCxQezMkaUhve05vWyhEMltUOXg3NUJTOFNg''@;'; put 'put ''TiFPRVs6RCVQdEV9OmhxZFc8dH1ZMURXX2xmZ2IoIyZBUTg0I2NwLjs9ekhXSHtmdmN1WHBkYSt6QXtsWDhQYDhIWnE2K21TTiNUWigzXzpbeSs+a3coLkVsTnR2M2BDMDQyWlBvI2hgcmd4fWViYk1iIkFvaiZ6eVptRz5BV3dQb20xSGFpantFImRrKW18YnFvO2xLbFIlRERaNmtyeiMjKi5L''@;'; put 'put ''WVp3aVFZYjQ2Qy4pM2YwNy90ZGQ3aUZSUnhpRDdAemkwIVo4RWlaU28xLF0uVnsmYU5peGQ1TiRTV104SWk7ZmsjJVd6YHZmWnxDTFhOaURQN1dnIy5Na31YVyM9SCpDdjhufVI+TzNFU29PT1A4Tnh9T0QxQVdtW3YjPH1DfnZjMjpJdExpdjRoUWBKbGAxcH1oXWNeJmVbMl1mYDx9QFFgWjJh''@;'; put 'put ''Pno5dXl4XUd8SndjP21gOWQrJlQzNkFEVUVDaGhgMlRyOlNAZmxgI1QoQnNxX2Y6YUJqSzg8ciFaKWIwcnJ7TTlPe2JOPm9HXjNyJkdNR0tVO1Y1MV9rLFoxYjN3YSxPQSsqXUVJY257JiIoVTo6JGB2dWwoe0NrISk6UiRhIThEbS5RZEt7TWEsUDo5XVYkY2dzOnVfJFg3ZCt9NFJ1Mz92ZEA0''@;'; put 'put ''aWw2W1BFLnFVfTdjTVB0NzB8Y1NUOXpGeEMxailBIipzZkdaIyFjSzg6bkZaRU5hUlg4X3ssSWRQXTI3cVk7amA4U3gwW1NyRFUoY0pIbXIlU25UJCZtJVJZMmRoPTs+U3w1K2gzKS8se0VUL1RWcHEwL0FNRDNQREgsWz5tZzp5dDZgQkNiTi9idkc2YjB1MCo2JF5jSG50UHZRc3sxMzt7a0Rk''@;'; put 'put ''SDZhTUY2V2hodzMlMW5WXkxTN3o9KVcwczNmaEFIT1k4X05mKCVQL198TXpLNypZUCFvNVVqIyVbVytWe3pZbFBlPyQ1UiN8ezZzcHUxYTYsPFtoZSRxeHM+dnpSeEh7S1dGVzUoWztmMzx4VTowK0Q7YnUvTUUzO19jZnBjWSkkdl4xOUQ4N1lKZnw1V3tJXUZZQyMsUXY7QiVrMCs6OFBvTjZz''@;'; put 'put ''NV80KXZpaG0yNy9Ia1loYkhBVVNdPWcsMyVqJTc6UXc5KjNfPVdeT01+SXw0VXphd25yeT5UfWVqRyVxemchQX5XKl1OR1dBKDc6VlcqLzxoQnVBanovfjg1N3FFbUpgajhrYWUlIWRiZiN+aE9DSFk0KF4zJkB4YjBDWnxVRWViR05MNnx+Y1N+TSZoKjAoJUJAYWwwWX1JdEZIPzMyaVgkcSs1''@;'; put 'put ''Lygje2kjXTo9LkF2d19XSkg5PFN3JSt4elhgW2hpNUc1aVFfQzlHOmp1MUQ7aElHbkI8V3l0d2I/L3N5Q2lGLEJeW0BEaltAKX0odWBAQWN+ZTwicnFweEQka0N+P2tSSmY/bGolISl9VGRdZz8uXlJTPWw3fkhTXjRrdVcjeHFibF1SZUg+aHVveDNSU2dnXTBPRl1Tc09ZIU9RYWF3cyMrLD4k''@;'; put 'put ''RntBOn1QLztEYHFndyouJS5xKFIidEc6KFA8b18rfnsjPV42O1t7eWM3WnozVFp3YmcsRGIsMD4vcDB0ZnAzSjVnaSpmWlBAXUd2M1QzKT02MlN3ZEpCJT4jITNkLEJkUFFeQUA2WkxqWDcmNUExZCZ7SGlabUNAeyltPFl1eVFseWZOSUlwbEk+KShFfV83SUFkPC94Z1JgamxYKC9hbjxKeDdL''@;'; put 'put ''JXJFPEZyQiJGPHJwM2pFO119WDx5LiVSYyE3YW4/c0h6Kz1mM2I0NWU4VEgzWTdDUkpmKHRtUzY4N2RLdjZwVjZfQSZKYlEpYmc3VWFoSyFjZEpXVkVWd2w6TGBkeyl1MHc6PT5McjtSK0NDMEZvWm45SUdtNT8yQCNEVWUxW1MyZVUlcWtlZTEiYDlkZHF2QDslZSEybT91RHpoL0IiLypzJmxi''@;'; put 'put ''ZilQYTJVWW89aT8+dSNDUThsOGA5OWpOd0lZcjdZUXYuNFpLSFJTSHxTT0FVKkNASjE7dmE+QWkleSE4fkVWZmciemk7QC51SHt1MF5+elR7NUssfG0oeXhnYTh+dzY0M3cwVyYsdXtmWHByT0NyQ11KJH5Cflk7OjhxKEZZIXdVflEkX2BWUD0yJCo6R0ludjQuQlZ8WkVaVTAjV3tpP0NITnFM''@;'; put 'put ''TiQyXyRtTVZ6WmI/L20lNzt5d1YsZzFCcFZZeGldQT1rQVBKPHA8aVljZCtIWFkpLnE3RC9LdCglVmMmaW1jamtTUk8xYFplZnYscS8qI21yYzIkKz8oaH0mcSpvRyZNVDhpRTF6dHElTUJGdVg0IVlBLjtVQ35qfDc1YzNFLktNaX11OkBzTSllZClAbU9+Z3NKQz55Jlh7VjpESzooSmQ2UVJ9''@;'; put 'put ''dGomOikhal8qYytdPSJyXzMjbjR6N2V5L1hWPUV3cHlyLFVxTG5xRiNXOjIzWGosTUhfc2Q2XyE+ZFNzJENYTVV+bSJUd3owQG9MYzBsantqYiVhS0FaQiZ6UWdJYlhgYmQlc05naVBxdlUzI1taTGE6YSFzRThoNHN7RyR2fWolOCppdyFSfkNJbnYzTTN3cm9jdHNFTTM7V2VQVSVraWU6P2ZW''@;'; put 'put ''PCg/ZjNZW1QpV2FtPk1VV3JHNVpLImwsS0tuNnI3QV0/PkRqUHlCV3c8VDBWbDhiMHg4diJlK2giXnNFIypIZm50XUNxd3Ama0c4Mix3TShzamM7aERVSm0+WGV3al1dJFNNTlEoVXJnKyxOIU0/TD85dlYhMTA1OEVAfi92Y1dZJDt8PGd9RGNwU11OJERJYFVLQzMzbzRmSmM4LD9ZRVpWNlFa''@;'; put 'put ''VGFNMGE2Ti5bdExvYlEuJFFbV1dgQC99OHt2bn5yMCx3LG0qUXZ6SDpuYDlAfDplOzx1TXU/fj1wekZrXn0kNW56U21yY2Y0NTBDXiI/VyU2PU9kXjFxR3BbOUVRIzcoRHMrJm5QJlR2bnBbbjAjSU8/TlV7Unt7NEh3X2d+ZXxHPWpUKzt7VGw0PCV0cCxVcSh5YTFaYnY9WD9xbGFEdCRaVEhN''@;'; put 'put ''VnQ+MUQ6dTgmPyVTPntIaFIpSzV3ZFIpRG04YnhzVy48YTRUfjghNWw0JTcrTFgjZCghIW9zNV4zR1h7M3VkKHROUllFcnpuVjUocmAuY0BjQ3x7TyFPJG1dfX1gTX1Cb21tbkBULCVMNTJ3PmM+Pi81UVZzalF0TXB4bWZrcF9FPy8+LEovUF1pWks6bktQIXRsK1JGKX5jNjAyOWVHNj55cVZM''@;'; put 'put ''XnEuc1dXV2E1fExKMTg7Qk8ke1osSFEyZHlMKDg3eTg7eFk4Qix5MTNWdXtIPz9jUF9aMShwQnxqfDdlSkVMXiYic0M9LmdPNWIwIz0+YWBdeVdbdiQ+fHR8YF53RjFyLzBiNDh1MHpPak9kfEM5a2g7NXRIRXB4OlVbSC9tKnRwakpPLmlucXpBYjVtfEdoejZ0ZndtbX1ZTms5cG4rYi5QMiVS''@;'; put 'put ''ayJYO1N0QUpRdShWPUJ+TmZ7XzsiakwoI2EmNU5Ba1J5Y0cwd3dlRW1bREo0cj8qPDRId0tuK2AjcF5hbXxiUStEJGJMcXhrVUU/RmM5K00mMWVOQCt6U3FHKCw2LmYpKmNZTX5qNzB2aDx5cW0zWkxCU2RdXS5vVWNKYTA4JkBnKTpgaHRpNl4lODElMkNnQ0YiIWRzYHVdU21UQDcvdCFCcUd3''@;'; put 'put ''UFBrQjxyNTokWE12I0FCbX5oVGVWSHBdM3hMTCgiPz4xYmFiQ0pgdjJrcXg9ZUd3N3xjUS5GeWM+XSgzVSRoUkpta2FeJmwqO0krdzciJT1KSmpjWHtzSS90RVo7QXklTHw+ZyZzQnBWS11IaVMhNzJheF9xSEdmL0Q1Vn5JU2lZeVtdITlwSipre1kvcmlnPyJRQlg+VnplYW5QT1o/P0R2Zms7''@;'; put 'put ''bnt7ZVZZckYwKiFhTW96ems3eXZVPHBtVG01SXYzT1ZEa1c6WDN9dEpseSQvRGczQ2V2cmEqaGtYMWBqXTRjPWY2ZTB0Knp1RSRFT2xHOGY3W2wsW1ooJikjN0sibi5qNVhAWV8wXnI4cGNNcz0sQGBhOHR6PilQUlRqKkZCKldjZiw6aCMsYzN1YjIqTW9WeVcuU2k5LkMmbz9YMmYoWlBEY0x2''@;'; put 'put ''S0loLmMqZndOVUc9bHYuVDdoZ3A7QWVKLFRwKTlPPVlMWDtYUHdeZUZnNCVCWWhnPGhMXW9MNHEhLjxvSSpybWM2IyZjUlFxJVREWHMzWjp4QVJVW3l5UFc5Y09rMCZhYV1NNzs8SFU9ZEQ+Z1c5OylGQXxbXmAuMUxreGQlJSw7ekM+cXYlVW9QLmMxV2pUXUJfOEpAdDE5bTA0fStGd09WeEhW''@;'; put 'put ''dkVyMT1aJUpvKklxbmBsUWReUjJLLyY/aV1tQjs7cFBTUkg6fmVNR2AlUlEpZzpNbUVGQH5ET0R5aG41RC40XXlTUlRqLn5SeGEjfjc2QTIzZHBaPHY1eT9XKm1zc0xyVHdPZkxnU0NgXj48RF4jentzJCVBbWxefGBxY3pIYG9hSHA7bFZdJFFlaitFMUR0PjJVdSM5JSVzdUFXMWFYNzhffEBL''@;'; put 'put ''RzlQMTlRLn11blJuUz9pJnMkZEdoJXwsNVBYTztjNHw7VjpJWHFlbHw8ND0uYX5KPHl6c199czFjPEptfFRFYkZ0OV8veW1CbWg0bXNBaUFHb3g6QDxTPDRaYjlZeXdtLitvMEI+Q2BndjpgUyJhUTAoTmhSdCJCdGVpTjl3T01jez5BMngvSVJZRGc2JHxEPiFAY21vNURfeTxqQFped3U0diFX''@;'; put 'put ''K0MzKUsxYCxJSiMyU3Ewe2xwaVk4X3tfTTZGPVcsaGR9SEhSIm1wP30pXnZkNDd1cksjIUB5anI2dGVjN0cqWj5FQmllUjFEUU57Y0IzTSpDTmpTMFVyZEgydSpjTSI9Tz5YJTF+ISFkNEVULC4idTtWOj04OG0qOVRmKChlfU8uKmdRW3VwJSYiRzpfL297LD92a0VDRUJEVUdefGQwLG0hL0xE''@;'; put 'put ''ZXNSJT5wMTsqLnYuWWl6KHk4L1VmMyhxUDs8aSR7ZVI1UF9HUXUmOz02UCszaTQoaW5pUDZjI0lSfEVMWyJTOzJdeF14ITgjT19VU2wwMmxIMTRCW3ldckxAKlBAMyllJiVCa2NwLFY0fkZ4ezJ9ZTcocTp+L2JeLlg5KFttZSZpayY0I15WRnZtcm58Y1pQczpXRUJ4TnpoXWZDYy49ITJfa1Qs''@;'; put 'put ''TXU5K2lleCFGSCJbb1I6O1gwLj5WfiVOTndlaHRnWXFTS2RCNm51cjA6dUZkLkVMYnJbR2AlYkJxYDNiYVRrPyZaPiJDMnRyJHArLzpwU3FzRig3Rn1BSl48fFgwP0BoN0cvaXc3cjhuIlZ6QmleSV12OTpZaiskb10yUiwzVWBqRjxNX0hAKVpuPFFvO0ZbUVdUV0pIcGEkMEUqRFp5Q1txdls/''@;'; put 'put ''TWVTKENLeD1oI31POk8sVWd3fWM9eVJPTCVbNnZOe08yUkVLTWAhbWk2ZmJ1ZU0yXmYhaHRncHdqVzNuajx9JW1sU29qWENeS0I5VHx7WWBtdkEuQ315MnlBTmRbbjdDYzpgXStCVy8pZGZlbDxHfHZaYTZtPUBrLGlXendsdHNIT2YsZDApelZGPF1ja29rXWN7fVsoajY+NS88ODNjP3hVXlkj''@;'; put 'put ''TWdELENjZUgva0RORmdUQ0dTcVN4Y2hkaTVfJGZqdzA8TVUxOFN7dUxGOjZvckRNfCwsKVRgfns7Z0FvNX12LnNLNiZyfnpVcmlLcE5uclolMllhYzo6V05uK0o4W2NJVzMoNTlKQHo/I2xBNkxTYiVfXTlsPVQyKk0lPCRXOkxNOGI/OzN6NzJwZCYkVllkVGElP0xRM1BKJC81KyU2JjM1fV57''@;'; put 'put ''e2xZI1ouIXJhRShIdGkwPTdCa09TQ0g1a0VnP1FBMGVKP3kjaWYud3ZuQllTb3BhPTlHXWdHKipNUnlkNDVVMmtLZkwuZltEYiloOk5TQG1Ta00yVTNGS1lROFQhVWhGXW4pfWtTYTxpSTZVbVN8USJJVDFtdz9TeyJyJTg7RlRCQXl4eiM9WitEcyFMe1hObmhWaVM1TC9Cb1UzLEY7em87Znki''@;'; put 'put ''QzB7MmVYTCUkZ0M/I0d6dE9DRilpOUQzX0hoUSZmKVhKOlI7LD87ZltyOy8jdVFKbW5oeH1LeGdVcmNVMHkrcGNkQmkpOkp8Tyk6QjJlRHRIbC5iXixWLDl0LihgXjdscT5jfHRqN08wYSFXWjZAK0ZWW1NxbjhSb3wjMFtXNllAal52aGAjI3tVYUVkdGlaKWp5Wzk+bjQ5K1JZM2kwfjhNeEUz''@;'; put 'put ''Jj5MPi4+dnV3aEZ6OyYrOVU0fUJveWk4L2Zvcy58VGJ+JnshTU5OU0t7V107SUxJUnpHQUlVQ3A+VjVXKzRhbj0uIWo7PDB+KV9hSWhiSSF+MllJWlNefl9gR2gjSWJLMjdRe3x5KHRMfihEPS5uP3UmWU5jc2Z4SitxR0pqbTUwZF10ZztsdklGbUlRJj94SHk5MDBfMDZCK0wrUDM9XS4xfHRN''@;'; put 'put ''aW1vNFo8V2RHIztuLyJ9e2V+RyR7VmdUMnplY1ZMOUFMW1BwUjdTOEdIPDVzRzF3X3JLeXlbO3pVenlJckVjajUoN0I6KHhIYE4wKER9PktjOlNEMWs9RztpUEcrR1V4RFJAMzhIOzk8WFZDcSNaXzhuVl5WPCR0OGBtZWhMPzlzfVd0WntySXRYOUAxSyx1WyR9QEcqN1oieUlxNTNVYWo3KjIp''@;'; put 'put ''MFYudDgsVDJfNVgoUyxGS0R3UV1hUFJgcSwzUz9PaCRxXy9xeU5lPFl8Vyg2PC8wKkUweXxubGZ5eVdTUiNEPGYzK0ksZWp1RGEzdF5mclpjcDtKQjU2byxReFgzRTAzUkNhNkZqQGJVXiZpVXwiailRXj0qYXNLbWgrS2lJNmdtOD8/K2poayt1L0VjWjciTF1NKkZOMGV9OmxmX0BaPH1RenBd''@;'; put 'put ''aWI8cEVNZFZIWHBUdmZROSZlUFghUlp8N1dpIUBYPEUhc1gqajQ1YXBbLk0yYyhiMWduQXQkbWQ/TXAoXmpJTW9PR0UzQm5oWVN+clNnd2FNVzM6ZEpaUiV2cyxbeGBMWV02aGY4RyV7KjFPR0lFUkZiMngmMipvKzRkcjFRNSlvZjNyfkp+N0l9VWI+YztDJE0xRztXRE9oTVpiK1l3dztvK1s3''@;'; put 'put ''alByWyw7U0pdIVpoZCMxfC8ue28jIlp1ZV1mR2QiVzZPKlovUWl6W2QpUnRPc3Fua0J7bjNkITt0cFdmdDovJEpdVjM6KzB9VUxHWil2WE41KGlWOj8mWDZBPF4qJUh1eUBUcFVnckkvcExrdjMrdlFDMTJwSFlbKWJtS1R8TVZMRDdpNjRUZ3RCa3BgamR7fFBUeyRpYlpkbk90K1NvY0c3JU18''@;'; put 'put ''O2BhTl9TWkojczd2V3w8QmlqRGchbmI7MStvPFZxUiFqfmQ4cCRmMlttaiQ0SEtHVE47ZGQveUZzfF1PMXZ8alpkZEdXOyxlaDQiLlclc0ZrRio/QExFRiRuVjV7K0tIO0guWHRyUU9nd1Zfeiw0Qkx+bCZbLnk4bmh3Jl1ENjx8ME9OdWhMKkQmOGx9c3Q2Wj5iQ1h3ey9ARVZ3Sj5LYCVlejFf''@;'; put 'put ''R2Qzc3tAeChEfUMrKTRYInhgSnVQRCVfOjA9cHchRnA5OS5CdlE8O2prSV49dUhibiJueXl3U0tdMjlaOGckZ2NifkUqXUJofDJCNmhVNXJaZVN2OV08RmtTW29+ZHoyVCRrOihCUC4/cCslSGgiL2hAYjo6eyJ8MClLcnA7UmVBT054YSokXnAlVihAL1Q+MklvMXZMNGBPYTZAQiZYMmVVe2BY''@;'; put 'put ''TnNISD1jZzYzdytVaEg0I2grWzhNb1B5Y0NGVVJbLGQ2NHlLNjN1MjsuMEcuQTtpRC50Li8jQ158JEp1TGFEJG1KblosJjghWF5UfHpeckNrQiEvNXQ4YSYkbFArUmBPe19qe2h6aFh7YVEoPmhlc01tKXk1d1EhaH1xNTA1W25RUU04ZkU6ZVEweFFENDhKX31UNC43bF1fe1YqZz9HTVJIUnUj''@;'; put 'put ''L25tUTNAUDdqXStiMHBKflBlPUxTUyprfUpweUl9amA1czQsZih5S3JzVkUlMG9tOl92cmp1PS84PzNVbUcyTEVifGpDRDZOY2h2Lm5pUzEuUl43Wm9pTnFPdFc2YltoRGZDUixnUXVxQ3x3PlRZaHYmb3k5X3B7SjhbKGl1JWBgOjNGNWZpJlkjbnZdWjR1bnhkfDZAO0l7bk1MXnBeWmpXY3FC''@;'; put 'put ''eU0rVHl1eG47XlUpfngmRGVYJllBZUhgUE42LC9mSj9bd187czNwVDMhVD1gb21wIXxxV2sqLzgiKiIpTEQzVj5AbjNdQCs/S3RrNyYsL3ooL0E3YFsobn56d3RbYEAobnBOZX5AVUxONnF6cF58SWIxak54QDZSPiV0NT5HRUI1dUkuSkY2U2p+b0UlOHdTaHR6c31XO0IpcGlhbHAqcXY8IzIl''@;'; put 'put ''KTBPWV9jYmtMRTd4WVEpeUN8VURudXdCZnBJSXxuKlEmQztHMTM2YmZzIzJ3b2h7KGV7WWI8ezF3KXAlZEcjOnphJjs1Qz5JdDJQKVM0P3paJUVbRnpDNisqKDcwIkdgTW00YXg/KE03UXMufChlakhUcmpiblF2YWdoLiskRjBZJGVtSix9UFlkeik8Ki53TDFiaDV2ZkAuYDskOXtGYS9gZG9m''@;'; put 'put ''YTd+K3ZwZSQ1PkZpZ29Ze1tyOkdEY3RUOiUodXN0ODA2fEFmdFtLWmUuXnkhdn14dnZxUjBgcl8qW3poTEVNaUtOSkkuekZNb0xnNEA8JSRFXXY4VW5QYFtocT1fMCNqNzpCc2VbM0I8bFh5LnAiNyF3MmpKPn58QjdIQlFgNzg6Pzt3IXR7TiRvSDtsVEU0cSMvP3whI3I5UzFYNH5ndkolfkE+''@;'; put 'put ''aSUvNGZeajEqWSkwU2ksMHAhezxfOHVZREd7bXwhRVRlSS99ZFBRWjhiOUc4b19BVnxmYHdtYm89UyhhaSZyckxJNXxhbFVBLD96fSQwLmNWNyolUikzMk91UzkjJWtDd21aRVA+JUs3c0hNSUdkN3RqflRmb2lgREQmXiQ2cnVnXiNpSV4hZFc/K1dRcGRvWiJXclhDfClFanM9Yn5xTj8/SDRL''@;'; put 'put ''VWxyKy58V1c1R3VKX3RbVkYmcixlKHN1MihsRTN1I1MmfmI/YzpYM2ZqMUgsU0NWb1gjbDQkRngzPkI9OlFQblNJeUQrVDhFNTxsPX5WQTF5OzJnNSx0WT15KTtpeHdPUUU6b0NqLChnSVBDZCpOfkVxamJgfVFXSStycy9rbSNeV09KUCZuc0huO1AiW0tuRHsrbHRtdGJuJkkxXlY8cHh7N3VH''@;'; put 'put ''XmMxMXhCZ10sOVtmVU9XdSRaI3NIbGApSD06ZDlrbXsobFViUkxmMGxpZTZeUF5BLnpENlIjIWkyJXQ1eTk8YTQuO2BibW8pdSprfnxffEdSe2VoPkk/WXJdcnIuWTZzM15eWUxad3AhVSR9MSsoVl5ZK01MIT1yTSEjPWIkRjYjMGMwM0o8TGVtfjI4KE8sMm46KnEzR1NbR0tlL05QTyoiSiZf''@;'; put 'put ''ZylKfjlKTG1fOSYmZXUxKi57UFg5MXJ8eFJabEUxOz46VXw/OE9aOzk+QWksaTo9Rl4yUTxOSVlnSF47djUwZ3olVCp7KUYyKyp4K11RPmtZIyFGZl1VZH4wb3d8Vm14QCt+dyk+aTdFZ3w/XmhkOkxDT1ZVPmBsRTEuYkoiZWNnLk1bT3s+aVooYXJtRiJMZzBzSzFuOGpzTzd0UEY5Tl17eFtP''@;'; put 'put ''fExneHpGUkQmRHZeS1ZobWp3Il5GKTViNVcxaWFCPDZJdW9NSEpiMUhVZGZzVlcldWM3I3laaWF1NSp5K0UhOEg2MkdIKS81aWEhbyJ3Tk4/Um51PSosL24wRT0hL2drJnA+V3EjYns/aXQ9RnAlKVpeV1t+T3t8bVpOdE5Ke2hobE98SUg7blNxa1A4L2dqcGRSK0xMSXw1bj9wMyQ1I3ZmPDlV''@;'; put 'put ''TX5+YG1jOyErZn5QclBpcyVtUWYhOERtMzRbemVuZGo9NTFxZUh2W3V0KkQkZVgiOUEsMls+VjE1TCR0aEwuOGBaVjI4Q3ouIXJNaFIzKVtGQFRXQzlwMyRqRGg0OGU0QWtvP20+NW9mQnpqMjVYKiZ3d11sQlpiYStkflJVRGMiLF1YcX4+eU9CSDQ5UVF7NTgjfmgjN204dV84OkY4Jkg2VkZG''@;'; put 'put ''fClfYXxwP01zZjJ5RE1Ic2hwZFJXby5xSlpuPVNRUTQySHlUSTh6eG83eCEoc0JbSzwkQFtLLihfbVZHakx8Lklmfl9ER2BjSjY1di4ybnBgdGAjTERtN2FzeXIuXm9rMlpwM10jO3dtVF9GIS4mJnc0YyFWSnoxZHs2UUNnNVglTHJKdTljbk9mQGlKSWt8NnZZTHBLWTttWF1nY1M8TnhXOGhi''@;'; put 'put ''UT92PkBxTHZyV1t7c1tqP0ZsVGdqaVI4bFk7e2YmX0IxNl5FQkQuQDlPXT97aUN5bDsoIyM2R0ZsbXAzWmUkdC56cyxwKm5mIjAvLHgxXnZbLndVMUtCVDIjSHQyXTlbdGNXaCskOCM4NXFLNjJaWWl9ZT8sRkdnRCZMRFNGIjFMSz0seUQpWG9qSykxbTV7S2l7a2pUYVgzZ2FMLm1IKiRScVp4''@;'; put 'put ''XTNTdndBaCJXMitQLFo5fFJ7PUhqJn1qMnMwRTs7Yiw3R2c/X05OZF1kXXgyWWFVQUR0PEhbNjp5Pih2R3YhSkNNY1BlV3diUD1VSjg4VnxRQXZkWGxNO0dHNWlZZDpkTVVhTklATXY7WVFad1siW2FVU15MJjk/QllbTVZ5O1hqPTRPUDxeTThVM3ZeUXh8Wz8vPTRvKnNOd1hGO1dPOnxHc0ps''@;'; put 'put ''XzwjUW1UZ2JFYWs8emFZVHJvMzx8eWdFX04qYUJNN25AVkhAYWgqXmEqPldOfEFzKiFTbD9DMnoqZz5gTi5gMk9pcGVbVVpPUlY9VEYxMGxhJGNXQGlBX2c3flB5RHV2MzZELj4seDNkOUpvXilebjklV0IqbUBATCskaXlPOHAxakViQWg3UHdQIlJFO2paYi8vZFlhP3dbL2p4cWJbbyZNTipP''@;'; put 'put ''d2lsNGNnLzUvcVl2WGdlcjsybTdVOz1uTSpRRC5MMk0/Sl5wd2ZSVm10SitRVS4xZmFoLFhRU3IyTFRkPmcocUpZSyspMlpjPXV5ZGgxZEFoM0QoV2dEYCx4bTQ7ai9gKzM+cUMjUlF4cilYYkp8PnkwOipvSkpYVk55O1VHRFgjSit+eExLXmdAQjBGTD5PVl17MGxwXkozcGxfTjxFaiU6VjFI''@;'; put 'put ''Nyg8TXNydHp0cVdQOF80b3VDQmNTPi9EUFZhbTFdQGJBZF1LbDN6dVpUXUB7T1srRDo1althaTg+SSpmVV5zUiRiRzhiKGk8RSoqaGRgZSY4eylhaV5fZiVpbWpneCFTWm05dUBZZzpeWGRFUjpxdXlUKXclby44IT1uJDYyPjVCdER6cnx3WWVGPUZRKXkjNzA9eHxAZFglPEA3fDF4Q0hdQTJT''@;'; put 'put ''LkwzU3FZM0dPb3I2e1BVNGxERUFxXTV5cGRhVjNyZUhgeFdWQnMxTEtKcERAQW9BVUFLQnlCK0B6a1h4PSwvMkIsa3BiRk4hI2ZqVTthWn1WVX1zTHlpXmt7NV8hdUp1NiJuZSNXTn1+WXdMNWdARl94IWl9LCVNaU5dT21OYXJlL2hxSk4xTzdrWCxyeTU+Iyk3ZD5rOUdCeVoiRTxLcjZvUFh6''@;'; put 'put ''N3g4MkNXYkE+bCNiL0RlRUFwPFQ7dF9TU099L2c/Ql1uamFgfThebTNmfldgTGsxS2RGI30lfVJqTURAKXxALFdvVihkOGFrLG5JOCJqYHp5KHRvV1l7JUdGQkx2cVssUSQsWEBWb1tgeFBBRDF1V31aT3dpQUFLdzlAUTg1JD9CK2RsZlprKlJ5Kk1CalZ2T1Eqem1UfHRRNStVOEhiYHRWQmQh''@;'; put 'put ''U3dwcklSLnglaXl6aW1DelN7JSMlbl1vcV88UlJGbUVbKDNKSHBNem0rYXlefm95aUBRKVN0ajRTdWxaLi9LRmxYM3NSblgjJVF1PTxvUjBhfHF3Pkc5ZWkjTCJhdG5VfHUpYElEZyFqJU4wU1dgdE1JajhwWjxfbno8Y200NSkoQTpkeS5HOXt0Q0VbJHtLOllSWE87Z2kzNzd7JThPYjJKKEh5''@;'; put 'put ''KlpRa1I8UTpNd2YwWzV7KE9rMlRua3okcmRXMWpyJD1HfCRWdyZBU2duQXtxWjtzYyNWYEdAUiYzOypWWF1FSFJYYXMwL0VKYX5VenBLfHRvX31yLDgmY0hkb3VGU1Z8flZhJnZxY2AhNnd5TmIxPVgyQnM9OlNVayo0UWpld15EMUgsIzY0Xk1iLzxDUzg9fjMlKkl4Jno4WVghKUg2VlJYRE4h''@;'; put 'put ''OkBNKmQhNEdOIUJNeHQ/QC8oTWh7QzZpc0tqbU9mNWhyP312bmAldXhRSU9nP11ta1BONXdXOGV3LiZFMl1wZD5CWW1oPiQuQ0FxSUhgSHtYUi5lTTwqVXt1bEVYZjdzcWFUNlg8JnZMITpLVEkoKixIQnY3KDF9eGlNfWFKbDNWfkRfak9SZ2tWWElpOFMvSGQxQC8iLHg0JCF+U35JVlU3NGpY''@;'; put 'put ''TFFgalZ1XkRpfkVHIntMVChibytSMElIIzMyaWxEIlhXU0o8WTU1MkRvfFJmej5ydS5KPkJpfVR6fCg5XkZrU3dKZzFHSmAyfnJUJllvSmAiUlVlRSp7bjEpUzxMeDIvJkdTOkBvS3cwKVNHfHlUTkc2UXAwZz1eKytkJWMqJGNlJVpKXn5SPWJUZ2lRIVk8JSl2Zjo5ajkrVkpsdiV8I2F2bE1l''@;'; put 'put ''XkIyVDpHe1tPS3YlX1ZwXk9De1tWbEE+MTRhdjYsQFZ5azdaVyUhcjU/bj17SVpkfTY3TVFhYUV4TmI4b1ZuLHVxMCpOcnc/WFpZM0dMRi5hK0g1UFpKamN7WyRlZW9NIVRtVWp2eGReWmllNT8vQGpjTjBkdCVzOk1+M3NWWUIrbUkoMXE5X1BbTVJOX0glKDx5LlM1ZlJmfHF6am1aWmF8Wzxn''@;'; put 'put ''PDVPenIybzxNbD5CcmFNZXxfZ1Y4aTYsaVQ8YGZTY0Y7VSgvRlNoOzskJFtlN31vUk06QGh6MmQmW2A6MFU5MUdne3xpVigjeUdIU1pKazgjKWBLemZfaFNZMkA5RUZ8T0BpXjFTbTxmUnNvMDx0XmNHaF9JYCx7WnNpR2duelkoUU8+Pjt7Z29oYllMZUxeby8pVl9VUTBhelRmbVFPdll2LEc3''@;'; put 'put ''Jm0/X0U2RWBPen5yPSYldDUmemNxdUJnPkt3Vi8yOFore2xgKlklS3AlREE5T0JycWxqV1ZAXVMuUjcoeHxvMz9wPlhCUUBYYzVNUTJUdGVKQk1aVmM+bXZtKXVHXztkWUgocjhOUj85OyklX3Mpd1gkXlpyd3UlRy41TT5dYCghOl9TU0EoVXZaeCw/cGJKdjpyeU5iNTY7Xm9aJkBseFkvKnYp''@;'; put 'put ''YGdBPj1baCtbfDwzMEh5ezNJT0NiaTRJeFBydzVtMipeJDBMUiVkVWN9PE1ESEJMW3grbU9WcXVnUlUkNlZmaihXckZBUUdeZ1FMTklbfFM8SGsmKi8uWT0xfXQwOlYmbVIqXns+JFU6PFFROFl6ezVrYio7V20uWG1ncGlIaDdGZEw2VWE4eHhEZ0hLJFJeK1B5fnFeaFFqU3BXUSk2a31MYzRn''@;'; put 'put ''TF9Ia3VDd1BOc15GUkpIekAlUDRwISpNTWJUaGlERChLY0I7S3owJXN0OT9jS0VEbldqQVVeMVUzI0YjVVk2PzRBZzdaXz8iVFApayxFKkhhJUtHNHo4O0MkWEtAbFEkXm51PHB+aCJKWW5pIzE4LE89K0hEXz9wZlcuLnhSR2U+e1dwXj5uaVM/UltpZipoKDw6TyQ/YHpjTDhgdixMe3opWG4l''@;'; put 'put ''PGUmVjpKfjg3TCNyPHM8c2pEZHU3UTBNL15dQEwjS09ee0tlSWVbTzA4Q3tpc1hgeyh3Z19VbSsjK3ZyNVRkMWEzX3kqWlpXPCIxRyJzQE1nYVs7U2Q/NzE2dktgYl9oIXxiek4hSzZWYXlBPSFeW3p6K15icEkqP3c1dVsxXUYkKyRlTHQiKzRAR1BhVW8pPG9WRGM5UF1YO20jOGQmUlsxKV4s''@;'; put 'put ''NGQyIXdqdkdSZEJwMEEqeERjJSFWYDw4Y0dwSGd0VTQxdG9uZ3RVSUZIR31jclVHfSIkVEg1JX1vYGF9KnZmdXBtNTIvRzlObTFaJURfMVp3O0RMYWU2WilgSWhxO3VPQkp5djV6PTh2I1NwTSlMUT5MLHN1TV9JWUN6QTpXMjhPdFgrWy88cVhMQk1gZjY6ZFN0WDZFcEU4aE1UQHsjN2p4PW9b''@;'; put 'put ''ZHwqOVhydiN9ey9bcGYkN2F2OyRDUUB4ITgzbm1ePms1SDtYLEZ1LzFJb1B7S35LNS95ezppXzpHL2RHOVZibWhod2c8Y0glRiNxWjhJSFVYVllkfUxeU11OV3xsZ0FdcyZib2sre3dtZ08laU1RSHN9aUpjPURYamMsQkhASH07LEtvIkI/JHxTQDJ0Xk0jVW5yUk5ANzdeZ214aCZkPV96RFYh''@;'; put 'put ''YH10cmllLEFCYiwwI1FQVlFWRjBUWDpZSGlrOkAkfjNee0NtRkBYVmpTJm4vPlg+WHYufCVKLFYpI0x6ajtFZCtUbVolbSk1TjAxTG1tV0YlSDJTaCg/eVhaQE02PXN0PzApOCZrRFFEP2toWjZZd2x2WjROaDViOE5baiwrd2tGZiZFUEw4VjJHUGFVKWNxOWVKPEZ2SV4wcWNyNlA4MiZdcDBm''@;'; put 'put ''VylXNXElUj4qWEglJHNxSj1danFRXWU5fFFrOWElNis6UT5MaXptfEdvWSt0RT9PczMkW0BwSEVtPVJZSyVBeCIyNTAxTnhnOlJfPDRteFB1ZkNOZThtfVNKOj5xM3JoSjhbaUxabUhZNThTSDA3T0dmSk95STBjKVc0Pzs0dD9gUDchWUA2QEE9WGVgPDRHT0YoX01bR0U/TixbfW9OQ2BHOHZM''@;'; put 'put ''Wi50VFo/Y3sjVUpmSjwsSigpZzZ6c1U9YXFCY2BZckpDSGsqczJWQz1PMFBEJjpYZGp7YF50VH5wMEI0TFtKVikxMnU3QVVyMEFLO1k0eHNNTClifGJReGdmOU92QT5XRklIeGpENkwoPF54XTt6TjR8ZG0kdW4lJnhvfClDJVhUWkloN2dJTChnJEtmPHdjRjpPSUNXT2VbQCU3Ly5IcTVyejhZ''@;'; put 'put ''Ij5hYztSSmhNKEQpK3E3T0BXXjJdbT1ZXjJEKGNSYkN+VHdDcHJpPDlIPSpBQkJDPlo1eH5wYWpXKi8keD4wUEAkcHUwX29ENEMlb0ZDLCxgNUI+LzB2X05GUThQVU1GN2pjKHJpVHVZd2JQa29GdTMsX2ozKUM2MGBoQnRXeStpczRMM0BPUENNTio5PjdAJn5oPF9DXlVHZVR5Z0dUJXNVWz51''@;'; put 'put ''aSMrck1oQHE/ZnpTfH1hZkI3QEM/fWo2TjE2NzgwKyxCT2hebmZdRHhLfDU5fkorJCRdXzlgdXckIjtUUE5WRGljR3YxXkoiKVM6Mk9XUCskRCVncS88SkxFYDZZOTQ9bCFBIWxQWW41ZUpZTmdAMis8UlBEa2V1bixAa1JTNWB8bDowenJibEc9fU9iIls7QHphOm9Ndil9clFJRT1DYGMsLmE7''@;'; put 'put ''UHB6fHc+MiRpXjJuRkVeWTVdckZoJmhPKXRWNmhPfWJ+PVh4RCk6cHkxOVJ8Z1RwJlFyM2xMR1hKbzwvemJvOTBfNClKNGJYMyFaLlYqOUh4KFsqaXhBJXRHZk1qfldFSjxQX1hsVzFZZ01QfWdjN15kOyMjIU8pJE56XUdXQVJePnlmb30/TDRsKkNiNUtnaSJxS2QraERbXTlUcD1EdSZnYTV9''@;'; put 'put ''VWo2PlI9Y2QxUDEoeX5MOmcmTDRHbDh1Nm4lXyZCPkkzP3VPdUpGemplcHBjLDMrUH49PU48OnlgODVycFd5PWw1NiF3ZiNrKUcxY1dMfT1mTjM/PUwwVTlHdklPeyZKdnFtLmtSfmBZPnAhOFIwM35nQGNzQkt0JWtYZk1KZnwlIzBES25DbCFxaVslaWJSQHNOaisqSWEyW2gkKkFxZVRPfGNy''@;'; put 'put ''SFlqcH1CWT1JbCFeflJ7JUBXaHV3clRfLCZLfEhYUUlgRGskTUN5PWJfR3dYc0M6Z25KJlpNYWlnOHs5LlRMdTJ7bWpHbUYkJkE9Typ9QCY5PDNGJjxXb01qayZMRHByb3FKfSglJDgqe2IwKCQld3xxLHl7bHlSenBYO2tsalUlJUh3YSZCTExSRm0zJlVIWDtzUnZENUwsXzYiQF9Re2UxPyJ1''@;'; put 'put ''NCxKPShrWGFPJnRJSj1ZM2BWWF1DNEx6O2l0TldnNGJseV9bZVVFQXUiO1peNW1EenpmflV2I2g5InBtaCpVX2QzVEchUUA9RC5qUWpURUpYdG87cTRGV3lvZHxqNHR+cFJdW0dxPksodyxiZyZ1a30lJiwxZloySSlSZnwrSVZTZ2NHUjl8UlI7cGNFOGdULjczMTFrQi9AJlddczdDNCw3Vn4y''@;'; put 'put ''RiU/X1NFeWdKcVZrZkdZamJvInZ8Im84R2ZjYmZtem9wMmlNOjU+PThebk1dUjU7OXMqKUtkdVcpbXJTYDBZKVolO3AwNURZWjVBTTp3NSZKWTR4d29kbEpMXzpicDp6YFBsclQ6TCMyTyZ7Wm94bzZ0JXR3X31lT3B+XUJSVixrb2xoKihZa0AuN0lKN14zOUwwaT9peWQ0QEZ1Xk5sUWRReCZp''@;'; put 'put ''K3dRe0d6ZDNnaFg+R1AsRVJTcGYhYHB4U0szd0hlWF5lOSFGdWE0VDF4djpMPWY/aShhLz1GdW9lM2FUZ15YIihnNFdxTk0iQ1JYNHJGWlZPXWNFJUNVVVQ/eWRXXm1PZDFqfFMwRk18T3IqKVBPISFHYkUxanpIUnxwLFZ1PX5HMEQ4Y0I+NU1vbDE4bEJyZUA/KFI5ZEpLZDxBZDhZPEQldmY3''@;'; put 'put ''K0xQKH42JDh6fH04X18uWVRBXyg3eTd2dz17XXkjbEd6ciY6fiRQX1lzZUp1aDIzMiE1MzwkbXlqQC55cSw4Nn02OWl0UnhYWCZrN11OelE6ITUsX2ErOXFkYG9GWX5XUFpWPl5BTSJnZj84ISt5LDR6TCE9by5CfFl5Q3ExKCthLnE9VypIaTFJd1EyVzNqPVlJYyVjcWw+YzpjTl16Uj41RTp1''@;'; put 'put ''ZC5HXWdvNWNaTTBtIm4sZWBzTGYxTmJeayJvfSwoXyx6eFdYWiNOMHhBOkZ6RU1RVDE8YlZRYkhURlVXc0Q1YEx1fl9vOHxpUW4ibiwldXV5XWBhWCEhS1dPVSNlPltBc09TPHJFYEZ2ZHxzcXghMmN7WiM4bEgqUEtUP1t3L2B0bmpRZVNVJkRRMil5MWdMcEdrLFp9b0BtclZmNlBZVmFOUDFP''@;'; put 'put ''fnsoYn45PjwpLiIwMkBYMkU7cTZpamhiQi9rNVk3c1ozd0UyKEckWyR5MWxPO1ArVlksWGlYYUddWnZ0JENqQVA/SWpUSHc+MkxxdXVMQyxVKU57dGB0YDQpQl8/X0peVVk7On1Od1ovKSV0YHVzbUxoQl1MK318Zjl7aml9TiFVSUVUTENlY0ppelhAWzJrcFNjfVNuSmEpfjheMztqK0t8UCh+''@;'; put 'put ''ZUdYQU84cjIlI24hT20vQHk+ckBDfCFuXiVtY3ZHdDRFN1ZdQ15LVUJOMG9FQ18odHpDUjxLbXVvL2htMjghcXwpdWdMNUl6bSUvJj8/XTlIMDlqWEFNXTIkSV9kfV0mND91YHxoYyFlMFlFJFZYZjxlZiUrOk8pamgjaHAqLigkZGdHdExKbVN2V25RWTdeLE95clohLzFKazBSPGlSND8pTiM6''@;'; put 'put ''NUs3KiY7NFZ3S2Fkfkw1aFl0d1lNOVR3L3hiZWZ8YWk/R15ZW1l6NnNUSllwR2JzT3M9UFs/ZChFTTJWOXEjZ0FzPzglTUpvXk5WfnxhQ0defDVpQElqYHQ7W3pTNHd+P00sdjYzPUI1b2UwUUAqZiZzXSk6YnF1O0QrbHFod2ojPmtWQVt8aD9makpeQUZrdSJxU09vaXNlMiRqZEQkOnZfOi8y''@;'; put 'put ''WFN4ZTVMPWNHTFolbVEuM1ZXZyVPaUpzN3UuY15+aHgkOXkwQ1MkQT9EUndNK21ZQldjP3thcVJqZEpEZ2JNbjoqb0M0O3crIz5fdmchKG9BN0Y/VDxjQ0xKZ2xFYTtKSFZjLyhnekFfJnlTfS4kYSg8PShRNlF+Xl5peCR6UWxtJTxeYHJTOms1L1Y1V2YiKzY+VDU4M0Q3UmU2eUBfLGtKLkZ8''@;'; put 'put ''Tl93NUQ3OUVyZShDcmU+L0liRU9qUGBKalEwOmdrdXg8RmJsTVNsTDoqdjJbeTA6RjJ1bHF5MiJON3VLKkptQ19JU0NRRm17c0RGWGp1fVVfSSpYSypVSlRCPSReOkJzNXhRODZMVUtMNWFwdi9JYmQzWmhCTVlbPENkSyFOYVJ2VzRrJSUwYlJWUWlzNkQoYl9PfDF9MHJ0NChLInkpeWtIZ3pg''@;'; put 'put ''ZSoyfFgsWCpkMGM4fkJ0NXFdUXlTVWgvPWAjL3VON1J1Izg4TUh0c1kvKiVGVDxTPEl9OG0hOTVOUkA7bUVzW0ttSiRiZS82dVBnMjpjUiNEWl8oIXJHNms1STFZZCRzRHhubG8zJSVfPE5EUGJFbVg3SXt1TnxgPjk6TCtsYnx2bEhAcCo7T1I8TzBucUppOXUzbzQkMjh5JUY5TFMyTmIvRyp0''@;'; put 'put ''VnFSXzpaXkhYYzM6NHZaSndxe2JFdlBwSS50K0IjbzxFQVVYMX0oa0wyLjRifipoWW1kVjx6eC50QTU6UDQlaj5SblgsdV9xVDopTXZaNk96Y0Rlcnh4fTM1d1gkb2c4R28hPnB0JDByND5VXnFDNDZFSVROZyZuO3AjRG1YSCZFUjl9UG1vQTNrInJ+UXpkdF4xY0VfK1Z6VyVzPFpPR2RgLzw/''@;'; put 'put ''bGEsX1k7JkM5Yyp9ZCZDbGIkZjszZkMifkBjM1coJXpVSzhoUm1DWl9oWEFPQX46Ri87Yn5PbmIsMVhkN0g0U085aT1sJDlhU3U3Ji4leT9hdVl+ZnptfGFHNiFNSHwxU3NMcyZxdj5CM3tzc2xJXk92dTNqaypGb3EwYDlEemdIYllMZUFVP3YxNnMzYntZOzZZdjpWbTYlMzZaVldjMk4rdEJM''@;'; put 'put ''biNeYiFdVG9hQy9DYTtkNmtsYkUsNHdLWE4wWmd3Uj8jZiQvYywrZ2BLKklycEM4en0jO2UrTChqQzhjdzlweUUkZ3tqdl4+TCtySX17Z3RGVmtGejFwOUM/MTdERnkoYjNYejZmO0MzVzUzRTVdQzJaZ2pXTihgRU5rTHtBTk1XeS4xbWd0bF50OTpkT1Bxc3o/fWcmSyMmMzhKUWElc3NkSHt5''@;'; put 'put ''Qj4iams0RDs0alJFVSkkMTpLOjp1aWo0Tl4yc3dzTzJZSkUveXJXMGEzPnlye106TkkzN0Y3N3JrKTdeN0NeZjciY2U+OXtmXUVOPip1N2ErNXc3Y11ae1J0bG0pVDd2Z11lSzJEaUlvfjk4bjRkZ1ZKZCs3bFY0emFBMXY5SG15S3NEcW1tN041XzdUWUVzeEtteWNaZVt0Y3E2V1krYGghX098''@;'; put 'put ''UigkNHRsXUFUe10vSnAwck9VJDBNaXRsT00hOnZJW2wha0VScT9tOm0jbWp+JC91VSY+ZylwTmQkVjVYeyUuWUAqc0BvbFk6NUwrJWgudUdneDpLLmpUSz1LU0xsR3hvcm5rSyM0JTIyJnA1MiZmdjxVQDYvWSk0TFhMPSE9NUppdDJlNytvKWNbVkU1XyJMSTAiOl5dY11fTyNEK0w3dGQzazdG''@;'; put 'put ''UmEpRGdVOzdrdFZYXSE1KyIqdDxPezpRN2pbajUzc3Q5bnskQWEqbVMrLCFfeVJxVTF2fFhrbCQ0KTQ5cFhyMk07T2dqMWV1L2cycl0xZFcsejolbilVJUswRyZMaDtONyNpMXsxSXg0WzBUfkNLRkhOPitYYjtITElwUyZOTiRvZ35pWls/JVhmcn0saVp+Sl17fGxVez0lJWszJTNaUylkUVlk''@;'; put 'put ''Lz19b1ZiJW4wIy5ZXmtodWtvcGRXfkoxb2ZgQWddSGBhVCg7Z0w6PmZyPjoze3NtbixuRUMrXk5TXjJoQGo+W21QaHN0OixxUlhlckhaLzloVlpUeXdZcTo1RDhiLk1teTsuSnhCWzxzWnR4eyMhKHg0Z0xyRHF1P3hNZGZnLiwxJTosTiNgVXhoNmNxUkpLLl5FKT5XYk8pO0t4an4qLC5iJlt7''@;'; put 'put ''TDFxI3lVSFo5U0tDNC8zMGMyKzVLI3t3RyEmTT18PktabF1hel0mO2spdEkxPXslUUByLj8mO3BFUylDdm59JF1OUF4lS1VIKUhEe3B5XiltbD1EdnVMfCNReC5DWStlNnlnUEEjRDwxRURnPkhfPlh4b1FAV0gvQk1UUD9ZY34pL0U/ZUw6emR0Xls2ZUxydVVYWlBtYUliVkNWZGEuRzhlSSVy''@;'; put 'put ''JCk+IX5YdzUsckxRPXZmXjVZJXs3WCp8IUNNMTZMe3xRLjovcixqeio5ZCZgRF5XeSxUOjQwamZIWVlZOEpKeE5haEoqY2NeLy5BMT5sSHJIKWlLO1ExZzQ5ZVUlQCg0WnpGUUJwaG9zakFjdG90Oj1uImB7dSs0RTRLZT8zQEh1Q3Z5Kml1Jms/X3dKdStdUCNsQXJhYEhbeWdMQlFTYShzbWpX''@;'; put 'put ''cEw5Vy44TiIqKS5HaTkuX21+byghbUZEWXJ+MjBUYTExRGZfQjpYPERAaXhNXXl3JXslfVFQP2A8W2QpPm05bmMlLiswLEA0NV5kQkgjayRbelpZcDc9OCsrd3BQcTJYYCg3bTNsWDN5R0FHYSlAWktKYVVZPGYzUl0wQVpuK0M2S29pfE92PiI/M0JNOyNRI2VOSHJYYyJPO3RxaEJvTVlCVy84''@;'; put 'put ''QXV3XVlXWiU5R0F2OWpJSD1ZTGU+SHRIaGN2ZUJjOiFAZjRHTSpKXTpFRVNRREIoYzM7Oip5ND40PzA6cDZtcEs9S3xrOFpNPDtyKSxPZUNjYmQ9ezQsNGZ6X11RWHxgZTtCLF5aNlpNViF5cXU1YHpeJHUldDRJcC9ScEImR1J0bnlDMTQsVnlHYnJTQGBTKDglUF1DJHl0ZF1dUFRqLyl2NXhZ''@;'; put 'put ''d0k4Myx5cFBRcUtzUTY9aiEqJnw3YVR0fDNjbytQfUR2XTQ4bWFWMyt1STdILHl4YTxTLnIidm8rJnY6dTB9QzcmQ1c9amNDYTl9L3s/NjVeTWQ3WFN4Vz04aFRIKkFLOSg3I1hlN3tiOz9od2gyPjhAeG4wUEEiVTxjencpVj0oMH4lXjc/WFY3XkdXT1JocWQ/UU1HRmVGKVJyKD1gZlpsajw3''@;'; put 'put ''cipwRlZeZ101OGYwWzs+YGpEO3heV09PLHJDPnkpWXNGb1RhdSRrKTc8aTB2LHl6U1VMYG06bFN6TzdxLCVMRDkwX0Jdeno9b3g0d3gqRkRrcjJEPTRBe3hzUzorXWM6YHE7czl7cmApSj5mUFVBS10senpLfC8/TEBvfHFUfDF7KFVuJG1eKD14JiskZVg8RWsrMUtUPjRvOSY7aDhqMm85TmFX''@;'; put 'put ''dW9wUE4hUXdmWjxTcmw5RGFFNl86fFJdNUI+QW5fKDtDPWlBa2dSd2whL09kVyRuWlJ5SzZZOHY5VWRsd2NdQTtkYD5CfTF+cSVHfDYjNUkyOUVfTCkrSD05YXpIPTRkK2JCK3B4L1FsXUJXbjFTNWd8OllCQnlbV3ZgP3JneTNtQnYjTlVZJE5bJkJVOG1KSFBvYnIiOkR4TzdScjA9L2JJMU89''@;'; put 'put ''XyFIU1c9YGc2ekN5QVtCbzVnRDJvR0h+WDlFeXhDMHpbXUhqWGQ7IjZydnwxRHhYfXZHZHFsemxGO3VhXX5WWkl8amh5JXddY1RFOyJyaioyUzJyVF9Ga2N7NCkzb2h1V3BebW52JGVVREBrY0Q9NGE/XTJWOF9rK15FXz1DNEwyOnJpMVg7d2BzIkc3SW4wcUMwdik3cTlzZm9qKEdDOUgoQHt5''@;'; put 'put ''ZUIuYHQkWVYoIjEoRnhzblVYZGNYNUtSK3tPVCZBS3tqfVd+Pyl8WmNtdF0sSnx6KzhTRUBgeCF2S1h7OCZKNXk9bTQuOEBASn1CIzdwMVFdfj9vP3RSdik+fiZDTk9rem9xMHd9Pnt7bylNbDQxc1JaOj5ffWgmX0ZqWF9rWG8oYDZkUkpiI2kxJVssSXpwQD5wYSQ+bWNneyZYe3loNXFQbGI+''@;'; put 'put ''fVJ3YH5uXVA4a0clO2ovMm1aZEpOfEokZEpON05ad3VmeHIubTR4Wkl6UC49Y0hjO24+W3lxLzdsQ1ZNRk5pUGdHPkByJmBlPl4pPGUkRE5dXURdR2owU1JFWGd3TyI9eXJkP0BkfTcmLj44TUs7PSl5enF6SlkqakRyMn1gZEtZa0ZQLFBqa1UxLiZ4ZS88KEImXlFzUHlRfFdeRjlEJkN1YnEh''@;'; put 'put ''Ol9ufXtkXmhmd2xTM2w9KU44PEBXQlQpeGVgP2peU3lLYWUpP0I3KzNBV3BkLFEwIV1scDE2VXAlUlZ1NlokQkpVN0w7VTpIdmVZL11JYlh8SDRwJClNLk0yVkpsbUkvd25YZGRXfmd1XzdvVEdWRWpzbC4ycWJzVUR+I2FKS0BhVUFbViJAPkdRT1YmKEpvUiIsdV1KU2dTIyZJP0EkIVFpKGAm''@;'; put 'put ''Jns+Qnt4YHRHK3NgRmJNWyl2Ryhtc31SYGdxaHVvdzl3NjZvU2l0ajouJl5IbUtVfj9BUSZvUCw4b1M+PmU9WlR2PEojfGBsQT8+UmQuIWlVPVRlKzFoQ3NocGwsdztTPzglZWs9VixLVnJrelZqelBlOWUxL2M3fiFZZEtOIUpdLG9wPm5sbEspd0Riazl8QHRdblIpTXY3KiJYU3YkI0U5W25x''@;'; put 'put ''ZFVLMmZ2WHtuW0NiTVVhWW5YNXtySWF7bnpjQ2swLmB0P0R8Y2tRNH55MT9JOHVnOEZYW2klalJQMG9AcDRAS3tBeXtqSSsiUmw+enIlOXw1djYkP1A2MHRBfT9sYiQ1YjVUPTopOyhmNzZAZlhmfndxfixWcWB0YGBSWCtpZDNkTlMhTX0sXnk9THJdMk9RaC4qZ3Iqe0tVbEwvT3s+S2lxNmpY''@;'; put 'put ''JlhbJTh8N3Y6XnlBKntdbjtxUzVHTllWTEBtWjVLTDNbbVZGakA0Z2VRVllFcGZDRSopPXxVYEZ3JmhvVWVbMz5CQV5NamYhSX00WSEvXWFRazEoK2Q0ZF93bytTR2tYbnlqdWBlWHx3PHNLKWFLUGl8Oi9CeStNO2kqKm1ZTWshTGdmOX1WSjtOanZrSjgqPGpeVXl3aG8iSWVKOl5xSSE9N2lU''@;'; put 'put ''KllRT29CJTtYN25bXUouLHdENj9dd3h1PjJKVm89cUVkdkdDZ2gkcEskJUJPWj11TjJLQFRXSDZhWCtDdTkpWV8wMD4lazB8XU1+Jjs6OWJzVj1wVWNDOFB5Uz5CIlZSa29McGg0KElfTXFgP2o9ZX5LSXcldlhsQ1MlY1UrSWNqST5rIX5BWDFEKGh4blpwdW1DMHx3PmxhRWFXSU8mZn5INC9A''@;'; put 'put ''YUlIfGpoTGorWUdDS2woJTldenxibnh9aSZvODlbQXF0JHRnRXVWPyhnLF0udUAydXhNPERESV5zfHtUXSh9KlZuTj5be2ZoTyFdOiJoWDNkPHJpRlVdeyVkdUNucldtJDlFdmwre1RELHFSYU99QzlTaVoyelE9NWtQeiMqJElifShJSnhNcUwzX2ZZUmp+WnBXcWFhPmd6czZVY3lQOShGcjl2''@;'; put 'put ''XWhFYDU+WXRvTEUwU1Z6TiFrSElDIiVZYHlFK21XeXQsbUE7UnZUIWt9fldHOD5jcERUMD5wR3lAQ2goRUoibkwjUXV3dWBvNCY5YTE8cDBqZ1M9MX5wLnRNe3s2QFZ5Pkl1K2leS2M+JlgzKjlDWSNpS01dLlg/bkEyWVE2X0okdkhucjV0MU4oU2hAWExaZn03XjZRb15ILDckKyFackhDRiw3''@;'; put 'put ''QDBFdF41O0I1dWBQVWlbdEp6Y0E5SEh2bHZEZHZyTld4eiF7NVRMZFF4NnNDU2Qud1NZanA2VURPd1U6XilLcEB7fnlBfWZAUFdUfXJhJn4rcDNURyZ4OkdjODVHNy4pITcsekU1UW9VPVYxP3VeKm9VcGUhYXc8M2FCNzBOIVUrL3c7I0A2UEssczcmOHU2amBmJj1vUW9wZGdgYExZUDVmQztj''@;'; put 'put ''XXwwRChFUzA1NTxaZWJIX3VGaX4uel9aZTdbck5gT3NOYE96YHNiSWlqKVB2QnVVK1olfE9GSCp0X3FpWWtYKDpwNkJ3WDJDVzd4KWQ2MUp4WStwaFgsYHdeJmx4dE4lK3U4a1tTTWA8KHp8P11QblJvIywzQml8eGApUX1LTnpLRDpdW1ZqMEhHWTY4cTFYcjtMZGlPa3lTb1Fxb0dgM3Y9KGY/''@;'; put 'put ''L2ZIWmNvMW9kUm1Zc1ZhRTIvfW5ydzw7bksmYSQvQm98VCNuX1VaS3xROnJhMlhRfTllTF4ybm1CXTFmW1VRKGZfLnNgK2xQezRkMHkuXlVxPjA5Im8+fC83VStXP1p2MWRke35nIWAxdktRSGczZ1omSCo2KjJKP05sPzlkU2p4S3V2PV1bYTR4el4qTT9vSXI8XlJCeTVjb1d9QTpxN10wTTBI''@;'; put 'put ''RjtVUFpuemV9XUx9OmEocUtdTmleKW5nJTc5Kl0/X1NAfSlWSyVMISpTWmBKez5kM3NSRVN5X2ZoQSpjekhGU2FKaDdfMENzYzRSM3AyJX17Lz9BJCg5e0UmZV5VcnhKbzAhTG8rVnwqOEVxSmg6LDlWN2deSV1zVTBoZnZDYyNGIzRRJDhkZjpfdiN6dyM+M0ZOZjooJFF4MFhdWThrRD91djom''@;'; put 'put ''VkMzTSkkfE1RSUNYbzlQbit0fFtxWDNMQ2I+PDsjWH17Q09+TnchOiJ9NmtFUklzbj0hL2BbI01yKXksa0tocnp2Km5oMkxIcmUycGZKfF1HODImfnpVI3RFeExFJWFiREoqO21SdHJQUn5edWIyJUtuZDxlN0p2Ny85JnJdUFJUPWIvc114UWlZWXVlNzEjJCxMYFN4IUVYJS80W2owfHshbHgv''@;'; put 'put ''Z219LFF9eyV0WXBSO0JzcmZTQ10lKUNhOzdAZ3s2OnhEQV0rLilUUGUwKnp7Jk54UDl2dStNckdWLmNEYyxOZlZYdWBWYFV3SzZROzNYQmY3P0w0bEM3WSxYQmY3QHx0XiFKbjB+RVMma2ZvKzxsbllnXkxDRjxXK1JoTFUwZDMkT194VmxmVHdHODtWO2RSIylXQ2RfWG1ORlBXR11baCFBQ0BH''@;'; put 'put ''cjI4elssNmtwQEg9fXwuWGFxYXF8KyNmaisiYHJxJj52NlZ1S0BmOld6T1ohOWBTNnNFSiFuRTlSS11+UzZoSkY5ajBoYFMzXj9bfkZwOzV3O0RrUSQsYDpJTGNvWjIveXNobGBzVkwqPEgvLDlxV09VIjNPPTFNSyQ3SzwvZz9uTyV0dDF5OilXNV89OFVpRVQ0el1xImNeS3N5XnhJPEl9YGAw''@;'; put 'put ''I3I9TXl1a2ooQGZQeytwP2ZFKHB3dWsyYVRUQzQrW11SMkJdPmNxYG5DTWZyO0wrQkJ7eXY3NUFic1ROX0VSWHlFU2YscUdIcVRfMEhCWW5IQTJzcUB5OzokYEwuNWB+PUFbKSRfbEIoZSN2SS8zcS9yRjZtTnI8NzslSH0oIzNKfktYXnQmPVl5LFtPKklLK19LLzwzcDZiRVF3Wi5sZyM1MF5b''@;'; put 'put ''LzthLmNvLDFTYXdjajxiLlRUeU5GISN4QCMrJGpTTjh7JGpTUmV7I2pTUGVEJGssYWlaSXYqczJoJEEoaXdGUDpqcH5VOE9zN2dETkQxLmYzYUskXjF7Z2JXOnQsWVVbYEsuMUZkYWcicmcjcDB7KjRrPS9hd2lHQkUpRHtfVV99SEErUDgkLjgjdTpge1skKGNeMGs3MzJsYnw4OnY2Mz9eK104''@;'; put 'put ''OTc6aGNkeCJlTjthLGZvSysjZFpxSWowcHl8QSh9RDthRjlsYlpdU3l8fC42LFV+YDxUQkwpPDVyeWJ3IWp3XUVIK1s9JEBeSitsJDwrc2QxfHw+cFVEIzYsa3Q2XzVXVTJ8SmU1SH1HK2xkMVszL1shSkdFNzNZX1MrODlWK3hHNlFPVUg3dloyJiZNPDlNWVdhNzM1aHhqN29NY0RHc2U3Yz9k''@;'; put 'put ''d2FVMkY1WSx5MGI6RmwzcFM3d10obFMyOiVpYyRFQlk0PSkhXkZWQSlSblE7dmlNYUN9WWZsQGBDV3RxP0pFUipEdjReeXU9W3dLdSpGVl8kSTVRITAwMzZ7fURkdT9Gc0wpdjNSNEB9bVlLK3U7ciZOZTVYY2JsSUZBZDo1KEpAJmdJL2klSnpkJj9ibWZdcjZIdTEpZCMiayZtb1puSEVkPFsj''@;'; put 'put ''aDxtNmt+NWcmP1Z7MG9QQ34zSDJnLlpfbE0kMlMxaldTeWMmLHF7SWtgemNnSG9+Z0MyTmx3TXMjKWxdZGBzTCwzRFl2JjAyL0xNUGFhPnpTbjpGUUM1bERCa1lLRnEyMls7TjoxeFFsRUpMe1k9WG5kYHpjaX05OXJ5WGQ0NUA6aC4me0J+cj5YZCEsc2t9PGxsWTE8KlQyX1AqLkBSbTNAUGV2''@;'; put 'put ''JFU5S05WQTBOUVgkaXdWNGNofVJVbH5gMU4xdk5ieGNhZ2V6XzVjR20xKn55TndYVH0+NTN+fXgoXjtjOjl+eXNHQmNALklnWWxFN01MYDFaL3lzd21NL1dXMS95c01zW35Le0orKXNJQGJxK2VMbSpqPm99YUEoQCt2Y1NAYX5vMEdbO1U2ZDBydiZER2s7MmNTM118U15vakReIj4rNT9GYi8v''@;'; put 'put ''MUwjTGYvYSpKWlIsXl0oIStQQGd1NEhlZmR4Ukx9TTc4NWdaJF4iIkVraUs7KnFFP0ZRVE0uKUxGdl9nUnlRIndlXVBfMkBQPyNkQlNLUnpJM3w6Zl1qN2pXUnFLJGBOdl87NW9AelJkYyNbZlFgMWR8dnpLV1ZpI1QxbEMvd0hVTlBbQkMoIih2UHlweSZqPTxEJUhpTD49NVZHZFoqKEY/bzh8''@;'; put 'put ''eVp5Wkg1Lz0iKHZmRGhDVVRpQE9ocWBAaT0oSkE+SjxGdXtLYERwejBtS2xrPlRybGxDM3hiVExVaHsmM0xHJn1LXkxBRlZaal9HaHJVO3M1X1FYTHxrPikqKF06TExSLzdkO2FkK2wqJHhlOjgiaG5saCEmO3dQYXNyXXg8UGc0W3tWdD0zb2R0fWBdM3N5bDJaO0c5VTt0XmMzNEhiK1o4PWgw''@;'; put 'put ''TCtXVkZbdjFqT3tyb0l7Q3d9QnNCbj4lcio9U1tlSS8lQj5LRyNffVssV3dla0l5ZTJfd1tMek5WRD43QTBGVjckLHFFdHZbTD9CY2M1JjRgI01nPjZ6Y19qTV12T3AuYTBOPXYxJShPRWRGe2Fwb1lTV2tYM10jWjR6WSsrVkp3emppbH4mYER+Xj42dmZMNl1ncFhxNzRqfVVwSk9USnIyWmJP''@;'; put 'put ''S09bVio7ejx7ZzgyKGRyb0xzYH1kUnNsOiROYHslblEmNDVIaEc1REtSVVRGIzIvZ0pPei5rfE96V0hLdFlOQCxYTHRWPyNFQWp4KzUxSFRdTiFWK1dOYnF7PzRiO3o8bSxGWERQSy5eUmdJNHt6WElZeTZFLCZheVNKR0B3VU1hRTJYNUxEOWgqfT5MK09tRzEzTCpQa3dwSzUhRFhdYXlTWFhF''@;'; put 'put ''Z0FtVy9LPk5eUV8jRDRqTU19dih5cVZoRy5nMTNtOVZyN2s5OyxOUipXKGl1O2BuZTsmSUhXL2MhLEJBMjBqP0pPUm58RzY9RGRnQ0c+byxeWG5KRWtkPjhAfFNyUGl7MyQjbE0pLGZsPSpUdWZsdGAyeHQ9UHV4RyU0WDEhakt7Ui40ZldJQ0k2N2l8YktrRD1WeWNpLDllRGUsWStZK1lhWXw8''@;'; put 'put ''aSghPFU6OzhOOX0wbUdldXVYdjp8JXFXR2dHbCQjanowMFR7al08Mys8OzpYUTJyRGw+RFJQPEdxSlA/e3FdNjl2bm9qan1ZflFCRWE5VGo8UU9TXzF0QHouezAhakF5Q29OKlovTFsuYChZYCYvcFAqLmN2LmtFb2JgMmFScD5Ya24rVDNFUT59LzZ6P2d+L14sMD9AcD9kV2pNZm8wRyFxc2Va''@;'; put 'put ''dzxyUU5zayFoaW8yWWR0fGhNfEg1WDhjNl9CdEFzKnV5NmM0MWBwOHV+SmdQL0lgPSFldFBub3pmZGZBMVhrKVFwS3kvKDkhYWIoIy9XeSRXTzVOKlFPK2ZXK1p3WkRaM1IuT18wUyIxJkVTPj43Tld1NnklPklrcUdiKyEqNV5TaTleXXJ3PjtMdT9nPTtYXj9kJGJzYHs3XmJLNT9kfV40T0Bk''@;'; put 'put ''cFFuJG5RfVp2PFUxNUBZcExtNTVHIzB5KHhSIlRyS1BZYGRlYE9vPCZEWHNLZWYpXThucCwzbGZfKnMlLmFaWjU2QypKRjxuYCU0LlFsNDdsZTpNU1h7KmZ9Pn10LGFIRWYkS110W3J4MC9IVHpAZV5ELjVKXkBSdjpiYDNrWWt9YTQlLGF8MyZ7VXpLQD4qZCUvWFdYbDwxcTMlXy9wWG5TeHxV''@;'; put 'put ''MEhIOEF9aipHS1c2QzlSYWQ1Q1I5ZXkrWTZLKWRwL10hVF81dE9pbl4hfkZLeCpWOmdFV19WOUgkRXtXOjpwNWFEKVJORnNKbjxWI3ZqaXshbTN2SllfR2BqMTtJKiRabThNJFI3ZG4xfXU4RDhPNG49IyRsdHVZQEJaNjU/ektCbm8oJUVGSF5wYlVzQTJxbSsoM0MsVj1EOFhaXyFVJHlVYTl8''@;'; put 'put ''YF1Rcjl8MlpZIzxQRHhIb1opbC8+P2BncnpOeURTPy5mczh0PTJEUU93MEt5VSs/WE93KHl6b0ZAQH0rRWF1SCVLX3spZm98ZSVEOmoqYGlZUHk3OyhtTVJYY2oqND0qaWYoNHFaX2hPIUVdWzI6WGJfKHlDNjJhRXBTMXpodVN9THI5dUgmX0Q4cStdZEVAPSokTkAqKS5qW354ZWE2PTxLWSVk''@;'; put 'put ''QjNXMygmIit9dEpub2hVQnQrQ1hBOmEsYjtqU2RKPVU/R1pdZShYLyV8QlQ3cl5WdG8yO1BEemBjYDwlNDRLNmBmLEtzc3oyZFo9NGdDbCQ/cTU5OlVKc2VtcyNiPkpVPnUqY3E1TC5SWSFFV2E/MXBkWChRMSxhKml7MEVKTU5wbnskQWRYVkpHVl9HL0lUSz9rdzIscEokb2dLfWA/L3xPJlo8''@;'; put 'put ''N1gsdXhESUhKYl5DTHlhNUIpdzxqPUY0dSt9R2w1dSRFRUtmO0ZgMmp9fUlBXnBGamFeQ0wrKHg7Qjs4cGFsQio9Zl5vcXN9b18uJmRUN2xqWX4lT19RbUZbenJFUjdqRTtwNktGZmtDSDF3ZzZYQDckX1EzJXd0cFM8UyR5LkpNRXRYQDpXLF9dLkMvOE59I1hEJEdsIyxYK29CM3w2Zy4pdnld''@;'; put 'put ''P0pKZnwrKSpXa2NwTGA8fXt5VnBIWXo0fklvP1VXe0BYbXVXezE8W0xIYHc+aiJ+UmZ6I2VMJChdeVN7XWp6NiUuQCM1Ikwjc3tfLkkyZCtmM1hYSTNmYytGfG0+X0Z4RiJGYyxpLDFlWmZeYEd9Vl0pNzNqeUE+PjM1Q3MvPEhdTjpjNm9pRld2UFtnUl4wOUldL0YuN1d9L0Y5OFtORHVMYkdB''@;'; put 'put ''ZitVWn03MmJ9e2NSPS9kfWgrWmF6VmdEdzQoeyJuYkcsQSl5Mms4I0xJaW9SUillUzw8JCFKRUw3biFTaGVHbj0+UX4hbGdnOHBzcVApKVJ3a08pdm9OdC9KRDlzeEFRb0VZNUp2OmpkcF8xZ3tnMkdWOjdaaWpWQDpjNDBPYUx4cXErc2xPY1FyKypZVjkscmwjLl5INnVifTAmMDpObGU5TGop''@;'; put 'put ''bnNRfUZjeHt2JkRfSnROPT1TW2Y+RlhxMDNrWkRWWDBjPiRhfTBWbVYpanQ5RDJHMmlHUlkidDM2JTJgcSU0YCZGZE4wOEx3Jl0xNE9KdXIueS9hW3ljJTAhKjIrKXQ3REhjPTJGbVY0cDxTXVBXVlckTjpKYjxDNkJKWlZOfTRNezdvTj9kVUx7NzMqVmtzbiYzT196P0E7YGtobVRNSnw5Rjhe''@;'; put 'put ''PnAvbng/aGJyTTpNKzMkNEk8Z1BaWE1VL0Qldit3MVVIZVRveD9+clo/Q3owIzI4W1NhJWxRKTlZNklITEhGJWo3ZStzbUJdQmwiaE5hX1p1SCpnTUZJKzNEOkduQTpaNTFCeFZwdW94aFg+bmt7RDRDe2YvXVBoSXBMKiVINV9acFJeMnt7NlZ7QE9LYz0kUjIhWEU2M2RLe1RTMzYhKXBjJmA5''@;'; put 'put ''RTpYPERvUz5rcy5AS2tfJDpTO0M6eXRCOnl0NylGXkFxQXA9JG5nO2JfU29NVE9xSmR6S0hXRkNlZnV5U3xrVzMuQklbWFppdkVhcCx1PjxRTjA7N059c0hCKUt7b1tdaiY8VDNAfihEdzA7Y2YuIm9SaDw3Iyk7QTR7Sj8pRjc7aTl8aVErQSh6ZCRiNjMvWTl8ckN2N1N8fD9hJF8qJntBcl0l''@;'; put 'put ''KncySlhJfEdGMUIofi47TVZ6Y1Q3SkplWyp2d3RgQDNDOERzYEs9MTx9YGRwfn5zQHMiXzBKRTlUJG9vaiQ+fjBbQnhTJCp+YEtfKGlBY0EqYDo7WD1Ec0J0XkBtOlZXN21NJEJ0QmxiPnFgMTxVXWhxc3dDey9SdE5gKy5VcElEQlZWVDpuSFMyIis8W25oMEBaIXs1IjVCNmQ6Ii9BOk9sQV1p''@;'; put 'put ''JjZuPHg5IjVUNi9BdEIpKmBFUkNXeE9YMHs1TXJIQVdhb1ltKFRnaE8zQDcjT19KWDZCdl9mKHs/e1JWKD8rVTl0JElTYlt8IWdCPitmc31SR09xfUt5VCV+KnYzOixIJX5DMVs9RFssZGFKTDtZNEpjSDJBPSM6RTtwMzd4XzNYbjBJPXYxVGQmMnYxWnkqLnM6NCJ3eU86ZTBucSlHMXIiUTxU''@;'; put 'put ''cFAlXTI8KTxBfSk8WXF4IS5SQWZwTTJPQFduMGhKY0pbPGc6U0dnXj9YPDJ4RzRlKzxoey9SYC5VR0JwMyUzJTBjWVVgZG8jZkBXQCs8WXF6dD8uaEhDYVV8Q3VTanpkLEZldnMqQE8xcTFVX1MxWmRAJFlibzw1R20xbj5MdmlgdVomMVBEdCNCLm99Qm9ORl1LQFtjJTtvYFAwIkJAbFtma103''@;'; put 'put ''JGc7c04pbGVsQXd2b15iUXRgP3o7NEhXYnFALFRiPHtHdGZFUEMjJVRKZER2PSg/Sy8hQWkobnxAYSxDW3Q3Tn4heWZJeFBrRmpkMWhkJE89SDlgeWJHSDxlQ21SPzBNI0t+Tn1OSG5SLnAkKlU8c2Y5T0tUZWBRNzdeL18uMTJeQi5Ba0FTQjJCLkFrX3twWlNjKH1gKDZaKjFJI0AseGZyNzxC''@;'; put 'put ''SmFwQ0htIWF7c1JgPSt6bz08Ljc3OGFjMW9kTTsyZlI0NVVwSVp2PmZIZmVFNUQ2fmlHSGZlLnR2flQhVkoseiQrZ3JoNEsqOm44dmU0Uy80azpLIUxDbUU8X25HPEB3MzRONzJoLkxqVHhLJU1nOURtZFNVczw9Ql8jOTxLZ0B4fCZ5YitwRyglalJeLz5ZOjRsc0ZwTV1FfjdrIkckKElXOUBh''@;'; put 'put ''MzMxZmIiPGxgMHFwRDhHUjBHeFdSKnEkNWAxSjUrIjpSckJsdHh5bUxNXmYmUVBQJW9UR3B8YV9iPFlLcHcsJlJsWXFod2ovY2p0RlExTio7b2VMXSJhek5UIW5QKXA1QFZmLGBHSVpVNFJ2ODEjKWR3OnVoOFdfTXNgVy8+dXxCNmojRCNlSjMpeEEjd1AzLGR3O1h4O2t4NVZjZ1FTPWc7a0tU''@;'; put 'put ''WS4sZn1mcDBYfUYhLiVhL3pGRmpDVzhxc2U1QGsleTBWMmxsK2Q/UlBNQ2dnYDxyZ1I9VF84a0lqTXwxbV06KHFqQCtqKD56IU5CV0MoVCZwJHY+aGx2Jkx6K1lTK0c3eC84VnNXIklbTUEoV0cxMlEkMSVseSN9fXxiSUZzbjdIIWUoeSUiOTlqUEIybF86dmVVbXBdLEV0ajVpX0B1KUAhJXo6''@;'; put 'put ''SjtbcnlycTBeUDglbFhueUhNejleRH17SERZeDojW0woZkBQbH5yJTxgYyshPDhxWXg7bGY9OXxeSCg5aigwR2gzTUFfLzR5XTdIdG0ldUFoOFR8RWJ5MnpPLG90dyk2bVNLZCsseHAzNXhGN2wjVH4pd09ZQl15amlXQG51LzYjX2dNMnFPel43NnRoI21FUVleKC4oa3E4XUVoXXgyd10yKS9X''@;'; put 'put ''Q2JNWzQjd0NUWUc+bj08I01ZKnsoWCxYI0xdJj00QlR8OEM9dzdNW0t4SD1vVS5xPXdRXWk9XX4kLmdpPGt+QyxdNV1yLkBxN154YHRwTFQrcD4pKlRuMj5wJGs7SXNDbTtdT2tba0ROWU9zW3VPZSNjbiY4YyYvfU53LzNnWiYrTFMuTUdnfiR1QzNraz1UT3JzRWRGP28yVlsvPSgwTHpfSFQx''@;'; put 'put ''SzY3Wlp3dCNDcV9Ba3RJfnJWRnkvVlBoXk12dElAPG1rVk0+S15KOnVaWWhVeElTJltKNXhhKnsyV0tIayhuRlt7LEo3bnFWIVtSO2E6Y2diRDkxR1p4WCRYbDVAOXFYODxoYUJiW3lZRGM2ZEVmU3ozRlk5VjZ8ZVtrJUAyanRGYTZlK3gwdCN+MHlneHlNbjVAUyVHJkZkVVB9T2w6PU9ZVTxn''@;'; put 'put ''ZEdkS3BGJV5tMDpTdWpgM2xvQjc7NzxJWmMxKGRJVUx1Z3RGcix2LCZmaitQQjZVOX5QOG5fPXR1M1FQRTl8YURRcWo+UiwhSU0sITk5VUhdYG48VDJucHYyMmo5QyZ5S3k9bDBNKSQ1UmlXQFd+WFEjc3leaztQRCZLRW8rXldWYndRKVMhbmpzeHA8V1BIOGVLbEg2W21jJi5tcFgjVUZrZlJL''@;'; put 'put ''NTwiU1cwS2ojLE1rTXlOVip0bkIsMVJNKlMwQGFaNk00PDR4NVc2PWwuVzhQMWlUaVU/U2l7KCNiSmRebjNudSMhRTo1VjoydF8vS2xeeTk8Xy9FWGtYO3xKQmpHMSlpR1lqNCV2dWsjMXcjVndpTlJRMHpZeHAySUphNll4amAodFIqOns0fVFDTHAkdlJBbit1WyN6OlFsMnRnOnEkZzo7TkFM''@;'; put 'put ''dj5MO2FYeVg4Vll9dCVBUysxdHpTY0lnX1U7M2JOOkpVTWFdOihbZiZKX01FO11oOmZebT5sZ01JfCR6ITI9bDhpUz9vdHo4R2UxUSFCbjZjUnsxQnAuW2hxIitJfD9aQztRbCs0fTxqPFZSJDsuQCM6bk1HbmFPQnBaY10vfW53ai5JJDtTQzFRSCs1WmhDSSxiXTRnblErOiNENExwcGNFQCZe''@;'; put 'put ''Oy8pQiF8KVZ9Ql5uPjdYOGtoMlpNZT46SV8uZDcmaFRVUz1dbHUmSTshL3JiQ0QhOGQkX1N9TXI/UT9OcEV9NzNTPmVvW3RsQkc6OVB+d0A1dl1gJkRZWmtqUXxKQ1lPMXE9XVR7Nl5CelFUdiQ1X0VEZH10a1h+PXdTTWxPa05tK04kO1dDcWEwOkRYaEF1d1ZWR2kiSk9KeSNVQiZjVyR+MEJ7''@;'; put 'put ''dyxManBnME4lQlUwWTJCYTJoaHNAd2tvRjdZSGcqL1I3fClmSlVpWClhN15NRSEjdVhWZU47ME05M1FAcU0sISV9JEJxSz07JFlLdzNLPTo6KSszW0xoeGYqOHBWKDswei5fVWcmN3Y1XXxWOnFfU0drWldkKSVyalQiel5TMFNXWnFoKmNgNkMxITNgI25RYitsX1piTHFfXXNrW30odygwcUhT''@;'; put 'put ''MUMxQGJxfk8rZmMiPiMqOnV9U3pXW3x1PjZTd0pUT25YLHRIV2JYMkx2Mj5HLnIyYGZHRD1pdWdrPHM7QHtWMXAybEZseUwpL31LSiUjOXh3Z2ksNCttXW5wUzhDOzd9K3JkR25LTD0vYCsmNml8RTh+e3xWKkR8JiMpImB6am1mPSN9fElKQmNFR0JjTHgkNio0Qm4+YGBgUVZBNiwhVjhUNUgy''@;'; put 'put ''QzhyXXZ4UDtJa2BdR3t0NSNKPDczKXo4V3pjRHs6cFhmalI/Um5xQk18M3Z5NHRyblI2cG9fOSNzZHtbNThOXjkoZCQoQjtiQnhXWT8pSURde2Z6XkAmaGI0TG9JRmZqbkgiPGtxRTtgOFJiN1pOQHNNPVZucDBheHp7JWkrMl83RzVxSGY3U0NKbWFbM0ooWEtVaSw/S0k2bjlOfUkre0xlUi5p''@;'; put 'put ''Y3RmWnswZVhKUHZfQHolS2c9c1o1WFMmc10hX3AvPGpUdiIlW1h0U1dbIzh6TXxUSSVQR3YpJGxDK1ZfTy93Y1A3KmpYIy5HVGZTYD81eD5ra1o3NTBMbyVhMEJbWVtRaSMiXSh7YmZ0UHlPWDl2QlkuJnR1dUoxKWZsKWFhOzc4R1lCeitMMVZ9Y2Z7SmxidFB5PCluIzx2WU9JdU9CTml8OH5O''@;'; put 'put ''TTVdUmVNQ2lzZTdRZ01hKStxbVh5bUFTYkV5dXFveEZhMk1nRlJSdCY8OUJWdUpYKnRzbjx4cUYzUzNzfWZ9YXoyO0dGRTxdKF08V307dEE+byk7SEhONW89QiREblk5Qj9jcnU3THhfVSI2KCVYcXp0JlgkXixiW2MkL1RSRCF+NmJALHYrTSRrViw3IXVYVWVgVDdkbihDWFM3aU95U3hScUtZ''@;'; put 'put ''ayNuY186S21iJmFJeHxFR3dPPWIlXnJJTDJKS0NwNzQ4VVopQ1pwb29xYFZQRH4oOnI7U2BNMHZ9WXcqWytdJm5SZChLSTtBXkB0d2xDRnZJQ3d4eFVrLy9tQTBOUkd2M3AxPkl4RSo4XTFuakdsem4kVmdgVGZyMW8pNTJeVWxwbE9pZTF7U1U+Y2VGazYvfUZiSmxDfUxwME5MZzQ/cWE2N1Rv''@;'; put 'put ''SE5VQCRaK1hBfSM7TXU3XltGJkVeTncvN09HYSNZcDpAMzxyd1ZXZGZ0MUErZ3pUNWwqaGFYS09XPy58NWx4IT9fUGt5KF85ZW95NDVpaUJ0Z05han5tREZMXj9yUyNsVTRQWCNgRmgxe0ZTKUtJOyJGZGJMQGpgIzcsRX1lZ2oxIVtMc3lsYixaIyNyN19gTn10N3lxfmdtSWJOe0k7bSg7PmhR''@;'; put 'put ''K3hGKiNIMW97Xl4qfEV1YkRBJlVne0Y5QVpwQipiQilkaFZKd2lvcWREUU4hQTRFWXtyUUcuUD88LmdmSEhXNEk+cC4ha2F5KldkeXp5N0tOR1d0VmAlTXxAUyhNUUV5QCwuJTxONX5HfHU9KH1mU1BoTFBZYzw8W1UpVllDSHwmTnc4YH1qbUw+VDg+Iz4mazpLQjQ2ezl0PXEuNyZxdTxebzt6''@;'; put 'put ''bk0uLDF2RlpjU0BwdDk4akl7KDFdV1Msbnx5S0d7c0xwOnhdZ0ppNiN7MzpdISU4YGJ9Ti97c29FRHRFell4dVgseURRdmB8KlF7dVs/ZVRbSDVUKFtvYy4wMUF1JDV5P0xqXX5jM1kpWCk6QT92WiwmOWJCKXE3KikoOiJoMndNdn19YkxLZmVVL0JueVdAQCxCNWs+SFNpKF8qPmwlR2cpIXI+''@;'; put 'put ''XXRqYkJtP25FYVcjUH05JiNAZD4kJiN7cGN7RCg9NGolUHtaRWhMQE53JWp5cDBxS2p5K241SzcqdlNfWzIjciUzVzVUTEpmNmt+dT4yXUsqK0luQXpuYG01QEV8bDBrfiJ8aU1CTDI9UWBzVjxXNVR4Y203Z1F9ck1dWVo3aEtAfT80dmplezQrZHNhZzYxUzZ6Ul1zcUVsWTYkMkApZDFVMmR6''@;'; put 'put ''aVdGYEBjQTYsZHR6JGQ/WFhaOixIWkBOfDMvWVdhVXM4OzZpNmdkJSFldlpgJVdESXo9cGtbOGVBXXoob3ZvMFplN2h7YT9YbXtKYlp9IVd8W30yXy5ARF1MLHkzeVB5cD9hR2RLeGssRXldIktdcldlIXJUSj1BajBGTDI9JS9rTXx9X281d2dNYk47a3puS3xzI0J5b2dNLltmdiZXTiVPbV85''@;'; put 'put ''JHolflpQLnRlI10yWD44Wjc6fSIqYmcmNCRSdWpqaGw/VXdqenJzdCVjWWdHOHpQMHNuVithO1UyVF9uTlMuazUxUz9bd1Z4PkVZb0pJUEw4RDd7PyVrWDNacE83Zz5lenM+VHcvdiJ8JnN1JllfLmZ4JilRe15JOEIwdGQ6QFYydEApYG5lRD49T0MyTjBaJVc4NlV2OSx1P3BTbjQifU4iJFBQ''@;'; put 'put ''cWE1QGleSGd2N2EyWGRyaTpAeSV7U1MzR0lqOFMhLil8b29QbC9RKDEsJTJLTmZHc1Qqc0tlRHpeeHlgKCQ4OX1nZkEqOzwvKVNmLHh7MzJVWmUwbzwlcC9DUzo3IzZSQXNufCxhWk9vM2lXZVpfeSVfezZDa0tuRmYxfjpHIS9DTHZTbD56cnZBdmtGZFM2bEg/QmpLfVJ6QUFBQyIkYkFBR0g4''@;'; put 'put ''VyJ5RU1LKjh5WlF0Z2ZBRkFTN3dQeCtTMmtPKHk/YyUqW0ZhdGxCQUFBQUFBIVdjTVNEcVc3aS86Lj06LHZEYWJPPjthdzI0QElNalouQlg5VSQpR3RYZUU1ZDhVbGVqb0g1NUFIbSgjIXxReSI2aFlsJDwoTHFFYCRLWmpdZj9wN0UrQU9DcmxJYnVUaE9ZaTB6T2JGcG5qcyRTN05GailMeXNF''@;'; put 'put ''LGk5W0FIQ1d9NnxjdF1gZ0s7fTY+eHlZPmc3SmF+MUZPVFlVWD51eDxxb1o4U30pMWN4UFZxfmApZCUodWp5VzZ1YFFhczQ2VyIifWJ8KHVhcFlLM0QsZig0YllXSyE+QWtkIXIobTYrPShPTDxEdCROfGdJTj0vTlsrY2RIOlpEe186STArKyh+ZV0qLj4rO0NZO0I0Tj0mYkE1JVBCOHM0QWsz''@;'; put 'put ''ITBfU101YDRpUTdvayh6VC5bNVZXYShSMDI4V18hLDtiLGIuMDA+O059cCJfViNVcXFgYXY9Z3pHWU4/YXZuOmluW21gKnd8UU9YPGpZb3ZLJjBCJSQ+SXh9Pk9PPzhOenAoISthcU5NckNpSS9MTUwqOCtSfGlSfHhSW0tHLzRLYnRvJUdgayllUT5bSFdlK1U8Jk1TRDxFaz9ES151TDBifTFR''@;'; put 'put ''Xkx4dClUciVeNWdtcjYwR3lkb0twVl19RHdNa1tATj1BVGNnXks0T3lXZGc/OTA2Nmk3SEowOWR3RVRIKD1RTCw1KXEpZG5kZUcoVilkMXopeHFle3dTW05Aa0c0WlJ+OTNyRjpuWEtsVE9wZ1h7bzdkNDhPdWlBRlpqaVUsXS8zeEo2M1FSVFs5TWFRTX1HeXRnKCg6MS99bT54O0JhWURGeWAh''@;'; put 'put ''JH5BR0NsazJ+cDE0dDx0R3Q0WyZ1YzdJO1dAPXNEemBjWzJmQ11RZnJOQFd4fUVMMkVSWX15cyhyYV5DMFFNfD45VEhxbUFLIkpdZEpMOFpdV35me11nUWlmTj9fKSJaRjl9KixKaH0+enc/ZnBOV2Q7NUp8KTs1bCxwREtZdE5Td3c8NVtPQStEWTQuQzZTaVg4KEFdbUhkTFddeTx3aitFTCh+''@;'; put 'put ''UzBHcS8oQ14jJGk2LENNZmNndyFTITtzK3ZFWXFHKktkQTIlIjJwbVFpNUwrMmVOMFdHRT56IiU1VGxCM0B7bC5PfEEoeHg3Wl96Klhsd35hMUVdfiNFNGB1QlIjTCY0O0J3TWYlRyRjOi47R31WOG14OXBGWWF9Lj1NSDJVPXBZPm1kZl1vYjNXU1B9aSl1VCM3YXdabyokX0Z0VnFGSVRtSUBP''@;'; put 'put ''JWt2RnlCRzlZZit5Q3VxPHYoO3E5al17JS8wWm8oMHo7XW99S3FmKi9CKU8wNixXUzE3Ojh9VyJIblovOTMmTV8rIWdaJDFCQjUjUWIwZVFnLmRsTXs+TlkjfHRXPllZWTJfPD9sWiVvT35ZRXp0M21ELDBye0trPnEhTy9wSj5oYn1VQks+Y2hbZkwvWXZMY0xEMHxiQmZuX31lRyU5JGA4Piwh''@;'; put 'put ''PSQuJkJhN21mPD8hRStZb3d3JFRhSys+Kjs7TmM7dEV6QiEwbWp5bnN6Z09kKjxTYS8wb2FhSCxtQ31fKVFpIyxScUlkNE5BbCgkTUNyYUNxKztqOWpmXj0/TjBAPHU/T1c/O0w6N09vM1kwO0h9Vkg3TzErelk6JlNHdTs/R2k/fkJRW310Rkg0UVloKkUoP0x2UkdAVShkRGVWRk4hcUAjLEN1''@;'; put 'put ''QTF3fnQmVmZGb3koUSZtK1csSCw3eik1Nyw0QHpxbDlaTzAvXkZVNSs3N3ptTTEyUUkkfjJJeyYwT3RVR1dfP0pNd0YiVFE1OTcxe1pwSWxiMS4+VF88Vn5mcGtWaip1aitfI1RaIyVdI1FUTUVZbDVNazd6VVMzP3N3KG5QYzNQT1shSGo7VDJzZ2hMaS89ZiJXTSM4ZVM6Y2t5ajE1UWVAXU9F''@;'; put 'put ''cW85bmk+LD5jb0pnbDtbZG9fMSNyfl5KYVhnQ1o1KXw9RWNyP19qdDJhRzkuQ2FLeGZyQyxuNGJLXkQoaUlPUTo2TCxtX1VmPGxLIi9PU2x3LipSMGovfEx+WzshcGFSWT1jYTc5LkMqPSNxTHEkNSUpUnp+bnNPPzE4RFE9X1V7TFo9RD9iZyNKeFdWSVcwLz15UGxQI3E1QkdLY2I9N2hITkM+''@;'; put 'put ''dHQ5KVEzbnp4fDpXdWRZc14oYjxnSXdYSnRQemxJdTFSQD4lP19FXmtdc0N+V0I5UT4+SVRITE8yIVd0RDJXdjopajZvSCgkYU5rRm9BekVlfTNeYDZVQWB2e0U5Pjw6eV1PelU8ZitHenVGOWkoWnxwYVUrOk9vSV03cz1FdkkoUEZkU3coSnVoZ0tLa3wiTyYqWkI9ekk5W1FCWnNBYDVockIp''@;'; put 'put ''dj9WXXQ1YDJxTWwvbiNPU2JdRTosJk0oRyhmfXxmLylQMj5vZHB2K35uWF5ATitPYTwjLz5gVntZVjEzKXlXTih8Sk5GOW5YIUpMdiZdK2FZMmNzWHc1VFYpRXVlOiVLU2h3TnhqbzVvV1tEcmh9UmYxQUd0OH1vW0xfJElFaGBqNyZDJmdoRS5TPjlOSSM6eGh5aFBuY3NaTFBSc0RXYEIhaD1Z''@;'; put 'put ''VWBEM3JPbjopKW1EIVsodG4kamozJGleQjFQXSZCL1ImV3QqP20sNmRLZ0VhdilFUl8jX1UmOEkiOWkiYVooSWdDcGtMRk1OSjVJI1pSb0Z4ci5DK0h4ZVhxNiQoJSg3Ykg9TThabkR0eWIjcCpSKjN2fTI1ZV1TKm9RfDJ4THBRVjhJYXtfISlXdHNwOlhTSWk0SVUoXWhSbDE8KFZgTnZSSzYi''@;'; put 'put ''TUhZY0VZfD0kZkJaIyNzUCFkdUV3RTlAdGhsKGAkV191SCwkez1JMkJJMW4jMSpMc2xrNXFsWVE2OWtYdlFCeT84KW97NyUkeykmJENCfHIwakt0YF8+U1dQNSpNMl9tTHwlP1RfUWExX016JH05YEhhXn5eTlZCK1hmWEgmNmB8NCQ5fmM0bVQvMkZXQDNSUVR2QGVieiMwMWpFNTUlPU83OnFB''@;'; put 'put ''TF8yLEtpVEM2RmEqbzgxOyJFdlR0PSp6cSVFOyx2KmFFITorYi9JcG5eTjtOV01dQnhGIllaVUI/cHNmOnh1a3M4Myl6eX0/JF10Sk9mYnduOGBBdTVwLnV7eG1VeSJMPmxrRzp2Lmlsa1l5dzJjZXU8WU4hO0okUys3WWpvaFNiKUwjYHY1UmUofmZLRVE/cV9gTUNEPWp1Qz54NVFiIjNIfkhJ''@;'; put 'put ''OWdCMGN7OUgrPjo7b3RjMUNqWC81bmx2akVIISVaNE1hcyE2aCMsZH52KV9eOUs2R1d6RX06a1dCQXVtaCtAb0d6ayVJNm98fjl4eVVGSGhYQEFmS2BSW2g6W29mJGBueVE2Z1V4TlN4b3BLXn1NNUIkKXRNIWp8Jj5oQ00sVip2XUEqVE5ofTp0Qm92Wj5zW3dnPiw7PFcrczA5cShMcl5WQT4i''@;'; put 'put ''X1R0d08lVGhlIVh0K345eyZMKXFkJXQlPjdxNUNxVXFEZTNacE9wOCJobi5wYmRxQDVzTnx7ZzEqSn4jd2xJJVE1WV99WGo7M1dKVj1zY11VO1BbJHYxX2NLXShPVUMrVTEpcj9FVCp8TWBJd20uV1QpaWxVYkdEVEQxT2t+RjtURm09QkNOWUdYdFtZYDt2d3pJaiYwOWtoLzZlTGI/WSFRfTc/''@;'; put 'put ''Iip4KiZCZnpCKjxRXkF1US5JM05SVyl9d3h2PFphPGNde3JHLEcpLiZrKEtaRy5APXNwMC9TRStxPTYzeHl1K0JTW3N9IUd7UEU3Tnt3UF5mZ2BPYTtsaG0jXyVSLFVEUUF5PHB8eF5ZN2M8PVkmcyZdZ0RicVdGKFtlaURHeEorSlVhaklEUnF3RDlHSSZfJCRXUjdde3lBfG9SPjY4YnBKRG4x''@;'; put 'put ''MTBddX1PZHpvRjt4Iyl4eTpAfHdia00uRHhsMTdGaV15JC85TWNWJCRYeX10NDwxTyE1TTxnJSVScT5mcmNoUUlHfGxoZVJXNldtcnMpJXtsX3trbFhxa1FsX0ojXyQjPTx3KGFjVjY6RmxpVE5naHpPXUVQJFp2RWV8TnUxZS5YXTZkJUIpYlJYYzA0I009dmxWYCh3SHhjXXwkZHlbOVIjZGd0''@;'; put 'put ''RWR8Y0BAJW5ybFl+TT1QIzo8LzRdRGVELHJoWjFEcT9XNWI/VUZnOH1UVXZUSjxGXix8TEQoOGAxK1pocX5uPy9Odi9ANSt0ZV5vOl5lT11yc0s3bG9xc1tjdnNCV0dOUTNgc0xjOUBkZkgoTktoLjApPkQySFZ0WiVoUmliVFcoJnxwKFRjJDs7akdpNXxXM19PN3tWbEUhNGBoMD5KR0pNSDw+''@;'; put 'put ''OlR+P3UjZlteVSJodWhGIWd1cSRmXlRJVXxQWiksTjtGWiZ5JVhJRCE0OjBePCkoRC9pTUQ9PCV5dXhXIThWWkk1UFdhbS8uIXg4SWgrVzspam9CL0UvfnE4KShtS3FpKmo2VEx9STpuXmpxVHJWVE5tWTpuUkg8ajtmRV5ReVZbYzZvW1t5X2FQWCJVJH1re0FQQVQlQl9hbyNNTStDa200IkhT''@;'; put 'put ''Lk1gW1NjTEdobDFMKXN7WykjQUh2R0gmbi81ayoqNH1EYSJBLzlBa11eXnhdeypiZTBPaDlKSl1sN0JNeUhmMlJ0WF8mIUhddkdyWEV6S201V352dU5PYEpOR2FeK3RScWx3cUx2PU1DakRhYUtzaFtLYlZeQjBrZXwjNjFMNHwvXn1PWllkQW8lQjBtYCtAJkB3JTk3ZWUyUkBhXkxXajswbEIo''@;'; put 'put ''eTwoRFMiQElwUmtEfUt+MlpbaSlxKihXZHo2TmRTQyMlWGJlUStUNz9pYypwLC45Pk08SndMejNVOnVVR3ZDJTFXTiQ5Q31rLCsxO0QlKCRqfHFZfE16fGk3ZjRLTlo3enxHQ21bT2ZiMD1nNDBaNlR8JiF8aTN7YSlScDRGXnZAK3UxLFB7IXpzLnBeP1YpJltYdnJWUXplNHIobnUqck58ey5e''@;'; put 'put ''OFJfJUVUan02MnZPJjkmc1hQWnckS3VeKzR8e0MhbXVMJEVWelBqenRKZHR6T3JyOnRxaERwcVo1O1lRQ3NBZGBWZyYyZSxhSEIxelVrajRlVkVjcCopd2tlWj95SlM+UE5bRV1uLigibEJfXU04RE8kLilONSt3JWY4UWdfcm5FPFZgLzlHUVh4R3MqWEc+aVsmMCs1OD1nUjN0JDp+eUx5LDJ9''@;'; put 'put ''YW8+c1piS3pMS2F7PkpleEJNUTZhcjZQYysmKXJwMERob3FVKmhUOHxvRFEwcElBbXQsXmxFS2k/V2MpWit8NVh6ZHZsKiNqNDBESElAa2F2JWVZSllTYUw/MlhuT0ksWSJ4d1pBLkcuMmkuS0R2aUhVb3xQc19Nck8wSENEUXR+KFlUSGhHd1M+WEB7Q04sP2dSLCVsckZ0V1NLbk5yMkQmZTxa''@;'; put 'put ''bGhWYnIwb0k0OTdXVS5BQDFwOiUuWmReRThiPGN+MXIiWGQ8Qj83LzN9ImAudSZiW1BpRVN+RjYsST4iZD96KFhaTmI/akE7VUpjS2hSdWoiejcmeW1tSyl6VG9aPG5gMUNjVEFAZlp6TCxre2tzcTphMUldRms7dzZARGZ5NHRvTiNDaHpIJXdsS2tmT2pPczw5W3JmR2RBZUE3PlVdZitkb0h7''@;'; put 'put ''MTE0cHN2YnhVeSw0MVpJZVc3fkEjYWdnSFQ3dzZNUWQ7YT5DeHNjXTBNIlJ4WWhheGtHKkBAXnkkOzp5IT8uJDtYQ0NnZjo8OH54M2VKYjtWVjV9LipEP0lYK2ZqOmNOJjhOQGdqSUghM1YxY1J7aUNCMXdqO2ByW3BVMlc5SGp6dkpuJTdDWlFZOE0wUnk9aXN2a05PKF89cWw8fTNTJUouR185''@;'; put 'put ''azM1MGokLGU2I20xc28jajVOU1d8KXgjMHBMVWF6cDZedjlaMjhEZGA0Kip4SVZIaHFMYCQhOWBLcEZYJFk7YHhQd1V8OVJpNmx8bFlfKG5GUnU1TD89OCRJKnVZdiYhKCk5UW91PFpheTBbZjtgdjY1PlZ8SHR5YCg/O2NPKzVBZ0p2P0gzMyE+PGMyJSx3d3R1O18pSWpYfGhGWVtWNnVbO09a''@;'; put 'put ''OyFTT1RoLGxvMmRYPm12Q0ZjPVVrN20hT1NCIywvQyEyY2dBJTNlKS5tYlpfUSghM3MqJmxKXklNUEVOUHp+V3BnK0VzLE12bkhURUJ6V0gpfFpVQ2MzWHJEPDJ+Mm52UjU+MSlzNzRRVUYqO3R6NGpoNU0hODB0clojRCVkaCZbITBSRyM7dkA2OkVdalYrejhiQjZSVX5rPXUsUjx3QzY2S0E+''@;'; put 'put ''MEREYEI0YFJbdjB8LHk9OkswXnlIQThRTSUufCosQ09zZyYucmJSPURRW15TQiNjbkZUOD01O2x3Sz58Z2RLNl8ue2krMi5ge1VEOGMjSkl8UkxkVHlXV3FiPkBKKVs4Lk0+JU5IdS5IQllaRTNoMDUyWyUrRFF4TmYmTF5hNmtpPDlhalJKOGg5bEtXMUF2KzsuYSttYyFedFlDQzcqXmEiJHkr''@;'; put 'put ''alN1M2NbcHAiJmRPQyQsZk9LJEteMC4rS0NiY31xdnQlW1daTnAwI1FzeWVrbWlhTVtOXnZYTG1rQ3AyX15DV3VMdDs+JHd4aGs4QVY2XTw9RGU/SU1ITSNmcmpyU3g+JisseHNSV3BgUlpoQlhSfGAxe29YSHV5Kl9pZmcpbUxYWDRrciZ5I3MpVFcxLytBRW9hY3dSTDZOfXcidnVESDA6d0kq''@;'; put 'put ''Mlk/VXJ1ITNVUGkvUUw9ZmJWIklGOnhaOTxaIV5CM0Q0L0JWRHkkUypHY2NVPTxFLE9pKX5iZ2UpKHIwWk9TSiFpNC91KFttJiN9TWgqWyJeanJiZkl7ZT5CTihvbXFQaHBpSiI/SVI3VmIlYHBULkdtUUNRJnN9X0tsMDUmQGRFJllrXilDTzFabHBkdyRrPn1KLklNVjZOeWgkW2smYmd1dzBE''@;'; put 'put ''STwzUV0sL3JPXjR9LHtadlU4JDA8cGBSYyFEenEiVThRTGZQKnFpO2dgUHdienAxaVAySDx6fGltejpSPDUhL0grUlBiPjsmL1ArMkIpd1NrcDRjUUJGcVNCQ2t7KUNSaylFbyJHRUd0JjMmdnlCOzdOPkw8VFM0UHdmS18kTiZyMHV9MSlRO1oqfXNqS083KT1iLi9VUUZ3R2M0Tk58YUU1ZHtI''@;'; put 'put ''Oj1EL3YzPCYmfjc1aSFHJHpmSHMpdFEsKUx4NHx1KmQiLlZmYV87NyleP0t4SWZaKlpGWiZ5bTpvRkQ+I0tDa0x0Vj1zc0JEcSwmUSN2K3lWNVNAck5gPHEqUC8wVX4rKV1pbytFWUQ2dSoiM3okVU9dJWJlOl9IaGc0b0NoPilaMmd2JEl8YGFLWzsvbEZMbFpkUXRUeUI2WURuOE9xSEYieTc8''@;'; put 'put ''KTE8W3NCcjVBMmBDI0coTlRRUz9NTFh1cj9iaU9FUCRVRj46fGFlSXJpLi89JmtgP2NpQnRUdjF0R1AoSGJ0PjNxRC5lJTljQWdGbzVxaWwoZkQ6ME0vWUhFRDZKLl1kXSliIlMrPHhqP1ZSRnp6cyQ1QzJFSzs6LGg/UXlOXiwwUXxeMCskWVlAbTx5JSslV2Z5XkNWKD5KbHsqV28zRW1MVipL''@;'; put 'put ''cDQoPUosW01reXFgWE1aO3tIbVRSST52VFckWUI0NjxvZVUyR0tDPkR7ams0KVpqWUQyUEVDYiMiKyI5Oj92MmxdPXc2UiZid2ZfJCNMMCZIU35qLF9VaiFlPmlMfnYzMVI4K3dSaHA3fXQlOEQ0WFBrOjFOUnZPMzMpdlYyTC44ZUJRfHFQZlBFNXpfQixbe2JLYE1XfmdeS3s0a2lmM0grXkFI''@;'; put 'put ''YClkQ0kvVDd8cSMlPH4vXzEpTHw4LEQ/MkpWVlN3SCJ5bGVxJWB9dm9Wd044PGVCMiUwIypXMypWb0MufjZZb0UxKl9ZPSZGY253UHZ4IyZZYylbWW1+Xy5oKno0cmFdSGlXckZ7NE04KzpuLC8/RkduNj5XaFpWYHBYXSxWITsjTl0kQl0yLzY5TXh8Umw8dTpPbkoqcEg1QkRhL0tzUkNgT35Z''@;'; put 'put ''TUZONnF8WGwyX2hZfC9JP0RjQTVCa3gheCQ0MFZCcDslKzxNcmpiXTR4ImJubyI9KjVbQ05SfVdRVS5ETm5oY3pLLlc3TT4raDo4Q1s0WUhlOEtjXTRpcDojWTxvXUxEPWtZa1UyY2l0NUVAUmk4anNxLlVJOi9hLCp3V0REOj81RWd0MzB8OjFuMWpyWj9DUH5ZNTJ6MGFQQC9WTVRHdV1AL1Ve''@;'; put 'put ''aGR6OFo1MSNdP2lFRkEqQHM5P0QmZjt5PUl0Xk81bn12eXxYQFYrJSxacjF6MGo+amUwLDkqN31uZixwMHVqRi57W1g/ZEEvXyhKLDVjLGFnczt7TSlhYTJUV2o9LjFCZnUkXUx1ZTN+cDd3aCZUQ1o5VixaXzt1ND5IYH52MEd8dCV5dS95PjMhM1BXMjlVQ1ttOTdRUV4uMEFlLypQJSgvNG9q''@;'; put 'put ''XlI3Qnl1TGx7UnY+bChrS3R5bU5Ae2lsIlsydEZePUk3VHguM3JYXypJfio+Q2lVNiw/YSFUdCtNWG1ibHVmOzIyWWA7c1JWO053KXJja3k9RD1gdDd1OWgqMytwbXNlVHs+ZzdxPj0kYHMyeE15VVF1b14iIi4vSjV1MGo6SVpAZ3FxSlIwJWxiQ2wjNXtKL295NztsRWt6aDBdSjZLKSRESCx7''@;'; put 'put ''RUxpfVhmbyxiYDdvVks2NiJvZEdpPFk1Z3xJYTZhe2QlZDJ2SyxfQCQ8Q2VGIVQ7YEhrdWtndChQZjJ1dj4kK2hAfHBTeyYsRWZ1XmR6dk5oV1RxNHs4TTFXTXIqLjhxMC5SUGJ1cSIvJUp3JEFTUyp6WFNWSS53dmlmU3k8OHt7YjFpSiUmeUt5bmZGOTcpS095am83KylJVF5TSk1beG11Oktv''@;'; put 'put ''Zn5vLmUifXdZSWI+KzloSiNGQitVRmUuYk1hU0g2PmgiWjNnZiNxPERHTXFKfWcoaXolRkJPZlcxNlhaKV89bVBpUDlLYV0wI29wRyVsVTtKVCJOajR7SzhuNiZCYiw0RXoqJWMsZSxgej91Y3s/VFsuNkBATmV5Ulore2lnX2wsNXRLbCloWkRjaSE7KTFtM2tpSVhrN2U9bSs5UlMxSjIpPUpX''@;'; put 'put ''PllwUyEpclt6SEw2fTc9PUBNU2JibEBmWk5eeT1+TjZLNCZ9OGkjZmBUal1WcmJ6LGtNOT1KLjF7UGJ7PCFeMnV2YUNCY2d5a2kqLmhfYWR0N1YsbGAxXU0vKittdT04NSpZIyt0TFV2RWlWdjMmKDQ7W315RmFVNDVFNH59Y2kkejQjPylCdXZtI2h3WCUvUFckdTtqTyp6aXdwayRHNjpSeUhG''@;'; put 'put ''Zz9gQ216VVpqTn5MNUpEIyg1QyhMIl5GOm1IKT1MPFk2T2gjX3ddOFUmKjc+NS5jQGdobnE0Py4qSV4veWY1cSteP0gkOWtmdjIuOCJXO0RGaDBkQ3BZV2I+NHA7e3YuSlQiYWFmaEFiKUJkbzlTKGM4QS9bUEB3MyF3cUt1RSFYPmw3aih2JFJ7X3VnWz47NkJjK10qKyUvalh8YyNQKFdwYC4o''@;'; put 'put ''eHUkZSVLXSI7SCs2OVdHWkVyLnpjUGJCKm56TmRiXiNZKz45K0RJVz5zeDgxTG4kVHZRZF1YKzUlWzFDUTYmdz5QJWAyJDA7N248OFImWHllMyQkPC8rQEg+RUN+LiEyWU4oUlZOYERkdCgjW0NidnNyRU0yLCFrdkxuUnZVRD9nOW5gZkg2IjI6WiF0VU0kNixKOlMiMXZ2YFt2MipNV1tNKH1y''@;'; put 'put ''aGs2WXtNKiQxcSRsd3I7aV8qKztzP0xuX0k9VUhUVy9VSUdELDtNOGpDaztsRk9naTBsNzBmKDI9YnEwZjp5bU97cDdnOjBofjdFK0h9JGwubXchKXNqaUMuSDJEZ3JkZFooLy5yZzZZRCh0Z2k7XT9IRk41bE9fLFtNPiYrd0AveiNOVXM0VGhfUmwvcWJXRU04Ty89VTNGQCksME5GeV19dlhQ''@;'; put 'put ''YCM1cXA2ZlR+Q241Wm03KSROciI5diFPaFBjZWs5Ny9ueGEyKzg6N1IwbzAkY2JbZGB4MylPUGpoSUttO0taTTt2PVlUTFg0TjZbKH1sJHUsajR1V2VFMUBdZzZvTktdNlE8Myg/N2h3aHlhSnAwYWVGPDY6bn5TeShRbVdrL2FQNDMwUSFEaDE0MUNvTUVqMXU2Zj9lQ1FeWztRV3E9Qi9FK21v''@;'; put 'put ''LEpUUCErNTF8clczbHR7MnlgZy9EYDZ1OzkpIVcxUztNWWVAWlpKSi4kUjElV0dRISJkZUhkJnBsVCRvS3REZDtSPXgpSGhqS1dVQyJXaWU6K2QwVEZsJVhIOnd6WFJNWkNtcGIzKlJaYTF3JW47fEVuaiYsIXk9bTFKW21hWGVGb3hseCJLLlBzcWBpJVQ1TFgyLDpgdlFPPlNTMD9Bc2N4T0Bi''@;'; put 'put ''T1N1MjpZJTNYJVV9TGlbQkR3ZXU8LF1aJSx4dGNuVks7W3VUcThzXSY9UlFzM0tYZ2lsPVlaUzBZeH43UitmXiRMMzQ7N0RkSXdqUEB9WX44VllCKW5YfGcsSnkzZHB6TSk5clo7dnlaIyJ6Ni8iWjQ7ZH5bTXkla3VlU0puaWpmWDg0VzQxdixGM3RWREdtVWxNS3wzI3U0JmUzTCJYMmVDSVZR''@;'; put 'put ''OX4vai5Vbm9OV2c4QUYkaXpvKGclUndGJElBNGMkSEhhb0Z7QTEpU0RaJnFid2lRaFFuTjVmSWYoOSZtPz5HdF1LXl4pYWdRfXEzeX5zfTwjXm5XclcrQElaTk1YQFExTm1ASj55RTRVL181N31GJkpeIjFmaGh8fSxZKlJRaCU4Jll3LFclVV8+clNNLkwjV1FZS1BxY1BUISs/REVaSHhJQDZ8''@;'; put 'put ''YENIZHF5YjF2OU0oMmxUMytHJE97MGk2fjpURHRISXVgTFJFRzs4IVI7ZzZfLEV+TV5wSTB6SEE0Vi5aajdbWH4pL2ZiVUFgWUd1ei85cFVvTSZKUEdMYWp1bUZGbWJFQHsxbHt8RSw3Q3tfMm9iUWREdj1JcnZoZXhWZSZgZDU3On5kfkt6eFMmc0JyKHt1ZiVrSSRDVkdSenxZMypASnRgcCxy''@;'; put 'put ''NXoyd0wleCxZVW9uRmh5dXs/M0l1VzljYURJVF1HNjpZRTwoTT9pRFFXfDp8UyowWG9aTHdKJlc/TTVkS0M5LzBTZk92JXtxd3RtWGxyJDZiQlksTG45Mjd2dis9NTJ1WSNrSktmTkJmO1UzNitNMmMwWk1Me2deI295fHlLYHRTbSVxdTphdzdGJFRhK0AkVU9UW1RFNzFSc0lbRl0lR19eaGJA''@;'; put 'put ''JSV4bHVURkZTfj8rT1M3bDJIVj5HaSowaWYhSjVKclkxayZJcWNHclRlcWBETTAifEEkeig2V2hYJjUmZCkyNTtZOG1PZFBfRW1DfVgzTWtyUSRPKHFpU2UpKH1ZbUZgMTlkQlUmTm5VWjxMfTVIe3xfOXApWlhNMkhKMSE8OGFiYFRQPnNVTEwwI2JvIiNvRlBIJHcoMSRIMj5bXk9gSU5sSDhp''@;'; put 'put ''ZiU2JUAuM2JlTj1UPFdnfCt3TmZjOXxXNENjfUBQbilhaTchZXB1X2tJM3RURWx4KlpKSU8kXkkmXS5idkBCdkloMXlSTWIyO0hCM15hQ3NFUXRkXkk1SFFzS09DYVlSeFo+PUQ3YiZQPXdtW25OYFBjfXkwdUBqKVBucXZVeCVROGBgVy9tVV1vOWw1PnZSbHc1aylpMHdKSWhzZXwmbGBYNEZ2''@;'; put 'put ''Yno2NyhgKkRbQUZqdURuTkNVZEFTaUQqS3BUTT56WCEveiIvcXlCaz4hTVsjey9IIXJwKUIqQWxqSyxvOG9yL0phTy56dEx1PzA0e2IkTiQ+Smg0ZEYvJCp2Z1pQMzt8WFY8eXZYPE91V2AwXkYjdm42UzRpNGYwUV1JZGQye1FSMXZxJVE8WGkwTkNaRFBtVzUvKUcscDJhe0U9N1V0dT4jOTAp''@;'; put 'put ''YDUiVXsxMVtLaU84PEw3cG44Umw/Z3pockBYbnlvdVtWP1dyeUdVeXRZOCNLaHwlLCh0MVsyZD1+NDErYFk7THQzSD9wbCtPXXNiYiJxYTlDPl92d3NwVGEuaXxgMmpAblhrektjLmt9QHN3WVJkUTxHSl92fT9RJG9VZlFYSXpVWXpSYiNkWlM/fjpKXWElS20pbHsseENNc34hQWJbVEFONk85''@;'; put 'put ''SjI6WHhORUF5Iz1fNyRtX1F7QXthJEoiPkB8W0s4SV19LnpyNVckTV5udm1yZit5a05VQlpvYkhLODciNWwkMXEwKUx1aSM6QV0lKWFjYlguRzhpS0gkOFlfbWs1aVheflsvVXw5bipEbUpHJm5fcGc6UixHfEpQcUBYOndUYXdEcSJEZTp4TnRTRzolfWNZKGJgKW5IKiJfOzpkP0VmZW5AaV17''@;'; put 'put ''ejFoR05weG9EVVpxREUjVEhpJDQ3XkMpJEgmM0Q7RVNEYWZYR3tyNVBTRnM0eVtmVi8xWmlyLF9qQitjPU5CcSslOzZBLnghOUMkamRCRztMOzBwa25dOmZxJmA8NCQscnY7XWF6OUlESjhpL1p9ZHppWG5uKWI3Vk4zWEY0cHlxPDEzMnNTPVZ9RSlgQyh1SHVvIT0lblI7e35pa094P1trNTlC''@;'; put 'put ''MCQxRjQwfDZIcF0mMTowb0tGSiIufi4ibC5MJHJaRjUlUmZjQmZuW0JiJXJeQio9KklmSXNfU11meUNKdmZTXiZUWHU3PzZAfnVaO0MmflpmeEQ8alpFOSh9JiEsWmE1SFYwJHJZfUNiOWhkRVRadXNkeUl6OVROKS9tKDRtY3EvO0hrO308cUN2byZacE5LeHMpcGo+XTptfmdCbj1RMVhVUW8j''@;'; put 'put ''bEAjZ2o2Zls+JTM0Q3UxP3xUZ3d6eGw2Znc3SzNxXmdXO0BPcFVwQz9NU3x3QDdIU188d3tQKTo+Skltd29LKnx4IjB1Xkx+VXpQITRHPldxIW4xXTkkQTx4PkBTRVtCYz04XlI/ZTJMVktLS0Bsd1E6ez9Cb0ZxLk4xIyhYRVApUWEjX1hrIUtYaTIiUD08MyVCKFBle2VyclM8fjpUYmQzLDpm''@;'; put 'put ''Z3t8ejp5dFB3RyhRLk9FVE8jOEVHND45a1JHPV9fKUp9X0lqZTZVI0c9YGt5W2E7fSssLmx1VihqQW9FXUZZSlBKU346T347Si95PylaPU9ybHVQVj5qVmpYeWRSN25WXjx+Nl1TZVs6b31ob1ZQdTFpRi5RXTBndzkxSmxYI209MkpxI0U7K3BqNkB2VSQ0REgrJGBBW09QSEglbUVoKTU/SFRa''@;'; put 'put ''W2pJJG89fjcqZHhXJWIrRlNkQko4ZyhhVk4jVX1qXjxHZF01OD1va05lVlJWdzpfTlNJUm01S307OFZCUFNPP3xmQjthTClhaFRoJWkpO3A6NF4oXnI2eHtKPVExOUpkUStgRXRPcERqayh5QiRGZl9UNyVAMk9pZFVCOT5mZFRLK0NIaX03c1hTcWR7X2huVVFteVY3dlNydz0wL1Qpd2k4ekM5''@;'; put 'put ''IjpIO3w2Njo2fFBtdWFMaCNVOiRgUHduPnJ0dWdsZGBQdi5yWm1jUCVHX3pUYyt4cW5NYDY4QzJVdmhKS1s4eEpgU1EvWEBUemYrUTA8bGRhb1QwYFp0ZHNdNmtPVjRmY3hpTSRFVyJESk0pc2duPnlbKT8/aSlVbmVsY3lZUkU9VGE9clpCMzptYVZ7TzRkJl9NTCQhL1lZcm5dZjcuVzduNVpJ''@;'; put 'put ''dFVxNyNZX0o1ZWhbRkwyZk5SVSRlejZXbVM+PnYiNzVCez00TFo0UnlIV1hvKy98JGp2Yzl2KCVVfFhGa0lDay9SbGB0UWRyYCFxRFRUdl5SNmxTWU96SGBIdyIsRV8zJmJXTzYsbl5eI0VJN1RkNkt3N3d5PWtZXi4lR297JWo1JGVyOFZobiokW1cpbSRyWUd9WSltS21adFpJSVd4R3xxMGZy''@;'; put 'put ''ZHVbSUVbPmhrRkF7XjsrZHBBeiUqfSNzeVcyKDwmQTchfWEiJjcmY2ksRTttKS8oXytDRjlOfik1KzB0Jltzd2FadXRYcUZrfjo2bTRUOmNWRWZrcWtTUTNpOz9eNTdnMSlOaTBreWtMbkJ3ITxsW2tuW2YoWHZ9SylXaFVJSV5Qd195SntHQyYmY1dHfGFbJSE8QndUL3RVeEYoNnd0MzdsVUJh''@;'; put 'put ''SzArWTtSSCFaTiosfWV3KVNLP0l4LFFvMTI4dSVVYTpwZWkxPEQxTzJEVVh5Q2tYR0RgMXhfdHVeJUJhcCZqN0tzSmFZP3YxdyNfMWtPVE5gWG5PYFRVK3V8IjJWZylyYXxeYTVSWFhadkl9fk1GLGQ9L1FPSUtZcHVKQlJkWXQiTllmbkpESVcwK2UkSisyejA6XSF+TDpRcjM9Xl43YUo/SXpi''@;'; put 'put ''QkZjW0N9SklLMnc9L0dgTWBKUTA9ekZBdHJ7T3FWbHthJG9RIyZofGV0MExpQUc1Vi8+Q3xIUyZHVV5LdzdRP0JdQHx2WnQrMiMhOTxEIlZ5UzdjdWNhdWwlV1AhcH5xYG04eGteOD0mWSo1MWp0V2d1bS8+dXRKPlBkaDVDZDpUUTpYdXBjeig8IX4qPHRzP3k9fVptXWspNFlqejtfQj1jQH4o''@;'; put 'put ''enBheUB2T141Tn02SSpOOm40Y0NlYiokJD06KUdrXTI6a05UYkM9TGc2VW09V2x7UkBqLEQ8bXdbdk1IIjhaR0wuV1sodzdVQlJbK1FbVmMsfkM+bVttdGhBa2AvRzlFWntBKEBXYV8xNDtob0xpM1l1TktDbCpUI0kqUW4qNFhSbUQ8W25dRTdCfV9SaWU6dVIzPldKRXUmSXkuM1gxQ0x0TDxz''@;'; put 'put ''NTgjeyM6dU0oeUFGIzNxdGd0ZDE2dXQ6ZiIicW1JZy4zcl9MZnpAdW11dCsvSkAlMTh+TUJFcEYzKUspOTZ3RzZZWk4/cmZRey84blBpMkojflI/KHddO2A9NSE2XyQlTGdjTF5DWHU1Q0h1eGMhdkQzOmh7TWxWW3MqdV1+cXJ3fV1ISH5KJGsvdVdFYS4yTWxhOj92X354YkBzS3dCO306K0hr''@;'; put 'put ''aDkzcixvJWx2bUVZS1kjUns1VmxpMmsqYj4vNn00Vnx0aX19WTR4aUJoajBFOn42YVBzZlk0T05PTCZ1dTxyZVlebE0oYWdxXkhPZUNlXUklOnlPcnhZcERnZXx5NVd3YERMYyR+USpRbmFkVjgiekdqJDVzMGkzPy9xZjw9SGFvanclby4kV05Se1NfJS8/fW0vKnYqMCQ3ODFTeGVoNE8xXytC''@;'; put 'put ''fj9zJS8iRkU/ZHBBPDVCc3JrfExdU2xma1kmRTUzfiVYYTUvOkFoUG8sVGNlLDAjWzkkV3k8ZTV+YDFMLjAxWE0me3h8YTBjKkxYeH5GJTMyOmldWGMqLE9lIXgwZXtUcTVQM1lxUSZlKlIiL0h3P3QpfCM5Wi5+bmUpbEpKYzZLPEs7alR5VWYpTyNJUClUdiN8SE5rZ1NmU2A1QlFuS1FBbkpj''@;'; put 'put ''SllmbiRbaVlPRVBfTF9fUHs+cllNcT1KeEk9PFh3Oj82STw+TmNQMnFdWX1dfnJXKmhsSHxZeGJfbWtMajQ7Sl9kWUJUbiI0On1tTCRIWzlxIj5dLDUqWUM/cHwvWkVWZSxSSFNwIndAUHw4QEI4X3tmbnpXTTROREsrLmBwOHRdazl1NFI5ek5mWTJqLH49SkspMDsiJDZQaX4zTEhUbFlYaiY6''@;'; put 'put ''dFkpSlFbQjxuJHNlJWkiVmtveHZSd2kqPGFbPU1oRHJkPldqQCxdSEZdd01zU3Yrdlk1YjRyP2R8SC5jO2xTMSRqXzdXZF0kRTB4bWNxT2hKbVosQ1YxX3g/RVo1cWBBeDtIbjNRMnVNVF0wfl82djApQChLUmJ6Nj1bNGxCcT1eNVd6QCNgV2I9cTZNUVlGUHVfYihBcztwRiQ/djh+YWdCQ2pk''@;'; put 'put ''ODhOcT8lczwlWGB4KjosYn0lZDtGKz1RVHtLcUp2LnxwPUFUbG4vPSE0bXRfYTZmbmxyTF1LaGlyX1tTUGZbKlVFSHsvbUI0MUdWSl9oZ2o6ZkNQL1UlOlBYbT1iZ2xLRz95T1MiIm5LQ09KVFI0IzBjPS4vRiJSUj8pIVF7TD5NSGlgI3ZnVFM3S3dRa2A0ODhnKTpaS2Yqe3BpZiNeRVtDKyV0''@;'; put 'put ''LFh2Rj5tdnA0OF1mUko/ZyZWSS5LYG43Qmx4Uj47VD5QWHEsZEdHYmZzP3FdPnZTKjhUIUh6Yl95JnloaWtfNXwoLClkZ1JgQjB9QFZTbnUuVFBtUCUsQmczN3luPVMuI2hHUjN7NlowQEBUVztUPEk+Zi5VT3Jxb34xKmxpUWJSe3dTdz1XVVRBZFU4OTA/eTwpbClOZEB7SkhsPWRQMHY+KHpa''@;'; put 'put ''eHosbHckYEJIKT9qKltVRUdFLkVoU0MsM2IzU0lVKDE+fTQlY11FR1osbVA7fnRjMnpBZXRAYiR4Q05Ke1FpaHAlXUFCWkd0JHlWJig2JCpUfWk+YEtNbVEseCxvZ1EhdS94Z2dwYHhEfnV3Xml1cj00QiRfZilNMSJnd0RwV2pBenZoNzFwaipNaTBJQldAMG5xZEVvLjFua11xWyNKXiRCIWRL''@;'; put 'put ''byptaHRDSCg/b3wscWIoYTFLTjhNV0MySSlFSDc+Jm13K2d0LzBAaldbY0RdPyYlYlQlRVJlOktHKDVhR1NwWmx9VmU2a2Aiaj4hY28iblp0RyVuMVRwMisxKW1mWl4vdEEwTU1WdVtzej51VnxTOz5JMWJoVThJL3hSXz06YyY4VC5fQXtEPmhvbiFfXkl3QyIqIzRpVzBXKEBUYVosL34zKytS''@;'; put 'put ''NEBOfWspUktHQjt0X1UvTGcqVlhnT3wkb3dbMl1vL2cpMTJoT2FDSDI5W2c+dDF0V0YqY2NfMnYycmNJKlpEV1hiZXddODxRWkorfEY1cU57LnFyZ1RlYXRVQm9RKiZsTjkzSzdjeXFselA1QWgxJWVoT0R5ZSREQExKezMyWV8/TSJ8VUZQNlliTWZsNnN2X3dFdDNWfStwTXt5dCp6Kj92Wzkh''@;'; put 'put ''PCZCL3FNZENUeW1QVFh0c3UoaW5NT103KjoqLkpuM1ZaM3hgQitDc3N8KT1iQSZlbCFbMHNYdlBEMkgjdCQ+OjwoYyE1NDx4ZiZBZ0hUR3dnYX5dRTNqYlYqb0RFLnNPLy5qeDB8dUclNXJYbjJlJVhnRGBqMmBXNzBWcWJTW3c0IXw1VzNDL3xhTik7SWRDQmxeJXZkK3Q3fFY6TzBZenNtZWR8''@;'; put 'put ''Wl02Z0ZlJi9rK0p4YH1ed0pPbWpXW21vKFA3Ui8mRERnbkBLK1hvU3BffTReRV1bXnkiUix7azdGYWxKWkl5Z15iPDtZUl0+dWMlUS5nQT9HKHBXYDI6czZ8XzwoT0pfZFMyXWpPbSl4RURINWV2NGJfcWlvOnJCVmBeLjR0dC9JUEghWF1kd1g2KG1EUl4mLztWa249K05OeU1pVzRzK2cxZEo4''@;'; put 'put ''eT1ie3hBMHU/ZyxiPzQlIWU1cH4pRkQmUS5ZMlIoZlN3fSMqWjNrOUp3OFowQk9rfUFAU0dRZSVyKT1aPlt6Rzd6Ok4zM2BpYlhTWUp0d0ouOys2WklULzxHOj1IXjlHdX1XVXc5W3pIS0FVMnl2Mn48UHJlP1shTDA0dzQuel4yeiVqW1kubm84M3Q9YX5pbjlgSTUoVD9bP1Q0Qk5UWHptdU5t''@;'; put 'put ''aTs6azlubVhgQUdPcmpqK0tKZSFiTmhUdDg+dVJqe0VXIU4wXyxSQlY3fTI9QXFjKlJXMH5sb11TQyZmNDE/TkJnRzhIQitNWnAxUmJBb10kakw7NURJa2Q7QkhKKFRjYyw7L0tsJWxDN35NOyQ6T3p4eUhyZFhgWnc7SEBUZTROLihWWmVtNDZ3QU91JHNuVDl0bSxQKUBXZ1tvVCVAeTFBd3F7''@;'; put 'put ''Q1hRMioyfVltWW5HfC5hIz1LITQqYDY3fG9SOGZrTTtLIkl2X05KZGA5NFFJLGdMPDNdRmJUKH5yWjA1KVh5IiZmSG1fK0s5dDVwUjhAMisrKG46fXl3aWBofSkvbSJwej5OTDBKfH0kY2NyN0lzI3t7UnczWDxHbGVRWkZld0h2VVAqaCM7UixWP2BQdFVpZ3t6LjcyPXhfM3tORCRWYyxRTmgu''@;'; put 'put ''YWF1T2heS2QsNy8vYkBic1tLWD5OJTpEW1VRUUQvUDBRVTt0Yi9yP3khZzh3N0R0SGModWl9QnticihoWSZAe0tAKGQ9W34ycC4qQ3BwdDhKW01wJn02RHJbcExiZGh6JTA1ViJffCYpUiFtYH1rMGAkVi9wMmBxOEZTcm9CSE5XZHx3IyowSV4xQm8iUEs/Vy80WloyOzFDeClvZGA3UWhQKWpn''@;'; put 'put ''Tk83dGhGclR4M1J9K2hnPHx0clklXj51Tis2RUBvSF4qQjBMeE5WX0xVOjVTVDxgQjA/W0hJZl06PCpmT3JbemNCXjtXNVFqZWRKak5ZWEJgZ11eQGtwWjllTHxaQ2tfKF4jOW5BSVBvVDVXcDA0RTB0dk50cTcsYzBkJDljNDRKRGRPXmsuYGEzOl1EeXB8Kjx5RmE/SnlobjZTJktOTHhbIlch''@;'; put 'put ''aGRmUl9YQWJ1Mi43bXFNe2lIXSlNSDI0K2hvWDEoOzc2LyZpRzJMVzB6Q1VQOjNfOjt0TlQiZ0R1VUNCeUFIaj5TJEN3L0dDQD06RDUvZ2tVTSJ6dzRtWWpFblpGQiFuLkUxUkl2Tn5aOG0xUnFJYkxQbSZWN3xNZTNCZEI5MW9KIkVIcEhhVX5rK2sieFd7Ils8Om1CXWkvbFBVQXlqS2p5XiFw''@;'; put 'put ''RCw+bDdgJWMuZFUhfX4mKjcwUGBvYzVqdnpCImJyM3J0MjBLfipqVGVdKSpdJnl+LF9tbF0sUzkxdkBFeW9vS2xUOCpvSmttRTZFdEA4U3BIXSRAVld8VDZFMChXfFpVPSJNPHtNaWxKWmRKUEV0YihLSX1nS1pFKHlbQkY9X31ie34rXmkheGlIYyJ0bzZPSl1+X2JEOFVGc1EyRnQxMFZVRXE4''@;'; put 'put ''ViV4WDBgWG0oIXcqNEReSjRHJDNbWFZvTnlmTEZDSHNAUXtCUWo3Y2k0b2NJOX5EbCF1TDE3V086WCJ1bkp5VXlLeyVleHtxbkd4b15uMWA4YF44cVZpSFlXPDsuNjxtWj1maShzVlhCaVJyIkMoNER8SS9WeSI9WjdqKkxbZCRJM1sib2JwJWclZk5QNz4mdV1lWypgJHIwUTo6MX1NJiRdWVRj''@;'; put 'put ''JiRidmFJaFNWNkY+V2JUd0M8QXdZVHQ+bCoyXi9tZSZaWmpPbmoySyQuZH04eUI5KyxDIStsWnohdFpqKS9oUy5EUXAhLz0vTURodD9sYHE1MXhSVVhOZCxCKjs4LndTKSYhW2k0LlM8b1FtPlsidDJ8UC9XXW9NaVYmRCM2ciZyYVRMfCJwe116aThZSygjcix4fUVVNXtpXSZvcF9EIW0rIT1Q''@;'; put 'put ''biQlajhlZixiLygsNyNGaCx7dWRkVFYhPDhFbVt9YzpVNUIkVWF0JDtVV21IYlJSUjVfb1d3RmlHYGM1Uk8iM35rQkp+TzlqUFQ3TEJ6XWouPzcqMSY0b35edkNxMTMqIUo6Uig0JnN3TEQmND42bVNEfVg5XzlITjBaOTFUcCo5UW8oTUBeNDN0M2pqXSEhIWQ4ZG0rOV9UcCEwMyhrVClOSGpn''@;'; put 'put ''TXwpOXteczErT2hrSWZSKzdWSEhIKDJuNC9oT3lAX35pK1grN0Y8djlbcH4mTE1UUWNSW3QjKklORHlbaEkma1pwVWB9Kz9uYX45K0BefFJsTnUxYUUrKyYjSW1lbFIxaFRJcFc8bGRyJEdLUSQqfGJlUih3fnY0YyEpI0J8UnAmXU81dT5fZFBzfSVsSltWNG1nMDRfOF9jZUxoK05BMixWUFZx''@;'; put 'put ''WUhdJntmdmgrdHU9WmI3S3VzPSxkQ0EsWFZrWGtPLEFaOkowfnlpTltXO1AjJGEzSjZ1QE4jWnFQUUBUKjRUOHhqVzNGU0RmMGhGMm8vITR+dWAubzhOIzkyTjV2ImlfSWBlLmYjMjkxU3NXfTtXXj5aWD8mWTlQQ0M/QTYkd2xveSRNS0MoK0I7VzNPT3lSM09SdVE/QH17Zj1aWmdZc1tSbWIv''@;'; put 'put ''a2JZQUdedGlsYFZ3ZXlYc093JDFEQGswYWVvXkxIYVdvSyVnd0VPWW5iaHxSYmU3KW1xYGRqKTlsfjVwTlpqdnRVMkxrVl90WHRDVHIzSUtNREFDU0t3eyQ8W2UvWGtCeyZKWXVVIzwqaWVlYEdvbGtqVXF8TGJsKl9YNkJ0NSZvYlY/OjhfU0U1JThQbiVITU04PGIsZSFhSFdGTW1MPjY7VmlC''@;'; put 'put ''cX5rZ0VXYzQuREJzTFRnQiI0SERBSjJVK2AjRShYaCtrcV12Rj9taHM8VEJ3fHkjZ1ZnfjU3Rj4vcGJLJV4pXVNmT0UreS5YbTxRS1Q8I2Y1MDkxeU1rW2Eqa34vbH0wLnZPUl16YS8kWkQ8VFt7eltBMkNIViQ4amRvXXJYL3w4QTA7U0dXMmNAaShsWFV4cnpvVUBEcyh5NE1jZ3VyaUJIR1t5''@;'; put 'put ''JEV0aE9iTnNHREduekJkISlhc0dFLnFefF9CX2RwJlQ6bmF0YHJxMT5ra2coMjk6X2BLKS9tSzYmPFMmcz9zS35rWyQsOzhhY3VZbHElWjopZmRlWG4hZm99TDM3Rml5KFZtZ3pdWygkflMrKzx1NmMxd14wUStzRGFpYFtVa3FGOCE1SVdQZHQ4JDhXfChwWHNbdzsqdUM/Tj4+QUlUK0RnRTUx''@;'; put 'put ''N35Lblp3dl9kZkpgc0NMeilSYntzaUNbNV5AL3V1VTM7QDZKTT02ZX13eStmYVJYZUB7KCtnPD4vP31bMjMvfE0pYV09a0EpZ0N3Ozl0eDlOdz1XMEpGaWNbRlpNWDlWRFtkN2VtQG5nfkcjSzRxfXQ4YlM2L3gwPj5xJDtHcE1fKC5qVixFIWlgVXRJSktiRTc5MC47V1ArQ31fRlAha3Y6emhz''@;'; put 'put ''cn45YHg3NTI1YH44ajJdeSZKYTk+ITIvRV1lRy5kKiI4YD0mUkpLLG01Qk1sMjkwfV1BZmJRcllUSVl7ZFV7eVRiWEtGeitkNmtKMGVlfHw4KkgueCFYKiM+P2NIPzR6Yk0sPmsvOTJRZXt1fi94VEt1SnpeP1A2LzloOzpzRj5fV19yaTF2WU9+UEszOVpHe0ZsPTpERltxK2JRK3BocyV0ZXdW''@;'; put 'put ''TTlEbTFaKTdjIjBCQjIpdV5AZFAvOG5kWnZbfHNoWFEsZWwuNiE0XWNJS3AyeCo1ZCM8LyE0P3xOYkw1K3FKXltwVGJ8OEdqfTVZOjZbTkw6fkFYXUFPbUhkKnQ/cW9SVzNGaGtsbThqdGJuM1lCUndYKlklInR9XXc2RS8kNTQyMG9hRihreCxlRWppYXg3MSw1Yy52dzBZczRULnRvWmx4NVte''@;'; put 'put ''JkB7WDpdQmVWKHohUS5QaGhaWVJLeGxfak9fRUc5NSUsP1Y6SlpEUlF+RDJXQjV4TytZdD5pTCVtJnk1aHEhaWtZeHVDeE0zVCtxUn11U29wWHpVMDR1RDp6NntiNkArU1czJE8xfShKYGguamlWRmxeSVNJPFtjUHx8d2olRG1dN0ouUl83WEsjbnFEcDwqNnBWP0MxaH4+SDNiV1MwMW1iYC40''@;'; put 'put ''UEhEJF1oekhyLCFzckh1KEVZWytyOChEPCF7OUxETkZCYSVUKCpjcG18T0pKSE0+dyoxWXZlQTlNc0s/VmZhfiI4Wi95b0s3T2x3VCxYZiZ1dG1QeD8yL0hecmcmdUVEIj13RGFQQiVSbGF8bHl2eHFTSiNuenNxRUdQSDk3OmByJn45RGoxNjlWbTtoZWksaCN7VytCeF0jKD9dcXVVLyVTVF4m''@;'; put 'put ''SkgsRVosW2hJJEJwXyZyfWEjd1AzPTRERH0oXls6YkN7KWNlU3hpSGF8TD48XnZ+ZlcjQ2puPi9iU3pCN3Vob08+fUp6aix8dyJ8P3kve2ZYS154KjNvOjVSXXV1N3oiRzBZfV9nfjdHYzt0dF0lX0Vmb30qRkx9fWE7X25LV0shUWB2TyhpfCNwV0ZOZFpCQVY1UTJwcjNNVFF8Yi8yJT15b34m''@;'; put 'put ''WEFoY2d4cjpCQHkzdm9WMnM5aFFFVENdcDFHMH5mW2hLK2M5PklLN09bMmBLajszdCw4a0d9X2RGXUVVUS9xbmx5MihIaSxuM1hBfnspOndWdmU+N3RgSC52L3RqZmVoeVo4VXlhaHVHLnxCQ0JCM3pPSz14VyVeJH5RUCZ+YyNWcDslTmp8KmlAXUF6dDhidztFW0kjN2tzYDBxMTwrdUssaUdI''@;'; put 'put ''N2MqbVBmKWcyTkA4WlU5ZVg8MGFLS31IeXJVbDkqQy5GWk5FQn0zKzpCWl9rUlRgYW14Q1kwKEssX31vK3V3aj06IyppYTR5WXQyX1MyVUdKYS5pIkpFPk9rTFZxUF8lZEVGVUghMyQvTUZBVkRZYUA9XmJYTzlbfnNkeUpFYUFVfTc/I1U4W0VtKTt8c3F3Kzo5Ki9UWXZ8Smh1c3VhM1p6alBM''@;'; put 'put ''MzZgVXh3MlkqKVJKYWUocFdKeEFFbnVjR2pvOSIxajZUSUg5OEtBOXw2Ym1zaF5LRE14OXB6OFc3dC9ac2JTRStqPWBJel5NeVd+ZHhneDgoa1VFa1NtKShZLk91PWVwVG1EN153LkxFcXtyfHg1Oi9fP1cjcnV8LklebndMfEtmMEwySCxxR3RWbnxNbUhJJkRRI0VXLzddLGBZLyx+fE5DQHhq''@;'; put 'put ''XmJ+UlovQ2QvP0MyWD4ob2Y3aGVrRzY5Y105VVEicCJWPClsVC91fEteK1khciwxdGZFelUlPlIscFZXTnQjWTcvOl9sUSZfQGtOc3tUIip1e2FgODdTZmIkeFpZXmhiLzBbNVZtQHU2RSVtc0QjaXlHJVIqMTdaWS9KaTg7KGBDb3BAeCtfTkV+dDB1cXlBWCpTIlslPjRHRXxBfWEpcEVAUFdG''@;'; put 'put ''TlJgL249QVE1Yi9iP25iTDMiPUJRREpaZWdldytPRiFoSzRyLFFXOFBGQypqelVbYiosWzZbQDclfTxWPnE/IzM2a1NoKU5oMmxWa3ZCRGFCPFZYSk1uOHAkPmBZImNxcEJZQktXW2oxak9eKmd5NEBgQFEiTDsoVWIsb2ZkOFc+KG1HTXQxdFZaYStDMig6ZkJ8UyYkYSpKWWZ2b1FpPi9JfEp5''@;'; put 'put ''OGFxczRiVDpsQSt1KHNealpFM1Ura0xJdU5EQikzITlyPjJdN21GNU9ySDU3dkZXIWt0d14vam48KFtheTB0M3o9VW1oQytIPixhYUxgXyI5MHxdTkokaHwxQWVOPEZNZXNfKjwyJUJXQ0ozc0h6JnF4b3hvQmtiQ185KSx1dXwxOlNfRjp1Oy5MTDdhTWdZUnsyOmEyfU5FOCtsfH0mWnt6WGhO''@;'; put 'put ''aX5tX2V3Mj9OZnliZ2hUSnModCk7OyQ7djVxdHI4fH0lJlhtPWRuWGMvIk1iQDgodnpYQnFHdGBye1cjUDxWLH5VNGs7Q19WLEIxYkhoaUZPTXttUWJaWTZ4UmN3YnJVYFQzT0p7SiFFPGtIRTtUMklMTHh8IX5KVEUsZ0tIUjU7MT18cW9jYjI2KUJiMk5Xc2xndzt3WipdPD02OnkqOGRbbXkw''@;'; put 'put ''azxKL2VpRSRFaDp2NWFNaGNMUikyWGIiZ2tkL1F0MjgkIW0lP0A0cmlzMVR9dS9HXz05SyR2PUNfdWIlRkwlUmk0UzMjMjQuOzVsU0IkOEQkbSMsXUx8MXJ6Q042bTJzX3xHRnpJc11jMHtNJk07OiIqbE5GSj9nT0NKPnpCczJgOjZTWCRMVkpNMStQKmFja2xPSnBUJT9rbVNfLlUyMkQrKUIz''@;'; put 'put ''L3FwcTs8Mn18SURaMCZfVF5HQ2xkd2VQPjB7dlJNJExmU1BQKHFYNkY2Jng4L1Nre3heKjwuYXRLPFZzOl5uPHxzP0wzczE3WEw2U14xYX4hZ2ZFTUJDe2h4JVNRTU9tX2YlQGF8cSZhNH1sIk8zcmppQUUqPlVUcSFkUFZgfX1lcDdRSlhiYWBUXU14ZFN8MlNefj57TCM/ZmkpbSokNCF5ZiM9''@;'; put 'put ''d1V0TDJlckpZJHAvMGRRTXZTL3xOYDpCREopeTUxc1hRSUp9P1h4I185TzR7VmdzQTg2QkBoSkxFP1JINEU7KH5mRkhhKlVYSCpkQmB7Zmh5MU0qZ3p0dF8lUG17d0VzRi4mMGR9S1gmXyRJSF0pb1VAa09ZNC9BQnhPaHl7eFdecipCYWlNaHhoTVBrVFNhW1FVXUJGZ0E0V3MoSXFzYCNyITht''@;'; put 'put ''X1cvP0BMVy8rXWxkKz4sNE9FMzx7XzNYdWF1dVVmTko5VzxUdVZTNH5AX0woMTVsSisyIWFIYUIvJDcjbyl9SGV+aS8/bzA+fVc+ci43RCMhaVJKZFJvNCFaKGNTUFNYSTphOlojRUt4K2NafEB2MCVObjMwc1UwUyYieWFfdWYiImZQOjpxZ3JoeypnKkx6UVY5RS43aW40UVZLIikkMUtMPywh''@;'; put 'put ''Q1NdMTIpeSFmUDwhRWo1d1U4eHI3PHhxI1tAR0xyfmRXPEpDZFhEeHh3MDl2XVpgSGE4PzRiWi5ge01fIztue2l8KE1uMCo5Qk9ZNlJLKnB3YGNOR09yP05tdG9lO3ZbMyp2eytxJjhJQyVFOj1SZUdBc1tFNWdQJDJjYTFyMV87M2pEXzxKS1FRT19qW2IvQiJxNENlfSx7c1t5dzF7S3IvIkNr''@;'; put 'put ''UUw5I1oxS1lqK34wJjx3QkJ0ZnU3O04qUlpYKSkkZT5TMXtkZXdIYDpPVFl8TExqaV1aeC80LF12WFU4JD5vZCs0Kit6RiU0NSV2S0h7Nn4wRyNxbm5JLm9qVU1tIX43O0hDdTMwLyZrWllbITFga3wjZkg1cURIbDtFLm8pN3ROcEk1a09kSl86XnkhNFVvQWk+cldrWm89OD93W2x5cmVAIlsv''@;'; put 'put ''RiMrPlc0S0Q2e3VaUCZtYkRKYyphWzB6SWpMOy4ic15rPz0yRFF4eGVzfXx0fTRLZW5pIzApVHkyVXEka1RpRGFqYENVKyVaLDg1YktSUndCIV4ralo5dUQsdzhfP3RhfnBESGM+RFIwQE4uVm9IdTQ2SHN6Zl5zLlhOOkQxLy56a3poU3UzKVo/cURqVlFYdDlSW1h6PUc1cFVWM1UrM3kqLnVq''@;'; put 'put ''YTUkeisiOCFUWiImMz1wOE5bcUpNZmVJVkM0OkdaKThjKHImQiFbckR4SHsycHtTRkYxV1k3cm1bPDR0WXg3dGBVKXkoV1FdLF4yK3VKN01iN0FsNXgpUWtPPk1RZndeMmhgfG14bSEpY2sxd1U1LGxWbXVRTmJfVUNMYXw/PktYOVh3W2lpW0BWNWRGPEZ8fTRPTGd3WVBbNnk1U3kmO1dEVGcx''@;'; put 'put ''LGd+byhHLl4xOENefVJncSUoeSY5OFQ3YUY5K0NTPGw4X3R7NEdASTNCa1FTUl5AP2J4S0ohKWo6Xl1DViJpfUNRYTp1OWM0Kl85JHFaZkZ1ZjAsKyVqVUNRNjZxVUo0W011UWZeNiNwX3AoXXl3TjtDRDl2Q0FzIm1kclI4ez9DYzFPbnRCfCpmI2AoLHR5VEQiYCJxMSVPUHM/QHQwR0MlWkFe''@;'; put 'put ''L2RXWiZmdmBTcEoqU3wjZVBvNEl2UHE6OUkmJExzSHJtQ3tXfFhqb3Q/L1dyKSlheSZ2RiRAYU05eD56RDohbVBQInJ3eHdleGE3Wj4+RX1UNzc/VzNqYlhZb0MmOWd1aTomP1AkZyM/Uk4kU1JpJmNnPjFEYjZARjwuZDFQXUN+cmtSPzAid10iTEpAemtrZ2dbKGdPNXByXnI6eWh7TF0rMDQq''@;'; put 'put ''TC98JVUjRG1GJGokL0h4RThLdHM2clBlUT16LlJ7ZGhQNip8JEolfkRhPltmIklJRUdbWlUweExdPnttMC87RzRIdWkyeXFicjEhIy9YRzNBaDthb2B2QU9QYk9ZY31tSF5EMVoueUlRRllIMUBEZ2s5UWNGImdwPnNIWHM6dWw3fU5jc0xpUXNhOi9oTk9ScktgMjAiTD5naVpGWyJyTUNoTH1K''@;'; put 'put ''a3pgaV0pKThPQyJ0VXFCY1p4VFlpXiMkT01xdGdBRSEuREtaRDdxbUFvZnQmMDQie101YU8ybmU6YnkwK2tSaC83eGQoekk7R0MmPGMsZWNWeiM3VnMkQXVzSmZOVXJGfGwicChSSG54e3FrY18zVj83QFNrXzM2OXk5W0pWXzpJejFZXWNXYSQ3LiNrTj8vaVFuPWRYcj5bbX1MYlM+NUlFU1pN''@;'; put 'put ''ZjF1RDZ+eHB+aS8wR2xyPXhFP1M0RXt0KEp5XXRpN3UuWyx0Zi8uPHdsRDBqVDM/SSN8LjokamNIQEJJJnklTXs4NjJieCZhOXF3JCxzNzVbXV8pS2hjeUwkcWlNZz0jTU0jT1MlNn58e1ImL19iND5yR3AkYkUhKGFyRCk7UiljfSQmcGpFRGBOcH1Ge2gzTWp+Q1R9RyVlRzQ5Rz1QVj4+QiI/''@;'; put 'put ''KFF8Sy5NcHdbViE7UUxWPEM7M25jYVlrentyLCJ1XT5nRm1QdH4uL3diNF90ckddRDdaNDRSVDEoVi9VNX19bXFsRWsuVTdqeiRiPmNFKnpTXlhyVnpeMkgja2YmQyw4M3RASl9ANHZ6JW5uaCFkeWI5JHMuPlpYdm1qLmkoVmlHWnMlMk8rSVd3MUQhVCtrX0p9d1FLREt2UjMxYFRAbk1vdndi''@;'; put 'put ''M3YoOENMMGNBPk9RVWJFVVtbajdRY0oyVDdfWlJWMXpQQEw+bDJaXVg+e1Y7JTB0d2ZgaHJeOiRgWTc9dSVlLnNbSiNhT3syR2RhRFpFTWtDWU0xMk8wYnhVWSo3d2kmRkEjbmYpZHBwdVpYP1BsSjpRTyY3PGshX2U5aV0sOlclXURFTmZSSnF0VkVSbEchT2UqK0wxJjkrXXB7d0Q2YytwcTVO''@;'; put 'put ''X0E0YiVyZTtPKXgweVh0VUZSNjNgeWt2WFJ3aVVockxTdUQsWWFoPWBRNzs2T3xYZUN4XyxpN2dwMnxPQiMlPko8PXwrb2RzPkwkfSlQWV0oLyI+PVlxIltSISpEKVZAajdOVDl1fU1IIiZlSDpmNGphJTJLek1CfT5rQzhEXnBXaUNgakNPbENTR1kzdCFFO15Bd1BGZlZ0eTc2THt+Oi56Lkwy''@;'; put 'put ''KFkyV1ZFNDBfdXpLViFxO0ZoLGd4O3IzMWkpZUdXb3dmdXNZfUkiUWpqXiRNLmIhQD9DbX12fD5ZOTFeTE8lcXFtOWk3WykyO0goTGxFLn1wUEomeDpfL3tBIiR5Yi9tdyV+eXtzMlI8VTxPOSozZVtrOGtrKzJXMT4xZ2BLW1lSczM7YSsvW2ZScDFONjZAbCMrR04+fWxAYndmTXBmMEFoNjV3''@;'; put 'put ''QHJMWHp7SXAzV11XM0dKQU0yWVh2Jlgrc3ljX1Vxc0NkRElYaERpZTFYbGR0Ik9hSW4iKGYmdVE8IWQ+aSRQYVhwYCMhTnQxaiQ/ZHo+TSZhdm5rT2YjVHowWWc+YW9DWG4iVnkmJmU8IU9JV10oIXZnZTJ9JG1LcHZAZGNnM1NrIzBXKURxZFFDMUl2US5Kb1dRUnI3cFBvWXFDWFZQK2BrJl01''@;'; put 'put ''JndEc2JFaXcybkJuTTZsRCxzfWNjXVAvKnRmKk0/PlUpPXAiYDchTSROWjtmc11QUHxoJTRkXTZaOGFwOTplZnRgKVZwVyosX3ZfNlA+QkIyeUd3ZU0uRnN7WH5rQipMaGBmYk17OXpVXVkmcixtNkkiPldoNCo4YWY9OXk2c30pX2BCTEQhXkg8a2UsXlhGYzojKTciNnt3SH5rYFpnUEYwTDp5''@;'; put 'put ''Q184JXBiLl87c2xoNSRlVzloUFElKCVtW1EwfmswWDJ2NihMMVVOT25qOmtqQWJIZEVSbyxubmxmU3ZuLiUvSEYxNVNrPkI1aGBNSldnc2hnJl4vPU9RY2o2W1VSbWBrbF5jMyhtOjddNVM8T0VtbEU0fHt1fHV6IWs4cSxpW2UoJk9XQjNDRitDKlFxeWlKTVZWRHtpL0UjNUNremJKLkQkKGsx''@;'; put 'put ''VXhjUFNKNU91M1pOLEZ7UkkiaXRUVjRTellUQU9ldW0/azshI2htLHAieW5PTzIhYyM0I11jKmdSZ0R3UShTYTZvKXdTQmI2WiRCX2FJb1dRPFBYem4wcVNtJnwpbGckOkpuWTBXKGM8akohRWlUIk1yNEYudDNxYzFYW2dQMX46c19VNSw/WTA4R3VwfUk1P3lHLClOT298S0deUGtbTzRmKGo3''@;'; put 'put ''cS4wMWd5Om08aH1ZLG18MHV+IVdFSWZKbnw0THkud3ReVEo3Sztfe3cjSmkuY3lHdnQsUSJvUnsuc1t+S2A6Kk9uOmc4TD42NE5ZezpQYn1+U2BuaSVMdmBTQkYrfDFEUUo2WmNSWGtkQVtoRltMO3lgQzxfNFt0eH16eD4+Lld6ZHAqL0NRLmp8QmF0ImlaKSRIaWRjRTh5OjhCbl9VSiZgLmlV''@;'; put 'put ''SlA1bTN6KFY9PS5IYmtYYl47N0ldSz5jeWg5OGZzLHVlTEVRRT47RnUwLmZ0d3YvRHNIbnt7Wng3RHRaaTVVNV9DVns3L3h4P3M8V2BDdilJIld6M2NLYWlRbHxnPD81b0lDbGdAaSEoSmN1RyJ8OCpKSyFeMzoiSSF6OGopMSFVJWFmd04mJSl5UDpaISYhQjosfUZoWSJONllwcF5oMTJuI0lF''@;'; put 'put ''Sngudiwve3ZEYW46STpQLzFEbyFDRWNMSXtQZSoicSgySUQoUTxSKDRHYF16LmxxP05ISSNwWDwxTiI3YTk+MixrdW5iYGpTb1k7RX5xVnxBQk9nSjswfH49eG5TSXEwOjkyc2BBPTNfWV1UTkZebEg+TzAuSkBrR0NyYyR4PFVgbCw4JVRJNFdkPT9RNGlWIWU5ZC4+KTV6REcrXSo1WCxWI0hr''@;'; put 'put ''bWNMQVElZD9GbSh7ZXcycCFvb0pWNGdYOkVudmIsPV0+WVlbS0J0eSFDSmhiV3MpK0NHbWQ3T0osS2BuciIvU1h2b3RmRUc9UFk8V2pbOSVrOW5tUWVmYEY3JDl8K3ZSWDMjNz1xNTRTflZUbFVudT8lIUp5aCtHbiIpO1RiU1JZd3U+YjFqcVV7ZyhyLCNwJStYPU93JlQmU3g8fj03c2EvaFkx''@;'; put 'put ''UGt+QHlefSF7MVlrL0VAe0o0b0x2PSg0Qkp0LkouPGlYLzAwazYyRCttNSxnITVOeGZzdms0PEM+cFgvTz94KmpnODZSRnpaW1B6SzQoNVphYiJuQm92e0NVRCFOW20pV0U6PSEufWk/dWc4LzFjTT1DN3lEIVN0JWY6emNOWmQuOGUsMVBKVipoWExMcmxaZCNXVGwvQ0M9VkBRX2J4QEF6MDZ7''@;'; put 'put ''KUtqMigwe05iKVFWfDQ5dnchK3RMRnYjbkQocWw8P1tsKFh9OTFkW2VzQX48JUA3NSZjR2pMUmNWJk5PRTtXUD5jajtAQkxMRV1oKVBSbUFeY1Z8VDIzLl5FSCxKLjZhNzFTXnQyQmRFV3cuOCJLKiFeUX5EdTFbeXwjelU4K1kqP0NmS0xkWDR7bis0MU0oRjFgL3BuJD1TS3B1Qnd6Jmdke3k/''@;'; put 'put ''MEU+Ljc7ZnhOV2pYcUhbR01Ib1gocnVeST5OMUxtZyZoQ1AwOUIpbTpHe2VmSj5QK2AxP2B2Ul9vfUFqX25BRjFKbnlKUEdpK0c1LEI2Ulg+Z1p7O187a2RHUTZGdUZTeC9nUUxINntEYmlrdWx5Wj9IOyZ5NXZoI2BDVnAlIlp+JHwrXjQla0A8VUViOT5XRylvc0lsJF4lW1VvXiRMUCUhSjlU''@;'; put 'put ''KEgkZU89SWk2PyghMy9UUDZLcH5vZ1NQcWBiSH12Jn5ITTJLKUFnYkc+XSMsY2ZrOl1PJkxTaGNYK2hwO300YmVMaiNGUzNkPUcoMkBjald4Kz8iaWEqKUE+c3l5OC9zZD4iPCJ4JSRNYV9JRmpSTk54SCw+azlgdEM8ZyEsVEBme1pkKDY/MTNDVV9aUmdjYkNaUSxqZC5GSD9Gc0B7bXooaFcs''@;'; put 'put ''b3Q4d2d+ezpLeFtLKyNMM3RXNk19NmxoIWReKkRLWldTZm9JN048PXxQNEpYTz8sZEU8JSRKKTVkYnwoT1JRIXwoR0VXWSlnTlZCSWRfSGdpR0EvLHJtelNrZDxpaWBXb0prZXVDNWBsb25KS3llWEJKSlAzMVNrYjNXZ0IoPjJoYiNkcW8rO1hQS3BGJVhseG9KaGdDRWt5IUV5aUp1P1FIQn1E''@;'; put 'put ''fVQpNDRKYWJgOCheQz8+PH5NNSVGJVM1STVsI0RtWXpsd1RPWFR4InBMaj5bXyEiQSlSY25nI1hXdV1KWndLfTR7N0NdJltBUTIpfWshfjhrS0RQNmxqSno7O1FtXkUxIykraUI3JlQ0bClNQz9jdCRyJWJSWSZ5TClkTkVOfk5dczRLZz5dNyxXZUVyQStUXSg7WT9Oa15WIlldZkcoeFIvMT8m''@;'; put 'put ''eD9KSWFnZHdHfFZYJWc8LyhDT3A+JmY1MCt3LjZULjhTaE5SSXJsNGRsIUk4c0VwKE56QiNNKWM/QFgxVkVRalIsQjNUYE1FTHdrS2lkPTI+N29gMVVkbSp9PS9qIj5URnRNWkJzOHcsPXtrMS5hZE1He01DVT0mNyw5N3c/ZzgpO0o4Tj0yZCo/KV1kbkF5QnFMNTxBX0BISGI9elRRakx4N3h+''@;'; put 'put ''aGM/TSRIamJnT1I0NCxCZit9TmJ3X18+eEttZj5xMW08fDMwNkN+RHErWnA0bTNzQ1gqZFdya3Fkd106NFAraXlbOmcrM19bQGc+QVJpX31vbWNkcCwoZExSKzRCRm1PKWU9bV13MGVgJGYkS2Bndj5zdyRpfDBxKVNLYnhdK1NZXXFWZkpQQFUvcDAmYSsqPTdxblJaJj0mPFd0MUdlSDxBQGtC''@;'; put 'put ''QVhnIiFyTzhoM2lNY0Q7OlF9LH0yPWhtW3I/d1tFPT9HcFRYRUhjW2xsVlR3L3ljVW5AfFNuU31IWixJWlIoS0Uwang5V08hQS5TVGRGYFEzaXU/WiJleVlePSJfQGo/Wk5VRGJBJVBafSNCaFd3dGpJTVlrLFB7IXh+bEskSV8/VWc6K2JpSEZxd2k+RjV+NThNaGJqb0QuTUBOPUJPUiM9OWR2''@;'; put 'put ''VFdEVm5OSCJhS24qL0lTNGJwPD55IkojLlQqd3RfJF87b34mfCNUJlM5bSYqayZSY1BTNXdnMltmZWU4OEJWT0hxZ2ZBYjZgUyFKaTo/P3tXNTRLbmIpcWhlTjBhZVQoSEU4U3Q+RjprXmtOTGwqTlNlM2g7dV5bS1QjQmVXTiVYRU9SJi43PUJHV2U5fj1+eWw1PFRIXVZfVlFgLnRWZXBbSVV9''@;'; put 'put ''IUk0OUdLQWJNQmh5QlBOTV8mMDRzIyl9SjMkIUlHKUldbHJrUkc2M2lYYDtXVXAxLCQoZFU3LilkSlpgekYxJTVgYHUhKiV5WCpUJiJuWkM8eHlUMGFLSCtSSGR1bWtUaWZkPUx7bywvfEA3O2k+NXhmKGMqOzc/YTluS11UV2RATHF1dW9xe0pkOzRKbGdGMU8iNHt1WDN3TGFzOVA1TGtZRE51''@;'; put 'put ''OVdZIn5gMFA1VU12YzApVVIvfWxHR3RQZTpOcVkiYjlkfWpBWj44Xm4oL14yQWolJkdTP0ZHND4/W09YQU5QTXtEdW1pPlEyZ1RxUWk3VXNpcnU6TEhQNT19U1JVZm8kKjN4ZyM6NEcxQSUvbnAhdyteNVZCb3BSITNPY0g6JG9APkZkdCJ+Z2FtXTUhU3NjSjV7d1lmWmZIa0MxX2BZLl46Lnk0''@;'; put 'put ''Nng9ZngrLml4PXdwQG9XJGFxaGBFTWEpalVZdlAhLGsmQjBkS0ZWQl0wIkhoKXwyamBIMzRNOUUxYiw5cFkoUFl1aUMvLElVe1gqanchZGpCM0BKJjwlUn18NFY7JWJqb2doTG1WU288K0okYGo/ck06I0t8MSUpVEwwaU5Zdk4xTC8xc0YpVUZIWFdsaWVIWituTFZCVn55LyJJSDhQPDt1OkV6''@;'; put 'put ''fjNKZm0maiVrWilnbHpfc3k5KDxkPTE3K1d0X096JDw9P1htNlMkYj08dTQyKjBgNyZ5NT0yZTZ4Yk94NlVsTU89ZXpmbVc0X3RORjJaO3Erd0tqRGg+OHtONkphYmZBMXFAb31iUl0qQXlmMUQsOUQ0KlVHTzd9RFNNd2BGbEF2L0t3XktWO1dHb0xib2V6czJVdSo8dXo5TW4qUmo9bkw2TXVy''@;'; put 'put ''MztqeWZXZlpkJVZiVmxzV1R0cC84Sl1qa3IiIyExJGU2Uj06VkQqZ1dbTX0kbkhwRi5OVGJKa1A/bXNAIi9lVEwpRyhIQDBrWihZXXYrSis6dSI/Vz5FWVVCIzNqTSFqYDEvQ0ZgTldBVF9LYm8/dHtAZyRDbTJqYjo2TzF+VSJeL0pYaCRCUUhJREddNWtlSmZdJmNhNTAkMVg7WEc2TEl+UC93''@;'; put 'put ''SmNfVGxKRC5iJjBAOEM8QGVAWW4hVyY0ZzQuVENmaTd5P3FeVnAuIjBEMm5VSz8sLmFWd1NLMH55IVRhZU9AaGYmYyo0RjVwdytPZmBwcHQoKGZWeSFBIyZ1W2lGW2N4KGF6RDJCZGovVUc1QlcwWlVuOF4yUkd+M0pVSD96JV4iNj9JWHo4cVUqOTZIWzlgSCRJQzNOdz02UyNpbX1ATXs8XUR8''@;'; put 'put ''MTNTTXghIy5kWT1iKUI1aWRhKHtuUlZDZFM8IjhXSSV7MHBbV2dNS2E0IVB9O1VlOVtoX2hmX3VhckJPO1ElcjxWWmZ7fT81S3Y+SHRNTX5wZmNuM3syTi9WNGt3W3JdW0Q4K1BsUUwpRXtydHJlN355RVRTcGtsQF9udiIpUyMqKE98a2F1eXYxamFIbldHWyU2VEB8WHAlUntrbGs3W0NmS20r''@;'; put 'put ''RW9GU01xKlRyPVZ8ZSFQe3srdy5WW1c7PUZzMiw8dWIlKU1lbDRtX3Ricz1gM2p+ZV17V1FbW3Y7Z34xRjtZeDQ+RFZ+fTJVaVV+X3BaUUZXcVdXeStQWlgzRlpaXXpbKiRAOEhpc3w9Yyg/KTxzaGsoPHJnNVJ7TX1jVEMxTWR9eTdDJEAwLCIwRUdSWURidTBeJXZsfT1famwhJlg2OUszXVY3''@;'; put 'put ''MTUrSk9BRntXZDtJSHplNmJ8ZGVTWTxaMUtdW3xNU3JCbVtyM2RjSj8qPEQ7bTpyLzVSZFU7O200PU1DZ31mWCl7e0pRTG1sT1EhfHFNRUJWTkdgMThrRTEoMU1kbi47Vlp8VFFROEBkPEZoSlJFfmZHO0YjJSZiRml2KWRgOnJtSC9zM14+bnk/RHw1KFh4bE5tLk88TCVdNmp3WUhBIkciMEMz''@;'; put 'put ''MnIoZXg7LjtAIS4uRXJUZkZLdHclX0BOU2ZRZDF0Qn01M2k3RyxDTC83YktddyRVZkB9PE11SHJUejozbUdUKDNCWXtOWFZxMCUvfEo9Uk9uK1YpZzFFZjoxVGkrUHMuN3VnNkU/USEoXXp2SnM2OEl3Mm94Y2pRaWFxOTFRL2xwQTVLajRMVWhyOE5hK0pucEw7OVg+T0lZWEQ2OHphZzhmLCQ5''@;'; put 'put ''aCFoZipVJGE/PGlCaSZnejosMnksLzUkdWdqQ1FGcDgkP21VX3Z9QjE8Tm0+Ol5eUCx0SChoIy9sLlR4OURiZnQuK25ERHZNK19ZaDh0TlYjR1QhXnx8TXtDfm1ubk1LKXFRTHNlPDd4U2RSYkpMentVXXYsWnIxXT09fUEsdTs/e1pHJD9CQ1Y3Y3B2bmFsN3NhJV05YVo3RGRvejk7V2FIejAy''@;'; put 'put ''YX1ITnRSXWJRPWJOTTojMVpqWylvPmNIRl5scklGVCsyP05AXkYwLmBzNz5OJWRSaVJzOHRjeCM0KmhMajA5c1pvNkk/T3k/QFhRZFc4WG5mal4mTTUiRV15TGdId1p0e1BPMj8vV1lvQCYqNF5uQ1NFYDl1THM8bShJO3E9biZEI00yPElqWUtlO34iNXtDLHQmQ01JJENgI1pETSFhcGFQP2xl''@;'; put 'put ''ZmsrOWAxd2ooLCRoS0I6JHR5Kz15eE5ZMEM3I0YsYjhoQTViQ2IvRmVRLkh8bU5GWHVnN1o0Y2B1eXQkVSM8aTRrQ3ZCNmUoNCk8Qnd4dFBWUDl4bF1yblZZLD5yY01VZENkMDlYKH5SRnw3M1NjLHZyUFA2YEw+Pix8YW03QU41S1kvNS8/XjpSfH5tfml1bGNqOyZPYF1UU0xfVXlOPGlbOmxF''@;'; put 'put ''R1JFYEtuTC9dKWk4biQ/OUoyMVdSbTx0eXlIdFhYQyJpMFUwSSYoYFtLPktgbyopaXkzfVs9MjcrcFMhRzklZ11BYz08eD86RmojR3g/NFZvWm1KfVsqLG9LJkpdJFdFeUlSS2NSWFAkU31wUE4/WWVHSF4vQHlYRXxIZEl8L3FmR1V7L01kM2Q4OSVLVCRWYkh0aHlwUXxHQFNdMzVIbnJ3K3Ra''@;'; put 'put ''eVJ0Vl9GU21uTzQwKEp7QFl7XiY8P2FpeWM3UTh1W0o+YUYvK0AoQ1FnYSxeWFI5PkhgMXhBNDBmU05dZW4je0dWYz85PFo7K2QxRVsjej9FMV0uMXEoXz95UjJiQXtdMSNfUCJePTFraCM4RXAlW2xkQHxWYzgpSyREeVM+eEtxL21FMk5NaCNCITg6LnF9c2cqSjNkMVZFNixdOH5dbjMrUGFx''@;'; put 'put ''JWVyfE9qKGpjPVlqcGhgbyhpSWxIRCowTVchTztsfC4mLkgmdUV2dDdMakFwbyNqaEhdUSFpKyhsZSZrWTNWTFIuJkMxTTpwS1Z0KVN6b1t0Slo4b3tlfipPLzs2RVkwPXM7SkpHelowRChUMGlgaU94JCM/cyNFdTguWm9tRyR0LFBuNSwhVks2eEl2Kjl1bUA9PEc1REIjUEJ8MkVRRStAOC94''@;'; put 'put ''aE1hO0JfZV8hUU9oNV1zQ3tBO0FINzw5aEJrN15vZl1zP3UueW9AOkQ/RnF+Ozd5LzMkb041PytrTiNASDRmY2ViY19BWC5EeGghU1tMVXwodGUqWHNEZ3dqKFBabzU2Zl5KbHIyN1F9KXU2UzhSWWgoYzpaej5CXXpkPmZYQnkqSXVsPWllQ2woR2N6TU1qVDd7KDFudyQsL2hEeithdSQuV2ZQ''@;'; put 'put ''TnIxcjtsYCRSUXgvLGEvViVxYiF1PF8yUk4yMWNdKD84M2pTXip5c3w0Sz9DNTM8bikvKEB6NCZ7U2tjQHo8PmpbUS9COVc9MzxqYj5bOyVWYDx3WmtAKTBKTykxSkU9Z3I0UVhVKmdwdXpqMHlWX0UqWiU3czdldExQdTlTMUoxdVZqUl1pSzZ8KS9yamU8NzNOVGV+KnlAR2FpYSFQI1slIyxh''@;'; put 'put ''ME9oJEp0NywkQzV0IU8yOmxDMkI3L2FKfWg2S2ZleWY4UTxlaEx7e1VLLClSS3RKWjU7MiVkaCFgN218YlQxTWFFMy8yeEo/UHBYLkhtKER0OmY3fllAaGV2U0FBP0xFNSJ1eHROa05lWyF5OlsqaiVmYTVULHMsdCVKdzksY2M2WlV9b3dlJiFOVi8re3VwNkd7NS4iKncjTEg+UD1RTG9VYmts''@;'; put 'put ''Xm1FMEprVkkmLEUmN1MldGRpK0RORXlBdTZYSC57S24oUUY/SVlPYnZlREh7UHVSPCV7KXNRenpRanVPLHEsaUZ4QU9ETWBpKE4jLi9uTE9mO25+MD4/d2UvW1ZRYmJlKSZ3IWBnT3NtRDEpRTArenVVKmlXb31pOWchbV00SHdvKl5XVG9QNEVhNUo6JFUkeUYsJH5COWx5QGZ1aDZmelRIeEE/''@;'; put 'put ''JnNmUWxXbns7OzJyMEdKQ3RGTkxUUSwhTTEyNTsqO0dTKDJRUGpsVj0yLm1VNms5UXN+TntsIV9UPSFUSnAsKlkvU2xaKUpiIlR3UW9OTkZURGNrNzszQHRBTCoyVkx8NFhSe0ZDVCRBV0RmTm1KKlooXXE8QmlXbkU6LElmaWA2MSlITF4hOT99bkMmUF5AdDFoQjZsP2R8W24qUjNZJC5BUVgq''@;'; put 'put ''IX5sUHJANV5mRVc7Ijk5JGlhWy9vRGJ7fUhZakA9dWlseCx4PXhUJFgiNj9WJlFReTA/OGducG08KV1tJkRJWiN5Qmk4OU5sTVRYaHlTSDFsYndGNjtAWHJuPzxGbzovaWdqPiwjfTYzSW4/NT55W11fbH5TKEJaKkhwZ1tgOExqTCEkT25ZNkZ4RUZkQHREcUBDb0xHXWVHUXdjUykvUCNNTm1Y''@;'; put 'put ''TU80X0gzLkBlPD5jbGRna00uMERqR1hnMVRwUl0xP0NYUjRzOWQ7b3M+aDRUQHY5RjNTcTdbJH0qdiVPPVgmfGE6aHRuVTNraFRoLlo5KHhmckgmVn5FNT5tUk1Mc344V21VK30hZjZBPGZjbXBlfWFva3JJelRoV1VXNlhSNEMuK2cpMXZgQzo0bSZxWHRJRFRPLjZOLC5+WHBCQlN0azYvKEpX''@;'; put 'put ''V2hSU29uS2kqY2NdT2t+azxuJmh2eSw9d2RrKCtaNk06UEwzQWQ0NCtMTnhwIW8pNWtKSi5YV0AsWCtrX25GZkIxQDl1UXEveDduaXxOcmZSIT5dWSF1RylLTCxqRFA3Til9OT15Qm0xako1RTo1KmB8ZSZ8OWxMWnBVO1VUfjw4LCQsXyFUSFZxRGhfNipjeiNwYylZJHpoVHk+ZDhsRS4qbDxZ''@;'; put 'put ''cmdecmVbWjhSPCVKYDlZQ1UmcyVZZigvbk0lKE4jWjJHW1ElK0h7d0osezFAQGRBR21sc2N2bVRpRUk9TUhHZTd2V1pib3kqIWpFQU1YLCgxRXpLTkU9X0FWdXZ3WEFLLmhPbVM8UkJ0MkxgWmJGQ2ohU2dnWCpYX05rO2dqP2IiJlJrdDFfUSo6dzYudEd5YEIuSihtLzkrIl99WEs5TkwvT2Zh''@;'; put 'put ''VVFuW2lNRiV5UjVoWDVETmFZZ3Y8ZkAkYVR7cEY+Kjg9NXtlUnQ4Ykg1YXZKeSZaJGZ0aUd+SThXeGFSel17fSpPWUFsU3BkeHMhNF9JTEd7QCw9bys6MldiKTYlQEVQLF5lR1Z4Tip4SiFNVDhROjovPHNDLG1DeGtPJUddLGYsdERmZWtGLygxLzYqN0JmSjkuZ14xTCIrOUYxXUNdY35mW0Ew''@;'; put 'put ''eGxKRzw9VWlQaTtnWWQrWH59YWUqWDVzI2pRLEc0eyNYRGl1ZWk8TmVbOSp2Tz8vJDJqJGM3OnZrbDs3KE0zY05VKGUqeVAvJnBDVGEwfXViNGFyaUxEKUxgbUcvIXx3Ji97cH1PVEBoaHdYXW9GYilGRy9+aWtHfXI3YkJFbSxiVncvPmhiRmAjZC5hXSNxKk9gQCh8YFtSdGxALFNgbH1yd1c/''@;'; put 'put ''SmovTl4kMzpzPlVCPG9dR1osa15+VCErRUZJL1hqWDNaeFZmKWlefHpjL1I5RUh9OVN5Qnk1IU4jYHJhOHcuO2laakw2KjI+I1t+X3hmW2k3bT0+cXBRZiNVPS9xfV1JVH42SGtrIWNIJHRZWXZMSXg8diY+VDoodE1FcG5ZPSo3U2Z4THtCJjB0JC46LERCSTlKezZqYitZSDhpKEw/c05ASj9I''@;'; put 'put ''KTwxd35hXm1KeyRbLzxSQGwhU2ZJcyUhTHJXTmpoO2h8WVhTMy9dSVFvN3llOlAlWmlHcW9QeXBxTHU0Xm9Jcjk6ckA1cUVbVWlyaCZjL3lpN31eSDhNUGxEbEtxaywmS2xFXn5JTCRbd0RJWnJzRW9xRH1rfiJzJjtQanpgNGt7OVs8P2hpfjM2JWE5d21bW0pbTjh4KyMuSUErZSFRUl1YNSgh''@;'; put 'put ''XXZDZVtzd11ycTwrVDNSMlApbDgvfU9FayY+WG84PyJuNmxMUjNhfDw8WTt8TzNwKlszT1FYNCh3YjphPGxjST9LW1B8Y2c8IVZ6VT0zUytJIXU9WkkqVXJoejpeW05IbEJEYnJmdltma3lvJlFZKXVVVHY3NHIwWWBuJHdhM3R0WCpRVW08OFQvfkJZQSFUeWp6Z1p8MV1hX0kuV1t4QjhdSEBo''@;'; put 'put ''SXQ8OmkiZys/SDYhJkw/dCpCR0U1RDBRT0pdVCNLaDJgY2hFM2kjdmh8YCIxL09RKGR7Vz09QlA9enxXMFJjJmI4b3xHS0l3KFgiRChaJWFjW0EzOkNpX0BITXBZZzJsbXI3MFlEdiZPdVJqVWE/LklzOH11cHV9LCguQWkwUEV1blg7I1szY09PY2VyVWZOVClPWks8QVN3SUtJIUJ1YlE4PDZJ''@;'; put 'put ''WjJNe18+VX1HNW09ezN+QGtNSkhoLmw6V3heO1N3bn5gWip1dGUzTHAwdVdeV3Z1cEIlRjtFMSszRi9NWEhzaWczLm89cURPezMvKGFpWXMxKEQwXkg3dHozUzkuKGxdTz5ISD5uIXM+eE9uRl1ZQXpOOSU4I2V0XmEiU29YYEtSYUNUVTZFVXF5Rlc+I3tdSXdnZV80Q1p1I2wpW0JUbTFWVmA3''@;'; put 'put ''XT83eWJaJG9nTSZJXj02NS41QjVvPzA1RVNGTmYxdT1vKWwlT0VCVHVoM15ZQ3AoWFBBTEYjdHFBXWNraHxnMjUjZUVneFdjeENpNT9NTVRuPnVdW0Z+Z2dROnA7SitET1NuVzNpVltwVEpSM1EkV19qej5Pbl41YHs1XTpIZUY0dWckMXR9Pn1LQjU4NkplWHAlaFJBJkZyU1IqXzVkbWVtIzNT''@;'; put 'put ''W0RpVUNrQ1dTM3MmR0klUnMxYVMjbE1hYDAxSFQvbEpSej8pS2BHM0QrPVghNTBUXyhQL2FZLzJLJjZIZXR7QEtdUEJSdnBvamVXe2Ihcy9yRlBSdUIkTWw6bCxVNXN+dylaIlYqPTk1YDZ1NWc2JGs6MCklRkgyTko+cGk8dixiZVQyVmlsb3VVV0RrOkhmYHJnKmVsNyN9V0k7KWNbXn1pTkFM''@;'; put 'put ''KGpwIkJyeVM8QWBzS0JkYDp3aksuOyV2SVkiOXdlUk1YSV5ReFJmeT5hWWksPHN3REshWDpHK0BnOHg6Vy8uYlpMKnVbUis0RWZlRmJGIzZXNSJTfmpfIWR+Y2Z9WFJ+Wy5vTHI4QHpPIzxRNVN8KlYmYDgjejhmYndoTWpSd1U5WDBjZDQ3QkhbcElTZnQmR1YhKHc8OHxiVGFAeHY/MyR3OUcs''@;'; put 'put ''Kz1ZKGRVfVdbfE09UyVvJHFOOiJiTV54VVMyMUFaOjtIWTlseS86OUZMQl9pRFgjdT5GSyVyJkVsPXNzWHtAZTQse2hdL3JLPjFsJV0mLlFIfG9UdnF1V3c+SUJPbEpQbz9OM1RBcC5jalhxZHt2ZnEkKXZXbUIxWm5zRXVrMXciUzJQPEAkciZQM3hXREN7Xlt5REhbJT9INXFyRDB7TE49TzBN''@;'; put 'put ''YDEiVyxRUSp4UDJBOmp7Y3JpRnRtZz94XSpXSUtqSj9wJUZlLjo3RUo2TE46UjJCRSRqVENaSSF7IU5lInFyKHxyOFsrRnQvJWRbbyR8L1hdREZIZndQX1NgbyJeak1KfTdIfkFzVU81PHNKUyM9OFJFMGlVMEBBZXkuR2NJUzdYZFVPTil+djwzZTM5Zi9Le2lfbnRpbH0lMUh0elBwI2BXJF5d''@;'; put 'put ''L3pxcDFUen0jI18vdD4sQWNHJXd8bXhiVyYhSy9oW3FtMlZZNnRETEhXalQzSVhrXUdGWD9MRGMzJSZmaTdKQDMlX0whOmJQNTtDWD5NcWYoYF1gQGleLnR3Yj0jIX1lYSYkJmRNUUUiRSg7K2NGP1NAPjwsYVd6JnEsfVZbZj04aTQuIzJ4dTpIcFY6RzkmY2tZI1laQm4kIzdia2svYEUlOXh3''@;'; put 'put ''WUsmOl9RaTgpPztGYjo1cnFEXzpJVnNyYzNpPytjSXlmSGRAZlpGJGlndUIkQkkxby45JlNvI2kkeDV0bTdDe0BbV0l0O1VJNSV+NUFoVFNEVl46UzVPeS5mLntBMDVsZFJXK21keFZ0aCVabGQ0c11icWVgNCRYfDk7JjFYRkJHVl8qP0RkeiNOZHVJQl89QWpWbC9yazh1e2ZgZ3drLEpfcytR''@;'; put 'put ''Kn4reVoxPFlpM2A+PT9SS1MoUUtTd240M148aCUiOSt7ZyQiYiI7JWFvTk0rdDJ9anQ1RHZ5WU1mNUh2c2UkOVo0Ti98a0NxOmk3M20vOVM/WWlmVEFZeWtMKSh+RVJiZX1rTE1IakViNVp6JDhQWjRZYmolQE1oMWI8RDBMVnF8JU5wYmgpXUJ8YmEoen5OSF92ZXFvKnFWIkgkPEpUX15XKC5x''@;'; put 'put ''RzZ6PyVHPFNpbWA5ViJ5ezVgUTh7P1IzXX1CfUQ7dGxBZSxXU3x8TEAxNDAlOEJIUXV+MX1AU3lOZklSKj1HaXVCalFtSEJqaCNaJXdjVUVtKjJrVGg4Qk19MG0+NkgsK2l2MHB6YVokOTMzP0s1a1MxV3s6YUhHb3lrbyk2MW0hM0opQmhQI2osbT0yIVJrNCZieE11eUV4LDBHM2RLeXIlJj88''@;'; put 'put ''JkE2SzBkQCImS3xMekVoRiZVZCg6WVhjQH1+Jn1xQ3k9ZU1yQmxbQXdsTX1lckI5fVosLkZ8RXI8IXw9I0VxfWZEViVvR1siailRezoiLFtMVE9LJjkkNy9eLFpjeGd5TkFkZz1VdSUzOVlnOCpxMmg0WyhbQ1VuJSpvXXglaHptRHJJVV4kc1F5Ly5PXXkoX1c3Wl5oMHdwTG1NcyI1PHxdM2ll''@;'; put 'put ''d3w9akNEfUUuTEgqWnJZZHRKZ3MoYlV2Tkg6cktbYGRTYSF8cGNCKX49cFF6Y2x2R3QhXWt1K2hsYT1NV0MjbTsqNW8jWXM2JXZqXU9zJGV+MD1SIlp0PVNrTCsxKVljans8Ym58VCVoWEk0VSVKWH5KRXxiWV5pLGYvSCQ8QyFlKkRieXdHNnJ4YiRwYjk6RWtONjpEYCgvY29oOmNWWURwSl5z''@;'; put 'put ''RzpwRmVfTjRjVj5sWSsyUGpMflltWz5ZOyZLNFo+Rn51QzFSaDledCs2fl12dllWUDwsNm9yfTFLYnRgLDxgJFcvU01vaWIsSEYwInslR1Z5aF9zUHF4OClNMngrYCkiYWh2TXZZZUg4L29+KG80cGlCVXdgYT5pWXJdIzlzdW1Qck1FZCFEKmp9VGhuYlVNenlVQnQ3Y3F6O2A2Qm18fVYxaCJL''@;'; put 'put ''Z0w+XVkyNVpWNjBSIypwRyE8Sj1gYXMxMjZkQzNkc2JUZCZaUjd9R1s4aEBga0FHUSliWXk6LjhQdFpTTXt6aFM+NyY2bVgkQkAwT1J3NCp8RXtRI01Gbm9ZPDBEckRvcj56eXI5UmBbOXVrO2JDJihHeXcqRXMoZ24kfU98L2o0T0BWNm5lXT48TmZjREFKKW5LSE10RWgwflBdJGFyPE5dRWR1''@;'; put 'put ''IkJLLH1WXl4/ZDdgbkIhKD5JRCJoL3lUT0E8Q2xGRFlhO10wMjkhczNJMG53X3EwTzRHYV47fU5yT0AjOW1KMEpOKXVHYklLbE9dd14qWEJBTHAiVTU9L1M3OzViMEw9RHswcCxLQmd7K1pmYF44KH1ZWCp5K3V3JXMyflo0Kj8wPGo8LE4wKU5KTlE+Oi9IKVs2alI7M19VPiRxWHkqSmFbeT9V''@;'; put 'put ''Tjh4KyZbSCtFTFJEJDguRnVMWDdrSURqfDY6L18zcHF+WVFsJUYifXkqSVtASF59T3Q8YiE0MFd0W316IyklJVByMiEpU2JWU1BdMis/RTh1XmBAR01rJF0yYlUwRl1ZPTNUe1d3ZDA9KjU8QHIlXjcvOm5rVDxUZkdpclM2I0xHMSRYKmxmaDtmJFNUXV8rYTJ7NF1lZjpSTFcyfUJ7OXNFW0dj''@;'; put 'put ''YCt4ZV5HOl5yRTRzMFtzezkwTmMuUWpVWVthdy8/bWdGJDpTSXp0a1JLJWlMJXhJMD5jT2VXdD56MTt+MHkkNVtHQlN0RHBRYj1mKnsiTUxvSWppJEA+JGdJazZ2Z21VKSpITV9DTmRAcXQ4OTssU2NYUiJuJiV2Ml1DTH5RLjthIylbQkolJDw7eTBASFpFS103Y259JE44emcrTWBLQHguXy4w''@;'; put 'put ''V3pxUmBlQCF3VD1iInhJRF8wfkdhZHQiPEJyUmNiJmg9RV1FeWlMRzU/R0k0PVI+IjhmYW1IKlQyTylKZiZzREMsMWd1cXA7Zm95UztSWnVAY0llNjYrRnlrZDAvdlpgSmB6RlpIcCxNc3I1WS5dY2pwTDJCRGg8KntMQkRUVnNPUHQrWmI3OilKW3gqJGNiNGN9O0xJcnJlbFokVGVoPX1RZHE9''@;'; put 'put ''YT1Tb0hbVjAlXlQjekJGQis2eHR9d1EyL1FqVTV1RDUyUi4lQkxwbGc7RCY+akZRaXdqc1h1VHZDZWlATzxGPDM/OXdLJjpLL0h0PDZpKDJ5PkQ5YyFkQHQ6ZSM9Skl+YGNpLk5Tdzt2Sl9BfVEieCQlJilKLHk0OWEwQk5GNkteaXhmTEE2RWs8Rih4MVgoOU4iPmcqZ31yP0FiJDFqJSp1NXx4''@;'; put 'put ''Qm1nMzR3UXdaI3hfd0JTeTVdOE17VXRWYUVpTCVmaEJ6cV5gPGUpfFtne0Q2cV8oZ0s5WyVuW09uKDR4WW4pR2BDLkZSWlgwSyEkNyFhdF8rM3woNiVsbmZGczg7VyRASG1+bkNqM194KiJBLjF0Uztjbl91cUJdTSE1cFJ4e3daSGNnbiY9OG5hWWJ9OmRQV0pEMHphPHs0dkhzWyg0Nls0KnV5''@;'; put 'put ''ZFdObmhSWmVHe1k7dTFDcjIiQzZlO1tPR1RlRlh9WHl7fml+a0o7KXx+clE+WnUoX2tEZlQ0QkIqelpGPG1wNnEkPWVLTXl4VjAoanYwQ2grNnhtWFZrP2NTaCtZbShuKHBJOXh8WTI2LzROe31SMGlSK0hFUl43QCNOciVrQ3JlQHN+YjVCZ25OKlpQNERFYTpYMjY3UUpUOkxVSU9+Wy5GSiI+''@;'; put 'put ''P3xrbUF+VlQ9MkpfNXBpfVVLOlc/Q1FfbzhlKTx9Y1MqaDFnOUJBaTldUzE5OHpkPiQobyR5VyNHcSw5JkBNV2xMbis3LlMjMDZAOWBCflAoTE1kNlZHdFEmaVMjM2lJXVooVGcqPDU/MilSaX0hTWF2aDRKS1V3MVRJSElWSj5XIzNbbDU+KGs2SF9ffmhQfUcvLnVCPXRab2slenVEKVloUHc0''@;'; put 'put ''fU9oWlpXZz5kclcleV8kMT0uY3Y5Jk1gTkZVIyN3bzxlOmYhRm9eVUxTTE4lKUxSPz9UU01rfGhrT2BbVFY8Wz8kdTVOR3M9P20pQVkzc0dEQ1lMSV9nUF9FLmxATTd3LzxkSFU4S0g+JCNFdVoyT0YocDhRY35MfFE5cSsmPDlMIj1dTlskdngoSE1BT0AlKHlVM30/Xz86ckVAOikxLC47MVNY''@;'; put 'put ''ITZmQzN8IyomUlQxTUB1LD8qY2pXe0tRQi9yMyo/KXhYP0dCUmg+e1R8VWVARmsjaTh4KkgjJEZWM217fW0seyYqYzl4Oi5ydjZDSTNRZHxrJm85NG91KmpbYl8/bi5fNTVVPzlRNFYleV5eNWRJMyJIW3hNb2NAeXRYOXgofnxlXUhUajo8b18lL2FnRV52NV85S1ozMkolKlJlRigmZUQxS25B''@;'; put 'put ''RFtoOEJyb1FzdTckKm1oPl86eCJDRjl1LiteZXp1NXZXWHw/OHNzJG5WQDRVdWNGMldsLjhidDM6Ql8pPTEsS3lgeDZedVFPQk5UJSldPl5RKkNhV1o6IitvXnp8RXN6LmN2OyNTalMwckVhfG9lN0VaI2ZHUzh+e28vWk4mV2pLQyNlRF5RTW4rVzs1SmB3L214M3Y5KkhMYTM7fGN+W2B7U1F3''@;'; put 'put ''Z2N+I2R8Mmc6LFteaz05QkYkN1o3Wl5YMDxNKXNNWlkuRjRwNyNmRzc7QzkiPTojQ1pLaFQwXzNKMEJzZFcsYWg5Y2lGNShKKERiLGxHVHgvcntCRkhETWo1dmw2SkpEJT0kP0JGLl59T11SMl03USEmQCZIJmBaOENlYHBGbk1jNjZpOHZLJHVzaE8xQTNufExUb2d+NUFEcjQ0NWFBPWsrO0hl''@;'; put 'put ''NDczdSxrZH5MXl5mTlgmWDFzTG1mfSEmJCw6S3hdSzIqIywsYTQlXUokP149bEtXfW17P3swfmJoMjw8KzNiMV9PWlhbc0ojdDV0TU9UJWRIT3YvPnooaGJIYyg3MzExNWN4Yj5rTjBkXzY7KjJvfmBoQ0ZCSShFY2BGUkZSPHtyNFViOk0hSWVJdCJXJnBuKyIubD9YS2hDVnpsQ3RkYHJ6JiVV''@;'; put 'put ''ckc3T0BMRFQ0IV9ZeVYuM3chWU4uU2pGOSp4cksoLHVZJGNTd1p4UlFrdUU1PTgvTGJBN14lb18+d11JYHVbVG5rVjZ0Y3UobHF4KFg8Q2g0KFsvMWZjd1ljVHE+W0hyQDo+d0NzPEksYnE5Qjs5L31AemFHP3Ekajs0IiYwU104dCRLYEA0c3V2fHpMXn1PbV9MWzosdTtpJFg+PnN2KndfdUQ3''@;'; put 'put ''eDEqUl1oP3FoVXJBPExGW0VhR2V1WyI3X1VhbEIkKnUibyxGTFomfTxtIS5kXSgsdFtfYFk5W2ddd3FHXjVPRF8lKldGcUdXTChvc1NecWxrPy5JSCk/Mz8ucFJ2dGozIzZoNjhscTFhM0ZVSH5yaSklMXkjMFpBZjlrKylAPlpVSmF5diFTfFNjODtVeSFzZShzVVlDIUAycERxdGdxNDtdUU94''@;'; put 'put ''QjJaQkA/e2F3fkI5fmNWcC9jLCEuL3Z+O1VGIVlxbGMjWjEyOEg9KD0+TElsZm8pQHRMfEZKJlN5c1VySWRaJSgjRHx8IztUbEd0Kk55KWIzbnlVIjtfQ2ZQV3NfTTYuKV4uSjt2dFI6NHB+TGhGZnR5MCt+aF4sbEh+TGssZSolK3Ikfnx9bi5dbSMiV189WjlRR1N4Pkp5eGNQJiIqXn4xeTJs''@;'; put 'put ''RytsJT1hMSppMyp+UGk6ISFbTndhZ3tkcTdFUzYidU5oS2FRXjNPTkovT05PMy45X21APlo1bWN9NzAwa2JOUiIuUDorMUxpMTM4Ty9ZTFRkNHJxdVZAVF5IRCZpbzVmOndORCNrZSxEWkJ4KzRMRFlOflN0Z0VYKzwzNUlSSjxdWWZ+Ukp3MWR9VkNebjtWZF8kV2JhNl9uY01dTElSKnVUSERR''@;'; put 'put ''XzVJJjVNUDUjbFdpa0l1fVl0Lz9jek9OWnJ4UCklNjNsdiRMfi4/Iz55aUJ3Uj9xNVNrVDUuRC9LZClTRTshKXJIYSEvQzcsPTkmZiFpPFlrVlowQVBubnM0OXQpeHB+eDh7fElNeip1XWhHISpJUkFeTEY0Z35uM11mN2VbZGF4fVdtcl9wUnZ6bHRXcU0wUjhhNDBaTU4/aC8vKyV7NSomKHVS''@;'; put 'put ''JEVwSWxeJCg/aSNod0VKXXVzLDM6Pik6Kjk1YTlbUyZQKlhtcFcmUjxmL0dCVHhaaEk+WTFlfTldWCw8SjNteVIsKUUjIzo1OzhfMFdIJTBeVlA3RFd9el1keXlvOW9EZkJ0MWBUJVFKOD52MU8ldDIrPH5DcDZzTzFUVExYSntXYndTKSoqcTI+XThDXUMrISp6XyxrdVhPJD8hVzg/Wzp2PnpB''@;'; put 'put ''RzwxQF1fYE5jUGx8THlZUEBnTTs8VUpPSUM8ZFNseSE9NzYoK2R7Z2c/Mmx0TzdXSDc+dVl+dFYqVWZdemk/M3skYnpBNSFIdng9LlJqekRMTWhBdFY7KFRfYz9CJmEybExjYVs5TjRiWH5mKn18PzZyVFhxfWI2InFLdiwyYi5xPjVzMndwPHlQNlZjRmp4OnIzPyJ4WVFyJS5VNDExMUlhWVlU''@;'; put 'put ''QHtNSyVzTkx8XzRhdW9UZHdQZm8uVWVZeSxLQ2ozczMoVSE0UDZHOzUoPzJqMlB9TlBRRnJXW2pHO1k4TkpDYEcuWC42cWoybDl3QSE6PVhiVjMhWzdHazM8OUhiKmEwVlgrXk1Zcyp3T1IwLj42Jk8oKCU/K354el5DQVZZN25SRkBhZF08fl9FLj0rWzpJSldbZCNiPjAlSCpgSTh4M0xsTUIp''@;'; put 'put ''cUh2dSlVb0I0SDptQElSSXIjJHhSYShuTHlhcVpuY3E2Jk82ejs1XTs5UG1KRFd3cWhzcGZzV3E/NUVWOkV9Ky8wTmpZPjxPalFSNitGO1ZEOlgicjAzZiNOa0dBMU57d2xyfGgwPmxkLG4qc2soTzVad106RlpOI0dEI3FNKlRVU0ptZnl7VWF7ZklfNWdkKVEzSnhvUjUoWFNqd2hdbSJfK05J''@;'; put 'put ''JFBVKCp+WTFuUl4jW2FKIldLY1QmT0A+O3J3JE45JSNZXmpvL3BXQkVnXWpZXVBWLkpOQm9+SE5raTsycXV+MkNhKDU7OUpeZS8+b0UwQ11eWW45azVaT1tlVkZHSmwsR2gvblZpbD9PcmxIUzM7OHJpYm88Rl5SVE9BYHt+Z05UU1FNKEM9aC8qPU1XNzV7Jks1Nn5nQlE4Q3MrNm5IP2ApLzku''@;'; put 'put ''fTBAaDFPeHYhMyZkcGRaQ3wjTH1nOHpFeHQzcVdBXldWZHxfSzFJajcvKFQqV2dHRGpDcF43O25TemkwUDJAMXtXXVpHWEoxd3VRSVF3eHV5cn0qSX1kMDVRcUBGK0UrdC59K2swSF4jWSE8cEd5LzdmSSVjIW5VQTwmRjUkKD8oOWJWWEluTzElPCVRfHZ0IkQ0MjxJL2lFKjNKc04vXWc8XmVP''@;'; put 'put ''M2RENEs1YW1xKzdffWlbdHtuNDkwKC9SPEFiIVFyU0tndTAyUmVFOV9PXURyX3FjPipzLnlkbk5ZTSxrRWVRMmA/bDooYFJRbVBScWwqKVJkPzN0fDw4NkdjKmcmM35zVTdGPF8xYXE6c242dG5+e2t8cTBzMC4pK34lRnUiSzByOkZMS2cybzk0WT9xfXFGXU4yIWNWZkViOiQ/L1UwLF57cWdE''@;'; put 'put ''LFZOSSR4ZkgyY3JZbkhSKVpab0xdOWA9d0cuXkA3UD5vTSohLFJGVFhHd0QuQiFxMCNXUiV6WkJedmB5dGUhPiYvbnlZXW46eSVxYHxYTVB5fEdoTToydC5pfkpYI1A5fGtMelY1RlVhW20rVWlGMzFjbDF7akpoM2ZiQmVRV2EoIT1GOkhfM2xBZHZTdX04e15AY3MuJkZFeSgmW114QCheVzhT''@;'; put 'put ''QlIjflBdOE1bRE1HPXk+b3phJi8vOiEmWF5eJlh8TTExUFteL1ZifiQhLj1mUHYvZHZBRHlVLk90SyEwUkVsbyxEaFYxZHEvbF9APWpjeGg2SjomR21uMnkzP3ArZ01dYENLOmdaQ2FmS1NwWDlNdylGQzRNZExpP3c9Uz5SSnJNOEVQRy5la05lc1FlMTw/RlpjX3tqTUt8OyFwLjMpPENhbnZh''@;'; put 'put ''OyJ3M0hWVGQ5S29HajE+ZDNrIzZxI28rQzl0dX15YkghU0hLSD55Zm1JYlN5a0xjJXNpQ1E7UStndT85PTVnZ2UpdV4xVlMzNmY2aCJ2UUx5cl1aJjhwYjFQLzk8Xz0sWDUlNmIoJWBZemEuRU5qSkRSWH1vVHMpRlY1MT0qJSZIWXpDcWtaISJ6PitdTHdLP0xGIWBkTnhySDN4dWUsd1VoNyVu''@;'; put 'put ''MWkkdmN4d3d5RVI5fDloMlZrW2d2NCU6Jixfbjl5SFR8cDJiXyNbTXg+LHhecE85S15SUH5YfiVaRlM4P0UiUk09PEwlSnJlbjtbW0ZuIzIzNjZYIltbJUAsTlttbEBJP1MiL2AifnBvOiFdPkFMayE2eDFofSxMXWNDYHlKOjM0b1N1Lld8P1R+SEdPWT8iSFk1S0JkJFo+dXdhVDg6R3NWSys0''@;'; put 'put ''XiZGNTRfYD5FQ1AwY2pbRjN+OFU1PTc1YjJ2cCFwSHJLJiJiIltsdkNHTDZecjJrWkhaSyJHK1V5enxMdShuSE0uM1MjPngxI1VrOk4mJWFwYVslajNWL0BAZFdFbGA0bT12ZH5QM0IrMm1yTmBdYkImZlNnbUUqMG9FPXg8ZEpySWxbZE56VmAlKXJMfnBSNVsoZT1UVTVLZ0p2O3osVzJMPChK''@;'; put 'put ''cEZvdiZERGdUT3c0YT9KdkJ7NDE9bW5jXmkzaXxOM28henRFM0AvSkpdemE7Ny8pdldYUF43ZWhaa3E8QkpPWE5KXmQ8dGtBd2c2fDU7d0ldfG1YV0p4OiokQG1ZNUN1NC4hOGtYUSRZN05wZG04L0t6di42QWQmX3I4ZXQ1cDo5YTVHfWxsa0lXIXBacERFO3NAQlZROVpOQHxBfmI8c1hKOFtU''@;'; put 'put ''O2woS25ybmVKbltPRXs+bTJ2RDh5MkRdckZ6MW9IYT4rLkgsSnU3K1ViKzNJdV4jTC9XUnRuWmxrLFdAYV08TW9DXXUub0d1azJdUypdN05lYnw0L2RPRm58cj0pc1kzTUQiQStZdVFJJTI6TzZhTXwqLCMoO2d8X0oldHZPQXxmPn1eVTMmOH1RZ0QsaEJ1OHlIZ1osLG5hfH15MWtDZz8wJWNu''@;'; put 'put ''dD9xOFssRF9mVCxVTUd8MDYjc0hKTmspbUZKWHhbckFNSi9Acmx6dmYoQnBdLnp1bEZNZV5VRWsyPVAyRmR8dEpOSWglaEpSa1VPb2pIRi9HPGFVPyJQK2kpRHtaREpPdFZnOXFiNn4yN25IZSp6eTBGQ0M2e2RwTEBZVjhZc1I6MUUuSiRTdVBMaERRWV5wWF4pWy8rPCg2PSZTP1F5OXpQPnFy''@;'; put 'put ''JWtfTkNRej5wRlZPfjtmN09sRD14VDRJWDlkPyxXTi5fMyNVUncyT1I9OjElQi9ROHFHOiw1SGhBZ30/TEEmVFRIbUd+QzpULyVXW28qOHY6YGVpUz5lJmRjMzs1PXNeckxDfT4jIjckYS59RXF4UHkyd3ldcjFdVmJiN3BVYFt8aFN4a3JQNG5ETkdjV3NkMVp+MGdfVU07MEs4bFAhZy4uUWZI''@;'; put 'put ''ViIkLnxCaXYsJE09cnIvemNsQHpLN2JYZ0w4YC53fFk3eEs1U293fiI9Um90SlcpcnNmZ2BuOjIkUH4mPEsrZmgpQixOJVprdEBjP21vdHQjfSM5RmkiPWxAUDgkSzooLnNZYlBXfH57ZlEpMnR2Y31odm5MRVYwWCV5QDZMNj0wdW8hKVF3InF3THpGeVZ6W0dZKTlFUmh8LzU3Ji4qOmMzIzox''@;'; put 'put ''QT1BQVhmM0hkaiw4WjkuMV5qY3kkdn4+ej4rW2cueSZZZipsNUBhdm87ayhZSixIMjxEXkIiV2xwR3xhaWE7NG9iUFYkTndbdTkxOiYmZGVHakw9MXA3endRNGNscDlCampVWGAvKklKJkh0LyNRbDEpVS84ZDlORm9pSSgpUXUsRk52JT8mWzpiJHE6UUZgeVM2Wi5dIU98L0YmVWE6N0JJcH17''@;'; put 'put ''Ui9PNVYkJG9FMzpzKEBqeVdlV1dNWjU9d1R4WGZ4QCw+dnU0VypySTtDan5qezVWNU5nNypHWSNvSiRmNVFEL2RVOkN5fiF5WWtPNHFUKnpqYGxSVmNqVi8mSWhfM047VjQ8Nyt0NHF8SDlEU2lqP1hJe0l+TGtzSFY4I3N8KyNqYCRVTjNrTWBwSUAjKywlK2JiMiw7Ol1Xe3IrYW8hZl5oZUFY''@;'; put 'put ''Mj9sQjsuV3I3T2IlVE9gOXt8KEVPOnVrKG5VcjpyUyJnYHZ7bFl4cG5Yd0AjQixdVkxdM3lFbHpqOilBR2x7UWpuZ3UoMCw6e2d0KnJKSzFUe2NJc2h6blQhQGZtbEsjMiJbU0lYOTAwcUNrN2smVXVKPHBuenx9bF9zezx4cTRNZDtzVWZqJCFONHJ4SFQqNWBKQWtHZCs6WkMqP195LG4yVV57''@;'; put 'put ''Ung6LmFhTT1VUzpzbklTVjptYTNNVkx3UHRNdiYleHR0UEN6MT1fd0o8VlVTMmp7MDFLSyVGekk2Mmg3UlIjZF5OfTdkeyRCZSk5VDcxUkghYmx8Uj1NNlIrbmBAKkJqcFQ5fXFOMlp6N0MpeE9JZlIkZ0hzO0RiJihGbHVpPVl3K340PUFyaT1qK21aP1JiUWliYyV3Z3k7QTFfI3p+ZkkqRUZ7''@;'; put 'put ''Jm0iQGZsdStDT3tkcmZaUGhKZn0+a2N+bT9EZGc1YVRmP1lXLiRjMGN1IkNBeVB8ZiFyM0tDTERhXXh3UTFQbXVGTjxGUGY2UEAhZl4vIil1b1EjSC4iYXBeaik9RGR6IkBmOmhXemhEWUphW3ZSQkN0aVJHYTxMV28/PTkwczo6O2lIWTF1QTkkcCYmeHpZUTYkQnkzRm84TmljRVdyU3BbWjkq''@;'; put 'put ''N2gyYiNLcG1UdFs4YTA/W34wXzVoPVg+dHcsKXVLNmJZImtNUnlyWjc+ZC9ea2lnWEsqVFc2Xn1gfXZfSWE+QjAzcGBHd19+TzNral5kOVA0IXxySz5aT3s4UFBLMXJsMy5sJEBfYkUva1p+TD1YPUVyb0dVUihaczJJfURPZF8qL3twOTt6dEQ0LGZnZi9yaGJmKUVuZ3tBLHpFLyhkOUhLIihe''@;'; put 'put ''bjUuaVcpNmVrQHZJZTBHPHZ9NCQ3RGl2RlJLTXJYa3k6KD1eWDBuUWBLRDwmP2J0SHhffTM9SEVSTWJVd2Z9JGtqJnR0VXB3X3ZfbHVPd0lPQiwsXWUyens8WXRnU1NgVF5DYiNMImlva15IX0xrKzl4YHFjXylMJD0oJmtlWXlBdHVZfUt0KzAoRW1wZV9bP1lMcSxfQ3xsRHJ8YDZyLCJzfSlv''@;'; put 'put ''YExyOXpULi9pRWk6d29yZk89cn5sKnFtNmR3SlZfSndwWSJiW05CaHIzcmVhNkssIztzTDMjfF04T2IxKHVJRCJjTnkiLG5fTGlWX0dRJUkzOHpJODZEZGZlWkZsUDd6NWdZZDBBWj45e2tPVzVYS2plTmE0I0BmcktGZ0xbSSghPixzJHhfUDhdM1N5R017ZGJLL0xISzFzTTxDe1B2eGBkdSpg''@;'; put 'put ''PWBxI3w1W2BuMStoaHxPc1hMUlRoPHpIQ01vSmBtenRORz0ySCxLQ1EmXVtHXSlgaWJPayxCU35PQjYkPTVOTEZhRi8mMXVKLm9vbTZ0NTI7fX40My9qfTtjKU4iJmpAJUxGeENFfn16IiwkcHRFJT8yTz43UjM7c198MDVHYjc+eUhMLj56dmlTVjpSTG11N2chMW5OMnNBMSRRKUBbPzwye2V5''@;'; put 'put ''Mzd8LCFAUEp3TmtvJFo1VVJwWHJjZjhTR0lbMDh4dEhsPlVjZy9zeyxISSN0UU9JKiYsLEM/ZzZoJCsrUUg0TmA0UitFOHQiOzVDenJdQ25lP0VSeClyfH1CSi4uXkdETHZuL04sZmMzZD1iaEVeMT97fF03XSo2OFJMfDQlNElYJkVLWSNqPEJKRER7QHF7SUU1WXc+TmRRLiRSL0ZGfGQkK11B''@;'; put 'put ''Kz1zUzR9R0A6UUduQ3VbIlZSIkIuaD4qYlV3ZFNybDVSRi9oPWNFVGlSdnFaQEZuIT5bRk17MnBZbzFWQkljYmR6dDVDOH1PMTFgVD5LTjJYRlZOOC9XYjl5fTNdQF1wZyVWRj1ARDYxcTYjJUJKOitJdCEoLiNeNlJ6PUI1aSJSZXsvOUlYYHV3SEdKP2Y/Yj9FKUtEJExJKzV3TnojMD5NRVhj''@;'; put 'put ''VVdsbURiY2QoPVMkd3NuR2lIWTEjKjZ8Xm5ZUGtPdXdGNEYkJUszcTduXSM7RyQwO20rOUxUalRfUyVjQmFPMVQocXNuM0ByM0FoLFgkTzs2YE5YdXgkUm8oazpbUWJAW15nPzAmJS8jLmNFVEI8MW8lJHhwRSElaUQ9Mjw4JFooMXhDPGQ+VUsjSHlGKEJVR0BsW25TSixnenJjd0BAVmZsSnM5''@;'; put 'put ''c0pwK3wiSnFkUTNofj9WITRWMEd7dUEqdz9HYHs5VXJhaklRTWlCPW9ibHNKbCp4M286KlYwaTAqSm8pdF1RN0F6Ll4oPEF6VXYmPz5oQGxJeGl2L0w3XnUvR1tSaj1iVUVXdSFxY0UpQnNDRGU5QyRGQmFTVHxbdnxjTHB4P21eOVRJWSNBMU5sV2lnZCxeQihwWHg0OWJ4ank0K3lnLHZqbHgk''@;'; put 'put ''a1V5YlBrfktALE9jTFgjVDluK1JwPiwwRyhXWmc5ej1Sd3hBXkxXRz8yZV5aQzt0Iz44Tm5EZU87UmxscyROUHdIWVcxUVRGIy5iYXNES118OV5qXmp5cyUjOjpnOiphKmlGR2BeZl9qYF9waWlTYzJlcU9KR1RqWCpyWEM/Z01SNXdHMHUuIVhWOF5bKjpRT24hUlNKamYhdSYsJTcvTiI4d3oi''@;'; put 'put ''WipdVXUsKyU9Oz09RiFvb04kL3JPc2ZVSkoxQHZwajFaP15oQXJhRHgjQkdOfCprKlNOZj99cnJ8ZSpXU2lrYDI9NigrQGFVKG4mJTU5JiVgPSIhPF9IYTY5UVRTTj97TyE7O2BQeHgvNz05ailPLFdEZ0JkcWJxdm9kczgjTDQvWlVlTkR4L2NVYkYzV2VmX0ldYCxeME1lTWNHRTtqcWFVRTYz''@;'; put 'put ''d0hZQztiejtfbHluZT5sMk84KUFmOmhkJl9oOl5BJFRMO2RTV2o7TEB+aGAhK11YMkVnTGV+a2NAO3J4Ui9JKjd4cWRNdFM3UkcmMDZGaFNTYixmMztOSV92P1ZZfUZ6dzxOUTIvdmRTYSpFajR1S1VUcVdLT09YdVVZbFZXJl80TUB9RWZ4V14pT2IvTio+QSRkT0x8c3ooXUxaM1g4WXg2LnRn''@;'; put 'put ''QlNFXTN2LEF6QktjX1lIQWFHRV88O0NeTVU1UU5mczwjO3hdQk8sWGBXV298IXBCenUqamVjdWg4JkRCYENFbV8vcytwW0E6ZHlxZFghbXhqSm8lUSZLS0Aia0g8WmxPXXxZPTBgYk5fR041cFVjMV5UbUdbQ3FnUWBQPDNXTjgqcS96NT9hP3NjekxLXl9RYSsyP3EmS2lmJX03TSM+OVksVCVA''@;'; put 'put ''JTtjaHF1JFIjQCVqWWhYYnI4bCI0Jl9rKnMkdF1RMlpYQj5lbFNPUCFfK11ycEZTKUNmWDhdeFFjeFZmdD50U0VPZTVCY21KenZEWXFvX2Rke1tlN1EyZUdBOWBYfWVdI0M9OyM8dU5nTiFbPU9rPV1LWERSTXM1eVI/QWZDR2MqSVckX0FtImh2MmVHcD9xX2dUQUlAKStGS1Z9eXlLaXw5Sih2''@;'; put 'put ''Y3QqeX03fTklP1FXUEQ8NCxWVFJSO04mPCkkMHIpM3EhIkhpLyxHfSo7KVI/OjAmTDl2SW49TXVEPGs5RU5DYEN1THVaOHBsdyM2LG9DO0Y/KHhNYEk4e1JNVyQiSkI7RW5QOF1VPFhda24/cFFgQG5PeEkkang0ZWp9Z0tFfCslSXBfT217NXNxSEhBQTBrZSo0LyojLy5neUpfXUFSdzJmKn1W''@;'; put 'put ''cU4xRCgiZSh8Tkluc3VxQXU6UXNrV3wjWHY6MSxIRS9DeHZyRzNGVjljU10sRHVnNVJsSV1DaTspQ0xGMkIuWWhqOj4kKmRUQm9oc2tgcSJLOCttKEldSVB8Kkg2a2FqdT53Wk9ZJkB7cyE9X0Y8Rl5ITkcjLHlKKzVyITN6RnA9YjEhYjNuWypORngmPiRyI0h8cntOfTRtNX4kQGgoZnxhTkJg''@;'; put 'put ''MnU9c0ZQRFA9Oy5mOnhyaEouPSE7MSFqLDY+eGs1UEE6dTdfWDhQQkFbbmQyOSg3Y05lVVp8Vj1FVFt3NDVzU0pmSVMwZCo7cW1+Z1BINSF0b0YsKThHRztTS2N1NjU9NEwjZH5MVG5kbnVSbCNDWWhGX04hTGA/VFNYUUpANjE6bjd6NUtkUXQxUl0wJGtCfGs9aChGfHkpbjd6MTJZZFdeQF1E''@;'; put 'put ''NFEpZmJTNEZQJlJfKnQ0KVg2NU17JHRkeUchKU1BMzRHeFBWQyF8dGUmcFdAN1ZuY0lENnhscSlUNFMzKj5WVCY+OGd1NUw7WkFpQTMpJVhefDhTZiYwbEZgek5+O11eU2ppaGBIPFUjWTxnOVgjL0B7fCVYKmpQbm9EUlY7MyZbYWJAcDB+Ky5eWkIrQ2Z8bGJPcnB+O0x+bHQmLFhmdiU+WkZQ''@;'; put 'put ''YzpPYUN1Q111eXsvZCVLTSp8WnoiRUl2OU04dDAwcXhPOkUlPVdCQH5vdVY4Rm5MOWF5eTBTP01fLzVqWGdONmh9ZXYyeDRjb1EpWTN4eV5jSWsjWVczeSpwQnw1PExESV5RLDdxcTtwWX5dR35JLl1NUGYrc1YjSGtpV3gpMEpWMVJSd0VFcDkscDgsXlIlcGllaDpqJGpMbjtWOD9AMXZsJl5u''@;'; put 'put ''ITY0QFtFaS83WUU9P3BFKmp7dSJYRD05KWZ+Wl9Ad0IxK0lKaUVyKVkqJXlSa3QiW35Jc1BWK3hCKXtaX09nN2w2JEF5d2cpOFtFZiNAKlNzQm5AZFE/UTxyY2FyRio+aGlYPjhvbVhhLy9qREwmPy9COz1PZE1HKCo5YnIxQkB5K3c4az5iNTgqPH0zTyF+TWlAdWtTdkA4elZVR2QyblpYVkt6''@;'; put 'put ''TmZZW3FwIjk8eTIsbG9lQmN9cjRpZVBmRHBQZlcxcEtGJHdQXjx3LHF4dFAsPGAhUXNeZSRXPSpmaHxFT0oqRExSYzVeZFVxUV1CTEVuJWlBM1JMcCY7RDQ8RChhM2J9PC9LZSk6eENCb0w4UE1yVzN6QTpsTzVLYVFIZDNWUmd7bVAuQl5QZntHSChyZ01UekBZeFExUygxfGdKfjpBITcmU1JB''@;'; put 'put ''IUBYNU5ZKVtgLlp0dUFtJm58Sjh2RnFdaCkxPUQiX0pTOnd2XlQscVtEeHZeKnpdYktRQyRpYkghLD1NaTAqJitmaCtMIkpKPHpQfTgrOVpYeTBkUFo5PkR+VCU5UFk7MWA5I1BEKHUuMVlQUD5DLlhvSEJtLnFTTmBPcVBJPHVVVC9PSHhpcmlbRjxJW2Y3blg5LjA1KXE5S0phc3B3LCVLZSUz''@;'; put 'put ''NT9VdjF1dHJwZWE1ZHQoLFFVLDw+WGxhfWAmS3o9JTNdaFIjIWUwMCpmVXYwLFhyRmBfMD9nUXpyTTRwfCNWMlcuRDRtRCglQF1SPT5OWFVOe14/MktRVD8mRDxvamcwPUxiOllyWFNEWCtmamAzPXBVW256YTI/P00lNjYlTl41fDB5P3s+bVMkZTx0O3M5fE1waW9GIkpQbk9JYDg0RCZuQm1s''@;'; put 'put ''X3FfZ1RJSUx2Mz0iOEE8Sjo8N0AhPiE+ISNqXntEe0pyMmlaLm19d3E4QGhQKlI6eUZsUVBGL282VWErZ25WQnN5Wl5sdzFfN0JePykkenI2Y2QmXU9bNUtUMEt1SjM8dTQ2aTpfUE9iWWlBIVA1N2RqZXVtVGl3OTdZWTtDZjwpOigxM1UhUD50PnxLUkdzKVIyKUh4RF5hYkh2RjkhfDlZMT1E''@;'; put 'put ''SlNSclM3P1M2d3FwaSYudSlTTShfSm1VUGhdbHVoOyI5eDMmWnNlKiExLl0/KUlMK1F6c1FPb1o7VkIkJUhKI31sWTxSXmZvfitPOjY1Z1BRPz85OkRqYThhb2RoWy5uQTE5S15wXUxRPFFuSkt0RFg9P1U1RCtRcXJadUB0XnsiJCUwSTQ0amIpX1p4clFdeVUxVF1eImJJV0R5JGNNczN0XXBm''@;'; put 'put ''T3MpIm0iaitKMVBTI25Qd0xWJTowX1ZhWlVPWyZgMTA3YTcvUkEhP1dDI2ZyWX1bfFFWIlBdaGsxVjgvYmNCZXw1SyhEVFddKlNsXmhIZyxhRWF8SmIsQCpIXk1mW11xeTU8OW5xWUc7c0xVLnopTlJBXzZZLy5zRXE9NSldQDxHWzY3IWA2akUpel4oaVVOY0k8cnwsOzghUVZ9dU1YUDZnKUdi''@;'; put 'put ''ZU1zbE44V3hPejJ0R1JHKWswKUlkUmhSX182Uj8qeU51STxiYz8jITtSQnZLell2bC9mZl5JMylhamFWTjc5bEx1czY3UGgqNVclNDI9JiMibHo4PWFnO1Z2TVlMaXpEfiJUQFdRP2MvQnREYk1QNExQe1UwSS5tLFBkLGQsN0hBdXlnQ05fZlAhfWV9SXBYcFohOHBFMDQ9YWBFT0MmK2QsM3oi''@;'; put 'put ''KDFQNUlLMDUwWE9bQnVPdmN4eH04NDhbZEFJP2lNNyE4cXg8MTRPQD9CKmY7U0N5NDQhJFlOaThjPlkvLD5HTnZJRGI0OWw+aUJSMWtoeGI/IyE3UjcqOmtfYWEpLHoleChyY1BoKC5ZYnhzOjdYUUpyRm06QFlbIlthK1t6UiJLbyZwRiNKX1ppamNqNDA3cmAwaGpjaipaTFJGYWQsNCttR11X''@;'; put 'put ''YmpSeiVaPFN6dGZmU09uRV1XITg1RV4/XjkhTj54L1kkSWg7Y0NkaVp4UG0xKHMwfFAxSWJZWUlJQiIyMltlI3F9I187a1lETzViQGFmISh+REgwWmx7UmdXP0Q+IzF0YWo7Tit7SUJlajF5bCkqSF9Ebl44dlBmNStzKEdwL0tBdkVMQj44YzwoXVk/TkIkKDAxRjUrS2VZJFUrQX42U3deJEB9''@;'; put 'put ''aW0vYWokfX07M2k4Y3EwN1RpRCIpO0hNQ3RZbDBkRHZGWHhRejJ0bVJjaV5PVTRmMyhST29NY3NgeXJ5NyZ8Y1hFKXZ+eypEKV1jdztYejNXRUxDIXJmRStvWlhLWjMqUE05aFc4YyFzUkpUT1dYKzJVNEhSfX1ZMFBZNykwWzRxN3A4RytxY3V2dmojc3csb2ZPMjNqI2Z8I2dLLHxUWFlASW5+''@;'; put 'put ''U1YyWCVJJilaNDc8a3goP0BJan59WWxjL3Y+O0MzNFhkJEprfjx+VkdPRiwqUnNze0khbCVVc34+VmxjQnxkam9FYzROe3cuS01uJlRqZ2E7fjZ1OSlYWCt8XixVLipLYzpJLkheLk48Kil2QS9hcmFza3Z7NFlsPSpTbk5EJThQOSV0QyxeJlNFfClMflpWW3RPMmhRVigxMltHcS5DIW1Tc0lr''@;'; put 'put ''MGx4Li8sNE84TCFbPD9YXyJSVm1jS2NEUlp8MCEibmw7OSpGUE97PVZsYzR5NklWdi95WU44byRYd30oemNvZFdiRn4rNDhZLGh8ZHg/XUQwZCY6JSlxfXhgJGRtfUdjKllpak9EQyJGfkZKLnZ3L1J7YUY9Vip4a0MoSlgzVihYOUlgXkc7T1R9SW8mZkFXVz1JJn4qTnBhMkk2PEMrflZ9InMv''@;'; put 'put ''ODNlXnN+KlZwL2xSIkYsNEckQSw5Y3pdY34uRjJXfEx4XjQ5VnZLMFlqPjFzV08pWzE4azh7dkB8akJGRTw5Jkd9X0U4RCMyLitua1hlNHIucS5xbER+TDlfYExyb2lyZEBoQjU6IjtufiE1bUVLTjE2OjEzbHBLJHQ5PTEuPU9ITH0rcVNpX3I/L2pIJk9kIXR3emZVVVcwTTQpMTI8UmxCUHNM''@;'; put 'put ''THx1RllZSVJmU081fCl2YStXWjM5TSNgcTc7Im83O2FvNztfYTo5TFNvUjd2I19TUS9IWzc6OTVvNjdQT0hpbytWX3RCPi4hT3Q+eDwybiglIyMpOiQ4WTBiUTAwUlleRkc8a2ohYW0hQSFUIURQJml+NHo1WmBBJEwpSXs/OGs4MnQ0dnFoOkZqW0V+Imxnfj9qRUdEVEJqd1UiOUwwQDRFXlNM''@;'; put 'put ''MDFJQGcoOTZLJDFQNFAkclJ7fW53IjF9aGVdKExQPDRyJiJFRiFOK2tUJUVYPzh+RFB6IVMrfVJBREs2I3Q5fUYhO3MmUUdgXkh2RkBsd09ETDNGd3kjWy4uVFZWOU5zSSpUdHtscEohSDZ1dyxvSlhRSDt4OVtdOVZEaCJ8UF9BTzYuYS5PaWdFemFCTCp6YmokLGZLIkomMVMiOD9uTDYzXj4z''@;'; put 'put ''Okd8b052RHhoPHs4Rk9PSnU3aTcpUUldRmB2Q3pbdDR2VFdqO3FrWVIkY0goOW1aX3BSfUlATWN+IkJ5dzErWk1Ub25lTSxxeGspV2dvR3BvfSZ1NXl4TnpONls1X2dLYW5XOGY3O3tlX2h2JHorKlMlM3FVMUBQM0JKfWFoR0U7VGVXQF5dM08uSVlHfjlMMkI8PzlMS1hyY0RRMiMrMXFzRTgq''@;'; put 'put ''SFp8ck4vNmhiRUJHOURtNH5RcjhsMGR+bnBKciFYUVZSOFc4ISl4O1Z7U0MwMTtdLEU9Ok0xb3d6KCNOcjBrXSMmXSpMfU8sP1YyKjkqI2ptSSMpYS4/WnRrT0VZNTskRGY6VEheIWFOR1ZRTV1bVF45XiR4PC9yP19DNTl7QDYmT2NpaGY2bDBEL2s4ajkmVFBOPUA9TWk2Ui5iMUVOaC9oJlYq''@;'; put 'put ''JmIqaEQ2X1llK1UiWkkqd0hofWUxdDNqZEphN1IrN3RNczEzVUMrPDFRdyJdcnNscDE9aFZ9bCpWUUNPMG9ESDlbZjMmMFkkcWVJKkAsd3psdSphSTlAZWhXOjUmSj08bk08PjhwbCkzYDsrRlk1JTgmbTNLdUlVRSlHNS9RMW9oZ116WkoyNDB4R0NPNGskXlovIl0+JkhLfCg+PmdRLGIlSW5k''@;'; put 'put ''cjsxUE91SiFITzYoVTwyL34yaE4xdFY/I21SPHdiaEwmYV8zOj4vaFl4a1lhUytDMVRUanpje3VxL05vQFFwYFB6Ty9WcWgrRnZDIWc1RXRPN21HOHUwZ3NQbHRjQWk0M2QqVUt6XXVPRFdYPyMkJDxFbWk8JCEoO2hDXllrUjdFQXA0WmRUSGx2cUQ/KGN8WkZgelRRYnZ1dE94bVJOJl9YcEpL''@;'; put 'put ''WnNMYHo0UmJEOzVoW2NNdSkyKH1lTVp3KUw1X0UidGc0OFlsUiR3NW5VWF8iYVMvVk8pV287dDZMLD5CTjl0c3R2X1dPWSJsK3E9eC43MSlIMVI/dltWUnhWPzRYJHc/Qz1OTWhJRV40bCUieXdaPFBaRjlTJUE7dlZZV0peJU5IX18rNlQ/SzByKjd5O29rM09LWEdIIm5HI0xXLyxPNm48SWN3''@;'; put 'put ''Z2lMVW16X04+K1tRSnhPTVVFMShqSV0pXjlGS0NsKWpoIyVOe3RjL19ke0NKaTdGKlV2RytBIkNrU29uI0dSTmFYQzIpSFVFZ3dPXnVDdG5WUnZiQ1FhaVVIQHN3SWp0WDxEeXpaZU1Yd3YpRSE/eCFMd0lmSihYbzNebWNFVXV3NHp5ekxeJmB4P24wLypVLCEvMHxMeXVZQ3RmXUZvTTpUJlEm''@;'; put 'put ''Il05RktvQUhfT1NyQiQ0YFhLRiR3YmN9JUZLeExXY0dCSHpRP0ZQYDNlNDRrYjF0QEBBXygqVFA1P2h2bjNrd1Rzdz5uRF5ILDhJIUdBLkQhXVRGcFJZI1tGVU5vM0JLQ34rbkdpdF12RUVWQlchbXw2Y29BPmhkWk5jYHojTX10cCtJYltGSCohd1dDIVdgak9BfTlaTzd0MFc6T3JEZlEjYkNk''@;'; put 'put ''eVtDQ2w1T3QiWVFZP1VbQSI0JktKanhwbFI9TkhgclF0U3NQJUZ0T3BMYV4qTnQxcUlbJHlLRlJfRzFlSH42cXh3Y008IlR0OkFyd3VNNnUrKikwQEEjYjxmWHtadSZUQVRBNSskOmx6Yz90NHQ2UmMibW52cE8wYD9EejVPcHo6Q3lOb0U1aS5VRDo9SHNBPjUlV0ZePVZxb1BZImJtWl1PMThE''@;'; put 'put ''OVpqVk5mWCtxMFB3TjpLfTs5LHlMa3suWikxW3l7OUo1K2A9dHlSODdmMnNxOm0vaFJXVnVbKm4uU3twKjpXXS88WWJtaX4meWRBXUtKJUxlKlJSeipFMytqdmdxWXNZMXdJcl1RcDUqbmU9WUVEQ0ZVXiJTOWMoP3s/e1RSRHw9VW9KPEpELzclKTJ1YjZxR15DXil4cEs5cjxWUWhhOkBjXXpo''@;'; put 'put ''Sm5MKEBXYFo/d0FsJThVODFMM25IYE9RX1V1T3U9QGpWME9Gc0RWSyh4cDciXTN4fDBCe2tqYlFOeUl1Q3hBVHd7eTZIUnxCZ2lMSW5GYTA5elRPQmZAOjl4eUx4OVgob0Q3JitJeFFJS0FaTmVfTG9DLl1US35BNH57P313QiRHN3MmKG4vKjEwTGU1Qm9MI21fRkI1QWojU29ee19+OVFVJj45''@;'; put 'put ''V30jfnV5aDtCOVg+fVpKVXB+dm5tbiV2Ym9IPkR4QztMKXB9Qk9ZV3tpcT94SHtucF9dITlae19dXSxROEMhRCFWYG0yOGR+fkptOGx4amRRUEZOSls2KndWZSRmOCtWNFlpcnBVcls4VTxPbClhOVB2JiJTPjhNcWhoc3t2WTIvW1NAflE1bksqclModllQNlpkfVVCWypeaX5wemNGcnpfbCNR''@;'; put 'put ''WFZiMHRoJmhwOEJAaCEmO3deYzVmUFgkPjg4Rk8wRjYzMXlIMnohKC9tQWY2aUhUUURvYzV4Pk1tLy4vTzVsWn05KWZHNVdGPkd9YSYsRClObyZCUHswL3xaRHtnVi5hWXc4cWZdWV03I1hdQEBZXXdBNF9HTlsqcWJtfj5CS10rdW9CYnVWI0hNV1UhLEkieFlibEg7XTkheyFRe0AkYVZtUyFw''@;'; put 'put ''ZHJNKE9kMXlMYjNoJl1AeEguejQlb2lQdjVseTUqX0BAVHBUNiJTLyliVDsqLnVMdT0yRS41WVFKY100T0FtS0Q+WzxAJSQ5YFpMYXolPmw7e0hNXTskdn59Z1dIeilRUnFUMCQyJWRVIy9QJixtKjFYTTBVKXxnIS9dSCFtWEFXPVNTb2NHSW8yRCIlezNUKEElPmdnfGNxJklOTntrLHp1WFB2''@;'; put 'put ''MVdefDYxajt7SDlvJXUmLCQhPjdXeT5NRXA/Z0w7cWRDNkw4MiVVJVBLQFk1NHImPEI+QyViSW16M1RoLkNGdU5ZTS4wVD9xYkZ+ZyVWPVJ2NmtVcCNDU1IyXi57TmBGMEs2KWgjUlVNUCQyJUomdE9vX3ZFelhMTTYiUDovKDQxRTgzMlkqfmxkc0plKzRrdUclQkIpLyQvVkpGVlEjSnEvV1h3''@;'; put 'put ''THcvLFhATmtYcixdNnRlcWlfW2k7eSVXI0VgOzBUdjhQOCt7Kk44XlMsYmNSQ0tbdHBCXUZzKkhVIyo2S0lAMk15PnRTKkhvKUhVdmM+dWUjUy4yMHBFM09xNjgoRDElNTtMRzhveWB9JktVbEBmJkpwYyM2dWxCLn1NcGVnPyQoQT8+PlgvKiNaOF5GWDhCNyRJTkN3MCVMcyMqJEMpPWtQayRm''@;'; put 'put ''aUpyWVpzWWJObG5TRzgmUH1KTnZ3RHhoO10iT0hELFk2bUgpcjF0RTRIWiM0fDkjZCxzSDcsSHdBWTZ2OGMkdTx5USo+IlQwISt8bHc3RDQ+OGxXRUk2MVZOaXxbKDFpQSlyVjZtdz9BaUZyfEw2TDhMKzZrMzkjNm9DQUBRV0NgPnlpajM5IzdgLm89Y2NDdlNgMGdINTAkSis+fXZARHJUajM5''@;'; put 'put ''I04jSU9vSFtkQHVQIVE1eVd9Q0UwInkjTG0lI2JQVXUpKHpJVCx5KVVlbFprI0Z8UjB1YER2IVE1ZW83dFEiKnVBR1s8MWNQVTUoWSZsSmdDTUFvZHFlMWIsdEA4ZHQvb2ozRE4ibF1DLnV3IlJKNUZKWl8hKlo9TktJMD9zJnZZKzpaRUtWRi4hRDwpJnZoNERBRkJKcFY5e0Y1d3Nbc0VfNFFZ''@;'; put 'put ''WWsxSX14KEQyXys0VUd3NGp4UjViflExUjFRXkFbNk0mRWIpKjBFVVtwMX1RMCUrc0gxRStCLGU0K187eDAiZltNcykwWkk3W0RoWkI3eDVgKipPak8rRH5bbFU1SSZGTE4iNSg0cTJaTUYlKW0qPT99Jm91VEZjJms3fDV8cGNGZlQ0RjdfO21MJnxeMnN5QG1pfFA1X0w5RD5Pcz1LO30lWj95''@;'; put 'put ''OVdqQGFMJUg9QzRkLzU1cWhxSywsUnlYcjxqaT5EQ2ExYT81S05iOVE4VFAhKTtRLEphdHs3UVQhX0RMVjNFdkNGMHd7OG5XXiRfd1BSJSMpdlRFOzZofSpYK2AmZF5rInMvU0U2LH1dMSRuRVo7ekd+S1RVPSZ7dTd7KFJQOG85PERyPjApcEReLGJpMlZOZT4hJlJEYyV5Oy5XT1h1LkZoSzpY''@;'; put 'put ''IywiOVlERkV4M14yLkk1OyZSM2c6SCoyYExzb3Y2UU5lQmpeNygpMmwsfT0oXkBWXyFYPVh1UF0qfHAkMWo9c2lZUGxsKzRuNjcjIX0jRywofGJSV2pGeH1AelVIKFFtejMiY3s0R3BRbihSMFpQcHRgXW1bJHdNJTJVND5ueV5eNzBxbit7XURLYnYuLkYhN15zUXwsakdiS2lWbSRNMHdNSk8i''@;'; put 'put ''TUc3MGdVanMrOkxLdSI9JD07O357eXg3XjxDUj50XjtCYDlyXlV5ODtnJmpyWVY8PDI0UXQse3FvLndgNSQmIkVZKGxFaDBteGd8UHpqQlQwa2BbPCJPJWpSbntrNiYqajdAKGBfdXtdQy9gZi5kVDwsTS8zMCtfNXJnJGdaJVpOTyRyZyw/Y103bEdsT0lUSU5FfjozaHs3Y1JHN000ZExXcj9s''@;'; put 'put ''R2M1Nkp6ZWQ3PD53d2Q/SmpPbXJee29bY3g7LmclKV94XntoQj4hNkN6JWxtYkFPPHIxKWwzakgiPXpuPC97LH56UGM4X3E5VW86XilEV240Nm8scmBjaSVQNjw/ai52bl9xaFIpWCtiUW1odClAXW14Mls9azZxOWEoOF50NyxbOHo7d113T2owOkQ3XnFvZjEuXVg4e1UwcSV2ZjxjckR0Yl5E''@;'; put 'put ''Mz9UQCk7XXJRUSRUOGE0VHZRWVpGTyN3eHFbJn0lblV9MCZNKD5LIkovMiYlLGlQVmo7PGU3fHoqVXJKMHd7ZiU+amR0R0N+IVZ+VEZPUjUmQCQ2XjEyc0tkP2FicXB3LjtVWCx6SUE2UVtBfTlvNTYmYnF4dFFwS3QrZT5HbkJmQ3J+ayZ7Wn0xPyNyPi80P3UvQCszTDNETnp3UlFXbzR2Rj9e''@;'; put 'put ''KlVVIXBaSyYoSVZSNUtzQVlJRi5KbD9SJlJnaS5hV3ZPOUoqPjA8N1JKcW9dR2xCcXtGWnxtVlpqXUhKcyJLUVc4fm1MPUowJSYoJUIlKXBGJEpvNEleJV9yXlJabj9APihaOUJLXkgpMCNASFciZVd1W0I6VFFZTGJQM0IyeXJkez4lM0kldVIhS3xVIVo6az43bytRKCZ1JT16XjdebXg9Sz4q''@;'; put 'put ''MDlSeGdKYD97d09oTXs9Vm0ycUErRClAXUFdVixZXyh6QjRLQCl8ZlVia35TKSNqJldtXUlQRmtQfHdEaWZvJjgsUDdoT2whZWxyYkRiLE9+WGEzVkYhOj9YdDI9TWlzMz9ENUhJKGVNPXx+QSU1MzBuazdlc1V9XkRJdmc0SWAwI0A3M2osZ2BGTWZgQWlPaXVwVTomNVIrPHZdbHkpfExVOkxz''@;'; put 'put ''YzJ8dCVMMFtQaHxSdCslIWBGVU1xWiF8em9yP2Z+Lm13Z0gxYyVOP3F1RUBqPTo+fm9zQGFnKngkQCF8Sno4O1pARlUobmxvP3BrcDhFMCluK14kYHk3YUFpZyZJc3h4Pkc/L31EUUM7MUNNMCliZVd1aW9nJjg7fkBob0ZZNy5RPkN1biwpOVElQTpEZC5DTUlLdW5MT2Apa2A8TElOMSFPXWxp''@;'; put 'put ''YEQzblBSa2tke09EN2crYCsiflcrcCx3W157NU5CJkxRQjIhcT4oL1o0e2xkKWpgMWlNdzM1QnU4Tn1ORWkxVm9tPWV7Mj9xOj1ZeyljRkkhVj5qY2okPE5WfVlzMHxORVlUT1JyT29yTih4PX49WUI7dmpBTGxnblJqeEB7LlNtU0NhLis5YiREeUhPXzY8bCI5cjxIYHxUPEx3WnNSXWJiQFs7''@;'; put 'put ''VjIpekxTcHUrIUgpXTBXaE5mYiVhb0hgLmVCOT9yYGx7aDAleiF3c2xCSSVueFV9RnY8d3l6R0xALmR3fkc/c0h0YCp1VH1KcTdKdix4NCljUmQ/YWJfbS8kUSx0T2wkZmI9elBYOUg6TCFAS3NgclE6N1B0Mj56fisidmZWOlBncCpxP1VIXndpIzdodDlfWTM+MWhpJjhEa3tVISFJPCpAQm84''@;'; put 'put ''PDFMckp5UHZyQ214UnF1SHV2OnE9aEEzWEk8bEtGSG06XUI6VHJmU1phYWRtSW9FRE5DYzlLKjtWL1dhIUxmIVl1RShJS0xHOG1XOCxCc2FAcy9XR0V5VTxqTmxzaWBoZEs2OkV4N1NSLDQwKm1XTkt9KnBpOkkzRk9FU3MzVHwhNUJ6RkAwRVJYZD9IVExYMTdGMGpCP3BXMiZVUl5hc2Zta1tA''@;'; put 'put ''PkhnJl1wcHleI0dxNkxQcktQaEdARExCNmwvZU0oeGYrR11jPTxSJlEvIlB6ImEzK25+cmlDdEZaQ3RGOH5HQlhkNVc7eTcoTnkrIXMjYGhRSl5tZXo0dlBHYXJCYXRBPSlHRGV4UHgqeEMyTm10TzN4VEByNzpod3ZOR1BVfUVARypuQUdYdSxuVXRXVFEjUStoXXY7Tj9EKl92cnZWdUZlTS5w''@;'; put 'put ''cFsvOCljR0RTfSo5cV5MTCFpaDRudVQqMHxxKFBdfHB1Q3VyXkRaVns/QXk1b1BsTTxEb0IvLytSVzk/S0xFQm8xWlJCTCk6Ilp6Ij8wNVR6dWhFeGR+R1pMUShONyhNRlVRZU1LIl8+bDBwOU1RVVptbz5yfmsySy55PEYwfCJFKXk8RnRzKDNscHk+YEd1YyxKTzc4a0dMYTkzRWwrdmJ3aXxb''@;'; put 'put ''W1RGWlgqXkdyTHRPUXtFcX5MMSUxVnlnOkhsK0RmdF5fVCRZdz4sPWtPb00sZ2srNXdYRGwrOmE4WG89dV47Mip4eH5tOnRVQGIkVTpCTUR5Z0lOTWk4YUxYd2lXckohSCFsYDJSWnIoQ3tab0xyQzJaY3pwIiU3VEVsejJTdkd+MiJDNmJ7RVFHZ3g3O0BETUdiMypCP0NSb2xkMHk5WntvaGBw''@;'; put 'put ''ImtpQnp2YCJjRF51JVdIajohOWRNbXBqP3AiN3RtREx3OFk8XUNDdURiM0I/MXFxVUpJK0p5akt5fkVtY3hJNHUpQk5GQiFDd0Myc1lkRm46YEVqKzV3eTouckQzIkNYMUxYQ0tFbV0vIUtfK35HIls+JiphaWdRYz5iQzZZRlhOPGJmKnpJeHczT0dlLi45NSFNelVXX004RlpfS2d6W1teelsv''@;'; put 'put ''cH4zVzQjS1lDLltdfn07NnQlRk1DW01wazBHVzZaWU1zKGg/aStSantHM1NjRzdMLm8jfkdhMWY6Vm1rLHxEenZgfW1GYU0uV11vLF5wIWJURWQ6QTZZQGVPR2tze1k2eEIxY15MdmhScXBNQ3olbT4xXkZFNXleOCtJcXdNcnREYzZYTXc9eT9LQnpTJlZLKik0P11bRlooQWNqcE5QelUzLzFY''@;'; put 'put ''cXg1d0VtKHc+Rlo8MlYwZVNkNjg0IVlTRXdTIU5FO3s/VTAiZn4jQjZmOG1DREBodT54NHgpZF9oUldiZF9WQlhjNn0pWW8qTzxLdEJYZDA4Pno2fXlicX5BI20+alduMEV9T2Z1SV9UNEtJKi5WZSszbzpEP2xfWmFXYiZaSmxHOylhaXFxdl4zVjR8IixrJi4wR1prQjBRKktPTyhwKkU3ZUN5''@;'; put 'put ''VE5TSG9hfSEiZ0xsLEs+aEFocGEsYDxnckV1ODZXbSkvdn48MU1kNm5CPjRoOzQsUkM9YTZ8c3syNWdNLDB5IUpxU1h4cWkxX2g3WSpTO31+VDl4RVJYTktOKV90Rk5AXnsmYCNCYTxjZE1zR3VdeTYjODouYzZIPi56MTRKPEJkbUkyIVBCbWp5alhDI0E9JkAxTUxTa0luWSo2aXNaWCIqSEVr''@;'; put 'put ''IyU7MWlnaz4zYkdkYygjazFfPyVXOCxePVYyPnB1d0M6U051Xkd+Siozfj9aaSxQVTJndnd1LGZfRTEiXlBudnwzRixNd2E4b0ljXmpAakhSNUhRRWsqOT9PT2xKW3VCSyMhT25UPHl7eHpRRTVhfGc0eDwkMWQmQGVjYTlsa054dUxVaCxCW3R7OS9JPjF0VHxHc0NBaUNgUltHeGEzM29fNH49''@;'; put 'put ''LEhvQ2tNUj5qImdBIV1VOGpkXSwzOlRpZU9AUSJhZW9YZStsV0t7JUdmUzY1QHRlb0hPXmZHcCFfTiN+WjFgS2lkOkssNGQ9V3UkI3NqYkUydjFxT1FVJSw1Ym0xQ0k6QCZoUzx9YEI9TCNrU2BVVj84X11dPDRZQjAhNEc4RjIpR3k+fEVNa3RQRExtTnMpLyZCYXkiNzFuNT47MkxDbWpfRix1''@;'; put 'put ''e20vSG1URU1zLH1QV1NXSjFmZU1lITh7MS4kZEJlfHlrO1h7bHQ0W1o7ZSpVWmQoa2tqSHI5Vzw3ajpoXS5nWVZLaW00eThYZWxwTEN6JkJ7MzEyMEd1TmZaPH1tVElYLiJTV3FAKjFCT1k9fDZQWl9QNmEwT3NPajlFdFBXclM5cERyST0oZlFjLFRgNTU4SThEMXZBYFc3akl2WSlOaV9SZ1JK''@;'; put 'put ''dktLVipXNHh+T29qS01ZO0luRmN8d2JRIjA9YUZmayFCKWNMJitjQDJUSHdCJGp2fCVIUXByb25CbXNMWTgqJStGVEpLaEBGVFFhVkNyK0NbVm1WVmVqWWM/IThwaGwkOTtXXiwjaSg7Iz4wVWx2fGBSLE9QbX5eQX0yWlhzfSVXOFhSN3p8Rko2P0d4WWcwd11GRTZjR00kMWZadG04UG8qfm1h''@;'; put 'put ''b2szdS5kU1RDMikiW2BrVEozUVYyP0dnRUBra2p1X1Z6LlhOTEFrMmlmbyI3Z0AubV9KaWAsPXlVJkBRbi9LaT9ObkE9bGdvZU0sNGduTmd5fmdeei9qVDF+Yl9qX0trdmlULC9ySWBjUU1XZVZQM2s9ViQ2JD5HOHR8KDFQeH45ImI7QzUyRyUuMXtEcTh1cT56RyVWIUoxY2tbMV5LIWpkUFFr''@;'; put 'put ''LFU+ejZCSWMvSjp2WXwwT2kidlRjTHwxMnolaT9EK0xGPGspNSh8ZjouWDgpdWhjVWVeRGw+YD56VWJjdiR1dzxPe2M0fHJXZHpEdTErQ3xhRihXU1h1ZlppU0MoYCRoK3NyLD09SWdPaHF0MX1xN0J2ZFAhYWwqZjhiSSo7VSlnd2pYQlhbemwhcnZuWz9nUXoqeXhTYFhEWkAwR3lPVCIuUGA2''@;'; put 'put ''djBSQ2phJlR6XW5zd0N1VyJzdyJ0PCJuW0MyPjE8MVh6JihzSVVDclZIPEUzaE5TQyl5eFNjaWUmYGdwLypSZmFrK3BFXW1gTDphdlZLVDY/REdYa3xQRkEhfDFHbHkuRXY1THxjUkV5Q0BlVFhWcUpWITQ0fTppXnhJVnZrLz5GJE1abEAxUnc/RCpPU3xzPllyTFBGTzxie0IiXiJTITlGOmdG''@;'; put 'put ''dF8+XWxFOC88PTRQLnFde3hdbXk8aCJwbywqTz0wM29ieldSWSN1aEZ+KSs8MGZNcDZHJWRtKy43M1VzfllrTUxRNyk+ZGhFZXYzMk1aMCl2eFNhaSx1aUNVPT5lW204bXtBRkJGbHBbRSFHZm96LmZiUGhNU2g/ZDdQWiZmdFUsYlFge248K1gzKUVwWVdWK2NjSTc5NTRwSTRFUiNmNG1FcXZf''@;'; put 'put ''Sj1BYkNKSilrT0NvSy9KdC9KVjJYbVJ5JmshJW4pKCs0b01lKXlAbXdBcmYya3k5d1V9NmJtPSU1PmZLJTdaOiR2aD0hIjlBezdgUypeL0pTOlkmdV9dSlNJPyNQXz9zWTpeImszIyFhaDN9NUtlKmQ4ZTReLFZJcGtKMmJ3XkYlaCpebmolJl1HOU5dOFpaVG10QllhUUBhVFRPTEg1WSwiYypN''@;'; put 'put ''fkpnOWdwJTJ0YnpzJlVLQFdaKU5qbVZXfHZHL0x3IkVPL05gN143eGU4WXUuLFNScFptK1dPKkVmRFJEbi8+NSMyWHU0PzZOQj5seCYlOyt9YjYmZUpOfihUOElBYk1GakAxZnsqQDckSy9Efk4hdiY/Ims3MzxwW2dKfjxgUSE6RzA0KVh7JUhzNU5ebnJEXj1oYjt8eUs7Wl91XnJhZ1l9MCY9''@;'; put 'put ''d0ZtL3t3czw8bn1fVnNYMnFfKzJJcV5Kal9nbjU1PT9nNT1WISkhUnksb3whcGB4SV5CVEVQVjFIS2VycT5fUj5KZENgXW1zOV97T1BEc2wrT2BeTHVubGd8biJnalB0Z3s3NDw3eitlTyY+Z25RPHEwVE58WUsjYDB0MyEqc0ZzZXNsWnM/QXpyZE14ZGopT0EvOCxlYVV3T11VcHd2e2t8Wm1N''@;'; put 'put ''PTI4TEZhVjh9S1BdcWU1WWVSfm8pVlN6UHNPMV05YyNtPClWUXplPzl6Mz04RyFPWjNrMFk+OnpufmhFazF8dyJ1dkpCRFEjZH0+Vk1pNW1oSTAwTFI3ZDFgfnppUTtsbXJecmUkVHZXbnxWJCxLZU5bLkgsR1B1Z251SVg9SytMbD8hYCZLSy87X2doLGJpZyVgYUAsOmhINmJAKGUoSi4kWipJ''@;'; put 'put ''dSlhN1B3NSU6aDF+WjpMV145bzM4aDpufDUyfnw9Z2VqPilJWk5ibHksX1pyIkU5NVdvTUZOYXR5XSpdVWomN2xmaXI6ZyxJLDhpaklfY155SjtZeyJnRnBfWXk1aSFvPXVaN3I2dlJ6ayNfR3Q2Wn0uIVVfU3M/RC80ZXU+Tmp3QWN5KS4iIW18ZWdddlB0b2UyeVJze2t2KXI5V1pmTzR2JjAh''@;'; put 'put ''UzYlc094MFVTUlRFRUdvfmFJQnd9WFpLWDpPfjdMJHx+UVpdRzVUV1VESzNhW25HV2k/ZSpMU1U9YWQhKDdtIipjRn5dQ05uRXZAQEZ+XXA7cUwqbnNMKjs+V0VJTklVS05YT1JVVDFPeGojaChScHoqYWl1ZUF1bU5bUHBmcHciInMsTHVrI3wlOEAkOUhjI0cqQCZxR1Yqc2hdTW9GYzgveWJ0''@;'; put 'put ''MShAW3l+NWd3Q1kuMF5Ab1VvUE5HNGJvUUZHdW5vfltISjU2NGd3b29jUT5EMXJpTkdFe2hRZzI+NTxSfDIxOS5LWX0hbTY9UGkhJjwzOGA4Y3Y8dDA8P2ciejtiUXl0JXEpVUZfbUQ/SmN2dl1YU1gzVDxvPCZ3N2dybiZeJCZyRE1OUTx7WmlVPHxzQSVBXXxCfSUpbSV4L3Y6fF9ncVs+cGMm''@;'; put 'put ''LGxiLHFnWmUsbEBrXVM3ajV2fW57K2VyOHJQJjBAUm1WJHZsaSQ1OFVvfDdPbWRhN1NkfXFjRTt7dyR2ZC5KOytkO2EsME52IylQW34/QXFoOCxEMHZaZFB4SiMsZDZUcT1ecm1HYUlkOnkkJSVtMkN1ZlliUSlXXlZdQWFOUWRIUnBvRWF+QSR8LmtkcztTb1E0aEd5SFBrYGN8OWU9aj9aKm00''@;'; put 'put ''VUpUW2ljV05aXjwuaU8sbGtVOVt3ektdW0ZaVyVMaHVxM1Z8W0AqamF4SVFmJSZaUF5lLjl6aEcoeCl6YkskVF5YUXJudDk3OFJKUmYkRSpNRVlFZ1gxM1lDKm4vbi87QFN3P0ViO3R+WTkxYUB2MH1LOk4+XkVuLCFKRnojezYlS0YzPWZrI2p4MF5nRSt0eV1dQyEiTEB4djc4OmtNJStrZi46''@;'; put 'put ''OD0jdnRibkVWPHk1NW9DTiVHOmczQ0FKZU0sd3BMak4iS3NMNEw6KDlJPUlNRlNNKDAlbi5NIjU7MGkwOHJmN25nSTF3bCE3fUZMYGZ4fmFdbn1yaHdiTkwudmRoUHdkSipyfFhRaiN4aUI/eXI9O1tLZDtoLE0xY1FDMlkjelA+em9Uc0xwailbczdQXS5aW21eTzY8OXdZX0tbeFpuXVZqeWIi''@;'; put 'put ''TkUrYjxULkY8dlBHUFttVFY3e0RkT1I8ZVNeKnQ0XiNFUnh0Qkd8L3pDPVJ7UEJQd3loXS5OTnYwXi56ISokYVg4SC5scmV8dH5nbEo6fDYlSUV2UC5WJipgPT53S0dIX11yUXNgNTMrKD9jQCxgSUpHLy81cyQyajlRYmkkVyVMYXJFdTArNT10Sjc8Zlh6cHcvOnE1WG4rOXFgbGh4XzVlJjBR''@;'; put 'put ''QE89K1AwUGhuUlg1bXs4QD9zJDkmWmBfRykwTXxYR35VO10mQVlVPz1lPV1VVTdpbSFsMjg5N1JyfnVgVTt5S0t4VTsvVmAmOWpvNjY9JjJlLkpwQlcoc2hiOkw5WWVjKzRrUURFPDY9cn4jVFdWfXBaNm4pfW5xaGpzVWFRSHwiNU5hTE0pM0ldW1NRYWB7MmA5PzpYfFY/czgxcW91RD5qJixE''@;'; put 'put ''X0hzOl52MFY4Pl9gJig5bmhmZnJmOkRTUCUyc0Q0LHB+LCYjSS9pQFY6OWI9MV4rfHZoL0lNVjRybHhQQ0J3ISolKnk8ZmMiLCJUO0tOMjp3filaOVY1U29DIXtGeX58JXRjQ2RCWE8iIj5SanE2QVcwei9fa2M1O1MoOSRtLkoqYHE2Oklye2hrKXAlKikhRzB2XkBCSzZpSXUubFJ4SWpiNSwz''@;'; put 'put ''YCxKdVtvZHlPeGA/VGl8W102Yys7Q2tocEpQWWw/ZzFhTj94Uyg/VjB9QUZifG5COEF+byZ9OEZuclFYQzpgKVhFS2U9MUFbPDcuO1lnfXxuSV0qcTVHKzB3Y25bUndZMnRTQlpPaUpQWWJLUDFLOUdGezJiakl9cG9pN2BadlhNdTZkQjVzcW9zSU01Z1ImQVkpcXEkKGFoSl94SG84QWtqQ1RQ''@;'; put 'put ''QmFyQndvb0U/ZUx9Mks+PXlKcXJJLGF0MT11NGBtMl5dRnh2dVllN11DXUpXLC42PClgOEchd0h8dGoqPSFnYjBqWGhCZEVNZit8VVRYO09VZUhGejNYO1MvZWZaQE1odlVlbGNzUyEvdSNZWTBpQ1tbdVRtY3JlTU5GSENSaEFNOjojM09PSFB5Ty5DNCYrLGNgXUUqRGJ3JHQsczxwLm5xW1JM''@;'; put 'put ''K30+Xz94e0xFK0deOHk9NHJYcH58IXg5ZDdmIzYzTzF6NywyYDxSIyRAMHdqaUtNZ2NRRntESGNUdElqZEJJRXlDUHxOIjVERWR5T15rTiFfSXVeLz0xTj9GLChzcyk2amB7YW9sPGIpWCM2QXVxQm5OKExzZilIKToxVS9UfkV7dj1USFolVW5IPV1FKWwhWUt2K3FHU2NoL0pjKyF4UChVaGNn''@;'; put 'put ''Jm88IWE3fG1abStZKn1zN3hgNlZqJmV9bllTPmkrImA8cSoyKypqJSojZEFaIlhGazJxKzVmej1MJUc0UkZqQTMvRz5pJi4yRWg3Kmd4ZEp9eSRYZjdqZXhCS2h4ZjJqSndSIyppUmZsemx7eXA/P3VXYVY8bVI3OkF4PmN1XkNkIypLOlJzKF9uISxVdX13JiMqVWEybGtSUHcqODI9WDlsdDhA''@;'; put 'put ''R1FabnJhYUdDbF1sbXJUX25gUnJoWWpZSygxWUFfLDA5Q3lRVEs+c1dAYU9GTTlZK1okK0NmOEdUflkydHlnVnNvOXoqe3p6TEhIUiV3QVl5fDExeGBlaGltdmIpNUtvM1NwZ0RzcTQ7IitgflpUZH45JjNjazFvIjQvYztRYygiTTlWPypLKyUzRHptWjUsWHdLK3VBWXFxSl97QUdjWDV1NDRO''@;'; put 'put ''YXVxeGRsP0cjd1oiMCpMKy9nd0NZTX03UXYvZ3M7UypnV1k5STM4WUR6TVN3OGFtRFJWRk1FeTZkb0UuW3chbTI3LiNHN0tReGRSPU1CLGtUOkpLbWNXPEAyPTBlOEhmfG8yX2JKXTxlezJROjJ6MHcyclV6T3hMSDM+U2JdaDk5JFN1VUd5VTtZd1o+VHtMRiwpL3BBTTQlbzxFcFo5OkhLKE8m''@;'; put 'put ''QW14JCt3cWguamMsc2AkPyExQ0whKG8rbElNPVBTQVI0Oik3WVg6QitsLDM/cikqaTA3WTt+UTxaYnVpZXU7Mno9fUwuXilKYHx2SShNJEcpLDI+IkskX3Rodm1sSjtfU3omX1F8NTR8Ijc7UEc1cWVURUwjMTl5R01hSmZ4T1VzVnhaW20lWnlRbSR0Ym5HUlZdTkJULk8haCYzRjFgU0VkWW0j''@;'; put 'put ''MHohdSU5eilfM2gvfnh6SE1QTnkqcVthaE1pdG9vW2phTilWcmglSWZWXm9PV0oleSpmOS5UPXJnMiljdWFNOT58L1klZ2psQz41P0dyfTI9bVFIU29yZnd5N0c6SlQ4Tm0qSk5gVXV1WSNUcixuPFpDO09YLjB5MkcyJVJUMkhiRzokOHBqNDIlUntSMCNvaiR7eCVOYmFEZVo+czQ+aDN4Tixt''@;'; put 'put ''KCtET2xJN1J1Vm1nLDA+UWJqd302WWdhYyttWkUwMEwhP1Z0KzJtRWl8LlJnaz41NDQ2PHVtSWpmR2QhOD9AJSk1dj0hNkZAPTdBcUFWfm4sN0ZQKnBEPX1qY0tZKW46cmtEJCMpZjViVlkxbC8rVCU7TSpVcl17Jl5uZWx3ajN9Z1t5YXpUdyZKWEd9UlJAWCNLVk1JZG1tPjZyMk9dO3QwWCEk''@;'; put 'put ''azpMZ24+KT9FZUBAZiokUDxae1o5Qmk7cHNyJlksVFl6eV0pNFBsST4lWHlRfkssTnRRL0Vqe3x1Lm07M3BkP3w1Zj1SYy5ZI0dTXmpoMHZraDA3aWwwY2ZWXzNgNEldOWxxVWM5XzEhO0ZPK0JpTmFtKildUDM4YGsmQV0hOShScm9CbSZIPkVFe2ExbDJAXSt8PlVEZChDa3RxdTckPnZRX19O''@;'; put 'put ''c25UZlUuLDlpJDJQM049JlA9eytrTzw/RzNgTyZfWyRWIWtQTjdWZ1owUUdHb1t1SFJNYWw8ND1pfS87eVptNXhwM3EyNE1uajNaJnx0dHxaPVZxUkYxdz9pLFIyLk89QSZPbEx+RHVSUlM3dnxoTzFAaFAxU1JaKV5scEleMDNoVEshSmNoUjVoVkY1dnsqdGglaTRedDk1OHh9WnxjaTlveHo2''@;'; put 'put ''QV4xMFRlUC41QWRRP29oOFlzOGh+eHhVX115IlN2RnslRy8yM2paVi98R3NCM0lRQlB7dU4rRXk8Z1JNeXgpQXBqdU44Uy4iQzAxVUR4cTM2fSksOmMvMHAhPyxXfkp4NyZVWGt4eH5fRD1jeXlwekp4Ml9DNFR3LHRpcl56VHpadHJZfVpbUDM3bzIubkZPNlkwN1ZGWn1haX5bTTR1eD5VZW9O''@;'; put 'put ''IUV8PWcmL2NHPHN4PVV1STVtQHA9Wkw2QG1ONkdEMzhsMFI2cz06JXY8aV1wWigjRTsxOlllSVd6KGkwPTY5RkdYUVd0TTMzPztsUXMpTWh5NW9NfGBsQnldJSpRMjYmO09GXmhBTFFpO1FoUipEOW54Ukd3dS83Yy8+QHdodHgxMXhQZDl8OlkrciEvVH5UUGdEXldgbFR4MExqNTtZfU1XbDNx''@;'; put 'put ''SUVHX0c6JSV2KHclYXc/Smk6KjlxPytkcXBlcz9OZVBHYCZiRVQrSikiRX5ZTjVoOSVQRmF+bncxLlVuPXF3algwamNwV3IwUiZZN3E3RyxWM1BeUCQ8ZU5BOHdxO2pbWzVLIWBgJFlhY1d6TjkvbUUoR2diVShjRUMrSW8jdHNqQXFXJWZNKk1mfHZoVEhLOzpIUFN8OFtFcmw5Vm4mXkNqJj9t''@;'; put 'put ''eDwucSxHa0Uuajs8Rl8kMDJfTGFsPEJFL2kocjhfVWd1QDNWW25afWg4cTh3JmElIjxLX3NlaTVHM3RHWlZkbU1XfCsxMjhoWVZbPHFUXmx4eWFqdFIvTGkwRHs1RFY8cikiaTc8Tng0OExfWi9OOWlkTyNTN3k3OnVYSD8vZUBVZUFkdnwxYGAzJDM9O0ExRGQmXlU9cmZwOXx+cE5lRCNMWltV''@;'; put 'put ''enBKfGc3X05rMi50VWVbUDNXT05mdzw2M3klekk2PENhTWFeaWh4YCQrekx1PVAlNWdqbWoyWk8/U2AzM0AzXz0jYzZZNndOLDUpYkw4cEJKPEMjMyhQTHxdKTN0OU5+S3hFOjVEKTVhKDUxMixOYVIwSWBeYTh5aV5xOFBlKnJVWU42MmVKZXZCbV5WNGpAazh+YDd6JkBWSERtWlkrNl5uZSR2''@;'; put 'put ''WiYiMigxUEZZOEteTDBFbmFGJSY/M1lMWVpxYTQ+WT9XIzk4LjdhJm1FeVEvJjkxUEZgMU5oQn1RSVBQfnQkLD46SlZWWWtJJUdgbFpTLEtvaihQezY6Oz5XRFlFeDl4WE0xUC5tLCZmVk01TUV1dUI/MV8oJS9MNFJIfFcidG5IM2ZtTG9jKkRGczViLFc+XkExaDREVlUydz1sflF5eU1SZ1M8''@;'; put 'put ''ND9IW3Q3en14cipxYixxbmhbL1BJNCs3Rn46bVdyKlgjLn1hZSw+YiF1XzFMVU0qNDB1ZlhqdXAzUC5WUkZOMjNnQ2Ffc2pzdTN6IjlKbCZpc1hkL0g3JjlrQlQwR3QlcndEI2BGSG5mfjFxMDR8ZkkxSzdqfnhhRjBHSU57cTZxN3xXcGtiOkt4ejw6JGhvQzNoWnthQ2sxTXB2OXdESix2Z1BW''@;'; put 'put ''Ti4wcT1JK3h9dTlMRkZiZFNuX1krSF9DPCYhaVZVdzpRSiVyKFcjSjNTeU43YEpqVGBFVjV7cT1HK3RVXTFvNnZiPHZYUmApR0clV2NAU196UCVGO0kiSSF8UkZzZXxMO0xxTE4+Xi9bLzZLNnhnMCpbTC4wfHdvfGp2S2pPYVhZRGhTR0tWZSs6byg8clsvYkRRYCZtRUB5V2Q+dzNeYWZ3QUQ0''@;'; put 'put ''TVdmMFp2NWZNcjVpVDcoTnksOXhKWEwwfmM0ZUB7PTJNbnpWS25XSTdTXnhddT8pTU56PCR7MkREWCswWn0jNFooVXxTITlVWl8hQCpdTDlqQFlicmtZR18kaypKKjVpVlh4bUtNe285fGgqSE8kfWg4Vn5mbj1LPnJTazxWcHk8dklnSyJZUXNgSi5eKUksXiIua15lKVFESVReRyxaQ1hoXypR''@;'; put 'put ''ZTduOHMyPE1pYF0sejp1JXB6IjlXeWtpcGghfmFMdWo3RSg9O0lMS1lddlR0N29pQ1UqZHRDYTFkeTJNS1l1RXZ7SURPMCVaNXhZRWNRVSouL2Rjcz8hO3pddTp3bDU9dWU7elZKaVZTWll3PDRteCFoJDovbSRjWEhiWU5HOFhHM2MqPFElalc6RyhmLGsyRCx1IzkqaWpOVVV3QGNZancrdGM6''@;'; put 'put ''TkVuTElKbTpZRGR1JkQze2taUis2bHhoQVpFVShgKjU9JElzYGFIWmtLJE14ZWAqS0YvdXE0UyVJMTN0NUYxT1JJZDkzfE9yU2wzbzAhcWpQWyouLmAoRFFFUGlgWCRqMzlSeFpmPE4kQDouNCN8Xl4iRzY9UE8+dGZdVmFpQCMhMEkqem4sbzlwSjByfUB3ZGVeRnZ4OmxxY0RmVmw2Jkh8VzQ0''@;'; put 'put ''SU1SJVpgQmh0UDF1X3B4ITk9aHEwejxuWEp2RnZrVHM2UTcpYDFmdjteViU7WXpVLz12T3JTbDp3b1RgbzBWSjI1QDYxWnNQakddNFJHbE02ZkV6XWNBQyZpZnh4UXVUTjYoZzlNdTp9cjxxWCVTb3MldkJ3MjNQe01dcURlbV5INmxFKEVbXSRwWDFpSjY9ZV58QmNgeSopYXw2Yn4iPisjPl89''@;'; put 'put ''ZlJjJixMR1tXYUZlWyVzIkYyaDBFbClSL05FYi9hN1UzRldYTGp+RF12Yno5eXBYS19EUUR3MV1kK218VlsrSCh9MiYqUTpXMUEjZW93JWA+RyF+WDF5MTA/aXE/JHJ0V1hLXXBqM0ZeKSw+P29TIVI4XmhOK30ya0xIRyxRJTh8XV04Jm1MKSoxTHRUKzVGMEMwYTAmY2twSmgmR1hXWklQTU43''@;'; put 'put ''L3hpLiQjfHxAJHslY28+TGt6XT0hd3wkKkhlRU9VX2RuN2pUQXs7ZnRVQDcjdlEhZ0xkVlVIISMsektldXo7QzphVjxFSDYhO15TKSpJeEglcWcxIlhsNnQxKjVnelpZNCsuWiUoIys8clsvSXdWSnlGdVpUd0FNYUpaMX4rVHQvUSZQWVo0K0laNXhmbntrJX5CZmdJdXBGJnFqOzpJIVQpOCEh''@;'; put 'put ''dGR0d1ViM3ZXPVE4eDE9UnwsektlJlEuZCR5M1FLWCh8Uk9qdTsmNUJxXjVoRDIufSZEcGg+YiVoZmRTWj1RRlBMRUR1T3pWUywzQChtLEIsaGJ0VCNmIilbaz81Jm86clRlT3tGYWtNO1VwVFVjTzc5S0QoM0I3RmhvfiE9emhLQHtLIntdW1o2Y1B7UWg+Z31fTkREfV5ddWtiNGJVXiF4aGVz''@;'; put 'put ''Z1hpQClKYF9zOTdoLmc4ZDRFQGJuWyV3Q2BbejdKWUIsTj1RNkhGLExZM1ohLyVXa1I5WVBNTjdmRE1lZTZ7WDEpMHROODtEYC86N29lPk0iLzhdZVs6TlAxIXhSe0swQzB0elpIKGdEfkJmPldVNHl8U1NZc21vcURDYzNRRiYmY1phTS5gbDp7Mk5bKmckQEYwZE02SjZJTj80aixMVnJ6UDNE''@;'; put 'put ''bC4rM1VYJSlYclN0eT54bUdEU2d2fHZzbD4yNjZsQitEM25oOVBNcSlqKF9ZY2l2ajosP2FaNzBRdllOcERCWzp4MnFpaFZqcHNFQVRFWjJPKUVbM2ZRJklobVcmN11YYVFuZClAVH5ZJnV3QSJ2VVJTaV1Me3VTKygjeW92N0ZjTChbfCtLfktQNzEpYyFSMzdvbmwzVHdIb2MoMEB1d0RRWzkw''@;'; put 'put ''fnJ6Yjg/VyFzT0V7aWQ3QHJJezg2WU44dXtjMVRUOFEsWmJpY3xGU184MjA0ZlBTSWs2UVs0NDZna2N5OkI2X3FGMltGMjNBY21IQjdBd3E8QGdWSlZmdEAzaz9kQX5MNHwuIVNvU3FRXURrMChAM3gkbi5WPXhJVUskNyhAZC4pOnQpKzB4XXA9bzsiUUNLX2gyOzpSeWpbNEEyUVt+bmdsa19D''@;'; put 'put ''MTU4RVB8OVE1UmduP0ksKHlfLi8hM2dGTDR9aSQzYCVfN2RWRiw+KFh4MGVqQEtvQWZkNTwySXNBanh2KS5sI1R7VklCTEFzMkIrb2hDdGYwNElrSFFCNTowJkNEfEJKfD1SXzpdOy8yUEJMcEx0N3NxZ308RXksV0I1W2Z2KDVVJXdCdEYifSo0NXt7MDdGOzc6Q0FIQXpWe2pzY21mR0MwN2I1''@;'; put 'put ''bjgvUFNDNEwuVkVzczVPPEElVDFyPVRIRS90MGBeT0hPKjtbUnx9PTlYRyxJbFtbMUo8RjZ+fXljRkxmT1o9NyxCWWddNDo+anxLQWtHW242MSR3K3d6YGsmLFRBS0ZHMD19KkN0Oj9XIXdGLkcsaTtIWSRuRkpWYVg7QkJ0W29QOHpJJGYkdldCIllwLGdgSWljLCI/amhOKHV8KG1oXyltcVRz''@;'; put 'put ''MjxbbUlrcEJLPkRHQTJUayFtMl48Tkg0QUsmfUhAXmcoYCwub3xuRUlpWjttTk1Ad3hLPndQZyVFJU5geD5EaT90OlVuJTJvR3wuRSsjN1s+bz9aPmFBa356VmdnaTxfM1Y4X2chIVIoK3dLQTc9RERnZ0dLUCUiYTopR3QvMjhkJEV2Pl1VNC5IaXREMjtIYE9OJXoocEtxUEwhWEM0IjlmYmpZ''@;'; put 'put ''ZG4hcFdlPlIuRFp8O1NBc19KdENidURWRUldKl95RWUkRV0xX2hJXVklQ2QubnJfQWg8NSE4cj00ckdubitdSUVHUmY9XWFuOlt8OUJ3YSViNSh9bTJQX3dNTWhRZmA2OCZ3WXElREV5fEFgK3ddX11oV2Yhdj9fREdHQHk7IlExNDtmM3F2b0Y2cWdXfUI9N2VAP08zUCVrUmp+V1EhYFJuQzts''@;'; put 'put ''JCssWj9RKDhwIz95X2trUEBOXmtrbWJaOHhzRlNILjspPSlQYWFxc2skS0xKJDBeYmM7aVk8V30xeHdvczsuYCV1L1FeQmpXVV5KMyR4c2tfQSU+IkU6RTJQNSl3NTgoYVo8dWQveW1dTWxRZlFxWSY5KSspQzspY0xlUVV7XVBrfGVbbUBwaT5JaGpzL115cjRWWyYoSkdiQF53YGNFYypdeCJd''@;'; put 'put ''Xj5AV0NWI0slVzN7OGFXWjh8VTZrQEwxb3cmO1B5LkxzUG5hcCw4cX1jY05QXyM4UCEjfEdTMixjWXZ6TzlHb0QveWUwfXVANEolNjNCQmtMKip9bUlTfGBqSmwyTyUsYEJxUiR8QWZuYEJaJFpoalF6YENII0k9RnJTLF1ASXVCWUt9aWdYSGh7K0lpYm9vZnVzRDkyQSUxK2laLy9vTHV9e1k7''@;'; put 'put ''KlRdczxbfFNtKVpRLCl1UHt8Lz8xKzVVTmB6aUtjKjlxPERWUCIxKjkiQ3ROak8oOy9efVsseGhHYER3UlhoY117YkZ3PSFxfUZQMW4/WTA6VGt7T0xDSyx7MksjQ20hbzxSIypsektLT047K3hJZ28rO3wvSDUrYHpldEN8OCo5bD9hfnsiX0ljNTRhJXpdJFd9YSV8JkEkelI/JSRAPE5QNG9+''@;'; put 'put ''bGBme2c+c2lNZSg7dyJXI3hwfWouUlVRN3EyZm40Z1d4ZjY8cjs8Ryg0UDpVIVlhJU9ndlp9Vnd9NyVuX1owWVM9bCMuRzJIaVhpYkJsQFgoMk00fG5rPjAmKSU+d2wueig8bWxFNyIqNV80Yl9Oa1VnRHQhKjspSU1gNFFyKyx4JlkrJnp0Zit3OU0rSUJ8WWFuaGNfVGEuVGhaRU58LFphX1gi''@;'; put 'put ''cy9kXThUVnRIaldWMSJJYk51KH5tRWY1VDVLWG1EaFZfVSZ2OSVlPGVTT1kuUXFbbUE9VzpPam02RztxOUBiLGh2WmE5clgxUDVsfjhbOD0hXyE3bFdOLm4qI2d7az5mRUZeSjNVaGd1M3k7KmMkcCFVRkIoMUZkJjlGe0pUZ3EmS3s8NTJiNHU8XV0vZ0ZDWDQ0I3xoJjtqRCtCbmksUkouTkJy''@;'; put 'put ''LlsmUitSP0dlTGwzKXVfPU17PnJbR3Y9OHVHKl8hNnxxfTtsT2FbU082KlRXZDR3Wnd6VHVob3oyPmRibUk0QzxDKDJ2SHNgQmAzRCIlV0pge2xQMj1vJFBpR25uWWxqfixnaFVqQjQ3UDs4ZGdyYFNnZ2FMNlhxRDxQKl9dI3toPi97MG1RbFVeez17Lm88PT8wbUBwdS5keCtXV2lsXkFpZyVZ''@;'; put 'put ''aDVtUXhqOlVPJEd8dXd5L28oYTFPXllacnwhTXNySylJJmB9bnRSflR5JldRQ1J9dEt8MGVNRE42NmBmZCRaW3VjMSU2eks1NnpLXSwoeGhaJm8vVUZNbkYuYzZFfHRecCpMMj8oeDJxLFY8WU0mTm8uSFhNe3oqVl4kNE4mYGl8U2NxS3V7PjlJPWlxJVZiLEphZmRpRUhtKF85d2NYVUdrdD00''@;'; put 'put ''ckI2X1hPdl4pKlVnP0QoTUBOWCpmKWZ+OXdgZmMjL3JfPDFqRjQwMENkbUcodHxPWH11UUcvPixIbVNnNHRkWkJleCFRaXxLSS80USxCWiFIRjRaPV0oI1QxfCxtITdTekAiKUhpc3s3e0QoVz1KZzc8RWZ4UE92SF07UyZbaEtFXl86XStFcGNgRDphRUJPLCw4UUx4NSk0UGIkT19EPzJoNE1I''@;'; put 'put ''Nk5aaFs/RSQ3TE1tbz5yQ3QqY1RFU0kmc21wVSM+SDM9WFlIN05DSHdsXUZ9dTpQR2g0Z3RhfiwxPnc3QD50Z2hxZl5FKCk1UHxLUiEyVGM8bSFTSU49aCFLPmpCIX0uKX5vYk4+cGdvY2dtfX5WXlJyJCVVZExJVDUwaCkkdUgmRi9bKlh+RDMkVSs2SigoOSxDfTUxZ3FjWGx5PW87P0BxUjNn''@;'; put 'put ''Vk9uJmUmQXBYODRAW2dmNVkkWWFSN0JdZSZGcnhNMHFkODlxUW5XJT07NGdFNGhgL3I1XX43WTh1bSN0O0NGbW5gSzRSUkx4N3Vme3dIVlUhLjVJTF5PbE5+Nlk3ZXwqRX4+MGYlZjB5e2o6elVSQ1N7bC9kPnZkc1JoYThDe1FsV0NNVCsmNiIkbSt4Uk96NGcyUTpJWU1gZCs1d3JURzpuNE8k''@;'; put 'put ''SjJCKEZjMW9GN2hPZU1lTVJ+eTlPPygzRHNWPFo8P2NdRD8wcXJTJXFSaC9qRzRkajptNFcoIm1gOi9kXk8pLl08QHdQaWJXWiEzTlFfTSpMZ2R9NDU8ZmkzJUc+RlB+eUdUJU1CWFNJRTswRjdJZmNfViNkaFNpU3t3T1NzWXt9Uy5mT2lqWy86a29jSFBiTWVxJVFKTihyR1I0QFhjeEldX3pk''@;'; put 'put ''LD8/LzprLjN6fnhiIWMpTjk7ezJvWVtxUmleJkRDL2dzc1ldeno6dVVRVzI7KlJJQTNnJj1aWjVNcjZ+LGFTSUBbKTE2TyxuPWNYQVMqIXV7TT81cVNbOH56Ql0rIzdeV0BweDpKUj59bCQwKDtmZE1eRXs1PWhKQ0RpVmd5LmpGeDVbXS9Te1Z0eylDL1VaYXMrbihOR11PPm08PS8xLHgjKmA7''@;'; put 'put ''Qmw9NDlmMCU6OT57clA4OG5hfGshRlVTcGJNKCFTNS5hViY4LHFESX5seV5TSUxkO1EjNzZ8QFlddkgwJTZaSiwlWmxzNixLWmFJNlplTXkzMVFZPXxCMV4lK05aczNNT3p5Ik9lTUUrZUg3cVZVa11GNTp9dHpIdzciPHEqK2RSNjNwI3UvZHQqe1pSPjdAVEB6XltfQHB9bFVeL1dNdCFYTkEz''@;'; put 'put ''akpqPHc5ckNvMnxuOE1ANWcqM3MjNmZkPGMmfDksSG88Y0BiZV5RPn44bnA0VCs2Yl4obCZsfU9xb1pnW2NYJFgzWVIvOUUjKE80OEUjdzNeSnYzXU1GY3l6T3FxWkgvWzFGVG5MIS50OERTbn0+TDJqZG55JFJtbitZMzVEV3dBays8OnF9VnVoPGZTLlhwXmZ4fjBVTlZBIVp5aU49LElCPDFK''@;'; put 'put ''UntoSXN9eWlDNnVSaFE6OkpqJlg5TFd+WDAqKz14eV40XlE3aWY9aE4qLDB6K0pDRDM5RHE7N3AhWixjMTFSbXFAND9yNllgY3tyLC5IKHgjYyk2RyJCMixAQENNNDZzSl0sUGdFKStaU09IU0c4WCt7Uyw6c2AsKCFHUShRQ3opZDU3bERscFQpXmw/L2dsVEg6fT8pcTptTD1kK3tTZmRURjo7''@;'; put 'put ''alA3dXlkOFlXeUkvWmUoJnMhOTs7NjhoS0h3dj9oN0p3PXpkQ3lsP1NUW3xqKSoqLmlqYU4qfD8oW3RKYkVMZnhleyVjWD0+RHBwZEpdVkQ6KHA8dSFtMiNMKm16QzNQe2lLNSMoZyRSQl1EdmV4KWx3fl8jaXRnKUxTRE87UDszUjo9KjF7UEx2Vks3K3VPYmdwJCY7M2FLa0BbUFNzJDRCKyRG''@;'; put 'put ''VXE4S3BZJjZFXXtYRSp4OiEwejY2P2hBclMxVl0xU255VX1IOSIlTzM3UDRIJWp2ViY8T348YU5MNnhvUWhpd0k5TXFve218O2JlRl1we0pqbC9HYVZlKSZvQzM4WzxBOmtmLGVreCRJNWVAJH5SSiwwTVJ0JCwjLmxxX1FdLGZ5cj0mZHxwQio0K15Ae0BLd2xKPSkxRUxlblIjKiRJMVEvaG9g''@;'; put 'put ''Ryx7QCljVXlKY3B1QihKfEBWVSVNV30xfXhETUJhanpZUyklIVZfaixeWnd1cUhwPCJaP1IhfTFXZDNoMHtHWTpZV3wyeHRiIzNObUMkbHlhVjFPTD4yd1ApM2NbakJ9KCNuIX4hJC59IV0wL1VBXjBUY3xXc3xPMkdDQDxkJVJ6e2hFek5kMTpFJTQxakdMe2p9ZUtxdHBYOEw/L2hPLEJudCVb''@;'; put 'put ''TUJpfUhzTE85WGhaO25lbywwOipTcCM8JUc2TFgocyh7LypbfTo/UzBoZCooYmdEQ3w4Q3VDcFJab1RGPD1lTi5AWnN2RlA9cUZzS2VbNyV2aVE9TGBDcF9sI1l7K2BIdHpFcXVqMzxJc3tiaDkhbVI3aD0ic2NBe3xRbGVPRT0rRSJpS1BVXmExbTd1SWJBbzN3RHIwdjFHMmlwTlEwRiRxfTds''@;'; put 'put ''ayRXLFp3RFVYKk16VUA7VDRDMHZ5UHBjekdXcFNvV2U1SVZVM1pKTkRafkNQeEtLa2s6JktIZHUpTV1PRlBkLEd3XnpHSSZGUWZ+TyY0VXwlMStIOEtsTWVGZzVvIXUzWn4/MjVveFhEcG8rKXFtSUUyJHZARVNeRl86bn0hd1EjYlQ5dCFOcDk6fDs2VjsvZkxafVYrO0NmYE9GTXMkZFRXajtQ''@;'; put 'put ''JU1VM1h8OTpMN2xoWyJ6WWBeJiVTL1pLOHc3Jj5ZbDldY19XPX5yL1hiKHVPLmFSNW9jTHl3XXczIjx9eUZedjBsTTI2eGhPJmkoeHYlbkplTjYsX0dwSzliaXpJXlo1fE49KCZjdXN6Oy44el0weGVkayJGY09rPFlhRXgxUU5IYz0vREJ4SzYjQHsxbX08JWtOdE5+bSRPa2I3X01ZdiY1MCRu''@;'; put 'put ''JSY6T0RGa2o5NX0lMSV+JWZhN0hGci5zOmpAR3JFJClsZmk8dk5+bXdOJiFOUTNUbVF5LGhpS1UhTkYxUWg2JGdoJThCIW4mWCZzeUxpZV1HXVMlQnM8e3xnJFBYMDleJiFLMWVNRT0mWF55aEshW3VtX25WQCVlKm5DZndxYlJfJE9QUClET3QkTnMqJiVAQTpke0QraEdWKyZqT1ZhI3VKelFG''@;'; put 'put ''PV09ckUvaXN6R0cvYVZ2fithbU8zW0dFTzZxNHxbeztfU2BAeFtkd2ovODZbJUM0TFp4djhMaldYWERSZVVDKFghWVtpUWxSU2ZgfV5LbXl1R1J6MW1FczVaOHE8a0ksYV4mZ3dHdWNjUjc5VmJCRDw9fCpMMXNkTk5eUj4zaFp0VkBMfEBoelFUVzNAOnJOU2ZgSVl4aEcuSUdXI2V4YmAwRFhN''@;'; put 'put ''QmEsMmhpLDZHNlIlUzApN1kxdSljIXZYeEUjQFYlb1FSNy5bSW5bd31uIWgleHZfVz9DTV86NzMkOiNhVGIwVTtwNVJOU049Lis1fnx7RDxPXiYzWDw7cD1SJDtdVSFxL3s+MDx9WGN7JGUxNWlNIXlPXVhWKGMkN1YucFZ9JHJGczNtUHs/fSleNywmWktQSWFHL0Q0MTxlP0A6PzBVZTNZSj5t''@;'; put 'put ''SXpNOEx4VkxbdElwKyp8eVtmT0FbNzYwalNvP3lrXmRmVig+RDhIdW5hVj1JTixVPHxJIiQ3blowRGRQNXFDL1JqRzxrRHoiRUtFZF0/MXh0OEdub0U2LDFVcHJvXXRBVHQrO3t6W0NoOVFqYyYmQygxb3pZJXIuTWg4dXl7KHhaQ3BxY1RqVSFUaj4pMGNHclVyNyNiflQ5UilgJjp9VENLWXkw''@;'; put 'put ''YnQ0V0QmPDw5eVE/PihgMUNwIXxgWXk2M2I7Rys6cThEUnlkNCk5U3NodmZEXlopejlpek03MlJTZW1iWGsmVT9wMmk/MTtgLjtrLDp3QElNVz9wP15Edi9oT1VoRHR6YmkiYT1uJjtpM1tgUFIhMWpjOCp3JXdRK21iT1F4X29oJEU2aExNTUg1eCM5R3laJW0lVXlOLl1jJlpgfV14RCQoTCgy''@;'; put 'put ''Ok53MzowSnJSTnR5cDwkVy8ufWJKOjl4am9NaS96fF8zS3VOOmlnXlFUXWohVVkkcWJRLDMjfSRFb0BaeFQyOjYoQGhfRSY0JiY7KiQyMEQ0c1R0azhHOF1BVTA6cmMhYjtaakwjXzM6Ryg7e1pfaDgpcCEsQHt1c3plQWk0Q058XnxsKnJZRSYhLE52aH13Uik7LGFvcCJgYjFeJDZiQyk6Z3cp''@;'; put 'put ''KkhbJTUwVUNrPkVONGRlU2cjdmldPzEpPT0qK3ppTlJMfCNWNHdNLDdxVn1MSU9sM0l0QH4zJltjKj53JHpjMU4qdnEmJUhMOntBb0Jga3Y2c2Q2YjpITHw6SExgZEFeKWtXZjBWaElDYF1tYVReTGpgZlZvMVRlcVRsMCw1NiYlMW1mZUlvKk49QW9AUlU0V21ybTdwREY9Q3ouYzJMOnJxeEtU''@;'; put 'put ''bVkuTC9LZUBjNDVWcUtZfD5oWTc5L2dRbjs1aVVaPlFpS2lhTiFRKWRrQjAlTWxrSDg3UCRFOjFMaTFZPVk2T2dQNkJ4c29EaXMmKjlGQmssZGJUOT8xfHQzIishIXFOX2hgUDZCezs1Qyhdd0xlTCgiQiIjO05mYzI3NWF3dm9sYCRHKF9sYCRqcyxCUzw0Vk8kSTMuK2ReYWw6MWAjfkA7cjcx''@;'; put 'put ''Qn5CfnwsdjA0SShaW0s2NTduPTM7YiUmfCQ4RipRNzljaD9aKGlBMVdaL1pHZFs1QE1hLzdyTXFXaWlONGZONnMsITJoO0pLRl06eXVZMWMpcHZlJmRRTWkhOCFnWWkyempsMDBPSllwajgsUXgpUlJ6Vjg7JU15fFMqXnIsMjo1QDYvMzhodzFRaFI5QEVXYSFZOGtLQDpxYEpJdDkrYUJ+JSM9''@;'; put 'put ''NlRJRUlFNGBeaFJ0IyEqVH5nO3pmQTFZKnc+UmAjUmpDbjA5LH5PR1I5RSRPVDJ2K0lBQnRnYkFBR0g2V0h6RU1wWUJHMVAxMSFBSCJLQXtIZyFONXAsaWRvKyRJQUdBQUFBQUFBQUFBLDsvZCNYOF4wJlUuIU5Qay9TLmRrT21zL2x0MlFGVVJtPlpVcj8wMXplcFMyUm9iMVs+MHEjVGV0Oixl''@;'; put 'put ''PFhLPXZvN1VAJDtnNjtkfXIhVCFXfn54MiUvJXFDYyhyXn54TG16XiFhQlRMRSYkMXdOa1U7SGRxOlRWN0IzT1JtR1hGKiglZ1FiP1NAdTlhTWpsM1dNeW13LkVZKGZtMWdPUXVTZmhUITdDenpCaXdZPHdKM15gKz5LcklHJGojRnxoIkZxLzk1VjoudERhNzRFOmcvUT8zPEMkfklGUldrNWFg''@;'; put 'put ''YGxBNX1QQzwhdiFMXl1CP251bjhjPC57enx5NCs1Onk4ZGF1VWBPSSVfamcqbHB4K2hJRE0/aSt2eE07YV9AW1o8PDdhdTByVSpMRH43N0I1OUR3NShGeiNwJX1rKm4jNVJIYDxFUzUobX42MHJmREMpYXhRN0l7e1hiIWQqZGNIZiwyQFhtKEdqe08jTDptOFtVWTFlPElJdnxFI2Y5Uzg9RWJx''@;'; put 'put ''U190Uy9ERypYXjZuajAqSSIqfFo9KmhjcWI7UEtmQWZxO2FhJHpgSnBsSWBONXk4OkdedEZwR3FXMHt4VTc2V3s1LGZodVRgZTMuUSlufFlhKmJyJUA0ezhiaTlRXyspVFEmMXAsSX5sVjRobn5maSZkbFdacUFXKzxbX2ZKVllbSWojaGF1ZzsmMHsrWGhgXnRiZX5KRX05KmJve0s9eXEzNUA9''@;'; put 'put ''PHFEZys3KVNMQGFWPVkqZnVifCpSW2JzbV5oT19LWmpSeVEwYn5tcSlCdWlsYVJCZFpQdD19fHlER357WiZqXlI/ZGQ6JX5oT1BJM3AreVcqZGMlYnB2ITAxQkpfPVteU3dMbmZhcURdQWdjRTckL0h8Z01DOHpkPkl2byYuTGtbQk8xeFtkenNeaDZpMmJWe2pbRE9QNiVgXnJ5KV9UX1g7dXss''@;'; put 'put ''N1JSPG90W2o9OHRFbmhaaFYweD8yPTZXdH12Tig6X3N6eUdxJThbSXMhfF1wZmNLUnxdWTg0Wig5bkFJSn4jbElCe0ppcEo+N18zQyRhazMmIy4pemFsTVhZZUs2e3pIdEl9M0cjR1ZOOV8hTUhzUEtLL1UlfFN5K1tNKCI0TWN0Z3JKSS9mXlJ0V1tZTjM1ZHloKmpdPVtrZWhVUENueWE4fUw0''@;'; put 'put ''Q2EiNj17JX45fEJmU1c4V0BrbW1BclI8KFssInBQUGg2SCguR3Q5JT03M1tkYTd9bX5LRVRCVG9JJV9SITp9c206cEZGdUI3cVNLZUxHcGNsQS4sNiJ3Sk1iSSJBSWQxZVckV1k5YX42YFlYU3xBRGAjaWZAW3ZjdE50dS9qPXE3IXVVTWJjaXdDfjNPYilMJFtKaWJaMHJ3UWB+fSM6T3A/KjNf''@;'; put 'put ''c2ZuKDkmMUA3TmNQL2xafW41dkx3aTk9ak5dWDVrWDhRTzJjJXhlaz46KVYidUNdJl5geUx2JiomXTMxZi9VXmYzcWJ4eUgyVz9Bez8oc04xNEBqJiNWZlpYd2xGdDlqMmFHXzUoZE8vaDpsSmZZPSJhYiViN2gvM0xtQHM3SXc2LkhoKElgVE0oUGtUW31ROUU5NGgzT08jKG1ySj9mdk1XfUVD''@;'; put 'put ''ZG8jMjlzU3ZQSjFUS0ovfE5NZFFWViI7R35zYVpPNEsyaGxQRyJyVVhVPiQsM3F4U2I7Zjh6RyVqMixXWzcoPl4xeTVFdF9pPzlBazgqQURzVWl1QCM9NVJYT3kkfHJpQjdocjtNdGpXNmFITCpEOmlyRGhbImVjJn5UTDBhfm50fG9CTWwwOFZTOEJGaWJdby5Qb0QkbDVEKTZtQmZQNCorN3VS''@;'; put 'put ''Umd+KTNxajBCI0BYLkgyfnY1V052dEJve2diKkFZLG0pel4vfmVyMkpvIiVKIXguLD4lQCRzcVNrOyRjTHJONipWJlUudyRAZWtPeCYkRTouTHN2MWYhNEJLSEkzVlBeTX5kOD5jdU1DUG9uR25dcH0ofTxJaHxNWTc3P0hbQ2M3I28vS092Qkt+LGFKPTlqPklkZ0ExWD5tIm1rRkIhOjJgc3J7''@;'; put 'put ''Pk1IIzxHVE0+MUckfEI1U0gvbSE8UjFjSz5xVHV6eD0xJlNefmtpfWh3PSl5YnBCUkx3P0xxSiZPLnopY0I9NFhDVyFyYT53InApXj9EZ0w1IUM3dTx6ZCg3OkN1YDFyY3xFZF9zLEB4eGE2TnBtZkMrdWUwXmFVISQ4TXc0XkVweDdeNDRUJSRXZ05UIytdanB9W21rfWk0USM8WUV9Wjt8d31j''@;'; put 'put ''aG5xQ2F9SmVsfS5rfWtyTjxhQ1JTUihKPWc4Ry81ImxhYlJjX3Q4ISUzTmw0RDBPeEprQ01ZW0JFLysuIUY9Z2tSdVcyPS5GezJQPV92YkRYNkVNIWg/TWEuODFRXlk3c05jWVQmR0clJTMpRDBKSz5rMFA0RmcqYj8zc0gvJk9ndTlAK0VffTFFTHkkMCV7YF9DVGE4WXZudDxTY3Y3QHVAdGxn''@;'; put 'put ''Syp3RnJOQyMkOmQjMXkkSSMsTTRDM0Q2eyxiWSgvXSJpTHEqaCwvYURMYHhTY0loKUtUTFFibHA0ZlZHRE9HI0JSaVUqbTF9azRxZUpkNFhddnFEd0EwbGtEO0cqKG04U1d5cThBfWVoJmMoRSQkT0NZNGdIc2I5aFFZODNeb0R9bTpqb1hJNztRcjF1JEZ8JGJgb0wha2p4Lj0/X0dnLlQhKm5Y''@;'; put 'put ''OX1VSStPR0VYJTEsTDBgKDolXVtUMWlDaEY3dUU2ait9blIrQlVeW0VPYXtbU2VhaC4+QSVDPzFUY3U4OzNzU2YrVTlkciVmJSFoQ1ZpW31mZi5VOlM6N3hvT3hQYTJlL3A6REU2Kno/SERaLmwmK3MqMHBuSSgrZkw8bllfKWZHMG59bDRDPSxmRyFZW1lWZXpoe301ZH5HIT4oKkhbTnY0WSg1''@;'; put 'put ''LzEsYSMhP3JkbSJrYkE7ejtkby9VM1coTWVzM2VsPTJ1UjxpYyFAQWdUVSh8elV4QCJwK21mRUU/bkBPeWZCREFKOSR+MThxT2s1UDtUcDB2OVlESHtMS2FUTXxhVkw0UDIzRzY6JiMlSWQwVzZCIUM9TjlEamV0WXVgbUwhVS91O009VVA2Xkd5YTxzRW1ffUdSdUNzZ3VkezFYQnwrMSp9WUpJ''@;'; put 'put ''IjRrbSVqSnlWfC9sRHxmZnhPcn4/fipUKSx3NUxrczBaKTNSZSE9YEglYVFvTUd0KWk0IyFLRX1tdGdjIWZnWllZPkxJT3V0UkpaZmErJSUyX119V29XLzhqWWJaL1dGJG55TVFffiZlMHFxd2o2XmNIZS81d0tMN30pPz05bChkNSNMRmF2YCU/byNlZGZrZlB4IWZ0V0VLKj0jP04qWjIsMH5f''@;'; put 'put ''fXRNOGs6dXFbbl8/bHpkUnpYU2MjMmNhMSFIT0pBVS9pW01wSHYlSEJkfD8zZ3d9KE5GUXsjOzNRY156dV0kLk9bY3VOMlgzbU12Rz9pRz4vRmFSdCZDLiYxSktvN15tQ11iNk0iI014SzxwVDhyQlEre1B8RH08K2xqR0BYb30kbEIjSGNJRHQxQiY5PXgmVkl9LjUrI3xFbCtxMCpjOF9afH1J''@;'; put 'put ''clhdQlllenQhTldpQnMxJT1+PHwhKn1JJillI2A7PiRvIk0qcmxMX0N7TklWbXIkdDFVbTt+WlQldyEobUhoPnE4PT5CJixHSyU6OCo8PXl8MTAvT0VWWlVIRGElS3Q+Mmc4fU17WnBKaSZ6SmNBMixmT3BEUCRWT1pNWEg2bWBPX3FLMXgveVV2ZikrRmJmTmF1cF81OmxTbDRAK2R8NyFHXilI''@;'; put 'put ''OXFqPCgkViU3ZyQkOkA1O3RAPXh0QmlYQkBmNW9leU9GX2FoQCJLNnJqS21JKnZoTisqTWR+Jn5UW0VLJS85Lzx6OE54YWVfamw2d1gkQmxRfjdjYzBDOWd0JVU0NkNAXWpRc2Mialc4PUU3LmdmST9PJlM+bWJKNyovcko6RFg4XyQoRGMpY2QmR1lFImo7aHdvVSsxfHhZL3MkIWlaVjcoYW4q''@;'; put 'put ''MDloP1N4fn4sKFtdVz9Rfmh5TTNCJUlqSTsoQ3JYXUQlTz4yQW18NC83YFB8RH0wLCYhZTREY21LJiEyWm0hYXs/OWMra1Y+ezlaQWpuNk9tbm8ldW5kSyI2fHIoYTkpNF93eCFKNFovSVB3ekcsRUkxfXNxeUEvIzprfUVZbmd3dXc1UXg3cmc0P1AwOVFAdkwzd1R0aFNVOF9tVCFzMnl6c3gm''@;'; put 'put ''a3NKcmVnW3k2Smo1PSVgVFovSVh2bkwlZix2al8kOSJxWWlEQGQ6PF9gTW55O0lZPihKKGkrZEd0WF5idjEvaER5XjlmOCtvNHpSe15DSS9xNSxrIW5GbCojWU56Wlp7Q3chQDBaOE9UZzw5IzNDfXlnemA1Lk0kUDlwZkpMNn5+dn4ze0xLWTUoa2owe1hfTU0rOngoZlN2MzI6YkcucGxQe11o''@;'; put 'put ''RTQySiJnO2xZPnQ1OCRbSHptYEp5VTZxbi4lcStzeDdYTF8oPWBiczBybjJtQElLPD4qKSNjVWw1eypUSTxAeEB6cSZCfkJzJkZKZT8qfkMlRXk5WG5ofD9XaCZ8TGx0Qz9Pcys6MV08P2JGRWE4fmBRVCZxKnxqPH13PFBbITlaX09fcFdJPENQTmRzWD82WUpDcSZefVJ7cSMuNHZDQHZ2bE9T''@;'; put 'put ''OH4wVjNLLFllMHtbZ3EzaHlBUz8+dmBTP3k5Y1Q3MFQqJWciaiNZW2lXTDJ1TU19UXZ1bitSTCN0bWl5QypwWyoyOkVtL29JYTNXVEZ4Rj89e3JsdGhlbzlIejZ0ZUokJT1NKFFDWVI1cV4lXlE1ISk+PShnS35SfHpDayRbWl5iTXUyWEEsbDU7JE0mJEtmInxJS1VUQSEyKGM4fV84ZT5PXn5D''@;'; put 'put ''ZzkoZmhWanpDV01vLnR+LGYwOWNOaGRjVXwsMEpPRllzY3RhZCQjPG5kYH1ASVIkP3ghazEkUlRwWileVUdrP1ZGQXV8TGtadGwjS1kkUFNoaFNFYV8sMVJDTkhjakpZMkI0RVMxWEcjL3JsR2EoalttRXBjSzVzZ2RmWiEjNCo5XXxqOihVXSQ9R1ZMSE0jWjBEPm9hKXUlYVB6TyQvbj08V0pQ''@;'; put 'put ''QiwwY35lSyxAJG5dOTl8KF51WUc3ZzNXOn1GNm1gemJ4L0trUnQzQGdvNUJJbyMwJWxIbTltMTJnWmVmaDIwP2UibTdMP1l+VzB3fSlUSnErVWFgM08vakE9ZTgzfV1KIytUZXdQNU1zYjJvTC9JOkVRJFdyN3Z6WH0uO3hoc0lZJlR7elBbdSo8KiVZKyluWFQqLkVjPz4uQWEsaztmPGZXP0hL''@;'; put 'put ''cWBEIXV6JW5LO1UufE1vW1FuRDVyQ0R9LkRAYHZ8bWQ1Ijc1YGZBKkhbOnd0QmZjJGlRRHM4e0tkNDhLUXREZTpRNjBNNlFacix3USFyXXhqK3RQPTFHUyguYm9zRFpANUYrenViJFIyTitUIm5iNEs8bTp7cUcqZzpKcFZ1eD9jJWk7PSUzdzNvdj1NUnhJdHxtJnB0YV1mcDd0TGA0el1fKkRa''@;'; put 'put ''a2I/a3pCWTYvMExJdFVHISpeIU81OmIscHlzfUlbMVBvYFBmc1cmTVRfaTFDRXpValJUZVY5SHw5Q0M6aikkI3ZpJUcqRTRSYUFXP2F7RCRbQS9QdnN1I0QjaFoxYDR4WmB6bXtiX2pHcUx5SVsveHNmVG5JUWkhQ21+bnB7VTlrdiphUVFUcFAlQXQ2K2lNWEJzKVcuUkN1P35rNmlPXWdXQyRb''@;'; put 'put ''PU05UHtmdyoxW00wMU1nJDxyRFA3RzdNfSZlMkhGVEtNTE43TjZrUHxATHdQZDtmTiJ6Wi5eUiFNPyZ2aG5MXUV1JGlQTEIkTj5DdGRXeiMvR1RBQDxKKGIoKS5qJFU3dF9pem13N24qRG94UURhQmckSV5ga3YhWzd3ZyUvNDY8d0N5TXhzdW9rRn5oODJOaGVvdFJOUk59fWBjKHg7QDxfeEBO''@;'; put 'put ''ekksWHUje2E/Rkk8VEk6Z1IzTng0IzheTDlTb240Qz0+ZjdQeyZXKChXIjRbeGg/cG45KiM4KUpudVV9W2ppXjN5fnkwKmZYNnZHQC91QzNvWSEsYF1ua0xaTzM1SmpLdkowQnRlRWhHISY/emVOIjIpL0trSX1fcEs1ZSRuYnZaKndWVjlHbmoxP21mKXo9LHlYeCQ8MUlpKWZ8Y0JeWHJ+VS9r''@;'; put 'put ''WE83VnosLkp+Sy9tQ31rcW99PG9UZyVYVGsjRzp7dThJfCQjJWlOSDZhM1ddW1g7M1J3dz1rJmd0WixZe2Q+fmxgQU9YMmhUKztUcCR6cz5CPiMkWWZ9bjVrcXEpYHlTRT03VzhLNCU4P3hkVmNxOTkiJGFQVkpIU2EhaG5XfktxPTFJdDtXcThFUktFU1hyKFV6Pyg/LFA5RUc1dEpib2htfGY1''@;'; put 'put ''Jj1NXTRwdExwaz9rJVMqRFhvbH5JWFhCdGVyRzlLOiU0I1QhaSVUWj5sK3pIeVQsR2chdHMpWz9laVVmRUZfNjwpI18xMThadmVBQlNjbW9dNk0/Zm4uQF1dNEB9bTI8JHdxdEdlaGBvIkZDbFRqVzI0SmYkNl5obHtrXyxebHU4XT46Oj9NZ2MlKlBTX0dEQXhmb011eypkWE1uWnxdVTU4UyVI''@;'; put 'put ''bztRMis9cE5iSUh5e3F8L0JWWl18PWE3aSEqfF5lcGp3WFdzYi4xKV9YRX5mejFqWz0kQ15ial99R0xiaEgxbGFtRk02U3EsakkrK0xkRCQkRChbbTlPTHQ8MSlWZTowTVNOaD88VSxjWCtPU0VZXzc8JWtDUTM3K0t0Kz5eSV5wI34ySERnezJoKmxoISlUMGlfQlYwQzBrbn5dNXVwNzpFQF0z''@;'; put 'put ''KnQjcUd7eU5UU2xzOXI2WHZvXitbIWJoTyQuPHA2Sy9lXyh4e3lCK1pvIWtnZSEiMykwaFIlTGBrSVBvb2xDczA8eWdtVzpzQ2JQVURDQl9aeFBWNW5mIWIhako6SCFAdF9dRTtsV2MhN0tFcHBaKV16NmBRN0V+LCksREw+OjJ4JD5vb2ZNUyZ1Pyt3M0pSeHFBKiFrd3d0bDsmcUdOS1VFUm1C''@;'; put 'put ''RUsmanI2cm5AU1hscEhVPz44WjFCUHZhenZEJmZ8UGYrZmVyV3VMY1t0QW8pTW9yPEVqYWl+UCNoTk5SOn4hXU5oXy4/SFlOTWtUekIrNXdHbFc1UWJwUD1Ad2p3aUt0K3JYPUJIU0JRQklAJk4rbCgqNU0kTDd1PFQ5UCl9JmtVTjxWX3wibDIlc3xXW3AlN24qYV9dZ1AqbC9dJGoiN3VCPTpD''@;'; put 'put ''b0JqMTMheTkpRHBXPnMuPmYpYzZVW2haX1VMXS5EUDRJcXNiaEQvSTVPYzxqXmMwJGl9OGNbOH55WUh1bVsweGQ0UTVlN3oqP150QSxuW0RRekk2T0NPbE9GfnFXWXI/YUklUlBHRG5iUGk8VyFoNzYhdisxKEUsL1khRFcrXVtzK11mWCwkdzl8T1lfeXRyQH4+QSY6XmxLQ0p6YlphbUc/TG5C''@;'; put 'put ''XjpleGhgQXosZHxMP3xBdEg3VkxlY0AkZmFybHIzVSklRlVMISovSHU9YEhtP01bOEhNMGBdfD5uX2VRX2NgV1h0QkQyM1A5W3BDNURGcTluSDhIOiU4QGQrQjhiQkU0Sk1HKVVGT3FdJUF2JXZdUDdQenluZyJLKDhOVDdZTD5XayNIWiZaSH1WN1FlK21MVFQhMyl3WEZaZiJFb2d3I3xkO3gu''@;'; put 'put ''Lj9FUF9bfUpxTkg8VEFpaTRYOjxFfUpUIlNtektBTVV0Ym5PYk1NLmlQLnlzd2NQajtdPyM8bnl0O0A7Y3cvS1F9MER+cyE9aDIkRSZdKE5raCROOD52SCxifVEjM1FHQGVldUd2TmljKnNrfH5BMyRoUmx6Y2xKOS9yM3EjZXg3KFcsIVdLRkVlNnk5Rl5BKFUxP3VTQSR9ITdRO24hQ016UEs0''@;'; put 'put ''JkJtY1V3LDVPSiJtQGpfdk1oIl55VHF4OjFOaXdeZV5oPjgoQU9IalFMV2Q0TW9Vbkp1bmE/azA3I3BQZ1MuKWc2XzZrQWo1bTFiLm5YMmRjQHYvei59KEV4aVB1JnBYJVR6SSgqPFZuU3QqOHE1bSZLQFJAdFskfnxUcCtlRVUrfEEmPl12aDxXRzlXYjt7Nlc0bEl3YHVSbGtrc0R7Wn07cXNr''@;'; put 'put ''Kjx1UHBLfEU0MGxpazZnSXxdb359LDJecT5XfDFLRjg/Slh0UGdzUjliYkhkUnZAKzwuZW86X1t0RkIhUzNYXXUuO2xoaHkmZSJjYWUiR01uWWAiNFFddihrXTFoaGVZOlVVL0dXTk8/WmMyUkBJMzchZWpeQEgxdSlgfVdlQChmNW9KLGRuKSg3cnRDPj05KFR8Y24hS0A6d3prITdwZ0xmciF4''@;'; put 'put ''KXF3X3Y5LD9tX3RITDVSbTBFOGU0bUhTQ28pKjUvWFJhbVEiM21aYyNwQjBHWGttP3p7cFZ1JVJ6SDtgd1k7PXtUMVQvXUdSVCFTWndZbWYlOTlud190T3U0fkt1bjVuXVdOVVRlTTZXXigzLEciMUVuP0tgXytbPUQ9dkk2RnV3KHtDSGA8InQhezZ6TE0jTlFobHBEUWh4TVcpJlouXUI1bmp1''@;'; put 'put ''TGI2RkhBTXlSfm02QnhpX2Iwb25dYXVrRVtmNVRaRnB4MWYuLHA0W1A+dTNkelJATng8I0VwaGlVSHM1WG5rXVVKcipsNG5RaCRHVXRzTT5wI1FPcn5TQitDMDNAdUN8QXVeUmdgUy5DITphREJSQWFxbikjXiUjVUFeblJVdT5sZjg4RVlxVUFObHVQWn5keEddQyl5M3JoU24mdlMqPHBCbHt7''@;'; put 'put ''L1ptI013UC9eXSNgKTNCTkBuRG9bVkZlakRXenhGWFNWUiNfOURdNnghNzhEOX5tXnI/OV55JHByd0U1UHtCIi98TVtOSCtIIWs6dlFeOVZgaTk0Qk5SMz0ldW9eIlQjMSNQLmo0QH1WOVNpVWNkZEklZENSMyg0fXhlJTcsTzlVZF0+I2M4d0d9R2xeKTdgVyo+Mnl4WnwhUypRYlRSWih0TkNv''@;'; put 'put ''d1RGMHJTc35SXWlZfjYuXigxPzRqNV0sNG80RlYyb15gKStSMEA4QVZGUTRvcSg/Yzl1KEk4NEc8InBldG4/PEdOaVcxMmRjLmByTnciO2IrY3FiTzwrMj50KT5yVzpdeVZ5Zjo6WlkrVWomLn1iR2ojejI8WWNFej80WWo0Y0Zaa1YiUk49JiZTaTM4YGo2RSs6eSJaJW8hSDdsYjFKVn48SG88''@;'; put 'put ''O31KUXlYS2RRJjc6VnZmUnZQX21IPkM2X2Q8VX0/fnZtTyFjMERYLi84Q3ZwMVhPOXdmcEkkbkRTcTxBJkghNDBnJUhjcCZyPzsjUnZkUTpHKnche3pGMHpYTDQiP2ZoaTVYOEkvOztOJEVLeyolJilgaWVCSDFkOzZqPltaVSlJQndJKiMjKlRrJTNqKjdWKmxOMUFTI3k1fWc/K3UiaU1WJmo9''@;'; put 'put ''eGU0QDs+ZFk6amw4VCV4KmdgaGRnciFiITFCPjojfjljRGRKdTFlJkVgZU1obzlAWDhDWD5tRmtWej0vNEpRYnkyKnVvfHV9UVpeaUpHXldkaSxFKSksaU9tPkFOQkJDa1FvfEBeP0hTfjtbQ1YqOGo/cDQ4aD4+RVt7NlE0UjMmeExGYUpPfntxdW5rJDFGVyVKfUs1eyNwaj9YWXBoRnN4YHJw''@;'; put 'put ''TlEuYVlObTVfSS9jUkQwLmI/SDxBai8zOnAhOV9EX09+Q0IxdmlodiFaUWtpNFF8dHFAO3JkYHl3ZSxOdT85eWYsUDJxeSs7MjtRdlkoQVhYVUUwd0tkU2E8RTJZcyE5bT1rODZFMT8pQy5TJHs4aWpdbnNqWltqQWokKVZJN11nKVA5MElKTjc6fG1tLj5HcWF1en1dUk4rIUFuTG9hIXIqP2Uv''@;'; put 'put ''ZDtPVSI0YFRidUE3Vl9TKnAmX0w0QkQocXNPanxvOU9QfFtYV3loUWZvJD0veyoxQkJaNXBdIUs+I1U1eH5KZUZINnp+NDspcSNbZTVzSHF1dkZuNUt9OWs+c3ZJMVUwXWRhVER2KC40OVFiY1FucTRZX0QmS0ReVjhNXS56MzhGYyR5KVA6UjYqVnJJXUVeSkk3aSpCLm04dXhKeGRlJHFhX3p3''@;'; put 'put ''TylSKUghS1JMZHd5LFB1UVZXPCRYQlE2QmFPQmJ3ZFdXRHU9fmRzbFN+X3VHTk58MWBCW2dTczpNPXNXXk5xL3QwK2JZLzlJPkJXLltdYX5dTjlGVEhHV2N1T3UyNylzSmFtdUxEdm0hYyo1bzs/Mmx0cC9BV1JFTyNyNmhwVVErcn1LYUpXPnczSHI7cypXRixtbjQ+KUhTUkJQZDVeLjZRa3Fg''@;'; put 'put ''eWl7dT9rPHdXe242Mil5ZEdlMyhLK2pzK3xyKkpxaSUraSJkdiw9SkJgcFU8QzolN0o0NFVsLExgUjgvc2FofGcseGs/LyVgKEF6WkhQI242dzlORy92KlhoczFJRDpAZ1dCU05yVC56bmYvVEpeWWovTno2KTNCRlFpbjc5X3EsODU2Zj0oe15CXnh6UDJaSihUNng1WTJwUWliOChJcD5RRzp9''@;'; put 'put ''RlRzdTAxdCp4ZDRtP3B7Jm9JdXg0UEVUMEtfK35BeWkkelRFQ2BDaDZFTCJHcXxZLz5LK2dJIVFNP2wrWiQ/LnRbfH5yMUlQQyZHeVU3ej5tem12Ym80QnJPdnEqfXk9Wileem1tR1tyaUFST25gaENSKE1QN3FkfnIoWy5vRm8+KCped0VmTik2U0Elci48a1luRkJedkM0PXJ0LnZZUkV7Z3c0''@;'; put 'put ''eWZfSV5YQjtGO0FacmpSN1tkeD96PHl3bjdtezNHI1VHK0o7fDdMcTozVU9fK21iN3AqeSNpKDBXQDA+TWIkJUtOaU46fHpxeS92Mis7RCYxI34lSE0zIiF3LjkwLGY7PlJyUVdVMVhETmFsYDMyaXQoUU5Fe357OTNNaUg0bT12Yno7V3kvbWk8eE51LFN+NTglVilNfXR0bThrY0IvXkF4eUxx''@;'; put 'put ''XU9MXntbaXcuTEp8Jk5YT0RTYW9fZ2NUX1Nsa2h6Sjk5fDdCY0VmSEw6bDtuJjs2NzslO2N8fjYhbj1LdXg/KEI1XXhYWns7LnYkbSZDOT9KPyxeQnVkQG0rN2N6OUhMPm1GZXhJXnoiSjdSajRZQTRkK1IrQk45Uz50ckBDRWRUZl4pbUteZTQzOCV5SjpMejZmJUohXWkkTDdQO01ROV02Wi8h''@;'; put 'put ''dzpmcks6TD5dT0VhVl15VV43IS9kQ35oODdNQXkjVnJBNSNDRjhHV0JrKmhFZT5WSltPRHpJXz87I28kTi80aDlnLiZLIilrZ1Zncz1OTE9lR18jN1cjbGhxQUdxaWprSywpRV8iaSxoRzZFczo3bj4uKjVtbilwRyIuWjdHSmU5WVgpJTcsW05eKFdpdD17bStZY0JLcWV5cTxkemYqQnNmISt0''@;'; put 'put ''L0tLLlp+cVl9MDx1YXR2ZHdEdzNja0g3IjM2M3M1JjZbcTtGXlkmJCZhIz5qTn1adGg3SithWCpaYnhNIllDV24oWGFlKz43aGptSGRDKyszXVl4M1oyQlZuRWpidE84bzduYWAlaTFqSUdbREtLcmxkZkJPeEtSKUcrdTU6X3RMOEY/TWd8YylxYC5MQ0U6Jj5CU1l7Z1dLcEBjaiE4YXpvKG1W''@;'; put 'put ''RWVbXVZCM29IZ08jcFZ4MmNEdCFTNmkralQxaUhgV3xvRkxxVyFXRzkqR0NgMjJxY0loeGlSdCV5VmhbWCpYSyIsXz9iPHxUL20me29Rd2h+NHltQzl6YSlgQ3hEc1ArWUZ8LG55VjYiMmtxOjo3MXJYVmBfW2chMmtsd0VQX0FdbEdVfTlAWTRqM11Tc0ldVXtILn1MT3JbI1RYRUQzIjM/T2Rj''@;'; put 'put ''fk5EMFJmNnhwfk13NTY0KUsuN0w4Ll9iUHQ6MiklMXN2SjRzbzBYVzlLYiFFc0IjYmMwZ04sKyhrIVsuVE1acXksdlBvLlgsQS97WkJzXzkyYGs2VzF3TnlLMlhLbE09bXEvVHg6dkV2LnwjXm4xblMkclJoMlViXjBddGpWWGFsOnhdezlUbShhMkM+PWdYUDwzOD5RfVJjfHI6MSVuciltUFFL''@;'; put 'put ''X3F3JUFlYGEpPDkvJnR3UVlMZjNsR3IiQSVRWW5MKXt7K2F4cG5RWERNYytmNjN3b0h2IUtwNjokZUtYZyttRSlrWTYxZWBgeSlvZFo/ZyQyZmVGK3ptY1leTzN1TUxvODtuM3g4dVpiPWMjekVicVFVczV4WXUuQlVzUC4rdmJHaTVufXk1TTlIXTQ6XTl3QHBqPmZmPy5qPil3LFJodylDU3B5''@;'; put 'put ''Zk9SL1VKbCpPcjRXPU97Pk9HYF1pR21+JC54QCw/MEBrSSlVSnopOHRsdUNPSHtSdilaM2UzK2t4bnpJND5KendYe1dgQixeSnJbfVMyNl9eTiNgVSFiaSQ6LDwyazNIRDRLUCU8bWkoKHpEMFE/Zkp1NkY2ZEwmTkgrNzpYYTpxIVlCRS4rK353ZjxAdGVLXjtvMzdiQC9IV19XUVVFM1Bvck18''@;'; put 'put ''KihCeFVYR1dYJXNfaXVJfTxFfk4wU3c2dExEXyI6RFcuaT9LNnhiWGMySSN5T3gqTGpUfS5CSU1zdzpYPGl8KkM9Jj0yfEp7RXIofHhIJXklelckPWsuT3pNVXpkd3w1aj57Rzx1MSFRUDJjMn5Kb1NLeG0vNlt6Zj99dVNZNGFgZVFVc0J2dS42WX1kX1RabWBaeGJXMlFLLC5BSUl1ezZtKn1j''@;'; put 'put ''JmF7SVBuRHs9QyFfQUJPVnlOM1h+M3kwI3k1OlZ0Qitia3l2fT9+QT5+NHhtfjt6IXR9OlFOQ3Y9ISoxLmZHPiU+eEttXzh1LEhxKno0YT1qXjFwPDh6ak5QWTFDT2NTM1A2JmF9UGx9PF06MCVwVEBDcF5MOT5XeHF3V0FRZnQoRHdueXNYPzxYNC9iQGVKUjwmaFE0QlBTPUBHbjtVLyguTXcl''@;'; put 'put ''d2luUjcwR3tVb243d0NZRWE/O2xiXSksZ213OW59MSN8OWxxZX43L2F4VS9QfT5jVFoqImI0aj1tWjNlfi9FNzxKU2QhYjZZSiUodFZAaDd6YlNKL1RIQC41flBqOkNpIjY1MFsuYVJoRSU/Wl5odEYoa2l7aVVSNnAlXVJzKndsZChvbVtwMyVVMHc+YWxKMF8qLjZXMzZENSp1OGRbaWU5bEld''@;'; put 'put ''JGpBPXFbZ2clMXdoXWpRPzsjP2RAXzY4dEtOcDAkaFlmUHFRMTAlWjtyeHJmdV1zTXpCfCQrekNLWHk2bUAhOWpIJH1JQ29UM3osTWJJNWBFclc0aG9mUzxjVnBaZi9QeT9rO1BVM0ZdU3VJbkBVNnw3TVk7ano2M0wuKVUyLEplLFlQJU9XaW59IWFVaXp8QERUTltIZE1qWyVvWTQxSTArOkRv''@;'; put 'put ''ajImV3J8I1VXREA4NVRRO0k2Q3N1Kiw5dDdBalFQbCgwUjokNTxHTk5ldChUL0poK2dARWcoVH0vb1RycSlbYiJGdWZFMz14Z1tQLiUlLDtNVUc3fipYPVE+I0Bfb1I3c185JiVUMDFgX3docSJLVDdSdElJL30ueEl2JX5ocEt9QW9zWj12WCgsb0ZMTlkoXmc7Kix2Q2l9LG5pbX1BRXZOU1tT''@;'; put 'put ''UjlkKS9LIWNXfD4xKkAiOjIhYndAeHF0djxmdFBUNjJlMUlgWT5UOFE4P2ZJV0dnWWFEW3ZLIV1lWkJWLkhBeHcqVl8hcTV6ZkNWKytVM1tad3xYVzRfQXM9TW5ZfTVSKnp5YnNWZDREOS49ODlXamBbSjJAW2xdTUQve2JPeFYoQyVifUxfQ3ZiVFhOZk49UHxRam51eXg7R2ttOC8oOm1HISFO''@;'; put 'put ''aChhJTJLKGN0LHhXJGF1IWdfWC9efUU0RyJnIyYiX1MwaF5XNjU1NUxOOU8pJmhCK2BkYyxybnBPKCs/Jih7b2Jac1BATDsyfEU0RVUhQyVRdH0wZEVtXn1XSGBkMjBTQnhnJSopdXBNZGZFUD04cl5EVzVuKV4rWFFCSWlSNkIiUWQpb09sOXpXak9jbT5VSHR2V0J6Z31tPWloTGZ+dzFgXjhf''@;'; put 'put ''THohbl56YzpXaUNhbnpiP2xZbms+I2BiUXEjfCg7Yko5QGBWTDtMdyRLSkIsSmc2WzRZfmtTaW8qTXpmXz5dM1lyJHBRbmlLKz5FPik9IUlBYzlSaW9DYC5Yby83WyZLLGU4KlhEdCRhTHpQQDJwOjY/d3BKJXY8cjRHUipkNmQ6LndlYDRhYzJNVU98Q0xTPSVMNkhkSFJ8SW42VlFhSldIdUwp''@;'; put 'put ''T3Y8ND9seVpqOylebFplPmMiIT97MCMpaT8pcSFKNChmOSVNeTlHS2Mpe1kyR2FaTXRSVGhgOnVzbER9V2xFLz5EN3orOjA/SW5MZnNmX2UyfC5YJSxSYygpQjRYU2tsNnlqPGNaP3I/WlF5YmkjPTFFND9wOXp8fjs7QVZOdD5PVkRmTz5qYlcyKktdaEZIJXErOmN7d1YqT0g6NywrS1J6JXhB''@;'; put 'put ''XVMoPHk/QzI8eHo0fDZTdFhHdmx5V0hYS1UqX2YlcmQpKFNQUCwoNC9NJHxjQnZJPzR7K2MmZmk2bm05cCVPd1NPZ3hvZ009cj9qdzUvJCo1KTZrTCR2MEJoei9gQFslaHN8NFdSWlRDTiJHfk1QVkp+WEoyVmdCbzBjdGxWKC5QWjxzOH1AO3dXal1yKyFDeVM2aFdKenchJlVzaHlmfXt8LGY3''@;'; put 'put ''YkpYVl92VEJCbCRIXW1MS2I/P0tLJFRgJjVFIXI5c0w+LE13Uip3QUQvJkBjLFEuITs/MDlzUnBjUyZePXIvbjJ8L0NGLjJ5fV9bNyU+cE4jOT03b0lkK1RRbjNWWytyQXBCWUhNX309akxdKXt0Py9fcVpyJSJbcjJ1KGJgeGREfTU5RElhNF57R08ie29KdWJneXckSnhIVyRDLGx3NGBdSnRZ''@;'; put 'put ''KEx5a319IWVaZTFtPHI1cyxfYD58K3kiVj43TDVfJDtpUzlXKl5pOFJeODJlUHRyd0U8eU9nblM+SHI8U3E4S2osOHQlNWlwKSRNdVJMVEcpb3xbZHFda0JPTDFvdGZuQ2gkb0tUNFRrWEs6ZXNhUzRHS1hISWAqOXpxbWVVLEciWzVrPnNtWEVQdTVLQlpkSFFFKGl6I1ciRnNrZissMEdWRl1k''@;'; put 'put ''MitvVTJ0Kjcxfm1+TzZ+T14iTSxAb3Budz9vOmFiQGY2b15iTHp6a3taP3ZmLFtbWTBNVCk4bCJhJkBMVXo8NVddQlhaUk8zL28uOGkzNWIkUl8jYyZuV3NyT25dekQpNTJbbXd9MmJ1PHkmPF1XRFRLWXQuRTZlZ2ElYyxKJX5KL2ZSbWpVfjk5Y2RHVytOcHRyaHBVZyJ+fSxqMytxOWZ9RFY3''@;'; put 'put ''TkIvMX58V1AxRWF2Zzw6WE9feztIOnYrPTlFcThKSis5Vjp9WFpsMjFvSU5CSk1ZRk1DQVUieno3OTtyNWQyUXhMK1JaeSpDTXp6fGBBXXF0ay43eVE3XiNbWztQUWw0NUkobChHYWlMQ3RVPCx5cU5NNjU2Xl10R1pQcUgyVzNjNCJ8fUokY256JixlTlQlP3RlfiJxazZqQ2svdmoqR31tU3Zi''@;'; put 'put ''UD4veVZdc2VYTGx8dWRmI2w5R1dfRXpSZk9qT2gqeTAxO3sxSl1XNyZyUHkxLjgrbmNHSjZKU3Y0P1p7fixxVzIoMF1uRD0+P0pJKngvb15fWDZ8a21LXTh7JTZ0cUN9WUJIbHBwbkh4eHlpdGs8fGtaRC5LLHJkek5qU097QHtgLF4uT2JwallnOVBYbmtTU0Jmbm8vVWJ1KEsmPU5vPHlJQjd8''@;'; put 'put ''L0tHVnVaImI4bShRejVWV0BKfHR6XzdGaWRAN1ZBKWRzfXVWZW0mMmtaNz5gRDd0M1p9Jl9aXXgmfG09dTJfMk5IVTdCRmNqQ3xYJSh6T2lAbl4ucFB9MnExXSl8dkB1c2VvTG5GezJET29uTmMlWjg1TG5ZaiZpKXZ4TmZYWiNLa3NiIiFvM0I2YVpZMDJTYk9OTnJdNFRiNVUkOFQ2YHh6R0tl''@;'; put 'put ''ZVZpbH0vTHF2UDplPHpbT2M8fEx9Szx6WUF9d1daXWRGR3VWezU0T3xrQDhIUU9TZG8uajlXPmI+Oi4vaGFKO2BsaU5jNiRjeUVjfkU4SVl2OkFLfVFgZFEuP2d2K1RFb3E7dVVVUDw9L1lqajMpemRpel4jRVV0Y2koeUlGME5DO0osYF4qYWAxNE4/T3NdPmg5eFFWfDAzejRWKSFISzZeRm05''@;'; put 'put ''VX51Z0FGVW5Cdik+KCFOOkQyWmBpZFNbJGUyWmBOejkqNmVuKCJxJXBRcjxIWC5MRyZ3XThjZTNySDVMUTxqTU0zT084MWZaRiF0VC5ydHAhfnRLZTcyam1aSnxCOC9HPnZ1dHBedTcjKChffng1Piskc3RAbyhuQy5TUWNAPUVkeWNId0AvXWY5T1NFZ3tDT2RMcCF4bnR8O2BdTiw8V3FaT3Uj''@;'; put 'put ''T0BHeCtESzYsZzpudXYlTE51QTQmW0k3ZnRlNzBdUXl3IyNJcyFRc1R4VHx7MCEyKE1UVVkyaSZZQi8lLFU5NGN4IWs3c0Z5QW5pJExhcGUocnJeeXBtVC49NW9ucERUcit0WzomZHcreXAlW0xzZnUpenhZfHZrXSZOcSIpPUBrSU9bdHpFRkJwRz8ybWlqJEdPM2Q0VztVYGwkOiNqI1hnOHN7''@;'; put 'put ''KnRdclBCSndXSyhkW3FqQmo9KitLK3V+IkIkPU5YVExVP3JZYF00Ok02MGY5TExWOiE8bUkjTylkX1pOYXFJcm1bNFAiIVJKSjYzVnBwOykhNDNjW1NQTDV9Kk81TiEpb1F3KUpjU0RWTTA7PVE+M2kzaSMza1grXWRqUnIpZHxjez5XRGh4aDZWX19waCpkJDR2ZDApK2xGN3tZI2h3IyhTdS4w''@;'; put 'put ''ZU0hTERJIzhdcklaOktCPEcrQ1RRWTZMMGVSJSlgNEtZQ099VSlDKER4fXxUZU1xfF1CNVp1al5mcnR1d1dzIWV4P1M/QEJOaGV2aXNXNDBIeXk9dyI/MEB4V3MiUz19bl95U2pVcCpGL1pyJCg1Q0F1WUFFfDVjM0d5eUtpfWpCVWMyUXpYaSxVdWx1PU1dWGshY0BjYCNCZGgsX2ZeayNPUEU/''@;'; put 'put ''STc/bkAzMTdBMWo5d2kmWTFreGNQcnJmKXc/aDBCKUEucXo8cHhRfj5iYWt3Zm9XTnA2WyZVJCp3fi9kMWAiN3g+Sy5UWkJ+R2RMRVJCS0dieStVI2xIZjE2NCh8WHVJVklTaUF0dGNLQVFvU1Y3KypYLjI8OzsmIkcyVnQpM113RytmejpAXmJ4YnVjY3AuYS5rL3lEdDprPmVEeChSPFtLUko8''@;'; put 'put ''Ry4/Mnp6VUleVDVOQlBLbzNGVE51LjgpJClfSWwsTWp3aD1lYDksPWhpc09NMUl+OUs7WURkWmhQQz9IQTM/O1l+WjxXNCtMbSIsLDciW0h7R1hbTzR6WkNsTWhhTUo2X0RPM1pZdGkhNz5kJihUayghUCQxKGskMSUvMlh3YHZMamBwZTliakc4e34udTN6OHAjJTpZejU1b3o7d1t0XmdkREl4''@;'; put 'put ''ITNFTjRLdV18ek9GUz53ZWxXMEo1XW5MMmU0Y1ZHLmJSIyg/a1BCLkwqX1EiWHB0fCk+YHRZZjtrYTtuc0swN2NEfDNCKFtkYk80NndVMjghdEpDdmBwZCYySUcvPz9SYUtSJmM3NnguOj0rNzgsfCw+W0w3fixhSFsoRnptQjw4aypWMk9MM2AvUWN9Xys3KW9NRHFgdm5CS1hWNSwlNTwvJnAr''@;'; put 'put ''ZXdZQCY4TFM5Y3pWSko5d2hQYVQ3cW48SyNlOmV7PUx0QTVsZ2MzMSgjbXZDLDY1YyZ2K2ooey8jNzZLTDhdMjBdLiJ7NT0pbSlIW2k1YGhmUFdNamFxfHVpemtAZ0s0OCUhM0s3bmR9JTx2Zkh1OVluQHM/YCtFdDElRHNGN2hNSX01cX1CVHglRmt7cU0pe0ghJGdBSzl+XnZoeEM0ak1qUy9x''@;'; put 'put ''O3ErO2w2Rn1Pcyk2KSYlamZCNltiP2JDYns/bDlOT21VN1cqP1swdGJfOU1PPjZte1gzfU08R25tM2h0UnAkRXNrTXAoJHB+V15VaDtLbXB4KW00c2o5aiJ7TSYxTy96K1YhS2RKRyh2UlYpP1JAZy5vNTdRTz5uLiwuKk5nWmkvZHQ0WCouQDg5fmk/YXNQOm1zPjBqRmBJZCpDMDZnKk5TTU0w''@;'; put 'put ''dmksR3NpIkBvWERRREs9IS99WjF+fipDSTVeeihmKy5ASmopRHRGM1NaTCwzKT5NfVYkQSxDbnhwUW1PPG5lO1FoVl9DWDBTS2V0MC5HL1BmTyNrTSkzXzY8YSJ4enp6T0cwbzU7RW9ZbUc1UEY1OFU+eW94Pnc3R3hMdX44YktMdUI6Zy57SWNuRVlvaGlAZiUjfDs5MGUqb0pDO1A0KHdYbFpV''@;'; put 'put ''Kjc5ejFISlhRSGovJStrWC5FPz8/K0MmNW5eXWk8LyJMRihEWUxpcEFzM006RWR1a2tyN0t4dFN+UEQpJll6TXZzYW14VmNZNj1wR11SOVd4NzhhbTo3SlBmczFXe0crXlpwITJ7THFZVlo7TnhFOlY3VlJnTltFQVAuMTR4NTZLJGlhN1Fba314X2x2JkNEIlgycSJrQjRZRXxwRTpxI2pzSC94''@;'; put 'put ''alFOVjJiez5+dV0/XnFfQk57fGFVbUN4MWpQeDhPK2pGKEhsRUBHJmJTZj5taCpMQUo8bVN4KSg1RkxmeU5YSSI/VTlrRkJVKm5vaG9We3Y7di4+WmRZTXY9MFRlVloiKTM4MWpbZEdAV3x3LGdyW2laPEZUUCQreyhxLG88YFY+KTZlNG1qMTlWTF1JQnE+SD9DOmA5JVBFLihGJF8zaUEzZ3Jo''@;'; put 'put ''MjJZbzdJQCNjWWM2SC40M0ppIXdWQnkrZH5LcmkxOTx+XS59a34uTk0rLGp3XTxWU1ZDRn1WSTlURSVhWWFOMXpFOjhSPGUkczdkfDhmZFYoR0dPbUV4ZngqaHExKUh8OEN7Q15OMXBZcG4/UFA4V2ZQInlJY2YrNmBydWUxTyFgZjtrYU4zZm4iN1VTITopMj8mZUR9dVRvZjs9Sjk/PFMwJG5u''@;'; put 'put ''QiVxO2w3d3VmInYyM2BvflQpfkk9WlZ0KWJKLGIlVl4wITRZXkZeQVcvZUdvTSNoUHltOStWdiJzOVI4YmVGaTQxfVYiTjZmTUBuLl0ybEpsYGMrM2IrfipHdGEwRjUuSTYuLCVYTU50WHYjbHskKXxwZ3hdfWRKOz4+YT9QbikkPFhAImhmP2JIPkBpTTFYXXBMS1s0ZHw1dkBCcFBuPE9bTXFs''@;'; put 'put ''TlQoWlh0NEg6ZDpGR0tdNkJbbWprfnZgNndmSiV8N0VkflBbOSxzL3lGYE8vPFI2NlQvT0VyPjltSUF5NklyY2FpWjNWRSVfYileXVlSRzxSN3h4NTNaZCshSHwsNTdtaU9VckljMXZPeioyQWJ8QVFuNX4lJV9wPFVbRV1IOGFgajBPWzhnaHNxdj0sIVZVTyt7eC5GP1gpNytYbTp7WiJZXTkw''@;'; put 'put ''dTU8dXEyWVhrcSgzMzNZVSNuQnpQRHpIYXhzTHVjak1saDdAQSYkRiRJWUNleSNTXzEvV2hFTiMpWHY9IkdyL28sS20+c25mMDFEK0RFWXl3UnM2al45ME4lXUl3XjkoPThxUSUuPis1L1R7cXclIVc0QHF3ImJePEtMPyxDR0ZqZTEhZVtGOF49elpOa0gubGVTT00+LCZPQ3tiTEZmbmtBZXBb''@;'; put 'put ''R3JgLjhjLkQ6RyU5THRfZTNmdUByRkNTR29ub14vSFl8WHYxdjpfMXIjKDBIO1I8TFduayY/UlE0OTAyPW5yY11qIl5FOGJqZC5TfGVjfSVgSXFCcTZTR2tjLFFpQW9lYm43T15EJCtMMmQkcDZKYFpwV1pIKUQodD54QmxlKCF1PFRFWElkMTopKD8hL1pxVXBNR0A9OlRUSHMwTmBnbTFdNDpD''@;'; put 'put ''alhiSiRpPSE8eUguOVh+NlIzb0lMY3NlSz9IRzYrUlU6W1J+RD1WQTZmdGIvQGIyZWs5cUIuRl4ldHBYYzo5K0NtUV94JWtAIU0rIWJuW1ZDV05nI0E0eCFJKSNSSF04fFJ8eTBaNXN8MXZPPilaaDQ3Xih2UDJlLCVMUUhXV3taNmx5fnpDRXE4QlZKcU1xdGA5R0I3PyQlfCx1YnsxLkxhdnxW''@;'; put 'put ''Qk1UP3AvallTVEE3S2ZPeDJdWHE+Yiw0PTBeKk8lRjhCaHxJajZeeWVgTyUhKHk8IlJkRWpJTGl2b01kQEBHOjJqODpVbVVwQks0Mj83a3JacF93N3thQ2t+XUZQczBOMTs6bXBsbjFnPD1+bVhxMSQufDxrMkFrK2BBLH58cFowbGhlVn1XYS4qZiZTeTdrcXghNjpWZkNVSDlRd3QmVDJ+a058''@;'; put 'put ''OyxZR1JHRFk7ZmBday92TyQ0O2VCbDdzdzdbQEteVTxYVVtbMlVSXigwfk1dcEZyXS52NkY2JUB6XkYkKFV4Y1Fjdyo/dWFxZU5SX25+XUFQcWRaUm1pekZbLjdIfSxKOWNCRjJIZi9hKXVCbH5JZU93JjB1bThRMyh6V3tEQHkzXUpVbmRCZTBtT2BUMn1veyQ8Y3xBTyUyNlcmVk5HVSNmODxW''@;'; put 'put ''Yz0lK3IzWD8zZShMS2N9eU5KLD1gZVpjPF1uP0wjWHhKZDNPM1I/fFM2e1M5OFkvUTl7PDg+USF2L1YzYGFYRV4mTjEpPFNpL3FyMT8pdzFbQ2FJWjQlbi5FL0A7TVJpMjMyN19DeXBeWnU6U2I/UHc0IUtgTTBTXz0hc2s0YVc7W0VxeyhbMCtXM29iaDxAWitKWVdwRF1BR3d6Tyh8XUZ4W0VA''@;'; put 'put ''ayFuZmV1PjVkd0QsdUtyVG1hayY4Tm9dXUArKDl7S2B1PkM3Q2dBciN5fXxJVDF7XiNEdl1sTyNiJXQkSHl1XnlxaFt3cV82dDBEYSp2dE9yXmxqMl44OVc5antoRDI1MSpHWl1kUls9KXl2a2FVMEg6U1J3ND06T0x9VnV2TnlOUUlJVGAuMWk6LFd2YGBKNH0zRldTN2J3Ujw2JiU7elJ6YEty''@;'; put 'put ''eFhzaHAhRkQicGN3OEw7KEJ4NTNzWFpvSGB0RG9SM0g4LjBVSiE0eUpXUkN7cTM1Vk5HMXJiOkhOYlVmXnFqLFUhQTJ5QW1jZVBUXWB0an1IYU9xVFAiT3NGKmVyfVhicSRGSytSPltEU0Q7KUBoWzFLJGZnWWE5czV1N190ai8yc2Fuc0pDaiFgTmJofT54UitUWX1iM1VsZWF5ZnpXNUQhb3hQ''@;'; put 'put ''NXNwVyxURDJISnRWaVJuejEmY1oyL2p9flZRQG5uJThpaT1tQ3NkaW1eeTh9e1ZlM2h2SEZvVWZ7bzYhN3JGey8yUi5XeEVkOUw+QDVeQTBaWnNYXiFIdip3LmhodHZ9NmpfdHM/MC9KYD8rKilOQVdkWTVxSFdpSXJNVyY3eV5STkdCSkNkQWdRck12eSMhIjdPMCFCXy5sZ2YyeXc8fVU2YG0/''@;'; put 'put ''XnxvJEh+YloxMk5tN19wQ218WkU5PWFIO3FoVCFFYT98WFlwd3R1TCxVbkR7Ondnc1IrJmAoLGlLYi5ZOVQmKU5bdihuQjRCbWllc3lNI2chJTpobClCbEooYz0oM1gycnJGampQRUBSKlhhPi8iI3VSXj9SOFE3KmR0XmQvUVZ+Kl8kVSY3LHBHNWJUPDRhfVhCJkYuYCpCbzlPdk14OExLYll6''@;'; put 'put ''O2tRWEx7PlN0fGdkIjVKaTt4PWdZQWVWa0VxQWU3fXNTbEklIypbbGNsMGJGckJ6Uzs5VzlXRVYoQjpgRS8hSnxXaVVwcS4xJi9qSDdOODRpP1dleWowU3B9U3NxbFpUYXB4fEt9V0o1InlZUWQ7MEJuVmRgYHRdQnJwPj5+QnR1UFkrT1R5e2lNa0JhMylkN0lIbSxIJUZYTGdVZmU3VyVlVz1q''@;'; put 'put ''enV3M086SVl5VSV5LnQqUlJqVml8QnBxeDBmKD0wfTludmtOUSpqUzA/PyNuMT4wUGlTOC5OdS9mVEkjdn17aXdNKmt0byMlbSxOKnNPQXEuK35MXmU8PklZfnQqVXUqI25XbU0yd1EudEBXPD40MVRwX2Y0QC5RYF5kUjZ0fVdteSxNIW9HVDZlaV9pWnBte2xtZEJ2PHlQakNxKUYuciFGTWRs''@;'; put 'put ''KEpCQWpqKSlLOTF4VjN3byNEXkV2PktrI0JDL3VwUWwoPWg+eXBAYCtoPEUhR2kvKl5CMmx6Q2NofVhRMFFyPVJWOmFEeV1iZXJAYXFJLiJTRW47c2ojdkxXKVM6JF17N1l3MDFiZyVbM3FFekoyWVkjKV9tW0xONVVtWmFPIXltdFVyeis0enJlLjB3Q1tXUzlMPzcsSz8zeHI8RztAcjl+RVgq''@;'; put 'put ''R0IkfHc1M0IwIWNhLjYjRFtfQzFpTGI6WTFIOXAle1VeZFVVcGZ0dF40ci9pYks5K1pBYi9KeyNjNzJidi8qJWM5ajRHSUZwKmJhOkhqbWt8U1BBe3tTfVh9UEBtZitgJilEQU9sQDxAen14VDgjblp3K2dEflo4e3VPN3NtLiR2N3VPbltONWBIQEA4c2E9W3tJKHdmKFdYKCFTbSojZzgmdVcr''@;'; put 'put ''TEU+SiU4aGs5Ii8vblUvTDtqOC5BZCxkUEouJXV4b19bUCw6QyFVVjZHJFMkYCY8UDwlU3skJFZBLHxhUUBjU1tZKDhnV2xWJWs2I1hNU044dWs7KW1KP0ZwWEEhZ3RZaHBDTH1sRFdVRm1jM2h8NndzLkBBJDpZZEs8RzolK3dVYGE0Rl9xYis8I0ZvQnJuTmI1KkpWOVgjYE97b3ZCVGRWPlls''@;'; put 'put ''L2I8KDQ4PlRAUSM7fDJyS3pYOE93TUZSdEwmTCFOSnl2IVViU1c7STJ8OU05dDVjenpHQHNqLF07b1dIc0RKaGduSGxkKjwhbF5We0NeaE4qdDNuW2hAWng2UFRYVT5wKWN6S11FeU8jN3NsKThifHRwRGQyI2d9Pi5paWA7YFJwO15+JXMvWGpzYW1AYE5MVnx3Q0JuUHI1LDksRmkmVix7eE4l''@;'; put 'put ''SCxHW0djNGtqY1V3Y1A2SnVObz5OXlpXMytTSHElQHJELHxCOylsIWRUbCw1cjMubFUzWDMuO2EzeVs4MnB5Ni5YZUN6ZX5tXUQkZ3JoY0slbEw7NUZhYkhoWj10WnVBV1dSJDBFYywwNWE6fVdORFNIJmheL3l9eFU1K1k1eXhxNiV+P35XKjxHRUJdQShFJSo/Ji4lRlNrNShNSEBJXlpyKG91''@;'; put 'put ''LzZWITZvOW4/dnU/WWJndnw7VUQsYmFhfkY7aCVVN3tOb2VoU1A6cE1VSXROJC8/fSxEY3E6WGRBazMlSl0wSUEvXjs9MmcwVjNdSzxtWyYienFyZ20xQFNyVFN5KVk0QHE/O2hKdzReMSV3SmJ7KjJ2UE5CbDx1aHVZeFE6emU2aF08VChaVWg1IXt+KHtTMm8/eDRrdSM1NXV+ckY/OVV1WCZQ''@;'; put 'put ''dl9wem1VYkZ4KH5ne0JLT0xIbEJaQmU7NVc9eW41LlksaVFTO3AxW0N+XmduPWF3OFtrbEZhJkBaLzsmbjBiKmdVKjVafDVUJS5lYDgqRktuNlhZaGdsZDNAOklfMz4qJj4mWjQ2Z1k2LHJlQ2paJGBESUhnanJLeDRAUCRrSGEmNUkyMl9uZSsmWXM3aEdLRXIzRXEoWEAiazJTU1FjXT8/d2E0''@;'; put 'put ''XTc1byhFU1h2aV0wPT1ENjVzUigxSnp6RkJ4K0RtKDN+bzYld1o6MSxmUUVtTzg5ZmIsODE0NTdWODgpdEoobSxIVUU8czdfNSVSUXphd3xbMjFzIUNuRXF7PCkuSkJuSGdvWEFNUFFAKW9fZzsmNCJYbnJFaSMoSyZWQDFGcyt5RGlZKEJnNld1Y115bm88OC5raDw+dHRNPzppfHBtSVVjWWpB''@;'; put 'put ''Zn5YK1EvcklLRn5yQFNlZk57SjwmNlQqfFN1S0N8ajpDY2F0dnApKlpeIi8+YXApJEtdNSk6OmJxQTxYQkQrOVswZE1XYHhtY3JaLiF4ZVtOPiI7K11VYS9XPk0+L3E8MmtIbklRb3g0JlgjPHNkOTt2fSV0fUwmSV9mdCNTU0QqPlFWd01hJl1nfGdnMUx7VmRwenV3W1F2PVUjb3lXL0A4WT1g''@;'; put 'put ''cEhySSYoKm44N0Ava0g0IkFPd2IiQlsyWC95RW4/UChAZmRxfG9CISo8eGpJaEtNO2FwRjhHVjJdJExpTW0zdT9gdztMV3ltYHB9RW0hS2BXUzM5bSRSNGQjd1JPWEtyfn5fTS8uc24pW0ZhdkYmSS9PZGZiI3pYPCguWlJ+OFJgVlBsMzR7Sm5eOHckdUoxJilTISxGRG9SRCR7Vl1BY3pBXUA0''@;'; put 'put ''R09qO15rSWBNX3dlRllCY2I6SEMybnVXUWMjLkttKUNBa1h6fDg7UV9xJk8yalpTM3x9JjMvIkpII2srOGhJKTpmcV0kbTYzRD88Rn19MEE9SEUzTyY/Rm0lPz95UWQifCFkIj9MMEBqfmYudEIyJkpWZ0Z5N2hiKDUmImU6KVJ0fkNjRUE9RjQjViZuWl43WXlSeE4jak9MaUpzcWA5NispIndy''@;'; put 'put ''PCVRfDElYUU8XlhwOll4SkU+VU94Z342P3cvVjtxTXhpcitMZmZdaC9VfE56V2lFQyp2cF98b2N1byN0bTwkOHxIL0cuLjl6N0hwfWQkPS5Ob3hsNyYzblNSQXNJX20vPT8yX2FsU0A/KmJzJTFJVSU4N2pQRmgwfEI0XnJRWVVjPF9jeCNJQndjRENabmJNaXJFYWVxP1lCRi4kcikhYmR5a3ps''@;'; put 'put ''SlBEYCVyKltFYE5JYEdHQkdJdk9abypyR2p2KWY6ZlRtKjBkNEduUn50aSEhenVmNH1rNlZZRj88OVRmJl4hImMjPV1KPH19a2ZwbEZFOXdMV3RnbCRhMjMqVHc0IjZwUGJmaG9nRFEqfDRVPCV8ZXcifEtrdTZzRUZOU10+KV1rcG9CdEZCQmlXQFlLWm5oQFhHZDF5WGdhYkJFOCpsaXc/KGs7''@;'; put 'put ''emxPfU07cGVeM3BDLHpiLFRIJHFwMWkzTD9hfXt2YDlKWnBfNWV4PVBAOy5DSU0pLihObnNbTE8+LksoaV5kekF0ITY9WkZmeFFkQDc8aSYrLGpVVkJWN28jLjJOMDxxP3hlSD4zIVhGc0M5bnxJZnRkWDpAcGZnMUxOI0ptU1c0filzUVF2O2pUU1szV1FZQmJLPlpEMHhucmxCbXdpUzZpZXg0''@;'; put 'put ''LE5HMC5Nakw6XUVVR3UrcGgzK3AmMTVbcX5hLlQicXEjRiwyZU0kKTBkTyR3ZXR+SkF3RCMoQnwjLil4PShkO3NXMFs/OHhbPlhFW0l+fihVcUpKTX1oKClyQFc+NWVKVjZ4SUkudWIxQXd1fCpaNiNkd0B5e0drSD1mcHlAKDNhTm54SUZkOHAmO0JqNyNLWTVEQEh6ZTJ7TEdJOEB5V0lCSmJF''@;'; put 'put ''LHg6LjJWJTh9dXM0cyRfRTxPXkJJSzpgWTdZc0lVNWJDS2JEclNBVy9rSD1ZVHUsbmFCeVRkNWU3e2o+bFZ9QEovMkQyamwlZEJLOnVPJUhAN3I6b2gqUmxZIX1mU0hgLFNUfWR+OWd1YX4sSEt+WlBHPVpseDdfZV4vWTBhKUViZkhHREJeUzFZbzVGMFs3VmFmKSRwS2VUR04uWVkuOkVHKUc3''@;'; put 'put ''LjkoKV5ScWJwfVJTKnkxOno+NCg4NW1faXhkb0JsOnxJfSwuVE8rQ3YxWU57aCE3PkBSeHJZS2t4JlJgNnA0Xi4sUTRkQDB7S1IvK2FpO2ZjYSUqMVMlc3ZeTW5ublp3ZDJOZ1BmbWJ6X109MU5YMnlgNSYxbD5bKlhNLkY4YzU2WHd3P1c4ITdLZnImYjFWKHZfRER9ZV1CcT5NJWsoR3dpV20z''@;'; put 'put ''LlBLaUtMI20jZXNBPS9keWxLaEFta2pvPDR5TGZ6eHNUREdMQXUyZkcqc35GMUZyMTFbV1peO1tVQzd3amsqclkoNmJQaWshZE4lWUBZI3R9SHErNl0+b0p5QX18O1BSRnUqYCM3X29LWUZzT2hPa0MmaWVob2dOUndQLG5uNHswazE3JHFvOjt0KGM8UDFmR1BiUShnOl0iMHVkSjxQVCFsfkda''@;'; put 'put ''WT9ydCk8JnpTTzk8PlQmY3dieUFibVpiMkRyQUx+V1MpaXEiUlE8bzRSO15xZ08uUlhhd2ZpKVNPaF5Qa01xQiQ5eXpdUW1XKGNfP1NVWjNHT3VyMVZURSYiS0dVLklJKUBMKndGVW4+eEprOCRpdV9Oe3pqMkthXTpFbEwyOlUhZXFYemcvcHpWO2ltOUMwPW5IUzJKb3duISV4aGJvbXNZalJP''@;'; put 'put ''KWZNO3Q3IlpmOEZkbj9YUENwMmlgJFE4WD9iT2RmeD17eXAqYTFXSWBCYCleJTUram8rS2VkRlJgPy9VXk5YI3RdeCUyQn1JbGNaemg2TEFJKU4sfk19fnJhZSp1Q1MrejxudmZhVWtOdjdsdld4ay5zZz49MWJ2QTs2R0VWSDAmcCQ+XXZgJUdVWi8lXTNwbXpeO20/QSNwVkQ7SD0jeEtTaXhq''@;'; put 'put ''TmhQKzhMQnxsVTtDQ0NzPDYsfG8uOTZofiZ9Y1Y3IX5bdXRRO1NERFtNSlFnd11aRiQ6clQqMXpTeUA/MD5mRGV+YDE9U1ZVSk9Sd1QhQHx7bC54dGNVN0VBYTVgOzVVIk9vbXZmTXdSMz10SiZfW11oeD5AWy54aDMuMDZTJk0oLlc2bnNqa2xKXmhPVEdSOmQ0WXh9YDs2cjh9OWltIUg2aSVg''@;'; put 'put ''InY6fS5VcWpNWExYITBsVFcuW050bVpkIVE+OX58dns5KEA4LztQc3dKMWVbPGRMKnEibDdGN3ViSHxlIlhwMGlsKDdCSClAYDxeajBnK31pZXtePFFhOm9kbGJOTEJPazMmcD9uUXkvN28qREBffGJ1JkI3eGN7SG9+a1E0flg9SCFXfkZ+QFVANj85RCx7bWEvYnM3akVVQ2Jia1lEYEFTdXR4''@;'; put 'put ''NC57X2tSaG95bThQSE1JR1U6OT9uZ0t8aDZaVCNAUk5FQCtgNSNrPWM+WE9bYWlUR3lkOChHVl45emQ0UilWI3tjJns8Y0BxQj5KRSV9STYkKThKZFNGPzh3KGQyMGMpMjw+R0hCfD8yLn0/Oz87QU0uYHVrM0x7W01ZQiM1QFVHI3dEdC9sIy5TcEUqaUMpK01udnROT3dEfXB7XUBvPDJbYlFD''@;'; put 'put ''fmQsZUc+eF8lT25yalYmQSE9OnA9JmN7KiIyYj04fSRsYS81TWE9bEdSYUgidkQ3aShzTD9GekVWXWBoXWxldHVzdX0pUTwzUjE0VStrUlBfI189OS5qT3BaR3lWSjIxb3k/ays8dlhbKVFXSj5wVSpaK1RLWzlIemxlYWkxcnNVM2sxdUR1KmMzI2ksJkZtSlllK1A+M3IoPCg5aUs3WEJaMEFq''@;'; put 'put ''ezouSVhnM3RBMVloPG01bmgyU2l8bjIjblVnUy97ZTVEdTBHeD9Da2trdHlxXjpVKEJ2UTFiX2xJNUJhdCtDVVJvLmphKipyZlF0aSY6Qkh3RXlxRElVMno8PFJsZ3F3IlBwUkQ2Uz8oSlB+Q0ZsdHhgXUI5ckY+aDBYXVRFczxRfkc2KVEvaUlSNEhQbTxvYXRXLzJmQDZPW0Z1Y1dHTDIhRFlU''@;'; put 'put ''KDBUV2IjWUg5S14zdHlVSUJOP2hlYXIkI2xyeSJVVjx2cGtDaCQ1YGdhIixwW1tPQnFWWlFnZCImYDJxYHBfbjgpNiVdXUFJZTg5ZlU1ZCw3Q3F6R29GI3N+MUVNInYyOGNlIntKUVUlaSJBMVV7aipNdmJPWFJbRnoyY3U2O2x1P192JS8lUkwmTVEiU08xKUtYWWEwbTdqVUJXPmVmSFdleHlA''@;'; put 'put ''TyNZTT43MW5uNC5kRkxBISgzLFF4UGRUcERKIlozfjY5d1J7RltCSl0iZUpEck4/cjxHL1QjZUQ2U2NhNGVSZ2MmLzV0KXhKK2xURStUeFh1VUAwNWJNVXZxMFsuUkNZW2lSP0h9YEpRM1MwI3glWXJ6djwoNmEsVUFGJHdENSZeTVt9I2deU3FPJlZKaCsoVl43fW1MVG9CNmxZSU8lVUZUS2Nv''@;'; put 'put ''Y18qMSY9QkRifGBOaFBCN25paUlbKFJaWTJmTDh5RiF9eVpMMVQkWnFJTG08JGEuZWw3X0Umbnoue10yMUVbVn5IZTE/dj9MXT1wRChnVSxdL11ZJVc6VXVBUilUWGw5JXUlTX4qSGlqRzQ7enpUNi5FU1F7LDppRmRyS0p7Izl+bypTIyomMjlEa0BdZnJoKW1hZHpIaD4zZShSdSxiSjlHVS5d''@;'; put 'put ''fDFGMSR9ZzlYP2UiSndfJUdoUVtfMGNYaUg3LzAqUktNUUl8MDZqXjI5QFZGfnxePVk1JVhreHhiX0IkMjxoKEklX2I9dnY+X1VzK3JNciVdZntBWkIrWkdLYUVrMDs9T25DcWR0MSloWChxW1laYnNaMG59SE1PQ3g4dUQ1KzEuaEwhbWYxREJ4PUZ2KihpZnhdY3lpMmZfMHx7aGJafSNxJl1D''@;'; put 'put ''QHJkRyFkQnB8TTFaW0A2ZER8RltHc3V+SEJSfUFHcH1BWlQ/VDFWK0dva0lzQiJ5MjRsW3FIS242RHRWe3FWWVNTalk5dmhOWTk5QjY7UyM1bz4sPkIrV3t4Xik4Zll3PTRyKEcwa2xVVVRLbGF3WSJKKkx9P3hGSG1dZ0IqS0NJJGw8TW8ldiNSZHg3Ul1UYHBefGNmWE0jO19iUGkqc1dFXXZq''@;'; put 'put ''djArS183ejZEfEdoV0pHclpyO3pFZXJ6STRCeWREYHp1O3heQDxML2A0N2lKbH5PZmh0dmVTTndNbExDYTAqZVZhZyJpOENiYE1+WCNeYDE/L0NHZmxjIjBNalB3WjhVOEckbWIheUFOfm4pWSJnX2RCS0hbOE80YmheWShLUClVOjZvOipJXiw3XWVkLHFtNTNDPm0+RFFoNi9XPSZJbW9mI0Zz''@;'; put 'put ''QkhUSWNjNzwrdUI1KmJHcG9ZV2lZfl0/NVtqeWdYfmdSKGhIYTRnb19ubUBBbmVfQEdJIV0jZis7KCVoMz5rSm9lVVI5YkI8eVUlQGdKPFQ2MjFoWng6YVMpPEp8V1BQYkhzSCEjQjtgS1RBajBJQyssL2RHS3ZtbWFwbWVmKmtbUCosKStEaytuZUQ4SH0zYG89QkZIMmlpemBSeS9XbjNpRTwo''@;'; put 'put ''KDxIUXZeUj14Y10uVz5XIWNXVzpbPi9sbSxlUHkybXtMZCgpXX1+UzltPS9sKFJVbzIxV0loaGheaH1PdCZVKm1ZL3dSSj5ybkI5TXNRPDNxcy8pWWpMeX4xODc0JGN8VyowUH42fih1NlUkW1tHPlF3cCR5K1lDIzloNjYiPF4hRiFvKX1jSlI+UztwbEJJT1JWd3poaHY+Jip+bypXTiwxb21d''@;'; put 'put ''eyZuJnNkSzh2RlhwcEh9Zzt4OmBsRV1UXk1UfEpkbjQ6MDBZMXBUWXFyQCs6Y0xPZXdzcTNTSCNuRUlZI1dlVWp2XXlmT25pNjNoazFuNjZaK01tRXxTJCh0dUcuUDg+cj13NVI6OHFsVTpTUV1GbHQqJkAjKkRSK1NtVlhEUTheWEgrKzVIKWxMQjYuYyJQdWkyW3ZZU1Ntc3tNWSJQJko2bjx+''@;'; put 'put ''bkZRO2ZLZG49ZlFELDtRV3NDMUIxVSFdcXRLZTZHRDs0aWhTXVZnSWFzOE5WeDhmIVMvaDhddiNaSXQqWT1mVFdsUSFMNCVwKX1JJkNEPmckUVN1P0c4IVl8TTEsdGdiOlIsT3ZFNEhObThDKnQmW2Z7W3VKJVAyN1pGfnYkPVBmc1EsMmp7MlR0ckZmNEtdIyVZUGBlbX03ODQhQDkxOmFwKXxH''@;'; put 'put ''NjF2PjVqIStfM0okaCVkSktSL2pDbFp+JE9QSFMoK18sSEhMWy8hdjFxc0RoUWV7Ri51OXpRL0pbUDgiNihBNiRkP15UYHQrayFOXUQ2SVFrNyxrNn0rI29feEhRfDxHNEo5UzEwfS8/fWh1VV87c2A+cnZgalUmQFdaSGR4Zl85V05YTy40Xzd4TkplT1kjQTZVTVNOUWtIZ2duLmFSaVVVelk5''@;'; put 'put ''QDohdk58blA2dD80VXE8NDBIZD17XzU4bXBqMVVSKChLdSN9OGxDMyxCTTAyLFlPMmxNMmwiRCpAcTNmKm5jWzgrSjJWMSpRVGFKcmFpcHkrbCRteXNhcjxrVSZXSHFWcGJvYENoTUs4eld8b0FuMzJafVk8TUJWeWlLVEApMnVbLFhKZHRMZztTaGxQSD8rVkdYUGgiPlB2KihfcTFEYSxLdzV9''@;'; put 'put ''W0glMSU6MlVJQnYvLjtUVUNVNFRIVkdSO0JCSHtsU2RBOGFUPGxfIXRnaztMRiEzSyQ1NCNdTndbaj17NmA9QldOXil6NW99XkNdT01uJUlIVyFmVTk8QGt7S05nVVhEUXc7UmkrdDRpPnt0Oz46RVh1LyJVYkx5LnNnaGhRWkoyKSIyYU5ZWn0vL0osN3MxUmBJaWQrPmZ1UGluTiN+YSF5anlD''@;'; put 'put ''UihwNyFVaW4zQWthNUVNZmFqTzhbKkhTL1BiZ0xKMl0zMlZGNk9vZ0IuTG55RykpZk8/Y0ssNFZUYiRNXSJDVWBbN2JPclZJW15wUG00aWJFWV93bitUPGE9bXwlJE8mUDpWeVY7RmJ5cWVrKm1GMzNXe1V6LkdSV1dCe2tFfG4ueV81V3gyIU5acT9vOGYkRFFvTHl3ZV9XandKdk1bS0M3Un1k''@;'; put 'put ''VFdtUURLeHpLP1dvXShoL2Q5UCZaRkgiNHcqRH1+JFIma0xsMmJBfkw7ITFdOT9eXUY4RkY/VTJ+S0FeQlQuWEAxZXVnSTxWYjd0P3hTZmJaSk5fVnQ0fitQKjZJXiplZ19EfHE7P1VQcis8eTF4Z3s1TiY7Uzl4Ym0kMW5WY25jfDw5KmVvSVhKWjohJjQjfUl+cDdVX2ZRTzJUeWAyTExHbTx0''@;'; put 'put ''eyJmVFl9OE01fEpGczBsbjpgLiRHZyt4Llp7KGVjVGNXSGsrMW1ZSzE7cVpVMFVBdHxtQEc8Y1Z3KixRSWErWXJxeF4vTGxJSmkmSSYpfGpkUn04KnwySXlnSj1FbktnX0lzcjBiLCkqeiY5YFNLJD1EIzdsVHBXfCgkfEo5UjgqMDxEVjp6fEQkfCRQOT1oU1ZMODdnViJVdDgkYmgzQVZWOmg7''@;'; put 'put ''NChCW083bnsyZm1zeGlhbV5aVj8oNjNDP3VoR25acUpXYHUxdy5WbElWJDhgbHYuOHpgRkszWWJedFZucig0L0Q0UyhOITtXK28lNURTbFdYckRKQnslS2RbTyR2SDVDenllbDRQPDF7aSJHdldSMm1QKiNpQHY6eV9tWWV4LDN9bHIpdVhjS0tPfEJyMyVxUTB3Uk5eNS9XYkAhZChvdEkxQipf''@;'; put 'put ''YGNNK0BkKVRtS0MrQD15VDlaRSlpIi5VLiFiV3wvNGtMKD9dWGg2MkRmXnxCUHJCXSFMaE9BWXNsaGV1N3d6Vzo/QUlJeUQkUC8+JVFgKjplKl8oKUVvOGt6OWUyb0M1O0dlbjpkQ2JhOXk5KFouaUc7YjxTdjJVamVgSU9ZV1J1THRIJkosVU1SLFVYO3REd3ZddnIhNSwoanBTQ14mRn0/RyRP''@;'; put 'put ''d2FlaT4sI1V8N1pCekZrUl1MMF5DOHEod2FfYXsjdkgrLnxRQmMoKVtNZH0sUShhYl5OaU9abHdJST9JdFowNWlOSF8mcFZwUVo0JV8mSEg6WF4uaV5WW3ZyTz12RyM6MTwzKCxrbUtdTkFPN1l7VEYyLGtLNFJHNHRsO0R0ImdCZEJNXzliNE1KWmNKRFApKUdsNFZleSsoL1VDfm0wa20iVjAy''@;'; put 'put ''dDlpVVVvWis4eShiNWNIYndDcUBoYD8xemkhZ2tfLEF4S2RUbjx4a0shW1lWbTI0XlcuaiM6dkBNJDJ6UmMobC9MdX14TGs6YDBWJmFAL29gXihNKmZ8bEFFfChyYmxRT2U5JklSPV8pIWJRP0xJP0hSXzZfKjVNd0diNCwlbng+Jkc3NlFVR3gkRywudmVOMkNlaV5Cc1p7eXZEbC4/KyFHY3xP''@;'; put 'put ''T0VQIW4kfk1hOUAlKHFFdG81U0dXb1AsWTpvYXFHRjAkemtWJGVCaTUxInJDKEpQOmRFPFZZK0NCSkJtUUhiVCpzN3lXYXk4OHAmU3VTOEtrRT9yYmhVenF8Syk/IyFoS0wsTH1ANVI7cm02ITw1OGolMzRtaTFgSClNWGhSISgpXjskdCZ0cVpXTFZ2akc9b1A7aURXNkpTR2leeGlmdCZ2S3NW''@;'; put 'put ''Lnw5Tmp+aGIjdFdGc0FeVVcwbnhnNypDOkleZi9oNjNZRzFzNyhUd2Ykdz9wSHh9bXt5OFhBQDo5X1BCZkw2MyRNU3xnKjNYRn1PYCp6REU4WWs2RHQ3S18pKndAQ0wxNTsuT3pdKjsyaH1aZXFAWFJCRTtlNS5RR2orTVJZQjV5ZVB4LDxfKVR9IUBjKSJJaUwqa2JWOHV2RDlvYkcjZX5eRVNX''@;'; put 'put ''NSpWXy5GZjFtIzlGNi49PnVTJGpqNDVdcHlLTHd1PkJbSSNlRms/PXxIISRfVChYU01XMS4+byVwYGtzWCl4SW9TI1l3dTZte052V1AuKjJWOHBkZiswUHwkeWwuRiU8Q3UhNUJTUDtnezU9M2klLHhOal4rdzVrKTdDT1RmaytUbU99UE54T11AakI3NERyVTQ7aXEjUDRVKkxSdWBaVmlWVj9b''@;'; put 'put ''YXZOQH4xZzM8IkRDTCVFUTBlaktjMyZucU1PdSFIWyZVaW1mVVZvTCpPL1A8VXxKRlF+Qm4xWmFsaUZ8LmtTZlV7UlBVa21JfkxBLzo3TjkuVyo4aDc6OEJpU35Dej4sfjh+c2cvS3JDQz1tS1p9QzwqRGw5ZkdIflIlW0RDZylUJTU0QjN1VlQ/az1NRSNURE8qKH5HaXYvfSYuantiNTpsOTsk''@;'; put 'put ''fTs/OGY9QnIlX34sdllTZV1aJU5TZW5EcjBmdztEOVB+OVNkQmg8elNsUSMuPHBLOSMzKzZSc2RwfEBYLExWM05Cc3JIcSQmL1FDKGJYImA2MDlCQUVTaHRPQjRSQzd8ZWhvLzNMMUMmOkt4VlMzamRRKEdJWi5ETC51I1Z1MldicEhAQCxLVFpCfUBIJHtkfDtBV1EjQzF5MHduYiUmO3RSYyxg''@;'; put 'put ''XktZcFZ+WGZ7PEdAOjUkS3ZhJGUoK0loN11WT0pvVTc5YDQlZl08Ll5gPyFmKyNPVV9qM0hUWGlbUjJ7UDJ9W0l2eU9JPDdpQktxdEE1NmA8OUBFaHlXJGw4YT5gVzN+c2NHKWRIWUh1bl1tQjpSK1Q8NXRgTFh1U2R0LGRrPnZDMDFRal1BcDsjQGR0WntrWEVFdls8QjN6X1NGcSZMMT9Qel4o''@;'; put 'put ''N2w1ZEdkR3Y5TGM1KlQwWV5zV0pQKyhHaHhLUGF1KUpJOjJ4W1RbRkY+NWxBPkdTSDhXPj5GK1Q/dkQ0KmU6eW4kYl43fDhYaEttTShKREUyJDxVJntTRDRoWjxRKVY1KDxaODBFc2pfTiU/PGQwbzZzQyxxN24uK3ZCOHh0Yzs8PEc/IjJdbGhdZzpJQC9XSUF0bFtrXiU8RXhkPGZPInpWSGA6''@;'; put 'put ''ZG88YHtEfHYuejFGOVt3fTYiTVpWeVZtWG1mbS9DPEROWFVmK2w1aE1jS2F3TClaOShYbTZUZVdFQS4+UlZFVmo7STVbO0Q1fU1XVCNMIUFsbk1fPVY3bF5+JUcpSGRGKGEuOT00eCltXXYuKStzX2gsemk2cG05MmxYQCMyVENhUl0lQUxZLk16WGlwKDZ9eHlCdWY5L3NjMTUxWjFNZUZZbjdm''@;'; put 'put ''JTlLTG5jc1RzN0sydndCL1t0ZVkhV0N1PD0mW1dbJjhdZ2EyPkUxKytEN2NkbmRVJlY2ej1DPUJIKWJae2NCal4kdkJrNntUKFohRkU8Xy4lKzleZ0VmNEQzMllGUzlEbEhDPSolN3drPjB9Lnt4KGdVZDgwQy44dkI+dHckPE9+dnFwbHZuWEhUU0JrXV4uP15Bb3dGOFoiaX1ATzgrPitRdndj''@;'; put 'put ''Vl9TcH1pXkUiZkxlJiFaKUhvYEN+KDpaUEwvPlt3bE9TP1NxcD41P1lkYzpZO1M0QzBzWW9oWDU5Jlc4JiEsOE47I2FlMDk/RDRndzJhXVJGTVVILG5MQTc9UHIqMFRSdCV0KHhtO25RPzcucCpkZzhmRGlJd0E3Wzs4L2JUUTU/TzFhSi96QmdNJHdnWih+QUF+VU5NYWFzPCNTbWhaOkIqNTds''@;'; put 'put ''SDFkRnROMXZeKF1fTHZGP0k4aCYuVHJITHo+a1kmVV5HYGssNXBhU0NZJkNnSHZjenYiSSxkdl5+fWZyXjJ3dzhCeV98cnFTUUIjL20+K11dKTNnZ3BvQGdwZyReM0c6LCRBYyUkPD1jXUBRSXdJTnVWZW05dyVBSWV6QiVFaishNSFQUndReVZQdVIzSCU1V096ZDxTLlIvdDRpdkJpImh+dE0w''@;'; put 'put ''c01eflROUCNDMFtoRnxZIyhVMDtrIU55U050bmQ9S0M1c3RzVHdGJltWL2xqOmghYU1NRUg1R3BfK2UpKWVIdCw4ZFpNbjIpXytgVGY7cjlJTSxjaUAhN29OMil6N3YhXk15O1h6UTIyJVpFekVER0s4R0wwNmZDN2ZTfil4Wnc1Iigsay9iOGc6X1ZaeHVjNS5TUXo6aCYsb3YwcEk/Szo4R2Jv''@;'; put 'put ''aTcxLzZafCVqYGZ2W1B3MSxRanwsS3I7Iit+VitjY0UjNyx3L3h4TF1TdDNjMj5oKTtfdktvJiRraW1dcDt5cEBabm02Ui9UWWMoTndBZnc4YXRAMUlZRDJfI1Z7JGtjTHpKRHA7I0FZczBpdCVmZGx+Im0sWVd1M1JlLyxuPyFUfiFIazRNPVpsTV4idnxAdlF3P11CKmtLSEpob2xRakV5WS5s''@;'; put 'put ''QmhFX2JGem9oVmY5b3VoOz0oVWRsSCxrLHZ+LGhfMCZ+YlBKRWs+cHdgdGdgWWpNTnpBKX1JMUdOeU92YzhrWTFOaWA4dVR5TilwTiJPUFIzdillPjRrN1Y9cG1yNDtGN0RWc2lqPUY6cXlkRFhDdFpdcGdQUVclRGRHSkdIInY0SzN+NDhsSWglU3MuQmFzX15EJio0aj4mSEt3fiEqJjFDRCRg''@;'; put 'put ''X0ZeanooODR1bkt1OyZ+JFYzQGVtZ3l9blU3UkZPUjVIc2RaPVk+Vz48c0A6P2N9WzZtJTZrSHIyPSk1ZTFIQCsxW09DO3t2ayRCUjJyJSFNNU0meTRDXylxcyN5R1JYPVFoek89O3wjOlB9MEs2Rn5eKFZCRnRPMilHV2d5RUo7TF1iZVYkSzVbLypuKCpQKXFKRlIoVWlxa041UVBtRkB0cFdC''@;'; put 'put ''fklOWUZWWWp9e1QkTzoyVnJuQCVWezdmLnc1TX0oTGkxI29iXVchUzx5KlpTPkgkKlhEJnl5MX1pOEo+Zk41dXdrZFVyeC41NDxGe3o1RUQ6W3ZidmVMUHBTL24zZkw+ND51M0ohKiJVN0d5fEhYbH1SRiVXZnMoaXtyd0JEX1sxdHxGRmpMZzxZNUBIdXNnPztVPl00KVBGcVElcXdfSFckVH5M''@;'; put 'put ''aU8kVGspSVtrOW0scns4PSlzQVhMa3paL1tdSDdiPGNZL1tJfD1QMGU6Oj1qeCpIKUpUJTQ/dEdgd09tRysmbnFqQDIhVFNPJTNfNjJZej9hY0hxYXFzbjldeV1DUjdETFpQKzAsbVJoWkxqTkZ+RFhsSCohcmFSJmVeVC8lKn4+ZWh3anRDa3dCIVhFMjZrP3JlX19NUmY2UWgyS2pOO3R4d2ks''@;'; put 'put ''VWspT3o/aDkzP1RuZj9+Km4wfW9UZ01rTlVQMj1zZmcjUF05Wl8xYzpxSjNEKGo3JkZsW3JsSVBhZk50bjFtcVN4PHA/JURvRH0oX1dmO2VmPDZwJTxOKjVFdiRlbFk8Sl9ma1ApPGtHa1MrI3A3VStaK1dAV1YqXSo6XVpIUCIiMChMQVk3a3NAczRVQl1sSDROLGFHfSYkTHs5NGZLbUZRfjx9''@;'; put 'put ''P0p+SXo3eGU7d0w7aTxDQDFxdmhvNXlRbXAhejBDaGQxeDhwNVdpRnQ/dUpYNHNGeD9eU0Bda3V3elAlPy5dW0N9N2hzNCl1Pip3MlpoV3x3eyR5V3UwfHVJeCtNNCV0Kl44WXF6ZzxOYzI+RFdZVGwyMlMrVG1RSF80RC9lOXVXJCk+bzluJj5NKnNfQlFLK1RAeXc8c3d3THtpe21eKTVUKlhh''@;'; put 'put ''NnldSnJAbFcmO3duMHNJL1N3SjI4ZDFMJSVdLnhBVGQxIk8rPG9+RE4zaGZ2fTg6M1h6SnciWjxxOlIkd0NXa25LfXpHfiVaYSYuP1J4X2Q6KC93YCFoPWhETmNRRWdFfnxxN183a0JoPjx5MHJYZGxyO31RZmUoKCNlblEjL1h1QDBvYXdndk9zVTlLN0U9MkVSc1EzVSRfWjRUPSo2fk59TGZy''@;'; put 'put ''ZDo1PnBHTHcrdCp8NGVuLnRaVyNwP30lK0BVMVFPR2pxST03KTokO0lean4qZ09pfTBkbXgkIWU7SzNrWU9BfGRNJUZSTTpgNUFlfjMjMlR4MXJuS2JLX3VdODxTTW98bXhdckBTKD8vO3pxX0g0JjtQO3BHUSpvW2I2VT50PGNkYlVqZ3xFLm9TUWEsYm5vRyF8VlVLWjkpbDAmTXR8MjA6NkZj''@;'; put 'put ''eDhRKzxVPHAyTm8qOTBEJHhWIVVyelhIJDY2LHVrZTZ7fk99bT9aTVhwN2BuJCM9cWpncF01am58ZzpuKnQyMkE1K0ViN1g1d0YwW1VkOUUzPUAlY2BCLlIyPmhDaG13dzBLYGFzaStCS2l3fUBYPzVVbGlETDNRMi9ARCtULiw0Lz9BSExwXmxMU3xzS08uQ09JW0hRVkJieWd7bF5PSlZIY0w2''@;'; put 'put ''UV1Ga1YqfVB9YXxCdll4SV1IVFclOX0iSSsqTz4zQCVyQEdxWFRFTVBoeXMsTFBbazFtIStdOFsoeWYzMGsiNitgTmI+K3JhInVkamVwIlRTRXI7SVpJfitMenhtVGNFR3dpRSZRPGxFayZuSWZ3R2ksVnVGIXteLHJJcCRFWiRLNC4/XjNVTFVue0NGS10mTGw0WG96LH1RM0FGV11fXXEoM0pC''@;'; put 'put ''bkg0NypdXkE+RURuKmZeU2l4cXlUKUgjQE0hQiosP0E5Qk1TZS92YlNkdVAoPXY8PSpSOUgkWWJMYCwqfFRXcnQ5fDNOUU0kVyNKc3hSe21vSShsczNCTWgkJmI/WFskRDdOR20vRCJMaz44bEJZJXhUeVNPZEwqXSkrKzRDYkdNL0R2eTNLOGk0T0I/PjozO19WPnptMD14UFQwRE02OkJKW35k''@;'; put 'put ''YlA/cVFOP2M4TERhYWFRRztSfkAxaDEkSmg0Y1BycXJeK3dzPlhgMV05Zl9aSzRwMGx7MlpzYFh2LipMLlNAWnxIIyMwQ1BoOXwsbyF6XVdHNXB8RCJXdCZpe2IhSmBkfjtmfCNdfjpCYjElIWs1Pl1UckZdUGx4bGo9SyJjWXJqRCEsOn07KUY/Ll87ayFlWXZ5Sn10JV5Wb3d3fSJsJTFGSXcu''@;'; put 'put ''IU02JixoeCM2KmxnOyMuRUpuY110OW9sL2UqSD5YTW1UbyJWTnhYXkc5PylOYEVPY3daV2Zba1VjeDtPQV8kaWIiLFF0L2JmS24qL1hDeihkOjk8dklLYC97MVBDLlowWntUcyY2Y1tPNEpWaX5qZjE/O3lnImlKUmQrMi9aQm8wUCQhSShMJGh9fH1ubTY3UX5ISHUqemZtOXpySixoT2lrNmcm''@;'; put 'put ''Wj5JMUgiJkwwPWk5JFF3Zm86cXBPKms+QHpFJX1MKGB4N2RLTGF4TDpwJWpse2QqUCI0UHZ7JFdPQGx6Y2BII0R6PTxBeSk6K2V1dG9vUT18QjFHdnpwfF8sQEZqJk8rIURXd24kK2xUaEJRaz9UTlY2L3tad3AyZlsufiNkZjh9a1RPeXpDPiFqQCoyNG1vdUI9ZDdKPnl5K0EhYHRtI0I8SHdx''@;'; put 'put ''ZTtPJnN9anhKK3U6ZEpfb0lBQVdxfXJ7flA4eStuOXJQX0xfYjVReCxEWW5mbHNiPHNxNUBWV2RFVEpIZHQ6dGgsRSJ8L3grd2ErJWsoc1Zhc2txLyFNdDR+NUpZYCM6Q2J4R2JuJVs9OlAkZHxqXmB3MmVvdCkqMTtuL3VkRjplSFdUWj1OQiRSVkQsNjFXdjZ6fXReS2hJNjsvOmc7XnYka0dA''@;'; put 'put ''dHhfM0FNJGhmKFpaRnZ6SFpxT3VlYnQuI0E2QHw4ZEs1OFF5b018WGsjYzF+amhrezFYWiZjRkpIbUBYd2dsfEJuUUxYfSI/YG1wOXsyaHdZWld2MCtEPEBZLkdwJVJjX1oxSC4jIiRlY34lJSV5KCV9SnwxSHxUaF93SkFKUz1lV30xSnE7PkNAYF1PemtHZ2w2ZjV3ODhscyJgRlV3N110I15Y''@;'; put 'put ''ZUpqVFl7N3hsSWJfNGVATkkmSzl4WlNTQD1mMjNeI1EhV3RuNCNTdmVHOkBXM1o1OmxPL0wlKH0sQkNSNmxzYWFlJWYjak56SU1lbWFuNFhSN2hOfklXcj50OyJyKnsuV3l+fll+Lzo/R0l2eEAmL1l8L0V1RV5OfDRYfCx4O18rSTNzLi4vU1VZWT1gZjZVMjpQOFRFPXJ5bnQiMihOI203Y19f''@;'; put 'put ''cUtwdiJIR1lUJCFqdyZNWzdQbWk1QEtDdiZ+SU1+WldZbUs4Tmc8biE4LytiL1pwMEc/UF9DOXwrfEd3KFssbUB0eSxiRF1PKCtSKClyP0opWFFFdDNUQ2wya297L3l3ZnhVbH5JNHBLSVFkYkM/V2pwfWRdLDVEREAmQjBIdSp0KiozYzpaOElSKz46MiJzcEwofks5aWF+U1RqUVk3JlR3VkMh''@;'; put 'put ''NVMhdUtfbmRlU21YT2R9QX1EenFYVSVBbXclS1FFLGhgXj0pWlQpXWJuYE1HL0ZEUUU/YVVMZCVgLFoxR2xgeGxxaXJpR2B3ek07XykkRjVmYDN4Wz5HKDs6ODdbV3c7MXJJLy47QDsoMCJAW1EjO0VrUWI9I1owWXdiI184UkBUTSZ+UlMlWXpIRyUoNEVdQ34xNFBKc3hJYC9Ra0FoRC9UY2tF''@;'; put 'put ''YE5FKmMxQVk+MDFeKTxKS0BHbHEod29DUlRpPEA/YjBSUk5uLilvZTUlUk5aK2QqeF1JV3p4Y1gyNzlheWtjdXFGfmt0XkpQK0JudUBKejQvdXwjQ11nTzVQbkt5NDE5alV0dElydl9NW05xZnwrLz8qaVZ1SGYvUFZoZF5MWHJRb2VkWmphcmF6WE0+SH5bT08qbEIxLGxdV1Y+O2JtWm5xI1Qo''@;'; put 'put ''b0R2L3gjVEJLPXZWeFhbSGN2M2MuUUVoJEpoOWxlNiN4SDNre2FWIX4zbGBGU3ZReSN8e342eGg/azohMm4kIUI8K19pTSRBSG9GfWguNXI4OmlxaE1TaWl4MkFOOF0zSFpxWysmI10sRS9fJCIoSUxISHBvOGVEM2xocjRyeHFlZ3FHJm96OltMcSI3WXJhSnFyRG9scyZNTy9xZmZWendKWSQ+''@;'; put 'put ''JEBYIiJ8Mj9mX3AhP1IhcjVhSXE9RDsjRnYsNzEqTCx6MkxMOkY/antrXntheUZgUndbS1dCXzAlQisoTz8uKDFdJjEpbDNWRzg7cVkzJUQwL15kR3t4OzhgOkNGI0dtJHN6YlBxWjF9Qm8vVUpvWnBBaHlQKDRYe1NWT1NGbGRdSUA3bz8weUs/PV8wT2c0eiN8Yn1AMUYhJnpdZU5MUVEqV1Uj''@;'; put 'put ''W2h0RC5lLHkqci49WVtaSXk/blMwfGFXP2U+fWIrYXpELzRZYj92KSshcGhdWj1HSiMzeHVvWXhjLGQheWt7R1MqZ1J7d0YzRkgsSHN8aTdqTytwdlhxKHhedlpCM0FvKGJtPEQ+PFdwWCJwKmElKmlWUzppdCh6aGVeNH5+eF01U0t1WCNhOTVCWjtxZGBaUlojXy5VUkFLTVlXQ0ZaZG1zM29z''@;'; put 'put ''bCVBVzw1bTU+c0JHekwmPkNtNkgkd0hjInF1bFhfXjtna2UsazdpLFEsKXUyWEE6MHJ0XUEvUTxxKjhObTpGZnxSMSxtVGFVR3M/fCh1KG44KU1IWnpOPSYmMng2MEZFSkNzeklKQihIOUM2QmBgO1gsW1d+a1h5ISVsPDwxXkxhVXBwP191QntuT2NhLkdNXzR+JFY2ZHwiUDtTcXdqbSU0dU1x''@;'; put 'put ''Uy9fcWQ7MTApekNZX1JIeUtwa0R5Rzl8XVY7bT02QG9vWGMwRzZCRSxlNCMxdWUldDVMWCxiZjRGfSpJdj1jeHcwa1QlUnspa2smTG1TKiErNFlgZyVNR1c6WE5QK1QxaVdOIWsyP3lhLm8oUUpCISNwMUR1dUx9QnZDPm82XW0iZ3hRczM1Rm5wZzN4aU1zQjNvdyl9VnRYckVybVojQGosVFs3''@;'; put 'put ''Ljc+allialNtMyhNeWdAPH08ZFc2MG5UTjFIRlBMTnJMLDpRaWlwTkFKJmBSTDdKU2RMIXU1cVc0X29uNl0lWE58OkkqXkoyenJPUX54Nn1DZE5ZXn4jajQoPEU1M010c09MbHFzPldFNnJKM103Jl16NjkvKjBjek4iY0lJNEpye2laSHRgOns8cm8iKm1UfSQoRiNJUS4kXypobGBmMnVLZi54''@;'; put 'put ''MFZJOUAwYUcxbVlYOl5gdlM7QHFBaG1jdnxPYU9jZzUwUVZdT0V4Wk54OnxKe0koVS4uNDAuXzRdLFA2MHJwcFZ3dCNRYyhwJmF2LDNVYGkpXiFISkYzPCpIa0NLNz5rT1RRI08jM2ZFYF58VHdhQkIsZXBkaHdCOXU+VVB+JHVzKjwuYkQsYXUxOzFNUTlvRkt9KjZJIzV9V0tASDR6cztwYl8q''@;'; put 'put ''TEhsVVclYm85bWxNUl9gMGxVKkVtY0dHY1ckcH5APSRjcCVpSEVWeWw8Ql1ST19gO2p8QCxuU3ZmbTJZNFF6ekp5MiEkcDVMJWU5ZDNHaUJkRn53PGVIW1BGWjp6TEMxWEJ2P0tXTnxGdDUhPjw/aiZKY3JBZ3g9WjddRVkuI14vOHlEVTJ4a2p0TVJyQF5iJnYjUFcjajdSUGRRbDUsNWViKzFh''@;'; put 'put ''SmhUW2YsWyhFT1gxMiIzSj0xZjo2dl1XaSNHXj52YHtGc188SntDdEAxJUJabl1nalFNU08sbiJjKXNvPD45dSF+bDxvbW0wd2ExcEpER0JFZUAsVFNHdWBlU0hjNVRLK30qI3l9JlRLcnN6WylTaCU7JmdgdW4lZVJwU1BhWEc3YWIxM0tGdml5WW5+MT5dUlhCVnFaUEdmJGk7R2B1I3Z8PmZf''@;'; put 'put ''Mi9TL0ViODZGeUV0a2hHRENfaFsmamN4QWBqTGorQltwMyJ9IkZqRmovU2VQVn0+ZD9dfiZZI297NT5IZEFRJnMvKm18M3difXJ1T1RHRV1jeShuXTpXfUw5KDRSQmd+Q1ddYGU2VEUzQ0hkezxULj1ASDgxUkZneEQjNXAvPFd+IWNiIUUkUlhINzo0fi87RnE+JFosVjNXYTJtOjc8eixsbVgy''@;'; put 'put ''b3hRcGw1S0VEK2tGRndmLHtjZlI+OmhLV0pmRip3TCY6YUNqcHNALHthUyJkQDV7ZW5kNWxJOSt9dG1rbG1obEoufWA1Ymg7aD5tJmlbcFtkUWN3ZjVvYlh1e1d6Oks6QmMucG5eV1I8JFFaTUw8Tnx+eldNXmplPzBzbFkiNjZsKiV5XjMpbX0hMmVTI3tqPClzXWw0ViIoZmg4P1k9c0F1ViF2''@;'; put 'put ''VDQ/bDFAYVM8VHNuLFFwSW9fQ05qNnVJSjc6fldWUl97VTEuLFkwYy4zPmg6MFpOeENEdX0uVC8rcVY2JEc4SSs0eDxieTd8JW5rVVo6PGowKCtRb2Z6OTtxUkYmQ1R+LkpyVVpoRiFLTXdLdlNdeGM0WVI+KEp6KG5RfUxxNEd1PjdFZUgjWVlZNkVdRUlgUGwhUyZuYSVjPWpRd29MTWlybFNV''@;'; put 'put ''KG4wN3VYb0Q7QU5sVzppMF42OVQzSChfKXRnNE16fkgraSQiXjYzbjVUK1o+VCMzRXwpc1M2ITVdU013XS4hTUZAb0FmamBXI2VeYkdzPV95Tzl8V3xZUHZ+bWplaEpSbF1wR1UjbF17aHNuQ2Q8OUpURmlefk11TXkhOFl0OSlQIlB2NyNIcGoofWNgZ1cqRy5IfHJCVUxFX0cvan4lOyVbdmRJ''@;'; put 'put ''TD1HXm5ld0ZIak9fPSZUY3FQVyltbn5RQFIkIXw1WVUzX1gzOGx2L2FmIT9DT09ZLjVzS0ZoKz4hY3whOTBLazAyK28rMStPX2gjPCg4PkslfTdSVmo5MEFtOVZjK0BLclhydSgiVDFKcSRJaWJVT2hzempuV2FofWhrVFEpSyZxPStQdSVdQ0xncWplV3Y/UnVMfCtofVZDPjpedSwhSns/Lzh4''@;'; put 'put ''NnNyVTg7bmQvNlAqe2hxN0JqbUAiND08e2N0d1VbX25VfUZYIyhBRWVOYnNWTl5YY290MXFmRGZrJVZUU3hSb3ouSk9qYzh4KiEjT1ZMQmUmJS9SdlZTYyN3akksIXdBLiVrI0lPN0hGdTAlIyN7MS9odUVFNmpxVF5uWHdrKTlfJV1dIVhXNF9qQDdPRS9bZkJyNyRUMnlhTU0jdGlwWEpKOmpM''@;'; put 'put ''ZGMyRG4sMHU8ZnpSbyFAaF4zdzQ2aj9GLEE2cSZPMHNVUWFSQSQiS2hLKHN+Onp9aUtSVTBiPX10RkBbZXNAYzZZVmZlQ29MNndpWjh1eStBK2pyS1d5cm5bWVYzZCg1eTUsc3luTWFoWD53XlcmQ0YpJV9VPXZ8TV8iKFFteFFRWHpMITVPRCJgNTgre0MqZFh2IncwJGlkVlJQOHpASk0ocGtG''@;'; put 'put ''RloudV9CUmpRe0ZSdypRNTNGS1dzd2RwdyxNbklkP3V9UU9peG5mXzJBK2d2cnVveVpCd0wiMm5SMXdBfmViPnttMys6JG9SUWZzNkUucUxRXj0wKktxSnFiPztuWD8wO3p4MXZ4Pzg/dTltaV9aUk0+ZV82Ijo2eSg+cDp7dUMmc2VrOExqO01gYzJKbS9ofChdYSNAc2xaRilrSTEhaylZTzhh''@;'; put 'put ''cnVfYi4rLHcmcihOM0xeKjVRQyFsOHpyQm06ZSlfcDdiY0RRPitBJTFFYHRUXixsLzx5dy5ieyRvbSVycn5QLihHemV2R31TOS9LSTI+LyFUc21yeW42WlpqV3pnXjhYTSpYQmJDMEMzcVFJdDNnJDtjTSZeNVZtO2JVYSt6ZF56QVo3VTA4XmtETmc8fntYY2x5YmIhOEhAb0pWLGlCUnE8aEhe''@;'; put 'put ''OXF4QmwrK28zKlVkVVApfmpZeFlTU1Y+Tz5DOmN0SytjVWtUfDNiODRMPk9sSEk/YF82W0Upc0pOZFNfcUguTjorcGRselZlMWdGODdITn0hLixYRFQpMStDJDIkIT03dyYmR0FuWipfO3lVWForK1U8cCxPR0M1RlZWMURQKz0lQCJOdkE+MygoIXNLRjgpSjlFZ0R4LFdyJTlJbyp2fHcwX31I''@;'; put 'put ''VzJBakA6USs/M1BQfjZlZ1FNNF4vaTxdUWFtblMle2h0KF58P19CSXl8WWsxc0lNe34uIkwhanM1bH1VWEYwWVJSVVVXLG9DNGFKaHUjLG1QRmc8ZiQ2cmtmbHhQIlhaNU4lcVdWUCEuNVRubDdPWU1RaS9jXUR2OGk2a2twNzNKUkpEc0VeWFdMaUpZXiszdV9aOk8vMVh3K2xfSlJYfHQpaW90''@;'; put 'put ''LywqQiJVMUJjeE4yaj5TVT1MNV1ZQiI/WlduOkIwfn5gYWAsUDNnYUo0TzNORHcxTXdkOWA6SjYlYUs4NVZyeVEiMyFuSElYRHVrbVRgJG45X1k/QkpJQj46ZTY8YWZ+KmJpVT19S3FaWml9cmV3OysvT0Fjej98NngrXWpIWiVae3x9T2JWL3N5NWgscyVZZ0tRSFZ5Sz57S2svTGtHc0daSGxy''@;'; put 'put ''YlNqWDBsJiYsX0hHKlM3R0lYQSpSL1N1RyVmZyZYQ294NE8kbSwpez85Ln5qdXpaZV9+ZT0yK3Ikcm9uaDFfO0lWI1Fpe2dpRHlgQzhdbSYjMERfW2VaX0RRd1VWLkNWdD43YDZzdH4kZWBRMn0uV3ZRI0xaYn51eVtIYDN6ckY8ezNdZGl9a2ZYZCl5Y2RgV1ojR2BRZj1rW2tLRjp3L0pycTNg''@;'; put 'put ''W2lTfnAwbTxKeiZNISJGeFU5UE4qQVV9elQjS19QJl0pbV9EfTxJbnJOPTBqLFRmYGZgNTpfdU5Qd2lkJDllKGwlJiI8Y3VnO3EmPjkiaU8oYTVFaXRAKWgie3FOajRVSnE7OCs6SF0pdTY0THkwYlB4bj10LyJ0fj5seSkpJWJ6b2YhPytyNSEkZlEwOn5EcWU2OGg6TVV7bDFsNV0mVi80TSth''@;'; put 'put ''TTN0cz5SIlt1b1M3TEcjY1VCMW0zNH0yTmZmZG1tXWpXJWpDJi52Tm1laHRoJGwqY2Nyezd3Q0BhQzQhMl9uMSJ5S0dtdUlESVA8MCwoMUBnUnc/L1YyPDpHX01wW1s0U31baCxyeVhFeV1nMVleTGhLUSh3fVRqLyZ4KixMK0cwQkJTcXUlOFFKfTREIXVFXiluXklve1hvUzRUbkN8Ry5qS3o+''@;'; put 'put ''RF9qUXtjNX1UKDFQaSlKY299MjFqZWZRdlZYQGVzUzVNeih5NCEhdVFHMHdeeHRiWHJEPyZ+azxxKWskSVZhfGZnWCQkSHd7OllGPCYlKmc0O109aXREO11ecUh2U0BWUmNuaFt2VEA3WTh2dGM7c1I4PGk7RDZJOFlUYWN1OlNmZ09OXWZQZEJ5aT9rfCMmdyNUfDddUH5oNG9gSWY5Om46WC9m''@;'; put 'put ''NzssQHFCLGgzMVBfSSNRK2c0SG8ye1kqMD5FbE1ra04jcW1Dfj56QHhAQVhIXztMSGg0Q25JU1N9fVYwL1E1NiFvUWFGKTdbKWtRLjpiZyZCWUw3NiwzMl0pTjJUYTt4O28sc3xRbndyKGl1TUhGen1iJUdWdkskekRKYllJVHMqJS4oVn03YSh4bj02LDooTHc4S1FAOHckV2MhRjR2XnFpMmNl''@;'; put 'put ''YUdrKVo/V25LYyZdPz56TjhOeSpBI04iWHpXXyVjYGNmZH40OH1qd3lKLms9IVF9YT8hLi9BajomZm9qaS9Bez5BUFUhd1cxbGRVOmU5ZmJ3ZmBAbT1hLkh7TnkzNmozMSxHKzpmKHZHN1ZIRDc+RThkWm5JPVFsRTFVVG10UX5mfi5QNlc+SkMrLyI3PSZEYFcvbHZCP108PW5vUXcpRUhrdXkm''@;'; put 'put ''JmY0PV9bcGRXVXs2TXNwUCtZI0AsejFZOEVib2tRQiMsWSxreTtUWShFcj55Mn1rVmxQVUQyMXZHN3VTPVpvMFNsYyhgNjN6UUBRN3Rtcnd1PzxGL2ZrfF11SU1wKm5Vc2Q6Oz9dV0RmaXVYPSlCUHpvYHw1RihKNCMpSVFOOTVvazlmMX1FVHBEKD1DUW5qe3hJS3h6Jj4uWWFPWU5jTHoqLnlt''@;'; put 'put ''bklSPClAR1JWQFlATkBfRDxVU3g0OGVaWHs7dmgySksqdX1GPWU6eiFmMj1TSzs3WStJYzFkS1ddeU8sYT41Y15IZ2k8RlJPRk8wPXd4RkRHRUErL3NEW3g7dFRQQStAYmpmVjBXMDhidHR5bGV2aTJfUm5BcjVmO2hMR2tORnFfQi9CSm5aYHUsXigsTCV5OXc4LkA/QVFuZUFVSE0zb3hIOSJQ''@;'; put 'put ''aDEpNzgzZnwxUUY4KWIxQz8xN1BlSFNZZXsja0NLfmIvWkM/dDBGdkREVDo1PyMsVCF0OSFHX2lmbXxdXi4wMChwckxGdWpTKUVDcWN9PF1BX1Z7KTdoOSZtamRdd1cxWX04c0tRPGpFQ3pnUCkkSmY/PFJ+YSI1a3Z3PCFDfnRfa1I0T0lXczREdlh8OixLNlhibiomWDZOPzg9OkdaLEc3cXZS''@;'; put 'put ''eH1dYkglRUdDJCNVJSpzOlNOXjAxVnpQSi9WNVt+WGtCNnk2OmtmYCFFUzNhdnA3cCwkfURGfHw7MkohQzR1KkgpRm9nKExxaDddYkIodCYqfUFPQFc/ancjNWhmUCoyPTpURmF8VF1EMjRYWn5dXV8ve3VdTWAqTC5UN0dZISUoIztANXMhTUcqPWVYM1NISCQyOmsiSFpJaFZPW2cvaDM9KmpY''@;'; put 'put ''ZUdLO15ZSFtDdT1QTn1waypNd1tpNkdJPH1yRWxfJDwmfSs7ZC4vPj4+bjhGT0ZAKHN9cSZaXyN0PyhAeFEiOm5yc0Ise3BLWG18Piw6NzBGL056cWkkeXpxKDgseDIxQFtVMm8uLHgiUDtRbE5hPHl1PDQpajgpK1ljUHwrOSt8amB3LmY5WSUkKmMpUFBbMX5qVHJzR1tzaVIoJSlGbF81Qi55''@;'; put 'put ''Z3FOcFhNLDFRMGdxSVIuKEBMQHFDQWwlP3U/YHhONDhuV2xyJjVDI0VialZ9MzBqM1UwOitnR1dwRXtLRz9IWywpMlY1Y3dbSzpxPFpDdE9+IUc1RjZdRmJsPj5oIUlQWTIwezs7L3ZrQGNZPE8kJXRUODVGW1ZLT2dbUzpUOSxPfXh+fGNSQD47MWIkWko2ZW1QOzkiNDlxSFtRd2p8UHt5aStw''@;'; put 'put ''WD1DOF12LntAa1pMSmp1YltROGZ3NWQldSZaTDwldF12RERsQXxAMngxIlpOPFRjOG9IUFNzejg2WmpmdkI8NSI6V3w6fUFpNzFPPX13ekVTQD4/dVh3azMrcVpTNHhTWmF+ZmR0InN5XS4sOSNyb0Jnfjo0WnErYk5NdTNpeHZbdFs5TyVSd3Y6N2xNY30sUUxuQ1ErQ28sQXshJlZCeG8vckN7''@;'; put 'put ''IXooL01aL09EZmR6eS4seX53IzA8cXFUP0Q1ezczaEksaWJAZlhKMDBfKCQ5VFhBPTRgIlZ7JlBIbzA4TUFDSS87UjxMVTgrJn5XUiFWQno5IzskQjE6c1FUWWhzKCtJRHZLalNvNnIvdE0qY3pETHV2ZV9IblVWblQ8cFgheU1Pey85eEVbJDBdanByYixiZmEiPlB0Wn0sZmh7TFJ5XkVYc2o6''@;'; put 'put ''REVPKCh8OS9DOjt1RjJLKX5xNF5TYiVYX2xbPS98JWokYGFqbXUvVWpvY3YrTiJYVEJ6LDRFZzJbPkhoRCtgZUlyfV12YUx7Z0dbV0F+NndZTyZ0TFldXTd2R2QxQz46JiFtPUlNSD9FbmpbK2RnfUxoTkJKZFl3dm8+OXU0QEw0N3JeYVUuK3lySCl5Mi5He3dPWEpLW2s4JEAwO3xpNVlSXkJ5''@;'; put 'put ''R3M+eCFPaChqfmY9MWF0NWFDL2hVQFsiRm1pZT11YHxUJVosaCIyV0Z1fkJGOU01fWx0YV9QVTMkLDJtTGd9STBIYT5eIV5jbURtIz4jMWgvYTZrP3R8SHpveUN1VExTYk1beEgjQzUrbFthdFBHQyVrbENhRl5WU11pOXxTOUN0Y00ydjBtOD5sPzk4IlZvVTZUNWlqanlJekd1WDFaPl5DVT0k''@;'; put 'put ''LztPJE9DTHdPcno3ZSkxZTgqblNGZ1FZfnRXQGI+N2xCLnxxP012RnRbX241MUtJdmoxSX0hSCtvTTBYZTdMWFJ2YkdhMFUzP0JBX2koeEw5bH59NlNkQ2hURT9qekUhSk97cEZCRCxIPlMhKH4obSZBZ1BfZGxdOFd6dXtfXyVGPHN+IkpmRkdaVEA+fSU+cVp5cWxQb3tlS3d+WnRyfnd6dGV1''@;'; put 'put ''LmdqaVVYcGcwdkRuVzskQyIxNm58JC44YE9FdzhHdmJJNiUheUFmV19PRTJnQ2k9YD1kOkA5bHxMIU1bTn5ZdWpaQ3wsYVM0WnB2UGFJdU9zezxGKzt+X2ApJHA+M1QsWFIqS0ptQj97fj1QbCF4JEhbWjpmOFdKbXViPiZAeEIqdXE0d3R7InRlMCZXMEB7eURMMXxHTVU6SCkyfkNMTXpmL201''@;'; put 'put ''cV4oKHxUIld2RiVud01mfHZqU00wQ1Q3LmhvX3U8SjN5W3dAJkthIWY/fXUuWytCY1dkQHxacW9NZjE7P1J1JTd6VCJ3WnxnZDd3QVZ5VC9VajNDQUpUWXwxcVhANGF1b2g5OzJYdUc8NENndXo4ZU9SISZLYWIrRlgvIWB9OHF+Y3o9fl1jMi9qWkBxKS5aNTcpWmFeYzxWbTBpV2FodyMjc2hf''@;'; put 'put ''aG0pTnZ3LCtHcSxAW0xSVn45SldIJTBTLmRITEQpX3p8JiMiZWJTWFFONy9sQ3A4JlJvSXxLS1Z9XjA9dUU8Km9iY2JmZlp2NHQlcVlVQypfYVgicThhM1ckbnwmSF92YlNgUHU3OF9DU19AQlZsPUw4IXlgN3UrTS9xVkNEeDw4cDVrWi5DXUpEdTpPNmd+a2BMXVNYUjFIS09MbFM1VTtIcXhJ''@;'; put 'put ''NE5UVHN7enYxcWA2Zz9SWjg9cz90K3c2OzUsPj5YODZpV3cjQV5mVmhGQS5rbyxVOGl+b1p+M3ozVkZNc0cxay5GPkdlNHMpWFpsaHlQWmh8cWRFbmwqNEJYJERWPzVqMVpDTmZEXyh6IVJWYWN4dSpySSpvXmRAIiRjImEpQlZaRV8oLkJYdlhXXWJiPTtaaG57I1RoTylOMVZvJnsxPjczSXZE''@;'; put 'put ''O2dGYDMwZjdZMFVOJFJ8SUNFcGo8a1toeit7IUIvP0BhaW9yWUhWK0IrSXQ9T2hyK1tuLiFMRkk3VjpiWDBRKHtOciUhK3soQXpmTVllKDxvenw6R0lGQz4oQD41Z0s9Z2NjIVlgJjV5TWVzKyZmfUw1VVVtR3Z9KW9Pb2ljR3cqO2FoYikjezIwUEl3WE9KUWF8RnExMUk5cWxQZko5QUlpZk5k''@;'; put 'put ''U1FJWW11SGMrWW8/ZFAxaSpLU1NRQFlGIlM8MiJRRnt5YnpQPFNhIkhPRVVscTVhM2RnT3BuXjJARlhsO1pdZDhdSCUvQ1dCVldTYEo2XUhBNEJ7QC8hTms1aD9KezspaTY2XXBkREQsMi5VcFRLNDc7JjQwS2ZIWGMpY2VjOWVNdEAzX2YhJlRDamJ4NiVYcjdEInk1UVhxbXpZa0U5bXlsS0hC''@;'; put 'put ''Xn5GfEg5QDc0VjpuUT43QGF9RFJXSXkjOj1WMnlEcFBtWE1GbCljbVVdJTdzXzYkRkV5OGVGPW1JW09tTHJvcGM3RUQsU3NwUm5qcHpbMUZbRFZNUiNGfkYuQTs8M0JwKjxpc14vZCJNNkt2Sn1CaGJ6IURBPkByOEMpRXppRCt1RyI9YG5VZ1lndT0/WVdhIio3enEiakxdYVsiaz1TVSp5K2o7''@;'; put 'put ''blglWmx0QSglRD1SYCxFX25HfWokcFplMTVJTV1gKFRmczA4NiRoYiRkW1I9LzlHRmo5ajVNcyp5azVhOSpYMyJGTW1VNXZAaXshcWNNcH4xcllDPWtYRjYwKU58S3RnUlo+WFNIUDx4LnNpYypeVGshXkxKPnw+WDorK2VJRGRpVGA4d2pkWXsjK1ZAPFgmNXtacnsxeG1ueX1PO35tcjtEbH4/''@;'; put 'put ''fn55dn4xREZPKCVUSHczVFNXJV9yfEZXfTpSam5eayVxW3s5TypQOmglbig8Q01ZQXRtUSEzKVhEREUscVFDb2xVYSowbG4uPnsrTDpCYy4ydkdlbFtveXsrLztZTmV3XWsjTSJqQFJDNVMzaXdkdz9WNiJbQDU2PWA2KGUqMiRQRjlTbGJwcDQ0Q0VbLlRPSyhUIjsjJGBhIlhjZTxnaTdRPUg/''@;'; put 'put ''P0EqSm0zSXNEaGNAQktIW3lfUHV0ZEJEbFoiIjtZSGZPdVNjZDFGJmohc3hMeUhQWUFqd0w0K24jSW9laGt3ckF2VzksMTtmMU5OMUUlI0BYPz46WWRUcG5EZiFOUjpffEZbLDEwOzdfSEJFW2hbRi9NJCohbE4mdkhnUnBlJnBdTntKXzY2ZlpKTytoK3lxTCtLbD0lbEh0N2YkbWt3NSR4fD1W''@;'; put 'put ''czVTQm82PjtuWDc6ITpCTl06aig+X0hQa0smazZNLGpMYHI5MGdXeE1ScFI3OT1ARDwhOHt4KDdkflZUSzFPOXx9QH13fSwjUD44REZEbW1SdmxOJXZMVXo6N30zbV9qeiNrcUE3Ll5aQm9Ta34vNEBaemZOdVsyTl9fbXxXUF1wYWNtTmRFcjd0P0tCNTY8NHJrX0diMjskcS8xZz1HXShWWWcw''@;'; put 'put ''WDhOakBPTXUuUH1CQkJWP2ghPFUiTjhNRz90SilJY0xkZ0pFQSlNfjtyTX48REcpPXc+RmY8UXsxNUlsKUdPb04/ISZbWSI8d0deZGg7UWtlPGlSSExmNEdSP0k8JHp4bnolZmdZMTBEQ11MQ3wubigme0c3dVVlME9TIWhMKUFBem1eNywpK204QGxNbyFqfTlxM2VSXXJKdXspSF59OzplV314''@;'; put 'put ''dE5NSXVvcT09cTtkVToqJmpAVCZ5YEAqQHJjQSY9MGJ0cmxKPW1ZMVAjfCxPOV5qMnBRUX01X3FxZCltPiNFbF0wfDpAK048YWQlI3Q9MVNtUjoufk1ZK2J0OS8/QiJuTHZdKj8hOEU0RE0kTiZnYGt2O0M9JlpqVWFxeD1mfT9relcoZmdeTlZrUmNgWzU8O1hyaiRZfCVsSm50dlprUjx9dj0s''@;'; put 'put ''fkBEJC9db1BaSXovO193bCIlRWBlTi92YX4jTUFaPmdZSihQYkdecWdPWHd3STQoUkpuM1J5cTRWRS4weDtWQERGb0pdPS9EOkY/Q0x0azQsaTFjNlZoI2ZaeUtAan5tUStmbytNQUshUiRjVm0yLlBfN1M4cT89WUpYcmNBI1VrJFd8IXdbW28uIyhvJEl2YCZWPG8+VkcpQi45flBMNlJzNzYm''@;'; put 'put ''R01Sd1FQW1NfNXQqakdfMTg6X0ooJElNKWJEZylrPUorWHlWZDA7NXEjR31XaF5GU2E5XjZSSmdiRShGakFwRTRSbGVyVlgzNWt8RXIrKntuM0loMDYuPFhFdlpVU088aShfXix0eWdqTWclQFVDfTMpMStDQXJTVykvbSUuQHN9ej05dSkpJHJkcHtYdSEvTTojP2t2Iz9wQkwmV1YrcC5RI0E3''@;'; put 'put ''IS59enxLdGEycVl9L3xWNEpZJENkcFRJSDFeSi4oezNtP1IoeDw+YmpXYTxtdlpHOSphLCJHcl9aMSZKQHUhT2tMRkk9aC4mNyhVfCFDVFRJUTEuM3B8JixOcjhOVFhVNlhmJEFvI0VSWTlTJEtYS29BI1kyYFRbLzp3XTw1TGldTyJBXX54KSI7M2FjU0N2cS92KERSbEJZPDlJRDQxNHxvVTlV''@;'; put 'put ''MlJhP0htSz9PcC5hS0lgdkMpU1tieH5Pelg/P1ZeJSVVTlBubll9TnkwdVBSWjlMPSVSaEFndCtCRmY0akFqWkZCcmpQTy9NNTV3JXtzakFAUj9fWm58WSVWWV9oIUY0YyYhRTx+c3xvRigpKVVSQFV2K2FJZUgmX3J3dlhzM1BiakhoI2YmVUgmJGc0akYuRUd5JC5KfDY4Y0BubEs9c1E9LGY4''@;'; put 'put ''c1k/PXhVYVZeUD5kWy5vZS47fCZXd0w1e28jYCtQOVFfaiguVDBKZyNWIi9NU25EWno3MUsjSio0fUYsX2xSVT5tWTRUT3hvezIhdW5aTDxlQjg6eHhKaj13SUVicmFzZm5la0x4d2BJSFFGM01OP3RifTNISUxJRGB7fkNxayE0SVowMTxTWXVGUEQkZm5ObyQsaiRRUjNjbURMJDUqNyN0aSlU''@;'; put 'put ''OGpbXy9RbXpoZTF9M3BIeU89dClLbGpsTWVDV087WlJObDpxU3tFKWE0XSt3I2U9PEhxNFFOQjo6ZyZrT2BdeWFJSVE+ay9xbGlvZitvbXZBLmtvNik8eD55IVdPUDJHLktHaFlVQHxjK0RRLlJpdFtCRjpvfkI7MHh9QD9xantQIUZDO2EsfSZkRl4vTGAmc2smIXhiNTkqUER5Z1MiT0lIZzdo''@;'; put 'put ''MztlPkcmOltmP3gvdUI/V3U9MV1MUi4iKUZDQHJQMG8ubW11cU1bfXVYel1+Xm5zbVhmRUJBdXtjLjQvOywhPUVVXlNlUkdAWE9kM0lCeSQycSprYFhzQHM1YDp9PWNSMSshUlkvd2VUTndtMClJNzJDbTUmJmh7IiklM2RIPzAiKC8qIldRNns/UEV2ND1uTkdXd3ROJXdyMTNUaEZhVj82Q1th''@;'; put 'put ''Z3pMRTBRKjhbSkF4YSgsKFdrIlIiL0k6fUF+OGs8OzhEZiQhc0Vne0VkdzxNbzJDJXd4NkllODAjQ0p7VWtxPlIoVUJhKSxMNUR4SVRXKS87OCM/SSkkbzQzRS5sJU0wTC53InN5MV0/XVFEfGlXeHgrMjA1RCVkP3MhUzB2YFpRNHJoNlUlZmsyUWM8ITYxWSxqdX5gKi91T3Q7Z1hRRDphMT8k''@;'; put 'put ''cDhIMyJwKWteRXl7MXFAaF5iVCZLRXJWYEhaL2I5PD1MR1QzSWIjdUpPNDJTVlEvTipmQER+KXBPbmlDajVieXlxeEchPUk4YFFvZUc0MDZpXWdlRCoxUCR9TTF4WEdhZjBpU0woMSVBSiRNZ3wlLDduWF81fEJmOGFheypbTDp2Y2IjLkpQbls9a3NIbGhGYmhyVkREMjxYJmYwaGkjUXo6MjM1''@;'; put 'put ''I28mNXpFIzBGZjZnakc7KWY0RjdLfn5xODR9MyFidSx3L3Z1UjtXa0psMGZje3h0P0JINWElfjVeWSU3USJkRyEkRUgoR1ZneVY3cXomNTZJI0Z0LEhETmM7NmJRciE2USVYUzkiZXYpNW8rcj03KmEyVCNVSmBjXzpzTyl9JlckRX1RYjYvMyIjRUtYZmRrd3ZWckhCTHthTiQwYS5HNiNqPVcs''@;'; put 'put ''MExUPV1wSyZ3YXxxcjdgN2VxMS5wZS4mPiRuKDwlQmUrYElbRDhkLGQ4PCRfK1F9dS5hSTgycnNKUj5UeTNOLEpLV2crPUI6QjNXQ1ZSYTdkWl5mbSxWOWcrP1B3Vz94KGY+PCFzYFs0ZlNjayVQZSZyVTdZKT9OWCQyI3lfW140dW59T3F0SmxpInV2Sz1bT3hES09+MzVVNTI+YVckOGtCZis/''@;'; put 'put ''TDROVCMmMiJZQ305YTB9MylyNyIjI0shKml7aXFDaDN0VzUoQH1GcW15akt9Kk85R2oxanwkbHtuME1jZ1h4bUUyY2ZgeEJpKStzZ1VCZS9BMEksSC9ENERTVnNeS0I/O3BdeUhQXmVadEE5MFRLRFpyW3MxYWl1cF8weigiYWBdMiZxSEprNyQmXlspfVpqUGFgQl9Bc0s8NkpvfWA7V3VDYUx8''@;'; put 'put ''WXV2Vi9IWElBP3Q2Iy93MWpYdEJmS3hbUkVyRCtgPGtJLkM/OVN3PUckX0VCRXImT0ciRmNsPzomVnQ+YTJAJDtVL3NBZGc4UDR8WmYjbXwyNHNqXzpUQm47V0xlK3RdbzoxInU6N31mSi83UCRaWyJjbVZKS0lDUTBzRD0xIihTRlRkcWNOI2ZwKzBkV0ZkRmc7UmV7bE5xZzpyaW9Hc3VVSjs7''@;'; put 'put ''Sl5hIXElLmEuaWQsSmVaXV5xfDxefFJmXzN0cnQmP0QofDc1aV5dVUZaWEdNUj0+YH1SKls8dnxmZ2doKy5Palh0OGB3JkMvQ2gwNmN1LHNLQV1QW0hZJWIjT3ZAa217Rl5USDNTZEFPNVJWJE0xU3okZExWWmQkRSY1KUF5VVFMeyJsMiUyUl8rSzVOKWByS3VdeE8+LE1wZV5oamhmMkU3VCV7''@;'; put 'put ''IzBkb3hnSz5GR15qIy9wJXNRRC9UXnMwfXZObS5bcGwzQjN2Ol5Tak1OL0d7b3NiPVMhdlhNVTZxT3Vibi94LmxSSHcpY1U/SUBsbVh7UDcyZHtfcTdQUzxaWkZKREguamtyP3FYNkZ1X3hCSlVRUF5obUovTHR+ejZqMmckWG5QQEB1d3cjRCohcmV1eEU/clUoKiJgYWVeKWNjaXgsSzskLEwh''@;'; put 'put ''U0ZeQkRDZyUqL2VDOm9fYitoUFheSCYvcGx4OFRKYFFVa29HPHxjPz1CWT4+JStFOzxuJHcpYlJ6aGw0W2lbZHtrMXdCeXV1dHlubVp2dnJ0azgoTjZaL052P3JVP2F1ZzE4XkcvWUdEVWFEcmJ+VC8jNThgb2pUVW16QnZCU3Q1Wz5bcjN8a09pKlhuSk5uPExrI1QrRE55QWpPZT1+QXxafCZm''@;'; put 'put ''QX4mZi97eGY0IW4rOUx5cjpeO1dES3FAVUVVL0phWDhOQUg7KHJFbX41aiQoYVc7JCxoc3RDIW1TNytQc1VTLy4/KUc1Yi9vP209TGdIIktXRjtdW2J0Ljs1YCJgTDwyJjskM0NGSDlgTX1MM1gpTTxgPCFPP0psPUQqY1I7QT0qa2VuNE05SEZ3MyV3WXZ0KCY0Y2VJNix3bEM/R31eRkk7ZWt1''@;'; put 'put ''Wkl+VEd3dldKLnYqTiJ9S1Q3SlR3TiVrMSg8L3w9SnZ0Pj9RZktqV3tTfSkuI0AkNmJza1RdPzNeTF0lYz1KfDlbQlNdVXpFYW81alpBVUFLUzEjZnMlTlUwamRsK2FVeGUvbG9CV11IMWRqIzY4TTNyK1F5N08vZUBycXU6KzVEQitAaD5yOkA+YDxIWFhfUyZYUUckO3YscFZaR0BXZTgwV296''@;'; put 'put ''fltidHNVVjRoe3FkaCI9bHNLWTBVW3R2PDtbbCM6by40YCN4Zjcyanc/OiVXby8sblUmUUIrPWNHLkh8d01MLF9OODt2YkAxWXkuZVJUTCxeZ2JienBeU0xZI1N6YkBUUS8iZjx6UCtQKUl7em4+Z1grXWxYJjRlLGZwPktnOD5kUlkzYDhDcCNZODVaPU9uXzJ+SlBJeGcvP2E/PTkqXzZuQURT''@;'; put 'put ''UFR3I2ZlJTZuQUt2M2YmMVozSDxUJi93LCI8bG9OOkNZWFN6cmslbWFNWTA/Nlc7RXluaVVreiQ8NkMsJEJTU0tCLyUoKjMmMmtPfWVyPUJibUVkbkk4WVsqPSQ2SXBwKHFHWEZ1a0diNE9qamREPG00YXRtMmoxM2x0U34oXiIpI0tNMXJVI0AuWkBtc1VfT3huLFI9VnAlOTFEZGs/R3twLilN''@;'; put 'put ''PyxYU0RxPWB2fXFkUzN4aF9PW358YkFdRWk6VE9gMEZiMDNhK24kU2VvV0VLOHNsKCt9fUtGQSwlcV90Zmp1cW1YKnk9VWkveUNdeEhhRE9xJl5CTmhORClnRnEmSzl3aHpecX53PGBOLHNqO3N4Xm5waWgwSiRxPWVnTCl7Nn5vb2Y4QGUyVSIpNmB9MjlLKl8uZCVYOVcwQ1J2QFthbFZbP2dv''@;'; put 'put ''LzFkbi4mTGAyakllUT4maGo2KndsbTkhfDAmR2tfJHxhUD1peSF2dU9CeUhbLFJsekUoOVgzbnllMFZwKEs0e2YmKnYqfDxfSE1+cVpER2QkKTNMNXYvTyg8bVdmTTMhZT45flQ6JDVFLjV5WTMlQjdYOGI8UWd8XUB7ODppWDQ7Pk4vc1Z6cjJocT5KNjchP28ofj1FfDtUSnhBfV80azFVPz5h''@;'; put 'put ''VDBzJHgjey9gaSFHNjF3JXt7fn15KmA6KSVeOl1mUmt9T1N3NyVUJUk6NSU6JDdrcHY5ZWc+K2wmTE9heipHUTdaLGkqOUZuYD9tayZKSEdNeHpJZ1YrOHJMTk0rNE1mOjh+ZDVdV1FTRz5IWXkkZXR3VDFUVnlGXTRnR11dZTlbYnVPLkNMIVgoXVksOGM4W2JxOlgwaEM5JGZVez9GdjN8fW5K''@;'; put 'put ''T31JIlIwWkgzbTdBM0d+Mzh+dVMjOGFMU2AkVzk7cjBoRGJsKH5te3I1OEYxbU0qOW9Xc29AQUUxXVtDITVXVns5NUtzSVFtZCRuJUNMUjtANlpRXTA1O0BPP1NSI3VQaV0wL21WLD5AKHxATD9MQXBndCNJSCZJODA+fXtecG9nNGcpbldCbVRbbzdySzRdW019ZUQhbXQrejsoelovQD9AU25Z''@;'; put 'put ''N1spTH0lRGcxckRTZU85Y3MsWzBqSFlgKSI+JGtILklgP3QuUltAOnY4b2M9UW05KDNpa3d2OiRtVHFIKT9tJGc2UEosNTR3eFo1SSF4enhDXyk9Mm5gYF8uOy8rdDkjOWhFdVcwM2IyO1gmTytmQFZoZV4rPSZQcS57cGVdIjNxcm1nVmVYOENQTyVOJXcmV15jJDV2VGpOTFRlIWove0hlPDZH''@;'; put 'put ''U31jZlkvZWZWaSJ6U2hhb0NjOTNTRXBHbXxjOVJALjBPLl8vYT8xcVg5SF4pO3pRSVNLOmVXMX5qXlQkSm5mcykiLkFdNCs8YDBQPzFJRXN6X3wjSER1aWpnUTE+ZiE1QjM8aiw5c1U2YDhAI0RGVFhveUF7KlpCLEooXyZGSnp5JiklMnNzVT1oMkhZcyZVZ3U+aj1wN0BiMXY2Y19QKj9dTXpv''@;'; put 'put ''aklZNS5VIlVqMHlIeyNzbyJRZFhQNGsxX344Q2V5KTROVC9gSGdXZz42Wmd4ITZKK09QdDdmR0JKa2NCYmplM2p5fERmNSUlP3diOnh0YzxvdUJAeU9rV1QuaSRhYWdMOEROJmEyOGghVGM2L1F8bzRHKnJqJX0oQXpRSVMrRUchOFl1SUBMaHorM3MwOVpqUW5yeVFnVmwyfjpZJkp9YU94SytL''@;'; put 'put ''d3xgSURCQ1FaZk98OkZoblJUM0ZGRntbTWVqLzlrYShvTj91fk82KmxKaEtOfV51WTlHUXR6fEEvU2NdQipvaDkoZzwxKCI3bCRGXUdxSnVFX102ZXZbJWcoUHc/Sk5QfW0mZiwqME4sKjd8bT0wPzlsdWUqTjQmM0B6TDhdSGovLlUpWW5FTiskWGFra1sxMWwka10pSD5FTFJgOU4rN1Z4Qlta''@;'; put 'put ''L0h1d0h6X3xYRSxUaWZzVU9sPVIlQkR7ezksbiFxYF8zTEhIcVZLSG04W29HbUtUQGA4bUgrNGJVam9VaGNMWV8zcG1aT1RLbztzU09qdDttVStbLjBIIzgvMlNMU3ImOFJWckFMI1sqL14rK0klalp3VF5kcl13VzNSN3s0fVZbOmFeSV5LbjZMNWVfR2lGIW8/OTBUfiM6WSNfKVlrVGokTFVG''@;'; put 'put ''UWBnYTB0al1wJXJka3BwSlVqJFVKMWJiR2EvPm5+ISQpaEs9aWIpVUpyT15QJjBhLF0hLlJrcihjaF00M3A3aCh8SyY5UnU9LFpNayhFRTRfaF9uc2tgWyRMKnFsdlJ1I11tV1BlKFFhKyR9SElRVi9UUHRSRSlDUCZQJlA/Ojp7ZFU1RCM7P2Z7O30lYnhFckpzZCQ4WGUlRlNye11weSoiKFJV''@;'; put 'put ''YCY4OnVVSzZLUG89NFJ1YiokfEgyZ2o5WGNyJTFPfl1xTWtUQT55JmJULCIsQ0hAOV5NZnYsakxvXissWVIuYCYwKStOW2tzT3dleCI1Mj9JekVeNG1IJE9kcCU2byYsfVRbTGlmKyE+Z2hpZWFdWVYxa3J+cCNwLC9zZzM0fVJGTGVNLmEkcSJuLiolWVUpWi9peFBHO2hFSUBEQHNWMTslWXpV''@;'; put 'put ''IyZqfVBDVD9pJGw+ZiJ7KyV4JCJ7THVdKzZMMWVfcDE+flReZ2o8cVdvajIueXt1fmMkdT4wO3dVNn5Zak9aJV16QkRPSEdJSGNMcFpYM2EuUFJielIsXW9MOiJkbVNdd2o8MUskOz0lbz99b3EmdzZJSnVidzxHcFAxY3htdTo5I01qOVleTzJMP2xqW3ZBWkVgcTZWOC5XLFE8YD5ZaT5wPSs/''@;'; put 'put ''amBbTW81OT55JGBCRntuMj1AcFFYWkx6PFt5ajV0bSU4S203PUBYTiNjV3NVRCZ2TzouJEZnTzZLKztORTZOLjY4ayFsYW9FN0AoZE4se2x2fkRqRW0oKldJK2pxalZEN1lTeWw9RD1dKlF5bWROUXxDRHojQFV7e2tsclBCY3hldVliaX5OWm18Sk84KEBgMk1YQktMTSpALntHKHtFUjBmNUBB''@;'; put 'put ''UDojOTteRjo9XmV6Oyk1X1o8M2dXcUdocXlRJjNwPWlefFQoZSglaiV5IVRJTCosIUBfOkAmfW81PGBNW0VafChjRzRoRyYlcU95bDZRUl8vfHE7dW0uOl9ndHxiVno+OW4pWioiemNqNmNdTk1VKm8jQylUZ0ZDLGZ0JmMsL110WHhCPipwdWhDbmN9PUNjW3BvPHAzL2JvQXFTRHxvJCVUS25G''@;'; put 'put ''RVBoYT9CdypvR2UvdEsoND0hPWxqJXtsO2NUNGFXcDNPc2FRYzNPc3Z9Lmo7Nj9uNEVacEF9ZDwpMXJqLj97Tk9IczR3QCY9c3hkUH56KHBLQV9bcGokQUVhPl46Uy8qNUBBVTRuQVVfW1Asc2prWCx1ZiU1UFpoKiF5T3E5Y1l3KGZvKSVqQUpgOEtnZywxPmlvYFc+ZHdAbnVSJVI/Pzoqbiwh''@;'; put 'put ''bUdbeVlYVUBiSXA8U0suMHJ1dE1iVntWWEUzKzdyKzgsWk4sbG19PWB8UEZyXnlOTzQsdEtSRm55Lj89IX4ldFFhOE5daUd5MTMsRGRJTltEaWt8aX5SYko2PXJwV1FlaktXJDBPMUd4YGQ/VlF+eD1GTHpoRS5rZip6N1FzfGJRdUBdazZ2dil5Y3RwOUk+P0p8bWhaUTlNe19bTTNfVXx0LiZ1''@;'; put 'put ''WyFeX155OmwrIz89cG13bFpHTGtaJTwrUmx3OltUNj9oTU1KP1shXVc6TXcwSVdRVGkjSEh4R3svZX1TISl6U3ZrRzs1dVshVTxXVj9YZ1YjNihwQEBxRih1al1NWW53bCRORiNAXUA0ZzVMSmUqcmh1LDpubzk8WGxVLGE1c3kkcTZ1d0J8cGtPYEdIXi5jRV12VWlPezNJUTFJR3J1TV4wKSoj''@;'; put 'put ''JmpSR11+fC4kam0ydldibHlSXnxdXW4uNUEoLjNsPT5rMWFmLCU+dVV9c29ReFBoYCU8U0M+LiEzOmBRbitgaVJ0amZ4MF0jUz5LWiVrYTErYUNKdTJoR0lLM2cpVTBGaisxYjkoOVdNdVVwJDY4Vj5NZ2Q8RGFKQHk3UTBGUDcyfkk/WUApQD9uWzw7KHJyJStuQ3RmJlMvbEFdU19LJjB+eElm''@;'; put 'put ''KnYhM0xrPntaW08xc3hJWzgvUFZgbk1LXl4uZSgqMk42O08xUTB1VWwoWz8wdHpNX25jLzZHNkVtP0BSYSFQdmtoOGVEWiNQcjJPNiZFYnxNVmkkNTssOjMiLEZCNDY4ZkAuN1tHWTpTbGkzcnhWQ2k4TFVTJWZ5bUw7PEE/LEArbz9PY3ZzSVklXW50b0w6WncrSSZQZ0hkWEV4Xkl0S0UpSGBw''@;'; put 'put ''LDJkQ3F9NFo1NFoiO04wOXEvQCtPQWIwKiI+KF5iZilsPjtsNjpZLGRFXXtOPzBBNT5nU1UxUEhmTj1ldH46cCpuQVg6NHIkMU9nczwqOV93S11AfkpzMCxbMGNyLm4+UlMwNm8lMHRRL0NaNnU1cmlVUUc7a29KPCMlT0t2KmxgWXQsP1JeW1IqUipSSVldfkh+VGp1YTxwVmh5RUN2eXAsI2VV''@;'; put 'put ''Z1p0JnliUmdQUllRZ1YpaEs8dUJvYDlRYT9uXkJTUlJrcSJQbyo9WiJoUVhOXXEzQVc3JDEvLixWZSJaOzBeaGwxQmhYMXkxbG8lbztNU1UyYVAxVTFiUTNnXls3UVRFME9adiVtcnVCQFFnWEhZTjZ6VWZUMGFXIn1rPUJEZn1tIyUufjIqazhvR0R3KjtpQUdAWn46TzpBbUpoV0licnVtTENV''@;'; put 'put ''dk01dTNwKj9OYGhhJmE4UGk4VVckPkVtdkA3MClMbD8hPCQ8aDtwLi8+I2ZgWjxofGVnWV5uOX57QnBXNyxjWH48e2c4fG9rYTghJiU2SnZnRjtkJjY4OCs7XXosY3V5bVRmd0lmfTo9MCU2Lz9IbGp+RDVeVlJoMEZQPnRMZjcsOGxGaEp4MTg0QjNGI0xiNWZFQEQmdy5xRUQlLzNLI3ciXVIr''@;'; put 'put ''SV1eT3ZOYSlMcF9CO1JFZk4heDZsN1FjeE55WSY+TmxjaCM/WEAmN2p+JVFnKWZIezlfNmopSFtOfmtZe31GInUiXi9+ejVFTUVDQi5Kak9wc3d7QWlZa3hhYWt0OU0uSSFMNmglK2ZiTHk4Ok8wP0I5LmEqITZPQjlDNU9jRWZGM1l1JCxpM10yXStXN1BbYFhNWzoqdT19dyx0OjZ9S0tsYCpn''@;'; put 'put ''eGRFMjQrQyI/ISppdSVGRTF2NmFWPWdHV0QpZDRrI3VbImI+bE9zVFJpVUBdQlRzYn1NYyphQEh3YmlLXTtka0lSZEdqa0QzZ0Z+e2ReJGspMjcjQj9RKnt0WjR5Tno8KHhSIWJRcFV4RXg9TlAxdS4wc2FpSGxEYklnTS5bPzBtPXl9PDZMJkw3Iz5iNztuVm14MTo8US5DQU8zaDFGcFgzaDFG''@;'; put 'put ''ODdfTHo9KXQ3ezNnKFBII148UCo+OVpydSwzJixtYiRYK1khfWVvZGpxNkkzQntnMlQ8PSQsUTI2ZXxeMipFOHhvckVTWEFxeCksVm1oNzN5Y14oTXVPXishbmYrN2NMa0M+Py5kPnQvYFRfWGslfjFKYCo7OHI3TWZ8elZySjtgO0lYRCYjIThbK29HUCVze2dFNm0wKXBaNjIvXTU/SjIlLHRt''@;'; put 'put ''OERza1FQZ3EmfGdnSG9JbjVrW2JGSjF2NXpJZDRFWThBYThsU0Nrfms9czplSjRxXkw/YHBdMUI1dGdkKVNKSy9vcCtyYT0oVnhgcXw7KiojWVJbKmBDc0VkZE1WQHxWW3smeTN9fmEmd144XiNVL25DbktaN3FzMnwsKSxiJEorN2xLb1tJTUV5fHxPcCpCVmFLVihCVjt0MnhSR0orcDsyO2oh''@;'; put 'put ''am0hVWljUWdAVW0iTiVqIThPcXRBOiouMWZQVHJaWktKYil7UCUySzFhNGdAe0orbGEhYSpWM2doMzQyUyJ8XUNXNiM3XissO3ExJWlCdHFdKjZ0eDRAYD01WTBEZCJvdk80WER6dUdFYWFLam9LPWNhdk83Y1QwUEdVKi8/dTZEXjJ8S2Apc1deKl1VWXlQbXB1TmNHIz1vaF44RklPKDNNaCVi''@;'; put 'put ''SCoiKUB3Zz88KU5aYlJhIk1aU1FtZ0wwZltwTWchKzByfHg0JCEoTXdyWU0rIlNVZW8rMHxSb1owTzw5PSR1XShXWUc8RyUkQ1JgVF5OVShvLCpOYXhwbGl2b21gNklLdmNQVWhXVXpfQT00cjNSIixxQltUandNelAoYV5GTjh7OGQ1USVoNF9lfEVzMVhGJWBXQl1KWyJmW0B5NU8jPSZlVlcr''@;'; put 'put ''JWFQMWJdTiUvWDFVemA6VmsyfEQjM0dpR0wrOXZKUVM+YyRFa1A9MGdANiV2cF5jZTd8ekxAa2h2THskI2x7MSEuPXQ7WXo0ZXduSX0/UFZuN01YPmh6S2RKNSYqP3kmXTlhbnB9Z21Wcix1SXJVViw6dEFlSWdOSyZSY01SMDhqbkh1dWVaOT5AUXg1XlRCb2E7VEE8KyV1LjIhXl4id1tLNCxX''@;'; put 'put ''SG5GaTwmJEQ8MVVLK30rV0BUX3lyNzJXKmZIdGIlN0ckenRDYGhFR2ZWYjZDL2hoUCZzMyJuKDdfR0xVbmtuNyE1SipsVkApTTxaOWJ8QGdDKkI2Jj5iLmhrUihEV2lCdFU1cGBAfUVqSCsxWSRIQ0Bkc0d5ZnVEYCNRYmNwOSRoLk0+O0V8UGReK1pzQTtaUi85dGVkN0t2fCFQQjM7OX1oViQk''@;'; put 'put ''Pz1BW0R+VFI8LzgvTjdaYWNQM2guRWR8e2QkX343cGclTFsubzgua19hLko7WTRwYjgyaThjN3R4RDQsaU96ckxGK0txck15S0tUK2NaTmE6MkNacWtoeC8hM0BfLjE8Ii9eK3VoIlV7eWFIIVg5K0Z3YiVEcy8rXXhIJV5NbHZ3Vj1zcGtvPlE1R31genVxZyx2eWNJL1QhUkF7PiY1RCgrTltd''@;'; put 'put ''ZWpLWkcqJltuXl55Ky5aX1c0Mypaels9ajIrK2k/bV5lIklobkc1WWo+TX1rYkQ2fHcxQWl+OElYbGR+NUJ4VG1bQENQK3Q3OyFQcl5zNGw7cTl8a0w3STs+NnV7PS5DRjRDQ2BOWllAWWlxRXM/UDM5bzIuZUVEJHNmZXBYRCtHMSpAfSY7KDJLL0soOlJgOUJVLlRYWF9VeX5YRU15bTlJWTB1''@;'; put 'put ''fCl7eDYrOkZgRWZ0Xj9bOVcpMV83UFJnSVlDQFUzVEhnelFCNkxCX3ReQkZ+diZlX2ZkVXI2YVg8bzJSTHlPZmheeV9pOT41WDAlSD84RHNASGBPRSN2PXhPTFVZbHJ9LztNPlVtYXMmPlowcjlTUnUlc34zNnsjKXBUYilJI0UyYntWI3omXVFzSEwuYXQ7UWhsbUdCfDwoJFdVZHZEMzFFXyNx''@;'; put 'put ''bjRYaXRCNWYrTGpQNDdfeTFXLjN8XV5mSHlnTDtuMzMqWCsqTT1uRipkNUUwKXx7TT86U20oInMucWVbJSUpdFlzKSRvLjs5KTIvZkpmSGBmUTJaRjssZik1NGNYQlloT0BUfUJzLiQ8YylUaThKN0JrUklVeDQ+cm51a0UkQjpUJDs1Km1VRXZOc1ImbSFPXX5ofW9oO3I2OjYvJURJfnhXSWQk''@;'; put 'put ''eyFifHY6NDU8aTFWZDl5Xz9LMCk1SDp0Kkw8VkYwbyV2YCUvV3FyP3hKYyVEMFU3I0o+O1lJZFNIPSEsODFbS1AxUVZWVTpjZ1ZWVXZoJipAQDYwaT44R2Q9PXQ+RT1YK1dTYGltPDtdYSFEVV1IY24zIzs7My4mUSZ4bFA0L3MkPW1zNjwvbGxkMV9OPFkwK1ImWVp3QT4mXk9GLE5xSnJEfmVR''@;'; put 'put ''WVRpK25vOWFoX2FzL0B2fXl1SVpMQ1J2UHFGUCpsK3xJRz18QVNzLCtaczNAIkdKdix2ejI8Vl9hbzEyKEYlMXV1UVl0d25WTUBeZChaUHI2dU5sZD1sWH4pZVkrfmhoNDRfVGM5YEJEY2pWNzVfc1lXaV1qXTtfQ1goekV7I0RYeXFJfVM6MkVnays7KDt7PG5kdixQSjx6PiVbYjtYMHhjdUE6''@;'; put 'put ''K1pwWjFsOn00e2hbT3g/ZHFneGdjNTdjIUs4NFImN1F3NmE1TFMjcUpeLFpgUzwkcldiPVEzRSl6PSE1e0NtaGFscjlQbVNOTDI/V0dHJEwiIzN6SkxYdmpYOGU3W0R7ezkrcVAmR35SO199Q114X1RofDg9ekRxUGQ6KmomYDJUKTl7KCw7SzNveX58eHBUZCUzM2QlR3RsLjYlT3RbRVR4bCNx''@;'; put 'put ''aWosN1tUdmo0UGBOOUUyW1UjUXE7XUlmIzg9TFBxWy5GPXUzSE92I1NaSkNFMjNocFZOOUIxVyZhX308cjFnIWpIPz98KDJdPy4uLk0zVl4mRW9XW2QlUV5Rd2JRY2hBOT9uYDtwc0VOZyVQZXlXd11jNnEuSkUoc11CNVsiZnA4c3FePi8oYVAzTHE1VVBraiJwSiNgOmh7eUtFKGRuJHFvKUB8''@;'; put 'put ''V24yLF5RVVJ7LG5RM1paMFc7S3htJEtzeitkfXoubWJ1IndxISoufTh5VyZ0akZNSll1MHFSZiF5YzpJSDZCcEFadk9eeyFHWFgpIVYzV2lofnNsQGU8Ml47IyxnSkVQZWBvUH5TNENaR2k4PmdkJTc5RGRJNiY7RGdkXjBtMDxQelZbKyNtI3BxUUYrVCRkW3slYj4+XnZBcHZYVWt2LiQsdC42''@;'; put 'put ''QXd3dVErNH1vXmBQJShYJE85LFJIZloiQ155RX10TGdqSTJhUV0yfnVEQEFVOU9aP3JgblF5TWh+X11gd0RASFBJUXtQcW52WDQ8eG52WDs/RHY9MG1kUzFuYTFvNjFSe1lBKiVFI3M5KyokZTN7LihybXFLKGReckZ2bjB+eWYhbVFqN0M+OUdLSXxSeTAuKCljTmtzYFIhTUFDYUVDMHtrOSxp''@;'; put 'put ''YkFuMVtjYG8pWmQvPD8oKip2WTlMKC9KSSVWc349ZS9EQV54XTtDUnluVEI5PTQsLjUqQkFmTFphS0k1ZztmUytVb19rZXhdZEVIOzxSejk7Zz5fcGhMYUVfSndHUD1WLn5XWHFDUWAyKTRvd1gkMnV2TiZCd2UsO21HOkc6RzpMcjxuVEpAJl1uKUc/KUsxM2Fka0NqMWJtSjFha11dQHFZeFBx''@;'; put 'put ''SlBLPTAmOUhuKUB9cm05RFhmRFRDJiNEaUIlTlI+ZGRndSkpS3g/ejJbSE10S0NdRiJxME1OJSEoZ3g7OVtuX3VJUXQuLDNvZ0t3NjdSXWJwdE13Nlt8VkRrY2hqYzh8YkY9YCtCc2ZhRE4hWzB8VHEuTCFYPjAwUkFIT1IkcHFaNTE1K01DM0V7VkhXTEw8JHtAeCZPZ0xdTyMuUj1RbHZDVCpZ''@;'; put 'put ''N1JIKWkzeipqUVNVYW5CYiUxRFl+XjE2bFkiUiE+UWdhb3wkPXB+Q2YkSXVsd150VH1ZPHAyQDQ+ZndhOitbfHRPR2xNLE9sQD1naU8lWkh5TzA2PW9kYTV3TmJgXTpFJFt5U2hRWH1+Vk5meCFvSlFleGElRTM6VzA2SkBiO2FpZS4hOkJuOD83LzNxPWs1fVZCKVB3MWYsVFBlKWRiJTR8ZEVJ''@;'; put 'put ''WHNtOTkhYHkyRzA3LilSbm1UW21xZX09Oi8/XV8kaTxRSToxLHhacXNTOnR9UlI+KDNEWUtBa0UvWWclfDN2PH5fUyZxL0daQzhlfmc6fHhffjJCQSwrPl1edDAsSyJJTnYoXWFhSDwkNiVEUi85aDJzUFpdQnRVRiFyVXN9dztqTU0iNSs+JiUlXWNNdjw5QGkoeWIpXkJlLFE1VShfbytXcDJ4''@;'; put 'put ''RThEdjUrLlV6U1JpcGAlUjJEaGZwfl5hOCVXcEdCQHBQP3lIe25oQk5BSjkrKFA/PXI9P3BYUmF6YkFdUkZhKn1nI3okT04qQS5DaC5qMCxjRHcyeU9namFgc3hpZz50cilYSmUvMmZ1RStYKVtBUFU/X1MqbkIlNC4iNUQwYEMzRT1lfkpnZUhkTF8xbCxCTCQqYHtbJD1oSExPe3JkXkw0P21k''@;'; put 'put ''MlY0RTE9cnpeL1U6WWViSyp9Nk9MKGVvUE1+YTpmYC4ySUpNRltTdFVQT1NbW1tFPV5kW09kd3tack9tMXd2d29FL1B1dDdtanhvUXcrP3BJI1slJUNNa1hzWjh4ZTV2dCp9dSxoRm1nR154RStYcDNiVnwyNnVnR0lkeEhOI2doKiFjJWYmdVt1Ni56bi4ubnJnYVVCO2pLTnIpcjNaZWdzUTZg''@;'; put 'put ''bCZWdzVNPWooVCl4JWUqfSVNYyVAJGlxcnBfdn5LITsoMnM5Ryw0UjAjR0U1fV5GeF1Kc2BMJnExeEU4VUNtOUFlNXNGOzQsb0g4SyNodD8pIlRkQTFsdTIwTXhYZUJnZHM/Omo7Jio5MGF2bXpSVUcxcGYhXXMlKWdEcE9fUTgiYGdWdE1daElub3QkLm9KT0I/MHQkXU1LOWY9R3QwSWJqOTlq''@;'; put 'put ''KDcleHMpISFadk9tW1AzP0tQMzxAR1ohcHVtL1kwe3kxK1I4U1F7fF9UZ05NLmpAO3haZiYuVWp1bDEmcC5mQzJxajZwUzA/ITdAVF5FXUwwTmpwZUAuKV0lNC5ScVpzZypncUlpYGoyWzVGVUFsL3BfaFVSSGY6RDk3X08yZiRPLnNyMD1ZUCk2MD4wOix5SD53Rld0NkdKYmo0ZzUpVEpNSDQ+''@;'; put 'put ''T2w1QWZmQ3dubFBOQ2RnOTxOWTlvNUM9SVtsVDFacmRpM1R+RjQmfSxPXygyKWQxeWZFWzVVPWVMIV03JSsxLnhNK2BoLjQsKDJPJEpfKWlDbnoqP2siX283JVpnVk1lcl1GYTE4aGF3XVk4b3IiO3pyK0VaIVQwa0Uuc15OWm81KltwI3pWYnhQPWwiISJrajk+JV9TV1VNXy5XNFtmeWpdSE59''@;'; put 'put ''YyN1dSVxMH1wW10uQ2xELEg/KG90NWlqWSZ5SV5EZXwrbl9sQiEoTHpndENHbHV2aHsrZCxQSUVEOFR5dlNyeGBSWSFPcCZTcHdPbi4jYWteJnN0WVRbN2MrWjNvcjoxcWoybixhKXJtYVQ5dWtvZVFHJTRNb2NfWm0/PHJjNyh1MWU5UkcxPWJSNk4xUz0kJlZ+bD10dkN2QT5zZUtndCo5JnE4''@;'; put 'put ''dHgzLERkSU40N0FleXNEdnIzcl4yek5wSXN5YWgwKkZGVTc2Pl1ucHImbF1NMlhqZ0xMOHQ6S25qW0NbOzZlMz5xYkYrfSZzbFl8eCJ2L2t4XWAjUWVvKlRTRUlZSDZkZT8vSmE4UzhnOGs5YlhkRV4+PlplZHtXZ0JfeTllLisue0tyZX4mIn05UCslfCFHdHUpQ1JtfTlnV21pc1J4SDZYamc9''@;'; put 'put ''VUFjPTxKWkxRQkoqP0luUmd7UkkwWUYoPkQuKXM0djxpK2I3RCZZUWt9Z1E6RUpofFg2QSFOYUwiQz1eW1k7RiswR2hOM1E7NEY1LE02PC5yYV8wKTI+dkUqTUZMMUB6JGlvdj1NbEZqanVxaG41eHVgIX58I3IzV0hgK1NBXlskXlRTRC9sRkhIb249WiFBM1E3PCwxaUVXZmIxfn0zfl1uJSRf''@;'; put 'put ''RnVsSFZGQVYyQ25vX0pnejpXVUtGZDdbITF5Q1V2JCx9Yn1JZFB1LiQ4OGxqKEEwUF0jMUB4PCw+SGxJQkNYXy50KmMwPnswfG8kWCo9SnBkT1NSbjZnSFdjX08mN3R+bzcqQyo6YCkpejtacjJ1JEN8bkZ4QENdZlJDRVs/fG9iIVhKYVVDO09TRys9TVkibHxjb1JbcDB8V155WX4zWy8oWi82''@;'; put 'put ''dDFKZnV9Q3gvdmBLaThbalhnbXI/QDQqQiZieTQqbixeQUBiXTE6PDshdTUsUislKDd+PHlSKXNWUipKfCFCTkB6XWwwUit3K01XRVJ6cUlmdTFXL3JzViYrZXMuL2BKdnFHTUJeZE0zS2RiYGUwQXFUYT02OnNiNkRMS1Mwe1twTXkoUGtUbjZfVXpDSTA+Vzk3aUJ+M1hCISxbVGJge1pEU1ky''@;'; put 'put ''RWpPKGYwU3JMRjUkY2dPUURfSyttOkFubmAqfWRgQDY3dHF4eSxQNCxfZktVbitTfCUiOSssP2EsY05vbitiMH0leVUwZWM3NHNnOj4sVV10TGlqIVd9PVYwKXBLXVZkSl5oX3lpPztHWnVLYzNMKDdxI09CVmw/Ym9HK1RoaF9TPjIpfG5jZVl8R0tRRnYza0pATjtAUlMuL0cySzxfenhdVEZx''@;'; put 'put ''djxqZypBbWpVaFBTbjYsOUArJDRwVlBZJGdKJVVUS08oanJsWEJxXiJ1U0Rbfl1EalBkKE1YKihncmdrZG1zfjptZC89MmdpJnFnXVosUXpAI10maWNYfiwoPTlsbl16Ki5db3JvVHA4U3lqc193NiFgMXAlSyssW0s0fFVZPTIyJW8xT2tDZyU8L1Bgb2NQbi8zfU4rMTEhc2ReaHksc2RYVm06''@;'; put 'put ''MjIodlA9Zz9yL2QpeCQwaCg7ekM0WncxQz5sNj42eGhlVXo7YCYmfVJbWTBbT11gO1tSPC9tSm1pNC9SR11ecHpjTk8valZ7JnFnc3FVaVBZT2djI0xxV2FoUWdkZDlfcUxRM05qd2hANEooZmhLKz1eZktzTHEvd14hJSoxMDx9PXx0XUVyLiJeIm1tVjIqWzMhPU5fNjldPTNiM1ZIK1UxbDZS''@;'; put 'put ''eUhLUyt2ZF5oNVN1cDd0WFN8UTh3Xz9rNCI5JUdTKzFqfjpufE85b1c5SGRyXXM4dS9YLlkoLjpwdG10VC97JWJELylwa3lHVkIlPSgub2xwL0tHXSt7UVUmQCt7M3ZHMWp2aHVYSyNnMmZEYCJOUFU7Lyl8el99cFlOXSszVj1YaSNFNFNQaSNVaGkjcF0ye2FOZj97VD1dcSEhM2Vfe1NIZXVL''@;'; put 'put ''SmosLks+XWwrSU0+a1AlT0tzd35uS0c0Py4+JGZ9KFtma0deYCM+OUtwOHBkXnN9T3EjViJyaUtDLEJfYERnZk8/Y3RXXiZXWSR+Z2FnWilBYHE8P3V2XmQ2TFNrUGMzUUx7ZiFIaUo2YS9IU1pOIWNbcFkzJjZKOko+QElMXnkhc0JkR2NdPCIzVWh5O2p+PDQuRCZ6Ll8xOH4kUWZWdCUvd0hP''@;'; put 'put ''SUhxNFA0NUVnUmdvakpxSFJIUnh0V3hkRjwkSnZyYTQ1clJreG9LciNldHpeOTUzQ2ltZUwlRXFAdWNhdkFCSHtlJm5teDFqNUY6VFpKJFg1SDFaRS8sMzo0bFFVWzRULDNqYF5NTzslIXElRT5gfFAwcEJJZiw3MW8sO0p9UmZLdlVbdDtuNE9YTShxSyQoZiZPWE0pcUskVWMiLCQjTFMpQV1K''@;'; put 'put ''JjY0MTVGenYoOkRQPHVqd11VXklGVFtobDcwRGw2KywjeEtoOWF1Xm5zOHtJLm1SL3FmeixOOz00ZyhjblFqY2loI2J9Rm5GNj1wb0Z7SUNIYTRqS05BeEQqViM5Y2dWRSk1c2h4bVIjKjFabFAvcWJ9d0MsYE1hOzVeSUg8PCNsLEYsSytaREorezAuWCJ9U1Y4Xj02TGlXQTZGIStndDBAIkVX''@;'; put 'put ''OiwqaiVielg6RztXYltXQkY6KT5rQ0gqTXMmRU1KWXMmU28oZyprcCVyVChvMD0wbSpkTWFkRVo7dE8yeCxMRTp0SWRiQzdRJno6blFsSkhha1gsdUFHfkltdjc9OGNnViF0MkR5dmFZeXpuNkRhITo/XVFUZWplT1IwNFI6aG9eUjE3aFBSO1hyT1Jga0NGRkpvVyZiSjZAJndIbUYxQEBTRkt8''@;'; put 'put ''JGB4cixxIUNwR004Ijk7WFVxV2IhIUNAcXA+IjoqTEtJaCpIM3JtZmVASz8lUGtGV2ZBOTtTeWVieFo4Wlg8SSJVayxLSjhZKU1jW1ZhTDNjeGFlWHMjOVhUREwpYjI3RHUxO31LOWdXcl9SRX1aOXFZLFUmXmVxOSxZUiw8blRYRjwpUmZvRHEqa0IwVVVyQ0VYYmN1QnlQMGs6bVohQlQsUmJF''@;'; put 'put ''OkxhLHdAZntQJVBQbkZqR2hMcS5Cd111JXFfcDNFJCRdZkI+UTg2NGUuZEB0dFZvW2NIVVRSbzB3aUBfYl1NcikxcjBmUDZKN2xoaEZuKm5jbV9bOTZMRFQlZzhqezUiez5sWUNTPGl8YkxLKiVYU3dSVTxOLEgiX3tMfE0hUlhWI0chT1drSG4kWSFPJkAqZ0goJExacXBrZj0/TVV2Oix3ezEu''@;'; put 'put ''fFRYa2hqWCtUQVdANHY7IlZYc1skLGhVfGcwSTpHW2VedU9YTVtzakpXIVVPWGI3bFU2Wzw2KSF8YmF3SyZFYmhtJURhfU5Yfj5QQ0R6bU1vejEpPkBUUD5DOjljRiRaOn0zN3xoSUpSdkZoeEZiMyYpXjRqJU1rPyFfSUo8bXlzKWFxfV9yUEAwWilUPGpLfVgmeXR4dyo/eCUpVF1tMjciWSkr''@;'; put 'put ''JV4zXTojVHx2XzM6NiRndmdWM3N3NjUkQiteKHBaJiN2bG8uKU1ZV2tGKjg1cilYTzZsNVYjWUBNKWx9QWBSSnxdNS87SzxrRDhFNFl6ZjZSK3lWYkJDW01rSnd6cFpRY2R4L1o8R2sjPnAmYmUxJkdWc155SyVYQyxMNFp6K1lvYj4hMFQ3X2FuRHchaHBuUTZMb252Vzp2MFcvOWJNQ1Q6SSx3''@;'; put 'put ''eC5NWihfXzY7TXhGYjNKREI2fSZmRilOaCNmJDNDP09DY1B3e0xmR3BzdykyY05aNUtrLHpzKi88P1BUQ2x6cXg1VVY4VkxYcj5PdnxdKmBaIU5zUHt5KlhGYmBGQT4uUExeW3FJWlAqNzprO2NBJHdSKkVzbEBRfiZ2KStlWWZoTWUuP1h3aX49SjxRRCsyRWpFITE5R28vK0t8c21IRDtpJjw1''@;'; put 'put ''OFk6aHBrNWJidEdRM1NuPkA8fEE2WTBMPHxvRjxyPkIwPitxUEFGNEtES2tNWj8ueFlmLnN3JE0wJX5tZE5vVUAvRC82O3JGb1Y5YlFsTDNyKWJXR1N8SD8zXzBWPlpBNlNgMCZjOkBbUFJSSE0mR0dZTmVHRk1KZC94JDQsTS4yJS99WiZnOGFeIjt7LGBINFkmRko5P314fkNwUy5HKGdkMSQ0''@;'; put 'put ''UDVnWHA5S2l7ejl2d0tIS2VGfk0xPWpjLm1RM3RYIVpjPEhNPzNoWz5bXUxmNkcyPDMxMTV4fVVpLjZjQj0weFZfVVhVNHV7Y3p8QmVeVzB9W1pzTnE9YWpkWik9MT1PNiw7ZT9iIWgpUyFbfn15L318U0xZLCVFNjVDOzNfPG80YlFlQSxmeXNVK01PJlgwQUdGX0JOTFFDaFR3QHQpcnspW0w9''@;'; put 'put ''WFJNP289X2EoOT4ocFJwWWg0TntxQC4pLEV8PUQ/e24/JSt5IU1gVGhEYkRHKitlKnpTUjE3Ym1CZF8uRiRsRHJqWXhIT1JPbzN8Pmw6TUFbOX5gOUFRZ307PzdHTmVSekh6XSU3UmFAOmFtczY4PVljdTQ8fSszKnd9ZGljaWxFbHNNW3NePzdGeXtUP2NvTntxTV9TVVcpeS9HMkdNbntLeHNe''@;'; put 'put ''NHdRb3t5X0lFJGIlNitsdFBNcGlMaTg6QUc0IVspZHBCOXc/XlZJRFVNT1h0en1WSilMdXVlZjxKbzFvYV81QEgydjJvIWdCVihdanhSVU5CLFMmV01oekI+JkZ3KiFBRXdfVDRSOUxsOHxGJCs/ZyJMeVh+UHVNKmM+XUYqeE18YythfWclSDR6WU1STXNwJWs7bE1mL308MWhYVkluWHIrd0k+''@;'; put 'put ''OVpHTTN2dlFnNk9FRW15c3lbdGEqY2c8RiNERU1LJlt6KzRgW3tycUtPMFE6U1BKS19jVVZmfSRvP1IwSWFFd1t1UDdnQTAlY3QsVzxhSys2SXRjSX1vSDN4RDtyX2NDdSFaXl1BNDZpdEZFSFgzW0olIiVwek5WdGVNYnZ2RDFndEk0VTZ3ekR+a20rZU8ydEBncythKFtGM3FTbm0rZFNOdmY1''@;'; put 'put ''MXUpL11dO2t2aUM3bWBUSEprUXJEam15OmRQVUZSPzp8a2lieyVPXWE+JXlIK0pYSlhZSEFeW0I1d3RwaV9dfjE7JDVEZHxGa05uT0xqKHJPUn1jLGpseSxtbDMqLE1tSWhjTFNuOmEzZnl7UHVVbldHZXxkfCtoKjlFWEYzK105dTJGQSorQDo+cVkxbntMcXV+NU95XXs2YjVuelBzPXg9Qyx0''@;'; put 'put ''O0NUc3UvRlcpW0h5RzFYaHhjQjIsOXUkYH43fDJsZC9GVylTXjg+LjM/KVp+SnJNOiZrJDs3UGtNZlIiMWhdbWtxQltWb115aUZ8KTlZIVAlJCRjdUpqYkpMUyRWJkksO25tVnV4KzRgcj5+R2dfek01PnA+cUxAJiRSLlFqMiolfUc4MVhebGhzaS9mUCY+K3MocD5UUiJTOTtWZFFlNWE+IWM0''@;'; put 'put ''Xmlsb1ArLypSO0wxTSw6QCYkUWBOemZwIkJuRlVaW3lKUXQuVFhqcl09bGo0Jm5RfiRxb095P2d1PDx3JF4pLGgpMjxdJlNpNT0jP1toOkg6R3hoKW0ueEt8KEp+dUN4PH1qQmQjcH05WytLLGYubFhlezl1PUsuT3dbd21SIVlXbUUpP3l7LD0uK01rJl1Ae0A1X2w3UjFUSTNLfV53bDRneWcl''@;'; put 'put ''JSw/fCgscklSNyFeSSJVdWM5KlByZUJNViNJKWY9OT8pKkpKbnExakl+SnFVKVdnPi5RPyxjMWV8cHpIdWR1W2dWKVV7YFRvaU0yS2lJTDl5PV0ieFtnYT8idzBSQGdsSVt5KUZdc142LGxIRUJUan50dj1Fd3tZU09eJHV5NyFpJjZXa0BTM2VVVmsoIW1fSGt+ZDM0bTRyYWp1SW0kK21gPS5z''@;'; put 'put ''MmhWK10jYkV9XXJgQEB0RjxHLyNrOGM5cSh0bDU7MiR7ezteViY+ViE3PTMmK1VdYz17JF0vIXNwfUcyRjRWc3M9Xl4ydityfl1sUHw2X2VWJmhzUGdFX2U2Q3FQbDBTZjpGVHBJaFZwPyZ8Imk4KzlofF9dO0ZiL31nbV1fN1FDay9HXU0/QD9wLjsiTWxzUVQlMVNQeWcyU2l3NSRRaVNge2Nn''@;'; put 'put ''bGVqIjw1ZVR4fm5Vbj50UW1oKXkrall8JDd8Uj1nL3UlP0lAUTldQV0vW3hvPjVRYCY9cUVmUntuKWAxLDNeU0Z1Wz9qUDZnN30jLyQxaG9GeCEkdWEoLyY3UWoyKmB9SjBNSjxOa0BaPEJXKkVMdW53e1FaOyRCWkFnVmlbMiJFblUkcncrYy9GTTAhc3AoL3xUaFNEUXt2dmlQRytINE9bOFo0''@;'; put 'put ''Wng4cjdbdlBxdVUwQSEmfEQ+XVszeCRLP21jSltEPnw0PUchWCFSdnFSMTF6JVJZaD90XWhKS0RfV20rXWFMSDlfOlJ4aGt1fGI0d3dFYCZ7ZFR2YVhpan5OUEQmS0RKdERGSngpXnldMzg0U0V4NDNSUUxDbSk0X3RdYSRPR20mTElSPSluJTpfU359VG03SFVqVWNGV1skKTEvbHdrL0Y8dU85''@;'; put 'put ''NEohUHFOYUJdcEhYP0I+OkpIKGE7Rz5vK1J5SyUyQn40bzZEfFdVVXZETUg2X3drd15CWTYjTF1qOmVbOWFvezlXYj1KZD9bZ2xKa1UpSGIsQmF2T2dmP3RsMWBYMDRzZXdPb1FDPXVeTW18bXFLPWxfT347UT9iL0xWdU1oMFVRKkhefkFALm5FJDUuOG4lQ0I9JWAzbzdwbS9NNWZNdyUpWyo9''@;'; put 'put ''b3Z6YWFpbmVIKClJSmkwMlE3RVIkY3t1OVdAc3pQO2xSeF9fRzM1TjhIW0R0dHBVUjxaUkheO2pBcENbNkx6cks0SnAmKUxpaXNNYXVPSW4zUVUlQkhqS0ZnSyQjOHImLyxKPXxXXSo8aUxmWCt8XkZeY1U9aVdYSCgibGR1fS86PV1dcU0vbTxfXlgrekpiT3NsZHgmSCgqTFFvX1I7PDtMT0wx''@;'; put 'put ''QzZMOT49dFVAYExHaVRALGBEdDQpRGszU0AwIUxASDshTGltZ28lW1BdU2xkQVh7KFlvV1deS1pfPVEzRkh8dGpPPUdtO0hLVVEodEpMOGhjXnZ8Y1JXekUlXilVbUdoIiVNbkcxSnl6KGdbRHI8Olp8XXdRMzwxcHRMM2RFcWVFLnArU28mMWgqeFRPeVdsTVgsdWooNFlFY3wicTFjYChkci5h''@;'; put 'put ''aVszMmx4R2t0eislKTE/WT1pbn02RTlpTHd6U1hHSWhxW0diP0tpM2tDPGhsRTM+UWY/MnVDRz9yUDNoVnYuaFoxZ2M2WTthfVBBMDFuMSxWJU8sQ1BmcHxiOHZIVzVUe3NgTHBZXTRTKSNeISIoLDIxR2FpWTtyZyp6YSRPVFB2dCNJWTZmWWBLRyIveDl8V0pNTmt8Q15tX211NSwxIjFXa0ND''@;'; put 'put ''c3ZMNHBvPW0lQSZDWkJIIzM6c2FweWRAMClie2xRWDQ9OytBJjBPQFQ3SVcqNEtCL3clWHRXLm0jJGJ5Wz1USiFkZzp9bVlpMD5kZTphPjp4KyQ6aiFeRjt6cywlLH4ue31WeGEiPSwlYVdXKCM2PGchdFc1KHdaJnAzeHIxe3NULyRVKTwiWXRGSi9+bGBrfW4kfT1LeEk9S3gwSixGWD1WKSY3''@;'; put 'put ''fT0/ezk/XU9FN095LkUxUCZqQUl2KSYrbzJrY1tpaHgyYXVtS3dhVUBRWGc/eCJFTiNtYkJsPytIXjNLLkpTN0VSN28iOTVvKkQ1K2J9QDpGXTBmbmFqN1ErKmtLYkdUfkp5U1drMEBpLDhNPTQ4UE8jIlluKXM+NnsyUUtVWkdTNz9zUHokWFVOUGxOQzcmfTRbOWVoQ2k0Szwkcl9oS1RvMURw''@;'; put 'put ''THNwMiZOVDxxL2I6KHpwakUhVm4+Kmg5TXlQenJDIUR0dyw6aCswOE1JJCVaZks9IVFUQl12cj5iLHd0TUNrVSFCR1clYX1+cDQifXpQTj1fakBOfVt3UEdPdlp9aGoiNlg1Tm15bFh5a15aeiJuV24xKj9yb3JvP3dndkxyUkAqblMve1hYVm5VKVtkNClddlZiXi4mRjdmd1NBYF8pITNbPUch''@;'; put 'put ''MzwhKn1NRzslUW48eCt8WFR2fkNCaiVOUTtFYWVPd2pZMGNjVTo6QzFCbkQifDI+dUBtK35OYSFVRHh4Ym59VDNCVSIyfXlBKUw2WykuP1dTRUJtS24rbDRkeDF1amVGVGcmQUJQfVdvKHEkRkRSZ1NGMU9OaWFFSUo3cjhJJUNLP1IwXUg/aWBsOSpaIX1bZG8ve1YzM3o8QW4/XUNHWF5QUGRe''@;'; put 'put ''L15QcyFuPV86ZSF0dCwmVVp4IWRCKyk7L1hHRjoyLFRQS3xzPFFOL1UkaXJ4SitPcz1ZJU81YjBHbGlXXmtLWUpqeFYuMShneGJtLikoV24kUlI1V0BPNGMiTXNTUk8jUEFaJHouKT1Md3FQcFEqPVo7YU9QXytlVmliITtUPSosI3FYZ2JvdDJnXUlUaGBrPl9GaTMraHVgInouTCxvTiFRRzxW''@;'; put 'put ''M2JrUDI2X2pSJHk1cnNdMFFoXy8hWWY3b1NjWTR7P3NwRnghc1UheUZKRUkoSlYlWHFVQChlPFhpIyhOdnx0Pl9PZjUuYC9ZdEdKaX5OaVVXYGBdb004Ykx7QiQ2MWpVRmYwdXE1aFc1fnFjZzE7QERjTF1fZ1l4ez04b3IyU15kbU1bJjJmYE8wSnt4WFJhM2grd3xvSGA6Xkw2PmpZXnByeF4o''@;'; put 'put ''P0c2e2EpLDojbG8sImRaPk1rdlM9RkxyMnQ9bHpdY2ReYWFEXV1ATDlAeFtIZ0g4VkEmfHA6LDh1aHVWPUQjenQ2OFhxZ3Q2PWVCeVdOOEN3LkpUVWFqW15YJncwczl+e1peTzhZMCRpeS8zKWFpbTlEcmdPTV1oa315PTFUTl5AdzE9VDswR3Z0KUlDaTBuSF9DOVc8QGxmP3U/YTViRXJKYHJ+''@;'; put 'put ''ZTVgRV9Da1JBUzFXY0xdJDolZWtCfHhKVyVgT1FAW0VUS2oiYldINyM8UEtJa0JfcHcxKTkvRCRBMH1MfVJyMV93K29dNz5RajI8VXtTfmx2Nk9NOCp5Ljt6NEN8U1ZveGIpUFRJTE5RX1NldV5ke3VINUNXI2g2Wjx1M348fF19MEc+eWRBXlVPWEZodiUlLGNbOTxzUilLPiVHe2JTbyk0ZWhm''@;'; put 'put ''YzIwZTRvVTF6QnRhNlJKSkY9PSlqYnlqPkpWOEJZJEcyamFrc0dwOlVLRFZQX3UyPj9PK1kzfiJCY1oqT1hGTl09Lj55WUYoR3M5TTsqYVslUVNffFUmUFcwTS47OV9Ha1lob05wUlpJUmcyVWklPk0wOn45e0wuWHUzUiZETWFYUXl6e1NqWncxKSNOdUkwRngzcWB8RShOY2k0YW5BT01MTXgr''@;'; put 'put ''eSsqWHReRygwcWFoIyF2UkNLQ0BNUm1efTNfKUolNFJPJWZmIUleK3M3SEtMVTVDRy9VKEReZXZPOWJTc1hPOCl4UzVRTzc6NnUxYjQvciFHMEFaXmphVWp5aCRJMk92JGlYaFBvJV5UM0U2L0ZHREdmV0U3PiZvdTtlPzMwYS5lLDViMSliSjdRPTtePEhQRH56VndsZkxxSktHVyNkZktjU09R''@;'; put 'put ''bXVpM0hvUUQvOl5+Xmh4KWk0TTFefi4qamBuImpkNHorQFdddjssNjg8VEZULnAwSTp3X09xLE5sSiglMEZqYjo0byEmLng8NVFzXTNaKFFEdzspIytJfnw+VFpKUEdSd1lCUHNMRE98d3JCR0ModENsQkp0cEJiKWJ+NFtmZm1VfURWRV1CSjxNRCl6NFk5Y0pOPmQrRGBzLm17Y2NMYHJwZS53''@;'; put 'put ''M3FEZDhdSipUUVhlME13P2tyLix3Zm1nKTp1d2AhQDVsMTpPNmwle1R0MUIjd08obHgzeTZXTGBFdGAwT3tbSjxzTkcofE9OIyoqWn47Iy43IyFPalVCK0hyREZYKzJ2NTVYYHBTZ0VhSnQ0Km8rMiI7OXdMdXxMQENoNSMiM0cqQ1h2a0pNOEY2YiRmdDlvWz8+Ky5SVjFYWFRHKmcjdishNm83''@;'; put 'put ''X1ElZ2luSXxpbngsQ0Q9fTR9YE85SzxiZ15UODsvYiEwT34pSUosRVo1c3xbQWx2d3xSQDNsP0FVPjVXW3IseSVjfDB3LClAUDduKnksNmE0UylKISVLci5qOl9QNldnRnFvUl0zKlVmZzBITUIsZVtBKDpgJUxeUmVFaEdrOTksZFJFWTxAe15RbXxAUl84PmZTQ0JMXUt3eElUWmc/azJQW0Uv''@;'; put 'put ''azRdUE9uYlVAPTVJIT1ybWtNdnMkZW02cSxVKTBtTDR6ZkVtbXYvVTJwRm82WVU6SFlOXyxNViNJPDpFaGVHIzVwRTE1KSpqUCExbyNsJXhyITRjRlR7OXxLc2ZfbTQyPiVLOSNDITBZYiQ3bW12UiwxRjtqQD14N190aUlJQUNeKFA3I0drR1o+LFFSMlBidlZMPT5eOVA6cDJgKm9ROilZRHJx''@;'; put 'put ''bEppZT5ocEFTTFdQbFAsdnk2S2dWNk1NMUFxWk5oLypVdlNaY3FRTTUzfjg7TzAzLlFMUDVbU0Umd2crNDk1SUR9a1t+KyZHUlVANkZobGIwcnBeVmVVODJJOTFJeFAzKXo/UmxZVmF9PyE3cHR4bnxgalcjXWg+TTJlYUpUKjJMIVdtakp3bCQ3JWMkIV0hRU87JnBsUWxRW256YXcsTU5RMXsk''@;'; put 'put ''InxoKFI9JUBGajReZ294IS9wUiU8e012WDZAUGohT1U/Rkw7TUdzdUVRVzdKYUdReGFTN0lufVhyOnwlUyE1R0o2LyNZJG4sKCNSYjtnI09Kc3VsPWtYZEdqQ1piUX0qVSVVdXA8WGw4LFBnMn1qY1ttbExbYU4sbH0wKWw3X1ZyU0UrRDEyaiQuIWR4bV42PXJZUyJAfkRlSUZWQV84Z093YHUy''@;'; put 'put ''TyluSFFaSHN9QnxbQF5hLGQ9I0Jwd1JKS1YmYlFVaG5ybz57MFRJYS9TeyE4e1BKV3BRbj1QcClqUWYxTUZ5TDh9PThnVjxRYUwrIWtAOG0sUyRrZXtiRTpBKUYwYiNZYUNROjVjYlFtdDJLLltxNjU7bWdQPlFER01CVnYheixZZVJdKUtZNy5oNjU8Rl49K2dsRX4me3VbIlU0Pl1rRHdsb11W''@;'; put 'put ''YTxrJTRhfT9OQFM+XkApZ2c3X0A6bDQ5NyxXK2ZvLH0pIX5TI3cmYGh6biYxaGdXOyImdj93NSZbYjpffGNpXzFoQFRmPUs7bEMkLlo+eCgiY3lOfG0uaG0zTFF+bC8sQ15VJXRsNE9qaDVlcTRgJmdMdzYhXnMhZ0hwJl0wUVc8L281L3Y+US5kQHRkTTtdb3w/Oy4kfEtTJFpFL05oWiNnPDRA''@;'; put 'put ''VFEvLDxbfVZhR1ZyRjovb3wpdlRyKVtRd0IsJT09cn1Ad3xnVVYlUmdfNEhfeypXLGdwLkFkfTZAUT5WK05LZW9rc05lTXVxTSNXbkAjYTZodC8pRzRaX0A7XTRIWkwmai5RMy9NSXsyZVo7YShuZTRZY08vWzQyMmE9WUJ4JHpjSC9rNSxvMV1ibzxVKU9IJHJzYyp8YjZ0L283cTFQfWJaem1g''@;'; put 'put ''OG4oNCNXWlZEVk8xPGhORHhDTXVGWGgmfVVoWDY0LmA/fUxDMSk6Nm1VSngjSVJ3ZjlgIjVmSFUzZ0dNWUNva3xvNHZ7WVNzY2FWMTRKc0dxOjMqSlY/bF5EezIyW0RxSDFXa158SitCN2xhdzxvdlBIcykmTSt5bSw4PHF0cyRtN2JHKDpQSVBVZUQhNX45YmNBfStlTmNNPGpjbmBFZi9JMHs3''@;'; put 'put ''Kng7Kk9UKjM0QjUofWZEbnJoeE1mPmljZjthWkZZQmdmW1tiLzFtKWMiVS5fa0BSKSFrT3Y/ezJtIlZkVHdtN1NINkBNZ2NKajUmRU1LaikuKXNyTVB8dmBQZXdLR1I7MldaVTFPOUY0MjdibiZRYCRSQEVVVmFhUS5tX0AzdHpMUU5oIWpxKCZSQC8xMCpEYSUmTSleJFdPZX5pNiJiOnsjIyFD''@;'; put 'put ''QURKIkN+VyNKK3tvXjFPPCx6PDlIUGU2T0p8NUt9JSE9RiV6NSYxMEQ6fF4+bjIoUXR3cXBYL1ZnViZMKG4we1FqYnkqZldnYVZRYiRPQy5BQUFBTnRDQXc0KSlSd0hIIlFkdDElL1p1ZFs5NTRzMDBLaFFdMD92bk9xdWdFYXR0QkFBQUFBQUMiLCU4Q28zOjE4PVV0Zl5hMEdkVT9XTEhEIzhl''@;'; put 'put ''OWNZQDBWKC9VRUtDMlJXU0RKV0ckZnxpSFAjZTouN3xZYDw3aVZdQyxlaElvc2VdWSFRdExkKC5oY0Q5anYhKjpbPyUzai9CPTc6QlUpV0lVSER6PHZiQkJ5biNSbDJuVllfKm9gKj1LNkpIeX1BezpsOD11LlRAa15wLkZrdmwjPjNvbjR7UnYkfG02Im16dltKQiNfL31WU087a1JpbmokNjts''@;'; put 'put ''LGdyTlkoIl9LfG1NXyhsWil5eHt2fFAmI1Q5Ln1zKUFXXkBTQEdAV3tiT2wzR3lxczcxdkdYVVE5M0leQz9RMUVnLE5TUk0mVVgqbktHYzJKKVRgbGQ/SnEkWEgsLCpKOV5mTlFAXV8mdWt1P0NNfFd3Z1ZoelR8WCprW1ByLDZ5YnlbbCRhSUVSe0JEczArckpvL3x1aW11UiQ8KkhpNSY2KzYm''@;'; put 'put ''Pz5kYVh8WGxvektPcllqeSxsMUB3byM2ay9PTFlwNFpTMyJ1LEp3fGpFTzw+Izx1Z1ZuZlkmMHdedGF1c29FWk44YU9ucSowfDhxTUxXJSZsZnxMRX4/MUxyO3p+TFNXXTkuOFZUOEJaSH1wTmJadXBhWCV6S3s7Q0x5Uzg9RyxXPSY6IXlMV2ZrPEIlKHdBbE9TNUpXfmwpbyhBJH4pLG1qams3''@;'; put 'put ''MWpuTDNoKEY+TWEkQE47eyoqL3V+cGdUcGFmdC4xWnEqa0F1OTJJeDthPHF6LCojakMrL1dDNipHcys2RSVXRi97fUIwW2ZnZ2clTWpmIUZ9TkRqR1FvfkZ6ajs1Ny9pNXEmYldSeUlYVSJZIlZtY2IlKkJZQDBTY1pNRHRqOUt1TmVJNUVmYkc6U3FQVTU2bD1iZEpOKHdSfDY6Vnc/cVouYS4p''@;'; put 'put ''RmNzJm5JMkcpY30rLyRwSUdAZlBbYnlkKEYsaVpgJSRjXl5vXz1CWUk/bXFGPzZaZXk7Y31tWz8wQ3lzYT4jTCRkP2tOQXAvRXkvJSo7T1dwbF8sMypoJldTd0JoaFRDMGNGTktdPUB1VUhhWG11cmRXMnc2eGkmYDtnRWxNUjtidDpmWy5xc09bLz0hTFRdL3lvNCtWR2YhXkZ4YWBxUFh6Sk10''@;'; put 'put ''SWtmd1pjIipkRGFSXyRnXWlrWCsiLjNGXn4lUUpDPzF6NzdjYiYma1ZIPFglWDE0d0AyS2Z7KWNwTkBfP2JPWnpveCg7WDZOdjg5SCNKMjldfnFeIkMkflA7RGtMJShrZitJMyI7VzozSHBwNEtlTVFmPWNddikpSCMxOEdYLiJePFtiQSg9Z1ZueTZncnB6PlBEPUdwcXhvMl8uaSMzXXllaVA9''@;'; put 'put ''bE8rT2khT2hFZyNBTkE6SEpwaF8rd0ljdWE9aiMvfCYvWUBoSEple2tFQmApcG5BbFFoODYjLEguSUw2OkU4cDteP115NCkzPkZHSEdQQjJ8SSUhYzo2ZSpFeSZqQiU9ey4hZUZDekMqT2ZOcD1rNCoyaTl7PVQoa3ROYDxFSG5lQHAkTip0ImYqdy4oKXFXP1ZzTWF2InZWSVB6Qm9GI0wmeCJI''@;'; put 'put ''KVFyKGMpLGFWenw5MndFUVpYZ197OztvYzErNFhTYVk9a1hzdXtocTE4VF0jMXJmU2ViZiI2aXZNN3opbGVgQHY7Pkt4K3ZFUjNnV11be3NAcDUzKXc4S3hgZVNvfTBgcTlQQnhhS11+PDglRVB1SjlxaDs7b2BiQzU6M0pYImEmMiZtbXh+NHcoMW1vfC5TNXMwfT47O280fE5IV3F6ImJmIj1n''@;'; put 'put ''UHkjMHIqeFtSSGtwW3F0S3NkXzkoeXUibWZhWDp2N2ZkXSZOOG1uMUJldUxtc2AwdilDVGY5bD5qY0oxLixERyQ2d0VfWjpPYzdbTFVER2tIRERHK1FyR2VpYlQ2dDw8XUlnQWRYYHV8ezJyZlgkVldLSjl2Jl4+UE0mL2M7PGwyJSJQU0RSM31IJj4kImgkRkQkQnFYcnd8UEByZ1U+O2RNMSZS''@;'; put 'put ''K1RKQCtATigiL28oR2N2aTtUcFVieG4xTCQ8NiwwQT5CZGF+XXx+OFA9LnxzYnlyUlUmOksrRn0wJS9mb19LKjJ2XUNUZCRmRztHInddPTVCaj8uODVSUnVIWjoiZT4/a3soTzlYMD0rRk5nTiJ4SGdacDZMJFlJb01LYTRwfjpqaXRIKFFNWl9dTmI9IUFQcEB5dVY3cDxgZGJQO15LPV1FOjQz''@;'; put 'put ''SS9zfE4lRzVXNGdRV1c5RVJAc2JVRiV6KkcycV1IeTt4IkBUIjZEfDYiKWRxQ2tINDh0ZnlZPmBeX2w/SmVwNXA9JDBkZXR7TyhhSCFZNWguVTwxR1A9Qi5VM00vOm8qNXEoWTUoITZvKnUzeUZIR2poQVN2P35ZUH4mZ0txQiRyRU54ZFIzc3ojWkNtaT5ZQnQhOCN3U21Ie0liYl55M1M3V1km''@;'; put 'put ''Nkk/ZkQ4K3F5K2BrQllueD1AKXw+W2NsYUtuNjZ3fFN7LzpOK1Zke2JmMls5KWQ6QTI3cDd7fTcjR09uJFBgSHt1KWxFIS9qYktaUCpETi8+fnkoek9yY3ZAK2F4fUlmLmoqYF9LdVY6SSomWHkyenk7cnUvIX5hYTAvaGg7VVFqMjlHblVGbTEleWFvKi9vcChBfThtPUxgTEs8XlVjSTp0MShA''@;'; put 'put ''Kl1ia3ltRnUkbWkqZzc6e2FHbWlnKmomYyN7ZkxCdSYwMTBRdFRtJlRSRVA1O2NKKWJURFVuc250R0p4TVVMPGB4LmQyZ1hffWFEYFE8YW89PSNXLlBhT21VJHI2JE1MZDhuSzZWTj9VdXo3UmAjLltOSnwuTjUySV4wJWhNPVkvbyFneG9DPThRQytlP2plUy9DT0d5KUtrbyMmO0VUbVNtRm4h''@;'; put 'put ''YXpiNFRxbWQyRUNNL0hCZDJdI2p2Sj4yRHdgUldxUChtfEp0KSQ8WGUjNUY6NSNFNjEiQVY6aEVFNXpEVFEiWVRra0I4WSslSyxqIU9pQXFuako7MWd6N3VlPHVKKTlZKm45Z0ZoK1M1S313S05gJC5GLCRMU3tlQldiKUYidUwoblJjSF9KUnV1aHYxKGNORnNlODs4TlVeNzJYUHw9VHltYili''@;'; put 'put ''P0g7VnorITh+PHBpSFgyalNYPU5tV2Z+c0IjVDpiMSJZdTJmSVtKVjFHaC9ub3cobVRlfltkNDRFeSxmPS8xUFpKcCQsPnYxWlNqTkZzOXlnWUZYdG98LD00SEN7LnpsWCF5b0tVPDAxM3B0VDZLLm8/I3ErIjAmUn4+MU1ffEVtVTdOXzpvT2EhLE9lTlcwY3JLdj5leHFtTmU2VD5XWSQiKzdH''@;'; put 'put ''KWI2RmNxPmpmaHRAdXM0ZmBTandtJHAlTlh1bi5CeU8kU2RfeVI0bG0sVEhNMEpSezlgKk8jfnF+TH1bM0M7d258MCY2R14sdmNmIXQ0cVByJDlJOSN9NCMrV2pUQ1BGMzF5L1ROKGU9Um1lQi9VTGlXb1FVUzd5L0VBMWQjLl1bSldlZCk/VThmeUpJTVY4anhENXE3Rnpbd28sfHg+ZFN0MkJd''@;'; put 'put ''SCwidnt8JTxNMyNVQFkwNSo5cGlZaSlUKUx7L2dyYVFoRm80X21zd2pkMlAxQEgiSzlrY1VXPTxGfVdXNklJbk1vK3RvVTV8QkpwQjBSYktaWXV+SW1VcWF2O3M5VGQpUCVVanU2aSY7aCowayFCRHlwTk1UIU1aPTh9LFQxP0ZePXNSPT85KVg8Wj5pYXZlQmZFenw2Ynpqcj5Bcmg+VmpqdTtJ''@;'; put 'put ''VFpATEtzYlg3ayYhOjVeX043djpxUUVHfXYyX3wxX184UGlHNmF7OTNAL0J4VVtyOWt0RU51cixwemBJfHtOVH1pRy54dUdxXmZYazhoRCsoKUFENHp5UTlCITQ0KWVyWCE/clZtInVVRzAoXyJwWllpZSZbSnBPU2FnPTE7MW8xeHpabWd1Il1DTEhGbD5lJkN+am42MlM9SlFpfThWTlUscSVA''@;'; put 'put ''YE5YdHVpW0BAVDxRJnUlK0lwZlI0KCJtbmdTV2p3XXJ9S3s6VkNSXiVJMXlpVy9zdXZGdCR9Zzhud2ZfdiNaalBiekh8dUcwP0FufHBiNTU/aUV5IVBtNTJseEJQdW0sbDxIX2NzMSVuW05HZyFza15lWSRbNUw3W31sWTZRZGJ6OTdvQnw/TSFHdHk1JXhWTmJOb1pgdHE4IUlNXVJTZ3o9KmJH''@;'; put 'put ''IkR1cVMmQkIia3ZuZWhdc2wjKVRMUXZ8UE0ie1ImPS43KDFtZVB7KnBKcE1hNiF7WUtpX0w3M0lPKFY/NGhdNVthPWpXLyEqd0c8NEF3OWYiRHRseHo9bmpqXmQ5O2QsNkciIyY5bT1iRz12N0M5Q3pGMW8ybVUjVFNWeGorQFJBdVRTTywwNylEYGEybjhkXWArRExZKjhMRlojPjt1QDhMRWBC''@;'; put 'put ''cH1iP2BJRVpVKkpsSUUvKCZ+fndNODkjXiQsM0FeS0AzS2RfK2dSX2c1ZE0oQX1wdHw5T11fPyMzZXJIKSpAcmVWLiFfQDcmdShXZGMoVHJWaFRRWnMoOFtELFYzaTJ+NDgoYSY+c000N3d5Y0ZrbSpSZHYkZ0pGRFlTQ3AyOUZaUjxmPC8lK0paYzh+MWArYnxeZmY6TyhMajFRQmRNMFNCViVN''@;'; put 'put ''a1s8NXlpVCVOXlVkLmp+XWs4UlgpInFQV0B0LCVYbzhlIVs1bDxoInooJTtGXV5PdVN2PCFYclt8SnNKWmVZbUVqUTdHO31zJThLWldmOmJtcWo1RWZzcywkZ096KlA1aiF+PyREdU5tbXxsMDJFMlVYeFgsTTluT2F3OTtUMDc+aGZgaTc1QWU4cFRSUUx3M1J6WyFGXj98VFR5M1cmT053Nz9o''@;'; put 'put ''NUhVZVs1OFZofTcjZmk6OWlhUiMhYXsjS19nMHRoVmRqLFgoZEFzXTZuKHNhZ15eb31ua088IUs1KlpPOUBWcVVuL3Q3cWpTfSZvKzMxUl06Pik2RHZ0SVErWj0haytSJTBnRzhdMClHOyY1OFprMSRgOEZ4UlEkKmI+KSomWkxDNlZ1V1Q0PEoqY1ByNXVqYG9TR00lLHJjam9ZdVZ9UTxNX1Ng''@;'; put 'put ''QWlGaU1AS2hVWyFkb31ae2U7WmNhLzVmZHJ7bG58IU9nN21fVjVpSnp7IUI3MV5QYChzNig8dSROaS9GUjNiYGkxWlhMPl08NTQ5YFdZNz1iTy55OTdFbyYvN34oT1RIdmJDOj5wPCYsKCw4NV9kSDBvWFVOc0pNeSYuVHJeZmlhSlBqP25sM119LD1ieDpOcXIrZ1prITROJHBFNWQsJDVYSzBI''@;'; put 'put ''Rmpncm4sa1clSEw8T3dKZntQdDNkY08zMVhtTDkoYF8ma2FwLGQsXkpNRCNOKDtGOTRGT0V1Mjt3KShqdXdaZHYxTzU5Q0hdaV1zY3AjUSxLclNLPEc+SHJ8X15uaStxZ3tHMkxiLiNhVlZoLzlNM0szfCMhdndFNW9iSix7KV5OemVZKWZAUURMLE1jSm5QYy4yTmA/THtXPUMmI002Nmp9SWdC''@;'; put 'put ''NzUpa2d8VThQQkkpaz8xbX4iQmIvZGkoO0Z5MWRodj4zSW5+aio4ZXZsM2M0WV16ekZIaTQ2ejVgTERDIVZmRTk+UnVrZVtdeT9yNzY0W0BEb2hHMn09RDJyIWFhdDw4O0l9NzVHKi8vTnFDdngiTkNHM15TWXt4ISxpMF46K3gveUc4IzRaZCNwbHlJVCxPXlFScys5eEkmQkZXbmhXKDZ4Lklk''@;'; put 'put ''eWdnd15yZVVmRCZ7QEBsa15qVDxzOlc3cj9FRT1pI3heKEBGOTd2eSlQZSIrIiNGJE8xMjxHNnRSJUNGa2JWVm4zVWt7b1JELzkrflZoUVJ6dTBUfm5DVT84UDdUSHQqLmgsNVZ5WGlEJTVrdV47UGsxWFojRkdlX1UzekgzQUllPTUuOGhLSnkocF5VREhSP0dRXmVAQVR6Zl9sRyVPRV0pb000''@;'; put 'put ''KzQ6byJERDBbRDZKflpzbCs9KXRbdmxQXzc2YD9QPldKSiN+WG4xNSNUfTlPQXlhQEMza0VvOl8jX2hiRFZ6ejNJSHpvfU04UCMmMVlwVnF2LDQ1Ol1HT2QoTHNNMFFYNW5TI2UqViZrcVR2SkZANDwvfSk4JmwwYHBnaVY/NG02fkJRO0JSYC8pKzNKYFZYOTRNUHtsPmkqaHwhWEJUa0JtZkdC''@;'; put 'put ''TUhfSklFR34xQEpMIjdEZ2VIdCZWXkt3S0NHZDQzTmNraGZAO1sxYl9MWmJdZmRtTH1lNVowVGgjJmg9YzRQZnIkYk9GMSNwUCU7R3M0OkpXclJTTSlfZzxwSkRKP3MkLmNienQ8RHZ0R0AwXVI0SiI5QHREYTYzSGZAU2M4MnpMalRgeWhRQzI9OWpTP0tTRFNwP1Z3d3hwQz1ldiZTRGA5WmZ+''@;'; put 'put ''VDViXntlRndENkJLXT1mRGdDazc3O3lMQVlwUkRoVW4mdGY2Kk40On4ubSgkRkIrVF9vWH4+USZBcSFqX345T05nfFcpTmdaJTtPP0FjNk1bbD5bQUVbdX04cyY/YFtKey5zO3VYIkQkdG01PEVmaj8vfD4kI2FyVUxqJGVmJHc5ODUhQCsxWj9OIUovWSh8PEhSUiluYDB0e2BgZDNDdCNNb0df''@;'; put 'put ''K0BYUSxrc0NrVX4qYmxqens7KlVlVT5aMHBjLmNIPCN4Rzc5JFl5V2hjPHFXfD0+RSl+IUZIdyRaVE4/eUBONmpCTXUibitBcCp+LDtyMWNwJVNbTGk6MjlfRkp7TE1aTm97Q018KTNvSWNFbjd0Lz9aT3k0ckBibmkuOWt6MV1oZEEyXkp6dD1fMX1aInMlQnM6MzBeUFdeTTAwJmRZa1BgeDIu''@;'; put 'put ''QkdgSy59bjF6KGtaWC9LcUJdLFIpQEVmM29zOHBNZEYhX1pndSlSd2AjPDtwLm5TL3x8PGl3MCZzL1V1VUN5RDBHVGpqb0BRaVZ4flIqWFtlVHlsTT83e1ZUT3dYM24/XzgmKm1oJitqfHpNQ1F4SEcuKks+T2NBMX5rWkJ3fGRlP042PlQmZG8hcVZSaT98JFksNFluc2JnPXA+d1RRczdTamEx''@;'; put 'put ''QSoyJDwpKypiZDZQfkRTPUYjNmU5ZDU6KisuTUA7WlJdRlY1dXt7PXBrbXdmPUJJOC9tPjEuakVTYkJfXiJpVyVlR3t3UmxXJDY3bD1jQ0YxU3QpfHxKTytGUTwmO2hdRyJdUD9XJlpTNHArbXBaaD5iOGU8JUpGSn1bd1Z8TDRQLmFhJUY7RzE1bSV3WH5xW0UpY0lWY0g1aXRFbCUpI2pHdlcr''@;'; put 'put ''XzMwKXJuZnZHPSJyaSNGQCEsIXFaeWdDX0NlYlcoa1VSVEZoSSouKTYpTD5razVQdV1CQjQ0IW4yfT5xe2RRNVhrUl4/Q3UxVylYNUVeM141RmNjITlmL3B8Xmw4eygkKEgoNEx8TSksYTdWZTYjfktjampIKkBJUCRzMyttQUZEanRHNnhVYFdsUmxTamtscGV1LldMZmV5VmFHM3NoaCg3TW9J''@;'; put 'put ''cUs9T0tpOTAjMDEuYD9NW3V2Zk9oTSQrVTFld1JQLktuNnBQekQjb00mfkV8ZjM0Nz1vSFF3eCpLUl1RbngyZ31YNyxydTR0d3grND5OZllRTDY1REJ9cltGPnRoWTQ5Rjc7dU5RRSJVemt1JVlXPWhYKE94IWElcUVmaCQjbW92eCFYMk9NZlBGVUBJTTxwPl1xL2xHRSFUUjl3aFVgJmN4bkRM''@;'; put 'put ''Z11ye0ZILn5EJFplejdvUDl7N1hYYT1wdVg4R1tRRUk3UCZoVEFYd0ErRlJldGJFRyVBQGt5fHk2UGR1UEc/dDt5QjImKkg/Qis8fXRWMnlafm5pJC48NTt2WXppbnRaUHhedyJnPzZMdD0wZ2Q2JDlJX3FgUzhzaG5xOn16eGpaXzdLPSxaInJbdjtwblZUaUROU1RTLDxrN1o1e31qPkt6PkpX''@;'; put 'put ''cTpsMWNTJHdsTXpHfU1JKjFrLjxJIT0sIlRDY0ZYKUcwWjpDRFR5ZWprNmN9TCVnUTpGQnpwIih5YW1TNjJCPF5VTWdGW3IkdEg1eHxbMWZGK0hwenl7N0MhJDkxVG1ZUGlmangyPVM0MXVfa10kQDApcmY6aSQuNHN6aDZVekUxSFRTd0ZOfTlQZz1pTnROYF5WTlBgQmZMQVNnfGpnOX5Yams1''@;'; put 'put ''P3tQRWdWNSlmd3k9ZmVeJn0wRHMpOExIMz0iQD9xbVFIJW1ZdCheZmI+a11UPnxOTlZSe1dvNVhFJWgoOns9WllyfFFOUiosNUVqL3h6QUtKdThKUS54fm9WSVB3LnlrV2xzcm16WWUyNj04NE1iJSZKSSxYLExEQWIyIiUkRys8RldZKDheVm9FSygmNGxicTsvd1hCUEU7bmU/aDlrRnAwNzF4''@;'; put 'put ''anc6WDduaXZfWU1NSl5nI3JpI01VTylKfW5uUFFnfSUvfWkjV20rNXMuUVh1KXRnRGVYPWdGcT1rWko8ZlcpLCVMUEEyaWl3e0BRK0J+dl1TTT1FV0Vndkd1d0sxfmRGMnA8NEhMUEtLPGI5RjlhUyl8WlJRYC5rMl9yKEpiemtJLispV3NGU2o9dEA+LzFeWXI5NFkvJjkyNTdbJlVua2J0MWll''@;'; put 'put ''ZyYoV1llZExkOGBRNGhwO0VEem05R04xMmxEbEB7dXpAc1FMYVgjQm5mWm4rPXYoVnk2aEtkQ1FlflQ5dXRFY2QobnE2UnYoTEleSmJWR1UxM3BDbU41WVs+cDBRLmhuUSJiVU92WmorS2RNYUc+MSJbRiN2eixEJD1RO1NneEQ5NkhAIWkkeHdEYXQ5JF9FKy82OjVPS0p4R3hvN2FXcy87U1Uo''@;'; put 'put ''QnFHQl4sejQxRDRyMFZuYipzIUAxSWlLdH5NVDgrVmliQTJtQVJDT1NyLnc3PSRvQiJYOVN4YVJfcER7bF1kUUV2MkJXel9gekIvOFk9aE9aPXM7dm9fMDViL1YqLitXRV1+b3VBcE5FZTRZOShILyFjWiFBSnQjRGdMfnA5VWl1S206VnQwOTBeZV4+fjlBJCt1blA8XSNdV2ReVCxeanR7Vls/''@;'; put 'put ''ZzI4Qm05REhyeTdKYjZPUyRMXWpMS2FIMUZHR1JxalQ2bklAPkdjfHYxQ3Q5Wm8mcyRHeG4yb1lZYGtEUT5zOG96RCs9TEJ1e3xTaTBUYVhXSCRFSEZOaC46ISYiSy9SK3hPZXNOVmJBUDA5RCZFMHxValV8XyFKTWNpNjtYQkdAP3ApWixGR2lVMShPaU5HKX5MQ183ZDszPTFoXTpuUD9TU0ZH''@;'; put 'put ''IkY/L34oUilwd0Q8JUQwK0ouQ2xCfislJE9OY3hLemE3RF1bfk9KPFRfaSMwS1B3YyFMYz9ORXw4ej16XWcsUjxEfUkoKzEmekBXUmBJdTp4UHo2ZjlhYj92RFM7Ym9dXlF9Xi4pMy54dkpJZFYkdkZzdFZrOSRiYz9ocWlxdFZzZXYzTE8sej8jIT91dHNzUzo4fWF1Qnc7QjB2flsiOGM0OjVN''@;'; put 'put ''PklMeCFCaU1TUzBwdzJ7RnxYPUhQOkBkaDosIWp0PShkJlI+I3RKZCkvIktjd1QmW2A5ZV1lMipxVTZ5QjkpSztDQEVgTSJoI0J8R1hxPkJZN1UpXzJ0UGZeS006XmhUT1V1UUM6fSt2KlpeTjE1ImVDYWY0d1U1VChSRz8hL0J0TiNYZV9JQ1AhVHE1TV4xJFlsSXBZRjEuWkF9cV95I0pWUn44''@;'; put 'put ''XUB6eTshXyhvLktfez0wZH1UZk9hPHFIN0lGLEdWZkk+SEZIS0UiNktGU1pPMzZjUkltSX1uZEk8XSFFMjgjUD4+dGdbbGZQRDRURHNicnskfGtFa3ZXOmo0UW0yImQhSU5IKmY9djh5RGZsP29Yfk80L2NvXSs8akx+P3kyKFs9QXc6QkQ6OlVxe11Zbl1Me1Z0Mm88SlIiTX1lLng7ZzdlYE1J''@;'; put 'put ''Tls6dyF0I3xDYT1IJjd2MXlaKERPKEZ2JCsoXnkxRmx3KHA3PVBjTlRrOFE2Iyg3Y09oPVtYVVp4dlBabilGYVtNfGh3XTVXZyQ3V2V0PnNRPW5GMFMzZj57U3RaXTloS2I4XUNpZz5WUCV5YlFWKFdVRUgsT01hPnRsYFAoMXBLTGZGe1NXNGVHLE5vcSF4OkklVCI7V0IhP2k4LnlwWnZwTnBR''@;'; put 'put ''PXIsSTd0c2NOfE1oNTlkY1U+a3VLRlpxYXVUKSw5NVdVezM/Ukg5OmhtIXFVU3EqdyJ8clE7PXV1dzJlO1E1SU87R2g0d24sSkp2ISVQInE0b0tIKFRKcXNEWXRyKjgvamBmQVdab3lHYDp3XlR1fW1NfHRQdEt+Z1lnbVFgPG9FR3xpR24jSFQjK0c0bUA3e24uQnYpOHluJDM+X2hsfGZ2Pi9k''@;'; put 'put ''Uz5QZnh4JCpSUFhzb3piLEB3TjU9aFApeXYlRGFfP3x8K2pVL1IiYD1LNn13NCwjQ3BaWCFVSXtPVW0kKDNrM0pdN2NQMUYoUFhUZmZAZmd6Sjd0YVZVbmZday50d0QpcVY8c3JhKnd6THRzO0dOaDxURFJDOy4zfT1KIW5uU1FSIXR6M3psY11yOGlyUF5iZEF9ITVoP0lwSHc6WWRlS1NhYVZo''@;'; put 'put ''ajc3MG9Cb0F8NngreiVDQlRUa3wocUN0Lz4yKzN5cXhmL11GcTB+dmV4UTR7YUVjQ0dFeUtjdmpFdk1SMHFRZkkpQlUhYGE/XngyWCptaHV+WFFGR1tuRkBQL11EQ2E4aV10P2JZMXpDVGNtNnRYPkxzfFBrL0B+UHZ6SnsjNjJZXWYpdnwiUSxrQjYzPlJoNzozUGJPN119aChVVCh6RHNPNU9d''@;'; put 'put ''bTJkSFhMNn5rakI2SkcoR0U4USxANHIjcURVKUxFOVl4eFBPY0tiWUwoZHlSOkY0eVMzVihtVlpkVXNNKE1BeikqTFQpPmd7ZD0mV1B0SFtRS21jKSxuLktafEhYTjx0YlBvNndCW1RnRilQYE9QQl05cWEoLDZTTDZUPyk0cFs/SSU9M1k1cklLdDgjXS8mRDsoT2ElWHljb0skWTVLUHF7OiR+''@;'; put 'put ''VjFrXzczWHApUmFDflhmfHBPNFEkYX42P3tlfWsiazpWPShwSTxtKlVtKTlbUjJjMzZkJGFLcSkwXVhwRjkkdVMrQHhOXSM0NDNLe3Bhb04ofE87M1lwbEo4fipoZ09GRGU1eFJ8RDhAPWg4U01pXWl+JGtofUp2OUFYN29ZQjs7JW1xYEhQVExoRTB4e0d4RUkuNG9IYyUrR0pRUnFyWSE+PnFs''@;'; put 'put ''K0swSmpSOEtjRCR4YGRPQSoiQkBda044dTpwZSllXTdpLkZOfWtlKmlnWyE8TWZiKzY0Z0ptK0s8YjlLSW0uO2d6UlZufTtSRyR8JVhTRGJdRWYzSTRbVytAeT1STSs+Kkk3ITdZKmg7QWRrIXk/ZWRoOjdlY1YlTjkwZSlhdzwvN3Z6OTdNXiV2c2huN1sybjBjMWtwdSZXITJPfTpeQjw9PFJf''@;'; put 'put ''XnJhXWpFXSJqVnxHJm1OckNaRUxLTyQ9NEpjI1E2TGo/VzU9byl5cyVFKSVtIT1eOUtiQSs0TUY6Z3tqejFBQEhsKz1rNFV6PXUoTE5WYmFQb3JPPjJybSgscDhiPEojeCZKdkM3K0Z2Ll88XnAsR2g7NmVGUVtUV2d3NTdvVl9tO1kpOCZqKSo0R1Z1MTtAb0cvd0FFTz1IeW0mNm1ePkJieX5X''@;'; put 'put ''Z3k1aHFXSTRnd3hxJWBaODJvPWxST3gzWkJOI0I5W1d6SmJnS21rcyltX0pAPmdPQnBwLjQ2YXNOant5PFlTKDo7NDNFXSo5M1swJDNbKE13KmAuZT0sKGBrakhHbWJMPDdwQmUqdTA+W0MkM2AjSHQ1UndWLlhfR2R1JjNaNnAkdk5EPEB5cTVsVjVQPW45PF8/UDFqYFZZI0xdU11CTDFKIzNB''@;'; put 'put ''YEk9MGp0NF1mN3RdJHAwVEU9JmwvW19ZR1pUKGspIStfV0huRWRRXyxGMDJCJmkjKWx+K0pvVVl2dHVBZ3lUaDxrYlpEI2FfYSpsMXdQPUBJcDIvRm04O3JoallXYXBfUitmX1h5YEVxQjxYWT5za2ZuTzlKRFh6ZF5lJWFzUFluaCt3UmhWIXJnTChlc0U4dVI1ZiZFNDQ2VWdFM0tqMSxRJEMl''@;'; put 'put ''JmhRbHYhbEsoWjxnJC5IKmoha0xSIV1sOWd1RFg/bUlfKzJvKXheIWBlYEleLmFjYmtGMk5YcHNsRnRXNktkO21qdyU3RXFWTmwqODRpP3JXNHkldU88RV14WzdwUVZQPUdfalJnSyVrTjhWd3RAdmZIWV9UWT9eaTgpRHA/dWZ9YkJSIlYmUkYmZnhpeihSfmJGIiptQkRsTioqem5ERSYvLyZr''@;'; put 'put ''RlBYfXZrTHBnV0FGdCtVSUgpNllEISoqbi47T3hjM3RnWWQ2ejFbVjxofTZoTFpxI2E1Km5BcEZRcm0jP156fUojJDtEU35XMnRZfUU5NmclOkw5XzlNIWJ2cjFNd3dlb1R0ZmAvemR8X2dqSUFtUjE/MlglZUpGNjNWLCg1ZGwyTG1HcGlfPlVeSmQiQGUoSGFkMXEzMz5HXksjJnRgSkowKjhC''@;'; put 'put ''ayloQ2w9dFJqeVk0IktlUk9EP2lTLEwpYEI1VF45UV5KOWg5RFNrN2RYdFplUzsvOUpseGIwUE1QTmFHWiVPRUdnZT4/fTNobUg7cDtrXWE/NCFnM34pQm1eWSpvTTJIfHIlP1IuQFl9RGdtJWk8M2EpPEBeKVBGQ05BXWUrPyEmeDhpYUkieDdtcCtKZ19WfURjZEVXaWIhWUEwYkRWbiN2WyRM''@;'; put 'put ''RChtYVdud2NPcUosQmAjMG4xPHV3N211RUBaWTUrakgvK2VPQT50V18rTSZXOUd3d2R8NWkhdXlua0UpZWtISjV4V28pVi5dSXszLiFfRHJaUiFgaTJ1WU14Xz8zd0csbmdWN0Z2V3RzalZTdlhqIVVYJjhjVSJXY1VmW15NVi40bDV7cFdgW2R9dzZMJEE2O1EwS200ZGlWSjElYi4qdSJzPWhs''@;'; put 'put ''ZlNyP3U4L0NbPFZORFl6dDI7bH5uN0ZGPTN6V1ZwSXlFW01YYVJlbU0oLzlVVGJxIloiNFdSMWUjWkpzP0xPJGF2VD5EQzM8Jn52RCVuKUlXTmxiXk1nTU1qbEA5elt2N2dDXitULzZBTmh0b0Y4RWtUVl5PMTlTJjpAWXM/e3hiYDJ6cE4ubW9SRjJ8RT0wSH1mKkEkdGk/MUZ1JGxDX0UqOUp3''@;'; put 'put ''PkVraUtTfi9Wek9QbWIvYWojejxZRSY2UHUkKklBPHgoZTtxaHBGIi8wd3Y4ZEhVbTZAWTYxP3dtMmR3TVFOYGZYIzE4QXpDe2s/SFRPdFJsYDBsX2J3ZClkKTFmKStwP0tSbFJjPWx+UlpLb3R3ciQ6O0dAXzg+MVY/PXRoTVtGWitdS341YEguLDIqbkpdfXUxNGM+PDYlPUpGbStha3Q+L1hG''@;'; put 'put ''T34zaGV0ezYmP1AwbjA+L2w6JC48dGVNQG84VVYyfCkrJSttV3pyZGF9WWNFcmdXP0NWbih3JSp6eTp3b2MmQFFQZXxoTUFodlJ3TmBzImU7JWpKfUc3WFYhW3Emdy4zOlhaKi9EdUBxYTY/UFJiOWh3V1k5SkQoZSpAMyhNTjFYPVJHQzhKZGBCV1FVdl8/SldoTSRYdXUvMGAvUTNjM3p1cmtC''@;'; put 'put ''aWZTSHgueUcsYnkzS0o8XmBXK3FfMnJoX2pNNEFJVUZwenpqR1F0SFFDK1t2M35Vay5wMER0MT8pQG91fktvW3pNQWpmPDtJWyRWcGNScmkkJVhLJDJLWHRVKUtwdyVeKUg2KDlbQDA9RGtLU1dJUXBuTmozPVMrVD1WeSpXcz1qfjJuXSg0NT9IMXt5SUQuel87Uz52PkxEeFY1ZG1uT0dMWjs7''@;'; put 'put ''X1g4PzN4VFFrNC5kPVB+QkN+TlEzNnNySCFMSVl1TWhsZ1BRVzdlO2R6cllVUzMpIjo5cmpsMDokYio5VkpvX3Fec0BWbXkmKldOcUx6fjk2ZVs2fTY4SXwlPGxddnwwWTA2K0w9WDhoPSkqZmtRK2Z0d3FmeFA1YVhdQlJrUGs6KlAkMGJyTVFLRUdaV3MsMXxSKyF2SFhQfX1NNyUuYzpgIjpx''@;'; put 'put ''NT84cDhrW0xiL2RWViw/ckZmOl9zR0l8Rl94cjdbWUltbGlRVWMyVE1KYShZOCg9VWpSdWZiPU84RC9kXk9XJjtQUEdoSDd6c0UlL0JBVyFMNzIpPTk2MnYvVm1EPTx5SDYsUUNkYzZOdV5CX0NIXjxaT1cmeUpJcnxHd1M7Tmk3Ym88L2lVXUJza1ldIVYuN28xeT47SWJNcHhRPmVmOWJnVFNi''@;'; put 'put ''fHQqdyN9ejAqelove2RRVEwlQTZhc153M092MDc5QEksRT1Pa01fNTdscW9IfHBNXXsoLEw3e3xkdm8oQzkyNGJoWT9KeltaXTVtRk82X1Fya3VXUD5bMi84ZzdyO2sjQ0xEWmpufWN7LCRUezB+P0pZZUVdei4sSklFVzg6OjkpLmlxO0dKeWloTTAwfTRiL3chITN0TyF2STVFS2widTxUTmks''@;'; put 'put ''KyZqIXNWUWlaYTJSdFQkR28uV0N9dChSfjQ0XTVPbjg3JmZkSFRURF5xKFhRM0wkYjA/RWU3eU12TEBOfnBQZiVke0g1Smh4OTYmUkhmZUJITTlPP0Fibmh8fmRgbDEhLj1QWTJzP0huXXIpZCxyTGg4VCpXYytnVGZvTjBdZFBdZmNdQV9ZY0UpQjw8bC58LHZlU0hzRT4xOyokNDhmQzJPTU9t''@;'; put 'put ''X1MxcF58KU95Y100cEtuV3JYS10kR35hIUAzb2BocXwydTRLekNQUiRoOE1dPFNTS2kyVkszJkdnZ1A/Q2x6T3VKKCNdWSh1aUxkYk1VdFRnRUleXz48ZFN0OmZWR3dCfWJbPCs/Zl4laCNNdUIvRmFaPFlnVWA4djB3OzEjZ3BjOyhXeXRxXzh5RWU8YiRseSN3VXM5NlFxWGp0QHdoI185UXMl''@;'; put 'put ''UT09N08he3xpVzh2KVZHPTAzSjhgXk9qPiNyakI8M2QmY3djXVR4NGNhYiJtKXdeKHRlSzRGaF1tOTE0OGh6WjZCa2h5cSs8MnEza2subj9VZVpdRH1gTTleKyEqPHZLL11hR0QjP3g3X09OU0J6cU5ncnBWZSMrWjZdPnBNRzo5SDs8WjlkfHQ4aXFHL3cvSHY8RnliOnExNUtLdFRZZkVGJTFq''@;'; put 'put ''c2UyX3RfWGZeZm5RO2l3aDRmdVJTZ1hUKyVJRXg7aFVBYjNxODR8Ryo+WGxEPy46WUc8akt3LntEbjNEIVohTDxxTFNtZHdrfmw2K0pwejV6PSRYJCMzKjdmU0ZLQVQ4Xnx9Pl5jYEJtUzZ4IVBzejkrWXd7QUUxOys/Vz96K2BGQzNKay5HfXhHcFFgJkNBP0luSCxPfi85V0ZTIi9gMVNzeCpN''@;'; put 'put ''Y1Q6M0NDSFY9YFtjajdFeEcpSjBjOVhzMERUUmgmLzdrc1Z3aXpaQEB6YkRTfjdmczgjYSRyZXpSdUhgW25rPTg6JCI4X01IP14oN0ZfTHpsV0x4QXJtcyJga004d3hXeztHRn03JGVaLzdFVm8uKW9OcSR9ck01SCp7fmwhKnd9eSZEXVpldHJEKnlodXNoWFN0eWNQI2J7LHhHUiU3S0RlTGNw''@;'; put 'put ''KD5xdVoua0UlamouRUUpenVHdjtyOztLPylbNk4vKWp+b0tdbWZpPStwMHxOWjheOEB4X2EvNjgiNHNAVV99eGNLOEBOX1h+IiZefllhYTZdQSZSSCk4WCI6b28zPChweTVuTVFRQiJGcVZVPTl6TUtbIzlYRz9TNUJVZFRBKEgpSjp3XzRVTFU0WjFiWWNZTE88VDR6anJfOzJRO2QmSy5CMzxA''@;'; put 'put ''N2RYSHByMD1KYDU1RUxIXzg8aiIlTzRJSThFNEppYlhqbSglSFp1TV1wWE44aCNvIjVASWJyWzpSdzBOQEAmTTJyazEmOSFdSCFnLzFoaTo4Xjs0MkxfPTsvfEpRTV02UkRdNmAjWDhjeClCMk8yd31WOVNkTnhWWWZPQGNATXNaUS9vfjBwKTJSeFdlcFlAWyNBNm9HJntIW3JvczpVd2o2dzRE''@;'; put 'put ''NC42S3dTTFhFPkpIfWAoXUFKbTQ/V0dlOT17VWlMPUVBcn4lcW13PVpIKDI5XmZATVgzNHRlQ2EqIXp6clY+RHZMfGpocXE1fjlCJURyXV5PVVVSSGdhSlU/cSF1M29aWzoifWF9W1ZqXTZxcl1TOCp+QzIhWn16aCpDUEF2O0NVLCk1Yz8rT0ZuPj4hKCZ4OEIiVHwoMGwiMDg4bXkuYGVINXhK''@;'; put 'put ''JFtnQ2pyR3tqNFguRzc0e0hdJG9nNUwoKz1nVl1OSEFZbC5pbUo/d3UkJX5WJWl6Z0tidTkjL3cjWE0/dFUyJCxFbEQyRy57Rkp+NmlJWXhyflkxX1o/QDVnMUQ2cmd5eTlYUTZ0KDMpV2F8XWtqfGxvVUBXRjwxNns3e05APjhVJStfTjF0P29zIS9WI21VPzY0bnk5Lmg8XmUzWElHbVclY1Yy''@;'; put 'put ''dlVDNj8hbys9NV1HXmJbO0oudDpbK09YckZ+bnYxK3tmdlAoIUg5akl6SiwqeEwuOzEwQHlDQSJKZn4vNUZtV0xtSU05MmpRUEk4P0Q7OWwsdW50QnxqOlpVPTZkTzNBUT06cSpAST9DMHRYSEdgdkBGNzhbek0yOnxre0IofChhQHRrc3V0NzEmSyRSWDpKTiUkRVRjNnA7ZXhHWXQmWyFUJDZj''@;'; put 'put ''Nlo1O31PYGVycCksMX5Taj1sLD9IZVdbVyh+alQjaVhlLm0vbTduMUs9NzJZaSQpdnhlW29YbW5nYz5GJWV0YjgqTTxEN0lJNHlnT3tBe1Fpak9zelU8a1FPaTEmNDt5PjZEUHZzUTpdQjY8WllSblcvS1lZPHtUUGhlR3IsTnF7RmdoI053dXU+N3pmPUk1WiYxKHBvMF0lbGF2OGdkcH1uTTQp''@;'; put 'put ''d1g/KnFyKmEmfW9DQT92NFN9aEhaLnpwfVdXO1RrI0dxIUxNK1cmekAoOH4wfV10X3IpfDZTYCMpVWs/aXckNkhOUmIoNjZ5KiMoQnd9NWIzND94VHAmWHxyWU13bTNHLncqV2VrSD51PClEfV5QPG4mN0suNU8kKlJUKDU2SlRwMD4vWDtiOUQzXlIhd1RJSkYjQiN3fFRRZ3tXKlVBT2Y5e3hv''@;'; put 'put ''Z30sJiwpdTZXIW4+REN5fnpoTHpScmtdPGxxcU0/Jk0+RXwuQnZXMTtodV46OWssWU0zbHVEemcpYjpuU0l9Uns1YSxaYE0ha1ZEZFBwUCxGJVJ9eFg5QkBzQiUoemhyQWhbPkZhe0MuV2loLyssdnE7ZSJtNHFFIXYlTTRRN1l8LkR7YyhCR2s8SD9lcCJ2SHV7aiFwYyIucF45ZyZyVyZYUEFF''@;'; put 'put ''LHZOcnxpQV1yNDpDN2V9LztYU1hrY3tjMkQrJTdYdk0iNGcmT1JeSyhjRyp7WkxMVGBBemBybmNaZkpsYVZXcm9GVzB5VU08LFRSdj97Wyt6czFoNnpVJnlJMUlwNz5NLyFjdlo5IjxkV285V0tFUChPfCw4NUV5Z3dPfj9XK0lLSVkpdHc0JVpWJWhgdW5fdk03TTU/Nz55OCgxMSRrNSg4Z1Rs''@;'; put 'put ''Qyp+bT1ydCZJJlpKSkt4OStEKHYkUD84P1lWP3xVZV1VVm51SD87WmUxaCx7ZiVHdGwlaUo7UUdJYVduJFZFRHAvVGBHNjBfTzBuUS47KXB5NCEzWnBwazJKZHczMyo4eWsxMSFgKkAvSVFdJGV1ZkooIndJWmt9QC8+UWxifldvZEJoQmhLRHAhcm5eOnh6T0dGMmwkN2pXInxSMiRhdHttTXo8''@;'; put 'put ''aUovKHMxY0NHa0BxcT98TWw3VFljYjhoUCxyRlo2QUdZen0hIixRcHNtMHchVTY5PXIubz8+NmdfTF43fnU5SCxQamUzRS5FXVsqUThKK2FOcV9NSUFCVlU2TCM6TnFSUXVAeXpBUHcjXmVpJShSVCxPRE54KH0zU3ZKVF1aNXxdQGs4JkUxYkVucilvd2RQOG1aTVJHJSJhOS5OPEhmfU4sXyly''@;'; put 'put ''PTlGQGZlUl1jTnRsJn1GQmgmL3JjZixtVlR4N0MyfSJzRVciTyRDOmdYbmhTUEl0TUBuNS5bbDE2Rn56cHN6PzZITjMzSFovO2lJXiV+Lzc0Im0jVlNMbE9TanwzczRkYnt3K3tDJTxdeSRAMTg/YiNNbmxLc2BqeTk/InJMfDlKNlsjTStGVnF1KSptSDdsdDw9OWF+MSoqa0tmZjtxaC98aWRl''@;'; put 'put ''RU9UYWR6MCl2WG0yYDFieltoSTdMd3FnZUU3QERWMWA3b1lqb0I+YS9yK3Q4eUtnTENCTUZ+a3p3SXhhXikuN2kqU0kyWj5FZGBqMXspU0s6OCxRJHsjM2VJMDg2Smg+WndkWyolc15zRzZGKCY2K2FQYCVkRVt6Y25+LE8pXiVfPSRWLkVDZkk+Ty4/RUQ8M2NKREV0XXBEQXJ7d11USG1Dc2lC''@;'; put 'put ''aH5UMXgxeGZRMXs7byJvSlVjblF0cj82WjBgMVNMaXxbNyY4eVshQCVLLGlsMlVSVT9NQTksLypfRWBQSExleEh1NXkhNmp1PjFEVV1RIzdRQChzcV1AU3h+Um8yJWAqeHhdVklSVzdpeTFFQEw2TyZvdmwlWntEWFE7b3g+eFhpSSV4XnlpWTRKOWNqOHtZTFg1QHQxRnN4VCZwM0d0Sj8hLlQ1''@;'; put 'put ''WlNyUncsW0syMlR9U1NeR0YpMGQkSkREWGp4MDBGSm1QP1lfOl94dmpsRUZVUGIvcEspOyo5LztgOTp6N196S3J4XSVQa3ptTXgzXT59V2VubCo6I3kuOjg0WFRrTV0oeDJZRTthKz1tdGt0OjtLaVBbIzM6b3IxM0AkSExeOyROIWNSJkJaKHYpPXVmeSx5NUp9Yy9kQmpSd20/THFRQ1dHNXw/''@;'; put 'put ''SylYQlp7YHopdElGaSR7cjR8cnNrYE1OJSVmb2NEXipDaVBJZEhaWndTaVglbzo6SHtuRUNmTkJeJC5gI1RbbFszP0FEeXsuYF9bWWBNKWZEbndrVHRYTGQ7Yj5KIWQsODtbWEFofCFmUERwODA/S0k9XigyXXo4JTdeLHVTbFtAYUtSUCRMcz8sTCElIVJCfXpLPFk4RkcsKGo4d2cmPF5HeyUk''@;'; put 'put ''VE5gbmJzVUNkeXVfKHc+aXVMS1NqLmJtcCEreUBze3RUOFsoYjh4NTE6V2Frc1I6Lnd9eCImKz5pL20lQVFnOVt6VDo/USoxQkQrS1VgL3UuMWhxR3syfmU3NzJtRXEqa3ozZ1RodWVkdX04aT14O1Zya0xYPzAweCZfSk1bQD8seTxSaWhTNmdUPnFZLGcmPypaOWZMK1p6JFgxe2UzKHB5Vzsr''@;'; put 'put ''PytKbSFKUH0uVj5vT3cqKVAwWCYzKShoV2tYRFt6an04fmZlTFhOe15Nayo5VVsld2kjbj1iO0cwfTdbNjJPPzZzOk4pQEtuXkVAfSR9VHc2cDZsYFApIktdJE9uOl00X2JeNi40c2ZiLm04TVBtPj5+QzlAX3t7STNZaF0vakd9WjV+aT9bInZMQ2d1YD83fj1+RjFxfVhHNkgjZUtUfkJKbn5u''@;'; put 'put ''VyNpUCJFMFZtTEtdLGAhflAyPDlxNVJMPFtLKEBibFd+YTdIV0tRLzlyWWJmKX5vLm1gJXY3eH0lWlRIQWYiUEtPb08xRiNxRVZbekt5PTB3bnhyW2VqdTdEX2VHXmNzbThtZUU7QUk+KiNaYHdWWmNUN1tQNitJTXh9fXx0LjwhYS9AZGouRH52KGhFRz1JeGpUbX5OUmJtZ21nT3xIbDopYH5F''@;'; put 'put ''SmVUSG5paEBOenp0L2x4LEZjM3F1W28ifWVDXlM5ViNpMWYxSmpXPFZjUGZ+I3xuUVtXM2YkW0cici85RHUuOmBKPiYuR1ElNGlaWD5ffjZvT09eLHM2Pzd3ZVcleShsTDZUUSNSXkZwelkhKnJLQUZablJCIj95KUI2UUowVHtmPnF5cilpM0x5fWF8PV5CO0F3R2MuZGRMT3c2PEF5cEZbTy9D''@;'; put 'put ''dCJ5QVRjLElTdFBzJD1Ib1BHZkJWWHpxWWVNNkdYRmdAWiphYDtLZFhaPyltJCw2bH0+e3o9aXdxYFpYZmZoK3t7dE5ofjUudEp0X0p1PzkjM2YofWFgOzlJRlMxLlE5XlQwcG97QXZnOCpiODpBXUtzX0olOEVNNHlZJi8zSTMpXV5aITkmN1JGK2xwTGpdPUkuejB6QW1UOUFZQTE3PUImKkM4''@;'; put 'put ''cjhkdXtvZ3d6fmpLRW0uLmZCcnF9czhPVlRNaSZtOEN8R2d+WnQpc1dPaUI8czt4UnRYYU9IO1pjZjpWR2VmO2oqVnBLQ1lyYW5hWm5TPCMiZ3p3Jlc9bWNSMHFZUFElYGxsN0ptNHwyWWh4fXRWQz1+UkYhYC9idzhdbEhWOGNBdUM+W2VKWXx1Lj5HLFBadEN9YUNLRXBtX0pUJVtuYSp2Q11d''@;'; put 'put ''MiVhWih1V29tW1VOazpzVk1EZWYiNlZRN0x2K0xKRiZwLnVEeFthPW85Z154OHFleUJ4XjNyTj1+fC5zdi5WMzZefjk7JX1NZm4yJFpSPFNnZWhLN0tfeTV5JC5WY0JNNzNJPC4hUD99ZCRNdVImVDRTfWRBNEExOkw8JGROXkJ7fEA8SHlNI3wwISM4PHQuUEFia2glVyRHYzVUIX1PV2k4Yl1q''@;'; put 'put ''LlRgTzBWN016aFdkI2l6SlhnKkc4NCRmMjxuJXFLK0tXIlR0TE9DclMoeHh+OT9pdT9zRzs4SVs2a35WalVyIW9zPiE+TTVOVTskYmArZk02ZHF5MT1VL0xJW1s6bSlVMm8wNkklNXoqYU0hK2J5LC9PSy4sWmQ8filrayxxO1h7YGIvIT5adjw2fWBjNCwub1dGfDohQWVWb0d8Ol86dmVxTWtU''@;'; put 'put ''Jj07PnNZTmUjPj48OCh+L2VUNktmUFFpdihUeTpxR3FWLExGP2BMJCxBMUJCYVpPZVI1ZE5dQWBhaHtWQWYpQE8jaDEyW3Fpd1FVd0RDbDcxZV04SSUzNiJeYTA5RigsO1U+TiVgfG5BQ3RCYHtqdlJ7UmFMfHh+fDcyemRaKWtKdDIveTRmNiZfX3MmT2RsMko/KVI+Iz5jNSpDKSt7WkhRekxD''@;'; put 'put ''Z1pQczBOayVqeS9uREtHenV4dWxlQHUkPXokcko2XUsyUklrUlFDejUzMyFCY3ZHdCZ4PUtyd01lM1EhUEM1SFdidnRgZGpfeEF1eGtRRCJjO0BfWFciRWRlQSxic0Q7NDZwbFtTZEEpd05XfGI8ZD1xaVZmbyFTL2lQJFIzZ1Q7P2BWdCNvVy9KcV0zOTlVXVdxfExMYXY5SVlgRFMsOWFiaigh''@;'; put 'put ''MWYpXi5eRUIsUzlhemxXTW4ybn0oTmpxRDohTEthPSUhUVszWkNiTmJbeEJTcSIiWWNiL3lOcUVTb2xVI2JeZiFTVnxeRVlsdmcrPWN3T3ZEVENkeEt8VCp+WGxiQkdJZzhMPjw5dipnTT9FKU0wVl89OWZOPHkjJGtmO1tUOj0/Vj4sdmB5K01pZUhkQlo4UF0kVUNiQkgrb1NaeEB9V3F3NGg0''@;'; put 'put ''Sl97OExGWTgsOzQkY1hiK25TZCNQcnBHQ2dmbEYqSHpDSDRqaEIuVypPPk5DaixZOWQzIkJ5OkZ2bnYzRixlQSYsPmA8RGdTNV1VOHdhMUo5XXkoekBkZzBJXllNeU5uamo1aCxqUnRvYU1qbzttcWAhTCpRNiRhI1BZSVJWKiVkJUFfN1I8e0ovJSJ6UWJMK0I8bl9iaUBPfV8yTkorJEgqRT9+''@;'; put 'put ''TltTTU1Kd1lWM100JnR2VXNoLHN9dFNnWlg1T0Q3dkFkbmgrZyFHKjI6S11HMjw8TlhUYzlNdEokcz9FdjA/IyoiSmVmYTk4akJBKiNyUHlaMXEkUl5uWFZmOCx5NG5vaW0lJX55dFBbaiNbfDliRyReInlsc3FLX293KGl1SGBuYiRnVGBUdD8hQSJCRXRxVnp9ck9YUzFdIXkxY1BtUW0wIWxV''@;'; put 'put ''dH49KU5HLzpuSVFzZTIwQStAJEYxXVVNT25sfDtEWlttfUFxRXtsdF9eezJIezVjfld+IkcyMXhIOVZQdC9lMyM5NU8uUjozPyVdQFh1cStPVlU8PSo8XnMhWShmUyM+Z11rPlZ8W2NlWGNfZFdENSF+YkZ4Tlp9Yl1OOjVvbE05b3h2XVJoZFlVejwmbVB7SnN5dVhwW2FrPX5wQzxJUD8ubltt''@;'; put 'put ''LyFsTV16USx3PD9sND5SRGQjYEwoYmRfJkZxZVFFfSlkfUNnfU5pVHQ5WmYmelt5Ji4lRThOK2wqYk5vM3xCcD8vLlUmeTZSQmRybnUoMl1scFY3OXc4ZUdORjApXU1GSmdxdnEjcHZPXVFKT0x0N24yRmFyRzs0dFF4R2gjS3BOYEZTcmQ5dH4zN1lSJjRhYDV8Q1osKSQjLElUcjxYLmklK1gw''@;'; put 'put ''KGdHMk8mX2oyYVR7NH4zKiQ3JW9KMFJMJi9aKEc2Jl10VFQpZDpoYiw8YjgjeEZPaEd3WHFpa0txLFUhMzQ3W0dYVEojbmh4S2B7Q2M+djdJNi4+dXh9ZSRfQSVNazkkW31SKEFrfVcxS2lveVNyLipGMTAzNV44SThlO0xONTkkVUBnSCgxMTthSThhbGcrXjljZHVrIzFoO0pxRTNlVzB4QiRQ''@;'; put 'put ''RW4zLkh4LnAjPWMwbHJPPkowREJlSjNzdiMrYG96IXFePlhRVVhjXnxPITojM0RMZGZQSmZgIjRdcU0kM1Nrejx6JCY+SmBbJjJDYiNJZzxGYjleeSE3KyZ8PihyUkBgVzQ3b3ZydHtVJjNmSmo3SmQxJUlNQFdwbVZeeUJRKWUqb2BiVVNvQi88T0NeUSMvczQ7IyV6LDsrVngrYkM2JSN1WDlM''@;'; put 'put ''KkVHLlVXOyxTT0RsV0BAI2EsVDZMUGYwYExjYT9TSDN0cUdCe1NBVk5ZPmBgbSZib2ZCO3Rqb2ZMfDpJPCJ1YmYiLltrVF4yIVVNST1vTFhta3p7OWZCJGU9LlJZSzkzRzpvQHFEal4oPzJWZDlENnk/TVlMcE51Mk0kdFBDWVd0a0hSYjVXeV9xJihWVXNLdEdWKk49I0tMRFMiey5Vc2t4Mity''@;'; put 'put ''MFcmZytHfjBkQl9uK3I7OXVSMXwuKSJ4LlhkZjVJUUQmTiFIZD1MblhGKFV5SyhbZ01lL2BQIWtkV3ZJaW9Lc1R0W3BsNz1sI3VuJFclLFIzUGlzS1FGSCprcmlrPk8uZFo4ez54aShCIlhUSSwlKXEuNT8lY0R+YixIaXJhejJ7N2pEJiwvc2VqPkUiKFZsfDBWPDhScV5hSGZaVy9vTyhlWm8o''@;'; put 'put ''O0hhfEh+OmRjLjYjZl01VjVbb3spZXd4SjFJIz5VKnBjdnFpI3VAOStpVWhJcFVZWHBpM2kmVyRGbXJSRW1gQ2AiUnFYS3lbLmszKzl6O2Q0akFYdSNvKERaZCFhfnQ/VTBELyt0KExOek0hUndsSXQ1SVYiTkh7e2xMU34+UTBjUTMxXyhBcz9gcCojUj1UbjYjVkU2PmBGVWl1TV05P3ZKPSVN''@;'; put 'put ''aj1hdjtkW0YvTVcyalowS0NKKzVdfEJLT0xWWHdgbj92N2xjOGZ+Rl5oQFtpUjpQNjVhNUQiXl5BbyJWfCZMaDhTXmowb1NYVDQ9L216XlojK0RPLjgwS2F7Pis9TFQ4KklZemwqJXlIYjh0eC5STEg5bWQjZE15QzBlKy9DaEcqUyFKOi5seGxMUF4pSD55N3kqWkJOTVlmekJWL0o8RDApZ3dE''@;'; put 'put ''PSlDPXlCUGNNO2R7SCR3ciZTRzFxIXYkM0lBNmd5PVFofUBCTFZlOS94LGtBcnBOLjwrP2tHQGNlaHpqVVReeFd3KjVjXXwme1F8NVF0WSxEallFN1BSSjk5RTNZO2U3W0MkaEJTakttPCYqZF5hR04lKkxHSVspJixlI0hbcVIiXk1JSE1FSjk3WCZ3WWApUj5uI1VWTTMhYkRdWTlNYD44X1R+''@;'; put 'put ''aEAwZ3JBJUhsNHY0dUppPW9CTUZJc2ZQfG15JGoqRzRafmglNk0vTSwkPGFGJSJEXWxqL2UrOUxaYmJYRC5VMl51fkt6NyZdaD5AZWNLKXg/blJXfnpiaT1lJVFFfVY5THJUNlFqQGtoaWFuVWpRaVc+eEhvQ185UzM3UXpzbUw1NFB5Q298YnA2ODFuYVlpIjNOV29gVV9OOF1PTWpOX3tuU3dR''@;'; put 'put ''K3slejhXaHA9UnVnLHIwJERBTVk6N1F5JEU6YmlgTFcpbldBUzgsI1BWaTolTGJ5Nl4rRkgiJGd1UzZZXT98ZTNYOyNvfDpVVSRUKEppOlJGSElJTEl0XUlebWQ0IyNMVDdGQyZsT2xAe0ZCcU8kIzJ8YEJjfURrVyQ2JGJWOWh3Y3VZWHhfTihZPXtKMF0wdUpDeERHJVQqUS5hOzQ5JUR3RzhB''@;'; put 'put ''I0Z0TGxSMn5WRGdgOiluRDIjYXsxYH19TyZiWnhrTldpfUhVeSF0QiUsaH1OZGNzPWlAOy4pP2xHQlM5PztpTGhbWT1TSCtVeUN2YVlfY31KMWkvMURFbFNxeV9fejVpSXdvQV9EY31afXJfMjlhPiJ1STBFKUdxKF0kMlVvWGpDcTRIYGpXbHJ2W19XbDlULn08SmRGLilCQHlSO3lCXTdvampO''@;'; put 'put ''Q2xwI25CQEoyT316M3FLYG4rPDsoVnAkWFA6cEBfYm4qZj09L1RNKyRudyt9dHRoSyZfUVNwKWJ1OlNTWl1kYzVDQjBpOlE4fFhIKSVkcyJfREtSIXIuWDZKbyhATil9Q3BML3FEKCIoOWZITkh+NlhwNnw8eykpNlVoY3xxPnU9QEROVE9xNnddcVtLc2VGWEpPe1NdbHA0ZHJ0IihMc0R9V1Zl''@;'; put 'put ''K2RDbyY4NXx7PFAqX3xUKUtUK0BmKT5oPEUrVV8mT3pCVUZidSV0R3klKWdLKDU7WV9LPnswcVZlUSpDNHBDZSkqJm5OLmQ0SWI+P2ZefX0/P2BROkUsW2FJbit9MUZnM3hNLkZmQ09sdjg9ai9WY1RhYHApJTVAUjt+Syh3QGNfJWRUM1kocEZnO2gwIVUkSl5XUzgpPj4qcC4rWDdrSU9Ibz9n''@;'; put 'put ''Onk/TkJbe0hfXSwkW08pYXBxVnJfMDoiXj46JFYvS0pEUj9OL0ZxLmE7aWttJXRCKStLK3I4Pz9mP3VKKFYxVmNdYSRzKF5TXiM9KTJxJH5sTH4yOXQ8SEVCVzkuPWRHXzUwZ1ZzY0gkSSZpOiZ4e2hINz5iVnB3aCpEMChKRH5kKTZHY3kxVjooellIZllQX1toJiR2K0JaR10xVztFM2woUSpC''@;'; put 'put ''XyQicmtdRWxoXTIoMU9iWSYpKzhIWGgqV1tKQW9gaGAvQmBnPmNQOE11Y0JSO1tTfTZ1VSJJZXw7O3B0KUhmcFVVbnZFMU49fSprJFldbkVSbCRXXTdCUHsmSmV8fUx1PCYuM3tvNmBwZWl4dmMxNERmPiFLJUkqYzc7P3dQQj0+bUpvMmNASj9IR0EvWSQ9Skl4OilUfHcqSEgxNEt4NUBIUGwr''@;'; put 'put ''R1ghSz89Jnw9dDpSJHRzNTxUYGhrPFlOVE1mY2E5OjxVRnR6SW5wd3pudi5BLF81eW8uKX01TChrWnZsdEZbVE00Ym5mZXsoVlNueyNhWGJOP1hYKjVpInU6Ol9FVmtqXyUsc0diUzZXTjZUQFNHSio5TCMxfG9yTHZtRTRgQSMoLjozdDV7TWZhUCVTSHc/PEEhQEM4YiFfOkc2SyMrOUpsO2ND''@;'; put 'put ''bHpmZTlKO0d4N2leJTpEPm98MmA1YS9wZCZieG48QmhnaHQyRns5YTRHMjcyPlFhPHFHNG5bPEtJPilGMjV+PmJPTnp4eTgyNm5VZ29eaCpTYExxbCxnMlRVXXdmOStFWUAkO1VUZ2hARzJqJiYwdHtWaGRJMT0iMEI4Wmd0QmgoYEojeCVZa1tRaFVnOF83L3ZxKERAd1NxdHlCIV1Gek1hWG0s''@;'; put 'put ''SHZOMGd4QzZSVmFQVls/aWBseGE3ZE1AOFopP2J8OF8vOzA2Q0pxZjQ+MU9aK2BlMDUiYkJDdllVMWc3MHtKNkdANnRaUk5ocyl+K2tndTlqJVRPMDYsbithYFN6I35QRiJaMm9YekBXVU5FXmJvMW9uYkovRn57dG5uMFlyTWFbPTFmb29SYiRZOFMmLEpjZ3gvcSMkXypeaGk2OlV8IilPdSEm''@;'; put 'put ''Zlh1NzVWV2Q3JiNnLG5QQ0F8clB8cnBIMkhFMHckKEZ5YEJhdF05MCUuM09uUz1pekpudm17UElPNiR4bzcpYXQsL0IxekpGUmJMfElGNH5JMGoySS9vZilhJkJyIzhtPWBebUpqN1MsI0VRJVFdXiFbK1FiOjBzbHR0ZiJNZTt5cHs3UlhEQiVURXdlPHw2ViFsbD8yOytNcjF7SzRScm1Ba3ZR''@;'; put 'put ''UzB6QSpTdlZ9TmRILng+OzcyUjU4LFl9dFZWbGtwNzVqISVUbixXS3c4am5SL2hibXV7XTppJWs/IWQoPWE+JHFQTihZYz9bOnpEWEJ2T0d4Iy93blJCfTZ9aXF6KkJYVyQ1dXpZZnYoZTJ+Ti44IWVHdDZpIj5lI29tV1ROZ3h2YUdaZEM0fit2MkgmR35qeVJFZSFLI1NAblkyWn4jZ1hKdkNS''@;'; put 'put ''KmpyNktEMzo0bUVIJXxpJihFImd1TDcoMGkyUkhoO1ZVY3VDNTAufS8jLCFvVnJaWD5TKktPMkc9MlIpWXgoISVKenhgIVFZNElyRTZpbmNyUk9hPFZyaUJwa1lTWCVQMkJIVkJrU0ZINiVZPWxKMUI+dCp4a35+TmRLdGdffDlFI1YhUXZNcS5ZNWFbKyM/fVdPIy5OVi9WdS9rNFc9YXQmR1tN''@;'; put 'put ''TDZrdUM4VWAvK2laTW9hNng6S2hSMWtrRihCODpOTXpeaikrejBsRCkkPHIwWzY+N0U/aTErSC90RmFLP1tPbEdQJit6Z3ArX0VkJmAzSjVZaWYzbG4/MFs/ekQmZ2NBZUlrPHVlOUcraEwpYTJ+aSMvaDlSL1I4R2U6WyNUL3s7bHg1MiZrcD0idWdxPUYodjpEKnhIXkFFRi9keFsqaH06fHMr''@;'; put 'put ''P3U/LzhLcipCdzduKjwoK18rKy51OTR7aSpQO3Fee0s/VDEsajdvRHJZJlJJI2l6ZTw9MnE2W15JQkJhYyI4SiRoKCkhRWkvPCUxVmBhI1RRMEp6cFIuPCUwRj97bSFhQkRiI1t7R3FbZl0+fnNGdSk/dzNUPGRwTjhHWCwoWmgvL1Q6emRNNkRAMlE8VC88eVBvKyZwOzYjazpDNzdpRHV4NWk0''@;'; put 'put ''WHUmdTI4fHFPWEVtU0N6aWBxM0BZZlMqXS5PUlBHXUYpWltyUzouI2dUIUhZJSRIQXlfa0RVUFF+JWxabWQ2VXlfe2g6T0pMW15YNiElMCNRfn1ldDRPZW1UelZddyQ8VW8jdlByMCFxJTpeXjVVI0Mue1lMcDpwczJOSnxpfjkoZTlCV0dNU0xefDlvOkVvTXl8fXRKaUImOFQ6PGN4JmEmNGs0''@;'; put 'put ''aVNYYi5JfHJZKmckSX0zeChINz1hQl8oSjc/SihteyVxKnwhOVk0ej9gZXNoez5vPVtrJVlUTXhMWCFRaiJlRXlQVSQhK3pvQGBAbCx5Ik83T2Z+ZiZmcn5eOXdRdzZsU34kcVRpfEllblRtNU0vNm81c3V1OW4uVXguUXFRS3BUPkEleVFhVGxGfDs+LmYrYjJIe0BNOnlkaXQ1S1ZyWSt5bSRL''@;'; put 'put ''amlgWXgqTCN5aVcxTl5RfkJGS3I+ZURFfWBGOkloNXVDSzJaI2Y3dUFHdjwjaX05QyN6SUlRIV8qSWtsJTB8a0U8ZFh9XT4oYWsrIlZXOjJGUWQvNUMhc3M+YCpzRlZvWV1IJml1Kkl7dnlye04yYWk/R1REaGplJjJ+VTFUcllwQ3RkW01CdTp+M2UlYVh+QTozcF9rWSwpfDF5MnFWaEE9dDFx''@;'; put 'put ''L1B3Kzc+Q3llST03N28sYSZecX0kNzN7Mk1uUns9JUdGWCNqcUpLVXNuW2RnaGFtKUcsMV9NXnwwVEcod0phfnQ0emwpc1NjO1F2SDgvcU1qQH5KYUt2ejJTcVFkeUU8Q0IwSilybjx4KjFPZl8xXUMyN0w3Z3JeX2luZCw7bihHLiVDPVkiOFEvb0hVK0kuK3A3Q0FoNFVdPCY9Jm0wc2VANyMl''@;'; put 'put ''Nkc+NjJCeCZ2eiZVM0BBUFJCciVtVzI4T0NxOXlQYl9mejpZRXtmI25xOVRWYEozNyQ8InIxOi9oeUsrMThHIktdflUyMWlTV2t+LDBZeiE6NERifFRbNm9KPjZFMSg+Xm96LkZZQ2ojbUt4Vy9DQStvPGI9RF1WSFNxajk6S3hsSX1kWmpVfGI4Uzw4MHciPUBYWV96ZTxIMlJgPkY1NHJsJENo''@;'; put 'put ''Mzw4XmE7W3Vyb1FyNFpVfm98LEEodywpdk18V0BXK1RvZihuMk0wPyZuTmxidCMiRnZoI3pMY3B1fGVzZXUyQXBtNXhtJTF8OSlpbSMqX2NfOEIibnJjOnNUSylpV2pWMkBCRiYmb1Q3YVskfTZmUlZvK2c4P1B6bHAiVGhJezAmV2ExQmZDY11CKEZkenY4eFFHTW1ieHUkZkVqK2AvKntYbi5t''@;'; put 'put ''fHhAQ1JUKWsvRWRHRytvMDAsLCV4S1B7MT9Paktldl58amFkLFcuKnVGLG8+ZiFFWDNwayYuUWN6RH42VSE2PmV1Z280JWVVcyhvLyFDeihZXjRSPXpDWXNHW2B0KmNZWF9dajk4UHZXXnQqOzR7X0M4PiJROFJ3OVYwa1dzOFY/fnBrJEA4I2t8NThnJVJLNXtuK3BDOmJsNWkrfiUxamNGYjVL''@;'; put 'put ''d0xeNmRIdm18VjdodTRUTn0/azYhYTY6NUVvQjtxXyMwY2FHaUVEUiFjOE1JXzByOUpzR1hXUTFxbyJJITBhbGVtS1FsYD5MMFklP2AkPSZMWFBebmpBaW1pKilGP2FEc1ZXUHlFX2lqN3FCYXExK3REVkN1a09yRHY9X1RALDAsdShVWz9LKGhCMUpyV2sjUEI1NGFadHRsSm0uYipKM155QjBi''@;'; put 'put ''W3JTOjI/VlJVTHQzKFh+LGxYWjk6VHFSPGxwcVRQOG5gS2ZEMnhoJCZ7a19gJiwpSls2Qk5hSkhaYF9jTkteMjw9JV1gbWR8SUZnTkN9K3ImPHxfKz5yfTNLXmNUIT8qN1huaDVGTlt+LENqVyw4VlEyQVAzYWpDWHVPWzxaUF9lcEYiQT01aiRvO2pUMlcuQlV1cFdJflVdZl1PPFZrY349Okps''@;'; put 'put ''X24vdDUxJFQ1XWtDfSp6d11FMX5dPnFSfXFWNTlTTypreyw0aTQ8JSk+blplLlhETihVPyM8OFRCIXlZSnxwJiszO18ve185PUc8JFNqPUlyPz4iWktvaHImPj48fXNMNmYyWVNsX31+eEU7YWMxcnFxZHolP1I/WHI2VDI/IjBvO283czIuKzIyZz1DOUsoZTpCJTxvYXVWM1swYDlMLzAwXnY5''@;'; put 'put ''cik+UF1kd3RMOzd9MiNGUEZWUmpnTSEsS318Nl13bz40eE03SSY4cEYoUVdzNVR9QCZGNXthPXY7QitGVn51TShBfi84dDh9ITV5L0lmQ2NHaT1GPi44LzZUNWxdb2ZQODsodHRQaW5fS3FKYzFzPVJVVm91YFVsbjVGZjlISk04c1I9PkY1Zz05eE5TJlJYbjpxT3F2WGN8TSZEbk8wXiVOaVc6''@;'; put 'put ''R3RXRU9PeWJ1WkJ6aSYwW0YhclRHeUYke1cuKlRCZkBUWzQlflNfJnNfUzpvbXJoekhsdnBvL0dpaCF1QT97KnZKMG06PiU5P0QjeV9KfVZ0QDxeUTpiVChZfit8fE5aY3lER0dPXVlsSF9NMTRQZkJiPixUNG9Ib3d9TW9UWld2JEEzMyxWfUFtN3BNaXhCYn0vZys/Zi5EekdJRWJIYX1AMiFB''@;'; put 'put ''PGJZTWd+ZT1xRz95Zyl9TFA9MXAhI1k7bmdHQ2l8PDRBeExKcSVYOWlNKGE8PSE6RjwpIl90ZXU9ImJdbF5tOlVhNls/V1ROdEQhUUlUPS5EOEk8I0VoLFd+WiF6Q1ojJm5ANzs9ZFFUVyR+Ji9YYE99KitBWXdyS3owK252MUklYkZReDdwK0NWKXs1WW93cTB2WExIMm9+WCF9IXNGNV49Lnp4''@;'; put 'put ''aDJXLzxedHhIdT1TcDRzZi4/OX0oOSM8UTB8fnhmdF8+OURobmxFT2ZIVSRLbn5qZlJ5TzF0I2QuUkRgJVhyLmpWWiVAWXdGNHhsbHxfbWt3XmZGbTR4VmpifT12Y3NGeU5NSXdgNjM5TH44I0xhdi99djlxaDBQSH1+JT9bLnY0V1pvckhLPGNLXiUhRG18Sy9pbCtrajhwdXsyWnZ+YSV+YCZS''@;'; put 'put ''SG4pIjU0KXVxMDYvPX5rZE1MYmdPVC8laEdFaDklMGJmbSNXdEFOX2xLakkyKnRKQiJmQV88Y3tMMixxTyhQIUhdTFtoNHwlKzJvQSU9UGhvQkNpdj5QK0chQHEiUjZAWkRsInB+IXtQUjIiOFcoa3w2WVp+Vk4qeUx7VzYlQEQ4K31TWXBoc3s6aSpSRFUoXzJ3SkI1TEpxOFtbIUBJcT8jT1R7''@;'; put 'put ''PzxZbXVeIX0zUDl6OUZPWiomQzAvSlI5SCh5TjtKI1dOPyJRcHRRPDE1L2ldTG1SeTJfYGxXJlNXW2BxXylEYlluZWA+Rn52OGsya1Muc0VPd0g3WGtBQ2IlfSVjP3V9SEpBeCpGenBMJnpqTkNLYDVadCZLQ2I4fU9Sc1hCYU1ZTD9lQUY4Xz4wWXFDITtGbm89VGohPV0mTGVYZnJVVT15OCs9''@;'; put 'put ''dHkjMXQ6T112bi5FQGVnaDsyfFJeZWp8a0N5TjohUCwpPzRnZSJ7YiNfK21Reis4U3BdP1toe2FsST85RklLPX57REZdcyFdKWM8QjcsS0pfb0RoYGFkJF9tSn45QlMmY1IvOEpee3U9YlpGWU9sSzZ5O1I5NCswY21oUnIvWUFmQWBBWXpqdiFsITMpODNgbF55bmt9Qyk1KmApbGMubFh0TlZa''@;'; put 'put ''RTkhfWBAW2c3Yy9pdDZrdik6RmBXPCFsM1NIdC85ZjxgSjRYPDZHI0kkTGYyWVtPZF1OOm1GUkhEMEtML1lkYFNJUTVXSjliM1hyUGlMPXd1ITxUfmU4MEFMZmFATlglXU0mIkw6ZDg1Sy5QXndAaSxTdFNwfjh1Mi8iOnhubmhZXld6ZGlWYG4jOGliWTkoSTVfTytdKD5+S2ZQJFg8M0xNWkYr''@;'; put 'put ''JXdVK3wsZzt3QF41eHwzaG44PTkjNSEwSiZ7QV9MN1cxNXhqY3NhWDFGM15xWzw/SyVYU0dnT0EuI25IezNqM21NQWwyUG08ITclYk0wdX1jVzUifC5zdVV0X0l3TTVaXlg5RHckd2luUWNsS09hOit3ckhzSE0uRnV3em51YiJANlRPZyxJdztXY08rZlc2K0tfdm9BX3h7N1Q3SytuQ3kkPkZR''@;'; put 'put ''KSFUYGlWMHcpeCVrKiZjXXlPZEUsWURDYTY9dGErakJKVDJQRjZqfUtTQSN2PFViXmxJX0lGfD05bm4+O19BNj0oSyRXNG1FKWZ4Z1B9Z2hFQGBsSl5jUl81KXhGflpRQmE+OUlnPU1CVFd4QVM3biVuMyxgK2dDLywpaWhOPCQ+Jil0Y0MrX1lnYzlFZGh9bWReJFJJZy85JWVZTklrODc6eTB9''@;'; put 'put ''JkJ0aXt0W2ErP3hiTnAzSV5pflBFbSJGJGY/d341YVZHZlp5VXR0UyNTOVNnIkMsYytSI0ViKjpURUhnPVgodyM2OUklfk53QVpvZTJMJEV+VyxiMyxGMHhGYmR+SFt6R25SL2pYfVNjWTV+VCFAZjpPYjhCa1BJWS97Q1R4LiZ0IWxLTWtBJX1fTT41T3ZsXkM5SyFyaWhWbjwpTGdFPCV6aj0l''@;'; put 'put ''QThLO0dgZCxQWGwoYTh3L3ZWMGFJSCxtJlYjPVNZVmpYSiNXRWYudzY0bVJkWGJHbWlePWVFR30hT09kLmlmLjFoQT1MOGhyanBSNn4uPzBQPygwTih4OllHMT84Ny5iLyZvOUNWej5fQ1NHNldLJk5DcSVnZFYpP0VnfT5wSkclWUVqczdEU2hIKm1FUVU3WSMvRnNyLE09S2VbfmhPfFBGajJH''@;'; put 'put ''NHVyeH5uLDtLK1UwTCRIRC95OlF3OFR0aHlLMFpSeSQuPkMlekU3cD54fntSejF8aip3TWZUKF4zIVY5QGFCTy9oNz0kbiU3JS50JFchKFMibEFkdEI6JE5WbjtsL1JfSE5DTjpLX3k5RG12KWMsfkxzaVFjIUd0bzI9by52U3V6aX1SbF5xOy5tN2RzRWBPUEYoVGhrQShsPWpLSHE6KCJOeU5v''@;'; put 'put ''cjNjbE9KfkZAd041d19nNj8uWSY/PExLTnY5a2A4emNWMU5tTk9deU07QXdRQzQxVWUuclJrM14ifVNXYmBZI2YjOk9EOT5sO0k7NGRWWXZiYjo9aVVgdy9RLkFTfnhnWEJEL3BXXmQ5c1YsNXgwYEpvPGdTJDZSMCx2PTJTKVF4VHM8Y0B2RFdvOGg6dHp9WW53UipNSzZZMStESkFaOSNTUSki''@;'; put 'put ''czQsWXovX3xpLGUlMTY7Lj5AIkpfJEUmVW1ILyExJl5QWU14Z2suWmlgK0VHMnl9IyhGMENSaktVKFR1L0FHSTJnaTBtSDdrUT9bdWsoSzN5OiZkcWRCd1AyZE5KYTtEZ31lKVo9IiQvTT9bP2EhMlZPRXJGWkkwZC9VZks7Kzt+WzA7Z1l8d3NmV1AudmN2IlJ1OUZ2MShYcW5wdnAvaEJpJH0m''@;'; put 'put ''KiQkZm55RSo6Y21Md1hlOkN5b3prRmxmb1BkOUUzRTZfdjF2cjR+JGJTUWVMXyxIT3w2Q2ozPD92NFo+LF5beEN9Q3w2dGwrMSxpVTMzdWJMSzo6P1t+WUl2P3U2cUBIJGxNYk5fVnIweiRSI1h8d1l2QG5tQywsM1UjUyIpWTMsd08wfD9BalFwK2BBMHpOSmZtXjlkdzBjSG15K1QrLnlsRypp''@;'; put 'put ''PFRTJkQ2MzUlK25Se1tuUHF6fiQvNyEqOi54PzFTUz4vfChPPEhpaCh0e3ozT1JlVTouXWVNSkV2amM3YmJ0bDt0ZGNAeEtLPExPXXJAeT90RzF7R0dQLFkhQiVjLiFwdDgvVFFVS2xmfSxeOVZRRUAsd2o6bjszKGJyRXZwdCpBekI7fGpUZFtyOlk6TEwvdHwwdisoREIoSlkvYzAzW0pUZ21q''@;'; put 'put ''JU8pLCtMWjkvLCNdflpLKDx8LFdMdHcrJEpDLCtFKWFFPmAkUSMvNmtmeWJjLDI8OUVqJW5iLzYsQntvN2hwcmRzJSU9eH5NXV0lQjk6TTNSTEBfKSghcz9vbmQ6JUJ8Iy9nakdReUtZTiMmOmd+TFlqUUA1QWZqcUlwcXtyYGRxcD9DTHl6Y3tIO25PdFRIPDRfSkpLaigzKyVPJFswIyFMYXZM''@;'; put 'put ''VjBFSmpNcV1+VW4hSUtrNTVNOHRYdkhVJXhjWjhWSHJRLDFRWSpFRDN1TFA9PChEM2NVZnJ9ZyRoSWV2YHtlcn4mN2Z7YDIrdWFyWEEwTGl8d1I9Vj1bQFMqKSZsayR7QjM/SEwvYnRVYltZPXhOZjF7TEh0InF+M3MreUg0XlpvZGRtPTMxQ2w9Yj1LUWNCL1BFbFV7P10vNl5EVEt0dlBgMTxv''@;'; put 'put ''NEI8N1lfI0cjTDZPKzBxcmdOPiVdMH1RJmh4TGs6aDNQTiV4ZlF5NXxdLjddKlpTdyxFRVl8YU4qNyg7RTomIzU0YSlifF5yISt3KC9TcXV0fD4xREgyW3xNVzZVMEtec1t1MkFAPERJZnpEaVZFNW9feWMiP1toT2BqRiFKNX16WGNVMF1DU1o8LEAheX0wMCRhTyt8YjxjR3BDW0BzM1VgRyoy''@;'; put 'put ''cFtXd2x7JSM+ZGVjUmI1bWxkbEBAI0pldTk2QzpoQG52cn1OcHAmIk9nYDkkd3V2Nk9GdSNQTTFVU0IoQH5De2IwTSk4LGgpZ0hSYGwoUCYoSiV2Qis9bnVvdyU4VW9jJVtHbXhFUixGNShFTSMmY2g/U1pZMCJQbTxOc2ZCTnN+TysmSEc9UmA9VEZnL21zeHNqI1YmPC5sK0dTb3RoV1IpdCRf''@;'; put 'put ''X2VGQlpqc0swKkp5UGVXMVVFQCtZTV5dJFpBdWhWcUM4Uz5JQGplM3JLZDNCR0oidUJlayI7bThPMUt6Vk1mRiFyVTtoail0TVM4SSh8al9kOT9lIiE+Q3tHaysxNTp0REhuaTUyVkhSWStNYWF8NWNOUVZLNFBqWTpPSmBCbHNzOntKMysrUnNIWF0kQHAxNH0qVyUhfXN8UzJMcn55KEg9M1B0''@;'; put 'put ''Im9YNXJ3QXNqOTxIflVJayszZ15UWCYiIlsqPWBHPGdffmlmLD19QnNnfio5WG49RSVYP0MuPCx5ZEo2UEB1WCk5c2ZJYGgoQHVqSyV9MnFRdDx5MGw9bkM2OXE4QXx5QlMwYkJOVGAvVlhgMUxGeUUpLm9Vezt+LmhqakU+P281RiM+cXtgOzxHVTkuQ0VsdG52dj10aUFAdWEscz5qdWxAYyZW''@;'; put 'put ''b2VNLCFtSStJc1J2Qyt6Tn5ae2QwKTosYi48W2xAV1cwMjJtV0JaSEApV3hkN3wjKFNmU3F1MjEzMW05dWNMVWg+QUEqPWFsZFJOMVczVHtqakwkfktWKnokc3B7RDBrL0tSZmtiNzRALEJUMHYrYlFNcWg5eWlLKyVGb3lzLkI5YjQ0KFZjQnV3WjFONihJQUVHfVlMb3EiUTJZXz17IygreWVf''@;'; put 'put ''ezNyQ3BXQDY5TShJdy8/e2FgQ3RpJF4iezhHN2AsJjdoNnZmcXJxT24vOHskLyVqfFlTRjw2OD5XVzNpeUJNWFJ5ZkYpY3Asb1VTJE5iI3ElN3U4MkV0RilvUXw6YDV+MllTNi9JOUpzW19FSXIqQ2xuRyI4UDViZDI2fTNiIzMkfGw2XztzUXZ5W2lvdFZEPDQwO19+cDkmakhTSiFILEtTNG11''@;'; put 'put ''fStqXk4uT0YwWTp9WVI0SHd6K1phUk1vT15oQmVhISNMWT06Ynx6XlpuZUN8Y1tqVlJwQjk2UCFLR2lWdzcvQUA/T0Q4cls8djBVd0RfMWB+VypDbFRTSXU3e3ZbdlRxXW4rQS8xZUg9M0c8WGhpNDUzIWtfSDVje1olfiZeNGhoa0Rpa1pROlM+dm5xP2h1bzRec1g5SUVnSHQrWTp4MlU1dUk8''@;'; put 'put ''ZXdwcHU/LmJaP2dSRFc8ajkuV19jdHk8XjdeQ0M1SiovS0JLZUVOaHMvNCtTLCo3JjJpSEcjfUMkTTxOamVFcSxlVCpjREd6TH0rWWtyby5RTDIxPyopPyw/Yk1ISyIwYE0qWTRsfj5wdFgyW2VfSl87cmY+RnopXXdEVFI/dzpoTlEsV0d1RV5PJCgyXzkqQG56UVclNEtHfmpFU2RUVGBvUTRg''@;'; put 'put ''RWxjc1JNRjZkQVojUVhOVmIkMERdPT5xJGheMW1sdFRTaGlHP05SVGRYX0tgSSpwfmk4ZjREPjs1NHMpVD8xYFQ9VjpPWlB0XXI4KTE6UHZHQXVvfFFOLGYyUnl5L2VxKE5SRUQyKFQrM109TUM/aGdFWFtHbkFNfHxJSH12a2xRTXd4fEA4XSxiUSZZeGlSRV9kaEYwUWl8UTR0O3dGXUI1RF46''@;'; put 'put ''LFZ6QF9RREFDMnV9JU1UYTtobFR9fkU0KVlePmd8MnN0Yz9OKzQqUF1HO29rX15BU1s+cTVpYzNTO0wiPnIvIX0sOEs7Z2svcHgsP3JBVmJRQm13X18xJmpUTGM3aDxmdntpQDM+MTpOTHZaYUYpe2tGTHF6N2E8N3gyRXJGIWJTaThbWG93TV5PNy40Xmw8KGEpN0g1NkVbaFspYDs0cFZGVXY4''@;'; put 'put ''emsrc2xUdiokNTBYem15YkhrQl5QM2xSa3xwLn0yRU5bXSFRKCM0UCs7bk5Ra0h2T3lbZ1RMaUgvKlZMdno2TTN7ODJfTyRabjc3JmIzRk4pP1QkWDxjfWwyOltCem5bZEI7OyttMCkrVVclK0BOJjBnR1V6QzFkSH5vek9pKFRjODhVKloqaVpbNVFiOlJHP0M9X2Q7Sn5yR054PHl+VCxeJD4x''@;'; put 'put ''clpDNktsSXlDfkksSmNbP3o4eXxqTio9U3R6MFpnZG9bfGY5dytXbngpT0I8UXtNaUxSUFlATm8wdWNzUHc1UTQweyRgcDpETTEjUUBQcXNmaCh8T0VHXkRfM2trRTcoNWosbFJZWDdPaUtKfkBsQnNReXJiR19BclhhVFtjTl9IMSQ9YTMsNlpPRDJsSzh9IT05OTV0MUV2ekkzY0hmOSVsU2s4''@;'; put 'put ''SktTSTlUaF87RllJXW86ZykpJl1nclF8MGt3L0tDP2BUei9SZ0AiNWRoOXwoJENvdCQoT0MreVllJTl4YTxtZy9mXjFAaXJwUU14Q1o7cj5mKm1hWDNWb0Ndcy91Q3NDOkpQI2tZQjAiJUcxPC5Mb3NXNWNaMSs9cXh2SyZPUVBqOz9ILkRJIT5panksTmp+bSRdRSRDY1A+eD09RDUqaHduZW8o''@;'; put 'put ''OXs8Q0lpZmNQYmJPbHs3clpgTGFlcGhDQC55Vj9nPTBOUyFEQ1U1S1I/YHg4ZXhAcm5bRmthREhHbnx1JGtXbCpRMGpDMChpMkdFOzBAL2lnMnNRXmxJSkdDLixMQWV9K1ZCYCNbJE5DeHVpelUlKWxKTnpHJlslcD1JcCoqXWh3LCtCSWI7SmlBbyhJMmA2eWEzQns6azBaSkVrP0Q6OmlfZyw4''@;'; put 'put ''W0YwSnNhKEwxZ1oqY19tci84Z2FKR2lqT0BQVnMvWCwsejRqcislZHtQflZwdkZjTkpDWFFDKWJVRDNtNS5rJjtgKU90X3U5fCgreEBsInlCLEgpRXs7Ij8sT21QIWZJaSFyI0NtXSp1RDpoMy97SjN4dUtGNiw5MkFZUkVZW0dTZWcrXShpYmo3XnVddW0vfjRZVmBoaU1DJTU6UWI+ODBGUDB1''@;'; put 'put ''ZkJicnRKWDJXOzZMWzA3aDIuISx5V31JWTpEX1A2fD1BXS5bdTV6X1N8ditiQSp0YWsmI2MyfjB9MFlBdVo0PSZsK3RgVXRTKTAqflddQFFldFV4UWJIdCwkKDdyWTxDcVdnLzZrS15ELioqUVhUT20+Z29mQnx1OSFYYlkzWEtAb2FkP3w3N10wMGpackNEOGwyc0piPFN2JiNjcmEwe2E7bEl3''@;'; put 'put ''dUNoVFl7YDRtSyoubmJsTXkwcDtCMlNdLGtwLDBIc3lDOypzMWRJJipINlk8VlhkIztsYFkqaywrOi46VFA/NHt6JlRFPUB8RTtdTWpXYFdJe2BESnkqSCtWPjU/TnlobHhuOyZyK0VjOHcoOUtvWXc/W1FAJnVKJilGXkhMNkNlan5AR2Q5blhNVUJbZWxRSHR8VW13R3xXKE50SWE2bT93W1ZA''@;'; put 'put ''PDVZNi9wRkNITEJwfCh4ZDcoa21ffSt1e2d0VjtRZHxeK3xhemxNbU50ZDo/JklgbFpJJCRxLjApPV0lOWpPUS5LTTAkOCFpVnNNVUl6X0V0RiRtJD06YStGJXtAcC4jZkxAdihmVmkoVSZ6MiwocUUuP0QibE5uT0s3a3daeF8oZWQzOEApOEs9Uzc7cyZ1Y35aanhab0V5dkQ6b2pydGg0MkZD''@;'; put 'put ''d0xHPD9qb0Y3KnRxKjVkek1SMzx8MXcjdEdpRmxUPlhxYXEoVlFaUGRnIWBNb0EyVkd0M19GX0MyUVQ7ez1gQGFKUGxrLiFoLjtYNitdRUcrOzo4Z2shRkg4L04lcUZVU2ciQj14V2QqSiFaSTFLb3QldSUwaiQhRCtPVT45YTdndWshMndkK1lERGlDMipNZ3FlWEh4SDxYfl1aNmJTPHFEXzR9''@;'; put 'put ''IThdOl5WNDB4W2lLOUc2I1ZDU15bNjVITHA6TF55PkptezdfPixydUolLGB1OGg0dWA9c01vYWQ8KjBZMF9gWFNiUFJ5eDpxb3JnWCxSVnxTZ35wT3l5XzF4SDhncDFDJmdiYD5mb0s+anQ1cVFiZjJUSEBRYj8vdytdO2Y/Qnw6RVB6OjgmIyp7dnNfNEdDSylwNGlxYjs7c1JFN1JhMjcrT1Qv''@;'; put 'put ''YE9kWjY4X3dkcDc7O0NaWXQhVkpHPlJ8cT1sbWhVV0VJPEJ9JkRVS3ttKlBraHFrcUIsQ3RHRmJrMndaVXQ2SjUuKygoN1hadyoxX1huUDJHdDhrWEAmUyh5ei5mXkJDIUhfQyZ1QSw6P1Y1R3ZLR3lVeSQwa299WyJaYFo0bV54bDZCWV9pNU1MI2xjVXdzaEY9NkklWCM3Qiw3SldqRm0qMDkp''@;'; put 'put ''Nlh8aU5rKUo7alllOixKY3ZiU0p8ZDk+UFVrM0MlXm1XUkIvbzw9JCJUSnJ2O3c9MjUoczhWSSErPn1bbW0uY2F7WUUyVDJ4OT1sfjlqPmVneyJJMDMzPH1aUV4xZiVVKU4wPCpSfXZ9Lk4rXzleOUJNajw7Z0BJLl5JZDNEfHciLjY7MkBufEE4OTFZdSpALG4lRmRzMHhYeXAySW80SGksTio7''@;'; put 'put ''emNkdDMyQzFyK3pZPXQ3QlU4XmcrX2EoeXJhK3Q1KTBbKzZOL205T042fHA9fHQ6Z1AvPDNrP1BQTTE9endMYnk8dHpOTmouX3NEWW8/O3M8eiFGNTB0YlEvMk19SUN3N1hoekhiPGxteStJbE9OPmomKVJoeG00IVc3ZmJCNV55K1lPJWd1RW9yayxjVHRDK19XJnU8V2FzK2VXX2ZITm0qWCFv''@;'; put 'put ''OV5DMyVdRF1ySTtMTEo5PlZLJjZ2P3h3QVQ+c0RRKzNDYjshNzsxRSRTYTFJSWtXYn5xJjwldnFbJSg+ZDMoOG9WY3FEZCg9RmRzbE0pXWdGfD4sPjs4Wjd3ZkZGckkoK3JIdW58NWspQ0xZTzxuZ3UrKEleL0BKXyghIkEoLG1GYTJOLHV2IU1rMFM+bTpLPitVVS9IbVIpU2xGTikuQDEqezxI''@;'; put 'put ''amMwRW1Efnk5fno3ISxXcVkuO216eiRJKnBZJSY7ZFVFKz4pU0YzaT9PeypkX3pPc35pXXQ3NiREPHIqfUpWIX16IkRYeUoiUUAvKjdiIV9uZDxaV3pdZXBaSlV0eHJbW3AiRj83OkszbjAlWyxlXWs0WSlJPEJQYztqbHk8MSgreV95IV9bYCU+eXxAcXNmV1pBKHdhZE06ZEpQZDQ1a0B8fSJ0''@;'; put 'put ''Y1VBZWVZUGU6Iz06MVNsMFYuT3k2UE4kJTFVbV5uTEJ4cEcoT1h3ZXsoY21TcS5AUyFfeTYrJSQ6fi5BRSJDO3t5NjRSRUs0Rko1ezhfN2p2L3RmU0pnNnQ5U11AYkZWcyU9eEQjRn56QSl2SCpnNCl1W3ZKYTVpIUxaUTJBJWVwIVZCVjI+LHxUOjdIKywqLkg+N0NWTlpWUDxnI1N3TVA8U3tV''@;'; put 'put ''M0w0SGZVeiNycjZARDpuPSxaZ1AsaEM+c0Rge35FRmdMKllHfVl6TSFva25Bejgkdi5PRHBrNSprRC51fEI7T3Y7V1socF4rTllEM3dVUlZpV1hdXzA/SXdXZ2NoT056PVQudihbaERzQ2spXkFeSVVreV1Ic24zNW19UFpUOko8RldDZDA8X3R4dXdnXzhlVz46fiVvPFFNQG4wTz17aWVtSXg7''@;'; put 'put ''ayM0bFFMaERIT2h3M0w1cTU5cjM1azgmPl1gQXRLX0EqfGk3ejRUSiw/emJPVkRBKCREQWRKdnZfQD4oSlNFK31kSm50Pyh7RDpeKSRvKCNaPT1dKEReRnkpYG5KITU8cyQ7MlVXLE1FXUBEcD9uTmV2djRqLlFwP0dYOiRENDtuWlQzTWRkN11MMFdXWXpbbWI+K3lWQkBUcSxeJFFkSm1jdltm''@;'; put 'put ''OjM9PlFSIXl4fj99djxXJCk4S1o8ZTxzMUZbN2VMK2dbPzojPjRXN0RTQ3gmaDUrNmZybm0hJCk8e3AzcGZ7UEhqcl9AWzlAekx4Wi5JRCZMWHpWK0l8YnFNTEN3Q3c+S0s9VGtLVyZSY3FNVVtxXUduKkhgKlgvQEM7RUA1OGhZUyFkO31fXnNIQDhFaixgUDQ6Tyk/I1RjaiVOVGtjPDd4bXJC''@;'; put 'put ''Il9oSlhXNyVNXSkmYDZvSUUsJX5FJixhZSNNODlsYVsySEJsLnpjOkh7d0tkdXkob3RNPXBePSJbdUQqVThRM2lFLCI+InApNywrRHM5aHFJbFtRMTJOTV5TbD1TTVJ1WFRrSEEoQFVWNyQ+MUZXW2tXYkNadT93IzhKc3Q+SCorIztPR1hHQVEiO09eUnJOdFJuZ2ddT0I4Nm5tL0plUjFzLjpK''@;'; put 'put ''ODRaOkZGOGloJkcxPiovR1FVSGQyUUx3JXN2XjApYzk+Rm1WZHtpYVYjbmtFT1JeNUZKSmQrd2Y6anM4NXFbPyg7cF00fTN1NUBvNlJ0e21vKF17ajdaaUV4d1tua25iRjVGPSpTbmshWXcqJD9RVnIkRi55aSVoZnQxczxsQWE/Qn0pM3UobFR7O3c4YnQ6Ym5kckk+NTxKVEk5QG02JDY2WSFa''@;'; put 'put ''JE1YM2ZdWDdEcDdmV2hUXSpVLCFjIlZ2Zjl4Jk9TUnslZUpieERSInkxTGJ9UHdzKG5XYzY2SENsRU9hejttLHh4OyRuYSRBaD9yVSFkST1TRTVCMHczdW1RNFdFTS5mVyFaYyZGW2ZYYD9OYkxdaHNmMVBpQnI1R25PfFFaP29AdEs3Ql5IOndWZnoucXoiUklXV2ZsIXh0cC9RTix7MShqJDJU''@;'; put 'put ''bEgodyF3fjYkeCV1X3kyQ3hLYSIhTCZIP3Zqby5PciVJbVV0QiMrUFR5QVkxQnFzOEZoXTFoKTY/dDwoYWA2eWA2eF4jUi85eXtLRCpFVUJobil1M0kiMX5RNDBKbmAkQShRW1Q8UF88YVlvWjJkZUJGbTt+SmoramV7b2EvTCQ1KD1fekRiW2UrdF8+b2hSQmNUZ2g3KXcjcXhJKGR0JnYqekMv''@;'; put 'put ''YyNCdSF+ZntEOD85KVdCYjllU0w9ZUxOWih1cTFZKyooJH5QIVAoSGBJTG1tREdBPGhoLnxFZGt5PSgyczF5dkdhb1A4JSNHekchP24wXXBZRTVocXcmM3tvRnx+eDwkfC5wTipyNiJyTkhHPkpoMTkvTip1ZWlOIWMhJElCOmoidHxfbyJfQEN3LEc/SHtgMXRBc0hCPXREMmk+fHpqRlJZJFdZ''@;'; put 'put ''K2lONVtqbVQ6XWtdPiZKUWRrOlZPZV02KHk+UFcyXztEPm0yXWtSKT0yUyFsaWpIfXxpOD5IdGRURkQ/LHs+SSVQTlFoTFljRi9LfXdSVFBeaCJ0MldNY3xqTlspNDcyUFVrPF9bMVtdWWRnTFohVGJvSXI0XTg3UyY5PEpdNVZNZlBzIiRZdU0+S3o6RkIqNlJAWHx3cnAySEJ7cD0+Myk/I29s''@;'; put 'put ''ejFgRHkhYDZKT1A6Y3QsQk4yPFA9V1tUflVsN01gITl9JCNHaTlLeChvbyJIaCE6fEdPVWd1YSJUXT4+S1kwRmErSklRPUxBTzV8IjNXREYrdXl+ZiJ7R3Q2S3RDYi9oPkwxRl5penwoQFYsREFTI3ZecUx7KVJrOileTXg9Kjd8aXFpWDJpO3I3aXxKLlJ6fDNINiNwby5xdkdzUDBCTTNMdnM4''@;'; put 'put ''ZCUjIygzYTssdjhZQ0pOaWBGbyZdaUM8KDoqcVo/W1ZgI2E9dUM9UClCYF5YXi9VN3Uic0VqZmZYRWU7cmhEOzh3InY9ZHgzcDxiR2UpUyJdQGc5ITd7ekhYYlEsL3E5cjtRNGhmOCsiNERDKzIrSj5DfG80bkwsYWR4cX5mcDNybCU+Z048RixfbWBDTyt9KEFZfSJoMEJjeHwlfHFrd1BwIkdP''@;'; put 'put ''TFk/UENbUHZkMUg+I0I+PW5YeVtCJn4+QjhIZSM6cTlCXVEsL1U/RGB+YV9DVWs3WSZndDl6K35DOjplLzRONkNVK0pbRnpOZjFJbUJNM01QQkZecUtZRzxFfjxGdSw0KX5GIXw5cCM2OnRgWCx+eGVtQTExcjQzZ0oqJEt4cDNlS2s4dlN2XnhxP3VxdkQuSkF6KCtIQ3w7RFVRenw/Q2E/UChj''@;'; put 'put ''cmNOLzhlLzZqLFNNR0tVPi9abnxTekswN1ZzTUE9QCFHODBFZGd0cX1jZH5hc3pwcCpgPDhlSDNvQ3xRKShlMXRaaWwxPmYkVXMyNywrWFJHKnF+bUl4ImwxI3RsZ2hmczZoWCF1Kmo6K1tgZkM0OlZQQl9ZeXMzTip9JXIxWiskYkYmYDY1RHNuOl1oXSpYYiFEPGBDcGJVOXQ0PUdSYj12Sy9i''@;'; put 'put ''dmJEXjE3Q0gkRD8sISRhN2xZOnhMIT1QWzFzejBxczUqekBibFJ4eTAxInd6OitSNjNDLD1zJTlHYFB2KnFyKn42QnxoRCZEcmJ3Lj0zPWU3b3Q0eHA5Yyg+eG1jPHZhcF4zKD9yQl5uMyFqYz59eFp+RE4oU0VhTkxvJEIoVGBNYDJKWzZIQjIiVWxQOE9sYTdPL24zWH0zYWspTi4pSyFZajB2''@;'; put 'put ''REVDZ0N5fSJwKlJPcXgmO05RImFRalgrJkkmcDdxLGRMZGNfWX0pWysjWnRGP15RXjg6V3dbbGp0SDZ4SmVlP1NsP1M/YCFnV2EwZiN8OnQqaCljOW5INT59TjQ9fm9vYkdeNHVtclJ6K1U0Yko8Pjw+cyhCSzVZUGVhe1FQZSZ1c2B3WGppOyg6c2olU309SjgxT0ZiSXpDI2N+R3Ykek15VXgi''@;'; put 'put ''MkUyMFJgNyl4MjBzQ0A5Izo1WFBAU0MxOShFNk8uYFMpK21SQ0BaR0k1YiM1czk9YjkyOXMlK1N4UHVLVzc/TmRTcktGWXR9L3I/dk1mJkdiQVoyVjRvZW50MU93UnkoV0BhQEM5ZUZPTGQrMENtcV5XM0B9Qy5VezJbZEZva1Y1JmcuZk1nSmNNY2h8eTR9JEI+bGU2XjFOUlMxVl5FMVk3d0Fs''@;'; put 'put ''dXhARlZyPmUmfUNAUmM8ZjpZYSVJT1pVRSRVa3cpeSZ+eWNAMitJfFl2c00wWnFCK25kZGxFaTNAWSlge09zPzZlNEpLczJYd2BRPD0/K3J6Kj1eM28kKmk+Y2lxPVp2e1VsLCRzVUEpUEJkcV47KjI4SnRCNDxHN258VHxsMWNZbXhrZCk9fDlZdV1XSzN9aGojPTF4a3J0YlY5ZDpdcXMoTHQq''@;'; put 'put ''MSVpKjdTNX11TXRtcm5HdSYiST9lN3Z9VypzNXRYc1tUVyVkZ2t1TXU6KH1LYFl+ajMlNE9wSUF2KHouSjNKUGhXLH5wa28rL2hdR1oodW5mcV8vRlNSTWBZXip5YVFLfFJjMC5rJm5OQWpNdkhPfl0iPzUkTE0xc0JiYXxwfXhMQURNWzJfN19aWVFIdGNiWGNNaFU+WC90elBvZm1wdy9yQEYp''@;'; put 'put ''K2EvfVc/XlhNWmtEO3pTVzBdMiw/Vz8qMS8ldHw6bSlAcSZVMWpMOThudU0uWUNWWmNAY1JNZFBEYlMsZlsxeSh4RFhmKkc8YzBiKW45NlhCUGlHbmZ0Qm5wJiNNOlNJa1BhNHFsRUMuWyY1VF1Je1MkaS9oUGE4P3czKnVrZGIwPyJSbFApS2VkKEYySWB6MWJeOCt9cUs3NWMmPmw/eGpedSQ3''@;'; put 'put ''WjBYJkU0UjxUJXRRP2VfSCRsOCl4VExqOHkyc1Q2e24/fCNxR05sJFAmUXo8Il5ZcXteSShxeXRiJDcvLDI3byZndjI+fCFKfEkuQT1+Z0VSMmxyL21jYFt+Sj9jUWlJUTVVY1JOJjVvdTA/TElbWDYrZmVPKnNFRltMSXw1Xz0jSlpiJTFJflZtc31wUV1YUSZsNnwkV2VBMlkuIlRDSE17c1Rg''@;'; put 'put ''XkFZejZ0PDNSaWdbKShDdjBvK3VJPUc3YjJ0JDNAcn0vKFNDcjw5Iko2YFRnTEU+SzI2RHNoKTddQExFI3QwZCo8QXo7JG1kQyk0KVAicD4sYjwvOmRbL0dJUEkwenBVUW00SmpGVlg3czAlbE5FX2FENXF0I35XWn5rSHBxcEF8bH5pPHExXmJ0a0UlJTwhUmI8Y2hjdkY1KjVCWUo4SGAze0hu''@;'; put 'put ''dUNeNzZyNSw2bj5WcEdQfnEmLnduZiMwVix7cClYJjJEd25YYE07KWEqd2s2by51IkdoOjZvdWsmNWxsZEdaLy9RTVB2TXorP1NtRi9rW2dYNXdZMzY4SGIoWWM8W35FckVRT3cwPW0pKmxEd3R0PH4uSUJQSSpSSlVAcnZMamRDODM9O3EleDFaT1k6ODxgTEVdXVdQMVlYSiw7PV1+aVB5Rjhn''@;'; put 'put ''YW1iIXdfcUZEISVxYnFrRzFzaVRZX0oiLEZNdS9UNl1GPWQ7JFcpejgvQjRERmxXZmFzN2FqTik0S24wT3Z5e09HRC5Va1tyeHxIODAyRDZUPTNCZChrP0IxZ19+XU1Nan5BTWlvQiNJcTFZJklTTXgldTNjN1ZlPGBvdDpfeG9waEh1U3h9LE5IPCVYMUVVfG5KYzBpdjdkeVBGXkl0YDAwPnUi''@;'; put 'put ''YGVxVil3SCFdIy4/K0Ese3lNPj5rfVJ5eUtCX3U2WWpEUiVXV1FiR0Q7eGhoJGIuNFkvUlp9blFqcVBeXzsld0tSTj83ST9BIzFkXUxRTy8qZVRXbzFQX3Z+T3wvTWByalE4U0pjRn1NQ2NsOEZoR2o4cEBtMnAkSmJzWn1tZ3JZfEM4IX0pclJ+czZVTilBfSZAb0l3T3FLenBLYzxMKFI5NVY1''@;'; put 'put ''XnFMPWFnaU5GRzY4cCQlV05kMkFlIWwrVVBxcihuQSkhNlZVN1R2SUJ5STZQZTxJYWpYfnwxSUs9IjhwKFJaVSRgbkUubmNqY2R0Lys7VSpIOkZbYmNXNjpCSlYjJUpBY3RJaFExbng0XmhsPW86KGFuTytQbmhsMEFrMUxtTDk1I2AqfTNbKm0uJmt4RUMjIjAybC9oOldgdSxhU3pHQ34hKyJZ''@;'; put 'put ''Yj0sdUU3REp3YUEiImNgNlJjNXZqTWtHZUUhcyYsQWZDcW5iIkJbNlQqU2pIWz9CZ115N2s4allLYihBazEvZjA0eVg5MF9INX1tRT9UOz44a0tvVVZkM1lMWi9MSVEqMWdSSlFhUyQ/aDorYFZVZFtqOntZPXVAX3xgczJ8ZjxSPlUxIldUbWxMSk81QnlMQjJEIXF8dkF7VSYpcFQ2cy9ZfjVC''@;'; put 'put ''O3VDKVUkaGU9LmpZckkvNS5oeGt0L0lPbHhgSEBFdTNDWnJRZ1tiPl14NE1qQ2pfMzNPNkFTMkUsUDMuR2Bda0xPa1BDNnowW2ZpelFkUCZJdVtvYEBEWX55RiZ3dHtUem9vMl1zQStnRCZ+MitXaWZfKD5CVkgkWjIvNXtSLHoxJHwrcGxnaCplXlY8Z0IicyhGXTllOUlzSl1BVSI6bWo5YUQ/''@;'; put 'put ''USgybnxHLCFza3xeL2gyNF9oekdmPWRFLzlWTyZDUEQhUS5aZ0crS2dOfk8laW1wNkZwdG1obSNIOkpCPFI6TmhGJXUmRWRkeClXOjpiP0xNWVtzM1NZQEd1ZzwvUFAuPlcyVyV9SWFRUkZYem0pS192YkVKLFdPUFlELlE2eSRFbUpCTldDPEJZKmRPVUZwZHlRdm5kc3xTbkI5Q3tHKypvMmYz''@;'; put 'put ''UW1ZLlZsO2RkVyRDdlRbQz14Im5CSiphTm9mRFlmcUYka3kqYFtNfThCOFlCc2goNXNENS5xVS9YdT40aFpER0ddZCM6dzxtdkduQ3YjV3oxPDZOWW1hJUgmY1QsUWMzfFskTlMxdkpzKlJ3K09yXVNZbjs/Nyh3QExdIzNSL0klVDxrRE5ZUmEwciQ+X2F4VDRXXjs1SlBrXip0TF0xKXBMVC5a''@;'; put 'put ''WHBnQ2orfC83MD00cjdfcGVGO3l0fFdpN0leW01IanMpLDs7TV4rSTIqcV1DXnZAa1kuSkVIL3l3e1tfU1dzLGddfVR4Li9NSyRlZEJwRixyZ3I5Y0tdW2k+K1d6JmNPb0ZRNWg/TWQ4Vl8xdHkmSkxEXUZTcVdeWVhJKCVzNXdzMjNCSTopQSVnQHY4JWwpZnpCVCN7fWIxO1UzUXNEdSgySipo''@;'; put 'put ''KmJxXVVaelYzQ15EXyl+digjMFdSLCNgQU51Lk8udCV0MkdZZzIoZzZmT0llOjd7M1A0M1FlOmhESmp3UX59TGUuNDl0PGZ8Jjd0PzE0QkRbU2lpWV00UnxjfChEWiU8MiErbnFVMCw4eUYqalNQIjQ0K2I3PyRFNDtAayg/fEdzMk89NDRmP09+KU1BK3JiSHs2dmY8ZHArWCRWfHpRSFtTK2x9''@;'; put 'put ''U2ddIjQ6b3lHSE85UW8jbWUvK1g5WFNOWHZsayxBXWZxJTRkamJsKmBZdTshTWdHP107anZVPTh+KzAmTWlBczIsWDh8eW4uTGg7SG8/d0BQP2NVUnY8N2FpOyI5dVBPYW0rSGdbbHlOQ3kvOzJZKGAiZiRzanptVDliT0I9aWsjN2FZTVd+NnYoe2dLP1pdYjFCM2VWMEs9XSZyYDpHcW1xM3h5''@;'; put 'put ''Qm5lPW4pPkQ+KXk3PTZWclZ+KnVWfSE+b2I9NkBGNUZHUVlAQzZlKEdIJm4vRCVyVm1mbjI/fXdwa190eUxsbUJbWCU+KShTMlNNIiU7NmAxVTIsJFN+JWBsTWhRMEVga1oiK0VQbWNwMWVKfTp4SHNfeTNaVUkxRFJjWWpnVkM0X3tTMXE9Sl9OPXtYbyV6cnlBNlskQFokeSwwQzQkL1svS2N5''@;'; put 'put ''QnlmbnRxI0huTUBhLnFweyFhaTh4NUNHYSlhbWpEMUU7PE1gdiZleFgzI3BjVSFwTEJaRkczcEBwWENDT3QjY3JAPGV1U3drXnR1WTxHMkV8d2tDK080YD9ZKnNxSiJwdUVGVGFUZjsvM0VEe0VBRz4uUl4mYVpEYjpJWihddEd1d2MkUHQ8YD8wLy86cC9mWENZTi8zU3xNeG5PI21iXjolYzJM''@;'; put 'put ''eDxvfX5mSlAzS0dhUlB+OCV4XWVBMVI9fk5XVCo9IjspVVU3ajBxJkVaKSp5dnE9YmpWRH57UXtScjY2MnBDMWF7TUdEKW02NmMsOU1PbiNNXjE3cFJkO1BgQW5CQWdiQSRwPE0uOH1kSlp6NV0uN3RYKG5GTCJZYjNaL1FtM3ksQyJqM1NTTUBqW3crUTJJbi86aEdmdld8STl3ayhYVndsViZk''@;'; put 'put ''TTB5aGRlLDRzXk9TbDVUTDZsI0YuQjNUPGh+VzJORUdtMnF0OnRjP04qKzh4d1pAVjE9N0JEX148VnFaIj16N01UOUIzIyJ5PnxDJjA2Uyw5ciNhYkIvRUdPYzFMPig4JUh+Y1lVKyhVVUJjO1FgfCZXbmosU0VYMGZKQ2N5Y3lSMGBHI1NzLjc1M29YRXBhdFN1S1FDZD9QRCIvSiJXSWwrTCJx''@;'; put 'put ''IjFNJVJVWzokSHdLK2IofiRLM11ROVRRPGVRJGozV3FLRUZxcGBKbGRFOHcqWUEkQWEpUnM7VV9BL24yXShIRDJdS0sqKWQ2QEddSUF2c0x8Pnp5PSxFPmRLWW0pZ2VzPHE3NUdvRCE5eWk2bnFgQjVEanBaSnRqWChINUFZfFFdUUt9IiRwV0ssRWNNLClRQzVSNXd7eFZtNDVCK3k4YCp5aTdM''@;'; put 'put ''e2dmXV5td109ejhRemd6eDRJZyRJKnBYfmQ4c1ZNX3hUSj19UWx4eVprMmE6ezpkU3ghPi4/ZkBvZ0hTWUBlIWFIJX03NzhCbyZ4flRIdnxeYk9OSWdbT3NmM09Gd2xpaj1gPzklYEBPTzkla1pjViolSlhLWklhNzQuMHd8KFRhSUEufHMlPlkobjNlMDw8ckM1dzdDSyNtYSF8YFhicSNMLH1V''@;'; put 'put ''VG49Xkg4SkZmd0VxMXpjdDxIMmF8bCVxJURmNGJFeUtlZjFNaXBsXypdbSNiTVNpfCVpe0tOImQuRTtbYCNuPz4kQllveF1yNSQ+Jn4uWGxlYFtOKSQ3IVMpP2Izbk9+KCpidGM+KWl5VTdTbUw8WVMpVT4lUlZlKVA1bnk9LDJ3JE5qT2hhUj0rbDciOnB9fDdmX0NmeikiQEdsIW8hY0Bsd0gj''@;'; put 'put ''cnFba3xrQEVyRnhSbj00KG5wUmRqOH0xT3Q0ZFQyeThoV1B3d1JudDRLNyIyI1V3RyhDYih5UVgmSWF0czU4QiZqaDpScyJiVGJ4cHQqbkA1TzBiaWl0bD9UWiJ7KDJhW0BWUjhgSilVNGFLSElsYV8uS0E/NUdzbyhPU15eRSpFIUZeMDJhbFNWODVsLjI3UHE9WHsyY0ZfJFReRiNlYGZXcDta''@;'; put 'put ''V1tDeXhFTndId1FvPSNae2FFdl1EOUxGJm92Z0pZVmp8QUIqaHxhe0Erfn5gUW40V0NzQyEvYmBKQHgjci40KT9TdX5pLGJTWl1MaUBpc2ZgRik/M3lbKj4+QXgydzNeKU81UCJ3czghInlkc2BeazVbdlBVX0soRFVUUVtQI3RUInpmR3JVNW5lNFFNPyRbKWNkZXl3dTNzfSpzRlEuY3RpSmwr''@;'; put 'put ''QmI3WEdofVJuZzk6KGJOZzpUJnYuIWN0eywhUWR2QFUjRDtVdHs1K1dJakM8Wjp1PHo6XXEuSmlRSjhUJVdMeDgsdkRATEpSVzRPMGFUKS8kemJeUjghSnhQVzYiamAmMD5bSTMvcWQyYF1nR18jXURFfldsLilyRl8+bihubnlEVl9WPFMpXjZLJF4qXis2fkB3TUZqeCkvYllAbzlqYUpzaUww''@;'; put 'put ''fG9WTSEjJllqOyg3IThLRD5PIXk+V2gmYmBROSw+IX5+VSJqKSsxIi5NcWEvZlBhblV0ZT5ocHQpcmJwcm1wMjtnfCQ9P18mckkzYnd2ezB8WTRlNnBkIz45RG89UkRrXSpEa3JCfVszL3VnJntqJmw5cTtEMlh5Ikg+JWksLkFrdGB8QHhxSi5naCQ2VDF5eD5kKX0kZjt8WU54OlN6PS58RVc4''@;'; put 'put ''d20zN3M1bFZYZDg7PkVraS5wREllblRuSFJsKn0/LEw/Y3cycVRMd3sodk1MNEUzVndvW0wyRXBQbmRlK3FSXlBbOGchWj89bjBTeC96WDYyYFkpU1YrdlVnRHI/a2JAMWxQXy9IS2QzSCNFcUYuJnpXO298UDlzIyxpalQhfExQSGImU15jaTw8X1hUPlV5O0p+Q2hZXnBqLGZ1O1ldSHZ8K2F+''@;'; put 'put ''WWZ4QiZndnApVy8kNHpTSzwyfFR0R0lVNXo7Rjh4LnEidzclbnRvI0owIX5YL3A4PSJ6I3pWa3o6QGEkYnVaVEdJQlA9WSlOK0YoOSkqdGcyUl5DPD4ifng0I0tYODMiUTVQKCMhTk9wTzdaWzx6VCs/XkJwe2ZXST8kWDIpayk3RUgrcjZzVHxxIlNwM01KXXJFbE1JaDJrPStgTk4zMX4+VVoy''@;'; put 'put ''RmU9VkE5M093emFwc3dwal4xOlN5WHV6XWBpRylNM19jT3woW082dyVTKXxNN31aSFhZOlJqOCV6JjVPYUZ5SHlzOmVubT95RV5uTmFMczh2RVZWN3wrTDBsRHxfT0dZZC47PHUzZ0Fdaj9IYmUvYFdFNUZWeWEmand3JFV5Om1vW1Bia0V6TjVDYUpkM1o/bX42Rls9fXBNRTVtJDhQaTB9UEJ5''@;'; put 'put ''djs6dk5wNFB+cFkqOD5fJl00dE01RXhHXj5DR146MW13KjI1Qnh1VHUsX2FgL2tkLmA3SjMxUEJpUVA3QWp+fnBaKDtpYW52YEB0ZjdGbmtoWFFfZjBnfFRiN1JEcyF6fSZUREtuWWlYWTpRe2YkY1EzUzVeJSJ9eEB5SWFzQjZNbGNwRjFSbU42ZFhtcDhbJiwmRn5zRiFsPXkwTlJkISVscmI7''@;'; put 'put ''d0V0dDdrM2wwcH5oQXsocWc+Y2FDRlZpZU91TXlvI3RAdUY4WXI2aXk1NTNUZyl0bzArV19LOFZaSyFsTHAiMH4/SiYqaGZLYjlleFpUbWA/VUBiWmtMK3Ircjo1L1ZQeGJvZ2ZlQDooW1RIaHJ4LjZKYX1adVtiNiR2bDQvfDVCKzNbQHtWTHBMTzZqZjlrNWJMZENYI1M9W0xYNlJ6KlB4OzNN''@;'; put 'put ''T1Y1MH1tKnwuYT88UjpUa1ZFSGY0R0E+PGc6c3tlSmxRdlJGKHBXXXhGVVU1Qylke2QuQWBVU0pTdTRaaE5XRGkkXXQhfT1WT3VYa1tpISpIJUNjRGNCNTQuTHU6QUBjJS5VcVZPez5zUmldSFJHbGdfPCU4KGRZXWFXZ349ZDRYI1RuPXVxYmp2TyI3OmJLSWFVfkQhaXYpUUQ0Uk5jWjMkLnso''@;'; put 'put ''Rzs/KFRIRjZkKVsqY2hHWXVQI2NuY0QxJiM6OUEyeDAmIWRfMGt+dFcuWGhKQXs2OGZCRURbYyZbUkdCSzp2cmJTJmMyKnlCRTc5c0Nfd1E6NT9SKGJqfGJAdGAkRSwkfkAvPkhia05+SER6alRzdXVLdTxZKmlqS2c7dWZ5SjwhQnxNbW5HMSQjMlM+KXsqKnRgQiJCfVl8cl16OD9EMmsqQWIh''@;'; put 'put ''LChDfjdhNC99TXRUKWJVNS9ZR3AyXzcibl1mR3tOS0hBaEcyUDc4PHdkKFJ6aERFWFc2P1Y6c29leTB9SWZHeFV2KmtCR2dKbGA+eWZhYHh9VEh8Qn1sKmtuMlMveE1TSU95RlA5VDZ9U3ROOyppTT4rOmtdbT8rZU9Leit4cFlTclU8MGdgX21Nb2VpcC5Hey5Hbzhjayp2LCF+JGRpLHp6MWs6''@;'; put 'put ''OWZGU2xiOX19Kyk/bXVnUG1jW3RbfE94bFJVfHFkVT99TmgpcnhNYGBoNjZxJT05LmgwbWVYZF94QSFvbltgbWlIIS5UUE5eZV1pMSh6dXI/S21YIUxWNWg8NltxZ2Z1XTJjQ0JEdSFlTWtAdi4kTUJGIU5VXmNdJm9eRVBdTlBpbyghYV9uTVY5M2NuM0BqZlskMWA+MXUuTGorQTNnPXB+dyM4''@;'; put 'put ''ZX5pPmw2TD1eZHJieW5jcSFdTik7YWYhVyhZRDp4KzE0OkdhXU84SmFMPWRsMFBuUVEpUFledFZKNmBXXnhwVE51SyhxNk8pRFJaNk42c1VsYStuPT9iRSs9RTVLWUN+USt5KiZ6cCljPjthZFt6OlcxUF5TNV93RmtrNVE7OmlaViQlRHVUbVU5WFRDYTlyOURNZWYqIlRfR14jPFBjJTpjUEF1''@;'; put 'put ''QzAlXl1SUFVbbW4yQUlVYShOIXpgKHk2e1cmLzQpakNCdVR4cV4oUmdZZW1hbEhVOWQlXjM2VFhDcENUJDYsZ2w0XXRlQzpYPV9wbXJ2cFtNdi5mRlNLSG1STm5xdU4sKmFNZm04cSNNQE0iKE9NJDVRTkhOKHlrdEAvRTtkTX1GN0d7WmlKdEB3U1MzP0o+KD9CaEIiSDtROSZZUEs7Um9iN1lU''@;'; put 'put ''ezUwYVU9JmExdj4hQl08UXw0b0klWGYiMF5Rek8wXyJzaHxTNEJLcnFNanU7KC84N2ZUTFpZeTt5VmpDVylKJUx1Q0pyLj1abz9tVzVWPjA1aC52IyVIez5kNGZNZ1lWRDRLflZDRXB6aHsiITZueF9mYD57TSNGN3I9Jks4UDs1YXwjUjRbfjpHb1hXIWAsZ3woUkV0OT95PTIzNkQ6UVZ0aHp3''@;'; put 'put ''T052ITFvNCFQPnBIOntibmsxLlBRLCU5V1I1dTRyeikkeDMufV90NUdgLjBNe2QxaTNSdHtVODx2XS9lVWJbYWFVeDo0bztpQyQuZERBQkdVKENpbWEzb1dDJE4+Kyk5Q3MjR054Zi47NXxvMUI/cSoyeykyYE5PVk1jeXQqIlB1WT0ySytRPy9UWV5TanJEX3dVRDMwSzxoSSp2NFdaeF5yXk1u''@;'; put 'put ''ck8jaUZlSGk3WXZNcm8/aHlGejUuTV5jV0Q6bTg4Q11HS1BLe09BYDRWTi5FeTRTUDwyWXNpOHh4UU9uUE9bU2dELGMvSVAlKVkhOSJ1eTE1Sjh8dDVdOmV5OTQjNHBFfXNTeDA1MUt6SEM5YiNCK1NxRS5He3ZibCFpX25Uc3RacGxmMGMzMClMXlRSPV5NY0gqVittJUFFckZVRkNxJjtRJixn''@;'; put 'put ''aEpjfmpeZUdvPTckbSJvZE0vR1EpVTppVntFLEtFJjNUWG84UmoiblNKdWdKKEZ8alpGLl0pUDZSP2x8XkhRWX5eJCRGRXYweCNGOEQsT3hxe0xsSmpMT3c2XnQldz5pb1FIc1hpdWU8I2IrTiNIbGduYEVQdUNFMTpoYGVQbGlNZkdzRHB8X1c7Tkk1LzdWSy45WUgwaWp6W1hDU1BTcUZlPVAx''@;'; put 'put ''Q2wrSzclIzxRJEpdVjtIa2A/fUtEOmY8e3wyP0clbztoUC5Ta2lCOlpWdkdQXzJjYGlqLlQ3VVZ2WWI7dU9XU241Oj5MVjx8fHI9VmtYcVJ9fiVwdnxTI287QnNnOT43fjhvezZ2JkNfMT50XjJ7RTVuRWlJOD01TVlaK24uRGJ9emklXkRyXXtCUHQ2TDBKI0J3KEllNkEucEVLS1FKdGFpTnVG''@;'; put 'put ''KXBMRzUud2NwXlBRPmphbXU2KjcoPVFKcWJpYlg4aC5JI292VmM/NmBQcE9sJD49dzldOFpEbS9XQUdicyVaMnszPXlyTmFkMGhqQ2x3Zyl0JF9LZEVvfWpVbW02Lk81QFF9QmwpI1QwfUhtVFNrRmxGZE8xJHIxZ2Q7QEI1TW5nOl8sKT9pOzZTJlMqeSNZWDswTlQ2WnYqeUY9fUZHNmlJbGNe''@;'; put 'put ''Xz11OWA0UzNPOEEmdVtwJmQzKVEoWSk2NX4yYkgqQTopSVduPiJQVFIjU1tBPUZ2PldBYHt3IVcibXpoZnxUeEdWfSY3bzdva21VL0lPWisrREs0cmJCT2doKHAvPWMoOV1xZEVjQSlwbWE2fHw8TUFmVU19cjJMRHBjQHRjMGlPNXxKM1tYc190OG09fCNiajxIUThFdSlQbCw4d2hUIXpCenJK''@;'; put 'put ''NFsqSk5aPnNhbF1DazpbeENlQ0BzfCE0d35mITUhMGwhW21VMVpfJkVCbmIsdUB5JTpYfUdMLyZFTHBVX2MyaWprLEFmUGNuN1BOeFBHSHhIbjlKWzwhLGtTQls7bSYrZE4melNRRWszV1JofiVVK25qNFBfRTgiYGAuR1ReOHMjeTFkJGBAPS9lVX1SMUpFa3s7W0VqPHt2Vy4vVSZtIlhdekRF''@;'; put 'put ''cy5AdSVOb2RQY21GbkhMKz1fU3p7SWwjMWVXWm0oOyF6Z2R6PGVKUSEzQz0mIW88VXk9b2duR0UlVTJVW3koMnFgc21uMDc3R0AucX1MKmZJUSopZTZUL19zYVZkVV9TXztuMTRhMC9Kdi9MQEJgSyl+dU4sOCVMcEZGPj5TMHF1Zk5qVl5WKXJqczM6UHozeV9BcEd5PF1vR1RHREdvcVByPzBF''@;'; put 'put ''KHJmRWI4cDtCWnJSTyQhOExmJmNDVXkuJjRudXJoeF9uYiRPPSxCR2ZuS0ghdEsjKjRGJSk2WEFxQ1Rycis2XkxWLzd7fWZGbFQ8K0dVZU9tW2pFMUFOVzI4ejoyc1lzZyI7TzNIOGMjfHN+a3NVS3defl5HR2t8eCo8MjAhSVVPV3RRS1lTeyYsKFNfKzl9SjdlLlclPm5pUn1yY1BMeFQvZWtU''@;'; put 'put ''OjR1XUM+cmNeLiRMci9BfDFrMnJXQEdaT1VDcU8+Y1FwcCtmSCwyYj1IdClbel9TaG4qcHR6S1pxckhucD1bRSF8KlFTMHFxbU5UVC5OfjUkYGlscTtAOTkwQDVnfUwybS5RYGtHZWJ+Q19dYVIiJmBsJj4vdXtFNWM6NTFGP3NAO1BiIk5sbGJtXTduSDowSkgofnIxLC5fMnAmYGwrJnk4YVFj''@;'; put 'put ''MXRIdEYhd3NrOzB3MD0qdms7MFs1KGglblpHU242QC9xQlF4ej5yTzV2em5JLnYmLEIiPS54S21iVjBAQE9ISjAwc3RzWGJ5W3pNWFdManNXbWk8ezBYeVdGakxhcGAiMDJ7WWpTJSV5WWZJZWIxZmcifS5bej5QW30uTjosalBkOyFhbVIpWmRVYm8oQSJvNV5+ZHcrISxQWTdlTj5gYX5VRm9S''@;'; put 'put ''dlNpUC97JDFaai8ycjo3IU0rJT5fVX4uK0wwPnpnPztpXyV2VEp9azo8U1ZGL2NvTnZLPWF7QXc6RVBNQH1AaGdhREJiSUNsVHUrWUN7MHJOYTlPcCZ5byJLVzBBR2FzPSk6MntKakttIURvOV80KjZAZD92L1k8YU00WyRoS0IxfUdmIiY+alQvd0ZfSzQ3LEwzPEhWbzMkZzIyd3sldEFsYWBB''@;'; put 'put ''OF5td3xCI3lPKWMrblQ2fkZhL244Qz5gcWtHYS8vPS5iSiQ6dzQrVFAhUChRKnpAITtMOS9zYFtpJlNmZ3ooVDV+Z102YC5qazIvSVtDNlRIOE8+KCVoPlFpODRxOCxRaF9JcGdxXzE6KlNmbTxdMTpUPjZvfXt6WFMxeV4yWlQiPS5pIVcpZlh5aCZlYSlYOjk3eD4jL2RkV14/dGpUUyEvaykh''@;'; put 'put ''YTl9L2tgMVFFWCt1W3xNSzpHS3xZbkpzKGAlbVNdazhfXTZRW0t+YW5+SldnNFVwPDV9czkkOl9efG5aUSwjcUgjZG9ob1c3fmdHKE9oLmlPckA7YmNTVGl2VkU9dFBSYUI/cnJIbEZzeFQoOCx9Vkcsbzg4c25gMzdsIUl+X0I/c2dyN1lseVVbeXBpSm8xVmVRcHUxKXgqdVd+T0hxdTVAcm15''@;'; put 'put ''dEYyU2tNdHUkNCxoN3k3TyI2ajR9QytwKyFJInlUSUNJRG4hfXZZay4yPjwkYFN2aFgmK3tEIyIvX3opLjl7SVN+bXJPSCU1PnsvfW5jOVdfR01KU3k3Q088XlpVcjRfPCkpR2UyXWkkZF9ISlIuOHZiVFNPOVJpM0M9JXYzc2M6YVVVdHwlRTd0YVdgY2pgfEMweW8xRSlDcVhRSiooSHcmOldk''@;'; put 'put ''P2Z8Z05kMzJ9JXRLQTJuJjxDdClhfSZTTj9zY2dMUWtjNz5ieWQqQTx9TVN3QHhhPV1GKlRZUHZqekdKbTMlLnlFUkdfOFN2STB1VFhmezBPbGV+RlFEdGQvVXk/JkhPTygoNCokVzA/S0dOVyRWPihtWCNNYkR3RWVuc2prLj1dWmlbfDwrRFFwNiM3UCs0OnlwVjp0Wkt3fFhIbE1gdnFTUUYv''@;'; put 'put ''TF4oTUZGTG9vfilsQVpgKjJ9RmVzWT0oYDlHWEJmXiJDKHl7eURuOl91bEkkR0lxNCUvSD9tczopeUVNP0BiWFFJPGtkIyhRaFo/JENicktpeDpzaiVFK2hmJG5mSShNSlg3eFd1dENJM2w4e3pUSWhSLkx6Zl5DIzJlYlQ6Z3d+Xk10Xmkwfj9+Nm5Nd2h7JD5+ZHZhPy92MzooYnpzeF4ycWV1''@;'; put 'put ''KHZIaiZnQm46ayUzWHhoTWZ7eiFvPEkrXk5WKUN9UmNrR1V3T2BpTS5WMGJSeiI4OmBPZE5QWlV5LkkjLFVocEZ9NF1RISk7ck1GWDFtJj0kMjgvLG9xIUNGLkZDR1kxITU6QHZ9fT11dDUlQ01yPENJNX1YSCwyQGJDalRpMDFMLkc5cCxvWEYkeDwqaiJjfSVpJkgreX1hVjkyK1V9cD5VYUdW''@;'; put 'put ''ZVkhaTswNjV1bUtpMCN3U31eQ042TikzXm9CU35VJCIqbyhrMz43cyltfFFDRXI8YnhvcFFhREpTfiRKXkpedHd3ZjRKeTd7WmxQfHw0JlgvRng3SSlBdjFHdWF8XlZleFRkdDBIVXpIdDhHd0lSUEhjKm0hKyF7dTBdJSV5VXohcmR8TiQ/dz9qODUwVThvLCVqTlJyJHxkfldoSUZaTUtLVEUu''@;'; put 'put ''RExrQj9zeH19S1RmZ2N3P3MxJiwvQzowQixVfVNmQU9XfF1FIlhRWUx8TT5jUUNyR25TYzlSc0V6UFVmSCM4US4mZXB2VCtIZnJNLjIqQEJYQENbd1Axb01gNilVSzgwPHI3JTJFVylFeFpfQChvSzAyVEYkI18vMlNiMm9hTzM7VW1KImBidyZ6ZzJOXXFkOGEjOTB0YXM6R14vfkI3OWw1b0Ix''@;'; put 'put ''MXB5eGohJHxde0QoXixgeCtpV2hVSDVRbnFZLmpYfikjZiRzOmM9RU80SmJhZlZrXks+XT50NFhJeSRRbHRdQGJWZUdEYjsjeE8+Uj9rIWZzKnkjcVkyO31IVTRPW1tSYnAoNGZ9USN9U0hPTCpyP20+Ui9tN3wjZmM1KzAiUlI9LGFSY2ovV0ZURWQkZTJ9UjpsazRKeTNrUSEjOytZflpQPnV1''@;'; put 'put ''ZH0jSzdeTEBkP0RFOi98QDdTanMqekVKOGVHZnwjVVRnKFs8T3A2I2EweGpbZGdERUdGPmJsVT5zIWxEcil9S3FgTXZeW3JOZmEsR2IiYiRCU2phe3hLd25AKGdnNiQ7LlFFOU9rOi5BZE4uRkBkIUNNc2ZlSGFfR2J8IVEpMT8sX0smM1QvR0VjaVt4KVp5Rk5mOkw7NCMmNT8yNShzQl5APWFL''@;'; put 'put ''LEVkOCUsVntJZmhxWyxKYTExPiosTytCOmh+PSMzOioxd293LEg1WjRfXkVpeUA+TFlHckVwK0A/ZlA8MyZsIzx3c0h6Kn5MckllSmMmeFI3eTF4YEshaGpRLC82e2I+X0VyaGJsJF9NT31uallqaH5MMlA+RX1FRVp9KX4iT1MveHJjeUAwZyoyMDZvYmFnXm4iPi94O0NSQm9vMWlRMFc6WDlE''@;'; put 'put ''Uj9BZFIsajx6KXp4bTkrKTUpXklkTUpTYyR2P3ZZe0tjK24qbiVUZm5dMHB4TWt4I11LUishRWpTWltSLzdhYk19JF9ic0VnPFQvLGlscmR7bzQ1YWFBOiw/LFllfHk/c1JvM2o+ZnpmJF9ITzFdbFZlViJLczg+cT5eRTxYVTYqbCRkJGA8eFhALzI2PnI5QVldUkp5fE44TjdUcTlxQGEuT1lV''@;'; put 'put ''LlhwZl4iWHw4KU0jcUZmdzdTMyI8QjZqQzAsQEBdIX0uY10vZDptKTRQYSNSZG9mUC9zVVFGS2BdV2MjJC9jPGxsfH5mMEJOVEMsSDBdOzkkL2grIUZUOixvOSVvMTFUR3dyPilaUH5XRkgxLzJTYko3TFo4Q00pWDdvYX5ySEVmLllyIkxgN2E5Qn5sImplTVZ6aHhMIU06Qmo4YSQ3YyxeM0k4''@;'; put 'put ''b1FgbD19fFh1IXRdekoveHZte1I2TXtoPW5WRWUmWjhQKVJYMlRSdiM0MjkxPHAzV3AsfXNzfn4he35TMSsuP3RpdiRVTSokLEl5MCZJWl57dFRsTl44WUhuKkQxc0U3NEpIN3pyd0xuPTxHP0thT0YkSytwOWZaMzRXZDwjdHRDb0cofEN5MFY/RUclNF1MK2E0dlc/dVhdQyslR0AlX3VTKntA''@;'; put 'put ''KG4pQnJRejpfUEg9UGovbXNZb3pTZ115ZnlGNCx6XmZ4dW1ZNkRfRUhhKWpfb1BeXyg0aF9RKE5FZUhOOnEsX35EZng3X2J3NV4vdnxRcnNnPW9FPjwmQUIrOXY8ZytRUzYuOXNTdjZfb2ZDelNmNzxdMzRmcjk4Lm55ViN1dTEsalhhTmZoTFVFRzhKWXh1dEdDdnhZOWMveDhtJTE0QGFpdkdI''@;'; put 'put ''JUo2JTJ5PGNRUX5tPU53XVdwdHJDOk9wbntXIy5DdDpAayFjVlV7M0QwNkgiRjI+aEtnRilwNDlXLm5MZn4kOS54YXFgfj9xY3NAJShYODxdO1V6dj83NjwpSGguRHJicHMqa31GNVsiPE1pTXo+SHpbVzsyNkpreHVifGAhSFBiaGorailCZE4ubmk5OXExPUVVJTxvYEppOkFtOk59RDF6Xlk5''@;'; put 'put ''RkE0UXZ0P0hERGUsT2ZZUi5KNGo+fi5kYCZVcVVWYWhDNWQ+IUpqVUA0JCZYcjJUUGJhJmRfU0ddREsyOUlmOTdIe215PnpFMiZwRVFWcFNHeG1TdHZ9QG83WzdSNVdRTEw3XXs5JGgjPGc+fWFlWGwlMjF+UyR+WTRdKlNNKlNlQ2FZJTdkSE98XV87RH0pJVoqPStOO3h6WV42LlArXkhaJmVT''@;'; put 'put ''LHBeTFYoI2smW0NJN3xvZiVQc1ZDKXAoc3AmOS5+NnNPQVV5Ryp+cDJvb1IqemhYLDFmZWs+eTdKMzJhMSkxOzMpcCpUSWlFImFNRSxRcmd7Z3R3P25LandAUlVFN0hPfE4kOnB+QF9OKlloKGgraXJ0KkUoczZASUohZnlUSD9DTzlkPn1BO2wsT3YpNzgyOi5SXXs2M21dM0RaRzd2ME9VPXRK''@;'; put 'put ''U0NzOTJITDsyYmMpUncmYVBLNG5Wc35vTkRmIj8rKlZke2RzOlQ2VmJQSDtFbDQhKzJgUG96NG1TQE04Mi84YlR6IUJ+ISQ9NUhdMVVFUGB6YiUzXk9+XzIwcTs0LHZuZURXZVo1ZkpQJkNMdmB3XTxyTWJUMj8jczczeV90X0RvKTFDYU1AOStidy5HLDNOcDZkIiQ3VyVwZ3UpbWZNYlRvbzJt''@;'; put 'put ''WmxJV1kzQEZ7O1BdViwyaD5XJX1YMDpeMG1AMTc7X1JxPUlhWn5PMVl3dls+ND1ALm0yLCttSDBielFbNiNARlUlI2Z1V1daVX5oZmFOMS58c3Fkay5sZHlTKkpfL308TUNubF8+cXhARm8zWy9rKG5sTFU+XSlCJXBhS1Z9NSJURiVNMH5BPXNqPl0wQiVwRThVfXg2THg5TTB+fjRjdUk7W3Nu''@;'; put 'put ''bEExU3AuTD5dWkMlcE9HODsvQ25eSEJiOV5FPDwhKjJVUVlue1J5VEYoWkhpRHAmaHk6RFJkb35zISN2RSlnJiwlcF84TH5nZF40ITosdU5GYk8wfl0jL08kO0w4VEZYNj9OTyV6Wz8lWThkNERaaCwiNmRkX3pnLHNrYlY3czxXeElFTnF1WG9aeFgzb1MlO1ByaGw2TiEkQ3BEXzYocmVyMjIv''@;'; put 'put ''LnxrL0o6O3t+NGVjdykxNz17djxLR2RebWY/PDNldDBecGc7bXEkQCZ+MjdXZGphanFwIWA7UCZaP3NUUFB9I2khMiZvLE8wQnZeRTg+ZnZpIW9eYzhnb2hRbEN5IzBmKlJLZG5je3s6cF5ffW9yLj4sPypmSjg0akleXy5aUlFEfVI9Xl9HQ05qbUR+OUU7aWU2UDoxamA+ZH1WMkBKZXJzNCgy''@;'; put 'put ''MltifHlUayY1X00wP3tfd0Yse1sqY2ZfPDdsVilARlFlRkBtczBOZUF1UTM+a3cyJUtfKnYleiM3JVY1XlJpfVUqdWAwXnwwPiRXNWNCTEg0PH5ZWUxMWDQ8fmJzXUN4cUI2dTpvWyZgZ28pUmhfW2cudjYvOk0+fjdjQWBPamRvUyplKHs3JGQ7eCpPWjRoYD98blZKYzVuMS41ckA6QDo2LH4x''@;'; put 'put ''eEBXMkNeNGQ9PDRTbCt5aUFTWSVbZWNlR08wPl5KdkwlVSIyKHMqS0A6P0Z+cCtqVHZER2pAIm95JShZMH5jKUZ0VklTSFVOJURzQ20mTE9HQiU9fEZ8Mms4LzRzUylPfkxvOjlxb1Z4LzN6eTc4KSxfbld8fC9RbD5KRyJxQTtNWk5mUTpTUC9rUGp3UGQ+bTh9bTJWYVd8UEsualciQS9RZyNk''@;'; put 'put ''YzosQWtCJkxRaklSJXMsUjZpU0t8Oi9QXTBIOTpgYUomLzBCLGooWFNsOn4lOTZFW0MyNjhCPiJhQmIxZ3VWcjJFXkhUd0UsMm57OXwhbDAqNDheUjhUcmpXbm04bnBEZldUR2lUWk1LRW1YajJnLixkbz5SeEVXbl44YmNWK2g6eVc5JFp7LGpqYmxCfTVQNitDU357dHhpVzVkemZLQTRKR08x''@;'; put 'put ''SEcpQWtyWVVrdTlxZFF+Rz1uUiE0ZmA1IUo4RiFZQ2wiPUcxWyEvWkFSbH4zTEMrVTxmSkZGMmFMMHdHbiVAWXFLUCx1VHVEPH1+aTNEOWpvIz0qTnlETV1bKTsrMlhXZSZNPkV9XUZicFMlWyZ2eXJSYUtdYjdfMF1FPlk9Wnk3Wk8jZnVOKXtsIzlRQjl8X0kzayphWldCU1pKRnE+KVtgaStD''@;'; put 'put ''SzM+InUydUEqRzVeJF5GN3s4WXojbHt3c2ZzbHk0PlAjbHsvM2lzPV1xMGxaYlB7O2B1WndTSTsld3sxcz9dcjwhMXE2TGtVNVY0UU4sQSR2QVs8Ny5nJFM3azNQIldudjp0d1BHdk1WM3k9Iyova29fWVFfYlgyXzhDZHxZMUdvPWUmcXlbQk12OTNLIy9BKlY2IlVwd0B+R105bVl6RGRERlM5''@;'; put 'put ''SFtbcDdWcltRVCFyUGVTZVVuLyJmOil6KWZMK1Z9c1JjOXE0RHl+KDdEWjljWylxeT84eUJwc1E8fDckWSFEXVt+RF1YSHtdaH5xKHZrSzk+Q1MqN3VPW084e1BldXk7WlRLUThBLzUjZmJEMH5WcEJraDpiNlpVXTVoRVk3KTQhNkQ0dWNxWTRuXiE8YEB8OyVkUXgqYVpAYH1MPjBqYEomTihT''@;'; put 'put ''SjMsKVpucHZ9Vz12UTc9WEZyIzlgQFVHLl1VJC47Vmd+L3tMSUw7QHU9JSo4O2VRTCJmS2xLc0BQZnFLbW5pIyojWV9yaCEvUEFYSiwkbUlgcjZMRXUqYSxQOikvbn4yOUIleVNbQzRMKkN+eHlTYW4oUi5ddiRWcDl7L3VUY3lrZCs7R3lCLDVXeEp3cm95LlUkUC4ieEx3RGcieCkrUi4yUzY+''@;'; put 'put ''eVM1OlZDaUJ1fm94OWRUMUs9ZzpDQl8mV0khe1AmU25Eflt6bF5Rbmg2XVRPZ3Q2UjJxXnZJRSZOKWt4JEswXk83VkNhJE5naTJoe0x+L3s0ZTZmbmYyR0lbbmZtZlZjN1lKeyxhSjNOKEV8YXx3PmhFO1lJeDc/KTFJOVNlPyh3W1V7XWBgZyZDKVN8Il9nZkxFTTJ9a092YV9nOl5YZ19TXzBJ''@;'; put 'put ''cm9SZFFqJWF1XXFZIyEsbTReXzYwJHV2MEVoY3VWckp2blE1Oj97a0swY0h5JDJFVi9LYiV5UzBaIjtHLFFRJkNxUl5iOFQxfmZdTzEkci46YlFTXmAhVXNqb3lTMjI/MDNHX3xhPHwsbVdYQ3gpTis5cmpiQlMmUDZCOGp9OytCaUU3WWw2Ml48RWh+R0lyaHU2bzNrTyV6KkBmXkhBaSl7bCYx''@;'; put 'put ''Vy4pfV1DLlFfKjFwNDZDOlV6ckJOUDN3OEFaVyw9aCl6ejk0bCllYyVXZUcjQl1OWn5DVEh9cmc0LnJnSX1Ke096Z1N+SkxSYEp7Z1UrcyQhO0opI1ZudiZUNFNwUX1KbSU5cE0+MVFRcFhbMDhJfUFHd2ptYFRgVH5Pe35XV3g7OUl9QVZSV3hdITo3RUk1ckw4VzsoYnlDZHxOQTg6ei57JCw3''@;'; put 'put ''X1d0VmI0MjEuN2hJYlYyejQ/KEdbQlNXWX0oPFRAcVJyMWFCd1s/SXJIJUV3WVFwXUs0RHFrdmBLZTBDfiVZVzUkTTxoUWhfNHRJMkJfXXszQWBTNjIqSXxpYX5hQEo7bX0zKGc5XUtkVyxMXUgvUXJ4QEcpa09yRUpCWkJzJlZDeV4jVn02T0c2O34hazxxPENUdE9fZ1JQbD1nLEp1LktneEYk''@;'; put 'put ''TlA8aDRgLkQ1KGNub1FWeW8yajN3Pm4mM1YlO0BQMCpoKG5mUmZMbDxmMjZvLEZselMsMypUbUl1X01KWyluZkg9Kyo5eDk7QGg8SmJVX1M1PmhzYi9reFNISjwoOyR7JGlEaCt8VW0lXSZqalh9Z2BvWWVCSCtzK202TW9TWnFMLnMsTGxdfGYyNUUpSnIyWjppckIlSHJKPXBzXXNeRXVfN0dO''@;'; put 'put ''L05PfT1QSCZnUlBkRmI5aUZYaXZhN1M9WTVVcSljdFM0XzchVDZiUW9+JW9yPkU7ZDBTNnw1OV81NF4kTSteSS9LJUZIbDdnPVlTLDBKKChZbW9sJnd+eF4xJSIuM200UzdKU1V5VT1AO1kiej5OSVUuVTFnc1N0PnU6cXVmMV1zTGFadyZUY188SiVQWjIoeG5hSVtVOnIhRGg5XVV+YlVtU3k8''@;'; put 'put ''OyhXaW9TdTt5PjhgTUZ+eFAxQHBSNnhva0x8NEQwQGJGNF83Z1I4czpnd0RkWF0+T2Nvd0ghNkwmIUE9a2l6cVlvO1E5dThbOVhIaVMpLyo5az1RfEBTTzt1KzQvSFQ5L0ZOdl07LHFeOkQ9YnU4LDM0RWh1O1o3N01uTENtb3lWLzV7O04kPFRXXmJwb0RbdDV9YiR+T0JJZVZ0MSxyLGlfQSNT''@;'; put 'put ''NW98O2drUSt8fDFrOSU4Tkc4UFAwImpQTmUlQlt6KWJaZ2gpVFcoZmdydTNpSC96PD9SKC4oIUY4a2hITW9LLDVePz93M2tSUCVbTXYxP2tud2VXMXR9cnVOPGRlWDhWcmxKT1AvaT42W0A9YU1oLkdlIXxAV3paSU9ZZWxYK2tFSTU5IyFDdUgqQCppOTpETl5fRnNfVkZQYVNuYX0wZlZIZmIq''@;'; put 'put ''QVFVeU0uNyxFYzNxQ05eX1MlYjU7KjdZMHJjSlBTKGxJenswWXc2WTEsaH5BUl8kMz8sQFMoJXV0Yz9MZHwpLyw/aDZmXn49Y19JfTt4Y193b2FyIzVvPVBWayRrfC5NN0olUVB3JmhreU1rcm5yQmBjY3k/emNZK219eE52dkpeLyE4WkJSSjcrLHNnTF9eM1libSJkNkldcS5Nbi4iUV5SR29J''@;'; put 'put ''SDN3VGt0SVlhPT93QiR+UVdpVCg0dzBQdmBBRVFuSWJNTyFyP0RJSE1zfHJxOEljTVc/SmZZRFh1akxhZXkmYCY0UT5RY3dbP0A/UFlQJEp8UHBuS0NycElnUCs8MyVGLCJSTmdDZVN3ZmhEKFU1NlpVNjdVOnJRMzBlZUBjWzs7R0loQGd9Ry8vdyFGQz5FT3ZrSHtZe2V9QzRrREw5IlFzKlAy''@;'; put 'put ''UDF4an0vJWomJUVXVyN8UC9ZMS9kSF4uTU5DcFdgZG9QXzsqMmBvdSE2VnFzKEI1Mm1gWk1hND5YdklQbmdeL3ZKVXZJUGp+PlZzeVZaO0pTZjBnOTtqczlkVDFzI3g3Uy8uIS8xLFBHNTJFd25LOls7Z2NLcShSSiw2YTV6bVJPUXN8Z19laE9ETlcvP0J0YSkyJFhWVXE3PF59eWZVdjU+am9e''@;'; put 'put ''ZENVaUtbelM0R3xvUHBtJUNEOjhGVlgvLHdEXTMoTXFKSFttPlcyfCkjTjl4fXI/MXo5QiVoNX03PWxeO0dRN1JleDIvPW5RNSZpZy99ZEQhPntMMmkxdTR4W31sbX4pfWtzYUl7Qz47Ylk0UiNGWjpCI19ncDtYajVoQTUqdWAkeWt1VlhPMH4uTUEpejBQd21mZXhCTSNXRF9OJm1ZKC59MS9G''@;'; put 'put ''cUoiRjYlbEVYfTMmTmE3b0BfdzhPZX1Hdkd3QmdPUWM5XjYsa1RIciUrRC47NlJtZjJFZywvfF1XPDtyRmo3OmQ3d2J4S1oyP0FdcCg1c1EqdyJOd0A4eyJHWG9+S1NPQyxYNiJieysiRy90UUAmRHBIPU87RiQ6KjFfQ09OJGs5MFFxRFA5aUI1NnBHXVt6XnEsam90U2tEWjMrYyR4ZjclMixs''@;'; put 'put ''NEdSXWM1RHReUD5ecyZLIUIxTDxvYDNCNkwrMnp+OVFQQSw3JD4+W0s5UHMkIVdVOD4lQlhJd2hzRHcyMiVqNERCLnYsZTBiW1JtbkM7fVdpQWpLS3J9M3BIbCkscFlqdCtFWV9ed158RHIjJTIzSU9rZi8zSSo1P19NZkpBIXdAS0g0YWR4JlJgVSFZfGpsSEZGQFs/Si89ZjRVNF8wL0U2WUlm''@;'; put 'put ''NldvKDhmXzBwRVZYfShLLkR1Sk9hI3F8K0lRKHpdRG1scXxyUjo9dmxUdmttKS9eTStvYzIpYWkvRjBgdkVsRjEhOlFpTH13Qk1ncSlsaz5TSzJzJCVAdUFMYWhwMjFucjlaalEsPltnTktpWykyWyR2YV9NNkEiOjo4cDorXmlpSVg6djVKPUdEcHtiNVheYWpOb1opMllXXzh+Wyg4L05fYGV3''@;'; put 'put ''cy9RW3JZTlc4bEJ3Q0pSZmh4IUh8QjsjOCI6Y1spcWdkNnhBWzkkTUt8MThoak4zKi8sdkkmSSVnRDBlSFRteVFnQ290fXpfezxBZ3FVXzd3VEpaVSxvakRWL0tEJnl3Q3NCeExANH17K1d9fkc2WTB4emdmM35ZVVNJP0xaYDFvNUBKeDlbaXc3JCg2NWQ3K0FrRStqeHxmKT5jXS5xdkxkZ2By''@;'; put 'put ''M21FdS5GND0lZk9RTHpTJTw4JChzVyt5eEIqZi46U3RsITprTGRTLFNIITNNL2c5RVREWHheU2lLQzcoQWc1NG51OHZmRzcoNCQzQ0pPX19TJCphKChUIypwUHpxSV0sY3VuRzcoPmoqaVApQ10jaDI5bCJmQVRrPGV3NXd8NElhRU92fCFzVyMxLixHMHdHaSlAUD5sbjc4WVpZT3A6NVEwZSFZ''@;'; put 'put ''ZXh6X1MuWUQ1Jmc+dktPaV1wamBmYXEvRiZHcUokWCpSbWFzbGM6Wj1GImxrIWhYdSl9TW4/JlhxYGcyPkdoRF89I2pSPT5OJCl9cGt1L3Y9YDlaTmRQUHYhM3pkTH43YS80fCgmST18NylHRiJvZT0vMkIuZ3o/TlRUW19XJG8hWHxpWTdYRE0kTXt8SEdwNHlyUyI5NXBhJE10VVlJYl0yeUV6''@;'; put 'put ''ZEdlVitMXVpNfUx8eH5kQkd+eUtXe0BWaV0sck9yPiY+T2x8RXwrTzZQWlZVY1RAdWQpYD5jSypYdzxLPGRic3tZPFdJWGRkQkU1cnNfMmxUIn1zR3NRfXkvO1cpamBkNmR6czhMK0x9RiJPcl08eT5ENktOaDZbPjJrJEt7cEV4Pkc3TDx9T0cxSnpEZE4scixqfnIrNzN8fSx2MHAlTUFhVlov''@;'; put 'put ''S3l8blZpcWN3MyViWlNlaiEhfEh2RW9AKWxhckxBTjxXWWxXMERkTix2QXswaUZNfTk1eGpaXjl8Kzc/fF88alVzVldASHxHYnFbLGdWcUV6VSllOj9QMERIdXkyNUMkNVcueSgjQyNyYStyVXh8aDF1VzA/YnxPbWZaX1NXNDB6Z0luK3dbIXJFTXQwRTg6R0dGKCM5eSs4VkRQcjFIMS5uYXUr''@;'; put 'put ''XXhKaEtUV0hoVS87aD9Le1B9XnwjOSN0Vm5wOkJMXSUxNUA6JFpXcCNNJUo6ZGkhJDEyb2BweltpdVtLMi8xWlhXU0o3PHJsZkVyOzYsYTAwN0g2WTBTJDl5ZiFaS1MiWXNFb3U6MHJfKTcuWnFjd1VAaUJ1PlRlQDNINW9WSkFzeUN6MHd+KilaWXMyR3laTz4iMzJLVldefDZMJXNTK1pxPDRd''@;'; put 'put ''ZVJCJnAoVzc5e003OTlIdH4weTVjYSZPXm9MVmNKMnQ1NW96ITN+bjdlKUd8Wkl+N05WVFpJYFE9K3JWQkl7a0d6Y1VValthel58dGQvZ3ZgZVEzbWYsNkByfmZIdDNRb0VwW2loeGlkX1NkJCFPO20xcmN3IXEkV1cod2RkeWtAZ0phKiJSSWArbSF2RER4Y2JUeSYkZHcwem87KGNaRi5SWGAz''@;'; put 'put ''Kn5+KFo8eS86V1BLeGJoUHA+KlF+Zjg3THhvJVFLKkpEVUI1M2sqbzNUQ0lEbmQ7PW1QUnUvLFZ4QCMvYzFnV0lsQj5GLz96WFluVm52YEt5fExwa0cjQFgmU0QwdHRWUFNKKkA/R0xaX15QUk0iMXRkRmVtN2pgezNyfEd8bDhYWiJPJERCTW5WSXJ4WDZNYH5zay9nVnFNZChtJW1QKWQvaygw''@;'; put 'put ''XjppIztRZD5PelZEbG55dDZTWEhaYFs7b2Z5dkNmUHs7fW4vVjVHI3A2PFo3TytJPWRmISJQJGF4IilJPVllJiJQJEM1QXdQJGQ0KyJQJDw3aXlQJCN5bHRQJF4yPiJQJDQzXSJQJCJ4RCpJPSlhcnRQJC8wIiJQJG42Q0M2PFJmSndQJCY1S0M2PDArL1ZESW8lP2czRUY9XVEweDpUaC54KlR0''@;'; put 'put ''c2taQm1FXjNGRSVML1ZMSUdkQS94Kk9IfS54KipyV1FwNSskT0dNUlhTQlgmancpcj1vOUFUKHMqYHszXSxRKHp5SVA9WTtWWSk/WXBkREAlKSxPRT45a35xXktvYWk5blV6am0oYjFzVCt5LD9GfENIZ2d3R1NxKTRpeTY1ZldHX1NBUTpKREh2TFZjSltLei40WCFmP1ldNy5WJjNsR2ZBa09u''@;'; put 'put ''LmtTcWNTKzMlJGsyeSZDOHM6KkhBaTc2W3pvQTF3bzw0LE8keUpORE5ibD0jdmMmP3hAdDghTjd8IUBuIS9gdTk9OXN0IUBBbDhgcnkzPjhge3RCbzRUa3h+RnF+Z2whcFV3L2psYGsvbCVoKG9DITAmSD1vZnlzRCEwIjN5ZGlzc2JfUyF8WTZfNEx0SyklTkpwKHtlRGJ8Y2hfXmJ0XXN7Z2w3''@;'; put 'put ''PkRPX182KEMqUXlPazA5Nzc1LGBnYDE3SmRDYXgyTD0wfj9kVDFyeWtdOjRbIkU+b2JJZyRPKWU2PFo3XkRpXnhRLkAjMCtkKyVlTC52LG4/NTxfQlomIVZkdyRhYUltLE88IUNRSio9MGlDXihJN0VFNTR2JTBFS3p4NSU0UjIxSipCN0k1WSI0aFRFV3NMRnJLPCZnTChXLiNSTnp3UD5uSTt3''@;'; put 'put ''MGsyPG8oY2Q4PltnQ3pnaTd3UjdlJFRXc3svVWJ8JHlXMj1DdFhjREM6b2Z6U0xEcFNkdEBadiR5VkUsaV06NjpAaD5sKGFSZ3NQSlEpYTBPdDVxRCIrNkJzQCRDQG1RY1ZRU3RHRV9YcktZZUtXNFlnVnVZeyRPQXtwcjBhUTdXamc/fXZEL3VARiFmM14hSH44ZmlweEhSdVVbJW5zXTpOM3Fb''@;'; put 'put ''IzBnUno1JTVIXSwzellpdkZDMV98QzpvVFdXcVlHTSZTKn0vQG01dCRxaVBScTlyPnA0W2smUDF1a21YYCQ3NltOenM6d1pIRVRRbGtXUmg7K2pxRHlvdXdWWlgpeX0rYn0jc2VdVlBoYzdNLFZEV3NXZ1BoY2F6YnJXcTRVYFhkKlZ1P3ZYRG9hPDJ6cV4pKXdVW1MmdCtIQTsmcjBlOyl+NCU4''@;'; put 'put ''QyFdR1FEc0Z9bS5RKG5HaXx+KDhCPmlSLkpAI1dZdEBObGFZbyg+QHopY01RSDp9TUhkdkkqPTcvYSVscjZnfENjbiV0XnNrTDM+aEI8fiZJND5sQmhQYHJ2WjIwfSpMX3NKMj9BYEc+flNjQEFgU05jeTYvOk1FfCl4MnwseUJWLzU0WW1aZnR5L2dCO3NRWTM+VytTTChaPDJ4cTg1W1I2b2RD''@;'; put 'put ''fWVINEdNTlk/fC5fP2MmP1liIXNlXThLQGdSdz8uN0B5ZmEqXnc+Jj56RnQyR21bUEB+KUY7R3xVbj4zR0FCdChbOWg3Sn4+On4zbU4qYURJSjoiRUg8eD5oJD03Uj9kdy9NMTV9cUZsTnx7Slt6LGh+akwzPih2ZyxuKlZhLlYmSiZDVSw7bkZfanlqQ2IjNHR1a2x2OV05b2Rudz9YQ3Eoc1RT''@;'; put 'put ''a3M6UlJYOG1UUDNMfiZ1LnhaelY3T3A0UFUxK3NtNzR8amVdfHhxODVqKksjOHkveTk+UltEK3xAd3pSKEY4MGNALlorU0xiTztKbyYqK3g9IX11YEpOMz5ddUs+TF8lOi59UlA5M3h8fmQuaiV+aF1vbG00W1JGNWpaUF0hNWolYmpJJCtSajRVMTAqanJOfiMjJklPMmRZZkAkMiYiJTV0O35f''@;'; put 'put ''fT9tOkVocXxKfF17WE0sNjt4PnJbYVI2bXYoKF1NLnZEOGBTMGUqfTs2cGUmM3cqZ0pRKlg6NT4xfnQlSD1hck8/PjRpRjtFcEswSXt3cXcuNndWTz03YHJpeTt9TzdKL19NbWcvUSQ1QyRaU3NqfDJeT35+UTxNZmxiRC9EO2IoIixWSmNPKH4oWWg0aXcmT11BI058NmVOLkpEN3M+ajorcTUy''@;'; put 'put ''S0F4ej1JYW0ydXtUPSNqSjIleDUqNEY9ZVAwYlQ8UWhrQ11qZXhvWTVrJDgjfWZEcFRlTXU0TiZdTGM3cUwvTGwlfVQsbDJyXlZ5NH1nK35pKmB8SEtaTXllIn0qL3NKYzltISQ9anlLLnRXPDRXMCpGNnY3d3k/IThFMDgrdz5SPjNnbnVXcUQ9dll3U0FXMCZtcmFoP3VBJE09MTFFb3ZieERk''@;'; put 'put ''QjdDezdjbiNIYXIyOHhoOzl4aDc5ODdSUD9vano8dj0vMDEjUiJCcXkhNUM/Y1U4JTosV1MkNUJsL3IjW2tlSEg2IV4maj8hbmYlUDtfdkIwRG8zPXswbS97LjRCXjEsX3dZVGhSQCZLQyhTcW1nVW40P35dd11COElGRFpTL0g5WjV3dDxIZlZeS2VeWE4wZjc7SU8sd20+WVVrSCNabGQ6Yjgx''@;'; put 'put ''NlQwMzYoOEFsMWNGNFYzWm1wfDgvUzg1Y3lvaHxvPDQkXlJFe2EkU3phPUROIiRSMEYvSUZ4YzdzdChSR1o9VDBRW1YzeCR3SDomfWZCcHxIJCMrV0NuIkhoPGNnNnVnRGoxKntSayErW3N3MTF7NkpuQHk8aFFCTldjeXd+WCZNJkY0eT8pK3J+LEBWNXtlP01vMmQ2UGFRJXtafStIKXN2PHRU''@;'; put 'put ''e1l6OW4zJk4xLjN1ZFVnWmFrISsqMi80dVQkWkx+ai4sRFRwKU9eSnt+a0gjcl4pXTduM0lSRyhOezF5TnwvJnwjQFNrcVMxXU11Zk8/WjJFKDVgODxMd3x2dn09JjlyUUJhPk0sIj9QXTE8NCVLbTxkYzFXTUcmXX5hWWtyYlc4VldWOTU/RF9ZP1tvNTk3Xy5laE03eV5oez5xekJhJjU1N1Ry''@;'; put 'put ''aXVCQlpkYCZ7ZGBlQ2hZLENNPE5pb2AvWUBFJH1sKjhANE5ONnowb34qRHc4aVA7b1NkLi9pTDU1VlcmX110bDBWYjVLSj1YIld6Wj1MUkc6X31LakJZNl5LTEdMRmUiemtVZkFub25xPUs6JkNPblFzJVJ8JEQjTXN4QXRvKSErcE00UjZAcChFbXZJTiU+QUBVNnVMfjp+TkE0Sm9LLzVVfThg''@;'; put 'put ''XXEoPiNhTXhpelQ2LHMoblp9OVEzdStyJDYrO1R5T0k7ZERAT1s/Q09pYklLTzs9LnZJO19TJnBBZFo/bCtDS1UjTkVMVlJdPSlvRl5Fa3FjX316KTR1fGUoLmJocSZlWHt5RHt9ZCswWzY1MHArZEFCTXxzd1NASypId3tXTVdXWUpgQHFuViI+fHVPWTQkdFdXTF0zK3JPSD9dVnVuP29gZCJu''@;'; put 'put ''P0U9VkJTO1cyJnJtN1s0TzBrV3c6cUxCb3F0XkxhNTFCbC5TPUg0OUhUWmE1W1IxPD85eSpBTnswbkxLan1GNVt9IUBXWmNNdlJ9PztudjpLXnlGMlZML0AjOWc9VyIzJkRsKTpOfDw+VXRBQ0cwbHhJIX40S2NkYEVAVn1NRlJ9PD5VdCN9SDJCLkFrQVNCIjg1c3VuL1tzc096VSk6YSU3fkFV''@;'; put 'put ''b1NpT20oUnQsQUp0NV1vUUhLXXlIW147P116Km1YbWd3eTI1V0AucXBQYTkqPmUxbntwY1RvZ25Lc1pMOyk8Q1tYZStHOioxMVBELnhYajlqNn4lJTspPEA2bTkwWlcmLm1UdVR8dGo+KnN4M3FraWw5ITU4IypSSDdsX2U3UGtOT2ViWiZqV2R+PyFIQTlmWkNFb1RYQVIwQGtpNHdeWUY8biRV''@;'; put 'put ''fDJ6O2ZGdnxPe1Q/OVhFKmdDTDJWW2ZIbntRWEhBWjB+KU8jPFJ4bVIjKmp2aUt0OnJqJCkjTzpFJTw+NSxgenJjd0hqRTFgdixOQTUrLmM0fnRjY01hXUNENkE4OTRdflZKO0tCLyRDen1uRjl8PFo/cVRfLCZqPHRDLGZqMjJ1dHY/YD85QVMjLzFsTE9fM3F1LFJxKCIsRk5yKGkjNGo+UjpS''@;'; put 'put ''VTFsIXZNfmdGc3cmImRXMml6e3BKR2xUIVlEeXZ3WktORyxwOk16Pz8iO2JAQC4yQG9KJVYlPlRtQDpyfC5aeloldWU4Zn55dUQ9R0VCUSRQRGF6KHZoRG8sJWp8OGdTWVVlcnEuYHNUXyg+X31kT3tiUUNtWnIyS3xpe3k2Z3JSX2VETShtTVJuVnBgKmpYM3N+Uz86P10/bklbMCtxTlswPEh1''@;'; put 'put ''KSJ1S14kbF0ua0NoRUY/WnJ0NHprMV5hPUB4bCtLeWpUfnpYWFpOKCNyQWpAcUU7dF4kMGEiJllpa2djV2h1UnJVUD8qJWo2bFN2WXJpZXt6fFpVTyZMcXVkL0JUTCYsVzNNMGJBV1k3QDgmU19GbWdvdDwmaEo8VVt5UzduTXoiPlNvLz1YaTtUfWVYPSFSdi4mWyY1Zn15MmFkYUM6fnRgeltS''@;'; put 'put ''Lys4Q08lcnMySCFIJmhScnAxMjM4PFJLTmxCMz8mUj1wRiZ+ZDs6ait3VDBXdkcsQD9LWVJUTzg7Z2EwYlJbPSZPOFZIO0hpaFhENk9sOyY6NlN1aTQjQjB5KiReYiNQWiN1MChZe0EyPGJZW05oO3YvPHd3bzM+TC4+Vkk/LDJoQCwyVCZ5dXoyJl5WcVNrUihQN21oJiZbJWRPXjwmPlslM3tn''@;'; put 'put ''KHhzamVlJWNAVDh2P1YxJWwsOlMmT2l5dDNfVTpBdiI4NiwxNiU3KGgjP2IlYixFbSpWdWdRMFUhKTlCbzVGSyZaYVl+NW57fj9LJEFvVTNaL0BPYnhQLDBHQkFBNnlbNytEVVJsRnlyaHdieShfYHFxYmg2fF1UbC4jYUsobFdPbUt+UE9uaWBUSWZIdW5QaEtKYEtvfnp9bVRJRTZ1UXg4Ojl4''@;'; put 'put ''JElaRHMxXk1oP2goM1EsNE9KeywwTzU0JWgrUnllfl5HbFlRN2E5eklMbm89NmcybzlYSGxgMCoiUls/bThzYyZTZVFxYWh5LHV0TDRScUsvdVcuR0o1JiFYJWkjO2dQd2lKcH1mKUU0PVJjNixDKDZeYCM0SUZCZExQSFU/JkA6cldfWDZKMH5BTj9LNHhdPmtuSXgiX3RsUEwrciUuS04vNllA''@;'; put 'put ''SFJmdCtnc3osLFlgSFkpQCMxSHpKNTl5O0FtU104SU1xPnRtUVYiQ2tmPiosRylUSXF7LFJxKHRFbCxLaWs7a3JhSmgvaEU3ezU+TSY1ZzAjZnhoNFduM1h1PiNJcSo/U2M7MjRpZ11DNExddTFfRUNMaV9oVlFxdSlFImU7dltAWEVpeFF6aDRtMUN8JSNVdW1VXU5wUnY8I3hyJio9PXtqSGxG''@;'; put 'put ''fig1KWtpMkBrX2N+eShqQSFBRHxjYEZdMzhZXyw5QElgPztWLEUrZCNrP3tYXTpqcHRXOUxSK3ArR3ckTXY7bl0zM3A3UHVDL1g+RmVGQVhCaVVyejZSPWdCM25PKGJgdDpONVorOWlANzJEZz9Sdks4JFEjRF4zUzNtdkpXKDs1QGU0e0pnbzRmLERDWShGLjBlbSRUUyYlYTEuTHJbQlBxLkQ3''@;'; put 'put ''fjo+dC9HUX5GXylxUC8kekxmdC5aLkAwaGgmR0ZIO25nNk1VOjxiMjkrRHMpTj03ZjNeQj88ZTxvdDJraGw+MTFuLmcobGNXd2d3KHxjODZwTXpOakQ1RU8xLDdrSi9oSCUzMWtxV2FzclNRQDFrJGs0O0JeT083NHc4dTlJN28sLF9mdVMpbC9fc3VpaEE+a01+OmpYdVldR0dWO21ZRSk7JHBT''@;'; put 'put ''ZX1CLnJTL1pdQzRMPH1ka1BKYGV3NXJVJCp8Rl14WylVKGVhM35FOTxKYzZJUnI+OEtbJnpFU29dMyNdNipNYipHTnxPJSNZN3FDaEFuTmFvSjgqTUZJd142WVJySik7IWlZP1MuNl5CXzJyS3tEITVSQmQjeGs0bDIhWFA3Lzs3eHI5dU80dyo7NTg9NHYka1RXSGgqMHIsM1JIIz4qTU5TJTxH''@;'; put 'put ''SCkmQj4rbHtRd3V2bX1kVn0vUF0ucE1kNlVVJGJRJF18an1kOkVVKnFWJVo4Um0+OSwySlFtJVlWXz9wLHFjJn1WXiR6fGZXOEZ3dm5+cy5Kb2AmczlxbUw6OkB4KXZqb006UlslPj0uY2F7b016b0tvI1JwKHNgRDM/W0x6cjsyOn1TaSVnVX04KnxXfUJRR1Y7PnVKaFcxd3lzKVJ4cyxiQUQx''@;'; put 'put ''dkluQjVZYHA/b2R4LHR2ekRkYVk/Z285eCx3KkdbP25XcFplMTdlLjM+MjQ2RnM+N1lFLDtpYT4uPHFBa3QqVyNyR1UlPF8oJnR9Q0AoUmtAaStCN0RyelVkPkdGMmgvTm8+XX14VmJ9JUIuNGpsWHskezV7T297VXIwcnB5XThEMkI+ZG97Zk1bciVPLnZ5RlVtSHNTe3wyVGlAQjtxIm9CSUok''@;'; put 'put ''KCRRMSo+dS9POygrQi5ZWjR7eER9c0JgRk5YWlVrV0pSRnVYXml3P0NsZXZYSkNYfTc+Tnk1TDBLNX16UiQxWF9AJi5GJUI3fEtQQFszKlo9Qi4vRnNpNC81YU0mcXE7a2p+M1A7bCEpUlFQKT4kXiJPNHlFYikmfjxgfWNqSHZnZEY/fTwyWl91IlNRW3FGRGwoaV9OaXJlYEd9MHZsYUQvXkZB''@;'; put 'put ''MVhPKHc2dXVNfnBZW3kzNilNY3FoJGhDfVc2KDd5NCZRe3ZgWEJrP1M4IW58WHJ9VXY6KUw7NHZbPXgsOm8kNGxnYlpFe1VORmpnRSlyW2tzfnJ8WG9nYD5tVDRBRzJZbC5rcy8rKiRjVHd3PzBddHxbZ1dFOitkVy5Me0Q5eG8yO0dYXUd9e2RFeU1yW2IwVk8mUkokTipQUHZsRTdNRnJBaTRC''@;'; put 'put ''RTBDJks8UHIkfHR4OStEJXpHMHdJLD4wcmI+YyglfHN9bmFjQkRGV3MiMVc/Ik55XlNfT0k7Z15CR19ZXz8pIkZDNWxgQGxpcTM/eGRsYGIjZjR1XkFtVGNsVV5FfF9NcDV+eXkiTmFzIW5TK2FdU3xUWGslW2BDRGpBc0tWWFIxbnhucGNdRmVdTCt5JFY0MVc0RjduVVo/KEA/c1Q9fX5YfkRl''@;'; put 'put ''LHc8TiImZFcvJmRtSERNP3FibW1zQ2IpPzJCQnhkJkE4fFBaYl97M1dkeDl6RTlGNlt4VDFdfV0xSDwxZkRnYlQzR0w+P0daSn46YHlvcihYQkduYlJVcyZ0XjsiLCJtIkVtV0dXKWVKdmBXRkVDdi9tbURfOGo9QEkuSWNDNzhVL1pIWT8lM2B+WipxZzUlS19sdm9CIy5IPyxtej1lIl17U2xg''@;'; put 'put ''KkJFZCQkLishJWR6LDs0WiVYcE1NTmVkfmNIZEE8fXYoeyQhdDdJeW89Tig1QkwkcUheQTxdYCxiclV8RilacXIlTktBS1pyQ1JMS0NIcENbZ0JHMGprRSFqVH1RbV9INF4lYn55clhdaSlHR1gpJktQRz83RSlSN1Q7IWUmKURTNF54VUtXVltZVEpRMGtmSWl6bFpSMXg6QHt2TG89dChKJVhw''@;'; put 'put ''dyhEa3lkUj0+WV9TVW9uV1hYP31jVGRGJlBbSkNdOXZPS1pbem9ldTp2NEkjKjVWNlpBRCtvJm5rKmsobnNaSD98QDZlfCZZfWBpeWhRO3VINmk7bntzeTlDWXxDUXF4JHxvPHJ5VCQ5TlBIeSk1OFBbRDJjLDUjIyllJTVmNz9WJHUhV2k0X1NRN3cmRUVocnBTdi5McnIyVSQheWEwSHNzbGNv''@;'; put 'put ''WTdeUShJei5HPXAjJC5WPDJTbFVQSFpOcDspfTgxdzVOIiZBVjxvO1RmXl9HeH5Ca29hdjdkIyJgIyM7YV9HKVFEKTF9YnFkd0RaO01gY0ROOyxpRzgjbi9ha3BvRzAlOmlFa05ldkt6bWdTPTkucyVYemMkYDFrU0pLN0o4Mkx7Uj0jditbUz1gTnA9X1c1VHE6QShIPiRrTUlzPj9FN3xsPihv''@;'; put 'put ''QlRgQn10KiRkZlBdSTtFMDc8VyZBejB9VCRrRSlKOTE2Jjs2TnVAeHI9Ylc3Uy5gMG0ySFBaV0B8ejN7Sjh+enI2YSU7cXd+dVs3VExZLktIOWUoMUc5WUE0PHtRT1p+WF90c1cmIUxmM3Y5Y2Modk52I0UjZV4uZlQpYElLcEhONWFmRXpiT2pjYH5MTnQjZlFCMmdaVnM0KVswbD1sRlB2PXdI''@;'; put 'put ''fkV5PCRhXn4wMSlHJi9ye3RRQV97S3BrZ2FhMTRdTE8mXX0lUl4hUlh4U2x4LmdLLDUpUmFgNE41UzR9O10+V3pKWVs7ZHVfYHtJTy5lQHosdDVsYGk7KncsQk8/ZD9iazZUKzI7aUxdTUo4bGh8M3lUQ2RWZ1k2QlNrKCVZdV58I1F9M0cvezxhcjVweDhUc0QvZWdZVz8xbS5sb29hUjU2WkUm''@;'; put 'put ''RWN9P042QWt0KGx5ckt8KmJ4XUA+aV98TC9UZHhvQUVkbXRsOmRAWVZMOXBZc0w8eXJaSFZYbEZddy95JmR3UGt7Tnx6SCNyWEBIK1B8KHdYIzdlN1M6LzlRZz02Zk97MX1mJjJqTkVFK3cyfkFHaEs5TiMiLCIhPXs7RCtLdzI3ZVRTNS4sd0NoVEdHbVVyKDtxWyRYeGBKaX1SLDJbQDpzIS9n''@;'; put 'put ''NVF4KzI+fnBoO3NwOyJ6KD86ck48Z1p4ezZhZEJLYSE7YnNPVS8zSWBWbnYzd2FNPzpHUGcpWysqL0RAZHwpVldGXTIwemglOyk8bHpzdX1fXVJFMF07JWNJPlcmIl5kSjNpOnxRLilJRHtDWy9OQmt0VGJ3TypEa1ojMG5bO0QrREJwOn4lYUM6I3ZPUHxhaU5SaDNXXyUiIypPLF85aT9nb01u''@;'; put 'put ''amleMTI+bzlKbVFsV19BbUZ5aDxTW1V8WlZLbCIuTlhoaUNUJClIPXYvczFbcE8+TSRVWTQjV0QqfWZ9YVNXNDgqeFVnV0FuPyF4O0JfO34xa1FrX1hEUWFRNHpiIX15Y2pMTF82TWA0XUhzTDY7YF1kOW1raVhNU2suU1p4XU90TF8kfiU1ITtlR1suNjl3I3FXNmwkOV5sak8sPEd8L3lAWjZT''@;'; put 'put ''LjFpdFM5emdmJCtOYDUmMzh4VVRufDZTUGpvbT4oJXlFdTEqaFVHaTc1N1QsTHg/ZzozcWZPZ1NURHNybyYhWm1YVnIlXSFbWzdyJE10azpVKmlCSyxAJCNiOzk4NGY4ZGxzNkdMcEVAOUtrYUMma3xIcEJTMFc7PUokVTRrTEVHdyxPXn0jJEJfaFVtUSNgcjh7c1JLRFoqNWZeOSthIl1uP1Qz''@;'; put 'put ''MTM6LmYzc0UpVDZGa2FTMStCVEEodl1PIi4kITFnPmBCdzxHJGtxZCw9RikvYEtKalNBQXkxSUxIfEM2aXJYXyIzSXxITk0+NlN6X09MYjtfP0ltPCpBYn5WLk5eK2ZaNl4oIStQbElSVjNRIShNWnlkayY/QlcmaSRYZi53WEthdzZney9NVTB2QVNDQUFBaHR9YkFBR0giUWR0YlgsdWhHJSFD''@;'; put 'put ''ZSFBRkE6VDtPLlt9b0B6KlppRTRMPWlnRXRCQUFBQVhMJEEqaHQwWz46eSJXXnxKNStdKElJczpALiw8SXxXU3praV4+JipsNVpaXzg6aF1Wckl2fUJxfXNQMDxNezNIcmhNZmt4aGJLSlk0dTpSbXk8S019aWtucTBbQCN7Xy4wcnlOLiNUbG5uK2M3PE1vSk0xcGc2X0k/PHZIXnwmPVI3YFtz''@;'; put 'put ''OGB2czJ+QXBrWFslQ3deXVIqLjAxbUVRcTskOipOb3E0Yz5YZnJOPTdGREx7UTMycGc2dnwufWttVC9xNTAjZ1dKbm1bfFcoJGguZSVgPEt2dHZRb3FVaExyekJFRUk3Ik12YWNKXyFmOysyTGwraX4kTSx1cS4/JHFdbkVbYkVWPGxjIjwyRUQ+IjZrTm94ZSM+P2hAS0lscWp0Rzw4by9JVCJi''@;'; put 'put ''OTtWNipFITFfQlh9dnJVUz0pbHUxTztyJCRkYUx+VjhLLmxBYSNRQX5CPE46UkE2STcpNC9BcEh7amxES0ZMRGd8USFxekRUfS8uZllmM0AhTUB7KSVjP3E7eHReTz0ueXxmcGFLPUNgfEd8fGhXQDJNXT0xZXJXU1dqTVpPa35Db2E/dCk8bmtQRitCUV1qQn1hdXNgeEU4cERGNE1DNz9EMXUu''@;'; put 'put ''I31MYHQ4PGRJPGg3TTBzY0M4XzpaKTt3N3F4OEFKTnFsME1yaGZMI0tPJVZCNEZIUyFJUiR4IWE9KzEyW0Bzfj54VlQjWVIvfWJiRExKcVZlJFh5PywiQSslfDpAVDdJYnVUK3ghL3F+bF89WCtrKFhXcEtpSj1rTG5NX3ZOWDI1SWleX2lIPmJORUM0dTA9WEU7YW5iQGZ0TGo+KGB7W1YwI1k5''@;'; put 'put ''a2clLCNmQENCbj5xMjUmIzwqTG1XSCMydlNKSURRRkRlRn1dUzYveFVgMDw/MShZPXp4eix+TyJ9MDRVakhNXnx6XyluNHshMHZ6VzpdXzkjfnlpckJKXjRbOGlqcyYuMntZNFQsbz1oMy96fDN7fnJUWnVZc0pHWUYsPXtTV3JoSGQySTAiLm17Pn1vX0tCTTM3UzUsMj1INi9VM3IjVDghSz50''@;'; put 'put ''YF9NTXxWXS5WJUl6SG4ya25CZFF4JV9pNEtIU2RBJjVlK051L19tOSFpSyo4Z2J+cE1PciNyQEUpSmkpcXF9TmZpfChOVkhxSHFgLmFjbVE0WVFhQE9xLl5FVmN5d14oJDJ8WHxscmlwVjx0Q0VKVDpaPnhkdTlfRiN6WCU2KDl6RyQkO0ckdmYkQXhVS01rej0jWGowYyt2LCx1XU04a0hpZVY1''@;'; put 'put ''Y25kaiZRVy97OnttfiRIfitCcndXNDFMbFg8SmhBcmh2fiUhJmJIYFVyWyZLd2gvNCNVdWVjcj1mJHhGMyNmdCE/fH1ZI1NsR0IwRClGY0QoSk9DPzlbKyx6Qkk0dXZFdjlEUF9rUDUvOGNTT0g/MElpTytuMGxXdU4uN1QsbGNVMH1IIyY4RT9tPX5dOkYqT2h3PUd8ZnZIPjU7cVtodDRNY3Ff''@;'; put 'put ''WkJeR3E5akxCRFZxajoqcHk2UDZGVCNXKGlNX1sqbmNqcVRaWks3ayJmZSFIbDA7b2R+KHFkJSslUmk1QiNWWGxbKHcmJnBPZ04pLml9VkBSPEk2NlBwTEpLbDV0V2MsR3V2WHBMPlYjSjIpK313YztucVBnVFAhYHhUUSwjPlhQdCppbE0udy9qcHxnI1s4NEZQQCh+NFgxSGByfS50KHMuaiE1''@;'; put 'put ''eFYzIVRIMEgkYDheaThtejA1eHNEXV9WMm0xd1RuJTxxZmhpSkBNKUIxIkJyPHIuTjRJRXwha1R1cllxR2YyNG9MaVUvamYwSUowJG5mKSwqO2k8ajtITztIRVZpbzQ5UmI9KyUwPEc0eEB6dCheVlhafllLRHxsOjJyLFsjQy9bYVgoSC9fK19EbElaNiRBNipFdiZAR3h0a3FtMFVEVyZKYzx7''@;'; put 'put ''RSReN3JGJDBnPC4vQyQjOGNGL2AobHRjIThlIU5PJXRUeSlHI2RsXlR7YyE7OjUuckRGW0VgNyshaHFGampfLHNbM1tdV0ljTUkre3lxTWc6SzN2UEpebFVrK281V3ovMFdWPnB9aWIjZ0pYNUgoI1NhJkNDJjtKeT5MKFBYeEliK317b1VFbDt+P2ErVnpXPmRFNHZObmFaWmNpaGxWSlQqLFM2''@;'; put 'put ''cjszcTo4REtle2Z1ZyhTUklIfS9NcndXM1ozU0dJOlRYOVs4Nk0ocTFgQkssT2Q7SX0yWWo5PCFjQkhyOSteMGUyLjAwYzFLS2cpbVE1QjBiQD84e15DKCtsL1hEdWZ7KFAzSjomRnh8K108aSNDQF88Ki9vIjAvX1hxX2NgdyhHYWVrVF5PLGJAVFtlLllAU0RFNTFpdE0oTCFoLkhiQCQxNl5p''@;'; put 'put ''dXc+K3R3e2J8TzJwV2U0R2Qyb3dDaEplfX00ZUQ5JDRvT2pzdjBOay8jVztLc2ptPz5FRGNYQ1lfZEYzJGU2azI1MjJZSHR9VDpUNUV4KTgxaUA2W0YkJVRQIV4/VDU1bSNfRURvWjhiNW09Kj1NNVFtX3B3MjQpOH1EKUZkbnd3ekElckAxNGFdZyNhW2p6VjsoYGFGVCFjNkc1enRlfSQseXgm''@;'; put 'put ''Q01HfDcvcFJAZSJMT3w7LHx6N35VZzYpTmZRPjpKQ0Q2PkZKWSMzYSN3b2V4Z09MVGV5TWAjODhAU3B9dV9RR2c5bkp0PTdoZyhNTXduYmgje3R6SH1jKTJdRG9vX0JCeHowfiNhVXw2fCwzZHRTMm5TdklebzJxd35oeHNKSzQrJEthKldYJlNYd2JxJllfRnN3WWlOXVRnPGdJNXd9LHs3aEZ2''@;'; put 'put ''KmRINkp+NyV3V3k2eV9Fby9zRXgyKC9OP3F6ZT5uN3BeakZwPyFYJn0kZzR6YGR0MWpXWkYwOSk5ZV42WipVRDJUezp0NDJ8IUBuLC5MYlleWDAlbE9wSl0pKl5gIkZVWjp+PTh7d3FFYFt9MGB8TDVwZEQ7R0ZsTVNbOW9LcyF5dDRUe3hLWyxNTD0rW31CZ1Y0XnRlaGdrdGE1fj9+anNgYF05''@;'; put 'put ''ZU1STHlUSTZMRkZzOjBEJFJjNE4kRD9PX1RkTyhfUVNIOixLd1RoLyJyem1CZz03TnhBZGBSdkEvRXpqaUtfM2JTY0x1YzdaaG5xOVFnVjlwdTdiWXBeUjRKdTI0cSkvekBXRjt6UUlZc3dpWHRJamRuQFU5fngyb2NGQzY1bzhQcDJVP3FCOnRdKXN5RiZNV1lJST4mMDBzeHBxaiZiLiQ1Vjcu''@;'; put 'put ''Zn4sOj8kPzpNLzFgJTl5PUl3cUNWcDhhUSJzWkZSemhkX3dXPCpQKnpDJDQyWU1saW5RenM5cVIhM1M9ejhUVFFfY2M7SzZvKyN5T1UzeCE3Xn5VKjhmVy47Tng2U0Fee01vdjs5RS5YRXZmQUNUSm5Acnc0d0tkMDc3QzJ8ZCMwOyRBb0ohOmpuaihgdGckJjU1VnRyPzdqeVdFKyUrPUNgfDZP''@;'; put 'put ''RTU6Z3BOMCFpfiYhNHtnem1LPDNPTlhRRV5nQSwsWCZtQF4qOTVdJWk8ZlhjUHwrMH5ROEUpVWVGSVc2eHljU0xlTn4maWt8ZzhiYTZ7MCl6aTY5b35jVHZkUWQpI2NzNUUob2pTZT1+O31ZJEprUEZPenkzdk9TO2trNiMrVS5ZOjgzaDVvUU1zSl1Lakl4TlVeS2V4MGJ4WU0kZVZtKUlifWtU''@;'; put 'put ''OztTS3Q7aC9aNVdjX3MjciVRXyR5Q0FeZnZaQGoqc21kTVlnWilXZiJNck9iX2BdOjNpN30/WEp6MUxicTV7dWtqRWMrWj5QdDQiIUFKQ0ZuJUZDLC44XyxlamAjYl1DX3goaTltQyY8S19IQmU7ZislSlp8bHBoWXNoe1FBZmRZdVtaY1lUajQkckgifjppXmgmXUVMWz0yb3U0Rz1Xb21vVCh9''@;'; put 'put ''ejpvSG4qOG9VeiVdaz5CaS9PVm8sI198Mk4vKlBVRVkoeTw5RiUrLHNzZV16XTc8fEZCcltbKCRhU2F8LjRDRC45PSRkeypTNjE1ImFEUmwwYkYzd3w7MzhtU2oqZjojdyU0RWpnWjcoV0VCKD1QZjFLJXBLVn0qUltTM2QhYnZOKEAuKFRqU2BdKX5lITUxeVB2fEhXOk4oMUlCRGRMcndyPUly''@;'; put 'put ''cSFWdkxOJT5hSEgrQ2dwWEVdLzpMRFJKNjhjLzFrRF4qYlpOQ3ZAKTE4Mzh5TzU4PzUkIlNNNDBCZi9ndE1hcW8lJER2Z2xEKGFgZHVrP3JPfU5afCtLUDtkbXg7MGdkdXBgb3hiOjRFSUhyYyZMP31JPX4qPGZmQi47X0t9bH1VdVA9amFxaW1hODxFeXRxXSEoMVdScWUkb3A/ZHo4Lk02aVAw''@;'; put 'put ''alc5ZH4mJnZgbldWWW5IUm1WYHRXRyldQWs/M2kqNHojcjtUb2hLYlN1Q1RUYV5uYjBGZCRNVll6NWc5ISx0Wyl7ZFsjZXU7TzkoQ2sxYlJ0WmNELi95Q05iRmAsYWpFPFFZWG0pMl9UQEVaP2hLKjt6SXR8ZW5qcmptakRASSYsLmhQXX5SMGBzL2NWLFRmdT0kWzBJXWE1TTNmWVY+MVAiWngi''@;'; put 'put ''IXFaLyxBOSpdKyh9Ylg2WzFZMTQ4PmlWTUwkYU0zbyVoKytfRCI+OmhHfT1vVUBle2RgJXUkWHB6Qk42PV1mRX5BcV1te2FSQC5lb3s0YGd+KXRNPzhtNFRNWDBHa2AjRXl3PGl6TyZfOlBDQHluXlF6c0pSVGNUX1ZYQllHIk45KXNvUUN0P2d4QlJ7dzYlUypgP1EmVGRRd1ZqQXdgcWRnUng8''@;'; put 'put ''JHhAbmpzJXNaIlBtVnBsfChONl5EIkgyMzhCek8yRD4lKUVtPmRpLyFOW2FbXXF6OWddYixGanM+YTpAS0Ewfl9UbTJAW0V0N35dWCMmK3A+InZEc1djflJ0ME14flA+O0hDY1hvbU53c3Z+Ik9uMC97cVMxRFRnPTgyO14rbWg/bWRjazd0VUc9dVEyKj1qQHZDciR6fikjZFc/XWtZTz5PS0Fb''@;'; put 'put ''dWpfZU9QNWJvQFR0Yy90Q0Jhe182dys2XlR5JlpwamEvSEA+YVVLKjlDOWJWT11FWWl2bHFNMHI3WiJ9RFB1Mn42dE4+bmBCUGN+aChERUppZkE1dl9wcDVGT29IOy9IeHZ9RDlJXnghVjhScywuKEw/QUs/VX0mK2VScC8zeF5Bb3lEPVteZ3x6R35GQFYjJncwJCs7QU4vTypWREpwOVptX2oz''@;'; put 'put ''Y1B3TEomWUB2NzYsRW86P0suMmdlWH4wSmY7LGlacCUqO1ZDRVc5SyYiOVpVU0o/VTorbyFOSU9wd1FNMjlVQkIrRDJNakhUaW1NK31zcDwoKDhXazRXYGhdPmdBI2R+WU9ubHFVMEhoZXRrYTtPSCxXX3ZCZGw/WHZ9UXpNbEAuPFFGWX1Oc2Y7K3VbTXBEPDpmcVZxR1FCeV8qZ1ZXfUwye3Q6''@;'; put 'put ''SVsucUcpQCo7c1F7Ikt1VTUrQ1Zva21yOFtWR29uUnFUJTdiaCp9ZFksbXE3T0U4Nk4uITRkSlhSR1JsdHd0ZDMvNVtNcjEyXkVwM1U3X2VaKDlXUnp7I0k4aX07NmNEKnJeVj9Ib2dUNjVtJV5ZbT5POD1SYC5BcUJlQGxSXiN+YTojaDIzJDNyZHg0V3xCUFh3IX43SFtWVi5tfEltTi9qWXh0''@;'; put 'put ''aU9qfiJKNkcqZCxBVX1QYDBTYTVZOCs4ZHJfQC9nUHZ0Vkp6dmFGT0JYay54fVNBV04/PyRVS1taciYhPUNkZmA3SnJdajJzSUxEI09HOWNiblRrKzw0aHwzKjR+T25fLno0OkNVS0JKInZiOXxhcHN6O0l5NkpzPk4xKV1SNSIreEQ8eE5IfSErWWxdaVNHUi56ImxCIk9ObTxpNEssSnVpUTds''@;'; put 'put ''XyhaYXkoZSpZYzRPfkskJi56NWg5Vzw+c2lKSDl7aWtDeSowe098LD1SSmJ4OSgwRThqI2lrO1RLSE1EQjI3T21hN00pLCNLRkdDdmUuSEQjWj5xL28zJGI/bVR8aGklPkhWek43Il52SDpQQCozcCJ6XzlHI2RAZUpeY3A9eUB3UkxIdE5QViZSN09PPS83fmEmTzBQKyF9TnkmQCJFdCxEMH16''@;'; put 'put ''VDY5IVh4dlh5dTpgfC5lTiYyfm9VPjFKbUoySn52LGpVRU0pYGZTXSxGTyViX1ZZMSVtNH1dW2ZSfikvS3JvYkBINkJnZzBCPkV6SHNLQGFaVWErW08qY3dqaElJI3coOEsocSNaQj9zVk5gWzY+dFdWa0t4MERRd2FdOD5LOVNQJT5JanUpKWBvKXRVbkZ9QkF7MCZeb3decH1TW1piYDF+ODtC''@;'; put 'put ''JkZNVywlK35GVzhofXJhZXd+UntfWWxgOEQiPmI5MkI/ZWxES1s7O2A9IkMuUSMmbHAqeEt8UHghLGdVJEZ9WDNOQ05LcVJLW2l4NHs7JjAxLkd0L3QzSXZ8NlslTyZeSV1fSjgrYyxOTG89KT45VXZxX1piO0Z2T09hcU4+dkFDITwse24vUkxafiFoWEZnfW8xY3BnczNyPUFhV1YkXis6NDxx''@;'; put 'put ''ZFF6YHs7ME8xPnJCdlhhO3hFU2MpNWFtZWVjW3Q0dzBNOE1IQStRdiEqQldUL3ZabVpqa3I5NyQkRWo9Q1csKXZze2NPIlpLeltlUypnIWR6Qno6NDwubS5PMkgzNiR4QUtlInUqdUE4eCh7ITdDd3Rsc1BzWWQ6JV90MiRta09mcyVhQ1Z6PD9xcVFacktTTXw6Wzw3TXclOlIoTX0yN1k7dnlG''@;'; put 'put ''VFIkZDRERnl5P0NbdyNMcDJRYXIkdm97OzVkaCM0MiUlIlEyPzZSVypMTSkxZmcmKyElKWpCe0R1blc6MGk6Pl91fCVAQ1slbS5YaTJqdTJbTGg+bWhiP3NNL05KZHdnO0gybWZXZCM+d3cmKyh3LDZqNz0yOzJEKVFufDFsNWJ7IyR8MUcoTnsiQGBlM3tXKXJtMlhVLnppKXBlR0UzKHYlZnNb''@;'; put 'put ''YSJaN3NWQFBoQktZYHhidn5waWQ6aWk5MSUye3hkTnprLiNZb3lAdnBebEo3YEoiUDlyUVZsPHJbWTYhWH5IOX5MZjprTyJjVF83cyRVRmUrO3F9dl5KZEI1PU1NWEBFZVpAOSJBOllUKWdZW2RecSJeQy8yOGpVYCVGdWlWTHZSdj9SVU98bmM6MC9EYT5lfGoxS2Y7MDZJSktnXVRsfD5efjo7''@;'; put 'put ''RGc9bihyakMyIT14VEddcl9iZjVdNTt9PE5hOTNzfmV7Z3MkcnxwIjlhRH0lV3A5cD47VC5rdTw/JFNLYUdVWSlSRiprPVshaiYuMFtxPnh7TCpENSZCVHhud0IsYUphXzpeLFZjcFckNG0yUix1ZiZHN1NmN3lOWDs6aFRqNFYhanY5PTdJW3NnSGVDTktCU2k2RW01Vnp6YiQxb1hOdWd5UktP''@;'; put 'put ''Qj1MaWo6UnQ3a0A4Izl5T1F5ck91Nz8/dz1yIjZtOyVvcGIhV1FIJTtmJTxCUS5SOlZsakF6UVgyfFMoSUBjSGs0NXNvZTtVKG1ENSwrTkdGNHs8LEJ4fHx0X1Z2LCUjfF9Ccy8qVFs+YjlfIVg4NTpWcy9KaGpgVnZnWjZ3LD9dInxfYFdOXjttWD4yW1B8MkF4aF9KM1lualMrMDNWWSlXX2ll''@;'; put 'put ''RSNTZG5Hc0lXVlg3UzdMYXNFXmAxQ3gkKV47dTAwIiV8ajFbPmE9KzVKN0NXJkVRPjE4Y2phNnJJUDlkODhXTl9vfncjbF5ja0AuYm5TMWcjWDBNNkl7cG5vKVBNYFljOV85MSg3SiZYPSQ6JFpjfDliRStYaERzNmhrcGx+IjBHQWVuO3N+NGBpLlpZSFBGWkZuNEojO0ZyMGdqLGQsdFIrJntx''@;'; put 'put ''KjdUZDx5dXhaTTRNUjdPVmhiNWxCX1FhWDUrUVptPEJibF9EOkB2KV1lNEJWRUgoUzhdVXRpWlJkTjs6PDRReGohInhMYFQ0cjUpKCFORkZLU1NEJGtVTjc/aCNeS045O0lEfWQ0KkozLi9qOFheVSNENyZaVEs7RGd9RGJGUmI6Ryh0NVpzbkJzUHlAQl5Pa250PD9tPlMvdn1XNFdCYy5yVmI0''@;'; put 'put ''PVA5Pkd8SGdRN3RtZH1feHZ4MlgyeDFYem0yY00+Smc3RHYzVUdiZ09RO215NmdKNSY1PEI5K0Zld2kjW09dfCM/R2t2MzkkYilKYEZSbCVASnVVUWdeIWVtZGNddU5CcTlxLElTb1lnJTJgQ1YvYjN+cE1xO3A+SSQsYTd1M2BnXjpTZipuPn1HJVV+PHpGYF1sXT1CU25raFtwTW08OUNKalt4''@;'; put 'put ''T1pKXTdVbDl0PnBLVEx9cys/fEMwWilRZHl2MjpUJiw7bHRucyg3XktFVDFnQ01YW0gsTytwUl9FTGc+KGdyKT9bKylnOS8+ZEVfbWJVfiNdLk8kbmxZbkdGZDgzKlppPkEpRjxdV2BzSSRXUzFQK0o3LyNxeGx0eG93NXopOzo0KThCfHFgXissMWM2VWRNNTttNCUvKEpQQismOj0rV3dFIWxh''@;'; put 'put ''NWY7PmsmIXZpcGZFJE5RdlZvNCRqJXFUP3ZVNm9ZMW9NSEtab0l8dFh8Q3deJjl8VVVmblUvZUIhVjFKdkNUNFJ2ZV48KXY3JjJ+O3BtW3VRMDtNaD0pKCN6UXlyQCViOnBScXpTfGcmP2lEfn1BNndqYFFgTWIidypyI21iSkhpSzZOREgvSXBxZm9yWV4jdEQjRlM1MC5aW1E3SEJ4UlNDKkN9''@;'; put 'put ''cl95WHpYQkxxeDIqMTtHZERDYCNwO1Q6V1plcFhgJmdYTH5KeTA5MnkhR2BOPGQrYiNDUjl3Wz00JEBFeTB1dCx5fHV5dF1URHZTdDwsZkhSPVFnPzxSbkksVEBQbDxFUiREaEtXbFhwY1RPJiUmMGkzXjI4WFA3TzhHLz1XKzRLWSNIK2xEVzRMV1dHRHo2ST12UWV2Oi4lSWt2aCsyfWBmKnlx''@;'; put 'put ''U1t5emNwPyk9L0lPPWIqe1VvRl82bzg/NWl3a2Zua3EhMk4yREglO2gkWHRXIVgkc3ZedHRxX3twJDxiVVB6Un1zdXlJNFduTiZCRk9IJixzWSs4cjJ5aiNFeVIpYjNTKmRVOl0zVCFnezM/c11GXTNbfXdjeFp9JWVBVUx5TSpldGpjLmFeeXhKR3M7b10yW1EyKWAlRD9nWGxLKy5MaWNlMGxk''@;'; put 'put ''ZC57dj5FPD9LWUohOS9VNldDNmMoQWlaTzx0OkZfQSlZNnEoTzNpUlZWQlY0Rz5XQW9RMypgc0pGVnxZSE1rfkd2Ki4+Vlc3d2V3M3ZkSzA8clM9T2tzRF1Eeysya31ySE8zSzRSc2QzaURRan0uP0g9cVs8NUgxNyt0bl0/WU0qZE5eVT8qUE5bWEV1I0lTR055QWdkIWpxV0VGSWF7KHV2LzF9''@;'; put 'put ''O1Frfix7OT11TU5+ZmNSe31RP2R+fkR7QTdAdn5eSXclW0pOVmlCM1g5V3phL2ZUfFpONXAuPSx6NDlKVUs0bmouM1RzOiJyREo6MVEpNzpyV0xIYm9rJX1yVnRCbjQ8OCoqM09JQiUvbWcyVXpBYWI2Q2UxZ1pZY1taSyIqIUZpTyolVEQkfllwcExMN11CKFhLVXRQKHxydG1WRjpAYFsyJGhR''@;'; put 'put ''XishUk8uXz5wKEhHUilsKUpuSkRGNVBRfEk0fVpaNVU/a0BRdSJbcElrOi4zaX1mImt7V052Oj1GKSZicGhTOyV5ZHFUdl8qPzp+VCZPJHBHLn48fU5ze2tKaiVYK08vZ1B5Pnx3a1JHN0YvdSJ7Mkp8JlQ9TVMvb2djJHAkKzE1Xykzdk56P20mRVIxSGxsYGRER1N7XW95Pig4KyRDdVdrWzhM''@;'; put 'put ''R35CfXhCOS9EelskVyJzWFtzWWNLR18raF8jbXxNLFt1JHUrUFRYPV1DZy4od240RFRGMSMuSSxDPnZSKm52VGdFJlRWclE8YiMwNGVWVkBrNSE8Ols1X01oJF1EIiZwfG5NaS5qbW4vfHl0bW5eNUI9IntQeVVtNX4ramFnXmg+XXJgU3dTSXt0dVFHM2Q9Q0c2b19AfTM1XSpeOjAucHgmfllJ''@;'; put 'put ''N2omVmg1WF9sY2BSWEcqclY7aWxzXVYzcEQiMzB0Uyo2UlYyQzA7eV0yUVtqIjYrRn4kfEQ+UX4sZWpCekZOVT9HM3xaL1djN3x1Z0BuWCM8ZUdhJDY5T0JFTCJfZyJMJko/KiU2aGBNRlUuS29iQ2xYTS5yJk4zPFkqVXNtUnlPLHtIWUJLZVEjcFh5T3B6UFAjU05mN2dUbEM6LC9JbjQ4VDJy''@;'; put 'put ''LDZLckpdSmA/VDk4JTVXMXMyW084M2g+NVVLI0pjfEdyQjQ8cnNoR2xRfFVXKjxKMVtlKjd7YiF9cXBVM0BiSUY+LENRaTw4YlNtQixwWzRCaTxqYjRSKUApVTxRVVVpajVuZWQ9VGQjXSVPaCs6WnVhLktnMVh7L1hubj0/OitNS28wcypBcjJdbEwwdXdgIyY7dzdzXi5zKTc0MXk6Tk4jfCR6''@;'; put 'put ''TSFlOWxxXUo3Lml2Jj5sMiwvbVBbfHA6R2d+WmAxXiR2Q3hgVWd5MkxTZWo4QG1GaiFpUCN1NXEoQUg1KmdrVSoyfXV1JX1dWE8qVUtYRyg0UEdAdFB2UmF0b1ErUG1OSVZeaSU7MTZQYytiLGA+KEhpRTxPUWpNPkk2OXw2UltqKixrKzUuODo6XzFEeyFwKDglOT9KfEN8ZGdWKns2Ri4oYXZf''@;'; put 'put ''YUNuUUdeMVc2XT13L1pnJXFRLD1eKHJLYi80cCVQLGVlQTNLdVVWQzNyWW9TMHh8bWwkRDpuaHpGUSFxcnpoP3d1TU8zUSo9VXMoVzV2ZTxYcFJ4W0JKLD4rOTJCQSFYc0BmRSxeXTxdZEhWbjI+Vz9XfiV7M3J3bkFnWjxMKk5fYUF3KV5EXWFvek10cjUpXTJYQShmKU92PFJoeyU9YCI3QXoo''@;'; put 'put ''P3wlcHdpQyJsJF4pO2RwNW4+NmlEZD85ZUolaHo5W2xANlJubzVCYXxNfHp0JUZreWppTnZkSC9AWkZqQ2VMdGtfa2M9e3JSbVQ7cExidHE7aWt0djJ2YyJdJjEuJjI1Li4yfDk+dyhARG5hUFgqSjM+JX54amRgaywuOjZ3IzkzcC9OIVN6PihGOSpCeCpTVzgqSElgMUNNYVZddXFdLj5VRT83''@;'; put 'put ''aH1zPm14fTY+Y0pPTDh0WW9dW245bzNaNlNIN1hXVXRfSD5yJGoqd1MzcXlDJFcwUkwmeXVCQTZJbD5gQmxHTFVVXVRfd209SkQhR01QQjB3aj0obkhdNSZdLGVHRzg1PFsvJUxWKjVSRG5QQTx+KXtHUGxxM0IleT1NbkhHS3A3eUF1bzRvP0g5S2d7QUtpJDNFT0B7QkBZM013a0UpVFo3fHBF''@;'; put 'put ''YEUlcEhvZ0JaKz18cjxyXV86On06VjJsL3NIWSFXTT1OcD0peHpuSitLYihnTlZHTFYkO1U0X2J0PzxRLDczUm1HdHZ+QiErc2Y2ImI0dVFgYmUzXjYkWVVnXVBLez49MnFOdDBmWzg4KGw0fF1GbSYzfnk6PC5NdFFVK3ZbckRLMixfdGApUy8kTUwkS3NDVEpXbnhra2Q1JjlRVzdvd1VdLlYo''@;'; put 'put ''KWZiXmNecjp1KzQlYkNmNCZneUQuTVUqSXhYUjgkQ297dHB9NUtWZXA5U0QiWj41eilVXS9VTXJDMyVZMyxHWjQ5Wik/Y0VwZnNnKCppWWo7UC5IYDZhcXFCRE1pR0YxX2hNcSguMyx1RE48ODxpWTNRVys/elJmT2xldUVnUkchX2I+TCg5MDE/R0gjeDsic21OSTZQeyNnMy9mfkQ+Kzg4I3p9''@;'; put 'put ''M2BPUV5rbGs2UDxfMFNOQWZtOCtMc1slc2FGTWprUC8+QmVPQjo/ejo3KVo+bUUqOFBZQCZCJDVJXXA+VDpEcG1zJWx9Y0I7aGZ7SlhtOzNFO1Zmen12aWVQSGk3Y0ZQOi9SVkozQFVLL20mXTtUeEx0aVFOWVlNTDZzX3txRywyW2xaaHh0NTBvKWQrJVVxZVYmJk0wdiV4STkmNHhbRENgeSVN''@;'; put 'put ''MnFzPHp0RmkjQk1ENT50RV9RZj5KOjdbNz9+IVUwUzEuXTgqXyIyQ0tJMClARCN4SUBhdkBgRERkXSw6REdTR0FKeX11SHcyVCg5Iy4pNDRqUDMqWy5TcWA4Xi4mKWh6JlhrWE5mS3A3Z3kkTylrNHdrezlqVTFeN294VXl0JWBVdncoWXo8RTFffUtXeyYvS1gjNlNVeXxWO2tAe2MvcDJ8cyVr''@;'; put 'put ''UVs2K3dHZzR+b1IheDpmaHw9RGheOjQmXSxfImY+S1lTRVVAfjNJR3U2MFBwZHM4R3NlPik7ZzFFNSVpIm4/Smg6Jmx0fWdleWBfPkN7KkZXLld1JltdeHA5JWt0MjAvMVljVVksdjNDI25oTl1pLCtrQkdTMWhga1hMLDRNWi9mXTx3XltOXSVBZlVfNWxQQn1gZmF3OzxMVHtIMmplS0hVSHtC''@;'; put 'put ''OEtdLj5+R2VZQnZ2bCxFaiZHX3VpaThQIiRsOjAuZDQzZixKVzNjRkp2bV5Lb21FKUhSN0FXPWsyKEZiZ0kvXUp5aUZeYDN9WlQoOTdaOGhGSCJJaiZBQ2NNWWtnNExORDxufE93K3huVSIpeiZFeX1dPyhwXlQ3bkd4Rj1dV3FdZEhwYi9lRjpWQFR6Xz9KSE5UcHxOZzcvcTpdPFgqbmdpYyxn''@;'; put 'put ''Wi9fa2dMJlghS0pmKip5V3YuVzBVV2NOdHwhMkhweHZ+aXYmdSxMcD1uTGVtL2g4RjxsSiMrYDI6czJJSH54RXdGMF41fUxJTzs1K1tQKGJYTE1QdH45cCsud3IiT0EyaXh3PXhvWGxSIixXPGNzcHkibFRyPzdKN0JbJEszQ0k3NE1VUD5qKVBpTmUsdDs0XUhpczNSPU0pRCRrSHU7LEIpeSk5''@;'; put 'put ''MUszbj1CWHpGdFUscENCMy9qOXwpMVBtOExOaU9HeHgoI1A0YSNyQ2ZabG4yez5KYTRkOjpMYlFhP1A7OHh7KnQ9X19gbjtkYlBlT3RVLypYRFB6T0pkTDh2I0tpXyZRbDdvd3xhXUJ7Rn5UPmZ1MlBeeH1idl1hfTJFKykvOEx3L2VdSHdUemBHVG9XNjJPbWBAOi53bUM3LD5ldyswRiFvanFH''@;'; put 'put ''WFRMQVJjQjt9UE9WWnF9VXxTOklLU0xTY3EvKmYiRFhXczI2KDQ4LllgTUExSCR5WSo7cHs5TGkzdVAmR2kpKzF8TTYpU242XX58Ky8pYGI/LHEwQkIyM1J2K1s8QVs2eTBkRiNlZ0FgPygwZypVZV8iI2QhMHlXdCQ2byl2fjBbfHRzIiwpTkJOMyI5OzxTUkgpVHo5Tkx7I1AzQ0o2PWk4TCVS''@;'; put 'put ''WUBSTD5eMmBFTiV4fWRBKHB4ZmAzcG5YcVVjSU88YSlxNUsoR31XW1FKTnBuaC9WZVhNSkVEUXU6NiRjO0J1Kk0wcnZFN3FqUjtpZD4zLHRZXXE7VSFBRC5QPU1NU2w4XT9VJDswSHcuVDh0OEx7Pj9uLipKKFc/eG9OY2d5IWlJYV1uTH5ITk81I0JKSmd9cXxQbmN1eEh8IVRxY1o0ViIwKnpa''@;'; put 'put ''MlYxTlEvLlprfWw/QiVFPnhuO1Y0L0BlUmY4PC52ZCs2aWNbV01OTVdxX0J1bVE2SUxFd0JncWBmWmpyYV1NUVEjajE8TEJ3TmloaXhyM1YheWdaNldEdVE3M2RQTFI6PE5qZTkmcTZfNzssMEBCd08sSlVKfTR+N1gyajR7Tk16PH0vYWZuOEwyIVIsX3tnP0dZdWtWPHJvLyQlWHIvbjxeXi9e''@;'; put 'put ''WXR3TFk9SzlpOkdPPSY+TC5tOjxCfk9uS0llSjVhcjsqSjljN1ZXcDxyITFDLD5weGBjITVwanZuP354ITdPPm5uRjZFNSlZQX1GcDx0b3dMKmtXdlY1XkViVntVb2ZqN3J4JnNOeiQhdjFuNWg3YEZTNnl0Xi8keSo5Q11kdlZuT1tGZFFTciRrOjtnN3tKey5yNSFPTj1wdTYia2dSPjZwJDwv''@;'; put 'put ''OWhTWFYuTSZROzB8WihVOmltdDUvIlAlbS82Qjs7JVNKN1skIzksKX5TOD5LSnFqejtecC5dR1tpR1duUzI0TEduOGpXUSVuMTFeISUpeGx6NUJucThpMUF7USUmfUtHe3I8VkhiK3ssdUpYTnMuI2w2TUxdS0giRHA5YlFgbyMiZiFYXjkycGphIWQ2IVdZMGVjVm9tOTs6JC5qRm9SUSRJIjAw''@;'; put 'put ''bD5SVFc/Yk4wUX5bNzcsPChOPTRBNGR9RCk4T1ppP0NTNmZveUdkdCwhOWtyRmYrb19+X1g8ZG43PUI9TV1dekcuRih+T0dabixDTGlkYi85dF9ha01taHZQcEJdPjxhXm9bKjdwSTZdSz4za1V9NTh6KDlDSW0lWWp7cytOQmdiST04Si9gN0FkIjoyQnk1V1JUNkp0XmcocDFUQkUmM3ZDVFpl''@;'; put 'put ''Z2VXVnt6SlJaYmRRZmYlWFVRImtxTWVVJUI0IUdsUGM9U0ZRZD8rQ0I7fERKPTRgZ1hOTFVMMnFda2BLRXV6JjlQXy41WlRVUXBnIjUmYTIjTWEyLHp3UVNNeld1JkclTlspUEQ6eXVNbWY+RiR3Nyg2ejldMFh9dTxZdiFKTjhMYlRYN1cwVDUoZyo5YjA7OHAzTjdCPj96VmJafSUhfShSfFlm''@;'; put 'put ''MWk2LDg2WUBIeiIocCl5O2VaS3liPlE9ZCNPaTl8WEBXSjw7ekRMKCxgXlVTP2UjKkdhP1ZdJlcmV043Ly4mdTtLaSEoLmU7WXxTTzg0PGd2YEJyKnopS2EsRmFeeGVaYDN6YTMqOHZaeThtKTouTFE9UUV9SG17QndiISNeOWpwZVZ3X0UjRHFqQCEydFtqR3x+NTlnZX07LEdndHYwT2RsPTll''@;'; put 'put ''Zlp9MHZzOkp1aVguelIvUXlnYWMxOVpCdFZTM2goP3M0OU1GWmMqQTl1V2U8e2ciJk1ubUs9cSRVPmcqRHFYOFN9XjtIfHxMajtuRz9nUV5GdnEyYDlTQEM1dmg0YEh1OklRK0l7TWUqfX1gMEV9VyosQk4pPU5EcE9xfTUlI1BqRTlLN3NVYUYraCYkNUNnfFF0NDArfndVRCsrMTpGcnolI0o8''@;'; put 'put ''VVM8OyNyMkpHdnZbVXI7KyYoNW0wYHtvd1U3Z0BZMz40cXRBOHJxOkkzbFJKTFJxNnAzZ0JGJWY6aHZtOTIhLFJIW1A/PWk8UEVDO1A9WjRKZEtvWiRMWSV0RzhSe3RpKk16fEs1cCZKTUxOc349bXkvJFtYLE4icHlPa156Q3kqfkElM3U6TFBYSitxYXgqMV5SPlQwJmpxOmRAb1hPVDNYQFVO''@;'; put 'put ''LzVjZUlZcyppai8zTWxObXMlPmJdfiQofSRia3gjZndTJHducDAqY01VQGZ0I0hwcj1iJSpDIUI/dzUmYVJiclR8ek4mP0tUVFF5fmFhTHZTXkhXRV06KShUdWZ9NTxlRyg4Uk1TeCZ6bFNEOEI2Ulp3eyhYWkVxI1kwZ2VgbTp0cUpVbn15cEM3Q2wqalhSbXQ1RG5ic1BKLiRKWmlnPSZ2WnI+''@;'; put 'put ''fnAkKjp7ITZaZCg8ZytJPUUiNWdYfnkrTjZRbFp5Q3tvdVQ5T2QjQm5HXXAvdSZzSXNmUHdtMnh3XV0+WFsqd2dpZzwvYk0hczxjdmFlPFtyMiomV109dCs+VUlbM2JOc1VgOi56MDYoPUAoJVFVckFsIzQ8Z0IyWFlMb1VfdEVhIXFTaj4ydm1nIz0/JktSM052QDM3Sl9kKFVtVkMjWVJBPjdU''@;'; put 'put ''OmM+fFhoWStOMEBKLlolPC5qeVc4KlIrX2RVKko/d08kXVNyUiglfkM7fi9PdyFfW0BvdFdLJUFeI187QE5UUFM6M3dkdCY1dylkbkVUaElTXl5Hbkw9QnpxYmZoK0BqLjx2UX1wfDkoSkNXPTJGdTN9JD98dEMwMUYyfU0rSUZDLj1+dTA3VildUGByMEJJYCE7UilOLmBTTFM+ZjZfXj4jPyJm''@;'; put 'put ''N05bS1h5JUslNFQxciU+TEoxOE8iOVg5WVUhbmVnIUhQfnkkRFtMWCw6YGhmRGpTK3IsXjpVYUw7MVMwLiRhfnNhd3g5cSx0YHdPWn51SHQxYGgsVUpzRH5CODchRTNwPG5yd1BCTXx8LjZ7VGgvX2E7fE1NIWZOJlowcSovbnhCUDNmOnNAbWlSSGs5O1Z6LGdRMElmLDc2YW87T3E1Vz1qUlAk''@;'; put 'put ''VEZwM2x8eiQmfilhMnlFSVZkKSxkaWU7bFs+ayRMdGE0b04zV0M5T21hO2N7dUlndXlNWkxkQkFYRj42Uz1IVzUhaUR3OlYoJGhpdUw8Vi9IWiUqNklPZUB2ej9RIih7d1l5MHcyKFRTfDwkYG1Mekc7TltDIUBrRGQjRHU/YyVlcWJiTWF+clgud35sUHZBZ252fFgoUDVEMlJVP0l9eSVaLzFo''@;'; put 'put ''NyMwaXhpIWQiWDUyeEQ2MiVlNktFSmhIaU9GOyVZRFMiaWJ5SVh9PXgmVENidj5NcyZkNnI1UHRGM088NVt2WEZOdVhGUU15X0ZHInJrS0lkNitwdD47T0I1ZGxER2FTWHh4cG5KU2x+cEgjSnZvMipkI3FrXnw/ZixbKmAsIl9GS0Z2W0RSUDhoTTx3ZThYJkNlJFtIKyVLa2tCU19XJk5tWl9B''@;'; put 'put ''Vnl1XiY+W0A1Vit1JnZQbUtTWWsrcjgmYUlXZmEqW1pqcktMXiRlZXY3Wmhuakwxdmhpc3BoKUdTR289anFoW3NXQmdwYWQqSUNifW5Tez5wK0lVIiR5PWZETyRRSyhsc1thZlFQVFU6eD9nUS8wLEMze0QvY2EpI1tGdmxHMSJHPW1nSkBAIUxJfHl0PmhdfntSSUtzXlBxcWIxYWZfYXg7LENr''@;'; put 'put ''QCZMezc4NjRNISYhKGFiOn1KXmVSJlhaWDN9JHcyJihhfW1dQkgsYFppKko6RkZja3JlYXt6PUtmIiU6UlowT0dzVkI9MF1oWnQ0UDZCXmFxfHlrOGxRPXczSlRFQDE4MGNfKzF4RXRhTVNNT35JPjkrZSxEMEEhciw2ND16ei9+TVRWQXlYYy5OU3ZLLGBFbDpLbHQsbTAoLihALDcjRXMrbU1n''@;'; put 'put ''SnVbJnRsTUM2WlhobHFjXmBjMCM1c3lecV1dfWAseyUuKmB6fWc2TzkoTy5vP1NLfG5tPXRpV3pLWmxpc1JtKWdvUTFoWXpeIXt2ZGQke0xIazVVIWw1eTBZb0NFNGZCKnRbUGxvQjA2VzFDMV5GPWdxYVVsPzRTPT1fUTloSEZ7cC9sLHUxVWB1KjNtP30yIjYhRylYR0VzcjRPRUN5XykpL3su''@;'; put 'put ''cyVbZHZQOG9sQS8zaDN9bHlGLmZ+TGFqUXlZRF54clttSFRIL306cDJBSSExMDMxekF5cWNrfFdadzJVZmBdM2h3KVZmNVN0JlBZTzBMYnJsPypOKTgifjQkP1IqZTI7Qy9QTl4yWUhPaFY0NCZBRWsqal5HKSEhOjYiNzc7ZzV7NTFoOHliPlFpbHxIZWFMeUY1ajcofV1faz1CQkw9bDJOTmE2''@;'; put 'put ''WmJ7RyVkZnN4OUE8Y2ZuV2R+Q2tkVUJjK1ZiNyUxTU9zbyhpP1Y1WzhbRzZpJj46S105KFE2SWR7RDp8PTJ5b15aUlpVWGtCKX5aJk5iaGFlcGMpNzY2QVM9JV5KZUVCZ2MsIm8xM25wL3M7KjcuT35wenRCKXpYRFlwaUdMRmYobS9pTGZmWiF9RSkzdUFYPyZNW0s2WV14ZXJKYl9FKFZfOGtH''@;'; put 'put ''VVZtWE8lPVshOCFubTVJPXlNQ2h7LDNbe2EsY0NsPnZuaiZiXmdla2pyekVPfXI/dyw2PHU9KkVJMElKQkR8QTRkbDNfT3d1M2xMTVpIPEw6JEQqXTZ2NyxreDQsdTVmfDkwalppO3xpOEE5YzZ3SChqP31xJF1zImRNO1NRRjh1Xj5AQ1BTUmJDZGElXn4+cyZpRDJvVXhZVmE7K2NYb0VaYUZY''@;'; put 'put ''cj4uaS5MJDp+Il0qcSRoQD9lYnF0XmxZVn1GYj5pQn5NaitoV0UoU299QUVpQDUzcUdxLnM4aDo+WFpUUT9mfG5uZSIoend3I0gkQCE8a2p5eiNuai9AaVlhcStCY1JlbGlEeSZCXXpdYiRdeXYpKnplOko0ZEAxelNQYD9PWVZjaW97UUZiZkduRGk5M1lPKS5Jb1gsbmp6KCpheVMqS30uKmRr''@;'; put 'put ''MWNsQmA+VVFxUVRYZ2B6fEE9Tm5TPUt5cHQyPTg7WiU7fjN2NzQuPElaND91NFVteXkwczB8U3tBXUN5R0hJeV83emwjX1dxZ2dkcWhCOmJrVlhbRW1FYm9sdH5oU0chQWElXSRVQTkxNCp3OSZiZiRtcnA+dVpJIzVdMnsjJWQoakRrTkI/QzE4bj5hOF1UK2BJdUZRbjpdWTlXOEVCK3JIVmop''@;'; put 'put ''Wk5fcnVtJG9HbnBCcXU9eGBuOlIxVyxtM2B5NjM0ZlRIYV9iakA1e3Y+YD5dYytXWVJnVXtsdVJrRXFHQlByRjNhakJTKTBIUmYkYjZWMVFTZUR2OSMkMix7YXtUOGVzNiIvIkdYWDpUdDQoKVlTSWhjSSgsSU9nT3lmI2lPNWs5b2FTK3kpPUd+bGg2Iz4/IT5jYnVsZmpoOG1YQ2lpQCQ2b0Vd''@;'; put 'put ''MDgoYUJIW350PyhNMjIrb3o0LEkpQDwsYyVsbHImJGI0P211O35uPGN1USpATVhHREdhOWp4VENnTE0malA9KDZwSzF2TyJ0QjA6KyZJfTVVKSI3PTAwTGIhMmROUCMjbl9Vb3tAdzVDenkoNVJ6RzFye2hYJTA/VjB7OXFob0dTbF18Qi5Ufj81Jjt9R2w5QjoxcmtaRlFpVzBJJlJ4SS5POEx0''@;'; put 'put ''MElwYjFFdzIjZlFBPX1KOkFxUDtdOmNERlQhNlpEOlpHP0YrZX53JV5weX5pOm0xbD1MLkhmUjk9VlYrOD9VTzxobHoobWc1PSMhQyJKOV1rX1NIb0hiSHB5cyg3M2lLNygvfjRTQUp0TkVxPSZqVk4uP0RNd1lMc1h+Jn19L0VXSGNSTDs3WTJiOnxZe2VtbCU1dzYsRj87cE5SN04sYz5HaF83''@;'; put 'put ''IlVIc0I0alRAem5SWDg1PWsoVGhPZD1KUmlGcFlaeXcsY0YiKGB4d3pkVUk8S09ndE0pejNeKGkoRFRHWjxBNVclTUkiRiZ7Y3YzVDtLS3B0eENqZi8hcldJOXA3Njc0KENPVm00dHl2S3F7LnVIIUBnP2FSeixrfS5iSUFrbVk8QkQ1MW89X0V+UjVeSTlrPXNrMWsufThjT2pIQkhTPXFJOlg6''@;'; put 'put ''PTUhJEQ5d11pWEBbfHdvOXJ6I0JaJm42dEV5YiR2MENnXy99IiNWI1hAIV45LFphby5dSkNBVj1FKkosN0YpRyt1Szd8N2Ukb1koazllZXdWa2J8cDBTO2N7SyN1eVUlYmZLZ0xLTWUmV05aJUA2eTZeYFB+WHYlfCo+V0JBbUI1L1Qxcj02ZVB9TElZJWUoQ0xQQGtCOjdKTktRTnF4T35kfSNK''@;'; put 'put ''Yy90Oy91c2h4dy5TODV5SVBPMFFudC8sdVtyXT86UjdEJDskfEtURlVYT2N1VHFOfEgrREYjSEZKKklsIko7TjRVMVh9eUpOaDlUMUlEJSlnPyRRVD8sJFpeVVgsT0QqP0Q1Yn07cnpQSy89SF9rIU0sLmdLTileU2RLVU05QiosMVVRRGR3TjRzOHJHcWNNMEBQWS5VYSYrcF9iQk5odE9PSmp+''@;'; put 'put ''MTxsXyV5Tz9vc0hQczB3dnFuezo0JVd4QCQvKyZUPCk5MGx0az4jb24+ViF1eWpYTndCOCtdY3g9fU9MPCVGYzZ1MSJxY1dZLmVRTF0rKDg3cDdecFllWzVRdVt+IVthY3NuTkoqZ3gmO2AheV58SC5tZCIuMjMpV1Vlcz0pfX1kPzhQbjdfXikqW0wufCooNV5xO2FPUDp+YzkqMSh3YCF3aHNr''@;'; put 'put ''bXt8bGdicV9UbjArJDFDaCUuQzkwZTFgTiQ3fFcpXkMhP1U9c1gjcDIucEB1SzBZZnh8S3EsSz1AZlJMZ215UCRYQ3JHbGFKe3ZhbSZMNFNoZiUrNyxnSlQyY0FraHAiREo0R0w2N0JtZEVaZE42emEsKF9yTVUha0xrTC50JldzRm9fI3FgRSI/VndyWyQvMyVCUmM2bkAoUlIsQ2dNKDtxVEtu''@;'; put 'put ''LE1MRzBAQmZJLE89MFViU0hYZEBuVH5DLCpGLmlDWF1hfjs0UUlvZ2M1O1QuJEJuOTRsV0kvMUtlRTxJJjVkUyY1XmA7T18jZDIvSm00XnlGKF19Q08uUkNrPlYkTEoqUCZvbz5+bFUjKFo4S1soVTNzZGhkQk5HaGorLkdjYmRvKk07QV4jRyVuV2hncVo+byZLZG5IQjRSZWk7SFhoSDh+Oj91''@;'; put 'put ''aDh4PWlKdTYkQzt6QldhRk8+MD9yT2FXODd5Iz1IcihySGVIe05EbUc+cFM4S3ZaN3d8OyZoT0hOTjYsJiowdVZIK2NOeiNLTlY/cG8xemQiKSZpMXFFJG1jLGw7czkxX2hnMTVzO3Y0c3xXKEdePWRZekdCPltxPFJzYn1GMms2Okt7OU02USZOZWVqWzFjKkV1L3Y1PipENTl1eVVqSlVjTl5P''@;'; put 'put ''SUt5UkZJczJLO3R3Uz4sTCpsaztCNSlFJGI2K3FxZjRSU24zRHh4cHN8JVJjMU1ATExpeH4zbkBKIkUmczQhPSZfUzpGfFNCMXVJcnRVKlpIblVoLzpfQXo6aT4mfSh6SmZXYzhMPEc3Y29pQ2tCSEtPJj9nPntuPX1qWl42NlZKZ3RYeWJlOntYfClJYEpdeEJ8KGdaO291diwrSjV5T11AUCNW''@;'; put 'put ''MTh0PlkzSCt1TXFfOilqRG5FajZfSFU9TzhyY0Q1Q29BYylNZWVWTkQiT0A7RDJ6dkJNVjNXWSFnMmM0eHhbVypxYmxVQlpNJTZ+aFd6KnBDWW9lcFhSKUxAMUI9MTJLWFFpaXJCa29WdkJ1SV1wNkhCL2dHLyYlckddTlI7VlhuLER+bjo+TlJHdV53QndUYWIsQzgqTGdleEkqOWMrR0FXSH5a''@;'; put 'put ''SSl2bjhpcXtyWV9+U0VFKnJpKF8lRzlAe2FhTH1oVm9qKVZYcFMqKjY5fUo0JGsudGtdbT4xZGYuQ0I6Yls4NVhHVWUmSEBrSjkiNkNCUEI7dzdQLltMLEVicyZWaUZhcDdla0pLNVI5dmpEcEE6QEVEYmtnUFo8RDtrISw9cU9tWy93NkZ2SWl+VU43Izw3NiEuPDNaZlRjQz1+ZGZPbVlJdXU3''@;'; put 'put ''PUpxd2hUQ0t7Q35XQnBMTzV6Ukk3aFt0eV1KZjpuQzxWcmxyQV8oP08hVlRSWk1uMzZ6XSg0W2t6JEVbRm9NRG5GMFRudltyXWE2OFg5e1hvQjJ4aWRYe3s8WEtnVmImNFMxNnckRXxqbXZ9T0xoP0glIjJjXndDaSZzZHNzZFUuQE99dHd0YEd4LDpQMzFUbCM3e3IjLG9GVER4ZywlKGlJMWNo''@;'; put 'put ''JmdIOzN2QlBZR2hNRV0lYEJtWSUhZG03WndpUmgxS3xGbXVpfVtSUClAL1c+PjFyTEVvXU4+QiElImwjS3ZNKjZKMW5UX2tgekN4UjU4ZExGWHxBamNjTEp4eWpydFNXdjFMNGhZOlZHWEI4e1o8T2tWNSowUT9hMnpkaEBoaV94bGleNyZAWUk/RiooYTUqYUxYOkE9OlJrJnpnSXtBL2QmUVty''@;'; put 'put ''XiM5N0k+byMleWMrTykvbn10SE59IU5NNiEkM0kvQ15xNHAhITE7ejtRb21JI3kjLjNDRnEwOkRZRXpsWTchRFVJZ192alhoVzJHVmZpNj10bFhbXTdbSSklT2UvbCVsSX5qQ1NKLysuey5Qe09UanpGMDJDP1VwVWRFPX4pcywpTT15aGFmXTVmVFhJKW5BUlJpKy9mQVF8Z2J9K18mYUNwPyZp''@;'; put 'put ''dkpiMlVvV0suN3EkfDo2MGMzOis5Yz8vJlUmUUZxTkEreDxEbl8hQjFxUTh8XWV7V0oufE9VflBDWzk0XypyczRSTylKYzNsbj52KT57PnIvc0B5VX17MClrSCw6byY5fW5NKzl2YHd5MT1xa3lwUC9GfElEVl5CdWtde3ouWGxbajdxbHh1Ym1QNXJbXjV1NDxtMG9hfWlmLmd+Sk8xK2gmVzdf''@;'; put 'put ''JmZiPVByeSssMDFVfkRjaCEwKFkkLDJ8K1Zsd0d+ZSp0QS81e0FKVTF5RXxQeEBgbFNpW3hxU3RCaTprQWhld3U3Z1JOXUd9LD92WT0xNE07N19FO24jMzZkNiN4QD1vZkZoPTBDNUY4WWNwOnc+cDpleztUOXVtLjVuaEhtcChALGBOc3dGIj17ajUwe2d+TGQkM1gjT153OU02bnlyOHZ3aD84''@;'; put 'put ''eChEKjMwVXEpOlgxJiRwP2wjWjppOlN6Qn0hLGl9W3R6YjA7TzxYeG9TKjg+YDM7KlJAOSpYYXx3XUhjeUNDajxeYXc2ciZ3Vnh3WTF3IU1dTzcpXlgyaXQkYDlyKHJpMGpbXSUhej9dRFs9YzpCSEtCaSZneHlAZVd4MFd1b2M8cXtxaVExWGEyaUluRjJPVzhLXjloK2lfWWo8RGs9L31iI30z''@;'; put 'put ''b3hHY2pPY3RNJiZZfC52UGV8LEw0VmlmeFNiWGFZYCgkPUlaIXVZRmhyTitFXyVTKEt9RC87MyhgVXJ1ckVOZ3MpZSkocHBLfDorZkIxPzApISN+ck5pOmVZUCFbbF14Z0cvOzYuMHxdOSxic2FlcW9BQWZnTitvUHprWV5wYio9dzA4NWI+Vz9FdHlNbUs2KTc8WzMrNDFYYUl+VlpaQDxIX2Z5''@;'; put 'put ''YEhYaFklJjYkbHE8dE4qbXJ3Rz1tR1p2eDl1OFA4c0k4Yk1dJCRoQDwwdktnejZXPCY6PlJbREB6XzEzUjlZTUBIbzUudFZ9IWxMTW0jQjs8aks9XSJeKXlqcWN3MXxBUjdATiY9TGxBYV5OfnlScWtDR0pkcVdOTmBmMyJGNVVTbCFoRGMmVy5NfF9nJmh2QHs9cjh2bUk0IVY3RzciYDpWOFNf''@;'; put 'put ''OHo9a144aCxfOXo+amBRcWJvKDg1clt0PGJSYV8zMDBLejlEQkZeO21GT1pnJWE5JWpUZlJtUSVtJVV0K2tvdTdvREw4Kk1VNVpme1BLQTozI2VSamU9ZUxIKSlzKDJATz0+ZXQ3ekBWfiohdSMjNFdCKUI9dEczQSFBaFVoYz98aHFTQjR0YWx4Xl0pcGJeWjF3VyVvNmNDfHxZLHNUPkxkU0U0''@;'; put 'put ''UjhMKjo2MHleS1lDPnc1U19bU1A+dz9GNmdlciRkXmNeZiViLC83aXowQEg7IVp8ZntEWSkqTyJNNSVWTUdMXShiYl83dFAvSkhiW2M3JER4KywlV2ksWjdMRVlaan5mKyp1c2pKNE49d1dfdDhofVltSVR5X3M+WFBJQT08fXpiIVI0b111K344eUZgIlF1Ynk3MyE2VTc8LE1Naj0rcToqLzQs''@;'; put 'put ''dkMlaWN3VzBnMmQqZ05+YCtKcGQ3RTc6RXtlRFFpUUJqJjJeV1t8OkMvWF5QJC4/XkM/XmMod1RGIU9fJkg8aVhCNTVtcT0zPFFWLFlgdyVbVFBwYzZRUF15RFFOX0pYM1kvQipRU316TlYpPl4pZk5daVYzPiM0YDFRY2E9PEt+clFifiE2dn1KK0hod0R2Q3NuVUpUbV9EQD16NVc3UGR7TlZP''@;'; put 'put ''SyZtMXR2b31GO1oqYHs/VEsveHtmITd1aTtIbXk9X0h0R3oyaCpoUHw7OUBPJVpFUyV2bkltRDohXjJvUTBoQD9qSnFuIjhEQCJFPHg4OSt6UGpZMSgjKjBVSnRFJTdiL1hhX2A/JEZMSDV0ejZDUTI9T0UjMXhBQjB9RmQobDIhckRmNEpSTncyfipVQ2MjQ1RQPHpYPX5mU3lPazhGb0U8OH5t''@;'; put 'put ''KTpWZytQO3k+fWhlclZFdj8vQ3JQWGVnSUZuUnJjZTtHX2I9TDNUWmsyfS5ZMTE/JVd7WlhPSDByOlpqNkhibmUsOkttMmFCQ2JodDA0azJmYWZMaSFbUXcqQXRTLmtfPEkyODdSIUd6aHFMSVkjRmxSb3ptKil5eS8iXX1FL3t+aVlSUmNlQEJpXjFrcXRJcFNNOjkrbmY6JlNHYzolT3RqRmdJ''@;'; put 'put ''ZXh3TV1XOnA4eSJ1fFAyYmk6IzIpKVRhTVZhVFs4XWRWSSZWU2A6PXYlO2pNR2IrUmJxJUhFX3V+dHZyKFFGRFIsYT96KyhUaztaKW0mUU9fU3Y1UkBdXlhbaEYydT4ua1JnaXxHZGQiVGVGK0lQV1FBV0I7QXwpXUBJITllRko9Km10RlQmbkBtWDJVYWp8e0I7TVUifSkhXUFnNjkuUWVgSD4p''@;'; put 'put ''anNiWkVxYX5SNXQ6UHR0eytrOiR9MU43Oz4sQUlpO05iV2h9REtsSD9LfTVaRUVDcFh0ai9NJU49bEt3UlQxSztLYDx1R0ZOcSxAVm5eOCx0Qn5zYXhCRUs7NHRMXiVaLHp6Tl5Pb1c8Nit0IzZhdStefUdWJi96SHVTYF5FIXpEQjAwJlhaWHFVal8iTDwuRF41fC84PnNsMjo+ekdJbDk+S1JU''@;'; put 'put ''PTkkaDpzR3dlaEpXRUBrQUczR0F4bkp2ODdgVig3MVhJJTNrO2gmOkI+WnFUMGt1Zl5CS1tPKiNzaysmSm59PVo/K1RMR2YlZkNJVH4uKDJ8XTpjeHNNV1AwNnA3V1tCKXwyNX5OZkgvLjJsQlYjb31KZmZKVTl7ZGReLHI7Kz5QLDhqajpIQnJXMUVyXnVXUkldRzg8c0Y0TXl9JitpR2FDYG8z''@;'; put 'put ''Vl04OFVXUVV9XVU2UiRQfGw9O3BpNC48eUI8QVV5MDdkMTRsIlhqUFl7XWtKdTssZmQ/eEE7diYiLDMvLE5feHpEK34xdFd2YH1NV35kJGtWb255UCxlOT5wOHJLJjo0UVpoIWY5UmJnV2I9Qi8ySi9qez8qXV5lMiYhS1QsNHg5czRVKH1GZ1tGQkchIX1ja05oXVAid1tQcXxkfDFZIzZmRUZD''@;'; put 'put ''biZObSloTVMkVV0+RnI/UzRvSlV4T2A4OXcmc050YG40UCU4OWlaJDxGd3VxNFl+JCxjbT9FVkwyUD1+Tm5iUHhvNnV+e0o0InN0bHtrXnN2PlZvJkh1PUZpPUhLT3VVW2RhS0F8REZQIXZENjBmSUZ1bURveEtOfHNoJk86XmcxMCVpYSghZXczT1Y2NV1SL3s1NWZXaGUhenQoZ0dee35wIUFR''@;'; put 'put ''Qjh0aTFmIyZFcnRobChEJiMqazRxYEZeZiYofE0qYzdNdkxEe3c4RTUyc0x6U3BxPCRAOWhvLGBVdyZYfmh2SDtEam1faFJ0c3g9ITNbXkNIXzNvNUdKQ3A8bVtBYnZ5dzBBSXszWTNHbzREfm99MzBNIjVbczU7ZlpqW2Zac3UxfmEueHkwaWhxfkpAWFFoIjIhenR3UDJ6PzB6UzZBRmV3Pk97''@;'; put 'put ''c2xoXmVobk52fGA+NjJxaDA4Kl5rLyVheyVBTzBfO2RrMU1IM204NV1NcDUpfitfIXlLTl5wM3xWM19mRzNqSFlkWHVkVE59dUtmMmdueW9tdCZAQz83WUxYdTlgKV1DS1NnS0R+MzAsRlJ3eDh6aSxmZzl4STNCaWtCX3pMVGZoM0RGNE90XipDZXI/Wk8xbjo2JSpgKnl6VFQiYDM4dihOOkJr''@;'; put 'put ''LCZFX2YscTl4UG5afnZSd2BEdFg3O0BFPUojPUdbLyl9KVZIPW50amNubFZgY1pbN2ZJZCsjRiVdVGFHSSgrNHY5WzN0M2ArR18mOiJgUSFJP2MjQlVoQ2pQdG5yZFBgIWh0YHc+SnNXQCQ5OnwkOUNgdnEqR0d5RSYjbDZkMGBGTTt+ST8oYSljVElSMFtQMCRPVjsqRn5DUSpYUDRvdXRLM1BC''@;'; put 'put ''K3tsJWhBUCs6ZzpiRSx7T1lhTW07R3tQfHRJSjo5SXw2QDVFJWV8VDdGeUZQP1BaJjQpamNIRX5jX1J+JUU7YjZHan5aYlpyJGxEcW95ViswOmQrLz12UWY9UF9wOThweVpkMkd3LGFLJS8idX5KQmpiYHJpI0Z6Q259XTl8ZlEuNiUwPTF2SUtrKFJ1K3g+VX1ZZG42a1A6fWQ3L3d4MnIzfkwv''@;'; put 'put ''LClnYVI3K0t3enEiNn19QnorMkdEcj17YS8kVFguW0ciRyY7Umt6OT5uXy5jXzlNeVUyW0YpXnc2NyV5ZHd3Tio5VjBNRkE+LzBiOj5MT0FDbGdPeXNeZ01jRkp8fTR1VSZAT35mVGVOMmN0TjVSbHRXTURtaD1FKF5Mels4K15SLipHRj9BcjJJbm1zZV1TRSNNUEI5NEM7ZVJmVCViYyIpKEkk''@;'; put 'put ''Knk2JkkhQ3hrPGIrYlp7YVFrfks5JUdhYDwxJTBzPWRGRWVDa2xTS1t9P3JLJi54M31teW0qMndZZyUqOT5vSi89cUBrQGQ+RHlCZWhdRXcuXWNhb0xJcHE4L2N9XWtEcmNRbGEjQ0RXOG12QCsyelozbG9URUZjRSRacCF1OnRFRWwvRTIrdi9DaEooRFBuM1htSl40e0AjeHNafGhELHN0P1k2''@;'; put 'put ''OVFhXnJacHxmenwzUD12V3s9RkcyIzZoIm9RVnNQPWQ/V0R0JmtsJUspV3k7flt1Z08xSDclJmM/LEw8NzcwIyQvPlQvTFE7JkZ5QkFLMkk+SGtFS3lfMXMsWyIpUnsoQ3FHcVAxbkMxO0F1KWJZRXl1SmhZcmo+aXBvMjtyNHhfW34wI1Eibjl1dSRmbTZfRzlCWjhzR3Zqe0pwRVBGdFtRQkky''@;'; put 'put ''TXJxcl8qWHtYTzgla0hSUlNHIz13ck51LFtpWnM7di84fkJXbzt7S3g/RUhXU2VaZ0RudCYjO2RsU0lwSnVASjNRWTRvX2V5dCZFUkRQTSIvMmwrZzojN31JYCRgIkZQOTtoQG8iK19VWmNTJlFLZUNwcEkjTjtCZSZ+M2g9MnM8IW12ZW07c0J9aXg8SzJETUcwbkhGI0o0U3BxLHUhbCVuZ0Q6''@;'; put 'put ''fT1+aEovSX4iNltJRzldSCJrczNzb1c4W3csW1tiV1hhcUtLYzxIU1pVN25CbVV2SkNyQlBSL21WXkJ7eF84d254dUdCdDUqLkhjRyNUZGcyJnV8KHdMdEMuV0ReUkdULCFFQ2t0T2dURFQrREUvUWE7akBdMzJxJVhMYng6aF9YJiZdNkMxX3M/U0dkJFZYO1QhJXxnSEtOQVNXWDsvcjNAdnt4''@;'; put 'put ''NG4hSD9KVH45a1BhJE1RYT59R0tnIVteQTJBS0lrSD1fckdpYjVNU0clNGlxVn5mJHksLlhYd3poKktiLG4xTitCOTpEZDd5dmtaN2JMJXRnS09yYlQsNXUkOkBre01AQmEyWEx5RC9Xc2xmRztSRmZHfWQ4WEk2d1FHYWJjbnYocjBGJTRdfHlkSnYxa0hPSEBkRCwvYlY5fHxCUXw+cCY5Xm4k''@;'; put 'put ''KW0ibyJGN3RDZEJoQ2ojemZtVk1XYFtHRXYlNFNodmVEZ0tsTUcqOXVKSl1NO2ZxVXU4VE8pYiMhP2tIR0xAUk1SPHckfThoeT5bbVUjSVt1RjZWXlo6O1JkaHh7SV5PZDU8MzFTdkcpUHBTOFVPRjdTPXZ0Mk5fc0B6YGpFPlBjY0d2M3dlZy58PGdCNzB6XXloKGVhJk9qZ2M5PUBZMjsxZ3p3''@;'; put 'put ''aVZ0JFpRLH1dejhQYVE0TlkxKS87dThHfVo7YWY4ZnVTMl9seEVoblNeKTYsVGZhenM7bkteTFtrdkE0YTltNGk1aCZOVFgpcTAuW1QmPihsPysuUlYuWlNvbCpzOFFxaUM3SWt+WEF9ZUZXSFZxY2hLSnZeOUJNcEZDUlA+Pmt0OygpTHBITFcvTyRHfDBpO2habis8MCM1OFF2I2RLQzI9biR4''@;'; put 'put ''NE98SUI6Xls8TnxFeG1AeTdreVdSUig2bjJCM3kiX1hTZW5yMC87Pn41WmZDcXZ3QHxwZio3RjFtRVsrbWV7KD9OfC94SmFMbSszJVJKbTJTMlN2JSFCRkUuVl9UVU9uRWpWUSFuVCNFOE9iW3RaUjhHRUhEVnYpS317UlVoVkMwayRZdyZTTjM/RHAsbjczdyFid2lSfDN3JExERD09M1sqfi9L''@;'; put 'put ''TlYuMWd+JUdVLkAsJjJ0cUwzYnsrZ3AlYiV7Ql1CQGJTOGlFWCUkXTJHb31kVXF7bUhvbGZPM3VyJmAsW3EkemF7ZHJ4WnFhYXRGQT51bXw2bjVQUyFHIXJSKUV6LylJQ0VQP1BdTXV0USZpJjRIRjBlLHViUjNIdU03Z3h1RltrfjR4XXVqfiM5RVshfWFuTW5sTTQsamVRTG0ufD9RX0s7W1lq''@;'; put 'put ''fjVEJj9uPXRbbFgobTtlYDpFPHN+UVFgPDNjbn5jMjtINHhhUnBlLlcmWlVTM157InY5NVZAbX1rdH1RQW1PXy9RUUdhYCVQL0k/TEFeXTkkKkRvUkBINz1BdkpRNFM/OCo5Y0RLPXBFa1slcTFPNXZJQ3RyJiJuLkYkRUB3ZGQxTHtCdXwxXyJ1cH5WIUQsIkk+KD8yfGpLJihOS19bWEVAQ1NC''@;'; put 'put ''em5Vfk0pTU5DZ3FgN29Cemlqa2ksJGh4JSkmLFhWPFdWOlZVeCI0JFY0OEQobitUK0hlWHppfCs3Y0NbfChFKFs1b0U9WjdRN2FjVnhlcjRYLC5tI2hjSm5BcGFVLyE3Q355fGtGOFA8S2ldUyJvVCN3Z2M/ejhxdVBzNUVWe3B0eHxFU2VjUUZdfChwPDBPNllyfCYqTXhjODRtek44bnhsUT5P''@;'; put 'put ''SUtzbjhLLGJSdTVdfmdEdT5haGJGMTU6d3w2dzA0K2NJQHdKK1Z7bzZCWStMUi9laz9SfDpye31mWk50VlolaH15O1F9cypWRiJobHdKcHI9TG8qeElPImBCbVRtTz1oPkZoajUocXB4LkxKaGVQP29QIVBBJiIpaWRGeGZZcjlpXUFdPEQpfV9UbV5zIiRPNHhqQjxEIj0+fSFGZltjMyZ2NDku''@;'; put 'put ''cXxQSHw6eFQ4cV44ND1Qc1pUeHcoJFtwcjA/dk09dUw5M0UsMitFSDA4MVhxV2ZhTHRfL0M1TWNAd3RKR3dOSn5SUCFzRUMjWVhAR2lnRDp3RmFUanZXYyJtaXNnLzV2KHdRP2FlLyE9N11TNlFtSTdjJiNUZlAyIzFFOzx+OGwiZiF7MXFlXSNNQCIwbChObUA1PkxQQmVqam82Yj0zSEgqVCRJ''@;'; put 'put ''cVYvYng5PSNeO1lHPWxEOV1+RFdeSSIvPT9XXnlLOVZTYWJzVWYzN3hnWTZGODFbNTdhQlVtMiQoeVtAMyxfSTomWE1jW0Q3UT1RemM5KHIvWy9bNChYRTZ5fjI1YFk5TmdVWS5faGE5aWYuTTxjXT8vW3BXWmdyYyZZYCsjMEJkKT8qWWlJUn50MlEoKEFHTF1AUk9Ga3QsbVZyOEYlfFQscysm''@;'; put 'put ''L3o6Olh9bFoyL2EuKWB2Wjt+NyxvU2owIW07OkdDTml0cylhIThHPWVpakd0Mj5PMHBHLD5kLlBFQEhmLnJ6WGRnSk5xSDwvemFrL24jdiE3QnlAdVlOSU9fc3RsPy4vJHpNM0d7fFVnaDIlbCJYNlY9dkdlKVgsRUpFKE8iKWImOGI8bFcqOWRbOF1MMkp7dzt3PiR7MlQsNEReOywvdj9SUCtg''@;'; put 'put ''L0NpaWNyMmUrcWM6WChERm07JTpnSXIkP3FgXlcyeF4rRl1qRmY1L11lcGE9PG9kIU5gPm9BMSw9NHBLQzwwRmp3PzlpSzllQSMoNT1SdS8zelgmbEtIR1ZJWVteRHI1eG0kentfJVVmUFRXWC8qIzpCKGwxajkkUzZ2KHYvYDBiX0h6bXFVLkgjakFhS2xqKlRGdEQzcCpBcHEsY1pTVDYrVyNk''@;'; put 'put ''b2BvTEshbVRIOSR1PiJRYV0ycFFnYENeNU1OPGVeTmkiOiZKOnltKHtRRkxxQ3NxK0JYMFVxUCVhJFZnYDEzfEBPdlpVMDduK2NjMUc1dH1KSWgyMlRjZWd5MiNvYD1hMnBVbTgqIjU2JT9FOiouK2MqfDleWVpOdT1XLEdAZHVbWFRfWz87cU99bzwodzF1ck5HRCQ1LlRYYGlgKmc1QkpjWnJv''@;'; put 'put ''cy9dUnBha1UmOSh4aFpWRGA7I3JkX3NWTl4zOVMlN3BQLFFLTSt9TDxvRDRkPVJaczMwcmNpNWB8OS5KfSgoW3NhVjZvT2AuOTJ6fkcmZWdbJkpXez9CMGxCYH5lVyIha2gxLjdwUSove1djfSZHPT5aIklIN2tyWztYN29beih6cWZ8OkIlVEVwV3UzXmsjSHIuM0k/RUx6cT5QP0ciI1JtWnUx''@;'; put 'put ''JlIuTkcjTSRNK3tDLGwkTHFvclYsRS9Fa3BdZ1A5VitzbmMpXj1rJmFqS2whakZne3RteV86VTxddEwwUFFnVT4rPTsodlg2fXRKNlN5ISl+aUtNUm55IVJ8KCM0YG44dXhZfW5qSWowUTgxd0sxT2lMKXJJPTdbNyk1Z1B8UTJnQnsyXnYhTmEuVzc7IVt4ZTh7SFh6RTtUPUJUdzNwQkIualZZ''@;'; put 'put ''ZiJbN3o4QVtMWDBjRyNRQGY1YUFYOTIrXil8WjxmX0t1RkZWVCFaNUk+eXVmNG9ETCVlKFJnbklaYSNJTXpYXTJzTE4xWy87WW13YSkrNUx7dENwcC9Vdkt8Vy9kfC9UUWR+WWAuQSkoYnw2YE4oeXVRZSpVRUlsPH0yZjk7QSNwOipMM35PJkMwVDIyNElvViZ9Uig7dHt9JXQ7IjFXRnxfPjJh''@;'; put 'put ''X3VLYyRhJCZofHJtVHtZNSY/eS9SNU1zT3QvU3wybnlfcXxWKzVZZWYzM28/JF85R3FVRjYheDMvXlU+aEZOc2M1P1M/Z150KD9qWDVueUU4I1RzW2cqJWg7PkF5KkdWL1hbaGZ5UztOfEg7Y3w4PilfXXA7Y0ZqVDhRMjImVHsrfkEhbGN0cm53SjlFZHJhSklnaHA1RnsyUT5LVCQjS29vSFdv''@;'; put 'put ''QCtSZHVkY1JwezF9Vz5NfUtPcVNjRTl6MV5GX0koano4cVFpP1FzWzBZempHSGleL1t+VCpaMmZ5d04pTiZSO01uTGVYRDFKLmNSTUQ1Y3I6Nno9ODM4KUAlLmB3RXdkMUNAb0tKN2h2MHRheSxxVSJdLD9vaTMqMzFXOUg/OVZufC4vNmVgXlJ2QXI/ajVRP2JQajJWZixzdlFvYzttKl1PImhG''@;'; put 'put ''PFZXa2N+VC9dT2E/OEw2dyh1X0IuTTBKaX13fUE4XSNzPFIzUWlXYGIoT2JYfVMrJnFgSFkjR3wsVkZhail5XSVndCFLZy9BaV9KTC56fjZyPkNiQ004SWZiaF50TDE7PDFXPk9WOCwwZ104TlczenY6JUlXeDRhO2FNWSNTV25JLC8iPjRZMHszKWc1SCNvN2JnVmEobyE1emJaR31zSUIzcnRX''@;'; put 'put ''UjM3dlRUckxeJnQvUWFWLFEmQE1+YE9yKnY8QlQ/LFI3a082NUw7Rj19YGEsW058RjVHLmtVfU4mTDx3KXpCTEhwVENPTE1vLmklJUZQJVlGeSt2aTkzel80JTB8Q0RZW0JveTMjPyRWazwwUSo2KExBKixiMURRUUN4Z3BuL3FLQzMhInxzZj5UdChaO2cxT3hlciRCUC5iMiUrYCZLIy9WUllH''@;'; put 'put ''WChfYUF1czU+RCNuSlVFVCF6KEcxcHA0Y3lOPHlQckQ8IVcpRyw7MztRRGcjXWwqdSxNcjhyTSZNSjJdQytvXlU7V1N6ZHRKfVdDV0o8aUA7RE48XzE+ZUxadDdjb3RjLzY5I1QmfjtKSTQ2Ljx1R29YcipATjF+UmBHZXpWdWUjbikyXSpnIXdWPzRKSnBbLGJzNlZZSEltflA4LGYhUyZrOk9s''@;'; put 'put ''W0JTNFlEe1pYMGNhZHlLL2tCKU9IVDFWIyl2OUopemUhUmhfSzZTdWl8e3BhdH40ITFLeThRZ1tLXkZBPyZSdDh1P3FAXnFyUnxRfmpgJTYzd0RYWFJmaVY4b1VdXTAycThANWp9U0IzfGd3YSloIiRdSTFzSVBKL0pPVj1YJG4uSX0oa19jSjwwYSk/Y35vRWk5ZEIoeV9XPDBMI0pbY3p2InxL''@;'; put 'put ''PjhrRTtaKTlTWngxWThERVtxcC9tMnYpT2kxJjZJeVRyPGZsJmJSZm1Ia3UlTVpndVIlVls3YHtWM3c3b1FTQyk0Rkoud1NdRF1yIXZNbl5fIj4/RHphLEJzYCREal58Tk4wL1tTKEY8cFJLUElDNGQpeS84OTVBY0hBWUphRXV4VUowZm09fChNQGZmeykpIS8zTGBrNFlALDIsL218fDV0WS44''@;'; put 'put ''TWBWRmoyZGtzXn1iX2BvXXw3UiwyWSUrI21McEF+QzApNXF0bltUMFRXeWNEaWdudFApaF5IKCFSeUtgLlNdPV1tQ3tPZm08PFEzYmdQM25MQyZiSExqY2RTL2xDYS5KLzs6WHg9OlYmRWJFUXRdIkV1YjQmTCk9ND98Q1gqKDpaMV5pWTphOjEqfFlCfTpCKDQ8c1ZRRG48d0MpTihBZU82dTtI''@;'; put 'put ''ImUsN3IlOkAmNU9HM101S0lTMiNiLHBmZnk5L3tub0NKUGRfJX5POSVSc0p0TGRQY1c1IUI1Jk8zMyZ+VmkxUDh1T3Z3JjNJaFJYRFVKNylvOjJ6TTsmOTBJa2RpOlQsZVtENl8jdCpOMnooKmZqZFB6I1VtR3M9NSgzOWA1ZUJgX3klVEB6KGx4dT5eTVN6VyJAMWczRmJ0ZTRzVmx6eE1ebnsy''@;'; put 'put ''fj4zU3lVbDciLFR3RVh7JT8sZTwqLDFGTTw3XlhoW1t3bHw0VTF0IV5mY1U5XSphI3Vqcz8oPj5HVWUyISY+YH02UWZneVVAOXBHPGg5JTJ8M0UiVV1wU0dmSDs4UiMjMi9BJDhzaVZ0d2E3NlNaMDdfWDFUUWRyQWxpeGE+dS46aS9MVzlRI0ZjQk58ajVedT1CJCx9L1BrWVA6cD0+OnhQTE1M''@;'; put 'put ''cCNhLFFVOiZ3bVd9OV1UfVdYUjJERW4jU3J7eGszaE8lVH54UT5HNzg/RHR7OigvSWc5SH0mZm5MI1FkWV54dCZwPHJXZ0BlO2FTPmI6KSZ8QjtvaFQrQzVuUkEwRFpXVERseVtla2F0X11yJXBbXm1dOmRCTzAuLmNjVWBWdjZbPElsdTZFX3o/Mn4uOHJgVGNzblJWS19LdU1oQC5zZjp9LDks''@;'; put 'put ''XyRtMSFKfUpobDEqJHttbHQ8PFo7JW4xR31NP0FuWzhMSENZK2puVjxqTmYxSHVROGZMeC83WWNAUW1SOCRAbyR5SlNyVzpvPVUxL1ltPVA1NUF1RCpfb01yVHY6Zz5qUUJOMHFjSHVHaCtdMEs9Oz1gZ15tSHtmOHlsRlBmO09tTjdTe3BSPFJKdVI3ekhFIjQ3cCVOYHs8NjBUWVRSXm1PTGZi''@;'; put 'put ''dWdLV3d3RlNNTC9PIltMWkRENGZfKjdMb3BYQ1Z4PFNqam0pflRedk48dDt1Z2RGWFlDcGpOR1Z+Qj9DeHReeGBzN21dVEs1JUVlKSgqcEN8NDRNWiYrTU1bZG0veDF5OCQzQkQrOHZDcmZKSU1TZnwxX2BEOVU2WS8xdjkmUzVPaTRfYXUoQzVkJkdERTh0I0lZPk1OJW53U21JYnM/VWViSlRX''@;'; put 'put ''dmFXMzJ9bEx+V25LT1olXUBBMTF9OiZAejdiJmhOKE8qQ1MjclJkPFVxcz5sLmV4YTx7dXZeVV09LnRwWXdMVlZwP1VrTX5VcVg/fCNpcEVNS1VNfEtKcTxPYH4zQ1p4eS4mYi5lWUgzQj5lOSZHRXhqaC8zKnJuPWtnZUNhWjhBZ0pJZFBJJCJMKHJlLlQoZHE5YnhOUkg8aThhSEh8dXleeTxS''@;'; put 'put ''aTNiW1pvKk1GRWpqfUFbaV5QMjdPWWRgZD51ZGwrPFVRbHBzfTwuOWVOSnc6W3NLPF5XczVhaENgbjd2X2U6aTdTN1MsMVFLVHhNVXx7PVtZNTIvfVZqfTtXLnt4TjZmLlN+X2t4NXBxITUxfkxeXixHKGx3M0YzMkxEWHRvdTxsVUpxdnpULntQbT09VHk0Nkdwbn41XiRuZU8uWXNjT2RYVFIp''@;'; put 'put ''KUBDISlZR195XURUUXgua3JFPm5ld3pGY2N5ZGtId3dbIiJPYSxfZDBiRUNGRiRqbWNsYXdhW0dNcX53fEN5KC9ePyQ4KTcvZmRNdi97aHUwfiFKQGg8SHxpWH1oMnhjWnp6RmpCR2AxTmk5KSMpdSIhT0p5SH1mXTVYLnQxU0NMdyEvZU5NPmtQd14uTCUwX3xPK10xX1luWyM8bWVVOHNtRU5T''@;'; put 'put ''VU0lfUF4TkZudD43UyZmKDoub1I5ZTJVTnd9O1IjMlkhSX5edFNsU2MpI1djX1JTQXJUUjNtNEVtZyUjIVVYfHpzWC5DUjlqO1Q+fmw3ZT5ZUWgiJThNIiguZVkpdT5zR2hTIlo9ZXR9YyNgcW5lbjArKUBAPDk7QFJAcD8wXUNGKGgjcnhxTyMsOzJpZE51MzpaNzA0eWkvMT9MI1R4eE8hYUR9''@;'; put 'put ''KGAoU3c4fE94IzpzdDhSKS5vLkJ9TEx6Q24zdytTdk01TyImJkd8SHZ3UHp7VGk/PnlsUT4veDk2SEdER1Q7TXEiRDtaQihHS3VHKldrNlNeKj5MQEoiWV0xQTZvWzB9Zl55fTc5OSQoKlIuJTUwNilHbz8lWHczTmlxYUMhen1eelt7ViViTkBfV0M1MVhwPVBYcC9JQDU5fCluMW5pWDUmPTdr''@;'; put 'put ''Jj9iP1lBQSpDNmN+TGd4KHx7Wy4rcytkJH1rPkhneVcrekB8ZiNIcXxMdVlzfGBebUhLbiYiaChGLGMsJCI2Mj9HN1A8KUhOamlGQ3ZgUnxWSFJYaHh4NUduX291Z2NLRCZ3Un1eLkpnfTpvZXkpZ3xUNlNIOk14YCVdKDk3W15ta1gob1U6TV4mMXo1YnYlMD94XklofUh5V1YrcGM7K24rPnxF''@;'; put 'put ''KVYkWS8pMUN7aEAvMmxHbyJ0Olk2VSxJIipzRVt5MGk+Smw3KDYscjBBKSg2JVZeUEdYS1Y8ejRbaGFhdVd9Rj1iOCF3NHRKVSNRTERsTk1Kb0NabHJ8JX5jVUFBJnMxWWFyZVZeO2VUcCtgKmtHQ1J6OHtDVH0jeW4xb2dlbDVAJmZXa3hybFg3cnlkJF9ISklhTDZXK283SEg1L1lRODtuM0M4''@;'; put 'put ''M2NbcVtWJCthZ2BQMXUuVmV7ZTpAOntlZCZ0WHRTek01N1FuNjgpZitALF1CJlgkVktub11dWSJQXjQ1YnVvVzMhRnB8OWUibHV2eld1RzxfTXdRdmVWbnImLzxkIVdNNShGVyssUm4jRC9LeHJLPlReKk88eC4+alNmJWxaUzJwbHtDKilKK1cma2Y8UXVeTjt4RmsldDxqP3Q0fTFKR0cjV3wk''@;'; put 'put ''L3clKWtoUGovXTp+eFhJZyNpbn1dOSQ6LlNdTWV9WUskbCZVP2gmJWl5M1A/eiglXX11XylXI1p4KmtRJD87dj92Km03QlhYP3hqZDFXcGxNKnJQalBdNSwpbCsvWDY5QTJCZk19YC9hUXRgM3w4YWlGZmskKzl9fG0lfCh9Ulo3WzUqeUVvbSlEImZTPEYhO1U9aE9RbX5fJCpQdSV5L1hWLDly''@;'; put 'put ''fXBvQlhPST4/KXxhKHdLXkxxUyZfXUY8Tmh9Tj1TelVKNEFJZFByZmAwPExGT01tfD09ckZGM1dlQjYhNEojNSghfXRRUDVnJS8uNXNFU2kyTXpUe11oL3hkYXM5cXFEWXI4L354MDFbO1lEW1d4MihkdTJ+W195USgoVC9UQGFVWEAkLnYocFdoT3YpWUVZWyxmfkU7O0RKU0pfQk03On5fNzwq''@;'; put 'put ''KWZsbDhmOSRdPlAwOm1id2I6Tm02JWtOUUdTUCkzdm1kWlEoZl5LUTg1KHRjOW1ldn0qQztzPD1mWTlXOjMzW3lZU28uUDt3Inw/WUV0ZVs9fCwzU0lAOD9waWAiaVFmcjBNPD5WdSgxKHdYVVlSOlpiVEI5Lz85Yy5xInBJZXVhb1tQYWZjOl06QTBXcGxFbWU0PipnZipdSk1fckglfkx3QE9T''@;'; put 'put ''PjMrPTdXR0VRViJQVjpkdTQpZiZLOUhoYVJ9Yz9Qaj4pcEx1PUNEaGE7UFUzQF8iNU4kIzdFWkJ4OlI8b3o0b0xlUCxkIVU1JnBETk8ufCJ1QiJ4dj4+TyRQMCZNWWZTcFdZI3N4eDkhaHEwaW51OWhadTNLcX5FPTR5RGAzLDFAek8pYEksQShAYHgyeCh3T0o+MU9JfCVTJDEiMXRRYV8+LzYv''@;'; put 'put ''JE03elF8cDxKb00rNTsoL2tnWUBmMXRxc0BXSlleX3wpazd7RFs+eTlFb1hpPyRed0Q4bmwrOEAzYHVOXkNoanF8JmteYVQ4LnlCWFNpSitLYW0lYlBMKy90Qk4zSzFnem91Mkx1b2cqWkUoQE89dEdnaXlbTylfaEx5dHU5I2U2Uko0NC4jQkk+JGBsI1hlRXxnYGNEOlNKJGNNTiwhNHAwS0wl''@;'; put 'put ''LnMrPFZIYUMqeVR7NExqO3RgJCFwWHhtenAzdzVLNChKI1VsQml6NF9TbUV+OkZOQVVlUGI+R31walNRWDQ1OD1fSDtaPE0wczBSPiwzT0ZUU3kpfmJ6SipMZypqQj8hVWNVbCRTOCIuNVNSdDc1TlM0LiY2cU8oTCVYYDYuPD9+SjpEN1BOIyhoWX4lRWZXfThDck5DaFpseShvfHw9PiIiVDoq''@;'; put 'put ''bmpWOF9BQHxXOnUwa28iN1RqTnplUDJfR1grbEJzdVspbjNKbHM0VWdGMihnWF8zZCQjYTsxWE47Q3BNdXNaUWZnISVOSiwmTUhafUo8Z3ReKGo3cDVzalRPV1ElViRFWkdvdWYqajZFMC8kOnR9aWY+U1pIYVlsKWRNeGZ+dlNDLiR1WCpQJTJydVhHaDBPQyJ+TVI5cTwvLFtbKHFyUDFhSGJZ''@;'; put 'put ''WCg7IkgzODQrajk8YjR7ZzNxRlNAYU9EOStfbnhNX3ZPOlhlP0pBLF41fntnPGNRL1A+azMrN2Z0SzpDZm5CLEIrdzVXajc0U21OOiZJLE4yaUlKVC9LNUo9Vn4+eFdSU1hVLCVfPUZpQWpGOS5RUUlPN2wwJDhRaGZFIihUVX5IPmpoOnQqUHohKXFtfEA9TXlaSSQvVlZ0fT1WY31kT2NTTThl''@;'; put 'put ''IS5vVyY5e3FRZl4yN3g1dmBBR2BhdWs7TGRXPSQ7JiJ2RGo0KH17V0IjKVR6KWVSU3N7Z2tPNDRCV00sc1kmPEZaaUoyK1d2KUJialBjTmdUSSwmdHEzbE92T1lFcVdFUCFWQDVVZERDKkFXa25zWlhYM3grZ053LCFXbz4yQTgpYTM+OjJCaj1SMlhNQFZhIi81PVdKXzJwKyouI1R6PmUyeUdd''@;'; put 'put ''ZXZlIipuO2p2MGt6JTVMQjNiOU00cEpYazg1W154SkVhOTVfVWUiZ0ZhQnssSiQ+YV5AMEssbHJHPjJyaTRPTyNdPSRtMVRvdmJ7OyVqSEl4dEEkOS5tcnQkdV9yJG9zMzlQcDdCTTFXZDlqJXtRVG1xWD1eO25qVlE+PXp5flg2UFUlJlVwPUBXPGtLWmMsSnsySikmaWNOPigqSSUqVyxWaHo/''@;'; put 'put ''Zj1hfl88KGVKKl5HcFpkKGpeSFojfVE9cW5CUVVsflMoYjBPfCNJeG8uTG1JUHNdXiw8YiN3bE5UKVlTUE0xc28rX1JLajkwR1swKjhrNVBhT2FmYCwmd1lwd05xYE5KcVkzbUpJUTxlWVBuJCRneDVuRS93T0w4RkBEYG1LX1hFais8S1t1XyhibnxlKFhsTkokMz5eczM+LldqeVY8cmR2RHwq''@;'; put 'put ''TV1wQkg1YCMhZU1nZk9fVW0xe2FfOzw/LyMjcVhod3tdX0Y1Qj9dZ0s6NjpOV2AwYCMmfFRZQnRtM3c9IXNlUmFSNl8qSSxrbWwoWVJJeDMsX041cFhlK2o9W2NhaDFFSHsrZnlCdlsuK2pvK3FjI35eSHBdaH00NlguLmgmbENEZTxxNFdvU315LlRaWDhHUSh0Nko/d3JaY317SCM1OmBBcWd0''@;'; put 'put ''UG5oM3xoMlgjI2BtOXJSKnNhZzcpWl9jbE8xYER6I2I5Wy9mWT5eUi5mUkR9PGt7Tm9ub1pNJFRFO0olel5tMytkQ2xNK1JNVzB4VyY9bDc5LFdjIXNCQENyZS4wW2BnPFlEZmJGd111T3FpYElTdUF7WkFhLyh9ZzQuNUM/M0cmUFFEOE1hYikvdlVZMjhYRXZIJUlERUY0NFt1alRsdXJDPyFJ''@;'; put 'put ''JkhNTldRRDl6eD5xJUlbZE13U2lsdHosZ0QpTUheXzdrXlB2T3hCKSYuK3huT0B6MUd7PFI7TTxtUzMjYTRVJFIheGE3d1NzaDtfO0gmb3MuImFVPW9yRSpyZ0kkQlpYJGFTaEZvJE9bR1c+XyJJTXtYJGEwZGh+OCFCJU88ZE1NMnREe1pjWTR3aWdLTTVdISNKPF4qS3VpazMqZmhLUmUia1VT''@;'; put 'put ''IkNXaCJIVDJPPnJwYStEOTcuVWcqYGdnb2FZNWBpRVd5R35GK3lqakZ1SmZPbHUqTkxxVUF6dCZxV0trUCo5RGJNNzAwVS9JMWQ3VilFeWIpNmBRYFJqWntDOV1uVT9PYUlOK1JGLlBuMj9tVjBuJDJaZClxTWVnOTs6OGQ8LjRYO3gjV3FWbVd7ZXBjSSZrRG9rX0xqK3U2b3gjdTRReGB2Pk0w''@;'; put 'put ''TVE9e0FTemEvfXAqKEZANWQzeHJDQG1Re1AxOUhoeXddL04lPnFQQlh9O09CY3YuOUBAWDQlXjQhcVRUMURlaVNNLjpYUyhNbE8pVlRNTH5EYmdHQnpXaiE5XlFhIWt0ZzhDZ3Z+KzxkSm54cE1MLmFKYkQzSUM2aVcmZzk3NFkqRzxIeX4zOlUpQ2ZAM2VvVU10MUlTIXE7azBNTjhET3U3LklX''@;'; put 'put ''LllpYChIVTpaOFtESF07UEhtfF1ET2R7JnArJW9DIm5OaiUhZShuKyY8OEB9PERMI3F5UCQyY20hcnRgezhZS0Q1UXFJVFM+dkslcSh+cExhSykwPVZmOjQ6NzIoMEFhOT9mUVt+bWlGJm4yNXNgeyVSUkE4Sm9fNncsPyQ6bXpGcFsxaFJKczdYbmNZemBFUiElYUMjUC5OXjpwZmNWR0sqcEdT''@;'; put 'put ''SiprNV9PLyY/Lk8ienVmeCpDWGl4ZWMhalFFO2l+Q0gxLCxCZTBeNmpUOS5PJXI9bG5PNyhscGNHT1trbXVTczN5dW8mbmJJSj9VVEBLRTk/fChLTVtlI35qZFBtLmZFNHFjfWo9ZV0qe04oWzFpO15lfmJHfTx3ZVo3LEZ5flJPY25IbUNfYUtITl8sVUxGYExnQFNjQipHXmQzdnMwY288a2l2''@;'; put 'put ''R1AvSFFqSXo9QDkzOnMzdjV9dWFDeHEmRyVFUTZvVHdzXltQSk1gPj0vbUlwJntXfEwsJEBqNlJ0WW85VkJSSmg+QlUhNTRwb0NjQk43XldTTWBQMTdnRG9QQSo1LEElQVVCTTxbUEdgKl9EO3EpZENMeHZxTnpKdCN+P1cpNyk8Pz5pRCRCaih9XnIqMCt3eyF7cjtLI0JrWmBkQHA7PjBRSjB8''@;'; put 'put ''Qn1GPDp4JSxZSVBCVEdDZXgqeiFvVXlIOnI3OSRPJW9mZWFbdVpBPUcrNU5eSWljNjdxKzpybkpGPy4zNWcveXsufDt1b1tFbmB4L3M7e3hHRj0sSVQ5ZS9HZ0dkYVJhKDd3Sm9aMmwwN0MwaXhqPCZlKU1tSls/b3F5QDMmIiZOYjRIY3dbQXc5eztETkBhI0A0UWYoPSpEQjRKZDRrM1h8fXB9''@;'; put 'put ''eyRHaEdTXkx6ezQ6Onh+MWlWQWpYWF4qIj93T0BSS3g+Oi91UWhyaF4qVFUkSE9kISZVImJWIV08e0B9OTVyYFhnazwqLCV0bEBzb3d1JnFWM1pnOio2bj9NbENSdiImMzNoYkUoTWYuY1ROOixdWSYmW0tqIihYWTleYywpbiVLXyFqUlg/cDk0Ykw9OXVkU1swb0EoJXdELH5IOGpRS1M7cyM6''@;'; put 'put ''JC90UFQ1fXx6WU9sdUdhUVhiO1BrKyFfa0cjN3d3QT5mNytqWzwpMlpfVzhJPGpCdVMxO2RyI3osV3ZsV1VxPUN9Wn1GIXYiO2kjMyNnelprXiVQM3o3KjUvOnVdTlBoZFJHPWY/W2EsUFYjY3s7QFJ7UkdtZVYsKGgqNXBpTFdfNzlAYVJPJmJbM2xrd1gxR3tILnAlPDM4ZFMzbjdNWV5+dT1u''@;'; put 'put ''S0x3YVBhNjNlXl9oakcie2Q6XzRSe3xMSFZFbCtXbWYwb0lENTpEMlFEdCRpMiwkKWREPyZGRixqX2Y+bmpOSmhqTn5jSXIqU2J1bEM8dUQ7PjMhaUNKUnhlU2FSeGVxbH45MmgvVDspKnxNLz4hUCVCRkshdzwsLmlHTmckVDBZYUJPVX1xWzt2cDBrKyw7OlYkaWJdJT5LNH1qLzY3aWorUTdC''@;'; put 'put ''PSk1MXMvVHxoZ3xle0VbW1Jiekc4Oi93eEw/VTgpS0htYmJZcno/PUh0QGFaJT16byY9WV1zX3sqTnxTdllpYXIyUG5lPWdBPDIodnlpXkRKIiwrbnJLZGtlJHsrX2pgQEJfJGwsNytNbj1sL201bypdNXZDfCp3Y1A6VFRNXXFwUDdMYHd1LmY1e3s9ayhwPlp6OkBTNk1RUk1VPyU9Niw0VGd8''@;'; put 'put ''W3Q3bGQ1cl9lRSY/c1VdW3wvYUZjZHI8SFUwNnd7P3RLNUVNQEY7KHB5OHZJOzV+VyYxMlVXUX1mPnRhSyY7QjwwNnpTKUJIdV5AankrLlRDYlApZFRmfEt7cEZbRXZTKEpnU3VOYDwsYns6dFREQHBlanNRQUkqUFskPyJWYyMwKW1JLExTQCI+IlooeDpUWnVdRn1dNzR5Pk4kL3hhSTxbakVs''@;'; put 'put ''W21eWSVhYE49d2R8WTFOc1Frcnt8VGt8dz47SWdvayZZRURPaGtMMW5IJCwjP3hien5wMyspL2JdbTghUTBNVGQkKD1TMzwwOSE+aFc4NislU2FvX2hSK3svXU9maGliVVBqdiVDdzBXY0oyWzJ6MmUjImBiaFZrZiFdczwsWCNgIm0pNmVWYjoiIy89Sj9STHgwKUMzbyNCbG5gMkJwViRALjtU''@;'; put 'put ''I29iOlNIeyVCL0x5bEVqZ25OdEQwJHNfeUtIQCYvNSNhUVs9QWZRKSs+YWIqIiJaeXplSjNUVVl1ZXx6KjBbc35YckkodiV+OFlvUiw/c3pJNVc5QSxoXVB4fHQ8JmhqLHJjaSZaWmNxLjgyOUp9YUgzUTAzRCJPTVEjJj9MaiZbfnA1YUxwPUVhTi80LHRARX5JWVM/VkBeREouS34qP0Bgd19Q''@;'; put 'put ''cFdtdEcwOnVlLnZScCJaKTs6Q29bcUh8KEd5LHBtdHsydDNsX25VPlNVTShmLlZ4Kj4rY3ZiLzoxeE5sMGh6Wm55PWtqQnp0LzM0UnROTmFPQ0xURHcoUnwkTy5WQDk0QXpQSERsKFAmKFYlbnp3dng4QnsuK1t6bnE/UWg5UTNyY0BIdjw2VG9naE1zJW5zYXA3YWlPM2F7biRxKX5nVW05Kzxp''@;'; put 'put ''ejBWSGBoIXN6QV5QQnR3JD5JQTdNX01YRnE6bjxTZVRTKTtEST9BUzxPUjwzbnxOb1ckRF5MeHB7aj51OjNmeUQpPyNMOXhWcztOXkE3Vn5XZzQyLz8lODlJd3Qxd1kjZzRQNX5CLCg2YGNmI2BGd2pNSkYwLGksMUwmL0ZGJUNeQzJ2XldaWEFvdFdCXyEwQjhlNnwwNCZDcWUraj9deU1zJHZl''@;'; put 'put ''ajVFZlt1JWB9MiM6UyNZVk1NKStSS2duPF89eVppKTd4Tj89Q21wZEU7ZypkMGJrLyJCcit0ZHEiOTQ3UEJHOH5gW3lbZytESys5VGgiJTRTbCQ+RlR6XUcoW29TYV9yaTdrbDYvRlk1fWpLSFlDY3ptI1U4RThhWT1AcT9IRn4oZ3F7eE9Me04mKndOWnRNTFdGXm1AP3Y9dWZaQFFaVHB3ZSZC''@;'; put 'put ''M0U8N1piXTtINXR9OUYmcC9YJjBTSDw2JUZQOkRaInhdeG18Knc2X0UwQW5ieWdKW2dDW1VUQTZvRHZEaCErT1tmUV1JI2xoe3xjL1U/XlQhMVJUajllYztVQ0MxTkEjL1k0YHg5XnVXQGgiPFlERj9NY1RjN2ckKGx0SmxkPEFpemYzYnJCRDZrLmBVUCRLRmNyWFleY31qem9MNE5iZEMuTzle''@;'; put 'put ''bnwhLllCUDVSP0tkZCxiazNyRn07OW9jRDp6WEppKDxeRXdjKkNqMSFzU3p2MT5NOFcyTSxATDlNNk5BeHlBW1leQndwMzhlK0g6dmFObj9EZG8+JSVwYHB0bD84YjhzZFpzQDFCPyU5L2QoRHZbeztRNz1CfT85dUc2S3Rdcn5bfF5ka0FpME1FZGhzcV5VZG09L1NMdD59M3p3Tz8wWClSYiMj''@;'; put 'put ''PixzfUgmIXhPNDNlVWAjaG8sVSxlV0Y1WldZbzFfP2IjU3ptcUJBVDcvJkQ4b1ouU3cxRlE/Xk0iXnskZCwyfE4yZmZVW21PWjdrMXZ1eENjaG1MRyxbOSFSQ0NmeXhXalFddFhRLngmbW14QkZPTHlNflNnPnJ4cT1JT2djPkI8WGBARDleaXcsJjRrfkA3PEE9dVR+TnVbLFVoZnNlRmJiLEJG''@;'; put 'put ''UF9naHpqVS9YSSR6WDBqVCFIeSM+ZVRsKmk4Ij1ET34uRjhjcTIlSmVFV2l0e05jXlBVZ1JtUV4pMU1LKFRoZTpnJUNgUkszNWVbPER1Mz45dS5eajpacmRlJHQlL3QyTlozTV5VNnRwUng5IiVAJXZRIXF8Zmh1XWxVbj1DWywuNCF2MEg0eUVsZzNqNyo5Ln5Ed3VidS5pJGwyRXpYM3BhOU9m''@;'; put 'put ''P2JEYVtUMztOdy5ycCp8eFU6KGk0MGhmdVAoSzMue1ZNJC5UfUpELCRmMVsyUiQ3UEFrbHxWTm1oY3Y6cCw/Jj1eIzZVYipUITZNK3pvOml+MWA7dmBjRnVUTWtaSiZBOjFUWWlPaDcjdyxKNV5le0NFSlF4OnljbmY0dUBERDtGPn05dDFkZStQTGAzc3Bqbmk9WXZfWWtGJV11V1QidzxjcFo+''@;'; put 'put ''bjZqbkw8U3w1M3IoOEB5Ziwxdjk0QElnRjVgTGlIdEZMPGR6WERYQ0JpUlBeQTljSiRlLllrci5PeF9MTXhVR3t0akR+aGNTS287Y2JSdmF1Wk47e1hGNVpXODMscVJLNnlmP19xPC45ekh3bCMoTEB3aTtYUnUvQyRVNFhSUHI4fG0vPm1ZKH06KjIzZ1YvWTZgVlJuPzdmKkpqb09SWWN1TE9V''@;'; put 'put ''fT1ZdDJURTE3dVh6YUU0TFg2KThKUUFjc0gpMWd8KXVXaXlpNiJLK11ya2RsblBeRmFwPlM5aHMhWStOfiJWJT1tQjNXezEiZVUyL2BZQmh1WjRjeTx1RTwseS8kemF9KjEpen5GK040YVZKSXc3aSFmVz5jfEgoKlo9fi8zRTd9ekNbKXI8Pil1SS5YJFI5N0IrOXVJQGRCYVd0LDJ+Vlk3OTJv''@;'; put 'put ''d14pX3YxWmxTK184cFtIVlsyP2hYRkxYbnAzNylVVzddPz5LN0NwTVNDWSJJQ1J4RHI4QktkRT9CYVIsPzwzQSQyTE4pdnZuRW49I3B3Y19wSC9YXi9QVj9aazdobUgjJmoiO0BHRG8+OiVJbyZhXXNxem85JDJ7Ojp+LH14RDZFZFQsMG1VNHp2KVFTbCVRVmdSaEllOksxY0MvczEzdGpLIUMp''@;'; put 'put ''ODk6RG95X2ZEJE8oMzV8I3o/NFApYzAhRjZwZyppKlp8UiJgRVohYUNdW3pdQHQoMz9gNCNCcU1OK2dOU2NXanY6UEZSMnRuJWQ4P0VkYXg8MV9vWUguXT9SU29mUD8jXTVbP1coWXlzRUZVTSRoRzhFdzNnMW1QOGt5RXw6ViR7al04aiI0dkB9bTMsdWQ+PD19KF0rcS9EQEw0TUU7UyZgYiRa''@;'; put 'put ''TU9SaGx2ZWpHTWtVd2ZSRDZFLyMrdGloYXY9NmRIcmgoKS43WndhMCh2YDVVW2J9TGlge3h7PUB5eGgsfSRNO11AZFolci8qd3pIOy93KzZdUlVEOzBrVlB9aH1zXjh7MnQzVVJfeDtXNSFMdXh3enR7W0klX1htWDtVMzhvLlhOL0RlSTk8dWRaLjBNTDp9Y1NmWEkqX1BsWlc3LzBwPTpiT1dl''@;'; put 'put ''VzZCMX1hdUV3IyVwZjtONjxuJFlOW306W3hkRlZ0P2glY2lDRWlEO2Z5Y1krY35TOUlCNklrclVfY216JChaPDd1VkRrXiYle1c0fFQkaiR2TDpXNy5yQH0wcWZeRTxEcXYxQGJLYDVeRi5GYVBqK3NjW3RGOX13KXNZR2VrQkljYHQ4IltuJTxzMnRTbVojSFo4QylsfjQxMWl7Yn1eTHtKQmw7''@;'; put 'put ''TlYrI21OZ1Yqa3dqTFR2N2VfSHA5RiZnPFF6MWJaUFoxb1l4UitULyFNZUFvc1tnNltefnd+cnprcXdNTF1qcGBxUFNEUVIkTV5FRTBNPyFyb3tmfTNmY0dkR3VOR2h0eTlwanEqSUxlL0A1MDs9QVAxM3NrdiYrUHZ4cCUsUnUsPHI7eWF2SyNwRHU/JVREMWN5IndhMjMrcj0pPzw5YTRCJilZ''@;'; put 'put ''NzwzZTd6VVY6by9sM1BeUkpgRmhFcVo9dXZON3ZCejZPUU1RSzY3KVAmZjFCfV85OGZeZSttS3AuWlhlZ19UdD5VK1JAPW9RVkpsOyhBQlNVKD9GJnN1Wj1XNkpmRXBXeD5ofWwlKlRde3t5PUtsbWRIRS4pVldaJVldVXhaeVhFNnRwMjQ7biZ4fnVDUDtHNEQ+Wzx4dVRnOGxMSiE2Wkshb2I+''@;'; put 'put ''Mjd9e0hPdWZMKi9pSCJGdj8sMGEjJXNMWmBIekl9P0NUbTUxRixHZE8vOEp4Mlg2SCRFXnU6aWNWeH1DMnRSa0lGYGA4Qjk7T1M9IU5aLFcjbjpeLyJURDtWRGxxZCFJYEsybmNbMys2WXI7NGQyNFA6Z3BCUHs6PnskOlNoe0AwdXtze0JzPjNaMk43IVg4bDR1N1JEaCRNQSFTTnRWU1B+ZS9Y''@;'; put 'put ''djt+P1Z8Vyg0ZlZOMmBTbSFdQltETTdTS0R+dkFKUGxQWUghcXg8IzhvOF5OJVB4cUI9XU9RTyV+Unc/aXooZml0dFZIJTZ9dHdMeTtjeEJJSXdxIl9GZi9+Nm47JW97XnJ+Q1BaaHRFJmFTSXp2dEEsflMiKjx6UloweFU7VHZVY1pbVytzYHdJI0RuWFJrciY9I2RpIkszJnNpSEdBPm5xT1R2''@;'; put 'put ''ezhaRCFZQlVgIkl8KiRHMlZlXm8oeWRNOGQ4PHNuUTFmbVY4WHl3VlhtOmkxe1t5Z3wwSHUjPXVpKjRhT0ZPdzF8fHluazlCQnBwJiN7MzkuWWgqbVVVYElsbyskX2g5NHUxM3A9eUo3K01ibWxlUCtIa0MxVy8yJHNiJW1QVks8NVYsNlVydG4mLzdEZCUpblgmO1RTcyQxQzs2elhMe2JJdTdO''@;'; put 'put ''ejMvfTchVzVEZUR2X08ueW1RYTttbVIvS284W3Y7P2RfZ1Q/WnksK35iQFpVZFAqI0k9XVFieDo8eF82cDElNHllfVNdQmBoJDMuRU9beFhLZXRsd3xRKSFrSCo1ZDl3bEhlOXpDd2tAKCQjTyl2YWUrREtOQFR4OEBzdUw8X0Z6YTlMIWN+NGJtYFtpbihod3l1djtrRVhlWmdZZiUmIy5nUX5v''@;'; put 'put ''WCYxKHlLLklDdyNPIT4lYlNENitNMixabywlXnxKW1MueCxzRVs6OVJuZ2NJM1lsRilaPm88YXldNClZNjRPPH5gInRbc3gvJig9TTxOT1UpPTxeKCMsXVhENUYufTNKW1k5KCpMfEt1PWhxRVp+VExrfVkzRGliZD5DWmUvd2hEWTIrajVPRldKO15hKXBfYyxsQDNpWX1oOlhSTldWUWM3S0hI''@;'; put 'put ''JGUiUix3UX0rdil8TFp1czVlPGleZl9kWm0+IzxqO1BSTzBycDZLVChpM0t0Jj0xP3gjWGxNLjUyWkg6Nmh8R0wzMGIkbFM1WStaN3dRNTwydEl0MVkkdnxCNjNWOFFQUktoayIxTkg5NGl3ZHw2TDxeJTUhVWBHbEtDOGNxPWN9IWIzUiRiayxyPURWVl9GfHlTREJldVpXQyNrI2QkR2s2WkJN''@;'; put 'put ''N2xWMUohP29DO2Z+UyNTI1tafk1XZFo+dlVjeGNtQ3xuKExHaEdXKldsYE9AcSFLXzNBRyopek48fnYiMk1SQzk5UFNPUk0hL05Ealp1X1pYbH4zbDZJRj5ZdSE0XVZ0WntRd0EjUyxzV0dRLnwsNXBfSih2XjIyaHttRyZSLE1rM01KZiUjLj9ZQCVOaHBXZUkmfEwrJFhldD1qezE/JGh+aHgs''@;'; put 'put ''T3FUMEo8QCYlaGRNdHtBMil1MUp7blEjMnJQP0k1dkBwbHFkOUQ+QS8zZF1lOWpJM2U6ZU1xPUhecTY2ey9ATntpU3puPE1rflohdjA2WFRFOlslaS5SWU1zemZ5ekV8aT0+bj0zIl0uZUAsVEtKMGluZGltMXQ6SlJ5cHE+eGI+UVF7NE0lfStPQ1J7U2B0O3YpezVxNiRBSDhacnJLfGt6KjR2''@;'; put 'put ''Nkx4cEcoRVtKK0o/WSFQTntWNDxgVVVRMDVvJEpbZ0FbbEtoYGlWdlA8SytXW1k/UXV+N04ufTlaTGhpPkNiPTtPYHRIezZoM0dUZilkdGtqJWBda1VNbEtBd2JmejcwemhkXUpaeEtGS2N6LjRpISo2fEEwbi8zO3dxLCFrUDpUPn5WY3ZATlNOczpUTElEJEVhTWxRYHAzPkBRRmJoVGFkKWYo''@;'; put 'put ''Vmo/bShyaGgoUGp0c0lsSGdqI11Md3hjSEYidGAlQX5yc1Vnbm1zejoofmhtRFd1Yns0LjQqJmlFfFMhQ2lTTyNZKHlwc31tQl5mKHU0TXEqNTZpYTIpVGBNOUViay5Zc1gke1IoP0ooYkNMeSY5TXAhWyowaGFfZiZgM3Z4Snd3P1l8YVVYOTpoRTU5QlhTWl52eTh2UCJhUHZbdElVdiptY0NL''@;'; put 'put ''WGRRM1JGRE4lTXtiJWFdOiRKajd2WzV6Kj42fnd+WEdfbTJ5WnR5eyV+YnJ3KEw2UmZydlhCaiVMQFokOGxefnA0VyhCNTNRVW9RR1dySSE2YEd7UWpnK1ZhY3RUIV5wSSIhTzp0Kl41WS5JZTpQIXlSKikoOVprLzB8QFs5Y2I+RHorZ0NzX3JSWzV1S3ArTDgmaVUyVXoxN1VUOnN7S306Xzwi''@;'; put 'put ''NTgvZStTQ1p8S2x1ckEmZXdiPlsyJnRrcTZ3SnNLTEwsQklyIyEkTVdkOT8lRmtGUHcmLzVOKikpYldHanB0NUolLHdrJXc/ZnlANyMiekIpX158ZnslP09aPWhqYEVpPmszLz92NSgzflRqbnZqQFpPTnUyeTUoaWFNRjFySHZnJFJYNiU6TlU8PG9nZTx3SUFIJi54P1RIMXdVIkdxZ1BmWW8k''@;'; put 'put ''Myk3IXAvNVMrOX1YeF94ayNpPlI/OXVbXkd8eTpVNWlLOixyTzxxWiIwJXk0T3AyYEdUUGkjSktsQ1p4P21HeWpndT5xOmdSPTAwaVQrKyhJUlhVfGRAbHR1c2okfSskTWhUJjlNZVFaNlhNXU1qMDFKKSUlb218NDxoNWp7Kl8rNUk9LjQ0W1FTbHdYdktGb3FIQnYiV08vYVlDfFclVTtEdlAr''@;'; put 'put ''PD9pciZ9dHldLEVhelVPVm9IMXpjP2JeYS8qZjdeb3lIWTxdRitMajM0ZlRGbGRveSYrMzVtRG1pNnNIdHpKSCRDM3YyI281NjNuLjhMRS8jJStyZHUxdEdvOkI/R01pIUUoWWNXPyFNOGRAdmFaOmssYVtiKk1SKVgpV18yfnUzQzNFOGosRjNZM2lbPHh6MUpldXlKQnBfeWBaQUdUUTksejZd''@;'; put 'put ''amU8LjA0cix1VytZKGFNZi8xSG1lNCtSLi9IbXM/YndUIXMjJDFWNX5HV05LJDR6byspYW06N2Z+KEkuNGwmbXdTU2JsOUkofjspWFVLblZ8QlZkQy9HJlNwVzFJTjBgeVhyZDMhNUQhPH1OZz9Wd1REPCk2UShIT256WkV0YEZLK1BxbCMrZj1LeXo7PXxhVC89STlNUWMiRkBuU3glMWlEOk8+''@;'; put 'put ''PkM8OV5ZaHZ7SzFtZ0p+Rzt8MFlHNj02OlcjTWVRK11vRno7VEB3P0h7OSVuOV4xPj8zdEdlW1YlWFsoVW5kZEhQPWAhcWhfJmAkeDtkVktKR0M+XiQ2cUQ0RWlPMlg3e149USNUNUpycmVaZlV3aGcxdXZaKTAqKDJYQEF0d2dGbmJTMyl+L0Z8ZCwxOipjQ0I9YmI3YnIjc3A6WmdtOGA8ZCMs''@;'; put 'put ''QHJvY2c6TyI7cCE9e0J0RndYTSxGNkk7XnovJmM3Y1BdPG40L0Z6bmFjazwzPjhFblFOJDgqZ1tHW1ttVyw5RyVzdGxBOV0uR28iV3ZhKk4rd2R6a0A+QCMmYCYxdilhQHBXN3EpZyxIN0NjJFgwR2FCXUJbazZLNX5BSi87dChYflNpSjYufi5ZOnc6JWk2YHE6USwsdSQ6MXg6MGBhLkkrRXt3''@;'; put 'put ''bX57aC5QZzBMOzk1djc0RDYzUWlvUiQwJi84dGVbYD1WJWlufC9qM2VQKV9gXTUlWUl+ezg2YEpkbDYqNk5tXSs3JGVzbng5Xl45eHNdNz0kP0hpWHBrQGlaIz5gdzsuZERYfl04OklxRyYwbHNOM3E+UFlfWFdQP0VOWlVufEtCQVFReXNHanhDcjh5NjVOQ0AvNDklKGUrS0g4UU9sKGJxakpt''@;'; put 'put ''YWBVMEMpT3hgLlgqb3N2WiVSQ2FmPj5zZ0kzKHt1Uzg6U3d6RkoxNHpNKS5qZGBZJCMkJVo5Tj8lTmgsbENwLDhHRXBTQ3lhbDA+ZDRZOTJlL0RsdHZwK0Z+QEslI3xgO1BoRjwqeDtObFplbmU6X3FCXy5WNGd5XT0ySjVdYEs4TENsUCJoRlI9bXp5WjwwQFRqN3M4fWBXRi5dLmJJXW9vVDQj''@;'; put 'put ''L1VULkNUKFNtNmJ2XVpdRFdlZU1ELF5LNTovXSRpQDhVWlI1eE9KSG9Ce2hIUjhnOzFBOH4yRywmW2Q3bUY3Jm50eFU8UD51Ty5xUGJxLyhYUl1RJDRSJSpvWSNoOzVQaWQvKzNSSkcoPks8Xj11N1pnR0teRFssfkEyXTZ4UntsfWVyMnFjeGY3TVpucSN2K1FsJXUsQzsrLF5AaGNiamU9enRu''@;'; put 'put ''YSR2TDdoNEsuSGZPeGt0ciNfXTwoSDtlMG5sP0lWP1swRiIzaGJ4VkVfKW89dmJqVDcqbVAiIXglbiNCaFU5anRqaEBuVHx9TXlXRng5O2VnWzhLNSRTcyhZNUh4bTNyPDghIyRlOC4wPHhbcG5gNWxZbEBDXXVbQkUxOnVNQGVCZVF7N1g5Tm06aDdfUGVdMiVrW2cyKzBpJEBRcXtMZEQ4KHp8''@;'; put 'put ''Uyp9TUhKZUVSQ3piNmosfThaPk1XY0JPZ1FRYERCOnhHY0xYUSFWdT9NJD0oYV1yR3U3WWQxQ2FFSCpbTkh8SzRoOmR9eHZLTGhycGZqbTopdWtDVjg6O35uN0tHOnZBYmE+TUdCYUxsaEpTO1M/SFE+Pzk1W3A7JT4xOUl8Vm5UU1F6NWZ6YTlEc2Nfa2loOkklc0tNfGcxRGtHLEglbl1Xfjok''@;'; put 'put ''U15BLFZkXlFgRUVjPGk5Mit+WGhkKjFFaEI8TFhtWFt2PGhxdy8xRjx0WFYhXmpmYFJKTzxdME4rWjJ2MHxqOzFNRj5OYms/eEIyVzE0KixSQ3FScnxhdWNWejsyRDdmJHZOUDwvRFVJXXQuJUJZNU8iWEFjailoXmBAc1RMeExlb0VzM3UuPmRXWzpgVCU7KHtbQz1BZV9PPT8jPEtMa1okKztJ''@;'; put 'put ''Kl1OJGFQTSJxZm4rRHc9cEUkfXlWSCJbKj1ZQEE8X1h6Lz4sJT1ubU95RGFdPUdeNmhIfXB5ZSYmaC54Z2oyajN6eS9AbXRMMVltTj9NezVFSyshcGhRJGgxbTtxWCUyMS9LOHc2cHlkfmV8P1kkZmNqN293bHJSQjMmMFgmSnJmSEhiOllqezh1cipYKzhRJE4lTmZ4dU9QJmkhfil7XjJ0WTN4''@;'; put 'put ''RGc3WTBXKjdHM05iWSRnW11jKCRqeF9rV011PjAuRlFdaiMoVUZMIlZ0MHUibzdkPlFzbDtCVjlhPy4uQFZsOU47N0dhJTs5W0hbc0dwZzcmQ3NlKmI+UWpnTFNTWEVMNFdlVmBlO2BxMyV7bVJNbUU+LHhdSjE+eUNHLzx0RCNwSDBOXjY2fjtFZFdWRUR5UX1jfUAoakJraFQhSXR0XilbKHhK''@;'; put 'put ''c0BKcm4wYn1lX1J4LzI3eHttc0h2M3MiYWJEa0NgUnd4NktwYFEqcGReOjwxO25CKSM7YmN3Z31RcDV3K014Yls4K3hlK3I5JWR7M3dTfWYwUko8QT0zPmYrd0BEfnVPO2preHNfOiNyPHV3LjpLVEx0LHEhNGY1ZDhdMXJJLkxUQTFZNXJ3PEltMXBDMTl5SFhyPUJUP19bL2smdj9jZCUlMzFy''@;'; put 'put ''OmhlNV89WykkdXIlWml9fmV5W0JtKEY4Y2BZNUNCKll3PHw3aT5GSTBCcDFNK3tbJCkrdVo1VjxLXWxeYVE4KEpidmVFcWtAXU0qYmddbVtKPiI1UytocF1RK11UMDRve3Q5aW88RnsvX1NvKSk8al8pOj5ofDgwb3l4Rl9FWHRNTlZ1KVk6QTdbfElPdkxrXWd1cG49cnNyVTNdTUV5SnZnenJg''@;'; put 'put ''fFBYOT07O2hERmc/OTBxR0t6IXlAXUZRdyxsN05DQiNCbjg9N2FzPUcqKypMeVMrM1skPFkzNlVkT1AyWkE3MGpKRDovL2AhUUVjeHUhRWtAaVYofjhaUiMoUUNuRkl0UXRpZSxWKVEsM3YkaFVJZl05MS4kc19QIU82VGkuVEtpYTMkfkA3RGNLNXokY11Xczt2UH40Uj8xSSYxcX4pal5QKkds''@;'; put 'put ''WW1WXT86WVphXXt1WzRiPil+OVBiKXNJeVAkb3kqOXZsRyYsPmlmLnZ5XjF3OnZOJEQjOnpWP3EwMllSLC8jfS9AJnd9ezZRQkJTIUA5Km5JI15HRmt4bS88bzlfNFdnWE0yJnAxa2AlJTR0QmZjKk44KFRGMU5BVDAlQE9LNHd+bCpSRzhDZCxzR0FHXT9DLldpT0t5dFpde1AlN0xCT056KkQz''@;'; put 'put ''MUlXOS95Ki9mSzk5bHpYSTdhX2FrU3M/MUUofGo6JDs5VVk0ZzFoSl5QZ3dHXi8+L0c4akgjJEJXenM0aXFuNTNHRWRLUC9ScTdxbjdEQiorTE8zbHUhQUIyUixbaHZNYXUwcHUoN3N+eTg1NTBARkNwPDN0TXhXZGxWQz4hZEIpemY5RSlAdGQ+fUdpdX1VQUcoS0Q/RXZUdytVeG9tZGpZVXtO''@;'; put 'put ''Z3xrODFKd3l1UDc0RUVJMHw5eCVHO2hDbmtuXmZDY151TnQydFZiMntvJjtbP2R8XyVVYHsrTSwvfTZvdU5XQD1wO0dPPFQ6QiFtan15cHErPnJzWipOMVY0eVl0YHtfdUZHZEU3bilFVUJQQnRiMkpUMH1gPT5rXWolWFA/P11fVTEqRHlnbVYza0Vue1c9M0l+SVpLQEBVfWpIL1FJWUolWnNt''@;'; put 'put ''VlkqIm96Zy80VW9kPTNtQSFRJWs4RTVtRjImSVJMaVhZOCRLUDhNRFo9bHk8VEJYbHhAQnR6MC85Sy9CMkVSMG00SGA9V15JRXRfJSl2R2gjV117Ry5mQ24uSm9RPEh9QVdpalN3cER1KTF0aWt+ekZfVjs9Q3FQQ3pELiY5RWNhbE1Oa3shZ0thQylWcV0lKjhdWjQhLEBrPkRkTixZMFpePi9L''@;'; put 'put ''Zll1LGQ6OUBRVHVQLytmXmApbGYxWGNlNWYuLkU4QEhTYjJ+MlEjaC85QGshVGFOPEAuVHhbN147Y3A5MGViKz0zPiU2cD5DSWwlfHE2Uz4jTCNGX3QqWH1Le1YuR2NKIypTKUJiblQvaT80IyNoV1JbXUlNZH45KUZfbjNwUEE8bSVIa25raSYkcDlDfSE0MTs8bXlEQGNbUCllfWFdW0BiYm9w''@;'; put 'put ''ZnFeODs5PE17ISYuWmNWcVBjVGI2UyRHeHJuKEtVOH5XJkhadEldW3E7WnUlIkwvOykqdjl7YH0zbXBUWjh6KEJOVjN2aioyPk5fOF47Y1JpazszfUJsJGJ0Wl57eVImTE8/SDZ8SHEjSGpFbHNUWldMd3l1V2tbZXpYNFJBb2tfdWtJM2JlXkFobGtrc3EmWzoiezgjL1s/NE5wVVVBVkdqWksv''@;'; put 'put ''M1F3SmZOZT16NGxHOTBXNUIjJVo4aTpEb0NpO1tTXUViRzMvJkYmWkp0V0ZtSmZ9O3NQfFtLeUAzUyg1NDlyWDh7bVh+ZEMzcjp6Rj5AQHxmMzdwbzRLXnIvJkpxfTxBW3JiamslXTd9PjlUeUx9eHBVTjN9eGgrW2lUIjFhO2pzLERRfXhGbGU9fVMuOTxpfEpZJm94RlhzJTgjfVBdbXx1XjBv''@;'; put 'put ''QjE6RUF9Q3ppZTpoLClHLkVsUW8jaSEkTTdqMl5RUlUwb3A5czhaOlZ0S308LCh1Qi4uOnJvT1F4USt1SzhCOkxdUHNHST1GcStfNjY9Vj8ofXRiS0VoKiI/K2lDMX0qMXI5bipicHtdTDMiS3MwSEVVZjkzIn5mcXIlLmpeNVNfciMpMmh9aEVxV14oLFtIYGBMd29CZm5USGEpbUJUSF50KkFk''@;'; put 'put ''QiNMS0hsQWhWNTFfdFpZWn17czJhMjF8fHU1VFoqVT08bl1jc2o3MndAUV81WlFafSM+bVY0XzlEMS89cX0lX1IyYGApb3NMVkJqJmdUWS5vM1s/PG9VQDNxcno2QixwPDB0R0Zud0psQHVSWWdSUzpwJTgySnRzU1tTQmRDMSNvWnFTYypXVS9BJjA/dCFRZDd3OHNHanRAL1Q9cytVZ2kvOX0w''@;'; put 'put ''MWNaZUkmRT1QYzI0bWMzdzVjZFZVP3x8ciZmc2ZtUU9TMEBuMjdZWFRMb3VjRmVtWUx0Qm58a2w1WnJVQExPIiVnb3Vnc1hnOjh4cGYoPSpoUWZpVFcuTkhvXkJgKDg/aExhMS9hMTpoRTVdQkBVKE41a2w3LHhLNkZDTDdRVj4qTFUsTlYza1R0VUt2RCZMMig/Mjx3ejQuVDM+dEQ+MChIQ3t0''@;'; put 'put ''VkRPZj1aS2pDNml1MX5GZmN4V09KSClhYzFOTjU6MHtHMCJkTDZJSXV6Y1Ema1U4MGZ9cyl6WCY/Zj42fSNTTUFKXypoU1NGYXB8ezBbUil0bDdIUTcpJUJkbk4rZ3lfXUtGRGRDfi92W0k8UX1uNVswNC95althXzxZZlZIcn1CZlc7anJCOFQ6YntEe25daFZ4PldwSTxBMDh8b2hRcUUqZ0RE''@;'; put 'put ''WTVve01QbkJ4OCtHOilGV0RIQU15Pz8wLHV9PjVbQ3FAIVh9O141Nl51eVo1NGp0PmB+ZWtVRFY7T05uL0kuT0lHP3QqSC5zQjRNZj1XMTNkc2p1ZnNiVTFSbSh3UkdWaUNQclcvZCskLEM/flZ1cmE0KFhDUVgvV3pldV54ZVN1Pl95KEQmby8mdH08Jlo5MCtXYEgjSWlbOks3NVM7PjNTdXNY''@;'; put 'put ''U31yUEl9JXd0QSZeSFZCNUMsbm9jX3Blbz9DWkVSUkVRRW9idjhASUo1QlBXc21RRSsoVkJeaC5odUIpclBGLyp0QyRfK0VSRXluPUVMYWV+Y2RnXis0T1ZTI1YlPkQ+SH5CfXJxbGVxbmQ7V2VFSyZbMkJxV09fdzcvfCk0cSFvd25GXkpxQ3FmenY0WUYyQTdRZHN9SVYqfDIpQVhGTnFDQnVu''@;'; put 'put ''b2AmfiM1ZFNNSF97WH16bUN9UC5aQjhBRWNfIXJ9IkJfe2Q+TSZGcWwoUkVucSJAJnxiL2g6VlJwQj8mPjkrVHpMPm07fFFTIzErfUA0InB8dGdzYkNDP0lPRylGcWZ8aldRVCM9IVJtKGJ9az54d2tLdltQWzBsVytSU31fVT4kfjdadDBkXm4iTkU6MWghczZoODMwaz1tPWJ8YlRqNG5GbFR8''@;'; put 'put ''Q29gVFhdQzwqfFhIMDpKX0Y8YSVuNVdDVj03YkgpdW03TWguNlZralA4XmgzWm1LbkFHYkV4cDVOSzZDRCpuQlpEVl5jMHdNX1N1Z1lhIzpjUGM0YUIjQFAuWWg2Y1BGR10pQXF8Z15zQS4pSXYoUChBXz1ifGUzL3BgR0pWWDU2SDdgPiRtZHVpX15TWSUzJTZdN31OOU5efDhlfW9TU0JRM1ZU''@;'; put 'put ''cl9CYzxRQn1iW2IhcWUzMjpmWy5xXlYkN1dXejleQDg3OCUmKVFWYDhtckYkVilLUXE3LEh5bmtQR05DV1t6cm5RYmt6XSldQ15RZzg7Q0w/M1NSMFY1MixSWlhMfD8zWDY5YHw8RSpNTENRUD5+cU8sJEk7aTdyVF8xb0N1NTV0TFA5IlprPitWSTlgfURMR10sdlIjZExLP3lmSipLI3RMRzdq''@;'; put 'put ''K3pVKX16TG85ZlAzb31HSlZvfkpmQmU2Pj1GYGBWVzNbNlM2UW9tQVBDJTgzVlhIKyxHRixuY3cuO3VRSzBHa0hlWnJjdWhEWFRWW2U6QD9bYnF2OUI+ZGBxN1AlaFI7Z2E4WS88ZSs6JHYvZUs4dnhGN1BPR2ZKUEdmVjd6Q3pPL21WOFMyKzAhNGFVLC87XTRMQyVPMyJtPClaVXBaYHksKW1t''@;'; put 'put ''Smk7ZX47WFMsPVtmcFhxOXt8TDsqRS8oJjJ8PFtPSnNUcmVedXIzVkJhQDhxIzVtNHMhJCNVdloqdFJySzBUaWpmW1YxQ1VgN0R6RT8mU1N1clVVUS8lZ15bNSF7UzEiVU9AT0Z7IVhyISk2NVY8T11scTBrZnUvSFF3R2ZMfF48X1tSdHopfW1wOl11Sk5lQHAiN0puSlFCNjg3X3FjMi5tWm9M''@;'; put 'put ''NXxUUUhBOCY0NDlCQF9FcEBseCMzakBpPylLPTQjbnI7YFpiSnR8ZnFfN3RaO0p0el5ROy49ODg0TlJ0c013WjkjdlNsUkptY35RbUBVWDcqUm8+Vzg0MUVoQF9fPld2OkxOPlBCZTVrPyFuZiVQVittOyQiVTAkK3VNJUBtOWUwMzpzRj9zZSpILjNTUEF6UTUkTi8jWXJ3OSN6Iy5oQ2pDQk5L''@;'; put 'put ''cVRJS2hTMT00UF5FSFMycy9GQ0ZLYnNVfj1VTXVsdGEyUSNnND1QSXVjZUt1TTdgXyZtajtQfWwlfX0zJiVXfiEsISJpKFFPcEJySSRlMFEvKyRsTT0mdSt1e08pSjtOJWJwemZVZHZVc1h7VSMrNEBbYzY+fDQsOmZBUy9lVzB5fX55byYzVl5yVWQyLyRiJk5ZM2prITFOOjJdQT5zb019Tn01''@;'; put 'put ''Sk1qRThYbFhRRXpmcSwsLzhKemRgJVpAe0d4LG58X1F3QzN7NyNvVitsMGlrLzA3LCtNSWAyfjhgRDc3NzMyT21MLE5TRVg4cnUzeyRmNT9oVWR2M0JmNUVfcW1ePWtbaHFicXVGemhJWypJIXA0cDozbCpCcWZLKSlnKmJANVUpeyRMOH1MW1szU0t8eSIzZSpiKWBiU21JcFo1JFU5ZTVUY1Vs''@;'; put 'put ''Zld5ZlJgPTlAdG81TG5yLkZCLDxIY2kwZG04fDB2YWwvbDdEc1sqMUBjVzhKXzZTXVM9YFBGQjlWO3R8alcqdm82ci5kW15KbnB0eFc3anpnJUBkT0ZSOCh8cWgjbiEzL1FnWHBxXnx9RCslW3VUYCVMRjN1Lj1EYDJdNXtmUU91LyxqbDE5TCRfJF90I0c1IiRdelNHclN8LHk1fEM9XT1wXiRX''@;'; put 'put ''dHhGdiNxMDI5QWpLd3cwXWVQZlldQlBuNDFSfCxTYClHOC4+P0MobldnOmJ5TD8lWF1HPnBBNT1PXmk5enAsRGV7SSVsbjVJODl0UUN1SkhGfms+a0A0fmNXMTdZKEBnSlZWVEojQzQ7OmIkcXpueSFZKUdrNkBYbyVtQWUuYH5SVy5+WyhjalNENEJaOUBTO3J6alc2N2p6Oj1jOnA0eSY2Q2NB''@;'; put 'put ''dHM8a0RNTnR8ZngsZkgoYHN8XipHIyJvaXlqeVZMV1U3SzJkamRBemJUKmR9WGRBdGwmcH1YO0Y8O2xoKVp9NVlgMUZbRz5wfVskS2tnN1hJWDdYey5LMTlVPFciPWM8VTl9Q0F5eFcibUoqMXZeP3NSPVEwRntfeUNYUiwxVFE4MXxGNm9bWzU0ZUxYViY0LktCQFBWUVZHY1BdLkx+JFIrcnxR''@;'; put 'put ''WnlIeSsjOSZrTGhrPSpUbVBCdHNVTTAiPSY8YEZdfixMWU8lRUFEJV4hTD1VZlFPKEtmKn4rSD1YITtfMy9ZNmVqUzxvVzJJcGh+emoxeFhbXV44cVoqMXZSYHI0fnY/eGAlImBTPj10cUAmWko/UT8lQDNdUX5IWlg0Oi9dalg1c295Z0hrWnpMV0h7YyxLQlB5Z09FUG40TGJRUltQfFVfWlJW''@;'; put 'put ''V3g/MGJibnd8KTFpczFXQkI+TkB4Y1hoc3hDTWMmPC5JTD43eU5FQTJTK0lGWV9fej1rRGpDcXFhL3BCeGQiJEhrOkBAdD0mVC5uLHU1Q3dNfWVTODFZOk59alQ5Tlp7bVRhd2Q1Klk1byJ9cEZmI0RtQSZycWVAcyVzJC82RDV8KD05SH5mVzlgfHZGK2F3TjU/PF9oZ1QxRSgzYTsrYSJGYitC''@;'; put 'put ''dzw8ZUpibkYudF5FJn08UilObEU8WGd2OHB0c2VKNEA0VklfKTxzbVhEJlhzfntHVzp8U3VQZCldeT48Oi5xZC5jW2FdK2Yrfk8vflVDaU1eUDhPMzJIN0NLQGxWK3x6Yig0SzNedWlvaiViJUM0RiF8cE0jdFVjS2o8R15Xa15vIkUlL2A8YExSSl5gQzUvelN2QkAlMXVpPTIwOmhwa1dafTYu''@;'; put 'put ''RF1WNkc1U3ArR305b1hZNXh1ZVNocDFFb0RhWntUQ0hZdy46U1tbRUlMUDpmOXVpKzsqNFNXRUM9JUtNWm5GSSIoNlB+b2E+c1ptMC5aa2wxP1NAI3Z0aClKdipsIVlYZ0chc3U1ejgqTzQsKis5YU1mNXU9ekd6PEZtWip+bjZUIyxrZGdDKmY5ZDl0aSplWCE8W0s0XldEWGxXPHQiQTVzc31Z''@;'; put 'put ''NHZ0bmJMZjV1dUY/MlVEP3E9NVIzUkM7T3Y3YSxKdTl2dDcqTyQsUislPXcvWmwubnsuPSxiOWU7I0kuV0Rnaih1d2c1SXhvRlRjdD5oQnR9V0krPyVPWipjI2RnSiZPSGU9cl1LOWU9bV5ENGByWSQ5V24mfSU7ZEomJXFYOGwxd0NVMzdAWD4hdFd7djhqbSt9WTRXNTh9fUNYKTBfeSZ8a0Zo''@;'; put 'put ''NiN6WypnenQ8fSl7Uy9geXJMPl1vOkJyOlc9KzxjbDc+TCNCejdjaWUrKyVRIiRIODFSXyldVHFiI29mUnIsJXpsSjcvZSRFXzZiOy96LjUpYVQ0QjJJKGIia0NVKVZTVz4jZVRKYHA0SFdCRFZZWnorWFpQbT1USjBFdEM0M0hPWy40RnsmIjkoJFdSXS9ONGRycG4/XTVubClnYWc5eVldV0Vh''@;'; put 'put ''eFo+Xiw9JChyImd0K3N3KWspZ29OS0VzdnF2dncpa1dTczJINXNxPiRoeCkqfT9KUk5ZM1JOc2lzJW1zbDU7SDFpSVtwZ3BqN1RofjU/WVF4KikyMio4fl9+JFN7R3s6YT5GVCsodkVzP1ZELkJ4NVtWcEEzZG43YkAoLGo7PzUiS056Rn1UXjdidmNNYypzNWxbe01rdkxyUjEkOl9GfG4kSS9g''@;'; put 'put ''XzJeS3xLMSQ+aXRCfVI4TVZ4QkI+bmM1OGsraENSQkM9IS5pXlZifkZGZG1CUkt3Oz9qP0xYZV1rP3kmJSsiKj5wcnEmY2NrUiVIQkZbfUkoWE9IOEtFdFQlJU5bNDBEIjJoZndVbyMjK2JubHBUcm52c2clNyVQJnFvI2Eqc2sqYDc7WVJ5Uk0xTEpLYlUyR1o3VHBSKDBgMXJCQTNUbDMjMFNu''@;'; put 'put ''bixqQVVyQlNPW0V2Njc0Mz5pOmE+JlNNRGh8PFQzMSIpfkoiRUIyYzo1MWlkXjhGNGNQeSo8VShDcngoSkhwIm02czZZOzZQbjliKVhjfSNjMml7emEuaWdCZ0FSYGN7dExCcXx4Lj9CTkUzZ3NxQTRqamcrL3o0dUJVVXlRcHFgJVFKXTl2Un1PV21ffjxJbmpnRFMub0JPRCVUSjd8KlQ9JjF9''@;'; put 'put ''QDR+cGB0d18xXXZCRzg7PDtFfkNWPVBTaVtPaVNzYVVoNHlXZHVlJk9IWmBgLl8hMC50S0gwWWc7QEZuVnN1Tzcob1hoW3g3Ui88VF0sZzVxNXksa2IodGNeX1c2WFJRa0l7Qy4yNl18bzQ0ImZFSHNwSEZxYXtJKFV7dmJaWXwmUVN8M3FSe2h0YSEvaUFacVslayZPLmpDMls3bSFiRiFQVFIm''@;'; put 'put ''P0NyNXpSOWope0lDUlgpXzV2bS96Tn50T15FYHhUUEdCJio9WT1hLEowMm4+ZFNxWixYMHY7QlFiZzs7OjdVbF85MWlbNChyQmZeYzo1MSM9cWQuc3s9Tjc8PU5YPXsmQmEhd0BvY1k8XzZJSHhWIW1mKENMTm83cHR9b29sdjxqJj1kVEU0dThvdT4+eEc6QVtFKHxoZlFbYl4wbFRmTnA/U3Fm''@;'; put 'put ''WmRiL2g0NVUobEFZeDFfaGJIak9CN3oxQFUvb3tULndhQ3pDbnRaI1FNS0VgcGlkeHBhPnlPaX5LRXB0ZXs+JT1ObDpjYlBPPH1RL1khZ2RWaHZ1W25jQ292djhHZ1NvZjQrWlBPbyRucyJMYD07cEhRRXMqVHY6RX1pMkdzPF1aUj4/e0hkLG9kNENGZG4zN0dXY11bODFwRGhibCNTO0FjRX19''@;'; put 'put ''VmwmMXNFYzBEe3FjTnZeJWdOWWI9NlhbY059aH41QGdZQ1lyZCF2QEtIVmdGSn5SLiUiPilyYls2NVgwdThGQiY7YS5bWkdsQS40djpzcEtgIVsxXkVkbmp5KS9gdW9NQmRmTXh1dlgwaFdWR2V0e1RYbFZXI0wjVzhdX20rciNOPitkOkxEUXlzLjx0ayZJfk5jYUJLOVNzVlIhI1l4LllFRFdj''@;'; put 'put ''WyRRSExhbXg3ZEFmW3dwTzp0bXZ4WlYwM2NBZjVZMERRR0lSOWNteCF1KVdBYEBUX29bd1E1XihjWXZpT01rIVMvIkpyJWQ1KG5GaVdrVERQW3JSIk8ybTYmP3YpYmU7fnEoPSlEJDh1UFMveE1jSFIxZHFDNyYmelhnNUlKOiJZci5jZSM/QlVqaXFBKklsJW03a3tGP1l+cHQwUDFZP3U4cF1q''@;'; put 'put ''cTZrfGVlNW5qSEtwKVU4O0Q6a1hPeFkja0JRNkdrVGBQXW9BZiNkbGdZNnM9IzFGWFR1LHVPRSpveTAmeD4kfGByYWIuKjBDWCJuP315JCQpMmh8WTU+JmN7ZGU2Xj5RfThVUShiSmluRHtjMiUuNEhDJm4leCR5YVZtM1B0ezdKdkt9SyNtM1FTOCJ9PHFbOHRZVjIvb0cxQ004Lj5YOWlzaFg+''@;'; put 'put ''QFlAWzZmODxWZyJEJkVjXWA0ZCk8SnxwZF0wc2RdMkBoITdvKnswRz1GRGZjRm51c1YmRH5eTHRBJjk6NClKZjU0W0AxTDJkWjcjSjBML2BoTjEjflpYLD5rLEAhYkUkQ3IiU29HSkJweHNpU2lTaVNpV1JMITRJRmY1ZEBZOnRdPlVpKC9yVStEK0QrREx3RENQRUx3W3VRSGNeWEtATTlgeTtQ''@;'; put 'put ''VW9jeVo4IyZmfSEqb2tDZDRPbnhVVTwhSCM7O3U6Mm9TczRIODF7Vmg5dyZXJS5gIjgmT09rLy5YRTAhQE5TS1IrWEcoXyw8cjA1NkAvQiNbW35fITcsR1FMd2NNVlYyX2MmY0ZaNENmX3xWZ144MnZXSF4/WUtzcDkla1B6OHwzJT1qVi4pZD4yWzNzTVA4UXNwZUk1S3dXfkNWSD9yR2pkNEwh''@;'; put 'put ''fWhTK3h0fXFSN0BgdyxWUU1waCF+P3hRMEI1OFtPL2V9SEFjdSpgcWJPRTsrPFN0Jj9+fTFXPmQoWz5taWxYPiJka3B1fnR3JkxfbU5RKVtOUS4/JWpvITUvfEE1MEp3KU9+ekFjcFlLNlN2eWQ2JGFKZnBqb1dacCZiaCw2UC5Cc1JyQVRxVCNPSSU6XXNvJj19czZvJj02Z1E6eHEhIiFfbjgu''@;'; put 'put ''XVNVWFJfVnhiQkgmV0JgL2Aqfnt4NjM4RXksbjpnJUlAMU1IcmtEOTxPOnghcSRYMXxvYCI5XldlYnpjVVdaI29BKyhBMXQ+XzZ6VF10Sz5mfUIyNnM0PH1reyFlRkgjaHJTe0RHOEs0JGdoYWVaNTUsWV91NlM9P2RaOSpSN1tZOm9yQWo1TzB8TyRZdDR+dCFHTHVbeiVGQS40WXtRK1N4Z1ks''@;'; put 'put ''cjFySCxCQSllTEtiZXUxTHY6amBFRUUyZTZTWDMvJkclRC5faVFvNzJHTmkmdHBnRjBMWSMoV0NBU34xKSxbaEArak48dXJ0WXxZWXpIUFhXN1lDYlJvbiNHaXVdV1s+XnF9SU8hKmJTRD5FXklBLldlYFE7VD9yPnpzL3Vbc3t9Q1QsZTNnPnczek9oeTtwVHBFOkc7azs9NSRxLiNGOHg8NGIi''@;'; put 'put ''clJybkVzfSIyd0lQX0JuRH1eYChdbjlNX2RgZE8udX1WeExMSGhYMHhgQzs4QnRiRkwyWWEwbDs8T0hnPkV3KTMmbyo4fjpUJEIzKTVCMGl+JmhCM3dJLjh5ZXtaQjMrLjw9ZXt7LyYvLmNZVnZsPkQ5Zyslcjt+NHBKPWk5bFM6WWp3Q0IxdnhOTUplYk9NTyRoNzsiS2JiUyFua2I0Mi4zInAz''@;'; put 'put ''NU0zcm5FfmpBVGFdcFRteVIrRFY/Syw+WGtQRnx9MXciMVpeN08vR1BlP3l9T0k2TkgpRGchZlZxMnNIfmNeMmU2biklTGt3dHkrSWFEd3chdiM/NFE2Vn1WWHNNcyldTTw8bDw7KjomW0ZePm9+e2o2cS4peFsxZDR4PikwMCRvJXAlK2QifDtUL2RMNEEreUdQSmNIJXdpOSoqcVhKXTM2NmFy''@;'; put 'put ''MGIxcko+TzJAQnNvQ213cVpnfHAmfElSfl1UYj9HcU5YTVlASV8vYDxTKXUySSlBKzw4KUhDdmVvbSZYbixxKjFkRSRrQ1MuemJDTC5zWVIya1NaSn5UTVtOLnIrYnZnU1ZOK2s3WFIybFM8NG14MXQrcWY/bnk0US5PJTBDe1dGJipbKiYrfE1SaCQyaU9+JUcyYWE/Uig4Y1Qpcmh1NVQoUExx''@;'; put 'put ''bmdXSkVXTm8oV1hVO2UmO0xPd0hOZERmTVpnbHltMVpqWzZbeVQqPHddNVNJc0FlTzlBXVAvbyM+OSZ9MmslaSlLfnVyJVkmYCo8IkhxMl0sTio5JDA9eSlGaGJ8NTlhQmI/O2FrU3IpXV9ofGYmLy4wfnRJYnx2T2dUR29CNls/QztvV1B5Tk9ZWytaN0piVUBNLnUmKj1hZUFTQlN5YEhSOjlI''@;'; put 'put ''d3ZsLGBwOywkLGxXaXpvSUIlLyo4b3ZCcjZ4UDdJc0RCYG9CU21MOzh8NyN+KStMN09DdXEySDZscT8lcTteSmw9TlZwUTouPXU0PU53bzl6Wy8pQzlXNzAqZk9EO29PUDJofWp9T2ZSdSNtRHRGMzluUXFZdmdlJF47JFYkcThKVy9FdXAzTjZvLkZtZDRxczdyc31DS0dJTzNDL24kSTA1Wzwl''@;'; put 'put ''WEUhZzNVRzBkYT5tMDRbVyw1UzYuSX1dLFAiVSlWVDZsSnl8NltJcVVRI3xNPm0wRG9jbmZ7TnM+X15gVTFoNytbTTFIUT9ndylSKkpsL2ZwWy5FNFcrbitPbVZvLH5tMU11NCw4OEc8VUskR00lLyk1Ml0la1VnKzkubWs8I1M2NE5OL045XW10PXo3cD0yPUt1NEtKXnVsMzsyezYmTSJ4e3RC''@;'; put 'put ''RGl4RHVYbEZlUy5aUW5bPzpGJkkyNEg0VUN1ZmAhRnpWMUNQZjBVIyoibCVYInJkdVMoOSV5ZTs5QXgsbz89aXlrMFc9b3MwYGIpQD1+dysuQ3tiSmhEbVlIUGxpKE1NdmVzYTRwKiVAbUVaRVpFWkV3UG02TFY5fV9RKChvKUg6OlJsOX1PT2VRZVFlRip5PyF8IWAyJSs8Wjk6YV9NNDdSRl1M''@;'; put 'put ''RWZ5ZC8kJXldd0VOSDVHYUVZMW1HP1ZSSiEybiEoXnQ8QiZEZCFvRH1PL2RTNlV3LmpDaWQ0M3w0VzojOGZGfTRXKHEock83bHBXSkIwem18USR8clReels3by8qOCtjajZsOj9nNGR9XUplcUFOLmlROSluc2VOMlZbNH5yd2VzNzNqfVdQVXlXfjwvOTpmeDtWRV5sUTclWjtSamN2PnI3Njpw''@;'; put 'put ''QmZdRURHcz1VMDooRjY5bHNuQDB+fDV6TV9SSS5kUDwyMVE4el5gZGohTjFAe142VCxhUVNEXS9LKUJxJEJgTDosZy9vb1Z1Z2FVP0VwVzZNXVtjaDI6OlVwJVpjK09vUDw4fU1WLlAvdD5EUF1tL1RlZkI0IUA+RWRjKXNlTllVW1pSTFE4QnMvT28oZ2IhSj9bNnplV30sJHxVN29rNz1fJCx1''@;'; put 'put ''PzRKRndNZnJRYC9LPkJpLiV3V3JnMChVW2ZPL0h5ekljLExzfSUzaFs6Pil8dGJbJnxUT3BCYjNlO0dGUj42WnYxLFlwfEQ8WE8lSnhLSGBodW0uZXFmTGZEaC9pYnAlOkp8ciRIOFdUS2FoQkhGVkRDYy5jbCVXWl04c29pPGZYVkpbJlV3a09Dfl9FY2RFaiVnZVUleWNZS3VrdFdRX0tFby5A''@;'; put 'put ''fEhzVlJsK0lwSzwkS1B+ND5CTHl2VVhGPm1yTFV2ZFszYF0yK2FQP2MvenI2TDwmfH5dY14pNnE2M0xIQ29yTHR8aFBjS2x+KTUvNztWJT4kaWlTaSFDeHJ1e094e0UwTkgjPUEyfnhyZVVmWERfe0diR1JjPSt1N3p+RF1ZW1U9XVA6MiRQMjswYiVkP2RqKHUwW3ZXJSlpc1E0Lmo7SlJMZyxk''@;'; put 'put ''Vih8Qn5AJlB8ck99VUM3T08+Rl4xKTgxb0dNNEMjalJBNFJ3anpCcUlZfl9uQHZeXXFMc1pELkM1Rz1UfkppI0I0OWdyfEczXU5SREw7dzBQNjFeQ3BUR2g0X19APGsqMVYhLH5ncSZ5Tl0sW3pXNjlqcmU6cHYheypyOGBlSkVIMFRvTX0kK316Ik5vbDM9UlRtMUdRaXN7WkJiQyhbOlhuSiUx''@;'; put 'put ''USsqVWAsZkVTMk5kbXN9YF9ZSn5WPTple3kxI1lBcEhPR3J+M35rK3d0YF9mO2BqQFgpMD9SbzBndmw7YGIvNEI1Lm0sNVtRZ2x3Z2B6NH1VXlBRWXo4WVVoXW8zVEpQYVkqd0VSQEgja3YjI3VkOXc7R1MvQSEjdGI9MzxAVCssJl90eTsjXm1GWl4qQ0JLcFEuWkUuRztRLDRTVm0/NVhfSzl8''@;'; put 'put ''R3w6cSRSandycVIvKElJTzJRQXwmSllHOTVueUdCanQvRHpsQWp0eWVjPHNDI15LYSUhXzxmTjRiK212XV43Uys+OVMmbE0jJjA7M0ZZKS9HVD03OnkvR0p4Jjw3SCVhZ3h0KilzbmFbJCpKXjp7Um4xRD94VG4ldik3X1EqKi9LREViPH1hUjVCbHwxaSR3d0wjc2RFWGkqTm4xXXl8UjxRUEdM''@;'; put 'put ''Pk9PT2huMTdueFQ5ZjRHJWFCUitKQ05GRSVheEJdeHZ6LypSOnNTe1kqWj0/SWxDMVZHTTo6fUBQaGBaWGVYIXN+d0sqWUljP2RZLD80PTRrIS8vXSxGSWghWS8qVi9pLC5Pb1glc0JFe2EhaE46VmQ9OTVjcGJgOzhfdFBVYEAqSUkmfGBpQGtvfiZJcSlpfiZJL1JpfiZJKWlYYyFzaEV9KGgo''@;'; put 'put ''IVloLyFzaEVGRyNoSnVPaGI0O2Z1R31seEJ3LFE8NE9LNm1zUGUhWXNzM2NBUTlpLjVCeDx9JFA4IXhURixxeiVzcEVdX1pYKEdqfl1JY2BaWHk1Wnw2aiR3VkdjNnlRX2VdRixKJj11QSVzcXg6X1pYY2g8d1ZlOjAoRHV8YWouRSMvSW48bzZ5aCgkWWcmZGNIPzd9NlIhQHp1Vm5QVG1JZzd4''@;'; put 'put ''VG4lPCFqfjpJfHE3NEwpKX02Um4qS0RbRWdgMStiSHJNelQrQ1V4NlcrSnImR2g5aGg1UD45WyZbOHNsRS9fWlg/KzhzQ3hoJmUvVkkjfExnLkB6dURwN31GUX5xNzQ7UTMqQT1OUHJNJUo9Nz05KjR4VG1VUypBPT1Qe1lkW218TGdHNjBJcEU7SWMsOTJJZzBAa3BMMGU1YG4vUnxgPSE7RElL''@;'; put 'put ''PltdbldKPU8jaF0hQ1piYHwkaiwzdW1JI0lrN21+S0lbbnM0NCpXZEZ2JXxyZz1CR0RdW11uLEd+fHJnXjUpc3V4PUwlc3V4SV1yMTxRU3pGZ24xfiQuTyYsOWRlL19SYlkwWCV9IlJtWT99IlI7Qj59IlJDNm5+IklWb2l+IkkxPzFBVkBhND05ZD9BZjxAejBSUWdvJXNxeC5CNltBITgkSDZ+''@;'; put 'put ''SjkkLEJffE9sJlVLYnFAIWoqY09ZZyhZQ2UmZGNQRnN1c3BVMjh3PG4jUFdgJCVsNi85b15rJkEvaUVSaDZYeS5VMCgwRmchZy5AaTM8UHJKK3VyVSNoNlh5LmswR1hUVyw8WV0+MCNxK0s/fUAiVFMwQDZIZDRUaS8mWUM9fTBTZnk6QCIyaFFMOmdmXVk9fSRQOHpqbW1hMSshIzhQN1h1NFEo''@;'; put 'put ''VnpnbFtXcnpxJTxRY0Qlen19bkpYO3dgezBudGVzU1ElYVoyQ2FDRCV3Ol95I152X0M1d29xNE5uVHVfaChzWWwjUkZkMXpaOjkscXJhdHNzYTxyZkUvVEZnbjFaSC9jN2M7TDg8Ilk1Zk1eOldkKTVtQlFOdnI4MipQV0tsN0ZMaS8/NXBwIVdGey41MT4pXz8lLis/N2Fza3xXQFklOkImMG90''@;'; put 'put ''WGIjTD5AbitXRkZReyhNTH57WyY9WjNTLy8pPSwlV0BkZHcxUH5sbiVzcHY9O206VSlNJUxtJVJbWmlXQClHbn4zYTF0XWc2RVReM2hASV9DLnZkY0BCYkMub2VUIT9iVU0wKX4oOXsheXI5dD1oZlU+aEJdLltuOVNgbDc6PXY9UWtDa3FnZG0pcGlbekw3V20oRzdBSCFGZj0sYU54SWImMDcx''@;'; put 'put ''ZmRyamoub3N3TmNeV2VCOCVqTGE/XzlZT3pgVihscywlal9mfWd5ODorOFtCUCg4YGM8fERlJkosaU82dmlpdVBeempFREVKdlhNK2IwI0pPOylqVCldJVViVCsqW24sVCxTUGJ8eUBuOEZNUT9WeXgkRzdmS0MkeEp7aT84cnVmJiNdSVMmYTs4Q3sqcnd5Rn1ZODEuRXFhMn0peFAqLnNRXjdb''@;'; put 'put ''eHdTWUtkODlmKjIwektfR3VgMEI8NiUsaX5rMHptanVsbWZHbCYlPmdBYWJVWzAhcWZlRToreUdlM2EoJT07Pmw/ZSJbKWdVXiojdTNCOCZoX19GJDZqamlhe3s4PyNjOU84VFBWWGQ6NHV4LGc1IThWP0plM2RuZVI4Z3U7SzZmaWs5WUpHRixyLD9CNUdSWGNrRFszTHNRV1g4a1FYKUZ2JWdT''@;'; put 'put ''dGlLWnJte3RRJTBJQ15dZ1QpQ1thVUJoUUs6Llh5U2VjYUFuRVdEfX4uQHFmdDNeKCxlOnAlfVgyaEkxaGZaY2o3Ljd0aUBLUltDcU8jOmo/MDxlVVJhPixsQU91PlszLEhxJEJvYj59ZCRVVFE+bXwucF1ZaGlIYk13XSteJF4hZWVKa1JiZyNVQ3M2KytPWSM8OVBLeWZBYWVbPHdoYHEsS1Az''@;'; put 'put ''JnA5Tk9wOmE7UXxuaE57UjNseipqaSY5b14uOW9BNC9gb3tBNytYVEU4N2VORDBzXXBsIm1wQkNoQSo+Zm0oJF8pRWskJD9dRjAqWXNJZVA4RGN5XXh2dERraU1bMzleJSYwYSFrQD42M1ZbN15eUDE1PjRoPX0xOXU1JTNvJXxwWSxfblZ9d1VGQ0BeeSxSUV5QQWxhZDZNcl8sPD01Zm8rWl93''@;'; put 'put ''RDQxbHl3SzhAdGp6Wl9ebWI+cHdXfjwmYm4zOmRQWEljXl88Xi9WYzJAXS5qNGRhPXswJjw/MXQuJko8WGNaPlY5dyFCbzIpUT5lJXpzZkZKKkFoPTgibSUld0k8cEp7RV9fdSlxKEg7anM0RXVoKExDPnJQRW8yRXhSUWReamlxbk9ZbnxTWiE0alpjRk0uN1lLT3tXYl1nXl5hNyNMNkV+OVQ/''@;'; put 'put ''LlEra097V3NpXnF0eGQmKFs7V2MhPC5KNVNWMmJkeEJlZjlBZXs/U0NmJSkuYUAxPCMuNTBgOnkjO2Q4bz1dRDQqJVo8SGdWeVhsRz1PeGhvaDRUODtkcy44RGwsNGV8aGF8UGVQM25saHRGTGdDSjd8SC5nQ0JWcF1dUX0xfmpALm93RnVlN1M5aHlYQU4/c0oucC9GdW8wOSwuRWRvP1N0VCE5''@;'; put 'put ''YGIsK0xza0A5aVp5KU80M0F6ZDBEU2c7NkwmZGhTcU9GU3hda1FnUXt2cFJ9PEhmXnhOLl9BSGw+bSNRVShYbG0wKD88LlU5UkNkaVdab0dzQyFdOlc8TDFFQjhNSEAyWV1NcjVTODQiJHV8MnVQQk44UGtpRFFiT3IsOjJZV0p+OV1sIXFXXnJ4aVtYMSJuIm4+cGc1e2cxdU1tWylSKEJfLl1r''@;'; put 'put ''PXMsPThhYUwkImhmeT45UiN0VFUvaj1UUGNRQiZJKDZ7QnxQQk1xYzEiLC97KypqT0ppelkoQ35teUZ8PWIxczljVFImcyQkN34oR0BHMSFzOSheY0BPTnwqMn0/UF9QdipRNGM/RSgwQWsjKjRnXkBtT1l8a3p7MXg6KnxfQCgpXjQmW15hJltfLF9scTh0am8sJWowZiQ5WHhnaWghcH5nRi9q''@;'; put 'put ''UjNFN1pEZDUjMSp1dDxuXylPWV5rbmowSyh1T1prWiN3ZUI4LiNGO3hlQj5yPTN0ZEszLjx8az5oe1ZGVGx3P2EzN0BVKHhDPC5GMmd4IS9kb2BvLkMkSm9KWUxHT0wrN29xcDY4JDUkOH5dNldHY2dzT1l4MjI3P1YxIl9Ja3tjc2EwSUJnSVI2dXNgXX1hYX40TWtfJC9kIVdaNEZ+UTB+Zihz''@;'; put 'put ''fX1EYDN4TGs3LlpSM0w4dDsuXX08bkt9b3dgPFAmaCpGJE18YFNgQnRyOEM6MkxIfiV6eGtuR1toQmFBSjhYMixYeDJ4Ymp+UjwxaVZ1eFQ8dzU8UCZkejZEQXc3RStVNHlNJG9TMzdvT05uNDwwSzFWc0NfRV9yZlF+S2RBYyNsWD4rLjZ7YHJyOWU4Pn0jIzMkcSFJeHwwXjBSWyJ7Nilgfmox''@;'; put 'put ''UmFCUiJicilDZzFmNT0xInM7YmE9UjN3cyNvRXUqe2kkRzgxQGE4KmxOfGQyaSRHN0leQ3NgUDNTLDZdYFZyclZTQjJBYmh4XU5FS0RnMEk/KnZeajI8OiNqfXBHOFRJPkVhVFdmQlJtXms6JXxhdXk5PGwsKDUqcWxaOXBQbE9GMiMreD00JCpDfX5pOlVfXmw0dURxe24lUCJeajs5JXxafThN''@;'; put 'put ''WHZaRHpHNnwsYmQydkFhTnZRUEZ8PnJaUyMwMS58K20zLmo/IWlrXTtDaUZCczFLfFUhLDphX0Yxa3s5a0tKQFJ1MkRRUSN1LzloK282KUcyMF8jUDEpYSEiM2BkRHpFTVZNaG9Eem56RHpFTVVIUEtSLkNFLGR4N1pbOGczbyM9fmJjLG5wJiV4OSlqeWx2OWJPZzdMcXBNMV43K3JHc1s+RSRo''@;'; put 'put ''KDh1MGYmaHhmKSVtVT54dlYmUVtqRDMuTXNLZ3BhWGhiUERkK3woX2dWcVBPaCVAYS5jcFtFcjhrcjEseHhZMEFQT24ySXZDMkgxTVt3QHJ6RnFoWU5LI1F3aUgrfWdmY1RfLzFvMTkmO0l8az5TcnF4Ynw8Pzs0JDBwa3N7Q2pXbT4+eHZINl11ZWxmVy8rQWVZLDVqTjQzOG5Pb3x2eVpyTzN5''@;'; put 'put ''eXcpKVYoUE8+Inw+eztddGYwJUFlLjtzend9RGJaO2NZSWQ1NUYpJCZ7LGJFbXVudURpP2RsWzFQMkh3a2E5dDZDISwoXUlZYywpe19BfWJUXz5fRXt5bXhiaktNWW5KQnZ+bDImQCEweXVaJkI4bkdPclRfKE9lQik/QyJtNjM4PG4seUt8Nmd9SzlaSylrJUtUNzt0e2AmUTQ7PGM+ZnRnVVtD''@;'; put 'put ''ZWZhKFMwdkcxOlhgR0ImX1s8WzN+IVN4ZTleM18qRTh7TURXaCJEZF8mS3xKP3lzRmVQPl82fFRnVUlCJl9GRXpfdCQ3djs8NW00aVUrWiZoUTg+clkqI0xKNlZ4WF1DQj5BSCJkbDJdKVg0dy9JSz9GMEVpaFEwQmQoVj54eHpWU0c2NXp5MXxfbl1ue2NWI2Zpez8uTmN6b08zPURPUWc9RG9p''@;'; put 'put ''a3JGWSZrSUBxd1h9RktefCRsUmZwe3F0Tkc9cD5GXlRgWmxwVkxacG9EQE45WHY/akVyZTtMPSRPTVdPPXJJIkFicV0pOUdRczhhVmgkUUVLK2I7Jmk7fnBjKS5VMyZvRCV6fHJ0Iz9zUCp3OXkmOWdja0UrJC51dWZpKDJ2K19gTDpSKzFWM3kuIU5lYXh3ZkByc0FJNDFsa2lsUWZ9W3VOS3Y+''@;'; put 'put ''dXdgTigwc1tDPVYqemxMOTpbYWlDTDckKGo8UnVqTlNFKkZsMX4oXWJtfUtQbjNpZGhATjdLcng3M0hRSjxSe2l1M2lOUjpHSXBOUipGT3ZaSSxWdzBKRTUyS2FRO1FodVtOQ2NUOFIjKkU4MVROT1tDJisyaCFhIV9qVVIoPWNjUFZjXzt4WXVVbi5PeG17T24vP05CWkRQYiJhYygiNklAPU1Z''@;'; put 'put ''M3VRL3lFOkNWKDg7VUJoMkZJPW8+OyQ4KkIsJEFJJmc5I11PI2cuWXJrY1Qvb2xJdiRxNEFSM3czW0A4N3EsVShmZDhwKX1mYDEiZ0ZZMUpzUGxCaF9tJlVEZCxDX3xrKl5yeDYhZyt9RFZTfXlSX3t1Mld6WEhxV1AkbS5Sai4xPGQ7XjAlYFZFYDAhTXNkT2dZZ1thVyR0dVAyUjtqc3plLkBs''@;'; put 'put ''aDtPcmM+dnxLZ0VdezczdXBRLF03W2BZd0c9Vlt+ZFtsdTNtTlQwLzg1ImI6SXJXTWsoXXhWeXFeV35+Rng5XnE/XzNCflNfcVZRe18pdWQzTyYwRm10dXxxM3xwfXBMOG10aiNhVDc6MytNOSUxd3w8Jjt6OiRkcz58XTR+cTQ7OSlaKiQwV3U5ZUhpcj5lc1c4UUY+fjUuV3BWQWYsb1dxc1V4''@;'; put 'put ''NV1CXmw8OndwR1R7OFpDb0czeVBmR19BXjhpPFhFW0QyX11ZaEh9Kz1KJkpdVX1sVm5IU1JZLCghZ182VjJqJkA8OXkhfnZBeUpaIyEhdlojN1tAZV5wRDxxMzleJUd3YWppIngidlBTPyxwW1lfMy5wQmlVVmh6RVR6TzRhfD9ZcWJeVnxzfmh3VThLQjcsRylibVNOWD4yVHR0LkI3alMjfSg/''@;'; put 'put ''ZUsxJG5pQjY7cnREJCxHYUBjT05FO0F7Wy57L0xsKkUuW1owQTRKUFd3IS8jcUdObmpMQFo/VndjbmxELkJVOGY0P3I6UVpKTXhzc0FWKWcjMV41eFIweHBQNlt1NEp7YjlKI1JiSEYhTihuP2RJTkhzOGA6IUtRNDZwZiN1IXVUaGxPb0kwRkl0NWJAeTdwMUw6RmMsMkMhKXdPNzByL0ZlKk09''@;'; put 'put ''UUR7aSZbSnVqJFhDYFhYRyw5c3d7I25aaGBPSUZGWUNdd0AqWDk6YW9OXno8XixZPU5qIlp0SkFhMWBnUURRZ3ssOHxvYH1GRkNdTmplZ29zbnB9XTcuL3dtMkxkS0ZXOmNkdHM1bzg8eyxJOWRaXjBMOlpKVixCczQ2VTJMZlpdcGZ2KyQ4TXBIRlBiUXQjXW1mcXcwb1JOKHYiMlEvUjVubzQ5''@;'; put 'put ''Un00LnJvSmlsOHJKZDFQZ0k3UmJpemtQYHUsSGYvfEAkT2xAYnBwTzQ2eFZsVFMzI3dlejQ2dlI8I2hDaXgsd1I1MEIxMGA5V1JLVV94N2RqQFBzSERnRHBIcjZuc2kxQ1hmc0tRN1dNSnY6N0wwTmQ8bTJneytQQ0hzVzooITorQSpSK0lOOEd3M2NsUzU7akAuOyRCbi5GO25zMktXV3ptP21R''@;'; put 'put ''ZTdNOk9CVkBGaHkzNmg0TGNbc2ZNKnZhUW81WTp0Wn1gIVhTIXNFRz9YYyZYRjthPm9gXyZ9Jnd4LmhqYz1UNTZRVW4jUmlJRl9iKlhAJnxtKWNQS0JiMlJqJCE2Ry4/ZlV7cnYifGhxKlVTOk8qM1U2WE9NaCZxfXNVKWxNY3tuTHJRfmBOQ28yNiNYdHFmW0hlfk8/L1lkKiIuKWlpMllUckZN''@;'; put 'put ''Vm4zNnd1JHZSZ3kjZFY/YlNkKCIxJHEkcDBxJlhuVHBufDk+OWBrZnQyXS5qeCorLlJ0ayEqKWQ2IUd3N1FUQGFnc3J3M1NNMVYoeTRUc0ZXdFRiVlh+TSlzWG5KOyhEOzBZW3MzU01bP3w0QkBYRFFVbl1xKWssOmAkLzwiW015W0hXcmNiOz58UDlLLDVZXi5meCorKSMqfWl0Nz5DQCxnVGJ7''@;'; put 'put ''WjY5aU85T0RtKW8ySEdCfHR2Y1RAcCptU3A0SWlqJCJkS0lvQHhlfTRYd0IoIyw+cmlGcyFSJFIpQDg3ZEldKkFBQS5AdyMjMzI1QV06PD5RclYoVz1vUmRQMzxYRyZIN0EjaS4hQ2NnNTkoIUQ1YUh1YmtbUmJEInxvNldefnhTS3tdVjdRflp5WkFVfkxVeVQ9VlZ8UyM7O0A6VEk+c19LakFT''@;'; put 'put ''KnFAPlIoX3htUkEyfTUyVzVNeHNuUjlrUi8+UU9weF5aMEFjW14jPFZMRFZiJFgmMmFUUn51MCk0QW82JC9dZjdXJixse25ncFtwdEVhOFtmREgjPDpteTkqe1J1aUVdU2tTUkNwNGBfKU0pS2Q/OHpfTiticWpsIm05JV5UQ1VKd1V0fClmKTQ/Z31rJHgsZCRtb144YzZKUTpsWT5RemNGcVFY''@;'; put 'put ''VkVAJilfVGw3WXpjRkhJNUtPYiIqblVMLF5UZUFJemR5Sz9eT2NkSH1tVl9qP0lIQDoxfmorOz82XlVdJS88JX1wWSJWTDJudDEuK1hSUkExRV9PLGNnaDI/TVRjTHNYNkVXXjk9XVdPe0Z2PiJ5cmVXcEE8b0dqdnhaPkBUekBmPX1pK35uRTxse0o2RVoiVlZ9RF1IZVJIISZFOVcqPltQSj1d''@;'; put 'put ''Z3B9Rnk/KGxuNUhPXnZvbzxDUXhHRCg2IlZlcD90dXdnK09aViVgU0BAa3xMOnpbVUBWKz5gSj1JdSVWa0BBZUtbVz1PaG1Ab21vLGRQRTErVGVSVFtuckdsZWFAZV8qJmh6UDVHW2VPNlllWjhwOEFlYWBUZUp3PT1fU1FeMWkhSVZySk0paSozS1sqbyVQPkhiOnJdX3ZIcUEuKmU1MSFdQERx''@;'; put 'put ''OW1hTlVRP2xLW0RGMTwsPiVdJCk4bXlVbX44Pmx5RVcvU1Joe0hqL1tROHxqVXZTbEBScWNzSGQpMyNZUjJWcixne0lpe3xqe10xVlZgMUdTPFIhUCo9MDAiVHdPa0Z1dnxFJnYmVChYQSs/KUBqYS9PLFhqSnU8amhgOHN3OVc/JDFiYUJhKitkMmd1PEg4MW9qYno+eERpTFNBb0hfKW1fWVt4''@;'; put 'put ''QSUhSjUiVF9VMnhTPjxwPz4jSzl9RmtsQUhYMU11dntQSEJDOSEieVJNOFh8OnFsZ3suNEVEPTgyUXFafShdLFFHMn5hRFBrTVE8IUw/VUl1Nm0sQipPRXU+Wnx4PiN+aFU5cWQ+JF8sTlFlTXV9cHkxYUROYSJ0O2poJVEyQWZ0TERSfSJnO2ZzMHZqUmpSaHc7YWl1aHdgODdqQXx4OVswYmVw''@;'; put 'put ''Sk52LnpTIloxcGpeRnovSnRmOVIyOXRpQltFMltLIzMzOFdYMj5YdWwjb04hMFNJME9XTUN8IzRbN3UsVzo2XUJwenpVeHRoM2I0IWMha156KS51biN0e0hsZjlAKTYmLlhDP2drLltvYT5FRkNSQTR8Yy5vdjpKUVFJT15rcE55I0BRTTsjTzNCfTtwfl9LRTIpTD9BZmlyRWZkOk58NkhybkI3''@;'; put 'put ''emJOY2plIWEqTHIpfT1TbGlbRVl3eUJXOmxBT2RteSVyXTJVWTRyKXZfLGNebW5eUX01YFdXRFckND1OXm1rP0xzKXwkJlkzais/MGRbKy9pO092RyFORVBLPG9nQ0lyfShRNH0uQ3hWQzE5aj5AVDh5M047OGklVFt3JHk4dXw3bUZbMitqbldSKSZPYjZZWURsJkI6VVgsTX5oVmdDZ0NqQi45''@;'; put 'put ''YyZZKytkYXw9cFpXcHlELGh8Vm5nPURVbXtCXjtzSV5vbVJTKU5oVjxOWE4sMX0hP19rPCVAcCEoM1I5aSgwIXxkfTV2LkhnJVNwOmp1d0dgMyRqN2N1bX1qaCVQYGpwbSF6V3JFfmVjfmp+VjBWOl43KmEkY2VaQDBiYlUvNklwNm8vZjdvO1ZCZXg8djN5TnYwYlVXaGtQPV9FQz0rM195PiJh''@;'; put 'put ''aSpQY2R0OUtUK1pPJC5RcioxdiE8VWQ9JXUmfFA1ejVtJjN2diRJUnhlJGdoYTBwO21eUk0haUwwPD8yWWZuYFFDTyN8eXZiSFl5VSNPTjRhaUJIN3BVa112R1NeQ0lCX3x2WW9saz0ldGhubm0uL2xtbCN7NyRNLzMwJkdye05CU3BRZzRDejpkMC4rblgpb3BgKSgsMXNqV01ROy8pSntGV2t5''@;'; put 'put ''KltaVnFqW1BgfHRiW1l3IltQRnZLfUcpWyZxRy8ydDMyTUQxVnRAfj95VWM0XXwkKEc4ZW8hN29yYT5JWTF6SiMjMXdbck9PM19ZVGVCMD9VRF1hQ3Z5Snh7YlJYOk5SOD94MEJJK2cpOWx4W3okN29qWE87VTQpQlhWNil9UjI9KF5TY2owLFphKlQ7JXAxck9ERVF8XWVQOmJecHJxe0tbRFh+''@;'; put 'put ''YntFTEBqMGpGalIzQS92bUcuWHl1Yj1wMUtlRE83KlhKc25CcWBFaXtJIzpvdjw9OCpnOnt6X1JNP057MkpUIWo2JC43NyE7fGdeSSI8bWpySiZASSMxc20mSUNuNCtvbmpQWzk9di5UdD1zIS9gXmV9YFhieV9dNGp+dzgpYEhJMXB8JCxnNUtMTlgvTn5QdiZXLEZzSzhDUHVOcEZwbCN4akpJ''@;'; put 'put ''T2FrW11YezNDNEwqKi5bNnNzL09QSywmVj8wI11VRmVDKGxWYEpVYVEwTjlLWy9kPntifXxmOTtbPFRQUEhqWjU0Rm03bEAvNixkX1thIz1FJERuMX09TDw5SzQ2dSZ5al4rdEhne1I1JSZlPTQ2aip5NDZAXkBdcDMyKFo3c1BAYCokZjF1Xyg3PkY9VWMmSzBQbXpeKHNXSWAqM1pSV0whaCx9''@;'; put 'put ''RHFOS28kOCxRQHVkIzJTckwqTS8rcjNvaHRpaWIkYytVd1dMI18rdmUsSjhoeURXXXFodW1LbVEpMVZdcEd4STJ2dW9wYzp9UzJGY0BNTXAsZmBAIy9mNXpDZUxpMjFDXnslPXJpQDYmUjFHVHlZeWIvbFVyfldANXtrU1djVCJ8U110dkJSYnMsalkqOGpYQVlCV1ZZS0s7ZyoyL15YI0M4Pl9l''@;'; put 'put ''dkJXVVhDU2Y9cndMUmZGaC5ka3FjcSw6V0BINm9xayYvYWsoTylGZzF2ZEBOY3wsRXtwIkV4JS4sb2YjdXY3ezB4N2Y5ZEVGflE6QmUvV3F0I1RuIUp8T2NLbkQwLiEkcVRbYXhFVz1VUzs6bjdwKWU4Iy5bQnlVPFReSGZiUnA2TiRAJWQzZU9YVyMqQUg0cTooYFY+K2xyNj5GNjBeSDZDOjxQ''@;'; put 'put ''bXB2NzJ2NyouWD4/TTNMYjRkWDluVTY7ciY0O2EqJk5zM19HOytNNXdzLnVKNF1pPWRpc1YzSjRMbkVjXlQobDdUYy4semJDX1FrJjRFRCs7Y1BacDs2c1FMbXowPVdbe2BCZU5YOFtkW156Qj5rTERLOWBIfkVOSl15JjBxfiYxczV0X1t7RVpaQEZ7Wj0/OUw5fUlxTiwuR003MyguQkVEKmQ+''@;'; put 'put ''OGFgSkp6VWB5NXUlKlZYYVgjNzB1eytTWypjQktlZVNgd3JZIS9vXUJTPyJOL1dxdGxbTDkxUzVaNmREdyp3LCYubzdAdCZOQCZAUzNNdj43YGtCMC5Nc109eTJ5QGN5L0JLVGUifVh6W3FjflcvQn1IXX1oe2RHRWVlTnVjI15INWlgTiRpeGpudEYsZkt0Xl9AaHZGeSxVY3AkekFGNXNURXZf''@;'; put 'put ''WFZeQTlLcVtfPSxhSEJfXVczMj47KTE7ZyV5MFEvLlhkdEtzQHJlJWxJKUo3UiwvUzkqbTA8Wm9RWFhrJXlmQVhSfDE8OmEqc2tDNDUqJGJaeGR4OCoxcyYkLDFiSz0sIzpHektOLk94KEFPPi5Ja1dbYG46VTBfaHR2QlB2fV92OmMrcl02aVJSKGNdYEFaTG9teW5lZ3YiPSg3KXVhOG4xcEdZ''@;'; put 'put ''X3EoPEBAMj9EU1FOMHYjS0ZFXT1RbSlrYFdGdltQJSRJPWl2QyhgI3s2IVl6cXMsT1FIfFQjYUI0Tl9ZOCo1biUkSWc1K041cyV8d3F8MmRpcGAyU1ExZVphLCIoT2VYNCYwRDhOOUwrbDg1RCpTXkUmPTIuNGJ8ZSUsTy9uZlN0JjFZVFQiOCIiIkdGfWtSVUJ1elpAOHNsaTdQcyMqVGZdKnpA''@;'; put 'put ''KCxNfENnT2JhdSFiZ3Fzfnkhd01ZKSFZcGBybGlZTTg9fGtXTXBHK3hScmBuXl5DQkpBP2FDdCk3LnhwTFErUllzMHAuWWUoTXBdfEpaSFNkaHNzKmlNfG00TUJ2SyIoYGBeLkhtZVR5SCx6RTs6V1NgPHpBLkUuZFVdUEFkVTgqYl5tPlI9W0IuK0NTV2AlR05CMilQOWcuRl1kUSxjQn58WENB''@;'; put 'put ''bT1yQndjeUYkTjl+Rmw3NjNvK1EvMFAlQlhjOjlrRnJ8LEhaKXBiQkglZjpEKT9tKGNBWGQyfSFAa3dydW1NVFdxKm58UFMqSDtPN3xSX0B3Ol9oPiJgazZDTzprOXZoWFleVS5uZ0VbQUYwN2JHej5yLH4lISUrbn1mIj0qWiRKSmw4MztDJlZ8cVExcHs/XUJjImN7e3p1P0V2WDFtJDEvVmJu''@;'; put 'put ''NDUkYGFOPU5JTT1Yc1V+PWdVO101NEYzPHFXSj1ZQW41bDNIZV1JYzZrM2gvNn1uZCxLbyJuWEY1KjI/dC8jSVp4UDRUcmk2eGkpLklyYC9gKXFlPFcoU20jbDZkRHlfVi4jfT5tOHk4emR7ZTJWT0JDLj9udSklaHN2NGZ8MGZ5Lzw4bEJGZmxAQTw3IyY4eTsyP0EvQl17Om58K1Y4TTNnRXFZ''@;'; put 'put ''R2h6ImpaVG1WQlBILGdhaio5OG93PU59Lz1xY0pfQFd7SXNsN3g8R3REUF96KmJ7PzNHNHtBV0A/L0B5SGA/MWMmJUE+JCw7PklML0BUUjR+V315bUJmNyxsZTYiVkRTWH4xb2wocTI1RXUjT2peNjIjeVJjJXE1PVtrfFsqS3F1RyErNUdyW09VYHpVLC9dOX1DaC9YeWpzYCV2V3RaTnsuOE8m''@;'; put 'put ''I3ZsJTNiPm1pV3RaZVY/KTN6NUNwd0w/JmJ4dU9EPHAvOiM1QTAzdkR3SHkwbiJuMTc2Wm80JTRkXlFhVko8cDdiPXB1UHw/NH5qZyRkRVciO199U0tvJFZJYj9+bTxveTZ3cEhRQHdeVW53ZHldW0c/Yl4oL2JdfkJVPytQQWZHNkZUTylXSUswVG5QSX18UHQ2Onp0SHk9XXRwSFFpdV5VNStT''@;'; put 'put ''WmlwUWxGWGFxOy9iejxfeEM/SltwW0c6K2JbRUQ+XWEpJHYwbi9xQjVHcil8aSJEVzN5I0FbSix9WUkqUnZpb0kqQmFBdVY/fHZFTFhYKWRWMCZmcys+WSVEQndSeys/Pj4pYHZJT1QvL1ddZjhFenR1RlNULEpkUk0/e15uYG4meDFNQX5FLl9SXzNvWyQ7VVc7RkoxRk1DJT05U1ZrTi4pLzhy''@;'; put 'put ''V25weCMrMWs3RnNrREUxSi9eXiVoOytuOjl6bzFYP15XLmhOP15DRSRGdzNyNHV6ZGZ5cTg8PmokfmQ9alRUSGQpNl8+YEhMXyFMLnVQczQqQip3Sj8kVVhWW1hUN1hSPilbYSZOXiI2KDAzN1AveEo/OypmVT9UeHw3U3V1MDREKn5GWEImNCtULk5hWUdxaT4+eEFAejokV20rNHNYdlVgdWVD''@;'; put 'put ''cSolKUcmOkUlXW4qMnlPUkJNayxFZnt5T1JCfXNwM1U9amhgZXVQYGl6WyxDL3RTVz5ae3ksdjtAakB+cyJaWyNiVTZSe1pgeCR8bHcqP1IjV3kiSkI0Qk5aK2RvRG1jU2M2MmE9MHJ5ZW5Tc34jYUc7TmZLPyt2IVtTNU5WWmIzKz9YeygkO1htK2MreHdaUF0rZ2A6VWBPNzhYYishJnxnRGQ9''@;'; put 'put ''VThMfGs+RlMyX2NvYnAjZDpqcD9lenRETDkhcXR4R15RemZNJCprTVRyIkMpSnp2az4vLkdWbH1vKW5xMyMkUHk5ci52fCwmIzMiMXhxXyo0UlJARE1+aiFvWyw1UHc4PWl9cUt0dVlGUjNfai4pP0R8UWN2SVEvZzwzI09+TXxQZEFhPEdMRnchIip+bncicVUvJXRnU0FCNEJia2NyVmVvLltF''@;'; put 'put ''UyU9NmFML35hfHxTK1pgbTBHcWxWdU1aM2pGd0s/Q3YveCZdVWo8ek9PQkc4ZW9oeUkzY0YrWyszY2xLUyU9V2dMLzZMVGouJHtMSyIwMDh2Pm5majRLbitiXTgxR3FyVjwhdTQlPjwpSWBjTV1DNTRPIz1kX0Z+JVFud3QpMl59X31OM0J+QjV5W2VNPG9MclE7YSVqaVBUOG8ueS9JVlh3N19T''@;'; put 'put ''MGk9TFtwfSUuR0JrUHRbfC5VaXYjRGd3YXdOU0xTWW1lXnxfYmN9czlofWV9dEN9W2NmVl1NRHBpUzB0RUEkQSFHVUFtQnRJOFc4NDZpTEM4RlVJOXJESHhkTTg9dU1rK2E4WXJpPnlGWCUqW0YqIjtDMldYTGhtQUFXc0ZqSSM+OERtVzVyfEFIZ2N2fGA7Ry8vdkR1Qzl1UyUxb2pELlpKZ0Az''@;'; put 'put ''cC5Yejk6ZVAlN2N4N256RWpJd3QobjJWeD1FTzFYS3YvdlU8cUQrcz5Mdnk0SXRGP10+b3lodV9pajJHPzBWPko9PiRJYn1bLEVsLmJ5WVJvRCtkWyNESkgiaGhPX3tvTUwxdGkyVzhQMDtlK3RvRkM4WDUoIW5aYn1JRVsxJWNHd2BPQE9NNlJOTWVjQk02YUoqYX1EUWs5UmZWbGorQ2c/Nn10''@;'; put 'put ''dldgKU9qYXd7eTdYeXpmRWJHdUxyTzNgQnN1eU1WfEolfSFyaTw2bzFFfVlISmJ7JFddaGNfX0JSZF0sUDksV2Mjfl9EfGIremBUL05+RXRge20mZzhAXk8iLi9SL254VVtxOCN9cygxR1o9KmBYd0dkKFc7d09gTk9oXVFedixXMzxhaG9RXiJWcyQwNFllRF9gUUNIVVBZcE5DIVN3ISl5eClR''@;'; put 'put ''O2BEUHs/Zz5xVHB1QSJyfjE2eCovQDlpcmJyI0w/cGQmbkF+Ui5HciVZdSEhKjYkRFkyJlYkJHlOXUFRMngjO0tyIUtKImNJNyp8NTdFbj5wWVhKYlRGL3Bza0RHI1l2by5yeko9XjJvdUdbaV5CbzxOIytLWEtfPiNaTnp4Yl40WnVuPjlhUmQxezorSndxa0F+LE9BPChKTnhsJmJqdzpuckJS''@;'; put 'put ''bzE2I2tDQzNRSiV3VTNuN1NfY2FpUGV5TCYpJVklViVtNW1ScF5kYFEkSV13dXBWb08iTFY/TFBTbmBfLiFtdDpxKTQzSE1pWkxnZFV3UVpvXSpNZjN3eUNTelZIOE9gSk4xSVQ9MlBzNSNSXy51b1o6PUt+bE0qXz9sSjNCYHpSJn0zJlcyVWZ8ZixddkdFXkpWbltoRW5BZXJgd2B8U2BLaiNy''@;'; put 'put ''bU5vfVs7ZWBtbmVGXnMoW0hFUUJpcUZoM3prfFhxMT5iP1lWbC4vTDZZTE9nSSZIV21EJXAlXXcrSUo1Oy8+XklSViImT3RBOFNTdjtqLDE3ZmVXITFRNzE9XmpXTUhdMUkvaCo0c34zKEJyR147O3NrVThyb2ciMEQ5K2UrQy9bKmp8YE9vMlREKmc4ZSNYX0JzcWxkMEBpcDNJeX5iKk4uN0g3''@;'; put 'put ''MTFFcSRpaSxtQSpFLlsrMis5Xnt5fjp9IWYhUVJTUzQ8YyMqNFZeOipzYjdeJWAjaEleT2JXUVNZaEhzOXdqOEBvM25RYWJUcCkpPihXRGZhKyRQUitHa3tuY0gpY1MqblJGNzx3WDQ8P3lHMCgobWJDT05dTEFkMk1oVzFjPVUpNyxZezF1UjhISzxeV3Nrem5HNihfYWhyaUJbZSs8OS86QWJf''@;'; put 'put ''dVQmNC5BK2Z8UEhIS0Z5R0dMITtfPkNWaTdIN3ZzUDE8Ml80dHhDIXZTWXg+XlVNfFRCKX5NTF8oYTlldWVNOV45MVNYfFhsfSlPalB2PkpFQSNeNXBVI3RRNkxHTFh4MmZsPUQiSXNqMChdNXRIQCxQU3VmSV4rciR2Q2FOYjVdbHpJci90XUI4a245ZD5lZ255Z3ojK1pOI09zbXh1Yyo7dyhn''@;'; put 'put ''YTV3cCI5MCwiNzlLfD5NcyZ5TSVtdDxOMzpUYVJObWI0RF1lWyRsbT81UDxKKGBBTnFecHFvQiQmMz83eGU7I1VOIjVgTltobW08W2E6W2dWTSUpcWtSZCozfWl2JDd6KEYsalMjT0JTP0g3MyJJME9ZRnhJP1gmMGM6eldye0N0SkYjbzM8OzspIlNZQFNEYT5SZXZXXXcsOk18VURWXzFJSkgl''@;'; put 'put ''WT1rTSJHN2p8QjVTTjlsNmk4W1BxKCgzNVcsSD02eX5yXVlEclVQYzImVnVhS3RVQj57RCZBbXwsLHg9eXhxTzc9MTxtOk13V2okZHMzeDFDd1BROG5NIzF8YVhYdGxJOEl3XmhlZXpEYFNWRjo8SlJffiVCJSw+ZzJYaWtQNWJjejt2U09wJXpIW3hTd35iR3k0WGVCNHFwSGQidFt7UTQseC8z''@;'; put 'put ''Rzo8WWw/THJGb3EkbTVQN3VzbmY9S2pKXklAcDtwMDRGOiM5KklPZWxYX3wpeSNOSSxzLCIxVTJRPkQ+b0VtdjVCKWJfcnUsfXt8KFhOZiN9OmMzOkQpODpfemN+cXVUJSlMbGxFb2B+RyNmWUdZbnlTSk9IZk8vVylWcGJacXAzfkh8bykwMDQsW2pVdFZydFY7NlFwc05VZH13IlN8LyU1UH1X''@;'; put 'put ''aWxeMCEsV1ZedFpHTjA6JlFManZpTDRFb2NPaDFQMjZpP3woRWdlJCVOb253bUBZaWAmMXBGVXYkODt5KjdNZmx0VWFZSXljM0RYXy9UZT0vPWNIIitrOzs5JjtRNks6ckNrZldSO3tiaVlzZnFEPFVAWWN5S0M4ciNtZFVtR0hZVGYlRmozfkVleHcjNjRDWFo0NnI6ZjtJa31raWFAWS40NCNH''@;'; put 'put ''LypkS19faHhRP1gmNSxpLHFdRCYhdS4wU09fXnsqKSRNLiR6cmo+QG88fEBfZDlFSyxeSElhMmtZSlA5WVplSSVmVTQ2YkgmYElENWVeazpdQSJJbC9yZkM4ZEg2eGlfL2hbIzVdWW5FJDQ1KzpIQF0vSWtdXTxYbzRtUnFzanUpeWpgTExEcDAvUXUsdSFZWEp3LmdyTHBMeHhMOXYyTzdqZG5z''@;'; put 'put ''VFJuYiZAQ2hbMH11MFlbOk9gZ2hzfGp6PWtGfno1dlNKJHE+T2JAaVNnUzovZnJyTVAsYlpsWC9hQUBaRXgpPm0rZ2t3VX5UPzN1PktQKCw4TEpSNWcsPHF2QmprZD47UUkkP1pQVHlIPSlJTFk7KkB+UDw/MUUkbnB4Rm1VUDhkNWl5eyxxdFF4JmN5dHZVXVh1KFdsYHYmNUZfO2xzWmhaYjtl''@;'; put 'put ''RC5He3U5OUNJWEtlP21ZXVF6ZHY3W0B0SHs4PEQ0TEJ2dF9ye3AkeVg/SWdHeE87MnozJiw0LHB9RVt1RVlwTzdAMVh7Ylh+KS9jcCFsOEZqdHx7d19ZMiJBN1cqcDF1Z1UzWTw5VmM7RiJqXW4+aSluTnQ5cnVdVm5hQyVSXTxAWiRSbTpDOl9LVXpCZSo3TCYjR2Jlb1J+Ok5uQSxdZEtbbW1R''@;'; put 'put ''eC40KWFza3V7QEBedDRMa3EramNye3hwX0g9Zn1hcDgkKEJXU09+KjwybE4/eC5PMnRpbSJVUDJhcXouJlYyT1BXVH1leVN5ZywuUT4mXnhxRFVgRG8lMHhlO1ZacjRkPE5WbT9+TV9RYXhXdWV2YGxgaCYjdEpTQEk/XkAwVzg0dEtxWiZ+KDBmcHBUPSsoSlRyalVhKj4sXU5mP0RfI1hqWFcv''@;'; put 'put ''VyU2YUo3Xmp8amtYPGw0Kik6eyFVKW5KQGBac2BpKT1xTSg0QTNKLm9dTlJCbCFhOSl2Wld5YkRwbF9VdSNrd2d2Yk1OWmE+JW9+ZyRwVlhGc1RYK0c8ZVhQeTI7d2RwMGspOSs/O3ooNXNTSUtIX1YpWykkVW49WUpVNnpTdEVUXlQ5dj8xaWsvQ1ViUWZMO3xmXy5JU0xMYkJ7QVBHQmpPQFBx''@;'; put 'put ''YEtJayRFMEAlInR7Km5GTnNdUVM8R0U5OTpkLm0lQH1OW3MzT215bX0xL2o1TykvOEVpT3FqcUREKm1Sc1Yld1hpPVByPmVaLl0wUSlvWldjIVlgM2QlXTBhX0YpazxJdDJRZTNxJTt1WCM5Mj5GbVdaOGM5JGp0aHNfS2YlSzVmYEM8dCN6VD5sU0RmZTlWVm4uLzRMRD5eKG85RiptTGBMYi9T''@;'; put 'put ''MGUqQHZjMj9sbER1dGN4IzQ1bCpjWyQiPkQzLkZbPCFLLGc8WVtMTSlvQmQsfiglXz9ifWFHUm5tcFNVZUYvS2dIUTtmXUNMQFBFdnVTQTpUbD5eN2phck1nTGxRSipfZjpMfCpdeltKQlAmQyRGZjpPcjEzLHN1fmFdRltwU05HMTttLGlteldsLFI6QzM3bCMlKyIxY3RAM11fPE8ofD9ZMzR7''@;'; put 'put ''LF0/LmA1fnl6PUQ1KEhfISxrJD4mT09JVFRjUjE6ZmAlPz1LbGJQVVVCNUglMGJQX30iKkU+biZ3eig9RDk5bDQ+eFhDQjNPe3IsVjwlKWJVZEl6cHpHUUVLb3NEN0cuc25TeEc6Yk5Re2dre1NddEhSeD1md2J3bVJwdTNwS1pxaHNJWm4lMXZ+JihKITlhVUJDcWlwKmpkSXN3amFwcF8kbjJe''@;'; put 'put ''WmFMIVdaMz06dyUubF09TD1SWXMmakJlRjxLUUt6UnZfdDRAOlVMVGJBQlFlQDxQOV94eDxLMm9EPHFFUVtIYHZ1bm0sbDttfWlxNiZkQ0hUdSt9c1BJZyRpQG0kM0s5U3UsM1IlcW1LNlBzY2BXI1d2ZXdbbVErUjhuV015OUpUYV4jXkRZRXhnfHsiPSZSbkQyeFpzRnN0WHA/b2tnWzVuTVc0''@;'; put 'put ''dD5pR1F7MVd+RT8zTm1MWjZXNV5bIWt1JUFpe3BSaVBTP0tCNyomYipzbU5oJClQNW8saEAvV25rOkxIVTN0cHFQUXh4N0NweGw8eVYjSjZrWCk7YG0kU3hyVGpZTGVVWVImaVguYCtpQlNhUWw0Q2I4Y2g/Zjs1bUw8OEhtd2JFKlsxW1E2UEZ4N0BjYTtPNk9SeGdnbT8qfT5JNi4/TmFzTmtI''@;'; put 'put ''OCx5fnh7aixxX2kjT1Z9RiUkTyslP1lPMFQkejl2c2RrQEJgJFswc2RENExyW35jLFtnVTxyb3cjR08xQW8iZkVMJG4pX18jdXw9SngpRn10VyJOQmMvRGZoYS9+V2B1U0s2X1hYZXtmeikvM1R5QkFLdE06bUdmNFRhN2tzQGNedEBsYHxiLmRjd2pbY1tUSXxtSn1+cEt2UXJTVy5qYkAqKVMq''@;'; put 'put ''OnFOfmk1UEZSSCVSUG9uZXIseEN1Y2U7U3wwfGFMaC8lcEdTO0JBZi42L3FlVX1bSDE/RkhodlZvPmM7IltpWmN5fTooVU4jKkg4QlhxTylNKGs4OCUoc2g8PGJ3Njp0R0J3JGshbytvazNbPyojTVQzTmwva2FBInl5TS99dGNwKjo6WltfJl46Kk0zaVNaW0RfVnhwTmM3VXBILitpZ1V6REhw''@;'; put 'put ''UShnPzhudC5bJDhVNC46YnM1OXo2anRbU19ZPVhdPFhIZih0Il8pT2UwRTVfWFUlJGM+KHV3ezJgMzp7bltZQ2ghOFgoa0dMcHR3ZkFme1hgU01pUVV5Xyw8PnxgKyt7IlNhPjhAJitVMFUxODhmSjo5aTsqKygvMS9HX0gzVEt+YmsycytwbEYxLDxuRndDPXtMTjphdCpnd3IqPy49O1VBTCp+''@;'; put 'put ''T240fmB8dEc9OEgzLjx0Kn5mIzpHRUhTZndgNGlHZGVWcSVMd1lUSzVUYCsxPzIwWlZPPWh6JV5IYzNvXzRpNkZmflNyQntKdldGRG00cmo0e28/RHIpP24mYiNyTiFnITEra0piJF1ibmcmVlJ4PiVPSFZKZ19Md0ZdNkpaeyZXIytmTi8+Tl5KbDVzYlViSzMqRXZgKkNTdkgydT0xP005RVY1''@;'; put 'put ''K24oXSRTfiVWSWlyPVhMajFCe20oOXZVTUhpbF9NeDk0ezJjaX5pZ19yUyI/YT9Ha3lUT0c+STdRfFhkJFhUKGxEKSooRzJqXU0qdn1idHgoRENndzhPVjlYXUhbLDxoJjpCWVssN3tzSDtNT3F4YXdJd10mdzMyLiJ0Q2tnPnJzR2A/UVRuSndhIkd5LG0rWHZlVHo4VW5jcX41K2ZuSmleN1Uy''@;'; put 'put ''PUcyez8+KlUyPVUwUzB2N00kMSNHVHZ+M19gdG80KFVgaTEvSCo9cnBXOG12X1k7Znk/JUokcyt6JUg8TT1IL0wyYF85dkcyMEwza3kpZjphfTY7MExIMzFfWzRfOkwjPEdtPzBYPWtLX00pQGw8SygrPj53K3pQfW8wMURiZXBOdC5+Q2BjPVsjTkd3ZGFbPilzKnRDQGsmZXdmTE5bTWRMYVc2''@;'; put 'put ''dENOeTQ8bD0vTXQuUXs+MkFWfHd7W2dGcUpCIm9zX2N7c1UqOTdoPCpIX102T0psKCFqTkR9ZyUybEllO0p9REJnX2N1JGJVV3lMZE5JeTljNCpKZmpzWWcjeDdVa21AV25Xb0RTI1hVT0JaQC93dj9Pb2oheH56ImQySmtWVC59WD4zKGQ3ZFc3dm07flgqNDReS2puVnFDbWdTWUlISUA2TEBw''@;'; put 'put ''YTI7O2hOMi5UOnp8UTVFb3ByWjlCbWVxd0d3XWojSjhwK05VfSFxPF1kVlR7RWRrIVAyeiVSSlUjaVMvMVg7T3NDe3lbKF9aZHE4Zixse01teUhmVSpALEdITUFKRXNicClXIltyYlpOYU5rSlI0N3pSY3FqQGc+USFaWFVtRz5eaXorQGo9S2JzPz1dbCxTRnFqPyJtfUtSbjBPX1Nwb3c4VCZS''@;'; put 'put ''K0p9L0hRXXIydyE6P3BiU0JFMENXPk16bGI2dztwRkI/MkJuL308fVlvc1I2e3MkWURSezw0THcibW0kP3E9RUlyOzdFL3drfDU+azw5NnNLRFNWOmk6LnBlQ3xjOVJdcWQoJjZxWl1CUV5IOzxQXy50XUJ5LHZ+JShCeTRIOmRwYkdXO0IiTUwzSHpKVnZ4ckkwanI1U1ArUCE4V1c0XSkjSGZ1''@;'; put 'put ''YTI8VmtBOCRkTEJSRGFLcURnfUF+O09TSyg2JjZdY0BsQkc8SnhBWk5IWmBwM31BWk1Ta3FjXT1xe3pFX0tjVUJXXiFdRX57VD5mUlY+TmFxdD8+QjhTbGZ8c0NPUUl3VyJlPFhVP1UkdTE/cl05UF5ETH5dVnBQbmtTWylNZkNZK1pqRmxWY3lHOVkxYnJiMF1hbHROdWtnKyUqNWBmfGpYWX1r''@;'; put 'put ''dUw2UWFnVlI6bEZXZmVQPV9aMXI+N3hKQytgOFBxdig1TD0xMFFsQytZNHdkUn1PUUVEaFA3dm09TTdnWiEmVz9gc0h9dEVRWXxjMlBXQTxrVlA+Lld4I3hYcVZvRiFKcFRmYyosJjduJW80YCp7XnhJUDpsIm1LUGEqZCU4RFglR3o2N1A3SnlTcDtZSkRUbiwxZ2YmWEhsajRSSnQwR21OWzc7''@;'; put 'put ''KDJUYF1HYWQ1WDBLXVQjOXZhMGQpVDpgZnAvfTcjWHRFMG0zY1MlZyJtPXd7cFheV0wsYVVGPnUvRDZqdUhZezQ5MjBMVTFnNCpCKD15XjAjNGN9Sz00TjhFeixYJEJDY0t9Mi9IeCNNOXBiNyZeWSU9Tjp2dkNbQSs7OTVpPXNybDp+K2NRNEgjdnNoXkJORSw/YjF5XSpETVk1fUNneiVyUnR+''@;'; put 'put ''aW81Lzkqb2ozaVoqbzZrWC50ZCw5bHMhKm1tbWJBJlNiOnd0cWNPNklDNX5bcndLRE9DQDkoTDN0b3JrO1diP1RwYUxFMSErdTEldF1XbzZ1RnM6YmFgXkdxJDFnckdMa1FzeCgmQU1oMCJnXUlaSGdLSW1wRG58X3xjQm52ZTp2fSwxQ28lKD9hTFNLTTg2Ils8WkR8N3Bnfi96VDVVeFkkfHh5''@;'; put 'put ''Y0U3VT1Ve0R1WDNBQ3NRQC5EUEFhOVN8X2RzVWVOLDo+WEN7QDhhMiJ3MVs0MilnO1osMTpaMTlBTXplIyxyPG9dVFI5bkdnSjxzdCNuaEJVUyM5K1FyQmlZVkNDWF08X1o4ZmpibjMoWnQraWtTMD9IbjAkaHBCW0VOLFM9L0c4dSZ6YTZVeWk7MEhXXWN4YWVkUS9gPi4qYWQ5dU9ASXAlfG4q''@;'; put 'put ''V2Mxb2tmaDJEcjsldzkuUSNVMkA2SGljZytSOTc4N2A+Jk96LHdJP2YiMWYwZnxzNFRuPlVGQVs8Qi9XJU56NVkma0hUNjdVNT1GSGp3XWpfOHJ5ME9CKV9AK05GekwsbCxSbTxdTkw8L31ucXQ8dlpaaFppPEJCMklJOCRjMXhpaC51QDN6fXAlO09QVVhoNnBjWkNFZ2ArVD5Yb2VqbVZlfGFZ''@;'; put 'put ''WFlRa11CIXUsNjVGT2JjbkdvY2ZfNV1hJW1ALkZFfW0pWyk3IzY6I01qKlRmSDZhfCgqJXx2Tkp8MD9bczNQVCpAUSFtODN4SiZqfUh+Ly56OGRrOChbXlRsTk94JFVKN05fXXJQXkpzL1lPdSFlSDxwIlJJd3tKKyk4RUdnTnJMKTwjb0E5KWxSW1o0OmRkXz1WNld7NSM9IzF3RmN7SzRROFtd''@;'; put 'put ''WEciRl88bDA3X3RDJjZJaSM/Pz95MXZJaDV0NmJIY2lPdWQ0bExwKiltTlddRStDMyYsKnBDJENiflpGLCkjSEhzPnkxbS5LIWJSKjBlP2woTCtBemMlRjlJJUVfc2dpPm4qVSo1akR9dlBJXl9rX1FTRkhKPCFqSFAvdzkxRXAieXxbYCQ+XTkjaG9ER0Z8JkFwY1Y/akJ+P3lJWSRmSHRXRmlj''@;'; put 'put ''REJ4I3cqcyp3MyZqITVWaiNCPWdWeWtuWTZaYzA1JCtjWHV3SU83S31IcWIzSTt3NjIibVZETSJfWylsantEdkZwdGBBL0A1dn4zVjF0RzVBQ0kjSyJTRnNNKHhkPiRofmovUXsmaSJ7cz19VXRfQEVySmp9cWV4QkZucE5VPVIsN1N0ZXE3az95SERpIUk4VkQ1bnFqXTRUN1dkOy5HeW1ZRixS''@;'; put 'put ''OlU3aF5GMUxKIn5WfVpJR1hBcmo/O2s4PGZ+bzIwP3ZTJEo8KENCMHl2XiZqNHskRXZ0QnxISHBbMypZSXwmcyM2fmhoaSt7ZXg+TzVDYzRCbS4zPXJtT3FOIVFjMyQ7NnlOJU9sZm8yV0g6X2c0OTp0THNeTmxGLztUOXJNYlgzflhUKGVKPVZ8Jkp1NzRTdGM5UFM/NEZwRC5xWyRHeCNvSSZp''@;'; put 'put ''KVcva0NKXWdgYWl8VD14KFJNcnNsNUZtRGQoY0ZzY2x+TkdSIXpyVnFnZyI5NzVaWD40RXYpXXckZ0UvfGBudXtjTTxdRFo+R1IqN1g/NyIuUkQlR156SDFgJkNpOWkwU2ApV3NBanUiYWBQVylTdkFSJl9+L3M5YEJyL31MdCE+bFo6dmx5PzY6O08qWmwyfFIja1M4KSZtYk4mNk9TN084YU53''@;'; put 'put ''QWVMN0ZZeEdgflhpYVp6Sz5LQzt4TEFGPVJ6fmU5I0dJd01sb0NXamUyTGclJnZDTilVXi8qQjVvLkRCNmUiN1shL2ttQF5FSzkrXXEyT2Zqek5aOT5vSjJCRXFMJWsxUC9rY3Ija1tbJTxkXys6YTpdfnRrNHYjU0Z6YVJZbXpNT3xET2RkWXZ7Y0Z0aDEkXy5VWFBPRUVSXktDMWRQYGRJNFVf''@;'; put 'put ''dE45flg2czQhMyhrM3hlfTtCTz1gQ1kzUHIoMTVXKktzQy50P2liImN7LzpmJGckTV0qYmAreHN3eiMkTWR0LyZ1UX4rUCtzKSFYQnV1dk83U0R3SnBOWjQ4UVlkW1VQNTRWRHNeVU9NNlV3WC8odnQsTnpnbCpfa1pRRTtCYjhASW9NXl1yUyhTP1RbPjMzTkU2bSk6UlpiWnUpNjVmZG9iejM3''@;'; put 'put ''bjhaRk4wYmh4dT9HVjdWcn16UnprPWNHYDZvcUttNlZWfndfQS5ZIltpcWguKUQ8c1ZdKlU0fX5Ib3x1OntZZmUsNHElZmxrSE90ZDpfL0tQJHVbY21+S0lATU9aamYqbDgqdjs2OnopbDdTbzw5QEMufkBUazY2Wm0rJnJvdSpBVDExPXk5Z29bSGZlPTp9YDZyRGxqP2J0TWNzcStFLip9OH1E''@;'; put 'put ''aG5YWWEpQnQ5VF99fG03WFAsR2o8PTYiXmtHI319X1dmdm9SJC4+WTldLmFEMlYmYTE2a25hdFY4fnpldEF3Mj9ST1B1ZlQoKCQzIUZ6T155Q3E3c2ZJVF9hd3VhUktqTi8uQEM1KF1OfmZPUiJuaDdYPWpUOS8xdmtqcU9nNW55PTBDdjMkTSVGVWxQRHBOdmdsPzkldz17Mkk3V14uaFpxTzB8''@;'; put 'put ''bDRUKVBhQUFCQkd7eDoqXmF+dnpONURCTj5qR0d3PTY1eX1beiEqWiwkSi89bXJNUjEpMzFNX0N7VG45OkMvfTo1XWdAbzBkXXZgbVViZT8jOzBJL1Jxb0RBXkApfVlzY1hEO2YhZlc8ezdIUjI2dnxUbEhBWVh5UHwoLFRIVE8vKTNaSHNTdT1nTSpve11DTEJWcTdkdmNKQGk4QG99PEhGaDg6''@;'; put 'put ''JEQpb1IzVWhRVk9AYyw9JEA+aXV5LmY9dDtjaEg3c2JHVyNLMmBVczJuQixeJGZYNUBpNGNTTmpbOUI0UWdlRF5sNSpqXi88bEQ0OHVrKWlVODpDX1IkY2N3QF1OOXgmIjNjS1MpKTQlPG1uJFFJRT9dIWcvLkVZcURtTyNLWUUieXU5bE1LMUI6c3ZGX1VWNj5XI2Y1YUM+V0o2NHNAZy8oRG1o''@;'; put 'put ''bSp7PCJkO107Yk1RUXdYZUpfU1lMUylNbEdLQGA+KXI6PSpjYm4sVylXZD5oSn5zfFdbWz8/WVZUVjskTlMiYG9ebFlybV06MUEsRWopQiI1bktjPkROUy9AcnZYVzEsXW8lO18yOitSZTtBaXJ3fmNrZDJadFZrOjxwQlFLcEV2KD4oRmgwXnpBXTkpOE5qb1VkS0JyMyhMb20lTV5DMlE1IzJH''@;'; put 'put ''SElxaSpxTW50XlY0djdBYkUkMmxmRWJaRWxtOEk2OT45IUIoOSEjOXgjN05YdWgkKVk0O3kldDNiNldSKzM6aWUjdVsoYiF+MnZnaihlPCQ/bCRMOCF9JjRJOGVoZEU9Qm9MOlU5Rn4uTXZgUG1Ma1ZdI3IoZ0JTditSLkRlaz8lPElmJTk1O0Q4LEJESk9xQG5GRGdfd0lRWS9HLjFCfW0lUy4s''@;'; put 'put ''bEAiYkhrZC9IMUJrRFBXVWdVYEsudGlOdCErbD4xTVVEMEIybkV6UFt5IUZpcGouRj8rWSxRaHI5L20oI3xKKDs9SXFaQVtKdSxJUElOUm5UcV8pbSFHRT5yM3t3OHhSZGtqXmA6dDREdUA4XUh4X0R0SkA+fUpzUFNpZmk/MXNmNSZLL112bnNgVHUiODdCMWhnZm0lPXZYaEZIdUUiNmtbMnUp''@;'; put 'put ''YixfNzJiMVBgaGpKfTxVLyhiKkVXUmQlb0JTWTBCdV1MZzloKiMxLmUpMmp9QGUzOyJfWiQqTTxFT1JBfGBbIjA5RkBndiYoPHs7Yj1pKCo/dW80UUQ2fX46MUZZNVNGXjJzR25CcFA7JXYmJDxOQWdXT3xQSUwzSDp8ZDlmajtHZXlXbj8/WncrVEU3c3F3c2N9KHVANDpWXTg6OVZtJVpsMTNA''@;'; put 'put ''eXF4Y1JFeEc1NEJDd1FWIXQuPiVIWmVvcn1fJFZUJEFSMX5RYiR0b2czXz53KDtlM0kmbjd3dmRoTGN+RktGfXMuY25USCRRUX51Q0lwaCkjRXExbmVLRSN7WjNEXUZsalZYVzNpeylTSmBCXXQ+I04qNjg9KSZeQl5qQ3Z2VVF2VHc/IXBINExqYVhHWjRUWnBAYToxXzxhXyJ1bzYyM2pYdyok''@;'; put 'put ''QCMuWFNPLkRHcCEhUTVMMEBPSj5jcTByOHNuN1szMFdoRjQ5WzQufGxQazJ7ImEzZWhUUChHQmVmKzxsb2RSJFNRa1A1SlBXYyREJEM8LGJHMj1NSkhfJVpuNThHWF4kJitgfGhoNDk2JV57a1daS2s3eiVjMTtEakVKX1JpU0RlQlAyUiVbcl0/ZGRwaF1+RnFSN3ZXUjVONkYpbjI3MDlKJUVl''@;'; put 'put ''WFBnU15GckJtM08kX0t6PFg7UlZ6eUx1LzdNSk9zS1kjSXttbXdaVmxpOGNAbmdkVE5kMlgvU114emRmMyNIc14xPz1Sbzc5dzddcklKPTlqJk9aJSFzTTA/fW8pZjBsWz1ye1BgUlNbSCZvP29VQjk+a3doKiNPLi47eHNMNXMxfn1YS2Q2ZDxvTEhgfmd7VV87M1J6TTZAMGg4WSVxWEoycVFS''@;'; put 'put ''JHNWWCJKdE8vPEw3KDh9LlIqWkVqNEdhKmZKeXp0cz5TOXQoSSt1MiRwM0JMeFZrOjtnZWY2bTtmQnR6UHZOaSpQInYyeHxzVSZZbF88RiJKJXtgcD59P2g0O3s3clokeG9dKFY7b2tkZihwWUo/a3pBa2NhTUpoVVs2QSt8dVdOW1A/X0RzYi8yYFdWKlRyI1IiY0pMLHhfb0A5VHRUbTsoSFdp''@;'; put 'put ''Sko9RCFkP1ZgKiRDTihqZzc4Z1AzLE4mUH57TnNhI3VqeTUqd2A3b01WWHpaU0B2cWtAZDFSNFc5TDJAaWtEOCFuOUJ3aVAsbkw7MXlXVHB3bHZEcz5ZOlB+I35tI1R3UzUie0wraGUpIVc5SlYlNFZyKj9gWmdYLmxVYS9mb0tnXUY2ak8pQkp3aV9GdmZRUGI8ZXsraTdjVCxiJUtPSmRzflk3''@;'; put 'put ''Z3NnNnZwfEBoXzdDTUx0MHlrQXNAe045eTFtIzk/KCglOHhJbGZFaXR0I2IwM2hWc2Q6JEJBZ093UFdKXUVNP0QjN3FhQmlRR05RQV1CYVZEX2ciUEUkaVNbNWpWeVJdL0prbCVxRzVMaispcWV4IUdVfFtjNz8+PDIwfEJhdkxZO3JsQC5zR0FuSmw0OT9XKzFTIjRsUmlzTCIkYy5OPV1saXhE''@;'; put 'put ''Slh9YHw6cHFtdGNObHNxeU8vJChXMkJoSjRwdW8zal1HdDhsYHRITWNHM2JPX0IifEVoMWk1UnBrMDRFXWlVYi9rMU85Mnw9Zz9qNSQ5a3A+bHFVJn0kc3dzIkdDMUpsKkheLDMhaX1aaFtQRWhZUTEhVTBVQ0FUWjRnfGIyaXo3fTBgMUN+dkQmZE54VFtod2pMZlhGKEpHY3IwWFdmLlVXOkF1''@;'; put 'put ''ZS9aR0k5Ijw3PWl+OzZXVGYyZDtTVEpNblorKktrK1o0N2J+TjZ4YU41JF1Ndz1mblFlUTRBR15wMCwhNUpFbUNmVz46W0V0VkcmNkkyMGdpQDRETXAvVkcmaVQ7MDRaWzZ+Yk9ocl82Qno1Vm88KVRQUEs9Vl9ufDw3N1IrLFVPWGU0dk9gQ2BYdlozO3dJWEkrW1JOb1JERGxfbjB5QX1EdjM6''@;'; put 'put ''ISM5Nlo1IUd4UHxIRUJFOUYuP3Y8SXckLG4/MnFjSTtTUUZaLlFyfUZESUMsP3Fkd3JVTGZfQkIzYT5yXzhAZG4lWSNrJj5ubWBfZ0lJS2hVLng3VWQ2Nz99aGZUL3pEWWclbE5aNExoVT9XKTliNixpIzl+cVI0dGhpekJXXzBHaltzI3ltRSNuSCR4M1BmPj4+LyU5U2pEP2A7NnJ8SDF4TSM5''@;'; put 'put ''NTNvSSUlS1RQTXxvYCNUUndTfGZ0Yz87MntZZEQjJG5VR2xsX29pMGI+IVZZVSpyXnN9KVF8WGVAYz9yfV1mU2x2VSJQJWNbfG5QJkJXc2syKXo3L1M3STBNTSYoOGAzTlhzK0QsUnB1PmRBaSIwL0Izamh9a2NsbCE8RiExMylpdTZuTlEqNHUiPGg3QX05VSRrfGxBIlBad3xNblhbeTc3c2xG''@;'; put 'put ''N1Q6MlI1dC55Mm4peG0kbGcofjhNams1M2x4K2U+R1JAdVozOikuezUic0NKJUx4YCp4WUgwNUlqMiFdc2tDaCJ4KHwjXVd0KmBecUFtUVN+KE42R05RdVJ4ZmdBW2QyOSEpakNIVk9DTjdYcmdhenczQDM/OUgjVkxMZWRgbUVwWWgzay9PITwxZVdVWEkoYl9iJTh8MCkqYipbfEpyPzU+WktF''@;'; put 'put ''Q0hkRiFSWlFIUFU2bCNvLmt5Si9IUGtzeDBRSz5ueVdlPHdyNEomcD42ZiJjUVdLPEp9T19pM05TSV59YDFBWWNjXk9eLFhfV1pYaWwpaXU+SXJNNT5mS1U3P0JNSiZEc1UxMGFRbzV3M2paUWt8ZSQsYCJtVUpzMEhXI0NSZkxOZDI5RyUjTTFnazRwcCtARi9NMldkbzkkbXU4OEUuXnxuQjFQ''@;'; put 'put ''R0s5dmo7QkI9KyhVS0s7XiY5U045e2IzamcxbyZpO0hOdUZ+ezIwPTpHalRgfkFwaERwekNKMD08JGUuNXg2cTd0dz9YbnZvSDIqRkIiTCgjMHsuTGciV2pkLyZkVE19OE9POGp+azRLLHJdI0RZQVBMTWlXaVd0PG1sKGhxTyM6NkUpYUovRWAkYnFQPW1RLGAlcUlBR3tTY2QmaD5VNjtrZXx2''@;'; put 'put ''KXQmJS5UVGM8L2Z+eyRmWl1lW3E/ZyZWKyYyYzA9ZmpBXV1SZzA1ejY8IWtNbEwpfTJhWkhUNFZreCpERE43TVV9JlVnWFJBVjVNMj9GTD5xOTsiMjBHOj91ZmtPVlJIeEVpVlNsVTR7R0dnW1gwNW0oM2AjKlQkV2lqZ34uJHVPcHQkVWZwKGpjTVF+d3QyYD8kIWdNQWlbYn5PUTU/KXR6L256''@;'; put 'put ''bWdUbyZ9ViomZGYqaT1VMSQvUStxXUQoXm5bYl1LXj9IISNRQ2lWPXxJVEM4enwjfmNpTFJ3c2Q/aENebEo8SXpVPWw6eXl8V3QvfWY6KVBkMV5tQF8sJmF5Y0tVfW9LOXZkciZiaX0ldClTdiMiOVY4Jj4kbiVYJl4+eCVmWih7Lks0MjJZS0xAMTVHOjpoVWozXV9ZSHpmSmIxJishdjVSZGA8''@;'; put 'put ''SENfXyx5c0NsSXJOOilKaih2IX5aISleOkpaSlRyTSEqc0kkUkp3NSFNTVRiKGhjITI+W0R2VlcyTzcyXzw4cTI8LEVvMkZBT218OUM7dSNsWGJMSyxuM25Ud18vQk9GOllifjM6bTxCTmEiOWt7QkBYLHRGRU1wTHZ6fnxyb2pPWShTMz43YCZdNXpnN2s0ZWNUVC85XUovL1J7KEYuVDpoMWMk''@;'; put 'put ''dW5IJWkuJCFHOGdTNzZjU3YyZHh4V0EuOFBQdk1ZIzpTUXU5Q0ZfNVNKYiJGImVKTjciUFo4e1IqWGxPOjwpb3Y/YyZHVDgjJXIiQnRwWDVXQkVjQj5dUGcqSCI8fGgzWVEvNE5ETmsjZVQ+Rjt2cGdEbioiPWRhc0xCe0lheVB7WjU2RFd0diZPYyNGSHw7dT18UTEvTCUkSzJvWXt2ZkQ5PHF2''@;'; put 'put ''VnhhdHEodz9iLDZOZHt0MlNrRS5eNUBnYF5qNSg3YGEvQTI7WnF4SUxBYjRkcm5APnl3OH4yQntdYDM1bFAuTCYvfmZZOD92aTFhdlhpd0pNZElbcXEmQXtxNXlBX3RUfFd8OWVUPj8+Pj1rISR+SFtfQEtycHRgZ20rYmxUdHJGajQ+NzVKXmNDfmQrPHJMWFpecnZUQzJbPFltd1NQKi8ubkZ1''@;'; put 'put ''WU19PElTe1YvMVllTigleDw/VHdfcWdET3VxVVBJSCp3fjYpUm9kSS4uQ1lHSDlfdltyZF5gW0JYI1lVJHYrRTllLj5iMUhRMGZIPnxYXiJOM2xlJVZVKjZPPmRHZk5yW1RpOW9XPmMjZFkwUCNMMWpTSFl7eyQyNjMiaDp1Jll9R1JpJC9ieyZheTg4USZdcF0lQ3RMNFFLfT16bU14ZkkiTiNY''@;'; put 'put ''bE0hWEJZW2ZURjJjdDl2dkFBI0kwcFA7UEFgMTgiaCp2MDpseFhLQVFaa0x5IVddI1lHOihkTE9uQjxZRjdvem5OJlpWcUI3Kkp0ZSRtKUg7IS8iWHR4NU9BIVZwPE9IY0RIRzNMZWJnYisvZjQvSztxVGdiT2E8cHFQfWcmTnUpXWdwaT9FXnk3NGpdTVYjMGdAdC50b1UyWDM4ZGxLZlcpLEZ0''@;'; put 'put ''RVBhclNFKE1JRSVFa3hVN2hOLGh6dTFOWEtVIWNAeHJUU3lHd2pMZSEoZVBPelslV31KY2RJW1BreXpgPXlaPnVjXihCbEt3OHlhWFd3RVJuUnNXL19OaV9qVyFzM0FdT3dJSWxFfERvdGxUTjZRJVovP2t1Nj9VS0g2ZFtUREhkRSpCbWImemQ3flA1eCIoa1MvI3NOdWl7I1VaXWl2JitCKnAm''@;'; put 'put ''KWh4eHIsZTZDNnJvTlhWMDo8dWA4bXF0MWN2K3VeZ04sTz8pYUl3S1YjKTcxbDRbdzdGPnUyTUZ5UU1LQWZMYlI9TGNJJFBjWV9ANzI+S29pW2RVcGlJTEkwcGY+fGBvOytQQzZOPlpsMHY+PTJpPFV5TXBYfj1idkVIdWwzbUBxLmEhXlNxSytoWlttRm09I2ptJTIlX1QlaCwsaGFYKl1KRUxj''@;'; put 'put ''JnJwW1NWaGtaR0R8dytzS2tAfF5fPjtwVVEvW2RdeWhEayxwJE08a2U8PUMhamg4V3M6QWI+P3ZFKGNWNzlXKTEmWVFSbn1QeEoibzRNMnYldz8yayk6Jk1PKiI5V1NDK0FmTl1TJmhHdzxmJm81cmdHbEw7P3wjTndtez1LL2NreCVlS11JQTgxQyNzelIjdiJ+bWBZQytELmpbLn0vVSNjTnx1''@;'; put 'put ''ZE55VSl+Q0ojPHE2MCQlNX51Pj0/NCg4VmU2QGl3QDFQMGt3XiJJQ1pLIU9GfDo7RWs8eGhOb0Z0JDYkdypGeDQmUixISDQ8TElCcEFlOSpMWEdbeEl5ISNPT3l3KjxsOSFKNEkxMG5uMilublQyQUE9YlVIa3IvM0VzYSFMVVN3SzxrPmg9M050IV9ON1tiL04icG9gYGNlYi8iVFYxMlNLJk5V''@;'; put 'put ''V0Vrfnc1PXZ7USlRbiosWyMyTEQ2fHMsJmx5JnZEOF1rWkl5I3UjTSt9JSpiamxARikiJXtRJCY+W01tcGVwakNLen0jU2wsOk0jST1pQnttYkV9LHdHW1FwKnJIMF1YPXQuaWcoXzROdkUkIWhMfEFaeitQe2pnXjZEUyhsXXZUY0BrcSt2MSJzSDI1P2g6UzBPZDg9WH5SOUdaaCE/NF9eN1hm''@;'; put 'put ''fkspcU1RcjpFfEBeJnl4PkBGU3dyJio3LCtiejRQL3peNm9xd1QwQnQkbTF5SCVXREBnOTdYRSFSRnQ7KyF3Ul8wQzFZQzN3WzcqZWNdRz1BU0l3a2wvQlVWcj5TaCx+RmQrRlNKZVFVe2E/azhGaHUvSXVUNkZgI3ZCeFZFNFZ0WEc+Z0BMSWBYdHBhTVpGOCJBPk9jVUEvI2heS3JQY0FAOEVA''@;'; put 'put ''ZH0/c1h7MmNOd1VlYkxGcXxAJXRJZkI1XThmdHRTblZOXlFOVGh7YU4xfXk/ZGRjNk12IUBFRS4xZW11Sk9CO3wqXWpMP0xHcCRPKm18YmFVZVVsa1UuMHtlRndgRT0pOzA1dTtUSmUmO25sa2RPYyk0XlkwZ0teTT0hSUYwQVRhNEs7YCRbWCl0dCJxTUpTLmokeF9ZZm84NzAjN11YLEdmOVp6''@;'; put 'put ''V3I4enBlZjVOS1V5bmI9cWtyUzM7RS5tayJlISllW0NmLnFxdzdLPUwzfn4kRkdrITJAYzlqN3FadD5xZmUsWXEqQntGPl0+K2M4YGo/QGF1cCgxMjRwd3J+eDZkPlpVW3U9SzJ0eFBOOmpFOTdrVnY+TF8lcFBIW0hEMkRIXztrRzYzJVJSZkpdbGk2KWhAd3A6Sys0IlJsXUBvODRfTixJWzph''@;'; put 'put ''UDNhclMuN09JPjtkZUVlOmlyUEJtdUMvc01LUCI9cCx9Yy96JnQ3Xz9dcnlZPER4XmNYUW1SR242bWs+YD08SCVKfEplQUg0UGtDP0Y6fTNPNy5LZlFJIzVPO0prMXcpVGddIUFDRiJKSjgjW01SSCVSYzNXY0pdMCZhJmNpUnR5ZCtVRTdvOCorVnt+L3E6PTV6LEB3NT9ycDh6MndMRm1lMSZt''@;'; put 'put ''WGRVYm5bYGJ5VWVZXUJ7Ry5gPHpNZkVCaD46WTdBVVZKNERxQTVVKkdJYDJ6LGdZLmZ8NjUofSMqIXx1bT96b2U4OFRWPWcwfGQ8czY3d0kmOnlPMnJpbG04KDhIOVYwMG5fPHc+PXljcmE0dV8pP2M+JiVMYjolTlFjYHNnVFBHY2Nbaz4+Li95QFExanxsZCk5On5Rdns4enQ8UCVQUmB3cWA1''@;'; put 'put ''NihLNi9LZHZGRz5RdCtxQn1PM3BfI2BCYXlxa3xMLyhNLFZWakZ7SWokZUwsNlkiLl05LnkzWHA/VzxFLG05PXFCKiRid0g1NnomMWwsY3FhIktWVV5sNHlwQSJOLGpBLDYxWltrYFJLfXQxUXVLPik2L0lLNUV2Vk43WDg4ZWxqKzl3enl5eGQkJjd3SG0sSV51cE11LFl3RFJSUTcmYlFZWXg+''@;'; put 'put ''XS9sIVptRjNEbm5oMENabGdnTm90Y1hAK11xUl1mRl1wW01wRyNaUE47JmRXcCpKTz5dSXxedkFkaXI5IiQ0e21jVlAyNXl4aEY0JWJiKlgqJFhdJHNbN0lbWTIlKDpMd3ZCLnZIUTxfVDcseEBWel12RjcyayV7KDRlVjl0cVh8InNfXiIlYTBsbWg2R35tU05bPHE9YGA8Z1NeLEpXMW8wamh2''@;'; put 'put ''cEdCVUt+fmorOWxZY3pyQ0RRVjl0PTMlPV8yT3Q1OkxbN2k2Jkw+aVpxJWNANnEuXnFNJXp6NyZWQixQayJIfitKWnxSd3lwUT1rWE5ZeHVmfm13dHkmTTBaSHd8aTZ+azA3UEZMaTlOOVNWJEBUfiUqaE19LlRpKGBBTXJLezpiRHtmRmJeL0tCQ15ZJHxMUSpkW3owYlMuOz11WXxSKndRLiYu''@;'; put 'put ''cygvK1l+UWNFTStxfFZpXWc/Mko+bWxsVVlwN1BmXUBEMkJSVGJuUURoUl03VkxBQnl2YFMxdyF3UkgvXik9MH1wLiVnSGdiYlVXKjVmVmF6YVdrYkw3ZTdoJmZuR25USGAiOHlkdCgsRDxUYnFycyxYKXwyKkdCYFpHWlBecDZHW3VIOkxfOyI6MCVZdGRyTmBrMzBCLCg7MEZKOXZjQTtpQm0v''@;'; put 'put ''LEQ7KyQoIzttUj1bYVM7aH0kQXViQihxanNtcG1zcSNGKCkhYGJZKzpsVVVHMT1ZaWx5PiNeWGI4bndvV290d2EmXSZRXk0kWCl2WUhad01HTnRGNFtLYV4/aUA/S0s3K3U0UCh2IWteWmVeN1t+eyhwb2tYUE4pVlFAcFU5eXJHVkhWR0JXPT98Q3k8YChGYWFsI09jNkksNiJIR3hXR0ldLD43''@;'; put 'put ''clRQe1FXPHJMQnRwKyQrSWElWy9NaHNfM1Y3O2UpSmdKcTE1ZD9zVWYsY11LOCY4LE06NWJPdVU0UzZsNWZkd1ZVaTM2TmIwQGRLYFs4cldfOiVOc112TTclOCJRY29oRm5DRnNkVFl3I1FALFl4fWkpV09pdXtqam5iJkV0WlkxdVB1JXpEO3hpR0wrQVdXdyFVem1PIiNPMVFENmpvdmpXTShf''@;'; put 'put ''UWM3YVN1PSVrOmhSM0VWfiNsRjxxPDBRV14pWyhRdFVMRGFVMWp1Z24lQygsJmBMd1pwayozYGBpfU1iXzNCYi5vRjBIRjdER3R9MTdnIyopbSFyMVdDIlg6LjdPMEk4Qz0pbHV8Z11UXkU0K0tARG1PPEs2N0p8PCQjTShHN1hrLDVtQDhyZVpER2Z1OEhEU3t8amkidEkvTG8zZ3haYzooRkFw''@;'; put 'put ''TGY1YFRrKEZ2SkM6SlBeZjxXJUg4LDNPN0cveFppJWxSZGVeOEJgdjdkUko9STBuRTJYNT4wN3lQbERaRGk4W3lndS5lcD1ER2FpPXc5b1pWYUxPbipaPE8+RUhLLE46RCw4QWxzYnNtPnleVVBTSXhFXUtbajYsVU1sdGNSdyoqUEc1RmZ1TUYrcX5xbFp8RTdUKjgiO3hTakZkaV4lXVU1ZHR7''@;'; put 'put ''SD9DRExzM0NdYzNJemtseWVNMlYrMiQyNW8yViI6IWk+JEVlKy9aQX4kemxWYSZbMChRM19fbD9SXyRZfntIME86UEI7RXc4c0wzWV5ednRqXXx5S1ltVyVTRkBgVzc7OWtPb0dvKjYzN09EIWswbF5tK15XISJYQCFDRCZJbnI/JmlRWWNEYjQpVypPNTJbXVFTeVFsV11BcjRVcihuYlRNdy5e''@;'; put 'put ''Ils6QUQhSDk2QkRuW0JQR15NTyhFcCZ6Uzk7WGViKVJYLE4xTF57VTI8XlBdQC5UNElpI245RG5iJDA4fTRkWjRuSUh5Rjw1JGBZcV47bnB+MiVsdVlJQDxPP2R2bUAzcn56JSh1RUNJa0xOLGV9RzxPaFByeUZkQklENXJ5XVc8cHR9ZixBIWRaPFd9QE9hS0x8YWcqX0FvbWNKUC9KQ0x+ZFh9''@;'; put 'put ''Mz17TXJdRV1RQnt3USl6fVZPMjEsaCZSalhZbjJDQDgpJnsmQE5eJUd0WVI8Y1VlcFVQQkd6fExBLiUvOlRkL0AySFZbI0ZudD90QGZ9bVlsdjIrWGJ8WGo9aUtSKXROaUFTZC45JEw8bypBI1svV1pEVT9LLEYsNFlJJCR5ZiZ1TWw+R3pzdmd0LlIrfmFWNnNIN1lJIXYkfCMvRkNuXzZyfFg0''@;'; put 'put ''KjhoPkE2V1RrWnJldjxrKmBTeVk1UXMlODMjMFFfTXVrP351biJSXWVNYEdrI2BedlBaLDZEN3VCM0p3XUpGdC9neXlfflQiJUh6MikiKFc8OlplUzF+W1lwOXx0NnRlS1lFTyUxa3lmWmtzZEEje0IkRSY1fkI0OWxkK05EQSVwSmE9eShQaCZSSnw+anROdURxIzRJPnVVcH1oflguYj8iaEhd''@;'; put 'put ''VnFVSXNPQDMvTyloeHVVM0pLPk42WyVfVGU0KkdjJWZVWjEjTnA8bVFRRm9FPSMxRkhKVDJmbzQhLn0mWVlTSyErUTxCV1FtM1JAJjU5WDxDP31SaGxHe0JGNXVacD1UPTx1aikwU0N8YCFQdUA0YEpvUk1dWUtBeT1OWDFZImpOeiM+ZH5JODouOTJgbmBTajYoOmhJUmImeHRTcX1LZms2eFRi''@;'; put 'put ''JGpUU0AmciY5KFNRTSwpJkdfeGM0S18uZlZBVjM3RDZHXXRFQl9SQzEsOmFCW3ZsfFdrMGZxQ2t6UEVDdGVSUFkhKFJ5UWhkT1F3YSIhOyJOPXhwfTlSeU57d0cwXk9Heig3PjtPaUZzQVZyZHh0czA7RjNjLy9KYEhGJmEoQkg2RFdPczZhY08iWjcmdU9IT201LCVPcCRafSszS1VGSXM9PF9O''@;'; put 'put ''QSR1InZ6a1o7OTZdIl9NWHFLIWZxInM0OTxtRXx6ViNAIyxxWiVLOXtrVWsvZFF3dWppTEpJejojbFt7QF01VXxDdTBVJjNQYTtHUi4kKSVFYSFUSiZNQkJdRVgsK19bXighVjJqbnZ+TWJHdXlOakBKfkYpclNNaWM5VDVNQDE9KH59KyFjS0t5OGB+dzFnRGtOP35YQS8oUjhoPXBEL2NCez96''@;'; put 'put ''fCFqZkRyKVZ5a2UrRGcxcVM5enJicT9FJUkjM1g0aHtSMXdQWzJyU3YiZ2FPNFIzVjlGeF4vWVBOK3YsPGBZX3AiK1J2OF9XOzo+YnU2OixsKXsod3trWGQ1Rm1Fbi8pU2VSUSRGSjVmSk54T08sPDNAW3pHUHBPWzd0eXBTaTBMUX1JUlIrY016I2xxZEhAWWoxUnhRSzBRNSF6WStKVUtfVShx''@;'; put 'put ''SVpYY1QlXUNRUn0/QThNPnFgMH1VJWkpdDsqS0xoa3BYan1HbSNBOFBieVlUMG5QITxLPl1DbmJUQml5UU1id11nLy8wQDRddlNrblVGTDFUcC57bjUiZCY2UHY5Kmw1ajB6ZyF6NTtVfSJ2b3AvXlBldF44dk89WG8oSExYVDpUeT99LEE8OE4iTGcjTEU6NjNbL3I7c0FONHVTbS9rIXBgNlM7''@;'; put 'put ''PSUjc0pdc0IlYHRNQ2hpQGJmd1ZnVE0pTnRLMkxJIkw2c3Yxan1TXWlNW0dHQW8rK0F0Kmk7I01HWGRKWTxocjhDP3lSUzpYQ2VpSiQjWV0sOF11I215USNTUSJQLFFOK3MveT04bSRmVFZ1LzNhRC90TFplQ1ouNnk8WXR2QkRuXVc1WjshfTxLcDw5dVdSeSZbaXVHWzJfT0A3bXUkPk0yOm0p''@;'; put 'put ''QStIeCg/W0d9NyFCW28sYTVfbzdkekE1WyZpYCx9IzxaKzVacDk3V24uNEx6KEp1Tysqezk9eEhvd0FRcUBrfG1xMCRYOFhpaC4ucCl4Yn5Jc2EqU0VFNywzcjpGaUlVSVJ4ZCg1SzFIbTxSZm4rUm8jPjV6anY6VTsqMmVLWXNlTSJwREpDUGwualYzXXguc2xoRkhSST5HZ0l0RmxEUChNM3lO''@;'; put 'put ''MnRJJkY5biF5V2YoelpwVUZtKCg6XTdNYl4oQXhLfVM+Pm9AaWVtNSkyJVd9L3kmaSo1NFhRTUY3PStqVGtDdDsrLnRreH5Gd1djb3dMW3RTQylDOmRCc0EqakZ+VURWNyVmYyxIRjQ6RSVaS0N5aG5qUX5sMG59WGE8TiRYWjxFZEslOEtnNSg4SDR+JDtQMEVCRzRKRn52Vl4kJT5bIkZvfWNg''@;'; put 'put ''PTx9WDlQWnk6YGNGfFRnQDpuLm1Abl1uNHFmZltfak1FLnpgLDxZJEZESWFlUzcpL2I5KCwweW5MZzQmMjs/WFhJOzxiRTxyTjMrWisiIVo3WWFhSVAmeW45cTNoQms4MSFIUEgoUzQoTzl0Z3EsZGUodUVmI2tnfFhsaklZI01RM2FkKT54bExAd0J8JCJCTkpxdH4hN2ImXn5fPER9XWxZWk13''@;'; put 'put ''KllnJVUlbVJSPEhgflI8WCFUZl1xW0NVMi9KdzxEWkJXNDMwaXdPdzpmaT08ZjNrLHZkU2xCO3l3eENscHg7eHRHQVU/NUhafkYvRClATENCLGRoLzgiO007ITk1NSo6dSRaMjduK2JhKmU0MVJOQz0hND5nTnU/Ki5qRW48eHhfQEpPJEtXJWtAMlk2RnYlN11ldGxuKkVdIUcrSVQ/e3tLSGMr''@;'; put 'put ''UEBFU0MhKTxkdGx7MT84P2A6IlMmZUZtOzpVZ0Y7a24he0QmUTloSEp6aFVxQnQkS1RmMHU6SGVPMzF0fEZCaWR+Rj9hfDZYMEcyJnB0aHAmbCg0JH1nZEk+dnxUNTc0KSxeenBgLlleb3JWZ2BKSjhtKHlAOjRsZ3k4UlkqdT9rXWRpSj1SMFJ7Mi85SGliZW9xLC9KLl5ZdEtaNWs/a30xQEc2''@;'; put 'put ''QGRoSW1KT2Y+WUB3fW1pT1hdTi88ZTRzLnx8V1NfZWNSbXA4P2Y8VTAqdkhrfCk9YV88TjA0d2IvIk5ISytwLmt3RCpxUWRtZCNsUmt0MFdmTyphb3BFZH4lJXdZOD9jbVdwLjElN2FMMWwvZVVWSk1CRDQuPWtTYFNPRTNbOWxRaFZmZlZoTkZWNkg6MXB5KDtscCFgbzcrfmJYYjB2Iz1xenBR''@;'; put 'put ''MlIzdUI8eGBNTTAzMXUlfkghd0x7JnZ0emxGdFQkaWZ6Ul4oJnw9WEVRRn0mIVMxSUNQdXdHUXNiUU8lX0grM1BDYnpyP2FsenpbV3B8eiI6S2NMQmZOR3tKUSxgPGdhe3U0MClEcVlKfXEyUGxgIzM8VkREOzpSaVMoWnhPQjZVZy9IX0MlUX1Zck5PLmwzRWRKKUs9Oj4kMTA4JHwkQjB+N1gl''@;'; put 'put ''WzJUP15bK2FxLjx0SUddWSNhYWc/KEZmbGJ7IlM6VXN4fCEhJmQ8eWlRazk9JXxMKFBEUzN1Vlt7UXRsQWFRMiRANldJa2JlJktKQjpeRklkNExQRipSLzx3RW8sdE42VWpEd34jaDJfZFhGTTNgd0Y4ZH1RJjJsbjI/KG88dkBPVj82I2FoeVBwQFdJXV5fMjcoakpmNG0haiUyb3lpTFFDNSsm''@;'; put 'put ''SSx8cGNkdzhzTFRbRjxQOFAxPjxdMExSVi4kZF1JZkw9WFhGVGxGZWRiZU5tR31eb3Z9aixDLzE4bz18Qnk1WyloaTZ9RkU0JEVqOjJDdVZYJXFVVTdhdGt3XlU2OjlHRkxuZDUySVNvUlNiLDQrRktZb0RbMXAmUyQwV2paKlRVfFMzST5yWCVCUTVWK3N3XjRzdGw6TVdXSTBpQ001d017Smxz''@;'; put 'put ''S2pqKS5tSmZTPkdtaEtnLn1tbVBOUEVVXjhOcSUsbiEqZHBSXjgqV3pXXl96VCN1cl1xcihTWUY8a0QlbGMwfSMiPTs9L0c/P0UyPDIuNmsmJGM7d2R6eHxsSklmSV04WnMiWzx8bFpYcStYKCZPYT46OHZ5cUV1fE5fMGB1cCYqUihCMCZyXWJ2UlhaYHM7dyFEbENvOkdFMEVhRmlkJkxoNU9g''@;'; put 'put ''V0h5a2B3O1hYKUQ3KnVbZ0hrTCJwdD4ySW52MDFaWCpiJCx5SF1ASEZSTS4zWl9EdjMsPWsrQXdyaFNjOD5Xe21udCRWaEVfJXRiU05yTlJ1by9eXUVrQylzW2Nta0QwbyVjS1IyPHJ9M3soP14iUDxEamxJOjE5V35ARCs4IUNddU5QVX1JKz1mc2ZMXik/Tno8TS4sUDxNbzg9KD9YOVhzc0Fp''@;'; put 'put ''TkhtIzNZalZ4UStQPURMOVlGeH1WQmlvYTVjPmFwNmV5TiFWNT8odSpJa1R3TTdbLnB9LihFangubS8zbnEqUXVNI2FOYWhZQCpnc2RnSWJsL25JbVU2QmwmdUVJckRwLE91bTUzSDk4eTk5VUhCKyZWNiZjTEIxWTFeIlFhJEwzNkFSPTVTS31ZWWNkbiU7PFBkIllodz5bWHczW3FMVFQ5Qjo5''@;'; put 'put ''dWI/OlI3c1lSL3dhNk5aSmRpVURARnEqe09+UXVXci9UYkBjZGYveHVGODpaJDRfMUg7KzJRaT9WJVk+fHd7ZTxKX0E+KyslWjd0SHpqJGxwQCRAcl9MPzNWbzFKMXM6JEliVXVQJEs7QDpmMG9qNiNNdSkuXX07eVQpY2w2SUZLZnRxSmxAVFMxN2goIjU3dzA2dWtiUEJGR35dOVN7JU9nbz5N''@;'; put 'put ''VyUsS3NII1piU0tlYnAhMkhhUX0/WXBbXVRgJC5oUWIoOnR0VSRVYUsxNk8pWyV4VG83bjche3laLzcjMSwoNjlSfUReMUJxUiREV3ZhTDs6dHc1JjJHelBwVFNtZFZPeCoiOXlKKU1XZHd2N3V1OE1RYDsySk51Q2pNK0xXOm50c1l5ZUBxV1FjYylQbEBrcmwlZEsrNVFDWDJAJC50VERSTGo6''@;'; put 'put ''ISFrVldUdCVxb0RUMmZbWyh4eElvK3w+Tz59e2JeRyssXSIjVUhWQiouYCxMWFk4TWtkUElCPUNTNmJkYU9hamx8K3xPMkVxMH1Vc0M+eCNNNX45T3hVaSo7YmoqIiFtIy5lcE1WIXBpZ0FZUmc0Q2pNV306NW9ZfC8oR3h3NyZmRkIqRTwsVVJtP3AoYVt6QWlhdHhgM0ZKNl4+YTQkVzRiTT5l''@;'; put 'put ''fEZnTlB7dyxVOz5daDIpYU1geDJYPGpqNDU3YnY2cmQrdDdLOzUjVHA1VG1RMVhUZk52bSYuQ0luU2M5bld0UTpDRmZDSGpsVjkkInV+JlU6R0V9enJHd2k+IXgoNDp3KHMsOHleSyVscEUseW8kVH5kVVMvUGtGXXQhbitLNF1wOSV9PksrdnRXVWliMEVvPGQ1XlVJJk5QfnN3M2s6cDEyYSQi''@;'; put 'put ''LnlUIShNLlI1ej9ocVpncyNQRVk2WXlGJWZdZzl+PC4hcVRrRHpwP2Ype3l8O0RIfGpiXTVZI31wIyRzNmVZMG1SXnFwPl9WRl9MKVB6SCs+WWg8NV0iSE1CdEc5VCt5bVYrfSZrY0MraX5BTVE2fS5mPHlyJGAwMHpfPSl1QSNWeChad0taUThrI2N3fURMInN+fDF6LzI1XV0rKUt6SEc9cklN''@;'; put 'put ''bVM/QCxYUW17a25pUmRvLldXTXRRQzUwREdJTDNBcWltayxMPkJESzJifXAzVFs3OFZ8KzxDPTlmJHdiIiJ1big6XzQ/WDhMVUEwaTN+RUZPPlclI3dIT0kwcToqO2xQWDlNUCUmNmFjMDJUdzY8czwiNSNySUdsUixnWlsrV2crP3d3MV03KWppSXUpUXlFIVl+WCQ2LzZkMERUfjE2VjZpJjo3''@;'; put 'put ''N24oOiRmK1R3VyYob1pzbj9yIl5VWEclemswUEBDR3JjP0dSWjBWVCw2Lz1feWxVeHxeek5LInxwJXhZOCYhTy4sY245N2FbdEV4YjoyXyt8dnJbUkpwdS9+LDtVRzAweEBxVX12cnhdey5pYTZgIzVOIz5xIW5ELiV0cTlOfCFAR108fmFTMGRAbEcmQlddRz9eUyI3O1lMIVMpRjdmOT1iYlFG''@;'; put 'put ''XXJSXjM+RS8pZUJDPktle0Y1V2csUUxAQChTQlo/W3p6bDIvM2JEeCkkYEdobF1Ba29AL1BFYyMlOyw0Q3Y0SnZFe3Z7JDR3WjFYPnhRJEVXJk01W284LE5BU2tsPkpsc24se1JLWWZmaHpZdE4vSHxwWFpNcks+KSpbYHlWfX5rdGJGZnspbnd8ZFhfcXVleyZ4a3ErW0AkVzBicTh4dG9KYUBp''@;'; put 'put ''OmtsUXhfREFBZ2tgVFBENEohUGJwWCR+O08rOmQ/NkozTz55K0wqJV19WW59ZVdgYzEmOG5adCtYNC5RT0k/QnUwYnA4fiJbcn5WMXw7On55VUZCUUZ7fGdwVW4zMyNbfl8zWGJHamF+SH4mP3FwOzIjR31JcHo+T3NgR2RXSz9aKS5EO1JsL0Q6e0NycVBEJFYmU3czSGk8OE1HT0tpL3NaTEp3''@;'; put 'put ''Sl1HXjImcCM+dVopW0JZO1Y8KH5QY0hgKihOcFIuKG5uem9QYSNFQUtKMGdNPDoxTGJDRlY3cVkwXV5ZN206Pm0pKlo1bG9SPVdqeGcuSkAuW0RdSTljP1d6Qi9Fd3ohRmBZMSxASzQyRkJ+IVNWPWReTCFjMH5bbGxuSmJTM1tDa0lXfTNpbndjOE5NRS5jVmBaKXgsRmFQaG1AV0VaX15yJlB1''@;'; put 'put ''ZlRAKTRse0pXRmdpfl0hRjhkZko9MDVoQlpXRW9LQ2w7MmBdZl4vZlt9QHxIKyQvOnwmeXpXWnxETCpeYnRYTnp5PytsXklwSSh8STt2Mkh3TX0zUHA1fkJCTWE5KyoweTQ8clAsa050KmEvJm5IZH1qP01PdSFETWZ8W0BkWD5tcXErIn1rRFsoaV5pP0svZUVeQzZuKT5SRV9weHchQ3xGOGdh''@;'; put 'put ''czQuSmddOlZJYDszWXIzIyFheVJ2Ni5VMVBLYUtzOms+N190R3gsX3F9XkgwLklGRHZFcU9jbTFVIVE+aFFKT2p+W2NqOls4cD1uQkxlKnF5YjQsd3tYXkwyT3l5PWZSOHxFOX08fFYsL2FvZzwqUShjRkA0b1M/cn4oMU0jYkE0TGIpIVNCSmN3KUhKdT5qLnZkcl5rayV3dilgaE9WdGk4T1Z5''@;'; put 'put ''fm8jJTBYc1JEakVqOjthSVducHh+e2dJZmtKc114c3Zge2Y4UWdfNGNML2VVVDJ5eUdkb103NWR7aEwwOSVuOmhbQ1oodig6MGdgTCI3Xj56fUc9YyRJJDMjOlZOR2FoW3FOWDFhRVUzKitTKUFXX3Y7fmQ5ZTF8UmlDakpYQDNSQjJFWCQoP2k9ciFuX1VuOHkrdlBIe1tFL0xsInswT319THws''@;'; put 'put ''TjZnZiNjcjo4anFvKFV6VStYYFg6WituIS9zOVddck1WMkpUSFJLRVZfW3hPMi5HMSJmYyIpcEREbnRLVlRbNy5ed199c2lHPSt8JU1pVX5lWEZvfEddLEZtKSE+JVtZPSw9Z0BUTV5eN0ExeiZqUGpPSyk9Qls8JjQzbHo0S1lSNUslT3pYLEFVfjIlZT9HZ1dlaFRbSWI9biEwOXc0JlZ6entO''@;'; put 'put ''NUg5bChiZGkmOllGOnZCej9yNzFRMlk/eVFfZGpuMnJ0aEErJEVrWVhLW01Haz1gKHU2T2NoNU9JbSlALHMwbU9ESiFMcGxGJn42MW5LOmJlemdgcl9uRyRMQCkvQFg3PyFeZmgpSmJdXkdWKTpRMDU3IVslWUh0bm86SndMWVhgREY9aldvP3AkSlVqXTIhSywxOD5HSDhed1JKOSslUWxSJCl6''@;'; put 'put ''fldiJU5oRWR5WktoSm9ydDpoLGF8SnxlJDVKKyFqdVJsJjo1JHI5IU1FQHJRNUM9Si4yfCpOPV0heF8yZDhWNikqRSZjJGgycGEpSVB2THAxWShwJSt8QjE2O3U0LkdlOy5sVTZsYH4/ViozY1dTTjhXVGFiKW98RS5nJlU6MUx8OkI3VXd0U2p9ZXZmYHlITyEqaG88RUxDcXRkaGxUZ1olIWBu''@;'; put 'put ''KGc1KV0wdV0kZSpVVm9zLyRHPT8oJk97XXVCa2dQKlFvUUs7Xjp+ITxSRkt9Y05HcXBOZz4uYTlhJkdvYGFhdFkhd2YhTElAPmB9RUhMeDRtQ1AiKiF9YntRTzJgb2owdG4jRE0pUmFAUllRIU03Vn14Oj9OXmwwU1BxKmRJcURjd3YhRXVhSjBHbVJFaV5gXSQrMUovJlBMIlMjcUZwWVM+fi8p''@;'; put 'put ''cUZlV3lRTT0hOUI2WFQhb3soW0RAPnB3YEgpNjp+QyxuJFZpQHA7SVZQUiVrTzlEWTRgczhxPSlJOitycjc+ISo8KiNjUFlffENqanN4bG0jVVdLSzo1RzA9eFoyMy90YX0rOWx8QU5aRCpienFhekdse3NHRCNffU06RDouPXJEX0EhbVV3flEqXSNpV2BeW0xpUHVibHdnUkZzWDBfTGs4Ry5y''@;'; put 'put ''ViRoQXpDXStERihBUDJiM1lsMHpnd1Y4IUlTTzIxPXQ6e0w0W35gfE9WTzJsa3ZnPSh+VGN2Nn18MWZ7Kms7O1FGVmFgLDlLX0dxPWBlRTQwRzlUIzAyRWspP3RddCt4WyQ9Pk5DPnNgekFXYDIwXSwhVyhVI3U/I2BLMXclbnFNMGJwcjo6JFoqVGBNcCR9ejJ9TExQT3lDVytHe1dGKy9JQGdm''@;'; put 'put ''MDp0bHA9MisvPGIjTTVOIWFAZj1bM1kwaWIpM097YSh5USgzeUpXUjwkTDg3I3Esc2U6aCo/VWooIl9IZmg7dzRKZjJqPGo+UDt1dytQWDhid1A7aWhXWzcoUXtgQVUvNnFzIkQpMEJHU3F3WTdvWnBGckJmdDdiZ2VWLlFjJGFxXnxnTn0sbFJPOjQyakxkRGpRfExWeEVje0V0aEV8aD9Ba2B+''@;'; put 'put ''YE5GO1BGMUJgVWp8bnpJLi9uUDtQbGV5fnloej1WK1ErRTouJl4wXV9YWU1MKlsmUmtyVkpjJXJxLixQLnMxMG18NCRjdCszZSFSI359OixKYkteSDhLSVslVXB9XyM/R2QpbUYoOmFhdz9DaXM3R1VWYX5GKHp5en10Qnk+M18zS3QoTWY5Qz58bHsifWgwW3JQLG56WnFmNUwuNG5kIzxXNF0j''@;'; put 'put ''JmQrXkl9TWx2fD8sPjBbVyVZLmc6MztmITJkK1dEcCZTPS9oTl4/Q2pOJFkhfX1saStQTCRMZG5tL35CZ2w2VGBOYUNfQFRlWGBGdk9rfSkvI0xTNVNgNz5CSyF8ayVMflJSTHkvNnlQPXEqSkhkaFYqRihUQU9yUiJjM2glfX1OS0FNSHVQdFAub21ISUpuN0JRJjV0WyQheDJmXUFFKFs9WVtT''@;'; put 'put ''OCsmTjwqQE1jTDVCd1YkdHVKeGZ0N056P3NdKD0hZlVCXjJVeyhlbHRRUVZablYkWmJ1OkMkUz94cSUrZEV2L2BKal9lRDF+S1BDe0J1b2FkMSFpRTo4a2w7V2hKVDxOdCFnSHQ3YUE4OWlkK2p3IylGPUheeFVMU0tGbUAwK2xLU1R9UDZKS3IpTl8kIWAoN2dZSD1QUFRBM0J5KlFyVW9LPWhW''@;'; put 'put ''KiNtKipXfFFXelMzL2s2aFBRZk1acjdGLzx4JjR2TVV+ITxUZikpTUYvJT5KUjYoa3U6MTYyeEFKJGlZS0dbPDN4czdXYz1lcEh1Nmg7RXNHYyh+YzQmIzdJWUJRbHlKY3NsPVBoIlJLNHtPUSJXVDxSNl05ZGlZbXRHNmBMMjVPUjVvan19ZG9TYll9IiVpWlF9MWdQfHNWazE8UHl1OVk6ViRN''@;'; put 'put ''QUs5WnB+Q1F1VE1kRCk9MlNtYHM+RTVaWFFJcChMbCZ+YUF4ZkNUKWklJEpKM2NzMFcoWEBzdWBkXl5AcCpUeDFYcl5la0RBPFk2LyxfPEx8dy9lK2s/LFN6YWBPMFtUbXQvZCpfb2kvP3oyI1ZneVZ2e2h+K2FzXkZoWkVyPTU/Iy9KdzF+KjZKIjIzN1AiZHg/SVgkR3dKKmk1LzUqbjpEM2VW''@;'; put 'put ''bjVIWjpeZDReekshcU13bn0udER6MnslPyIjbnhEI1psPCZ7PXcuakhvNzEvOVkmSTJNSl1BJlEjIVBUSEQsWl4qSTRTdixOWy8wZFpVLFZHQGVuSyYqSSpoVGU0TmloVnplN2JeOCR3eiZnWWtLMWwsSFozJS4oYD93LDIsRGpbdyR7dXNSK2h7V2hsTWJoUDVWTy46L1FCWklxJEcya0ErcU90''@;'; put 'put ''PFdYNG93SFZ8TDIveEY+eE5geTJWbzFSN0g9QGMuTi5TfComWUtNWDFMLGF3XmFBQmJvX0A7aCZqJnE7KTAoTyhGM3g5XXxqSzlqNiZIKzlEOEIsX2EiUEtMLFdpblQmYExNKSgwKH0hbm5XKU4pPj0sMTh3amdfVSZaNjpMRnh4PHlkPmZAZE9sNyF0fHwsQ005IntGWTs9ZFolXngxN25LUSM3''@;'; put 'put ''ZGlqQG9zRSphXUJAYSx6O1MlZ0wpekAkanc5X3JHSSlzUT0kKSFaVSszK058dnZ6NCp4JSNZXyVvWGFyOT8yV2JkQyYqNUtrOzRrJGNfdl1wS2RMcyw+LCssfXxoejkuNVFrPjdXUC9bc2MzTEB9QTlGSyRoTzRbTGtzTWk7U2g4bHFPbXpNK3h4P01CMihEZCxCLEZ9cCIjP0lkV3xsYFIlYmkr''@;'; put 'put ''WiMmdDFLJEkqTypMJUVPVT0uVTNYaDRCMjchKX0oMTkiPztPemo2NVEsQkZpKDZufDhsdypwbU5aQnp6d2hSLnM8Z1prT0ZgenB9ITxXbFZPTXg4SkIvKzQwajh3NSsvTUIlSWhzTkgqS3JBNWBId2VEWFBAZC5VPUYvWSJqcjVPWDxMPiVQWCU8fTJxdXZ1fTI/NiI8JDMidzkvZ1M9LHlienJR''@;'; put 'put ''QlpRImVbLF9iL0xtdVZPOltsS2dsWCh0VmJtcFhKPXdFWlFba1sxLlNGY3R4TEE2UFtCKFQpMXc9RXB5ZzFEaiRzT2ExQS9pcG53MHpWQFc9QD5SfnxIRWpHIVp6UVlqXShvbHpJfFhDMlsmRGw0M0wrNig4XzlPM0BASCNgN351IjUpc2JWLDRGUHBzLyp8JSZlUE9xJlJYWV46NVJmbk9gWUhi''@;'; put 'put ''SCtkSiR6JWRAT2VocmFZe1YzYz1mRWRjTn05RHs+OUZHVV5tOTJAYkAydz40bT1XXzRlZ0NpPFg7NTJ1SmFuVH4sLm1iVEZ4QVU2akUzKDNxPkplJD9VVzJXc0xuOVF7UE9oZjVgIVBxWEVDQWd8c3FJOEBifm1ZVWVgSCVtMWB3RnUoX2h+V2xwSClbMVQ+QDV7JF9dLEsibzhHXU9KRCxsUkNg''@;'; put 'put ''XnBGYG5PU154e3NDNSZJb1pKR1A3ZDl9I3hUUiVkWVkhQHJdYUk2OnxvWjE3MFlFVEgseUxmb3M0a1pnRSsyLGVfc0lEemU1T15DTUkvfUtiZCUsPj9faHZmUWh9biFJNCwpSVZ4TXpnKzV6RzB2KipgV2wkYWM1KXlYWmV4Q1lOPWxPIywsREhQTHklaCs3RyRqa3QhXnhNKXhjfnJGUk9+YSJS''@;'; put 'put ''WihVTGlLL24rWGdCfmhbI1VTKEYxP0F5dk4uMlsqZGVqZkFadlgyZHJfbVpTMn1QWywiImZ9UkU5M1dITVQ6WSpBUzMxdE9jdDQoLlc9SWwzTmomKkU+clEkZi9fKEdLZndVS0Z4NXFBLkBeWnFGWy5sOTNEPV9mL1R7T14+T3R4SXdPX1speUc/Tyk5Lm10UExteWN4JFIhbSVMIVp+dl80fiNJ''@;'; put 'put ''ZVhadDBkZSZ0RVZJTiJBQ3lePUtud3JiMUIqTzxgfDFrMFFAOEx1cElpZVRaMmlUS1REXlIwKSJRITg4ZCtweXt7cnZgPVB1L2hoO1E2SGIhU1AwJnpDNXV9YWZiaCtBWGc0N3Z3SF9iNiQodWR4ZGhwTiluS2JlZ14oOnw9KStWZkdHK3h0S3krWzdDRjVFMHo4OGx4TTlPWEw6bDFSTmFaenl8''@;'; put 'put ''fF9ieGUudCp5SXNde0xZfFI9dUx7SjMrenU0d0Z5I24ueVNwfnE3TWg0ZEdDVlpEe2F1MGx8Z1UxR1goWS94ZExIYn45Xl5uYWwqIUBuYWRWWX13SW03QV40cjhAVW1bfW90Z00/RSEwOUZKLCNlVWVFNjIjMGp5XU8jWDM1UFBNeFk6IU9FL1lxI0tFN0sjd2sxa2ZZaW5NPm0pNlUkbnZUWiRF''@;'; put 'put ''dlcjWzJxKkE1XVFCN3IzdStbMEJCUiZeT0BYMkxGTndSRF9ARiMyPiNZMTAqeyNAfCxSZi9KVGk9L1dJVm1jQik3Rj5uYUM3VzFAOEFQLixALEhZMmtlYiY6TyZDdk9tYip2dXZwcCJ+MXNKV2BRI0xhKCRZKDxfVCg2XVUoUXFbOldySkNVZGlRbD1yV0ZSSHJhJmxlVHo9cExGS3IqR28ldU9w''@;'; put 'put ''Yk1LampYO0xbbCp6M0UkZE0lW2d+THtXezojMEBHNStYNW5ybSt2WkAlZXU5c2d2TGQpcDB7KTRrXk00bVhoPH5Lfkx6fT1BK2EmXzJkJHNhcDhMRHJaNE1RR09Ke1A4dDR4Ryg1OXZ0Q1RFOm0ie2QiVE97JStzdSxWelRFPy8kK2lScHxwcVk4dEtBcX5QTylAXmYqYTVsSWAxM0FkfjpxMD1T''@;'; put 'put ''QlVoTig7alZrMDk9LmszIipjOntqO2Y7U1Y0PlAzQX5rUl1NPnxpRTAiWy4/Q1YsfWhedUQ6aTt4W1tAb0UwMlFEI18yI15zOVhEQU99KmxnX2I6Y1VXd20mYjhtWDRWZFFuNCxnRmZGTTE2RmNXPixPbGZKMHh8Vjhvfk1iNGteMX46YXYxQlBXclQsd25AUV8uOHZdLExDOzVYbFhrQTZqV2g2''@;'; put 'put ''WTc6OGk9QV1hdzZ+ZGhzdC95cTgqLC4rMkxOQ3NXUzFIdl1scnJ8fnAsRG0hPGkqQjozXVAzfSg5WT8xSE9WPXxSdGdHITAhUHZFdjVXK1tHRHhPNDp1Ul9HM1U7eXo2PVJnKU58N1FrbWxlPTgmZG4uR09wYXtXaHhYK15oMG1GKnB0UXRzJFYkQjlAfERYfWxSemdeU1J1bj1SSE18RX1IWU01''@;'; put 'put ''VXhAJkRDa1RqU3JxPFI9bFhsflddUXVvdyVZbTw0NjdqRVUkQkQmfT9xJDo/ak9oPTFlMnJ9eCxFUFl1Y35RbGxNKTRWUzxYTHhWd21PaypMe24lfmt9Ik1Rc214Rk0rRDZrST40QE1nJigkYS5Ka2ZdekFSamY1JUleXUg0fUt+eVhmOj0jM0VHTjxzKU9JfTgoRz9RfX5NISVdQnxqcTQlRXBg''@;'; put 'put ''JiVKZCM+eCNARnMsJUBOdj9iYUZEfFMlSipwVk9LbnRxVSRSMm1IR3U2cWpmTyFPaXUieF1YQ1NCRVdPdWRNWCtFem8yLz1lTEBwfWZPKyo6STZIZWhqNTF0Rld8fTBMbGQkKExnJD9xUHFIO357Pi49KUNeMnVQSD1KUjliUWJ3SVtAajV9KSpZfjV2b2w3TGA/dUBsWCxEfTF8UDJTKD5Ta0hq''@;'; put 'put ''flYyNjwjMSU0I1JCNU1GSF0hUUMvRTgqenR7bjhrWmBiZEtnI3t1a2dPKGpQVDouNmV7dXNYbVAmQTlJOip0JSFee2ZfdyopLDx+QV9IaW9pLDJFUzNPYElCQER6VkEvO083dEQ8LjFbWHkmK1cvQUs3RTppdVd5QEZ0ZWUyMjpOKn1jPVVwX2Mje2lTVUh2RWxXfGhrIzdYdm4jOX0kPFliMS5o''@;'; put 'put ''bHBsMmB+VXxuQDFsfTRnUWY5Xj1hQ3Q2YS83WGg3OE84ImFnQU9+PHN8Nn0wbEomQ3AzOVAzJCthbFcqUUYoWFtQMVdVdmZEfHlRXjthZ05IJDpyeiIzezJ4YTNYbnVkMl57PVJeOSFFXV5bTyxtZlUpYjRWcC8hfXwie3lAT1BlPF57XV5eV1RpWF19T2ROPWtSdEhYRlZNO0NFK2koZWlpcTlb''@;'; put 'put ''RHc7fk0hOS92fSw1UkxSfUR4Ozk9fSt5MFV5QTpASmd2eDtPRnViQk16d1E8MyYzRyVEWSY0b3p8PG9oNTkxakhneClbbFklMmlIWlVZaUorWSFNcFR9ZHhgNiZuayltfV87RV1yVGh3YXBJLFMrXT15a04sN1Z3e2ZnIV9TTyZvYGN0Zy4xcnZaWmJHYj85ZUFDZVsyO34vcTZ7L0FgazF2KCt+''@;'; put 'put ''UytpYUtIbHcjbC8wPkAmWi9gODBxOXtua0N8JXElKm43UWI2NzJoaUIkKUh+SCs1cEhtUlNEIUNpISR6VEA8aHE9VkVIeWxoTUQ2SW8oajU/PjRuaFMrayt6JVc1SHpOeEk8e2BtYDooX0tMUlplUypFfjh6LERVXSgsVlRFe3hRQHUrd1E0PE0sOHFeciZoMWJWNEMhUStqdm1aZmZgbXAoWmlN''@;'; put 'put ''ZSNtO25GP1I9Mjg7Y1VmTF0+JU45S1svXig4SWxpJjFIQUBdMHJnR1Mmfm8rLGc4XmYlQndrV2kifEhZakxUMkFGe3pmc10mL0xZOUxpOzVdPWhiRjVtSF4lXykoIXI9eVh1XThyMH52JFA3P1haQmYiZEo1VE9QUGE8dmx3Jn0vVjpAIzVPTV4+TTUlai81dFdvPnYwUiVPRzssbXojQl5QKF5f''@;'; put 'put ''SDk5SEthSno2bGN0QURNOF52a25RbDNkL3c9U3QoaGg9a3hyX3VtR2Uwbj9MYS4kaUVFeTE/cXc5dXp5YDFfZnElQkVdc0VZfEVUTzFhUlZ7c1lbcHMlWFApdzhyPjpleDM9PVEyPD9sSUExWDhvKjZgYU5YajohNkAsOmZUSG89bC99fDNCZn1ofmo1dHNNUT43RUBuWiUwNUMyaDc4V101VUt9''@;'; put 'put ''IVdJKzNqXTsvfkAhbVJyTlU2UUFCNVUzZ3shcDh2YH46Y0VeXygxUkNgemlsUTlEdWZQUXksb2s8MlNdPnZbSmMjeTIrdXg+UW52OVlmWX0uPl9leyR6eVIvNyEqO15yU31sQlVCOGtJNk1MRTxdNV8yR3pjLng6aWVxSUh0Uyp2JWZMJVBfQFJsMUY4UGRWOzooSTJzR1VkMW5HXk1ER3U3cnk7''@;'; put 'put ''KWF7O2xwMCQ7I1BibGhCKW5rajNsRVRScW92SyopWXVCd1owOzgkMik6KUFnVmJDKUBKOk53OkU9dW5PdG5KVHRLcnZ6K31mVHFgZj8ySzR3YyFBX3BNckEkMX1LZXElMiQxQnN+MCkjdV0hdFBPZCg9PjI7eiVCOnl+ZEhNTl0zPSlZKSN0U2s+Y115Pi85QilTUHNpazxndXpoY351Tkk+azov''@;'; put 'put ''a1RKTlFJX0w/d1EkdSlfU3hCang7dEkreHxvL1EufTEhQSlKImQ6VG9hMnhkOnhIW0JWRUdUdT12ZXFwZDw4MWN2eSYpOyplMGhORE4oUCtGdzFrZUhMXyF9bip4O0tIQ2heSiVVYm5MRTFbaE55fWFKd3R9SnVkQGxLcSUmXVsoIUkvLzg1eVl+OTUxSFROSj5zXiF8UDZVOz8sVEw0UEBpIitO''@;'; put 'put ''OmRsQm9tVkMyMGE4PW54TiM3KWs4RWF4UzgiN31zKC4ucURYVmp1PX52aGdCMVpNdjw/RXNBRFprOCwsMmNjazdXREgsRnlEbXVgIipVfXhVeD9rdlM2PDNmWllrNDRZJTsmJVB+bXNMPyF1N0JsLz9QJTVnUzVHTTQ9fEtbcikqdD59PzE/Xk1AfDRNU3hKfmxnanhhJnpfMGEhd19UVzljP0VP''@;'; put 'put ''cVZfN1NTQktXc2tPe3omInY0KF48XjhMUjJbdklETC9JMWt0MSlXJkksfVpYfSF3dXpYbWd7KyU4W2x+YnBVIlF7UkgpIWZePnhfVnoyaEFMTTEwJVg0SGBiaE8vZ3AvImB+aENIR1o2d0BUbX53L0hUMC9dY3ZwZDhfdmV8em1EMyZqI3wsVU13QzNkPUNuVnxxSiVvRypNeitnOjA5OFZ2ZHRo''@;'; put 'put ''bGooaD9rNUJuLEh0aCtNQU4kPkdsKUE4Q3tGWSN5ZU9bS206OCJjK3tZY3xJNkkkRks4cUBdMH47dThjeTJRbDRUWnxnVXE4dTF7Z0V5T0xKSGpmd3teKTl3UDw/ZV4xMjpTTUBhWlYuKFZlW1FNIUg8QVk7P2R0NTIoLy9CVUF+Y05ZOkx4c1gpIlFSWigoQWl3T0hlZD9+KE09X2d2USV6cXt2''@;'; put 'put ''aTchMmlBNzNiKXk0aE5efF81RWhKOjQkNVYoJT1wTlVNQ3BGdlF+RWZkXzIqd0wyOyErLi5JN0AiMEhgO3ssV2RYKzZSWlhWRUtieWwhLGx6eXAiTk5sI2w7JlYmIXZjT1dINEd8R0RpaiFKemNUR2RCWHNBdSxVQSF2JXlQfU1ocjoyLkM2fVZQazNJeXU/O1BFWklSYVN6NEFhcnM5dFRCMjFj''@;'; put 'put ''XkxrRlpoWUt6IX5KRT9uUlpfTyE/d3M3Lm8kYyxSZEJPbVRaNDBmeSEwI1Z3akdUMU8qIltsRV4jKmlEWDA1alZ8Oj5xV3NtWWQmKDFAPUVJYVViYCFkZiRyS1hmV2hjP3RTS3JKeEZKYCx9TV18UV1rbmklODVSbDVwSn4+N2lAU3YsWj87PWdCOlo0N2JdSCJDamlbPGNqKzhwQ3FPcFh2VGx9''@;'; put 'put ''O0h+X2lebip7NFhjLGIuWm99VnI1JWs2aD9DOHZxPChkNitFTkIpNUhmbloua28kJFZeRS8zPnovdSp4PklQU2Z3VUVrImslIVZ6OigyYUJ4WjMxfjgoVXZeQFVdcyk5dFN3dDczSzkqTUZQTl9zdFBCRlpTOjE5enZbaCkvRj8jMWlsfkJMN3prdXE8cG5Ed1NmaFhNYW9pMjBJM1l9TVArekQy''@;'; put 'put ''Yih+Rml0TnZycEhZa0Y6Uj1GeGlZWTw6eitbMGVdNzVRdGJVWm8sUmJiP25FalM2U3osc1JvfiJUMWoqaj0mJnIyZj9ZPitAMTByay9bckZnQWI4cF16UHksRDIwZVEpYStmdz1NcHhxJm5uM3BtekhnIkNCTntTL3pMPFNUZnlUQW1RdEBAPCI5YUtvfXlzO3laP3s3WllvWFFdIk0oRUd3bDti''@;'; put 'put ''aH4+YUp4N1BhQjRFJnQ2MEttVVs6UWBMbnVCQj5kJlh+LEAkb0M9dFI0W1VANnZnbld3fV1DcCg/PGQvNUY6KENSQjRQNHhLUWFxaVB0dyJLfDIwOTFyWGtaSSFaaVBVNGlLYE8hXWswVStTRCRYQmdiMmFvR1N+fj9nNHIuQDhEPzk2NzhXJDNAWztrfFN8Lz1Hc3FNNiZxeU12UkwzRXtzfnFT''@;'; put 'put ''PE52S3MvdVR2RzBUY2N4UXA1aTFOfixhPlRIdEVDdlV2fD5mVEBJQWtASnZKOk1OdVBXUUZmNFd+UGM6Im4wSUVGNzs6bnhKOH1hJERmQWNTcCIsInZ4OVU6YmU8Y3JkL0ZHKXZTL3ZXWClJNXQjV3JhOTpjTj4mR3h2Xz8hMVBgTyU2ez5iNil8QUApNyJ9fXR+eCEwdHNwJiwrTkkhTUxVQkMh''@;'; put 'put ''U3ZQNFQobCVUY1JrNyo/YzRbbkxAPW9wTl9pbCYmYnAyNE4jVDNqRUJ+PTI4Z21LUV8sdyN9NTtEe0khQyJjUVRZPkxGcHVseH5HRjk7Xzc4XUJNUW1DQC8/NXoqaEU2Ylt6dWgxVWA7MXlac0FVWWFjTHtkRUhRd2F5aVFrL0xoTnNuLEVNKWMudjZXXyUwX2BHRz58NG1XXXQjREsvQXl3bGtY''@;'; put 'put ''USZLJD48LkBiMzNFLDBOJGt1KlVLQ2I0JnFIMkwyc11pfH1RT3sjSU5KJCxAVzZyTkdoIkVRRVFwa1g4MUdYfFpXdl8/Y1puRD1FNDp3UkowSUs6JiNwNjI4OnQkPkl5PyJDNzxRaFBgOVZbbnE9Pi5mdC9XJFNTMSpAITZdfkhoaUVQJkZDJWsjdnBsPD5DRTBlaz9tN1psOU96QSVOME08N003''@;'; put 'put ''b2l6LGJ7XWY7cDxKTVdfYm5TV2MlRXkwS09tbkMzLysmZyt7TUNNMVlvVygjRXtvYDw3ZVhVdVFdYGFMd1F6WFhjMylXPnJYeUkkWHE4YlVadTlmTGs8Ry9XYSIySE57WU8lQmwwdSpIbzFpd0VMcyQqeE46ZzkrRkdPQG9VSWdSQiZoeGYjSyxaZjBmbk5HeC9ab0h3YlRHU2EjM15SIUdyV1g7''@;'; put 'put ''QzJKaHljQ3JEUGRbUSUwYDtMeHxVYkNrfmR2ZSZxb144NzNUalNncSxbNnQiRk1+PUxZVUZWTTNBNER1VilSLk4oM1hXWS5LK0g7RiM1dE4pV0VDXlU+bD1hdXU+Xjl+cDAyNTBIQWJzcW5pakUpKEouO3ZxWm1XOGwjWiRTZSkwdWtIQHUmXkhgbU1eSShhRChCOygwPkEqRjV8bExsfi4yJkhm''@;'; put 'put ''cERWal9dRFNWIT0/fnNZbGpHVn4jZT8xMVd9RnpHbjosamxrfktOUzp9OH4/Uj5MMVN9IyF7dzhpPThuWyEqYGhuNnA0Z0dqOkw9KlM2SnZQTTREYWd7PmJURnFUZ3dxSyRWWng4dH5LSUBjOCgmRUxsRGg6e2pwPTkhO3lqJTt0aj8wN3hmQjJXUnxzUl90ZV5tb3tZVlRVekg7LEQzbUpEe1k9''@;'; put 'put ''UWYyK354O3tjem5GWU1iWThiJn5heS5UWS5NOGF5MTg+eyhORCN1eHhCVzw6K1Ezb1RdV3FfVlY4ODA5ZVNvb3ZIJi8uUjxKRlc3MWY7Q3QmWG47e1lJMj1HTmQuJTt3W2M4UD9hVz8hMURAS1lPbGQwNmcwb1dIXjJpJkN0YkgpQF9fMGxKck8uJDx+UCw1bzpnYDBuJDlLYGRLYVJ1Pyx9fC5J''@;'; put 'put ''WD5zPVsrc2tDL3ZhWnN6TyFUXU1dKF5fQXtaeFNhOWw9KVl9aT5FNiwoPlF6KyMsRjlESCl0MWw9KEQ8WGVPbzp1RTdKdyVgWVRgLDgufFt+K0MpeX5UIiMsY14rRTo1JUFMaVdUaV1aWDUwRnkvRUMxJmMqRERPcShWVjdPW2Avdk1OKzImeGw9QTl7SzJBZnRra3JqViJyJFh5JjZbRjVKKjBF''@;'; put 'put ''byJ1JkM7NEolNnw3Wj1MPGEuVFBmOyJQOVVvMExOMXwuJTRXcFgrS2Zmakx2U140TGkhSUE/W19ISCY3Z0lydjYse0tAcDBLejw5Y2gqbWh0REl7KDp5dVFwY1N8LDRNJjJZfVVNOWxOYSEoakkrZkE0IkA6TzF2SlEvMlIqc25GVmlpfUVKNWwxO1hEdWJkLFgrJUlAcGUldXlASDBhZShtTV4y''@;'; put 'put ''QC94NHIzYEwvLzhVfEE6eUN7LEU6biNWaDwpfXtvcFJmd0RzRzJ0VC9oO0lYezw6KEVUakRDMi5FUkQjREJzUUN4S1R6clk+Vil3ITh3PWp2YzU/SzdgSmF6aFppbjtLR09USHRDKH5tKyE+WCg6Nk0/SVMxY2ByWiExPGNXJUM9JmFXbGNtI15ndSgkYz9vMCJbfkJBcE1kbCUrdyJ1LmpAN29n''@;'; put 'put ''O09gbChyI0MuXU1uY2U8SSJeX34uS1FmfUo1OCF2XTcyJlJrQ24/Rm9WQXMrfDJPRUIqK0NgdjJOMjxwRTQrVF9jOHQsI0pvTCJVaGJ9Y3EvaT5Nbk9SU2xIaFQ+IXBoIjBRc2p2Pj4zWFY9cEtOXXAwNi5qa0wrbT5dLDAvNjlXKlc0LjNCMWMsaWdsdV0ue1BtMjAucGYlNDcrKkJXLFcuTWxP''@;'; put 'put ''N05wfU01cWU6SntzZVt2WXJgI0BoXSo3TH1eVVFiM2tSeXVGfEsjSXtNfVBmUDY8MWM4JG0iVy9HWERHYUcsPkspRWQyVitlRiNrSCgpRXUpMEh4UGIrfVI0cTVDYDF3Xm5hRUFuO0gvWC54aTgsOSUwIiswOnhBVTVTLyEmR2R7OWVGQG5bVUE1OVRVM0BwLy4qYGN6NEhPOjArYW5AMi52UixX''@;'; put 'put ''cGVDWVRpZF9tKCZxcENRfTB1VUgqeVdsfnZRU1d1NFpsdmkjWyRDI0RDeVpIdk1+WTcpJlI1MVFDdnFyImoyXVomNzxVezpFfm07aktzfmN1LjdgcjN+IUUzNWF4XUswanRMNFg6amBkbSRyT2Z+TUtqX2o4YD1xQ2JuQyVqakh0VTRzUXBOYDEkQnd8fkw4YyIraGx2RDFDK3BRMmc2dWZlMUZ4''@;'; put 'put ''NFdNdC5iTn05ZSYuTTJsPGRpLkBoK2hrOHBleTlRR15uUyRnNn5+fStzVVtdbkdXO0dTUSspdzVaZW17YGB8TU4lRVhYTmppNyVYbzQjRldtelZ5XkM9QHUhPS55TGRfRUYybVBQVCRpSHJdN2AmKGxmXXtYMihaZCs4WU5HNVVxM0ROMmBkPGkvRndBViNraS45TmR7ZmFVaUc8W3BoY1J2WUQw''@;'; put 'put ''eEtRTkZYTytCKX5NSnFsXkt6Rlt+QnVWUzRkNEJWQCtQYCtmIUt8Z3Z2ckJQW2tnbFMkak13azUweEJCL3JVeUxhZkMiNE5WRUJfSD1uV2Y1SkFVeiZ+RFpeZ0o/VFBDelNydDQ6KEExMXgvSTV3NyFfIlMsVUheaHYlRXdLYGUsJmMxNDY8SXNhO2pjUVZjdi9pQm53fVUrZjxVOGAjUl5rI0xf''@;'; put 'put ''PlE2amlTZkwjcj4zQCRVQUQzU3FtZXNsWyYpUVA5TWgubmJobCo2R1ohZVg9Iz9dIWpzVGUqTEk7bkhoWVVqVnglbHNhbitiWyhPZWxCRjwmdHNoRSEuViM9T3FuO21QJnoxS2Z2RmZNO3w/YnlqKWRIOV1uajgscyRsT09xX11mdWNFWyxiVXE3NUgiZmswNkJYPWc9aVVNcURmMmIjbD01fn5q''@;'; put 'put ''X3FEPThFZTY/anpFTkUoQGF4ZFBNdjtLcHNGQ0JZd3U1bDJbKV0sOiI7dEVsZ1ZuWStoeXo7MWN4KjhIMmEsY09mK3dGL31TMU9SS2M1RCFmNl9YMkpRTEE9VjtuVWRTZUFEUD16ViVrYixRdjAkI2BEZlMoSyZVIn19Qy9DL3ApVC5MMjkiSDkrXWV9RXo1cmNtS3oubH4xcmc9I2g9OHl+O3hY''@;'; put 'put ''QD9qIl9OKXw4Pyk0dCYsKn1EdUIrQl1zbSt7eilobkUlNCx1cUozXUAyVFomPUQrI15ySEljOWVHbzZDNFd2ImpIcHNZNmkobW5OaFp0XnFTSyEpZS9NVWRrZVU+NnVBPWZYImM4YEE4LypJSGUqOUhqMHx4aGUzWUpiQlBbRn4qdl1dS1J1eCwzbXFQfHI2ek9wUlhVaDx1dyVKKyJRIXtwd0M9''@;'; put 'put ''fkNhMEV6cVpGaFR1TXg2SmhaZEJ4Jk5KNi5NdEFUYD0qVkxhflB6SGBdb1l3UkVtNEY+MG01N19fKTh1b2E9PnJfXzJGe2J0YTdRezYucXUle21wTFlVSjkpTUVaY1FsXVlyNS9HMGNiP3sseWlhVj1RKkh7dVdXW0hRMl5LRVFBZyxAdWFoOChJVjxRT2JYIzZVbFk1ZHJpO08pJFFLUCRZUmVG''@;'; put 'put ''bVdSZnRsTDB9WzAhT0R6fVYuaC9deD1yIzVpTEhoaTwsPW5xLjd5Ql51Smt4fillQC5rYk5Kek5MSCRldUNDY0RjUXo0XnBiVnJuXis9cFc6SEtCIzBzL0h8Wl5rRGxoLHw7djA9N2A3TWBBNEQ9Ym4iaWJ3NzJSbjRPNj9tKG15JVpld3BAJC9FQ3Y1cHsuNnBXNT1LeVRVOkc7VURSclU9KHBj''@;'; put 'put ''fXxwX31Udjs3azQwS1NwRUhDeU1gT1l+fWdheitYTyZEXjE8Jno2ayM4QkxRIWsmeDVrLCNfMSRtNnhVZ3s1JD9Zd3MvUVJqYU1CLlNnJGIieWwwXlgxa2sjczM1bnhCX3JuLGZrSEg3KG9pSTVlVmRjfUReVHJDfWpwYjMuUjF8JWoje2U2ZHd5bXBTYlRLSGokRF0oTDAlSixneCg/TnZDR09Y''@;'; put 'put ''LyZaKV9EeDdJdVlhakh3ODxpLzxjVW1oMThqY25ZcUklMFhFMUY1NVY3bEhFI31IUlloUztMTio/RUdJPXRfcE1RNS9jdUtyOyZ1TVNzSV9IdilVfVEmJT10Yz5WZ01BXTw/fX1SSzBhRENELjM9OS9+T3w7UjFgb0hfbihOMkA3JnZAajpCZ0BxTmJrT1NxYlVZci4waWNeaiQiXlpqRXkyUlNo''@;'; put 'put ''OixxWUhKclBzU1R5QzxNWVZDbnxEbGVtcWFgP31mTS9lLjRyNSlwVVJaSX5kbT98bDRWeWp8SjtlTlgsQTZUeFYxRX46UVRUKU1XcXl7Vk1udD1OQHJvJj5SOCZddzxDZjB4Wk9APS59RGV0QkRIfWE5dTdWOzJueiJnJmdFfG5dc1oxamxma1guTnI0P3olQEVYXUc0WSZyTlhlL2BxLCxqQEB6''@;'; put 'put ''LilJYEFNeEM9RD9GI30mekc9LjVTZz84P01EYkhYakVESXQ0UkhhfDFhTz85KVIpRSlke010M0ltfEViSy5jS05qeTg9dzQ8MjdyUG5uL0d5LGBhVWhPeU44R15AJTV5KkB6UUcwSk5KJlFib1lRJGttcyRDKjc5eHM3V3xbdVRlWmMxMVE7O19vZCR7RnJORiIpdXouTERXa3s6diRUNHs8UktD''@;'; put 'put ''W3ZwcyhfWUVhdGcqQTJ9RHB4eUhyV3RCP3d6cEdsR2d1UC4/cVBiZTUuZ3soQmpOSSovQlM1RlFKeEdsMFRmXVAuPipKZ0Q1JFQ3RXE0KFFGPDgyfVh0Tz9tYW4lbGtqfHFPRnMjdWxOQGdAbGp8PVtid0VXQHZjM35ILk15Rns/UTdvOjJzb3NZO05bVjFbTHJYaVZ2dGE/dEhoUTF2QXRva3o6''@;'; put 'put ''azIibUVdNSYrOUxHdnomZDB0XWBpU242WjppXTpPYjh8ZktLQ21DMy5EYVgwdGl4UnIzQl1xNnpYTzRWd3x7OTNAJE8vZ2QlNzYzQDsuOXNwVjBLNitLWEUzPEkwbHp7cFJGdEBOXlBEcl1MJU13SkJfXSVIYm9JM3dYJWk9K2dAU1dGRmRxM2BqPm1td0tOfGdPSXdpNkclWVgvd0FrS0tBK0N2''@;'; put 'put ''U1gzI1IuNGgraFlOWD1haG15YUJrLChPPnE3JnBpbG00W2pEaio3NTk5ZW12cmgvPXQxSFJWdVUleHl8PkpYLDJPeFkrITldQkZ+ZzlQfk59encxRXQiT0AlaFJlI1Ypb1BXOHZ2UCU/PHAiOFY4e1VFbWZ6UU01YVF9THxqU1Q6bE00fHZJUDReTlNiaiJtezsyRCNGJkk2KWo3fmFbV0tGXiph''@;'; put 'put ''Qj02YmxHMXFdZXBpIl5AVlNiVmB3cXxPQ0lPR1VFa35pZ2AmIVQ8OD8uMEwuTDE3dihVLy88MCVHb3pqIWVaSkIsbSI0ejFXMjxoPzs2NCpfRVJiIVRGdSp3eFpyV288JnZMRjYydVImKHtmLDRGMmN1KVMxTl1baStHU0JPIk0hZ1RldU4lOkQla3djZXgzeDk3KiJzbyk+aG5MXUxaTnJ+dWgr''@;'; put 'put ''elJYKiZTJiRacDBzVlpZPkpMNT80eVpOMTZNWyZCL21qdCldW2pYTzFnJnJlTHpfcDR4eiJdVV1ocCZwcCMmcUl3aUJ0MDdLQ1V5IUBGXiNFIyhuTSlVa2Y3VSVNRlNuZStMK0dNRGVaITZObDtdVmg3dFROZFFdMFRWdyNZQlRHZjk2TVBjRj96dGFdQXZDd009ITVSSD51LG9ZMF1hIm1Cfjtn''@;'; put 'put ''YT1SKFFAbnVjQHw2Sns0Xjt9cmtaQnVnd0BjSU9MMG1HXXMzfTtoN3l4JmN6UVRGeC9bYFFxRzIkRDBNKXNPZlNLPEFfeTgmW1ksO3RrckJ2azs6NlF3XlVWa3EqMmUyJll7bW1ZSnFiYSY4X3dadjNqI1cjST85cS94OioqL0tBbXhqUEQhOT9bbXhTVDR+OUJuMVFabUZuQTl2ZXojWWNSITRR''@;'; put 'put ''bCJCbXA2SEd7bDJSNStOOUZQZm5Ab3RSeGZlX1Uxem9sKlZHTHE+eG8sPSZmR356aChae1hmKVo5UltgbzZmUyU5dj1MPElEe2FWU01sOkMudU1hdnFtTztqZTB3SUNjdUJZPGpERCFJdHxofWRBMjJLST5RNy48NnMyK1E6WkdUKF1gQEF5eSw+RE07Mil8SWhYTUcqK3BEZVg4cVRabCttOjw0''@;'; put 'put ''YXMpZDBFTyMxVjxbW0M6bT43I3pJbVU3I34rRndlZU1yJlREPWtiWjM7YndiLFVmYHEmaT5SWkY9a19aUVU0OnF8JTFMOSE6dE8zYlswKnF7alp2TXtoOjF1eV4kWUBwcnNOaE0iZlErSlJYc3UvYyFocFdjc1trS15RaERQYGxaOjUpRVNXdG5wdXx0Ul5Ia28qKXBrT0QjNn5QZzt3LDdfNlA1''@;'; put 'put ''VmhQaEliZCIudEA2WVgsZCMmc21TQD14ZD9kY3JySyFfbj00MiJkYzNic1tuKTteckIscDRgRXJHKTI1Vld1ZmA8MlJjfCoqalhJTHgldCQ/REdnfCRJdD9XWVtPZGwkSWp9SyVDMD9dOkxQXX1YSHReR0JLLHZ3eF9FSUN5KEMyPFNXQFEhP3JeaF5XKV5Aa2w0XUNiSyVWeW5WYTIwX3tWIy4i''@;'; put 'put ''RiR3cl9aZXRva3goTHViN2BzViYmQ1FfQT5EJXU9Jjd4Ql1QcHVvLDc0N25PRHhIVl4qY2ZMMDlKSzFDfkJAZWxZZW14PVRLWmJ3W35xKyNTUTRgPj4reWk3aHh3Y0YjWVMjOGZPZ2VARDRwb2tmKzZYTnZOPD5ja3QuIURBT2tAPjVsMkF8JXVafClRU3VuI00ocV41SGE5TltJfmY+QHQ2fjZp''@;'; put 'put ''azJsYW9sUH1TNkMpKDxdUG41QVl2TXx0TTh6azQjSiI8SmMre0csXSw4ODk0SGkhX1kkakleKlolKXllaWNKbnwhbDVfc1h7e00oKTVtITdkVUQ+Pl5HVTdCImo9cGUjbXFROUhYa1d0fE5AX3tddSVwQDh4d10jR2NbfUddInsxKSg5ekxYS0o9NEUlKkBMOitDO2VyXV5XfkhXJDRJfjs0IT99''@;'; put 'put ''eUlTSX0lWUI/VHQwPGRWXkQubWBsfG1AXns2Yn1CTV9EYmJtVjx5cEJncVhKQWI2cSsxQSlwfkpeKSRra3ksKW12KyVIbStmNDd3K1VxME9kUlQhZGpLKlVrPjRWKDpWZi8jdDthZTB7SGddWTdhI1E1JGVIOFRtdG1VVFZQT3AwW354IjA1XkheZDY8JE4yVURiIngoPjI1Q1hEP0BeYCZSUiQy''@;'; put 'put ''UU90RXtEaXZ2dHY3R3k2WTVvRmRNPD92b31sTW8+ZDRwcHdkU3FWUkc7cUxXOTlmX0ZbRWFvaCtZKH44JHByVHlyIVV1QVovZjZreC9benFGWCFoIyJIMFVsTylGYVVhVml0dlB1KHIvREZEVHNJcTApUExRa3BIJWw9NGNud0Q6UCVVOTdYKSM4aD40JmE+e2pCWFgmYStFX2sjPHNCcE5VKS43''@;'; put 'put ''ej0rLjFhQmhZVmMyN0J7LiYyL3VvdXsmVF96SmBQfm82Zjs4ZHo7UElAWXR1X1B7PmZ3cnd9Nj4qPXYiYVlue10lclp5JGUyU2NHcW9wM0N5UDQ+MGxCXWVHYDlDcVNBfkRUQSNqMFo7bSQ+aiFqZzNjQmMwJEtpSCQ5KVYsOCovJX4rfnE0O0Z8OjV1alZMdjFmMSkvakRXWUhuQ05UVSs2QjJk''@;'; put 'put ''JnlQKEA0PVRmOilkPXlmMG40ImNPejwpYypbbHhuOiFPczE4OWFLdFZ5S04mMSs6NnJwdEtTVX5beTkyX1NYOyloO28oWUh7SCFxSUFZW284W0xvLEF3YmlXK3RyTDZVIVgzVXl1NGV1SlJwVWtJRERAPj14R00kWGRBPHJtKkNvKFs6QFQ1MXFLdi9Oaj8lbF9iaSI6NTVZTlFZclt+XUNeMFB5''@;'; put 'put ''UiJZLn1md1R0I2FUXU5MPGlDc1FWVX1edHZ0fX1RdTVWZGxOS1NsbUpPOn5eKSMoXSxmLmVVUSJyOG47KVZPJjlLMSUxQTg8NUJqWHkxaSxhNXJ5cTlCTUZiKiVeIixaIzRaWXU7UU4+RiU3MyJCI2QuMShYSypATixPPF9kKWUoTTRCME1JVVQsbUR0WW0odWU9REpaUCt6OVovM0FLMCUwXUI3''@;'; put 'put ''S2RFdnxmaktuMmd5UVY0U28wcGIhZE4zPkRDayJYYENrbSYxL0hpYH16YXBXaF8xXV4leiQyO2EmTk1CSE1Rd2M3fSpwVXkrKWx9WUojRU13dig7QD1tUHZ+eHJTWFBBJj47KHxld3FWcmhsPjNHRiheXiljZHY7WmZ2VH5GQn1re1BPaEVvOipCKjl2WmwwTTBhNkJOb0V5QHp3dk9lWTdnfmlv''@;'; put 'put ''IThqPGVkeStrNzl4KSl4fFUuW1cxUjg1bzpoMF17PUtSKCVCKGB3T3pERXBde0w6JSVtZnEyWUROLklGXl9TQUxYTilFNlIifWR+TmVWbngqKTddMGx6IkwpMH4kZklxcCxTeilCXyYkNilBZ2I3bkJBLn0yQm1XZFZjLCMsfVYlO2l3Rj9vNjwsVmQpYU9GPXNHTmBFRHs+PkdYalpXWyVfXl1V''@;'; put 'put ''YjdHUV8uTXEhdjhndFpwR2QlZERUQWluLH1rZTBiRE0kW3RudFtJcz5mOT45JHpPMGpkfGRSNXcjYnJyRHExLDh5KEB0OHhneCpFL3F3dz1iX0toL0I5LE1LRHMzW2dtMmtqZyFFX1U0bDwpKCwqRTAvbXQpezVkZUNeSF5WZlFWKnUzIUokb1IhVHRLdCZSb2oiWWlJRkJ3SFMwRHJ1L290Pnwp''@;'; put 'put ''NCgsKkVJNDJEdFpOdSluS3QrLCFDbik5a0F0dUE5PGluTEkudHpIR0N8a3YoYi51emcjbnc4NDVrUl09dXtQM0I6fjAjc2M9JTIlY01SfmhARHg0L2lfSzEpRmUjO2M7MWRadC9YMFdlfHo2V1NMNDBGaTI4ZixrQD5oUjdBRWkpe1dsQmJqPDUya2c9dmMsT2d9XUQwcV9YdC9oTE9WT35tUEFD''@;'; put 'put ''OTY7RFNpUjczREhCOUlSRVl0KEt9STYrPzkrKD92bVlCd3VAezkxMyFDI3RrVzFEdW1mbTtybW8yPFpqaz0yYlUvYi4wMnNUWUx2SUJUV1h2I1tkRGpkXUR9JEJWQmdFRHVKbWdUTzprLDErakl3amouXzIkTDxvSiNyQ3hJdkoiTD1GSXQ8bWg/PkMxUkJEayIuQiE9QUBCbXhRK3VyWlVLS3BE''@;'; put 'put ''X3pKMzFNTUNZa3xBJGY7aC5eSjlMRk5NdTBXUEU4b3IuLkZtTncvbEIkVy49dn1aPz82Kk9OOVRJNndSVU9nPGZFPk57Y0RbVVAmIipnTDVya0VCcTE0YUBEezt1PUxNUFUpMUd1VkhEZChYSXB2P015QyR5MUJSKS8pZi9HQXIrfXxyQmVFRVI1a0MhX3YxeE12UCliVzxNXkdRRSE8YjRFWG5Q''@;'; put 'put ''blhBTTsyVEYqZ2ZHZm8kZnI9Q3I9Oiw+SGBXbCs2cCVPLFA2Sl0zdWAkWHM9PiVCcz9OQGpJNEM7dUNzZjkwPX55cyVGK3N1REh4XzhGTkRuQi9zJk8vZGZCL3NdTzNUPHVWJVI6ZUQ6Mm8pX1dXKHduaDZCZFt6bD1sQ2JuWFlCK2VMOU45QjYocGdoJm1aNkY9R1taeEttKVtPV1ljWzEsUEZO''@;'; put 'put ''fmlOIUxZcnEpIUhfImwoekBIYXA0Sy9GRUR1ejVQZENAQEorOlMoQ0QuZGNXNnxnK1UqWyQhVy9vY09jI1ZlM1RONT5+RSp4VDJkWykwSFh0KnIyMyFXYlN8V2NucnVGfV1RQW1mTDVrZjBJZklHR298SWB9Q2BMT0hnNC5tcGtqPkpfPyMuSkVLNk10dCU4RmUyM25mWVMpM3YrQ3ZKOSxtaGh8''@;'; put 'put ''diVCdD9ebVUvQCspJlBDbW50eSlDIW5rP0V8Mll5KClnMyYyTXY4bnlkUn5Yc0pmPH1CfiNhSE90fC8mXyRdaF9sLyJdP1AzSClmUWRVYmt3XzdvYHo6XlNCY1thbTRgXz5EJjJiQ10ubSZTKmJ5ZVdAOmhwQlo7ZEQ1KThCO0Irb0FLMTJNVHZ+XnB1Z0o9KnN9JX1+Mmd4N3kyTiRXYUslQj4l''@;'; put 'put ''PmFzWDMmaUdFZVEmJVlpUjc+Z0o9Py5gXigpdkdVYCpPZipiN31POlJuNnMwXjFeZHtpPGEzT002Wzc4dzFje2RlWVtRP2NaI2pgY0RoV0ZGOzZgYS9ufFpsME1OYSxxdjVPTSJzVD1kRXxpPzh3d1dJTnFMY1twYXE6fnVRP05fNjRZKDc7TzFURVp0d1Q1fVRuNSpGQ3FPaS9afDtocihXTyoz''@;'; put 'put ''PUZoYzhyXlFEaEAuKEpTMFpGRGA8Jm0+VUVoJig+NG9NNytPI0R7IkEhM1tDe1dvS0J3SXJ8aX5aRGciaUdBYEVDJH46LkxDWTl6elgmeEZSJS9MYXE2dGwoTTFJb1phNkNrby4/ODxGQn0lVHchPUppa1J2K3FpZl4pVzpbSS9DYHUpdzRaODVGLnttKlIvP05hQyViQkZ5bWYvUlkzREY0QShx''@;'; put 'put ''KW1uPGA0SHxCT0lGQlNMLFgiZmphZ31tNCQ5TU1BRVhBLGdxXW5zIl5xdmFvRCRgM2tAYFpNbVo9PFQ5IUVuM1RPS2B3V1AzVHVLJUYzfnAhSnFsbmo2WlZBc10zNTEyRSUsXSwheTg8TUpNaFFUaE5bQm1BZ1o1WllOJFdkSzdmLiMwPU15SChHPitGM15fOWh0Yk9YeD5PQVlNMFRJQCQkTH1l''@;'; put 'put ''ZW0ldXJHY283Mm1HLGR4Xn0+JHVyR3pTYjZabVszaVd5TmV2SlRUMzQ3ImljUDhvZkxbT2tvd249QmRjWjZUTmtNYj0/VFhjXmFDbWRZNE5ZTSt1fngqTmgxJUc4QGVlLGpQbkV9SXBbS0lDMjQqXltXSWd2N2ZHS1UxSDk/OCtGZm9ycU8kKTQ1V1BYej1CJDtuWmQ4ZXM5bmY/O3A/PikxSnJh''@;'; put 'put ''PkxAWWlhY2s9e2ksMkRoQTNnZXUyb0hzZTgwXUBtPlVbXkopPWZId0NdX0VjL09sdE9JM1s3WiR+MERUbll1Rj9JS0pLWUh3Q2V0eHVKKWxZRXNSPnxzNmxRZyxRTnc0PW10MGA/WUgpNiJtKjpPKTRfKSJ0Vk5zdSExfU1NMTFCYD5LMzdvMi5kVWNbXU9MZGpCL3N1Uzs1TERAd2BdN3I3dCxe''@;'; put 'put ''cGl3Sip6MTF3PTd9WThjRV9vb0VHZz5uOStyaUBRRTFuIVJGUXNzNkxEbGY7MVsvVXp9Jn1xMXxweSRReitFeiI4JX4kSG5RYzx0dDBgQ1tzbiFkKCJOMHtiKEhCPWYqNjdHOmNCSjtSUnM2WUw2S3c4UkB7SVQzIWdGWiFCNF1rMEBAO2t5RiFARXkjdjZpOyZlOFRhKkBrU0wwOUNXKEsuMCxU''@;'; put 'put ''OTFnPX11NWV8V29+c3tzZ2Y1SiNEKzUkZyoudlBjWVNMQHZeal9VTkkuVGA+T0sqYjpGZzQlTzg+fnIxdXxDeXthUTFuRT95Mzx2QnJJNSlfUWNBbzYwcW1OYlhHJlUmNFROYGA0ayQibXl3bS5QNV9OTmRxdFFab2c0JU9fU0ZMdyJjZ3tHfV9bSz4vK0ZfU2dpZkpsdGlnNkx8VH5aOjA+TUYx''@;'; put 'put ''JUI5SWQjLyZEKjg8P1E4fl9TM2s1NHJXRktPQy5kSTg7I3RKZlBbdyZXVWRsRSEmRj12PihDSkgvSm90UlkzVHxCW0k6YTomdElPSmtoUz99JXxzclhYR01YflsyLyl1c0UidUJOWmRIR2tYJT5VZEAyZWklWEYlZVU5aHNjZi8za3EmaGNnI0t2ZUdnfWBLPD9+KlsiWHV5UD9DTVBuYWd9a0Io''@;'; put 'put ''UCZDXj98NHBSb3FoXntiYEpOODYlYFZpWHlDLldEbH5KblFCJnE6aFYwRTlWPCQhPCU2ODQwMSNebm9+WUooWF86NTBmIShVL3c5M2NYIypnNS4qX3JfMXNETVo4KiYsTjlyTilTLztLTEhOQkcoKitXZThvY19AVVRDVDV5aDZ1clNKSGlYU0xLRHRDTWhxSVhANldtWi9AQHVYeEgmIXtlaSQp''@;'; put 'put ''d0UoRGl4YXgmIkkhJjkjRWlYTEQ3R0ldM0IvaHM5ZFsuLixWWHRWL1JIUFQoSCxEL2tPSFskc0xNUFI1XW4vRjxvMkBaXVR1WXV9Ql1FcUFDOUNDaHRrV3pnfXRiWDEzJjs9K0t4XWpeZGJkYj1NLzQsV3d9SmdfYlNWWGZefG9HRlJINjRTUi5kSThxV0FafW1pWkRIMnRgekdJNShLYjg8Rypo''@;'; put 'put ''ODowT2VnRG9NPU5pIS5oKHVdMnNCeEYxITRfLGh5TzR0S0V2V2d9MERESSYkYXl8TDRJJCk0S2NfelJ1bmcjKD5ydFYvKT5kPk9kIkY5cHpJPCk9MnJ1Zl5Rc3UoTzVBIXJLfSpdeCh9JlRXP01GSSkyT2d9SG9mLHc0dm9aTSZkYjtoUHw1YE9WOT91IUMvO0NHZ0RRMzc0bFUhclFzO01+Lygk''@;'; put 'put ''Y1trZ1hgVGhjVSNbfHQkQjQxSUFGXy4mU2VwISwrYltBeF4iZi9tfVhYY3dWJWt+Sz9geWc2anNyOSEzX3oofGlZcjFRL1p8ZVlpaHspbC5YdG4kSklzcT4+TSZuc2w4QGlZeHZNaFpfTTF5PiliY0t3WmJFXyZERGtGVHNYMnU7YV9NW1RQSGFDVXlHKi88JDdvaTsoZU5ia0FFSlVGeyI9fSpC''@;'; put 'put ''L21yXTJaQllCbHZyLnwiOVshbXs+QlUrbjNrU3xQSmd9Q14+Im8xW1R2WkxLWW8kQSkoYiNGPllxcHRsKChza2g/OUMuS20oVmZJIU1Vb2csUktrSUYqKy93RiJ2NDQoPjdZdVNsRnIxbUh3ImtXMUpkL1JdJiFETTlbMSR+OTBPeyZaRHExUS9lNERHQ3V9NlFTc0MwUDRuQ1hpL0tvTSsvaCVn''@;'; put 'put ''XnhZZSxCYkxmU3hIdVh4IUxSZyNoNlhMOmlrOToqdSl7JDY/LHRhc3BiU0tHS2MoXXQoeVl6KkJxdlJXOyZsRSRHbj40b2RaaTZhfU9ldkQzfk5dKEtMKXgwMy9MfHV3XVAiQzt2ITxJWD1tW1dYVDBAKTxiPDRXPkppWy47Q2Mrdn1CXnhbYThFOm8/dSFEVDUifnowVWQ0cmd+PXQ6RjAodVdl''@;'; put 'put ''JVRBSUJGaDIrV0IlKWZzWDFqK09vOW9RNEpWVCVjSTc8RUlVP0ZdX0xKPFo/NkRhc0Q4VUl+YUY3Ym5lMEMzX3ohIXJKYG1qVzxRPmo1YE54UkVCeVRJPENAUHc4KSpTdzU0bnVdUG5EdkZza35VdVhlbUdOWC9jK0Mpe141an48cERRPCw1Z30vdWhEO35edyYwRWE6XUwxTmlnXlJmREl5TlJ+''@;'; put 'put ''VTtWW2RjcXJPeFIwKyspT2pEMHIuaClMPWhGRl1pIjJtPTg8UDZHQ2ZhYXRhSkxjeD9MQV58eERwdGVzXiQ9R3d1Yi9jX1p3NFp4LjFNK3ZLMT97UCg5TDlrMFs2bmF0XV8ualVzLHReflpLaGFaQVRWSytVPEV1KGNbRkwpRlh5WDlNUn5uRTF9Q204PC9jUkY6aSNtZ1RidntbR1hzTVVrfk1f''@;'; put 'put ''Z2pmdD5FTjxQPW9MeEp2Lk85cGwvamMiQy9zJERuM2pmIXtDSF9XJT50RGNfcEQ3dGwoOnhAJjlreFs6RjltVUVGPzBKVTUxNCVFN0c/O01YdDtpOHxCVl0lKHpVTFVUVl4+Z1l5NENScj8idHFzYSJkJVQzSj5UPyFbUk9rIjhtUTJmXjE3Ii5oN0dIcHB3dC9iZ30le3orc0JCfU93UC82TVMi''@;'; put 'put ''IyRrU3BJeD51RGRkeVZDMGE8VFlwTH5vO3Jib3dxflBZP2VXYVshfiJsI2BZSWxVY0I/M0ltJGc/fW10OWJJOGAvMUd6LH5galhtNDtXdFsyTDB9LE1IKGxeUDA9VH1fJXtDYHduVjJoXiNnQi97PUN2KyhGREhQXXVdczpyLkN4RHR9LmQ4QS9zeF9RfjtEJEFrciopbC5tWz1MOz4kMXsoQCYp''@;'; put 'put ''ZVc9TyZIN15Hcmt6ezRmY0VhJC4weXF1NF0/WCUuNGVTLzliTEdgZ2MlPGVUOW0jLlUvMjRbW2xaZjlfJGIjZXolJXllaEwwRFlEK3QiXjFfZ3xeKTNUe0RoeG1SIyp5PEBpaHhtUjIuJUk9aWh4R3xCeTJIdVNlUlZ8KjJsSFlIdER5VlpGZVlsaVpbUDM3b1d3SDM3bzIuQl0lT2JCeWhRMiRw''@;'; put 'put ''WGlIZiE8cn1LM147T2hqTm56UyokP2RUeEheY349TWBHN3thMzVGY1I+IzUqK0N3d00udXE0aH0pNG0+PntuMXRQOXA2Mjd1aUgiJE5DUn42ZlIkYiJsIyNhajhFYXF2LmdDaVgvbmBPI2xYZC82VT9vOCRTdCJKW0Z8bl1pNlV2RXY6bmQ+R35ee25gJDBbPW5JZEF3KUxoMTFQciYlIl9ZYyly''@;'; put 'put ''YiR+SDZbNn5GfXRefkpLLFYwLFE0Rj1wSmdveD9AfmVxcWlGPjosbz0xfWA7STM6aipdaVttQD0pamY9TnhZK29GT2d2JnxiV187WFNdSVFjTl9JN2lERHckQkl1NXFINl8pLiYieStJNXBQZS9VS0UsbzhKT0BGOXM9Lk4hXTc2Y1UoQyglbEdwVF1KY3UvYE8xYk45dl1SVitbUmAyVyVqczBx''@;'; put 'put ''LksxXyw/UC8qeVt5QitCQC5Aa3AxLEc9MyU9Xm4reWtJWFI2T0poODcqdD90M2BWVnRyRFJnPm0yJU02S31KcmcwaEAqT1tpeEB2MGtoQmlSanIhLGtZL1R3eE8ob0wwST02MmVUM3ZibD9JbFFwOjk+b0hJX2tkLmI1NjZ1STBudUJkfkxLQj9pJSh2WkR6OiJCWFJENEJ1TSw6UkA2b3tKWFFj''@;'; put 'put ''UT5gI3A/Szl9JV94dXg/Wmx3cl58Zk5wcTZ8XUEqQF9ucj08QixwfX1CO0ZFSEN3ck09MkVWSDg2ZVdTSj9kQEZeUC5sSjBuInN7KkYuZzNRLnYmbzlHcTNQZkY3e3o4OVRXQnR4P2dPRCg5Rl5Qbn1PUnhEX0xfMFovN2VJMz9LN2BTVTY0VX1vW29RQX1aPjhGKGhNJXwrLG5SS0dfdnIrYjZF''@;'; put 'put ''XjVbXjl+MHUzN3U+RDxKODlEQWhnVnteQW9ATkdiQ0BVT2h8and9X0dmYiJNJl47cFF8VEp4ck8/b1R5IUYrQ2RNQU12YWpePUBGdjh+TDFlSyheSGVfcz5gIn1VJWJwO3M2bjlHYTorPntNenFPJTQxTUl5Vmw8TE8qT3VDZys3PGxPRFg/diJETFdUeUZSLmtvQGpYQ11vODtGI0ZOfGFgJDQx''@;'; put 'put ''PlNWRnlRLzw4QVs7QihfQCp2fUtNSUV0fDtXIjxKdlNATmh7ZmF3IU1yY1JgXkc0ZWZyQC4sSFBqIi4lY0Q4dnx9PGxZQT87bEw/bWJzdmU/ZnNULjJaPypKM1prWFVPM1p1LCltTDUoKmF7JXdSKGgyKHF3fSModD8uaiUjRSlvNkpdeylifTg3cFVzXUxmSXoySno3JCE3RyUpbnJIXS5dM183''@;'; put 'put ''Kz5AcVpRdUFLVy5WV054N0Vla1dNUmRePyRTKUpjJSIkW3xUS3tNVjoqdWd7SDwpfih2fVZgbntfektee2V5TH15WCMuYm99V0lFUm1HfGVFJSs7eyhac2N8ZThDUSkwRUVwaSNuWHVtbno+eHY4cFp8VEwyM3BFTTI0PCpMLmA7KXc0VXppTFM/VX4hV2NfRE08Lj9LJUY9fGdYOlZHKFBzKXRo''@;'; put 'put ''Xjc7JEM9bXVQQks/JmcmLzlOMSooQUA+e19fSmRXK1BKe2dMfFZIenIpLGZJb0ZrNGIjI1ljM0IwPjZIaGZeI2dYazZkRytUfHRpL0ouSXZnPyZ+MDI6KkdUS11pMGc2bSlvTy8/ViZXdXxuelJRJl5YQEtnIiwldSREbmlENGZxQjYoW204cHJOeCFdNCxMcDNbISJlcDVnIixJSCg0NSlJVHA/''@;'; put 'put ''c34lV3V8eGhIdCRjRmEzRDF9bnpMMGNiQDRAYFF9YihDL0I2NV1MbkdieUZrJCE8OS5FeGlnN1VCXV5Scj8+XyFCIX0uJmEoIzs8dkQ2KEVWSXJFdzFTbjZoXTJuPltdPjtAPWloPlA+Xkx1OUMrb0kxNjNfS09tWVVCJmVYbjdSfjdvO3hfe09HSjdieHNAVlFnZTtqfT45S0FtVEYxS0Awb308''@;'; put 'put ''USNUSD9nZ0FSSnQ5WCxvbXB9SjZ9Iil2fXp+cTgkezhfInEmWFhiNSY1JEh9ZltkW199PHxCb15xIiw5V2YjKFVOaiJUbkxTX0kpZVVodGcociJMdl97LjRjeixSamQkeihHfTYublhVP1RsNSFjQXFLLFhpUjF6P1VzOlQrWWo3PDB9ZU51bCVJNS4wMkl2TT5wfWdjeG9wU1IqXiI4L0NvSTgh''@;'; put 'put ''aVg/KjM/dXd5TzdCJGtnMFYibDJheiVdaF5lNTBpXU9gMVg7S2RVMF5GNE05bmIjbEdsRypNOk06TUd5PWxKY00xeTc1PHlybVJPJDI8Zz56fV53RlFmcXIieV1OcWhefmZTOnwrM04+PixWNCozPXBzVFVjTHtnKjJ4XklDRnkkfVVXO1N0d0t4bXpyZyhSNW9HeDskRng2blpJYjYwZyw/S0l8''@;'; put 'put ''JER2V3xHVSxRWkJkdGE5TTZmdnNrJTY0JTQlM1UlNHVVblhib3lfWyRaP1VhcDBzSyNtTU9TcFhfJnomISM9WENEOD5UfTVOKU1AaWlDNkM/OD1TVSVYR3VeSy59Vy93TkQ4SFIuJkt8RD15clRfKm9VbyQ/VXU8NSUmNTtjcmM7en1pUUsrMn5DM3lQemdYYVRfbTBtYDdKPiJpMSl5QXhVOV5N''@;'; put 'put ''a1FtPD4pa1VmXlFXLDBFcmp2XzN7ZnVMP11udF8oV2RfVkt2Pl1XcylmKW92OjBQTn5AcUNfTW5hfiRML1RrQnwxO2VUbUU5QCNKfF1WZTM5In4jfCFWaG8qQD1ZTixIPFZ6fGkvenk9cTVxNXFJTj1NOUQkWE9URGZdPm1uR0JEOCEoPSlqQjFUb3dCMEJlXSlydklvTyM7eWxodVtaVGhwQEQi''@;'; put 'put ''ZShmO3MhKyM7XS87eVRGU0k4ckJRdip+PUxZVE4oOjhecjZgYUAxMnUrYWpOJHohIWoiezlEemldRWV5eX5nV0l9JU4pVTIpeXF8dTpiS0tFWV1Dcj9yTikmdVVAMGtkJmE+R0JKIUhUaFZwfmF8alpbYUp6blNWbD87W04wcjBFRW5HMkdVWHZHXmp8O28hKWV2Ql1sdTRgQjpldjRgZm1mRCgp''@;'; put 'put ''a0hvPz0maT1nbnhfcH1Dd29pQUc2W1h3NEU/WGduSGAicT9Ra2hzXWgoVWdYJk5DckA0antrMT5FSDw2WnNXb3hnYW9eenhyfFRQX299d3N8UUBLTnQsVyYpLFc9JjlyT3RhbyR4MW1QVih2Ty98cH0kSztYRFdkI3t2OSw0cEZKMF9KckI/KUdGdFYvLCJbLDRxeWE5LDUkRk9fLHVbem9KTUVF''@;'; put 'put ''dTZufkF1NCI5Mzs6YWJUbVJkW3BoX2g/JEp6RmI0eVZVMzF1dlF+JlNeWDVyW3tPQnJIeyxkSl1LKTVKOGYoWiFTMm4+dWJlSCFvWXJXOWBQYVBgUUF5Tjg+UEhRUndTbyJJXVNfd2MmRHA8KDF9R2Ahfnd9LCJQQGxJLnIzeTVlWDphaHNeM0oqelFLQkxdRUJxfVByX209NEIuQ3pyIWorZ285''@;'; put 'put ''b1teX2Z2L3AzfGwuWzpYXXI+JUU1Zkh5PS5Ue0RiQjdDfHx4UT8hciZUemJ0RHV2Xnx7TytkYHZmVzY7Rmg4RSx4K0dBKTtHRDUiRGRCWVJfSDZDWlRTNDRfSThkKHJofUNBY253RVgxQztBIiwuZEc8Y0NKaT1gflR9KWQvKHV7Ry9zRj97dTlXQDRrPyErfnthUGlaRHo5dDclPVNRZSFgNmNO''@;'; put 'put ''YCYmdi4wQ1d0bj02KVZjZGw5QitBWUswRVtoPE8xeDlHMWtrSWFTVGMuYVRyU0M1UFl1QGxVOURxdVFyZ0dVbGI+eSM9RWB2fVYmK2E7c0JPVG4mKSsrWzZFNl94W0NkOVVXRn5bTzhySGhKRnFDNVNdTmF1QXJuKSFuMnVWdCYkYEJrdEtJdFR5UHtFR05tVHZ2Q3Z7Z3x3QUJ2ZzZfeEB3cndU''@;'; put 'put ''PkpUcl9gfkU4TFIvUVN0WyFVWUVmPWUhXz9gKyRyRGNgdjFIOn5KZl5EOn5IWTN+ZURRMmpJIiI/Lm5rd0RPPSNgO3hmXztRfXshek5fR3BTZ1I1aT5OJUlvN1Y0cjQ3JjtrYiolP14sQ2lRUUM+cUQlV0QlNio1dlRPS2NQV0I5RzFyOyZqOjRCTXs9XmBVaD5VQjBUOHIzPlR8Y25LeztXPX1T''@;'; put 'put ''YzlHRi9VQntONHIzPmFdXXo1YWQ3RisiWiVnfjNUeEosOGUuSHBdIyZRP2Q5MVB0Y0Q4c2x+YCgkSm1PJj1LWWkmeGxyYCU7Vnd+WyY4ZDFQWmZsWElqSkA7RWxiTTYiV0FNNldXSGs2OXJ+UG91N2hIOjhnJlduY2pfIXQucT40Wn4mcio7W0BfaTZKcXFlekY3KktDbjkocCZVamZtbkliYn05''@;'; put 'put ''RTV3WT9DNVQhJmsyIjNRPkVeZDhFQ14pckU/SilIdV90Z01RNWFgI0t8IU1hW1YjSSlBRmV8UG5MNiozcnJ7Yj1JIkJeRFcraGkzNTdEMiU/Vzw9fDtzL3B3RjxfUVQjKVZ6RCYoPX5RcUB3I0pIMTxsNVltcEc0O3E8fUVqZHUrTCVNLEN6ciwiWkVvU0JmZSMrdjphWWkhOXlfIXA1VWdyWW95''@;'; put 'put ''byM8TUB4fE1IZm0rRUF9KzMsRWgoISxVL1g5ck51TE85XiQ+Y3YzanojRm9eWEhuSlB7OGhRdzpPQ3UyXV9GaV08W197OD1wb2ZJO1tLX0p9JCVwXV5vVl0kRFAwRzxKRThkT2M3NXI4Q0BoMU5MUTg2dEslfT03YUF5Qzt1TCE8JnxmOjspNHRxPzooMzx+TjhjX1M5PElhbFdiU0FeNjwscDhP''@;'; put 'put ''XklKPVM2bUR0WFByVGV8XVdfTWpMZmxbM1R8PTNJQnYwNGZMQyQyR1A/Xkp0eDA8P0pxdiFWRD5fRk5PI3p2Lz1FUE81JCgsb0EhPXpNIzJtNDA6JVhnTWBCTDVuPi9bXzJ9V2laWjFbPkVmSGhTS3gve1soPk53I2QodD9NOkNUNXFVW0IuPmF8RlQiR2Rbd0tSJlJ3PlBVSHVDO3ppRnBYLms3''@;'; put 'put ''RmhCVE1TL1d+dlQ5PV5FNmRwfT5MKEshPUtTZlN1Sm1rSyJyVT80Ij5nRWlmelhwYW1ZP0lNUWg2YzgoTkBoenYsJDxtdU8qVS9KLFBHSWglUCImIWdtR2xzayomZGclTGFZJD5oOFMrfi56UlskY1M0ZFtdKXlkQC95RkYuWUdgPF5aeztxbStjQ2dxQWd7ezpdMXYseEtJQFZZITRbOGdGVyRR''@;'; put 'put ''WDR4UHdfJGp+VU9INnVBPDFPY3xKTDtPQWNFQmkvKWN9R0o4IzVUTmcjcz9JdWVSa3x0dFtGe010ImhpeX1memJ1c3c9WXl0KHt9UGp8NDtDSiMsWnlXMj1GKG87NkQpKTxGQ0xTYn55KV5HdFAvKiRJVVshPU5kLHpaMHRCRVJyYzZxKHw9UjJCJTd3bz5XNzIlYncrImx1PmpqMXg9V1M8YGZP''@;'; put 'put ''M0o3OyJMWFlCMylqZ09mJUJZSUdLb01KOSpCNyFsey9gVW4+Q25NaUNaNGB6Lko5VnE2eV06PGcrZWpaVS9zY2QxXzxYcFZJZCt+PGpUVng5fVFfcSp9T01kWWI3en1UazNZPzNqKE0oSWZSNU15MUJsRjNUdEJxUUo0aUFNNER5Q0tnRHttaygrNy8yRU9XPmY0Z1ZPbTJhTHt2blBoNlE3L186''@;'; put 'put ''P31qITBybjRNdHc/dVFPUU9XSkZ9eGNxV0g5XyN8cHF4fkdFPno6STJHMndzWzZZbX5wcT59W0VFWnlpcnIrcnBRKGhdRWFYdl5LXyREfGlGPG4+OGtHLGpVVVskKCssKXNabT40N3smWClhd31QayJMNEx8WEU6WitvOUc6ZCsoOGYpaT9GNyM5aVE4XmdMRWtwNVRvYTQwJXhKSlRINFRNZDdo''@;'; put 'put ''KFVRS0dKcVliOUtMaCsmdC5yV1ppPGZsN2IwRUl2VCwrWXIjLE1XY3g6fWxgPyR3IlNzPEo2OG9JZW1GfjxUfSI7PnFaJHNAPlQ+SkNKPWsvJFhFXkUwOnJXJU9tUEBoV2dDdnhkRGooLEA9USo9OXdJfToyKm5UXyRSImRzLlcjQjErSEh7fD00b206UntCcy90ez9Vb3wwb1ljblZdNT4rSEZF''@;'; put 'put ''bH1hPVlzL0tUbkN7cEtXK25pMj4uOnMqeHZXflkhSTBGMzE3dlQsbiVKRkRoY1I3T1NQJlJ3Vks+KkFhampST0Q6d1ArYH0jcHFkcWt6b09aKVNNWT5ecHZ+R2dAXksoc1RMejxeQ35BfENyZGFRZC5Rb08veEh8Zi5AJlVGRyYzSTgkUkYmXmMqSzBGM0RSdlhkPDRzaEc0VDg/KlVwSkZHaWcp''@;'; put 'put ''Tk1vKGc0TFhzMXg7Jl9HRXxTczBKWGc2cj5jVlkyZmc2aF1EfVI2WWkrcnFITkU+ejA6en1tWT91X1osT215dz1QRWMqcFs2WVRdZDZHbylbW3tNZHdiUV9IQzQ8MD54UDVfbXBnQ15sZyYwci90Z2RoVEZLbyslNFA2PTU4PTRvLjBRJHt5ZHFyLk1meSE2bTVEKClYR2VYfm1AX1ZfTD1tPkJa''@;'; put 'put ''c19XYChANnQ+d1Vzdmh9ZUc6Tns8KEMhSk5NZHAzZzY1Q2tDT2t0LDp2NUc8cjpXLCtTMXx4TiRyKFJ3VWkiakVmRzp5O2klcSxTRF54ay9YOUs2dyR1T0pjYk1aPyJKR2Znb1EzST1+YyhWKjJCcFlyUnhFOjJEIWJ+JXt7cC9dejVHI1tdWm90fUk4YFdbJFlFbmNVXXdtN1Y9a0R9VkRoc3o0''@;'; put 'put ''KkI+VXNDPkJqVFE+cU9HKE58PX5FdChqP2Z8WjVvYD9KR3xQSnx9R1g4TUE0bkJ7a3NwLmpmQmxfIVFKfDg8OSZ8TipGOC4qQmZeM1dJQW4qOUlBclo/N189Ji5MWzQufWtTfnZhO3BGRj5sVV8jMXR3MUg0MCpncDB8bEBeckJDK2VqMWwlSzp6T0ouYClVMyJad29EbndvaFhSV1NhZjl+eDFD''@;'; put 'put ''REFbWn19VS87KHcjfWhNPVEvWXdwY19xWXFxVWZwdUNKS0ArblFRUittPFpzR3BnNVFiRCJ3c3tKVnJRRyYzdDdZdVJERkRpZ3g0YC5oZ00uKyt4R3olbVVaM1QyQTZHZ3JVWjNUJnFqYSpFfXNOVnJiNjRRPHV7MXUmW3A/ezg6RTs0LGo8UTksaiJvRVgjTit0O0piNTtJM354OXh1RFsmW3d2''@;'; put 'put ''UGhGN3xvelFJIXklVjwmdk9YSGh5Uml9e2k/QUVGY0tZdUwoWHNiaHN4MjE9SzRPJmFYQlRnSG92TSpZLHs7QEl9MiN9N2xQQFAwKEduUUNPJHo9Wl9NWT51XlI7S2c0KDFNfSNqdGcvPG5ENl1DO2p9TUpOandoOChZXjlTQSFgVzJBdiwjfk5TTntdVG5Ra2BsR3JIaFMwS0c5aHgqKGxNTD0l''@;'; put 'put ''VCtOayMsMkIsMDcjSWcjKDo7NDtmUElEJTZfY1Z+Tld4Z2haVEV6WjRXIl42RHpNa3REY20+MkdxWUoxZldaYC5rSUZHTkMsJChLWFFPSyU2cXVfZ3x9JU1lWVFgMz5Cd2BtPlJzTSYyazckX01oeG1SWyNbd2l8Lng7I0o4JiZRSChfISwxQCpsfjhGUV9mISgubT5VI2JqemhONlkwTUBXSWcy''@;'; put 'put ''PlksMCFwa098dEJ+bz1eUSxmQnQ/eUlKZzxIUn5ucHJGJnVyWyRUVTNkJmhHR1pda3RgXjN1WG1wTnc9NTZ8U3VFOm9CaEVRNj1RQUFVQEFBdFJ0YHBgJUBRMn4obD1wIkhhNj1XIkcwQ10oNUd5cj00b2p6JHxBcl8+cVp2UEB7diZ1PUVwUFAzflNwMnEkJmUiVWM+Q2BhZFVIQEFvMWxJWW9P''@;'; put 'put ''ejd5R2gvODxaUyFXWmM8WVJ+NC5HWFdpIUhQKihXMmsqPm1QOkMoPzQoQ0JAeURObjNZL2MjOnZyRHpLIXtLfDRrOl02fTg8VHVnX2E8fDk0clt7OlpnPEQlOWp8V3w8YEZfV1VZKX5aUzpWYSJmcnE4V2s2OyleaFc/cjt1RXM+S2IzT0kiQFZheyMwbHQjcWtab2hebzk+W3BPZywxZzhIN2cw''@;'; put 'put ''WmZtZk5dV3ArTy9VJXUwNHVmUUNQYTdYI3B5LEs6UDZbUyFZOWg7QkQyRHBTVmJ9LnJkX3EzeV1jOH46PiI0VzRYfUtjVlhnNFFqe3xZJjl8YUsmbzZKVHg7KlZYZzR0QDRtOSU5fDkid0FdKWMjLlYzfW5gRztBayNYLitsWm5qTEhnXmZPRll2P3VAWUtZMFE2N0glYj5FKHM3XTVqLGUuLjNv''@;'; put 'put ''cl8zazN9Zn13R1N5JjJBKms0bmk3RVhyfW9FYm8xVjNXNHVoVzolND5ERlVgQ3xUK3pnNlAzaXozYFVvP0ZlVXdrKzVjVD5nJEl5RDVUTT10VyhXNltIc3s/Yk5OMTlFVml6VzZKI1s4OyFsaypaLDdfNltIczt7bmh8XV9tKzkkJXFbMy5GZiZOUTR1Km08QyJ6PmcjNWtodV5XOTYiKThGJUh8''@;'; put 'put ''a05waylVL3hLIzM3NyMjQnV3XSQ8JE5zUW5IMlR0TUM6Qj9aRSxCYC5XfW5hP1RIeSU8ZCMrP2sjREV7a0pKWjg9Ims/QCtDSGFLRiVPPzl5KFsrQ0RGYH0hYktxdV4/KV8ub14vOUAjMTxZYjMiQkdscXF5Yz0zKEdnfGVKLk1ENz1GJkRjanI0T1BSOzhmLDk4T0dzNHpOO0JGPFEpKmBwYCpr''@;'; put 'put ''WHwpKVUqZS9iXzVvemQzQnZTeU5BOiNaVERPVX53X1dNYlQsK2sjWmRbK2lrIn5GfD1uYiJBSyIieSJaSm1eWHg7fW1eWE1YOCl2diRBbmlQVCMsPygwbiU8KzlOQ0hUVDMqIiF7OGMhT3RbJUtHJj47RTljRDhrNEo9dmh0RCJTQ3N1U3R1TTlWSWlLT2BgJm1KdmBFUkBFdSU9IjlIeWk2TERW''@;'; put 'put ''SzJKd0Q3NCl1VXQmZ3RETEJmS3d3WGxqNCJTVnQ+MHtHVXlSdSFQQCJ4ZElnOEhlbzdlQTo0ZTtEUFV+d2ghZFBmYCk/cWdZel5UMUglPz9QOnVeVHxaR2Z0TT5ueEpuWEZmVTM9XTVvNllpKVVjd3d1Iz5HaSkvTnYiNllrKSZTKXVVdFRkTXV8V2ZafjVfan1JUCwpZlF3fFdUZGtvXmo4TUdT''@;'; put 'put ''QyRDPylUfUROaUNtQWxaSSt7fjtFdXFJWkl+NVF2YFpVVntaKnklTmlSMzNPKylmMUJBT1tffHw5ck99P1BXWX1aZHoqQ0VobFE1OSU8b3V+cnUqZC9BbGZHZFtaNTVCfjZ1W1dCLCkwSikmPV88b21MZVFgcEBOTUt2aDFkMUpDNGZwcGJDeyglPGdyMWtkTkdeP1A0dio6clVPPH1UNWQ+cS9K''@;'; put 'put ''YnhyOVhYNTREXVJ4L3pEQFdOe2Rpd3Y8NW5MZV89JllMZyQ6Qy5XYE18SWJrZGQ2OmNEQnhRXXtVaGdoMS8qdmo5cCpfc3NmXUV1T0AyWTV+Wm9uKTlEZ0YkZzJjUEp7eyZVdntZdX5sQShxfENmTSVxfERmOWNXUShDSEpoOH17Zl1KbF02SGI9dmFRZ3p8YkJGIT5JPyJ9Q31tMEpMaVt4YXNG''@;'; put 'put ''aW40Xy5vcloxSD51cGcmT3x9YWJ9Lio0TUVtN35DZFRxRllsQEA9QyQrdndmdnhMZVNhQ0YuN3Y0VHhXOHgzfFN1ImEjOigsXkBAfkk4SzRNPjhlMj1aRUliJFpvXU52IXs+KWppcnlIfFZKbz4pREl8YD87LHR4WV48QGNQfS5IYXwuWXJJOEBALlddSltTTE1ndFllZnI5N098e3ppXTtdRXEm''@;'; put 'put ''UDQuNXdGJndnPSFmOXg+NjtKMGVETVJKMG4pblhfJH1XZEMlZUkzYEs5S0FCeyJee2VwWiM0c3AsOHhzOn1AOyZCKGBGQTAvLkBDdlo7KG84KiwkbEJfZE9WYmxebmc9ITt5eHV0TjlgKmkjXmRQdGhgfWo/bj9BPip3R3ExT0hjcDB4cmU3RChjTDBVRzEwW0hDO2hQdnZuPTpkaktxOj1gNkIq''@;'; put 'put ''ZHVOIVtWc0VMXSomODNtKFgrW1crLzdmPUBxeVt7RW5IYEZbZU0wLiteMSk4TFNhPFtxfCJQdkEmaFE0fH1OVWRtPG1FR29WQlh4ZTlzNiVWeDQuXnRadj12OWBtdjskMEUjX2t2YmY8VXI0Ql9ANEY+U2MuUWI0R1Y5RW1RTkI7azduZ15DM2thO2ZQWFFZV3kkUSR2dVtBcWh4fnVnL2RSZDg0''@;'; put 'put ''R1M8Ql8/SyY3d3dgb0ViNHFGej09Rk0hJSVddDt2UDdZP1IvNTtTbjE2dSlSITp4ayxtWzBsW2h2UElEPHFAOz84TW5RSiUwJnhScyM5LlFEe1FyQ2d0VV0mV2RwZjl9e1EsOlZ0OkB5UTIkfXFuYHxFUS9CdTQ7PHpkO0RCNylMZlNAVEJFUFVCRVElUTV4KCsvR1JKYyZjbkdaWlZIV0o8cHhy''@;'; put 'put ''Ukt2My9sIkMqW2ZQb1VWRWlHYVlvSWlBNGJGQjRicVhtOnskNGVELHg0VCQwMHFHaEZFJEFHcWE0TDUqb2QieSlybWA2LEVfJWNAQ3hCIkpnfSo2R0BtKDNbK10pUGUlOXxAPl9Ec1hUNCVHOzgjJkpWQGFHJiwoNEJkODQ+MXghaiVbcW04OGtoIih+TCF7X2xtKmVbWn0vZCQpdjAhREtBcUwv''@;'; put 'put ''UHdvKzskX2lQaHd0PkV9KksoNUImMCt7bn1UR1s3eiJiPjFHPk8/ejQjNVVWN3lFUUxSJHt6ayRlZkJhPWwlJXlMRXN3QGI6JHpse0lQejRLZFN9XUYlWy9pPlcsd2QySntHUl9RaixCV1l6fSp8LClOcHYkNUFFcUtWI3tAInY5dEJSYG9BUUEvSVJOUTNgSFFDWGhuREZMPkd4XkRBcjE7JGNY''@;'; put 'put ''SSFOK2E0PkdOQmAuKnpnb00jI0tRZmdeO3MzcjhzcDpRcFgwVT99JipLbz11W2lbZF06VVFkPXEheGl2XyNqXSY3ei5wbyQpeEQyMk0lZSlVPXQ1algsdWhEalgsdXhESUgrTUpKME9ATlZhczBuUUFLcjNUVSJfakNOQ3kzPSU9JWRAPE5BbnhIdWVsbkBXcEpSc1hQW1JbVzxoNyE0XzV0c2Us''@;'; put 'put ''RHE8L0R+YWVnSEdgUXxlc2haYX5fY25BL1lHPF1wRFVXKCVITGJ8MCg/fVUvM0tNOX19YXNmbXk8LD8zb24uOFQmdl8rSUk/fTxeODk3UXkpMDI5UT0yJGgwWTIyKX08Xm95ZyhCd1lRNCk8JGJ2XkVKYWJEUnRwSXkiWklhdHBJZm06TDtoIitgYTNPTTZbNzh3MWN7ZE0iV3ZxYStmamA6SUds''@;'; put 'put ''bXhJd3YyZFFLdWpxNSRWbC5ZIU8hPzNSU0M/fTxUUTUwa3JhK2ZNNls3JFldN1c2bn5fMjFjeGRORUo/ak1vRXxfUkdWdjdFJWdBYUNDRkovSmhoSHR6X0hFNm5KSWE/WVNUdjska0VuRllSSXV3UjpVKE8rfEdzWGRdW3IlUzVHUHwvTzUxXXUwYDEqO3c6dWlKTUlHZ2YyWSVQd3p1LG9bPEso''@;'; put 'put ''amMvc1M9T2NGL1I9Ty5bM2pHbzohO2RMeTRTXVtjSHk1OWU6bk9dTCVVKno2aTdfZE1qK2M7IUtaajIkczZVMjxGeTdwN3grLzpkUUZbTE5jbC5yJkNVUlpXNyIweEt9XzFFY19SKihpZioyVSJjOGh2dlUrN0ViJnBMLDIoc2tOR3N1VzhbQUE3NT1fQ3ReW0JBIS4mVUBtUFMoXzgoeiV4Om9V''@;'; put 'put ''UWE2LGlAdTA4LmVIYSN3OlY0cVtTYj47Z0hxeHBMMiVPLCZ3W3FsQE5PYk9CbXx8Vl1tXTVDTjB0WTBOWjpSNSpyemJdSDBiY2tyJG54XnAkR2w6d29CU0AxUWFkMi9mRGdLVDBmYVlUOHI2Nlk7Sl1LZj10RjRgT3lgYVozMndwYXo2cTtaPFlWY3J9JTV4OzZQI0VwVmx4amw/YTtiezxeXk4w''@;'; put 'put ''KFdRVW1DQDx6UyhIVVUicjZXSH4xSC53TltRR3BHODt+bntEOE9YaSolUUIyUSQweTNPW1F+TUY5YXNLeUdbdmxVXStkSi9eI0gvVmxzYTYjMjYle2chXjs0UzZiWjNrTWs5eGpXNitjXTdsNjpyYH52SCN7WTgrKyZATC9JR3plXjBvKkBpOVB3fj5hWjM5WH4mSFYlUj5kZlZ3flhWc042YnZF''@;'; put 'put ''bjcpe3ZFbjdvZUM3UGsoYCU8JCo8SWNIa151eX52K3wwfHU2Oy9hN3FONmJPLnp2OzYlMSVSKXZTPWh4eU9JKzY5UE4wW29HM05VOklMbDpyNnZzYjU3MlhgW1E0PnAxOjxbLnZdYkpbK11HXz42RlY3TkZyeyNlQmNHbyR3PU9gYVozZjk+WDJqTjIweHFOcTtFOyh6OzZfTHFsdE42YnA/QCo0''@;'; put 'put ''U1ozQj1gOnpFe1ZKODNCTEZBcEZwS31dcUpMJnppfCsxNWR1Yj9iL1tiOmhdbTtie1spd3E8Omo6SX5gTjk5N1s/fHR5I09gWVc5TC4lLkpbN2puR2pwZzxGPWZmPz0rc04+I31oYEIvc1ZKfVRuN2ByVXNXalliYmRiKF9uYUhSJV9GX0sub3tRVVNeSyM4NXxKRkA4NXxKYG1qVy9lZUdEfFBX''@;'; put 'put ''OVB7N0NvfH51Kz5+YklsfXlgY2tgOjo4SDhbLHVDRlljPGUqYjBxK2BGQlUmQj1LZVR8SUJVQ1t3YHNwSHNFYiJWT15KOiRiflV3Ykd6W3w8PiRVZlZNandONiFCL3YrM1BIfU54eU9nS3hUSSx2Tm14b1MmNktbRjxwUz1lfFV4VVBFI1YlUG42UmlwQ1k4a1RjQDNBYE5OfDFFPClVK3dGOW1y''@;'; put 'put ''cHJCQG9WbDQ1U2B5YHA/JGxCWyV8Y2tBWj9NJVt8P3ZAZ35NMHErNG1wSEQ4Q29zOn5+TTBxK1czXztPTi4xNmJma3U+NX44ZjF5KnIzOEhrWCheVEJwL1NhOXghYjhuS04yZEc9SWs6RFNScUAjb2giXUcrfFdoWSRicD9eaXlnakdsVSQldl1TXSh6S213W0E8eHx3aEMrSC41cF47MFovOFVw''@;'; put 'put ''RUBRPGlgOHdsTlY8d3lSKkR2Jk9ZVlFmMzNeYGxjQkxgT1gxXl9heURlQWMlOkA1cUh6LkQ9eVZGd2NLL21oVnZ5RHNOMH0jUSMoPSQhP29Ldy49ZHpCa2FzZjloSzdxKzBuRjBQVjJuLFtyPjA7UTAlcDYhO20vUSMzVUxwOkhdVHM6V2BWVzxAJmA8YihjcFt+V3NWaWg5Ryh3W3EjYWdqKSY/''@;'; put 'put ''NU4wcjpVOzRzRHtycihPSjJKYlhdeiU0ZChkeXpAcElNW2JEeTJSbjY/ZEV7IXlrPGArelN+M1ROeTE+eEBlX044QHd5SzorM3BhSzovOHghQDplLi5ST2IxbDQ2czpzbDI8N0BeN3svKzNqWUA1R100XVsuKzlfTCN3aHI7ZH1gNzc0eU9iM2FkMjw2NFMuM3I6Iz8/Yih3SWA3N0d7PGIodypx''@;'; put 'put ''bnA9YjtVPkRvJSgxaHlsb0slSV9faVldJjFrSlIrJFRWQmhSNiI5WXAwJHhAOzkzKXMpd3lqY3V3NkM7KVtfaXhENyM/NUlNJVJULkohajhGKTNlZk05U1g5IVk1Oj1bYzhjP21SdlZGb3FSXzR7QDJsW2hhekNUKHEzdThQVSx+eCkrQnljLE1Ta3c6OXVeWzUlM3FuTkpfZHROUTtiXntdQ355''@;'; put 'put ''IUNZSz0uU2ZsITp7eVlSLlNYQDssYDJZYkgqIUNJKnJ6Y2Q6bFFld2JicHhpTFA+P2oqXzZ6YCMsTn1pZT5ASSszZ2pPZjhWOm9bYzlkKFo5fHt3Zz9LQzVgZDAldDo1ZWArc31OT0dwUnttMVtgK15ENjFdR31wV0NMI2BmLj9zTH5GNGo4QFJHW3pgQ21wZ0cxeGcwJUtRdyVVNTpnY1Q9MDUw''@;'; put 'put ''emM4JT1VdjpaWyRkOCV6b2pXallqKDs9ZDpoV2oqTiNaYWZXSFBHcEpVKHpnOCQraTkmMCl1UTt6Tk1LUEooR0R5MGlyNTkhb2RZJHQrc11gVlJ6K2c3T2QzcVpSL15bUmJOaz0uM2cscXlnQDcwLzFPeWdYMlNXKnolJVpQZDhPYmU4MFZAXlFZMlpPciw9NzwmbCEvPGUsdzhDeV9jZjZAMmNh''@;'; put 'put ''PGtIaDg2cVslbCNrd3JWQDkmajxufWQqd3FoRWUhMVkrQjgmN1l7RX0/WnJOQU8qek5GVDd0QlA7Kzk/Om05bSRpIWJ7ZWImQD9ZPzhIZCtxbk43b2Ftall+UzZnMmx4LCoqPzdqKlUlaSN3JXNLQSV5eihndFFVLDs3YnBeTzt+UDtiYXs2ZTNgTXRvY2J3NiYwXT94b0dUTStRc2AueTFgY1tl''@;'; put 'put ''VGFvOFZ+ME5oVWYpQjV6XmpiaCh2Vk81NjdpM3kvaUZVSCR6OCV5emlEPzZ5M08kcj1OfiYmTH1bO2t8ajFbYGFSM11CMkF7ISt4blBdVmJHXXdoaTczL0cobzoiT0ZNWilIbj5NQT0iOl0sSVVgcjY9c3tHOVs7MStzfWhdcGZIOFJIXnNGalt7NVBgJDt+e1NBL3olYnJJOi5OWzQiJV1PPkBC''@;'; put 'put ''MnZoTmVANUA9YmRmVyZ8RzxGejFMU0Z9U0NNblJJLDpvTXs9TVFYa0t2ZFs7WSosXi9uaGE8YTU2R3pkTik5emptYTM2UU5lckdOb2BYNnowWUhyNn5yYSVBPV57c3ArfXJyLGErQ00zZVp4Zno3UEw9MHR2cnpWO2JUTTVsMyZ8eW9xSH03ZipnOC9TNXcjZUtbQDt3PU9pLitTNS96YXwvenN3''@;'; put 'put ''WztCV0AibXg3Mm1pNFM/JlI1d1s4MEdRaHs2KzJYKXwmbzVaIkBeLnJdRSFZdSRdWXo7eDxDN1I7eGcrMHdJTz1MQVA1XnkhUUt5YHw2dWgmM2MzPztOUzB8ODozd3BXVl1HVEEvKH1HW099SDh9Z35yW31KUEVlWl1rMkNZUEBXfV1ZSz1hayZaZDhXYk01QmVHUkw4SW1OIyo5fXtmWD5paEci''@;'; put 'put ''enRUcHd7TXVgQVBCb1JVQ0Q9S3A4cHojVjRTcDhlMCthWHl1PVVlLlBFMiw5ZWtKYHZdOEA6XiYwJCZXcztHdl16JXBebWhLPVNiOGk3Onx3YEU9aXVdZUorM1BdayNAVkpHSC4jci9uJHIvbkMvWiM9Vm1me0A5SUdifjNIe0w6e2BgajZXRHI9KnF7ckYvMERnei9WbCp2RjVgTE1TZm1+eXsv''@;'; put 'put ''P29LdylbSCwyWHpjcy9Je3VdV2BbLnAmOHcpcT56eiEwbXt9U0ZzXSghdjZxajI8P2VWaH5ydGBRcEswe2ddQFZvOHUrPW5VWl1hRUUycnN4RV1adzpmOm58S30qfG9rSHAlYWQ4RTxTU2ElOzBbaV97YkpRJVdQKHteakVLKm05K3RyNndPeiQ7KXAiPTgxIVI8Ny4yMlNVVEgyPWo1Um5oNztg''@;'; put 'put ''NFNnS2E+ek1sZlJuOnZgYy5tQ0hTY2lBMit6Nj0jejMrUmxkaUEyQiJyK1Jsa3cqRTo8SCppQ2xte2o8aVsyeWMoL2JedXlIMjtZQyRRNTNvTWVFYi42THtBekIlRFlgMm86VjI7ekxvJWJEVVU3O1lMLlY4JHZbZlJVJndAK202TF02YSFyPDBraXI9cWh1UiZAL2UqU3g8WCE3UlsrIjEwNDJ4''@;'; put 'put ''WSZ+N100ZF0qYlJ5KCtAcndNdEwqOSMrKXdKTW1IOVI1JnR+RlpDOmFid01jVDEuc11CMWB9S0ZXYktHNE9EM3c/bHdMLkw6dmVUYUd5bEM7M2R3NE4jZDcuWiNKaFpPTkgxd2FZN2k7ZDs7XlI9ZV01emAjLDN8XnEuUHI4VFNEbTo2bVM8NHRrX1pCZEJASlAsZEgwTzBES3A6djtZKjwwZWtr''@;'; put 'put ''VUVyQ1I8XTM/d3kqe2A6IkRnMngseTJYe2NhOStNZVM1dGVaSCpHLntkLGpDeDljSHVkXmBuLyk5THt7XUhQODJGczwwbmlUTlsvZ3BSI2MhXy4mb215IVJ4ZltvZFIhPys+WDZXa0ZzM3RbbEBiWiRII1loQ3J+diJPLlNaKXwjXTVuRyp6QiVzenZeR1tDIWkocEhEOFZlPTlQLi9xeWdXOXpe''@;'; put 'put ''TjRgcm9Pak5kWU5dZ2FhVChjUFNrKDRTOXcpeCY3aGAhVnc6cXBzTnBIQShTYDUuRzBPMFF8ImdtMF9yYE05LmMyWjpwJmo7KXciPFNvYSUiI1I1ey8oc0x+bTFzMyYpbmR0bTtPPUs/Wl5saEduXUdtPzdncW8jT2QhYTw7PFVhI3ZWMVV4VyhbTzd5U2Frby42LnM4aSojdUtXXWVfTiVSPH54''@;'; put 'put ''QHd5Z29HVDt+RG5GaEAsK3ZrSkduKmhbKzYxMlRabChydlRiIyVqJGsjY31SIypSJigxT2VLX1B0PUM6dFYwSExnLF4kYlZeang5Q3pxa0xpeUl1dT8uKyw9T35eQW80Ryp0bChDJjQ/anc0Sy4+L1lKdV80IlozZmgmPEB8YDdeLEw0Ul0yWEF0KjF4bzEiO2heQSNMNyVzRSZ9YEFybDldYlJE''@;'; put 'put ''PD4pKikqZXZCXWoye1IzRGd8dHxzcSFfYSE0fSpLSmFnPClFblJhTEFrYkhnK0Ivc0pLaWQ7Vys/O0FAQFtUUktpYSlMam1pdkI8MjBvODgwT2VlPTpxQlB+ckVxU1szKSo/QGMoI2Nwfj5WPmo0fWVjPzsjKVBFaSU/O04vdEQvSnR8d3hqRXFTWzNUR20uJlIxO25USURkWT9WdD49eTZGVXwr''@;'; put 'put ''TU5pVkp8SVBnZ0V+Lil9TXRXc1cmM0BRSnxJe2J0a2EpRT9pVS5RUjkhJUddQXJaIm0/MEN7KjBrMHRuWXxfJnwkK1crS3EkZ21IJTU7RTVNYEtIX2MxMHgqUnZ6UlhDY0o7eCI5Y1JXYUxWVjlfOT4mUiVqRTA6STQxckUrdV11ZSJBXVgpMFlkU21JN1JeUiE8Wz9qTTJ3bHh6RUZSKT1EWSl9''@;'; put 'put ''ZzF+SVJHSWFxK2R4Rml6UllTXlJJPj42ZU93aVU0NVZCVHk4Q1JYNHRFJjtqKEt8NHVvTzBXaSZOdlt3Ynx6QXFgPkVNSk1KPEoqSD5KTittREo+XiVxRiFUfVlZZ08hQFZzfDxzLz5nfDgkTmtsaGwvKTJWVmh8Wm1Ifk5BdWUjcz1TbUVCT2lVPFE4X3N2QExmWEZpaV9RS0c+Wz8+PXRdfVNe''@;'; put 'put ''WDomcnxQUjwmcH15QSgpKy91PUFGRG56QWUqNEtLVXtfQmlVc0lEKClYRz19QEJVK19KeE8uPkdEI19BQVkwJV85WSpKSXlFYVhHbHQkOTFkPmE9RUVaLyJyTUw4UiVPOmBOe2xLQy5FSm5rcj0pX0AyVmZjUHp+Ll1WVTpGe2poWVM4PD0/Zk1MaDhHZjwpVG9zNyRyXSZ+Nkk4Sjc0UlU7OHl1''@;'; put 'put ''K0BYI2l0KkQ1QWx9SyVESEo7WTZRKiRvaT9pTyskckU5cH5qTHxOdzkkNXp6UmVtWX1udCV0SEd8OHZhfUk3KV5AQD88ekghQ1NtaVlTI2pMaExoMFdFUjhsO2pgbE8mOio0Qmt6VD1vfmZ5T1BYa24oVmxxOl02KFYqKnN4N0Ujd3ouZFVdejt5IX0/JHpBX2AsND1zbyhWbFN7dSI6OFRaYUxS''@;'; put 'put ''aH1ffF9SRzsqdHVeXTFRKF9NIjpgayhXNGQmYkk3VzYjJTt2eUF9UkozfXRlaXUqTE4xN29EWzZvdEBRQ2ZyRF4iPjRaZXgpeGIwSEQ7KXRPLnR1eWcoZSgheGJzL1M4PH0oVkdgS2lUJU8zVEc0IXlQNSppTGpJMGIxMHhVWmZtSVY9aU8mckNIPCtBemJEdEBXQlMhPGt0Ij8oaGlVKXBhUUtF''@;'; put 'put ''KkM9I3Y+b0ZUKSluOnUuVSlFdlFxPTBwa199Pyk3ISskS0NjLEVQVGomWSY2WzI1RltGQmdzZyNbKTt2IUR4Oy91Q2M5PGB1YHo1SnR2OHA4eXIxfVUxbClLS3RSRiQpNUNtPn51VkQyUUVpIjs3RVRFOjtlcWhWZlg6KFl+bEZCQkQxMlcuWWJCIzYkS0FLUDQiWHM0V2hCaTQ+TWFBIT1ERkUj''@;'; put 'put ''ZzxyenkxPmw2djJsMzlzNEZjQygzVlY/SSxJTUpHPiYiTipGL34qKS8hNUo4PT1LQkVRQlN6QUQxaShgX1RSI1I4PD8/Zk1NUSlaTkJPKlA3dltmTlRuaSswcl5UYyNvSDF9bSg9YD95O04zNU5xdS4wX1VucnZfZ0RXVktrVSF7O0VsaG03Y0EmLDNyNjUvTD1QZ15oS29vIWEpXzlRRG57WiFj''@;'; put 'put ''WlhwOlR8Ml9KMzJxJiokKiQqOnkxX3VGMVd3QSRMb2dJSTM0eXo3blhIYkgiS2h8WXUjeUNUSlY+W006Pkc4biwpPz5TbEtxfCJsb0tFfiN1PmN+M01AKGMlZ2Q8cl5+e1UlPCVHOjIqTFJoPzFwYE1dRH1ZPmp6aXByJEozaWpsWCM0YE0pWjVEN3UmfDhUZSM/V2ovRHMoYWRbOiZFMH19RFVZ''@;'; put 'put ''P1BzJHgmXk9PTGdBRVBNeSN3dCFbdm5pcGRHUzFoNTE3KztwfT5ne159IzlgcjhxbXVPNSNWK0V8T0spbUxdR2pGQ29gbG9JS2YpTiV4Ol5ZbjppSEVURVF0PnY+bj56RCZrei5vZGNYUHRdWnFqeSVjNmprMlY6bU07P3VefHhETkFgbTlrPilFdzlBI2dSe3p6RjRgQ3tucy53T0t5Km9wb0Jk''@;'; put 'put ''IipzbmFfSEVjMTltPzsocygoc1FgXUt9MHxtQDZyYU1uVi5XOSlKVnhbVn4pJSM1cFIqQkE+QjhDKHNtOmAyPCR5aHRDfHRRVFE9RipMKGV0fXQxTmhKcSJUKHUjeDNMfjx3PVBhS3hNeG9ZYyV5YVVNd34sZFVNVXRWbkJkLGMzWWMlVCNmbiV8eH5aKSg9NHN8VW9+LjozfWF7eCkmflNRQ3xH''@;'; put 'put ''RGJAR19pMDpRNV4+SSpIRzFWI1J4LGw9KURmLjBAZ1o9eHVIYT1vcSZhaiRfI0dsPSJYVnN0Z3l+XUpLeiswU3x4ejYkb31JPnZgYkRdem04aiNPJi9AY2BxbS5eIjxefWclRVBxcVhmVUhJd15fdSEhc3V8RitQUXEmJD1bemskMT5KQ3gxI197djg0P2FUbnJ2I3xfaGpGYUxMXk10c0gwcj1y''@;'; put 'put ''P2hDZFtLO2gzZlRSfTg9ZSl9eHk+flcpZE5nfj8pIjZUUmBSIyooQGZNa0lbam9FXjByRVRLcEN+UW9oamBdblp1OGBbRyVqfURFL1d+UiU6LHw+SjFxKmQ4UWUuRF0lY19VMTJiaGs7QEAzNihCbFpnOGNqYG9RJGd3WWJRIypwJj8wXyhVPXFhK2Y0R3szSEVzMVI2cmtyRkU+WTEuT2JrLDMp''@;'; put 'put ''VSRUZ15hQlUlPmd9TmlZdzRuaW1lT09SXz5ZenU3IT4qQCp4RU1KVFJmRDcyW1FNSiJNLldXWGdoVFJYcnRbTHE+c2FYUllOfCt2ek0rNk9NcVhfX2lpeD0qTD5tPTtFalt3JnI/bn4ucSpvT2ZiPk5LUmkvWihoMU1AZHlQM257eXl3PSlgXklUU3kpKkg+fWJLYG9kP2xNOUZhal1DLjA0JVlo''@;'; put 'put ''amJ8XzpJK3VZR2dyWElITE1fTH1+LlhTWytOKVQ4Sn1AbXdJIVc6M1pLVjtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2Yu''@;'; put 'put ''I3psTTtXOHJlfDg3WGR5bllSMlo8STtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI21VdF18OFtmbFlkeTojOndIS3xuUmZpISZpcSpddy5IMlBSZmkhJmlxKl13Lkgla3lNZWxgam19WHZAYW4y''@;'; put 'put ''VTNIZWd4eFBSZmkhJmlxKl13LkgyUFJmaSEmaXEqXXcuSDJQUmZpITgpXXcuSDJQUmZpISZpcSpddy5IMlBSZmkhJmlxKl13LkhsU2khJmlxKl13LkgyUFJmaSEmaXEqXXcuSDJQUmZpISZpcFkrSDJQUmZpISZpcSpddy5IMlBSZmkhJmlxKl13LkgyUFJmaSEmaXEqXXcuSDJQUmZpISZpcSpd''@;'; put 'put ''dy5IMlBSZmkhJmljdmdTQ1VsU3c8akswXlEqSlJkOGEkZWVOZ1k4R1FRZXM5bm1fKiUjYUpDMyZKX21ObEVvPXIvKlhrLENXVl0wJmtFbyhwXj9NI211NEtxLGhvPXJtNlczWmswZm0sb1JxLChpMGZdMD4jXV47OF0wKEBRVXouTiMsUHEsaG9KM1prMGZdMChAUVV6Lk4jeTJOWS5QIT9la2NI''@;'; put 'put ''aXIwZl0wVjYxZl0wKEBRVXouL3oxNmVrOipYazJON3gwZiFxLn5IMT10fHZocSRSLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlbFN3PFVIQ0pZJVhTblVrbVl2bDtgUHNlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07Vzhy''@;'; put 'put ''ZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmLiN6bE07VzhyZXw4W2YuI3psTTtXOHJlfDhbZi4jemxNO1c4cmV8OFtmVi4vKkN6JSNAbmdsKz8qI016WzxTPG9tXm9WJGNkYiRZYjcyNEsvXV04MiNObEZgPXIvKkduLENXVkgxJmtGYChwXj94JG11NEthUF4vTj4zeE4+dCxPMWJR''@;'; put 'put ''M2dUJWtvL0AxLE8xYlEzZ1Qla29jdjpVUDVAaW0kRGtHK2w5bS81Z3Uqa28vQDEsTzFiUTNnVCVrby9AMSxPMWJRM2dUJWtvL0AxLE8xYlEzZ1Qla28vQDEsTzFiUTNnVCVrby9AMSxPMWJRM2dUJWtvL0AxLE8xYlEzZ1Qla28vQDEsTzFiUTNnVCVrby9AMSxPMWJRO2teP3VaPzx7JCEjQG5b''@;'; put 'put ''PDArb21KbVYkcSVMPTg3Tz02NmRiZHlvcDY7dGcwU0QlX1ZeP3sla3U0SzVhaFNEJT9VfV99Z1RYZHl6WWR5O0BERnNxbWxiZGgyPDoyNiRTODdRYm1sYmRoMjw6MjYkUz00Si47NVEuQS5GNG0vS2xCa2NrODdiZWgyPDoyNiRTODdRYm1sYmRoMjw6MjYkUzg3UWJtbGJkaDI8OjI2JFM4N1Fi''@;'; put 'put ''bWxiZGgyPDoyNiRTODdRYm1sYmRoMjw6MjYkUzg3UWJtbGJkUUpzcVsvVSQpXm1tcmdWJDchTD1DZ3ptaTkscG1sYVQ5N2Y6SUBhJVIubWxObEZgdHwxeE1oS0x9X1tsLFhkeUxraFN3cU90LyowOTJ4TWhnSmIiYkR0K0lMN0pWPFsqRlRzISt4TG17aXdKWDxbKkZUcyEreExtI1hSMk1EQE92''@;'; put 'put ''PWVwO2c+PWM6Jmp8aUhKQzRDV0k7RjUxY29SQCNLcGElV3JdYHRFKzFPaz5vMDIpaXMhK3hMbXtpd0pYPFsqRlRzISt4TG17aXdKWDxbKkZUcyEreExtN1hkeVcyYSRxS3ptZDhhJGVlTmdZOEdRUWVzOW5tXyolI2FKdz1sVGIlK3g3eCptYEt9XzJta3U0Szx4JmtFb2FeLypqJDd5UURpJDZG''@;'; put 'put ''c3FiVGFUYVRhVDJteyEpLHtRRz8zdGczM21eP1M9NjZwM0ZUQjJCLi8qdTc1aVV6US5LOnBbJVtgViFsPDRfUHJSMmx6ZWR1Wz9RYTM9QmVYT2plciR0M1ZITHkpfFN7MThrR3pPW1A0SjE2US5Na00ySWJCMC9QdGFKeVZdOjh1eXs8YkoiYmA8Ojo0OFUuQlNEakhKSTJ8b2JuRUAlI1sqNFU3''@;'; put 'put ''VDw0T1pMYk5nV3lhJE9lTmdROEdRTWVESUo4KTtVJHs/IndNO2IvKip+aXdKPTpQbEZgOD1hOklAQWBPSix9VVdePzM+enY0S24uJmtGYGQiLypTKFFiWko1PlUkPCpsVnxSQ0ZlVjkuLlkrQVlFR3RWZ1pFI2ApM0M7JW5xY25hPWUqUSRgXXFFZUYiSiJCLndZd0pVdUoiXm0kKXhfWTQvMD0k''@;'; put 'put ''ektoPTdqJW02QzppS202Q0g3Mz94XypoTV5ZcVs5ZyZ6S3M4YmtuJXpLTi8xWCxFTCk/KUd0JW5aNG9LNUJvQFtMPl0uSVFGMWYpSywvc1ZIVnNEL3t6eTFdJVI9YkEvRmEkVWhabEVMeSVuO1djWU9ZInFscG1HX1s0O2phY0BKdCN2MnZDVXpDW11JNFJNQXtKRmVZdV1jS28/XTR9ayV2MUNx''@;'; put 'put ''Um8/QmBCJTd4O21ePzpsYUp2ZypDV1ZMfmRTRCVQRldWNCZRSnZnPUNMbXI1Xz9wfXBGc3FLV2t1NEt3RnEvSUAwIVFKdz1JdC8qW3t6S04qanVGVCkvfV9fcyZDV1ZWTFNYZHk6diZrRmBiPDJ4a354V14/ajovKjY7KkVXVmgzby9JQCwvfV9scGl1NEsjLmMvSUAsLzJ4WTlsSypJYUZtelY5''@;'; put 'put ''bEt0Yz44NjslLjlQWEdDJTdwXj87XTpDV1ZoMzRMdU0xP2dLZjw7YXNncGFGVjw0UCtHaiRKRUxSWGR5a1s3a0ZgXVtNdyJgKHZNWmhTeHw3cF4/Vl86Q1dWd0sqbi9ZMFc4dWF8fnYodjhHWUZrfF15e0ZMeVp2eSs8TTNHWUYyQlBHZU44ITpMLC9uRz4mZk14aT4mRU5CNWApMDVCWllAIXJR''@;'; put 'put ''ViYrbHwsRixMR01VTjdSQlpKKjspKjYyeEFGIVN9XzV0anY0SyV5by9JQH00Xz9XQnFGc3E6V2t1NEskRnEvSUAyIVFKQktKdHBaW1RTIi8qdENlTXU/SW8uVWh3V0IyeDVLY1kiKXwpaVMvfS5ZRE4sLy9ZcEw3UiVaSVlTVmR4JVo0SV55YVIwS2VAanNrTVl6UD86Vno1KzMuaFV2Y3dRXm9r''@;'; put 'put ''alNIUlR5W0N8b3spVWpqUzlQUXpqQTR6dy9GRTNHeEV4QSpMJSFMSTBLfnkwfENOP1JlKTZya19UIVsybH5PYCVdd0xsVUh9ZFZzfmU2SV9OYCFUZno2Q0ZHX0wsLzA/QjUsTUR5SXdEdz5UOkZAXnlGKm5vT1ROdD9qek5WdFoyX3xMZCk+dlREbUwwS05HOVFfS2FNOSFtYUgqUiYmeT14MUpB''@;'; put 'put ''ejJ8Z1QzeEdhTnQkWmhUL0wzIWBLaHchSm96QkdUTnFNMSgrW1Mrbz1hcVpaNVpkantKYnF1R2xHci9gSzpNJiEpTkpWJHJ8ekpaKVpIKl12dStxc3x6M3ZUdi9ONHpSKnx6Z2tleGhbUVZ2dXx6fHZYVl92fHpjdylaLD4jUi9CUHopbnJPM2hfS2ZOMSEjTWUpSDBvazwhPmErckt0M3YicUxq''@;'; put 'put ''YVghYSRNVHYlWityaDEyK1QiaDFZdyR5bU9iI25MNGJwTCNSb1UiWmtLLz4meVMrQ3lxKytrL2huejYrWTQuNUphamopWk9ZJHJ5MWdrJHJicWxWTUVmVD4yVXYrK29MSUxUWCJHYkk+P0p0bkFnL2Y4bi9VdGh5cGxkW2J5dCI2KzJCN0hebllWIXomMSZ9L0FeQn1ZLj5NdFVaU09WeHE+KWBt''@;'; put 'put ''OE4+KktxUipPKnt2clNZd1V0XkV8SUk+WCwkZ0ldMTp2b2dbWzwxSzopXiM/WyRVPFZeJXBmV3FhaFFueHVWZHV3WXNdVWhIKUN9aVNhNWhSVWFQWFo1JVJtUjtrfEpdXngoVDJsVFdwLCRMSDlJTUlXOURvZDh0Uko4fE5Ab3ZnJSVbKVc5S0RGeHIkXjB4KigyTy9HeHUsOi9XeU4wTE9fVDNW''@;'; put 'put ''QSpXOSlae1Q9eWUhYGN3Rnc9eGkrY0MyV3NWOVJiQVdHbzB4Lj0wSnA9dTdYc1hkRn1LVD05OF85aDljam51ImJMMzlZPEJzVjkwaixzPGVTTjlAaElFZiNYUXVaLD1eQS5+T0lZOiE+XTJjNGQuIWZLPWJvaj8uKVhMXSNifiZ3TWRlVmcvYVNOUzRSTWoxLH1lMSIjUFM0U0dqQHB7c1o4TDxl''@;'; put 'put ''QDssIXZKQ1BFZUlMVDloQlozT2w8IS5USF5hSF0lLG58S0wsc2VNdnVqKEY1RmBTdyNoKnxnW3JzPT1pYjZ1U21aeyMucCYyNk9YfnImVWAmcV14RVhHMUw9ekV+WjBgbCZze2Q9UTpbLn1MZTV+MlpVTy8zflZ7QDFNMWxWOyszNC5lI0JXfFJEeWFrRHNsTmJSYF9tUj56bzhgX0hAJElgSyQq''@;'; put 'put ''QysucT1yaVoibVRkOzdVKyQqUlppeHZnIXB1a3NOYFA2NVZ+I2MoYjY1NjpCeShWISE2cihiX0s7RX1vWitaPH49MTlJbTQ+Oy56c0Z7Kms4e2okLzVoYHFbbVJQVixgXSRMfUVvMSVqXWN3VGhRUyxhdTEmYExXO35KTnN6KHx9Z1ZIe1JtfklRQ3JqTi8hIm1fS1Yrdjp1eVFbUm9KVWpWIXpr''@;'; put 'put ''ZkF7IUo+MUVlTkBgN01Lb2RtN0F7ZXBrWktke10rM1ZkNWhZQyI3ZChzMkZzIlZANkRhInhlWXBjWkhXZHVgPWksVk1ARnJ2eC5yaiYmSXFSTXBzVlE1K0VwUUM1cCR5b3BTfiZNQEM4VzB1cGJacXJuMGFWQyhILE1XIzlAYlB3R29weW44STJQTGEkdz0iTF1eIlZZKy9kOFooaG1hSC5XdUI7''@;'; put 'put ''VWhAYmFmIVlpeGt4PGIsSSEzKU8uKjowd1Z2eXBTLzAmfFpkR2FESUR5dz9CK1Y0fmFUNnN+Nk87SUohWWxYWk8jcCFxJnx8YE52N0JgO3pkLE9TeXxTU2ZdVWRZYiozKHxHe2BsXVBvPkpXNjdifkJEWF9RKkNAeWB8LDd3SGBTTmJ+NE9FZUR5Plh7Ojx6QHNbJS9aTnx0WipAJVtvXWMqZzhw''@;'; put 'put ''eXZ2Q3ldWUdZT11LalJvWF1MQF0xRzJzc0FQd3shO00vV1A2TkJMJCpSKiZ3fEs/byZNJHJjQXtbJS50ei9afG8rcWdBLiZQfUBLc3k6LkIoJUcuM3dLSSVBSDVPdlZzemkqejZbMTVDaDB5VkgmXlRYMWBMRSo2LElkJlFYLm58KFpqQFhwfWBdUnVvOTF7QGNOeEklazFKK2pYXV9QP0tsfF5s''@;'; put 'put ''dmtWe3xtXWdKYjZYMnpIczNnMHo2Zjl3Wy5Qd0ZhPWs5fH1hT11AUlRObHxBTHtiPW58TT4qdnJuSChHKkcrayhkO1VvYDJgeU9vU1c5QWVCKCQzQ3NPM05BK18hZCFhW2sxUDpKb3xgOikvOmR8WUxnZDJVd09xPW45THRZRlZAfDksPjZ1VGZNTn15VUlCMHdTWDVhWE8lbyE0UCNYNndJbDww''@;'; put 'put ''I01lYm1YbiFWY2dibSxnKHdlayhzVmpBe1RlIXFycHpbbjo/fDxLMHIhMS5TOGg+Lj5yZCJMMnUrMzZKZERyOHUmQltUeC9JYyM4XS5ZKk1lb3JMMjhTdXpDN3QrRCgyemM6YEljSFpffDYoJiVyOFA1Ln58JlVzRkdwSVBsYig5UlNCWjwpWUw9emJrLiY4e05mWF9DMUx8TzZaJjwwIXNhTUx9''@;'; put 'put ''OjhQZkoyMz1uOHpgYlRHVHB3RlRRS3tSKzN1Xjg/N0BTNDFadk1rZlJtLltASyQ1RXtubUY1YGNIOXZNbFVIfVNdVlNvN0Fzb2F4XXhFWEcxTD16RHNzWlpKRC4mdlo5Znd7X2A0UCMwWlRrZFp1eDFTSSFwJiZ3MV1MQj83dkUmcVV7KilyYHgoO3MyL1REcUQjMUBBVSQvckJZUywjUGQpezRi''@;'; put 'put ''c3tRZW9fQGU1RHksSXV2S1pIKmlpd1JGSyEvYnlfOWRvOU52ViJHbF1COXVNVihXMCF4KilTTTZJY3h8anVNIkVkeWtOPUhxN2tpdmNGbURyUkhec0ZqaVRAVTJGQlI1N05DdkVLLzI/MUQ7SXhHZzdlWUtSTV1PfUYpc3ZZSFBAMDBIOF1qIm8jYklSL2FxJXohP3JoUlFxTXc1MFlSWmZocTM/''@;'; put 'put ''Ukxec35mSSx6eilxOFFObVMrVForYnohWSQjWTZZNlk2WTZZNypZUiZXRFZETUpqbix2OmZNJFIsNyNZdlZ6IW5bQVtHfUs7fVJpfio9blVAXkF6JnF1Nks6fVJuNmZ3fmRZNzZOUC4vMSpxdE5SNHFbXTF3ITJ5ZipQLn1SPTBuaCIxTS5SNSw+IjF3Y1JZW2soS0BaOSw7OjNTKnpFQVB+eVUu''@;'; put 'put ''Wnd1d3JhTSp3SGBBLihRXSwzZkwvPV00ZCVHInNsZXxKZG4se1VoaHI2dzNNQjQzMm1haWo1aT9jKGM/KCUqRmo/Y3dKZko6ejY3I1lDYlt+JDAxUCN+SG1RU0svXjE8eno3IypDSCpxa214VD5ebVI0YlMwYHMpd0wuLF9tN2thfDZjWnRRcWBtNzMwNjw/aWVZTV1STHN6ZXs9fnZIYSNDWWY2''@;'; put 'put ''OD1GfiVdey4xL2t+aHt1eUxZKE5TKkR5WGBWV3NAL3l7K3Amc0BjL1F3dURvT3k7bk89SyI1fkF7K0lbSHt7eUxZclVdYDt6OGI7QihOTH03UGl+P3pKemBaYzdANTZ0TFRHQjpXaClTcVZofnJAKTxgTmZYWmVdXnFeYVkjeXo2Jl0wNjw9YmJjYGNEMmByfDZKJDwzLzFVOmk8Ty5VPXAlVitJ''@;'; put 'put ''WChaPyMwWkE4bCs9MWJaX2JdYX43OFtXXTRSS2pmUmVlIT9yIzhbV11jRkJyXytVaGpZK0s+U1RQMEJie1A1My5uUjFPcnBFezk/b11lKiUwaU9Ve1A1R11EU0B8d08oW2QxSGAmUVpUUUwpXnMvTVlmWVUrLyFJMTZkQ3JgY1V9SWhFSzhoejA5ejRzVHs/NUddZ10oK2I3dHJob2NaYCR+MFpr''@;'; put 'put ''I3RteFowWEt3T0NiOWFOa0VgLiFrdjZhTmt5PzBqfF93UXoyZEExT0NiZDFhLiQmU21eL08sOlVmNkgjaiZTbWsyYjBjdipLbmB1eStTL19+N2JIMlFPcjE8Kz5pd1ZdWDhgY2JSTV5SJT8wVGRZNzV7MSxvNixnT28zLD83cGY7Oil6LmpFWjlpSTJpRW55bD9sM0M7ZWhwZk06V2RyNjZxYCp6''@;'; put 'put ''MmdqIlNmUiVVKHozLFJQVSxYZF4hdmUhP2ZYcGZfN2xwems0LGJkQz1kWUVKLkIrYTBrcmA9aTg+KypXZVFDPGg/aShYKDJFbyE/NUZ8M2dXMU9fUGJtYSU4NUokRTNCemgxYkgvVVNUWVQjNkQjP3wkMnVjIT9fU3Y3Ki85dzUyNjI3bF9CWyR+MHVjMytwclhqVFN2NyovOkdUNkhwL1NmfSMy''@;'; put 'put ''bjh0Myl1SVRIVXgsUFghO2xvKFl7b1U9SiUyJTg9LnwodjlOVWYyYy8zTl1ATF9aIkAoWl1tKGQ/JiZVQDcqPUolNFMjNm1dTk5wVF1IIzJSaVB6W3FpVkc9QnM6VVsmPV5ZT0dwYSVpOW8kcFQuKlsvXXNSW1VmOUBrIzU6cnImXVl6dW9gYUh9VVNgJHpWP20rOVBZZ1tqc1lVISx3RV1zT1Nz''@;'; put 'put ''fSU8ZkYrSUQ4Wy5BUCsvJDM3O2MsdF16JTFLfD0zZihkNS4jMzIwXmRuL0ZbPi42N1sxOHBaTyMyWWQlUVNaUltHSmVBVCsoNyZZQ3N1VmEjaS5qQ2ZUWWRoVHx3bH1TZWZXLjFSbz5qIz0iMSFzXlJyQDdiL3kzdmxvKUkqZFhmdyVoU2RIajJWb1V7UWJMMi5TN0l4fGhJWFdqKXJ6NTwreClW''@;'; put 'put ''cWhgO29+OSwuKkN5KStBTko0QmE1cyZZcEhkMjJqWjowWlt9RHJYWl1aZnhZM2x9UGVUXlRyUE4xLkYqZzlqd1dkcWxCTERXRCtXNlMzbVpuXV1pZ2EyKWJZMikyWD0/NnFoRlJefVk/Jmo3JElnIXglP29yNXhqeWMmVypFc0hXZCV3UnpRLk93OjR4alBYL080e3Y1Njw0P0ZaL2RzJU8qQF5H''@;'; put 'put ''YDNrJFBEbEJpOyIiV3ErbC9BWWdNNkZwMTtCWEwyQnNDaUdQTzduQ1VPNSZWb0FCQk1iTypPN183cSxDZF1DJUlaTGdBQUFBQUFBQUEyV18pRVQ+fTRfc0k9dEtgWzJFXT8scUkmO0FKYyR2MlRWUXFbYUQvYkFqaXFhPjk0NjQpKyV4KHt7YDxiLkJxU1F8TTM6IloxbHxzZSxVazR+S1lhdit+''@;'; put 'put ''Ml1ed09+MTRiXVR4cVFXPD5HU35wRjJpTiIoNiYlQkNvWyhBSj9OKS9ddkVJaUgkRi9TKjo1and2NXRdRjNpbl1Dci8qPUc2SComYkt4YCJIIVlLWDVIX2AjMjBHU3tbWjB0WFBXekhicHReRkU7Kzdud0VzYSF4LEsscD1jWkk3TjA/dF9+amFCVTdWQDZSXl51NWRHXllfeTN3TEN3REFjdiU+''@;'; put 'put ''flBkb2JMbCppVSZIdF89bTFAWXNjS0Zhcn4sU044SHtJTzlgWWNQPll1bWlDdCU0KWtkZ01tMTd6UypLO1VwSzRERjRQUGNgXzw1IyZ9L3s/NS9NQE5oKjN8QmdtUHRybUplPCtqSSZpUD08W3Y+KipwX2c8K0hSYGJHOEJldF0mS3NFKE9ydE1bMExQMSNFa3F8JD9eaUxRZCZ4bTFCeUBwMWp6''@;'; put 'put ''eG4xOUQ0cWdbc0cye2d7dVtQfVEmfjh8YSRnLDJLVjxxImNLa05gLzZGVl8yJHByMkZaOktHeTZRUHZwbld9M2J4bVAiTmFUYTRERmUrL1tgWFFxTzlhNjB5RWw4QmQ6LndkNW4oTm5FPXB3KFE0RFRaNzREVzE3UnpEYXsufWtXTHdSfj9+bFU3PGF6PEYpRykoY0JOdClRIkBVbHIkOC4uTix5''@;'; put 'put ''Mix2OT11d3hLQVBadGEhfSV7WXpXZlt+UVJOdSRCaEhrSTo1YkZ8cDw0WmwrX1pJJV1iVnF+OF5zQ3ZrN2haPW9weUlqSG0wUkxSejMxLlVwPjUvejB5ZmV9ZnlSWX1XP01zJmZyOVtCOTZ6cV42fmhvKHMsMEJDOmJxLlM5W2VqTHlNMXg6OHB5Jno5XUVNJmVxMnkvaTtDSll1O0pUUz5ucys+''@;'; put 'put ''bHV4Y1VsMDhna3tHUipBNUtwO2F4e15EIXVYWmR5MW4rQHR5ZFlaWjZ7VFVLTFMvVlo+Jmc6OG98PEMsWWM7RDhjeCpFIVlqfERDI18xP2JTK3BwOnBYcippW2MiJm5NbT84aDN7YHJuQ0ZHQFc8OGc4QChQNGFTX0hsbyhaIyJfalh6Vmo8dndURF9eQXAxWUV4PzMiOl4oSF5GdVhiUU9YIkxV''@;'; put 'put ''Vl06WlB1QHVaSlN0amhMJTJmNClKNjRuW0g0Q2dfRktgeEx0PjRLKit5Uk5WRzFyOixmUSMvfH5NdT9YaWtHP0VSTj8/QVtVYml8L3YzXXtSIjFwdkM6fnNSQnsvYUlnZnJJQTYwRnFMNnMkRDFeXmtkR3ExUFhdKmFJd3hmImBbeVtQL2FzVz8wMyN+U20xPEBqNm18PmE+KyEjKHB5VTwyeWYl''@;'; put 'put ''LztMJiRoNUhhO3IvVFYmUWZvJio9XWZwPnhRUT1pcDU8PCROejQhdHZLRW41Okg6aX4wQjY9dTY2PTJXb25WanFXYkFLYEUiWjpSaH1CQkBNJUhjQVRxISQibk0oeUUkQSl7eHdGU1lsL1hPL3hKa1I/dUc8RDJnRTFAfF9NNS8laldDdzAkKXRONTdqakJ1JXk5MVRiLHgzPEo7eVcicnZeeDdL''@;'; put 'put ''dTdWYXJvbElOTHc6aFtZcGBAWS5afWpMczBFNCJqKHw/Ql5wLGg2flFJSSo7fFAlcSVeSk03a0BHSFRFVnplOE1hfjp1M0c0OUVnb0JhJiNRQFR3S3xPWTw+UTpKKCRXdW1DcjdQTDZIRz5ya0Z0YilqT0lLUil2bW9MM3xYMEpHLGBId2w8P0R4XUllWGYoZXtrZEMzd1d+R3U4N2lMLmVSOV89''@;'; put 'put ''L2hQbHQiW2FfcDlpK2QpM2ZMKU4+fj5iYGw8SXR8SUhLTU57RHAsRnF0MiNGTHo7XXZeYHJ8YEJHVGE5KilMbjNDcWcySFBtK0gxUk1TImo7MVNNSjZod2g1al11Jk4zWWYpV0h1RF9HO0NLJjpRNVlaN1dadkVDQW1IdFFuTGVDS15lbGRkRGR7YW43REVTaHUpU2laYF4ocj8sc1J7LkcwUGtS''@;'; put 'put ''fk5eZi5vdl05YCVHZ2hfeDhrY3I9TUV8akEzaiRGMGNwRmFNQ1U0YzFQLkklXXgqVHYrPFgxK2RLLyk9QDZwek5bISpRPVt0YnhSUSJUSnBeOU9mO0VuenRVeV4ud3g4dXFzX1VMMj5uWWZIdjlNOHNdIXM0Lz5ydUJKb0p1W3RIZT5ETkJfM19MXmRuQXpqazBNdkRrJjUzPiFwbGB0WkwmM2l8''@;'; put 'put ''TUllSzU8bE4kQDh4amRMOHg9NmloJGdQSVcwPDFzU2JXL3VIQk5kIiQmXTY2S2BKZFEyTzBPTyt5KSV6TysmM2Z6UUxWNkN1KWQqO2ZkR2FdYSRrLj5rZV1SIXxKS1JdIlNOSXM9RXloeUl0Rj9gXmFgTSRkayIwM2RkTXo8MHJ8cDFhUk49ZUM3TFlKUllOaE9+JlBsXipxNjs/LHI9e3g4QFtq''@;'; put 'put ''Q0hDJkN4LjVrK05bYk9TakttUlgxd3tEanJQckRmOG56Wm1mV05WXlplSHl6WX05NTtlalg7NHhofiQ+fUxWa0RuLkpjVE9dLEF1VzNIIXckIlFMN2Qlfl9LRiFuSnd3cToxTV9QIXJJJTtjQDxbJWgvbW86YSh8KHQmLHFQQE1Le2FZfE01X3VGUVhVbSFIRSx7TVIzT2RiLHlxTEU2QUFHdjU9''@;'; put 'put ''fUdmNz9GU1FbcnNhWmdJZyV0Tn01JEN9ZThpMzolVzQxZExUbShIezI8JiRfazpCfCVidDIiNDQuRGEmSSo9XiVNIWVCInBUM3s3RSR1cGt6RTBRU3owcyR5Xjh4fCMxR3U4OygyL2VgIy93ODlvQGFua01RTlZQbnVIRFtyYShFXjpqZSs6KWFXcDptX08xc1d5RVt+dyJAfnZ1MHlQSHYmTVdL''@;'; put 'put ''Ljx2NEU+ZmouRjlYVEl3d3NZKmwsWTdbdVlIdm02UE5HM09QSCJOOkBuPjpYVCY3SzFSYXViUjZ8fURVNSU7Plled3NjUXJVJkIlLFRMNUdzdTtPQjVEO0lBSjomJDdGRmVhKDNoY152fW9ob11UNiU0T3ZsMSxtKGFsemApbj4zRGBZL0N5JV53P204Ym5HO31gQHVDTHRRWCZ4dDU5UEUwJmIz''@;'; put 'put ''ZC9wK2h7cXchSCQmN2deW2lDOksqXyI9bC9payw/L3VTXy52ZVNoI19dbllYSFYjWmJXVUpLRm59XU43UXRMcEZISClANEhwQDdiNWxgWik6PTh5LEY3Y1UlanFLPzRlZE9Da25GUiRrRyFgYWd6RH5kU2JHV3o4fW1lM1U8TGF0TlpCYmcwaWJZIldzKmR4blJ+cXs0Ln0zP0t7PHZ1QXlWa1I/''@;'; put 'put ''bVk2Q09PSkBATUdDMXNhdV1Pek1hMiVZeDQkR308dkcuRmMpe2Y+M0heRE8+XkUxek5vIXZUW2RkIVVrfD1GbGJiVmIuISRmWHB6MTRCXWBifEkiQFpDPV9wTjApd1VGSXNGNFJ5OT0+YXkoaS8pVFkzPihiMkkzPW11YT9DYG82M117fmt1OTdaS1o6OjtYUmlQVSFlcEhoKXpveGRWSCJuP1p+''@;'; put 'put ''dmBmYk8qZjBPZGw3aDxhRnR3dV9RWTombFlWV3REdD9GVntzekVaeEYhcV17JVtOQzxyanVIamlLMyloYyt1d05jLlc4Nj97ZE05TjRabGk8V19jRXwlMD51MUo4OExrX0JhWSxMWmV0VWRUW3xZNVdXOl5kTklodHp6KnRZYzsiL2o6KnIyLjE5aGt8UnpjQF0yQ10wR25uVis+RD1HPmcuaEZV''@;'; put 'put ''aCtGPWcvNTJmSXBJRTpCQTQqPF4vfHpoPF9wdz9GYUkwM1NmNm1HJEZWLjZVfDgpanwhSiNgMWB7VVcsYUB3cmgpMjVpW2szenk8Rj1qXy9eN1gwY2w4ND5bP3pkbTk9cHtdTl5sQmdPPnhUfF14ZVYwVkFue3UxQGBqezFhZFslTU1WNl1hM2NiT01RTDE8YUBsYTNwbFczaH1dKz5fM2QjQG4w''@;'; put 'put ''VE1ZZjN1ejNJOClQWiwwXVpedWdpaEtub2JQO0BfWWFddFNvKTRbcmY4c0slUWorN04vKnVna2VeU1IlfUlwIXUwWnNBQltVbiFgOG5pWFVJZTY/O3pwUGh5fDxPajVQVzJZOEtZQHlhVHxmWVA9elt7dVFVS3hSWn1uO1s7Rl9JN3goRUNIVDBfanc4KWxKVCxQdGNrS3Mvcnx2NngvckRDaUV5''@;'; put 'put ''V3NYRltlOVoxIkFpcGpmVjVMZFR6US42PGtVP21sOS4kSzk9VjErVismMkxNRHdfWkB2Y0k5JSV1SHciSXRAYDs8K3h9UnVCdW5iOUR0bkwvLlE8WGc/dV1ZX0pSciFwYnlUaXsiImIqTVM4WyxGJmZiMnB+e1YxXV9DRTB7Tn5wKi8qI1YhWUxvSiFZb11bVXdqSFh7VitSIT5rWm5LZUwkZjAm''@;'; put 'put ''SDRzRnlSeSsoekhmPD4lYWRxWzNRVVosTFtOa0tSWjwlLG5bJipqKUosPFJbNXModnI1Xypmc348Nm1zXktPOF5kPGZkdStQPV5DMilxXVplRjRlVXRgKVcmVGBGTSZCNVBgdFVlc2F8Y2RdWjhIRFZufSE/Mm04Q2FDWUJZWD4lXmJ1NiM4dl85XkQ9OlYlSmlTZHNZRC40LkcxKyFYVkNWTio7''@;'; put 'put ''c1A1TzRPPnduWyZaSCRWNUxsKSpQYltzQl9OU0VnQ15qfkwsKm5ISUBLWm5OXyRaWUAhT2FyYGFuUmMldWU6N0pRKHwuWktDMWtXKiEubH1JbUl5UTUrZ050fTVWaUZoK0Eia0F8dzNtd0pIfUpDKH12LFsoL05lIT4oJSlEV0IiSGxaazkhPj8kS1ArdXhJSnZ2LDtXcCFYbj8mdHMjbjp+Qmok''@;'; put 'put ''UFJGeEFCcS8iajEsaDUkPVtPdVJkYVReam14RDlZLGJLen4vTEZgWl5RVn1eVClzWkBVOyFZR3FUeUBNbTo0e0FDPDhLMH07eVRfaUJuMjg1ZzZKXThkQHojd01STzZKN31dTXZuRmgzTGgzIWZTcW9mI0paOXE/Zyt7Y2Z5MURtJjtOTW1fems1Kn1fITt4eXFzR0tSXT1BakdVbkJmOFsyZH0k''@;'; put 'put ''LiheZDZZVzY9RmVgM2IoZndjLk9jdHM4ayprMF5pTGkkKEp9Kn5uY2NaU24salIsIyloQWdJW3s/TyxdWlR6VEh4Nz9gKE4keHJ1RmMkWUsqcmtSfTkmaTBVbCxVNFUkOjc1azdhLiQqRn5QYVpCTnJxX0pESCQ+Tykkb1BnIUJFJkA7PCUjQkgxalgoWS8xe3dkWn5QY2t5e2tNJjYxUmtuUzku''@;'; put 'put ''WD1JYFRRSnhXfjZQfjF4LjpEdUl9JTdyckx1VCF5QEd5cE8vfk9VUjx9WiJ4fm9SQEVtKGgofm9zRClqNU81UF9xPzZLPn1MbmI2QG41SlY1PWwwPnVRRiIuYipden5oUGJ8Oihmb0hAcGI7eSZ4ZCJKKXR5XllxXSU0X3Q9O3QwdXxkfWkuMF9vUCtWTFR3Y0x8X1E0S3IsO1RdaUZSKnRVKkQ9''@;'; put 'put ''QE0kblhZYUR+OnMjL2pgImcvUE1mZmltfXpreF95JTh2aG9IWipiTGM2NnpMVT9eSFtwImkrcXM+LGpTeClTRjloM3tBNHIhcChpJjgoNko7TT1jYkMsTD8vclt8ZUk+RWFZKnpJXz1QQlU2IWkpZSFYJS8lPX1aRGd5Z0x4UGo5OGQpQDF2Xm1PRiQjSFBHa0opdnp4JlBAOGx1JWoxU3d7TlN4''@;'; put 'put ''bHxEMFJoTWpmYl16XkVLY2JdTlNjY2F3c3x9Y2pLMzpQSCxrWmB+fVI+K2JwSURTZ0Qvd3E0el1RJG02aHJjWF5FZjsqX1pXMndRUWMjQG0lbWcpNk0ieWhgJHk2Zm5XcD1MTGd9U25eQz59Y3BGVUJdMytXNyR6RCNJVEVseyY8UT0wfkY7SiRxSmhtWko7RjJeQ3Z+LFVMQVhgayt7cThNSnVa''@;'; put 'put ''fk9DLkloVC9fJSs5aU5gbikmfDdUdkB3MWhhWHU+VSYkWzdKOWVMQFZeLGpJRms2XkVTdlpBNXRNODp9dyZYPHVtdWdaVGs2RXl+QmQsOjcrRmklL2lmP3JiaWMpQm9MNXB6SUxMSFl2ImprYVN6UDJ2ZjNBMFlPQiV6S0xDYFZNWzsreXYyKi9HOWlOKWdUdzEvRE1obVdZQGJtPklWMEQsJVBk''@;'; put 'put ''ZT9maTlxcVE/RGtwVlkofUJASyRMZiQ+fjplIUs8NnVmWEtGVV4yTXhiejt0KVRYQX1hK2oyMj86QkgsbnQ9fEFfNHNTTUtnflNUJnxtO24saSYjbFg1JiVeYSM4Qn5adCRHUWZdbGhTP0owZ0kpMV5VIWhNXz89NF5DZjBAIWJnVlJtISNXOk87d2tFRVhgV34jaElgNzgzeT5VYl1BTDcmbyVp''@;'; put 'put ''KSlvJDZzO2M0cixxW1k5QDtOWEp+ZX1sbGs9bDk6ZVl3dXVMfl99QXY4QitdcSVnR04xL1Iwek9XeC9CTHQrKVcocUU/fncmbmthYiUkSSxXezRmcGdZK1p1cURSTkhdVGFGZ1YiMjVwcFBWfDBzSjBUTiZuWERRTShbQmhIN2ZnfT0rVl91WzVnZ0pAN1lRbnRSMFEjNzJvL14oamIiVXAwTFc+''@;'; put 'put ''MjgmaSkweTV2fGxFWU19dEA+JTtNMyhZNFM1KkwwSy48K3sva2MuZkN+QiwxZngpKGV9bSxaM1NtRSIrRHY+RSwwO243WCZ8fTdrL08xP2ZsLCRrMCU+N2xHUXtFUihqYjwuYWZBWiU9dzIoZnZPeFJDRXEiOTVAWG8kNWJUZ25nfkVpWFpafDl+fn1ffiQkfH0ifF5FTG8pWUdAOGk6YSkvMURx''@;'; put 'put ''Wm11VztEfG1HQ1VdVEQvODVXcVY0NXpaMWNMMWV1KC9JJHRZY0Q3Rk9Hb01dMDh7YSk7JVdJbD55SE02eXJIUz45WS5qcCwiNmYxd1A1aC88V1Y9ez5ld3FsKS9DITI3KCUwey57NUd3UmMme2c7NzYzQFRRImIscWYlKEM6LGBxJio5OU49Pmw9c1J2TVp9TGdYSlFQSnVWcTRncyVaV2ptfD1m''@;'; put 'put ''M25zZn5AM2tiPH59RSgpeyV5OUQsJTNXKyVlcG9KX1p1akloVCxXeGM/Rzk/WWl6QFhyMT5JbX1yVmd1fHBDNlZzN1VHdURWJUAyNW1yWHZyaThUXjR9QFRIb35sMC8mfnkpWSFzeTJ3WXpvLzAqU0EzSGpGLzUkMyVuPVBpbEhUJEZ8dmlPeD9bT2hCImxOUDBiYWs7O3skMUNNQ2M0L1tnc1cv''@;'; put 'put ''L3xjR0okO1ApMWcwak1NY1Q4MTpZLmZPVEJBW29RPiRIX3tOdF89a1t6eiROQEYyMyZpZUxEWit4MUJtTmcrNCspJVp3IT18fSNedyFIMmN7XTwhM0hHeUZkWSE6ZUkkS2FONmw1eipJPWxMeVQmTVt7dzwmbmR9L3E0PSxAT0JEMm5YVXcjPDh2OVFEZjRRYypQbkM+MWRhNjV0O0pTa29jSFNW''@;'; put 'put ''I0J7RWcjdD1La0FhU1lsdndNSjRRZ3F8OXhSU1U7a35HbEIlKiRBU0R5Y01FbndGPVg4MDZGVjp+eV1FSnplZ047UEJWSld4IlZhMXc1aCYvPU43W2Rga3tAazxLbFVWcH11UFk+OjchJCY/Kn0uYDhNSUswTyEvJTUuRzdaNTJrZWVDdn53OGcqdExYKGVjKihVfTAyQ3h6K3MxMiNaQDo/W0cz''@;'; put 'put ''WXI5czVIa3NoPWNBSkwsQTo2dz5EaE9ldUVCVF5NPXYxOE4yVHIkJSI4aXQ8XXphbEA9OCRiPD9qeDlwRyVbUmMvS3FrP19sTn5JOEQiSyVOcSRqNkV8R18lNUdOfkx2YWJmPUpvIzBicD9mUll0UjFdMl0lRHVDd2I4cVtTbnEmdCo6O2JZKXZERmQiSHUyJTNoVVQ6Zld6UFdsPldsPSE7RS5b''@;'; put 'put ''QyxVaDokZCNZL0QxUWdVJUZ1REdUQVYscjR2OWIyPW02NyI+cU9APWR1b3BjPlZRZWM3S1FmVU04Zz5aIkR2UWx0alp2eSRJWHd8Yks+R3g7UCY1K08vQkU0S317TVNxeDZtPm1KU25+KEo3Ozp9TFs+aCo/YlcsTG0yaiQ5JmJEJGM7Pk47b3RvKD48Q0MjQCI/T2pXQHRlUlZUUk4xJXAxIlYm''@;'; put 'put ''WU0kNzRNXykqPmwqRGBCQ3JbOzREP3hAKUJSOGl1X3Q3bDxTQkRDeWJ1S3IzKEdOcWlsOmxmIXchRzMoMXFNXX5KZnswPStLcyJ8USRRejlzLzt9fFg/XWZhSmB0ZSpDVk5OYkBBP242KHZ5aV0uR0t8P04oQV1xakFmNkl6NjRqa1FeZChNbjY4eXhqJW1kd0x8SUdPYjQrRCNzOjgjIUZbUnti''@;'; put 'put ''fSFMQFUqMT4/LHRpKkB9JEEwMXIsI0lEdTo2REJeelZgd0JqRigyb2BpaSpsKGtOL09qWlRfdDdSVnxMMykrKC89R2Y9IXNva08/OkY3bDM6d103JTVhSD9LYUEsZD5FWEo0NXAqKWp9UU0yRjtEVUY6ZWJTXi5DPF5AeFNJcDRUY1VfRn5RPmZwS2plP2BpU1pAU3FtYGZTejFpeDxkfmtqMlgh''@;'; put 'put ''PU51RThPPUV0eGZoPXdVcFMhP1U+OlJwM3VCa2FDcHtqUGIjIW8hISglczE1V0woZCQrNzV6TktYZDRRQn5mTClgfkY8X3xpcTw8MS9TOGouKXVGJD8lZ21FVk4lPGJSM256clFOW285USNnMypSK1tpeTA/OnlSWms+KDZ1L2M6SFk/OHY8Km1GJFJINzRPS25EfG4lY35tRVdPRGMqR3ZkPSxV''@;'; put 'put ''PDtfY01EYDpCTnRWQmF1M0BraGo0RzJhRTxSckUrSmpvIUZtKl8sZH0/YUZiNVEhWEp5IytjXUYsdE1gJU84ZTNpczZnT309KFlDYlE0KUV8UE5UNkdbXVZGO14mIj1HbH4oITQ0QjVfdnxxW3ZRPn4qS0w9Rm9FUTpAXVhKc2M8RyZdVmFkT0ZFVSs6MVMqUG87fnsmeWBgTGxYQUJwP1F3MjNa''@;'; put 'put ''SiYrNjRUc3ZkN0ljdzo9UzIrO2tpfFJZWS5iN04pfXordTpoI0lpKntvNG4hO116QG9Zek5PLy44MyVLJHVPTGldLyFSe0JzOld+Ujthb3h7OWFWR3lVS2klaHgvQkdKL0xRMkBvTkheRi5neFAsVSoubE9zdSVZO15Sd1UsLkVKJWtQTHlLYExKOGE/R0B6aG18dUg8cUAsZmAvelZvNTtUOG18''@;'; put 'put ''LzZbZz1rdlRxKGc1Inlwe1FHNiZ1VUZdVGJYcHZSWEkuYXgzUCspQjNVQ15Hd2ZsYyVZWGchZlZONztQZTFdYkZociJVSGVETm98PURHIltpeXw2YE9SPnR6bjg2NltHTCQ5JTMwJG9zSEIpbF5hQi5xfV9INURbPF5sJSZYUkBUX0wmKylgUy4sI2xZSzZCMSgibHJ6NDg8WFVmbytrJklodmA8''@;'; put 'put ''dylbMzBRfFM4QTlVa2YlJnspeWU7Ymg0ayZkeSRnbU01RnVbW0d+V141YD5kWHRMPmJEL1YjdUZTREhXdGlUQWp5W0YxYSNnSC9KOlZjR2FHUi9DeV8mSlcvfmMmbzhgUW9kVmpGIWNHJStGbTo2K2s5YWlsSU4kKilwYitxSzQ9QD1tUzM+Wm02cnF4aT9yTDB5PGFMU0J2KzBMaDVPQyV8QiFx''@;'; put 'put ''dCw0WW07Wm8wQyR3fFslfXVlKV1CLns9aiV5VW9UOCY0cnNfYXpHMHpvZkZxP1V9YCtDZkE2LyFgbj03RTszJmxeImJdXzY+fj1wU0JWX1RlWXZ8MWVxUVpkYWIzdk8saHpQNUR9T3JUWnFiPDNIPjFXVFdPa3twPCVyM046XSRZXSE2MEUuKUM5NiwrIV1LISNhdFZzMiNtSlEuKiNwcXU/Yzd4''@;'; put 'put ''V0lpVlFjJkB+enVANFhmTik2PC5ZJV1dMzg0fCYsM1A0SDp9NTYoTV5JJVttZGRJMytEUnYkRkkqaS88Sz5kaF1uOzwkdSlxNUI8fXFhS1kpYDBscnIkTjlvZHJlPnM/enQkdiUsTCVSNCwmQEs1OzshN19MWXRMIyJPVW4sTFB4Xl03QjFwbjt8Jj9CQERUIy5COzZKSl1SWyp3JDoxMFVxbGFy''@;'; put 'put ''PUlKLlhFImx6TXVVRDU4aH1YIWcpRC9iNkVaemgyNzZHVUx5SzxaLFEwO11SVGdIWyRSWlRMLjkzKmxiQzdSK0VkcHcoJjUweGNOPHxgfSs3WGEwYWRdYzxje2ZhNlUmYTo4WywjK3s9SmZXM3RQNjk3T1VFZmpDI2tdXkE3Nm9MYVE4NWozLmlqO2Z6WFREXXtKeFI+LltgamZLJW1XIXlPaSVh''@;'; put 'put ''JjkoI2RzLjEyXXdjPDNCfFNleVkyeU92U3FaSzpabEpvbnpDNGAiZldDdm16YFReMiJQS0lbSkZhNWdUV2l2SXdJX0FTJjs8VzlRQkgpTDJvQmhEdHNkfTc+Vyw7R2g6RmZ6bGR7fGBrKyQrRGFQRml9WG5oLGcsL0VDMys0SDw0KiNTe0BmcDpxR1QwfkpIWHc2ZGN2P3EzcTxVZCE8L1tyPEMv''@;'; put 'put ''KmtjWjNHUE1gNXFiXyR5WWVWdTZadCI2TWEjOmRtZXtsSzB8fFVxNmZQN3s5Yj9oNnEzaXckLyVWUUA6KVFIRDssYWVsQyVqeXtlUzRHX2tRaEdsditrcUxZOGVqNlhSRWFRYzwoVHZNfUFmXSl3T1p9dy54KW5rW29pRDl5P1ZFSWNpVCF+WGBfLmgwVGh2KnBCNlhjJVkpTEpTPEB3WiN2TFBY''@;'; put 'put ''RWJyRTtBRyticGg/OzozIUcwO0g2UGFhI2oiR055NUxRcCVYOUpGPTxRaSF6QXlSQShdLj10T3UrQiVaRSlLPGY0LFBjLkcwaTJYWSVdV3BzekRMaFJJP2JESFZ8PDF9PixSR1l4QjxwMTFDZEBXOWhnQDtuQyFYPz5kUip6RzxmUSZ4KVJHYGdLWXB4RTVCJWpCPiouKDZGYkhGJVhObEJrSkl3''@;'; put 'put ''dkFxcTJYWWt2Q1dFKkohJHxoVz5OW2FYbEk0PCt0ImNwOWV0UzlJLiFKPEtJXUYhcVlsb0F2fkprSCxUaixhb0QyNmY0OzdYaj93VDdGOChjSC9nMmVURDFaKCwicTVKVy5bPH11STZWYW5SRWV3R0omeTlzaG5uOmw/dHo+O1Z2T3xrTjQkNUIrPX11REVpMEhNX21WIkptVSN4aE9SI0dlMGJs''@;'; put 'put ''cWt8TCMkRlhyOFomR1k/cj1wa3xpOyNbZG5GSzNqNXFDLE5DOmRLLjxzPGRNa2B8bDc8KTl3LFAkSyhBMz9rP0AheER8MWVvUWR0RntPOjs4ZDlUQXpSfGwkUXk/Jnl9LEhseW5eU197TSxlTl1hYmBoOWpUeGlAVWUrdkdhYysqb1hvOnpaPXx2czFCeWs3JjckJnNLOEx9RD1dWil7YUFDJWg3''@;'; put 'put ''bF8hXnxoMH17ZH4hQC8mV35sZitee1gvczd2bixkZ0wwUT54STFfWnZDIXUlTXRMJGpaOmJDdX5paHR6cS54Ji52U0g0JClvVGkweUA0bnZ1eGxjfVdAUFEzc2leUylQcF9Rbjp6Pm4qNWAqTCNOOlIvN1pxcF1hX3R7aX1HSU9CITR5eUg1WE1eMTFsdjdrYE06OUp1M2ZoT35tZ0dDeEFrJElF''@;'; put 'put ''LlF2dGIxR2Mya2N6QjUkajR8WnVoNVZHWFt0UkRZem8iQ0pQVk1kLzpEWjJAWW9vPThjYkxDNmQhb1U2PyEoPV9ZVDVRWWpQZFNjWnNVcy5LJElvZzE/VHhOZ0BVcVEqVl8kKyR1fFR3dzFWbl40a24mOTZLPzFJVTgiSUM4I1t1YEV+JV5DSEwvS0YkdjtiQVp2SCl6O1oiQit7IlRPcStkOn4/''@;'; put 'put ''Yys8diYmWi4/Lz9aZyQ7bW8jI253e0V4bUA6fkBDVlBJKWgjSjovaUQjeiF4Z0VRNDY0JXcrTEJ3X2xFfTpmOG82XjEoYmN3Qj0kZGw4Qkg9O3E4az5jJEo8LiU4L30lcilMdjQ4WykvWEB0N31kUjVyN2t1dE98SG9+elomQEUpX15VcUtrdHE0aGZnZm1xTGx+c3l0fGBFNEx3XWJUR0EzYWFz''@;'; put 'put ''fCojbWU/aWtVNytBNUB8Qml+UXFLW2JqK0QsPE0/bnA2WW1GMkcsZCR1ZW1SbUc2RHVBWksjeE1tYiRBUWdiSVBRPT5fej0mWFdfcjZPbUZGRClLZFdeaToheVllYi47VUY8ODBoPmUrMHVLT2tqWWV2OjM9RXc7ZE8rQkpxbyxzMns7aF1IRT9LPl4kcy9aXToyYVRHdj48XzxadEpve3Naa15P''@;'; put 'put ''OWhJNmxmbXVucFZ3NipidUdDKiVRJW9wKjwhT15tSTc3UXU4VD1ESUgpPFBTai51bzcwKWhjZlFsJD9QVVIrZ2NXMFF2JjApN0BSOUtTInpIeylMcEMuKCN1QE06eFdaQjgvMi9QSFJ7eTxKSEpON3B9b0pSNjgpVl9TUG5pKz45N3VIfV1Ofld+VUQwKDJhSUBJdzZxY2pIb3JTRWopazk5LjBB''@;'; put 'put ''UjcoRGxIW0RzRGc6LiRGKkVvQlAsRGRGYUxgcDY2VnwwdTUlZCgqQFNgN255eCRWPFNXLHEybztgX3IiczVNZlZ2azg3NHMyNCIqKFMzWiNrVzIzc1BpZDR2RWV3PU9PX09NaHFQPDdWZGxZYSNMaWwqWj9iaHMyMCxJQ3JOeDRAfXh4Vn5VQXVqVnp3XSM/X2hxcTs7SmkubWhHOigsSixKI242''@;'; put 'put ''YmU6VyVTS043fk81eXU0OT1TMlA4Q1FAWihST0RIXzEmPn4xNFU/PFZ4KE8/YkJPUUI2T2M8dkdfb1hGZCFtKEJWN1ZVfG9TOVYuZChbUnRhJnZFKkJBIW1hYEMkRXRvTm84MSovSSwiL29LRzA4ZFArcWNfK3Q7R1V8WFtaN3U/VXJpQzEybXdYaWR4WmRdTStoYlRgb3AsKTE5Uzo+Z30hWiZJ''@;'; put 'put ''MEgzVSFVcU1bMHMhSEYxZVJeTDVmek9HNSlUTDBeOF0uKXRgcCt8bDBiQV5MbGVxZTNXRD17MDpEc252a1UsfSN4UmhzX3FwXWVoM1tZM2g/I3MqNXZ1OCZncjhUakRnPVhbbXhCNF55cThYPmMqR35nR3JfY05MdGJKXWx9Sm5OaWUuWV02NWBNOXAxU29sMitkQz1PYl1ZLk1GRX12cz0kO2F7''@;'; put 'put ''TjJtbkk6Un1zRi5nVkMlaVUkYGQ7QnlOWUg7XjpdNSp9YSNvR3ZRNTxxOl58R0B+eTpCWk5+NWE7dEVdVXR6clY/WjxoWytlczdYdWh8Kj1QfXgzZzo7aH1XVXVhQkU4ZHp1TjNsajooNWNzdUhzY1FxZG4qJS48bil5JXc+TzNuYWI6SFNYfllbflRXMS8/KCkkJmM9Mmd0YXt1JSs8WVowfk81''@;'; put 'put ''JkpTWihMcC48SD9jT1hhSWc9QnVXSi46dWpnU0xvdzhLRmkrPnR1TkZWXUIqeEFNKU9GQnFvLn4kZlNBKCM3PT58Nnl8VW5aRFY7bTlwMiF3eXI4QToqU21NQF1pJk5COVpkMkRJXUVhdlFHbV5FbHxNflsmfTxJYzlye0olW20jITBARiRLY2F1KnhnckpZazBXRDpYfVBvK3pBSyRSXiMxbis5''@;'; put 'put ''aXpTN1BXe0NDbnYyeSk2PV96TElaRl9mbzg+NjxqZFg6XztubXMlTmZzUkVQM3BNO1tlfVg/OE06QCEkakckbUEyeG0iSSo7I0ZCRT49UWxzN2B+WiFZbT9rMFdCRE89YCFWaUJ6RnRHcVtIS2NLK21gdGgyJVJhYnMhfkQxc0RsJjhDaSleSWI4e2A+WlcrVn1rfDA3M0cqPntzUHBEMUtvfGRH''@;'; put 'put ''aE5YK182WjlgLk8/S35rbip5NG86fjlAbC5La0xfbWtgVGQxTWhQKzRHMmRLRCpXUWN5djNbYHAyVH1IS2NGNWZmdC9GSF81OURFNU1tQjN3IlljIXB3LChVSWdBblZVamUzX3d8MG9eW3V4cltme0wlLH5GYld4TXxgPCkmO1FvLm9DV0BWbSZjcEdzOnZoe0dCPDtLYnFTPC5lPllEYytTSGhy''@;'; put 'put ''cVBqSmdMOyV4YnJrOXJhKSZ0KX5SUCpYRTpLZUgrTVcoWFZIT2Nka1tyO2BvWy4jcW53UVJ1QUQsbXc4XTtHOTk8ajcqOz55dzFuSjwhLH0zXiorR1NHdWIodW5qSUwmcjlXUWFjOW5QeXFYQSN0ZXBsYXtCQmhUWGN5UmsmLGN7aV9FdEo9XTshPkguMyFqJCNtJFd7RFFnLG1CVD9kc0lqbik1''@;'; put 'put ''TzNeKlYzWCkkdHl2Uzkueyp0bCFleXlVL1JIfU88cV53TVtbajk9ZVhnIz0/Oik+R0p0KnBKQmVnJHVOKHpbR0gxVjF+YGxHOFFbfVt+bWxWeTlnP1VibUQqRDNwfEV4JiprbHQhSSU+PjtoJHRpNUh1djwhUGNYSSY9MENQKEMkS299Vlp0RE5ZOk47fnpecmRrPG1ZeE9KRl5IbitnYjRwfmB1''@;'; put 'put ''eThxMXlQXyFQM35XQTFxTWBWKlAwOnRia3glPGNsMVt9R05vXXY+X2k9XXJLNVJMK3p8YDxVdFl5cE9KMzRtdSxeLixLOUNmQSlSXiRbUCl6KjNZdX5tajd2SVpTTjtbX3BwNTZgfDo1V0o3OEdoPShsNFozTEUvTU0ueCpROiJkYSQ0SiN0MUFkPT5KOEY5eXRiWD9aYTw7YW4hP1hSKixWfVo7''@;'; put 'put ''PzxDPm1PIzZVSzNCRH5XXSZ9USUuRkRVVk1II0x6dlRUNz8ickA0Ujc6YWd1eGQ3X3ksckp1MntZd0ZXfkNLT3xtZSs8dElyMD4lUzRfR15yMiVrcCVLfCFMXlVLcXxSYlJwMCZ7VlBteDYjWyUyYE1rbD02IjMxI1pMYChKIWdVSDE4e3hNckUubjd7SllTJlZxZl1lKFArQ15PMkE3IVVhIkRj''@;'; put 'put ''LiREK2RxRj9UY1V9IyFVcWwkajZ8bkh1U1Niciwrb0gkKjRPdDhwQz8+Mk0pPS5QXXRINjtmciE3KnV0bWA0cWFle3lvUmx1VGIibD1eQ0Y7V1Fucjk4WGE2SFUpQkhzc1B2TSEvYSFDI35wNlQxa3lvdEB+TkBUNk9pOXowRSkzRF1iR0t5Oj09U3JyfDg/NUAhXXk5QTAuMEomaEgjfHlnVkJW''@;'; put 'put ''OE0wQFE6WCYsRCYjKEddT2VsM0xnNUZCeCpgNlpCVDFbbyg4WX1nbVFCeW08fVRoZm9PRWZlUjFGUy5reilmTWEvL0g3eSFkQkJob1k+ZVpGfEslb0F7YGZqb0MjLn1jJUwuYlUvR1Q1RlQuZT1sL1tIMUojMn59Rzc1fltlWysiJmI7dTcxMF1PazhwVjAjey8pe057MWlZNFI4aCkvRSlZIXsi''@;'; put 'put ''L2NZM3NsZT1SUy5HbCNKbkxhOCZaOV5PLm47PmkmJFBKJkkxNF0qWyVGcnFCPiw9akA3YU5ATDlfUl5eZDwvY1o3KzVCaFh4Rys4UCNtZ0hvdjBPVkY8fFhHSjhKREEjRlAkJn5FO1pfPE1iZHAxdyovdzppcisxMEclTmVNYHM4VW5bYFE4alZ2Wm1Cc1BYfTRWT1I+InldcXhgK3k9PndEVX4/''@;'; put 'put ''TD1Vd187WVpTUDNfflpgZXdaRUN8aXJ9VXEmWTtKK3dkIVhJc3hFdE49bUNrNjxUZyt2d3NuKi4jRX46NnhxKmFfPV5NfC55PFZMNk47YTxnVkl9RngofmhAYihXdHtlKE4vZGZpMiRJRyxNKVpfUyEvKFo1SGlFXnkkczplbVF1TCM8KD9ZTyNxZSl8JitIU25TZFZnQkJMZyZfdmd5SXI+Z2ws''@;'; put 'put ''YH0vLE4oN0A9JCJfPTQhVVd7fSNtaGladmtUNV48Ly9PWE8pNyhzYSIlZTNCfD5mM3kpXyJmMHRubVM2SW1AOD9wTUhJcHhHcWgycGJzQ2lJcnV4ay5bUUFCRFFkMGlsL1BWOl5+LiF9TW9GeFpfJmRANTg/OyVKNU0oK04vX3Urbz5yfFhJS2E+VXUhS3txXyRCRH1JKWh+TEJ9bjYrMTNhNUde''@;'; put 'put ''OSVAL314Q3UjU3xzOT55PGxtP0o8QFpIZVFueD1oSFFtWlYhcktGMGw+cDdqXTtqPT04NlAqTUZCN15JOCwwUTw5STZTImo9XSsrV01hW3JhLCFRYixhKy9XVER5SWdGNEt5VWIpZ3U1YHBOPyF9IzlHcTZfP3YoOj4+dSFxZVA7R2toZyN4JVd8VkMlak8+YG0mcyk6OzxmMntQWDRVNzo+cV1n''@;'; put 'put ''Xj9vRCo8ZGtiK1V3VjdUNEdZOVluSSVYR1AwcDQ3cmAwdipYdHI+QjpVIl1ePzYmemdYUiY9MDl8cDVtRXxWNHEmT2NQbigyalNlJXJua0xrLGVAXSN0U3hrNWAlSHs0Y3NvR0lZd2wiX29mS2MsR0ZZKW9XYWVjcyRRKEZZbys4U3gkPXUuU2B1VlZfaj9NaElIcE8wdHdLLk5ZLilOTkFpSClC''@;'; put 'put ''fkorO1IrJmwje2dVPkpVWDB7e2FoO05XV0gxZDNVLiprdls/LEokV21PWGUjeGpmQmgwQ0ZVQllYIjA4YUYxX2EvbGwmOTNgIlc+eWleUWZkfVguZFc+PEk7cGU+MltDNFVkME1gSiNvekxua3hWV0BBcklhdmp7RE96UC9sbitYK1BHaHFaK10jbDtKRCY6WnJHImlyM1B5MzZTc056Q0FOc1Is''@;'; put 'put ''OnAmQGhPbGtCM0x7b3BhbjpydHEpVG40O35OaVYwYXhDUHgjQXs2VncyPDNJNktCIWlscHNQQWhFW0RDVyh4RUNGXzE8ME9NWXw1MSxHdXQ4UzJFTVl9TzpmRTRLKD5Wd3dDM1JJWz89RH1hYmoifWokdEcpNUU4PnxMIylCZD14TltvU0dNPWYkTiheYjx9QEpjakFqQmU0V2hLLzVoPW9yX0BR''@;'; put 'put ''eipqKWB8R1ElMEUqSVlEPCFSJkp6dU5CPWlxdUJnV2tDaS45VSpgM14sNV04emwmZVIrNHVkL3NVKGcjP09hYF99SXJQM2VWfWBlYVIrT1U5O1tKNl52b1lxbC9ZIkojVkdmUzZUKW5wdWlQRTUhNn5xbyR8e2Q7Zn4sT3w2NHwlOUY8clt+Xn1NcDYwc0wuUkFbdWRLajRxTF95b2srV35GRmE6''@;'; put 'put ''JVssJEVHNH03TWV1OmUsTnxVWzB0U0dNbTNqXipIKl53UCl0dHQ8Rm0yOzByfFpGYUkqWzBTQTpzR2N+ZSUuPHpnUlJANkRgbEs1KUE5Z1NlZ2ohekdbX2teQXw1MzBQSzFQVSluW2NlOCJJIy56R0t5U3kqVWhuUS48SDJxWWY1YDJsMW0+b3dUUFNYQ24vdGFqQ1l3N0spczMrJEtxN2daWFE2''@;'; put 'put ''QFA6byQ/W3dqMEpTfnsvUCRSSixTI01JMDRAIjdbalhddWF3a3s4Vj82bCxCb3Z8WyhbIlIiXz86Q0BrTXRMPjU4XnE6Sm01WWw+RyF7U3BtUFFnLnZ+d00xYGY9KVRXfX5nUlJZcSxYQTJafkQpd3N5LCRLK20sX1AsIWMyYCVWfGdHTDZwaD8pQFskdX5jOEo3QmZgaXpDYUJCcyUrLzpKY0Yk''@;'; put 'put ''Nnt5JTZpeTRYaztHPU9dW3t2M0pxL0UvfWVjKHo2bX5DPnRde1NkQWNKSW03eWNVdURhXkdgJG9TVFomVyJUVn5OKkZ+PWEkOm1ZcGZVNUciWTdvSlZuQmhxIkJHaFlkWFgwYio1VXxWRT9rNWNsX2JZKjtOcDRga1pTcFNIdm0hKURgUktVUHBZeHtRRX4iZH5OR1dmcmM3M2ZGc1t2VEAvZUJg''@;'; put 'put ''aldDYz01bFtlUFMxP1RRPkxyQG9RInBQNklMTmhmV0QjSGt9VjgqKkJJaXQmImImVDlGMnU9YjVudGcsKHlgSF9QPG1TandTZjRrJU5VZnteejttT2N8Knpoc1B7V093MUYvVzlaQk1SbT91dnk1bURDIzQ5LltaLilndipiTjg4Qz1MW11fLzN3UVtJVnBOYDFzYlRNcSFxen1jUmddK3p9PHk5''@;'; put 'put ''SnUuZDVDWlRqcjdBV01TM2Q0SEo5RDRjMzw3eWJ3T1shJX46WSF1cVp6bk9rMG94I0xKSU9Lb3dKR2RIdWE9a0kweGtdX0s9LExiSH1veyJSXX10WHVgPihOKDhgUCx9fTk2YyFXPFkmYjBaOk99O212VXFTdj9PWnN9VCFPMVZlUVYzLmRURnViTEBpV2ptYURYJn5MLnhWajFGRGE+SChMcVph''@;'; put 'put ''KDwuXUt2XzVYSXhvMG8kSFZbTCkmNX1IdCVOTD8laDJdR3VmYWFUW0ksSDdxVGlHZnNhVnBifTg3Sig3e1V7QG56c0YpSzw4WnM3XmM3Mm9JPVI/WzA9PT9rWGtPI2V8ZncqPStGZ2clfjQsKk19MFhBQGQ7Sz8wRjhZKixAcktraUw2bTdnSGApLCxENT4kJDQ0TWghUmJSKSsrPmUkby4wYFk/''@;'; put 'put ''ZFA1SFVyb0h7bWJrTHUqWV1KMEshc0wxdHg2KSl6L29eYzVqeEtqfGs+ZlZlTyRQUl9ZLCplTVRQOmAkP2xBXW87OGYyKSQ7VytfPmNnTDs2NUIwO3RsV3krJWZwTStNUUVEez8zYjgkZTgxPnxGdT8lKyRwKSR0TnR7KGJRLCZkPVcxXys6R1JkWE1MOHM6dFIzJm9QKWF6SEBAfmZeVDo5PXdV''@;'; put 'put ''PnRxakVkfT1hPVt4akF9S3VQUWAvWX1rcjZCcVhVNzYhUjBNaDFidlRRYjVBV1skSy5WOzN6UCJAUk9uRVc5TDVyTWM/RV94cmltKXY9dGpKJWt4cyNhdU1KPyRKX1tQVjg7KVlBKWxidm80PiJUeGUiciVGWUQqWX0jNFgidi87VjJxJlhva35+ajYuaWFbNihdQkhkLHhoMThIPzUkVmgvc2A5''@;'; put 'put ''eUVYSj9yZmVVKmZbWkpWMFo6e3FEdjVbWzhoQCtuVz5vaCxBaig/ZFdrUTtmY3N7ImlKMWwkRGhbY3ZZMCIkS3hpKnRiV3Q+ZmM+YFRrY3xEPTVLU3o1WjI8Pm1kUkp6ZXJBPWlTTFc/ZmshZklJNWVkWGtAKHJMQSRJeiR0OSY/OmViLEVXQXgmZWciRT9CeXVqQ3JYN3h6KW5vYzVTc3lQWyND''@;'; put 'put ''OC9wT21UUm84RztCd1BgK0VbfV1YLDpLNnoqfTJBc2o3VmR1PTFLNDxvcmhaRkROdVckIVk3TXRCVGNNUVBrS1FST18oSmJnQytjUStENz1bWTBAPSJhUS5NIU0zQUlhQCJxTSVKdHg9MXlCYzJgcUI8e0prd3g7NClvKjoybFcqXzRlR19bcClIa0NCS2FEeksqRH5uN3U1PkxeJDhrIixmb1Fs''@;'; put 'put ''MllpUGVrYzUramRKZTw4Sy5HWFg0eXJ4WHlHZz9zVjkyYFo0NiR8dnp1RTtLPy9lOmwqdztEM2xAWTpQKk5hWkxOUHdufDFCQEZdU0U0dFIwNzZ3KHpIOV06OmVhWUR1TjRJLG5ISSJ4XzEkXVV0VT42Qjw3ciY1aVt8ck41JjNFPFRiSXRjT3VUJmhzNXxySHFEVVZ9SEozdUBKeVs4bFV0VHQ3''@;'; put 'put ''bmYwcUAzTU1RTF8sKGNOdVBkYXVocU9HaDRwIXRJPWg2SipDbnt7M204O2JFJH0rUSNoczpBLzB1T0hjZzhKIkF0bnxmbjFMfjRKLEUudF5xL20yKUdZdmhzTVdXWmoqL0BWOCNNXzhMRmZraTBORDdxWmlWKGkya0ErT09sNHs2TW5UaX5+XkxvZXlPYFd7S3s3MChXPGdacjZkdyhEQj9nSCpw''@;'; put 'put ''P3Nndi5CdnR8ak5IMj10IVFXbndPdEZMc1d5RV0rLl99KDZ8MTdbdnNCIThjYXBHQGghISUpLDoudV5YLyFuYVs0ZyouKVZ9eTF0Q1kwQDVFUnYkcmFofCQ/TiNnOklEdSErc3wsZjx3fERWOVloPDJVMm5sZ1t4WygzMCZbdWpaYzBqYmprRTApamEwR1ZiSDlDR1BjIlVzRDZPeCo9bTNbJl9r''@;'; put 'put ''U1NBQzpvXl98dHkrXzZ7Nz8qflRTU1srSl92Iik6VXR4JT0uKX5DdkQzWnxIZlYkTz95OztWRF5OSiRfMnIvc0J4S3o6Pj1lR3xXZVtlSTxSV01ibkA+SnBSQDJaeExvdDJ1P1JmJjAjZV0wXiUucDV2a1FPO2dGcGJmODA8YVZiYE01M1NSdipkNlBhb050N1ZNfVpJXTkycWxENkt9NFRzSmI1''@;'; put 'put ''QDJmdk5HLD5dTk82LiNmIkRIWn1VIz91UjRfSlkrTWdYNmlZM01RPUUsK3IvYntbU0tVaXhGdEB1flVhYXRQOmYySSlXW1EoeTI7LH52c0l5YlNZc1YyZUt5aWt+a2N7N2pDK2Z8Inp8KlZrKjJkQi5jKC9OaGk4Y3c9e1V4fkY2Z1A8UnM2K0swek83aTgiQXJWWXxsR1szRGFLa1tjNGkvdTYj''@;'; put 'put ''ZUo2e11qfHwqV3xRSDUvfDliVCJfXiFYanZ4JiN6dXE3RH14aCw6NjZYJUJ5VEd4PiomYF4yTWY7Jjo4U0RKa3UoZmhGVmJ0dGQ+ekNmaSNLKDhxKzlLaD0+UUBINWozK2w7SWxrTjlfJWZ3NlYrM1skd2w+IVBZRzFMcFNJSV5VWEpFNlhNJTc9XUNbKGssI1Ipdjw1NDFJZWNIPE5ha3UvMTx3''@;'; put 'put ''bFdXaUlZezMxe3djd0RfaCZuMFV1JHgjfEUvJXE3JmpSOVFuS251Tm9NdTolT3k7WyxoWWR1Jig/U0l2TlV9QntSdEswITQjKSxyXkFMS1VuUFdEan0qRlolZmVnY1RubyNTOWBjUCZpKElRb0VeZHxXMnoka2xARGtYTjRuN3RpIlIlIlNBPjY/fiFiQDJoLzh9fEh6IWAjOnRYSkQ/czdFUlpF''@;'; put 'put ''KWtPfS89eFVuazBSZkBOLzdXYE8rZ2h9IUZ7PHdHI0AsfUZGWmh8TzprM1ZTaCVeQCNfI3EsPGQpXl18Mk9QI0QkLH5lV05sO1kjb2RbLl85ZyxVOV5udTdjY1c6TVNaVV9JSTJeQGlRfmJ6YjgjYz1FUzdlS3ErSFdTLHRZQy88TXgqNE5NPWBwdUkwalk+Q01iIX5FL3B5IzxaMGBnNXphQCxI''@;'; put 'put ''WDRoT0Y9LCF1NGc0fkVmLDx+WXxqRHFzZE02UnhdfFgmanFTPVtRKztLdDYhQko0Kn5JOyI8aHtgZSkqdn43K0Z0Kn1YOTxVSmFdPHA8Mmx0SENRb1A0bitnVHg6UzJhLlE3c2VfTUdeXmgjXW1dckNSJChsWHBNOX1IMkA8Izt6LkEjPS9UTz9MXjU6JGJ7MVJ5Jl9ESEQ7OTd+ZUYoSDx6QCk0''@;'; put 'put ''Kk9mL1BYPkA6XmF0MC5gLmIsXzFEcSlqQH1FXyNmcU5GcWtPQiZQOFhWWkVvVGE0fH0sajYqeDM2WGdLLDwpSl1PcngweDJsL3V3U09nOlI/fUxyWSlPXj5LYk5VOzpzUyxEOVFkd2Y5Lj8lRWQsNGxdJF9NTDV2TSxSaXUpOUFzTSYiK0JFXkhyeG1SUk8iPCM4I05IQmIqKztBOCQ3UmxJYyIz''@;'; put 'put ''K1s8UDEoUzVFWyVNKU0zekhzTWgxTFFUTnFWOixNdk5oNCk4ME1QdUpCRHVtWlVONERhNTltW0dqTTBWcyhjKSIqMVNfRXxSPGchQzJYWExjWkNjXzo6WmR5Wk90MT5yQnRaLCpbU30zfipJP01iL1k+T15SbmBRXWtMJDhVXih4Sk8/dHBtOHE3fH1hQVp3Ol4zblVuZi9ufUdRY1JZdyUoV30m''@;'; put 'put ''I1NucG9NQyFFeEw+VSJBPztyOlUhU21ARz48WDJkcTw8LiZMbm5KQj1NWlNEK3QxOy9+fUhHTDdUJn1tRHNOODBgSzpVTm1qIXZUazQ3TCNxRzRKYCVPVS9OOWpHSClCU0I6a28oZ3A0WGJFPmZEc0IuI3o/UDF5KCQzRiFCLEsubzxNZ1h0e0lYdGsjJmM4b0VSVCR5JjclRyhRK1piWXJieEAp''@;'; put 'put ''SEAkUWdWU0oqUyV6N3dBME9QV1hrY1ZUdnQ/dVg3eiEmZTR7PG9mdldCYERTRTxQPGddansheWRWfnBIKkZUWlpKSW1uJmQleVtxVkNaeDBMfEdVdkppKEFse3xDL2VsUSNiLHxvKXZuOXRHdHJTTU87Tjw8Qng8bllkWnB1S3F1SX5pT3Vab0BFMlNXaENtcjRDZkp3UnZsbG9UbC5oekAkPmZv''@;'; put 'put ''dHE6dHlGYUxIZCpWNnZkMy5he1hPSC9UUjopLHl3Yix2PD18TGMkI0RxU0pzfC5YeVdWYTF7NTBxXTpRV2o/KVc5KzE7SXxuRy5EQjpYJS5Ke0RoeipLX0RvPzhpWzQrUVFOWHN6dm01eXxTOHcpVjJZfDVJM0JPKj1BSCNAN08sOFM4VWc6U14oSzlyQT5gYCFEPGkya30rPDROKT5Zfmg/YT4u''@;'; put 'put ''LFA6MENYb3BxZ3BCRnd3c0EwR24hYUtAVUtjLGBORkZGcTtNMihYPGQ9NXRuSFBwZTFXWj4sQCNWTzhZTjZ7KnhkeFBkJk44dk42MUR5Qmx0Z1FWclIwT3ZNLD1UY2pkQ087bGpYd0RWNXI6cUBQczF5SiJFR3NpN1lYNVpYOCRaYzE/NVkra0NYQFVuI1hhbGhLeSQ1JlZTJWBDWi9fNEcjZjk4''@;'; put 'put ''QiZPdHp9a0MraiFRP0l8TlhCJW9TRz99ZW8sMjh6PiZ8SlFFKFc8KERZMl9FQCVHW1lAPVdtIkw6NTY5M1c6UWQqMitgPmtbWywiJXFxR0giWCxqTTJ1Z0EkXSxpJHRhJEghaSJZeDw6ImoyPktbdjpIaWArb29mMFl9WiN7bGFbcDhmIk9kc3o/UFs3NzhbTVh3RWxiTn03ZzBtTih1UjFXVHch''@;'; put 'put ''eVswI3FUZ31mNyspeSlKYG5rKHZSQipBLFcvTjJnOjd8XSw5NCpwXT1VSmB+OShEUUdvcmZHV0lNMkkqckwoMU91KE1ZOCNIQDZlKiJ2T3NzKmhNSUdETHlyY2VATWRofkB5bFNLZXRUdjNkRlt7VUVhR0wsfUYsdm5mXmN8RShnXUZ2KnNOSntqdkl8MDNfX0ZrbDluWWVbUipiTU93SDk6MjxN''@;'; put 'put ''eDhWTTxJPD9NOmNOUXJKdTlMd0M5cjhgLGlNS0dwKD1yOFhsWUhPSCxPTHFXL05NSkouJiEoSz1qfHcpUjNaNVdubEVTY19EbHJdP21dIXRTLkN6RihbWnRbZlllKyswVU02bGdHO2Q0ZnFtNSZ7S3MvdXpCWSRKVXFCeDRdN3UpWDZvcEAsaXxnXntDQU03ZjBCXTVLQj1kRkk6WVNbU1NpPzw1''@;'; put 'put ''V1g9SXwpKnpmMkZKIjZTZ2hwPz1qRi9QakY9b3Z+QmVkLyFyM35mJGNlbHFmPig/OWBzI3pUe2A6SCQlZl1+WkFPUE9oVFFlaENrYk9KOWUyWl03N0kyZn5SMUN2WVhUNlRabiwqelR2a3VaKTJoUE5JYWY3RiM1LDY2Zys6VjdCeWxuIWluO35ERlhTL0djRGAkdjQqcWBjakhnallsbSI5UkVF''@;'; put 'put ''RCFDfixYPkV8aDoqbGFeUVhPOnJlXT9rYls2fVkleio1cWpAc2JCXXxQOmg8VHdrMVQ8IU9QZihebUx8ZlBXVXVoW1JgcXZoSnw9I0wqdzZQXnUkJHpEVWEzVFZCNVlBUW9jMGVNWDxfJDtZSGtTT2VuVWZwNFRAWSRLLlY3ZzkkI3FIImUpOHAodTlVajhsKC48fm5ATUJzLjYkYkVjcSFodTF2''@;'; put 'put ''PWEqNURhK0peZl5bQGl5KiEpaHB4biU5b1M3ckdQc1syJiYwX0tWQDpGV2tRXiM4dFY9dTVzVyEqSDhjfHNYWVAkcllEOUBgMUVkQGc1RSp1QmlxV0pKV3d2M2MoS2NzOztQTUV3WHRdW3tpTTlgZj0wIml7OUlNSU9oMzwuRHojYEBFTEdbdyNQPk9ER1FpWGNHS21HVDNlSS88V3Y1MUlINik0''@;'; put 'put ''dSlCYHVGTlA9eGQuczlHTDdGQVlsMzMkLmtGQl41ZkZ5RC5CYSFPXV9xbDlSU0lAU3RWfTAzcEtmaHlrP340akomJCxPVj8/MT0+Wk4yPFVdaHltQnM7QUU7am03X1Npd0FgOkohTH5GIiZxb0svMkM7RjwvVG5rWU0kUm5QKHkzM1YhVXV0bHlBVShIWWgqSEQjUmMvMHdNIiZyJnBELi46LDV6''@;'; put 'put ''XT5VVW0lYCRCJU9iYDlyWFRbQWkxT0podlJpfGMyTj8keC9JNTZSImFtNDVDbFRyL2hDdEBBZTJoKERpXWhgbmxMUVRUXnV7K0NtTTMrWXdyRUs0TmEydHpqeWBtc3tlYDFoPUE6Zn5bVF5Bd0JLRVAsanM6VSUzOyMvNGR4XWArRk4xc24mcWQ8WHoqZkNbYTFAeW4oPmFAMmguIlkuIUc3JnJL''@;'; put 'put ''KGVGd1QucEQzXiplI1N+XUZ0W2svO3RieTdnMk1sT11fQ28/dHtvWnI1cDxANE58anNXNDp9fnVMa2dIKjU3VzYmVHQzPzhJZWd7Q2FkTn1zKXVqZ3RPNEE4VXpCWF0yMSRZIVprUmx9MGghT3ZNdjdxc3J+KUl5c11nKDQlIUdPKzl8aU5UM3ZlTDZyWVpHTyZteXB1fDo4WCo9Ny8xaiZVMm98''@;'; put 'put ''VWU7YCVMRGlHRERVWGNPdXYhd0JfTX1XVGFNMGs3eD5RUzZkX3BQR11vYUtzQDlNVStKeT1LdyVJeFBKXnsyb2FbbkcubVRgdVVOdjRmU2M+Knd4UmNCJF5eNHNNWC55XyVfMF5XWDJdZDgpOS4/JjRlamVJWWBwWWphdFtQdUZ2JSFYMDVWNXxhZmxqbDkjUE9ASig2IWV0Jk54Xy5xd3ssc0R7''@;'; put 'put ''LEY7NyxYI0RvKi5nUD91ckRSY2tibHFxcEMxei92KjszbEZhMkcoVWJSOWB8ZTE6YiksbGxOaGwmd2hLRlFEVXYkPT5hfWNDe0tvREFVQFl3RV8zQ0JPQzRVSnU8fmlSNHBJSjR0Q085VCZpLylQYi58WE9Ra1k7SWpmL0s6fl9lZywmIkp+dzhgKihUK0A5LE1DYiUwK1s8d0wqYD54Jl98Ozt+''@;'; put 'put ''OGxtXV9nYGp7RCs9fTsoWlQ6RHV7XlJvJXksc2JSJGhQdTNfL353QVBYcCtQNigrKDc8Z1BxPm1ZLi9Zajwxb2FHTCopOWVlUEQlS3xjZHlldk1xWUEmIkxuPEQlN0FgKFpEWk1wbSU9OFU4RyxiKDArfThfIXVjRDw6NWc3U3JnLC51QC94UXg7T3t2aD1DPnBVQH5MJlg0bTpwUGVWWEssc29H''@;'; put 'put ''VWQ7NWxwSkRscH56PT9wISx5W2d8aDRnSzJbNiQkNk9efXB+TVFwLDUmVXU7JHJQJVZRK1d1U1ZYZClLb0FMIzgmfGRiQz1nOCV9K2x6OCp1KkVyVjMseVAlMC5gYS9DdlVPYHJyZ00yfi9AUDpvU3xXZG00OG4sYERGcjBqNy84UiloRkJER3ZMYjVWKypJZzZXYFVsUF1UUF8jRXVNNFIwSHhH''@;'; put 'put ''RWFlWmljMlpqTkxWdEoxRztxck1GNVlhXmNaWSE1PWRBTzxSans/RSI8cGBbSW9yPGlTOHVOVHUyZ04uXy5XWiUwQCpkVkhldEwzOk97Sm5fUWIuTHw4OGViK0JBMSFjMi4mT1VuejNtY083WG5meWAsc0RAZSxkTn5PI144MCVuIktGd0B9QlV4X2UjZEVWZ1pIZFY3RXBKQmxIbmV6cUp6eVNX''@;'; put 'put ''dTtFZ3YuUlZxJlcqbnlCYVpTa0YjWiUrK1cvO2Vmalc3UC9gZVcwbXE1SG4rVVtyWTszZ3JkTzFVMzxJNkZ+Iih4P3gkJj5dNkpsODE3Lmg8TitIZSVdM2FlUVdzaiQ0ZnUyclIsYiZvNUVMU01gZHZGVSora0dAOjNAZ0p6YFBWOXx7ZFdNO2x7WDpaTGd8UCZhdDoqW1YiZTxMTDl5cytkX1k1''@;'; put 'put ''SFB5OWsvW1p0OWpYU3cmdENedEViMFRXLmtAYks7Q0QuIXdeKGhTTmYhTHx1YXN4X2NHSTB2OCZzYFptcXEvUSMjPjtyLzEoO0Z2QnRlS2FeQ1c7JkczXUdtekldUSRbSE9GcCs4dUpUcH4sTmI4cU56XTwqXkJvV3hfNy9lZUNXRHtJajNUR1s8X2F+SiRqS2hPNlUvT0tJcXJQcGZtM2g5Z0lZ''@;'; put 'put ''OjRtLCRBUy4hflA/Q3dmQyUvNUdrIUxZJjEsR1p+OWZYLldAZGNTNFZEKFg1O2I3VEVvaHtwfHFVVkYhSVF2OWUvUURNZ0Q2bykhRi8jZS9vbGx7V150ZXN7X11HQn1ZTyF5VG0pb21JPjhOZEpOZUtiNmE4K2pEWTlBZCk3bSN0e1dsRHAmKXAkR1p+amljdEFGYHJZQyVWamx6U0d6ODArWHVs''@;'; put 'put ''LFNoO2xbLjR7YjR1dndvW0ArZSs/Xi9nYlBaNC9sMVUjbUFiZExzNy83NzN4ZGc0P2BdRytyJjgiWWJUKSZlfD1jclBiTSYqLE8lKF4jPzg9OlNyTnxEKXIuN1pUJTRYTGl1PEJoZlc+bDhBV2w7UCRSN3s5X0w6Kl5lR2xUISxbPGl8VF9FfX0+L0ZzY3F3JE5JTytrXSorPEgzVHV+dmFARVI0''@;'; put 'put ''WDU8ZiFFVDB9KV5SfSNtYGc/VTJBPn1QJEB3SV1JfWs9SzhAd3VXP1gub0F7Im02Okc2VDNaP1h2X0xhW19jZCtSO1d9Z3lmVSFZRmF3a1g/Zy4pO2hjMUE0TGpHYjJdMC51aDRGKSxaeGNweHZveW9IXmZPLn03NGMpS2MoVSFDbndvKEwhX2pyVk1uSGtMTU8oT1t8Ykc5dTFhdVhHMEgzbjdw''@;'; put 'put ''X0d8UHg0KENtXkMjXyZoLjFfUmt3PH1iZHZqKlh6aWl5U1s0aW4kTVl5YVtxaCosPXhAdWUjZTBuZ2hCdlA6UyhXMFkrcWpnKn08U044ZU48dSZYdmxta3hNS1hDfmhZLjxOI2Y4cVdfKStLT2o8djooNCM8YSl6U3s6cUBpMEYzRUk8bjNzQEJiRmxCVmtvLFNKUWY9MH4rPC9XUnk6M29GUWxP''@;'; put 'put ''IUJoTVdQd2IkdkwrPypXaU8qcUlQK055OWdkTDMuWXNGbDgpayk/MVpdJk1LIkt+WUdlP0dNQV5HSDJNKEk7e0xwdDUjfHlFfT9WTEo/dWg5TCtfUTEuZDovPVlkU0lSfEw+LnhOKlZ4YFdWd3s1cFM3OFhEcEEwS1s/M08peT81I3wrVXpZWi86OlJhZ3hVbG8kYTFXZT43KXJ4V05jRzY6Syk3''@;'; put 'put ''cSEpdF5Fb0FqdFt8OHJJJFFUcWFBW198Nj4xSDBEVTlhS1Rad2d3dC5wOXRwKkRYOlQzQyIlbXtMeCFyKUhKVVZXen1eUEpHSF9iQjZQNDVJcHpZWWZJMHR7PkVybU0pOj5kfkwoPntCQkNPQTMyKX05O0QyfiwzTWdaYihNJkR7aGBFV250SGEzSHdIeldkfTFPTEpkSV05eD1LWVgqLi5fJmpr''@;'; put 'put ''IyptIXhOaSwoIVZ5QDJiTyVuQkpMbTUuOlgySVk7dmVmSC5PNDwhek95T3cyS2hbYVZDKm9vMU8xIU12L2krRDk8WzJ2dEIvTnJEaC9AUSQ7U196PFBKQG5UMTpXbFslUVtqP1paJSJdL3dVJik4dHh6MS5ge2MsKyNjbyRpOV4/T1N+VE90U1EySVkpdSUuSEoyIX0iM2w5ZTpWcko2MnFaaSNP''@;'; put 'put ''ZT97dTNYYypoYiJuJnphLmxjIyo8an4rNDV2QjhtS2xBKSIkU0F3dk4kIUApS0olXlgpL3s6S0t0UllXWXZQO34mQTtIOjZJK0lyLmNGanEpSmNTdl14UzUvNUhCYT5FeCxSRDVGR0dzMDgxPEpwfGJOdmZ7WUhLNT5edVldTCVeSVFASDMmfXdmP243dWBZSUAqIz03a1RiRyhsdSozSlpOXThQ''@;'; put 'put ''XTljIylELkYqNz9DM3xlal1AR24qPSRyZWw6PWZ1SWpTd154PGEyc1hffX1AVmZQJEduK2w8XjV1Yn5ieXFRR0JkeFJIbj0wQypfdW03TX5lQ2JRWCZNbnFYKWZ5W09CI09MYU9HSj1kY1E/bTlQMSIkOT0zQ3RWNDR0SnFoZSFiOEc7L1l1W2d+Vl48fXdxOnM/WUJ6ZnI9KklpTGBPaEM7MGpt''@;'; put 'put ''bU9QL2JmKlZ4VkthQWBwTHc4WmA9fXRNTiImOnMhfXkzX3MwOCN0L1h9T1ZveGovKyFmcCFSeWt6OXF1PT9qPzRzVHc6L0E8PHQuK2Ewe0hkNHU8c3AqfHpwXStyeEBoZ2w/dTcxXjF3QFtffHN3Lnl8MUlCRG8iKkJ9e2drNE4wYSI0Sk1UcCo/JVcmNU4zPiQpXls5XUk+XXFwdilZaT9RUltK''@;'; put 'put ''Lkc2cyhGeEhGNDEkQipvQUsvSmAhV09YMntlJk0yIWhgcXhwKGpebnUkYilnKnN3N1tFIjR6eTQhSTk7aDRIPkpfXlJTVzA/KXJOKDxZWVE5KV4oakJdRE57cCokZGt1UGFRc3cqQzE6c25YQk44QXZwa3FZUF8lNGZZNmxgOk1gNT5QSHg6T1pGP2o+cmV7KmhRKU0mLkdXOzBsNDFIRU1Acj1J''@;'; put 'put ''cW98Y0BAe044TmVlQUpxbC9GNSlHPDM/cy5hJmdEak9HaGc/SThJSnUvVk96V2JRTlBlQSMma0IqSis8ez51ZixpbGU0JiJ5LEl5dVsvKFk5dXxvOiVTeV56Lz1BOi9uJGtzUk4xfWhINyY7XVQufl1CVVJYWEY+aTZkOSVjbWp3YiM9dm59Six9bz80VSV9ND93R0BNRzhVO3tRVzx7Xz9lMi46''@;'; put 'put ''MW5PZExSPHdhRCoiX1ssaiFFOlZYQXtwXzRoMjt2fjNufnVmRXpEZkJKKHE4REMreHdUMk94bCwzOVtAbUJ8W1VzJmJMbUdmZnJZR05dRV97aC4ydSh4RG9ESV9GTT1QWTpSWDg5TXh5PnxEM0dEcCZmIWlPTDVraHJLImxVVjpKISh2fCZsUipPL1ppQnkwZjU+MDwraW1lSUs+JXYmMygqVDJr''@;'; put 'put ''UkovUWpyLiEvVDB4S0cqXjo1ODg2aDFwTFM+U1UwYDxjaVFqTUN6R0UjZSQjMzZ7Ll1vZm1eX25GeEdsdlZrNXspXkhVOls7IzF8M194VTIuRlltXk8zNGpQb1tUTH1yUjxHOmpDK2RlYCU0RHFAal9EaiVYZC5weXJIb3c3RkQpU15RTHtBQnEmKkhIWDgzO3VARyg9OD9TdX5pYksrfF5xSTQ3''@;'; put 'put ''TnkvbF9zbnZNQk9MdyxvS1FILGMwJm5ubnE8LnFxbUlRaE1ua35JM19DflEiUX4lbiFIWUB8dXU2bTEoSkg3REM/I098Jm4kQnVkUyxncWdlWSZ+QXtqaVheZE1PYyE8aV5jWmtSZzpuaTFHKnBFRHBTIWxgRndPYz1fb2skfWFzKmssNy5we29VQzltMSl4QUtCLmMib3hmeElaTlBVUlg5cS4w''@;'; put 'put ''TnwhNWBLI1FFUDt7a1F1XSx9WnNlI3VWR09TU01GZ0ooT3g+YEk3R0c6eGJIZCxsQ3BvJXRxayxbTEx7UyF6MUpZWy4vaFZnIldYa2I1Oi9XUy55Nm8vKiJhSEJkMFs3fComJUBXUFdAW0xjYlZPdlBXPzM9amt5V2EzSTApMkBWbllfLHp1aWg8V3tzXSYpQlFEPGZqRVlNLzd1Ok1AeGguTEte''@;'; put 'put ''W08xPytwfF8sYj91OyMvXjlSMHt9UDtSKEpwK1ouOCVIeFBnaWl9ImklSUxpXiRYIT43STQqQjZEI1JvbldQW1ByPSNrK2hpUDosPVpLX1ZUeURzLztUZk12Nk9JUFtyOyx4S1tTZFJMdG9nJFFFezFPN2QlbHkkTDlIKDtAT0l4XSRONnMqOTcsbV5zRnlWUDYqI3BfTXVIcHdLQXRlNEAwQE9A''@;'; put 'put ''QHpbM1BQeER5K1IrfG58L25ZODg1YEcpO0UoRERyfSV3Y0RmTEs+IUwwIjB5OjVkd09tMC9iQz54VyYjSmQ5OXszO1IreDZAaDxSVVkmdFZ5U0J5aUlXKmVsYH5ia1JMY2Bed0wqP1ZpS1BKdEQsdnxCYl9JUnNFKkAwdTU6WEUhMDV9VkM7K1Z9SEZ6TUZ6aTUudlZvKFUqUn5WOj1VRGR1R3Q/''@;'; put 'put ''JSIlUU5vdVBFdjpkRGdXaUlyNkpqP2Fpa15SSX1+ZVpmYlJgQXFsW2BobVpKM2hmLl54PS8mYjckQXV5bjtieCsxUHZHRVVvPGd4ZHZ2dF1PS00vbUM6SHc/ZG16UilnRVF3aV5zIX1RQGoiIUw4V0xDYF9PS2JTQzdWRGtEWjM+PW1SRzY1Yn15NjNARlliSj8xbXU0VkVWYy48aWhTaiZOfnws''@;'; put 'put ''blouLmNHKCVlTUUpXWx+PmZANWg5O0NsfmZRaSFJWU1dQDZ3X11NbE1yZ3BrSnMoJFZOdkJnWytPbVYpJiRQVzk5UWE0c3dOUCI5cU8mZkxVam9wZnpkLklKQWN6KWk9RmYpJmYoL2tMV2RzajZxd2khc2BrfjNePzkzd2gqYzpDI3VNPkZZUExHMVpyZHhHSDUibzxgTk8vcXdlKiJQPUw0MVtL''@;'; put 'put ''KHs9c3NsZztDaipRXTUjQjN2OTQ3LGhHJDApUkRSNVJFM0t0Q2paMjVGcV1PKmwqS1dNR2gmbzpBKSZycCZQV01CcCtlYnw5WmBLeVFlW2lzdUYhUkRWNX11NUVDLyZTMkBgJG9hY3MsKndvQ2hLb2I7LGhFTl9xcGJpaUp8W3p4c0RWZD4/JS96NXMpKDJOOmw5VVlSKiN6MFRqQShaelo8Y0Fj''@;'; put 'put ''NjppOiUxIiVxN3ljKyxXMFJhMjZHLF9ob2k4bSVsflFyaj0yU24qWVh4cytvXnQqUHFZZ2UubUt+dmFTalJ3NHsqOkt9LjxWSzdzc0RqOFZ6a2J0ZlhHZW0qRGFgU1J7P2RPZG58K1VETmE7Jl9oOi5we1lwUUdobykma0lFUkI3WkxoeCk0NF8wTD5AeSkrWlVvLnVnLjROJHw3al0iR0x0cz1u''@;'; put 'put ''UXVjTTNZYkp6JHpjZStJXURbYm9DW3JdbyFAbnk1NXc+JEk4eC9mVWw1I1c6JG9EUllwZGY8MnlhOTJ1Ky5vQDpiXmA1fEtmTCY+Zlk0UCVlMEFwYlJSSElHKUlCOmNFM2JdQ2t7UGkjQDlIWmhrU0ZNbSF2NnpyeVk6Qk59Ri5iPzZlVjZHNTtGKjN5fFFiK0N5bnlxeGxobjh5R2N7dUZSYyJk''@;'; put 'put ''PHlyb1k7a0IlK2tDI3dSV1EsIlszW0s4dzRZTVN3QmFDO0dXKChTKCJ7VVR1T3Y9VyswVUo9PVQxdFgxWD1mSUdoJjc/ZFc8PjFmZTZLbihAdiNNKFlIJSNzY2ExfD9XRSJXe3FAbSRtPVtSPW5pZ1VIPzI5c29PJDF1c2hteVFaSmZJRHNOd2BZVjpQW2YyTks2NEdOel9fZktDIlNKUm4jLiEx''@;'; put 'put ''fHFXcEokLG5CVm9zb0NQdGFTPiolbW5NOH5GaHtWbGBGNUx7dmRqSiZ7TlV2Smpuej48fE00NDdeIktKRj1Yb1ssfC41SzdTcUkpOFpRU29hd0ViNShrbUY2SyEhVn1DZ3x7XzlDOF1pRHNeaFJsMVhpPkU1UkErJG5NdCM5JD9sN2ZkY2Vha1l3Q09aeCl9dXIqL01DcjhjPGI7ciFFRk0jLD9h''@;'; put 'put ''UCpUbls3Wj5ibyo5fUdja1peZ0YuUkhNMVY3ZXwqJjBjdDNxfFFjbkUlPHYqOWo8SHJGKE1RV1o0dDJXcldlL2dKcH4ySER0VTpHZUIxU3BydmdHVTVfeiZOaF5AYjg2L3ptMFthQy4sfk5NP091bjJ0XypwN3kqfSFpVWhVMXgqakYjOmBldilRbk9IPU1TVF5eeUVzOyRrOD1nYnY5SToqWmZ+''@;'; put 'put ''MGkiaXNSaDArdlFEfU5mNjY5XjtUNigoXlJTVio+W2NdYlgvSTchUCxTSDp2bV9QQ19SIUtmXkBMfUlfUEw2cV9SMVpyZ0UiW0xoSHd4Ki5XZihRY0loPl9dQnEle0ljVVloZll4Y0ZreEpANW5oPFdGWnsqXk1GeTRoXkdXPDxsNE0iX05CfFtZNk9CfT5fPTBNKWZmQGgrPFRRODlxYzhxdF1z''@;'; put 'put ''TzEpSDlWLll2XjhtVEk2QE9xa1B2JWF4Qyl0cFBnWGVQcU4uW3FrZDVVcEs0YiNxeVVObV9QX0xZdFtSRE08a3A3dD0uZTc1cSR4YUMoLmJzOGVFaUUySEVgez5SfWtYQ00ySiJDKSVgVTI0e2VOXkkidHomOEQrPmk2b1ljcVhiZysmJUp6Tz1kdzgqLzJSdF58MTB4fVdINW4+e0Y9aEFjVHhw''@;'; put 'put ''aF5RYV91LDg/SyV7Uz45c2s6Qj9XPSt5RFNjOHNtMlIkSXpKJE87YVsoOUs1RGVlaFFFWCVVVVlONDIvLlZYTGJWQW4pbk5KOFNxfWF6SyhkM0hvWk81cHtrOks2MmF+em83Q1MlNkhbOjxwfklualB9QFRIJF1BWj9LKTt6cltJclpHbGt+P2FmITJTKkZaM3dJfGZ+PzRnbTEjREsxLnchPSUh''@;'; put 'put ''NVNZWGw6Xm5lTXM9ekZkWWtJSElDOG1DeSU0InNCLCRzUVlZLygkZjVldVdmYyhOeWViLCJ4PGk3TiY0KVppM2E4TURGWk9hd05MLjgwVHpnZ0xTPlJGZVQqWElyYjd3QVdgVX5HfkJ4K3sjej1gLk12ODcxPGV2T010eFZSblh6Wnk9XXN2US9dLj9PZCpVJnNOSTt+NyReIyZpZl5AQzRGSDoi''@;'; put 'put ''YD1IdSkuImZbYHcjUU9SQmpvK1ltfm5lZ3lNNGohYV98Xi57I3oqKGl6NH5RdCFTInZ1VE5MZSR2eFY+djJuRSUlcHFFRzk5bXE9LDs0YjEmKmUyfGNOVWYwMjQ3NVc/KzFqdD5dekU5VzE4ekt8c0hePnFmRixHU3N5W2NsPTdycGt8UExQdVAwOl4kYHc3JlRoQGFWa1o/a0A7c2o6KSNka01K''@;'; put 'put ''fTBQVTJ1aFo2KCwuXix8Zn1ZRWFSbShfYnBjaEdEbTBLPzUyRzlZRSxpanR7TWdPYmtqU1JeKHhEYDVEdD9kRGswNnlZUSQ0U34uOGhOW1Y4OTg3czpzVzJLUytXa3tUNSRzZHVdN2piM3hHLHxbQzEvXUJCfF5OSXpFN3ptfUREaVRLampAZiFrYnBZWHRdVTYxP1JIPGRXQk5HTDFGXWA2PF5n''@;'; put 'put ''Ql1fZmgjKn4uIyVgcW5wUWd9MGQlQmhHWV1nNFIhOyZ1YUJXYjA9MEciQC8jS1pJKy9efj07TkxbKFIqLlIoTntqfjwjNCo3ITBwTUAkbVAvc31DKU8lW0YsKjs3KVd4Iy80InlGTS9tdHVLMGk1XUF9O3w4YSk9VDV8KmVDdD9jQWkhaSY4XjBKMnhIQEE4Zj4vbjdZSHAxckwuJjlwakM1MjUq''@;'; put 'put ''d0clYndJdUpxJixKO25eZDd7dy8iXlVYRHhbJGgkLzlNWV5TWWVbVFt3czxDKm9ON2tRQkR5PCxgOCpoRDZxWXxiaFl4b0FLIj5tVnBDP2NJRCZrNiI/WVV3LysxNjF6alZXemQqQ1omRHk0V35JSjlSeXl6YXAkNFtRc3o9Vmo1a1gxfDA6MjB0cEA4UkZ0UXI0K3pjXmxVRGJmPnU0fWl2UkB9''@;'; put 'put ''UzQuOG1KNENgaW1pTTw+YyFnZjRlbWVLVkMhXUN0YV5DfUI1IiFRJW44YFkpYDNzfk1GM2RCTz1ATi9CVDdgIT01OiRYMihvY0NtL0hOVz96OmVbZCFlSGBOX3J3V15IekZKL2pMe3dJPkhDR25JSkMsanA6TE4iPTc+bVVPNC5lOkMyIX1zeDxPIWRyKzxUSDhMbSFDUnQ9Rlt0QmFCUWxoVFUl''@;'; put 'put ''fV4saiY7KHl0WzAuMiokKHY3Yzxhd3hodkJEcDJLaGddSilafUs2dSsxZ3tFZCVMRldpP0xUQHtQVz9gb0xaSm9Vei80O1B+YSRXWnpiXkZCaX1lNk1CZERiWkU7WkV+Ii5eTSRGVjBNcV93dz03VFFERlolTiZiIkYuJmIhIk9semFBMzhVXXJvWFZrWHhzSTlORWppKjlpL01QMCReWV53TypG''@;'; put 'put ''XSw1UGsjPVNmQmgxLmR+OkM0W19HbzI5QXFXQTZsXlFfdS9zcTBnXiNQYXIodH5AaHZQZ2Q+NUkyfSI6MVVfQE9ZZzprKnJwQkRhU2RgdnEjdmZhKitXcTosb09kTEdQQy9kP0Q9KCV9LHtILHRrLG1HZDlwdWRtUWN6RTg9I3dIeVFvdCssMlVmLnF1KU4vPFpXWH18TX40XlhbQiRhaCs8VmB7''@;'; put 'put ''cUU+PSF8YyVTfHdRI19ubEEkK0R1OnN1Wy5uQW93OG0hR31GKkRpb2U+X3gzYTl+KWgxN3ZuQkVdMjRsQCFzcCVbSC81XXdFeiN7bTtdKk42OHM1T3tgfX5xQzxbPzEuPGxae0VFNCpMV2lHdEJKe3R6VXw7MDJqLDwlZDo0WkNGTlt2IXYrV3BjVXRuQ080LHpoQ3U1SDhgSjBESyVFTkhFSy9Y''@;'; put 'put ''dEZla0xqNXFlNVNsbj1Nb1JCaDpMdnpCbnMuQUtOcnNQWVpuK04wS3c3VnlhSz1SdWNmdTojKU4qLz1ReFVXe2omIS9vVn09NkclLG87aF5xdDVJfGE5PzgsLGVuKEc7ZD1qYkl7YzJ8TW1tKm9GZF5HQTs8Zm8sNSI6NyEiVzNNZ09MWjZTVyxRKVJ6b11NKCxsYmZQTllwYTtXcTlPLCokfVRu''@;'; put 'put ''WSUwWFAjS0d3WjRaPVBTaX1jQTY0WHNjaVUrV0w0NGV8aHkvKS5BRHYyYHxyVCYoaHopaFlSRyFESHsuL2pzZjgrQH17WEkyNW17MCtlPCRmPURjQShUcSZ3JVdUTDd8T2daa0ElVXRaT1FAPDcld2V9RUIlMmMuclIvOC81TXJndiRlXy5+Z2AxYmB1XUhgdnlETi5JUF5NWHAwNXghZjNyL3cv''@;'; put 'put ''TDVeWlBsRGNzXz5hPFV5Wjo/K11MdXl+Q190YFMvU0J3Y3U7aWU2VUxESCp6YiEmM04wczAidT9RRFsyaz83MiU5KUZ2MTZrNk9sRSJhamZefTJkQmckV1tKSWs/Pk0/cm9EPFA9WmNVVnswU2dWXXwkZXxseXdkOmtQYndxO1dHeSxTZn0zbmkmejdBX2p0SWczKFY1KE1jM21wLF10Yj5SLHZm''@;'; put 'put ''VyFIeDJvPzZ7Vip+WExRd05LNDQsJXR5WU1FSyQvdThvYEAxIikyMFJQekBEeEY1cC8meSgscjs3MH5efiZfRzQ+ak9UMElwSW9pdjYoUkx1OHlvK0EhWmZlaGNOKi8lPXFMNnRpT3ljUz1aUSomQiUzbj91e054UCRTX1diI3VhPlZQZE5DNWsxRzJld0Y4a0B4YUZGKHJRI1dTVW1XT15VSV53''@;'; put 'put ''WkBwVSw3ZnxuNks1UWxYZCYkSVpVVlNhMHdldzQsYUxJfStUS3l4RVtXaHdEY21NeCs/UEI7JGQkUkVQLzZoaU9Qe0ZvMT5SSDhIOXVBTCg9ekxFd1NlPXJ5c1FLSWJmeWc/YFJ5TXNXXyR8fC5BOnFAMHJ3bmY8YzUxWG1HNCw0cytoakNyezIuXkNFYm9lTERbIy4waml8emwhUlYjdnpJR2Vw''@;'; put 'put ''YFljPXhuNkR1VCZPfSphKklMXU0+JEh2eSs6RXQrdWFlYzlkX3F9P0RNOVBPK3BdSUNOJThINUIxQTR6N0A2IWJYK0JDV0VIRXJSVmE+UFJye3MhV2I/ZHRuZH1qVEE2OGJAZ1JjIXpbPkZYcTxBSUxdXnMrPD46c0h2eEBkWTheZlo8Rkx9PDZSU2JGcHVeYV0sc3ZgYTt3XUhLakRdK1QoQTkw''@;'; put 'put ''ckVnbDNKantQbXRkUChEJHloK2NZeW9qU00oYE1bVl1dTVJMYXxNTT5yS3Q4bjZye3RCODhEallbcCt3U3tbIi5wI0hrOzQqRmA+aXk6a1JMQzNEbTB1TiU5Wko5eGg3KD88MEJaK0l9NnNBPXloTCUhemhYTCpyWzIuQUkuUSJzS1owa3pfYFtINXJ+LyFsRDY9MWg7YGMmSkxvSyl0TCo1UWZM''@;'; put 'put ''Tl0vayY9fXo6c1FvN3Uubz1NLypZe0hRQUcvZHExTUorQk59c0VeRVpgaDk0SGt4NFdJbk5ob11pMEJ3OWQxeFF4OHc2aDhRW3c3M2kxQ3phcSgxUWdWSHZtPjNIa3BjdyQ8dyJMXTxrX35vNTFXY0g5Ymg7MlBETUBbSHdteH4yJShZTF8hMXBfIih5OH5kfkQmTn4zMyR8a2l8NVk7LD5hPT1s''@;'; put 'put ''LjNYdTNXWi4wP2RRSkkkOFcvPWl6WmxxTi8vTHYwMVRYc0R7NWpCd1FHbyhERHUwcX5ENHtmPztwSFs1ZmYpOmZyRXd0R2Z6UFM3ZDlXPnx8PC8qU35NI1F4NGJNPjZhQWpkZ3hRJHgrMENHQ356X2RbLnkwJVkkd0tnYjhRJWxNW1dnKVg/LC9rYmoyWURfOjUjKmpYc09zO2xQOT9fVC5iQihk''@;'; put 'put ''d3NPKE1SKVdkTjp7OylnTik2QmZ5Wm5WbywmN0drSDdHTkdmI3BFUVVWOT5TSTZNaFc6WUNRYDZte2NmVyppaVRbb0tKNDRtSV56ajdFO3pGL3RRN00wKnZvT2R1NVd2d3h6emxpeHoqaF9pNSleKjsobVpzTmdsazhwaEovX359anREXVgyMDFXO0U5dWxENWojW3F8Sm4kMTBzfX41Wko8WCt2''@;'; put 'put ''PTwyNyUxemZIaV8ufmU5ZCNCXnFHQzJ1V3AsNHwkRSM3XSJUQyxUIUM6aFNvOnFJMFFqZ3hIeSxJfH5RSXtGRCxeIVpvNT5MUzRjNUg+N1hjfSp8NENQRmB9LGhIfVNaU3J9eXE0IXdzQWBiPU1fQS92dDJmXk9ZcExjLFhFJnskaDksd2VbK1pXVS9KTW8hWGo0PDB0cj5pVXpuZH49Ly9FWiZ5''@;'; put 'put ''RGpSKWQyfSE/aE1pW2opbm1GeDhMYVcxXlVzNTBRWVJneiFoLDIvejhyflBFdUBmIy5iRkFPX2BDQmhANFRyKGc2Zjl3Zz9NWy5BJH1ZOilENyhvbDh6WkUsVVN3UHk6Vj0zT208JCMlOWc8cTI5bnpVXUNSNmB8cHgoUmdrJVU3THREI0krOGhmSWByZG9sJStRRzBoP25hUVleaV9UVz94fmxR''@;'; put 'put ''X2VULGo6LyxwUUN4bGBXWiE7MzN1LGV9I1AoSlI0R3RsbzM/cz9RRnh5ZyJ4VW89Z1MjWT0zZGE4MV5tS1V0Vit6NVtiUDBILlhLQndtKShpfFd+WHA4OGxTVSR7QTUqPExQIXdZNTFiMEJpRVJLfHglSD9NU0NWYyFrcFJXN2diYnhQeCZNYWBpeG11ek0/bEteKCJjRzllKnZ7bjdmO2N6e0tE''@;'; put 'put ''L2d9U0tOOChVOlN5Mmp6UE40Tk5hZ3I+NUkoZ21iT3c4Y2JYbV5VUzI7I15xdUsvYDQ2JlchbXpPbDJCXW0pZlkvUC94WjppKkU9KF18RXV4dDB8ODxbVVVib2I0e0Z5c2lQQ0FKdmpvZTZ4Xnxvb3NuV3tLNih4NGVMbFEoJmcsa3RVKU9aamgpRFppemJFbDZbKCZ+ciF8cUpPO2AqbX0wcGYs''@;'; put 'put ''KUtpNEt2TEM/Iyt+PGB0UEZGVyw0T1toaHFVQjYiPW99fUEveX1EejBOeWpXLExDSnhxS2w9akxeRThwc0FjOmloXXdqUnpXYW9ZUzAzemV4IyVZYCtRbShiYXBpRVJWQ3M1R0tNPzhgSlBPc2xTOXhldD12VD5QMDs+VzpzYz1MbEg0O0g9KlM9MmZaeSo1YWBRYCx0VU1rY0lgZElVWkRGNSFg''@;'; put 'put ''SFtQcDspIXJ3b0NqOVF8WEN0S1lLXlFIVVtFZFV0aWQoTng0PTsiUjxMTTBCSyN+ZXNQbWpNcXwyST9MOVdwMERtOEg8LE53UClPRmo6ZWohcFFVaXZIKVRWb3x4fTFMdE9tITg3KixvYTU1Iz08PHQ3UD1wS1pjLmtZVy41fEZnUGp5KTFGbzVjKVtIPlZJUi9ZclQ3d2M/aXkjaFFLcndWO3Rd''@;'; put 'put ''aWptQmdxME08PFBoMVFgUXZwdUlXfCZ9RyVJS0VrRDZvJEZTVE9kb3NMYzdVNTIkfjVkdmU2TWpST1lHUndldyFFYHUoWCxBP3RkblNdWVYlU3dVPGVNNCJzd3tiMGxkOjs0N1JGLHo0Jn1+blZZWVUkMFhNaFVJZXJPWFhjNnRuUFNeVU4qfCJDZ2JkTGBJMHsjIj5lR2RLUjlQTEYoLnZuKX5F''@;'; put 'put ''YDFhRyJtYWEoUWVGezlzaEhkO2VNVG5OZDovInNgISROIkg/YyxAc1YsfENoUzRZRXorJVckemd9Q097Z2pdJnZ3NGhUWkxLbHk0UT1WMFc8eG83fGsqTFt9V149a21JbGxBYTZSPEBdIV8rOygmQzNhdkIlWHxbMiw1Y3dCL0FMQ0wvVUJMJjNCJmY6UF5xLmZhJkhXfEEldDt5TDp8OTIxQDki''@;'; put 'put ''ciRHb1JwRlU4aVVAUDlXU185XXt0QmJCP24vTUZ6cWk1S2VacmdxNzZ3UHU7UzdBZFR1L3t4PXpbODxXQEN6Qlc5JmlwcSVjQFl+KkN0clRMaiVEKU9DJHNiejMyXVkyJk9YfTMrTTNhVmF9bDVnNDgyfGp1QEZ5VUgvIjshd0pAellRJmZDSFE3UmopSX5rKTN4MlM9ZUVsYjdqSmxqdmkmKHM4''@;'; put 'put ''Q2BtdC9ySWFkKTliPWZMQ3hEOzZMLGldMHBgNiVqM1JHNltxdGpXRXlrMnFxRCprJTJWI3VKTFp6KDBlOjgpZStVSm12VzJdaVBGXUdodnQ7eC9GVk9jLCsvJStWLmRZWH4xOVRUWjY0Ryh3UVh4US46L2N2MG4+b244dHZBKExbbUgzSH5BOmNDKjF0eCMyd2F0U2UiI3lWMFBfbkJiQl1ldyp3''@;'; put 'put ''SEFrUmJpRXZ8YCgjc1BuQUx3K0tBXVlUYXdgUzVxQFZQNWJbfWMjR2d2Zj1aSzVRYGF4JmRpYHtnLC9BWX5uL1k4VjlNZ0o/IyhnP3MkX3IxcF1gfmlbKHpvWDd5ZVA0PjJ9eFRfTkA8OEZrSClDQSVpMTovdkhybUpiNkZ1NVlkTyg0SS96by46ISkjTkZURGdPfi4jVFFRRF59LDtfTCRHVX19''@;'; put 'put ''VlppQFZbbEQkVjlbUmlqczt0WkBzailNZXZ5U1U8I1ByUyZkZXFIVl9tVkVyUFdjfj54OWFyIjxPRXklcDZqO0JTM3spfDx4YXFxeUI+TjJeOmJXNU1DOF9eK1J7K2B2amJ3TUApQXpYbzcuJTErQ2wyZUhAd0pMKFJOQTE+Oi5kQlFaKUR3LFc/UjJaV2Z+XnElYSYhWWYwT3lCZU0kTzJ2T1RP''@;'; put 'put ''OjFreG5jS3VgaVJvemE5R05oVzNQb11oUG15enBvVyxJKjxCWEZ1M3JFeHF2VUlEQCM8Om10PyFDJnc/YFBaRzphPlN1WUdKNVlfKGpXTlU4RWBBfV1lNmUpZkM6OHI/fmJsPz8mR1h0fkt3MThvYn5jQ18+MXBxRzJjd3BUUkYxPE9NY1pQZ041Lys2ZV4+OCpfW35dZyU+RShjZzchTG99MEdP''@;'; put 'put ''TzlyRE9oRS9eV1FhP2hJfXE1VFtIcG9NM3F+bXs+Py9UaF5LKyNSJDhSQWAyL1smUC5QSjBTblpEY1tMZTB5I0pNQHMqaXUpKG8mX0pBbFkiREJTbVoqVCZSVSQyS1UrYXxuMFt6WTRSPkR4Ii47NX1MKD4qI15vNjMmY2VGelJARD19YylMQWp1KkFPU1E3LCRHNmZqTDhGXit3QzZQRihaVC9t''@;'; put 'put ''UEJnTSYya2VoQ3l4K3Y1P2M5T3VAS1IkQGtjYDEwdyxpZlZ4aXFYbF5SQmglUjlOIWtrfUc2TiYvbDtHUnphKns0ZTp+XjlFK3M3I25gdFZkZ1Q4TXJLcHtnKChgcHNXS3piOV1yMSlIe3pXcVd7STk6eSl1UWhLRDZqVEcoZzJDQWYvLmI8SCozJmtTY0hVQGpyRXwzYyhVdnd8X1dGcGIlKUBw''@;'; put 'put ''JHQyMyU4eFkmQ1hyQE80RWwoLztvKiZrOUZBZURHTV5KKzN5TjZ0RiNEMC5XLj0qbnNDc1tKa35qYV8mVTxXUyxrYCo6XykvOWJEemtDfkBVZXFeNUpvKGgkNWRuQ3gzQUE8VUZXZXE9QH16WzkkRj11Szs2fjllRnBoUStEVn1XMjMrZF1JLnw+NFNYZVUkPmw+V0BUNkN4WzAmTXlGKH5xXnBo''@;'; put 'put ''JXVDb2tAOz5kXixrOSVnfW52L2Z9M3hAT1N4ajx+Q3M0NHNiamZfYTowKUpIIkE9RVJQfUQiSz9kVEAoWEZKPntUPm0+YERYfUF3OCIzdj19OV9Sd3V1SlVML2NNck1qXmBqT3tuXzwqeWV7JVB+cXwudlpSY0B2P216TE92W3BkfTg0a1Z5QUBud15IM2ViRSp+TzxUWStgNyRYQWZTNW5ORHBt''@;'; put 'put ''alledGc2JDMvWkUyUU5zPjNuKjxXLDclQncmMnxNYDJiYVJFY2NocTZNb1B8Rkk0bkhPKk52P3dtWkJKejolSGdKRlohXkZkOyR6MSo9ODwxbjRTPmVnaTxxN30pK0N8QWJ6O2RqQiV8dlYqJFteZkszejwxbzNIfEdbb2pQc3gmZVMpQSZEPD5nU2tDVD5Ecz04XSJeW0ApRWNxXyY0W3x1JDJh''@;'; put 'put ''Y0UiMzM3Omo5ZXg2cHhSOzFoWkhYSWpXITI+USEyVkQ3WHlpVWBJenQ6VCkkZDdtNi9BLyQ7SCQ7VSFpPjkhQ0d5Zl9SdWJ8aSkmKVc6MnBPbVRVO20mSTNEJXs4WzZ+c0hNI0xOKSJwSCNDNFYvb2omRypqXjAme0JvMzNjVyghIVhiPlUsWkw0LCkuSSVIaUs8NWBJT0laPUlmR05wZno6KDZF''@;'; put 'put ''ZV5HNGZKNmwidWY5fH5PK1koTkZocT5+aXpRUWRmRXk1dFtMP3x7eFI/bkZTc1M/WmtzX18kODdNS2EqdE9EO1djSllAcEZsWX4haiZKMl1fP2hXcCRVYD5LRXd3QllGYkc3aWs7eysiZzViWEp1P3ddbXxfODhNdHVWM2R9V0k6OWpGbGNuOlpAWHVUX2czM3kjaGYxa2IxbyYvMTlFaDt4bmFL''@;'; put 'put ''Wl5DNS8kLDpFaFc/cjA5S14ybHYqUiRrYH0pPDpdWzJHR0Z6SVgsI1t2OUUlc1RuNX46c3olOyVFcFZeJV9pTTB9NTJALEBUfWo+TD5wSmleZmpSRSoxbUY4V0M1K1ROUj56MndhMmN8T25CLkxfYy5raVZPLiQod2MxcTA0OkA3cThIKS58O1gxP1hue2tRLmMmdE1sSHwqdzcib0FyUjAiPGFx''@;'; put 'put ''e3Q0R3FhaGBZJDB1YlU3L2tUJmpPPCpFU2FAfGlAS1NQJVN6Om8uKjgpT0tYOjgmWE16WSsoMmI6b1Y7R2s3RVopbEhBLyJiIT55T1JkS11SU3JrQTh6c3RbK31DYnJnP3p0KSN5ZjpofSNIYUwlPXhwcVBtQm4kd1FnVkM4NGJbdyowMD01OnF5bzgreE1FPGxOJSxoXSVBfCpiO2hCbCY6ZV9+''@;'; put 'put ''b0xtVWQhTi9IYWAkNzxYS1ldY3ZWdHBXVz1Xam0uNUY9ck8mNExLT2ppeWpPRj9kJVd4KT1CS2AmXlZUP08se3h5IzU8U117fCpDc1QscjlDRUc3YyFLdSJDI3d2MTpaNG8uU2BSUjpdeHk8aD0kSlNBXjxaen10aVdHeV4ma0xnWnh6K15NaWg7fVtkR0JMd0cqLjJ8eUR8NVg/e1JpO3BkQzln''@;'; put 'put ''bjVoZnl3RC97VUpgS2JBVFdIbi40UmwkR1kwRCtqOlJ4bUVtZzleQ0M1OGBlZ3VKYWRwWjskXzppODtMMldmeD1tVWEzey5bcWtXQSoycDZIVyQkVShKQiJyNWlnRmx+JDEsS1UzWG55STFiRCx8QFYzc01FTDNuTzx3WCxyWGc3KHlLcCpSTVh5PThIS2FINkdgUjhEQkZNWTdNMUVPdFJLbURU''@;'; put 'put ''Y0NhYXJgYk9QdV81KVo6Kll0WXxPUD5qPl1VO1o1eW95UmZrS0g6cltjRmQ7Q2lXOTVWMjFNZ2NkO3F6dXdPX2RIZWY4a3tZXjRZNjI3fV5fMVg/eDwwNyNIIWt5Ymt3b0lgXz05JHl5UyI3YUd2cWtucEQ9fHtdJm0iXUlXKWE6JSlGbGdBazZoOlJRezIvcGQ3bDdQZmpPZCNLdkQ9UjIrTjZy''@;'; put 'put ''VmhkVWomTVZDezdOOkdqT3wjKUh6emA0ZzZUXlt5LkxZdVdEVUBHSHNAfFEwM1c9Jkc0dCYqQVgxWWx5L3NjLCU9IyRVQ0VUKVB1KFd9OCJsWDhdNlsrWSxZOGFwLjVGPEhMdjgzLkZRJCFCQHJVKFdlYkJlS3RYKzxxfTJmUDVPMix8UGRsX0RtLiFMV2dkZEN5SXlGY1k3N0R0ZX5eaTw0d30j''@;'; put 'put ''JV5NRnRdfilyZXo4YG4sZ2E6SUp+LF8oJWppbyE2T3g7NGd1Mj81RnElMVR5K21tLHtZM24vVko9aTJ9Tj8rfilNdnxgQS50ZTFKLmVnQUwkc1JfdnNPNyYre3JATUElaCVLQ3R4VkdJQyNzelJufEgvVjA/NVkoM1BZVlB0LmNiSkw4LkwiK1lXJXk8MjFPTlZHNlQ9e0BLKCN0bipbcztfN2Z6''@;'; put 'put ''YldLcT9Ca2FXSUJbdytqJSZ9by9TeTN6bzJHZlRuSmlhOUV4NCxJZWppJXw5YExLPU1XWVAyXiU9SGR8a1VbfiMhWF9fbmFMM28yPFAodFJKVzEyIV07IXlZWDxbQF0iYH59R1ZYdSoiKTQrTEModG8vKmUmOnx6O0s2ciojME9zTjVqYmdrIWpLeVtNfEpHfkRxMVsxRDFgPHU4LCVoZT0+Q3dM''@;'; put 'put ''TU9NPF1mSV1udE1oUzAiT0d4MDsmNWlNYGZNUVZaQkMoTl4yLEsoK0VEPigwSGwpVixycU9IOl4zQGcwdEMwP21TbTlkWW1WN2I3NTsiOTFYa0Y/eSFQfF89TD0jIkhWYndCNW5mRSo4Y31BRFtTe0x1RCNIWC9oS2V1LFpHY0VRVFNZI0FOeSFBOzRTMFVCXUNld1IvMyw1aEBgRl99IjA8N2NR''@;'; put 'put ''ODlWKyV5STxOZ0BFfmwlLkA4OUtUa14xZm1FTXVhQ104aDN5YGo6VSFCfWlUPzksSSRPWFgzVCg9flN2QHQ5V0JpWmphY0NDS1k5XnEpcEtgMGlVYltoazh6JnIpT0M6M0MmVjMlI0AiOS5nQWV4T1RxKjFDRV1TQCsuOE1lImUkW2FkUzIwcSgmSCQsODxmWSR5I3UhSjUhbkImJXJXMDRSR3Rs''@;'; put 'put ''cWBifXUoKHN2KSpEYCU2MStxTzMxdERpcSxLfjVIdjozek5zPXUqRTpuPVpmImtDaSlaTG5xN1RnU2NkYCZhenJ6VmJvQH1+UyMvJjk1XyUjYElyUXRWYEIwST0/O3llVGVILGF+S0VNWHpvI0NMQEB5QzJhYUhafF1BWnQ7dnZ1al96U31fMVcwMjhhLFU7LjxtWlpYfDkmbShmbUt1PFJeOnAm''@;'; put 'put ''dCJ6VEBLU05qek4kal4xeXo5dkBlWjdiY28vSTEvNkZMUGw0REgidys1czo0Yl45X1RZRTdFLiwpRiE8fkhxQnpoZVduLipsRDJgfElMSjF2VGpKM3UhXVJnJkxYcn1lbEd0LzsyflFycnA1MHZPYXgwXmI5fVp2WXdwT3dxaDF7Xy8xYWpSYzRjdzNPTEpmO0BueWFBdUc7dHM6UGp5YTRERjRn''@;'; put 'put ''bXRHIyI0RD5LIXokXVpwPmFnYnglKU9qYFZXe3MjNkcqVHcrLn5sYGZoaCNBZXNuJVhBPGYhISI8TW9zPEtoNz8yWXNBVHo9dVpKeGZ1JD1TfUV7JGBUczZQR1k4bGAxaW16dS5ZViZ+XUxbXkMpT20xXVdHe2FqRE1GRi4kK0dUW0pGQlNbIWJHZ2dyfkEqPj9lZnVNZzRYKV88VHVCIiNEezZV''@;'; put 'put ''Oz5fdz1DXSxKQFNrMD9KRm1zb01ueF59VSNRdiNQK29XR2lxITU+WTpIPU1gcGxnTHBHfXpveHpXZXNDejZkRUkoZV9oS01MZEdHTytPMXIrI2N9KkhwcWMxTFkuaDhpZn0zXjRgOGdFKiVPQU8ySiNmXkBiLChhMHBQOihIbypQaFdBX3dOVnkvekFQdE5uOyZJa1Z0enQ2NENnTmIzaFVwaX5T''@;'; put 'put ''bCp0SHAvIyYud2NNJDIzI35TfG5YKXZabHk/YjdsaklTcFhCSk58IWUyeXNEcX11b0JjOlAkYkxjJU8ufE5KNlc+Rik9OzFTOyNFVVBkY1NFIy9US2Fac0h3RD5PRHw6KCZbSHpgPVdGMlBvSWlOfXV8NjdGVUtgSlg+UmwxWDdTM1FTL2klVnFQeXtKUiVtQm02dDsxUjhvY1tFcnVwIlBhdWpE''@;'; put 'put ''dWJBSGR4QVowOCt0OURDbSgofkVQJnA+MitGOU5yQWV4UCIpKy5ETVRUejJ7YV05PXY7WylAPSx1Qy9ZOSxkeEFiRFIuNT5yM1JsK3M0flJOKUJ6R29uaiZ5fFJtSl9NbmlEd0F2ZllPUjlHKkoyZWtSSDJtRVJtbl9IYFBeWEJNPG5iUihbUnBONX1wcVEsIVdIL0JPdUJ2YjJNJiowcVNmdyRN''@;'; put 'put ''ZkgwLEZmYz5zUW1xRzU/O3FUZFNNZmZLPnslNDc2d19qRlRbSkNhTCVmK0UiO0N6U1pSfGZDe0ZxbHMjTUtpVylJUFJZOlllLitqIkwvV21KITJTYFJgQGhqc3ZpcHR0dXs1RiVXMkU7SzxUZVY2azI/U0xzTn0pREB7QztQTm5sVz1uPzYlZzNXPVZdQyo4P3E6MzBVXVJmY3o0Z0ZJViZzYU9x''@;'; put 'put ''W20+dEs8MWBOO2UzUVNRITMybEkvcUg4UGwvbmpxOXJIOHRASDszbHl4SEtXZ0gjTD1CZUAlfDgpblo4MSxbYk05VSEkPyElRVRMK0lwdUVTM0U7ZVVyJHRlWHtabHdmKyNHZG9UcmVHUGRUPjpPX3Uwb3BPVVc4SGRiazEmckYyZjBWfThuOFM4PGVyazouW2JXbyQuYT5pRl9WPDZHZD5Oejgo''@;'; put 'put ''cF1mTVpnSEs3UyM5YklTUGxVcGVFXUhwbSw6VjxLZWprUTN3OSE/KyosJWZWaSEqMlprK2RGO1hsfj0xI1RSbiZFVEwrfGJia2pLR1JocSxxTFt8JnZsRm0hSUs4TnJ3ZVY2fU8+OUApYThGJHFiRGUxJjNtJHZFYndIbTtpW1t4VCNyZXlUO1EpZX04ZnIhfTk6VjgubkFoMyZefVs4Uzw1L14l''@;'; put 'put ''VzhTfSouVSZxJFN9VjhWbU47ITklbllsZEk6fCxfUGV1VDpwamxDcCRiNj8mLmI+ISU/ez5II1VUXT1VeDJuZDw9XVVOJGsmQFRMZTg5R2RzaDwjVzg0SHI8QjtkKHQkYDZ6JDY2VTswKnklfSNvbXg8U2VtM3cqJlVtcndWWjgvX2khTmtlMzojIXdGbVEmUCVYOHhyfTchb1ZnNCp8JmYwRjtC''@;'; put 'put ''Pj0pbyojJWdIcWZoWy8jMi53Mk4kSEoyIyVtfDMlbTN2Z35GenU4Kjo5fj5EJk1rOGR+I0ltUyIzIn5LS3Y0LiJBdH1yKVhsbldMbjZUTyUoIVRhVD0mQSJQU1YpWjM4RDIxVE5eeXRGUUVMaEBjL1ZoT2o6THFmVUxibihkZiFuJFYicElHXSg3WWt4dnFVMEwyW1opcm4rSltjUDsoN0U7TDoz''@;'; put 'put ''ZkdOOVc6SzNpR0Qsdml8OTllL3JbNFJEVDkvTlhwbTdxTyxvdTY2OCUxMCx+UTtzUE1ofWROOG53dGI3dGFvXSpMcDJeTi40YVYiQ1FyRENoOzx2MzNFLmVPV24oeTgmeWIwJipXLj5PWDVhck1wenQ1OjFdfTtzKlspNVhkZ0sje0l2PHl6UXdRcjlGaDV9eVg6XXRSZXRvL1VoS3ZjdE8rSi5p''@;'; put 'put ''czhsaj9XNSFzaVVGUys5SDI9cXhTOV9hejdsOVQ5aUtTcXdWNDx6X0pUMHQveCt9b3tTaWliKFJRLFRsOTxuVnoiYGIsaTlud2IhU1JfdXB+PG8zfSNfdCpOT3RVKklNdz9ORTE0LiJFLm83Zk4jWClmSG5Xc19UX1pMMF9SN2BhR3p1K3phQ0ZHPnhnR3MoTTMmIl1sMERFI3ZEMFhMSUxPNWMl''@;'; put 'put ''X01zXzshR21mNDQ0PDlvWTk5YlB2cXB8dS97WnxHNTYoSWNQVmJPaF9RdltWU3ZPXUVFdUtTKCJmVjRJe10lX2p0IUF8XzE8ZUNUJk9IPWB8a0p7PGlrVHJNJlc2TVJYOyl0WXBWSmY1LyFeaSlXOyh1MUcjbnBEUUVCc3ZCVHx4YUNXPWRjKXNIOF1tTiFEYEw0KHF7KnhiRkdtVHI4Z3NeRW96''@;'; put 'put ''I2MvPWFecnZMfnBxRkp7SlU6KnhXOlBTUyV0R1dZZnxeSkh1ez18Il8jP14yUlhtaXJyYFlUS1hJTUBUWXZ1M0ZgVkdve1l9WVNROSYqZnxefVJeLnFaSEZoS1M/QmN2RC9+WEtvbjx2WFVvMT1fSzRiSEBxeDhjP0lbM1ptO2gvLk51Y3R5L0lgYkRXfWB6MSJWczVfMmcuRmAzPll4NHwibDsm''@;'; put 'put ''V1tbP2xYTkpnMW1CS3F9LiV2bkV7cSF5LHt3KDt1c0c0MW94XXIoQz4lbWRNM3clKUZ1Mj9RRyMqK0t4UElpITckS0dSV0s3RVVrVjpfVkA1O1YrZF4oRTc0OUQkdCg+OSpEV0FyL1tgYEo5dXZCYmpFQGkoWFVDJFRNdGcsakNaOVI2byFpKGp5ej5sQiNfKyt9QGRgQispeGNmWVZ9P3Q6dStH''@;'; put 'put ''M0UyaVVyY2ZAYFhpeHZVfndlQXM1ITtGOTlWb1NfX2tCMEBVPzh3SkNZM1ZsMUhHRTVOWnF9OUsqR1p4Z3BQWkBTPXNEdEQiT3o5KFRvRix0UltWRzRRZ3FCM3t2IiJJMVFlPEpUVjI1T20xckFZZ2cpPEM6RFl6e0JoRX1RZVEuI3I6JHA/Tz9QcDFHTit2M3NPRmNLeXhLYTIiVS9LeVtSaipU''@;'; put 'put ''QEtMRiQ3aWU4VFdZYHB2SC4ucWt6ZVJCQj5CQjw2eU40YG8hMjBILlJLVF10eH5KK30jKC5MZCYhYUZEZl9bWj99Y2N9S0d4LF9pM1QrPnYrOjUkaHs1ITJfem56Q1hWTjopc0hSSHJPVnBAOSk1RV9PeyFJTFt6aX5oUG05Rnp8cm9AWHVBQj06PiR9RS4qSiEpVmEyd0Y0bTptPEI/cDkoVyk1''@;'; put 'put ''ST5PW1g1YWxiRU9QQG4mI0lBb21vblsuNkpsUVpbZV59S0M8fEs8SClgdUZ7I1khTCZIMXUiSGZdeFRdSWt8a0wzO0Q2SnspUnE7Im5GYHBuOngzUUVrLk4yY1FxRVZpV3Z4WSZ3fkcrUHdXMj85d0FmJUA+by5xT1FxSTc4Jk8sO31XUzxDQHsoOT1nMUQmcTUxKTBMdz59OWx9K1tAPyQuQ2Vk''@;'; put 'put ''SUAmRm4mciQ1VFBaOmBVVWgsdk9PbUdZeyRzfTB2IlRWIU0uRVtaVj85KTx4VG9nIjNYVUVWQi5ZLDgqJTo2bSZuVCg5U0p2biojTi51JDM1MHVnX3sxPnNOSXNOcz9fQTshS3kuJC5KNllHfXQ9bnIoP0RvV35JZDNHUmpePGZddTJuTmNJY2M2UG4oWCpvMjlPXUkiMnxQKnJvUlNtZVJYfjRC''@;'; put 'put ''YyJJWnMlUnkqSiRrP1szd3cyZjA7a05tWlMzVWNkV3xNUFM9MDYjVkVMOT1aMz1mfmk6PHQkJVd6MXtCWDBhLDswWCU9IVc4QChXVncyWSp5KlgsMm1LYDlZLmZDPk9vUGR2PW17IXh+MFFifWBrdjN2Lm5wVG8hOm81UGBNb3l3bEdyfHlZMEVqaGVHOnt0dD9QVUpBbCtlL0lwZ1ZFOz5WaDY6''@;'; put 'put ''PWUxOi9hOm9TZSojOEEyXT1tPmhbW0w6IXY/MC5VfTEsRVcrRlpOS3YoSHtJIl0kb0Y9Y3RkSUhPWC9+XyNvX2pbclkzVS9GWnRrWltkTXcvb0YmQSljc0h1TnAwRFA4UVpEQiJaUUNNSXFPK2A9eFR8M0UhcHA3dEBUR0FZXlJdY29GQ1NEY094fXFgVEsvN29AbX5ORT4jM10mQCEoJXxgRHl6''@;'; put 'put ''WWtIfGxwKTNoe0ovfCY4TG9AK1F1V3ZtVnllI3VvaDkmfnwjZ1oxU2J7dyorLyFuVmY4TDlPKk40TUhpKFZifXgzUSNwSXYudzc8Ly5SInpfbVlgUGNnXyhiQjF2Iko8SGZ9RC4zW196TTFaQzVkXTQ2UiF6SjNdemd3ZiVDfloxM3d9clt4fTk8Ljopdnk6SUZ7Vi8uUjc4Sj1OIS9UNm1XcnFw''@;'; put 'put ''XSJpaT5CRkp+W2ErJCZ6VHx7MTVYN1F4eXQ0fCFQS0BdeVN4RF8hWyFRXi9KSU5aa19jcWM9M0NOVUtNdEZUKTpPXUdjPyZnUkNEOnArQjpeKVV8QFhydlZMSHppaHVPO0tObUpyOzNJVmMiKSluQDYodCh2ZTpNI3l7MzRFeyZJNXRwOSZHMlFSd0wiSCUjcjowY2dWUHpeW2tqPTdxUDVxQktu''@;'; put 'put ''VWNVQi4lIj5xYUc9KVF5NWslYCMhfH5qZ3Y/UCFtQS5TJTRVVytFcF8sWixyaiVxdFYrLmtdVVE1O2VBNGMlUSZDPXtwa0d7WT9bKilhMWlRZE9Xcllednt+KCFmTVcicGdVVjN9Uy8qQ0ZbVnxnUDU2cVRVdjN2dyIwSzMvZylJSDFhWyVXZWBeNGN0aV5uVTd6MitgRVFZI3xkfEs2Jl5kSnZn''@;'; put 'put ''ejp+TiNEeGg1WSkkdVNgNVNibmVfSkRpMUZbRnh+L0piJWojaS88W2gjIjhuPDZ0TXckZ2dRel4zTXlDWFZ3Zi5jNG4sUVJiY0ZLbiZnOkhAfDM3NF1oQkZKeXZ5JX5iOD9DcXJDcn13JntLSVV0X0FmXi98QGRzfThpKjUkYHE9VC53RnhaY1E+fnFaP1M/eHdUTV85K2NDR0F5ZVJbcG48ZCZl''@;'; put 'put ''UFE3LzZ0d1dHTnQwPWAscls9KWBERkc9X1EraUsmfHRDXXhZLi99N1ElW3lMaVRbSC86b0h5OTR4RWl9el1XTjNfNz5APSVGQnQ+SzM1NjBgeFJbKH5FLHVgXzEodVo8Si9BdGo5V0VuKGFVYCY8TikxNnFHRjdNQUNDRlkucikzeGBVU319dmR+YnVFUGhOT30+ITU9SWBMKkY3ZThWey5pSjxu''@;'; put 'put ''N2ZiNzdFRklJRi96MmVkRnRLX3VRcT82Zy5ePks+MyNWLHh1eGZVWyYoe14xViEkJUxWOyM8e0d0QSx+S2xWJkk3bC96dX1PKW90M15VPm43VGk6N3NmWnQ+dVBPezFtZnVXemNUR1Y6QSRzVzx1VnZ+NHt+bnxYY2gwK2Zue2A8O2tkOXZKd2ZxQj9lXUtScm9ZJjIoZyVnIS9KN1ksYjArN2JF''@;'; put 'put ''Z3NzYUZLXSl6KWZLP0ElLEk4TFgrISk9Vk5MKGBmLn5gfXp3UTJMNkxOKXVXbWdUSEVdOGl1WU51cDxEVjJ0dCZQdEUpWTswY2s1KUtpRU1paHliUEkoWTpWJUVERSJgR24rW2tKMHhYMkkkSEZPIzlqRDpgKTRiMzooYFRfOyhqKzJWZCp9Z2A+aiI7bDY6VzRyVGRkTElhPUcvKD1jSVIxRUJ6''@;'; put 'put ''RE4pZ2V2L3giQ0lmdFNYWHhCZz5eSFBKWSlhO0ZbQ05IWEE8JHtoI2p8IVQidXFDMWorT0N7ZihHQ3I2cVdTMD85bD8rTGB2QkIjNVQjPUJAIjh8fkN2JjouQHtkRVRYQChMNXdyREY3bl0yaXc6WXhaYiMubSN3NllaIitEKyNxXWZsMCNRSkRwIVNgOi9vPW93YncoQioiaUJvJk9QLEApZGVn''@;'; put 'put ''dX5xck4lS3pdW0gpYiE9aDQ6Wz5HMExOMyNAZ2NYWmlSe0hnKnRuKEJGcj5PSTlabHZdUk5QLHBvOi9nVEF+NyZUUkNSOiUmTmlGcDZiVDo6c3VQNyhhM206JFBWQXMrOnp6LH1weTBbPn41flp5ezs+fkNgRFVBImp+Xyo0RiJzKn1DP3g6YH5kfj0+e1FSOHxHSFhSSnx5SGBNL19zc3wsSUIi''@;'; put 'put ''X35fXzdzKj5ffjB9LyZ7O31+On5qfTc8QXQ+fnh9T156VTJAekE3ImNoQXNlJlJvRURzKiRfcHVpaXZIVFJYIjFqSlQuUlJrX2ovXmRYZm90VlZFQ1NlczdrS0NqNGUrS09oTlVxM09EQTlaYjh8aHJONmJ2flVFXmpyTjdZdWhtZFd0dTYlUnVNfnM/Pyxock5MWWYhYzAlWW1lcmB1aUtAMH5O''@;'; put 'put ''Pio+fV5FaHIoXX5+e01wYWl3Und2XUYrfnpqVFIlczVJTW5saFFZPikwW3QoXyZEPnhvX2giKTV5SmlWeWw8XTdBfXIzT19YYG5sOXAjNH1MI0p+ZyFeQlQ+e1QkJTF8JUt5Nj55YCkwMGJaXkgpVG1DOiNueUp1Uzh+OHRfaGA8TS5BflVsWjd0UnBiKj9bfUM/IjU8fkFnQlF6UkIlK1hQbzJi''@;'; put 'put ''SEJIJFtwYn5zW0BVeSZCXWJAcTxCbl9ZO35nci9DdihrPmA9KnMyOGxFdTptZ3JUUCwxOH5bZllfL1dUaTZWKkdhL0MocjJzUGpFfm40X1EhbHU1QHMqLCQ4YXhBVzJLTi9DXlIuZUJdcXo0LCZKcVVebnBVcnJNS3whaWtjezcmV2MlJj9rWXIjRWkufCE1XzlrPkVWdDYsUChNY3p5cnA6MXpO''@;'; put 'put ''VUUqQX13MS8+cGZ9K1ouMHxaV0MieXJCcTpBYm9aSEJyVChhdnw/W3tPQFZSYj1AQ3s2cW1yfDhsUCsjNStea2J1KVNTZUdweUVWMm5fXzZLUypjWlcuW3t3NlBpfXNde09qUl93QUdqKDcrM017ISZpP1lpXyZ4VEFXPD5rPih1MVZlckBOMkd1Q246JiNFJTBXIW1nPihvc09jYDZCQnJaUiVf''@;'; put 'put ''az5VWVRfbC4jN2IrPkFBOms+LkpuckIiJXs/Tlk8dTNjfTNPLHdGNk1CU2NLQzIocUN2THFJZSJRak43NkFdUWJIXkFGRTpXN0ZbdDAoOUgsLC5GZFo8aCtPOUV3QSlZMkAxY31bUntJbDlaMkB9KG9PXX5ee0hvdFd+c1Z+Zz0jJF9zcHx2JCloPn4+XypPdCg6fjg/TGNxV3M5fTZXMkFjO1Ns''@;'; put 'put ''d2J2TUo8NE5WKnhlU04qR1hNVnF1U1lldT1sR2spPD00OFk1eE1WcEp6dClMXzBmRiJmMFN1dXN1YnZYLk5WfSl4O3UmOGttMis1Z3dgZVV0b2BoKHJEP0BRfjdWbDEpPzU6d3MkNFFMSlU4NUtdUjpmc1lMaCg4TThUWzlwQ199d3ghVEpdUTE7fVVyUnxxNCloemB9bGZXI2IxRj88R3JTTHR8''@;'; put 'put ''fWBpc1ovS0xEXmt1MDB7TGZbInY+fHZpPlE0ZTNZXylORytfRFk1czBuMmhHIjNZWypOR0JgeHUrfVsoVjQkQ3g6e31TVFY0TCVZbDR+Sz1UNDNOeDouQFB3KX5wNDxzdlBUTE0jN01GfkU1cXNuSy85V1FCYSh8TFlpV1QmRWNFYUMwcj90R1dgUFk4fjtGJWhJdSVhcy49R1ZgWSo6fVc/T1dV''@;'; put 'put ''fUQ3ZDZbcTh9aTVkfjBMaih3SW0xbSlAZG5bcjBefDdAcH5WP2kobn49OUBXcjhfXygwN3wjQHRzV2ljK1UiYWZVe11EPkpQdD98V05zfmNEZ19YS3E4cl1sMj59bSJHYzxpQmFVfU0qL31SdTF5eVE/OSgzeDp5fGdbVShMeC5DKl53RlF+bnpdc1RgNHlyMzRsc186KHpzQkRJNCwsK28rKngi''@;'; put 'put ''MHxbIiZ+Y3EudlE1c3Btfj0pM2hfMlJxL34hcjpRS2g0eTQ0NGwwfSh7VVcmRkVjdkpDMCF7bUQkfEB0cX40bi92dzVzcG1faXJQVyolMnJ5KzdNY2A2RFt9Tz9YKClpXWVPM0FOXz5XRGp8RzVlKGJxYHM6bz85K3Umbit9SVo2aFcjZ3R3YFVaOn0udFUobXE1eUFAL1N0fHM7V1cwUEVjYmxC''@;'; put 'put ''YSUqPUdzYFhZe31+V05MeTBgO0AoQTkhfVBqaShWMnFXU1FoNlEuZEdEe3w4anM/U0VPKXxXRFR+N0whPiwscVdQV2BleH4oNipzcUpeO10pOVc7fD5Ybn5TRDRocj1UTEliVztRQGtKQ354L0ljLk9DMGB4JE5IW3Z3X3xUTWZzM15zcFB9bktJTH1vUnw4MGNaWH5kWXJ+TjxXO2p8e1B2c30+''@;'; put 'put ''R2NGbkJhTys9Ryw+dnd7fHIpZ341QHNwUn1gZzBGaFYycnYsN013YE8sYH0venI4RSw6I0d9Rk1hV1ZjRDB5eSROelt2d0R9cik6fnFlfl0ye3RhT0xGeFJ8ZTJjWmxbYjB8fH1INmhEZUMwSmBYd2N8ZClTNFB2N1RWX1NIb35zdHJXODsoVWt8QXZJTCEyUnw7M2NaL1tiMEV9KmdnKH4/Mjd0''@;'; put 'put ''fGg0L34+UlRMUDx9MXZzMi88MnAuSl18fTJVOVQwPWEjL3xQJFgoY1F8NEJ+OCNSKDdyLlFLQyUsKmBqd1AoTlsoaEM2NmZ9XzFXQH09XkpjKV1fQipzXlNfZTAscWZtfjU5RU84P0t2PXw7dSRzQjxFNzl7d2w/OXxLcjhoL19SKXMqI1E0SD9vMVdGTHNXTGBqVlJoTU81dEZQPFsqenZydWoj''@;'; put 'put ''cygrNU9CZHhtMio1IU5JKSVtdko8NDVSPClIKWZzMVYlcSU6SzNoJlo+Yl5nVT1xRT5GViEpeHY1UVovI09tJC58b0hfST1KMDZZS25vIjhGd1RTTltaa19TMVlNW2IoZy5FJndwRTJlLmRbRiNiPSw5NV4uZXwlL0RrbStkRD4uXlZQRihffVI4fiVacndsNit5JiF3cj50O2chKml+eyJSNFFY''@;'; put 'put ''LmkhVT1rYUY0OW8hLihpUjYyYEo8aiE0LFM7bkBrIipRUDZLZzRId2gzbGtWcSQyNUBtOzxYKF5ySi5iW1YoajtVandYeCNCay5eMCZzJG5vK2Zub0xnPyN2KjJVXWYmcD07VWdaOHg1KzNbZjxmVT5rRTQyWDZbZjFnTDglYjMkYVtbWyVSfitiMntUUF9nNmU3TjoobEozTChyO2xsPzxiWyNr''@;'; put 'put ''dzY2PDBJQy9iWzRtL2VTcGVJRWoxLmdoJHYlPCYhOUA4N2ptczt+OFk1fmY6cHs4OCxHbCQzem9xPGglVihqcHFwIVUzbWU5Njk5MFRhS3BoZik/OyVwPUtrNDJWNW48Ml0jNmU4aX1sJHdDZlNGZVo4YGZia3FbOyFCPnEqeCMkaTo4eXAsPCUjI2w9Om13KlE/InFwPzFYPUVdPkBgXjw6Nz1B''@;'; put 'put ''VlNVYV43b3k8RyhsMUZtWD0qUyNYeDFtMnEybDJ7cGp7Sl5yXl0hPCpUPmpGYSglbyEuKCVZe0peO2VMOjNdQ3IybG44b2phLGE7KjxYMk9gY3t2JkV7UXtsO3AkcClHZW44JXEqUXowNTBtOCQjamU3QCV7U2hndUdbcihlREdRLiNNNmQsVm1zcl88YTkhVUVRNVl4MEw8Qj4uYmhxKXs5d2Ml''@;'; put 'put ''YWs3MkgpS0NnJi4jTltrO3lVTGcyaykldzJFMillYShzSSwocipHOHZJMS5ndUdbOEJdO3xQJTYqMiw4aF1sbEhxIzIobFNwfiN6bEwoI2wvZVYkT2d8P3s4fDw4QiRwbFNmY3FEJDF2QlBbZUQ/bCxxYzFsXUsqQyFWPGlbaCF2bFNabiZ0MURfTDthO1ltWzwxc014PGQpbG5xbTJzRUIjYntZ''@;'; put 'put ''LjNsRUx+bmY4ZWgrcHdsZCRhUnY4NV5yOzFgWS4yUWg6ZUQ0NjZiOGNCcU1bJiFnfHxoUnJyYWo4UFMiaHpsdXYudk88KT04QnE7cjxkLnUyUHFWRzlHLGZVVUtUeVBDMUZCNT5HMTIuejJpM08kVGxhVXwoOjBtXkVwQl4wZk05PHI/dF98L0UhNDZFaShBcyZvUzxsaVFUKzNyNk1icUQsTj82''@;'; put 'put ''W21vYCtmVGVgZ1JmbS54ZX0jRzlfZiYjNVh1VGo+TyNvOV5mTjYrdyVdN2h4XWR9Z1A9O1coPkB9aDQuSD91SmV7OTRbdGRVZW5YOD07cSRPciJhajhrajspOyUkSFElKCtqM1M7PHEhUl1nJCxIPE1LR3RQXWElPzZ5O1pVJjdtMWpjK2g2aSQsb1opfDo5SHtGdGRVYV59ZSMsKnk9U3FmZ2s2''@;'; put 'put ''V2xFKGk/LkJnNnBISkc7NG06I0ZyVyg3UXcualZpLnFle3B7PV1bbDFASHBta1FKPUMyVVtQM11ySmtXSFg/NWpZVElwbSl+MDsleDt4UyFIVmd+KGE6Vj1TVF9JIjBMaUkpenYqKXkxeDFlbyEuUWhNYlgpNllZeEcuJk4yaVp2KWpEZmwvWVlIIU1zMmxVMnR1S0M5N3Y2PjNSI043ZSpuL0NN''@;'; put 'put ''YUx8fE4ufVNVJSpRN3srOSFoKlAmZTZuZyFjaFVeNWpmb1h4VWVDMVM4UjZyZVlpOiVqMWBEbSNFU0Z2cSV3PEJwdDpKblUmb1lWIVIxYERfYFoydmFGU007PjY6dzM2WWEuI2xQL2okX2g4YDxqYlUxRGVIUz1bP2c+PWJKRD0haHxHbXZyIWU5Ll18JDdjTzNvP05hX0hxb25gLCMkcGk8bzoj''@;'; put 'put ''UzhFdWFwfCNKRlglZWYuKC4ibCxHUFslKXJuVzJ6OE8qPWh9b24xTmd4WD0sfFdnbFokQDspXXAzfShAMm9vSXk7dHQxMS46USNpTkVlUmcqbV1UIXslVEgyLC42S0tYNj0sdWwqZSE9aThIczhIWyt2KjYpbWo7Q0NQe0hsJlFmYWw4YEcocylBck03MS43LiF6YmU7XmsmUWxNWzovJVV0SVhj''@;'; put 'put ''N2dDOWohQjFtZXBuV21HUTcyUnJXdmMuLyVTfUEmWHM8SHMyM3tnZlNtPyZOZEVSZTZPZDhOR3Q8LH5RSXtMXk47MWA4ZW0zeS5qVitjMEUuNjxybjpRYS84MW86OG1WfUJkLiExbTNgXnZoeTx4eDZSdyw+QHM7bGJCTVEldSxQMVBGNjcxLm9BeHsxZiRSaiFaZyozWy5jfSJvLDp8OCkyd3BQ''@;'; put 'put ''VXk3JjIkYXEkcDgoJXdsLnFvW2ozem1KbmtdK3FebXUqTlAvcW4xSmR1VDUwUFs+cVY7RFZDaHVUUm1TbkprMjs5T1NrNDJ8XzAmfUp5PGsuX19GXlluXm1WLlZufG9iPislbiZxcDVeV2dxcGgxTjtHIzlpaFYmLEVzaWxPIyFvZiR3ZWlUPzxffSY4dUBYZE8zM3tBI05ySz1EYjlnVHt8Y3ZF''@;'; put 'put ''ISNIMk9rbjJlfSJnV2dWc2lsJmpzMkcjQlJEO1d9YVtae1E2TkltMmwyRE9AbCw6WDhsODJVSUZJSiw8QjtRNiUwXTx6JkUuOyM/ZWdSfFgyOCFCKyhIWE9WUVk2azIyRm1WSlpxXUNAYkxiQTxzaVIvPiJlTTBpPiYjI2VrcTluKitRIXRsUGVvdWxoNi8wLmwhekc4ZS5DUXR7am1ZaHFld1RV''@;'; put 'put ''OzNHNjJASDVMSDk+VUQuR1M4ZDEpLkdIOl83TSErLygjb2BJbStkOTklMiJ3Ul1NOzJmaT9VYmohMDV+ZlU7diUmLE9faFR3M246a2JHO0wkWW0sOlBfYHBNOz4mdUNMPHM4ZVs3OWM+TXIvMGJOPDtaKGwxSmtIcSZweSw4LFcxXm1BOTgyQjgzPWIzajZqPktbfDgyc0VQcmVpW3w4NHpGUyVl''@;'; put 'put ''U3NOVS9jVC4wXUZRLiMwJkczdkBMfCQjbDVvMis9SFA7OkE2bTNZWFtPTig4ZzdvSShmZmJvSms/QHEyPGxVPlF5KlBJcXttWWRyQGh7KV1iJCRiYTFtVk1bbV1oJWFraC48bEl5a1ZNW1ddSzN6b25WJiwmQFBhLFEhO19JeildODpVY15aVW0uczJ6b3E8Vmx4PGVoKj82JWlwLks/LCJsL1Fu''@;'; put 'put ''JC9JfkJxO15tYWJ+bDh7IlFPIT8lITchb2VRTClfQDk5WX1mL1Y8YyhwcDxqXT0rb1t0JHx5L011USRHO1E7NGZxMyUzaDZOO2tiMSZjPT98ei4+dH1oMS5FZ0l5eChOM2dYXWhMPE9zK29CXi5qfH1eO2FIZzgiPFpIMi9WV1BlS3wmPntdVj15YFkuQztmZEh2aTltODhgPnE8ezx8SlMuPzhF''@;'; put 'put ''WyExTzdUMW1uVjl7OD1GVyIjd1BGcng7YTlHOyNPWjtGbUwoV0tHdEJrZm1lUEtJLFFvVEQ+UlthKDhleCYhVUtoeDxyOjBmaFtRc0QqN29TPEh7MWxxMn0lQmVrVmZbMypGbXhmNjkyTWtWfCFOa1o4OC4oaSJqTSV5YGo/Q3IlLnZlKSM5LEJxX14hJXczPUZLaTdwYk5+bjYuWH12eEcxSW1K''@;'; put 'put ''KFQ7Wig9Nl96eTtEVmkuPDIoOWxQWm5Qaz13U3BxMDg2SHEkMj9AXzVYRj58QDIyLD5AczsxPGY6ek5KPCNwXWZ0aV5SRnJFR2FVaDdlaW9bZ2Y1cG4qZ0V2MjEyYUMueWBQR1MzODU9eVBXQHYyJGZOW298O2xkZEg8R2swMkJrbF44SV80QTxCVFVKLlA7b2U+eSVnSC9zL2UjLGliVVpxcCpQ''@;'; put 'put ''NzJpYD4wZS5DZW0zMVlZMypqR2RxKnV2P2VnW0h+ZyZ8MFRWOTlmOClgQWUqOz5VV0NwezI4MyNIZCRsZzNefUVxajgubSFnOGBoJk5ucTxrcXM6JTMwdno4TChZRUQ0OSZZayNLYH10VClscztdQF1neDA9UzRgTWVoa1RVNVk1MFE9VGw6OzlPaCwmc0leI2AiLHdwcV5RKj5IVl1yXjlgIix2''@;'; put 'put ''bGF4MmZQLnReImpDO2JKLFFqNk1bbEZmdClHNi52MnlwJmtRfmUuMUs8O3EkeGV1PyJqPD09U2xdNm06OGMsUypbZkQ7I2x+OC5wN2hSW2A/cnB6ezpRfFl9Izw2TyNOU3hVe298bUM7W0hzMTRocn4+PGJbKCtaM2xJL3FuPEVdTjtrMjQjbFBXZ1YuQCl2OSIkX2YjfEg5X20xXVUhIzIkdS8o''@;'; put 'put ''bip3NiZVNz5tYD09KmJocTkmQHVOOFM8aGtjW29qYjhdVVkzIWc8dzI9Sko5OmJbWjgmLl1sQ2txVjxrbio4UXdtQTlbXlVdUiNYJD5TUm0kSyxkRyMhaW8qRiNOaz5mYDxoO01yOjIveyhsLnE0NS8yJTZ4XUVyQ1B4TU02PGRWLjAyPF5teDFQaCwjbCsjOyVtMTkmSlQjOEc7LiNfXldGKiZ8''@;'; put 'put ''OHF9PjxzN1swajJXKGJ7Knpgd01UMV04UTJgcCokYTcyMGxdPXZOKT1yZUFoUC5KcmFwOjw7amszSTk/JVQ7VGx3Zk9fI3ZRMy5xOS5dZktuZ3A+ZDJvTTtzJCspVWF3Iz8lPV8qemRfSmZMZXNUM0tkLlRTOGRlMTpwe3chaF54JDpIUXptazJHXjJdLzhGQCw4ZWQ6UXptazJUMnI5ajUkLGgh''@;'; put 'put ''b1t+OEgpNVRGdyZ8V1FbbndQSTxhKCtTS15OOU5yQlhLcCUjRFY3OXE7ZyxnXUw7UWUpI2hyantsO3AkZX1CYmNeem1bPHc3cGU5JklwKHBfJjAyTjorOHFgPFFYNnJsSi47cSZpYntYcDBWSCMpOSEudjZiSmJVTXNubUZxS1tjbjtRem0hOGBQUGs4Y1t1N11DcGIsajJoPG5kO2pdPSRRcjY8''@;'; put 'put ''enloTD1VJG5tdWZgPCZxQmZ4I0JreC5aXk1lay46X3M3MS5JJiFIa2xPI3U5SGsrejRmKmdNZTZtN2FZcGs6d3BmVWdrWjhbKV9tI1VpLnttWjoybEQ+IzYlMn5TTGd3MyE2MGx1dm4mSTNLOHg1ISk9ZlIpe3ViW0hdNiplU2p7JCNzOy5eakZRZEg4eDw7Nml0JTx7VG0ye1JkLmd8PjwwZm5p''@;'; put 'put ''Y1tqbT88Vzh8bXNoZzNyMEI+JiFxJEVkYDZYUVFlJSZTfVR7ZDU8fHpsd3xIPVFyLjkvRjwjbTR7dzI9R3FsODpVfWw6OH0jUCUvZzBVX3IuI18mWjgjMnEzQm56aD5VOCUvMD18KGwwI2MxKWklJiFVQCVWJDtxSzw7Olc4OC5JJlFwIiQhaFF+WyNreWw7aj95JXtLeTxRckRYXThmJGM+bUol''@;'; put 'put ''XTRhITl4bFYuaVFNZGtWZTdHM2lwL0pzZClsTWVmYzdnM0tdPDJgdTAwPThvfW48MkZuO3AjJWhrLiNdZn46YVUyN3l4cj5iaFpUSiQlcFElOmd9RTtRMFR9bG9eI2BfNW9wPW9icGg6aS5QayYlam1ZaFpUWDZFVHFmOTljMXouajgpbV5GIXp5aDYpND1+Zjt7MjhSW2khfSVCZXpobHI0SGtW''@;'; put 'put ''NzlFKDYlPmRLPCojVyxSVWJVSCMoLnNsREM0NmUuTT1JPDNQUFNmNyFiTTtOcm4mRGVJSk05eDx8e0g9eC4jJT82PiMjaXomT20scUlbdjZ8e1tBMml6JCEuVW4qUFI8aGswZnlURFEiSnEwLDgqZ286VjxfX01UN1NZLlpUZ05GKlFyRUoyI3w4YGZ2JCxLI2AmIVc4fG18WVNwOlEkbE8zOiNU''@;'; put 'put ''aGw7YVUlYXxTPy5pKGE+UDM1bC5hOEpmWCVlIm4zMn05MjdCJmoue20kbC9lemVnJWdkay5aVFExVG03cGYlVWZoa1c4RmQuPSRhUik3I11WejdxO2h9Rl47ZVpUI0BhJXQkQVsuZjR2VFV2Szw7aX0qeGtWKFVuOFA9eWA9TndsdEByaGJ7cz09TkwzIzJCcVNQPigvUDU+dTl1ZU07LDhwb2Qk''@;'; put 'put ''QTo5Jl84e3dEZTEmQDs1QHAsbjJzJWVoMy5adDpJcmhnMyt3RUpuOGUuWmc5OVsreFRkZ3NyKD9qMm0xMV0rJXczTXIjMjEpKSZSOCZieiYqS2Vvei4yLnoyYzNIPUZtTCg1aE8jLix6Mj99RC5rLG4uVFQ9e1VtQGZJdiQsQmE5ZV1wM1NVbCxxLDIlM1QuMiN2Tj5AWFl7Jj06WW1XPT1fSjND''@;'; put 'put ''VDltOTtMKCZgbzp6PFt3RD49TkwzImM/Ozk5ZFtuLkhrayo8ZHpoVUN1OXY7ZnlfR3piMmBdNnwkYHNiLkpwP3RPI2U3SjpddEd0ejZLbnVUX3p2MThgQFtqM31CVVV2byQzUzNULjU+Wm4uKTxtKT53VWhbcUVNZDowdW9VXThvUTo0RFhyRFtZbSxOaisqQnRPeTZbTk9WW0BiXiw2fWg2TyIi''@;'; put 'put ''fWVBLjREb284ezdgflFiazdjPkcwLmRbKi8vVVZddDFlUHhUTD5RW1RTYXgpLENWMipSODJeM1BbaGlUPStHXkJfQjlDYjl7QTJPIzxbZWgrWXgmUj51c286eFB4aCgqXiEuMiMkQlAjNiVgViUrOFRbJmBiMHdUVzhxOnBlVl1yKGA8SFE/aUUyNmJjcSUseWJhM0hyVF0vQiwvYHM1PmEwKHEp''@;'; put 'put ''PipsTihweD5SZ3kpLGUlezhUW2FrU3A2RWJbN15MZXs/dlRgfTp8S2ZRZGBqWC5aVXFQPGdvW119UXBISjZeeCV8OCUsbX0wako9UEhIV34mQWVMJElaIk9RbEZiRWdyZSplWDosbCUwMmBjN3wmQl8lMnx9KzlSNHR7P0NVLHhVQ1AkNmNoWFNxOS5TX2xpPGxATy49XitzR2JpOGx9Oz00XVsr''@;'; put 'put ''RDlTXzI4S1czLlo+OkdHYmttTDRJVFJtaGY2I3lecipWbjFdTjRLVChVU2hbPCtwIWIyP2IufVNaU0lXT2IxOng/YWIqYD0sZSxAZk1pL2VYI31eLD0sJUBdWn0ufG9bTVhZO3hbIj1iXTBvK2dONCRsXXxvW34mSXBMPFguOjQyYDBoaFcuYGJrKyM2WX1uaSgmc1ckOjlRcjkvVSRHL2UsJDNB''@;'; put 'put ''NUg0KHNiaDhgTzQjQ0wuaG9wczdoUWtPVVh2WmxIcSoyL15mZDdtPiNSbi5TMFZuSzQhTWtLO1YlRFY8fGdeOCVtPElxNy5XOztbTjMkO0RiYl9DUGleRyhFfmIzUzE5T0NVcCVDMiFvR2RBflksY3srL0w4N2olaX1QJXtDUDA9JWglOHFmaC5QfVksWlpfcmFbWSw1VGdsaThaM0pSRD03QDhe''@;'; put 'put ''Q1A0aCNgeHNsJEtQQXFbKklyLiNEVng3JT9lOWw4YS4/c2EleyhrJmxmS1JEO3JsRndzNGRuJUhyMkNQeD5vOFo4JD98JkZQb08vI0NZdzlWdmlwVWxtWi9lOnxHczI1MGA1alB9cClGVHJScGpVNT4zZ2l5VV9yYnhwZkEpd0BySXl8Z0lMUiZAXSU+PVksISZYRkxzP3NUbSxxczpLOE49MGY9''@;'; put 'put ''NkRlVWxSW09yaF18bmI+OjlXb3hlXz1ockBQbDJ6JG1tX2FeaDspeD44UTQyLzQxb1ckTDk6P1hkKDRwUVYuVztlb0prOiM2cEw5PGVkfW05NHshfFdGbCZ2MCQzazIzU0pqSjgwb0prSVo7JXw4W103ZzJedGxLOiJnTnIxdS9xYnFSZlE4YmVDMiRQNzJuMm0zTnJfclYudTtdWWpeIyVdSV8h''@;'; put 'put ''JC59Zlk1OTd2XW86aiElLiQlVyQoak0lcCRKKFI4bV5NO3EkcGUzMHE7YiRwOFd9Vig/ZWZrMGZ3VFU7JTpVYl8wdEA3eEI+IzZIRTY7UlJ2dFZFc2dlNX5mJCNLUU5yN2M1Nm9wVHAiJG1wfiwlajQzcFhCKiFVIzN3NlM7SC83XzVjTzMxWWVkfXBISWQuK2pROUI+Tl97OHhhMGBue11faWhA''@;'; put 'put ''fipRXnYoaGB5YWwjSzAuaEtgYDVZLFNWXXJebTlAaWkzTztzPXFtZCRmYHY2Uzs+VWdiYDY0I0ojZGI9VDY2ZD1ddzd7eF0xLk5yeDB7b11mXSNwLHhdLzglMm0xM1NKbSZfOz19JmsyO0VDZjxrNG00MTNzeyh9fSlTSmZNNl9SN1M4aypiYTNBOnA6Qn1NTm4/bk1nKWw2bjNCOnlVS3BVXSFT''@;'; put 'put ''PE4/NjZiYTN5VUtwMDYiNXh7XnpgemB6ZDsiNXdbIlViOn1WXmVeRztOUGZtWF5lS3A2fWQzXnRMOHBlMWh9SF1lbWR6YmJpKWJodzwsRztqJSouK3gjT0Y0Il5QdmolKWJpezReQ2tBNCJeZnZqJSouJltVPTlndTNeJUplVDhrZWVwY1tQMzdvSmZwOlkoRiNzfSZJQHZJXnBNZylxYlV4TmIx''@;'; put 'put ''NmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2Iy''@;'; put 'put ''TmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyTmIxNmI6TmwwU2IyWUtyUjBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjE2YjpObDBTYjJOYjVTYjJOYmdGYF1l''@;'; put 'put ''W0BidDpObDBTTFdxM05iXXxzSXJXe3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8''@;'; put 'put ''KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3xBMEMwLGB1W0EvIjN9VntyW3wqYHVbQS8i''@;'; put 'put ''M31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0EvIjN9VntyW3wqYHVbQS8iM31We3JbfCpgdVtBLyIzfVZ7clt8KmB1W0Evd2A2JkwvIjN9VmVeVT17cnRESUhRT2djJDRqWCx1eERJSFFPZ2MkNGpYLHVgfEhIIWsucUo6fWZBM25gUS4vN2dWUVhhWk5PZ2MkNGpYLHV4RElIUU9nYyQ0algsdXhE''@;'; put 'put ''SUhRT2djJDRqWCx1eERJSFFPZ2MkNGpYLHV4RElIUU9nYyQ0algsdXhESUhRT2djJDRqWCx1eERJSFFPZ2MoIzpWLlhwY3d0JihbPnFuVnx3fixYZywsZ2R6fXUofFFNWU1zRFNlWzpae1RxNkJpXU1ySyZlaypEMTN9WWJQRkpmLEFsZlRlVzcrOihbPiNGflVQTFgjRShVa1tOJnx8N2w/TCle''@;'; put 'put ''Pmt5ekZGYD99LEtzdihYRkp3RSV8fmIrTnApZ1k7TzhjTXYxKW9gU0llN1k2JFAyYyV3b0d2eCtPL2RhaUl0aFk7TzJjMyIpSHEiWkQjKDdkUjVsSHlPImE4XyFjSHJXRV8xb0VCeTJCXkBuRSRaeX11bDp8dlc0QSRFQ2lBVDApeVdmNlBEIyh8L24kOSgsN3FZYEEqem5MeURySyksP0kyY3tz''@;'; put 'put ''Rl0uWjdzSjZQfDw5RCg3cykxdj55RlNdZl8qPnRQblhSYypCejFmRDNfSTBRU1toWX1iMTglWTZAUDhqUVB+TGJYT2Y5JW5CeDFWV2RCcW5hQzgoVUVBaUVIa0E2Rmh0QT99eGFWYmphK3JGSG92WjFaRWMvdmRNQitiRUBWMEkzRkJ5VmVFSENFLj9edCFobnJfKEd0IyI3Qi4kZFNfMChhQUlF''@;'; put 'put ''KHFCUk0zN3wzQWRbLD8yNyVGZipERSlzUHB0O0M/emRFT2svaERhPSx9QT1+MkRvKGRLcSIiRS5mS1NyLn5OLCMzKyMqKURgd0RCY0RLP2tIKUAwSVZFYEoqMDRTbmFlKX41bWhfUShuPWgpMF9Rc2NuKVR0NnlSOypiVUUkVU5DOHFUYSJBQVB8N3soZ1kuLmpuRl5LQyMoam4xdz9Cd1dXY0Vk''@;'; put 'put ''NSg9eSFyUGNRQVlESyJZMFlMVkAxNlcwZ2oicyg3fUEqRVY5PGFucXZEbE5WQj5+UXwxQ25fUXxmXz5JNH1RfGVuNnJWZWxCdl9sSW1Ca0FhRWFCN3M5cy5oZF85PmE/VnxkLHZEZD0xY2YoN3NWXSxNYjdifiUoJWFEYVFMYFYoQ0U2YDJ0YF1WUU88O3pFZkgwWUxjN2NrOCVpNSZ0QHcmcz1U''@;'; put 'put ''RXFfeil5KSp+dF1UNCxPUXFCfU9USjRkS0wvL19LYnB+OTdhWk42W0smeyIsdXNZY0kvQCNRZFN+fXdpKEdsayVde1BZM35wWlJ8ciNUaz5zcFoxeTYpOW0pXzIod35VInl5YiVbS3I/dkl3c08ieXl1WXpraXxENmooaEtbWCUuZG0jfTJuUShuS24xR3RIbyVfaVg/cyNVVTRhXW9GJV9DYmRz''@;'; put 'put ''JVtlV0hITS8lX1siZH4+ND45aXc3TSF7c3h0czZXMXlzTy5WMClfUl98W2l4Rmw0OW12fi8/aiglNXw0MWBodWlXc0VhK19rWlp+MzxFQ3tbK3YqMlUoLG1eZDVNNGZ7P2VUQl8xPjFDdX56cyJmWzgzIklYSF9VQEAkcER6X0s/REFzKT8leCFgZ19fYUVBWWYpfG1LQyp9UVsrM0VMPWNZbVZh''@;'; put 'put ''LF5OLkw6d0E3d3xlS0IhfDN1N1ArMUlPKnlvPiEqTl1vMzVrSlVoIUNrJklBZ1JCNlhrMFUoRCRkJSpyN11OTCZMUF1IL3ciTmV0XklpZ2xKZU8pKmJ7MTRZRFJYNCNyYHRVN1hbO05IPVImJGpSUXpnSWFdeCEpPUcuTnQhMVMsVVhCKFNNLEhYeDh0WDc6Om9keVo8b3FuJGkpT3YuQX06d0V3''@;'; put 'put ''UzJSWCZSfDpGakF5eEFuWGdSajB6d30kfUV9TCxFVzooIz5kT0IoQmR4ITFTLFZVaEwyQkwweTFucCpWSDM4Oi93Ik5SUnIqPHRYQiRjUnkhPVZbIlEvdyJOWGYoVCVGRVU7bkt1bnA4QCl0X2ZQUH4zV3UrNTUmcHQzKCF0MUo5Y3hVemBxJVU/bCoiR2IvfmBkSSJGPXlKL3ZXKzwlOjlgc2k+''@;'; put 'put ''R1FUaHpze29PVW0sPi8vNFoseWh7T0tHKSYleC89LC49RzJeRXNJckhUfGh0aW9aREVGUy9bUU1wS2JEWno2MiElTkdOJGx1UmoibFkuaGBAW21hbT1dbUVEemNdKG1rZitfaC89LGo8M0x1aFJHJSUiYGs8Q0ppUSY3dENpYnw/NEFnUnVqWGtBcypZdEI3U2Yhe0EzN3N2eG5IXnFJbSpBMENS''@;'; put 'put ''ImBDSkl6X3FqXl9DWGE8VCx8WipYLzBIImJKWEAvTGs4WThqejZfR2BoS35fV21Pc0tuI3JgUHUkTXxdfnw/TVY4fXZYPH1tblhIIkldcDFjSlJKdWgpL1csc2VheFNlVXBAUT5Qb1NiQmBWRCE/PkNpVEJGfDNrZztxNXNWb00xOmwqdTpfayFXbUxnR2ZMaTIiSk10MSZhRzhpKiw0OzNjZXtK''@;'; put 'put ''a0dIRFMxS21uXi9gbThZS3RNR2RmaTVuXV4rIjR0aSJZPGxibm55UzpdZnBzJDhlNGsjcmAoUzdYWzt7b2NPJXU4RClXUThRcDtkI09iQyFrYEA0Qm1aWztSSFhqej1gRWZxJHo+a2VreDdLRDNIImJMVn1bP1UiNF81VlpbdiRuY102N2o5Lih2NSExdEcmR3VoWkd3SkJPc2h1ek19NDg/WHJm''@;'; put 'put ''biNyYDp0cjRqTW5qWCtnPn18biFwaTNIImJIWGAvenNQIyp8OGk0I0R6e1FWVFNUUDglQFhQfjNePy81TX4xSjF2IWRmLD86U1sxSkFfKjg/cjN4YVhfSXRIfDlVMTF2JlNqblJBIXRvbiRpdXc0S2YhSGY6PjghZD9PV1QrODx0UDk/aWVgVnBfIlZZdTI0Pk1+YGVLVigmanBPOndBN3ozImA8''@;'; put 'put ''TEYuNWojUC8oYl1aaW5IQFc/diRpKU9dYUFzcVpFRTtQd0BCOn02WDE1N3FPLylUUH4zZlpAL2l2YE5+MksiRUt6Jn1YKzROVG8uPGFrVCFac0o2SShZOkNXbWw9dyk1XUZsI2ZVLFhTQihRcXtJTTc/TV8+Pzh+On4iaV5IQkhTImBrKHBhT1c1NG1IcExSezhJWWF+MGU6fmBrKEtWPDhoLC5j''@;'; put 'put ''Wnt7LF9EZnRmIjRqcUhBe2sod3UzVz9tcyNvTm1NTixtVS9baWVdT1ZdLzVAPTBNYCx+TyFTT3BqcVpkL21QdDRqJVMiYCZKYXZ6Vyg0KTQlITQlNWBrI2laPDgvZF9HcVopJXl0fGk7KX5bWDU3dC5oXXFDbyZhfEtvWls7IWRqejVAc2BBfVV5IjFeViosbE89UlZjVnBUfDE8enFmK1lRP0Uk''@;'; put 'put ''ND1rc0t1Q2Jpe3AsQlQmMWRnME1vNkFWYW5sfFs/VWReaTUsSyJESmIrUjJRbXgidDNAaDQhMVNvMkU3SEA+fSI7Rn1SUHBPPkRHYUcyWzdBVyxnWCVXV3dIZFJSW01VM2oqPE47dD1pVGwsayJ5VCxOeFNUPXRaUkA7eE9iJEw6KHdrNXBOakx3SSo1NXFNPzRIe0NjSWg0alNBc0taa0dAZVFP''@;'; put 'put ''IXh1X0lMM2xMOmhZJVQvZTlZS15lL0c1Qz5ybDhyfk1dYWFrMkU6I0k0eys7N0tgTHhyclZqcEkhW2drejljMC5mK3U4aEI/KSNOIyExMGkkR3VobEdNd350L1dqe3pRfFQmLmxMQDIhMTBpM3hlR15kS21CWSNiOC5nUm01XnFrTXlFOzFoeCpIbFk2QndRYiJheURMPGtuNmIxN1hbOz41aDFP''@;'; put 'put ''QiU0Sj1ELkNddCRjOy4keXckaURsdnVBczZaRVkuUlZiWUlKS203TGtnez1sUUYzN1c2Rnp+IylnLmwyb0o3MnFac0xMW345LzxhQFA6KmZYRmchVUlVOmtMT2w4JVZSRztvY3FhazxBWz5xTGkibkVFfGcpYlBqKVVrbjYyME5COWo2NGAyTnI3U1pgM3hVMGk2cW44NDRZcTd1VEFNKWx0YE8u''@;'; put 'put ''dW5aXit1TnVwTkEjKTpBYiU0N2NHO0FZe14lTm1lXU9ad0pIe0RpJHxifldNXzNafEx0aUtZaHp+I1pSenhKTzk8bUU8PGkmRyNGLlgwM1I4LDcoRyU+RzBPWVVyPEAuWEhuIjY4L2RzR0AsPWA9dW4yKHYucV8qXW8ySzUqNU96UTl+WmRlJkJBQipla2tpJVRGO0FMdGtPK2EmZmQuTzJ1KTps''@;'; put 'put ''KkZkK2sheVQsXSswZDg8S1NkQDpKWnAzNHVHWkM5Yz9aemcyKnEueH0qejlOdXRaamIqaFpITTttW0ZPRTdrfWk8OTlmNDcuTV95c3taUmVjPn1ENXdhKlRIPj9MZTZyUnspKnF3TF4sUEErMktRQ3E/bWBoVkdaalglNDhCVDdsSXxTcStOXWJmbysvPGFYS18/PGc7RmpaJVhITWpQQnkiInhX''@;'; put 'put ''c00pJHxCdkRwZmppXlR2M29SSnQiSDtVJVdBXXcheylYREJzTy92VSRsbi8kWy53NGp8a3NjM3AsLkJOL0I2YXViNjRyIyVNZCpSejJPemBgNT0sWmcpWklTbmFgMiJgN09uIWxGZnRsNEAyIlkvXTQuamU3anoxMUZXNiNVJGZTXmczTWNZa3xQTlBxMFI6NGd3Q1FNZCNnKTl7fCNEUW9UMGJP''@;'; put 'put ''RGNeZ0VqYikoemI3bHVeenZXY1ZjRFI/Mjh9TikxKUp4WiZSIz51VHZFa2dSN3VSSiJsPHU+Pm4yJiJ2cl9KZys0dyF5L0ZLVERFOD1QRFgpd3J6Yyh0azs9VGMqcSJhaXBMKHkhUl5fMXB8Kj9hI0d1aDFHbSxoKlJpe0ZJdUJANDNPJTgpam4kaTl8aVNeUmFJbEpFZ0BpY0ldLGpiYnxYWndv''@;'; put 'put ''bndZcUthdlpnVlRbW0FCP2dJWjNHSiU/Ik0hKDhFVj40PHszdlNjLjxhWEtodyo5Y0Q5allBUmNAKTZhOSZxZDJqNm1IMCExdVUyRXVoTWQ2UzdhNGt0KXVCbThNaEcwcFJ3KDxheUo7eSo5Y0RMeVhJMUc8NixlYlZsKn5vYUMmPH1HMVpCJEw7YGBBR20mKHIuKFZEK3QuRVEzYX02UEBzUyVj''@;'; put 'put ''K0Jea0Iic0MldlU9b01Ae0lFJXZVdz0kP0BwbXx9Zz1WdSRxeT9Fa2crYT1JMWNPayR+TyxwR3g6RnsmLHVaaihDTHNXOmclXyFEc35CYVhgd2QvNzAuZDJZXW5VJFQxIVZ+aXxzLD5za3koaHt+cH4weiZzW0ZXTHt+MFV5T1EhSVIxZ25YKnNKLjtjVH53JW4oW3hWZV9jJmFvSCpjbFBxVHNH''@;'; put 'put ''SHAxX0JNZWwkK1N6U1F7b11tUjU7NENOVkBaT01wQ3UkfSZpKToqfVFaIld8UnZdKnYjeVs0QVJoWiZKZGthUEY7TCNgcFNhPW9aPDQkfj9IcCJ0Nyt0WmF1XVJaSj1ub2tgWXRmVV8iTzFIdnlPXSpmIlJ1XWZsMHYmfCRnUnAzTTd3PUZXJCFjQWBrI10rV0hHYzl1LmRtdSRgfXgmSnp1RFRj''@;'; put 'put ''YjY6aiNkO2FHKk0ze2ZdL0gpYVskRlFxJXRJOG5uLGBVJkp+aTo3YXdKJFI7UzlXJV9FLD5UcD1pIkNAc1FgbjlwYFUpZCZYXmJdZmxMaXxod3Reb2ZqPG57OTtXXW0+Uzt5LmAveEVzPnVqYHdFd2c6PSxUblVmVCVjKWdlfnZ6dGtsMjs9WFRFQTg2eygrWzlib01OLCJNU3BBWnFDX0EsWDMl''@;'; put 'put ''WkU3UFU6bUhXNzUrbWgoX1dLIS84TE0heSZrRCQlO1NSbUx6VTI+RVZGTDdAVC9pVXA+UFdDPSo5ZkY2bTN7XjhNYl1wVGFFYXZAT2oxNEBkN3ZpYWRsJT94L3dfUWI3OEZLRlJ6ZHBtMDRlcFRPJHkkeFVPR3VGYHE0bTdLSWZzUnt4IXlSMGZ6KCNMa2lkLjVjNn1pWjQvd0ZvWDc6c3wsIms4''@;'; put 'put ''eUglMyVDZGFjJUZbaTAvQXwvUEhJfXcmSmBhXnpOMHMvM3lERXE5W1UkNFFxe2JSVCJCP289NkwwUHZeVyE0OVQvISF0dU9mO1k/Q0RqZlBmMWZoXyFTNjFHUlhiXiFNYlMzWTQoTEx9Zl9UJGZCQltLUVRMUFc3Yl5rSH5hNUpVKXdQKVlPVk9dSyMoRUhoXShFJS5FVjRCKGdgRVdNa3xtRzI3''@;'; put 'put ''JkguVS98Oi9AWzw4TiZXOCZnK3NZWlE3Yl5TJHxEdXZseklsJjduLiNNJDFeKyg9ZkEwVXA6RkFLN2g2dk19YG1oLlkuajlKM2RAb0A6fSo2PWFmc2NgZ1hmMnw9bjJ6SX5OQWFOLExXaTF3O1UmV3FhdEF4flMufkNxd11EInI8UD46TUxbek59aypMLC8yR3okO00+Im1FW2hCZV15LHJudUJN''@;'; put 'put ''Yj1nPlcjPGJPV2QsOiF6VENuREJOfTp2SztSOVkiKmNZZ25UZno/NTtzYyZQZ1k8JCNvQjkjaHFmW0BObVFdalorSzR3SDA9WWhfbGpbNGxfb1hAcyxkcE9BXWBJK3MqQGVCIXpLVkw5V0V7eSV4aF4kPn5XWUV2WFU0ZnIrYSQudSFiJnh+WWFKe1R5ckslZnpQVWdqInZxaF9De1l6TUEhNSZF''@;'; put 'put ''T1opcnFZOmw+OWFPaUMsIyowVEIqaWZqIjkxNG1JXW9SUlVAfDd5THx0KzVCIWZEayh1ej9TNU9wdDJvPiskdTQsR2lGfjx6QDdVVX53bSNIWlRqfHFNK099c04xQj1xPi44RV9bOmxsZF9nPVEpZChdfVF7b1N8YzRQR0hPWmNVeCZdXUNddywvfkw/Mkd3MTMmN0VoIllvdC9vZzpdeFdxOCJk''@;'; put 'put ''d3o1UXFleFpCaC9ZJC5KN3NNTTxSTmZKJntxX2BMbi5wT3x5OmxjfCEkN0VoOklSWU52Q14jRlQsPypLS3djSiZrZz44fVc5JXY1bzVEP1UsbHtId2Q0cDZ4cW9wW0FBKWdEZk1RfURZPjEvPndQKEopZz9bQ3hFbHl+aEQjX3BCL2tiWXoiWkR4eGM0en5tdzlCK3BKa0tYKk5JfUw1cm1rKCkh''@;'; put 'put ''I0coTkNbNENLNXpVeipqZitzdWprRyYqekptYC5vZFEkY202eH54RDJ4O0tZWTQsdXZvaT4pTlFHfllIJEU/RDxvNjp9LmVdXmRVSCtzaFl2cGQqc3VbbyE8anY0R1hiYDoiZnFkTnBfPFQ1SjA3NHNpOyMiOi9pcEF8RjMyI1lgZU9pQyRBWiE4Vzt7RTVfZ2ZCSCtGblpbKFt7VlpoX2ZWK0pX''@;'; put 'put ''QTpkMlQ/aDFLSy9bMCtzZjY8TmhqcEI2XnFMOE81TzcmeX5YeDVTTTNqaVFJc0J+RSpCP0dXN3hLVFE5YXlRRF1mLz5HbUk1P1J7fGdTVUxqKkJpU1ZKcHg/OFF6ZHtjaEMsJkRmLF1vYHVYQipocWE4XWg6eixvckxaTjUzITY1P2QkVCxzNzZeJkRiQnBzJiJFMHwjR0J+K3N8WW5ad25Fd3Mr''@;'; put 'put ''WjVCWGlsOV0jQHZEZmR3fE5IVm8xQmhTcVhPe2tweDclOjx1dCVjP3hNOWBjTVhjcjhwYS4kX1FicDhOcnVIaVhLM2N+XVVKcGhnTDtvJDUrPnpYaTtrNyZIYU90YyFHeEg6eCJbbU87REwmI2h7fFhKUmJ+NG5GcUxtJXcucUlGflM1TjJeWFRvOj1lN3JZQVNbQiY3YnMjUDZhIi4lJSFyazZj''@;'; put 'put ''TCVRbTdfeHFPKVc8T2k6I3lRdF5UNDQ3JSNoK2Z5VGJmdlpqPj96RmhxeT95LHNvRHFneFZpS1BpMXhxKkhpKnY/eDVgIU9YfEt5b0MxKD1vRz1YN2k3PjYiW2xSKWt9digzKU0vRDo6UjBgSGZSSDxCWUE5N0Z8eSZUdzhXZiJTeUA6eSlZXyM/KE82RXszJUFEZFpqc0I3Wz1GWFdHMChtOFdw''@;'; put 'put ''VkslWnVWbkx5d3VfQkR4UWdlIztpeERYMWRSbyUve0YpfEl+T2M1Y3QhWUpgUDhJRUhrTD9veitKTz81P3gpQHhCUFliSyJ4KVc5Wi5wbHg/eEl1ZDgvPyxIe0Z4cTw0XTEyKT94IVYsdk1BcVoxdFB6Mz8jKyFjIm5UUUJadXE/Yn1VMDA1WFs1ank/eDY0aFBvXWRDN0dKekw/bnYzel1tcEpi''@;'; put 'put ''LyZKfk9lSjI1JFJlZkQ/cFReQnRDOiUuYjpYKUMzezMoPU1dbTE9L1QqSHxgeUAwQyU6L1JFbmBZMStaUl5bL1k3RyN0Zjw1Wz8hP3gvdzZkalo9OTooYFEuWXVHV0twVDZZMkJHT1JYdi9HPi5MT294Mi46UUhUeik0JlF6cF4pRCFuTlZPO1d7KmpPYyouL2o6QGZ0SjFNJnh1ZXNSPWgkT3pI''@;'; put 'put ''eC8/eVpPUzkwMFN0P3g4Ul1QS3B7RG5wUkA1W1Q/fSw/eFhgQC4mNzBOZjJBYmlgTnZScHBUPUR9b28sSzFReyVRS0FRK09vOz0uUV0lc04rMU8wZHh6RDk6UEw0XVUydDxSIXs1S3dqL0NGXUJHcUpmdCFuU2h0WXlGdFQ/ME9mOnpEUzo/eERqSTkyIV1XbG8rTkxmcEBSMnBUQ2NHX1p0TG16''@;'; put 'put ''QCpVXlcvb09ZNiVjdltoaTliIz9tQmc1Kis+NGc/OilyZ01bP1s+YD1ZdG1IMl9ZTGQ3P2s0ajohVmNgdjgrYXhbdCRffmZEby96L2R7Lko6TGs9SzRLV0pqQyY7SUloISxFIndMfUpeNyNeY0N7JCN1cSJqWGNKTTdiX1ElW0xiOGxQdnVXb0JKdGBiRyspU0shdm02OG97OGxvO2UjS3xOamQw''@;'; put 'put ''KDo9SSNlWlFeLClWYWkvTkZ9eU5RU0hKcnY/JUE8Q2wrWVJmTFR8alc5MXFWYG5qPytUZEpQNHE/bmxMKDBTdj5DSWpRKyxOKkl6U3Qjb3gjK3haRmI2fWZ8TG98KSJ0U3VNa2pUeD1KYGcrbDR9PGlMS1pUQjc7alR4PXhkbjRNbzZ6L3p6MG1TX1AyTypCQk0jSUpHflFxPlF3JlplWD94KkZ0''@;'; put 'put ''PDlafEA7SVRqOnlZWEBDOkJtaEtvNWlSP3F6KCJdMmNVU1dUQ1FqbytodH41RnAiWDJRYExFcTlsYTl0Om9qNnkpSXswa0UxUi9NNFhSdkA4aWwrIT15QHpKSUphbzhHNl9hUUBzTGJPcjZqNylJcX0iKzREM08wUWNlcW0hIkp3TUJ1NFgzPTEudHJ5ejMjTWcqe1hzYVBYayR3ZyFNIXpJdXFH''@;'; put 'put ''fEdXa2ZHdD9XemBXKEIoaV5OKlp4OGtab3RLRC5LfEclZG18I3l8TT9BfVR8R14sbHFOZ0A4Rm4iYDsxUW8vMzpXWXkxOV1hJE0wK3ZhdGJVZS9MaUBhby95KExXUG95PiF6YkxhUndqK2t6OFpZQ0VQflJxZEB5RnUrNl52W1dXQW9lQHo8I3ZURjNnQDhJa1JJaV1aNlFlUnxCISttWmB2MEJR''@;'; put 'put ''S3ppd09Yd2FhX3VYUHBdRzMrK3tMaVg6MCRFY1hXSEZVLzM3THhwOEl4ejJhdXdZMDImY1kyezxNc2pEPDRQTzAxZHBEL1JMRGRvVHZGVUk6WW9walR3bENfUFNnVChseE1VVGoocTdkVkZRK3o5NDNERiNQWlJxTFtZVUc9MV0mPUg7VmhEKCtsK3dXV0FBYkZNXlYlRHBoKEJhdDgmTiUhITpN''@;'; put 'put ''Q0J+US5ESG4iW3FHOytnWmtDSltza1ZIaXEzaX5aPWJzR3kyWXU9MTV8L1o8K21NQmFsTkJ3KkZnPC5JJitpTmNaSSgjTHxhQzZbTW0xQDg9ZGQpRHoqWjNqK1dIMmdFU3B2YlRAWVZNYnomcT55Z3pAW00jWSNPVUQoN21mO1psTjYxdWlLK1N5VXZ+a3F4JlIlUn1NajB7ekVNak8qTSEhZXgp''@;'; put 'put ''TSFpbE5Cd1RMS3UuSSxuYTBEVztPZFVCWVBlRU0yWGg8TmAjeVFgI3khdHg1O2ppd14sZzx6P0hYakZDRmNpU0NkZiZSaVY/Ty5DO0tgM3A9NHFaamoqLHRyTHhZT20xfClSa0BqPCYhWkAmZE5gTV1rc1s1ZlZ3YlFtVUNaViMhLk0/TUxhaEQmWkxhMVYkYjUzQXNDeTk1Sk9wTXhZOG4+TSUh''@;'; put 'put ''eXphYXhYQ1FMcGpHdXp1TkNiREp8UW00fkovO3ZiKCo6MSYhcisqTHdGaVZ1eCVkNDhgJDlpT05UWTpFUFomX19NdFlyS2hEaDxpR3Y/cHQ+ajVPM01uUUBLfDN3LnlnXzFLVVJAUFhiQkBtT20wfGNAVHpyWSUzcjBRdnssaEUjSVdvOCtBeHtaLzNXU1NDRjNQYDMrVU1sMDpIMkRDUSJZL31K''@;'; put 'put ''b3IrK2AjUChpTCpHJTJnNHF2ejNNQmFwcjBnWGxPJWtmOD9ZdyNNbE0qPHdnX1Y+NXArKU1NZFVhZH15cVhLP3B3Z00lcyshSXpnK2pJZVRefClQTFNJfXglJTduUF45TXVMQE5wUXlnUFBwZ2haXkxjTmJ3Tk4lamVlRTZmKmpYMmNUN2tjMjBDeVY6PGNoal5XS3dOTndtJSo7MT1JP19BKmd4''@;'; put 'put ''U1h+UHhPcGE5VUNAIThpemlqaG87TTtZQXlXOnI3R2FCWHx4MiZUZiopTCp9LyN5cE1HUF5TMGYvJS99RixKWEZ2byFhby4/ISooKm11OFpoM1VJYFUoXiQkfTVmMDx6VTFVSW9lRkUrQ3RmPF1eLD5jaEB9eVk3REwmVkwqOTV+eSR1O3p1Q0lVMVJHTmM/KnNSKE9tPV9FKk96T0NZVF1hLzFy''@;'; put 'put ''emFMS1hYQlpbL31sKy95LkxSSFc6Ill5PU1vSU42Pzo9ODRNYSxtSCU8K2FjdVlVYUZnKlo6YmYsVno/ZmlPdTU3fDlaWHp0MG8xNTUmR1REXzVXVlJFOVV6YSheenwleX53XUwueVpOJX5QXiFJMmlndz9XbldddFRMMnBkPDpfQSopRCFNa0BbTCx1QkpsY0xsRCtDKyJJPyZTajBMR1hTTS93''@;'; put 'put ''WltfLD9iTkd4T1FKXkl4T1N6QiVDaW4sODhtK1l6eVpzZTBHdnZbVlskemkkKkpNOnZxV2JhP2RMVXN6ek06YnxkXU0xUVo5ekBMT1B7cFIwZiJJISolciFaSGFZeXtDPSN+QGBjLitSTj0+alNOZl52P1cueVN5Lkx9RX47aUAieVpNRHhJUXg5Um9UMCJMa1pdZ19jZHhgJH5qQlpZK21YV0tT''@;'; put 'put ''aiUqND8yajwrUlouXlQ+JFIrUnxNJExzSEI6P01dK0JYeXc4UWcyOVBoaj1Nak1wUTc/cz0oISN5XndpYjRhcVlEM3Q3bGp2KyF6THpGPV9hOHd1Qyw2X2Nteio1S3V4ViwrQ2FoTmViInc2SU5bY1hfYXZqbkBbeXVYcFFOLFFvST5Zd0QsY3FxST54dVVvTyg1MkdGSyhybSt0d3NaSCsmRyw2''@;'; put 'put ''RDMrX2FPLGs6OSZHQ3AxPWlacSptYCEhbysoWllhKEJ9eWliT0EpUH5ndCVeLCFSKitEMGR0PEJqfE8ldXwzPyt6YUxrZHdVSjt9QEolJFIqK1t6OXQ1fDt9RXNtfi99KCE9K1EyYiZzei41cUx1WCs1QEd7S0tVR04yeml6aHhjfU5wKVBrQFFqcUx8TWVCSFQ8LG0rV3cyWjdLN0syISh5ckdl''@;'; put 'put ''WCJvK3UmK1BjOEMuZVUwNTE5KHR4dXl9ZGJyRkdzWCMvNzssckdhMmp+Kz1YY0MuZWtFMXxkQFd6UE9QYyJOZ0Qpejxjcz9EekhPY0JrSy8lUF42UmhqIWo1TyU1MExvWns0Y31XMEIse00heiJ5VTQvNVpaJCNFZ2Bjb3oxNCtDb2pjWC5yPmFdTTl6WixXTS8yZzBrWXIqfGpGTlt5WH1JbSZS''@;'; put 'put ''cHptdW0mXS9yKy9MdmVKOTFWPlIxSHZ2ODhXamljLDZDOlZ2UF4yfHN8Z3cye3FOIzgzIWgweEw9YT5JdSZeLHtrNnxaakp6KVgrST1JLiVEeXM9VGYpIUxLVnY6SVFqSXpGa1dSMkxBWFc0MFkmQCg3UUBPYSpiQ012ZStFM3E2Ul5NNjEwdz9QXiZTXkBJaVI0eiNhbGI1SCZWbnguSWhAW1pU''@;'; put 'put ''dHlnYC9EM1lAI01wN3dWJVl7L1hveUA5Kml4KklUfTVSLnk+TXVid0dNeVQoe1tVal55akxdYi8zKkY0PjtyTzxWbyM/IyowTG1iSUsyej9IZ3tyI2ZmWWBvX0leWzFXb3hAeDB4TTVhNWJsY1BeMXFwel96ZzEhU0RDemlES0pgb0w6TmhmIy9AODo0N1ZOaGc8Y2p7eTlZYTlTeUs0akssVXpw''@;'; put 'put ''LCwjK0h6ZE8qT01KVVJGaipsbGoiYF42SGp5LF16UElIYUFzKDdoTmx1Mj9KYUh4Jk8pZlFvXWIxTilMWlFPPkUzalpMYV9haGozQnJ6ajRLTUUybWFEVFA8cno3ejxJJX5MKnF6YmpAWl9hNm94R2RHamR5Z3FHUzBEdXNLfmtuImpdPjFKLHpPJDFqTE5JbEBeTk5hbnRmL20yN2x4elAwZXpw''@;'; put 'put ''aC9yXlZSb1UwaDQ0RTQsQHRISDlrZ1dRV0tvWWpnTC5kUHhSUis2RVViIVlhPnRGMzFGdiYsXjNSMGkoYzhhb2VXJX1rPUlQJVElTU5mb2Ard1drYVdJSkwhOCQhI1JETls+c25jeSxta3FAXzN6I3lDZSRVSkxnZjNxPCsuK2FAaitddkRDKENtfklUa0BdM2VPWSglfkhUamowejFkc3VGVlZ2''@;'; put 'put ''bnpYMCtNN1E5VVdnclQwajk0LHhxT0QsT04oTVtJQn1iXTtsdiZfQDcxcXord2FObFQ+NDRndiZbVnJGLHI0STVqPDMuTVVQdiYvMWlaYHZQZV9LQVc/ZFJLY2YqfXNnVXdzdU1nfkpra3xUWX0wUClfP3lCeHFIM0VsTDBZNG8sUCRDLl8zO1BHNFlIViV2e21VXytVcD12MTY/dioud01WKlRq''@;'; put 'put ''UkUqTUd2YyF3e21LSWZ4JDFdbnRMZ0xmRlREZ3MkTX5ffF9NP00pTHQlUkBpd2tNJG0yL2J8MnFxO3lGQnxFWUs8KkBhViUqMWkkR2hWcXlfS1dmITFMdllQK1dxYmRFVjdKO1QpY2I/Li57SkFGOTVBKiUqZj9YdF5DIWdGRlZVeXsxUFZqRmlCKUN7InxiKl13I0FEWUk4S0suLjwsKW53KDVC''@;'; put 'put ''RWRiVGdJd1EzclghQipBeDpYR3dZZ3JgMThYUi4/VXdHajQqRWA0TE5Na3UuUVVrVUV2LlBmNj9edkBMTDUiYVFXcT1rWnZ0dygpW2kjT1dXcW1zO25GaTF0VkNXXkVIVEVaYmkkKG1bMlJXKFReSjB4a2sxJWo2bFhrT05ANUBPaG15UjZZVk9GNFgzdG5Qb05XUG5jaCsmTW5jfCkmejUwVE94''@;'; put 'put ''SGt2OWwhaiwhbk8kISx5PkdaYXkhYndRTkVlblBnV104SWVnJC5yMm1nJEpASnp0WUcuI2IoN3ViMnFMYGR5aDxTY21MV1BoYXkhSGpedzBwaisxKGhAU1YydH04cW0qVlArY3lDbCl0QXMoN3BeezFtITooLEdAeGBsTTtyTnN3JVNSYFlFVypQTzJqUCx9VzJBJkkrTXkrMFckQzdWYlZRam1M''@;'; put 'put ''eUwrSTdWUUNXanwpMlgzdG5Palk+NEY9a2N3bSQ4ZGZyQGdMM014SDRSZzwoMzlOQyxhTlExOGc2b0UpTVUxanNMZCRVakI/SFhvYUElKXlsNDxyX2ZAP2F3b05YODchV2o5QEZ5SjdpO2k8Siw/Kyg1WTxQT29OOStTY0BhdVJrdmJWZ2p8TVFbVkBzTnthWzFebk8qb1hxcVAscnRQeE9lbmhy''@;'; put 'put ''SnBydEpKby95Y3o1SnhKVjl5QCg/K3gqdzRNM014SFdaRmJIUFArNGVQbXhWcFpWVHxHSiQ5OCghc3oyYGVDK0VoPGsrW3ZNTllUSiQ5OFRtKyteWldZXk5RbWA2KVcldnBKUCtjeTNLKH1PZW5oJkV6eU1OeEguUUdLLyEjUlY5bHw2WEkwQ1I6ckdLQUw2KDZMQWI6Y0Q6I1lTTCMpRFV8RSxZ''@;'; put 'put ''V0ZhdlRGYXZSRi4qQCkxImtpOG5taUU/LCk6NG1XRXsrcmsybGt0TnwrOT97c0dTc0d+W057WFFTTCJ8NXlhP1thVStifV53JnBHQyp6MlNbL29+RGdQTHFYKlk/MSxtPDZiSGMrPXlkUkBzd2tLWj8xLG1FS2lGXWpMJTV3QVdaV1FNSGJjViFmZWhEZihESG13T1VPY0ZWcENCZ2NXQE8qXjFp''@;'; put 'put ''bFVLKnNPNFF5TG42YWtFczg3YSZSKjp8WDVROE9fPHJwJnMidUF0XntfMjF0UHIiYVBkRTYmI2FBKnouZEBjaEtjKlZgQG1obDhzSTgwUmM3OmkiazV3QVdAdGg2fiomSHRuM2N7T2o4Ql9RTUhhMnVNS0hYJklxYV9Ya0E5RixYd1MuQVhDbDtuZiF5W3dLQzdEV350YUFWYCZheSYuI0pBcUc8''@;'; put 'put ''LnJOVixgekhRX3ZhYzUwYjJmUiMoSH5SYmFOMDZNQ01HbDVMVUsiNHhXLik/bzZDXz5fRVEhL0kvTFEvYnZWa3A7ZC5pZTtbI3laRXhobmBTSXwkXiM1RXROWnc9NV9KfXgiKk5oPkBfVm5SQCleVmFFQnkxKUVNOGxgUkxhe0wkLHpwKUhkP11+OSZUOSNHcyYyK0ldN0l8QjFETDxBTFhpJGBz''@;'; put 'put ''c1hMbV1MJmE0bSUjI2xCfT47QSU/VTpBJF41M0J5MkBpS1VIbXRWK0s+RD85TTdGfkBEPykqSH02ZXl7IV5RW3RLN3J0T1AwSzV8elVXO0ZRbFJHM1Y5ezZmRHpVeHttOUt+Kl8hfkQ2NUEyUUx+ck5aJHFFPFJbSSphbH46cCl6fEZBbDhqYmAuYXY2PXdEI11uZm1EUE0qSEV1NE8zIXF2bmdk''@;'; put 'put ''NHFoODc5LHBoODwkR3N+RSx3OEtiU25kenF+IWBCWS9bREFpcz9dRmhYbEYzO3ApJThtNDdkezlYclRfXzd+O2M9MENnNDdkezlFSkEpcEladFhDaUxCOG5edzNpPj48OE5ESnNBWlRYYkYpZlo6eDgyQTE5TGosSyVSUEd1QWZLJDpBZlpVUHBHZCphdTtoYEJKUkUsYms3KTw+Y2RaTUFRN3lT''@;'; put 'put ''byhDLiFoRFI4eFd8T3RIe0dlY2hyKSkkTDFBPS5+MTU1U3pIVnZVZ2teU2tJUiMmXTNufEIkLkJqJkJhOC5QOXUuUEQ8NiMoQGQ9aG9ONjI1dGRPenhdSVYqYmg4aUJpRS86XXJKVkVDZ2tmPm4zU3AiTXxVNHA9ckA7JS4qWEdoXmoseEZaczorN2M+Tjg3e0UmYTtDO2VPVCFGREY7PkhCci9H''@;'; put 'put ''dyQlYHUma0RXUXx+Qyw2bHw+Vm9JOllyVjIyNFYhfX0+clByI0RMTGU0MyZ+fkVuTVspby9HdyRFPVQqRW5oeStsUVdxV3BpSG9ELzQxWWByW3o4VldsVlImM0NoJWJJV2pTJiwmXXhwMyZuYH1LXXpiX35LZmdSKyNtcmtkcXNOeHE/NXQ+UDV+VVdyVHE/a18lbUNUa1JXbTsoKT9qaUhda280''@;'; put 'put ''NDopakMjVCJeQ0o9VFUqci5gXlN8LHh7JXAkdGV3VG9IQU97U3BpLnwoNnlGTC5pfEZGZn0lfmRtW0p+SEg+TXNEYFFufFY9QDFoPF87I0p0VD5oPmNlRThvOi5AMipURkpDVkZBeERuSyN7ZU5HaHxeMlQjOWI3JE5lSGJ8LiIkaH1BTzMkYlU7Ni52eVRxVWhxe1ksU1VsNCNtciRCOndwaTtz''@;'; put 'put ''TWs9VGNwQiJJd0tBKnpjQH5bdz9FOkFyeCZrWSJPckU5YVplcTxPZW5rOm9ZPlspbWBTVUJ3bXZhe0NzM049PXEmJWNrWGBTNjEzbD9waWRVV0FfM0k2eSI9Jj14XyxsUyMvN1I8QH1wKix2TkNlcVpsMTFTYDVJaUYrYiRlVXcrck1AazFWIUVwfmcoe2tjPilpOGxLVF47KlRXTVFrI1FoQ1Uj''@;'; put 'put ''eFhjW3Urck1AfDAmbkFpe0pWWiJhL2I1Wkw8YEB1ZXElWW8mZV0pSGRWUShqZkteT3E/OHxqYXlGSywzSW1zRWNdKVhgJW1KTClHfUV3R0kxLHZsQGAyU1cuTXE/Mnx1SnlGKF9uZ1NXSU10aWV0RUNgSEpMaD8+VGtzK1ddKUlgVFExRjNfR15SVz5LLmMoTSgyfHtWcEM6VWt2WGBacn1KPklM''@;'; put 'put ''UXkmbit9Xm4sdiI/Rm1SV1EpJm58QzliXm9AKEBWOy8+PjNJN3Zka3NVaSoxOEY5bmBALmx4Jm5+SitnS1twVDdFYDJ4TXl8VyttKFVSKX1Ofl0pMX1xYC52S3xhO20/L0BsfWE7L3ZRflEoeEZMX2N4MkY/d09MRT4vLkpfcT9faUE4Jk0hMW9tbT9lS29UQEhNOVpucHJjPU8zbGU0cHpmZGVs''@;'; put 'put ''a3plNXBwaXF8QmdeKXR9VDoudmB7VTklbmJ1eXJWOjQxUkwzPS5iXilvfVEoLnZCdWhze21uZzBMUVoiYWkueFo0MURWMEMxJT9WSGBtKktmaHMhT10pbH1lNXhGWSo0MWJXe1NyNCxGZjFvalFSQnJnb0xNXVBATHk9dEBMN2dWYXsuZVFXcUdwaVN+TlosdiV7K0hJTH52VVIjcndnN19WUnpn''@;'; put 'put ''KmEpS3VnIm5GeH5HSGByeSVLXSklX15ASExwdlYhIX1LUyx2eU4yRmVebmd2RV9oaWl0Nz1idFZXXSg9VCFXZ2p+UVY0P1NtPVRKK2g0PXtzIWkhSyNNbUdQaj5dNkBsMXMqLyhfOX0+K10pYn1bdy52WT9uZ1BXN0RxP2N8MFhQV0Bwb1doWz5UW2hxP2hLXkpJfHpGW106LFhxWld9OE92TEEs''@;'; put 'put ''VnZlKWU9QC5iKmVwWUsxTFV+XyQ3T0paW146PzZCJlhFdTduP1J9MiRCQzomO0VvMk1MOHUmbmhXTERwaUp+JTldKUZSOW1RPjEoKUNwaWF8Z1R4RkgpaHFkcyxEXSlLdERuVXR2dns9NlFlI0RpTUwjdFYhNX1jOF0pTX1KSXhGJihiI01NNCNfMERKVXsrSEhMUHRWIXdzQS4oX2dXaU8oI11D''@;'; put 'put ''dlJ0MW4kRXhKPmg+YTpbeiF2QXw2ZW9IUFVNdE57WmUvdjt9ayxwaSRzQmAzSTlyW3xhI0xIKTJdfV0sXmRyZi90M2RvMypeMGJuSjF0JUtTLjU+ZW9LIXUod35JYGpVIn5EfjU2TS9bfkd7bzEpPnZ+Sjp3ZHtNMCtaVjVLWD1UbXYwSXBSSHs4OVpXTDB2IzZwLEJrQmpJWUgvPSpuXU1SPzZK''@;'; put 'put ''a3d8X3hCIn5zQX1jWnxgX3gySWp4InN1fjQvRk97c29VW34+bzduNn4+YCp1VzQ+fjhbSkN+c319ZjRdfGRXI31UWi5MIjF0MUd6XyFaRipPPClDdS5MXWNCM05gXywiIXNjTnxgc1t8LlZAOSl+b1tJYH5+YH1xMz18elViRUwpLG8oaHJ+Xl9iP04/bndeMXppRzVjSUtGVFMiRjxXS2hkfGVK''@;'; put 'put ''M05aSnROX0JEOm1eakZDOEpfO2csXTdnK2R5KlBhQjIzSHFVQExpRjRCQ3p0Tjl1OzU9PjN+VSpvMV9zbHw6I1dMPn5ofU5HV0wjfnM/dFdyKCN9NnYwWz1+I19zSiF7LEkoaHx+Zn03ez5qV0wifmV8MXt2KWBlIXU6dkEiQH4rfiRgXilWTC9+dHtraCo+XX5VfVE5ezt8fkp+OXVpbiJzOH1l''@;'; put 'put ''Oyloclc4fXx9NEYpPmV+TClaU2B+WHE2fS50SzdydEd+WXQ0Rj1+PWYvdnx+SU5fLF5qS1lOWj4pPld5dm8/a1NHbXB+PixeKXIvfTsocXk6WXIwPFlyLDs+cEM2NEZAfm9vOks6JEpxfDtFVjR9bzFTfCspcWM5aHZuS0g8SHghRjJWSkVeUGE2SzRDRn5vPWFsejhGSSNrNGQkblF5UzMvP3ZU''@;'; put 'put ''eDAyazpLbXFLSzFbOyNzX3NKSFhkU3cuZSN7ZlAubX1WXmhwdjVZKFJZcUBQWDM4RWp+JltFTDkrNX5zNm5DMWh+QTEjfDZQbz1DdDV0QUYrWDh+aSxmZ2s/fUNpPk8zSnwuNkA5P35jb3FLVnxYND9+YmA7Y1ZMbn5DLElWe341fHdOVWBoYXNXbX4lK1dMaz8oWz1+V0wvZ2JKYkt6U0pyMlMy''@;'; put 'put ''VU1BS31JW0BkXX1sbihzOTUvUXZTTjJ5YH0xJnNHOix2WTJMY3lgXzEmc0xsJSx5YDwxJnMyU3E/JXxvKjRGbnw4dCN+U2NKL3d3bkk8X34iI35RYzJ5d3dROW58Z3Qhc1BjJWhlKkBkJn01V2ZXSE9WTFoqd2QmfXpXPXNHT24xOT94NiN+b0hjWj1fTDAjfnRPX2U+X0FkZyhsKjhaaX4mOU5g''@;'; put 'put ''Um9mfEt0V2U8aFtkIk9XT3hWXTE5Tip6T1hfL3p3cEB5X35gdHVBYkkrIVpeRV95MWt2TDJGcVdWQkp9PEo7SEBaQlVDe0oiQWJIWnNaTDhWZSp3fH5lLHAxfkB2THVodTFvanY9ImB2Rz9qV1VTWWxQXSI2fX10SkNtSXB0Rn51RDYiYE09VEF7SCJBYkErOVolImtCO2hUYExjYiJgTU1tImBG''@;'; put 'put ''IkFic0N4WjI3UWRTSHl+QGQxKFZgV1FBcn0odE4oKT41WXRFQmw3bklYN2t+Lz4oeVBERHRwQT1oNHFEZ0J+JVdUU1pTcXgweSgsYUtXNE9ZX1chTWdvIk5HMkIieFZ7fkB0aFpLUylCLFJ1IzVZdj4xVGpiWC5KPmdpPSlhVCJ7ZytrPklVeXJWeWZ+W1cyMDlbT3pRREQ3Yj8zdlVCPXNnQ1pa''@;'; put 'put ''Ny90Zkg9c2RFeipXeTBuR18kUW08TlssdUNqT1Y0Kj83SzRTfE5UYyp6bnhCcFZxcXMsNk9oNXVUbyl0ISslR0AiNVkibWV5e1tvdzR+eE5OT3x2ImI5SGxYO2haR3omOS45TlFuYktfWDdyUDlZSFshIWxVe1ordzFiSHg0cmwmSzN2XmVPbTlYclZTSF58LkskcXNWK2lAfikkZVQxaClUOkpQ''@;'; put 'put ''X2BLOWtNTGlrbS52RHErIkNuOnpVe3x7NFBtN05XflY+TChJdk9PYipOKixJSXt2S3wpTHVxMCk+cSptcnY+VnFzM2Z+akc6Jjo1Y1FjQEVrdmQheDhKRjNkUm9FSGBPLEooa0JsbnRXLDhUdWgkeHclR0M7QnhqU0paZCVEelhIWTRfajhIXWdwciVHJDBFYU18KGdnPkd0OX4kV2N+KF9vfSo+''@;'; put 'put ''fWVRdkJxKCMreGxgW35FZXdLYWM0Vyl1dkw8bE0mUF1zTkElNyR9PkpAcD57Pi5GdlJ7NTx+UDpkfTEhaCk0d0x3Myl+biRHN3NWW2ReSUwlfl94THFeYCVORnJVImpVcXt2SzZgVlpMR1RMIThDfEFqVXBiZGV+Ql1WbldXXXk9OFNgUUZ4fDFMU3E1NW03Qkh7eDVDb1k/OnNIfT5TSEdzei5a''@;'; put 'put ''TDtQal1zSjQ0OE03MG9nJThNIWBnKkJXWkFOKFMwKFVNWUBOW35yRSZbKE5PYHReVU02Q2hLQigwSCwsQF5fYXlxeiQ+JXpdRWNCNmhsYiFsY1luNVV8TCshcn43dyhndF9YYVtPImQhRT53biImJXUkS0UlTUNqQklMPzE2VDFIRE5rUzAofWxrfHQuIzomTS9HL3wvLH1ydlt4QUIicXtba1lW''@;'; put 'put ''Y0d8Q2ErU05mJHtSK3J4aHhzV1JWbiZ0N2IzU3RdQ0hjfE9BNUdFei5CSi9Pfl0lIXFMamNjVUxKYkkxTFk/OndiV3x4QEAmR1FwdCltbjJSekdkPjN7OSZybWE8eTpCOVA7TlhRQEZxVnk0RGFDbSQwPTkqQTElcD56bE07VEY1e1A3ZDtOai4wSWM6eFlJfHJMRjksdn1BY057NkZYaUdFQ255''@;'; put 'put ''PDFgVFYwUj54XUlgN0R5RyZHYU1ZJX1CIjhzdCtrRXt4YygpTjU/cy4paH45TygyYUVwK35ATkp7UlV8Ky5eWDRWcURoMWpzNnB+XVhiW1Z5e29JMFFmREFFd2lUczojIT0oTkx9ZT9WbE4hUmNZWzllZTxHQkI+YGE2NGIsLFlfMT8yYUt7TkYoMFsqUDQ9blI8dn12KWlFbi5ZZSMjRE5vfVZJ''@;'; put 'put ''ZHIjZD5QNk0vMHNjWjBra0RXNElDMmFQIWNRUmIxJH0xUi5hMXRyc2VvfEUxMUhiK3VkXyk3dmVuXTU/QnlzfFgxIkwrWD95N2gkfW0ueDFQRDE2bj9EMFQoTVtmIzJucT1SSztgNU1bKUFzTlg6fn5gNFRPUHRjPUkodnJjSH43eEdYL1l1diVoOkw0V1M9azojN3s/UmY+Sl9LZXo0RS57eVB2''@;'; put 'put ''TlQ8VDI4YU9KKVhYVDxwKzYyP3I3KXNhUlVufmtIMHZaKXlQUXRadT1iXzJhfl5zY2pzMzxlPjo6LDtlajpaLmRHW352ajFHdUZgfFNSSEJ5WE5RV3s+IUdHc2hhMTQ5anVzcihRdXx9fD9ddDBjLGs5bVBWL2ojbEtAY3hbfGsyO3x+Mix+T0BedkJxInZGRlZFaHNNP1VfSSxDK0lNYFtATiRg''@;'; put 'put ''OFQ+dDFUcCkjc3VnTXw4QmUwK09jPXtMYmByV00qYFomRlFXJldeQV9QO3RGUDJmOzMmQk03TXNeNWVfQzxQMGUhfUIqPmE2NV5Od3BGWUNYQz5pb2dYX3VlWU9AVFIpalVRKWNOc3BrdjNCaml0UyFec2NPST1vNnted11RJiY0Yi8sKk4iX3ZLTWRjWS8pKn5SS0NaZkU1d2BXWV88K1loaCZr''@;'; put 'put ''LGhLdmB3fEpzKnYmRENPblJVW3l6UmN7VTJ+TzVuPihuOkZrMyl+cjlvQTx3UjJJYSE9Z30sKD98aUt5Z0w9TiFbdDRBISUjQzZ4I0woekxzVUZze3hiJmBCQ1ljQX5HSUVgQUlTLjgkYz1FdWZ2Z1d3UWp5SnopLmAmV0o5PWBHWHludzx1WV8lMTJFeEx0VkA5YD4qR0spX1crWT4mTFlNS0ZN''@;'; put 'put ''SG5dKVIxSyNdRklpc0ZXYHV2N3JvLywlW0ZIImtJPEM/dHI+YW9HVTBAb2x6Wz14bn0jZSV9U3UhfjU0VW5CcjhZWzdWP1ZPbF9IQzlfSTx5fjVKUFRybkB4bHBIO1A9OTRbQU1DbnpsNmBKbSNFMz4kN0h5UlgvekQle2FaeiVSWkluXWVRV1p5USQxbT5eZmdkN2BgLCZMenAsTmYqPjV3amsm''@;'; put 'put ''L1RXfEJnajhgSyZwe3UvTjd4M2l5WFtpOUx8XXZAUVF6bXJGX1o9cn0peHJJXkUlRXRtSmIyO1FReyQpR19+eW43c2NTK1hDKHF8QkB9JlM3QCRnY0ZBVEVFM1Nuak4pPG0idnxYWT8mMjtKaCZSPm9zcF58c1Qpb1tWMzRQNDMoeDN0MFdPIjdBQEtIY2l7dnMhOUpUKmEvd080fjJ4U0c9WGlA''@;'; put 'put ''NER+ayE1ejt4KmheeXRQRDskbGFfPlZvVVQrOzRyOWM0eDwvXnYvMixFamJBTGM8SXd6fGhOZ3VJSEVZJlhmRWsqP08wfURtQSRPWmN+XVhFS2dKJkA2SFpKeGNVK2R+P0lXXz9fbEhEQm4oKFVSTktJdzlLRShfYEVafGEqNWJHYTpoUjlRcXtkTTZZMlpyRXNXIWVaVWtATzF3X3J3Kkg/Qm9m''@;'; put 'put ''eEZPXj8ldVhYX1hCTmlzP3lZX3VmXT5vPk58VFF7Jlk3PTxUelh8RTdENFs2Vk0lIWpEeV8/Lno+enRNdU1PKEVjK0FAbSg4KTdReExuKHxrLiZUREo/T1pPfUUqeyZ5eDsvfCZAZE58IjU8bClsTDsxTyhfW1UjNGhbZ1k/OSpFSl5SZ206KSFXKVVtVkUvVnpOJVkvQl45a0VRO01HeCYiRjlk''@;'; put 'put ''eEBUX3klLkU1KWhhZHwkWE90Y2lDRyM+anQuZ1ZuMkFMQz40bSk8cEQjcGFmaTJGVDF1IT94ajh4M3c0XXJBYEw8cSFXdiR0OEVhNzpKbVp2REZNbityOH19QEBHJDBJSWJsfD1ReCIkUV1HJX5ZRmNnKiEjYlIiOH0pWFsmL2tTLEdHSERURUU/S3whU25GM3pMYzw+OmpoWn5hbFd6W2Q1PUcs''@;'; put 'put ''SjhMOUZIYHQrfXIhelNEYzY+Q0pMVGAsVmMlaC4ifm12MFByWG5GQkI8YFRaWXhhcUthRnxaODVfOSw6IlBRVnY0V2BTPDNAOjd2OStSTjlgOChTeWVAc1lyOHB1fCR5SGpaelcpdXwyK2J2MzJHfHVsfns/N1RqVHhqTiU0RGJzJiZzW217T3ZRP0dlUDc1P2NfbmNNQDJ8WXt5dl1yOmIjMTAz''@;'; put 'put ''dkFtV2RsXUVuVC5vK0hrfVpZeF9gOiFHc2FhT3MoeFt0Y2BLekgidkUhS2NwdSx8QTV6aCNuVCg8a2ZuXiolNjlzeDdnbjcqbE84fEBCIXNOY1M0VmQqfXU/ZX42Rjw5PH1GMiV+WTRVTHVHaDYiQD1lQH1oQTUhOHxlTFI0NUZ4WyJ9JXtGN2NbUEl5c3kwRE83UFdtIXVwenMleHpRN2tBQXso''@;'; put 'put ''dz1zR3MjKERXeDpFXVVKdm5nRFtNTE1YXXJ3I3VwekJ6ZThRLyQ2JmEjTDFNUklSd3NPPyshdWh6JEwlOT5qZCMmR25aU09CMF5fYSNfYSNMeDRfZ31PI3VZRzhSdnpRN05pNztuSk13MVpGXU8vOSpmKyF1UUdvRyY7X1IrZmhEaE1RMGp0X2FASVRLWy5aRTd6dEshJjciUE88MXtrJk1aImBU''@;'; put 'put ''NFduTk5Gc1pZR3BfQ2I0On5KZkQvKVE2blhCa1NRdEZJaz4wKH5GMEd0YDF7T2FZQGJFLzh9fDQzdi5HKlBxUyE0WGpfLH5ocU5Fd2F5WkJqanl3NjpWSnl3MiVhbDFEIXVBR0R6c20uRzJXZSshdV5GZHo9anlgblI1elE3dGN9W1FwfHN2TyN1XkZPelosQjVQVFhRITRxdUA1QmRoRDhMO01m''@;'; put 'put ''NkhEUW5mclIyRl9+fkdrZlhuK3grVClbZHdTQHRTY0w6ZWFvUndqMlcpS3ErN019dTIkXV5LNyxXakM+YUBJdXd7NndbPmo+MSpSPDRIfGM2N01ne1F4fDBmWE9SQzorXmVXeHZJYDtoVkIhNG5CbjRHK3J+KiljK1l9I3NnbkNGQDk2S2hdTSwhdShGfXkkYW8qLj94O2FmLHMuODEhOH0jMlBA''@;'; put 'put ''Ynw9aTN5bUxvYmZEY0xyaWxBITRdKS9GSyJRN19bWEJ4KDI6JTphIkBRXWRCVnhHaE4oRFZZbEJmRFopeml5d0psRk4mYUdHQENeQWZYKXY8UEd0UE9fW0hCeChJMCU6czBAUV46QHBKTiZhV3s/ejdGaE5tcXFHO0MhR1RWZHZQT05ESU8raHl3IVh0R2hOXyRaTSZhO25gaUoidFZ4KGZYM0M2''@;'; put 'put ''WjNJdkIhdVRGQU1nQWZjbD9hSyE1K25FQC81KDhnWmtPQjBDYGNrSEUoelE3WGZDe3wldn4wb19YaERIS296TVZdYWhEXUo4TWA0IXV8eGJ3T3BzMXUmQVVuWiZXcDExJXJTKjMsWj5oRixGVFV2akEhNHw/PWgraGJsS3l1JnNBITRAQzk1Z1Y3WGlGLlh2fk9odSY8U1t2Xy95clVjZlhWYy81''@;'; put 'put ''QWR8YkFzJFh0UEZOaUZtTi5rcXkzWmEjfENqelBPYnR8W1g6LEx7IixNY3ojRGNJTl92S2RSa0hVTSlLJUhbSm5CfjNlSUFyKWNgVkN4T1s0YjhNPUAlYHl8ZX5SRmMreF97akhMPUw9aCo3JkR2JjExQTdYUUF7dTU+eyljJV8sdzgxYFYvYzUuTns4R0RAPCx3VnVjWStrWGVXY0s4ZHtOOWNG''@;'; put 'put ''S1t0U1R6VkVhPkg8Q1gwJUZ8O3haOjp7WnZpT2BMN3lJe0sjKDNPS1JCc35GV0tydFNhYzRsdjtPXWExWEpFTVg6aXdlTTcjI0hUdDFQdlZBQD9Hdzo6OC4jNT0/fEpsY1E4L1ZrU2dmLDo4Ul1bVyFmTHB1dVckTU0mSlRGWm1zQipra0s4fU1MSiVGU1ZqSGUrZmI8LCYofFBZZT8wPyhEUUt1''@;'; put 'put ''LiVPNlo5I09fSSEoVypeUE9mbkJWRm9GS1NlV085fXxINmJSZ016OV1Ae3Uva2k7WW1mS0BLSEw6Z3V6XUB+TypjWSt2X1g0VHt+XXF+NUF1KE5bbEdvcylrJmUxI0ZaN3k2TUNbeztffVJ0T1dWXi9qUVc7bHlrVik8NWB9fCFoOWN0TEZ8RS52SExURWJ6SU8udjBVKzdhe1gpeX5lfCkiSn56''@;'; put 'put ''IihoYkhKQVc0UntsYWJXZnArb2ssPDVAfT5XK34yTkovNyo8NV19ImpUXSl+NG5rSV8xbiMjMi5YT35EOElMekkoaCQoZlErfGNwI3NRc0A5WHx8KWsoeihET0JOQDkifXB7TExqU1g0O0RoJG48VkElfDojVVcqcWx0cX4uRDlUZHsyYmYoOHxHYmwoYDguYHh+Kkw3TUVbSlNmVyMxKzdPdWA7''@;'; put 'put ''fkN3Xzlhcn49RTlUPT5kZXh+Z0t6RnZXdmQwfGZBOVRXPzpIenNRMXIoXnRNSkY/c0I+fGkqKCxWflNDPX40cChoSik2UGJ+bDJSTE16LmBpKChQcyg7fWR9b2U2fWldUUxTWkZ1TExJVFQpLH59dEpMem96ayl+XkJ7c298WWRpfissfUYzXUw9cVAxfDNXU1EqRlEwVzRwflZic0QhfncjdmRb''@;'; put 'put ''XygwLn1tX1NXWT45R0BAXy9xfm5MPnN5PGtSKnQ0XWdNZ1N8fkJ9VGl2c24sJWg9KHd0fX5RdVNYRV9WZXdzVi4zP3MocmBEPCloJF5UPEJ+NjcvdiEqSXtXO3d+dSsxeSJ7X1JlfnVILlFDYUd7SVtefkk4cGl8N0ROYDhuV10oVVs/fnkhbi5Ofn1CeFtYNW4uOnxPMV9zUjglYUZ9PCNJY0hL''@;'; put 'put ''QDlGfjxIKX5XQz0ycl9dRCtza0oudmspQGRIciQvYWZUfV9ySkxKQV1YUCx+QzlgJkRlcyYrMUZWa1NmcigwOiJQY3xUXz9AQn5DeXlGQ0EoaD9dYjBdfkhLXjtDd31GPj5LdkFYcVtdSkQ/LEQ+fjNHTmpXL2VEeX5PY1RXc0lGN0x0fUZsW3IwcEJ4dGBleX5DP01McFFdWG5eUzM5c25Rcihb''@;'; put 'put ''fXI5e346cylMfnNbfSN0bVFdNFN8PkRgcyFSMFshfCV1JWU7KD8/OFJwfmBodChJeyRkIn1rc1I0Rzksb1RMUk9ML2x+Z298c2xAcWZlNF9uQyEoRDIlN1BnTjteZkFqV1hoa3UuNExjSWNyKX5DS2AiN2R+JmBLUFZ+em5WVzYlKGpffnFnMSF0P3R1JnxzSEMsIn5YSi92Uy9lRHF9aDRwfldt''@;'; put 'put ''NzVCKWVqXn16WFgwaSYwMTpAYH5LZzdNMH1+JiQ+YVJwbk1MWlFsS2ZuRlg8W1NFSmBMOGZzW0JISiF+S1ssLjt8ejBrKFRib1lQTEpRXVhvfSoiZXNCWGMjXzJdYDokVUU9ZEdCNk1YQCJ2LyUpZVhlZXpUYHY4cCUvP2xHbn41Lyo+Vld9VV5IJkhIPzkha3NkL0xMIk5vMWZhfj48NTt9IkZP''@;'; put 'put ''TG49ZUQofWdqaCg1UWV6Y2AlYXN+bS8vaUt7VHdQTEttZXphYFl4byVJcXN2Qj1MTGFOZ05BLjtNPX1BelIvPVcwZGZTX3JMTGBNbzErJV8pOFozfD5yYlo4K31GamB8ayRzNWQjOzdzZEZsdTc/ZCt5RkxHakRqUF1dOFJsfj9UPn41YGlQZVdLWS92fnQ4WjB8PVNefiw+P29tfm4ucSNIfioy''@;'; put 'put ''Jkh9fThreXlmPy5GYGBhdmYoXW9lemJgWEVofmYudzlEfTJCZ1cuMEA5JnNWbX1zXX11TCZ+TVt7elpXZ1cvdnhGbDVxV119WmQ9fndgfiIvfk9bb2QwNlV3Ik5Nb0N7MEgyeX4+a3hWUjV9LChtV2Z0cGRtXy9Pa1dQdDtjOn5KZCs3RnZSNGNkYTFrJXZIaF0iSDV+a2NKNGt1eithZiFoeE9T''@;'; put 'put ''Nihzc0AxITJ8bSxrQiNuUVVjKz1zSU9nVyF9Nig6MSxfSj5uLlh8Jl5bflRDcT9rfjMlTEwuNnVqTX1FbnpGQjxLZnd+MWsvdk5dfWQ/fWxSUHFrK2l8dXM6bix2SF15SCl9YlA+OXZ4VVJDfkA8SkxBNiJmUE1+dUE3Z0dRWncodGQ0TEJyeXl8UkBkTVV0VmZuQltDRCpjUU9UZWlpSXZ5eDFU''@;'; put 'put ''X1FYWWhsdFZLKyRfRGAxKCJHWlkiYGQyLHpZY2pfTGtmN1l2eTkxTTFrX0VXen4mP3I9PyNaQU4iYihyXk5jZXo6NEZ7fn1GQEBkQ0B6Y0lyMUE3bFV+WzV1QHJ4TGR6Ry43RS9Mfmh7c21PQEA0Qk16TD81fTNpOTF0R2QqPEIoTkFMXWopTyZLQn1rY2J+eilCImlOImJudV8vW0NCW2AiITBC''@;'; put 'put ''LC9CL2NOPz8rdGRZWSJgX247fFh3aXluQGkhSFJLY3F3ITEhRCZXaUZmZ2hdVG1KdVZlMD0sS1g/Zig2WGlEbzMhdThaK3MwQDZNW3tIVW8/XlUjbmV6bn1QbUlMPEgjfVc9aUxpaW1HeiRPYldhRVQ7R1goa15RbjRMUXZBRGBFbXI1YjlDU2VJMWNUc1pVflo5eXkpdzkrbnxQbW0/I0AxV0F+''@;'; put 'put ''VUNSTFUydTBaI0A5ZE9uRn4zeFtGXSZ+VlA0aFtKRzcyLzojZXxCIjZMVShNOjR5MDBiTVVASHc+fFopbnNgZyM7S1NqTjp5dzAlZWA/U015dFRLRkkxRXNtL3pEJCRlVjM0dChNbyRjTmxYSF1aMDhdTWFien1pZExHW3R4PTQ8UDRQPGc/dU5lMkVwdGl5KzIuQSVYdXQhMFs9KXJvSkNweE1O''@;'; put 'put ''VGBNU14vZ2xNTkxKY3hYfVVKaFl6djhrNSRlN2AleT9IRVkmTlB9cW9BZE9wNUVNRTVGNjpOMEsiTykuRX1oZTJFSypPVjJoYyZ2LDVJQ0YlamZQYThvI0U8ME5wPSQ4KmJBbS9lMnQjb00iSUl6c1ZOIypaOkk9ITdPMG5WR1ZTODo+RihtWEdUej8jZTBbPSxNbHk5Y1o8K3dKSXBjZjI6WVhQ''@;'; put 'put ''O0ZPem0jPD5ILDdGaDQzNlpbbSppPWxZMHY8SEgxIlM2NEk2JSRLVkF2UDUqQUs+YyRNWThdaWwibU1ZQ1hXT0YqeEpEbk8ve04xLlBOW25HSD08WTRtYHxOWlh7Ti9fWEJTRj5vSWYqK3wkM0Q3OkxZcjN2T0JUei96MyE6eVdYKnlWN3FvdHklPkMkRFo0eDk3SGAxfnolcGhZJj1bb09qcllT''@;'; put 'put ''UjtpT3s6dSJwITAzQWQ2ZyhDeWovcHp+eiUjbUQxRHJhV1ReWlEuRF08OmlAU1NQQ1d2JjJhciIpK0FuenNhTjNLWj5kS0lFQyRXVVgiW3M/NXpsfGchRHk7PXw/bnc6MGk4XjU8Jn1XO0hRSEQzdihnImcyIjBEXlE2QVhBNHt7TFB1RXh0Rmd9L0hedTk1RVRKeEoiSmR3ay81emxWUlRidl9v''@;'; put 'put ''OyJ1fVArYCRgUE9CME9Sbn5aSFgxW3JHa2Z+WXhNfW5GOl8+RCZKa3M6PjA2QzNdVzIueEpnb0d6LyhBbEkpTU9LeE0vX1JjOmtDWVBAPkF3WF08WnouJCNPKWw7Rm55e2olTGhHWG42Wnh9ckxZLkY1T28+QFd0QCFPeSMjMVcrSUI0LHprODc6ZGVdaTZaQz0kdU0wVU1CTGApR1h4UjVlXy8+''@;'; put 'put ''MiFSQktpUXZAdGBTKyF3bktBJV4rJUssSWw0JGszaHlQYjZVeThvRWNMWj09bTdxMVZ3XihxbG9OVSE8fUA8TD4xTHAhcFZNNzZacjNvelVrTzU1clRPci80KG9eaSZJJUdHWHhDd3EzbUFTdjNjRG95e0hVR3Q2JSlBPlM8VEZFOGxTdl9iPkU8a31we2pAd3xRSzpvbHViZWR0SCo7IzkpZj4y''@;'; put 'put ''X0oyY3QhcH02SWV2fGA1a1FFS285amxdXi9HSlVfVTBKeF4yNFkyKSFbP3hAITR2Y3ZpTV5WZzdGYXRkOUYmSi8kUE8qOik8dGdPYVljQXNtOEx3U1s6T0xpPFskOjk/PDNKWDw9V0cjMChUTXZAXjF4S3o/UF05Xm05YFB0PFU4NlpHVFk3OGZXITgiVGBnflEyTSo7dS56dExPQ0d6OihVS2NX''@;'; put 'put ''OmoyRjs8aWo9LyRlWj1ROWd3RDZ5RzVIJilxUFQlYT45Vl4mdE84JVtEUjVWQXVaQTpdREU/QWg8Ty8wRH0vd2FMLmNZPVF0ciFwfkJfWF89eXo3WCZMSn1aRzZ6Yj9OSkF+SS9rLndXPGY8SlR+SU53V05wfGVYa2koLCNMfSY3MVloITQpNTlwSzhPQFQrYz9jaVR4alNpZFlZQjBHcTwqaThT''@;'; put 'put ''eC81JE0rO2lhYCpodjhudWRrZnY/UF1yVUk/WVk9dkxmPyk9eWU/Y2FGQ3QiZSpnS0NreXsyOmQ0OlUwZHU2RmxMcSQ9QU0ha21+TWlKOllyVDQ+Kzo7N1hrIWtTaHV8OUV4LjIoa1FJWExye19VZCFZS2hmdjIiZ3R7aCRlQ1dBa0hmXU1yVXhzPSpgWSRkOSZFc1h2T1IyMkoseXNZVTh0PCRl''@;'; put 'put ''Wkw5NDViYyNXUUAweWtxOGsodEpZRzl3amVqOHk/N1B3Uj1LRnkxMC9wLj5HVjI7P2A6MXVvdj8jVyVeXjZdbnBQdzxgWVdLdzdXQEt3dTE3Pzo6SykhITUweUMkJFpmY2tjMT07NFBSc2ddV2FaPzw9YGNyei81RUl6KUFWOi4jOVN9aXlnZUNzcnBLcz4jaz5DbksxLm9LOj08NFElLzhRTjNh''@;'; put 'put ''bWxfL3dtOFJ4eGlTcVVVblYvTGJ9OkdZcjMuVF8+NS9aPC5XbVRhKSwjekBiR1s1K01WfW1GLz13bjpaS1paIVlabStNY3pzaUtCeC9rMTpSSHw9ImRvQ0M1JjRNQTZWZ29sbFYyM35zbHM4NjpKMEBpVyJFVTo9OXgkaDx5XTt0NGNIKFdxYGU2cjUxPCJ6fkU8NipdekBgcDkkP3hrcSh4fUlA''@;'; put 'put ''b1spdHEpazxlTnBtSHlFXUFkd2REKz1eSWFmUjQ/eEZ8TjdgOX52RFp4Jmg0W3wwZld6SVdeWC8oN2NUUk9QLi9PVkw3NStuV0Qifmtdb0I+c3YyYFtHJko4KDNXaEdVXkxaSVBjLDBIaTtjQEYvM3UkTT44dkNlazB1Jjk9a05UMnE2Nm1wQkBoeF40QFcpNGlNcDx5ZC9oJF0iWUlJK0NtZFZm''@;'; put 'put ''UkdnVH5rU3kxWz1iR2V+WHspcTZpTXMkWVlqNHolXTIiKjY8V0JULmtNX0cxfUNtVnQoYT52U3c9ZVN6YDZsdl94NmQ6LE5qVnVHQ24yYkNWRk9dcm0+OE9KODVySXxHMSY5eE8zXSlVL2kuZyhqdmVOZztsUzBKPjVBaXMle19mR2ZNelA3UTE/RztlVi5nd3xjYlVDTk82UU4/ejVUYDA9ODsx''@;'; put 'put ''XUNHUTQ0XUksdmtaL0FUcl0sO0Ald09VZ096cjkxZCxNQl8vTi4iNW8ra1poWlt3SEpoWngwQ2ZeMUIudWIjYjUlJC5NKSExL3FjfEg5elZkLjo4OmcubUd+aEA9S0NgRGpXe0lxZVlVYHk/JUQmLDJOOG0qOCNgZnMjfnB2eFd3RTZ7Ums1bzA3O184dXVwMmlNTWNSMUIzLmk6bCEhfjg2cWlI''@;'; put 'put ''fHlLIV9sVEw/WUFtJiMzeDpLUko6PnVjd3EhWkBJTXc7ZmwpYVVMeSREfHwkVmZJYWBidzp3PD5sbntYfjt5eEQsV2N0aHljemNqJEVOOys1L2g3d0xTVj5DejpCWV9wZyRwIV5eQjMvZ0hBeUYkVXZHRk9LOXAkKElTej5GJExheV5HMG5wOkhibmFsZG5sLyU/U0E1TDVafkNsJmk3OkoiYW9g''@;'; put 'put ''cUJObV1AY2dCW0ZIfWheRW5RcHpmKGZHelFad3VHRFtveD9Zfkx2Rnc5YjIiMUtbUWk4bVs6OSx1YF80SFcqXn0oSyxaRShjVlohKWZecmxZMXI+TXhPTzV3S0FhRz42TFtscFV9T3dNek48OmR1Yzx2V2s9V1BBMlo/YjREKT48LCpGSkI4N3FsWTM6R0tXM1k4cDNtcT1LUTtye29PQERENjdu''@;'; put 'put ''P11TOkBpJUJzeypuPSleZCsqNyUhd0ciSmYlX1B4eD9KOjlZW2QhYjs+REg1W3F7Z21KZUFmXTxpMnlfI2IsbUlfZElwY3RzdE55QjI2YkllTT5XZFtkSWtQcGFYWzljTnloPSkoPnZeXUhheUcwIX1Oal1qaVAwPjhkfHZ4LGhZKSFlU3d0LGFGJml4diY5PWt+O1V3UHBMZjIqNU9pRHo0Pztj''@;'; put 'put ''QDdSTlc7Q1U7QWpNSF82Lz5zMlBtJmFDd3ZieV0wPCZnSnBvfHZ4VTZvalptVGk8VH5XJG1LXXtTaV40emJ8LlswOigpJU1xXyNoVkdFWT9CPjUlN25DeGRkeGRrQD1OaEhQM0h1K2NLb0krbFswVnw/eDc/JXhEOlNnSiJITzF6JVRycFNEeWNHVjx6MyUxLktdR1tkfD94VzYxazgwXVpNVGsh''@;'; put 'put ''SEQ+Pj87e2B8dyNYZkprNXMyLklwZUJVfiNiWW1CZVM1YGNsPEwmRGN1JCgpcF5EO1dtVE4pZzNNdXpOI1tLJno1fkRVYkwuU2U3RXByeGojOiI8M3U1dF1taXV2bFR6Ol1vPjt8VXlKW0lyWlNZa0M0ckNfRiF5PiZ6NVs3Vl9wTzpnS3pZQ297WGtNfm1HSUNLQWYpISM1YTpRPkMjOW03WXY1''@;'; put 'put ''KWdtPF1GWGA6KHdWKDZNUE4uLmE0K2VFdH4jRCJCdGBdOFJOJkZ6Uihte1RmOGYmSSNeTUx7L0prI2ApaVNSWiMyRF1faXYjUEZlfUREYWZKUTBxdEpPbnxfeS9wdG9yQEtVIyZyUEAkYX0hWDdGemkjKm1Mem9odyNSVyI6OXtbXWh2P0YicDdhN1RNNWQwd01+LixlT0ZKcHdWZiZAM3hHRz87''@;'; put 'put ''IXphWjRQaXwjU2AkPipzfG9fayhHUCx6RHpaem1jRmo2W1dle11LI2A5eW52KmpsKFp7S0BMZihuMVtBenwwZDdkOStGM3QwK30mSjIjL1tTZlJmXXZBVWVKakR7XUosN1d7a2BGK1NPQUxhd2p+XTdSR0JDMigvQFM7eHRTcylzcDtJSz8+TSx6VXEmTkssTkdgOzB1IThEO0ZEeCRfQklZUVp9''@;'; put 'put ''bERNdXUrU1MkTiYqYXZENGMlc0taRGU1QH1ObnFmdSk+RGJ9bDN3KkUiVFtEbnFfWDUyMTVuflV5Sj9bd0ZAb1g2diNQMm9rTSU5KzFuaDZxe2FuYEpEWE1OWXVCfiMoZ1FFYmNLaVVxW01qWWxVQD4/VWhuZCkwNmNiXlI3Q0E1LyhlaGF6ejhxYVBPeExpMzJtUVZoSj87QGFnVyt0PzcocXhA''@;'; put 'put ''JGYzYlsidV5eUE44QVRoY01oLCtRVF1pPyZ6NUU2OFlrSF4iLmRRWXYuNFcmOVtrP0laW0xPez41MEZMfHkqfW5Lc1o8SHxmR1UuaUo0eHw6JjkmRmpCc3IwOyVdXyJ3LD1FdmB9eE1XbDt9dm5kI0MmKkFuYyxuNGhteiVUant0aGZyLmpOTF04aT1JWmFJejxmK1NXO3BjI0hZQ0NuaF5jdiI1''@;'; put 'put ''cSViYXFmNms9P3Z4SShVdlo+YXwhR0lPPklsaEFuPz4+SVo5I05PcEJiV0V1WVRzU0heaEskci4ve2lCaUBFKktgJWYsKFUjcC5fX2guZUxoaHcrRTh6JD9JWndHSmRQZEBRWXk3aWdPb2VsaF8vUCpBSTpNUHptamUrM29EPyZVcDtAd01jKVllcXZXei82eC5GKFVsfEZkJkZ2bDEkNDhEKmAx''@;'; put 'put ''OHtaek93YlZBWXxRfFNdRGRKTiM5Jl1NJG8iOyg2LF9QeHhqRUMkKEExSkI7SltUQVdUZVBIWlZdR25ocEdDPzZjR0pxcWJPSXQ7bnlgdGF0Zi9kIUouZ0R8XT53V1loI3I6WkZ6IVNEZjRqKlZAWkp1bHMjcjpaP111TXduR2g4L34qL0R2QDk5JlpnUytCIlFLTmg6QSlnXm4/IlB8V311Qzt7''@;'; put 'put ''VGtiTSpdWz8qImZaN3dBKDUqKFUmRiNHaE9pKHM6Wip6YWRdQHhnSzhaNGRHM3gpOXJPXjA/R1NhdnE/WV5JUXhWW3RhdjUwQS9Gcno5LC5hXmxIdT87NEJKInUxNThWaH5uZU14aWtuNFZeQyI2b04sPkg+bXc8YXxud3IiWnBvRzM8VHw+NkpfTGQxT1VXclJULzlBWS4uaiYsPmBAMS9aKjoz''@;'; put 'put ''LEhDQHxlJjRhJnFNT1Y/VTt8fnowJDdsQENYRXBwNU9vOFFCWyZBNkQlKj9mL0leOko8VH5lRUhze11XdnVJXXp5cXElNng9cy5xL15dP08mVH5FRzIkcXN2eThndVFDcXswQEFMNVIpdGImTFMvXTxvNyhdYmoxN1BONUNEXXhiWT4hVEh9U3VWVy9dLEJsViZ4dTp6W19DYDdPcX5wNytoN04j''@;'; put 'put ''QH1Fa0VRMD87TVkmOHdfRlg1X3kuaWprPCNUdDJfYUIveXhAKGsmLCleS29rTyo1Nk5WMGYxQi9pRFZCeVE2Z1R2fGUwdU1JRFNTbkRROnN2Ok9GVShxUGE9QVpKRlQ7KXZVLiJuQlpTeDl3Nz8sUTwuTncodlVJWVN2NFAvO04qN2t2TShmd2BReUJwN1J2MXMyek47eWtOVi93cUlac19SO3Ex''@;'; put 'put ''KCUwNmN7bmd+amEmLyl1dTYwcClvOVY5aEVqbDhFdV5XbWZxRWNZJlBOJmtAeVVBfCk/VW1nVlI/SSklaUBBWVJIfV5ZJjopPnUiJGl0P2dxdHpjdEpAIko+ZlVZQnYwcz8lZXB6S052eTtgd3I2WCpOPUNHfCEwcTY6VDNje1drPjlNWEpJNWkmUE57NGsxKF9KRF5fTkJseEgrZSZQTkk1N0JB''@;'; put 'put ''JXJ1cHFLWThLZlkhOTA3OmdWMUZ0NkAzSyUhcVMiVV9sPHRXWT5GLHRzcW5rUi9AIkA8TGdhd0BUSEg4W0duRmIsMmhPWD9MZ1B4XldiUDcoLmU1aTI8KXQiI0N+cUM4KWNZTGhuaUIkTUNhX0ZRQ3h8UUAqbF1rOHhpcFgsZjBydmFeR2VGaCo0UkM+L09BNVJEQCZYTjp0SDBDc340dXJOfkpi''@;'; put 'put ''NH0qUX03ZlExKmhGQz5dVC9gSTU8Jmc2c25aSjFENEdlKDVCRHtIWitIMnYxRUdoYEh3IUZfS0tZRzRHciR9cC9pO2ZPOnlUVnJLfH1oamY/U3NxdEIqKz5XRnJpdkxtcDVkQ3c3U1s3dktIJFdiYEhGPjo9KUxfUSFpRlYwK2hpbGJVVjFednQxSyZPIzMkfGtTaW1We2l3Si5UfEEpdDsxY0pr''@;'; put 'put ''TkFXUjRbdSo3SEdSdCNAZWJWQTVEfGRIYl4xKUNySGMwMm54R0k3IUZGa19UMk4jLi5UMjB2dVt2YUM4X3ZJeWtAdX5PXnojUjp8azZUVUltYyJxd1R1QTd9SUN7ZCl6KCJHTlJCcnt+UnE3TXt1b29SenpdWEp6XnsybnRENUFvcmFUMSZoJSV7MHVhUXVITWpRR1lIR3hVUnI6Z01uMXkqL0I8''@;'; put 'put ''fXdlQ3pFVm5PdCRlZ3VCVXoidF13eU8yZmooR0g4WndhMXIiXlozXXhONkhHWSlwYmR0P30zMkdOdyhGPUhwNT4pdjdZRG5GVyFVPCxbNldzLF5yfGEqU04udmcrVHo1RU1tbnUwSVU8OFh3YTF3dFtPOzdFWiwicjNTPzBWX3Z3MVBqfDJ5MHlxNUx6WixjIlpRPSNkUlFaNVFHVy90IjBpYnt0''@;'; put 'put ''VkgoeVdSSGBgeWk/LD8kR2F9OnNTMjJSZ3pKcVRsIStRQXVgU1dOKl87d0tZQkhmeTU/SzQ3XX45XU19ZyswfS58b0RAfm8pInkybWV9L0ljbWRyZ0xRIj5ZS0pMKVdlS2V4QHRCdFRLYVkmUWNWU2FvcDdMKEJRNjxDKDJGdDpoX0Q4OjhVWT5VR0MqX2hTMVNiKmh2dEt1VHB0VlsqP1BWZDo9''@;'; put 'put ''fUZlU15TNjhwXiUqIigxXVNdYVlRREA+Ym0weVV5JH1SVC9CQzU/NFZjRjBZWF9lRWBPPWtFQGJhNSxBfjVDNC9XISNZW1I+KkhhNVh6NERWWyFyfGYibjlwRmJvdntvYiRCdDlbaWROZiJuM3srXzZLPSVlcmxrIWxQY2BZfWcjNWVpcFFga0FjV2dxTD09O3x8XW54U11IUnJmc2lYcipkJiwh''@;'; put 'put ''PnpHVipSMVJDbk1YSnd1YV1ORzpQX2MqZFJTOjo1MmtRYWQ9UVd5WnIudU01WUdPISZTQXlmeyRgRGd0dl9bakZjdVZxO1Z+N1J3JjkiVXRDYio2MWxOXjc/T2Z2Vk59Wm4qK2Recz0jSCowdX1jcVpRPVZvV0UjNWFUQ1g8Xnp1dTYoNUQ8ezV3VltHSHk9dCp6LnI8MzB5NmtEY0FZcFlNUmhW''@;'; put 'put ''aD4udWV1MHlqfHUhRm9zJWBfVk5SfVpWKTdPRGNXKTFPLFo3TSg3aVh4LCpuXVYyJkhRUnp2cl0wNyNGKD9MSD9VPT8/dVZkVk5wXlR7KDpZbyI8YDAiezxmZ205UyRUWWEiUzpoOCN0JncsbnVQY2k5KGtoTDorQkwpOnxgKVVdQXJOdi81SEsiLHR+ZWhwM0VURnZQSFQkZVd1M2A4TEpOVnA+''@;'; put 'put ''UDFze0g6LzpbcitqSElpVVFpOEBbTmdnQClMJiVUSFRZaFIial1tIUN5cnV7XlBKfSpoJm5heX12RlN5NGxZc2BMT0dbJHpoNzI1LFdLa30pRUI4biRndXI4dEZNZCw4U3QmTCtTPSk6UzFkMlI/PEF3NUNKUikqTEE5PDR0S15OQWJefThYMVkpfT1bW2g+Z355Sk04S1VAZns9UEkoMktuZE9I''@;'; put 'put ''WTF2NypNMysxOndCXnMsR0o2e3BfXypUREhtRDEmaEY9TE5FVDxvVGFjKE0qMHhIJSNYUkwvfmhhTyN7LE83aVhYKntWUHQ/ajQ5SHI6N3tJckV1aUpwO3ZCKUozRHBJKltYVi9QT25qPT1mKEtHU3IvYnZLLmszKU4uRVJEXkdgX3ZKbUh2NUAyVlU+RylMOzprIy5VYjJ0I3ovfHtyU3I9eGNj''@;'; put 'put ''M3Juc3gkR0ROY0tEOVsxK2ghOCxrU0U/LEFXUEI9P1gwd3I9O0NZMVd7NXkyaF18NCRaInQlKnRldlBxWHtPVnE/PF0sPyhIcWRbNEhDZCQyWENJOEc0cXRbWXJuNSYwY2siSz0kSUxbYEt5aTRSZHxQeFRCREtpeFE/Yj5iSVIjQFkqcjFZY0JCK0g2KjVSckY1TCM/W3tTTC4xU2AoUE45LihR''@;'; put 'put ''anc7MW9oI2NYRkNkfkpYOU9aPUVKZyYoTGtlU0ZAL28odSQjYH1oQUxwPT9xVDd0Vl1ReSZtJVUyemVLbCpgbU5Wfj01L3lkTnlJMXhYKyhgbT5TfXpBUTp4fjBIKSQjQkZvaC4vO0R9dERhOFU+QTkqRV5fX25LJipXRk1CZ2RAeH5DTDF5LiI8XiJfU1khblhdbV9OfV9pL147JGRaK3xbPkpa''@;'; put 'put ''N0prbGVUSH0penNgTkJCLkF+ekhzSHRKWk90bnJxWkt9ITh9UTlmSFM+UkpMdGsoRSRyelhEZzxna3klQXxbOUo/OzJ1InFYZjFqNmQ1YWVWZiJXa01+MERrS0N3MVBHc0JNb3csJDRyZ25sVjsrcUNbOSlHW3ZXWCZEe11gald7NVBdLzZdQFsmR1k1bChyNVdrVzo0WmszPnJvUn4uMkVadDsl''@;'; put 'put ''V0NXcV4pJU1ZODtzS1ooc0UuREw0P3JHVGJtSkd+bks6dEJGMCgmJHh9X1FUalh8YDskOi98I2wrNFEme3QhRkVzIWgsYzssVV1qa28/SzVuam9BR0hBPWJpdlpBZGA5WiZPZHh5Wz45JkdASC41NTRSX3FpTnpEV0JAfW5LfitpZC9uJFBOK2B4djZ1TyU5U0RwbWdvaTdHbl5zZSE7MW58Wnps''@;'; put 'put ''PyJKXUBkL11dakd3L18xOiY7NXYwPSw4Vklyd04wTyM/JXdoS1V2YlIzKDw9bFNHcEdHSXc/OzJCL1YveHVSeCZfaWFheXUhczZaPmBOQFYzIXlWbWswLEIhUn4jWlJMKV4sc1lTPigvXiRfPiJmek5VWXxtLChvcSFOdUlDbXNJImY9ZmVhWnZqdE5oWHpQajVkKl9XTkNacyZIQiQ6W3h8VXZX''@;'; put 'put ''OWo0cjpaYU1JRn1INltIS2B5eU4jQj47TCpOWyFuT3hHYDViYUxxZEUzNFZwQSh5IlN+alYmeDVJVDFwIyo6MzYhaEdvMCpueCRHfT0qZj5iXntOel0/Y1ZWa0l1XmtFODFoRiYmQTY0UiZDJnErQ1RfVERlZlJOPiYiTVZHSFJybEBCXl88WW1kJlh7XSo8dDFOSnxibXFSK0pmVm9KQnMyQihQ''@;'; put 'put ''MS9YPWlIaG5pJjteTVQ/Y2Q/SndFezB5IUUmXmM3KzpPKHJQYTNSMlFLeT87X1Yhd3o/T0h9U3YmNUlfW2VXRGB2RkVBfCJzbj9ndF8yV2RIPSJxe0lCU2QmOT4mUTZwWTpCODF8KHBXfi8iWiMqbzljSXFTYUI3VVlJZmpQRzBNbmhKOltNYEFkTTkqNVcyZns6PHU/ZzV3JT9+QD4meVQmS1la''@;'; put 'put ''VilfX0ZRamE1dSFXe2guZTBVVWJgUTl7RDFDc2BOIT1rdnN4OS8lakdSfSNhUl0xI1Rsa1ImfkplaVleNS5MZzY0WjJtM2lpeVFaWTheMCo+Jmc2Vi9ePTJnajY6dzdHW1BvfDIubFNDb19jZE46ayxTdjg9U1hRJkNRPStXdFFHZDs1PDJ8ezpXUUh7dGZvN05ydFRaQVl1ZylYJnA5WWRAM3Fj''@;'; put 'put ''NzwyXVNuK14xQEBJM1FdPjgrQXAkb0tFPjlFXUZJPz9LLz5abHkpOTd1NG13WkxAK1s/Uk0vPnBsd2w0ODh3aUBgOUZUXl0kUl9FOS5ScWwiP2ElPjYjRn5FI19lQHgkNEFuVUpuPUwrYFJeZ349U0VdVV0qWUNiPG4mdWZZPX51I0NePkt4KE8jOTJeVnJeSmI7eUVud28qUk0lPDUjRSo4Pzpu''@;'; put 'put ''cDNgOzxHInZsdUh8WjFWWlZsNnZFKjRwYyVfTCZFOnYsKW1waHE4VSJHKFtpP2VyJmhxSnE4V14kX35LTlEjSDlEWEk2PmAjbHBNczdHVFtPP0ZSWUY0QzF1bF1LfWo9IW1pYSokOU0ldDooYnsoJHlkJCxzbC9WKlF4IjIoU3BWKDF0Q1s8RktabFBQVyJaLlRFZmJ4Z0V3cCp8fSl+eXc6Iy4h''@;'; put 'put ''OV9tdiV8KyhtOiRdIzNyTCksKUEwMW4iYCRgNDM8XjIqY2dvJmUsM0BVbzFxLn03ODozQWZUOyE3T2VkTlJIJnZqX2c9Kz9mdzcpUCltU1h8alVKV2B+UUx9Q1Q0RDxVP1N9WT81bnVxMn5bcTI9JV4mT3AvR15YciooYWp0RHRfaV02VVh+Lj1SW002fU9WKzQ9RX4zbiU6P3t+SGhSbGhJNDQk''@;'; put 'put ''TyRgXSslOjp5RTs8JD9bVUIkLClpP2lyfDIyS2o4V2xpdnYpcT8mXzEmMEtHXzRvIU8vSnxyaigvbFE0Q3ZqKW57L1RkT0xEYTg6N1U0WWB5X2N8aT1TOTJlW04iNnpCWzpiez91RERATDZNcz9RYF5RcldoL18+XkhjUWpDRDoxcU5MUn1fL2FXJWplenV+SXk9dy9AbWNSYnd2UVZuPzJ4RyIv''@;'; put 'put ''QCFfImAicV9qVCUvbnRWXWciMWM5TzVSWjxdNCosdmF2NnUsaFQlPWJ1RUBAO2w7WDJNUExQV05meihOZCJKQ35YTGR7U0RoQWNRZ3YveT9ze0tJKTtNb0JudF01Y1FndjU6UWMyTWA+Xy9FMGNRPCpEOiRaTUx+QWV6YDlzb3pTME1jem5fSFVHTjIsJGN9WytCWSVaSlF6N1o8djVnTy5zTC8+''@;'; put 'put ''XmNZV2AsOSslc2g1Nk1QezJ8TExLTl9RUFlBWkFMW1ExYVlVflt9UjAze2p4Xj9Rd05AKzpoZXcydyozTCYicXpqSFh8W1YwfVJQWW4peS9ZYzJNVUhAQG1rN1oyTW14NWd5RTsuYXl0RjQ3IVRFVXk3W21KNjR5TWZgfjhDV0xHc2pVeVJHX0ZufkRQMSVyfWtFJVd9VzcsMGVGZ1JBIk5VQlhl''@;'; put 'put ''fl5JNFFBfXVqcjJgYF9STCgsW2V6ZWQ+fkk7TkRXPy9ud3F0VT51RH5MUzN5TF0rcj0wRV1bYSpzflpPakJ9QVpSTEVgdz1tV1J8akUqc1paT2p+cWROcn5WQ25OXUBHa1BmQ1NOMDAhW1QwITlQVkgvYVclQzI2Kntge2pTK2RYKX5KcnooXSEwSUJzZE41aXBmPm9Bc05OcmA9PzkxPzB8R0FM''@;'; put 'put ''YURMVnNHLl9uNTtocTxKTUI0Y0F7LDolTk1OQFBBfkBePUZheHF1fi53YytdYCNZaVdgTD9jQEBTQSpaWSt9WHFhUDFDIl8ve2owND4xO0FlRzkpZkI+LCgre3khaTB1MHcrcjphTVB0UFAxdGBUaj9YPilCU0xqJSsoSVl6eWtrcWQ/KSxHZzlUND8raWgsMXw1U245L3xDdj0uXnRgIlM0eF9W''@;'; put 'put ''dGlhJVRgVEZJVk5UVmh0VlooZUVuQ0UxczA6M1Btc1N6YCl7ckhNa09RYzMqUmlaMV1hMnpmc0hdMjUxcHxJX0h3c1VibTghTUdKWC5oeX17PTxyZEdQXiwlNnJnKWw+UUwlXk50RE1gVEUmbWVaanAxOUZ3O3pyP2U5MT1qQC9dIiYmWns7SmZ7dT9BaFF0Y1dtYUBNUkt4QSwuRm9vaTRbV1BA''@;'; put 'put ''d3cwW09eRHM7YnFvNVF3TU1qW3xIX1FMXi5EVXN+cXFjKyNvKCx2JndjWSsjYFk5aFdaM0lgX30lQDJ5cXxCeWhXXzIvcVh4Lmp7VEN9KHZnSixYS35QUVYlVjE2fCpmOi5hKigxWDRHQiQxVG9wSWlGdzFhTn5hImBHeF9fR3heXno2NGcxLGckblBNalpbNXlTW0JLZH4ybXo5UUxTYlNZb29K''@;'; put 'put ''UU8welJdfX4uMnlvfDF7NHl2NnAxL21+NHV5QVt3PVVMRXQwUnV4SWopfHV2UUxZeF9RfmFZTUFMQ0RYWVsuOTFzTiN4dXlCWSFLb1pZNUNPd1R0VkApSGo1ND5Qb01jejAyOXtYOE9oNl5WOjRoN0YzUFo5cXVpSCt7WC4qT0UuWHs6L2g/dlcoNjRJRlh4WzQyeSxiV2Y8TCQmfm1RVjQ7UHUo''@;'; put 'put ''KXteQVUxSXxpcT9zQnhuMSNxNig9c3dCT1F1cTplfGxvLGBAKU56NDJMeltkfTF7eENYPHRZNTkkdWZneW9bSTJhPjVSYTNyPUh0ZGt7ZiFmKGNXKCUzcVQhcHBzYEEyTikuJncoUFEsXkc7P3N0RWNnTHspWlcrOkB5ZiR9b0pjTkUpUWNtOGQ/Rzsxcy5oPHM3Rm1Wez40ZChoY09HN2h8MVcl''@;'; put 'put ''fT0lMWh4aGMrbmArXmdXUDFJYF1NIkBbQG9lWU9NaiR8WGtRTG0seXx2QlYlNDBFYWI8bn5PZWMrZGA2M2dXYTBIbzx9LzQyeXZAS00pLFI4cXl1eX12OWswY3hjQXMkKT1WPjRsLyRpPSxzN1pGITEiYCMyMnlwQGt4bVc5ejEhWU9vbz9PSjB6Ujp9cnkrK2tvI1tBfUBZYys0ZFglZkhIYURV''@;'; put 'put ''YnxMUGx+NSIvQDE9fmBYdUMrdENVSGh2OHdiNm1xVjBBekdvL31odzJ5WEA2UCRzJClIby59eXRxIi5qR0tBez1zMnl6SSt2QFFzeDhTQVdveUEuaTVzd3V5SkBdLDB6Lmo4SUN9K1c3I083dHx3ZFdMPFhFVXh1bUF5ZDlGWjtbQH5iLFZNPURJKCx9M1Z4dXldWHJ5ODVXfHFXXU9QMWkpQ11P''@;'; put 'put ''VFZSMWFHen1bMTYqUmAsWTMwY1krWkdZJV56RWFhZmt+Y1VqanE8WnhBV1lpe2tQYlclO3pHekdvQEQuMXF5TjNxb3FOQE1LLyZNKFhnK3NvcU45TSxDfngwMVMjSTdxb3FOR00sQ2dzPW9OWEovWU4rfmoxZ1JQWXg1dXlCQCtyI3M1SlBAZX46bDJ5WXxwNitCY1FZN14vQUZUTG5fWVYjc19J''@;'; put 'put ''eCg2R31iQXMpSSIxSE1hY1krM30zKXZ6L0BlY0F7T35MdC9AfT4iYE5zdnZiTHJ5e3k8TXs0WERUNVhEPEFbQFVhKlpaREpgOSsieUROOmNWK28/WERBQioscDBCUl4mL0E/TXNRP01DOkguKjFhTkhSQXtwfWMrMH0mO1clYnpBemhEcDFZTGZGcVI6Pz9AW2NjdGhWIVdOLDp2bVo/YTx0MXUv''@;'; put 'put ''QCpfQX00Z0RyZDlAW3osaHlIQD9UQHcvQDFFfVpTNE8qYCxgdyp4ZDF7UiZQdU0+SCU0aVdYVXFOMWEqbkN7ZGlQMVsvXy9lO1NMbn1lOzR5UHNXQmNRQyouNUMzR2ptajtaY1lBc2BsQltLWSVUdnZBc1cmSWBoMGNRQWpTaF1gVEUsSG0kP1FFKWNaPlFqfjpeUlFVYDBSPX16OD1MNiZjUXIr''@;'; put 'put ''P2N2T19zVnBxb0F0bDkhe35+LGdfc0g2bXtCYSF8aCJoIT9RJGdbTnF+W09yfkFKQUd2KD9RXUx1fn5XdWpiSHx9QHRxLyFNNXlzYyk+ZWs8RD9+PT5sTndJPX4keTl+dUhNYjp4On5VdCl9Z3R8VCxIQSZYNHwveTFEfWQ1dXlLfjY7M3l8ezYzU0xQfXA2NHlee0J5TEBLRDxRd0MlKE86bEdC''@;'; put 'put ''c35KRnhhalVFR1pTYGJ8PTFpfDlaMUYvSFp6MkRiQGZYPWRgWF1AVURWRiprNEFQRDJ5dVJjL1VIUDFiR0NdMyl1Ki4xaX57bTkoN3phfEF9alBjKz5fdWJmV1A9LEloc25LSnRrfn1ia0lCTltGaldIPXZBfChlVyI8ZUR4TCpzOkc3TXp6NFUzeTI/UEF4Qk9qbHwuaGV+eGx4OmpUKyxLJXdN''@;'; put 'put ''YitRQ3MhOC8vUVhZOnIjZ1QlXl0yfXJnWjUhOjh+OT5VJWxuZEI0SnxNPWMqRD9yd3gmMX5JIyg2Yl0zdkVUJUlnZVdYbyxWVGp7JHNFdl9WQyRye0R7cm4uYEJrJWkoJVkje2h2WXxzWndsWXFwaiZrdlFjUFQlXW9pVyZiRF8ob0d4XW9MTFJ0VVszIWUoXW9qKGRlenI7LEp8fVR7c3hwdlFE''@;'; put 'put ''Yj9vVSt0fn1tcH1fe3UuIzZmVyQlI1FXLnwkXz96RWpzVXgqfmc6Ri8rbi4mRl0vMmlzakFQSlU/ZGcuT3osKkkmfjxATXxAWT9uK1IoPyhJOnttMUR9NEkzPzg9SG8zbUpWYSNHYDIqcWYraS8+eUZxIjtzaVs8OS8+Ry80eC4mOWteVXozfFk2T3A9RyZbTy5AYyEsfnh1a0U/fCRDMnw8MkU4''@;'; put 'put ''JD04fE5Eazxyd059Vzd9QGMlcWU+ey90Si85fDFZfXhVTVUiVTReSzh+PndLKC5BSzRuZ3pyZ3hiVFUiN1RxSWt9Z0N7LlJFVihuJC5RJlksclRffHNiNl1MNyNQOW5VLkAxfFtxa2BzVEojd1l7fj9pPCZKd0Eobm9hViZHVzBPYDxeRF83SD15W3FXYDFZcmZyKn5JbjFHW20oUlNyaGdEbyhI''@;'; put 'put ''MC4me3ZOJCF1PFFwYmJ9bFRERkVJdCw6UDZya1J4ODJQfTBaU3VAJGhPKTQkO2YsYD4+MlRAU0tFKkBXejEzNFQvcT4ocj4sfSw0dD5neHwlens1XzB4cHxfZUxTOV5XPyVLY31IMUBKWHM5fWRAJDUwfWNEOyhdcDxBfGx+fVpmRklkT21BJSJuYGhFMn1wUG1BMnI0X05LKSR3KnooN01NMGVn''@;'; put 'put ''dlQuQDhXNX13dG8+djkpP3hqWi9CQ3UvOGhJT0k0clF0dVNUWmluPmhnJDw+OD9eckVlKGd8Lzx0ZXt7JEpxPiUhWCRedTt+PThpYTNyNlApJFZGNzpwJkN9fmZHSXtUd2M+aiUqSEBYfFBxRjUrbzA/eGVhPD5YUXtVUjlEODR4Pj8zYHdRUlVgcGFtPiZyZjxbKDorTUojfVJ8bCMoKTorJUt5''@;'; put 'put ''fWs+MnZTUlVgTHdaYzltNTBjOTJ+M1EiJmZAO0g7a15+IWM5JHBxTXxHIzBbTl52a0NrOTIiflBXXUczZ3dIP25TdFFgOSRhfHpCUkNiczlbVkZrKnxzc0FtLmBBQSV3NW1XLE1raDVCVWZPS2l+fmxVXzUmT0BmVSZ9MU1DKHEzOSFGK31+RjU5XkZKTHkhNVVXKGlYfF5wdWc3L2xbVEVsfC8/''@;'; put 'put ''N1BqUm5fbDEiVjh+cCw5PjcoTDQyUGw+Kmhqa3ozOnZkOnM+e3pNMWtGRHszWVAobEA6SHF8bDBML3k6dypULDhoVzdNNDVXa2goUWM9L09yV0c2V0dLcTxya289NCx+Sm01JClrKT9Xa0xeV2ZWWzw5U2N5W1JBfGtnR0RzfUJxbj54dVphI0l7ZktWZ1o1RVl6Rm4oI1EzPjhoSndqKFRjZD12''@;'; put 'put ''QjMkRVl7czxvbH1QMWZVNy9UfHBhUXxLSVdqfklUfC4qInIzfVswSlNrX2h5a18sJncoWUNkfmEpJmYuJipeIiQ6IX5zPThOKyZpM1BWLDdoa0dySzgkUG1mPDshcldpR2k/NSR4bkoxKEkmYFNQdj59aS4/PGlALjlXYyhJREAmfSooMy5WeD9wMl9pTisoM2NaVFthX2ArN2VIODE+KkhHRCNM''@;'; put 'put ''OH5JKD17Tng3NDMhMGgqJFFrM0A3JHEqKkFsezpKTXw9SzdLeXQ1VzJ9cWdRJU5IPDlpQnxMPDJ5PiV8MmMuc0kqNCRaJEB7SndyVzBLezIlYmU6RjxaPlhneXkvbXhmVVs1LEtJNlhgJm9qfSZJMS90b1ZdU3VNIj9QfHVqeixUdSV+ZGQwfWYpP24qRS59TnUiJj5OfiZvYEBJZWZAMGtsYnZv''@;'; put 'put ''Qn52cD5rbz9EfWksLGVeLHJsIXlVY09OaWpCMF0kaFBRP2VhKXhbPlpsPmQjQ1FOaVZMMlJfJl8jb0lwSj8yNmZpc2whTyZAX3puakJHfWhfMV16cixUMnJUXnlyangrdjVgUHcmeSN7Vl90UkoxOlRAYEtuQSg7JHUqISpbNF9SRnx6T3FzS3YrWGslOV90UUohaT9wL11YU3NyLlMqfnhfP2VE''@;'; put 'put ''PTU4O2ZJNCoqQTlAJT4zfW1GQVV+TC5gRkdIfWFFVCVSWy4sJSY/bkd4RlhhXz18Mn1rVDF2RnRtPjV+Zyw7dTB8fnUvJi5RKCEzRE5gYXYqcn1sLj0xT3UrJUt4cz1HLjI4RE5gTHdBNjdjbT49cWs9Il88Xks/ZmJPP25JemAxWUtdcSoxXz1zWlgwfUVWWWBNRGZ+XzRaX3dYcT1bVyE+Qior''@;'; put 'put ''JDhUZTRKMWtWanNCeS9IO2s/Yz5qWV8yZjB8SFZ9QD1tYEpxWUNzUH1XUXdsSHs0KiZyYEM2UDZjezElLHE2fmkuemUobHRYV014W0shUC8yNVJyV0I1TVVALkJ6R1Y0a3osTVQzPlRTcyplbGZ7OXkhJGkiMk06JlZzISZ3KntzNEVPUStXN3N1KlJMc3ozb0V2JF5vWi8md1lxZm9FOnxSfCNV''@;'; put 'put ''bm9qQDFoUStdJks5MVV7LkVAVXhffGI1M3hpIVl5WlN7e2hfKG5NfEBVLGA4PEpxdCZ2a0VgTHchW0xxTHB6LFkzaldweXF2aFRyZz9QUShJPDQkc3hifjY8Si85d28leTpBc3xZd244SC8qP1FxQF9sQ2tHeC4+X3MrJF54ZHg3c346UTQmYk9vVnhLYDQjRz9IeGs7bklRYH1QK1BNRyw4WlNl''@;'; put 'put ''ezZKXWA4VHFmayVGe2dYLDw9cVJ9Y2pfaXc5UlE0PVp+THwpUFtuW0FVfWk1dz4pfTJ9V0YvTyJZfF9wOms+ITsjQTBPV25SejAsZz99bFJ7TVRHUTZjbH5tblsmK05iX2l2Kj5ybzxwSkljPT1+ZWorcndLOFJUJUVtW35mXURoLiRWUUErQX5kP2JuPG5WXyRWW1s5ZXwmPUApJjg1dX4oQUVe''@;'; put 'put ''YFNKOSNtQDowfT9IRGtbQWt9THU9JnN8QD80PSZUYXVXSWZPNWNnYVBXMCk5ciZ1XU5SbFVDWl8hK0Z9V0c4MTo2bm1aZUR0ZjReY10wUEIqMFM5c0IlLyprQjtsTyFlP1dUcllFZkQkZXs1cVImWjVJbykxQCRULjUlVDtEOnBaeEU4WyhBRXp0Y2o6ZSxuaD9dLj9TWkREQ2RKOD8kbCUzV1Jt''@;'; put 'put ''WVREYykrXXdbIz11TE98cXxJLE8yPH58c3JLKylvPGcyM28oTjU/JkclYFVifDVYMkIlQW1NRmFLM25xdmhaMUJ2dTleQ3k2K1UsenJfSDYvPVA7SjpGIkYyRTYkJTg3aihHZGAkWFZqVHZmWDt5SEldVyFNVnA4fmhXLmBDZlc9VG46L3NWMzUoe3RxNkN6XzZ5Qig9Nm9dN2JjL018RS5NM2RV''@;'; put 'put ''NllJellfQWVCODtOMEB+bWAqdT18UGRfUGxTVFR1c0NQOWZsPFlqZWdfP2thQ2EvLGZuPlZycnttUWcjQWBYblBHWVI8aXU+b2BxaD5AQXQoei4+RkNpNHZEXXU3cmNSaHcrNTVUQWkpSGN3VG5oIU5QVDVwPi5SV2RITj0mRU5INXpETShXKnwyb3dRKCN1eTFndzRyYndZT3d6QX1rR11XIU1d''@;'; put 'put ''NkEpfjYkUzdPV0dvdThKbi9idnJzZCssfXhGMXw5TFFERWZvPlEpTVY7WDE+eCEsVS9YOE5gKTYkSjwpRUBbT35BWHdEKEZyNl1FMlckQTJqeD42RmdBdldVfmBJL0w0Un5IWm5adHBJeHRXa0Rfd2hYfXtBcj5zOiszJDZjOFZfPEAxUWZ3TyhWciUwISRjXmdrWEF9azJPNl89QDEsdWB6ajhq''@;'; put 'put ''XTN5VWdIXS9FPj1QWDViZTMsfT1SW20kNjkrYlVISXpQcElgUUhwdElPPlNYX0c5cm11dFJzQSlVWkYqZHhSMTlyeURXY0cpWl9pfHBGZkFVbl8+X0VIP1puYS8wRTlucz5adHBJLEw6MEcmN2pRUHUzMGhEdjskfkZISTgxUiprezxEaGNrSDB7VE9nYzo2bCp7enFOek1DKEtwVV04d1Z1VkVb''@;'; put 'put ''aF1fdTlicD5sYEB6ckxnfDxVeXhhMUIoeTBVI3wwdV52IkM0RzVUeVdsQkRmVl9acTZDX2huPjcoVUVhIltKM2pzNlF9L013K1gpRGQ7Ymx9eTAxZ0x+TSk7OFtyTCk4UDcvQksrQ2Z2MGg4LDhoSG9mKGVMRyZUU2M9QktxVzlmQSg0VlQlUn1NfCRqR3hnZ1Zfai45PlUhc01HaVZqLD8ubHpb''@;'; put 'put ''OkRWdDpeX31VeGVzPHR2UFtucn5aQzVyISx4PmtbcVd4eTleOG98LmBzQ3pwQDg9LkU+eztPMHJSZyJld0VzfFJ8dUkjLHBPRipSN14kWG4uXT1eSDxNfDN4Ung7NG8+bm9vKC5jNVlnaV0mViROMVlaXmAzWShyU24oSHtUTWBrcCgoOGglfHAvb0x5IkRUbS5sJCkkYUJVNElOa2haNUhJMUM5''@;'; put 'put ''aGRMMH1lbityekNfc19KLyZudyg7bF9OR3J6N1BmJDtsODtLbSloXnw1TVVWcVlwIW0xQkE9eyg5PnIrKk80ZilINEhXeG1HJDp2YW9tYX18X3tYcEhQYS5lXjk+JnI0K2xIT1tlTDg+IXowLCx3MWAlQyNyOTJEJmF2cX5lZjpGTyhwbiI9cV9mfXE+JD1LSTtFK0MxYCU+T3w1bThzIShhWCN6''@;'; put 'put ''RGgqXjFnaHp+c21CMWVxKmhmN0wxcyxXT3FNKDVzbVpPNDZeJGA4PjpHUl57TGt4W0VuQDVIQmE5VEE4a29dWzhzK3dJMTx5VlEsL2RzQ2FQUXtlYn4sL2V+XWtVXyF4Zj57bz1+XSZEW3IjbCFuPnJna0k0WH0mY34oaDgye3kuTUwrdn1ZdTpeTCF0KD14U25MIlZRNF0sfntDTHxLSTF9Yzt4''@;'; put 'put ''c0NFcGMkcEM6OykqKl1wTzApaEV9JUVoIXdZMmNuMTVZMWVJeGUoUjVKL3sxSDQxcGdkcjpeKSg3OVA5ckwpRUk8W3NCTC8rMiZYZT45PntMSTRFNUZWRSJ6fX5DN1RdUTZfKm8ydCw4I3JVeFRneHg/fHQoen1RKyFJSDJrfF97LmFfVWtKKWglL2ZJaEMvSCNlJH5iamN+Qk15fGY5aXM3Wk98''@;'; put 'put ''UTZlPGc4Mz4oZnQvejwpQGRQVDg3PDx8cnhsZlo1LjhqQnBecFdMWzw5LjhSfCw7eHkpLiQ2MF1lel5QOkpHZmtvQ1suYDlbbmNRSTxbfnNQITJ9U1EwfUl8ayVkfTY8LHtKfDRGe0hkdyhMV0M8cjN9JixDVEVZU0MhKj5yJmIrJDd6el1VeGQoW00/SDBaYkJ6azQpOyk8LjhoLDFHKk9STH1Q''@;'; put 'put ''MW9KUWtTfi8/Oi40Y0MiemtlOm0oX1IlLGFyRVkje3pyYzlwbld8IXN3U29JPTJ8Jnp9OXYuSU18NChHJi9TLkA9RGV+PU5GViV3cmd4Qkl+JC9QcXdFTnxLRE99MjVdJkc3b3IudHhzPDFQWjlgY0RfaGckQn4qbFFUPT1bTiVYZUtEUXgvPUozZVV3RTZ5aXpJeD1EJXk2IXQoeTRESll4PjJf''@;'; put 'put ''cDxdZyt+SntYPzdnXz9yYiVgW35fT3RbSnU8cz5HcW9HeXNffUA0SnZzJDl6VW1kPVRQTCZtJiF1PjJfNE94bVhXKkRjTXNULCpAZ0JdZig6KztDPHB+Mm9dMU54X35DNnIyLGs+WyhdfnI2enJJQ3JVU2NoKGIvS3Fybjs2NT9uQnZ3OSpWR2BrZSgzXVNIRXNuPDk9T0svPnQyJSNMXWcmJVY4''@;'; put 'put ''anhlLyJzQE0xPzVdY3BCSm1FM21RflhTbiJlcFg0NytKTmNrW1Jld3JSWjlkUCguUHJ5KlNpQDN3VlJdQFoqcnc5XkQ/UyheKTBVXkdASytDKWElUmJufEdncTphbF8+RGlzYG91UEk8M05AYEJVdj99RU9iIn4rdlNuVCEzVT0uNX0pY3M+Oy9hMyRPakVTRTYxIj9mPjdnVX1BTj0mOz5Kc3Zb''@;'; put 'put ''OSIoVUY/M00yNjNVfUQ3fSp0bT5paGc+bC8xRjxiRT5nQ3BsUE00fDU2Sk9ianp7b2t8cElnPkM3OyptJVpjI0tGWGNwPUslXSJROl4/e0NZfkc0LCZtdGEoIm9MfHEmIVNnWVRgQ3ZjYzg/O3c8L3d3QClnbnZJISxmSjBfWEVsals3cG9WV0FIRFh0fGVJZmw3WVc6SEx5aWFdbXZnLzw0RGMo''@;'; put 'put ''aH5AajgrRihGWmwzJXtifndTYj8yMHwwWH0mZkMvNWJkTHVIb0F9OVFdKWdzRFhkKElZeSh3Kk4vMWl5NjxzRFI0VHtlOj4pNnl9c0JeJkJDcUwkelUvfDQmXWJnOW5KPDB+a300MjY9fU1FZXpvTj02eE9HZFA0KC9CYmZvY18kOUorViJRYHV1fUQ1LCZVdGEoeWdhZzNkZiZESWFmZUNgfT1K''@;'; put 'put ''QjU1PUpwKjlLbTt8Pk5OXkFaSSFlV3QlX01kOXhCM0VyNWJ2JFVJOykvW3ZJWFhMX34pUjleR1RNai9PM3MjblB8I0dJYlkhWV5ARn5xO1ZwYzckMEIrMDdmbEV2d18pVitpOi5uITx6c2s8WF9QSWNqJXdhfTUwcT5VfTlTUmprZDoxRT4rdHg3LFJBKXZBVXNxUGNfXWY/fEV0PyYwdmxreEJp''@;'; put 'put ''KEhJIkBOS2skdyo3fEYyWm5IYHJGNVN6M09qSGA8KC9WOUpmKC86OjJSJlN5LzhAKGZRVSgxWTlKPEBKdEQ3NyNVQjpzXyVuKHg4LmwwNnczfXNeUCl5WEl7UWB1M18xWTRucSpkKDZaeG4qL0MlRk9dKzZIYzc+T358X2VnTFhSPEEvdltgJT4rPGdCPj5YSVtyLkJCaXllJj1ROTh8bj1mY0RO''@;'; put 'put ''NzQ6UU5jLC5TY3RTNHZxV1ZDbGI1RWtvPHZjcyh5VG40IU1hdGhtQD11VHM9eVs9eCx0KEFiOH5aQ2NfL1Z4dHRxNHlHYHJ3JTFRWU1SUTRKN3dLXnZFSDFKbFtQSVtyfXhAe0tzK35TZkcmO3hWUWMhLH5EZFtLUld5cjo3dzpfYG1WdT1iZ3VfOV1CKCNNO3NFT0NNPjk0PyU+OiNSeDEoSEk2''@;'; put 'put ''QHpZOTdIVFUsXXNST0RoYHdifmN1OH01LjUkdUB6eXx9Wy5KU258fVNRX0NbWlNkfHs0UV9IQ0MsVV1XZm9pfktOSDBGIllifktDcG49XTU6ej42ZGp5cSNBdTwvVnNyX2A+eTBub04ocFkhe1d3WHxWaXwmP0AheyRDWXxNO1lubVUhJjtXaG5UcTI7X2c9VWFRUXEufG4maFpaVjk3PnNNJmYk''@;'; put 'put ''R0JmOnh2KFt0bWFfIzdNRnhNNlJlZ3s+PHhhOk9sYn14YXc+MjtoX2YpaH5+aGNfPFsra2pjJj1QUWRzTGNFdUljeXVuV25OTyhDVFglUE02YHd4PCZxfDgveD47IWQlZl1MfD4oI15vMW9ZNDR0PlpAUGI7ZEtCIiNKfHlbYDM4ZEY9UTlofFJ8MlQ0fnEqVGtpPjBGbXszd3c+IzVXd2NTX1h2''@;'; put 'put ''ZDVkRCZHTHdDWUZfamB+cEEyO0lVQDRBcjh9bkFjX1Y/QTJsXSUqUFFiKEdCb3JiY1ooUWNOfGF0Zj5mdCt+JlAwKUxFUFFsMUskImYhYEdWI29fcCVbLnBbWnRTfncsc2FPenJKU2NXKz5QUT18XmhTSzcrX344R1dfdj91UDZkSit1RCFgMVkvPDIjOH10WDJ9ZkhbMkQvfGwxfWZhdj1zZCt9''@;'; put 'put ''dnt0PmUwWXc3N0FlX2VYKy9xRHpWS3dYZXNYYjQkW3tbMzU7QjZPKFhxL0ZfWWkoZVI8cFU9S0lKQH5dPnxlSX57fEZ+fDQqWW4qbSteZiEzeXlJJXxLPDoweFU3Xz1PPCY+KHFueV5JMTk+VkVbaF4zMz9WU258SjRHb2VXdFg4fmReXXhrKHtpLiZnRCV7Ijc9OSRRcEN5V2xCKn41M3tMSnxv''@;'; put 'put ''UCM5T2VGPSJQaHMsYyV7aEg3fXQ0dD44JUtJTnpAfnlYV193WEQ8VGpRNDh5Ll9aOHJlTU4wcnp9LCYkfjh9S3ElZFFuJmZbfjRKYXNtVHYzY1RrQlReb3BaW1EjV3xBQlhPV3xiR0JHVUdaQn5+PkNVWyY4KCQyOks0Sjc6MkBndnApKl1zIVhdRTJYSXcvfT59MzBQfGZRdn1+XWB8QjNnRkFa''@;'; put 'put ''UG08MiopRS9hclBnRE9PfGxpRmptMy95KD4kdTNvZlEpSnJzTGZXbkd2XTFYJSRdQ2ZXLHB8KjdVcHledTtTKD91UjdULDlUeVQ4WVpKST9xI2VuVCVfcCImV34oJkNFQig/OFpMPGNtYWdOWyo1IkpsMGhWKT9RdXwmTTU0PmM0SW5XMngxZS8+MTtdQCNRN3xiQnFeU3l9RmJuLy47c21uKztQ''@;'; put 'put ''UUApVkdsQH12SUVxV1d4fSpXUiFNUW9PfTR4WG5bbndEOTFgcyI5VV9jXVV5aHpjKiNBK185fH0ofiY8W2ZyNmJmKChyOH4xP087cC8jTks7Vk8+clBje2RMTjs+e3NrLFRfTCsoT2R+QWl0PlQjJSRXfFIoQjF6cjtzVUIuQ0JRbD5BWnw1RWZzX310fnJ+aUNAP2QufVciRCQha3RDfGdxPWpX''@;'; put 'put ''PllaLy5fZVlFIThNU2xGRTM8RjpRPTR8VFk0VSIlY1tuNXJzWkZOP3h2M0t+YFouNU5nd3o5M0JoRyZrO3xxam41YWpmdj1+Q259WXljQD47RW9bJnEqdGdzNlo7Uzgha3pEKlJROUsqeCZUfChmanQ2SWM+eUxxcEBUI01BMF91REJlRi9QNCF5NkIib2dzSVFMcSZkSDU7dEF+XV4lUnF5PHIx''@;'; put 'put ''dWlgZXk7ayNod2NFPmdNWDV1QixAcjBwfFFDYWFrQDt5JGFxZCY8QCk8ekB7YmU7L1dITkFeQ0Zhe2FWVWlSSm9sajhCfkc/Vy5IRHRRPzApW2IpLityPVJGSjtIc2M1KHg5LH14KC4iS2A0TmNKWEVDPmQ1IX5uRDZ+IzFYa0xvLmJrQ09acipzT3NfKVdVPUxWU0tFWXZ2XngmNUNoTltHTHEi''@;'; put 'put ''ZjA3K2dCYk94SlYhZEg8VlRwaEd5RFdPRFlxPmojdmJmSCFZYGVhXXhlYl1AV0tYTkxEeFp5YzFAViQrNX09bFB8Ym0/PnBjZXwzUWZfUkJRbF4kPnNsY2Y9dCt0eDVTKkBaeVt8WDEsJil0LHN8PkxxIUJXZ0hOaltyMGVzZi5Me3IzanttMSYkQnFTMUldO1Y1Y0wlXSVxXih1JT1nY1swbl5t''@;'; put 'put ''dlF1XnZRTWV+WU5YeyJwU0BzMSNtZVpiTDpfbGlZI1JdMl1TM3BxVkBjQj40W1dDPEpCLiY/VmwpRVoye153W1FJcVl4ZXF2YkZ8M1NeNDR3XnAqfk57dnZiRVV2IzRXbkxYbEZXRzlNc3BULEhAZ3VdVE1EaFdhVjRUczRMS0l7ZH0zd3lUXVkmbWZIQlMwRyozTy9CRlo7dnpGczlhTTE8K0V4''@;'; put 'put ''RjdhNjVuYDpBXio9KzNJSWkvXzBZfX44RHdZT0JTXX4+PWVrV3ljfG1raUtsQn12OGAmW2s+Kilbcz90X3VhWkFUSE57MltaTyFuKS9GZHQ7RlgzMF8mYm9lcmIqVCl+S1BDWm92LF5XSmN+OGZYWDx0UipoSyw+Kmk2KXspRUUufWp6cz5rNHJ2fnYwVTN5UUdZRmk6P21aOiIjWVheYSxsWyR2''@;'; put 'put ''ZXltaElAWSN0KlphTWorJmlaQFRwRVh0d3toK0RRP1Z5dyN+Njo+MUclfFB0KF9ucnd+UzwsMzUkblFxIX5vLn0icCNyVWNrPUUlYClyMW9CO2p0aHBDXVtDYkMiXVRnYllXPE0lemIoXWhXY1lZKEspaFkqK3JUQllFPzRJXkcmNkZfRVJSSGBYNEgoVClFVGVkZ1ZiK01QOH44UFYqe3BwfmdH''@;'; put 'put ''cj5qdWIzJTdiIkxje304dWVEcTQ4dH5dcGAyZkw/cmJfWURPeUAyXm0hM1VrUGNzb0FDPVs8TnBLeiM3R2VHJHVYQkdifFdlOGk+SDVNek1ZaX1xPk14bE0/a0BYPiFZIzZmVWxoNzptMnJjdWk7LF1CU2t1eUptQkp0YDFnP0MxRG52MUlTY3c+TEZddFghXiRBdCk/fEw/ViI9aT9iW3xAdUMh''@;'; put 'put ''fV00X1hbSEZtKjUoTmckLm81KT1ub2ZxWF5OUE1pZlA5U01XY1twe3spQiZyYzlCWygqd05xOEQzXyVBNENdW1dRfkVFVm43SkM3aFF9fXx7cj5bUm5kQWxLPyYzKD9jdy5ydVhpaDFtUDRuWjR3dzhVRFpqIUozNnFkL2FTcm9uJHIxWnZaSj1YITZDdVJDQkRydTVhViU1RU4sbCxPQDwlLjF7''@;'; put 'put ''eTZNTyx2MWFMOXEuTShIJnk0UyI+eXhJcTJVVzk8SzYobjt6cnx2MVtxKSxbfXhGL3VXdWdYJntYQyI5ZXJQN3ZzbkFOfHhxUEAyYjBfSnl8SUtZWXcrRUg3LDtYTWU9KiZFL217TnlHPE0/TXlsR2lOZzxlSH1FZj1fYEkpcXp1K0NIc3NRRlVtZ1s/Q3I4fHpKU0JMVmlmI3d8Vms4VE5iZU05''@;'; put 'put ''TEN5TXA0c1t5azNVXTBDLmA6PnQ6IXFMaihkM3l5TnxZMUt4YzcxJn5xL05xSjNXIz9vI35remFubzc3ZjA4TCxgT1F9OHV5RFReQ30vdUMoLj9KPywlcX5+X1pZNjg5NSkjOC5PJFVDSC9IJFNgRTJARGwqQXo1VzVRWEp0WERQXTMyYWJnOkEoMG5YOTpbZD0mWWopIklPckc5JDw9fXk9Kndz''@;'; put 'put ''UiUzWEB1fCV2KHVifCllZzpsb3dRNWx+cj89dkV7e1ZOUkd1Y2ByKHQsPW1yUmBXJDZ3YnpyPD46K1Baan45LzhUKjpQOjpCTXxCeU1za3hWbTg2Xz41aC4kRGhDeSU3N0l6KEBOcGB2S0IhI2xlK3R+ekxQfCZQeU5Wb0Y2XVhHQDh0cnxXKzMrcmNeaERlUTw7d04yKFpnSFg2cCU/TDUkKGV+''@;'; put 'put ''dHI/TStzYWVhT01vRzxQRXVSNyliM3ZdS3t2UHVmQ3JLOF9UR20jKl9oOT0+d0YmY3dpZD92aztVSUo5ZHt4MFdbTk5Xbj9hRitYfnwiIUN4cWdrYiFwSyF4UkorQ0doSUleZVk9aGNnfFh1dSR9TGMrXSJUVkJxbn5+cCldJlV2cSteLFdMUm5Ua2dNO0k4WE1Hai5kZ29iP0N9a2VkNml0PUdp''@;'; put 'put ''JllrJD9GRFAkIj5NVj00Kzdse1VJSVY6MUtDUjJfVDBoOVAmMSU8JSZeaiF1Lk9AKzBiYk1yWDFGc3NKQU1DSyR6PGduKTRWMUw9OihUeDNnSTJ1bW40IW8+QH5KbnJSUHFhWVs0P0wrPkRvLi9bKkF6ekZdSnY7PE95e1UrMiheWn1YJVlmSl90eGNkfG9QWnViUEJqYH5lXVs2JkZXNlVIZn5K''@;'; put 'put ''emJuOGZhTG91clZdKU5fVnk1ZEJ5UHNEN0N6diRSNEBWcSl4fiZPNCQ0NHVHL18wKCxJaWBMR2k6c1Z0enIoZFNFPnFCdylHdE1dT3pyfEA6cEBUeldAcUhKNmFdQFJ+ZkckX34/WypCRyUkWDA0cl4ue3V0R0Bed296b09uKiVUWltSUUA2Ilg9Y2hjOiZFJXwyK0l6fWJ3LnJ8WURXbUMuMSM+''@;'; put 'put ''eXdLNlZuUnojV25SY1AhXnR2JDlnXnZnUFlJWy51NDlTKXhffSY3Kyx9KWN5ZHlGTW9RWT8meTE/U3x4fHsoMCN9bXFQYyl0a0RAcnFELyQ/eiV0e346fDdBRVkvQWtFbnNMRFdfS28mVH4pe2VTRXJ5MGh2NSlnfUdAfU01bT4qaXgmKjQ6X0p5Qn1lNE1dT2NrZDNGTXwjMG43MTB3QFRXKChM''@;'; put 'put ''fFsye282elojQzkxb1V1XiRVIS9uPlgxdG91RXoqdGxYKmZLYVdvWU0ke2RITHpNQ0xxeWNjNk9hTy5nTnpfVn1JYGJ9dX59PSlEIlV9Pi54LyhMTDV1Myg8fEc+RXtBem8jZT0uKmF5OFp7MlNYPXRUQzpKOVFPTTF5TmpKQVFKJVhnRWQ2UnxNSENLMGY9KkF0WmBXKjBDK0YmdnpbJXQ0YGkx''@;'; put 'put ''bz9FOT58dHVbYm1AXXIqRnB0TDd0c11bTnEoST94ejRbLkxNMnNXelRIJWNsJXw0OTlbYyppKS8obSZMOkVdPjN8M1Q+aC9CVmY4dzhnd1kpW3l4JU5KUk9hdih6NEVzLFUvdGRKIX1VWFVRS0s3X0I1cFNqWjNXNCskcyVpSUw9ODhuUzJKL3dGaG0qKTtJQH5BZCRfNUxqYGZxU1ldYDoiTGNa''@;'; put 'put ''P1VsTUBKbDF0bnNrNzw6RS99TU9NRCJ4c01VQyQrY1ZFbnJDSTxlK1lsQS5fM08kRzlZeDNlZnUsJVF1YCp1IXI/dzN0PSFtUVZlXiwyXixEVDxGPD59VkI4JDJ8Xks+N0cwTXBWYENSTF43YmV0OHNhTWNnNGl4fDBNT30yWHsmTU4kWVdRN3RJVlZ+PCE9Z3oqfjdtST54VnVuKHFpUC5gTzdf''@;'; put 'put ''VTdMQW1fQUJoNigoaVBSQkBFfTVQNDsrb0tSPTo/fmptPWh2fV9ZKWBaNE1SY29ZZm9lPylhZDEudHBjaiM8fGpKS1JJM0p8X3hJNzpvdzFTSF9pbXNuRDIpYWtRJmh9fSllNG5CcU44fSF3UClIQD4mezt8X042aTc7NHEyfV9FVmtNWXlyR35+R1RpLmdMOXNMRF9rYXMheERwVmM4YEMsI3JW''@;'; put 'put ''IWtFcloudHNwfXd+OTleclhmQHEia196dz1yZWI/bkBSMV8iZnNjYStGZjtkbV15ayY3dkQqdi5NNmR8PHt1Jj9ycCVBV2wwRS5MVjFTbmM2W0U5WSgweH4oaF95XilZKVBRZXUxI2FQTSFGSDgqanMqJjpLKzoldDM0NXpzN3AsM10pUU4pYXN6Y3EvRk10MUpMaiNwPURfa0hwcjZHIX5FbFZl''@;'; put 'put ''VHVAdChiZCZHVihxcU44RzlzVGZYX1s0eF5zQGIrQkthfTlMOU9XWCFVM2hnNGYkWG5mZjA6QH01P0h5MXxXNGl3Z1doTT5zL3RjZ1ZIY3paUkFbTDA8aDx0fm4+eF5uYSE6cCFrdSI2Qz81YGNTeTZbQkZvZ1J4K0lXL151JDRQdlRbYGRbXjcoY2xzfU5pQXdiJSUoWWhtN2lDb0IwSF1UXlNf''@;'; put 'put ''aDpPYUV1W2krUGdDeUYrIz10Vz5uNnlQXjUkXzNaU2ZIOnxYWTA+LmBQL3VIL19JWnxIeDN2VlZOTVRRLlZPOSlrV0lHbG5HIltEfUtjImRaPVR+a3lAXiYqNERFNiRZOkZPMz90OjRjOFB9bDw5YmxeeG1XYWA/SSZ7cWJbJk4rTnNbWzNMdzpjLGZJYnk9UDAiYH1lQk98OldQMjZ0ZS4sSXhg''@;'; put 'put ''WVBDVjNILms/c3R1RyYrJDxlfmVaW096PmNrdlZ1Ri9xaXouMU83KGgjSDkzbTM/eWswenNeYnYjRi9QMD86dUcheE5tcCxpIXtKTipKJjVTTmxfcEg6Un1ne1YrbHgvLkZ+TFRbSEJ4YU1xR1Q9THgxQF8+RVEvTHcxWC9uKDl4YTdIWyRCVCVfP1FRb01Vb19jJTZXP28xW3R+Ql1VblQ8a04+''@;'; put 'put ''WFJ7aEt2TU1dfT1uRFlSX0N9fCtCTzxNZWRGUkh6dn1layVYSmpHc2JtNVhEbT5RQUFHMiE+SVc0bT5aNkNCKEpUe3lIX2A6SiRNc3UhZU5MSmZsYnIwWjc+TXcpMCU8fHFNYEtiPFZ4eltPKlV+JmFjWSJJIn1RenU+dClgV2QjdllScT8sK2pBKSs4WjR8fEUqYCZVdCpQMCYrXyZETig7QSt2''@;'; put 'put ''WVZ6LzFPcGFVWGoheWRrPD5sU25kI24pVlE1d04rJTQ0dyQ4WHxISXw6QT4wLExfXjNKYH4pKXxbSCo8fE1le2ZRKz5ZeltLaUMxQmp5KFpUbiE3TVlEe2IhYWZSdHcoYHkzWFFvUihHTCxKSDVsOXt8IVRNVTBpQVl+WntyN2M9KFc1K1QzaCwkMH09SHl8bUdvX0NEPXJsITElPUZtPTN5byF4''@;'; put 'put ''YT5Nb3pbfjBKQz11KyQrXiM8IyJgZHRpczp5TDA/KE9MRy9gS3EqWChVJjw3SWt9Xnh7NVhQemR8cWFOfF1SaXVedjEqOX55Oyl3QHBwKWBXI01ZTGl0W1ZaeTkmUDRVfS82IztDfkFrRGdTQFkySF4sY0I3M1UvRWRzPGdMdn0+aSJ0WntaLnJ9RkxEXTRYcUB+aTNDQFF2QV9+UUdae0Z8Mmpr''@;'; put 'put ''YTEvPHVTJX5CbEwkLFNjJDtuI2lhNUlpVzw7RnxNZjBibClpVG9kanAibml7PmFIL25HNStjQHZBaEA7S3VHQXlBQU0wSCIrMmg1SjksMm5LNmRVSiU+SG9TXjBOQzljdyssTF1qeW9EQUBAc0FzSWtxJS80YyNQbDRlVlk0dVdfOTxrYFEiVE9QQm8ieVVYUnY0SWsiQUFBQUFBX2tnQSNgWSJh''@;'; put 'put ''UkolcCUrRkxDLyphLzFGSj1KL3xIL158Umc0R01uNWVVZnl3dTl4eyZqZU5gKWpfbX1wV0AuY3hiXn4mMnovPDMiLy9admx5Kzc9SCU2WTxuQWpvezs5Zns5WiNHRWlRdzJmSSoqQj9tNWFFR3MvWnBqflE7TnAodElmXnhzdzt9QjVSYXJHPGpYUlNGd202LHFkSFlqXnZxUm9DblVtcDciMUFi''@;'; put 'put ''O2E3TDFYbn09bSRQISg3TVNFPShUYDRMdSEpMHtSZGhFYWAhOzE/M1I1IypsJD9LSHdgK1UreU8yMU8/NU1UVGs9Q3omOH1kYmBGQ25yOFB+d3Y8Ry5bTmF7eW9nJldXcXYhIWdlfi9YI20pW117XXFObTFZdlp3SWlOWmJUQCl5Smt1VEMlbH1rW3JaZCQxPC4rTjUsVktpVWlCTnAzbF1FbCpM''@;'; put 'put ''Rmw4UlFqYDtqN31yQ2xQRjswUzZ8N0FEI1hUan5JVGE/cmA+bUFKdnx7MihjYnVPW1FEOXI4NC9LWj5NL2JySnYidyZEP3x0MH12dUdodTtbWFAoWmNNO3A7Q01oIzt9Oz17KiF4M3ZLNGw1LHo6fiZLKCt2Z3BtMV1iKXAhQD59Sy5hN0V5KSlUfVBfJm00O0p5QmxSSUhpK3JtYzx9XzFRXS5U''@;'; put 'put ''bjVoV0pMe1ZbVF87XzYwOChUZVFoKzU8LiMrfFc2c2dgRmJIfVFeb25FYTN1Y0swekNwckZZdnZWM1Q8ZCVNVmp5KGN7RSQ6OVpXTzpteEkmQEZ6WWAqeUNZX0BHbGVSV1hIOnk6NndyI0FLWWcubV1udzBMVlI+fjt8VlIzP0RgayZvNUB4V2VUekFZU3RCXU1VWFlGRD9sXywkdXExMz4wV1sx''@;'; put 'put ''VXVLLExuRksqIig1P2IsOT87QF5fY0FAJjV0VlZmIylOYk96VXRjTDBEYmpSK042NygleyMwfF01Izo8UH0mbXRAQE5AZUcoaFh4VHJKNVYqME9XSWgwRFR1Pnd0NnckKEtIT3JsPlE5Y241d185eGlbZD9fYmM7O3xuZCJuUDJVeiV3KH17I3d+WGgwZFhtNDgseXdXNSpoXyZKNEc8SlBUcCF2''@;'; put 'put ''dn5XeC84eWYoMVFSX2RVNCsrOkJ6OGFabj5BJUJDeU44OTJka1swVU9OeXsqVnY2ejFPc3ZId2F7RXZdUmphWmM5QixaMm9aeTZXXkNeRltHVEBObFVZPnY0YEM5MDR0fHloPDg4OnxpUXVHY20qeShTRGFaVjJlXzl8bm4lQSNIKXcmIy5YM2Q7eUNqODNgYipEcWYyb0AhNChdWlk+dnRiJmZ2''@;'; put 'put ''SUBkPl0zNGVkKERkJlZAcnhQb05iXyokd1l1c3BjN0xYX1l2R34uQ19zZCw3Szc0YCRkYXFANDpsK25NfHA5L3BxdD5ofnQpTG1iRXFDZm9AYCxPclBHJjFwIylWKyVOWitpTHVhUisoXzw2bXNGb1NLLmpGNV5DdHlHR2BqRnd2VDh8SWAxbTt8MTtaTm9tYjVEQk9EcDlbQXk0JmZeKy80MGBl''@;'; put 'put ''UGF4XndQKj1mNyM+TlM/RmkmRGVRclVdWitpeFJFW0plTz1wSXRsd1RJQD98MDhSKmB3dnZzMT4hMXY7Uz9tSFVaaChHUDZjNnF2LmV4K2NSZz9KekZKJElCTns9d3dZbFtRbUdvaHpbXkhBSW9tPSVKNUt7fCpYYW9JO2gyWU5BOmdOMEpeW09Qci5HanlYKVU2UTVXI2xrSW1bWWJkY3chbnRw''@;'; put 'put ''JU53InYoRzhbVWZ6bk0+LEY1d3wuNV9DXmd2OllNSDc5cWMkJjVWT19xOGFBek8+Plh9YV9hLiU1WW93VFJ4PmU9Vy5nfSRBYCZieEpPQ2QrMXQsaTljKWtaVylWSiJFcTtDcTRzdDBWb31jI2pELklkaE9QPU5JV2p+WlVyR1BzREx1djQxLHN3RnRyL2JBZ1tbZjB2SnMuLD8oPHd6enBYW1de''@;'; put 'put ''aThNMT9Rd10lZnNycGY8bSJNOHopMUk9K1okKTJuZD5vZHx1QShHKl1VKW98I3VIKH1uOj8zYk4qWj0vbSh9YHRubnZ4d3lkd0A9PX1hQyFaSHhHIW17c0AoQDRMP3BubF4vT1Q5VFhPPT9Fb2ZoSkBCJSptaVF6MFdKVGxhSklbQGhSIkh1R2dtKiY+eXBMNjh0XXNQdGN5Pm9HdUE8bD5kfWg7''@;'; put 'put ''Q3o+bE5STEpPbE07aU5SdW4rYHl5fktJOW93fVZpLk9POD1YXjoqQlQ6cFhYSzlyNEcuUVZYREtuV3k/ZmZAfDdPQShpM15JWnwoMC5fTEFmRzF9VVtyfTUkdHZlX2ssXSN4ZDdFZnJ8YnNRJVVlWiF+NUhOMDtWY2lwanZKdTlZTnpVe2NjdGVJPlguPW90XSRQU1ZvZzMsbmM1Ni89KSV5YzMm''@;'; put 'put ''ZzdaZVYhLmg0dHZrP2dkbFA9SG9gUFJRZ3h4IitFVlEyfEtLc2ozJFg9OVl8TW8hWyxTaDR8eUkrRHNtNGdkS1tqenRjZVpJZUVndFgqQGZmd14mNFlBRV5VV31IbVtRZHpwd3okdWA3PFtrWERfZWo5WG46OWh0X1t1ZypGKS5EbWEmVHBhfjs9blpIVnM4UGh1MXYlZiU3X0wwdzczJUhqTj5h''@;'; put 'put ''OjVlL0xraz9HVy85WERvPihYPnRDdEtDKysqaE1LK1Y2Ol9ob0B5WGxuVFEoNE1SZDVteUl8YD4xUVhGdD1PLFpwSmJ8ciJQKyhnOX5ldHRUVUJQKy4lQkt7eE0reldfb199WGNmPVguLl5LPllgKSQmfHM3Vk5AKTJ8YEplJltlJWEiXTxbZE1YYFEoMUh3QnNeKG81SEt8anBRS244JWExSHA5''@;'; put 'put ''WF5EVzRZZCwhZUVrS0h9VG8+a3YrL01iQ2FdRGt8MV99fWRNTUBvU2VEb1ZVTF4lejB0Q297Uk1hZi5VU0cpSFVkaEQ5cWxLV1YpQnpCX29LSnpLQzVvZzxzVDhaIyV+U25WTjhGfDI1fG9IKSI7KXEwQCRYT3FlIih2JXRpW04ya19bbGxKQHp9IjNdcHk+SGpYOmM7PzwyaWkxLz9zIU4icTl2''@;'; put 'put ''UkBwekJCMVtreUptM3RzL2hfLiNUTGM5LkVIMCszTXZqaFBpVzh+cjw6XXE1Y1BJPmJJXjQ+b30uJE4/KyRfPTI/P082XSlVYnUoTH5kbVFde28pbSRPejlDP2Eycl91elAzIk44ez17c2BfJSEseH1dbXB+JjZoVzxOQGV0PGc1VWZDeSU+OWl4RjQvaXw9JHJwMFc/ckhRdDdGaWVUaWg4MDBt''@;'; put 'put ''XXd2YkkhZikhWDs9UD47PDZeNl9DbWYlWFFJOEEobTd6a2UmPVtqQnxKIXFCWiEmTGBqIXJeakJtJnYyTnsreEU+dVRaOk1pZlF1fTlvd24lajZzcy53aSVWYjtNZWY+QD46Rj9eU2ZkNSYlOHxSWDMkS08/In1gaGJrVVIoaCNue1RMNmw6I3Jdai9vKEtDRTtoKGZkZGpGJlttQWQkVChfWnx0''@;'; put 'put ''NlpXN0xAd25ecUB1MzBaXiE7dSxDI3Z8fVs6PnF6XzgoYVA+YmApUHRpUzBPfGUlfS83RXI7T19IRUYseGF+OzpyUCIxamJGQGU/ZG8sUC9xIVJQSjU8SSsjTV99Q2R2JWdFXSRgLH50Y3Y9IkdvQmEidypebkRyXV96RU4iZlttSkY7PlZ3ZDUsMzplTUcwNWFgfTBQOW1fLGRJKGd9OmB4OmxS''@;'; put 'put ''ciQqLzc9U0BnTlNpcnxAaHBiKiZCWCl1TC5VPUJNNXwpTkwkKXA8QHJOJXc0aFN7P2JPfXprdT1QKExFW35HVyNXWFZ4NH1WMyw5LGhobT9bejZRQVFNPCE8W3dMV0BLNUFePHxTQmtJYyNyQmsvTFYpWStyPjJHKXY2STROUCxjQDR1PnJ+TX5aYHd7S35zTn1ZO0Z+d0Q6WDR9SWw/Zl0yTkBp''@;'; put 'put ''ZT1wZ3NKV2JjI3M7TjlGLENKTFoselt6RClgalVjNzJScUNFSiQ9Rig9P2tbOXJBUzY/U3klOkoxVDxaRzpQQX40SnFsRyxUYmB1NT4mfCJtKGZKK1Nvbn1+aTArIXlOOlo1R2Y7ZTciJUNCIT5sV0tiTSYlRkt7bk5ybn1yOC9lYVNwMn1XamhgJUx3OlBEU3JsYElmcVEsa2hRdmZVJShzcnRF''@;'; put 'put ''bVcxQkt8I0opQjBQT3tvWjdrOiVEPDZWfFc2JHA+WEchYWYjb3JPKjMuZEBQJHFqWigyX252ZUVYUT54JHpeQzt8a2djSnN+X3MzQD0/PFtnd1tWQkVkeSYyKSgrOD1Ae0RoVzRgfl9lUDklWytHcjBzcXMlLlA0UF4jQW48T2ZuWz16XTxve3BvWT8lJDF5ekZmO2gmc2VgSEFFYzBNdz1LeWwy''@;'; put 'put ''eHghTFY2KEhqVWJfYEN8KGA8P01AI2Q2WWtJS25dO0NJP0Vyb2V1W1B1YmVFd0h1LHtGdXdKfGdOT2dTOn11eHJtPnc9IXNeP2VFcXJacntCbntuVn53OnFRO18jcCs/W2lUUXYlVzguOnBeUz9gPUI6ejpUUTo2MzFpN3xUOV8vMDBVNmp9eWttWyN9fF1jW0xgQWtPNG1iczM1eGY4LzRqdz5U''@;'; put 'put ''QTFgQGMhS2ZyfSQxWXJdfn5eU2JiSEdlOyxMSGt9dDQ1dlhSfX4kb1A+bWFMSDh6NW4ibSJqa1NfS0BZRzprb1ZQbXBTfndjfnNyT0lGOmtCfHxycSs4ez4waiU7NHZAI2ZrP041RUVJfCY6QzN+flsqNHdBNW1dVHMwT0U9ayg6W0tKWmg1SyNKaU4lVzZvbmdtVT9zJjJGP3EuSl1ge15kMyNm''@;'; put 'put ''PyJxbFk7W0lXWCMrfHZbV3JrPkBfbCZ3a2kzOmo3cWVqKll7LHVyQU9zZypwdl5tVjo/bGJCIl1MVGBrVz5MdV89P3M9T01wRDQzYDo2KGVQSSpiWjxaWjF7Yi5hQihgL0EoeTBKLzNaaXVGWylhVEVUMGhZMzlkXllvZE9+Tk1VTE01O2ZbMlAiMnVQaFs3NzBoTlFvSH4vYlQ1KylEIUtXL3Fh''@;'; put 'put ''Y2dVOl5gUSg3eGtkSmZlMDBOQkwoa0F9dk1IaWhMJEIzUXJ0TEd1eTZfPlBMaSo5I2xKM3htJCh8VTpMc19kY3deXTcpQHU8bV8iVmg6OlNwTnheNFYzTX5jfCNIOnhES2M+eF5TbzFpMD8xMW9LUW5FNipIMC99dD9eUGImTCNpLzxIYiQsfEwkQDRSdT0pM2dLOmVRI2JiU35YP3EkYSU8O1Jg''@;'; put 'put ''M288a05BWmleLHc2QH52NjNUYjtXYixRKzMkZFc3d2c9WlhSR0sqUHVub1JBK0pzemJENCtybDNIO2o1dlddPTBJU1NUbWBackB+YWJAc3M1KWxgMU9scFpVXSRjdjcmNUY8UC9TekZBOTNSTTI7VjdUdyRXc3N5aVtieWRBQHplUzp6WSp+az4pe29sTkN+cWxlZFRIYFAxMDRYbEZ9PSxVeyVX''@;'; put 'put ''SV9kKGBseSZteHIxImp1eWspPTlfWVh5RUdDfHwpLklUaV8sTmp0RkB+Jl1PZ0IzfXE9dHVjIiVKeyw8aTYrMGVqSTA9Nzd8RGVFXVEiLi5lZmglbTxMYGdCfVYmVWx1Y0ZMRlE5eiZdWnNQeSslSTs5b3w5VVt7Xk1MQ2wuYDNCZiNfQyh8QkdVWX4lRGhGfm9kbHcyR3gyMlM1M3ZmNX1+YVd4''@;'; put 'put ''PkJEZUk/ME0rZX5gfjtEU28vWD03dlNaPkN8S35leUw/QXgsI0NNYnFQS2FLZHlPIz0jYFVYRTRTV31FRXRhVShMcyFBfFZmS1U5b3xWLndNPVFOSmE7I2JAVlQ9KSJRN1BLcGdfRWxXQlQ6blNgaCZfTT8zc1lveWgsVj9tO0F9KCJEQz99O1ZAR3pbUlVsaSJnSGAvQVVbdWk8MkMqbUpQYFk7''@;'; put 'put ''I281akgoKGh2fT9vKVhJTStSdi81cXI+X3BocHJEcF1GQj8wXyZMcyNBPlY2SmR5RndzLmgxQlI3T0NoOUY6Lz9PfnRjJE5NI2hfY3dnSEU4fEVVNEgwc156c0ZnZiV3WktNZlUjI0R4bVtvKjVTM305OVdKMjdWMSh7XjRsNHVrZy9aJE5lQl4pbHIkeH1FfkslNG8uenNKV1BMLlUqTjJMKDY6''@;'; put 'put ''XnFKTCZ7MylDPDx3MmpRcShdUmNHfmhvSyRiZkkiNC85UERAYUJkS0sxMlo8XyZ3O3M8QC9ZUWxUNktUIT9yPn52Rz47fVs3KFVePy5JYVNIXjpSYVhIOzwqSTAuaT8vMDJZeTNQQnFGKjNMVUFhOUMyTlskQ11xd3RjZDxCZDN2IzZSO3U0SkhVOkcleWIyb3hzWkxzTU4iXihraUQvWkxXRTUx''@;'; put 'put ''Zi9kZml0ITNxYmNubEo1UlN5ayJ6QmNpMzpMeH05Y1tBN11UbiZZQXchWVNiZDNwbTYlWjI5Ukd0YysiJVJaX3tJKTUsYiVDLHhobGw2dzdjPXRSR3R6UUohYzQ9MHhIfS5naVpnfDg8X1BLU2VtPERBJS44OGxwVlBWUHh+WFN7cyZPRyg9YlJhST5nREcuVUBxR0NfN25qRWtyO145emR6dkEz''@;'; put 'put ''NVROLi9uLkdQdip0VV57T3FROF1QYX5iMXI1VCsuRHJzTCR2WV9wMHU9UXEheDU1Lyx1YDdPYFZNKkd5ZkVrdGp+RG5nK1Zec2NdQVR6eTd6R0trZCt3U1VWT0xzUkxpO041IlR8dl9MUz1VM3IrXUA4QGM/JHwuWTdEV3kwOjpeaVl5MmlCaGx8eW19QEhqVGw9L1szM1ZPe213Y3R3KmtSWjtH''@;'; put 'put ''blR0cGA1JEtaR2pZcWFMXlEkVFhDQlg/UikwPyNXej1neXZgKVtsZXxfVTN0OTwjcCV2P2kucGs9czBNLmZiMG02Q1FCeVdFXilvVSUzUVh1K3x8cUE7ZF9aR1o3XzEiRnprNV9jb0gxW2BWKyhhdG9Zd3g2OHdwMjhqfCp8XTdpQ1ohelpZN3pWclNuV2hZLEVCNGV+bCI+dEJ3WSF7KT1PKTNw''@;'; put 'put ''dFZHRWw6PlV7b3piTihoZUVuMTxKLFFxJk8xVUhQflVhMUQlb1hbMCg5YDI0bGEqd3xKQmo8WGR1VyFBTDV4TUdFRHxrezNJfkRMRzApZGM1PmMxT3k5Z1EwcU5jKlNiNXNhLm16VWVWZUxgNVNxV1F2QjR8WkheJXFoXjx+O3dtbmV+OXdPNmJzNEpsOzhUL1BVZEIpZyNQdlJhdGg7PEQubDNQ''@;'; put 'put ''K3VqITZxQkRrbHdKY1t6QWo0OCVfOi4/a2Z5OW84QWhWRSVQNFU3JWcyenpQVTttcF97Iy9rMjthZV1vWTFWPkNCRVhvITI/cF1ReyxnYHZ8NSlYMXZZaVRjTkA2SUI+d1lsJEQrYTAhLD9xU1UrcyNvRU5nVm1yTlVEelRbfiZkIUJxNWU6THdSeDpkWlFEQmV5LCYvfTc2RXJCLn14Ml5nPih7''@;'; put 'put ''M1RicX16I1MrRzJTKmxZaylsWFNWQ3koVTdle1okRmpfdDRBYlRzc1AlNytfe2dFLmtVP0p6M1BLdmN4NUU5TmwzN0JPSlR1ck5YWWdvVCtFcFRKfF1PZ0hdRVMpOHkucG1ZaGJjKGopMVhaInAoNEl1cWZPKncpJHFrRlpVO3QoelgxUkE9RkQ3Kj1hUzRKXT9sO3ZzZmtALlEmU1k1dnh8b0ZC''@;'; put 'put ''R2IuPXd0dyRASkBiJCpnSkZ1RyReZysoYEd5Q2BWU3oyVDMyby4kcXV5dGE2JiJsaGJHeVk4NWBgOHh3XkxAJDJSbylXVmQ3ZUcyVFZhJnRNRnVZb1MlfFNxTT9zQi5qbUxEZjpIRiJMYDlPcFtbQiNHeG0+LzRYXzMuVGEkeXd+PVo+Rj8uPT5iY3EvJm4zcj4oaTp0YkdzPkdofkk+WVlDcTwj''@;'; put 'put ''SmomS01nfXl6bnhCXjMsYVlKMkxeOUxUbDNpUWtnaiNRUGk2Pmg/LCQ5ZiN1Z2BbVV9zSyJDKXlPaHVSP0MwZ1FLVnRofWRsOip1b1EybDUqRTUueEg2KWRBU19OOihnXn4uTG0zLjpVLGtxPSYjJi9nbFIjRmFMKWk3c2VjXiM6TzluRjQme04uWVZPLlNKN1MhezcyIlI8bkdDTFA6QCl5SUE2''@;'; put 'put ''XXRvdWU+VWlfJWZfamxTP1dbV3YwV157WUkkYSJuWTk2KSQ3SVllVClnUihgKUc2eU1+U3hhIW9SZ0NfPzR1bXYxXWYzYHZGXnRMUElSJS9RM1MpXmExRXZXU0wuYEBXIWN2QCFXY2poLyUlcWBiVVAxQmV5VSRPOUJgY3FHVVR9PjVGPFQjeiRnbHZyPl9+KnJrSG5CVCohR0k9WWtwS2c0TEZ1''@;'; put 'put ''cnJGMFFXNCFOb31gYXZsd10jQUFxJiUvKmt5T3ZLbntrYHVoZHc/d2JUQ25ZQ01AcTQ3Mi4+JjJacTVCMFNGbktNNiNkP1JxZy58OjxGQGhvSXxTJD5uPDw1PFN2Uz1Xbz5pV1IjP1B0QE83ZyVHIyllcjhNcWEmXjkiS2FePFRRInUmenIkXWNsfC4wQ1djUFtJQzZSOTlgbCZuOCJ5QjlpSHVV''@;'; put 'put ''fjVxKEklaVhrakEuS2p3bUNhRHtFQE9FO1k2WmQmYnV5Jk9USGx9Km9iYTl+VFIvUnN5WD1PKHY5MDhPd0xgYUttbj5ZKD1wdyQhYCMyZWBIV2d+KildeFhfUS5oPyhvV1pSYVhmW0s8SzJtbl4xdURhVG5XXnwxU0NnRTtgdktXM35JKCNgbn1GQjhufHNCR3h4LlNEWSspM3hHb1tBK2NVKXM6''@;'; put 'put ''T1RmWitmflY7fklyZXhPbUl+UT95VlRhdjsvNj8xRkd1Z3xULF1YW2JtdU0lPVFIVz5HN2lOPGFVYVEia1pFVkUsZGAod05AODlIRnlIMGVfcXxkWiQ3PFg8PCR7MTRbaVpAUmg/UGNgPytBOFZPVnQiSUJpXU9PMDs3WWRFdSo4TysmJXA9S0hHL3NFbEYqI3QqYyYxcy5Ia0FNRXJBeXYmL3VN''@;'; put 'put ''Oz0/QzRvbEptaEYwPitAXkUwXSIqPjZpOiZhKFolaHJqbzk6ZF9nNzhvYG9QL0J3RTl7WHtyZl5sUU4xTnNfWUU7cWkza0lsNm1qXl5HNEFBJDhkYGtPISptUzNISFIwUFhwcykrWmIjQmhURDpORF1wNzBOfnldZVRzfWcuPUBNWE43dV5manJ4VUxbOVtIUGtjUExFWnBKSHg4TUIxTkJ7bHJR''@;'; put 'put ''NiZlJTRPfilYNmYhNCNFdUMkd2tMWSYmQHUhSWo3Oi84a1kyZ2AzKH4oPSR+NkN8cih7UDp8c1p5S2NJPChIOSZbYHAxUH5fWzdtcDEjOF18VkMvIyNvSip3SUEuX1JiUDhUXSwmRE1qTUw4IjFyYmtOZlp9eEo+PlRKJF5aZDdXPEVSdDxROyxffX5sKGAzay92fShJU3R7NUBfTyVCVTxiYkVd''@;'; put 'put ''PnYxbmhjc2BbaygiRkIqZF1DTylEd1l7O1NvNDwoeTtuQ1hARWQvcCNZYyE5d3xlRk93RndLOmk/az5zUTY6V0dMMkZdMyJfNExRejspXlE4dnM7ckVwUlNhLEkrViEhNT5HOCZ0fHliYj0+Z102OSVidV5oIjZ9MSxoLG5dR2c7YTxGQlp1O204VkVTcW9PJGVMKztXSFN9KVB+cl9TLyhFN1hf''@;'; put 'put ''N0Q1QXNLKzRbSkhyfCo4Km0jOjdXKXZXfn1KQzZIfTUycFtpODticGM9JjltV0VYXlBRYzlFPlpTTjFwZyVqZCZZQTtoKz4sJnMocHFdYFlRaT5nQiw+QzxkQVBWeXQ1NGVDRm1sUDVNIyZVflNxLFkqUT9YMDxCbV47cUE6bllnV3huX1ZCW3FRaiFGcDA9NyN1IU9rU1pXJF1URDtoNnVhdD4y''@;'; put 'put ''fjRbclh8WTQ0djg7czNrXnQsa085RjpxP3dgR3E7ITVnfj4lRXFqSz9iISgrWiRvOyhLVX5JTmxXcHphVT5ZPlZ9UkpbZEFQPXFFZnFFUClhPV51K0JBayJWO3kxeVZFcFhpZEcmNVM7V3psLnAuKnc+S2wsdXkqUjl0O348NkB3NVVJM3MoYylmZVF5fGV1c2dUVUheUEVaaUFwJiJqOzh4PXZM''@;'; put 'put ''dl1EVnJqWClrR0doPkkwRXojLngzQFlCTl9dblNDfk9pRU9OOG0uITR3KTJsLkFWVWRuNkJWZDZwNk16dVdrdEZXbHRQMCIlMiZmW3BKOWRHS1kve1NZJTkwfGI8XyltUyokQFdARyowdkxaSkNVbEpbYWFFUXFBMUNrQ1dbcjhNNk9uJFkqS3tDMERAZW5LeTx+dFVifiQ6Vl9pZkFGKSoqMTR2''@;'; put 'put ''QlVwNjg1fnUpbFJJIS9Dcjohemp6JS96QSpmPWNUPix8ZVF6LnxMZmYvVE5pMTxMcEZrRjlTeGNvaUMkQlMpY3VlaiFASWpDfCxwMGF7ZV5BM3VlZzwkWFRXXVo3RkEqdG51VC97PmszS294fTQsUCxMTlRYLG9KfDN6MWxZOmc6R012XlY3ZGNTfnZKP11zZCtWZitxbSVwRl5bVCV6bzx3VHkl''@;'; put 'put ''UjFaTnt7dWVxQ1pUU3FUJGRMX0lQXXhqfXEpZHd5TWIwI3FGNzlFPD0vXWtFUUNUbElYdHgjOU9WYGpfYDxIJiMmWChRfDdQdn13WFBjYDRfeWU2LDZEbFgiP3ZrJENnKig0XWdUQGt1ST92NkZEP1FwInNZb2A8dWBvbi9ZOzRKY04qPVc3TX5pM1ExNUVeeSRDZzlURGdoYlZqdU82JCY9MFhv''@;'; put 'put ''bldTLH1xT2JSfkBKN2pgJDJxZkd+d3h+Pn1jOmlhVT00ciVZbExhRGhCLy5CTysuYihIdGRjRDNeMl9GdnRheWRJX3kkZjklQDMvNEhOdWZIRiVPXV5NQDNpfVtKVX5wOyo/emRqLmhfSHA6OkB6ZE9kUjVyREYlJHk+WzReciZVT0QzT25zRW0+RSZLclV2Y3NtU0pgMVMuZWB9L0NldCNrQCVF''@;'; put 'put ''SjRrdiE7OTlefVteXWdyIkUmV30mW2g9ZjMyLyh8SUp0YCRvUjQqfCptUUdwSz45e3RDSSYyOms1PFVtUCJ9MCVrO1t8cWpOP0wzYURyRUx0TVNYXSlAWGhRW25qMXJuKl8lPkRHYnk2QHo8VFEob1BWK0RqZVh0eSMkTi5Pb3Z9blNwel5xOjohQndeeEpgeVtxTFcoOGt9Y3J4ditDKW82VFBu''@;'; put 'put ''RTYpQ1koIlNMclJ5SXVeOzdlRGcjRFVDK1hifS5JaXx+c2x6YilYRFVuMVRMZkF6TClJTD8uXypqdFEjYkFrdiZaNXYhLyN8LGFfPjpiZnt+emRERlhQVDJSXT1Vc2wlNnxdNzIzWDxkeFU0dFBfOlAvbmc9cDZvfjk5Vk1vfns2L1ZrZ0lAK0FvJCNMUWdSbTEqa216Vj9YSi9ZRE95RGcxTV9k''@;'; put 'put ''ZW0hRTN1KmJ9ajQwKlQjZWFyNXBYYzxvOk1JeHlXSGRBOmJQSitGInE1OCJMMWRWI3xQfm9Ca3BSJlZKWzgiIi9oRmR1YiMkZEh8fGUyfjdsSDJSbG84NilgaiIrbkhfW1VJJnQ6KHZGaWp5VGBkOXZZWis6TEpLSnhBQ0lBNF9zdTozRTN9bV5HP3M2eFRQZyxWaUJEckNWJHIvQlF3SzJUUkdu''@;'; put 'put ''PlFvM0BQWEBrdFZYL154SyFuOVspbWsvIXpvV2FiYWJKdEdWZjRCXWcqPDwhLGJMXnsye1JwMypSN0Q6VUgjWyRtQFtEa2kzSUlLRUQ2P3FmKEBFfmxjXiJrbG5RUCtHNmhKTC9abl0hajxUKWVjQiQyQ3NLYUVfOX1AVWNDRUIoVENrcStVMS80LnMxWyIxe0R3XlFsKW1TTit4cF9EVyV9WUAk''@;'; put 'put ''JCN3XnFBSFA9NSIiSkNifDtGNkN1LCYrUiUwI21tVUtgPCZ5ayE9OjtjQHkpeyosdmQ4TmEyVlVNWHVCPF4oISY7a0c0VjtuXz99MUh0VHd9e0tjJil1OW8oMyFbZilrJSNdQHhsUVM6LFt8ZGsxaS5CUDElPTMmO05CTDZjS21CaVNyWER1MldROmJBREJJUE4vZ3cvNEAmfk90NixDI0s6IjFW''@;'; put 'put ''WChSI094XXBAR1g6VXY2QGpgQVs5NzpqUSJ0YWcoV2F8cEVTcjswNHFWTW1PZiVYJSJxI3o9Xj9oU2hUdn19MCExMEU9WHJNIzVTMU5bTig3fDp+OU5vN3I6WENKbWtwYC43QjRiPng8RFtfek1XZSQxQkFLdkEiYmcwZnpzenZsMixscHVre3l7YlI6NUAvSERyIjtTZUs2SzpTKyt1VCE7M0Yj''@;'; put 'put ''a2dGSyRHSWw8Zn5WPEk8NGcpcU50QEomPkgjRWp3TCNzcDVZLFJmTz1Ccm93PGx8OSRlL2FHcCVPVF9mfUVCOVhEK2xTMXtlb1o4LHs/amtuZH52V3IxSGN6JGgrU004UXNuV0lOQGI6eU4sLnQpST5tZWFBLi8lfEIybWFiPTkyUEgyJEI3d24mYiVIY1NTcldjZXRYfDh1P1RnaDlsck1uNE4r''@;'; put 'put ''UlhZfnlraUZpdHgiZWMpU0lwRnttRz90ej9eTkJbZFpUWEoqTj8rQlNbOUwqfjc2Tkh8en4uRlU0SXp9NklfVnghK1pfZEUsdHJLYT8qcEA+Z0JbNm8hWFMjOEs3UEY4VHVOQll0b09iL2FCQUQhfVpJKE16ck06NjBJSCh9dWsvfFBtOXdufG4hR3FBfDNYaEVpVU8jKEdjZCJ4Zms7cnlFZXov''@;'; put 'put ''OzI7T3B6MiszJWNLU0g8TGdRNmZtTFcpeTolYmA9YjNMNmd3MT1tXypMLjZ8K1RaVFJqM14vOG0sP1FRQj88O2l0XSQkVjdwfSlwIjd3PEEyZW9lNkdmVTduM1M1W1dPZTZjJUd4enBiK3h+WC5daFhMc3s3VFFVbl1aOmM6NUQ/fEZsTkFtcDFCbUQxSDdOXTRkaVcxMGtYOlJhRU5sKCRzcyE0''@;'; put 'put ''cGpmPz1GKzxQP3I7NDJTTVtIZlc2SXdZRGQzUlF7KjhsWUwqa1EmWUBjfCxzJWpfLER9K1EyWXNFNCMzInNGRU4qZ2UjR31+azIxLmN6KlEuW0M2ZEpTcCpzaypoP1smfUZpViJJL2BbaFZNQDV6Q0U7KGYmQGdHeTsjXXt0TTBAWT0/WGdFSXJuTHAkfUFyfiQiY21maCVsU1QsOUErRDpGR0dS''@;'; put 'put ''eTo0TFdzMHp8PFFqJHouaTEkXiQ+K15VeEo6fnZZIUN6QzBMOmYydEJ9RCY1cyRuRTR6JV9FQzUqViVhM0lPa2JKdy4vS0MiajQuR0NffEokQCVubSpnVmlGXT9ZKm9DMGFATWp0dD1PYCFxVTtDbkg0PjkuMmhUfj1QUWx6SWZTeFVCVVJAeVswJU0sKX0lcjddUW9ndzw/bE5xT2N3czYrTWVX''@;'; put 'put ''YDkpcy5pfDAxIXJwfS85PVU5Xj1JK1JDXnYvcEpIJmE7OD5PNXdAXjxuI1ZKLjFpYVcpNSU0fntMaHt8b2R3dT4pI3xJIzByeXRyJUUvcDBTK3xyd2I9TzpPUDZ5Wm0pTF9yX1ZZUzF7S3lQfU4sWDVacCNzXS9YT2JxTzFZMDp0KGFKaFBXfnMqeW1YbUhKQXVTW00+eVlLSn5vclhoTmNBMXJt''@;'; put 'put ''I0klRWhiVUI/Qm5ReipARzhDY2FtZ2VIT2R7TGljUjUkKmE4RjNbYS9vViQ9fTR5KTNgQCZCd09FdVUyYk4hKHZJOztOcEwuZ2NzdSZxPVVgK0EpQmgvOFdjeEZBdD1GaHx8RiNnJHtEdXxQe210I2ZLT2xjVDhNN1skIl5CUWlzaG0lbHcpZE9DT2hvfTgudktUeF0hfjp7VXFsXThCYT9CW1Fr''@;'; put 'put ''dy5+My4hMkZgKnxzRGU8RUtCO3NbWyk8WSgqdzNwbFJ+JSV5Ril9MVhaaEhXeVVbOztIcTQmOyo1czIsO096a3V6I0cvUTBtZ2tbbHJGX3clQ0F7PW4uMUhSMCtrIXB9WDttczlOWWE3YHN1KSpHSjxlVX1PIz8uXnIqWX4sRyFmJiIxMFVPYlZyUjZje01kMFM+dnM7UyxSYCg1a2IhPip3diRC''@;'; put 'put ''UC5YdjcmMG9HZDRBX3VKYCQyKTx7VGkkVmJeI3tlYXw1aFk2e3l7U311VEB8KnEuO20pVn5le1NpQGY4L1FgZnAvakZQfE4vU1FvKW04c2FKP2JVai8+fT4+Oi59KCZRYVNvb1c5Qm8vXz8zTGMyNj4samp4eFk2TURqbz9dJjRPTFliI3JzdmpzfVpGQVdPeE81RVJyKEhAX1hOYGtgOVglbEN+''@;'; put 'put ''K2ReKVhuMFp1LHAvSmtDJWRTO0E3akV9alJMW1VefDFLM0thQU8iZ1g7YEMiQ0ZycCVBMWFBMlhVTkFwY3RGVn5WP0psdEYwKXZKLlptOExae2BvTz5oci9HaXJ1fCNDP00qNUheblA6O150blYyMm8pXWw6XUZkSkk2OkclOU8yPX5KL2hfVnM9Ojt7QjZ8R1VDcHM4X2A8I1E5XUtUdnVndTE+''@;'; put 'put ''a0AmdCxBUVkoRjI8Jm5HekxZYVAhYFczVVloIjpVbzVnQ3lmVXdiaGhrUHJxdkg1YmBbYjVFe2R2aS8jQVljfm44YEg6K0E4QTRmMSVlSUdubUc/MEtIRXc3OEs+TE9UMHJYbVdwa0pvK2R4RSlBazVJXThhTEhoRDsoaSg7Jl1aO2p2LEFMe2l+LENkeDFsP1d1SEZQNE8/SGhKNmQqMUM5JF1g''@;'; put 'put ''S01KRks0OHhZfU1tTF9RdFtVazRlaChJOS9bWTpjLmgpJUVBc3lKKGpQOU9nQUxjamZWeEhKQDVpWDF0P1E+T1s7XktEby5Vfk1lQlFrRXt0TTIoTztJcnlZIW4zL0wldWBmIzEjXytzREpNaF5DLzFvMDB8PzUuSWRgTldEdjJqZ25NXlN9a35+VzFKZUd4MihhK3hgV1l3Wy9zMSY4LE9EY3Vt''@;'; put 'put ''JnN1IyhhRkYhW1pPUUpVZk1CTXhWR21kYkdbOUc5OSZvNXd8RV1LPT1NQH5HdXA5a3Z6Kll6VFBTejFBNmc2TmFdMG42VEtmM2EjMzxEfUp+dURFKkVJUWNNMiwuQyRqTHtKNmFuOWNANWQ3Wlgwey8+Ukp8OHklV0JpfSx8NixSaXFqJCwydU8uUHJJQiNOMX03ajl5WS5ESz9VJV5AKn1vK0Fh''@;'; put 'put ''MCNhejU8Lj15WT9aMF5DKCMpUDtQW047Pzd6QF4vVTVFQyxAQExRdmFoMS5HTll6aGZYZkh9Ijk8P3QrLkNxeSI5U0R5NnE1aV01Umk2QURmSElIKTM5aXhsLj9XY2wxVThdLkFLeEQ/T3JNZyVVYFYsd15vXzZ0cCk3IU5nI3VdXThaezBRT3xpQUI5ZDs1UjYiRSFQe1QwLHtBWnxNLkVGTkNl''@;'; put 'put ''UH1JSnlfOEQvVmxxL0wqRlUrVCRuWW1EfWF3RjB8Y0wha0cjM0hofmxEKD5xMTdAJTFbfiRsKntHfCNTQl4jTXs1OjlSPCl0JlhHRDgiNEgpK2sjPG9rN2pvIStpOzs8KzhbVUxrdEZtYmg5QU50e2p2NjZoSytlP3RdVUpoNUlUN1l9K1U+JUN8RT9dJj9Uc3pHPClxeCMlR0wrbEAueWxWVWNv''@;'; put 'put ''NFZQalYhQTZ0M05AY1ExSCNIdSh6UzthIWp7VzAhV0omJjZNKH17Xzw2SFlrbGhyd0V5SiYvJklCTWddJWRgPywyOlshRnxvPlhaIz9KR3deai4wcXc2NjBLaiNhNFQzNExXNnxCO3ZRVlVbL1FwaCNtYURfK1Fydil1TlBuPEgsaEFGRVpmaGFFVmI3dXpVfX4wRmU9fU9LPSJfT0piZFEwLChY''@;'; put 'put ''QD8rVyUud289RnpwN3J4eUtfL3E7eTFuaG9HXTBtfUIhenp4UEwsIV1qXV1VSXpuYzFFTmwsYDB4bmp7UV1PTDNXcVdkQUQ9UnRrOXZFPFFqa0sxN3o3Xm4zWlE/aUhTYVs0THdzWT07IlpPPXBRXyM0fjN3X2ooWzsoMEpyLCFmV3VMdnZeOVBRQUgkPHFmcGZkNipfUEBIR09SQChtb3N5ezpk''@;'; put 'put ''Q19BMX1GQUc8NHxsJlcjNSNrVTlmMTxvJSRjZiExS0VaQi5FTUZlNylwTiMyUTtdfGZzT14pYGJtRGZPbDw2P18meSFUbyl3cHRxezd9JmE5ZjJ0QDAkSmc2Lj4xMm5aKDZRdmZPYUlUdm1KV3xqSFBLe3VuN0BQcEZbSXdHSVZAK2dgemZDImtxPzQiWD45Vk5Ia1hCSGB3Y1RkQUkwYipvTC4i''@;'; put 'put ''MGtkbltmVks1JCVgZ1ovNyw2QSk8ZF1WOFR5LkZReSwmPEpEUGV3U29LfnlEZS5mI0ZjXl1gYjc3L0hHX3MoR2hZLCEpJmBMQ3MxRnNTfGtLPTM3YXVmXnVFVylCdHQ+WGQoTUhAMldUIVBNM3dCPCQyOSh2SytdSHtbJFE+NFp+NkI9MUpvbFBIaiIxJkt+X1tyNFB9QEg2KHJCb2hPUUVAeD0u''@;'; put 'put ''OT84bGpDMjxPen16eVN8SmQ0azFvZV86Qm1gQ0g4SjQ8ZmVqbTB9Q3c2Qyw5SS8lNy53c1NmLHBeTDZtXTVHKGZLNkRoQ1B7fVtRfHM0XmhSTEl1Y19vYENNZVRvOmIrRHdgTC5WU2shPkxzYUJoZTgzaDNFNV48ZjcsJHkpdyxQSEoqcFE6ODsvWDQ3fXFrbGp0U0BXWU83YEAlI3xxRTYlcSR4''@;'; put 'put ''Z21SJCxhOUc7Ylh1MlpZYHgjcT9IUyZjTV52VT1XeT13YUY5SHQ0QmgibCVNV1ZGYE5Zemgkc2p8U2szNj5ObUd5JFcvYWxmXjlUUDVoKEFWYUBtaVlAUVB5dmt6ITcoRykkJThAY1RdP0VnJGA0KXxeSntoYX0jalY1fn1WY3FHdTQ4Syp5OCY8Wl92Olc9YDE8RTkufGBqRjkmaV1xcG4mTnY6''@;'; put 'put ''Vl83JVA5NGdhVGhVb2Emam4lNkErPT52P29kcX5zaDN9RUQ7K0N8Iit8bnslWCYvZTM9UiU8dzdecWohaTUzIjw9TkdvSSI1Tj1kTnc5PFk3WWtDbFlUdUlScT9odCw7JGVWOCVKOHB5Zks3X2xBTFM7QndgcXFvcFtIMm1eVVU3UU1aT1BlOHE7OiVUPm9VP3xRY3pDMG4jWi9QbHRjNChaRVlP''@;'; put 'put ''ZW5QMGtDZjhKfnxSJUtzNSh7XSF4bSE3UmFTRWlrOUI2WGJVa1BzT00hWXFZcERudUQwKVc2OV9JKlF5d3UqdklbLj07KTJ5LDVoI0V9O0hOJSVKIzQsUVBRPXlfX3NmJUFRUn1HbV5AW0laVS5xPnsiRk93NVlGaDM7T3RSSU0mb1E9NUlBbXFjY2BKeWg+REtEa2lTW2szSTlpPGJUV29eUEFG''@;'; put 'put ''Z1FPLyVucntZaVpdejhSQXlVYjEyXTx0eTZGVTQ5P2Z7PE4rX1E/XyYwZlpIWy56L09Ub3AuKXBuNExjRC47OExqMmI1Knh4fm5XVWlGPXpYTF0ob0NJeChqX15pQC90YWFyS1Q4aiMlZEhFPkBlTklpUVNnRzw/I0hHUl5AWlQyRmlCPnMsbC5fK1p8K3I7fi52Uy9iaG9zTCpAIV9hP3VuSiY9''@;'; put 'put ''MV5oJVVJK3JyPWhldyxMd0JRX3Bidn52U3VMbDpDMnlDaHtpTDF5cDIoaClaKkYqejxNKEFTWHxuKU4rcEgqZl4lTj5vQ2FFXiNEUXd7aTQ7bkViTiZYfGEiRkM5TXUiJXI5RGQkfnkzaGc4ZkQjTDQrJXpUfGV8S0BDOmdRbio3djd5ITZJdTI0KixdPllBNWd2XUU4cz5CfGNDamNXaDBeKEhs''@;'; put 'put ''SzxOb356PU13WzpOd2g5Ol05W3AiJENSU3M/bG5XV0VuaH05UXV7eHxiOzNqLHt6MVpQNiFEUk0sMFpCeVleVk8qLiFXW11sVEwuL1FqSHFWMSEuOX0jaSpmX1o+eFtUZiF3OHRoJllPQ0oyJD9bIVllKl9dUF9ueU9YSCo0NFVLR112anJyRnxRLHxwTy4jajlvclc0ZUE7X3RXPF4mN35WLFlK''@;'; put 'put ''d28zIUZ7YEZtYSloQmguZn16Mk5WRSIkRixIVUM3cDBLbkBsM2NEW2BGPldwVnFzXnNYaSshKFJEREtXNW0pX1AkbS9VYGRtS1ZeQDsqNl9DPCxMVnU5fjcoLzk2aEMzey4wbms6Ni5iJDo4eDZEInduZlgzOSl2ZHczRyk+Mzo+Rix+PVo2IT5JTzM0c1QqIj1dP08jSFFzOUJseF11K2UrQjVV''@;'; put 'put ''OEV7SnBiVnxMIix0RjxEWWgrbUZZTzckVnRoI1IrX3pCKiU5I2U9bCx5WGFubyprK3BgSj5vUzI7eCMyRzlLXXdjO0diSCpjdGxUY2w2NyskU3tCdTdDUSEyZGo+RE9DZFpyU2NtV2hPL3QzL1JtOmdSbT1WSjJrLj9UNT9FUV5kdGZPbXNre2VGJSkzaW5tQDtSIig1PUJTJGk0T1NtSFNBMWom''@;'; put 'put ''QkRtIiowT1BzJispZUE2XiwsdzR4cCRKaFQ7JHF2Vl5YeVJJSCJ1d0ZgTSojUj5iJi85P3o0KEJBQnxda3B+aDFnTHosRzNubkhMNT4yXzpmPy9pY2p1cH5lJUVAMDMifWYrWS4mPDVvfm9XUGJ4emZRInslUVpbc2pPIjBDJCZ7Yi9qQDN8SWlSRDRma2wjbjVLPDQid104MmdKKjMmeU83TEVK''@;'; put 'put ''fks+bnpnTHdjTXEwbzVnZiIxVU1wYjBUbE1nL1tgfWJMd3FjRXZ8Jn0xQ0Y8dXBqXzJKMVZRODF9R2p2ZTJIPkZSLmx+bUdgdXJ9cGZJRnNITFQzJEZObWM9YkhuNEFuSVt3QlB4e0ZVOmxCQm5iSnYsMkV4JmQxSDJ1Kkg/QDZBTTFXXztVNnkzRjArbDFDWWgoPjtCNyhzfj5IKHRPN0hQaCUv''@;'; put 'put ''MURvU3hHfjtONmIySmJNLDRWJSM4NkIsRTlxNCNyOm4zamIpRXs5d0l2ZUQufFs8OTBiXS4kOlUrTm02e2RGQykiRUJSUCo0dnRzK1dib1RMK2p+KTJ7bWdxeS5OTG4jcT5dRHhbfE9OOSt0MT5pXm5mO05Se0ZmUE17SllCRkEsTilDeyZaY0xnPWFKM3wrbF93L2V7MVJiVmBKZXlKM2BzfXho''@;'; put 'put ''I0MrUW45cihlQDFTcS9gWSZGQXRBL2R6UzU4QiV+SzBYVV9wO3taOFFHTiwmQUdoUSFWNHcyXV1Sajp5YHo4fkxvVkJ3NE1dNlBmUns7MGVyS0pXZE4wdXo/KmMhdGtiX0NGY09jQnNIWVk9KGg6SmhEQEgpJk5TQkNgPj1acCl5cVpjVSxDeWlfc2sjdlMpbFZ9T08sZGY+Rm15LixCJmpCWUw7''@;'; put 'put ''NWtfXmNxLlM8WkV0QX13bDVTUytXKGZbJjJ9M21pQExpTjJ3d2NoR2pwM3FwdjtkcjV4XSJiU3JlOlBULzVXdX4lRnYkOERsfHQsbE0hPnpIWj9pYng/ZD9mSzZsb0wsYkR0PjhsMks0Nz43VXdQO3NyX2ksWks5e11nXis1WFl6SCUkP1EucjxtR2pATXFrWkVHK294QCI2V08laXY6aiJVUC9x''@;'; put 'put ''aVUiVkUheVokM3tYTjdjaTplYkBvYkxQMCs1fWAzL1lAREJXOlF4RSQjQGg9PmZTZDpvai9kOXhIeEYhV0x8RWpHLjNFW2wuSC50P29oY11UO09SS1tAIXJ8MyteeltoPnkyd1JdbjV+SSN4ZzwmRlNlUikkInpRUjIvamBeZz5mT111JDE2VkJXWkYya2BpMH4kQyVOdGc1O1cxWT1SYTovP0Em''@;'; put 'put ''bS59MTkiMEosNXtNPD9HPThMWWwwcWJMbWtUXnkwTV4mWz09MmV2PF47RzxOZXM9dHckWU1uRUdEO01LbVkwITtTP2FxKDc9NS80Kk1QcG9iI2ojZGtsRyJOOU9gMFA5TDNnbF5PZlQwdygqRXMkPCt2I01MQkJ3Ny54ZFpoVntad1FPeWJ0UUluan5Bc2JSaGlkXXA4MmdtPmdEPlkmIXxIbjk/''@;'; put 'put ''PjddRmlheEVgdy9tciluQGJ0Iig7K0AkPlhociZVcDRvbmJZIkUiYXlyTUFfSFpMRk99bWg6RClALGJzbDQ0Pjc2JUUlNilqKjQqKCliV3QyS0RXcktvQiN8dHtEKl0hOWxXK314fFMjXVVpemBkS0NnLlBFbDJUNHw2UCVaYko3VH0qM1JacVFyO304V2ciSHspIiNbTHdJTCFFSThFSFsiRHJj''@;'; put 'put ''dmtjKFklZCxoeEApSisvYCM0fShufmcmO3hFbkxKO3tONls9UC88cjZ1N19vVTAuWmRMfjttXUJGcVNycG5XZGwkeylEVV9QfGA5JEQlLlN1MCpqZUlPPitdWFpUPXhVTjNyTyxre013Sk9eNWQuaUNxJF1zXlBhSE1PUlBgQXFGTjFleTE3MHZxdi5aRnc+NGZOQ3EvT3dgNXxXcSFRL01zdyF9''@;'; put 'put ''ZmYlPTlFUC9zKERsTkBTX31HU3NJMD41O29GWzlJOXlydGs/dyZ4fiRGSUZQaHYmOWtEOShdQ0hHRXlnI2pHYGtNW2kuaz9nND5yTzpVV2VvMjhjfUFLRX5UZkJoeDtvVXEoc11xcXhoI2JvPGF5NkQ8ajErRHhDej4rYSZzWUlXX2AqPyFnb0g9TFVURX10ZisuT3ZeeV1qKlI4R3ZRK3BIL2NC''@;'; put 'put ''SCY7WjZEKTU1TlZJIUIuQ2Y1QSljYTplbF1EUE5dckBuYylhJHAoNFdidlYjOT1scS8ia2ohN2RVfEBMKUwkRzNXP1VNTER+YmNFZjp4Ulh5KyFvfWo+ezxPTXJuWyguXWxoU1spOm1XLkcmLnVVQ3E7KTw4LEwjKzBEKlNqPipSfi4+eTBDRndiNl0+N2JqNEhON05oXjsuMmdrOGxOTlh3dVAj''@;'; put 'put ''SWlCR3RVUlBTdzZCKlhbcVJ2W2xLOW4qNUd3TChIXldieXc0QGltODRNTj5aeSRPfjhYPVF7bWkvSXYsT3FbaygwV341XXtKZ09wJHFHKl5iOCg/JUYmQzw7LnJuPDxWalNUUS92NzIkZWpgSyYxKFY/emEqV1IjVlFESSZ0WEdrNzNbUGNiTUJKSzBAeGouKW8pVyJSdUpPS2Y5TSQoIU5gbFpz''@;'; put 'put ''b3k6MXgrLzRQQDJtTz5GKzY+QWVSelA3Rl5Pdnoja24uNTxWTFlLWk1na21oWipUSjcwSEs+PEYlL0t9ekM2QUIuLF9qYlBsTUo1JkQrSWBAIVBtRUglU0wsaFFSRlA/fm9kbVFUZmo4cj9kQkomW1tbMnRxYS9kTCEvS0M4I1BVfHVTekp+L0JjUWBGZS9AVGJ6ISheSF1qS3FSWGBPSkpGSk93''@;'; put 'put ''OEAxei9KJntBMkRPM3I9TFVHZns/P3UjYFRmRWY+czdOLmN2VlYuWzF4N3xmRn4/QVNxUCkjUFQ/SVN1QG1ENHg+QXheIUApPUpCbl15ZHJCL2hAVW90dUl5Rkt9SkEqMylBTT0hVFMlJno3SjRjc3lBOC47bUhYV1B6dmx4WGMzNWREZHBBWV4sOTFodSxURlV5ZV4xYlA0QSJPeyFIbUBLP2Aj''@;'; put 'put ''ayI3Ukw3T0pdZik5cCtSVzJed29xankzamJ0bSZkUD48L197cnFVdU5zdC4hfT4vVHJLYCFPTUheIzd0bjQselJMTWM9ZE0sLCw/L0skNUoiSVhndnVUPzQ2NCp4fjRvVVVMdlN4MXpXe3VndCIsa2tUW0BdKHE6WEU6QmVrM0J6WjB1RXZxXn1lTjtKMzlqc3ZGQXxJZHZsR3JocTRNNzIhKkc+''@;'; put 'put ''SlQ3SzB4P2pVPiRFSEpjUXNjRXB7d050RWE8YGdOcVVQVCtiRVN+VXUhZz80KlovWD9fNGpObnEuM3B9d1txZi56KH1CRkpFdDMseTwzTVQ+eShQOjEwVWRmZHVlM1tmQ3hFMD0uUH04U3AwXW1mMHt1X3VYdSZ2alMuK1V2Ym5BeShvbjc6clUvcnd9aDRpWyYwcTZTdEkzdmJIdnVpSnVkYyhx''@;'; put 'put ''RTBRSk5UeG9jS3hIQFBWeEwjLmwzWE4xIT57SltaNHtaPU0zd2ptXnN4QG58M1B+NW5reE5jTktSJC9me2o7LHUrX3dPMDVUbltGLlZFP29JIV9pfVVPIihLOEA/ejYsNkJIJTVXdmQ+bEk+S3N8Z2Z8IlZBPztaZ0FAWFJwXzdeM2c2cz5VUS9iJFIicGVXXmYjfiosbWEzbH5laXRJKzckTFZD''@;'; put 'put ''S05HSlciZDY8V0NIeW5yOTZXYno2NUA9RWdSMHJTI2txRC5ZUHtwVTRNVGRjR0A9QDd6Ry9eeGFULHNPUWFgPUcjK198VjMpISkkZns5NUx8bCVFfUpMZVJYSXhYeHtrST81KmNSViRoRV0hVkdOJSVnV1JkfUY/XmcjY30zdyl6TEZKOV5VSyIzOXVURH5oeDx2TEs2dm5nZ3g+Mlhscz93VEQl''@;'; put 'put ''WmhBTllIam5Za0VaYj1Bfl8oRVArM3h9P0cpcDBUe2lnbiV2Ujd4LzYjKyxbKFVQMTo6e2pfYkF8IzJfbDhyeDRFW3MkPGkjbVRKLEZqajt+SUJ5cT9bKyxJbUN1R1dsM31qdXNbbkN4YEJMdyV2X3Byd25RKjJhbjF2MS5oImxbLCNwP2x2P2MrdGtZZFt2ejxEaWNmZXlZSUkrYkh7W1JKSVdE''@;'; put 'put ''NVo0N2pgdEhbdGRzZmh+eixMQGVBL2Y0VDRLQ3JOQ1U7bSYpdmtIOCNMclBbQz9NKlB8K3NASSo8cXo9TTY3UD1qejl3Im1pPU09QmhWSDt0eWpVcFgzQzkhbyElZikqW1kxeHdCRmlPPWZ+cjw0Y3EjZD8xeDJKb2w2Sm9XMk8sdS4mQG1eQ1c7KltgcUUsSXhVbmVCVUF8Xz9XVylNYFRvU1pb''@;'; put 'put ''eipEb2lGQn1OcCM9SXh8YV08flQ5Uyg2UyplQi95cHVeVVo8PlU2NkVoNSVsKUkwdnRUJnFeUSx7cSImN2lFdS9jJHpnSDIrcmNeL2Y6MmFUV3Z8ajU1PztqR30+am0jTnN9MVtYcE43e2h6YixbalRLIiZrT3pkNlNafnZJWEcjRVFeTHV2RURbKlhdZ3hxPD4hMCp4ailyMnEiVFt0YT9pTH4x''@;'; put 'put ''NldPTEwrPHl9d1svRl9jalpfYUdsPDQ7b00+JlYjY0tQP2V6aitFT0s3SW1vJX5wez4zcClIMCVMdns7WHlNXnwpdVB1bH5RWC98eFpoN0xMVE5wSExndVsoQF43TlVPKGs0Tl4wKD98JWMzS1YvKjwwMiZjQHAlUlpMemdxTz5GbyhyTixTOFs3JmkyeEtbOXZWIlZSVCtLJVh3MmNRVlUsMChM''@;'; put 'put ''bW5ZSShqJnx3Wm9Xcy85Q0Q6b2o+Xz1AaFgjTmhbYyMoTiNoUzdmXU9QbUsuRVRXdmY4RTRhR2FWbXFlRWY3ZjRVY05uQUhDJn10dUBPU1J+RFhzcl1DSCpyRH19YG98V0FMekwrX0hUcEtZTEE+TjdBTEdZZSM1fil8ekMrbzgsUkBdSz1HYjYuW0F1WiE7Q2swe2FjKFBHRXd2K0FeUS92KUNl''@;'; put 'put ''YjxnSCFxe1hjP2J2T3VnY0FBeHY5QHxJPks+Pl4sXzlfP2JsdyMuXiorWHtob0pzfWpaem8hITVTS2ZoRXg0fVVaSGR6X0FCWUBdVF1gPGQyeGNwfGtuK240RkoibXN0cmVsWkBuNXdRb35JUm1ELHNlMzFfYz8uWGAmVTNYTTxPUXdxWmhHJClsWSI7LkQkbkdBMnUuamgzZ2ppdlN7SDE7Qz02''@;'; put 'put ''Um45ZH5nY1BgZDNrYTp4SlZHZUFefnFvWTtFMD12TH1DKjNlSSZkVzlid0REQlRkUXh8fTc2NFJgdGpVVU44Mn5MYD0sOV5SZipoc2IrKHVwNXM/RE1kQW5oVUZvPUZPV1JIJU5reXQ6YkxYVWRqZHpLKEMqWVBPJTRIQl0jOjguPUt9KXhdTUk9TD1rPishWmdCQXw5QlJDKGZJd1E8VzRBTG5v''@;'; put 'put ''cD1TbUowWVhlWHM4enBZbFpjbGRzZzlnKC8mNXN3MVAiPjt5YTt2NnBTeS44NGA+QGJkOEEuanc2UGM2fWN9djROQjc4M0tvV1ZeV1tFOz0yRUguTklPfVIpQUgxJi5QI1p7SVgpQWRrOStuI0IqKXoweHAhIUdvVlRmTE1nUitPJitYcmBSOVZeTl5fczdsWT9HSVBWVnZVXzJ4c21AL3hFaFQu''@;'; put 'put ''T2FtZnB3WVNAayo5LmJMKUpjOWgmfTY1Tl5CTkZdYlFlP2A1Q0hYaVdNUENyaUYybT42X0k1Kmo3dSNSYzZITU4lO3wpcjxUWG00IUI+PCg7UlU5NDZ3Ri4seWZFbkJ4cml3S1ZzSXNMZH15d2RxKVtYXXArfTFeLzRDeTg6NFYvRjFkRDRwL3F0UWpRUi5wOVl4cHUybTs2X3ZiYjskLitBImQw''@;'; put 'put ''bkc9N2doWlpxVTlGV1Esd0FjIy9PYlA4I2BIRkVAUkw2T1Y0XU9XS0BNNV5IT2ZCc2pERio9bytbfGoxWjRHQiptPWQiQXkwMFghLFYwMzkjREx4RzNYVSpdKD9uJUNaMGwrPGtJQ34/V0wweVRrO1cheEN3RS9uWSpsWWolRGxuYnQhT3JeMyk0TV9bbls+cjlsbTJJISsqcWBePVBXc01MbEUp''@;'; put 'put ''KldFKGJ0MnhueUBjUTZ0YEghUWJvSnRNND1sYk1EMzpvJGteWUJQfTVjdihKaStnNzxWW3I6e15MYVQ/VF1AKDlkRF46a1kjJlJ9XnchT3ZvM2EkL0lqfWl9dlt5cVdbWSFadzQ5UkZFXltZZ3Qxck83dW5XQyQqR2RoVVRnTkwsalchP1EiYzFIJV5nWF0wNix7aTRtVCheeH58Kj11Knh4TUpD''@;'; put 'put ''K0hYfTt5SXg/R3VbPE93flBHZXBJLEBDeSohWVkhd3pMUFEhNVlydFNpSSVVSntpRGNmamZ8I24vSUA7JnFWbzlwTHV5LGA9aCFqS2hTbChwU3xYTVVhUSFBY3hhYDZQejtQXnNEaS5yR0EoTVV8RSoseTE2MUNWbjkzLlM2b2tQJF91PzdVT218VkUxaG1pNyYqaHpwKl51SzpAMmU4UUlpJT9x''@;'; put 'put ''NS40dEVlKmlSUlQyJDdkRGRXOlVqWCUhW3R8dExzVXpKKDpbcHdaQ3EhKWFPS0J6MFMiP0dKOWtlPXNYRCw0VV9tayEzRFI7OCQkVE8zaEx7WTN0QmcoV0p+V2U2VChlUnBrK2FbdURTYUtUVnZZLmNCNE0uL2t5aSouN1IiUWBnNERiSUBAK35NPW10VSMyKS5NT35VQzxaZjVIfHovJnVnXnVz''@;'; put 'put ''bzpiM0hyJGVnKWkjWm94THh0QX0+b34sRTA4b2wmXmFIcz9QWVcwNFB7MT41QiEpQ1VxRH18QkxoNj55Ui54U1dQLjgvW2AreEhwI0QmRW9BISg8U3Z4Tjl8Jig0SFpjU2taPDt5ZnZJZGRfIyhrXnEzU0g9Sk5pVlNBXmQ8VztALC9iPkpPUk5hVDJOZjVaK2lTTkBHeTcmZVd8YlQ9LkZoN3Fv''@;'; put 'put ''VWVNU2A5X0tJTUdBMyNgfmVbfU56aHF6fUVKLDQ6NXBGUjV8LyJxVXtGeCJ7ayRTYkwzK0NyQm1QUUNiW0B4a0A1ODBxJiVuN3JLdDFFX0tPI2U8a2JfS0ckMD8ydH4+Qj1kKDJ3fmZFX1UpMVJUMjgiVF1DJn06X1tXWDVKcjspKWNhMCN8T088cW9qcy95WUB2dWhidUE2T3R2S1N5c2s2cSNq''@;'; put 'put ''PCtrcCliPVRwY1tGPGdXJiZnflBtXz9udiE9PT1BeD01cDElSD1LRyouczJRa0V1dy9GWHRoTjxYRkBtK3c1dCZlLGUiVkVGbSpBNlJFcCsjTDMyIWcpbSJhcEt+UFo2YWsrKjVJOjJTWFZOPCxGbktAMjIlMmQyRHk8KF1JQicpKSxkVHx8KGRUPWd2dCh7d2FzbUJpbmFyeTpaSixsb2NhdGVG''@;'; put 'put ''aWxlOnZvaWQgMH0pKSxkVCkudGhlbihjPT5uZXcgQzUoYykpfXN0YXRpYyB1bmxvYWQoKXtkVCYmKGRUPXZvaWQgMCl9dmVyc2lvbigpe3JldHVybiB0aGlzLl9tb2R1bGUuR3JhcGh2aXoucHJvdG90eXBlLnZlcnNpb24oKX1sYXlvdXQoYyxhPSJzdmciLGQ9ImRvdCIsaCl7aWYoIWMpcmV0''@;'; put 'put ''dXJuIiI7Y29uc3QgZj1uZXcgdGhpcy5fbW9kdWxlLkdyYXBodml6KGg/LnlJbnZlcnQ/MTowLGg/Lm5vcD9oPy5ub3A6MCk7bGV0IHY9IiIsUz0iIjt0cnl7IWZ1bmN0aW9uKFYsUSl7Y29uc3QgZGU9e2ltYWdlczpbXSxmaWxlczpbXSwuLi5RfTt2YXIgcGU7Wy4uLmRlLmZpbGVzLC4uLihw''@;'; put 'put ''ZT1kZS5pbWFnZXMscGUubWFwKG12dCkpXS5mb3JFYWNoKENlPT5WLmNyZWF0ZUZpbGUoQ2UucGF0aCxDZS5kYXRhKSl9KGYsaCk7dHJ5e3Y9Zi5sYXlvdXQoYyxhLGQpfWNhdGNoKFYpe1M9Vi5tZXNzYWdlfVM9Zi5sYXN0RXJyb3IoKXx8U31maW5hbGx5e3RoaXMuX21vZHVsZS5kZXN0cm95''@;'; put 'put ''KGYpfWlmKCF2JiZTKXRocm93IEM1LnVubG9hZCgpLG5ldyBFcnJvcihTKTtyZXR1cm4gdn1hY3ljbGljKGMsYT0hMSxkPSExKXtpZighYylyZXR1cm57YWN5Y2xpYzohMSxudW1fcmV2OjAsb3V0RmlsZToiIn07Y29uc3QgaD1uZXcgdGhpcy5fbW9kdWxlLkdyYXBodml6O2xldCBmPSExLHY9''@;'; put 'put ''MCxTPSIiLFY9IiI7dHJ5e3RyeXtmPWguYWN5Y2xpYyhjLGEsZCksdj1oLmFjeWNsaWNfbnVtX3JldixTPWguYWN5Y2xpY19vdXRGaWxlfWNhdGNoKFEpe1Y9US5tZXNzYWdlfVY9aC5sYXN0RXJyb3IoKXx8Vn1maW5hbGx5e3RoaXMuX21vZHVsZS5kZXN0cm95KGgpfWlmKFYpdGhyb3cgQzUu''@;'; put 'put ''dW5sb2FkKCksbmV3IEVycm9yKFYpO3JldHVybnthY3ljbGljOmYsbnVtX3Jldjp2LG91dEZpbGU6U319dHJlZChjLGE9ITEsZD0hMSl7aWYoIWMpcmV0dXJue291dDoiIixlcnI6IiJ9O2NvbnN0IGg9bmV3IHRoaXMuX21vZHVsZS5HcmFwaHZpejtsZXQgZj0iIix2PSIiLFM9IiI7dHJ5e3Ry''@;'; put 'put ''eXtoLnRyZWQoYyxhLGQpLGY9aC50cmVkX291dCx2PWgudHJlZF9lcnJ9Y2F0Y2goVil7Uz1WLm1lc3NhZ2V9Uz1oLmxhc3RFcnJvcigpfHxTfWZpbmFsbHl7dGhpcy5fbW9kdWxlLmRlc3Ryb3koaCl9aWYoIWYmJlMpdGhyb3cgQzUudW5sb2FkKCksbmV3IEVycm9yKFMpO3JldHVybntvdXQ6''@;'; put 'put ''ZixlcnI6dn19dW5mbGF0dGVuKGMsYT0wLGQ9ITEsaD0wKXtpZighYylyZXR1cm4iIjtjb25zdCBmPW5ldyB0aGlzLl9tb2R1bGUuR3JhcGh2aXo7bGV0IHY9IiIsUz0iIjt0cnl7dHJ5e3Y9Zi51bmZsYXR0ZW4oYyxhLGQsaCl9Y2F0Y2goVil7Uz1WLm1lc3NhZ2V9Uz1mLmxhc3RFcnJvcigp''@;'; put 'put ''fHxTfWZpbmFsbHl7dGhpcy5fbW9kdWxlLmRlc3Ryb3koZil9aWYoIXYmJlMpdGhyb3cgQzUudW5sb2FkKCksbmV3IEVycm9yKFMpO3JldHVybiB2fWNpcmNvKGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJjaXJjbyIsZCl9ZG90KGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5sYXlvdXQoYyxhLCJkb3QiLGQpfWZkcChjLGE9InN2ZyIsZCl7cmV0dXJuIHRoaXMubGF5b3V0KGMsYSwiZmRwIixkKX1zZmRwKGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJzZmRwIixkKX1uZWF0byhjLGE9InN2ZyIsZCl7cmV0dXJuIHRoaXMubGF5b3V0KGMsYSwi''@;'; put 'put ''bmVhdG8iLGQpfW9zYWdlKGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJvc2FnZSIsZCl9cGF0Y2h3b3JrKGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxhLCJwYXRjaHdvcmsiLGQpfXR3b3BpKGMsYT0ic3ZnIixkKXtyZXR1cm4gdGhpcy5sYXlvdXQoYyxh''@;'; put 'put ''LCJ0d29waSIsZCl9bm9wKGMpe3JldHVybiB0aGlzLmxheW91dChjLCJkb3QiLCJub3AiKX1ub3AyKGMpe3JldHVybiB0aGlzLmxheW91dChjLCJkb3QiLCJub3AyIil9fWZ1bmN0aW9uIFZGKGwpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGwpfWZ1bmN0aW9uIFM1KGwpe3JldHVybiBNYXRo''@;'; put 'put ''LnJvdW5kKDEwMCpsKS8xMDB9ZnVuY3Rpb24gUGdlKGwsYyl7aWYoInBvbHlnb24iPT1sLnRhZyl7KGE9VkYobCkpLnRhZz0icGF0aCI7dmFyIGg9VkYoZD1sLmF0dHJpYnV0ZXMpLGY9ZC5wb2ludHM7aWYoInBvbHlnb24iPT1jLnRhZyl7KHY9bC5iYm94KS5jeD12Lngrdi53aWR0aC8yLHYu''@;'; put 'put ''Y3k9di55K3YuaGVpZ2h0LzI7Zm9yKHZhciBWPWQucG9pbnRzLnNwbGl0KCIgIiksUT1WLm1hcChmdW5jdGlvbihJbil7dmFyIE9yPUluLnNwbGl0KCIsIik7cmV0dXJuW09yWzBdLXYuY3gsT3JbMV0tdi5jeV19KSxkZT1RW1EubGVuZ3RoLTFdWzBdLHBlPVFbUS5sZW5ndGgtMV1bMV0sQ2U9''@;'; put 'put ''MDtDZTxRLmxlbmd0aDtDZSsrLGRlPU9lLHBlPVllKXt2YXIgZXQ9KE9lPVFbQ2VdWzBdKS1kZTtpZigwIT0oZHQ9KFllPVFbQ2VdWzFdKS1wZSkmJjA8PShodD1kZS1wZSpldC9kdCkmJmh0PDEvMCYmKGRlPD1odCYmaHQ8PU9lfHxPZTw9aHQmJmh0PD1kZSkpYnJlYWt9dmFyIE10PVtbdi5j''@;'; put 'put ''eCtodCx2LmN5KzBdLmpvaW4oIiwiKV07Zj0oTXQ9KE10PU10LmNvbmNhdChWLnNsaWNlKENlKSkpLmNvbmNhdChWLnNsaWNlKDAsQ2UpKSkuam9pbigiICIpfWguZD0iTSIrZisieiIsZGVsZXRlIGgucG9pbnRzLGEuYXR0cmlidXRlcz1ofWVsc2V7dmFyIGE7KGE9VkYobCkpLnRhZz0icGF0''@;'; put 'put ''aCIsaD1WRihkPWwuYXR0cmlidXRlcyk7dmFyIGQsT2UsWWUsaHQsUXQ9ZC5jeCxsbj1kLmN5LHZuPWQucngsd249ZC5yeTtpZigicG9seWdvbiI9PWMudGFnKXt2YXIgdjsodj1jLmJib3gpLmN4PXYueCt2LndpZHRoLzIsdi5jeT12Lnkrdi5oZWlnaHQvMjt2YXIgbnI9Yy5hdHRyaWJ1dGVz''@;'; put 'put ''LnBvaW50cy5zcGxpdCgiICIpWzBdLnNwbGl0KCIsIiksZHQ9KGV0PW5yWzBdLXYuY3gsbnJbMV0tdi5jeSksUGk9TWF0aC5zcXJ0KE1hdGgucG93KGV0LDIpK01hdGgucG93KGR0LDIpKSx5cj1ldC9QaSxfaT0tZHQvUGl9ZWxzZSB5cj0xLF9pPTA7aC5kPSJNICIrUXQrIiAiK2xuKyIgbSAi''@;'; put 'put ''KyhPZT12bip5cikrIiwiKyhZZT0td24qX2kpKyIgYSAiK3ZuKyIsIit3bisiIDAgMSwwICIrKGV0PShodD12bioteXIpLU9lKSsiLCIrKGR0PS13biotX2ktWWUpKyIgYSAiK3ZuKyIsIit3bisiIDAgMSwwICIrLWV0KyIsIistZHQrInoiLGRlbGV0ZSBoLmN4LGRlbGV0ZSBoLmN5LGRlbGV0''@;'; put 'put ''ZSBoLnJ4LGRlbGV0ZSBoLnJ5LGEuYXR0cmlidXRlcz1ofXJldHVybiBhfWZ1bmN0aW9uIGJ2dCgpe3RyeXtDNS5sb2FkKCkudGhlbihhPT57YS5sYXlvdXQoIiIsInN2ZyIsImRvdCIpLHRoaXMubGF5b3V0U3luYz1hLmxheW91dC5iaW5kKGEpLG51bGw9PXRoaXMuX3dvcmtlciYmdGhpcy5f''@;'; put 'put ''ZGlzcGF0Y2guY2FsbCgiaW5pdEVuZCIsdGhpcyksdGhpcy5fYWZ0ZXJJbml0JiZ0aGlzLl9hZnRlckluaXQoKX0pfWNhdGNoe31pZihudWxsIT10aGlzLl93b3JrZXIpe3ZhciBsPXRoaXMuX3ZpelVSTCxjPXRoaXM7dGhpcy5fd29ya2VyUG9ydC5vbm1lc3NhZ2U9ZnVuY3Rpb24oYSl7Yy5f''@;'; put 'put ''d29ya2VyQ2FsbGJhY2tzLnNoaWZ0KCkuY2FsbChjLGEpfSxsLm1hdGNoKC9eaHR0cHM/OlwvXC98XlwvXC8vaSl8fChsPW5ldyB3aW5kb3cuVVJMKGwsZG9jdW1lbnQubG9jYXRpb24uaHJlZikuaHJlZiksWUouY2FsbCh0aGlzLHt0eXBlOiJsYXlvdXQiLGRvdDoiIixlbmdpbmU6ImRvdCIs''@;'; put 'put ''dml6VVJMOmx9LGZ1bmN0aW9uKGEpe30pLFlKLmNhbGwodGhpcyx7dHlwZToidmVyc2lvbiJ9LGZ1bmN0aW9uKGEpeyJ2ZXJzaW9uIj09PWEuZGF0YS50eXBlJiYoYy5fZ3JhcGh2aXpWZXJzaW9uPWEuZGF0YS52ZXJzaW9uLGMuX2Rpc3BhdGNoLmNhbGwoImluaXRFbmQiLHRoaXMpKX0pfX1m''@;'; put 'put ''dW5jdGlvbiBZSihsLGMpe3RoaXMuX3dvcmtlckNhbGxiYWNrcy5wdXNoKGMpLHRoaXMuX3dvcmtlclBvcnQucG9zdE1lc3NhZ2UobCl9ZnVuY3Rpb24gQ3Z0KGwsYyl7dmFyIGE9dGhpcy5fb3B0aW9ucy5rZXlNb2RlLGQ9dGhpcy5fb3B0aW9ucy50d2VlblBhdGhzLGg9dGhpcy5fb3B0aW9u''@;'; put 'put ''cy50d2VlblNoYXBlcztpZigic3RyaW5nIj09dHlwZW9mIHRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24mJnRoaXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24uaW5jbHVkZXMoIiUiKSl2YXIgZj0rdGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbi5zcGxpdCgiJSIpWzBdLzEwMCx2PXRo''@;'; put 'put ''aXMuX29wdGlvbnMudHdlZW5QcmVjaXNpb24uaW5jbHVkZXMoIiUiKTtlbHNlIGY9dGhpcy5fb3B0aW9ucy50d2VlblByZWNpc2lvbix2PSExO3ZhciBTPXRoaXMuX29wdGlvbnMuZ3Jvd0VudGVyaW5nRWRnZXMsVj17fSxRPXRoaXMuX2RpY3Rpb25hcnl8fHt9LGRlPXt9LHBlPXRoaXMuX25v''@;'; put 'put ''ZGVEaWN0aW9uYXJ5fHx7fTtmdW5jdGlvbiBodCh5cixfaT0wLFVyKXsoZnVuY3Rpb24gQ2UoeXIsX2kpe3ZhciBVcj15ci50YWc7aWYoImluZGV4Ij09YSl5ci5rZXk9X2k7ZWxzZSBpZigiIyIhPVVyWzBdKWlmKCJpZCI9PWEpeXIua2V5PXlyLmF0dHJpYnV0ZXMuaWQ7ZWxzZSBpZigidGl0''@;'; put 'put ''bGUiPT1hKXt2YXIgSW49eXIuY2hpbGRyZW4uZmluZChmdW5jdGlvbihPcil7cmV0dXJuInRpdGxlIj09T3IudGFnfSk7SW4mJih5ci5rZXk9SW4uY2hpbGRyZW4ubGVuZ3RoPjA/SW4uY2hpbGRyZW5bMF0udGV4dDoiIil9bnVsbD09eXIua2V5JiYoaCYmKCJlbGxpcHNlIj09VXJ8fCJwb2x5''@;'; put 'put ''Z29uIj09VXIpJiYoVXI9InBhdGgiKSx5ci5rZXk9VXIrIi0iK19pKX0pKHlyLF9pKSxmdW5jdGlvbiBPZSh5cixfaSl7eXIuaWQ9KF9pP19pLmlkKyIuIjoiIikreXIua2V5fSh5cixVcik7dmFyIE9yPVFbeXIuaWRdOyhmdW5jdGlvbiBZZSh5cil7Vlt5ci5pZF09eXJ9KSh5ciksZnVuY3Rp''@;'; put 'put ''b24gZXQoeXIsX2kpe2gmJnlyLmlkIGluIFEmJigicG9seWdvbiI9PV9pLnRhZ3x8ImVsbGlwc2UiPT1faS50YWd8fCJwYXRoIj09X2kudGFnKSYmKF9pLnRhZyE9eXIudGFnfHwicG9seWdvbiI9PXlyLnRhZykmJigicGF0aCIhPV9pLnRhZyYmKHlyLmFsdGVybmF0aXZlT2xkPVBnZShfaSx5''@;'; put 'put ''cikpLCJwYXRoIiE9eXIudGFnJiYoeXIuYWx0ZXJuYXRpdmVOZXc9UGdlKHlyLF9pKSkpfSh5cixPciksZnVuY3Rpb24gZHQoeXIsX2kpe2lmKGQmJl9pJiYoInBhdGgiPT1faS50YWd8fHlyLmFsdGVybmF0aXZlT2xkJiYicGF0aCI9PXlyLmFsdGVybmF0aXZlT2xkLnRhZykpe3ZhciBVcj0o''@;'; put 'put ''eXIuYWx0ZXJuYXRpdmVOZXd8fHlyKS5hdHRyaWJ1dGVzLmQ7aWYoeXIuYWx0ZXJuYXRpdmVPbGQpdmFyIEluPU5KKHlyLmFsdGVybmF0aXZlT2xkKTtlbHNlIEluPU5KKF9pKTsoeXIuYWx0ZXJuYXRpdmVPbGR8fCh5ci5hbHRlcm5hdGl2ZU9sZD17fSkpLnBvaW50cz1mdW5jdGlvbiAkOXQo''@;'; put 'put ''bCxjLGEsZCl7Y29uc3QgaD1sLGY9aC5jbG9uZU5vZGUoKSx2PWguZ2V0VG90YWxMZW5ndGgoKSxTPShmLnNldEF0dHJpYnV0ZSgiZCIsYyksZikuZ2V0VG90YWxMZW5ndGgoKSxWPVswXTtsZXQgUT0wO2NvbnN0IGRlPWQ/YTphL01hdGgubWF4KHYsUyk7Zm9yKDsoUSs9ZGUpPDE7KVYucHVz''@;'; put 'put ''aChRKTtyZXR1cm4gVi5wdXNoKDEpLFYubWFwKGZ1bmN0aW9uKENlKXtjb25zdCBPZT1oLmdldFBvaW50QXRMZW5ndGgoQ2UqdiksWWU9Zi5nZXRQb2ludEF0TGVuZ3RoKENlKlMpO3JldHVybltbT2UueCxPZS55XSxbWWUueCxZZS55XV19KX0oSW4sVXIsZix2KX19KHlyLE9yKTt2YXIgV249''@;'; put 'put ''e307eXIuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihUcil7dmFyIEVyPVRyLnRhZzsoImVsbGlwc2UiPT1Fcnx8InBvbHlnb24iPT1FcikmJihFcj0icGF0aCIpLG51bGw9PVduW0VyXSYmKFduW0VyXT0wKSxodChUcixXbltFcl0rKyx5cil9KX1mdW5jdGlvbiBsbih5cil7KGZ1bmN0aW9u''@;'; put 'put ''IE10KHlyKXtpZihTJiZ5ci5wYXJlbnQmJiJub2RlIj09eXIucGFyZW50LmF0dHJpYnV0ZXMuY2xhc3MmJiJ0aXRsZSI9PXlyLnRhZyl7aWYoeXIuY2hpbGRyZW4ubGVuZ3RoPjApdmFyIEluPXlyLmNoaWxkcmVuWzBdLnRleHQ7ZWxzZSBJbj0iIjtkZVtJbl09eXIucGFyZW50fX0pKHlyKSxm''@;'; put 'put ''dW5jdGlvbiBRdCh5cil7dmFyIFVyPXlyLnRhZztpZihTJiYhUVt5ci5pZF0mJnlyLnBhcmVudCYmSWdlKHlyKSYmKCJwYXRoIj09VXJ8fCJwb2x5Z29uIj09VXIpKXtpZigicG9seWdvbiI9PVVyKXt2YXIgT3I9eXIucGFyZW50LmNoaWxkcmVuLmZpbmQoZnVuY3Rpb24oanIpe3JldHVybiJw''@;'; put 'put ''YXRoIj09anIudGFnfSk7T3ImJih5ci50b3RhbExlbmd0aD1Pci50b3RhbExlbmd0aCl9dmFyIFduPWZ1bmN0aW9uIFg5dChsKXtyZXR1cm4gZnVuY3Rpb24gSzl0KGwpe3JldHVybiJlZGdlIj09bC5wYXJlbnQuYXR0cmlidXRlcy5jbGFzcz9sLnBhcmVudDpsLnBhcmVudC5wYXJlbnQucGFy''@;'; put 'put ''ZW50fShsKS5jaGlsZHJlbi5maW5kKGZ1bmN0aW9uKGMpe3JldHVybiJ0aXRsZSI9PWMudGFnfSl9KHlyKSxUcj1Xbi5jaGlsZHJlblswXSxFcj1Uci50ZXh0LnNwbGl0KCItPiIpOzIhPUVyLmxlbmd0aCYmKEVyPVRyLnRleHQuc3BsaXQoIi0tIikpO3ZhciB6cj1FclswXSxCaT1kZVt6cl07''@;'; put 'put ''aWYoT2JqZWN0Lmhhc093bihwZSx6cikpe3ZhciBTdD1wZVt6cl07aWYoKFV0PUJpLmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbihqcixUaSl7cmV0dXJuImciPT1qci50YWd9KSk+PTApe3ZhciBMdD1CaS5jaGlsZHJlbltVdF0uY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0aW9uKGpyLFRp''@;'; put 'put ''KXtyZXR1cm4iYSI9PWpyLnRhZ30pO0JpPUJpLmNoaWxkcmVuW1V0XS5jaGlsZHJlbltMdF19KFV0PVN0LmNoaWxkcmVuLmZpbmRJbmRleChmdW5jdGlvbihqcixUaSl7cmV0dXJuImciPT1qci50YWd9KSk+PTAmJihMdD1TdC5jaGlsZHJlbltVdF0uY2hpbGRyZW4uZmluZEluZGV4KGZ1bmN0''@;'; put 'put ''aW9uKFRpLG5vKXtyZXR1cm4iYSI9PVRpLnRhZ30pLFN0PVN0LmNoaWxkcmVuW1V0XS5jaGlsZHJlbltMdF0pO2Zvcih2YXIgRm49QmkuY2hpbGRyZW4sVXQ9MDtVdDxGbi5sZW5ndGg7VXQrKylpZigicG9seWdvbiI9PUZuW1V0XS50YWd8fCJlbGxpcHNlIj09Rm5bVXRdLnRhZ3x8InBhdGgi''@;'; put 'put ''PT1GbltVdF0udGFnfHwidGV4dCI9PUZuW1V0XS50YWcpe3ZhciBLbj1GbltVdF07YnJlYWt9dmFyIGRyPVN0LmNoaWxkcmVuO2ZvcihVdD0wO1V0PGRyLmxlbmd0aDtVdCsrKWlmKCJwb2x5Z29uIj09ZHJbVXRdLnRhZ3x8ImVsbGlwc2UiPT1kcltVdF0udGFnfHwicGF0aCI9PWRyW1V0XS50''@;'; put 'put ''YWd8fCJ0ZXh0Ij09ZHJbVXRdLnRhZyl7dmFyIGtyPWRyW1V0XTticmVha315ci5vZmZzZXQ9a3ImJktuP3t4OmtyLmNlbnRlci54LUtuLmNlbnRlci54LHk6a3IuY2VudGVyLnktS24uY2VudGVyLnl9Ont4OjAseTowfX19fSh5cikseXIuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihfaSl7''@;'; put 'put ''bG4oX2kpfSl9dGhpcy5fZGlzcGF0Y2guY2FsbCgibGF5b3V0RW5kIix0aGlzKTt2YXIgdm49WnMoZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmQoImRpdiIpLG5yPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGwsImltYWdlL3N2Zyt4bWwi''@;'; put 'put ''KTt2bi5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gbnIuZG9jdW1lbnRFbGVtZW50fSk7dmFyIE1pPSQ3KHZuLnNlbGVjdCgic3ZnIikpO3RoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFFeHRyYWN0RW5kIix0aGlzKSxodChNaSksdGhpcy5fZGlzcGF0Y2guY2FsbCgiZGF0YVByb2Nlc3NQYXNz''@;'; put 'put ''MUVuZCIsdGhpcyksbG4oTWkpLHRoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFQcm9jZXNzUGFzczJFbmQiLHRoaXMpLHRoaXMuX2RhdGE9TWksdGhpcy5fZGljdGlvbmFyeT1WLHRoaXMuX25vZGVEaWN0aW9uYXJ5PWRlLHRoaXMuX2V4dHJhY3REYXRhPWZ1bmN0aW9uKHlyLF9pLFVyKXt2YXIg''@;'; put 'put ''SW49JDcoeXIpO3JldHVybiBodChJbixfaSxVciksbG4oSW4pLElufSx0aGlzLl9idXN5PSExLHRoaXMuX2Rpc3BhdGNoLmNhbGwoImRhdGFQcm9jZXNzRW5kIix0aGlzKSxjJiZjLmNhbGwodGhpcyksdGhpcy5fcXVldWUubGVuZ3RoPjAmJnRoaXMuX3F1ZXVlLnNoaWZ0KCkuY2FsbCh0aGlz''@;'; put 'put ''KX1mdW5jdGlvbiBCRihsLGMpe2lmKChhPShsPWM/bC50b0V4cG9uZW50aWFsKGMtMSk6bC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgYSxkPWwuc2xpY2UoMCxhKTtyZXR1cm5bZC5sZW5ndGg+MT9kWzBdK2Quc2xpY2UoMik6ZCwrbC5zbGljZShh''@;'; put 'put ''KzEpXX12YXIgRmdlLEd2dD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBXSihsKXtpZighKGM9R3Z0LmV4ZWMobCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrbCk7''@;'; put 'put ''dmFyIGM7cmV0dXJuIG5ldyBHSih7ZmlsbDpjWzFdLGFsaWduOmNbMl0sc2lnbjpjWzNdLHN5bWJvbDpjWzRdLHplcm86Y1s1XSx3aWR0aDpjWzZdLGNvbW1hOmNbN10scHJlY2lzaW9uOmNbOF0mJmNbOF0uc2xpY2UoMSksdHJpbTpjWzldLHR5cGU6Y1sxMF19KX1mdW5jdGlvbiBHSihsKXt0''@;'; put 'put ''aGlzLmZpbGw9dm9pZCAwPT09bC5maWxsPyIgIjpsLmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT1sLmFsaWduPyI+IjpsLmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT1sLnNpZ24/Ii0iOmwuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT1sLnN5bWJvbD8iIjpsLnN5bWJvbCsi''@;'; put 'put ''Iix0aGlzLnplcm89ISFsLnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT1sLndpZHRoP3ZvaWQgMDorbC53aWR0aCx0aGlzLmNvbW1hPSEhbC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT1sLnByZWNpc2lvbj92b2lkIDA6K2wucHJlY2lzaW9uLHRoaXMudHJpbT0hIWwudHJpbSx0aGlz''@;'; put 'put ''LnR5cGU9dm9pZCAwPT09bC50eXBlPyIiOmwudHlwZSsiIn1mdW5jdGlvbiBOZ2UobCxjKXt2YXIgYT1CRihsLGMpO2lmKCFhKXJldHVybiBsKyIiO3ZhciBkPWFbMF0saD1hWzFdO3JldHVybiBoPDA/IjAuIituZXcgQXJyYXkoLWgpLmpvaW4oIjAiKStkOmQubGVuZ3RoPmgrMT9kLnNsaWNl''@;'; put 'put ''KDAsaCsxKSsiLiIrZC5zbGljZShoKzEpOmQrbmV3IEFycmF5KGgtZC5sZW5ndGgrMikuam9pbigiMCIpfVdKLnByb3RvdHlwZT1HSi5wcm90b3R5cGUsR0oucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5''@;'; put 'put ''bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJp''@;'; put 'put ''bT8ifiI6IiIpK3RoaXMudHlwZX07Y29uc3QgSGdlPXsiJSI6KGwsYyk9PigxMDAqbCkudG9GaXhlZChjKSxiOmw9Pk1hdGgucm91bmQobCkudG9TdHJpbmcoMiksYzpsPT5sKyIiLGQ6ZnVuY3Rpb24gVXZ0KGwpe3JldHVybiBNYXRoLmFicyhsPU1hdGgucm91bmQobCkpPj0xZTIxP2wudG9M''@;'; put 'put ''b2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTpsLnRvU3RyaW5nKDEwKX0sZToobCxjKT0+bC50b0V4cG9uZW50aWFsKGMpLGY6KGwsYyk9PmwudG9GaXhlZChjKSxnOihsLGMpPT5sLnRvUHJlY2lzaW9uKGMpLG86bD0+TWF0aC5yb3VuZChsKS50b1N0cmluZyg4KSxwOihsLGMp''@;'; put 'put ''PT5OZ2UoMTAwKmwsYykscjpOZ2UsczpmdW5jdGlvbiBxdnQobCxjKXt2YXIgYT1CRihsLGMpO2lmKCFhKXJldHVybiBsKyIiO3ZhciBkPWFbMF0saD1hWzFdLGY9aC0oRmdlPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGgvMykpKSkrMSx2PWQubGVuZ3RoO3JldHVybiBm''@;'; put 'put ''PT09dj9kOmY+dj9kK25ldyBBcnJheShmLXYrMSkuam9pbigiMCIpOmY+MD9kLnNsaWNlKDAsZikrIi4iK2Quc2xpY2UoZik6IjAuIituZXcgQXJyYXkoMS1mKS5qb2luKCIwIikrQkYobCxNYXRoLm1heCgwLGMrZi0xKSlbMF19LFg6bD0+TWF0aC5yb3VuZChsKS50b1N0cmluZygxNikudG9V''@;'; put 'put ''cHBlckNhc2UoKSx4Omw9Pk1hdGgucm91bmQobCkudG9TdHJpbmcoMTYpfTtmdW5jdGlvbiBWZ2UobCl7cmV0dXJuIGx9dmFyIGpGLHMyLEJnZT1BcnJheS5wcm90b3R5cGUubWFwLGpnZT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4YjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAi''@;'; put 'put ''LCJFIiwiWiIsIlkiXTshZnVuY3Rpb24gSnZ0KGwpe2pGPWZ1bmN0aW9uIEt2dChsKXt2YXIgYz12b2lkIDA9PT1sLmdyb3VwaW5nfHx2b2lkIDA9PT1sLnRob3VzYW5kcz9WZ2U6ZnVuY3Rpb24gWXZ0KGwsYyl7cmV0dXJuIGZ1bmN0aW9uKGEsZCl7Zm9yKHZhciBoPWEubGVuZ3RoLGY9W10s''@;'; put 'put ''dj0wLFM9bFswXSxWPTA7aD4wJiZTPjAmJihWK1MrMT5kJiYoUz1NYXRoLm1heCgxLGQtVikpLGYucHVzaChhLnN1YnN0cmluZyhoLT1TLGgrUykpLCEoKFYrPVMrMSk+ZCkpOylTPWxbdj0odisxKSVsLmxlbmd0aF07cmV0dXJuIGYucmV2ZXJzZSgpLmpvaW4oYyl9fShCZ2UuY2FsbChsLmdy''@;'; put 'put ''b3VwaW5nLE51bWJlciksbC50aG91c2FuZHMrIiIpLGE9dm9pZCAwPT09bC5jdXJyZW5jeT8iIjpsLmN1cnJlbmN5WzBdKyIiLGQ9dm9pZCAwPT09bC5jdXJyZW5jeT8iIjpsLmN1cnJlbmN5WzFdKyIiLGg9dm9pZCAwPT09bC5kZWNpbWFsPyIuIjpsLmRlY2ltYWwrIiIsZj12b2lkIDA9PT1s''@;'; put 'put ''Lm51bWVyYWxzP1ZnZTpmdW5jdGlvbiBXdnQobCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBjLnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24oYSl7cmV0dXJuIGxbK2FdfSl9fShCZ2UuY2FsbChsLm51bWVyYWxzLFN0cmluZykpLHY9dm9pZCAwPT09bC5wZXJjZW50PyIlIjpsLnBlcmNl''@;'; put 'put ''bnQrIiIsUz12b2lkIDA9PT1sLm1pbnVzPyJcdTIyMTIiOmwubWludXMrIiIsVj12b2lkIDA9PT1sLm5hbj8iTmFOIjpsLm5hbisiIjtmdW5jdGlvbiBRKHBlKXt2YXIgQ2U9KHBlPVdKKHBlKSkuZmlsbCxPZT1wZS5hbGlnbixZZT1wZS5zaWduLGV0PXBlLnN5bWJvbCxkdD1wZS56ZXJvLGh0''@;'; put 'put ''PXBlLndpZHRoLE10PXBlLmNvbW1hLFF0PXBlLnByZWNpc2lvbixsbj1wZS50cmltLHZuPXBlLnR5cGU7Im4iPT09dm4/KE10PSEwLHZuPSJnIik6SGdlW3ZuXXx8KHZvaWQgMD09PVF0JiYoUXQ9MTIpLGxuPSEwLHZuPSJnIiksKGR0fHwiMCI9PT1DZSYmIj0iPT09T2UpJiYoZHQ9ITAsQ2U9''@;'; put 'put ''IjAiLE9lPSI9Iik7dmFyIHduPSIkIj09PWV0P2E6IiMiPT09ZXQmJi9bYm94WF0vLnRlc3Qodm4pPyIwIit2bi50b0xvd2VyQ2FzZSgpOiIiLG5yPSIkIj09PWV0P2Q6L1slcF0vLnRlc3Qodm4pP3Y6IiIsdnI9SGdlW3ZuXSxNaT0vW2RlZmdwcnMlXS8udGVzdCh2bik7ZnVuY3Rpb24gUGko''@;'; put 'put ''eXIpe3ZhciBJbixPcixXbixfaT13bixVcj1ucjtpZigiYyI9PT12bilVcj12cih5cikrVXIseXI9IiI7ZWxzZXt2YXIgVHI9KHlyPSt5cik8MHx8MS95cjwwO2lmKHlyPWlzTmFOKHlyKT9WOnZyKE1hdGguYWJzKHlyKSxRdCksbG4mJih5cj1mdW5jdGlvbiAkdnQobCl7ZTpmb3IodmFyIGgs''@;'; put 'put ''Yz1sLmxlbmd0aCxhPTEsZD0tMTthPGM7KythKXN3aXRjaChsW2FdKXtjYXNlIi4iOmQ9aD1hO2JyZWFrO2Nhc2UiMCI6MD09PWQmJihkPWEpLGg9YTticmVhaztkZWZhdWx0OmlmKCErbFthXSlicmVhayBlO2Q+MCYmKGQ9MCl9cmV0dXJuIGQ+MD9sLnNsaWNlKDAsZCkrbC5zbGljZShoKzEp''@;'; put 'put ''Omx9KHlyKSksVHImJjA9PSt5ciYmIisiIT09WWUmJihUcj0hMSksX2k9KFRyPyIoIj09PVllP1llOlM6Ii0iPT09WWV8fCIoIj09PVllPyIiOlllKStfaSxVcj0oInMiPT09dm4/amdlWzgrRmdlLzNdOiIiKStVcisoVHImJiIoIj09PVllPyIpIjoiIiksTWkpZm9yKEluPS0xLE9yPXlyLmxl''@;'; put 'put ''bmd0aDsrK0luPE9yOylpZig0OD4oV249eXIuY2hhckNvZGVBdChJbikpfHxXbj41Nyl7VXI9KDQ2PT09V24/aCt5ci5zbGljZShJbisxKTp5ci5zbGljZShJbikpK1VyLHlyPXlyLnNsaWNlKDAsSW4pO2JyZWFrfX1NdCYmIWR0JiYoeXI9Yyh5ciwxLzApKTt2YXIgRXI9X2kubGVuZ3RoK3ly''@;'; put 'put ''Lmxlbmd0aCtVci5sZW5ndGgsenI9RXI8aHQ/bmV3IEFycmF5KGh0LUVyKzEpLmpvaW4oQ2UpOiIiO3N3aXRjaChNdCYmZHQmJih5cj1jKHpyK3lyLHpyLmxlbmd0aD9odC1Vci5sZW5ndGg6MS8wKSx6cj0iIiksT2Upe2Nhc2UiPCI6eXI9X2kreXIrVXIrenI7YnJlYWs7Y2FzZSI9Ijp5cj1f''@;'; put 'put ''aSt6cit5citVcjticmVhaztjYXNlIl4iOnlyPXpyLnNsaWNlKDAsRXI9enIubGVuZ3RoPj4xKStfaSt5citVcit6ci5zbGljZShFcik7YnJlYWs7ZGVmYXVsdDp5cj16citfaSt5citVcn1yZXR1cm4gZih5cil9cmV0dXJuIFF0PXZvaWQgMD09PVF0PzY6L1tncHJzXS8udGVzdCh2bik/TWF0''@;'; put 'put ''aC5tYXgoMSxNYXRoLm1pbigyMSxRdCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsUXQpKSxQaS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBwZSsiIn0sUGl9cmV0dXJue2Zvcm1hdDpRLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkZShwZSxDZSl7dmFyIE9lPVEoKChwZT1XSihwZSkpLnR5''@;'; put 'put ''cGU9ImYiLHBlKSksWWU9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoZnVuY3Rpb24gWnZ0KGwpe3JldHVybihsPUJGKE1hdGguYWJzKGwpKSk/bFsxXTpOYU59KENlKS8zKSkpLGV0PU1hdGgucG93KDEwLC1ZZSksZHQ9amdlWzgrWWUvM107cmV0dXJuIGZ1bmN0aW9uKGh0''@;'; put 'put ''KXtyZXR1cm4gT2UoZXQqaHQpK2R0fX19fShsKSxzMj1qRi5mb3JtYXR9KHt0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pO2NvbnN0ICRKPU1hdGguUEkscUo9MiokSixLNz0xZS02LHRfdD1xSi1LNztmdW5jdGlvbiB6Z2UobCl7dGhpcy5fKz1sWzBdO2Zv''@;'; put 'put ''cihsZXQgYz0xLGE9bC5sZW5ndGg7YzxhOysrYyl0aGlzLl8rPWFyZ3VtZW50c1tjXStsW2NdfWNsYXNzIEtKe2NvbnN0cnVjdG9yKGMpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIiLHRoaXMuX2FwcGVuZD1udWxsPT1jP3pnZTpmdW5jdGlvbiBu''@;'; put 'put ''X3QobCl7bGV0IGM9TWF0aC5mbG9vcihsKTtpZighKGM+PTApKXRocm93IG5ldyBFcnJvcihgaW52YWxpZCBkaWdpdHM6ICR7bH1gKTtpZihjPjE1KXJldHVybiB6Z2U7Y29uc3QgYT0xMCoqYztyZXR1cm4gZnVuY3Rpb24oZCl7dGhpcy5fKz1kWzBdO2ZvcihsZXQgaD0xLGY9ZC5sZW5ndGg7''@;'; put 'put ''aDxmOysraCl0aGlzLl8rPU1hdGgucm91bmQoYXJndW1lbnRzW2hdKmEpL2ErZFtoXX19KGMpfW1vdmVUbyhjLGEpe3RoaXMuX2FwcGVuZGBNJHt0aGlzLl94MD10aGlzLl94MT0rY30sJHt0aGlzLl95MD10aGlzLl95MT0rYX1gfWNsb3NlUGF0aCgpe251bGwhPT10aGlzLl94MSYmKHRoaXMu''@;'; put 'put ''X3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuX2FwcGVuZGBaYCl9bGluZVRvKGMsYSl7dGhpcy5fYXBwZW5kYEwke3RoaXMuX3gxPStjfSwke3RoaXMuX3kxPSthfWB9cXVhZHJhdGljQ3VydmVUbyhjLGEsZCxoKXt0aGlzLl9hcHBlbmRgUSR7K2N9LCR7K2F9LCR7dGhpcy5f''@;'; put 'put ''eDE9K2R9LCR7dGhpcy5feTE9K2h9YH1iZXppZXJDdXJ2ZVRvKGMsYSxkLGgsZix2KXt0aGlzLl9hcHBlbmRgQyR7K2N9LCR7K2F9LCR7K2R9LCR7K2h9LCR7dGhpcy5feDE9K2Z9LCR7dGhpcy5feTE9K3Z9YH1hcmNUbyhjLGEsZCxoLGYpe2lmKGM9K2MsYT0rYSxkPStkLGg9K2gsKGY9K2Yp''@;'; put 'put ''PDApdGhyb3cgbmV3IEVycm9yKGBuZWdhdGl2ZSByYWRpdXM6ICR7Zn1gKTtsZXQgdj10aGlzLl94MSxTPXRoaXMuX3kxLFY9ZC1jLFE9aC1hLGRlPXYtYyxwZT1TLWEsQ2U9ZGUqZGUrcGUqcGU7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuX2FwcGVuZGBNJHt0aGlzLl94MT1jfSwke3RoaXMu''@;'; put 'put ''X3kxPWF9YDtlbHNlIGlmKENlPks3KWlmKE1hdGguYWJzKHBlKlYtUSpkZSk+SzcmJmYpe2xldCBPZT1kLXYsWWU9aC1TLGV0PVYqVitRKlEsZHQ9T2UqT2UrWWUqWWUsaHQ9TWF0aC5zcXJ0KGV0KSxNdD1NYXRoLnNxcnQoQ2UpLFF0PWYqTWF0aC50YW4oKCRKLU1hdGguYWNvcygoZXQrQ2Ut''@;'; put 'put ''ZHQpLygyKmh0Kk10KSkpLzIpLGxuPVF0L010LHZuPVF0L2h0O01hdGguYWJzKGxuLTEpPks3JiZ0aGlzLl9hcHBlbmRgTCR7YytsbipkZX0sJHthK2xuKnBlfWAsdGhpcy5fYXBwZW5kYEEke2Z9LCR7Zn0sMCwwLCR7KyhwZSpPZT5kZSpZZSl9LCR7dGhpcy5feDE9Yyt2bipWfSwke3RoaXMu''@;'; put 'put ''X3kxPWErdm4qUX1gfWVsc2UgdGhpcy5fYXBwZW5kYEwke3RoaXMuX3gxPWN9LCR7dGhpcy5feTE9YX1gfWFyYyhjLGEsZCxoLGYsdil7aWYoYz0rYyxhPSthLHY9ISF2LChkPStkKTwwKXRocm93IG5ldyBFcnJvcihgbmVnYXRpdmUgcmFkaXVzOiAke2R9YCk7bGV0IFM9ZCpNYXRoLmNvcyho''@;'; put 'put ''KSxWPWQqTWF0aC5zaW4oaCksUT1jK1MsZGU9YStWLHBlPTFedixDZT12P2gtZjpmLWg7bnVsbD09PXRoaXMuX3gxP3RoaXMuX2FwcGVuZGBNJHtRfSwke2RlfWA6KE1hdGguYWJzKHRoaXMuX3gxLVEpPks3fHxNYXRoLmFicyh0aGlzLl95MS1kZSk+SzcpJiZ0aGlzLl9hcHBlbmRgTCR7UX0s''@;'; put 'put ''JHtkZX1gLGQmJihDZTwwJiYoQ2U9Q2UlcUorcUopLENlPnRfdD90aGlzLl9hcHBlbmRgQSR7ZH0sJHtkfSwwLDEsJHtwZX0sJHtjLVN9LCR7YS1WfUEke2R9LCR7ZH0sMCwxLCR7cGV9LCR7dGhpcy5feDE9UX0sJHt0aGlzLl95MT1kZX1gOkNlPks3JiZ0aGlzLl9hcHBlbmRgQSR7ZH0sJHtk''@;'; put 'put ''fSwwLCR7KyhDZT49JEopfSwke3BlfSwke3RoaXMuX3gxPWMrZCpNYXRoLmNvcyhmKX0sJHt0aGlzLl95MT1hK2QqTWF0aC5zaW4oZil9YCl9cmVjdChjLGEsZCxoKXt0aGlzLl9hcHBlbmRgTSR7dGhpcy5feDA9dGhpcy5feDE9K2N9LCR7dGhpcy5feTA9dGhpcy5feTE9K2F9aCR7ZD0rZH12''@;'; put 'put ''JHsraH1oJHstZH1aYH10b1N0cmluZygpe3JldHVybiB0aGlzLl99fWZ1bmN0aW9uIFVnZSgpe3JldHVybiBuZXcgS0p9ZnVuY3Rpb24gcl90KGwsYyxhLGQpe3JldHVybiBjPS1jLGQ9LWQsW2wsY109W2wqYS1jKmQsbCpkK2MqYV0sW2wsYz0tY119ZnVuY3Rpb24gWmdlKGwsYyxhLGQsaCxm''@;'; put 'put ''LHYpe3ZhciBWPSQ3KCRnZS5jYWxsKHRoaXMsZikpO2wuZGF0YShbVl0pLGFULmNhbGwobC5ub2RlKCksViksWWdlKGwsYyxhLGQsaCxmLHYpfWZ1bmN0aW9uIFlnZShsLGMsYSxkLGgsZix2KXt2YXIgUz12LnNob3J0ZW5pbmd8fDAscGU9W1swLC0zLjVdLFsxMCwwXSxbMCwzLjVdLFswLC0z''@;'; put 'put ''LjVdXSxDZT1kLWMsT2U9aC1hLFllPU1hdGguc3FydChDZSpDZStPZSpPZSk7aWYoMD09WWUpdmFyIGV0PTEsZHQ9MDtlbHNlIGV0PUNlL1llLGR0PU9lL1llO2lmKGQ9YysoWWUtUy0xMC0uMSkqZXQsaD1hKyhZZS1TLTEwLS4xKSpkdCxmLlVSTHx8Zi50b29sdGlwKXZhciBodD1sLnNlbGVj''@;'; put 'put ''dFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKS5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJhIiksTXQ9aHQuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicGF0aCIpLFF0PWh0LnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInBvbHlnb24iKTtlbHNlIE10PWwuc2Vs''@;'; put 'put ''ZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicGF0aCIpLFF0PWwuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigicG9seWdvbiIpO3ZhciBsbj1VZ2UoKTtsbi5tb3ZlVG8oYyxhKSxsbi5saW5lVG8oZCxoKSxNdC5hdHRyKCJkIixsbiksZD1jKyhZZS1TLTEwKSpldCxoPWErKFllLVMt''@;'; put 'put ''MTApKmR0O2Zvcih2YXIgdm49MDt2bjxwZS5sZW5ndGg7dm4rKylwZVt2bl09cl90KCh3bj1wZVt2bl0pWzBdLHduWzFdLGV0LGR0KTtmb3Iodm49MDt2bjxwZS5sZW5ndGg7dm4rKylwZVt2bl09W2QrKHduPXBlW3ZuXSlbMF0saCt3blsxXV07dmFyIG5yPVtdO2Zvcih2bj0wO3ZuPHBlLmxl''@;'; put 'put ''bmd0aDt2bisrKXt2YXIgd247bnIucHVzaCgod249cGVbdm5dKS5qb2luKCIsIikpfXZhciB2cj1uci5qb2luKCIgIik7cmV0dXJuIFF0LmF0dHIoInBvaW50cyIsdnIpLHRoaXN9ZnVuY3Rpb24gV2dlKCl7cmV0dXJuIHRoaXMuX2RyYXduRWRnZT8odGhpcy5fZHJhd25FZGdlLmcucmVtb3Zl''@;'; put 'put ''KCksdGhpcy5fZHJhd25FZGdlPW51bGwsdGhpcyk6dGhpc31mdW5jdGlvbiBHZ2UoKXtyZXR1cm4gdGhpcy5fZHJhd25FZGdlP3RoaXMuX2RyYXduRWRnZS5nOlpzKG51bGwpfWZ1bmN0aW9uICRnZShsKXt2YXIgYz0iIjtmb3IodmFyIGEgb2YgT2JqZWN0LmtleXMobCkpbnVsbCE9bFthXSYm''@;'; put 'put ''KGMrPScgIicrYSsnIj0iJytsW2FdKyciJyk7dmFyIGg9dGhpcy5sYXlvdXRTeW5jKCJkaWdyYXBoIHthIC0+IGIgWyIrYysiXX0iLCJzdmciLCJkb3QiKSx2PShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGgsImltYWdlL3N2Zyt4bWwiKTtyZXR1cm4gWnMoZG9jdW1l''@;'; put 'put ''bnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gdi5kb2N1bWVudEVsZW1lbnR9KS5zZWxlY3QoIi5lZGdlIil9ZnVuY3Rpb24gcWdlKGwsYyxhLGQsaCxmKXt2YXIgUz0kNyhRZ2UuY2FsbCh0aGlzLGQsaCkpO3JldHVybiBsLmRhdGEoW1NdKSxh''@;'; put 'put ''VC5jYWxsKGwubm9kZSgpLFMpLEtnZShsLGMsYSxoKSx0aGlzfWZ1bmN0aW9uIEtnZShsLGMsYSxkLGgpe2lmKGQuVVJMfHxkLnRvb2x0aXApdmFyIGY9bC5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiYSIpO2Vsc2UgZj1s''@;'; put 'put ''O3ZhciB2PWYuc2VsZWN0QWxsKCJlbGxpcHNlLHBvbHlnb24scGF0aCxwb2x5bGluZSIpLFM9bC5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0Iik7aWYoMCE9di5zaXplKCkpe3ZhciBWPXYubm9kZSgpLmdldEJCb3goKTtWLmN4PVYueCtWLndpZHRoLzIsVi5jeT1WLnkrVi5o''@;'; put 'put ''ZWlnaHQvMn1lbHNlIDAhPVMuc2l6ZSgpJiYoVj17eDorUy5hdHRyKCJ4IikseTorUy5hdHRyKCJ5Iiksd2lkdGg6MCxoZWlnaHQ6MCxjeDorUy5hdHRyKCJ4IiksY3k6K1MuYXR0cigieSIpfSk7cmV0dXJuIHYuZWFjaChmdW5jdGlvbihRLGRlKXt2YXIgcGU9WnModGhpcyk7aWYocGUuYXR0''@;'; put 'put ''cigiY3giKSlwZS5hdHRyKCJjeCIsUzUoYykpLmF0dHIoImN5IixTNShhKSk7ZWxzZSBpZihwZS5hdHRyKCJwb2ludHMiKSl7dmFyIENlPXBlLmF0dHIoInBvaW50cyIpLnRyaW0oKTtwZS5hdHRyKCJwb2ludHMiLGZ1bmN0aW9uIHZ2dChmLGMsYSl7dmFyIGgsZD0oaD1mLnNwbGl0KCIgIikp''@;'; put 'put ''Lm1hcChmdW5jdGlvbih2KXtyZXR1cm4gdi5zcGxpdCgiLCIpfSk7cmV0dXJuIGQ9aC5tYXAoZnVuY3Rpb24odil7cmV0dXJuW1M1KCtjKyArdi5zcGxpdCgiLCIpWzBdKSxTNSgrYSsgK3Yuc3BsaXQoIiwiKVsxXSldfSksKGg9ZC5tYXAoZnVuY3Rpb24odil7cmV0dXJuIHYuam9pbigiLCIp''@;'; put 'put ''fSkpLmpvaW4oIiAiKX0oQ2UsYy1WLmN4LGEtVi5jeSkpfWVsc2V7dmFyIE9lPXBlLmF0dHIoImQiKTtwZS5hdHRyKCJkIixmdW5jdGlvbiBfdnQobCxjLGEpeyhmPWwuc3BsaXQoL1tBLVogXS8pKS5zaGlmdCgpO3ZhciBkPWwuc3BsaXQoL1teW0EtWiBdKy8pLGY9KGYubWFwKGZ1bmN0aW9u''@;'; put 'put ''KHYpe3JldHVybiB2LnNwbGl0KCIsIil9KSxmLm1hcChmdW5jdGlvbih2KXtyZXR1cm5bUzUoK2MrICt2LnNwbGl0KCIsIilbMF0pLFM1KCthKyArdi5zcGxpdCgiLCIpWzFdKV19KS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIHYuam9pbigiLCIpfSkpO3JldHVybiBkLnJlZHVjZShmdW5jdGlv''@;'; put 'put ''bih2LFMsVil7cmV0dXJuIHYuY29uY2F0KFMsZltWXSl9LFtdKS5qb2luKCIiKX0oT2UsYy1WLmN4LGEtVi5jeSkpfX0pLDAhPVMuc2l6ZSgpJiZTLmF0dHIoIngiLFM1KCtTLmF0dHIoIngiKStjLVYuY3gpKS5hdHRyKCJ5IixTNSgrUy5hdHRyKCJ5IikrYS1WLmN5KSksdGhpc31mdW5jdGlv''@;'; put 'put ''biBYZ2UoKXtpZighdGhpcy5fZHJhd25Ob2RlKXJldHVybiB0aGlzO3ZhciBsPXRoaXMuX2RyYXduTm9kZS5nO3JldHVybiBsLmVtcHR5KCl8fGwucmVtb3ZlKCksdGhpcy5fZHJhd25Ob2RlPW51bGwsdGhpc31mdW5jdGlvbiBKZ2UoKXtyZXR1cm4gdGhpcy5fZHJhd25Ob2RlP3RoaXMuX2Ry''@;'; put 'put ''YXduTm9kZS5nOlpzKG51bGwpfWZ1bmN0aW9uIFFnZShsLGMpe3ZhciBhPSIiO2Zvcih2YXIgZCBvZiBPYmplY3Qua2V5cyhjKSludWxsIT1jW2RdJiYoYSs9JyAiJytkKyciPSInK2NbZF0rJyInKTt2YXIgZj10aGlzLmxheW91dFN5bmMoJ2dyYXBoIHsiJytsKyciIFsnK2ErIl19Iiwic3Zn''@;'; put 'put ''IiwiZG90IiksUz0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhmLCJpbWFnZS9zdmcreG1sIik7cmV0dXJuIFpzKGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIFMuZG9jdW1lbnRFbGVtZW50fSkuc2VsZWN0''@;'; put 'put ''KCIubm9kZSIpfWZ1bmN0aW9uIHpGKGwpe3NlbGYuZG9jdW1lbnQ9e30sbC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihjKXtsZXQgYT1zZWxmWyJAaHBjYy1qcy93YXNtIl07bnVsbD09YSYmYy5kYXRhLnZpelVSTCYmKGltcG9ydFNjcmlwdHMoYy5kYXRhLnZpelVSTCks''@;'; put 'put ''YT1zZWxmWyJAaHBjYy1qcy93YXNtIl0pLCJ2ZXJzaW9uIiE9Yy5kYXRhLnR5cGU/YS5HcmFwaHZpei5sb2FkKCkudGhlbihkPT57Y29uc3QgaD1kLmxheW91dChjLmRhdGEuZG90LCJzdmciLGMuZGF0YS5lbmdpbmUsYy5kYXRhLm9wdGlvbnMpO2wucG9zdE1lc3NhZ2UoaD97dHlwZToiZG9u''@;'; put 'put ''ZSIsc3ZnOmh9OmMuZGF0YS52aXpVUkw/e3R5cGU6ImluaXQifTp7dHlwZToic2tpcCJ9KX0pLmNhdGNoKGQ9PntsLnBvc3RNZXNzYWdlKHt0eXBlOiJlcnJvciIsZXJyb3I6ZC5tZXNzYWdlfSl9KTphLkdyYXBodml6LmxvYWQoKS50aGVuKGQ9PntsLnBvc3RNZXNzYWdlKHt0eXBlOiJ2ZXJz''@;'; put 'put ''aW9uIix2ZXJzaW9uOmQudmVyc2lvbigpfSl9KX0pfWZ1bmN0aW9uIGhfdCgpe3pGKHNlbGYpfWZ1bmN0aW9uIGZfdCgpe3NlbGYub25jb25uZWN0PWZ1bmN0aW9uKGwpe2NvbnN0IGM9bC5wb3J0c1swXTt6RihjKSxjLnN0YXJ0KCl9fWZ1bmN0aW9uIFhKKGwsYyl7aWYodGhpcy5fb3B0aW9u''@;'; put 'put ''cz17dXNlV29ya2VyOiEwLHVzZVNoYXJlZFdvcmtlcjohMSxlbmdpbmU6ImRvdCIsa2V5TW9kZToidGl0bGUiLGZhZGU6ITAsdHdlZW5QYXRoczohMCx0d2VlblNoYXBlczohMCxjb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zOiEwLHR3ZWVuUHJlY2lzaW9uOjEsZ3Jvd0VudGVyaW5nRWRnZXM6''@;'; put 'put ''ITAsem9vbTohMCx6b29tU2NhbGVFeHRlbnQ6Wy4xLDEwXSx6b29tVHJhbnNsYXRlRXh0ZW50OltbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsc2NhbGU6MSxmaXQ6ITF9LGMgaW5zdGFuY2VvZiBPYmplY3QpZm9yKHZhciBhIG9mIE9iamVjdC5rZXlzKGMp''@;'; put 'put ''KXRoaXMuX29wdGlvbnNbYV09Y1thXTtlbHNlImJvb2xlYW4iPT10eXBlb2YgYyYmKHRoaXMuX29wdGlvbnMudXNlV29ya2VyPWMpO3ZhciBkPXRoaXMuX29wdGlvbnMudXNlV29ya2VyLGg9dGhpcy5fb3B0aW9ucy51c2VTaGFyZWRXb3JrZXI7aWYodHlwZW9mIFdvcmtlcj4idSImJihkPSEx''@;'; put 'put ''KSx0eXBlb2YgU2hhcmVkV29ya2VyPiJ1IiYmKGg9ITEpLGR8fGgpe3ZhciB2PXZKKCJzY3JpcHQiKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iamF2YXNjcmlwdC93b3JrZXIiPT1acyh0aGlzKS5hdHRyKCJ0eXBlIil8fFpzKHRoaXMpLmF0dHIoInNyYyIpJiZacyh0aGlzKS5hdHRyKCJz''@;'; put 'put ''cmMiKS5tYXRjaCgvLipcL0BocGNjLWpzXC93YXNtLyl9KTswPT12LnNpemUoKT8oY29uc29sZS53YXJuKCdObyBzY3JpcHQgdGFnIG9mIHR5cGUgImphdmFzY3JpcHQvd29ya2VyIiB3YXMgZm91bmQgYW5kICJ1c2VXb3JrZXIiIGlzIHRydWUuIE5vdCB1c2luZyB3ZWIgd29ya2VyLicpLGQ9''@;'; put 'put ''ITEsaD0hMSk6KHRoaXMuX3ZpelVSTD12LmF0dHIoInNyYyIpLHRoaXMuX3ZpelVSTHx8KGNvbnNvbGUud2FybignTm8gInNyYyIgYXR0cmlidXRlIG9mIHdhcyBmb3VuZCBvbiB0aGUgImphdmFzY3JpcHQvd29ya2VyIiBzY3JpcHQgdGFnIGFuZCAidXNlV29ya2VyIiBpcyB0cnVlLiBOb3Qg''@;'; put 'put ''dXNpbmcgd2ViIHdvcmtlci4nKSxkPSExLGg9ITEpKX1pZihoKXtjb25zdCBRPSJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQ7YmFzZTY0LCIrYnRvYSh6Ri50b1N0cmluZygpKyIoIitmX3QudG9TdHJpbmcoKSsiKSgpIik7dGhpcy5fd29ya2VyPXRoaXMuX3dvcmtlcj1uZXcgU2hhcmVk''@;'; put 'put ''V29ya2VyKFEpLHRoaXMuX3dvcmtlclBvcnQ9dGhpcy5fd29ya2VyLnBvcnQsdGhpcy5fd29ya2VyUG9ydENsb3NlPXRoaXMuX3dvcmtlci5wb3J0LmNsb3NlLmJpbmQodGhpcy5fd29ya2VyUG9ydCksdGhpcy5fd29ya2VyLnBvcnQuc3RhcnQoKSx0aGlzLl93b3JrZXJDYWxsYmFja3M9W119''@;'; put 'put ''ZWxzZSBpZihkKXt2YXIgUz1uZXcgQmxvYihbekYudG9TdHJpbmcoKSsiKCIraF90LnRvU3RyaW5nKCkrIikoKSJdKSxWPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKFMpO3RoaXMuX3dvcmtlcj1uZXcgV29ya2VyKFYpLHRoaXMuX3dvcmtlclBvcnQ9dGhpcy5fd29ya2VyLHRoaXMuX3dv''@;'; put 'put ''cmtlclBvcnRDbG9zZT10aGlzLl93b3JrZXIudGVybWluYXRlLmJpbmQodGhpcy5fd29ya2VyKSx0aGlzLl93b3JrZXJDYWxsYmFja3M9W119ZWxzZSBDNS5sb2FkKCkudGhlbigoUT0+e3RoaXMuX2dyYXBodml6VmVyc2lvbj1RLnZlcnNpb24oKX0pLmJpbmQodGhpcykpO3RoaXMuX3NlbGVj''@;'; put 'put ''dGlvbj1sLHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9idXN5PSExLHRoaXMuX2pvYnM9W10sdGhpcy5fcXVldWU9W10sdGhpcy5fa2V5TW9kZXM9bmV3IFNldChbInRpdGxlIiwiaWQiLCJ0YWctaW5kZXgiLCJpbmRleCJdKSx0aGlzLl9pbWFnZXM9W10sdGhpcy5fdHJhbnNsYXRpb249dm9pZCAw''@;'; put 'put ''LHRoaXMuX3NjYWxlPXZvaWQgMCx0aGlzLl9ldmVudFR5cGVzPVsiaW5pdEVuZCIsInN0YXJ0IiwibGF5b3V0U3RhcnQiLCJsYXlvdXRFbmQiLCJkYXRhRXh0cmFjdEVuZCIsImRhdGFQcm9jZXNzUGFzczFFbmQiLCJkYXRhUHJvY2Vzc1Bhc3MyRW5kIiwiZGF0YVByb2Nlc3NFbmQiLCJyZW5k''@;'; put 'put ''ZXJTdGFydCIsInJlbmRlckVuZCIsInRyYW5zaXRpb25TdGFydCIsInRyYW5zaXRpb25FbmQiLCJyZXN0b3JlRW5kIiwiZW5kIiwiem9vbSJdLHRoaXMuX2Rpc3BhdGNoPV9KKC4uLnRoaXMuX2V2ZW50VHlwZXMpLGJ2dC5jYWxsKHRoaXMpLGwubm9kZSgpLl9fZ3JhcGh2aXpfXz10aGlzfWZ1''@;'; put 'put ''bmN0aW9uIFVGKGwsYyl7cmV0dXJuIFpzKGwpLmdyYXBodml6KGMpfVVnZS5wcm90b3R5cGU9S0oucHJvdG90eXBlLFhKLnByb3RvdHlwZT1VRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlhKLGVuZ2luZTpmdW5jdGlvbiBSdnQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuZW5naW5lPWwsdGhp''@;'; put 'put ''c30sYWRkSW1hZ2U6ZnVuY3Rpb24gTHZ0KGwsYyxhKXtyZXR1cm4gdGhpcy5faW1hZ2VzLnB1c2goe3BhdGg6bCx3aWR0aDpjLGhlaWdodDphfSksdGhpc30sa2V5TW9kZTpmdW5jdGlvbiBPdnQobCl7aWYoIXRoaXMuX2tleU1vZGVzLmhhcyhsKSl0aHJvdyBFcnJvcigiSWxsZWdhbCBrZXlN''@;'; put 'put ''b2RlOiAiK2wpO2lmKGwhPXRoaXMuX29wdGlvbnMua2V5TW9kZSYmbnVsbCE9dGhpcy5fZGF0YSl0aHJvdyBFcnJvcigiVG9vIGxhdGUgdG8gY2hhbmdlIGtleU1vZGUiKTtyZXR1cm4gdGhpcy5fb3B0aW9ucy5rZXlNb2RlPWwsdGhpc30sZmFkZTpmdW5jdGlvbiBQdnQobCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuX29wdGlvbnMuZmFkZT1sLHRoaXN9LHR3ZWVuUGF0aHM6ZnVuY3Rpb24gRnZ0KGwpe3JldHVybiB0aGlzLl9vcHRpb25zLnR3ZWVuUGF0aHM9bCx0aGlzfSx0d2VlblNoYXBlczpmdW5jdGlvbiBOdnQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMudHdlZW5TaGFwZXM9bCxsJiYodGhpcy5f''@;'; put 'put ''b3B0aW9ucy50d2VlblBhdGhzPSEwKSx0aGlzfSxjb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zOmZ1bmN0aW9uIEh2dChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5jb252ZXJ0RXF1YWxTaWRlZFBvbHlnb25zPWwsdGhpc30sdHdlZW5QcmVjaXNpb246ZnVuY3Rpb24gVnZ0KGwpe3JldHVybiB0''@;'; put 'put ''aGlzLl9vcHRpb25zLnR3ZWVuUHJlY2lzaW9uPWwsdGhpc30sZ3Jvd0VudGVyaW5nRWRnZXM6ZnVuY3Rpb24gQnZ0KGwpe3JldHVybiB0aGlzLl9vcHRpb25zLmdyb3dFbnRlcmluZ0VkZ2VzPWwsdGhpc30sem9vbTpmdW5jdGlvbiBqOXQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9vbT1s''@;'; put 'put ''LHRoaXMuX29wdGlvbnMuem9vbSYmIXRoaXMuX3pvb21CZWhhdmlvcj9BZ2UuY2FsbCh0aGlzKTohdGhpcy5fb3B0aW9ucy56b29tJiZ0aGlzLl96b29tQmVoYXZpb3ImJih0aGlzLl96b29tU2VsZWN0aW9uLm9uKCIuem9vbSIsbnVsbCksdGhpcy5fem9vbUJlaGF2aW9yPW51bGwpLHRoaXN9''@;'; put 'put ''LHJlc2V0Wm9vbTpmdW5jdGlvbiB6OXQobCl7dmFyIGM9dGhpcy5fem9vbVNlbGVjdGlvbjtyZXR1cm4gbCYmKGM9Yy50cmFuc2l0aW9uKGwpKSxjLmNhbGwodGhpcy5fem9vbUJlaGF2aW9yLnRyYW5zZm9ybSx0aGlzLl9vcmlnaW5hbFRyYW5zZm9ybSksdGhpc30sem9vbUJlaGF2aW9yOmZ1''@;'; put 'put ''bmN0aW9uIFk5dCgpe3JldHVybiB0aGlzLl96b29tQmVoYXZpb3J8fG51bGx9LHpvb21TZWxlY3Rpb246ZnVuY3Rpb24gVzl0KCl7cmV0dXJuIHRoaXMuX3pvb21TZWxlY3Rpb258fG51bGx9LHpvb21TY2FsZUV4dGVudDpmdW5jdGlvbiBVOXQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9v''@;'; put 'put ''bVNjYWxlRXh0ZW50PWwsdGhpc30sem9vbVRyYW5zbGF0ZUV4dGVudDpmdW5jdGlvbiBaOXQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuem9vbVRyYW5zbGF0ZUV4dGVudD1sLHRoaXN9LHJlbmRlcjpmdW5jdGlvbiBKOXQobCl7cmV0dXJuIHRoaXMuX2J1c3k/KHRoaXMuX3F1ZXVlLnB1c2go''@;'; put 'put ''dGhpcy5yZW5kZXIuYmluZCh0aGlzLGwpKSx0aGlzKToodGhpcy5fZGlzcGF0Y2guY2FsbCgicmVuZGVyU3RhcnQiLHRoaXMpLHRoaXMuX3RyYW5zaXRpb25GYWN0b3J5P3dGKGZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvbj1SSih0aGlzLl90cmFuc2l0aW9uRmFjdG9yeSgpKSxSZ2UuY2Fs''@;'; put 'put ''bCh0aGlzLGwpfS5iaW5kKHRoaXMpLDApOlJnZS5jYWxsKHRoaXMsbCksdGhpcyl9LGxheW91dDpmdW5jdGlvbiB5dnQobCxjLGEsZCl7aWYodGhpcy5fd29ya2VyKVlKLmNhbGwodGhpcyx7dHlwZToibGF5b3V0Iixkb3Q6bCxlbmdpbmU6YyxvcHRpb25zOmF9LGZ1bmN0aW9uKGYpe2QuY2Fs''@;'; put 'put ''bCh0aGlzLGYuZGF0YSl9KTtlbHNlIHRyeXt2YXIgaD10aGlzLmxheW91dFN5bmMobCwic3ZnIixjLGEpO2QuY2FsbCh0aGlzLHt0eXBlOiJkb25lIixzdmc6aH0pfWNhdGNoKGYpe2QuY2FsbCh0aGlzLHt0eXBlOiJlcnJvciIsZXJyb3I6Zi5tZXNzYWdlfSl9fSxkb3Q6ZnVuY3Rpb24gd3Z0''@;'; put 'put ''KGwsYyl7dmFyIGE9dGhpcyxoPXRoaXMuX29wdGlvbnMuZW5naW5lLGY9dGhpcy5faW1hZ2VzO3JldHVybiB0aGlzLl9kaXNwYXRjaC5jYWxsKCJzdGFydCIsdGhpcyksdGhpcy5fYnVzeT0hMCx0aGlzLl9kaXNwYXRjaC5jYWxsKCJsYXlvdXRTdGFydCIsdGhpcyksdGhpcy5fd29ya2VyfHxu''@;'; put 'put ''dWxsIT10aGlzLmxheW91dFN5bmM/KHRoaXMubGF5b3V0KGwsaCx7aW1hZ2VzOmZ9LGZ1bmN0aW9uKFMpe3N3aXRjaChTLnR5cGUpe2Nhc2UiZXJyb3IiOmlmKCFhLl9vbmVycm9yKXRocm93IFMuZXJyb3IubWVzc2FnZTthLl9vbmVycm9yKFMuZXJyb3IpO2JyZWFrO2Nhc2UiZG9uZSI6Q3Z0''@;'; put 'put ''LmNhbGwodGhpcyxTLnN2ZyxjKX19KSx0aGlzKToodGhpcy5fYWZ0ZXJJbml0PXRoaXMuZG90LmJpbmQodGhpcyxsLGMpLHRoaXMpfSxkYXRhOmZ1bmN0aW9uIHE5dCgpe3JldHVybiB0aGlzLl9kYXRhfHxudWxsfSxyZW5kZXJEb3Q6ZnVuY3Rpb24gU3Z0KGwsYyl7dmFyIGE9dGhpcztyZXR1''@;'; put 'put ''cm4gdGhpcy5kb3QobCxmdW5jdGlvbiBkKCl7YS5yZW5kZXIoYyl9KSx0aGlzfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIE12dChsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIEZ1bmN0aW9uP3RoaXMuX3RyYW5zaXRpb25GYWN0b3J5PWw6dGhpcy5fdHJhbnNpdGlvbj1SSihsKSx0aGlzfSxhY3RpdmU6''@;'; put 'put ''ZnVuY3Rpb24geHZ0KGwpe3ZhciBhPXRoaXMuX3NlbGVjdGlvbi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJzdmciKTtyZXR1cm4gMCE9YS5zaXplKCk/ZnVuY3Rpb24geTl0KGwsYyl7dmFyIGQsaCxhPWwuX190cmFuc2l0aW9uO2lmKGEpZm9yKGggaW4gYz1udWxsPT1jP251bGw6''@;'; put 'put ''YysiIixhKWlmKChkPWFbaF0pLnN0YXRlPjEmJmQubmFtZT09PWMpcmV0dXJuIG5ldyBocChbW2xdXSxiOXQsYywraCk7cmV0dXJuIG51bGx9KGEubm9kZSgpLGwpOm51bGx9LG9wdGlvbnM6ZnVuY3Rpb24gRXZ0KGwpe2lmKHR5cGVvZiBsPiJ1IilyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSx0''@;'; put 'put ''aGlzLl9vcHRpb25zKTtmb3IodmFyIGMgb2YgT2JqZWN0LmtleXMobCkpdGhpcy5fb3B0aW9uc1tjXT1sW2NdO3JldHVybiB0aGlzfSx3aWR0aDpmdW5jdGlvbiBUdnQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMud2lkdGg9bCx0aGlzfSxoZWlnaHQ6ZnVuY3Rpb24ga3Z0KGwpe3JldHVybiB0''@;'; put 'put ''aGlzLl9vcHRpb25zLmhlaWdodD1sLHRoaXN9LHNjYWxlOmZ1bmN0aW9uIEF2dChsKXtyZXR1cm4gdGhpcy5fb3B0aW9ucy5zY2FsZT1sLHRoaXN9LGZpdDpmdW5jdGlvbiBEdnQobCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuZml0PWwsdGhpc30sYXR0cmlidXRlcjpmdW5jdGlvbiBJdnQobCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXI9bCx0aGlzfSxvbjpmdW5jdGlvbiBqdnQobCxjKXtyZXR1cm4gdGhpcy5fZGlzcGF0Y2gub24obCxjKSx0aGlzfSxvbmVycm9yOmZ1bmN0aW9uIHp2dChsKXtyZXR1cm4gdGhpcy5fb25lcnJvcj1sLHRoaXN9LGxvZ0V2ZW50czpmdW5jdGlvbiBRdnQo''@;'; put 'put ''bCl7dmFyIGM9RGF0ZS5ub3coKSxhPXt9LGQ9dGhpcy5fZXZlbnRUeXBlcyxoPU1hdGgubWF4KC4uLmQubWFwKFY9PlYubGVuZ3RoKSk7Zm9yKGxldCBWPTA7VjxkLmxlbmd0aDtWKyspe2xldCBRPWRbVl07YVtRXT1bXTt2YXIgdixTLGY9dGhpczt0aGlzLm9uKFErIi5sb2ciLGw/ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgZGU9RGF0ZS5ub3coKSxwZT1hW1FdLmxlbmd0aDthW1FdLnB1c2goZGUpO3ZhciBDZT0iIjtpZihDZSs9IkV2ZW50ICIsQ2UrPXMyKCIgPjIiKShWKSsiICIsQ2UrPVErIiAiLnJlcGVhdChoLVEubGVuZ3RoKSxDZSs9czIoIiA+NSIpKGRlLWMpKyIgIiwiaW5pdEVuZCIhPVEm''@;'; put 'put ''JihDZSs9czIoIiA+NSIpKGRlLWEuc3RhcnRbcGVdKSksImRhdGFQcm9jZXNzRW5kIj09USYmKENlKz0iIHByZXBhcmUgICAgICAgICAgICAgICAgICIrczIoIiA+NSIpKGRlLWEubGF5b3V0RW5kW3BlXSkpLCJyZW5kZXJFbmQiPT1RJiZmLl90cmFuc2l0aW9uJiYoQ2UrPSIgdHJhbnNpdGlv''@;'; put 'put ''biBzdGFydCBtYXJnaW4gIitzMigiID41IikoZi5fdHJhbnNpdGlvbi5kZWxheSgpLShkZS1hLnJlbmRlclN0YXJ0W3BlXSkpLHY9Zi5fdHJhbnNpdGlvbi5kZWxheSgpLFM9Zi5fdHJhbnNpdGlvbi5kdXJhdGlvbigpKSwidHJhbnNpdGlvblN0YXJ0Ij09USl7dmFyIE9lPWRlLWEucmVuZGVy''@;'; put 'put ''U3RhcnRbcGVdO0NlKz0iIHRyYW5zaXRpb24gZGVsYXkgICAgICAgICIrczIoIiA+NSIpKGRlLWEucmVuZGVyU3RhcnRbcGVdKSxDZSs9IiBleHBlY3RlZCAiK3MyKCIgPjUiKSh2KSxDZSs9IiBkaWZmICIrczIoIiA+NSIpKE9lLXYpfWlmKCJ0cmFuc2l0aW9uRW5kIj09USl7dmFyIFllPWRl''@;'; put 'put ''LWEudHJhbnNpdGlvblN0YXJ0W3BlXTtDZSs9IiB0cmFuc2l0aW9uIGR1cmF0aW9uICAgICAiK3MyKCIgPjUiKShZZSksQ2UrPSIgZXhwZWN0ZWQgIitzMigiID41IikoUyksQ2UrPSIgZGlmZiAiK3MyKCIgPjUiKShZZS1TKX1jb25zb2xlLmxvZyhDZSksYz1kZX06bnVsbCl9cmV0dXJuIHRo''@;'; put 'put ''aXN9LGRlc3Ryb3k6ZnVuY3Rpb24gZV90KCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9zZWxlY3Rpb24ubm9kZSgpLl9fZ3JhcGh2aXpfXyx0aGlzLl93b3JrZXImJnRoaXMuX3dvcmtlclBvcnRDbG9zZSgpLHRoaXN9LGRyYXdFZGdlOmZ1bmN0aW9uIGlfdChsLGMsYSxkLGgsZj17fSl7aWYoKGg9''@;'; put 'put ''T2JqZWN0LmFzc2lnbih7fSxoKSkuc3R5bGUmJmguc3R5bGUuaW5jbHVkZXMoImludmlzIikpdmFyIHY9WnMobnVsbCk7ZWxzZXt2YXIgUT10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIp''@;'; put 'put ''LHBlPSQ3KCRnZS5jYWxsKHRoaXMsaCkpO3Y9US5hcHBlbmQoImciKS5kYXRhKFtwZV0pLGFULmNhbGwodi5ub2RlKCkscGUpLFpnZS5jYWxsKHRoaXMsdixsLGMsYSxkLGgsZil9cmV0dXJuIHRoaXMuX2RyYXduRWRnZT17Zzp2LHgxOmwseTE6Yyx4MjphLHkyOmQsYXR0cmlidXRlczpofSx0''@;'; put 'put ''aGlzfSx1cGRhdGVEcmF3bkVkZ2U6ZnVuY3Rpb24gb190KGwsYyxhLGQsaD17fSxmPXt9KXtpZighdGhpcy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBiZWVuIGRyYXduIik7dmFyIHY9dGhpcy5fZHJhd25FZGdlLmc7cmV0dXJuIGg9T2JqZWN0LmFzc2lnbih0aGlzLl9k''@;'; put 'put ''cmF3bkVkZ2UuYXR0cmlidXRlcyxoKSx0aGlzLl9kcmF3bkVkZ2UueDE9bCx0aGlzLl9kcmF3bkVkZ2UueTE9Yyx0aGlzLl9kcmF3bkVkZ2UueDI9YSx0aGlzLl9kcmF3bkVkZ2UueTI9ZCwhdi5lbXB0eSgpfHxoLnN0eWxlJiZoLnN0eWxlLmluY2x1ZGVzKCJpbnZpcyIpfHwodj10aGlzLl9z''@;'; put 'put ''ZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLmFwcGVuZCgiZyIpLHRoaXMuX2RyYXduRWRnZS5nPXYpLHYuZW1wdHkoKXx8WmdlLmNhbGwodGhpcyx2LGwsYyxhLGQsaCxmKSx0aGlzfSxtb3ZlRHJh''@;'; put 'put ''d25FZGdlRW5kUG9pbnQ6ZnVuY3Rpb24gc190KGwsYyxhPXt9KXtpZighdGhpcy5fZHJhd25FZGdlKXRocm93IEVycm9yKCJObyBlZGdlIGhhcyBiZWVuIGRyYXduIik7dmFyIGQ9dGhpcy5fZHJhd25FZGdlLmcsaD10aGlzLl9kcmF3bkVkZ2UueDEsZj10aGlzLl9kcmF3bkVkZ2UueTEsdj10''@;'; put 'put ''aGlzLl9kcmF3bkVkZ2UuYXR0cmlidXRlcztyZXR1cm4gdGhpcy5fZHJhd25FZGdlLngyPWwsdGhpcy5fZHJhd25FZGdlLnkyPWMsWWdlKGQsaCxmLGwsYyx2LGEpLHRoaXN9LGluc2VydERyYXduRWRnZTpmdW5jdGlvbiBhX3QobCl7aWYoIXRoaXMuX2RyYXduRWRnZSl0aHJvdyBFcnJvcigi''@;'; put 'put ''Tm8gZWRnZSBoYXMgYmVlbiBkcmF3biIpO3ZhciBjPXRoaXMuX2RyYXduRWRnZS5nO2lmKGMuZW1wdHkoKSlyZXR1cm4gdGhpcztjLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRpdGxlIikudGV4dChsKTt2YXIgdj10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91dERhdGFQcm9w''@;'; put 'put ''YWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLFM9di5kYXR1bSgpLFY9dGhpcy5fZXh0cmFjdERhdGEoYyxTLmNoaWxkcmVuLmxlbmd0aCx2LmRhdHVtKCkpO3JldHVybiBTLmNoaWxkcmVuLnB1c2goViksSEooYyxWKSx0aGlzLl9kcmF3bkVkZ2U9bnVs''@;'; put 'put ''bCx0aGlzfSxyZW1vdmVEcmF3bkVkZ2U6V2dlLHJlbW92ZURyYXduRWRnZTpXZ2UsZHJhd25FZGdlU2VsZWN0aW9uOkdnZSxkcmF3bkVkZ2VTZWxlY3Rpb246R2dlLGRyYXdOb2RlOmZ1bmN0aW9uIGxfdChsLGMsYSxkPXt9LGg9e30pe2lmKChkPU9iamVjdC5hc3NpZ24oe30sZCkpLnN0eWxl''@;'; put 'put ''JiZkLnN0eWxlLmluY2x1ZGVzKCJpbnZpcyIpKXZhciBmPVpzKG51bGwpO2Vsc2V7dmFyIFY9dGhpcy5fc2VsZWN0aW9uLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKSxkZT0kNyhRZ2UuY2FsbCh0aGlzLGEsZCkp''@;'; put 'put ''O2Y9Vi5hcHBlbmQoImciKS5kYXRhKFtkZV0pLGFULmNhbGwoZi5ub2RlKCksZGUpLHFnZS5jYWxsKHRoaXMsZixsLGMsYSxkLGgpfXJldHVybiB0aGlzLl9kcmF3bk5vZGU9e2c6Zixub2RlSWQ6YSx4OmwseTpjLGF0dHJpYnV0ZXM6ZH0sdGhpc30sdXBkYXRlRHJhd25Ob2RlOmZ1bmN0aW9u''@;'; put 'put ''IGNfdChsLGMsYSxkPXt9LGg9e30pe2lmKCF0aGlzLl9kcmF3bk5vZGUpdGhyb3cgRXJyb3IoIk5vIG5vZGUgaGFzIGJlZW4gZHJhd24iKTt2YXIgZj10aGlzLl9kcmF3bk5vZGUuZztyZXR1cm4gbnVsbD09YSYmKGE9dGhpcy5fZHJhd25Ob2RlLm5vZGVJZCksZD1PYmplY3QuYXNzaWduKHRo''@;'; put 'put ''aXMuX2RyYXduTm9kZS5hdHRyaWJ1dGVzLGQpLHRoaXMuX2RyYXduTm9kZS5ub2RlSWQ9YSx0aGlzLl9kcmF3bk5vZGUueD1sLHRoaXMuX2RyYXduTm9kZS55PWMsIWYuZW1wdHkoKXx8ZC5zdHlsZSYmZC5zdHlsZS5pbmNsdWRlcygiaW52aXMiKXx8KGY9dGhpcy5fc2VsZWN0aW9uLnNlbGVj''@;'; put 'put ''dFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInN2ZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImciKS5hcHBlbmQoImciKSx0aGlzLl9kcmF3bk5vZGUuZz1mKSxmLmVtcHR5KCl8fHFnZS5jYWxsKHRoaXMsZixsLGMsYSxkLGgpLHRoaXN9LG1vdmVEcmF3bk5vZGU6ZnVuY3Rpb24g''@;'; put 'put ''dV90KGwsYyxhPXt9KXtpZighdGhpcy5fZHJhd25Ob2RlKXRocm93IEVycm9yKCJObyBub2RlIGhhcyBiZWVuIGRyYXduIik7dmFyIGQ9dGhpcy5fZHJhd25Ob2RlLmcsaD10aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcztyZXR1cm4gdGhpcy5fZHJhd25Ob2RlLng9bCx0aGlzLl9kcmF3bk5v''@;'; put 'put ''ZGUueT1jLGQuZW1wdHkoKXx8S2dlKGQsbCxjLGgpLHRoaXN9LGluc2VydERyYXduTm9kZTpmdW5jdGlvbiBkX3QobCl7aWYoIXRoaXMuX2RyYXduTm9kZSl0aHJvdyBFcnJvcigiTm8gbm9kZSBoYXMgYmVlbiBkcmF3biIpO251bGw9PWwmJihsPXRoaXMuX2RyYXduTm9kZS5ub2RlSWQpO3Zh''@;'; put 'put ''ciBjPXRoaXMuX2RyYXduTm9kZS5nO2lmKGMuZW1wdHkoKSlyZXR1cm4gdGhpczt2YXIgYT10aGlzLl9kcmF3bk5vZGUuYXR0cmlidXRlcztpZihjLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oInRpdGxlIikudGV4dChsKSxhLlVSTHx8YS50b29sdGlwKXZhciBmPWMuc2VsZWN0V2l0''@;'; put 'put ''aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImEiKSxTPShmLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb24oImVsbGlwc2UscG9seWdvbixwYXRoLHBvbHlsaW5lIiksZi5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0Iikp''@;'; put 'put ''O2Vsc2UgYy5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJlbGxpcHNlLHBvbHlnb24scGF0aCxwb2x5bGluZSIpLFM9Yy5zZWxlY3RXaXRob3V0RGF0YVByb3BhZ2F0aW9uKCJ0ZXh0Iik7Uy50ZXh0KGEubGFiZWx8fGwpO3ZhciBkZT10aGlzLl9zZWxlY3Rpb24uc2VsZWN0V2l0aG91''@;'; put 'put ''dERhdGFQcm9wYWdhdGlvbigic3ZnIikuc2VsZWN0V2l0aG91dERhdGFQcm9wYWdhdGlvbigiZyIpLHBlPWRlLmRhdHVtKCksQ2U9dGhpcy5fZXh0cmFjdERhdGEoYyxwZS5jaGlsZHJlbi5sZW5ndGgsZGUuZGF0dW0oKSk7cmV0dXJuIHBlLmNoaWxkcmVuLnB1c2goQ2UpLEhKKGMsQ2UpLHRo''@;'; put 'put ''aXMuX2RyYXduTm9kZT1udWxsLHRoaXN9LHJlbW92ZURyYXduTm9kZTpYZ2UscmVtb3ZlRHJhd25Ob2RlOlhnZSxkcmF3bk5vZGVTZWxlY3Rpb246SmdlLGRyYXduTm9kZVNlbGVjdGlvbjpKZ2UsZ3JhcGh2aXpWZXJzaW9uOmZ1bmN0aW9uIFE5dCgpe3JldHVybiB0aGlzLl9ncmFwaHZpelZl''@;'; put 'put ''cnNpb259fSx6Ny5wcm90b3R5cGUuZ3JhcGh2aXo9ZnVuY3Rpb24gcF90KGwpe3ZhciBjPXRoaXMubm9kZSgpLl9fZ3JhcGh2aXpfXztyZXR1cm4gYz8oYy5vcHRpb25zKGwpLHdGKGZ1bmN0aW9uKCl7Yy5fZGlzcGF0Y2guY2FsbCgiaW5pdEVuZCIsdGhpcyl9LmJpbmQodGhpcyksMCkpOmM9''@;'; put 'put ''bmV3IFhKKHRoaXMsbCksY30sejcucHJvdG90eXBlLnNlbGVjdFdpdGhvdXREYXRhUHJvcGFnYXRpb249ZnVuY3Rpb24gZ190KGwpe3JldHVybiBacyh0aGlzLnNpemUoKT4wP3RoaXMubm9kZSgpLnF1ZXJ5U2VsZWN0b3IobCk6bnVsbCl9O3ZhciBtX3Q9Uig5ODA4Myk7ZnVuY3Rpb24gdl90''@;'; put 'put ''KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMjkpfWZ1bmN0aW9uIF9fdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwzMCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGgubGlicmFyaWVzU2VhcmNoPSIiLGJ0KGgu''@;'; put 'put ''bGlicmFyeU9uRmlsdGVyKCkpfSksbWUoKX19ZnVuY3Rpb24gYl90KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMjQpKDEsImRpdiIsMjUpKDIsImlucHV0IiwyNiwyKSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1O''@;'; put 'put ''ZSgpO3JldHVybiBHcihmLmxpYnJhcmllc1NlYXJjaCxoKXx8KGYubGlicmFyaWVzU2VhcmNoPWgpLGJ0KGgpfSksSXQoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmxpYnJhcnlPbkZpbHRlcigpKX0pLG1lKCksZ3QoNCx2X3QsMSwwLCJjbHItaWNvbiIsMjcpKDUs''@;'; put 'put ''X190LDEsMCwiY2xyLWljb24iLDI4KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDMpLGQ9TmUoKTtfZSgyKSxZcigibmdNb2RlbCIsZC5saWJyYXJpZXNTZWFyY2gpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19''@;'; put 'put ''ZnVuY3Rpb24geV90KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMjkpfWZ1bmN0aW9uIHdfdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwzMCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpLE5lKCk7Y29uc3QgaD1HaSgzKSxmPU5lKDIpLiRpbXBsaWNp''@;'; put 'put ''dCx2PU5lKCk7cmV0dXJuIGgudmFsdWU9IiIsZi5zZWFyY2hTdHJpbmc9IiIsYnQodi50cmVlT25GaWx0ZXIoZiwidGFibGVzLlRBQkxFTkFNRSIpKX0pLG1lKCl9fWZ1bmN0aW9uIENfdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDI0KSgxLCJkaXYi''@;'; put 'put ''LDI1KSgyLCJpbnB1dCIsMzYsMyksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMikuJGltcGxpY2l0O3JldHVybiBHcihmLnNlYXJjaFN0cmluZyxoKXx8KGYuc2VhcmNoU3RyaW5nPWgpLGJ0KGgpfSksSXQoImtleXVwIixmdW5jdGlvbigpe190KGEp''@;'; put 'put ''O2NvbnN0IGg9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChOZSgpLnRyZWVPbkZpbHRlcihoLCJ0YWJsZXMuVEFCTEVOQU1FIikpfSksbWUoKSxndCg0LHlfdCwxLDAsImNsci1pY29uIiwyNykoNSx3X3QsMSwwLCJjbHItaWNvbiIsMjgpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2koMyks''@;'; put 'put ''ZD1OZSgyKS4kaW1wbGljaXQ7X2UoMiksWXIoIm5nTW9kZWwiLGQuc2VhcmNoU3RyaW5nKSxfZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksX2UoKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIFNfdChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDI5KX1m''@;'; put 'put ''dW5jdGlvbiBNX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNvbiIsMzApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKSxOZSgpO2NvbnN0IGg9R2koMyksZj1OZSgpLiRpbXBsaWNpdCx2PU5lKDMpO3JldHVybiBoLnZhbHVlPSIiLGYuc2VhcmNoU3RyaW5nPSIi''@;'; put 'put ''LGJ0KHYudHJlZU9uRmlsdGVyKGYsImNvbHVtbnMuQ09MTkFNRSIpKX0pLG1lKCl9fWZ1bmN0aW9uIHhfdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDI0KSgxLCJkaXYiLDI1KSgyLCJpbnB1dCIsMzksMyksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0''@;'; put 'put ''aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYuc2VhcmNoU3RyaW5nLGgpfHwoZi5zZWFyY2hTdHJpbmc9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoMykudHJlZU9u''@;'; put 'put ''RmlsdGVyKGgsImNvbHVtbnMuQ09MTkFNRSIpKX0pLG1lKCksZ3QoNCxTX3QsMSwwLCJjbHItaWNvbiIsMjcpKDUsTV90LDEsMCwiY2xyLWljb24iLDI4KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDMpLGQ9TmUoKS4kaW1wbGljaXQ7X2UoMiksWXIoIm5nTW9kZWwiLGQuc2VhcmNoU3Ry''@;'; put 'put ''aW5nKSxfZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksX2UoKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIEVfdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiKSgxLCJidXR0b24iLDQwKSxJdCgiY2xpY2siLGZ1bmN0''@;'; put 'put ''aW9uKCl7Y29uc3QgaD1fdChhKS4kaW1wbGljaXQsZj1OZSgpLiRpbXBsaWNpdCx2PU5lKDIpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5jb2x1bW5PbkNsaWNrKGgsdixmKSl9KSxZdCgyLCJjbHItaWNvbiIsNDEpLFBlKDMpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQs''@;'; put 'put ''ZD1OZSg0KTtfZSgpLHByKCJjb2x1bW4tYWN0aXZlIixkLmxpYkNvbHVtbkFjdGl2ZShhLkNPTFVSSSkpLF9lKDIpLG1yKCIgIixhLkNPTE5BTUUsIiAiKX19ZnVuY3Rpb24gVF90KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMzIpLEl0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oaCl7Y29uc3QgZj1fdChhKS4kaW1wbGljaXQsdj1OZSgyKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkudHJlZU5vZGVDbGlja2VkKGgsZix2LnRhYmxlcykpfSksV3IoImNsckV4cGFuZGVkQ2hhbmdlIixmdW5jdGlvbihoKXtjb25zdCBmPV90KGEpLiRpbXBsaWNpdDtyZXR1''@;'; put 'put ''cm4gR3IoZi5leHBhbmRlZCxoKXx8KGYuZXhwYW5kZWQ9aCksYnQoaCl9KSxnZSgxLCJwIiwzNyksSXQoImNsaWNrIixmdW5jdGlvbigpe2NvbnN0IGg9X3QoYSkuJGltcGxpY2l0LGY9TmUoMikuJGltcGxpY2l0O3JldHVybiBidChOZSgpLnRhYmxlT25DbGljayhoLlRBQkxFVVJJLGgsZikp''@;'; put 'put ''fSksWXQoMiwiY2xyLWljb24iLDM4KSxQZSgzKSxtZSgpLGd0KDQseF90LDYsMywiY2xyLXRyZWUtbm9kZSIsNSkoNSxFX3QsNCwzLCJjbHItdHJlZS1ub2RlIiw2KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtwcigiY2xyLWV4cGFuZGVkIixhLmV4cGFuZGVkKSxZcigiY2xy''@;'; put 'put ''RXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJMb2FkaW5nIixhLmxvYWRpbmdDb2x1bW5zJiYhYS5jb2x1bW5zKSxfZSgpLFJlKCJpZCIsYS5UQUJMRVVSSSksX2UoMiksbXIoIiAiLGEuVEFCTEVOQU1FLCIgIiksX2UoKSxSZSgibmdJZiIsYS5jb2x1bW5zKSxfZSgpLFJlKCJuZ0Zvck9m''@;'; put 'put ''IixhLmNvbHVtbnMpfX1mdW5jdGlvbiBrX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiwzMiksSXQoImNsaWNrIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gYnQodi50cmVlTm9kZUNsaWNrZWQo''@;'; put 'put ''aCxmLHYubGlicmFyeUxpc3QpKX0pLFdyKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5leHBhbmRlZCxoKXx8KGYuZXhwYW5kZWQ9aCksYnQoaCl9KSxnZSgxLCJwIiwzMyksSXQoImNsaWNrIixmdW5jdGlv''@;'; put 'put ''bigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1OZSgpO3JldHVybiBmLmxpYj1oLkxJQlJBUllJRCxidChmLmxpYnJhcnlPbkNsaWNrKGYubGlifHwiIixoKSl9KSxZdCgyLCJjbHItaWNvbiIsMzQpLFBlKDMpLG1lKCksZ3QoNCxDX3QsNiwzLCJjbHItdHJlZS1ub2RlIiw1KSg1''@;'; put 'put ''LFRfdCw2LDgsImNsci10cmVlLW5vZGUiLDM1KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtwcigiY2xyLWV4cGFuZGVkIixhLmV4cGFuZGVkKSxZcigiY2xyRXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJMb2FkaW5nIixhLmxvYWRpbmdUYWJsZXMmJiFhLnRhYmxl''@;'; put 'put ''cyksX2UoMyksbXIoIiAiLGEuTElCUkFSWU5BTUUsIiAiKSxfZSgpLFJlKCJuZ0lmIixhLnRhYmxlcyksX2UoKSxSZSgibmdGb3JPZiIsYS50YWJsZXMpfX1mdW5jdGlvbiBBX3QobCxjKXtpZigxJmwmJihWcigwKSxndCgxLGtfdCw2LDcsImNsci10cmVlLW5vZGUiLDMxKSxCcigpKSwyJmwp''@;'; put 'put ''e2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdJZiIsIWEuaGlkZGVuJiZhLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIERfdChsLGMpezEmbCYmKGdlKDAsImRpdiIsNDIpKDEsInNwYW4iLDQzKSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpKCkpfWZ1bmN0aW9uIElfdChsLGMpezEm''@;'; put 'put ''bCYmKGdlKDAsImRpdiIsNDQpLFl0KDEsImNsci1pY29uIiw0NSksZ2UoMiwicCIsNDYpLFBlKDMsIiBQbGVhc2Ugc2VsZWN0IGEgY29sdW1uIG9yIHRhYmxlICIpLG1lKCkoKSl9ZnVuY3Rpb24gUl90KGwsYyl7aWYoMSZsJiYoZ2UoMCwiaDMiLDU1KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0''@;'; put 'put ''IGE9TmUoMyk7X2UoKSxtcigiICIsYS5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW4/YS5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZSsiLiIrYS5jdXJyZW50TGluZWFnZVBhdGhDb2x1bW46YS5jdXJyZW50TGluZWFnZVBhdGhMaWJUYWJsZSwiICIpfX1mdW5jdGlvbiBMX3QobCxjKXtpZigx''@;'; put 'put ''JmwmJihnZSgwLCJkaXYiLDUzKSxndCgxLFJfdCwyLDEsImgzIiw1NCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksUmUoIm5nSWYiLCFhLmN1cnJlbnRMaW5lYWdlUGF0aENvbHVtbiYmIWEuY3VycmVudExpbmVhZ2VQYXRoTGliVGFibGUpfX1mdW5jdGlvbiBPX3QobCxjKXtpZigx''@;'; put 'put ''JmwmJihnZSgwLCJzcGFuIiksUGUoMSksZ2UoMiwiYSIsNTYpLFBlKDMpLG1lKCksUGUoNCksbWUoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKCksbXIoIiAiLGEubGluZWFnZVRhYmxlTmFtZS5zcGxpdCgiLiIpWzBdLCIuIiksX2UoKSxSZSgicm91dGVyTGluayIsIi92aWV3L2RhdGEvIith''@;'; put 'put ''LmxpbmVhZ2VUYWJsZU5hbWUpLF9lKCksbHIoYS5saW5lYWdlVGFibGVOYW1lLnNwbGl0KCIuIilbMV0pLF9lKCksbXIoIiIsYS5saW5lYWdlQ29sdW1uTmFtZS5sZW5ndGg+MD8iLiIrYS5saW5lYWdlQ29sdW1uTmFtZToiIiwiICIpfX1mdW5jdGlvbiBQX3QobCxjKXtpZigxJmwpe2NvbnN0''@;'; put 'put ''IGE9U24oKTtnZSgwLCJkaXYiLDY2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDQpLmRvd25sb2FkUE5HKCkpfSksUGUoMSwiIFBORyAiKSxtZSgpfX1mdW5jdGlvbiBGX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDY2KSxJdCgiY2xp''@;'; put 'put ''Y2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDQpLmRvd25sb2FkQ1NWKCkpfSksUGUoMSwiIENTViAiKSxtZSgpfX1mdW5jdGlvbiBOX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItZHJvcGRvd24tbWVudSIsNjUpKDEsImRpdiIsNjYpLEl0KCJjbGljayIs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMykuZG93bmxvYWRTVkcoKSl9KSxQZSgyLCJTVkciKSxtZSgpLGd0KDMsUF90LDIsMCwiZGl2Iiw2NyksZ2UoNCwiZGl2Iiw2NiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5kb3dubG9hZERvdCgpKX0p''@;'; put 'put ''LFBlKDUsIkRvdCIpLG1lKCksZ3QoNixGX3QsMiwwLCJkaXYiLDY3KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgzKTtfZSgzKSxSZSgibmdJZiIsIWEuaGVscGVyU2VydmljZS5pc01pY3Jvc29mdCksX2UoMyksUmUoIm5nSWYiLGEuZmxhdGRhdGEpfX1mdW5jdGlvbiBIX3QobCxjKXtpZigx''@;'; put 'put ''Jmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItY2hlY2tib3gtd3JhcHBlciIsNjgpKDEsImlucHV0Iiw2OSksSXQoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoMykuZ2VuZXJhdGVHcmFwaCgpKX0pLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtj''@;'; put 'put ''b25zdCBmPU5lKDMpO3JldHVybiBHcihmLnJlZnJlc2hDYWNoZSxoKXx8KGYucmVmcmVzaENhY2hlPWgpLGJ0KGgpfSksbWUoKSxnZSgyLCJsYWJlbCIpLFBlKDMsIlJlZnJlc2ggQ2FjaGUiKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpO19lKCksWXIoIm5nTW9kZWwiLGEucmVmcmVz''@;'; put 'put ''aENhY2hlKX19ZnVuY3Rpb24gVl90KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw1NykoMSwiYnV0dG9uIiw1OCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5saW1pdERvdERlcHRoPSEwKX0pLFBlKDIsIiBMaW1pdCBkZXB0aCAiKSxt''@;'; put 'put ''ZSgpLGdlKDMsImRpdiIsNTkpKDQsImRpdiIsNjApLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBoLmZvcndhcmRMaW5lYWdlPSExLGJ0KGgucm91dGVyLnVybC5pbmNsdWRlcygiY29sdW1uIik/aC5vbkdlbmVyYXRlQ2xpY2soKTpoLm9uR2VuZXJh''@;'; put 'put ''dGVHcmFwaFRhYmxlQ2xpY2soKSl9KSxZdCg1LCJpbnB1dCIsNjEpLGdlKDYsImxhYmVsIiksUGUoNywiQmFja3dhcmQiKSxtZSgpKCksZ2UoOCwiZGl2Iiw2MCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGguZm9yd2FyZExpbmVhZ2U9ITAsYnQo''@;'; put 'put ''aC5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKT9oLm9uR2VuZXJhdGVDbGljaygpOmgub25HZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKX0pLFl0KDksImlucHV0Iiw2MSksZ2UoMTAsImxhYmVsIiksUGUoMTEsIkZvcndhcmQiKSxtZSgpKCkoKSxnZSgxMiwiY2xyLWRyb3Bkb3duIiw2''@;'; put 'put ''MikoMTMsImJ1dHRvbiIsNjMpLFBlKDE0LCIgRG93bmxvYWQgIiksWXQoMTUsImNsci1pY29uIiwyMiksbWUoKSxndCgxNixOX3QsNywyLCJjbHItZHJvcGRvd24tbWVudSIsMjMpLG1lKCksZ3QoMTcsSF90LDQsMSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiLDY0KSxtZSgpfWlmKDImbCl7Y29u''@;'; put 'put ''c3QgYT1OZSgyKTtfZSg1KSxSZSgiY2hlY2tlZCIsIWEuZm9yd2FyZExpbmVhZ2UpLF9lKDQpLFJlKCJjaGVja2VkIixhLmZvcndhcmRMaW5lYWdlKSxfZSg0KSxSZSgiZGlzYWJsZWQiLCFhLmNvbHVtbiYmIWEudGFibGUpLF9lKDQpLFJlKCJuZ0lmIixhLmNvbHVtbil9fWZ1bmN0aW9uIEJf''@;'; put 'put ''dChsLGMpezEmbCYmKGdlKDAsInNwYW4iLDczKSxQZSgxLCIgTG9hZGluZy4uLiAiKSxtZSgpKX1mdW5jdGlvbiBqX3QobCxjKXsxJmwmJll0KDAsInNwYW4iLDQzKX1mdW5jdGlvbiB6X3QobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDc0KSgxLCJkaXYiLDc1KSxndCgyLGpfdCwxLDAsInNw''@;'; put 'put ''YW4iLDc2KSxtZSgpLFl0KDMsImRpdiIsNzcpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgyKSxSZSgibmdJZiIsYS5ncmFwaFJlbmRlcmluZyl9fWZ1bmN0aW9uIFVfdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIpKDEsImRpdiIsNzApLGd0KDIsQl90LDIsMCwic3BhbiIsNzEpKDMs''@;'; put 'put ''el90LDQsMSwiZGl2Iiw3MiksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7cHIoIm10LTIiLGEudGFibGVGbGFnKSxfZSgyKSxSZSgibmdJZiIsYS5ncmFwaExvYWRpbmcpLF9lKCksUmUoIm5nSWYiLCFhLmdyYXBoTG9hZGluZyl9fWZ1bmN0aW9uIFpfdChsLGMpe2lmKDEmbCYmKFZyKDAp''@;'; put 'put ''LGd0KDEsTF90LDIsMSwiZGl2Iiw0NyksZ2UoMiwiZGl2Iiw0OCkoMywic2VjdGlvbiIsNDkpKDQsImRpdiIsNTApLGd0KDUsT190LDUsNCwic3BhbiIsMTEpLG1lKCksZ3QoNixWX3QsMTgsNCwiZGl2Iiw1MSksbWUoKSxndCg3LFVfdCw0LDQsImRpdiIsNTIpLG1lKCksQnIoKSksMiZsKXtj''@;'; put 'put ''b25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsIWEuZ3JhcGhDb250YWluZXIpLF9lKDQpLFJlKCJuZ0lmIixhLmxpbmVhZ2VUYWJsZU5hbWUubGVuZ3RoPjApLF9lKCksUmUoIm5nSWYiLGEuZ3JhcGhDb250YWluZXIpLF9lKCksUmUoIm5nSWYiLGEuZ3JhcGhDb250YWluZXIpfX1mdW5jdGlv''@;'; put 'put ''biBZX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJkaXYiLDY2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLnJlbmRlclRvRG93bmxvYWQoIlBORyIpKX0pLFBlKDEsIiBQTkcgIiksbWUoKX19ZnVuY3Rpb24gV190KGwsYyl7aWYoMSZsKXtj''@;'; put 'put ''b25zdCBhPVNuKCk7Z2UoMCwiY2xyLWRyb3Bkb3duLW1lbnUiLDY1KSgxLCJkaXYiLDY2KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkucmVuZGVyVG9Eb3dubG9hZCgiU1ZHIikpfSksUGUoMiwiU1ZHIiksbWUoKSxndCgzLFlfdCwyLDAsImRpdiIsNjcpLGdl''@;'; put 'put ''KDQsImRpdiIsNjYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCk7cmV0dXJuIGguZG93bmxvYWREb3QoKSxidChoLmNhbmNlbFJlbmRlcmluZ0dyYXBoKCkpfSksUGUoNSwiIERvdCAiKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoMyksUmUoIm5nSWYi''@;'; put 'put ''LCFhLmhlbHBlclNlcnZpY2UuaXNNaWNyb3NvZnQpfX1jb25zdCBHX3Q9Uig5NzU4Nik7bGV0IFpGPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRKXt0aGlzLmxpY2VuY2VTZXJ2aWNlPWEsdGhpcy5zYXNTZXJ2aWNlPWQsdGhpcy5yb3V0ZT1oLHRoaXMucm91dGVy''@;'; put 'put ''PWYsdGhpcy5sb2NhdGlvbj12LHRoaXMuZXZlbnRTZXJ2aWNlPVMsdGhpcy5sb2dnZXJTZXJ2aWNlPVYsdGhpcy5oZWxwZXJTZXJ2aWNlPVEsdGhpcy5zd2l0Y2hGbGFnPSExLHRoaXMudGFibGVGbGFnPSEwLHRoaXMuZm9yd2FyZExpbmVhZ2U9ITEsdGhpcy5mbGF0ZGF0YT1bXSx0aGlzLmdy''@;'; put 'put ''YXBoTG9hZGluZz0hMSx0aGlzLmdyYXBoUmVuZGVyaW5nPSExLHRoaXMuZ3JhcGhDb250YWluZXI9ITEsdGhpcy52aXpJbnB1dD0iIix0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSx0aGlzLmxpYnJhcnlUYWJsZXNSZWY9IiIsdGhpcy5saWJyYXJpZXNTZWFyY2g9IiIsdGhpcy50YWJsZUNvbHVt''@;'; put 'put ''bnNSZWY9IiIsdGhpcy5saW5lYWdlVGFibGVOYW1lPSIiLHRoaXMubGluZWFnZUNvbHVtbk5hbWU9IiIsdGhpcy5saWI9bnVsbCx0aGlzLnRhYmxlRGlzYWJsZT0hMSx0aGlzLnJlZnJlc2hDYWNoZT0hMSx0aGlzLmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPSIiLHRoaXMuY3VycmVudExp''@;'; put 'put ''bmVhZ2VQYXRoQ29sdW1uPSIiLHRoaXMubGFyZ2VEb3RGaWxlTGluZXM9bnVsbCx0aGlzLmxhcmdlRG90RmlsZUxpbWl0PTFlMyx0aGlzLmxpbWl0RG90RGVwdGg9ITEsdGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9bnVsbCx0aGlzLmRlYm91bmNlVGltZT0yMDB9c2hvd1RhYmxlU2VsZWN0''@;'; put 'put ''KCl7dGhpcy50YWJsZUZsYWc9IXRoaXMudGFibGVGbGFnfXRhYmxlT25DbGljayhhLGQsaCxmPSExKXt2YXIgdj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2QuY29sdW1ucz8oZC5leHBhbmRlZD0hZC5leHBhbmRlZCwhMD09PWQuZXhwYW5kZWQmJih2LnRhYmxlPWEsZnx8di5vbkdlbmVy''@;'; put 'put ''YXRlR3JhcGhUYWJsZUNsaWNrKCkpKTooZC5leHBhbmRlZD0hZC5leHBhbmRlZCxkLmxvYWRpbmdDb2x1bW5zPSEwLHYudGFibGU9YSx2LmN1cnJlbnRMaW5lYWdlUGF0aExpYlRhYmxlPWQuTElCTkFNRSsiLiIrZC5UQUJMRU5BTUUseWllbGQgdi5zZWxlY3RUYWJsZShhLGQpLGZ8fHYub25H''@;'; put 'put ''ZW5lcmF0ZUdyYXBoVGFibGVDbGljaygpKSx2LmNvbGxhcHNlVHJlZUl0ZW1zKGgudGFibGVzLGQpfSkoKX1zZWxlY3RUYWJsZShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aC5jb2x1bW5zTGlzdD1bXTtsZXQgZj17U0FTQ29udHJvbFRhYmxlOlt7dGFibGV1cmk6YX1d''@;'; put 'put ''fTt5aWVsZCBoLnNhc1NlcnZpY2UucmVxdWVzdCgibGluZWFnZS9nZXRtZXRhY29scyIsZikudGhlbih2PT57aC5jb2x1bW5zTGlzdD12LmFkYXB0ZXJSZXNwb25zZS5tZXRhY29scyxoLmNvbHVtbnNMaXN0JiZoLmNvbHVtbnNMaXN0Lmxlbmd0aD4wJiYoZC5jb2x1bW5zPWguY29sdW1uc0xp''@;'; put 'put ''c3QsZC5leHBhbmRlZD0hMCxkLmxvYWRpbmdDb2x1bW5zPSExKX0pLmNhdGNoKHY9PnYpLGguc2V0R2xvYmFsRGF0YSgpfSkoKX1sb2FkTW9yZUxpYnJhcmllcygpe3RoaXMubGlicmFyaWVzUGFnaW5nfHwodGhpcy5saWJyYXJpZXNQYWdpbmc9ITAsdGhpcy5oZWxwZXJTZXJ2aWNlLmRpc3Bs''@;'; put 'put ''YXlMaWJyYXJpZXModGhpcy5saWJyYXJ5TGlzdCwhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfWNvbGxhcHNlVHJlZUl0ZW1zKGEsZCl7YS5mb3JFYWNoKGg9PntKU09OLnN0cmluZ2lmeShoKSE9PUpTT04uc3RyaW5naWZ5KGQpJiYoaC5leHBhbmRlZD0hMSl9KX10cmVlTm9kZUNsaWNr''@;'; put 'put ''ZWQoYSxkLGgpeyJDb2xsYXBzZSI9PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZVRyZWVJdGVtcyhoLGQpfWxpYnJhcnlPbkNsaWNrKGEsZCl7dmFyIGg9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtkLmluRm9yZWdyb3VuZD0hMCxkLnRhYmxlcz9kLmV4cGFuZGVkPSFkLmV4cGFu''@;'; put 'put ''ZGVkOihkLmxvYWRpbmdUYWJsZXM9ITAseWllbGQgaC5zZWxlY3RMaWJyYXJ5KGEsZCkpLGguY29sbGFwc2VUcmVlSXRlbXMoaC5saWJyYXJ5TGlzdCxkKX0pKCl9c2VsZWN0TGlicmFyeShhLGQpe3ZhciBoPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aC50YWJsZXNMaXN0PVtdLGguY29s''@;'; put 'put ''dW1uc0xpc3Q9W107bGV0IGY9e1NBU0NvbnRyb2xUYWJsZTpbe2xpYnVyaTphfV19O3lpZWxkIGguc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2dldG1ldGF0YWJsZXMiLGYpLnRoZW4odj0+e2gudGFibGVzTGlzdD12LmFkYXB0ZXJSZXNwb25zZS5tZXRhdGFibGVzLGgudGFibGVzTGlz''@;'; put 'put ''dCYmaC50YWJsZXNMaXN0Lmxlbmd0aD4wJiYoZC50YWJsZXM9aC50YWJsZXNMaXN0LGQuZXhwYW5kZWQ9ITApLGguc2V0R2xvYmFsRGF0YSgpfSkuY2F0Y2godj0+diksZC5sb2FkaW5nVGFibGVzPSExfSkoKX1jb2x1bW5PbkNsaWNrKGEsZCxoKXt0aGlzLmxpYj1kLkxJQlJBUllJRCx0aGlz''@;'; put 'put ''LnRhYmxlPWguVEFCTEVVUkksdGhpcy5jb2x1bW49YS5DT0xVUkksdGhpcy5zZXRHbG9iYWxEYXRhKCksdGhpcy5vbkdlbmVyYXRlQ2xpY2soKX10cmVlT25GaWx0ZXIoYSxkKXt0aGlzLmhlbHBlclNlcnZpY2UudHJlZU9uRmlsdGVyKGEsZCl9bGlicmFyeU9uRmlsdGVyKCl7dGhpcy5oZWxw''@;'; put 'put ''ZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLmxpYnJhcnlMaXN0LHRoaXMubGlicmFyaWVzU2VhcmNoLCJMSUJSQVJZTkFNRSIpLEhuLmxpbmVhZ2UubGlicmFyaWVzU2VhcmNoPXRoaXMubGlicmFyaWVzU2VhcmNofWxpYkNvbHVtbkFjdGl2ZShhKXtpZighdGhpcy5jb2x1bW4pcmV0''@;'; put 'put ''dXJuITE7bGV0IGQ9YS5zcGxpdCgiXFwiKSxoPXRoaXMuY29sdW1uLnNwbGl0KCJcXCIpO3JldHVybiBkW2QubGVuZ3RoLTFdPT1oW2gubGVuZ3RoLTFdfXNldEdsb2JhbERhdGEoKXtIbi5saW5lYWdlLmxpYnJhcnlMaXN0PXRoaXMubGlicmFyeUxpc3QsSG4ubGluZWFnZS50YWJsZXNMaXN0''@;'; put 'put ''PXRoaXMudGFibGVzTGlzdCxIbi5saW5lYWdlLmNvbHVtbnNMaXN0PXRoaXMuY29sdW1uc0xpc3QsSG4ubGluZWFnZS5saWI9dGhpcy5saWIsSG4ubGluZWFnZS50YWJsZT10aGlzLnRhYmxlLEhuLmxpbmVhZ2UuY29sdW1uPXRoaXMuY29sdW1ufWxvYWRHbG9iYWxEYXRhKCl7dGhpcy5saWJy''@;'; put 'put ''YXJ5TGlzdD1Ibi5saW5lYWdlLmxpYnJhcnlMaXN0LHRoaXMudGFibGVzTGlzdD1Ibi5saW5lYWdlLnRhYmxlc0xpc3QsdGhpcy5jb2x1bW5zTGlzdD1Ibi5saW5lYWdlLmNvbHVtbnNMaXN0LHRoaXMubGlicmFyaWVzU2VhcmNoPUhuLmxpbmVhZ2UubGlicmFyaWVzU2VhcmNofXJlc3VibWl0''@;'; put 'put ''V2l0aE1heERlcHRoKGEpe2xldCBkO3RoaXMuY2FuY2VsUmVuZGVyaW5nR3JhcGgoKSxhJiYoZD17bWF4X2RlcHRoOmF9KSx0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSx7cmVsYXRpdmVUbzp0aGlzLnJvdXRlLHF1ZXJ5UGFyYW1zOmR9KX1uZ09uSW5pdCgpe0huLnZpZXdlci5jdXJyZW50U2Vs''@;'; put 'put ''ZWN0aW9uPSJ2aWV3L2xpbmVhZ2UiO2xldCBhPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnJlbG9hZDtpZih2b2lkIDAhPT1hKXtsZXQgZD10aGlzLnJvdXRlci51cmw7InJlbG9hZCI9PT1hP2xvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaXJzdExvYWQiKT8obG9jYWxTdG9yYWdlLnJlbW92''@;'; put 'put ''ZUl0ZW0oImZpcnN0TG9hZCIpLHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGQuc2xpY2UoMCxkLmxhc3RJbmRleE9mKCIvIikpKSk6KGxvY2FsU3RvcmFnZS5maXJzdExvYWQ9ITAsc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX0sMmUzKSk6dGhpcy5s''@;'; put 'put ''b2NhdGlvbi5yZXBsYWNlU3RhdGUoZC5zbGljZSgwLGQubGFzdEluZGV4T2YoIi8iKSkpfXRoaXMuaW5pdERhdGEoKX1pbml0RGF0YSgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7SG4ubGluZWFnZS5saWJyYXJ5TGlzdCYmKEhuLmxpbmVhZ2UubGlicmFyeUxpc3QubGVuZ3Ro''@;'; put 'put ''PjA/YS5sb2FkR2xvYmFsRGF0YSgpOnlpZWxkIGEuc2FzU2VydmljZS5yZXF1ZXN0KCJwdWJsaWMvdmlld2xpYnMiLG51bGwpLnRoZW4odj0+e2EubGlicmFyeUxpc3Q9di5hZGFwdGVyUmVzcG9uc2Uuc2FzbGlicyxhLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyhhLmxpYnJhcnlM''@;'; put 'put ''aXN0KSxhLmxpYnJhcnlMaXN0JiZhLmxpYnJhcnlMaXN0Lmxlbmd0aD4wJiYoYS5saWI9YS5saWJyYXJ5TGlzdFswXS5MSUJSQVJZSUQpLGEuc2V0R2xvYmFsRGF0YSgpfSkuY2F0Y2godj0+diksYS5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUodj0+e2Eub25Sb3V0ZUNoYW5nZSgpfSks''@;'; put 'put ''YS5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHY9PnthLm9uUm91dGVDaGFuZ2UoKX0pKX0pKCl9b25Sb3V0ZUNoYW5nZSgpe2NsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZW91dCksdGhpcy5kZWJvdW5jZVRpbWVvdXQ9c2V0VGltZW91dCgoKT0+e2NvbnN0IGE9dGhpcy5yb3V0ZS5zbmFw''@;'; put 'put ''c2hvdC5wYXJhbXMuY29sdXJpLGQ9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGlyZWN0aW9uLGg9dGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMudGFibGVpZCxmPXRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMubWF4X2RlcHRoO2EmJmQmJih0aGlzLmZvcndhcmRMaW5lYWdl''@;'; put 'put ''PSJGT1JXQVJEIj09PWQsdGhpcy5jb2x1bW49YSx0aGlzLmdlbmVyYXRlR3JhcGgoYSxkLGYpKSwhdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCJjb2x1bW4iKSYmaCYmZCYmKHRoaXMuZm9yd2FyZExpbmVhZ2U9IkZPUldBUkQiPT09ZCx0aGlzLnRhYmxlPWgsdGhpcy5nZW5lcmF0ZUdyYXBo''@;'; put 'put ''VGFibGVMZXZlbChoLGQsZikpfSx0aGlzLmRlYm91bmNlVGltZSl9bmdBZnRlckNvbnRlbnRJbml0KCl7fWRpcmVjdGlvblRleHQoKXtyZXR1cm4gdGhpcy5mb3J3YXJkTGluZWFnZT8iRk9SV0FSRCI6IlJFVkVSU0UifW9uR2VuZXJhdGVDbGljaygpe2xldCBhPXRoaXMuZGlyZWN0aW9uVGV4''@;'; put 'put ''dCgpLGQ9dGhpcy5jb2x1bW4/dGhpcy5jb2x1bW4uc3Vic3RyaW5nKHRoaXMuY29sdW1uLmluZGV4T2YoIlxcIikrMSk6bnVsbDt0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlL2NvbHVtbi8iK2QrIi8iK2EpfW9uR2VuZXJhdGVHcmFwaFRhYmxlQ2xpY2soKXtsZXQg''@;'; put 'put ''YT10aGlzLmRpcmVjdGlvblRleHQoKSxkPXRoaXMudGFibGUuaW5jbHVkZXMoIlxcIik/dGhpcy50YWJsZS5zcGxpdCgiXFwiKVsxXTp0aGlzLnRhYmxlO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2xpbmVhZ2UvIitkKyIvIithKX1nZW5lcmF0ZUdyYXBoVGFibGVMZXZlbChh''@;'; put 'put ''LGQsaCl7dmFyIGY9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgdj17U0FTQ29udHJvbFRhYmxlOlt7dGFibGVfaWQ6YSxkaXJlY3Rpb246ZHx8Zi5kaXJlY3Rpb25UZXh0KCl9XX07cmV0dXJuInVuZGVmaW5lZCI9PT12LlNBU0NvbnRyb2xUYWJsZVswXS50YWJsZV9pZCYmZi5ldmVu''@;'; put 'put ''dFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwoImdlbmVyYXRlR3JhcGhUYWJsZUxldmVsKCkiLCJ0YWJsZV9pZCBpcyB1bmRlZmluZWQuIix2b2lkIDAsIkZyb250ZW5kIGVycm9yIiksaCYmKHYuU0FTQ29udHJvbFRhYmxlWzBdLm1heF9kZXB0aD1oKSxmLnRhYmxlRmxhZz0hMSxmLnN3aXRjaEZs''@;'; put 'put ''YWc9ITAsZi5ncmFwaENvbnRhaW5lcj0hMCxmLmdyYXBoTG9hZGluZz0hMCxmLnZpeklucHV0PSIiLG5ldyBQcm9taXNlKChTLFYpPT57Zi5zYXNTZXJ2aWNlLnJlcXVlc3QoImxpbmVhZ2UvZmV0Y2h0YWJsZWxpbmVhZ2UiLHYpLnRoZW4oZnVuY3Rpb24oKXt2YXIgUT1ZKGZ1bmN0aW9uKihk''@;'; put 'put ''ZSl7aWYoZGUuYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLmxlbmd0aD4wJiZmLmxpY2VuY2VTZXJ2aWNlLmNoZWNrTGluZWFnZUxpbWl0KCkpcmV0dXJuIGYuZXZlbnRTZXJ2aWNlLnNob3dJbmZvTW9kYWwoIk5vdGljZSIsIllvdSBoYXZlIHJlYWNoZWQgZGFpbHkgbWF4aW11bSBvZiBsaW5l''@;'; put 'put ''YWdlIGRpYWdyYW0gcmVuZGVyaW5ncy4gVG8gdW5sb2NrIGFkZGl0aW9uYWwgZGlhZ3JhbXMsIGNvbnRhY3Qgc3VwcG9ydEBkYXRhY29udHJvbGxlci5pbyIpLHZvaWQgZi5yb3V0ZXIubmF2aWdhdGVCeVVybCgiL3ZpZXcvbGluZWFnZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgZGUpcmV0dXJu''@;'; put 'put ''IGYudml6SW5wdXQ9ImRpZ3JhcGggRyB7U0FTIEVycm9yfSIsdm9pZCBmLmJ1aWxkR3JhcGgoKTtmLmxpbmVhZ2VUYWJsZU5hbWU9ZGUuYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uTElCUkVGKyIuIitkZS5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5UQUJMRU5BTUU7bGV0IHBlPWRlLmFkYXB0''@;'; put 'put ''ZXJSZXNwb25zZS5maW5hbGZpbmFsLENlPSIiO2ZvcihsZXQgT2U9MDtPZTxwZS5sZW5ndGg7T2UrKylDZSs9dW5lc2NhcGUocGVbT2VdLkxJTkUpKyJcbiI7aWYoZi5mbGF0ZGF0YT1kZS5hZGFwdGVyUmVzcG9uc2UuZmxhdGRhdGEsZi5saWJyYXJ5TGlzdCl7bGV0IE9lPWYubGlicmFyeUxp''@;'; put 'put ''c3QuZmluZChZZT0+ZGUuYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uTElCVVJJLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoWWUuTElCUkFSWUlELnRvVXBwZXJDYXNlKCkpKTtpZihPZSl7bGV0IFllO2lmKHlpZWxkIGYubGlicmFyeU9uQ2xpY2soT2UuTElCUkFSWUlELE9lKSxPZS50YWJsZXMm''@;'; put 'put ''JihZZT1PZS50YWJsZXMuZmluZChldD0+ZXQuVEFCTEVVUkkudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhkZS5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5UQUJMRUlELnRvVXBwZXJDYXNlKCkpKSxZZSkpe2lmKGYudGFibGU9WWUuVEFCTEVVUkksZi50YWJsZSl7Y29uc3QgZXQ9Zi50YWJsZS5y''@;'; put 'put ''ZXBsYWNlKCJcXCIsIlxcXFwiKTtzZXRUaW1lb3V0KCgpPT57bGV0IGR0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD0nJHtldH0nXWApO2R0JiZkdC5zY3JvbGxJbnRvVmlldygpfSwxZTMpfWYudGFibGVPbkNsaWNrKFllLlRBQkxFVVJJLFllLE9lLHZvaWQgMCE9PWQpfU9lJiYoT2Uu''@;'; put 'put ''ZXhwYW5kZWQ9ITApLFllJiYoWWUuZXhwYW5kZWQ9ITApfX1mLnZpeklucHV0PUNlfHwiZGlncmFwaCBHIHtObyBMaW5lYWdlIEF2YWlsYWJsZX0iLGYudml6SW5wdXQ9Zi52aXpJbnB1dC5yZXBsYWNlKC9cc2RzOi9nLCJcbmRzOiIpLnJlcGxhY2UoL1xzXG4vZywiXG4iKSxmLmlkbG9va3Vw''@;'; put 'put ''PWRlLmFkYXB0ZXJSZXNwb25zZS5pZGxvb2t1cCxkZS5hZGFwdGVyUmVzcG9uc2UuZmluYWxmaW5hbC5sZW5ndGg+Zi5sYXJnZURvdEZpbGVMaW1pdD9mLmxhcmdlRG90RmlsZUxpbmVzPWRlLmFkYXB0ZXJSZXNwb25zZS5maW5hbGZpbmFsLmxlbmd0aDpmLmJ1aWxkR3JhcGgoKSxTKCl9KTty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oZGUpe3JldHVybiBRLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpLmNhdGNoKFE9PntmLmdyYXBoTG9hZGluZz0hMSxmLmdyYXBoQ29udGFpbmVyPSExfSl9KX0pKCl9Y2FuY2VsUmVuZGVyaW5nR3JhcGgoKXt0aGlzLnZpeklucHV0PSJkaWdyYXBoIEcge05vIExp''@;'; put 'put ''bmVhZ2UgQXZhaWxhYmxlfSIsdGhpcy5sYXJnZURvdEZpbGVMaW5lcz1udWxsLHRoaXMuYnVpbGRHcmFwaCgpfWNvbnRpbnVlUmVuZGVyaW5nR3JhcGgoKXt0aGlzLmxhcmdlRG90RmlsZUxpbmVzPW51bGwsdGhpcy5idWlsZEdyYXBoKCgpPT57aWYobnVsbCE9PXRoaXMucGVuZGluZ1JlbmRl''@;'; put 'put ''ckRvd25sb2FkKXtzd2l0Y2godGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQpe2Nhc2UiUE5HIjp0aGlzLmRvd25sb2FkUE5HKCk7YnJlYWs7Y2FzZSJTVkciOnRoaXMuZG93bmxvYWRTVkcoKX10aGlzLnBlbmRpbmdSZW5kZXJEb3dubG9hZD1udWxsLHRoaXMudml6SW5wdXQ9ImRpZ3JhcGgg''@;'; put 'put ''RyB7Tm8gTGluZWFnZSBBdmFpbGFibGV9Iix0aGlzLmJ1aWxkR3JhcGgoKX19KX1yZW5kZXJUb0Rvd25sb2FkKGEpe3N3aXRjaChhKXtjYXNlIlBORyI6dGhpcy5wZW5kaW5nUmVuZGVyRG93bmxvYWQ9IlBORyIsdGhpcy5jb250aW51ZVJlbmRlcmluZ0dyYXBoKCk7YnJlYWs7Y2FzZSJTVkci''@;'; put 'put ''OnRoaXMucGVuZGluZ1JlbmRlckRvd25sb2FkPSJTVkciLHRoaXMuY29udGludWVSZW5kZXJpbmdHcmFwaCgpfX1tYWtlR3JhcGhMaW5rYWJsZShhKXtsZXQgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjZ3JhcGggLm5vZGUiKTtmb3IobGV0IGggb2YgZCl7bGV0IFMsZj1oLnF1ZXJ5''@;'; put 'put ''U2VsZWN0b3IoInRpdGxlIikuaW5uZXJIVE1MLHY9YS5maW5kKFY9PlYuTUVUQUlEPT09Zik7diYmKFM9IlRBQkxFIj09PXYuTUVUQVRZUEU/Ii92aWV3L2RhdGEvIit2Lk1FVEFOQU1FOiIvdmlldy9tZXRhZGF0YS9vYmplY3QvIit2Lk1FVEFJRCxoLmNsYXNzTGlzdC5hZGQoImN1cnNvci1w''@;'; put 'put ''b2ludGVyIiksaC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsVj0+e3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoUyl9KSl9fWdlbmVyYXRlR3JhcGgoYSxkLGgpe3ZhciBmPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7bGV0IHY9e1NBU0NvbnRyb2xUYWJsZTpbe2NvbHVyaTphfHxmLmNv''@;'; put 'put ''bHVtbixkaXJlY3Rpb246ZHx8Zi5kaXJlY3Rpb25UZXh0KCkscmVmcmVzaDpmLnJlZnJlc2hDYWNoZT8xOjB9XX07cmV0dXJuInVuZGVmaW5lZCI9PT12LlNBU0NvbnRyb2xUYWJsZVswXS5jb2x1cmkmJmYuZXZlbnRTZXJ2aWNlLnNob3dBYm9ydE1vZGFsKCJnZW5lcmF0ZUdyYXBoKCkiLCJj''@;'; put 'put ''b2x1cmkgaXMgdW5kZWZpbmVkLiIsdm9pZCAwLCJGcm9udGVuZCBlcnJvciIpLGgmJih2LlNBU0NvbnRyb2xUYWJsZVswXS5tYXhfZGVwdGg9aCksZi50YWJsZUZsYWc9ITEsZi5zd2l0Y2hGbGFnPSEwLGYuZ3JhcGhDb250YWluZXI9ITAsZi5ncmFwaExvYWRpbmc9ITAsZi52aXpJbnB1dD0i''@;'; put 'put ''IixuZXcgUHJvbWlzZSgoUyxWKT0+e2Yuc2FzU2VydmljZS5yZXF1ZXN0KCJsaW5lYWdlL2ZldGNoY29sbGluZWFnZSIsdikudGhlbihmdW5jdGlvbigpe3ZhciBRPVkoZnVuY3Rpb24qKGRlKXtpZihkZS5hZGFwdGVyUmVzcG9uc2UuZmxhdGRhdGEubGVuZ3RoPjAmJmYubGljZW5jZVNlcnZp''@;'; put 'put ''Y2UuY2hlY2tMaW5lYWdlTGltaXQoKSlyZXR1cm4gZi5ldmVudFNlcnZpY2Uuc2hvd0luZm9Nb2RhbCgiTm90aWNlIiwiWW91IGhhdmUgcmVhY2hlZCBkYWlseSBtYXhpbXVtIG9mIGxpbmVhZ2UgZGlhZ3JhbSByZW5kZXJpbmdzLiBUbyB1bmxvY2sgYWRkaXRpb25hbCBkaWFncmFtcywgY29u''@;'; put 'put ''dGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvIiksdm9pZCBmLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCIvdmlldy9saW5lYWdlIik7aWYoInN0cmluZyI9PXR5cGVvZiBkZS5hZGFwdGVyUmVzcG9uc2UpcmV0dXJuIGYudml6SW5wdXQ9ImRpZ3JhcGggRyB7U0FTIEVycm9yfSIsdm9pZCBm''@;'; put 'put ''LmJ1aWxkR3JhcGgoKTtmLmxpbmVhZ2VUYWJsZU5hbWU9ZGUuYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uTElCUkVGKyIuIitkZS5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5UQUJOQU1FLGYubGluZWFnZUNvbHVtbk5hbWU9ZGUuYWRhcHRlclJlc3BvbnNlLmluZm9bMF0uQ09MTkFNRSxmLmlk''@;'; put 'put ''bG9va3VwPWRlLmFkYXB0ZXJSZXNwb25zZS5pZGxvb2t1cDtsZXQgcGU9ZGUuYWRhcHRlclJlc3BvbnNlLmZyb21zYXMsQ2U9IiI7Zm9yKGxldCBPZT0wO09lPHBlLmxlbmd0aDtPZSsrKUNlKz11bmVzY2FwZShwZVtPZV0uU1RSSU5HKSsiXG4iO2lmKGYudml6SW5wdXQ9Q2V8fCJkaWdyYXBo''@;'; put 'put ''IEcge05vIExpbmVhZ2UgQXZhaWxhYmxlfSIsZi52aXpJbnB1dD1mLnZpeklucHV0LnJlcGxhY2UoL1xzZHM6L2csIlxuZHM6IikucmVwbGFjZSgvXHNcbi9nLCJcbiIpLGYuZmxhdGRhdGE9ZGUuYWRhcHRlclJlc3BvbnNlLmZsYXRkYXRhLGYubGlicmFyeUxpc3Qpe2xldCBZZSxPZT1mLmxp''@;'; put 'put ''YnJhcnlMaXN0LmZpbmQoZXQ9PmRlLmFkYXB0ZXJSZXNwb25zZS5pbmZvWzBdPy5MSUJVUkk/LnRvVXBwZXJDYXNlKCk/LmluY2x1ZGVzKGV0Py5MSUJSQVJZSUQ/LnRvVXBwZXJDYXNlKCkpKTtPZSYmKHlpZWxkIGYubGlicmFyeU9uQ2xpY2soT2UuTElCUkFSWUlELE9lKSxPZS50YWJsZXMm''@;'; put 'put ''JihZZT1PZS50YWJsZXMuZmluZChldD0+ZXQuVEFCTEVVUkk9PT1kZS5hZGFwdGVyUmVzcG9uc2UuaW5mb1swXS5UQUJVUkkpLFllJiZmLnRhYmxlT25DbGljayhZZS5UQUJMRVVSSSxZZSxPZSwhMCkudGhlbigoKT0+e2xldCBldD1ZZS5UQUJMRVVSSTtpZihldCl7Y29uc3QgZHQ9ZXQucmVw''@;'; put 'put ''bGFjZSgiXFwiLCJcXFxcIik7bGV0IGh0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD0nJHtkdH0nXWApO3NldFRpbWVvdXQoKCk9PntodCYmKGYubG9nZ2VyU2VydmljZS5sb2coImxpYnJhcnlUb1NlbGVjdCIsT2UpLGh0LnNjcm9sbEludG9WaWV3KCkpfSwxZTMpfX0pKSxPZSYmKE9l''@;'; put 'put ''LmV4cGFuZGVkPSEwKSxZZSYmKFllLmV4cGFuZGVkPSEwKSl9ZGUuYWRhcHRlclJlc3BvbnNlLmZyb21zYXMubGVuZ3RoPmYubGFyZ2VEb3RGaWxlTGltaXQ/Zi5sYXJnZURvdEZpbGVMaW5lcz1kZS5hZGFwdGVyUmVzcG9uc2UuZnJvbXNhcy5sZW5ndGg6Zi5idWlsZEdyYXBoKCksUygpfSk7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uKGRlKXtyZXR1cm4gUS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKS5jYXRjaChRPT57Zi5ncmFwaExvYWRpbmc9ITEsZi5ncmFwaENvbnRhaW5lcj0hMX0pfSl9KSgpfWdldFNWR1VSTCgpe2xldCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIpLGQ9''@;'; put 'put ''bmV3IFhNTFNlcmlhbGl6ZXIsaD1uZXcgQmxvYihbZC5zZXJpYWxpemVUb1N0cmluZyhhKV0se3R5cGU6ImltYWdlL3N2Zyt4bWwifSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoaCl9Z2V0U1ZHQmxvYigpe2xldCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmFwaCIpLGQ9bmV3''@;'; put 'put ''IFhNTFNlcmlhbGl6ZXI7cmV0dXJuIG5ldyBCbG9iKFtkLnNlcmlhbGl6ZVRvU3RyaW5nKGEpXSx7dHlwZToiaW1hZ2Uvc3ZnK3htbCJ9KX1kb3dubG9hZFNWRygpe2lmKFVGKCIjZ3JhcGgiKS5yZXNldFpvb20oKSxuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5O''@;'; put 'put ''RVQiKT4wKXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYih0aGlzLmdldFNWR0Jsb2IoKSx0aGlzLmNvbnN0cnVjdE5hbWUoInN2ZyIpKTtlbHNle2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTthLmhyZWY9dGhpcy5nZXRTVkdVUkwoKSxhLmRvd25sb2FkPXRoaXMuY29uc3Ry''@;'; put 'put ''dWN0TmFtZSgic3ZnIiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX19ZG93bmxvYWRQTkcoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe1VGKCIjZ3JhcGgiKS5yZXNldFpvb20oKSxtX3Quc2F2ZVN2''@;'; put 'put ''Z0FzUG5nKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCBzdmciKSxhLmNvbnN0cnVjdE5hbWUoInBuZyIpKX0pKCl9ZG93bmxvYWRDU1YoKXtsZXQgYT10aGlzLmZsYXRkYXRhO2NvbnN0IGQ9KGRlLHBlKT0+bnVsbD09PXBlPyIiOnBlLGg9T2JqZWN0LmtleXMoYVswXSk7bGV0IGY9''@;'; put 'put ''YS5tYXAoZGU9PmgubWFwKHBlPT5KU09OLnN0cmluZ2lmeShkZVtwZV0sZCkpLmpvaW4oIiwiKSk7Zi51bnNoaWZ0KGguam9pbigiLCIpKTtsZXQgdj1mLmpvaW4oIlxyXG4iKTt2YXIgUz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksVj1uZXcgQmxvYihbdl0se3R5cGU6InRleHQvY3N2''@;'; put 'put ''In0pO2lmKG5hdmlnYXRvci5hcHBWZXJzaW9uLnRvU3RyaW5nKCkuaW5kZXhPZigiLk5FVCIpPjApd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKFYsdGhpcy5jb25zdHJ1Y3ROYW1lKCJjc3YiKSk7ZWxzZXt2YXIgUT13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChWKTtTLmhyZWY9USxT''@;'; put 'put ''LmRvd25sb2FkPXRoaXMuY29uc3RydWN0TmFtZSgiY3N2IiksUy5jbGljaygpLHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKFEpLFMucmVtb3ZlKCl9fWdldERvdFVybCgpe2xldCBkPW5ldyBCbG9iKFt0aGlzLnZpeklucHV0XSx7dHlwZToidGV4dC9wbGFpbiJ9KTtyZXR1cm4gd2luZG93''@;'; put 'put ''LlVSTC5jcmVhdGVPYmplY3RVUkwoZCl9Z2V0RG90QmxvYigpe3JldHVybiBuZXcgQmxvYihbdGhpcy52aXpJbnB1dF0se3R5cGU6InRleHQvcGxhaW4ifSl9ZG93bmxvYWREb3QoKXtpZihuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b1N0cmluZygpLmluZGV4T2YoIi5ORVQiKT4wKXdpbmRvdy5u''@;'; put 'put ''YXZpZ2F0b3IubXNTYXZlQmxvYih0aGlzLmdldERvdEJsb2IoKSx0aGlzLmNvbnN0cnVjdE5hbWUoInR4dCIpKTtlbHNle2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTthLmhyZWY9dGhpcy5nZXREb3RVcmwoKSxhLmRvd25sb2FkPXRoaXMuY29uc3RydWN0TmFtZSgidHh0Iiks''@;'; put 'put ''ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX19c2hvd1N2Zygpe3dpbmRvdy5vcGVuKHRoaXMuZ2V0U1ZHVVJMKCksIl9ibGFuayIpfWJ1aWxkR3JhcGgoYSl7dGhpcy5ldmVudFNlcnZpY2UuY2xvc2VTaWRlYmFyKCks''@;'; put 'put ''dGhpcy5ncmFwaExvYWRpbmc9ITEsdGhpcy5ncmFwaFJlbmRlcmluZz0hMCxzZXRUaW1lb3V0KCgpPT57VUYoIiNncmFwaCIpLnpvb20oITApLmFkZEltYWdlKCJodHRwczovL2RhdGFjb250cm9sbGVyLmlvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzAxL2ZjMS5wbmciLCIzMHB4IiwiMzBw''@;'; put 'put ''eCIpLnJlbmRlckRvdCh0aGlzLnZpeklucHV0LCgpPT57dGhpcy5ncmFwaFJlbmRlcmluZz0hMSx0aGlzLmlkbG9va3VwJiZ0aGlzLm1ha2VHcmFwaExpbmthYmxlKHRoaXMuaWRsb29rdXApLGEmJmEoKX0pfSwxMDApfWNvbnN0cnVjdE5hbWUoYSl7bGV0IGQ9IiIsaD0iIixmPSIiLHY9R190''@;'; put 'put ''KCkuZm9ybWF0KCJZWU1NRERfSEhtbSIpO2lmKHRoaXMubGlicmFyeUxpc3QmJnRoaXMubGlicmFyeUxpc3QubGVuZ3RoKXtsZXQgUz10aGlzLmxpYnJhcnlMaXN0LmZpbmQoVj0+Vi5MSUJSQVJZSUQ9PXRoaXMubGliKTtTJiYoZD1gXyR7Uy5MSUJSQVJZTkFNRX1gKX1pZih0aGlzLnRhYmxl''@;'; put 'put ''c0xpc3QmJnRoaXMudGFibGVzTGlzdC5sZW5ndGgpe2xldCBTPXRoaXMudGFibGVzTGlzdC5maW5kKFY9PlYuVEFCTEVVUkk9PXRoaXMudGFibGUpO1MmJihoPWBfJHtTLlRBQkxFTkFNRX1gKX1pZih0aGlzLmNvbHVtbnNMaXN0JiZ0aGlzLmNvbHVtbnNMaXN0Lmxlbmd0aCl7bGV0IFM9dGhp''@;'; put 'put ''cy5jb2x1bW5zTGlzdC5maW5kKFY9PlYuQ09MVVJJPT10aGlzLmNvbHVtbik7UyYmKGY9YF8ke1MuQ09MTkFNRX1gKX1yZXR1cm5gJHt0aGlzLmRpcmVjdGlvblRleHQoKX0ke2R9JHtofSR7Zn1fJHt2fS4ke2F9YH1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5l''@;'; put 'put ''dyhkfHxsKShKZShBMCksSmUodmEpLEplKE9jKSxKZShKcyksSmUobWQpLEplKERsKSxKZShPMSksSmUoZXUpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC1saW5lYWdlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNs''@;'; put 'put ''czo1OCx2YXJzOjExLGNvbnN0czpbWyJtYXhEZXB0aERvdCIsIiJdLFsibWF4RGVwdGgiLCIiXSxbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsic2VhcmNoVHJlZUlucHV0IiwiIl0sWzMsInNjcm9sbGVkVG9Cb3R0b20iXSxbImNsYXNzIiwic2VhcmNoLW5vZGUiLDQsIm5nSWYiXSxbNCwi''@;'; put 'put ''bmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInctMTAwIHRleHQtY2VudGVyIiw0LCJuZ0lmIl0sWzEsImNvbnRlbnQtYXJlYSJdLFsxLCJjYXJkIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywiY2xyTW9kYWxPcGVuIiwiY2xyTW9kYWxD''@;'; put 'put ''bG9zYWJsZSJdLFsxLCJtb2RhbC10aXRsZSJdLFsxLCJtb2RhbC1ib2R5Il0sWzEsIm1vZGFsLWZvb3RlciIsImQtZmxleCIsImZsZXgtY29sdW1uIl0sWzEsImJpZ2xpbmVhZ2Utcm93IiwibWItMGkiXSxbInR5cGUiLCJudW1iZXIiLCJtaW4iLCIxIiwicGxhY2Vob2xkZXIiLCJNYXggZGVw''@;'; put 'put ''dGggdmFsdWUiLDEsImNsci1pbnB1dCIsIm1heC1kZXB0aC1pbnB1dCJdLFsxLCJtYi0yMCJdLFsxLCJiaWdsaW5lYWdlLXJvdyJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLXByaW1hcnkiLDMsImNsaWNrIl0sWyJjbHJEcm9wZG93blRyaWdnZXIiLCIiLDEsImJ0''@;'; put 'put ''biIsImJ0bi1zbSIsImJ0bi1wcmltYXJ5IiwibXQtMy1uZWdhdGl2ZSIsMywiZGlzYWJsZWQiXSxbInNoYXBlIiwiY2FyZXQgZG93biJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsNCwiY2xySWZPcGVuIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIi''@;'; put 'put ''XSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiTGlicmFyaWVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsi''@;'; put 'put ''c2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbHItZXhwYW5kZWQiLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiw0LCJuZ0lmIl0s''@;'; put 'put ''WzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsInJhY2stc2VydmVyIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCIs''@;'; put 'put ''ImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJUYWJsZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1''@;'; put 'put ''cCIsIm5nTW9kZWwiXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIiwiaWQiXSxbInNoYXBlIiwidGFibGUiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiQ29sdW1ucyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9m''@;'; put 'put ''ZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsxLCJjbHItdHJlZW5vZGUtbGluayIsMywiY2xpY2siXSxbInNoYXBlIiwib2JqZWN0cyJdLFsxLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNtIl0sWzEsIm5vLXRhYmxlLXNlbGVj''@;'; put 'put ''dGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNkcy10ZXh0Iiwic2VjdGlvbiIsMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5IiwibXQtMTAiXSxbImNsYXNzIiwiY2FyZC1oZWFkZXIgZC1mbGV4IGZs''@;'; put 'put ''ZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY2FyZC1ibG9jayJdLFsxLCJmb3JtLWJsb2NrIiwic3ciLCJwb3NpdGlvbi1yZWxhdGl2ZSIsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJsaW5hZ2UtdGl0bGUtd3JhcHBlciIsImQtZmxl''@;'; put 'put ''eCIsImFsaWduLWl0ZW1zLWNlbnRlciIsImZvbnQtd2VpZ2h0LWJvbGQiLCJwb3NpdGlvbi1hYnNvbHV0ZSJdLFsiY2xhc3MiLCJjbHItY29sLW1kLTEyIHRleHQtY2VudGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIiw0LCJuZ0lmIl0sWzMsIm10LTIiLDQsIm5nSWYiXSxbMSwiY2Fy''@;'; put 'put ''ZC1oZWFkZXIiLCJkLWZsZXgiLCJmbGV4LWNvbHVtbiIsImp1c3RpZnktY29udGVudC1jZW50ZXIiXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgcGItMTAiLDQsIm5nSWYiXSxbMSwidGV4dC1jZW50ZXIiLCJwYi0xMCJdLFszLCJyb3V0ZXJMaW5rIl0sWzEsImNsci1jb2wtbWQtMTIiLCJ0ZXh0''@;'; put 'put ''LWNlbnRlciIsImQtZmxleCIsImp1c3RpZnktY29udGVudC1lbmQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1vdXRsaW5lIiwibXItNSIsMywiY2xpY2siXSxbMSwiYnRuLWdyb3VwIiwiZGlyZWN0aW9uIiwiZC1ibG9jayJdLFsxLCJyYWRpbyIsImJ0biIsMywiY2xpY2siXSxb''@;'; put 'put ''InR5cGUiLCJyYWRpbyIsIm5hbWUiLCJidG4tZ3JvdXAtZGVtby1yYWRpb3MiLDMsImNoZWNrZWQiXSxbMSwibXItMTAiXSxbImNsckRyb3Bkb3duVHJpZ2dlciIsIiIsMSwiYnRuIiwiYnRuLWluZm8tb3V0bGluZSIsMywiZGlzYWJsZWQiXSxbImNsYXNzIiwiZC1mbGV4IGFsaWduLWl0ZW1z''@;'; put 'put ''LWNlbnRlciIsNCwibmdJZiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJjbGljayJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJjbGljayIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJhbGlnbi1pdGVtcy1jZW50ZXIiXSxbInR5cGUi''@;'; put 'put ''LCJjaGVja2JveCIsImNsckNoZWNrYm94IiwiIiwibmFtZSIsInJlZnJlc2hDYWNoZSIsMywiY2hhbmdlIiwibmdNb2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMSwidGV4dC1jZW50ZXIiXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJwb3NpdGlvbi1yZWxhdGl2ZSIs''@;'; put 'put ''NCwibmdJZiJdLFsxLCJzcGlubmVyIl0sWzEsInBvc2l0aW9uLXJlbGF0aXZlIl0sWzEsImdyYXBoLXJlbmRlci1zcGlubmVyIl0sWyJjbGFzcyIsInNwaW5uZXIgc3Bpbm5lci1zbSIsNCwibmdJZiJdLFsiaWQiLCJncmFwaCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpe2lmKDEmZCl7Y29u''@;'; put 'put ''c3QgZj1TbigpO2dlKDAsImFwcC1zaWRlYmFyIiw0KSxJdCgic2Nyb2xsZWRUb0JvdHRvbSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5sb2FkTW9yZUxpYnJhcmllcygpKX0pLGdlKDEsImNsci10cmVlIiksZ3QoMixiX3QsNiwzLCJjbHItdHJlZS1ub2RlIiw1KSgzLEFfdCwyLDEs''@;'; put 'put ''Im5nLWNvbnRhaW5lciIsNiksbWUoKSxndCg0LERfdCwzLDAsImRpdiIsNyksbWUoKSxnZSg1LCJkaXYiLDgpKDYsImRpdiIsOSksZ3QoNyxJX3QsNCwwLCJkaXYiLDEwKSg4LFpfdCw4LDQsIm5nLWNvbnRhaW5lciIsMTEpLG1lKCkoKSxnZSg5LCJjbHItbW9kYWwiLDEyKSgxMCwiaDMiLDEz''@;'; put 'put ''KSxQZSgxMSwiTGltaXQgRGVwdGgiKSxtZSgpLGdlKDEyLCJkaXYiLDE0KSgxMywicCIpLFBlKDE0LCJFbnRlciB0aGUgZGVwdGggbnVtYmVyIHlvdSB3b3VsZCBsaWtlIHRvIGxpbWl0IERPVCByZW5kZXJpbmcgdG86IiksbWUoKSgpLGdlKDE1LCJkaXYiLDE1KSgxNiwiZGl2IiwxNiksWXQo''@;'; put 'put ''MTcsImlucHV0IiwxNywwKSxtZSgpLGdlKDE5LCJjbHItY29udHJvbC1oZWxwZXIiLDE4KSxQZSgyMCwiVG8gcmVuZGVyIHdpdGggdW5saW1pdGVkIGRlcHRoLCBsZWF2ZSB0aGUgaW5wdXQgZW1wdHkiKSxtZSgpLGdlKDIxLCJkaXYiLDE5KSgyMiwiYnV0dG9uIiwyMCksSXQoImNsaWNrIixm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLmxpbWl0RG90RGVwdGg9ITEpfSksUGUoMjMsIiBDYW5jZWwgIiksbWUoKSxnZSgyNCwiYnV0dG9uIiwyMCksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGYpO2NvbnN0IFM9R2koMTgpO3JldHVybiBoLnJlc3VibWl0V2l0aE1heERlcHRoKFMu''@;'; put 'put ''dmFsdWUpLGJ0KGgubGltaXREb3REZXB0aD0hMSl9KSxQZSgyNSwiIFJlc3VibWl0ICIpLG1lKCkoKSgpKCksZ2UoMjYsImNsci1tb2RhbCIsMTIpKDI3LCJoMyIsMTMpLFBlKDI4LCJXYXJuaW5nIiksbWUoKSxnZSgyOSwiZGl2IiwxNCkoMzAsInAiKSxQZSgzMSksbWUoKSgpLGdlKDMyLCJk''@;'; put 'put ''aXYiLDE1KSgzMywiZGl2IiwxOSkoMzQsInAiKSxQZSgzNSwiUmVuZGVyIGFueXdheSAodGhpcyBtYXkgdGFrZSBhIGxvbmcgdGltZSkiKSxtZSgpLGdlKDM2LCJidXR0b24iLDIwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguY29udGludWVSZW5kZXJpbmdHcmFw''@;'; put 'put ''aCgpKX0pLFBlKDM3LCIgUmVuZGVyICIpLG1lKCkoKSxnZSgzOCwiZGl2IiwxOSkoMzksInAiKSxQZSg0MCwiRG93bmxvYWQgdGhlIHJlc3VsdCAoUE5HICYgU1ZHIHJlcXVpcmUgcmVuZGVyaW5nKSIpLG1lKCksZ2UoNDEsImNsci1kcm9wZG93biIpKDQyLCJidXR0b24iLDIxKSxQZSg0Mywi''@;'; put 'put ''IERvd25sb2FkICIpLFl0KDQ0LCJjbHItaWNvbiIsMjIpLG1lKCksZ3QoNDUsV190LDYsMSwiY2xyLWRyb3Bkb3duLW1lbnUiLDIzKSxtZSgpKCksZ2UoNDYsImRpdiIsMTkpKDQ3LCJwIiksUGUoNDgsIlJlc3VibWl0IHdpdGggYSBtYXgtZGVwdGggKHNwZWNpZnkgZGVwdGgpIiksbWUoKSxZ''@;'; put 'put ''dCg0OSwiaW5wdXQiLDE3LDEpLGdlKDUxLCJidXR0b24iLDIwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoZik7Y29uc3QgUz1HaSg1MCk7cmV0dXJuIGJ0KGgucmVzdWJtaXRXaXRoTWF4RGVwdGgoUy52YWx1ZSkpfSksUGUoNTIsIiBSZXN1Ym1pdCAiKSxtZSgpKCksZ2UoNTMsImRpdiIs''@;'; put 'put ''MTkpKDU0LCJwIiksUGUoNTUsIkNhbmNlbCB0aGlzIHN1Ym1pc3Npb24iKSxtZSgpLGdlKDU2LCJidXR0b24iLDIwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguY2FuY2VsUmVuZGVyaW5nR3JhcGgoKSl9KSxQZSg1NywiIENhbmNlbCAiKSxtZSgpKCkoKSgpfTIm''@;'; put 'put ''ZCYmKF9lKDIpLFJlKCJuZ0lmIixoLmxpYnJhcnlMaXN0KSxfZSgpLFJlKCJuZ0Zvck9mIixoLmxpYnJhcnlMaXN0KSxfZSgpLFJlKCJuZ0lmIixoLmxpYnJhcmllc1BhZ2luZyksX2UoMyksUmUoIm5nSWYiLCFoLmNvbHVtbiYmIWgudGFibGUpLF9lKCksUmUoIm5nSWYiLGguY29sdW1ufHxo''@;'; put 'put ''LnRhYmxlKSxfZSgpLFJlKCJjbHJNb2RhbE9wZW4iLGgubGltaXREb3REZXB0aCkoImNsck1vZGFsQ2xvc2FibGUiLCExKSxfZSgxNyksUmUoImNsck1vZGFsT3BlbiIsbnVsbCE9PWgubGFyZ2VEb3RGaWxlTGluZXMpKCJjbHJNb2RhbENsb3NhYmxlIiwhMSksX2UoNSksbXIoIiBUaGUgZ2Vu''@;'; put 'put ''ZXJhdGVkIGRvdCBmaWxlIGhhcyAiLGgubGFyZ2VEb3RGaWxlTGluZXMsIiBsaW5lcy4gUmVuZGVyaW5nIG1heSB0YWtlIGEgbG9uZyB0aW1lLCBob3cgd291bGQgeW91IGxpa2UgdG8gcHJvY2VlZD8gIiksX2UoMTEpLFJlKCJkaXNhYmxlZCIsIWguY29sdW1uJiYhaC50YWJsZSkpfSxkZXBl''@;'; put 'put ''bmRlbmNpZXM6W1ZzLCRpLGswLHVsLFEwLF9hLHVhLEFkLEgxLHk0LFlhLFBjLGl1LGwwLGtoLCRzLGdSLGExLHMxLEVkLHc0LEk4LFI4LEpfLHNwLG9wXSxzdHlsZXM6WyIudG9nZ2xlLXN3aXRjaFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFt0eXBlPWNoZWNrYm94XVtfbmdjb250ZW50''@;'; put 'put ''LSVDT01QJV06Y2hlY2tlZCArIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMzMTQzNTE7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xNXMgZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixi''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yfSNncmFwaFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OmNhbGMoMTAwdmggLSAxOTVweCk7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNlNGU0ZTQ7bWFyZ2luLXRvcDox''@;'; put 'put ''MHB4fS5zZWxlY3Rpb24td3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTttYXgtd2lkdGg6NjcwcHh9LmNvbHVtbi1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Q4ZTNlOTtjb2xvcjojMDAwfS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e3BhZGRpbmc6LjVyZW0haW1wb3J0YW50fS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6Y2FsYygxMDB2aCAtIDEyMHB4KX0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRl''@;'; put 'put ''bnQtJUNPTVAlXSAgIC5jYXJkLWJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41cmVtIC4zNXJlbSFpbXBvcnRhbnR9Y2xyLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0uYnRuLWdyb3Vw''@;'; put 'put ''LmRpcmVjdGlvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uZ3JhcGgtcmVuZGVyLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoxMHB4fS5iaWdsaW5lYWdlLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHh9Lm1vZGFsLWZvb3Rlcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MH0ubGluZWFnZS10aXRsZS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OjEycHh9Lm1heC1kZXB0aC1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX1AbWVkaWEgKG1heC13aWR0aDog''@;'; put 'put ''NzY4cHgpey50b2dnbGUtc3dpdGNoLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbToyMHB4fX0iXX0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgJF90PSgpPT5bMTAsMjAsNTAsMTAwXTtmdW5jdGlvbiBxX3QobCxjKXtpZigxJmwmJihnZSgwLCJvcHRpb24iLDE0KSxQ''@;'; put 'put ''ZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7ejYoInZhbHVlIixhKSxfZSgpLG1yKCIgIixhLCIgIil9fWZ1bmN0aW9uIEtfdChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDIwKX1mdW5jdGlvbiBYX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNv''@;'; put 'put ''biIsMjEpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVybiBoLm1ldGFEYXRhU2VhcmNoPSIiLGJ0KGgubWV0YUxpc3RPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIEpfdChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5v''@;'; put 'put ''ZGUiLDE1KSgxLCJkaXYiLDE2KSgyLCJpbnB1dCIsMTcsMCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5tZXRhRGF0YVNlYXJjaCxoKXx8KGYubWV0YURhdGFTZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkubWV0YUxpc3RPbkZpbHRlcigpKX0pLG1lKCksZ3QoNCxLX3QsMSwwLCJjbHItaWNvbiIsMTgpKDUsWF90LDEsMCwiY2xyLWljb24iLDE5KSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPUdpKDMpLGQ9TmUoKTtfZSgyKSxZcigibmdNb2RlbCIsZC5tZXRh''@;'; put 'put ''RGF0YVNlYXJjaCksX2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBRX3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiwyMyksSXQoImNsaWNrIixmdW5jdGlvbiho''@;'; put 'put ''KXtfdChhKTtjb25zdCBmPU5lKCkuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gYnQodi50cmVlTm9kZUNsaWNrZWQoaCxmLHYubWV0YURhdGFMaXN0KSl9KSxXcigiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYu''@;'; put 'put ''ZXhwYW5kZWQsaCl8fChmLmV4cGFuZGVkPWgpLGJ0KGgpfSksZ2UoMSwicCIsMjQpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCkuJGltcGxpY2l0LGY9TmUoKTtyZXR1cm4gZi5tZXRhRGF0YUlkPWguSUQsYnQoZi5tZXRhRGF0YU9uQ2xpY2soZi5tZXRhRGF0YUlk''@;'; put 'put ''LGgpKX0pLFl0KDIsImNsci1pY29uIiwyNSksUGUoMyksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtZcigiY2xyRXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJMb2FkaW5nIixhLmxvYWRpbmdUYWJsZXMmJiFhLnRhYmxlcyksX2UoMyksbXIoIiAiLGEuSUQsIiAi''@;'; put 'put ''KX19ZnVuY3Rpb24gZWJ0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxRX3QsNCwzLCJjbHItdHJlZS1ub2RlIiwyMiksQnIoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKCksUmUoIm5nSWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIHRidChsLGMpezEmbCYmKGdlKDAsImRpdiIsMjYp''@;'; put 'put ''LFl0KDEsImNsci1pY29uIiwyNyksZ2UoMiwicCIsMjgpLFBlKDMsIiBQbGVhc2Ugc2VsZWN0IGEgdHlwZSAiKSxtZSgpKCkpfWZ1bmN0aW9uIG5idChsLGMpezEmbCYmKGdlKDAsImg0IiksUGUoMSwiTG9hZGluZyBtZXRhZGF0YSB0eXBlcyIpLG1lKCkpfWZ1bmN0aW9uIHJidChsLGMpezEm''@;'; put 'put ''bCYmKGdlKDAsImg0IiksUGUoMSwiTG9hZGluZyBtZXRhZGF0YSBvYmplY3RzIiksbWUoKSl9ZnVuY3Rpb24gaWJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiksZ3QoMSxuYnQsMiwwLCJoNCIsMzEpKDIscmJ0LDIsMCwiaDQiLDMxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxS''@;'; put 'put ''ZSgibmdJZiIsYS5tZXRhdHlwZXNMb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIiwhYS5tZXRhdHlwZXNMb2FkaW5nKX19ZnVuY3Rpb24gb2J0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyOSkoMSwic3BhbiIsMzApLFBlKDIsIiBMb2FkaW5nLi4uICIpLG1lKCksZ3QoMyxpYnQsMywyLCJkaXYi''@;'; put 'put ''LDMxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgzKSxSZSgibmdJZiIsYS5sb2FkaW5nKX19ZnVuY3Rpb24gc2J0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2IiwzOCkoMSwiaW5wdXQiLDM5LDEpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtj''@;'; put 'put ''b25zdCBmPU5lKDIpO3JldHVybiBHcihmLm1ldGFPYmplY3RTZWFyY2gsaCl8fChmLm1ldGFPYmplY3RTZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDIpLm1ldGFPYmplY3RPbkZpbHRlcigpKX0pLG1lKCkoKX1pZigyJmwpe2NvbnN0''@;'; put 'put ''IGE9TmUoMik7X2UoKSxZcigibmdNb2RlbCIsYS5tZXRhT2JqZWN0U2VhcmNoKX19ZnVuY3Rpb24gYWJ0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsNDMpfWZ1bmN0aW9uIGxidChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDI1KX1mdW5jdGlvbiBjYnQobCxjKXtpZigxJmwmJihnZSgw''@;'; put 'put ''LCJwIiw1NCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O19lKCksbXIoIiAiLGEuVVJJLCIgIil9fWZ1bmN0aW9uIHVidChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10cmVlLW5vZGUiLDQ5KSgxLCJkaXYiLDUwKSgyLCJkaXYiKSxndCgzLGFidCwxLDAsImNsci1p''@;'; put 'put ''Y29uIiw1MSkoNCxsYnQsMSwwLCJjbHItaWNvbiIsNTIpLFBlKDUpLG1lKCksZ3QoNixjYnQsMiwxLCJwIiw1MyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUoImNsckV4cGFuZGFibGUiLCEwKSxfZSgpLHByKCJvYmplY3QtaGVhZGVyIiwhYS5jb3VudCksX2UoMiksUmUo''@;'; put 'put ''Im5nSWYiLCFhLmNvdW50KSxfZSgpLFJlKCJuZ0lmIixhLmNvdW50KSxfZSgpLG1yKCIgIixhLmRpc3BsYXksIiAiKSxfZSgpLFJlKCJuZ0lmIiwhYS5jb3VudCl9fWZ1bmN0aW9uIGRidChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10cmVlIiw0NyksZ3QoMSx1YnQsNyw3LCJjbHItdHJlZS1u''@;'; put 'put ''b2RlIiw0OCksZ2EoMiwiYXN5bmMiKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoNik7UmUoImNsckxhenkiLCEwKSxfZSgpLFJlKCJjbHJSZWN1cnNpdmVGb3JPZiIsVWwoMiwzLGEucm9vdCQpKSgiY2xyUmVjdXJzaXZlRm9yR2V0Q2hpbGRyZW4iLGEuZ2V0Q2hpbGRyZW4pfX1mdW5jdGlvbiBo''@;'; put 'put ''YnQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItYWNjb3JkaW9uLWNvbnRlbnQiKSxndCgxLGRidCwzLDUsImNsci10cmVlIiw0NiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDUpO19lKCksUmUoIm5nSWYiLGEuc2hvd0FjYyl9fWZ1bmN0aW9uIGZidChsLGMpe2lmKDEmbCl7Y29uc3QgYT1Tbigp''@;'; put 'put ''O2dlKDAsImNsci1hY2NvcmRpb24tcGFuZWwiLDQyKSxJdCgiY2xyQWNjb3JkaW9uUGFuZWxPcGVuQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuJGltcGxpY2l0LHY9TmUoMyk7cmV0dXJuIGJ0KGg/di5wYW5lbENoYW5nZShoLGYpOiIiKX0pLGdlKDEsImNsci1hY2Nv''@;'; put 'put ''cmRpb24tdGl0bGUiKSxZdCgyLCJjbHItaWNvbiIsNDMpLFBlKDMpLGdlKDQsInAiLDQ0KSxQZSg1KSxtZSgpKCksZ3QoNixoYnQsMiwxLCJjbHItYWNjb3JkaW9uLWNvbnRlbnQiLDQ1KSxtZSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgzKSxtcigiICIsYS5OQU1FLCIg''@;'; put 'put ''IiksX2UoMiksbHIoYS5JRCl9fWZ1bmN0aW9uIHBidChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsZmJ0LDcsMiwiY2xyLWFjY29yZGlvbi1wYW5lbCIsNDEpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwhYS5oaWRkZW4pfX1mdW5jdGlvbiBnYnQobCxj''@;'; put 'put ''KXtpZigxJmwmJihnZSgwLCJkaXYiLDQwKSgxLCJjbHItYWNjb3JkaW9uIiksZ3QoMixwYnQsMiwxLCJuZy1jb250YWluZXIiLDcpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDIpLFJlKCJuZ0Zvck9mIixhLm1ldGFPYmplY3RTaG93TGlzdCl9fWZ1bmN0aW9uIG1idChsLGMpezEm''@;'; put 'put ''bCYmWXQoMCwiY2xyLWljb24iLDQzKX1mdW5jdGlvbiB2YnQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwyNSl9ZnVuY3Rpb24gX2J0KGwsYyl7aWYoMSZsJiYoZ2UoMCwicCIsNTQpLFBlKDEpLG1lKCkpLDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtfZSgpLG1yKCIgIixhLlVSSSwi''@;'; put 'put ''ICIpfX1mdW5jdGlvbiBiYnQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdHJlZS1ub2RlIiw0OSkoMSwiZGl2Iiw1MCkoMiwiZGl2IiksZ3QoMyxtYnQsMSwwLCJjbHItaWNvbiIsNTEpKDQsdmJ0LDEsMCwiY2xyLWljb24iLDUyKSxQZSg1KSxtZSgpLGd0KDYsX2J0LDIsMSwicCIsNTMpLG1l''@;'; put 'put ''KCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O1JlKCJjbHJFeHBhbmRhYmxlIiwhMCksX2UoKSxwcigib2JqZWN0LWhlYWRlciIsIWEuY291bnQpLF9lKDIpLFJlKCJuZ0lmIiwhYS5jb3VudCksX2UoKSxSZSgibmdJZiIsYS5jb3VudCksX2UoKSxtcigiICIsYS5kaXNwbGF5LCIgIiks''@;'; put 'put ''X2UoKSxSZSgibmdJZiIsIWEuY291bnQpfX1mdW5jdGlvbiB5YnQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItdHJlZSIsNDcpLGd0KDEsYmJ0LDcsNywiY2xyLXRyZWUtbm9kZSIsNDgpLGdhKDIsImFzeW5jIiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDQpO1JlKCJjbHJMYXp5IiwhMCksX2Uo''@;'; put 'put ''KSxSZSgiY2xyUmVjdXJzaXZlRm9yT2YiLFVsKDIsMyxhLnJvb3QkKSkoImNsclJlY3Vyc2l2ZUZvckdldENoaWxkcmVuIixhLmdldENoaWxkcmVuKX19ZnVuY3Rpb24gd2J0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ2UoMSwiZGl2Iiw1NSksWXQoMiwiY2xyLWljb24iLDQzKSxnZSgzLCJkaXYi''@;'; put 'put ''LDU2KSg0LCJwIiw1NyksUGUoNSksbWUoKSxnZSg2LCJwIiw1OCksUGUoNyksbWUoKSgpKCksZ3QoOCx5YnQsMyw1LCJjbHItdHJlZSIsNDYpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdCxkPU5lKDMpO19lKDUpLG1yKCIgIixhLk5BTUUsIiAiKSxfZSgyKSxtcigiICIsYS5JRCwi''@;'; put 'put ''ICIpLF9lKCksUmUoIm5nSWYiLGQuc2hvd0FjYyl9fWZ1bmN0aW9uIENidChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsNDApLGd0KDEsd2J0LDksMywibmctY29udGFpbmVyIiw3KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxSZSgibmdGb3JPZiIsYS5tZXRhT2JqZWN0U2hvd0xp''@;'; put 'put ''c3QpfX1mdW5jdGlvbiBTYnQobCxjKXtpZigxJmwmJihnZSgwLCJjbHItZGctcm93IikoMSwiY2xyLWRnLWNlbGwiKSxQZSgyKSxtZSgpLGdlKDMsImNsci1kZy1jZWxsIiksUGUoNCksbWUoKSxnZSg1LCJjbHItZGctY2VsbCIpLFBlKDYpLG1lKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxp''@;'; put 'put ''Y2l0O19lKDIpLGxyKGEuVFlQRSksX2UoMiksbHIoYS5OQU1FKSxfZSgyKSxscihhLlZBTFVFKX19ZnVuY3Rpb24gTWJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLWRhdGFncmlkIiw1OSkoMSwiY2xyLWRnLWNvbHVtbiIpLFBlKDIsIiBUWVBFICIpLFl0KDMsImNsci1kZy1zdHJpbmctZmls''@;'; put 'put ''dGVyIiw2MCksbWUoKSxnZSg0LCJjbHItZGctY29sdW1uIiksUGUoNSwiIE5BTUUgIiksWXQoNiwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDYwKSxtZSgpLGdlKDcsImNsci1kZy1jb2x1bW4iKSxQZSg4LCIgVkFMVUUgIiksWXQoOSwiY2xyLWRnLXN0cmluZy1maWx0ZXIiLDYwKSxtZSgpLGd0''@;'; put 'put ''KDEwLFNidCw3LDMsImNsci1kZy1yb3ciLDYxKSxnZSgxMSwiY2xyLWRnLWZvb3RlciIpKDEyLCJjbHItZGctcGFnaW5hdGlvbiIsNjIsMikoMTQsImNsci1kZy1wYWdlLXNpemUiLDYzKSxQZSgxNSwiQXR0cmlidXRlcyBwZXIgcGFnZSIpLG1lKCksUGUoMTYpLG1lKCkoKSgpKSwyJmwpe2Nv''@;'; put 'put ''bnN0IGE9R2koMTMpLGQ9TmUoMik7X2UoMyksUmUoImNsckRnU3RyaW5nRmlsdGVyIixkLnR5cGVGaWx0ZXIpLF9lKDMpLFJlKCJjbHJEZ1N0cmluZ0ZpbHRlciIsZC5uYW1lRmlsdGVyKSxfZSgzKSxSZSgiY2xyRGdTdHJpbmdGaWx0ZXIiLGQudmFsdWVGaWx0ZXIpLF9lKCksUmUoImNsckRn''@;'; put 'put ''SXRlbXNPZiIsZC5tZXRhT2JqZWN0QXR0cmlidXRlcyksX2UoMiksUmUoImNsckRnUGFnZVNpemUiLDEwKSxfZSgyKSxSZSgiY2xyUGFnZVNpemVPcHRpb25zIixsYSg5LCRfdCkpLF9lKDIpLEgyKCIgIixhLmZpcnN0SXRlbSsxLCIgLSAiLGEubGFzdEl0ZW0rMSwiIG9mICIsYS50b3RhbEl0''@;'; put 'put ''ZW1zLCIgQXR0cmlidXRlcyAiKX19ZnVuY3Rpb24geGJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwzMikoMSwiZGl2IiwzMyksZ3QoMixzYnQsMywxLCJkaXYiLDM0KSxZdCgzLCJiciIpLGd0KDQsZ2J0LDMsMSwiZGl2IiwzNSkoNSxDYnQsMiwxLCJkaXYiLDM1KSxtZSgpLGdlKDYsImRp''@;'; put 'put ''diIsMzYpKDcsImgzIiksUGUoOCksbWUoKSxndCg5LE1idCwxNywxMCwiY2xyLWRhdGFncmlkIiwzNyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgyKSxSZSgibmdJZiIsYS5tZXRhT2JqZWN0TGlzdCYmIWEub2JqZWN0Um91dGUpLF9lKDIpLFJlKCJuZ0lmIiwhYS5vYmplY3RWaWV3''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIixhLm9iamVjdFZpZXcpLF9lKDMpLGxyKGEuYXNzb09iamVjdFNlbGVjdGVkKSxfZSgpLFJlKCJuZ0lmIixhLnNob3dUYWJsZSl9fWxldCBKSj0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKGEsZCxoLGYsdixTKXt0aGlzLmV2ZW50U2VydmljZT1hLHRoaXMuc2Fz''@;'; put 'put ''U2VydmljZT1kLHRoaXMuaGVscGVyU2VydmljZT1oLHRoaXMubG9jYXRpb249Zix0aGlzLnJvdXRlcj12LHRoaXMucm91dGU9Uyx0aGlzLm1ldGFEYXRhU2VhcmNoPSIiLHRoaXMubWV0YU9iamVjdFNlYXJjaD0iIix0aGlzLm1ldGFPYmplY3RBc3NvY2lhdGlvbnM9W10sdGhpcy5tZXRhT2Jq''@;'; put 'put ''ZWN0QXR0cmlidXRlcz1bXSx0aGlzLnNob3dUYWJsZT0hMSx0aGlzLnNob3dBY2M9ITEsdGhpcy5tZXRhRGF0YUlkPSIiLHRoaXMubG9hZGluZz0hMCx0aGlzLm1ldGF0eXBlc0xvYWRpbmc9ITAsdGhpcy5tZXRhT2JqZWN0U2l6ZT0yMDAsdGhpcy5hc3NvVHlwZVNlbGVjdGVkPSIiLHRoaXMu''@;'; put 'put ''YXNzb09iamVjdFNlbGVjdGVkPSIiLHRoaXMucmVwb3NpdG9yeT0iIix0aGlzLm9iamVjdFJvdXRlPSExLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5vYmplY3RWaWV3PSExLHRoaXMuZ2V0Q2hpbGRyZW49Vj0+Vi5jb3VudD9PbyhWLmRldGFpbHMpOnRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJt''@;'; put 'put ''ZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOlYuQVNTT0NVUkl9XX0pLnRoZW4oZGU9Pnt0aGlzLnNob3dUYWJsZT0hMCx0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPWRlLmFkYXB0ZXJSZXNwb25zZS5hdHRyaWJ1dGVzLHRoaXMuYXNzb09iamVjdFNl''@;'; put 'put ''bGVjdGVkPVYuTkFNRTtsZXQgcGU9dGhpcy5yb3V0ZXIudXJsO3JldHVybiB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLm9iamVjdFJvdXRlP3BlLnNsaWNlKDAscGUubGFzdEluZGV4T2YoIm9iamVjdCIpKSsib2JqZWN0LyIrVi5BU1NPQ1VSSS5zbGljZSgxK1YuQVNTT0NVUkku''@;'; put 'put ''aW5kZXhPZigiXFwiKSk6cGUrIi9vYmplY3QvIitWLkFTU09DVVJJLnNsaWNlKDErVi5BU1NPQ1VSSS5pbmRleE9mKCJcXCIpKSksdGhpcy5nZXRBc3Nvc2lhdGlvbnNDb3VudChkZS5hZGFwdGVyUmVzcG9uc2UuYXNzb2NpYXRpb25zKX0pLHRoaXMuZGVib3VuY2U9ITF9bmdPbkluaXQoKXtI''@;'; put 'put ''bi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy9tZXRhZGF0YSIsdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCIvdmlldy9tZXRhZGF0YS9vYmplY3QvIikmJih0aGlzLm9iamVjdFJvdXRlPSEwLHRoaXMub2JqZWN0Vmlldz0hMCksdGhpcy5wYWdlU2l6ZT01LEhuLm1ldGFkYXRhLm1l''@;'; put 'put ''dGFEYXRhTGlzdCYmSG4ubWV0YWRhdGEubWV0YVJlcG9zaXRvcmllcyYmIXRoaXMub2JqZWN0Um91dGU/KHRoaXMubWV0YURhdGFMaXN0PUhuLm1ldGFkYXRhLm1ldGFEYXRhTGlzdCx0aGlzLnJlcG9zaXRvcmllcz1Ibi5tZXRhZGF0YS5tZXRhUmVwb3NpdG9yaWVzLHRoaXMucmVwb3NpdG9y''@;'; put 'put ''eT1Ibi5tZXRhZGF0YS5zZWxlY3RlZFJlcG9zaXRvcnksdGhpcy5sb2FkaW5nPSExLHRoaXMubWV0YXR5cGVzTG9hZGluZz0hMSx0aGlzLm1ldGFEYXRhU2VhcmNoPUhuLm1ldGFkYXRhLm1ldGFEYXRhU2VhcmNoKToodGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoIm1ldGFuYXYvbWV0YXR5cGVz''@;'; put 'put ''IixudWxsKS50aGVuKGE9Pnt0aGlzLm1ldGFEYXRhTGlzdD1hLmFkYXB0ZXJSZXNwb25zZS50eXBlcyxIbi5tZXRhZGF0YS5tZXRhRGF0YUxpc3Q9dGhpcy5tZXRhRGF0YUxpc3QsdGhpcy5sb2FkaW5nPSExLHRoaXMubWV0YXR5cGVzTG9hZGluZz0hMX0pLHRoaXMuc2FzU2VydmljZS5yZXF1''@;'; put 'put ''ZXN0KCJtZXRhbmF2L21ldGFyZXBvcyIsbnVsbCkudGhlbihhPT57bGV0IGQ9ITE7dGhpcy5yZXBvc2l0b3JpZXM9W107Zm9yKGxldCBoPTA7aDxhLmFkYXB0ZXJSZXNwb25zZS5vdXRyZXBvcy5sZW5ndGg7aCsrKXRoaXMucmVwb3NpdG9yaWVzLnB1c2goYS5hZGFwdGVyUmVzcG9uc2Uub3V0''@;'; put 'put ''cmVwb3NbaF0uTkFNRSksIkZvdW5kYXRpb24iPT09YS5hZGFwdGVyUmVzcG9uc2Uub3V0cmVwb3NbaF0uTkFNRSYmKGQ9ITApO2lmKHRoaXMucmVwb3NpdG9yeT1kPyJGb3VuZGF0aW9uIjphLmFkYXB0ZXJSZXNwb25zZS5vdXRyZXBvc1swXS5OQU1FLEhuLm1ldGFkYXRhLm1ldGFSZXBvc2l0''@;'; put 'put ''b3JpZXM9dGhpcy5yZXBvc2l0b3JpZXMsSG4ubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5PXRoaXMucmVwb3NpdG9yeSx0aGlzLm9iamVjdFJvdXRlKXt0aGlzLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSx0aGlzLnNob3dEYXRhPSEwO2xldCBoPSIiLGY9dGhpcy5yb3V0ZS5zbmFw''@;'; put 'put ''c2hvdC5wYXJhbXMub2JqZWN0SUQ7dGhpcy5tZXRhT2JqZWN0TGlzdD1bXSx0aGlzLm1ldGFPYmplY3RMaXN0LnB1c2goe0lEOmYsTkFNRTpofSksdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRhT2JqZWN0TGlzdCx0aGlzLm1ldGFPYmplY3RPbkNsaWNrKHRoaXMubWV0YU9iamVj''@;'; put 'put ''dFNob3dMaXN0WzBdLklELHRoaXMubWV0YU9iamVjdFNob3dMaXN0WzBdKX19KSl9dHJlZU5vZGVDbGlja2VkKGEsZCxoKXsiQ29sbGFwc2UiPT09YS50YXJnZXQudGl0bGUmJnRoaXMuY29sbGFwc2VUcmVlSXRlbXMoaCxkKX1jb2xsYXBzZVRyZWVJdGVtcyhhLGQpe2EuZm9yRWFjaChoPT57''@;'; put 'put ''SlNPTi5zdHJpbmdpZnkoaCkhPT1KU09OLnN0cmluZ2lmeShkKSYmKGguZXhwYW5kZWQ9ITEpfSl9bWV0YURhdGFPbkNsaWNrKGEsZCl7dGhpcy5vYmplY3RWaWV3PSExLHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCIvdmlldy9tZXRhZGF0YSIpLHRoaXMuc2hvd0RhdGE9ITEsdGhpcy5s''@;'; put 'put ''b2FkaW5nPSEwLHRoaXMuc2VsZWN0bWV0YURhdGEoYSxkKX1tZXRhT2JqZWN0T25DbGljayhhLGQpe3RoaXMuYXNzb09iamVjdFNlbGVjdGVkPSIgLiAiLHRoaXMuc2hvd0FjYz0hMSx0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2VsZWN0bWV0YU9iamVjdChhLGQpfXNlbGVj''@;'; put 'put ''dG1ldGFEYXRhKGEsZCl7dmFyIGg9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXtoLnNhc1NlcnZpY2UucmVxdWVzdCgibWV0YW5hdi9tZXRhb2JqZWN0cyIse1NBU0NvbnRyb2xUYWJsZTpbe21ldGF0eXBlOmEscmVwbzpoLnJlcG9zaXRvcnl9XX0pLnRoZW4odj0+e2gubWV0YU9iamVjdExp''@;'; put 'put ''c3Q9di5hZGFwdGVyUmVzcG9uc2Uub2JqZWN0cyxoLmdldE1ldGFPYmplY3RBdHRyaWJ1dGVzKGgubWV0YU9iamVjdFNpemUpLGgubG9hZGluZz0hMSxoLmFzc29UeXBlU2VsZWN0ZWQ9YSxoLmV2ZW50U2VydmljZS5jbG9zZVNpZGViYXIoKSxoLnNob3dEYXRhPSEwfSl9KSgpfXNlbGVjdG1l''@;'; put 'put ''dGFPYmplY3QoYSxkKXt2YXIgaD10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2guc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOmF9XX0pLnRoZW4odj0+e2gubWV0YU9iamVjdEFzc29jaWF0aW9ucz12LmFkYXB0''@;'; put 'put ''ZXJSZXNwb25zZS5hc3NvY2lhdGlvbnMsaC5yb290JD1PbyhoLmdldEFzc29zaWF0aW9uc0NvdW50KHYuYWRhcHRlclJlc3BvbnNlLmFzc29jaWF0aW9ucykpLGguc2hvd0FjYz0hMCxoLnNob3dUYWJsZT0hMDtsZXQgUz12LmFkYXB0ZXJSZXNwb25zZS5hdHRyaWJ1dGVzLmZpbmQoUT0+Ik5h''@;'; put 'put ''bWUiPT09US5OQU1FKS5WQUxVRTtoLmFzc29PYmplY3RTZWxlY3RlZD1TLGQuTkFNRT1TO2xldCBWPWgucm91dGVyLnVybDtoLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShoLm9iamVjdFJvdXRlP1Yuc2xpY2UoMCxWLmxhc3RJbmRleE9mKCJvYmplY3QiKSkrIm9iamVjdC8iK2Euc2xpY2UoMSth''@;'; put 'put ''LmluZGV4T2YoIlxcIikpOlYrIi9vYmplY3QvIithLnNsaWNlKDErYS5pbmRleE9mKCJcXCIpKSksaC5tZXRhT2JqZWN0QXR0cmlidXRlcz12LmFkYXB0ZXJSZXNwb25zZS5hdHRyaWJ1dGVzfSl9KSgpfXNlbGVjdEFzc29zaWF0aW9uc0RldGFpbHMoYSxkKXt2YXIgaD10aGlzO3JldHVybiBZ''@;'; put 'put ''KGZ1bmN0aW9uKigpe2guc2FzU2VydmljZS5yZXF1ZXN0KCJtZXRhbmF2L21ldGFkZXRhaWxzIix7U0FTQ29udHJvbFRhYmxlOlt7b2JqZWN0dXJpOmF9XX0pLnRoZW4odj0+e2gubWV0YU9iamVjdEF0dHJpYnV0ZXM9di5hZGFwdGVyUmVzcG9uc2UuYXR0cmlidXRlcyxoLnNob3dUYWJsZT0h''@;'; put 'put ''MH0pfSkoKX1nZXRBc3Nvc2lhdGlvbnNDb3VudChhKXtsZXQgZD1uZXcgTWFwO2ZvcihsZXQgZiBvZiBhKXtkLmhhcyhmLkFTU09DKXx8ZC5zZXQoZi5BU1NPQyx7Y291bnQ6MCxkZXRhaWxzOltdfSk7bGV0IHY9ZC5nZXQoZi5BU1NPQyk7di5jb3VudCsrLHYuZGV0YWlscy5wdXNoKHtBU1NP''@;'; put 'put ''Q1VSSTpmLkFTU09DVVJJLE5BTUU6Zi5OQU1FLGRpc3BsYXk6Zi5OQU1FLFVSSTpmLkFTU09DVVJJLnNsaWNlKGYuQVNTT0NVUkkuaW5kZXhPZigiOiIpKzEpfSl9bGV0IGg9W107cmV0dXJuIGQuZm9yRWFjaChmdW5jdGlvbihmLHYpe2gucHVzaCh7QVNTT0M6dixjb3VudDpmLmNvdW50LGRl''@;'; put 'put ''dGFpbHM6Zi5kZXRhaWxzLGRpc3BsYXk6disiICggIitmLmNvdW50KyIgKSJ9KX0pLGh9c2V0VHlwZUFzc29zaWF0aW9ucyhhKXtsZXQgZD1bXTtmb3IobGV0IGggb2YgdGhpcy5tZXRhT2JqZWN0QXNzb2NpYXRpb25zKWguQVNTT0M9PT1hJiZkLnB1c2goaCk7cmV0dXJuIHRoaXMuYXNzb3Np''@;'; put 'put ''YXRpb25OYW1lcz1kLGR9YXNzb3NpYXRpb25OYW1lT25DbGljayhhKXt0aGlzLmFzc29PYmplY3RTZWxlY3RlZD0iIC4gIix0aGlzLm1ldGFPYmplY3RBdHRyaWJ1dGVzPVtdLHRoaXMuc2hvd1RhYmxlPSExLHRoaXMuc2VsZWN0QXNzb3NpYXRpb25zRGV0YWlscyhhKX1tZXRhTGlzdE9uRmls''@;'; put 'put ''dGVyKCl7dGhpcy5oZWxwZXJTZXJ2aWNlLmxpYnJhcnlPbkZpbHRlcih0aGlzLm1ldGFEYXRhTGlzdCx0aGlzLm1ldGFEYXRhU2VhcmNoLCJJRCIpLEhuLm1ldGFkYXRhLm1ldGFEYXRhU2VhcmNoPXRoaXMubWV0YURhdGFTZWFyY2h9bWV0YU9iamVjdE9uRmlsdGVyKCl7dGhpcy5tZXRhT2Jq''@;'; put 'put ''ZWN0QXR0cmlidXRlcz1bXSx0aGlzLmhlbHBlclNlcnZpY2UubWV0YU9iamVjdE9uRmlsdGVyKHRoaXMubWV0YU9iamVjdExpc3QsdGhpcy5tZXRhT2JqZWN0U2VhcmNoLCJOQU1FIiksdGhpcy5nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyh0aGlzLm1ldGFPYmplY3RTaXplKSxIbi5tZXRhZGF0''@;'; put 'put ''YS5tZXRhT2JqZWN0U2VhcmNoPXRoaXMubWV0YU9iamVjdFNlYXJjaH1nZXRNZXRhT2JqZWN0QXR0cmlidXRlcyhhKXtpZih2b2lkIDAhPT10aGlzLm1ldGFPYmplY3RMaXN0JiZ0aGlzLm1ldGFPYmplY3RMaXN0Lmxlbmd0aD5hKXtsZXQgZD0wLGg9LTE7Zm9yKGxldCBmPTA7Zjx0aGlzLm1l''@;'; put 'put ''dGFPYmplY3RMaXN0Lmxlbmd0aDtmKyspaWYoKHZvaWQgMD09PXRoaXMubWV0YU9iamVjdExpc3RbZl0uaGlkZGVufHwhMT09PXRoaXMubWV0YU9iamVjdExpc3RbZl0uaGlkZGVuKSYmZCsrLGQ9PT1hKXtoPWY7YnJlYWt9dGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9LTEhPT1oP3RoaXMubWV0''@;'; put 'put ''YU9iamVjdExpc3Quc2xpY2UoMCxoKTp0aGlzLm1ldGFPYmplY3RMaXN0fWVsc2UgdGhpcy5tZXRhT2JqZWN0U2hvd0xpc3Q9dGhpcy5tZXRhT2JqZWN0TGlzdH1wYW5lbENoYW5nZShhLGQpe3RoaXMuZGVib3VuY2V8fCh0aGlzLm1ldGFPYmplY3RPbkNsaWNrKGQuSUQsZCksdGhpcy5kZWJv''@;'; put 'put ''dW5jZT0hMCxzZXRUaW1lb3V0KCgpPT57dGhpcy5kZWJvdW5jZT0hMX0sNjAwKSl9dXBkYXRlU2VsZWN0ZWRSZXBvc2l0b3J5KCl7SG4ubWV0YWRhdGEuc2VsZWN0ZWRSZXBvc2l0b3J5PXRoaXMucmVwb3NpdG9yeX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5l''@;'; put 'put ''dyhkfHxsKShKZShEbCksSmUodmEpLEplKGV1KSxKZShtZCksSmUoSnMpLEplKE9jKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtbWV0YWRhdGEiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjE3LHZhcnM6OCxj''@;'; put 'put ''b25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWyJzZWFyY2hPYmpUcmVlSW5wdXQiLCIiXSxbInBhZ2luYXRpb24iLCIiXSxbMSwicmVwby1kcm9wZG93biJdLFsiY2xyU2VsZWN0IiwiIiwiaWQiLCJyZXBvc2l0b3J5IiwzLCJuZ01vZGVsQ2hhbmdlIiwiY2hhbmdlIiwibmdNb2Rl''@;'; put 'put ''bCJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCIsImJhY2tncm91bmQtdHJhbnNwYXJlbnQtaSJdLFsxLCJjb2xvci1ncmF5Il0s''@;'; put 'put ''WyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1yb3cgY2xyLWZsZXgtZ3Jvdy0xIiw0LCJuZ0lmIl0sWzMsInZhbHVlIl0sWzEsInNlYXJjaC1ub2RlIl0sWzEsInRyZWUtc2VhcmNo''@;'; put 'put ''LXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwic2VhcmNoIFNBUyBUeXBlcyIsIm5hbWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFy''@;'; put 'put ''Y2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siXSxbMywiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIiwiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsNCwibmdJZiJd''@;'; put 'put ''LFszLCJjbGljayIsImNsckV4cGFuZGVkQ2hhbmdlIiwiY2xyRXhwYW5kZWQiLCJjbHJMb2FkaW5nIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJibG9jayJdLFsxLCJuby10YWJsZS1zZWxlY3RlZCJdLFsic2hhcGUiLCJ3YXJuaW5nLXN0YW5kYXJk''@;'; put 'put ''Iiwic2l6ZSIsIjYwIiwxLCJpcy1pbmZvIiwiaWNvbi1kYy1maWxsIl0sWyJjZHMtdGV4dCIsInNlY3Rpb24iLDEsInRleHQtY2VudGVyIiwiY29sb3ItZ3JheSIsIm10LTEwIl0sWzEsImxvYWRpbmdTcGlubmVyIl0sWzEsInNwaW5uZXIiXSxbNCwibmdJZiJdLFsxLCJjbHItcm93IiwiY2xy''@;'; put 'put ''LWZsZXgtZ3Jvdy0xIl0sWzEsImNsci1jb2wtNiJdLFsiY2xhc3MiLCJzZWFyY2gtaW5wdXQiLDQsIm5nSWYiXSxbImNsYXNzIiwib2JqZWN0cy1jb2wiLDQsIm5nSWYiXSxbMSwiY2xyLWNvbC02IiwidGV4dC1jZW50ZXIiXSxbImNsYXNzIiwiZGF0YWdyaWQtY3VzdG9tLWZvb3RlciIsNCwi''@;'; put 'put ''bmdJZiJdLFsxLCJzZWFyY2gtaW5wdXQiXSxbImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbMSwib2JqZWN0cy1jb2wiXSxbMywiY2xyQWNj''@;'; put 'put ''b3JkaW9uUGFuZWxPcGVuQ2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsckFjY29yZGlvblBhbmVsT3BlbkNoYW5nZSJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciJdLFsxLCJmbG9hdC1yaWdodCJdLFs0LCJjbHJJZkV4cGFuZGVkIl0sWzMsImNsckxhenkiLDQsIm5nSWYiXSxbMywiY2xyTGF6eSJd''@;'; put 'put ''LFszLCJjbHJFeHBhbmRhYmxlIiw0LCJjbHJSZWN1cnNpdmVGb3IiLCJjbHJSZWN1cnNpdmVGb3JPZiIsImNsclJlY3Vyc2l2ZUZvckdldENoaWxkcmVuIl0sWzMsImNsckV4cGFuZGFibGUiXSxbMSwiZnVsbC13aWR0aCJdLFsic2hhcGUiLCJyYWNrLXNlcnZlciIsNCwibmdJZiJdLFsic2hh''@;'; put 'put ''cGUiLCJibG9jayIsNCwibmdJZiJdLFsiY2xhc3MiLCJmbG9hdC1yaWdodCBvYmplY3QtdXJpIiw0LCJuZ0lmIl0sWzEsImZsb2F0LXJpZ2h0Iiwib2JqZWN0LXVyaSJdLFsxLCJjb2xzLWhlYWQiXSxbMSwib2JqZWN0LXRleHQiXSxbMSwibS0wIiwid29yZC1icmVhayIsIm1yLTIwIl0sWzEs''@;'; put 'put ''ImZsb2F0LXJpZ2h0IiwibWwtMyJdLFsxLCJkYXRhZ3JpZC1jdXN0b20tZm9vdGVyIl0sWzMsImNsckRnU3RyaW5nRmlsdGVyIl0sWzQsImNsckRnSXRlbXMiLCJjbHJEZ0l0ZW1zT2YiXSxbMywiY2xyRGdQYWdlU2l6ZSJdLFszLCJjbHJQYWdlU2l6ZU9wdGlvbnMiXV0sdGVtcGxhdGU6ZnVu''@;'; put 'put ''Y3Rpb24oZCxoKXsxJmQmJihnZSgwLCJhcHAtc2lkZWJhciIpKDEsImRpdiIsMykoMiwiY2xyLXNlbGVjdC1jb250YWluZXIiKSgzLCJsYWJlbCIpLFBlKDQsIk1ldGFkYXRhIFJlcG9zaXRvcnkiKSxtZSgpLGdlKDUsInNlbGVjdCIsNCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHYp''@;'; put 'put ''e3JldHVybiBHcihoLnJlcG9zaXRvcnksdil8fChoLnJlcG9zaXRvcnk9diksdn0pLEl0KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGgudXBkYXRlU2VsZWN0ZWRSZXBvc2l0b3J5KCl9KSxndCg2LHFfdCwyLDIsIm9wdGlvbiIsNSksbWUoKSgpKCksZ2UoNywiY2xyLXRyZWUiKSxndCg4''@;'; put 'put ''LEpfdCw2LDMsImNsci10cmVlLW5vZGUiLDYpKDksZWJ0LDIsMSwibmctY29udGFpbmVyIiw3KSxtZSgpKCksZ2UoMTAsImRpdiIsOCkoMTEsImRpdiIsOSkoMTIsImgzIiwxMCksUGUoMTMpLG1lKCksZ3QoMTQsdGJ0LDQsMCwiZGl2IiwxMSkoMTUsb2J0LDQsMSwiZGl2IiwxMikoMTYseGJ0''@;'; put 'put ''LDEwLDUsImRpdiIsMTMpLG1lKCkoKSksMiZkJiYoX2UoNSksWXIoIm5nTW9kZWwiLGgucmVwb3NpdG9yeSksX2UoKSxSZSgibmdGb3JPZiIsaC5yZXBvc2l0b3JpZXMpLF9lKDIpLFJlKCJuZ0lmIixoLm1ldGFEYXRhTGlzdCksX2UoKSxSZSgibmdGb3JPZiIsaC5tZXRhRGF0YUxpc3QpLF9l''@;'; put 'put ''KDQpLGxyKGguYXNzb1R5cGVTZWxlY3RlZCksX2UoKSxSZSgibmdJZiIsIWgubG9hZGluZyYmIWgubWV0YU9iamVjdExpc3QpLF9lKCksUmUoIm5nSWYiLGgubG9hZGluZyksX2UoKSxSZSgibmdJZiIsaC5zaG93RGF0YSkpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLEcyLCQyLHVsLFcyLF9hLHVh''@;'; put 'put ''LGs4LF80LFQ4LFJSLEdfLE9NLExSLENtLFR1ZSxTbSxBOCxYXyxNbSxNOCx3bSx4OCwkWixBZCxIMSxPdWUsWWEsbDAsWGNlLCRzLEVkLFpfLFVfLE5jZSx1UixWY2UsSGNlLEJjZSxNWixzcCxvcCxwU10sc3R5bGVzOlsiYm9keVtjZHMtdGhlbWU9ZGFya10gLm9iamVjdC1oZWFkZXI6aG92''@;'; put 'put ''ZXJ7YmFja2dyb3VuZC1jb2xvcjojNDA1NTYwfSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5vYmplY3RzLWNvbHtiYWNrZ3JvdW5kOiNmZmZ9ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLm9iamVjdC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZDhlM2U5fS5vYmplY3RzLWNvbFtf''@;'; put 'put ''bmdjb250ZW50LSVDT01QJV17aGVpZ2h0Ojc1dmg7b3ZlcmZsb3c6c2Nyb2xsO2JvcmRlcjoxcHggc29saWQgI2NjY2NjYztib3JkZXItcmFkaXVzOjRweH0uY29scy1oZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7cGFkZGluZzoxMHB4O2Rpc3BsYXk6''@;'; put 'put ''ZmxleH0ub2JqZWN0LXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1sZWZ0OjEwcHg7ZmxleDoxfS5yZXBvLWRyb3Bkb3duW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJn''@;'; put 'put ''aW4tcmlnaHQ6MTVweDttYXJnaW4tbGVmdDoxNXB4O21hcmdpbi1ib3R0b206MTBweH0uY2xyLWFjY29yZGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZmxvYXQtcmlnaHRbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowO2Zsb2F0OnJpZ2h0fS5mdWxsLXdpZHRo''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5vYmplY3QtdXJpW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46NXB4IDAgMH0ub2JqZWN0LWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2Ut''@;'; put 'put ''YmV0d2VlbjtwYWRkaW5nLWxlZnQ6M3B4O3BhZGRpbmctcmlnaHQ6M3B4fS5vYmplY3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntib3JkZXItcmFkaXVzOjNweH0uZGF0YWdyaWQtaG9zdFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp1bnNldCFpbXBvcnRhbnR9LmNhcmRb''@;'; put 'put ''X25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MDtmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY29udGVudC1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41cmVtIWltcG9ydGFudDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1u''@;'; put 'put ''fSJdfSl9c3RhdGlje3RoaXMuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSl9fXJldHVybiBsfSkoKTtmdW5jdGlvbiBFYnQobCxjKXsxJmwmJll0KDAsImNsci1pY29uIiwxMil9ZnVuY3Rpb24gVGJ0KGwsYyl7aWYoMSZsKXtj''@;'; put 'put ''b25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDEzKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgyKTtyZXR1cm4gaC5yb2xlU2VhcmNoPSIiLGJ0KGgucm9sZUxpc3RPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIGtidChsLGMpe2lmKDEmbCl7Y29uc3QgYT1T''@;'; put 'put ''bigpO2dlKDAsImNsci10cmVlLW5vZGUiLDcpKDEsImRpdiIsOCkoMiwiaW5wdXQiLDksMCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5yb2xlU2VhcmNoLGgpfHwoZi5yb2xlU2VhcmNoPWgpLGJ0KGgpfSksSXQoImtleXVw''@;'; put 'put ''IixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLnJvbGVMaXN0T25GaWx0ZXIoKSl9KSxtZSgpLGd0KDQsRWJ0LDEsMCwiY2xyLWljb24iLDEwKSg1LFRidCwxLDAsImNsci1pY29uIiwxMSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1HaSgzKSxkPU5lKCk7X2UoMiksWXIoIm5nTW9k''@;'; put 'put ''ZWwiLGQucm9sZVNlYXJjaCksX2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBBYnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiwxNSksSXQoImNsaWNrIixmdW5j''@;'; put 'put ''dGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkucm9sZU9uQ2xpY2soaCkpfSksZ2UoMSwicCIsMTYpLFl0KDIsImNsci1pY29uIiwxNyksUGUoMyksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdCxkPU5lKCk7cHIoImFjdGl2ZSIs''@;'; put 'put ''YS5ST0xFVVJJPT09ZC5yb2xlVXJpKSxfZSgzKSxtcigiICIsYS5ST0xFTkFNRSwiICIpfX1mdW5jdGlvbiBEYnQobCxjKXtpZigxJmwmJihWcigwKSxndCgxLEFidCw0LDMsImNsci10cmVlLW5vZGUiLDE0KSxCcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdJZiIs''@;'; put 'put ''IWEuaGlkZGVuKX19ZnVuY3Rpb24gSWJ0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwxOCkoMSwic3BhbiIsMTkpLFBlKDIsIiBMb2FkaW5nLi4uICIpLG1lKCkoKSl9ZnVuY3Rpb24gUmJ0KGwsYyl7MSZsJiYoZ2UoMCwiaDUiKSxQZSgxLCJObyBNZW1iZXJzIFByZXNlbnQiKSxtZSgpKX1mdW5j''@;'; put 'put ''dGlvbiBMYnQobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIsMzIpKDEsInRkIiwzMCksUGUoMiksbWUoKSxnZSgzLCJ0ZCIsMzApLFBlKDQpLG1lKCksZ2UoNSwidGQiLDMwKSxQZSg2KSxtZSgpLGdlKDcsInRkIiwzMCksUGUoOCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7UmUo''@;'; put 'put ''InJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L3VzZXJzLyIrYS5VUklNRU0pLF9lKDIpLGxyKGEuTUVNQkVSTkFNRSksX2UoMiksbHIoYS5FTUFJTCksX2UoMiksbHIoYS5NRU1CRVJDUkVBVEVEKSxfZSgyKSxscihhLk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiBPYnQobCxjKXtpZigxJmwm''@;'; put 'put ''JihnZSgwLCJ0YWJsZSIsMjgpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIsMjkpKDQsImIiKSxQZSg1LCJOQU1FIiksbWUoKSgpLGdlKDYsInRkIiwyOSkoNywiYiIpLFBlKDgsIkVNQUlMIiksbWUoKSgpLGdlKDksInRkIiwyOSkoMTAsImIiKSxQZSgxMSwiQ1JFQVRFRCIpLG1lKCkoKSxn''@;'; put 'put ''ZSgxMiwidGQiLDMwKSgxMywiYiIpLFBlKDE0LCJVUERBVEVEIiksbWUoKSgpKCkoKSxnZSgxNSwidGJvZHkiKSxndCgxNixMYnQsOSw1LCJ0ciIsMzEpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDE2KSxSZSgibmdGb3JPZiIsYS5yb2xlTWVtYmVycyl9fWZ1bmN0aW9uIFBidChs''@;'; put 'put ''LGMpezEmbCYmKGdlKDAsImg1IiksUGUoMSwiTm8gR3JvdXBzIFByZXNlbnQgISIpLG1lKCkpfWZ1bmN0aW9uIEZidChsLGMpe2lmKDEmbCYmKGdlKDAsInRyIiwzMikoMSwidGQiLDMwKSxQZSgyKSxtZSgpLGdlKDMsInRkIiwzMCksUGUoNCksbWUoKSxnZSg1LCJ0ZCIsMzApLFBlKDYpLG1l''@;'; put 'put ''KCksZ2UoNywidGQiLDMwKSxQZSg4KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1jLiRpbXBsaWNpdDtSZSgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvZ3JvdXBzLyIrYS5VUklNRU0pLF9lKDIpLGxyKGEuTUVNQkVSTkFNRSksX2UoMiksbHIoYS5FTUFJTCksX2UoMiksbHIoYS5NRU1CRVJD''@;'; put 'put ''UkVBVEVEKSxfZSgyKSxscihhLk1FTUJFUlVQREFURUQpfX1mdW5jdGlvbiBOYnQobCxjKXtpZigxJmwmJihnZSgwLCJ0YWJsZSIsMjgpKDEsInRoZWFkIikoMiwidHIiKSgzLCJ0ZCIsMjkpKDQsImIiKSxQZSg1LCJOQU1FIiksbWUoKSgpLGdlKDYsInRkIiwyOSkoNywiYiIpLFBlKDgsIkVN''@;'; put 'put ''QUlMIiksbWUoKSgpLGdlKDksInRkIiwyOSkoMTAsImIiKSxQZSgxMSwiQ1JFQVRFRCIpLG1lKCkoKSxnZSgxMiwidGQiLDMwKSgxMywiYiIpLFBlKDE0LCJVUERBVEVEIiksbWUoKSgpKCkoKSxnZSgxNSwidGJvZHkiKSxndCgxNixGYnQsOSw1LCJ0ciIsMzEpLG1lKCkoKSksMiZsKXtjb25z''@;'; put 'put ''dCBhPU5lKDIpO19lKDE2KSxSZSgibmdGb3JPZiIsYS5yb2xlR3JvdXBzKX19ZnVuY3Rpb24gSGJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiZGl2IiwyMCkoMiwiZGl2IiwyMSkoMywidGFibGUiLDIyKSg0LCJ0Ym9keSIpKDUsInRyIikoNiwidGQiLDIzKSg3LCJwIiwyNCkoOCwi''@;'; put 'put ''YiIpLFBlKDkpLG1lKCkoKSgpKCksZ2UoMTAsInRyIikoMTEsInRkIiwyMykoMTIsImkiKSxQZSgxMyksbWUoKSgpKCkoKSgpKCkoKSxnZSgxNCwiZGl2IiwyMCkoMTUsImRpdiIsMjEpKDE2LCJkaXYiLDI1KSgxNywiZGl2IikoMTgsImgzIiksUGUoMTkpLG1lKCksZ3QoMjAsUmJ0LDIsMCwi''@;'; put 'put ''aDUiLDYpLGdlKDIxLCJkaXYiLDI2KSxndCgyMixPYnQsMTcsMSwidGFibGUiLDI3KSxtZSgpKCksWXQoMjMsImhyIiksZ2UoMjQsImRpdiIpKDI1LCJoMyIpLFBlKDI2KSxtZSgpLGd0KDI3LFBidCwyLDAsImg1Iiw2KSxnZSgyOCwiZGl2IiwyNiksZ3QoMjksTmJ0LDE3LDEsInRhYmxlIiwy''@;'; put 'put ''NyksbWUoKSgpLFl0KDMwLCJiciIpLG1lKCkoKSgpKCkpLDImbCl7Y29uc3QgYT1OZSgpO19lKDkpLGxyKGEucm9sZU5hbWUpLF9lKDQpLGxyKGEucm9sZURlc2MpLF9lKDYpLG1yKCJNRU1CRVJTICgiLGEucm9sZU1lbWJlcnNDb3VudCwiKSIpLF9lKCksUmUoIm5nSWYiLDA9PWEucm9sZU1l''@;'; put 'put ''bWJlcnNDb3VudCksX2UoMiksUmUoIm5nSWYiLDAhPWEucm9sZU1lbWJlcnNDb3VudCksX2UoNCksbXIoIkdyb3VwcyAoIixhLnJvbGVHcm91cHNDb3VudCwiKSIpLF9lKCksUmUoIm5nSWYiLDA9PWEucm9sZUdyb3Vwc0NvdW50KSxfZSgyKSxSZSgibmdJZiIsMCE9YS5yb2xlR3JvdXBzQ291''@;'; put 'put ''bnQpfX1sZXQgZW1lPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2KXt0aGlzLnNhc1NlcnZpY2U9YSx0aGlzLmhlbHBlclNlcnZpY2U9ZCx0aGlzLnJvdXRlcj1oLHRoaXMubG9jYXRpb249Zix0aGlzLnJvdXRlPXYsdGhpcy5yb2xlU2VhcmNoPSIiLHRoaXMucm9sZVVyaT0i''@;'; put 'put ''Iix0aGlzLnJvbGVOYW1lPSIiLHRoaXMucm9sZURlc2M9IiIsdGhpcy5wYXJhbVByZXNlbnQ9ITEsdGhpcy5wYXJhbVVSST0iIix0aGlzLmxvYWRpbmc9ITF9bmdPbkluaXQoKXtIbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbj0idmlldy91c2VybmF2L3JvbGVzIix2b2lkIDAhPT10aGlzLnJv''@;'; put 'put ''dXRlLnNuYXBzaG90LnBhcmFtcy51cmkmJih0aGlzLnBhcmFtUHJlc2VudD0hMCx0aGlzLnBhcmFtVVJJPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSksSG4udXNlcm5hdi5yb2xlTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50Pyh0aGlzLnJvbGVzPUhuLnVzZXJuYXYucm9sZUxpc3Qs''@;'; put 'put ''dGhpcy5yb2xlU2VhcmNoPUhuLnVzZXJuYXYucm9sZVNlYXJjaCk6dm9pZCAwPT09SG4udXNlcm5hdi5yb2xlTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJyb2xlcyIsbnVsbCkudGhlbihhPT57aWYodGhpcy5sb2FkaW5nPSExLHRo''@;'; put 'put ''aXMucm9sZXM9YS5hZGFwdGVyUmVzcG9uc2Uucm9sZXMsSG4udXNlcm5hdi5yb2xlTGlzdD1hLmFkYXB0ZXJSZXNwb25zZS5yb2xlcyx0aGlzLnBhcmFtUHJlc2VudCYmdm9pZCAwIT09dGhpcy5yb2xlcyl7bGV0IGQ9dGhpcy5maW5kUm9sZSh0aGlzLnJvbGVzLHRoaXMucGFyYW1VUkkpOyEx''@;'; put 'put ''IT09ZCYmKHRoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5cm9sZSIse2l3YW50Olt7cm9sZWlkOnRoaXMucGFyYW1VUkl9XX0pLnRoZW4oZj0+e3RoaXMubG9hZGluZz0hMSx0aGlzLnJvbGVNZW1iZXJzPWYuYWRhcHRlclJlc3Bv''@;'; put 'put ''bnNlLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PWYuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMubGVuZ3RoLHRoaXMucm9sZUdyb3Vwcz1mLmFkYXB0ZXJSZXNwb25zZS5zYXNncm91cHMsdGhpcy5yb2xlR3JvdXBzQ291bnQ9Zi5hZGFwdGVyUmVzcG9uc2Uuc2FzZ3JvdXBz''@;'; put 'put ''Lmxlbmd0aCx0aGlzLnJvbGVVcmk9ZC5ST0xFVVJJLHRoaXMucm9sZU5hbWU9ZC5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPWQuUk9MRURFU0N9KSl9fSkpOih0aGlzLnJvbGVzPUhuLnVzZXJuYXYucm9sZUxpc3QsdGhpcy5yb2xlU2VhcmNoPUhuLnVzZXJuYXYucm9sZVNlYXJjaCx0aGlzLnNh''@;'; put 'put ''c1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2Vycm9sZXMiLG51bGwpLnRoZW4oYT0+e2lmKHRoaXMucm9sZXM9YS5hZGFwdGVyUmVzcG9uc2Uucm9sZXMsSG4udXNlcm5hdi5yb2xlTGlzdD1hLmFkYXB0ZXJSZXNwb25zZS5yb2xlcyx0aGlzLnBhcmFtUHJlc2VudCYmdm9pZCAwIT09dGhp''@;'; put 'put ''cy5yb2xlcyl7bGV0IGQ9dGhpcy5maW5kUm9sZSh0aGlzLnJvbGVzLHRoaXMucGFyYW1VUkkpOyExIT09ZCYmKHRoaXMubG9hZGluZz0hMCx0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VybWVtYmVyc2J5cm9sZSIse2l3YW50Olt7cm9sZWlkOnRoaXMucGFyYW1VUkl9XX0p''@;'; put 'put ''LnRoZW4oZj0+e3RoaXMubG9hZGluZz0hMSx0aGlzLnJvbGVNZW1iZXJzPWYuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMsdGhpcy5yb2xlTWVtYmVyc0NvdW50PWYuYWRhcHRlclJlc3BvbnNlLnNhc21lbWJlcnMubGVuZ3RoLHRoaXMucm9sZUdyb3Vwcz1mLmFkYXB0ZXJSZXNwb25zZS5z''@;'; put 'put ''YXNncm91cHMsdGhpcy5yb2xlR3JvdXBzQ291bnQ9Zi5hZGFwdGVyUmVzcG9uc2Uuc2FzZ3JvdXBzLmxlbmd0aCx0aGlzLnJvbGVVcmk9ZC5ST0xFVVJJLHRoaXMucm9sZU5hbWU9ZC5ST0xFTkFNRSx0aGlzLnJvbGVEZXNjPWQuUk9MRURFU0N9KSl9fSkpfXJvbGVMaXN0T25GaWx0ZXIoKXt0''@;'; put 'put ''aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMucm9sZXMsdGhpcy5yb2xlU2VhcmNoLCJST0xFTkFNRSIpLEhuLnVzZXJuYXYucm9sZVNlYXJjaD10aGlzLnJvbGVTZWFyY2h9cm9sZU9uQ2xpY2soYSl7dGhpcy5sb2FkaW5nPSEwO2xldCBkPXRoaXMucm91dGVyLnVybDt0''@;'; put 'put ''aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnBhcmFtUHJlc2VudD9kLnNsaWNlKDAsZC5sYXN0SW5kZXhPZigiLyIpKSsiLyIrZW5jb2RlVVJJKGEuUk9MRVVSSSk6ZCsiLyIrZW5jb2RlVVJJKGEuUk9MRVVSSSkpLHRoaXMuc2FzU2VydmljZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJt''@;'; put 'put ''ZW1iZXJzYnlyb2xlIix7aXdhbnQ6W3tyb2xlaWQ6YS5ST0xFVVJJfV19KS50aGVuKGY9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy5yb2xlTWVtYmVycz1mLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJzLHRoaXMucm9sZU1lbWJlcnNDb3VudD1mLmFkYXB0ZXJSZXNwb25zZS5zYXNtZW1iZXJz''@;'; put 'put ''Lmxlbmd0aCx0aGlzLnJvbGVHcm91cHM9Zi5hZGFwdGVyUmVzcG9uc2Uuc2FzZ3JvdXBzLHRoaXMucm9sZUdyb3Vwc0NvdW50PWYuYWRhcHRlclJlc3BvbnNlLnNhc2dyb3Vwcy5sZW5ndGgsdGhpcy5yb2xlVXJpPWEuUk9MRVVSSSx0aGlzLnJvbGVOYW1lPWEuUk9MRU5BTUUsdGhpcy5yb2xl''@;'; put 'put ''RGVzYz1hLlJPTEVERVNDfSl9ZmluZFJvbGUoYSxkKXtsZXQgaD0hMTtyZXR1cm4gYS5mb3JFYWNoKGY9PntmLlJPTEVVUkk9PT1kJiYoaD1mKX0pLGh9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoSmUodmEpLEplKGV1KSxKZShKcyksSmUobWQp''@;'; put 'put ''LEplKE9jKSl9fXN0YXRpY3t0aGlzLlx1MDI3NWNtcD1Tcih7dHlwZTpsLHNlbGVjdG9yczpbWyJhcHAtcm9sZSJdXSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbInNlYXJjaExpYlRyZWVJbnB1dCIsIiJdLFsxLCJzaWRlYmFyLWhl''@;'; put 'put ''aWdodCJdLFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsImxvYWRpbmdTcGlubmVyIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3Jh''@;'; put 'put ''cHBlciJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgYnkgUm9sZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbInNoYXBlIiwic2VhcmNoIiw0''@;'; put 'put ''LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImFjdGl2ZSIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0sWzEsIm0tMCIsImN1cnNvci1wb2ludGVyIiwibGlz''@;'; put 'put ''dC1wYWRkaW5nIl0sWyJzaGFwZSIsImJsb2Nrcy1ncm91cCJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWzEsImNsci1yb3ciXSxbMSwiY2xyLWNvbC04Il0sWzEsInRhYmxlIiwicm9sZS1pbmZvIl0sWzEsImxlZnQiXSxbMSwicm9sZS1pbmZvLXRleHQiXSxbMSwiY2Fy''@;'; put 'put ''ZCIsInJvbGUtZGF0YSJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbImNsYXNzIiwidGFibGUgbWVtYmVyLXRhYmxlIiw0LCJuZ0lmIl0sWzEsInRhYmxlIiwibWVtYmVyLXRhYmxlIl0sWzEsIndpZHRoLTI1Il0sWzEsIiJdLFszLCJyb3V0ZXJMaW5rIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxb''@;'; put 'put ''Mywicm91dGVyTGluayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmKGdlKDAsImFwcC1zaWRlYmFyIiwxKSgxLCJjbHItdHJlZSIpLGd0KDIsa2J0LDYsMywiY2xyLXRyZWUtbm9kZSIsMikoMyxEYnQsMiwxLCJuZy1jb250YWluZXIiLDMpLG1lKCkoKSxnZSg0LCJkaXYiLDQpLGd0''@;'; put 'put ''KDUsSWJ0LDMsMCwiZGl2Iiw1KSg2LEhidCwzMSw4LCJkaXYiLDYpLG1lKCkpLDImZCYmKF9lKDIpLFJlKCJuZ0lmIixoLnJvbGVzKSxfZSgpLFJlKCJuZ0Zvck9mIixoLnJvbGVzKSxfZSgyKSxSZSgibmdJZiIsaC5sb2FkaW5nKSxfZSgpLFJlKCJuZ0lmIixoLnJvbGVNZW1iZXJzJiYhaC5s''@;'; put 'put ''b2FkaW5nKSl9LGRlcGVuZGVuY2llczpbVnMsJGksazAsdWwsX2EsdWEsQWQsSDEsWWEsRWQsc3Asb3BdLHN0eWxlczpbImJvZHlbY2RzLXRoZW1lPWRhcmtdIC5yb2xle2JhY2tncm91bmQtY29sb3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtd''@;'; put 'put ''IC5yb2xlLWRhdGF7YmFja2dyb3VuZC1jb2xvcjojMzE0MzUxO2JvcmRlci1jb2xvcjojMzE0MzUxfSAgYm9keVtjZHMtdGhlbWU9ZGFya10gLm1lbWJlci10YWJsZSB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyOTQwNGJ9ICBib2R5W2Nkcy10aGVtZT1saWdodF0gLnJvbGUt''@;'; put 'put ''aW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ym9yZGVyLWNvbG9yOiNhN2E3YTc7Ym94LXNoYWRvdzowIDJweCA1cHggI2RhZDdkN30gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAucm9sZS1kYXRhe2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXItY29sb3I6I2E3YTdhNztib3gt''@;'; put 'put ''c2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC5tZW1iZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2fS5zaWRlYmFyLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LnJvbGUtaW5mby10ZXh0''@;'; put 'put ''W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MjBweH0ucm9sZS1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkO2JvcmRlci1yYWRpdXM6M3B4fS5yb2xlLWluZm9bX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde3RleHQtYWxpZ246Y2VudGVyfS5yb2xlLWRhdGFbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9LnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDp1bnNldH0ucm9sZS1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXSAg''@;'; put 'put ''IGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnJvbGUtZGF0YVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9Lm1lbWJlci10YWJsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0ubWVtYmVyLXRhYmxlW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntjdXJzb3I6cG9pbnRlcn0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OnNjcm9sbDttYXgtaGVpZ2h0OjcwMHB4fUBtZWRpYSBzY3JlZW4g''@;'; put 'put ''YW5kIChtYXgtd2lkdGg6IDc2OHB4KXsucm9sZS1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OnVuc2V0IWltcG9ydGFudH19Il19KX19cmV0dXJuIGx9KSgpLFZidD0oKCk9PntjbGFzcyBse2NvbnN0cnVjdG9yKCl7fW5nT25Jbml0KCl7fXN0YXRpY3t0aGlzLlx1MDI3NWZh''@;'; put 'put ''Yz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXVzZXJuYXYtcm91dGUiXV0saG9zdEF0dHJzOlsxLCJjb250ZW50LWNvbnRhaW5lciJdLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9u''@;'; put 'put ''KGQsaCl7MSZkJiZZdCgwLCJyb3V0ZXItb3V0bGV0Iil9LGRlcGVuZGVuY2llczpbYzRdfSl9fXJldHVybiBsfSkoKSxCYnQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe31uZ09uSW5pdCgpe31uZ09uRGVzdHJveSgpe31zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0''@;'; put 'put ''dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC12aWV3LXJvdXRlIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpezEmZCYmWXQoMCwicm91''@;'; put 'put ''dGVyLW91dGxldCIpfSxkZXBlbmRlbmNpZXM6W2M0XX0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24gamJ0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMTIpfWZ1bmN0aW9uIHpidChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwxMyksSXQoImNsaWNrIixmdW5j''@;'; put 'put ''dGlvbigpe190KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGgudXNlclNlYXJjaD0iIixidChoLnVzZXJMaXN0T25GaWx0ZXIoKSl9KSxtZSgpfX1mdW5jdGlvbiBVYnQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiw3KSgxLCJkaXYiLDgpKDIsImlucHV0''@;'; put 'put ''Iiw5LDApLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYudXNlclNlYXJjaCxoKXx8KGYudXNlclNlYXJjaD1oKSxidChoKX0pLEl0KCJrZXl1cCIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS51c2VyTGlzdE9uRmls''@;'; put 'put ''dGVyKCkpfSksbWUoKSxndCg0LGpidCwxLDAsImNsci1pY29uIiwxMCkoNSx6YnQsMSwwLCJjbHItaWNvbiIsMTEpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2koMyksZD1OZSgpO19lKDIpLFlyKCJuZ01vZGVsIixkLnVzZXJTZWFyY2gpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0''@;'; put 'put ''aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gWmJ0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMTUpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCkuJGltcGxpY2l0O3JldHVybiBidChO''@;'; put 'put ''ZSgpLnVzZXJPbkNsaWNrKGgpKX0pLGdlKDEsInAiLDE2KSxZdCgyLCJjbHItaWNvbiIsMTcpLFBlKDMpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQsZD1OZSgpO3ByKCJhY3RpdmUiLChudWxsPT1kLnVzZXJJbmZvP251bGw6ZC51c2VySW5mby5VUkkpPT09YS5VUkkp''@;'; put 'put ''LF9lKDMpLG1yKCIgIixhLk5BTUUsIiAiKX19ZnVuY3Rpb24gWWJ0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxaYnQsNCwzLCJjbHItdHJlZS1ub2RlIiwxNCksQnIoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKCksUmUoIm5nSWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIFdidChs''@;'; put 'put ''LGMpezEmbCYmKGdlKDAsImRpdiIsMTgpKDEsInNwYW4iLDE5KSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpKCkpfWZ1bmN0aW9uIEdidChsLGMpe2lmKDEmbCYmKFZyKDApLGdlKDEsInRyIikoMiwidGQiLDI3KSxQZSgzLCIgTWV0YWRhdGEgQ3JlYXRlZDogIiksZ2UoNCwiYiIpLFBlKDUp''@;'; put 'put ''LG1lKCkoKSgpLGdlKDYsInRyIikoNywidGQiLDI3KSxQZSg4LCIgTWV0YWRhdGEgVXBkYXRlZDogIiksZ2UoOSwiYiIpLFBlKDEwKSxtZSgpKCkoKSxCcigpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoNSksbHIoYS51c2VySW5mby5NRVRBREFUQUNSRUFURUQpLF9lKDUpLGxyKGEudXNlcklu''@;'; put 'put ''Zm8uTUVUQURBVEFVUERBVEVEKX19ZnVuY3Rpb24gJGJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwyMSkoMSwiZGl2IiwyMikoMiwidGFibGUiLDI2KSgzLCJ0Ym9keSIpKDQsInRyIikoNSwidGQiLDI3KSg2LCJwIiwyOCkoNywiYiIpLFBlKDgpLG1lKCkoKSgpKCksZ2UoOSwidHIiKSgx''@;'; put 'put ''MCwidGQiLDI3KSgxMSwicCIsMjgpKDEyLCJiIiksUGUoMTMpLG1lKCkoKSgpKCksZ3QoMTQsR2J0LDExLDIsIm5nLWNvbnRhaW5lciIsNiksbWUoKSgpKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDgpLGxyKGEudXNlckluZm8uTkFNRSksX2UoNSksbHIoYS51c2VySW5mby5ESVNQTEFZ''@;'; put 'put ''TkFNRSksX2UoKSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpfX1mdW5jdGlvbiBxYnQobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDIxKSgxLCJkaXYiLDIyKSgyLCJ0YWJsZSIsMjYpKDMsInRib2R5IikoNCwidHIiKSg1LCJ0ZCIsMjcpKDYsInAiLDI4KSg3''@;'; put 'put ''LCJiIiksUGUoOCksbWUoKSgpKCkoKSxnZSg5LCJ0ciIpKDEwLCJ0ZCIsMjcpLFBlKDExLCIgVXNlciBJRDogIiksZ2UoMTIsImIiKSxQZSgxMyksbWUoKSgpKCksZ2UoMTQsInRyIikoMTUsInRkIiwyNyksUGUoMTYsIiBVc2VyIHByb3ZpZGVyIElEOiAiKSxnZSgxNywiYiIpLFBlKDE4KSxt''@;'; put 'put ''ZSgpKCkoKSgpKCkoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoOCksbHIoYS51c2VySW5mby5OQU1FKSxfZSg1KSxscihhLnVzZXJJbmZvLlVSSSksX2UoNSksbHIoYS51c2VySW5mby5QUk9WSURFUil9fWZ1bmN0aW9uIEtidChsLGMpezEmbCYmKGdlKDAsImg1IiksUGUoMSwiTm8gRW1h''@;'; put 'put ''aWxzIFByZXNlbnQiKSxtZSgpKX1mdW5jdGlvbiBYYnQobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIpKDEsInRkIiwzMSksUGUoMiksbWUoKSxnZSgzLCJ0ZCIsMzEpLFBlKDQpLG1lKCkoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKDIpLGxyKGEuRU1BSUwpLF9lKDIpLGxyKGEuVFlQ''@;'; put 'put ''RSl9fWZ1bmN0aW9uIEpidChsLGMpe2lmKDEmbCYmKGdlKDAsInRhYmxlIiwyOSkoMSwidGhlYWQiKSgyLCJ0ciIpKDMsInRkIiwzMCkoNCwiYiIpLFBlKDUsIkVNQUlMIiksbWUoKSgpLGdlKDYsInRkIiwzMSkoNywiYiIpLFBlKDgsIlRZUEUiKSxtZSgpKCkoKSgpLGdlKDksInRib2R5Iiks''@;'; put 'put ''Z3QoMTAsWGJ0LDUsMiwidHIiLDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKDEwKSxSZSgibmdGb3JPZiIsYS51c2VyRW1haWxzKX19ZnVuY3Rpb24gUWJ0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyKSxtZSgpLGd0KDMsS2J0LDIsMCwiaDUiLDYpLGdl''@;'; put 'put ''KDQsImRpdiIsMjQpLGd0KDUsSmJ0LDExLDEsInRhYmxlIiwyNSksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoMiksbXIoIkVNQUlMUyAoIixhLnVzZXJFbWFpbHNDb3VudHx8IjAiLCIpIiksX2UoKSxSZSgibmdJZiIsMD09YS51c2VyRW1haWxzQ291bnQpLF9lKDIpLFJlKCJuZ0lm''@;'; put 'put ''IiwwIT1hLnVzZXJFbWFpbHNDb3VudCl9fWZ1bmN0aW9uIGV5dChsLGMpezEmbCYmWXQoMCwiaHIiKX1mdW5jdGlvbiB0eXQobCxjKXsxJmwmJihnZSgwLCJoNSIpLFBlKDEsIk5vIEdyb3VwcyBQcmVzZW50IiksbWUoKSl9ZnVuY3Rpb24gbnl0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGQiLDMz''@;'; put 'put ''KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQ7UmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iK2EuVVJJKSxfZSgpLG1yKCIgIixhLkdST1VQTkFNRSwiICIpfX1mdW5jdGlvbiByeXQobCxjKXtpZigxJmwmJihWcigwKSxnZSgxLCJ0ZCIsMzMp''@;'; put 'put ''LFBlKDIpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O19lKCksUmUoInJvdXRlckxpbmsiLCIvdmlldy91c2VybmF2L2dyb3Vwcy8iKyhhLkdST1VQVVJJfHxhLlVSSSkpLF9lKCksbXIoIiAiLGEuR1JPVVBOQU1FLCIgIil9fWZ1bmN0aW9uIGl5dChsLGMpe2lmKDEm''@;'; put 'put ''bCYmKGdlKDAsInRyIiksZ3QoMSxueXQsMiwyLCJ0ZCIsMzIpKDIscnl0LDMsMiwibmctY29udGFpbmVyIiw2KSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLF9lKCksUmUoIm5nSWYiLGEuc2VydmVy''@;'; put 'put ''VHlwZSE9PWEuU2VydmVyVHlwZS5TYXNWaXlhKX19ZnVuY3Rpb24gb3l0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGFibGUiLDI5KSgxLCJ0Ym9keSIpLGd0KDIsaXl0LDMsMiwidHIiLDMpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDIpLFJlKCJuZ0Zvck9mIixhLnVzZXJHcm91cHMp''@;'; put 'put ''fX1mdW5jdGlvbiBzeXQobCxjKXsxJmwmJll0KDAsImhyIil9ZnVuY3Rpb24gYXl0KGwsYyl7MSZsJiYoZ2UoMCwiaDUiKSxQZSgxLCJObyBSb2xlcyBQcmVzZW50IiksbWUoKSl9ZnVuY3Rpb24gbHl0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsMzQpLFBlKDIpLG1lKCkoKSks''@;'; put 'put ''MiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoNCk7X2UoKSxSZSgicm91dGVyTGluayIsIi92aWV3L3VzZXJuYXYvcm9sZXMvIitkLmdldFJvbGVVUkkoYS5ST0xFVVJJKSksX2UoKSxtcigiICIsYS5ST0xFTkFNRSwiICIpfX1mdW5jdGlvbiBjeXQobCxjKXtpZigxJmwmJihnZSgwLCJ0''@;'; put 'put ''YWJsZSIsMjkpKDEsInRib2R5IiksZ3QoMixseXQsMywyLCJ0ciIsMyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoMiksUmUoIm5nRm9yT2YiLGEudXNlclJvbGVzKX19ZnVuY3Rpb24gdXl0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyKSxtZSgpLGd0KDMs''@;'; put 'put ''YXl0LDIsMCwiaDUiLDYpLGdlKDQsImRpdiIsMjQpLGd0KDUsY3l0LDMsMSwidGFibGUiLDI1KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSgyKTtfZSgyKSxtcigiUk9MRVMgKCIsYS51c2VyUm9sZXNDb3VudHx8IjAiLCIpIiksX2UoKSxSZSgibmdJZiIsMD09YS51c2VyUm9sZXNDb3VudCks''@;'; put 'put ''X2UoMiksUmUoIm5nSWYiLDAhPWEudXNlclJvbGVzQ291bnQpfX1mdW5jdGlvbiBkeXQobCxjKXsxJmwmJll0KDAsImhyIil9ZnVuY3Rpb24gaHl0KGwsYyl7MSZsJiYoZ2UoMCwiaDUiKSxQZSgxLCJObyBMb2dpbnMgUHJlc2VudCIpLG1lKCkpfWZ1bmN0aW9uIGZ5dChsLGMpe2lmKDEmbCYm''@;'; put 'put ''KGdlKDAsInRyIikoMSwidGQiLDMxKSxQZSgyKSxtZSgpLGdlKDMsInRkIiwzMSksUGUoNCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoMiksbHIoYS5ET01BSU4pLF9lKDIpLGxyKGEuVVNFUklEKX19ZnVuY3Rpb24gcHl0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidGFibGUi''@;'; put 'put ''LDI5KSgxLCJ0aGVhZCIpKDIsInRyIikoMywidGQiLDMwKSg0LCJiIiksUGUoNSwiRE9NQUlOIiksbWUoKSgpLGdlKDYsInRkIikoNywiYiIpLFBlKDgsIlVTRVIgSUQiKSxtZSgpKCkoKSgpLGdlKDksInRib2R5IiksZ3QoMTAsZnl0LDUsMiwidHIiLDMpLG1lKCkoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKDMpO19lKDEwKSxSZSgibmdGb3JPZiIsYS51c2VyTG9naW5zKX19ZnVuY3Rpb24gZ3l0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IikoMSwiaDMiKSxQZSgyKSxtZSgpLGd0KDMsaHl0LDIsMCwiaDUiLDYpLGdlKDQsImRpdiIsMjQpLGd0KDUscHl0LDExLDEsInRhYmxlIiwyNSksbWUo''@;'; put 'put ''KSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoMiksbXIoIkxPR0lOUyAoIixhLnVzZXJMb2dpbnNDb3VudHx8IjAiLCIpIiksX2UoKSxSZSgibmdJZiIsMD09YS51c2VyTG9naW5zQ291bnQpLF9lKDIpLFJlKCJuZ0lmIiwwIT1hLnVzZXJMb2dpbnNDb3VudCl9fWZ1bmN0aW9uIG15dChsLGMp''@;'; put 'put ''e2lmKDEmbCYmKGdlKDAsImRpdiIpLGd0KDEsJGJ0LDE1LDMsImRpdiIsMjApKDIscWJ0LDE5LDMsImRpdiIsMjApLGdlKDMsImRpdiIsMjEpKDQsImRpdiIsMjIpKDUsImRpdiIsMjMpLGd0KDYsUWJ0LDYsMywiZGl2Iiw2KSg3LGV5dCwxLDAsImhyIiw2KSxnZSg4LCJkaXYiKSg5LCJoMyIp''@;'; put 'put ''LFBlKDEwKSxtZSgpLGd0KDExLHR5dCwyLDAsImg1Iiw2KSxnZSgxMiwiZGl2IiwyNCksZ3QoMTMsb3l0LDMsMSwidGFibGUiLDI1KSxtZSgpKCksZ3QoMTQsc3l0LDEsMCwiaHIiLDYpKDE1LHV5dCw2LDMsImRpdiIsNikoMTYsZHl0LDEsMCwiaHIiLDYpKDE3LGd5dCw2LDMsImRpdiIsNiks''@;'; put 'put ''WXQoMTgsImJyIiksbWUoKSgpKCkoKSksMiZsKXtjb25zdCBhPU5lKCk7X2UoKSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlIT09YS5TZXJ2ZXJUeXBlLlNhc1ZpeWEpLF9lKCksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXNWaXlhJiZhLnVzZXJJbmZvKSxfZSg0KSxS''@;'; put 'put ''ZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpLF9lKCksUmUoIm5nSWYiLGEuc2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXM5KSxfZSgzKSxtcigiR1JPVVBTICgiLGEudXNlckdyb3Vwc0NvdW50fHwiMCIsIikiKSxfZSgpLFJlKCJuZ0lmIiwwPT1hLnVzZXJH''@;'; put 'put ''cm91cHNDb3VudCksX2UoMiksUmUoIm5nSWYiLDAhPWEudXNlckdyb3Vwc0NvdW50KSxfZSgpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzOSksX2UoKSxSZSgibmdJZiIsYS5zZXJ2ZXJUeXBlPT09YS5TZXJ2ZXJUeXBlLlNhczkpLF9lKCksUmUoIm5nSWYiLGEu''@;'; put 'put ''c2VydmVyVHlwZT09PWEuU2VydmVyVHlwZS5TYXM5KSxfZSgpLFJlKCJuZ0lmIixhLnNlcnZlclR5cGU9PT1hLlNlcnZlclR5cGUuU2FzOSl9fWxldCB0bWU9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmLHYpe3RoaXMuaGVscGVyU2VydmljZT1hLHRoaXMuc2FzU2VydmljZT1k''@;'; put 'put ''LHRoaXMucm91dGU9aCx0aGlzLmxvY2F0aW9uPWYsdGhpcy5yb3V0ZXI9dix0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2VyU2VhcmNoPSIiLHRoaXMucGFyYW1QcmVzZW50PSExLHRoaXMucGFyYW1OYW1lPSIiLHRoaXMuc2FzanNDb25maWc9bmV3IHlkLlNBU2pzQ29uZmlnLHRoaXMuaXNWaXlh''@;'; put 'put ''PSExLHRoaXMuc2VydmVyVHlwZT0iIix0aGlzLlNlcnZlclR5cGU9QnUuWSx0aGlzLnNlcnZlclR5cGU9dGhpcy5zYXNTZXJ2aWNlLmdldFNlcnZlclR5cGUoKSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpLCJTQVNWSVlBIj09PXRoaXMuc2FzanND''@;'; put 'put ''b25maWcuc2VydmVyVHlwZSYmKHRoaXMuaXNWaXlhPSEwKX1uZ09uSW5pdCgpe2lmKEhuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L3VzZXJuYXYvdXNlcnMiLHZvaWQgMCE9PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSYmKHRoaXMucGFyYW1QcmVzZW50PSEwLHRoaXMu''@;'; put 'put ''cGFyYW1OYW1lPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaSksSG4udXNlcm5hdi51c2VyTGlzdCYmIXRoaXMucGFyYW1QcmVzZW50KXRoaXMudXNlcnM9SG4udXNlcm5hdi51c2VyTGlzdCx0aGlzLnVzZXJTZWFyY2g9SG4udXNlcm5hdi51c2VyU2VhcmNoO2Vsc2UgaWYodm9pZCAw''@;'; put 'put ''PT09SG4udXNlcm5hdi51c2VyTGlzdD8odGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIvaWRlbnRpdGllcy91c2Vycz9saW1pdD0yMDAwIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGE9PmEu''@;'; put 'put ''dGV4dCgpKS50aGVuKGE9PntsZXQgaD1KU09OLnBhcnNlKGEpLml0ZW1zLm1hcChmPT4oe05BTUU6Zi5uYW1lLFVSSTpmLmlkLFBST1ZJREVSOmYucHJvdmlkZXJJZH0pKTt0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2Vycz1oLEhuLnVzZXJuYXYudXNlckxpc3Q9aH0pOnRoaXMuc2FzU2Vydmlj''@;'; put 'put ''ZS5yZXF1ZXN0KCJ1c2VybmF2L3VzZXJtZW1iZXJzIixudWxsKS50aGVuKGE9Pnt0aGlzLmxvYWRpbmc9ITEsdGhpcy51c2Vycz1hLmFkYXB0ZXJSZXNwb25zZS51c2VycyxIbi51c2VybmF2LnVzZXJMaXN0PWEuYWRhcHRlclJlc3BvbnNlLnVzZXJzfSkpOih0aGlzLnVzZXJzPUhuLnVzZXJu''@;'; put 'put ''YXYudXNlckxpc3QsdGhpcy51c2VyU2VhcmNoPUhuLnVzZXJuYXYudXNlclNlYXJjaCksdGhpcy5wYXJhbVByZXNlbnQpaWYodGhpcy5sb2FkaW5nPSEwLHRoaXMuaXNWaXlhKXtsZXQgYT10aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy51cmk7ZmV0Y2godGhpcy5zYXNqc0NvbmZpZy5zZXJ2''@;'; put 'put ''ZXJVcmwrIi9pZGVudGl0aWVzL3VzZXJzLyIrYSsiL21lbWJlcnNoaXBzP2xpbWl0PTIwMDAiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0pLnRoZW4oZD0+ZC50ZXh0KCkpLnRoZW4oZD0+e2xldCBoPUpTT04ucGFyc2UoZCk7dGhpcy51c2VyRGF0YT1oLHRoaXMubG9h''@;'; put 'put ''ZGluZz0hMTtsZXQgZj1oLml0ZW1zLm1hcCh2PT4oe0dST1VQTkFNRTp2Lm5hbWUsVVJJOnYuaWR9KSk7dGhpcy51c2VyR3JvdXBzPWYsdGhpcy51c2VyR3JvdXBzQ291bnQ9Zi5sZW5ndGgsdGhpcy51c2VycyYmKHRoaXMudXNlckluZm89dGhpcy51c2Vycy5maW5kKHY9PnYuVVJJPT09YSkp''@;'; put 'put ''fSl9ZWxzZXtjb25zdCBhPXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnVyaTt0aGlzLnNhc1NlcnZpY2UucmVxdWVzdCgidXNlcm5hdi91c2VyZ3JvdXBzYnltZW1iZXIiLHtpd2FudDpbe3VyaTphfV19KS50aGVuKGg9Pntzd2l0Y2godGhpcy5sb2FkaW5nPSExLHRoaXMuc2VydmVyVHlw''@;'; put 'put ''ZSl7Y2FzZSBCdS5ZLlNhczk6dGhpcy51c2VySW5mbz1oLmFkYXB0ZXJSZXNwb25zZS5pbmZvWzBdLHRoaXMudXNlckVtYWlscz1oLmFkYXB0ZXJSZXNwb25zZS5lbWFpbHMsdGhpcy51c2VyRW1haWxzQ291bnQ9aC5hZGFwdGVyUmVzcG9uc2UuZW1haWxzLmxlbmd0aCx0aGlzLnVzZXJSb2xl''@;'; put 'put ''cz1oLmFkYXB0ZXJSZXNwb25zZS5yb2xlcyx0aGlzLnVzZXJSb2xlc0NvdW50PWguYWRhcHRlclJlc3BvbnNlLnJvbGVzLmxlbmd0aCx0aGlzLnVzZXJMb2dpbnM9aC5hZGFwdGVyUmVzcG9uc2UubG9naW5zLHRoaXMudXNlckxvZ2luc0NvdW50PWguYWRhcHRlclJlc3BvbnNlLmxvZ2lucy5s''@;'; put 'put ''ZW5ndGg7YnJlYWs7Y2FzZSBCdS5ZLlNhc2pzOmlmKHRoaXMudXNlcnMpdGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQoZj0+Zi5VUkk9PT1hKTtlbHNle2NvbnN0IGY9aC5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzWzBdO3RoaXMudXNlckluZm89e1VSSTpmLklELE5BTUU6Zi5OQU1FLERJ''@;'; put 'put ''U1BMQVlOQU1FOmYuTkFNRX19fXRoaXMudXNlckRhdGE9aC5hZGFwdGVyUmVzcG9uc2UsdGhpcy51c2VyR3JvdXBzPWguYWRhcHRlclJlc3BvbnNlLmdyb3Vwcyx0aGlzLnVzZXJHcm91cHNDb3VudD1oLmFkYXB0ZXJSZXNwb25zZS5ncm91cHMubGVuZ3RofSl9fXVzZXJMaXN0T25GaWx0ZXIo''@;'; put 'put ''KXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMudXNlcnMsdGhpcy51c2VyU2VhcmNoLCJOQU1FIiksSG4udXNlcm5hdi51c2VyU2VhcmNoPXRoaXMudXNlclNlYXJjaH11c2VyT25DbGljayhhKXt0aGlzLmxvYWRpbmc9ITA7bGV0IGQ9dGhpcy5yb3V0ZXIudXJsO3Ro''@;'; put 'put ''aXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMucGFyYW1QcmVzZW50P2Quc2xpY2UoMCxkLmxhc3RJbmRleE9mKCIvIikpKyIvIitlbmNvZGVVUkkoYS5VUkkpOmQrIi8iK2VuY29kZVVSSShhLlVSSSkpLHRoaXMuaXNWaXlhP2ZldGNoKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKyIv''@;'; put 'put ''aWRlbnRpdGllcy91c2Vycy8iK2EuVVJJKyIvbWVtYmVyc2hpcHM/bGltaXQ9MjAwMCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihoPT5oLnRleHQoKSkudGhlbihoPT57bGV0IGY9SlNPTi5wYXJzZShoKTt0aGlzLnVzZXJEYXRhPWYsdGhpcy5sb2FkaW5n''@;'; put 'put ''PSExO2xldCB2PWYuaXRlbXMubWFwKFM9Pih7R1JPVVBOQU1FOlMubmFtZSxVUkk6Uy5pZH0pKTt0aGlzLnVzZXJHcm91cHM9dix0aGlzLnVzZXJHcm91cHNDb3VudD12Lmxlbmd0aCx0aGlzLnVzZXJzJiYodGhpcy51c2VySW5mbz10aGlzLnVzZXJzLmZpbmQoUz0+Uy5VUkk9PT1hLlVSSSkp''@;'; put 'put ''fSk6dGhpcy5zYXNTZXJ2aWNlLnJlcXVlc3QoInVzZXJuYXYvdXNlcmdyb3Vwc2J5bWVtYmVyIix7aXdhbnQ6W3t1cmk6YS5VUkl9XX0pLnRoZW4oZj0+e3N3aXRjaCh0aGlzLmxvYWRpbmc9ITEsdGhpcy5zZXJ2ZXJUeXBlKXtjYXNlIEJ1LlkuU2FzOTp0aGlzLnVzZXJJbmZvPWYuYWRhcHRl''@;'; put 'put ''clJlc3BvbnNlLmluZm9bMF0sdGhpcy51c2VyRW1haWxzPWYuYWRhcHRlclJlc3BvbnNlLmVtYWlscyx0aGlzLnVzZXJFbWFpbHNDb3VudD1mLmFkYXB0ZXJSZXNwb25zZS5lbWFpbHMubGVuZ3RoLHRoaXMudXNlclJvbGVzPWYuYWRhcHRlclJlc3BvbnNlLnJvbGVzLHRoaXMudXNlclJvbGVz''@;'; put 'put ''Q291bnQ9Zi5hZGFwdGVyUmVzcG9uc2Uucm9sZXMubGVuZ3RoLHRoaXMudXNlckxvZ2lucz1mLmFkYXB0ZXJSZXNwb25zZS5sb2dpbnMsdGhpcy51c2VyTG9naW5zQ291bnQ9Zi5hZGFwdGVyUmVzcG9uc2UubG9naW5zLmxlbmd0aDticmVhaztjYXNlIEJ1LlkuU2FzanM6aWYodGhpcy51c2Vy''@;'; put 'put ''cyl0aGlzLnVzZXJJbmZvPXRoaXMudXNlcnMuZmluZCh2PT52LlVSST09PWEuVVJJKTtlbHNle2NvbnN0IHY9Zi5hZGFwdGVyUmVzcG9uc2UuZ3JvdXBzWzBdO3RoaXMudXNlckluZm89e1VSSTp2LklELE5BTUU6di5OQU1FLERJU1BMQVlOQU1FOnYuTkFNRX19fXRoaXMudXNlckRhdGE9Zi5h''@;'; put 'put ''ZGFwdGVyUmVzcG9uc2UsdGhpcy51c2VyR3JvdXBzPWYuYWRhcHRlclJlc3BvbnNlLmdyb3Vwcyx0aGlzLnVzZXJHcm91cHNDb3VudD1mLmFkYXB0ZXJSZXNwb25zZS5ncm91cHMubGVuZ3RofSl9Z2V0Um9sZVVSSShhKXtyZXR1cm4gYS5zcGxpdCgiT01TT0JKOklkZW50aXR5R3JvdXAiKVsx''@;'; put 'put ''XS5zbGljZSgxKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShldSksSmUodmEpLEplKE9jKSxKZShtZCksSmUoSnMpKX19c3RhdGlje3RoaXMuXHUwMjc1Y21wPVNyKHt0eXBlOmwsc2VsZWN0b3JzOltbImFwcC11c2VyIl1dLGhvc3RBdHRy''@;'; put 'put ''czpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczo3LHZhcnM6NCxjb25zdHM6W1sic2VhcmNoTGliVHJlZUlucHV0IiwiIl0sWzEsInNpZGViYXItaGVpZ2h0Il0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFy''@;'; put 'put ''ZWEiXSxbImNsYXNzIiwibG9hZGluZ1NwaW5uZXIiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJzZWFyY2gtbm9kZSJdLFsxLCJ0cmVlLXNlYXJjaC13cmFwcGVyIl0sWyJhcHBTdGVhbEZvY3VzIiwiIiwiY2xySW5wdXQiLCIiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBieSBVc2VycyIsIm5h''@;'; put 'put ''bWUiLCJpbnB1dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywibmdNb2RlbENoYW5nZSIsImtleXVwIiwibmdNb2RlbCJdLFsic2hhcGUiLCJzZWFyY2giLDQsIm5nSWYiXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInNlYXJjaCJdLFsic2hhcGUiLCJ0''@;'; put 'put ''aW1lcyIsMywiY2xpY2siXSxbMywiYWN0aXZlIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLCJsaXN0LXBhZGRpbmciXSxbInNoYXBlIiwidXNlciJdLFsxLCJsb2FkaW5nU3Bpbm5lciJdLFsxLCJzcGlubmVyIl0sWyJjbGFzcyIsImNs''@;'; put 'put ''ci1yb3ciLDQsIm5nSWYiXSxbMSwiY2xyLXJvdyJdLFsxLCJjbHItY29sLTgiXSxbMSwiY2FyZCIsInVzZXItZGF0YSJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbImNsYXNzIiwidGFibGUgdXNlci10YWJsZSIsNCwibmdJZiJdLFsxLCJ0YWJsZSIsInVzZXItaW5mbyJdLFsxLCJsZWZ0Il0s''@;'; put 'put ''WzEsInVzZXItaW5mby10ZXh0Il0sWzEsInRhYmxlIiwidXNlci10YWJsZSJdLFsxLCJ3aWR0aC01MCJdLFsxLCIiXSxbInJvdXRlckxpbmtBY3RpdmUiLCJhY3RpdmUiLCJjbGFzcyIsIiIsMywicm91dGVyTGluayIsNCwibmdJZiJdLFsicm91dGVyTGlua0FjdGl2ZSIsImFjdGl2ZSIsMSwi''@;'; put 'put ''IiwzLCJyb3V0ZXJMaW5rIl0sWzMsInJvdXRlckxpbmsiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJhcHAtc2lkZWJhciIsMSkoMSwiY2xyLXRyZWUiKSxndCgyLFVidCw2LDMsImNsci10cmVlLW5vZGUiLDIpKDMsWWJ0LDIsMSwibmctY29udGFpbmVyIiwzKSxtZSgp''@;'; put 'put ''KCksZ2UoNCwiZGl2Iiw0KSxndCg1LFdidCwzLDAsImRpdiIsNSkoNixteXQsMTksMTEsImRpdiIsNiksbWUoKSksMiZkJiYoX2UoMiksUmUoIm5nSWYiLGgudXNlcnMpLF9lKCksUmUoIm5nRm9yT2YiLGgudXNlcnMpLF9lKDIpLFJlKCJuZ0lmIixoLmxvYWRpbmcpLF9lKCksUmUoIm5nSWYi''@;'; put 'put ''LGgudXNlckRhdGEmJiFoLmxvYWRpbmcpKX0sZGVwZW5kZW5jaWVzOltWcywkaSxrMCx6Uyx1bCxfYSx1YSxBZCxIMSxZYSxFZCxzcCxvcF0sc3R5bGVzOlsiLnNpZGViYXItaGVpZ2h0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJX0udXNlci1pbmZvLXRleHRbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZToyMHB4fSAgYm9keVtjZHMtdGhlbWU9ZGFya10gLnVzZXItaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTE7Ym9yZGVyLWNvbG9yOiMzMTQzNTF9ICBib2R5W2Nkcy10aGVtZT1kYXJrXSAudXNlci1kYXRhe2JhY2tncm91bmQtY29s''@;'; put 'put ''b3I6IzMxNDM1MTtib3JkZXItY29sb3I6IzMxNDM1MX0gIGJvZHlbY2RzLXRoZW1lPWRhcmtdIC51c2VyLXRhYmxlIHRib2R5IHRyOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzI5NDA0Yn0gIGJvZHlbY2RzLXRoZW1lPWxpZ2h0XSAudXNlci1pbmZve2JhY2tncm91bmQtY29sb3I6I2Y5Zjlm''@;'; put 'put ''OTtib3JkZXItY29sb3I6I2E3YTdhNztib3gtc2hhZG93OjAgMnB4IDVweCAjZGFkN2Q3fSAgYm9keVtjZHMtdGhlbWU9bGlnaHRdIC51c2VyLWRhdGF7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5O2JvcmRlci1jb2xvcjojYTdhN2E3O2JveC1zaGFkb3c6MCAycHggNXB4ICNkYWQ3ZDd9ICBi''@;'; put 'put ''b2R5W2Nkcy10aGVtZT1saWdodF0gLnVzZXItdGFibGUgdGJvZHkgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2fS51c2VyLWluZm9bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLXJhZGl1czozcHh9LnVzZXItaW5mb1tfbmdjb250ZW50LSVDT01Q''@;'; put 'put ''JV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LnVzZXItZGF0YVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItcmFkaXVzOjNweH0udXNlci1kYXRhW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OmF1dG99LnVzZXItZGF0''@;'; put 'put ''YVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC51c2VyLWRhdGFbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS51c2VyLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS51c2Vy''@;'; put 'put ''LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNkYWRhZGF9LnVzZXItdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdICAgdHJbX25nY29udGVudC0lQ09NUCVdOmhvdmVy''@;'; put 'put ''e2N1cnNvcjpwb2ludGVyfS53aWR0aC01MFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6NTAlfS53aWR0aC0zM1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MzMlfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXk6c2Nyb2xsO21heC1oZWlnaHQ6NTAwcHh9''@;'; put 'put ''QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey51c2VyLWRhdGFbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6dW5zZXQhaW1wb3J0YW50fX0iXX0pfX1yZXR1cm4gbH0pKCksdnl0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkKXt0aGlzLmh0dHA9YSx0aGlz''@;'; put 'put ''LmFwcFN0b3JlU2VydmljZT1kLHRoaXMudml5YUFwaXM9e0FuYWx5dGljc19JbnNpZ2h0czp7aW5zaWdodHM6Ii9pbnNpZ2h0cyJ9LFZpc3VhbGlzYXRpb246e3JlcG9ydHM6Ii9yZXBvcnRzIixyZXBvcnRJbWFnZXM6Ii9yZXBvcnRJbWFnZXMiLHJlcG9ydFRyYW5zZm9ybXM6Ii9yZXBvcnRU''@;'; put 'put ''cmFuc2Zvcm1zIix2aXN1YWxBbmFseXRpY3M6Ii92aXN1YWxBbmFseXRpY3MifSxDb21wdXRlOntqb2JzOiIvam9iRGVmaW5pdGlvbnMiLGpvYkV4ZWN1dGlvbjoiL2pvYkV4ZWN1dGlvbiJ9LERlY2lzaW9uX01hbmFnZW1lbnQ6e21vZGVsTWFuYWdlbWVudDoiL21vZGVsTWFuYWdlbWVudCIs''@;'; put 'put ''bW9kZWxSZXBvc2l0b3J5OiIvbW9kZWxSZXBvc2l0b3J5Iixtb2RlbFB1Ymxpc2g6Ii9tb2RlbFB1Ymxpc2giLG1pY3JvYW5hbHl0aWNTY29yZToiL21pY3JvYW5hbHl0aWNTY29yZSIsZGF0YU1pbmluZzoiL2RhdGFNaW5pbmciLGJ1c2luZXNzUnVsZXM6Ii9idXNpbmVzc1J1bGVzIixyZWZl''@;'; put 'put ''cmVuY2VEYXRhOiIvcmVmZXJlbmNlRGF0YSIsdHJlYXRtZW50RGVmaW5pdGlvbnM6Ii90cmVhdG1lbnREZWZpbml0aW9ucyIsc3ViamVjdENvbnRhY3RzOiIvc3ViamVjdENvbnRhY3RzIixkZWNpc2lvbnNSdW50aW1lQnVpbGRlcjoiL2RlY2lzaW9uc1J1bnRpbWVCdWlsZGVyIn0sQ29yZV9T''@;'; put 'put ''ZXJ2aWNlczp7Zm9sZGVyczoiL2ZvbGRlcnMiLGZpbGVzOiIvZmlsZXMiLGFubm90YXRpb25zOiIvYW5ub3RhdGlvbnMiLGF1dGhvcml6YXRpb246Ii9hdXRob3JpemF0aW9uIixyZWxhdGlvbnNoaXBzOiIvcmVsYXRpb25zaGlwcyIsU0FTTG9nb246Ii9TQVNMb2dvbiJ9LEF1dG9tYXRlZF9N''@;'; put 'put ''YWNoaW5lX0xlYXJuaW5nOnttbFBpcGVsaW5lQXV0b21hdGlvbjoiL21sUGlwZWxpbmVBdXRvbWF0aW9uIn0sT3RoZXI6e2lkZW50aXRpZXM6Ii9pZGVudGl0aWVzIn19LHRoaXMuc2VydmVyVXJsPSIiO2NvbnN0IGg9dGhpcy5hcHBTdG9yZVNlcnZpY2UuZ2V0RGNBZGFwdGVyU2V0dGluZ3Mo''@;'; put 'put ''KTt0aGlzLnNlcnZlclVybD1oPy5zZXJ2ZXJVcmx8fCIiLHRoaXMuZ2V0QnlDb2xsZWN0aW9uKCJqb2JzIikuc3Vic2NyaWJlKGY9Pntjb25zb2xlLmxvZygicmVzIixmKX0pfWdldEFsbENvbGxlY3Rpb25zKCl7cmV0dXJuIHRoaXMudml5YUFwaXN9Z2V0QnlVcmwoYSl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aHR0cC5nZXQoYCR7dGhpcy5zZXJ2ZXJVcmx9JHthfWAse3dpdGhDcmVkZW50aWFsczohMH0pfWdldEJ5Q29sbGVjdGlvbihhKXtyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnNlcnZlclVybH0ke2F9YCx7d2l0aENyZWRlbnRpYWxzOiEwfSl9c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1''@;'; put 'put ''bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCkoY3IobVUpLGNyKHQ4KSl9fXN0YXRpY3t0aGlzLlx1MDI3NXByb3Y9aXIoe3Rva2VuOmwsZmFjdG9yeTpsLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pfX1yZXR1cm4gbH0pKCk7Y29uc3QgX3l0PWw9Plsic2VnbWVudCIsbF0sYnl0PShs''@;'; put 'put ''LGMpPT4oeyJzZWdtZW50LW1haW4iOiEwLGV4cGFuZGFibGU6bCxleHBhbmRlZDpjfSk7ZnVuY3Rpb24geXl0KGwsYyl7MSZsJiZZdCgwLCJkaXYiLDkpfWZ1bmN0aW9uIHd5dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsInNwYW4iLDEwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7''@;'; put 'put ''X3QoYSk7Y29uc3QgaD1OZSgpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS5vblZhbHVlQ2xpY2soaCkpfSksUGUoMSksbWUoKX1pZigyJmwpe2NvbnN0IGE9TmUoKS4kaW1wbGljaXQ7X2UoKSxscihhLmRlc2NyaXB0aW9uKX19ZnVuY3Rpb24gQ3l0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNu''@;'; put 'put ''KCk7Z2UoMCwic2VjdGlvbiIsMTEpKDEsIm5neC1qc29uLXZpZXdlciIsMTIpLEl0KCJzZWdtZW50TGlua0NsaWNrZWQiLGZ1bmN0aW9uKGgpe3JldHVybiBfdChhKSxidChOZSgyKS5vblNlZ21lbnRMaW5rQ2xpY2soaCkpfSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNp''@;'; put 'put ''dCxkPU5lKCk7X2UoKSxSZSgianNvbiIsYS52YWx1ZSkoImV4cGFuZGVkIixkLmV4cGFuZGVkKSgiZGVwdGgiLGQuZGVwdGgpKCJfY3VycmVudERlcHRoIixkLl9jdXJyZW50RGVwdGgrMSl9fWZ1bmN0aW9uIFN5dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsInNlY3Rpb24iLDIp''@;'; put 'put ''KDEsInNlY3Rpb24iLDMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtjb25zdCBoPV90KGEpLiRpbXBsaWNpdDtyZXR1cm4gYnQoTmUoKS50b2dnbGUoaCkpfSksZ3QoMix5eXQsMSwwLCJkaXYiLDQpLGdlKDMsInNwYW4iLDUpLFBlKDQpLG1lKCksZ2UoNSwic3BhbiIsNiksUGUoNiwiOiAiKSxt''@;'; put 'put ''ZSgpLGd0KDcsd3l0LDIsMSwic3BhbiIsNyksbWUoKSxndCg4LEN5dCwyLDQsInNlY3Rpb24iLDgpLG1lKCl9aWYoMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKTtSZSgibmdDbGFzcyIsaDMoNixfeXQsInNlZ21lbnQtdHlwZS0iK2EudHlwZSkpLF9lKCksUmUoIm5nQ2xhc3MiLGYz''@;'; put 'put ''KDgsYnl0LGQuaXNFeHBhbmRhYmxlKGEpLGEuZXhwYW5kZWQpKSxfZSgpLFJlKCJuZ0lmIixkLmlzRXhwYW5kYWJsZShhKSksX2UoMiksbHIoYS5rZXkpLF9lKDMpLFJlKCJuZ0lmIiwhYS5leHBhbmRlZHx8IWQuaXNFeHBhbmRhYmxlKGEpKSxfZSgpLFJlKCJuZ0lmIixhLmV4cGFuZGVkJiZk''@;'; put 'put ''LmlzRXhwYW5kYWJsZShhKSl9fWxldCBNeXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3Rvcigpe3RoaXMuZXhwYW5kZWQ9ITAsdGhpcy5kZXB0aD0tMSx0aGlzLl9jdXJyZW50RGVwdGg9MCx0aGlzLnNlZ21lbnRMaW5rQ2xpY2tlZD1uZXcgRHIsdGhpcy5zZWdtZW50cz1bXX1uZ09uQ2hhbmdl''@;'; put 'put ''cygpe3RoaXMuc2VnbWVudHM9W10sdGhpcy5qc29uPXRoaXMuZGVjeWNsZSh0aGlzLmpzb24pLCJvYmplY3QiPT10eXBlb2YgdGhpcy5qc29uP09iamVjdC5rZXlzKHRoaXMuanNvbikuZm9yRWFjaChhPT57dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZShhLHRoaXMuanNv''@;'; put 'put ''blthXSkpfSk6dGhpcy5zZWdtZW50cy5wdXNoKHRoaXMucGFyc2VLZXlWYWx1ZShgKCR7dHlwZW9mIHRoaXMuanNvbn0pYCx0aGlzLmpzb24pKX1pc0V4cGFuZGFibGUoYSl7cmV0dXJuIm9iamVjdCI9PT1hLnR5cGV8fCJhcnJheSI9PT1hLnR5cGV9dG9nZ2xlKGEpe3RoaXMuaXNFeHBhbmRh''@;'; put 'put ''YmxlKGEpJiYoYS5leHBhbmRlZD0hYS5leHBhbmRlZCl9b25WYWx1ZUNsaWNrKGEpeyJsaW5rIj09PWEudHlwZSYmdGhpcy5zZWdtZW50TGlua0NsaWNrZWQuZW1pdChhLnZhbHVlKX1vblNlZ21lbnRMaW5rQ2xpY2soYSl7dGhpcy5zZWdtZW50TGlua0NsaWNrZWQuZW1pdChhKX1wYXJzZUtl''@;'; put 'put ''eVZhbHVlKGEsZCl7Y29uc3QgaD17a2V5OmEsdmFsdWU6ZCx0eXBlOnZvaWQgMCxkZXNjcmlwdGlvbjoiIitkLGV4cGFuZGVkOnRoaXMuaXNFeHBhbmRlZCgpfTtzd2l0Y2godHlwZW9mIGgudmFsdWUpe2Nhc2UibnVtYmVyIjpoLnR5cGU9Im51bWJlciI7YnJlYWs7Y2FzZSJib29sZWFuIjpo''@;'; put 'put ''LnR5cGU9ImJvb2xlYW4iO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOmgudHlwZT0iZnVuY3Rpb24iO2JyZWFrO2Nhc2Uic3RyaW5nIjppZih0aGlzLmlzTGluayhoLnZhbHVlKSl7aC50eXBlPSJsaW5rIjticmVha31oLnR5cGU9InN0cmluZyIsaC5kZXNjcmlwdGlvbj0nIicraC52YWx1ZSsnIic7''@;'; put 'put ''YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmgudHlwZT0idW5kZWZpbmVkIixoLmRlc2NyaXB0aW9uPSJ1bmRlZmluZWQiO2JyZWFrO2Nhc2Uib2JqZWN0IjpudWxsPT09aC52YWx1ZT8oaC50eXBlPSJudWxsIixoLmRlc2NyaXB0aW9uPSJudWxsIik6QXJyYXkuaXNBcnJheShoLnZhbHVlKT8oaC50''@;'; put 'put ''eXBlPSJhcnJheSIsaC5kZXNjcmlwdGlvbj0iQXJyYXlbIitoLnZhbHVlLmxlbmd0aCsiXSAiK0pTT04uc3RyaW5naWZ5KGgudmFsdWUpKTpoLnZhbHVlIGluc3RhbmNlb2YgRGF0ZT9oLnR5cGU9ImRhdGUiOihoLnR5cGU9Im9iamVjdCIsaC5kZXNjcmlwdGlvbj0iT2JqZWN0ICIrSlNPTi5z''@;'; put 'put ''dHJpbmdpZnkoaC52YWx1ZSkpfXJldHVybiBofWlzTGluayhhKXtyZXR1cm4iaHR0cHM6Ly8iPT09YS5zdWJzdHJpbmcoMCw4KXx8Imh0dHA6Ly8iPT09YS5zdWJzdHJpbmcoMCw3KXx8Ii8iPT09YVswXX1pc0V4cGFuZGVkKCl7cmV0dXJuIHRoaXMuZXhwYW5kZWQmJiEodGhpcy5kZXB0aD4t''@;'; put 'put ''MSYmdGhpcy5fY3VycmVudERlcHRoPj10aGlzLmRlcHRoKX1kZWN5Y2xlKGEpe2NvbnN0IGQ9bmV3IFdlYWtNYXA7cmV0dXJuIGZ1bmN0aW9uIGgoZix2KXtsZXQgUyxWO3JldHVybiJvYmplY3QiIT10eXBlb2YgZnx8bnVsbD09PWZ8fGYgaW5zdGFuY2VvZiBCb29sZWFufHxmIGluc3RhbmNl''@;'; put 'put ''b2YgRGF0ZXx8ZiBpbnN0YW5jZW9mIE51bWJlcnx8ZiBpbnN0YW5jZW9mIFJlZ0V4cHx8ZiBpbnN0YW5jZW9mIFN0cmluZz9mOihTPWQuZ2V0KGYpLHZvaWQgMCE9PVM/eyRyZWY6U306KGQuc2V0KGYsdiksQXJyYXkuaXNBcnJheShmKT8oVj1bXSxmLmZvckVhY2goZnVuY3Rpb24oUSxkZSl7''@;'; put 'put ''VltkZV09aChRLHYrIlsiK2RlKyJdIil9KSk6KFY9e30sT2JqZWN0LmtleXMoZikuZm9yRWFjaChmdW5jdGlvbihRKXtWW1FdPWgoZltRXSx2KyJbIitKU09OLnN0cmluZ2lmeShRKSsiXSIpfSkpLFYpKX0oYSwiJCIpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5l''@;'; put 'put ''dyhhfHxsKX0sbC5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1sibmd4LWpzb24tdmlld2VyIl1dLGlucHV0czp7anNvbjoianNvbiIsZXhwYW5kZWQ6ImV4cGFuZGVkIixkZXB0aDoiZGVwdGgiLF9jdXJyZW50RGVwdGg6Il9jdXJyZW50RGVwdGgifSxvdXRwdXRzOntzZWdtZW50''@;'; put 'put ''TGlua0NsaWNrZWQ6InNlZ21lbnRMaW5rQ2xpY2tlZCJ9LGZlYXR1cmVzOltKYV0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbMSwibmd4LWpzb24tdmlld2VyIl0sWzMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJuZ0NsYXNzIl0sWzMsImNsaWNrIiwibmdDbGFzcyJdLFsi''@;'; put 'put ''Y2xhc3MiLCJ0b2dnbGVyIiw0LCJuZ0lmIl0sWzEsInNlZ21lbnQta2V5Il0sWzEsInNlZ21lbnQtc2VwYXJhdG9yIl0sWyJjbGFzcyIsInNlZ21lbnQtdmFsdWUiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNoaWxkcmVuIiw0LCJuZ0lmIl0sWzEsInRvZ2dsZXIiXSxbMSwic2Vn''@;'; put 'put ''bWVudC12YWx1ZSIsMywiY2xpY2siXSxbMSwiY2hpbGRyZW4iXSxbMywic2VnbWVudExpbmtDbGlja2VkIiwianNvbiIsImV4cGFuZGVkIiwiZGVwdGgiLCJfY3VycmVudERlcHRoIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKGEsZCl7MSZhJiYoZ2UoMCwic2VjdGlvbiIsMCksZ3QoMSxTeXQsOSwx''@;'; put 'put ''MSwic2VjdGlvbiIsMSksbWUoKSksMiZhJiYoX2UoKSxSZSgibmdGb3JPZiIsZC5zZWdtZW50cykpfSxkZXBlbmRlbmNpZXM6W0pjLFZzLCRpLGxdLHN0eWxlczpbJ0BjaGFyc2V0ICJVVEYtOCI7Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6dmFyKC0t''@;'; put 'put ''bmd4LWpzb24tZm9udC1mYW1pbHksIG1vbm9zcGFjZSk7Zm9udC1zaXplOnZhcigtLW5neC1qc29uLWZvbnQtc2l6ZSwgMWVtKTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweDttYXJnaW46MXB4IDFweCAxcHggMTJweH0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde3dvcmQtd3JhcDpicmVhay13b3JkfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gICAudG9nZ2xlcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246''@;'; put 'put ''YWJzb2x1dGU7bWFyZ2luLWxlZnQ6LTE0cHg7bWFyZ2luLXRvcDozcHg7Zm9udC1zaXplOi44ZW07bGluZS1oZWlnaHQ6MS4yZW07dmVydGljYWwtYWxpZ246bWlkZGxlO2NvbG9yOnZhcigtLW5neC1qc29uLXRvZ2dsZXIsICM3ODc4NzgpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0l''@;'; put 'put ''Q09NUCVdICAgLnNlZ21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gICAudG9nZ2xlcltfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiXFwyNWJhIjt0cmFuc2l0aW9uOnRyYW5zZm9y''@;'; put 'put ''bSAuMXMgZWFzZS1pbn0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQta2V5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gt''@;'; put 'put ''anNvbi1rZXksICM0RTE4N0MpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnRbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9y''@;'; put 'put ''OnZhcigtLW5neC1qc29uLXNlcGFyYXRvciwgIzk5OSl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi12YWx1ZSwgIzAwMCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudFtfbmdjb250ZW50LSVDT01QJV0gICAuY2hpbGRyZW5bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjEycHh9Lm5neC1qc29uLXZp''@;'; put 'put ''ZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLXN0cmluZ1tfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1zdHJpbmcs''@;'; put 'put ''ICNGRjZCNkIpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1udW1iZXJbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6''@;'; put 'put ''dmFyKC0tbmd4LWpzb24tbnVtYmVyLCAjMDA5Njg4KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtYm9vbGVhbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19u''@;'; put 'put ''Z2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1ib29sZWFuLCAjQjkzOEE0KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtZGF0ZVtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAl''@;'; put 'put ''XSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjp2YXIoLS1uZ3gtanNvbi1kYXRlLCAjMDU2NjhEKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtYXJyYXlbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFp''@;'; put 'put ''bltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tYXJyYXksICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1vYmplY3RbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tb2JqZWN0LCAjOTk5KX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtZnVu''@;'; put 'put ''Y3Rpb25bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tZnVuY3Rpb24sICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVdICAgLnNlZ21lbnQtdHlwZS1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLWxpbmssICM5QjU5QjYpfS5uZ3gtanNvbi12aWV3''@;'; put 'put ''ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS1udWxsW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnZhcigtLW5neC1qc29uLW51bGwsICNmZmYp''@;'; put 'put ''fS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21lbnQtdHlwZS11bmRlZmluZWRbX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtbWFpbltfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0t''@;'; put 'put ''bmd4LWpzb24tdW5kZWZpbmVkLCAjZmZmKX0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zZWdtZW50LXR5cGUtbnVsbFtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQt''@;'; put 'put ''JUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW5neC1qc29uLW51bGwtYmcsIHJlZCl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLXVuZGVmaW5lZFtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSA+IC5zZWdtZW50LWtleVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6dmFyKC0tbmd4LWpzb24tdW5kZWZpbmVkLWtleSwgIzk5OSl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLXVuZGVmaW5lZFtfbmdjb250ZW50LSVDT01QJV0gPiAu''@;'; put 'put ''c2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW5neC1qc29uLXVuZGVmaW5lZC1rZXksICM5OTkpfS5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLnNlZ21l''@;'; put 'put ''bnQtdHlwZS1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVdID4gLnNlZ21lbnQtdmFsdWVbX25nY29udGVudC0lQ09NUCVde3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXJ9Lm5neC1qc29uLXZpZXdlcltfbmdj''@;'; put 'put ''b250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLW9iamVjdFtfbmdjb250ZW50LSVDT01QJV0gPiAuc2VnbWVudC1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuc2VnbWVudC10eXBlLWFycmF5W19uZ2NvbnRlbnQtJUNP''@;'; put 'put ''TVAlXSA+IC5zZWdtZW50LW1haW5bX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0ubmd4LWpzb24tdmlld2VyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV0gPiAudG9nZ2xlcltfbmdjb250ZW50LSVDT01QJV06YWZ0ZXJ7dHJh''@;'; put 'put ''bnNmb3JtOnJvdGF0ZSg5MGRlZyl9Lm5neC1qc29uLXZpZXdlcltfbmdjb250ZW50LSVDT01QJV0gICAuZXhwYW5kYWJsZVtfbmdjb250ZW50LSVDT01QJV0sIC5uZ3gtanNvbi12aWV3ZXJbX25nY29udGVudC0lQ09NUCVdICAgLmV4cGFuZGFibGVbX25nY29udGVudC0lQ09NUCVdID4gLnRv''@;'; put 'put ''Z2dsZXJbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyfSddfSksbH0pKCkseHl0PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9y''@;'; put 'put ''dHM6W29vXX0pLGx9KSgpLEV5dD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhKXtpZighYS5pbmNsdWRlcygiLyIpKXJldHVybiBhO2xldCBkPSIiO2NvbnN0IGg9YS5zcGxpdCgiLyIpO2ZvcihsZXQgZj0wO2Y8aC5sZW5ndGg7ZisrKWlmKCIiIT09aFtmXSl7Y29uc3Qgdj1oW2ZdO2QrPSIv''@;'; put 'put ''Iit2LGhbZl09YDxhIGhyZWY9JHtkfT4ke3Z9PC9hPmB9cmV0dXJuIGguam9pbigiLyIpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtuYW1lOiJsaW5raW56ZSIsdHlwZTpsLHB1cmU6ITB9KX19''@;'; put 'put ''cmV0dXJuIGx9KSgpLFR5dD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSxudWxsLDIpfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVwaXBlPXdhKHtuYW1lOiJwcmV0''@;'; put 'put ''dHlqc29uIix0eXBlOmwscHVyZTohMH0pfX1yZXR1cm4gbH0pKCk7ZnVuY3Rpb24ga3l0KGwsYyl7aWYoMSZsJiYoZ2UoMCwib3B0aW9uIiwyNCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O3o2KCJ2YWx1ZSIsYS52YWx1ZSksX2UoKSxtcigiICIsYS5rZXksIiAiKX19''@;'; put 'put ''ZnVuY3Rpb24gQXl0KGwsYyl7aWYoMSZsJiYoZ2UoMCwib3B0Z3JvdXAiLDIyKSxndCgxLGt5dCwyLDIsIm9wdGlvbiIsMjMpLGdhKDIsImtleXZhbHVlIiksbWUoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0LGQ9TmUoKTtSZSgibGFiZWwiLGEua2V5KSxfZSgpLFJlKCJuZ0Zvck9mIixV''@;'; put 'put ''bCgyLDIsZC5jb2xsZWN0aW9uc1thLmtleV0pKX19ZnVuY3Rpb24gRHl0KGwsYyl7MSZsJiYoZ2UoMCwicCIsMjUpLFBlKDEsIiBTZWxlY3QgY29sbGVjdGlvbiB0byBzdGFydCAiKSxtZSgpKX1mdW5jdGlvbiBJeXQobCxjKXsxJmwmJll0KDAsImNsci1zcGlubmVyIiwyNil9ZnVuY3Rpb24g''@;'; put 'put ''Unl0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsMzIpfWZ1bmN0aW9uIEx5dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci1pY29uIiwzMyksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoMik7cmV0dXJuIGgubGlua3NTZWFyY2g9IiIsYnQoaC5s''@;'; put 'put ''aW5rc0xpc3RPbkZpbHRlcigpKX0pLG1lKCl9fWZ1bmN0aW9uIE95dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDI3KSgxLCJkaXYiLDI4KSgyLCJpbnB1dCIsMjksMCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9''@;'; put 'put ''TmUoKTtyZXR1cm4gR3IoZi5saW5rc1NlYXJjaCxoKXx8KGYubGlua3NTZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkubGlua3NMaXN0T25GaWx0ZXIoKSl9KSxtZSgpLGd0KDQsUnl0LDEsMCwiY2xyLWljb24iLDMwKSg1LEx5dCwx''@;'; put 'put ''LDAsImNsci1pY29uIiwzMSksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1HaSgzKSxkPU5lKCk7X2UoMiksWXIoIm5nTW9kZWwiLGQubGlua3NTZWFyY2gpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24g''@;'; put 'put ''UHl0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLXRyZWUtbm9kZSIsMzUpLEl0KCJjbGljayIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBsaWNpdCx2PU5lKCk7cmV0dXJuIGJ0KHYudHJlZU5vZGVDbGlja2VkKGgsZix2LmVuZHBvaW50TGlua3MpKX0p''@;'; put 'put ''LFdyKCJjbHJFeHBhbmRlZENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5leHBhbmRlZCxoKXx8KGYuZXhwYW5kZWQ9aCksYnQoaCl9KSxnZSgxLCJwIiwzNiksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUo''@;'; put 'put ''KS4kaW1wbGljaXQ7cmV0dXJuIGJ0KE5lKCkubGlua09uQ2xpY2soaCkpfSksWXQoMiwiY2xyLWljb24iLDM3KSxQZSgzKSxtZSgpKCl9aWYoMiZsKXtjb25zdCBhPU5lKCkuJGltcGxpY2l0O1lyKCJjbHJFeHBhbmRlZCIsYS5leHBhbmRlZCksUmUoImNsckxvYWRpbmciLCEhYS5sb2FkaW5n''@;'; put 'put ''VGFibGVzJiYhYS50YWJsZXMpLF9lKDMpLF91KCIgIixhLm1ldGhvZCwiICIsYS5yZWwsIiAiKX19ZnVuY3Rpb24gRnl0KGwsYyl7aWYoMSZsJiYoVnIoMCksZ3QoMSxQeXQsNCw0LCJjbHItdHJlZS1ub2RlIiwzNCksQnIoKSksMiZsKXtjb25zdCBhPWMuJGltcGxpY2l0O19lKCksUmUoIm5n''@;'; put 'put ''SWYiLCFhLmhpZGRlbil9fWZ1bmN0aW9uIE55dChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDMyKX1mdW5jdGlvbiBIeXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNvbiIsMzMpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpO3JldHVy''@;'; put 'put ''biBoLml0ZW1zU2VhcmNoPSIiLGJ0KGguaXRlbXNMaXN0T25GaWx0ZXIoKSl9KSxtZSgpfX1mdW5jdGlvbiBWeXQobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiwyNykoMSwiZGl2IiwyOCkoMiwiaW5wdXQiLDM4LDEpLFdyKCJuZ01vZGVsQ2hhbmdlIixm''@;'; put 'put ''dW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYuaXRlbXNTZWFyY2gsaCl8fChmLml0ZW1zU2VhcmNoPWgpLGJ0KGgpfSksSXQoImtleXVwIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLml0ZW1zTGlzdE9uRmlsdGVyKCkpfSksbWUoKSxndCg0LE55dCwx''@;'; put 'put ''LDAsImNsci1pY29uIiwzMCkoNSxIeXQsMSwwLCJjbHItaWNvbiIsMzEpLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2koMyksZD1OZSgpO19lKDIpLFlyKCJuZ01vZGVsIixkLml0ZW1zU2VhcmNoKSxfZSgyKSxSZSgibmdJZiIsYS52YWx1ZS5sZW5ndGg8MSksX2UoKSxSZSgibmdJZiIsYS52''@;'; put 'put ''YWx1ZS5sZW5ndGg+MCl9fWZ1bmN0aW9uIEJ5dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImNsci10cmVlLW5vZGUiLDM1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQsdj1OZSgpO3JldHVybiBidCh2LnRyZWVOb2RlQ2xpY2tl''@;'; put 'put ''ZChoLGYsdi5lbmRwb2ludEl0ZW1zKSl9KSxXcigiY2xyRXhwYW5kZWRDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKS4kaW1wbGljaXQ7cmV0dXJuIEdyKGYuZXhwYW5kZWQsaCl8fChmLmV4cGFuZGVkPWgpLGJ0KGgpfSksZ2UoMSwicCIsMzYpLEl0KCJjbGljayIsZnVu''@;'; put 'put ''Y3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKCkuJGltcGxpY2l0O3JldHVybiBidChOZSgpLml0ZW1PbkNsaWNrKGgpKX0pLFl0KDIsImNsci1pY29uIiwzNyksUGUoMyksbWUoKSgpfWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtZcigiY2xyRXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJl''@;'; put 'put ''KCJjbHJMb2FkaW5nIiwhIWEubG9hZGluZ1RhYmxlcyYmIWEudGFibGVzKSxfZSgzKSxtcigiICIsYS5uYW1lfHxhLmlkLCIgIil9fWZ1bmN0aW9uIGp5dChsLGMpe2lmKDEmbCYmKFZyKDApLGd0KDEsQnl0LDQsMywiY2xyLXRyZWUtbm9kZSIsMzQpLEJyKCkpLDImbCl7Y29uc3QgYT1jLiRp''@;'; put 'put ''bXBsaWNpdDtfZSgpLFJlKCJuZ0lmIiwhYS5oaWRkZW4pfX1mdW5jdGlvbiB6eXQobCxjKXsxJmwmJll0KDAsImNsci1zcGlubmVyIiwzOSl9ZnVuY3Rpb24gVXl0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwibmd4LWpzb24tdmlld2VyIiw0OSksSXQoInNlZ21lbnRMaW5rQ2xp''@;'; put 'put ''Y2tlZCIsZnVuY3Rpb24oaCl7cmV0dXJuIF90KGEpLGJ0KE5lKDMpLm9uSnNvbkxpbmtDbGljayhoKSl9KSxtZSgpfTImbCYmUmUoImpzb24iLE5lKDMpLmVuZHBvaW50SnNvbikoImV4cGFuZGVkIiwhMSl9ZnVuY3Rpb24gWnl0KGwsYyl7aWYoMSZsJiYoVnIoMCksUGUoMSksZ2EoMiwicHJl''@;'; put 'put ''dHR5anNvbiIpLEJyKCkpLDImbCl7Y29uc3QgYT1OZSgzKTtfZSgpLG1yKCJcbiAgICAgICAgICAgICIsVWwoMiwxLGEuZW5kcG9pbnRKc29uKSwiXG4gICAgICAgICAgIil9fWZ1bmN0aW9uIFl5dChsLGMpe2lmKDEmbCYmKFZyKDApLFBlKDEsIlxuICAgICAgICAgICIpLGd0KDIsVXl0LDEs''@;'; put 'put ''Miwibmd4LWpzb24tdmlld2VyIiw0OCksUGUoMywiXG4gICAgICAgICAgIiksZ3QoNCxaeXQsMywzLCJuZy1jb250YWluZXIiLDIxKSxQZSg1LCJcbiAgICAgICAgIiksQnIoKSksMiZsKXtjb25zdCBhPU5lKDIpO19lKDIpLFJlKCJuZ0lmIiwhYS5yYXdKc29uKSxfZSgyKSxSZSgibmdJZiIs''@;'; put 'put ''YS5yYXdKc29uKX19ZnVuY3Rpb24gV3l0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiZGl2Iiw0MCkoMiwic3BhbiIsNDEpLFBlKDMsIiBHRVQgIiksZ2UoNCwicCIsNDIpLGdhKDUsImxpbmtpbnplIiksSXQoImNsaWNrIixmdW5jdGlvbihoKXtyZXR1cm4gX3QoYSks''@;'; put 'put ''YnQoTmUoKS5vbkJyZWFkY3Vtc0NsaWNrKGgpKX0pLG1lKCksZ2UoNiwiYnV0dG9uIiwxNiksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgpLmNvcHlCcmVhZGNydW1zKCkpfSksWXQoNywiY2xyLWljb24iLDE3KSxtZSgpKCksZ2UoOCwiZGl2Iiw0MykoOSwiY2xy''@;'; put 'put ''LWlucHV0LWNvbnRhaW5lciIsMTQpKDEwLCJsYWJlbCIpLFBlKDExLCJTdGFydCIpLG1lKCksZ2UoMTIsImlucHV0Iiw0NCksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoKTtyZXR1cm4gR3IoZi5lbmRwb2ludC5zdGFydCxoKXx8KGYuZW5kcG9pbnQu''@;'; put 'put ''c3RhcnQ9aCksYnQoaCl9KSxtZSgpKCksZ2UoMTMsImNsci1pbnB1dC1jb250YWluZXIiLDE0KSgxNCwibGFiZWwiKSxQZSgxNSwiTGltaXQiKSxtZSgpLGdlKDE2LCJpbnB1dCIsNDQpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdy''@;'; put 'put ''KGYuZW5kcG9pbnQubGltaXQsaCl8fChmLmVuZHBvaW50LmxpbWl0PWgpLGJ0KGgpfSksbWUoKSgpLGdlKDE3LCJidXR0b24iLDQ1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkuYXBwbHlRdWVyeVBhcmFtcygpKX0pLFl0KDE4LCJjbHItaWNvbiIsNDYpLG1l''@;'; put 'put ''KCkoKSgpLGdlKDE5LCJwcmUiLDQ3KSxQZSgyMCwiICAgICAgICAiKSxndCgyMSxZeXQsNiwyLCJuZy1jb250YWluZXIiLDIxKSxQZSgyMiwiXG4gICAgICAiKSxtZSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKCk7X2UoNCksUmUoImlubmVySFRNTCIsVWwoNSw3LGEuZW5kcG9pbnQudXJs''@;'; put 'put ''KSxacCksX2UoOCksWXIoIm5nTW9kZWwiLGEuZW5kcG9pbnQuc3RhcnQpLFJlKCJkaXNhYmxlZCIsdm9pZCAwPT09YS5lbmRwb2ludC5zdGFydCksX2UoNCksWXIoIm5nTW9kZWwiLGEuZW5kcG9pbnQubGltaXQpLFJlKCJkaXNhYmxlZCIsdm9pZCAwPT09YS5lbmRwb2ludC5saW1pdCksX2Uo''@;'; put 'put ''KSxSZSgiZGlzYWJsZWQiLHZvaWQgMD09PWEuZW5kcG9pbnQubGltaXQmJnZvaWQgMD09PWEuZW5kcG9pbnQuc3RhcnQpLF9lKDQpLFJlKCJuZ0lmIixhLmVuZHBvaW50SnNvbil9fWxldCBHeXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCxmKXt0aGlzLmhlbHBlclNlcnZpY2U9''@;'; put 'put ''YSx0aGlzLnNhc1ZpeWFTZXJ2aWNlPWQsdGhpcy5zYXNTZXJ2aWNlPWgsdGhpcy5ldmVudFNlcnZpY2U9Zix0aGlzLmNvbGxlY3Rpb25zPXt9LHRoaXMuY29sbGVjdGlvbj0iIix0aGlzLmVuZHBvaW50TGlua3M9W10sdGhpcy5lbmRwb2ludEl0ZW1zPVtdLHRoaXMuZW5kcG9pbnQ9e3VybDoi''@;'; put 'put ''IixzdGFydDotMSxsaW1pdDotMX0sdGhpcy5lbmRwb2ludExvYWRpbmc9ITEsdGhpcy5jb2xsZWN0aW9uTG9hZGluZz0hMSx0aGlzLnJhd0pzb249ITEsdGhpcy5saW5rc1NlYXJjaD0iIix0aGlzLml0ZW1zU2VhcmNoPSIiLHRoaXMuc2FzanNDb25maWc9bmV3IHlkLlNBU2pzQ29uZmlnfW5n''@;'; put 'put ''T25Jbml0KCl7dGhpcy5zYXNqc0NvbmZpZz10aGlzLnNhc1NlcnZpY2UuZ2V0U2FzanNDb25maWcoKSx0aGlzLmNvbGxlY3Rpb25zPXRoaXMuc2FzVml5YVNlcnZpY2UuZ2V0QWxsQ29sbGVjdGlvbnMoKX1saW5rc0xpc3RPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25G''@;'; put 'put ''aWx0ZXIodGhpcy5lbmRwb2ludExpbmtzLHRoaXMubGlua3NTZWFyY2gsInJlbCIpLEhuLnZpeWFBcGkubGlua3NzU2VhcmNoPXRoaXMubGlua3NTZWFyY2h9aXRlbXNMaXN0T25GaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UubGlicmFyeU9uRmlsdGVyKHRoaXMuZW5kcG9pbnRJdGVtcyx0''@;'; put 'put ''aGlzLml0ZW1zU2VhcmNoLCJuYW1lIiksSG4udml5YUFwaS5pdGVtc1NlYXJjaD10aGlzLml0ZW1zU2VhcmNofWxpbmtPbkNsaWNrKGEpe3RoaXMubG9hZFVybChhLmhyZWYpfWl0ZW1PbkNsaWNrKGEpe3RoaXMubG9hZFVybChhLmxpbmtzWzBdLmhyZWYpfXRyZWVOb2RlQ2xpY2tlZChhLGQs''@;'; put 'put ''aCl7IkNvbGxhcHNlIj09PWEudGFyZ2V0LnRpdGxlJiZ0aGlzLmNvbGxhcHNlVHJlZUl0ZW1zKGgsZCl9Y29sbGFwc2VUcmVlSXRlbXMoYSxkKXthLmZvckVhY2goaD0+e0pTT04uc3RyaW5naWZ5KGgpIT09SlNPTi5zdHJpbmdpZnkoZCkmJihoLmV4cGFuZGVkPSExKX0pfXVwZGF0ZVNlbGVj''@;'; put 'put ''dGVkQ29sbGVjdGlvbigpe0huLnZpeWFBcGkuc2VsZWN0ZWRDb2xsZWN0aW9uPXRoaXMuY29sbGVjdGlvbix0aGlzLmVuZHBvaW50LnVybD10aGlzLmNvbGxlY3Rpb24sdGhpcy5jb2xsZWN0aW9uTG9hZGluZz0hMCx0aGlzLnNhc1ZpeWFTZXJ2aWNlLmdldEJ5Q29sbGVjdGlvbih0aGlzLmNv''@;'; put 'put ''bGxlY3Rpb24pLnN1YnNjcmliZShhPT57dGhpcy5lbmRwb2ludExpbmtzPWEubGlua3MsdGhpcy5lbmRwb2ludEl0ZW1zPWEuaXRlbXM/YS5pdGVtczpbXSx0aGlzLmNvbGxlY3Rpb25Mb2FkaW5nPSExLHRoaXMuZW5kcG9pbnRKc29uPWEsdGhpcy5lbmRwb2ludC5zdGFydD1hLnN0YXJ0LHRo''@;'; put 'put ''aXMuZW5kcG9pbnQubGltaXQ9YS5saW1pdH0sYT0+e3RoaXMuY29sbGVjdGlvbkxvYWRpbmc9ITE7bGV0IGQ9IkVycm9yIG9jY3VycmVkIHdoaWxlIHNlbmRpbmcgcmVxdWVzdCI7YS5tZXNzYWdlJiYoZD1hLm1lc3NhZ2UpLGEuZXJyb3ImJihhLmVycm9yLm1lc3NhZ2UmJihkPWEuZXJyb3Iu''@;'; put 'put ''bWVzc2FnZSksYS5lcnJvci5yZW1lZGlhdGlvbiYmKGQ9YCR7ZH1cbiR7YS5lcnJvci5yZW1lZGlhdGlvbn1gKSksdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fib3J0TW9kYWwobnVsbCxkLG51bGwsIkhUVFAgRXJyb3IiKX0pfW9uSnNvbkxpbmtDbGljayhhKXt0aGlzLmxvYWRVcmwoYSl9b25K''@;'; put 'put ''c29uQ2xpY2soYSl7aWYoYS5wcmV2ZW50RGVmYXVsdCgpLCJBIj09PWEuc3JjRWxlbWVudC50YWdOYW1lKXtjb25zdCBkPWEuc3JjRWxlbWVudC5ocmVmLnNwbGl0KGEuc3JjRWxlbWVudC5ob3N0KVsxXTt0aGlzLmxvYWRVcmwoZCl9fW9uQnJlYWRjdW1zQ2xpY2soYSl7aWYoYS5wcmV2ZW50''@;'; put 'put ''RGVmYXVsdCgpLCFhLnNyY0VsZW1lbnQuaHJlZilyZXR1cm47Y29uc3QgZD1hLnNyY0VsZW1lbnQuaHJlZi5zcGxpdChhLnNyY0VsZW1lbnQuaG9zdClbMV07dGhpcy5sb2FkVXJsKGQpfWNvcHlKc29uKCl7dGhpcy5lbmRwb2ludEpzb24mJm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0''@;'; put 'put ''KEpTT04uc3RyaW5naWZ5KHRoaXMuZW5kcG9pbnRKc29uLG51bGwsMikpfWNvcHlCcmVhZGNydW1zKCl7dGhpcy5lbmRwb2ludCYmdGhpcy5lbmRwb2ludC51cmwmJm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMuZW5kcG9pbnQudXJsKX1hcHBseVF1ZXJ5UGFyYW1zKCl7Y29u''@;'; put 'put ''c3QgYT10aGlzLmVuZHBvaW50LnN0YXJ0LGQ9dGhpcy5lbmRwb2ludC5saW1pdCxoPWA/JHt2b2lkIDAhPT1hPyJzdGFydD0iK2E6IiJ9JHt2b2lkIDAhPT1kPyImbGltaXQ9IitkOiIifWAsZj1gJHt0aGlzLmVuZHBvaW50LnVybC5zcGxpdCgiPyIpWzBdfSR7aH1gO3RoaXMubG9hZFVybChm''@;'; put 'put ''KX1sb2FkVXJsKGEpe3RoaXMuZW5kcG9pbnRMb2FkaW5nPSEwLHRoaXMuc2FzVml5YVNlcnZpY2UuZ2V0QnlVcmwoYSkuc3Vic2NyaWJlKGQ9Pnt0aGlzLmVuZHBvaW50TGlua3M9ZC5saW5rcyx0aGlzLmVuZHBvaW50SXRlbXM9ZC5pdGVtcz9kLml0ZW1zOltdLHRoaXMuZW5kcG9pbnRKc29u''@;'; put 'put ''PWQsdGhpcy5lbmRwb2ludExvYWRpbmc9ITEsdGhpcy5lbmRwb2ludC51cmw9YSx0aGlzLmVuZHBvaW50LnN0YXJ0PWQuc3RhcnQsdGhpcy5lbmRwb2ludC5saW1pdD1kLmxpbWl0fSxkPT57dGhpcy5lbmRwb2ludExvYWRpbmc9ITE7bGV0IGg9IkVycm9yIG9jY3VycmVkIHdoaWxlIHNlbmRp''@;'; put 'put ''bmcgcmVxdWVzdCI7ZC5tZXNzYWdlJiYoaD1kLm1lc3NhZ2UpLGQuZXJyb3ImJihkLmVycm9yLm1lc3NhZ2UmJihoPWQuZXJyb3IubWVzc2FnZSksZC5lcnJvci5yZW1lZGlhdGlvbiYmKGg9YCR7aH1cbiR7ZC5lcnJvci5yZW1lZGlhdGlvbn1gKSksdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0Fi''@;'; put 'put ''b3J0TW9kYWwobnVsbCxoLG51bGwsIkhUVFAgRXJyb3IiKX0pfXN0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3KGR8fGwpKEplKGV1KSxKZSh2eXQpLEplKHZhKSxKZShEbCkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1si''@;'; put 'put ''YXBwLXZpeWEtYXBpLWV4cGxvcmVyIl1dLGhvc3RBdHRyczpbMSwiY29udGVudC1jb250YWluZXIiXSxkZWNsczozMyx2YXJzOjEzLGNvbnN0czpbWyJzZWFyY2hMaW5rc1RyZWVJbnB1dCIsIiJdLFsic2VhcmNoSXRlbXNUcmVlSW5wdXQiLCIiXSxbMSwiYXBpLWNvbGxlY3Rpb24tZHJvcGRv''@;'; put 'put ''d24iXSxbImNsclNlbGVjdCIsIiIsImlkIiwicmVwb3NpdG9yeSIsMywibmdNb2RlbENoYW5nZSIsImNoYW5nZSIsIm5nTW9kZWwiXSxbMywibGFiZWwiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJ3LTEwMCB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJkLWZsZXgiLCJjbHIt''@;'; put 'put ''anVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsiY2xyTWVkaXVtIiwiIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNlYXJjaC1ub2RlIiw0LCJuZ0lmIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250ZW50LWFyZWEiXSxbMSwiY2FyZCIsImgtMTAwIiwicC0xMCIsImQtZmxleCIsImNsci1m''@;'; put 'put ''bGV4LWNvbHVtbiJdLFsxLCJ3LTEwMCIsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciIsInNpdGlvbi1yZWxhdGl2ZSJdLFsxLCJqc29uLXRvZ2dsZSIsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwibS0w''@;'; put 'put ''Il0sWyJ0eXBlIiwiY2hlY2tib3giLCJjbHJUb2dnbGUiLCIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tbGluayIsImJ0bi1zbSIsMywiY2xpY2siXSxbInNoYXBlIiwiY29weSJdLFsxLCJ0ZXh0LWNlbnRlciIsIm0tMCJdLFsi''@;'; put 'put ''Y2xyU21hbGwiLCIiLDQsIm5nSWYiXSxbMSwidy0xMDAiLCJsaWdodCJdLFs0LCJuZ0lmIl0sWzMsImxhYmVsIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywidmFsdWUiXSxbMSwidy0xMDAiLCJ0ZXh0LWNlbnRlciJdLFsiY2xyTWVkaXVtIiwiIl0sWzEsInNlYXJjaC1u''@;'; put 'put ''b2RlIl0sWzEsInRyZWUtc2VhcmNoLXdyYXBwZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIGxpbmtzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVs''@;'; put 'put ''Il0sWyJzaGFwZSIsInNlYXJjaCIsNCwibmdJZiJdLFsic2hhcGUiLCJ0aW1lcyIsMywiY2xpY2siLDQsIm5nSWYiXSxbInNoYXBlIiwic2VhcmNoIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayJdLFszLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciLCJjbGljayIsImNsckV4cGFuZGVk''@;'; put 'put ''Q2hhbmdlIiw0LCJuZ0lmIl0sWzMsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLCJjbHJFeHBhbmRlZCIsImNsckxvYWRpbmciXSxbMSwibS0wIiwiY3Vyc29yLXBvaW50ZXIiLDMsImNsaWNrIl0sWyJzaGFwZSIsImJsb2NrIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2Vh''@;'; put 'put ''cmNoIGl0ZW1zIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJuZ01vZGVsIl0sWyJjbHJTbWFsbCIsIiJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwiY2xyLWp1c3RpZnktY29udGVudC1iZXR3ZWVu''@;'; put 'put ''Il0sWzEsImQtZmxleCIsImNsci1hbGlnbi1pdGVtcy1jZW50ZXIiXSxbMSwidGV4dC1jZW50ZXIiLCJlbmRwb2ludC1icmVhZGNydW1zIiwzLCJjbGljayIsImlubmVySFRNTCJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIiwicXVlcnktcGFyYW1zIl0sWyJjbHJJbnB1''@;'; put 'put ''dCIsIiIsInR5cGUiLCJudW1iZXIiLDMsIm5nTW9kZWxDaGFuZ2UiLCJuZ01vZGVsIiwiZGlzYWJsZWQiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1saW5rIiwiYnRuLXNtIiwzLCJjbGljayIsImRpc2FibGVkIl0sWyJzaGFwZSIsInBsYXkiXSxbMSwianNvbi1hcmVhIl0sWyJj''@;'; put 'put ''bGFzcyIsImQtYmxvY2siLDMsImpzb24iLCJleHBhbmRlZCIsInNlZ21lbnRMaW5rQ2xpY2tlZCIsNCwibmdJZiJdLFsxLCJkLWJsb2NrIiwzLCJzZWdtZW50TGlua0NsaWNrZWQiLCJqc29uIiwiZXhwYW5kZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24oZCxoKXsxJmQmJihnZSgwLCJhcHAtc2lk''@;'; put 'put ''ZWJhciIpKDEsImRpdiIsMikoMiwiY2xyLXNlbGVjdC1jb250YWluZXIiKSgzLCJsYWJlbCIpLFBlKDQsIkFQSSBDb2xsZWN0aW9uIiksbWUoKSxnZSg1LCJzZWxlY3QiLDMpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbih2KXtyZXR1cm4gR3IoaC5jb2xsZWN0aW9uLHYpfHwoaC5jb2xs''@;'; put 'put ''ZWN0aW9uPXYpLHZ9KSxJdCgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBoLnVwZGF0ZVNlbGVjdGVkQ29sbGVjdGlvbigpfSksZ3QoNixBeXQsMyw0LCJvcHRncm91cCIsNCksZ2EoNywia2V5dmFsdWUiKSxtZSgpKCkoKSxndCg4LER5dCwyLDAsInAiLDUpLGdlKDksImRpdiIsNiksZ3Qo''@;'; put 'put ''MTAsSXl0LDEsMCwiY2xyLXNwaW5uZXIiLDcpLG1lKCksZ2UoMTEsImNsci10cmVlIiksZ3QoMTIsT3l0LDYsMywiY2xyLXRyZWUtbm9kZSIsOCkoMTMsRnl0LDIsMSwibmctY29udGFpbmVyIiw5KSxtZSgpLGdlKDE0LCJjbHItdHJlZSIpLGd0KDE1LFZ5dCw2LDMsImNsci10cmVlLW5vZGUi''@;'; put 'put ''LDgpKDE2LGp5dCwyLDEsIm5nLWNvbnRhaW5lciIsOSksbWUoKSgpLGdlKDE3LCJkaXYiLDEwKSgxOCwiZGl2IiwxMSkoMTksImRpdiIsMTIpKDIwLCJkaXYiLDEzKSgyMSwiY2xyLXRvZ2dsZS1jb250YWluZXIiLDE0KSgyMiwiY2xyLXRvZ2dsZS13cmFwcGVyIikoMjMsImlucHV0IiwxNSks''@;'; put 'put ''V3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKHYpe3JldHVybiBHcihoLnJhd0pzb24sdil8fChoLnJhd0pzb249diksdn0pLG1lKCksZ2UoMjQsImxhYmVsIiksUGUoMjUsIlJBVyBKc29uIiksbWUoKSgpKCksZ2UoMjYsImJ1dHRvbiIsMTYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gaC5jb3B5SnNvbigpfSksWXQoMjcsImNsci1pY29uIiwxNyksbWUoKSgpLGdlKDI4LCJoNCIsMTgpLFBlKDI5LCIgQVBJIEV4cGxvcmVyICIpLGd0KDMwLHp5dCwxLDAsImNsci1zcGlubmVyIiwxOSksbWUoKSgpLFl0KDMxLCJociIsMjApLGd0KDMyLFd5dCwyMyw5LCJuZy1jb250YWlu''@;'; put 'put ''ZXIiLDIxKSxtZSgpKCkpLDImZCYmKF9lKDUpLFlyKCJuZ01vZGVsIixoLmNvbGxlY3Rpb24pLF9lKCksUmUoIm5nRm9yT2YiLFVsKDcsMTEsaC5jb2xsZWN0aW9ucykpLF9lKDIpLFJlKCJuZ0lmIixoLmVuZHBvaW50TGlua3MubGVuZ3RoPDEmJiFoLmNvbGxlY3Rpb25Mb2FkaW5nKSxfZSgy''@;'; put 'put ''KSxSZSgibmdJZiIsaC5jb2xsZWN0aW9uTG9hZGluZyksX2UoMiksUmUoIm5nSWYiLGguZW5kcG9pbnRMaW5rcy5sZW5ndGg+MCksX2UoKSxSZSgibmdGb3JPZiIsaC5lbmRwb2ludExpbmtzKSxfZSgyKSxSZSgibmdJZiIsaC5lbmRwb2ludEl0ZW1zLmxlbmd0aD4wKSxfZSgpLFJlKCJuZ0Zv''@;'; put 'put ''ck9mIixoLmVuZHBvaW50SXRlbXMpLF9lKDcpLFlyKCJuZ01vZGVsIixoLnJhd0pzb24pLF9lKDcpLFJlKCJuZ0lmIixoLmVuZHBvaW50TG9hZGluZyksX2UoMiksUmUoIm5nSWYiLGguY29sbGVjdGlvbi5sZW5ndGg+MCkpfSxkZXBlbmRlbmNpZXM6W1ZzLCRpLEcyLCQyLHVsLFdJLFEwLFcy''@;'; put 'put ''LF9hLHVhLEFkLEgxLFlhLGwwLCRzLGExLFBfLHMxLEVkLEZaLFpfLFVfLHhkLHNwLG9wLE15dCwkRCxFeXQsVHl0XSxzdHlsZXM6WyIuYXBpLWNvbGxlY3Rpb24tZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjE1cHg7bWFyZ2luLXJpZ2h0OjE1cHg7bWFyZ2luLWJv''@;'; put 'put ''dHRvbToxMHB4fS5qc29uLWFyZWFbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5qc29uLWFyZWFbX25nY29udGVudC0lQ09NUCVdICAgICBhe3RleHQtZGVjb3JhdGlvbjpu''@;'; put 'put ''b25lfS5qc29uLWFyZWFbX25nY29udGVudC0lQ09NUCVdICAgID5uZ3gtanNvbi12aWV3ZXJ7aGVpZ2h0OjEwMCV9Lmpzb24tYXJlYVtfbmdjb250ZW50LSVDT01QJV0gICAgPm5neC1qc29uLXZpZXdlcj4ubmd4LWpzb24tdmlld2Vye292ZXJmbG93OmF1dG99Lmpzb24tdG9nZ2xlW19uZ2Nv''@;'; put 'put ''bnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7bWFyZ2luOjB9LmVuZHBvaW50LWJyZWFkY3J1bXNbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMCAxMHB4fS5xdWVyeS1wYXJhbXNbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09N''@;'; put 'put ''UCVde3dpZHRoOjcwcHh9Il19KX19cmV0dXJuIGx9KSgpO2NvbnN0ICR5dD1uZXcgJHIoIldpbmRvd1Rva2VuIix0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmRvY3VtZW50P3twcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT53aW5kb3d9Ontwcm92aWRlZEluOiJyb290IixmYWN0b3J5''@;'; put 'put ''OigpPT57fX0pO2xldCBxeXQ9KCgpPT57Y2xhc3MgbHtjb25zdHJ1Y3RvcihhLGQsaCl7dGhpcy5uZ1pvbmU9YSx0aGlzLmRvY3VtZW50PWQsdGhpcy53aW5kb3c9aCx0aGlzLmNvcHlTdWJqZWN0PW5ldyB0bix0aGlzLmNvcHlSZXNwb25zZSQ9dGhpcy5jb3B5U3ViamVjdC5hc09ic2VydmFi''@;'; put 'put ''bGUoKSx0aGlzLmNvbmZpZz17fX1jb25maWd1cmUoYSl7dGhpcy5jb25maWc9YX1jb3B5KGEpe2lmKCF0aGlzLmlzU3VwcG9ydGVkfHwhYSlyZXR1cm4gdGhpcy5wdXNoQ29weVJlc3BvbnNlKHtpc1N1Y2Nlc3M6ITEsY29udGVudDphfSk7Y29uc3QgZD10aGlzLmNvcHlGcm9tQ29udGVudChh''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5wdXNoQ29weVJlc3BvbnNlKGQ/e2NvbnRlbnQ6YSxpc1N1Y2Nlc3M6ZH06e2lzU3VjY2VzczohMSxjb250ZW50OmF9KX1nZXQgaXNTdXBwb3J0ZWQoKXtyZXR1cm4hIXRoaXMuZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkJiYhIXRoaXMuZG9jdW1lbnQucXVl''@;'; put 'put ''cnlDb21tYW5kU3VwcG9ydGVkKCJjb3B5IikmJiEhdGhpcy53aW5kb3d9aXNUYXJnZXRWYWxpZChhKXtpZihhIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudHx8YSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpe2lmKGEuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcignSW52YWxpZCAidGFyZ2V0IiBhdHRyaWJ1dGUuIFBsZWFzZSB1c2UgInJlYWRvbmx5IiBpbnN0ZWFkIG9mICJkaXNhYmxlZCIgYXR0cmlidXRlJyk7cmV0dXJuITB9dGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgc2hvdWxkIGJlIGlucHV0IG9yIHRleHRhcmVhIil9Y29weUZyb21J''@;'; put 'put ''bnB1dEVsZW1lbnQoYSxkPSEwKXt0cnl7dGhpcy5zZWxlY3RUYXJnZXQoYSk7Y29uc3QgaD10aGlzLmNvcHlUZXh0KCk7cmV0dXJuIHRoaXMuY2xlYXJTZWxlY3Rpb24oZD9hOnZvaWQgMCx0aGlzLndpbmRvdyksaCYmdGhpcy5pc0NvcHlTdWNjZXNzSW5JRTExKCl9Y2F0Y2h7cmV0dXJuITF9''@;'; put 'put ''fWlzQ29weVN1Y2Nlc3NJbklFMTEoKXtjb25zdCBhPXRoaXMud2luZG93LmNsaXBib2FyZERhdGE7cmV0dXJuIShhJiZhLmdldERhdGEmJiFhLmdldERhdGEoIlRleHQiKSl9Y29weUZyb21Db250ZW50KGEsZD10aGlzLmRvY3VtZW50LmJvZHkpe2lmKHRoaXMudGVtcFRleHRBcmVhJiYhZC5j''@;'; put 'put ''b250YWlucyh0aGlzLnRlbXBUZXh0QXJlYSkmJnRoaXMuZGVzdHJveSh0aGlzLnRlbXBUZXh0QXJlYS5wYXJlbnRFbGVtZW50fHx2b2lkIDApLCF0aGlzLnRlbXBUZXh0QXJlYSl7dGhpcy50ZW1wVGV4dEFyZWE9dGhpcy5jcmVhdGVUZW1wVGV4dEFyZWEodGhpcy5kb2N1bWVudCx0aGlzLndp''@;'; put 'put ''bmRvdyk7dHJ5e2QuYXBwZW5kQ2hpbGQodGhpcy50ZW1wVGV4dEFyZWEpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiQ29udGFpbmVyIHNob3VsZCBiZSBhIERvbSBlbGVtZW50Iil9fXRoaXMudGVtcFRleHRBcmVhLnZhbHVlPWE7Y29uc3QgaD10aGlzLmNvcHlGcm9tSW5wdXRFbGVtZW50KHRo''@;'; put 'put ''aXMudGVtcFRleHRBcmVhLCExKTtyZXR1cm4gdGhpcy5jb25maWcuY2xlYW5VcEFmdGVyQ29weSYmdGhpcy5kZXN0cm95KHRoaXMudGVtcFRleHRBcmVhLnBhcmVudEVsZW1lbnR8fHZvaWQgMCksaH1kZXN0cm95KGE9dGhpcy5kb2N1bWVudC5ib2R5KXt0aGlzLnRlbXBUZXh0QXJlYSYmKGEu''@;'; put 'put ''cmVtb3ZlQ2hpbGQodGhpcy50ZW1wVGV4dEFyZWEpLHRoaXMudGVtcFRleHRBcmVhPXZvaWQgMCl9c2VsZWN0VGFyZ2V0KGEpe3JldHVybiBhLnNlbGVjdCgpLGEuc2V0U2VsZWN0aW9uUmFuZ2UoMCxhLnZhbHVlLmxlbmd0aCksYS52YWx1ZS5sZW5ndGh9Y29weVRleHQoKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpfWNsZWFyU2VsZWN0aW9uKGEsZCl7YSYmYS5mb2N1cygpLGQuZ2V0U2VsZWN0aW9uKCk/LnJlbW92ZUFsbFJhbmdlcygpfWNyZWF0ZVRlbXBUZXh0QXJlYShhLGQpe2NvbnN0IGg9InJ0bCI9PT1hLmRvY3VtZW50RWxlbWVudC5nZXRBdHRy''@;'; put 'put ''aWJ1dGUoImRpciIpO2xldCBmO3JldHVybiBmPWEuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSxmLnN0eWxlLmZvbnRTaXplPSIxMnB0IixmLnN0eWxlLmJvcmRlcj0iMCIsZi5zdHlsZS5wYWRkaW5nPSIwIixmLnN0eWxlLm1hcmdpbj0iMCIsZi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUi''@;'; put 'put ''LGYuc3R5bGVbaD8icmlnaHQiOiJsZWZ0Il09Ii05OTk5cHgiLGYuc3R5bGUudG9wPShkLnBhZ2VZT2Zmc2V0fHxhLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApKyJweCIsZi5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwiIiksZn1wdXNoQ29weVJlc3BvbnNlKGEpe3RoaXMuY29weVN1Ympl''@;'; put 'put ''Y3Qub2JzZXJ2ZXJzLmxlbmd0aD4wJiZ0aGlzLm5nWm9uZS5ydW4oKCk9Pnt0aGlzLmNvcHlTdWJqZWN0Lm5leHQoYSl9KX1wdXNoQ29weVJlcG9uc2UoYSl7dGhpcy5wdXNoQ29weVJlc3BvbnNlKGEpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxsKShj''@;'; put 'put ''cihNbyksY3IoenMpLGNyKCR5dCw4KSl9LGwuXHUwMjc1cHJvdj1pcih7dG9rZW46bCxmYWN0b3J5OmwuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksbH0pKCksS3l0PSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZil7dGhpcy5uZ1pvbmU9YSx0aGlzLmhvc3Q9ZCx0aGlz''@;'; put 'put ''LnJlbmRlcmVyPWgsdGhpcy5jbGlwYm9hcmRTcnY9Zix0aGlzLmNiT25TdWNjZXNzPW5ldyBEcix0aGlzLmNiT25FcnJvcj1uZXcgRHIsdGhpcy5vbkNsaWNrPXY9Pnt0aGlzLmNsaXBib2FyZFNydi5pc1N1cHBvcnRlZD90aGlzLnRhcmdldEVsbSYmdGhpcy5jbGlwYm9hcmRTcnYuaXNUYXJn''@;'; put 'put ''ZXRWYWxpZCh0aGlzLnRhcmdldEVsbSk/dGhpcy5oYW5kbGVSZXN1bHQodGhpcy5jbGlwYm9hcmRTcnYuY29weUZyb21JbnB1dEVsZW1lbnQodGhpcy50YXJnZXRFbG0pLHRoaXMudGFyZ2V0RWxtLnZhbHVlLHYpOnRoaXMuY2JDb250ZW50JiZ0aGlzLmhhbmRsZVJlc3VsdCh0aGlzLmNsaXBi''@;'; put 'put ''b2FyZFNydi5jb3B5RnJvbUNvbnRlbnQodGhpcy5jYkNvbnRlbnQsdGhpcy5jb250YWluZXIpLHRoaXMuY2JDb250ZW50LHYpOnRoaXMuaGFuZGxlUmVzdWx0KCExLHZvaWQgMCx2KX19bmdPbkluaXQoKXt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuY2xpY2tMaXN0''@;'; put 'put ''ZW5lcj10aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwiY2xpY2siLHRoaXMub25DbGljayl9KX1uZ09uRGVzdHJveSgpe3RoaXMuY2xpY2tMaXN0ZW5lciYmdGhpcy5jbGlja0xpc3RlbmVyKCksdGhpcy5jbGlwYm9hcmRTcnYuZGVzdHJveSh0aGlzLmNvbnRh''@;'; put 'put ''aW5lcil9aGFuZGxlUmVzdWx0KGEsZCxoKXtsZXQgZj17aXNTdWNjZXNzOmEsY29udGVudDpkLHN1Y2Nlc3NNZXNzYWdlOnRoaXMuY2JTdWNjZXNzTXNnLGV2ZW50Omh9O2E/dGhpcy5jYk9uU3VjY2Vzcy5vYnNlcnZlZCYmdGhpcy5uZ1pvbmUucnVuKCgpPT57dGhpcy5jYk9uU3VjY2Vzcy5l''@;'; put 'put ''bWl0KGYpfSk6dGhpcy5jYk9uRXJyb3Iub2JzZXJ2ZWQmJnRoaXMubmdab25lLnJ1bigoKT0+e3RoaXMuY2JPbkVycm9yLmVtaXQoZil9KSx0aGlzLmNsaXBib2FyZFNydi5wdXNoQ29weVJlc3BvbnNlKGYpfX1yZXR1cm4gbC5cdTAyNzVmYWM9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyhhfHxs''@;'; put 'put ''KShKZShNbyksSmUoTmkpLEplKGRzKSxKZShxeXQpKX0sbC5cdTAyNzVkaXI9Z3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siIiwibmd4Q2xpcGJvYXJkIiwiIl1dLGlucHV0czp7dGFyZ2V0RWxtOltqbi5Ob25lLCJuZ3hDbGlwYm9hcmQiLCJ0YXJnZXRFbG0iXSxjb250YWluZXI6ImNvbnRhaW5l''@;'; put 'put ''ciIsY2JDb250ZW50OiJjYkNvbnRlbnQiLGNiU3VjY2Vzc01zZzoiY2JTdWNjZXNzTXNnIn0sb3V0cHV0czp7Y2JPblN1Y2Nlc3M6ImNiT25TdWNjZXNzIixjYk9uRXJyb3I6ImNiT25FcnJvciJ9fSksbH0pKCksWHl0PSgoKT0+e2NsYXNzIGx7fXJldHVybiBsLlx1MDI3NWZhYz1mdW5jdGlv''@;'; put 'put ''bihhKXtyZXR1cm4gbmV3KGF8fGwpfSxsLlx1MDI3NW1vZD1laSh7dHlwZTpsfSksbC5cdTAyNzVpbmo9c2koe2ltcG9ydHM6W29vXX0pLGx9KSgpO3ZhciBKeXQ9UigyNTAwMSk7bGV0IFF5dD0oKCk9PntjbGFzcyBse3RyYW5zZm9ybShhLC4uLmQpe2NvbnN0IGg9cGFyc2VJbnQoZFswXSl8''@;'; put 'put ''fDIsZj0ibnVtYmVyIiE9dHlwZW9mIGE/cGFyc2VJbnQoYSk6YTtyZXR1cm4oMCxKeXQuQykoZixoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKX19c3RhdGlje3RoaXMuXHUwMjc1cGlwZT13YSh7bmFtZToiY29udmVydFNpemUiLHR5cGU6bCxw''@;'; put 'put ''dXJlOiEwfSl9fXJldHVybiBsfSkoKTtjb25zdCBld3Q9WyJxdWVyeUZpbHRlciJdLHR3dD0oKT0+WyIiLCIgIl07ZnVuY3Rpb24gbnd0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2Iiw1NCksWXQoMSwiY2xyLXNwaW5uZXIiLDU1KSxtZSgpKX1mdW5jdGlvbiByd3QobCxjKXsxJmwmJll0KDAsImNs''@;'; put 'put ''ci1pY29uIiw2MSl9ZnVuY3Rpb24gaXd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDYyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgyKTtyZXR1cm4gaC5saWJyYXJpZXNTZWFyY2g9IiIsYnQoaC5saWJyYXJ5T25GaWx0ZXIoKSl9''@;'; put 'put ''KSxtZSgpfX1mdW5jdGlvbiBvd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiw1NikoMSwiZGl2Iiw1NykoMiwiaW5wdXQiLDU4LDEpLFdyKCJuZ01vZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCk7cmV0dXJuIEdyKGYubGli''@;'; put 'put ''cmFyaWVzU2VhcmNoLGgpfHwoZi5saWJyYXJpZXNTZWFyY2g9aCksYnQoaCl9KSxJdCgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKCkubGlicmFyeU9uRmlsdGVyKCkpfSksbWUoKSxndCg0LHJ3dCwxLDAsImNsci1pY29uIiw1OSkoNSxpd3QsMSwwLCJjbHItaWNvbiIs''@;'; put 'put ''NjApLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2koMyksZD1OZSgpO19lKDIpLFlyKCJuZ01vZGVsIixkLmxpYnJhcmllc1NlYXJjaCksX2UoMiksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPDEpLF9lKCksUmUoIm5nSWYiLGEudmFsdWUubGVuZ3RoPjApfX1mdW5jdGlvbiBzd3QobCxjKXsx''@;'; put 'put ''JmwmJll0KDAsImNsci1pY29uIiw2MSl9ZnVuY3Rpb24gYXd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiY2xyLWljb24iLDYyKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSksTmUoKTtjb25zdCBoPUdpKDMpLGY9TmUoMikuJGltcGxpY2l0LHY9TmUoKTtyZXR1cm4gaC52''@;'; put 'put ''YWx1ZT0iIixmLnNlYXJjaFN0cmluZz0iIixidCh2LnRyZWVPbkZpbHRlcihmLCJ0YWJsZXMiKSl9KSxtZSgpfX1mdW5jdGlvbiBsd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiw1NikoMSwiZGl2Iiw1NykoMiwiaW5wdXQiLDY3LDIpLFdyKCJuZ01v''@;'; put 'put ''ZGVsQ2hhbmdlIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKDIpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5zZWFyY2hTdHJpbmcsaCl8fChmLnNlYXJjaFN0cmluZz1oKSxidChoKX0pLEl0KCJrZXl1cCIsZnVuY3Rpb24oKXtfdChhKTtjb25zdCBoPU5lKDIpLiRpbXBsaWNpdDtyZXR1''@;'; put 'put ''cm4gYnQoTmUoKS50cmVlT25GaWx0ZXIoaCwidGFibGVzIikpfSksbWUoKSxndCg0LHN3dCwxLDAsImNsci1pY29uIiw1OSkoNSxhd3QsMSwwLCJjbHItaWNvbiIsNjApLG1lKCkoKX1pZigyJmwpe2NvbnN0IGE9R2koMyksZD1OZSgyKS4kaW1wbGljaXQ7X2UoMiksUmUoImlkIiwic2VhcmNo''@;'; put 'put ''XyIrZC5MSUJSQVJZUkVGKSxZcigibmdNb2RlbCIsZC5zZWFyY2hTdHJpbmcpLF9lKDIpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aDwxKSxfZSgpLFJlKCJuZ0lmIixhLnZhbHVlLmxlbmd0aD4wKX19ZnVuY3Rpb24gY3d0KGwsYyl7MSZsJiZZdCgwLCJjbHItaWNvbiIsNzQpfWZ1bmN0aW9u''@;'; put 'put ''IHV3dChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDc1KX1mdW5jdGlvbiBkd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJidXR0b24iLDcwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSk7Y29uc3QgaD1OZSgpLm5nVmFyLGY9TmUoKS4kaW1wbGljaXQsdj1OZSgyKS4k''@;'; put 'put ''aW1wbGljaXQsUz1OZSgpO3JldHVybiBidChoPyIiOlMub25UYWJsZUNsaWNrKGYsdikpfSksVnIoMSw3MSksZ3QoMixjd3QsMSwwLCJjbHItaWNvbiIsNzIpKDMsdXd0LDEsMCwiY2xyLWljb24iLDczKSxCcigpLFBlKDQpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKCkubmdWYXIsZD1OZSgp''@;'; put 'put ''LiRpbXBsaWNpdCxoPU5lKDIpLiRpbXBsaWNpdCxmPU5lKCk7cHIoImRjLWxvY2tlZC1jb250cm9sIixhKSgiYWN0aXZlIixmLmxpYlRhYkFjdGl2ZShoLkxJQlJBUllSRUYsZCkpLF9lKCksUmUoIm5nU3dpdGNoIixkLmluY2x1ZGVzKCItRkMiKSksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwh''@;'; put 'put ''MCksX2UoKSxSZSgibmdTd2l0Y2hDYXNlIiwhMSksX2UoKSxtcigiICIsZC5yZXBsYWNlKCItRkMiLCIiKSwiICIpfX1mdW5jdGlvbiBod3QobCxjKXsxJmwmJihnZSgwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw3NykoMSwic3BhbiIpLFBlKDIsIiBUbyB1bmxvY2sgYWxsIHRhYmxlcywgY29u''@;'; put 'put ''dGFjdCBzdXBwb3J0QGRhdGFjb250cm9sbGVyLmlvICIpLG1lKCkoKSl9ZnVuY3Rpb24gZnd0KGwsYyl7MSZsJiYoVnIoMCksZ3QoMSxod3QsMywwLCJjbHItdG9vbHRpcC1jb250ZW50Iiw3NiksQnIoKSl9ZnVuY3Rpb24gcHd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiY2xyLXRvb2x0aXAiKSxn''@;'; put 'put ''dCgxLGR3dCw1LDgsImJ1dHRvbiIsNjkpKDIsZnd0LDIsMCwibmctY29udGFpbmVyIiw0MiksbWUoKSksMiZsKXtjb25zdCBhPWMubmdWYXIsZD1OZSgpLiRpbXBsaWNpdDtfZSgpLFJlKCJuZ0lmIixkLmxlbmd0aD4wKSxfZSgpLFJlKCJuZ0lmIixhKX19ZnVuY3Rpb24gZ3d0KGwsYyl7aWYo''@;'; put 'put ''MSZsJiYoZ2UoMCwiY2xyLXRyZWUtbm9kZSIpLGd0KDEscHd0LDMsMiwiY2xyLXRvb2x0aXAiLDY4KSxtZSgpKSwyJmwpe2NvbnN0IGE9Yy5pbmRleCxkPU5lKDMpO19lKCksUmUoIm5nVmFyIixhKzE+ZC5saWNlbmNlU3RhdGUudmFsdWUudGFibGVzX2luX2xpYnJhcnlfbGltaXQpfX1mdW5j''@;'; put 'put ''dGlvbiBtd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItdHJlZS1ub2RlIiw2NCksSXQoImNsaWNrIixmdW5jdGlvbihoKXtfdChhKTtjb25zdCBmPU5lKCkuJGltcGxpY2l0O3JldHVybiBidChOZSgpLnRyZWVOb2RlQ2xpY2tlZChoLGYpKX0pLFdyKCJjbHJFeHBhbmRl''@;'; put 'put ''ZENoYW5nZSIsZnVuY3Rpb24oaCl7X3QoYSk7Y29uc3QgZj1OZSgpLiRpbXBsaWNpdDtyZXR1cm4gR3IoZi5leHBhbmRlZCxoKXx8KGYuZXhwYW5kZWQ9aCksYnQoaCl9KSxnZSgxLCJwIiw2NSksSXQoImNsaWNrIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9TmUoKS4kaW1wbGljaXQsZj1O''@;'; put 'put ''ZSgpO3JldHVybiBmLmxpYj1oLkxJQlJBUllSRUYsYnQoZi5saWJyYXJ5T25DbGljayhoLkxJQlJBUllSRUYsaCkpfSksWXQoMiwiY2xyLWljb24iLDY2KSxQZSgzKSxtZSgpLGd0KDQsbHd0LDYsNCwiY2xyLXRyZWUtbm9kZSIsNykoNSxnd3QsMiwxLCJjbHItdHJlZS1ub2RlIiw4KSxtZSgp''@;'; put 'put ''fWlmKDImbCl7Y29uc3QgYT1OZSgpLiRpbXBsaWNpdDtwcigiY2xyLWV4cGFuZGVkIixhLmV4cGFuZGVkKSxZcigiY2xyRXhwYW5kZWQiLGEuZXhwYW5kZWQpLFJlKCJjbHJMb2FkaW5nIixhLmxvYWRpbmdUYWJsZXMmJiFhLnRhYmxlcyksX2UoMyksbXIoIiAiLGEuTElCUkFSWU5BTUUsIiAi''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIixhLnRhYmxlcyksX2UoKSxSZSgibmdGb3JPZiIsYS50YWJsZXMpfX1mdW5jdGlvbiB2d3QobCxjKXtpZigxJmwmJihWcigwKSxndCgxLG13dCw2LDcsImNsci10cmVlLW5vZGUiLDYzKSxCcigpKSwyJmwpe2NvbnN0IGE9Yy4kaW1wbGljaXQ7X2UoKSxSZSgibmdJ''@;'; put 'put ''ZiIsIWEuaGlkZGVuJiZhLmluRm9yZWdyb3VuZCl9fWZ1bmN0aW9uIF93dChsLGMpezEmbCYmKGdlKDAsImRpdiIsNzgpKDEsInNwYW4iLDc5KSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpKCkpfWZ1bmN0aW9uIGJ3dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAsImRpdiIsODAp''@;'; put 'put ''KDEsImRpdiIsODEpKDIsImRpdiIsODIpKDMsImRpdiIsODMpKDQsImJ1dHRvbiIsODQpLFl0KDUsImNsci1pY29uIiw4NSksbWUoKSxnZSg2LCJoMyIsNDcpLFBlKDcsIkVycm9yIiksbWUoKSgpLGdlKDgsImRpdiIsMTUpKDksInAiKSxQZSgxMCwiWW91IGNhbm5vdCBzdWJtaXQgZW1wdHkg''@;'; put 'put ''Y2xhdXNlcyIpLG1lKCkoKSxnZSgxMSwiZGl2IiwyNikoMTIsImJ1dHRvbiIsODYpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoKS5udWxsVmFyaWFibGVzPSExKX0pLFBlKDEzLCIgT2sgIiksbWUoKSgpKCkoKSgpfX1mdW5jdGlvbiB5d3QobCxjKXsxJmwmJll0''@;'; put 'put ''KDAsImRpdiIsODcpfWZ1bmN0aW9uIHd3dChsLGMpezEmbCYmWXQoMCwiYXBwLXF1ZXJ5IixudWxsLDMpfWZ1bmN0aW9uIEN3dChsLGMpezEmbCYmKGdlKDAsImRpdiIsODgpKDEsInNwYW4iLDg5KSxQZSgyLCIgTG9hZGluZy4uLiAiKSxtZSgpLGdlKDMsImRpdiIsOTApKDQsInAiLDkxKSxQ''@;'; put 'put ''ZSg1LCJMb2FkaW5nIFRhYmxlIFZpZXdlciIpLG1lKCkoKSgpKX1mdW5jdGlvbiBTd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtnZSgwLCJjbHItaWNvbiIsMTE1KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7X3QoYSksTmUoKTtjb25zdCBoPUdpKDUpO3JldHVybiBidChOZSgyKS5zZWFy''@;'; put 'put ''Y2hUYWJsZShoKSl9KSxtZSgpfX1mdW5jdGlvbiBNd3QobCxjKXsxJmwmJihnZSgwLCJzcGFuIiwxMTYpLFBlKDEsIiBMb2FkaW5nLi4uICIpLG1lKCkpfWZ1bmN0aW9uIHh3dChsLGMpezEmbCYmWXQoMCwiY2xyLWljb24iLDExNyl9ZnVuY3Rpb24gRXd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwi''@;'; put 'put ''c3BhbiIsMTE4KSxQZSgxKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMyk7X2UoKSxtcigiICIsbnVsbD09YS50YWJsZVRpdGxlP251bGw6YS50YWJsZVRpdGxlLnJlcGxhY2UoIi1GQyIsIiIpLCIgIil9fWZ1bmN0aW9uIFR3dChsLGMpe2lmKDEmbCYmKGdlKDAsImNsci10b29sdGlwLWNvbnRl''@;'; put 'put ''bnQiLDEyMCksUGUoMSksbWUoKSksMiZsKXtjb25zdCBhPU5lKDQpO19lKCksbXIoIiAiLGEuZHNOb3RlLCIgIil9fWZ1bmN0aW9uIGt3dChsLGMpezEmbCYmKFZyKDApLGd0KDEsVHd0LDIsMSwiY2xyLXRvb2x0aXAtY29udGVudCIsMTE5KSxCcigpKX1mdW5jdGlvbiBBd3QobCxjKXtpZigx''@;'; put 'put ''JmwmJihnZSgwLCJzcGFuIiksUGUoMSksZ2EoMiwidGhvdXNhbmRTZXBhcmF0b3IiKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoNCk7X2UoKSxDRCgiICgiLFU2KDIsNCxhLm51bWJlck9mUm93cywiLCIpLCIgIiwxPT09YS5udW1iZXJPZlJvd3M/InJvdyI6InJvd3MiLCIsICIsYS5maWx0ZXJD''@;'; put 'put ''b2xzLmxlbmd0aCwiIiwxPT09YS5maWx0ZXJDb2xzLmxlbmd0aD8iIGNvbCI6IiBjb2xzIiwiKSAiKX19ZnVuY3Rpb24gRHd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ3QoMSxBd3QsMyw3LCJzcGFuIiw0MiksZ2UoMiwiY2xyLWljb24iLDEyMSksSXQoImNsaWNrIixmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBfdChhKSxidChOZSgzKS5yZWxvYWRUYWJsZURhdGEoKSl9KSxtZSgpLEJyKCl9aWYoMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoIm5nSWYiLG51bGwhPT1hLm51bWJlck9mUm93cyl9fWZ1bmN0aW9uIEl3dChsLGMpe2lmKDEmbCl7Y29uc3QgYT1TbigpO2dlKDAs''@;'; put 'put ''ImRpdiIsMTI3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDUpLmVkaXRUYWJsZSgpKX0pLFl0KDEsImNsci1pY29uIiwxMzMpLGdlKDIsInNwYW4iKSxQZSgzLCJFZGl0IiksbWUoKSgpfX1mdW5jdGlvbiBSd3QobCxjKXtpZigxJmwpe2NvbnN0IGE9U24oKTtn''@;'; put 'put ''ZSgwLCJkaXYiLDEyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSg1KS5nb1RvTGluZWFnZSgpKX0pLFl0KDEsImNsci1pY29uIiwxMzQpLGdlKDIsInNwYW4iKSxQZSgzLCJMaW5lYWdlIiksbWUoKSgpfX1mdW5jdGlvbiBMd3QobCxjKXtpZigxJmwpe2NvbnN0''@;'; put 'put ''IGE9U24oKTtnZSgwLCJjbHItZHJvcGRvd24tbWVudSIsMTI2KSgxLCJkaXYiLDEyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSg0KS5uZXdWaWV3Ym94KCkpfSksWXQoMiwiY2xyLWljb24iLDEyOCksZ2UoMywic3BhbiIpLFBlKDQsIlZpZXdib3hlcyIpLG1l''@;'; put 'put ''KCkoKSxndCg1LEl3dCw0LDAsImRpdiIsMTI5KSg2LFJ3dCw0LDAsImRpdiIsMTI5KSxnZSg3LCJkaXYiLDEyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSg0KS5vcGVuUWIoKSl9KSxZdCg4LCJjbHItaWNvbiIsMTMwKSxnZSg5LCJzcGFuIiksUGUoMTAsIkZp''@;'; put 'put ''bHRlciIpLG1lKCkoKSxnZSgxMSwiZGl2IiwxMjcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoNCkub3BlbkRvd25sb2FkPSEwKX0pLFl0KDEyLCJjbHItaWNvbiIsMTMxKSxnZSgxMywic3BhbiIpLFBlKDE0LCJEb3dubG9hZCIpLG1lKCkoKSxnZSgxNSwiZGl2''@;'; put 'put ''IiwxMjcpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUoNCkuc2hvd1dlYlF1ZXJ5KCkpfSksWXQoMTYsImNsci1pY29uIiwxMzIpLGdlKDE3LCJzcGFuIiksUGUoMTgsIldlYiBRdWVyeSBVUkwiKSxtZSgpKCkoKX1pZigyJmwpe2NvbnN0IGE9TmUoNCk7X2UoNSks''@;'; put 'put ''UmUoIm5nSWYiLGEudGFibGVFZGl0RXhpc3RzKCkpLF9lKCksUmUoIm5nSWYiLGEudGFibGV1cmkpfX1mdW5jdGlvbiBPd3QobCxjKXsxJmwmJihnZSgwLCJjbHItZHJvcGRvd24iLDEyMikoMSwiYnV0dG9uIiwxMjMpLFl0KDIsImNsci1pY29uIiwxMjQpLFBlKDMsIiBvcHRpb25zICIpLG1l''@;'; put 'put ''KCksZ3QoNCxMd3QsMTksMiwiY2xyLWRyb3Bkb3duLW1lbnUiLDEyNSksbWUoKSksMiZsJiZSZSgiY2xyQ2xvc2VNZW51T25JdGVtQ2xpY2siLCEwKX1mdW5jdGlvbiBQd3QobCxjKXtpZigxJmwmJihnZSgwLCJkaXYiLDEzNSkoMSwic3BhbiIpLFBlKDIsIkZJTFRFUiA6ICIpLGdlKDMsImIi''@;'; put 'put ''KSxQZSg0KSxtZSgpKCkoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKDQpLGxyKGEucXVlcnlUZXh0KX19ZnVuY3Rpb24gRnd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwiZGl2Iiw5OCkoMSwic2VjdGlvbiIsOTkpKDIsImZvcm0iLDEwMCkoMywiZGl2IiwxMDEpKDQsImlucHV0''@;'; put 'put ''IiwxMDIsNCksSXQoImtleXVwLmVudGVyIixmdW5jdGlvbigpe190KGEpO2NvbnN0IGg9R2koNSk7cmV0dXJuIGJ0KE5lKDIpLnNlYXJjaFRhYmxlKGgpKX0pLG1lKCksZ3QoNixTd3QsMSwwLCJjbHItaWNvbiIsMTAzKSg3LE13dCwyLDAsInNwYW4iLDEwNCksbWUoKSxnZSg4LCJjbHItY2hl''@;'; put 'put ''Y2tib3gtY29udGFpbmVyIikoOSwiY2xyLWNoZWNrYm94LXdyYXBwZXIiKSgxMCwiaW5wdXQiLDEwNSksV3IoIm5nTW9kZWxDaGFuZ2UiLGZ1bmN0aW9uKGgpe190KGEpO2NvbnN0IGY9TmUoMik7cmV0dXJuIEdyKGYuc2VhcmNoTnVtZXJpYyxoKXx8KGYuc2VhcmNoTnVtZXJpYz1oKSxidCho''@;'; put 'put ''KX0pLG1lKCksZ2UoMTEsImxhYmVsIiksUGUoMTIsIk51bWVyaWMiKSxtZSgpKCkoKSgpKCksZ2UoMTMsImRpdiIsMTA2KSgxNCwicCIsMTA3KSgxNSwiY2xyLXRvb2x0aXAiLDEwOCkoMTYsImNsci1pY29uIiwxMDkpLEl0KCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoYSksYnQoTmUo''@;'; put 'put ''MikuZGF0YXNldEluZm89ITApfSksbWUoKSxndCgxNyx4d3QsMSwwLCJjbHItaWNvbiIsMTEwKSgxOCxFd3QsMiwxLCJzcGFuIiwxMTEpKDE5LGt3dCwyLDAsIm5nLWNvbnRhaW5lciIsNDIpLG1lKCksZ3QoMjAsRHd0LDMsMSwibmctY29udGFpbmVyIiw0MiksbWUoKSgpLGdlKDIxLCJkaXYi''@;'; put 'put ''LDExMiksZ3QoMjIsT3d0LDUsMSwiY2xyLWRyb3Bkb3duIiwxMTMpLG1lKCksZ3QoMjMsUHd0LDUsMSwiZGl2IiwxMTQpLG1lKCl9aWYoMiZsKXtjb25zdCBhPU5lKDIpO19lKDQpLFJlKCJ0eXBlIixhLnNlYXJjaE51bWVyaWM/Im51bWJlciI6InRleHQiKSxfZSgyKSxSZSgibmdJZiIsIWEu''@;'; put 'put ''c2VhcmNoTG9hZGluZyksX2UoKSxSZSgibmdJZiIsYS5zZWFyY2hMb2FkaW5nKSxfZSgzKSxZcigibmdNb2RlbCIsYS5zZWFyY2hOdW1lcmljKSxfZSg3KSxSZSgibmdJZiIsbnVsbD09YS50YWJsZVRpdGxlP251bGw6YS50YWJsZVRpdGxlLmluY2x1ZGVzKCItRkMiKSksX2UoKSxSZSgibmdJ''@;'; put 'put ''ZiIsYS50YWJsZVRpdGxlJiZhLnRhYmxlVGl0bGUubGVuZ3RoPjApLF9lKCksUmUoIm5nSWYiLGEuZHNOb3RlJiZhLmRzTm90ZS5sZW5ndGg+MCksX2UoKSxSZSgibmdJZiIsYS50YWJsZVRpdGxlJiZhLnRhYmxlVGl0bGUubGVuZ3RoPjApLF9lKDIpLFJlKCJuZ0lmIixhLnRhYmxlVGl0bGUm''@;'; put 'put ''JiFhLmFib3J0QWN0aXZlKSxfZSgpLFJlKCJuZ0lmIiwiMT0xIiE9PWEucXVlcnlUZXh0JiYhbGEoMTAsdHd0KS5pbmNsdWRlcyhhLnF1ZXJ5VGV4dCkmJiFhLmFib3J0QWN0aXZlKX19ZnVuY3Rpb24gTnd0KGwsYyl7MSZsJiYoZ2UoMCwiZGl2IiwxMzYpLFl0KDEsImNsci1pY29uIiwxMzcp''@;'; put 'put ''LGdlKDIsImgzIiwxMzgpLFBlKDMsIiBQbGVhc2Ugc2VsZWN0IGEgbGlicmFyeSAiKSxtZSgpKCkpfWZ1bmN0aW9uIEh3dChsLGMpezEmbCYmWXQoMCwiY2xyLXNwaW5uZXIiLDU1KX1mdW5jdGlvbiBWd3QobCxjKXsxJmwmJihnZSgwLCJkaXYiLDE0NSksWXQoMSwiY2xyLWljb24iLDE0Niks''@;'; put 'put ''Z2UoMiwicCIsMTM4KSxQZSgzLCIgUGxlYXNlIHNlbGVjdCBhIHRhYmxlICIpLG1lKCkoKSl9ZnVuY3Rpb24gQnd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7Z2UoMCwicCIsMTQ5KSxQZSgxLCIgTm8gbGlicmFyeSBpbmZvIGZvdW5kLiBDbGljayAiKSxnZSgyLCJjbHItaWNvbiIsMTUw''@;'; put 'put ''KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGEpLGJ0KE5lKDQpLnJlbG9hZExpYkluZm8oKSl9KSxtZSgpLFBlKDMsIiBidXR0b24gdG8gcmVmcmVzaC4gIiksbWUoKX19ZnVuY3Rpb24gand0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsMTUxKSxQZSgyLCJFTkdJ''@;'; put 'put ''TkU6IiksbWUoKSxnZSgzLCJ0ZCIsMTUyKSxQZSg0KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg1KTtfZSg0KSxtcigiICIsYS5saWJpbmZvWzBdP2EubGliaW5mb1swXS5FTkdJTkU6IiIsIiAiKX19ZnVuY3Rpb24gend0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsMTUxKSxQ''@;'; put 'put ''ZSgyLCJMSUJJRDoiKSxtZSgpLGdlKDMsInRkIiwxNTIpLFBlKDQpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDUpO19lKDQpLG1yKCIgIixhLmxpYmluZm9bMF0/YS5saWJpbmZvWzBdLkxJQklEOiIiLCIgIil9fWZ1bmN0aW9uIFV3dChsLGMpe2lmKDEmbCYmKGdlKDAsInRyIikoMSwidGQi''@;'; put 'put ''LDE1MSksUGUoMiwiTElCTkFNRToiKSxtZSgpLGdlKDMsInRkIiwxNTIpLFBlKDQpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDUpO19lKDQpLG1yKCIgIixhLmxpYmluZm9bMF0/YS5saWJpbmZvWzBdLkxJQk5BTUU6IiIsIiAiKX19ZnVuY3Rpb24gWnd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwi''@;'; put 'put ''dHIiKSgxLCJ0ZCIsMTUxKSxQZSgyLCJMSUJTSVpFOiIpLG1lKCksZ2UoMywidGQiLDE1MiksUGUoNCksZ2EoNSwiY29udmVydFNpemUiKSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg1KTtfZSg0KSxtcigiICIsYS5saWJpbmZvWzBdP1VsKDUsMSxhLmxpYmluZm9bMF0uTElCU0laRSk6IiIs''@;'; put 'put ''IiAiKX19ZnVuY3Rpb24gWXd0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsMTUxKSxQZSgyLCJPV05FUlM6IiksbWUoKSxnZSgzLCJ0ZCIsMTUyKSxQZSg0KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg1KTtfZSg0KSxtcigiICIsYS5saWJpbmZvWzBdP2EubGliaW5mb1swXS5P''@;'; put 'put ''V05FUlM6IiIsIiAiKX19ZnVuY3Rpb24gV3d0KGwsYyl7aWYoMSZsJiYoZ2UoMCwidHIiKSgxLCJ0ZCIsMTUxKSxQZSgyLCJQQVRIUzoiKSxtZSgpLGdlKDMsInRkIiwxNTIpLFBlKDQpLG1lKCkoKSksMiZsKXtjb25zdCBhPU5lKDUpO19lKDQpLG1yKCIgIixhLmxpYmluZm9bMF0/YS5saWJp''@;'; put 'put ''bmZvWzBdLlBBVEhTOiIiLCIgIil9fWZ1bmN0aW9uIEd3dChsLGMpe2lmKDEmbCYmKGdlKDAsInRyIikoMSwidGQiLDE1MSksUGUoMiwiUEVSTVM6IiksbWUoKSxnZSgzLCJ0ZCIsMTUyKSxQZSg0KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg1KTtfZSg0KSxtcigiICIsYS5saWJpbmZvWzBd''@;'; put 'put ''P2EubGliaW5mb1swXS5QRVJNUzoiIiwiICIpfX1mdW5jdGlvbiAkd3QobCxjKXtpZigxJmwmJihnZSgwLCJ0ciIpKDEsInRkIiwxNTEpLFBlKDIsIlNDSEVNQVM6IiksbWUoKSxnZSgzLCJ0ZCIsMTUyKSxQZSg0KSxtZSgpKCkpLDImbCl7Y29uc3QgYT1OZSg1KTtfZSg0KSxtcigiICIsYS5s''@;'; put 'put ''aWJpbmZvWzBdP2EubGliaW5mb1swXS5TQ0hFTUFTOiIiLCIgIil9fWZ1bmN0aW9uIHF3dChsLGMpe2lmKDEmbCYmKGdlKDAsInRyIikoMSwidGQiLDE1MSksUGUoMiwiVEFCTEVfQ05UOiIpLG1lKCksZ2UoMywidGQiLDE1MiksUGUoNCksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoNSk7X2Uo''@;'; put 'put ''NCksbXIoIiAiLGEubGliaW5mb1swXT9hLmxpYmluZm9bMF0uVEFCTEVfQ05UOiIiLCIgIil9fWZ1bmN0aW9uIEt3dChsLGMpe2lmKDEmbCYmKFZyKDApLGdlKDEsInRhYmxlIiksZ3QoMixqd3QsNSwxLCJ0ciIsNDIpKDMsend0LDUsMSwidHIiLDQyKSg0LFV3dCw1LDEsInRyIiw0MikoNSxa''@;'; put 'put ''d3QsNiwzLCJ0ciIsNDIpKDYsWXd0LDUsMSwidHIiLDQyKSg3LFd3dCw1LDEsInRyIiw0MikoOCxHd3QsNSwxLCJ0ciIsNDIpKDksJHd0LDUsMSwidHIiLDQyKSgxMCxxd3QsNSwxLCJ0ciIsNDIpLG1lKCksQnIoKSksMiZsKXtjb25zdCBhPU5lKDQpO19lKDIpLFJlKCJuZ0lmIiwiIiE9PWEu''@;'; put 'put ''bGliaW5mb1swXS5FTkdJTkUpLF9lKCksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLkxJQklEKSxfZSgpLFJlKCJuZ0lmIiwiIiE9PWEubGliaW5mb1swXS5MSUJOQU1FKSxfZSgpLFJlKCJuZ0lmIixudWxsIT09YS5saWJpbmZvWzBdLkxJQlNJWkUpLF9lKCksUmUoIm5nSWYiLCIiIT09''@;'; put 'put ''YS5saWJpbmZvWzBdLk9XTkVSUyksX2UoKSxSZSgibmdJZiIsIiIhPT1hLmxpYmluZm9bMF0uUEFUSFMpLF9lKCksUmUoIm5nSWYiLCIiIT09YS5saWJpbmZvWzBdLlBFUk1TKSxfZSgpLFJlKCJuZ0lmIiwiIiE9PWEubGliaW5mb1swXS5TQ0hFTUFTKSxfZSgpLFJlKCJuZ0lmIixudWxsIT09''@;'; put 'put ''YS5saWJpbmZvWzBdLlRBQkxFX0NOVCl9fWZ1bmN0aW9uIFh3dChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMTQ3KSxndCgxLEJ3dCw0LDAsInAiLDE0OCkoMixLd3QsMTEsOSwibmctY29udGFpbmVyIiw0MiksbWUoKSksMiZsKXtjb25zdCBhPU5lKDMpO19lKCksUmUoIm5nSWYiLGEubGli''@;'; put 'put ''aW5mby5sZW5ndGg8MSksX2UoKSxSZSgibmdJZiIsYS5saWJpbmZvLmxlbmd0aD4wKX19ZnVuY3Rpb24gSnd0KGwsYyl7aWYoMSZsKXtjb25zdCBhPVNuKCk7VnIoMCksZ2UoMSwiZGl2IiwxMzkpLFl0KDIsInNlY3Rpb24iLDk5KSxnZSgzLCJkaXYiLDE0MCkoNCwicCIsOTEpLFBlKDUpLG1l''@;'; put 'put ''KCksZ2UoNiwiY2xyLWljb24iLDEyMSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChhKSxidChOZSgyKS5yZWxvYWRMaWJJbmZvKCkpfSksbWUoKSgpLFl0KDcsImRpdiIsMTEyKSxtZSgpLGdlKDgsImRpdiIsMTQxKSxndCg5LEh3dCwxLDAsImNsci1zcGlubmVyIiwxNDIpLG1l''@;'; put 'put ''KCksZ3QoMTAsVnd0LDQsMCwiZGl2IiwxNDMpKDExLFh3dCwzLDIsImRpdiIsMTQ0KSxCcigpfWlmKDImbCl7Y29uc3QgYT1OZSgyKTtfZSg1KSxtcigiICIsYS5saWIsIiAiKSxfZSg0KSxSZSgibmdJZiIsbnVsbD09PWEubGliaW5mbyksX2UoKSxSZSgibmdJZiIsbnVsbCE9PWEubGliaW5m''@;'; put 'put ''byksX2UoKSxSZSgibmdJZiIsbnVsbCE9PWEubGliaW5mbyl9fWZ1bmN0aW9uIFF3dChsLGMpezEmbCYmKGdlKDAsImgzIiwxNTYpLFBlKDEsIiBObyBkYXRhIGZvdW5kIHdpdGggZ2l2ZW4gY29uZGl0aW9ucyAiKSxtZSgpKX1mdW5jdGlvbiBlQ3QobCxjKXsxJmwmJihnZSgwLCJoMyIsMTU2''@;'; put 'put ''KSxQZSgxLCIgTm8gZGF0YSBmb3VuZCBkdWUgdG8gc2FzIHJlcXVlc3QgZXJyb3IgIiksbWUoKSl9ZnVuY3Rpb24gdEN0KGwsYyl7aWYoMSZsJiYoZ2UoMCwiZGl2IiwxNTMpLFl0KDEsImNsci1pY29uIiwxNTQpLGd0KDIsUXd0LDIsMCwiaDMiLDE1NSkoMyxlQ3QsMiwwLCJoMyIsMTU1KSxt''@;'; put 'put ''ZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoMiksUmUoIm5nSWYiLGEubm9EYXRhKSxfZSgpLFJlKCJuZ0lmIixhLm5vRGF0YVJlcUVycil9fWZ1bmN0aW9uIG5DdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsMTU3KSxZdCgxLCJob3QtdGFibGUiLDE1OCksbWUoKSksMiZsKXtjb25zdCBh''@;'; put 'put ''PU5lKDIpO19lKCksUmUoIm11bHRpQ29sdW1uU29ydGluZyIsITApKCJ2aWV3cG9ydFJvd1JlbmRlcmluZ09mZnNldCIsNTApKCJkYXRhIixhLmhvdFRhYmxlLmRhdGEpKCJjb2xIZWFkZXJzIixhLmhvdFRhYmxlLmNvbEhlYWRlcnMpKCJjb2x1bW5zIixhLmhvdFRhYmxlLmNvbHVtbnMpKCJj''@;'; put 'put ''b3B5UGFzdGUiLGEuaG90VGFibGUuY29weVBhc3RlKSgiY29udGV4dE1lbnUiLGEuaG90VGFibGUuY29udGV4dE1lbnUpKCJmaWx0ZXJzIiwhMCkoImRyb3Bkb3duTWVudSIsYS5ob3RUYWJsZS5kcm9wZG93bk1lbnUpKCJoZWlnaHQiLGEuaG90VGFibGUuaGVpZ2h0KSgibW9kaWZ5Q29sV2lk''@;'; put 'put ''dGgiLGEubWF4V2lkdGhDaGVrZXIpKCJjZWxscyIsYS5ob3RUYWJsZS5jZWxscykoIm1heFJvd3MiLGEuaG90VGFibGUubWF4Um93cykoIm1hbnVhbENvbHVtblJlc2l6ZSIsITApKCJhZnRlckdldENvbEhlYWRlciIsYS5ob3RUYWJsZS5hZnRlckdldENvbEhlYWRlcikoInJvd0hlYWRlcnMi''@;'; put 'put ''LGEuaG90VGFibGUucm93SGVhZGVycykoInJvd0hlYWRlcldpZHRoIixhLmhvdFRhYmxlLnJvd0hlYWRlcldpZHRoKSgicm93SGVpZ2h0cyIsYS5ob3RUYWJsZS5yb3dIZWlnaHRzKSgibGljZW5zZUtleSIsYS5ob3RUYWJsZS5saWNlbnNlS2V5KX19ZnVuY3Rpb24gckN0KGwsYyl7aWYoMSZs''@;'; put 'put ''JiYoZ2UoMCwicCIsMTU5KSxQZSgxKSxZdCgyLCJjb250YWN0LWxpbmsiKSxtZSgpKSwyJmwpe2NvbnN0IGE9TmUoMik7X2UoKSxtcigiIFRvIGRpc3BsYXkgbW9yZSB0aGFuICIsYS5saWNlbmNlU3RhdGUudmFsdWUudmlld2VyX3Jvd3NfYWxsb3dlZCwiIHJvd3MsIGNvbnRhY3QgIil9fWZ1''@;'; put 'put ''bmN0aW9uIGlDdChsLGMpe2lmKDEmbCYmKGdlKDAsImRpdiIsOTIpLGd0KDEsRnd0LDI0LDExLCJkaXYiLDkzKSgyLE53dCw0LDAsImRpdiIsOTQpKDMsSnd0LDEyLDQsIm5nLWNvbnRhaW5lciIsNDIpKDQsdEN0LDQsMiwiZGl2Iiw5NSkoNSxuQ3QsMiwxOSwiZGl2Iiw5NiksZ2UoNiwiZGl2''@;'; put 'put ''IiksZ3QoNyxyQ3QsMywxLCJwIiw5NyksbWUoKSgpKSwyJmwpe2NvbnN0IGE9TmUoKTtfZSgpLFJlKCJuZ0lmIixhLnRhYmxlKSxfZSgpLFJlKCJuZ0lmIiwhKGEubGlifHxhLnRhYmxlfHxhLm5vRGF0YVJlcUVycnx8YS5ub0RhdGEpKSxfZSgpLFJlKCJuZ0lmIiwhYS5ub0RhdGEmJiFhLm5v''@;'; put 'put ''RGF0YVJlcUVyciYmIWEudGFibGUmJmEubGliKSxfZSgpLFJlKCJuZ0lmIixhLm5vRGF0YXx8YS5ub0RhdGFSZXFFcnIpLF9lKCksUmUoIm5nSWYiLCFhLm5vRGF0YSYmIWEubm9EYXRhUmVxRXJyJiZhLnRhYmxlKSxfZSgyKSxSZSgibmdJZiIsYS5saWNlbmNlU3RhdGUudmFsdWUudmlld2Vy''@;'; put 'put ''X3Jvd3NfYWxsb3dlZCE9PWEuSW5maW5pdHkmJmEuaG90VGFibGUuZGF0YSYmYS5ob3RUYWJsZS5kYXRhLmxlbmd0aD5hLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3ZXJfcm93c19hbGxvd2VkKX19bGV0IFlGPSgoKT0+e2NsYXNzIGx7Y29uc3RydWN0b3IoYSxkLGgsZix2LFMsVixRLGRlLHBl''@;'; put 'put ''KXt0aGlzLmxpY2VuY2VTZXJ2aWNlPWEsdGhpcy5zYXNTdG9yZVNlcnZpY2U9ZCx0aGlzLnNhc1NlcnZpY2U9aCx0aGlzLnJvdXRlcj1mLHRoaXMucm91dGU9dix0aGlzLmV2ZW50U2VydmljZT1TLHRoaXMubG9nZ2VyU2VydmljZT1WLHRoaXMuaGVscGVyU2VydmljZT1RLHRoaXMubG9jYXRp''@;'; put 'put ''b249ZGUsdGhpcy5jZGY9cGUsdGhpcy5xdWVyeUZpbHRlckNvbXBMaXN0PW5ldyB4MSx0aGlzLmxpYnJhcmllc1BhZ2luZz0hMSx0aGlzLmxpYnJhcmllc1NlYXJjaD0iIix0aGlzLmxpYnJhcnlUYWJsZXNSZWY9IiIsdGhpcy5saWJyYXJpZXNUcmVlRXhwYW5kZWQ9ITEsdGhpcy5saWJpbmZv''@;'; put 'put ''PW51bGwsdGhpcy50YWJsZXVyaT1udWxsLHRoaXMuZmlsdGVyPSExLHRoaXMuZmlsdGVyQ29scz1bXSx0aGlzLm51bGxWYXJpYWJsZXM9ITEsdGhpcy5hYm9ydEFjdGl2ZT0hMSx0aGlzLnVybEZpbHRlclBrPW51bGwsdGhpcy5xdWVyeVRleHQ9IiIsdGhpcy53ZWJRdWVyeVRleHQ9IiIsdGhp''@;'; put 'put ''cy5xdWVyeUVycj0hMSx0aGlzLnRhYmxlRmxhZz0hMCx0aGlzLmxpYnJhcmllc0xvYWRpbmc9ITEsdGhpcy5sb2FkaW5nVGFibGVWaWV3PSExLHRoaXMuc3dpdGNoRmxhZz0hMSx0aGlzLm5vRGF0YT0hMSx0aGlzLm5vRGF0YVJlcUVycj0hMSx0aGlzLnRhYmxlRGlzYWJsZT0hMSx0aGlzLmFj''@;'; put 'put ''dGlvbkRpc2FibGU9ITEsdGhpcy5vcGVuRG93bmxvYWQ9ITEsdGhpcy53ZWJRdWVyeT0hMSx0aGlzLndlYlF1ZXJ5VGFiPSExLHRoaXMuZG93bmxvYWRGb3JtYXQ9IkNTViIsdGhpcy5zYXNqc0NvbmZpZz1uZXcgeWQuU0FTanNDb25maWcsdGhpcy5zZWFyY2hMb2FkaW5nPSExLHRoaXMuc2Vh''@;'; put 'put ''cmNoTnVtZXJpYz0hMSx0aGlzLm51bWJlck9mUm93cz1udWxsLHRoaXMuaGVhZGVyUGtzPVtdLHRoaXMuJGRhdGFGb3JtYXRzPW51bGwsdGhpcy5kYXRhc2V0SW5mbz0hMSx0aGlzLmRzbWV0YT1bXSx0aGlzLnZlcnNpb25zPVtdLHRoaXMuZHNOb3RlPSIiLHRoaXMubGljZW5jZVN0YXRlPXRo''@;'; put 'put ''aXMubGljZW5jZVNlcnZpY2UubGljZW5jZVN0YXRlLHRoaXMuSW5maW5pdHk9MS8wLHRoaXMuaG90VGFibGU9e2RhdGE6W10sY29sSGVhZGVyczpbXSxjb2x1bW5zOltdLGhlaWdodDoiMTAwJSIsbWF4Um93czp0aGlzLmxpY2VuY2VTdGF0ZS52YWx1ZS52aWV3ZXJfcm93c19hbGxvd2VkfHwx''@;'; put 'put ''LzAsc2V0dGluZ3M6e30sbGljZW5zZUtleTp2b2lkIDAscm93SGVhZGVyczpDZT0+IiAiLGFmdGVyR2V0Q29sSGVhZGVyOihDZSxPZSxZZSk9PntPZS5jbGFzc0xpc3QuYWRkKEhuLmhhbmRzb250YWJsZS5kYXJrVGFibGVIZWFkZXJDbGFzcyl9LHJvd0hlYWRlcldpZHRoOjE1LHJvd0hlaWdo''@;'; put 'put ''dHM6MjAsY29udGV4dE1lbnU6WyJjb3B5X3dpdGhfY29sdW1uX2hlYWRlcnMiLCJjb3B5X2NvbHVtbl9oZWFkZXJzX29ubHkiXSxjb3B5UGFzdGU6e2NvcHlDb2x1bW5IZWFkZXJzOiEwLGNvcHlDb2x1bW5IZWFkZXJzT25seTohMH0sZHJvcGRvd25NZW51OntpdGVtczp7bWFrZV9yZWFkX29u''@;'; put 'put ''bHk6e25hbWU6Im1ha2VfcmVhZF9vbmx5In0sYWxpZ25tZW50OntuYW1lOiJhbGlnbm1lbnQifSxzcDE6e25hbWU6Ii0tLS0tLS0tLSJ9LGluZm86e25hbWU6InRlc3QgaW5mbyIscmVuZGVyZXI6KENlLE9lLFllLGV0LGR0LGh0KT0+e2NvbnN0IE10PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo''@;'; put 'put ''InNwYW4iKTtsZXQgUXQsbG49Ik5vIGluZm8gZm91bmQiO2lmKHRoaXMuaG90SW5zdGFuY2Upe2NvbnN0IHZuPXRoaXMuaG90SW5zdGFuY2UuZ2V0U2VsZWN0ZWQoKXx8W10sd249dm4/dm5bMF1bMV06LTEsbnI9dGhpcy5ob3RJbnN0YW5jZT8uY29sVG9Qcm9wKHduKTtRdD10aGlzLiRkYXRh''@;'; put 'put ''Rm9ybWF0cz8udmFyc1tucl0sUXQmJihsbj1gTEFCRUw6ICR7UXQ/LmxhYmVsfTxicj5UWVBFOiAke1F0Py50eXBlfTxicj5MRU5HVEg6ICR7UXQ/Lmxlbmd0aH08YnI+Rk9STUFUOiAke1F0Py5mb3JtYXR9YCl9cmV0dXJuIE10LmlubmVySFRNTD1sbixNdH19fX19LHRoaXMuaG90SW5zdGFu''@;'; put 'put ''Y2U9bnVsbCx0aGlzLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcj0hMSx0aGlzLnZpZXdib3hPcGVuPSExLHRoaXMuaG90VGFibGVSZWdpc3RlcmVyPW5ldyBXbSx0aGlzLnNhc2pzQ29uZmlnPXRoaXMuc2FzU2VydmljZS5nZXRTYXNqc0NvbmZpZygpfW5nT25Jbml0KCl7IiIhPT1Ibi52aWV3''@;'; put 'put ''ZXIuY3VycmVudFNlbGVjdGlvbiYmMD09PU9iamVjdC5rZXlzKHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKS5sZW5ndGgmJnRoaXMucm91dGVyLm5hdmlnYXRlKFtIbi52aWV3ZXIuY3VycmVudFNlbGVjdGlvbl0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pLHZvaWQgMCE9''@;'; put 'put ''PXRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbSYmKEhuLnZpZXdlci5jdXJyZW50U2VsZWN0aW9uPSJ2aWV3L2RhdGEiKSx0aGlzLmxpY2VuY2VTZXJ2aWNlLmhvdF9saWNlbnNlX2tleS5zdWJzY3JpYmUoYT0+e3RoaXMuaG90VGFibGUubGljZW5zZUtleT1hfSl9bmV3Vmlld2Jv''@;'; put 'put ''eCgpe3RoaXMudmlld2JveE9wZW49ITB9cmVzZXRGaWx0ZXIoKXt0aGlzLnF1ZXJ5RmlsdGVyQ29tcExpc3QuZmlyc3QmJnRoaXMucXVlcnlGaWx0ZXJDb21wTGlzdC5maXJzdC5yZXNldEZpbHRlcigpfXNlYXJjaFRhYmxlKGEpe3ZhciBkPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7ZC5z''@;'; put 'put ''ZWFyY2hMb2FkaW5nPSEwO2xldCBoPWEudmFsdWUsZj1kLmxpYisiLiIrZC50YWJsZSx2PXBhcnNlSW50KGQucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKXx8MDt5aWVsZCBkLnNhc1N0b3JlU2VydmljZS52aWV3RGF0YVNlYXJjaChoLGQuc2VhcmNoTnVtZXJpYyxmLHYpLnRoZW4o''@;'; put 'put ''Uz0+e1Muc2FzcGFyYW1zfHxTLnZpZXdEYXRhPyhkLmhvdFRhYmxlLmRhdGE9Uy52aWV3ZGF0YSxkLiRkYXRhRm9ybWF0cz1TLiR2aWV3ZGF0YSxkLmRzbWV0YT1TLmRzbWV0YSxkLnZlcnNpb25zPVMudmVyc2lvbnN8fFtdLGQuc2V0RFNOb3RlKCksZC5udW1iZXJPZlJvd3M9Uy5zYXNwYXJh''@;'; put 'put ''bXNbMF0uTk9CUyxkLnF1ZXJ5VGV4dD1TLnNhc3BhcmFtc1swXS5GSUxURVJfVEVYVCxkLmhlYWRlclBrcz1TLnNhc3BhcmFtc1swXS5QS19GSUVMRFMuc3BsaXQoIiAiKSwwPT09ZC5ob3RUYWJsZS5kYXRhLmxlbmd0aD9kLm5vRGF0YT0hMDooZC5ub0RhdGE9ITEsZC50YWJsZUZsYWc9ITEs''@;'; put 'put ''ZC5zZXR1cEhvdCgpKSk6ZC5zZWFyY2hMb2FkaW5nPSExfSkuY2F0Y2goUz0+e2QubG9nZ2VyU2VydmljZS5lcnJvcihTKX0pLGQuc2VhcmNoTG9hZGluZz0hMX0pKCl9cmVsb2FkVGFibGVEYXRhKCl7dGhpcy52aWV3RGF0YSh0aGlzLnVybEZpbHRlclBrfHwwKX1yZWxvYWRMaWJJbmZvKCl7''@;'; put 'put ''dmFyIGE9dGhpcztyZXR1cm4gWShmdW5jdGlvbiooKXthLmxpYmluZm89bnVsbCxhLnNhc1N0b3JlU2VydmljZS5yZWZyZXNoTGliSW5mbyhhLmxpYikudGhlbihmdW5jdGlvbigpe3ZhciBkPVkoZnVuY3Rpb24qKGgpe2EubGliaW5mbz1oLmxpYmluZm8sSG4udmlld2VyLmxpYmluZm89YS5s''@;'; put 'put ''aWJpbmZvO2NvbnN0IGY9YS5saWJyYXJpZXMuZmluZCh2PT52LkxJQlJBUllSRUY9PT1hLmxpYik7ZiYmKGYubGliaW5mbz1hLmxpYmluZm8pfSk7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksZD0+e2EubG9nZ2VyU2VydmljZS5lcnJvcihk''@;'; put 'put ''KSxudWxsPT09YS5saWJpbmZvJiYoYS5saWJpbmZvPVtdKX0pfSkoKX1maWx0ZXJGbihhKXt0aGlzLmxpYnJhcmllcz10aGlzLmxpYnJhcmllcy5maWx0ZXIoaD0+LTEhPT1oLkxJQlJBUllOQU1FLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihhLnRvTG9jYWxlTG93ZXJDYXNlKCkpKX1kb3dubG9h''@;'; put 'put ''ZERhdGEoKXtsZXQgYT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCxkPXRoaXMuc2FzanNDb25maWcuYXBwTG9jO2NvbnN0IGg9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTtsZXQgVixmPSImdHlwZT0iK3RoaXMuZG93bmxvYWRGb3JtYXQsdj0iJnRhYmxlPSIrdGhpcy50''@;'; put 'put ''YWJsZVRpdGxlLFM9IlNBU1ZJWUEiPT09dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlP2AmX2NvbnRleHRuYW1lPSR7dGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZX1gOiIiO1Y9dHlwZW9mIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkPiJ1Ij8wOnBhcnNlSW50KHRo''@;'; put 'put ''aXMucm91dGUuc25hcHNob3QucGFyYW1zLmZpbHRlcklkKSx3aW5kb3cub3BlbihhK2grIi8/X3Byb2dyYW09IitkKyIvc2VydmljZXMvcHVibGljL2dldHJhd2RhdGEiK2YrditTKyImZmlsdGVyPSIrViksdGhpcy5vcGVuRG93bmxvYWQ9ITF9ZG93bmxvYWREREwoKXtsZXQgYT10aGlzLmxp''@;'; put 'put ''YixkPXRoaXMudGFibGUsaD10aGlzLmRvd25sb2FkRm9ybWF0LnJlcGxhY2UoIl9EREwiLCIiKSxmPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHY9dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2M7Y29uc3QgUz10aGlzLnNhc1NlcnZpY2UuZ2V0RXhlY3V0aW9uUGF0aCgpO3dpbmRvdy5vcGVu''@;'; put 'put ''KGYrUysiLz9fcHJvZ3JhbT0iK3YrIi9zZXJ2aWNlcy9wdWJsaWMvZ2V0ZGRsIitgJmRzPSR7ZH0mbGlicmVmPSR7YX0mZmxhdm91cj0ke2h9JHsiU0FTVklZQSI9PT10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU/YCZfY29udGV4dG5hbWU9JHt0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHRO''@;'; put 'put ''YW1lfWA6IiJ9YCksdGhpcy5vcGVuRG93bmxvYWQ9ITF9b25DbGlDb21tYW5kRm9jdXMoYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEudGFyZ2V0LnNlbGVjdCgpfWVkaXRUYWJsZSgpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi9lZGl0b3IvIit0aGlzLmxpYlRhYil9dGFibGVFZGl0RXhp''@;'; put 'put ''c3RzKCl7bGV0IGE9e307YT1Ibi5lZGl0b3IubGlic0FuZFRhYmxlcztsZXQgZD10aGlzLmxpYlRhYi5zcGxpdCgiLiIpWzFdLGg9dGhpcy5saWJUYWIuc3BsaXQoIi4iKVswXTtyZXR1cm4hIWFbaF0mJmFbaF0uaW5jbHVkZXMoZCl9Z29Ub0xpbmVhZ2UoKXtsZXQgZD1gL3ZpZXcvbGluZWFn''@;'; put 'put ''ZS8ke3RoaXMudGFibGV1cmkuc3BsaXQoIlxcIilbMV19L1JFVkVSU0VgO3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoZCl9c2hvd1dlYlF1ZXJ5KCl7bGV0IGE7dGhpcy53ZWJRdWVyeT0hMCxhPXR5cGVvZiB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZD4idSI/MDpwYXJz''@;'; put 'put ''ZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5maWx0ZXJJZCk7bGV0IGQ9d2luZG93LmxvY2F0aW9uLnBvcnQubGVuZ3RoPjA/IjoiK3dpbmRvdy5sb2NhdGlvbi5wb3J0OiIiO2NvbnN0IGg9dGhpcy5zYXNTZXJ2aWNlLmdldEV4ZWN1dGlvblBhdGgoKTtsZXQgdj1gJHt3aW5kb3cu''@;'; put 'put ''bG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0ke2R9LyR7aH0vP19wcm9ncmFtPSR7dGhpcy5zYXNqc0NvbmZpZy5hcHBMb2N9L3NlcnZpY2VzL3B1YmxpYy9nZXRyYXdkYXRhJnR5cGU9V0VCJHt0aGlzLndlYlF1ZXJ5VGFiPyJUQUIiOiJDU1YifSZ0YWJs''@;'; put 'put ''ZT0ke3RoaXMudGFibGVUaXRsZX0keyImZmlsdGVyPSIrYX1gO3RoaXMud2ViUXVlcnlUZXh0PXYucmVwbGFjZSgvIC9naW0sIiUyMCIpfWNvcHlUb0NsaXAoKXtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2Euc3R5bGUucG9zaXRpb249ImZpeGVkIixhLnN0eWxl''@;'; put 'put ''LmxlZnQ9IjAiLGEuc3R5bGUudG9wPSIwIixhLnN0eWxlLm9wYWNpdHk9IjAiLGEudmFsdWU9dGhpcy53ZWJRdWVyeVRleHQsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmZvY3VzKCksYS5zZWxlY3QoKSxkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLGRvY3VtZW50LmJvZHku''@;'; put 'put ''cmVtb3ZlQ2hpbGQoYSl9Z29Ub1ZpZXdlcigpe3RoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoIi92aWV3L2RhdGEiKX1zaG93VGFibGVTZWxlY3QoKXt0aGlzLnRhYmxlRmxhZz0hdGhpcy50YWJsZUZsYWd9Y2hlY2tFeHBhbmQoYSl7fWNvbGxhcHNlTGlicmFyeUl0ZW1zKGEsZCl7YS5mb3JF''@;'; put 'put ''YWNoKGg9PntoLkxJQlJBUllSRUYhPT1kLkxJQlJBUllSRUYmJihoLmV4cGFuZGVkPSExKX0pfWxvYWRNb3JlTGlicmFyaWVzKCl7dGhpcy5saWJyYXJpZXNQYWdpbmd8fCh0aGlzLmxpYnJhcmllc1BhZ2luZz0hMCx0aGlzLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyh0aGlzLmxp''@;'; put 'put ''YnJhcmllcywhMCksdGhpcy5saWJyYXJpZXNQYWdpbmc9ITEpfXRyZWVOb2RlQ2xpY2tlZChhLGQpeyJDb2xsYXBzZSI9PT1hLnRhcmdldC50aXRsZSYmdGhpcy5jb2xsYXBzZUxpYnJhcnlJdGVtcyh0aGlzLmxpYnJhcmllcyxkKX1saWJyYXJ5RXhwYW5kZWRDaGFuZ2UoYSxkKXthJiZ0aGlz''@;'; put 'put ''LmNvbGxhcHNlTGlicmFyeUl0ZW1zKHRoaXMubGlicmFyaWVzLGQpfWxpYnJhcnlPbkNsaWNrKGEsZCxoKXt2YXIgZj10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2lmKGQudGFibGVzP2QuZXhwYW5kZWQ9ISFofHwhZC5leHBhbmRlZDp5aWVsZCBmLnNlbGVjdFRhYmxlKGEsITEsZCksZC5l''@;'; put 'put ''eHBhbmRlZCl7Zi5jZGYuZGV0ZWN0Q2hhbmdlcygpO2xldCB2PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNzZWFyY2hfJHtkLkxJQlJBUllSRUZ9YCk7Zi5sb2dnZXJTZXJ2aWNlLmxvZygiW2xpYlRyZWVTZWFyY2hJbnB1dF0iLHYpLHYmJnYuZm9jdXMoKSxkJiZkLmxpYmluZm8mJihmLmxp''@;'; put 'put ''YmluZm89ZC5saWJpbmZvKSxmLmxpYiYmZi50YWJsZSYmIWg/Zi5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhIl0se3NraXBMb2NhdGlvbkNoYW5nZTohMCxxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KS50aGVuKCgpPT57Zi5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRh''@;'; put 'put ''LyIrZi5saWJdLHtxdWVyeVBhcmFtc0hhbmRsaW5nOiJwcmVzZXJ2ZSJ9KX0pOmYubGliJiYhZi50YWJsZSYmZi5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoIi92aWV3L2RhdGEvIitmLmxpYil9Zi5jb2xsYXBzZUxpYnJhcnlJdGVtcyhmLmxpYnJhcmllcyxkKX0pKCl9b25UYWJsZUNsaWNrKGEs''@;'; put 'put ''ZCl7dGhpcy5saWI9ZC5MSUJSQVJZUkVGLHRoaXMudGFibGU9YSx0aGlzLnNlbGVjdExpYlRhYmxlKGEpLHRoaXMudmlld0RhdGEoMCl9c2VsZWN0VGFibGUoYSxkLGgpe3ZhciBmPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7aC5sb2FkaW5nVGFibGVzPSEwLGYudGFibGU9ITEsZi50YWJs''@;'; put 'put ''ZURpc2FibGU9ITAsIlBsZWFzZSBzZWxlY3QgbGlicmFyeSIhPT1hP0huLnZpZXdlci50YWJsZXNTZXQmJmQ/KGYuYWJvcnRBY3RpdmU9ITEsZi50YWJsZURpc2FibGU9ITEsZi50YWJsZXM9SG4udmlld2VyLnRhYmxlcyxmLmxpYmluZm89SG4udmlld2VyLmxpYmluZm8pOihmLmxpYmluZm89''@;'; put 'put ''bnVsbCx5aWVsZCBmLnNhc1N0b3JlU2VydmljZS52aWV3VGFibGVzKGEpLnRoZW4odj0+e2YuYWJvcnRBY3RpdmU9ITEsZi50YWJsZURpc2FibGU9ITE7bGV0IFM9di5tcHRhYmxlcy5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIFYuTUVNTkFNRX0pO2YubGliaW5mbz12LmxpYmluZm98fFtdLGYu''@;'; put 'put ''dGFibGVzPVMsaCYmKGgudGFibGVzPVMsaC5saWJpbmZvPWYubGliaW5mbyksSG4udmlld2VyLmxpYnJhcmllcz1mLmxpYnJhcmllcyxIbi52aWV3ZXIubGlicmFyeT1mLmxpYixIbi52aWV3ZXIudGFibGVzPWYudGFibGVzLEhuLnZpZXdlci5saWJpbmZvPWYubGliaW5mbyxIbi52aWV3ZXIu''@;'; put 'put ''dGFibGVzU2V0PSEwfSkuY2F0Y2godj0+e2YubG9nZ2VyU2VydmljZS5lcnJvcih2KSxmLmFib3J0QWN0aXZlPSEwLGYubm9EYXRhPSEwLGYudGFibGVUaXRsZT0iIixmLnRhYmxlRGlzYWJsZT0hMH0pKTpmLnRhYmxlRGlzYWJsZT0hMCxIbi52aWV3ZXIubGlicmFyeT1mLmxpYixkfHxmLmNs''@;'; put 'put ''ZWFyR2xvYmFsc0ZpbHRlcigpLGgubG9hZGluZ1RhYmxlcz0hMSxoLmV4cGFuZGVkPSFoLmV4cGFuZGVkfSkoKX1zZWxlY3RMaWJUYWJsZShhLGQpeyJQbGVhc2Ugc2VsZWN0IHRhYmxlIiE9PWE/KHRoaXMuYWN0aW9uRGlzYWJsZT0hMSx0aGlzLmxpYlRhYj10aGlzLmxpYisiLiIrdGhpcy50''@;'; put 'put ''YWJsZSk6dGhpcy5hY3Rpb25EaXNhYmxlPSEwLEhuLnZpZXdlci50YWJsZT1hLGR8fHRoaXMuY2xlYXJHbG9iYWxzRmlsdGVyKCksdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZyh0aGlzLmxpYlRhYil9Y2xlYXJHbG9iYWxzRmlsdGVyKCl7SG4udmlld2VyLmZpbHRlci5saWJkcz0iIixIbi52aWV3''@;'; put 'put ''ZXIuZmlsdGVyLndoZXJlQ2xhdXNlPSIiLEhuLnZpZXdlci5maWx0ZXIuZ3JvdXBMb2dpYz0iIixIbi52aWV3ZXIuZmlsdGVyLmNsYXVzZXM9W10sSG4udmlld2VyLmZpbHRlci5jb2xzPVtdLEhuLnZpZXdlci5maWx0ZXIudmFscz1bXX1saWJUYWJBY3RpdmUoYSxkKXtyZXR1cm4hIXRoaXMu''@;'; put 'put ''bGliVGFiJiZhKyIuIitkPT09dGhpcy5saWJUYWJ9dHJlZU9uRmlsdGVyKGEsZCl7dGhpcy5oZWxwZXJTZXJ2aWNlLnRyZWVPbkZpbHRlcihhLGQpfWxpYnJhcnlPbkZpbHRlcigpe3RoaXMuaGVscGVyU2VydmljZS5saWJyYXJ5T25GaWx0ZXIodGhpcy5saWJyYXJpZXMsdGhpcy5saWJyYXJp''@;'; put 'put ''ZXNTZWFyY2gsIkxJQlJBUllOQU1FIiksSG4udmlld2VyLmxpYnJhcmllc1NlYXJjaD10aGlzLmxpYnJhcmllc1NlYXJjaH1saWJyYXJ5UmVzZXRGaWx0ZXIoKXt0aGlzLmhlbHBlclNlcnZpY2UucmVzZXRBcnJheUZpbHRlcih0aGlzLmxpYnJhcmllcyl9dmlld0RhdGEoYSl7dmFyIGQ9dGhp''@;'; put 'put ''cztyZXR1cm4gWShmdW5jdGlvbiooKXtsZXQgaDtpZihkLmxvYWRpbmdUYWJsZVZpZXc9ITAsdHlwZW9mIGQubGliRGF0YXNldD4idSIpaD1kLmxpYisiLiIrZC50YWJsZTtlbHNlIGlmKHR5cGVvZiBkLmxpYj4idSImJnR5cGVvZiBkLnRhYmxlPiJ1Iil7bGV0IFM9W107aWYoUz1kLmxpYkRh''@;'; put 'put ''dGFzZXQuc3BsaXQoIi4iKSxIbi52aWV3ZXIuc3RhcnR1cFNldD9kLmxpYnJhcmllcz1Ibi52aWV3ZXIubGlicmFyaWVzOnlpZWxkIGQuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihWPT57ZC5saWJyYXJpZXM9Vi5zYXNsaWJzfSkuY2F0Y2goVj0+e2QubG9nZ2VyU2VydmljZS5l''@;'; put 'put ''cnJvcihWKX0pLGQubGliPVNbMF0sSG4udmlld2VyLnN0YXJ0dXBTZXQpZC50YWJsZXM9SG4udmlld2VyLnRhYmxlcztlbHNle2xldCBWPWQubGlicmFyaWVzLmZpbmQoUT0+US5MSUJSQVJZUkVGLnRvTG93ZXJDYXNlKCk9PT1kLmxpYi50b0xvd2VyQ2FzZSgpKTt5aWVsZCBkLnNhc1N0b3Jl''@;'; put 'put ''U2VydmljZS52aWV3VGFibGVzKGQubGliKS50aGVuKFE9PntkLnRhYmxlcz1RLm1wdGFibGVzLm1hcChmdW5jdGlvbihkZSl7cmV0dXJuIGRlLk1FTU5BTUV9KSxWLnRhYmxlcz1kLnRhYmxlcyxIbi52aWV3ZXIubGlicmFyaWVzPWQubGlicmFyaWVzLEhuLnZpZXdlci50YWJsZXM9ZC50YWJs''@;'; put 'put ''ZXMsSG4udmlld2VyLnN0YXJ0dXBTZXQ9ITB9KS5jYXRjaChRPT57ZC5sb2dnZXJTZXJ2aWNlLmVycm9yKFEpfSl9ZC50YWJsZT1TWzFdLGQudGFibGVGbGFnPSExLGg9ZC5saWJEYXRhc2V0LGQubGliVGFiPWh9ZWxzZSBIbi52aWV3ZXIuc3RhcnR1cFNldD9kLmxpYnJhcmllcz1Ibi52aWV3''@;'; put 'put ''ZXIubGlicmFyaWVzOnlpZWxkIGQuc2FzU3RvcmVTZXJ2aWNlLnZpZXdMaWJzKCkudGhlbihTPT57ZC5saWJyYXJpZXM9Uy5zYXNsaWJzfSkuY2F0Y2goUz0+e2QubG9nZ2VyU2VydmljZS5lcnJvcihTKX0pLHR5cGVvZiBkLnRhYmxlPCJ1IiYmKEhuLnZpZXdlci5zdGFydHVwU2V0P2QudGFi''@;'; put 'put ''bGVzPUhuLnZpZXdlci50YWJsZXM6eWllbGQgZC5zYXNTdG9yZVNlcnZpY2Uudmlld1RhYmxlcyhkLmxpYikudGhlbihTPT57ZC50YWJsZXM9Uy5tcHRhYmxlcy5tYXAoZnVuY3Rpb24oVil7cmV0dXJuIFYuTUVNTkFNRX0pfSkuY2F0Y2goUz0+e2QubG9nZ2VyU2VydmljZS5lcnJvcihTKSxk''@;'; put 'put ''LnJvdXRlci5uYXZpZ2F0ZShbIi92aWV3L2RhdGEiXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJlc2VydmUifSl9KSxkLnRhYmxlRmxhZz0hMSxoPWQubGliKyIuIitkLnRhYmxlLGQudGFibGVUaXRsZT1oLGQubGliVGFiPWgpO2Qucm91dGVyLnVybC5zcGxpdCgiLyIpLmxlbmd0aD4zJiZo''@;'; put 'put ''JiYoeWllbGQgZC5zYXNTdG9yZVNlcnZpY2Uudmlld0RhdGEoaCxhKS50aGVuKFM9PntpZihTLnF1ZXJ5Lmxlbmd0aD4wJiYidmlldyI9PT1Ibi5yb290UGFyYW0mJjA9PT1Ibi52aWV3ZXIuZmlsdGVyLmNsYXVzZXMubGVuZ3RoJiYoSG4udmlld2VyLmZpbHRlci5xdWVyeT1kLmhlbHBlclNl''@;'; put 'put ''cnZpY2UuZGVlcENsb25lKFMucXVlcnkpLEhuLnZpZXdlci5maWx0ZXIubGliZHM9ZC5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtLGQuc2FzU3RvcmVTZXJ2aWNlLmluaXRpYWxpemVHbG9iYWxGaWx0ZXJDbGF1c2UoInZpZXdlciIsUy5jb2xzKSksZC5hYm9ydEFjdGl2ZT0hMSxkLmZp''@;'; put 'put ''bHRlckNvbHM9Uy5jb2xzLCRYKGQuZmlsdGVyQ29scyxbXSxTLiR2aWV3ZGF0YSksZC5udW1iZXJPZlJvd3M9Uy5zYXNwYXJhbXNbMF0uTk9CUyxkLmhlYWRlclBrcz1TLnNhc3BhcmFtc1swXS5QS19GSUVMRFMuc3BsaXQoIiAiKSwiU0FTOSI9PT1kLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUp''@;'; put 'put ''e2xldCBDZT1TLnNhc3BhcmFtc1swXS5UQUJMRVVSSTtDZSYmQ2UubGVuZ3RoPjAmJihkLnRhYmxldXJpPUNlKX1kLmhvdFRhYmxlLmRhdGE9Uy52aWV3ZGF0YSxkLiRkYXRhRm9ybWF0cz1TLiR2aWV3ZGF0YSxkLmRzbWV0YT1TLmRzbWV0YSxkLnZlcnNpb25zPVMudmVyc2lvbnN8fFtdLGQu''@;'; put 'put ''c2V0RFNOb3RlKCksZC5xdWVyeVRleHQ9Uy5zYXNwYXJhbXNbMF0uRklMVEVSX1RFWFQ7bGV0IFY9W10sUT1bXTtmb3IobGV0IENlIGluIFMudmlld2RhdGFbMF0pQ2UmJlEucHVzaChDZSk7Zm9yKGxldCBDZT0wO0NlPFEubGVuZ3RoO0NlKyspVi5wdXNoKHtkYXRhOlFbQ2VdfSk7ZC5ob3RU''@;'; put 'put ''YWJsZS5jb2xIZWFkZXJzPVEsZC5ob3RUYWJsZS5jb2x1bW5zPVYsZC5ob3RUYWJsZS5jZWxscz1mdW5jdGlvbigpe3JldHVybntyZWFkT25seTohMH19LGQudGFibGVGbGFnPSExO2xldCBwZT1bXTtwZT1oLnNwbGl0KCIuIiksZC5saWI9cGVbMF0sZC50YWJsZT1wZVsxXSwwPT09ZC5ob3RU''@;'; put 'put ''YWJsZS5kYXRhLmxlbmd0aD8oZC5ub0RhdGE9ITAsZC50YWJsZUZsYWc9ITApOihkLm5vRGF0YT0hMSxkLnRhYmxlRmxhZz0hMSksZC5ub0RhdGFSZXFFcnI9ITF9KS5jYXRjaChTPT57ZC5sb2dnZXJTZXJ2aWNlLmVycm9yKFMpLGQuYWJvcnRBY3RpdmU9ITAsZC5ub0RhdGFSZXFFcnI9ITB9''@;'; put 'put ''KSksZC5yb3V0ZXIudXJsLmluY2x1ZGVzKCIvZGF0YSIpJiZoJiZkLnJvdXRlci5uYXZpZ2F0ZSgwIT09YT9bIi92aWV3L2RhdGEvIitoKyIvIithXTpbIi92aWV3L2RhdGEvIitoXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJlc2VydmUifSk7bGV0IGY9ZC50YWJsZSx2PWQubGlicmFyaWVz''@;'; put 'put ''LmZpbmQoUz0+Uy5MSUJSQVJZUkVGLnRvTG93ZXJDYXNlKCk9PT1kLmxpYi50b0xvd2VyQ2FzZSgpKTt2PyhIbi52aWV3ZXIubGlicmFyaWVzLmxlbmd0aD4wJiYoZC5saWJyYXJpZXM9SG4udmlld2VyLmxpYnJhcmllcyxkLmxpYnJhcmllc1NlYXJjaD1Ibi52aWV3ZXIubGlicmFyaWVzU2Vh''@;'; put 'put ''cmNoKSxkLmxpYnJhcnlPbkNsaWNrKGQubGliLHYsITApKTpkLmxpYmluZm89W10sZC50YWJsZT1mfHxkLnRhYmxlLGQubGlicmFyaWVzJiZkLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmllcyhkLmxpYnJhcmllcyksZC5yb3V0ZXIudXJsLmluY2x1ZGVzKCIvZGF0YSIpJiZkLmV2ZW50''@;'; put 'put ''U2VydmljZS5jbG9zZVNpZGViYXIoKSxkLmxvYWRpbmdUYWJsZVZpZXc9ITEsIWQubm9EYXRhJiYhZC5ub0RhdGFSZXFFcnImJmgmJmQuc2V0dXBIb3QoKSxkLmhvdEluc3RhbmNlQ2xpY2tMaXN0ZW5lcnx8c2V0VGltZW91dCgoKT0+e2xldCBTPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJo''@;'; put 'put ''b3RJbnN0YW5jZSIpO1MmJihTLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsVj0+e3NldFRpbWVvdXQoKCk9PntsZXQgUT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZGVidWctc3dpdGNoLWl0ZW0iKXx8dm9pZCAwO1EmJlEuY2xpY2soKX0sMTAwKX0pLGQuaG90SW5zdGFuY2VDbGlj''@;'; put 'put ''a0xpc3RlbmVyPSEwKX0sMmUzKX0pKCl9bWF4V2lkdGhDaGVrZXIoYSxkKXtyZXR1cm4gYT4yMDA/MjAwOmF9b3BlblFiKCl7dGhpcy5maWx0ZXI9ITAsdGhpcy5jZGYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2FzU3RvcmVTZXJ2aWNlLnNldFF1ZXJ5VmFyaWFibGVzKHRoaXMubGliKyIuIit0''@;'; put 'put ''aGlzLnRhYmxlLHRoaXMuZmlsdGVyQ29scyl9c2VuZENsYXVzZSgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rpb24qKCl7YS5zdWJtaXRMb2FkaW5nPSEwO2xldCBkPVtdLGg9W107aWYodHlwZW9mIGEuY2xhdXNlcz4idSIpcmV0dXJuIGEubnVsbFZhcmlhYmxlcz0hMCx2b2lkKGEuc3Vi''@;'; put 'put ''bWl0TG9hZGluZz0hMSk7e2xldCBmPWEuY2xhdXNlcy5xdWVyeU9iajtpZihmWzBdLmVsZW1lbnRzLmxlbmd0aDwxKXJldHVybiJ2aWV3Ij09PUhuLnJvb3RQYXJhbSYmKEhuLnZpZXdlci5maWx0ZXIuY2xhdXNlcz1bXSxIbi52aWV3ZXIuZmlsdGVyLnF1ZXJ5PVtdLEhuLnZpZXdlci5maWx0''@;'; put 'put ''ZXIuZ3JvdXBMb2dpYz0iIiksdm9pZCBhLnJvdXRlci5uYXZpZ2F0ZShbIi92aWV3L2RhdGEvIithLmxpYmRzXSx7cXVlcnlQYXJhbXNIYW5kbGluZzoicHJlc2VydmUifSk7Zm9yKGxldCB2PTA7djxmLmxlbmd0aDt2Kyspe2NvbnN0IFM9Zlt2XS5lbGVtZW50cztkPVMuZmlsdGVyKGZ1bmN0''@;'; put 'put ''aW9uKFYpe3JldHVybiBudWxsPT09Vi52YXJpYWJsZX0pLGQubGVuZ3RoJiZoLnB1c2goUyl9fWlmKGgubGVuZ3RoKXJldHVybiBhLm51bGxWYXJpYWJsZXM9ITAsdm9pZChhLnN1Ym1pdExvYWRpbmc9ITEpO3tjb25zdCBmPXtncm91cExvZ2ljOmEuY2xhdXNlcy5ncm91cExvZ2ljLGZpbHRl''@;'; put 'put ''ckdyb3VwczpbXX07YS5jbGF1c2VzLnF1ZXJ5T2JqLmZvckVhY2goUz0+e2NvbnN0IFY9e2ZpbHRlckNsYXVzZXM6W119O1MuZWxlbWVudHMuZm9yRWFjaChRPT57Vi5maWx0ZXJDbGF1c2VzLnB1c2goYS5oZWxwZXJTZXJ2aWNlLmRlZXBDbG9uZShRKSl9KSxWLmNsYXVzZUxvZ2ljPVMuY2xh''@;'; put 'put ''dXNlTG9naWMsZi5maWx0ZXJHcm91cHMucHVzaChhLmhlbHBlclNlcnZpY2UuZGVlcENsb25lKFYpKX0pO2NvbnN0IHY9YS5zYXNTdG9yZVNlcnZpY2UuY3JlYXRlRmlsdGVyUXVlcnlUYWJsZShmKTt5aWVsZCBhLnNhc1N0b3JlU2VydmljZS5zYXZlUXVlcnkoYS5saWJkcyx2KS50aGVuKFM9''@;'; put 'put ''PnthLnF1ZXJ5VGV4dD1TLnJlc3VsdFswXS5GSUxURVJfVEVYVDtsZXQgVj1TLnJlc3VsdFswXS5GSUxURVJfUks7YS5yb3V0ZXIubmF2aWdhdGUoWyIvdmlldy9kYXRhLyIrYS5saWJkcysiLyIrVl0se3F1ZXJ5UGFyYW1zSGFuZGxpbmc6InByZXNlcnZlIn0pLGEudmlld0RhdGEoViksYS5m''@;'; put 'put ''aWx0ZXI9ITF9KS5jYXRjaChTPT57YS5sb2dnZXJTZXJ2aWNlLmVycm9yKFMpfSksYS5zdWJtaXRMb2FkaW5nPSExfX0pKCl9cmVtb3ZlUXVlcnkoKXt0aGlzLnNhc1N0b3JlU2VydmljZS5yZW1vdmVDbGF1c2UoKX1kYXRhc2V0SW5mb01vZGFsUm93Q2xpY2tlZChhKXt2b2lkIDAhPT1hLkxP''@;'; put 'put ''QURfUkVGJiZ0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9zdGFnZS8ke2EuTE9BRF9SRUZ9YF0pfXNldERTTm90ZSgpe2NvbnN0IGE9dGhpcy5kc21ldGEuZmluZChmPT4iTk9URVMiPT09Zi5OQU1FKSxkPXRoaXMuZHNtZXRhLmZpbmQoZj0+IkREX0xPTkdERVNDIj09PWYuTkFNRSksaD10aGlz''@;'; put 'put ''LmRzbWV0YS5maW5kKGY9PiJERF9TSE9SVERFU0MiPT09Zi5OQU1FKTt0aGlzLmRzTm90ZT1hJiZhLlZBTFVFP2EuVkFMVUU6ZCYmZC5WQUxVRT9kLlZBTFVFOmgmJmguVkFMVUU/aC5WQUxVRToiIn1zZXR1cEhvdCgpe3NldFRpbWVvdXQoKCk9PnshdGhpcy5sb2FkaW5nVGFibGVWaWV3JiZ0''@;'; put 'put ''aGlzLmxpYkRhdGFzZXQmJih0aGlzLmhvdEluc3RhbmNlPXRoaXMuaG90VGFibGVSZWdpc3RlcmVyLmdldEluc3RhbmNlKCJob3RJbnN0YW5jZSIpLHRoaXMuaG90SW5zdGFuY2UmJnRoaXMuaG90SW5zdGFuY2UudXBkYXRlU2V0dGluZ3Moe2hlaWdodDp0aGlzLmhvdFRhYmxlLmhlaWdodCxt''@;'; put 'put ''b2RpZnlDb2xXaWR0aDpmdW5jdGlvbihhLGQpe3JldHVybiBhPjUwMD81MDA6YX0sYWZ0ZXJHZXRDb2xIZWFkZXI6KGEsZCk9Pntjb25zdCBoPXRoaXMuaG90SW5zdGFuY2U/LmNvbFRvUHJvcChhKTtoJiZ0aGlzLmhlYWRlclBrcy5pbmRleE9mKGgpPi0xJiZkLmNsYXNzTGlzdC5hZGQoInBy''@;'; put 'put ''aW1hcnlLZXlIZWFkZXJTdHlsZSIpLGQuY2xhc3NMaXN0LmFkZChIbi5oYW5kc29udGFibGUuZGFya1RhYmxlSGVhZGVyQ2xhc3MpfX0pKX0sMWUzKX1sb2FkV2l0aFBhcmFtZXRlcnMoKXt2YXIgYT10aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2Euc3dpdGNoRmxhZz0hMCxhLnRhYmxlVGl0''@;'; put 'put ''bGU9YS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtfHwwLGEudXJsRmlsdGVyUGs9cGFyc2VJbnQoYS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZmlsdGVySWR8fCIwIik7bGV0IGg9YS5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMubGliTWVtO2EubGliRGF0YXNldD1oLGguaW5jbHVkZXMoIi4i''@;'; put 'put ''KXx8KGEubGliPWgpLHlpZWxkIGEudmlld0RhdGEoYS51cmxGaWx0ZXJQayksYS5ub0RhdGE/c2V0VGltZW91dCgoKT0+e2EudGFibGVGbGFnPSEwfSwxMjAwKTpzZXRUaW1lb3V0KCgpPT57YS50YWJsZUZsYWc9ITF9LDEyMDApfSkoKX1sb2FkV2l0aG91dFBhcmFtZXRlcnMoKXt2YXIgYT10''@;'; put 'put ''aGlzO3JldHVybiBZKGZ1bmN0aW9uKigpe2Euc3dpdGNoRmxhZz0hMSxhLmxpYnJhcmllc0xvYWRpbmc9ITAsSG4udmlld2VyLnN0YXJ0dXBTZXQ/c2V0VGltZW91dCgoKT0+e2EubGlicmFyaWVzPUhuLnZpZXdlci5saWJyYXJpZXMsYS5saWJyYXJpZXNTZWFyY2g9SG4udmlld2VyLmxpYnJh''@;'; put 'put ''cmllc1NlYXJjaCxhLmxpYj1Ibi52aWV3ZXIubGlicmFyeSxhLmxpYnJhcmllc1RyZWVFeHBhbmRlZD0hMCxhLmxpYnJhcmllc0xvYWRpbmc9ITEsYS5oZWxwZXJTZXJ2aWNlLmRpc3BsYXlMaWJyYXJpZXMoYS5saWJyYXJpZXMpfSwxMDApOihhLm5vRGF0YVJlcUVycj0hMSx5aWVsZCBhLnNh''@;'; put 'put ''c1N0b3JlU2VydmljZS52aWV3TGlicygpLnRoZW4oZD0+e2EubGlicmFyaWVzPWQuc2FzbGlicyxIbi52aWV3ZXIubGlicmFyaWVzPWEubGlicmFyaWVzLEhuLnZpZXdlci5zdGFydHVwU2V0PSEwLGEubGlicmFyaWVzTG9hZGluZz0hMSxhLmhlbHBlclNlcnZpY2UuZGlzcGxheUxpYnJhcmll''@;'; put 'put ''cyhhLmxpYnJhcmllcyl9KS5jYXRjaChkPT57YS5sb2dnZXJTZXJ2aWNlLmVycm9yKGQpLGEubGlicmFyaWVzTG9hZGluZz0hMSxhLm5vRGF0YVJlcUVycj0hMH0pKX0pKCl9bmdBZnRlclZpZXdJbml0KCl7fW5nQWZ0ZXJDb250ZW50SW5pdCgpe3ZhciBhPXRoaXM7cmV0dXJuIFkoZnVuY3Rp''@;'; put 'put ''b24qKCl7YS5ob3RUYWJsZS5kYXRhLmxlbmd0aD4wJiYoYS50YWJsZUZsYWc9ITApLGEuX3F1ZXJ5PWEuc2FzU3RvcmVTZXJ2aWNlLnF1ZXJ5LnN1YnNjcmliZShkPT57YS53aGVyZVN0cmluZz1kLnN0cmluZyxhLmNsYXVzZXM9ZC5vYmosYS5saWJkcz1kLmxpYmRzfSksdHlwZW9mIGEucm91''@;'; put 'put ''dGUuc25hcHNob3QucGFyYW1zLmxpYk1lbTwidSI/YS5sb2FkV2l0aFBhcmFtZXRlcnMoKTphLmxvYWRXaXRob3V0UGFyYW1ldGVycygpfSkoKX1zdGF0aWN7dGhpcy5cdTAyNzVmYWM9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyhkfHxsKShKZShBMCksSmUoWmQpLEplKHZhKSxKZShKcyksSmUo''@;'; put 'put ''T2MpLEplKERsKSxKZShPMSksSmUoZXUpLEplKG1kKSxKZShjYSkpfX1zdGF0aWN7dGhpcy5cdTAyNzVjbXA9U3Ioe3R5cGU6bCxzZWxlY3RvcnM6W1siYXBwLXZpZXdlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24oZCxoKXtpZigxJmQmJkhvKGV3dCw1KSwyJmQpe2xldCBmO2xpKGY9Y2koKSkm''@;'; put 'put ''JihoLnF1ZXJ5RmlsdGVyQ29tcExpc3Q9Zil9fSxob3N0QXR0cnM6WzEsImNvbnRlbnQtY29udGFpbmVyIl0sZGVjbHM6OTUsdmFyczozMCxjb25zdHM6W1siY2xpQ29tbWFuZElucHV0IiwiIl0sWyJzZWFyY2hMaWJUcmVlSW5wdXQiLCIiXSxbInNlYXJjaFRyZWVJbnB1dCIsIiJdLFsicXVl''@;'; put 'put ''cnlGaWx0ZXIiLCIiXSxbInNlYXJjaEVsIiwiIl0sWzMsInNjcm9sbGVkVG9Cb3R0b20iXSxbImNsYXNzIiwibXktMTAtbXgtYXV0byB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsiY2xhc3MiLCJzZWFyY2gtbm9kZSIsNCwibmdJZiJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwi''@;'; put 'put ''dy0xMDAgdGV4dC1jZW50ZXIiLDQsIm5nSWYiXSxbMSwiY29udGVudC1hcmVhIl0sWyJjbGFzcyIsIm1vZGFsIHotaW5kZXgtaGlnaGVzdCIsNCwibmdJZiJdLFsiY2xhc3MiLCJtb2RhbC1iYWNrZHJvcCIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFszLCJjbHJNb2RhbE9wZW5D''@;'; put 'put ''aGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiXSxbMSwibW9kYWwtdGl0bGUiLCJjZW50ZXIiLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWRhcmtlci1ncmF5Il0sWzEsIm1vZGFsLWJvZHkiXSxbMSwiY2xyLWNvbC1tZC02Il0sWzEsImRvd25sb2FkLXNlbGVjdCJdLFsiY2xyU2Vs''@;'; put 'put ''ZWN0IiwiIiwzLCJuZ01vZGVsQ2hhbmdlIiwibmdNb2RlbCJdLFsidmFsdWUiLCJDU1YiXSxbInZhbHVlIiwiU0FTIl0sWyJ2YWx1ZSIsIlBHU1FMX0RETCJdLFsidmFsdWUiLCJTQVNfRERMIl0sWyJ2YWx1ZSIsIlRTUUxfRERMIl0sWyJ2YWx1ZSIsIkVYQ0VMIl0sWyJ2YWx1ZSIsIk1BUktE''@;'; put 'put ''T1dOIl0sWzEsIm1vZGFsLWZvb3RlciJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLXNtIiwiYnRuLW91dGxpbmUiLDMsImNsaWNrIl0sWyJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImlkIl0sWzEsIm1vZGFs''@;'; put 'put ''LWJvZHkiLCJ3ZWItcXVlcnkiXSxbMSwicm93Il0sWzEsImNsci1jb2wtbGctMTIiLCJjbHItY29sLW1kLTEyIiwiY2xyLWNvbC1zbS0xMiIsImNsci1jb2wteHMtMTIiXSxbMSwiY2FyZCIsIm5vLWJvcmRlcnMiXSxbMSwiY2FyZC1oZWFkZXIiLCJkLWZsZXgiLCJqdXN0aWZ5LWNvbnRlbnQt''@;'; put 'put ''YmV0d2VlbiJdLFsxLCJidG4tZ3JvdXAiXSxbMSwicmFkaW8iLCJidG4iLDMsImNsaWNrIl0sWyJ0eXBlIiwicmFkaW8iLCJuYW1lIiwiYnRuLWdyb3VwLWRlbW8tcmFkaW9zIiwzLCJjaGVja2VkIl0sWzEsImNhcmQtYmxvY2siLCJ3ZWItcXVlcnktd3JhcHBlciIsIndvcmQtYnJlYWstYWxs''@;'; put 'put ''Il0sWyJjbHJUZXh0YXJlYSIsIiIsInJvd3MiLCI0IiwiY29scyIsIjUwIiwidHlwZSIsInRleHQiLCJyZWFkb25seSIsIiIsMSwid2ViLXF1ZXJ5LXRleHQiLDMsImZvY3VzIiwidmFsdWUiXSxbMSwiY2FyZC1mb290ZXIiXSxbMSwiYnRuIiwiYnRuLXNtIiwiYnRuLWxpbmsiLDMsImNsaWNr''@;'; put 'put ''Iiwibmd4Q2xpcGJvYXJkIl0sWyJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwiZmlsdGVyLW1vZGFsIiwzLCJjbHJNb2RhbE9wZW5DaGFuZ2UiLCJjbHJNb2RhbE9wZW4iLCJjbHJNb2RhbFNpemUiLCJjbHJNb2RhbENsb3NhYmxlIl0sWzQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIs''@;'; put 'put ''ImJ0bi1zbSIsImJ0bi1saW5rIiwzLCJjbGljayJdLFsidHlwZSIsImJ1dHRvbiIsMSwiYnRuIiwiYnRuLW91dGxpbmUiLCJidG4tc20iLDMsImNsaWNrIl0sWyJ0eXBlIiwic3VibWl0IiwxLCJidG4iLCJidG4tc20iLCJidG4tc3VjY2Vzcy1vdXRsaW5lIiwzLCJjbGljayIsImNsckxvYWRp''@;'; put 'put ''bmciXSxbMywiY2xyTW9kYWxPcGVuQ2hhbmdlIiwiY2xyTW9kYWxPcGVuIl0sWzEsIm1vZGFsLXRpdGxlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tb3V0bGluZSIsMywiY2xpY2siXSxbInR5cGUiLCJidXR0b24iLDEsImJ0biIsImJ0bi1wcmltYXJ5IiwzLCJjbGljayJdLFsi''@;'; put 'put ''Y2xhc3MiLCJsb2FkaW5nU3Bpbm5lciIsNCwibmdJZiJdLFsiY2xhc3MiLCJjYXJkIG5vLWJvcmRlcnMgaC0xMDAgZC1mbGV4IGNsci1mbGV4LWNvbHVtbiIsNCwibmdJZiJdLFszLCJvcGVuQ2hhbmdlIiwicm93Q2xpY2tlZCIsIm9wZW4iLCJkc21ldGEiLCJ2ZXJzaW9ucyJdLFszLCJ2aWV3''@;'; put 'put ''Ym94TW9kYWxDaGFuZ2UiLCJ2aWV3Ym94TW9kYWwiXSxbMSwibXktMTAtbXgtYXV0byIsInRleHQtY2VudGVyIl0sWyJjbHJNZWRpdW0iLCIiXSxbMSwic2VhcmNoLW5vZGUiXSxbMSwidHJlZS1zZWFyY2gtd3JhcHBlciJdLFsiYXBwU3RlYWxGb2N1cyIsIiIsImNscklucHV0IiwiIiwicGxh''@;'; put 'put ''Y2Vob2xkZXIiLCJMaWJyYXJpZXMiLCJuYW1lIiwiaW5wdXQiLCJhdXRvY29tcGxldGUiLCJvZmYiLDMsIm5nTW9kZWxDaGFuZ2UiLCJrZXl1cCIsIm5nTW9kZWwiXSxbInNoYXBlIiwic2VhcmNoIiw0LCJuZ0lmIl0sWyJzaGFwZSIsInRpbWVzIiwzLCJjbGljayIsNCwibmdJZiJdLFsic2hh''@;'; put 'put ''cGUiLCJzZWFyY2giXSxbInNoYXBlIiwidGltZXMiLDMsImNsaWNrIl0sWzMsImNsckV4cGFuZGVkIiwiY2xyTG9hZGluZyIsImNsci1leHBhbmRlZCIsImNsaWNrIiwiY2xyRXhwYW5kZWRDaGFuZ2UiLDQsIm5nSWYiXSxbMywiY2xpY2siLCJjbHJFeHBhbmRlZENoYW5nZSIsImNsckV4cGFu''@;'; put 'put ''ZGVkIiwiY2xyTG9hZGluZyJdLFsxLCJtLTAiLCJjdXJzb3ItcG9pbnRlciIsMywiY2xpY2siXSxbInNoYXBlIiwicmFjay1zZXJ2ZXIiXSxbImFwcFN0ZWFsRm9jdXMiLCIiLCJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiVGFibGVzIiwibmFtZSIsImlucHV0IiwiYXV0b2NvbXBsZXRl''@;'; put 'put ''Iiwib2ZmIiwzLCJuZ01vZGVsQ2hhbmdlIiwia2V5dXAiLCJpZCIsIm5nTW9kZWwiXSxbNCwibmdWYXIiXSxbImNsclRvb2x0aXBUcmlnZ2VyIiwiIiwiY2xhc3MiLCJjbHItdHJlZW5vZGUtbGluayIsMywiZGMtbG9ja2VkLWNvbnRyb2wiLCJhY3RpdmUiLCJjbGljayIsNCwibmdJZiJdLFsi''@;'; put 'put ''Y2xyVG9vbHRpcFRyaWdnZXIiLCIiLDEsImNsci10cmVlbm9kZS1saW5rIiwzLCJjbGljayJdLFszLCJuZ1N3aXRjaCJdLFsic2hhcGUiLCJib2x0Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInNoYXBlIiwidGFibGUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic2hhcGUiLCJib2x0Il0sWyJzaGFwZSIs''@;'; put 'put ''InRhYmxlIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsImNsclNpemUiLCJsZyJdLFsxLCJ3LTEwMCIsInRleHQtY2VudGVyIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLXNt''@;'; put 'put ''Il0sWzEsIm1vZGFsIiwiei1pbmRleC1oaWdoZXN0Il0sWyJyb2xlIiwiZGlhbG9nIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtb2RhbC1kaWFsb2ciXSxbMSwibW9kYWwtY29udGVudCJdLFsxLCJtb2RhbC1oZWFkZXIiXSxbImFyaWEtbGFiZWwiLCJDbG9zZSIsInR5cGUiLCJidXR0b24i''@;'; put 'put ''LDEsImNsb3NlIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJzaGFwZSIsImNsb3NlIl0sWyJ0eXBlIiwiYnV0dG9uIiwxLCJidG4iLCJidG4tc20iLCJidG4tcHJpbWFyeSIsMywiY2xpY2siXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibW9kYWwtYmFja2Ryb3AiXSxbMSwibG9hZGluZ1Nw''@;'; put 'put ''aW5uZXIiXSxbMSwic3Bpbm5lciJdLFsxLCJtdC0xMCJdLFsiY2RzLXRleHQiLCJzZWN0aW9uIl0sWzEsImNhcmQiLCJuby1ib3JkZXJzIiwiaC0xMDAiLCJkLWZsZXgiLCJjbHItZmxleC1jb2x1bW4iXSxbImNsYXNzIiwiaGVhZGVyLXJvdyBjbHItcm93IGp1c3RpZnktY29udGVudC1iZXR3''@;'; put 'put ''ZWVuIGNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwIG0tMCIsNCwibmdJZiJdLFsiY2xhc3MiLCJuby10YWJsZS1zZWxlY3RlZCIsNCwibmdJZiJdLFsiY2xhc3MiLCJjYXJkLWJsb2NrIG5vRGF0YSIsNCwibmdJZiJdLFsiY2xhc3MiLCJjbHItZmxleC0xIiw0LCJuZ0lmIl0sWyJj''@;'; put 'put ''bGFzcyIsIm10LTItaSB3LTEwMCB0ZXh0LWNlbnRlciIsNCwibmdJZiJdLFsxLCJoZWFkZXItcm93IiwiY2xyLXJvdyIsImp1c3RpZnktY29udGVudC1iZXR3ZWVuIiwiY2xyLWp1c3RpZnktY29udGVudC1jZW50ZXIiLCJ3LTEwMCIsIm0tMCJdLFsxLCJmb3JtLWJsb2NrIiwidGFibGUtc2Vh''@;'; put 'put ''cmNoLXdyYXBwZXIiLCJzdyIsImNsci1jb2wtbWQiXSxbImNsckZvcm0iLCIiLDEsImQtZmxleCIsImFsaWduLWl0ZW1zLWNlbnRlciJdLFsxLCJpbnB1dC13cmFwcGVyIl0sWyJjbHJJbnB1dCIsIiIsInBsYWNlaG9sZGVyIiwiU2VhcmNoIiwibmFtZSIsInNlYXJjaC1pbnB1dCIsMywia2V5''@;'; put 'put ''dXAuZW50ZXIiLCJ0eXBlIl0sWyJzaGFwZSIsInNlYXJjaCIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwic3Bpbm5lciBzcGlubmVyLWlubGluZSIsNCwibmdJZiJdLFsidHlwZSIsImNoZWNrYm94IiwiY2xyQ2hlY2tib3giLCIiLCJuYW1lIiwibnVtZXJpY19jaGVjayIsMywibmdN''@;'; put 'put ''b2RlbENoYW5nZSIsIm5nTW9kZWwiXSxbMSwidGl0bGUtY29sIiwiY2xyLWNvbC1hdXRvIiwiY2xyLWZsZXgtY29sdW1uIiwiY2xyLWZsZXgtc20tcm93Il0sWyJjZHMtdGV4dCIsInNlY3Rpb24iLDEsImNsci1mbGV4LWNvbHVtbiIsImQtZmxleCIsImNsci1mbGV4LXNtLXJvdyIsImNsci1h''@;'; put 'put ''bGlnbi1pdGVtcy1jZW50ZXIiLCJjbHItanVzdGlmeS1jb250ZW50LWNlbnRlciJdLFsxLCJkLWZsZXgiLCJjbHItYWxpZ24taXRlbXMtY2VudGVyIl0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiIsInNoYXBlIiwiaW5mby1jaXJjbGUiLCJzaXplIiwiMjQiLDEsImlzLWhpZ2hsaWdodCIsImN1''@;'; put 'put ''cnNvci1wb2ludGVyIiwzLCJjbGljayJdLFsic2hhcGUiLCJib2x0IiwiY2xhc3MiLCJjb2xvci15ZWxsb3cgbXItNSIsNCwibmdJZiJdLFsiY2xyVG9vbHRpcFRyaWdnZXIiLCIiLDQsIm5nSWYiXSxbMSwib3B0aW9ucy1jb2wiLCJjbHItY29sLW1kIl0sWyJjbGFzcyIsIm9wdGlvbnMtZHJv''@;'; put 'put ''cGRvd24iLDMsImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNsci1jb2wtbWQtMTIgaW5mb0JhciIsNCwibmdJZiJdLFsic2hhcGUiLCJzZWFyY2giLDMsImNsaWNrIl0sWzEsInNwaW5uZXIiLCJzcGlubmVyLWlubGluZSJdLFsic2hhcGUiLCJib2x0Iiwx''@;'; put 'put ''LCJjb2xvci15ZWxsb3ciLCJtci01Il0sWyJjbHJUb29sdGlwVHJpZ2dlciIsIiJdLFsiY2xyUG9zaXRpb24iLCJib3R0b20tbGVmdCIsImNsclNpemUiLCJsZyIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1sZWZ0IiwiY2xyU2l6ZSIsImxnIl0sWyJzaGFwZSIsInJl''@;'; put 'put ''ZnJlc2giLDEsInJlZnJlc2gtdGFibGUiLDMsImNsaWNrIl0sWzEsIm9wdGlvbnMtZHJvcGRvd24iLDMsImNsckNsb3NlTWVudU9uSXRlbUNsaWNrIl0sWyJ0eXBlIiwiYnV0dG9uIiwiY2xyRHJvcGRvd25UcmlnZ2VyIiwiIiwxLCJidG4iLCJidG4tc20iLCJidG4tb3V0bGluZSIsImZpbHRl''@;'; put 'put ''clNpZGUiXSxbInNoYXBlIiwiY29nIiwic2l6ZSIsIjE1Il0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCIsNCwiY2xySWZPcGVuIl0sWyJjbHJQb3NpdGlvbiIsImJvdHRvbS1yaWdodCJdLFsiY2xyRHJvcGRvd25JdGVtIiwiIiwzLCJjbGljayJdLFsic2hhcGUiLCJ2aWV3LWNhcmRz''@;'; put 'put ''Il0sWyJjbHJEcm9wZG93bkl0ZW0iLCIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJzaGFwZSIsImZpbHRlciJdLFsic2hhcGUiLCJkb3dubG9hZCJdLFsic2hhcGUiLCJkb3dubG9hZC1jbG91ZCJdLFsic2hhcGUiLCJwZW5jaWwiXSxbInNoYXBlIiwic3dpdGNoIl0sWzEsImNsci1jb2wtbWQt''@;'; put 'put ''MTIiLCJpbmZvQmFyIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJzaXplIiwiNjAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbImNkcy10ZXh0Iiwic2VjdGlvbiIsMSwidGV4dC1jZW50ZXIiLCJjb2xvci1ncmF5IiwibXQtMTAi''@;'; put 'put ''XSxbMSwiaGVhZGVyLXJvdyIsImNsci1yb3ciLCJib3JkZXItYm90dG9tLWRpdmlkZXIiLCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiIsInctMTAwIiwibS0wIl0sWzEsInRpdGxlLWNvbCIsImNsci1jb2wtYXV0byIsIm10LTE1IiwibWItMTUiXSxbMSwidGV4dC1jZW50ZXIiLCJtdC0xMCJd''@;'; put 'put ''LFsiY2xyTWVkaXVtIiwiIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLXRhYmxlLXNlbGVjdGVkLWluZm8gcG9pbnRlci1ldmVudHMtbm9uZSIsNCwibmdJZiJdLFsiY2xhc3MiLCJsaWJpbmZvIG0tMCBjbHItcm93Iiw0LCJuZ0lmIl0sWzEsIm5vLXRhYmxlLXNlbGVjdGVkLWluZm8iLCJwb2lu''@;'; put 'put ''dGVyLWV2ZW50cy1ub25lIl0sWyJzaGFwZSIsImluZm8tc3RhbmRhcmQiLCJzaXplIiwiNDAiLDEsImlzLWluZm8iLCJpY29uLWRjLWZpbGwiXSxbMSwibGliaW5mbyIsIm0tMCIsImNsci1yb3ciXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgbS0wIHctMTAwIiw0LCJuZ0lmIl0sWzEsInRleHQt''@;'; put 'put ''Y2VudGVyIiwibS0wIiwidy0xMDAiXSxbInNoYXBlIiwicmVmcmVzaCIsMSwicmVmcmVzaC10YWJsZSIsIm0tMCIsMywiY2xpY2siXSxbMSwibS0wIl0sWzEsIm0tMCIsImZvbnQtYm9sZCJdLFsxLCJjYXJkLWJsb2NrIiwibm9EYXRhIl0sWyJzaGFwZSIsIndhcm5pbmctc3RhbmRhcmQiLCJz''@;'; put 'put ''aXplIiwiNjAiLDEsImlzLWluZm8iXSxbImNsYXNzIiwidGV4dC1jZW50ZXIgY29sb3ItZ3JheSIsNCwibmdJZiJdLFsxLCJ0ZXh0LWNlbnRlciIsImNvbG9yLWdyYXkiXSxbMSwiY2xyLWZsZXgtMSJdLFsiaG90SWQiLCJob3RJbnN0YW5jZSIsImlkIiwiaG90VGFibGUiLCJjbGFzc05hbWUi''@;'; put 'put ''LCJodERhcmsiLCJzdHJldGNoSCIsImFsbCIsMywibXVsdGlDb2x1bW5Tb3J0aW5nIiwidmlld3BvcnRSb3dSZW5kZXJpbmdPZmZzZXQiLCJkYXRhIiwiY29sSGVhZGVycyIsImNvbHVtbnMiLCJjb3B5UGFzdGUiLCJjb250ZXh0TWVudSIsImZpbHRlcnMiLCJkcm9wZG93bk1lbnUiLCJoZWln''@;'; put 'put ''aHQiLCJtb2RpZnlDb2xXaWR0aCIsImNlbGxzIiwibWF4Um93cyIsIm1hbnVhbENvbHVtblJlc2l6ZSIsImFmdGVyR2V0Q29sSGVhZGVyIiwicm93SGVhZGVycyIsInJvd0hlYWRlcldpZHRoIiwicm93SGVpZ2h0cyIsImxpY2Vuc2VLZXkiXSxbMSwibXQtMi1pIiwidy0xMDAiLCJ0ZXh0LWNl''@;'; put 'put ''bnRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbihkLGgpe2lmKDEmZCl7Y29uc3QgZj1TbigpO2dlKDAsImFwcC1zaWRlYmFyIiw1KSxJdCgic2Nyb2xsZWRUb0JvdHRvbSIsZnVuY3Rpb24oKXtyZXR1cm4gX3QoZiksYnQoaC5sb2FkTW9yZUxpYnJhcmllcygpKX0pLGd0KDEsbnd0LDIsMCwiZGl2''@;'; put 'put ''Iiw2KSxnZSgyLCJjbHItdHJlZSIpLGd0KDMsb3d0LDYsMywiY2xyLXRyZWUtbm9kZSIsNykoNCx2d3QsMiwxLCJuZy1jb250YWluZXIiLDgpLG1lKCksZ3QoNSxfd3QsMywwLCJkaXYiLDkpLG1lKCksZ2UoNiwiZGl2IiwxMCksZ3QoNyxid3QsMTQsMCwiZGl2IiwxMSkoOCx5d3QsMSwwLCJk''@;'; put 'put ''aXYiLDEyKSxnZSg5LCJjbHItbW9kYWwiLDEzKSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5vcGVuRG93bmxvYWQsUyl8fChoLm9wZW5Eb3dubG9hZD1TKSxidChTKX0pLGdlKDEwLCJoMyIsMTQpLFBlKDExLCJEb3dubG9hZCIpLG1lKCks''@;'; put 'put ''Z2UoMTIsImRpdiIsMTUpKDEzLCJkaXYiLDE2KSgxNCwiY2xyLXNlbGVjdC1jb250YWluZXIiLDE3KSgxNSwibGFiZWwiKSxQZSgxNiwiUGxlYXNlIGNob29zZSBkb3dubG9hZCBmb3JtYXQiKSxtZSgpLGdlKDE3LCJzZWxlY3QiLDE4KSxXcigibmdNb2RlbENoYW5nZSIsZnVuY3Rpb24oUyl7''@;'; put 'put ''cmV0dXJuIF90KGYpLEdyKGguZG93bmxvYWRGb3JtYXQsUyl8fChoLmRvd25sb2FkRm9ybWF0PVMpLGJ0KFMpfSksZ2UoMTgsIm9wdGlvbiIsMTkpLFBlKDE5LCJDU1YiKSxtZSgpLGdlKDIwLCJvcHRpb24iLDIwKSxQZSgyMSwiRGF0YWxpbmVzIChjYXJkcyBmaWxlKSIpLG1lKCksZ2UoMjIs''@;'; put 'put ''Im9wdGlvbiIsMjEpLFBlKDIzLCJEREwgKFBHU1FMIEZsYXZvdXIpIiksbWUoKSxnZSgyNCwib3B0aW9uIiwyMiksUGUoMjUsIkRETCAoU0FTIEZsYXZvdXIpIiksbWUoKSxnZSgyNiwib3B0aW9uIiwyMyksUGUoMjcsIkRETCAoVFNRTCBGbGF2b3VyKSIpLG1lKCksZ2UoMjgsIm9wdGlvbiIs''@;'; put 'put ''MjQpLFBlKDI5LCJFeGNlbCAoLnhsc3gpIiksbWUoKSxnZSgzMCwib3B0aW9uIiwyNSksUGUoMzEsIk1hcmtkb3duICgubWQpIiksbWUoKSgpKCkoKSgpLGdlKDMyLCJkaXYiLDI2KSgzMywiYnV0dG9uIiwyNyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLm9wZW5E''@;'; put 'put ''b3dubG9hZD0hMSl9KSxQZSgzNCwiIENhbmNlbCAiKSxtZSgpLGdlKDM1LCJidXR0b24iLDI4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGguZG93bmxvYWRGb3JtYXQuaW5jbHVkZXMoIkRETCIpP2guZG93bmxvYWREREwoKTpoLmRvd25sb2FkRGF0YSgpKX0pLFBl''@;'; put 'put ''KDM2LCIgT2sgIiksbWUoKSgpKCksZ2UoMzcsImNsci1tb2RhbCIsMTMpLFdyKCJjbHJNb2RhbE9wZW5DaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLndlYlF1ZXJ5LFMpfHwoaC53ZWJRdWVyeT1TKSxidChTKX0pLGdlKDM4LCJoMyIsMTQpLFBlKDM5LCIgV2ViIFF1ZXJ5''@;'; put 'put ''IFVSTCAiKSxtZSgpLGdlKDQwLCJkaXYiLDI5KSg0MSwiZGl2IiwzMCkoNDIsImRpdiIsMzEpKDQzLCJkaXYiLDMyKSg0NCwiZGl2IiwzMykoNDUsInNwYW4iKSxQZSg0NiwiQ29weSB0aGUgYmVsb3cgaW50byB5b3VyIHByZWZlcnJlZCBjbGllbnQgdG9vbDoiKSxtZSgpLGdlKDQ3LCJkaXYi''@;'; put 'put ''LDM0KSg0OCwiZGl2IiwzNSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLndlYlF1ZXJ5VGFiPSEwLGJ0KGguc2hvd1dlYlF1ZXJ5KCkpfSksWXQoNDksImlucHV0IiwzNiksZ2UoNTAsImxhYmVsIiksUGUoNTEsIlRBQiIpLG1lKCkoKSxnZSg1MiwiZGl2IiwzNSksSXQo''@;'; put 'put ''ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLndlYlF1ZXJ5VGFiPSExLGJ0KGguc2hvd1dlYlF1ZXJ5KCkpfSksWXQoNTMsImlucHV0IiwzNiksZ2UoNTQsImxhYmVsIiksUGUoNTUsIkNTViIpLG1lKCkoKSgpKCksZ2UoNTYsImRpdiIsMzcpKDU3LCJ0ZXh0YXJlYSIsMzgsMCks''@;'; put 'put ''SXQoImZvY3VzIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksYnQoaC5vbkNsaUNvbW1hbmRGb2N1cyhTKSl9KSxQZSg1OSwiICAgICAgICAgICAgICAiKSxtZSgpKCksZ2UoNjAsImRpdiIsMzkpKDYxLCJidXR0b24iLDQwKSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0''@;'; put 'put ''KGguY29weVRvQ2xpcCgpKX0pLFBlKDYyLCIgY29weSB0byBjbGlwYm9hcmQgIiksbWUoKSgpKCkoKSgpKCksZ2UoNjMsImRpdiIsMjYpKDY0LCJidXR0b24iLDI3KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgud2ViUXVlcnk9ITEpfSksUGUoNjUsIiBjbG9zZSAi''@;'; put 'put ''KSxtZSgpKCkoKSxnZSg2NiwiY2xyLW1vZGFsIiw0MSksV3IoImNsck1vZGFsT3BlbkNoYW5nZSIsZnVuY3Rpb24oUyl7cmV0dXJuIF90KGYpLEdyKGguZmlsdGVyLFMpfHwoaC5maWx0ZXI9UyksYnQoUyl9KSxnZSg2NywiaDMiLDE0KSxQZSg2OCwiIEZpbHRlciBmb3IgdGFibGU6IiksZ2Uo''@;'; put 'put ''NjksInNwYW4iKSxQZSg3MCksbWUoKSgpLGdlKDcxLCJkaXYiLDE1KSxndCg3Mix3d3QsMiwwLCJhcHAtcXVlcnkiLDQyKSxtZSgpLGdlKDczLCJkaXYiLDI2KSg3NCwiYnV0dG9uIiw0MyksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLnJlc2V0RmlsdGVyKCkpfSks''@;'; put 'put ''UGUoNzUsIiByZXNldCBmaWx0ZXIgIiksbWUoKSxnZSg3NiwiYnV0dG9uIiw0NCksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxoLmZpbHRlcj0hMSxidChoLnJlbW92ZVF1ZXJ5KCkpfSksUGUoNzcsIiBDYW5jZWwgIiksbWUoKSxnZSg3OCwiYnV0dG9uIiw0NSksSXQoImNs''@;'; put 'put ''aWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLnNlbmRDbGF1c2UoKSl9KSxQZSg3OSwiIE9rICIpLG1lKCkoKSgpLGdlKDgwLCJjbHItbW9kYWwiLDQ2KSxXcigiY2xyTW9kYWxPcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5xdWVyeUVycixTKXx8KGgu''@;'; put 'put ''cXVlcnlFcnI9UyksYnQoUyl9KSxnZSg4MSwiaDMiLDQ3KSxQZSg4MiwiRXJyb3IiKSxtZSgpLGdlKDgzLCJkaXYiLDE1KSg4NCwicCIpLFBlKDg1KSxtZSgpKCksZ2UoODYsImRpdiIsMjYpKDg3LCJidXR0b24iLDQ4KSxJdCgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIF90KGYpLGJ0KGgu''@;'; put 'put ''cXVlcnlFcnI9ITEpfSksUGUoODgsIiBDYW5jZWwgIiksbWUoKSxnZSg4OSwiYnV0dG9uIiw0OSksSXQoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBfdChmKSxidChoLnF1ZXJ5RXJyPSExKX0pLFBlKDkwLCIgT2sgIiksbWUoKSgpKCksZ3QoOTEsQ3d0LDYsMCwiZGl2Iiw1MCkoOTIsaUN0''@;'; put 'put ''LDgsNiwiZGl2Iiw1MSksbWUoKSxnZSg5MywiYXBwLWRhdGFzZXQtaW5mbyIsNTIpLFdyKCJvcGVuQ2hhbmdlIixmdW5jdGlvbihTKXtyZXR1cm4gX3QoZiksR3IoaC5kYXRhc2V0SW5mbyxTKXx8KGguZGF0YXNldEluZm89UyksYnQoUyl9KSxJdCgicm93Q2xpY2tlZCIsZnVuY3Rpb24oUyl7''@;'; put 'put ''cmV0dXJuIF90KGYpLGJ0KGguZGF0YXNldEluZm9Nb2RhbFJvd0NsaWNrZWQoUykpfSksbWUoKSxnZSg5NCwiYXBwLXZpZXdib3hlcyIsNTMpLFdyKCJ2aWV3Ym94TW9kYWxDaGFuZ2UiLGZ1bmN0aW9uKFMpe3JldHVybiBfdChmKSxHcihoLnZpZXdib3hPcGVuLFMpfHwoaC52aWV3Ym94T3Bl''@;'; put 'put ''bj1TKSxidChTKX0pLG1lKCl9aWYoMiZkKXtjb25zdCBmPUdpKDU4KTtfZSgpLFJlKCJuZ0lmIixoLmxpYnJhcmllc0xvYWRpbmcpLF9lKDIpLFJlKCJuZ0lmIixoLmxpYnJhcmllcyksX2UoKSxSZSgibmdGb3JPZiIsaC5saWJyYXJpZXMpLF9lKCksUmUoIm5nSWYiLGgubGlicmFyaWVzUGFn''@;'; put 'put ''aW5nKSxfZSgyKSxSZSgibmdJZiIsaC5udWxsVmFyaWFibGVzKSxfZSgpLFJlKCJuZ0lmIixoLm51bGxWYXJpYWJsZXMpLF9lKCksWXIoImNsck1vZGFsT3BlbiIsaC5vcGVuRG93bmxvYWQpLFJlKCJjbHJNb2RhbFNpemUiLCJtZCIpLF9lKDgpLFlyKCJuZ01vZGVsIixoLmRvd25sb2FkRm9y''@;'; put 'put ''bWF0KSxfZSgxOCksUmUoImlkIixoLnRhYmxlVGl0bGUpLF9lKDIpLFlyKCJjbHJNb2RhbE9wZW4iLGgud2ViUXVlcnkpLFJlKCJjbHJNb2RhbFNpemUiLCJsZyIpLF9lKDEyKSxSZSgiY2hlY2tlZCIsaC53ZWJRdWVyeVRhYiksX2UoNCksUmUoImNoZWNrZWQiLCFoLndlYlF1ZXJ5VGFiKSxf''@;'; put 'put ''ZSg0KSxSZSgidmFsdWUiLGgud2ViUXVlcnlUZXh0KSxfZSg0KSxSZSgibmd4Q2xpcGJvYXJkIixmKSxfZSg1KSxZcigiY2xyTW9kYWxPcGVuIixoLmZpbHRlciksUmUoImNsck1vZGFsU2l6ZSIsInhsIikoImNsck1vZGFsQ2xvc2FibGUiLCExKSxfZSg0KSxtcigiICIsaC5saWJUYWIsIiAi''@;'; put 'put ''KSxfZSgyKSxSZSgibmdJZiIsaC5maWx0ZXIpLF9lKDYpLFJlKCJjbHJMb2FkaW5nIixoLnN1Ym1pdExvYWRpbmcpLF9lKDIpLFlyKCJjbHJNb2RhbE9wZW4iLGgucXVlcnlFcnIpLF9lKDUpLGxyKGgucXVlcnlFcnJNZXNzYWdlKSxfZSg2KSxSZSgibmdJZiIsaC5sb2FkaW5nVGFibGVWaWV3''@;'; put 'put ''KSxfZSgpLFJlKCJuZ0lmIiwhaC5sb2FkaW5nVGFibGVWaWV3KSxfZSgpLFlyKCJvcGVuIixoLmRhdGFzZXRJbmZvKSxSZSgiZHNtZXRhIixoLmRzbWV0YSkoInZlcnNpb25zIixoLnZlcnNpb25zKSxfZSgpLFlyKCJ2aWV3Ym94TW9kYWwiLGgudmlld2JveE9wZW4pfX0sZGVwZW5kZW5jaWVz''@;'; put 'put ''OltjNGUsVnMsJGksd2gscDMsS3l0LHU4LEcyLCQyLHVsLFEwLFcyLF9hLGw4LHVhLE0zLEFkLEgxLHk0LFlhLFBjLGl1LGwwLGtoLERoLCRzLHR1ZSxhMSxQXyxzMSxFZCxaXyxVXyx3Uix3NCxJOCxSOCxKXyxGOCxIOCxOOCx4ZCxTYixzcCxoNGUsSFIsb0osaHksb3AscDRlLFF5dF0sc3R5''@;'; put 'put ''bGVzOlsiLmNhcmRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MDtmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn1jbHItdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFw''@;'; put 'put ''fS50b2dnbGUtc3dpdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W3R5cGU9Y2hlY2tib3hdW19uZ2NvbnRlbnQtJUNPTVAlXTpjaGVja2VkICsgbGFiZWxbX25nY29udGVudC0lQ09NUCVdOmJlZm9yZXtib3JkZXItY29sb3I6IzMxNDM1MTtiYWNrZ3JvdW5kLWNvbG9yOiMzMTQzNTEh''@;'; put 'put ''aW1wb3J0YW50O3RyYW5zaXRpb246LjE1cyBlYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6Ym9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3J9LmhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnRpdGxlLWNvbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlcn0uaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAub3B0aW9ucy1jb2xbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnN3W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MXJlbSAwcmVtIC41cmVtIDFy''@;'; put 'put ''ZW19LmluZm9CYXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MTBweDtiYWNrZ3JvdW5kOiM0OTU5Njc7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjNweDtmb250LXNpemU6MTZweH0uZmlsdGVyU2lkZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoy''@;'; put 'put ''NnB4O21hcmdpbi1ib3R0b206MTlweH0ub3B0aW9ucy1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV0gICAgIGNsci1pY29ue21hcmdpbi1yaWdodDo1cHh9LmRyb3Bkb3duLW1lbnVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE4MHB4O21hcmdpbi10b3A6LTE4cHg7cGFkZGluZzowfS5k''@;'; put 'put ''cm9wZG93bi1tZW51W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5idG5bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uY2FyZEZsZXhbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ub0RhdGFbX25n''@;'; put 'put ''Y29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxfS5maWx0ZXJCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1l''@;'; put 'put ''bmR9LmVkaXRCdG5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uYnRuVmlld1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAhaW1wb3J0YW50fS5jb250ZW50LWFyZWFbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVyZW0h''@;'; put 'put ''aW1wb3J0YW50O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRvd25sb2FkLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAgIC5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDp1bnNldCFpbXBvcnRhbnR9LnJlZnJlc2gtdGFibGVbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''e2N1cnNvcjpwb2ludGVyO21hcmdpbi1sZWZ0OjVweH0ubGliaW5mb1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxMHB4IDIwcHg7b3ZlcmZsb3c6YXV0b31ob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRib2R5IHRoLmh0X19oaWdobGlnaHQucHJp''@;'; put 'put ''bWFyeUtleUhlYWRlclN0eWxlLCBob3QtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgICAuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19oaWdobGlnaHQucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQtY29sb3I6IzMwNmIwMGIwIWltcG9ydGFudH1ob3QtdGFibGVbX25nY29u''@;'; put 'put ''dGVudC0lQ09NUCVdICAgICAucHJpbWFyeUtleUhlYWRlclN0eWxle2JhY2tncm91bmQtY29sb3I6IzMwNmIwMDZlIWltcG9ydGFudH0ubm8tdGFibGUtc2VsZWN0ZWQtaW5mb1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50''@;'; put 'put ''ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS53ZWItcXVlcnlbX25nY29udGVudC0lQ09NUCVde21heC1oZWlnaHQ6MzV2aH0ud2ViLXF1ZXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53ZWItcXVlcnktdGV4dFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDoxMDBweDttYXgtaGVpZ2h0''@;'; put 'put ''OjEwMHB4O3dpZHRoOjEwMCUhaW1wb3J0YW50fS53ZWItcXVlcnlbX25nY29udGVudC0lQ09NUCVdICAgLndlYi1xdWVyeS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmNsci1jb250cm9sLWNvbnRhaW5lcnt3aWR0aDoxMDAlfS53ZWItcXVlcnlbX25nY29udGVudC0lQ09NUCVd''@;'; put 'put ''ICAgLndlYi1xdWVyeS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgY2xyLXRleHRhcmVhLWNvbnRhaW5lcnttYXJnaW46MCFpbXBvcnRhbnR9LndlYi1xdWVyeVtfbmdjb250ZW50LSVDT01QJV0gICAud2ViLXF1ZXJ5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xy''@;'; put 'put ''LXRleHRhcmVhLXdyYXBwZXJ7bWFyZ2luOjAhaW1wb3J0YW50fS50YWJsZS1zZWFyY2gtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MH0udGFibGUtc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgZm9ybVtfbmdjb250ZW50LSVDT01QJV17cGFkZGlu''@;'; put 'put ''Zy1sZWZ0OjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNsci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjRweH0udGFibGUtc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICBjbHItaW5wdXQtY29udGFpbmVye21hcmdp''@;'; put 'put ''bi10b3A6MH0udGFibGUtc2VhcmNoLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgICAuY2xyLWNvbnRyb2wtY29udGFpbmVye21hcmdpbi1sZWZ0OjB9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpey5maWx0ZXJCdG5bX25nY29udGVudC0lQ09NUCVdLCAuZWRpdEJ0''@;'; put 'put ''bltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9fUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LnJvd1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjByZW07bWFyZ2luLWxlZnQ6MHJlbX19Il19KX19cmV0dXJuIGx9KSgpO2Nv''@;'; put 'put ''bnN0IG9DdD1be3BhdGg6IiIsY29tcG9uZW50OkJidCxjaGlsZHJlbjpbe3BhdGg6IiIscGF0aE1hdGNoOiJmdWxsIixyZWRpcmVjdFRvOiJkYXRhIn0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDpZRn0se3BhdGg6ImRhdGEiLGNvbXBvbmVudDpZRn0se3BhdGg6ImRhdGEvOmxpYk1lbS86Zmls''@;'; put 'put ''dGVySWQiLGNvbXBvbmVudDpZRn0se3BhdGg6ImRhdGEvOmxpYk1lbSIsY29tcG9uZW50OllGfSx7cGF0aDoibGluZWFnZSIsY29tcG9uZW50OlpGfSx7cGF0aDoibGluZWFnZS86dGFibGVpZC86ZGlyZWN0aW9uIixjb21wb25lbnQ6WkZ9LHtwYXRoOiJsaW5lYWdlL2NvbHVtbi86Y29sdXJp''@;'; put 'put ''LzpkaXJlY3Rpb24iLGNvbXBvbmVudDpaRn0se3BhdGg6ImxpbmVhZ2UvY29sdW1uLzpjb2x1cmkvOmRpcmVjdGlvbi86cmVsb2FkIixjb21wb25lbnQ6WkZ9LHtwYXRoOiJ2aXlhLWFwaS1leHBsb3JlciIsY29tcG9uZW50Okd5dH0se3BhdGg6Im1ldGFkYXRhIixjb21wb25lbnQ6Skp9LHtw''@;'; put 'put ''YXRoOiJtZXRhZGF0YS9vYmplY3QvOm9iamVjdElEIixjb21wb25lbnQ6Skp9LHtwYXRoOiJtZXRhZGF0YS9vYmplY3QvOm9iamVjdElELzpvYmplY3ROYW1lIixjb21wb25lbnQ6Skp9LHtwYXRoOiJ1c2VybmF2Iixjb21wb25lbnQ6VmJ0LGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6''@;'; put 'put ''ImZ1bGwiLHJlZGlyZWN0VG86Imdyb3VwcyJ9LHtwYXRoOiJ1c2VycyIsY29tcG9uZW50OnRtZX0se3BhdGg6InVzZXJzLzp1cmkiLGNvbXBvbmVudDp0bWV9LHtwYXRoOiJncm91cHMiLGNvbXBvbmVudDpMNGV9LHtwYXRoOiJncm91cHMvOnVyaSIsY29tcG9uZW50Okw0ZX0se3BhdGg6InJv''@;'; put 'put ''bGVzIixjb21wb25lbnQ6ZW1lfSx7cGF0aDoicm9sZXMvOnVyaSIsY29tcG9uZW50OmVtZX1dfV19XTtsZXQgc0N0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1vZD1laSh7dHlwZTps''@;'; put 'put ''fSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOltDYy5mb3JDaGlsZChvQ3QpLENjXX0pfX1yZXR1cm4gbH0pKCksYUN0PSgoKT0+e2NsYXNzIGx7c3RhdGlje3RoaXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKGQpe3JldHVybiBuZXcoZHx8bCl9fXN0YXRpY3t0aGlzLlx1MDI3NW1v''@;'; put 'put ''ZD1laSh7dHlwZTpsfSl9c3RhdGlje3RoaXMuXHUwMjc1aW5qPXNpKHtpbXBvcnRzOlttNGUsb28sc0N0LFh5dCxyYyxjMCxsNy5mb3JSb290KCksVjcsZHksWEUsYUoscjJdfSl9fXJldHVybiBsfSkoKTtjb25zdCBjQ3Q9Q2MuZm9yUm9vdChbe3BhdGg6IiIscmVkaXJlY3RUbzoiaG9tZSIs''@;'; put 'put ''cGF0aE1hdGNoOiJmdWxsIn0se3BhdGg6InZpZXciLGxvYWRDaGlsZHJlbjooKT0+YUN0fSx7cGF0aDoicmV2aWV3Iixjb21wb25lbnQ6djV0LGNoaWxkcmVuOlt7cGF0aDoiIixwYXRoTWF0Y2g6ImZ1bGwiLHJlZGlyZWN0VG86InRvYXBwcm92ZSJ9LHtwYXRoOiIiLGxvYWRDaGlsZHJlbjoo''@;'; put 'put ''KT0+bTV0fV19LHtwYXRoOiJsaWNlbnNpbmciLGxvYWRDaGlsZHJlbjooKT0+UGd0fSx7cGF0aDoiaG9tZSIsbG9hZENoaWxkcmVuOigpPT5LNHR9LHtwYXRoOiJlZGl0b3IiLGxvYWRDaGlsZHJlbjooKT0+QjN0fSx7cGF0aDoic3RhZ2UiLGxvYWRDaGlsZHJlbjooKT0+VDV0fSx7cGF0aDoi''@;'; put 'put ''c3lzdGVtIixsb2FkQ2hpbGRyZW46KCk9PkI1dH0se3BhdGg6ImRlcGxveSIsbG9hZENoaWxkcmVuOigpPT5DWmV9LHtwYXRoOiIqKiIsY29tcG9uZW50OkhVZX1dLHt1c2VIYXNoOiEwfSk7bGV0IHVDdD0oKCk9PntjbGFzcyBse3N0YXRpY3t0aGlzLlx1MDI3NWZhYz1mdW5jdGlvbihkKXty''@;'; put 'put ''ZXR1cm4gbmV3KGR8fGwpfX1zdGF0aWN7dGhpcy5cdTAyNzVtb2Q9ZWkoe3R5cGU6bCxib290c3RyYXA6WyRqZV19KX1zdGF0aWN7dGhpcy5cdTAyNzVpbmo9c2koe3Byb3ZpZGVyczpbUEksWmQsY0osU0ldLGltcG9ydHM6W05VZSxMcmUscmMsJEFlLFNTZSxjQ3QsZHksYzAsVjcsWEUscjIs''@;'; put 'put ''eHl0XX0pfX1yZXR1cm4gbH0pKCk7UXZlKCkuYm9vdHN0cmFwTW9kdWxlKHVDdCl9LDM3MzQ6KFFlLE1lLFIpPT57dmFyIG9lPVIoMjkyOTMpLmRlZmF1bHQ7c2VsZixRZS5leHBvcnRzPSgoKT0+e3ZhciB4PXsyNjU2OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYm''@;'; put 'put ''dGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFQpe3JldHVybiBUJiZULl9fZXNNb2R1bGU/VDp7ZGVmYXVsdDpUfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZGVjb2RlVG9rZW49Ty5oYXNUb2tlbkV4cGlyZWQ9Ty5pc1JlZnJlc2hU''@;'; put 'put ''b2tlbkV4cGlyaW5nPU8uaXNBY2Nlc3NUb2tlbkV4cGlyaW5nPXZvaWQgMDt2YXIgRz1qKEkoNjI0NSkpO2Z1bmN0aW9uIEQoVCxFKXtyZXR1cm4oMCxHLmRlZmF1bHQpKFQpLmV4cC0obmV3IERhdGUpLnZhbHVlT2YoKS8xZTM8PUV9Ty5pc0FjY2Vzc1Rva2VuRXhwaXJpbmc9ZnVuY3Rpb24o''@;'; put 'put ''VCxFKXtyZXR1cm4gdm9pZCAwPT09RSYmKEU9MzYwMCksIVR8fEQoVCxFKX0sTy5pc1JlZnJlc2hUb2tlbkV4cGlyaW5nPWZ1bmN0aW9uKFQsRSl7cmV0dXJuIHZvaWQgMD09PUUmJihFPTMwKSwhVHx8RChULEUpfSxPLmhhc1Rva2VuRXhwaXJlZD1mdW5jdGlvbihUKXtyZXR1cm4hVHx8RChU''@;'; put 'put ''LDApfSxPLmRlY29kZVRva2VuPWZ1bmN0aW9uKFQpe3ZhciBFO3RyeXtFPSgwLEcuZGVmYXVsdCkoVCl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRva2VuIHN1cHBsaWVkLiIpfXJldHVybiBFfX0sNjc5OTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMm''@;'; put 'put ''JnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihELFQsRSx6KXt2b2lkIDA9PT16JiYoej1FKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRCx6LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUW0VdfX0pfTpmdW5jdGlvbihELFQsRSx6KXt2''@;'; put 'put ''b2lkIDA9PT16JiYoej1FKSxEW3pdPVRbRV19KSxHPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihELFQpe2Zvcih2YXIgRSBpbiBEKSJkZWZhdWx0Ij09PUV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChULEUpfHxqKFQsRCxFKX07T2JqZWN0LmRlZmlu''@;'; put 'put ''ZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEcoSSgyNjU2KSxPKX0sMzI1OTpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgST10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBJPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGope2Zvcih2YXIg''@;'; put 'put ''RyxEPTEsVD1hcmd1bWVudHMubGVuZ3RoO0Q8VDtEKyspZm9yKHZhciBFIGluIEc9YXJndW1lbnRzW0RdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChHLEUpJiYoaltFXT1HW0VdKTtyZXR1cm4gan0sSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnByZWZpeE1lc3NhZ2U9dm9pZCAwLE8ucHJlZml4TWVzc2FnZT1mdW5jdGlvbihqLEcpe2lmKCJvYmplY3QiPT10eXBlb2YgailpZihqLmhhc093blByb3BlcnR5KCJtZXNzYWdlIikpai5tZXNzYWdlPUcrai5tZXNzYWdlO2Vs''@;'; put 'put ''c2V7aWYoIWouaGFzT3duUHJvcGVydHkoImJvZHkiKSlyZXR1cm4gSShJKHt9LGopLHttZXNzYWdlOkd9KTtpZigib2JqZWN0Ij09dHlwZW9mIGouYm9keSYmKGoubWVzc2FnZT1qLmJvZHkubWVzc2FnZT9HK2ouYm9keS5tZXNzYWdlOkcpLCJzdHJpbmciPT10eXBlb2Ygai5ib2R5KXt2YXIg''@;'; put 'put ''RD12b2lkIDA7dHJ5e0Q9SlNPTi5wYXJzZShqLmJvZHkpfWNhdGNoe3JldHVybiBqLm1lc3NhZ2U9RyxqfXJldHVybiBELm1lc3NhZ2U9RC5tZXNzYWdlP0crRC5tZXNzYWdlOkcsai5ib2R5PUQsan19cmV0dXJuInN0cmluZyI9PXR5cGVvZiBqJiYoaj1HK2opLGp9fSw5Nzc4OmZ1bmN0aW9u''@;'; put 'put ''KE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELHose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIFRbRV19fSl9OmZ1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLERbel09VFtFXX0pLEc9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEQsVCl7Zm9yKHZhciBFIGluIEQpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j''@;'; put 'put ''YWxsKFQsRSl8fGooVCxELEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksRyhJKDMyNTkpLE8pLEcoSSgxMDY0KSxPKX0sMTA2NDpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqLEc9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1''@;'; put 'put ''bmN0aW9uKE4sQil7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKFosWSl7Wi5fX3Byb3RvX189WX18fGZ1bmN0aW9uKFosWSl7Zm9yKHZhciBVIGluIFkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eS5jYWxsKFksVSkmJihaW1VdPVlbVV0pfSkoTixCKX0sZnVuY3Rpb24oTixCKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgQiYmbnVsbCE9PUIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhCKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwi''@;'; put 'put ''KTtmdW5jdGlvbiBaKCl7dGhpcy5jb25zdHJ1Y3Rvcj1OfWooTixCKSxOLnByb3RvdHlwZT1udWxsPT09Qj9PYmplY3QuY3JlYXRlKEIpOihaLnByb3RvdHlwZT1CLnByb3RvdHlwZSxuZXcgWil9KSxEPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihOLEIpe3ZhciBaPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJk5bU3ltYm9sLml0ZXJhdG9yXTtpZighWilyZXR1cm4gTjt2YXIgWSxVLHE9Wi5jYWxsKE4pLEo9W107dHJ5e2Zvcig7KHZvaWQgMD09PUJ8fEItLSA+MCkmJiEoWT1xLm5leHQoKSkuZG9uZTspSi5wdXNoKFkudmFsdWUpfWNhdGNoKGVlKXtVPXtlcnJvcjplZX19''@;'; put 'put ''ZmluYWxseXt0cnl7WSYmIVkuZG9uZSYmKFo9cS5yZXR1cm4pJiZaLmNhbGwocSl9ZmluYWxseXtpZihVKXRocm93IFUuZXJyb3J9fXJldHVybiBKfSxUPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oTixCLFope2lmKFp8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIg''@;'; put 'put ''WSxVPTAscT1CLmxlbmd0aDtVPHE7VSsrKSFZJiZVIGluIEJ8fChZfHwoWT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChCLDAsVSkpLFlbVV09QltVXSk7cmV0dXJuIE4uY29uY2F0KFl8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKEIpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8s''@;'; put 'put ''Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uU2VydmVyVHlwZUVycm9yPXZvaWQgMDt2YXIgRT1JKDM5MDApLHo9ZnVuY3Rpb24oTil7ZnVuY3Rpb24gQihaKXt2b2lkIDA9PT1aJiYoWj1bXSk7dmFyIFk9dGhpcyxVPShaPVQoW10sRChuZXcgU2V0KFopKSwhMSkpLmxlbmd0aD9aLmpvaW4o''@;'; put 'put ''IiwgIikudHJpbSgpOltFLlNlcnZlclR5cGUuU2FzVml5YSxFLlNlcnZlclR5cGUuU2FzOSxFLlNlcnZlclR5cGUuU2FzanNdLmpvaW4oIiwgIikudHJpbSgpO3JldHVybiBVPVUucmVwbGFjZSgvLFxzKFteLF0qKSQvLCIgYW5kICQxIiksKFk9Ti5jYWxsKHRoaXMsIkludmFsaWQgc2VydmVy''@;'; put 'put ''IHR5cGU6IHZhbGlkIG9wdGlvbiIuY29uY2F0KDEhPT1aLmxlbmd0aD8icyI6IiIsIiAiKS5jb25jYXQoMSE9PVoubGVuZ3RoPyJhcmUiOiJpcyIsIiAiKS5jb25jYXQoVSkpfHx0aGlzKS5uYW1lPSJTZXJ2ZXJUeXBlRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZihZLEIucHJvdG90eXBl''@;'; put 'put ''KSxZfXJldHVybiBHKEIsTiksQn0oRXJyb3IpO08uU2VydmVyVHlwZUVycm9yPXp9LDM5MDY6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oWixZLFUscSl7cmV0dXJuIG5ldyhVfHwoVT1Qcm9taXNlKSkoZnVuY3Rpb24o''@;'; put 'put ''SixlZSl7ZnVuY3Rpb24gcmUobGUpe3RyeXt1ZShxLm5leHQobGUpKX1jYXRjaChhZSl7ZWUoYWUpfX1mdW5jdGlvbiBpZShsZSl7dHJ5e3VlKHEudGhyb3cobGUpKX1jYXRjaChhZSl7ZWUoYWUpfX1mdW5jdGlvbiB1ZShsZSl7dmFyIGFlO2xlLmRvbmU/SihsZS52YWx1ZSk6KGFlPWxlLnZh''@;'; put 'put ''bHVlLGFlIGluc3RhbmNlb2YgVT9hZTpuZXcgVShmdW5jdGlvbihXKXtXKGFlKX0pKS50aGVuKHJlLGllKX11ZSgocT1xLmFwcGx5KFosWXx8W10pKS5uZXh0KCkpfSl9LEc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oWixZKXt2YXIgVSxxLEosZWUscmU9e2xhYmVsOjAsc2Vu''@;'; put 'put ''dDpmdW5jdGlvbigpe2lmKDEmSlswXSl0aHJvdyBKWzFdO3JldHVybiBKWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGVlPXtuZXh0OmllKDApLHRocm93OmllKDEpLHJldHVybjppZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGVlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpc30pLGVlO2Z1bmN0aW9uIGllKHVlKXtyZXR1cm4gZnVuY3Rpb24obGUpe3JldHVybiBmdW5jdGlvbihhZSl7aWYoVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyZTspdHJ5e2lmKFU9MSxxJiYoSj0y''@;'; put 'put ''JmFlWzBdP3EucmV0dXJuOmFlWzBdP3EudGhyb3d8fCgoSj1xLnJldHVybikmJkouY2FsbChxKSwwKTpxLm5leHQpJiYhKEo9Si5jYWxsKHEsYWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChxPTAsSiYmKGFlPVsyJmFlWzBdLEoudmFsdWVdKSxhZVswXSl7Y2FzZSAwOmNhc2UgMTpKPWFl''@;'; put 'put ''O2JyZWFrO2Nhc2UgNDpyZXR1cm4gcmUubGFiZWwrKyx7dmFsdWU6YWVbMV0sZG9uZTohMX07Y2FzZSA1OnJlLmxhYmVsKysscT1hZVsxXSxhZT1bMF07Y29udGludWU7Y2FzZSA3OmFlPXJlLm9wcy5wb3AoKSxyZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1yZS50''@;'; put 'put ''cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1hZVswXSYmMiE9PWFlWzBdKSl7cmU9MDtjb250aW51ZX1pZigzPT09YWVbMF0mJighSnx8YWVbMV0+SlswXSYmYWVbMV08SlszXSkpe3JlLmxhYmVsPWFlWzFdO2JyZWFrfWlmKDY9PT1hZVswXSYmcmUubGFiZWw8SlsxXSl7cmUu''@;'; put 'put ''bGFiZWw9SlsxXSxKPWFlO2JyZWFrfWlmKEomJnJlLmxhYmVsPEpbMl0pe3JlLmxhYmVsPUpbMl0scmUub3BzLnB1c2goYWUpO2JyZWFrfUpbMl0mJnJlLm9wcy5wb3AoKSxyZS50cnlzLnBvcCgpO2NvbnRpbnVlfWFlPVkuY2FsbChaLHJlKX1jYXRjaChXKXthZT1bNixXXSxxPTB9ZmluYWxs''@;'; put 'put ''eXtVPUo9MH1pZig1JmFlWzBdKXRocm93IGFlWzFdO3JldHVybnt2YWx1ZTphZVswXT9hZVsxXTp2b2lkIDAsZG9uZTohMH19KFt1ZSxsZV0pfX19LEQ9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKFosWSl7dmFyIFU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmWltTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3JdO2lmKCFVKXJldHVybiBaO3ZhciBxLEosZWU9VS5jYWxsKFopLHJlPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1ZfHxZLS0gPjApJiYhKHE9ZWUubmV4dCgpKS5kb25lOylyZS5wdXNoKHEudmFsdWUpfWNhdGNoKGllKXtKPXtlcnJvcjppZX19ZmluYWxseXt0cnl7cSYmIXEuZG9uZSYm''@;'; put 'put ''KFU9ZWUucmV0dXJuKSYmVS5jYWxsKGVlKX1maW5hbGx5e2lmKEopdGhyb3cgSi5lcnJvcn19cmV0dXJuIHJlfSxUPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oWixZLFUpe2lmKFV8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcSxKPTAsZWU9WS5sZW5ndGg7Sjxl''@;'; put 'put ''ZTtKKyspIXEmJkogaW4gWXx8KHF8fChxPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFksMCxKKSkscVtKXT1ZW0pdKTtyZXR1cm4gWi5jb25jYXQocXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoWSkpfSxFPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihaKXty''@;'; put 'put ''ZXR1cm4gWiYmWi5fX2VzTW9kdWxlP1o6e2RlZmF1bHQ6Wn19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnVwZGF0ZUNzdj1PLmNyZWF0ZUNzdj1PLnJlYWRDc3Y9dm9pZCAwO3ZhciB6PUkoMTU1OSksTj1FKEkoNzU2NSkpO08ucmVhZENzdj1m''@;'; put 'put ''dW5jdGlvbihaKXtyZXR1cm4gaih2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBHKHRoaXMsZnVuY3Rpb24oWSl7c3dpdGNoKFkubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCx6LnJlYWRGaWxlKShaKV07Y2FzZSAxOnJldHVyblsyLFkuc2VudCgpLnNwbGl0KCJcbiIp''@;'; put 'put ''LmZpbHRlcihmdW5jdGlvbihVKXtyZXR1cm4gVS5sZW5ndGh9KS5tYXAoZnVuY3Rpb24oVSl7cmV0dXJuIFUuc3BsaXQoIiwiKX0pXX19KX0pfSxPLmNyZWF0ZUNzdj1mdW5jdGlvbihaLFksVSl7cmV0dXJuIGoodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcTtyZXR1cm4g''@;'; put 'put ''Ryh0aGlzLGZ1bmN0aW9uKEope3N3aXRjaChKLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHE9KDAsTi5kZWZhdWx0KShZLHtoZWFkZXI6MT09PVkubGVuZ3RoLGNvbHVtbnM6VX0pLFs0LCgwLHouY3JlYXRlRmlsZSkoWixxKV07Y2FzZSAxOnJldHVybiBKLnNlbnQoKSxbMl19fSl9KX0sTy51cGRh''@;'; put 'put ''dGVDc3Y9ZnVuY3Rpb24oWixZLFUscSl7cmV0dXJuIGoodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSixlZSxyZTtyZXR1cm4gRyh0aGlzLGZ1bmN0aW9uKGllKXtzd2l0Y2goaWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxCKFosWSxVLHEpXTtjYXNlIDE6cmV0dXJuIEo9''@;'; put 'put ''aWUuc2VudCgpLHEmJihlZT0wPT09Si5sZW5ndGg/MTpKLmxlbmd0aCwocmU9VS5maW5kSW5kZXgoZnVuY3Rpb24odWUpe3JldHVybiB1ZT09PXF9KSk+LTE/WS5zcGxpY2UocmUsMCxlZSk6KFUuc3BsaWNlKDAsMCxxKSxZLnNwbGljZSgwLDAsZWUpKSksSi5wdXNoKFkpLFs0LCgwLE8uY3Jl''@;'; put 'put ''YXRlQ3N2KShaLEosVSldO2Nhc2UgMjpyZXR1cm4gaWUuc2VudCgpLFsyXX19KX0pfTt2YXIgQj1mdW5jdGlvbihaLFksVSxxKXtyZXR1cm4gaih2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBKLGVlLHJlLGllO3JldHVybiBHKHRoaXMsZnVuY3Rpb24odWUpe3N3aXRjaCh1''@;'; put 'put ''ZS5sYWJlbCl7Y2FzZSAwOmlmKFkubGVuZ3RoIT09VS5sZW5ndGgpe2lmKFkubGVuZ3RoPlUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5vdCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQgY29sdW1ucyIpO2lmKCFxfHxZLmxlbmd0aCsxIT09VS5sZW5ndGgp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJhIHJlY29yZCBjYW4gbm90IGhhdmUgbGVzcyBmaWVsZHMgdGhhbiBwcm92aWRlZCBjb2x1bW5zIil9ZWxzZSBpZihxJiZVLmluY2x1ZGVzKHEpKXRocm93IG5ldyBFcnJvcigiYSByZWNvcmQgY2FuIG5vdCBoYXZlIG1vcmUgZmllbGRzIHRoYW4gcHJvdmlkZWQg''@;'; put 'put ''Y29sdW1ucyIpO3JldHVybls0LCgwLE8ucmVhZENzdikoWikuY2F0Y2goZnVuY3Rpb24obGUpe3JldHVybltdfSldO2Nhc2UgMTppZihKPXVlLnNlbnQoKSxlZT1KWzBdKXtpZihVLmxlbmd0aD5lZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJudW1iZXIgb2YgcHJvdmlkZWQgY29sdW1ucyBh''@;'; put 'put ''cmUgZ3JlYXRlciB0aGFuIG51bWJlciBvZiBleGlzdGluZyBjb2x1bW5zIik7aWYoVS5sZW5ndGg8ZWUubGVuZ3RoKXtpZighcXx8VS5sZW5ndGgrMSE9PWVlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm51bWJlciBvZiBwcm92aWRlZCBjb2x1bW5zIGFyZSBsZXNzIHRoYW4gbnVtYmVyIG9m''@;'; put 'put ''IGV4aXN0aW5nIGNvbHVtbnMiKTtpZihyZT1lZS5maW5kSW5kZXgoZnVuY3Rpb24obGUpe3JldHVybiBsZT09PXF9KSxpZT1UKFtdLEQoVSksITEpLCEocmU+LTEpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYo''@;'; put 'put ''aWUuc3BsaWNlKHJlLDAscSksSlNPTi5zdHJpbmdpZnkoVSkhPT1KU09OLnN0cmluZ2lmeShpZSkpdGhyb3cgbmV3IEVycm9yKCJwcm92aWRlZCBjb2x1bW5zIGRvZXMgbm90IG1hdGNoIGV4aXN0aW5nIGNvbHVtbnMiKX1lbHNle2lmKEpTT04uc3RyaW5naWZ5KFUpIT09SlNPTi5zdHJpbmdp''@;'; put 'put ''ZnkoZWUpKXRocm93IG5ldyBFcnJvcigicHJvdmlkZWQgY29sdW1ucyBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBjb2x1bW5zIik7aWYocSYmIVUuaW5jbHVkZXMocSkpdGhyb3cgbmV3IEVycm9yKCJjYW4gbm90IGFkZCBuZXcgaWQgdG8gZXhpc3RpbmcgZGF0YSIpfX1yZXR1cm5bMixKXX19''@;'; put 'put ''KX0pfX0sMTU1OTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihXLGIsQSxGKXt2b2lkIDA9PT1GJiYoRj1BKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVyxGLHtlbnVtZXJhYmxlOiEw''@;'; put 'put ''LGdldDpmdW5jdGlvbigpe3JldHVybiBiW0FdfX0pfTpmdW5jdGlvbihXLGIsQSxGKXt2b2lkIDA9PT1GJiYoRj1BKSxXW0ZdPWJbQV19KSxHPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihXLGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShX''@;'; put 'put ''LCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTpifSl9OmZ1bmN0aW9uKFcsYil7Vy5kZWZhdWx0PWJ9KSxEPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihXKXtpZihXJiZXLl9fZXNNb2R1bGUpcmV0dXJuIFc7dmFyIGI9e307aWYobnVsbCE9Vylmb3IodmFyIEEgaW4g''@;'; put 'put ''VykiZGVmYXVsdCIhPT1BJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVyxBKSYmaihiLFcsQSk7cmV0dXJuIEcoYixXKSxifSxUPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihXLGIsQSxGKXtyZXR1cm4gbmV3KEF8fChBPVByb21pc2UpKShmdW5jdGlvbihI''@;'; put 'put ''LGcpe2Z1bmN0aW9uIEMocCl7dHJ5e18oRi5uZXh0KHApKX1jYXRjaCh3KXtnKHcpfX1mdW5jdGlvbiBrKHApe3RyeXtfKEYudGhyb3cocCkpfWNhdGNoKHcpe2codyl9fWZ1bmN0aW9uIF8ocCl7dmFyIHc7cC5kb25lP0gocC52YWx1ZSk6KHc9cC52YWx1ZSx3IGluc3RhbmNlb2YgQT93Om5l''@;'; put 'put ''dyBBKGZ1bmN0aW9uKEspe0sodyl9KSkudGhlbihDLGspfV8oKEY9Ri5hcHBseShXLGJ8fFtdKSkubmV4dCgpKX0pfSxFPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFcsYil7dmFyIEEsRixILGcsQz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZIWzBdKXRocm93IEhb''@;'; put 'put ''MV07cmV0dXJuIEhbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZz17bmV4dDprKDApLHRocm93OmsoMSkscmV0dXJuOmsoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gayhfKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIGZ1bmN0aW9uKHcpe2lmKEEpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7QzspdHJ5e2lmKEE9MSxGJiYoSD0yJndbMF0/Ri5yZXR1cm46d1swXT9GLnRocm93fHwoKEg9Ri5yZXR1cm4p''@;'; put 'put ''JiZILmNhbGwoRiksMCk6Ri5uZXh0KSYmIShIPUguY2FsbChGLHdbMV0pKS5kb25lKXJldHVybiBIO3N3aXRjaChGPTAsSCYmKHc9WzImd1swXSxILnZhbHVlXSksd1swXSl7Y2FzZSAwOmNhc2UgMTpIPXc7YnJlYWs7Y2FzZSA0OnJldHVybiBDLmxhYmVsKysse3ZhbHVlOndbMV0sZG9uZToh''@;'; put 'put ''MX07Y2FzZSA1OkMubGFiZWwrKyxGPXdbMV0sdz1bMF07Y29udGludWU7Y2FzZSA3Onc9Qy5vcHMucG9wKCksQy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSD0oSD1DLnRyeXMpLmxlbmd0aD4wJiZIW0gubGVuZ3RoLTFdKXx8NiE9PXdbMF0mJjIhPT13WzBdKSl7Qz0wO2Nv''@;'; put 'put ''bnRpbnVlfWlmKDM9PT13WzBdJiYoIUh8fHdbMV0+SFswXSYmd1sxXTxIWzNdKSl7Qy5sYWJlbD13WzFdO2JyZWFrfWlmKDY9PT13WzBdJiZDLmxhYmVsPEhbMV0pe0MubGFiZWw9SFsxXSxIPXc7YnJlYWt9aWYoSCYmQy5sYWJlbDxIWzJdKXtDLmxhYmVsPUhbMl0sQy5vcHMucHVzaCh3KTti''@;'; put 'put ''cmVha31IWzJdJiZDLm9wcy5wb3AoKSxDLnRyeXMucG9wKCk7Y29udGludWV9dz1iLmNhbGwoVyxDKX1jYXRjaChLKXt3PVs2LEtdLEY9MH1maW5hbGx5e0E9SD0wfWlmKDUmd1swXSl0aHJvdyB3WzFdO3JldHVybnt2YWx1ZTp3WzBdP3dbMV06dm9pZCAwLGRvbmU6ITB9fShbXyxwXSl9fX0s''@;'; put 'put ''ej10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oVyxiKXt2YXIgQT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZXW1N5bWJvbC5pdGVyYXRvcl07aWYoIUEpcmV0dXJuIFc7dmFyIEYsSCxnPUEuY2FsbChXKSxDPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1ifHxiLS0gPjApJiYhKEY9Zy5u''@;'; put 'put ''ZXh0KCkpLmRvbmU7KUMucHVzaChGLnZhbHVlKX1jYXRjaChrKXtIPXtlcnJvcjprfX1maW5hbGx5e3RyeXtGJiYhRi5kb25lJiYoQT1nLnJldHVybikmJkEuY2FsbChnKX1maW5hbGx5e2lmKEgpdGhyb3cgSC5lcnJvcn19cmV0dXJuIEN9LE49dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxm''@;'; put 'put ''dW5jdGlvbihXLGIsQSl7aWYoQXx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBGLEg9MCxnPWIubGVuZ3RoO0g8ZztIKyspIUYmJkggaW4gYnx8KEZ8fChGPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGIsMCxIKSksRltIXT1iW0hdKTtyZXR1cm4gVy5jb25jYXQoRnx8QXJyYXku''@;'; put 'put ''cHJvdG90eXBlLnNsaWNlLmNhbGwoYikpfSxCPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihXKXtyZXR1cm4gVyYmVy5fX2VzTW9kdWxlP1c6e2RlZmF1bHQ6V319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmlzVGVzdEZp''@;'; put 'put ''bGU9Ty50ZXN0RmlsZVJlZ0V4cD1PLmNyZWF0ZVJlYWRTdHJlYW09Ty5jcmVhdGVXcml0ZVN0cmVhbT1PLmdldFJlYWxQYXRoPU8uYmFzZTY0RW5jb2RlRmlsZT1PLmJhc2U2NEVuY29kZUltYWdlRmlsZT1PLnBhdGhTZXBFc2NhcGVkPU8uY29weT1PLm1vdmVGaWxlPU8uZ2V0UmVsYXRpdmVQ''@;'; put 'put ''YXRoPU8udW5pZnlGaWxlUGF0aD1PLmRlbGV0ZUZvbGRlcj1PLmRlbGV0ZUZpbGU9Ty5jcmVhdGVGaWxlPU8uY3JlYXRlRm9sZGVyPU8ubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyPU8ubGlzdFN1YkZvbGRlcnNJbkZvbGRlcj1PLmxpc3RTYXNGaWxlc0luRm9sZGVyPU8ubGlzdElu''@;'; put 'put ''aUZpbGVzSW5Gb2xkZXI9Ty5saXN0RmlsZXNJbkZvbGRlcj1PLnJlYWRGaWxlQmluYXJ5PU8ucmVhZEZpbGU9Ty5pc0ZvbGRlcj1PLmZvbGRlckV4aXN0cz1PLmZpbGVFeGlzdHM9dm9pZCAwO3ZhciBaPUIoSSg1Njc0KSksWT1CKEkoOTg0KSksVT1CKEkoMjUyMCkpLHE9SSg2MjY2KSxKPUQo''@;'; put 'put ''SSgyOTc1KSk7ZnVuY3Rpb24gZWUoVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixaLmRlZmF1bHQucHJvbWlzZXMuYWNjZXNzKFcsWi5kZWZhdWx0LmNvbnN0YW50cy5GX09LKS50aGVuKGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuITB9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSldfSl9KX1mdW5jdGlvbiByZShXKXtyZXR1cm4gVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVyblsyLFouZGVmYXVsdC5wcm9taXNlcy5yZWFkRmlsZShX''@;'; put 'put ''KV19KX0pfWZ1bmN0aW9uIGllKFcpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoVyx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oQSl7cmV0''@;'; put 'put ''dXJuIEEuZmlsdGVyKGZ1bmN0aW9uKEYpe3JldHVybiFGLmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIEYubmFtZX0pfSldfSl9KX1mdW5jdGlvbiB1ZShXLGIsQSl7cmV0dXJuIHZvaWQgMD09PWImJihiPSEwKSx2b2lkIDA9PT1BJiYoQT1bXSksVCh0aGlzLHZvaWQg''@;'; put 'put ''MCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRj10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oSCl7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoVyx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oZyl7cmV0dXJuIFQoRix2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIEMsaz10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oXyl7c3dpdGNoKF8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYiYmZy5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIHAuaXNEaXJlY3RvcnkoKX0pLmxlbmd0aD8oQz1bXSxbNCwoMCxxLmFzeW5jRm9yRWFjaCkoZy5maWx0ZXIo''@;'; put 'put ''ZnVuY3Rpb24ocCl7cmV0dXJuIHAuaXNEaXJlY3RvcnkoKX0pLGZ1bmN0aW9uKHApe3JldHVybiBUKGssdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB3LEssdGU7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihjZSl7c3dpdGNoKGNlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEEuaW5jbHVkZXMo''@;'; put 'put ''dz1wLm5hbWUpP1szLDJdOihLPVUuZGVmYXVsdC5qb2luKFcsdyksdGU9W04oW10seihDKSwhMSldLFs0LHVlKEssYixBKV0pO2Nhc2UgMTpDPU4uYXBwbHkodm9pZCAwLHRlLmNvbmNhdChbei5hcHBseSh2b2lkIDAsW2NlLnNlbnQoKS5tYXAoZnVuY3Rpb24oaGUpe3JldHVybiBVLmRlZmF1''@;'; put 'put ''bHQuam9pbih3LGhlKX0pXSksITFdKSksY2UubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzJdfX0pfSl9KV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gXy5zZW50KCksWzIsTihOKFtdLHooZy5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIXAuaXNEaXJlY3RvcnkoKX0pLm1hcChmdW5jdGlvbihwKXty''@;'; put 'put ''ZXR1cm4gcC5uYW1lfSkpLCExKSx6KEMpLCExKV07Y2FzZSAyOnJldHVyblsyLGcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLm5hbWV9KV19fSl9KX0pXX0pfSl9ZnVuY3Rpb24gbGUoVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm5bMixaLmRlZmF1bHQucHJvbWlzZXMubWtkaXIoVyx7cmVjdXJzaXZlOiEwfSldfSl9KX1mdW5jdGlvbiBhZShXLGIsQSl7dm9pZCAwPT09YiYmKGI9VS5kZWZhdWx0LnNlcCksdm9pZCAwPT09QSYmKEE9Ii8iKTt2YXIgRj17dW5peDoiLyIsd2luOiJcXCJ9LEg9T2Jq''@;'; put 'put ''ZWN0LmtleXMoRikuZmluZChmdW5jdGlvbihDKXtyZXR1cm4gRltDXT09PWJ9KTtpZihIKXt2YXIgZz1GW09iamVjdC5rZXlzKEYpLmZpbmQoZnVuY3Rpb24oQyl7cmV0dXJuIEMhPT1IfSldO3JldHVybiBIPUZbSF0sVy5zcGxpdChnKS5qb2luKEgpfXJldHVybiBXLnNwbGl0KEEpLmpvaW4o''@;'; put 'put ''Yil9Ty5maWxlRXhpc3RzPWZ1bmN0aW9uKFcpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2VzLmFjY2VzcyhXLFouZGVmYXVsdC5jb25zdGFudHMuRl9PSykudGhlbihmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9LE8uZm9sZGVyRXhpc3RzPWVlLE8uaXNGb2xkZXI9ZnVuY3Rpb24oVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5b''@;'; put 'put ''MixaLmRlZmF1bHQucHJvbWlzZXMubHN0YXQoVykudGhlbihmdW5jdGlvbihBKXtyZXR1cm4gQS5pc0RpcmVjdG9yeSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pXX0pfSl9LE8ucmVhZEZpbGU9ZnVuY3Rpb24oVyxiKXtyZXR1cm4gdm9pZCAwPT09YiYmKGI9InV0ZjgiKSxUKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oQSl7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2VzLnJlYWRGaWxlKFcsYildfSl9KX0sTy5yZWFkRmlsZUJpbmFyeT1yZSxPLmxpc3RGaWxlc0luRm9sZGVyPWllLE8ubGlzdEluaUZpbGVzSW5Gb2xk''@;'; put 'put ''ZXI9ZnVuY3Rpb24oVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGllKFcpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCkuZmlsdGVyKGZ1bmN0aW9uKEEpe3Jl''@;'; put 'put ''dHVybiBBLmVuZHNXaXRoKCIuaW5pIil9KV19fSl9KX0sTy5saXN0U2FzRmlsZXNJbkZvbGRlcj1mdW5jdGlvbihXLGIsQSl7cmV0dXJuIHZvaWQgMD09PWImJihiPSExKSx2b2lkIDA9PT1BJiYoQT1bXSksVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1''@;'; put 'put ''bmN0aW9uKEgpe3N3aXRjaChILmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdWUoVyxiLEEpXTtjYXNlIDE6cmV0dXJuWzIsSC5zZW50KCkuZmlsdGVyKGZ1bmN0aW9uKGcpe3JldHVybiBnLmVuZHNXaXRoKCIuc2FzIil9KV19fSl9KX0sTy5saXN0U3ViRm9sZGVyc0luRm9sZGVyPWZ1bmN0aW9u''@;'; put 'put ''KFcpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2VzLnJlYWRkaXIoVyx7d2l0aEZpbGVUeXBlczohMH0pLnRoZW4oZnVuY3Rpb24oQSl7cmV0dXJuIEEuZmlsdGVyKGZ1bmN0''@;'; put 'put ''aW9uKEYpe3JldHVybiBGLmlzRGlyZWN0b3J5KCl9KS5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIEYubmFtZX0pfSldfSl9KX0sTy5saXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXI9dWUsTy5jcmVhdGVGb2xkZXI9bGUsTy5jcmVhdGVGaWxlPWZ1bmN0aW9uKFcsYixBKXtyZXR1cm4gVCh0''@;'; put 'put ''aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRixIO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDpyZXR1cm4oVz1hZShXKSkuc3BsaXQoVS5kZWZhdWx0LnNlcCkubGVuZ3RoPjE/KChGPVcuc3BsaXQoVS5kZWZhdWx0LnNlcCkpLnBvcCgp''@;'; put 'put ''LFs0LGVlKEg9Ri5qb2luKFUuZGVmYXVsdC5zZXApKV0pOlszLDNdO2Nhc2UgMTpyZXR1cm4gZy5zZW50KCk/WzMsM106WzQsbGUoSCldO2Nhc2UgMjpnLnNlbnQoKSxnLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyLFouZGVmYXVsdC5wcm9taXNlcy53cml0ZUZpbGUoVyxiLEEpXX19KX0pfSxP''@;'; put 'put ''LmRlbGV0ZUZpbGU9ZnVuY3Rpb24oVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixaLmRlZmF1bHQucmVtb3ZlKFcpXX0pfSl9LE8uZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKFcpe3JldHVybiBUKHRoaXMs''@;'; put 'put ''dm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oQSxGKXsoMCxZLmRlZmF1bHQpKFcse30sZnVuY3Rpb24oSCl7cmV0dXJuIEg/RihIKTpBKCl9KX0pXX0pfSl9LE8udW5pZnlGaWxlUGF0aD1hZSxP''@;'; put 'put ''LmdldFJlbGF0aXZlUGF0aD1mdW5jdGlvbihXLGIpe3ZhciBBPVcuc3BsaXQoVS5kZWZhdWx0LnNlcCksRj1iLnNwbGl0KFUuZGVmYXVsdC5zZXApLEg9W10sZz1bXTtBLmZvckVhY2goZnVuY3Rpb24ocCx3KXt2b2lkIDAhPT1GW3ddJiZBW3ddPT09Rlt3XT9ILnB1c2gocCk6cCYmZy5wdXNo''@;'; put 'put ''KHApfSk7dmFyIEM9SC5qb2luKFUuZGVmYXVsdC5zZXApLGs9bmV3IFJlZ0V4cCgiXiIuY29uY2F0KFUuZGVmYXVsdC5zZXAucmVwbGFjZSgvXFwvZywiXFxcXCIpKSksXz1uZXcgUmVnRXhwKCIiLmNvbmNhdChVLmRlZmF1bHQuc2VwLnJlcGxhY2UoL1xcL2csIlxcXFwiKSwiJCIpKTtyZXR1''@;'; put 'put ''cm4oZy5sZW5ndGg/Ii4uIi5jb25jYXQoVS5kZWZhdWx0LnNlcCkucmVwZWF0KGcubGVuZ3RoKToiLiIuY29uY2F0KFUuZGVmYXVsdC5zZXApKStiLnJlcGxhY2UoQywiIikucmVwbGFjZShrLCIiKS5yZXBsYWNlKF8sIiIpfSxPLm1vdmVGaWxlPWZ1bmN0aW9uKFcsYil7cmV0dXJuIFQodGhp''@;'; put 'put ''cyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihBKXtyZXR1cm5bMixaLmRlZmF1bHQucHJvbWlzZXMucmVuYW1lKFcsYildfSl9KX0sTy5jb3B5PWZ1bmN0aW9uKFcsYil7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IEUodGhpcyxmdW5jdGlvbihBKXtyZXR1cm5bMixaLmRlZmF1bHQuY29weShXLGIpXX0pfSl9LE8ucGF0aFNlcEVzY2FwZWQ9VS5kZWZhdWx0LnNlcC5yZXBsYWNlKC9cXC9nLCJcXFxcIiksTy5iYXNlNjRFbmNvZGVJbWFnZUZpbGU9ZnVuY3Rpb24oVyl7cmV0dXJuIFQodGhpcyx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixyZShXKS50aGVuKGZ1bmN0aW9uKEEpe3ZhciBGPVUuZGVmYXVsdC5leHRuYW1lKFcpLnN1YnN0cigxKXx8InBuZyI7cmV0dXJuInN2ZyI9PT1GJiYoRj0ic3ZnK3htbCIpLCJkYXRhOmltYWdlLyIr''@;'; put 'put ''RisiO2Jhc2U2NCwiK0EudG9TdHJpbmcoImJhc2U2NCIpfSldfSl9KX0sTy5iYXNlNjRFbmNvZGVGaWxlPWZ1bmN0aW9uKFcpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuWzIsWi5kZWZhdWx0LnByb21pc2Vz''@;'; put 'put ''LnJlYWRGaWxlKFcse2VuY29kaW5nOiJiYXNlNjQifSldfSl9KX0sTy5nZXRSZWFsUGF0aD1mdW5jdGlvbihXKXtyZXR1cm4gWi5kZWZhdWx0LnJlYWxwYXRoU3luYyhXKX0sTy5jcmVhdGVXcml0ZVN0cmVhbT1mdW5jdGlvbihXKXtyZXR1cm4gVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsSi5maWxlRXhpc3RzKFcpXTtjYXNlIDE6cmV0dXJuIGIuc2VudCgpP1syLFouZGVmYXVsdC5jcmVhdGVXcml0ZVN0cmVhbShXLHtmbGFnczoiYSJ9KV06WzQsSi5jcmVhdGVGaWxl''@;'; put 'put ''KFcsIiIpXTtjYXNlIDI6cmV0dXJuIGIuc2VudCgpLFsyLFouZGVmYXVsdC5jcmVhdGVXcml0ZVN0cmVhbShXLHtmbGFnczoiYSJ9KV19fSl9KX0sTy5jcmVhdGVSZWFkU3RyZWFtPWZ1bmN0aW9uKFcpe3JldHVybiBUKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEUo''@;'; put 'put ''dGhpcyxmdW5jdGlvbihiKXtyZXR1cm5bMixaLmRlZmF1bHQuY3JlYXRlUmVhZFN0cmVhbShXKV19KX0pfSxPLnRlc3RGaWxlUmVnRXhwPS9cLnRlc3RcLihcZCtcLik/c2FzJC9pLE8uaXNUZXN0RmlsZT1mdW5jdGlvbihXKXtyZXR1cm4gTy50ZXN0RmlsZVJlZ0V4cC50ZXN0KFcpfX0sNTYy''@;'; put 'put ''NjpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihUKXtyZXR1cm4gVCYmVC5fX2VzTW9kdWxlP1Q6e2RlZmF1bHQ6VH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxP''@;'; put 'put ''LmdldEFic29sdXRlUGF0aD12b2lkIDA7dmFyIEc9aihJKDI1MjApKSxEPWooSSg3NDM1KSk7Ty5nZXRBYnNvbHV0ZVBhdGg9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gRy5kZWZhdWx0LmlzQWJzb2x1dGUoVCl8fC9efi8uZXhlYyhUKT9HLmRlZmF1bHQubm9ybWFsaXplKFQucmVwbGFjZSgvXn4v''@;'; put 'put ''LEQuZGVmYXVsdC5ob21lZGlyKCkpKTpHLmRlZmF1bHQuam9pbihFLFQpfX0sMjk3NTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihFLHosTixCKXt2b2lkIDA9PT1CJiYoQj1OKSxP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoRSxCLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB6W05dfX0pfTpmdW5jdGlvbihFLHosTixCKXt2b2lkIDA9PT1CJiYoQj1OKSxFW0JdPXpbTl19KSxHPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihFLHope2Zvcih2''@;'; put 'put ''YXIgTiBpbiBFKSJkZWZhdWx0Ij09PU58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LE4pfHxqKHosRSxOKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8ucmVhZENzdj1PLmNyZWF0ZUNzdj1PLnVwZGF0ZUNzdj1PLnRl''@;'; put 'put ''c3RGaWxlUmVnRXhwPU8uaXNUZXN0RmlsZT1PLmdldFJlYWxQYXRoPU8uYmFzZTY0RW5jb2RlRmlsZT1PLmJhc2U2NEVuY29kZUltYWdlRmlsZT1PLmNvcHk9Ty5wYXRoU2VwRXNjYXBlZD1PLm1vdmVGaWxlPU8udW5pZnlGaWxlUGF0aD1PLmdldFJlbGF0aXZlUGF0aD1PLmRlbGV0ZUZvbGRl''@;'; put 'put ''cj1PLmRlbGV0ZUZpbGU9Ty5jcmVhdGVXcml0ZVN0cmVhbT1PLmNyZWF0ZVJlYWRTdHJlYW09Ty5jcmVhdGVGb2xkZXI9Ty5jcmVhdGVGaWxlPU8ubGlzdEZpbGVzQW5kU3ViRm9sZGVyc0luRm9sZGVyPU8ubGlzdFN1YkZvbGRlcnNJbkZvbGRlcj1PLmxpc3RTYXNGaWxlc0luRm9sZGVyPU8u''@;'; put 'put ''bGlzdEluaUZpbGVzSW5Gb2xkZXI9Ty5saXN0RmlsZXNJbkZvbGRlcj1PLnJlYWRGaWxlQmluYXJ5PU8ucmVhZEZpbGU9Ty5pc0ZvbGRlcj1PLmZvbGRlckV4aXN0cz1PLmZpbGVFeGlzdHM9dm9pZCAwO3ZhciBEPUkoMTU1OSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImZpbGVFeGlzdHMi''@;'; put 'put ''LHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELmZpbGVFeGlzdHN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImZvbGRlckV4aXN0cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuZm9sZGVyRXhpc3RzfX0pLE9iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShPLCJpc0ZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuaXNGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sInJlYWRGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5yZWFkRmlsZX19KSxPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoTywicmVhZEZpbGVCaW5hcnkiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELnJlYWRGaWxlQmluYXJ5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJsaXN0RmlsZXNJbkZvbGRlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEQubGlzdEZpbGVzSW5Gb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImxpc3RJbmlGaWxlc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5saXN0SW5pRmlsZXNJbkZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywibGlz''@;'; put 'put ''dFNhc0ZpbGVzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELmxpc3RTYXNGaWxlc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJsaXN0U3ViRm9sZGVyc0luRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gRC5saXN0U3ViRm9sZGVyc0luRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJsaXN0RmlsZXNBbmRTdWJGb2xkZXJzSW5Gb2xkZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELmxpc3RGaWxlc0FuZFN1YkZvbGRlcnNJbkZvbGRlcn19KSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTywiY3JlYXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuY3JlYXRlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiY3JlYXRlRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5j''@;'; put 'put ''cmVhdGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImNyZWF0ZVJlYWRTdHJlYW0iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELmNyZWF0ZVJlYWRTdHJlYW19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImNyZWF0ZVdyaXRlU3RyZWFtIix7ZW51''@;'; put 'put ''bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5jcmVhdGVXcml0ZVN0cmVhbX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiZGVsZXRlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuZGVsZXRlRmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTywiZGVsZXRlRm9sZGVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5kZWxldGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImdldFJlbGF0aXZlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuZ2V0UmVsYXRp''@;'; put 'put ''dmVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJ1bmlmeUZpbGVQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC51bmlmeUZpbGVQYXRofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJtb3ZlRmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEQubW92ZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sInBhdGhTZXBFc2NhcGVkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5wYXRoU2VwRXNjYXBlZH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiY29weSIse2VudW1lcmFi''@;'; put 'put ''bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuY29weX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiYmFzZTY0RW5jb2RlSW1hZ2VGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5iYXNlNjRFbmNvZGVJbWFnZUZpbGV9fSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KE8sImJhc2U2NEVuY29kZUZpbGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELmJhc2U2NEVuY29kZUZpbGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImdldFJlYWxQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5n''@;'; put 'put ''ZXRSZWFsUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiaXNUZXN0RmlsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuaXNUZXN0RmlsZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywidGVzdEZpbGVSZWdFeHAiLHtlbnVtZXJhYmxlOiEwLGdldDpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiBELnRlc3RGaWxlUmVnRXhwfX0pO3ZhciBUPUkoMzkwNik7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sInVwZGF0ZUNzdiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQudXBkYXRlQ3N2fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJj''@;'; put 'put ''cmVhdGVDc3YiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBULmNyZWF0ZUNzdn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywicmVhZENzdiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQucmVhZENzdn19KSxHKEkoNTYyNiksTyl9LDI3Nzc6''@;'; put 'put ''KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5uZXdMaW5lPU8uY2FwaXRhbGl6ZUZpcnN0Q2hhcj1PLnNhbml0aXplU3BlY2lhbENoYXJzPU8ucGFkV2l0aE51bWJlcj12b2lkIDA7dmFyIGo9SSg1MzA2KTtP''@;'; put 'put ''YmplY3QuZGVmaW5lUHJvcGVydHkoTywicGFkV2l0aE51bWJlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGoucGFkV2l0aE51bWJlcn19KTt2YXIgRz1JKDkyNzUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJzYW5pdGl6ZVNwZWNpYWxDaGFycyIse2VudW1lcmFi''@;'; put 'put ''bGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcuc2FuaXRpemVTcGVjaWFsQ2hhcnN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImNhcGl0YWxpemVGaXJzdENoYXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBHLmNhcGl0YWxpemVGaXJzdENoYXJ9fSk7dmFy''@;'; put 'put ''IEQ9SSgxNjI4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywibmV3TGluZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQubmV3TGluZX19KX0sNTMwNjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVl''@;'; put 'put ''OiEwfSksTy5wYWRXaXRoTnVtYmVyPXZvaWQgMCxPLnBhZFdpdGhOdW1iZXI9ZnVuY3Rpb24oSSxqKXtyZXR1cm4gdm9pZCAwPT09aiYmKGo9MCksST45P0k6IiIuY29uY2F0KGopLmNvbmNhdChJKX19LDE2Mjg6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpO09iamVjdC5k''@;'; put 'put ''ZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLm5ld0xpbmU9dm9pZCAwLE8ubmV3TGluZT1mdW5jdGlvbigpe3JldHVybiJ3aW4zMiI9PT1qLnBsYXRmb3JtPyJcXHJcXG4iOiJcXG4ifX0sOTI3NTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5jYXBpdGFsaXplRmlyc3RDaGFyPU8uc2FuaXRpemVTcGVjaWFsQ2hhcnM9dm9pZCAwLE8uc2FuaXRpemVTcGVjaWFsQ2hhcnM9ZnVuY3Rpb24oSSl7cmV0dXJuIEkucmVwbGFjZSgvW1x1MDAxYlx1MDA5Yl1bWygpIzs/XSooPzpb''@;'; put 'put ''MC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywiIil9LE8uY2FwaXRhbGl6ZUZpcnN0Q2hhcj1mdW5jdGlvbihJKXtyZXR1cm4gSS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStJLnNsaWNlKDEpfX0sNjQ2NzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBqPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihEKXtyZXR1cm4gRCYmRC5fX2VzTW9kdWxlP0Q6e2RlZmF1bHQ6RH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmlzU3BlY2lhbE1pc3Npbmc9Ty5jaG9pY2VW''@;'; put 'put ''YWxpZGF0b3I9Ty5jb25maXJtYXRpb25WYWxpZGF0b3I9Ty51cmxWYWxpZGF0b3I9dm9pZCAwO3ZhciBHPWooSSg0ODEpKTtPLnVybFZhbGlkYXRvcj1mdW5jdGlvbihELFQpe3JldHVybiEhRy5kZWZhdWx0LmlzSHR0cFVyaShEKXx8ISFHLmRlZmF1bHQuaXNIdHRwc1VyaShEKXx8IiI9PT1E''@;'; put 'put ''fHxUfSxPLmNvbmZpcm1hdGlvblZhbGlkYXRvcj1mdW5jdGlvbihEKXtyZXR1cm4hMD09PUR8fCExPT09RH0sTy5jaG9pY2VWYWxpZGF0b3I9ZnVuY3Rpb24oRCxULEUpe3JldHVybiBEPjAmJkQ8PVR8fEV9LE8uaXNTcGVjaWFsTWlzc2luZz1mdW5jdGlvbihEKXtyZXR1cm4oInN0cmluZyIh''@;'; put 'put ''PXR5cGVvZiBEfHwhRC5pbmNsdWRlcygiLi4iKSkmJm5ldyBSZWdFeHAoIl4oXFwuKT9bYS16Xy5dezF9JCIsImkiKS50ZXN0KEQpfX0sNzc1NzooTSxPLEkpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmdlbmVyYXRl''@;'; put 'put ''VGltZXN0YW1wPU8udGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUz12b2lkIDA7dmFyIGo9SSgxMzAyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywidGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGoudGltZXN0YW1wVG9ZWVlZ''@;'; put 'put ''TU1EREhITU1TU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiZ2VuZXJhdGVUaW1lc3RhbXAiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBqLmdlbmVyYXRlVGltZXN0YW1wfX0pfSwxMzAyOihNLE8sSSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZ2VuZXJhdGVUaW1lc3RhbXA9Ty50aW1lc3RhbXBUb1lZWVlNTURESEhNTVNTPXZvaWQgMDt2YXIgaj1JKDI3NzcpO08udGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUz1mdW5jdGlvbihHKXt2b2lkIDA9PT1HJiYoRz1EYXRlLm5vdygp''@;'; put 'put ''KTt2YXIgRD1uZXcgRGF0ZShHKTtyZXR1cm5bRC5nZXRGdWxsWWVhcigpLCgwLGoucGFkV2l0aE51bWJlcikoRC5nZXRNb250aCgpKzEpLCgwLGoucGFkV2l0aE51bWJlcikoRC5nZXREYXRlKCkpXS5qb2luKCIvIikrIiAiK1soMCxqLnBhZFdpdGhOdW1iZXIpKEQuZ2V0SG91cnMoKSksKDAs''@;'; put 'put ''ai5wYWRXaXRoTnVtYmVyKShELmdldE1pbnV0ZXMoKSksKDAsai5wYWRXaXRoTnVtYmVyKShELmdldFNlY29uZHMoKSldLmpvaW4oIjoiKX0sTy5nZW5lcmF0ZVRpbWVzdGFtcD1mdW5jdGlvbihHLEQpe3ZvaWQgMD09PUcmJihHPSIiKTt2YXIgVD1uZXcgRGF0ZSxFPVtULmdldFVUQ0Z1bGxZ''@;'; put 'put ''ZWFyKCksVC5nZXRVVENNb250aCgpKzEsVC5nZXRVVENEYXRlKCksVC5nZXRVVENIb3VycygpLFQuZ2V0VVRDTWludXRlcygpLFQuZ2V0VVRDU2Vjb25kcygpXTtyZXR1cm4gRT1FLm1hcChmdW5jdGlvbih6KXtyZXR1cm4oMCxqLnBhZFdpdGhOdW1iZXIpKHopfSksRCYmRyYmRDxFLmxlbmd0''@;'; put 'put ''aCYmRD49MCYmRS5zcGxpY2UoRCwwLEcpLEUuam9pbihEPyIiOkcpfX0sODIzOTooTSxPKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5Db25maWdUeXBlcz12b2lkIDAsKEk9Ty5Db25maWdUeXBlc3x8KE8u''@;'; put 'put ''Q29uZmlnVHlwZXM9e30pKS5CdWlsZD0iYnVpbGRDb25maWciLEkuU2VydmljZT0ic2VydmljZUNvbmZpZyIsSS5Kb2I9ImpvYkNvbmZpZyIsSS5UZXN0PSJ0ZXN0Q29uZmlnIixJLkRvYz0iZG9jQ29uZmlnIixJLkRlcGxveT0iZGVwbG95Q29uZmlnIixJLlN0cmVhbT0ic3RyZWFtQ29uZmln''@;'; put 'put ''IixJLkF1dGg9ImF1dGhDb25maWcifSwyNDI3OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTg5OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KX0sMzY5MjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDY5Mzk6KE0sTyk9PnsidXNlIHN0cmljdCI7dmFyIEk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p''@;'; put 'put ''LE8uTWVtYmVyVHlwZT12b2lkIDAsKEk9Ty5NZW1iZXJUeXBlfHwoTy5NZW1iZXJUeXBlPXt9KSkuc2VydmljZT0ic2VydmljZSIsSS5maWxlPSJmaWxlIixJLmZvbGRlcj0iZm9sZGVyIn0sMzMyNzooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01v''@;'; put 'put ''ZHVsZSIse3ZhbHVlOiEwfSl9LDUxNjU6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzOTAwOmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChP''@;'; put 'put ''YmplY3QuY3JlYXRlP2Z1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELHose2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFRbRV19fSl9OmZ1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLERbel09VFtF''@;'; put 'put ''XX0pLEc9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEQsVCl7Zm9yKHZhciBFIGluIEQpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFQsRSl8fGooVCxELEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksRyhJKDgyMzkpLE8pLEcoSSgyNDI3KSxPKSxHKEkoMTg5KSxPKSxHKEkoMzY5MiksTyksRyhJKDY5MzkpLE8pLEcoSSgzMzI3KSxPKSxHKEkoNTE2NSksTyksRyhJKDQwNjkpLE8pLEcoSSg4OTMyKSxPKSxHKEkoNCksTyksRyhJKDIwMTUpLE8pLEcoSSg4NTE1KSxPKSxH''@;'; put 'put ''KEkoNTMxMyksTyksRyhJKDg5NzkpLE8pfSw0MDY5OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmlzTWFjcm9WYXJzPXZvaWQgMCxPLmlzTWFjcm9WYXJzPWZ1bmN0aW9uKEkpe3JldHVybiBJJiYib2JqZWN0''@;'; put 'put ''Ij09dHlwZW9mIEkubWFjcm9WYXJzJiYhQXJyYXkuaXNBcnJheShJLm1hY3JvVmFycyl9fSw4OTMyOihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDooTSxPKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSTtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5TQVNKc0ZpbGVUeXBlPXZvaWQgMCwoST1PLlNBU0pzRmlsZVR5cGV8fChPLlNBU0pzRmlsZVR5cGU9e30pKS5zZXJ2aWNlPSJTZXJ2aWNlIixJLmpvYj0iSm9iIixJLnRlc3Q9IlRlc3QiLEkuZmlsZT0iRmlsZSJ9''@;'; put 'put ''LDIwMTU6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw4NTE1OihNLE8pPT57InVzZSBzdHJpY3QiO3ZhciBJO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLlNlcnZl''@;'; put 'put ''clR5cGU9dm9pZCAwLChJPU8uU2VydmVyVHlwZXx8KE8uU2VydmVyVHlwZT17fSkpLlNhc1ZpeWE9IlNBU1ZJWUEiLEkuU2FzOT0iU0FTOSIsSS5TYXNqcz0iU0FTSlMifSw1MzEzOihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFs''@;'; put 'put ''dWU6ITB9KX0sODk3OTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oeil7Zm9yKHZhciBOLEI9MSxaPWFyZ3VtZW50cy5sZW5ndGg7QjxaO0IrKylmb3IodmFy''@;'; put 'put ''IFkgaW4gTj1hcmd1bWVudHNbQl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE4sWSkmJih6W1ldPU5bWV0pO3JldHVybiB6fSxqLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uVGFy''@;'; put 'put ''Z2V0PXZvaWQgMDt2YXIgRz1JKDgyMzkpLEQ9SSg4NTE1KSxUPUkoNjc4MSksRT1mdW5jdGlvbigpe2Z1bmN0aW9uIHooTixCKXt2YXIgWj10aGlzO3ZvaWQgMD09PUImJihCPXt9KSx0aGlzLl9zZXJ2ZXJUeXBlPUQuU2VydmVyVHlwZS5TYXNWaXlhLHRoaXMuZ2V0Q29uZmlnPWZ1bmN0aW9u''@;'; put 'put ''KFksVSl7cmV0dXJuIGooaih7fSxaLl9jb25maWdbWV18fHt9KSxVW1ldKX07dHJ5e2lmKCFOKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQ6IElucHV0IEpTT04gaXMgbnVsbCBvciB1bmRlZmluZWQuIik7dGhpcy5fY29uZmlnPUIsdGhpcy5fbmFtZT0oMCxULnZhbGlkYXRlVGFy''@;'; put 'put ''Z2V0TmFtZSkoTi5uYW1lKSx0aGlzLl9zZXJ2ZXJVcmw9KDAsVC52YWxpZGF0ZVNlcnZlclVybCkoTi5zZXJ2ZXJVcmwpLHRoaXMuX3NlcnZlclR5cGU9KDAsVC52YWxpZGF0ZVNlcnZlclR5cGUpKE4uc2VydmVyVHlwZSksdGhpcy5faHR0cHNBZ2VudE9wdGlvbnM9KDAsVC52YWxpZGF0ZUh0''@;'; put 'put ''dHBzQWdlbnRPcHRpb25zKShOLmh0dHBzQWdlbnRPcHRpb25zKSx0aGlzLl9hcHBMb2M9KDAsVC52YWxpZGF0ZUFwcExvYykoTi5hcHBMb2MpLHRoaXMuX2NvbnRleHROYW1lPSgwLFQudmFsaWRhdGVDb250ZXh0TmFtZSkoTi5jb250ZXh0TmFtZSx0aGlzLl9zZXJ2ZXJUeXBlKSx0aGlzLl9z''@;'; put 'put ''ZXJ2ZXJOYW1lPSgwLFQudmFsaWRhdGVTZXJ2ZXJOYW1lKShOLnNlcnZlck5hbWUsdGhpcy5fc2VydmVyVHlwZSksdGhpcy5fc3luY0ZvbGRlcj0oMCxULnZhbGlkYXRlU3luY0ZvbGRlcikoTi5zeW5jRm9sZGVyKSx0aGlzLl9yZXBvc2l0b3J5TmFtZT0oMCxULnZhbGlkYXRlUmVwb3NpdG9y''@;'; put 'put ''eU5hbWUpKE4ucmVwb3NpdG9yeU5hbWUsdGhpcy5fc2VydmVyVHlwZSksTi5kb2NDb25maWcmJih0aGlzLl9kb2NDb25maWc9KDAsVC52YWxpZGF0ZURvY0NvbmZpZykodGhpcy5nZXRDb25maWcoRy5Db25maWdUeXBlcy5Eb2MsTikpKSxOLmF1dGhDb25maWcmJih0aGlzLl9hdXRoQ29uZmln''@;'; put 'put ''PSgwLFQudmFsaWRhdGVBdXRoQ29uZmlnKSh0aGlzLmdldENvbmZpZyhHLkNvbmZpZ1R5cGVzLkF1dGgsTikpKSxOLmF1dGhDb25maWdTYXM5JiYodGhpcy5fYXV0aENvbmZpZ1Nhczk9KDAsVC52YWxpZGF0ZUF1dGhDb25maWdTYXM5KShOLmF1dGhDb25maWdTYXM5KSksTi5idWlsZENvbmZp''@;'; put 'put ''ZyYmKHRoaXMuX2J1aWxkQ29uZmlnPSgwLFQudmFsaWRhdGVCdWlsZENvbmZpZykodGhpcy5nZXRDb25maWcoRy5Db25maWdUeXBlcy5CdWlsZCxOKSx0aGlzLl9uYW1lKSksdGhpcy5fZGVwbG95Q29uZmlnPSgwLFQudmFsaWRhdGVEZXBsb3lDb25maWcpKE4uZGVwbG95Q29uZmlnP3RoaXMu''@;'; put 'put ''Z2V0Q29uZmlnKEcuQ29uZmlnVHlwZXMuRGVwbG95LE4pOntkZXBsb3lTZXJ2aWNlUGFjazohMCxkZXBsb3lTY3JpcHRzOltdfSksTi5zZXJ2aWNlQ29uZmlnJiYodGhpcy5fc2VydmljZUNvbmZpZz0oMCxULnZhbGlkYXRlU2VydmljZUNvbmZpZykodGhpcy5nZXRDb25maWcoRy5Db25maWdU''@;'; put 'put ''eXBlcy5TZXJ2aWNlLE4pKSksTi5qb2JDb25maWcmJih0aGlzLl9qb2JDb25maWc9KDAsVC52YWxpZGF0ZUpvYkNvbmZpZykodGhpcy5nZXRDb25maWcoRy5Db25maWdUeXBlcy5Kb2IsTikpKSxOLnN0cmVhbUNvbmZpZyYmKHRoaXMuX3N0cmVhbUNvbmZpZz0oMCxULnZhbGlkYXRlU3RyZWFt''@;'; put 'put ''Q29uZmlnKSh0aGlzLmdldENvbmZpZyhHLkNvbmZpZ1R5cGVzLlN0cmVhbSxOKSkpLE4udGVzdENvbmZpZyYmKHRoaXMuX3Rlc3RDb25maWc9KDAsVC52YWxpZGF0ZVRlc3RDb25maWcpKHRoaXMuZ2V0Q29uZmlnKEcuQ29uZmlnVHlwZXMuVGVzdCxOKSkpLE4ubWFjcm9Gb2xkZXJzJiZOLm1h''@;'; put 'put ''Y3JvRm9sZGVycy5sZW5ndGgmJih0aGlzLl9tYWNyb0ZvbGRlcnM9Ti5tYWNyb0ZvbGRlcnMpLE4ucHJvZ3JhbUZvbGRlcnMmJk4ucHJvZ3JhbUZvbGRlcnMubGVuZ3RoJiYodGhpcy5fcHJvZ3JhbUZvbGRlcnM9Ti5wcm9ncmFtRm9sZGVycyksTi5iaW5hcnlGb2xkZXJzJiZOLmJpbmFyeUZv''@;'; put 'put ''bGRlcnMubGVuZ3RoJiYodGhpcy5fYmluYXJ5Rm9sZGVycz1OLmJpbmFyeUZvbGRlcnMpLE4uc3luY0RpcmVjdG9yaWVzJiZOLnN5bmNEaXJlY3Rvcmllcy5sZW5ndGgmJih0aGlzLl9zeW5jRGlyZWN0b3JpZXM9KDAsVC52YWxpZGF0ZVN5bmNEaXJlY3RvcmllcykoTi5zeW5jRGlyZWN0b3Jp''@;'; put 'put ''ZXMpKX1jYXRjaChZKXt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHBhcnNpbmcgdGFyZ2V0OiAiLmNvbmNhdChZLm1lc3NhZ2UpKX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJh''@;'; put 'put ''YmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwic2VydmVyVXJsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlcnZlclVybH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''ei5wcm90b3R5cGUsInNlcnZlclR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmVyVHlwZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImh0dHBzQWdlbnRPcHRpb25zIix7Z2V0OmZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuX2h0dHBzQWdlbnRPcHRpb25zfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiYXBwTG9jIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcExvY30sZW51bWVyYWJsZTohMSxjb25m''@;'; put 'put ''aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImRvY0NvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb2NDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBl''@;'; put 'put ''LCJhdXRoQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJhdXRoQ29uZmlnU2FzOSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9hdXRoQ29uZmlnU2FzOX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImJ1aWxkQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1aWxkQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJs''@;'; put 'put ''ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiZGVwbG95Q29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlcGxveUNvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUs''@;'; put 'put ''InNlcnZpY2VDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VydmljZUNvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsImpvYkNvbmZpZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9qb2JDb25maWd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJzdHJlYW1Db25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RyZWFtQ29uZmlnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZToh''@;'; put 'put ''MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwibWFjcm9Gb2xkZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hY3JvRm9sZGVyc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInBy''@;'; put 'put ''b2dyYW1Gb2xkZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb2dyYW1Gb2xkZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiYmluYXJ5Rm9sZGVycyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLl9iaW5hcnlGb2xkZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LnByb3RvdHlwZSwiY29udGV4dE5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGV4dE5hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJh''@;'; put 'put ''YmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJzZXJ2ZXJOYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlcnZlck5hbWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHoucHJvdG90eXBlLCJy''@;'; put 'put ''ZXBvc2l0b3J5TmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXBvc2l0b3J5TmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInRlc3RDb25maWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fdGVzdENvbmZpZ30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInN5bmNGb2xkZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3luY0ZvbGRlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoei5wcm90b3R5cGUsInN5bmNEaXJlY3RvcmllcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zeW5jRGlyZWN0b3JpZXN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksei5wcm90b3R5cGUudG9Kc29uPWZ1bmN0aW9uKE4pe3Zh''@;'; put 'put ''ciBCLFosWTt2b2lkIDA9PT1OJiYoTj0hMCk7dmFyIFU9e25hbWU6dGhpcy5uYW1lLHNlcnZlclVybDp0aGlzLnNlcnZlclVybCxzZXJ2ZXJUeXBlOnRoaXMuc2VydmVyVHlwZSxodHRwc0FnZW50T3B0aW9uczp0aGlzLmh0dHBzQWdlbnRPcHRpb25zLGFwcExvYzp0aGlzLmFwcExvYyxkb2ND''@;'; put 'put ''b25maWc6dGhpcy5kb2NDb25maWcsZGVwbG95Q29uZmlnOnRoaXMuZGVwbG95Q29uZmlnfTtyZXR1cm4hKG51bGw9PT0oQj10aGlzLm1hY3JvRm9sZGVycyl8fHZvaWQgMD09PUIpJiZCLmxlbmd0aCYmKFUubWFjcm9Gb2xkZXJzPXRoaXMubWFjcm9Gb2xkZXJzKSwhKG51bGw9PT0oWj10aGlz''@;'; put 'put ''LnByb2dyYW1Gb2xkZXJzKXx8dm9pZCAwPT09WikmJloubGVuZ3RoJiYoVS5wcm9ncmFtRm9sZGVycz10aGlzLnByb2dyYW1Gb2xkZXJzKSwhKG51bGw9PT0oWT10aGlzLmJpbmFyeUZvbGRlcnMpfHx2b2lkIDA9PT1ZKSYmWS5sZW5ndGgmJihVLmJpbmFyeUZvbGRlcnM9dGhpcy5iaW5hcnlG''@;'; put 'put ''b2xkZXJzKSx0aGlzLmF1dGhDb25maWcmJihVLmF1dGhDb25maWc9dGhpcy5hdXRoQ29uZmlnKSx0aGlzLmF1dGhDb25maWdTYXM5JiYoVS5hdXRoQ29uZmlnU2FzOT10aGlzLmF1dGhDb25maWdTYXM5KSx0aGlzLnN5bmNEaXJlY3Rvcmllcz9VLnN5bmNEaXJlY3Rvcmllcz10aGlzLnN5bmNE''@;'; put 'put ''aXJlY3RvcmllczpOJiYoVS5zeW5jRGlyZWN0b3JpZXM9W10pLHRoaXMuYnVpbGRDb25maWc/VS5idWlsZENvbmZpZz10aGlzLmJ1aWxkQ29uZmlnOk4mJihVLmJ1aWxkQ29uZmlnPXtpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixidWlsZE91dHB1dEZpbGVOYW1lOiIiLmNvbmNhdCh0''@;'; put 'put ''aGlzLm5hbWUsIi5zYXMiKSxidWlsZE91dHB1dEZvbGRlcjoic2FzanNidWlsZCIsYnVpbGRSZXN1bHRzRm9sZGVyOiJzYXNqc3Jlc3VsdHMiLG1hY3JvVmFyczp7fX0pLHRoaXMuam9iQ29uZmlnP1Uuam9iQ29uZmlnPXRoaXMuam9iQ29uZmlnOk4mJihVLmpvYkNvbmZpZz17am9iRm9sZGVy''@;'; put 'put ''czpbXSxpbml0UHJvZ3JhbToiIix0ZXJtUHJvZ3JhbToiIixtYWNyb1ZhcnM6e319KSx0aGlzLnNlcnZpY2VDb25maWc/VS5zZXJ2aWNlQ29uZmlnPXRoaXMuc2VydmljZUNvbmZpZzpOJiYoVS5zZXJ2aWNlQ29uZmlnPXtzZXJ2aWNlRm9sZGVyczpbXSxpbml0UHJvZ3JhbToiIix0ZXJtUHJv''@;'; put 'put ''Z3JhbToiIixtYWNyb1ZhcnM6e319KSx0aGlzLnN0cmVhbUNvbmZpZz9VLnN0cmVhbUNvbmZpZz10aGlzLnN0cmVhbUNvbmZpZzpOJiYoVS5zdHJlYW1Db25maWc9e3N0cmVhbVdlYkZvbGRlcjoiIixzdHJlYW1XZWI6ITEsd2ViU291cmNlUGF0aDoiIixzdHJlYW1TZXJ2aWNlTmFtZToiIixh''@;'; put 'put ''c3NldFBhdGhzOltdfSksdGhpcy50ZXN0Q29uZmlnP1UudGVzdENvbmZpZz10aGlzLnRlc3RDb25maWc6TiYmKFUudGVzdENvbmZpZz17aW5pdFByb2dyYW06IiIsdGVybVByb2dyYW06IiIsbWFjcm9WYXJzOnt9LHRlc3RTZXRVcDoiIix0ZXN0VGVhckRvd246IiJ9KSx0aGlzLnNlcnZlclR5''@;'; put 'put ''cGU9PT1ELlNlcnZlclR5cGUuU2FzVml5YT9VLmNvbnRleHROYW1lPXRoaXMuY29udGV4dE5hbWU6dGhpcy5zZXJ2ZXJUeXBlPT09RC5TZXJ2ZXJUeXBlLlNhczkmJihVLnNlcnZlck5hbWU9dGhpcy5zZXJ2ZXJOYW1lLFUucmVwb3NpdG9yeU5hbWU9dGhpcy5yZXBvc2l0b3J5TmFtZSksVX0s''@;'; put 'put ''en0oKTtPLlRhcmdldD1FfSw2NzgxOmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKFQpe3JldHVybiBUJiZULl9fZXNNb2R1bGU/VDp7ZGVmYXVsdDpUfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pLE8udmFsaWRhdGVTeW5jRGlyZWN0b3JpZXM9Ty52YWxpZGF0ZVJlcG9zaXRvcnlOYW1lPU8udmFsaWRhdGVTeW5jRm9sZGVyPU8udmFsaWRhdGVTZXJ2ZXJOYW1lPU8udmFsaWRhdGVDb250ZXh0TmFtZT1PLnZhbGlkYXRlU3RyZWFtQ29uZmlnPU8udmFsaWRh''@;'; put 'put ''dGVEZXBsb3lDb25maWc9Ty52YWxpZGF0ZUpvYkNvbmZpZz1PLnZhbGlkYXRlVGVzdENvbmZpZz1PLnZhbGlkYXRlU2VydmljZUNvbmZpZz1PLnZhbGlkYXRlQnVpbGRDb25maWc9Ty52YWxpZGF0ZUF1dGhDb25maWdTYXM5PU8udmFsaWRhdGVBdXRoQ29uZmlnPU8udmFsaWRhdGVEb2NDb25m''@;'; put 'put ''aWc9Ty52YWxpZGF0ZUFwcExvYz1PLnZhbGlkYXRlSHR0cHNBZ2VudE9wdGlvbnM9Ty52YWxpZGF0ZVNlcnZlclVybD1PLnZhbGlkYXRlVGFyZ2V0TmFtZT1PLnZhbGlkYXRlU2VydmVyVHlwZT12b2lkIDA7dmFyIEc9aihJKDQ4MSkpLEQ9SSgzOTAwKTtPLnZhbGlkYXRlU2VydmVyVHlwZT1m''@;'; put 'put ''dW5jdGlvbihUKXtpZighVCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2VydmVyIHR5cGU6IGBzZXJ2ZXJUeXBlYCBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoVCE9PUQuU2VydmVyVHlwZS5TYXM5JiZUIT09RC5TZXJ2ZXJUeXBlLlNhc1ZpeWEmJlQhPT1ELlNlcnZlclR5''@;'; put 'put ''cGUuU2FzanMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZlciB0eXBlOiBTdXBwb3J0ZWQgdmFsdWVzIGZvciAgYHNlcnZlclR5cGVgIGFyZSAiLmNvbmNhdChELlNlcnZlclR5cGUuU2FzVml5YSwiLCAiKS5jb25jYXQoRC5TZXJ2ZXJUeXBlLlNhczksIiBhbmQgIikuY29uY2F0KEQu''@;'; put 'put ''U2VydmVyVHlwZS5TYXNqcywiLiIpKTtyZXR1cm4gVH0sTy52YWxpZGF0ZVRhcmdldE5hbWU9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHRhcmdldCBuYW1lOiBgbmFtZWAgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtpZihULnRyaW0o''@;'; put 'put ''KS5pbmNsdWRlcygiICIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNhbm5vdCBpbmNsdWRlIHNwYWNlcy4iKTtpZighL15bYS16QS1aMC05XC1dKyQvaS50ZXN0KFQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0YXJnZXQgbmFtZTogYG5hbWVgIGNh''@;'; put 'put ''biBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGRhc2hlcy4iKTtyZXR1cm4gVH0sTy52YWxpZGF0ZVNlcnZlclVybD1mdW5jdGlvbihUKXtpZihudWxsPT1UJiYoVD0iIiksIiIhPT1UJiYhRy5kZWZhdWx0LmlzSHR0cFVyaShUKSYmIUcuZGVmYXVsdC5pc0h0dHBz''@;'; put 'put ''VXJpKFQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzZXJ2ZXIgVVJMOiBgc2VydmVyVXJsYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IHN0cmluZyBvciBhIHZhbGlkIFVSTCBvZiB0aGUgZm9ybSBodHRwKHMpOi8veW91ci1zZXJ2ZXIuY29tKDpwb3J0KS4iKTtyZXR1cm4gVH0sTy52''@;'; put 'put ''YWxpZGF0ZUh0dHBzQWdlbnRPcHRpb25zPWZ1bmN0aW9uKFQpe2lmKFQpe2lmKCJvYmplY3QiIT10eXBlb2YgVCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFsdWU6IGBodHRwc0FnZW50T3B0aW9uc2Agc2hvdWxkIGVpdGhlciBiZSBhbiBlbXB0eSBvciBhbiBvYmplY3Qgb2YgYEh0dHBz''@;'; put 'put ''QWdlbnRPcHRpb25zYCIpO2lmKG51bGw9PVQuYWxsb3dJbnNlY3VyZVJlcXVlc3RzKVQuYWxsb3dJbnNlY3VyZVJlcXVlc3RzPSExO2Vsc2UgaWYoImJvb2xlYW4iIT10eXBlb2YgVC5hbGxvd0luc2VjdXJlUmVxdWVzdHMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhbHVlOiBgaHR0cHNB''@;'; put 'put ''Z2VudE9wdGlvbnMuYWxsb3dJbnNlY3VyZVJlcXVlc3RzYCBzaG91bGQgZWl0aGVyIGJlIGFuIGVtcHR5IG9yIGEgYm9vbGVhbiIpO3JldHVybiJzdHJpbmciIT10eXBlb2YgVC5jYVBhdGgmJihULmNhUGF0aD12b2lkIDApLCJzdHJpbmciIT10eXBlb2YgVC5rZXlQYXRoJiYoVC5rZXlQYXRo''@;'; put 'put ''PXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBULmNlcnRQYXRoJiYoVC5jZXJ0UGF0aD12b2lkIDApLFR9fSxPLnZhbGlkYXRlQXBwTG9jPWZ1bmN0aW9uKFQpe2lmKCFUKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcHAgbG9jYXRpb246IGBhcHBMb2NgIGNhbm5vdCBiZSBlbXB0eSwgbnVs''@;'; put 'put ''bCBvciB1bmRlZmluZWQuIik7aWYoIVQuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcHAgbG9jYXRpb246IGBhcHBMb2NgIG11c3Qgc3RhcnQgd2l0aCBhIGAvYC4iKTtyZXR1cm4gVH0sTy52YWxpZGF0ZURvY0NvbmZpZz1mdW5jdGlvbihUKXtpZihUfHwoVD17''@;'; put 'put ''fSksImJvb2xlYW4iIT10eXBlb2YgVC5kaXNwbGF5TWFjcm9Db3JlJiYoVC5kaXNwbGF5TWFjcm9Db3JlPXZvaWQgMCksImJvb2xlYW4iIT10eXBlb2YgVC5lbmFibGVMaW5lYWdlJiYoVC5lbmFibGVMaW5lYWdlPXZvaWQgMCksInN0cmluZyIhPXR5cGVvZiBULm91dERpcmVjdG9yeSYmKFQu''@;'; put 'put ''b3V0RGlyZWN0b3J5PXZvaWQgMCksInN0cmluZyI9PXR5cGVvZiBULmRhdGFDb250cm9sbGVyVXJsKXtpZigiIiE9PVQuZGF0YUNvbnRyb2xsZXJVcmwmJiFHLmRlZmF1bHQuaXNIdHRwVXJpKFQuZGF0YUNvbnRyb2xsZXJVcmwpJiYhRy5kZWZhdWx0LmlzSHR0cHNVcmkoVC5kYXRhQ29udHJv''@;'; put 'put ''bGxlclVybCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERhdGEgQ29udHJvbGxlciBVcmw6IGBkYXRhQ29udHJvbGxlclVybGAgc2hvdWxkIGVpdGhlciBiZSBhbiBlbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBVUkwgb2YgdGhlIGZvcm0gaHR0cChzKTovL3lvdXItc2VydmVyLmNvbSg6cG9y''@;'; put 'put ''dCkuIil9ZWxzZSBULmRhdGFDb250cm9sbGVyVXJsPXZvaWQgMDtyZXR1cm4gVH0sTy52YWxpZGF0ZUF1dGhDb25maWc9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGF1dGggY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1''@;'; put 'put ''cm4gVH0sTy52YWxpZGF0ZUF1dGhDb25maWdTYXM5PWZ1bmN0aW9uKFQpe2lmKCFUKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhdXRoIGNvbmZpZyBmb3Igc2FzOTogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7aWYoIVQudXNlck5hbWV8fCFULnBhc3N3b3JkKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiSW52YWxpZCBhdXRoIGNvbmZpZyBmb3Igc2FzOTogdXNlck5hbWUgYW5kIHBhc3N3b3JkIGNhbiBub3QgYmUgZW1wdHkiKTtyZXR1cm4gVH0sTy52YWxpZGF0ZUJ1aWxkQ29uZmlnPWZ1bmN0aW9uKFQsRSl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJ1aWxk''@;'; put 'put ''IGNvbmZpZzogSlNPTiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJuIFQuYnVpbGRSZXN1bHRzRm9sZGVyfHwoVC5idWlsZFJlc3VsdHNGb2xkZXI9InNhc2pzcmVzdWx0cyIpLFQuYnVpbGRPdXRwdXRGb2xkZXJ8fChULmJ1aWxkT3V0cHV0Rm9sZGVyPSJzYXNqc2J1aWxk''@;'; put 'put ''IiksVC5idWlsZE91dHB1dEZpbGVOYW1lfHwoVC5idWlsZE91dHB1dEZpbGVOYW1lPSIiLmNvbmNhdChFLCIuc2FzIikpLFQuaW5pdFByb2dyYW18fChULmluaXRQcm9ncmFtPSIiKSxULnRlcm1Qcm9ncmFtfHwoVC50ZXJtUHJvZ3JhbT0iIiksVC5tYWNyb1ZhcnN8fChULm1hY3JvVmFycz17''@;'; put 'put ''fSksVH0sTy52YWxpZGF0ZVNlcnZpY2VDb25maWc9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNlcnZpY2UgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gVC5pbml0UHJvZ3JhbXx8KFQuaW5pdFByb2dyYW09IiIp''@;'; put 'put ''LFQudGVybVByb2dyYW18fChULnRlcm1Qcm9ncmFtPSIiKSxULnNlcnZpY2VGb2xkZXJzfHwoVC5zZXJ2aWNlRm9sZGVycz1bXSksVC5tYWNyb1ZhcnN8fChULm1hY3JvVmFycz17fSksVH0sTy52YWxpZGF0ZVRlc3RDb25maWc9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJ''@;'; put 'put ''bnZhbGlkIHRlc3QgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gVC5pbml0UHJvZ3JhbXx8KFQuaW5pdFByb2dyYW09IiIpLFQudGVybVByb2dyYW18fChULnRlcm1Qcm9ncmFtPSIiKSxULm1hY3JvVmFyc3x8KFQubWFjcm9WYXJzPXt9KSxULnRl''@;'; put 'put ''c3RTZXRVcHx8KFQudGVzdFNldFVwPSIiKSxULnRlc3RUZWFyRG93bnx8KFQudGVzdFRlYXJEb3duPSIiKSxUfSxPLnZhbGlkYXRlSm9iQ29uZmlnPWZ1bmN0aW9uKFQpe2lmKCFUKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBqb2IgY29uZmlnOiBKU09OIGNhbm5vdCBiZSBudWxsIG9yIHVu''@;'; put 'put ''ZGVmaW5lZC4iKTtyZXR1cm4gVC5pbml0UHJvZ3JhbXx8KFQuaW5pdFByb2dyYW09IiIpLFQudGVybVByb2dyYW18fChULnRlcm1Qcm9ncmFtPSIiKSxULmpvYkZvbGRlcnN8fChULmpvYkZvbGRlcnM9W10pLFQubWFjcm9WYXJzfHwoVC5tYWNyb1ZhcnM9e30pLFR9LE8udmFsaWRhdGVEZXBs''@;'; put 'put ''b3lDb25maWc9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRlcGxveSBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBULmRlcGxveVNlcnZpY2VQYWNrPSEhVC5kZXBsb3lTZXJ2aWNlUGFjayxULmRlcGxveVNjcmlw''@;'; put 'put ''dHN8fChULmRlcGxveVNjcmlwdHM9W10pLFR9LE8udmFsaWRhdGVTdHJlYW1Db25maWc9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmVhbSBjb25maWc6IEpTT04gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO2lmKCEwIT09VC5zdHJlYW1XZWIm''@;'; put 'put ''JiExIT09VC5zdHJlYW1XZWIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmVhbSBjb25maWc6IGBzdHJlYW1XZWJgIGNhbm5vdCBiZSBhIG5vbi1ib29sZWFuIHZhbHVlLiIpO2lmKFQuc3RyZWFtV2ViJiYhVC5zdHJlYW1XZWJGb2xkZXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0''@;'; put 'put ''cmVhbSBjb25maWc6IGBzdHJlYW1XZWJGb2xkZXJgIGNhbm5vdCBiZSBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBgc3RyZWFtV2ViYCBpcyB0cnVlLiIpO2lmKFQuc3RyZWFtV2ViJiYhVC53ZWJTb3VyY2VQYXRoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJlYW0gY29uZmln''@;'; put 'put ''OiBgd2ViU291cmNlUGF0aGAgY2Fubm90IGJlIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZC4iKTtyZXR1cm4gVC5zdHJlYW1Mb2dvJiYic3RyaW5nIiE9dHlwZW9mIFQuc3RyZWFtTG9nbyYmKFQuc3RyZWFtTG9nbz12b2lkIDApLFQuYXNzZXRQYXRoc3x8KFQuYXNzZXRQYXRocz1bXSksVC5z''@;'; put 'put ''dHJlYW1TZXJ2aWNlTmFtZXx8KFQuc3RyZWFtU2VydmljZU5hbWU9ImNsaWNrbWUiKSxUfSxPLnZhbGlkYXRlQ29udGV4dE5hbWU9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gRSE9PUQuU2VydmVyVHlwZS5TYXNWaXlhfHxUP1Q6IlNBUyBKb2IgRXhlY3V0aW9uIGNvbXB1dGUgY29udGV4dCJ9LE8u''@;'; put 'put ''dmFsaWRhdGVTZXJ2ZXJOYW1lPWZ1bmN0aW9uKFQsRSl7cmV0dXJuIEUhPT1ELlNlcnZlclR5cGUuU2FzOXx8VD9UOiJTQVNBcHAifSxPLnZhbGlkYXRlU3luY0ZvbGRlcj1mdW5jdGlvbihUKXtpZigic3RyaW5nIj09dHlwZW9mIFQmJlQpcmV0dXJuIFR9LE8udmFsaWRhdGVSZXBvc2l0b3J5''@;'; put 'put ''TmFtZT1mdW5jdGlvbihULEUpe3JldHVybiBFIT09RC5TZXJ2ZXJUeXBlLlNhczl8fFQ/VDoiRm91bmRhdGlvbiJ9LE8udmFsaWRhdGVTeW5jRGlyZWN0b3JpZXM9ZnVuY3Rpb24oVCl7aWYoIVQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN5bmNEaXJlY3RvcmllcyBjb25maWc6IEpTT04g''@;'; put 'put ''Y2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybiBULmZvckVhY2goZnVuY3Rpb24oRSl7aWYoIUUubG9jYWx8fCFFLnJlbW90ZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3luY0RpcmVjdG9yeSBjb25maWc6IHZhbHVlcyBvZiBwcm9wZXJ0eSAnbG9jYWwnIGFuZCAncmVt''@;'; put 'put ''b3RlIGNhbiBub3QgYmUgZW1wdHkgb3IgdW5kZWZpbmVkIil9KSxUfX0sMjkyNzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKEUpe3JldHVybiBFJiZFLl9fZXNNb2R1bGU/RTp7''@;'; put 'put ''ZGVmYXVsdDpFfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZGVjb2RlRnJvbUJhc2U2ND1PLmVuY29kZVRvQmFzZTY0PXZvaWQgMDt2YXIgRD1HKEkoNTgzNSkpLFQ9IntzYXNqc19lbmNvZGVkfSI7Ty5lbmNvZGVUb0Jhc2U2ND1mdW5jdGlv''@;'; put 'put ''bihFKXt2YXIgej1ELmRlZmF1bHQucmFuZG9tQnl0ZXMoMTAwKS50b1N0cmluZygiaGV4IiksTj1qLmZyb20oeitFKS50b1N0cmluZygiYmFzZTY0Iik7cmV0dXJuIFQrTn0sTy5kZWNvZGVGcm9tQmFzZTY0PWZ1bmN0aW9uKEUpe3JldHVybiBFLnN0YXJ0c1dpdGgoVCk/KEU9RS5yZXBsYWNl''@;'; put 'put ''KC9ee3Nhc2pzX2VuY29kZWR9LywiIiksai5mcm9tKEUsImJhc2U2NCIpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIwMCkpOkV9fSw1ODE6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uYnl0ZXNUb1NpemU9dm9p''@;'; put 'put ''ZCAwLE8uYnl0ZXNUb1NpemU9ZnVuY3Rpb24oSSxqLEcpe2lmKHZvaWQgMD09PWomJihqPTEpLHZvaWQgMD09PUcmJihHPTEwOTk1MTE2Mjc3NzYpLDA9PT1JKXJldHVybiIwIEIiO0k9ST5HP0c6STt2YXIgRD1qPDA/MDpqLFQ9TWF0aC5mbG9vcihNYXRoLmxvZyhJKS9NYXRoLmxvZygxMDI0''@;'; put 'put ''KSk7cmV0dXJuKEkvTWF0aC5wb3coMTAyNCxUKSkudG9GaXhlZChEKSsiICIrWyJCIiwiS0IiLCJNQiIsIkdCIiwiVEIiXVtUXX19LDg2NTM6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uY2h1bms9dm9pZCAw''@;'; put 'put ''LE8uY2h1bms9ZnVuY3Rpb24oSSxqKXtyZXR1cm4gdm9pZCAwPT09aiYmKGo9MjIwKSxJLmxlbmd0aDw9aj9bSV06KEkubWF0Y2gobmV3IFJlZ0V4cCgiLnsxLCIraisifSIsImciKSl8fFtdKS5maWx0ZXIoZnVuY3Rpb24oRyl7cmV0dXJuISFHfSl9fSw2NDU3OmZ1bmN0aW9uKE0sTyl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBJPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihHLEQpe3ZhciBUPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJkdbU3ltYm9sLml0ZXJhdG9yXTtpZighVClyZXR1cm4gRzt2YXIgRSx6LE49VC5jYWxsKEcpLEI9W107dHJ5e2Zvcig7KHZvaWQgMD09PUR8fEQt''@;'; put 'put ''LSA+MCkmJiEoRT1OLm5leHQoKSkuZG9uZTspQi5wdXNoKEUudmFsdWUpfWNhdGNoKFope3o9e2Vycm9yOlp9fWZpbmFsbHl7dHJ5e0UmJiFFLmRvbmUmJihUPU4ucmV0dXJuKSYmVC5jYWxsKE4pfWZpbmFsbHl7aWYoeil0aHJvdyB6LmVycm9yfX1yZXR1cm4gQn0saj10aGlzJiZ0aGlzLl9f''@;'; put 'put ''c3ByZWFkQXJyYXl8fGZ1bmN0aW9uKEcsRCxUKXtpZihUfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIEUsej0wLE49RC5sZW5ndGg7ejxOO3orKykhRSYmeiBpbiBEfHwoRXx8KEU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoRCwwLHopKSxFW3pdPURbel0pO3JldHVybiBHLmNv''@;'; put 'put ''bmNhdChFfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChEKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmRpZmY9dm9pZCAwLE8uZGlmZj1mdW5jdGlvbihHLEQpe3ZhciBUPUcuZmlsdGVyKGZ1bmN0aW9uKHope3JldHVybiJvYmplY3Qi''@;'; put 'put ''PT10eXBlb2Ygej8hSlNPTi5zdHJpbmdpZnkoRCkuaW5jbHVkZXMoSlNPTi5zdHJpbmdpZnkoeikpOiFELmluY2x1ZGVzKHopfSksRT1ELmZpbHRlcihmdW5jdGlvbih6KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHo/IUpTT04uc3RyaW5naWZ5KEcpLmluY2x1ZGVzKEpTT04uc3RyaW5naWZ5''@;'; put 'put ''KHopKTohRy5pbmNsdWRlcyh6KX0pO3JldHVybiBqKGooW10sSShUKSwhMSksSShFKSwhMSl9fSwxNTI5OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmdldEV4ZWN1dG9yUGF0aD12b2lkIDA7dmFyIEk9e1NB''@;'; put 'put ''U1ZJWUE6Ii9TQVNKb2JFeGVjdXRpb24iLFNBUzk6Ii9TQVNTdG9yZWRQcm9jZXNzL2RvIn07Ty5nZXRFeGVjdXRvclBhdGg9ZnVuY3Rpb24oail7cmV0dXJuIGo/KGo9ai50b1VwcGVyQ2FzZSgpLElbal18fCIiKToiIn19LDMzMTY6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZXRUcmVlRXhhbXBsZT1PLmlzRmlsZVRyZWU9dm9pZCAwO3ZhciBqPUkoMzkwMCk7Ty5pc0ZpbGVUcmVlPWZ1bmN0aW9uKEUpe3JldHVybiBFJiZFLm1lbWJlcnMmJkFycmF5LmlzQXJyYXkoRS5tZW1iZXJzKSYmMD09''@;'; put 'put ''PUUubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIUcoeikmJiFEKHopJiYhVCh6KX0pLmxlbmd0aH07dmFyIEc9ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJiJzdHJpbmciPT10eXBlb2YgRS5uYW1lJiZFLnR5cGU9PT1qLk1lbWJlclR5cGUuc2VydmljZSYmInN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBFLmNvZGV9LEQ9ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJiJzdHJpbmciPT10eXBlb2YgRS5uYW1lJiZFLnR5cGU9PT1qLk1lbWJlclR5cGUuZmlsZSYmInN0cmluZyI9PXR5cGVvZiBFLmNvZGV9LFQ9ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJiJzdHJpbmciPT10eXBlb2YgRS5uYW1lJiZFLnR5''@;'; put 'put ''cGU9PT1qLk1lbWJlclR5cGUuZm9sZGVyJiZFLm1lbWJlcnMmJkFycmF5LmlzQXJyYXkoRS5tZW1iZXJzKSYmMD09PUUubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIUcoeikmJiFEKHopJiYhVCh6KX0pLmxlbmd0aH07Ty5nZXRUcmVlRXhhbXBsZT1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''bnttZW1iZXJzOlt7bmFtZToiam9icyIsdHlwZTpqLk1lbWJlclR5cGUuZm9sZGVyLG1lbWJlcnM6W3tuYW1lOiJleHRyYWN0Iix0eXBlOmouTWVtYmVyVHlwZS5mb2xkZXIsbWVtYmVyczpbe25hbWU6Im1ha2VkYXRhMSIsdHlwZTpqLk1lbWJlclR5cGUuc2VydmljZSxjb2RlOiIlcHV0IEhl''@;'; put 'put ''bGxvIFdvcmxkITsifV19XX1dfX19LDYyNjY6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oWSxVLHEsSil7dm9pZCAwPT09SiYmKEo9cSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFks''@;'; put 'put ''Six7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVVtxXX19KX06ZnVuY3Rpb24oWSxVLHEsSil7dm9pZCAwPT09SiYmKEo9cSksWVtKXT1VW3FdfSksRz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oWSxVKXtmb3IodmFyIHEgaW4gWSkiZGVmYXVsdCI9PT1x''@;'; put 'put ''fHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVSxxKXx8aihVLFkscSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmNodW5rPU8uZGlmZj1PLmJ5dGVzVG9TaXplPU8uZ2V0RXhlY3V0b3JQYXRoPU8uZGVjb2RlRnJvbUJh''@;'; put 'put ''c2U2ND1PLmVuY29kZVRvQmFzZTY0PU8udXJsT3JpZ2luPU8uZ2VuZXJhdGVQYXRoRm9yU2FzPU8uZ2V0TWFjcm9zUGF0aD1PLmVzY2FwZVdpblNsYXNoZXM9Ty5pc0xpbnV4PU8uaXNXaW5kb3dzPU8udW5pcUFycmF5PU8uYXN5bmNGb3JFYWNoPU8udXVpZHY0PXZvaWQgMDt2YXIgRD1JKDEx''@;'; put 'put ''MzEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJ1dWlkdjQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBELnV1aWR2NH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiYXN5bmNGb3JFYWNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5h''@;'; put 'put ''c3luY0ZvckVhY2h9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sInVuaXFBcnJheSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQudW5pcUFycmF5fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJpc1dpbmRvd3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBELmlzV2luZG93c319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiaXNMaW51eCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuaXNMaW51eH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiZXNjYXBlV2luU2xhc2hlcyIse2VudW1lcmFibGU6''@;'; put 'put ''ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuZXNjYXBlV2luU2xhc2hlc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiZ2V0TWFjcm9zUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEQuZ2V0TWFjcm9zUGF0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''TywiZ2VuZXJhdGVQYXRoRm9yU2FzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRC5nZW5lcmF0ZVBhdGhGb3JTYXN9fSksRyhJKDMzMTYpLE8pO3ZhciBUPUkoOTY1Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sInVybE9yaWdpbiIse2VudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIFQudXJsT3JpZ2lufX0pO3ZhciBFPUkoMjkyNyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImVuY29kZVRvQmFzZTY0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRS5lbmNvZGVUb0Jhc2U2NH19KSxPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTywiZGVjb2RlRnJvbUJhc2U2NCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUuZGVjb2RlRnJvbUJhc2U2NH19KTt2YXIgej1JKDE1MjkpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJnZXRFeGVjdXRvclBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB6LmdldEV4ZWN1dG9yUGF0aH19KTt2YXIgTj1JKDU4MSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImJ5dGVzVG9TaXplIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTi5ieXRlc1RvU2l6ZX19KTt2YXIgQj1JKDY0NTcpO09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShPLCJkaWZmIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQi5kaWZmfX0pO3ZhciBaPUkoODY1Myk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sImNodW5rIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWi5jaHVua319KX0sOTY1Mjoo''@;'; put 'put ''TSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy51cmxPcmlnaW49dm9pZCAwLE8udXJsT3JpZ2luPWZ1bmN0aW9uKEkpe2lmKCIiPT09SSlyZXR1cm4gSTt2YXIgajt0cnl7aj1uZXcgVVJMKEkpLm9yaWdpbn1jYXRj''@;'; put 'put ''aHt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMLiIpfXJldHVybiBqfX0sMTEzMTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oeixOLEIsWil7cmV0dXJuIG5ldyhCfHwoQj1Qcm9taXNlKSkoZnVu''@;'; put 'put ''Y3Rpb24oWSxVKXtmdW5jdGlvbiBxKHJlKXt0cnl7ZWUoWi5uZXh0KHJlKSl9Y2F0Y2goaWUpe1UoaWUpfX1mdW5jdGlvbiBKKHJlKXt0cnl7ZWUoWi50aHJvdyhyZSkpfWNhdGNoKGllKXtVKGllKX19ZnVuY3Rpb24gZWUocmUpe3ZhciBpZTtyZS5kb25lP1kocmUudmFsdWUpOihpZT1yZS52''@;'; put 'put ''YWx1ZSxpZSBpbnN0YW5jZW9mIEI/aWU6bmV3IEIoZnVuY3Rpb24odWUpe3VlKGllKX0pKS50aGVuKHEsSil9ZWUoKFo9Wi5hcHBseSh6LE58fFtdKSkubmV4dCgpKX0pfSxEPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHosTil7dmFyIEIsWixZLFUscT17bGFiZWw6MCxzZW50''@;'; put 'put ''OmZ1bmN0aW9uKCl7aWYoMSZZWzBdKXRocm93IFlbMV07cmV0dXJuIFlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVT17bmV4dDpKKDApLHRocm93OkooMSkscmV0dXJuOkooMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihVW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gdGhpc30pLFU7ZnVuY3Rpb24gSihlZSl7cmV0dXJuIGZ1bmN0aW9uKHJlKXtyZXR1cm4gZnVuY3Rpb24oaWUpe2lmKEIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cTspdHJ5e2lmKEI9MSxaJiYoWT0yJmllWzBdP1ou''@;'; put 'put ''cmV0dXJuOmllWzBdP1oudGhyb3d8fCgoWT1aLnJldHVybikmJlkuY2FsbChaKSwwKTpaLm5leHQpJiYhKFk9WS5jYWxsKFosaWVbMV0pKS5kb25lKXJldHVybiBZO3N3aXRjaChaPTAsWSYmKGllPVsyJmllWzBdLFkudmFsdWVdKSxpZVswXSl7Y2FzZSAwOmNhc2UgMTpZPWllO2JyZWFrO2Nh''@;'; put 'put ''c2UgNDpyZXR1cm4gcS5sYWJlbCsrLHt2YWx1ZTppZVsxXSxkb25lOiExfTtjYXNlIDU6cS5sYWJlbCsrLFo9aWVbMV0saWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzppZT1xLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChZPShZPXEudHJ5cykubGVuZ3RoPjAm''@;'; put 'put ''JllbWS5sZW5ndGgtMV0pfHw2IT09aWVbMF0mJjIhPT1pZVswXSkpe3E9MDtjb250aW51ZX1pZigzPT09aWVbMF0mJighWXx8aWVbMV0+WVswXSYmaWVbMV08WVszXSkpe3EubGFiZWw9aWVbMV07YnJlYWt9aWYoNj09PWllWzBdJiZxLmxhYmVsPFlbMV0pe3EubGFiZWw9WVsxXSxZPWllO2Jy''@;'; put 'put ''ZWFrfWlmKFkmJnEubGFiZWw8WVsyXSl7cS5sYWJlbD1ZWzJdLHEub3BzLnB1c2goaWUpO2JyZWFrfVlbMl0mJnEub3BzLnBvcCgpLHEudHJ5cy5wb3AoKTtjb250aW51ZX1pZT1OLmNhbGwoeixxKX1jYXRjaCh1ZSl7aWU9WzYsdWVdLFo9MH1maW5hbGx5e0I9WT0wfWlmKDUmaWVbMF0pdGhy''@;'; put 'put ''b3cgaWVbMV07cmV0dXJue3ZhbHVlOmllWzBdP2llWzFdOnZvaWQgMCxkb25lOiEwfX0oW2VlLHJlXSl9fX0sVD10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oeil7cmV0dXJuIHomJnouX19lc01vZHVsZT96OntkZWZhdWx0Onp9fTtPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''TywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZW5lcmF0ZVBhdGhGb3JTYXM9Ty5nZXRNYWNyb3NQYXRoPU8uZXNjYXBlV2luU2xhc2hlcz1PLmlzTGludXg9Ty5pc1dpbmRvd3M9Ty51bmlxQXJyYXk9Ty51dWlkdjQ9Ty5hc3luY0ZvckVhY2g9dm9pZCAwO3ZhciBFPVQoSSgyNTIwKSk7''@;'; put 'put ''Ty5hc3luY0ZvckVhY2g9ZnVuY3Rpb24oeixOKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQjtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKFope3N3aXRjaChaLmxhYmVsKXtjYXNlIDA6Qj0wLFoubGFiZWw9MTtjYXNlIDE6cmV0dXJuIEI8ei5sZW5ndGg/WzQs''@;'; put 'put ''Tih6W0JdLEIseildOlszLDRdO2Nhc2UgMjpaLnNlbnQoKSxaLmxhYmVsPTM7Y2FzZSAzOnJldHVybiBCKyssWzMsMV07Y2FzZSA0OnJldHVyblsyXX19KX0pfSxPLnV1aWR2ND1mdW5jdGlvbigpe3JldHVybiJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2Uo''@;'; put 'put ''L1t4eV0vZyxmdW5jdGlvbih6KXt2YXIgTj0xNipNYXRoLnJhbmRvbSgpfDA7cmV0dXJuKCJ4Ij09ej9OOjMmTnw4KS50b1N0cmluZygxNil9KX0sTy51bmlxQXJyYXk9ZnVuY3Rpb24oeil7cmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh6KSl9LE8uaXNXaW5kb3dzPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIndpbjMyIj09PWoucGxhdGZvcm19LE8uaXNMaW51eD1mdW5jdGlvbigpe3JldHVybiJsaW51eCI9PT1qLnBsYXRmb3JtfSxPLmVzY2FwZVdpblNsYXNoZXM9ZnVuY3Rpb24oeil7cmV0dXJuKDAsTy5pc1dpbmRvd3MpKCk/ei5yZXBsYWNlKC9cXC9nLCJcXFxcIik6en0sTy5nZXRNYWNy''@;'; put 'put ''b3NQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIEUuZGVmYXVsdC5qb2luKCIvIiwiLi4iLCJtYWNyb3MiKX0sTy5nZW5lcmF0ZVBhdGhGb3JTYXM9ZnVuY3Rpb24oeil7cmV0dXJuIHoucmVwbGFjZSgvXFwvZywiLyIpfX0sOTgwOTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9TztqLmJp''@;'; put 'put ''Z251bT1JKDQ1OTApLGouZGVmaW5lPUkoMjUwMCkuZGVmaW5lLGouYmFzZT1JKDE5NzkpLGouY29uc3RhbnRzPUkoNjgyNiksai5kZWNvZGVycz1JKDgzMDcpLGouZW5jb2RlcnM9SSg2NTc5KX0sMjUwMDooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg2NTc5KSxHPUkoODMwNyks''@;'; put 'put ''RD1JKDU3MTcpO2Z1bmN0aW9uIFQoRSx6KXt0aGlzLm5hbWU9RSx0aGlzLmJvZHk9eix0aGlzLmRlY29kZXJzPXt9LHRoaXMuZW5jb2RlcnM9e319Ty5kZWZpbmU9ZnVuY3Rpb24oRSx6KXtyZXR1cm4gbmV3IFQoRSx6KX0sVC5wcm90b3R5cGUuX2NyZWF0ZU5hbWVkPWZ1bmN0aW9uKEUpe2Nv''@;'; put 'put ''bnN0IHo9dGhpcy5uYW1lO2Z1bmN0aW9uIE4oQil7dGhpcy5faW5pdE5hbWVkKEIseil9cmV0dXJuIEQoTixFKSxOLnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uKEIsWil7RS5jYWxsKHRoaXMsQixaKX0sbmV3IE4odGhpcyl9LFQucHJvdG90eXBlLl9nZXREZWNvZGVyPWZ1bmN0aW9u''@;'; put 'put ''KEUpe3JldHVybiB0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KEU9RXx8ImRlciIpfHwodGhpcy5kZWNvZGVyc1tFXT10aGlzLl9jcmVhdGVOYW1lZChHW0VdKSksdGhpcy5kZWNvZGVyc1tFXX0sVC5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKEUseixOKXtyZXR1cm4gdGhpcy5fZ2V0''@;'; put 'put ''RGVjb2Rlcih6KS5kZWNvZGUoRSxOKX0sVC5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoRT1FfHwiZGVyIil8fCh0aGlzLmVuY29kZXJzW0VdPXRoaXMuX2NyZWF0ZU5hbWVkKGpbRV0pKSx0aGlzLmVuY29kZXJz''@;'; put 'put ''W0VdfSxULnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oRSx6LE4pe3JldHVybiB0aGlzLl9nZXRFbmNvZGVyKHopLmVuY29kZShFLE4pfX0sNjYyNTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg1NzE3KSxHPUkoODQ2NSkuYixEPUkoMjM5OSkuQnVmZmVyO2Z1bmN0aW9uIFQo''@;'; put 'put ''eixOKXtHLmNhbGwodGhpcyxOKSxELmlzQnVmZmVyKHopPyh0aGlzLmJhc2U9eix0aGlzLm9mZnNldD0wLHRoaXMubGVuZ3RoPXoubGVuZ3RoKTp0aGlzLmVycm9yKCJJbnB1dCBub3QgQnVmZmVyIil9ZnVuY3Rpb24gRSh6LE4pe2lmKEFycmF5LmlzQXJyYXkoeikpdGhpcy5sZW5ndGg9MCx0''@;'; put 'put ''aGlzLnZhbHVlPXoubWFwKGZ1bmN0aW9uKEIpe3JldHVybiBFLmlzRW5jb2RlckJ1ZmZlcihCKXx8KEI9bmV3IEUoQixOKSksdGhpcy5sZW5ndGgrPUIubGVuZ3RoLEJ9LHRoaXMpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB6KXtpZighKDA8PXomJno8PTI1NSkpcmV0dXJuIE4uZXJyb3Io''@;'; put 'put ''Im5vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUiKTt0aGlzLnZhbHVlPXosdGhpcy5sZW5ndGg9MX1lbHNlIGlmKCJzdHJpbmciPT10eXBlb2Ygeil0aGlzLnZhbHVlPXosdGhpcy5sZW5ndGg9RC5ieXRlTGVuZ3RoKHopO2Vsc2V7aWYoIUQuaXNCdWZmZXIoeikpcmV0dXJuIE4uZXJyb3Io''@;'; put 'put ''IlVuc3VwcG9ydGVkIHR5cGU6ICIrdHlwZW9mIHopO3RoaXMudmFsdWU9eix0aGlzLmxlbmd0aD16Lmxlbmd0aH19aihULEcpLE8uQz1ULFQuaXNEZWNvZGVyQnVmZmVyPWZ1bmN0aW9uKHope3JldHVybiB6IGluc3RhbmNlb2YgVHx8Im9iamVjdCI9PXR5cGVvZiB6JiZELmlzQnVmZmVyKHou''@;'; put 'put ''YmFzZSkmJiJEZWNvZGVyQnVmZmVyIj09PXouY29uc3RydWN0b3IubmFtZSYmIm51bWJlciI9PXR5cGVvZiB6Lm9mZnNldCYmIm51bWJlciI9PXR5cGVvZiB6Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHouc2F2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHoucmVzdG9yZSYmImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIHouaXNFbXB0eSYmImZ1bmN0aW9uIj09dHlwZW9mIHoucmVhZFVJbnQ4JiYiZnVuY3Rpb24iPT10eXBlb2Ygei5za2lwJiYiZnVuY3Rpb24iPT10eXBlb2Ygei5yYXd9LFQucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57b2Zmc2V0OnRoaXMub2Zmc2V0LHJlcG9y''@;'; put 'put ''dGVyOkcucHJvdG90eXBlLnNhdmUuY2FsbCh0aGlzKX19LFQucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oeil7Y29uc3QgTj1uZXcgVCh0aGlzLmJhc2UpO3JldHVybiBOLm9mZnNldD16Lm9mZnNldCxOLmxlbmd0aD10aGlzLm9mZnNldCx0aGlzLm9mZnNldD16Lm9mZnNldCxHLnByb3Rv''@;'; put 'put ''dHlwZS5yZXN0b3JlLmNhbGwodGhpcyx6LnJlcG9ydGVyKSxOfSxULnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0PT09dGhpcy5sZW5ndGh9LFQucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbih6KXtyZXR1cm4gdGhpcy5vZmZzZXQrMTw9dGhpcy5s''@;'; put 'put ''ZW5ndGg/dGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCEwKTp0aGlzLmVycm9yKHp8fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4iKX0sVC5wcm90b3R5cGUuc2tpcD1mdW5jdGlvbih6LE4pe2lmKCEodGhpcy5vZmZzZXQrejw9dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzLmVycm9y''@;'; put 'put ''KE58fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4iKTtjb25zdCBCPW5ldyBUKHRoaXMuYmFzZSk7cmV0dXJuIEIuX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxCLm9mZnNldD10aGlzLm9mZnNldCxCLmxlbmd0aD10aGlzLm9mZnNldCt6LHRoaXMub2Zmc2V0Kz16LEJ9LFQucHJv''@;'; put 'put ''dG90eXBlLnJhdz1mdW5jdGlvbih6KXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHo/ei5vZmZzZXQ6dGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSxPLlI9RSxFLmlzRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbih6KXtyZXR1cm4geiBpbnN0YW5jZW9mIEV8fCJvYmplY3QiPT10eXBlb2YgeiYmIkVu''@;'; put 'put ''Y29kZXJCdWZmZXIiPT09ei5jb25zdHJ1Y3Rvci5uYW1lJiYibnVtYmVyIj09dHlwZW9mIHoubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2Ygei5qb2lufSxFLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHosTil7cmV0dXJuIHp8fCh6PUQuYWxsb2ModGhpcy5sZW5ndGgpKSxOfHwoTj0wKSww''@;'; put 'put ''PT09dGhpcy5sZW5ndGh8fChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpP3RoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihCKXtCLmpvaW4oeixOKSxOKz1CLmxlbmd0aH0pOigibnVtYmVyIj09dHlwZW9mIHRoaXMudmFsdWU/eltOXT10aGlzLnZhbHVlOiJzdHJpbmciPT10eXBlb2YgdGhp''@;'; put 'put ''cy52YWx1ZT96LndyaXRlKHRoaXMudmFsdWUsTik6RC5pc0J1ZmZlcih0aGlzLnZhbHVlKSYmdGhpcy52YWx1ZS5jb3B5KHosTiksTis9dGhpcy5sZW5ndGgpKSx6fX0sMTk3OTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9TztqLlJlcG9ydGVyPUkoODQ2NSkuYixqLkRlY29kZXJC''@;'; put 'put ''dWZmZXI9SSg2NjI1KS5DLGouRW5jb2RlckJ1ZmZlcj1JKDY2MjUpLlIsai5Ob2RlPUkoMTk0OSl9LDE5NDk6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBqPUkoODQ2NSkuYixHPUkoNjYyNSkuUixEPUkoNjYyNSkuQyxUPUkoOTc0NiksRT1bInNlcSIsInNlcW9mIiwic2V0Iiwic2V0''@;'; put 'put ''b2YiLCJvYmppZCIsImJvb2wiLCJnZW50aW1lIiwidXRjdGltZSIsIm51bGxfIiwiZW51bSIsImludCIsIm9iakRlc2MiLCJiaXRzdHIiLCJibXBzdHIiLCJjaGFyc3RyIiwiZ2Vuc3RyIiwiZ3JhcGhzdHIiLCJpYTVzdHIiLCJpc282NDZzdHIiLCJudW1zdHIiLCJvY3RzdHIiLCJwcmludHN0''@;'; put 'put ''ciIsInQ2MXN0ciIsInVuaXN0ciIsInV0ZjhzdHIiLCJ2aWRlb3N0ciJdLHo9WyJrZXkiLCJvYmoiLCJ1c2UiLCJvcHRpb25hbCIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJkZWYiLCJjaG9pY2UiLCJhbnkiLCJjb250YWlucyJdLmNvbmNhdChFKTtmdW5jdGlvbiBOKFosWSxVKXtjb25zdCBx''@;'; put 'put ''PXt9O3RoaXMuX2Jhc2VTdGF0ZT1xLHEubmFtZT1VLHEuZW5jPVoscS5wYXJlbnQ9WXx8bnVsbCxxLmNoaWxkcmVuPW51bGwscS50YWc9bnVsbCxxLmFyZ3M9bnVsbCxxLnJldmVyc2VBcmdzPW51bGwscS5jaG9pY2U9bnVsbCxxLm9wdGlvbmFsPSExLHEuYW55PSExLHEub2JqPSExLHEudXNl''@;'; put 'put ''PW51bGwscS51c2VEZWNvZGVyPW51bGwscS5rZXk9bnVsbCxxLmRlZmF1bHQ9bnVsbCxxLmV4cGxpY2l0PW51bGwscS5pbXBsaWNpdD1udWxsLHEuY29udGFpbnM9bnVsbCxxLnBhcmVudHx8KHEuY2hpbGRyZW49W10sdGhpcy5fd3JhcCgpKX1NLmV4cG9ydHM9Tjtjb25zdCBCPVsiZW5jIiwi''@;'; put 'put ''cGFyZW50IiwiY2hpbGRyZW4iLCJ0YWciLCJhcmdzIiwicmV2ZXJzZUFyZ3MiLCJjaG9pY2UiLCJvcHRpb25hbCIsImFueSIsIm9iaiIsInVzZSIsImFsdGVyZWRVc2UiLCJrZXkiLCJkZWZhdWx0IiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIl07Ti5wcm90b3R5cGUuY2xvbmU9''@;'; put 'put ''ZnVuY3Rpb24oKXtjb25zdCBaPXRoaXMuX2Jhc2VTdGF0ZSxZPXt9O0IuZm9yRWFjaChmdW5jdGlvbihxKXtZW3FdPVpbcV19KTtjb25zdCBVPW5ldyB0aGlzLmNvbnN0cnVjdG9yKFkucGFyZW50KTtyZXR1cm4gVS5fYmFzZVN0YXRlPVksVX0sTi5wcm90b3R5cGUuX3dyYXA9ZnVuY3Rpb24o''@;'; put 'put ''KXtjb25zdCBaPXRoaXMuX2Jhc2VTdGF0ZTt6LmZvckVhY2goZnVuY3Rpb24oWSl7dGhpc1tZXT1mdW5jdGlvbigpe2NvbnN0IFU9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIFouY2hpbGRyZW4ucHVzaChVKSxVW1ldLmFwcGx5KFUsYXJndW1lbnRzKX19LHRoaXMpfSxOLnBy''@;'; put 'put ''b3RvdHlwZS5faW5pdD1mdW5jdGlvbihaKXtjb25zdCBZPXRoaXMuX2Jhc2VTdGF0ZTtUKG51bGw9PT1ZLnBhcmVudCksWi5jYWxsKHRoaXMpLFkuY2hpbGRyZW49WS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oVSl7cmV0dXJuIFUuX2Jhc2VTdGF0ZS5wYXJlbnQ9PT10aGlzfSx0aGlzKSxU''@;'; put 'put ''LmVxdWFsKFkuY2hpbGRyZW4ubGVuZ3RoLDEsIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCIpfSxOLnByb3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbihaKXtjb25zdCBZPXRoaXMuX2Jhc2VTdGF0ZSxVPVouZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxIGluc3RhbmNlb2Yg''@;'; put 'put ''dGhpcy5jb25zdHJ1Y3Rvcn0sdGhpcyk7Wj1aLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4hKHEgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKX0sdGhpcyksMCE9PVUubGVuZ3RoJiYoVChudWxsPT09WS5jaGlsZHJlbiksWS5jaGlsZHJlbj1VLFUuZm9yRWFjaChmdW5jdGlvbihxKXtx''@;'; put 'put ''Ll9iYXNlU3RhdGUucGFyZW50PXRoaXN9LHRoaXMpKSwwIT09Wi5sZW5ndGgmJihUKG51bGw9PT1ZLmFyZ3MpLFkuYXJncz1aLFkucmV2ZXJzZUFyZ3M9Wi5tYXAoZnVuY3Rpb24ocSl7aWYoIm9iamVjdCIhPXR5cGVvZiBxfHxxLmNvbnN0cnVjdG9yIT09T2JqZWN0KXJldHVybiBxO2NvbnN0''@;'; put 'put ''IEo9e307cmV0dXJuIE9iamVjdC5rZXlzKHEpLmZvckVhY2goZnVuY3Rpb24oZWUpe2VlPT0oMHxlZSkmJihlZXw9MCksSltxW2VlXV09ZWV9KSxKfSkpfSxbIl9wZWVrVGFnIiwiX2RlY29kZVRhZyIsIl91c2UiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJf''@;'; put 'put ''ZGVjb2RlTnVsbCIsIl9kZWNvZGVJbnQiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVMaXN0IiwiX2VuY29kZUNvbXBvc2l0ZSIsIl9lbmNvZGVTdHIiLCJfZW5jb2RlT2JqaWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIl0uZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihaKXtOLnByb3RvdHlwZVtaXT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihaKyIgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogIit0aGlzLl9iYXNlU3RhdGUuZW5jKX19KSxFLmZvckVhY2goZnVuY3Rpb24oWil7Ti5wcm90b3R5cGVbWl09ZnVuY3Rpb24oKXtjb25z''@;'; put 'put ''dCBZPXRoaXMuX2Jhc2VTdGF0ZSxVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFQobnVsbD09PVkudGFnKSxZLnRhZz1aLHRoaXMuX3VzZUFyZ3MoVSksdGhpc319KSxOLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oWil7VChaKTtjb25zdCBZPXRoaXMuX2Jh''@;'; put 'put ''c2VTdGF0ZTtyZXR1cm4gVChudWxsPT09WS51c2UpLFkudXNlPVosdGhpc30sTi5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLm9wdGlvbmFsPSEwLHRoaXN9LE4ucHJvdG90eXBlLmRlZj1mdW5jdGlvbihaKXtjb25zdCBZPXRoaXMuX2Jhc2VT''@;'; put 'put ''dGF0ZTtyZXR1cm4gVChudWxsPT09WS5kZWZhdWx0KSxZLmRlZmF1bHQ9WixZLm9wdGlvbmFsPSEwLHRoaXN9LE4ucHJvdG90eXBlLmV4cGxpY2l0PWZ1bmN0aW9uKFope2NvbnN0IFk9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBUKG51bGw9PT1ZLmV4cGxpY2l0JiZudWxsPT09WS5pbXBsaWNp''@;'; put 'put ''dCksWS5leHBsaWNpdD1aLHRoaXN9LE4ucHJvdG90eXBlLmltcGxpY2l0PWZ1bmN0aW9uKFope2NvbnN0IFk9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBUKG51bGw9PT1ZLmV4cGxpY2l0JiZudWxsPT09WS5pbXBsaWNpdCksWS5pbXBsaWNpdD1aLHRoaXN9LE4ucHJvdG90eXBlLm9iaj1mdW5j''@;'; put 'put ''dGlvbigpe2NvbnN0IFo9dGhpcy5fYmFzZVN0YXRlLFk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gWi5vYmo9ITAsMCE9PVkubGVuZ3RoJiZ0aGlzLl91c2VBcmdzKFkpLHRoaXN9LE4ucHJvdG90eXBlLmtleT1mdW5jdGlvbihaKXtjb25zdCBZPXRoaXMu''@;'; put 'put ''X2Jhc2VTdGF0ZTtyZXR1cm4gVChudWxsPT09WS5rZXkpLFkua2V5PVosdGhpc30sTi5wcm90b3R5cGUuYW55PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5hbnk9ITAsdGhpc30sTi5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKFope2NvbnN0IFk9dGhpcy5fYmFzZVN0YXRl''@;'; put 'put ''O3JldHVybiBUKG51bGw9PT1ZLmNob2ljZSksWS5jaG9pY2U9Wix0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKFopLm1hcChmdW5jdGlvbihVKXtyZXR1cm4gWltVXX0pKSx0aGlzfSxOLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihaKXtjb25zdCBZPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1''@;'; put 'put ''cm4gVChudWxsPT09WS51c2UpLFkuY29udGFpbnM9Wix0aGlzfSxOLnByb3RvdHlwZS5fZGVjb2RlPWZ1bmN0aW9uKFosWSl7Y29uc3QgVT10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PVUucGFyZW50KXJldHVybiBaLndyYXBSZXN1bHQoVS5jaGlsZHJlblswXS5fZGVjb2RlKFosWSkpO2xl''@;'; put 'put ''dCBxLEo9VS5kZWZhdWx0LGVlPSEwLHJlPW51bGw7aWYobnVsbCE9PVUua2V5JiYocmU9Wi5lbnRlcktleShVLmtleSkpLFUub3B0aW9uYWwpe2xldCBpZT1udWxsO2lmKG51bGwhPT1VLmV4cGxpY2l0P2llPVUuZXhwbGljaXQ6bnVsbCE9PVUuaW1wbGljaXQ/aWU9VS5pbXBsaWNpdDpudWxs''@;'; put 'put ''IT09VS50YWcmJihpZT1VLnRhZyksbnVsbCE9PWllfHxVLmFueSl7aWYoZWU9dGhpcy5fcGVla1RhZyhaLGllLFUuYW55KSxaLmlzRXJyb3IoZWUpKXJldHVybiBlZX1lbHNle2NvbnN0IHVlPVouc2F2ZSgpO3RyeXtudWxsPT09VS5jaG9pY2U/dGhpcy5fZGVjb2RlR2VuZXJpYyhVLnRhZyxa''@;'; put 'put ''LFkpOnRoaXMuX2RlY29kZUNob2ljZShaLFkpLGVlPSEwfWNhdGNoe2VlPSExfVoucmVzdG9yZSh1ZSl9fWlmKFUub2JqJiZlZSYmKHE9Wi5lbnRlck9iamVjdCgpKSxlZSl7aWYobnVsbCE9PVUuZXhwbGljaXQpe2NvbnN0IHVlPXRoaXMuX2RlY29kZVRhZyhaLFUuZXhwbGljaXQpO2lmKFou''@;'; put 'put ''aXNFcnJvcih1ZSkpcmV0dXJuIHVlO1o9dWV9Y29uc3QgaWU9Wi5vZmZzZXQ7aWYobnVsbD09PVUudXNlJiZudWxsPT09VS5jaG9pY2Upe2xldCB1ZTtVLmFueSYmKHVlPVouc2F2ZSgpKTtjb25zdCBsZT10aGlzLl9kZWNvZGVUYWcoWixudWxsIT09VS5pbXBsaWNpdD9VLmltcGxpY2l0OlUu''@;'; put 'put ''dGFnLFUuYW55KTtpZihaLmlzRXJyb3IobGUpKXJldHVybiBsZTtVLmFueT9KPVoucmF3KHVlKTpaPWxlfWlmKFkmJlkudHJhY2smJm51bGwhPT1VLnRhZyYmWS50cmFjayhaLnBhdGgoKSxpZSxaLmxlbmd0aCwidGFnZ2VkIiksWSYmWS50cmFjayYmbnVsbCE9PVUudGFnJiZZLnRyYWNrKFou''@;'; put 'put ''cGF0aCgpLFoub2Zmc2V0LFoubGVuZ3RoLCJjb250ZW50IiksVS5hbnl8fChKPW51bGw9PT1VLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKFUudGFnLFosWSk6dGhpcy5fZGVjb2RlQ2hvaWNlKFosWSkpLFouaXNFcnJvcihKKSlyZXR1cm4gSjtpZihVLmFueXx8bnVsbCE9PVUuY2hvaWNl''@;'; put 'put ''fHxudWxsPT09VS5jaGlsZHJlbnx8VS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKHVlKXt1ZS5fZGVjb2RlKFosWSl9KSxVLmNvbnRhaW5zJiYoIm9jdHN0ciI9PT1VLnRhZ3x8ImJpdHN0ciI9PT1VLnRhZykpe2NvbnN0IHVlPW5ldyBEKEopO0o9dGhpcy5fZ2V0VXNlKFUuY29udGFpbnMs''@;'; put 'put ''Wi5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUodWUsWSl9fXJldHVybiBVLm9iaiYmZWUmJihKPVoubGVhdmVPYmplY3QocSkpLG51bGw9PT1VLmtleXx8bnVsbD09PUomJiEwIT09ZWU/bnVsbCE9PXJlJiZaLmV4aXRLZXkocmUpOloubGVhdmVLZXkocmUsVS5rZXksSiksSn0sTi5wcm90''@;'; put 'put ''b3R5cGUuX2RlY29kZUdlbmVyaWM9ZnVuY3Rpb24oWixZLFUpe2NvbnN0IHE9dGhpcy5fYmFzZVN0YXRlO3JldHVybiJzZXEiPT09Wnx8InNldCI9PT1aP251bGw6InNlcW9mIj09PVp8fCJzZXRvZiI9PT1aP3RoaXMuX2RlY29kZUxpc3QoWSxaLHEuYXJnc1swXSxVKTovc3RyJC8udGVzdCha''@;'; put 'put ''KT90aGlzLl9kZWNvZGVTdHIoWSxaLFUpOiJvYmppZCI9PT1aJiZxLmFyZ3M/dGhpcy5fZGVjb2RlT2JqaWQoWSxxLmFyZ3NbMF0scS5hcmdzWzFdLFUpOiJvYmppZCI9PT1aP3RoaXMuX2RlY29kZU9iamlkKFksbnVsbCxudWxsLFUpOiJnZW50aW1lIj09PVp8fCJ1dGN0aW1lIj09PVo/dGhp''@;'; put 'put ''cy5fZGVjb2RlVGltZShZLFosVSk6Im51bGxfIj09PVo/dGhpcy5fZGVjb2RlTnVsbChZLFUpOiJib29sIj09PVo/dGhpcy5fZGVjb2RlQm9vbChZLFUpOiJvYmpEZXNjIj09PVo/dGhpcy5fZGVjb2RlU3RyKFksWixVKToiaW50Ij09PVp8fCJlbnVtIj09PVo/dGhpcy5fZGVjb2RlSW50KFks''@;'; put 'put ''cS5hcmdzJiZxLmFyZ3NbMF0sVSk6bnVsbCE9PXEudXNlP3RoaXMuX2dldFVzZShxLnVzZSxZLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShZLFUpOlkuZXJyb3IoInVua25vd24gdGFnOiAiK1opfSxOLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKFosWSl7Y29uc3QgVT10aGlzLl9i''@;'; put 'put ''YXNlU3RhdGU7cmV0dXJuIFUudXNlRGVjb2Rlcj10aGlzLl91c2UoWixZKSxUKG51bGw9PT1VLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQpLFUudXNlRGVjb2Rlcj1VLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXSxVLmltcGxpY2l0IT09VS51c2VEZWNvZGVyLl9iYXNl''@;'; put 'put ''U3RhdGUuaW1wbGljaXQmJihVLnVzZURlY29kZXI9VS51c2VEZWNvZGVyLmNsb25lKCksVS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9VS5pbXBsaWNpdCksVS51c2VEZWNvZGVyfSxOLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlPWZ1bmN0aW9uKFosWSl7Y29uc3QgVT10aGlzLl9i''@;'; put 'put ''YXNlU3RhdGU7bGV0IHE9bnVsbCxKPSExO3JldHVybiBPYmplY3Qua2V5cyhVLmNob2ljZSkuc29tZShmdW5jdGlvbihlZSl7Y29uc3QgcmU9Wi5zYXZlKCksaWU9VS5jaG9pY2VbZWVdO3RyeXtjb25zdCB1ZT1pZS5fZGVjb2RlKFosWSk7aWYoWi5pc0Vycm9yKHVlKSlyZXR1cm4hMTtxPXt0''@;'; put 'put ''eXBlOmVlLHZhbHVlOnVlfSxKPSEwfWNhdGNoe3JldHVybiBaLnJlc3RvcmUocmUpLCExfXJldHVybiEwfSx0aGlzKSxKP3E6Wi5lcnJvcigiQ2hvaWNlIG5vdCBtYXRjaGVkIil9LE4ucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKFope3JldHVybiBuZXcgRyhaLHRo''@;'; put 'put ''aXMucmVwb3J0ZXIpfSxOLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKFosWSxVKXtjb25zdCBxPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsIT09cS5kZWZhdWx0JiZxLmRlZmF1bHQ9PT1aKXJldHVybjtjb25zdCBKPXRoaXMuX2VuY29kZVZhbHVlKFosWSxVKTtyZXR1cm4gdm9pZCAwPT09''@;'; put 'put ''Snx8dGhpcy5fc2tpcERlZmF1bHQoSixZLFUpP3ZvaWQgMDpKfSxOLnByb3RvdHlwZS5fZW5jb2RlVmFsdWU9ZnVuY3Rpb24oWixZLFUpe2NvbnN0IHE9dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1xLnBhcmVudClyZXR1cm4gcS5jaGlsZHJlblswXS5fZW5jb2RlKFosWXx8bmV3IGopO2xl''@;'; put 'put ''dCBKPW51bGw7aWYodGhpcy5yZXBvcnRlcj1ZLHEub3B0aW9uYWwmJnZvaWQgMD09PVope2lmKG51bGw9PT1xLmRlZmF1bHQpcmV0dXJuO1o9cS5kZWZhdWx0fWxldCBlZT1udWxsLHJlPSExO2lmKHEuYW55KUo9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihaKTtlbHNlIGlmKHEuY2hvaWNl''@;'; put 'put ''KUo9dGhpcy5fZW5jb2RlQ2hvaWNlKFosWSk7ZWxzZSBpZihxLmNvbnRhaW5zKWVlPXRoaXMuX2dldFVzZShxLmNvbnRhaW5zLFUpLl9lbmNvZGUoWixZKSxyZT0hMDtlbHNlIGlmKHEuY2hpbGRyZW4pZWU9cS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oaWUpe2lmKCJudWxsXyI9PT1pZS5fYmFz''@;'; put 'put ''ZVN0YXRlLnRhZylyZXR1cm4gaWUuX2VuY29kZShudWxsLFksWik7aWYobnVsbD09PWllLl9iYXNlU3RhdGUua2V5KXJldHVybiBZLmVycm9yKCJDaGlsZCBzaG91bGQgaGF2ZSBhIGtleSIpO2NvbnN0IHVlPVkuZW50ZXJLZXkoaWUuX2Jhc2VTdGF0ZS5rZXkpO2lmKCJvYmplY3QiIT10eXBl''@;'; put 'put ''b2YgWilyZXR1cm4gWS5lcnJvcigiQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Iik7Y29uc3QgbGU9aWUuX2VuY29kZShaW2llLl9iYXNlU3RhdGUua2V5XSxZLFopO3JldHVybiBZLmxlYXZlS2V5KHVlKSxsZX0sdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGllKXtyZXR1''@;'; put 'put ''cm4gaWV9KSxlZT10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGVlKTtlbHNlIGlmKCJzZXFvZiI9PT1xLnRhZ3x8InNldG9mIj09PXEudGFnKXtpZighcS5hcmdzfHwxIT09cS5hcmdzLmxlbmd0aClyZXR1cm4gWS5lcnJvcigiVG9vIG1hbnkgYXJncyBmb3IgOiAiK3EudGFnKTtpZighQXJy''@;'; put 'put ''YXkuaXNBcnJheShaKSlyZXR1cm4gWS5lcnJvcigic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheSIpO2NvbnN0IGllPXRoaXMuY2xvbmUoKTtpZS5fYmFzZVN0YXRlLmltcGxpY2l0PW51bGwsZWU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihaLm1hcChmdW5jdGlvbih1ZSl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2dldFVzZSh0aGlzLl9iYXNlU3RhdGUuYXJnc1swXSxaKS5fZW5jb2RlKHVlLFkpfSxpZSkpfWVsc2UgbnVsbCE9PXEudXNlP0o9dGhpcy5fZ2V0VXNlKHEudXNlLFUpLl9lbmNvZGUoWixZKTooZWU9dGhpcy5fZW5jb2RlUHJpbWl0aXZlKHEudGFnLFopLHJlPSEwKTtp''@;'; put 'put ''ZighcS5hbnkmJm51bGw9PT1xLmNob2ljZSl7Y29uc3QgaWU9bnVsbCE9PXEuaW1wbGljaXQ/cS5pbXBsaWNpdDpxLnRhZyx1ZT1udWxsPT09cS5pbXBsaWNpdD8idW5pdmVyc2FsIjoiY29udGV4dCI7bnVsbD09PWllP251bGw9PT1xLnVzZSYmWS5lcnJvcigiVGFnIGNvdWxkIGJlIG9taXR0''@;'; put 'put ''ZWQgb25seSBmb3IgLnVzZSgpIik6bnVsbD09PXEudXNlJiYoSj10aGlzLl9lbmNvZGVDb21wb3NpdGUoaWUscmUsdWUsZWUpKX1yZXR1cm4gbnVsbCE9PXEuZXhwbGljaXQmJihKPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShxLmV4cGxpY2l0LCExLCJjb250ZXh0IixKKSksSn0sTi5wcm90b3R5''@;'; put 'put ''cGUuX2VuY29kZUNob2ljZT1mdW5jdGlvbihaLFkpe2NvbnN0IFU9dGhpcy5fYmFzZVN0YXRlLHE9VS5jaG9pY2VbWi50eXBlXTtyZXR1cm4gcXx8VCghMSxaLnR5cGUrIiBub3QgZm91bmQgaW4gIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhVLmNob2ljZSkpKSxxLl9lbmNvZGUoWi52''@;'; put 'put ''YWx1ZSxZKX0sTi5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZT1mdW5jdGlvbihaLFkpe2NvbnN0IFU9dGhpcy5fYmFzZVN0YXRlO2lmKC9zdHIkLy50ZXN0KFopKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoWSxaKTtpZigib2JqaWQiPT09WiYmVS5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVP''@;'; put 'put ''YmppZChZLFUucmV2ZXJzZUFyZ3NbMF0sVS5hcmdzWzFdKTtpZigib2JqaWQiPT09WilyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoWSxudWxsLG51bGwpO2lmKCJnZW50aW1lIj09PVp8fCJ1dGN0aW1lIj09PVopcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoWSxaKTtpZigibnVsbF8iPT09Wily''@;'; put 'put ''ZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO2lmKCJpbnQiPT09Wnx8ImVudW0iPT09WilyZXR1cm4gdGhpcy5fZW5jb2RlSW50KFksVS5hcmdzJiZVLnJldmVyc2VBcmdzWzBdKTtpZigiYm9vbCI9PT1aKXJldHVybiB0aGlzLl9lbmNvZGVCb29sKFkpO2lmKCJvYmpEZXNjIj09PVopcmV0dXJu''@;'; put 'put ''IHRoaXMuX2VuY29kZVN0cihZLFopO3Rocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdGFnOiAiK1opfSxOLnByb3RvdHlwZS5faXNOdW1zdHI9ZnVuY3Rpb24oWil7cmV0dXJuL15bMC05IF0qJC8udGVzdChaKX0sTi5wcm90b3R5cGUuX2lzUHJpbnRzdHI9ZnVuY3Rpb24oWil7cmV0dXJu''@;'; put 'put ''L15bQS1aYS16MC05ICcoKSssLS4vOj0/XSokLy50ZXN0KFopfX0sODQ2NTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg1NzE3KTtmdW5jdGlvbiBHKFQpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczpUfHx7fSxlcnJvcnM6W119fWZ1bmN0''@;'; put 'put ''aW9uIEQoVCxFKXt0aGlzLnBhdGg9VCx0aGlzLnJldGhyb3coRSl9Ty5iPUcsRy5wcm90b3R5cGUuaXNFcnJvcj1mdW5jdGlvbihUKXtyZXR1cm4gVCBpbnN0YW5jZW9mIER9LEcucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtjb25zdCBUPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29i''@;'; put 'put ''ajpULm9iaixwYXRoTGVuOlQucGF0aC5sZW5ndGh9fSxHLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKFQpe2NvbnN0IEU9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtFLm9iaj1ULm9iaixFLnBhdGg9RS5wYXRoLnNsaWNlKDAsVC5wYXRoTGVuKX0sRy5wcm90b3R5cGUuZW50ZXJLZXk9ZnVuY3Rp''@;'; put 'put ''b24oVCl7cmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKFQpfSxHLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uKFQpe2NvbnN0IEU9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtFLnBhdGg9RS5wYXRoLnNsaWNlKDAsVC0xKX0sRy5wcm90b3R5cGUubGVhdmVLZXk9ZnVuY3Rpb24o''@;'; put 'put ''VCxFLHope2NvbnN0IE49dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0aGlzLmV4aXRLZXkoVCksbnVsbCE9PU4ub2JqJiYoTi5vYmpbRV09eil9LEcucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oIi8iKX0sRy5wcm90b3R5cGUuZW50''@;'; put 'put ''ZXJPYmplY3Q9ZnVuY3Rpb24oKXtjb25zdCBUPXRoaXMuX3JlcG9ydGVyU3RhdGUsRT1ULm9iajtyZXR1cm4gVC5vYmo9e30sRX0sRy5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24oVCl7Y29uc3QgRT10aGlzLl9yZXBvcnRlclN0YXRlLHo9RS5vYmo7cmV0dXJuIEUub2JqPVQsen0s''@;'; put 'put ''Ry5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oVCl7bGV0IEU7Y29uc3Qgej10aGlzLl9yZXBvcnRlclN0YXRlLE49VCBpbnN0YW5jZW9mIEQ7aWYoRT1OP1Q6bmV3IEQoei5wYXRoLm1hcChmdW5jdGlvbihCKXtyZXR1cm4iWyIrSlNPTi5zdHJpbmdpZnkoQikrIl0ifSkuam9pbigiIiksVC5t''@;'; put 'put ''ZXNzYWdlfHxULFQuc3RhY2spLCF6Lm9wdGlvbnMucGFydGlhbCl0aHJvdyBFO3JldHVybiBOfHx6LmVycm9ycy5wdXNoKEUpLEV9LEcucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24oVCl7Y29uc3QgRT10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybiBFLm9wdGlvbnMucGFydGlhbD97''@;'; put 'put ''cmVzdWx0OnRoaXMuaXNFcnJvcihUKT9udWxsOlQsZXJyb3JzOkUuZXJyb3JzfTpUfSxqKEQsRXJyb3IpLEQucHJvdG90eXBlLnJldGhyb3c9ZnVuY3Rpb24oVCl7aWYodGhpcy5tZXNzYWdlPVQrIiBhdDogIisodGhpcy5wYXRofHwiKHNoYWxsb3cpIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJh''@;'; put 'put ''Y2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsRCksIXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKEUpe3RoaXMuc3RhY2s9RS5zdGFja31yZXR1cm4gdGhpc319LDE2MDooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBJKGope2Nv''@;'; put 'put ''bnN0IEc9e307cmV0dXJuIE9iamVjdC5rZXlzKGopLmZvckVhY2goZnVuY3Rpb24oRCl7KDB8RCk9PUQmJihEfD0wKSxHW2pbRF1dPUR9KSxHfU8udGFnQ2xhc3M9ezA6InVuaXZlcnNhbCIsMToiYXBwbGljYXRpb24iLDI6ImNvbnRleHQiLDM6InByaXZhdGUifSxPLnRhZ0NsYXNzQnlOYW1l''@;'; put 'put ''PUkoTy50YWdDbGFzcyksTy50YWc9ezA6ImVuZCIsMToiYm9vbCIsMjoiaW50IiwzOiJiaXRzdHIiLDQ6Im9jdHN0ciIsNToibnVsbF8iLDY6Im9iamlkIiw3OiJvYmpEZXNjIiw4OiJleHRlcm5hbCIsOToicmVhbCIsMTA6ImVudW0iLDExOiJlbWJlZCIsMTI6InV0ZjhzdHIiLDEzOiJyZWxh''@;'; put 'put ''dGl2ZU9pZCIsMTY6InNlcSIsMTc6InNldCIsMTg6Im51bXN0ciIsMTk6InByaW50c3RyIiwyMDoidDYxc3RyIiwyMToidmlkZW9zdHIiLDIyOiJpYTVzdHIiLDIzOiJ1dGN0aW1lIiwyNDoiZ2VudGltZSIsMjU6ImdyYXBoc3RyIiwyNjoiaXNvNjQ2c3RyIiwyNzoiZ2Vuc3RyIiwyODoidW5p''@;'; put 'put ''c3RyIiwyOToiY2hhcnN0ciIsMzA6ImJtcHN0ciJ9LE8udGFnQnlOYW1lPUkoTy50YWcpfSw2ODI2OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1PO2ouX3JldmVyc2U9ZnVuY3Rpb24oRyl7Y29uc3QgRD17fTtyZXR1cm4gT2JqZWN0LmtleXMoRykuZm9yRWFjaChmdW5jdGlvbihU''@;'; put 'put ''KXsoMHxUKT09VCYmKFR8PTApLERbR1tUXV09VH0pLER9LGouZGVyPUkoMTYwKX0sMTY3MTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg1NzE3KSxHPUkoNDU5MCksRD1JKDY2MjUpLkMsVD1JKDE5NDkpLEU9SSgxNjApO2Z1bmN0aW9uIHooWSl7dGhpcy5lbmM9ImRlciIsdGhp''@;'; put 'put ''cy5uYW1lPVkubmFtZSx0aGlzLmVudGl0eT1ZLHRoaXMudHJlZT1uZXcgTix0aGlzLnRyZWUuX2luaXQoWS5ib2R5KX1mdW5jdGlvbiBOKFkpe1QuY2FsbCh0aGlzLCJkZXIiLFkpfWZ1bmN0aW9uIEIoWSxVKXtsZXQgcT1ZLnJlYWRVSW50OChVKTtpZihZLmlzRXJyb3IocSkpcmV0dXJuIHE7''@;'; put 'put ''Y29uc3QgSj1FLnRhZ0NsYXNzW3E+PjZdLGVlPSEoMzImcSk7aWYoMzEmfnEpcSY9MzE7ZWxzZXtsZXQgcmU9cTtmb3IocT0wOyEoMTI4Jn5yZSk7KXtpZihyZT1ZLnJlYWRVSW50OChVKSxZLmlzRXJyb3IocmUpKXJldHVybiByZTtxPDw9NyxxfD0xMjcmcmV9fXJldHVybntjbHM6Sixwcmlt''@;'; put 'put ''aXRpdmU6ZWUsdGFnOnEsdGFnU3RyOkUudGFnW3FdfX1mdW5jdGlvbiBaKFksVSxxKXtsZXQgSj1ZLnJlYWRVSW50OChxKTtpZihZLmlzRXJyb3IoSikpcmV0dXJuIEo7aWYoIVUmJjEyOD09PUopcmV0dXJuIG51bGw7aWYoISgxMjgmSikpcmV0dXJuIEo7Y29uc3QgZWU9MTI3Jko7aWYoZWU+''@;'; put 'put ''NClyZXR1cm4gWS5lcnJvcigibGVuZ3RoIG9jdGVjdCBpcyB0b28gbG9uZyIpO0o9MDtmb3IobGV0IHJlPTA7cmU8ZWU7cmUrKyl7Sjw8PTg7Y29uc3QgaWU9WS5yZWFkVUludDgocSk7aWYoWS5pc0Vycm9yKGllKSlyZXR1cm4gaWU7Snw9aWV9cmV0dXJuIEp9TS5leHBvcnRzPXosei5wcm90''@;'; put 'put ''b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKFksVSl7cmV0dXJuIEQuaXNEZWNvZGVyQnVmZmVyKFkpfHwoWT1uZXcgRChZLFUpKSx0aGlzLnRyZWUuX2RlY29kZShZLFUpfSxqKE4sVCksTi5wcm90b3R5cGUuX3BlZWtUYWc9ZnVuY3Rpb24oWSxVLHEpe2lmKFkuaXNFbXB0eSgpKXJldHVybiExO2Nv''@;'; put 'put ''bnN0IEo9WS5zYXZlKCksZWU9QihZLCdGYWlsZWQgdG8gcGVlayB0YWc6ICInK1UrJyInKTtyZXR1cm4gWS5pc0Vycm9yKGVlKT9lZTooWS5yZXN0b3JlKEopLGVlLnRhZz09PVV8fGVlLnRhZ1N0cj09PVV8fGVlLnRhZ1N0cisib2YiPT09VXx8cSl9LE4ucHJvdG90eXBlLl9kZWNvZGVUYWc9''@;'; put 'put ''ZnVuY3Rpb24oWSxVLHEpe2NvbnN0IEo9QihZLCdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiAiJytVKyciJyk7aWYoWS5pc0Vycm9yKEopKXJldHVybiBKO2xldCBlZT1aKFksSi5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mICInK1UrJyInKTtpZihZLmlzRXJyb3IoZWUpKXJl''@;'; put 'put ''dHVybiBlZTtpZighcSYmSi50YWchPT1VJiZKLnRhZ1N0ciE9PVUmJkoudGFnU3RyKyJvZiIhPT1VKXJldHVybiBZLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiAiJytVKyciJyk7aWYoSi5wcmltaXRpdmV8fG51bGwhPT1lZSlyZXR1cm4gWS5za2lwKGVlLCdGYWlsZWQgdG8gbWF0Y2gg''@;'; put 'put ''Ym9keSBvZjogIicrVSsnIicpO2NvbnN0IHJlPVkuc2F2ZSgpLGllPXRoaXMuX3NraXBVbnRpbEVuZChZLCdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiAiJyt0aGlzLnRhZysnIicpO3JldHVybiBZLmlzRXJyb3IoaWUpP2llOihlZT1ZLm9mZnNldC1yZS5vZmZzZXQs''@;'; put 'put ''WS5yZXN0b3JlKHJlKSxZLnNraXAoZWUsJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiAiJytVKyciJykpfSxOLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kPWZ1bmN0aW9uKFksVSl7Zm9yKDs7KXtjb25zdCBxPUIoWSxVKTtpZihZLmlzRXJyb3IocSkpcmV0dXJuIHE7Y29uc3QgSj1aKFkscS5w''@;'; put 'put ''cmltaXRpdmUsVSk7aWYoWS5pc0Vycm9yKEopKXJldHVybiBKO2xldCBlZTtpZihlZT1xLnByaW1pdGl2ZXx8bnVsbCE9PUo/WS5za2lwKEopOnRoaXMuX3NraXBVbnRpbEVuZChZLFUpLFkuaXNFcnJvcihlZSkpcmV0dXJuIGVlO2lmKCJlbmQiPT09cS50YWdTdHIpYnJlYWt9fSxOLnByb3Rv''@;'; put 'put ''dHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbihZLFUscSxKKXtjb25zdCBlZT1bXTtmb3IoOyFZLmlzRW1wdHkoKTspe2NvbnN0IHJlPXRoaXMuX3BlZWtUYWcoWSwiZW5kIik7aWYoWS5pc0Vycm9yKHJlKSlyZXR1cm4gcmU7Y29uc3QgaWU9cS5kZWNvZGUoWSwiZGVyIixKKTtpZihZLmlzRXJy''@;'; put 'put ''b3IoaWUpJiZyZSlicmVhaztlZS5wdXNoKGllKX1yZXR1cm4gZWV9LE4ucHJvdG90eXBlLl9kZWNvZGVTdHI9ZnVuY3Rpb24oWSxVKXtpZigiYml0c3RyIj09PVUpe2NvbnN0IHE9WS5yZWFkVUludDgoKTtyZXR1cm4gWS5pc0Vycm9yKHEpP3E6e3VudXNlZDpxLGRhdGE6WS5yYXcoKX19aWYo''@;'; put 'put ''ImJtcHN0ciI9PT1VKXtjb25zdCBxPVkucmF3KCk7aWYocS5sZW5ndGglMj09MSlyZXR1cm4gWS5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2giKTtsZXQgSj0iIjtmb3IobGV0IGVlPTA7ZWU8cS5sZW5ndGgvMjtlZSsrKUorPVN0cmluZy5m''@;'; put 'put ''cm9tQ2hhckNvZGUocS5yZWFkVUludDE2QkUoMiplZSkpO3JldHVybiBKfWlmKCJudW1zdHIiPT09VSl7Y29uc3QgcT1ZLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc051bXN0cihxKT9xOlkuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgdW5z''@;'; put 'put ''dXBwb3J0ZWQgY2hhcmFjdGVycyIpfWlmKCJvY3RzdHIiPT09VXx8Im9iakRlc2MiPT09VSlyZXR1cm4gWS5yYXcoKTtpZigicHJpbnRzdHIiPT09VSl7Y29uc3QgcT1ZLnJhdygpLnRvU3RyaW5nKCJhc2NpaSIpO3JldHVybiB0aGlzLl9pc1ByaW50c3RyKHEpP3E6WS5lcnJvcigiRGVjb2Rp''@;'; put 'put ''bmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMiKX1yZXR1cm4vc3RyJC8udGVzdChVKT9ZLnJhdygpLnRvU3RyaW5nKCk6WS5lcnJvcigiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrVSsiIHVuc3VwcG9ydGVkIil9LE4ucHJvdG90eXBlLl9kZWNv''@;'; put 'put ''ZGVPYmppZD1mdW5jdGlvbihZLFUscSl7bGV0IEo7Y29uc3QgZWU9W107bGV0IHJlPTAsaWU9MDtmb3IoOyFZLmlzRW1wdHkoKTspaWU9WS5yZWFkVUludDgoKSxyZTw8PTcscmV8PTEyNyZpZSwhKDEyOCZpZSkmJihlZS5wdXNoKHJlKSxyZT0wKTtpZigxMjgmaWUmJmVlLnB1c2gocmUpLEo9''@;'; put 'put ''cT9lZTpbZWVbMF0vNDB8MCxlZVswXSU0MF0uY29uY2F0KGVlLnNsaWNlKDEpKSxVKXtsZXQgYWU9VVtKLmpvaW4oIiAiKV07dm9pZCAwPT09YWUmJihhZT1VW0ouam9pbigiLiIpXSksdm9pZCAwIT09YWUmJihKPWFlKX1yZXR1cm4gSn0sTi5wcm90b3R5cGUuX2RlY29kZVRpbWU9ZnVuY3Rp''@;'; put 'put ''b24oWSxVKXtjb25zdCBxPVkucmF3KCkudG9TdHJpbmcoKTtsZXQgSixlZSxyZSxpZSx1ZSxsZTtpZigiZ2VudGltZSI9PT1VKUo9MHxxLnNsaWNlKDAsNCksZWU9MHxxLnNsaWNlKDQsNikscmU9MHxxLnNsaWNlKDYsOCksaWU9MHxxLnNsaWNlKDgsMTApLHVlPTB8cS5zbGljZSgxMCwxMiks''@;'; put 'put ''bGU9MHxxLnNsaWNlKDEyLDE0KTtlbHNle2lmKCJ1dGN0aW1lIiE9PVUpcmV0dXJuIFkuZXJyb3IoIkRlY29kaW5nICIrVSsiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKTtKPTB8cS5zbGljZSgwLDIpLGVlPTB8cS5zbGljZSgyLDQpLHJlPTB8cS5zbGljZSg0LDYpLGllPTB8cS5zbGlj''@;'; put 'put ''ZSg2LDgpLHVlPTB8cS5zbGljZSg4LDEwKSxsZT0wfHEuc2xpY2UoMTAsMTIpLEo9Sjw3MD8yZTMrSjoxOTAwK0p9cmV0dXJuIERhdGUuVVRDKEosZWUtMSxyZSxpZSx1ZSxsZSwwKX0sTi5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sTi5wcm90b3R5cGUu''@;'; put 'put ''X2RlY29kZUJvb2w9ZnVuY3Rpb24oWSl7Y29uc3QgVT1ZLnJlYWRVSW50OCgpO3JldHVybiBZLmlzRXJyb3IoVSk/VTowIT09VX0sTi5wcm90b3R5cGUuX2RlY29kZUludD1mdW5jdGlvbihZLFUpe2NvbnN0IHE9WS5yYXcoKTtsZXQgSj1uZXcgRyhxKTtyZXR1cm4gVSYmKEo9VVtKLnRvU3Ry''@;'; put 'put ''aW5nKDEwKV18fEopLEp9LE4ucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oWSxVKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgWSYmKFk9WShVKSksWS5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LDgzMDc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBqPU87ai5kZXI9SSgxNjcxKSxq''@;'; put 'put ''LnBlbT1JKDk2MzEpfSw5NjMxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDU3MTcpLEc9SSgyMzk5KS5CdWZmZXIsRD1JKDE2NzEpO2Z1bmN0aW9uIFQoRSl7RC5jYWxsKHRoaXMsRSksdGhpcy5lbmM9InBlbSJ9aihULEQpLE0uZXhwb3J0cz1ULFQucHJvdG90eXBlLmRlY29k''@;'; put 'put ''ZT1mdW5jdGlvbihFLHope2NvbnN0IE49RS50b1N0cmluZygpLnNwbGl0KC9bXHJcbl0rL2cpLEI9ei5sYWJlbC50b1VwcGVyQ2FzZSgpLFo9L14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO2xldCBZPS0xLFU9LTE7Zm9yKGxldCBlZT0wO2VlPE4ubGVuZ3RoO2VlKyspe2NvbnN0''@;'; put 'put ''IHJlPU5bZWVdLm1hdGNoKFopO2lmKG51bGwhPT1yZSYmcmVbMl09PT1CKXtpZigtMSE9PVkpe2lmKCJFTkQiIT09cmVbMV0pYnJlYWs7VT1lZTticmVha31pZigiQkVHSU4iIT09cmVbMV0pYnJlYWs7WT1lZX19aWYoLTE9PT1ZfHwtMT09PVUpdGhyb3cgbmV3IEVycm9yKCJQRU0gc2VjdGlv''@;'; put 'put ''biBub3QgZm91bmQgZm9yOiAiK0IpO2NvbnN0IHE9Ti5zbGljZShZKzEsVSkuam9pbigiIik7cS5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCIiKTtjb25zdCBKPUcuZnJvbShxLCJiYXNlNjQiKTtyZXR1cm4gRC5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcyxKLHopfX0sNjk4NDooTSxP''@;'; put 'put ''LEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg1NzE3KSxHPUkoMjM5OSkuQnVmZmVyLEQ9SSgxOTQ5KSxUPUkoMTYwKTtmdW5jdGlvbiBFKEIpe3RoaXMuZW5jPSJkZXIiLHRoaXMubmFtZT1CLm5hbWUsdGhpcy5lbnRpdHk9Qix0aGlzLnRyZWU9bmV3IHosdGhpcy50cmVlLl9pbml0KEIu''@;'; put 'put ''Ym9keSl9ZnVuY3Rpb24geihCKXtELmNhbGwodGhpcywiZGVyIixCKX1mdW5jdGlvbiBOKEIpe3JldHVybiBCPDEwPyIwIitCOkJ9TS5leHBvcnRzPUUsRS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEIsWil7cmV0dXJuIHRoaXMudHJlZS5fZW5jb2RlKEIsWikuam9pbigpfSxqKHosRCks''@;'; put 'put ''ei5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZT1mdW5jdGlvbihCLFosWSxVKXtjb25zdCBxPWZ1bmN0aW9uKHJlLGllLHVlLGxlKXtsZXQgYWU7aWYoInNlcW9mIj09PXJlP3JlPSJzZXEiOiJzZXRvZiI9PT1yZSYmKHJlPSJzZXQiKSxULnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eShyZSkp''@;'; put 'put ''YWU9VC50YWdCeU5hbWVbcmVdO2Vsc2V7aWYoIm51bWJlciIhPXR5cGVvZiByZXx8KDB8cmUpIT09cmUpcmV0dXJuIGxlLmVycm9yKCJVbmtub3duIHRhZzogIityZSk7YWU9cmV9cmV0dXJuIGFlPj0zMT9sZS5lcnJvcigiTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkIik6''@;'; put 'put ''KGllfHwoYWV8PTMyKSxhZXw9VC50YWdDbGFzc0J5TmFtZVt1ZXx8InVuaXZlcnNhbCJdPDw2LGFlKX0oQixaLFksdGhpcy5yZXBvcnRlcik7aWYoVS5sZW5ndGg8MTI4KXtjb25zdCByZT1HLmFsbG9jKDIpO3JldHVybiByZVswXT1xLHJlWzFdPVUubGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29k''@;'; put 'put ''ZXJCdWZmZXIoW3JlLFVdKX1sZXQgSj0xO2ZvcihsZXQgcmU9VS5sZW5ndGg7cmU+PTI1NjtyZT4+PTgpSisrO2NvbnN0IGVlPUcuYWxsb2MoMitKKTtlZVswXT1xLGVlWzFdPTEyOHxKO2ZvcihsZXQgcmU9MStKLGllPVUubGVuZ3RoO2llPjA7cmUtLSxpZT4+PTgpZWVbcmVdPTI1NSZpZTty''@;'; put 'put ''ZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbZWUsVV0pfSx6LnByb3RvdHlwZS5fZW5jb2RlU3RyPWZ1bmN0aW9uKEIsWil7aWYoImJpdHN0ciI9PT1aKXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswfEIudW51c2VkLEIuZGF0YV0pO2lmKCJibXBzdHIiPT09Wil7''@;'; put 'put ''Y29uc3QgWT1HLmFsbG9jKDIqQi5sZW5ndGgpO2ZvcihsZXQgVT0wO1U8Qi5sZW5ndGg7VSsrKVkud3JpdGVVSW50MTZCRShCLmNoYXJDb2RlQXQoVSksMipVKTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihZKX1yZXR1cm4ibnVtc3RyIj09PVo/dGhpcy5faXNOdW1zdHIoQik/''@;'; put 'put ''dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihCKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzIG9ubHkgZGlnaXRzIGFuZCBzcGFjZSIpOiJwcmludHN0ciI9PT1aP3RoaXMuX2lzUHJpbnRzdHIoQik/dGhpcy5fY3JlYXRlRW5j''@;'; put 'put ''b2RlckJ1ZmZlcihCKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCBwYXJl''@;'; put 'put ''bnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgcXVlc3Rpb24gbWFyayIpOi9zdHIkLy50ZXN0KFopfHwib2JqRGVzYyI9PT1aP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoQik6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5j''@;'; put 'put ''b2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrWisiIHVuc3VwcG9ydGVkIil9LHoucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5jdGlvbihCLFosWSl7aWYoInN0cmluZyI9PXR5cGVvZiBCKXtpZighWilyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigic3RyaW5nIG9iamlkIGdpdmVuLCBidXQg''@;'; put 'put ''bm8gdmFsdWVzIG1hcCBmb3VuZCIpO2lmKCFaLmhhc093blByb3BlcnR5KEIpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCIpO0I9WltCXS5zcGxpdCgvW1xzLl0rL2cpO2ZvcihsZXQgZWU9MDtlZTxCLmxlbmd0aDtlZSsrKUJbZWVd''@;'; put 'put ''fD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJheShCKSl7Qj1CLnNsaWNlKCk7Zm9yKGxldCBlZT0wO2VlPEIubGVuZ3RoO2VlKyspQltlZV18PTB9aWYoIUFycmF5LmlzQXJyYXkoQikpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBz''@;'; put 'put ''dHJpbmcsIGdvdDogIitKU09OLnN0cmluZ2lmeShCKSk7aWYoIVkpe2lmKEJbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0IiKTtCLnNwbGljZSgwLDIsNDAqQlswXStCWzFdKX1sZXQgVT0wO2ZvcihsZXQgZWU9MDtlZTxCLmxl''@;'; put 'put ''bmd0aDtlZSsrKXtsZXQgcmU9QltlZV07Zm9yKFUrKztyZT49MTI4O3JlPj49NylVKyt9Y29uc3QgcT1HLmFsbG9jKFUpO2xldCBKPXEubGVuZ3RoLTE7Zm9yKGxldCBlZT1CLmxlbmd0aC0xO2VlPj0wO2VlLS0pe2xldCByZT1CW2VlXTtmb3IocVtKLS1dPTEyNyZyZTsocmU+Pj03KT4wOylx''@;'; put 'put ''W0otLV09MTI4fDEyNyZyZX1yZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihxKX0sei5wcm90b3R5cGUuX2VuY29kZVRpbWU9ZnVuY3Rpb24oQixaKXtsZXQgWTtjb25zdCBVPW5ldyBEYXRlKEIpO3JldHVybiJnZW50aW1lIj09PVo/WT1bTihVLmdldFVUQ0Z1bGxZZWFyKCkpLE4o''@;'; put 'put ''VS5nZXRVVENNb250aCgpKzEpLE4oVS5nZXRVVENEYXRlKCkpLE4oVS5nZXRVVENIb3VycygpKSxOKFUuZ2V0VVRDTWludXRlcygpKSxOKFUuZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOiJ1dGN0aW1lIj09PVo/WT1bTihVLmdldFVUQ0Z1bGxZZWFyKCklMTAwKSxOKFUuZ2V0VVRD''@;'; put 'put ''TW9udGgoKSsxKSxOKFUuZ2V0VVRDRGF0ZSgpKSxOKFUuZ2V0VVRDSG91cnMoKSksTihVLmdldFVUQ01pbnV0ZXMoKSksTihVLmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyAiK1orIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0''@;'; put 'put ''IiksdGhpcy5fZW5jb2RlU3RyKFksIm9jdHN0ciIpfSx6LnByb3RvdHlwZS5fZW5jb2RlTnVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCIiKX0sei5wcm90b3R5cGUuX2VuY29kZUludD1mdW5jdGlvbihCLFope2lmKCJzdHJpbmciPT10eXBlb2YgQil7''@;'; put 'put ''aWYoIVopcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlN0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAiKTtpZighWi5oYXNPd25Qcm9wZXJ0eShCKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigiVmFsdWVzIG1hcCBkb2Vzbid0IGNvbnRhaW46ICIrSlNP''@;'; put 'put ''Ti5zdHJpbmdpZnkoQikpO0I9WltCXX1pZigibnVtYmVyIiE9dHlwZW9mIEImJiFHLmlzQnVmZmVyKEIpKXtjb25zdCBxPUIudG9BcnJheSgpOyFCLnNpZ24mJjEyOCZxWzBdJiZxLnVuc2hpZnQoMCksQj1HLmZyb20ocSl9aWYoRy5pc0J1ZmZlcihCKSl7bGV0IHE9Qi5sZW5ndGg7MD09PUIu''@;'; put 'put ''bGVuZ3RoJiZxKys7Y29uc3QgSj1HLmFsbG9jKHEpO3JldHVybiBCLmNvcHkoSiksMD09PUIubGVuZ3RoJiYoSlswXT0wKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEopfWlmKEI8MTI4KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEIpO2lmKEI8MjU2KXJldHVybiB0aGlz''@;'; put 'put ''Ll9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLEJdKTtsZXQgWT0xO2ZvcihsZXQgcT1CO3E+PTI1NjtxPj49OClZKys7Y29uc3QgVT1uZXcgQXJyYXkoWSk7Zm9yKGxldCBxPVUubGVuZ3RoLTE7cT49MDtxLS0pVVtxXT0yNTUmQixCPj49ODtyZXR1cm4gMTI4JlVbMF0mJlUudW5zaGlmdCgwKSx0''@;'; put 'put ''aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEcuZnJvbShVKSl9LHoucHJvdG90eXBlLl9lbmNvZGVCb29sPWZ1bmN0aW9uKEIpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKEI/MjU1OjApfSx6LnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKEIsWil7cmV0dXJuImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIEImJihCPUIoWikpLEIuX2dldEVuY29kZXIoImRlciIpLnRyZWV9LHoucHJvdG90eXBlLl9za2lwRGVmYXVsdD1mdW5jdGlvbihCLFosWSl7Y29uc3QgVT10aGlzLl9iYXNlU3RhdGU7bGV0IHE7aWYobnVsbD09PVUuZGVmYXVsdClyZXR1cm4hMTtjb25zdCBKPUIuam9pbigpO2lm''@;'; put 'put ''KHZvaWQgMD09PVUuZGVmYXVsdEJ1ZmZlciYmKFUuZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShVLmRlZmF1bHQsWixZKS5qb2luKCkpLEoubGVuZ3RoIT09VS5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4hMTtmb3IocT0wO3E8Si5sZW5ndGg7cSsrKWlmKEpbcV0hPT1VLmRl''@;'; put 'put ''ZmF1bHRCdWZmZXJbcV0pcmV0dXJuITE7cmV0dXJuITB9fSw2NTc5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1PO2ouZGVyPUkoNjk4NCksai5wZW09SSgyODgzKX0sMjg4MzooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg1NzE3KSxHPUkoNjk4NCk7ZnVuY3Rpb24g''@;'; put 'put ''RChUKXtHLmNhbGwodGhpcyxUKSx0aGlzLmVuYz0icGVtIn1qKEQsRyksTS5leHBvcnRzPUQsRC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKFQsRSl7Y29uc3Qgej1HLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLFQpLnRvU3RyaW5nKCJiYXNlNjQiKSxOPVsiLS0tLS1CRUdJTiAiK0Uu''@;'; put 'put ''bGFiZWwrIi0tLS0tIl07Zm9yKGxldCBCPTA7Qjx6Lmxlbmd0aDtCKz02NClOLnB1c2goei5zbGljZShCLEIrNjQpKTtyZXR1cm4gTi5wdXNoKCItLS0tLUVORCAiK0UubGFiZWwrIi0tLS0tIiksTi5qb2luKCJcbiIpfX0sNDU5MDpmdW5jdGlvbihNLE8sSSl7IWZ1bmN0aW9uKGosRyl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO2Z1bmN0aW9uIEQoZyxDKXtpZighZyl0aHJvdyBuZXcgRXJyb3IoQ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBUKGcsQyl7Zy5zdXBlcl89Qzt2YXIgaz1mdW5jdGlvbigpe307ay5wcm90b3R5cGU9Qy5wcm90b3R5cGUsZy5wcm90b3R5cGU9bmV3IGssZy5wcm90''@;'; put 'put ''b3R5cGUuY29uc3RydWN0b3I9Z31mdW5jdGlvbiBFKGcsQyxrKXtpZihFLmlzQk4oZykpcmV0dXJuIGc7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWcmJigibGUiIT09QyYmImJlIiE9PUN8fChrPUMsQz0xMCksdGhp''@;'; put 'put ''cy5faW5pdChnfHwwLEN8fDEwLGt8fCJiZSIpKX12YXIgejsib2JqZWN0Ij09dHlwZW9mIGo/ai5leHBvcnRzPUU6Ry5CTj1FLEUuQk49RSxFLndvcmRTaXplPTI2O3RyeXt6PXR5cGVvZiB3aW5kb3c8InUiJiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6SSg5NTApLkJ1''@;'; put 'put ''ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gTihnLEMpe3ZhciBrPWcuY2hhckNvZGVBdChDKTtyZXR1cm4gaz49NjUmJms8PTcwP2stNTU6az49OTcmJms8PTEwMj9rLTg3OmstNDgmMTV9ZnVuY3Rpb24gQihnLEMsayl7dmFyIF89TihnLGspO3JldHVybiBrLTE+PUMmJihffD1OKGcsay0xKTw8NCks''@;'; put 'put ''X31mdW5jdGlvbiBaKGcsQyxrLF8pe2Zvcih2YXIgcD0wLHc9TWF0aC5taW4oZy5sZW5ndGgsayksSz1DO0s8dztLKyspe3ZhciB0ZT1nLmNoYXJDb2RlQXQoSyktNDg7cCo9XyxwKz10ZT49NDk/dGUtNDkrMTA6dGU+PTE3P3RlLTE3KzEwOnRlfXJldHVybiBwfUUuaXNCTj1mdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gZyBpbnN0YW5jZW9mIEV8fG51bGwhPT1nJiYib2JqZWN0Ij09dHlwZW9mIGcmJmcuY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGcud29yZHMpfSxFLm1heD1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKT4wP2c6Q30sRS5taW49''@;'; put 'put ''ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk8MD9nOkN9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGcsQyxrKXtpZigibnVtYmVyIj09dHlwZW9mIGcpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZyxDLGspO2lmKCJvYmplY3QiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdEFy''@;'; put 'put ''cmF5KGcsQyxrKTsiaGV4Ij09PUMmJihDPTE2KSxEKEM9PT0oMHxDKSYmQz49MiYmQzw9MzYpO3ZhciBfPTA7Ii0iPT09KGc9Zy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihfKyssdGhpcy5uZWdhdGl2ZT0xKSxfPGcubGVuZ3RoJiYoMTY9PT1DP3RoaXMuX3BhcnNlSGV4''@;'; put 'put ''KGcsXyxrKToodGhpcy5fcGFyc2VCYXNlKGcsQyxfKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsaykpKX0sRS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oZyxDLGspe2c8MCYmKHRoaXMubmVnYXRpdmU9MSxnPS1nKSxnPDY3MTA4ODY0Pyh0aGlz''@;'; put 'put ''LndvcmRzPVs2NzEwODg2MyZnXSx0aGlzLmxlbmd0aD0xKTpnPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KEQoZzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcx''@;'; put 'put ''MDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PWsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLGspfSxFLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGcsQyxrKXtpZihEKCJudW1iZXIiPT10eXBlb2YgZy5sZW5ndGgpLGcubGVuZ3RoPD0wKXJl''@;'; put 'put ''dHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGcubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIF89MDtfPHRoaXMubGVuZ3RoO18rKyl0aGlzLndvcmRzW19dPTA7dmFyIHAsdyxLPTA7''@;'; put 'put ''aWYoImJlIj09PWspZm9yKF89Zy5sZW5ndGgtMSxwPTA7Xz49MDtfLT0zKXRoaXMud29yZHNbcF18PSh3PWdbX118Z1tfLTFdPDw4fGdbXy0yXTw8MTYpPDxLJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT13Pj4+MjYtSyY2NzEwODg2MywoSys9MjQpPj0yNiYmKEstPTI2LHArKyk7ZWxzZSBp''@;'; put 'put ''ZigibGUiPT09aylmb3IoXz0wLHA9MDtfPGcubGVuZ3RoO18rPTMpdGhpcy53b3Jkc1twXXw9KHc9Z1tfXXxnW18rMV08PDh8Z1tfKzJdPDwxNik8PEsmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPXc+Pj4yNi1LJjY3MTA4ODYzLChLKz0yNCk+PTI2JiYoSy09MjYscCsrKTtyZXR1cm4gdGhp''@;'; put 'put ''cy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZyxDLGspe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZy5sZW5ndGgtQykvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgXz0wO188dGhpcy5sZW5ndGg7XysrKXRoaXMud29yZHNbX109''@;'; put 'put ''MDt2YXIgcCx3PTAsSz0wO2lmKCJiZSI9PT1rKWZvcihfPWcubGVuZ3RoLTE7Xz49QztfLT0yKXA9QihnLEMsXyk8PHcsdGhpcy53b3Jkc1tLXXw9NjcxMDg4NjMmcCx3Pj0xOD8ody09MTgsdGhpcy53b3Jkc1tLKz0xXXw9cD4+PjI2KTp3Kz04O2Vsc2UgZm9yKF89KGcubGVuZ3RoLUMpJTI9''@;'; put 'put ''PTA/QysxOkM7XzxnLmxlbmd0aDtfKz0yKXA9QihnLEMsXyk8PHcsdGhpcy53b3Jkc1tLXXw9NjcxMDg4NjMmcCx3Pj0xOD8ody09MTgsdGhpcy53b3Jkc1tLKz0xXXw9cD4+PjI2KTp3Kz04O3RoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihnLEMsayl7dGhp''@;'; put 'put ''cy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIF89MCxwPTE7cDw9NjcxMDg4NjM7cCo9QylfKys7Xy0tLHA9cC9DfDA7Zm9yKHZhciB3PWcubGVuZ3RoLWssSz13JV8sdGU9TWF0aC5taW4odyx3LUspK2ssY2U9MCxoZT1rO2hlPHRlO2hlKz1fKWNlPVooZyxoZSxoZStfLEMpLHRo''@;'; put 'put ''aXMuaW11bG4ocCksdGhpcy53b3Jkc1swXStjZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jZTp0aGlzLl9pYWRkbihjZSk7aWYoMCE9PUspe3ZhciBTZT0xO2ZvcihjZT1aKGcsaGUsZy5sZW5ndGgsQyksaGU9MDtoZTxLO2hlKyspU2UqPUM7dGhpcy5pbXVsbihTZSksdGhpcy53b3Jkc1sw''@;'; put 'put ''XStjZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jZTp0aGlzLl9pYWRkbihjZSl9dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGcpe2cud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoO0MrKylnLndvcmRzW0NdPXRo''@;'; put 'put ''aXMud29yZHNbQ107Zy5sZW5ndGg9dGhpcy5sZW5ndGgsZy5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGcucmVkPXRoaXMucmVkfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZyksZ30sRS5wcm90b3R5cGUuX2V4cGFuZD1m''@;'; put 'put ''dW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGc7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0t''@;'; put 'put ''O3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxFLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sRS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0''@;'; put 'put ''aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgWT1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxVPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcs''@;'; put 'put ''Nyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLHE9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUz''@;'; put 'put ''NiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQz''@;'; put 'put ''NTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gSihnLEMsayl7ay5uZWdhdGl2ZT1DLm5lZ2F0aXZlXmcubmVnYXRpdmU7dmFyIF89Zy5sZW5ndGgrQy5sZW5ndGh8MDtrLmxlbmd0aD1fLF89Xy0xfDA7dmFyIHA9MHxnLndvcmRzWzBdLHc9MHxDLndvcmRzWzBdLEs9cCp3LGNlPUsv''@;'; put 'put ''NjcxMDg4NjR8MDtrLndvcmRzWzBdPTY3MTA4ODYzJks7Zm9yKHZhciBoZT0xO2hlPF87aGUrKyl7Zm9yKHZhciBTZT1jZT4+PjI2LExlPTY3MTA4ODYzJmNlLEhlPU1hdGgubWluKGhlLEMubGVuZ3RoLTEpLHhlPU1hdGgubWF4KDAsaGUtZy5sZW5ndGgrMSk7eGU8PUhlO3hlKyspU2UrPShL''@;'; put 'put ''PShwPTB8Zy53b3Jkc1toZS14ZXwwXSkqKHc9MHxDLndvcmRzW3hlXSkrTGUpLzY3MTA4ODY0fDAsTGU9NjcxMDg4NjMmSztrLndvcmRzW2hlXT0wfExlLGNlPTB8U2V9cmV0dXJuIDAhPT1jZT9rLndvcmRzW2hlXT0wfGNlOmsubGVuZ3RoLS0say5zdHJpcCgpfUUucHJvdG90eXBlLnRvU3Ry''@;'; put 'put ''aW5nPWZ1bmN0aW9uKGcsQyl7dmFyIGs7aWYoQz0wfEN8fDEsMTY9PT0oZz1nfHwxMCl8fCJoZXgiPT09Zyl7az0iIjtmb3IodmFyIF89MCxwPTAsdz0wO3c8dGhpcy5sZW5ndGg7dysrKXt2YXIgSz10aGlzLndvcmRzW3ddLHRlPSgxNjc3NzIxNSYoSzw8X3xwKSkudG9TdHJpbmcoMTYpO2s9''@;'; put 'put ''MCE9KHA9Sz4+PjI0LV8mMTY3NzcyMTUpfHx3IT09dGhpcy5sZW5ndGgtMT9ZWzYtdGUubGVuZ3RoXSt0ZStrOnRlK2ssKF8rPTIpPj0yNiYmKF8tPTI2LHctLSl9Zm9yKDAhPT1wJiYoaz1wLnRvU3RyaW5nKDE2KStrKTtrLmxlbmd0aCVDIT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSYmKGs9Ii0iK2spLGt9aWYoZz09PSgwfGcpJiZnPj0yJiZnPD0zNil7dmFyIGNlPVVbZ10saGU9cVtnXTtrPSIiO3ZhciBTZT10aGlzLmNsb25lKCk7Zm9yKFNlLm5lZ2F0aXZlPTA7IVNlLmlzWmVybygpOyl7dmFyIExlPVNlLm1vZG4oaGUpLnRvU3RyaW5nKGcpO2s9KFNlPVNl''@;'; put 'put ''LmlkaXZuKGhlKSkuaXNaZXJvKCk/TGUrazpZW2NlLUxlLmxlbmd0aF0rTGUra31mb3IodGhpcy5pc1plcm8oKSYmKGs9IjAiK2spO2subGVuZ3RoJUMhPTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31EKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVu''@;'; put 'put ''IDIgYW5kIDM2Iil9LEUucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP2crPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9nKz00NTAzNTk5NjI3Mzcw''@;'; put 'put ''NDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmRCghMSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWc6Z30sRS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJp''@;'; put 'put ''bmcoMTYpfSxFLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihnLEMpe3JldHVybiBEKHZvaWQgMCE9PXopLHRoaXMudG9BcnJheUxpa2UoeixnLEMpfSxFLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZyxDKX0sRS5wcm90''@;'; put 'put ''b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oZyxDLGspe3ZhciBfPXRoaXMuYnl0ZUxlbmd0aCgpLHA9a3x8TWF0aC5tYXgoMSxfKTtEKF88PXAsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxEKHA+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhp''@;'; put 'put ''cy5zdHJpcCgpO3ZhciB3LEssdGU9ImxlIj09PUMsY2U9bmV3IGcocCksaGU9dGhpcy5jbG9uZSgpO2lmKHRlKXtmb3IoSz0wOyFoZS5pc1plcm8oKTtLKyspdz1oZS5hbmRsbigyNTUpLGhlLml1c2hybig4KSxjZVtLXT13O2Zvcig7SzxwO0srKyljZVtLXT0wfWVsc2V7Zm9yKEs9MDtLPHAt''@;'; put 'put ''XztLKyspY2VbS109MDtmb3IoSz0wOyFoZS5pc1plcm8oKTtLKyspdz1oZS5hbmRsbigyNTUpLGhlLml1c2hybig4KSxjZVtwLUstMV09d31yZXR1cm4gY2V9LEUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihnKXtyZXR1cm4gMzItTWF0aC5jbHozMihnKX06ZnVu''@;'; put 'put ''Y3Rpb24oZyl7dmFyIEM9ZyxrPTA7cmV0dXJuIEM+PTQwOTYmJihrKz0xMyxDPj4+PTEzKSxDPj02NCYmKGsrPTcsQz4+Pj03KSxDPj04JiYoays9NCxDPj4+PTQpLEM+PTImJihrKz0yLEM+Pj49MiksaytDfSxFLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZyl7aWYoMD09PWcpcmV0''@;'; put 'put ''dXJuIDI2O3ZhciBDPWcsaz0wO3JldHVybiEoODE5MSZDKSYmKGsrPTEzLEM+Pj49MTMpLCEoMTI3JkMpJiYoays9NyxDPj4+PTcpLCEoMTUmQykmJihrKz00LEM+Pj49NCksISgzJkMpJiYoays9MixDPj4+PTIpLCEoMSZDKSYmaysrLGt9LEUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBDPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK0N9LEUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGc9MCxDPTA7Qzx0aGlzLmxl''@;'; put 'put ''bmd0aDtDKyspe3ZhciBrPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbQ10pO2lmKGcrPWssMjYhPT1rKWJyZWFrfXJldHVybiBnfSxFLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxFLnByb3RvdHlwZS50b1R3''@;'; put 'put ''b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oZykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy50ZXN0bihnLTEpP3RoaXMubm90bihnKS5pYWRkbigxKS5pbmVn''@;'; put 'put ''KCk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sRS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oZyl7Zm9yKDt0aGlzLmxlbmd0aDxnLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgQz0wO0M8Zy5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109dGhp''@;'; put 'put ''cy53b3Jkc1tDXXxnLndvcmRzW0NdO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlvcj1mdW5jdGlvbihnKXtyZXR1cm4gRCghKHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVvcihnKX0sRS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVu''@;'; put 'put ''Z3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoZyk6Zy5jbG9uZSgpLmlvcih0aGlzKX0sRS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihnKTpnLmNsb25lKCkuaXVvcih0aGlzKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aXVhbmQ9ZnVuY3Rpb24oZyl7dmFyIEM7Qz10aGlzLmxlbmd0aD5nLmxlbmd0aD9nOnRoaXM7Zm9yKHZhciBrPTA7azxDLmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT10aGlzLndvcmRzW2tdJmcud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuaWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghKHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoZyl9LEUucHJvdG90eXBlLmFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoZyk6Zy5jbG9uZSgp''@;'; put 'put ''LmlhbmQodGhpcyl9LEUucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChnKTpnLmNsb25lKCkuaXVhbmQodGhpcyl9LEUucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGcpe3ZhciBDLGs7dGhpcy5sZW5ndGg+''@;'; put 'put ''Zy5sZW5ndGg/KEM9dGhpcyxrPWcpOihDPWcsaz10aGlzKTtmb3IodmFyIF89MDtfPGsubGVuZ3RoO18rKyl0aGlzLndvcmRzW19dPUMud29yZHNbX11eay53b3Jkc1tfXTtpZih0aGlzIT09Qylmb3IoO188Qy5sZW5ndGg7XysrKXRoaXMud29yZHNbX109Qy53b3Jkc1tfXTtyZXR1cm4gdGhp''@;'; put 'put ''cy5sZW5ndGg9Qy5sZW5ndGgsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihnKX0sRS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxl''@;'; put 'put ''bmd0aD90aGlzLmNsb25lKCkuaXhvcihnKTpnLmNsb25lKCkuaXhvcih0aGlzKX0sRS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGcpOmcuY2xvbmUoKS5pdXhvcih0aGlzKX0sRS5wcm90b3R5cGUuaW5v''@;'; put 'put ''dG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPTB8TWF0aC5jZWlsKGcvMjYpLGs9ZyUyNjt0aGlzLl9leHBhbmQoQyksaz4wJiZDLS07Zm9yKHZhciBfPTA7XzxDO18rKyl0aGlzLndvcmRzW19dPTY3MTA4ODYzJn50aGlzLndvcmRzW19dO3JldHVybiBr''@;'; put 'put ''PjAmJih0aGlzLndvcmRzW19dPX50aGlzLndvcmRzW19dJjY3MTA4ODYzPj4yNi1rKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihnKX0sRS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihnLEMpe0QoIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBnJiZnPj0wKTt2YXIgaz1nLzI2fDAsXz1nJTI2O3JldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdPUM/dGhpcy53b3Jkc1trXXwxPDxfOnRoaXMud29yZHNba10mfigxPDxfKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyl7dmFy''@;'; put 'put ''IEMsayxfO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLEM9dGhpcy5pc3ViKGcpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmUpcmV0dXJuIGcubmVn''@;'; put 'put ''YXRpdmU9MCxDPXRoaXMuaXN1YihnKSxnLm5lZ2F0aXZlPTEsQy5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oaz10aGlzLF89Zyk6KGs9ZyxfPXRoaXMpO2Zvcih2YXIgcD0wLHc9MDt3PF8ubGVuZ3RoO3crKyl0aGlzLndvcmRzW3ddPTY3MTA4ODYzJihDPSgwfGsud29yZHNb''@;'; put 'put ''d10pKygwfF8ud29yZHNbd10pK3ApLHA9Qz4+PjI2O2Zvcig7MCE9PXAmJnc8ay5sZW5ndGg7dysrKXRoaXMud29yZHNbd109NjcxMDg4NjMmKEM9KDB8ay53b3Jkc1t3XSkrcCkscD1DPj4+MjY7aWYodGhpcy5sZW5ndGg9ay5sZW5ndGgsMCE9PXApdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09''@;'; put 'put ''cCx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoayE9PXRoaXMpZm9yKDt3PGsubGVuZ3RoO3crKyl0aGlzLndvcmRzW3ddPWsud29yZHNbd107cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihnKXt2YXIgQztyZXR1cm4gMCE9PWcubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''PyhnLm5lZ2F0aXZlPTAsQz10aGlzLnN1YihnKSxnLm5lZ2F0aXZlXj0xLEMpOjA9PT1nLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLEM9Zy5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLEMpOnRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5p''@;'; put 'put ''YWRkKGcpOmcuY2xvbmUoKS5pYWRkKHRoaXMpfSxFLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGcpe2lmKDAhPT1nLm5lZ2F0aXZlKXtnLm5lZ2F0aXZlPTA7dmFyIEM9dGhpcy5pYWRkKGcpO3JldHVybiBnLm5lZ2F0aXZlPTEsQy5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSly''@;'; put 'put ''ZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgayxfLHA9dGhpcy5jbXAoZyk7aWYoMD09PXApcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO3A+MD8oaz10''@;'; put 'put ''aGlzLF89Zyk6KGs9ZyxfPXRoaXMpO2Zvcih2YXIgdz0wLEs9MDtLPF8ubGVuZ3RoO0srKyl3PShDPSgwfGsud29yZHNbS10pLSgwfF8ud29yZHNbS10pK3cpPj4yNix0aGlzLndvcmRzW0tdPTY3MTA4ODYzJkM7Zm9yKDswIT09dyYmSzxrLmxlbmd0aDtLKyspdz0oQz0oMHxrLndvcmRzW0td''@;'; put 'put ''KSt3KT4+MjYsdGhpcy53b3Jkc1tLXT02NzEwODg2MyZDO2lmKDA9PT13JiZLPGsubGVuZ3RoJiZrIT09dGhpcylmb3IoO0s8ay5sZW5ndGg7SysrKXRoaXMud29yZHNbS109ay53b3Jkc1tLXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsSyksayE9PXRoaXMmJih0''@;'; put 'put ''aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihnKX07dmFyIGVlPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXyxwLHcsSz1nLndvcmRzLHRlPUMud29yZHMsY2U9ay53b3JkcyxoZT0wLFNlPTB8S1sw''@;'; put 'put ''XSxMZT04MTkxJlNlLEhlPVNlPj4+MTMseGU9MHxLWzFdLERlPTgxOTEmeGUsQmU9eGU+Pj4xMyxHZT0wfEtbMl0sVWU9ODE5MSZHZSxxZT1HZT4+PjEzLG90PTB8S1szXSxGZT04MTkxJm90LHdlPW90Pj4+MTMsRWU9MHxLWzRdLEllPTgxOTEmRWUsWGU9RWU+Pj4xMyx0dD0wfEtbNV0sWmU9''@;'; put 'put ''ODE5MSZ0dCxjdD10dD4+PjEzLGtlPTB8S1s2XSxBZT04MTkxJmtlLGplPWtlPj4+MTMsaXQ9MHxLWzddLHN0PTgxOTEmaXQseHQ9aXQ+Pj4xMyxGdD0wfEtbOF0sT3Q9ODE5MSZGdCxLdD1GdD4+PjEzLGJuPTB8S1s5XSxCdD04MTkxJmJuLHluPWJuPj4+MTMsTm49MHx0ZVswXSxubj04MTkx''@;'; put 'put ''Jk5uLEduPU5uPj4+MTMsWW49MHx0ZVsxXSxmdD04MTkxJlluLGRuPVluPj4+MTMsaG49MHx0ZVsyXSx3dD04MTkxJmhuLGp0PWhuPj4+MTMsbXQ9MHx0ZVszXSxIdD04MTkxJm10LHBuPW10Pj4+MTMsbnQ9MHx0ZVs0XSxFdD04MTkxJm50LGVuPW50Pj4+MTMsVHQ9MHx0ZVs1XSx5dD04MTkx''@;'; put 'put ''JlR0LCR0PVR0Pj4+MTMseG49MHx0ZVs2XSx6dD04MTkxJnhuLF9uPXhuPj4+MTMsT249MHx0ZVs3XSxybj04MTkxJk9uLFBuPU9uPj4+MTMsQ249MHx0ZVs4XSxYdD04MTkxJkNuLEpuPUNuPj4+MTMseGk9MHx0ZVs5XSxhbj04MTkxJnhpLHRuPXhpPj4+MTM7ay5uZWdhdGl2ZT1nLm5lZ2F0''@;'; put 'put ''aXZlXkMubmVnYXRpdmUsay5sZW5ndGg9MTk7dmFyIHVpPShoZSsoXz1NYXRoLmltdWwoTGUsbm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKExlLEduKSkrTWF0aC5pbXVsKEhlLG5uKXwwKSk8PDEzKXwwO2hlPSgodz1NYXRoLmltdWwoSGUsR24pKSsocD4+PjEzKXwwKSsodWk+Pj4y''@;'; put 'put ''Nil8MCx1aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRGUsbm4pLHA9KHA9TWF0aC5pbXVsKERlLEduKSkrTWF0aC5pbXVsKEJlLG5uKXwwLHc9TWF0aC5pbXVsKEJlLEduKTt2YXIgQXI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLGZ0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUs''@;'; put 'put ''ZG4pfDApK01hdGguaW11bChIZSxmdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsZG4pfDApKyhwPj4+MTMpfDApKyhBcj4+PjI2KXwwLEFyJj02NzEwODg2MyxfPU1hdGguaW11bChVZSxubikscD0ocD1NYXRoLmltdWwoVWUsR24pKStNYXRoLmltdWwocWUsbm4pfDAsdz1N''@;'; put 'put ''YXRoLmltdWwocWUsR24pLF89XytNYXRoLmltdWwoRGUsZnQpfDAscD0ocD1wK01hdGguaW11bChEZSxkbil8MCkrTWF0aC5pbXVsKEJlLGZ0KXwwLHc9dytNYXRoLmltdWwoQmUsZG4pfDA7dmFyIGhyPShoZSsoXz1fK01hdGguaW11bChMZSx3dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKExlLGp0KXwwKStNYXRoLmltdWwoSGUsd3QpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLGp0KXwwKSsocD4+PjEzKXwwKSsoaHI+Pj4yNil8MCxociY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRmUsbm4pLHA9KHA9TWF0aC5pbXVsKEZlLEduKSkrTWF0aC5pbXVsKHdl''@;'; put 'put ''LG5uKXwwLHc9TWF0aC5pbXVsKHdlLEduKSxfPV8rTWF0aC5pbXVsKFVlLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsZG4pfDApK01hdGguaW11bChxZSxmdCl8MCx3PXcrTWF0aC5pbXVsKHFlLGRuKXwwLF89XytNYXRoLmltdWwoRGUsd3QpfDAscD0ocD1wK01hdGguaW11bChEZSxqdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEJlLHd0KXwwLHc9dytNYXRoLmltdWwoQmUsanQpfDA7dmFyIGRpPShoZSsoXz1fK01hdGguaW11bChMZSxIdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLHBuKXwwKStNYXRoLmltdWwoSGUsSHQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVs''@;'; put 'put ''KEhlLHBuKXwwKSsocD4+PjEzKXwwKSsoZGk+Pj4yNil8MCxkaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoSWUsbm4pLHA9KHA9TWF0aC5pbXVsKEllLEduKSkrTWF0aC5pbXVsKFhlLG5uKXwwLHc9TWF0aC5pbXVsKFhlLEduKSxfPV8rTWF0aC5pbXVsKEZlLGZ0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRmUsZG4pfDApK01hdGguaW11bCh3ZSxmdCl8MCx3PXcrTWF0aC5pbXVsKHdlLGRuKXwwLF89XytNYXRoLmltdWwoVWUsd3QpfDAscD0ocD1wK01hdGguaW11bChVZSxqdCl8MCkrTWF0aC5pbXVsKHFlLHd0KXwwLHc9dytNYXRoLmltdWwocWUsanQpfDAsXz1fK01hdGguaW11bChEZSxI''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLHBuKXwwKStNYXRoLmltdWwoQmUsSHQpfDAsdz13K01hdGguaW11bChCZSxwbil8MDt2YXIgZmk9KGhlKyhfPV8rTWF0aC5pbXVsKExlLEV0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsZW4pfDApK01hdGguaW11bChIZSxFdCl8''@;'; put 'put ''MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsZW4pfDApKyhwPj4+MTMpfDApKyhmaT4+PjI2KXwwLGZpJj02NzEwODg2MyxfPU1hdGguaW11bChaZSxubikscD0ocD1NYXRoLmltdWwoWmUsR24pKStNYXRoLmltdWwoY3Qsbm4pfDAsdz1NYXRoLmltdWwoY3QsR24pLF89XytNYXRo''@;'; put 'put ''LmltdWwoSWUsZnQpfDAscD0ocD1wK01hdGguaW11bChJZSxkbil8MCkrTWF0aC5pbXVsKFhlLGZ0KXwwLHc9dytNYXRoLmltdWwoWGUsZG4pfDAsXz1fK01hdGguaW11bChGZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLGp0KXwwKStNYXRoLmltdWwod2Usd3QpfDAsdz13K01hdGguaW11''@;'; put 'put ''bCh3ZSxqdCl8MCxfPV8rTWF0aC5pbXVsKFVlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUscG4pfDApK01hdGguaW11bChxZSxIdCl8MCx3PXcrTWF0aC5pbXVsKHFlLHBuKXwwLF89XytNYXRoLmltdWwoRGUsRXQpfDAscD0ocD1wK01hdGguaW11bChEZSxlbil8MCkrTWF0aC5pbXVsKEJl''@;'; put 'put ''LEV0KXwwLHc9dytNYXRoLmltdWwoQmUsZW4pfDA7dmFyIGhvPShoZSsoXz1fK01hdGguaW11bChMZSx5dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLCR0KXwwKStNYXRoLmltdWwoSGUseXQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLCR0KXwwKSsocD4+''@;'; put 'put ''PjEzKXwwKSsoaG8+Pj4yNil8MCxobyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQWUsbm4pLHA9KHA9TWF0aC5pbXVsKEFlLEduKSkrTWF0aC5pbXVsKGplLG5uKXwwLHc9TWF0aC5pbXVsKGplLEduKSxfPV8rTWF0aC5pbXVsKFplLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsZG4pfDApK01h''@;'; put 'put ''dGguaW11bChjdCxmdCl8MCx3PXcrTWF0aC5pbXVsKGN0LGRuKXwwLF89XytNYXRoLmltdWwoSWUsd3QpfDAscD0ocD1wK01hdGguaW11bChJZSxqdCl8MCkrTWF0aC5pbXVsKFhlLHd0KXwwLHc9dytNYXRoLmltdWwoWGUsanQpfDAsXz1fK01hdGguaW11bChGZSxIdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEZlLHBuKXwwKStNYXRoLmltdWwod2UsSHQpfDAsdz13K01hdGguaW11bCh3ZSxwbil8MCxfPV8rTWF0aC5pbXVsKFVlLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsZW4pfDApK01hdGguaW11bChxZSxFdCl8MCx3PXcrTWF0aC5pbXVsKHFlLGVuKXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''RGUseXQpfDAscD0ocD1wK01hdGguaW11bChEZSwkdCl8MCkrTWF0aC5pbXVsKEJlLHl0KXwwLHc9dytNYXRoLmltdWwoQmUsJHQpfDA7dmFyIGJyPShoZSsoXz1fK01hdGguaW11bChMZSx6dCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLF9uKXwwKStNYXRoLmltdWwoSGUs''@;'; put 'put ''enQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLF9uKXwwKSsocD4+PjEzKXwwKSsoYnI+Pj4yNil8MCxiciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoc3Qsbm4pLHA9KHA9TWF0aC5pbXVsKHN0LEduKSkrTWF0aC5pbXVsKHh0LG5uKXwwLHc9TWF0aC5pbXVsKHh0LEduKSxfPV8r''@;'; put 'put ''TWF0aC5pbXVsKEFlLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsZG4pfDApK01hdGguaW11bChqZSxmdCl8MCx3PXcrTWF0aC5pbXVsKGplLGRuKXwwLF89XytNYXRoLmltdWwoWmUsd3QpfDAscD0ocD1wK01hdGguaW11bChaZSxqdCl8MCkrTWF0aC5pbXVsKGN0LHd0KXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoY3QsanQpfDAsXz1fK01hdGguaW11bChJZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLHBuKXwwKStNYXRoLmltdWwoWGUsSHQpfDAsdz13K01hdGguaW11bChYZSxwbil8MCxfPV8rTWF0aC5pbXVsKEZlLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsZW4pfDApK01hdGguaW11''@;'; put 'put ''bCh3ZSxFdCl8MCx3PXcrTWF0aC5pbXVsKHdlLGVuKXwwLF89XytNYXRoLmltdWwoVWUseXQpfDAscD0ocD1wK01hdGguaW11bChVZSwkdCl8MCkrTWF0aC5pbXVsKHFlLHl0KXwwLHc9dytNYXRoLmltdWwocWUsJHQpfDAsXz1fK01hdGguaW11bChEZSx6dCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KERlLF9uKXwwKStNYXRoLmltdWwoQmUsenQpfDAsdz13K01hdGguaW11bChCZSxfbil8MDt2YXIgTGk9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHJuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsUG4pfDApK01hdGguaW11bChIZSxybil8MCkpPDwxMyl8MDtoZT0oKHc9dytN''@;'; put 'put ''YXRoLmltdWwoSGUsUG4pfDApKyhwPj4+MTMpfDApKyhMaT4+PjI2KXwwLExpJj02NzEwODg2MyxfPU1hdGguaW11bChPdCxubikscD0ocD1NYXRoLmltdWwoT3QsR24pKStNYXRoLmltdWwoS3Qsbm4pfDAsdz1NYXRoLmltdWwoS3QsR24pLF89XytNYXRoLmltdWwoc3QsZnQpfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bChzdCxkbil8MCkrTWF0aC5pbXVsKHh0LGZ0KXwwLHc9dytNYXRoLmltdWwoeHQsZG4pfDAsXz1fK01hdGguaW11bChBZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLGp0KXwwKStNYXRoLmltdWwoamUsd3QpfDAsdz13K01hdGguaW11bChqZSxqdCl8MCxfPV8rTWF0aC5p''@;'; put 'put ''bXVsKFplLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUscG4pfDApK01hdGguaW11bChjdCxIdCl8MCx3PXcrTWF0aC5pbXVsKGN0LHBuKXwwLF89XytNYXRoLmltdWwoSWUsRXQpfDAscD0ocD1wK01hdGguaW11bChJZSxlbil8MCkrTWF0aC5pbXVsKFhlLEV0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''WGUsZW4pfDAsXz1fK01hdGguaW11bChGZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLCR0KXwwKStNYXRoLmltdWwod2UseXQpfDAsdz13K01hdGguaW11bCh3ZSwkdCl8MCxfPV8rTWF0aC5pbXVsKFVlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsX24pfDApK01hdGguaW11bChxZSx6''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKHFlLF9uKXwwLF89XytNYXRoLmltdWwoRGUscm4pfDAscD0ocD1wK01hdGguaW11bChEZSxQbil8MCkrTWF0aC5pbXVsKEJlLHJuKXwwLHc9dytNYXRoLmltdWwoQmUsUG4pfDA7dmFyIGxvPShoZSsoXz1fK01hdGguaW11bChMZSxYdCl8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKExlLEpuKXwwKStNYXRoLmltdWwoSGUsWHQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLEpuKXwwKSsocD4+PjEzKXwwKSsobG8+Pj4yNil8MCxsbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsbm4pLHA9KHA9TWF0aC5pbXVsKEJ0LEduKSkr''@;'; put 'put ''TWF0aC5pbXVsKHluLG5uKXwwLHc9TWF0aC5pbXVsKHluLEduKSxfPV8rTWF0aC5pbXVsKE90LGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsZG4pfDApK01hdGguaW11bChLdCxmdCl8MCx3PXcrTWF0aC5pbXVsKEt0LGRuKXwwLF89XytNYXRoLmltdWwoc3Qsd3QpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChzdCxqdCl8MCkrTWF0aC5pbXVsKHh0LHd0KXwwLHc9dytNYXRoLmltdWwoeHQsanQpfDAsXz1fK01hdGguaW11bChBZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLHBuKXwwKStNYXRoLmltdWwoamUsSHQpfDAsdz13K01hdGguaW11bChqZSxwbil8MCxfPV8rTWF0aC5pbXVsKFpl''@;'; put 'put ''LEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsZW4pfDApK01hdGguaW11bChjdCxFdCl8MCx3PXcrTWF0aC5pbXVsKGN0LGVuKXwwLF89XytNYXRoLmltdWwoSWUseXQpfDAscD0ocD1wK01hdGguaW11bChJZSwkdCl8MCkrTWF0aC5pbXVsKFhlLHl0KXwwLHc9dytNYXRoLmltdWwoWGUsJHQp''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChGZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLF9uKXwwKStNYXRoLmltdWwod2UsenQpfDAsdz13K01hdGguaW11bCh3ZSxfbil8MCxfPV8rTWF0aC5pbXVsKFVlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsUG4pfDApK01hdGguaW11bChxZSxybil8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKHFlLFBuKXwwLF89XytNYXRoLmltdWwoRGUsWHQpfDAscD0ocD1wK01hdGguaW11bChEZSxKbil8MCkrTWF0aC5pbXVsKEJlLFh0KXwwLHc9dytNYXRoLmltdWwoQmUsSm4pfDA7dmFyIFVuPShoZSsoXz1fK01hdGguaW11bChMZSxhbil8MCl8MCkrKCg4MTkxJihwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKExlLHRuKXwwKStNYXRoLmltdWwoSGUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLHRuKXwwKSsocD4+PjEzKXwwKSsoVW4+Pj4yNil8MCxVbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsZnQpLHA9KHA9TWF0aC5pbXVsKEJ0LGRuKSkrTWF0aC5p''@;'; put 'put ''bXVsKHluLGZ0KXwwLHc9TWF0aC5pbXVsKHluLGRuKSxfPV8rTWF0aC5pbXVsKE90LHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsanQpfDApK01hdGguaW11bChLdCx3dCl8MCx3PXcrTWF0aC5pbXVsKEt0LGp0KXwwLF89XytNYXRoLmltdWwoc3QsSHQpfDAscD0ocD1wK01hdGguaW11bChz''@;'; put 'put ''dCxwbil8MCkrTWF0aC5pbXVsKHh0LEh0KXwwLHc9dytNYXRoLmltdWwoeHQscG4pfDAsXz1fK01hdGguaW11bChBZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLGVuKXwwKStNYXRoLmltdWwoamUsRXQpfDAsdz13K01hdGguaW11bChqZSxlbil8MCxfPV8rTWF0aC5pbXVsKFplLHl0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoWmUsJHQpfDApK01hdGguaW11bChjdCx5dCl8MCx3PXcrTWF0aC5pbXVsKGN0LCR0KXwwLF89XytNYXRoLmltdWwoSWUsenQpfDAscD0ocD1wK01hdGguaW11bChJZSxfbil8MCkrTWF0aC5pbXVsKFhlLHp0KXwwLHc9dytNYXRoLmltdWwoWGUsX24pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChGZSxybil8MCxwPShwPXArTWF0aC5pbXVsKEZlLFBuKXwwKStNYXRoLmltdWwod2Uscm4pfDAsdz13K01hdGguaW11bCh3ZSxQbil8MCxfPV8rTWF0aC5pbXVsKFVlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsSm4pfDApK01hdGguaW11bChxZSxYdCl8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKHFlLEpuKXwwO3ZhciBYaT0oaGUrKF89XytNYXRoLmltdWwoRGUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChEZSx0bil8MCkrTWF0aC5pbXVsKEJlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChCZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+''@;'; put 'put ''MjYpfDAsWGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LHd0KSxwPShwPU1hdGguaW11bChCdCxqdCkpK01hdGguaW11bCh5bix3dCl8MCx3PU1hdGguaW11bCh5bixqdCksXz1fK01hdGguaW11bChPdCxIdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LHBuKXwwKStNYXRoLmltdWwoS3QsSHQp''@;'; put 'put ''fDAsdz13K01hdGguaW11bChLdCxwbil8MCxfPV8rTWF0aC5pbXVsKHN0LEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsZW4pfDApK01hdGguaW11bCh4dCxFdCl8MCx3PXcrTWF0aC5pbXVsKHh0LGVuKXwwLF89XytNYXRoLmltdWwoQWUseXQpfDAscD0ocD1wK01hdGguaW11bChBZSwkdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGplLHl0KXwwLHc9dytNYXRoLmltdWwoamUsJHQpfDAsXz1fK01hdGguaW11bChaZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKFplLF9uKXwwKStNYXRoLmltdWwoY3QsenQpfDAsdz13K01hdGguaW11bChjdCxfbil8MCxfPV8rTWF0aC5pbXVsKEllLHJuKXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoSWUsUG4pfDApK01hdGguaW11bChYZSxybil8MCx3PXcrTWF0aC5pbXVsKFhlLFBuKXwwLF89XytNYXRoLmltdWwoRmUsWHQpfDAscD0ocD1wK01hdGguaW11bChGZSxKbil8MCkrTWF0aC5pbXVsKHdlLFh0KXwwLHc9dytNYXRoLmltdWwod2UsSm4pfDA7dmFyIFFpPSho''@;'; put 'put ''ZSsoXz1fK01hdGguaW11bChVZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFVlLHRuKXwwKStNYXRoLmltdWwocWUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKHFlLHRuKXwwKSsocD4+PjEzKXwwKSsoUWk+Pj4yNil8MCxRaSY9NjcxMDg4NjMsXz1NYXRo''@;'; put 'put ''LmltdWwoQnQsSHQpLHA9KHA9TWF0aC5pbXVsKEJ0LHBuKSkrTWF0aC5pbXVsKHluLEh0KXwwLHc9TWF0aC5pbXVsKHluLHBuKSxfPV8rTWF0aC5pbXVsKE90LEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsZW4pfDApK01hdGguaW11bChLdCxFdCl8MCx3PXcrTWF0aC5pbXVsKEt0LGVuKXww''@;'; put 'put ''LF89XytNYXRoLmltdWwoc3QseXQpfDAscD0ocD1wK01hdGguaW11bChzdCwkdCl8MCkrTWF0aC5pbXVsKHh0LHl0KXwwLHc9dytNYXRoLmltdWwoeHQsJHQpfDAsXz1fK01hdGguaW11bChBZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLF9uKXwwKStNYXRoLmltdWwoamUsenQpfDAsdz13''@;'; put 'put ''K01hdGguaW11bChqZSxfbil8MCxfPV8rTWF0aC5pbXVsKFplLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsUG4pfDApK01hdGguaW11bChjdCxybil8MCx3PXcrTWF0aC5pbXVsKGN0LFBuKXwwLF89XytNYXRoLmltdWwoSWUsWHQpfDAscD0ocD1wK01hdGguaW11bChJZSxKbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKFhlLFh0KXwwLHc9dytNYXRoLmltdWwoWGUsSm4pfDA7dmFyIGZvPShoZSsoXz1fK01hdGguaW11bChGZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEZlLHRuKXwwKStNYXRoLmltdWwod2UsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKHdlLHRu''@;'; put 'put ''KXwwKSsocD4+PjEzKXwwKSsoZm8+Pj4yNil8MCxmbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsRXQpLHA9KHA9TWF0aC5pbXVsKEJ0LGVuKSkrTWF0aC5pbXVsKHluLEV0KXwwLHc9TWF0aC5pbXVsKHluLGVuKSxfPV8rTWF0aC5pbXVsKE90LHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3Qs''@;'; put 'put ''JHQpfDApK01hdGguaW11bChLdCx5dCl8MCx3PXcrTWF0aC5pbXVsKEt0LCR0KXwwLF89XytNYXRoLmltdWwoc3QsenQpfDAscD0ocD1wK01hdGguaW11bChzdCxfbil8MCkrTWF0aC5pbXVsKHh0LHp0KXwwLHc9dytNYXRoLmltdWwoeHQsX24pfDAsXz1fK01hdGguaW11bChBZSxybil8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEFlLFBuKXwwKStNYXRoLmltdWwoamUscm4pfDAsdz13K01hdGguaW11bChqZSxQbil8MCxfPV8rTWF0aC5pbXVsKFplLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsSm4pfDApK01hdGguaW11bChjdCxYdCl8MCx3PXcrTWF0aC5pbXVsKGN0LEpuKXwwO3ZhciB2''@;'; put 'put ''bz0oaGUrKF89XytNYXRoLmltdWwoSWUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChJZSx0bil8MCkrTWF0aC5pbXVsKFhlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChYZSx0bil8MCkrKHA+Pj4xMyl8MCkrKHZvPj4+MjYpfDAsdm8mPTY3MTA4ODYzLF89''@;'; put 'put ''TWF0aC5pbXVsKEJ0LHl0KSxwPShwPU1hdGguaW11bChCdCwkdCkpK01hdGguaW11bCh5bix5dCl8MCx3PU1hdGguaW11bCh5biwkdCksXz1fK01hdGguaW11bChPdCx6dCl8MCxwPShwPXArTWF0aC5pbXVsKE90LF9uKXwwKStNYXRoLmltdWwoS3QsenQpfDAsdz13K01hdGguaW11bChLdCxf''@;'; put 'put ''bil8MCxfPV8rTWF0aC5pbXVsKHN0LHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsUG4pfDApK01hdGguaW11bCh4dCxybil8MCx3PXcrTWF0aC5pbXVsKHh0LFBuKXwwLF89XytNYXRoLmltdWwoQWUsWHQpfDAscD0ocD1wK01hdGguaW11bChBZSxKbil8MCkrTWF0aC5pbXVsKGplLFh0KXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoamUsSm4pfDA7dmFyIFJyPShoZSsoXz1fK01hdGguaW11bChaZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFplLHRuKXwwKStNYXRoLmltdWwoY3QsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKGN0LHRuKXwwKSsocD4+PjEzKXww''@;'; put 'put ''KSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsenQpLHA9KHA9TWF0aC5pbXVsKEJ0LF9uKSkrTWF0aC5pbXVsKHluLHp0KXwwLHc9TWF0aC5pbXVsKHluLF9uKSxfPV8rTWF0aC5pbXVsKE90LHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsUG4pfDApK01hdGguaW11''@;'; put 'put ''bChLdCxybil8MCx3PXcrTWF0aC5pbXVsKEt0LFBuKXwwLF89XytNYXRoLmltdWwoc3QsWHQpfDAscD0ocD1wK01hdGguaW11bChzdCxKbil8MCkrTWF0aC5pbXVsKHh0LFh0KXwwLHc9dytNYXRoLmltdWwoeHQsSm4pfDA7dmFyIFlpPShoZSsoXz1fK01hdGguaW11bChBZSxhbil8MCl8MCkr''@;'; put 'put ''KCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEFlLHRuKXwwKStNYXRoLmltdWwoamUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKGplLHRuKXwwKSsocD4+PjEzKXwwKSsoWWk+Pj4yNil8MCxZaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQscm4pLHA9KHA9TWF0aC5pbXVsKEJ0''@;'; put 'put ''LFBuKSkrTWF0aC5pbXVsKHluLHJuKXwwLHc9TWF0aC5pbXVsKHluLFBuKSxfPV8rTWF0aC5pbXVsKE90LFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsSm4pfDApK01hdGguaW11bChLdCxYdCl8MCx3PXcrTWF0aC5pbXVsKEt0LEpuKXwwO3ZhciB6bz0oaGUrKF89XytNYXRoLmltdWwoc3Qs''@;'; put 'put ''YW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChzdCx0bil8MCkrTWF0aC5pbXVsKHh0LGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bCh4dCx0bil8MCkrKHA+Pj4xMyl8MCkrKHpvPj4+MjYpfDAsem8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LFh0KSxwPShwPU1h''@;'; put 'put ''dGguaW11bChCdCxKbikpK01hdGguaW11bCh5bixYdCl8MCx3PU1hdGguaW11bCh5bixKbik7dmFyIGlzPShoZSsoXz1fK01hdGguaW11bChPdCxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKE90LHRuKXwwKStNYXRoLmltdWwoS3QsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcr''@;'; put 'put ''TWF0aC5pbXVsKEt0LHRuKXwwKSsocD4+PjEzKXwwKSsoaXM+Pj4yNil8MCxpcyY9NjcxMDg4NjM7dmFyIHVzPShoZSsoXz1NYXRoLmltdWwoQnQsYW4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKEJ0LHRuKSkrTWF0aC5pbXVsKHluLGFuKXwwKSk8PDEzKXwwO3JldHVybiBoZT0oKHc9''@;'; put 'put ''TWF0aC5pbXVsKHluLHRuKSkrKHA+Pj4xMyl8MCkrKHVzPj4+MjYpfDAsdXMmPTY3MTA4ODYzLGNlWzBdPXVpLGNlWzFdPUFyLGNlWzJdPWhyLGNlWzNdPWRpLGNlWzRdPWZpLGNlWzVdPWhvLGNlWzZdPWJyLGNlWzddPUxpLGNlWzhdPWxvLGNlWzldPVVuLGNlWzEwXT1YaSxjZVsxMV09UWks''@;'; put 'put ''Y2VbMTJdPWZvLGNlWzEzXT12byxjZVsxNF09UnIsY2VbMTVdPVlpLGNlWzE2XT16byxjZVsxN109aXMsY2VbMThdPXVzLDAhPT1oZSYmKGNlWzE5XT1oZSxrLmxlbmd0aCsrKSxrfTtmdW5jdGlvbiByZShnLEMsayl7cmV0dXJuKG5ldyBpZSkubXVscChnLEMsayl9ZnVuY3Rpb24gaWUoZyxD''@;'; put 'put ''KXt0aGlzLng9Zyx0aGlzLnk9Q31NYXRoLmltdWx8fChlZT1KKSxFLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihnLEMpe3ZhciBfPXRoaXMubGVuZ3RoK2cubGVuZ3RoO3JldHVybiAxMD09PXRoaXMubGVuZ3RoJiYxMD09PWcubGVuZ3RoP2VlKHRoaXMsZyxDKTpfPDYzP0oodGhpcyxnLEMp''@;'; put 'put ''Ol88MTAyND9mdW5jdGlvbihwLHcsSyl7Sy5uZWdhdGl2ZT13Lm5lZ2F0aXZlXnAubmVnYXRpdmUsSy5sZW5ndGg9cC5sZW5ndGgrdy5sZW5ndGg7Zm9yKHZhciB0ZT0wLGNlPTAsaGU9MDtoZTxLLmxlbmd0aC0xO2hlKyspe3ZhciBTZT1jZTtjZT0wO2Zvcih2YXIgTGU9NjcxMDg4NjMmdGUs''@;'; put 'put ''SGU9TWF0aC5taW4oaGUsdy5sZW5ndGgtMSkseGU9TWF0aC5tYXgoMCxoZS1wLmxlbmd0aCsxKTt4ZTw9SGU7eGUrKyl7dmFyIEJlPSgwfHAud29yZHNbaGUteGVdKSooMHx3LndvcmRzW3hlXSksR2U9NjcxMDg4NjMmQmU7TGU9NjcxMDg4NjMmKEdlPUdlK0xlfDApLGNlKz0oU2U9KFNlPVNl''@;'; put 'put ''KyhCZS82NzEwODg2NHwwKXwwKSsoR2U+Pj4yNil8MCk+Pj4yNixTZSY9NjcxMDg4NjN9Sy53b3Jkc1toZV09TGUsdGU9U2UsU2U9Y2V9cmV0dXJuIDAhPT10ZT9LLndvcmRzW2hlXT10ZTpLLmxlbmd0aC0tLEsuc3RyaXAoKX0odGhpcyxnLEMpOnJlKHRoaXMsZyxDKX0saWUucHJvdG90eXBl''@;'; put 'put ''Lm1ha2VSQlQ9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxrPUUucHJvdG90eXBlLl9jb3VudEJpdHMoZyktMSxfPTA7XzxnO18rKylDW19dPXRoaXMucmV2QmluKF8sayxnKTtyZXR1cm4gQ30saWUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihnLEMsayl7aWYoMD09PWd8''@;'; put 'put ''fGc9PT1rLTEpcmV0dXJuIGc7Zm9yKHZhciBfPTAscD0wO3A8QztwKyspX3w9KDEmZyk8PEMtcC0xLGc+Pj0xO3JldHVybiBffSxpZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihnLEMsayxfLHAsdyl7Zm9yKHZhciBLPTA7Szx3O0srKylfW0tdPUNbZ1tLXV0scFtLXT1rW2dbS11dfSxp''@;'; put 'put ''ZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGcsQyxrLF8scCx3KXt0aGlzLnBlcm11dGUodyxnLEMsayxfLHApO2Zvcih2YXIgSz0xO0s8cDtLPDw9MSlmb3IodmFyIHRlPUs8PDEsY2U9TWF0aC5jb3MoMipNYXRoLlBJL3RlKSxoZT1NYXRoLnNpbigyKk1hdGguUEkvdGUpLFNlPTA7''@;'; put 'put ''U2U8cDtTZSs9dGUpZm9yKHZhciBMZT1jZSxIZT1oZSx4ZT0wO3hlPEs7eGUrKyl7dmFyIERlPWtbU2UreGVdLEJlPV9bU2UreGVdLEdlPWtbU2UreGUrS10sVWU9X1tTZSt4ZStLXSxxZT1MZSpHZS1IZSpVZTtVZT1MZSpVZStIZSpHZSxrW1NlK3hlXT1EZSsoR2U9cWUpLF9bU2UreGVdPUJl''@;'; put 'put ''K1VlLGtbU2UreGUrS109RGUtR2UsX1tTZSt4ZStLXT1CZS1VZSx4ZSE9PXRlJiYocWU9Y2UqTGUtaGUqSGUsSGU9Y2UqSGUraGUqTGUsTGU9cWUpfX0saWUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGcsQyl7dmFyIGs9MXxNYXRoLm1heChDLGcpLF89MSZrLHA9MDtmb3Ioaz1r''@;'; put 'put ''LzJ8MDtrO2s+Pj49MSlwKys7cmV0dXJuIDE8PHArMStffSxpZS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGcsQyxrKXtpZighKGs8PTEpKWZvcih2YXIgXz0wO188ay8yO18rKyl7dmFyIHA9Z1tfXTtnW19dPWdbay1fLTFdLGdbay1fLTFdPXAscD1DW19dLENbX109LUNbay1fLTFd''@;'; put 'put ''LENbay1fLTFdPS1wfX0saWUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihnLEMpe2Zvcih2YXIgaz0wLF89MDtfPEMvMjtfKyspe3ZhciBwPTgxOTIqTWF0aC5yb3VuZChnWzIqXysxXS9DKStNYXRoLnJvdW5kKGdbMipfXS9DKStrO2dbX109NjcxMDg4NjMmcCxrPXA8NjcxMDg4''@;'; put 'put ''NjQ/MDpwLzY3MTA4ODY0fDB9cmV0dXJuIGd9LGllLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGcsQyxrLF8pe2Zvcih2YXIgcD0wLHc9MDt3PEM7dysrKWtbMip3XT04MTkxJihwKz0wfGdbd10pLGtbMip3KzFdPTgxOTEmKHA+Pj49MTMpLHA+Pj49MTM7Zm9yKHc9MipDO3c8Xzsr''@;'; put 'put ''K3cpa1t3XT0wO0QoMD09PXApLEQoISgtODE5MiZwKSl9LGllLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz1uZXcgQXJyYXkoZyksaz0wO2s8ZztrKyspQ1trXT0wO3JldHVybiBDfSxpZS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihnLEMsayl7dmFyIF89Mip0aGlzLmd1''@;'; put 'put ''ZXNzTGVuMTNiKGcubGVuZ3RoLEMubGVuZ3RoKSxwPXRoaXMubWFrZVJCVChfKSx3PXRoaXMuc3R1YihfKSxLPW5ldyBBcnJheShfKSx0ZT1uZXcgQXJyYXkoXyksY2U9bmV3IEFycmF5KF8pLGhlPW5ldyBBcnJheShfKSxTZT1uZXcgQXJyYXkoXyksTGU9bmV3IEFycmF5KF8pLEhlPWsud29y''@;'; put 'put ''ZHM7SGUubGVuZ3RoPV8sdGhpcy5jb252ZXJ0MTNiKGcud29yZHMsZy5sZW5ndGgsSyxfKSx0aGlzLmNvbnZlcnQxM2IoQy53b3JkcyxDLmxlbmd0aCxoZSxfKSx0aGlzLnRyYW5zZm9ybShLLHcsdGUsY2UsXyxwKSx0aGlzLnRyYW5zZm9ybShoZSx3LFNlLExlLF8scCk7Zm9yKHZhciB4ZT0w''@;'; put 'put ''O3hlPF87eGUrKyl7dmFyIERlPXRlW3hlXSpTZVt4ZV0tY2VbeGVdKkxlW3hlXTtjZVt4ZV09dGVbeGVdKkxlW3hlXStjZVt4ZV0qU2VbeGVdLHRlW3hlXT1EZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUodGUsY2UsXyksdGhpcy50cmFuc2Zvcm0odGUsY2UsSGUsdyxfLHApLHRoaXMuY29uanVn''@;'; put 'put ''YXRlKEhlLHcsXyksdGhpcy5ub3JtYWxpemUxM2IoSGUsXyksay5uZWdhdGl2ZT1nLm5lZ2F0aXZlXkMubmVnYXRpdmUsay5sZW5ndGg9Zy5sZW5ndGgrQy5sZW5ndGgsay5zdHJpcCgpfSxFLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyl7dmFyIEM9bmV3IEUobnVsbCk7cmV0dXJuIEMud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2cubGVuZ3RoKSx0aGlzLm11bFRvKGcsQyl9LEUucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oZyl7dmFyIEM9bmV3IEUobnVsbCk7cmV0dXJuIEMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2cubGVuZ3RoKSxyZSh0aGlzLGcsQyl9LEUucHJv''@;'; put 'put ''dG90eXBlLmltdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhnLHRoaXMpfSxFLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyksRChnPDY3MTA4ODY0KTtmb3IodmFyIEM9MCxrPTA7azx0aGlzLmxlbmd0aDtrKyspe3ZhciBf''@;'; put 'put ''PSgwfHRoaXMud29yZHNba10pKmcscD0oNjcxMDg4NjMmXykrKDY3MTA4ODYzJkMpO0M+Pj0yNixDKz1fLzY3MTA4ODY0fDAsQys9cD4+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmcH1yZXR1cm4gMCE9PUMmJih0aGlzLndvcmRzW2tdPUMsdGhpcy5sZW5ndGgrKyksdGhpc30sRS5wcm90''@;'; put 'put ''b3R5cGUubXVsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGcpfSxFLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEUu''@;'; put 'put ''cHJvdG90eXBlLnBvdz1mdW5jdGlvbihnKXt2YXIgQz1mdW5jdGlvbih3KXtmb3IodmFyIEs9bmV3IEFycmF5KHcuYml0TGVuZ3RoKCkpLHRlPTA7dGU8Sy5sZW5ndGg7dGUrKyl7dmFyIGhlPXRlJTI2O0tbdGVdPSh3LndvcmRzW3RlLzI2fDBdJjE8PGhlKT4+PmhlfXJldHVybiBLfShnKTtp''@;'; put 'put ''ZigwPT09Qy5sZW5ndGgpcmV0dXJuIG5ldyBFKDEpO2Zvcih2YXIgaz10aGlzLF89MDtfPEMubGVuZ3RoJiYwPT09Q1tfXTtfKyssaz1rLnNxcigpKTtpZigrK188Qy5sZW5ndGgpZm9yKHZhciBwPWsuc3FyKCk7XzxDLmxlbmd0aDtfKysscD1wLnNxcigpKTAhPT1DW19dJiYoaz1rLm11bChw''@;'; put 'put ''KSk7cmV0dXJuIGt9LEUucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIEMsaz1nJTI2LF89KGctaykvMjYscD02NzEwODg2Mz4+PjI2LWs8PDI2LWs7aWYoMCE9PWspe3ZhciB3PTA7Zm9yKEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7''@;'; put 'put ''dmFyIEs9dGhpcy53b3Jkc1tDXSZwO3RoaXMud29yZHNbQ109KDB8dGhpcy53b3Jkc1tDXSktSzw8a3x3LHc9Sz4+PjI2LWt9dyYmKHRoaXMud29yZHNbQ109dyx0aGlzLmxlbmd0aCsrKX1pZigwIT09Xyl7Zm9yKEM9dGhpcy5sZW5ndGgtMTtDPj0wO0MtLSl0aGlzLndvcmRzW0MrX109dGhp''@;'; put 'put ''cy53b3Jkc1tDXTtmb3IoQz0wO0M8XztDKyspdGhpcy53b3Jkc1tDXT0wO3RoaXMubGVuZ3RoKz1ffXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKGcpe3JldHVybiBEKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihnKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aXVzaHJuPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXztEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCksXz1DPyhDLUMlMjYpLzI2OjA7dmFyIHA9ZyUyNix3PU1hdGgubWluKChnLXApLzI2LHRoaXMubGVuZ3RoKSxLPTY3MTA4ODYzXjY3MTA4ODYzPj4+cDw8cCx0ZT1rO2lmKF8tPXcsXz1NYXRo''@;'; put 'put ''Lm1heCgwLF8pLHRlKXtmb3IodmFyIGNlPTA7Y2U8dztjZSsrKXRlLndvcmRzW2NlXT10aGlzLndvcmRzW2NlXTt0ZS5sZW5ndGg9d31pZigwIT09dylpZih0aGlzLmxlbmd0aD53KWZvcih0aGlzLmxlbmd0aC09dyxjZT0wO2NlPHRoaXMubGVuZ3RoO2NlKyspdGhpcy53b3Jkc1tjZV09dGhp''@;'; put 'put ''cy53b3Jkc1tjZSt3XTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBoZT0wO2ZvcihjZT10aGlzLmxlbmd0aC0xO2NlPj0wJiYoMCE9PWhlfHxjZT49Xyk7Y2UtLSl7dmFyIFNlPTB8dGhpcy53b3Jkc1tjZV07dGhpcy53b3Jkc1tjZV09aGU8PDI2LXB8U2U+Pj5wLGhl''@;'; put 'put ''PVNlJkt9cmV0dXJuIHRlJiYwIT09aGUmJih0ZS53b3Jkc1t0ZS5sZW5ndGgrK109aGUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGcsQyxrKXtyZXR1cm4gRCgwPT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oZyxDLGspfSxFLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oZyl9LEUucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5z''@;'; put 'put ''aHJuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oZyl9LEUucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGcpfSxFLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7''@;'; put 'put ''dmFyIEM9ZyUyNixrPShnLUMpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PWt8fCEodGhpcy53b3Jkc1trXSYxPDxDKSl9LEUucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIEM9ZyUyNixrPShnLUMpLzI2O3JldHVybiBEKDA9PT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9az90aGlzOigwIT09QyYmaysrLHRoaXMubGVuZ3RoPU1hdGgubWluKGssdGhpcy5sZW5ndGgpLDAhPT1DJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4''@;'; put 'put ''NjNeNjcxMDg4NjM+Pj5DPDxDKSx0aGlzLnN0cmlwKCkpfSxFLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihnKX0sRS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIEQoIm51bWJlciI9PXR5cGVvZiBnKSxEKGc8NjcxMDg4''@;'; put 'put ''NjQpLGc8MD90aGlzLmlzdWJuKC1nKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGc/KHRoaXMud29yZHNbMF09Zy0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGcp''@;'; put 'put ''LHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihnKX0sRS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGcpe3RoaXMud29yZHNbMF0rPWc7Zm9yKHZhciBDPTA7Qzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tDXT49NjcxMDg4NjQ7QysrKXRoaXMud29yZHNbQ10tPTY3MTA4ODY0''@;'; put 'put ''LEM9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbQysxXT0xOnRoaXMud29yZHNbQysxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxDKzEpLHRoaXN9LEUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGcpe2lmKEQoIm51bWJlciI9PXR5cGVvZiBnKSxEKGc8''@;'; put 'put ''NjcxMDg4NjQpLGc8MClyZXR1cm4gdGhpcy5pYWRkbigtZyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGcpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWcsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBd''@;'; put 'put ''PDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPDA7QysrKXRoaXMud29yZHNbQ10rPTY3MTA4ODY0LHRoaXMud29yZHNbQysxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxF''@;'; put 'put ''LnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oZyl9LEUucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihnKX0sRS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTAsdGhpc30sRS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LEUucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihnLEMsayl7dmFyIF8scDt0aGlzLl9leHBhbmQoZy5sZW5ndGgrayk7dmFyIEs9MDtmb3IoXz0wO188Zy5sZW5ndGg7''@;'; put 'put ''XysrKXtwPSgwfHRoaXMud29yZHNbXytrXSkrSzt2YXIgdGU9KDB8Zy53b3Jkc1tfXSkqQztLPSgocC09NjcxMDg4NjMmdGUpPj4yNiktKHRlLzY3MTA4ODY0fDApLHRoaXMud29yZHNbXytrXT02NzEwODg2MyZwfWZvcig7Xzx0aGlzLmxlbmd0aC1rO18rKylLPShwPSgwfHRoaXMud29yZHNb''@;'; put 'put ''XytrXSkrSyk+PjI2LHRoaXMud29yZHNbXytrXT02NzEwODg2MyZwO2lmKDA9PT1LKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9yKEQoLTE9PT1LKSxLPTAsXz0wO188dGhpcy5sZW5ndGg7XysrKUs9KHA9LSgwfHRoaXMud29yZHNbX10pK0spPj4yNix0aGlzLndvcmRzW19dPTY3MTA4ODYzJnA7''@;'; put 'put ''cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGcsQyl7dmFyIGssXz10aGlzLmNsb25lKCkscD1nLHc9MHxwLndvcmRzW3AubGVuZ3RoLTFdOzAhPShrPTI2LXRoaXMuX2NvdW50Qml0cyh3KSkmJihwPXAudXNobG4oayks''@;'; put 'put ''Xy5pdXNobG4oayksdz0wfHAud29yZHNbcC5sZW5ndGgtMV0pO3ZhciBLLHRlPV8ubGVuZ3RoLXAubGVuZ3RoO2lmKCJtb2QiIT09Qyl7KEs9bmV3IEUobnVsbCkpLmxlbmd0aD10ZSsxLEsud29yZHM9bmV3IEFycmF5KEsubGVuZ3RoKTtmb3IodmFyIGNlPTA7Y2U8Sy5sZW5ndGg7Y2UrKylL''@;'; put 'put ''LndvcmRzW2NlXT0wfXZhciBoZT1fLmNsb25lKCkuX2lzaGxuc3VibXVsKHAsMSx0ZSk7MD09PWhlLm5lZ2F0aXZlJiYoXz1oZSxLJiYoSy53b3Jkc1t0ZV09MSkpO2Zvcih2YXIgU2U9dGUtMTtTZT49MDtTZS0tKXt2YXIgTGU9NjcxMDg4NjQqKDB8Xy53b3Jkc1twLmxlbmd0aCtTZV0pKygw''@;'; put 'put ''fF8ud29yZHNbcC5sZW5ndGgrU2UtMV0pO2ZvcihMZT1NYXRoLm1pbihMZS93fDAsNjcxMDg4NjMpLF8uX2lzaGxuc3VibXVsKHAsTGUsU2UpOzAhPT1fLm5lZ2F0aXZlOylMZS0tLF8ubmVnYXRpdmU9MCxfLl9pc2hsbnN1Ym11bChwLDEsU2UpLF8uaXNaZXJvKCl8fChfLm5lZ2F0aXZlXj0x''@;'; put 'put ''KTtLJiYoSy53b3Jkc1tTZV09TGUpfXJldHVybiBLJiZLLnN0cmlwKCksXy5zdHJpcCgpLCJkaXYiIT09QyYmMCE9PWsmJl8uaXVzaHJuKGspLHtkaXY6S3x8bnVsbCxtb2Q6X319LEUucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihnLEMsayl7cmV0dXJuIEQoIWcuaXNaZXJvKCkpLHRoaXMu''@;'; put 'put ''aXNaZXJvKCk/e2RpdjpuZXcgRSgwKSxtb2Q6bmV3IEUoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZT8odz10aGlzLm5lZygpLmRpdm1vZChnLEMpLCJtb2QiIT09QyYmKF89dy5kaXYubmVnKCkpLCJkaXYiIT09QyYmKHA9dy5tb2QubmVnKCksayYmMCE9PXAubmVnYXRp''@;'; put 'put ''dmUmJnAuaWFkZChnKSkse2RpdjpfLG1vZDpwfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlPyh3PXRoaXMuZGl2bW9kKGcubmVnKCksQyksIm1vZCIhPT1DJiYoXz13LmRpdi5uZWcoKSkse2RpdjpfLG1vZDp3Lm1vZH0pOnRoaXMubmVnYXRpdmUmZy5uZWdhdGl2ZT8odz10''@;'; put 'put ''aGlzLm5lZygpLmRpdm1vZChnLm5lZygpLEMpLCJkaXYiIT09QyYmKHA9dy5tb2QubmVnKCksayYmMCE9PXAubmVnYXRpdmUmJnAuaXN1YihnKSkse2Rpdjp3LmRpdixtb2Q6cH0pOmcubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChnKTwwP3tkaXY6bmV3IEUoMCksbW9kOnRoaXN9OjE9''@;'; put 'put ''PT1nLmxlbmd0aD8iZGl2Ij09PUM/e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09Qz97ZGl2Om51bGwsbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGcud29yZHNbMF0pLG1vZDpuZXcgRSh0aGlzLm1vZG4oZy53b3Jk''@;'; put 'put ''c1swXSkpfTp0aGlzLl93b3JkRGl2KGcsQyk7dmFyIF8scCx3fSxFLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsImRpdiIsITEpLmRpdn0sRS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJtb2QiLCExKS5tb2R9''@;'; put 'put ''LEUucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITApLm1vZH0sRS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZyl7dmFyIEM9dGhpcy5kaXZtb2QoZyk7aWYoQy5tb2QuaXNaZXJvKCkpcmV0dXJuIEMuZGl2O3ZhciBrPTAhPT1DLmRp''@;'; put 'put ''di5uZWdhdGl2ZT9DLm1vZC5pc3ViKGcpOkMubW9kLF89Zy51c2hybigxKSxwPWcuYW5kbG4oMSksdz1rLmNtcChfKTtyZXR1cm4gdzwwfHwxPT09cCYmMD09PXc/Qy5kaXY6MCE9PUMuZGl2Lm5lZ2F0aXZlP0MuZGl2LmlzdWJuKDEpOkMuZGl2LmlhZGRuKDEpfSxFLnByb3RvdHlwZS5tb2Ru''@;'; put 'put ''PWZ1bmN0aW9uKGcpe0QoZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz02NzEwODg2NCVnLGs9MCxfPXRoaXMubGVuZ3RoLTE7Xz49MDtfLS0paz0oQyprKygwfHRoaXMud29yZHNbX10pKSVnO3JldHVybiBrfSxFLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihnKXtEKGc8PTY3MTA4ODYzKTtmb3Io''@;'; put 'put ''dmFyIEM9MCxrPXRoaXMubGVuZ3RoLTE7az49MDtrLS0pe3ZhciBfPSgwfHRoaXMud29yZHNba10pKzY3MTA4ODY0KkM7dGhpcy53b3Jkc1trXT1fL2d8MCxDPV8lZ31yZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCku''@;'; put 'put ''aWRpdm4oZyl9LEUucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oZyl7RCgwPT09Zy5uZWdhdGl2ZSksRCghZy5pc1plcm8oKSk7dmFyIEM9dGhpcyxrPWcuY2xvbmUoKTtDPTAhPT1DLm5lZ2F0aXZlP0MudW1vZChnKTpDLmNsb25lKCk7Zm9yKHZhciBfPW5ldyBFKDEpLHA9bmV3IEUoMCksdz1u''@;'; put 'put ''ZXcgRSgwKSxLPW5ldyBFKDEpLHRlPTA7Qy5pc0V2ZW4oKSYmay5pc0V2ZW4oKTspQy5pdXNocm4oMSksay5pdXNocm4oMSksKyt0ZTtmb3IodmFyIGNlPWsuY2xvbmUoKSxoZT1DLmNsb25lKCk7IUMuaXNaZXJvKCk7KXtmb3IodmFyIFNlPTAsTGU9MTshKEMud29yZHNbMF0mTGUpJiZTZTwy''@;'; put 'put ''NjsrK1NlLExlPDw9MSk7aWYoU2U+MClmb3IoQy5pdXNocm4oU2UpO1NlLS0gPjA7KShfLmlzT2RkKCl8fHAuaXNPZGQoKSkmJihfLmlhZGQoY2UpLHAuaXN1YihoZSkpLF8uaXVzaHJuKDEpLHAuaXVzaHJuKDEpO2Zvcih2YXIgSGU9MCx4ZT0xOyEoay53b3Jkc1swXSZ4ZSkmJkhlPDI2Oysr''@;'; put 'put ''SGUseGU8PD0xKTtpZihIZT4wKWZvcihrLml1c2hybihIZSk7SGUtLSA+MDspKHcuaXNPZGQoKXx8Sy5pc09kZCgpKSYmKHcuaWFkZChjZSksSy5pc3ViKGhlKSksdy5pdXNocm4oMSksSy5pdXNocm4oMSk7Qy5jbXAoayk+PTA/KEMuaXN1YihrKSxfLmlzdWIodykscC5pc3ViKEspKTooay5p''@;'; put 'put ''c3ViKEMpLHcuaXN1YihfKSxLLmlzdWIocCkpfXJldHVybnthOncsYjpLLGdjZDprLml1c2hsbih0ZSl9fSxFLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oZyl7RCgwPT09Zy5uZWdhdGl2ZSksRCghZy5pc1plcm8oKSk7dmFyIEM9dGhpcyxrPWcuY2xvbmUoKTtDPTAhPT1DLm5lZ2F0aXZl''@;'; put 'put ''P0MudW1vZChnKTpDLmNsb25lKCk7Zm9yKHZhciBfLHA9bmV3IEUoMSksdz1uZXcgRSgwKSxLPWsuY2xvbmUoKTtDLmNtcG4oMSk+MCYmay5jbXBuKDEpPjA7KXtmb3IodmFyIHRlPTAsY2U9MTshKEMud29yZHNbMF0mY2UpJiZ0ZTwyNjsrK3RlLGNlPDw9MSk7aWYodGU+MClmb3IoQy5pdXNo''@;'; put 'put ''cm4odGUpO3RlLS0gPjA7KXAuaXNPZGQoKSYmcC5pYWRkKEspLHAuaXVzaHJuKDEpO2Zvcih2YXIgaGU9MCxTZT0xOyEoay53b3Jkc1swXSZTZSkmJmhlPDI2OysraGUsU2U8PD0xKTtpZihoZT4wKWZvcihrLml1c2hybihoZSk7aGUtLSA+MDspdy5pc09kZCgpJiZ3LmlhZGQoSyksdy5pdXNo''@;'; put 'put ''cm4oMSk7Qy5jbXAoayk+PTA/KEMuaXN1YihrKSxwLmlzdWIodykpOihrLmlzdWIoQyksdy5pc3ViKHApKX1yZXR1cm4oXz0wPT09Qy5jbXBuKDEpP3A6dykuY21wbigwKTwwJiZfLmlhZGQoZyksX30sRS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKGcpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJu''@;'; put 'put ''IGcuYWJzKCk7aWYoZy5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgQz10aGlzLmNsb25lKCksaz1nLmNsb25lKCk7Qy5uZWdhdGl2ZT0wLGsubmVnYXRpdmU9MDtmb3IodmFyIF89MDtDLmlzRXZlbigpJiZrLmlzRXZlbigpO18rKylDLml1c2hybigxKSxrLml1c2hybigxKTtmb3Io''@;'; put 'put ''Ozspe2Zvcig7Qy5pc0V2ZW4oKTspQy5pdXNocm4oMSk7Zm9yKDtrLmlzRXZlbigpOylrLml1c2hybigxKTt2YXIgcD1DLmNtcChrKTtpZihwPDApe3ZhciB3PUM7Qz1rLGs9d31lbHNlIGlmKDA9PT1wfHwwPT09ay5jbXBuKDEpKWJyZWFrO0MuaXN1YihrKX1yZXR1cm4gay5pdXNobG4oXyl9''@;'; put 'put ''LEUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZWdjZChnKS5hLnVtb2QoZyl9LEUucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiEoMSZ0aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4hKDEmfnRoaXMud29y''@;'; put 'put ''ZHNbMF0pfSxFLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZnfSxFLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyk7dmFyIEM9ZyUyNixrPShnLUMpLzI2LF89MTw8QztpZih0aGlzLmxlbmd0aDw9aylyZXR1''@;'; put 'put ''cm4gdGhpcy5fZXhwYW5kKGsrMSksdGhpcy53b3Jkc1trXXw9Xyx0aGlzO2Zvcih2YXIgcD1fLHc9azswIT09cCYmdzx0aGlzLmxlbmd0aDt3Kyspe3ZhciBLPTB8dGhpcy53b3Jkc1t3XTtwPShLKz1wKT4+PjI2LHRoaXMud29yZHNbd109SyY9NjcxMDg4NjN9cmV0dXJuIDAhPT1wJiYodGhp''@;'; put 'put ''cy53b3Jkc1t3XT1wLHRoaXMubGVuZ3RoKyspLHRoaXN9LEUucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxFLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKGcpe3ZhciBDLGs9ZzwwO2lmKDAhPT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlJiYhaylyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmaylyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlDPTE7ZWxzZXtrJiYoZz0tZyksRChnPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgXz0wfHRoaXMud29yZHNbMF07Qz1fPT09Zz8w''@;'; put 'put ''Ol88Zz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1DOkN9LEUucHJvdG90eXBlLmNtcD1mdW5jdGlvbihnKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJldHVybiAxO3Zh''@;'; put 'put ''ciBDPXRoaXMudWNtcChnKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKGcpe2lmKHRoaXMubGVuZ3RoPmcubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPGcubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgQz0wLGs9dGhpcy5s''@;'; put 'put ''ZW5ndGgtMTtrPj0wO2stLSl7dmFyIF89MHx0aGlzLndvcmRzW2tdLHA9MHxnLndvcmRzW2tdO2lmKF8hPT1wKXtfPHA/Qz0tMTpfPnAmJihDPTEpO2JyZWFrfX1yZXR1cm4gQ30sRS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKGcpe3JldHVybiAxPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5ndD1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wKGcpfSxFLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcG4oZyk+PTB9LEUucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXAoZyk+PTB9LEUucHJvdG90eXBlLmx0bj1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4tMT09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPD0wfSxFLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY21wKGcpPD0wfSxFLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oZyl7cmV0dXJuIDA9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmVxPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXAoZyl9LEUucmVkPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgRihnKX0sRS5w''@;'; put 'put ''cm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksRCgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxnLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VS''@;'; put 'put ''ZWQoZyl9LEUucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxFLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIHRoaXMucmVkPWcsdGhpc30sRS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoZyl9LEUucHJvdG90eXBlLnJlZEFkZD1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCBy''@;'; put 'put ''ZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElTdWI9''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxnKSx0aGlzLnJlZC5tdWwodGhp''@;'; put 'put ''cyxnKX0sRS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhpcy5yZWQuaW11bCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTcXI9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sRS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJU3Fy''@;'; put 'put ''IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0''@;'; put 'put ''aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxFLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQu''@;'; put 'put ''aW52bSh0aGlzKX0sRS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LEUucHJvdG90eXBlLnJlZFBvdz1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCYmIWcucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGcpfTt2YXIgdWU9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBsZShn''@;'; put 'put ''LEMpe3RoaXMubmFtZT1nLHRoaXMucD1uZXcgRShDLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgRSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gYWUoKXtsZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIFcoKXtsZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAw''@;'; put 'put ''MSIpfWZ1bmN0aW9uIGIoKXtsZS5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIEEoKXtsZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIEYoZyl7aWYoInN0cmluZyI9PXR5cGVvZiBnKXt2YXIgQz1FLl9wcmltZShnKTt0aGlzLm09Qy5wLHRoaXMucHJpbWU9Q31lbHNlIEQoZy5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRo''@;'; put 'put ''aXMubT1nLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBIKGcpe0YuY2FsbCh0aGlzLGcpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IEUoMSkuaXVzaGxuKHRoaXMuc2hpZnQp''@;'; put 'put ''LHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlz''@;'; put 'put ''LnIuc3ViKHRoaXMubWludil9bGUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgZz1uZXcgRShudWxsKTtyZXR1cm4gZy53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGd9LGxlLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGcpe3ZhciBDLGs9Zztkb3t0aGlz''@;'; put 'put ''LnNwbGl0KGssdGhpcy50bXApLEM9KGs9KGs9dGhpcy5pbXVsSyhrKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKEM+dGhpcy5uKTt2YXIgXz1DPHRoaXMubj8tMTprLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PV8/KGsud29yZHNbMF09MCxrLmxlbmd0aD0xKTpfPjA/ay5p''@;'; put 'put ''c3ViKHRoaXMucCk6dm9pZCAwIT09ay5zdHJpcD9rLnN0cmlwKCk6ay5fc3RyaXAoKSxrfSxsZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZyxDKXtnLml1c2hybih0aGlzLm4sMCxDKX0sbGUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe3JldHVybiBnLmltdWwodGhpcy5rKX0sVChh''@;'; put 'put ''ZSxsZSksYWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zm9yKHZhciBrPTQxOTQzMDMsXz1NYXRoLm1pbihnLmxlbmd0aCw5KSxwPTA7cDxfO3ArKylDLndvcmRzW3BdPWcud29yZHNbcF07aWYoQy5sZW5ndGg9XyxnLmxlbmd0aDw9OSlyZXR1cm4gZy53b3Jkc1swXT0wLHZvaWQo''@;'; put 'put ''Zy5sZW5ndGg9MSk7dmFyIHc9Zy53b3Jkc1s5XTtmb3IoQy53b3Jkc1tDLmxlbmd0aCsrXT13JmsscD0xMDtwPGcubGVuZ3RoO3ArKyl7dmFyIEs9MHxnLndvcmRzW3BdO2cud29yZHNbcC0xMF09KEsmayk8PDR8dz4+PjIyLHc9S31nLndvcmRzW3AtMTBdPXc+Pj49MjIsZy5sZW5ndGgtPTA9''@;'; put 'put ''PT13JiZnLmxlbmd0aD4xMD8xMDo5fSxhZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zy53b3Jkc1tnLmxlbmd0aF09MCxnLndvcmRzW2cubGVuZ3RoKzFdPTAsZy5sZW5ndGgrPTI7Zm9yKHZhciBDPTAsaz0wO2s8Zy5sZW5ndGg7aysrKXt2YXIgXz0wfGcud29yZHNba107Zy53b3Jk''@;'; put 'put ''c1trXT02NzEwODg2MyYoQys9OTc3Kl8pLEM9NjQqXysoQy82NzEwODg2NHwwKX1yZXR1cm4gMD09PWcud29yZHNbZy5sZW5ndGgtMV0mJihnLmxlbmd0aC0tLDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiZnLmxlbmd0aC0tKSxnfSxUKFcsbGUpLFQoYixsZSksVChBLGxlKSxBLnByb3RvdHlw''@;'; put 'put ''ZS5pbXVsSz1mdW5jdGlvbihnKXtmb3IodmFyIEM9MCxrPTA7azxnLmxlbmd0aDtrKyspe3ZhciBfPTE5KigwfGcud29yZHNba10pK0MscD02NzEwODg2MyZfO18+Pj49MjYsZy53b3Jkc1trXT1wLEM9X31yZXR1cm4gMCE9PUMmJihnLndvcmRzW2cubGVuZ3RoKytdPUMpLGd9LEUuX3ByaW1l''@;'; put 'put ''PWZ1bmN0aW9uKGcpe2lmKHVlW2ddKXJldHVybiB1ZVtnXTt2YXIgQztpZigiazI1NiI9PT1nKUM9bmV3IGFlO2Vsc2UgaWYoInAyMjQiPT09ZylDPW5ldyBXO2Vsc2UgaWYoInAxOTIiPT09ZylDPW5ldyBiO2Vsc2V7aWYoInAyNTUxOSIhPT1nKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBw''@;'; put 'put ''cmltZSAiK2cpO0M9bmV3IEF9cmV0dXJuIHVlW2ddPUMsQ30sRi5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oZyl7RCgwPT09Zy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxEKGcucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEYu''@;'; put 'put ''cHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKGcsQyl7RCghKGcubmVnYXRpdmV8Qy5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRChnLnJlZCYmZy5yZWQ9PT1DLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxGLnByb3RvdHlwZS5p''@;'; put 'put ''bW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShnKS5fZm9yY2VSZWQodGhpcyk6Zy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaXNaZXJvKCk/Zy5jbG9uZSgpOnRoaXMu''@;'; put 'put ''bS5zdWIoZykuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5hZGQoQyk7cmV0dXJuIGsuY21wKHRoaXMubSk+PTAmJmsuaXN1Yih0aGlzLm0pLGsuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5pYWRk''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuaWFkZChDKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5pc3ViKHRoaXMubSksa30sRi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuc3ViKEMpO3JldHVybiBr''@;'; put 'put ''LmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5pc3ViKEMpO3JldHVybiBrLmNtcG4oMCk8MCYmay5pYWRkKHRoaXMubSksa30sRi5wcm90b3R5cGUuc2hs''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoZyksdGhpcy5pbW9kKGcudXNobG4oQykpfSxGLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5pbXVsKEMpKX0sRi5wcm90b3R5cGUubXVsPWZ1bmN0aW9u''@;'; put 'put ''KGcsQyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoZyxDKSx0aGlzLmltb2QoZy5tdWwoQykpfSxGLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltdWwoZyxnLmNsb25lKCkpfSxGLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubXVsKGcsZyl9LEYu''@;'; put 'put ''cHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oZyl7aWYoZy5pc1plcm8oKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBDPXRoaXMubS5hbmRsbigzKTtpZihEKEMlMj09MSksMz09PUMpe3ZhciBrPXRoaXMubS5hZGQobmV3IEUoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZyxrKX1mb3IodmFy''@;'; put 'put ''IF89dGhpcy5tLnN1Ym4oMSkscD0wOyFfLmlzWmVybygpJiYwPT09Xy5hbmRsbigxKTspcCsrLF8uaXVzaHJuKDEpO0QoIV8uaXNaZXJvKCkpO3ZhciB3PW5ldyBFKDEpLnRvUmVkKHRoaXMpLEs9dy5yZWROZWcoKSx0ZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksY2U9dGhpcy5tLmJpdExl''@;'; put 'put ''bmd0aCgpO2ZvcihjZT1uZXcgRSgyKmNlKmNlKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coY2UsdGUpLmNtcChLKTspY2UucmVkSUFkZChLKTtmb3IodmFyIGhlPXRoaXMucG93KGNlLF8pLFNlPXRoaXMucG93KGcsXy5hZGRuKDEpLml1c2hybigxKSksTGU9dGhpcy5wb3coZyxfKSxIZT1w''@;'; put 'put ''OzAhPT1MZS5jbXAodyk7KXtmb3IodmFyIHhlPUxlLERlPTA7MCE9PXhlLmNtcCh3KTtEZSsrKXhlPXhlLnJlZFNxcigpO0QoRGU8SGUpO3ZhciBCZT10aGlzLnBvdyhoZSxuZXcgRSgxKS5pdXNobG4oSGUtRGUtMSkpO1NlPVNlLnJlZE11bChCZSksaGU9QmUucmVkU3FyKCksTGU9TGUucmVk''@;'; put 'put ''TXVsKGhlKSxIZT1EZX1yZXR1cm4gU2V9LEYucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7dmFyIEM9Zy5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUMubmVnYXRpdmU/KEMubmVnYXRpdmU9MCx0aGlzLmltb2QoQykucmVkTmVnKCkpOnRoaXMuaW1vZChDKX0sRi5wcm90b3R5cGUucG93''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7aWYoQy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMSkudG9SZWQodGhpcyk7aWYoMD09PUMuY21wbigxKSlyZXR1cm4gZy5jbG9uZSgpO3ZhciBrPW5ldyBBcnJheSgxNik7a1swXT1uZXcgRSgxKS50b1JlZCh0aGlzKSxrWzFdPWc7Zm9yKHZhciBfPTI7XzxrLmxlbmd0''@;'; put 'put ''aDtfKyspa1tfXT10aGlzLm11bChrW18tMV0sZyk7dmFyIHA9a1swXSx3PTAsSz0wLHRlPUMuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT10ZSYmKHRlPTI2KSxfPUMubGVuZ3RoLTE7Xz49MDtfLS0pe2Zvcih2YXIgY2U9Qy53b3Jkc1tfXSxoZT10ZS0xO2hlPj0wO2hlLS0pe3ZhciBTZT1jZT4+''@;'; put 'put ''aGUmMTtwIT09a1swXSYmKHA9dGhpcy5zcXIocCkpLDAhPT1TZXx8MCE9PXc/KHc8PD0xLHd8PVNlLCg0PT0rK0t8fDA9PT1fJiYwPT09aGUpJiYocD10aGlzLm11bChwLGtbd10pLEs9MCx3PTApKTpLPTB9dGU9MjZ9cmV0dXJuIHB9LEYucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihn''@;'; put 'put ''KXt2YXIgQz1nLnVtb2QodGhpcy5tKTtyZXR1cm4gQz09PWc/Qy5jbG9uZSgpOkN9LEYucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPWcuY2xvbmUoKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxFLm1vbnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBIKGcpfSxUKEgsRiks''@;'; put 'put ''SC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy51c2hsbih0aGlzLnNoaWZ0KSl9LEgucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuaW1vZChnLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gQy5yZWQ9bnVsbCxDfSxI''@;'; put 'put ''LnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcsQyl7aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gZy53b3Jkc1swXT0wLGcubGVuZ3RoPTEsZzt2YXIgaz1nLmltdWwoQyksXz1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwo''@;'; put 'put ''dGhpcy5tKSxwPWsuaXN1YihfKS5pdXNocm4odGhpcy5zaGlmdCksdz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP3c9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJih3PXAuaWFkZCh0aGlzLm0pKSx3Ll9mb3JjZVJlZCh0aGlzKX0sSC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcsQyl7''@;'; put 'put ''aWYoZy5pc1plcm8oKXx8Qy5pc1plcm8oKSlyZXR1cm4gbmV3IEUoMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBrPWcubXVsKEMpLF89ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkscD1rLmlzdWIoXykuaXVzaHJuKHRoaXMu''@;'; put 'put ''c2hpZnQpLHc9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD93PXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYodz1wLmlhZGQodGhpcy5tKSksdy5fZm9yY2VSZWQodGhpcyl9LEgucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChnLl9pbnZtcCh0aGlzLm0p''@;'; put 'put ''Lm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oTT1JLm5tZChNKSx0aGlzKX0sOTI4MjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz1JKDUxMDgpO2Z1bmN0aW9uIEQoaGUpe3JldHVybihEPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKFNlKXtyZXR1cm4gdHlwZW9mIFNlfTpmdW5jdGlvbihTZSl7cmV0dXJuIFNlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmU2UhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBTZX0pKGhlKX12YXIgVCxFLHo9SSgyMTM2KS5jb2RlcyxOPXouRVJSX0FNQklHVU9VU19BUkdVTUVOVCxCPXouRVJSX0lOVkFMSURfQVJHX1RZUEUsWj16LkVSUl9JTlZBTElEX0FSR19WQUxVRSxZPXouRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFLFU9ei5FUlJfTUlTU0lOR19BUkdTLHE9''@;'; put 'put ''SSg1OTYxKSxKPUkoOTUzOSkuaW5zcGVjdCxlZT1JKDk1MzkpLnR5cGVzLHJlPWVlLmlzUHJvbWlzZSxpZT1lZS5pc1JlZ0V4cCx1ZT1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ246SSg4MDkxKS5hc3NpZ24sbGU9T2JqZWN0LmlzP09iamVjdC5pczpJKDYwOSk7ZnVuY3Rpb24gYWUoKXt2''@;'; put 'put ''YXIgaGU9SSg5MTU4KTtUPWhlLmlzRGVlcEVxdWFsLEU9aGUuaXNEZWVwU3RyaWN0RXF1YWx9dmFyIFc9ITEsYj1NLmV4cG9ydHM9ZyxBPXt9O2Z1bmN0aW9uIEYoaGUpe3Rocm93IGhlLm1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcj9oZS5tZXNzYWdlOm5ldyBxKGhlKX1mdW5jdGlvbiBIKGhl''@;'; put 'put ''LFNlLExlLEhlKXtpZighTGUpe3ZhciB4ZT0hMTtpZigwPT09U2UpeGU9ITAsSGU9Ik5vIHZhbHVlIGFyZ3VtZW50IHBhc3NlZCB0byBgYXNzZXJ0Lm9rKClgIjtlbHNlIGlmKEhlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgSGU7dmFyIERlPW5ldyBxKHthY3R1YWw6TGUsZXhwZWN0ZWQ6ITAs''@;'; put 'put ''bWVzc2FnZTpIZSxvcGVyYXRvcjoiPT0iLHN0YWNrU3RhcnRGbjpoZX0pO3Rocm93IERlLmdlbmVyYXRlZE1lc3NhZ2U9eGUsRGV9fWZ1bmN0aW9uIGcoKXtmb3IodmFyIGhlPWFyZ3VtZW50cy5sZW5ndGgsU2U9bmV3IEFycmF5KGhlKSxMZT0wO0xlPGhlO0xlKyspU2VbTGVdPWFyZ3VtZW50''@;'; put 'put ''c1tMZV07SC5hcHBseSh2b2lkIDAsW2csU2UubGVuZ3RoXS5jb25jYXQoU2UpKX1iLmZhaWw9ZnVuY3Rpb24gaGUoU2UsTGUsSGUseGUsRGUpe3ZhciBCZSxHZT1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1HZT9CZT0iRmFpbGVkIjoxPT09R2U/KEhlPVNlLFNlPXZvaWQgMCk6KCExPT09VyYm''@;'; put 'put ''KFc9ITAsKGouZW1pdFdhcm5pbmc/ai5lbWl0V2FybmluZzpHLndhcm4uYmluZChHKSkoImFzc2VydC5mYWlsKCkgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYXNzZXJ0LnN0cmljdEVxdWFsKCkgaW5zdGVhZCBvciBvbmx5IHBhc3MgYSBt''@;'; put 'put ''ZXNzYWdlLiIsIkRlcHJlY2F0aW9uV2FybmluZyIsIkRFUDAwOTQiKSksMj09PUdlJiYoeGU9IiE9IikpLEhlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgSGU7dmFyIFVlPXthY3R1YWw6U2UsZXhwZWN0ZWQ6TGUsb3BlcmF0b3I6dm9pZCAwPT09eGU/ImZhaWwiOnhlLHN0YWNrU3RhcnRGbjpE''@;'; put 'put ''ZXx8aGV9O3ZvaWQgMCE9PUhlJiYoVWUubWVzc2FnZT1IZSk7dmFyIHFlPW5ldyBxKFVlKTt0aHJvdyBCZSYmKHFlLm1lc3NhZ2U9QmUscWUuZ2VuZXJhdGVkTWVzc2FnZT0hMCkscWV9LGIuQXNzZXJ0aW9uRXJyb3I9cSxiLm9rPWcsYi5lcXVhbD1mdW5jdGlvbiBoZShTZSxMZSxIZSl7aWYo''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBVKCJhY3R1YWwiLCJleHBlY3RlZCIpO1NlIT1MZSYmRih7YWN0dWFsOlNlLGV4cGVjdGVkOkxlLG1lc3NhZ2U6SGUsb3BlcmF0b3I6Ij09IixzdGFja1N0YXJ0Rm46aGV9KX0sYi5ub3RFcXVhbD1mdW5jdGlvbiBoZShTZSxMZSxIZSl7aWYo''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBVKCJhY3R1YWwiLCJleHBlY3RlZCIpO1NlPT1MZSYmRih7YWN0dWFsOlNlLGV4cGVjdGVkOkxlLG1lc3NhZ2U6SGUsb3BlcmF0b3I6IiE9IixzdGFja1N0YXJ0Rm46aGV9KX0sYi5kZWVwRXF1YWw9ZnVuY3Rpb24gaGUoU2UsTGUsSGUpe2lm''@;'; put 'put ''KGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1UJiZhZSgpLFQoU2UsTGUpfHxGKHthY3R1YWw6U2UsZXhwZWN0ZWQ6TGUsbWVzc2FnZTpIZSxvcGVyYXRvcjoiZGVlcEVxdWFsIixzdGFja1N0YXJ0Rm46aGV9KX0sYi5ub3REZWVw''@;'; put 'put ''RXF1YWw9ZnVuY3Rpb24gaGUoU2UsTGUsSGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1UJiZhZSgpLFQoU2UsTGUpJiZGKHthY3R1YWw6U2UsZXhwZWN0ZWQ6TGUsbWVzc2FnZTpIZSxvcGVyYXRvcjoibm90RGVlcEVx''@;'; put 'put ''dWFsIixzdGFja1N0YXJ0Rm46aGV9KX0sYi5kZWVwU3RyaWN0RXF1YWw9ZnVuY3Rpb24gaGUoU2UsTGUsSGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lkIDA9PT1UJiZhZSgpLEUoU2UsTGUpfHxGKHthY3R1YWw6U2UsZXhwZWN0''@;'; put 'put ''ZWQ6TGUsbWVzc2FnZTpIZSxvcGVyYXRvcjoiZGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46aGV9KX0sYi5ub3REZWVwU3RyaWN0RXF1YWw9ZnVuY3Rpb24gaGUoU2UsTGUsSGUpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil0aHJvdyBuZXcgVSgiYWN0dWFsIiwiZXhwZWN0ZWQiKTt2b2lk''@;'; put 'put ''IDA9PT1UJiZhZSgpLEUoU2UsTGUpJiZGKHthY3R1YWw6U2UsZXhwZWN0ZWQ6TGUsbWVzc2FnZTpIZSxvcGVyYXRvcjoibm90RGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46aGV9KX0sYi5zdHJpY3RFcXVhbD1mdW5jdGlvbiBoZShTZSxMZSxIZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwy''@;'; put 'put ''KXRocm93IG5ldyBVKCJhY3R1YWwiLCJleHBlY3RlZCIpO2xlKFNlLExlKXx8Rih7YWN0dWFsOlNlLGV4cGVjdGVkOkxlLG1lc3NhZ2U6SGUsb3BlcmF0b3I6InN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46aGV9KX0sYi5ub3RTdHJpY3RFcXVhbD1mdW5jdGlvbiBoZShTZSxMZSxIZSl7aWYo''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDwyKXRocm93IG5ldyBVKCJhY3R1YWwiLCJleHBlY3RlZCIpO2xlKFNlLExlKSYmRih7YWN0dWFsOlNlLGV4cGVjdGVkOkxlLG1lc3NhZ2U6SGUsb3BlcmF0b3I6Im5vdFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46aGV9KX07dmFyIEM9ZnVuY3Rpb24gaGUoU2Us''@;'; put 'put ''TGUsSGUpe3ZhciB4ZT10aGlzOyhmdW5jdGlvbihEZSxCZSl7aWYoIShEZSBpbnN0YW5jZW9mIEJlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsaGUpLExlLmZvckVhY2goZnVuY3Rpb24oRGUpe0RlIGluIFNlJiYoeGVb''@;'; put 'put ''RGVdPXZvaWQgMCE9PUhlJiYic3RyaW5nIj09dHlwZW9mIEhlW0RlXSYmaWUoU2VbRGVdKSYmU2VbRGVdLnRlc3QoSGVbRGVdKT9IZVtEZV06U2VbRGVdKX0pfTtmdW5jdGlvbiBrKGhlLFNlLExlLEhlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgU2Upe2lmKGllKFNlKSlyZXR1cm4gU2UudGVz''@;'; put 'put ''dChoZSk7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEIoImV4cGVjdGVkIixbIkZ1bmN0aW9uIiwiUmVnRXhwIl0sU2UpO2lmKCJvYmplY3QiIT09RChoZSl8fG51bGw9PT1oZSl7dmFyIHhlPW5ldyBxKHthY3R1YWw6aGUsZXhwZWN0ZWQ6U2UsbWVzc2FnZTpMZSxvcGVyYXRv''@;'; put 'put ''cjoiZGVlcFN0cmljdEVxdWFsIixzdGFja1N0YXJ0Rm46SGV9KTt0aHJvdyB4ZS5vcGVyYXRvcj1IZS5uYW1lLHhlfXZhciBEZT1PYmplY3Qua2V5cyhTZSk7aWYoU2UgaW5zdGFuY2VvZiBFcnJvcilEZS5wdXNoKCJuYW1lIiwibWVzc2FnZSIpO2Vsc2UgaWYoMD09PURlLmxlbmd0aCl0aHJv''@;'; put 'put ''dyBuZXcgWigiZXJyb3IiLFNlLCJtYXkgbm90IGJlIGFuIGVtcHR5IG9iamVjdCIpO3JldHVybiB2b2lkIDA9PT1UJiZhZSgpLERlLmZvckVhY2goZnVuY3Rpb24oQmUpeyJzdHJpbmciPT10eXBlb2YgaGVbQmVdJiZpZShTZVtCZV0pJiZTZVtCZV0udGVzdChoZVtCZV0pfHxmdW5jdGlvbihH''@;'; put 'put ''ZSxVZSxxZSxvdCxGZSx3ZSl7aWYoIShxZSBpbiBHZSl8fCFFKEdlW3FlXSxVZVtxZV0pKXtpZighb3Qpe3ZhciBFZT1uZXcgQyhHZSxGZSksSWU9bmV3IEMoVWUsRmUsR2UpLFhlPW5ldyBxKHthY3R1YWw6RWUsZXhwZWN0ZWQ6SWUsb3BlcmF0b3I6ImRlZXBTdHJpY3RFcXVhbCIsc3RhY2tT''@;'; put 'put ''dGFydEZuOndlfSk7dGhyb3cgWGUuYWN0dWFsPUdlLFhlLmV4cGVjdGVkPVVlLFhlLm9wZXJhdG9yPXdlLm5hbWUsWGV9Rih7YWN0dWFsOkdlLGV4cGVjdGVkOlVlLG1lc3NhZ2U6b3Qsb3BlcmF0b3I6d2UubmFtZSxzdGFja1N0YXJ0Rm46d2V9KX19KGhlLFNlLEJlLExlLERlLEhlKX0pLCEw''@;'; put 'put ''fXJldHVybiB2b2lkIDAhPT1TZS5wcm90b3R5cGUmJmhlIGluc3RhbmNlb2YgU2V8fCFFcnJvci5pc1Byb3RvdHlwZU9mKFNlKSYmITA9PT1TZS5jYWxsKHt9LGhlKX1mdW5jdGlvbiBfKGhlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgaGUpdGhyb3cgbmV3IEIoImZuIiwiRnVuY3Rpb24iLGhl''@;'; put 'put ''KTt0cnl7aGUoKX1jYXRjaChTZSl7cmV0dXJuIFNlfXJldHVybiBBfWZ1bmN0aW9uIHAoaGUpe3JldHVybiByZShoZSl8fG51bGwhPT1oZSYmIm9iamVjdCI9PT1EKGhlKSYmImZ1bmN0aW9uIj09dHlwZW9mIGhlLnRoZW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBoZS5jYXRjaH1mdW5jdGlvbiB3''@;'; put 'put ''KGhlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3ZhciBTZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgaGUpe2lmKCFwKFNlPWhlKCkpKXRocm93IG5ldyBZKCJpbnN0YW5jZSBvZiBQcm9taXNlIiwicHJvbWlzZUZuIixTZSl9ZWxzZXtpZighcChoZSkpdGhyb3cg''@;'; put 'put ''bmV3IEIoInByb21pc2VGbiIsWyJGdW5jdGlvbiIsIlByb21pc2UiXSxoZSk7U2U9aGV9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gU2V9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIEF9KS5jYXRjaChmdW5jdGlvbihMZSl7cmV0dXJuIExlfSl9KX1m''@;'; put 'put ''dW5jdGlvbiBLKGhlLFNlLExlLEhlKXtpZigic3RyaW5nIj09dHlwZW9mIExlKXtpZig0PT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgQigiZXJyb3IiLFsiT2JqZWN0IiwiRXJyb3IiLCJGdW5jdGlvbiIsIlJlZ0V4cCJdLExlKTtpZigib2JqZWN0Ij09PUQoU2UpJiZudWxsIT09U2Up''@;'; put 'put ''e2lmKFNlLm1lc3NhZ2U9PT1MZSl0aHJvdyBuZXcgTigiZXJyb3IvbWVzc2FnZSIsJ1RoZSBlcnJvciBtZXNzYWdlICInLmNvbmNhdChTZS5tZXNzYWdlLCciIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS4nKSl9ZWxzZSBpZihTZT09PUxlKXRocm93IG5ldyBOKCJlcnJvci9tZXNzYWdl''@;'; put 'put ''IiwnVGhlIGVycm9yICInLmNvbmNhdChTZSwnIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuJykpO0hlPUxlLExlPXZvaWQgMH1lbHNlIGlmKG51bGwhPUxlJiYib2JqZWN0IiE9PUQoTGUpJiYiZnVuY3Rpb24iIT10eXBlb2YgTGUpdGhyb3cgbmV3IEIoImVycm9yIixbIk9iamVjdCIs''@;'; put 'put ''IkVycm9yIiwiRnVuY3Rpb24iLCJSZWdFeHAiXSxMZSk7aWYoU2U9PT1BKXt2YXIgeGU9IiI7TGUmJkxlLm5hbWUmJih4ZSs9IiAoIi5jb25jYXQoTGUubmFtZSwiKSIpKSx4ZSs9SGU/IjogIi5jb25jYXQoSGUpOiIuIixGKHthY3R1YWw6dm9pZCAwLGV4cGVjdGVkOkxlLG9wZXJhdG9yOmhl''@;'; put 'put ''Lm5hbWUsbWVzc2FnZToiTWlzc2luZyBleHBlY3RlZCAiLmNvbmNhdCgicmVqZWN0cyI9PT1oZS5uYW1lPyJyZWplY3Rpb24iOiJleGNlcHRpb24iKS5jb25jYXQoeGUpLHN0YWNrU3RhcnRGbjpoZX0pfWlmKExlJiYhayhTZSxMZSxIZSxoZSkpdGhyb3cgU2V9ZnVuY3Rpb24gdGUoaGUsU2Us''@;'; put 'put ''TGUsSGUpe2lmKFNlIT09QSl7aWYoInN0cmluZyI9PXR5cGVvZiBMZSYmKEhlPUxlLExlPXZvaWQgMCksIUxlfHxrKFNlLExlKSl7dmFyIHhlPUhlPyI6ICIuY29uY2F0KEhlKToiLiI7Rih7YWN0dWFsOlNlLGV4cGVjdGVkOkxlLG9wZXJhdG9yOmhlLm5hbWUsbWVzc2FnZToiR290IHVud2Fu''@;'; put 'put ''dGVkICIuY29uY2F0KCJkb2VzTm90UmVqZWN0Ij09PWhlLm5hbWU/InJlamVjdGlvbiI6ImV4Y2VwdGlvbiIpLmNvbmNhdCh4ZSwiXG4iKSsnQWN0dWFsIG1lc3NhZ2U6ICInLmNvbmNhdChTZSYmU2UubWVzc2FnZSwnIicpLHN0YWNrU3RhcnRGbjpoZX0pfXRocm93IFNlfX1mdW5jdGlvbiBj''@;'; put 'put ''ZSgpe2Zvcih2YXIgaGU9YXJndW1lbnRzLmxlbmd0aCxTZT1uZXcgQXJyYXkoaGUpLExlPTA7TGU8aGU7TGUrKylTZVtMZV09YXJndW1lbnRzW0xlXTtILmFwcGx5KHZvaWQgMCxbY2UsU2UubGVuZ3RoXS5jb25jYXQoU2UpKX1iLnRocm93cz1mdW5jdGlvbiBoZShTZSl7Zm9yKHZhciBMZT1h''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoLEhlPW5ldyBBcnJheShMZT4xP0xlLTE6MCkseGU9MTt4ZTxMZTt4ZSsrKUhlW3hlLTFdPWFyZ3VtZW50c1t4ZV07Sy5hcHBseSh2b2lkIDAsW2hlLF8oU2UpXS5jb25jYXQoSGUpKX0sYi5yZWplY3RzPWZ1bmN0aW9uIGhlKFNlKXtmb3IodmFyIExlPWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGgsSGU9bmV3IEFycmF5KExlPjE/TGUtMTowKSx4ZT0xO3hlPExlO3hlKyspSGVbeGUtMV09YXJndW1lbnRzW3hlXTtyZXR1cm4gdyhTZSkudGhlbihmdW5jdGlvbihEZSl7cmV0dXJuIEsuYXBwbHkodm9pZCAwLFtoZSxEZV0uY29uY2F0KEhlKSl9KX0sYi5kb2VzTm90VGhyb3c9''@;'; put 'put ''ZnVuY3Rpb24gaGUoU2Upe2Zvcih2YXIgTGU9YXJndW1lbnRzLmxlbmd0aCxIZT1uZXcgQXJyYXkoTGU+MT9MZS0xOjApLHhlPTE7eGU8TGU7eGUrKylIZVt4ZS0xXT1hcmd1bWVudHNbeGVdO3RlLmFwcGx5KHZvaWQgMCxbaGUsXyhTZSldLmNvbmNhdChIZSkpfSxiLmRvZXNOb3RSZWplY3Q9''@;'; put 'put ''ZnVuY3Rpb24gaGUoU2Upe2Zvcih2YXIgTGU9YXJndW1lbnRzLmxlbmd0aCxIZT1uZXcgQXJyYXkoTGU+MT9MZS0xOjApLHhlPTE7eGU8TGU7eGUrKylIZVt4ZS0xXT1hcmd1bWVudHNbeGVdO3JldHVybiB3KFNlKS50aGVuKGZ1bmN0aW9uKERlKXtyZXR1cm4gdGUuYXBwbHkodm9pZCAwLFto''@;'; put 'put ''ZSxEZV0uY29uY2F0KEhlKSl9KX0sYi5pZkVycm9yPWZ1bmN0aW9uIGhlKFNlKXtpZihudWxsIT1TZSl7dmFyIExlPSJpZkVycm9yIGdvdCB1bndhbnRlZCBleGNlcHRpb246ICI7Im9iamVjdCI9PT1EKFNlKSYmInN0cmluZyI9PXR5cGVvZiBTZS5tZXNzYWdlP0xlKz0wPT09U2UubWVzc2Fn''@;'; put 'put ''ZS5sZW5ndGgmJlNlLmNvbnN0cnVjdG9yP1NlLmNvbnN0cnVjdG9yLm5hbWU6U2UubWVzc2FnZTpMZSs9SihTZSk7dmFyIEhlPW5ldyBxKHthY3R1YWw6U2UsZXhwZWN0ZWQ6bnVsbCxvcGVyYXRvcjoiaWZFcnJvciIsbWVzc2FnZTpMZSxzdGFja1N0YXJ0Rm46aGV9KSx4ZT1TZS5zdGFjaztp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIHhlKXt2YXIgRGU9eGUuc3BsaXQoIlxuIik7RGUuc2hpZnQoKTtmb3IodmFyIEJlPUhlLnN0YWNrLnNwbGl0KCJcbiIpLEdlPTA7R2U8RGUubGVuZ3RoO0dlKyspe3ZhciBVZT1CZS5pbmRleE9mKERlW0dlXSk7aWYoLTEhPT1VZSl7QmU9QmUuc2xpY2UoMCxV''@;'; put 'put ''ZSk7YnJlYWt9fUhlLnN0YWNrPSIiLmNvbmNhdChCZS5qb2luKCJcbiIpLCJcbiIpLmNvbmNhdChEZS5qb2luKCJcbiIpKX10aHJvdyBIZX19LGIuc3RyaWN0PXVlKGNlLGIse2VxdWFsOmIuc3RyaWN0RXF1YWwsZGVlcEVxdWFsOmIuZGVlcFN0cmljdEVxdWFsLG5vdEVxdWFsOmIubm90U3Ry''@;'; put 'put ''aWN0RXF1YWwsbm90RGVlcEVxdWFsOmIubm90RGVlcFN0cmljdEVxdWFsfSksYi5zdHJpY3Quc3RyaWN0PWIuc3RyaWN0fSw1OTYxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KTtmdW5jdGlvbiBHKEgsZyxDKXtyZXR1cm4gZyBpbiBIP09iamVjdC5kZWZpbmVQcm9wZXJ0''@;'; put 'put ''eShILGcse3ZhbHVlOkMsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpIW2ddPUMsSH1mdW5jdGlvbiBUKEgsZyl7cmV0dXJuIWd8fCJvYmplY3QiIT09WShnKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGc/RShIKTpnfWZ1bmN0aW9uIEUoSCl7aWYodm9pZCAwPT09''@;'; put 'put ''SCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBIfWZ1bmN0aW9uIHooSCl7dmFyIGc9ImZ1bmN0aW9uIj09dHlwZW9mIE1hcD9uZXcgTWFwOnZvaWQgMDtyZXR1cm4gej1m''@;'; put 'put ''dW5jdGlvbihDKXtpZihudWxsPT09Q3x8LTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKEMpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSlyZXR1cm4gQztpZigiZnVuY3Rpb24iIT10eXBlb2YgQyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJl''@;'; put 'put ''IG51bGwgb3IgYSBmdW5jdGlvbiIpO2lmKHZvaWQgMCE9PWcpe2lmKGcuaGFzKEMpKXJldHVybiBnLmdldChDKTtnLnNldChDLF8pfWZ1bmN0aW9uIF8oKXtyZXR1cm4gTihDLGFyZ3VtZW50cyxaKHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gXy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShD''@;'; put 'put ''LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOl8sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksQihfLEMpfSx6KEgpfWZ1bmN0aW9uIE4oSCxnLEMpe3JldHVybihOPWZ1bmN0aW9uKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25z''@;'; put 'put ''dHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNo''@;'; put 'put ''e3JldHVybiExfX0oKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbihrLF8scCl7dmFyIHc9W251bGxdO3cucHVzaC5hcHBseSh3LF8pO3ZhciBLPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGssdykpO3JldHVybiBwJiZCKEsscC5wcm90b3R5cGUpLEt9KS5hcHBseShudWxsLGFyZ3VtZW50''@;'; put 'put ''cyl9ZnVuY3Rpb24gQihILGcpe3JldHVybihCPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oQyxrKXtyZXR1cm4gQy5fX3Byb3RvX189ayxDfSkoSCxnKX1mdW5jdGlvbiBaKEgpe3JldHVybihaPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIGcuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZyl9KShIKX1mdW5jdGlvbiBZKEgpe3JldHVybihZPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGcpe3JldHVybiB0eXBl''@;'; put 'put ''b2YgZ306ZnVuY3Rpb24oZyl7cmV0dXJuIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmcuY29uc3RydWN0b3I9PT1TeW1ib2wmJmchPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBnfSkoSCl9dmFyIFU9SSg5NTM5KS5pbnNwZWN0LHE9SSgyMTM2KS5jb2Rlcy5FUlJf''@;'; put 'put ''SU5WQUxJRF9BUkdfVFlQRTtmdW5jdGlvbiBKKEgsZyxDKXtyZXR1cm4odm9pZCAwPT09Q3x8Qz5ILmxlbmd0aCkmJihDPUgubGVuZ3RoKSxILnN1YnN0cmluZyhDLWcubGVuZ3RoLEMpPT09Z312YXIgZWU9IiIscmU9IiIsaWU9IiIsdWU9IiIsbGU9e2RlZXBTdHJpY3RFcXVhbDoiRXhwZWN0''@;'; put 'put ''ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGRlZXAtZXF1YWw6IixzdHJpY3RFcXVhbDoiRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGVxdWFsOiIsc3RyaWN0RXF1YWxPYmplY3Q6J0V4cGVjdGVkICJhY3R1YWwiIHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byAiZXhwZWN0ZWQiOics''@;'; put 'put ''ZGVlcEVxdWFsOiJFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsOiIsZXF1YWw6IkV4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29zZWx5IGVxdWFsOiIsbm90RGVlcFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiBub3QgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVh''@;'; put 'put ''bCB0bzonLG5vdFN0cmljdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBzdHJpY3RseSB1bmVxdWFsIHRvOicsbm90U3RyaWN0RXF1YWxPYmplY3Q6J0V4cGVjdGVkICJhY3R1YWwiIG5vdCB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gImV4cGVjdGVkIjonLG5vdERlZXBFcXVhbDon''@;'; put 'put ''RXhwZWN0ZWQgImFjdHVhbCIgbm90IHRvIGJlIGxvb3NlbHkgZGVlcC1lcXVhbCB0bzonLG5vdEVxdWFsOidFeHBlY3RlZCAiYWN0dWFsIiB0byBiZSBsb29zZWx5IHVuZXF1YWwgdG86Jyxub3RJZGVudGljYWw6IlZhbHVlcyBpZGVudGljYWwgYnV0IG5vdCByZWZlcmVuY2UtZXF1YWw6In07''@;'; put 'put ''ZnVuY3Rpb24gVyhIKXt2YXIgZz1PYmplY3Qua2V5cyhIKSxDPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKEgpKTtyZXR1cm4gZy5mb3JFYWNoKGZ1bmN0aW9uKGspe0Nba109SFtrXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDLCJtZXNzYWdlIix7dmFsdWU6SC5tZXNz''@;'; put 'put ''YWdlfSksQ31mdW5jdGlvbiBiKEgpe3JldHVybiBVKEgse2NvbXBhY3Q6ITEsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDoxZTMsbWF4QXJyYXlMZW5ndGg6MS8wLHNob3dIaWRkZW46ITEsYnJlYWtMZW5ndGg6MS8wLHNob3dQcm94eTohMSxzb3J0ZWQ6ITAsZ2V0dGVyczohMH0pfXZhciBGPWZ1''@;'; put 'put ''bmN0aW9uKEgpe2Z1bmN0aW9uIGcocCl7dmFyIHc7aWYoZnVuY3Rpb24oVWUscWUpe2lmKCEoVWUgaW5zdGFuY2VvZiBxZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZyksIm9iamVjdCIhPT1ZKHApfHxudWxsPT09cCl0''@;'; put 'put ''aHJvdyBuZXcgcSgib3B0aW9ucyIsIk9iamVjdCIscCk7dmFyIEs9cC5tZXNzYWdlLHRlPXAub3BlcmF0b3IsY2U9cC5zdGFja1N0YXJ0Rm4saGU9cC5hY3R1YWwsU2U9cC5leHBlY3RlZCxMZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7aWYoRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTAsbnVsbCE9''@;'; put 'put ''Syl3PVQodGhpcyxaKGcpLmNhbGwodGhpcyxTdHJpbmcoSykpKTtlbHNlIGlmKGouc3RkZXJyJiZqLnN0ZGVyci5pc1RUWSYmKGouc3RkZXJyJiZqLnN0ZGVyci5nZXRDb2xvckRlcHRoJiYxIT09ai5zdGRlcnIuZ2V0Q29sb3JEZXB0aCgpPyhlZT0iXHgxYlszNG0iLHJlPSJceDFiWzMybSIs''@;'; put 'put ''dWU9Ilx4MWJbMzltIixpZT0iXHgxYlszMW0iKTooZWU9IiIscmU9IiIsdWU9IiIsaWU9IiIpKSwib2JqZWN0Ij09PVkoaGUpJiZudWxsIT09aGUmJiJvYmplY3QiPT09WShTZSkmJm51bGwhPT1TZSYmInN0YWNrImluIGhlJiZoZSBpbnN0YW5jZW9mIEVycm9yJiYic3RhY2siaW4gU2UmJlNl''@;'; put 'put ''IGluc3RhbmNlb2YgRXJyb3ImJihoZT1XKGhlKSxTZT1XKFNlKSksImRlZXBTdHJpY3RFcXVhbCI9PT10ZXx8InN0cmljdEVxdWFsIj09PXRlKXc9VCh0aGlzLFooZykuY2FsbCh0aGlzLGZ1bmN0aW9uIEEoSCxnLEMpe3ZhciBrPSIiLF89IiIscD0wLHc9IiIsSz0hMSx0ZT1iKEgpLGNlPXRl''@;'; put 'put ''LnNwbGl0KCJcbiIpLGhlPWIoZykuc3BsaXQoIlxuIiksU2U9MCxMZT0iIjtpZigic3RyaWN0RXF1YWwiPT09QyYmIm9iamVjdCI9PT1ZKEgpJiYib2JqZWN0Ij09PVkoZykmJm51bGwhPT1IJiZudWxsIT09ZyYmKEM9InN0cmljdEVxdWFsT2JqZWN0IiksMT09PWNlLmxlbmd0aCYmMT09PWhl''@;'; put 'put ''Lmxlbmd0aCYmY2VbMF0hPT1oZVswXSl7dmFyIEhlPWNlWzBdLmxlbmd0aCtoZVswXS5sZW5ndGg7aWYoSGU8PTEwKXtpZighKCJvYmplY3QiPT09WShIKSYmbnVsbCE9PUh8fCJvYmplY3QiPT09WShnKSYmbnVsbCE9PWd8fDA9PT1IJiYwPT09ZykpcmV0dXJuIiIuY29uY2F0KGxlW0NdLCJc''@;'; put 'put ''blxuIikrIiIuY29uY2F0KGNlWzBdLCIgIT09ICIpLmNvbmNhdChoZVswXSwiXG4iKX1lbHNlIGlmKCJzdHJpY3RFcXVhbE9iamVjdCIhPT1DJiZIZTwoai5zdGRlcnImJmouc3RkZXJyLmlzVFRZP2ouc3RkZXJyLmNvbHVtbnM6ODApKXtmb3IoO2NlWzBdW1NlXT09PWhlWzBdW1NlXTspU2Ur''@;'; put 'put ''KztTZT4yJiYoTGU9IlxuICAiLmNvbmNhdChmdW5jdGlvbihYZSx0dCl7aWYodHQ9TWF0aC5mbG9vcih0dCksMD09WGUubGVuZ3RofHwwPT10dClyZXR1cm4iIjt2YXIgWmU9WGUubGVuZ3RoKnR0O2Zvcih0dD1NYXRoLmZsb29yKE1hdGgubG9nKHR0KS9NYXRoLmxvZygyKSk7dHQ7KVhlKz1Y''@;'; put 'put ''ZSx0dC0tO3JldHVybiBYZStYZS5zdWJzdHJpbmcoMCxaZS1YZS5sZW5ndGgpfSgiICIsU2UpLCJeIiksU2U9MCl9fWZvcih2YXIgeGU9Y2VbY2UubGVuZ3RoLTFdLERlPWhlW2hlLmxlbmd0aC0xXTt4ZT09PURlJiYoU2UrKzwyP3c9IlxuICAiLmNvbmNhdCh4ZSkuY29uY2F0KHcpOms9eGUs''@;'; put 'put ''Y2UucG9wKCksaGUucG9wKCksMCE9PWNlLmxlbmd0aCYmMCE9PWhlLmxlbmd0aCk7KXhlPWNlW2NlLmxlbmd0aC0xXSxEZT1oZVtoZS5sZW5ndGgtMV07dmFyIEJlPU1hdGgubWF4KGNlLmxlbmd0aCxoZS5sZW5ndGgpO2lmKDA9PT1CZSl7dmFyIEdlPXRlLnNwbGl0KCJcbiIpO2lmKEdlLmxl''@;'; put 'put ''bmd0aD4zMClmb3IoR2VbMjZdPSIiLmNvbmNhdChlZSwiLi4uIikuY29uY2F0KHVlKTtHZS5sZW5ndGg+Mjc7KUdlLnBvcCgpO3JldHVybiIiLmNvbmNhdChsZS5ub3RJZGVudGljYWwsIlxuXG4iKS5jb25jYXQoR2Uuam9pbigiXG4iKSwiXG4iKX1TZT4zJiYodz0iXG4iLmNvbmNhdChlZSwi''@;'; put 'put ''Li4uIikuY29uY2F0KHVlKS5jb25jYXQodyksSz0hMCksIiIhPT1rJiYodz0iXG4gICIuY29uY2F0KGspLmNvbmNhdCh3KSxrPSIiKTt2YXIgVWU9MCxxZT1sZVtDXSsiXG4iLmNvbmNhdChyZSwiKyBhY3R1YWwiKS5jb25jYXQodWUsIiAiKS5jb25jYXQoaWUsIi0gZXhwZWN0ZWQiKS5jb25j''@;'; put 'put ''YXQodWUpLG90PSIgIi5jb25jYXQoZWUsIi4uLiIpLmNvbmNhdCh1ZSwiIExpbmVzIHNraXBwZWQiKTtmb3IoU2U9MDtTZTxCZTtTZSsrKXt2YXIgRmU9U2UtcDtpZihjZS5sZW5ndGg8U2UrMSlGZT4xJiZTZT4yJiYoRmU+ND8oXys9IlxuIi5jb25jYXQoZWUsIi4uLiIpLmNvbmNhdCh1ZSks''@;'; put 'put ''Sz0hMCk6RmU+MyYmKF8rPSJcbiAgIi5jb25jYXQoaGVbU2UtMl0pLFVlKyspLF8rPSJcbiAgIi5jb25jYXQoaGVbU2UtMV0pLFVlKyspLHA9U2Usays9IlxuIi5jb25jYXQoaWUsIi0iKS5jb25jYXQodWUsIiAiKS5jb25jYXQoaGVbU2VdKSxVZSsrO2Vsc2UgaWYoaGUubGVuZ3RoPFNlKzEp''@;'; put 'put ''RmU+MSYmU2U+MiYmKEZlPjQ/KF8rPSJcbiIuY29uY2F0KGVlLCIuLi4iKS5jb25jYXQodWUpLEs9ITApOkZlPjMmJihfKz0iXG4gICIuY29uY2F0KGNlW1NlLTJdKSxVZSsrKSxfKz0iXG4gICIuY29uY2F0KGNlW1NlLTFdKSxVZSsrKSxwPVNlLF8rPSJcbiIuY29uY2F0KHJlLCIrIikuY29u''@;'; put 'put ''Y2F0KHVlLCIgIikuY29uY2F0KGNlW1NlXSksVWUrKztlbHNle3ZhciB3ZT1oZVtTZV0sRWU9Y2VbU2VdLEllPUVlIT09d2UmJighSihFZSwiLCIpfHxFZS5zbGljZSgwLC0xKSE9PXdlKTtJZSYmSih3ZSwiLCIpJiZ3ZS5zbGljZSgwLC0xKT09PUVlJiYoSWU9ITEsRWUrPSIsIiksSWU/KEZl''@;'; put 'put ''PjEmJlNlPjImJihGZT40PyhfKz0iXG4iLmNvbmNhdChlZSwiLi4uIikuY29uY2F0KHVlKSxLPSEwKTpGZT4zJiYoXys9IlxuICAiLmNvbmNhdChjZVtTZS0yXSksVWUrKyksXys9IlxuICAiLmNvbmNhdChjZVtTZS0xXSksVWUrKykscD1TZSxfKz0iXG4iLmNvbmNhdChyZSwiKyIpLmNvbmNh''@;'; put 'put ''dCh1ZSwiICIpLmNvbmNhdChFZSksays9IlxuIi5jb25jYXQoaWUsIi0iKS5jb25jYXQodWUsIiAiKS5jb25jYXQod2UpLFVlKz0yKTooXys9ayxrPSIiLDEhPT1GZSYmMCE9PVNlfHwoXys9IlxuICAiLmNvbmNhdChFZSksVWUrKykpfWlmKFVlPjIwJiZTZTxCZS0yKXJldHVybiIiLmNvbmNh''@;'; put 'put ''dChxZSkuY29uY2F0KG90LCJcbiIpLmNvbmNhdChfLCJcbiIpLmNvbmNhdChlZSwiLi4uIikuY29uY2F0KHVlKS5jb25jYXQoaywiXG4iKSsiIi5jb25jYXQoZWUsIi4uLiIpLmNvbmNhdCh1ZSl9cmV0dXJuIiIuY29uY2F0KHFlKS5jb25jYXQoSz9vdDoiIiwiXG4iKS5jb25jYXQoXykuY29u''@;'; put 'put ''Y2F0KGspLmNvbmNhdCh3KS5jb25jYXQoTGUpfShoZSxTZSx0ZSkpKTtlbHNlIGlmKCJub3REZWVwU3RyaWN0RXF1YWwiPT09dGV8fCJub3RTdHJpY3RFcXVhbCI9PT10ZSl7dmFyIEhlPWxlW3RlXSx4ZT1iKGhlKS5zcGxpdCgiXG4iKTtpZigibm90U3RyaWN0RXF1YWwiPT09dGUmJiJvYmpl''@;'; put 'put ''Y3QiPT09WShoZSkmJm51bGwhPT1oZSYmKEhlPWxlLm5vdFN0cmljdEVxdWFsT2JqZWN0KSx4ZS5sZW5ndGg+MzApZm9yKHhlWzI2XT0iIi5jb25jYXQoZWUsIi4uLiIpLmNvbmNhdCh1ZSk7eGUubGVuZ3RoPjI3Oyl4ZS5wb3AoKTt3PVQodGhpcywxPT09eGUubGVuZ3RoP1ooZykuY2FsbCh0''@;'; put 'put ''aGlzLCIiLmNvbmNhdChIZSwiICIpLmNvbmNhdCh4ZVswXSkpOlooZykuY2FsbCh0aGlzLCIiLmNvbmNhdChIZSwiXG5cbiIpLmNvbmNhdCh4ZS5qb2luKCJcbiIpLCJcbiIpKSl9ZWxzZXt2YXIgRGU9YihoZSksQmU9IiIsR2U9bGVbdGVdOyJub3REZWVwRXF1YWwiPT09dGV8fCJub3RFcXVh''@;'; put 'put ''bCI9PT10ZT8oRGU9IiIuY29uY2F0KGxlW3RlXSwiXG5cbiIpLmNvbmNhdChEZSkpLmxlbmd0aD4xMDI0JiYoRGU9IiIuY29uY2F0KERlLnNsaWNlKDAsMTAyMSksIi4uLiIpKTooQmU9IiIuY29uY2F0KGIoU2UpKSxEZS5sZW5ndGg+NTEyJiYoRGU9IiIuY29uY2F0KERlLnNsaWNlKDAsNTA5''@;'; put 'put ''KSwiLi4uIikpLEJlLmxlbmd0aD41MTImJihCZT0iIi5jb25jYXQoQmUuc2xpY2UoMCw1MDkpLCIuLi4iKSksImRlZXBFcXVhbCI9PT10ZXx8ImVxdWFsIj09PXRlP0RlPSIiLmNvbmNhdChHZSwiXG5cbiIpLmNvbmNhdChEZSwiXG5cbnNob3VsZCBlcXVhbFxuXG4iKTpCZT0iICIuY29uY2F0''@;'; put 'put ''KHRlLCIgIikuY29uY2F0KEJlKSksdz1UKHRoaXMsWihnKS5jYWxsKHRoaXMsIiIuY29uY2F0KERlKS5jb25jYXQoQmUpKSl9cmV0dXJuIEVycm9yLnN0YWNrVHJhY2VMaW1pdD1MZSx3LmdlbmVyYXRlZE1lc3NhZ2U9IUssT2JqZWN0LmRlZmluZVByb3BlcnR5KEUodyksIm5hbWUiLHt2YWx1''@;'; put 'put ''ZToiQXNzZXJ0aW9uRXJyb3IgW0VSUl9BU1NFUlRJT05dIixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHcuY29kZT0iRVJSX0FTU0VSVElPTiIsdy5hY3R1YWw9aGUsdy5leHBlY3RlZD1TZSx3Lm9wZXJhdG9yPXRlLEVycm9yLmNhcHR1cmVTdGFja1RyYWNl''@;'; put 'put ''JiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShFKHcpLGNlKSx3Lm5hbWU9IkFzc2VydGlvbkVycm9yIixUKHcpfXZhciBrO3JldHVybiBmdW5jdGlvbihwLHcpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB3JiZudWxsIT09dyl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11''@;'; put 'put ''c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3AucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodyYmdy5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpwLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx3JiZCKHAsdyl9KGcsSCksaz1be2tleToidG9TdHJpbmciLHZh''@;'; put 'put ''bHVlOmZ1bmN0aW9uKCl7cmV0dXJuIiIuY29uY2F0KHRoaXMubmFtZSwiIFsiKS5jb25jYXQodGhpcy5jb2RlLCJdOiAiKS5jb25jYXQodGhpcy5tZXNzYWdlKX19LHtrZXk6VS5jdXN0b20sdmFsdWU6ZnVuY3Rpb24ocCx3KXtyZXR1cm4gVSh0aGlzLGZ1bmN0aW9uKEspe2Zvcih2YXIgdGU9''@;'; put 'put ''MTt0ZTxhcmd1bWVudHMubGVuZ3RoO3RlKyspe3ZhciBjZT1udWxsIT1hcmd1bWVudHNbdGVdP2FyZ3VtZW50c1t0ZV06e30saGU9T2JqZWN0LmtleXMoY2UpOyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYoaGU9aGUuY29uY2F0KE9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eVN5bWJvbHMoY2UpLmZpbHRlcihmdW5jdGlvbihTZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY2UsU2UpLmVudW1lcmFibGV9KSkpLGhlLmZvckVhY2goZnVuY3Rpb24oU2Upe0coSyxTZSxjZVtTZV0pfSl9cmV0dXJuIEt9KHt9LHcse2N1c3Rv''@;'; put 'put ''bUluc3BlY3Q6ITEsZGVwdGg6MH0pKX19XSxrJiZmdW5jdGlvbiBEKEgsZyl7Zm9yKHZhciBDPTA7QzxnLmxlbmd0aDtDKyspe3ZhciBrPWdbQ107ay5lbnVtZXJhYmxlPWsuZW51bWVyYWJsZXx8ITEsay5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGsmJihrLndyaXRhYmxlPSEwKSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoSCxrLmtleSxrKX19KGcucHJvdG90eXBlLGspLGd9KHooRXJyb3IpKTtNLmV4cG9ydHM9Rn0sMjEzNjooTSxPLEkpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGooWSl7cmV0dXJuKGo9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oVSl7cmV0dXJuIHR5cGVvZiBVfTpmdW5jdGlvbihVKXtyZXR1cm4gVSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmVS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmVSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIFV9KShZKX1m''@;'; put 'put ''dW5jdGlvbiBEKFkpe3JldHVybihEPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oVSl7cmV0dXJuIFUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoVSl9KShZKX1mdW5jdGlvbiBUKFksVSl7cmV0dXJuKFQ9T2JqZWN0LnNldFBy''@;'; put 'put ''b3RvdHlwZU9mfHxmdW5jdGlvbihxLEope3JldHVybiBxLl9fcHJvdG9fXz1KLHF9KShZLFUpfXZhciBFLHosTj17fTtmdW5jdGlvbiBCKFksVSxxKXtxfHwocT1FcnJvcik7dmFyIEo9ZnVuY3Rpb24oZWUpe2Z1bmN0aW9uIHJlKGllLHVlLGxlKXt2YXIgYWU7cmV0dXJuIGZ1bmN0aW9uKFcs''@;'; put 'put ''Yil7aWYoIShXIGluc3RhbmNlb2YgYikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMscmUpLGFlPWZ1bmN0aW9uIEcoWSxVKXtyZXR1cm4hVXx8Im9iamVjdCIhPT1qKFUpJiYiZnVuY3Rpb24iIT10eXBlb2YgVT9mdW5jdGlv''@;'; put 'put ''bihxKXtpZih2b2lkIDA9PT1xKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHF9KFkpOlV9KHRoaXMsRChyZSkuY2FsbCh0aGlzLCJzdHJpbmciPT10eXBlb2YgVT9VOlUo''@;'; put 'put ''aWUsdWUsbGUpKSksYWUuY29kZT1ZLGFlfXJldHVybiBmdW5jdGlvbihpZSx1ZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHVlJiZudWxsIT09dWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZS5wcm90''@;'; put 'put ''b3R5cGU9T2JqZWN0LmNyZWF0ZSh1ZSYmdWUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6aWUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHVlJiZUKGllLHVlKX0ocmUsZWUpLHJlfShxKTtOW1ldPUp9ZnVuY3Rpb24gWihZLFUpe2lmKEFycmF5LmlzQXJyYXkoWSkpe3Zh''@;'; put 'put ''ciBxPVkubGVuZ3RoO3JldHVybiBZPVkubWFwKGZ1bmN0aW9uKEope3JldHVybiBTdHJpbmcoSil9KSxxPjI/Im9uZSBvZiAiLmNvbmNhdChVLCIgIikuY29uY2F0KFkuc2xpY2UoMCxxLTEpLmpvaW4oIiwgIiksIiwgb3IgIikrWVtxLTFdOjI9PT1xPyJvbmUgb2YgIi5jb25jYXQoVSwiICIp''@;'; put 'put ''LmNvbmNhdChZWzBdLCIgb3IgIikuY29uY2F0KFlbMV0pOiJvZiAiLmNvbmNhdChVLCIgIikuY29uY2F0KFlbMF0pfXJldHVybiJvZiAiLmNvbmNhdChVLCIgIikuY29uY2F0KFN0cmluZyhZKSl9QigiRVJSX0FNQklHVU9VU19BUkdVTUVOVCIsJ1RoZSAiJXMiIGFyZ3VtZW50IGlzIGFtYmln''@;'; put 'put ''dW91cy4gJXMnLFR5cGVFcnJvciksQigiRVJSX0lOVkFMSURfQVJHX1RZUEUiLGZ1bmN0aW9uKFksVSxxKXt2YXIgSixpZSxsZSxXO2lmKHZvaWQgMD09PUUmJihFPUkoOTI4MikpLEUoInN0cmluZyI9PXR5cGVvZiBZLCInbmFtZScgbXVzdCBiZSBhIHN0cmluZyIpLCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgVSYmIm5vdCAiPT09VS5zdWJzdHIoMCw0KT8oSj0ibXVzdCBub3QgYmUiLFU9VS5yZXBsYWNlKC9ebm90IC8sIiIpKTpKPSJtdXN0IGJlIixsZT1ZLCh2b2lkIDA9PT1XfHxXPmxlLmxlbmd0aCkmJihXPWxlLmxlbmd0aCksIiBhcmd1bWVudCI9PT1sZS5zdWJzdHJpbmcoVy05LFcpKWll''@;'; put 'put ''PSJUaGUgIi5jb25jYXQoWSwiICIpLmNvbmNhdChKLCIgIikuY29uY2F0KFooVSwidHlwZSIpKTtlbHNle3ZhciB1ZT1mdW5jdGlvbihsZSxhZSxXKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIFcmJihXPTApLCEoVysxPmxlLmxlbmd0aCkmJi0xIT09bGUuaW5kZXhPZigiLiIsVyl9KFkpPyJw''@;'; put 'put ''cm9wZXJ0eSI6ImFyZ3VtZW50IjtpZT0nVGhlICInLmNvbmNhdChZLCciICcpLmNvbmNhdCh1ZSwiICIpLmNvbmNhdChKLCIgIikuY29uY2F0KFooVSwidHlwZSIpKX1yZXR1cm4gaWUrIi4gUmVjZWl2ZWQgdHlwZSAiLmNvbmNhdChqKHEpKX0sVHlwZUVycm9yKSxCKCJFUlJfSU5WQUxJRF9B''@;'; put 'put ''UkdfVkFMVUUiLGZ1bmN0aW9uKFksVSl7dmFyIHE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJpcyBpbnZhbGlkIjt2b2lkIDA9PT16JiYoej1JKDk1MzkpKTt2YXIgSj16Lmluc3BlY3QoVSk7cmV0dXJuIEoubGVuZ3RoPjEyOCYmKEo9''@;'; put 'put ''IiIuY29uY2F0KEouc2xpY2UoMCwxMjgpLCIuLi4iKSksIlRoZSBhcmd1bWVudCAnIi5jb25jYXQoWSwiJyAiKS5jb25jYXQocSwiLiBSZWNlaXZlZCAiKS5jb25jYXQoSil9LFR5cGVFcnJvcixSYW5nZUVycm9yKSxCKCJFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUiLGZ1bmN0aW9uKFksVSxx''@;'; put 'put ''KXt2YXIgSjtyZXR1cm4gSj1xJiZxLmNvbnN0cnVjdG9yJiZxLmNvbnN0cnVjdG9yLm5hbWU/Imluc3RhbmNlIG9mICIuY29uY2F0KHEuY29uc3RydWN0b3IubmFtZSk6InR5cGUgIi5jb25jYXQoaihxKSksIkV4cGVjdGVkICIuY29uY2F0KFksJyB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSAi''@;'; put 'put ''JykuY29uY2F0KFUsJyInKSsiIGZ1bmN0aW9uIGJ1dCBnb3QgIi5jb25jYXQoSiwiLiIpfSxUeXBlRXJyb3IpLEIoIkVSUl9NSVNTSU5HX0FSR1MiLGZ1bmN0aW9uKCl7Zm9yKHZhciBZPWFyZ3VtZW50cy5sZW5ndGgsVT1uZXcgQXJyYXkoWSkscT0wO3E8WTtxKyspVVtxXT1hcmd1bWVudHNb''@;'; put 'put ''cV07dm9pZCAwPT09RSYmKEU9SSg5MjgyKSksRShVLmxlbmd0aD4wLCJBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCIpO3ZhciBKPSJUaGUgIixlZT1VLmxlbmd0aDtzd2l0Y2goVT1VLm1hcChmdW5jdGlvbihyZSl7cmV0dXJuJyInLmNvbmNhdChyZSwnIicpfSksZWUp''@;'; put 'put ''e2Nhc2UgMTpKKz0iIi5jb25jYXQoVVswXSwiIGFyZ3VtZW50Iik7YnJlYWs7Y2FzZSAyOkorPSIiLmNvbmNhdChVWzBdLCIgYW5kICIpLmNvbmNhdChVWzFdLCIgYXJndW1lbnRzIik7YnJlYWs7ZGVmYXVsdDpKKz1VLnNsaWNlKDAsZWUtMSkuam9pbigiLCAiKSxKKz0iLCBhbmQgIi5jb25j''@;'; put 'put ''YXQoVVtlZS0xXSwiIGFyZ3VtZW50cyIpfXJldHVybiIiLmNvbmNhdChKLCIgbXVzdCBiZSBzcGVjaWZpZWQiKX0sVHlwZUVycm9yKSxNLmV4cG9ydHMuY29kZXM9Tn0sOTE1ODooTSxPLEkpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGood2UsRWUpe3JldHVybiBmdW5jdGlvbihJZSl7aWYo''@;'; put 'put ''QXJyYXkuaXNBcnJheShJZSkpcmV0dXJuIEllfSh3ZSl8fGZ1bmN0aW9uKEllLFhlKXt2YXIgdHQ9W10sWmU9ITAsY3Q9ITEsa2U9dm9pZCAwO3RyeXtmb3IodmFyIEFlLGplPUllW1N5bWJvbC5pdGVyYXRvcl0oKTshKFplPShBZT1qZS5uZXh0KCkpLmRvbmUpJiYodHQucHVzaChBZS52YWx1''@;'; put 'put ''ZSksIVhlfHx0dC5sZW5ndGghPT1YZSk7WmU9ITApO31jYXRjaChpdCl7Y3Q9ITAsa2U9aXR9ZmluYWxseXt0cnl7WmV8fG51bGw9PWplLnJldHVybnx8amUucmV0dXJuKCl9ZmluYWxseXtpZihjdCl0aHJvdyBrZX19cmV0dXJuIHR0fSh3ZSxFZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSgpfWZ1bmN0aW9uIEcod2Upe3JldHVybihHPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKEVlKXty''@;'; put 'put ''ZXR1cm4gdHlwZW9mIEVlfTpmdW5jdGlvbihFZSl7cmV0dXJuIEVlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZFZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmRWUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBFZX0pKHdlKX12YXIgRD12b2lkIDAhPT0vYS9nLmZsYWdz''@;'; put 'put ''LFQ9ZnVuY3Rpb24od2Upe3ZhciBFZT1bXTtyZXR1cm4gd2UuZm9yRWFjaChmdW5jdGlvbihJZSl7cmV0dXJuIEVlLnB1c2goSWUpfSksRWV9LEU9ZnVuY3Rpb24od2Upe3ZhciBFZT1bXTtyZXR1cm4gd2UuZm9yRWFjaChmdW5jdGlvbihJZSxYZSl7cmV0dXJuIEVlLnB1c2goW1hlLEllXSl9''@;'; put 'put ''KSxFZX0sej1PYmplY3QuaXM/T2JqZWN0LmlzOkkoNjA5KSxOPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczpmdW5jdGlvbigpe3JldHVybltdfSxCPU51bWJlci5pc05hTj9OdW1iZXIuaXNOYU46SSgzNjApO2Z1bmN0aW9uIFood2Up''@;'; put 'put ''e3JldHVybiB3ZS5jYWxsLmJpbmQod2UpfXZhciBZPVooT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSksVT1aKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpLHE9WihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSxKPUkoOTUzOSkudHlwZXMsZWU9Si5pc0Fu''@;'; put 'put ''eUFycmF5QnVmZmVyLHJlPUouaXNBcnJheUJ1ZmZlclZpZXcsaWU9Si5pc0RhdGUsdWU9Si5pc01hcCxsZT1KLmlzUmVnRXhwLGFlPUouaXNTZXQsVz1KLmlzTmF0aXZlRXJyb3IsYj1KLmlzQm94ZWRQcmltaXRpdmUsQT1KLmlzTnVtYmVyT2JqZWN0LEY9Si5pc1N0cmluZ09iamVjdCxIPUou''@;'; put 'put ''aXNCb29sZWFuT2JqZWN0LGc9Si5pc0JpZ0ludE9iamVjdCxDPUouaXNTeW1ib2xPYmplY3Qsaz1KLmlzRmxvYXQzMkFycmF5LF89Si5pc0Zsb2F0NjRBcnJheTtmdW5jdGlvbiBwKHdlKXtpZigwPT09d2UubGVuZ3RofHx3ZS5sZW5ndGg+MTApcmV0dXJuITA7Zm9yKHZhciBFZT0wO0VlPHdl''@;'; put 'put ''Lmxlbmd0aDtFZSsrKXt2YXIgSWU9d2UuY2hhckNvZGVBdChFZSk7aWYoSWU8NDh8fEllPjU3KXJldHVybiEwfXJldHVybiAxMD09PXdlLmxlbmd0aCYmd2U+PU1hdGgucG93KDIsMzIpfWZ1bmN0aW9uIHcod2Upe3JldHVybiBPYmplY3Qua2V5cyh3ZSkuZmlsdGVyKHApLmNvbmNhdChOKHdl''@;'; put 'put ''KS5maWx0ZXIoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5iaW5kKHdlKSkpfWZ1bmN0aW9uIEsod2UsRWUpe2lmKHdlPT09RWUpcmV0dXJuIDA7Zm9yKHZhciBJZT13ZS5sZW5ndGgsWGU9RWUubGVuZ3RoLHR0PTAsWmU9TWF0aC5taW4oSWUsWGUpO3R0PFplOysrdHQp''@;'; put 'put ''aWYod2VbdHRdIT09RWVbdHRdKXtJZT13ZVt0dF0sWGU9RWVbdHRdO2JyZWFrfXJldHVybiBJZTxYZT8tMTpYZTxJZT8xOjB9dmFyIGhlPTAsU2U9MSxMZT0yLEhlPTM7ZnVuY3Rpb24geGUod2UsRWUsSWUsWGUpe2lmKHdlPT09RWUpcmV0dXJuIDAhPT13ZXx8IUllfHx6KHdlLEVlKTtpZihJ''@;'; put 'put ''ZSl7aWYoIm9iamVjdCIhPT1HKHdlKSlyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHdlJiZCKHdlKSYmQihFZSk7aWYoIm9iamVjdCIhPT1HKEVlKXx8bnVsbD09PXdlfHxudWxsPT09RWV8fE9iamVjdC5nZXRQcm90b3R5cGVPZih3ZSkhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoRWUpKXJldHVy''@;'; put 'put ''biExfWVsc2V7aWYobnVsbD09PXdlfHwib2JqZWN0IiE9PUcod2UpKXJldHVybihudWxsPT09RWV8fCJvYmplY3QiIT09RyhFZSkpJiZ3ZT09RWU7aWYobnVsbD09PUVlfHwib2JqZWN0IiE9PUcoRWUpKXJldHVybiExfXZhciB0dCxaZSxjdCxrZSxGdCxPdCxBZT1xKHdlKTtpZihBZSE9PXEo''@;'; put 'put ''RWUpKXJldHVybiExO2lmKEFycmF5LmlzQXJyYXkod2UpKXtpZih3ZS5sZW5ndGghPT1FZS5sZW5ndGgpcmV0dXJuITE7dmFyIGplPXcod2UpLGl0PXcoRWUpO3JldHVybiBqZS5sZW5ndGg9PT1pdC5sZW5ndGgmJkJlKHdlLEVlLEllLFhlLFNlLGplKX1pZigiW29iamVjdCBPYmplY3RdIj09''@;'; put 'put ''PUFlJiYoIXVlKHdlKSYmdWUoRWUpfHwhYWUod2UpJiZhZShFZSkpKXJldHVybiExO2lmKGllKHdlKSl7aWYoIWllKEVlKXx8RGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHdlKSE9PURhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbChFZSkpcmV0dXJuITF9ZWxzZSBpZihsZSh3ZSkpe2lm''@;'; put 'put ''KCFsZShFZSl8fChjdD13ZSxrZT1FZSwhKEQ/Y3Quc291cmNlPT09a2Uuc291cmNlJiZjdC5mbGFncz09PWtlLmZsYWdzOlJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjdCk9PT1SZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoa2UpKSkpcmV0dXJuITF9ZWxzZSBpZihXKHdl''@;'; put 'put ''KXx8d2UgaW5zdGFuY2VvZiBFcnJvcil7aWYod2UubWVzc2FnZSE9PUVlLm1lc3NhZ2V8fHdlLm5hbWUhPT1FZS5uYW1lKXJldHVybiExfWVsc2V7aWYocmUod2UpKXtpZihJZXx8IWsod2UpJiYhXyh3ZSkpe2lmKChGdD13ZSkuYnl0ZUxlbmd0aCE9PShPdD1FZSkuYnl0ZUxlbmd0aHx8MCE9''@;'; put 'put ''PUsobmV3IFVpbnQ4QXJyYXkoRnQuYnVmZmVyLEZ0LmJ5dGVPZmZzZXQsRnQuYnl0ZUxlbmd0aCksbmV3IFVpbnQ4QXJyYXkoT3QuYnVmZmVyLE90LmJ5dGVPZmZzZXQsT3QuYnl0ZUxlbmd0aCkpKXJldHVybiExfWVsc2UgaWYoIWZ1bmN0aW9uKEZ0LE90KXtpZihGdC5ieXRlTGVuZ3RoIT09''@;'; put 'put ''T3QuYnl0ZUxlbmd0aClyZXR1cm4hMTtmb3IodmFyIEt0PTA7S3Q8RnQuYnl0ZUxlbmd0aDtLdCsrKWlmKEZ0W0t0XSE9PU90W0t0XSlyZXR1cm4hMTtyZXR1cm4hMH0od2UsRWUpKXJldHVybiExO3ZhciBzdD13KHdlKSx4dD13KEVlKTtyZXR1cm4gc3QubGVuZ3RoPT09eHQubGVuZ3RoJiZC''@;'; put 'put ''ZSh3ZSxFZSxJZSxYZSxoZSxzdCl9aWYoYWUod2UpKXJldHVybiEoIWFlKEVlKXx8d2Uuc2l6ZSE9PUVlLnNpemUpJiZCZSh3ZSxFZSxJZSxYZSxMZSk7aWYodWUod2UpKXJldHVybiEoIXVlKEVlKXx8d2Uuc2l6ZSE9PUVlLnNpemUpJiZCZSh3ZSxFZSxJZSxYZSxIZSk7aWYoZWUod2UpKXtp''@;'; put 'put ''ZigodHQ9d2UpLmJ5dGVMZW5ndGghPT0oWmU9RWUpLmJ5dGVMZW5ndGh8fDAhPT1LKG5ldyBVaW50OEFycmF5KHR0KSxuZXcgVWludDhBcnJheShaZSkpKXJldHVybiExfWVsc2UgaWYoYih3ZSkmJiFmdW5jdGlvbihGdCxPdCl7cmV0dXJuIEEoRnQpP0EoT3QpJiZ6KE51bWJlci5wcm90b3R5''@;'; put 'put ''cGUudmFsdWVPZi5jYWxsKEZ0KSxOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbChPdCkpOkYoRnQpP0YoT3QpJiZTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbChGdCk9PT1TdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbChPdCk6SChGdCk/SChPdCkmJkJvb2xlYW4ucHJvdG90''@;'; put 'put ''eXBlLnZhbHVlT2YuY2FsbChGdCk9PT1Cb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoT3QpOmcoRnQpP2coT3QpJiZCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YuY2FsbChGdCk9PT1CaWdJbnQucHJvdG90eXBlLnZhbHVlT2YuY2FsbChPdCk6QyhPdCkmJlN5bWJvbC5wcm90b3R5cGUu''@;'; put 'put ''dmFsdWVPZi5jYWxsKEZ0KT09PVN5bWJvbC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKE90KX0od2UsRWUpKXJldHVybiExfXJldHVybiBCZSh3ZSxFZSxJZSxYZSxoZSl9ZnVuY3Rpb24gRGUod2UsRWUpe3JldHVybiBFZS5maWx0ZXIoZnVuY3Rpb24oSWUpe3JldHVybiBVKHdlLEllKX0pfWZ1''@;'; put 'put ''bmN0aW9uIEJlKHdlLEVlLEllLFhlLHR0LFplKXtpZig1PT09YXJndW1lbnRzLmxlbmd0aCl7WmU9T2JqZWN0LmtleXMod2UpO3ZhciBjdD1PYmplY3Qua2V5cyhFZSk7aWYoWmUubGVuZ3RoIT09Y3QubGVuZ3RoKXJldHVybiExfWZvcih2YXIga2U9MDtrZTxaZS5sZW5ndGg7a2UrKylpZigh''@;'; put 'put ''WShFZSxaZVtrZV0pKXJldHVybiExO2lmKEllJiY1PT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIEFlPU4od2UpO2lmKDAhPT1BZS5sZW5ndGgpe3ZhciBqZT0wO2ZvcihrZT0wO2tlPEFlLmxlbmd0aDtrZSsrKXt2YXIgaXQ9QWVba2VdO2lmKFUod2UsaXQpKXtpZighVShFZSxpdCkpcmV0dXJu''@;'; put 'put ''ITE7WmUucHVzaChpdCksamUrK31lbHNlIGlmKFUoRWUsaXQpKXJldHVybiExfXZhciBzdD1OKEVlKTtpZihBZS5sZW5ndGghPT1zdC5sZW5ndGgmJkRlKEVlLHN0KS5sZW5ndGghPT1qZSlyZXR1cm4hMX1lbHNle3ZhciB4dD1OKEVlKTtpZigwIT09eHQubGVuZ3RoJiYwIT09RGUoRWUseHQp''@;'; put 'put ''Lmxlbmd0aClyZXR1cm4hMX19aWYoMD09PVplLmxlbmd0aCYmKHR0PT09aGV8fHR0PT09U2UmJjA9PT13ZS5sZW5ndGh8fDA9PT13ZS5zaXplKSlyZXR1cm4hMDtpZih2b2lkIDA9PT1YZSlYZT17dmFsMTpuZXcgTWFwLHZhbDI6bmV3IE1hcCxwb3NpdGlvbjowfTtlbHNle3ZhciBGdD1YZS52''@;'; put 'put ''YWwxLmdldCh3ZSk7aWYodm9pZCAwIT09RnQpe3ZhciBPdD1YZS52YWwyLmdldChFZSk7aWYodm9pZCAwIT09T3QpcmV0dXJuIEZ0PT09T3R9WGUucG9zaXRpb24rK31YZS52YWwxLnNldCh3ZSxYZS5wb3NpdGlvbiksWGUudmFsMi5zZXQoRWUsWGUucG9zaXRpb24pO3ZhciBLdD1mdW5jdGlv''@;'; put 'put ''bihibixCdCx5bixObixubixHbil7dmFyIFluPTA7aWYoR249PT1MZSl7aWYoIWZ1bmN0aW9uKHd0LGp0LG10LEh0KXtmb3IodmFyIHBuPW51bGwsbnQ9VCh3dCksRXQ9MDtFdDxudC5sZW5ndGg7RXQrKyl7dmFyIGVuPW50W0V0XTtpZigib2JqZWN0Ij09PUcoZW4pJiZudWxsIT09ZW4pbnVs''@;'; put 'put ''bD09PXBuJiYocG49bmV3IFNldCkscG4uYWRkKGVuKTtlbHNlIGlmKCFqdC5oYXMoZW4pKXtpZihtdHx8IXFlKHd0LGp0LGVuKSlyZXR1cm4hMTtudWxsPT09cG4mJihwbj1uZXcgU2V0KSxwbi5hZGQoZW4pfX1pZihudWxsIT09cG4pe2Zvcih2YXIgVHQ9VChqdCkseXQ9MDt5dDxUdC5sZW5n''@;'; put 'put ''dGg7eXQrKyl7dmFyICR0PVR0W3l0XTtpZigib2JqZWN0Ij09PUcoJHQpJiZudWxsIT09JHQpe2lmKCFHZShwbiwkdCxtdCxIdCkpcmV0dXJuITF9ZWxzZSBpZighbXQmJiF3dC5oYXMoJHQpJiYhR2UocG4sJHQsbXQsSHQpKXJldHVybiExfXJldHVybiAwPT09cG4uc2l6ZX1yZXR1cm4hMH0o''@;'; put 'put ''Ym4sQnQseW4sbm4pKXJldHVybiExfWVsc2UgaWYoR249PT1IZSl7aWYoIWZ1bmN0aW9uKHd0LGp0LG10LEh0KXtmb3IodmFyIHBuPW51bGwsbnQ9RSh3dCksRXQ9MDtFdDxudC5sZW5ndGg7RXQrKyl7dmFyIGVuPWoobnRbRXRdLDIpLFR0PWVuWzBdLHl0PWVuWzFdO2lmKCJvYmplY3QiPT09''@;'; put 'put ''RyhUdCkmJm51bGwhPT1UdCludWxsPT09cG4mJihwbj1uZXcgU2V0KSxwbi5hZGQoVHQpO2Vsc2V7dmFyICR0PWp0LmdldChUdCk7aWYodm9pZCAwPT09JHQmJiFqdC5oYXMoVHQpfHwheGUoeXQsJHQsbXQsSHQpKXtpZihtdHx8IW90KHd0LGp0LFR0LHl0LEh0KSlyZXR1cm4hMTtudWxsPT09''@;'; put 'put ''cG4mJihwbj1uZXcgU2V0KSxwbi5hZGQoVHQpfX19aWYobnVsbCE9PXBuKXtmb3IodmFyIHhuPUUoanQpLHp0PTA7enQ8eG4ubGVuZ3RoO3p0Kyspe3ZhciBfbj1qKHhuW3p0XSwyKSxPbj0oVHQ9X25bMF0sX25bMV0pO2lmKCJvYmplY3QiPT09RyhUdCkmJm51bGwhPT1UdCl7aWYoIUZlKHBu''@;'; put 'put ''LHd0LFR0LE9uLG10LEh0KSlyZXR1cm4hMX1lbHNlIGlmKCEobXR8fHd0LmhhcyhUdCkmJnhlKHd0LmdldChUdCksT24sITEsSHQpfHxGZShwbix3dCxUdCxPbiwhMSxIdCkpKXJldHVybiExfXJldHVybiAwPT09cG4uc2l6ZX1yZXR1cm4hMH0oYm4sQnQseW4sbm4pKXJldHVybiExfWVsc2Ug''@;'; put 'put ''aWYoR249PT1TZSlmb3IoO1luPGJuLmxlbmd0aDtZbisrKXtpZighWShibixZbikpe2lmKFkoQnQsWW4pKXJldHVybiExO2Zvcih2YXIgZnQ9T2JqZWN0LmtleXMoYm4pO1luPGZ0Lmxlbmd0aDtZbisrKXt2YXIgZG49ZnRbWW5dO2lmKCFZKEJ0LGRuKXx8IXhlKGJuW2RuXSxCdFtkbl0seW4s''@;'; put 'put ''bm4pKXJldHVybiExfXJldHVybiBmdC5sZW5ndGg9PT1PYmplY3Qua2V5cyhCdCkubGVuZ3RofWlmKCFZKEJ0LFluKXx8IXhlKGJuW1luXSxCdFtZbl0seW4sbm4pKXJldHVybiExfWZvcihZbj0wO1luPE5uLmxlbmd0aDtZbisrKXt2YXIgaG49Tm5bWW5dO2lmKCF4ZShibltobl0sQnRbaG5d''@;'; put 'put ''LHluLG5uKSlyZXR1cm4hMX1yZXR1cm4hMH0od2UsRWUsSWUsWmUsWGUsdHQpO3JldHVybiBYZS52YWwxLmRlbGV0ZSh3ZSksWGUudmFsMi5kZWxldGUoRWUpLEt0fWZ1bmN0aW9uIEdlKHdlLEVlLEllLFhlKXtmb3IodmFyIHR0PVQod2UpLFplPTA7WmU8dHQubGVuZ3RoO1plKyspe3ZhciBj''@;'; put 'put ''dD10dFtaZV07aWYoeGUoRWUsY3QsSWUsWGUpKXJldHVybiB3ZS5kZWxldGUoY3QpLCEwfXJldHVybiExfWZ1bmN0aW9uIFVlKHdlKXtzd2l0Y2goRyh3ZSkpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gbnVsbDtjYXNlIm9iamVjdCI6cmV0dXJuO2Nhc2Uic3ltYm9sIjpyZXR1cm4hMTtjYXNl''@;'; put 'put ''InN0cmluZyI6d2U9K3dlO2Nhc2UibnVtYmVyIjppZihCKHdlKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBxZSh3ZSxFZSxJZSl7dmFyIFhlPVVlKEllKTtyZXR1cm4gWGU/PyhFZS5oYXMoWGUpJiYhd2UuaGFzKFhlKSl9ZnVuY3Rpb24gb3Qod2UsRWUsSWUsWGUsdHQpe3ZhciBaZT1V''@;'; put 'put ''ZShJZSk7aWYobnVsbCE9WmUpcmV0dXJuIFplO3ZhciBjdD1FZS5nZXQoWmUpO3JldHVybiEodm9pZCAwPT09Y3QmJiFFZS5oYXMoWmUpfHwheGUoWGUsY3QsITEsdHQpKSYmIXdlLmhhcyhaZSkmJnhlKFhlLGN0LCExLHR0KX1mdW5jdGlvbiBGZSh3ZSxFZSxJZSxYZSx0dCxaZSl7Zm9yKHZh''@;'; put 'put ''ciBjdD1UKHdlKSxrZT0wO2tlPGN0Lmxlbmd0aDtrZSsrKXt2YXIgQWU9Y3Rba2VdO2lmKHhlKEllLEFlLHR0LFplKSYmeGUoWGUsRWUuZ2V0KEFlKSx0dCxaZSkpcmV0dXJuIHdlLmRlbGV0ZShBZSksITB9cmV0dXJuITF9TS5leHBvcnRzPXtpc0RlZXBFcXVhbDpmdW5jdGlvbih3ZSxFZSl7''@;'; put 'put ''cmV0dXJuIHhlKHdlLEVlLCExKX0saXNEZWVwU3RyaWN0RXF1YWw6ZnVuY3Rpb24od2UsRWUpe3JldHVybiB4ZSh3ZSxFZSwhMCl9fX0sODIyNDpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1mdW5jdGlvbihPKXtyZXR1cm4gT319LDk2Njk6KE0sTyxJKT0+e00uZXhwb3J0cz1JKDE2MDkp''@;'; put 'put ''fSw1NDQ4OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KSxHPUkoNjAyNiksRD1JKDQzNzIpLFQ9SSg1MzI3KSxFPUkoNDA5Nyksej1JKDQxMDkpLE49SSg3OTg1KSxCPUkoNzg3NCksWj1JKDI2NDgpLFk9SSg2NDQpLFU9SSgyMDUpO00uZXhwb3J0cz1mdW5jdGlvbihxKXty''@;'; put 'put ''ZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oSixlZSl7dmFyIHJlLGllPXEuZGF0YSx1ZT1xLmhlYWRlcnMsbGU9cS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gYWUoKXtxLmNhbmNlbFRva2VuJiZxLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKHJlKSxxLnNpZ25hbCYmcS5zaWduYWwucmVtb3Zl''@;'; put 'put ''RXZlbnRMaXN0ZW5lcigiYWJvcnQiLHJlKX1qLmlzRm9ybURhdGEoaWUpJiZqLmlzU3RhbmRhcmRCcm93c2VyRW52KCkmJmRlbGV0ZSB1ZVsiQ29udGVudC1UeXBlIl07dmFyIFc9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKHEuYXV0aCl7dmFyIGI9cS5hdXRoLnVzZXJuYW1lfHwiIixBPXEuYXV0''@;'; put 'put ''aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQocS5hdXRoLnBhc3N3b3JkKSk6IiI7dWUuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGIrIjoiK0EpfXZhciBGPUUocS5iYXNlVVJMLHEudXJsKTtmdW5jdGlvbiBIKCl7aWYoVyl7dmFyIGs9ImdldEFsbFJlc3BvbnNl''@;'; put 'put ''SGVhZGVycyJpbiBXP3ooVy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbDtHKGZ1bmN0aW9uKHApe0oocCksYWUoKX0sZnVuY3Rpb24ocCl7ZWUocCksYWUoKX0se2RhdGE6bGUmJiJ0ZXh0IiE9PWxlJiYianNvbiIhPT1sZT9XLnJlc3BvbnNlOlcucmVzcG9uc2VUZXh0LHN0YXR1czpX''@;'; put 'put ''LnN0YXR1cyxzdGF0dXNUZXh0Olcuc3RhdHVzVGV4dCxoZWFkZXJzOmssY29uZmlnOnEscmVxdWVzdDpXfSksVz1udWxsfX1pZihXLm9wZW4ocS5tZXRob2QudG9VcHBlckNhc2UoKSxUKEYscS5wYXJhbXMscS5wYXJhbXNTZXJpYWxpemVyKSwhMCksVy50aW1lb3V0PXEudGltZW91dCwib25s''@;'; put 'put ''b2FkZW5kImluIFc/Vy5vbmxvYWRlbmQ9SDpXLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe1cmJjQ9PT1XLnJlYWR5U3RhdGUmJigwIT09Vy5zdGF0dXN8fFcucmVzcG9uc2VVUkwmJjA9PT1XLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KEgpfSxXLm9u''@;'; put 'put ''YWJvcnQ9ZnVuY3Rpb24oKXtXJiYoZWUobmV3IFooIlJlcXVlc3QgYWJvcnRlZCIsWi5FQ09OTkFCT1JURUQscSxXKSksVz1udWxsKX0sVy5vbmVycm9yPWZ1bmN0aW9uKCl7ZWUobmV3IFooIk5ldHdvcmsgRXJyb3IiLFouRVJSX05FVFdPUksscSxXLFcpKSxXPW51bGx9LFcub250aW1lb3V0''@;'; put 'put ''PWZ1bmN0aW9uKCl7dmFyIGs9cS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrcS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiO3EudGltZW91dEVycm9yTWVzc2FnZSYmKGs9cS50aW1lb3V0RXJyb3JNZXNzYWdlKSxlZShuZXcgWihrLChxLnRyYW5zaXRpb25hbHx8Qiku''@;'; put 'put ''Y2xhcmlmeVRpbWVvdXRFcnJvcj9aLkVUSU1FRE9VVDpaLkVDT05OQUJPUlRFRCxxLFcpKSxXPW51bGx9LGouaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIGc9KHEud2l0aENyZWRlbnRpYWxzfHxOKEYpKSYmcS54c3JmQ29va2llTmFtZT9ELnJlYWQocS54c3JmQ29va2llTmFtZSk6dm9p''@;'; put 'put ''ZCAwO2cmJih1ZVtxLnhzcmZIZWFkZXJOYW1lXT1nKX0ic2V0UmVxdWVzdEhlYWRlciJpbiBXJiZqLmZvckVhY2godWUsZnVuY3Rpb24oayxfKXt2b2lkIDA9PT1pZSYmImNvbnRlbnQtdHlwZSI9PT1fLnRvTG93ZXJDYXNlKCk/ZGVsZXRlIHVlW19dOlcuc2V0UmVxdWVzdEhlYWRlcihfLGsp''@;'; put 'put ''fSksai5pc1VuZGVmaW5lZChxLndpdGhDcmVkZW50aWFscyl8fChXLndpdGhDcmVkZW50aWFscz0hIXEud2l0aENyZWRlbnRpYWxzKSxsZSYmImpzb24iIT09bGUmJihXLnJlc3BvbnNlVHlwZT1xLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIHEub25Eb3dubG9hZFByb2dyZXNz''@;'; put 'put ''JiZXLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixxLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIHEub25VcGxvYWRQcm9ncmVzcyYmVy51cGxvYWQmJlcudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixxLm9uVXBsb2FkUHJvZ3Jlc3MpLChxLmNh''@;'; put 'put ''bmNlbFRva2VufHxxLnNpZ25hbCkmJihyZT1mdW5jdGlvbihrKXtXJiYoZWUoIWt8fGsmJmsudHlwZT9uZXcgWTprKSxXLmFib3J0KCksVz1udWxsKX0scS5jYW5jZWxUb2tlbiYmcS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUocmUpLHEuc2lnbmFsJiYocS5zaWduYWwuYWJvcnRlZD9yZSgpOnEu''@;'; put 'put ''c2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixyZSkpKSxpZXx8KGllPW51bGwpO3ZhciBDPVUoRik7QyYmLTE9PT1bImh0dHAiLCJodHRwcyIsImZpbGUiXS5pbmRleE9mKEMpP2VlKG5ldyBaKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0MrIjoiLFouRVJSX0JBRF9SRVFVRVNULHEp''@;'; put 'put ''KTpXLnNlbmQoaWUpfSl9fSwxNjA5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KSxHPUkoMTg0OSksRD1JKDMyMSksVD1JKDcxODUpLEU9ZnVuY3Rpb24geihOKXt2YXIgQj1uZXcgRChOKSxaPUcoRC5wcm90b3R5cGUucmVxdWVzdCxCKTtyZXR1cm4gai5leHRlbmQoWixE''@;'; put 'put ''LnByb3RvdHlwZSxCKSxqLmV4dGVuZChaLEIpLFouY3JlYXRlPWZ1bmN0aW9uKFkpe3JldHVybiB6KFQoTixZKSl9LFp9KEkoNTU0NikpO0UuQXhpb3M9RCxFLkNhbmNlbGVkRXJyb3I9SSg2NDQpLEUuQ2FuY2VsVG9rZW49SSg0OTcyKSxFLmlzQ2FuY2VsPUkoNjUwMiksRS5WRVJTSU9OPUko''@;'; put 'put ''NzI4OCkudmVyc2lvbixFLnRvRm9ybURhdGE9SSg3Njc1KSxFLkF4aW9zRXJyb3I9SSgyNjQ4KSxFLkNhbmNlbD1FLkNhbmNlbGVkRXJyb3IsRS5hbGw9ZnVuY3Rpb24oeil7cmV0dXJuIFByb21pc2UuYWxsKHopfSxFLnNwcmVhZD1JKDg3MTMpLEUuaXNBeGlvc0Vycm9yPUkoNjI2OCksTS5l''@;'; put 'put ''eHBvcnRzPUUsTS5leHBvcnRzLmRlZmF1bHQ9RX0sNDk3MjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNjQ0KTtmdW5jdGlvbiBHKEQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBEKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIg''@;'; put 'put ''VDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oeil7VD16fSk7dmFyIEU9dGhpczt0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbih6KXtpZihFLl9saXN0ZW5lcnMpe3ZhciBOLEI9RS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoTj0wO048QjtOKyspRS5fbGlzdGVuZXJzW05dKHop''@;'; put 'put ''O0UuX2xpc3RlbmVycz1udWxsfX0pLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKHope3ZhciBOLEI9bmV3IFByb21pc2UoZnVuY3Rpb24oWil7RS5zdWJzY3JpYmUoWiksTj1afSkudGhlbih6KTtyZXR1cm4gQi5jYW5jZWw9ZnVuY3Rpb24oKXtFLnVuc3Vic2NyaWJlKE4pfSxCfSxEKGZ1''@;'; put 'put ''bmN0aW9uKHope0UucmVhc29ufHwoRS5yZWFzb249bmV3IGooeiksVChFLnJlYXNvbikpfSl9Ry5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxHLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oRCl7dGhp''@;'; put 'put ''cy5yZWFzb24/RCh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEQpOnRoaXMuX2xpc3RlbmVycz1bRF19LEcucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKEQpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIFQ9dGhpcy5fbGlzdGVuZXJzLmlu''@;'; put 'put ''ZGV4T2YoRCk7LTEhPT1UJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKFQsMSl9fSxHLnNvdXJjZT1mdW5jdGlvbigpe3ZhciBEO3JldHVybnt0b2tlbjpuZXcgRyhmdW5jdGlvbihUKXtEPVR9KSxjYW5jZWw6RH19LE0uZXhwb3J0cz1HfSw2NDQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''aj1JKDI2NDgpO2Z1bmN0aW9uIEcoRCl7ai5jYWxsKHRoaXMsRD8/ImNhbmNlbGVkIixqLkVSUl9DQU5DRUxFRCksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1JKDQ4NjcpLmluaGVyaXRzKEcsaix7X19DQU5DRUxfXzohMH0pLE0uZXhwb3J0cz1HfSw2NTAyOk09PnsidXNlIHN0cmljdCI7''@;'; put 'put ''TS5leHBvcnRzPWZ1bmN0aW9uKE8pe3JldHVybiEoIU98fCFPLl9fQ0FOQ0VMX18pfX0sMzIxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KSxHPUkoNTMyNyksRD1JKDc4MiksVD1JKDM1NzIpLEU9SSg3MTg1KSx6PUkoNDA5NyksTj1JKDQ4NzUpLEI9Ti52YWxpZGF0b3Jz''@;'; put 'put ''O2Z1bmN0aW9uIFooWSl7dGhpcy5kZWZhdWx0cz1ZLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBELHJlc3BvbnNlOm5ldyBEfX1aLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKFksVSl7InN0cmluZyI9PXR5cGVvZiBZPyhVPVV8fHt9KS51cmw9WTpVPVl8fHt9LFUubWV0aG9k''@;'; put 'put ''PShVPUUodGhpcy5kZWZhdWx0cyxVKSkubWV0aG9kP1UubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q/dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKToiZ2V0Ijt2YXIgcT1VLnRyYW5zaXRpb25hbDt2b2lkIDAhPT1xJiZOLmFzc2VydE9wdGlvbnMo''@;'; put 'put ''cSx7c2lsZW50SlNPTlBhcnNpbmc6Qi50cmFuc2l0aW9uYWwoQi5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpCLnRyYW5zaXRpb25hbChCLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Qi50cmFuc2l0aW9uYWwoQi5ib29sZWFuKX0sITEpO3ZhciBKPVtdLGVlPSEwO3RoaXMuaW50''@;'; put 'put ''ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihiKXsiZnVuY3Rpb24iPT10eXBlb2YgYi5ydW5XaGVuJiYhMT09PWIucnVuV2hlbihVKXx8KGVlPWVlJiZiLnN5bmNocm9ub3VzLEoudW5zaGlmdChiLmZ1bGZpbGxlZCxiLnJlamVjdGVkKSl9KTt2YXIgcmUsaWU9W107aWYodGhp''@;'; put 'put ''cy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihiKXtpZS5wdXNoKGIuZnVsZmlsbGVkLGIucmVqZWN0ZWQpfSksIWVlKXt2YXIgdWU9W1Qsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkodWUsSiksdWU9dWUuY29uY2F0KGllKSxyZT1Qcm9t''@;'; put 'put ''aXNlLnJlc29sdmUoVSk7dWUubGVuZ3RoOylyZT1yZS50aGVuKHVlLnNoaWZ0KCksdWUuc2hpZnQoKSk7cmV0dXJuIHJlfWZvcih2YXIgbGU9VTtKLmxlbmd0aDspe3ZhciBhZT1KLnNoaWZ0KCksVz1KLnNoaWZ0KCk7dHJ5e2xlPWFlKGxlKX1jYXRjaChiKXtXKGIpO2JyZWFrfX10cnl7cmU9''@;'; put 'put ''VChsZSl9Y2F0Y2goYil7cmV0dXJuIFByb21pc2UucmVqZWN0KGIpfWZvcig7aWUubGVuZ3RoOylyZT1yZS50aGVuKGllLnNoaWZ0KCksaWUuc2hpZnQoKSk7cmV0dXJuIHJlfSxaLnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oWSl7WT1FKHRoaXMuZGVmYXVsdHMsWSk7dmFyIFU9eihZLmJh''@;'; put 'put ''c2VVUkwsWS51cmwpO3JldHVybiBHKFUsWS5wYXJhbXMsWS5wYXJhbXNTZXJpYWxpemVyKX0sai5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihZKXtaLnByb3RvdHlwZVtZXT1mdW5jdGlvbihVLHEpe3JldHVybiB0aGlzLnJlcXVlc3QoRShxfHx7''@;'; put 'put ''fSx7bWV0aG9kOlksdXJsOlUsZGF0YToocXx8e30pLmRhdGF9KSl9fSksai5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oWSl7ZnVuY3Rpb24gVShxKXtyZXR1cm4gZnVuY3Rpb24oSixlZSxyZSl7cmV0dXJuIHRoaXMucmVxdWVzdChFKHJlfHx7fSx7bWV0aG9kOlks''@;'; put 'put ''aGVhZGVyczpxP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpKLGRhdGE6ZWV9KSl9fVoucHJvdG90eXBlW1ldPVUoKSxaLnByb3RvdHlwZVtZKyJGb3JtIl09VSghMCl9KSxNLmV4cG9ydHM9Wn0sMjY0ODooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBq''@;'; put 'put ''PUkoNDg2Nyk7ZnVuY3Rpb24gRyhFLHosTixCLFope0Vycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPUUsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIix6JiYodGhpcy5jb2RlPXopLE4mJih0aGlzLmNvbmZpZz1OKSxCJiYodGhpcy5yZXF1ZXN0PUIpLFomJih0aGlzLnJlc3BvbnNlPVopfWou''@;'; put 'put ''aW5oZXJpdHMoRyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlz''@;'; put 'put ''LmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19''@;'; put 'put ''KTt2YXIgRD1HLnByb3RvdHlwZSxUPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQ''@;'; put 'put ''T05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCJdLmZvckVhY2goZnVuY3Rpb24oRSl7VFtFXT17dmFsdWU6RX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhHLFQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELCJpc0F4aW9zRXJyb3IiLHt2YWx1ZTohMH0pLEcuZnJvbT1m''@;'; put 'put ''dW5jdGlvbihFLHosTixCLFosWSl7dmFyIFU9T2JqZWN0LmNyZWF0ZShEKTtyZXR1cm4gai50b0ZsYXRPYmplY3QoRSxVLGZ1bmN0aW9uKHEpe3JldHVybiBxIT09RXJyb3IucHJvdG90eXBlfSksRy5jYWxsKFUsRS5tZXNzYWdlLHosTixCLFopLFUubmFtZT1FLm5hbWUsWSYmT2JqZWN0LmFz''@;'; put 'put ''c2lnbihVLFkpLFV9LE0uZXhwb3J0cz1HfSw3ODI6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQ4NjcpO2Z1bmN0aW9uIEcoKXt0aGlzLmhhbmRsZXJzPVtdfUcucHJvdG90eXBlLnVzZT1mdW5jdGlvbihELFQsRSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVk''@;'; put 'put ''OkQscmVqZWN0ZWQ6VCxzeW5jaHJvbm91czohIUUmJkUuc3luY2hyb25vdXMscnVuV2hlbjpFP0UucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sRy5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oRCl7dGhpcy5oYW5kbGVyc1tEXSYmKHRoaXMuaGFuZGxlcnNbRF09bnVs''@;'; put 'put ''bCl9LEcucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oRCl7ai5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oVCl7bnVsbCE9PVQmJkQoVCl9KX0sTS5leHBvcnRzPUd9LDQwOTc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDE3OTMpLEc9SSg3MzAzKTtNLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oRCxUKXtyZXR1cm4gRCYmIWooVCk/RyhELFQpOlR9fSwzNTcyOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KSxHPUkoODUyNyksRD1JKDY1MDIpLFQ9SSg1NTQ2KSxFPUkoNjQ0KTtmdW5jdGlvbiB6KE4pe2lmKE4uY2FuY2VsVG9rZW4mJk4uY2FuY2VsVG9r''@;'; put 'put ''ZW4udGhyb3dJZlJlcXVlc3RlZCgpLE4uc2lnbmFsJiZOLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBFfU0uZXhwb3J0cz1mdW5jdGlvbihOKXtyZXR1cm4geihOKSxOLmhlYWRlcnM9Ti5oZWFkZXJzfHx7fSxOLmRhdGE9Ry5jYWxsKE4sTi5kYXRhLE4uaGVhZGVycyxOLnRyYW5zZm9ybVJl''@;'; put 'put ''cXVlc3QpLE4uaGVhZGVycz1qLm1lcmdlKE4uaGVhZGVycy5jb21tb258fHt9LE4uaGVhZGVyc1tOLm1ldGhvZF18fHt9LE4uaGVhZGVycyksai5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLGZ1bmN0aW9uKEIpe2RlbGV0ZSBO''@;'; put 'put ''LmhlYWRlcnNbQl19KSwoTi5hZGFwdGVyfHxULmFkYXB0ZXIpKE4pLnRoZW4oZnVuY3Rpb24oQil7cmV0dXJuIHooTiksQi5kYXRhPUcuY2FsbChOLEIuZGF0YSxCLmhlYWRlcnMsTi50cmFuc2Zvcm1SZXNwb25zZSksQn0sZnVuY3Rpb24oQil7cmV0dXJuIEQoQil8fCh6KE4pLEImJkIucmVz''@;'; put 'put ''cG9uc2UmJihCLnJlc3BvbnNlLmRhdGE9Ry5jYWxsKE4sQi5yZXNwb25zZS5kYXRhLEIucmVzcG9uc2UuaGVhZGVycyxOLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KEIpfSl9fSw3MTg1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KTtNLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oRyxEKXtEPUR8fHt9O3ZhciBUPXt9O2Z1bmN0aW9uIEUoVSxxKXtyZXR1cm4gai5pc1BsYWluT2JqZWN0KFUpJiZqLmlzUGxhaW5PYmplY3QocSk/ai5tZXJnZShVLHEpOmouaXNQbGFpbk9iamVjdChxKT9qLm1lcmdlKHt9LHEpOmouaXNBcnJheShxKT9xLnNsaWNlKCk6cX1m''@;'; put 'put ''dW5jdGlvbiB6KFUpe3JldHVybiBqLmlzVW5kZWZpbmVkKERbVV0pP2ouaXNVbmRlZmluZWQoR1tVXSk/dm9pZCAwOkUodm9pZCAwLEdbVV0pOkUoR1tVXSxEW1VdKX1mdW5jdGlvbiBOKFUpe2lmKCFqLmlzVW5kZWZpbmVkKERbVV0pKXJldHVybiBFKHZvaWQgMCxEW1VdKX1mdW5jdGlvbiBC''@;'; put 'put ''KFUpe3JldHVybiBqLmlzVW5kZWZpbmVkKERbVV0pP2ouaXNVbmRlZmluZWQoR1tVXSk/dm9pZCAwOkUodm9pZCAwLEdbVV0pOkUodm9pZCAwLERbVV0pfWZ1bmN0aW9uIFooVSl7cmV0dXJuIFUgaW4gRD9FKEdbVV0sRFtVXSk6VSBpbiBHP0Uodm9pZCAwLEdbVV0pOnZvaWQgMH12YXIgWT17''@;'; put 'put ''dXJsOk4sbWV0aG9kOk4sZGF0YTpOLGJhc2VVUkw6Qix0cmFuc2Zvcm1SZXF1ZXN0OkIsdHJhbnNmb3JtUmVzcG9uc2U6QixwYXJhbXNTZXJpYWxpemVyOkIsdGltZW91dDpCLHRpbWVvdXRNZXNzYWdlOkIsd2l0aENyZWRlbnRpYWxzOkIsYWRhcHRlcjpCLHJlc3BvbnNlVHlwZTpCLHhzcmZD''@;'; put 'put ''b29raWVOYW1lOkIseHNyZkhlYWRlck5hbWU6QixvblVwbG9hZFByb2dyZXNzOkIsb25Eb3dubG9hZFByb2dyZXNzOkIsZGVjb21wcmVzczpCLG1heENvbnRlbnRMZW5ndGg6QixtYXhCb2R5TGVuZ3RoOkIsYmVmb3JlUmVkaXJlY3Q6Qix0cmFuc3BvcnQ6QixodHRwQWdlbnQ6QixodHRwc0Fn''@;'; put 'put ''ZW50OkIsY2FuY2VsVG9rZW46Qixzb2NrZXRQYXRoOkIscmVzcG9uc2VFbmNvZGluZzpCLHZhbGlkYXRlU3RhdHVzOlp9O3JldHVybiBqLmZvckVhY2goT2JqZWN0LmtleXMoRykuY29uY2F0KE9iamVjdC5rZXlzKEQpKSxmdW5jdGlvbihVKXt2YXIgcT1ZW1VdfHx6LEo9cShVKTtqLmlzVW5k''@;'; put 'put ''ZWZpbmVkKEopJiZxIT09Wnx8KFRbVV09Sil9KSxUfX0sNjAyNjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoMjY0OCk7TS5leHBvcnRzPWZ1bmN0aW9uKEcsRCxUKXt2YXIgRT1ULmNvbmZpZy52YWxpZGF0ZVN0YXR1cztULnN0YXR1cyYmRSYmIUUoVC5zdGF0dXMpP0QobmV3IGoo''@;'; put 'put ''IlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitULnN0YXR1cyxbai5FUlJfQkFEX1JFUVVFU1Qsai5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKFQuc3RhdHVzLzEwMCktNF0sVC5jb25maWcsVC5yZXF1ZXN0LFQpKTpHKFQpfX0sODUyNzooTSxPLEkpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBqPUkoNDg2NyksRz1JKDU1NDYpO00uZXhwb3J0cz1mdW5jdGlvbihELFQsRSl7dmFyIHo9dGhpc3x8RztyZXR1cm4gai5mb3JFYWNoKEUsZnVuY3Rpb24oTil7RD1OLmNhbGwoeixELFQpfSksRH19LDU1NDY6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpLEc9''@;'; put 'put ''SSg0ODY3KSxEPUkoNjAxNiksVD1JKDI2NDgpLEU9SSg3ODc0KSx6PUkoNzY3NSksTj17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIEIoVSxxKXshRy5pc1VuZGVmaW5lZChVKSYmRy5pc1VuZGVmaW5lZChVWyJDb250ZW50LVR5''@;'; put 'put ''cGUiXSkmJihVWyJDb250ZW50LVR5cGUiXT1xKX12YXIgWixZPXt0cmFuc2l0aW9uYWw6RSxhZGFwdGVyOigodHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1Inx8dm9pZCAwIT09aiYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGopKSYmKFo9SSg1''@;'; put 'put ''NDQ4KSksWiksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oVSxxKXtpZihEKHEsIkFjY2VwdCIpLEQocSwiQ29udGVudC1UeXBlIiksRy5pc0Zvcm1EYXRhKFUpfHxHLmlzQXJyYXlCdWZmZXIoVSl8fEcuaXNCdWZmZXIoVSl8fEcuaXNTdHJlYW0oVSl8fEcuaXNGaWxlKFUpfHxHLmlzQmxv''@;'; put 'put ''YihVKSlyZXR1cm4gVTtpZihHLmlzQXJyYXlCdWZmZXJWaWV3KFUpKXJldHVybiBVLmJ1ZmZlcjtpZihHLmlzVVJMU2VhcmNoUGFyYW1zKFUpKXJldHVybiBCKHEsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksVS50b1N0cmluZygpO3ZhciBKLGVl''@;'; put 'put ''PUcuaXNPYmplY3QoVSkscmU9cSYmcVsiQ29udGVudC1UeXBlIl07aWYoKEo9Ry5pc0ZpbGVMaXN0KFUpKXx8ZWUmJiJtdWx0aXBhcnQvZm9ybS1kYXRhIj09PXJlKXt2YXIgaWU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiB6KEo/eyJmaWxlc1tdIjpVfTpVLGllJiZuZXcg''@;'; put 'put ''aWUpfXJldHVybiBlZXx8ImFwcGxpY2F0aW9uL2pzb24iPT09cmU/KEIocSwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKHVlLGxlLGFlKXtpZihHLmlzU3RyaW5nKHVlKSl0cnl7cmV0dXJuKDAsSlNPTi5wYXJzZSkodWUpLEcudHJpbSh1ZSl9Y2F0Y2goVyl7aWYoIlN5bnRheEVycm9y''@;'; put 'put ''IiE9PVcubmFtZSl0aHJvdyBXfXJldHVybigwLEpTT04uc3RyaW5naWZ5KSh1ZSl9KFUpKTpVfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKFUpe3ZhciBxPXRoaXMudHJhbnNpdGlvbmFsfHxZLnRyYW5zaXRpb25hbCxyZT0hKHEmJnEuc2lsZW50SlNPTlBhcnNpbmcpJiYianNvbiI9''@;'; put 'put ''PT10aGlzLnJlc3BvbnNlVHlwZTtpZihyZXx8cSYmcS5mb3JjZWRKU09OUGFyc2luZyYmRy5pc1N0cmluZyhVKSYmVS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKFUpfWNhdGNoKGllKXtpZihyZSl0aHJvdyJTeW50YXhFcnJvciI9PT1pZS5uYW1lP1QuZnJvbShpZSxULkVSUl9CQURf''@;'; put 'put ''UkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOmllfXJldHVybiBVfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0''@;'; put 'put ''YTpJKDE2MjMpfSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihVKXtyZXR1cm4gVT49MjAwJiZVPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07Ry5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLGZ1bmN0aW9u''@;'; put 'put ''KFUpe1kuaGVhZGVyc1tVXT17fX0pLEcuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKFUpe1kuaGVhZGVyc1tVXT1HLm1lcmdlKE4pfSksTS5leHBvcnRzPVl9LDc4NzQ6TT0+eyJ1c2Ugc3RyaWN0IjtNLmV4cG9ydHM9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNl''@;'; put 'put ''ZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9fSw3Mjg4Ok09PntNLmV4cG9ydHM9e3ZlcnNpb246IjAuMjcuMiJ9fSwxODQ5Ok09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPWZ1bmN0aW9uKE8sSSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBqPW5ldyBBcnJheShh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoKSxHPTA7RzxqLmxlbmd0aDtHKyspaltHXT1hcmd1bWVudHNbR107cmV0dXJuIE8uYXBwbHkoSSxqKX19fSw1MzI3OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KTtmdW5jdGlvbiBHKEQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoRCkucmVw''@;'; put 'put ''bGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfU0uZXhwb3J0cz1mdW5jdGlvbihELFQsRSl7aWYoIVQpcmV0dXJuIEQ7dmFy''@;'; put 'put ''IHo7aWYoRSl6PUUoVCk7ZWxzZSBpZihqLmlzVVJMU2VhcmNoUGFyYW1zKFQpKXo9VC50b1N0cmluZygpO2Vsc2V7dmFyIE49W107ai5mb3JFYWNoKFQsZnVuY3Rpb24oWixZKXtudWxsIT1aJiYoai5pc0FycmF5KFopP1krPSJbXSI6Wj1bWl0sai5mb3JFYWNoKFosZnVuY3Rpb24oVSl7ai5p''@;'; put 'put ''c0RhdGUoVSk/VT1VLnRvSVNPU3RyaW5nKCk6ai5pc09iamVjdChVKSYmKFU9SlNPTi5zdHJpbmdpZnkoVSkpLE4ucHVzaChHKFkpKyI9IitHKFUpKX0pKX0pLHo9Ti5qb2luKCImIil9aWYoeil7dmFyIEI9RC5pbmRleE9mKCIjIik7LTEhPT1CJiYoRD1ELnNsaWNlKDAsQikpLEQrPSgtMT09''@;'; put 'put ''PUQuaW5kZXhPZigiPyIpPyI/IjoiJiIpK3p9cmV0dXJuIER9fSw3MzAzOk09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPWZ1bmN0aW9uKE8sSSl7cmV0dXJuIEk/Ty5yZXBsYWNlKC9cLyskLywiIikrIi8iK0kucmVwbGFjZSgvXlwvKy8sIiIpOk99fSw0MzcyOihNLE8sSSk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIGo9SSg0ODY3KTtNLmV4cG9ydHM9ai5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihHLEQsVCxFLHosTil7dmFyIEI9W107Qi5wdXNoKEcrIj0iK2VuY29kZVVSSUNvbXBvbmVudChEKSksai5pc051bWJlcihUKSYmQi5wdXNoKCJleHBpcmVzPSIrbmV3''@;'; put 'put ''IERhdGUoVCkudG9HTVRTdHJpbmcoKSksai5pc1N0cmluZyhFKSYmQi5wdXNoKCJwYXRoPSIrRSksai5pc1N0cmluZyh6KSYmQi5wdXNoKCJkb21haW49Iit6KSwhMD09PU4mJkIucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPUIuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihHKXt2''@;'; put 'put ''YXIgRD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrRysiKT0oW147XSopIikpO3JldHVybiBEP2RlY29kZVVSSUNvbXBvbmVudChEWzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oRyl7dGhpcy53cml0ZShHLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dy''@;'; put 'put ''aXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319fSwxNzkzOk09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPWZ1bmN0aW9uKE8pe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoTyl9fSw2MjY4OihN''@;'; put 'put ''LE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KTtNLmV4cG9ydHM9ZnVuY3Rpb24oRyl7cmV0dXJuIGouaXNPYmplY3QoRykmJiEwPT09Ry5pc0F4aW9zRXJyb3J9fSw3OTg1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3KTtNLmV4cG9ydHM9ai5pc1N0YW5kYXJk''@;'; put 'put ''QnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIEcsRD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIEUoeil7dmFyIE49ejtyZXR1cm4gRCYmKFQuc2V0QXR0cmlidXRlKCJocmVmIixOKSxO''@;'; put 'put ''PVQuaHJlZiksVC5zZXRBdHRyaWJ1dGUoImhyZWYiLE4pLHtocmVmOlQuaHJlZixwcm90b2NvbDpULnByb3RvY29sP1QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OlQuaG9zdCxzZWFyY2g6VC5zZWFyY2g/VC5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpULmhh''@;'; put 'put ''c2g/VC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6VC5ob3N0bmFtZSxwb3J0OlQucG9ydCxwYXRobmFtZToiLyI9PT1ULnBhdGhuYW1lLmNoYXJBdCgwKT9ULnBhdGhuYW1lOiIvIitULnBhdGhuYW1lfX1yZXR1cm4gRz1FKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlv''@;'; put 'put ''bih6KXt2YXIgTj1qLmlzU3RyaW5nKHopP0Uoeik6ejtyZXR1cm4gTi5wcm90b2NvbD09PUcucHJvdG9jb2wmJk4uaG9zdD09PUcuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LDYwMTY6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQ4NjcpO00uZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihHLEQpe2ouZm9yRWFjaChHLGZ1bmN0aW9uKFQsRSl7RSE9PUQmJkUudG9VcHBlckNhc2UoKT09PUQudG9VcHBlckNhc2UoKSYmKEdbRF09VCxkZWxldGUgR1tFXSl9KX19LDE2MjM6TT0+e00uZXhwb3J0cz1udWxsfSw0MTA5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0ODY3''@;'; put 'put ''KSxHPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1m''@;'; put 'put ''b3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il07TS5leHBvcnRzPWZ1bmN0aW9uKEQpe3ZhciBULEUseixOPXt9O3JldHVybiBEJiZqLmZvckVhY2goRC5zcGxpdCgiXG4iKSxmdW5jdGlvbihCKXtpZih6PUIuaW5kZXhP''@;'; put 'put ''ZigiOiIpLFQ9ai50cmltKEIuc3Vic3RyKDAseikpLnRvTG93ZXJDYXNlKCksRT1qLnRyaW0oQi5zdWJzdHIoeisxKSksVCl7aWYoTltUXSYmRy5pbmRleE9mKFQpPj0wKXJldHVybjtOW1RdPSJzZXQtY29va2llIj09PVQ/KE5bVF0/TltUXTpbXSkuY29uY2F0KFtFXSk6TltUXT9OW1RdKyIs''@;'; put 'put ''ICIrRTpFfX0pLE59fSwyMDU6TT0+eyJ1c2Ugc3RyaWN0IjtNLmV4cG9ydHM9ZnVuY3Rpb24oTyl7dmFyIEk9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWMoTyk7cmV0dXJuIEkmJklbMV18fCIifX0sODcxMzpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1mdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oSSl7cmV0dXJuIE8uYXBwbHkobnVsbCxJKX19fSw3Njc1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg4NzY0KS5CdWZmZXIsRz1JKDQ4NjcpO00uZXhwb3J0cz1mdW5jdGlvbihELFQpe1Q9VHx8bmV3IEZvcm1EYXRhO3ZhciBFPVtdO2Z1bmN0aW9uIHoo''@;'; put 'put ''Til7cmV0dXJuIG51bGw9PT1OPyIiOkcuaXNEYXRlKE4pP04udG9JU09TdHJpbmcoKTpHLmlzQXJyYXlCdWZmZXIoTil8fEcuaXNUeXBlZEFycmF5KE4pPyJmdW5jdGlvbiI9PXR5cGVvZiBCbG9iP25ldyBCbG9iKFtOXSk6ai5mcm9tKE4pOk59cmV0dXJuIGZ1bmN0aW9uIE4oQixaKXtpZihH''@;'; put 'put ''LmlzUGxhaW5PYmplY3QoQil8fEcuaXNBcnJheShCKSl7aWYoLTEhPT1FLmluZGV4T2YoQikpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK1opO0UucHVzaChCKSxHLmZvckVhY2goQixmdW5jdGlvbihZLFUpe2lmKCFHLmlzVW5kZWZpbmVkKFkpKXt2YXIg''@;'; put 'put ''cSxKPVo/WisiLiIrVTpVO2lmKFkmJiFaJiYib2JqZWN0Ij09dHlwZW9mIFkpaWYoRy5lbmRzV2l0aChVLCJ7fSIpKVk9SlNPTi5zdHJpbmdpZnkoWSk7ZWxzZSBpZihHLmVuZHNXaXRoKFUsIltdIikmJihxPUcudG9BcnJheShZKSkpcmV0dXJuIHZvaWQgcS5mb3JFYWNoKGZ1bmN0aW9uKGVl''@;'; put 'put ''KXshRy5pc1VuZGVmaW5lZChlZSkmJlQuYXBwZW5kKEoseihlZSkpfSk7TihZLEopfX0pLEUucG9wKCl9ZWxzZSBULmFwcGVuZChaLHooQikpfShEKSxUfX0sNDg3NTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNTEwOCksRz1JKDcyODgpLnZlcnNpb24sRD1JKDI2NDgpLFQ9e307''@;'; put 'put ''WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKGZ1bmN0aW9uKHosTil7VFt6XT1mdW5jdGlvbihCKXtyZXR1cm4gdHlwZW9mIEI9PT16fHwiYSIrKE48MT8ibiAiOiIgIikren19KTt2YXIgRT17fTtULnRyYW5zaXRpb25h''@;'; put 'put ''bD1mdW5jdGlvbih6LE4sQil7ZnVuY3Rpb24gWihZLFUpe3JldHVybiJbQXhpb3MgdiIrRysiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK1krIiciK1UrKEI/Ii4gIitCOiIiKX1yZXR1cm4gZnVuY3Rpb24oWSxVLHEpe2lmKCExPT09eil0aHJvdyBuZXcgRChaKFUsIiBoYXMgYmVlbiByZW1v''@;'; put 'put ''dmVkIisoTj8iIGluICIrTjoiIikpLEQuRVJSX0RFUFJFQ0FURUQpO3JldHVybiBOJiYhRVtVXSYmKEVbVV09ITAsai53YXJuKFooVSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrTisiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhenx8eihZLFUs''@;'; put 'put ''cSl9fSxNLmV4cG9ydHM9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oeixOLEIpe2lmKCJvYmplY3QiIT10eXBlb2Ygeil0aHJvdyBuZXcgRCgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIsRC5FUlJfQkFEX09QVElPTl9WQUxVRSk7Zm9yKHZhciBaPU9iamVjdC5rZXlzKHopLFk9Wi5sZW5n''@;'; put 'put ''dGg7WS0tID4wOyl7dmFyIFU9WltZXSxxPU5bVV07aWYocSl7dmFyIEo9eltVXSxlZT12b2lkIDA9PT1KfHxxKEosVSx6KTtpZighMCE9PWVlKXRocm93IG5ldyBEKCJvcHRpb24gIitVKyIgbXVzdCBiZSAiK2VlLEQuRVJSX0JBRF9PUFRJT05fVkFMVUUpfWVsc2UgaWYoITAhPT1CKXRocm93''@;'; put 'put ''IG5ldyBEKCJVbmtub3duIG9wdGlvbiAiK1UsRC5FUlJfQkFEX09QVElPTil9fSx2YWxpZGF0b3JzOlR9fSw0ODY3OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGosRz1JKDE4NDkpLEQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxUPShqPU9iamVjdC5jcmVhdGUobnVsbCksZnVuY3Rp''@;'; put 'put ''b24oVyl7dmFyIGI9RC5jYWxsKFcpO3JldHVybiBqW2JdfHwoaltiXT1iLnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSk7ZnVuY3Rpb24gRShXKXtyZXR1cm4gVz1XLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7cmV0dXJuIFQoYik9PT1XfX1mdW5jdGlvbiB6KFcpe3JldHVybiBBcnJh''@;'; put 'put ''eS5pc0FycmF5KFcpfWZ1bmN0aW9uIE4oVyl7cmV0dXJuIHZvaWQgMD09PVd9dmFyIEI9RSgiQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiBaKFcpe3JldHVybiBudWxsIT09VyYmIm9iamVjdCI9PXR5cGVvZiBXfWZ1bmN0aW9uIFkoVyl7aWYoIm9iamVjdCIhPT1UKFcpKXJldHVybiExO3ZhciBi''@;'; put 'put ''PU9iamVjdC5nZXRQcm90b3R5cGVPZihXKTtyZXR1cm4gbnVsbD09PWJ8fGI9PT1PYmplY3QucHJvdG90eXBlfXZhciBVPUUoIkRhdGUiKSxxPUUoIkZpbGUiKSxKPUUoIkJsb2IiKSxlZT1FKCJGaWxlTGlzdCIpO2Z1bmN0aW9uIHJlKFcpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1E''@;'; put 'put ''LmNhbGwoVyl9dmFyIGllPUUoIlVSTFNlYXJjaFBhcmFtcyIpO2Z1bmN0aW9uIHVlKFcsYil7aWYobnVsbCE9VylpZigib2JqZWN0IiE9dHlwZW9mIFcmJihXPVtXXSkseihXKSlmb3IodmFyIEE9MCxGPVcubGVuZ3RoO0E8RjtBKyspYi5jYWxsKG51bGwsV1tBXSxBLFcpO2Vsc2UgZm9yKHZh''@;'; put 'put ''ciBIIGluIFcpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFcsSCkmJmIuY2FsbChudWxsLFdbSF0sSCxXKX12YXIgbGUsYWU9KGxlPXR5cGVvZiBVaW50OEFycmF5PCJ1IiYmT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpLGZ1bmN0aW9uKFcpe3JldHVybiBs''@;'; put 'put ''ZSYmVyBpbnN0YW5jZW9mIGxlfSk7TS5leHBvcnRzPXtpc0FycmF5OnosaXNBcnJheUJ1ZmZlcjpCLGlzQnVmZmVyOmZ1bmN0aW9uKFcpe3JldHVybiBudWxsIT09VyYmIU4oVykmJm51bGwhPT1XLmNvbnN0cnVjdG9yJiYhTihXLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIFcu''@;'; put 'put ''Y29uc3RydWN0b3IuaXNCdWZmZXImJlcuY29uc3RydWN0b3IuaXNCdWZmZXIoVyl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oVyl7dmFyIGI9IltvYmplY3QgRm9ybURhdGFdIjtyZXR1cm4gVyYmKCJmdW5jdGlvbiI9PXR5cGVvZiBGb3JtRGF0YSYmVyBpbnN0YW5jZW9mIEZvcm1EYXRhfHxELmNh''@;'; put 'put ''bGwoVyk9PT1ifHxyZShXLnRvU3RyaW5nKSYmVy50b1N0cmluZygpPT09Yil9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKFcpe3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KFcpOlcmJlcuYnVmZmVyJiZCKFcu''@;'; put 'put ''YnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oVyl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBXfSxpc051bWJlcjpmdW5jdGlvbihXKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFd9LGlzT2JqZWN0OlosaXNQbGFpbk9iamVjdDpZLGlzVW5kZWZpbmVkOk4saXNEYXRlOlUsaXNGaWxlOnEsaXNC''@;'; put 'put ''bG9iOkosaXNGdW5jdGlvbjpyZSxpc1N0cmVhbTpmdW5jdGlvbihXKXtyZXR1cm4gWihXKSYmcmUoVy5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6aWUsaXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4odHlwZW9mIG5hdmlnYXRvcj4idSJ8fCJSZWFjdE5hdGl2ZSIhPT1u''@;'; put 'put ''YXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmdHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSJ9LGZvckVhY2g6dWUsbWVyZ2U6ZnVuY3Rpb24gVygpe3ZhciBiPXt9O2Z1bmN0''@;'; put 'put ''aW9uIEEoZyxDKXtiW0NdPVkoYltDXSkmJlkoZyk/VyhiW0NdLGcpOlkoZyk/Vyh7fSxnKTp6KGcpP2cuc2xpY2UoKTpnfWZvcih2YXIgRj0wLEg9YXJndW1lbnRzLmxlbmd0aDtGPEg7RisrKXVlKGFyZ3VtZW50c1tGXSxBKTtyZXR1cm4gYn0sZXh0ZW5kOmZ1bmN0aW9uKFcsYixBKXtyZXR1''@;'; put 'put ''cm4gdWUoYixmdW5jdGlvbihGLEgpe1dbSF09QSYmImZ1bmN0aW9uIj09dHlwZW9mIEY/RyhGLEEpOkZ9KSxXfSx0cmltOmZ1bmN0aW9uKFcpe3JldHVybiBXLnRyaW0/Vy50cmltKCk6Vy5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKFcpe3JldHVybiA2NTI3''@;'; put 'put ''OT09PVcuY2hhckNvZGVBdCgwKSYmKFc9Vy5zbGljZSgxKSksV30saW5oZXJpdHM6ZnVuY3Rpb24oVyxiLEEsRil7Vy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiLnByb3RvdHlwZSxGKSxXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XLEEmJk9iamVjdC5hc3NpZ24oVy5wcm90b3R5cGUsQSl9''@;'; put 'put ''LHRvRmxhdE9iamVjdDpmdW5jdGlvbihXLGIsQSl7dmFyIEYsSCxnLEM9e307Yj1ifHx7fTtkb3tmb3IoSD0oRj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXKSkubGVuZ3RoO0gtLSA+MDspQ1tnPUZbSF1dfHwoYltnXT1XW2ddLENbZ109ITApO1c9T2JqZWN0LmdldFByb3RvdHlwZU9m''@;'; put 'put ''KFcpfXdoaWxlKFcmJighQXx8QShXLGIpKSYmVyE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBifSxraW5kT2Y6VCxraW5kT2ZUZXN0OkUsZW5kc1dpdGg6ZnVuY3Rpb24oVyxiLEEpe1c9U3RyaW5nKFcpLCh2b2lkIDA9PT1BfHxBPlcubGVuZ3RoKSYmKEE9Vy5sZW5ndGgpO3ZhciBGPVcu''@;'; put 'put ''aW5kZXhPZihiLEEtPWIubGVuZ3RoKTtyZXR1cm4tMSE9PUYmJkY9PT1BfSx0b0FycmF5OmZ1bmN0aW9uKFcpe2lmKCFXKXJldHVybiBudWxsO3ZhciBiPVcubGVuZ3RoO2lmKE4oYikpcmV0dXJuIG51bGw7Zm9yKHZhciBBPW5ldyBBcnJheShiKTtiLS0gPjA7KUFbYl09V1tiXTtyZXR1cm4g''@;'; put 'put ''QX0saXNUeXBlZEFycmF5OmFlLGlzRmlsZUxpc3Q6ZWV9fSw1NjIzOk09PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gTyhHLEQsVCl7RyBpbnN0YW5jZW9mIFJlZ0V4cCYmKEc9SShHLFQpKSxEIGluc3RhbmNlb2YgUmVnRXhwJiYoRD1JKEQsVCkpO3ZhciBFPWooRyxELFQpO3JldHVybiBFJiZ7''@;'; put 'put ''c3RhcnQ6RVswXSxlbmQ6RVsxXSxwcmU6VC5zbGljZSgwLEVbMF0pLGJvZHk6VC5zbGljZShFWzBdK0cubGVuZ3RoLEVbMV0pLHBvc3Q6VC5zbGljZShFWzFdK0QubGVuZ3RoKX19ZnVuY3Rpb24gSShHLEQpe3ZhciBUPUQubWF0Y2goRyk7cmV0dXJuIFQ/VFswXTpudWxsfWZ1bmN0aW9uIGoo''@;'; put 'put ''RyxELFQpe3ZhciBFLHosTixCLFosWT1ULmluZGV4T2YoRyksVT1ULmluZGV4T2YoRCxZKzEpLHE9WTtpZihZPj0wJiZVPjApe2lmKEc9PT1EKXJldHVybltZLFVdO2ZvcihFPVtdLE49VC5sZW5ndGg7cT49MCYmIVo7KXE9PVk/KEUucHVzaChxKSxZPVQuaW5kZXhPZihHLHErMSkpOjE9PUUu''@;'; put 'put ''bGVuZ3RoP1o9W0UucG9wKCksVV06KCh6PUUucG9wKCkpPE4mJihOPXosQj1VKSxVPVQuaW5kZXhPZihELHErMSkpLHE9WTxVJiZZPj0wP1k6VTtFLmxlbmd0aCYmKFo9W04sQl0pfXJldHVybiBafU0uZXhwb3J0cz1PLE8ucmFuZ2U9an0sOTc0MjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPLmJ5''@;'; put 'put ''dGVMZW5ndGg9ZnVuY3Rpb24oQil7dmFyIFo9eihCKSxVPVpbMV07cmV0dXJuIDMqKFpbMF0rVSkvNC1VfSxPLnRvQnl0ZUFycmF5PWZ1bmN0aW9uKEIpe3ZhciBaLFksYWUsVT16KEIpLHE9VVswXSxKPVVbMV0sZWU9bmV3IEcoMyoocSsoYWU9SikpLzQtYWUpLHJlPTAsaWU9Sj4wP3EtNDpx''@;'; put 'put ''O2ZvcihZPTA7WTxpZTtZKz00KVo9altCLmNoYXJDb2RlQXQoWSldPDwxOHxqW0IuY2hhckNvZGVBdChZKzEpXTw8MTJ8altCLmNoYXJDb2RlQXQoWSsyKV08PDZ8altCLmNoYXJDb2RlQXQoWSszKV0sZWVbcmUrK109Wj4+MTYmMjU1LGVlW3JlKytdPVo+PjgmMjU1LGVlW3JlKytdPTI1NSZa''@;'; put 'put ''O3JldHVybiAyPT09SiYmKFo9altCLmNoYXJDb2RlQXQoWSldPDwyfGpbQi5jaGFyQ29kZUF0KFkrMSldPj40LGVlW3JlKytdPTI1NSZaKSwxPT09SiYmKFo9altCLmNoYXJDb2RlQXQoWSldPDwxMHxqW0IuY2hhckNvZGVBdChZKzEpXTw8NHxqW0IuY2hhckNvZGVBdChZKzIpXT4+MixlZVty''@;'; put 'put ''ZSsrXT1aPj44JjI1NSxlZVtyZSsrXT0yNTUmWiksZWV9LE8uZnJvbUJ5dGVBcnJheT1mdW5jdGlvbihCKXtmb3IodmFyIFosWT1CLmxlbmd0aCxVPVklMyxxPVtdLEo9MTYzODMsZWU9MCxyZT1ZLVU7ZWU8cmU7ZWUrPUopcS5wdXNoKE4oQixlZSxlZStKPnJlP3JlOmVlK0opKTtyZXR1cm4g''@;'; put 'put ''MT09PVU/cS5wdXNoKElbKFo9QltZLTFdKT4+Ml0rSVtaPDw0JjYzXSsiPT0iKToyPT09VSYmcS5wdXNoKElbKFo9KEJbWS0yXTw8OCkrQltZLTFdKT4+MTBdK0lbWj4+NCY2M10rSVtaPDwyJjYzXSsiPSIpLHEuam9pbigiIil9O2Zvcih2YXIgST1bXSxqPVtdLEc9dHlwZW9mIFVpbnQ4QXJy''@;'; put 'put ''YXk8InUiP1VpbnQ4QXJyYXk6QXJyYXksRD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsVD0wO1Q8NjQ7KytUKUlbVF09RFtUXSxqW0QuY2hhckNvZGVBdChUKV09VDtmdW5jdGlvbiB6KEIpe3ZhciBaPUIubGVuZ3Ro''@;'; put 'put ''O2lmKFolND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO3ZhciBZPUIuaW5kZXhPZigiPSIpO3JldHVybi0xPT09WSYmKFk9WiksW1ksWT09PVo/MDo0LVklNF19ZnVuY3Rpb24gTihCLFosWSl7Zm9yKHZhciBxLEo9''@;'; put 'put ''W10sZWU9WjtlZTxZO2VlKz0zKUoucHVzaChJWyhxPShCW2VlXTw8MTYmMTY3MTE2ODApKyhCW2VlKzFdPDw4JjY1MjgwKSsoMjU1JkJbZWUrMl0pKT4+MTgmNjNdK0lbcT4+MTImNjNdK0lbcT4+NiY2M10rSVs2MyZxXSk7cmV0dXJuIEouam9pbigiIil9als0NV09NjIsals5NV09NjN9LDM1''@;'; put 'put ''NTA6ZnVuY3Rpb24oTSxPLEkpeyFmdW5jdGlvbihqLEcpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBEKF8scCl7aWYoIV8pdGhyb3cgbmV3IEVycm9yKHB8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVChfLHApe18uc3VwZXJfPXA7dmFyIHc9ZnVuY3Rpb24oKXt9O3cucHJvdG90eXBl''@;'; put 'put ''PXAucHJvdG90eXBlLF8ucHJvdG90eXBlPW5ldyB3LF8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPV99ZnVuY3Rpb24gRShfLHAsdyl7aWYoRS5pc0JOKF8pKXJldHVybiBfO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1f''@;'; put 'put ''JiYoImxlIiE9PXAmJiJiZSIhPT1wfHwodz1wLHA9MTApLHRoaXMuX2luaXQoX3x8MCxwfHwxMCx3fHwiYmUiKSl9dmFyIHo7Im9iamVjdCI9PXR5cGVvZiBqP2ouZXhwb3J0cz1FOkcuQk49RSxFLkJOPUUsRS53b3JkU2l6ZT0yNjt0cnl7ej10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09''@;'; put 'put ''d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkkoNjYwMSkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBOKF8scCl7dmFyIHc9Xy5jaGFyQ29kZUF0KHApO3JldHVybiB3Pj00OCYmdzw9NTc/dy00ODp3Pj02NSYmdzw9NzA/dy01NTp3Pj05NyYmdzw9MTAyP3ctODc6dm9pZCBEKCExLCJJbnZh''@;'; put 'put ''bGlkIGNoYXJhY3RlciBpbiAiK18pfWZ1bmN0aW9uIEIoXyxwLHcpe3ZhciBLPU4oXyx3KTtyZXR1cm4gdy0xPj1wJiYoS3w9TihfLHctMSk8PDQpLEt9ZnVuY3Rpb24gWihfLHAsdyxLKXtmb3IodmFyIHRlPTAsY2U9MCxoZT1NYXRoLm1pbihfLmxlbmd0aCx3KSxTZT1wO1NlPGhlO1NlKysp''@;'; put 'put ''e3ZhciBMZT1fLmNoYXJDb2RlQXQoU2UpLTQ4O3RlKj1LLGNlPUxlPj00OT9MZS00OSsxMDpMZT49MTc/TGUtMTcrMTA6TGUsRChMZT49MCYmY2U8SywiSW52YWxpZCBjaGFyYWN0ZXIiKSx0ZSs9Y2V9cmV0dXJuIHRlfWZ1bmN0aW9uIFkoXyxwKXtfLndvcmRzPXAud29yZHMsXy5sZW5ndGg9''@;'; put 'put ''cC5sZW5ndGgsXy5uZWdhdGl2ZT1wLm5lZ2F0aXZlLF8ucmVkPXAucmVkfWlmKEUuaXNCTj1mdW5jdGlvbihfKXtyZXR1cm4gXyBpbnN0YW5jZW9mIEV8fG51bGwhPT1fJiYib2JqZWN0Ij09dHlwZW9mIF8mJl8uY29uc3RydWN0b3Iud29yZFNpemU9PT1FLndvcmRTaXplJiZBcnJheS5pc0Fy''@;'; put 'put ''cmF5KF8ud29yZHMpfSxFLm1heD1mdW5jdGlvbihfLHApe3JldHVybiBfLmNtcChwKT4wP186cH0sRS5taW49ZnVuY3Rpb24oXyxwKXtyZXR1cm4gXy5jbXAocCk8MD9fOnB9LEUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKF8scCx3KXtpZigibnVtYmVyIj09dHlwZW9mIF8pcmV0dXJuIHRo''@;'; put 'put ''aXMuX2luaXROdW1iZXIoXyxwLHcpO2lmKCJvYmplY3QiPT10eXBlb2YgXylyZXR1cm4gdGhpcy5faW5pdEFycmF5KF8scCx3KTsiaGV4Ij09PXAmJihwPTE2KSxEKHA9PT0oMHxwKSYmcD49MiYmcDw9MzYpO3ZhciBLPTA7Ii0iPT09KF89Xy50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIi''@;'; put 'put ''KSlbMF0mJihLKyssdGhpcy5uZWdhdGl2ZT0xKSxLPF8ubGVuZ3RoJiYoMTY9PT1wP3RoaXMuX3BhcnNlSGV4KF8sSyx3KToodGhpcy5fcGFyc2VCYXNlKF8scCxLKSwibGUiPT09dyYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHAsdykpKX0sRS5wcm90b3R5cGUuX2luaXROdW1i''@;'; put 'put ''ZXI9ZnVuY3Rpb24oXyxwLHcpe188MCYmKHRoaXMubmVnYXRpdmU9MSxfPS1fKSxfPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZfXSx0aGlzLmxlbmd0aD0xKTpfPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJl8sXy82NzEwODg2NCY2NzEwODg2M10sdGhp''@;'; put 'put ''cy5sZW5ndGg9Mik6KEQoXzw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZfLF8vNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PXcmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxwLHcpfSxFLnByb3RvdHlwZS5faW5pdEFycmF5''@;'; put 'put ''PWZ1bmN0aW9uKF8scCx3KXtpZihEKCJudW1iZXIiPT10eXBlb2YgXy5sZW5ndGgpLF8ubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKF8ubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVu''@;'; put 'put ''Z3RoKTtmb3IodmFyIEs9MDtLPHRoaXMubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPTA7dmFyIHRlLGNlLGhlPTA7aWYoImJlIj09PXcpZm9yKEs9Xy5sZW5ndGgtMSx0ZT0wO0s+PTA7Sy09Myl0aGlzLndvcmRzW3RlXXw9KGNlPV9bS118X1tLLTFdPDw4fF9bSy0yXTw8MTYpPDxoZSY2NzEw''@;'; put 'put ''ODg2Myx0aGlzLndvcmRzW3RlKzFdPWNlPj4+MjYtaGUmNjcxMDg4NjMsKGhlKz0yNCk+PTI2JiYoaGUtPTI2LHRlKyspO2Vsc2UgaWYoImxlIj09PXcpZm9yKEs9MCx0ZT0wO0s8Xy5sZW5ndGg7Sys9Myl0aGlzLndvcmRzW3RlXXw9KGNlPV9bS118X1tLKzFdPDw4fF9bSysyXTw8MTYpPDxo''@;'; put 'put ''ZSY2NzEwODg2Myx0aGlzLndvcmRzW3RlKzFdPWNlPj4+MjYtaGUmNjcxMDg4NjMsKGhlKz0yNCk+PTI2JiYoaGUtPTI2LHRlKyspO3JldHVybiB0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oXyxwLHcpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoXy5sZW5n''@;'; put 'put ''dGgtcCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgSz0wO0s8dGhpcy5sZW5ndGg7SysrKXRoaXMud29yZHNbS109MDt2YXIgdGUsY2U9MCxoZT0wO2lmKCJiZSI9PT13KWZvcihLPV8ubGVuZ3RoLTE7Sz49cDtLLT0yKXRlPUIoXyxwLEspPDxjZSx0aGlz''@;'; put 'put ''LndvcmRzW2hlXXw9NjcxMDg4NjMmdGUsY2U+PTE4PyhjZS09MTgsdGhpcy53b3Jkc1toZSs9MV18PXRlPj4+MjYpOmNlKz04O2Vsc2UgZm9yKEs9KF8ubGVuZ3RoLXApJTI9PTA/cCsxOnA7SzxfLmxlbmd0aDtLKz0yKXRlPUIoXyxwLEspPDxjZSx0aGlzLndvcmRzW2hlXXw9NjcxMDg4NjMm''@;'; put 'put ''dGUsY2U+PTE4PyhjZS09MTgsdGhpcy53b3Jkc1toZSs9MV18PXRlPj4+MjYpOmNlKz04O3RoaXMuX3N0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oXyxwLHcpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBLPTAsdGU9MTt0ZTw9NjcxMDg4NjM7''@;'; put 'put ''dGUqPXApSysrO0stLSx0ZT10ZS9wfDA7Zm9yKHZhciBjZT1fLmxlbmd0aC13LGhlPWNlJUssU2U9TWF0aC5taW4oY2UsY2UtaGUpK3csTGU9MCxIZT13O0hlPFNlO0hlKz1LKUxlPVooXyxIZSxIZStLLHApLHRoaXMuaW11bG4odGUpLHRoaXMud29yZHNbMF0rTGU8NjcxMDg4NjQ/dGhpcy53''@;'; put 'put ''b3Jkc1swXSs9TGU6dGhpcy5faWFkZG4oTGUpO2lmKDAhPT1oZSl7dmFyIHhlPTE7Zm9yKExlPVooXyxIZSxfLmxlbmd0aCxwKSxIZT0wO0hlPGhlO0hlKyspeGUqPXA7dGhpcy5pbXVsbih4ZSksdGhpcy53b3Jkc1swXStMZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1MZTp0aGlzLl9pYWRk''@;'; put 'put ''bihMZSl9dGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihfKXtfLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBwPTA7cDx0aGlzLmxlbmd0aDtwKyspXy53b3Jkc1twXT10aGlzLndvcmRzW3BdO18ubGVuZ3RoPXRoaXMubGVuZ3RoLF8ubmVnYXRp''@;'; put 'put ''dmU9dGhpcy5uZWdhdGl2ZSxfLnJlZD10aGlzLnJlZH0sRS5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24oXyl7WShfLHRoaXMpfSxFLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBfPW5ldyBFKG51bGwpO3JldHVybiB0aGlzLmNvcHkoXyksX30sRS5wcm90b3R5cGUuX2V4cGFuZD1m''@;'; put 'put ''dW5jdGlvbihfKXtmb3IoO3RoaXMubGVuZ3RoPF87KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuX3N0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgt''@;'; put 'put ''LTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sRS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LHR5cGVvZiBTeW1ib2w8InUiJiYiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sLmZvcil0cnl7RS5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09VX1jYXRjaHtFLnByb3RvdHlwZS5pbnNwZWN0PVV9ZWxzZSBFLnByb3RvdHlwZS5pbnNwZWN0PVU7ZnVuY3Rpb24gVSgpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6''@;'; put 'put ''IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifXZhciBxPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLEo9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1''@;'; put 'put ''LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sZWU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIx''@;'; put 'put ''NiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2''@;'; put 'put ''NjE3Nl07ZnVuY3Rpb24gcmUoXyxwLHcpe3cubmVnYXRpdmU9cC5uZWdhdGl2ZV5fLm5lZ2F0aXZlO3ZhciBLPV8ubGVuZ3RoK3AubGVuZ3RofDA7dy5sZW5ndGg9SyxLPUstMXwwO3ZhciB0ZT0wfF8ud29yZHNbMF0sY2U9MHxwLndvcmRzWzBdLGhlPXRlKmNlLExlPWhlLzY3MTA4ODY0fDA7''@;'; put 'put ''dy53b3Jkc1swXT02NzEwODg2MyZoZTtmb3IodmFyIEhlPTE7SGU8SztIZSsrKXtmb3IodmFyIHhlPUxlPj4+MjYsRGU9NjcxMDg4NjMmTGUsQmU9TWF0aC5taW4oSGUscC5sZW5ndGgtMSksR2U9TWF0aC5tYXgoMCxIZS1fLmxlbmd0aCsxKTtHZTw9QmU7R2UrKyl4ZSs9KGhlPSh0ZT0wfF8u''@;'; put 'put ''d29yZHNbSGUtR2V8MF0pKihjZT0wfHAud29yZHNbR2VdKStEZSkvNjcxMDg4NjR8MCxEZT02NzEwODg2MyZoZTt3LndvcmRzW0hlXT0wfERlLExlPTB8eGV9cmV0dXJuIDAhPT1MZT93LndvcmRzW0hlXT0wfExlOncubGVuZ3RoLS0sdy5fc3RyaXAoKX1FLnByb3RvdHlwZS50b1N0cmluZz1m''@;'; put 'put ''dW5jdGlvbihfLHApe3ZhciB3O2lmKHA9MHxwfHwxLDE2PT09KF89X3x8MTApfHwiaGV4Ij09PV8pe3c9IiI7Zm9yKHZhciBLPTAsdGU9MCxjZT0wO2NlPHRoaXMubGVuZ3RoO2NlKyspe3ZhciBoZT10aGlzLndvcmRzW2NlXSxTZT0oMTY3NzcyMTUmKGhlPDxLfHRlKSkudG9TdHJpbmcoMTYp''@;'; put 'put ''O3RlPWhlPj4+MjQtSyYxNjc3NzIxNSwoSys9Mik+PTI2JiYoSy09MjYsY2UtLSksdz0wIT09dGV8fGNlIT09dGhpcy5sZW5ndGgtMT9xWzYtU2UubGVuZ3RoXStTZSt3OlNlK3d9Zm9yKDAhPT10ZSYmKHc9dGUudG9TdHJpbmcoMTYpK3cpO3cubGVuZ3RoJXAhPTA7KXc9IjAiK3c7cmV0dXJu''@;'; put 'put ''IDAhPT10aGlzLm5lZ2F0aXZlJiYodz0iLSIrdyksd31pZihfPT09KDB8XykmJl8+PTImJl88PTM2KXt2YXIgTGU9SltfXSxIZT1lZVtfXTt3PSIiO3ZhciB4ZT10aGlzLmNsb25lKCk7Zm9yKHhlLm5lZ2F0aXZlPTA7IXhlLmlzWmVybygpOyl7dmFyIERlPXhlLm1vZHJuKEhlKS50b1N0cmlu''@;'; put 'put ''ZyhfKTt3PSh4ZT14ZS5pZGl2bihIZSkpLmlzWmVybygpP0RlK3c6cVtMZS1EZS5sZW5ndGhdK0RlK3d9Zm9yKHRoaXMuaXNaZXJvKCkmJih3PSIwIit3KTt3Lmxlbmd0aCVwIT0wOyl3PSIwIit3O3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHc9Ii0iK3cpLHd9RCghMSwiQmFzZSBzaG91''@;'; put 'put ''bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBfPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9fKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Xys9''@;'; put 'put ''NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkQoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1fOl99LEUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLnRvU3RyaW5nKDE2LDIpfSx6JiYoRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oXyxwKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZSh6LF8scCl9KSxFLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKF8scCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksXyxwKX0s''@;'; put 'put ''RS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oXyxwLHcpe3RoaXMuX3N0cmlwKCk7dmFyIEs9dGhpcy5ieXRlTGVuZ3RoKCksdGU9d3x8TWF0aC5tYXgoMSxLKTtEKEs8PXRlLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRCh0ZT4wLCJSZXF1ZXN0ZWQg''@;'; put 'put ''YXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgaGUsU2UsY2U9KFNlPXRlLChoZT1fKS5hbGxvY1Vuc2FmZT9oZS5hbGxvY1Vuc2FmZShTZSk6bmV3IGhlKFNlKSk7cmV0dXJuIHRoaXNbIl90b0FycmF5TGlrZSIrKCJsZSI9PT1wPyJMRSI6IkJFIildKGNlLEspLGNlfSxFLnByb3RvdHlwZS5fdG9B''@;'; put 'put ''cnJheUxpa2VMRT1mdW5jdGlvbihfLHApe2Zvcih2YXIgdz0wLEs9MCx0ZT0wLGNlPTA7dGU8dGhpcy5sZW5ndGg7dGUrKyl7dmFyIGhlPXRoaXMud29yZHNbdGVdPDxjZXxLO19bdysrXT0yNTUmaGUsdzxfLmxlbmd0aCYmKF9bdysrXT1oZT4+OCYyNTUpLHc8Xy5sZW5ndGgmJihfW3crK109''@;'; put 'put ''aGU+PjE2JjI1NSksNj09PWNlPyh3PF8ubGVuZ3RoJiYoX1t3KytdPWhlPj4yNCYyNTUpLEs9MCxjZT0wKTooSz1oZT4+PjI0LGNlKz0yKX1pZih3PF8ubGVuZ3RoKWZvcihfW3crK109Szt3PF8ubGVuZ3RoOylfW3crK109MH0sRS5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkU9ZnVuY3Rpb24o''@;'; put 'put ''XyxwKXtmb3IodmFyIHc9Xy5sZW5ndGgtMSxLPTAsdGU9MCxjZT0wO3RlPHRoaXMubGVuZ3RoO3RlKyspe3ZhciBoZT10aGlzLndvcmRzW3RlXTw8Y2V8SztfW3ctLV09MjU1JmhlLHc+PTAmJihfW3ctLV09aGU+PjgmMjU1KSx3Pj0wJiYoX1t3LS1dPWhlPj4xNiYyNTUpLDY9PT1jZT8odz49''@;'; put 'put ''MCYmKF9bdy0tXT1oZT4+MjQmMjU1KSxLPTAsY2U9MCk6KEs9aGU+Pj4yNCxjZSs9Mil9aWYodz49MClmb3IoX1t3LS1dPUs7dz49MDspX1t3LS1dPTB9LEUucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihfKXtyZXR1cm4gMzItTWF0aC5jbHozMihfKX06ZnVuY3Rp''@;'; put 'put ''b24oXyl7dmFyIHA9Xyx3PTA7cmV0dXJuIHA+PTQwOTYmJih3Kz0xMyxwPj4+PTEzKSxwPj02NCYmKHcrPTcscD4+Pj03KSxwPj04JiYodys9NCxwPj4+PTQpLHA+PTImJih3Kz0yLHA+Pj49MiksdytwfSxFLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oXyl7aWYoMD09PV8pcmV0dXJu''@;'; put 'put ''IDI2O3ZhciBwPV8sdz0wO3JldHVybiEoODE5MSZwKSYmKHcrPTEzLHA+Pj49MTMpLCEoMTI3JnApJiYodys9NyxwPj4+PTcpLCEoMTUmcCkmJih3Kz00LHA+Pj49NCksISgzJnApJiYodys9MixwPj4+PTIpLCEoMSZwKSYmdysrLHd9LEUucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigp''@;'; put 'put ''e3ZhciBwPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK3B9LEUucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIF89MCxwPTA7cDx0aGlzLmxlbmd0''@;'; put 'put ''aDtwKyspe3ZhciB3PXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbcF0pO2lmKF8rPXcsMjYhPT13KWJyZWFrfXJldHVybiBffSxFLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxFLnByb3RvdHlwZS50b1R3b3M9''@;'; put 'put ''ZnVuY3Rpb24oXyl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oXykuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy50ZXN0bihfLTEpP3RoaXMubm90bihfKS5pYWRkbigxKS5pbmVnKCk6''@;'; put 'put ''dGhpcy5jbG9uZSgpfSxFLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sRS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LEUucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5p''@;'; put 'put ''c1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LEUucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oXyl7Zm9yKDt0aGlzLmxlbmd0aDxfLmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgcD0wO3A8Xy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53''@;'; put 'put ''b3Jkc1twXXxfLndvcmRzW3BdO3JldHVybiB0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oXyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfF8ubmVnYXRpdmUpKSx0aGlzLml1b3IoXyl9LEUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmxlbmd0''@;'; put 'put ''aD5fLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKF8pOl8uY2xvbmUoKS5pb3IodGhpcyl9LEUucHJvdG90eXBlLnVvcj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5sZW5ndGg+Xy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoXyk6Xy5jbG9uZSgpLml1b3IodGhpcyl9LEUucHJvdG90eXBlLml1''@;'; put 'put ''YW5kPWZ1bmN0aW9uKF8pe3ZhciBwO3A9dGhpcy5sZW5ndGg+Xy5sZW5ndGg/Xzp0aGlzO2Zvcih2YXIgdz0wO3c8cC5sZW5ndGg7dysrKXRoaXMud29yZHNbd109dGhpcy53b3Jkc1t3XSZfLndvcmRzW3ddO3JldHVybiB0aGlzLmxlbmd0aD1wLmxlbmd0aCx0aGlzLl9zdHJpcCgpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5pYW5kPWZ1bmN0aW9uKF8pe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxfLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChfKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmxlbmd0aD5fLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChfKTpfLmNsb25lKCku''@;'; put 'put ''aWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5sZW5ndGg+Xy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKF8pOl8uY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oXyl7dmFyIHAsdzt0aGlzLmxlbmd0aD5f''@;'; put 'put ''Lmxlbmd0aD8ocD10aGlzLHc9Xyk6KHA9Xyx3PXRoaXMpO2Zvcih2YXIgSz0wO0s8dy5sZW5ndGg7SysrKXRoaXMud29yZHNbS109cC53b3Jkc1tLXV53LndvcmRzW0tdO2lmKHRoaXMhPT1wKWZvcig7SzxwLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT1wLndvcmRzW0tdO3JldHVybiB0aGlz''@;'; put 'put ''Lmxlbmd0aD1wLmxlbmd0aCx0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKF8pe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxfLm5lZ2F0aXZlKSksdGhpcy5pdXhvcihfKX0sRS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmxlbmd0aD5fLmxl''@;'; put 'put ''bmd0aD90aGlzLmNsb25lKCkuaXhvcihfKTpfLmNsb25lKCkuaXhvcih0aGlzKX0sRS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5sZW5ndGg+Xy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKF8pOl8uY2xvbmUoKS5pdXhvcih0aGlzKX0sRS5wcm90b3R5cGUuaW5v''@;'; put 'put ''dG49ZnVuY3Rpb24oXyl7RCgibnVtYmVyIj09dHlwZW9mIF8mJl8+PTApO3ZhciBwPTB8TWF0aC5jZWlsKF8vMjYpLHc9XyUyNjt0aGlzLl9leHBhbmQocCksdz4wJiZwLS07Zm9yKHZhciBLPTA7SzxwO0srKyl0aGlzLndvcmRzW0tdPTY3MTA4ODYzJn50aGlzLndvcmRzW0tdO3JldHVybiB3''@;'; put 'put ''PjAmJih0aGlzLndvcmRzW0tdPX50aGlzLndvcmRzW0tdJjY3MTA4ODYzPj4yNi13KSx0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oXyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oXyxwKXtEKCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgXyYmXz49MCk7dmFyIHc9Xy8yNnwwLEs9XyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKHcrMSksdGhpcy53b3Jkc1t3XT1wP3RoaXMud29yZHNbd118MTw8Szp0aGlzLndvcmRzW3ddJn4oMTw8SyksdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihfKXt2''@;'; put 'put ''YXIgcCx3LEs7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1fLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAscD10aGlzLmlzdWIoXyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Xy5uZWdhdGl2ZSlyZXR1cm4gXy5u''@;'; put 'put ''ZWdhdGl2ZT0wLHA9dGhpcy5pc3ViKF8pLF8ubmVnYXRpdmU9MSxwLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPl8ubGVuZ3RoPyh3PXRoaXMsSz1fKToodz1fLEs9dGhpcyk7Zm9yKHZhciB0ZT0wLGNlPTA7Y2U8Sy5sZW5ndGg7Y2UrKyl0aGlzLndvcmRzW2NlXT02NzEwODg2MyYocD0oMHx3''@;'; put 'put ''LndvcmRzW2NlXSkrKDB8Sy53b3Jkc1tjZV0pK3RlKSx0ZT1wPj4+MjY7Zm9yKDswIT09dGUmJmNlPHcubGVuZ3RoO2NlKyspdGhpcy53b3Jkc1tjZV09NjcxMDg4NjMmKHA9KDB8dy53b3Jkc1tjZV0pK3RlKSx0ZT1wPj4+MjY7aWYodGhpcy5sZW5ndGg9dy5sZW5ndGgsMCE9PXRlKXRoaXMu''@;'; put 'put ''d29yZHNbdGhpcy5sZW5ndGhdPXRlLHRoaXMubGVuZ3RoKys7ZWxzZSBpZih3IT09dGhpcylmb3IoO2NlPHcubGVuZ3RoO2NlKyspdGhpcy53b3Jkc1tjZV09dy53b3Jkc1tjZV07cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihfKXt2YXIgcDtyZXR1cm4gMCE9PV8ubmVn''@;'; put 'put ''YXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhfLm5lZ2F0aXZlPTAscD10aGlzLnN1YihfKSxfLm5lZ2F0aXZlXj0xLHApOjA9PT1fLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLHA9Xy5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLHApOnRoaXMubGVuZ3Ro''@;'; put 'put ''Pl8ubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKF8pOl8uY2xvbmUoKS5pYWRkKHRoaXMpfSxFLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKF8pe2lmKDAhPT1fLm5lZ2F0aXZlKXtfLm5lZ2F0aXZlPTA7dmFyIHA9dGhpcy5pYWRkKF8pO3JldHVybiBfLm5lZ2F0aXZlPTEscC5fbm9ybVNpZ24o''@;'; put 'put ''KX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChfKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgdyxLLHRlPXRoaXMuY21wKF8pO2lmKDA9PT10ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhp''@;'; put 'put ''cy53b3Jkc1swXT0wLHRoaXM7dGU+MD8odz10aGlzLEs9Xyk6KHc9XyxLPXRoaXMpO2Zvcih2YXIgY2U9MCxoZT0wO2hlPEsubGVuZ3RoO2hlKyspY2U9KHA9KDB8dy53b3Jkc1toZV0pLSgwfEsud29yZHNbaGVdKStjZSk+PjI2LHRoaXMud29yZHNbaGVdPTY3MTA4ODYzJnA7Zm9yKDswIT09''@;'; put 'put ''Y2UmJmhlPHcubGVuZ3RoO2hlKyspY2U9KHA9KDB8dy53b3Jkc1toZV0pK2NlKT4+MjYsdGhpcy53b3Jkc1toZV09NjcxMDg4NjMmcDtpZigwPT09Y2UmJmhlPHcubGVuZ3RoJiZ3IT09dGhpcylmb3IoO2hlPHcubGVuZ3RoO2hlKyspdGhpcy53b3Jkc1toZV09dy53b3Jkc1toZV07cmV0dXJu''@;'; put 'put ''IHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGhlKSx3IT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihfKX07dmFyIGllPWZ1bmN0aW9uKF8scCx3KXt2YXIg''@;'; put 'put ''Syx0ZSxjZSxoZT1fLndvcmRzLFNlPXAud29yZHMsTGU9dy53b3JkcyxIZT0wLHhlPTB8aGVbMF0sRGU9ODE5MSZ4ZSxCZT14ZT4+PjEzLEdlPTB8aGVbMV0sVWU9ODE5MSZHZSxxZT1HZT4+PjEzLG90PTB8aGVbMl0sRmU9ODE5MSZvdCx3ZT1vdD4+PjEzLEVlPTB8aGVbM10sSWU9ODE5MSZF''@;'; put 'put ''ZSxYZT1FZT4+PjEzLHR0PTB8aGVbNF0sWmU9ODE5MSZ0dCxjdD10dD4+PjEzLGtlPTB8aGVbNV0sQWU9ODE5MSZrZSxqZT1rZT4+PjEzLGl0PTB8aGVbNl0sc3Q9ODE5MSZpdCx4dD1pdD4+PjEzLEZ0PTB8aGVbN10sT3Q9ODE5MSZGdCxLdD1GdD4+PjEzLGJuPTB8aGVbOF0sQnQ9ODE5MSZi''@;'; put 'put ''bix5bj1ibj4+PjEzLE5uPTB8aGVbOV0sbm49ODE5MSZObixHbj1Obj4+PjEzLFluPTB8U2VbMF0sZnQ9ODE5MSZZbixkbj1Zbj4+PjEzLGhuPTB8U2VbMV0sd3Q9ODE5MSZobixqdD1obj4+PjEzLG10PTB8U2VbMl0sSHQ9ODE5MSZtdCxwbj1tdD4+PjEzLG50PTB8U2VbM10sRXQ9ODE5MSZu''@;'; put 'put ''dCxlbj1udD4+PjEzLFR0PTB8U2VbNF0seXQ9ODE5MSZUdCwkdD1UdD4+PjEzLHhuPTB8U2VbNV0senQ9ODE5MSZ4bixfbj14bj4+PjEzLE9uPTB8U2VbNl0scm49ODE5MSZPbixQbj1Pbj4+PjEzLENuPTB8U2VbN10sWHQ9ODE5MSZDbixKbj1Dbj4+PjEzLHhpPTB8U2VbOF0sYW49ODE5MSZ4''@;'; put 'put ''aSx0bj14aT4+PjEzLHVpPTB8U2VbOV0sQXI9ODE5MSZ1aSxocj11aT4+PjEzO3cubmVnYXRpdmU9Xy5uZWdhdGl2ZV5wLm5lZ2F0aXZlLHcubGVuZ3RoPTE5O3ZhciBkaT0oSGUrKEs9TWF0aC5pbXVsKERlLGZ0KSl8MCkrKCg4MTkxJih0ZT0odGU9TWF0aC5pbXVsKERlLGRuKSkrTWF0aC5p''@;'; put 'put ''bXVsKEJlLGZ0KXwwKSk8PDEzKXwwO0hlPSgoY2U9TWF0aC5pbXVsKEJlLGRuKSkrKHRlPj4+MTMpfDApKyhkaT4+PjI2KXwwLGRpJj02NzEwODg2MyxLPU1hdGguaW11bChVZSxmdCksdGU9KHRlPU1hdGguaW11bChVZSxkbikpK01hdGguaW11bChxZSxmdCl8MCxjZT1NYXRoLmltdWwocWUs''@;'; put 'put ''ZG4pO3ZhciBmaT0oSGUrKEs9SytNYXRoLmltdWwoRGUsd3QpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChEZSxqdCl8MCkrTWF0aC5pbXVsKEJlLHd0KXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJlLGp0KXwwKSsodGU+Pj4xMyl8MCkrKGZpPj4+MjYpfDAs''@;'; put 'put ''ZmkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEZlLGZ0KSx0ZT0odGU9TWF0aC5pbXVsKEZlLGRuKSkrTWF0aC5pbXVsKHdlLGZ0KXwwLGNlPU1hdGguaW11bCh3ZSxkbiksSz1LK01hdGguaW11bChVZSx3dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFVlLGp0KXwwKStNYXRoLmltdWwocWUsd3Qp''@;'; put 'put ''fDAsY2U9Y2UrTWF0aC5pbXVsKHFlLGp0KXwwO3ZhciBobz0oSGUrKEs9SytNYXRoLmltdWwoRGUsSHQpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChEZSxwbil8MCkrTWF0aC5pbXVsKEJlLEh0KXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJlLHBuKXwwKSso''@;'; put 'put ''dGU+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEllLGZ0KSx0ZT0odGU9TWF0aC5pbXVsKEllLGRuKSkrTWF0aC5pbXVsKFhlLGZ0KXwwLGNlPU1hdGguaW11bChYZSxkbiksSz1LK01hdGguaW11bChGZSx3dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZl''@;'; put 'put ''LGp0KXwwKStNYXRoLmltdWwod2Usd3QpfDAsY2U9Y2UrTWF0aC5pbXVsKHdlLGp0KXwwLEs9SytNYXRoLmltdWwoVWUsSHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChVZSxwbil8MCkrTWF0aC5pbXVsKHFlLEh0KXwwLGNlPWNlK01hdGguaW11bChxZSxwbil8MDt2YXIgYnI9KEhlKyhLPUsr''@;'; put 'put ''TWF0aC5pbXVsKERlLEV0KXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoRGUsZW4pfDApK01hdGguaW11bChCZSxFdCl8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChCZSxlbil8MCkrKHRlPj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2MyxLPU1hdGgu''@;'; put 'put ''aW11bChaZSxmdCksdGU9KHRlPU1hdGguaW11bChaZSxkbikpK01hdGguaW11bChjdCxmdCl8MCxjZT1NYXRoLmltdWwoY3QsZG4pLEs9SytNYXRoLmltdWwoSWUsd3QpfDAsdGU9KHRlPXRlK01hdGguaW11bChJZSxqdCl8MCkrTWF0aC5pbXVsKFhlLHd0KXwwLGNlPWNlK01hdGguaW11bChY''@;'; put 'put ''ZSxqdCl8MCxLPUsrTWF0aC5pbXVsKEZlLEh0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRmUscG4pfDApK01hdGguaW11bCh3ZSxIdCl8MCxjZT1jZStNYXRoLmltdWwod2UscG4pfDAsSz1LK01hdGguaW11bChVZSxFdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFVlLGVuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwocWUsRXQpfDAsY2U9Y2UrTWF0aC5pbXVsKHFlLGVuKXwwO3ZhciBMaT0oSGUrKEs9SytNYXRoLmltdWwoRGUseXQpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChEZSwkdCl8MCkrTWF0aC5pbXVsKEJlLHl0KXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJl''@;'; put 'put ''LCR0KXwwKSsodGU+Pj4xMyl8MCkrKExpPj4+MjYpfDAsTGkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEFlLGZ0KSx0ZT0odGU9TWF0aC5pbXVsKEFlLGRuKSkrTWF0aC5pbXVsKGplLGZ0KXwwLGNlPU1hdGguaW11bChqZSxkbiksSz1LK01hdGguaW11bChaZSx3dCl8MCx0ZT0odGU9dGUrTWF0''@;'; put 'put ''aC5pbXVsKFplLGp0KXwwKStNYXRoLmltdWwoY3Qsd3QpfDAsY2U9Y2UrTWF0aC5pbXVsKGN0LGp0KXwwLEs9SytNYXRoLmltdWwoSWUsSHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChJZSxwbil8MCkrTWF0aC5pbXVsKFhlLEh0KXwwLGNlPWNlK01hdGguaW11bChYZSxwbil8MCxLPUsrTWF0''@;'; put 'put ''aC5pbXVsKEZlLEV0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRmUsZW4pfDApK01hdGguaW11bCh3ZSxFdCl8MCxjZT1jZStNYXRoLmltdWwod2UsZW4pfDAsSz1LK01hdGguaW11bChVZSx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFVlLCR0KXwwKStNYXRoLmltdWwocWUseXQpfDAsY2U9''@;'; put 'put ''Y2UrTWF0aC5pbXVsKHFlLCR0KXwwO3ZhciBsbz0oSGUrKEs9SytNYXRoLmltdWwoRGUsenQpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKEJlLHp0KXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJlLF9uKXwwKSsodGU+Pj4x''@;'; put 'put ''Myl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLEs9TWF0aC5pbXVsKHN0LGZ0KSx0ZT0odGU9TWF0aC5pbXVsKHN0LGRuKSkrTWF0aC5pbXVsKHh0LGZ0KXwwLGNlPU1hdGguaW11bCh4dCxkbiksSz1LK01hdGguaW11bChBZSx3dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEFlLGp0KXww''@;'; put 'put ''KStNYXRoLmltdWwoamUsd3QpfDAsY2U9Y2UrTWF0aC5pbXVsKGplLGp0KXwwLEs9SytNYXRoLmltdWwoWmUsSHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChaZSxwbil8MCkrTWF0aC5pbXVsKGN0LEh0KXwwLGNlPWNlK01hdGguaW11bChjdCxwbil8MCxLPUsrTWF0aC5pbXVsKEllLEV0KXww''@;'; put 'put ''LHRlPSh0ZT10ZStNYXRoLmltdWwoSWUsZW4pfDApK01hdGguaW11bChYZSxFdCl8MCxjZT1jZStNYXRoLmltdWwoWGUsZW4pfDAsSz1LK01hdGguaW11bChGZSx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZlLCR0KXwwKStNYXRoLmltdWwod2UseXQpfDAsY2U9Y2UrTWF0aC5pbXVsKHdl''@;'; put 'put ''LCR0KXwwLEs9SytNYXRoLmltdWwoVWUsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChVZSxfbil8MCkrTWF0aC5pbXVsKHFlLHp0KXwwLGNlPWNlK01hdGguaW11bChxZSxfbil8MDt2YXIgVW49KEhlKyhLPUsrTWF0aC5pbXVsKERlLHJuKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRo''@;'; put 'put ''LmltdWwoRGUsUG4pfDApK01hdGguaW11bChCZSxybil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChCZSxQbil8MCkrKHRlPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxLPU1hdGguaW11bChPdCxmdCksdGU9KHRlPU1hdGguaW11bChPdCxkbikpK01hdGguaW11''@;'; put 'put ''bChLdCxmdCl8MCxjZT1NYXRoLmltdWwoS3QsZG4pLEs9SytNYXRoLmltdWwoc3Qsd3QpfDAsdGU9KHRlPXRlK01hdGguaW11bChzdCxqdCl8MCkrTWF0aC5pbXVsKHh0LHd0KXwwLGNlPWNlK01hdGguaW11bCh4dCxqdCl8MCxLPUsrTWF0aC5pbXVsKEFlLEh0KXwwLHRlPSh0ZT10ZStNYXRo''@;'; put 'put ''LmltdWwoQWUscG4pfDApK01hdGguaW11bChqZSxIdCl8MCxjZT1jZStNYXRoLmltdWwoamUscG4pfDAsSz1LK01hdGguaW11bChaZSxFdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFplLGVuKXwwKStNYXRoLmltdWwoY3QsRXQpfDAsY2U9Y2UrTWF0aC5pbXVsKGN0LGVuKXwwLEs9SytNYXRo''@;'; put 'put ''LmltdWwoSWUseXQpfDAsdGU9KHRlPXRlK01hdGguaW11bChJZSwkdCl8MCkrTWF0aC5pbXVsKFhlLHl0KXwwLGNlPWNlK01hdGguaW11bChYZSwkdCl8MCxLPUsrTWF0aC5pbXVsKEZlLHp0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRmUsX24pfDApK01hdGguaW11bCh3ZSx6dCl8MCxjZT1j''@;'; put 'put ''ZStNYXRoLmltdWwod2UsX24pfDAsSz1LK01hdGguaW11bChVZSxybil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFVlLFBuKXwwKStNYXRoLmltdWwocWUscm4pfDAsY2U9Y2UrTWF0aC5pbXVsKHFlLFBuKXwwO3ZhciBYaT0oSGUrKEs9SytNYXRoLmltdWwoRGUsWHQpfDApfDApKygoODE5MSYo''@;'; put 'put ''dGU9KHRlPXRlK01hdGguaW11bChEZSxKbil8MCkrTWF0aC5pbXVsKEJlLFh0KXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJlLEpuKXwwKSsodGU+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEJ0LGZ0KSx0ZT0odGU9TWF0aC5pbXVsKEJ0''@;'; put 'put ''LGRuKSkrTWF0aC5pbXVsKHluLGZ0KXwwLGNlPU1hdGguaW11bCh5bixkbiksSz1LK01hdGguaW11bChPdCx3dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKE90LGp0KXwwKStNYXRoLmltdWwoS3Qsd3QpfDAsY2U9Y2UrTWF0aC5pbXVsKEt0LGp0KXwwLEs9SytNYXRoLmltdWwoc3QsSHQpfDAs''@;'; put 'put ''dGU9KHRlPXRlK01hdGguaW11bChzdCxwbil8MCkrTWF0aC5pbXVsKHh0LEh0KXwwLGNlPWNlK01hdGguaW11bCh4dCxwbil8MCxLPUsrTWF0aC5pbXVsKEFlLEV0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoQWUsZW4pfDApK01hdGguaW11bChqZSxFdCl8MCxjZT1jZStNYXRoLmltdWwoamUs''@;'; put 'put ''ZW4pfDAsSz1LK01hdGguaW11bChaZSx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKFplLCR0KXwwKStNYXRoLmltdWwoY3QseXQpfDAsY2U9Y2UrTWF0aC5pbXVsKGN0LCR0KXwwLEs9SytNYXRoLmltdWwoSWUsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChJZSxfbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KFhlLHp0KXwwLGNlPWNlK01hdGguaW11bChYZSxfbil8MCxLPUsrTWF0aC5pbXVsKEZlLHJuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRmUsUG4pfDApK01hdGguaW11bCh3ZSxybil8MCxjZT1jZStNYXRoLmltdWwod2UsUG4pfDAsSz1LK01hdGguaW11bChVZSxYdCl8MCx0ZT0odGU9dGUr''@;'; put 'put ''TWF0aC5pbXVsKFVlLEpuKXwwKStNYXRoLmltdWwocWUsWHQpfDAsY2U9Y2UrTWF0aC5pbXVsKHFlLEpuKXwwO3ZhciBRaT0oSGUrKEs9SytNYXRoLmltdWwoRGUsYW4pfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChEZSx0bil8MCkrTWF0aC5pbXVsKEJlLGFuKXwwKSk8PDEz''@;'; put 'put ''KXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKEJlLHRuKXwwKSsodGU+Pj4xMyl8MCkrKFFpPj4+MjYpfDAsUWkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKG5uLGZ0KSx0ZT0odGU9TWF0aC5pbXVsKG5uLGRuKSkrTWF0aC5pbXVsKEduLGZ0KXwwLGNlPU1hdGguaW11bChHbixkbiksSz1LK01hdGgu''@;'; put 'put ''aW11bChCdCx3dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEJ0LGp0KXwwKStNYXRoLmltdWwoeW4sd3QpfDAsY2U9Y2UrTWF0aC5pbXVsKHluLGp0KXwwLEs9SytNYXRoLmltdWwoT3QsSHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChPdCxwbil8MCkrTWF0aC5pbXVsKEt0LEh0KXwwLGNlPWNl''@;'; put 'put ''K01hdGguaW11bChLdCxwbil8MCxLPUsrTWF0aC5pbXVsKHN0LEV0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoc3QsZW4pfDApK01hdGguaW11bCh4dCxFdCl8MCxjZT1jZStNYXRoLmltdWwoeHQsZW4pfDAsSz1LK01hdGguaW11bChBZSx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEFlLCR0''@;'; put 'put ''KXwwKStNYXRoLmltdWwoamUseXQpfDAsY2U9Y2UrTWF0aC5pbXVsKGplLCR0KXwwLEs9SytNYXRoLmltdWwoWmUsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChaZSxfbil8MCkrTWF0aC5pbXVsKGN0LHp0KXwwLGNlPWNlK01hdGguaW11bChjdCxfbil8MCxLPUsrTWF0aC5pbXVsKEllLHJu''@;'; put 'put ''KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoSWUsUG4pfDApK01hdGguaW11bChYZSxybil8MCxjZT1jZStNYXRoLmltdWwoWGUsUG4pfDAsSz1LK01hdGguaW11bChGZSxYdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZlLEpuKXwwKStNYXRoLmltdWwod2UsWHQpfDAsY2U9Y2UrTWF0aC5pbXVs''@;'; put 'put ''KHdlLEpuKXwwLEs9SytNYXRoLmltdWwoVWUsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChVZSx0bil8MCkrTWF0aC5pbXVsKHFlLGFuKXwwLGNlPWNlK01hdGguaW11bChxZSx0bil8MDt2YXIgZm89KEhlKyhLPUsrTWF0aC5pbXVsKERlLEFyKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStN''@;'; put 'put ''YXRoLmltdWwoRGUsaHIpfDApK01hdGguaW11bChCZSxBcil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChCZSxocil8MCkrKHRlPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxLPU1hdGguaW11bChubix3dCksdGU9KHRlPU1hdGguaW11bChubixqdCkpK01hdGgu''@;'; put 'put ''aW11bChHbix3dCl8MCxjZT1NYXRoLmltdWwoR24sanQpLEs9SytNYXRoLmltdWwoQnQsSHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChCdCxwbil8MCkrTWF0aC5pbXVsKHluLEh0KXwwLGNlPWNlK01hdGguaW11bCh5bixwbil8MCxLPUsrTWF0aC5pbXVsKE90LEV0KXwwLHRlPSh0ZT10ZStN''@;'; put 'put ''YXRoLmltdWwoT3QsZW4pfDApK01hdGguaW11bChLdCxFdCl8MCxjZT1jZStNYXRoLmltdWwoS3QsZW4pfDAsSz1LK01hdGguaW11bChzdCx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHN0LCR0KXwwKStNYXRoLmltdWwoeHQseXQpfDAsY2U9Y2UrTWF0aC5pbXVsKHh0LCR0KXwwLEs9SytN''@;'; put 'put ''YXRoLmltdWwoQWUsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChBZSxfbil8MCkrTWF0aC5pbXVsKGplLHp0KXwwLGNlPWNlK01hdGguaW11bChqZSxfbil8MCxLPUsrTWF0aC5pbXVsKFplLHJuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoWmUsUG4pfDApK01hdGguaW11bChjdCxybil8MCxj''@;'; put 'put ''ZT1jZStNYXRoLmltdWwoY3QsUG4pfDAsSz1LK01hdGguaW11bChJZSxYdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEllLEpuKXwwKStNYXRoLmltdWwoWGUsWHQpfDAsY2U9Y2UrTWF0aC5pbXVsKFhlLEpuKXwwLEs9SytNYXRoLmltdWwoRmUsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChG''@;'; put 'put ''ZSx0bil8MCkrTWF0aC5pbXVsKHdlLGFuKXwwLGNlPWNlK01hdGguaW11bCh3ZSx0bil8MDt2YXIgdm89KEhlKyhLPUsrTWF0aC5pbXVsKFVlLEFyKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoVWUsaHIpfDApK01hdGguaW11bChxZSxBcil8MCkpPDwxMyl8MDtIZT0oKGNl''@;'; put 'put ''PWNlK01hdGguaW11bChxZSxocil8MCkrKHRlPj4+MTMpfDApKyh2bz4+PjI2KXwwLHZvJj02NzEwODg2MyxLPU1hdGguaW11bChubixIdCksdGU9KHRlPU1hdGguaW11bChubixwbikpK01hdGguaW11bChHbixIdCl8MCxjZT1NYXRoLmltdWwoR24scG4pLEs9SytNYXRoLmltdWwoQnQsRXQp''@;'; put 'put ''fDAsdGU9KHRlPXRlK01hdGguaW11bChCdCxlbil8MCkrTWF0aC5pbXVsKHluLEV0KXwwLGNlPWNlK01hdGguaW11bCh5bixlbil8MCxLPUsrTWF0aC5pbXVsKE90LHl0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoT3QsJHQpfDApK01hdGguaW11bChLdCx5dCl8MCxjZT1jZStNYXRoLmltdWwo''@;'; put 'put ''S3QsJHQpfDAsSz1LK01hdGguaW11bChzdCx6dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHN0LF9uKXwwKStNYXRoLmltdWwoeHQsenQpfDAsY2U9Y2UrTWF0aC5pbXVsKHh0LF9uKXwwLEs9SytNYXRoLmltdWwoQWUscm4pfDAsdGU9KHRlPXRlK01hdGguaW11bChBZSxQbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGplLHJuKXwwLGNlPWNlK01hdGguaW11bChqZSxQbil8MCxLPUsrTWF0aC5pbXVsKFplLFh0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoWmUsSm4pfDApK01hdGguaW11bChjdCxYdCl8MCxjZT1jZStNYXRoLmltdWwoY3QsSm4pfDAsSz1LK01hdGguaW11bChJZSxhbil8MCx0ZT0odGU9''@;'; put 'put ''dGUrTWF0aC5pbXVsKEllLHRuKXwwKStNYXRoLmltdWwoWGUsYW4pfDAsY2U9Y2UrTWF0aC5pbXVsKFhlLHRuKXwwO3ZhciBScj0oSGUrKEs9SytNYXRoLmltdWwoRmUsQXIpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChGZSxocil8MCkrTWF0aC5pbXVsKHdlLEFyKXwwKSk8''@;'; put 'put ''PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKHdlLGhyKXwwKSsodGU+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLEs9TWF0aC5pbXVsKG5uLEV0KSx0ZT0odGU9TWF0aC5pbXVsKG5uLGVuKSkrTWF0aC5pbXVsKEduLEV0KXwwLGNlPU1hdGguaW11bChHbixlbiksSz1LK01h''@;'; put 'put ''dGguaW11bChCdCx5dCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEJ0LCR0KXwwKStNYXRoLmltdWwoeW4seXQpfDAsY2U9Y2UrTWF0aC5pbXVsKHluLCR0KXwwLEs9SytNYXRoLmltdWwoT3QsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChPdCxfbil8MCkrTWF0aC5pbXVsKEt0LHp0KXwwLGNl''@;'; put 'put ''PWNlK01hdGguaW11bChLdCxfbil8MCxLPUsrTWF0aC5pbXVsKHN0LHJuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoc3QsUG4pfDApK01hdGguaW11bCh4dCxybil8MCxjZT1jZStNYXRoLmltdWwoeHQsUG4pfDAsSz1LK01hdGguaW11bChBZSxYdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEFl''@;'; put 'put ''LEpuKXwwKStNYXRoLmltdWwoamUsWHQpfDAsY2U9Y2UrTWF0aC5pbXVsKGplLEpuKXwwLEs9SytNYXRoLmltdWwoWmUsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChaZSx0bil8MCkrTWF0aC5pbXVsKGN0LGFuKXwwLGNlPWNlK01hdGguaW11bChjdCx0bil8MDt2YXIgWWk9KEhlKyhLPUsr''@;'; put 'put ''TWF0aC5pbXVsKEllLEFyKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoSWUsaHIpfDApK01hdGguaW11bChYZSxBcil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChYZSxocil8MCkrKHRlPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2MyxLPU1hdGgu''@;'; put 'put ''aW11bChubix5dCksdGU9KHRlPU1hdGguaW11bChubiwkdCkpK01hdGguaW11bChHbix5dCl8MCxjZT1NYXRoLmltdWwoR24sJHQpLEs9SytNYXRoLmltdWwoQnQsenQpfDAsdGU9KHRlPXRlK01hdGguaW11bChCdCxfbil8MCkrTWF0aC5pbXVsKHluLHp0KXwwLGNlPWNlK01hdGguaW11bCh5''@;'; put 'put ''bixfbil8MCxLPUsrTWF0aC5pbXVsKE90LHJuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoT3QsUG4pfDApK01hdGguaW11bChLdCxybil8MCxjZT1jZStNYXRoLmltdWwoS3QsUG4pfDAsSz1LK01hdGguaW11bChzdCxYdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHN0LEpuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoeHQsWHQpfDAsY2U9Y2UrTWF0aC5pbXVsKHh0LEpuKXwwLEs9SytNYXRoLmltdWwoQWUsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChBZSx0bil8MCkrTWF0aC5pbXVsKGplLGFuKXwwLGNlPWNlK01hdGguaW11bChqZSx0bil8MDt2YXIgem89KEhlKyhLPUsrTWF0aC5pbXVsKFplLEFy''@;'; put 'put ''KXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoWmUsaHIpfDApK01hdGguaW11bChjdCxBcil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChjdCxocil8MCkrKHRlPj4+MTMpfDApKyh6bz4+PjI2KXwwLHpvJj02NzEwODg2MyxLPU1hdGguaW11bChubix6dCksdGU9''@;'; put 'put ''KHRlPU1hdGguaW11bChubixfbikpK01hdGguaW11bChHbix6dCl8MCxjZT1NYXRoLmltdWwoR24sX24pLEs9SytNYXRoLmltdWwoQnQscm4pfDAsdGU9KHRlPXRlK01hdGguaW11bChCdCxQbil8MCkrTWF0aC5pbXVsKHluLHJuKXwwLGNlPWNlK01hdGguaW11bCh5bixQbil8MCxLPUsrTWF0''@;'; put 'put ''aC5pbXVsKE90LFh0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoT3QsSm4pfDApK01hdGguaW11bChLdCxYdCl8MCxjZT1jZStNYXRoLmltdWwoS3QsSm4pfDAsSz1LK01hdGguaW11bChzdCxhbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHN0LHRuKXwwKStNYXRoLmltdWwoeHQsYW4pfDAsY2U9''@;'; put 'put ''Y2UrTWF0aC5pbXVsKHh0LHRuKXwwO3ZhciBpcz0oSGUrKEs9SytNYXRoLmltdWwoQWUsQXIpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChBZSxocil8MCkrTWF0aC5pbXVsKGplLEFyKXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKGplLGhyKXwwKSsodGU+Pj4x''@;'; put 'put ''Myl8MCkrKGlzPj4+MjYpfDAsaXMmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKG5uLHJuKSx0ZT0odGU9TWF0aC5pbXVsKG5uLFBuKSkrTWF0aC5pbXVsKEduLHJuKXwwLGNlPU1hdGguaW11bChHbixQbiksSz1LK01hdGguaW11bChCdCxYdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEJ0LEpuKXww''@;'; put 'put ''KStNYXRoLmltdWwoeW4sWHQpfDAsY2U9Y2UrTWF0aC5pbXVsKHluLEpuKXwwLEs9SytNYXRoLmltdWwoT3QsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChPdCx0bil8MCkrTWF0aC5pbXVsKEt0LGFuKXwwLGNlPWNlK01hdGguaW11bChLdCx0bil8MDt2YXIgdXM9KEhlKyhLPUsrTWF0aC5p''@;'; put 'put ''bXVsKHN0LEFyKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoc3QsaHIpfDApK01hdGguaW11bCh4dCxBcil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bCh4dCxocil8MCkrKHRlPj4+MTMpfDApKyh1cz4+PjI2KXwwLHVzJj02NzEwODg2MyxLPU1hdGguaW11bChu''@;'; put 'put ''bixYdCksdGU9KHRlPU1hdGguaW11bChubixKbikpK01hdGguaW11bChHbixYdCl8MCxjZT1NYXRoLmltdWwoR24sSm4pLEs9SytNYXRoLmltdWwoQnQsYW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChCdCx0bil8MCkrTWF0aC5pbXVsKHluLGFuKXwwLGNlPWNlK01hdGguaW11bCh5bix0bil8''@;'; put 'put ''MDt2YXIgT3U9KEhlKyhLPUsrTWF0aC5pbXVsKE90LEFyKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoT3QsaHIpfDApK01hdGguaW11bChLdCxBcil8MCkpPDwxMyl8MDtIZT0oKGNlPWNlK01hdGguaW11bChLdCxocil8MCkrKHRlPj4+MTMpfDApKyhPdT4+PjI2KXwwLE91''@;'; put 'put ''Jj02NzEwODg2MyxLPU1hdGguaW11bChubixhbiksdGU9KHRlPU1hdGguaW11bChubix0bikpK01hdGguaW11bChHbixhbil8MCxjZT1NYXRoLmltdWwoR24sdG4pO3ZhciBQdT0oSGUrKEs9SytNYXRoLmltdWwoQnQsQXIpfDApfDApKygoODE5MSYodGU9KHRlPXRlK01hdGguaW11bChCdCxo''@;'; put 'put ''cil8MCkrTWF0aC5pbXVsKHluLEFyKXwwKSk8PDEzKXwwO0hlPSgoY2U9Y2UrTWF0aC5pbXVsKHluLGhyKXwwKSsodGU+Pj4xMyl8MCkrKFB1Pj4+MjYpfDAsUHUmPTY3MTA4ODYzO3ZhciBGdT0oSGUrKEs9TWF0aC5pbXVsKG5uLEFyKSl8MCkrKCg4MTkxJih0ZT0odGU9TWF0aC5pbXVsKG5u''@;'; put 'put ''LGhyKSkrTWF0aC5pbXVsKEduLEFyKXwwKSk8PDEzKXwwO3JldHVybiBIZT0oKGNlPU1hdGguaW11bChHbixocikpKyh0ZT4+PjEzKXwwKSsoRnU+Pj4yNil8MCxGdSY9NjcxMDg4NjMsTGVbMF09ZGksTGVbMV09ZmksTGVbMl09aG8sTGVbM109YnIsTGVbNF09TGksTGVbNV09bG8sTGVbNl09''@;'; put 'put ''VW4sTGVbN109WGksTGVbOF09UWksTGVbOV09Zm8sTGVbMTBdPXZvLExlWzExXT1ScixMZVsxMl09WWksTGVbMTNdPXpvLExlWzE0XT1pcyxMZVsxNV09dXMsTGVbMTZdPU91LExlWzE3XT1QdSxMZVsxOF09RnUsMCE9PUhlJiYoTGVbMTldPUhlLHcubGVuZ3RoKyspLHd9O2Z1bmN0aW9uIHVl''@;'; put 'put ''KF8scCx3KXt3Lm5lZ2F0aXZlPXAubmVnYXRpdmVeXy5uZWdhdGl2ZSx3Lmxlbmd0aD1fLmxlbmd0aCtwLmxlbmd0aDtmb3IodmFyIEs9MCx0ZT0wLGNlPTA7Y2U8dy5sZW5ndGgtMTtjZSsrKXt2YXIgaGU9dGU7dGU9MDtmb3IodmFyIFNlPTY3MTA4ODYzJkssTGU9TWF0aC5taW4oY2UscC5s''@;'; put 'put ''ZW5ndGgtMSksSGU9TWF0aC5tYXgoMCxjZS1fLmxlbmd0aCsxKTtIZTw9TGU7SGUrKyl7dmFyIERlPSgwfF8ud29yZHNbY2UtSGVdKSooMHxwLndvcmRzW0hlXSksQmU9NjcxMDg4NjMmRGU7U2U9NjcxMDg4NjMmKEJlPUJlK1NlfDApLHRlKz0oaGU9KGhlPWhlKyhEZS82NzEwODg2NHwwKXww''@;'; put 'put ''KSsoQmU+Pj4yNil8MCk+Pj4yNixoZSY9NjcxMDg4NjN9dy53b3Jkc1tjZV09U2UsSz1oZSxoZT10ZX1yZXR1cm4gMCE9PUs/dy53b3Jkc1tjZV09Szp3Lmxlbmd0aC0tLHcuX3N0cmlwKCl9ZnVuY3Rpb24gbGUoXyxwLHcpe3JldHVybiB1ZShfLHAsdyl9ZnVuY3Rpb24gYWUoXyxwKXt0aGlz''@;'; put 'put ''Lng9Xyx0aGlzLnk9cH1NYXRoLmltdWx8fChpZT1yZSksRS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oXyxwKXt2YXIgdz10aGlzLmxlbmd0aCtfLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1fLmxlbmd0aD9pZSh0aGlzLF8scCk6dzw2Mz9yZSh0aGlzLF8scCk6dzwx''@;'; put 'put ''MDI0P3VlKHRoaXMsXyxwKTpsZSh0aGlzLF8scCl9LGFlLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKF8pe2Zvcih2YXIgcD1uZXcgQXJyYXkoXyksdz1FLnByb3RvdHlwZS5fY291bnRCaXRzKF8pLTEsSz0wO0s8XztLKyspcFtLXT10aGlzLnJldkJpbihLLHcsXyk7cmV0dXJuIHB9LGFl''@;'; put 'put ''LnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oXyxwLHcpe2lmKDA9PT1ffHxfPT09dy0xKXJldHVybiBfO2Zvcih2YXIgSz0wLHRlPTA7dGU8cDt0ZSsrKUt8PSgxJl8pPDxwLXRlLTEsXz4+PTE7cmV0dXJuIEt9LGFlLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKF8scCx3LEssdGUsY2Up''@;'; put 'put ''e2Zvcih2YXIgaGU9MDtoZTxjZTtoZSsrKUtbaGVdPXBbX1toZV1dLHRlW2hlXT13W19baGVdXX0sYWUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihfLHAsdyxLLHRlLGNlKXt0aGlzLnBlcm11dGUoY2UsXyxwLHcsSyx0ZSk7Zm9yKHZhciBoZT0xO2hlPHRlO2hlPDw9MSlmb3IodmFy''@;'; put 'put ''IFNlPWhlPDwxLExlPU1hdGguY29zKDIqTWF0aC5QSS9TZSksSGU9TWF0aC5zaW4oMipNYXRoLlBJL1NlKSx4ZT0wO3hlPHRlO3hlKz1TZSlmb3IodmFyIERlPUxlLEJlPUhlLEdlPTA7R2U8aGU7R2UrKyl7dmFyIFVlPXdbeGUrR2VdLHFlPUtbeGUrR2VdLG90PXdbeGUrR2UraGVdLEZlPUtb''@;'; put 'put ''eGUrR2UraGVdLHdlPURlKm90LUJlKkZlO0ZlPURlKkZlK0JlKm90LHdbeGUrR2VdPVVlKyhvdD13ZSksS1t4ZStHZV09cWUrRmUsd1t4ZStHZStoZV09VWUtb3QsS1t4ZStHZStoZV09cWUtRmUsR2UhPT1TZSYmKHdlPUxlKkRlLUhlKkJlLEJlPUxlKkJlK0hlKkRlLERlPXdlKX19LGFlLnBy''@;'; put 'put ''b3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihfLHApe3ZhciB3PTF8TWF0aC5tYXgocCxfKSxLPTEmdyx0ZT0wO2Zvcih3PXcvMnwwO3c7dz4+Pj0xKXRlKys7cmV0dXJuIDE8PHRlKzErS30sYWUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihfLHAsdyl7aWYoISh3PD0xKSlmb3Io''@;'; put 'put ''dmFyIEs9MDtLPHcvMjtLKyspe3ZhciB0ZT1fW0tdO19bS109X1t3LUstMV0sX1t3LUstMV09dGUsdGU9cFtLXSxwW0tdPS1wW3ctSy0xXSxwW3ctSy0xXT0tdGV9fSxhZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKF8scCl7Zm9yKHZhciB3PTAsSz0wO0s8cC8yO0srKyl7dmFy''@;'; put 'put ''IHRlPTgxOTIqTWF0aC5yb3VuZChfWzIqSysxXS9wKStNYXRoLnJvdW5kKF9bMipLXS9wKSt3O19bS109NjcxMDg4NjMmdGUsdz10ZTw2NzEwODg2ND8wOnRlLzY3MTA4ODY0fDB9cmV0dXJuIF99LGFlLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKF8scCx3LEspe2Zvcih2YXIgdGU9''@;'; put 'put ''MCxjZT0wO2NlPHA7Y2UrKyl3WzIqY2VdPTgxOTEmKHRlKz0wfF9bY2VdKSx3WzIqY2UrMV09ODE5MSYodGU+Pj49MTMpLHRlPj4+PTEzO2ZvcihjZT0yKnA7Y2U8SzsrK2NlKXdbY2VdPTA7RCgwPT09dGUpLEQoISgtODE5MiZ0ZSkpfSxhZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihfKXtm''@;'; put 'put ''b3IodmFyIHA9bmV3IEFycmF5KF8pLHc9MDt3PF87dysrKXBbd109MDtyZXR1cm4gcH0sYWUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oXyxwLHcpe3ZhciBLPTIqdGhpcy5ndWVzc0xlbjEzYihfLmxlbmd0aCxwLmxlbmd0aCksdGU9dGhpcy5tYWtlUkJUKEspLGNlPXRoaXMuc3R1YihLKSxo''@;'; put 'put ''ZT1uZXcgQXJyYXkoSyksU2U9bmV3IEFycmF5KEspLExlPW5ldyBBcnJheShLKSxIZT1uZXcgQXJyYXkoSykseGU9bmV3IEFycmF5KEspLERlPW5ldyBBcnJheShLKSxCZT13LndvcmRzO0JlLmxlbmd0aD1LLHRoaXMuY29udmVydDEzYihfLndvcmRzLF8ubGVuZ3RoLGhlLEspLHRoaXMuY29u''@;'; put 'put ''dmVydDEzYihwLndvcmRzLHAubGVuZ3RoLEhlLEspLHRoaXMudHJhbnNmb3JtKGhlLGNlLFNlLExlLEssdGUpLHRoaXMudHJhbnNmb3JtKEhlLGNlLHhlLERlLEssdGUpO2Zvcih2YXIgR2U9MDtHZTxLO0dlKyspe3ZhciBVZT1TZVtHZV0qeGVbR2VdLUxlW0dlXSpEZVtHZV07TGVbR2VdPVNl''@;'; put 'put ''W0dlXSpEZVtHZV0rTGVbR2VdKnhlW0dlXSxTZVtHZV09VWV9cmV0dXJuIHRoaXMuY29uanVnYXRlKFNlLExlLEspLHRoaXMudHJhbnNmb3JtKFNlLExlLEJlLGNlLEssdGUpLHRoaXMuY29uanVnYXRlKEJlLGNlLEspLHRoaXMubm9ybWFsaXplMTNiKEJlLEspLHcubmVnYXRpdmU9Xy5uZWdh''@;'; put 'put ''dGl2ZV5wLm5lZ2F0aXZlLHcubGVuZ3RoPV8ubGVuZ3RoK3AubGVuZ3RoLHcuX3N0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihfKXt2YXIgcD1uZXcgRShudWxsKTtyZXR1cm4gcC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrXy5sZW5ndGgpLHRoaXMubXVsVG8oXyxwKX0s''@;'; put 'put ''RS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihfKXt2YXIgcD1uZXcgRShudWxsKTtyZXR1cm4gcC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrXy5sZW5ndGgpLGxlKHRoaXMsXyxwKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKF8s''@;'; put 'put ''dGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKF8pe3ZhciBwPV88MDtwJiYoXz0tXyksRCgibnVtYmVyIj09dHlwZW9mIF8pLEQoXzw2NzEwODg2NCk7Zm9yKHZhciB3PTAsSz0wO0s8dGhpcy5sZW5ndGg7SysrKXt2YXIgdGU9KDB8dGhpcy53b3Jkc1tLXSkqXyxjZT0oNjcxMDg4''@;'; put 'put ''NjMmdGUpKyg2NzEwODg2MyZ3KTt3Pj49MjYsdys9dGUvNjcxMDg4NjR8MCx3Kz1jZT4+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmY2V9cmV0dXJuIDAhPT13JiYodGhpcy53b3Jkc1tLXT13LHRoaXMubGVuZ3RoKyspLHA/dGhpcy5pbmVnKCk6dGhpc30sRS5wcm90b3R5cGUubXVsbj1m''@;'; put 'put ''dW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKF8pfSxFLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LEUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LEUucHJvdG90eXBlLnBv''@;'; put 'put ''dz1mdW5jdGlvbihfKXt2YXIgcD1mdW5jdGlvbihjZSl7Zm9yKHZhciBoZT1uZXcgQXJyYXkoY2UuYml0TGVuZ3RoKCkpLFNlPTA7U2U8aGUubGVuZ3RoO1NlKyspaGVbU2VdPWNlLndvcmRzW1NlLzI2fDBdPj4+U2UlMjYmMTtyZXR1cm4gaGV9KF8pO2lmKDA9PT1wLmxlbmd0aClyZXR1cm4g''@;'; put 'put ''bmV3IEUoMSk7Zm9yKHZhciB3PXRoaXMsSz0wO0s8cC5sZW5ndGgmJjA9PT1wW0tdO0srKyx3PXcuc3FyKCkpO2lmKCsrSzxwLmxlbmd0aClmb3IodmFyIHRlPXcuc3FyKCk7SzxwLmxlbmd0aDtLKyssdGU9dGUuc3FyKCkpMCE9PXBbS10mJih3PXcubXVsKHRlKSk7cmV0dXJuIHd9LEUucHJv''@;'; put 'put ''dG90eXBlLml1c2hsbj1mdW5jdGlvbihfKXtEKCJudW1iZXIiPT10eXBlb2YgXyYmXz49MCk7dmFyIHAsdz1fJTI2LEs9KF8tdykvMjYsdGU9NjcxMDg4NjM+Pj4yNi13PDwyNi13O2lmKDAhPT13KXt2YXIgY2U9MDtmb3IocD0wO3A8dGhpcy5sZW5ndGg7cCsrKXt2YXIgaGU9dGhpcy53b3Jk''@;'; put 'put ''c1twXSZ0ZTt0aGlzLndvcmRzW3BdPSgwfHRoaXMud29yZHNbcF0pLWhlPDx3fGNlLGNlPWhlPj4+MjYtd31jZSYmKHRoaXMud29yZHNbcF09Y2UsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PUspe2ZvcihwPXRoaXMubGVuZ3RoLTE7cD49MDtwLS0pdGhpcy53b3Jkc1twK0tdPXRoaXMud29yZHNb''@;'; put 'put ''cF07Zm9yKHA9MDtwPEs7cCsrKXRoaXMud29yZHNbcF09MDt0aGlzLmxlbmd0aCs9S31yZXR1cm4gdGhpcy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oXyl7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKF8pfSxFLnByb3RvdHlwZS5pdXNocm49''@;'; put 'put ''ZnVuY3Rpb24oXyxwLHcpe3ZhciBLO0QoIm51bWJlciI9PXR5cGVvZiBfJiZfPj0wKSxLPXA/KHAtcCUyNikvMjY6MDt2YXIgdGU9XyUyNixjZT1NYXRoLm1pbigoXy10ZSkvMjYsdGhpcy5sZW5ndGgpLGhlPTY3MTA4ODYzXjY3MTA4ODYzPj4+dGU8PHRlLFNlPXc7aWYoSy09Y2UsSz1NYXRo''@;'; put 'put ''Lm1heCgwLEspLFNlKXtmb3IodmFyIExlPTA7TGU8Y2U7TGUrKylTZS53b3Jkc1tMZV09dGhpcy53b3Jkc1tMZV07U2UubGVuZ3RoPWNlfWlmKDAhPT1jZSlpZih0aGlzLmxlbmd0aD5jZSlmb3IodGhpcy5sZW5ndGgtPWNlLExlPTA7TGU8dGhpcy5sZW5ndGg7TGUrKyl0aGlzLndvcmRzW0xl''@;'; put 'put ''XT10aGlzLndvcmRzW0xlK2NlXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBIZT0wO2ZvcihMZT10aGlzLmxlbmd0aC0xO0xlPj0wJiYoMCE9PUhlfHxMZT49Syk7TGUtLSl7dmFyIHhlPTB8dGhpcy53b3Jkc1tMZV07dGhpcy53b3Jkc1tMZV09SGU8PDI2LXRlfHhl''@;'; put 'put ''Pj4+dGUsSGU9eGUmaGV9cmV0dXJuIFNlJiYwIT09SGUmJihTZS53b3Jkc1tTZS5sZW5ndGgrK109SGUpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLl9zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihfLHAsdyl7cmV0dXJu''@;'; put 'put ''IEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKF8scCx3KX0sRS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKF8pfSxFLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihfKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuc2hybj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKF8pfSxFLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihfKX0sRS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oXyl7RCgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IF8mJl8+PTApO3ZhciBwPV8lMjYsdz0oXy1wKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD13fHwhKHRoaXMud29yZHNbd10mMTw8cCkpfSxFLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oXyl7RCgibnVtYmVyIj09dHlwZW9mIF8mJl8+PTApO3ZhciBwPV8lMjYsdz0oXy1wKS8yNjtyZXR1''@;'; put 'put ''cm4gRCgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PXc/dGhpczooMCE9PXAmJncrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbih3LHRoaXMubGVuZ3RoKSwwIT09cCYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgt''@;'; put 'put ''MV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+cDw8cCksdGhpcy5fc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKF8pfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihfKXtyZXR1cm4gRCgibnVtYmVyIj09dHlwZW9mIF8p''@;'; put 'put ''LEQoXzw2NzEwODg2NCksXzwwP3RoaXMuaXN1Ym4oLV8pOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8PV8/KHRoaXMud29yZHNbMF09Xy0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0''@;'; put 'put ''aGlzLmlzdWJuKF8pLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihfKX0sRS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKF8pe3RoaXMud29yZHNbMF0rPV87Zm9yKHZhciBwPTA7cDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1twXT49NjcxMDg4NjQ7cCsrKXRoaXMud29yZHNb''@;'; put 'put ''cF0tPTY3MTA4ODY0LHA9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbcCsxXT0xOnRoaXMud29yZHNbcCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxwKzEpLHRoaXN9LEUucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKF8pe2lmKEQoIm51bWJlciI9PXR5''@;'; put 'put ''cGVvZiBfKSxEKF88NjcxMDg4NjQpLF88MClyZXR1cm4gdGhpcy5pYWRkbigtXyk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKF8pLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPV8sMT09PXRoaXMubGVuZ3RoJiZ0''@;'; put 'put ''aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIHA9MDtwPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3BdPDA7cCsrKXRoaXMud29yZHNbcF0rPTY3MTA4ODY0LHRoaXMud29yZHNbcCsxXS09MTtyZXR1cm4gdGhp''@;'; put 'put ''cy5fc3RyaXAoKX0sRS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKF8pfSxFLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oXyl9LEUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5uZWdhdGl2ZT0wLHRoaXN9LEUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxFLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oXyxwLHcpe3ZhciBLLHRlO3RoaXMuX2V4cGFuZChfLmxlbmd0aCt3KTt2YXIgaGU9MDtmb3Io''@;'; put 'put ''Sz0wO0s8Xy5sZW5ndGg7SysrKXt0ZT0oMHx0aGlzLndvcmRzW0srd10pK2hlO3ZhciBTZT0oMHxfLndvcmRzW0tdKSpwO2hlPSgodGUtPTY3MTA4ODYzJlNlKT4+MjYpLShTZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW0srd109NjcxMDg4NjMmdGV9Zm9yKDtLPHRoaXMubGVuZ3RoLXc7Sysr''@;'; put 'put ''KWhlPSh0ZT0oMHx0aGlzLndvcmRzW0srd10pK2hlKT4+MjYsdGhpcy53b3Jkc1tLK3ddPTY3MTA4ODYzJnRlO2lmKDA9PT1oZSlyZXR1cm4gdGhpcy5fc3RyaXAoKTtmb3IoRCgtMT09PWhlKSxoZT0wLEs9MDtLPHRoaXMubGVuZ3RoO0srKyloZT0odGU9LSgwfHRoaXMud29yZHNbS10pK2hl''@;'; put 'put ''KT4+MjYsdGhpcy53b3Jkc1tLXT02NzEwODg2MyZ0ZTtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX3N0cmlwKCl9LEUucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKF8scCl7dmFyIHcsSz10aGlzLmNsb25lKCksdGU9XyxjZT0wfHRlLndvcmRzW3RlLmxlbmd0aC0xXTswIT0odz0y''@;'; put 'put ''Ni10aGlzLl9jb3VudEJpdHMoY2UpKSYmKHRlPXRlLnVzaGxuKHcpLEsuaXVzaGxuKHcpLGNlPTB8dGUud29yZHNbdGUubGVuZ3RoLTFdKTt2YXIgaGUsU2U9Sy5sZW5ndGgtdGUubGVuZ3RoO2lmKCJtb2QiIT09cCl7KGhlPW5ldyBFKG51bGwpKS5sZW5ndGg9U2UrMSxoZS53b3Jkcz1uZXcg''@;'; put 'put ''QXJyYXkoaGUubGVuZ3RoKTtmb3IodmFyIExlPTA7TGU8aGUubGVuZ3RoO0xlKyspaGUud29yZHNbTGVdPTB9dmFyIEhlPUsuY2xvbmUoKS5faXNobG5zdWJtdWwodGUsMSxTZSk7MD09PUhlLm5lZ2F0aXZlJiYoSz1IZSxoZSYmKGhlLndvcmRzW1NlXT0xKSk7Zm9yKHZhciB4ZT1TZS0xO3hl''@;'; put 'put ''Pj0wO3hlLS0pe3ZhciBEZT02NzEwODg2NCooMHxLLndvcmRzW3RlLmxlbmd0aCt4ZV0pKygwfEsud29yZHNbdGUubGVuZ3RoK3hlLTFdKTtmb3IoRGU9TWF0aC5taW4oRGUvY2V8MCw2NzEwODg2MyksSy5faXNobG5zdWJtdWwodGUsRGUseGUpOzAhPT1LLm5lZ2F0aXZlOylEZS0tLEsubmVn''@;'; put 'put ''YXRpdmU9MCxLLl9pc2hsbnN1Ym11bCh0ZSwxLHhlKSxLLmlzWmVybygpfHwoSy5uZWdhdGl2ZV49MSk7aGUmJihoZS53b3Jkc1t4ZV09RGUpfXJldHVybiBoZSYmaGUuX3N0cmlwKCksSy5fc3RyaXAoKSwiZGl2IiE9PXAmJjAhPT13JiZLLml1c2hybih3KSx7ZGl2OmhlfHxudWxsLG1vZDpL''@;'; put 'put ''fX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKF8scCx3KXtyZXR1cm4gRCghXy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1fLm5lZ2F0aXZlPyhjZT10aGlzLm5lZygpLmRpdm1vZChfLHApLCJt''@;'; put 'put ''b2QiIT09cCYmKEs9Y2UuZGl2Lm5lZygpKSwiZGl2IiE9PXAmJih0ZT1jZS5tb2QubmVnKCksdyYmMCE9PXRlLm5lZ2F0aXZlJiZ0ZS5pYWRkKF8pKSx7ZGl2OkssbW9kOnRlfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1fLm5lZ2F0aXZlPyhjZT10aGlzLmRpdm1vZChfLm5lZygpLHApLCJt''@;'; put 'put ''b2QiIT09cCYmKEs9Y2UuZGl2Lm5lZygpKSx7ZGl2OkssbW9kOmNlLm1vZH0pOnRoaXMubmVnYXRpdmUmXy5uZWdhdGl2ZT8oY2U9dGhpcy5uZWcoKS5kaXZtb2QoXy5uZWcoKSxwKSwiZGl2IiE9PXAmJih0ZT1jZS5tb2QubmVnKCksdyYmMCE9PXRlLm5lZ2F0aXZlJiZ0ZS5pc3ViKF8pKSx7''@;'; put 'put ''ZGl2OmNlLmRpdixtb2Q6dGV9KTpfLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoXyk8MD97ZGl2Om5ldyBFKDApLG1vZDp0aGlzfToxPT09Xy5sZW5ndGg/ImRpdiI9PT1wP3tkaXY6dGhpcy5kaXZuKF8ud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PXA/e2RpdjpudWxsLG1vZDpu''@;'; put 'put ''ZXcgRSh0aGlzLm1vZHJuKF8ud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oXy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kcm4oXy53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KF8scCk7dmFyIEssdGUsY2V9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5k''@;'; put 'put ''aXZtb2QoXywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oXyl7cmV0dXJuIHRoaXMuZGl2bW9kKF8sIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5kaXZtb2QoXywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5k''@;'; put 'put ''aXZSb3VuZD1mdW5jdGlvbihfKXt2YXIgcD10aGlzLmRpdm1vZChfKTtpZihwLm1vZC5pc1plcm8oKSlyZXR1cm4gcC5kaXY7dmFyIHc9MCE9PXAuZGl2Lm5lZ2F0aXZlP3AubW9kLmlzdWIoXyk6cC5tb2QsSz1fLnVzaHJuKDEpLHRlPV8uYW5kbG4oMSksY2U9dy5jbXAoSyk7cmV0dXJuIGNl''@;'; put 'put ''PDB8fDE9PT10ZSYmMD09PWNlP3AuZGl2OjAhPT1wLmRpdi5uZWdhdGl2ZT9wLmRpdi5pc3VibigxKTpwLmRpdi5pYWRkbigxKX0sRS5wcm90b3R5cGUubW9kcm49ZnVuY3Rpb24oXyl7dmFyIHA9XzwwO3AmJihfPS1fKSxEKF88PTY3MTA4ODYzKTtmb3IodmFyIHc9NjcxMDg4NjQlXyxLPTAs''@;'; put 'put ''dGU9dGhpcy5sZW5ndGgtMTt0ZT49MDt0ZS0tKUs9KHcqSysoMHx0aGlzLndvcmRzW3RlXSkpJV87cmV0dXJuIHA/LUs6S30sRS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5tb2RybihfKX0sRS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oXyl7dmFyIHA9XzwwO3Am''@;'; put 'put ''JihfPS1fKSxEKF88PTY3MTA4ODYzKTtmb3IodmFyIHc9MCxLPXRoaXMubGVuZ3RoLTE7Sz49MDtLLS0pe3ZhciB0ZT0oMHx0aGlzLndvcmRzW0tdKSs2NzEwODg2NCp3O3RoaXMud29yZHNbS109dGUvX3wwLHc9dGUlX31yZXR1cm4gdGhpcy5fc3RyaXAoKSxwP3RoaXMuaW5lZygpOnRoaXN9''@;'; put 'put ''LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oXyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihfKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihfKXtEKDA9PT1fLm5lZ2F0aXZlKSxEKCFfLmlzWmVybygpKTt2YXIgcD10aGlzLHc9Xy5jbG9uZSgpO3A9MCE9PXAubmVnYXRpdmU/cC51''@;'; put 'put ''bW9kKF8pOnAuY2xvbmUoKTtmb3IodmFyIEs9bmV3IEUoMSksdGU9bmV3IEUoMCksY2U9bmV3IEUoMCksaGU9bmV3IEUoMSksU2U9MDtwLmlzRXZlbigpJiZ3LmlzRXZlbigpOylwLml1c2hybigxKSx3Lml1c2hybigxKSwrK1NlO2Zvcih2YXIgTGU9dy5jbG9uZSgpLEhlPXAuY2xvbmUoKTsh''@;'; put 'put ''cC5pc1plcm8oKTspe2Zvcih2YXIgeGU9MCxEZT0xOyEocC53b3Jkc1swXSZEZSkmJnhlPDI2OysreGUsRGU8PD0xKTtpZih4ZT4wKWZvcihwLml1c2hybih4ZSk7eGUtLSA+MDspKEsuaXNPZGQoKXx8dGUuaXNPZGQoKSkmJihLLmlhZGQoTGUpLHRlLmlzdWIoSGUpKSxLLml1c2hybigxKSx0''@;'; put 'put ''ZS5pdXNocm4oMSk7Zm9yKHZhciBCZT0wLEdlPTE7ISh3LndvcmRzWzBdJkdlKSYmQmU8MjY7KytCZSxHZTw8PTEpO2lmKEJlPjApZm9yKHcuaXVzaHJuKEJlKTtCZS0tID4wOykoY2UuaXNPZGQoKXx8aGUuaXNPZGQoKSkmJihjZS5pYWRkKExlKSxoZS5pc3ViKEhlKSksY2UuaXVzaHJuKDEp''@;'; put 'put ''LGhlLml1c2hybigxKTtwLmNtcCh3KT49MD8ocC5pc3ViKHcpLEsuaXN1YihjZSksdGUuaXN1YihoZSkpOih3LmlzdWIocCksY2UuaXN1YihLKSxoZS5pc3ViKHRlKSl9cmV0dXJue2E6Y2UsYjpoZSxnY2Q6dy5pdXNobG4oU2UpfX0sRS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKF8pe0Qo''@;'; put 'put ''MD09PV8ubmVnYXRpdmUpLEQoIV8uaXNaZXJvKCkpO3ZhciBwPXRoaXMsdz1fLmNsb25lKCk7cD0wIT09cC5uZWdhdGl2ZT9wLnVtb2QoXyk6cC5jbG9uZSgpO2Zvcih2YXIgSyx0ZT1uZXcgRSgxKSxjZT1uZXcgRSgwKSxoZT13LmNsb25lKCk7cC5jbXBuKDEpPjAmJncuY21wbigxKT4wOyl7''@;'; put 'put ''Zm9yKHZhciBTZT0wLExlPTE7IShwLndvcmRzWzBdJkxlKSYmU2U8MjY7KytTZSxMZTw8PTEpO2lmKFNlPjApZm9yKHAuaXVzaHJuKFNlKTtTZS0tID4wOyl0ZS5pc09kZCgpJiZ0ZS5pYWRkKGhlKSx0ZS5pdXNocm4oMSk7Zm9yKHZhciBIZT0wLHhlPTE7ISh3LndvcmRzWzBdJnhlKSYmSGU8''@;'; put 'put ''MjY7KytIZSx4ZTw8PTEpO2lmKEhlPjApZm9yKHcuaXVzaHJuKEhlKTtIZS0tID4wOyljZS5pc09kZCgpJiZjZS5pYWRkKGhlKSxjZS5pdXNocm4oMSk7cC5jbXAodyk+PTA/KHAuaXN1Yih3KSx0ZS5pc3ViKGNlKSk6KHcuaXN1YihwKSxjZS5pc3ViKHRlKSl9cmV0dXJuKEs9MD09PXAuY21w''@;'; put 'put ''bigxKT90ZTpjZSkuY21wbigwKTwwJiZLLmlhZGQoXyksS30sRS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKF8pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIF8uYWJzKCk7aWYoXy5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgcD10aGlzLmNsb25lKCksdz1fLmNsb25lKCk7cC5uZWdh''@;'; put 'put ''dGl2ZT0wLHcubmVnYXRpdmU9MDtmb3IodmFyIEs9MDtwLmlzRXZlbigpJiZ3LmlzRXZlbigpO0srKylwLml1c2hybigxKSx3Lml1c2hybigxKTtmb3IoOzspe2Zvcig7cC5pc0V2ZW4oKTspcC5pdXNocm4oMSk7Zm9yKDt3LmlzRXZlbigpOyl3Lml1c2hybigxKTt2YXIgdGU9cC5jbXAodyk7''@;'; put 'put ''aWYodGU8MCl7dmFyIGNlPXA7cD13LHc9Y2V9ZWxzZSBpZigwPT09dGV8fDA9PT13LmNtcG4oMSkpYnJlYWs7cC5pc3ViKHcpfXJldHVybiB3Lml1c2hsbihLKX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5lZ2NkKF8pLmEudW1vZChfKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''aXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLndvcmRzWzBdJl99LEUucHJvdG90eXBl''@;'; put 'put ''LmJpbmNuPWZ1bmN0aW9uKF8pe0QoIm51bWJlciI9PXR5cGVvZiBfKTt2YXIgcD1fJTI2LHc9KF8tcCkvMjYsSz0xPDxwO2lmKHRoaXMubGVuZ3RoPD13KXJldHVybiB0aGlzLl9leHBhbmQodysxKSx0aGlzLndvcmRzW3ddfD1LLHRoaXM7Zm9yKHZhciB0ZT1LLGNlPXc7MCE9PXRlJiZjZTx0''@;'; put 'put ''aGlzLmxlbmd0aDtjZSsrKXt2YXIgaGU9MHx0aGlzLndvcmRzW2NlXTt0ZT0oaGUrPXRlKT4+PjI2LHRoaXMud29yZHNbY2VdPWhlJj02NzEwODg2M31yZXR1cm4gMCE9PXRlJiYodGhpcy53b3Jkc1tjZV09dGUsdGhpcy5sZW5ndGgrKyksdGhpc30sRS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LEUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oXyl7dmFyIHAsdz1fPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiF3KXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZ3KXJldHVybiAxO2lmKHRoaXMu''@;'; put 'put ''X3N0cmlwKCksdGhpcy5sZW5ndGg+MSlwPTE7ZWxzZXt3JiYoXz0tXyksRChfPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgSz0wfHRoaXMud29yZHNbMF07cD1LPT09Xz8wOks8Xz8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1wOnB9LEUucHJvdG90eXBlLmNt''@;'; put 'put ''cD1mdW5jdGlvbihfKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PV8ubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1fLm5lZ2F0aXZlKXJldHVybiAxO3ZhciBwPXRoaXMudWNtcChfKTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtcDpwfSxFLnByb3Rv''@;'; put 'put ''dHlwZS51Y21wPWZ1bmN0aW9uKF8pe2lmKHRoaXMubGVuZ3RoPl8ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPF8ubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgcD0wLHc9dGhpcy5sZW5ndGgtMTt3Pj0wO3ctLSl7dmFyIEs9MHx0aGlzLndvcmRzW3ddLHRlPTB8Xy53b3Jkc1t3XTtp''@;'; put 'put ''ZihLIT09dGUpe0s8dGU/cD0tMTpLPnRlJiYocD0xKTticmVha319cmV0dXJuIHB9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihfKXtyZXR1cm4gMT09PXRoaXMuY21wbihfKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oXyl7cmV0dXJuIDE9PT10aGlzLmNtcChfKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''Z3Rlbj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5jbXBuKF8pPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oXyl7cmV0dXJuIHRoaXMuY21wKF8pPj0wfSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oXyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oXyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0''@;'; put 'put ''aW9uKF8pe3JldHVybi0xPT09dGhpcy5jbXAoXyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oXyl7cmV0dXJuIHRoaXMuY21wbihfKTw9MH0sRS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLmNtcChfKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKF8pe3Jl''@;'; put 'put ''dHVybiAwPT09dGhpcy5jbXBuKF8pfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihfKXtyZXR1cm4gMD09PXRoaXMuY21wKF8pfSxFLnJlZD1mdW5jdGlvbihfKXtyZXR1cm4gbmV3IEMoXyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKF8pe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFk''@;'; put 'put ''eSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEQoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksXy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKF8pfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5y''@;'; put 'put ''ZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLnJlZD1fLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVk''@;'; put 'put ''PWZ1bmN0aW9uKF8pe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKF8pfSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oXyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxfKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihfKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsXyl9LEUucHJvdG90eXBlLnJlZFN1''@;'; put 'put ''Yj1mdW5jdGlvbihfKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLF8pfSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKF8pe3JldHVybiBEKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxfKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKF8pe3JldHVybiBEKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsXyl9LEUucHJvdG90eXBlLnJlZE11''@;'; put 'put ''bD1mdW5jdGlvbihfKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsXyksdGhpcy5yZWQubXVsKHRoaXMsXyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oXyl7cmV0dXJuIEQodGhpcy5y''@;'; put 'put ''ZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLF8pLHRoaXMucmVkLmltdWwodGhpcyxfKX0sRS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlz''@;'; put 'put ''KSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5''@;'; put 'put ''cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBEKHRo''@;'; put 'put ''aXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oXyl7cmV0dXJuIEQodGhpcy5yZWQmJiFfLnJlZCwicmVkUG93KG5vcm1hbE51bSki''@;'; put 'put ''KSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxfKX07dmFyIFc9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBiKF8scCl7dGhpcy5uYW1lPV8sdGhpcy5wPW5ldyBFKHAsMTYpLHRoaXMubj10aGlzLnAuYml0TGVu''@;'; put 'put ''Z3RoKCksdGhpcy5rPW5ldyBFKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBBKCl7Yi5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIEYoKXtiLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gSCgpe2IuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBnKCl7Yi5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIEMoXyl7aWYoInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBfKXt2YXIgcD1FLl9wcmltZShfKTt0aGlzLm09cC5wLHRoaXMucHJpbWU9cH1lbHNlIEQoXy5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1fLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBrKF8pe0MuY2FsbCh0aGlzLF8pLHRoaXMuc2hp''@;'; put 'put ''ZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IEUoMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhp''@;'; put 'put ''cy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9Yi5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBfPW5ldyBFKG51''@;'; put 'put ''bGwpO3JldHVybiBfLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksX30sYi5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihfKXt2YXIgcCx3PV87ZG97dGhpcy5zcGxpdCh3LHRoaXMudG1wKSxwPSh3PSh3PXRoaXMuaW11bEsodykpLmlhZGQodGhpcy50bXApKS5iaXRM''@;'; put 'put ''ZW5ndGgoKX13aGlsZShwPnRoaXMubik7dmFyIEs9cDx0aGlzLm4/LTE6dy51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1LPyh3LndvcmRzWzBdPTAsdy5sZW5ndGg9MSk6Sz4wP3cuaXN1Yih0aGlzLnApOnZvaWQgMCE9PXcuc3RyaXA/dy5zdHJpcCgpOncuX3N0cmlwKCksd30sYi5wcm90b3R5''@;'; put 'put ''cGUuc3BsaXQ9ZnVuY3Rpb24oXyxwKXtfLml1c2hybih0aGlzLm4sMCxwKX0sYi5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oXyl7cmV0dXJuIF8uaW11bCh0aGlzLmspfSxUKEEsYiksQS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oXyxwKXtmb3IodmFyIHc9NDE5NDMwMyxLPU1hdGgubWlu''@;'; put 'put ''KF8ubGVuZ3RoLDkpLHRlPTA7dGU8Szt0ZSsrKXAud29yZHNbdGVdPV8ud29yZHNbdGVdO2lmKHAubGVuZ3RoPUssXy5sZW5ndGg8PTkpcmV0dXJuIF8ud29yZHNbMF09MCx2b2lkKF8ubGVuZ3RoPTEpO3ZhciBjZT1fLndvcmRzWzldO2ZvcihwLndvcmRzW3AubGVuZ3RoKytdPWNlJncsdGU9''@;'; put 'put ''MTA7dGU8Xy5sZW5ndGg7dGUrKyl7dmFyIGhlPTB8Xy53b3Jkc1t0ZV07Xy53b3Jkc1t0ZS0xMF09KGhlJncpPDw0fGNlPj4+MjIsY2U9aGV9Xy53b3Jkc1t0ZS0xMF09Y2U+Pj49MjIsXy5sZW5ndGgtPTA9PT1jZSYmXy5sZW5ndGg+MTA/MTA6OX0sQS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rp''@;'; put 'put ''b24oXyl7Xy53b3Jkc1tfLmxlbmd0aF09MCxfLndvcmRzW18ubGVuZ3RoKzFdPTAsXy5sZW5ndGgrPTI7Zm9yKHZhciBwPTAsdz0wO3c8Xy5sZW5ndGg7dysrKXt2YXIgSz0wfF8ud29yZHNbd107Xy53b3Jkc1t3XT02NzEwODg2MyYocCs9OTc3KkspLHA9NjQqSysocC82NzEwODg2NHwwKX1y''@;'; put 'put ''ZXR1cm4gMD09PV8ud29yZHNbXy5sZW5ndGgtMV0mJihfLmxlbmd0aC0tLDA9PT1fLndvcmRzW18ubGVuZ3RoLTFdJiZfLmxlbmd0aC0tKSxffSxUKEYsYiksVChILGIpLFQoZyxiKSxnLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihfKXtmb3IodmFyIHA9MCx3PTA7dzxfLmxlbmd0aDt3Kysp''@;'; put 'put ''e3ZhciBLPTE5KigwfF8ud29yZHNbd10pK3AsdGU9NjcxMDg4NjMmSztLPj4+PTI2LF8ud29yZHNbd109dGUscD1LfXJldHVybiAwIT09cCYmKF8ud29yZHNbXy5sZW5ndGgrK109cCksX30sRS5fcHJpbWU9ZnVuY3Rpb24oXyl7aWYoV1tfXSlyZXR1cm4gV1tfXTt2YXIgcDtpZigiazI1NiI9''@;'; put 'put ''PT1fKXA9bmV3IEE7ZWxzZSBpZigicDIyNCI9PT1fKXA9bmV3IEY7ZWxzZSBpZigicDE5MiI9PT1fKXA9bmV3IEg7ZWxzZXtpZigicDI1NTE5IiE9PV8pdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrXyk7cD1uZXcgZ31yZXR1cm4gV1tfXT1wLHB9LEMucHJvdG90eXBlLl92ZXJp''@;'; put 'put ''ZnkxPWZ1bmN0aW9uKF8pe0QoMD09PV8ubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRChfLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxDLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihfLHApe0QoIShfLm5lZ2F0aXZlfHAubmVn''@;'; put 'put ''YXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQoXy5yZWQmJl8ucmVkPT09cC5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sQy5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2Uo''@;'; put 'put ''XykuX2ZvcmNlUmVkKHRoaXMpOihZKF8sXy51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKSxfKX0sQy5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKF8pe3JldHVybiBfLmlzWmVybygpP18uY2xvbmUoKTp0aGlzLm0uc3ViKF8pLl9mb3JjZVJlZCh0aGlzKX0sQy5wcm90b3R5cGUuYWRkPWZ1''@;'; put 'put ''bmN0aW9uKF8scCl7dGhpcy5fdmVyaWZ5MihfLHApO3ZhciB3PV8uYWRkKHApO3JldHVybiB3LmNtcCh0aGlzLm0pPj0wJiZ3LmlzdWIodGhpcy5tKSx3Ll9mb3JjZVJlZCh0aGlzKX0sQy5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihfLHApe3RoaXMuX3ZlcmlmeTIoXyxwKTt2YXIgdz1fLmlh''@;'; put 'put ''ZGQocCk7cmV0dXJuIHcuY21wKHRoaXMubSk+PTAmJncuaXN1Yih0aGlzLm0pLHd9LEMucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihfLHApe3RoaXMuX3ZlcmlmeTIoXyxwKTt2YXIgdz1fLnN1YihwKTtyZXR1cm4gdy5jbXBuKDApPDAmJncuaWFkZCh0aGlzLm0pLHcuX2ZvcmNlUmVkKHRoaXMp''@;'; put 'put ''fSxDLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKF8scCl7dGhpcy5fdmVyaWZ5MihfLHApO3ZhciB3PV8uaXN1YihwKTtyZXR1cm4gdy5jbXBuKDApPDAmJncuaWFkZCh0aGlzLm0pLHd9LEMucHJvdG90eXBlLnNobD1mdW5jdGlvbihfLHApe3JldHVybiB0aGlzLl92ZXJpZnkxKF8pLHRoaXMu''@;'; put 'put ''aW1vZChfLnVzaGxuKHApKX0sQy5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihfLHApe3JldHVybiB0aGlzLl92ZXJpZnkyKF8scCksdGhpcy5pbW9kKF8uaW11bChwKSl9LEMucHJvdG90eXBlLm11bD1mdW5jdGlvbihfLHApe3JldHVybiB0aGlzLl92ZXJpZnkyKF8scCksdGhpcy5pbW9kKF8u''@;'; put 'put ''bXVsKHApKX0sQy5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5pbXVsKF8sXy5jbG9uZSgpKX0sQy5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKF8pe3JldHVybiB0aGlzLm11bChfLF8pfSxDLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKF8pe2lmKF8uaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIF8uY2xvbmUoKTt2YXIgcD10aGlzLm0uYW5kbG4oMyk7aWYoRChwJTI9PTEpLDM9PT1wKXt2YXIgdz10aGlzLm0uYWRkKG5ldyBFKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KF8sdyl9Zm9yKHZhciBLPXRoaXMubS5zdWJuKDEpLHRlPTA7IUsuaXNaZXJvKCkmJjA9PT1LLmFu''@;'; put 'put ''ZGxuKDEpOyl0ZSsrLEsuaXVzaHJuKDEpO0QoIUsuaXNaZXJvKCkpO3ZhciBjZT1uZXcgRSgxKS50b1JlZCh0aGlzKSxoZT1jZS5yZWROZWcoKSxTZT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksTGU9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihMZT1uZXcgRSgyKkxlKkxlKS50b1JlZCh0aGlz''@;'; put 'put ''KTswIT09dGhpcy5wb3coTGUsU2UpLmNtcChoZSk7KUxlLnJlZElBZGQoaGUpO2Zvcih2YXIgSGU9dGhpcy5wb3coTGUsSykseGU9dGhpcy5wb3coXyxLLmFkZG4oMSkuaXVzaHJuKDEpKSxEZT10aGlzLnBvdyhfLEspLEJlPXRlOzAhPT1EZS5jbXAoY2UpOyl7Zm9yKHZhciBHZT1EZSxVZT0w''@;'; put 'put ''OzAhPT1HZS5jbXAoY2UpO1VlKyspR2U9R2UucmVkU3FyKCk7RChVZTxCZSk7dmFyIHFlPXRoaXMucG93KEhlLG5ldyBFKDEpLml1c2hsbihCZS1VZS0xKSk7eGU9eGUucmVkTXVsKHFlKSxIZT1xZS5yZWRTcXIoKSxEZT1EZS5yZWRNdWwoSGUpLEJlPVVlfXJldHVybiB4ZX0sQy5wcm90b3R5''@;'; put 'put ''cGUuaW52bT1mdW5jdGlvbihfKXt2YXIgcD1fLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09cC5uZWdhdGl2ZT8ocC5uZWdhdGl2ZT0wLHRoaXMuaW1vZChwKS5yZWROZWcoKSk6dGhpcy5pbW9kKHApfSxDLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oXyxwKXtpZihwLmlzWmVybygpKXJldHVy''@;'; put 'put ''biBuZXcgRSgxKS50b1JlZCh0aGlzKTtpZigwPT09cC5jbXBuKDEpKXJldHVybiBfLmNsb25lKCk7dmFyIHc9bmV3IEFycmF5KDE2KTt3WzBdPW5ldyBFKDEpLnRvUmVkKHRoaXMpLHdbMV09Xztmb3IodmFyIEs9MjtLPHcubGVuZ3RoO0srKyl3W0tdPXRoaXMubXVsKHdbSy0xXSxfKTt2YXIg''@;'; put 'put ''dGU9d1swXSxjZT0wLGhlPTAsU2U9cC5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PVNlJiYoU2U9MjYpLEs9cC5sZW5ndGgtMTtLPj0wO0stLSl7Zm9yKHZhciBMZT1wLndvcmRzW0tdLEhlPVNlLTE7SGU+PTA7SGUtLSl7dmFyIHhlPUxlPj5IZSYxO3RlIT09d1swXSYmKHRlPXRoaXMuc3FyKHRl''@;'; put 'put ''KSksMCE9PXhlfHwwIT09Y2U/KGNlPDw9MSxjZXw9eGUsKDQ9PSsraGV8fDA9PT1LJiYwPT09SGUpJiYodGU9dGhpcy5tdWwodGUsd1tjZV0pLGhlPTAsY2U9MCkpOmhlPTB9U2U9MjZ9cmV0dXJuIHRlfSxDLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oXyl7dmFyIHA9Xy51bW9kKHRo''@;'; put 'put ''aXMubSk7cmV0dXJuIHA9PT1fP3AuY2xvbmUoKTpwfSxDLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihfKXt2YXIgcD1fLmNsb25lKCk7cmV0dXJuIHAucmVkPW51bGwscH0sRS5tb250PWZ1bmN0aW9uKF8pe3JldHVybiBuZXcgayhfKX0sVChrLEMpLGsucHJvdG90eXBlLmNvbnZl''@;'; put 'put ''cnRUbz1mdW5jdGlvbihfKXtyZXR1cm4gdGhpcy5pbW9kKF8udXNobG4odGhpcy5zaGlmdCkpfSxrLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihfKXt2YXIgcD10aGlzLmltb2QoXy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHAucmVkPW51bGwscH0say5wcm90b3R5cGUuaW11bD1m''@;'; put 'put ''dW5jdGlvbihfLHApe2lmKF8uaXNaZXJvKCl8fHAuaXNaZXJvKCkpcmV0dXJuIF8ud29yZHNbMF09MCxfLmxlbmd0aD0xLF87dmFyIHc9Xy5pbXVsKHApLEs9dy5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksdGU9dy5pc3Vi''@;'; put 'put ''KEspLml1c2hybih0aGlzLnNoaWZ0KSxjZT10ZTtyZXR1cm4gdGUuY21wKHRoaXMubSk+PTA/Y2U9dGUuaXN1Yih0aGlzLm0pOnRlLmNtcG4oMCk8MCYmKGNlPXRlLmlhZGQodGhpcy5tKSksY2UuX2ZvcmNlUmVkKHRoaXMpfSxrLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oXyxwKXtpZihfLmlz''@;'; put 'put ''WmVybygpfHxwLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHc9Xy5tdWwocCksSz13Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSx0ZT13LmlzdWIoSykuaXVzaHJuKHRoaXMuc2hpZnQp''@;'; put 'put ''LGNlPXRlO3JldHVybiB0ZS5jbXAodGhpcy5tKT49MD9jZT10ZS5pc3ViKHRoaXMubSk6dGUuY21wbigwKTwwJiYoY2U9dGUuaWFkZCh0aGlzLm0pKSxjZS5fZm9yY2VSZWQodGhpcyl9LGsucHJvdG90eXBlLmludm09ZnVuY3Rpb24oXyl7cmV0dXJuIHRoaXMuaW1vZChfLl9pbnZtcCh0aGlz''@;'; put 'put ''Lm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oTT1JLm5tZChNKSx0aGlzKX0sMzY0NDooTSxPLEkpPT57dmFyIGo9SSgxMDQ4KSxHPUkoNTYyMyk7TS5leHBvcnRzPWZ1bmN0aW9uKGllKXtyZXR1cm4gaWU/KCJ7fSI9PT1pZS5zdWJzdHIoMCwyKSYmKGllPSJcXHtcXH0iK2ll''@;'; put 'put ''LnN1YnN0cigyKSkscmUoKHVlPWllLHVlLnNwbGl0KCJcXFxcIikuam9pbihEKS5zcGxpdCgiXFx7Iikuam9pbihUKS5zcGxpdCgiXFx9Iikuam9pbihFKS5zcGxpdCgiXFwsIikuam9pbih6KS5zcGxpdCgiXFwuIikuam9pbihOKSksITApLm1hcChaKSk6W107dmFyIHVlfTt2YXIgRD0iXDBT''@;'; put 'put ''TEFTSCIrTWF0aC5yYW5kb20oKSsiXDAiLFQ9IlwwT1BFTiIrTWF0aC5yYW5kb20oKSsiXDAiLEU9IlwwQ0xPU0UiK01hdGgucmFuZG9tKCkrIlwwIix6PSJcMENPTU1BIitNYXRoLnJhbmRvbSgpKyJcMCIsTj0iXDBQRVJJT0QiK01hdGgucmFuZG9tKCkrIlwwIjtmdW5jdGlvbiBCKGllKXty''@;'; put 'put ''ZXR1cm4gcGFyc2VJbnQoaWUsMTApPT1pZT9wYXJzZUludChpZSwxMCk6aWUuY2hhckNvZGVBdCgwKX1mdW5jdGlvbiBaKGllKXtyZXR1cm4gaWUuc3BsaXQoRCkuam9pbigiXFwiKS5zcGxpdChUKS5qb2luKCJ7Iikuc3BsaXQoRSkuam9pbigifSIpLnNwbGl0KHopLmpvaW4oIiwiKS5zcGxp''@;'; put 'put ''dChOKS5qb2luKCIuIil9ZnVuY3Rpb24gWShpZSl7aWYoIWllKXJldHVyblsiIl07dmFyIHVlPVtdLGxlPUcoInsiLCJ9IixpZSk7aWYoIWxlKXJldHVybiBpZS5zcGxpdCgiLCIpO3ZhciBXPWxlLmJvZHksYj1sZS5wb3N0LEE9bGUucHJlLnNwbGl0KCIsIik7QVtBLmxlbmd0aC0xXSs9Insi''@;'; put 'put ''K1crIn0iO3ZhciBGPVkoYik7cmV0dXJuIGIubGVuZ3RoJiYoQVtBLmxlbmd0aC0xXSs9Ri5zaGlmdCgpLEEucHVzaC5hcHBseShBLEYpKSx1ZS5wdXNoLmFwcGx5KHVlLEEpLHVlfWZ1bmN0aW9uIFUoaWUpe3JldHVybiJ7IitpZSsifSJ9ZnVuY3Rpb24gcShpZSl7cmV0dXJuL14tPzBcZC8u''@;'; put 'put ''dGVzdChpZSl9ZnVuY3Rpb24gSihpZSx1ZSl7cmV0dXJuIGllPD11ZX1mdW5jdGlvbiBlZShpZSx1ZSl7cmV0dXJuIGllPj11ZX1mdW5jdGlvbiByZShpZSx1ZSl7dmFyIGxlPVtdLGFlPUcoInsiLCJ9IixpZSk7aWYoIWFlfHwvXCQkLy50ZXN0KGFlLnByZSkpcmV0dXJuW2llXTt2YXIgVyxi''@;'; put 'put ''PS9eLT9cZCtcLlwuLT9cZCsoPzpcLlwuLT9cZCspPyQvLnRlc3QoYWUuYm9keSksQT0vXlthLXpBLVpdXC5cLlthLXpBLVpdKD86XC5cLi0/XGQrKT8kLy50ZXN0KGFlLmJvZHkpLEY9Ynx8QSxIPWFlLmJvZHkuaW5kZXhPZigiLCIpPj0wO2lmKCFGJiYhSClyZXR1cm4gYWUucG9zdC5tYXRj''@;'; put 'put ''aCgvLC4qXH0vKT9yZShpZT1hZS5wcmUrInsiK2FlLmJvZHkrRSthZS5wb3N0KTpbaWVdO2lmKEYpVz1hZS5ib2R5LnNwbGl0KC9cLlwuLyk7ZWxzZSBpZigxPT09KFc9WShhZS5ib2R5KSkubGVuZ3RoJiYxPT09KFc9cmUoV1swXSwhMSkubWFwKFUpKS5sZW5ndGgpcmV0dXJuKGs9YWUucG9z''@;'; put 'put ''dC5sZW5ndGg/cmUoYWUucG9zdCwhMSk6WyIiXSkubWFwKGZ1bmN0aW9uKEdlKXtyZXR1cm4gYWUucHJlK1dbMF0rR2V9KTt2YXIgZyxDPWFlLnByZSxrPWFlLnBvc3QubGVuZ3RoP3JlKGFlLnBvc3QsITEpOlsiIl07aWYoRil7dmFyIF89QihXWzBdKSxwPUIoV1sxXSksdz1NYXRoLm1heChX''@;'; put 'put ''WzBdLmxlbmd0aCxXWzFdLmxlbmd0aCksSz0zPT1XLmxlbmd0aD9NYXRoLmFicyhCKFdbMl0pKToxLHRlPUo7cDxfJiYoSyo9LTEsdGU9ZWUpO3ZhciBjZT1XLnNvbWUocSk7Zz1bXTtmb3IodmFyIGhlPV87dGUoaGUscCk7aGUrPUspe3ZhciBTZTtpZihBKSJcXCI9PT0oU2U9U3RyaW5nLmZy''@;'; put 'put ''b21DaGFyQ29kZShoZSkpJiYoU2U9IiIpO2Vsc2UgaWYoU2U9U3RyaW5nKGhlKSxjZSl7dmFyIExlPXctU2UubGVuZ3RoO2lmKExlPjApe3ZhciBIZT1uZXcgQXJyYXkoTGUrMSkuam9pbigiMCIpO1NlPWhlPDA/Ii0iK0hlK1NlLnNsaWNlKDEpOkhlK1NlfX1nLnB1c2goU2UpfX1lbHNlIGc9''@;'; put 'put ''aihXLGZ1bmN0aW9uKEdlKXtyZXR1cm4gcmUoR2UsITEpfSk7Zm9yKHZhciB4ZT0wO3hlPGcubGVuZ3RoO3hlKyspZm9yKHZhciBEZT0wO0RlPGsubGVuZ3RoO0RlKyspe3ZhciBCZT1DK2dbeGVdK2tbRGVdOyghdWV8fEZ8fEJlKSYmbGUucHVzaChCZSl9cmV0dXJuIGxlfX0sOTkzMTooTSxP''@;'; put 'put ''LEkpPT57dmFyIGo7ZnVuY3Rpb24gRyhUKXt0aGlzLnJhbmQ9VH1pZihNLmV4cG9ydHM9ZnVuY3Rpb24oVCl7cmV0dXJuIGp8fChqPW5ldyBHKG51bGwpKSxqLmdlbmVyYXRlKFQpfSxNLmV4cG9ydHMuUmFuZD1HLEcucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlz''@;'; put 'put ''Ll9yYW5kKFQpfSxHLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihUKXtpZih0aGlzLnJhbmQuZ2V0Qnl0ZXMpcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhUKTtmb3IodmFyIEU9bmV3IFVpbnQ4QXJyYXkoVCksej0wO3o8RS5sZW5ndGg7eisrKUVbel09dGhpcy5yYW5kLmdldEJ5dGUoKTty''@;'; put 'put ''ZXR1cm4gRX0sIm9iamVjdCI9PXR5cGVvZiBzZWxmKXNlbGYuY3J5cHRvJiZzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXM/Ry5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oVCl7dmFyIEU9bmV3IFVpbnQ4QXJyYXkoVCk7cmV0dXJuIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhFKSxF''@;'; put 'put ''fTpzZWxmLm1zQ3J5cHRvJiZzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcz9HLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihUKXt2YXIgRT1uZXcgVWludDhBcnJheShUKTtyZXR1cm4gc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoRSksRX06Im9iamVjdCI9PXR5cGVvZiB3aW5k''@;'; put 'put ''b3cmJihHLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIHlldCIpfSk7ZWxzZSB0cnl7dmFyIEQ9SSg5MjE0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgRC5yYW5kb21CeXRlcyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQi''@;'; put 'put ''KTtHLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihUKXtyZXR1cm4gRC5yYW5kb21CeXRlcyhUKX19Y2F0Y2h7fX0sNDQ5NzooTSxPLEkpPT57dmFyIGo9SSg5NTA5KS5CdWZmZXI7ZnVuY3Rpb24gRyhCKXtqLmlzQnVmZmVyKEIpfHwoQj1qLmZyb20oQikpO2Zvcih2YXIgWj1CLmxlbmd0aC80''@;'; put 'put ''fDAsWT1uZXcgQXJyYXkoWiksVT0wO1U8WjtVKyspWVtVXT1CLnJlYWRVSW50MzJCRSg0KlUpO3JldHVybiBZfWZ1bmN0aW9uIEQoQil7Zm9yKDswPEIubGVuZ3RoO0IrKylCWzBdPTB9ZnVuY3Rpb24gVChCLFosWSxVLHEpe2Zvcih2YXIgSixlZSxyZSxpZSx1ZT1ZWzBdLGxlPVlbMV0sYWU9''@;'; put 'put ''WVsyXSxXPVlbM10sYj1CWzBdXlpbMF0sQT1CWzFdXlpbMV0sRj1CWzJdXlpbMl0sSD1CWzNdXlpbM10sZz00LEM9MTtDPHE7QysrKUo9dWVbYj4+PjI0XV5sZVtBPj4+MTYmMjU1XV5hZVtGPj4+OCYyNTVdXldbMjU1JkhdXlpbZysrXSxlZT11ZVtBPj4+MjRdXmxlW0Y+Pj4xNiYyNTVdXmFl''@;'; put 'put ''W0g+Pj44JjI1NV1eV1syNTUmYl1eWltnKytdLHJlPXVlW0Y+Pj4yNF1ebGVbSD4+PjE2JjI1NV1eYWVbYj4+PjgmMjU1XV5XWzI1NSZBXV5aW2crK10saWU9dWVbSD4+PjI0XV5sZVtiPj4+MTYmMjU1XV5hZVtBPj4+OCYyNTVdXldbMjU1JkZdXlpbZysrXSxiPUosQT1lZSxGPXJlLEg9aWU7''@;'; put 'put ''cmV0dXJuIEo9KFVbYj4+PjI0XTw8MjR8VVtBPj4+MTYmMjU1XTw8MTZ8VVtGPj4+OCYyNTVdPDw4fFVbMjU1JkhdKV5aW2crK10sZWU9KFVbQT4+PjI0XTw8MjR8VVtGPj4+MTYmMjU1XTw8MTZ8VVtIPj4+OCYyNTVdPDw4fFVbMjU1JmJdKV5aW2crK10scmU9KFVbRj4+PjI0XTw8MjR8VVtI''@;'; put 'put ''Pj4+MTYmMjU1XTw8MTZ8VVtiPj4+OCYyNTVdPDw4fFVbMjU1JkFdKV5aW2crK10saWU9KFVbSD4+PjI0XTw8MjR8VVtiPj4+MTYmMjU1XTw8MTZ8VVtBPj4+OCYyNTVdPDw4fFVbMjU1JkZdKV5aW2crK10sW0o+Pj49MCxlZT4+Pj0wLHJlPj4+PTAsaWU+Pj49MF19dmFyIEU9WzAsMSwyLDQs''@;'; put 'put ''OCwxNiwzMiw2NCwxMjgsMjcsNTRdLHo9ZnVuY3Rpb24oKXtmb3IodmFyIEI9bmV3IEFycmF5KDI1NiksWj0wO1o8MjU2O1orKylCW1pdPVo8MTI4P1o8PDE6Wjw8MV4yODM7Zm9yKHZhciBZPVtdLFU9W10scT1bW10sW10sW10sW11dLEo9W1tdLFtdLFtdLFtdXSxlZT0wLHJlPTAsaWU9MDtp''@;'; put 'put ''ZTwyNTY7KytpZSl7dmFyIHVlPXJlXnJlPDwxXnJlPDwyXnJlPDwzXnJlPDw0O1lbZWVdPXVlPXVlPj4+OF4yNTUmdWVeOTksVVt1ZV09ZWU7dmFyIGxlPUJbZWVdLGFlPUJbbGVdLFc9QlthZV0sYj0yNTcqQlt1ZV1eMTY4NDMwMDgqdWU7cVswXVtlZV09Yjw8MjR8Yj4+PjgscVsxXVtlZV09''@;'; put 'put ''Yjw8MTZ8Yj4+PjE2LHFbMl1bZWVdPWI8PDh8Yj4+PjI0LHFbM11bZWVdPWIsSlswXVt1ZV09KGI9MTY4NDMwMDkqV142NTUzNyphZV4yNTcqbGVeMTY4NDMwMDgqZWUpPDwyNHxiPj4+OCxKWzFdW3VlXT1iPDwxNnxiPj4+MTYsSlsyXVt1ZV09Yjw8OHxiPj4+MjQsSlszXVt1ZV09YiwwPT09''@;'; put 'put ''ZWU/ZWU9cmU9MTooZWU9bGVeQltCW0JbV15sZV1dXSxyZV49QltCW3JlXV0pfXJldHVybntTQk9YOlksSU5WX1NCT1g6VSxTVUJfTUlYOnEsSU5WX1NVQl9NSVg6Sn19KCk7ZnVuY3Rpb24gTihCKXt0aGlzLl9rZXk9RyhCKSx0aGlzLl9yZXNldCgpfU4uYmxvY2tTaXplPTE2LE4ua2V5U2l6''@;'; put 'put ''ZT0zMixOLnByb3RvdHlwZS5ibG9ja1NpemU9Ti5ibG9ja1NpemUsTi5wcm90b3R5cGUua2V5U2l6ZT1OLmtleVNpemUsTi5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciBCPXRoaXMuX2tleSxaPUIubGVuZ3RoLFk9Wis2LFU9NCooWSsxKSxxPVtdLEo9MDtKPFo7SisrKXFb''@;'; put 'put ''Sl09QltKXTtmb3IoSj1aO0o8VTtKKyspe3ZhciBlZT1xW0otMV07SiVaPT0wPyhlZT16LlNCT1hbKGVlPWVlPDw4fGVlPj4+MjQpPj4+MjRdPDwyNHx6LlNCT1hbZWU+Pj4xNiYyNTVdPDwxNnx6LlNCT1hbZWU+Pj44JjI1NV08PDh8ei5TQk9YWzI1NSZlZV0sZWVePUVbSi9afDBdPDwyNCk6''@;'; put 'put ''Wj42JiZKJVo9PTQmJihlZT16LlNCT1hbZWU+Pj4yNF08PDI0fHouU0JPWFtlZT4+PjE2JjI1NV08PDE2fHouU0JPWFtlZT4+PjgmMjU1XTw8OHx6LlNCT1hbMjU1JmVlXSkscVtKXT1xW0otWl1eZWV9Zm9yKHZhciByZT1bXSxpZT0wO2llPFU7aWUrKyl7dmFyIHVlPVUtaWUsbGU9cVt1ZS0o''@;'; put 'put ''aWUlND8wOjQpXTtyZVtpZV09aWU8NHx8dWU8PTQ/bGU6ei5JTlZfU1VCX01JWFswXVt6LlNCT1hbbGU+Pj4yNF1dXnouSU5WX1NVQl9NSVhbMV1bei5TQk9YW2xlPj4+MTYmMjU1XV1eei5JTlZfU1VCX01JWFsyXVt6LlNCT1hbbGU+Pj44JjI1NV1dXnouSU5WX1NVQl9NSVhbM11bei5TQk9Y''@;'; put 'put ''WzI1NSZsZV1dfXRoaXMuX25Sb3VuZHM9WSx0aGlzLl9rZXlTY2hlZHVsZT1xLHRoaXMuX2ludktleVNjaGVkdWxlPXJlfSxOLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24oQil7cmV0dXJuIFQoQj1HKEIpLHRoaXMuX2tleVNjaGVkdWxlLHouU1VCX01JWCx6LlNCT1gsdGhp''@;'; put 'put ''cy5fblJvdW5kcyl9LE4ucHJvdG90eXBlLmVuY3J5cHRCbG9jaz1mdW5jdGlvbihCKXt2YXIgWj10aGlzLmVuY3J5cHRCbG9ja1JhdyhCKSxZPWouYWxsb2NVbnNhZmUoMTYpO3JldHVybiBZLndyaXRlVUludDMyQkUoWlswXSwwKSxZLndyaXRlVUludDMyQkUoWlsxXSw0KSxZLndyaXRlVUlu''@;'; put 'put ''dDMyQkUoWlsyXSw4KSxZLndyaXRlVUludDMyQkUoWlszXSwxMiksWX0sTi5wcm90b3R5cGUuZGVjcnlwdEJsb2NrPWZ1bmN0aW9uKEIpe3ZhciBaPShCPUcoQikpWzFdO0JbMV09QlszXSxCWzNdPVo7dmFyIFk9VChCLHRoaXMuX2ludktleVNjaGVkdWxlLHouSU5WX1NVQl9NSVgsei5JTlZf''@;'; put 'put ''U0JPWCx0aGlzLl9uUm91bmRzKSxVPWouYWxsb2NVbnNhZmUoMTYpO3JldHVybiBVLndyaXRlVUludDMyQkUoWVswXSwwKSxVLndyaXRlVUludDMyQkUoWVszXSw0KSxVLndyaXRlVUludDMyQkUoWVsyXSw4KSxVLndyaXRlVUludDMyQkUoWVsxXSwxMiksVX0sTi5wcm90b3R5cGUuc2NydWI9''@;'; put 'put ''ZnVuY3Rpb24oKXtEKHRoaXMuX2tleVNjaGVkdWxlKSxEKHRoaXMuX2ludktleVNjaGVkdWxlKSxEKHRoaXMuX2tleSl9LE0uZXhwb3J0cy5BRVM9Tn0sNDg0ODooTSxPLEkpPT57dmFyIGo9SSg0NDk3KSxHPUkoOTUwOSkuQnVmZmVyLEQ9SSgxMDI3KSxUPUkoNTcxNyksRT1JKDMyODgpLHo9''@;'; put 'put ''SSg3Mjk1KSxOPUkoNjg1KTtmdW5jdGlvbiBCKFosWSxVLHEpe0QuY2FsbCh0aGlzKTt2YXIgSj1HLmFsbG9jKDQsMCk7dGhpcy5fY2lwaGVyPW5ldyBqLkFFUyhZKTt2YXIgZWU9dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayhKKTt0aGlzLl9naGFzaD1uZXcgRShlZSksVT1mdW5jdGlvbihy''@;'; put 'put ''ZSxpZSx1ZSl7aWYoMTI9PT1pZS5sZW5ndGgpcmV0dXJuIHJlLl9maW5JRD1HLmNvbmNhdChbaWUsRy5mcm9tKFswLDAsMCwxXSldKSxHLmNvbmNhdChbaWUsRy5mcm9tKFswLDAsMCwyXSldKTt2YXIgbGU9bmV3IEUodWUpLGFlPWllLmxlbmd0aCxXPWFlJTE2O2xlLnVwZGF0ZShpZSksVyYm''@;'; put 'put ''bGUudXBkYXRlKEcuYWxsb2MoVz0xNi1XLDApKSxsZS51cGRhdGUoRy5hbGxvYyg4LDApKTt2YXIgYj04KmFlLEE9Ry5hbGxvYyg4KTtBLndyaXRlVUludEJFKGIsMCw4KSxsZS51cGRhdGUoQSkscmUuX2ZpbklEPWxlLnN0YXRlO3ZhciBGPUcuZnJvbShyZS5fZmluSUQpO3JldHVybiBOKEYp''@;'; put 'put ''LEZ9KHRoaXMsVSxlZSksdGhpcy5fcHJldj1HLmZyb20oVSksdGhpcy5fY2FjaGU9Ry5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9zZWNDYWNoZT1HLmFsbG9jVW5zYWZlKDApLHRoaXMuX2RlY3J5cHQ9cSx0aGlzLl9hbGVuPTAsdGhpcy5fbGVuPTAsdGhpcy5fbW9kZT1aLHRoaXMuX2F1dGhUYWc9''@;'; put 'put ''bnVsbCx0aGlzLl9jYWxsZWQ9ITF9VChCLEQpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWil7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIFk9MTYtdGhpcy5fYWxlbiUxNjtZPDE2JiYoWT1HLmFsbG9jKFksMCksdGhpcy5fZ2hhc2gudXBkYXRlKFkpKX10aGlzLl9j''@;'; put 'put ''YWxsZWQ9ITA7dmFyIFU9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsWik7cmV0dXJuIHRoaXMuX2doYXNoLnVwZGF0ZSh0aGlzLl9kZWNyeXB0P1o6VSksdGhpcy5fbGVuKz1aLmxlbmd0aCxVfSxCLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5f''@;'; put 'put ''YXV0aFRhZyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3ZhciBaPXoodGhpcy5fZ2hhc2guZmluYWwoOCp0aGlzLl9hbGVuLDgqdGhpcy5fbGVuKSx0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklE''@;'; put 'put ''KSk7aWYodGhpcy5fZGVjcnlwdCYmZnVuY3Rpb24oWSxVKXt2YXIgcT0wO1kubGVuZ3RoIT09VS5sZW5ndGgmJnErKztmb3IodmFyIEo9TWF0aC5taW4oWS5sZW5ndGgsVS5sZW5ndGgpLGVlPTA7ZWU8SjsrK2VlKXErPVlbZWVdXlVbZWVdO3JldHVybiBxfShaLHRoaXMuX2F1dGhUYWcpKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhIik7dGhpcy5fYXV0aFRhZz1aLHRoaXMuX2NpcGhlci5zY3J1YigpfSxCLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdHx8IUcuaXNCdWZm''@;'; put 'put ''ZXIodGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3JldHVybiB0aGlzLl9hdXRoVGFnfSxCLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKFope2lmKCF0aGlzLl9kZWNyeXB0KXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9hdXRoVGFnPVp9LEIucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbihaKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBBQUQg''@;'; put 'put ''aW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9naGFzaC51cGRhdGUoWiksdGhpcy5fYWxlbis9Wi5sZW5ndGh9LE0uZXhwb3J0cz1CfSw0Njk2OihNLE8sSSk9Pnt2YXIgaj1JKDE0OTQpLEc9SSg2MTkzKSxEPUkoNDk0Nik7Ty5jcmVhdGVDaXBoZXI9Ty5DaXBoZXI9ai5jcmVhdGVDaXBo''@;'; put 'put ''ZXIsTy5jcmVhdGVDaXBoZXJpdj1PLkNpcGhlcml2PWouY3JlYXRlQ2lwaGVyaXYsTy5jcmVhdGVEZWNpcGhlcj1PLkRlY2lwaGVyPUcuY3JlYXRlRGVjaXBoZXIsTy5jcmVhdGVEZWNpcGhlcml2PU8uRGVjaXBoZXJpdj1HLmNyZWF0ZURlY2lwaGVyaXYsTy5saXN0Q2lwaGVycz1PLmdldENp''@;'; put 'put ''cGhlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoRCl9fSw2MTkzOihNLE8sSSk9Pnt2YXIgaj1JKDQ4NDgpLEc9SSg5NTA5KS5CdWZmZXIsRD1JKDQ1KSxUPUkoNTk2OSksRT1JKDEwMjcpLHo9SSg0NDk3KSxOPUkoMzA0OCk7ZnVuY3Rpb24gQihVLHEsSil7RS5jYWxsKHRoaXMp''@;'; put 'put ''LHRoaXMuX2NhY2hlPW5ldyBaLHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgei5BRVMocSksdGhpcy5fcHJldj1HLmZyb20oSiksdGhpcy5fbW9kZT1VLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIFooKXt0aGlzLmNhY2hlPUcuYWxsb2NVbnNhZmUoMCl9ZnVuY3Rp''@;'; put 'put ''b24gWShVLHEsSil7dmFyIGVlPURbVS50b0xvd2VyQ2FzZSgpXTtpZighZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiBKJiYoSj1HLmZyb20oSikpLCJHQ00iIT09ZWUubW9kZSYmSi5sZW5ndGghPT1lZS5pdil0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK0oubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIHEmJihxPUcuZnJvbShxKSkscS5sZW5ndGghPT1lZS5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGggIitxLmxlbmd0aCk7cmV0dXJuInN0cmVh''@;'; put 'put ''bSI9PT1lZS50eXBlP25ldyBUKGVlLm1vZHVsZSxxLEosITApOiJhdXRoIj09PWVlLnR5cGU/bmV3IGooZWUubW9kdWxlLHEsSiwhMCk6bmV3IEIoZWUubW9kdWxlLHEsSil9SSg1NzE3KShCLEUpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oVSl7dmFyIHEsSjt0aGlzLl9jYWNoZS5h''@;'; put 'put ''ZGQoVSk7Zm9yKHZhciBlZT1bXTtxPXRoaXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KUo9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMscSksZWUucHVzaChKKTtyZXR1cm4gRy5jb25jYXQoZWUpfSxCLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgVT10aGlzLl9jYWNo''@;'; put 'put ''ZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBmdW5jdGlvbihxKXt2YXIgSj1xWzE1XTtpZihKPDF8fEo+MTYpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7Zm9yKHZhciBlZT0tMTsrK2VlPEo7KWlmKHFbZWUrKDE2LUopXSE9PUopdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTYhPT1KKXJldHVybiBxLnNsaWNlKDAsMTYtSil9KHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLFUpKTtpZihVKXRocm93IG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEIucHJvdG90''@;'; put 'put ''eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIVUsdGhpc30sWi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKFUpe3RoaXMuY2FjaGU9Ry5jb25jYXQoW3RoaXMuY2FjaGUsVV0pfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oVSl7dmFyIHE7''@;'; put 'put ''aWYoVSl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTYpcmV0dXJuIHE9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHF9ZWxzZSBpZih0aGlzLmNhY2hlLmxlbmd0aD49MTYpcmV0dXJuIHE9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNh''@;'; put 'put ''Y2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHE7cmV0dXJuIG51bGx9LFoucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGV9LE8uY3JlYXRlRGVjaXBoZXI9ZnVuY3Rpb24oVSxxKXt2YXIgSj1EW1UudG9Mb3dlckNhc2UoKV07''@;'; put 'put ''aWYoIUopdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIGVlPU4ocSwhMSxKLmtleSxKLml2KTtyZXR1cm4gWShVLGVlLmtleSxlZS5pdil9LE8uY3JlYXRlRGVjaXBoZXJpdj1ZfSwxNDk0OihNLE8sSSk9Pnt2YXIgaj1JKDQ1KSxHPUkoNDg0OCksRD1JKDk1''@;'; put 'put ''MDkpLkJ1ZmZlcixUPUkoNTk2OSksRT1JKDEwMjcpLHo9SSg0NDk3KSxOPUkoMzA0OCk7ZnVuY3Rpb24gQihxLEosZWUpe0UuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgWSx0aGlzLl9jaXBoZXI9bmV3IHouQUVTKEopLHRoaXMuX3ByZXY9RC5mcm9tKGVlKSx0aGlzLl9tb2RlPXEsdGhp''@;'; put 'put ''cy5fYXV0b3BhZGRpbmc9ITB9SSg1NzE3KShCLEUpLEIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24ocSl7dmFyIEosZWU7dGhpcy5fY2FjaGUuYWRkKHEpO2Zvcih2YXIgcmU9W107Sj10aGlzLl9jYWNoZS5nZXQoKTspZWU9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsSikscmUucHVzaChl''@;'; put 'put ''ZSk7cmV0dXJuIEQuY29uY2F0KHJlKX07dmFyIFo9RC5hbGxvYygxNiwxNik7ZnVuY3Rpb24gWSgpe3RoaXMuY2FjaGU9RC5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBVKHEsSixlZSl7dmFyIHJlPWpbcS50b0xvd2VyQ2FzZSgpXTtpZighcmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxp''@;'; put 'put ''ZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PXR5cGVvZiBKJiYoSj1ELmZyb20oSikpLEoubGVuZ3RoIT09cmUua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrSi5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgZWUmJihlZT1ELmZyb20oZWUpKSwi''@;'; put 'put ''R0NNIiE9PXJlLm1vZGUmJmVlLmxlbmd0aCE9PXJlLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaXYgbGVuZ3RoICIrZWUubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PXJlLnR5cGU/bmV3IFQocmUubW9kdWxlLEosZWUpOiJhdXRoIj09PXJlLnR5cGU/bmV3IEcocmUubW9kdWxl''@;'; put 'put ''LEosZWUpOm5ldyBCKHJlLm1vZHVsZSxKLGVlKX1CLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBxPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHEpLHRoaXMuX2NpcGhlci5zY3J1YigpLHE7''@;'; put 'put ''aWYoIXEuZXF1YWxzKFopKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIXEsdGhpc30s''@;'; put 'put ''WS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHEpe3RoaXMuY2FjaGU9RC5jb25jYXQoW3RoaXMuY2FjaGUscV0pfSxZLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIHE9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10''@;'; put 'put ''aGlzLmNhY2hlLnNsaWNlKDE2KSxxfXJldHVybiBudWxsfSxZLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgcT0xNi10aGlzLmNhY2hlLmxlbmd0aCxKPUQuYWxsb2NVbnNhZmUocSksZWU9LTE7KytlZTxxOylKLndyaXRlVUludDgocSxlZSk7cmV0dXJuIEQuY29uY2F0KFt0''@;'; put 'put ''aGlzLmNhY2hlLEpdKX0sTy5jcmVhdGVDaXBoZXJpdj1VLE8uY3JlYXRlQ2lwaGVyPWZ1bmN0aW9uKHEsSil7dmFyIGVlPWpbcS50b0xvd2VyQ2FzZSgpXTtpZighZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIHJlPU4oSiwhMSxlZS5rZXksZWUuaXYp''@;'; put 'put ''O3JldHVybiBVKHEscmUua2V5LHJlLml2KX19LDMyODg6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9ai5hbGxvYygxNiwwKTtmdW5jdGlvbiBEKEUpe3ZhciB6PWouYWxsb2NVbnNhZmUoMTYpO3JldHVybiB6LndyaXRlVUludDMyQkUoRVswXT4+PjAsMCksei53cml0ZVVJbnQz''@;'; put 'put ''MkJFKEVbMV0+Pj4wLDQpLHoud3JpdGVVSW50MzJCRShFWzJdPj4+MCw4KSx6LndyaXRlVUludDMyQkUoRVszXT4+PjAsMTIpLHp9ZnVuY3Rpb24gVChFKXt0aGlzLmg9RSx0aGlzLnN0YXRlPWouYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1qLmFsbG9jVW5zYWZlKDApfVQucHJvdG90eXBlLmdo''@;'; put 'put ''YXNoPWZ1bmN0aW9uKEUpe2Zvcih2YXIgej0tMTsrK3o8RS5sZW5ndGg7KXRoaXMuc3RhdGVbel1ePUVbel07dGhpcy5fbXVsdGlwbHkoKX0sVC5wcm90b3R5cGUuX211bHRpcGx5PWZ1bmN0aW9uKCl7Zm9yKHZhciBFLHosTixCPVsoRT10aGlzLmgpLnJlYWRVSW50MzJCRSgwKSxFLnJlYWRV''@;'; put 'put ''SW50MzJCRSg0KSxFLnJlYWRVSW50MzJCRSg4KSxFLnJlYWRVSW50MzJCRSgxMildLFo9WzAsMCwwLDBdLFk9LTE7KytZPDEyODspe2Zvcih0aGlzLnN0YXRlW35+KFkvOCldJjE8PDctWSU4JiYoWlswXV49QlswXSxaWzFdXj1CWzFdLFpbMl1ePUJbMl0sWlszXV49QlszXSksTj0hISgxJkJb''@;'; put 'put ''M10pLHo9Mzt6PjA7ei0tKUJbel09Qlt6XT4+PjF8KDEmQlt6LTFdKTw8MzE7QlswXT1CWzBdPj4+MSxOJiYoQlswXT0tNTIwMDkzNjk2XkJbMF0pfXRoaXMuc3RhdGU9RChaKX0sVC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKEUpe3ZhciB6O2Zvcih0aGlzLmNhY2hlPWouY29uY2F0KFt0''@;'; put 'put ''aGlzLmNhY2hlLEVdKTt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KXo9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2goeil9LFQucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKEUseil7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3Ro''@;'; put 'put ''JiZ0aGlzLmdoYXNoKGouY29uY2F0KFt0aGlzLmNhY2hlLEddLDE2KSksdGhpcy5naGFzaChEKFswLEUsMCx6XSkpLHRoaXMuc3RhdGV9LE0uZXhwb3J0cz1UfSw2ODU6TT0+e00uZXhwb3J0cz1mdW5jdGlvbihPKXtmb3IodmFyIEksaj1PLmxlbmd0aDtqLS07KXtpZigyNTUhPT0oST1PLnJl''@;'; put 'put ''YWRVSW50OChqKSkpe0krKyxPLndyaXRlVUludDgoSSxqKTticmVha31PLndyaXRlVUludDgoMCxqKX19fSw1MjkyOihNLE8sSSk9Pnt2YXIgaj1JKDcyOTUpO08uZW5jcnlwdD1mdW5jdGlvbihHLEQpe3ZhciBUPWooRCxHLl9wcmV2KTtyZXR1cm4gRy5fcHJldj1HLl9jaXBoZXIuZW5jcnlw''@;'; put 'put ''dEJsb2NrKFQpLEcuX3ByZXZ9LE8uZGVjcnlwdD1mdW5jdGlvbihHLEQpe3ZhciBUPUcuX3ByZXY7Ry5fcHJldj1EO3ZhciBFPUcuX2NpcGhlci5kZWNyeXB0QmxvY2soRCk7cmV0dXJuIGooRSxUKX19LDYzMTE6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9SSg3Mjk1KTtmdW5j''@;'; put 'put ''dGlvbiBEKFQsRSx6KXt2YXIgTj1FLmxlbmd0aCxCPUcoRSxULl9jYWNoZSk7cmV0dXJuIFQuX2NhY2hlPVQuX2NhY2hlLnNsaWNlKE4pLFQuX3ByZXY9ai5jb25jYXQoW1QuX3ByZXYsej9FOkJdKSxCfU8uZW5jcnlwdD1mdW5jdGlvbihULEUseil7Zm9yKHZhciBOLEI9ai5hbGxvY1Vuc2Fm''@;'; put 'put ''ZSgwKTtFLmxlbmd0aDspe2lmKDA9PT1ULl9jYWNoZS5sZW5ndGgmJihULl9jYWNoZT1ULl9jaXBoZXIuZW5jcnlwdEJsb2NrKFQuX3ByZXYpLFQuX3ByZXY9ai5hbGxvY1Vuc2FmZSgwKSksIShULl9jYWNoZS5sZW5ndGg8PUUubGVuZ3RoKSl7Qj1qLmNvbmNhdChbQixEKFQsRSx6KV0pO2Jy''@;'; put 'put ''ZWFrfUI9ai5jb25jYXQoW0IsRChULEUuc2xpY2UoMCxOPVQuX2NhY2hlLmxlbmd0aCkseildKSxFPUUuc2xpY2UoTil9cmV0dXJuIEJ9fSwxNTEwOihNLE8sSSk9Pnt2YXIgaj1JKDk1MDkpLkJ1ZmZlcjtmdW5jdGlvbiBHKFQsRSx6KXtmb3IodmFyIE4sQixaPS0xLFk9MDsrK1o8ODspTj1F''@;'; put 'put ''JjE8PDctWj8xMjg6MCxZKz0oMTI4JihCPVQuX2NpcGhlci5lbmNyeXB0QmxvY2soVC5fcHJldilbMF1eTikpPj5aJTgsVC5fcHJldj1EKFQuX3ByZXYsej9OOkIpO3JldHVybiBZfWZ1bmN0aW9uIEQoVCxFKXt2YXIgej1ULmxlbmd0aCxOPS0xLEI9ai5hbGxvY1Vuc2FmZShULmxlbmd0aCk7''@;'; put 'put ''Zm9yKFQ9ai5jb25jYXQoW1Qsai5mcm9tKFtFXSldKTsrK048ejspQltOXT1UW05dPDwxfFRbTisxXT4+NztyZXR1cm4gQn1PLmVuY3J5cHQ9ZnVuY3Rpb24oVCxFLHope2Zvcih2YXIgTj1FLmxlbmd0aCxCPWouYWxsb2NVbnNhZmUoTiksWj0tMTsrK1o8TjspQltaXT1HKFQsRVtaXSx6KTty''@;'; put 'put ''ZXR1cm4gQn19LDE5NjQ6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIEcoRCxULEUpe3ZhciB6PUQuX2NpcGhlci5lbmNyeXB0QmxvY2soRC5fcHJldilbMF1eVDtyZXR1cm4gRC5fcHJldj1qLmNvbmNhdChbRC5fcHJldi5zbGljZSgxKSxqLmZyb20oW0U/VDp6XSld''@;'; put 'put ''KSx6fU8uZW5jcnlwdD1mdW5jdGlvbihELFQsRSl7Zm9yKHZhciB6PVQubGVuZ3RoLE49ai5hbGxvY1Vuc2FmZSh6KSxCPS0xOysrQjx6OylOW0JdPUcoRCxUW0JdLEUpO3JldHVybiBOfX0sNjAwOTooTSxPLEkpPT57dmFyIGo9SSg3Mjk1KSxHPUkoOTUwOSkuQnVmZmVyLEQ9SSg2ODUpO2Z1''@;'; put 'put ''bmN0aW9uIFQoRSl7dmFyIHo9RS5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhFLl9wcmV2KTtyZXR1cm4gRChFLl9wcmV2KSx6fU8uZW5jcnlwdD1mdW5jdGlvbihFLHope3ZhciBOPU1hdGguY2VpbCh6Lmxlbmd0aC8xNiksQj1FLl9jYWNoZS5sZW5ndGg7RS5fY2FjaGU9Ry5jb25jYXQoW0Uu''@;'; put 'put ''X2NhY2hlLEcuYWxsb2NVbnNhZmUoMTYqTildKTtmb3IodmFyIFo9MDtaPE47WisrKXt2YXIgWT1UKEUpLFU9QisxNipaO0UuX2NhY2hlLndyaXRlVUludDMyQkUoWVswXSxVKzApLEUuX2NhY2hlLndyaXRlVUludDMyQkUoWVsxXSxVKzQpLEUuX2NhY2hlLndyaXRlVUludDMyQkUoWVsyXSxV''@;'; put 'put ''KzgpLEUuX2NhY2hlLndyaXRlVUludDMyQkUoWVszXSxVKzEyKX12YXIgcT1FLl9jYWNoZS5zbGljZSgwLHoubGVuZ3RoKTtyZXR1cm4gRS5fY2FjaGU9RS5fY2FjaGUuc2xpY2Uoei5sZW5ndGgpLGooeixxKX19LDEwODQ6KE0sTyk9PntPLmVuY3J5cHQ9ZnVuY3Rpb24oSSxqKXtyZXR1cm4g''@;'; put 'put ''SS5fY2lwaGVyLmVuY3J5cHRCbG9jayhqKX0sTy5kZWNyeXB0PWZ1bmN0aW9uKEksail7cmV0dXJuIEkuX2NpcGhlci5kZWNyeXB0QmxvY2soail9fSw0NTooTSxPLEkpPT57dmFyIGo9e0VDQjpJKDEwODQpLENCQzpJKDUyOTIpLENGQjpJKDYzMTEpLENGQjg6SSgxOTY0KSxDRkIxOkkoMTUx''@;'; put 'put ''MCksT0ZCOkkoODg2MSksQ1RSOkkoNjAwOSksR0NNOkkoNjAwOSl9LEc9SSg0OTQ2KTtmb3IodmFyIEQgaW4gRylHW0RdLm1vZHVsZT1qW0dbRF0ubW9kZV07TS5leHBvcnRzPUd9LDg4NjE6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9SSg3Mjk1KTtmdW5jdGlvbiBEKFQpe3Jl''@;'; put 'put ''dHVybiBULl9wcmV2PVQuX2NpcGhlci5lbmNyeXB0QmxvY2soVC5fcHJldiksVC5fcHJldn1PLmVuY3J5cHQ9ZnVuY3Rpb24oVCxFKXtmb3IoO1QuX2NhY2hlLmxlbmd0aDxFLmxlbmd0aDspVC5fY2FjaGU9ai5jb25jYXQoW1QuX2NhY2hlLEQoVCldKTt2YXIgej1ULl9jYWNoZS5zbGljZSgw''@;'; put 'put ''LEUubGVuZ3RoKTtyZXR1cm4gVC5fY2FjaGU9VC5fY2FjaGUuc2xpY2UoRS5sZW5ndGgpLEcoRSx6KX19LDU5Njk6KE0sTyxJKT0+e3ZhciBqPUkoNDQ5NyksRz1JKDk1MDkpLkJ1ZmZlcixEPUkoMTAyNyk7ZnVuY3Rpb24gVChFLHosTixCKXtELmNhbGwodGhpcyksdGhpcy5fY2lwaGVyPW5l''@;'; put 'put ''dyBqLkFFUyh6KSx0aGlzLl9wcmV2PUcuZnJvbShOKSx0aGlzLl9jYWNoZT1HLmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPUcuYWxsb2NVbnNhZmUoMCksdGhpcy5fZGVjcnlwdD1CLHRoaXMuX21vZGU9RX1JKDU3MTcpKFQsRCksVC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihF''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsRSx0aGlzLl9kZWNyeXB0KX0sVC5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dGhpcy5fY2lwaGVyLnNjcnViKCl9LE0uZXhwb3J0cz1UfSwzNjE0OihNLE8sSSk9Pnt2YXIgaj1JKDc2NjcpLEc9SSg0Njk2KSxEPUkoNDUpLFQ9''@;'; put 'put ''SSg5NzE1KSxFPUkoMzA0OCk7ZnVuY3Rpb24geihCLFosWSl7aWYoQj1CLnRvTG93ZXJDYXNlKCksRFtCXSlyZXR1cm4gRy5jcmVhdGVDaXBoZXJpdihCLFosWSk7aWYoVFtCXSlyZXR1cm4gbmV3IGooe2tleTpaLGl2OlksbW9kZTpCfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBz''@;'; put 'put ''dWl0ZSB0eXBlIil9ZnVuY3Rpb24gTihCLFosWSl7aWYoQj1CLnRvTG93ZXJDYXNlKCksRFtCXSlyZXR1cm4gRy5jcmVhdGVEZWNpcGhlcml2KEIsWixZKTtpZihUW0JdKXJldHVybiBuZXcgaih7a2V5OlosaXY6WSxtb2RlOkIsZGVjcnlwdDohMH0pO3Rocm93IG5ldyBUeXBlRXJyb3IoImlu''@;'; put 'put ''dmFsaWQgc3VpdGUgdHlwZSIpfU8uY3JlYXRlQ2lwaGVyPU8uQ2lwaGVyPWZ1bmN0aW9uKEIsWil7dmFyIFksVTtpZihCPUIudG9Mb3dlckNhc2UoKSxEW0JdKVk9RFtCXS5rZXksVT1EW0JdLml2O2Vsc2V7aWYoIVRbQl0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBl''@;'; put 'put ''Iik7WT04KlRbQl0ua2V5LFU9VFtCXS5pdn12YXIgcT1FKFosITEsWSxVKTtyZXR1cm4geihCLHEua2V5LHEuaXYpfSxPLmNyZWF0ZUNpcGhlcml2PU8uQ2lwaGVyaXY9eixPLmNyZWF0ZURlY2lwaGVyPU8uRGVjaXBoZXI9ZnVuY3Rpb24oQixaKXt2YXIgWSxVO2lmKEI9Qi50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpLERbQl0pWT1EW0JdLmtleSxVPURbQl0uaXY7ZWxzZXtpZighVFtCXSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtZPTgqVFtCXS5rZXksVT1UW0JdLml2fXZhciBxPUUoWiwhMSxZLFUpO3JldHVybiBOKEIscS5rZXkscS5pdil9LE8uY3JlYXRlRGVjaXBo''@;'; put 'put ''ZXJpdj1PLkRlY2lwaGVyaXY9TixPLmxpc3RDaXBoZXJzPU8uZ2V0Q2lwaGVycz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhUKS5jb25jYXQoRy5nZXRDaXBoZXJzKCkpfX0sNzY2NzooTSxPLEkpPT57dmFyIGo9SSgxMDI3KSxHPUkoNTI1MSksRD1JKDU3MTcpLFQ9SSg5NTA5KS5C''@;'; put 'put ''dWZmZXIsRT17ImRlcy1lZGUzLWNiYyI6Ry5DQkMuaW5zdGFudGlhdGUoRy5FREUpLCJkZXMtZWRlMyI6Ry5FREUsImRlcy1lZGUtY2JjIjpHLkNCQy5pbnN0YW50aWF0ZShHLkVERSksImRlcy1lZGUiOkcuRURFLCJkZXMtY2JjIjpHLkNCQy5pbnN0YW50aWF0ZShHLkRFUyksImRlcy1lY2Ii''@;'; put 'put ''OkcuREVTfTtmdW5jdGlvbiB6KE4pe2ouY2FsbCh0aGlzKTt2YXIgQixaPU4ubW9kZS50b0xvd2VyQ2FzZSgpLFk9RVtaXTtCPU4uZGVjcnlwdD8iZGVjcnlwdCI6ImVuY3J5cHQiO3ZhciBVPU4ua2V5O1QuaXNCdWZmZXIoVSl8fChVPVQuZnJvbShVKSksImRlcy1lZGUiIT09WiYmImRlcy1l''@;'; put 'put ''ZGUtY2JjIiE9PVp8fChVPVQuY29uY2F0KFtVLFUuc2xpY2UoMCw4KV0pKTt2YXIgcT1OLml2O1QuaXNCdWZmZXIocSl8fChxPVQuZnJvbShxKSksdGhpcy5fZGVzPVkuY3JlYXRlKHtrZXk6VSxpdjpxLHR5cGU6Qn0pfUUuZGVzPUVbImRlcy1jYmMiXSxFLmRlczM9RVsiZGVzLWVkZTMtY2Jj''@;'; put 'put ''Il0sTS5leHBvcnRzPXosRCh6LGopLHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTil7cmV0dXJuIFQuZnJvbSh0aGlzLl9kZXMudXBkYXRlKE4pKX0sei5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIFQuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSw5NzE1OihNLE8p''@;'; put 'put ''PT57T1siZGVzLWVjYiJdPXtrZXk6OCxpdjowfSxPWyJkZXMtY2JjIl09Ty5kZXM9e2tleTo4LGl2Ojh9LE9bImRlcy1lZGUzLWNiYyJdPU8uZGVzMz17a2V5OjI0LGl2Ojh9LE9bImRlcy1lZGUzIl09e2tleToyNCxpdjowfSxPWyJkZXMtZWRlLWNiYyJdPXtrZXk6MTYsaXY6OH0sT1siZGVz''@;'; put 'put ''LWVkZSJdPXtrZXk6MTYsaXY6MH19LDM2NjM6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9SSgzNTUwKSxEPUkoMTc5OCk7ZnVuY3Rpb24gVCh6KXt2YXIgTixCPXoubW9kdWx1cy5ieXRlTGVuZ3RoKCk7ZG97Tj1uZXcgRyhEKEIpKX13aGlsZShOLmNtcCh6Lm1vZHVsdXMpPj0w''@;'; put 'put ''fHwhTi51bW9kKHoucHJpbWUxKXx8IU4udW1vZCh6LnByaW1lMikpO3JldHVybiBOfWZ1bmN0aW9uIEUoeixOKXt2YXIgYWUsVyxCPXtibGluZGVyOihXPVQoYWU9TikpLnRvUmVkKEcubW9udChhZS5tb2R1bHVzKSkucmVkUG93KG5ldyBHKGFlLnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgp''@;'; put 'put ''LHVuYmxpbmRlcjpXLmludm0oYWUubW9kdWx1cyl9LFo9Ti5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxZPW5ldyBHKHopLm11bChCLmJsaW5kZXIpLnVtb2QoTi5tb2R1bHVzKSxVPVkudG9SZWQoRy5tb250KE4ucHJpbWUxKSkscT1ZLnRvUmVkKEcubW9udChOLnByaW1lMikpLEo9Ti5jb2VmZmlj''@;'; put 'put ''aWVudCxlZT1OLnByaW1lMSxyZT1OLnByaW1lMixpZT1VLnJlZFBvdyhOLmV4cG9uZW50MSkuZnJvbVJlZCgpLHVlPXEucmVkUG93KE4uZXhwb25lbnQyKS5mcm9tUmVkKCksbGU9aWUuaXN1Yih1ZSkuaW11bChKKS51bW9kKGVlKS5pbXVsKHJlKTtyZXR1cm4gdWUuaWFkZChsZSkuaW11bChC''@;'; put 'put ''LnVuYmxpbmRlcikudW1vZChOLm1vZHVsdXMpLnRvQXJyYXlMaWtlKGosImJlIixaKX1FLmdldHI9VCxNLmV4cG9ydHM9RX0sNjA0MjooTSxPLEkpPT57TS5leHBvcnRzPUkoNTIwNyl9LDQ3NDM6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9SSgzNDgyKSxEPUkoODQ3MyksVD1J''@;'; put 'put ''KDU3MTcpLEU9SSgyOTU3KSx6PUkoNzc1MyksTj1JKDUyMDcpO2Z1bmN0aW9uIEIocSl7RC5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciBKPU5bcV07aWYoIUopdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaFR5cGU9Si5oYXNoLHRoaXMuX2hhc2g9''@;'; put 'put ''RyhKLmhhc2gpLHRoaXMuX3RhZz1KLmlkLHRoaXMuX3NpZ25UeXBlPUouc2lnbn1mdW5jdGlvbiBaKHEpe0QuV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIgSj1OW3FdO2lmKCFKKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2g9RyhKLmhhc2gpLHRo''@;'; put 'put ''aXMuX3RhZz1KLmlkLHRoaXMuX3NpZ25UeXBlPUouc2lnbn1mdW5jdGlvbiBZKHEpe3JldHVybiBuZXcgQihxKX1mdW5jdGlvbiBVKHEpe3JldHVybiBuZXcgWihxKX1PYmplY3Qua2V5cyhOKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe05bcV0uaWQ9ai5mcm9tKE5bcV0uaWQsImhleCIpLE5bcS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpXT1OW3FdfSksVChCLEQuV3JpdGFibGUpLEIucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihxLEosZWUpe3RoaXMuX2hhc2gudXBkYXRlKHEpLGVlKCl9LEIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihxLEope3JldHVybiJzdHJpbmciPT10eXBlb2YgcSYmKHE9ai5m''@;'; put 'put ''cm9tKHEsSikpLHRoaXMuX2hhc2gudXBkYXRlKHEpLHRoaXN9LEIucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24ocSxKKXt0aGlzLmVuZCgpO3ZhciBlZT10aGlzLl9oYXNoLmRpZ2VzdCgpLHJlPUUoZWUscSx0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpO3JldHVybiBK''@;'; put 'put ''P3JlLnRvU3RyaW5nKEopOnJlfSxUKFosRC5Xcml0YWJsZSksWi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHEsSixlZSl7dGhpcy5faGFzaC51cGRhdGUocSksZWUoKX0sWi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHEsSil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBxJiYocT1qLmZy''@;'; put 'put ''b20ocSxKKSksdGhpcy5faGFzaC51cGRhdGUocSksdGhpc30sWi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHEsSixlZSl7InN0cmluZyI9PXR5cGVvZiBKJiYoSj1qLmZyb20oSixlZSkpLHRoaXMuZW5kKCk7dmFyIHJlPXRoaXMuX2hhc2guZGlnZXN0KCk7cmV0dXJuIHooSixyZSxxLHRo''@;'; put 'put ''aXMuX3NpZ25UeXBlLHRoaXMuX3RhZyl9LE0uZXhwb3J0cz17U2lnbjpZLFZlcmlmeTpVLGNyZWF0ZVNpZ246WSxjcmVhdGVWZXJpZnk6VX19LDI5NTc6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9SSg4MzU1KSxEPUkoMzY2MyksVD1JKDY5NDgpLmVjLEU9SSgzNTUwKSx6PUko''@;'; put 'put ''OTgwKSxOPUkoMTMwOCk7ZnVuY3Rpb24gQihxLEosZWUscmUpe2lmKChxPWouZnJvbShxLnRvQXJyYXkoKSkpLmxlbmd0aDxKLmJ5dGVMZW5ndGgoKSl7dmFyIGllPWouYWxsb2MoSi5ieXRlTGVuZ3RoKCktcS5sZW5ndGgpO3E9ai5jb25jYXQoW2llLHFdKX12YXIgdWU9ZWUubGVuZ3RoLGxl''@;'; put 'put ''PWZ1bmN0aW9uKGIsQSl7Yj0oYj1aKGIsQSkpLm1vZChBKTt2YXIgRj1qLmZyb20oYi50b0FycmF5KCkpO2lmKEYubGVuZ3RoPEEuYnl0ZUxlbmd0aCgpKXt2YXIgSD1qLmFsbG9jKEEuYnl0ZUxlbmd0aCgpLUYubGVuZ3RoKTtGPWouY29uY2F0KFtILEZdKX1yZXR1cm4gRn0oZWUsSiksYWU9''@;'; put 'put ''ai5hbGxvYyh1ZSk7YWUuZmlsbCgxKTt2YXIgVz1qLmFsbG9jKHVlKTtyZXR1cm4gVz1HKHJlLFcpLnVwZGF0ZShhZSkudXBkYXRlKGouZnJvbShbMF0pKS51cGRhdGUocSkudXBkYXRlKGxlKS5kaWdlc3QoKSxhZT1HKHJlLFcpLnVwZGF0ZShhZSkuZGlnZXN0KCkse2s6Vz1HKHJlLFcpLnVw''@;'; put 'put ''ZGF0ZShhZSkudXBkYXRlKGouZnJvbShbMV0pKS51cGRhdGUocSkudXBkYXRlKGxlKS5kaWdlc3QoKSx2OmFlPUcocmUsVykudXBkYXRlKGFlKS5kaWdlc3QoKX19ZnVuY3Rpb24gWihxLEope3ZhciBlZT1uZXcgRShxKSxyZT0ocS5sZW5ndGg8PDMpLUouYml0TGVuZ3RoKCk7cmV0dXJuIHJl''@;'; put 'put ''PjAmJmVlLmlzaHJuKHJlKSxlZX1mdW5jdGlvbiBZKHEsSixlZSl7dmFyIHJlLGllO2Rve2ZvcihyZT1qLmFsbG9jKDApOzgqcmUubGVuZ3RoPHEuYml0TGVuZ3RoKCk7KUoudj1HKGVlLEouaykudXBkYXRlKEoudikuZGlnZXN0KCkscmU9ai5jb25jYXQoW3JlLEoudl0pO2llPVoocmUscSks''@;'; put 'put ''Si5rPUcoZWUsSi5rKS51cGRhdGUoSi52KS51cGRhdGUoai5mcm9tKFswXSkpLmRpZ2VzdCgpLEoudj1HKGVlLEouaykudXBkYXRlKEoudikuZGlnZXN0KCl9d2hpbGUoLTEhPT1pZS5jbXAocSkpO3JldHVybiBpZX1mdW5jdGlvbiBVKHEsSixlZSxyZSl7cmV0dXJuIHEudG9SZWQoRS5tb250''@;'; put 'put ''KGVlKSkucmVkUG93KEopLmZyb21SZWQoKS5tb2QocmUpfU0uZXhwb3J0cz1mdW5jdGlvbihxLEosZWUscmUsaWUpe3ZhciB1ZT16KEopO2lmKHVlLmN1cnZlKXtpZigiZWNkc2EiIT09cmUmJiJlY2RzYS9yc2EiIT09cmUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBl''@;'; put 'put ''Iik7cmV0dXJuIGZ1bmN0aW9uKGIsQSl7dmFyIEY9TltBLmN1cnZlLmpvaW4oIi4iKV07aWYoIUYpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGN1cnZlICIrQS5jdXJ2ZS5qb2luKCIuIikpO3ZhciBnPW5ldyBUKEYpLmtleUZyb21Qcml2YXRlKEEucHJpdmF0ZUtleSkuc2lnbihiKTtyZXR1''@;'; put 'put ''cm4gai5mcm9tKGcudG9ERVIoKSl9KHEsdWUpfWlmKCJkc2EiPT09dWUudHlwZSl7aWYoImRzYSIhPT1yZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oYixBLEYpe2Zvcih2YXIgSCxnPUEucGFyYW1zLnByaXZfa2V5LEM9QS5wYXJh''@;'; put 'put ''bXMucCxrPUEucGFyYW1zLnEsXz1BLnBhcmFtcy5nLHA9bmV3IEUoMCksdz1aKGIsaykubW9kKGspLEs9ITEsdGU9QihnLGssYixGKTshMT09PUs7KXA9VShfLEg9WShrLHRlLEYpLEMsayksMD09PShLPUguaW52bShrKS5pbXVsKHcuYWRkKGcubXVsKHApKSkubW9kKGspKS5jbXBuKDApJiYo''@;'; put 'put ''Sz0hMSxwPW5ldyBFKDApKTtyZXR1cm4gZnVuY3Rpb24oY2UsaGUpe2NlPWNlLnRvQXJyYXkoKSxoZT1oZS50b0FycmF5KCksMTI4JmNlWzBdJiYoY2U9WzBdLmNvbmNhdChjZSkpLDEyOCZoZVswXSYmKGhlPVswXS5jb25jYXQoaGUpKTt2YXIgTGU9WzQ4LGNlLmxlbmd0aCtoZS5sZW5ndGgr''@;'; put 'put ''NCwyLGNlLmxlbmd0aF07cmV0dXJuIExlPUxlLmNvbmNhdChjZSxbMixoZS5sZW5ndGhdLGhlKSxqLmZyb20oTGUpfShwLEspfShxLHVlLGVlKX1pZigicnNhIiE9PXJlJiYiZWNkc2EvcnNhIiE9PXJlKXRocm93IG5ldyBFcnJvcigid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZSIpO3E9ai5jb25j''@;'; put 'put ''YXQoW2llLHFdKTtmb3IodmFyIGxlPXVlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGFlPVswLDFdO3EubGVuZ3RoK2FlLmxlbmd0aCsxPGxlOylhZS5wdXNoKDI1NSk7YWUucHVzaCgwKTtmb3IodmFyIFc9LTE7KytXPHEubGVuZ3RoOylhZS5wdXNoKHFbV10pO3JldHVybiBEKGFlLHVlKX0sTS5l''@;'; put 'put ''eHBvcnRzLmdldEtleT1CLE0uZXhwb3J0cy5tYWtlS2V5PVl9LDc3NTM6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9SSgzNTUwKSxEPUkoNjk0OCkuZWMsVD1JKDk4MCksRT1JKDEzMDgpO2Z1bmN0aW9uIHooTixCKXtpZihOLmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKCJp''@;'; put 'put ''bnZhbGlkIHNpZyIpO2lmKE4uY21wKEIpPj1CKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKX1NLmV4cG9ydHM9ZnVuY3Rpb24oTixCLFosWSxVKXt2YXIgcT1UKFopO2lmKCJlYyI9PT1xLnR5cGUpe2lmKCJlY2RzYSIhPT1ZJiYiZWNkc2EvcnNhIiE9PVkpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oYWUsVyxiKXt2YXIgQT1FW2IuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigiLiIpXTtpZighQSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUgIitiLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKSk7''@;'; put 'put ''cmV0dXJuIG5ldyBEKEEpLnZlcmlmeShXLGFlLGIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhKX0oTixCLHEpfWlmKCJkc2EiPT09cS50eXBlKXtpZigiZHNhIiE9PVkpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwdWJsaWMga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24oYWUsVyxiKXt2''@;'; put 'put ''YXIgQT1iLmRhdGEucCxGPWIuZGF0YS5xLEg9Yi5kYXRhLmcsZz1iLmRhdGEucHViX2tleSxDPVQuc2lnbmF0dXJlLmRlY29kZShhZSwiZGVyIiksaz1DLnMsXz1DLnI7eihrLEYpLHooXyxGKTt2YXIgcD1HLm1vbnQoQSksdz1rLmludm0oRik7cmV0dXJuIDA9PT1ILnRvUmVkKHApLnJlZFBv''@;'; put 'put ''dyhuZXcgRyhXKS5tdWwodykubW9kKEYpKS5mcm9tUmVkKCkubXVsKGcudG9SZWQocCkucmVkUG93KF8ubXVsKHcpLm1vZChGKSkuZnJvbVJlZCgpKS5tb2QoQSkubW9kKEYpLmNtcChfKX0oTixCLHEpfWlmKCJyc2EiIT09WSYmImVjZHNhL3JzYSIhPT1ZKXRocm93IG5ldyBFcnJvcigid3Jv''@;'; put 'put ''bmcgcHVibGljIGtleSB0eXBlIik7Qj1qLmNvbmNhdChbVSxCXSk7Zm9yKHZhciBKPXEubW9kdWx1cy5ieXRlTGVuZ3RoKCksZWU9WzFdLHJlPTA7Qi5sZW5ndGgrZWUubGVuZ3RoKzI8SjspZWUucHVzaCgyNTUpLHJlKys7ZWUucHVzaCgwKTtmb3IodmFyIGllPS0xOysraWU8Qi5sZW5ndGg7''@;'; put 'put ''KWVlLnB1c2goQltpZV0pO2VlPWouZnJvbShlZSk7dmFyIHVlPUcubW9udChxLm1vZHVsdXMpO049KE49bmV3IEcoTikudG9SZWQodWUpKS5yZWRQb3cobmV3IEcocS5wdWJsaWNFeHBvbmVudCkpLE49ai5mcm9tKE4uZnJvbVJlZCgpLnRvQXJyYXkoKSk7dmFyIGxlPXJlPDg/MTowO2ZvcihK''@;'; put 'put ''PU1hdGgubWluKE4ubGVuZ3RoLGVlLmxlbmd0aCksTi5sZW5ndGghPT1lZS5sZW5ndGgmJihsZT0xKSxpZT0tMTsrK2llPEo7KWxlfD1OW2llXV5lZVtpZV07cmV0dXJuIDA9PT1sZX19LDcyOTU6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCkuQnVmZmVyO00uZXhwb3J0cz1mdW5jdGlvbihHLEQp''@;'; put 'put ''e2Zvcih2YXIgVD1NYXRoLm1pbihHLmxlbmd0aCxELmxlbmd0aCksRT1uZXcgaihUKSx6PTA7ejxUOysreilFW3pdPUdbel1eRFt6XTtyZXR1cm4gRX19LDg3NjQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDUxMDgpO2NvbnN0IEc9SSg5NzQyKSxEPUkoNjQ1KSxUPSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDtPLkJ1ZmZlcj1OLE8uU2xvd0J1ZmZlcj1mdW5jdGlvbihrZSl7cmV0dXJuK2tlIT1rZSYmKGtlPTApLE4uYWxsb2MoK2tl''@;'; put 'put ''KX0sTy5JTlNQRUNUX01BWF9CWVRFUz01MDtjb25zdCBFPTIxNDc0ODM2NDc7ZnVuY3Rpb24geihrZSl7aWYoa2U+RSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2tlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTtjb25zdCBBZT1uZXcgVWludDhBcnJheShr''@;'; put 'put ''ZSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihBZSxOLnByb3RvdHlwZSksQWV9ZnVuY3Rpb24gTihrZSxBZSxqZSl7aWYoIm51bWJlciI9PXR5cGVvZiBrZSl7aWYoInN0cmluZyI9PXR5cGVvZiBBZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVz''@;'; put 'put ''dCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gWShrZSl9cmV0dXJuIEIoa2UsQWUsamUpfWZ1bmN0aW9uIEIoa2UsQWUsamUpe2lmKCJzdHJpbmciPT10eXBlb2Yga2UpcmV0dXJuIGZ1bmN0aW9uKHh0LEZ0KXtpZigic3RyaW5nIj09dHlwZW9mIEZ0''@;'; put 'put ''JiYiIiE9PUZ0fHwoRnQ9InV0ZjgiKSwhTi5pc0VuY29kaW5nKEZ0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK0Z0KTtjb25zdCBPdD0wfGVlKHh0LEZ0KTtsZXQgS3Q9eihPdCk7Y29uc3QgYm49S3Qud3JpdGUoeHQsRnQpO3JldHVybiBibiE9PU90JiYoS3Q9''@;'; put 'put ''S3Quc2xpY2UoMCxibikpLEt0fShrZSxBZSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGtlKSlyZXR1cm4gZnVuY3Rpb24oeHQpe2lmKEllKHh0LFVpbnQ4QXJyYXkpKXtjb25zdCBGdD1uZXcgVWludDhBcnJheSh4dCk7cmV0dXJuIHEoRnQuYnVmZmVyLEZ0LmJ5dGVPZmZzZXQsRnQuYnl0ZUxl''@;'; put 'put ''bmd0aCl9cmV0dXJuIFUoeHQpfShrZSk7aWYobnVsbD09a2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5''@;'; put 'put ''cGUgIit0eXBlb2Yga2UpO2lmKEllKGtlLEFycmF5QnVmZmVyKXx8a2UmJkllKGtlLmJ1ZmZlcixBcnJheUJ1ZmZlcil8fHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcjwidSImJihJZShrZSxTaGFyZWRBcnJheUJ1ZmZlcil8fGtlJiZJZShrZS5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSly''@;'; put 'put ''ZXR1cm4gcShrZSxBZSxqZSk7aWYoIm51bWJlciI9PXR5cGVvZiBrZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtjb25zdCBpdD1rZS52YWx1ZU9mJiZrZS52YWx1ZU9m''@;'; put 'put ''KCk7aWYobnVsbCE9aXQmJml0IT09a2UpcmV0dXJuIE4uZnJvbShpdCxBZSxqZSk7Y29uc3Qgc3Q9ZnVuY3Rpb24oeHQpe2lmKE4uaXNCdWZmZXIoeHQpKXtjb25zdCBGdD0wfEooeHQubGVuZ3RoKSxPdD16KEZ0KTtyZXR1cm4gMD09PU90Lmxlbmd0aHx8eHQuY29weShPdCwwLDAsRnQpLE90''@;'; put 'put ''fXJldHVybiB2b2lkIDAhPT14dC5sZW5ndGg/Im51bWJlciIhPXR5cGVvZiB4dC5sZW5ndGh8fFhlKHh0Lmxlbmd0aCk/eigwKTpVKHh0KToiQnVmZmVyIj09PXh0LnR5cGUmJkFycmF5LmlzQXJyYXkoeHQuZGF0YSk/VSh4dC5kYXRhKTp2b2lkIDB9KGtlKTtpZihzdClyZXR1cm4gc3Q7aWYo''@;'; put 'put ''dHlwZW9mIFN5bWJvbDwidSImJm51bGwhPVN5bWJvbC50b1ByaW1pdGl2ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGtlW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIE4uZnJvbShrZVtTeW1ib2wudG9QcmltaXRpdmVdKCJzdHJpbmciKSxBZSxqZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhl''@;'; put 'put ''IGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2Yga2UpfWZ1bmN0aW9uIFooa2Upe2lmKCJudW1iZXIiIT10eXBlb2Yga2UpdGhyb3cg''@;'; put 'put ''bmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihrZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicra2UrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpfWZ1bmN0aW9uIFkoa2Upe3JldHVybiBaKGtlKSx6''@;'; put 'put ''KGtlPDA/MDowfEooa2UpKX1mdW5jdGlvbiBVKGtlKXtjb25zdCBBZT1rZS5sZW5ndGg8MD8wOjB8SihrZS5sZW5ndGgpLGplPXooQWUpO2ZvcihsZXQgaXQ9MDtpdDxBZTtpdCs9MSlqZVtpdF09MjU1JmtlW2l0XTtyZXR1cm4gamV9ZnVuY3Rpb24gcShrZSxBZSxqZSl7aWYoQWU8MHx8a2Uu''@;'; put 'put ''Ynl0ZUxlbmd0aDxBZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoa2UuYnl0ZUxlbmd0aDxBZSsoamV8fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTts''@;'; put 'put ''ZXQgaXQ7cmV0dXJuIGl0PXZvaWQgMD09PUFlJiZ2b2lkIDA9PT1qZT9uZXcgVWludDhBcnJheShrZSk6dm9pZCAwPT09amU/bmV3IFVpbnQ4QXJyYXkoa2UsQWUpOm5ldyBVaW50OEFycmF5KGtlLEFlLGplKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoaXQsTi5wcm90b3R5cGUpLGl0fWZ1bmN0''@;'; put 'put ''aW9uIEooa2Upe2lmKGtlPj1FKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitFLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8a2V9ZnVuY3Rpb24gZWUoa2UsQWUpe2lmKE4uaXNCdWZm''@;'; put 'put ''ZXIoa2UpKXJldHVybiBrZS5sZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGtlKXx8SWUoa2UsQXJyYXlCdWZmZXIpKXJldHVybiBrZS5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2Yga2UpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzdHJpbmciIGFyZ3VtZW50IG11c3QgYmUg''@;'; put 'put ''b25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGtlKTtjb25zdCBqZT1rZS5sZW5ndGgsaXQ9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighaXQmJjA9PT1qZSlyZXR1cm4gMDtsZXQgc3Q9ITE7''@;'; put 'put ''Zm9yKDs7KXN3aXRjaChBZSl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gamU7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gRmUoa2UpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0''@;'; put 'put ''dXJuIDIqamU7Y2FzZSJoZXgiOnJldHVybiBqZT4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiB3ZShrZSkubGVuZ3RoO2RlZmF1bHQ6aWYoc3QpcmV0dXJuIGl0Py0xOkZlKGtlKS5sZW5ndGg7QWU9KCIiK0FlKS50b0xvd2VyQ2FzZSgpLHN0PSEwfX1mdW5jdGlvbiByZShrZSxBZSxqZSl7bGV0''@;'; put 'put ''IGl0PSExO2lmKCh2b2lkIDA9PT1BZXx8QWU8MCkmJihBZT0wKSxBZT50aGlzLmxlbmd0aHx8KCh2b2lkIDA9PT1qZXx8amU+dGhpcy5sZW5ndGgpJiYoamU9dGhpcy5sZW5ndGgpLGplPD0wKXx8KGplPj4+PTApPD0oQWU+Pj49MCkpcmV0dXJuIiI7Zm9yKGtlfHwoa2U9InV0ZjgiKTs7KXN3''@;'; put 'put ''aXRjaChrZSl7Y2FzZSJoZXgiOnJldHVybiBwKHRoaXMsQWUsamUpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGcodGhpcyxBZSxqZSk7Y2FzZSJhc2NpaSI6cmV0dXJuIGsodGhpcyxBZSxqZSk7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gXyh0aGlzLEFlLGplKTtj''@;'; put 'put ''YXNlImJhc2U2NCI6cmV0dXJuIEgodGhpcyxBZSxqZSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsQWUsamUpO2RlZmF1bHQ6aWYoaXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitrZSk7''@;'; put 'put ''a2U9KGtlKyIiKS50b0xvd2VyQ2FzZSgpLGl0PSEwfX1mdW5jdGlvbiBpZShrZSxBZSxqZSl7Y29uc3QgaXQ9a2VbQWVdO2tlW0FlXT1rZVtqZV0sa2VbamVdPWl0fWZ1bmN0aW9uIHVlKGtlLEFlLGplLGl0LHN0KXtpZigwPT09a2UubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgamU/KGl0PWplLGplPTApOmplPjIxNDc0ODM2NDc/amU9MjE0NzQ4MzY0NzpqZTwtMjE0NzQ4MzY0OCYmKGplPS0yMTQ3NDgzNjQ4KSxYZShqZT0ramUpJiYoamU9c3Q/MDprZS5sZW5ndGgtMSksamU8MCYmKGplPWtlLmxlbmd0aCtqZSksamU+PWtlLmxlbmd0aCl7aWYoc3QpcmV0dXJu''@;'; put 'put ''LTE7amU9a2UubGVuZ3RoLTF9ZWxzZSBpZihqZTwwKXtpZighc3QpcmV0dXJuLTE7amU9MH1pZigic3RyaW5nIj09dHlwZW9mIEFlJiYoQWU9Ti5mcm9tKEFlLGl0KSksTi5pc0J1ZmZlcihBZSkpcmV0dXJuIDA9PT1BZS5sZW5ndGg/LTE6bGUoa2UsQWUsamUsaXQsc3QpO2lmKCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgQWUpcmV0dXJuIEFlJj0yNTUsImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/c3Q/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGtlLEFlLGplKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGtlLEFl''@;'; put 'put ''LGplKTpsZShrZSxbQWVdLGplLGl0LHN0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBsZShrZSxBZSxqZSxpdCxzdCl7bGV0IHh0LEZ0PTEsT3Q9a2UubGVuZ3RoLEt0PUFlLmxlbmd0aDtpZih2b2lkIDAhPT1p''@;'; put 'put ''dCYmKCJ1Y3MyIj09PShpdD1TdHJpbmcoaXQpLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09aXR8fCJ1dGYxNmxlIj09PWl0fHwidXRmLTE2bGUiPT09aXQpKXtpZihrZS5sZW5ndGg8Mnx8QWUubGVuZ3RoPDIpcmV0dXJuLTE7RnQ9MixPdC89MixLdC89MixqZS89Mn1mdW5jdGlvbiBibihC''@;'; put 'put ''dCx5bil7cmV0dXJuIDE9PT1GdD9CdFt5bl06QnQucmVhZFVJbnQxNkJFKHluKkZ0KX1pZihzdCl7bGV0IEJ0PS0xO2Zvcih4dD1qZTt4dDxPdDt4dCsrKWlmKGJuKGtlLHh0KT09PWJuKEFlLC0xPT09QnQ/MDp4dC1CdCkpe2lmKC0xPT09QnQmJihCdD14dCkseHQtQnQrMT09PUt0KXJldHVy''@;'; put 'put ''biBCdCpGdH1lbHNlLTEhPT1CdCYmKHh0LT14dC1CdCksQnQ9LTF9ZWxzZSBmb3IoamUrS3Q+T3QmJihqZT1PdC1LdCkseHQ9amU7eHQ+PTA7eHQtLSl7bGV0IEJ0PSEwO2ZvcihsZXQgeW49MDt5bjxLdDt5bisrKWlmKGJuKGtlLHh0K3luKSE9PWJuKEFlLHluKSl7QnQ9ITE7YnJlYWt9aWYo''@;'; put 'put ''QnQpcmV0dXJuIHh0fXJldHVybi0xfWZ1bmN0aW9uIGFlKGtlLEFlLGplLGl0KXtqZT1OdW1iZXIoamUpfHwwO2NvbnN0IHN0PWtlLmxlbmd0aC1qZTtpdD8oaXQ9TnVtYmVyKGl0KSk+c3QmJihpdD1zdCk6aXQ9c3Q7Y29uc3QgeHQ9QWUubGVuZ3RoO2xldCBGdDtmb3IoaXQ+eHQvMiYmKGl0''@;'; put 'put ''PXh0LzIpLEZ0PTA7RnQ8aXQ7KytGdCl7Y29uc3QgT3Q9cGFyc2VJbnQoQWUuc3Vic3RyKDIqRnQsMiksMTYpO2lmKFhlKE90KSlyZXR1cm4gRnQ7a2VbamUrRnRdPU90fXJldHVybiBGdH1mdW5jdGlvbiBXKGtlLEFlLGplLGl0KXtyZXR1cm4gRWUoRmUoQWUsa2UubGVuZ3RoLWplKSxrZSxq''@;'; put 'put ''ZSxpdCl9ZnVuY3Rpb24gYihrZSxBZSxqZSxpdCl7cmV0dXJuIEVlKGZ1bmN0aW9uKHN0KXtjb25zdCB4dD1bXTtmb3IobGV0IEZ0PTA7RnQ8c3QubGVuZ3RoOysrRnQpeHQucHVzaCgyNTUmc3QuY2hhckNvZGVBdChGdCkpO3JldHVybiB4dH0oQWUpLGtlLGplLGl0KX1mdW5jdGlvbiBBKGtl''@;'; put 'put ''LEFlLGplLGl0KXtyZXR1cm4gRWUod2UoQWUpLGtlLGplLGl0KX1mdW5jdGlvbiBGKGtlLEFlLGplLGl0KXtyZXR1cm4gRWUoZnVuY3Rpb24oc3QseHQpe2xldCBGdCxPdCxLdDtjb25zdCBibj1bXTtmb3IobGV0IEJ0PTA7QnQ8c3QubGVuZ3RoJiYhKCh4dC09Mik8MCk7KytCdClGdD1zdC5j''@;'; put 'put ''aGFyQ29kZUF0KEJ0KSxPdD1GdD4+OCxLdD1GdCUyNTYsYm4ucHVzaChLdCksYm4ucHVzaChPdCk7cmV0dXJuIGJufShBZSxrZS5sZW5ndGgtamUpLGtlLGplLGl0KX1mdW5jdGlvbiBIKGtlLEFlLGplKXtyZXR1cm4gRy5mcm9tQnl0ZUFycmF5KDA9PT1BZSYmamU9PT1rZS5sZW5ndGg/a2U6''@;'; put 'put ''a2Uuc2xpY2UoQWUsamUpKX1mdW5jdGlvbiBnKGtlLEFlLGplKXtqZT1NYXRoLm1pbihrZS5sZW5ndGgsamUpO2NvbnN0IGl0PVtdO2xldCBzdD1BZTtmb3IoO3N0PGplOyl7Y29uc3QgeHQ9a2Vbc3RdO2xldCBGdD1udWxsLE90PXh0PjIzOT80Onh0PjIyMz8zOnh0PjE5MT8yOjE7aWYoc3Qr''@;'; put 'put ''T3Q8PWplKXtsZXQgS3QsYm4sQnQseW47c3dpdGNoKE90KXtjYXNlIDE6eHQ8MTI4JiYoRnQ9eHQpO2JyZWFrO2Nhc2UgMjpLdD1rZVtzdCsxXSwxMjg9PSgxOTImS3QpJiYoeW49KDMxJnh0KTw8Nnw2MyZLdCx5bj4xMjcmJihGdD15bikpO2JyZWFrO2Nhc2UgMzpLdD1rZVtzdCsxXSxibj1r''@;'; put 'put ''ZVtzdCsyXSwxMjg9PSgxOTImS3QpJiYxMjg9PSgxOTImYm4pJiYoeW49KDE1Jnh0KTw8MTJ8KDYzJkt0KTw8Nnw2MyZibix5bj4yMDQ3JiYoeW48NTUyOTZ8fHluPjU3MzQzKSYmKEZ0PXluKSk7YnJlYWs7Y2FzZSA0Okt0PWtlW3N0KzFdLGJuPWtlW3N0KzJdLEJ0PWtlW3N0KzNdLDEyOD09''@;'; put 'put ''KDE5MiZLdCkmJjEyOD09KDE5MiZibikmJjEyOD09KDE5MiZCdCkmJih5bj0oMTUmeHQpPDwxOHwoNjMmS3QpPDwxMnwoNjMmYm4pPDw2fDYzJkJ0LHluPjY1NTM1JiZ5bjwxMTE0MTEyJiYoRnQ9eW4pKX19bnVsbD09PUZ0PyhGdD02NTUzMyxPdD0xKTpGdD42NTUzNSYmKEZ0LT02NTUzNixp''@;'; put 'put ''dC5wdXNoKEZ0Pj4+MTAmMTAyM3w1NTI5NiksRnQ9NTYzMjB8MTAyMyZGdCksaXQucHVzaChGdCksc3QrPU90fXJldHVybiBmdW5jdGlvbih4dCl7Y29uc3QgRnQ9eHQubGVuZ3RoO2lmKEZ0PD1DKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx4dCk7bGV0IE90PSIi''@;'; put 'put ''LEt0PTA7Zm9yKDtLdDxGdDspT3QrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHh0LnNsaWNlKEt0LEt0Kz1DKSk7cmV0dXJuIE90fShpdCl9Ty5rTWF4TGVuZ3RoPUUsKE4uVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXtjb25zdCBrZT1uZXcgVWludDhBcnJh''@;'; put 'put ''eSgxKSxBZT17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihBZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGtlLEFlKSw0Mj09PWtlLmZvbygpfWNhdGNoe3JldHVybiExfX0oKSl8fHZvaWQgMD09PWp8''@;'; put 'put ''fCJmdW5jdGlvbiIhPXR5cGVvZiBqLmVycm9yfHxqLmVycm9yKCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJy''@;'; put 'put ''b3dzZXIgc3VwcG9ydC4iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoTi5wcm90b3R5cGUsInBhcmVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoTi5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KE4ucHJvdG90eXBl''@;'; put 'put ''LCJvZmZzZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKE4uaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSxOLnBvb2xTaXplPTgxOTIsTi5mcm9tPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4gQihrZSxBZSxqZSl9LE9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZihOLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKE4sVWludDhBcnJheSksTi5hbGxvYz1mdW5jdGlvbihrZSxBZSxqZSl7cmV0dXJuIHN0PUFlLHh0PWplLFooaXQ9a2UpLGl0PD0wP3ooaXQpOnZvaWQgMCE9PXN0PyJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgeHQ/eihpdCkuZmlsbChzdCx4dCk6eihpdCkuZmlsbChzdCk6eihpdCk7dmFyIGl0LHN0LHh0fSxOLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGtlKXtyZXR1cm4gWShrZSl9LE4uYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGtlKXtyZXR1cm4gWShrZSl9LE4uaXNCdWZmZXI9ZnVuY3Rp''@;'; put 'put ''b24oa2Upe3JldHVybiBudWxsIT1rZSYmITA9PT1rZS5faXNCdWZmZXImJmtlIT09Ti5wcm90b3R5cGV9LE4uY29tcGFyZT1mdW5jdGlvbihrZSxBZSl7aWYoSWUoa2UsVWludDhBcnJheSkmJihrZT1OLmZyb20oa2Usa2Uub2Zmc2V0LGtlLmJ5dGVMZW5ndGgpKSxJZShBZSxVaW50OEFycmF5''@;'; put 'put ''KSYmKEFlPU4uZnJvbShBZSxBZS5vZmZzZXQsQWUuYnl0ZUxlbmd0aCkpLCFOLmlzQnVmZmVyKGtlKXx8IU4uaXNCdWZmZXIoQWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJh''@;'; put 'put ''eScpO2lmKGtlPT09QWUpcmV0dXJuIDA7bGV0IGplPWtlLmxlbmd0aCxpdD1BZS5sZW5ndGg7Zm9yKGxldCBzdD0wLHh0PU1hdGgubWluKGplLGl0KTtzdDx4dDsrK3N0KWlmKGtlW3N0XSE9PUFlW3N0XSl7amU9a2Vbc3RdLGl0PUFlW3N0XTticmVha31yZXR1cm4gamU8aXQ/LTE6aXQ8amU/''@;'; put 'put ''MTowfSxOLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oa2Upe3N3aXRjaChTdHJpbmcoa2UpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1''@;'; put 'put ''Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sTi5jb25jYXQ9ZnVuY3Rpb24oa2UsQWUpe2lmKCFBcnJheS5pc0FycmF5KGtlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBv''@;'; put 'put ''ZiBCdWZmZXJzJyk7aWYoMD09PWtlLmxlbmd0aClyZXR1cm4gTi5hbGxvYygwKTtsZXQgamU7aWYodm9pZCAwPT09QWUpZm9yKEFlPTAsamU9MDtqZTxrZS5sZW5ndGg7KytqZSlBZSs9a2VbamVdLmxlbmd0aDtjb25zdCBpdD1OLmFsbG9jVW5zYWZlKEFlKTtsZXQgc3Q9MDtmb3IoamU9MDtq''@;'; put 'put ''ZTxrZS5sZW5ndGg7KytqZSl7bGV0IHh0PWtlW2plXTtpZihJZSh4dCxVaW50OEFycmF5KSlzdCt4dC5sZW5ndGg+aXQubGVuZ3RoPyhOLmlzQnVmZmVyKHh0KXx8KHh0PU4uZnJvbSh4dCkpLHh0LmNvcHkoaXQsc3QpKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChpdCx4dCxzdCk7''@;'; put 'put ''ZWxzZXtpZighTi5pc0J1ZmZlcih4dCkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO3h0LmNvcHkoaXQsc3QpfXN0Kz14dC5sZW5ndGh9cmV0dXJuIGl0fSxOLmJ5dGVMZW5ndGg9ZWUsTi5wcm90b3R5cGUuX2lzQnVm''@;'; put 'put ''ZmVyPSEwLE4ucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IGtlPXRoaXMubGVuZ3RoO2lmKGtlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKGxldCBBZT0wO0FlPGtlO0FlKz0yKWllKHRo''@;'; put 'put ''aXMsQWUsQWUrMSk7cmV0dXJuIHRoaXN9LE4ucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe2NvbnN0IGtlPXRoaXMubGVuZ3RoO2lmKGtlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKGxldCBBZT0w''@;'; put 'put ''O0FlPGtlO0FlKz00KWllKHRoaXMsQWUsQWUrMyksaWUodGhpcyxBZSsxLEFlKzIpO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXtjb25zdCBrZT10aGlzLmxlbmd0aDtpZihrZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJl''@;'; put 'put ''IGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2ZvcihsZXQgQWU9MDtBZTxrZTtBZSs9OClpZSh0aGlzLEFlLEFlKzcpLGllKHRoaXMsQWUrMSxBZSs2KSxpZSh0aGlzLEFlKzIsQWUrNSksaWUodGhpcyxBZSszLEFlKzQpO3JldHVybiB0aGlzfSxOLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1O''@;'; put 'put ''LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2NvbnN0IGtlPXRoaXMubGVuZ3RoO3JldHVybiAwPT09a2U/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/Zyh0aGlzLDAsa2UpOnJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGtlKXtpZigh''@;'; put 'put ''Ti5pc0J1ZmZlcihrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09a2V8fDA9PT1OLmNvbXBhcmUodGhpcyxrZSl9LE4ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtsZXQga2U9IiI7Y29uc3QgQWU9Ty5JTlNQRUNU''@;'; put 'put ''X01BWF9CWVRFUztyZXR1cm4ga2U9dGhpcy50b1N0cmluZygiaGV4IiwwLEFlKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPkFlJiYoa2UrPSIgLi4uICIpLCI8QnVmZmVyICIra2UrIj4ifSxUJiYoTi5wcm90b3R5cGVbVF09Ti5wcm90b3R5cGUuaW5zcGVj''@;'; put 'put ''dCksTi5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihrZSxBZSxqZSxpdCxzdCl7aWYoSWUoa2UsVWludDhBcnJheSkmJihrZT1OLmZyb20oa2Usa2Uub2Zmc2V0LGtlLmJ5dGVMZW5ndGgpKSwhTi5pc0J1ZmZlcihrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ0YXJnZXQiIGFyZ3Vt''@;'; put 'put ''ZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2Yga2UpO2lmKHZvaWQgMD09PUFlJiYoQWU9MCksdm9pZCAwPT09amUmJihqZT1rZT9rZS5sZW5ndGg6MCksdm9pZCAwPT09aXQmJihpdD0wKSx2b2lkIDA9PT1zdCYmKHN0''@;'; put 'put ''PXRoaXMubGVuZ3RoKSxBZTwwfHxqZT5rZS5sZW5ndGh8fGl0PDB8fHN0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihpdD49c3QmJkFlPj1qZSlyZXR1cm4gMDtpZihpdD49c3QpcmV0dXJuLTE7aWYoQWU+PWplKXJldHVybiAxO2lm''@;'; put 'put ''KHRoaXM9PT1rZSlyZXR1cm4gMDtsZXQgeHQ9KHN0Pj4+PTApLShpdD4+Pj0wKSxGdD0oamU+Pj49MCktKEFlPj4+PTApO2NvbnN0IE90PU1hdGgubWluKHh0LEZ0KSxLdD10aGlzLnNsaWNlKGl0LHN0KSxibj1rZS5zbGljZShBZSxqZSk7Zm9yKGxldCBCdD0wO0J0PE90OysrQnQpaWYoS3Rb''@;'; put 'put ''QnRdIT09Ym5bQnRdKXt4dD1LdFtCdF0sRnQ9Ym5bQnRdO2JyZWFrfXJldHVybiB4dDxGdD8tMTpGdDx4dD8xOjB9LE4ucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihrZSxBZSxqZSl9LE4ucHJvdG90eXBlLmluZGV4T2Y9ZnVu''@;'; put 'put ''Y3Rpb24oa2UsQWUsamUpe3JldHVybiB1ZSh0aGlzLGtlLEFlLGplLCEwKX0sTi5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oa2UsQWUsamUpe3JldHVybiB1ZSh0aGlzLGtlLEFlLGplLCExKX0sTi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oa2UsQWUsamUsaXQpe2lmKHZvaWQg''@;'; put 'put ''MD09PUFlKWl0PSJ1dGY4IixqZT10aGlzLmxlbmd0aCxBZT0wO2Vsc2UgaWYodm9pZCAwPT09amUmJiJzdHJpbmciPT10eXBlb2YgQWUpaXQ9QWUsamU9dGhpcy5sZW5ndGgsQWU9MDtlbHNle2lmKCFpc0Zpbml0ZShBZSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBl''@;'; put 'put ''bmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO0FlPj4+PTAsaXNGaW5pdGUoamUpPyhqZT4+Pj0wLHZvaWQgMD09PWl0JiYoaXQ9InV0ZjgiKSk6KGl0PWplLGplPXZvaWQgMCl9Y29uc3Qgc3Q9dGhpcy5sZW5ndGgtQWU7aWYoKHZvaWQgMD09PWpl''@;'; put 'put ''fHxqZT5zdCkmJihqZT1zdCksa2UubGVuZ3RoPjAmJihqZTwwfHxBZTwwKXx8QWU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7aXR8fChpdD0idXRmOCIpO2xldCB4dD0hMTtmb3IoOzspc3dpdGNoKGl0''@;'; put 'put ''KXtjYXNlImhleCI6cmV0dXJuIGFlKHRoaXMsa2UsQWUsamUpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIFcodGhpcyxrZSxBZSxqZSk7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gYih0aGlzLGtlLEFlLGplKTtjYXNlImJhc2U2NCI6cmV0dXJu''@;'; put 'put ''IEEodGhpcyxrZSxBZSxqZSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBGKHRoaXMsa2UsQWUsamUpO2RlZmF1bHQ6aWYoeHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitpdCk7aXQ9KCIiK2l0KS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpLHh0PSEwfX0sTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtjb25zdCBDPTQwOTY7ZnVuY3Rpb24gayhrZSxBZSxqZSl7bGV0IGl0''@;'; put 'put ''PSIiO2plPU1hdGgubWluKGtlLmxlbmd0aCxqZSk7Zm9yKGxldCBzdD1BZTtzdDxqZTsrK3N0KWl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZrZVtzdF0pO3JldHVybiBpdH1mdW5jdGlvbiBfKGtlLEFlLGplKXtsZXQgaXQ9IiI7amU9TWF0aC5taW4oa2UubGVuZ3RoLGplKTtmb3IobGV0''@;'; put 'put ''IHN0PUFlO3N0PGplOysrc3QpaXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoa2Vbc3RdKTtyZXR1cm4gaXR9ZnVuY3Rpb24gcChrZSxBZSxqZSl7Y29uc3QgaXQ9a2UubGVuZ3RoOyghQWV8fEFlPDApJiYoQWU9MCksKCFqZXx8amU8MHx8amU+aXQpJiYoamU9aXQpO2xldCBzdD0iIjtmb3IobGV0''@;'; put 'put ''IHh0PUFlO3h0PGplOysreHQpc3QrPXR0W2tlW3h0XV07cmV0dXJuIHN0fWZ1bmN0aW9uIHcoa2UsQWUsamUpe2NvbnN0IGl0PWtlLnNsaWNlKEFlLGplKTtsZXQgc3Q9IiI7Zm9yKGxldCB4dD0wO3h0PGl0Lmxlbmd0aC0xO3h0Kz0yKXN0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGl0W3h0XSsy''@;'; put 'put ''NTYqaXRbeHQrMV0pO3JldHVybiBzdH1mdW5jdGlvbiBLKGtlLEFlLGplKXtpZihrZSUxIT0wfHxrZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihrZStBZT5qZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVm''@;'; put 'put ''ZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIHRlKGtlLEFlLGplLGl0LHN0LHh0KXtpZighTi5pc0J1ZmZlcihrZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKEFlPnN0fHxBZTx4dCl0aHJvdyBuZXcgUmFuZ2VFcnJv''@;'; put 'put ''cignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoamUraXQ+a2UubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBjZShrZSxBZSxqZSxpdCxzdCl7R2UoQWUsaXQsc3Qsa2UsamUsNyk7bGV0IHh0PU51bWJlcihB''@;'; put 'put ''ZSZCaWdJbnQoNDI5NDk2NzI5NSkpO2tlW2plKytdPXh0LHh0Pj49OCxrZVtqZSsrXT14dCx4dD4+PTgsa2VbamUrK109eHQseHQ+Pj04LGtlW2plKytdPXh0O2xldCBGdD1OdW1iZXIoQWU+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtyZXR1cm4ga2VbamUrK109RnQsRnQ+Pj04''@;'; put 'put ''LGtlW2plKytdPUZ0LEZ0Pj49OCxrZVtqZSsrXT1GdCxGdD4+PTgsa2VbamUrK109RnQsamV9ZnVuY3Rpb24gaGUoa2UsQWUsamUsaXQsc3Qpe0dlKEFlLGl0LHN0LGtlLGplLDcpO2xldCB4dD1OdW1iZXIoQWUmQmlnSW50KDQyOTQ5NjcyOTUpKTtrZVtqZSs3XT14dCx4dD4+PTgsa2VbamUr''@;'; put 'put ''Nl09eHQseHQ+Pj04LGtlW2plKzVdPXh0LHh0Pj49OCxrZVtqZSs0XT14dDtsZXQgRnQ9TnVtYmVyKEFlPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIGtlW2plKzNdPUZ0LEZ0Pj49OCxrZVtqZSsyXT1GdCxGdD4+PTgsa2VbamUrMV09RnQsRnQ+Pj04LGtlW2plXT1G''@;'; put 'put ''dCxqZSs4fWZ1bmN0aW9uIFNlKGtlLEFlLGplLGl0LHN0LHh0KXtpZihqZStpdD5rZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKGplPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIExlKGtl''@;'; put 'put ''LEFlLGplLGl0LHN0KXtyZXR1cm4gQWU9K0FlLGplPj4+PTAsc3R8fFNlKGtlLDAsamUsNCksRC53cml0ZShrZSxBZSxqZSxpdCwyMyw0KSxqZSs0fWZ1bmN0aW9uIEhlKGtlLEFlLGplLGl0LHN0KXtyZXR1cm4gQWU9K0FlLGplPj4+PTAsc3R8fFNlKGtlLDAsamUsOCksRC53cml0ZShrZSxB''@;'; put 'put ''ZSxqZSxpdCw1Miw4KSxqZSs4fU4ucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGtlLEFlKXtjb25zdCBqZT10aGlzLmxlbmd0aDsoa2U9fn5rZSk8MD8oa2UrPWplKTwwJiYoa2U9MCk6a2U+amUmJihrZT1qZSksKEFlPXZvaWQgMD09PUFlP2plOn5+QWUpPDA/KEFlKz1qZSk8MCYmKEFlPTAp''@;'; put 'put ''OkFlPmplJiYoQWU9amUpLEFlPGtlJiYoQWU9a2UpO2NvbnN0IGl0PXRoaXMuc3ViYXJyYXkoa2UsQWUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoaXQsTi5wcm90b3R5cGUpLGl0fSxOLnByb3RvdHlwZS5yZWFkVWludExFPU4ucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24o''@;'; put 'put ''a2UsQWUsamUpe2tlPj4+PTAsQWU+Pj49MCxqZXx8SyhrZSxBZSx0aGlzLmxlbmd0aCk7bGV0IGl0PXRoaXNba2VdLHN0PTEseHQ9MDtmb3IoOysreHQ8QWUmJihzdCo9MjU2KTspaXQrPXRoaXNba2UreHRdKnN0O3JldHVybiBpdH0sTi5wcm90b3R5cGUucmVhZFVpbnRCRT1OLnByb3RvdHlw''@;'; put 'put ''ZS5yZWFkVUludEJFPWZ1bmN0aW9uKGtlLEFlLGplKXtrZT4+Pj0wLEFlPj4+PTAsamV8fEsoa2UsQWUsdGhpcy5sZW5ndGgpO2xldCBpdD10aGlzW2tlKy0tQWVdLHN0PTE7Zm9yKDtBZT4wJiYoc3QqPTI1Nik7KWl0Kz10aGlzW2tlKy0tQWVdKnN0O3JldHVybiBpdH0sTi5wcm90b3R5cGUu''@;'; put 'put ''cmVhZFVpbnQ4PU4ucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihrZSxBZSl7cmV0dXJuIGtlPj4+PTAsQWV8fEsoa2UsMSx0aGlzLmxlbmd0aCksdGhpc1trZV19LE4ucHJvdG90eXBlLnJlYWRVaW50MTZMRT1OLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oa2UsQWUpe3Jl''@;'; put 'put ''dHVybiBrZT4+Pj0wLEFlfHxLKGtlLDIsdGhpcy5sZW5ndGgpLHRoaXNba2VdfHRoaXNba2UrMV08PDh9LE4ucHJvdG90eXBlLnJlYWRVaW50MTZCRT1OLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oa2UsQWUpe3JldHVybiBrZT4+Pj0wLEFlfHxLKGtlLDIsdGhpcy5sZW5ndGgp''@;'; put 'put ''LHRoaXNba2VdPDw4fHRoaXNba2UrMV19LE4ucHJvdG90eXBlLnJlYWRVaW50MzJMRT1OLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oa2UsQWUpe3JldHVybiBrZT4+Pj0wLEFlfHxLKGtlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2tlXXx0aGlzW2tlKzFdPDw4fHRoaXNba2UrMl08''@;'; put 'put ''PDE2KSsxNjc3NzIxNip0aGlzW2tlKzNdfSxOLnByb3RvdHlwZS5yZWFkVWludDMyQkU9Ti5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGtlLEFlKXtyZXR1cm4ga2U+Pj49MCxBZXx8SyhrZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2tlXSsodGhpc1trZSsxXTw8MTZ8''@;'; put 'put ''dGhpc1trZSsyXTw8OHx0aGlzW2tlKzNdKX0sTi5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NExFPVplKGZ1bmN0aW9uKGtlKXtVZShrZT4+Pj0wLCJvZmZzZXQiKTtjb25zdCBBZT10aGlzW2tlXSxqZT10aGlzW2tlKzddO3ZvaWQgMCE9PUFlJiZ2b2lkIDAhPT1qZXx8cWUoa2UsdGhpcy5sZW5n''@;'; put 'put ''dGgtOCk7Y29uc3QgaXQ9QWUrMjU2KnRoaXNbKytrZV0rNjU1MzYqdGhpc1srK2tlXSt0aGlzWysra2VdKjIqKjI0LHN0PXRoaXNbKytrZV0rMjU2KnRoaXNbKytrZV0rNjU1MzYqdGhpc1srK2tlXStqZSoyKioyNDtyZXR1cm4gQmlnSW50KGl0KSsoQmlnSW50KHN0KTw8QmlnSW50KDMyKSl9''@;'; put 'put ''KSxOLnByb3RvdHlwZS5yZWFkQmlnVUludDY0QkU9WmUoZnVuY3Rpb24oa2Upe1VlKGtlPj4+PTAsIm9mZnNldCIpO2NvbnN0IEFlPXRoaXNba2VdLGplPXRoaXNba2UrN107dm9pZCAwIT09QWUmJnZvaWQgMCE9PWplfHxxZShrZSx0aGlzLmxlbmd0aC04KTtjb25zdCBpdD1BZSoyKioyNCs2''@;'; put 'put ''NTUzNip0aGlzWysra2VdKzI1Nip0aGlzWysra2VdK3RoaXNbKytrZV0sc3Q9dGhpc1srK2tlXSoyKioyNCs2NTUzNip0aGlzWysra2VdKzI1Nip0aGlzWysra2VdK2plO3JldHVybihCaWdJbnQoaXQpPDxCaWdJbnQoMzIpKStCaWdJbnQoc3QpfSksTi5wcm90b3R5cGUucmVhZEludExFPWZ1''@;'; put 'put ''bmN0aW9uKGtlLEFlLGplKXtrZT4+Pj0wLEFlPj4+PTAsamV8fEsoa2UsQWUsdGhpcy5sZW5ndGgpO2xldCBpdD10aGlzW2tlXSxzdD0xLHh0PTA7Zm9yKDsrK3h0PEFlJiYoc3QqPTI1Nik7KWl0Kz10aGlzW2tlK3h0XSpzdDtyZXR1cm4gc3QqPTEyOCxpdD49c3QmJihpdC09TWF0aC5wb3co''@;'; put 'put ''Miw4KkFlKSksaXR9LE4ucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihrZSxBZSxqZSl7a2U+Pj49MCxBZT4+Pj0wLGplfHxLKGtlLEFlLHRoaXMubGVuZ3RoKTtsZXQgaXQ9QWUsc3Q9MSx4dD10aGlzW2tlKy0taXRdO2Zvcig7aXQ+MCYmKHN0Kj0yNTYpOyl4dCs9dGhpc1trZSstLWl0''@;'; put 'put ''XSpzdDtyZXR1cm4gc3QqPTEyOCx4dD49c3QmJih4dC09TWF0aC5wb3coMiw4KkFlKSkseHR9LE4ucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGtlLEFlKXtyZXR1cm4ga2U+Pj49MCxBZXx8SyhrZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1trZV0/LTEqKDI1NS10aGlzW2tlXSsxKTp0''@;'; put 'put ''aGlzW2tlXX0sTi5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oa2UsQWUpe2tlPj4+PTAsQWV8fEsoa2UsMix0aGlzLmxlbmd0aCk7Y29uc3QgamU9dGhpc1trZV18dGhpc1trZSsxXTw8ODtyZXR1cm4gMzI3NjgmamU/NDI5NDkwMTc2MHxqZTpqZX0sTi5wcm90b3R5cGUucmVhZElu''@;'; put 'put ''dDE2QkU9ZnVuY3Rpb24oa2UsQWUpe2tlPj4+PTAsQWV8fEsoa2UsMix0aGlzLmxlbmd0aCk7Y29uc3QgamU9dGhpc1trZSsxXXx0aGlzW2tlXTw8ODtyZXR1cm4gMzI3NjgmamU/NDI5NDkwMTc2MHxqZTpqZX0sTi5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oa2UsQWUpe3JldHVy''@;'; put 'put ''biBrZT4+Pj0wLEFlfHxLKGtlLDQsdGhpcy5sZW5ndGgpLHRoaXNba2VdfHRoaXNba2UrMV08PDh8dGhpc1trZSsyXTw8MTZ8dGhpc1trZSszXTw8MjR9LE4ucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGtlLEFlKXtyZXR1cm4ga2U+Pj49MCxBZXx8SyhrZSw0LHRoaXMubGVuZ3Ro''@;'; put 'put ''KSx0aGlzW2tlXTw8MjR8dGhpc1trZSsxXTw8MTZ8dGhpc1trZSsyXTw8OHx0aGlzW2tlKzNdfSxOLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRT1aZShmdW5jdGlvbihrZSl7VWUoa2U+Pj49MCwib2Zmc2V0Iik7Y29uc3QgQWU9dGhpc1trZV0samU9dGhpc1trZSs3XTtyZXR1cm4gdm9pZCAw''@;'; put 'put ''IT09QWUmJnZvaWQgMCE9PWplfHxxZShrZSx0aGlzLmxlbmd0aC04KSwoQmlnSW50KHRoaXNba2UrNF0rMjU2KnRoaXNba2UrNV0rNjU1MzYqdGhpc1trZSs2XSsoamU8PDI0KSk8PEJpZ0ludCgzMikpK0JpZ0ludChBZSsyNTYqdGhpc1srK2tlXSs2NTUzNip0aGlzWysra2VdKzE2Nzc3MjE2''@;'; put 'put ''KnRoaXNbKytrZV0pfSksTi5wcm90b3R5cGUucmVhZEJpZ0ludDY0QkU9WmUoZnVuY3Rpb24oa2Upe1VlKGtlPj4+PTAsIm9mZnNldCIpO2NvbnN0IEFlPXRoaXNba2VdLGplPXRoaXNba2UrN107dm9pZCAwIT09QWUmJnZvaWQgMCE9PWplfHxxZShrZSx0aGlzLmxlbmd0aC04KTtjb25zdCBp''@;'; put 'put ''dD0oQWU8PDI0KSs2NTUzNip0aGlzWysra2VdKzI1Nip0aGlzWysra2VdK3RoaXNbKytrZV07cmV0dXJuKEJpZ0ludChpdCk8PEJpZ0ludCgzMikpK0JpZ0ludCgxNjc3NzIxNip0aGlzWysra2VdKzY1NTM2KnRoaXNbKytrZV0rMjU2KnRoaXNbKytrZV0ramUpfSksTi5wcm90b3R5cGUucmVh''@;'; put 'put ''ZEZsb2F0TEU9ZnVuY3Rpb24oa2UsQWUpe3JldHVybiBrZT4+Pj0wLEFlfHxLKGtlLDQsdGhpcy5sZW5ndGgpLEQucmVhZCh0aGlzLGtlLCEwLDIzLDQpfSxOLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihrZSxBZSl7cmV0dXJuIGtlPj4+PTAsQWV8fEsoa2UsNCx0aGlzLmxlbmd0''@;'; put 'put ''aCksRC5yZWFkKHRoaXMsa2UsITEsMjMsNCl9LE4ucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihrZSxBZSl7cmV0dXJuIGtlPj4+PTAsQWV8fEsoa2UsOCx0aGlzLmxlbmd0aCksRC5yZWFkKHRoaXMsa2UsITAsNTIsOCl9LE4ucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlv''@;'; put 'put ''bihrZSxBZSl7cmV0dXJuIGtlPj4+PTAsQWV8fEsoa2UsOCx0aGlzLmxlbmd0aCksRC5yZWFkKHRoaXMsa2UsITEsNTIsOCl9LE4ucHJvdG90eXBlLndyaXRlVWludExFPU4ucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGtlLEFlLGplLGl0KXtrZT0ra2UsQWU+Pj49MCxqZT4+Pj0w''@;'; put 'put ''LCFpdCYmdGUodGhpcyxrZSxBZSxqZSxNYXRoLnBvdygyLDgqamUpLTEsMCk7bGV0IHN0PTEseHQ9MDtmb3IodGhpc1tBZV09MjU1JmtlOysreHQ8amUmJihzdCo9MjU2KTspdGhpc1tBZSt4dF09a2Uvc3QmMjU1O3JldHVybiBBZStqZX0sTi5wcm90b3R5cGUud3JpdGVVaW50QkU9Ti5wcm90''@;'; put 'put ''b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oa2UsQWUsamUsaXQpe2tlPStrZSxBZT4+Pj0wLGplPj4+PTAsIWl0JiZ0ZSh0aGlzLGtlLEFlLGplLE1hdGgucG93KDIsOCpqZSktMSwwKTtsZXQgc3Q9amUtMSx4dD0xO2Zvcih0aGlzW0FlK3N0XT0yNTUma2U7LS1zdD49MCYmKHh0Kj0yNTYp''@;'; put 'put ''Oyl0aGlzW0FlK3N0XT1rZS94dCYyNTU7cmV0dXJuIEFlK2plfSxOLnByb3RvdHlwZS53cml0ZVVpbnQ4PU4ucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oa2UsQWUsamUpe3JldHVybiBrZT0ra2UsQWU+Pj49MCxqZXx8dGUodGhpcyxrZSxBZSwxLDI1NSwwKSx0aGlzW0FlXT0yNTUm''@;'; put 'put ''a2UsQWUrMX0sTi5wcm90b3R5cGUud3JpdGVVaW50MTZMRT1OLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4ga2U9K2tlLEFlPj4+PTAsamV8fHRlKHRoaXMsa2UsQWUsMiw2NTUzNSwwKSx0aGlzW0FlXT0yNTUma2UsdGhpc1tBZSsxXT1rZT4+Pjgs''@;'; put 'put ''QWUrMn0sTi5wcm90b3R5cGUud3JpdGVVaW50MTZCRT1OLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4ga2U9K2tlLEFlPj4+PTAsamV8fHRlKHRoaXMsa2UsQWUsMiw2NTUzNSwwKSx0aGlzW0FlXT1rZT4+PjgsdGhpc1tBZSsxXT0yNTUma2UsQWUr''@;'; put 'put ''Mn0sTi5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1OLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4ga2U9K2tlLEFlPj4+PTAsamV8fHRlKHRoaXMsa2UsQWUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbQWUrM109a2U+Pj4yNCx0aGlzW0FlKzJdPWtlPj4+''@;'; put 'put ''MTYsdGhpc1tBZSsxXT1rZT4+PjgsdGhpc1tBZV09MjU1JmtlLEFlKzR9LE4ucHJvdG90eXBlLndyaXRlVWludDMyQkU9Ti5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihrZSxBZSxqZSl7cmV0dXJuIGtlPStrZSxBZT4+Pj0wLGplfHx0ZSh0aGlzLGtlLEFlLDQsNDI5NDk2NzI5''@;'; put 'put ''NSwwKSx0aGlzW0FlXT1rZT4+PjI0LHRoaXNbQWUrMV09a2U+Pj4xNix0aGlzW0FlKzJdPWtlPj4+OCx0aGlzW0FlKzNdPTI1NSZrZSxBZSs0fSxOLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NExFPVplKGZ1bmN0aW9uKGtlLEFlPTApe3JldHVybiBjZSh0aGlzLGtlLEFlLEJpZ0ludCgwKSxC''@;'; put 'put ''aWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLE4ucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9WmUoZnVuY3Rpb24oa2UsQWU9MCl7cmV0dXJuIGhlKHRoaXMsa2UsQWUsQmlnSW50KDApLEJpZ0ludCgiMHhmZmZmZmZmZmZmZmZmZmZmIikpfSksTi5wcm90b3R5cGUud3JpdGVJbnRM''@;'; put 'put ''RT1mdW5jdGlvbihrZSxBZSxqZSxpdCl7aWYoa2U9K2tlLEFlPj4+PTAsIWl0KXtjb25zdCBPdD1NYXRoLnBvdygyLDgqamUtMSk7dGUodGhpcyxrZSxBZSxqZSxPdC0xLC1PdCl9bGV0IHN0PTAseHQ9MSxGdD0wO2Zvcih0aGlzW0FlXT0yNTUma2U7KytzdDxqZSYmKHh0Kj0yNTYpOylrZTww''@;'; put 'put ''JiYwPT09RnQmJjAhPT10aGlzW0FlK3N0LTFdJiYoRnQ9MSksdGhpc1tBZStzdF09KGtlL3h0fDApLUZ0JjI1NTtyZXR1cm4gQWUramV9LE4ucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oa2UsQWUsamUsaXQpe2lmKGtlPStrZSxBZT4+Pj0wLCFpdCl7Y29uc3QgT3Q9TWF0aC5wb3co''@;'; put 'put ''Miw4KmplLTEpO3RlKHRoaXMsa2UsQWUsamUsT3QtMSwtT3QpfWxldCBzdD1qZS0xLHh0PTEsRnQ9MDtmb3IodGhpc1tBZStzdF09MjU1JmtlOy0tc3Q+PTAmJih4dCo9MjU2KTspa2U8MCYmMD09PUZ0JiYwIT09dGhpc1tBZStzdCsxXSYmKEZ0PTEpLHRoaXNbQWUrc3RdPShrZS94dHwwKS1G''@;'; put 'put ''dCYyNTU7cmV0dXJuIEFlK2plfSxOLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oa2UsQWUsamUpe3JldHVybiBrZT0ra2UsQWU+Pj49MCxqZXx8dGUodGhpcyxrZSxBZSwxLDEyNywtMTI4KSxrZTwwJiYoa2U9MjU1K2tlKzEpLHRoaXNbQWVdPTI1NSZrZSxBZSsxfSxOLnByb3RvdHlw''@;'; put 'put ''ZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oa2UsQWUsamUpe3JldHVybiBrZT0ra2UsQWU+Pj49MCxqZXx8dGUodGhpcyxrZSxBZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tBZV09MjU1JmtlLHRoaXNbQWUrMV09a2U+Pj44LEFlKzJ9LE4ucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihr''@;'; put 'put ''ZSxBZSxqZSl7cmV0dXJuIGtlPStrZSxBZT4+Pj0wLGplfHx0ZSh0aGlzLGtlLEFlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW0FlXT1rZT4+PjgsdGhpc1tBZSsxXT0yNTUma2UsQWUrMn0sTi5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4ga2U9K2tlLEFl''@;'; put 'put ''Pj4+PTAsamV8fHRlKHRoaXMsa2UsQWUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW0FlXT0yNTUma2UsdGhpc1tBZSsxXT1rZT4+PjgsdGhpc1tBZSsyXT1rZT4+PjE2LHRoaXNbQWUrM109a2U+Pj4yNCxBZSs0fSxOLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oa2Us''@;'; put 'put ''QWUsamUpe3JldHVybiBrZT0ra2UsQWU+Pj49MCxqZXx8dGUodGhpcyxrZSxBZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGtlPDAmJihrZT00Mjk0OTY3Mjk1K2tlKzEpLHRoaXNbQWVdPWtlPj4+MjQsdGhpc1tBZSsxXT1rZT4+PjE2LHRoaXNbQWUrMl09a2U+Pj44LHRoaXNbQWUrM109''@;'; put 'put ''MjU1JmtlLEFlKzR9LE4ucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRT1aZShmdW5jdGlvbihrZSxBZT0wKXtyZXR1cm4gY2UodGhpcyxrZSxBZSwtQmlnSW50KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLE4ucHJvdG90eXBlLndyaXRlQmln''@;'; put 'put ''SW50NjRCRT1aZShmdW5jdGlvbihrZSxBZT0wKXtyZXR1cm4gaGUodGhpcyxrZSxBZSwtQmlnSW50KCIweDgwMDAwMDAwMDAwMDAwMDAiKSxCaWdJbnQoIjB4N2ZmZmZmZmZmZmZmZmZmZiIpKX0pLE4ucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihrZSxBZSxqZSl7cmV0dXJuIExl''@;'; put 'put ''KHRoaXMsa2UsQWUsITAsamUpfSxOLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oa2UsQWUsamUpe3JldHVybiBMZSh0aGlzLGtlLEFlLCExLGplKX0sTi5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihrZSxBZSxqZSl7cmV0dXJuIEhlKHRoaXMsa2UsQWUsITAsamUp''@;'; put 'put ''fSxOLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4gSGUodGhpcyxrZSxBZSwhMSxqZSl9LE4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oa2UsQWUsamUsaXQpe2lmKCFOLmlzQnVmZmVyKGtlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBz''@;'; put 'put ''aG91bGQgYmUgYSBCdWZmZXIiKTtpZihqZXx8KGplPTApLGl0fHwwPT09aXR8fChpdD10aGlzLmxlbmd0aCksQWU+PWtlLmxlbmd0aCYmKEFlPWtlLmxlbmd0aCksQWV8fChBZT0wKSxpdD4wJiZpdDxqZSYmKGl0PWplKSxpdD09PWplfHwwPT09a2UubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIDA7aWYoQWU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKGplPDB8fGplPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYoaXQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigi''@;'; put 'put ''c291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtpdD50aGlzLmxlbmd0aCYmKGl0PXRoaXMubGVuZ3RoKSxrZS5sZW5ndGgtQWU8aXQtamUmJihpdD1rZS5sZW5ndGgtQWUramUpO2NvbnN0IHN0PWl0LWplO3JldHVybiB0aGlzPT09a2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnBy''@;'; put 'put ''b3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihBZSxqZSxpdCk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoa2UsdGhpcy5zdWJhcnJheShqZSxpdCksQWUpLHN0fSxOLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGtlLEFlLGplLGl0KXtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IGtlKXtpZigic3RyaW5nIj09dHlwZW9mIEFlPyhpdD1BZSxBZT0wLGplPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIGplJiYoaXQ9amUsamU9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PWl0JiYic3RyaW5nIiE9dHlwZW9mIGl0KXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11''@;'; put 'put ''c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIGl0JiYhTi5pc0VuY29kaW5nKGl0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2l0KTtpZigxPT09a2UubGVuZ3RoKXtjb25zdCB4dD1rZS5jaGFyQ29kZUF0KDApOygidXRmOCI9PT1pdCYmeHQ8''@;'; put 'put ''MTI4fHwibGF0aW4xIj09PWl0KSYmKGtlPXh0KX19ZWxzZSJudW1iZXIiPT10eXBlb2Yga2U/a2UmPTI1NToiYm9vbGVhbiI9PXR5cGVvZiBrZSYmKGtlPU51bWJlcihrZSkpO2lmKEFlPDB8fHRoaXMubGVuZ3RoPEFlfHx0aGlzLmxlbmd0aDxqZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0''@;'; put 'put ''IG9mIHJhbmdlIGluZGV4Iik7aWYoamU8PUFlKXJldHVybiB0aGlzO2xldCBzdDtpZihBZT4+Pj0wLGplPXZvaWQgMD09PWplP3RoaXMubGVuZ3RoOmplPj4+MCxrZXx8KGtlPTApLCJudW1iZXIiPT10eXBlb2Yga2UpZm9yKHN0PUFlO3N0PGplOysrc3QpdGhpc1tzdF09a2U7ZWxzZXtjb25z''@;'; put 'put ''dCB4dD1OLmlzQnVmZmVyKGtlKT9rZTpOLmZyb20oa2UsaXQpLEZ0PXh0Lmxlbmd0aDtpZigwPT09RnQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK2tlKyciIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50ICJ2YWx1ZSInKTtmb3Ioc3Q9MDtzdDxqZS1BZTsrK3N0KXRoaXNbc3Qr''@;'; put 'put ''QWVdPXh0W3N0JUZ0XX1yZXR1cm4gdGhpc307Y29uc3QgeGU9e307ZnVuY3Rpb24gRGUoa2UsQWUsamUpe3hlW2tlXT1jbGFzcyBleHRlbmRzIGple2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWVzc2FnZSIse3ZhbHVlOkFlLmFwcGx5KHRoaXMs''@;'; put 'put ''YXJndW1lbnRzKSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0aGlzLm5hbWU9YCR7dGhpcy5uYW1lfSBbJHtrZX1dYCxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIGtlfXNldCBjb2RlKGl0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29kZSIse2NvbmZp''@;'; put 'put ''Z3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOml0LHdyaXRhYmxlOiEwfSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske2tlfV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiBCZShrZSl7bGV0IEFlPSIiLGplPWtlLmxlbmd0aDtjb25zdCBpdD0iLSI9PT1rZVsw''@;'; put 'put ''XT8xOjA7Zm9yKDtqZT49aXQrNDtqZS09MylBZT1gXyR7a2Uuc2xpY2UoamUtMyxqZSl9JHtBZX1gO3JldHVybmAke2tlLnNsaWNlKDAsamUpfSR7QWV9YH1mdW5jdGlvbiBHZShrZSxBZSxqZSxpdCxzdCx4dCl7aWYoa2U+amV8fGtlPEFlKXtjb25zdCBGdD0iYmlnaW50Ij09dHlwZW9mIEFl''@;'; put 'put ''PyJuIjoiIjtsZXQgT3Q7dGhyb3cgT3Q9eHQ+Mz8wPT09QWV8fEFlPT09QmlnSW50KDApP2A+PSAwJHtGdH0gYW5kIDwgMiR7RnR9ICoqICR7OCooeHQrMSl9JHtGdH1gOmA+PSAtKDIke0Z0fSAqKiAkezgqKHh0KzEpLTF9JHtGdH0pIGFuZCA8IDIgKiogJHs4Kih4dCsxKS0xfSR7RnR9YDpg''@;'; put 'put ''Pj0gJHtBZX0ke0Z0fSBhbmQgPD0gJHtqZX0ke0Z0fWAsbmV3IHhlLkVSUl9PVVRfT0ZfUkFOR0UoInZhbHVlIixPdCxrZSl9dmFyIEZ0LE90LEt0O0Z0PWl0LEt0PXh0LFVlKE90PXN0LCJvZmZzZXQiKSx2b2lkIDAhPT1GdFtPdF0mJnZvaWQgMCE9PUZ0W090K0t0XXx8cWUoT3QsRnQubGVu''@;'; put 'put ''Z3RoLShLdCsxKSl9ZnVuY3Rpb24gVWUoa2UsQWUpe2lmKCJudW1iZXIiIT10eXBlb2Yga2UpdGhyb3cgbmV3IHhlLkVSUl9JTlZBTElEX0FSR19UWVBFKEFlLCJudW1iZXIiLGtlKX1mdW5jdGlvbiBxZShrZSxBZSxqZSl7dGhyb3cgTWF0aC5mbG9vcihrZSkhPT1rZT8oVWUoa2UsamUpLG5l''@;'; put 'put ''dyB4ZS5FUlJfT1VUX09GX1JBTkdFKGplfHwib2Zmc2V0IiwiYW4gaW50ZWdlciIsa2UpKTpBZTwwP25ldyB4ZS5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM6bmV3IHhlLkVSUl9PVVRfT0ZfUkFOR0UoamV8fCJvZmZzZXQiLGA+PSAke2plPzE6MH0gYW5kIDw9ICR7QWV9YCxrZSl9RGUoIkVS''@;'; put 'put ''Ul9CVUZGRVJfT1VUX09GX0JPVU5EUyIsZnVuY3Rpb24oa2Upe3JldHVybiBrZT9gJHtrZX0gaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzYDoiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kcyJ9LFJhbmdlRXJyb3IpLERlKCJFUlJfSU5WQUxJRF9BUkdf''@;'; put 'put ''VFlQRSIsZnVuY3Rpb24oa2UsQWUpe3JldHVybmBUaGUgIiR7a2V9IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIEFlfWB9LFR5cGVFcnJvciksRGUoIkVSUl9PVVRfT0ZfUkFOR0UiLGZ1bmN0aW9uKGtlLEFlLGplKXtsZXQgaXQ9YFRo''@;'; put 'put ''ZSB2YWx1ZSBvZiAiJHtrZX0iIGlzIG91dCBvZiByYW5nZS5gLHN0PWplO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGplKSYmTWF0aC5hYnMoamUpPjQyOTQ5NjcyOTY/c3Q9QmUoU3RyaW5nKGplKSk6ImJpZ2ludCI9PXR5cGVvZiBqZSYmKHN0PVN0cmluZyhqZSksKGplPkJpZ0ludCgyKSoq''@;'; put 'put ''QmlnSW50KDMyKXx8amU8LShCaWdJbnQoMikqKkJpZ0ludCgzMikpKSYmKHN0PUJlKHN0KSksc3QrPSJuIiksaXQrPWAgSXQgbXVzdCBiZSAke0FlfS4gUmVjZWl2ZWQgJHtzdH1gLGl0fSxSYW5nZUVycm9yKTtjb25zdCBvdD0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIEZlKGtlLEFl''@;'; put 'put ''KXtsZXQgamU7QWU9QWV8fDEvMDtjb25zdCBpdD1rZS5sZW5ndGg7bGV0IHN0PW51bGw7Y29uc3QgeHQ9W107Zm9yKGxldCBGdD0wO0Z0PGl0OysrRnQpe2lmKGplPWtlLmNoYXJDb2RlQXQoRnQpLGplPjU1Mjk1JiZqZTw1NzM0NCl7aWYoIXN0KXtpZihqZT41NjMxOSl7KEFlLT0zKT4tMSYm''@;'; put 'put ''eHQucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoRnQrMT09PWl0KXsoQWUtPTMpPi0xJiZ4dC5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1zdD1qZTtjb250aW51ZX1pZihqZTw1NjMyMCl7KEFlLT0zKT4tMSYmeHQucHVzaCgyMzksMTkxLDE4OSksc3Q9amU7Y29udGludWV9amU9''@;'; put 'put ''NjU1MzYrKHN0LTU1Mjk2PDwxMHxqZS01NjMyMCl9ZWxzZSBzdCYmKEFlLT0zKT4tMSYmeHQucHVzaCgyMzksMTkxLDE4OSk7aWYoc3Q9bnVsbCxqZTwxMjgpe2lmKChBZS09MSk8MClicmVhazt4dC5wdXNoKGplKX1lbHNlIGlmKGplPDIwNDgpe2lmKChBZS09Mik8MClicmVhazt4dC5wdXNo''@;'; put 'put ''KGplPj42fDE5Miw2MyZqZXwxMjgpfWVsc2UgaWYoamU8NjU1MzYpe2lmKChBZS09Myk8MClicmVhazt4dC5wdXNoKGplPj4xMnwyMjQsamU+PjYmNjN8MTI4LDYzJmplfDEyOCl9ZWxzZXtpZighKGplPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYo''@;'; put 'put ''KEFlLT00KTwwKWJyZWFrO3h0LnB1c2goamU+PjE4fDI0MCxqZT4+MTImNjN8MTI4LGplPj42JjYzfDEyOCw2MyZqZXwxMjgpfX1yZXR1cm4geHR9ZnVuY3Rpb24gd2Uoa2Upe3JldHVybiBHLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKEFlKXtpZigoQWU9KEFlPUFlLnNwbGl0KCI9IilbMF0pLnRy''@;'; put 'put ''aW0oKS5yZXBsYWNlKG90LCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtBZS5sZW5ndGglNCE9MDspQWUrPSI9IjtyZXR1cm4gQWV9KGtlKSl9ZnVuY3Rpb24gRWUoa2UsQWUsamUsaXQpe2xldCBzdDtmb3Ioc3Q9MDtzdDxpdCYmIShzdCtqZT49QWUubGVuZ3RofHxzdD49a2UubGVuZ3Ro''@;'; put 'put ''KTsrK3N0KUFlW3N0K2plXT1rZVtzdF07cmV0dXJuIHN0fWZ1bmN0aW9uIEllKGtlLEFlKXtyZXR1cm4ga2UgaW5zdGFuY2VvZiBBZXx8bnVsbCE9a2UmJm51bGwhPWtlLmNvbnN0cnVjdG9yJiZudWxsIT1rZS5jb25zdHJ1Y3Rvci5uYW1lJiZrZS5jb25zdHJ1Y3Rvci5uYW1lPT09QWUubmFt''@;'; put 'put ''ZX1mdW5jdGlvbiBYZShrZSl7cmV0dXJuIGtlIT1rZX1jb25zdCB0dD1mdW5jdGlvbigpe2NvbnN0IGtlPSIwMTIzNDU2Nzg5YWJjZGVmIixBZT1uZXcgQXJyYXkoMjU2KTtmb3IobGV0IGplPTA7amU8MTY7KytqZSl7Y29uc3QgaXQ9MTYqamU7Zm9yKGxldCBzdD0wO3N0PDE2Oysrc3QpQWVb''@;'; put 'put ''aXQrc3RdPWtlW2plXStrZVtzdF19cmV0dXJuIEFlfSgpO2Z1bmN0aW9uIFplKGtlKXtyZXR1cm4gdHlwZW9mIEJpZ0ludD4idSI/Y3Q6a2V9ZnVuY3Rpb24gY3QoKXt0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBub3Qgc3VwcG9ydGVkIil9fSwxOTI0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIGo9SSgyMTApLEc9SSg1NTU5KSxEPUcoaigiU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mIikpO00uZXhwb3J0cz1mdW5jdGlvbihULEUpe3ZhciB6PWooVCwhIUUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB6JiZEKFQsIi5wcm90b3R5cGUuIik+LTE/Ryh6KTp6fX0sNTU1OTooTSxP''@;'; put 'put ''LEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoODYxMiksRz1JKDIxMCksRD1HKCIlRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JSIpLFQ9RygiJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJSIpLEU9RygiJVJlZmxlY3QuYXBwbHklIiwhMCl8fGouY2FsbChULEQpLHo9RygiJU9iamVjdC5nZXRP''@;'; put 'put ''d25Qcm9wZXJ0eURlc2NyaXB0b3IlIiwhMCksTj1HKCIlT2JqZWN0LmRlZmluZVByb3BlcnR5JSIsITApLEI9RygiJU1hdGgubWF4JSIpO2lmKE4pdHJ5e04oe30sImEiLHt2YWx1ZToxfSl9Y2F0Y2h7Tj1udWxsfU0uZXhwb3J0cz1mdW5jdGlvbihZKXt2YXIgVT1FKGosVCxhcmd1bWVudHMp''@;'; put 'put ''O3JldHVybiB6JiZOJiZ6KFUsImxlbmd0aCIpLmNvbmZpZ3VyYWJsZSYmTihVLCJsZW5ndGgiLHt2YWx1ZToxK0IoMCxZLmxlbmd0aC0oYXJndW1lbnRzLmxlbmd0aC0xKSl9KSxVfTt2YXIgWj1mdW5jdGlvbigpe3JldHVybiBFKGosRCxhcmd1bWVudHMpfTtOP04oTS5leHBvcnRzLCJhcHBs''@;'; put 'put ''eSIse3ZhbHVlOlp9KTpNLmV4cG9ydHMuYXBwbHk9Wn0sMTAyNzooTSxPLEkpPT57dmFyIGo9SSg5NTA5KS5CdWZmZXIsRz1JKDI4MzApLlRyYW5zZm9ybSxEPUkoMjU1MykuU3RyaW5nRGVjb2RlcjtmdW5jdGlvbiBUKEUpe0cuY2FsbCh0aGlzKSx0aGlzLmhhc2hNb2RlPSJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgRSx0aGlzLmhhc2hNb2RlP3RoaXNbRV09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZmluYWwmJih0aGlzLl9fZmluYWw9dGhpcy5fZmluYWwsdGhpcy5fZmluYWw9bnVsbCksdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2Vu''@;'; put 'put ''Y29kaW5nPW51bGx9SSg1NzE3KShULEcpLFQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihFLHosTil7InN0cmluZyI9PXR5cGVvZiBFJiYoRT1qLmZyb20oRSx6KSk7dmFyIEI9dGhpcy5fdXBkYXRlKEUpO3JldHVybiB0aGlzLmhhc2hNb2RlP3RoaXM6KE4mJihCPXRoaXMuX3RvU3RyaW5n''@;'; put 'put ''KEIsTikpLEIpfSxULnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbigpe30sVC5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxULnByb3RvdHlwZS5zZXRB''@;'; put 'put ''dXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LFQucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3Rh''@;'; put 'put ''dGUiKX0sVC5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihFLHosTil7dmFyIEI7dHJ5e3RoaXMuaGFzaE1vZGU/dGhpcy5fdXBkYXRlKEUpOnRoaXMucHVzaCh0aGlzLl91cGRhdGUoRSkpfWNhdGNoKFope0I9Wn1maW5hbGx5e04oQil9fSxULnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rp''@;'; put 'put ''b24oRSl7dmFyIHo7dHJ5e3RoaXMucHVzaCh0aGlzLl9fZmluYWwoKSl9Y2F0Y2goTil7ej1OfUUoeil9LFQucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKEUpe3ZhciB6PXRoaXMuX19maW5hbCgpfHxqLmFsbG9jKDApO3JldHVybiBFJiYoej10aGlzLl90b1N0cmluZyh6LEUs''@;'; put 'put ''ITApKSx6fSxULnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24oRSx6LE4pe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBEKHopLHRoaXMuX2VuY29kaW5nPXopLHRoaXMuX2VuY29kaW5nIT09eil0aHJvdyBuZXcgRXJyb3IoImNhbid0IHN3aXRjaCBlbmNvZGluZ3Mi''@;'; put 'put ''KTt2YXIgQj10aGlzLl9kZWNvZGVyLndyaXRlKEUpO3JldHVybiBOJiYoQis9dGhpcy5fZGVjb2Rlci5lbmQoKSksQn0sTS5leHBvcnRzPVR9LDEwNDg6TT0+e00uZXhwb3J0cz1mdW5jdGlvbihJLGope2Zvcih2YXIgRz1bXSxEPTA7RDxJLmxlbmd0aDtEKyspe3ZhciBUPWooSVtEXSxEKTtP''@;'; put 'put ''KFQpP0cucHVzaC5hcHBseShHLFQpOkcucHVzaChUKX1yZXR1cm4gR307dmFyIE89QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oSSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJKX19LDUxMDg6KE0sTyxJKT0+e3ZhciBqPUkoOTUzOSks''@;'; put 'put ''Rz1JKDkyODIpO2Z1bmN0aW9uIEQoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX12YXIgVCxFPUFycmF5LnByb3RvdHlwZS5zbGljZSx6PXt9O1Q9dm9pZCAwIT09SS5nJiZJLmcuY29uc29sZT9JLmcuY29uc29sZTp0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmNvbnNvbGU/d2luZG93''@;'; put 'put ''LmNvbnNvbGU6e307Zm9yKHZhciBOPVtbZnVuY3Rpb24oKXt9LCJsb2ciXSxbZnVuY3Rpb24oKXtULmxvZy5hcHBseShULGFyZ3VtZW50cyl9LCJpbmZvIl0sW2Z1bmN0aW9uKCl7VC5sb2cuYXBwbHkoVCxhcmd1bWVudHMpfSwid2FybiJdLFtmdW5jdGlvbigpe1Qud2Fybi5hcHBseShULGFy''@;'; put 'put ''Z3VtZW50cyl9LCJlcnJvciJdLFtmdW5jdGlvbihxKXt6W3FdPUQoKX0sInRpbWUiXSxbZnVuY3Rpb24ocSl7dmFyIEo9eltxXTtpZighSil0aHJvdyBuZXcgRXJyb3IoIk5vIHN1Y2ggbGFiZWw6ICIrcSk7ZGVsZXRlIHpbcV07dmFyIGVlPUQoKS1KO1QubG9nKHErIjogIitlZSsibXMiKX0s''@;'; put 'put ''InRpbWVFbmQiXSxbZnVuY3Rpb24oKXt2YXIgcT1uZXcgRXJyb3I7cS5uYW1lPSJUcmFjZSIscS5tZXNzYWdlPWouZm9ybWF0LmFwcGx5KG51bGwsYXJndW1lbnRzKSxULmVycm9yKHEuc3RhY2spfSwidHJhY2UiXSxbZnVuY3Rpb24ocSl7VC5sb2coai5pbnNwZWN0KHEpKyJcbiIpfSwiZGly''@;'; put 'put ''Il0sW2Z1bmN0aW9uKHEpe2lmKCFxKXt2YXIgSj1FLmNhbGwoYXJndW1lbnRzLDEpO0cub2soITEsai5mb3JtYXQuYXBwbHkobnVsbCxKKSl9fSwiYXNzZXJ0Il1dLEI9MDtCPE4ubGVuZ3RoO0IrKyl7dmFyIFo9TltCXSxVPVpbMV07VFtVXXx8KFRbVV09WlswXSl9TS5leHBvcnRzPVR9LDYz''@;'; put 'put ''OTM6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9SSg2OTQ4KSxEPUkoNjQyNik7TS5leHBvcnRzPWZ1bmN0aW9uKE4pe3JldHVybiBuZXcgRShOKX07dmFyIFQ9e3NlY3AyNTZrMTp7bmFtZToic2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQi''@;'; put 'put ''LGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTkiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0''@;'; put 'put ''aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gRShOKXt0aGlzLmN1cnZlVHlwZT1UW05dLHRoaXMuY3VydmVUeXBlfHwodGhpcy5jdXJ2ZVR5cGU9e25hbWU6Tn0pLHRoaXMuY3VydmU9bmV3IEcuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSksdGhp''@;'; put 'put ''cy5rZXlzPXZvaWQgMH1mdW5jdGlvbiB6KE4sQixaKXtBcnJheS5pc0FycmF5KE4pfHwoTj1OLnRvQXJyYXkoKSk7dmFyIFk9bmV3IGooTik7aWYoWiYmWS5sZW5ndGg8Wil7dmFyIFU9bmV3IGooWi1ZLmxlbmd0aCk7VS5maWxsKDApLFk9ai5jb25jYXQoW1UsWV0pfXJldHVybiBCP1kudG9T''@;'; put 'put ''dHJpbmcoQik6WX1ULnAyMjQ9VC5zZWNwMjI0cjEsVC5wMjU2PVQuc2VjcDI1NnIxPVQucHJpbWUyNTZ2MSxULnAxOTI9VC5zZWNwMTkycjE9VC5wcmltZTE5MnYxLFQucDM4ND1ULnNlY3AzODRyMSxULnA1MjE9VC5zZWNwNTIxcjEsRS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9u''@;'; put 'put ''KE4sQil7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShOLEIpfSxFLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKE4sQixaKXtyZXR1cm4gQj1CfHwidXRmOCIsai5pc0J1ZmZlcihOKXx8KE49bmV3IGooTixCKSkseih0''@;'; put 'put ''aGlzLmN1cnZlLmtleUZyb21QdWJsaWMoTikuZ2V0UHVibGljKCkubXVsKHRoaXMua2V5cy5nZXRQcml2YXRlKCkpLmdldFgoKSxaLHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpfSxFLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oTixCKXt2YXIgWj10aGlzLmtleXMuZ2V0UHVi''@;'; put 'put ''bGljKCJjb21wcmVzc2VkIj09PUIsITApO3JldHVybiJoeWJyaWQiPT09QiYmKFpbMF09WltaLmxlbmd0aC0xXSUyPzc6NikseihaLE4pfSxFLnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uKE4pe3JldHVybiB6KHRoaXMua2V5cy5nZXRQcml2YXRlKCksTil9LEUucHJvdG90eXBl''@;'; put 'put ''LnNldFB1YmxpY0tleT1mdW5jdGlvbihOLEIpe3JldHVybiBCPUJ8fCJ1dGY4IixqLmlzQnVmZmVyKE4pfHwoTj1uZXcgaihOLEIpKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhOKSx0aGlzfSxFLnByb3RvdHlwZS5zZXRQcml2YXRlS2V5PWZ1bmN0aW9uKE4sQil7Qj1CfHwidXRmOCIsai5p''@;'; put 'put ''c0J1ZmZlcihOKXx8KE49bmV3IGooTixCKSk7dmFyIFo9bmV3IEQoTik7cmV0dXJuIFo9Wi50b1N0cmluZygxNiksdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShaKSx0aGlzfX0sNjQyNjpmdW5jdGlvbihNLE8sSSl7IWZ1bmN0aW9u''@;'; put 'put ''KGosRyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEQoZyxDKXtpZighZyl0aHJvdyBuZXcgRXJyb3IoQ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBUKGcsQyl7Zy5zdXBlcl89Qzt2YXIgaz1mdW5jdGlvbigpe307ay5wcm90b3R5cGU9Qy5wcm90b3R5cGUsZy5wcm90b3R5cGU9bmV3''@;'; put 'put ''IGssZy5wcm90b3R5cGUuY29uc3RydWN0b3I9Z31mdW5jdGlvbiBFKGcsQyxrKXtpZihFLmlzQk4oZykpcmV0dXJuIGc7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWcmJigibGUiIT09QyYmImJlIiE9PUN8fChrPUMs''@;'; put 'put ''Qz0xMCksdGhpcy5faW5pdChnfHwwLEN8fDEwLGt8fCJiZSIpKX12YXIgejsib2JqZWN0Ij09dHlwZW9mIGo/ai5leHBvcnRzPUU6Ry5CTj1FLEUuQk49RSxFLndvcmRTaXplPTI2O3RyeXt6PXR5cGVvZiB3aW5kb3c8InUiJiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6''@;'; put 'put ''SSg4NjIzKS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIE4oZyxDKXt2YXIgaz1nLmNoYXJDb2RlQXQoQyk7cmV0dXJuIGs+PTY1JiZrPD03MD9rLTU1Oms+PTk3JiZrPD0xMDI/ay04NzprLTQ4JjE1fWZ1bmN0aW9uIEIoZyxDLGspe3ZhciBfPU4oZyxrKTtyZXR1cm4gay0xPj1DJiYoX3w9Tihn''@;'; put 'put ''LGstMSk8PDQpLF99ZnVuY3Rpb24gWihnLEMsayxfKXtmb3IodmFyIHA9MCx3PU1hdGgubWluKGcubGVuZ3RoLGspLEs9QztLPHc7SysrKXt2YXIgdGU9Zy5jaGFyQ29kZUF0KEspLTQ4O3AqPV8scCs9dGU+PTQ5P3RlLTQ5KzEwOnRlPj0xNz90ZS0xNysxMDp0ZX1yZXR1cm4gcH1FLmlzQk49''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBFfHxudWxsIT09ZyYmIm9iamVjdCI9PXR5cGVvZiBnJiZnLmNvbnN0cnVjdG9yLndvcmRTaXplPT09RS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShnLndvcmRzKX0sRS5tYXg9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gZy5jbXAoQyk+MD9n''@;'; put 'put ''OkN9LEUubWluPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPDA/ZzpDfSxFLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihnLEMsayl7aWYoIm51bWJlciI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGcsQyxrKTtpZigib2JqZWN0Ij09dHlwZW9mIGcpcmV0dXJuIHRo''@;'; put 'put ''aXMuX2luaXRBcnJheShnLEMsayk7ImhleCI9PT1DJiYoQz0xNiksRChDPT09KDB8QykmJkM+PTImJkM8PTM2KTt2YXIgXz0wOyItIj09PShnPWcudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoXysrLHRoaXMubmVnYXRpdmU9MSksXzxnLmxlbmd0aCYmKDE2PT09Qz90aGlz''@;'; put 'put ''Ll9wYXJzZUhleChnLF8sayk6KHRoaXMuX3BhcnNlQmFzZShnLEMsXyksImxlIj09PWsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLGspKSl9LEUucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGcsQyxrKXtnPDAmJih0aGlzLm5lZ2F0aXZlPTEsZz0tZyksZzw2NzEw''@;'; put 'put ''ODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZ10sdGhpcy5sZW5ndGg9MSk6Zzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihEKGc8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4''@;'; put 'put ''NjMmZyxnLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQyxrKX0sRS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihnLEMsayl7aWYoRCgibnVtYmVyIj09dHlwZW9mIGcubGVuZ3RoKSxnLmxl''@;'; put 'put ''bmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChnLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBfPTA7Xzx0aGlzLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT0wO3Zh''@;'; put 'put ''ciBwLHcsSz0wO2lmKCJiZSI9PT1rKWZvcihfPWcubGVuZ3RoLTEscD0wO18+PTA7Xy09Myl0aGlzLndvcmRzW3BdfD0odz1nW19dfGdbXy0xXTw8OHxnW18tMl08PDE2KTw8SyY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09dz4+PjI2LUsmNjcxMDg4NjMsKEsrPTI0KT49MjYmJihLLT0yNixw''@;'; put 'put ''KyspO2Vsc2UgaWYoImxlIj09PWspZm9yKF89MCxwPTA7XzxnLmxlbmd0aDtfKz0zKXRoaXMud29yZHNbcF18PSh3PWdbX118Z1tfKzFdPDw4fGdbXysyXTw8MTYpPDxLJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT13Pj4+MjYtSyY2NzEwODg2MywoSys9MjQpPj0yNiYmKEstPTI2LHArKyk7''@;'; put 'put ''cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGcsQyxrKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGcubGVuZ3RoLUMpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIF89MDtfPHRoaXMubGVuZ3RoO18rKyl0aGlz''@;'; put 'put ''LndvcmRzW19dPTA7dmFyIHAsdz0wLEs9MDtpZigiYmUiPT09aylmb3IoXz1nLmxlbmd0aC0xO18+PUM7Xy09MilwPUIoZyxDLF8pPDx3LHRoaXMud29yZHNbS118PTY3MTA4ODYzJnAsdz49MTg/KHctPTE4LHRoaXMud29yZHNbSys9MV18PXA+Pj4yNik6dys9ODtlbHNlIGZvcihfPShnLmxl''@;'; put 'put ''bmd0aC1DKSUyPT0wP0MrMTpDO188Zy5sZW5ndGg7Xys9MilwPUIoZyxDLF8pPDx3LHRoaXMud29yZHNbS118PTY3MTA4ODYzJnAsdz49MTg/KHctPTE4LHRoaXMud29yZHNbSys9MV18PXA+Pj4yNik6dys9ODt0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24o''@;'; put 'put ''ZyxDLGspe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBfPTAscD0xO3A8PTY3MTA4ODYzO3AqPUMpXysrO18tLSxwPXAvQ3wwO2Zvcih2YXIgdz1nLmxlbmd0aC1rLEs9dyVfLHRlPU1hdGgubWluKHcsdy1LKStrLGNlPTAsaGU9aztoZTx0ZTtoZSs9XyljZT1aKGcsaGUs''@;'; put 'put ''aGUrXyxDKSx0aGlzLmltdWxuKHApLHRoaXMud29yZHNbMF0rY2U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Y2U6dGhpcy5faWFkZG4oY2UpO2lmKDAhPT1LKXt2YXIgU2U9MTtmb3IoY2U9WihnLGhlLGcubGVuZ3RoLEMpLGhlPTA7aGU8SztoZSsrKVNlKj1DO3RoaXMuaW11bG4oU2UpLHRo''@;'; put 'put ''aXMud29yZHNbMF0rY2U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Y2U6dGhpcy5faWFkZG4oY2UpfXRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihnKXtnLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBDPTA7Qzx0aGlzLmxlbmd0aDtDKyspZy53''@;'; put 'put ''b3Jkc1tDXT10aGlzLndvcmRzW0NdO2cubGVuZ3RoPXRoaXMubGVuZ3RoLGcubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxnLnJlZD10aGlzLnJlZH0sRS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZz1uZXcgRShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGcpLGd9LEUucHJvdG90eXBl''@;'; put 'put ''Ll9leHBhbmQ9ZnVuY3Rpb24oZyl7Zm9yKDt0aGlzLmxlbmd0aDxnOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhp''@;'; put 'put ''cy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sRS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LEUucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVT1bMCwwLDI1LDE2LDEyLDExLDEwLDks''@;'; put 'put ''OCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxxPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4''@;'; put 'put ''NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkx''@;'; put 'put ''MzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIEooZyxDLGspe2submVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciBfPWcubGVuZ3RoK0MubGVuZ3RofDA7ay5sZW5ndGg9XyxfPV8tMXwwO3ZhciBwPTB8Zy53b3Jkc1swXSx3PTB8Qy53b3Jkc1swXSxL''@;'; put 'put ''PXAqdyxjZT1LLzY3MTA4ODY0fDA7ay53b3Jkc1swXT02NzEwODg2MyZLO2Zvcih2YXIgaGU9MTtoZTxfO2hlKyspe2Zvcih2YXIgU2U9Y2U+Pj4yNixMZT02NzEwODg2MyZjZSxIZT1NYXRoLm1pbihoZSxDLmxlbmd0aC0xKSx4ZT1NYXRoLm1heCgwLGhlLWcubGVuZ3RoKzEpO3hlPD1IZTt4''@;'; put 'put ''ZSsrKVNlKz0oSz0ocD0wfGcud29yZHNbaGUteGV8MF0pKih3PTB8Qy53b3Jkc1t4ZV0pK0xlKS82NzEwODg2NHwwLExlPTY3MTA4ODYzJks7ay53b3Jkc1toZV09MHxMZSxjZT0wfFNlfXJldHVybiAwIT09Y2U/ay53b3Jkc1toZV09MHxjZTprLmxlbmd0aC0tLGsuc3RyaXAoKX1FLnByb3Rv''@;'; put 'put ''dHlwZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBrO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe2s9IiI7Zm9yKHZhciBfPTAscD0wLHc9MDt3PHRoaXMubGVuZ3RoO3crKyl7dmFyIEs9dGhpcy53b3Jkc1t3XSx0ZT0oMTY3NzcyMTUmKEs8PF98cCkpLnRvU3Ry''@;'; put 'put ''aW5nKDE2KTtrPTAhPShwPUs+Pj4yNC1fJjE2Nzc3MjE1KXx8dyE9PXRoaXMubGVuZ3RoLTE/WVs2LXRlLmxlbmd0aF0rdGUrazp0ZStrLChfKz0yKT49MjYmJihfLT0yNix3LS0pfWZvcigwIT09cCYmKGs9cC50b1N0cmluZygxNikrayk7ay5sZW5ndGglQyE9MDspaz0iMCIraztyZXR1cm4g''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUmJihrPSItIitrKSxrfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBjZT1VW2ddLGhlPXFbZ107az0iIjt2YXIgU2U9dGhpcy5jbG9uZSgpO2ZvcihTZS5uZWdhdGl2ZT0wOyFTZS5pc1plcm8oKTspe3ZhciBMZT1TZS5tb2RuKGhlKS50b1N0cmluZyhn''@;'; put 'put ''KTtrPShTZT1TZS5pZGl2bihoZSkpLmlzWmVybygpP0xlK2s6WVtjZS1MZS5sZW5ndGhdK0xlK2t9Zm9yKHRoaXMuaXNaZXJvKCkmJihrPSIwIitrKTtrLmxlbmd0aCVDIT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9RCghMSwiQmFzZSBzaG91bGQg''@;'; put 'put ''YmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Zys9NDUw''@;'; put 'put ''MzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkQoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gRCh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGcs''@;'; put 'put ''Qyl9LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXz10aGlzLmJ5dGVMZW5ndGgoKSxwPWt8fE1hdGgubWF4KDEsXyk7RChfPD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRChwPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGgg''@;'; put 'put ''PD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgdyxLLHRlPSJsZSI9PT1DLGNlPW5ldyBnKHApLGhlPXRoaXMuY2xvbmUoKTtpZih0ZSl7Zm9yKEs9MDshaGUuaXNaZXJvKCk7SysrKXc9aGUuYW5kbG4oMjU1KSxoZS5pdXNocm4oOCksY2VbS109dztmb3IoO0s8cDtLKyspY2VbS109MH1lbHNle2Zv''@;'; put 'put ''cihLPTA7SzxwLV87SysrKWNlW0tdPTA7Zm9yKEs9MDshaGUuaXNaZXJvKCk7SysrKXc9aGUuYW5kbG4oMjU1KSxoZS5pdXNocm4oOCksY2VbcC1LLTFdPXd9cmV0dXJuIGNlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZyl7cmV0dXJuIDMyLU1hdGguY2x6''@;'; put 'put ''MzIoZyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsaz0wO3JldHVybiBDPj00MDk2JiYoays9MTMsQz4+Pj0xMyksQz49NjQmJihrKz03LEM+Pj49NyksQz49OCYmKGsrPTQsQz4+Pj00KSxDPj0yJiYoays9MixDPj4+PTIpLGsrQ30sRS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGcpe2lm''@;'; put 'put ''KDA9PT1nKXJldHVybiAyNjt2YXIgQz1nLGs9MDtyZXR1cm4hKDgxOTEmQykmJihrKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKGsrPTcsQz4+Pj03KSwhKDE1JkMpJiYoays9NCxDPj4+PTQpLCEoMyZDKSYmKGsrPTIsQz4+Pj0yKSwhKDEmQykmJmsrKyxrfSxFLnByb3RvdHlwZS5iaXRMZW5n''@;'; put 'put ''dGg9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBnPTAsQz0w''@;'; put 'put ''O0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1rLDI2IT09aylicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sRS5wcm90''@;'; put 'put ''b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGVzdG4oZy0xKT90aGlzLm5vdG4oZykuaWFk''@;'; put 'put ''ZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxFLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEM9MDtDPGcubGVuZ3RoO0MrKyl0aGlzLndv''@;'; put 'put ''cmRzW0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1b3IoZyl9LEUucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGcpe3JldHVy''@;'; put 'put ''biB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGcpOmcuY2xvbmUoKS5pb3IodGhpcyl9LEUucHJvdG90eXBlLnVvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoZyk6Zy5jbG9uZSgpLml1b3IodGhpcyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGcpe3ZhciBDO0M9dGhpcy5sZW5ndGg+Zy5sZW5ndGg/Zzp0aGlzO2Zvcih2YXIgaz0wO2s8Qy5sZW5ndGg7aysrKXRoaXMud29yZHNba109dGhpcy53b3Jkc1trXSZnLndvcmRzW2tdO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0''@;'; put 'put ''cmlwKCl9LEUucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1YW5kKGcpfSxFLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGcp''@;'; put 'put ''OmcuY2xvbmUoKS5pYW5kKHRoaXMpfSxFLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoZyk6Zy5jbG9uZSgpLml1YW5kKHRoaXMpfSxFLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihnKXt2YXIgQyxrO3Ro''@;'; put 'put ''aXMubGVuZ3RoPmcubGVuZ3RoPyhDPXRoaXMsaz1nKTooQz1nLGs9dGhpcyk7Zm9yKHZhciBfPTA7XzxrLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT1DLndvcmRzW19dXmsud29yZHNbX107aWYodGhpcyE9PUMpZm9yKDtfPEMubGVuZ3RoO18rKyl0aGlzLndvcmRzW19dPUMud29yZHNbX107''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihnKXtyZXR1cm4gRCghKHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5s''@;'; put 'put ''ZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4b3IodGhpcyl9LEUucHJv''@;'; put 'put ''dG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxrPWclMjY7dGhpcy5fZXhwYW5kKEMpLGs+MCYmQy0tO2Zvcih2YXIgXz0wO188QztfKyspdGhpcy53b3Jkc1tfXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tf''@;'; put 'put ''XTtyZXR1cm4gaz4wJiYodGhpcy53b3Jkc1tfXT1+dGhpcy53b3Jkc1tfXSY2NzEwODg2Mz4+MjYtayksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oZyxDKXtE''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIGs9Zy8yNnwwLF89ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGsrMSksdGhpcy53b3Jkc1trXT1DP3RoaXMud29yZHNba118MTw8Xzp0aGlzLndvcmRzW2tdJn4oMTw8XyksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYWRkPWZ1bmN0''@;'; put 'put ''aW9uKGcpe3ZhciBDLGssXztpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1nLm5lZ2F0aXZlKXJl''@;'; put 'put ''dHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KGs9dGhpcyxfPWcpOihrPWcsXz10aGlzKTtmb3IodmFyIHA9MCx3PTA7dzxfLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT02NzEwODg2MyYoQz0o''@;'; put 'put ''MHxrLndvcmRzW3ddKSsoMHxfLndvcmRzW3ddKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZ3PGsubGVuZ3RoO3crKyl0aGlzLndvcmRzW3ddPTY3MTA4ODYzJihDPSgwfGsud29yZHNbd10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMubGVuZ3RoPWsubGVuZ3RoLDAhPT1wKXRoaXMud29yZHNbdGhp''@;'; put 'put ''cy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKGshPT10aGlzKWZvcig7dzxrLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT1rLndvcmRzW3ddO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlJiYwPT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlz''@;'; put 'put ''LmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMu''@;'; put 'put ''bmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIGssXyxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhp''@;'; put 'put ''cztwPjA/KGs9dGhpcyxfPWcpOihrPWcsXz10aGlzKTtmb3IodmFyIHc9MCxLPTA7SzxfLmxlbmd0aDtLKyspdz0oQz0oMHxrLndvcmRzW0tdKS0oMHxfLndvcmRzW0tdKSt3KT4+MjYsdGhpcy53b3Jkc1tLXT02NzEwODg2MyZDO2Zvcig7MCE9PXcmJks8ay5sZW5ndGg7SysrKXc9KEM9KDB8''@;'; put 'put ''ay53b3Jkc1tLXSkrdyk+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmQztpZigwPT09dyYmSzxrLmxlbmd0aCYmayE9PXRoaXMpZm9yKDtLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEspLGsh''@;'; put 'put ''PT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBlZT1mdW5jdGlvbihnLEMsayl7dmFyIF8scCx3LEs9Zy53b3Jkcyx0ZT1DLndvcmRzLGNlPWsud29yZHMsaGU9''@;'; put 'put ''MCxTZT0wfEtbMF0sTGU9ODE5MSZTZSxIZT1TZT4+PjEzLHhlPTB8S1sxXSxEZT04MTkxJnhlLEJlPXhlPj4+MTMsR2U9MHxLWzJdLFVlPTgxOTEmR2UscWU9R2U+Pj4xMyxvdD0wfEtbM10sRmU9ODE5MSZvdCx3ZT1vdD4+PjEzLEVlPTB8S1s0XSxJZT04MTkxJkVlLFhlPUVlPj4+MTMsdHQ9''@;'; put 'put ''MHxLWzVdLFplPTgxOTEmdHQsY3Q9dHQ+Pj4xMyxrZT0wfEtbNl0sQWU9ODE5MSZrZSxqZT1rZT4+PjEzLGl0PTB8S1s3XSxzdD04MTkxJml0LHh0PWl0Pj4+MTMsRnQ9MHxLWzhdLE90PTgxOTEmRnQsS3Q9RnQ+Pj4xMyxibj0wfEtbOV0sQnQ9ODE5MSZibix5bj1ibj4+PjEzLE5uPTB8dGVb''@;'; put 'put ''MF0sbm49ODE5MSZObixHbj1Obj4+PjEzLFluPTB8dGVbMV0sZnQ9ODE5MSZZbixkbj1Zbj4+PjEzLGhuPTB8dGVbMl0sd3Q9ODE5MSZobixqdD1obj4+PjEzLG10PTB8dGVbM10sSHQ9ODE5MSZtdCxwbj1tdD4+PjEzLG50PTB8dGVbNF0sRXQ9ODE5MSZudCxlbj1udD4+PjEzLFR0PTB8dGVb''@;'; put 'put ''NV0seXQ9ODE5MSZUdCwkdD1UdD4+PjEzLHhuPTB8dGVbNl0senQ9ODE5MSZ4bixfbj14bj4+PjEzLE9uPTB8dGVbN10scm49ODE5MSZPbixQbj1Pbj4+PjEzLENuPTB8dGVbOF0sWHQ9ODE5MSZDbixKbj1Dbj4+PjEzLHhpPTB8dGVbOV0sYW49ODE5MSZ4aSx0bj14aT4+PjEzO2submVnYXRp''@;'; put 'put ''dmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLGsubGVuZ3RoPTE5O3ZhciB1aT0oaGUrKF89TWF0aC5pbXVsKExlLG5uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChMZSxHbikpK01hdGguaW11bChIZSxubil8MCkpPDwxMyl8MDtoZT0oKHc9TWF0aC5pbXVsKEhlLEduKSkrKHA+Pj4xMyl8''@;'; put 'put ''MCkrKHVpPj4+MjYpfDAsdWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKERlLG5uKSxwPShwPU1hdGguaW11bChEZSxHbikpK01hdGguaW11bChCZSxubil8MCx3PU1hdGguaW11bChCZSxHbik7dmFyIEFyPShoZSsoXz1fK01hdGguaW11bChMZSxmdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKExlLGRuKXwwKStNYXRoLmltdWwoSGUsZnQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLGRuKXwwKSsocD4+PjEzKXwwKSsoQXI+Pj4yNil8MCxBciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoVWUsbm4pLHA9KHA9TWF0aC5pbXVsKFVlLEduKSkrTWF0aC5pbXVsKHFl''@;'; put 'put ''LG5uKXwwLHc9TWF0aC5pbXVsKHFlLEduKSxfPV8rTWF0aC5pbXVsKERlLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsZG4pfDApK01hdGguaW11bChCZSxmdCl8MCx3PXcrTWF0aC5pbXVsKEJlLGRuKXwwO3ZhciBocj0oaGUrKF89XytNYXRoLmltdWwoTGUsd3QpfDApfDApKygoODE5MSYo''@;'; put 'put ''cD0ocD1wK01hdGguaW11bChMZSxqdCl8MCkrTWF0aC5pbXVsKEhlLHd0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxqdCl8MCkrKHA+Pj4xMyl8MCkrKGhyPj4+MjYpfDAsaHImPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZlLG5uKSxwPShwPU1hdGguaW11bChGZSxHbikpK01h''@;'; put 'put ''dGguaW11bCh3ZSxubil8MCx3PU1hdGguaW11bCh3ZSxHbiksXz1fK01hdGguaW11bChVZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGRuKXwwKStNYXRoLmltdWwocWUsZnQpfDAsdz13K01hdGguaW11bChxZSxkbil8MCxfPV8rTWF0aC5pbXVsKERlLHd0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRGUsanQpfDApK01hdGguaW11bChCZSx3dCl8MCx3PXcrTWF0aC5pbXVsKEJlLGp0KXwwO3ZhciBkaT0oaGUrKF89XytNYXRoLmltdWwoTGUsSHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxwbil8MCkrTWF0aC5pbXVsKEhlLEh0KXwwKSk8PDEzKXwwO2hlPSgodz13''@;'; put 'put ''K01hdGguaW11bChIZSxwbil8MCkrKHA+Pj4xMyl8MCkrKGRpPj4+MjYpfDAsZGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEllLG5uKSxwPShwPU1hdGguaW11bChJZSxHbikpK01hdGguaW11bChYZSxubil8MCx3PU1hdGguaW11bChYZSxHbiksXz1fK01hdGguaW11bChGZSxmdCl8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKEZlLGRuKXwwKStNYXRoLmltdWwod2UsZnQpfDAsdz13K01hdGguaW11bCh3ZSxkbil8MCxfPV8rTWF0aC5pbXVsKFVlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsanQpfDApK01hdGguaW11bChxZSx3dCl8MCx3PXcrTWF0aC5pbXVsKHFlLGp0KXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoRGUsSHQpfDAscD0ocD1wK01hdGguaW11bChEZSxwbil8MCkrTWF0aC5pbXVsKEJlLEh0KXwwLHc9dytNYXRoLmltdWwoQmUscG4pfDA7dmFyIGZpPShoZSsoXz1fK01hdGguaW11bChMZSxFdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLGVuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoSGUsRXQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLGVuKXwwKSsocD4+PjEzKXwwKSsoZmk+Pj4yNil8MCxmaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoWmUsbm4pLHA9KHA9TWF0aC5pbXVsKFplLEduKSkrTWF0aC5pbXVsKGN0LG5uKXwwLHc9TWF0aC5pbXVsKGN0LEdu''@;'; put 'put ''KSxfPV8rTWF0aC5pbXVsKEllLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsZG4pfDApK01hdGguaW11bChYZSxmdCl8MCx3PXcrTWF0aC5pbXVsKFhlLGRuKXwwLF89XytNYXRoLmltdWwoRmUsd3QpfDAscD0ocD1wK01hdGguaW11bChGZSxqdCl8MCkrTWF0aC5pbXVsKHdlLHd0KXwwLHc9''@;'; put 'put ''dytNYXRoLmltdWwod2UsanQpfDAsXz1fK01hdGguaW11bChVZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLHBuKXwwKStNYXRoLmltdWwocWUsSHQpfDAsdz13K01hdGguaW11bChxZSxwbil8MCxfPV8rTWF0aC5pbXVsKERlLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsZW4pfDApK01h''@;'; put 'put ''dGguaW11bChCZSxFdCl8MCx3PXcrTWF0aC5pbXVsKEJlLGVuKXwwO3ZhciBobz0oaGUrKF89XytNYXRoLmltdWwoTGUseXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSwkdCl8MCkrTWF0aC5pbXVsKEhlLHl0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSwk''@;'; put 'put ''dCl8MCkrKHA+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEFlLG5uKSxwPShwPU1hdGguaW11bChBZSxHbikpK01hdGguaW11bChqZSxubil8MCx3PU1hdGguaW11bChqZSxHbiksXz1fK01hdGguaW11bChaZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKFpl''@;'; put 'put ''LGRuKXwwKStNYXRoLmltdWwoY3QsZnQpfDAsdz13K01hdGguaW11bChjdCxkbil8MCxfPV8rTWF0aC5pbXVsKEllLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsanQpfDApK01hdGguaW11bChYZSx3dCl8MCx3PXcrTWF0aC5pbXVsKFhlLGp0KXwwLF89XytNYXRoLmltdWwoRmUsSHQpfDAs''@;'; put 'put ''cD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKHdlLEh0KXwwLHc9dytNYXRoLmltdWwod2UscG4pfDAsXz1fK01hdGguaW11bChVZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGVuKXwwKStNYXRoLmltdWwocWUsRXQpfDAsdz13K01hdGguaW11bChxZSxlbil8MCxfPV8r''@;'; put 'put ''TWF0aC5pbXVsKERlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsJHQpfDApK01hdGguaW11bChCZSx5dCl8MCx3PXcrTWF0aC5pbXVsKEJlLCR0KXwwO3ZhciBicj0oaGUrKF89XytNYXRoLmltdWwoTGUsenQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxfbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEhlLHp0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxfbil8MCkrKHA+Pj4xMyl8MCkrKGJyPj4+MjYpfDAsYnImPTY3MTA4ODYzLF89TWF0aC5pbXVsKHN0LG5uKSxwPShwPU1hdGguaW11bChzdCxHbikpK01hdGguaW11bCh4dCxubil8MCx3PU1hdGguaW11bCh4''@;'; put 'put ''dCxHbiksXz1fK01hdGguaW11bChBZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLGRuKXwwKStNYXRoLmltdWwoamUsZnQpfDAsdz13K01hdGguaW11bChqZSxkbil8MCxfPV8rTWF0aC5pbXVsKFplLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsanQpfDApK01hdGguaW11bChjdCx3dCl8''@;'; put 'put ''MCx3PXcrTWF0aC5pbXVsKGN0LGp0KXwwLF89XytNYXRoLmltdWwoSWUsSHQpfDAscD0ocD1wK01hdGguaW11bChJZSxwbil8MCkrTWF0aC5pbXVsKFhlLEh0KXwwLHc9dytNYXRoLmltdWwoWGUscG4pfDAsXz1fK01hdGguaW11bChGZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLGVuKXww''@;'; put 'put ''KStNYXRoLmltdWwod2UsRXQpfDAsdz13K01hdGguaW11bCh3ZSxlbil8MCxfPV8rTWF0aC5pbXVsKFVlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsJHQpfDApK01hdGguaW11bChxZSx5dCl8MCx3PXcrTWF0aC5pbXVsKHFlLCR0KXwwLF89XytNYXRoLmltdWwoRGUsenQpfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKEJlLHp0KXwwLHc9dytNYXRoLmltdWwoQmUsX24pfDA7dmFyIExpPShoZSsoXz1fK01hdGguaW11bChMZSxybil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLFBuKXwwKStNYXRoLmltdWwoSGUscm4pfDApKTw8MTMpfDA7''@;'; put 'put ''aGU9KCh3PXcrTWF0aC5pbXVsKEhlLFBuKXwwKSsocD4+PjEzKXwwKSsoTGk+Pj4yNil8MCxMaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoT3Qsbm4pLHA9KHA9TWF0aC5pbXVsKE90LEduKSkrTWF0aC5pbXVsKEt0LG5uKXwwLHc9TWF0aC5pbXVsKEt0LEduKSxfPV8rTWF0aC5pbXVsKHN0LGZ0''@;'; put 'put ''KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsZG4pfDApK01hdGguaW11bCh4dCxmdCl8MCx3PXcrTWF0aC5pbXVsKHh0LGRuKXwwLF89XytNYXRoLmltdWwoQWUsd3QpfDAscD0ocD1wK01hdGguaW11bChBZSxqdCl8MCkrTWF0aC5pbXVsKGplLHd0KXwwLHc9dytNYXRoLmltdWwoamUsanQpfDAs''@;'; put 'put ''Xz1fK01hdGguaW11bChaZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLHBuKXwwKStNYXRoLmltdWwoY3QsSHQpfDAsdz13K01hdGguaW11bChjdCxwbil8MCxfPV8rTWF0aC5pbXVsKEllLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsZW4pfDApK01hdGguaW11bChYZSxFdCl8MCx3PXcr''@;'; put 'put ''TWF0aC5pbXVsKFhlLGVuKXwwLF89XytNYXRoLmltdWwoRmUseXQpfDAscD0ocD1wK01hdGguaW11bChGZSwkdCl8MCkrTWF0aC5pbXVsKHdlLHl0KXwwLHc9dytNYXRoLmltdWwod2UsJHQpfDAsXz1fK01hdGguaW11bChVZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLF9uKXwwKStNYXRo''@;'; put 'put ''LmltdWwocWUsenQpfDAsdz13K01hdGguaW11bChxZSxfbil8MCxfPV8rTWF0aC5pbXVsKERlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsUG4pfDApK01hdGguaW11bChCZSxybil8MCx3PXcrTWF0aC5pbXVsKEJlLFBuKXwwO3ZhciBsbz0oaGUrKF89XytNYXRoLmltdWwoTGUsWHQpfDAp''@;'; put 'put ''fDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxKbil8MCkrTWF0aC5pbXVsKEhlLFh0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxKbil8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LG5uKSxwPShwPU1hdGguaW11''@;'; put 'put ''bChCdCxHbikpK01hdGguaW11bCh5bixubil8MCx3PU1hdGguaW11bCh5bixHbiksXz1fK01hdGguaW11bChPdCxmdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGRuKXwwKStNYXRoLmltdWwoS3QsZnQpfDAsdz13K01hdGguaW11bChLdCxkbil8MCxfPV8rTWF0aC5pbXVsKHN0LHd0KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoc3QsanQpfDApK01hdGguaW11bCh4dCx3dCl8MCx3PXcrTWF0aC5pbXVsKHh0LGp0KXwwLF89XytNYXRoLmltdWwoQWUsSHQpfDAscD0ocD1wK01hdGguaW11bChBZSxwbil8MCkrTWF0aC5pbXVsKGplLEh0KXwwLHc9dytNYXRoLmltdWwoamUscG4pfDAsXz1fK01h''@;'; put 'put ''dGguaW11bChaZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLGVuKXwwKStNYXRoLmltdWwoY3QsRXQpfDAsdz13K01hdGguaW11bChjdCxlbil8MCxfPV8rTWF0aC5pbXVsKEllLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsJHQpfDApK01hdGguaW11bChYZSx5dCl8MCx3PXcrTWF0aC5p''@;'; put 'put ''bXVsKFhlLCR0KXwwLF89XytNYXRoLmltdWwoRmUsenQpfDAscD0ocD1wK01hdGguaW11bChGZSxfbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLHc9dytNYXRoLmltdWwod2UsX24pfDAsXz1fK01hdGguaW11bChVZSxybil8MCxwPShwPXArTWF0aC5pbXVsKFVlLFBuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''cWUscm4pfDAsdz13K01hdGguaW11bChxZSxQbil8MCxfPV8rTWF0aC5pbXVsKERlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSm4pfDApK01hdGguaW11bChCZSxYdCl8MCx3PXcrTWF0aC5pbXVsKEJlLEpuKXwwO3ZhciBVbj0oaGUrKF89XytNYXRoLmltdWwoTGUsYW4pfDApfDApKygo''@;'; put 'put ''ODE5MSYocD0ocD1wK01hdGguaW11bChMZSx0bil8MCkrTWF0aC5pbXVsKEhlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFVuPj4+MjYpfDAsVW4mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LGZ0KSxwPShwPU1hdGguaW11bChCdCxk''@;'; put 'put ''bikpK01hdGguaW11bCh5bixmdCl8MCx3PU1hdGguaW11bCh5bixkbiksXz1fK01hdGguaW11bChPdCx3dCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGp0KXwwKStNYXRoLmltdWwoS3Qsd3QpfDAsdz13K01hdGguaW11bChLdCxqdCl8MCxfPV8rTWF0aC5pbXVsKHN0LEh0KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoc3QscG4pfDApK01hdGguaW11bCh4dCxIdCl8MCx3PXcrTWF0aC5pbXVsKHh0LHBuKXwwLF89XytNYXRoLmltdWwoQWUsRXQpfDAscD0ocD1wK01hdGguaW11bChBZSxlbil8MCkrTWF0aC5pbXVsKGplLEV0KXwwLHc9dytNYXRoLmltdWwoamUsZW4pfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChaZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKFplLCR0KXwwKStNYXRoLmltdWwoY3QseXQpfDAsdz13K01hdGguaW11bChjdCwkdCl8MCxfPV8rTWF0aC5pbXVsKEllLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsX24pfDApK01hdGguaW11bChYZSx6dCl8MCx3PXcrTWF0aC5pbXVsKFhl''@;'; put 'put ''LF9uKXwwLF89XytNYXRoLmltdWwoRmUscm4pfDAscD0ocD1wK01hdGguaW11bChGZSxQbil8MCkrTWF0aC5pbXVsKHdlLHJuKXwwLHc9dytNYXRoLmltdWwod2UsUG4pfDAsXz1fK01hdGguaW11bChVZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLEpuKXwwKStNYXRoLmltdWwocWUsWHQp''@;'; put 'put ''fDAsdz13K01hdGguaW11bChxZSxKbil8MDt2YXIgWGk9KGhlKyhfPV8rTWF0aC5pbXVsKERlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRGUsdG4pfDApK01hdGguaW11bChCZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoQmUsdG4pfDApKyhwPj4+MTMp''@;'; put 'put ''fDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx3dCkscD0ocD1NYXRoLmltdWwoQnQsanQpKStNYXRoLmltdWwoeW4sd3QpfDAsdz1NYXRoLmltdWwoeW4sanQpLF89XytNYXRoLmltdWwoT3QsSHQpfDAscD0ocD1wK01hdGguaW11bChPdCxwbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEt0LEh0KXwwLHc9dytNYXRoLmltdWwoS3QscG4pfDAsXz1fK01hdGguaW11bChzdCxFdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGVuKXwwKStNYXRoLmltdWwoeHQsRXQpfDAsdz13K01hdGguaW11bCh4dCxlbil8MCxfPV8rTWF0aC5pbXVsKEFlLHl0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoQWUsJHQpfDApK01hdGguaW11bChqZSx5dCl8MCx3PXcrTWF0aC5pbXVsKGplLCR0KXwwLF89XytNYXRoLmltdWwoWmUsenQpfDAscD0ocD1wK01hdGguaW11bChaZSxfbil8MCkrTWF0aC5pbXVsKGN0LHp0KXwwLHc9dytNYXRoLmltdWwoY3QsX24pfDAsXz1fK01hdGguaW11bChJZSxy''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKEllLFBuKXwwKStNYXRoLmltdWwoWGUscm4pfDAsdz13K01hdGguaW11bChYZSxQbil8MCxfPV8rTWF0aC5pbXVsKEZlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsSm4pfDApK01hdGguaW11bCh3ZSxYdCl8MCx3PXcrTWF0aC5pbXVsKHdlLEpuKXww''@;'; put 'put ''O3ZhciBRaT0oaGUrKF89XytNYXRoLmltdWwoVWUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChVZSx0bil8MCkrTWF0aC5pbXVsKHFlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChxZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFFpPj4+MjYpfDAsUWkmPTY3MTA4''@;'; put 'put ''ODYzLF89TWF0aC5pbXVsKEJ0LEh0KSxwPShwPU1hdGguaW11bChCdCxwbikpK01hdGguaW11bCh5bixIdCl8MCx3PU1hdGguaW11bCh5bixwbiksXz1fK01hdGguaW11bChPdCxFdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGVuKXwwKStNYXRoLmltdWwoS3QsRXQpfDAsdz13K01hdGguaW11''@;'; put 'put ''bChLdCxlbil8MCxfPV8rTWF0aC5pbXVsKHN0LHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsJHQpfDApK01hdGguaW11bCh4dCx5dCl8MCx3PXcrTWF0aC5pbXVsKHh0LCR0KXwwLF89XytNYXRoLmltdWwoQWUsenQpfDAscD0ocD1wK01hdGguaW11bChBZSxfbil8MCkrTWF0aC5pbXVsKGpl''@;'; put 'put ''LHp0KXwwLHc9dytNYXRoLmltdWwoamUsX24pfDAsXz1fK01hdGguaW11bChaZSxybil8MCxwPShwPXArTWF0aC5pbXVsKFplLFBuKXwwKStNYXRoLmltdWwoY3Qscm4pfDAsdz13K01hdGguaW11bChjdCxQbil8MCxfPV8rTWF0aC5pbXVsKEllLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUs''@;'; put 'put ''Sm4pfDApK01hdGguaW11bChYZSxYdCl8MCx3PXcrTWF0aC5pbXVsKFhlLEpuKXwwO3ZhciBmbz0oaGUrKF89XytNYXRoLmltdWwoRmUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChGZSx0bil8MCkrTWF0aC5pbXVsKHdlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGgu''@;'; put 'put ''aW11bCh3ZSx0bil8MCkrKHA+Pj4xMyl8MCkrKGZvPj4+MjYpfDAsZm8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LEV0KSxwPShwPU1hdGguaW11bChCdCxlbikpK01hdGguaW11bCh5bixFdCl8MCx3PU1hdGguaW11bCh5bixlbiksXz1fK01hdGguaW11bChPdCx5dCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKE90LCR0KXwwKStNYXRoLmltdWwoS3QseXQpfDAsdz13K01hdGguaW11bChLdCwkdCl8MCxfPV8rTWF0aC5pbXVsKHN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsX24pfDApK01hdGguaW11bCh4dCx6dCl8MCx3PXcrTWF0aC5pbXVsKHh0LF9uKXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''QWUscm4pfDAscD0ocD1wK01hdGguaW11bChBZSxQbil8MCkrTWF0aC5pbXVsKGplLHJuKXwwLHc9dytNYXRoLmltdWwoamUsUG4pfDAsXz1fK01hdGguaW11bChaZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLEpuKXwwKStNYXRoLmltdWwoY3QsWHQpfDAsdz13K01hdGguaW11bChjdCxK''@;'; put 'put ''bil8MDt2YXIgdm89KGhlKyhfPV8rTWF0aC5pbXVsKEllLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoSWUsdG4pfDApK01hdGguaW11bChYZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoWGUsdG4pfDApKyhwPj4+MTMpfDApKyh2bz4+PjI2KXwwLHZvJj02''@;'; put 'put ''NzEwODg2MyxfPU1hdGguaW11bChCdCx5dCkscD0ocD1NYXRoLmltdWwoQnQsJHQpKStNYXRoLmltdWwoeW4seXQpfDAsdz1NYXRoLmltdWwoeW4sJHQpLF89XytNYXRoLmltdWwoT3QsenQpfDAscD0ocD1wK01hdGguaW11bChPdCxfbil8MCkrTWF0aC5pbXVsKEt0LHp0KXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoS3QsX24pfDAsXz1fK01hdGguaW11bChzdCxybil8MCxwPShwPXArTWF0aC5pbXVsKHN0LFBuKXwwKStNYXRoLmltdWwoeHQscm4pfDAsdz13K01hdGguaW11bCh4dCxQbil8MCxfPV8rTWF0aC5pbXVsKEFlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsSm4pfDApK01hdGguaW11''@;'; put 'put ''bChqZSxYdCl8MCx3PXcrTWF0aC5pbXVsKGplLEpuKXwwO3ZhciBScj0oaGUrKF89XytNYXRoLmltdWwoWmUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChaZSx0bil8MCkrTWF0aC5pbXVsKGN0LGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChjdCx0bil8MCkr''@;'; put 'put ''KHA+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LHp0KSxwPShwPU1hdGguaW11bChCdCxfbikpK01hdGguaW11bCh5bix6dCl8MCx3PU1hdGguaW11bCh5bixfbiksXz1fK01hdGguaW11bChPdCxybil8MCxwPShwPXArTWF0aC5pbXVsKE90LFBuKXww''@;'; put 'put ''KStNYXRoLmltdWwoS3Qscm4pfDAsdz13K01hdGguaW11bChLdCxQbil8MCxfPV8rTWF0aC5pbXVsKHN0LFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsSm4pfDApK01hdGguaW11bCh4dCxYdCl8MCx3PXcrTWF0aC5pbXVsKHh0LEpuKXwwO3ZhciBZaT0oaGUrKF89XytNYXRoLmltdWwoQWUs''@;'; put 'put ''YW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChBZSx0bil8MCkrTWF0aC5pbXVsKGplLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChqZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LHJuKSxwPShwPU1h''@;'; put 'put ''dGguaW11bChCdCxQbikpK01hdGguaW11bCh5bixybil8MCx3PU1hdGguaW11bCh5bixQbiksXz1fK01hdGguaW11bChPdCxYdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LEpuKXwwKStNYXRoLmltdWwoS3QsWHQpfDAsdz13K01hdGguaW11bChLdCxKbil8MDt2YXIgem89KGhlKyhfPV8rTWF0''@;'; put 'put ''aC5pbXVsKHN0LGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoc3QsdG4pfDApK01hdGguaW11bCh4dCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoeHQsdG4pfDApKyhwPj4+MTMpfDApKyh6bz4+PjI2KXwwLHpvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxY''@;'; put 'put ''dCkscD0ocD1NYXRoLmltdWwoQnQsSm4pKStNYXRoLmltdWwoeW4sWHQpfDAsdz1NYXRoLmltdWwoeW4sSm4pO3ZhciBpcz0oaGUrKF89XytNYXRoLmltdWwoT3QsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChPdCx0bil8MCkrTWF0aC5pbXVsKEt0LGFuKXwwKSk8PDEzKXww''@;'; put 'put ''O2hlPSgodz13K01hdGguaW11bChLdCx0bil8MCkrKHA+Pj4xMyl8MCkrKGlzPj4+MjYpfDAsaXMmPTY3MTA4ODYzO3ZhciB1cz0oaGUrKF89TWF0aC5pbXVsKEJ0LGFuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChCdCx0bikpK01hdGguaW11bCh5bixhbil8MCkpPDwxMyl8MDtyZXR1''@;'; put 'put ''cm4gaGU9KCh3PU1hdGguaW11bCh5bix0bikpKyhwPj4+MTMpfDApKyh1cz4+PjI2KXwwLHVzJj02NzEwODg2MyxjZVswXT11aSxjZVsxXT1BcixjZVsyXT1ocixjZVszXT1kaSxjZVs0XT1maSxjZVs1XT1obyxjZVs2XT1icixjZVs3XT1MaSxjZVs4XT1sbyxjZVs5XT1VbixjZVsxMF09WGks''@;'; put 'put ''Y2VbMTFdPVFpLGNlWzEyXT1mbyxjZVsxM109dm8sY2VbMTRdPVJyLGNlWzE1XT1ZaSxjZVsxNl09em8sY2VbMTddPWlzLGNlWzE4XT11cywwIT09aGUmJihjZVsxOV09aGUsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gcmUoZyxDLGspe3JldHVybihuZXcgaWUpLm11bHAoZyxDLGspfWZ1bmN0''@;'; put 'put ''aW9uIGllKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwoZWU9SiksRS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZyxDKXt2YXIgXz10aGlzLmxlbmd0aCtnLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1nLmxlbmd0aD9lZSh0aGlzLGcsQyk6Xzw2Mz9K''@;'; put 'put ''KHRoaXMsZyxDKTpfPDEwMjQ/ZnVuY3Rpb24ocCx3LEspe0submVnYXRpdmU9dy5uZWdhdGl2ZV5wLm5lZ2F0aXZlLEsubGVuZ3RoPXAubGVuZ3RoK3cubGVuZ3RoO2Zvcih2YXIgdGU9MCxjZT0wLGhlPTA7aGU8Sy5sZW5ndGgtMTtoZSsrKXt2YXIgU2U9Y2U7Y2U9MDtmb3IodmFyIExlPTY3''@;'; put 'put ''MTA4ODYzJnRlLEhlPU1hdGgubWluKGhlLHcubGVuZ3RoLTEpLHhlPU1hdGgubWF4KDAsaGUtcC5sZW5ndGgrMSk7eGU8PUhlO3hlKyspe3ZhciBCZT0oMHxwLndvcmRzW2hlLXhlXSkqKDB8dy53b3Jkc1t4ZV0pLEdlPTY3MTA4ODYzJkJlO0xlPTY3MTA4ODYzJihHZT1HZStMZXwwKSxjZSs9''@;'; put 'put ''KFNlPShTZT1TZSsoQmUvNjcxMDg4NjR8MCl8MCkrKEdlPj4+MjYpfDApPj4+MjYsU2UmPTY3MTA4ODYzfUsud29yZHNbaGVdPUxlLHRlPVNlLFNlPWNlfXJldHVybiAwIT09dGU/Sy53b3Jkc1toZV09dGU6Sy5sZW5ndGgtLSxLLnN0cmlwKCl9KHRoaXMsZyxDKTpyZSh0aGlzLGcsQyl9LGll''@;'; put 'put ''LnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz1uZXcgQXJyYXkoZyksaz1FLnByb3RvdHlwZS5fY291bnRCaXRzKGcpLTEsXz0wO188ZztfKyspQ1tfXT10aGlzLnJldkJpbihfLGssZyk7cmV0dXJuIEN9LGllLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oZyxDLGsp''@;'; put 'put ''e2lmKDA9PT1nfHxnPT09ay0xKXJldHVybiBnO2Zvcih2YXIgXz0wLHA9MDtwPEM7cCsrKV98PSgxJmcpPDxDLXAtMSxnPj49MTtyZXR1cm4gX30saWUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oZyxDLGssXyxwLHcpe2Zvcih2YXIgSz0wO0s8dztLKyspX1tLXT1DW2dbS11dLHBbS109''@;'; put 'put ''a1tnW0tdXX0saWUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihnLEMsayxfLHAsdyl7dGhpcy5wZXJtdXRlKHcsZyxDLGssXyxwKTtmb3IodmFyIEs9MTtLPHA7Szw8PTEpZm9yKHZhciB0ZT1LPDwxLGNlPU1hdGguY29zKDIqTWF0aC5QSS90ZSksaGU9TWF0aC5zaW4oMipNYXRoLlBJ''@;'; put 'put ''L3RlKSxTZT0wO1NlPHA7U2UrPXRlKWZvcih2YXIgTGU9Y2UsSGU9aGUseGU9MDt4ZTxLO3hlKyspe3ZhciBEZT1rW1NlK3hlXSxCZT1fW1NlK3hlXSxHZT1rW1NlK3hlK0tdLFVlPV9bU2UreGUrS10scWU9TGUqR2UtSGUqVWU7VWU9TGUqVWUrSGUqR2Usa1tTZSt4ZV09RGUrKEdlPXFlKSxf''@;'; put 'put ''W1NlK3hlXT1CZStVZSxrW1NlK3hlK0tdPURlLUdlLF9bU2UreGUrS109QmUtVWUseGUhPT10ZSYmKHFlPWNlKkxlLWhlKkhlLEhlPWNlKkhlK2hlKkxlLExlPXFlKX19LGllLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihnLEMpe3ZhciBrPTF8TWF0aC5tYXgoQyxnKSxfPTEmayxw''@;'; put 'put ''PTA7Zm9yKGs9ay8yfDA7aztrPj4+PTEpcCsrO3JldHVybiAxPDxwKzErX30saWUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihnLEMsayl7aWYoIShrPD0xKSlmb3IodmFyIF89MDtfPGsvMjtfKyspe3ZhciBwPWdbX107Z1tfXT1nW2stXy0xXSxnW2stXy0xXT1wLHA9Q1tfXSxDW19d''@;'; put 'put ''PS1DW2stXy0xXSxDW2stXy0xXT0tcH19LGllLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZyxDKXtmb3IodmFyIGs9MCxfPTA7XzxDLzI7XysrKXt2YXIgcD04MTkyKk1hdGgucm91bmQoZ1syKl8rMV0vQykrTWF0aC5yb3VuZChnWzIqX10vQykraztnW19dPTY3MTA4ODYzJnAs''@;'; put 'put ''az1wPDY3MTA4ODY0PzA6cC82NzEwODg2NHwwfXJldHVybiBnfSxpZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihnLEMsayxfKXtmb3IodmFyIHA9MCx3PTA7dzxDO3crKylrWzIqd109ODE5MSYocCs9MHxnW3ddKSxrWzIqdysxXT04MTkxJihwPj4+PTEzKSxwPj4+PTEzO2Zvcih3''@;'; put 'put ''PTIqQzt3PF87Kyt3KWtbd109MDtEKDA9PT1wKSxEKCEoLTgxOTImcCkpfSxpZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLGs9MDtrPGc7aysrKUNba109MDtyZXR1cm4gQ30saWUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oZyxDLGspe3ZhciBf''@;'; put 'put ''PTIqdGhpcy5ndWVzc0xlbjEzYihnLmxlbmd0aCxDLmxlbmd0aCkscD10aGlzLm1ha2VSQlQoXyksdz10aGlzLnN0dWIoXyksSz1uZXcgQXJyYXkoXyksdGU9bmV3IEFycmF5KF8pLGNlPW5ldyBBcnJheShfKSxoZT1uZXcgQXJyYXkoXyksU2U9bmV3IEFycmF5KF8pLExlPW5ldyBBcnJheShf''@;'; put 'put ''KSxIZT1rLndvcmRzO0hlLmxlbmd0aD1fLHRoaXMuY29udmVydDEzYihnLndvcmRzLGcubGVuZ3RoLEssXyksdGhpcy5jb252ZXJ0MTNiKEMud29yZHMsQy5sZW5ndGgsaGUsXyksdGhpcy50cmFuc2Zvcm0oSyx3LHRlLGNlLF8scCksdGhpcy50cmFuc2Zvcm0oaGUsdyxTZSxMZSxfLHApO2Zv''@;'; put 'put ''cih2YXIgeGU9MDt4ZTxfO3hlKyspe3ZhciBEZT10ZVt4ZV0qU2VbeGVdLWNlW3hlXSpMZVt4ZV07Y2VbeGVdPXRlW3hlXSpMZVt4ZV0rY2VbeGVdKlNlW3hlXSx0ZVt4ZV09RGV9cmV0dXJuIHRoaXMuY29uanVnYXRlKHRlLGNlLF8pLHRoaXMudHJhbnNmb3JtKHRlLGNlLEhlLHcsXyxwKSx0''@;'; put 'put ''aGlzLmNvbmp1Z2F0ZShIZSx3LF8pLHRoaXMubm9ybWFsaXplMTNiKEhlLF8pLGsubmVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLGsubGVuZ3RoPWcubGVuZ3RoK0MubGVuZ3RoLGsuc3RyaXAoKX0sRS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcpe3ZhciBDPW5ldyBFKG51bGwpO3Jl''@;'; put 'put ''dHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxlbmd0aCksdGhpcy5tdWxUbyhnLEMpfSxFLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGcpe3ZhciBDPW5ldyBFKG51bGwpO3JldHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxlbmd0aCkscmUodGhpcyxn''@;'; put 'put ''LEMpfSxFLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZyx0aGlzKX0sRS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCk7Zm9yKHZhciBDPTAsaz0wO2s8dGhpcy5sZW5ndGg7''@;'; put 'put ''aysrKXt2YXIgXz0oMHx0aGlzLndvcmRzW2tdKSpnLHA9KDY3MTA4ODYzJl8pKyg2NzEwODg2MyZDKTtDPj49MjYsQys9Xy82NzEwODg2NHwwLEMrPXA+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJnB9cmV0dXJuIDAhPT1DJiYodGhpcy53b3Jkc1trXT1DLHRoaXMubGVuZ3RoKyspLHRo''@;'; put 'put ''aXN9LEUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihnKX0sRS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxFLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNs''@;'; put 'put ''b25lKCkpfSxFLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyl7dmFyIEM9ZnVuY3Rpb24odyl7Zm9yKHZhciBLPW5ldyBBcnJheSh3LmJpdExlbmd0aCgpKSx0ZT0wO3RlPEsubGVuZ3RoO3RlKyspe3ZhciBoZT10ZSUyNjtLW3RlXT0ody53b3Jkc1t0ZS8yNnwwXSYxPDxoZSk+Pj5oZX1yZXR1''@;'; put 'put ''cm4gS30oZyk7aWYoMD09PUMubGVuZ3RoKXJldHVybiBuZXcgRSgxKTtmb3IodmFyIGs9dGhpcyxfPTA7XzxDLmxlbmd0aCYmMD09PUNbX107XysrLGs9ay5zcXIoKSk7aWYoKytfPEMubGVuZ3RoKWZvcih2YXIgcD1rLnNxcigpO188Qy5sZW5ndGg7XysrLHA9cC5zcXIoKSkwIT09Q1tfXSYm''@;'; put 'put ''KGs9ay5tdWwocCkpO3JldHVybiBrfSxFLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDLGs9ZyUyNixfPShnLWspLzI2LHA9NjcxMDg4NjM+Pj4yNi1rPDwyNi1rO2lmKDAhPT1rKXt2YXIgdz0wO2ZvcihDPTA7Qzx0aGlzLmxl''@;'; put 'put ''bmd0aDtDKyspe3ZhciBLPXRoaXMud29yZHNbQ10mcDt0aGlzLndvcmRzW0NdPSgwfHRoaXMud29yZHNbQ10pLUs8PGt8dyx3PUs+Pj4yNi1rfXcmJih0aGlzLndvcmRzW0NdPXcsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PV8pe2ZvcihDPXRoaXMubGVuZ3RoLTE7Qz49MDtDLS0pdGhpcy53b3Jk''@;'; put 'put ''c1tDK19dPXRoaXMud29yZHNbQ107Zm9yKEM9MDtDPF87QysrKXRoaXMud29yZHNbQ109MDt0aGlzLmxlbmd0aCs9X31yZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gRCgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oZyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihnLEMsayl7dmFyIF87RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApLF89Qz8oQy1DJTI2KS8yNjowO3ZhciBwPWclMjYsdz1NYXRoLm1pbigoZy1wKS8yNix0aGlzLmxlbmd0aCksSz02NzEwODg2M142NzEwODg2Mz4+PnA8PHAsdGU9aztpZihf''@;'; put 'put ''LT13LF89TWF0aC5tYXgoMCxfKSx0ZSl7Zm9yKHZhciBjZT0wO2NlPHc7Y2UrKyl0ZS53b3Jkc1tjZV09dGhpcy53b3Jkc1tjZV07dGUubGVuZ3RoPXd9aWYoMCE9PXcpaWYodGhpcy5sZW5ndGg+dylmb3IodGhpcy5sZW5ndGgtPXcsY2U9MDtjZTx0aGlzLmxlbmd0aDtjZSsrKXRoaXMud29y''@;'; put 'put ''ZHNbY2VdPXRoaXMud29yZHNbY2Urd107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgaGU9MDtmb3IoY2U9dGhpcy5sZW5ndGgtMTtjZT49MCYmKDAhPT1oZXx8Y2U+PV8pO2NlLS0pe3ZhciBTZT0wfHRoaXMud29yZHNbY2VdO3RoaXMud29yZHNbY2VdPWhlPDwyNi1w''@;'; put 'put ''fFNlPj4+cCxoZT1TZSZLfXJldHVybiB0ZSYmMCE9PWhlJiYodGUud29yZHNbdGUubGVuZ3RoKytdPWhlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihnLEMsayl7cmV0dXJu''@;'; put 'put ''IEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGcsQyxrKX0sRS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGcpfSxFLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihnKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuc2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGcpfSxFLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihnKX0sRS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGcmJmc+PTApO3ZhciBDPWclMjYsaz0oZy1DKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1rfHwhKHRoaXMud29yZHNba10mMTw8QykpfSxFLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPWclMjYsaz0oZy1DKS8yNjtyZXR1''@;'; put 'put ''cm4gRCgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PWs/dGhpczooMCE9PUMmJmsrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihrLHRoaXMubGVuZ3RoKSwwIT09QyYmKHRoaXMud29yZHNbdGhpcy5sZW5ndGgt''@;'; put 'put ''MV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+Qzw8QyksdGhpcy5zdHJpcCgpKX0sRS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oZyl9LEUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGcpe3JldHVybiBEKCJudW1iZXIiPT10eXBlb2YgZyks''@;'; put 'put ''RChnPDY3MTA4ODY0KSxnPDA/dGhpcy5pc3VibigtZyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxnPyh0aGlzLndvcmRzWzBdPWctKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhp''@;'; put 'put ''cy5pc3VibihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oZyl9LEUucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihnKXt0aGlzLndvcmRzWzBdKz1nO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ10+PTY3MTA4ODY0O0MrKyl0aGlzLndvcmRzW0Nd''@;'; put 'put ''LT02NzEwODg2NCxDPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW0MrMV09MTp0aGlzLndvcmRzW0MrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsQysxKSx0aGlzfSxFLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihnKXtpZihEKCJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgZyksRChnPDY3MTA4ODY0KSxnPDApcmV0dXJuIHRoaXMuaWFkZG4oLWcpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1nLDE9PT10aGlzLmxlbmd0aCYmdGhp''@;'; put 'put ''cy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBDPTA7Qzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tDXTwwO0MrKyl0aGlzLndvcmRzW0NdKz02NzEwODg2NCx0aGlzLndvcmRzW0MrMV0tPTE7cmV0dXJuIHRoaXMu''@;'; put 'put ''c3RyaXAoKX0sRS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGcpfSxFLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oZyl9LEUucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0wLHRoaXN9LEUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxFLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oZyxDLGspe3ZhciBfLHA7dGhpcy5fZXhwYW5kKGcubGVuZ3RoK2spO3ZhciBLPTA7Zm9yKF89MDtf''@;'; put 'put ''PGcubGVuZ3RoO18rKyl7cD0oMHx0aGlzLndvcmRzW18ra10pK0s7dmFyIHRlPSgwfGcud29yZHNbX10pKkM7Sz0oKHAtPTY3MTA4ODYzJnRlKT4+MjYpLSh0ZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW18ra109NjcxMDg4NjMmcH1mb3IoO188dGhpcy5sZW5ndGgtaztfKyspSz0ocD0oMHx0''@;'; put 'put ''aGlzLndvcmRzW18ra10pK0spPj4yNix0aGlzLndvcmRzW18ra109NjcxMDg4NjMmcDtpZigwPT09SylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihEKC0xPT09SyksSz0wLF89MDtfPHRoaXMubGVuZ3RoO18rKylLPShwPS0oMHx0aGlzLndvcmRzW19dKStLKT4+MjYsdGhpcy53b3Jkc1tfXT02''@;'; put 'put ''NzEwODg2MyZwO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihnLEMpe3ZhciBrLF89dGhpcy5jbG9uZSgpLHA9Zyx3PTB8cC53b3Jkc1twLmxlbmd0aC0xXTswIT0oaz0yNi10aGlzLl9jb3VudEJpdHModykpJiYocD1w''@;'; put 'put ''LnVzaGxuKGspLF8uaXVzaGxuKGspLHc9MHxwLndvcmRzW3AubGVuZ3RoLTFdKTt2YXIgSyx0ZT1fLmxlbmd0aC1wLmxlbmd0aDtpZigibW9kIiE9PUMpeyhLPW5ldyBFKG51bGwpKS5sZW5ndGg9dGUrMSxLLndvcmRzPW5ldyBBcnJheShLLmxlbmd0aCk7Zm9yKHZhciBjZT0wO2NlPEsubGVu''@;'; put 'put ''Z3RoO2NlKyspSy53b3Jkc1tjZV09MH12YXIgaGU9Xy5jbG9uZSgpLl9pc2hsbnN1Ym11bChwLDEsdGUpOzA9PT1oZS5uZWdhdGl2ZSYmKF89aGUsSyYmKEsud29yZHNbdGVdPTEpKTtmb3IodmFyIFNlPXRlLTE7U2U+PTA7U2UtLSl7dmFyIExlPTY3MTA4ODY0KigwfF8ud29yZHNbcC5sZW5n''@;'; put 'put ''dGgrU2VdKSsoMHxfLndvcmRzW3AubGVuZ3RoK1NlLTFdKTtmb3IoTGU9TWF0aC5taW4oTGUvd3wwLDY3MTA4ODYzKSxfLl9pc2hsbnN1Ym11bChwLExlLFNlKTswIT09Xy5uZWdhdGl2ZTspTGUtLSxfLm5lZ2F0aXZlPTAsXy5faXNobG5zdWJtdWwocCwxLFNlKSxfLmlzWmVybygpfHwoXy5u''@;'; put 'put ''ZWdhdGl2ZV49MSk7SyYmKEsud29yZHNbU2VdPUxlKX1yZXR1cm4gSyYmSy5zdHJpcCgpLF8uc3RyaXAoKSwiZGl2IiE9PUMmJjAhPT1rJiZfLml1c2hybihrKSx7ZGl2Okt8fG51bGwsbW9kOl99fSxFLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oZyxDLGspe3JldHVybiBEKCFnLmlzWmVy''@;'; put 'put ''bygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IEUoMCksbW9kOm5ldyBFKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmU/KHc9dGhpcy5uZWcoKS5kaXZtb2QoZyxDKSwibW9kIiE9PUMmJihfPXcuZGl2Lm5lZygpKSwiZGl2IiE9PUMmJihwPXcubW9kLm5lZygpLGsmJjAh''@;'; put 'put ''PT1wLm5lZ2F0aXZlJiZwLmlhZGQoZykpLHtkaXY6Xyxtb2Q6cH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZT8odz10aGlzLmRpdm1vZChnLm5lZygpLEMpLCJtb2QiIT09QyYmKF89dy5kaXYubmVnKCkpLHtkaXY6Xyxtb2Q6dy5tb2R9KTp0aGlzLm5lZ2F0aXZlJmcubmVn''@;'; put 'put ''YXRpdmU/KHc9dGhpcy5uZWcoKS5kaXZtb2QoZy5uZWcoKSxDKSwiZGl2IiE9PUMmJihwPXcubW9kLm5lZygpLGsmJjAhPT1wLm5lZ2F0aXZlJiZwLmlzdWIoZykpLHtkaXY6dy5kaXYsbW9kOnB9KTpnLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoZyk8MD97ZGl2Om5ldyBFKDApLG1v''@;'; put 'put ''ZDp0aGlzfToxPT09Zy5sZW5ndGg/ImRpdiI9PT1DP3tkaXY6dGhpcy5kaXZuKGcud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PUM/e2RpdjpudWxsLG1vZDpuZXcgRSh0aGlzLm1vZG4oZy53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bmV3IEUodGhpcy5t''@;'; put 'put ''b2RuKGcud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihnLEMpO3ZhciBfLHAsd30sRS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJkaXYiLCExKS5kaXZ9LEUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9k''@;'; put 'put ''IiwhMSkubW9kfSxFLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJtb2QiLCEwKS5tb2R9LEUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuZGl2bW9kKGcpO2lmKEMubW9kLmlzWmVybygpKXJldHVybiBDLmRpdjt2YXIg''@;'; put 'put ''az0wIT09Qy5kaXYubmVnYXRpdmU/Qy5tb2QuaXN1YihnKTpDLm1vZCxfPWcudXNocm4oMSkscD1nLmFuZGxuKDEpLHc9ay5jbXAoXyk7cmV0dXJuIHc8MHx8MT09PXAmJjA9PT13P0MuZGl2OjAhPT1DLmRpdi5uZWdhdGl2ZT9DLmRpdi5pc3VibigxKTpDLmRpdi5pYWRkbigxKX0sRS5wcm90''@;'; put 'put ''b3R5cGUubW9kbj1mdW5jdGlvbihnKXtEKGc8PTY3MTA4ODYzKTtmb3IodmFyIEM9NjcxMDg4NjQlZyxrPTAsXz10aGlzLmxlbmd0aC0xO18+PTA7Xy0tKWs9KEMqaysoMHx0aGlzLndvcmRzW19dKSklZztyZXR1cm4ga30sRS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oZyl7RChnPD02NzEw''@;'; put 'put ''ODg2Myk7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpDO3RoaXMud29yZHNba109Xy9nfDAsQz1fJWd9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihnKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlkaXZuKGcpfSxFLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUpLEQoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsaz1nLmNsb25lKCk7Qz0wIT09Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIgXz1uZXcgRSgxKSxwPW5l''@;'; put 'put ''dyBFKDApLHc9bmV3IEUoMCksSz1uZXcgRSgxKSx0ZT0wO0MuaXNFdmVuKCkmJmsuaXNFdmVuKCk7KUMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpLCsrdGU7Zm9yKHZhciBjZT1rLmNsb25lKCksaGU9Qy5jbG9uZSgpOyFDLmlzWmVybygpOyl7Zm9yKHZhciBTZT0wLExlPTE7IShDLndvcmRzWzBd''@;'; put 'put ''JkxlKSYmU2U8MjY7KytTZSxMZTw8PTEpO2lmKFNlPjApZm9yKEMuaXVzaHJuKFNlKTtTZS0tID4wOykoXy5pc09kZCgpfHxwLmlzT2RkKCkpJiYoXy5pYWRkKGNlKSxwLmlzdWIoaGUpKSxfLml1c2hybigxKSxwLml1c2hybigxKTtmb3IodmFyIEhlPTAseGU9MTshKGsud29yZHNbMF0meGUp''@;'; put 'put ''JiZIZTwyNjsrK0hlLHhlPDw9MSk7aWYoSGU+MClmb3Ioay5pdXNocm4oSGUpO0hlLS0gPjA7KSh3LmlzT2RkKCl8fEsuaXNPZGQoKSkmJih3LmlhZGQoY2UpLEsuaXN1YihoZSkpLHcuaXVzaHJuKDEpLEsuaXVzaHJuKDEpO0MuY21wKGspPj0wPyhDLmlzdWIoayksXy5pc3ViKHcpLHAuaXN1''@;'; put 'put ''YihLKSk6KGsuaXN1YihDKSx3LmlzdWIoXyksSy5pc3ViKHApKX1yZXR1cm57YTp3LGI6SyxnY2Q6ay5pdXNobG4odGUpfX0sRS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUpLEQoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsaz1nLmNsb25lKCk7Qz0wIT09''@;'; put 'put ''Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIgXyxwPW5ldyBFKDEpLHc9bmV3IEUoMCksSz1rLmNsb25lKCk7Qy5jbXBuKDEpPjAmJmsuY21wbigxKT4wOyl7Zm9yKHZhciB0ZT0wLGNlPTE7IShDLndvcmRzWzBdJmNlKSYmdGU8MjY7Kyt0ZSxjZTw8PTEpO2lmKHRlPjAp''@;'; put 'put ''Zm9yKEMuaXVzaHJuKHRlKTt0ZS0tID4wOylwLmlzT2RkKCkmJnAuaWFkZChLKSxwLml1c2hybigxKTtmb3IodmFyIGhlPTAsU2U9MTshKGsud29yZHNbMF0mU2UpJiZoZTwyNjsrK2hlLFNlPDw9MSk7aWYoaGU+MClmb3Ioay5pdXNocm4oaGUpO2hlLS0gPjA7KXcuaXNPZGQoKSYmdy5pYWRk''@;'; put 'put ''KEspLHcuaXVzaHJuKDEpO0MuY21wKGspPj0wPyhDLmlzdWIoaykscC5pc3ViKHcpKTooay5pc3ViKEMpLHcuaXN1YihwKSl9cmV0dXJuKF89MD09PUMuY21wbigxKT9wOncpLmNtcG4oMCk8MCYmXy5pYWRkKGcpLF99LEUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihnKXtpZih0aGlzLmlzWmVy''@;'; put 'put ''bygpKXJldHVybiBnLmFicygpO2lmKGcuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEM9dGhpcy5jbG9uZSgpLGs9Zy5jbG9uZSgpO0MubmVnYXRpdmU9MCxrLm5lZ2F0aXZlPTA7Zm9yKHZhciBfPTA7Qy5pc0V2ZW4oKSYmay5pc0V2ZW4oKTtfKyspQy5pdXNocm4oMSksay5pdXNo''@;'; put 'put ''cm4oMSk7Zm9yKDs7KXtmb3IoO0MuaXNFdmVuKCk7KUMuaXVzaHJuKDEpO2Zvcig7ay5pc0V2ZW4oKTspay5pdXNocm4oMSk7dmFyIHA9Qy5jbXAoayk7aWYocDwwKXt2YXIgdz1DO0M9ayxrPXd9ZWxzZSBpZigwPT09cHx8MD09PWsuY21wbigxKSlicmVhaztDLmlzdWIoayl9cmV0dXJuIGsu''@;'; put 'put ''aXVzaGxuKF8pfSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmVnY2QoZykuYS51bW9kKGcpfSxFLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgx''@;'; put 'put ''Jn50aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcpO3ZhciBDPWclMjYsaz0oZy1DKS8yNixfPTE8PEM7aWYodGhpcy5sZW5n''@;'; put 'put ''dGg8PWspcmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba118PV8sdGhpcztmb3IodmFyIHA9Xyx3PWs7MCE9PXAmJnc8dGhpcy5sZW5ndGg7dysrKXt2YXIgSz0wfHRoaXMud29yZHNbd107cD0oSys9cCk+Pj4yNix0aGlzLndvcmRzW3ddPUsmPTY3MTA4ODYzfXJldHVybiAw''@;'; put 'put ''IT09cCYmKHRoaXMud29yZHNbd109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIgQyxrPWc8MDtpZigwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSYmIWspcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmspcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7ayYmKGc9LWcpLEQoZzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIF89MHx0aGlzLndvcmRzWzBd''@;'; put 'put ''O0M9Xz09PWc/MDpfPGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSly''@;'; put 'put ''ZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEM9''@;'; put 'put ''MCxrPXRoaXMubGVuZ3RoLTE7az49MDtrLS0pe3ZhciBfPTB8dGhpcy53b3Jkc1trXSxwPTB8Zy53b3Jkc1trXTtpZihfIT09cCl7XzxwP0M9LTE6Xz5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09PXRoaXMuY21wbihnKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcpPj0wfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5wcm90b3R5cGUubHRlPWZ1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3''@;'; put 'put ''IEYoZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEQoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZy5jb252ZXJ0VG8odGhp''@;'; put 'put ''cykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sRS5wcm90b3R5cGUuX2Zv''@;'; put 'put ''cmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBv''@;'; put 'put ''bmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGcpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZyksdGhpcy5y''@;'; put 'put ''ZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxnKX0sRS5wcm90b3R5cGUu''@;'; put 'put ''cmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJl''@;'; put 'put ''ZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBu''@;'; put 'put ''dW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMp''@;'; put 'put ''LHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxFLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIHVlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVu''@;'; put 'put ''Y3Rpb24gbGUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGFlKCl7bGUuY2FsbCh0aGlzLCJr''@;'; put 'put ''MjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBXKCl7bGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAw''@;'; put 'put ''MDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7bGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBBKCl7bGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBGKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1lPUN9ZWxzZSBEKGcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0''@;'; put 'put ''aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gSChnKXtGLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBFKDEpLml1c2hsbih0''@;'; put 'put ''aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlz''@;'; put 'put ''Lm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWxlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxnfSxsZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihnKXt2YXIgQyxr''@;'; put 'put ''PWc7ZG97dGhpcy5zcGxpdChrLHRoaXMudG1wKSxDPShrPShrPXRoaXMuaW11bEsoaykpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIF89Qzx0aGlzLm4/LTE6ay51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1fPyhrLndvcmRzWzBdPTAsay5sZW5ndGg9''@;'; put 'put ''MSk6Xz4wP2suaXN1Yih0aGlzLnApOnZvaWQgMCE9PWsuc3RyaXA/ay5zdHJpcCgpOmsuX3N0cmlwKCksa30sbGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LGxlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pbXVsKHRo''@;'; put 'put ''aXMuayl9LFQoYWUsbGUpLGFlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgaz00MTk0MzAzLF89TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8XztwKyspQy53b3Jkc1twXT1nLndvcmRzW3BdO2lmKEMubGVuZ3RoPV8sZy5sZW5ndGg8PTkpcmV0dXJuIGcud29yZHNb''@;'; put 'put ''MF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciB3PWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109dyZrLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBLPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBdPShLJmspPDw0fHc+Pj4yMix3PUt9Zy53b3Jkc1twLTEwXT13Pj4+PTIyLGcu''@;'; put 'put ''bGVuZ3RoLT0wPT09dyYmZy5sZW5ndGg+MTA/MTA6OX0sYWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3RoO2srKyl7dmFyIF89MHxnLndvcmRz''@;'; put 'put ''W2tdO2cud29yZHNba109NjcxMDg4NjMmKEMrPTk3NypfKSxDPTY0Kl8rKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sVChXLGxlKSxUKGIsbGUpLFQoQSxsZSks''@;'; put 'put ''QS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsaz0wO2s8Zy5sZW5ndGg7aysrKXt2YXIgXz0xOSooMHxnLndvcmRzW2tdKStDLHA9NjcxMDg4NjMmXztfPj4+PTI2LGcud29yZHNba109cCxDPV99cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tnLmxlbmd0aCsrXT1DKSxn''@;'; put 'put ''fSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZih1ZVtnXSlyZXR1cm4gdWVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBhZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgVztlbHNlIGlmKCJwMTkyIj09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlVua25vd24gcHJpbWUgIitnKTtDPW5ldyBBfXJldHVybiB1ZVtnXT1DLEN9LEYucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRChnLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt''@;'; put 'put ''YmVycyIpfSxGLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0QoIShnLm5lZ2F0aXZlfEMubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQoZy5yZWQmJmcucmVkPT09Qy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRi5w''@;'; put 'put ''cm90b3R5cGUuaW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoZykuX2ZvcmNlUmVkKHRoaXMpOmcudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKGcpe3JldHVybiBnLmlzWmVybygpP2cuY2xv''@;'; put 'put ''bmUoKTp0aGlzLm0uc3ViKGcpLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuYWRkKEMpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90''@;'; put 'put ''b3R5cGUuaWFkZD1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmlhZGQoQyk7cmV0dXJuIGsuY21wKHRoaXMubSk+PTAmJmsuaXN1Yih0aGlzLm0pLGt9LEYucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLnN1YihD''@;'; put 'put ''KTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGsuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuaXN1YihDKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGt9LEYucHJv''@;'; put 'put ''dG90eXBlLnNobD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkxKGcpLHRoaXMuaW1vZChnLnVzaGxuKEMpKX0sRi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkyKGcsQyksdGhpcy5pbW9kKGcuaW11bChDKSl9LEYucHJvdG90eXBlLm11''@;'; put 'put ''bD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkyKGcsQyksdGhpcy5pbW9kKGcubXVsKEMpKX0sRi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbXVsKGcsZy5jbG9uZSgpKX0sRi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLm11''@;'; put 'put ''bChnLGcpfSxGLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGcpe2lmKGcuaXNaZXJvKCkpcmV0dXJuIGcuY2xvbmUoKTt2YXIgQz10aGlzLm0uYW5kbG4oMyk7aWYoRChDJTI9PTEpLDM9PT1DKXt2YXIgaz10aGlzLm0uYWRkKG5ldyBFKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGcs''@;'; put 'put ''ayl9Zm9yKHZhciBfPXRoaXMubS5zdWJuKDEpLHA9MDshXy5pc1plcm8oKSYmMD09PV8uYW5kbG4oMSk7KXArKyxfLml1c2hybigxKTtEKCFfLmlzWmVybygpKTt2YXIgdz1uZXcgRSgxKS50b1JlZCh0aGlzKSxLPXcucmVkTmVnKCksdGU9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLGNlPXRo''@;'; put 'put ''aXMubS5iaXRMZW5ndGgoKTtmb3IoY2U9bmV3IEUoMipjZSpjZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KGNlLHRlKS5jbXAoSyk7KWNlLnJlZElBZGQoSyk7Zm9yKHZhciBoZT10aGlzLnBvdyhjZSxfKSxTZT10aGlzLnBvdyhnLF8uYWRkbigxKS5pdXNocm4oMSkpLExlPXRoaXMucG93''@;'; put 'put ''KGcsXyksSGU9cDswIT09TGUuY21wKHcpOyl7Zm9yKHZhciB4ZT1MZSxEZT0wOzAhPT14ZS5jbXAodyk7RGUrKyl4ZT14ZS5yZWRTcXIoKTtEKERlPEhlKTt2YXIgQmU9dGhpcy5wb3coaGUsbmV3IEUoMSkuaXVzaGxuKEhlLURlLTEpKTtTZT1TZS5yZWRNdWwoQmUpLGhlPUJlLnJlZFNxcigp''@;'; put 'put ''LExlPUxlLnJlZE11bChoZSksSGU9RGV9cmV0dXJuIFNlfSxGLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3ZhciBDPWcuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1DLm5lZ2F0aXZlPyhDLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKEMpLnJlZE5lZygpKTp0aGlzLmltb2QoQyl9LEYucHJv''@;'; put 'put ''dG90eXBlLnBvdz1mdW5jdGlvbihnLEMpe2lmKEMuaXNaZXJvKCkpcmV0dXJuIG5ldyBFKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1DLmNtcG4oMSkpcmV0dXJuIGcuY2xvbmUoKTt2YXIgaz1uZXcgQXJyYXkoMTYpO2tbMF09bmV3IEUoMSkudG9SZWQodGhpcyksa1sxXT1nO2Zvcih2YXIgXz0y''@;'; put 'put ''O188ay5sZW5ndGg7XysrKWtbX109dGhpcy5tdWwoa1tfLTFdLGcpO3ZhciBwPWtbMF0sdz0wLEs9MCx0ZT1DLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09dGUmJih0ZT0yNiksXz1DLmxlbmd0aC0xO18+PTA7Xy0tKXtmb3IodmFyIGNlPUMud29yZHNbX10saGU9dGUtMTtoZT49MDtoZS0tKXt2''@;'; put 'put ''YXIgU2U9Y2U+PmhlJjE7cCE9PWtbMF0mJihwPXRoaXMuc3FyKHApKSwwIT09U2V8fDAhPT13Pyh3PDw9MSx3fD1TZSwoND09KytLfHwwPT09XyYmMD09PWhlKSYmKHA9dGhpcy5tdWwocCxrW3ddKSxLPTAsdz0wKSk6Sz0wfXRlPTI2fXJldHVybiBwfSxGLnByb3RvdHlwZS5jb252ZXJ0VG89''@;'; put 'put ''ZnVuY3Rpb24oZyl7dmFyIEM9Zy51bW9kKHRoaXMubSk7cmV0dXJuIEM9PT1nP0MuY2xvbmUoKTpDfSxGLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihnKXt2YXIgQz1nLmNsb25lKCk7cmV0dXJuIEMucmVkPW51bGwsQ30sRS5tb250PWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgSChn''@;'; put 'put ''KX0sVChILEYpLEgucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcudXNobG4odGhpcy5zaGlmdCkpfSxILnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmltb2QoZy5tdWwodGhpcy5yaW52KSk7cmV0dXJuIEMucmVk''@;'; put 'put ''PW51bGwsQ30sSC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnLEMpe2lmKGcuaXNaZXJvKCl8fEMuaXNaZXJvKCkpcmV0dXJuIGcud29yZHNbMF09MCxnLmxlbmd0aD0xLGc7dmFyIGs9Zy5pbXVsKEMpLF89ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5z''@;'; put 'put ''aGlmdCkubXVsKHRoaXMubSkscD1rLmlzdWIoXykuaXVzaHJuKHRoaXMuc2hpZnQpLHc9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD93PXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYodz1wLmlhZGQodGhpcy5tKSksdy5fZm9yY2VSZWQodGhpcyl9LEgucHJvdG90eXBlLm11bD1mdW5j''@;'; put 'put ''dGlvbihnLEMpe2lmKGcuaXNaZXJvKCl8fEMuaXNaZXJvKCkpcmV0dXJuIG5ldyBFKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgaz1nLm11bChDKSxfPWsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHA9ay5pc3ViKF8pLml1''@;'; put 'put ''c2hybih0aGlzLnNoaWZ0KSx3PXA7cmV0dXJuIHAuY21wKHRoaXMubSk+PTA/dz1wLmlzdWIodGhpcy5tKTpwLmNtcG4oMCk8MCYmKHc9cC5pYWRkKHRoaXMubSkpLHcuX2ZvcmNlUmVkKHRoaXMpfSxILnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmltb2QoZy5faW52''@;'; put 'put ''bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KE09SS5ubWQoTSksdGhpcyl9LDM0ODI6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDU3MTcpLEc9SSgyMzE4KSxEPUkoOTc4NSksVD1JKDkwNzIpLEU9SSgxMDI3KTtmdW5jdGlvbiB6KE4pe0UuY2FsbCh0''@;'; put 'put ''aGlzLCJkaWdlc3QiKSx0aGlzLl9oYXNoPU59aih6LEUpLHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTil7dGhpcy5faGFzaC51cGRhdGUoTil9LHoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpfSxNLmV4cG9ydHM9ZnVuY3Rpb24o''@;'; put 'put ''Til7cmV0dXJuIm1kNSI9PT0oTj1OLnRvTG93ZXJDYXNlKCkpP25ldyBHOiJybWQxNjAiPT09Tnx8InJpcGVtZDE2MCI9PT1OP25ldyBEOm5ldyB6KFQoTikpfX0sODAyODooTSxPLEkpPT57dmFyIGo9SSgyMzE4KTtNLmV4cG9ydHM9ZnVuY3Rpb24oRyl7cmV0dXJuKG5ldyBqKS51cGRhdGUo''@;'; put 'put ''RykuZGlnZXN0KCl9fSw4MzU1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg1NzE3KSxHPUkoMTAzMSksRD1JKDEwMjcpLFQ9SSg5NTA5KS5CdWZmZXIsRT1JKDgwMjgpLHo9SSg5Nzg1KSxOPUkoOTA3MiksQj1ULmFsbG9jKDEyOCk7ZnVuY3Rpb24gWihZLFUpe0QuY2FsbCh0aGlz''@;'; put 'put ''LCJkaWdlc3QiKSwic3RyaW5nIj09dHlwZW9mIFUmJihVPVQuZnJvbShVKSk7dmFyIHE9InNoYTUxMiI9PT1ZfHwic2hhMzg0Ij09PVk/MTI4OjY0O3RoaXMuX2FsZz1ZLHRoaXMuX2tleT1VLFUubGVuZ3RoPnE/VT0oInJtZDE2MCI9PT1ZP25ldyB6Ok4oWSkpLnVwZGF0ZShVKS5kaWdlc3Qo''@;'; put 'put ''KTpVLmxlbmd0aDxxJiYoVT1ULmNvbmNhdChbVSxCXSxxKSk7Zm9yKHZhciBKPXRoaXMuX2lwYWQ9VC5hbGxvY1Vuc2FmZShxKSxlZT10aGlzLl9vcGFkPVQuYWxsb2NVbnNhZmUocSkscmU9MDtyZTxxO3JlKyspSltyZV09NTReVVtyZV0sZWVbcmVdPTkyXlVbcmVdO3RoaXMuX2hhc2g9InJt''@;'; put 'put ''ZDE2MCI9PT1ZP25ldyB6Ok4oWSksdGhpcy5faGFzaC51cGRhdGUoSil9aihaLEQpLFoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oWSl7dGhpcy5faGFzaC51cGRhdGUoWSl9LFoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBZPXRoaXMuX2hhc2guZGlnZXN0KCk7cmV0dXJu''@;'; put 'put ''KCJybWQxNjAiPT09dGhpcy5fYWxnP25ldyB6Ok4odGhpcy5fYWxnKSkudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShZKS5kaWdlc3QoKX0sTS5leHBvcnRzPWZ1bmN0aW9uKFksVSl7cmV0dXJuInJtZDE2MCI9PT0oWT1ZLnRvTG93ZXJDYXNlKCkpfHwicmlwZW1kMTYwIj09PVk/bmV3IFoo''@;'; put 'put ''InJtZDE2MCIsVSk6Im1kNSI9PT1ZP25ldyBHKEUsVSk6bmV3IFooWSxVKX19LDEwMzE6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDU3MTcpLEc9SSg5NTA5KS5CdWZmZXIsRD1JKDEwMjcpLFQ9Ry5hbGxvYygxMjgpLEU9NjQ7ZnVuY3Rpb24geihOLEIpe0QuY2FsbCh0aGlzLCJk''@;'; put 'put ''aWdlc3QiKSwic3RyaW5nIj09dHlwZW9mIEImJihCPUcuZnJvbShCKSksdGhpcy5fYWxnPU4sdGhpcy5fa2V5PUIsQi5sZW5ndGg+RT9CPU4oQik6Qi5sZW5ndGg8RSYmKEI9Ry5jb25jYXQoW0IsVF0sRSkpO2Zvcih2YXIgWj10aGlzLl9pcGFkPUcuYWxsb2NVbnNhZmUoRSksWT10aGlzLl9v''@;'; put 'put ''cGFkPUcuYWxsb2NVbnNhZmUoRSksVT0wO1U8RTtVKyspWltVXT01NF5CW1VdLFlbVV09OTJeQltVXTt0aGlzLl9oYXNoPVtaXX1qKHosRCksei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihOKXt0aGlzLl9oYXNoLnB1c2goTil9LHoucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3Zh''@;'; put 'put ''ciBOPXRoaXMuX2FsZyhHLmNvbmNhdCh0aGlzLl9oYXNoKSk7cmV0dXJuIHRoaXMuX2FsZyhHLmNvbmNhdChbdGhpcy5fb3BhZCxOXSkpfSxNLmV4cG9ydHM9en0sNTgzNTooTSxPLEkpPT57InVzZSBzdHJpY3QiO08ucmFuZG9tQnl0ZXM9Ty5ybmc9Ty5wc2V1ZG9SYW5kb21CeXRlcz1PLnBy''@;'; put 'put ''bmc9SSgxNzk4KSxPLmNyZWF0ZUhhc2g9Ty5IYXNoPUkoMzQ4MiksTy5jcmVhdGVIbWFjPU8uSG1hYz1JKDgzNTUpO3ZhciBqPUkoNjA0MiksRz1PYmplY3Qua2V5cyhqKSxEPVsic2hhMSIsInNoYTIyNCIsInNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiIsIm1kNSIsInJtZDE2MCJdLmNvbmNh''@;'; put 'put ''dChHKTtPLmdldEhhc2hlcz1mdW5jdGlvbigpe3JldHVybiBEfTt2YXIgVD1JKDU2MzIpO08ucGJrZGYyPVQucGJrZGYyLE8ucGJrZGYyU3luYz1ULnBia2RmMlN5bmM7dmFyIEU9SSgzNjE0KTtPLkNpcGhlcj1FLkNpcGhlcixPLmNyZWF0ZUNpcGhlcj1FLmNyZWF0ZUNpcGhlcixPLkNpcGhl''@;'; put 'put ''cml2PUUuQ2lwaGVyaXYsTy5jcmVhdGVDaXBoZXJpdj1FLmNyZWF0ZUNpcGhlcml2LE8uRGVjaXBoZXI9RS5EZWNpcGhlcixPLmNyZWF0ZURlY2lwaGVyPUUuY3JlYXRlRGVjaXBoZXIsTy5EZWNpcGhlcml2PUUuRGVjaXBoZXJpdixPLmNyZWF0ZURlY2lwaGVyaXY9RS5jcmVhdGVEZWNpcGhl''@;'; put 'put ''cml2LE8uZ2V0Q2lwaGVycz1FLmdldENpcGhlcnMsTy5saXN0Q2lwaGVycz1FLmxpc3RDaXBoZXJzO3ZhciB6PUkoMjYwNyk7Ty5EaWZmaWVIZWxsbWFuR3JvdXA9ei5EaWZmaWVIZWxsbWFuR3JvdXAsTy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9ei5jcmVhdGVEaWZmaWVIZWxsbWFuR3Jv''@;'; put 'put ''dXAsTy5nZXREaWZmaWVIZWxsbWFuPXouZ2V0RGlmZmllSGVsbG1hbixPLmNyZWF0ZURpZmZpZUhlbGxtYW49ei5jcmVhdGVEaWZmaWVIZWxsbWFuLE8uRGlmZmllSGVsbG1hbj16LkRpZmZpZUhlbGxtYW47dmFyIE49SSg0NzQzKTtPLmNyZWF0ZVNpZ249Ti5jcmVhdGVTaWduLE8uU2lnbj1O''@;'; put 'put ''LlNpZ24sTy5jcmVhdGVWZXJpZnk9Ti5jcmVhdGVWZXJpZnksTy5WZXJpZnk9Ti5WZXJpZnksTy5jcmVhdGVFQ0RIPUkoNjM5Myk7dmFyIEI9SSg3OTAwKTtPLnB1YmxpY0VuY3J5cHQ9Qi5wdWJsaWNFbmNyeXB0LE8ucHJpdmF0ZUVuY3J5cHQ9Qi5wcml2YXRlRW5jcnlwdCxPLnB1YmxpY0Rl''@;'; put 'put ''Y3J5cHQ9Qi5wdWJsaWNEZWNyeXB0LE8ucHJpdmF0ZURlY3J5cHQ9Qi5wcml2YXRlRGVjcnlwdDt2YXIgWj1JKDc5NjMpO08ucmFuZG9tRmlsbD1aLnJhbmRvbUZpbGwsTy5yYW5kb21GaWxsU3luYz1aLnJhbmRvbUZpbGxTeW5jLE8uY3JlYXRlQ3JlZGVudGlhbHM9ZnVuY3Rpb24oKXt0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoWyJzb3JyeSwgY3JlYXRlQ3JlZGVudGlhbHMgaXMgbm90IGltcGxlbWVudGVkIHlldCIsIndlIGFjY2VwdCBwdWxsIHJlcXVlc3RzIiwiaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5Il0uam9pbigiXG4iKSl9LE8uY29u''@;'; put 'put ''c3RhbnRzPXtESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FOjIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6MSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOjQsREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUjo4LE5QTl9FTkFCTEVEOjEsQUxQTl9FTkFCTEVEOjEsUlNBX1BLQ1MxX1BBRERJTkc6''@;'; put 'put ''MSxSU0FfU1NMVjIzX1BBRERJTkc6MixSU0FfTk9fUEFERElORzozLFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6NCxSU0FfWDkzMV9QQURESU5HOjUsUlNBX1BLQ1MxX1BTU19QQURESU5HOjYsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOjIsUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNT''@;'; put 'put ''RUQ6NCxQT0lOVF9DT05WRVJTSU9OX0hZQlJJRDo2fX0sNTA1NjooTSxPLEkpPT57dmFyIGo9SSg4NzY0KS5CdWZmZXI7Y29uc3R7VHJhbnNmb3JtOkd9PUkoMjgzMCksRD1qLmZyb20oWzIzOSwxODcsMTkxXSk7Y2xhc3MgVCBleHRlbmRzIEd7Y29uc3RydWN0b3IoYWU9e30pe3N1cGVyKHt3''@;'; put 'put ''cml0YWJsZU9iamVjdE1vZGU6ITAsLi4uYWV9KTtjb25zdCBXPXt9O2xldCBiO2ZvcihsZXQgQSBpbiBhZSlXW0IoQSldPWFlW0FdO2lmKGI9dGhpcy5ub3JtYWxpemUoVykpdGhyb3cgYjtzd2l0Y2goVy5yZWNvcmRfZGVsaW1pdGVyKXtjYXNlImF1dG8iOlcucmVjb3JkX2RlbGltaXRlcj1u''@;'; put 'put ''dWxsO2JyZWFrO2Nhc2UidW5peCI6Vy5yZWNvcmRfZGVsaW1pdGVyPSJcbiI7YnJlYWs7Y2FzZSJtYWMiOlcucmVjb3JkX2RlbGltaXRlcj0iXHIiO2JyZWFrO2Nhc2Uid2luZG93cyI6Vy5yZWNvcmRfZGVsaW1pdGVyPSJcclxuIjticmVhaztjYXNlImFzY2lpIjpXLnJlY29yZF9kZWxpbWl0''@;'; put 'put ''ZXI9Ilx4MWUiO2JyZWFrO2Nhc2UidW5pY29kZSI6Vy5yZWNvcmRfZGVsaW1pdGVyPSJcdTIwMjgifXRoaXMub3B0aW9ucz1XLHRoaXMuc3RhdGU9e3N0b3A6ITF9LHRoaXMuaW5mbz17cmVjb3JkczowfX1ub3JtYWxpemUoYWUpe2lmKG51bGw9PWFlLmJvbXx8ITE9PT1hZS5ib20pYWUuYm9t''@;'; put 'put ''PSExO2Vsc2UgaWYoITAhPT1hZS5ib20pcmV0dXJuIG5ldyB6KCJDU1ZfT1BUSU9OX0JPT0xFQU5fSU5WQUxJRF9UWVBFIixbIm9wdGlvbiBgYm9tYCBpcyBvcHRpb25hbCBhbmQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUsIixgZ290ICR7SlNPTi5zdHJpbmdpZnkoYWUuYm9tKX1gXSk7aWYo''@;'; put 'put ''bnVsbD09YWUuZGVsaW1pdGVyKWFlLmRlbGltaXRlcj0iLCI7ZWxzZSBpZihqLmlzQnVmZmVyKGFlLmRlbGltaXRlcikpYWUuZGVsaW1pdGVyPWFlLmRlbGltaXRlci50b1N0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBhZS5kZWxpbWl0ZXIpcmV0dXJuIG5ldyB6KCJDU1ZfT1BU''@;'; put 'put ''SU9OX0RFTElNSVRFUl9JTlZBTElEX1RZUEUiLFsib3B0aW9uIGBkZWxpbWl0ZXJgIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIixgZ290ICR7SlNPTi5zdHJpbmdpZnkoYWUuZGVsaW1pdGVyKX1gXSk7aWYobnVsbD09YWUucXVvdGUpYWUucXVvdGU9JyInO2Vsc2UgaWYoITA9PT1h''@;'; put 'put ''ZS5xdW90ZSlhZS5xdW90ZT0nIic7ZWxzZSBpZighMT09PWFlLnF1b3RlKWFlLnF1b3RlPSIiO2Vsc2UgaWYoai5pc0J1ZmZlcihhZS5xdW90ZSkpYWUucXVvdGU9YWUucXVvdGUudG9TdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgYWUucXVvdGUpcmV0dXJuIG5ldyB6KCJDU1Zf''@;'; put 'put ''T1BUSU9OX1FVT1RFX0lOVkFMSURfVFlQRSIsWyJvcHRpb24gYHF1b3RlYCBtdXN0IGJlIGEgYm9vbGVhbiwgYSBidWZmZXIgb3IgYSBzdHJpbmcsIixgZ290ICR7SlNPTi5zdHJpbmdpZnkoYWUucXVvdGUpfWBdKTtpZihudWxsIT1hZS5xdW90ZWR8fChhZS5xdW90ZWQ9ITEpLG51bGwhPWFl''@;'; put 'put ''LnF1b3RlZF9lbXB0eXx8KGFlLnF1b3RlZF9lbXB0eT12b2lkIDApLG51bGw9PWFlLnF1b3RlZF9tYXRjaHx8ITE9PT1hZS5xdW90ZWRfbWF0Y2g/YWUucXVvdGVkX21hdGNoPW51bGw6QXJyYXkuaXNBcnJheShhZS5xdW90ZWRfbWF0Y2gpfHwoYWUucXVvdGVkX21hdGNoPVthZS5xdW90ZWRf''@;'; put 'put ''bWF0Y2hdKSxhZS5xdW90ZWRfbWF0Y2gpZm9yKGxldCBXIG9mIGFlLnF1b3RlZF9tYXRjaCl7Y29uc3QgYj1XIGluc3RhbmNlb2YgUmVnRXhwO2lmKCJzdHJpbmciIT10eXBlb2YgVyYmIWIpcmV0dXJuIEVycm9yKGBJbnZhbGlkIE9wdGlvbjogcXVvdGVkX21hdGNoIG11c3QgYmUgYSBzdHJp''@;'; put 'put ''bmcgb3IgYSByZWdleCwgZ290ICR7SlNPTi5zdHJpbmdpZnkoVyl9YCl9aWYobnVsbCE9YWUucXVvdGVkX3N0cmluZ3x8KGFlLnF1b3RlZF9zdHJpbmc9ITEpLG51bGwhPWFlLmVvZnx8KGFlLmVvZj0hMCksbnVsbD09YWUuZXNjYXBlKWFlLmVzY2FwZT0nIic7ZWxzZSBpZihqLmlzQnVmZmVy''@;'; put 'put ''KGFlLmVzY2FwZSkpYWUuZXNjYXBlPWFlLmVzY2FwZS50b1N0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBhZS5lc2NhcGUpcmV0dXJuIEVycm9yKGBJbnZhbGlkIE9wdGlvbjogZXNjYXBlIG11c3QgYmUgYSBidWZmZXIgb3IgYSBzdHJpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5''@;'; put 'put ''KGFlLmVzY2FwZSl9YCk7aWYoYWUuZXNjYXBlLmxlbmd0aD4xKXJldHVybiBFcnJvcihgSW52YWxpZCBPcHRpb246IGVzY2FwZSBtdXN0IGJlIG9uZSBjaGFyYWN0ZXIsIGdvdCAke2FlLmVzY2FwZS5sZW5ndGh9IGNoYXJhY3RlcnNgKTtpZihudWxsIT1hZS5oZWFkZXJ8fChhZS5oZWFkZXI9''@;'; put 'put ''ITEpLGFlLmNvbHVtbnM9dGhpcy5ub3JtYWxpemVfY29sdW1ucyhhZS5jb2x1bW5zKSxudWxsIT1hZS5xdW90ZWR8fChhZS5xdW90ZWQ9ITEpLG51bGwhPWFlLmNhc3R8fChhZS5jYXN0PXt9KSxudWxsIT1hZS5jYXN0LmJpZ2ludHx8KGFlLmNhc3QuYmlnaW50PVc9PiIiK1cpLG51bGwhPWFl''@;'; put 'put ''LmNhc3QuYm9vbGVhbnx8KGFlLmNhc3QuYm9vbGVhbj1XPT5XPyIxIjoiIiksbnVsbCE9YWUuY2FzdC5kYXRlfHwoYWUuY2FzdC5kYXRlPVc9PiIiK1cuZ2V0VGltZSgpKSxudWxsIT1hZS5jYXN0Lm51bWJlcnx8KGFlLmNhc3QubnVtYmVyPVc9PiIiK1cpLG51bGwhPWFlLmNhc3Qub2JqZWN0''@;'; put 'put ''fHwoYWUuY2FzdC5vYmplY3Q9Vz0+SlNPTi5zdHJpbmdpZnkoVykpLG51bGwhPWFlLmNhc3Quc3RyaW5nfHwoYWUuY2FzdC5zdHJpbmc9ZnVuY3Rpb24oVyl7cmV0dXJuIFd9KSxudWxsPT1hZS5yZWNvcmRfZGVsaW1pdGVyKWFlLnJlY29yZF9kZWxpbWl0ZXI9IlxuIjtlbHNlIGlmKGouaXNC''@;'; put 'put ''dWZmZXIoYWUucmVjb3JkX2RlbGltaXRlcikpYWUucmVjb3JkX2RlbGltaXRlcj1hZS5yZWNvcmRfZGVsaW1pdGVyLnRvU3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGFlLnJlY29yZF9kZWxpbWl0ZXIpcmV0dXJuIEVycm9yKGBJbnZhbGlkIE9wdGlvbjogcmVjb3JkX2RlbGlt''@;'; put 'put ''aXRlciBtdXN0IGJlIGEgYnVmZmVyIG9yIGEgc3RyaW5nLCBnb3QgJHtKU09OLnN0cmluZ2lmeShhZS5yZWNvcmRfZGVsaW1pdGVyKX1gKX1fdHJhbnNmb3JtKGFlLFcsYil7aWYoITA9PT10aGlzLnN0YXRlLnN0b3ApcmV0dXJuO2lmKCFBcnJheS5pc0FycmF5KGFlKSYmIm9iamVjdCIhPXR5''@;'; put 'put ''cGVvZiBhZSlyZXR1cm4gdGhpcy5zdGF0ZS5zdG9wPSEwLGIoRXJyb3IoYEludmFsaWQgUmVjb3JkOiBleHBlY3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBnb3QgJHtKU09OLnN0cmluZ2lmeShhZSl9YCkpO2lmKDA9PT10aGlzLmluZm8ucmVjb3JkcylpZihBcnJheS5pc0FycmF5KGFlKSl7''@;'; put 'put ''aWYoITA9PT10aGlzLm9wdGlvbnMuaGVhZGVyJiYhdGhpcy5vcHRpb25zLmNvbHVtbnMpcmV0dXJuIHRoaXMuc3RhdGUuc3RvcD0hMCxiKEVycm9yKCJVbmRpc2NvdmVyYWJsZSBDb2x1bW5zOiBoZWFkZXIgb3B0aW9uIHJlcXVpcmVzIGNvbHVtbiBvcHRpb24gb3Igb2JqZWN0IHJlY29yZHMi''@;'; put 'put ''KSl9ZWxzZSBudWxsIT10aGlzLm9wdGlvbnMuY29sdW1uc3x8KHRoaXMub3B0aW9ucy5jb2x1bW5zPXRoaXMubm9ybWFsaXplX2NvbHVtbnMoT2JqZWN0LmtleXMoYWUpKSk7MD09PXRoaXMuaW5mby5yZWNvcmRzJiYodGhpcy5ib20oKSx0aGlzLmhlYWRlcnMoKSk7dHJ5e3RoaXMuZW1pdCgi''@;'; put 'put ''cmVjb3JkIixhZSx0aGlzLmluZm8ucmVjb3Jkcyl9Y2F0Y2goRil7cmV0dXJuIHRoaXMuc3RhdGUuc3RvcD0hMCx0aGlzLmVtaXQoImVycm9yIixGKX1sZXQgQTtpZih0aGlzLm9wdGlvbnMuZW9mKXtpZihBPXRoaXMuc3RyaW5naWZ5KGFlKSx2b2lkIDA9PT1BKXJldHVybjtBKz10aGlzLm9w''@;'; put 'put ''dGlvbnMucmVjb3JkX2RlbGltaXRlcn1lbHNle2lmKEE9dGhpcy5zdHJpbmdpZnkoYWUpLHZvaWQgMD09PUEpcmV0dXJuOyh0aGlzLm9wdGlvbnMuaGVhZGVyfHx0aGlzLmluZm8ucmVjb3JkcykmJihBPXRoaXMub3B0aW9ucy5yZWNvcmRfZGVsaW1pdGVyK0EpfXRoaXMuaW5mby5yZWNvcmRz''@;'; put 'put ''KyssdGhpcy5wdXNoKEEpLGIoKX1fZmx1c2goYWUpezA9PT10aGlzLmluZm8ucmVjb3JkcyYmKHRoaXMuYm9tKCksdGhpcy5oZWFkZXJzKCkpLGFlKCl9c3RyaW5naWZ5KGFlLFc9ITEpe2lmKCJvYmplY3QiIT10eXBlb2YgYWUpcmV0dXJuIGFlO2NvbnN0e2NvbHVtbnM6Yn09dGhpcy5vcHRp''@;'; put 'put ''b25zLEY9W107aWYoQXJyYXkuaXNBcnJheShhZSkpe2ImJmFlLnNwbGljZShiLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxhZS5sZW5ndGg7ZysrKXtjb25zdCBDPWFlW2ddLFtrLF9dPXRoaXMuX19jYXN0KEMse2luZGV4OmcsY29sdW1uOmcscmVjb3Jkczp0aGlzLmluZm8ucmVjb3JkcyxoZWFk''@;'; put 'put ''ZXI6V30pO2lmKGspcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsayk7RltnXT1bXyxDXX19ZWxzZSBpZihiKWZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKXtjb25zdCBDPXVlKGFlLGJbZ10ua2V5KSxbayxfXT10aGlzLl9fY2FzdChDLHtpbmRleDpnLGNvbHVtbjpiW2ddLmtleSxy''@;'; put 'put ''ZWNvcmRzOnRoaXMuaW5mby5yZWNvcmRzLGhlYWRlcjpXfSk7aWYoaylyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixrKTtGW2ddPVtfLENdfWVsc2UgZm9yKGxldCBnIG9mIGFlKXtjb25zdCBDPWFlW2ddLFtrLF9dPXRoaXMuX19jYXN0KEMse2luZGV4OmksY29sdW1uOmJbaV0ua2V5''@;'; put 'put ''LHJlY29yZHM6dGhpcy5pbmZvLnJlY29yZHMsaGVhZGVyOld9KTtpZihrKXJldHVybiB2b2lkIHRoaXMuZW1pdCgiZXJyb3IiLGspO0YucHVzaChbXyxDXSl9bGV0IEg9IiI7Zm9yKGxldCBnPTA7ZzxGLmxlbmd0aDtnKyspe2xldCBDLGssW18scF09RltnXTtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IF8pQz10aGlzLm9wdGlvbnM7ZWxzZSBpZihOKF8pKXtpZihDPV8sXz1DLnZhbHVlLGRlbGV0ZSBDLnZhbHVlLCJzdHJpbmciIT10eXBlb2YgXyYmbnVsbCE9XylyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixFcnJvcihgSW52YWxpZCBDYXN0aW5nIFZhbHVlOiByZXR1cm5lZCB2YWx1''@;'; put 'put ''ZSBtdXN0IHJldHVybiBhIHN0cmluZywgbnVsbCBvciB1bmRlZmluZWQsIGdvdCAke0pTT04uc3RyaW5naWZ5KF8pfWApKTtpZihDPXsuLi50aGlzLm9wdGlvbnMsLi4uQ30saz10aGlzLm5vcm1hbGl6ZShDKSlyZXR1cm4gdm9pZCB0aGlzLmVtaXQoImVycm9yIixrKX1lbHNle2lmKG51bGwh''@;'; put 'put ''PV8pcmV0dXJuIHZvaWQgdGhpcy5lbWl0KCJlcnJvciIsRXJyb3IoYEludmFsaWQgQ2FzdGluZyBWYWx1ZTogcmV0dXJuZWQgdmFsdWUgbXVzdCByZXR1cm4gYSBzdHJpbmcsIGFuIG9iamVjdCwgbnVsbCBvciB1bmRlZmluZWQsIGdvdCAke0pTT04uc3RyaW5naWZ5KF8pfWApKTtDPXRoaXMu''@;'; put 'put ''b3B0aW9uc31jb25zdHtkZWxpbWl0ZXI6dyxlc2NhcGU6SyxxdW90ZTp0ZSxxdW90ZWQ6Y2UscXVvdGVkX2VtcHR5OmhlLHF1b3RlZF9zdHJpbmc6U2UscXVvdGVkX21hdGNoOkxlLHJlY29yZF9kZWxpbWl0ZXI6SGV9PUM7aWYoXyl7aWYoInN0cmluZyIhPXR5cGVvZiBfKXJldHVybiB0aGlz''@;'; put 'put ''LmVtaXQoImVycm9yIixFcnJvcihgRm9ybWF0dGVyIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBudWxsIG9yIHVuZGVmaW5lZCwgZ290ICR7SlNPTi5zdHJpbmdpZnkoXyl9YCkpLG51bGw7Y29uc3QgeGU9dy5sZW5ndGgmJl8uaW5kZXhPZih3KT49MCxEZT0iIiE9PXRlJiZfLmluZGV4T2YodGUp''@;'; put 'put ''Pj0wLEJlPV8uaW5kZXhPZihLKT49MCYmSyE9PXRlLEdlPV8uaW5kZXhPZihIZSk+PTAsVWU9U2UmJiJzdHJpbmciPT10eXBlb2YgcDtsZXQgcWU9TGUmJkxlLmZpbHRlcihGZT0+InN0cmluZyI9PXR5cGVvZiBGZT8tMSE9PV8uaW5kZXhPZihGZSk6RmUudGVzdChfKSk7cWU9cWUmJnFlLmxl''@;'; put 'put ''bmd0aD4wO2NvbnN0IG90PSEwPT09RGV8fHhlfHxHZXx8Y2V8fFVlfHxxZTtpZighMD09PW90JiYhMD09PUJlKXtjb25zdCBGZT0iXFwiPT09Sz9uZXcgUmVnRXhwKEsrSywiZyIpOm5ldyBSZWdFeHAoSywiZyIpO189Xy5yZXBsYWNlKEZlLEsrSyl9aWYoITA9PT1EZSl7Y29uc3QgRmU9bmV3''@;'; put 'put ''IFJlZ0V4cCh0ZSwiZyIpO189Xy5yZXBsYWNlKEZlLEsrdGUpfSEwPT09b3QmJihfPXRlK18rdGUpLEgrPV99ZWxzZSghMD09PWhlfHwiIj09PXAmJiEwPT09U2UmJiExIT09aGUpJiYoSCs9dGUrdGUpO2chPT1GLmxlbmd0aC0xJiYoSCs9dyl9cmV0dXJuIEh9Ym9tKCl7ITA9PT10aGlzLm9w''@;'; put 'put ''dGlvbnMuYm9tJiZ0aGlzLnB1c2goRCl9aGVhZGVycygpe2lmKCExPT09dGhpcy5vcHRpb25zLmhlYWRlcnx8dm9pZCAwPT09dGhpcy5vcHRpb25zLmNvbHVtbnMpcmV0dXJuO2xldCBhZT10aGlzLm9wdGlvbnMuY29sdW1ucy5tYXAoVz0+Vy5oZWFkZXIpO2FlPXRoaXMub3B0aW9ucy5lb2Y/''@;'; put 'put ''dGhpcy5zdHJpbmdpZnkoYWUsITApK3RoaXMub3B0aW9ucy5yZWNvcmRfZGVsaW1pdGVyOnRoaXMuc3RyaW5naWZ5KGFlKSx0aGlzLnB1c2goYWUpfV9fY2FzdChhZSxXKXtjb25zdCBiPXR5cGVvZiBhZTt0cnl7cmV0dXJuInN0cmluZyI9PT1iP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3Qu''@;'; put 'put ''c3RyaW5nKGFlLFcpXToiYmlnaW50Ij09PWI/W3ZvaWQgMCx0aGlzLm9wdGlvbnMuY2FzdC5iaWdpbnQoYWUsVyldOiJudW1iZXIiPT09Yj9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0Lm51bWJlcihhZSxXKV06ImJvb2xlYW4iPT09Yj9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LmJvb2xl''@;'; put 'put ''YW4oYWUsVyldOmFlIGluc3RhbmNlb2YgRGF0ZT9bdm9pZCAwLHRoaXMub3B0aW9ucy5jYXN0LmRhdGUoYWUsVyldOiJvYmplY3QiPT09YiYmbnVsbCE9PWFlP1t2b2lkIDAsdGhpcy5vcHRpb25zLmNhc3Qub2JqZWN0KGFlLFcpXTpbdm9pZCAwLGFlLGFlXX1jYXRjaChBKXtyZXR1cm5bQV19''@;'; put 'put ''fW5vcm1hbGl6ZV9jb2x1bW5zKGFlKXtpZihudWxsIT1hZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBhZSl0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb24gImNvbHVtbnMiOiBleHBlY3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0Jyk7aWYoQXJyYXkuaXNBcnJheShhZSkpe2NvbnN0IFc9W107Zm9y''@;'; put 'put ''KGxldCBiIG9mIGFlKWlmKCJzdHJpbmciPT10eXBlb2YgYilXLnB1c2goe2tleTpiLGhlYWRlcjpifSk7ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIGJ8fHZvaWQgMD09PWJ8fEFycmF5LmlzQXJyYXkoYikpdGhyb3cgRXJyb3IoIkludmFsaWQgY29sdW1uIGRlZmluaXRpb246IGV4cGVjdCBh''@;'; put 'put ''IHN0cmluZyBvciBhbiBvYmplY3QiKTtpZighYi5rZXkpdGhyb3cgRXJyb3IoJ0ludmFsaWQgY29sdW1uIGRlZmluaXRpb246IHByb3BlcnR5ICJrZXkiIGlzIHJlcXVpcmVkJyk7dm9pZCAwPT09Yi5oZWFkZXImJihiLmhlYWRlcj1iLmtleSksVy5wdXNoKGIpfWFlPVd9ZWxzZXtjb25zdCBX''@;'; put 'put ''PVtdO2ZvcihsZXQgYiBpbiBhZSlXLnB1c2goe2tleTpiLGhlYWRlcjphZVtiXX0pO2FlPVd9cmV0dXJuIGFlfX19Y29uc3QgRT1mdW5jdGlvbigpe2xldCBsZSxhZSxXO2ZvcihsZXQgQSBpbiBhcmd1bWVudHMpe2NvbnN0IEY9YXJndW1lbnRzW0FdLEg9dHlwZW9mIEY7aWYodm9pZCAwPT09''@;'; put 'put ''bGUmJkFycmF5LmlzQXJyYXkoRikpbGU9RjtlbHNlIGlmKHZvaWQgMD09PWFlJiZOKEYpKWFlPUY7ZWxzZXtpZih2b2lkIDAhPT1XfHwiZnVuY3Rpb24iIT09SCl0aHJvdyBuZXcgeigiQ1NWX0lOVkFMSURfQVJHVU1FTlQiLFsiSW52YWxpZCBhcmd1bWVudDoiLGBnb3QgJHtKU09OLnN0cmlu''@;'; put 'put ''Z2lmeShGKX0gYXQgaW5kZXggJHtBfWBdKTtXPUZ9fWNvbnN0IGI9bmV3IFQoYWUpO2lmKFcpe2NvbnN0IEE9W107Yi5vbigicmVhZGFibGUiLGZ1bmN0aW9uKCl7bGV0IEY7Zm9yKDtudWxsIT09KEY9dGhpcy5yZWFkKCkpOylBLnB1c2goRil9KSxiLm9uKCJlcnJvciIsZnVuY3Rpb24oRil7''@;'; put 'put ''VyhGKX0pLGIub24oImVuZCIsZnVuY3Rpb24oKXtXKHZvaWQgMCxBLmpvaW4oIiIpKX0pfWlmKHZvaWQgMCE9PWxlKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUpc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCl7Zm9yKGxldCBBIG9mIGxlKWIud3JpdGUoQSk7Yi5lbmQoKX0pO2Vs''@;'; put 'put ''c2V7Zm9yKGxldCBBIG9mIGxlKWIud3JpdGUoQSk7Yi5lbmQoKX1yZXR1cm4gYn07Y2xhc3MgeiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGFlLFcsLi4uYil7QXJyYXkuaXNBcnJheShXKSYmKFc9Vy5qb2luKCIgIikpLHN1cGVyKFcpLHZvaWQgMCE9PUVycm9yLmNhcHR1cmVTdGFja1Ry''@;'; put 'put ''YWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHopLHRoaXMuY29kZT1hZTtmb3IoY29uc3QgQSBvZiBiKWZvcihjb25zdCBGIGluIEEpe2NvbnN0IEg9QVtGXTt0aGlzW0ZdPWouaXNCdWZmZXIoSCk/SC50b1N0cmluZygpOm51bGw9PUg/SDpKU09OLnBhcnNlKEpTT04uc3RyaW5n''@;'; put 'put ''aWZ5KEgpKX19fUUuU3RyaW5naWZpZXI9VCxFLkNzdkVycm9yPXosTS5leHBvcnRzPUU7Y29uc3QgTj1mdW5jdGlvbihsZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBsZSYmbnVsbCE9PWxlJiYhQXJyYXkuaXNBcnJheShsZSl9LEI9ZnVuY3Rpb24obGUpe3JldHVybiBsZS5yZXBsYWNlKC8o''@;'; put 'put ''W0EtWl0pL2csZnVuY3Rpb24oYWUsVyl7cmV0dXJuIl8iK1cudG9Mb3dlckNhc2UoKX0pfSxZPS9cXChcXCk/L2csVT1SZWdFeHAoIlteLltcXF1dK3xcXFsoPzooW15cIiddW15bXSopfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxd''@;'; put 'put ''KSg/OlxcLnxcXFtcXF18JCkpIiwiZyIpLHE9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sSj0vXlx3KiQvLGVlPWZ1bmN0aW9uKGxlKXtjb25zdCBhZT10eXBlb2YgbGU7cmV0dXJuInN5bWJvbCI9PT1hZXx8Im9iamVjdCI9PT1hZSYmbGUmJiJb''@;'; put 'put ''b2JqZWN0IFN5bWJvbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGxlKX0saWU9ZnVuY3Rpb24obGUpe2lmKCJzdHJpbmciPT10eXBlb2YgbGV8fGVlKGxlKSlyZXR1cm4gbGU7Y29uc3QgYWU9YCR7bGV9YDtyZXR1cm4iMCI9PWFlJiYxL2xlPT0tSU5GSU5JVFk/Ii0wIjph''@;'; put 'put ''ZX0sdWU9ZnVuY3Rpb24obGUsYWUpe2xldCBXPTA7Y29uc3QgYj0oYWU9ZnVuY3Rpb24obGUsYWUpe3JldHVybiBBcnJheS5pc0FycmF5KGxlKT9sZTpmdW5jdGlvbihXLGIpe2lmKEFycmF5LmlzQXJyYXkoVykpcmV0dXJuITE7Y29uc3QgQT10eXBlb2YgVztyZXR1cm4hKCJudW1iZXIiIT09''@;'; put 'put ''QSYmInN5bWJvbCIhPT1BJiYiYm9vbGVhbiIhPT1BJiZXJiYhZWUoVykpfHxKLnRlc3QoVyl8fCFxLnRlc3QoVyl8fG51bGwhPWImJlcgaW4gT2JqZWN0KGIpfShsZSxhZSk/W2xlXTpmdW5jdGlvbihXKXtjb25zdCBiPVtdO3JldHVybiA0Nj09PVcuY2hhckNvZGVBdCgwKSYmYi5wdXNoKCIi''@;'; put 'put ''KSxXLnJlcGxhY2UoVSxmdW5jdGlvbihBLEYsSCxnKXtsZXQgQz1BO0g/Qz1nLnJlcGxhY2UoWSwiJDEiKTpGJiYoQz1GLnRyaW0oKSksYi5wdXNoKEMpfSksYn0obGUpfShhZSxsZSkpLmxlbmd0aDtmb3IoO251bGwhPWxlJiZXPGI7KWxlPWxlW2llKGFlW1crK10pXTtyZXR1cm4gVyYmVz09''@;'; put 'put ''PWI/bGU6dm9pZCAwfX0sNzU2NTooTSxPLEkpPT57dmFyIGo9SSg4NzY0KS5CdWZmZXI7Y29uc3QgRz1JKDUwNTYpLHtTdHJpbmdEZWNvZGVyOkR9PUkoMjU1Myk7TS5leHBvcnRzPWZ1bmN0aW9uKFQsRT17fSl7Y29uc3Qgej1bXTtmdW5jdGlvbiBOKFope1omJnoucHVzaChaLnRvU3RyaW5n''@;'; put 'put ''KCkpfWouaXNCdWZmZXIoVCkmJihUPShuZXcgRCkud3JpdGUoVCkpO2xldCBCPW5ldyBHLlN0cmluZ2lmaWVyKEUpO0Iub24oImRhdGEiLE4pO2ZvcihsZXQgWiBvZiBUKUIud3JpdGUoWik7cmV0dXJuIEIuZW5kKCksQi5vZmYoImRhdGEiLE4pLHouam9pbigiIil9fSw0Mjg5OihNLE8sSSk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIGo9SSgyMjE1KSxHPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sKCJmb28iKSxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsVD1BcnJheS5wcm90b3R5cGUuY29uY2F0LEU9T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''LHo9SSgxMDQ0KSgpLE49RSYmeixCPWZ1bmN0aW9uKFksVSxxLEope2lmKFUgaW4gWSlpZighMD09PUope2lmKFlbVV09PT1xKXJldHVybn1lbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZihlZT1KKXx8IltvYmplY3QgRnVuY3Rpb25dIiE9PUQuY2FsbChlZSl8fCFKKCkpcmV0dXJuO3ZhciBl''@;'; put 'put ''ZTtOP0UoWSxVLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpxLHdyaXRhYmxlOiEwfSk6WVtVXT1xfSxaPWZ1bmN0aW9uKFksVSl7dmFyIHE9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp7fSxKPWooVSk7RyYmKEo9VC5jYWxsKEosT2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5U3ltYm9scyhVKSkpO2Zvcih2YXIgZWU9MDtlZTxKLmxlbmd0aDtlZSs9MSlCKFksSltlZV0sVVtKW2VlXV0scVtKW2VlXV0pfTtaLnN1cHBvcnRzRGVzY3JpcHRvcnM9ISFOLE0uZXhwb3J0cz1afSw1MjUxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7Ty51dGlscz1JKDEyNzgpLE8u''@;'; put 'put ''Q2lwaGVyPUkoNTc1NiksTy5ERVM9SSgzMjcpLE8uQ0JDPUkoOTA1MSksTy5FREU9SSg2NTEpfSw5MDUxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg5NzQ2KSxHPUkoNTcxNyksRD17fTtmdW5jdGlvbiBUKEUpe2ouZXF1YWwoRS5sZW5ndGgsOCwiSW52YWxpZCBJViBsZW5ndGgi''@;'; put 'put ''KSx0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIHo9MDt6PHRoaXMuaXYubGVuZ3RoO3orKyl0aGlzLml2W3pdPUVbel19Ty5pbnN0YW50aWF0ZT1mdW5jdGlvbihFKXtmdW5jdGlvbiB6KFkpe0UuY2FsbCh0aGlzLFkpLHRoaXMuX2NiY0luaXQoKX1HKHosRSk7Zm9yKHZhciBOPU9iamVj''@;'; put 'put ''dC5rZXlzKEQpLEI9MDtCPE4ubGVuZ3RoO0IrKyl7dmFyIFo9TltCXTt6LnByb3RvdHlwZVtaXT1EW1pdfXJldHVybiB6LmNyZWF0ZT1mdW5jdGlvbihZKXtyZXR1cm4gbmV3IHooWSl9LHp9LEQuX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIgRT1uZXcgVCh0aGlzLm9wdGlvbnMuaXYpO3RoaXMu''@;'; put 'put ''X2NiY1N0YXRlPUV9LEQuX3VwZGF0ZT1mdW5jdGlvbihFLHosTixCKXt2YXIgWT10aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGUsVT10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgcT0wO3E8dGhpcy5ibG9ja1NpemU7cSsrKVVbcV1e''@;'; put 'put ''PUVbeitxXTtmb3IoWS5fdXBkYXRlLmNhbGwodGhpcyxVLDAsTixCKSxxPTA7cTx0aGlzLmJsb2NrU2l6ZTtxKyspVVtxXT1OW0IrcV19ZWxzZXtmb3IoWS5fdXBkYXRlLmNhbGwodGhpcyxFLHosTixCKSxxPTA7cTx0aGlzLmJsb2NrU2l6ZTtxKyspTltCK3FdXj1VW3FdO2ZvcihxPTA7cTx0''@;'; put 'put ''aGlzLmJsb2NrU2l6ZTtxKyspVVtxXT1FW3orcV19fX0sNTc1NjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoOTc0Nik7ZnVuY3Rpb24gRyhEKXt0aGlzLm9wdGlvbnM9RCx0aGlzLnR5cGU9dGhpcy5vcHRpb25zLnR5cGUsdGhpcy5ibG9ja1NpemU9OCx0aGlzLl9pbml0KCksdGhp''@;'; put 'put ''cy5idWZmZXI9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKSx0aGlzLmJ1ZmZlck9mZj0wfU0uZXhwb3J0cz1HLEcucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxHLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oRCl7cmV0dXJuIDA9PT1ELmxlbmd0aD9bXToiZGVjcnlwdCI9PT10aGlz''@;'; put 'put ''LnR5cGU/dGhpcy5fdXBkYXRlRGVjcnlwdChEKTp0aGlzLl91cGRhdGVFbmNyeXB0KEQpfSxHLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uKEQsVCl7Zm9yKHZhciBFPU1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aC10aGlzLmJ1ZmZlck9mZixELmxlbmd0aC1UKSx6PTA7ejxFO3orKyl0''@;'; put 'put ''aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZit6XT1EW1Qrel07cmV0dXJuIHRoaXMuYnVmZmVyT2ZmKz1FLEV9LEcucHJvdG90eXBlLl9mbHVzaEJ1ZmZlcj1mdW5jdGlvbihELFQpe3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxELFQpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5i''@;'; put 'put ''bG9ja1NpemV9LEcucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0PWZ1bmN0aW9uKEQpe3ZhciBUPTAsRT0wLE49bmV3IEFycmF5KCgodGhpcy5idWZmZXJPZmYrRC5sZW5ndGgpL3RoaXMuYmxvY2tTaXplfDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihUKz10aGlzLl9i''@;'; put 'put ''dWZmZXIoRCxUKSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKEUrPXRoaXMuX2ZsdXNoQnVmZmVyKE4sRSkpKTtmb3IodmFyIEI9RC5sZW5ndGgtKEQubGVuZ3RoLVQpJXRoaXMuYmxvY2tTaXplO1Q8QjtUKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoRCxULE4s''@;'; put 'put ''RSksRSs9dGhpcy5ibG9ja1NpemU7Zm9yKDtUPEQubGVuZ3RoO1QrKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1EW1RdO3JldHVybiBOfSxHLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihEKXtmb3IodmFyIFQ9MCxFPTAsej1NYXRoLmNl''@;'; put 'put ''aWwoKHRoaXMuYnVmZmVyT2ZmK0QubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxOPW5ldyBBcnJheSh6KnRoaXMuYmxvY2tTaXplKTt6PjA7ei0tKVQrPXRoaXMuX2J1ZmZlcihELFQpLEUrPXRoaXMuX2ZsdXNoQnVmZmVyKE4sRSk7cmV0dXJuIFQrPXRoaXMuX2J1ZmZlcihELFQpLE59LEcu''@;'; put 'put ''cHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKEQpe3ZhciBULEU7cmV0dXJuIEQmJihUPXRoaXMudXBkYXRlKEQpKSxFPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0aGlzLl9maW5hbERlY3J5cHQoKSxUP1QuY29uY2F0KEUpOkV9LEcucHJvdG90eXBlLl9wYWQ9''@;'; put 'put ''ZnVuY3Rpb24oRCxUKXtpZigwPT09VClyZXR1cm4hMTtmb3IoO1Q8RC5sZW5ndGg7KURbVCsrXT0wO3JldHVybiEwfSxHLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIEQ9bmV3''@;'; put 'put ''IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsRCwwKSxEfSxHLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oRCl7cmV0dXJuIER9LEcucHJvdG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtqLmVxdWFsKHRoaXMuYnVmZmVyT2Zm''@;'; put 'put ''LHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBEPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKEQsMCksdGhpcy5fdW5wYWQoRCl9fSwzMjc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDk3NDYp''@;'; put 'put ''LEc9SSg1NzE3KSxEPUkoMTI3OCksVD1JKDU3NTYpO2Z1bmN0aW9uIEUoKXt0aGlzLnRtcD1uZXcgQXJyYXkoMiksdGhpcy5rZXlzPW51bGx9ZnVuY3Rpb24geihCKXtULmNhbGwodGhpcyxCKTt2YXIgWj1uZXcgRTt0aGlzLl9kZXNTdGF0ZT1aLHRoaXMuZGVyaXZlS2V5cyhaLEIua2V5KX1H''@;'; put 'put ''KHosVCksTS5leHBvcnRzPXosei5jcmVhdGU9ZnVuY3Rpb24oQil7cmV0dXJuIG5ldyB6KEIpfTt2YXIgTj1bMSwxLDIsMiwyLDIsMiwyLDEsMiwyLDIsMiwyLDIsMV07ei5wcm90b3R5cGUuZGVyaXZlS2V5cz1mdW5jdGlvbihCLFope0Iua2V5cz1uZXcgQXJyYXkoMzIpLGouZXF1YWwoWi5s''@;'; put 'put ''ZW5ndGgsdGhpcy5ibG9ja1NpemUsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBZPUQucmVhZFVJbnQzMkJFKFosMCksVT1ELnJlYWRVSW50MzJCRShaLDQpO0QucGMxKFksVSxCLnRtcCwwKSxZPUIudG1wWzBdLFU9Qi50bXBbMV07Zm9yKHZhciBxPTA7cTxCLmtleXMubGVuZ3RoO3ErPTIp''@;'; put 'put ''e3ZhciBKPU5bcT4+PjFdO1k9RC5yMjhzaGwoWSxKKSxVPUQucjI4c2hsKFUsSiksRC5wYzIoWSxVLEIua2V5cyxxKX19LHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oQixaLFksVSl7dmFyIHE9dGhpcy5fZGVzU3RhdGUsSj1ELnJlYWRVSW50MzJCRShCLFopLGVlPUQucmVhZFVJbnQz''@;'; put 'put ''MkJFKEIsWis0KTtELmlwKEosZWUscS50bXAsMCksSj1xLnRtcFswXSxlZT1xLnRtcFsxXSwiZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZW5jcnlwdChxLEosZWUscS50bXAsMCk6dGhpcy5fZGVjcnlwdChxLEosZWUscS50bXAsMCksZWU9cS50bXBbMV0sRC53cml0ZVVJbnQzMkJFKFks''@;'; put 'put ''Sj1xLnRtcFswXSxVKSxELndyaXRlVUludDMyQkUoWSxlZSxVKzQpfSx6LnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKEIsWil7Zm9yKHZhciBZPUIubGVuZ3RoLVosVT1aO1U8Qi5sZW5ndGg7VSsrKUJbVV09WTtyZXR1cm4hMH0sei5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKEIpe2Zvcih2''@;'; put 'put ''YXIgWj1CW0IubGVuZ3RoLTFdLFk9Qi5sZW5ndGgtWjtZPEIubGVuZ3RoO1krKylqLmVxdWFsKEJbWV0sWik7cmV0dXJuIEIuc2xpY2UoMCxCLmxlbmd0aC1aKX0sei5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24oQixaLFksVSxxKXtmb3IodmFyIEo9WixlZT1ZLHJlPTA7cmU8Qi5rZXlz''@;'; put 'put ''Lmxlbmd0aDtyZSs9Mil7dmFyIGllPUIua2V5c1tyZV0sdWU9Qi5rZXlzW3JlKzFdO0QuZXhwYW5kKGVlLEIudG1wLDApO3ZhciBsZT1ELnN1YnN0aXR1dGUoaWVePUIudG1wWzBdLHVlXj1CLnRtcFsxXSksYWU9ZWU7ZWU9KEpeRC5wZXJtdXRlKGxlKSk+Pj4wLEo9YWV9RC5yaXAoZWUsSixV''@;'; put 'put ''LHEpfSx6LnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihCLFosWSxVLHEpe2Zvcih2YXIgSj1ZLGVlPVoscmU9Qi5rZXlzLmxlbmd0aC0yO3JlPj0wO3JlLT0yKXt2YXIgaWU9Qi5rZXlzW3JlXSx1ZT1CLmtleXNbcmUrMV07RC5leHBhbmQoSixCLnRtcCwwKTt2YXIgbGU9RC5zdWJzdGl0''@;'; put 'put ''dXRlKGllXj1CLnRtcFswXSx1ZV49Qi50bXBbMV0pLGFlPUo7Sj0oZWVeRC5wZXJtdXRlKGxlKSk+Pj4wLGVlPWFlfUQucmlwKEosZWUsVSxxKX19LDY1MTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoOTc0NiksRz1JKDU3MTcpLEQ9SSg1NzU2KSxUPUkoMzI3KTtmdW5jdGlvbiBF''@;'; put 'put ''KE4sQil7ai5lcXVhbChCLmxlbmd0aCwyNCwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIFo9Qi5zbGljZSgwLDgpLFk9Qi5zbGljZSg4LDE2KSxVPUIuc2xpY2UoMTYsMjQpO3RoaXMuY2lwaGVycz0iZW5jcnlwdCI9PT1OP1tULmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Olp9KSxULmNy''@;'; put 'put ''ZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Oll9KSxULmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5OlV9KV06W1QuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6VX0pLFQuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6WX0pLFQuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6Wn0pXX1m''@;'; put 'put ''dW5jdGlvbiB6KE4pe0QuY2FsbCh0aGlzLE4pO3ZhciBCPW5ldyBFKHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT1CfUcoeixEKSxNLmV4cG9ydHM9eix6LmNyZWF0ZT1mdW5jdGlvbihOKXtyZXR1cm4gbmV3IHooTil9LHoucHJvdG90eXBlLl91cGRhdGU9ZnVu''@;'; put 'put ''Y3Rpb24oTixCLFosWSl7dmFyIFU9dGhpcy5fZWRlU3RhdGU7VS5jaXBoZXJzWzBdLl91cGRhdGUoTixCLFosWSksVS5jaXBoZXJzWzFdLl91cGRhdGUoWixZLFosWSksVS5jaXBoZXJzWzJdLl91cGRhdGUoWixZLFosWSl9LHoucHJvdG90eXBlLl9wYWQ9VC5wcm90b3R5cGUuX3BhZCx6LnBy''@;'; put 'put ''b3RvdHlwZS5fdW5wYWQ9VC5wcm90b3R5cGUuX3VucGFkfSwxMjc4OihNLE8pPT57InVzZSBzdHJpY3QiO08ucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKEQsVCl7cmV0dXJuKERbMCtUXTw8MjR8RFsxK1RdPDwxNnxEWzIrVF08PDh8RFszK1RdKT4+PjB9LE8ud3JpdGVVSW50MzJCRT1mdW5jdGlv''@;'; put 'put ''bihELFQsRSl7RFswK0VdPVQ+Pj4yNCxEWzErRV09VD4+PjE2JjI1NSxEWzIrRV09VD4+PjgmMjU1LERbMytFXT0yNTUmVH0sTy5pcD1mdW5jdGlvbihELFQsRSx6KXtmb3IodmFyIE49MCxCPTAsWj02O1o+PTA7Wi09Mil7Zm9yKHZhciBZPTA7WTw9MjQ7WSs9OClOPDw9MSxOfD1UPj4+WSta''@;'; put 'put ''JjE7Zm9yKFk9MDtZPD0yNDtZKz04KU48PD0xLE58PUQ+Pj5ZK1omMX1mb3IoWj02O1o+PTA7Wi09Mil7Zm9yKFk9MTtZPD0yNTtZKz04KUI8PD0xLEJ8PVQ+Pj5ZK1omMTtmb3IoWT0xO1k8PTI1O1krPTgpQjw8PTEsQnw9RD4+PlkrWiYxfUVbeiswXT1OPj4+MCxFW3orMV09Qj4+PjB9LE8u''@;'; put 'put ''cmlwPWZ1bmN0aW9uKEQsVCxFLHope2Zvcih2YXIgTj0wLEI9MCxaPTA7Wjw0O1orKylmb3IodmFyIFk9MjQ7WT49MDtZLT04KU48PD0xLE58PVQ+Pj5ZK1omMSxOPDw9MSxOfD1EPj4+WStaJjE7Zm9yKFo9NDtaPDg7WisrKWZvcihZPTI0O1k+PTA7WS09OClCPDw9MSxCfD1UPj4+WStaJjEs''@;'; put 'put ''Qjw8PTEsQnw9RD4+PlkrWiYxO0VbeiswXT1OPj4+MCxFW3orMV09Qj4+PjB9LE8ucGMxPWZ1bmN0aW9uKEQsVCxFLHope2Zvcih2YXIgTj0wLEI9MCxaPTc7Wj49NTtaLS0pe2Zvcih2YXIgWT0wO1k8PTI0O1krPTgpTjw8PTEsTnw9VD4+WStaJjE7Zm9yKFk9MDtZPD0yNDtZKz04KU48PD0x''@;'; put 'put ''LE58PUQ+PlkrWiYxfWZvcihZPTA7WTw9MjQ7WSs9OClOPDw9MSxOfD1UPj5ZK1omMTtmb3IoWj0xO1o8PTM7WisrKXtmb3IoWT0wO1k8PTI0O1krPTgpQjw8PTEsQnw9VD4+WStaJjE7Zm9yKFk9MDtZPD0yNDtZKz04KUI8PD0xLEJ8PUQ+PlkrWiYxfWZvcihZPTA7WTw9MjQ7WSs9OClCPDw9''@;'; put 'put ''MSxCfD1EPj5ZK1omMTtFW3orMF09Tj4+PjAsRVt6KzFdPUI+Pj4wfSxPLnIyOHNobD1mdW5jdGlvbihELFQpe3JldHVybiBEPDxUJjI2ODQzNTQ1NXxEPj4+MjgtVH07dmFyIEk9WzE0LDExLDE3LDQsMjcsMjMsMjUsMCwxMywyMiw3LDE4LDUsOSwxNiwyNCwyLDIwLDEyLDIxLDEsOCwxNSwy''@;'; put 'put ''NiwxNSw0LDI1LDE5LDksMSwyNiwxNiw1LDExLDIzLDgsMTIsNywxNywwLDIyLDMsMTAsMTQsNiwyMCwyNywyNF07Ty5wYzI9ZnVuY3Rpb24oRCxULEUseil7Zm9yKHZhciBOPTAsQj0wLFo9SS5sZW5ndGg+Pj4xLFk9MDtZPFo7WSsrKU48PD0xLE58PUQ+Pj5JW1ldJjE7Zm9yKFk9WjtZPEku''@;'; put 'put ''bGVuZ3RoO1krKylCPDw9MSxCfD1UPj4+SVtZXSYxO0VbeiswXT1OPj4+MCxFW3orMV09Qj4+PjB9LE8uZXhwYW5kPWZ1bmN0aW9uKEQsVCxFKXt2YXIgej0wLE49MDt6PSgxJkQpPDw1fEQ+Pj4yNztmb3IodmFyIEI9MjM7Qj49MTU7Qi09NCl6PDw9Nix6fD1EPj4+QiY2Mztmb3IoQj0xMTtC''@;'; put 'put ''Pj0zO0ItPTQpTnw9RD4+PkImNjMsTjw8PTY7Tnw9KDMxJkQpPDwxfEQ+Pj4zMSxUW0UrMF09ej4+PjAsVFtFKzFdPU4+Pj4wfTt2YXIgaj1bMTQsMCw0LDE1LDEzLDcsMSw0LDIsMTQsMTUsMiwxMSwxMyw4LDEsMywxMCwxMCw2LDYsMTIsMTIsMTEsNSw5LDksNSwwLDMsNyw4LDQsMTUsMSwx''@;'; put 'put ''MiwxNCw4LDgsMiwxMyw0LDYsOSwyLDEsMTEsNywxNSw1LDEyLDExLDksMyw3LDE0LDMsMTAsMTAsMCw1LDYsMCwxMywxNSwzLDEsMTMsOCw0LDE0LDcsNiwxNSwxMSwyLDMsOCw0LDE0LDksMTIsNywwLDIsMSwxMywxMCwxMiw2LDAsOSw1LDExLDEwLDUsMCwxMywxNCw4LDcsMTAsMTEsMSwx''@;'; put 'put ''MCwzLDQsMTUsMTMsNCwxLDIsNSwxMSw4LDYsMTIsNyw2LDEyLDksMCwzLDUsMiwxNCwxNSw5LDEwLDEzLDAsNyw5LDAsMTQsOSw2LDMsMyw0LDE1LDYsNSwxMCwxLDIsMTMsOCwxMiw1LDcsMTQsMTEsMTIsNCwxMSwyLDE1LDgsMSwxMywxLDYsMTAsNCwxMyw5LDAsOCw2LDE1LDksMyw4LDAs''@;'; put 'put ''NywxMSw0LDEsMTUsMiwxNCwxMiwzLDUsMTEsMTAsNSwxNCwyLDcsMTIsNywxMywxMyw4LDE0LDExLDMsNSwwLDYsNiwxNSw5LDAsMTAsMywxLDQsMiw3LDgsMiw1LDEyLDExLDEsMTIsMTAsNCwxNCwxNSw5LDEwLDMsNiwxNSw5LDAsMCw2LDEyLDEwLDExLDEsNywxMywxMyw4LDE1LDksMSw0''@;'; put 'put ''LDMsNSwxNCwxMSw1LDEyLDIsNyw4LDIsNCwxNCwyLDE0LDEyLDExLDQsMiwxLDEyLDcsNCwxMCw3LDExLDEzLDYsMSw4LDUsNSwwLDMsMTUsMTUsMTAsMTMsMywwLDksMTQsOCw5LDYsNCwxMSwyLDgsMSwxMiwxMSw3LDEwLDEsMTMsMTQsNywyLDgsMTMsMTUsNiw5LDE1LDEyLDAsNSw5LDYs''@;'; put 'put ''MTAsMyw0LDAsNSwxNCwzLDEyLDEwLDEsMTUsMTAsNCwxNSwyLDksNywyLDEyLDYsOSw4LDUsMCw2LDEzLDEsMywxMyw0LDE0LDE0LDAsNywxMSw1LDMsMTEsOCw5LDQsMTQsMywxNSwyLDUsMTIsMiw5LDgsNSwxMiwxNSwzLDEwLDcsMTEsMCwxNCw0LDEsMTAsNywxLDYsMTMsMCwxMSw4LDYs''@;'; put 'put ''MTMsNCwxMywxMSwwLDIsMTEsMTQsNywxNSw0LDAsOSw4LDEsMTMsMTAsMywxNCwxMiwzLDksNSw3LDEyLDUsMiwxMCwxNSw2LDgsMSw2LDEsNiw0LDExLDExLDEzLDEzLDgsMTIsMSwzLDQsNywxMCwxNCw3LDEwLDksMTUsNSw2LDAsOCwxNSwwLDE0LDUsMiw5LDMsMiwxMiwxMywxLDIsMTUs''@;'; put 'put ''OCwxMyw0LDgsNiwxMCwxNSwzLDExLDcsMSw0LDEwLDEyLDksNSwzLDYsMTQsMTEsNSwwLDAsMTQsMTIsOSw3LDIsNywyLDExLDEsNCwxNCwxLDcsOSw0LDEyLDEwLDE0LDgsMiwxMywwLDE1LDYsMTIsMTAsOSwxMywwLDE1LDMsMyw1LDUsNiw4LDExXTtPLnN1YnN0aXR1dGU9ZnVuY3Rpb24o''@;'; put 'put ''RCxUKXtmb3IodmFyIEU9MCx6PTA7ejw0O3orKylFPDw9NCxFfD1qWzY0KnorKEQ+Pj4xOC02KnomNjMpXTtmb3Ioej0wO3o8NDt6KyspRTw8PTQsRXw9alsyNTYrNjQqeisoVD4+PjE4LTYqeiY2MyldO3JldHVybiBFPj4+MH07dmFyIEc9WzE2LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5''@;'; put 'put ''LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO08ucGVybXV0ZT1mdW5jdGlvbihEKXtmb3IodmFyIFQ9MCxFPTA7RTxHLmxlbmd0aDtFKyspVDw8PTEsVHw9RD4+PkdbRV0mMTtyZXR1cm4gVD4+PjB9LE8ucGFkU3BsaXQ9ZnVuY3Rpb24o''@;'; put 'put ''RCxULEUpe2Zvcih2YXIgej1ELnRvU3RyaW5nKDIpO3oubGVuZ3RoPFQ7KXo9IjAiK3o7Zm9yKHZhciBOPVtdLEI9MDtCPFQ7Qis9RSlOLnB1c2goei5zbGljZShCLEIrRSkpO3JldHVybiBOLmpvaW4oIiAiKX19LDI2MDc6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9SSgzNTkw''@;'; put 'put ''KSxEPUkoOTc5OSksVD1JKDc0MjYpLEU9e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTtPLkRpZmZpZUhlbGxtYW5Hcm91cD1PLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD1PLmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24oeil7dmFyIE49bmV3IGooRFt6XS5wcmltZSwiaGV4IiksQj1u''@;'; put 'put ''ZXcgaihEW3pdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBUKE4sQil9LE8uY3JlYXRlRGlmZmllSGVsbG1hbj1PLkRpZmZpZUhlbGxtYW49ZnVuY3Rpb24geihOLEIsWixZKXtyZXR1cm4gai5pc0J1ZmZlcihCKXx8dm9pZCAwPT09RVtCXT96KE4sImJpbmFyeSIsQixaKTooQj1CfHwiYmluYXJ5''@;'; put 'put ''IixZPVl8fCJiaW5hcnkiLFo9Wnx8bmV3IGooWzJdKSxqLmlzQnVmZmVyKFopfHwoWj1uZXcgaihaLFkpKSwibnVtYmVyIj09dHlwZW9mIE4/bmV3IFQoRyhOLFopLFosITApOihqLmlzQnVmZmVyKE4pfHwoTj1uZXcgaihOLEIpKSxuZXcgVChOLFosITApKSl9fSw3NDI2OihNLE8sSSk9Pnt2''@;'; put 'put ''YXIgaj1JKDg3NjQpLkJ1ZmZlcixHPUkoMzYyMCksRD1uZXcoSSgzMDQ3KSksVD1uZXcgRygyNCksRT1uZXcgRygxMSksej1uZXcgRygxMCksTj1uZXcgRygzKSxCPW5ldyBHKDcpLFo9SSgzNTkwKSxZPUkoMTc5OCk7ZnVuY3Rpb24gVShpZSx1ZSl7cmV0dXJuIHVlPXVlfHwidXRmOCIsai5p''@;'; put 'put ''c0J1ZmZlcihpZSl8fChpZT1uZXcgaihpZSx1ZSkpLHRoaXMuX3B1Yj1uZXcgRyhpZSksdGhpc31mdW5jdGlvbiBxKGllLHVlKXtyZXR1cm4gdWU9dWV8fCJ1dGY4IixqLmlzQnVmZmVyKGllKXx8KGllPW5ldyBqKGllLHVlKSksdGhpcy5fcHJpdj1uZXcgRyhpZSksdGhpc31NLmV4cG9ydHM9''@;'; put 'put ''ZWU7dmFyIEo9e307ZnVuY3Rpb24gZWUoaWUsdWUsbGUpe3RoaXMuc2V0R2VuZXJhdG9yKHVlKSx0aGlzLl9fcHJpbWU9bmV3IEcoaWUpLHRoaXMuX3ByaW1lPUcubW9udCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPWllLmxlbmd0aCx0aGlzLl9wdWI9dm9pZCAwLHRoaXMuX3ByaXY9''@;'; put 'put ''dm9pZCAwLHRoaXMuX3ByaW1lQ29kZT12b2lkIDAsbGU/KHRoaXMuc2V0UHVibGljS2V5PVUsdGhpcy5zZXRQcml2YXRlS2V5PXEpOnRoaXMuX3ByaW1lQ29kZT04fWZ1bmN0aW9uIHJlKGllLHVlKXt2YXIgbGU9bmV3IGooaWUudG9BcnJheSgpKTtyZXR1cm4gdWU/bGUudG9TdHJpbmcodWUp''@;'; put 'put ''OmxlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlZS5wcm90b3R5cGUsInZlcmlmeUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHRoaXMuX3ByaW1lQ29kZSYmKHRoaXMuX3ByaW1lQ29kZT1mdW5jdGlvbihpZSx1ZSl7dmFyIGxlPXVl''@;'; put 'put ''LnRvU3RyaW5nKCJoZXgiKSxhZT1bbGUsaWUudG9TdHJpbmcoMTYpXS5qb2luKCJfIik7aWYoYWUgaW4gSilyZXR1cm4gSlthZV07dmFyIFcsYj0wO2lmKGllLmlzRXZlbigpfHwhWi5zaW1wbGVTaWV2ZXx8IVouZmVybWF0VGVzdChpZSl8fCFELnRlc3QoaWUpKXJldHVybiBiKz0xLEpbYWVd''@;'; put 'put ''PWIrPSIwMiI9PT1sZXx8IjA1Ij09PWxlPzg6NCxiO3N3aXRjaChELnRlc3QoaWUuc2hybigxKSl8fChiKz0yKSxsZSl7Y2FzZSIwMiI6aWUubW9kKFQpLmNtcChFKSYmKGIrPTgpO2JyZWFrO2Nhc2UiMDUiOihXPWllLm1vZCh6KSkuY21wKE4pJiZXLmNtcChCKSYmKGIrPTgpO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6Yis9NH1yZXR1cm4gSlthZV09YixifSh0aGlzLl9fcHJpbWUsdGhpcy5fX2dlbikpLHRoaXMuX3ByaW1lQ29kZX19KSxlZS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBHKFkodGhpcy5fcHJpbWVMZW4p''@;'; put 'put ''KSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSxlZS5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihpZSl7dmFyIHVlPShpZT0oaWU9bmV3IEcoaWUpKS50b1JlZCh0''@;'; put 'put ''aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksbGU9bmV3IGoodWUudG9BcnJheSgpKSxhZT10aGlzLmdldFByaW1lKCk7aWYobGUubGVuZ3RoPGFlLmxlbmd0aCl7dmFyIFc9bmV3IGooYWUubGVuZ3RoLWxlLmxlbmd0aCk7Vy5maWxsKDApLGxlPWouY29uY2F0KFtX''@;'; put 'put ''LGxlXSl9cmV0dXJuIGxlfSxlZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKGllKXtyZXR1cm4gcmUodGhpcy5fcHViLGllKX0sZWUucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oaWUpe3JldHVybiByZSh0aGlzLl9wcml2LGllKX0sZWUucHJvdG90eXBlLmdldFBy''@;'; put 'put ''aW1lPWZ1bmN0aW9uKGllKXtyZXR1cm4gcmUodGhpcy5fX3ByaW1lLGllKX0sZWUucHJvdG90eXBlLmdldEdlbmVyYXRvcj1mdW5jdGlvbihpZSl7cmV0dXJuIHJlKHRoaXMuX2dlbixpZSl9LGVlLnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24oaWUsdWUpe3JldHVybiB1ZT11ZXx8''@;'; put 'put ''InV0ZjgiLGouaXNCdWZmZXIoaWUpfHwoaWU9bmV3IGooaWUsdWUpKSx0aGlzLl9fZ2VuPWllLHRoaXMuX2dlbj1uZXcgRyhpZSksdGhpc319LDM1OTA6KE0sTyxJKT0+e3ZhciBqPUkoMTc5OCk7TS5leHBvcnRzPWllLGllLnNpbXBsZVNpZXZlPWVlLGllLmZlcm1hdFRlc3Q9cmU7dmFyIEc9''@;'; put 'put ''SSgzNjIwKSxEPW5ldyBHKDI0KSxUPW5ldyhJKDMwNDcpKSxFPW5ldyBHKDEpLHo9bmV3IEcoMiksTj1uZXcgRyg1KSxCPShuZXcgRygxNiksbmV3IEcoOCksbmV3IEcoMTApKSxaPW5ldyBHKDMpLFk9KG5ldyBHKDcpLG5ldyBHKDExKSksVT1uZXcgRyg0KSxxPShuZXcgRygxMiksbnVsbCk7''@;'; put 'put ''ZnVuY3Rpb24gZWUodWUpe2Zvcih2YXIgbGU9ZnVuY3Rpb24gSigpe2lmKG51bGwhPT1xKXJldHVybiBxO3ZhciB1ZT1bXTt1ZVswXT0yO2Zvcih2YXIgbGU9MSxhZT0zO2FlPDEwNDg1NzY7YWUrPTIpe2Zvcih2YXIgVz1NYXRoLmNlaWwoTWF0aC5zcXJ0KGFlKSksYj0wO2I8bGUmJnVlW2Jd''@;'; put 'put ''PD1XJiZhZSV1ZVtiXSE9MDtiKyspO2xlIT09YiYmdWVbYl08PVd8fCh1ZVtsZSsrXT1hZSl9cmV0dXJuIHE9dWUsdWV9KCksYWU9MDthZTxsZS5sZW5ndGg7YWUrKylpZigwPT09dWUubW9kbihsZVthZV0pKXJldHVybiAwPT09dWUuY21wbihsZVthZV0pO3JldHVybiEwfWZ1bmN0aW9uIHJl''@;'; put 'put ''KHVlKXt2YXIgbGU9Ry5tb250KHVlKTtyZXR1cm4gMD09PXoudG9SZWQobGUpLnJlZFBvdyh1ZS5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKX1mdW5jdGlvbiBpZSh1ZSxsZSl7aWYodWU8MTYpcmV0dXJuIG5ldyBHKDI9PT1sZXx8NT09PWxlP1sxNDAsMTIzXTpbMTQwLDM5XSk7dmFyIGFl''@;'; put 'put ''LFc7Zm9yKGxlPW5ldyBHKGxlKTs7KXtmb3IoYWU9bmV3IEcoaihNYXRoLmNlaWwodWUvOCkpKTthZS5iaXRMZW5ndGgoKT51ZTspYWUuaXNocm4oMSk7aWYoYWUuaXNFdmVuKCkmJmFlLmlhZGQoRSksYWUudGVzdG4oMSl8fGFlLmlhZGQoeiksbGUuY21wKHopKXtpZighbGUuY21wKE4pKWZv''@;'; put 'put ''cig7YWUubW9kKEIpLmNtcChaKTspYWUuaWFkZChVKX1lbHNlIGZvcig7YWUubW9kKEQpLmNtcChZKTspYWUuaWFkZChVKTtpZihlZShXPWFlLnNocm4oMSkpJiZlZShhZSkmJnJlKFcpJiZyZShhZSkmJlQudGVzdChXKSYmVC50ZXN0KGFlKSlyZXR1cm4gYWV9fX0sMzYyMDpmdW5jdGlvbihN''@;'; put 'put ''LE8sSSl7IWZ1bmN0aW9uKGosRyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEQoZyxDKXtpZighZyl0aHJvdyBuZXcgRXJyb3IoQ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBUKGcsQyl7Zy5zdXBlcl89Qzt2YXIgaz1mdW5jdGlvbigpe307ay5wcm90b3R5cGU9Qy5wcm90b3R5cGUs''@;'; put 'put ''Zy5wcm90b3R5cGU9bmV3IGssZy5wcm90b3R5cGUuY29uc3RydWN0b3I9Z31mdW5jdGlvbiBFKGcsQyxrKXtpZihFLmlzQk4oZykpcmV0dXJuIGc7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWcmJigibGUiIT09QyYm''@;'; put 'put ''ImJlIiE9PUN8fChrPUMsQz0xMCksdGhpcy5faW5pdChnfHwwLEN8fDEwLGt8fCJiZSIpKX12YXIgejsib2JqZWN0Ij09dHlwZW9mIGo/ai5leHBvcnRzPUU6Ry5CTj1FLEUuQk49RSxFLndvcmRTaXplPTI2O3RyeXt6PXR5cGVvZiB3aW5kb3c8InUiJiZ2b2lkIDAhPT13aW5kb3cuQnVmZmVy''@;'; put 'put ''P3dpbmRvdy5CdWZmZXI6SSg3NzQ4KS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIE4oZyxDKXt2YXIgaz1nLmNoYXJDb2RlQXQoQyk7cmV0dXJuIGs+PTY1JiZrPD03MD9rLTU1Oms+PTk3JiZrPD0xMDI/ay04NzprLTQ4JjE1fWZ1bmN0aW9uIEIoZyxDLGspe3ZhciBfPU4oZyxrKTtyZXR1cm4g''@;'; put 'put ''ay0xPj1DJiYoX3w9TihnLGstMSk8PDQpLF99ZnVuY3Rpb24gWihnLEMsayxfKXtmb3IodmFyIHA9MCx3PU1hdGgubWluKGcubGVuZ3RoLGspLEs9QztLPHc7SysrKXt2YXIgdGU9Zy5jaGFyQ29kZUF0KEspLTQ4O3AqPV8scCs9dGU+PTQ5P3RlLTQ5KzEwOnRlPj0xNz90ZS0xNysxMDp0ZX1y''@;'; put 'put ''ZXR1cm4gcH1FLmlzQk49ZnVuY3Rpb24oZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBFfHxudWxsIT09ZyYmIm9iamVjdCI9PXR5cGVvZiBnJiZnLmNvbnN0cnVjdG9yLndvcmRTaXplPT09RS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShnLndvcmRzKX0sRS5tYXg9ZnVuY3Rpb24oZyxDKXtyZXR1''@;'; put 'put ''cm4gZy5jbXAoQyk+MD9nOkN9LEUubWluPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPDA/ZzpDfSxFLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihnLEMsayl7aWYoIm51bWJlciI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGcsQyxrKTtpZigib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mIGcpcmV0dXJuIHRoaXMuX2luaXRBcnJheShnLEMsayk7ImhleCI9PT1DJiYoQz0xNiksRChDPT09KDB8QykmJkM+PTImJkM8PTM2KTt2YXIgXz0wOyItIj09PShnPWcudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBdJiYoXysrLHRoaXMubmVnYXRpdmU9MSksXzxnLmxlbmd0''@;'; put 'put ''aCYmKDE2PT09Qz90aGlzLl9wYXJzZUhleChnLF8sayk6KHRoaXMuX3BhcnNlQmFzZShnLEMsXyksImxlIj09PWsmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxDLGspKSl9LEUucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGcsQyxrKXtnPDAmJih0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTEsZz0tZyksZzw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZ10sdGhpcy5sZW5ndGg9MSk6Zzw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZnLGcvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihEKGc8OTAwNzE5OTI1NDc0MDk5MiksdGhp''@;'; put 'put ''cy53b3Jkcz1bNjcxMDg4NjMmZyxnLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQyxrKX0sRS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihnLEMsayl7aWYoRCgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGcubGVuZ3RoKSxnLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChnLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBfPTA7Xzx0aGlzLmxlbmd0aDtfKyspdGhp''@;'; put 'put ''cy53b3Jkc1tfXT0wO3ZhciBwLHcsSz0wO2lmKCJiZSI9PT1rKWZvcihfPWcubGVuZ3RoLTEscD0wO18+PTA7Xy09Myl0aGlzLndvcmRzW3BdfD0odz1nW19dfGdbXy0xXTw8OHxnW18tMl08PDE2KTw8SyY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09dz4+PjI2LUsmNjcxMDg4NjMsKEsrPTI0''@;'; put 'put ''KT49MjYmJihLLT0yNixwKyspO2Vsc2UgaWYoImxlIj09PWspZm9yKF89MCxwPTA7XzxnLmxlbmd0aDtfKz0zKXRoaXMud29yZHNbcF18PSh3PWdbX118Z1tfKzFdPDw4fGdbXysyXTw8MTYpPDxLJjY3MTA4ODYzLHRoaXMud29yZHNbcCsxXT13Pj4+MjYtSyY2NzEwODg2MywoSys9MjQpPj0y''@;'; put 'put ''NiYmKEstPTI2LHArKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGcsQyxrKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGcubGVuZ3RoLUMpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIF89MDtfPHRoaXMu''@;'; put 'put ''bGVuZ3RoO18rKyl0aGlzLndvcmRzW19dPTA7dmFyIHAsdz0wLEs9MDtpZigiYmUiPT09aylmb3IoXz1nLmxlbmd0aC0xO18+PUM7Xy09MilwPUIoZyxDLF8pPDx3LHRoaXMud29yZHNbS118PTY3MTA4ODYzJnAsdz49MTg/KHctPTE4LHRoaXMud29yZHNbSys9MV18PXA+Pj4yNik6dys9ODtl''@;'; put 'put ''bHNlIGZvcihfPShnLmxlbmd0aC1DKSUyPT0wP0MrMTpDO188Zy5sZW5ndGg7Xys9MilwPUIoZyxDLF8pPDx3LHRoaXMud29yZHNbS118PTY3MTA4ODYzJnAsdz49MTg/KHctPTE4LHRoaXMud29yZHNbSys9MV18PXA+Pj4yNik6dys9ODt0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJz''@;'; put 'put ''ZUJhc2U9ZnVuY3Rpb24oZyxDLGspe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBfPTAscD0xO3A8PTY3MTA4ODYzO3AqPUMpXysrO18tLSxwPXAvQ3wwO2Zvcih2YXIgdz1nLmxlbmd0aC1rLEs9dyVfLHRlPU1hdGgubWluKHcsdy1LKStrLGNlPTAsaGU9aztoZTx0ZTto''@;'; put 'put ''ZSs9XyljZT1aKGcsaGUsaGUrXyxDKSx0aGlzLmltdWxuKHApLHRoaXMud29yZHNbMF0rY2U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Y2U6dGhpcy5faWFkZG4oY2UpO2lmKDAhPT1LKXt2YXIgU2U9MTtmb3IoY2U9WihnLGhlLGcubGVuZ3RoLEMpLGhlPTA7aGU8SztoZSsrKVNlKj1DO3Ro''@;'; put 'put ''aXMuaW11bG4oU2UpLHRoaXMud29yZHNbMF0rY2U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Y2U6dGhpcy5faWFkZG4oY2UpfXRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihnKXtnLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBDPTA7Qzx0aGlz''@;'; put 'put ''Lmxlbmd0aDtDKyspZy53b3Jkc1tDXT10aGlzLndvcmRzW0NdO2cubGVuZ3RoPXRoaXMubGVuZ3RoLGcubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxnLnJlZD10aGlzLnJlZH0sRS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZz1uZXcgRShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGcp''@;'; put 'put ''LGd9LEUucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oZyl7Zm9yKDt0aGlzLmxlbmd0aDxnOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LEUucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlz''@;'; put 'put ''Lmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sRS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LEUucHJvdG90eXBlLmlu''@;'; put 'put ''c3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIFk9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVT1bMCwwLDI1''@;'; put 'put ''LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxxPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcx''@;'; put 'put ''LDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2Mjkx''@;'; put 'put ''NTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIEooZyxDLGspe2submVnYXRpdmU9Qy5uZWdhdGl2ZV5nLm5lZ2F0aXZlO3ZhciBfPWcubGVuZ3RoK0MubGVuZ3RofDA7ay5sZW5ndGg9XyxfPV8tMXwwO3ZhciBwPTB8Zy53b3Jkc1swXSx3''@;'; put 'put ''PTB8Qy53b3Jkc1swXSxLPXAqdyxjZT1LLzY3MTA4ODY0fDA7ay53b3Jkc1swXT02NzEwODg2MyZLO2Zvcih2YXIgaGU9MTtoZTxfO2hlKyspe2Zvcih2YXIgU2U9Y2U+Pj4yNixMZT02NzEwODg2MyZjZSxIZT1NYXRoLm1pbihoZSxDLmxlbmd0aC0xKSx4ZT1NYXRoLm1heCgwLGhlLWcubGVu''@;'; put 'put ''Z3RoKzEpO3hlPD1IZTt4ZSsrKVNlKz0oSz0ocD0wfGcud29yZHNbaGUteGV8MF0pKih3PTB8Qy53b3Jkc1t4ZV0pK0xlKS82NzEwODg2NHwwLExlPTY3MTA4ODYzJks7ay53b3Jkc1toZV09MHxMZSxjZT0wfFNlfXJldHVybiAwIT09Y2U/ay53b3Jkc1toZV09MHxjZTprLmxlbmd0aC0tLGsu''@;'; put 'put ''c3RyaXAoKX1FLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihnLEMpe3ZhciBrO2lmKEM9MHxDfHwxLDE2PT09KGc9Z3x8MTApfHwiaGV4Ij09PWcpe2s9IiI7Zm9yKHZhciBfPTAscD0wLHc9MDt3PHRoaXMubGVuZ3RoO3crKyl7dmFyIEs9dGhpcy53b3Jkc1t3XSx0ZT0oMTY3NzcyMTUm''@;'; put 'put ''KEs8PF98cCkpLnRvU3RyaW5nKDE2KTtrPTAhPShwPUs+Pj4yNC1fJjE2Nzc3MjE1KXx8dyE9PXRoaXMubGVuZ3RoLTE/WVs2LXRlLmxlbmd0aF0rdGUrazp0ZStrLChfKz0yKT49MjYmJihfLT0yNix3LS0pfWZvcigwIT09cCYmKGs9cC50b1N0cmluZygxNikrayk7ay5sZW5ndGglQyE9MDsp''@;'; put 'put ''az0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihrPSItIitrKSxrfWlmKGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpe3ZhciBjZT1VW2ddLGhlPXFbZ107az0iIjt2YXIgU2U9dGhpcy5jbG9uZSgpO2ZvcihTZS5uZWdhdGl2ZT0wOyFTZS5pc1plcm8oKTspe3ZhciBMZT1TZS5tb2Ru''@;'; put 'put ''KGhlKS50b1N0cmluZyhnKTtrPShTZT1TZS5pZGl2bihoZSkpLmlzWmVybygpP0xlK2s6WVtjZS1MZS5sZW5ndGhdK0xlK2t9Zm9yKHRoaXMuaXNaZXJvKCkmJihrPSIwIitrKTtrLmxlbmd0aCVDIT0wOylrPSIwIitrO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKGs9Ii0iK2spLGt9RCgh''@;'; put 'put ''MSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxFLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9nKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMu''@;'; put 'put ''d29yZHNbMl0/Zys9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJkQoITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1nOmd9LEUucHJvdG90eXBlLnRvSlNPTj1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sRS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gRCh2b2lkIDAhPT16KSx0aGlzLnRvQXJyYXlMaWtlKHosZyxDKX0sRS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLnRvQXJy''@;'; put 'put ''YXlMaWtlKEFycmF5LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXz10aGlzLmJ5dGVMZW5ndGgoKSxwPWt8fE1hdGgubWF4KDEsXyk7RChfPD1wLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksRChwPjAsIlJlcXVlc3Rl''@;'; put 'put ''ZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgdyxLLHRlPSJsZSI9PT1DLGNlPW5ldyBnKHApLGhlPXRoaXMuY2xvbmUoKTtpZih0ZSl7Zm9yKEs9MDshaGUuaXNaZXJvKCk7SysrKXc9aGUuYW5kbG4oMjU1KSxoZS5pdXNocm4oOCksY2VbS109dztmb3IoO0s8cDtLKysp''@;'; put 'put ''Y2VbS109MH1lbHNle2ZvcihLPTA7SzxwLV87SysrKWNlW0tdPTA7Zm9yKEs9MDshaGUuaXNaZXJvKCk7SysrKXc9aGUuYW5kbG4oMjU1KSxoZS5pdXNocm4oOCksY2VbcC1LLTFdPXd9cmV0dXJuIGNlfSxFLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIDMyLU1hdGguY2x6MzIoZyl9OmZ1bmN0aW9uKGcpe3ZhciBDPWcsaz0wO3JldHVybiBDPj00MDk2JiYoays9MTMsQz4+Pj0xMyksQz49NjQmJihrKz03LEM+Pj49NyksQz49OCYmKGsrPTQsQz4+Pj00KSxDPj0yJiYoays9MixDPj4+PTIpLGsrQ30sRS5wcm90b3R5cGUuX3plcm9CaXRz''@;'; put 'put ''PWZ1bmN0aW9uKGcpe2lmKDA9PT1nKXJldHVybiAyNjt2YXIgQz1nLGs9MDtyZXR1cm4hKDgxOTEmQykmJihrKz0xMyxDPj4+PTEzKSwhKDEyNyZDKSYmKGsrPTcsQz4+Pj03KSwhKDE1JkMpJiYoays9NCxDPj4+PTQpLCEoMyZDKSYmKGsrPTIsQz4+Pj0yKSwhKDEmQykmJmsrKyxrfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStDfSxFLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7''@;'; put 'put ''Zm9yKHZhciBnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0NdKTtpZihnKz1rLDI2IT09aylicmVha31yZXR1cm4gZ30sRS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5n''@;'; put 'put ''dGgoKS84KX0sRS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGcpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGVzdG4oZy0xKT90''@;'; put 'put ''aGlzLm5vdG4oZykuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sRS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxFLnByb3RvdHlwZS5p''@;'; put 'put ''bmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxFLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8Zy5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEM9MDtDPGcubGVu''@;'; put 'put ''Z3RoO0MrKyl0aGlzLndvcmRzW0NdPXRoaXMud29yZHNbQ118Zy53b3Jkc1tDXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1b3IoZyl9LEUucHJvdG90eXBlLm9yPWZ1''@;'; put 'put ''bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGcpOmcuY2xvbmUoKS5pb3IodGhpcyl9LEUucHJvdG90eXBlLnVvcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoZyk6Zy5jbG9uZSgp''@;'; put 'put ''Lml1b3IodGhpcyl9LEUucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGcpe3ZhciBDO0M9dGhpcy5sZW5ndGg+Zy5sZW5ndGg/Zzp0aGlzO2Zvcih2YXIgaz0wO2s8Qy5sZW5ndGg7aysrKXRoaXMud29yZHNba109dGhpcy53b3Jkc1trXSZnLndvcmRzW2tdO3JldHVybiB0aGlzLmxlbmd0aD1D''@;'; put 'put ''Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1YW5kKGcpfSxFLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMu''@;'; put 'put ''Y2xvbmUoKS5pYW5kKGcpOmcuY2xvbmUoKS5pYW5kKHRoaXMpfSxFLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoZyk6Zy5jbG9uZSgpLml1YW5kKHRoaXMpfSxFLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlv''@;'; put 'put ''bihnKXt2YXIgQyxrO3RoaXMubGVuZ3RoPmcubGVuZ3RoPyhDPXRoaXMsaz1nKTooQz1nLGs9dGhpcyk7Zm9yKHZhciBfPTA7XzxrLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT1DLndvcmRzW19dXmsud29yZHNbX107aWYodGhpcyE9PUMpZm9yKDtfPEMubGVuZ3RoO18rKyl0aGlzLndvcmRz''@;'; put 'put ''W19dPUMud29yZHNbX107cmV0dXJuIHRoaXMubGVuZ3RoPUMubGVuZ3RoLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihnKXtyZXR1cm4gRCghKHRoaXMubmVnYXRpdmV8Zy5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoZyl9LEUucHJvdG90eXBlLnhvcj1mdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoZyk6Zy5jbG9uZSgpLml4b3IodGhpcyl9LEUucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihnKTpnLmNsb25lKCkuaXV4''@;'; put 'put ''b3IodGhpcyl9LEUucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz0wfE1hdGguY2VpbChnLzI2KSxrPWclMjY7dGhpcy5fZXhwYW5kKEMpLGs+MCYmQy0tO2Zvcih2YXIgXz0wO188QztfKyspdGhpcy53b3Jkc1tfXT02NzEwODg2''@;'; put 'put ''MyZ+dGhpcy53b3Jkc1tfXTtyZXR1cm4gaz4wJiYodGhpcy53b3Jkc1tfXT1+dGhpcy53b3Jkc1tfXSY2NzEwODg2Mz4+MjYtayksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZyl9LEUucHJvdG90eXBlLnNldG49''@;'; put 'put ''ZnVuY3Rpb24oZyxDKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIGs9Zy8yNnwwLF89ZyUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKGsrMSksdGhpcy53b3Jkc1trXT1DP3RoaXMud29yZHNba118MTw8Xzp0aGlzLndvcmRzW2tdJn4oMTw8XyksdGhpcy5zdHJpcCgpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5pYWRkPWZ1bmN0aW9uKGcpe3ZhciBDLGssXztpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxDPXRoaXMuaXN1YihnKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAh''@;'; put 'put ''PT1nLm5lZ2F0aXZlKXJldHVybiBnLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Zy5sZW5ndGg/KGs9dGhpcyxfPWcpOihrPWcsXz10aGlzKTtmb3IodmFyIHA9MCx3PTA7dzxfLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3''@;'; put 'put ''XT02NzEwODg2MyYoQz0oMHxrLndvcmRzW3ddKSsoMHxfLndvcmRzW3ddKStwKSxwPUM+Pj4yNjtmb3IoOzAhPT1wJiZ3PGsubGVuZ3RoO3crKyl0aGlzLndvcmRzW3ddPTY3MTA4ODYzJihDPSgwfGsud29yZHNbd10pK3ApLHA9Qz4+PjI2O2lmKHRoaXMubGVuZ3RoPWsubGVuZ3RoLDAhPT1w''@;'; put 'put ''KXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPXAsdGhpcy5sZW5ndGgrKztlbHNlIGlmKGshPT10aGlzKWZvcig7dzxrLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT1rLndvcmRzW3ddO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZyl7dmFyIEM7cmV0dXJuIDAhPT1nLm5l''@;'; put 'put ''Z2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oZy5uZWdhdGl2ZT0wLEM9dGhpcy5zdWIoZyksZy5uZWdhdGl2ZV49MSxDKTowPT09Zy5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxDPWcuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxDKTp0aGlzLmxlbmd0''@;'; put 'put ''aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChnKTpnLmNsb25lKCkuaWFkZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnKXtpZigwIT09Zy5uZWdhdGl2ZSl7Zy5uZWdhdGl2ZT0wO3ZhciBDPXRoaXMuaWFkZChnKTtyZXR1cm4gZy5uZWdhdGl2ZT0xLEMuX25vcm1TaWdu''@;'; put 'put ''KCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIGssXyxwPXRoaXMuY21wKGcpO2lmKDA9PT1wKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlz''@;'; put 'put ''LndvcmRzWzBdPTAsdGhpcztwPjA/KGs9dGhpcyxfPWcpOihrPWcsXz10aGlzKTtmb3IodmFyIHc9MCxLPTA7SzxfLmxlbmd0aDtLKyspdz0oQz0oMHxrLndvcmRzW0tdKS0oMHxfLndvcmRzW0tdKSt3KT4+MjYsdGhpcy53b3Jkc1tLXT02NzEwODg2MyZDO2Zvcig7MCE9PXcmJks8ay5sZW5n''@;'; put 'put ''dGg7SysrKXc9KEM9KDB8ay53b3Jkc1tLXSkrdyk+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmQztpZigwPT09dyYmSzxrLmxlbmd0aCYmayE9PXRoaXMpZm9yKDtLPGsubGVuZ3RoO0srKyl0aGlzLndvcmRzW0tdPWsud29yZHNbS107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRo''@;'; put 'put ''aXMubGVuZ3RoLEspLGshPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZyl9O3ZhciBlZT1mdW5jdGlvbihnLEMsayl7dmFyIF8scCx3LEs9Zy53b3Jkcyx0ZT1DLndvcmRz''@;'; put 'put ''LGNlPWsud29yZHMsaGU9MCxTZT0wfEtbMF0sTGU9ODE5MSZTZSxIZT1TZT4+PjEzLHhlPTB8S1sxXSxEZT04MTkxJnhlLEJlPXhlPj4+MTMsR2U9MHxLWzJdLFVlPTgxOTEmR2UscWU9R2U+Pj4xMyxvdD0wfEtbM10sRmU9ODE5MSZvdCx3ZT1vdD4+PjEzLEVlPTB8S1s0XSxJZT04MTkxJkVl''@;'; put 'put ''LFhlPUVlPj4+MTMsdHQ9MHxLWzVdLFplPTgxOTEmdHQsY3Q9dHQ+Pj4xMyxrZT0wfEtbNl0sQWU9ODE5MSZrZSxqZT1rZT4+PjEzLGl0PTB8S1s3XSxzdD04MTkxJml0LHh0PWl0Pj4+MTMsRnQ9MHxLWzhdLE90PTgxOTEmRnQsS3Q9RnQ+Pj4xMyxibj0wfEtbOV0sQnQ9ODE5MSZibix5bj1i''@;'; put 'put ''bj4+PjEzLE5uPTB8dGVbMF0sbm49ODE5MSZObixHbj1Obj4+PjEzLFluPTB8dGVbMV0sZnQ9ODE5MSZZbixkbj1Zbj4+PjEzLGhuPTB8dGVbMl0sd3Q9ODE5MSZobixqdD1obj4+PjEzLG10PTB8dGVbM10sSHQ9ODE5MSZtdCxwbj1tdD4+PjEzLG50PTB8dGVbNF0sRXQ9ODE5MSZudCxlbj1u''@;'; put 'put ''dD4+PjEzLFR0PTB8dGVbNV0seXQ9ODE5MSZUdCwkdD1UdD4+PjEzLHhuPTB8dGVbNl0senQ9ODE5MSZ4bixfbj14bj4+PjEzLE9uPTB8dGVbN10scm49ODE5MSZPbixQbj1Pbj4+PjEzLENuPTB8dGVbOF0sWHQ9ODE5MSZDbixKbj1Dbj4+PjEzLHhpPTB8dGVbOV0sYW49ODE5MSZ4aSx0bj14''@;'; put 'put ''aT4+PjEzO2submVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLGsubGVuZ3RoPTE5O3ZhciB1aT0oaGUrKF89TWF0aC5pbXVsKExlLG5uKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChMZSxHbikpK01hdGguaW11bChIZSxubil8MCkpPDwxMyl8MDtoZT0oKHc9TWF0aC5pbXVsKEhl''@;'; put 'put ''LEduKSkrKHA+Pj4xMyl8MCkrKHVpPj4+MjYpfDAsdWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKERlLG5uKSxwPShwPU1hdGguaW11bChEZSxHbikpK01hdGguaW11bChCZSxubil8MCx3PU1hdGguaW11bChCZSxHbik7dmFyIEFyPShoZSsoXz1fK01hdGguaW11bChMZSxmdCl8MCl8MCkrKCg4''@;'; put 'put ''MTkxJihwPShwPXArTWF0aC5pbXVsKExlLGRuKXwwKStNYXRoLmltdWwoSGUsZnQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLGRuKXwwKSsocD4+PjEzKXwwKSsoQXI+Pj4yNil8MCxBciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoVWUsbm4pLHA9KHA9TWF0aC5pbXVsKFVlLEdu''@;'; put 'put ''KSkrTWF0aC5pbXVsKHFlLG5uKXwwLHc9TWF0aC5pbXVsKHFlLEduKSxfPV8rTWF0aC5pbXVsKERlLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsZG4pfDApK01hdGguaW11bChCZSxmdCl8MCx3PXcrTWF0aC5pbXVsKEJlLGRuKXwwO3ZhciBocj0oaGUrKF89XytNYXRoLmltdWwoTGUsd3Qp''@;'; put 'put ''fDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxqdCl8MCkrTWF0aC5pbXVsKEhlLHd0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxqdCl8MCkrKHA+Pj4xMyl8MCkrKGhyPj4+MjYpfDAsaHImPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZlLG5uKSxwPShwPU1hdGgu''@;'; put 'put ''aW11bChGZSxHbikpK01hdGguaW11bCh3ZSxubil8MCx3PU1hdGguaW11bCh3ZSxHbiksXz1fK01hdGguaW11bChVZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGRuKXwwKStNYXRoLmltdWwocWUsZnQpfDAsdz13K01hdGguaW11bChxZSxkbil8MCxfPV8rTWF0aC5pbXVsKERlLHd0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoRGUsanQpfDApK01hdGguaW11bChCZSx3dCl8MCx3PXcrTWF0aC5pbXVsKEJlLGp0KXwwO3ZhciBkaT0oaGUrKF89XytNYXRoLmltdWwoTGUsSHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxwbil8MCkrTWF0aC5pbXVsKEhlLEh0KXwwKSk8''@;'; put 'put ''PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxwbil8MCkrKHA+Pj4xMyl8MCkrKGRpPj4+MjYpfDAsZGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEllLG5uKSxwPShwPU1hdGguaW11bChJZSxHbikpK01hdGguaW11bChYZSxubil8MCx3PU1hdGguaW11bChYZSxHbiksXz1fK01hdGguaW11''@;'; put 'put ''bChGZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLGRuKXwwKStNYXRoLmltdWwod2UsZnQpfDAsdz13K01hdGguaW11bCh3ZSxkbil8MCxfPV8rTWF0aC5pbXVsKFVlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsanQpfDApK01hdGguaW11bChxZSx3dCl8MCx3PXcrTWF0aC5pbXVsKHFl''@;'; put 'put ''LGp0KXwwLF89XytNYXRoLmltdWwoRGUsSHQpfDAscD0ocD1wK01hdGguaW11bChEZSxwbil8MCkrTWF0aC5pbXVsKEJlLEh0KXwwLHc9dytNYXRoLmltdWwoQmUscG4pfDA7dmFyIGZpPShoZSsoXz1fK01hdGguaW11bChMZSxFdCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExl''@;'; put 'put ''LGVuKXwwKStNYXRoLmltdWwoSGUsRXQpfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLGVuKXwwKSsocD4+PjEzKXwwKSsoZmk+Pj4yNil8MCxmaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoWmUsbm4pLHA9KHA9TWF0aC5pbXVsKFplLEduKSkrTWF0aC5pbXVsKGN0LG5uKXwwLHc9''@;'; put 'put ''TWF0aC5pbXVsKGN0LEduKSxfPV8rTWF0aC5pbXVsKEllLGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsZG4pfDApK01hdGguaW11bChYZSxmdCl8MCx3PXcrTWF0aC5pbXVsKFhlLGRuKXwwLF89XytNYXRoLmltdWwoRmUsd3QpfDAscD0ocD1wK01hdGguaW11bChGZSxqdCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKHdlLHd0KXwwLHc9dytNYXRoLmltdWwod2UsanQpfDAsXz1fK01hdGguaW11bChVZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLHBuKXwwKStNYXRoLmltdWwocWUsSHQpfDAsdz13K01hdGguaW11bChxZSxwbil8MCxfPV8rTWF0aC5pbXVsKERlLEV0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRGUsZW4pfDApK01hdGguaW11bChCZSxFdCl8MCx3PXcrTWF0aC5pbXVsKEJlLGVuKXwwO3ZhciBobz0oaGUrKF89XytNYXRoLmltdWwoTGUseXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSwkdCl8MCkrTWF0aC5pbXVsKEhlLHl0KXwwKSk8PDEzKXwwO2hlPSgodz13''@;'; put 'put ''K01hdGguaW11bChIZSwkdCl8MCkrKHA+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEFlLG5uKSxwPShwPU1hdGguaW11bChBZSxHbikpK01hdGguaW11bChqZSxubil8MCx3PU1hdGguaW11bChqZSxHbiksXz1fK01hdGguaW11bChaZSxmdCl8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKFplLGRuKXwwKStNYXRoLmltdWwoY3QsZnQpfDAsdz13K01hdGguaW11bChjdCxkbil8MCxfPV8rTWF0aC5pbXVsKEllLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsanQpfDApK01hdGguaW11bChYZSx3dCl8MCx3PXcrTWF0aC5pbXVsKFhlLGp0KXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoRmUsSHQpfDAscD0ocD1wK01hdGguaW11bChGZSxwbil8MCkrTWF0aC5pbXVsKHdlLEh0KXwwLHc9dytNYXRoLmltdWwod2UscG4pfDAsXz1fK01hdGguaW11bChVZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGVuKXwwKStNYXRoLmltdWwocWUsRXQpfDAsdz13K01hdGguaW11''@;'; put 'put ''bChxZSxlbil8MCxfPV8rTWF0aC5pbXVsKERlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsJHQpfDApK01hdGguaW11bChCZSx5dCl8MCx3PXcrTWF0aC5pbXVsKEJlLCR0KXwwO3ZhciBicj0oaGUrKF89XytNYXRoLmltdWwoTGUsenQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11''@;'; put 'put ''bChMZSxfbil8MCkrTWF0aC5pbXVsKEhlLHp0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxfbil8MCkrKHA+Pj4xMyl8MCkrKGJyPj4+MjYpfDAsYnImPTY3MTA4ODYzLF89TWF0aC5pbXVsKHN0LG5uKSxwPShwPU1hdGguaW11bChzdCxHbikpK01hdGguaW11bCh4dCxubil8''@;'; put 'put ''MCx3PU1hdGguaW11bCh4dCxHbiksXz1fK01hdGguaW11bChBZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLGRuKXwwKStNYXRoLmltdWwoamUsZnQpfDAsdz13K01hdGguaW11bChqZSxkbil8MCxfPV8rTWF0aC5pbXVsKFplLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsanQpfDApK01h''@;'; put 'put ''dGguaW11bChjdCx3dCl8MCx3PXcrTWF0aC5pbXVsKGN0LGp0KXwwLF89XytNYXRoLmltdWwoSWUsSHQpfDAscD0ocD1wK01hdGguaW11bChJZSxwbil8MCkrTWF0aC5pbXVsKFhlLEh0KXwwLHc9dytNYXRoLmltdWwoWGUscG4pfDAsXz1fK01hdGguaW11bChGZSxFdCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKEZlLGVuKXwwKStNYXRoLmltdWwod2UsRXQpfDAsdz13K01hdGguaW11bCh3ZSxlbil8MCxfPV8rTWF0aC5pbXVsKFVlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoVWUsJHQpfDApK01hdGguaW11bChxZSx5dCl8MCx3PXcrTWF0aC5pbXVsKHFlLCR0KXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''RGUsenQpfDAscD0ocD1wK01hdGguaW11bChEZSxfbil8MCkrTWF0aC5pbXVsKEJlLHp0KXwwLHc9dytNYXRoLmltdWwoQmUsX24pfDA7dmFyIExpPShoZSsoXz1fK01hdGguaW11bChMZSxybil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKExlLFBuKXwwKStNYXRoLmltdWwoSGUs''@;'; put 'put ''cm4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEhlLFBuKXwwKSsocD4+PjEzKXwwKSsoTGk+Pj4yNil8MCxMaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoT3Qsbm4pLHA9KHA9TWF0aC5pbXVsKE90LEduKSkrTWF0aC5pbXVsKEt0LG5uKXwwLHc9TWF0aC5pbXVsKEt0LEduKSxfPV8r''@;'; put 'put ''TWF0aC5pbXVsKHN0LGZ0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsZG4pfDApK01hdGguaW11bCh4dCxmdCl8MCx3PXcrTWF0aC5pbXVsKHh0LGRuKXwwLF89XytNYXRoLmltdWwoQWUsd3QpfDAscD0ocD1wK01hdGguaW11bChBZSxqdCl8MCkrTWF0aC5pbXVsKGplLHd0KXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoamUsanQpfDAsXz1fK01hdGguaW11bChaZSxIdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLHBuKXwwKStNYXRoLmltdWwoY3QsSHQpfDAsdz13K01hdGguaW11bChjdCxwbil8MCxfPV8rTWF0aC5pbXVsKEllLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsZW4pfDApK01hdGguaW11''@;'; put 'put ''bChYZSxFdCl8MCx3PXcrTWF0aC5pbXVsKFhlLGVuKXwwLF89XytNYXRoLmltdWwoRmUseXQpfDAscD0ocD1wK01hdGguaW11bChGZSwkdCl8MCkrTWF0aC5pbXVsKHdlLHl0KXwwLHc9dytNYXRoLmltdWwod2UsJHQpfDAsXz1fK01hdGguaW11bChVZSx6dCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KFVlLF9uKXwwKStNYXRoLmltdWwocWUsenQpfDAsdz13K01hdGguaW11bChxZSxfbil8MCxfPV8rTWF0aC5pbXVsKERlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsUG4pfDApK01hdGguaW11bChCZSxybil8MCx3PXcrTWF0aC5pbXVsKEJlLFBuKXwwO3ZhciBsbz0oaGUrKF89XytNYXRo''@;'; put 'put ''LmltdWwoTGUsWHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxKbil8MCkrTWF0aC5pbXVsKEhlLFh0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxKbil8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LG5u''@;'; put 'put ''KSxwPShwPU1hdGguaW11bChCdCxHbikpK01hdGguaW11bCh5bixubil8MCx3PU1hdGguaW11bCh5bixHbiksXz1fK01hdGguaW11bChPdCxmdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGRuKXwwKStNYXRoLmltdWwoS3QsZnQpfDAsdz13K01hdGguaW11bChLdCxkbil8MCxfPV8rTWF0aC5p''@;'; put 'put ''bXVsKHN0LHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsanQpfDApK01hdGguaW11bCh4dCx3dCl8MCx3PXcrTWF0aC5pbXVsKHh0LGp0KXwwLF89XytNYXRoLmltdWwoQWUsSHQpfDAscD0ocD1wK01hdGguaW11bChBZSxwbil8MCkrTWF0aC5pbXVsKGplLEh0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''amUscG4pfDAsXz1fK01hdGguaW11bChaZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLGVuKXwwKStNYXRoLmltdWwoY3QsRXQpfDAsdz13K01hdGguaW11bChjdCxlbil8MCxfPV8rTWF0aC5pbXVsKEllLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsJHQpfDApK01hdGguaW11bChYZSx5''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKFhlLCR0KXwwLF89XytNYXRoLmltdWwoRmUsenQpfDAscD0ocD1wK01hdGguaW11bChGZSxfbil8MCkrTWF0aC5pbXVsKHdlLHp0KXwwLHc9dytNYXRoLmltdWwod2UsX24pfDAsXz1fK01hdGguaW11bChVZSxybil8MCxwPShwPXArTWF0aC5pbXVsKFVlLFBu''@;'; put 'put ''KXwwKStNYXRoLmltdWwocWUscm4pfDAsdz13K01hdGguaW11bChxZSxQbil8MCxfPV8rTWF0aC5pbXVsKERlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsSm4pfDApK01hdGguaW11bChCZSxYdCl8MCx3PXcrTWF0aC5pbXVsKEJlLEpuKXwwO3ZhciBVbj0oaGUrKF89XytNYXRoLmltdWwo''@;'; put 'put ''TGUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSx0bil8MCkrTWF0aC5pbXVsKEhlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFVuPj4+MjYpfDAsVW4mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LGZ0KSxwPShw''@;'; put 'put ''PU1hdGguaW11bChCdCxkbikpK01hdGguaW11bCh5bixmdCl8MCx3PU1hdGguaW11bCh5bixkbiksXz1fK01hdGguaW11bChPdCx3dCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGp0KXwwKStNYXRoLmltdWwoS3Qsd3QpfDAsdz13K01hdGguaW11bChLdCxqdCl8MCxfPV8rTWF0aC5pbXVsKHN0''@;'; put 'put ''LEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QscG4pfDApK01hdGguaW11bCh4dCxIdCl8MCx3PXcrTWF0aC5pbXVsKHh0LHBuKXwwLF89XytNYXRoLmltdWwoQWUsRXQpfDAscD0ocD1wK01hdGguaW11bChBZSxlbil8MCkrTWF0aC5pbXVsKGplLEV0KXwwLHc9dytNYXRoLmltdWwoamUsZW4p''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChaZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKFplLCR0KXwwKStNYXRoLmltdWwoY3QseXQpfDAsdz13K01hdGguaW11bChjdCwkdCl8MCxfPV8rTWF0aC5pbXVsKEllLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUsX24pfDApK01hdGguaW11bChYZSx6dCl8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKFhlLF9uKXwwLF89XytNYXRoLmltdWwoRmUscm4pfDAscD0ocD1wK01hdGguaW11bChGZSxQbil8MCkrTWF0aC5pbXVsKHdlLHJuKXwwLHc9dytNYXRoLmltdWwod2UsUG4pfDAsXz1fK01hdGguaW11bChVZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLEpuKXwwKStN''@;'; put 'put ''YXRoLmltdWwocWUsWHQpfDAsdz13K01hdGguaW11bChxZSxKbil8MDt2YXIgWGk9KGhlKyhfPV8rTWF0aC5pbXVsKERlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRGUsdG4pfDApK01hdGguaW11bChCZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoQmUs''@;'; put 'put ''dG4pfDApKyhwPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx3dCkscD0ocD1NYXRoLmltdWwoQnQsanQpKStNYXRoLmltdWwoeW4sd3QpfDAsdz1NYXRoLmltdWwoeW4sanQpLF89XytNYXRoLmltdWwoT3QsSHQpfDAscD0ocD1wK01hdGguaW11bChP''@;'; put 'put ''dCxwbil8MCkrTWF0aC5pbXVsKEt0LEh0KXwwLHc9dytNYXRoLmltdWwoS3QscG4pfDAsXz1fK01hdGguaW11bChzdCxFdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGVuKXwwKStNYXRoLmltdWwoeHQsRXQpfDAsdz13K01hdGguaW11bCh4dCxlbil8MCxfPV8rTWF0aC5pbXVsKEFlLHl0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoQWUsJHQpfDApK01hdGguaW11bChqZSx5dCl8MCx3PXcrTWF0aC5pbXVsKGplLCR0KXwwLF89XytNYXRoLmltdWwoWmUsenQpfDAscD0ocD1wK01hdGguaW11bChaZSxfbil8MCkrTWF0aC5pbXVsKGN0LHp0KXwwLHc9dytNYXRoLmltdWwoY3QsX24pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChJZSxybil8MCxwPShwPXArTWF0aC5pbXVsKEllLFBuKXwwKStNYXRoLmltdWwoWGUscm4pfDAsdz13K01hdGguaW11bChYZSxQbil8MCxfPV8rTWF0aC5pbXVsKEZlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsSm4pfDApK01hdGguaW11bCh3ZSxYdCl8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKHdlLEpuKXwwO3ZhciBRaT0oaGUrKF89XytNYXRoLmltdWwoVWUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChVZSx0bil8MCkrTWF0aC5pbXVsKHFlLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChxZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFFpPj4+''@;'; put 'put ''MjYpfDAsUWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LEh0KSxwPShwPU1hdGguaW11bChCdCxwbikpK01hdGguaW11bCh5bixIdCl8MCx3PU1hdGguaW11bCh5bixwbiksXz1fK01hdGguaW11bChPdCxFdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LGVuKXwwKStNYXRoLmltdWwoS3QsRXQp''@;'; put 'put ''fDAsdz13K01hdGguaW11bChLdCxlbil8MCxfPV8rTWF0aC5pbXVsKHN0LHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsJHQpfDApK01hdGguaW11bCh4dCx5dCl8MCx3PXcrTWF0aC5pbXVsKHh0LCR0KXwwLF89XytNYXRoLmltdWwoQWUsenQpfDAscD0ocD1wK01hdGguaW11bChBZSxfbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKGplLHp0KXwwLHc9dytNYXRoLmltdWwoamUsX24pfDAsXz1fK01hdGguaW11bChaZSxybil8MCxwPShwPXArTWF0aC5pbXVsKFplLFBuKXwwKStNYXRoLmltdWwoY3Qscm4pfDAsdz13K01hdGguaW11bChjdCxQbil8MCxfPV8rTWF0aC5pbXVsKEllLFh0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoSWUsSm4pfDApK01hdGguaW11bChYZSxYdCl8MCx3PXcrTWF0aC5pbXVsKFhlLEpuKXwwO3ZhciBmbz0oaGUrKF89XytNYXRoLmltdWwoRmUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChGZSx0bil8MCkrTWF0aC5pbXVsKHdlLGFuKXwwKSk8PDEzKXww''@;'; put 'put ''O2hlPSgodz13K01hdGguaW11bCh3ZSx0bil8MCkrKHA+Pj4xMyl8MCkrKGZvPj4+MjYpfDAsZm8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LEV0KSxwPShwPU1hdGguaW11bChCdCxlbikpK01hdGguaW11bCh5bixFdCl8MCx3PU1hdGguaW11bCh5bixlbiksXz1fK01hdGguaW11bChPdCx5''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKE90LCR0KXwwKStNYXRoLmltdWwoS3QseXQpfDAsdz13K01hdGguaW11bChLdCwkdCl8MCxfPV8rTWF0aC5pbXVsKHN0LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsX24pfDApK01hdGguaW11bCh4dCx6dCl8MCx3PXcrTWF0aC5pbXVsKHh0LF9uKXww''@;'; put 'put ''LF89XytNYXRoLmltdWwoQWUscm4pfDAscD0ocD1wK01hdGguaW11bChBZSxQbil8MCkrTWF0aC5pbXVsKGplLHJuKXwwLHc9dytNYXRoLmltdWwoamUsUG4pfDAsXz1fK01hdGguaW11bChaZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKFplLEpuKXwwKStNYXRoLmltdWwoY3QsWHQpfDAsdz13''@;'; put 'put ''K01hdGguaW11bChjdCxKbil8MDt2YXIgdm89KGhlKyhfPV8rTWF0aC5pbXVsKEllLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoSWUsdG4pfDApK01hdGguaW11bChYZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoWGUsdG4pfDApKyhwPj4+MTMpfDApKyh2''@;'; put 'put ''bz4+PjI2KXwwLHZvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx5dCkscD0ocD1NYXRoLmltdWwoQnQsJHQpKStNYXRoLmltdWwoeW4seXQpfDAsdz1NYXRoLmltdWwoeW4sJHQpLF89XytNYXRoLmltdWwoT3QsenQpfDAscD0ocD1wK01hdGguaW11bChPdCxfbil8MCkrTWF0aC5pbXVsKEt0''@;'; put 'put ''LHp0KXwwLHc9dytNYXRoLmltdWwoS3QsX24pfDAsXz1fK01hdGguaW11bChzdCxybil8MCxwPShwPXArTWF0aC5pbXVsKHN0LFBuKXwwKStNYXRoLmltdWwoeHQscm4pfDAsdz13K01hdGguaW11bCh4dCxQbil8MCxfPV8rTWF0aC5pbXVsKEFlLFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUs''@;'; put 'put ''Sm4pfDApK01hdGguaW11bChqZSxYdCl8MCx3PXcrTWF0aC5pbXVsKGplLEpuKXwwO3ZhciBScj0oaGUrKF89XytNYXRoLmltdWwoWmUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChaZSx0bil8MCkrTWF0aC5pbXVsKGN0LGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGgu''@;'; put 'put ''aW11bChjdCx0bil8MCkrKHA+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLF89TWF0aC5pbXVsKEJ0LHp0KSxwPShwPU1hdGguaW11bChCdCxfbikpK01hdGguaW11bCh5bix6dCl8MCx3PU1hdGguaW11bCh5bixfbiksXz1fK01hdGguaW11bChPdCxybil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKE90LFBuKXwwKStNYXRoLmltdWwoS3Qscm4pfDAsdz13K01hdGguaW11bChLdCxQbil8MCxfPV8rTWF0aC5pbXVsKHN0LFh0KXwwLHA9KHA9cCtNYXRoLmltdWwoc3QsSm4pfDApK01hdGguaW11bCh4dCxYdCl8MCx3PXcrTWF0aC5pbXVsKHh0LEpuKXwwO3ZhciBZaT0oaGUrKF89''@;'; put 'put ''XytNYXRoLmltdWwoQWUsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChBZSx0bil8MCkrTWF0aC5pbXVsKGplLGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChqZSx0bil8MCkrKHA+Pj4xMyl8MCkrKFlpPj4+MjYpfDAsWWkmPTY3MTA4ODYzLF89TWF0aC5pbXVs''@;'; put 'put ''KEJ0LHJuKSxwPShwPU1hdGguaW11bChCdCxQbikpK01hdGguaW11bCh5bixybil8MCx3PU1hdGguaW11bCh5bixQbiksXz1fK01hdGguaW11bChPdCxYdCl8MCxwPShwPXArTWF0aC5pbXVsKE90LEpuKXwwKStNYXRoLmltdWwoS3QsWHQpfDAsdz13K01hdGguaW11bChLdCxKbil8MDt2YXIg''@;'; put 'put ''em89KGhlKyhfPV8rTWF0aC5pbXVsKHN0LGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoc3QsdG4pfDApK01hdGguaW11bCh4dCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoeHQsdG4pfDApKyhwPj4+MTMpfDApKyh6bz4+PjI2KXwwLHpvJj02NzEwODg2Myxf''@;'; put 'put ''PU1hdGguaW11bChCdCxYdCkscD0ocD1NYXRoLmltdWwoQnQsSm4pKStNYXRoLmltdWwoeW4sWHQpfDAsdz1NYXRoLmltdWwoeW4sSm4pO3ZhciBpcz0oaGUrKF89XytNYXRoLmltdWwoT3QsYW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChPdCx0bil8MCkrTWF0aC5pbXVsKEt0''@;'; put 'put ''LGFuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChLdCx0bil8MCkrKHA+Pj4xMyl8MCkrKGlzPj4+MjYpfDAsaXMmPTY3MTA4ODYzO3ZhciB1cz0oaGUrKF89TWF0aC5pbXVsKEJ0LGFuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChCdCx0bikpK01hdGguaW11bCh5bixhbil8''@;'; put 'put ''MCkpPDwxMyl8MDtyZXR1cm4gaGU9KCh3PU1hdGguaW11bCh5bix0bikpKyhwPj4+MTMpfDApKyh1cz4+PjI2KXwwLHVzJj02NzEwODg2MyxjZVswXT11aSxjZVsxXT1BcixjZVsyXT1ocixjZVszXT1kaSxjZVs0XT1maSxjZVs1XT1obyxjZVs2XT1icixjZVs3XT1MaSxjZVs4XT1sbyxjZVs5''@;'; put 'put ''XT1VbixjZVsxMF09WGksY2VbMTFdPVFpLGNlWzEyXT1mbyxjZVsxM109dm8sY2VbMTRdPVJyLGNlWzE1XT1ZaSxjZVsxNl09em8sY2VbMTddPWlzLGNlWzE4XT11cywwIT09aGUmJihjZVsxOV09aGUsay5sZW5ndGgrKyksa307ZnVuY3Rpb24gcmUoZyxDLGspe3JldHVybihuZXcgaWUpLm11''@;'; put 'put ''bHAoZyxDLGspfWZ1bmN0aW9uIGllKGcsQyl7dGhpcy54PWcsdGhpcy55PUN9TWF0aC5pbXVsfHwoZWU9SiksRS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oZyxDKXt2YXIgXz10aGlzLmxlbmd0aCtnLmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1nLmxlbmd0aD9lZSh0''@;'; put 'put ''aGlzLGcsQyk6Xzw2Mz9KKHRoaXMsZyxDKTpfPDEwMjQ/ZnVuY3Rpb24ocCx3LEspe0submVnYXRpdmU9dy5uZWdhdGl2ZV5wLm5lZ2F0aXZlLEsubGVuZ3RoPXAubGVuZ3RoK3cubGVuZ3RoO2Zvcih2YXIgdGU9MCxjZT0wLGhlPTA7aGU8Sy5sZW5ndGgtMTtoZSsrKXt2YXIgU2U9Y2U7Y2U9''@;'; put 'put ''MDtmb3IodmFyIExlPTY3MTA4ODYzJnRlLEhlPU1hdGgubWluKGhlLHcubGVuZ3RoLTEpLHhlPU1hdGgubWF4KDAsaGUtcC5sZW5ndGgrMSk7eGU8PUhlO3hlKyspe3ZhciBCZT0oMHxwLndvcmRzW2hlLXhlXSkqKDB8dy53b3Jkc1t4ZV0pLEdlPTY3MTA4ODYzJkJlO0xlPTY3MTA4ODYzJihH''@;'; put 'put ''ZT1HZStMZXwwKSxjZSs9KFNlPShTZT1TZSsoQmUvNjcxMDg4NjR8MCl8MCkrKEdlPj4+MjYpfDApPj4+MjYsU2UmPTY3MTA4ODYzfUsud29yZHNbaGVdPUxlLHRlPVNlLFNlPWNlfXJldHVybiAwIT09dGU/Sy53b3Jkc1toZV09dGU6Sy5sZW5ndGgtLSxLLnN0cmlwKCl9KHRoaXMsZyxDKTpy''@;'; put 'put ''ZSh0aGlzLGcsQyl9LGllLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz1uZXcgQXJyYXkoZyksaz1FLnByb3RvdHlwZS5fY291bnRCaXRzKGcpLTEsXz0wO188ZztfKyspQ1tfXT10aGlzLnJldkJpbihfLGssZyk7cmV0dXJuIEN9LGllLnByb3RvdHlwZS5yZXZCaW49''@;'; put 'put ''ZnVuY3Rpb24oZyxDLGspe2lmKDA9PT1nfHxnPT09ay0xKXJldHVybiBnO2Zvcih2YXIgXz0wLHA9MDtwPEM7cCsrKV98PSgxJmcpPDxDLXAtMSxnPj49MTtyZXR1cm4gX30saWUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oZyxDLGssXyxwLHcpe2Zvcih2YXIgSz0wO0s8dztLKyspX1tL''@;'; put 'put ''XT1DW2dbS11dLHBbS109a1tnW0tdXX0saWUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihnLEMsayxfLHAsdyl7dGhpcy5wZXJtdXRlKHcsZyxDLGssXyxwKTtmb3IodmFyIEs9MTtLPHA7Szw8PTEpZm9yKHZhciB0ZT1LPDwxLGNlPU1hdGguY29zKDIqTWF0aC5QSS90ZSksaGU9TWF0''@;'; put 'put ''aC5zaW4oMipNYXRoLlBJL3RlKSxTZT0wO1NlPHA7U2UrPXRlKWZvcih2YXIgTGU9Y2UsSGU9aGUseGU9MDt4ZTxLO3hlKyspe3ZhciBEZT1rW1NlK3hlXSxCZT1fW1NlK3hlXSxHZT1rW1NlK3hlK0tdLFVlPV9bU2UreGUrS10scWU9TGUqR2UtSGUqVWU7VWU9TGUqVWUrSGUqR2Usa1tTZSt4''@;'; put 'put ''ZV09RGUrKEdlPXFlKSxfW1NlK3hlXT1CZStVZSxrW1NlK3hlK0tdPURlLUdlLF9bU2UreGUrS109QmUtVWUseGUhPT10ZSYmKHFlPWNlKkxlLWhlKkhlLEhlPWNlKkhlK2hlKkxlLExlPXFlKX19LGllLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihnLEMpe3ZhciBrPTF8TWF0aC5t''@;'; put 'put ''YXgoQyxnKSxfPTEmayxwPTA7Zm9yKGs9ay8yfDA7aztrPj4+PTEpcCsrO3JldHVybiAxPDxwKzErX30saWUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihnLEMsayl7aWYoIShrPD0xKSlmb3IodmFyIF89MDtfPGsvMjtfKyspe3ZhciBwPWdbX107Z1tfXT1nW2stXy0xXSxnW2stXy0x''@;'; put 'put ''XT1wLHA9Q1tfXSxDW19dPS1DW2stXy0xXSxDW2stXy0xXT0tcH19LGllLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oZyxDKXtmb3IodmFyIGs9MCxfPTA7XzxDLzI7XysrKXt2YXIgcD04MTkyKk1hdGgucm91bmQoZ1syKl8rMV0vQykrTWF0aC5yb3VuZChnWzIqX10vQykraztn''@;'; put 'put ''W19dPTY3MTA4ODYzJnAsaz1wPDY3MTA4ODY0PzA6cC82NzEwODg2NHwwfXJldHVybiBnfSxpZS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihnLEMsayxfKXtmb3IodmFyIHA9MCx3PTA7dzxDO3crKylrWzIqd109ODE5MSYocCs9MHxnW3ddKSxrWzIqdysxXT04MTkxJihwPj4+PTEz''@;'; put 'put ''KSxwPj4+PTEzO2Zvcih3PTIqQzt3PF87Kyt3KWtbd109MDtEKDA9PT1wKSxEKCEoLTgxOTImcCkpfSxpZS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLGs9MDtrPGc7aysrKUNba109MDtyZXR1cm4gQ30saWUucHJvdG90eXBlLm11bHA9ZnVuY3Rp''@;'; put 'put ''b24oZyxDLGspe3ZhciBfPTIqdGhpcy5ndWVzc0xlbjEzYihnLmxlbmd0aCxDLmxlbmd0aCkscD10aGlzLm1ha2VSQlQoXyksdz10aGlzLnN0dWIoXyksSz1uZXcgQXJyYXkoXyksdGU9bmV3IEFycmF5KF8pLGNlPW5ldyBBcnJheShfKSxoZT1uZXcgQXJyYXkoXyksU2U9bmV3IEFycmF5KF8p''@;'; put 'put ''LExlPW5ldyBBcnJheShfKSxIZT1rLndvcmRzO0hlLmxlbmd0aD1fLHRoaXMuY29udmVydDEzYihnLndvcmRzLGcubGVuZ3RoLEssXyksdGhpcy5jb252ZXJ0MTNiKEMud29yZHMsQy5sZW5ndGgsaGUsXyksdGhpcy50cmFuc2Zvcm0oSyx3LHRlLGNlLF8scCksdGhpcy50cmFuc2Zvcm0oaGUs''@;'; put 'put ''dyxTZSxMZSxfLHApO2Zvcih2YXIgeGU9MDt4ZTxfO3hlKyspe3ZhciBEZT10ZVt4ZV0qU2VbeGVdLWNlW3hlXSpMZVt4ZV07Y2VbeGVdPXRlW3hlXSpMZVt4ZV0rY2VbeGVdKlNlW3hlXSx0ZVt4ZV09RGV9cmV0dXJuIHRoaXMuY29uanVnYXRlKHRlLGNlLF8pLHRoaXMudHJhbnNmb3JtKHRl''@;'; put 'put ''LGNlLEhlLHcsXyxwKSx0aGlzLmNvbmp1Z2F0ZShIZSx3LF8pLHRoaXMubm9ybWFsaXplMTNiKEhlLF8pLGsubmVnYXRpdmU9Zy5uZWdhdGl2ZV5DLm5lZ2F0aXZlLGsubGVuZ3RoPWcubGVuZ3RoK0MubGVuZ3RoLGsuc3RyaXAoKX0sRS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGcpe3ZhciBD''@;'; put 'put ''PW5ldyBFKG51bGwpO3JldHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxlbmd0aCksdGhpcy5tdWxUbyhnLEMpfSxFLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGcpe3ZhciBDPW5ldyBFKG51bGwpO3JldHVybiBDLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtnLmxl''@;'; put 'put ''bmd0aCkscmUodGhpcyxnLEMpfSxFLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZyx0aGlzKX0sRS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCk7Zm9yKHZhciBDPTAsaz0w''@;'; put 'put ''O2s8dGhpcy5sZW5ndGg7aysrKXt2YXIgXz0oMHx0aGlzLndvcmRzW2tdKSpnLHA9KDY3MTA4ODYzJl8pKyg2NzEwODg2MyZDKTtDPj49MjYsQys9Xy82NzEwODg2NHwwLEMrPXA+Pj4yNix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJnB9cmV0dXJuIDAhPT1DJiYodGhpcy53b3Jkc1trXT1DLHRo''@;'; put 'put ''aXMubGVuZ3RoKyspLHRoaXN9LEUucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihnKX0sRS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxFLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW11bCh0aGlzLmNsb25lKCkpfSxFLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyl7dmFyIEM9ZnVuY3Rpb24odyl7Zm9yKHZhciBLPW5ldyBBcnJheSh3LmJpdExlbmd0aCgpKSx0ZT0wO3RlPEsubGVuZ3RoO3RlKyspe3ZhciBoZT10ZSUyNjtLW3RlXT0ody53b3Jkc1t0ZS8yNnwwXSYx''@;'; put 'put ''PDxoZSk+Pj5oZX1yZXR1cm4gS30oZyk7aWYoMD09PUMubGVuZ3RoKXJldHVybiBuZXcgRSgxKTtmb3IodmFyIGs9dGhpcyxfPTA7XzxDLmxlbmd0aCYmMD09PUNbX107XysrLGs9ay5zcXIoKSk7aWYoKytfPEMubGVuZ3RoKWZvcih2YXIgcD1rLnNxcigpO188Qy5sZW5ndGg7XysrLHA9cC5z''@;'; put 'put ''cXIoKSkwIT09Q1tfXSYmKGs9ay5tdWwocCkpO3JldHVybiBrfSxFLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDLGs9ZyUyNixfPShnLWspLzI2LHA9NjcxMDg4NjM+Pj4yNi1rPDwyNi1rO2lmKDAhPT1rKXt2YXIgdz0wO2Zv''@;'; put 'put ''cihDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBLPXRoaXMud29yZHNbQ10mcDt0aGlzLndvcmRzW0NdPSgwfHRoaXMud29yZHNbQ10pLUs8PGt8dyx3PUs+Pj4yNi1rfXcmJih0aGlzLndvcmRzW0NdPXcsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PV8pe2ZvcihDPXRoaXMubGVuZ3RoLTE7Qz49''@;'; put 'put ''MDtDLS0pdGhpcy53b3Jkc1tDK19dPXRoaXMud29yZHNbQ107Zm9yKEM9MDtDPF87QysrKXRoaXMud29yZHNbQ109MDt0aGlzLmxlbmd0aCs9X31yZXR1cm4gdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gRCgwPT09dGhpcy5uZWdhdGl2ZSksdGhp''@;'; put 'put ''cy5pdXNobG4oZyl9LEUucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihnLEMsayl7dmFyIF87RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApLF89Qz8oQy1DJTI2KS8yNjowO3ZhciBwPWclMjYsdz1NYXRoLm1pbigoZy1wKS8yNix0aGlzLmxlbmd0aCksSz02NzEwODg2M142NzEwODg2Mz4+''@;'; put 'put ''PnA8PHAsdGU9aztpZihfLT13LF89TWF0aC5tYXgoMCxfKSx0ZSl7Zm9yKHZhciBjZT0wO2NlPHc7Y2UrKyl0ZS53b3Jkc1tjZV09dGhpcy53b3Jkc1tjZV07dGUubGVuZ3RoPXd9aWYoMCE9PXcpaWYodGhpcy5sZW5ndGg+dylmb3IodGhpcy5sZW5ndGgtPXcsY2U9MDtjZTx0aGlzLmxlbmd0''@;'; put 'put ''aDtjZSsrKXRoaXMud29yZHNbY2VdPXRoaXMud29yZHNbY2Urd107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgaGU9MDtmb3IoY2U9dGhpcy5sZW5ndGgtMTtjZT49MCYmKDAhPT1oZXx8Y2U+PV8pO2NlLS0pe3ZhciBTZT0wfHRoaXMud29yZHNbY2VdO3RoaXMud29y''@;'; put 'put ''ZHNbY2VdPWhlPDwyNi1wfFNlPj4+cCxoZT1TZSZLfXJldHVybiB0ZSYmMCE9PWhlJiYodGUud29yZHNbdGUubGVuZ3RoKytdPWhlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pc2hybj1mdW5jdGlv''@;'; put 'put ''bihnLEMsayl7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGcsQyxrKX0sRS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGcpfSxFLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgp''@;'; put 'put ''Lml1c2hsbihnKX0sRS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGcpfSxFLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihnKX0sRS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oZyl7RCgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPWclMjYsaz0oZy1DKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1rfHwhKHRoaXMud29yZHNba10mMTw8QykpfSxFLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBDPWclMjYs''@;'; put 'put ''az0oZy1DKS8yNjtyZXR1cm4gRCgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PWs/dGhpczooMCE9PUMmJmsrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihrLHRoaXMubGVuZ3RoKSwwIT09QyYmKHRoaXMud29y''@;'; put 'put ''ZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+Qzw8QyksdGhpcy5zdHJpcCgpKX0sRS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oZyl9LEUucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGcpe3JldHVybiBEKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgZyksRChnPDY3MTA4ODY0KSxnPDA/dGhpcy5pc3VibigtZyk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxnPyh0aGlzLndvcmRzWzBdPWctKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlPTAsdGhpcy5pc3VibihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oZyl9LEUucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihnKXt0aGlzLndvcmRzWzBdKz1nO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ10+PTY3MTA4ODY0O0Mr''@;'; put 'put ''Kyl0aGlzLndvcmRzW0NdLT02NzEwODg2NCxDPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW0MrMV09MTp0aGlzLndvcmRzW0MrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsQysxKSx0aGlzfSxFLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihnKXtpZihE''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgZyksRChnPDY3MTA4ODY0KSxnPDApcmV0dXJuIHRoaXMuaWFkZG4oLWcpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihnKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1nLDE9PT10''@;'; put 'put ''aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBDPTA7Qzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tDXTwwO0MrKyl0aGlzLndvcmRzW0NdKz02NzEwODg2NCx0aGlzLndvcmRzW0MrMV0t''@;'; put 'put ''PTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGcpfSxFLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oZyl9LEUucHJvdG90eXBlLmlhYnM9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LEUucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxFLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oZyxDLGspe3ZhciBfLHA7dGhpcy5fZXhwYW5kKGcubGVuZ3RoK2spO3Zh''@;'; put 'put ''ciBLPTA7Zm9yKF89MDtfPGcubGVuZ3RoO18rKyl7cD0oMHx0aGlzLndvcmRzW18ra10pK0s7dmFyIHRlPSgwfGcud29yZHNbX10pKkM7Sz0oKHAtPTY3MTA4ODYzJnRlKT4+MjYpLSh0ZS82NzEwODg2NHwwKSx0aGlzLndvcmRzW18ra109NjcxMDg4NjMmcH1mb3IoO188dGhpcy5sZW5ndGgt''@;'; put 'put ''aztfKyspSz0ocD0oMHx0aGlzLndvcmRzW18ra10pK0spPj4yNix0aGlzLndvcmRzW18ra109NjcxMDg4NjMmcDtpZigwPT09SylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihEKC0xPT09SyksSz0wLF89MDtfPHRoaXMubGVuZ3RoO18rKylLPShwPS0oMHx0aGlzLndvcmRzW19dKStLKT4+MjYs''@;'; put 'put ''dGhpcy53b3Jkc1tfXT02NzEwODg2MyZwO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihnLEMpe3ZhciBrLF89dGhpcy5jbG9uZSgpLHA9Zyx3PTB8cC53b3Jkc1twLmxlbmd0aC0xXTswIT0oaz0yNi10aGlzLl9jb3Vu''@;'; put 'put ''dEJpdHModykpJiYocD1wLnVzaGxuKGspLF8uaXVzaGxuKGspLHc9MHxwLndvcmRzW3AubGVuZ3RoLTFdKTt2YXIgSyx0ZT1fLmxlbmd0aC1wLmxlbmd0aDtpZigibW9kIiE9PUMpeyhLPW5ldyBFKG51bGwpKS5sZW5ndGg9dGUrMSxLLndvcmRzPW5ldyBBcnJheShLLmxlbmd0aCk7Zm9yKHZh''@;'; put 'put ''ciBjZT0wO2NlPEsubGVuZ3RoO2NlKyspSy53b3Jkc1tjZV09MH12YXIgaGU9Xy5jbG9uZSgpLl9pc2hsbnN1Ym11bChwLDEsdGUpOzA9PT1oZS5uZWdhdGl2ZSYmKF89aGUsSyYmKEsud29yZHNbdGVdPTEpKTtmb3IodmFyIFNlPXRlLTE7U2U+PTA7U2UtLSl7dmFyIExlPTY3MTA4ODY0Kigw''@;'; put 'put ''fF8ud29yZHNbcC5sZW5ndGgrU2VdKSsoMHxfLndvcmRzW3AubGVuZ3RoK1NlLTFdKTtmb3IoTGU9TWF0aC5taW4oTGUvd3wwLDY3MTA4ODYzKSxfLl9pc2hsbnN1Ym11bChwLExlLFNlKTswIT09Xy5uZWdhdGl2ZTspTGUtLSxfLm5lZ2F0aXZlPTAsXy5faXNobG5zdWJtdWwocCwxLFNlKSxf''@;'; put 'put ''LmlzWmVybygpfHwoXy5uZWdhdGl2ZV49MSk7SyYmKEsud29yZHNbU2VdPUxlKX1yZXR1cm4gSyYmSy5zdHJpcCgpLF8uc3RyaXAoKSwiZGl2IiE9PUMmJjAhPT1rJiZfLml1c2hybihrKSx7ZGl2Okt8fG51bGwsbW9kOl99fSxFLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oZyxDLGspe3Jl''@;'; put 'put ''dHVybiBEKCFnLmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IEUoMCksbW9kOm5ldyBFKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PWcubmVnYXRpdmU/KHc9dGhpcy5uZWcoKS5kaXZtb2QoZyxDKSwibW9kIiE9PUMmJihfPXcuZGl2Lm5lZygpKSwiZGl2IiE9PUMmJihwPXcu''@;'; put 'put ''bW9kLm5lZygpLGsmJjAhPT1wLm5lZ2F0aXZlJiZwLmlhZGQoZykpLHtkaXY6Xyxtb2Q6cH0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZT8odz10aGlzLmRpdm1vZChnLm5lZygpLEMpLCJtb2QiIT09QyYmKF89dy5kaXYubmVnKCkpLHtkaXY6Xyxtb2Q6dy5tb2R9KTp0aGlz''@;'; put 'put ''Lm5lZ2F0aXZlJmcubmVnYXRpdmU/KHc9dGhpcy5uZWcoKS5kaXZtb2QoZy5uZWcoKSxDKSwiZGl2IiE9PUMmJihwPXcubW9kLm5lZygpLGsmJjAhPT1wLm5lZ2F0aXZlJiZwLmlzdWIoZykpLHtkaXY6dy5kaXYsbW9kOnB9KTpnLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoZyk8MD97''@;'; put 'put ''ZGl2Om5ldyBFKDApLG1vZDp0aGlzfToxPT09Zy5sZW5ndGg/ImRpdiI9PT1DP3tkaXY6dGhpcy5kaXZuKGcud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PUM/e2RpdjpudWxsLG1vZDpuZXcgRSh0aGlzLm1vZG4oZy53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxt''@;'; put 'put ''b2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihnLEMpO3ZhciBfLHAsd30sRS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJkaXYiLCExKS5kaXZ9LEUucHJvdG90eXBlLm1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5kaXZtb2QoZywibW9kIiwhMSkubW9kfSxFLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmRpdm1vZChnLCJtb2QiLCEwKS5tb2R9LEUucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGcpe3ZhciBDPXRoaXMuZGl2bW9kKGcpO2lmKEMubW9kLmlzWmVybygpKXJl''@;'; put 'put ''dHVybiBDLmRpdjt2YXIgaz0wIT09Qy5kaXYubmVnYXRpdmU/Qy5tb2QuaXN1YihnKTpDLm1vZCxfPWcudXNocm4oMSkscD1nLmFuZGxuKDEpLHc9ay5jbXAoXyk7cmV0dXJuIHc8MHx8MT09PXAmJjA9PT13P0MuZGl2OjAhPT1DLmRpdi5uZWdhdGl2ZT9DLmRpdi5pc3VibigxKTpDLmRpdi5p''@;'; put 'put ''YWRkbigxKX0sRS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihnKXtEKGc8PTY3MTA4ODYzKTtmb3IodmFyIEM9NjcxMDg4NjQlZyxrPTAsXz10aGlzLmxlbmd0aC0xO18+PTA7Xy0tKWs9KEMqaysoMHx0aGlzLndvcmRzW19dKSklZztyZXR1cm4ga30sRS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rp''@;'; put 'put ''b24oZyl7RChnPD02NzEwODg2Myk7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpDO3RoaXMud29yZHNba109Xy9nfDAsQz1fJWd9cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuZGl2bj1mdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGcpfSxFLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUpLEQoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsaz1nLmNsb25lKCk7Qz0wIT09Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIg''@;'; put 'put ''Xz1uZXcgRSgxKSxwPW5ldyBFKDApLHc9bmV3IEUoMCksSz1uZXcgRSgxKSx0ZT0wO0MuaXNFdmVuKCkmJmsuaXNFdmVuKCk7KUMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpLCsrdGU7Zm9yKHZhciBjZT1rLmNsb25lKCksaGU9Qy5jbG9uZSgpOyFDLmlzWmVybygpOyl7Zm9yKHZhciBTZT0wLExl''@;'; put 'put ''PTE7IShDLndvcmRzWzBdJkxlKSYmU2U8MjY7KytTZSxMZTw8PTEpO2lmKFNlPjApZm9yKEMuaXVzaHJuKFNlKTtTZS0tID4wOykoXy5pc09kZCgpfHxwLmlzT2RkKCkpJiYoXy5pYWRkKGNlKSxwLmlzdWIoaGUpKSxfLml1c2hybigxKSxwLml1c2hybigxKTtmb3IodmFyIEhlPTAseGU9MTsh''@;'; put 'put ''KGsud29yZHNbMF0meGUpJiZIZTwyNjsrK0hlLHhlPDw9MSk7aWYoSGU+MClmb3Ioay5pdXNocm4oSGUpO0hlLS0gPjA7KSh3LmlzT2RkKCl8fEsuaXNPZGQoKSkmJih3LmlhZGQoY2UpLEsuaXN1YihoZSkpLHcuaXVzaHJuKDEpLEsuaXVzaHJuKDEpO0MuY21wKGspPj0wPyhDLmlzdWIoayks''@;'; put 'put ''Xy5pc3ViKHcpLHAuaXN1YihLKSk6KGsuaXN1YihDKSx3LmlzdWIoXyksSy5pc3ViKHApKX1yZXR1cm57YTp3LGI6SyxnY2Q6ay5pdXNobG4odGUpfX0sRS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUpLEQoIWcuaXNaZXJvKCkpO3ZhciBDPXRoaXMsaz1n''@;'; put 'put ''LmNsb25lKCk7Qz0wIT09Qy5uZWdhdGl2ZT9DLnVtb2QoZyk6Qy5jbG9uZSgpO2Zvcih2YXIgXyxwPW5ldyBFKDEpLHc9bmV3IEUoMCksSz1rLmNsb25lKCk7Qy5jbXBuKDEpPjAmJmsuY21wbigxKT4wOyl7Zm9yKHZhciB0ZT0wLGNlPTE7IShDLndvcmRzWzBdJmNlKSYmdGU8MjY7Kyt0ZSxj''@;'; put 'put ''ZTw8PTEpO2lmKHRlPjApZm9yKEMuaXVzaHJuKHRlKTt0ZS0tID4wOylwLmlzT2RkKCkmJnAuaWFkZChLKSxwLml1c2hybigxKTtmb3IodmFyIGhlPTAsU2U9MTshKGsud29yZHNbMF0mU2UpJiZoZTwyNjsrK2hlLFNlPDw9MSk7aWYoaGU+MClmb3Ioay5pdXNocm4oaGUpO2hlLS0gPjA7KXcu''@;'; put 'put ''aXNPZGQoKSYmdy5pYWRkKEspLHcuaXVzaHJuKDEpO0MuY21wKGspPj0wPyhDLmlzdWIoaykscC5pc3ViKHcpKTooay5pc3ViKEMpLHcuaXN1YihwKSl9cmV0dXJuKF89MD09PUMuY21wbigxKT9wOncpLmNtcG4oMCk8MCYmXy5pYWRkKGcpLF99LEUucHJvdG90eXBlLmdjZD1mdW5jdGlvbihn''@;'; put 'put ''KXtpZih0aGlzLmlzWmVybygpKXJldHVybiBnLmFicygpO2lmKGcuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEM9dGhpcy5jbG9uZSgpLGs9Zy5jbG9uZSgpO0MubmVnYXRpdmU9MCxrLm5lZ2F0aXZlPTA7Zm9yKHZhciBfPTA7Qy5pc0V2ZW4oKSYmay5pc0V2ZW4oKTtfKyspQy5p''@;'; put 'put ''dXNocm4oMSksay5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO0MuaXNFdmVuKCk7KUMuaXVzaHJuKDEpO2Zvcig7ay5pc0V2ZW4oKTspay5pdXNocm4oMSk7dmFyIHA9Qy5jbXAoayk7aWYocDwwKXt2YXIgdz1DO0M9ayxrPXd9ZWxzZSBpZigwPT09cHx8MD09PWsuY21wbigxKSlicmVhaztDLmlz''@;'; put 'put ''dWIoayl9cmV0dXJuIGsuaXVzaGxuKF8pfSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmVnY2QoZykuYS51bW9kKGcpfSxFLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmlzT2RkPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sRS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMud29yZHNbMF0mZ30sRS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZyl7RCgibnVtYmVyIj09dHlwZW9mIGcpO3ZhciBDPWclMjYsaz0oZy1DKS8yNixfPTE8''@;'; put 'put ''PEM7aWYodGhpcy5sZW5ndGg8PWspcmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba118PV8sdGhpcztmb3IodmFyIHA9Xyx3PWs7MCE9PXAmJnc8dGhpcy5sZW5ndGg7dysrKXt2YXIgSz0wfHRoaXMud29yZHNbd107cD0oSys9cCk+Pj4yNix0aGlzLndvcmRzW3ddPUsmPTY3''@;'; put 'put ''MTA4ODYzfXJldHVybiAwIT09cCYmKHRoaXMud29yZHNbd109cCx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sRS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihnKXt2YXIg''@;'; put 'put ''QyxrPWc8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWspcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmspcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpQz0xO2Vsc2V7ayYmKGc9LWcpLEQoZzw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIF89''@;'; put 'put ''MHx0aGlzLndvcmRzWzBdO0M9Xz09PWc/MDpfPGc/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQzpDfSxFLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZyl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYw''@;'; put 'put ''IT09Zy5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQz10aGlzLnVjbXAoZyk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihnKXtpZih0aGlzLmxlbmd0aD5nLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxnLmxlbmd0aClyZXR1''@;'; put 'put ''cm4tMTtmb3IodmFyIEM9MCxrPXRoaXMubGVuZ3RoLTE7az49MDtrLS0pe3ZhciBfPTB8dGhpcy53b3Jkc1trXSxwPTB8Zy53b3Jkc1trXTtpZihfIT09cCl7XzxwP0M9LTE6Xz5wJiYoQz0xKTticmVha319cmV0dXJuIEN9LEUucHJvdG90eXBlLmd0bj1mdW5jdGlvbihnKXtyZXR1cm4gMT09''@;'; put 'put ''PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcChnKX0sRS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXBuKGcpPj0wfSxFLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wKGcp''@;'; put 'put ''Pj0wfSxFLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZyl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKTw9MH0sRS5w''@;'; put 'put ''cm90b3R5cGUubHRlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKTw9MH0sRS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGcpe3JldHVybiAwPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5lcT1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wKGcpfSxFLnJlZD1mdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gbmV3IEYoZyl9LEUucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLEQoMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiks''@;'; put 'put ''Zy5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGcpfSxFLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnJlZD1nLHRoaXN9LEUucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGcpe3JldHVybiBEKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVk''@;'; put 'put ''KGcpfSxFLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwi''@;'; put 'put ''cmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlz''@;'; put 'put ''LGcpfSxFLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVk''@;'; put 'put ''LCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnky''@;'; put 'put ''KHRoaXMsZyksdGhpcy5yZWQubXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLmltdWwodGhpcyxn''@;'; put 'put ''KX0sRS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LEUucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gRCh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mg''@;'; put 'put ''b25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sRS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk''@;'; put 'put ''Ll92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LEUucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQmJiFnLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxnKX07dmFyIHVlPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxw''@;'; put 'put ''MjU1MTk6bnVsbH07ZnVuY3Rpb24gbGUoZyxDKXt0aGlzLm5hbWU9Zyx0aGlzLnA9bmV3IEUoQywxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IEUoMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGFlKCl7''@;'; put 'put ''bGUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiBXKCl7bGUuY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg''@;'; put 'put ''MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBiKCl7bGUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBBKCl7bGUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBGKGcpe2lmKCJzdHJpbmciPT10eXBlb2YgZyl7dmFyIEM9RS5fcHJpbWUoZyk7dGhpcy5tPUMucCx0aGlzLnByaW1lPUN9ZWxzZSBEKGcuZ3RuKDEpLCJtb2R1bHVzIG11''@;'; put 'put ''c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Zyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gSChnKXtGLmNhbGwodGhpcyxnKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5l''@;'; put 'put ''dyBFKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVt''@;'; put 'put ''b2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWxlLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIGcud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxnfSxsZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5j''@;'; put 'put ''dGlvbihnKXt2YXIgQyxrPWc7ZG97dGhpcy5zcGxpdChrLHRoaXMudG1wKSxDPShrPShrPXRoaXMuaW11bEsoaykpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShDPnRoaXMubik7dmFyIF89Qzx0aGlzLm4/LTE6ay51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1fPyhrLndvcmRz''@;'; put 'put ''WzBdPTAsay5sZW5ndGg9MSk6Xz4wP2suaXN1Yih0aGlzLnApOnZvaWQgMCE9PWsuc3RyaXA/ay5zdHJpcCgpOmsuX3N0cmlwKCksa30sbGUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGcsQyl7Zy5pdXNocm4odGhpcy5uLDAsQyl9LGxlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXty''@;'; put 'put ''ZXR1cm4gZy5pbXVsKHRoaXMuayl9LFQoYWUsbGUpLGFlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2Zvcih2YXIgaz00MTk0MzAzLF89TWF0aC5taW4oZy5sZW5ndGgsOSkscD0wO3A8XztwKyspQy53b3Jkc1twXT1nLndvcmRzW3BdO2lmKEMubGVuZ3RoPV8sZy5sZW5ndGg8PTkp''@;'; put 'put ''cmV0dXJuIGcud29yZHNbMF09MCx2b2lkKGcubGVuZ3RoPTEpO3ZhciB3PWcud29yZHNbOV07Zm9yKEMud29yZHNbQy5sZW5ndGgrK109dyZrLHA9MTA7cDxnLmxlbmd0aDtwKyspe3ZhciBLPTB8Zy53b3Jkc1twXTtnLndvcmRzW3AtMTBdPShLJmspPDw0fHc+Pj4yMix3PUt9Zy53b3Jkc1tw''@;'; put 'put ''LTEwXT13Pj4+PTIyLGcubGVuZ3RoLT0wPT09dyYmZy5sZW5ndGg+MTA/MTA6OX0sYWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2cud29yZHNbZy5sZW5ndGhdPTAsZy53b3Jkc1tnLmxlbmd0aCsxXT0wLGcubGVuZ3RoKz0yO2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3RoO2srKyl7''@;'; put 'put ''dmFyIF89MHxnLndvcmRzW2tdO2cud29yZHNba109NjcxMDg4NjMmKEMrPTk3NypfKSxDPTY0Kl8rKEMvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1nLndvcmRzW2cubGVuZ3RoLTFdJiYoZy5sZW5ndGgtLSwwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmZy5sZW5ndGgtLSksZ30sVChXLGxlKSxU''@;'; put 'put ''KGIsbGUpLFQoQSxsZSksQS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPTAsaz0wO2s8Zy5sZW5ndGg7aysrKXt2YXIgXz0xOSooMHxnLndvcmRzW2tdKStDLHA9NjcxMDg4NjMmXztfPj4+PTI2LGcud29yZHNba109cCxDPV99cmV0dXJuIDAhPT1DJiYoZy53b3Jkc1tn''@;'; put 'put ''Lmxlbmd0aCsrXT1DKSxnfSxFLl9wcmltZT1mdW5jdGlvbihnKXtpZih1ZVtnXSlyZXR1cm4gdWVbZ107dmFyIEM7aWYoImsyNTYiPT09ZylDPW5ldyBhZTtlbHNlIGlmKCJwMjI0Ij09PWcpQz1uZXcgVztlbHNlIGlmKCJwMTkyIj09PWcpQz1uZXcgYjtlbHNle2lmKCJwMjU1MTkiIT09Zyl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitnKTtDPW5ldyBBfXJldHVybiB1ZVtnXT1DLEN9LEYucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGcpe0QoMD09PWcubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksRChnLnJlZCwicmVkIHdvcmtzIG9u''@;'; put 'put ''bHkgd2l0aCByZWQgbnVtYmVycyIpfSxGLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihnLEMpe0QoIShnLm5lZ2F0aXZlfEMubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQoZy5yZWQmJmcucmVkPT09Qy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKX0sRi5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoZykuX2ZvcmNlUmVkKHRoaXMpOmcudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKGcpe3JldHVybiBn''@;'; put 'put ''LmlzWmVybygpP2cuY2xvbmUoKTp0aGlzLm0uc3ViKGcpLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuYWRkKEMpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrLl9mb3JjZVJl''@;'; put 'put ''ZCh0aGlzKX0sRi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmlhZGQoQyk7cmV0dXJuIGsuY21wKHRoaXMubSk+PTAmJmsuaXN1Yih0aGlzLm0pLGt9LEYucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxD''@;'; put 'put ''KTt2YXIgaz1nLnN1YihDKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0aGlzLm0pLGsuX2ZvcmNlUmVkKHRoaXMpfSxGLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGcsQyl7dGhpcy5fdmVyaWZ5MihnLEMpO3ZhciBrPWcuaXN1YihDKTtyZXR1cm4gay5jbXBuKDApPDAmJmsuaWFkZCh0''@;'; put 'put ''aGlzLm0pLGt9LEYucHJvdG90eXBlLnNobD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkxKGcpLHRoaXMuaW1vZChnLnVzaGxuKEMpKX0sRi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkyKGcsQyksdGhpcy5pbW9kKGcuaW11bChDKSl9''@;'; put 'put ''LEYucHJvdG90eXBlLm11bD1mdW5jdGlvbihnLEMpe3JldHVybiB0aGlzLl92ZXJpZnkyKGcsQyksdGhpcy5pbW9kKGcubXVsKEMpKX0sRi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbXVsKGcsZy5jbG9uZSgpKX0sRi5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiB0aGlzLm11bChnLGcpfSxGLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGcpe2lmKGcuaXNaZXJvKCkpcmV0dXJuIGcuY2xvbmUoKTt2YXIgQz10aGlzLm0uYW5kbG4oMyk7aWYoRChDJTI9PTEpLDM9PT1DKXt2YXIgaz10aGlzLm0uYWRkKG5ldyBFKDEpKS5pdXNocm4oMik7cmV0''@;'; put 'put ''dXJuIHRoaXMucG93KGcsayl9Zm9yKHZhciBfPXRoaXMubS5zdWJuKDEpLHA9MDshXy5pc1plcm8oKSYmMD09PV8uYW5kbG4oMSk7KXArKyxfLml1c2hybigxKTtEKCFfLmlzWmVybygpKTt2YXIgdz1uZXcgRSgxKS50b1JlZCh0aGlzKSxLPXcucmVkTmVnKCksdGU9dGhpcy5tLnN1Ym4oMSku''@;'; put 'put ''aXVzaHJuKDEpLGNlPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoY2U9bmV3IEUoMipjZSpjZSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KGNlLHRlKS5jbXAoSyk7KWNlLnJlZElBZGQoSyk7Zm9yKHZhciBoZT10aGlzLnBvdyhjZSxfKSxTZT10aGlzLnBvdyhnLF8uYWRkbigxKS5pdXNocm4o''@;'; put 'put ''MSkpLExlPXRoaXMucG93KGcsXyksSGU9cDswIT09TGUuY21wKHcpOyl7Zm9yKHZhciB4ZT1MZSxEZT0wOzAhPT14ZS5jbXAodyk7RGUrKyl4ZT14ZS5yZWRTcXIoKTtEKERlPEhlKTt2YXIgQmU9dGhpcy5wb3coaGUsbmV3IEUoMSkuaXVzaGxuKEhlLURlLTEpKTtTZT1TZS5yZWRNdWwoQmUp''@;'; put 'put ''LGhlPUJlLnJlZFNxcigpLExlPUxlLnJlZE11bChoZSksSGU9RGV9cmV0dXJuIFNlfSxGLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3ZhciBDPWcuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1DLm5lZ2F0aXZlPyhDLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKEMpLnJlZE5lZygpKTp0aGlz''@;'; put 'put ''Lmltb2QoQyl9LEYucHJvdG90eXBlLnBvdz1mdW5jdGlvbihnLEMpe2lmKEMuaXNaZXJvKCkpcmV0dXJuIG5ldyBFKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1DLmNtcG4oMSkpcmV0dXJuIGcuY2xvbmUoKTt2YXIgaz1uZXcgQXJyYXkoMTYpO2tbMF09bmV3IEUoMSkudG9SZWQodGhpcyksa1sx''@;'; put 'put ''XT1nO2Zvcih2YXIgXz0yO188ay5sZW5ndGg7XysrKWtbX109dGhpcy5tdWwoa1tfLTFdLGcpO3ZhciBwPWtbMF0sdz0wLEs9MCx0ZT1DLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09dGUmJih0ZT0yNiksXz1DLmxlbmd0aC0xO18+PTA7Xy0tKXtmb3IodmFyIGNlPUMud29yZHNbX10saGU9dGUt''@;'; put 'put ''MTtoZT49MDtoZS0tKXt2YXIgU2U9Y2U+PmhlJjE7cCE9PWtbMF0mJihwPXRoaXMuc3FyKHApKSwwIT09U2V8fDAhPT13Pyh3PDw9MSx3fD1TZSwoND09KytLfHwwPT09XyYmMD09PWhlKSYmKHA9dGhpcy5tdWwocCxrW3ddKSxLPTAsdz0wKSk6Sz0wfXRlPTI2fXJldHVybiBwfSxGLnByb3Rv''@;'; put 'put ''dHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZyl7dmFyIEM9Zy51bW9kKHRoaXMubSk7cmV0dXJuIEM9PT1nP0MuY2xvbmUoKTpDfSxGLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihnKXt2YXIgQz1nLmNsb25lKCk7cmV0dXJuIEMucmVkPW51bGwsQ30sRS5tb250PWZ1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiBuZXcgSChnKX0sVChILEYpLEgucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcudXNobG4odGhpcy5zaGlmdCkpfSxILnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmltb2QoZy5tdWwodGhpcy5yaW52''@;'; put 'put ''KSk7cmV0dXJuIEMucmVkPW51bGwsQ30sSC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnLEMpe2lmKGcuaXNaZXJvKCl8fEMuaXNaZXJvKCkpcmV0dXJuIGcud29yZHNbMF09MCxnLmxlbmd0aD0xLGc7dmFyIGs9Zy5pbXVsKEMpLF89ay5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52''@;'; put 'put ''KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSkscD1rLmlzdWIoXykuaXVzaHJuKHRoaXMuc2hpZnQpLHc9cDtyZXR1cm4gcC5jbXAodGhpcy5tKT49MD93PXAuaXN1Yih0aGlzLm0pOnAuY21wbigwKTwwJiYodz1wLmlhZGQodGhpcy5tKSksdy5fZm9yY2VSZWQodGhpcyl9LEgucHJv''@;'; put 'put ''dG90eXBlLm11bD1mdW5jdGlvbihnLEMpe2lmKGcuaXNaZXJvKCl8fEMuaXNaZXJvKCkpcmV0dXJuIG5ldyBFKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgaz1nLm11bChDKSxfPWsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0p''@;'; put 'put ''LHA9ay5pc3ViKF8pLml1c2hybih0aGlzLnNoaWZ0KSx3PXA7cmV0dXJuIHAuY21wKHRoaXMubSk+PTA/dz1wLmlzdWIodGhpcy5tKTpwLmNtcG4oMCk8MCYmKHc9cC5pYWRkKHRoaXMubSkpLHcuX2ZvcmNlUmVkKHRoaXMpfSxILnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLmltb2QoZy5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KE09SS5ubWQoTSksdGhpcyl9LDY5NDg6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1PO2oudmVyc2lvbj1JKDg1OTcpLmk4LGoudXRpbHM9SSg5NTMpLGoucmFuZD1JKDk5MzEpLGou''@;'; put 'put ''Y3VydmU9SSg4MjU0KSxqLmN1cnZlcz1JKDU0MjcpLGouZWM9SSg3OTU0KSxqLmVkZHNhPUkoNTk4MCl9LDQ5MTg6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDM3ODUpLEc9SSg5NTMpLEQ9Ry5nZXROQUYsVD1HLmdldEpTRixFPUcuYXNzZXJ0O2Z1bmN0aW9uIHooQixaKXt0aGlz''@;'; put 'put ''LnR5cGU9Qix0aGlzLnA9bmV3IGooWi5wLDE2KSx0aGlzLnJlZD1aLnByaW1lP2oucmVkKFoucHJpbWUpOmoubW9udCh0aGlzLnApLHRoaXMuemVybz1uZXcgaigwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IGooMSkudG9SZWQodGhpcy5yZWQpLHRoaXMudHdvPW5ldyBqKDIpLnRv''@;'; put 'put ''UmVkKHRoaXMucmVkKSx0aGlzLm49Wi5uJiZuZXcgaihaLm4sMTYpLHRoaXMuZz1aLmcmJnRoaXMucG9pbnRGcm9tSlNPTihaLmcsWi5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlz''@;'; put 'put ''Ll93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIFk9dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7IVl8fFkuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49''@;'; put 'put ''dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gTihCLFope3RoaXMuY3VydmU9Qix0aGlzLnR5cGU9Wix0aGlzLnByZWNvbXB1dGVkPW51bGx9TS5leHBvcnRzPXosei5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSx6''@;'; put 'put ''LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9LHoucHJvdG90eXBlLl9maXhlZE5hZk11bD1mdW5jdGlvbihCLFope0UoQi5wcmVjb21wdXRlZCk7dmFyIFk9Qi5fZ2V0RG91YmxlcygpLFU9RChaLDEsdGhpcy5fYml0TGVu''@;'; put 'put ''Z3RoKSxxPSgxPDxZLnN0ZXArMSktKFkuc3RlcCUyPT0wPzI6MSk7cS89Mzt2YXIgSixlZSxyZT1bXTtmb3IoSj0wO0o8VS5sZW5ndGg7Sis9WS5zdGVwKXtlZT0wO2Zvcih2YXIgaWU9SitZLnN0ZXAtMTtpZT49SjtpZS0tKWVlPShlZTw8MSkrVVtpZV07cmUucHVzaChlZSl9Zm9yKHZhciB1''@;'; put 'put ''ZT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksbGU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLGFlPXE7YWU+MDthZS0tKXtmb3IoSj0wO0o8cmUubGVuZ3RoO0orKykoZWU9cmVbSl0pPT09YWU/bGU9bGUubWl4ZWRBZGQoWS5wb2ludHNbSl0pOmVlPT09LWFlJiYobGU9bGUubWl4''@;'; put 'put ''ZWRBZGQoWS5wb2ludHNbSl0ubmVnKCkpKTt1ZT11ZS5hZGQobGUpfXJldHVybiB1ZS50b1AoKX0sei5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24oQixaKXtmb3IodmFyIFk9NCxVPUIuX2dldE5BRlBvaW50cyhZKSxxPVUucG9pbnRzLEo9RChaLFk9VS53bmQsdGhpcy5fYml0TGVuZ3Ro''@;'; put 'put ''KSxlZT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCkscmU9Si5sZW5ndGgtMTtyZT49MDtyZS0tKXtmb3IodmFyIGllPTA7cmU+PTAmJjA9PT1KW3JlXTtyZS0tKWllKys7aWYocmU+PTAmJmllKyssZWU9ZWUuZGJscChpZSkscmU8MClicmVhazt2YXIgdWU9SltyZV07RSgwIT09dWUpLGVl''@;'; put 'put ''PSJhZmZpbmUiPT09Qi50eXBlP2VlLm1peGVkQWRkKHVlPjA/cVt1ZS0xPj4xXTpxWy11ZS0xPj4xXS5uZWcoKSk6ZWUuYWRkKHVlPjA/cVt1ZS0xPj4xXTpxWy11ZS0xPj4xXS5uZWcoKSl9cmV0dXJuImFmZmluZSI9PT1CLnR5cGU/ZWUudG9QKCk6ZWV9LHoucHJvdG90eXBlLl93bmFmTXVs''@;'; put 'put ''QWRkPWZ1bmN0aW9uKEIsWixZLFUscSl7dmFyIEosZWUscmUsaWU9dGhpcy5fd25hZlQxLHVlPXRoaXMuX3duYWZUMixsZT10aGlzLl93bmFmVDMsYWU9MDtmb3IoSj0wO0o8VTtKKyspe3ZhciBXPShyZT1aW0pdKS5fZ2V0TkFGUG9pbnRzKEIpO2llW0pdPVcud25kLHVlW0pdPVcucG9pbnRz''@;'; put 'put ''fWZvcihKPVUtMTtKPj0xO0otPTIpe3ZhciBiPUotMSxBPUo7aWYoMT09PWllW2JdJiYxPT09aWVbQV0pe3ZhciBGPVtaW2JdLG51bGwsbnVsbCxaW0FdXTswPT09WltiXS55LmNtcChaW0FdLnkpPyhGWzFdPVpbYl0uYWRkKFpbQV0pLEZbMl09WltiXS50b0ooKS5taXhlZEFkZChaW0FdLm5l''@;'; put 'put ''ZygpKSk6MD09PVpbYl0ueS5jbXAoWltBXS55LnJlZE5lZygpKT8oRlsxXT1aW2JdLnRvSigpLm1peGVkQWRkKFpbQV0pLEZbMl09WltiXS5hZGQoWltBXS5uZWcoKSkpOihGWzFdPVpbYl0udG9KKCkubWl4ZWRBZGQoWltBXSksRlsyXT1aW2JdLnRvSigpLm1peGVkQWRkKFpbQV0ubmVnKCkp''@;'; put 'put ''KTt2YXIgSD1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXSxnPVQoWVtiXSxZW0FdKTtmb3IoYWU9TWF0aC5tYXgoZ1swXS5sZW5ndGgsYWUpLGxlW2JdPW5ldyBBcnJheShhZSksbGVbQV09bmV3IEFycmF5KGFlKSxlZT0wO2VlPGFlO2VlKyspbGVbYl1bZWVdPUhbMyooMSsoMHxnWzBdW2VlXSkp''@;'; put 'put ''KygxKygwfGdbMV1bZWVdKSldLGxlW0FdW2VlXT0wLHVlW2JdPUZ9ZWxzZSBsZVtiXT1EKFlbYl0saWVbYl0sdGhpcy5fYml0TGVuZ3RoKSxsZVtBXT1EKFlbQV0saWVbQV0sdGhpcy5fYml0TGVuZ3RoKSxhZT1NYXRoLm1heChsZVtiXS5sZW5ndGgsYWUpLGFlPU1hdGgubWF4KGxlW0FdLmxl''@;'; put 'put ''bmd0aCxhZSl9dmFyIF89dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHA9dGhpcy5fd25hZlQ0O2ZvcihKPWFlO0o+PTA7Si0tKXtmb3IodmFyIHc9MDtKPj0wOyl7dmFyIEs9ITA7Zm9yKGVlPTA7ZWU8VTtlZSsrKXBbZWVdPTB8bGVbZWVdW0pdLDAhPT1wW2VlXSYmKEs9ITEpO2lmKCFL''@;'; put 'put ''KWJyZWFrO3crKyxKLS19aWYoSj49MCYmdysrLF89Xy5kYmxwKHcpLEo8MClicmVhaztmb3IoZWU9MDtlZTxVO2VlKyspe3ZhciB0ZT1wW2VlXTswIT09dGUmJih0ZT4wP3JlPXVlW2VlXVt0ZS0xPj4xXTp0ZTwwJiYocmU9dWVbZWVdWy10ZS0xPj4xXS5uZWcoKSksXz0iYWZmaW5lIj09PXJl''@;'; put 'put ''LnR5cGU/Xy5taXhlZEFkZChyZSk6Xy5hZGQocmUpKX19Zm9yKEo9MDtKPFU7SisrKXVlW0pdPW51bGw7cmV0dXJuIHE/XzpfLnRvUCgpfSx6LkJhc2VQb2ludD1OLE4ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sTi5wcm90b3R5''@;'; put 'put ''cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sei5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oQixaKXtCPUcudG9BcnJheShCLFopO3ZhciBZPXRoaXMucC5ieXRlTGVuZ3RoKCk7aWYoKDQ9PT1CWzBdfHw2PT09QlswXXx8Nz09''@;'; put 'put ''PUJbMF0pJiZCLmxlbmd0aC0xPT0yKlkpcmV0dXJuIDY9PT1CWzBdP0UoQltCLmxlbmd0aC0xXSUyPT0wKTo3PT09QlswXSYmRShCW0IubGVuZ3RoLTFdJTI9PTEpLHRoaXMucG9pbnQoQi5zbGljZSgxLDErWSksQi5zbGljZSgxK1ksMSsyKlkpKTtpZigoMj09PUJbMF18fDM9PT1CWzBdKSYm''@;'; put 'put ''Qi5sZW5ndGgtMT09PVkpcmV0dXJuIHRoaXMucG9pbnRGcm9tWChCLnNsaWNlKDEsMStZKSwzPT09QlswXSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxOLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uKEIpe3JldHVybiB0aGlzLmVuY29kZShC''@;'; put 'put ''LCEwKX0sTi5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihCKXt2YXIgWj10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLFk9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLFopO3JldHVybiBCP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChZKTpbNF0uY29uY2F0KFksdGhpcy5n''@;'; put 'put ''ZXRZKCkudG9BcnJheSgiYmUiLFopKX0sTi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEIsWil7cmV0dXJuIEcuZW5jb2RlKHRoaXMuX2VuY29kZShaKSxCKX0sTi5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihCKXtpZih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBa''@;'; put 'put ''PXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gWi5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLFouZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsQiksWi5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1dGVkPVosdGhpc30sTi5wcm90b3R5cGUuX2hh''@;'; put 'put ''c0RvdWJsZXM9ZnVuY3Rpb24oQil7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuITE7dmFyIFo9dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhWiYmWi5wb2ludHMubGVuZ3RoPj1NYXRoLmNlaWwoKEIuYml0TGVuZ3RoKCkrMSkvWi5zdGVwKX0sTi5wcm90b3R5cGUuX2dldERv''@;'; put 'put ''dWJsZXM9ZnVuY3Rpb24oQixaKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIFk9W3RoaXNdLFU9dGhpcyxxPTA7cTxaO3ErPUIpe2Zvcih2YXIgSj0wO0o8QjtKKyspVT1VLmRibCgp''@;'; put 'put ''O1kucHVzaChVKX1yZXR1cm57c3RlcDpCLHBvaW50czpZfX0sTi5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihCKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7Zm9yKHZhciBaPVt0aGlzXSxZPSgx''@;'; put 'put ''PDxCKS0xLFU9MT09PVk/bnVsbDp0aGlzLmRibCgpLHE9MTtxPFk7cSsrKVpbcV09WltxLTFdLmFkZChVKTtyZXR1cm57d25kOkIscG9pbnRzOlp9fSxOLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe3JldHVybiBudWxsfSxOLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKEIpe2Zvcih2''@;'; put 'put ''YXIgWj10aGlzLFk9MDtZPEI7WSsrKVo9Wi5kYmwoKTtyZXR1cm4gWn19LDExMzg6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDk1MyksRz1JKDM3ODUpLEQ9SSg1NzE3KSxUPUkoNDkxOCksRT1qLmFzc2VydDtmdW5jdGlvbiB6KEIpe3RoaXMudHdpc3RlZD0xIT0oMHxCLmEpLHRo''@;'; put 'put ''aXMubU9uZUE9dGhpcy50d2lzdGVkJiYtMT09KDB8Qi5hKSx0aGlzLmV4dGVuZGVkPXRoaXMubU9uZUEsVC5jYWxsKHRoaXMsImVkd2FyZHMiLEIpLHRoaXMuYT1uZXcgRyhCLmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBH''@;'; put 'put ''KEIuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgRyhCLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxFKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRo''@;'; put 'put ''aXMub25lQz0xPT0oMHxCLmMpfWZ1bmN0aW9uIE4oQixaLFksVSxxKXtULkJhc2VQb2ludC5jYWxsKHRoaXMsQiwicHJvamVjdGl2ZSIpLG51bGw9PT1aJiZudWxsPT09WSYmbnVsbD09PVU/KHRoaXMueD10aGlzLmN1cnZlLnplcm8sdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlz''@;'; put 'put ''LmN1cnZlLm9uZSx0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMuek9uZT0hMCk6KHRoaXMueD1uZXcgRyhaLDE2KSx0aGlzLnk9bmV3IEcoWSwxNiksdGhpcy56PVU/bmV3IEcoVSwxNik6dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PXEmJm5ldyBHKHEsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9''@;'; put 'put ''dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50''@;'; put 'put ''LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkpLHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZt''@;'; put 'put ''KCkpKSkpfUQoeixUKSxNLmV4cG9ydHM9eix6LnByb3RvdHlwZS5fbXVsQT1mdW5jdGlvbihCKXtyZXR1cm4gdGhpcy5tT25lQT9CLnJlZE5lZygpOnRoaXMuYS5yZWRNdWwoQil9LHoucHJvdG90eXBlLl9tdWxDPWZ1bmN0aW9uKEIpe3JldHVybiB0aGlzLm9uZUM/Qjp0aGlzLmMucmVkTXVs''@;'; put 'put ''KEIpfSx6LnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oQixaLFksVSl7cmV0dXJuIHRoaXMucG9pbnQoQixaLFksVSl9LHoucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oQixaKXsoQj1uZXcgRyhCLDE2KSkucmVkfHwoQj1CLnRvUmVkKHRoaXMucmVkKSk7dmFyIFk9Qi5yZWRTcXIo''@;'; put 'put ''KSxVPXRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwoWSkpLHE9dGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKFkpKSxKPVUucmVkTXVsKHEucmVkSW52bSgpKSxlZT1KLnJlZFNxcnQoKTtpZigwIT09ZWUucmVkU3FyKCkucmVkU3ViKEopLmNtcCh0aGlz''@;'; put 'put ''Lnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciByZT1lZS5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oWiYmIXJlfHwhWiYmcmUpJiYoZWU9ZWUucmVkTmVnKCkpLHRoaXMucG9pbnQoQixlZSl9LHoucHJvdG90eXBlLnBvaW50RnJvbVk9ZnVuY3Rpb24oQixaKXso''@;'; put 'put ''Qj1uZXcgRyhCLDE2KSkucmVkfHwoQj1CLnRvUmVkKHRoaXMucmVkKSk7dmFyIFk9Qi5yZWRTcXIoKSxVPVkucmVkU3ViKHRoaXMuYzIpLHE9WS5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSksSj1VLnJlZE11bChxLnJlZEludm0oKSk7aWYoMD09PUouY21w''@;'; put 'put ''KHRoaXMuemVybykpe2lmKFopdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLEIpfXZhciBlZT1KLnJlZFNxcnQoKTtpZigwIT09ZWUucmVkU3FyKCkucmVkU3ViKEopLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52''@;'; put 'put ''YWxpZCBwb2ludCIpO3JldHVybiBlZS5mcm9tUmVkKCkuaXNPZGQoKSE9PVomJihlZT1lZS5yZWROZWcoKSksdGhpcy5wb2ludChlZSxCKX0sei5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oQil7aWYoQi5pc0luZmluaXR5KCkpcmV0dXJuITA7Qi5ub3JtYWxpemUoKTt2YXIgWj1CLngu''@;'; put 'put ''cmVkU3FyKCksWT1CLnkucmVkU3FyKCksVT1aLnJlZE11bCh0aGlzLmEpLnJlZEFkZChZKSxxPXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKFopLnJlZE11bChZKSkpO3JldHVybiAwPT09VS5jbXAocSl9LEQoTixULkJhc2VQb2ludCksei5wcm90b3R5cGUu''@;'; put 'put ''cG9pbnRGcm9tSlNPTj1mdW5jdGlvbihCKXtyZXR1cm4gTi5mcm9tSlNPTih0aGlzLEIpfSx6LnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihCLFosWSxVKXtyZXR1cm4gbmV3IE4odGhpcyxCLFosWSxVKX0sTi5mcm9tSlNPTj1mdW5jdGlvbihCLFope3JldHVybiBuZXcgTihCLFpbMF0sWlsx''@;'; put 'put ''XSxaWzJdKX0sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJp''@;'; put 'put ''bmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxOLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnguY21wbigwKSYmKDA9PT10aGlzLnkuY21wKHRoaXMueil8fHRoaXMuek9uZSYmMD09PXRoaXMueS5jbXAo''@;'; put 'put ''dGhpcy5jdXJ2ZS5jKSl9LE4ucHJvdG90eXBlLl9leHREYmw9ZnVuY3Rpb24oKXt2YXIgQj10aGlzLngucmVkU3FyKCksWj10aGlzLnkucmVkU3FyKCksWT10aGlzLnoucmVkU3FyKCk7WT1ZLnJlZElBZGQoWSk7dmFyIFU9dGhpcy5jdXJ2ZS5fbXVsQShCKSxxPXRoaXMueC5yZWRBZGQodGhp''@;'; put 'put ''cy55KS5yZWRTcXIoKS5yZWRJU3ViKEIpLnJlZElTdWIoWiksSj1VLnJlZEFkZChaKSxlZT1KLnJlZFN1YihZKSxyZT1VLnJlZFN1YihaKSxpZT1xLnJlZE11bChlZSksdWU9Si5yZWRNdWwocmUpLGxlPXEucmVkTXVsKHJlKSxhZT1lZS5yZWRNdWwoSik7cmV0dXJuIHRoaXMuY3VydmUucG9p''@;'; put 'put ''bnQoaWUsdWUsYWUsbGUpfSxOLnByb3RvdHlwZS5fcHJvakRibD1mdW5jdGlvbigpe3ZhciBCLFosWSxVLHEsSixlZT10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkscmU9dGhpcy54LnJlZFNxcigpLGllPXRoaXMueS5yZWRTcXIoKTtpZih0aGlzLmN1cnZlLnR3aXN0ZWQpe3ZhciB1''@;'; put 'put ''ZT0oVT10aGlzLmN1cnZlLl9tdWxBKHJlKSkucmVkQWRkKGllKTt0aGlzLnpPbmU/KEI9ZWUucmVkU3ViKHJlKS5yZWRTdWIoaWUpLnJlZE11bCh1ZS5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKSxaPXVlLnJlZE11bChVLnJlZFN1YihpZSkpLFk9dWUucmVkU3FyKCkucmVkU3ViKHVlKS5yZWRT''@;'; put 'put ''dWIodWUpKToocT10aGlzLnoucmVkU3FyKCksSj11ZS5yZWRTdWIocSkucmVkSVN1YihxKSxCPWVlLnJlZFN1YihyZSkucmVkSVN1YihpZSkucmVkTXVsKEopLFo9dWUucmVkTXVsKFUucmVkU3ViKGllKSksWT11ZS5yZWRNdWwoSikpfWVsc2UgVT1yZS5yZWRBZGQoaWUpLHE9dGhpcy5jdXJ2''@;'; put 'put ''ZS5fbXVsQyh0aGlzLnopLnJlZFNxcigpLEo9VS5yZWRTdWIocSkucmVkU3ViKHEpLEI9dGhpcy5jdXJ2ZS5fbXVsQyhlZS5yZWRJU3ViKFUpKS5yZWRNdWwoSiksWj10aGlzLmN1cnZlLl9tdWxDKFUpLnJlZE11bChyZS5yZWRJU3ViKGllKSksWT1VLnJlZE11bChKKTtyZXR1cm4gdGhpcy5j''@;'; put 'put ''dXJ2ZS5wb2ludChCLFosWSl9LE4ucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0RGJsKCk6dGhpcy5fcHJvakRibCgpfSxOLnByb3RvdHlwZS5fZXh0QWRkPWZ1bmN0aW9uKEIpe3ZhciBa''@;'; put 'put ''PXRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwoQi55LnJlZFN1YihCLngpKSxZPXRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwoQi55LnJlZEFkZChCLngpKSxVPXRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKEIudCkscT10aGlzLnoucmVkTXVsKEIuei5yZWRBZGQo''@;'; put 'put ''Qi56KSksSj1ZLnJlZFN1YihaKSxlZT1xLnJlZFN1YihVKSxyZT1xLnJlZEFkZChVKSxpZT1ZLnJlZEFkZChaKSx1ZT1KLnJlZE11bChlZSksbGU9cmUucmVkTXVsKGllKSxhZT1KLnJlZE11bChpZSksVz1lZS5yZWRNdWwocmUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHVlLGxlLFcsYWUp''@;'; put 'put ''fSxOLnByb3RvdHlwZS5fcHJvakFkZD1mdW5jdGlvbihCKXt2YXIgWixZLFU9dGhpcy56LnJlZE11bChCLnopLHE9VS5yZWRTcXIoKSxKPXRoaXMueC5yZWRNdWwoQi54KSxlZT10aGlzLnkucmVkTXVsKEIueSkscmU9dGhpcy5jdXJ2ZS5kLnJlZE11bChKKS5yZWRNdWwoZWUpLGllPXEucmVk''@;'; put 'put ''U3ViKHJlKSx1ZT1xLnJlZEFkZChyZSksbGU9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChCLngucmVkQWRkKEIueSkpLnJlZElTdWIoSikucmVkSVN1YihlZSksYWU9VS5yZWRNdWwoaWUpLnJlZE11bChsZSk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8oWj1VLnJlZE11bCh1ZSku''@;'; put 'put ''cmVkTXVsKGVlLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKEopKSksWT1pZS5yZWRNdWwodWUpKTooWj1VLnJlZE11bCh1ZSkucmVkTXVsKGVlLnJlZFN1YihKKSksWT10aGlzLmN1cnZlLl9tdWxDKGllKS5yZWRNdWwodWUpKSx0aGlzLmN1cnZlLnBvaW50KGFlLFosWSl9LE4ucHJvdG90eXBl''@;'; put 'put ''LmFkZD1mdW5jdGlvbihCKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/QjpCLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKEIpOnRoaXMuX3Byb2pBZGQoQil9LE4ucHJvdG90eXBlLm11bD1mdW5jdGlvbihCKXtyZXR1cm4gdGhpcy5faGFzRG91''@;'; put 'put ''YmxlcyhCKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLEIpOnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxCKX0sTi5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKEIsWixZKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLFpdLFtCLFldLDIsITEpfSxOLnByb3Rv''@;'; put 'put ''dHlwZS5qbXVsQWRkPWZ1bmN0aW9uKEIsWixZKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLFpdLFtCLFldLDIsITApfSxOLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIEI9dGhpcy56LnJlZEludm0oKTty''@;'; put 'put ''ZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwoQiksdGhpcy55PXRoaXMueS5yZWRNdWwoQiksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwoQikpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30sTi5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0aGlzLnosdGhpcy50JiZ0aGlzLnQucmVkTmVnKCkpfSxOLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0sTi5wcm90b3R5cGUuZ2V0WT1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9tUmVkKCl9LE4ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEIpe3JldHVybiB0aGlzPT09Qnx8MD09PXRoaXMuZ2V0WCgpLmNtcChCLmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAoQi5nZXRZKCkpfSxOLnByb3RvdHlwZS5l''@;'; put 'put ''cVhUb1A9ZnVuY3Rpb24oQil7dmFyIFo9Qi50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7aWYoMD09PXRoaXMueC5jbXAoWikpcmV0dXJuITA7Zm9yKHZhciBZPUIuY2xvbmUoKSxVPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihZLmlhZGQodGhpcy5j''@;'; put 'put ''dXJ2ZS5uKSxZLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKFoucmVkSUFkZChVKSwwPT09dGhpcy54LmNtcChaKSlyZXR1cm4hMH19LE4ucHJvdG90eXBlLnRvUD1OLnByb3RvdHlwZS5ub3JtYWxpemUsTi5wcm90b3R5cGUubWl4ZWRBZGQ9Ti5wcm90b3R5cGUuYWRkfSw4MjU0''@;'; put 'put ''OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9TztqLmJhc2U9SSg0OTE4KSxqLnNob3J0PUkoNjY3Myksai5tb250PUkoMjg4MSksai5lZHdhcmRzPUkoMTEzOCl9LDI4ODE6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDM3ODUpLEc9SSg1NzE3KSxEPUkoNDkxOCksVD1JKDk1''@;'; put 'put ''Myk7ZnVuY3Rpb24gRShOKXtELmNhbGwodGhpcywibW9udCIsTiksdGhpcy5hPW5ldyBqKE4uYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgaihOLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyBqKDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCksdGhpcy50d289''@;'; put 'put ''bmV3IGooMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiB6KE4sQixaKXtELkJhc2VQb2ludC5jYWxsKHRoaXMsTiwicHJvamVjdGl2ZSIpLG51bGw9PT1CJiZudWxsPT09Wj8odGhpcy54PXRoaXMuY3Vy''@;'; put 'put ''dmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlzLng9bmV3IGooQiwxNiksdGhpcy56PW5ldyBqKFosMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5y''@;'; put 'put ''ZWQpKSl9RyhFLEQpLE0uZXhwb3J0cz1FLEUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKE4pe3ZhciBCPU4ubm9ybWFsaXplKCkueCxaPUIucmVkU3FyKCksWT1aLnJlZE11bChCKS5yZWRBZGQoWi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKEIpO3JldHVybiAwPT09WS5yZWRTcXJ0KCku''@;'; put 'put ''cmVkU3FyKCkuY21wKFkpfSxHKHosRC5CYXNlUG9pbnQpLEUucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKE4sQil7cmV0dXJuIHRoaXMucG9pbnQoVC50b0FycmF5KE4sQiksMSl9LEUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKE4sQil7cmV0dXJuIG5ldyB6KHRoaXMsTixCKX0s''@;'; put 'put ''RS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihOKXtyZXR1cm4gei5mcm9tSlNPTih0aGlzLE4pfSx6LnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKCl7fSx6LnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoImJlIix0''@;'; put 'put ''aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKX0sei5mcm9tSlNPTj1mdW5jdGlvbihOLEIpe3JldHVybiBuZXcgeihOLEJbMF0sQlsxXXx8Ti5vbmUpfSx6LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+Ijoi''@;'; put 'put ''PEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHo6ICIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LHoucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuei5jbXBuKDApfSx6LnByb3RvdHlwZS5k''@;'; put 'put ''Ymw9ZnVuY3Rpb24oKXt2YXIgTj10aGlzLngucmVkQWRkKHRoaXMueikucmVkU3FyKCksQj10aGlzLngucmVkU3ViKHRoaXMueikucmVkU3FyKCksWj1OLnJlZFN1YihCKSxZPU4ucmVkTXVsKEIpLFU9Wi5yZWRNdWwoQi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKFopKSk7cmV0dXJu''@;'; put 'put ''IHRoaXMuY3VydmUucG9pbnQoWSxVKX0sei5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sei5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbihOLEIpe3ZhciBaPXRoaXMueC5yZWRBZGQodGhpcy56''@;'; put 'put ''KSxZPXRoaXMueC5yZWRTdWIodGhpcy56KSxVPU4ueC5yZWRBZGQoTi56KSxxPU4ueC5yZWRTdWIoTi56KS5yZWRNdWwoWiksSj1VLnJlZE11bChZKSxlZT1CLnoucmVkTXVsKHEucmVkQWRkKEopLnJlZFNxcigpKSxyZT1CLngucmVkTXVsKHEucmVkSVN1YihKKS5yZWRTcXIoKSk7cmV0dXJu''@;'; put 'put ''IHRoaXMuY3VydmUucG9pbnQoZWUscmUpfSx6LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oTil7Zm9yKHZhciBCPU4uY2xvbmUoKSxaPXRoaXMsWT10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksVT1bXTswIT09Qi5jbXBuKDApO0IuaXVzaHJuKDEpKVUucHVzaChCLmFuZGxuKDEpKTtmb3Io''@;'; put 'put ''dmFyIHE9VS5sZW5ndGgtMTtxPj0wO3EtLSkwPT09VVtxXT8oWj1aLmRpZmZBZGQoWSx0aGlzKSxZPVkuZGJsKCkpOihZPVouZGlmZkFkZChZLHRoaXMpLFo9Wi5kYmwoKSk7cmV0dXJuIFl9LHoucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IHN1cHBv''@;'; put 'put ''cnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlIil9LHoucHJvdG90eXBlLmp1bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSx6LnByb3RvdHlwZS5lcT1mdW5jdGlvbihOKXtyZXR1cm4gMD09PXRoaXMuZ2V0WCgpLmNt''@;'; put 'put ''cChOLmdldFgoKSl9LHoucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpc30sei5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1h''@;'; put 'put ''bGl6ZSgpLHRoaXMueC5mcm9tUmVkKCl9fSw2NjczOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg5NTMpLEc9SSgzNzg1KSxEPUkoNTcxNyksVD1JKDQ5MTgpLEU9ai5hc3NlcnQ7ZnVuY3Rpb24geihaKXtULmNhbGwodGhpcywic2hvcnQiLFopLHRoaXMuYT1uZXcgRyhaLmEsMTYp''@;'; put 'put ''LnRvUmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IEcoWi5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKSx0aGlzLnplcm9BPTA9PT10aGlzLmEuZnJvbVJlZCgpLmNtcG4oMCksdGhpcy50aHJlZUE9MD09PXRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMu''@;'; put 'put ''cCkuY21wbigtMyksdGhpcy5lbmRvPXRoaXMuX2dldEVuZG9tb3JwaGlzbShaKSx0aGlzLl9lbmRvV25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl9lbmRvV25hZlQyPW5ldyBBcnJheSg0KX1mdW5jdGlvbiBOKFosWSxVLHEpe1QuQmFzZVBvaW50LmNhbGwodGhpcyxaLCJhZmZpbmUiKSxudWxs''@;'; put 'put ''PT09WSYmbnVsbD09PVU/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhpcy54PW5ldyBHKFksMTYpLHRoaXMueT1uZXcgRyhVLDE2KSxxJiYodGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSx0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlz''@;'; put 'put ''LngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy5pbmY9ITEpfWZ1bmN0aW9uIEIoWixZLFUscSl7VC5CYXNlUG9pbnQuY2FsbCh0aGlzLFosImphY29iaWFuIiks''@;'; put 'put ''bnVsbD09PVkmJm51bGw9PT1VJiZudWxsPT09cT8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMueT10aGlzLmN1cnZlLm9uZSx0aGlzLno9bmV3IEcoMCkpOih0aGlzLng9bmV3IEcoWSwxNiksdGhpcy55PW5ldyBHKFUsMTYpLHRoaXMuej1uZXcgRyhxLDE2KSksdGhpcy54LnJlZHx8KHRo''@;'; put 'put ''aXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUu''@;'; put 'put ''b25lfUQoeixUKSxNLmV4cG9ydHM9eix6LnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtPWZ1bmN0aW9uKFope2lmKHRoaXMuemVyb0EmJnRoaXMuZyYmdGhpcy5uJiYxPT09dGhpcy5wLm1vZG4oMykpe3ZhciBZLFU7aWYoWi5iZXRhKVk9bmV3IEcoWi5iZXRhLDE2KS50b1JlZCh0aGlzLnJl''@;'; put 'put ''ZCk7ZWxzZXt2YXIgcT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtZPShZPXFbMF0uY21wKHFbMV0pPDA/cVswXTpxWzFdKS50b1JlZCh0aGlzLnJlZCl9aWYoWi5sYW1iZGEpVT1uZXcgRyhaLmxhbWJkYSwxNik7ZWxzZXt2YXIgSj10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTswPT09''@;'; put 'put ''dGhpcy5nLm11bChKWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoWSkpP1U9SlswXTpFKDA9PT10aGlzLmcubXVsKFU9SlsxXSkueC5jbXAodGhpcy5nLngucmVkTXVsKFkpKSl9cmV0dXJue2JldGE6WSxsYW1iZGE6VSxiYXNpczpaLmJhc2lzP1ouYmFzaXMubWFwKGZ1bmN0aW9uKGVlKXty''@;'; put 'put ''ZXR1cm57YTpuZXcgRyhlZS5hLDE2KSxiOm5ldyBHKGVlLmIsMTYpfX0pOnRoaXMuX2dldEVuZG9CYXNpcyhVKX19fSx6LnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzPWZ1bmN0aW9uKFope3ZhciBZPVo9PT10aGlzLnA/dGhpcy5yZWQ6Ry5tb250KFopLFU9bmV3IEcoMikudG9SZWQoWSkucmVk''@;'; put 'put ''SW52bSgpLHE9VS5yZWROZWcoKSxKPW5ldyBHKDMpLnRvUmVkKFkpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwoVSk7cmV0dXJuW3EucmVkQWRkKEopLmZyb21SZWQoKSxxLnJlZFN1YihKKS5mcm9tUmVkKCldfSx6LnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzPWZ1bmN0aW9uKFope2Zvcih2''@;'; put 'put ''YXIgWSxVLHEsSixlZSxyZSxpZSx1ZSxsZSxhZT10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLFc9WixiPXRoaXMubi5jbG9uZSgpLEE9bmV3IEcoMSksRj1uZXcgRygwKSxIPW5ldyBHKDApLGc9bmV3IEcoMSksQz0wOzAhPT1XLmNtcG4oMCk7KXt2YXIg''@;'; put 'put ''az1iLmRpdihXKTt1ZT1iLnN1YihrLm11bChXKSksbGU9SC5zdWIoay5tdWwoQSkpO3ZhciBfPWcuc3ViKGsubXVsKEYpKTtpZighcSYmdWUuY21wKGFlKTwwKVk9aWUubmVnKCksVT1BLHE9dWUubmVnKCksSj1sZTtlbHNlIGlmKHEmJjI9PSsrQylicmVhaztpZT11ZSxiPVcsVz11ZSxIPUEs''@;'; put 'put ''QT1sZSxnPUYsRj1ffWVlPXVlLm5lZygpLHJlPWxlO3ZhciBwPXEuc3FyKCkuYWRkKEouc3FyKCkpO3JldHVybiBlZS5zcXIoKS5hZGQocmUuc3FyKCkpLmNtcChwKT49MCYmKGVlPVkscmU9VSkscS5uZWdhdGl2ZSYmKHE9cS5uZWcoKSxKPUoubmVnKCkpLGVlLm5lZ2F0aXZlJiYoZWU9ZWUu''@;'; put 'put ''bmVnKCkscmU9cmUubmVnKCkpLFt7YTpxLGI6Sn0se2E6ZWUsYjpyZX1dfSx6LnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKFope3ZhciBZPXRoaXMuZW5kby5iYXNpcyxVPVlbMF0scT1ZWzFdLEo9cS5iLm11bChaKS5kaXZSb3VuZCh0aGlzLm4pLGVlPVUuYi5uZWcoKS5tdWwoWiku''@;'; put 'put ''ZGl2Um91bmQodGhpcy5uKSxyZT1KLm11bChVLmEpLGllPWVlLm11bChxLmEpLHVlPUoubXVsKFUuYiksbGU9ZWUubXVsKHEuYik7cmV0dXJue2sxOlouc3ViKHJlKS5zdWIoaWUpLGsyOnVlLmFkZChsZSkubmVnKCl9fSx6LnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKFosWSl7KFo9''@;'; put 'put ''bmV3IEcoWiwxNikpLnJlZHx8KFo9Wi50b1JlZCh0aGlzLnJlZCkpO3ZhciBVPVoucmVkU3FyKCkucmVkTXVsKFopLnJlZElBZGQoWi5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpLHE9VS5yZWRTcXJ0KCk7aWYoMCE9PXEucmVkU3FyKCkucmVkU3ViKFUpLmNtcCh0aGlzLnplcm8p''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBKPXEuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKFkmJiFKfHwhWSYmSikmJihxPXEucmVkTmVnKCkpLHRoaXMucG9pbnQoWixxKX0sei5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oWil7aWYoWi5pbmYpcmV0dXJuITA7''@;'; put 'put ''dmFyIFk9Wi54LFU9Wi55LHE9dGhpcy5hLnJlZE11bChZKSxKPVkucmVkU3FyKCkucmVkTXVsKFkpLnJlZElBZGQocSkucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09VS5yZWRTcXIoKS5yZWRJU3ViKEopLmNtcG4oMCl9LHoucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbiha''@;'; put 'put ''LFksVSl7Zm9yKHZhciBxPXRoaXMuX2VuZG9XbmFmVDEsSj10aGlzLl9lbmRvV25hZlQyLGVlPTA7ZWU8Wi5sZW5ndGg7ZWUrKyl7dmFyIHJlPXRoaXMuX2VuZG9TcGxpdChZW2VlXSksaWU9WltlZV0sdWU9aWUuX2dldEJldGEoKTtyZS5rMS5uZWdhdGl2ZSYmKHJlLmsxLmluZWcoKSxpZT1p''@;'; put 'put ''ZS5uZWcoITApKSxyZS5rMi5uZWdhdGl2ZSYmKHJlLmsyLmluZWcoKSx1ZT11ZS5uZWcoITApKSxxWzIqZWVdPWllLHFbMiplZSsxXT11ZSxKWzIqZWVdPXJlLmsxLEpbMiplZSsxXT1yZS5rMn1mb3IodmFyIGxlPXRoaXMuX3duYWZNdWxBZGQoMSxxLEosMiplZSxVKSxhZT0wO2FlPDIqZWU7''@;'; put 'put ''YWUrKylxW2FlXT1udWxsLEpbYWVdPW51bGw7cmV0dXJuIGxlfSxEKE4sVC5CYXNlUG9pbnQpLHoucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKFosWSxVKXtyZXR1cm4gbmV3IE4odGhpcyxaLFksVSl9LHoucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oWixZKXtyZXR1cm4gTi5m''@;'; put 'put ''cm9tSlNPTih0aGlzLFosWSl9LE4ucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXJ2ZS5lbmRvKXt2YXIgWj10aGlzLnByZWNvbXB1dGVkO2lmKFomJlouYmV0YSlyZXR1cm4gWi5iZXRhO3ZhciBZPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1''@;'; put 'put ''cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihaKXt2YXIgVT10aGlzLmN1cnZlLHE9ZnVuY3Rpb24oSil7cmV0dXJuIFUucG9pbnQoSi54LnJlZE11bChVLmVuZG8uYmV0YSksSi55KX07Wi5iZXRhPVksWS5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjpaLm5hZiYme3duZDpaLm5hZi53bmQs''@;'; put 'put ''cG9pbnRzOloubmFmLnBvaW50cy5tYXAocSl9LGRvdWJsZXM6Wi5kb3VibGVzJiZ7c3RlcDpaLmRvdWJsZXMuc3RlcCxwb2ludHM6Wi5kb3VibGVzLnBvaW50cy5tYXAocSl9fX1yZXR1cm4gWX19LE4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZWNvbXB1dGVk''@;'; put 'put ''P1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnBy''@;'; put 'put ''ZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LE4uZnJvbUpTT049ZnVuY3Rpb24oWixZLFUpeyJzdHJpbmciPT10eXBlb2YgWSYmKFk9SlNPTi5w''@;'; put 'put ''YXJzZShZKSk7dmFyIHE9Wi5wb2ludChZWzBdLFlbMV0sVSk7aWYoIVlbMl0pcmV0dXJuIHE7ZnVuY3Rpb24gSihyZSl7cmV0dXJuIFoucG9pbnQocmVbMF0scmVbMV0sVSl9dmFyIGVlPVlbMl07cmV0dXJuIHEucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxkb3VibGVzOmVlLmRvdWJsZXMmJntz''@;'; put 'put ''dGVwOmVlLmRvdWJsZXMuc3RlcCxwb2ludHM6W3FdLmNvbmNhdChlZS5kb3VibGVzLnBvaW50cy5tYXAoSikpfSxuYWY6ZWUubmFmJiZ7d25kOmVlLm5hZi53bmQscG9pbnRzOltxXS5jb25jYXQoZWUubmFmLnBvaW50cy5tYXAoSikpfX0scX0sTi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxOLnByb3RvdHlwZS5pc0luZmluaXR5''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oWil7aWYodGhpcy5pbmYpcmV0dXJuIFo7aWYoWi5pbmYpcmV0dXJuIHRoaXM7aWYodGhpcy5lcShaKSlyZXR1cm4gdGhpcy5kYmwoKTtpZih0aGlzLm5lZygpLmVxKFopKXJldHVybiB0aGlzLmN1''@;'; put 'put ''cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAoWi54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBZPXRoaXMueS5yZWRTdWIoWi55KTswIT09WS5jbXBuKDApJiYoWT1ZLnJlZE11bCh0aGlzLngucmVkU3ViKFoueCkucmVkSW52bSgpKSk7dmFy''@;'; put 'put ''IFU9WS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihaLngpLHE9WS5yZWRNdWwodGhpcy54LnJlZFN1YihVKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KFUscSl9LE4ucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0''@;'; put 'put ''aGlzO3ZhciBaPXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09Wi5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFk9dGhpcy5jdXJ2ZS5hLFU9dGhpcy54LnJlZFNxcigpLHE9Wi5yZWRJbnZtKCksSj1VLnJlZEFkZChVKS5yZWRJQWRkKFUpLnJlZElB''@;'; put 'put ''ZGQoWSkucmVkTXVsKHEpLGVlPUoucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpLHJlPUoucmVkTXVsKHRoaXMueC5yZWRTdWIoZWUpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZWUscmUpfSxOLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LE4ucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55LmZyb21SZWQoKX0sTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKFope3JldHVybiBaPW5ldyBHKFosMTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91''@;'; put 'put ''YmxlcyhaKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLFopOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW1pdKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsWil9LE4ucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihaLFksVSl7dmFyIHE9''@;'; put 'put ''W3RoaXMsWV0sSj1bWixVXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHEsSik6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHEsSiwyKX0sTi5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihaLFksVSl7dmFyIHE9W3RoaXMsWV0sSj1bWixVXTty''@;'; put 'put ''ZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHEsSiwhMCk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHEsSiwyLCEwKX0sTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oWil7cmV0dXJuIHRoaXM9PT1afHx0aGlzLmluZj09PVouaW5mJiYodGhpcy5pbmZ8''@;'; put 'put ''fDA9PT10aGlzLnguY21wKFoueCkmJjA9PT10aGlzLnkuY21wKFoueSkpfSxOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oWil7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIFk9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihaJiZ0aGlzLnByZWNvbXB1dGVk''@;'; put 'put ''KXt2YXIgVT10aGlzLnByZWNvbXB1dGVkLHE9ZnVuY3Rpb24oSil7cmV0dXJuIEoubmVnKCl9O1kucHJlY29tcHV0ZWQ9e25hZjpVLm5hZiYme3duZDpVLm5hZi53bmQscG9pbnRzOlUubmFmLnBvaW50cy5tYXAocSl9LGRvdWJsZXM6VS5kb3VibGVzJiZ7c3RlcDpVLmRvdWJsZXMuc3RlcCxw''@;'; put 'put ''b2ludHM6VS5kb3VibGVzLnBvaW50cy5tYXAocSl9fX1yZXR1cm4gWX0sTi5wcm90b3R5cGUudG9KPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25l''@;'; put 'put ''KX0sRChCLFQuQmFzZVBvaW50KSx6LnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24oWixZLFUpe3JldHVybiBuZXcgQih0aGlzLFosWSxVKX0sQi5wcm90b3R5cGUudG9QPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2''@;'; put 'put ''YXIgWj10aGlzLnoucmVkSW52bSgpLFk9Wi5yZWRTcXIoKSxVPXRoaXMueC5yZWRNdWwoWSkscT10aGlzLnkucmVkTXVsKFkpLnJlZE11bChaKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChVLHEpfSxCLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQo''@;'; put 'put ''dGhpcy54LHRoaXMueS5yZWROZWcoKSx0aGlzLnopfSxCLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oWil7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIFo7aWYoWi5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIFk9Wi56LnJlZFNxcigpLFU9dGhpcy56LnJlZFNxcigpLHE9dGhpcy54''@;'; put 'put ''LnJlZE11bChZKSxKPVoueC5yZWRNdWwoVSksZWU9dGhpcy55LnJlZE11bChZLnJlZE11bChaLnopKSxyZT1aLnkucmVkTXVsKFUucmVkTXVsKHRoaXMueikpLGllPXEucmVkU3ViKEopLHVlPWVlLnJlZFN1YihyZSk7aWYoMD09PWllLmNtcG4oMCkpcmV0dXJuIDAhPT11ZS5jbXBuKDApP3Ro''@;'; put 'put ''aXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBsZT1pZS5yZWRTcXIoKSxhZT1sZS5yZWRNdWwoaWUpLFc9cS5yZWRNdWwobGUpLGI9dWUucmVkU3FyKCkucmVkSUFkZChhZSkucmVkSVN1YihXKS5yZWRJU3ViKFcpLEE9dWUucmVkTXVsKFcucmVkSVN1Yihi''@;'; put 'put ''KSkucmVkSVN1YihlZS5yZWRNdWwoYWUpKSxGPXRoaXMuei5yZWRNdWwoWi56KS5yZWRNdWwoaWUpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChiLEEsRil9LEIucHJvdG90eXBlLm1peGVkQWRkPWZ1bmN0aW9uKFope2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBaLnRvSigpO2lmKFou''@;'; put 'put ''aXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBZPXRoaXMuei5yZWRTcXIoKSxVPXRoaXMueCxxPVoueC5yZWRNdWwoWSksSj10aGlzLnksZWU9Wi55LnJlZE11bChZKS5yZWRNdWwodGhpcy56KSxyZT1VLnJlZFN1YihxKSxpZT1KLnJlZFN1YihlZSk7aWYoMD09PXJlLmNtcG4oMCkpcmV0''@;'; put 'put ''dXJuIDAhPT1pZS5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciB1ZT1yZS5yZWRTcXIoKSxsZT11ZS5yZWRNdWwocmUpLGFlPVUucmVkTXVsKHVlKSxXPWllLnJlZFNxcigpLnJlZElBZGQobGUpLnJlZElTdWIoYWUpLnJlZElTdWIoYWUp''@;'; put 'put ''LGI9aWUucmVkTXVsKGFlLnJlZElTdWIoVykpLnJlZElTdWIoSi5yZWRNdWwobGUpKSxBPXRoaXMuei5yZWRNdWwocmUpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChXLGIsQSl9LEIucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oWil7aWYoMD09PVopcmV0dXJuIHRoaXM7aWYodGhpcy5pc0lu''@;'; put 'put ''ZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIVopcmV0dXJuIHRoaXMuZGJsKCk7dmFyIFk7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe3ZhciBVPXRoaXM7Zm9yKFk9MDtZPFo7WSsrKVU9VS5kYmwoKTtyZXR1cm4gVX12YXIgcT10aGlzLmN1cnZlLmEsSj10aGlzLmN1''@;'; put 'put ''cnZlLnRpbnYsZWU9dGhpcy54LHJlPXRoaXMueSxpZT10aGlzLnosdWU9aWUucmVkU3FyKCkucmVkU3FyKCksbGU9cmUucmVkQWRkKHJlKTtmb3IoWT0wO1k8WjtZKyspe3ZhciBhZT1lZS5yZWRTcXIoKSxXPWxlLnJlZFNxcigpLGI9Vy5yZWRTcXIoKSxBPWFlLnJlZEFkZChhZSkucmVkSUFk''@;'; put 'put ''ZChhZSkucmVkSUFkZChxLnJlZE11bCh1ZSkpLEY9ZWUucmVkTXVsKFcpLEg9QS5yZWRTcXIoKS5yZWRJU3ViKEYucmVkQWRkKEYpKSxnPUYucmVkSVN1YihIKSxDPUEucmVkTXVsKGcpO0M9Qy5yZWRJQWRkKEMpLnJlZElTdWIoYik7dmFyIGs9bGUucmVkTXVsKGllKTtZKzE8WiYmKHVlPXVl''@;'; put 'put ''LnJlZE11bChiKSksZWU9SCxpZT1rLGxlPUN9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGVlLGxlLnJlZE11bChKKSxpZSl9LEIucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRo''@;'; put 'put ''aXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LEIucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0aW9uKCl7dmFyIFosWSxVO2lmKHRoaXMuek9uZSl7dmFyIHE9dGhpcy54LnJlZFNxcigpLEo9dGhpcy55LnJlZFNxcigpLGVlPUoucmVkU3FyKCkscmU9dGhpcy54''@;'; put 'put ''LnJlZEFkZChKKS5yZWRTcXIoKS5yZWRJU3ViKHEpLnJlZElTdWIoZWUpO3JlPXJlLnJlZElBZGQocmUpO3ZhciBpZT1xLnJlZEFkZChxKS5yZWRJQWRkKHEpLHVlPWllLnJlZFNxcigpLnJlZElTdWIocmUpLnJlZElTdWIocmUpLGxlPWVlLnJlZElBZGQoZWUpO2xlPShsZT1sZS5yZWRJQWRk''@;'; put 'put ''KGxlKSkucmVkSUFkZChsZSksWj11ZSxZPWllLnJlZE11bChyZS5yZWRJU3ViKHVlKSkucmVkSVN1YihsZSksVT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgYWU9dGhpcy54LnJlZFNxcigpLFc9dGhpcy55LnJlZFNxcigpLGI9Vy5yZWRTcXIoKSxBPXRoaXMueC5yZWRBZGQoVyku''@;'; put 'put ''cmVkU3FyKCkucmVkSVN1YihhZSkucmVkSVN1YihiKTtBPUEucmVkSUFkZChBKTt2YXIgRj1hZS5yZWRBZGQoYWUpLnJlZElBZGQoYWUpLEg9Ri5yZWRTcXIoKSxnPWIucmVkSUFkZChiKTtnPShnPWcucmVkSUFkZChnKSkucmVkSUFkZChnKSxaPUgucmVkSVN1YihBKS5yZWRJU3ViKEEpLFk9''@;'; put 'put ''Ri5yZWRNdWwoQS5yZWRJU3ViKFopKS5yZWRJU3ViKGcpLFU9KFU9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKFUpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChaLFksVSl9LEIucHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBaLFksVTtpZih0aGlzLnpPbmUpe3Zh''@;'; put 'put ''ciBxPXRoaXMueC5yZWRTcXIoKSxKPXRoaXMueS5yZWRTcXIoKSxlZT1KLnJlZFNxcigpLHJlPXRoaXMueC5yZWRBZGQoSikucmVkU3FyKCkucmVkSVN1YihxKS5yZWRJU3ViKGVlKTtyZT1yZS5yZWRJQWRkKHJlKTt2YXIgaWU9cS5yZWRBZGQocSkucmVkSUFkZChxKS5yZWRJQWRkKHRoaXMu''@;'; put 'put ''Y3VydmUuYSksdWU9aWUucmVkU3FyKCkucmVkSVN1YihyZSkucmVkSVN1YihyZSk7Wj11ZTt2YXIgbGU9ZWUucmVkSUFkZChlZSk7bGU9KGxlPWxlLnJlZElBZGQobGUpKS5yZWRJQWRkKGxlKSxZPWllLnJlZE11bChyZS5yZWRJU3ViKHVlKSkucmVkSVN1YihsZSksVT10aGlzLnkucmVkQWRk''@;'; put 'put ''KHRoaXMueSl9ZWxzZXt2YXIgYWU9dGhpcy56LnJlZFNxcigpLFc9dGhpcy55LnJlZFNxcigpLGI9dGhpcy54LnJlZE11bChXKSxBPXRoaXMueC5yZWRTdWIoYWUpLnJlZE11bCh0aGlzLngucmVkQWRkKGFlKSk7QT1BLnJlZEFkZChBKS5yZWRJQWRkKEEpO3ZhciBGPWIucmVkSUFkZChiKSxI''@;'; put 'put ''PShGPUYucmVkSUFkZChGKSkucmVkQWRkKEYpO1o9QS5yZWRTcXIoKS5yZWRJU3ViKEgpLFU9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoVykucmVkSVN1YihhZSk7dmFyIGc9Vy5yZWRTcXIoKTtnPShnPShnPWcucmVkSUFkZChnKSkucmVkSUFkZChnKSkucmVkSUFk''@;'; put 'put ''ZChnKSxZPUEucmVkTXVsKEYucmVkSVN1YihaKSkucmVkSVN1YihnKX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoWixZLFUpfSxCLnByb3RvdHlwZS5fZGJsPWZ1bmN0aW9uKCl7dmFyIFo9dGhpcy5jdXJ2ZS5hLFk9dGhpcy54LFU9dGhpcy55LHE9dGhpcy56LEo9cS5yZWRTcXIoKS5yZWRT''@;'; put 'put ''cXIoKSxlZT1ZLnJlZFNxcigpLHJlPVUucmVkU3FyKCksaWU9ZWUucmVkQWRkKGVlKS5yZWRJQWRkKGVlKS5yZWRJQWRkKFoucmVkTXVsKEopKSx1ZT1ZLnJlZEFkZChZKSxsZT0odWU9dWUucmVkSUFkZCh1ZSkpLnJlZE11bChyZSksYWU9aWUucmVkU3FyKCkucmVkSVN1YihsZS5yZWRBZGQo''@;'; put 'put ''bGUpKSxXPWxlLnJlZElTdWIoYWUpLGI9cmUucmVkU3FyKCk7Yj0oYj0oYj1iLnJlZElBZGQoYikpLnJlZElBZGQoYikpLnJlZElBZGQoYik7dmFyIEE9aWUucmVkTXVsKFcpLnJlZElTdWIoYiksRj1VLnJlZEFkZChVKS5yZWRNdWwocSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGFlLEEs''@;'; put 'put ''Ril9LEIucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIFo9dGhpcy54LnJlZFNxcigpLFk9dGhpcy55LnJlZFNxcigpLFU9dGhpcy56LnJlZFNxcigpLHE9WS5yZWRTcXIoKSxKPVoucmVkQWRkKFop''@;'; put 'put ''LnJlZElBZGQoWiksZWU9Si5yZWRTcXIoKSxyZT10aGlzLngucmVkQWRkKFkpLnJlZFNxcigpLnJlZElTdWIoWikucmVkSVN1YihxKSxpZT0ocmU9KHJlPShyZT1yZS5yZWRJQWRkKHJlKSkucmVkQWRkKHJlKS5yZWRJQWRkKHJlKSkucmVkSVN1YihlZSkpLnJlZFNxcigpLHVlPXEucmVkSUFk''@;'; put 'put ''ZChxKTt1ZT0odWU9KHVlPXVlLnJlZElBZGQodWUpKS5yZWRJQWRkKHVlKSkucmVkSUFkZCh1ZSk7dmFyIGxlPUoucmVkSUFkZChyZSkucmVkU3FyKCkucmVkSVN1YihlZSkucmVkSVN1YihpZSkucmVkSVN1Yih1ZSksYWU9WS5yZWRNdWwobGUpO2FlPShhZT1hZS5yZWRJQWRkKGFlKSkucmVk''@;'; put 'put ''SUFkZChhZSk7dmFyIFc9dGhpcy54LnJlZE11bChpZSkucmVkSVN1YihhZSk7Vz0oVz1XLnJlZElBZGQoVykpLnJlZElBZGQoVyk7dmFyIGI9dGhpcy55LnJlZE11bChsZS5yZWRNdWwodWUucmVkSVN1YihsZSkpLnJlZElTdWIocmUucmVkTXVsKGllKSkpO2I9KGI9KGI9Yi5yZWRJQWRkKGIp''@;'; put 'put ''KS5yZWRJQWRkKGIpKS5yZWRJQWRkKGIpO3ZhciBBPXRoaXMuei5yZWRBZGQocmUpLnJlZFNxcigpLnJlZElTdWIoVSkucmVkSVN1YihpZSk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KFcsYixBKX0sQi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKFosWSl7cmV0dXJuIFo9bmV3IEcoWixZKSx0''@;'; put 'put ''aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsWil9LEIucHJvdG90eXBlLmVxPWZ1bmN0aW9uKFope2lmKCJhZmZpbmUiPT09Wi50eXBlKXJldHVybiB0aGlzLmVxKFoudG9KKCkpO2lmKHRoaXM9PT1aKXJldHVybiEwO3ZhciBZPXRoaXMuei5yZWRTcXIoKSxVPVouei5yZWRTcXIoKTtpZigwIT09''@;'; put 'put ''dGhpcy54LnJlZE11bChVKS5yZWRJU3ViKFoueC5yZWRNdWwoWSkpLmNtcG4oMCkpcmV0dXJuITE7dmFyIHE9WS5yZWRNdWwodGhpcy56KSxKPVUucmVkTXVsKFoueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKEopLnJlZElTdWIoWi55LnJlZE11bChxKSkuY21wbigwKX0sQi5wcm90b3R5''@;'; put 'put ''cGUuZXFYVG9QPWZ1bmN0aW9uKFope3ZhciBZPXRoaXMuei5yZWRTcXIoKSxVPVoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bChZKTtpZigwPT09dGhpcy54LmNtcChVKSlyZXR1cm4hMDtmb3IodmFyIHE9Wi5jbG9uZSgpLEo9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bChZKTs7KXtpZihx''@;'; put 'put ''LmlhZGQodGhpcy5jdXJ2ZS5uKSxxLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKFUucmVkSUFkZChKKSwwPT09dGhpcy54LmNtcChVKSlyZXR1cm4hMH19LEIucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQg''@;'; put 'put ''SW5maW5pdHk+IjoiPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifSxCLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnou''@;'; put 'put ''Y21wbigwKX19LDU0Mjc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPU8sRD1JKDM3MTUpLFQ9SSg4MjU0KSxFPUkoOTUzKS5hc3NlcnQ7ZnVuY3Rpb24geihCKXt0aGlzLmN1cnZlPSJzaG9ydCI9PT1CLnR5cGU/bmV3IFQuc2hvcnQoQik6ImVkd2FyZHMiPT09Qi50eXBlP25ldyBU''@;'; put 'put ''LmVkd2FyZHMoQik6bmV3IFQubW9udChCKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPUIuaGFzaCxFKHRoaXMuZy52YWxpZGF0ZSgpLCJJbnZhbGlkIGN1cnZlIiksRSh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZhbGlkIGN1''@;'; put 'put ''cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIE4oQixaKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoRyxCLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgWT1uZXcgeihaKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KEcsQix7Y29uZmlndXJhYmxl''@;'; put 'put ''OiEwLGVudW1lcmFibGU6ITAsdmFsdWU6WX0pLFl9fSl9Ry5QcmVzZXRDdXJ2ZT16LE4oInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixoYXNoOkQuc2hhMjU2''@;'; put 'put ''LGdSZWQ6ITEsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEiXX0pLE4oInAyMjQiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAyMjQiLHA6''@;'; put 'put ''ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0''@;'; put 'put ''NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkIixoYXNoOkQuc2hhMjU2LGdSZWQ6ITEsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2''@;'; put 'put ''YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pLE4oInAyNTYiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAw''@;'; put 'put ''MCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNj''@;'; put 'put ''NTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MSIsaGFzaDpELnNoYTI1NixnUmVkOiExLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3''@;'; put 'put ''NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1Il19KSxOKCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiA1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIsbjoiZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMiLGhhc2g6RC5zaGEzODQsZ1JlZDohMSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUx''@;'; put 'put ''ZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAxZDdlODE5ZCA3YTQz''@;'; put 'put ''MWQ3YyA5MGVhMGU1ZiJdfSksTigicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJmMDcgMzU3M2RmODgg''@;'; put 'put ''M2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2Fl''@;'; put 'put ''IGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOkQuc2hhNTEyLGdSZWQ6ITEsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IDA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3IGEyZmZhOGRlIDMz''@;'; put 'put ''NDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEgMzUzYzcwODYgYTI3''@;'; put 'put ''MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pLE4oImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIsYjoiMSIsbjoiMTAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpELnNoYTI1NixnUmVkOiExLGc6WyI5Il19KSxOKCJlZDI1NTE5Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6RC5zaGEyNTYsZ1JlZDohMSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2''@;'; put 'put ''NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3RyeXtqPUkoMTAzNyl9Y2F0Y2h7aj12b2lkIDB9Tigic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHByaW1lOiJrMjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBm''@;'; put 'put ''ZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEiLGg6IjEiLGhhc2g6RC5zaGEyNTYsYmV0YToiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5''@;'; put 'put ''Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZSIsbGFtYmRhOiI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyIixiYXNpczpbe2E6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1IixiOiItZTQ0MzdlZDYw''@;'; put 'put ''MTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMifSx7YToiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IixiOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSJ9XSxnUmVkOiExLGc6WyI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1''@;'; put 'put ''OWYyODE1YjE2ZjgxNzk4IiwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCIsal19KX0sNzk1NDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoMzc4NSksRz1JKDIxNTYpLEQ9SSg5NTMpLFQ9SSg1NDI3KSxFPUko''@;'; put 'put ''OTkzMSksej1ELmFzc2VydCxOPUkoMTI1MSksQj1JKDYxMSk7ZnVuY3Rpb24gWihZKXtpZighKHRoaXMgaW5zdGFuY2VvZiBaKSlyZXR1cm4gbmV3IFooWSk7InN0cmluZyI9PXR5cGVvZiBZJiYoeihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxZKSwiVW5rbm93biBj''@;'; put 'put ''dXJ2ZSAiK1kpLFk9VFtZXSksWSBpbnN0YW5jZW9mIFQuUHJlc2V0Q3VydmUmJihZPXtjdXJ2ZTpZfSksdGhpcy5jdXJ2ZT1ZLmN1cnZlLmN1cnZlLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5uaD10aGlzLm4udXNocm4oMSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLmc9WS5jdXJ2ZS5n''@;'; put 'put ''LHRoaXMuZy5wcmVjb21wdXRlKFkuY3VydmUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLmhhc2g9WS5oYXNofHxZLmN1cnZlLmhhc2h9TS5leHBvcnRzPVosWi5wcm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbihZKXtyZXR1cm4gbmV3IE4odGhpcyxZKX0sWi5wcm90b3R5cGUua2V5RnJvbVByaXZh''@;'; put 'put ''dGU9ZnVuY3Rpb24oWSxVKXtyZXR1cm4gTi5mcm9tUHJpdmF0ZSh0aGlzLFksVSl9LFoucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oWSxVKXtyZXR1cm4gTi5mcm9tUHVibGljKHRoaXMsWSxVKX0sWi5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihZKXtZfHwoWT17fSk7''@;'; put 'put ''Zm9yKHZhciBVPW5ldyBHKHtoYXNoOnRoaXMuaGFzaCxwZXJzOlkucGVycyxwZXJzRW5jOlkucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6WS5lbnRyb3B5fHxFKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6WS5lbnRyb3B5JiZZLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0''@;'; put 'put ''aGlzLm4udG9BcnJheSgpfSkscT10aGlzLm4uYnl0ZUxlbmd0aCgpLEo9dGhpcy5uLnN1YihuZXcgaigyKSk7Oyl7dmFyIGVlPW5ldyBqKFUuZ2VuZXJhdGUocSkpO2lmKCEoZWUuY21wKEopPjApKXJldHVybiBlZS5pYWRkbigxKSx0aGlzLmtleUZyb21Qcml2YXRlKGVlKX19LFoucHJvdG90''@;'; put 'put ''eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbihZLFUpe3ZhciBxPTgqWS5ieXRlTGVuZ3RoKCktdGhpcy5uLmJpdExlbmd0aCgpO3JldHVybiBxPjAmJihZPVkudXNocm4ocSkpLCFVJiZZLmNtcCh0aGlzLm4pPj0wP1kuc3ViKHRoaXMubik6WX0sWi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihZ''@;'; put 'put ''LFUscSxKKXsib2JqZWN0Ij09dHlwZW9mIHEmJihKPXEscT1udWxsKSxKfHwoSj17fSksVT10aGlzLmtleUZyb21Qcml2YXRlKFUscSksWT10aGlzLl90cnVuY2F0ZVRvTihuZXcgaihZLDE2KSk7Zm9yKHZhciBlZT10aGlzLm4uYnl0ZUxlbmd0aCgpLHJlPVUuZ2V0UHJpdmF0ZSgpLnRvQXJy''@;'; put 'put ''YXkoImJlIixlZSksaWU9WS50b0FycmF5KCJiZSIsZWUpLHVlPW5ldyBHKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5OnJlLG5vbmNlOmllLHBlcnM6Si5wZXJzLHBlcnNFbmM6Si5wZXJzRW5jfHwidXRmOCJ9KSxsZT10aGlzLm4uc3ViKG5ldyBqKDEpKSxhZT0wOzthZSsrKXt2YXIgVz1KLms/''@;'; put 'put ''Si5rKGFlKTpuZXcgaih1ZS5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7aWYoISgoVz10aGlzLl90cnVuY2F0ZVRvTihXLCEwKSkuY21wbigxKTw9MHx8Vy5jbXAobGUpPj0wKSl7dmFyIGI9dGhpcy5nLm11bChXKTtpZighYi5pc0luZmluaXR5KCkpe3ZhciBBPWIuZ2V0WCgpLEY9''@;'; put 'put ''QS51bW9kKHRoaXMubik7aWYoMCE9PUYuY21wbigwKSl7dmFyIEg9Vy5pbnZtKHRoaXMubikubXVsKEYubXVsKFUuZ2V0UHJpdmF0ZSgpKS5pYWRkKFkpKTtpZigwIT09KEg9SC51bW9kKHRoaXMubikpLmNtcG4oMCkpe3ZhciBnPShiLmdldFkoKS5pc09kZCgpPzE6MCl8KDAhPT1BLmNtcChG''@;'; put 'put ''KT8yOjApO3JldHVybiBKLmNhbm9uaWNhbCYmSC5jbXAodGhpcy5uaCk+MCYmKEg9dGhpcy5uLnN1YihIKSxnXj0xKSxuZXcgQih7cjpGLHM6SCxyZWNvdmVyeVBhcmFtOmd9KX19fX19fSxaLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oWSxVLHEsSil7WT10aGlzLl90cnVuY2F0ZVRvTihu''@;'; put 'put ''ZXcgaihZLDE2KSkscT10aGlzLmtleUZyb21QdWJsaWMocSxKKTt2YXIgZWU9KFU9bmV3IEIoVSwiaGV4IikpLnIscmU9VS5zO2lmKGVlLmNtcG4oMSk8MHx8ZWUuY21wKHRoaXMubik+PTB8fHJlLmNtcG4oMSk8MHx8cmUuY21wKHRoaXMubik+PTApcmV0dXJuITE7dmFyIGllLHVlPXJlLmlu''@;'; put 'put ''dm0odGhpcy5uKSxsZT11ZS5tdWwoWSkudW1vZCh0aGlzLm4pLGFlPXVlLm11bChlZSkudW1vZCh0aGlzLm4pO3JldHVybiB0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2s/IShpZT10aGlzLmcuam11bEFkZChsZSxxLmdldFB1YmxpYygpLGFlKSkuaXNJbmZpbml0eSgpJiZpZS5lcVhUb1AoZWUp''@;'; put 'put ''OiEoaWU9dGhpcy5nLm11bEFkZChsZSxxLmdldFB1YmxpYygpLGFlKSkuaXNJbmZpbml0eSgpJiYwPT09aWUuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAoZWUpfSxaLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKFksVSxxLEope3ooKDMmcSk9PT1xLCJUaGUgcmVjb3ZlcnkgcGFy''@;'; put 'put ''YW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIiksVT1uZXcgQihVLEopO3ZhciBlZT10aGlzLm4scmU9bmV3IGooWSksaWU9VS5yLHVlPVUucyxsZT0xJnEsYWU9cT4+MTtpZihpZS5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmFlKXRocm93IG5ldyBFcnJvcigiVW5h''@;'; put 'put ''YmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlIik7aWU9dGhpcy5jdXJ2ZS5wb2ludEZyb21YKGFlP2llLmFkZCh0aGlzLmN1cnZlLm4pOmllLGxlKTt2YXIgVz1VLnIuaW52bShlZSksYj1lZS5zdWIocmUpLm11bChXKS51bW9kKGVlKSxBPXVlLm11bChXKS51bW9kKGVlKTtyZXR1''@;'; put 'put ''cm4gdGhpcy5nLm11bEFkZChiLGllLEEpfSxaLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKFksVSxxLEope2lmKG51bGwhPT0oVT1uZXcgQihVLEopKS5yZWNvdmVyeVBhcmFtKXJldHVybiBVLnJlY292ZXJ5UGFyYW07Zm9yKHZhciBlZT0wO2VlPDQ7ZWUrKyl7dmFy''@;'; put 'put ''IHJlO3RyeXtyZT10aGlzLnJlY292ZXJQdWJLZXkoWSxVLGVlKX1jYXRjaHtjb250aW51ZX1pZihyZS5lcShxKSlyZXR1cm4gZWV9dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3IiKX19LDEyNTE6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''aj1JKDM3ODUpLEc9SSg5NTMpLmFzc2VydDtmdW5jdGlvbiBEKFQsRSl7dGhpcy5lYz1ULHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsRS5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKEUucHJpdixFLnByaXZFbmMpLEUucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMoRS5wdWIsRS5wdWJF''@;'; put 'put ''bmMpfU0uZXhwb3J0cz1ELEQuZnJvbVB1YmxpYz1mdW5jdGlvbihULEUseil7cmV0dXJuIEUgaW5zdGFuY2VvZiBEP0U6bmV3IEQoVCx7cHViOkUscHViRW5jOnp9KX0sRC5mcm9tUHJpdmF0ZT1mdW5jdGlvbihULEUseil7cmV0dXJuIEUgaW5zdGFuY2VvZiBEP0U6bmV3IEQoVCx7cHJpdjpF''@;'; put 'put ''LHByaXZFbmM6en0pfSxELnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBUPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIFQuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpULnZhbGlkYXRlKCk/VC5tdWwodGhpcy5lYy5jdXJ2ZS5u''@;'; put 'put ''KS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGljIGtleSBpcyBub3QgYSBwb2ludCJ9fSxELnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24oVCxFKXty''@;'; put 'put ''ZXR1cm4ic3RyaW5nIj09dHlwZW9mIFQmJihFPVQsVD1udWxsKSx0aGlzLnB1Ynx8KHRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KSksRT90aGlzLnB1Yi5lbmNvZGUoRSxUKTp0aGlzLnB1Yn0sRC5wcm90b3R5cGUuZ2V0UHJpdmF0ZT1mdW5jdGlvbihUKXtyZXR1cm4iaGV4Ij09''@;'; put 'put ''PVQ/dGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpOnRoaXMucHJpdn0sRC5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24oVCxFKXt0aGlzLnByaXY9bmV3IGooVCxFfHwxNiksdGhpcy5wcml2PXRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubil9LEQucHJvdG90eXBlLl9pbXBv''@;'; put 'put ''cnRQdWJsaWM9ZnVuY3Rpb24oVCxFKXtpZihULnh8fFQueSlyZXR1cm4ibW9udCI9PT10aGlzLmVjLmN1cnZlLnR5cGU/RyhULngsIk5lZWQgeCBjb29yZGluYXRlIik6InNob3J0IiE9PXRoaXMuZWMuY3VydmUudHlwZSYmImVkd2FyZHMiIT09dGhpcy5lYy5jdXJ2ZS50eXBlfHxHKFQueCYm''@;'; put 'put ''VC55LCJOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlIiksdm9pZCh0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLnBvaW50KFQueCxULnkpKTt0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KFQsRSl9LEQucHJvdG90eXBlLmRlcml2ZT1mdW5jdGlvbihUKXtyZXR1cm4gVC52YWxp''@;'; put 'put ''ZGF0ZSgpfHxHKFQudmFsaWRhdGUoKSwicHVibGljIHBvaW50IG5vdCB2YWxpZGF0ZWQiKSxULm11bCh0aGlzLnByaXYpLmdldFgoKX0sRC5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihULEUseil7cmV0dXJuIHRoaXMuZWMuc2lnbihULHRoaXMsRSx6KX0sRC5wcm90b3R5cGUudmVyaWZ5PWZ1''@;'; put 'put ''bmN0aW9uKFQsRSl7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KFQsRSx0aGlzKX0sRC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiI8S2V5IHByaXY6ICIrKHRoaXMucHJpdiYmdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpKSsiIHB1YjogIisodGhpcy5wdWImJnRoaXMucHViLmlu''@;'; put 'put ''c3BlY3QoKSkrIiA+In19LDYxMTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoMzc4NSksRz1JKDk1MyksRD1HLmFzc2VydDtmdW5jdGlvbiBUKFosWSl7aWYoWiBpbnN0YW5jZW9mIFQpcmV0dXJuIFo7dGhpcy5faW1wb3J0REVSKFosWSl8fChEKFouciYmWi5zLCJTaWduYXR1cmUg''@;'; put 'put ''d2l0aG91dCByIG9yIHMiKSx0aGlzLnI9bmV3IGooWi5yLDE2KSx0aGlzLnM9bmV3IGooWi5zLDE2KSx0aGlzLnJlY292ZXJ5UGFyYW09dm9pZCAwPT09Wi5yZWNvdmVyeVBhcmFtP251bGw6Wi5yZWNvdmVyeVBhcmFtKX1mdW5jdGlvbiBFKCl7dGhpcy5wbGFjZT0wfWZ1bmN0aW9uIHooWixZ''@;'; put 'put ''KXt2YXIgVT1aW1kucGxhY2UrK107aWYoISgxMjgmVSkpcmV0dXJuIFU7dmFyIHE9MTUmVTtpZigwPT09cXx8cT40KXJldHVybiExO2Zvcih2YXIgSj0wLGVlPTAscmU9WS5wbGFjZTtlZTxxO2VlKysscmUrKylKPDw9OCxKfD1aW3JlXSxKPj4+PTA7cmV0dXJuIShKPD0xMjcpJiYoWS5wbGFj''@;'; put 'put ''ZT1yZSxKKX1mdW5jdGlvbiBOKFope2Zvcih2YXIgWT0wLFU9Wi5sZW5ndGgtMTshWltZXSYmISgxMjgmWltZKzFdKSYmWTxVOylZKys7cmV0dXJuIDA9PT1ZP1o6Wi5zbGljZShZKX1mdW5jdGlvbiBCKFosWSl7aWYoWTwxMjgpWi5wdXNoKFkpO2Vsc2V7dmFyIFU9MSsoTWF0aC5sb2coWSkv''@;'; put 'put ''TWF0aC5MTjI+Pj4zKTtmb3IoWi5wdXNoKDEyOHxVKTstLVU7KVoucHVzaChZPj4+KFU8PDMpJjI1NSk7Wi5wdXNoKFkpfX1NLmV4cG9ydHM9VCxULnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKFosWSl7Wj1HLnRvQXJyYXkoWixZKTt2YXIgVT1uZXcgRTtpZig0OCE9PVpbVS5wbGFj''@;'; put 'put ''ZSsrXSlyZXR1cm4hMTt2YXIgcT16KFosVSk7aWYoITE9PT1xfHxxK1UucGxhY2UhPT1aLmxlbmd0aHx8MiE9PVpbVS5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgSj16KFosVSk7aWYoITE9PT1KKXJldHVybiExO3ZhciBlZT1aLnNsaWNlKFUucGxhY2UsSitVLnBsYWNlKTtpZihVLnBsYWNlKz1K''@;'; put 'put ''LDIhPT1aW1UucGxhY2UrK10pcmV0dXJuITE7dmFyIHJlPXooWixVKTtpZighMT09PXJlfHxaLmxlbmd0aCE9PXJlK1UucGxhY2UpcmV0dXJuITE7dmFyIGllPVouc2xpY2UoVS5wbGFjZSxyZStVLnBsYWNlKTtpZigwPT09ZWVbMF0pe2lmKCEoMTI4JmVlWzFdKSlyZXR1cm4hMTtlZT1lZS5z''@;'; put 'put ''bGljZSgxKX1pZigwPT09aWVbMF0pe2lmKCEoMTI4JmllWzFdKSlyZXR1cm4hMTtpZT1pZS5zbGljZSgxKX1yZXR1cm4gdGhpcy5yPW5ldyBqKGVlKSx0aGlzLnM9bmV3IGooaWUpLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEwfSxULnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbihaKXt2YXIg''@;'; put 'put ''WT10aGlzLnIudG9BcnJheSgpLFU9dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JllbMF0mJihZPVswXS5jb25jYXQoWSkpLDEyOCZVWzBdJiYoVT1bMF0uY29uY2F0KFUpKSxZPU4oWSksVT1OKFUpOyEoVVswXXx8MTI4JlVbMV0pOylVPVUuc2xpY2UoMSk7dmFyIHE9WzJdO0IocSxZLmxlbmd0''@;'; put 'put ''aCksKHE9cS5jb25jYXQoWSkpLnB1c2goMiksQihxLFUubGVuZ3RoKTt2YXIgSj1xLmNvbmNhdChVKSxlZT1bNDhdO3JldHVybiBCKGVlLEoubGVuZ3RoKSxlZT1lZS5jb25jYXQoSiksRy5lbmNvZGUoZWUsWil9fSw1OTgwOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSgzNzE1KSxH''@;'; put 'put ''PUkoNTQyNyksRD1JKDk1MyksVD1ELmFzc2VydCxFPUQucGFyc2VCeXRlcyx6PUkoOTA4NyksTj1JKDM2MjIpO2Z1bmN0aW9uIEIoWil7aWYoVCgiZWQyNTUxOSI9PT1aLCJvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyIiksISh0aGlzIGluc3RhbmNlb2YgQikpcmV0dXJuIG5ldyBC''@;'; put 'put ''KFopO3RoaXMuY3VydmU9Wj1HW1pdLmN1cnZlLHRoaXMuZz1aLmcsdGhpcy5nLnByZWNvbXB1dGUoWi5uLmJpdExlbmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz1aLnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwoWi5uLmJpdExlbmd0aCgpLzgpLHRo''@;'; put 'put ''aXMuaGFzaD1qLnNoYTUxMn1NLmV4cG9ydHM9QixCLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKFosWSl7Wj1FKFopO3ZhciBVPXRoaXMua2V5RnJvbVNlY3JldChZKSxxPXRoaXMuaGFzaEludChVLm1lc3NhZ2VQcmVmaXgoKSxaKSxKPXRoaXMuZy5tdWwocSksZWU9dGhpcy5lbmNvZGVQb2lu''@;'; put 'put ''dChKKSxyZT10aGlzLmhhc2hJbnQoZWUsVS5wdWJCeXRlcygpLFopLm11bChVLnByaXYoKSksaWU9cS5hZGQocmUpLnVtb2QodGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOkosUzppZSxSZW5jb2RlZDplZX0pfSxCLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24o''@;'; put 'put ''WixZLFUpe1o9RShaKSxZPXRoaXMubWFrZVNpZ25hdHVyZShZKTt2YXIgcT10aGlzLmtleUZyb21QdWJsaWMoVSksSj10aGlzLmhhc2hJbnQoWS5SZW5jb2RlZCgpLHEucHViQnl0ZXMoKSxaKSxlZT10aGlzLmcubXVsKFkuUygpKTtyZXR1cm4gWS5SKCkuYWRkKHEucHViKCkubXVsKEopKS5l''@;'; put 'put ''cShlZSl9LEIucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIFo9dGhpcy5oYXNoKCksWT0wO1k8YXJndW1lbnRzLmxlbmd0aDtZKyspWi51cGRhdGUoYXJndW1lbnRzW1ldKTtyZXR1cm4gRC5pbnRGcm9tTEUoWi5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfSxCLnBy''@;'; put 'put ''b3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKFope3JldHVybiB6LmZyb21QdWJsaWModGhpcyxaKX0sQi5wcm90b3R5cGUua2V5RnJvbVNlY3JldD1mdW5jdGlvbihaKXtyZXR1cm4gei5mcm9tU2VjcmV0KHRoaXMsWil9LEIucHJvdG90eXBlLm1ha2VTaWduYXR1cmU9ZnVuY3Rpb24o''@;'; put 'put ''Wil7cmV0dXJuIFogaW5zdGFuY2VvZiBOP1o6bmV3IE4odGhpcyxaKX0sQi5wcm90b3R5cGUuZW5jb2RlUG9pbnQ9ZnVuY3Rpb24oWil7dmFyIFk9Wi5nZXRZKCkudG9BcnJheSgibGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBZW3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PVouZ2V0''@;'; put 'put ''WCgpLmlzT2RkKCk/MTI4OjAsWX0sQi5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oWil7dmFyIFk9KFo9RC5wYXJzZUJ5dGVzKFopKS5sZW5ndGgtMSxVPVouc2xpY2UoMCxZKS5jb25jYXQoLTEyOSZaW1ldKSxxPSEhKDEyOCZaW1ldKSxKPUQuaW50RnJvbUxFKFUpO3JldHVybiB0''@;'; put 'put ''aGlzLmN1cnZlLnBvaW50RnJvbVkoSixxKX0sQi5wcm90b3R5cGUuZW5jb2RlSW50PWZ1bmN0aW9uKFope3JldHVybiBaLnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sQi5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKFope3JldHVybiBELmludEZyb21MRShaKX0sQi5w''@;'; put 'put ''cm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbihaKXtyZXR1cm4gWiBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LDkwODc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDk1MyksRz1qLmFzc2VydCxEPWoucGFyc2VCeXRlcyxUPWouY2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gRSh6''@;'; put 'put ''LE4pe3RoaXMuZWRkc2E9eix0aGlzLl9zZWNyZXQ9RChOLnNlY3JldCksei5pc1BvaW50KE4ucHViKT90aGlzLl9wdWI9Ti5wdWI6dGhpcy5fcHViQnl0ZXM9RChOLnB1Yil9RS5mcm9tUHVibGljPWZ1bmN0aW9uKHosTil7cmV0dXJuIE4gaW5zdGFuY2VvZiBFP046bmV3IEUoeix7cHViOk59''@;'; put 'put ''KX0sRS5mcm9tU2VjcmV0PWZ1bmN0aW9uKHosTil7cmV0dXJuIE4gaW5zdGFuY2VvZiBFP046bmV3IEUoeix7c2VjcmV0Ok59KX0sRS5wcm90b3R5cGUuc2VjcmV0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlY3JldH0sVChFLCJwdWJCeXRlcyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5l''@;'; put 'put ''ZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKX0pLFQoRSwicHViIixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wdWJCeXRlcz90aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTp0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKX0pLFQoRSwicHJpdkJ5dGVzIixmdW5j''@;'; put 'put ''dGlvbigpe3ZhciB6PXRoaXMuZWRkc2EsTj10aGlzLmhhc2goKSxCPXouZW5jb2RpbmdMZW5ndGgtMSxaPU4uc2xpY2UoMCx6LmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gWlswXSY9MjQ4LFpbQl0mPTEyNyxaW0JdfD02NCxafSksVChFLCJwcml2IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVk''@;'; put 'put ''ZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKX0pLFQoRSwiaGFzaCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSksVChFLCJtZXNzYWdlUHJlZml4IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5z''@;'; put 'put ''bGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLEUucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oeil7cmV0dXJuIEcodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeSIpLHRoaXMuZWRkc2Euc2lnbih6LHRoaXMpfSxFLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24o''@;'; put 'put ''eixOKXtyZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkoeixOLHRoaXMpfSxFLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oeil7cmV0dXJuIEcodGhpcy5fc2VjcmV0LCJLZXlQYWlyIGlzIHB1YmxpYyBvbmx5Iiksai5lbmNvZGUodGhpcy5zZWNyZXQoKSx6KX0sRS5wcm90b3R5cGUuZ2V0''@;'; put 'put ''UHVibGljPWZ1bmN0aW9uKHope3JldHVybiBqLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCkseil9LE0uZXhwb3J0cz1FfSwzNjIyOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSgzNzg1KSxHPUkoOTUzKSxEPUcuYXNzZXJ0LFQ9Ry5jYWNoZWRQcm9wZXJ0eSxFPUcucGFyc2VCeXRlcztm''@;'; put 'put ''dW5jdGlvbiB6KE4sQil7dGhpcy5lZGRzYT1OLCJvYmplY3QiIT10eXBlb2YgQiYmKEI9RShCKSksQXJyYXkuaXNBcnJheShCKSYmKEI9e1I6Qi5zbGljZSgwLE4uZW5jb2RpbmdMZW5ndGgpLFM6Qi5zbGljZShOLmVuY29kaW5nTGVuZ3RoKX0pLEQoQi5SJiZCLlMsIlNpZ25hdHVyZSB3aXRo''@;'; put 'put ''b3V0IFIgb3IgUyIpLE4uaXNQb2ludChCLlIpJiYodGhpcy5fUj1CLlIpLEIuUyBpbnN0YW5jZW9mIGomJih0aGlzLl9TPUIuUyksdGhpcy5fUmVuY29kZWQ9QXJyYXkuaXNBcnJheShCLlIpP0IuUjpCLlJlbmNvZGVkLHRoaXMuX1NlbmNvZGVkPUFycmF5LmlzQXJyYXkoQi5TKT9CLlM6Qi5T''@;'; put 'put ''ZW5jb2RlZH1UKHosIlMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSl9KSxUKHosIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLFQoeiwiUmVuY29kZWQiLGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSksVCh6LCJTZW5jb2RlZCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpfSksei5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJlbmNvZGVkKCku''@;'; put 'put ''Y29uY2F0KHRoaXMuU2VuY29kZWQoKSl9LHoucHJvdG90eXBlLnRvSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIEcuZW5jb2RlKHRoaXMudG9CeXRlcygpLCJoZXgiKS50b1VwcGVyQ2FzZSgpfSxNLmV4cG9ydHM9en0sMTAzNzpNPT57TS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltb''@;'; put 'put ''ImU2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJk''@;'; put 'put ''ZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1''@;'; put 'put ''MWU1YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNi''@;'; put 'put ''NDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZi''@;'; put 'put ''M2VmZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5''@;'; put 'put ''M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1''@;'; put 'put ''YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwi''@;'; put 'put ''OWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2Vj''@;'; put 'put ''ZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdh''@;'; put 'put ''NjhiZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcx''@;'; put 'put ''OWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2''@;'; put 'put ''OTBhODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYw''@;'; put 'put ''MzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYz''@;'; put 'put ''ZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxb''@;'; put 'put ''Ijk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3''@;'; put 'put ''M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIw''@;'; put 'put ''MzdmYTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEy''@;'; put 'put ''N2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRk''@;'; put 'put ''ZmYyYzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2Ri''@;'; put 'put ''ZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUx''@;'; put 'put ''NzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwi''@;'; put 'put ''ODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0''@;'; put 'put ''MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRl''@;'; put 'put ''ZmRmNmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEz''@;'; put 'put ''YmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2Zm''@;'; put 'put ''ZmFiN2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJh''@;'; put 'put ''MDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0''@;'; put 'put ''ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxb''@;'; put 'put ''ImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2Jj''@;'; put 'put ''YmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5''@;'; put 'put ''Njk0M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMw''@;'; put 'put ''YzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJl''@;'; put 'put ''YmFjMDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRk''@;'; put 'put ''MTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZi''@;'; put 'put ''YTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0''@;'; put 'put ''NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVl''@;'; put 'put ''YWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFm''@;'; put 'put ''OTYyIl0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJi''@;'; put 'put ''MmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdm''@;'; put 'put ''M2I1OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQx''@;'; put 'put ''YzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2''@;'; put 'put ''Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJm''@;'; put 'put ''YTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4''@;'; put 'put ''NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQw''@;'; put 'put ''NjRlMTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQx''@;'; put 'put ''NTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5''@;'; put 'put ''YjhhYmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1''@;'; put 'put ''NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZj''@;'; put 'put ''ZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2''@;'; put 'put ''OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThj''@;'; put 'put ''YWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVm''@;'; put 'put ''OTQ4MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5''@;'; put 'put ''NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJj''@;'; put 'put ''MTJkZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2Jj''@;'; put 'put ''ZTAzNmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRi''@;'; put 'put ''YTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVh''@;'; put 'put ''NTA4MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1''@;'; put 'put ''OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZi''@;'; put 'put ''YzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1''@;'; put 'put ''ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNk''@;'; put 'put ''YWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVj''@;'; put 'put ''MDliN2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIz''@;'; put 'put ''MDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2''@;'; put 'put ''OWNhMGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2''@;'; put 'put ''Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2''@;'; put 'put ''MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsi''@;'; put 'put ''MTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRj''@;'; put 'put ''YjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3''@;'; put 'put ''ZmYzM2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2''@;'; put 'put ''YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJk''@;'; put 'put ''NDk5ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0''@;'; put 'put ''MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUw''@;'; put 'put ''ZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBk''@;'; put 'put ''ZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3''@;'; put 'put ''YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMx''@;'; put 'put ''ZGY2Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQw''@;'; put 'put ''ZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2''@;'; put 'put ''MDJhNzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEz''@;'; put 'put ''MGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNl''@;'; put 'put ''OTBjNDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5''@;'; put 'put ''ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4''@;'; put 'put ''YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0''@;'; put 'put ''ZmJhIiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBl''@;'; put 'put ''NmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzky''@;'; put 'put ''NGY5N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNj''@;'; put 'put ''NDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2''@;'; put 'put ''ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5''@;'; put 'put ''MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZi''@;'; put 'put ''MTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkz''@;'; put 'put ''MzExIl0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3''@;'; put 'put ''OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZk''@;'; put 'put ''ZjdiNGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2''@;'; put 'put ''M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0''@;'; put 'put ''MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMx''@;'; put 'put ''MTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMy''@;'; put 'put ''NDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4''@;'; put 'put ''ZDYzIiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYz''@;'; put 'put ''MzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThk''@;'; put 'put ''MTRiODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYx''@;'; put 'put ''ODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4''@;'; put 'put ''NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1''@;'; put 'put ''ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhm''@;'; put 'put ''YTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2''@;'; put 'put ''MmMiXSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJm''@;'; put 'put ''NWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3''@;'; put 'put ''M2E1NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1''@;'; put 'put ''YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1''@;'; put 'put ''NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5''@;'; put 'put ''ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIw''@;'; put 'put ''YjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMx''@;'; put 'put ''IiwiM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5''@;'; put 'put ''MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUw''@;'; put 'put ''M2EyOTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1''@;'; put 'put ''YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3''@;'; put 'put ''N2I1MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdj''@;'; put 'put ''MDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0''@;'; put 'put ''ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxb''@;'; put 'put ''IjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUw''@;'; put 'put ''YzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3''@;'; put 'put ''OTNjYzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEy''@;'; put 'put ''ZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZj''@;'; put 'put ''MGU4NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAy''@;'; put 'put ''YzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdi''@;'; put 'put ''MWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1''@;'; put 'put ''Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMz''@;'; put 'put ''NDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkw''@;'; put 'put ''MThjZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlm''@;'; put 'put ''NmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2Mx''@;'; put 'put ''Yjc3OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2''@;'; put 'put ''Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRl''@;'; put 'put ''NzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxb''@;'; put 'put ''ImU3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAy''@;'; put 'put ''MGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNi''@;'; put 'put ''OGRiYTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNk''@;'; put 'put ''OTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0''@;'; put 'put ''MDAzZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1''@;'; put 'put ''YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1''@;'; put 'put ''MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwi''@;'; put 'put ''NmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMx''@;'; put 'put ''MWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQx''@;'; put 'put ''N2RkYzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3''@;'; put 'put ''NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0''@;'; put 'put ''MWJlMGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMy''@;'; put 'put ''MzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcy''@;'; put 'put ''ZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsi''@;'; put 'put ''ZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0''@;'; put 'put ''NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0''@;'; put 'put ''Y2FkMjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1Yzcx''@;'; put 'put ''YTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFk''@;'; put 'put ''M2FlYTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3''@;'; put 'put ''ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdk''@;'; put 'put ''MGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3Iiwi''@;'; put 'put ''NjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJi''@;'; put 'put ''ZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3''@;'; put 'put ''YTIyZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJh''@;'; put 'put ''NDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFi''@;'; put 'put ''NzAwNDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5''@;'; put 'put ''OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2''@;'; put 'put ''YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw5NTM6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1PLEc9SSgzNzg1KSxEPUkoOTc0NiksVD1JKDQ1MDQpO2ouYXNzZXJ0PUQsai50b0FycmF5PVQudG9BcnJheSxqLnplcm8yPVQuemVybzIsai50b0hleD1ULnRvSGV4LGouZW5j''@;'; put 'put ''b2RlPVQuZW5jb2RlLGouZ2V0TkFGPWZ1bmN0aW9uKEUseixOKXt2YXIgQj1uZXcgQXJyYXkoTWF0aC5tYXgoRS5iaXRMZW5ndGgoKSxOKSsxKTtCLmZpbGwoMCk7Zm9yKHZhciBaPTE8PHorMSxZPUUuY2xvbmUoKSxVPTA7VTxCLmxlbmd0aDtVKyspe3ZhciBxLEo9WS5hbmRsbihaLTEpO1ku''@;'; put 'put ''aXNPZGQoKT9ZLmlzdWJuKHE9Sj4oWj4+MSktMT8oWj4+MSktSjpKKTpxPTAsQltVXT1xLFkuaXVzaHJuKDEpfXJldHVybiBCfSxqLmdldEpTRj1mdW5jdGlvbihFLHope3ZhciBOPVtbXSxbXV07RT1FLmNsb25lKCksej16LmNsb25lKCk7Zm9yKHZhciBCLFo9MCxZPTA7RS5jbXBuKC1aKT4w''@;'; put 'put ''fHx6LmNtcG4oLVkpPjA7KXt2YXIgVSxxLEo9RS5hbmRsbigzKStaJjMsZWU9ei5hbmRsbigzKStZJjM7Mz09PUomJihKPS0xKSwzPT09ZWUmJihlZT0tMSksVT0xJko/MyE9KEI9RS5hbmRsbig3KStaJjcpJiY1IT09Qnx8MiE9PWVlP0o6LUo6MCxOWzBdLnB1c2goVSkscT0xJmVlPzMhPShC''@;'; put 'put ''PXouYW5kbG4oNykrWSY3KSYmNSE9PUJ8fDIhPT1KP2VlOi1lZTowLE5bMV0ucHVzaChxKSwyKlo9PT1VKzEmJihaPTEtWiksMipZPT09cSsxJiYoWT0xLVkpLEUuaXVzaHJuKDEpLHouaXVzaHJuKDEpfXJldHVybiBOfSxqLmNhY2hlZFByb3BlcnR5PWZ1bmN0aW9uKEUseixOKXt2YXIgQj0i''@;'; put 'put ''XyIrejtFLnByb3RvdHlwZVt6XT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzW0JdP3RoaXNbQl06dGhpc1tCXT1OLmNhbGwodGhpcyl9fSxqLnBhcnNlQnl0ZXM9ZnVuY3Rpb24oRSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBFP2oudG9BcnJheShFLCJoZXgiKTpFfSxqLmludEZy''@;'; put 'put ''b21MRT1mdW5jdGlvbihFKXtyZXR1cm4gbmV3IEcoRSwiaGV4IiwibGUiKX19LDM3ODU6ZnVuY3Rpb24oTSxPLEkpeyFmdW5jdGlvbihqLEcpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBEKGcsQyl7aWYoIWcpdGhyb3cgbmV3IEVycm9yKEN8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24g''@;'; put 'put ''VChnLEMpe2cuc3VwZXJfPUM7dmFyIGs9ZnVuY3Rpb24oKXt9O2sucHJvdG90eXBlPUMucHJvdG90eXBlLGcucHJvdG90eXBlPW5ldyBrLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWd9ZnVuY3Rpb24gRShnLEMsayl7aWYoRS5pc0JOKGcpKXJldHVybiBnO3RoaXMubmVnYXRpdmU9MCx0aGlz''@;'; put 'put ''LndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1nJiYoImxlIiE9PUMmJiJiZSIhPT1DfHwoaz1DLEM9MTApLHRoaXMuX2luaXQoZ3x8MCxDfHwxMCxrfHwiYmUiKSl9dmFyIHo7Im9iamVjdCI9PXR5cGVvZiBqP2ouZXhwb3J0cz1FOkcuQk49RSxFLkJOPUUs''@;'; put 'put ''RS53b3JkU2l6ZT0yNjt0cnl7ej10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkkoNTU2OCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBOKGcsQyl7dmFyIGs9Zy5jaGFyQ29kZUF0KEMpO3JldHVybiBrPj02NSYmazw9NzA/ay01NTprPj05''@;'; put 'put ''NyYmazw9MTAyP2stODc6ay00OCYxNX1mdW5jdGlvbiBCKGcsQyxrKXt2YXIgXz1OKGcsayk7cmV0dXJuIGstMT49QyYmKF98PU4oZyxrLTEpPDw0KSxffWZ1bmN0aW9uIFooZyxDLGssXyl7Zm9yKHZhciBwPTAsdz1NYXRoLm1pbihnLmxlbmd0aCxrKSxLPUM7Szx3O0srKyl7dmFyIHRlPWcu''@;'; put 'put ''Y2hhckNvZGVBdChLKS00ODtwKj1fLHArPXRlPj00OT90ZS00OSsxMDp0ZT49MTc/dGUtMTcrMTA6dGV9cmV0dXJuIHB9RS5pc0JOPWZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgRXx8bnVsbCE9PWcmJiJvYmplY3QiPT10eXBlb2YgZyYmZy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09''@;'; put 'put ''PUUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZy53b3Jkcyl9LEUubWF4PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPjA/ZzpDfSxFLm1pbj1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKTwwP2c6Q30sRS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZyxDLGspe2lmKCJudW1i''@;'; put 'put ''ZXIiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihnLEMsayk7aWYoIm9iamVjdCI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZyxDLGspOyJoZXgiPT09QyYmKEM9MTYpLEQoQz09PSgwfEMpJiZDPj0yJiZDPD0zNik7dmFyIF89MDsiLSI9PT0oZz1nLnRvU3Ry''@;'; put 'put ''aW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKF8rKyx0aGlzLm5lZ2F0aXZlPTEpLF88Zy5sZW5ndGgmJigxNj09PUM/dGhpcy5fcGFyc2VIZXgoZyxfLGspOih0aGlzLl9wYXJzZUJhc2UoZyxDLF8pLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQyxrKSkp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihnLEMsayl7ZzwwJiYodGhpcy5uZWdhdGl2ZT0xLGc9LWcpLGc8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmddLHRoaXMubGVuZ3RoPTEpOmc8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZyxn''@;'; put 'put ''LzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRChnPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsayl9''@;'; put 'put ''LEUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZyxDLGspe2lmKEQoIm51bWJlciI9PXR5cGVvZiBnLmxlbmd0aCksZy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZy5sZW5ndGgvMyksdGhpcy53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgXz0wO188dGhpcy5sZW5ndGg7XysrKXRoaXMud29yZHNbX109MDt2YXIgcCx3LEs9MDtpZigiYmUiPT09aylmb3IoXz1nLmxlbmd0aC0xLHA9MDtfPj0wO18tPTMpdGhpcy53b3Jkc1twXXw9KHc9Z1tfXXxnW18tMV08PDh8Z1tf''@;'; put 'put ''LTJdPDwxNik8PEsmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPXc+Pj4yNi1LJjY3MTA4ODYzLChLKz0yNCk+PTI2JiYoSy09MjYscCsrKTtlbHNlIGlmKCJsZSI9PT1rKWZvcihfPTAscD0wO188Zy5sZW5ndGg7Xys9Myl0aGlzLndvcmRzW3BdfD0odz1nW19dfGdbXysxXTw8OHxnW18rMl08''@;'; put 'put ''PDE2KTw8SyY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09dz4+PjI2LUsmNjcxMDg4NjMsKEsrPTI0KT49MjYmJihLLT0yNixwKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihnLEMsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChnLmxlbmd0''@;'; put 'put ''aC1DKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBfPTA7Xzx0aGlzLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT0wO3ZhciBwLHc9MCxLPTA7aWYoImJlIj09PWspZm9yKF89Zy5sZW5ndGgtMTtfPj1DO18tPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndvcmRz''@;'; put 'put ''W0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0aGlzLndvcmRzW0srPTFdfD1wPj4+MjYpOncrPTg7ZWxzZSBmb3IoXz0oZy5sZW5ndGgtQyklMj09MD9DKzE6QztfPGcubGVuZ3RoO18rPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndvcmRzW0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0''@;'; put 'put ''aGlzLndvcmRzW0srPTFdfD1wPj4+MjYpOncrPTg7dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGcsQyxrKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgXz0wLHA9MTtwPD02NzEwODg2MztwKj1DKV8rKztfLS0scD1wL0N8MDtmb3Io''@;'; put 'put ''dmFyIHc9Zy5sZW5ndGgtayxLPXclXyx0ZT1NYXRoLm1pbih3LHctSykrayxjZT0wLGhlPWs7aGU8dGU7aGUrPV8pY2U9WihnLGhlLGhlK18sQyksdGhpcy5pbXVsbihwKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNlKTtpZigwIT09''@;'; put 'put ''Syl7dmFyIFNlPTE7Zm9yKGNlPVooZyxoZSxnLmxlbmd0aCxDKSxoZT0wO2hlPEs7aGUrKylTZSo9Qzt0aGlzLmltdWxuKFNlKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNlKX10aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmNvcHk9''@;'; put 'put ''ZnVuY3Rpb24oZyl7Zy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGg7QysrKWcud29yZHNbQ109dGhpcy53b3Jkc1tDXTtnLmxlbmd0aD10aGlzLmxlbmd0aCxnLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZy5yZWQ9dGhpcy5yZWR9LEUucHJv''@;'; put 'put ''dG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIHRoaXMuY29weShnKSxnfSxFLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8ZzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5n''@;'; put 'put ''dGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxFLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBZPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAw''@;'; put 'put ''MCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIs''@;'; put 'put ''IjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLFU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0scT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3''@;'; put 'put ''MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2''@;'; put 'put ''MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBKKGcsQyxrKXtrLm5lZ2F0aXZlPUMubmVnYXRpdmVeZy5uZWdhdGl2ZTt2YXIg''@;'; put 'put ''Xz1nLmxlbmd0aCtDLmxlbmd0aHwwO2subGVuZ3RoPV8sXz1fLTF8MDt2YXIgcD0wfGcud29yZHNbMF0sdz0wfEMud29yZHNbMF0sSz1wKncsY2U9Sy82NzEwODg2NHwwO2sud29yZHNbMF09NjcxMDg4NjMmSztmb3IodmFyIGhlPTE7aGU8XztoZSsrKXtmb3IodmFyIFNlPWNlPj4+MjYsTGU9''@;'; put 'put ''NjcxMDg4NjMmY2UsSGU9TWF0aC5taW4oaGUsQy5sZW5ndGgtMSkseGU9TWF0aC5tYXgoMCxoZS1nLmxlbmd0aCsxKTt4ZTw9SGU7eGUrKylTZSs9KEs9KHA9MHxnLndvcmRzW2hlLXhlfDBdKSoodz0wfEMud29yZHNbeGVdKStMZSkvNjcxMDg4NjR8MCxMZT02NzEwODg2MyZLO2sud29yZHNb''@;'; put 'put ''aGVdPTB8TGUsY2U9MHxTZX1yZXR1cm4gMCE9PWNlP2sud29yZHNbaGVdPTB8Y2U6ay5sZW5ndGgtLSxrLnN0cmlwKCl9RS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZyxDKXt2YXIgaztpZihDPTB8Q3x8MSwxNj09PShnPWd8fDEwKXx8ImhleCI9PT1nKXtrPSIiO2Zvcih2YXIgXz0w''@;'; put 'put ''LHA9MCx3PTA7dzx0aGlzLmxlbmd0aDt3Kyspe3ZhciBLPXRoaXMud29yZHNbd10sdGU9KDE2Nzc3MjE1JihLPDxffHApKS50b1N0cmluZygxNik7az0wIT0ocD1LPj4+MjQtXyYxNjc3NzIxNSl8fHchPT10aGlzLmxlbmd0aC0xP1lbNi10ZS5sZW5ndGhdK3RlK2s6dGUraywoXys9Mik+PTI2''@;'; put 'put ''JiYoXy09MjYsdy0tKX1mb3IoMCE9PXAmJihrPXAudG9TdHJpbmcoMTYpK2spO2subGVuZ3RoJUMhPTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihnPT09KDB8ZykmJmc+PTImJmc8PTM2KXt2YXIgY2U9VVtnXSxoZT1xW2ddO2s9IiI7dmFyIFNl''@;'; put 'put ''PXRoaXMuY2xvbmUoKTtmb3IoU2UubmVnYXRpdmU9MDshU2UuaXNaZXJvKCk7KXt2YXIgTGU9U2UubW9kbihoZSkudG9TdHJpbmcoZyk7az0oU2U9U2UuaWRpdm4oaGUpKS5pc1plcm8oKT9MZStrOllbY2UtTGUubGVuZ3RoXStMZStrfWZvcih0aGlzLmlzWmVybygpJiYoaz0iMCIrayk7ay5s''@;'; put 'put ''ZW5ndGglQyE9MDspaz0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihrPSItIitrKSxrfUQoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sRS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhp''@;'; put 'put ''cy5sZW5ndGg/Zys9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2crPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZEKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVw''@;'; put 'put ''IHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tZzpnfSxFLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LEUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIEQodm9pZCAwIT09eiksdGhpcy50b0FycmF5TGlr''@;'; put 'put ''ZSh6LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxnLEMpfSxFLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihnLEMsayl7dmFyIF89dGhpcy5ieXRlTGVuZ3RoKCkscD1rfHxNYXRoLm1heCgxLF8pO0Qo''@;'; put 'put ''Xzw9cCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEQocD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHcsSyx0ZT0ibGUiPT09QyxjZT1uZXcgZyhwKSxoZT10aGlzLmNsb25lKCk7aWYodGUpe2ZvcihLPTA7IWhlLmlz''@;'; put 'put ''WmVybygpO0srKyl3PWhlLmFuZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNlW0tdPXc7Zm9yKDtLPHA7SysrKWNlW0tdPTB9ZWxzZXtmb3IoSz0wO0s8cC1fO0srKyljZVtLXT0wO2ZvcihLPTA7IWhlLmlzWmVybygpO0srKyl3PWhlLmFuZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNlW3AtSy0xXT13''@;'; put 'put ''fXJldHVybiBjZX0sRS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGcpe3JldHVybiAzMi1NYXRoLmNsejMyKGcpfTpmdW5jdGlvbihnKXt2YXIgQz1nLGs9MDtyZXR1cm4gQz49NDA5NiYmKGsrPTEzLEM+Pj49MTMpLEM+PTY0JiYoays9NyxDPj4+PTcpLEM+PTgm''@;'; put 'put ''JihrKz00LEM+Pj49NCksQz49MiYmKGsrPTIsQz4+Pj0yKSxrK0N9LEUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihnKXtpZigwPT09ZylyZXR1cm4gMjY7dmFyIEM9ZyxrPTA7cmV0dXJuISg4MTkxJkMpJiYoays9MTMsQz4+Pj0xMyksISgxMjcmQykmJihrKz03LEM+Pj49NyksISgx''@;'; put 'put ''NSZDKSYmKGsrPTQsQz4+Pj00KSwhKDMmQykmJihrKz0yLEM+Pj49MiksISgxJkMpJiZrKyssa30sRS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkr''@;'; put 'put ''Q30sRS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZz0wLEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tDXSk7aWYoZys9aywyNiE9PWspYnJlYWt9cmV0dXJuIGd9LEUu''@;'; put 'put ''cHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LEUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihnKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihnKS5pYWRkbigxKTp0aGlzLmNsb25l''@;'; put 'put ''KCl9LEUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnRlc3RuKGctMSk/dGhpcy5ub3RuKGcpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LEUucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sRS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sRS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVu''@;'; put 'put ''Z3RoPGcubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBDPTA7QzxnLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT10aGlzLndvcmRzW0NdfGcud29yZHNbQ107cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGcpe3JldHVybiBE''@;'; put 'put ''KCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGcpfSxFLnByb3RvdHlwZS5vcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihnKTpnLmNsb25lKCkuaW9yKHRoaXMpfSxFLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGcpOmcuY2xvbmUoKS5pdW9yKHRoaXMpfSxFLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihnKXt2YXIgQztDPXRoaXMubGVuZ3RoPmcubGVuZ3RoP2c6dGhpcztmb3IodmFyIGs9MDtrPEMubGVuZ3RoO2sr''@;'; put 'put ''Kyl0aGlzLndvcmRzW2tdPXRoaXMud29yZHNba10mZy53b3Jkc1trXTtyZXR1cm4gdGhpcy5sZW5ndGg9Qy5sZW5ndGgsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9u''@;'; put 'put ''ZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsazt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLGs9Zyk6KEM9ZyxrPXRoaXMpO2Zvcih2YXIgXz0wO188ay5sZW5ndGg7XysrKXRoaXMud29yZHNbX109Qy53''@;'; put 'put ''b3Jkc1tfXV5rLndvcmRzW19dO2lmKHRoaXMhPT1DKWZvcig7XzxDLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT1DLndvcmRzW19dO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5l''@;'; put 'put ''Z2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1eG9yKGcpfSxFLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGcpOmcuY2xvbmUoKS5peG9yKHRoaXMpfSxFLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGcpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoZyk6Zy5jbG9uZSgpLml1eG9yKHRoaXMpfSxFLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIEM9MHxNYXRoLmNlaWwoZy8yNiksaz1nJTI2O3RoaXMu''@;'; put 'put ''X2V4cGFuZChDKSxrPjAmJkMtLTtmb3IodmFyIF89MDtfPEM7XysrKXRoaXMud29yZHNbX109NjcxMDg4NjMmfnRoaXMud29yZHNbX107cmV0dXJuIGs+MCYmKHRoaXMud29yZHNbX109fnRoaXMud29yZHNbX10mNjcxMDg4NjM+PjI2LWspLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUubm90''@;'; put 'put ''bj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGcpfSxFLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGcsQyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBrPWcvMjZ8MCxfPWclMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba109Qz90''@;'; put 'put ''aGlzLndvcmRzW2tdfDE8PF86dGhpcy53b3Jkc1trXSZ+KDE8PF8pLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihnKXt2YXIgQyxrLF87aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIo''@;'; put 'put ''ZyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gZy5uZWdhdGl2ZT0wLEM9dGhpcy5pc3ViKGcpLGcubmVnYXRpdmU9MSxDLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmcubGVuZ3RoPyhrPXRoaXMs''@;'; put 'put ''Xz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciBwPTAsdz0wO3c8Xy5sZW5ndGg7dysrKXRoaXMud29yZHNbd109NjcxMDg4NjMmKEM9KDB8ay53b3Jkc1t3XSkrKDB8Xy53b3Jkc1t3XSkrcCkscD1DPj4+MjY7Zm9yKDswIT09cCYmdzxrLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT02NzEwODg2''@;'; put 'put ''MyYoQz0oMHxrLndvcmRzW3ddKStwKSxwPUM+Pj4yNjtpZih0aGlzLmxlbmd0aD1rLmxlbmd0aCwwIT09cCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1wLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihrIT09dGhpcylmb3IoO3c8ay5sZW5ndGg7dysrKXRoaXMud29yZHNbd109ay53b3Jkc1t3XTty''@;'; put 'put ''ZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGcpe3ZhciBDO3JldHVybiAwIT09Zy5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGcubmVnYXRpdmU9MCxDPXRoaXMuc3ViKGcpLGcubmVnYXRpdmVePTEsQyk6MD09PWcubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''Pyh0aGlzLm5lZ2F0aXZlPTAsQz1nLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsQyk6dGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoZyk6Zy5jbG9uZSgpLmlhZGQodGhpcyl9LEUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyl7aWYoMCE9PWcubmVnYXRpdmUpe2cu''@;'; put 'put ''bmVnYXRpdmU9MDt2YXIgQz10aGlzLmlhZGQoZyk7cmV0dXJuIGcubmVnYXRpdmU9MSxDLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGcpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBrLF8scD10''@;'; put 'put ''aGlzLmNtcChnKTtpZigwPT09cClyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7cD4wPyhrPXRoaXMsXz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciB3PTAsSz0wO0s8Xy5sZW5ndGg7SysrKXc9KEM9KDB8ay53b3Jkc1tLXSktKDB8Xy53''@;'; put 'put ''b3Jkc1tLXSkrdyk+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmQztmb3IoOzAhPT13JiZLPGsubGVuZ3RoO0srKyl3PShDPSgwfGsud29yZHNbS10pK3cpPj4yNix0aGlzLndvcmRzW0tdPTY3MTA4ODYzJkM7aWYoMD09PXcmJks8ay5sZW5ndGgmJmshPT10aGlzKWZvcig7SzxrLmxlbmd0''@;'; put 'put ''aDtLKyspdGhpcy53b3Jkc1tLXT1rLndvcmRzW0tdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxLKSxrIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''c3ViKGcpfTt2YXIgZWU9ZnVuY3Rpb24oZyxDLGspe3ZhciBfLHAsdyxLPWcud29yZHMsdGU9Qy53b3JkcyxjZT1rLndvcmRzLGhlPTAsU2U9MHxLWzBdLExlPTgxOTEmU2UsSGU9U2U+Pj4xMyx4ZT0wfEtbMV0sRGU9ODE5MSZ4ZSxCZT14ZT4+PjEzLEdlPTB8S1syXSxVZT04MTkxJkdlLHFl''@;'; put 'put ''PUdlPj4+MTMsb3Q9MHxLWzNdLEZlPTgxOTEmb3Qsd2U9b3Q+Pj4xMyxFZT0wfEtbNF0sSWU9ODE5MSZFZSxYZT1FZT4+PjEzLHR0PTB8S1s1XSxaZT04MTkxJnR0LGN0PXR0Pj4+MTMsa2U9MHxLWzZdLEFlPTgxOTEma2UsamU9a2U+Pj4xMyxpdD0wfEtbN10sc3Q9ODE5MSZpdCx4dD1pdD4+''@;'; put 'put ''PjEzLEZ0PTB8S1s4XSxPdD04MTkxJkZ0LEt0PUZ0Pj4+MTMsYm49MHxLWzldLEJ0PTgxOTEmYm4seW49Ym4+Pj4xMyxObj0wfHRlWzBdLG5uPTgxOTEmTm4sR249Tm4+Pj4xMyxZbj0wfHRlWzFdLGZ0PTgxOTEmWW4sZG49WW4+Pj4xMyxobj0wfHRlWzJdLHd0PTgxOTEmaG4sanQ9aG4+Pj4x''@;'; put 'put ''MyxtdD0wfHRlWzNdLEh0PTgxOTEmbXQscG49bXQ+Pj4xMyxudD0wfHRlWzRdLEV0PTgxOTEmbnQsZW49bnQ+Pj4xMyxUdD0wfHRlWzVdLHl0PTgxOTEmVHQsJHQ9VHQ+Pj4xMyx4bj0wfHRlWzZdLHp0PTgxOTEmeG4sX249eG4+Pj4xMyxPbj0wfHRlWzddLHJuPTgxOTEmT24sUG49T24+Pj4x''@;'; put 'put ''MyxDbj0wfHRlWzhdLFh0PTgxOTEmQ24sSm49Q24+Pj4xMyx4aT0wfHRlWzldLGFuPTgxOTEmeGksdG49eGk+Pj4xMztrLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD0xOTt2YXIgdWk9KGhlKyhfPU1hdGguaW11bChMZSxubikpfDApKygoODE5MSYocD0ocD1NYXRo''@;'; put 'put ''LmltdWwoTGUsR24pKStNYXRoLmltdWwoSGUsbm4pfDApKTw8MTMpfDA7aGU9KCh3PU1hdGguaW11bChIZSxHbikpKyhwPj4+MTMpfDApKyh1aT4+PjI2KXwwLHVpJj02NzEwODg2MyxfPU1hdGguaW11bChEZSxubikscD0ocD1NYXRoLmltdWwoRGUsR24pKStNYXRoLmltdWwoQmUsbm4pfDAs''@;'; put 'put ''dz1NYXRoLmltdWwoQmUsR24pO3ZhciBBcj0oaGUrKF89XytNYXRoLmltdWwoTGUsZnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxkbil8MCkrTWF0aC5pbXVsKEhlLGZ0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxkbil8MCkrKHA+Pj4xMyl8MCkrKEFy''@;'; put 'put ''Pj4+MjYpfDAsQXImPTY3MTA4ODYzLF89TWF0aC5pbXVsKFVlLG5uKSxwPShwPU1hdGguaW11bChVZSxHbikpK01hdGguaW11bChxZSxubil8MCx3PU1hdGguaW11bChxZSxHbiksXz1fK01hdGguaW11bChEZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGRuKXwwKStNYXRoLmltdWwoQmUs''@;'; put 'put ''ZnQpfDAsdz13K01hdGguaW11bChCZSxkbil8MDt2YXIgaHI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHd0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsanQpfDApK01hdGguaW11bChIZSx3dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsanQpfDApKyhwPj4+''@;'; put 'put ''MTMpfDApKyhocj4+PjI2KXwwLGhyJj02NzEwODg2MyxfPU1hdGguaW11bChGZSxubikscD0ocD1NYXRoLmltdWwoRmUsR24pKStNYXRoLmltdWwod2Usbm4pfDAsdz1NYXRoLmltdWwod2UsR24pLF89XytNYXRoLmltdWwoVWUsZnQpfDAscD0ocD1wK01hdGguaW11bChVZSxkbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKHFlLGZ0KXwwLHc9dytNYXRoLmltdWwocWUsZG4pfDAsXz1fK01hdGguaW11bChEZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGp0KXwwKStNYXRoLmltdWwoQmUsd3QpfDAsdz13K01hdGguaW11bChCZSxqdCl8MDt2YXIgZGk9KGhlKyhfPV8rTWF0aC5pbXVsKExlLEh0KXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUscG4pfDApK01hdGguaW11bChIZSxIdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUscG4pfDApKyhwPj4+MTMpfDApKyhkaT4+PjI2KXwwLGRpJj02NzEwODg2MyxfPU1hdGguaW11bChJZSxubikscD0ocD1NYXRoLmlt''@;'; put 'put ''dWwoSWUsR24pKStNYXRoLmltdWwoWGUsbm4pfDAsdz1NYXRoLmltdWwoWGUsR24pLF89XytNYXRoLmltdWwoRmUsZnQpfDAscD0ocD1wK01hdGguaW11bChGZSxkbil8MCkrTWF0aC5pbXVsKHdlLGZ0KXwwLHc9dytNYXRoLmltdWwod2UsZG4pfDAsXz1fK01hdGguaW11bChVZSx3dCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKFVlLGp0KXwwKStNYXRoLmltdWwocWUsd3QpfDAsdz13K01hdGguaW11bChxZSxqdCl8MCxfPV8rTWF0aC5pbXVsKERlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUscG4pfDApK01hdGguaW11bChCZSxIdCl8MCx3PXcrTWF0aC5pbXVsKEJlLHBuKXwwO3ZhciBm''@;'; put 'put ''aT0oaGUrKF89XytNYXRoLmltdWwoTGUsRXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxlbil8MCkrTWF0aC5pbXVsKEhlLEV0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxlbil8MCkrKHA+Pj4xMyl8MCkrKGZpPj4+MjYpfDAsZmkmPTY3MTA4ODYzLF89''@;'; put 'put ''TWF0aC5pbXVsKFplLG5uKSxwPShwPU1hdGguaW11bChaZSxHbikpK01hdGguaW11bChjdCxubil8MCx3PU1hdGguaW11bChjdCxHbiksXz1fK01hdGguaW11bChJZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGRuKXwwKStNYXRoLmltdWwoWGUsZnQpfDAsdz13K01hdGguaW11bChYZSxk''@;'; put 'put ''bil8MCxfPV8rTWF0aC5pbXVsKEZlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsanQpfDApK01hdGguaW11bCh3ZSx3dCl8MCx3PXcrTWF0aC5pbXVsKHdlLGp0KXwwLF89XytNYXRoLmltdWwoVWUsSHQpfDAscD0ocD1wK01hdGguaW11bChVZSxwbil8MCkrTWF0aC5pbXVsKHFlLEh0KXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwocWUscG4pfDAsXz1fK01hdGguaW11bChEZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGVuKXwwKStNYXRoLmltdWwoQmUsRXQpfDAsdz13K01hdGguaW11bChCZSxlbil8MDt2YXIgaG89KGhlKyhfPV8rTWF0aC5pbXVsKExlLHl0KXwwKXwwKSsoKDgxOTEmKHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoTGUsJHQpfDApK01hdGguaW11bChIZSx5dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsJHQpfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxfPU1hdGguaW11bChBZSxubikscD0ocD1NYXRoLmltdWwoQWUsR24pKStNYXRo''@;'; put 'put ''LmltdWwoamUsbm4pfDAsdz1NYXRoLmltdWwoamUsR24pLF89XytNYXRoLmltdWwoWmUsZnQpfDAscD0ocD1wK01hdGguaW11bChaZSxkbil8MCkrTWF0aC5pbXVsKGN0LGZ0KXwwLHc9dytNYXRoLmltdWwoY3QsZG4pfDAsXz1fK01hdGguaW11bChJZSx3dCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEllLGp0KXwwKStNYXRoLmltdWwoWGUsd3QpfDAsdz13K01hdGguaW11bChYZSxqdCl8MCxfPV8rTWF0aC5pbXVsKEZlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUscG4pfDApK01hdGguaW11bCh3ZSxIdCl8MCx3PXcrTWF0aC5pbXVsKHdlLHBuKXwwLF89XytNYXRoLmltdWwoVWUsRXQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChVZSxlbil8MCkrTWF0aC5pbXVsKHFlLEV0KXwwLHc9dytNYXRoLmltdWwocWUsZW4pfDAsXz1fK01hdGguaW11bChEZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLCR0KXwwKStNYXRoLmltdWwoQmUseXQpfDAsdz13K01hdGguaW11bChCZSwkdCl8MDt2''@;'; put 'put ''YXIgYnI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHp0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsX24pfDApK01hdGguaW11bChIZSx6dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsX24pfDApKyhwPj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2''@;'; put 'put ''MyxfPU1hdGguaW11bChzdCxubikscD0ocD1NYXRoLmltdWwoc3QsR24pKStNYXRoLmltdWwoeHQsbm4pfDAsdz1NYXRoLmltdWwoeHQsR24pLF89XytNYXRoLmltdWwoQWUsZnQpfDAscD0ocD1wK01hdGguaW11bChBZSxkbil8MCkrTWF0aC5pbXVsKGplLGZ0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''amUsZG4pfDAsXz1fK01hdGguaW11bChaZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKFplLGp0KXwwKStNYXRoLmltdWwoY3Qsd3QpfDAsdz13K01hdGguaW11bChjdCxqdCl8MCxfPV8rTWF0aC5pbXVsKEllLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUscG4pfDApK01hdGguaW11bChYZSxI''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKFhlLHBuKXwwLF89XytNYXRoLmltdWwoRmUsRXQpfDAscD0ocD1wK01hdGguaW11bChGZSxlbil8MCkrTWF0aC5pbXVsKHdlLEV0KXwwLHc9dytNYXRoLmltdWwod2UsZW4pfDAsXz1fK01hdGguaW11bChVZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLCR0''@;'; put 'put ''KXwwKStNYXRoLmltdWwocWUseXQpfDAsdz13K01hdGguaW11bChxZSwkdCl8MCxfPV8rTWF0aC5pbXVsKERlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsX24pfDApK01hdGguaW11bChCZSx6dCl8MCx3PXcrTWF0aC5pbXVsKEJlLF9uKXwwO3ZhciBMaT0oaGUrKF89XytNYXRoLmltdWwo''@;'; put 'put ''TGUscm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxQbil8MCkrTWF0aC5pbXVsKEhlLHJuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxQbil8MCkrKHA+Pj4xMyl8MCkrKExpPj4+MjYpfDAsTGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKE90LG5uKSxwPShw''@;'; put 'put ''PU1hdGguaW11bChPdCxHbikpK01hdGguaW11bChLdCxubil8MCx3PU1hdGguaW11bChLdCxHbiksXz1fK01hdGguaW11bChzdCxmdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGRuKXwwKStNYXRoLmltdWwoeHQsZnQpfDAsdz13K01hdGguaW11bCh4dCxkbil8MCxfPV8rTWF0aC5pbXVsKEFl''@;'; put 'put ''LHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsanQpfDApK01hdGguaW11bChqZSx3dCl8MCx3PXcrTWF0aC5pbXVsKGplLGp0KXwwLF89XytNYXRoLmltdWwoWmUsSHQpfDAscD0ocD1wK01hdGguaW11bChaZSxwbil8MCkrTWF0aC5pbXVsKGN0LEh0KXwwLHc9dytNYXRoLmltdWwoY3QscG4p''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChJZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGVuKXwwKStNYXRoLmltdWwoWGUsRXQpfDAsdz13K01hdGguaW11bChYZSxlbil8MCxfPV8rTWF0aC5pbXVsKEZlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsJHQpfDApK01hdGguaW11bCh3ZSx5dCl8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKHdlLCR0KXwwLF89XytNYXRoLmltdWwoVWUsenQpfDAscD0ocD1wK01hdGguaW11bChVZSxfbil8MCkrTWF0aC5pbXVsKHFlLHp0KXwwLHc9dytNYXRoLmltdWwocWUsX24pfDAsXz1fK01hdGguaW11bChEZSxybil8MCxwPShwPXArTWF0aC5pbXVsKERlLFBuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoQmUscm4pfDAsdz13K01hdGguaW11bChCZSxQbil8MDt2YXIgbG89KGhlKyhfPV8rTWF0aC5pbXVsKExlLFh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsSm4pfDApK01hdGguaW11bChIZSxYdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUs''@;'; put 'put ''Sm4pfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxubikscD0ocD1NYXRoLmltdWwoQnQsR24pKStNYXRoLmltdWwoeW4sbm4pfDAsdz1NYXRoLmltdWwoeW4sR24pLF89XytNYXRoLmltdWwoT3QsZnQpfDAscD0ocD1wK01hdGguaW11bChP''@;'; put 'put ''dCxkbil8MCkrTWF0aC5pbXVsKEt0LGZ0KXwwLHc9dytNYXRoLmltdWwoS3QsZG4pfDAsXz1fK01hdGguaW11bChzdCx3dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGp0KXwwKStNYXRoLmltdWwoeHQsd3QpfDAsdz13K01hdGguaW11bCh4dCxqdCl8MCxfPV8rTWF0aC5pbXVsKEFlLEh0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoQWUscG4pfDApK01hdGguaW11bChqZSxIdCl8MCx3PXcrTWF0aC5pbXVsKGplLHBuKXwwLF89XytNYXRoLmltdWwoWmUsRXQpfDAscD0ocD1wK01hdGguaW11bChaZSxlbil8MCkrTWF0aC5pbXVsKGN0LEV0KXwwLHc9dytNYXRoLmltdWwoY3QsZW4pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChJZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLCR0KXwwKStNYXRoLmltdWwoWGUseXQpfDAsdz13K01hdGguaW11bChYZSwkdCl8MCxfPV8rTWF0aC5pbXVsKEZlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsX24pfDApK01hdGguaW11bCh3ZSx6dCl8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKHdlLF9uKXwwLF89XytNYXRoLmltdWwoVWUscm4pfDAscD0ocD1wK01hdGguaW11bChVZSxQbil8MCkrTWF0aC5pbXVsKHFlLHJuKXwwLHc9dytNYXRoLmltdWwocWUsUG4pfDAsXz1fK01hdGguaW11bChEZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLEpuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwoQmUsWHQpfDAsdz13K01hdGguaW11bChCZSxKbil8MDt2YXIgVW49KGhlKyhfPV8rTWF0aC5pbXVsKExlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsdG4pfDApK01hdGguaW11bChIZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsdG4pfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxmdCkscD0ocD1NYXRoLmltdWwoQnQsZG4pKStNYXRoLmltdWwoeW4sZnQpfDAsdz1NYXRoLmltdWwoeW4sZG4pLF89XytNYXRoLmltdWwoT3Qsd3QpfDAscD0ocD1wK01hdGguaW11bChPdCxqdCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEt0LHd0KXwwLHc9dytNYXRoLmltdWwoS3QsanQpfDAsXz1fK01hdGguaW11bChzdCxIdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LHBuKXwwKStNYXRoLmltdWwoeHQsSHQpfDAsdz13K01hdGguaW11bCh4dCxwbil8MCxfPV8rTWF0aC5pbXVsKEFlLEV0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoQWUsZW4pfDApK01hdGguaW11bChqZSxFdCl8MCx3PXcrTWF0aC5pbXVsKGplLGVuKXwwLF89XytNYXRoLmltdWwoWmUseXQpfDAscD0ocD1wK01hdGguaW11bChaZSwkdCl8MCkrTWF0aC5pbXVsKGN0LHl0KXwwLHc9dytNYXRoLmltdWwoY3QsJHQpfDAsXz1fK01hdGgu''@;'; put 'put ''aW11bChJZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLF9uKXwwKStNYXRoLmltdWwoWGUsenQpfDAsdz13K01hdGguaW11bChYZSxfbil8MCxfPV8rTWF0aC5pbXVsKEZlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsUG4pfDApK01hdGguaW11bCh3ZSxybil8MCx3PXcrTWF0aC5pbXVs''@;'; put 'put ''KHdlLFBuKXwwLF89XytNYXRoLmltdWwoVWUsWHQpfDAscD0ocD1wK01hdGguaW11bChVZSxKbil8MCkrTWF0aC5pbXVsKHFlLFh0KXwwLHc9dytNYXRoLmltdWwocWUsSm4pfDA7dmFyIFhpPShoZSsoXz1fK01hdGguaW11bChEZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KERlLHRuKXwwKStNYXRoLmltdWwoQmUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEJlLHRuKXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsd3QpLHA9KHA9TWF0aC5pbXVsKEJ0LGp0KSkrTWF0aC5pbXVsKHluLHd0KXww''@;'; put 'put ''LHc9TWF0aC5pbXVsKHluLGp0KSxfPV8rTWF0aC5pbXVsKE90LEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QscG4pfDApK01hdGguaW11bChLdCxIdCl8MCx3PXcrTWF0aC5pbXVsKEt0LHBuKXwwLF89XytNYXRoLmltdWwoc3QsRXQpfDAscD0ocD1wK01hdGguaW11bChzdCxlbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKHh0LEV0KXwwLHc9dytNYXRoLmltdWwoeHQsZW4pfDAsXz1fK01hdGguaW11bChBZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLCR0KXwwKStNYXRoLmltdWwoamUseXQpfDAsdz13K01hdGguaW11bChqZSwkdCl8MCxfPV8rTWF0aC5pbXVsKFplLHp0KXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoWmUsX24pfDApK01hdGguaW11bChjdCx6dCl8MCx3PXcrTWF0aC5pbXVsKGN0LF9uKXwwLF89XytNYXRoLmltdWwoSWUscm4pfDAscD0ocD1wK01hdGguaW11bChJZSxQbil8MCkrTWF0aC5pbXVsKFhlLHJuKXwwLHc9dytNYXRoLmltdWwoWGUsUG4pfDAsXz1fK01hdGguaW11bChG''@;'; put 'put ''ZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEpuKXwwKStNYXRoLmltdWwod2UsWHQpfDAsdz13K01hdGguaW11bCh3ZSxKbil8MDt2YXIgUWk9KGhlKyhfPV8rTWF0aC5pbXVsKFVlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoVWUsdG4pfDApK01hdGguaW11bChxZSxh''@;'; put 'put ''bil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwocWUsdG4pfDApKyhwPj4+MTMpfDApKyhRaT4+PjI2KXwwLFFpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxIdCkscD0ocD1NYXRoLmltdWwoQnQscG4pKStNYXRoLmltdWwoeW4sSHQpfDAsdz1NYXRoLmltdWwoeW4scG4pLF89XytN''@;'; put 'put ''YXRoLmltdWwoT3QsRXQpfDAscD0ocD1wK01hdGguaW11bChPdCxlbil8MCkrTWF0aC5pbXVsKEt0LEV0KXwwLHc9dytNYXRoLmltdWwoS3QsZW4pfDAsXz1fK01hdGguaW11bChzdCx5dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LCR0KXwwKStNYXRoLmltdWwoeHQseXQpfDAsdz13K01hdGgu''@;'; put 'put ''aW11bCh4dCwkdCl8MCxfPV8rTWF0aC5pbXVsKEFlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsX24pfDApK01hdGguaW11bChqZSx6dCl8MCx3PXcrTWF0aC5pbXVsKGplLF9uKXwwLF89XytNYXRoLmltdWwoWmUscm4pfDAscD0ocD1wK01hdGguaW11bChaZSxQbil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KGN0LHJuKXwwLHc9dytNYXRoLmltdWwoY3QsUG4pfDAsXz1fK01hdGguaW11bChJZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLEpuKXwwKStNYXRoLmltdWwoWGUsWHQpfDAsdz13K01hdGguaW11bChYZSxKbil8MDt2YXIgZm89KGhlKyhfPV8rTWF0aC5pbXVsKEZlLGFuKXwwKXwwKSso''@;'; put 'put ''KDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUsdG4pfDApK01hdGguaW11bCh3ZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwod2UsdG4pfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxFdCkscD0ocD1NYXRoLmltdWwoQnQs''@;'; put 'put ''ZW4pKStNYXRoLmltdWwoeW4sRXQpfDAsdz1NYXRoLmltdWwoeW4sZW4pLF89XytNYXRoLmltdWwoT3QseXQpfDAscD0ocD1wK01hdGguaW11bChPdCwkdCl8MCkrTWF0aC5pbXVsKEt0LHl0KXwwLHc9dytNYXRoLmltdWwoS3QsJHQpfDAsXz1fK01hdGguaW11bChzdCx6dCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKHN0LF9uKXwwKStNYXRoLmltdWwoeHQsenQpfDAsdz13K01hdGguaW11bCh4dCxfbil8MCxfPV8rTWF0aC5pbXVsKEFlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsUG4pfDApK01hdGguaW11bChqZSxybil8MCx3PXcrTWF0aC5pbXVsKGplLFBuKXwwLF89XytNYXRoLmlt''@;'; put 'put ''dWwoWmUsWHQpfDAscD0ocD1wK01hdGguaW11bChaZSxKbil8MCkrTWF0aC5pbXVsKGN0LFh0KXwwLHc9dytNYXRoLmltdWwoY3QsSm4pfDA7dmFyIHZvPShoZSsoXz1fK01hdGguaW11bChJZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEllLHRuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''WGUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKFhlLHRuKXwwKSsocD4+PjEzKXwwKSsodm8+Pj4yNil8MCx2byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQseXQpLHA9KHA9TWF0aC5pbXVsKEJ0LCR0KSkrTWF0aC5pbXVsKHluLHl0KXwwLHc9TWF0aC5pbXVsKHluLCR0KSxf''@;'; put 'put ''PV8rTWF0aC5pbXVsKE90LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsX24pfDApK01hdGguaW11bChLdCx6dCl8MCx3PXcrTWF0aC5pbXVsKEt0LF9uKXwwLF89XytNYXRoLmltdWwoc3Qscm4pfDAscD0ocD1wK01hdGguaW11bChzdCxQbil8MCkrTWF0aC5pbXVsKHh0LHJuKXwwLHc9dytN''@;'; put 'put ''YXRoLmltdWwoeHQsUG4pfDAsXz1fK01hdGguaW11bChBZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLEpuKXwwKStNYXRoLmltdWwoamUsWHQpfDAsdz13K01hdGguaW11bChqZSxKbil8MDt2YXIgUnI9KGhlKyhfPV8rTWF0aC5pbXVsKFplLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoWmUsdG4pfDApK01hdGguaW11bChjdCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoY3QsdG4pfDApKyhwPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx6dCkscD0ocD1NYXRoLmltdWwoQnQsX24pKStNYXRoLmltdWwo''@;'; put 'put ''eW4senQpfDAsdz1NYXRoLmltdWwoeW4sX24pLF89XytNYXRoLmltdWwoT3Qscm4pfDAscD0ocD1wK01hdGguaW11bChPdCxQbil8MCkrTWF0aC5pbXVsKEt0LHJuKXwwLHc9dytNYXRoLmltdWwoS3QsUG4pfDAsXz1fK01hdGguaW11bChzdCxYdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LEpu''@;'; put 'put ''KXwwKStNYXRoLmltdWwoeHQsWHQpfDAsdz13K01hdGguaW11bCh4dCxKbil8MDt2YXIgWWk9KGhlKyhfPV8rTWF0aC5pbXVsKEFlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoQWUsdG4pfDApK01hdGguaW11bChqZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmlt''@;'; put 'put ''dWwoamUsdG4pfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxybikscD0ocD1NYXRoLmltdWwoQnQsUG4pKStNYXRoLmltdWwoeW4scm4pfDAsdz1NYXRoLmltdWwoeW4sUG4pLF89XytNYXRoLmltdWwoT3QsWHQpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChPdCxKbil8MCkrTWF0aC5pbXVsKEt0LFh0KXwwLHc9dytNYXRoLmltdWwoS3QsSm4pfDA7dmFyIHpvPShoZSsoXz1fK01hdGguaW11bChzdCxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHN0LHRuKXwwKStNYXRoLmltdWwoeHQsYW4pfDApKTw8MTMpfDA7aGU9KCh3''@;'; put 'put ''PXcrTWF0aC5pbXVsKHh0LHRuKXwwKSsocD4+PjEzKXwwKSsoem8+Pj4yNil8MCx6byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsWHQpLHA9KHA9TWF0aC5pbXVsKEJ0LEpuKSkrTWF0aC5pbXVsKHluLFh0KXwwLHc9TWF0aC5pbXVsKHluLEpuKTt2YXIgaXM9KGhlKyhfPV8rTWF0aC5pbXVs''@;'; put 'put ''KE90LGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT3QsdG4pfDApK01hdGguaW11bChLdCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoS3QsdG4pfDApKyhwPj4+MTMpfDApKyhpcz4+PjI2KXwwLGlzJj02NzEwODg2Mzt2YXIgdXM9KGhlKyhfPU1hdGguaW11''@;'; put 'put ''bChCdCxhbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoQnQsdG4pKStNYXRoLmltdWwoeW4sYW4pfDApKTw8MTMpfDA7cmV0dXJuIGhlPSgodz1NYXRoLmltdWwoeW4sdG4pKSsocD4+PjEzKXwwKSsodXM+Pj4yNil8MCx1cyY9NjcxMDg4NjMsY2VbMF09dWksY2VbMV09QXIsY2VbMl09''@;'; put 'put ''aHIsY2VbM109ZGksY2VbNF09ZmksY2VbNV09aG8sY2VbNl09YnIsY2VbN109TGksY2VbOF09bG8sY2VbOV09VW4sY2VbMTBdPVhpLGNlWzExXT1RaSxjZVsxMl09Zm8sY2VbMTNdPXZvLGNlWzE0XT1ScixjZVsxNV09WWksY2VbMTZdPXpvLGNlWzE3XT1pcyxjZVsxOF09dXMsMCE9PWhlJiYo''@;'; put 'put ''Y2VbMTldPWhlLGsubGVuZ3RoKyspLGt9O2Z1bmN0aW9uIHJlKGcsQyxrKXtyZXR1cm4obmV3IGllKS5tdWxwKGcsQyxrKX1mdW5jdGlvbiBpZShnLEMpe3RoaXMueD1nLHRoaXMueT1DfU1hdGguaW11bHx8KGVlPUopLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIF89dGhp''@;'; put 'put ''cy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/ZWUodGhpcyxnLEMpOl88NjM/Sih0aGlzLGcsQyk6XzwxMDI0P2Z1bmN0aW9uKHAsdyxLKXtLLm5lZ2F0aXZlPXcubmVnYXRpdmVecC5uZWdhdGl2ZSxLLmxlbmd0aD1wLmxlbmd0aCt3Lmxl''@;'; put 'put ''bmd0aDtmb3IodmFyIHRlPTAsY2U9MCxoZT0wO2hlPEsubGVuZ3RoLTE7aGUrKyl7dmFyIFNlPWNlO2NlPTA7Zm9yKHZhciBMZT02NzEwODg2MyZ0ZSxIZT1NYXRoLm1pbihoZSx3Lmxlbmd0aC0xKSx4ZT1NYXRoLm1heCgwLGhlLXAubGVuZ3RoKzEpO3hlPD1IZTt4ZSsrKXt2YXIgQmU9KDB8''@;'; put 'put ''cC53b3Jkc1toZS14ZV0pKigwfHcud29yZHNbeGVdKSxHZT02NzEwODg2MyZCZTtMZT02NzEwODg2MyYoR2U9R2UrTGV8MCksY2UrPShTZT0oU2U9U2UrKEJlLzY3MTA4ODY0fDApfDApKyhHZT4+PjI2KXwwKT4+PjI2LFNlJj02NzEwODg2M31LLndvcmRzW2hlXT1MZSx0ZT1TZSxTZT1jZX1y''@;'; put 'put ''ZXR1cm4gMCE9PXRlP0sud29yZHNbaGVdPXRlOksubGVuZ3RoLS0sSy5zdHJpcCgpfSh0aGlzLGcsQyk6cmUodGhpcyxnLEMpfSxpZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLGs9RS5wcm90b3R5cGUuX2NvdW50Qml0cyhnKS0xLF89MDtf''@;'; put 'put ''PGc7XysrKUNbX109dGhpcy5yZXZCaW4oXyxrLGcpO3JldHVybiBDfSxpZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGcsQyxrKXtpZigwPT09Z3x8Zz09PWstMSlyZXR1cm4gZztmb3IodmFyIF89MCxwPTA7cDxDO3ArKylffD0oMSZnKTw8Qy1wLTEsZz4+PTE7cmV0dXJuIF99LGllLnBy''@;'; put 'put ''b3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGcsQyxrLF8scCx3KXtmb3IodmFyIEs9MDtLPHc7SysrKV9bS109Q1tnW0tdXSxwW0tdPWtbZ1tLXV19LGllLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZyxDLGssXyxwLHcpe3RoaXMucGVybXV0ZSh3LGcsQyxrLF8scCk7Zm9yKHZhciBL''@;'; put 'put ''PTE7SzxwO0s8PD0xKWZvcih2YXIgdGU9Szw8MSxjZT1NYXRoLmNvcygyKk1hdGguUEkvdGUpLGhlPU1hdGguc2luKDIqTWF0aC5QSS90ZSksU2U9MDtTZTxwO1NlKz10ZSlmb3IodmFyIExlPWNlLEhlPWhlLHhlPTA7eGU8Szt4ZSsrKXt2YXIgRGU9a1tTZSt4ZV0sQmU9X1tTZSt4ZV0sR2U9''@;'; put 'put ''a1tTZSt4ZStLXSxVZT1fW1NlK3hlK0tdLHFlPUxlKkdlLUhlKlVlO1VlPUxlKlVlK0hlKkdlLGtbU2UreGVdPURlKyhHZT1xZSksX1tTZSt4ZV09QmUrVWUsa1tTZSt4ZStLXT1EZS1HZSxfW1NlK3hlK0tdPUJlLVVlLHhlIT09dGUmJihxZT1jZSpMZS1oZSpIZSxIZT1jZSpIZStoZSpMZSxM''@;'; put 'put ''ZT1xZSl9fSxpZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZyxDKXt2YXIgaz0xfE1hdGgubWF4KEMsZyksXz0xJmsscD0wO2ZvcihrPWsvMnwwO2s7az4+Pj0xKXArKztyZXR1cm4gMTw8cCsxK199LGllLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZyxDLGspe2lmKCEo''@;'; put 'put ''azw9MSkpZm9yKHZhciBfPTA7XzxrLzI7XysrKXt2YXIgcD1nW19dO2dbX109Z1trLV8tMV0sZ1trLV8tMV09cCxwPUNbX10sQ1tfXT0tQ1trLV8tMV0sQ1trLV8tMV09LXB9fSxpZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGcsQyl7Zm9yKHZhciBrPTAsXz0wO188Qy8yO18r''@;'; put 'put ''Kyl7dmFyIHA9ODE5MipNYXRoLnJvdW5kKGdbMipfKzFdL0MpK01hdGgucm91bmQoZ1syKl9dL0MpK2s7Z1tfXT02NzEwODg2MyZwLGs9cDw2NzEwODg2ND8wOnAvNjcxMDg4NjR8MH1yZXR1cm4gZ30saWUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oZyxDLGssXyl7Zm9yKHZhciBw''@;'; put 'put ''PTAsdz0wO3c8Qzt3Kyspa1syKnddPTgxOTEmKHArPTB8Z1t3XSksa1syKncrMV09ODE5MSYocD4+Pj0xMykscD4+Pj0xMztmb3Iodz0yKkM7dzxfOysrdylrW3ddPTA7RCgwPT09cCksRCghKC04MTkyJnApKX0saWUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBB''@;'; put 'put ''cnJheShnKSxrPTA7azxnO2srKylDW2tdPTA7cmV0dXJuIEN9LGllLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXz0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKF8pLHc9dGhpcy5zdHViKF8pLEs9bmV3IEFycmF5KF8pLHRl''@;'; put 'put ''PW5ldyBBcnJheShfKSxjZT1uZXcgQXJyYXkoXyksaGU9bmV3IEFycmF5KF8pLFNlPW5ldyBBcnJheShfKSxMZT1uZXcgQXJyYXkoXyksSGU9ay53b3JkcztIZS5sZW5ndGg9Xyx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxLLF8pLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMu''@;'; put 'put ''bGVuZ3RoLGhlLF8pLHRoaXMudHJhbnNmb3JtKEssdyx0ZSxjZSxfLHApLHRoaXMudHJhbnNmb3JtKGhlLHcsU2UsTGUsXyxwKTtmb3IodmFyIHhlPTA7eGU8Xzt4ZSsrKXt2YXIgRGU9dGVbeGVdKlNlW3hlXS1jZVt4ZV0qTGVbeGVdO2NlW3hlXT10ZVt4ZV0qTGVbeGVdK2NlW3hlXSpTZVt4''@;'; put 'put ''ZV0sdGVbeGVdPURlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh0ZSxjZSxfKSx0aGlzLnRyYW5zZm9ybSh0ZSxjZSxIZSx3LF8scCksdGhpcy5jb25qdWdhdGUoSGUsdyxfKSx0aGlzLm5vcm1hbGl6ZTEzYihIZSxfKSxrLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD1n''@;'; put 'put ''Lmxlbmd0aCtDLmxlbmd0aCxrLnN0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihn''@;'; put 'put ''KXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHJlKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1''@;'; put 'put ''bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKSxEKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkqZyxwPSg2NzEwODg2MyZfKSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPV8vNjcxMDg4NjR8MCxDKz1wPj4+''@;'; put 'put ''MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNba109Qyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKHcpe2Zvcih2YXIgSz1uZXcgQXJyYXkody5iaXRMZW5ndGgoKSks''@;'; put 'put ''dGU9MDt0ZTxLLmxlbmd0aDt0ZSsrKXt2YXIgaGU9dGUlMjY7S1t0ZV09KHcud29yZHNbdGUvMjZ8MF0mMTw8aGUpPj4+aGV9cmV0dXJuIEt9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBrPXRoaXMsXz0wO188Qy5sZW5ndGgmJjA9PT1DW19dO18rKyxrPWsu''@;'; put 'put ''c3FyKCkpO2lmKCsrXzxDLmxlbmd0aClmb3IodmFyIHA9ay5zcXIoKTtfPEMubGVuZ3RoO18rKyxwPXAuc3FyKCkpMCE9PUNbX10mJihrPWsubXVsKHApKTtyZXR1cm4ga30sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxr''@;'; put 'put ''PWclMjYsXz0oZy1rKS8yNixwPTY3MTA4ODYzPj4+MjYtazw8MjYtaztpZigwIT09ayl7dmFyIHc9MDtmb3IoQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgSz10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1LPDxrfHcsdz1LPj4+MjYta313JiYodGhp''@;'; put 'put ''cy53b3Jkc1tDXT13LHRoaXMubGVuZ3RoKyspfWlmKDAhPT1fKXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNbQytfXT10aGlzLndvcmRzW0NdO2ZvcihDPTA7QzxfO0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPV99cmV0dXJuIHRoaXMuc3RyaXAoKX0s''@;'; put 'put ''RS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLGspe3ZhciBfO0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSxfPUM/KEMtQyUyNikvMjY6MDt2YXIg''@;'; put 'put ''cD1nJTI2LHc9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLEs9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHRlPWs7aWYoXy09dyxfPU1hdGgubWF4KDAsXyksdGUpe2Zvcih2YXIgY2U9MDtjZTx3O2NlKyspdGUud29yZHNbY2VdPXRoaXMud29yZHNbY2VdO3RlLmxlbmd0aD13fWlm''@;'; put 'put ''KDAhPT13KWlmKHRoaXMubGVuZ3RoPncpZm9yKHRoaXMubGVuZ3RoLT13LGNlPTA7Y2U8dGhpcy5sZW5ndGg7Y2UrKyl0aGlzLndvcmRzW2NlXT10aGlzLndvcmRzW2NlK3ddO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIGhlPTA7Zm9yKGNlPXRoaXMubGVuZ3RoLTE7''@;'; put 'put ''Y2U+PTAmJigwIT09aGV8fGNlPj1fKTtjZS0tKXt2YXIgU2U9MHx0aGlzLndvcmRzW2NlXTt0aGlzLndvcmRzW2NlXT1oZTw8MjYtcHxTZT4+PnAsaGU9U2UmS31yZXR1cm4gdGUmJjAhPT1oZSYmKHRlLndvcmRzW3RlLmxlbmd0aCsrXT1oZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jk''@;'; put 'put ''c1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLGspe3JldHVybiBEKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsayl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PEMpKX0sRS5wcm90b3R5''@;'; put 'put ''cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAh''@;'; put 'put ''PT1DJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8o''@;'; put 'put ''dGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jk''@;'; put 'put ''c1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgu''@;'; put 'put ''bWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0w''@;'; put 'put ''LHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgm''@;'; put 'put ''JnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5j''@;'; put 'put ''dGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lz''@;'; put 'put ''aGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXyxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtrKTt2YXIgSz0wO2ZvcihfPTA7XzxnLmxlbmd0aDtfKyspe3A9KDB8dGhpcy53b3Jkc1tfK2tdKStLO3ZhciB0ZT0oMHxnLndvcmRzW19dKSpDO0s9KChwLT02NzEwODg2MyZ0ZSk+PjI2KS0o''@;'; put 'put ''dGUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnB9Zm9yKDtfPHRoaXMubGVuZ3RoLWs7XysrKUs9KHA9KDB8dGhpcy53b3Jkc1tfK2tdKStLKT4+MjYsdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnA7aWYoMD09PUspcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRCgtMT09''@;'; put 'put ''PUspLEs9MCxfPTA7Xzx0aGlzLmxlbmd0aDtfKyspSz0ocD0tKDB8dGhpcy53b3Jkc1tfXSkrSyk+PjI2LHRoaXMud29yZHNbX109NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgayxf''@;'; put 'put ''PXRoaXMuY2xvbmUoKSxwPWcsdz0wfHAud29yZHNbcC5sZW5ndGgtMV07MCE9KGs9MjYtdGhpcy5fY291bnRCaXRzKHcpKSYmKHA9cC51c2hsbihrKSxfLml1c2hsbihrKSx3PTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIEssdGU9Xy5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXso''@;'; put 'put ''Sz1uZXcgRShudWxsKSkubGVuZ3RoPXRlKzEsSy53b3Jkcz1uZXcgQXJyYXkoSy5sZW5ndGgpO2Zvcih2YXIgY2U9MDtjZTxLLmxlbmd0aDtjZSsrKUsud29yZHNbY2VdPTB9dmFyIGhlPV8uY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHRlKTswPT09aGUubmVnYXRpdmUmJihfPWhlLEsmJihL''@;'; put 'put ''LndvcmRzW3RlXT0xKSk7Zm9yKHZhciBTZT10ZS0xO1NlPj0wO1NlLS0pe3ZhciBMZT02NzEwODg2NCooMHxfLndvcmRzW3AubGVuZ3RoK1NlXSkrKDB8Xy53b3Jkc1twLmxlbmd0aCtTZS0xXSk7Zm9yKExlPU1hdGgubWluKExlL3d8MCw2NzEwODg2MyksXy5faXNobG5zdWJtdWwocCxMZSxT''@;'; put 'put ''ZSk7MCE9PV8ubmVnYXRpdmU7KUxlLS0sXy5uZWdhdGl2ZT0wLF8uX2lzaGxuc3VibXVsKHAsMSxTZSksXy5pc1plcm8oKXx8KF8ubmVnYXRpdmVePTEpO0smJihLLndvcmRzW1NlXT1MZSl9cmV0dXJuIEsmJksuc3RyaXAoKSxfLnN0cmlwKCksImRpdiIhPT1DJiYwIT09ayYmXy5pdXNocm4o''@;'; put 'put ''aykse2RpdjpLfHxudWxsLG1vZDpffX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxrKXtyZXR1cm4gRCghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyh3PXRoaXMu''@;'; put 'put ''bmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoXz13LmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD13Lm1vZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2Ol8sbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KHc9dGhpcy5kaXZtb2Qo''@;'; put 'put ''Zy5uZWcoKSxDKSwibW9kIiE9PUMmJihfPXcuZGl2Lm5lZygpKSx7ZGl2Ol8sbW9kOncubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0aXZlPyh3PXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD13Lm1vZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3Vi''@;'; put 'put ''KGcpKSx7ZGl2OncuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxt''@;'; put 'put ''b2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgXyxwLHd9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5k''@;'; put 'put ''aXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5k''@;'; put 'put ''aXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIGs9MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QsXz1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSx3PWsuY21wKF8pO3JldHVybiB3PDB8''@;'; put 'put ''fDE9PT1wJiYwPT09dz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7RChnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsaz0wLF89dGhpcy5sZW5ndGgtMTtfPj0wO18tLSlr''@;'; put 'put ''PShDKmsrKDB8dGhpcy53b3Jkc1tfXSkpJWc7cmV0dXJuIGt9LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0QoZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLGs9dGhpcy5sZW5ndGgtMTtrPj0wO2stLSl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRz''@;'; put 'put ''W2tdPV8vZ3wwLEM9XyVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlKSxEKCFnLmlzWmVybygpKTt2YXIgQz10''@;'; put 'put ''aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIF89bmV3IEUoMSkscD1uZXcgRSgwKSx3PW5ldyBFKDApLEs9bmV3IEUoMSksdGU9MDtDLmlzRXZlbigpJiZrLmlzRXZlbigpOylDLml1c2hybigxKSxrLml1c2hybigxKSwrK3RlO2Zv''@;'; put 'put ''cih2YXIgY2U9ay5jbG9uZSgpLGhlPUMuY2xvbmUoKTshQy5pc1plcm8oKTspe2Zvcih2YXIgU2U9MCxMZT0xOyEoQy53b3Jkc1swXSZMZSkmJlNlPDI2OysrU2UsTGU8PD0xKTtpZihTZT4wKWZvcihDLml1c2hybihTZSk7U2UtLSA+MDspKF8uaXNPZGQoKXx8cC5pc09kZCgpKSYmKF8uaWFk''@;'; put 'put ''ZChjZSkscC5pc3ViKGhlKSksXy5pdXNocm4oMSkscC5pdXNocm4oMSk7Zm9yKHZhciBIZT0wLHhlPTE7IShrLndvcmRzWzBdJnhlKSYmSGU8MjY7KytIZSx4ZTw8PTEpO2lmKEhlPjApZm9yKGsuaXVzaHJuKEhlKTtIZS0tID4wOykody5pc09kZCgpfHxLLmlzT2RkKCkpJiYody5pYWRkKGNl''@;'; put 'put ''KSxLLmlzdWIoaGUpKSx3Lml1c2hybigxKSxLLml1c2hybigxKTtDLmNtcChrKT49MD8oQy5pc3ViKGspLF8uaXN1Yih3KSxwLmlzdWIoSykpOihrLmlzdWIoQyksdy5pc3ViKF8pLEsuaXN1YihwKSl9cmV0dXJue2E6dyxiOkssZ2NkOmsuaXVzaGxuKHRlKX19LEUucHJvdG90eXBlLl9pbnZt''@;'; put 'put ''cD1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlKSxEKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIF8scD1uZXcgRSgxKSx3PW5ldyBFKDApLEs9ay5jbG9uZSgpO0MuY21wbigxKT4wJiZr''@;'; put 'put ''LmNtcG4oMSk+MDspe2Zvcih2YXIgdGU9MCxjZT0xOyEoQy53b3Jkc1swXSZjZSkmJnRlPDI2OysrdGUsY2U8PD0xKTtpZih0ZT4wKWZvcihDLml1c2hybih0ZSk7dGUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoSykscC5pdXNocm4oMSk7Zm9yKHZhciBoZT0wLFNlPTE7IShrLndvcmRzWzBd''@;'; put 'put ''JlNlKSYmaGU8MjY7KytoZSxTZTw8PTEpO2lmKGhlPjApZm9yKGsuaXVzaHJuKGhlKTtoZS0tID4wOyl3LmlzT2RkKCkmJncuaWFkZChLKSx3Lml1c2hybigxKTtDLmNtcChrKT49MD8oQy5pc3ViKGspLHAuaXN1Yih3KSk6KGsuaXN1YihDKSx3LmlzdWIocCkpfXJldHVybihfPTA9PT1DLmNt''@;'; put 'put ''cG4oMSk/cDp3KS5jbXBuKDApPDAmJl8uaWFkZChnKSxffSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxrPWcuY2xvbmUoKTtDLm5lZ2F0''@;'; put 'put ''aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgXz0wO0MuaXNFdmVuKCkmJmsuaXNFdmVuKCk7XysrKUMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBwPUMuY21wKGspO2lm''@;'; put 'put ''KHA8MCl7dmFyIHc9QztDPWssaz13fWVsc2UgaWYoMD09PXB8fDA9PT1rLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKGspfXJldHVybiBrLml1c2hsbihfKX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVu''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLndvcmRzWzBdJmd9LEUucHJvdG90eXBlLmJpbmNu''@;'; put 'put ''PWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKTt2YXIgQz1nJTI2LGs9KGctQykvMjYsXz0xPDxDO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1fLHRoaXM7Zm9yKHZhciBwPV8sdz1rOzAhPT1wJiZ3PHRoaXMubGVuZ3Ro''@;'; put 'put ''O3crKyl7dmFyIEs9MHx0aGlzLndvcmRzW3ddO3A9KEsrPXApPj4+MjYsdGhpcy53b3Jkc1t3XT1LJj02NzEwODg2M31yZXR1cm4gMCE9PXAmJih0aGlzLndvcmRzW3ddPXAsdGhpcy5sZW5ndGgrKyksdGhpc30sRS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlz''@;'; put 'put ''Lmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LEUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oZyl7dmFyIEMsaz1nPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFrKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZrKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4x''@;'; put 'put ''KUM9MTtlbHNle2smJihnPS1nKSxEKGc8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBfPTB8dGhpcy53b3Jkc1swXTtDPV89PT1nPzA6XzxnPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGcpe2lmKDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmUpcmV0dXJuIDE7dmFyIEM9dGhpcy51Y21wKGcpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1DOkN9LEUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZyl7''@;'; put 'put ''aWYodGhpcy5sZW5ndGg+Zy5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Zy5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0wfHRoaXMud29yZHNba10scD0wfGcud29yZHNba107aWYoXyE9PXApe188cD9DPS0xOl8+cCYm''@;'; put 'put ''KEM9MSk7YnJlYWt9fXJldHVybiBDfSxFLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGcpe3JldHVybiAxPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY21wbihnKT49MH0sRS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKT49MH0sRS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5sdD1mdW5jdGlvbihnKXtyZXR1cm4tMT09PXRoaXMuY21w''@;'; put 'put ''KGcpfSxFLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcG4oZyk8PTB9LEUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXAoZyk8PTB9LEUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wbihnKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuZXE9ZnVuY3Rpb24oZyl7cmV0dXJuIDA9PT10aGlzLmNtcChnKX0sRS5yZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBGKGcpfSxFLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNv''@;'; put 'put ''bnRleHQiKSxEKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGcuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5yZWQ9Zyx0aGlzfSxFLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhp''@;'; put 'put ''cy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRk''@;'; put 'put ''KHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhp''@;'; put 'put ''cy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5p''@;'; put 'put ''c3ViKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhp''@;'; put 'put ''cy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLm11bCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxnKSx0aGlzLnJlZC5pbXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3Zlcmlm''@;'; put 'put ''eTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sRS5w''@;'; put 'put ''cm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gRCh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxFLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sRS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkJiYhZy5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyks''@;'; put 'put ''dGhpcy5yZWQucG93KHRoaXMsZyl9O3ZhciB1ZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIGxlKGcsQyl7dGhpcy5uYW1lPWcsdGhpcy5wPW5ldyBFKEMsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBFKDEpLml1''@;'; put 'put ''c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBhZSgpe2xlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24g''@;'; put 'put ''Vygpe2xlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gYigpe2xlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gQSgpe2xlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gRihnKXtpZigic3RyaW5nIj09dHlwZW9mIGcpe3ZhciBDPUUu''@;'; put 'put ''X3ByaW1lKGcpO3RoaXMubT1DLnAsdGhpcy5wcmltZT1DfWVsc2UgRChnLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWcsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIEgoZyl7Ri5jYWxsKHRoaXMsZyksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3Ro''@;'; put 'put ''KCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgRSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlz''@;'; put 'put ''LnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1sZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiBnLndvcmRz''@;'; put 'put ''PW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZ30sbGUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZyl7dmFyIEMsaz1nO2Rve3RoaXMuc3BsaXQoayx0aGlzLnRtcCksQz0oaz0oaz10aGlzLmltdWxLKGspKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoQz50''@;'; put 'put ''aGlzLm4pO3ZhciBfPUM8dGhpcy5uPy0xOmsudWNtcCh0aGlzLnApO3JldHVybiAwPT09Xz8oay53b3Jkc1swXT0wLGsubGVuZ3RoPTEpOl8+MD9rLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1rLnN0cmlwP2suc3RyaXAoKTprLl9zdHJpcCgpLGt9LGxlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlv''@;'; put 'put ''bihnLEMpe2cuaXVzaHJuKHRoaXMubiwwLEMpfSxsZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaW11bCh0aGlzLmspfSxUKGFlLGxlKSxhZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZyxDKXtmb3IodmFyIGs9NDE5NDMwMyxfPU1hdGgubWluKGcubGVuZ3RoLDkp''@;'; put 'put ''LHA9MDtwPF87cCsrKUMud29yZHNbcF09Zy53b3Jkc1twXTtpZihDLmxlbmd0aD1fLGcubGVuZ3RoPD05KXJldHVybiBnLndvcmRzWzBdPTAsdm9pZChnLmxlbmd0aD0xKTt2YXIgdz1nLndvcmRzWzldO2ZvcihDLndvcmRzW0MubGVuZ3RoKytdPXcmayxwPTEwO3A8Zy5sZW5ndGg7cCsrKXt2''@;'; put 'put ''YXIgSz0wfGcud29yZHNbcF07Zy53b3Jkc1twLTEwXT0oSyZrKTw8NHx3Pj4+MjIsdz1LfWcud29yZHNbcC0xMF09dz4+Pj0yMixnLmxlbmd0aC09MD09PXcmJmcubGVuZ3RoPjEwPzEwOjl9LGFlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtnLndvcmRzW2cubGVuZ3RoXT0wLGcud29y''@;'; put 'put ''ZHNbZy5sZW5ndGgrMV09MCxnLmxlbmd0aCs9Mjtmb3IodmFyIEM9MCxrPTA7azxnLmxlbmd0aDtrKyspe3ZhciBfPTB8Zy53b3Jkc1trXTtnLndvcmRzW2tdPTY3MTA4ODYzJihDKz05NzcqXyksQz02NCpfKyhDLzY3MTA4ODY0fDApfXJldHVybiAwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYm''@;'; put 'put ''KGcubGVuZ3RoLS0sMD09PWcud29yZHNbZy5sZW5ndGgtMV0mJmcubGVuZ3RoLS0pLGd9LFQoVyxsZSksVChiLGxlKSxUKEEsbGUpLEEucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3RoO2srKyl7dmFyIF89MTkqKDB8Zy53b3Jkc1trXSkrQyxw''@;'; put 'put ''PTY3MTA4ODYzJl87Xz4+Pj0yNixnLndvcmRzW2tdPXAsQz1ffXJldHVybiAwIT09QyYmKGcud29yZHNbZy5sZW5ndGgrK109QyksZ30sRS5fcHJpbWU9ZnVuY3Rpb24oZyl7aWYodWVbZ10pcmV0dXJuIHVlW2ddO3ZhciBDO2lmKCJrMjU2Ij09PWcpQz1uZXcgYWU7ZWxzZSBpZigicDIyNCI9''@;'; put 'put ''PT1nKUM9bmV3IFc7ZWxzZSBpZigicDE5MiI9PT1nKUM9bmV3IGI7ZWxzZXtpZigicDI1NTE5IiE9PWcpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZyk7Qz1uZXcgQX1yZXR1cm4gdWVbZ109QyxDfSxGLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihnKXtEKDA9PT1nLm5l''@;'; put 'put ''Z2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQoZy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRi5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZyxDKXtEKCEoZy5uZWdhdGl2ZXxDLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCBwb3NpdGl2ZXMiKSxEKGcucmVkJiZnLnJlZD09PUMucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEYucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGcpLl9mb3JjZVJlZCh0aGlzKTpnLnVtb2Qo''@;'; put 'put ''dGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLm5lZz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pc1plcm8oKT9nLmNsb25lKCk6dGhpcy5tLnN1YihnKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIg''@;'; put 'put ''az1nLmFkZChDKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5pc3ViKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5pYWRkKEMpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlz''@;'; put 'put ''dWIodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5zdWIoQyk7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnLEMpe3Ro''@;'; put 'put ''aXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmlzdWIoQyk7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShnKSx0aGlzLmltb2QoZy51c2hsbihDKSl9LEYucHJvdG90eXBlLmltdWw9''@;'; put 'put ''ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLmltdWwoQykpfSxGLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLm11bChDKSl9LEYucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24o''@;'; put 'put ''Zyl7cmV0dXJuIHRoaXMuaW11bChnLGcuY2xvbmUoKSl9LEYucHJvdG90eXBlLnNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5tdWwoZyxnKX0sRi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihnKXtpZihnLmlzWmVybygpKXJldHVybiBnLmNsb25lKCk7dmFyIEM9dGhpcy5tLmFuZGxuKDMp''@;'; put 'put ''O2lmKEQoQyUyPT0xKSwzPT09Qyl7dmFyIGs9dGhpcy5tLmFkZChuZXcgRSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhnLGspfWZvcih2YXIgXz10aGlzLm0uc3VibigxKSxwPTA7IV8uaXNaZXJvKCkmJjA9PT1fLmFuZGxuKDEpOylwKyssXy5pdXNocm4oMSk7RCghXy5pc1plcm8o''@;'; put 'put ''KSk7dmFyIHc9bmV3IEUoMSkudG9SZWQodGhpcyksSz13LnJlZE5lZygpLHRlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxjZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGNlPW5ldyBFKDIqY2UqY2UpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhjZSx0ZSkuY21wKEspOyljZS5yZWRJQWRk''@;'; put 'put ''KEspO2Zvcih2YXIgaGU9dGhpcy5wb3coY2UsXyksU2U9dGhpcy5wb3coZyxfLmFkZG4oMSkuaXVzaHJuKDEpKSxMZT10aGlzLnBvdyhnLF8pLEhlPXA7MCE9PUxlLmNtcCh3KTspe2Zvcih2YXIgeGU9TGUsRGU9MDswIT09eGUuY21wKHcpO0RlKyspeGU9eGUucmVkU3FyKCk7RChEZTxIZSk7''@;'; put 'put ''dmFyIEJlPXRoaXMucG93KGhlLG5ldyBFKDEpLml1c2hsbihIZS1EZS0xKSk7U2U9U2UucmVkTXVsKEJlKSxoZT1CZS5yZWRTcXIoKSxMZT1MZS5yZWRNdWwoaGUpLEhlPURlfXJldHVybiBTZX0sRi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXt2YXIgQz1nLl9pbnZtcCh0aGlzLm0pO3Jl''@;'; put 'put ''dHVybiAwIT09Qy5uZWdhdGl2ZT8oQy5uZWdhdGl2ZT0wLHRoaXMuaW1vZChDKS5yZWROZWcoKSk6dGhpcy5pbW9kKEMpfSxGLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyxDKXtpZihDLmlzWmVybygpKXJldHVybiBuZXcgRSgxKS50b1JlZCh0aGlzKTtpZigwPT09Qy5jbXBuKDEpKXJldHVy''@;'; put 'put ''biBnLmNsb25lKCk7dmFyIGs9bmV3IEFycmF5KDE2KTtrWzBdPW5ldyBFKDEpLnRvUmVkKHRoaXMpLGtbMV09Zztmb3IodmFyIF89MjtfPGsubGVuZ3RoO18rKylrW19dPXRoaXMubXVsKGtbXy0xXSxnKTt2YXIgcD1rWzBdLHc9MCxLPTAsdGU9Qy5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXRl''@;'; put 'put ''JiYodGU9MjYpLF89Qy5sZW5ndGgtMTtfPj0wO18tLSl7Zm9yKHZhciBjZT1DLndvcmRzW19dLGhlPXRlLTE7aGU+PTA7aGUtLSl7dmFyIFNlPWNlPj5oZSYxO3AhPT1rWzBdJiYocD10aGlzLnNxcihwKSksMCE9PVNlfHwwIT09dz8odzw8PTEsd3w9U2UsKDQ9PSsrS3x8MD09PV8mJjA9PT1o''@;'; put 'put ''ZSkmJihwPXRoaXMubXVsKHAsa1t3XSksSz0wLHc9MCkpOks9MH10ZT0yNn1yZXR1cm4gcH0sRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3ZhciBDPWcudW1vZCh0aGlzLm0pO3JldHVybiBDPT09Zz9DLmNsb25lKCk6Q30sRi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rp''@;'; put 'put ''b24oZyl7dmFyIEM9Zy5jbG9uZSgpO3JldHVybiBDLnJlZD1udWxsLEN9LEUubW9udD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IEgoZyl9LFQoSCxGKSxILnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChnLnVzaGxuKHRoaXMuc2hpZnQpKX0sSC5wcm90''@;'; put 'put ''b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9dGhpcy5pbW9kKGcubXVsKHRoaXMucmludikpO3JldHVybiBDLnJlZD1udWxsLEN9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBnLndvcmRzWzBdPTAsZy5s''@;'; put 'put ''ZW5ndGg9MSxnO3ZhciBrPWcuaW11bChDKSxfPWsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHA9ay5pc3ViKF8pLml1c2hybih0aGlzLnNoaWZ0KSx3PXA7cmV0dXJuIHAuY21wKHRoaXMubSk+PTA/dz1wLmlzdWIodGhp''@;'; put 'put ''cy5tKTpwLmNtcG4oMCk8MCYmKHc9cC5pYWRkKHRoaXMubSkpLHcuX2ZvcmNlUmVkKHRoaXMpfSxILnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zy5tdWwoQyksXz1rLm1h''@;'; put 'put ''c2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPWsuaXN1YihfKS5pdXNocm4odGhpcy5zaGlmdCksdz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP3c9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJih3PXAuaWFkZCh0aGlz''@;'; put 'put ''Lm0pKSx3Ll9mb3JjZVJlZCh0aGlzKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShNPUkubm1kKE0pLHRoaXMpfSw4MDkxOk09PnsidXNlIHN0cmljdCI7ZnVuY3Rp''@;'; put 'put ''b24gTyhJLGope2lmKG51bGw9PUkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgZmlyc3QgYXJndW1lbnQgdG8gb2JqZWN0Iik7Zm9yKHZhciBHPU9iamVjdChJKSxEPTE7RDxhcmd1bWVudHMubGVuZ3RoO0QrKyl7dmFyIFQ9YXJndW1lbnRzW0RdO2lmKG51bGwhPVQpZm9y''@;'; put 'put ''KHZhciBFPU9iamVjdC5rZXlzKE9iamVjdChUKSksej0wLE49RS5sZW5ndGg7ejxOO3orKyl7dmFyIEI9RVt6XSxaPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVCxCKTt2b2lkIDAhPT1aJiZaLmVudW1lcmFibGUmJihHW0JdPVRbQl0pfX1yZXR1cm4gR31NLmV4cG9ydHM9e2Fz''@;'; put 'put ''c2lnbjpPLHBvbHlmaWxsOmZ1bmN0aW9uKCl7T2JqZWN0LmFzc2lnbnx8T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwiYXNzaWduIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6T30pfX19LDcxODc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgaixHPUkoNTEwOCksRD0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3Q/UmVmbGVjdDpudWxsLFQ9RCYmImZ1bmN0aW9uIj09dHlwZW9mIEQuYXBwbHk/RC5hcHBseTpmdW5jdGlvbih1ZSxsZSxhZSl7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHVlLGxlLGFlKX07aj1E''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgRC5vd25LZXlzP0Qub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHVlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModWUpLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHVlKSl9OmZ1''@;'; put 'put ''bmN0aW9uKHVlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModWUpfTt2YXIgRT1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWUhPXVlfTtmdW5jdGlvbiB6KCl7ei5pbml0LmNhbGwodGhpcyl9TS5leHBvcnRzPXosTS5leHBvcnRzLm9uY2U9ZnVuY3Rpb24o''@;'; put 'put ''dWUsbGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihhZSxXKXtmdW5jdGlvbiBiKEYpe3VlLnJlbW92ZUxpc3RlbmVyKGxlLEEpLFcoRil9ZnVuY3Rpb24gQSgpeyJmdW5jdGlvbiI9PXR5cGVvZiB1ZS5yZW1vdmVMaXN0ZW5lciYmdWUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixiKSxh''@;'; put 'put ''ZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXZhciBGO2llKHVlLGxlLEEse29uY2U6ITB9KSwiZXJyb3IiIT09bGUmJiJmdW5jdGlvbiI9PXR5cGVvZihGPXVlKS5vbiYmaWUoRiwiZXJyb3IiLGIse29uY2U6ITB9KX0pfSx6LkV2ZW50RW1pdHRlcj16LHoucHJvdG90eXBlLl9ldmVudHM9''@;'; put 'put ''dm9pZCAwLHoucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHoucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBOPTEwO2Z1bmN0aW9uIEIodWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB1ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0''@;'; put 'put ''IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdWUpfWZ1bmN0aW9uIFoodWUpe3JldHVybiB2b2lkIDA9PT11ZS5fbWF4TGlzdGVuZXJzP3ouZGVmYXVsdE1heExpc3RlbmVyczp1ZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIFkodWUsbGUsYWUsVyl7dmFyIGIs''@;'; put 'put ''QSxGO2lmKEIoYWUpLHZvaWQgMD09PShBPXVlLl9ldmVudHMpPyhBPXVlLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx1ZS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PUEubmV3TGlzdGVuZXImJih1ZS5lbWl0KCJuZXdMaXN0ZW5lciIsbGUsYWUubGlzdGVuZXI/YWUubGlzdGVuZXI6''@;'; put 'put ''YWUpLEE9dWUuX2V2ZW50cyksRj1BW2xlXSksdm9pZCAwPT09RilGPUFbbGVdPWFlLCsrdWUuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIEY/Rj1BW2xlXT1XP1thZSxGXTpbRixhZV06Vz9GLnVuc2hpZnQoYWUpOkYucHVzaChhZSksKGI9Wih1ZSkpPjAmJkYubGVu''@;'; put 'put ''Z3RoPmImJiFGLndhcm5lZCl7Ri53YXJuZWQ9ITA7dmFyIGc9bmV3IEVycm9yKCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICIrRi5sZW5ndGgrIiAiK1N0cmluZyhsZSkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygp''@;'; put 'put ''IHRvIGluY3JlYXNlIGxpbWl0Iik7Zy5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLGcuZW1pdHRlcj11ZSxnLnR5cGU9bGUsZy5jb3VudD1GLmxlbmd0aCxHJiZHLndhcm4mJkcud2FybihnKX1yZXR1cm4gdWV9ZnVuY3Rpb24gVSgpe2lmKCF0aGlzLmZpcmVkKXJldHVybiB0''@;'; put 'put ''aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTp0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LGFyZ3VtZW50cyl9ZnVuY3Rp''@;'; put 'put ''b24gcSh1ZSxsZSxhZSl7dmFyIFc9e2ZpcmVkOiExLHdyYXBGbjp2b2lkIDAsdGFyZ2V0OnVlLHR5cGU6bGUsbGlzdGVuZXI6YWV9LGI9VS5iaW5kKFcpO3JldHVybiBiLmxpc3RlbmVyPWFlLFcud3JhcEZuPWIsYn1mdW5jdGlvbiBKKHVlLGxlLGFlKXt2YXIgVz11ZS5fZXZlbnRzO2lmKHZv''@;'; put 'put ''aWQgMD09PVcpcmV0dXJuW107dmFyIGI9V1tsZV07cmV0dXJuIHZvaWQgMD09PWI/W106ImZ1bmN0aW9uIj09dHlwZW9mIGI/YWU/W2IubGlzdGVuZXJ8fGJdOltiXTphZT9mdW5jdGlvbihBKXtmb3IodmFyIEY9bmV3IEFycmF5KEEubGVuZ3RoKSxIPTA7SDxGLmxlbmd0aDsrK0gpRltIXT1B''@;'; put 'put ''W0hdLmxpc3RlbmVyfHxBW0hdO3JldHVybiBGfShiKTpyZShiLGIubGVuZ3RoKX1mdW5jdGlvbiBlZSh1ZSl7dmFyIGxlPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1sZSl7dmFyIGFlPWxlW3VlXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYWUpcmV0dXJuIDE7aWYodm9pZCAwIT09YWUpcmV0''@;'; put 'put ''dXJuIGFlLmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiByZSh1ZSxsZSl7Zm9yKHZhciBhZT1uZXcgQXJyYXkobGUpLFc9MDtXPGxlOysrVylhZVtXXT11ZVtXXTtyZXR1cm4gYWV9ZnVuY3Rpb24gaWUodWUsbGUsYWUsVyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHVlLm9uKVcub25jZT91ZS5v''@;'; put 'put ''bmNlKGxlLGFlKTp1ZS5vbihsZSxhZSk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdWUuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImVtaXR0ZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBl''@;'; put 'put ''b2YgdWUpO3VlLmFkZEV2ZW50TGlzdGVuZXIobGUsZnVuY3Rpb24gYihBKXtXLm9uY2UmJnVlLnJlbW92ZUV2ZW50TGlzdGVuZXIobGUsYiksYWUoQSl9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHosImRlZmF1bHRNYXhMaXN0ZW5lcnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBOfSxzZXQ6ZnVuY3Rpb24odWUpe2lmKCJudW1iZXIiIT10eXBlb2YgdWV8fHVlPDB8fEUodWUpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgImRlZmF1bHRNYXhMaXN0ZW5lcnMiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBu''@;'; put 'put ''dW1iZXIuIFJlY2VpdmVkICcrdWUrIi4iKTtOPXVlfX0pLHouaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlz''@;'; put 'put ''Ll9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LHoucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih1ZSl7aWYoIm51bWJlciIhPXR5cGVvZiB1ZXx8dWU8MHx8RSh1ZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1Ro''@;'; put 'put ''ZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt1ZSsiLiIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dWUsdGhpc30sei5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IFoodGhpcyl9LHoucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odWUpe2Zvcih2YXIgbGU9W10sYWU9MTthZTxhcmd1bWVudHMubGVuZ3RoO2FlKyspbGUucHVzaChhcmd1bWVudHNbYWVdKTt2YXIgVz0iZXJyb3IiPT09dWUsYj10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09YilXPVcmJnZvaWQg''@;'; put 'put ''MD09PWIuZXJyb3I7ZWxzZSBpZighVylyZXR1cm4hMTtpZihXKXt2YXIgQTtpZihsZS5sZW5ndGg+MCYmKEE9bGVbMF0pLEEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBBO3ZhciBGPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKEE/IiAoIitBLm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cg''@;'; put 'put ''Ri5jb250ZXh0PUEsRn12YXIgSD1iW3VlXTtpZih2b2lkIDA9PT1IKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBIKVQoSCx0aGlzLGxlKTtlbHNle3ZhciBnPUgubGVuZ3RoLEM9cmUoSCxnKTtmb3IoYWU9MDthZTxnOysrYWUpVChDW2FlXSx0aGlzLGxlKX1yZXR1cm4hMH0sei5w''@;'; put 'put ''cm90b3R5cGUub249ei5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odWUsbGUpe3JldHVybiBZKHRoaXMsdWUsbGUsITEpfSx6LnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24odWUsbGUpe3JldHVybiBZKHRoaXMsdWUsbGUsITApfSx6LnByb3RvdHlwZS5vbmNlPWZ1''@;'; put 'put ''bmN0aW9uKHVlLGxlKXtyZXR1cm4gQihsZSksdGhpcy5vbih1ZSxxKHRoaXMsdWUsbGUpKSx0aGlzfSx6LnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHVlLGxlKXtyZXR1cm4gQihsZSksdGhpcy5wcmVwZW5kTGlzdGVuZXIodWUscSh0aGlzLHVlLGxlKSksdGhpc30s''@;'; put 'put ''ei5wcm90b3R5cGUub2ZmPXoucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHVlLGxlKXt2YXIgYWUsVyxiLEEsRjtpZihCKGxlKSx2b2lkIDA9PT0oVz10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PShhZT1XW3VlXSkpcmV0dXJuIHRoaXM7aWYoYWU9PT1s''@;'; put 'put ''ZXx8YWUubGlzdGVuZXI9PT1sZSkwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOihkZWxldGUgV1t1ZV0sVy5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsdWUsYWUubGlzdGVuZXJ8fGxlKSk7ZWxzZSBpZigi''@;'; put 'put ''ZnVuY3Rpb24iIT10eXBlb2YgYWUpe2ZvcihiPS0xLEE9YWUubGVuZ3RoLTE7QT49MDtBLS0paWYoYWVbQV09PT1sZXx8YWVbQV0ubGlzdGVuZXI9PT1sZSl7Rj1hZVtBXS5saXN0ZW5lcixiPUE7YnJlYWt9aWYoYjwwKXJldHVybiB0aGlzOzA9PT1iP2FlLnNoaWZ0KCk6ZnVuY3Rpb24oSCxn''@;'; put 'put ''KXtmb3IoO2crMTxILmxlbmd0aDtnKyspSFtnXT1IW2crMV07SC5wb3AoKX0oYWUsYiksMT09PWFlLmxlbmd0aCYmKFdbdWVdPWFlWzBdKSx2b2lkIDAhPT1XLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIix1ZSxGfHxsZSl9cmV0dXJuIHRoaXN9LHoucHJvdG90''@;'; put 'put ''eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih1ZSl7dmFyIGxlLGFlLFc7aWYodm9pZCAwPT09KGFlPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09YWUucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2Jq''@;'; put 'put ''ZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1hZVt1ZV0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBhZVt1ZV0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBiLEE9''@;'; put 'put ''T2JqZWN0LmtleXMoYWUpO2ZvcihXPTA7VzxBLmxlbmd0aDsrK1cpInJlbW92ZUxpc3RlbmVyIiE9PShiPUFbV10pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhiKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5j''@;'; put 'put ''cmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihsZT1hZVt1ZV0pKXRoaXMucmVtb3ZlTGlzdGVuZXIodWUsbGUpO2Vsc2UgaWYodm9pZCAwIT09bGUpZm9yKFc9bGUubGVuZ3RoLTE7Vz49MDtXLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih1''@;'; put 'put ''ZSxsZVtXXSk7cmV0dXJuIHRoaXN9LHoucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbih1ZSl7cmV0dXJuIEoodGhpcyx1ZSwhMCl9LHoucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbih1ZSl7cmV0dXJuIEoodGhpcyx1ZSwhMSl9LHoubGlzdGVuZXJDb3VudD1mdW5jdGlvbih1''@;'; put 'put ''ZSxsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHVlLmxpc3RlbmVyQ291bnQ/dWUubGlzdGVuZXJDb3VudChsZSk6ZWUuY2FsbCh1ZSxsZSl9LHoucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZWUsei5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVu''@;'; put 'put ''dHNDb3VudD4wP2oodGhpcy5fZXZlbnRzKTpbXX19LDMwNDg6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyLEc9SSgyMzE4KTtNLmV4cG9ydHM9ZnVuY3Rpb24oRCxULEUseil7aWYoai5pc0J1ZmZlcihEKXx8KEQ9ai5mcm9tKEQsImJpbmFyeSIpKSxUJiYoai5pc0J1ZmZlcihUKXx8''@;'; put 'put ''KFQ9ai5mcm9tKFQsImJpbmFyeSIpKSw4IT09VC5sZW5ndGgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJzYWx0IHNob3VsZCBiZSBCdWZmZXIgd2l0aCA4IGJ5dGUgbGVuZ3RoIik7Zm9yKHZhciBOPUUvOCxCPWouYWxsb2MoTiksWj1qLmFsbG9jKHp8fDApLFk9ai5hbGxvYygwKTtOPjB8fHo+''@;'; put 'put ''MDspe3ZhciBVPW5ldyBHO1UudXBkYXRlKFkpLFUudXBkYXRlKEQpLFQmJlUudXBkYXRlKFQpLFk9VS5kaWdlc3QoKTt2YXIgcT0wO2lmKE4+MCl7dmFyIEo9Qi5sZW5ndGgtTjtxPU1hdGgubWluKE4sWS5sZW5ndGgpLFkuY29weShCLEosMCxxKSxOLT1xfWlmKHE8WS5sZW5ndGgmJno+MCl7''@;'; put 'put ''dmFyIGVlPVoubGVuZ3RoLXoscmU9TWF0aC5taW4oeixZLmxlbmd0aC1xKTtZLmNvcHkoWixlZSxxLHErcmUpLHotPXJlfX1yZXR1cm4gWS5maWxsKDApLHtrZXk6QixpdjpafX19LDQwMjk6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDUzMjApLEc9T2JqZWN0LnByb3RvdHlwZS50''@;'; put 'put ''b1N0cmluZyxEPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7TS5leHBvcnRzPWZ1bmN0aW9uKFQsRSx6KXtpZighaihFKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTt2YXIgTjthcmd1bWVudHMubGVuZ3RoPj0zJiYoTj16KSwiW29i''@;'; put 'put ''amVjdCBBcnJheV0iPT09Ry5jYWxsKFQpP2Z1bmN0aW9uKEIsWixZKXtmb3IodmFyIFU9MCxxPUIubGVuZ3RoO1U8cTtVKyspRC5jYWxsKEIsVSkmJihudWxsPT1ZP1ooQltVXSxVLEIpOlouY2FsbChZLEJbVV0sVSxCKSl9KFQsRSxOKToic3RyaW5nIj09dHlwZW9mIFQ/ZnVuY3Rpb24oQixa''@;'; put 'put ''LFkpe2Zvcih2YXIgVT0wLHE9Qi5sZW5ndGg7VTxxO1UrKyludWxsPT1ZP1ooQi5jaGFyQXQoVSksVSxCKTpaLmNhbGwoWSxCLmNoYXJBdChVKSxVLEIpfShULEUsTik6ZnVuY3Rpb24oQixaLFkpe2Zvcih2YXIgVSBpbiBCKUQuY2FsbChCLFUpJiYobnVsbD09WT9aKEJbVV0sVSxCKTpaLmNh''@;'; put 'put ''bGwoWSxCW1VdLFUsQikpfShULEUsTil9fSw2MjMwOk09PntNLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGYuRm9ybURhdGE6d2luZG93LkZvcm1EYXRhfSw1MzAyOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KSxHPUkoNTEwOCk7Y29uc3QgRD1JKDc3KSxU''@;'; put 'put ''PUkoMjUyMCksRT1JKDEzODEpLm1rZGlyc1N5bmMsej1JKDMxOCkudXRpbWVzTWlsbGlzU3luYyxOPUkoMjczMyk7ZnVuY3Rpb24gQihxLEosZWUscmUpe2NvbnN0IGllPShyZS5kZXJlZmVyZW5jZT9ELnN0YXRTeW5jOkQubHN0YXRTeW5jKShKKTtpZihpZS5pc0RpcmVjdG9yeSgpKXJldHVy''@;'; put 'put ''biB1ZT1pZSxhZT1KLFc9ZWUsYj1yZSxxP1UoYWUsVyxiKTooQT11ZS5tb2RlLEY9YWUsZz1iLEQubWtkaXJTeW5jKEg9VyksVShGLEgsZyksWShILEEpKTt2YXIgdWUsYWUsVyxiLEEsRixILGc7aWYoaWUuaXNGaWxlKCl8fGllLmlzQ2hhcmFjdGVyRGV2aWNlKCl8fGllLmlzQmxvY2tEZXZp''@;'; put 'put ''Y2UoKSlyZXR1cm4gZnVuY3Rpb24odWUsbGUsYWUsVyxiKXtyZXR1cm4gbGU/ZnVuY3Rpb24oQSxGLEgsZyl7aWYoZy5vdmVyd3JpdGUpcmV0dXJuIEQudW5saW5rU3luYyhIKSxaKEEsRixILGcpO2lmKGcuZXJyb3JPbkV4aXN0KXRocm93IG5ldyBFcnJvcihgJyR7SH0nIGFscmVhZHkgZXhp''@;'; put 'put ''c3RzYCl9KHVlLGFlLFcsYik6Wih1ZSxhZSxXLGIpfShpZSxxLEosZWUscmUpO2lmKGllLmlzU3ltYm9saWNMaW5rKCkpcmV0dXJuIGZ1bmN0aW9uKHVlLGxlLGFlLFcpe2xldCBiPUQucmVhZGxpbmtTeW5jKGxlKTtpZihXLmRlcmVmZXJlbmNlJiYoYj1ULnJlc29sdmUoai5jd2QoKSxiKSks''@;'; put 'put ''dWUpe2xldCBBO3RyeXtBPUQucmVhZGxpbmtTeW5jKGFlKX1jYXRjaChGKXtpZigiRUlOVkFMIj09PUYuY29kZXx8IlVOS05PV04iPT09Ri5jb2RlKXJldHVybiBELnN5bWxpbmtTeW5jKGIsYWUpO3Rocm93IEZ9aWYoVy5kZXJlZmVyZW5jZSYmKEE9VC5yZXNvbHZlKGouY3dkKCksQSkpLE4u''@;'; put 'put ''aXNTcmNTdWJkaXIoYixBKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb3B5ICcke2J9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke0F9Jy5gKTtpZihELnN0YXRTeW5jKGFlKS5pc0RpcmVjdG9yeSgpJiZOLmlzU3JjU3ViZGlyKEEsYikpdGhyb3cgbmV3IEVycm9yKGBDYW5u''@;'; put 'put ''b3Qgb3ZlcndyaXRlICcke0F9JyB3aXRoICcke2J9Jy5gKTtyZXR1cm4gZnVuY3Rpb24oRixIKXtyZXR1cm4gRC51bmxpbmtTeW5jKEgpLEQuc3ltbGlua1N5bmMoRixIKX0oYixhZSl9cmV0dXJuIEQuc3ltbGlua1N5bmMoYixhZSl9KHEsSixlZSxyZSk7dGhyb3cgaWUuaXNTb2NrZXQoKT9u''@;'; put 'put ''ZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgc29ja2V0IGZpbGU6ICR7Sn1gKTppZS5pc0ZJRk8oKT9uZXcgRXJyb3IoYENhbm5vdCBjb3B5IGEgRklGTyBwaXBlOiAke0p9YCk6bmV3IEVycm9yKGBVbmtub3duIGZpbGU6ICR7Sn1gKX1mdW5jdGlvbiBaKHEsSixlZSxyZSl7cmV0dXJuIEQuY29w''@;'; put 'put ''eUZpbGVTeW5jKEosZWUpLHJlLnByZXNlcnZlVGltZXN0YW1wcyYmKHVlPUosbGU9ZWUsISgxMjgmKGllPXEubW9kZSkpJiZZKGxlLDEyOHxpZSksZnVuY3Rpb24oYWUsVyl7Y29uc3QgYj1ELnN0YXRTeW5jKGFlKTt6KFcsYi5hdGltZSxiLm10aW1lKX0odWUsbGUpKSxZKGVlLHEubW9kZSk7''@;'; put 'put ''dmFyIGllLHVlLGxlfWZ1bmN0aW9uIFkocSxKKXtyZXR1cm4gRC5jaG1vZFN5bmMocSxKKX1mdW5jdGlvbiBVKHEsSixlZSl7RC5yZWFkZGlyU3luYyhxKS5mb3JFYWNoKHJlPT5mdW5jdGlvbihpZSx1ZSxsZSxhZSl7Y29uc3QgVz1ULmpvaW4odWUsaWUpLGI9VC5qb2luKGxlLGllKSx7ZGVz''@;'; put 'put ''dFN0YXQ6QX09Ti5jaGVja1BhdGhzU3luYyhXLGIsImNvcHkiLGFlKTtyZXR1cm4gZnVuY3Rpb24oRixILGcsQyl7aWYoIUMuZmlsdGVyfHxDLmZpbHRlcihILGcpKXJldHVybiBCKEYsSCxnLEMpfShBLFcsYixhZSl9KHJlLHEsSixlZSkpfU0uZXhwb3J0cz1mdW5jdGlvbihxLEosZWUpeyJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBlZSYmKGVlPXtmaWx0ZXI6ZWV9KSwoZWU9ZWV8fHt9KS5jbG9iYmVyPSEoImNsb2JiZXIiaW4gZWUpfHwhIWVlLmNsb2JiZXIsZWUub3ZlcndyaXRlPSJvdmVyd3JpdGUiaW4gZWU/ISFlZS5vdmVyd3JpdGU6ZWUuY2xvYmJlcixlZS5wcmVzZXJ2ZVRpbWVzdGFt''@;'; put 'put ''cHMmJiJpYTMyIj09PWouYXJjaCYmRy53YXJuKCJmcy1leHRyYTogVXNpbmcgdGhlIHByZXNlcnZlVGltZXN0YW1wcyBvcHRpb24gaW4gMzItYml0IG5vZGUgaXMgbm90IHJlY29tbWVuZGVkO1xuXG4gICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRy''@;'; put 'put ''YS9pc3N1ZXMvMjY5Iik7Y29uc3R7c3JjU3RhdDpyZSxkZXN0U3RhdDppZX09Ti5jaGVja1BhdGhzU3luYyhxLEosImNvcHkiLGVlKTtyZXR1cm4gTi5jaGVja1BhcmVudFBhdGhzU3luYyhxLHJlLEosImNvcHkiKSxmdW5jdGlvbih1ZSxsZSxhZSxXKXtpZihXLmZpbHRlciYmIVcuZmlsdGVy''@;'; put 'put ''KGxlLGFlKSlyZXR1cm47Y29uc3QgYj1ULmRpcm5hbWUoYWUpO3JldHVybiBELmV4aXN0c1N5bmMoYil8fEUoYiksQih1ZSxsZSxhZSxXKX0oaWUscSxKLGVlKX19LDg2OTA6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtNLmV4cG9ydHM9e2NvcHlTeW5jOkkoNTMwMil9fSw3MTg5OihNLE8sSSk9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KSxHPUkoNTEwOCk7Y29uc3QgRD1JKDc3KSxUPUkoMjUyMCksRT1JKDEzODEpLm1rZGlycyx6PUkoOTI1NykucGF0aEV4aXN0cyxOPUkoMzE4KS51dGltZXNNaWxsaXMsQj1JKDI3MzMpO2Z1bmN0aW9uIFoobGUsYWUsVyxiLEEpe2NvbnN0IEY9''@;'; put 'put ''VC5kaXJuYW1lKFcpO3ooRiwoSCxnKT0+SD9BKEgpOmc/VShsZSxhZSxXLGIsQSk6dm9pZCBFKEYsQz0+Qz9BKEMpOlUobGUsYWUsVyxiLEEpKSl9ZnVuY3Rpb24gWShsZSxhZSxXLGIsQSxGKXtQcm9taXNlLnJlc29sdmUoQS5maWx0ZXIoVyxiKSkudGhlbihIPT5IP2xlKGFlLFcsYixBLEYp''@;'; put 'put ''OkYoKSxIPT5GKEgpKX1mdW5jdGlvbiBVKGxlLGFlLFcsYixBKXsoYi5kZXJlZmVyZW5jZT9ELnN0YXQ6RC5sc3RhdCkoYWUsKEYsSCk9PntyZXR1cm4gRj9BKEYpOkguaXNEaXJlY3RvcnkoKT8oZz1ILGs9YWUsXz1XLHA9Yix3PUEsbGU/cmUoayxfLHAsdyk6KEs9Zy5tb2RlLHRlPWssaGU9''@;'; put 'put ''cCxTZT13LHZvaWQgRC5ta2RpcihjZT1fLExlPT57aWYoTGUpcmV0dXJuIFNlKExlKTtyZSh0ZSxjZSxoZSxIZT0+SGU/U2UoSGUpOmVlKGNlLEssU2UpKX0pKSk6SC5pc0ZpbGUoKXx8SC5pc0NoYXJhY3RlckRldmljZSgpfHxILmlzQmxvY2tEZXZpY2UoKT9mdW5jdGlvbihnLEMsayxfLHAs''@;'; put 'put ''dyl7cmV0dXJuIEM/ZnVuY3Rpb24oSyx0ZSxjZSxoZSxTZSl7aWYoIWhlLm92ZXJ3cml0ZSlyZXR1cm4gaGUuZXJyb3JPbkV4aXN0P1NlKG5ldyBFcnJvcihgJyR7Y2V9JyBhbHJlYWR5IGV4aXN0c2ApKTpTZSgpO0QudW5saW5rKGNlLExlPT5MZT9TZShMZSk6cShLLHRlLGNlLGhlLFNlKSl9''@;'; put 'put ''KGcsayxfLHAsdyk6cShnLGssXyxwLHcpfShILGxlLGFlLFcsYixBKTpILmlzU3ltYm9saWNMaW5rKCk/ZnVuY3Rpb24gdWUobGUsYWUsVyxiLEEpe0QucmVhZGxpbmsoYWUsKEYsSCk9PkY/QShGKTooYi5kZXJlZmVyZW5jZSYmKEg9VC5yZXNvbHZlKGouY3dkKCksSCkpLGxlP3ZvaWQgRC5y''@;'; put 'put ''ZWFkbGluayhXLChnLEMpPT5nPyJFSU5WQUwiPT09Zy5jb2RlfHwiVU5LTk9XTiI9PT1nLmNvZGU/RC5zeW1saW5rKEgsVyxBKTpBKGcpOihiLmRlcmVmZXJlbmNlJiYoQz1ULnJlc29sdmUoai5jd2QoKSxDKSksQi5pc1NyY1N1YmRpcihILEMpP0EobmV3IEVycm9yKGBDYW5ub3QgY29weSAn''@;'; put 'put ''JHtIfScgdG8gYSBzdWJkaXJlY3Rvcnkgb2YgaXRzZWxmLCAnJHtDfScuYCkpOmxlLmlzRGlyZWN0b3J5KCkmJkIuaXNTcmNTdWJkaXIoQyxIKT9BKG5ldyBFcnJvcihgQ2Fubm90IG92ZXJ3cml0ZSAnJHtDfScgd2l0aCAnJHtIfScuYCkpOmZ1bmN0aW9uKGssXyxwKXtELnVubGluayhfLHc9''@;'; put 'put ''Pnc/cCh3KTpELnN5bWxpbmsoayxfLHApKX0oSCxXLEEpKSk6RC5zeW1saW5rKEgsVyxBKSkpfShsZSxhZSxXLGIsQSk6SC5pc1NvY2tldCgpP0EobmV3IEVycm9yKGBDYW5ub3QgY29weSBhIHNvY2tldCBmaWxlOiAke2FlfWApKTpILmlzRklGTygpP0EobmV3IEVycm9yKGBDYW5ub3QgY29w''@;'; put 'put ''eSBhIEZJRk8gcGlwZTogJHthZX1gKSk6QShuZXcgRXJyb3IoYFVua25vd24gZmlsZTogJHthZX1gKSk7dmFyIGcsayxfLHAsdyxLLHRlLGNlLGhlLFNlfSl9ZnVuY3Rpb24gcShsZSxhZSxXLGIsQSl7RC5jb3B5RmlsZShhZSxXLEY9PntyZXR1cm4gRj9BKEYpOmIucHJlc2VydmVUaW1lc3Rh''@;'; put 'put ''bXBzPyhnPWFlLEM9VyxrPUEsMTI4JihIPWxlLm1vZGUpP0ooSCxnLEMsayk6ZWUoQywxMjh8SCxfPT5fP2soXyk6SihILGcsQyxrKSkpOmVlKFcsbGUubW9kZSxBKTt2YXIgSCxnLEMsa30pfWZ1bmN0aW9uIEoobGUsYWUsVyxiKXt2YXIgRixIO0Y9VyxIPUE9PkE/YihBKTplZShXLGxlLGIp''@;'; put 'put ''LEQuc3RhdChhZSwoZyxDKT0+Zz9IKGcpOk4oRixDLmF0aW1lLEMubXRpbWUsSCkpfWZ1bmN0aW9uIGVlKGxlLGFlLFcpe3JldHVybiBELmNobW9kKGxlLGFlLFcpfWZ1bmN0aW9uIHJlKGxlLGFlLFcsYil7RC5yZWFkZGlyKGxlLChBLEYpPT5BP2IoQSk6aWUoRixsZSxhZSxXLGIpKX1mdW5j''@;'; put 'put ''dGlvbiBpZShsZSxhZSxXLGIsQSl7Y29uc3QgRj1sZS5wb3AoKTtyZXR1cm4gRj9mdW5jdGlvbihILGcsQyxrLF8scCl7Y29uc3Qgdz1ULmpvaW4oQyxnKSxLPVQuam9pbihrLGcpO0IuY2hlY2tQYXRocyh3LEssImNvcHkiLF8sKHRlLGNlKT0+e2lmKHRlKXJldHVybiBwKHRlKTtjb25zdHtk''@;'; put 'put ''ZXN0U3RhdDpoZX09Y2U7dmFyIFNlLExlLEhlLHhlLERlO1NlPWhlLExlPXcsSGU9SyxEZT1TZT0+U2U/cChTZSk6aWUoSCxDLGssXyxwKSwoeGU9XykuZmlsdGVyP1koVSxTZSxMZSxIZSx4ZSxEZSk6VShTZSxMZSxIZSx4ZSxEZSl9KX0obGUsRixhZSxXLGIsQSk6QSgpfU0uZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbihsZSxhZSxXLGIpeyJmdW5jdGlvbiIhPXR5cGVvZiBXfHxiPyJmdW5jdGlvbiI9PXR5cGVvZiBXJiYoVz17ZmlsdGVyOld9KTooYj1XLFc9e30pLGI9Ynx8ZnVuY3Rpb24oKXt9LChXPVd8fHt9KS5jbG9iYmVyPSEoImNsb2JiZXIiaW4gVyl8fCEhVy5jbG9iYmVyLFcub3Zlcndy''@;'; put 'put ''aXRlPSJvdmVyd3JpdGUiaW4gVz8hIVcub3ZlcndyaXRlOlcuY2xvYmJlcixXLnByZXNlcnZlVGltZXN0YW1wcyYmImlhMzIiPT09ai5hcmNoJiZHLndhcm4oImZzLWV4dHJhOiBVc2luZyB0aGUgcHJlc2VydmVUaW1lc3RhbXBzIG9wdGlvbiBpbiAzMi1iaXQgbm9kZSBpcyBub3QgcmVjb21t''@;'; put 'put ''ZW5kZWQ7XG5cbiAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFyZHNvbi9ub2RlLWZzLWV4dHJhL2lzc3Vlcy8yNjkiKSxCLmNoZWNrUGF0aHMobGUsYWUsImNvcHkiLFcsKEEsRik9PntpZihBKXJldHVybiBiKEEpO2NvbnN0e3NyY1N0YXQ6SCxkZXN0U3RhdDpnfT1GO0IuY2hl''@;'; put 'put ''Y2tQYXJlbnRQYXRocyhsZSxILGFlLCJjb3B5IixDPT5DP2IoQyk6Vy5maWx0ZXI/WShaLGcsbGUsYWUsVyxiKTpaKGcsbGUsYWUsVyxiKSl9KX19LDY0NjQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBqPUkoODk4MSkuZnJvbUNhbGxiYWNrO00uZXhwb3J0cz17Y29weTpqKEkoNzE4''@;'; put 'put ''OSkpfX0sNTU5MDooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg4OTgxKS5mcm9tUHJvbWlzZSxHPUkoNzc0OSksRD1JKDI1MjApLFQ9SSgxMzgxKSxFPUkoNDU0Miksej1qKGZ1bmN0aW9uKCl7dmFyIEI9b2UoZnVuY3Rpb24qKFope2xldCBZO3RyeXtZPXlpZWxkIEcucmVhZGRp''@;'; put 'put ''cihaKX1jYXRjaHtyZXR1cm4gVC5ta2RpcnMoWil9cmV0dXJuIFByb21pc2UuYWxsKFkubWFwKFU9PkUucmVtb3ZlKEQuam9pbihaLFUpKSkpfSk7cmV0dXJuIGZ1bmN0aW9uKFope3JldHVybiBCLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkpO2Z1bmN0aW9uIE4oQil7bGV0IFo7dHJ5e1o9''@;'; put 'put ''Ry5yZWFkZGlyU3luYyhCKX1jYXRjaHtyZXR1cm4gVC5ta2RpcnNTeW5jKEIpfVouZm9yRWFjaChZPT57WT1ELmpvaW4oQixZKSxFLnJlbW92ZVN5bmMoWSl9KX1NLmV4cG9ydHM9e2VtcHR5RGlyU3luYzpOLGVtcHR5ZGlyU3luYzpOLGVtcHR5RGlyOnosZW1wdHlkaXI6en19LDY1MzA6KE0s''@;'; put 'put ''TyxJKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBqPUkoODk4MSkuZnJvbUNhbGxiYWNrLEc9SSgyNTIwKSxEPUkoNzcpLFQ9SSgxMzgxKTtNLmV4cG9ydHM9e2NyZWF0ZUZpbGU6aihmdW5jdGlvbihFLHope2Z1bmN0aW9uIE4oKXtELndyaXRlRmlsZShFLCIiLEI9PntpZihCKXJldHVybiB6KEIp''@;'; put 'put ''O3ooKX0pfUQuc3RhdChFLChCLFopPT57aWYoIUImJlouaXNGaWxlKCkpcmV0dXJuIHooKTtjb25zdCBZPUcuZGlybmFtZShFKTtELnN0YXQoWSwoVSxxKT0+e2lmKFUpcmV0dXJuIkVOT0VOVCI9PT1VLmNvZGU/VC5ta2RpcnMoWSxKPT57aWYoSilyZXR1cm4geihKKTtOKCl9KTp6KFUpO3Eu''@;'; put 'put ''aXNEaXJlY3RvcnkoKT9OKCk6RC5yZWFkZGlyKFksSj0+e2lmKEopcmV0dXJuIHooSil9KX0pfSl9KSxjcmVhdGVGaWxlU3luYzpmdW5jdGlvbihFKXtsZXQgejt0cnl7ej1ELnN0YXRTeW5jKEUpfWNhdGNoe31pZih6JiZ6LmlzRmlsZSgpKXJldHVybjtjb25zdCBOPUcuZGlybmFtZShFKTt0''@;'; put 'put ''cnl7RC5zdGF0U3luYyhOKS5pc0RpcmVjdG9yeSgpfHxELnJlYWRkaXJTeW5jKE4pfWNhdGNoKEIpe2lmKCFCfHwiRU5PRU5UIiE9PUIuY29kZSl0aHJvdyBCO1QubWtkaXJzU3luYyhOKX1ELndyaXRlRmlsZVN5bmMoRSwiIil9fX0sMTcyMDooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0''@;'; put 'put ''IGo9SSg2NTMwKSxHPUkoNDE0NyksRD1JKDM2MzUpO00uZXhwb3J0cz17Y3JlYXRlRmlsZTpqLmNyZWF0ZUZpbGUsY3JlYXRlRmlsZVN5bmM6ai5jcmVhdGVGaWxlU3luYyxlbnN1cmVGaWxlOmouY3JlYXRlRmlsZSxlbnN1cmVGaWxlU3luYzpqLmNyZWF0ZUZpbGVTeW5jLGNyZWF0ZUxpbms6''@;'; put 'put ''Ry5jcmVhdGVMaW5rLGNyZWF0ZUxpbmtTeW5jOkcuY3JlYXRlTGlua1N5bmMsZW5zdXJlTGluazpHLmNyZWF0ZUxpbmssZW5zdXJlTGlua1N5bmM6Ry5jcmVhdGVMaW5rU3luYyxjcmVhdGVTeW1saW5rOkQuY3JlYXRlU3ltbGluayxjcmVhdGVTeW1saW5rU3luYzpELmNyZWF0ZVN5bWxpbmtT''@;'; put 'put ''eW5jLGVuc3VyZVN5bWxpbms6RC5jcmVhdGVTeW1saW5rLGVuc3VyZVN5bWxpbmtTeW5jOkQuY3JlYXRlU3ltbGlua1N5bmN9fSw0MTQ3OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDg5ODEpLmZyb21DYWxsYmFjayxHPUkoMjUyMCksRD1JKDc3KSxUPUkoMTM4MSksRT1JKDky''@;'; put 'put ''NTcpLnBhdGhFeGlzdHMse2FyZUlkZW50aWNhbDp6fT1JKDI3MzMpO00uZXhwb3J0cz17Y3JlYXRlTGluazpqKGZ1bmN0aW9uKE4sQixaKXtmdW5jdGlvbiBZKFUscSl7RC5saW5rKFUscSxKPT57aWYoSilyZXR1cm4gWihKKTtaKG51bGwpfSl9RC5sc3RhdChCLChVLHEpPT57RC5sc3RhdChO''@;'; put 'put ''LChKLGVlKT0+e2lmKEopcmV0dXJuIEoubWVzc2FnZT1KLm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVMaW5rIiksWihKKTtpZihxJiZ6KGVlLHEpKXJldHVybiBaKG51bGwpO2NvbnN0IHJlPUcuZGlybmFtZShCKTtFKHJlLChpZSx1ZSk9PmllP1ooaWUpOnVlP1koTixCKTp2b2lk''@;'; put 'put ''IFQubWtkaXJzKHJlLGxlPT57aWYobGUpcmV0dXJuIFoobGUpO1koTixCKX0pKX0pfSl9KSxjcmVhdGVMaW5rU3luYzpmdW5jdGlvbihOLEIpe2xldCBaO3RyeXtaPUQubHN0YXRTeW5jKEIpfWNhdGNoe310cnl7Y29uc3QgVT1ELmxzdGF0U3luYyhOKTtpZihaJiZ6KFUsWikpcmV0dXJufWNh''@;'; put 'put ''dGNoKFUpe3Rocm93IFUubWVzc2FnZT1VLm1lc3NhZ2UucmVwbGFjZSgibHN0YXQiLCJlbnN1cmVMaW5rIiksVX1jb25zdCBZPUcuZGlybmFtZShCKTtyZXR1cm4gRC5leGlzdHNTeW5jKFkpfHxULm1rZGlyc1N5bmMoWSksRC5saW5rU3luYyhOLEIpfX19LDYwNzI6KE0sTyxJKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijtjb25zdCBqPUkoMjUyMCksRz1JKDc3KSxEPUkoOTI1NykucGF0aEV4aXN0cztNLmV4cG9ydHM9e3N5bWxpbmtQYXRoczpmdW5jdGlvbihULEUseil7aWYoai5pc0Fic29sdXRlKFQpKXJldHVybiBHLmxzdGF0KFQsTj0+Tj8oTi5tZXNzYWdlPU4ubWVzc2FnZS5yZXBsYWNlKCJs''@;'; put 'put ''c3RhdCIsImVuc3VyZVN5bWxpbmsiKSx6KE4pKTp6KG51bGwse3RvQ3dkOlQsdG9Ec3Q6VH0pKTt7Y29uc3QgTj1qLmRpcm5hbWUoRSksQj1qLmpvaW4oTixUKTtyZXR1cm4gRChCLChaLFkpPT5aP3ooWik6WT96KG51bGwse3RvQ3dkOkIsdG9Ec3Q6VH0pOkcubHN0YXQoVCxVPT5VPyhVLm1l''@;'; put 'put ''c3NhZ2U9VS5tZXNzYWdlLnJlcGxhY2UoImxzdGF0IiwiZW5zdXJlU3ltbGluayIpLHooVSkpOnoobnVsbCx7dG9Dd2Q6VCx0b0RzdDpqLnJlbGF0aXZlKE4sVCl9KSkpfX0sc3ltbGlua1BhdGhzU3luYzpmdW5jdGlvbihULEUpe2xldCB6O2lmKGouaXNBYnNvbHV0ZShUKSl7aWYoej1HLmV4''@;'; put 'put ''aXN0c1N5bmMoVCksIXopdGhyb3cgbmV3IEVycm9yKCJhYnNvbHV0ZSBzcmNwYXRoIGRvZXMgbm90IGV4aXN0Iik7cmV0dXJue3RvQ3dkOlQsdG9Ec3Q6VH19e2NvbnN0IE49ai5kaXJuYW1lKEUpLEI9ai5qb2luKE4sVCk7aWYoej1HLmV4aXN0c1N5bmMoQikseilyZXR1cm57dG9Dd2Q6Qix0''@;'; put 'put ''b0RzdDpUfTtpZih6PUcuZXhpc3RzU3luYyhUKSwheil0aHJvdyBuZXcgRXJyb3IoInJlbGF0aXZlIHNyY3BhdGggZG9lcyBub3QgZXhpc3QiKTtyZXR1cm57dG9Dd2Q6VCx0b0RzdDpqLnJlbGF0aXZlKE4sVCl9fX19fSw5MjU5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDc3''@;'; put 'put ''KTtNLmV4cG9ydHM9e3N5bWxpbmtUeXBlOmZ1bmN0aW9uKEcsRCxUKXtpZihUPSJmdW5jdGlvbiI9PXR5cGVvZiBEP0Q6VCxEPSJmdW5jdGlvbiIhPXR5cGVvZiBEJiZEKXJldHVybiBUKG51bGwsRCk7ai5sc3RhdChHLChFLHopPT57aWYoRSlyZXR1cm4gVChudWxsLCJmaWxlIik7RD16JiZ6''@;'; put 'put ''LmlzRGlyZWN0b3J5KCk/ImRpciI6ImZpbGUiLFQobnVsbCxEKX0pfSxzeW1saW5rVHlwZVN5bmM6ZnVuY3Rpb24oRyxEKXtsZXQgVDtpZihEKXJldHVybiBEO3RyeXtUPWoubHN0YXRTeW5jKEcpfWNhdGNoe3JldHVybiJmaWxlIn1yZXR1cm4gVCYmVC5pc0RpcmVjdG9yeSgpPyJkaXIiOiJm''@;'; put 'put ''aWxlIn19fSwzNjM1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDg5ODEpLmZyb21DYWxsYmFjayxHPUkoMjUyMCksRD1JKDc3NDkpLFQ9SSgxMzgxKSxFPVQubWtkaXJzLHo9VC5ta2RpcnNTeW5jLE49SSg2MDcyKSxCPU4uc3ltbGlua1BhdGhzLFo9Ti5zeW1saW5rUGF0aHNT''@;'; put 'put ''eW5jLFk9SSg5MjU5KSxVPVkuc3ltbGlua1R5cGUscT1ZLnN5bWxpbmtUeXBlU3luYyxKPUkoOTI1NykucGF0aEV4aXN0cyx7YXJlSWRlbnRpY2FsOmVlfT1JKDI3MzMpO2Z1bmN0aW9uIHJlKGllLHVlLGxlLGFlKXtCKGllLHVlLChXLGIpPT57aWYoVylyZXR1cm4gYWUoVyk7aWU9Yi50b0Rz''@;'; put 'put ''dCxVKGIudG9Dd2QsbGUsKEEsRik9PntpZihBKXJldHVybiBhZShBKTtjb25zdCBIPUcuZGlybmFtZSh1ZSk7SihILChnLEMpPT5nP2FlKGcpOkM/RC5zeW1saW5rKGllLHVlLEYsYWUpOnZvaWQgRShILGs9PntpZihrKXJldHVybiBhZShrKTtELnN5bWxpbmsoaWUsdWUsRixhZSl9KSl9KX0p''@;'; put 'put ''fU0uZXhwb3J0cz17Y3JlYXRlU3ltbGluazpqKGZ1bmN0aW9uKGllLHVlLGxlLGFlKXthZT0iZnVuY3Rpb24iPT10eXBlb2YgbGU/bGU6YWUsbGU9ImZ1bmN0aW9uIiE9dHlwZW9mIGxlJiZsZSxELmxzdGF0KHVlLChXLGIpPT57IVcmJmIuaXNTeW1ib2xpY0xpbmsoKT9Qcm9taXNlLmFsbChb''@;'; put 'put ''RC5zdGF0KGllKSxELnN0YXQodWUpXSkudGhlbigoW0EsRl0pPT57aWYoZWUoQSxGKSlyZXR1cm4gYWUobnVsbCk7cmUoaWUsdWUsbGUsYWUpfSk6cmUoaWUsdWUsbGUsYWUpfSl9KSxjcmVhdGVTeW1saW5rU3luYzpmdW5jdGlvbihpZSx1ZSxsZSl7bGV0IGFlO3RyeXthZT1ELmxzdGF0U3lu''@;'; put 'put ''Yyh1ZSl9Y2F0Y2h7fWlmKGFlJiZhZS5pc1N5bWJvbGljTGluaygpKXtjb25zdCBBPUQuc3RhdFN5bmMoaWUpLEY9RC5zdGF0U3luYyh1ZSk7aWYoZWUoQSxGKSlyZXR1cm59Y29uc3QgVz1aKGllLHVlKTtpZT1XLnRvRHN0LGxlPXEoVy50b0N3ZCxsZSk7Y29uc3QgYj1HLmRpcm5hbWUodWUp''@;'; put 'put ''O3JldHVybiBELmV4aXN0c1N5bmMoYil8fHooYiksRC5zeW1saW5rU3luYyhpZSx1ZSxsZSl9fX0sNzc0OTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg4OTgxKS5mcm9tQ2FsbGJhY2ssRz1JKDc3KSxEPVsiYWNjZXNzIiwiYXBwZW5kRmlsZSIsImNobW9kIiwiY2hvd24iLCJj''@;'; put 'put ''bG9zZSIsImNvcHlGaWxlIiwiZmNobW9kIiwiZmNob3duIiwiZmRhdGFzeW5jIiwiZnN0YXQiLCJmc3luYyIsImZ0cnVuY2F0ZSIsImZ1dGltZXMiLCJsY2htb2QiLCJsY2hvd24iLCJsaW5rIiwibHN0YXQiLCJta2RpciIsIm1rZHRlbXAiLCJvcGVuIiwib3BlbmRpciIsInJlYWRkaXIiLCJy''@;'; put 'put ''ZWFkRmlsZSIsInJlYWRsaW5rIiwicmVhbHBhdGgiLCJyZW5hbWUiLCJybSIsInJtZGlyIiwic3RhdCIsInN5bWxpbmsiLCJ0cnVuY2F0ZSIsInVubGluayIsInV0aW1lcyIsIndyaXRlRmlsZSJdLmZpbHRlcihUPT4iZnVuY3Rpb24iPT10eXBlb2YgR1tUXSk7T2JqZWN0LmFzc2lnbihPLEcp''@;'; put 'put ''LEQuZm9yRWFjaChUPT57T1tUXT1qKEdbVF0pfSksTy5yZWFscGF0aC5uYXRpdmU9aihHLnJlYWxwYXRoLm5hdGl2ZSksTy5leGlzdHM9ZnVuY3Rpb24oVCxFKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgRT9HLmV4aXN0cyhULEUpOm5ldyBQcm9taXNlKHo9PkcuZXhpc3RzKFQseikpfSxP''@;'; put 'put ''LnJlYWQ9ZnVuY3Rpb24oVCxFLHosTixCLFope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBaP0cucmVhZChULEUseixOLEIsWik6bmV3IFByb21pc2UoKFksVSk9PntHLnJlYWQoVCxFLHosTixCLChxLEosZWUpPT57aWYocSlyZXR1cm4gVShxKTtZKHtieXRlc1JlYWQ6SixidWZmZXI6ZWV9''@;'; put 'put ''KX0pfSl9LE8ud3JpdGU9ZnVuY3Rpb24oVCxFLC4uLnope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB6W3oubGVuZ3RoLTFdP0cud3JpdGUoVCxFLC4uLnopOm5ldyBQcm9taXNlKChOLEIpPT57Ry53cml0ZShULEUsLi4ueiwoWixZLFUpPT57aWYoWilyZXR1cm4gQihaKTtOKHtieXRlc1dy''@;'; put 'put ''aXR0ZW46WSxidWZmZXI6VX0pfSl9KX0sImZ1bmN0aW9uIj09dHlwZW9mIEcud3JpdGV2JiYoTy53cml0ZXY9ZnVuY3Rpb24oVCxFLC4uLnope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB6W3oubGVuZ3RoLTFdP0cud3JpdGV2KFQsRSwuLi56KTpuZXcgUHJvbWlzZSgoTixCKT0+e0cud3Jp''@;'; put 'put ''dGV2KFQsRSwuLi56LChaLFksVSk9PntpZihaKXJldHVybiBCKFopO04oe2J5dGVzV3JpdHRlbjpZLGJ1ZmZlcnM6VX0pfSl9KX0pfSw1Njc0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPXsuLi5JKDc3NDkpLC4uLkkoODY5MCksLi4uSSg2NDY0KSwuLi5JKDU1OTApLC4uLkko''@;'; put 'put ''MTcyMCksLi4uSSg2NTczKSwuLi5JKDEzODEpLC4uLkkoNDAyNiksLi4uSSg1MzApLC4uLkkoMTMxNSksLi4uSSg5MjU3KSwuLi5JKDQ1NDIpfX0sNjU3MzooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg4OTgxKS5mcm9tUHJvbWlzZSxHPUkoNzE4Myk7Ry5vdXRwdXRKc29uPWoo''@;'; put 'put ''SSgzNTA4KSksRy5vdXRwdXRKc29uU3luYz1JKDk1NzgpLEcub3V0cHV0SlNPTj1HLm91dHB1dEpzb24sRy5vdXRwdXRKU09OU3luYz1HLm91dHB1dEpzb25TeW5jLEcud3JpdGVKU09OPUcud3JpdGVKc29uLEcud3JpdGVKU09OU3luYz1HLndyaXRlSnNvblN5bmMsRy5yZWFkSlNPTj1HLnJl''@;'; put 'put ''YWRKc29uLEcucmVhZEpTT05TeW5jPUcucmVhZEpzb25TeW5jLE0uZXhwb3J0cz1HfSw3MTgzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDY4MTMpO00uZXhwb3J0cz17cmVhZEpzb246ai5yZWFkRmlsZSxyZWFkSnNvblN5bmM6ai5yZWFkRmlsZVN5bmMsd3JpdGVKc29uOmou''@;'; put 'put ''d3JpdGVGaWxlLHdyaXRlSnNvblN5bmM6ai53cml0ZUZpbGVTeW5jfX0sOTU3ODooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0e3N0cmluZ2lmeTpqfT1JKDY3ODApLHtvdXRwdXRGaWxlU3luYzpHfT1JKDEzMTUpO00uZXhwb3J0cz1mdW5jdGlvbihELFQsRSl7Y29uc3Qgej1qKFQsRSk7''@;'; put 'put ''RyhELHosRSl9fSwzNTA4OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3R7c3RyaW5naWZ5Omp9PUkoNjc4MCkse291dHB1dEZpbGU6R309SSgxMzE1KTtNLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgRD1vZShmdW5jdGlvbiooVCxFLHo9e30pe2NvbnN0IE49aihFLHopO3lpZWxkIEcoVCxO''@;'; put 'put ''LHopfSk7cmV0dXJuIGZ1bmN0aW9uKFQsRSl7cmV0dXJuIEQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0sMTM4MTooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg4OTgxKS5mcm9tUHJvbWlzZSx7bWFrZURpcjpHLG1ha2VEaXJTeW5jOkR9PUkoODIzMyksVD1qKEcpO00uZXhw''@;'; put 'put ''b3J0cz17bWtkaXJzOlQsbWtkaXJzU3luYzpELG1rZGlycDpULG1rZGlycFN5bmM6RCxlbnN1cmVEaXI6VCxlbnN1cmVEaXJTeW5jOkR9fSw4MjMzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDc3NDkpLHtjaGVja1BhdGg6R309SSgzNDY4KSxEPVQ9PiJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgVD9UOnttb2RlOjUxMSwuLi5UfS5tb2RlO00uZXhwb3J0cy5tYWtlRGlyPWZ1bmN0aW9uKCl7dmFyIFQ9b2UoZnVuY3Rpb24qKEUseil7cmV0dXJuIEcoRSksai5ta2RpcihFLHttb2RlOkQoeikscmVjdXJzaXZlOiEwfSl9KTtyZXR1cm4gZnVuY3Rpb24oRSx6KXtyZXR1cm4gVC5hcHBs''@;'; put 'put ''eSh0aGlzLGFyZ3VtZW50cyl9fSgpLE0uZXhwb3J0cy5tYWtlRGlyU3luYz0oVCxFKT0+KEcoVCksai5ta2RpclN5bmMoVCx7bW9kZTpEKEUpLHJlY3Vyc2l2ZTohMH0pKX0sMzQ2ODooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSk7Y29uc3QgRz1JKDI1MjApO00uZXhwb3J0''@;'; put 'put ''cy5jaGVja1BhdGg9ZnVuY3Rpb24oRCl7aWYoIndpbjMyIj09PWoucGxhdGZvcm0mJi9bPD46Inw/Kl0vLnRlc3QoRC5yZXBsYWNlKEcucGFyc2UoRCkucm9vdCwiIikpKXtjb25zdCBUPW5ldyBFcnJvcihgUGF0aCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6ICR7RH1gKTt0aHJvdyBU''@;'; put 'put ''LmNvZGU9IkVJTlZBTCIsVH19fSw0MDI2OihNLE8sSSk9PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPXttb3ZlU3luYzpJKDYwMDYpfX0sNjAwNjooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg3NyksRz1JKDI1MjApLEQ9SSg4NjkwKS5jb3B5U3luYyxUPUkoNDU0MikucmVtb3Zl''@;'; put 'put ''U3luYyxFPUkoMTM4MSkubWtkaXJwU3luYyx6PUkoMjczMyk7ZnVuY3Rpb24gTihCLFosWSl7dHJ5e2oucmVuYW1lU3luYyhCLFopfWNhdGNoKFUpe2lmKCJFWERFViIhPT1VLmNvZGUpdGhyb3cgVTtyZXR1cm4gRChxPUIsWix7b3ZlcndyaXRlOlksZXJyb3JPbkV4aXN0OiEwfSksVChxKX12''@;'; put 'put ''YXIgcX1NLmV4cG9ydHM9ZnVuY3Rpb24oQixaLFkpe2NvbnN0IFU9KFk9WXx8e30pLm92ZXJ3cml0ZXx8WS5jbG9iYmVyfHwhMSx7c3JjU3RhdDpxLGlzQ2hhbmdpbmdDYXNlOko9ITF9PXouY2hlY2tQYXRoc1N5bmMoQixaLCJtb3ZlIixZKTtyZXR1cm4gei5jaGVja1BhcmVudFBhdGhzU3lu''@;'; put 'put ''YyhCLHEsWiwibW92ZSIpLGZ1bmN0aW9uKGVlKXtjb25zdCByZT1HLmRpcm5hbWUoZWUpO3JldHVybiBHLnBhcnNlKHJlKS5yb290PT09cmV9KFopfHxFKEcuZGlybmFtZShaKSksZnVuY3Rpb24oZWUscmUsaWUsdWUpe2lmKHVlKXJldHVybiBOKGVlLHJlLGllKTtpZihpZSlyZXR1cm4gVChy''@;'; put 'put ''ZSksTihlZSxyZSxpZSk7aWYoai5leGlzdHNTeW5jKHJlKSl0aHJvdyBuZXcgRXJyb3IoImRlc3QgYWxyZWFkeSBleGlzdHMuIik7cmV0dXJuIE4oZWUscmUsaWUpfShCLFosVSxKKX19LDUzMDooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg4OTgxKS5mcm9tQ2FsbGJhY2s7TS5l''@;'; put 'put ''eHBvcnRzPXttb3ZlOmooSSg0MzYpKX19LDQzNjooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg3NyksRz1JKDI1MjApLEQ9SSg2NDY0KS5jb3B5LFQ9SSg0NTQyKS5yZW1vdmUsRT1JKDEzODEpLm1rZGlycCx6PUkoOTI1NykucGF0aEV4aXN0cyxOPUkoMjczMyk7ZnVuY3Rpb24g''@;'; put 'put ''QihZLFUscSxKLGVlKXtyZXR1cm4gSj9aKFksVSxxLGVlKTpxP1QoVSxyZT0+cmU/ZWUocmUpOlooWSxVLHEsZWUpKTp2b2lkIHooVSwocmUsaWUpPT5yZT9lZShyZSk6aWU/ZWUobmV3IEVycm9yKCJkZXN0IGFscmVhZHkgZXhpc3RzLiIpKTpaKFksVSxxLGVlKSl9ZnVuY3Rpb24gWihZLFUs''@;'; put 'put ''cSxKKXtqLnJlbmFtZShZLFUsZWU9PntyZXR1cm4gZWU/IkVYREVWIiE9PWVlLmNvZGU/SihlZSk6KGxlPUosdm9pZCBEKHJlPVksVSx7b3ZlcndyaXRlOnEsZXJyb3JPbkV4aXN0OiEwfSxXPT5XP2xlKFcpOlQocmUsbGUpKSk6SigpO3ZhciByZSxsZX0pfU0uZXhwb3J0cz1mdW5jdGlvbihZ''@;'; put 'put ''LFUscSxKKXsiZnVuY3Rpb24iPT10eXBlb2YgcSYmKEo9cSxxPXt9KTtjb25zdCBlZT1xLm92ZXJ3cml0ZXx8cS5jbG9iYmVyfHwhMTtOLmNoZWNrUGF0aHMoWSxVLCJtb3ZlIixxLChyZSxpZSk9PntpZihyZSlyZXR1cm4gSihyZSk7Y29uc3R7c3JjU3RhdDp1ZSxpc0NoYW5naW5nQ2FzZTps''@;'; put 'put ''ZT0hMX09aWU7Ti5jaGVja1BhcmVudFBhdGhzKFksdWUsVSwibW92ZSIsYWU9PmFlP0ooYWUpOmZ1bmN0aW9uKFcpe2NvbnN0IGI9Ry5kaXJuYW1lKFcpO3JldHVybiBHLnBhcnNlKGIpLnJvb3Q9PT1ifShVKT9CKFksVSxlZSxsZSxKKTp2b2lkIEUoRy5kaXJuYW1lKFUpLFc9Plc/SihXKTpC''@;'; put 'put ''KFksVSxlZSxsZSxKKSkpfSl9fSwxMzE1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDg5ODEpLmZyb21DYWxsYmFjayxHPUkoNzcpLEQ9SSgyNTIwKSxUPUkoMTM4MSksRT1JKDkyNTcpLnBhdGhFeGlzdHM7TS5leHBvcnRzPXtvdXRwdXRGaWxlOmooZnVuY3Rpb24oeixOLEIs''@;'; put 'put ''Wil7ImZ1bmN0aW9uIj09dHlwZW9mIEImJihaPUIsQj0idXRmOCIpO2NvbnN0IFk9RC5kaXJuYW1lKHopO0UoWSwoVSxxKT0+VT9aKFUpOnE/Ry53cml0ZUZpbGUoeixOLEIsWik6dm9pZCBULm1rZGlycyhZLEo9PntpZihKKXJldHVybiBaKEopO0cud3JpdGVGaWxlKHosTixCLFopfSkpfSks''@;'; put 'put ''b3V0cHV0RmlsZVN5bmM6ZnVuY3Rpb24oeiwuLi5OKXtjb25zdCBCPUQuZGlybmFtZSh6KTtpZihHLmV4aXN0c1N5bmMoQikpcmV0dXJuIEcud3JpdGVGaWxlU3luYyh6LC4uLk4pO1QubWtkaXJzU3luYyhCKSxHLndyaXRlRmlsZVN5bmMoeiwuLi5OKX19fSw5MjU3OihNLE8sSSk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7Y29uc3Qgaj1JKDg5ODEpLmZyb21Qcm9taXNlLEc9SSg3NzQ5KTtNLmV4cG9ydHM9e3BhdGhFeGlzdHM6aihmdW5jdGlvbihEKXtyZXR1cm4gRy5hY2Nlc3MoRCkudGhlbigoKT0+ITApLmNhdGNoKCgpPT4hMSl9KSxwYXRoRXhpc3RzU3luYzpHLmV4aXN0c1N5bmN9fSw0NTQy''@;'; put 'put ''OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDc3KSxHPUkoODk4MSkuZnJvbUNhbGxiYWNrLEQ9SSgzNDU2KTtNLmV4cG9ydHM9e3JlbW92ZTpHKGZ1bmN0aW9uKFQsRSl7aWYoai5ybSlyZXR1cm4gai5ybShULHtyZWN1cnNpdmU6ITAsZm9yY2U6ITB9LEUpO0QoVCxFKX0pLHJl''@;'; put 'put ''bW92ZVN5bmM6ZnVuY3Rpb24oVCl7aWYoai5ybVN5bmMpcmV0dXJuIGoucm1TeW5jKFQse3JlY3Vyc2l2ZTohMCxmb3JjZTohMH0pO0Quc3luYyhUKX19fSwzNDU2OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KTtjb25zdCBHPUkoNzcpLEQ9SSgyNTIwKSxUPUkoOTI4Miks''@;'; put 'put ''RT0id2luMzIiPT09ai5wbGF0Zm9ybTtmdW5jdGlvbiB6KGVlKXtbInVubGluayIsImNobW9kIiwic3RhdCIsImxzdGF0Iiwicm1kaXIiLCJyZWFkZGlyIl0uZm9yRWFjaChyZT0+e2VlW3JlXT1lZVtyZV18fEdbcmVdLGVlW3JlKz0iU3luYyJdPWVlW3JlXXx8R1tyZV19KSxlZS5tYXhCdXN5''@;'; put 'put ''VHJpZXM9ZWUubWF4QnVzeVRyaWVzfHwzfWZ1bmN0aW9uIE4oZWUscmUsaWUpe2xldCB1ZT0wOyJmdW5jdGlvbiI9PXR5cGVvZiByZSYmKGllPXJlLHJlPXt9KSxUKGVlLCJyaW1yYWY6IG1pc3NpbmcgcGF0aCIpLFQuc3RyaWN0RXF1YWwodHlwZW9mIGVlLCJzdHJpbmciLCJyaW1yYWY6IHBh''@;'; put 'put ''dGggc2hvdWxkIGJlIGEgc3RyaW5nIiksVC5zdHJpY3RFcXVhbCh0eXBlb2YgaWUsImZ1bmN0aW9uIiwicmltcmFmOiBjYWxsYmFjayBmdW5jdGlvbiByZXF1aXJlZCIpLFQocmUsInJpbXJhZjogaW52YWxpZCBvcHRpb25zIGFyZ3VtZW50IHByb3ZpZGVkIiksVC5zdHJpY3RFcXVhbCh0eXBl''@;'; put 'put ''b2YgcmUsIm9iamVjdCIsInJpbXJhZjogb3B0aW9ucyBzaG91bGQgYmUgb2JqZWN0IikseihyZSksQihlZSxyZSxmdW5jdGlvbiBsZShhZSl7aWYoYWUpe2lmKCgiRUJVU1kiPT09YWUuY29kZXx8IkVOT1RFTVBUWSI9PT1hZS5jb2RlfHwiRVBFUk0iPT09YWUuY29kZSkmJnVlPHJlLm1heEJ1''@;'; put 'put ''c3lUcmllcylyZXR1cm4gdWUrKyxzZXRUaW1lb3V0KCgpPT5CKGVlLHJlLGxlKSwxMDAqdWUpOyJFTk9FTlQiPT09YWUuY29kZSYmKGFlPW51bGwpfWllKGFlKX0pfWZ1bmN0aW9uIEIoZWUscmUsaWUpe1QoZWUpLFQocmUpLFQoImZ1bmN0aW9uIj09dHlwZW9mIGllKSxyZS5sc3RhdChlZSwo''@;'; put 'put ''dWUsbGUpPT51ZSYmIkVOT0VOVCI9PT11ZS5jb2RlP2llKG51bGwpOnVlJiYiRVBFUk0iPT09dWUuY29kZSYmRT9aKGVlLHJlLHVlLGllKTpsZSYmbGUuaXNEaXJlY3RvcnkoKT9VKGVlLHJlLHVlLGllKTp2b2lkIHJlLnVubGluayhlZSxhZT0+e2lmKGFlKXtpZigiRU5PRU5UIj09PWFlLmNv''@;'; put 'put ''ZGUpcmV0dXJuIGllKG51bGwpO2lmKCJFUEVSTSI9PT1hZS5jb2RlKXJldHVybiBFP1ooZWUscmUsYWUsaWUpOlUoZWUscmUsYWUsaWUpO2lmKCJFSVNESVIiPT09YWUuY29kZSlyZXR1cm4gVShlZSxyZSxhZSxpZSl9cmV0dXJuIGllKGFlKX0pKX1mdW5jdGlvbiBaKGVlLHJlLGllLHVlKXtU''@;'; put 'put ''KGVlKSxUKHJlKSxUKCJmdW5jdGlvbiI9PXR5cGVvZiB1ZSkscmUuY2htb2QoZWUsNDM4LGxlPT57bGU/dWUoIkVOT0VOVCI9PT1sZS5jb2RlP251bGw6aWUpOnJlLnN0YXQoZWUsKGFlLFcpPT57YWU/dWUoIkVOT0VOVCI9PT1hZS5jb2RlP251bGw6aWUpOlcuaXNEaXJlY3RvcnkoKT9VKGVl''@;'; put 'put ''LHJlLGllLHVlKTpyZS51bmxpbmsoZWUsdWUpfSl9KX1mdW5jdGlvbiBZKGVlLHJlLGllKXtsZXQgdWU7VChlZSksVChyZSk7dHJ5e3JlLmNobW9kU3luYyhlZSw0MzgpfWNhdGNoKGxlKXtpZigiRU5PRU5UIj09PWxlLmNvZGUpcmV0dXJuO3Rocm93IGllfXRyeXt1ZT1yZS5zdGF0U3luYyhl''@;'; put 'put ''ZSl9Y2F0Y2gobGUpe2lmKCJFTk9FTlQiPT09bGUuY29kZSlyZXR1cm47dGhyb3cgaWV9dWUuaXNEaXJlY3RvcnkoKT9KKGVlLHJlLGllKTpyZS51bmxpbmtTeW5jKGVlKX1mdW5jdGlvbiBVKGVlLHJlLGllLHVlKXtUKGVlKSxUKHJlKSxUKCJmdW5jdGlvbiI9PXR5cGVvZiB1ZSkscmUucm1k''@;'; put 'put ''aXIoZWUsbGU9Pnt2YXIgYWUsVyxiOyFsZXx8IkVOT1RFTVBUWSIhPT1sZS5jb2RlJiYiRUVYSVNUIiE9PWxlLmNvZGUmJiJFUEVSTSIhPT1sZS5jb2RlP3VlKGxlJiYiRU5PVERJUiI9PT1sZS5jb2RlP2llOmxlKTooVz1yZSxiPXVlLFQoYWU9ZWUpLFQoVyksVCgiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgYiksVy5yZWFkZGlyKGFlLChBLEYpPT57aWYoQSlyZXR1cm4gYihBKTtsZXQgSCxnPUYubGVuZ3RoO2lmKDA9PT1nKXJldHVybiBXLnJtZGlyKGFlLGIpO0YuZm9yRWFjaChDPT57TihELmpvaW4oYWUsQyksVyxrPT57aWYoIUgpcmV0dXJuIGs/YihIPWspOnZvaWQoMD09LS1nJiZXLnJt''@;'; put 'put ''ZGlyKGFlLGIpKX0pfSl9KSl9KX1mdW5jdGlvbiBxKGVlLHJlKXtsZXQgaWU7eihyZT1yZXx8e30pLFQoZWUsInJpbXJhZjogbWlzc2luZyBwYXRoIiksVC5zdHJpY3RFcXVhbCh0eXBlb2YgZWUsInN0cmluZyIsInJpbXJhZjogcGF0aCBzaG91bGQgYmUgYSBzdHJpbmciKSxUKHJlLCJyaW1y''@;'; put 'put ''YWY6IG1pc3Npbmcgb3B0aW9ucyIpLFQuc3RyaWN0RXF1YWwodHlwZW9mIHJlLCJvYmplY3QiLCJyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpO3RyeXtpZT1yZS5sc3RhdFN5bmMoZWUpfWNhdGNoKHVlKXtpZigiRU5PRU5UIj09PXVlLmNvZGUpcmV0dXJuOyJFUEVSTSI9PT11''@;'; put 'put ''ZS5jb2RlJiZFJiZZKGVlLHJlLHVlKX10cnl7aWUmJmllLmlzRGlyZWN0b3J5KCk/SihlZSxyZSxudWxsKTpyZS51bmxpbmtTeW5jKGVlKX1jYXRjaCh1ZSl7aWYoIkVOT0VOVCI9PT11ZS5jb2RlKXJldHVybjtpZigiRVBFUk0iPT09dWUuY29kZSlyZXR1cm4gRT9ZKGVlLHJlLHVlKTpKKGVl''@;'; put 'put ''LHJlLHVlKTtpZigiRUlTRElSIiE9PXVlLmNvZGUpdGhyb3cgdWU7SihlZSxyZSx1ZSl9fWZ1bmN0aW9uIEooZWUscmUsaWUpe1QoZWUpLFQocmUpO3RyeXtyZS5ybWRpclN5bmMoZWUpfWNhdGNoKHVlKXtpZigiRU5PVERJUiI9PT11ZS5jb2RlKXRocm93IGllO2lmKCJFTk9URU1QVFkiPT09''@;'; put 'put ''dWUuY29kZXx8IkVFWElTVCI9PT11ZS5jb2RlfHwiRVBFUk0iPT09dWUuY29kZSkhZnVuY3Rpb24obGUsYWUpe2lmKFQobGUpLFQoYWUpLGFlLnJlYWRkaXJTeW5jKGxlKS5mb3JFYWNoKFc9PnEoRC5qb2luKGxlLFcpLGFlKSksIUUpcmV0dXJuIGFlLnJtZGlyU3luYyhsZSxhZSk7e2NvbnN0''@;'; put 'put ''IFc9RGF0ZS5ub3coKTtkb3t0cnl7cmV0dXJuIGFlLnJtZGlyU3luYyhsZSxhZSl9Y2F0Y2h7fX13aGlsZShEYXRlLm5vdygpLVc8NTAwKX19KGVlLHJlKTtlbHNlIGlmKCJFTk9FTlQiIT09dWUuY29kZSl0aHJvdyB1ZX19TS5leHBvcnRzPU4sTi5zeW5jPXF9LDI3MzM6KE0sTyxJKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijtjb25zdCBqPUkoNzc0OSksRz1JKDI1MjApLEQ9SSg5NTM5KTtmdW5jdGlvbiBUKEIsWixZKXtjb25zdCBVPVkuZGVyZWZlcmVuY2U/cT0+ai5zdGF0KHEse2JpZ2ludDohMH0pOnE9PmoubHN0YXQocSx7YmlnaW50OiEwfSk7cmV0dXJuIFByb21pc2UuYWxsKFtVKEIpLFUo''@;'; put 'put ''WikuY2F0Y2gocT0+e2lmKCJFTk9FTlQiPT09cS5jb2RlKXJldHVybiBudWxsO3Rocm93IHF9KV0pLnRoZW4oKFtxLEpdKT0+KHtzcmNTdGF0OnEsZGVzdFN0YXQ6Sn0pKX1mdW5jdGlvbiBFKEIsWil7cmV0dXJuIFouaW5vJiZaLmRldiYmWi5pbm89PT1CLmlubyYmWi5kZXY9PT1CLmRldn1m''@;'; put 'put ''dW5jdGlvbiB6KEIsWil7Y29uc3QgWT1HLnJlc29sdmUoQikuc3BsaXQoRy5zZXApLmZpbHRlcihxPT5xKSxVPUcucmVzb2x2ZShaKS5zcGxpdChHLnNlcCkuZmlsdGVyKHE9PnEpO3JldHVybiBZLnJlZHVjZSgocSxKLGVlKT0+cSYmVVtlZV09PT1KLCEwKX1mdW5jdGlvbiBOKEIsWixZKXty''@;'; put 'put ''ZXR1cm5gQ2Fubm90ICR7WX0gJyR7Qn0nIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGl0c2VsZiwgJyR7Wn0nLmB9TS5leHBvcnRzPXtjaGVja1BhdGhzOmZ1bmN0aW9uKEIsWixZLFUscSl7RC5jYWxsYmFja2lmeShUKShCLFosVSwoSixlZSk9PntpZihKKXJldHVybiBxKEopO2NvbnN0e3NyY1N0''@;'; put 'put ''YXQ6cmUsZGVzdFN0YXQ6aWV9PWVlO2lmKGllKXtpZihFKHJlLGllKSl7Y29uc3QgdWU9Ry5iYXNlbmFtZShCKSxsZT1HLmJhc2VuYW1lKFopO3JldHVybiJtb3ZlIj09PVkmJnVlIT09bGUmJnVlLnRvTG93ZXJDYXNlKCk9PT1sZS50b0xvd2VyQ2FzZSgpP3EobnVsbCx7c3JjU3RhdDpyZSxk''@;'; put 'put ''ZXN0U3RhdDppZSxpc0NoYW5naW5nQ2FzZTohMH0pOnEobmV3IEVycm9yKCJTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpKX1pZihyZS5pc0RpcmVjdG9yeSgpJiYhaWUuaXNEaXJlY3RvcnkoKSlyZXR1cm4gcShuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3Jp''@;'; put 'put ''dGUgbm9uLWRpcmVjdG9yeSAnJHtafScgd2l0aCBkaXJlY3RvcnkgJyR7Qn0nLmApKTtpZighcmUuaXNEaXJlY3RvcnkoKSYmaWUuaXNEaXJlY3RvcnkoKSlyZXR1cm4gcShuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgZGlyZWN0b3J5ICcke1p9JyB3aXRoIG5vbi1kaXJlY3RvcnkgJyR7''@;'; put 'put ''Qn0nLmApKX1yZXR1cm4gcmUuaXNEaXJlY3RvcnkoKSYmeihCLFopP3EobmV3IEVycm9yKE4oQixaLFkpKSk6cShudWxsLHtzcmNTdGF0OnJlLGRlc3RTdGF0OmllfSl9KX0sY2hlY2tQYXRoc1N5bmM6ZnVuY3Rpb24oQixaLFksVSl7Y29uc3R7c3JjU3RhdDpxLGRlc3RTdGF0Okp9PWZ1bmN0''@;'; put 'put ''aW9uKGVlLHJlLGllKXtsZXQgdWU7Y29uc3QgbGU9aWUuZGVyZWZlcmVuY2U/Vz0+ai5zdGF0U3luYyhXLHtiaWdpbnQ6ITB9KTpXPT5qLmxzdGF0U3luYyhXLHtiaWdpbnQ6ITB9KSxhZT1sZShlZSk7dHJ5e3VlPWxlKHJlKX1jYXRjaChXKXtpZigiRU5PRU5UIj09PVcuY29kZSlyZXR1cm57''@;'; put 'put ''c3JjU3RhdDphZSxkZXN0U3RhdDpudWxsfTt0aHJvdyBXfXJldHVybntzcmNTdGF0OmFlLGRlc3RTdGF0OnVlfX0oQixaLFUpO2lmKEope2lmKEUocSxKKSl7Y29uc3QgZWU9Ry5iYXNlbmFtZShCKSxyZT1HLmJhc2VuYW1lKFopO2lmKCJtb3ZlIj09PVkmJmVlIT09cmUmJmVlLnRvTG93ZXJD''@;'; put 'put ''YXNlKCk9PT1yZS50b0xvd2VyQ2FzZSgpKXJldHVybntzcmNTdGF0OnEsZGVzdFN0YXQ6Sixpc0NoYW5naW5nQ2FzZTohMH07dGhyb3cgbmV3IEVycm9yKCJTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpfWlmKHEuaXNEaXJlY3RvcnkoKSYmIUouaXNEaXJl''@;'; put 'put ''Y3RvcnkoKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgbm9uLWRpcmVjdG9yeSAnJHtafScgd2l0aCBkaXJlY3RvcnkgJyR7Qn0nLmApO2lmKCFxLmlzRGlyZWN0b3J5KCkmJkouaXNEaXJlY3RvcnkoKSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvdmVyd3JpdGUgZGlyZWN0''@;'; put 'put ''b3J5ICcke1p9JyB3aXRoIG5vbi1kaXJlY3RvcnkgJyR7Qn0nLmApfWlmKHEuaXNEaXJlY3RvcnkoKSYmeihCLFopKXRocm93IG5ldyBFcnJvcihOKEIsWixZKSk7cmV0dXJue3NyY1N0YXQ6cSxkZXN0U3RhdDpKfX0sY2hlY2tQYXJlbnRQYXRoczpmdW5jdGlvbiBCKFosWSxVLHEsSil7Y29u''@;'; put 'put ''c3QgZWU9Ry5yZXNvbHZlKEcuZGlybmFtZShaKSkscmU9Ry5yZXNvbHZlKEcuZGlybmFtZShVKSk7aWYocmU9PT1lZXx8cmU9PT1HLnBhcnNlKHJlKS5yb290KXJldHVybiBKKCk7ai5zdGF0KHJlLHtiaWdpbnQ6ITB9LChpZSx1ZSk9PmllPyJFTk9FTlQiPT09aWUuY29kZT9KKCk6SihpZSk6''@;'; put 'put ''RShZLHVlKT9KKG5ldyBFcnJvcihOKFosVSxxKSkpOkIoWixZLHJlLHEsSikpfSxjaGVja1BhcmVudFBhdGhzU3luYzpmdW5jdGlvbiBCKFosWSxVLHEpe2NvbnN0IEo9Ry5yZXNvbHZlKEcuZGlybmFtZShaKSksZWU9Ry5yZXNvbHZlKEcuZGlybmFtZShVKSk7aWYoZWU9PT1KfHxlZT09PUcu''@;'; put 'put ''cGFyc2UoZWUpLnJvb3QpcmV0dXJuO2xldCByZTt0cnl7cmU9ai5zdGF0U3luYyhlZSx7YmlnaW50OiEwfSl9Y2F0Y2goaWUpe2lmKCJFTk9FTlQiPT09aWUuY29kZSlyZXR1cm47dGhyb3cgaWV9aWYoRShZLHJlKSl0aHJvdyBuZXcgRXJyb3IoTihaLFUscSkpO3JldHVybiBCKFosWSxlZSxx''@;'; put 'put ''KX0saXNTcmNTdWJkaXI6eixhcmVJZGVudGljYWw6RX19LDMxODooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg3Nyk7TS5leHBvcnRzPXt1dGltZXNNaWxsaXM6ZnVuY3Rpb24oRyxELFQsRSl7ai5vcGVuKEcsInIrIiwoeixOKT0+e2lmKHopcmV0dXJuIEUoeik7ai5mdXRpbWVz''@;'; put 'put ''KE4sRCxULEI9PntqLmNsb3NlKE4sWj0+e0UmJkUoQnx8Wil9KX0pfSl9LHV0aW1lc01pbGxpc1N5bmM6ZnVuY3Rpb24oRyxELFQpe2NvbnN0IEU9ai5vcGVuU3luYyhHLCJyKyIpO3JldHVybiBqLmZ1dGltZXNTeW5jKEUsRCxUKSxqLmNsb3NlU3luYyhFKX19fSw3MzM0OihNLE8sSSk9Pnt2''@;'; put 'put ''YXIgaj1JKDQxNTUpO00uZXhwb3J0cz1aLFoucmVhbHBhdGg9WixaLnN5bmM9WSxaLnJlYWxwYXRoU3luYz1ZLFoubW9ua2V5cGF0Y2g9ZnVuY3Rpb24oKXtHLnJlYWxwYXRoPVosRy5yZWFscGF0aFN5bmM9WX0sWi51bm1vbmtleXBhdGNoPWZ1bmN0aW9uKCl7Ry5yZWFscGF0aD1ELEcucmVh''@;'; put 'put ''bHBhdGhTeW5jPVR9O3ZhciBHPUkoMjUzNSksRD1HLnJlYWxwYXRoLFQ9Ry5yZWFscGF0aFN5bmMsej0vXnZbMC01XVwuLy50ZXN0KGoudmVyc2lvbiksTj1JKDcwNTkpO2Z1bmN0aW9uIEIoVSl7cmV0dXJuIFUmJiJyZWFscGF0aCI9PT1VLnN5c2NhbGwmJigiRUxPT1AiPT09VS5jb2RlfHwi''@;'; put 'put ''RU5PTUVNIj09PVUuY29kZXx8IkVOQU1FVE9PTE9ORyI9PT1VLmNvZGUpfWZ1bmN0aW9uIFooVSxxLEope2lmKHopcmV0dXJuIEQoVSxxLEopOyJmdW5jdGlvbiI9PXR5cGVvZiBxJiYoSj1xLHE9bnVsbCksRChVLHEsZnVuY3Rpb24oZWUscmUpe0IoZWUpP04ucmVhbHBhdGgoVSxxLEopOkoo''@;'; put 'put ''ZWUscmUpfSl9ZnVuY3Rpb24gWShVLHEpe2lmKHopcmV0dXJuIFQoVSxxKTt0cnl7cmV0dXJuIFQoVSxxKX1jYXRjaChKKXtpZihCKEopKXJldHVybiBOLnJlYWxwYXRoU3luYyhVLHEpO3Rocm93IEp9fX0sNzA1OTooTSxPLEkpPT57dmFyIGo9SSg0MTU1KSxHPUkoNTEwOCksRD1JKDI1MjAp''@;'; put 'put ''LFQ9IndpbjMyIj09PWoucGxhdGZvcm0sRT1JKDI1MzUpLHo9ai5lbnYuTk9ERV9ERUJVRyYmL2ZzLy50ZXN0KGouZW52Lk5PREVfREVCVUcpO2lmKFQpdmFyIEI9LyguKj8pKD86W1wvXFxdK3wkKS9nO2Vsc2UgQj0vKC4qPykoPzpbXC9dK3wkKS9nO2lmKFQpdmFyIFo9L14oPzpbYS16QS1a''@;'; put 'put ''XTp8W1xcXC9dezJ9W15cXFwvXStbXFxcL11bXlxcXC9dKyk/W1xcXC9dKi87ZWxzZSBaPS9eW1wvXSovO08ucmVhbHBhdGhTeW5jPWZ1bmN0aW9uKFksVSl7aWYoWT1ELnJlc29sdmUoWSksVSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUsWSkpcmV0dXJuIFVbWV07''@;'; put 'put ''dmFyIHEsSixlZSxyZSxpZT1ZLHVlPXt9LGxlPXt9O2Z1bmN0aW9uIGFlKCl7dmFyIGc9Wi5leGVjKFkpO3E9Z1swXS5sZW5ndGgsSj1nWzBdLGVlPWdbMF0scmU9IiIsVCYmIWxlW2VlXSYmKEUubHN0YXRTeW5jKGVlKSxsZVtlZV09ITApfWZvcihhZSgpO3E8WS5sZW5ndGg7KXtCLmxhc3RJ''@;'; put 'put ''bmRleD1xO3ZhciBXPUIuZXhlYyhZKTtpZihyZT1KLEorPVdbMF0scT1CLmxhc3RJbmRleCwhKGxlW2VlPXJlK1dbMV1dfHxVJiZVW2VlXT09PWVlKSl7dmFyIGI7aWYoVSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFUsZWUpKWI9VVtlZV07ZWxzZXt2YXIgQT1FLmxz''@;'; put 'put ''dGF0U3luYyhlZSk7aWYoIUEuaXNTeW1ib2xpY0xpbmsoKSl7bGVbZWVdPSEwLFUmJihVW2VlXT1lZSk7Y29udGludWV9dmFyIEY9bnVsbDtpZighVCl7dmFyIEg9QS5kZXYudG9TdHJpbmcoMzIpKyI6IitBLmluby50b1N0cmluZygzMik7dWUuaGFzT3duUHJvcGVydHkoSCkmJihGPXVlW0hd''@;'; put 'put ''KX1udWxsPT09RiYmKEUuc3RhdFN5bmMoZWUpLEY9RS5yZWFkbGlua1N5bmMoZWUpKSxiPUQucmVzb2x2ZShyZSxGKSxVJiYoVVtlZV09YiksVHx8KHVlW0hdPUYpfVk9RC5yZXNvbHZlKGIsWS5zbGljZShxKSksYWUoKX19cmV0dXJuIFUmJihVW2llXT1ZKSxZfSxPLnJlYWxwYXRoPWZ1bmN0''@;'; put 'put ''aW9uKFksVSxxKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgcSYmKHE9ZnVuY3Rpb24gTihZKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgWT9ZOmZ1bmN0aW9uKCl7dmFyIFU7aWYoeil7dmFyIHE9bmV3IEVycm9yO1U9ZnVuY3Rpb24oZWUpe2VlJiYocS5tZXNzYWdlPWVlLm1lc3NhZ2UsSihl''@;'; put 'put ''ZT1xKSl9fWVsc2UgVT1KO3JldHVybiBVO2Z1bmN0aW9uIEooZWUpe2lmKGVlKXtpZihqLnRocm93RGVwcmVjYXRpb24pdGhyb3cgZWU7aWYoIWoubm9EZXByZWNhdGlvbil7dmFyIHJlPSJmczogbWlzc2luZyBjYWxsYmFjayAiKyhlZS5zdGFja3x8ZWUubWVzc2FnZSk7ai50cmFjZURlcHJl''@;'; put 'put ''Y2F0aW9uP0cudHJhY2UocmUpOkcuZXJyb3IocmUpfX19fSgpfShVKSxVPW51bGwpLFk9RC5yZXNvbHZlKFkpLFUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChVLFkpKXJldHVybiBqLm5leHRUaWNrKHEuYmluZChudWxsLG51bGwsVVtZXSkpO3ZhciBKLGVlLHJlLGll''@;'; put 'put ''LHVlPVksbGU9e30sYWU9e307ZnVuY3Rpb24gVygpe3ZhciBnPVouZXhlYyhZKTtKPWdbMF0ubGVuZ3RoLGVlPWdbMF0scmU9Z1swXSxpZT0iIixUJiYhYWVbcmVdP0UubHN0YXQocmUsZnVuY3Rpb24oQyl7aWYoQylyZXR1cm4gcShDKTthZVtyZV09ITAsYigpfSk6ai5uZXh0VGljayhiKX1m''@;'; put 'put ''dW5jdGlvbiBiKCl7aWYoSj49WS5sZW5ndGgpcmV0dXJuIFUmJihVW3VlXT1ZKSxxKG51bGwsWSk7Qi5sYXN0SW5kZXg9Sjt2YXIgZz1CLmV4ZWMoWSk7cmV0dXJuIGllPWVlLGVlKz1nWzBdLEo9Qi5sYXN0SW5kZXgsYWVbcmU9aWUrZ1sxXV18fFUmJlVbcmVdPT09cmU/ai5uZXh0VGljayhi''@;'; put 'put ''KTpVJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVSxyZSk/SChVW3JlXSk6RS5sc3RhdChyZSxBKX1mdW5jdGlvbiBBKGcsQyl7aWYoZylyZXR1cm4gcShnKTtpZighQy5pc1N5bWJvbGljTGluaygpKXJldHVybiBhZVtyZV09ITAsVSYmKFVbcmVdPXJlKSxqLm5leHRU''@;'; put 'put ''aWNrKGIpO2lmKCFUKXt2YXIgaz1DLmRldi50b1N0cmluZygzMikrIjoiK0MuaW5vLnRvU3RyaW5nKDMyKTtpZihsZS5oYXNPd25Qcm9wZXJ0eShrKSlyZXR1cm4gRihudWxsLGxlW2tdLHJlKX1FLnN0YXQocmUsZnVuY3Rpb24oXyl7aWYoXylyZXR1cm4gcShfKTtFLnJlYWRsaW5rKHJlLGZ1''@;'; put 'put ''bmN0aW9uKHAsdyl7VHx8KGxlW2tdPXcpLEYocCx3KX0pfSl9ZnVuY3Rpb24gRihnLEMsayl7aWYoZylyZXR1cm4gcShnKTt2YXIgXz1ELnJlc29sdmUoaWUsQyk7VSYmKFVba109XyksSChfKX1mdW5jdGlvbiBIKGcpe1k9RC5yZXNvbHZlKGcsWS5zbGljZShKKSksVygpfVcoKX19LDc2NDg6''@;'; put 'put ''TT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTz1BcnJheS5wcm90b3R5cGUuc2xpY2UsST1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO00uZXhwb3J0cz1mdW5jdGlvbihqKXt2YXIgRz10aGlzO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBHfHwiW29iamVjdCBGdW5jdGlvbl0iIT09SS5jYWxsKEcpKXRo''@;'; put 'put ''cm93IG5ldyBUeXBlRXJyb3IoIkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIitHKTtmb3IodmFyIEQsVD1PLmNhbGwoYXJndW1lbnRzLDEpLEU9TWF0aC5tYXgoMCxHLmxlbmd0aC1ULmxlbmd0aCksej1bXSxOPTA7TjxFO04rKyl6LnB1c2goIiQiK04p''@;'; put 'put ''O2lmKEQ9RnVuY3Rpb24oImJpbmRlciIsInJldHVybiBmdW5jdGlvbiAoIit6LmpvaW4oIiwiKSsiKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH0iKShmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBEKXt2YXIgWj1HLmFwcGx5KHRoaXMsVC5jb25jYXQoTy5j''@;'; put 'put ''YWxsKGFyZ3VtZW50cykpKTtyZXR1cm4gT2JqZWN0KFopPT09Wj9aOnRoaXN9cmV0dXJuIEcuYXBwbHkoaixULmNvbmNhdChPLmNhbGwoYXJndW1lbnRzKSkpfSksRy5wcm90b3R5cGUpe3ZhciBCPWZ1bmN0aW9uKCl7fTtCLnByb3RvdHlwZT1HLnByb3RvdHlwZSxELnByb3RvdHlwZT1uZXcg''@;'; put 'put ''QixCLnByb3RvdHlwZT1udWxsfXJldHVybiBEfX0sODYxMjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNzY0OCk7TS5leHBvcnRzPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHxqfSwyMTA6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPVN5bnRheEVycm9yLEQ9RnVuY3Rp''@;'; put 'put ''b24sVD1UeXBlRXJyb3IsRT1mdW5jdGlvbihrKXt0cnl7cmV0dXJuIEQoJyJ1c2Ugc3RyaWN0IjsgcmV0dXJuICgnK2srIikuY29uc3RydWN0b3I7IikoKX1jYXRjaHt9fSx6PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7aWYoeil0cnl7eih7fSwiIil9Y2F0Y2h7ej1udWxsfXZh''@;'; put 'put ''ciBOPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR9LEI9ej9mdW5jdGlvbigpe3RyeXtyZXR1cm4gTn1jYXRjaHt0cnl7cmV0dXJuIHooYXJndW1lbnRzLCJjYWxsZWUiKS5nZXR9Y2F0Y2h7cmV0dXJuIE59fX0oKTpOLFo9SSgxNDA1KSgpLFk9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlv''@;'; put 'put ''bihrKXtyZXR1cm4gay5fX3Byb3RvX199LFU9e30scT10eXBlb2YgVWludDhBcnJheT4idSI/ajpZKFVpbnQ4QXJyYXkpLEo9eyIlQWdncmVnYXRlRXJyb3IlIjp0eXBlb2YgQWdncmVnYXRlRXJyb3I+InUiP2o6QWdncmVnYXRlRXJyb3IsIiVBcnJheSUiOkFycmF5LCIlQXJyYXlCdWZmZXIl''@;'; put 'put ''Ijp0eXBlb2YgQXJyYXlCdWZmZXI+InUiP2o6QXJyYXlCdWZmZXIsIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSI6Wj9ZKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSk6aiwiJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUiOmosIiVBc3luY0Z1bmN0aW9uJSI6VSwiJUFzeW5jR2VuZXJh''@;'; put 'put ''dG9yJSI6VSwiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIjpVLCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiOlUsIiVBdG9taWNzJSI6dHlwZW9mIEF0b21pY3M+InUiP2o6QXRvbWljcywiJUJpZ0ludCUiOnR5cGVvZiBCaWdJbnQ+InUiP2o6QmlnSW50LCIlQmlnSW50NjRBcnJheSUiOnR5''@;'; put 'put ''cGVvZiBCaWdJbnQ2NEFycmF5PiJ1Ij9qOkJpZ0ludDY0QXJyYXksIiVCaWdVaW50NjRBcnJheSUiOnR5cGVvZiBCaWdVaW50NjRBcnJheT4idSI/ajpCaWdVaW50NjRBcnJheSwiJUJvb2xlYW4lIjpCb29sZWFuLCIlRGF0YVZpZXclIjp0eXBlb2YgRGF0YVZpZXc+InUiP2o6RGF0YVZpZXcs''@;'; put 'put ''IiVEYXRlJSI6RGF0ZSwiJWRlY29kZVVSSSUiOmRlY29kZVVSSSwiJWRlY29kZVVSSUNvbXBvbmVudCUiOmRlY29kZVVSSUNvbXBvbmVudCwiJWVuY29kZVVSSSUiOmVuY29kZVVSSSwiJWVuY29kZVVSSUNvbXBvbmVudCUiOmVuY29kZVVSSUNvbXBvbmVudCwiJUVycm9yJSI6RXJyb3IsIiVl''@;'; put 'put ''dmFsJSI6ZXZhbCwiJUV2YWxFcnJvciUiOkV2YWxFcnJvciwiJUZsb2F0MzJBcnJheSUiOnR5cGVvZiBGbG9hdDMyQXJyYXk+InUiP2o6RmxvYXQzMkFycmF5LCIlRmxvYXQ2NEFycmF5JSI6dHlwZW9mIEZsb2F0NjRBcnJheT4idSI/ajpGbG9hdDY0QXJyYXksIiVGaW5hbGl6YXRpb25SZWdp''@;'; put 'put ''c3RyeSUiOnR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeT4idSI/ajpGaW5hbGl6YXRpb25SZWdpc3RyeSwiJUZ1bmN0aW9uJSI6RCwiJUdlbmVyYXRvckZ1bmN0aW9uJSI6VSwiJUludDhBcnJheSUiOnR5cGVvZiBJbnQ4QXJyYXk+InUiP2o6SW50OEFycmF5LCIlSW50MTZBcnJheSUiOnR5''@;'; put 'put ''cGVvZiBJbnQxNkFycmF5PiJ1Ij9qOkludDE2QXJyYXksIiVJbnQzMkFycmF5JSI6dHlwZW9mIEludDMyQXJyYXk+InUiP2o6SW50MzJBcnJheSwiJWlzRmluaXRlJSI6aXNGaW5pdGUsIiVpc05hTiUiOmlzTmFOLCIlSXRlcmF0b3JQcm90b3R5cGUlIjpaP1koWShbXVtTeW1ib2wuaXRlcmF0''@;'; put 'put ''b3JdKCkpKTpqLCIlSlNPTiUiOiJvYmplY3QiPT10eXBlb2YgSlNPTj9KU09OOmosIiVNYXAlIjp0eXBlb2YgTWFwPiJ1Ij9qOk1hcCwiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJSI6dHlwZW9mIE1hcDwidSImJlo/WSgobmV3IE1hcClbU3ltYm9sLml0ZXJhdG9yXSgpKTpqLCIlTWF0aCUiOk1h''@;'; put 'put ''dGgsIiVOdW1iZXIlIjpOdW1iZXIsIiVPYmplY3QlIjpPYmplY3QsIiVwYXJzZUZsb2F0JSI6cGFyc2VGbG9hdCwiJXBhcnNlSW50JSI6cGFyc2VJbnQsIiVQcm9taXNlJSI6dHlwZW9mIFByb21pc2U+InUiP2o6UHJvbWlzZSwiJVByb3h5JSI6dHlwZW9mIFByb3h5PiJ1Ij9qOlByb3h5LCIl''@;'; put 'put ''UmFuZ2VFcnJvciUiOlJhbmdlRXJyb3IsIiVSZWZlcmVuY2VFcnJvciUiOlJlZmVyZW5jZUVycm9yLCIlUmVmbGVjdCUiOnR5cGVvZiBSZWZsZWN0PiJ1Ij9qOlJlZmxlY3QsIiVSZWdFeHAlIjpSZWdFeHAsIiVTZXQlIjp0eXBlb2YgU2V0PiJ1Ij9qOlNldCwiJVNldEl0ZXJhdG9yUHJvdG90''@;'; put 'put ''eXBlJSI6dHlwZW9mIFNldDwidSImJlo/WSgobmV3IFNldClbU3ltYm9sLml0ZXJhdG9yXSgpKTpqLCIlU2hhcmVkQXJyYXlCdWZmZXIlIjp0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI+InUiP2o6U2hhcmVkQXJyYXlCdWZmZXIsIiVTdHJpbmclIjpTdHJpbmcsIiVTdHJpbmdJdGVyYXRvclBy''@;'; put 'put ''b3RvdHlwZSUiOlo/WSgiIltTeW1ib2wuaXRlcmF0b3JdKCkpOmosIiVTeW1ib2wlIjpaP1N5bWJvbDpqLCIlU3ludGF4RXJyb3IlIjpHLCIlVGhyb3dUeXBlRXJyb3IlIjpCLCIlVHlwZWRBcnJheSUiOnEsIiVUeXBlRXJyb3IlIjpULCIlVWludDhBcnJheSUiOnR5cGVvZiBVaW50OEFycmF5''@;'; put 'put ''PiJ1Ij9qOlVpbnQ4QXJyYXksIiVVaW50OENsYW1wZWRBcnJheSUiOnR5cGVvZiBVaW50OENsYW1wZWRBcnJheT4idSI/ajpVaW50OENsYW1wZWRBcnJheSwiJVVpbnQxNkFycmF5JSI6dHlwZW9mIFVpbnQxNkFycmF5PiJ1Ij9qOlVpbnQxNkFycmF5LCIlVWludDMyQXJyYXklIjp0eXBlb2Yg''@;'; put 'put ''VWludDMyQXJyYXk+InUiP2o6VWludDMyQXJyYXksIiVVUklFcnJvciUiOlVSSUVycm9yLCIlV2Vha01hcCUiOnR5cGVvZiBXZWFrTWFwPiJ1Ij9qOldlYWtNYXAsIiVXZWFrUmVmJSI6dHlwZW9mIFdlYWtSZWY+InUiP2o6V2Vha1JlZiwiJVdlYWtTZXQlIjp0eXBlb2YgV2Vha1NldD4idSI/''@;'; put 'put ''ajpXZWFrU2V0fTt0cnl7bnVsbC5lcnJvcn1jYXRjaChrKXt2YXIgZWU9WShZKGspKTtKWyIlRXJyb3IucHJvdG90eXBlJSJdPWVlfXZhciByZT1mdW5jdGlvbiBrKF8pe3ZhciBwO2lmKCIlQXN5bmNGdW5jdGlvbiUiPT09XylwPUUoImFzeW5jIGZ1bmN0aW9uICgpIHt9Iik7ZWxzZSBpZigi''@;'; put 'put ''JUdlbmVyYXRvckZ1bmN0aW9uJSI9PT1fKXA9RSgiZnVuY3Rpb24qICgpIHt9Iik7ZWxzZSBpZigiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lIj09PV8pcD1FKCJhc3luYyBmdW5jdGlvbiogKCkge30iKTtlbHNlIGlmKCIlQXN5bmNHZW5lcmF0b3IlIj09PV8pe3ZhciB3PWsoIiVBc3luY0dl''@;'; put 'put ''bmVyYXRvckZ1bmN0aW9uJSIpO3cmJihwPXcucHJvdG90eXBlKX1lbHNlIGlmKCIlQXN5bmNJdGVyYXRvclByb3RvdHlwZSUiPT09Xyl7dmFyIEs9aygiJUFzeW5jR2VuZXJhdG9yJSIpO0smJihwPVkoSy5wcm90b3R5cGUpKX1yZXR1cm4gSltfXT1wLHB9LGllPXsiJUFycmF5QnVmZmVyUHJv''@;'; put 'put ''dG90eXBlJSI6WyJBcnJheUJ1ZmZlciIsInByb3RvdHlwZSJdLCIlQXJyYXlQcm90b3R5cGUlIjpbIkFycmF5IiwicHJvdG90eXBlIl0sIiVBcnJheVByb3RvX2VudHJpZXMlIjpbIkFycmF5IiwicHJvdG90eXBlIiwiZW50cmllcyJdLCIlQXJyYXlQcm90b19mb3JFYWNoJSI6WyJBcnJheSIs''@;'; put 'put ''InByb3RvdHlwZSIsImZvckVhY2giXSwiJUFycmF5UHJvdG9fa2V5cyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJrZXlzIl0sIiVBcnJheVByb3RvX3ZhbHVlcyUiOlsiQXJyYXkiLCJwcm90b3R5cGUiLCJ2YWx1ZXMiXSwiJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlIjpbIkFzeW5jRnVuY3Rp''@;'; put 'put ''b24iLCJwcm90b3R5cGUiXSwiJUFzeW5jR2VuZXJhdG9yJSI6WyJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIiwicHJvdG90eXBlIl0sIiVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUiOlsiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlQm9vbGVhblBy''@;'; put 'put ''b3RvdHlwZSUiOlsiQm9vbGVhbiIsInByb3RvdHlwZSJdLCIlRGF0YVZpZXdQcm90b3R5cGUlIjpbIkRhdGFWaWV3IiwicHJvdG90eXBlIl0sIiVEYXRlUHJvdG90eXBlJSI6WyJEYXRlIiwicHJvdG90eXBlIl0sIiVFcnJvclByb3RvdHlwZSUiOlsiRXJyb3IiLCJwcm90b3R5cGUiXSwiJUV2''@;'; put 'put ''YWxFcnJvclByb3RvdHlwZSUiOlsiRXZhbEVycm9yIiwicHJvdG90eXBlIl0sIiVGbG9hdDMyQXJyYXlQcm90b3R5cGUlIjpbIkZsb2F0MzJBcnJheSIsInByb3RvdHlwZSJdLCIlRmxvYXQ2NEFycmF5UHJvdG90eXBlJSI6WyJGbG9hdDY0QXJyYXkiLCJwcm90b3R5cGUiXSwiJUZ1bmN0aW9u''@;'; put 'put ''UHJvdG90eXBlJSI6WyJGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSJdLCIlR2VuZXJhdG9yUHJvdG90eXBlJSI6WyJHZW5lcmF0b3JGdW5jdGlvbiIsInByb3RvdHlwZSIsInByb3RvdHlwZSJdLCIlSW50OEFycmF5''@;'; put 'put ''UHJvdG90eXBlJSI6WyJJbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDE2QXJyYXlQcm90b3R5cGUlIjpbIkludDE2QXJyYXkiLCJwcm90b3R5cGUiXSwiJUludDMyQXJyYXlQcm90b3R5cGUlIjpbIkludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJUpTT05QYXJzZSUiOlsiSlNPTiIsInBh''@;'; put 'put ''cnNlIl0sIiVKU09OU3RyaW5naWZ5JSI6WyJKU09OIiwic3RyaW5naWZ5Il0sIiVNYXBQcm90b3R5cGUlIjpbIk1hcCIsInByb3RvdHlwZSJdLCIlTnVtYmVyUHJvdG90eXBlJSI6WyJOdW1iZXIiLCJwcm90b3R5cGUiXSwiJU9iamVjdFByb3RvdHlwZSUiOlsiT2JqZWN0IiwicHJvdG90eXBl''@;'; put 'put ''Il0sIiVPYmpQcm90b190b1N0cmluZyUiOlsiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciXSwiJU9ialByb3RvX3ZhbHVlT2YlIjpbIk9iamVjdCIsInByb3RvdHlwZSIsInZhbHVlT2YiXSwiJVByb21pc2VQcm90b3R5cGUlIjpbIlByb21pc2UiLCJwcm90b3R5cGUiXSwiJVByb21p''@;'; put 'put ''c2VQcm90b190aGVuJSI6WyJQcm9taXNlIiwicHJvdG90eXBlIiwidGhlbiJdLCIlUHJvbWlzZV9hbGwlIjpbIlByb21pc2UiLCJhbGwiXSwiJVByb21pc2VfcmVqZWN0JSI6WyJQcm9taXNlIiwicmVqZWN0Il0sIiVQcm9taXNlX3Jlc29sdmUlIjpbIlByb21pc2UiLCJyZXNvbHZlIl0sIiVS''@;'; put 'put ''YW5nZUVycm9yUHJvdG90eXBlJSI6WyJSYW5nZUVycm9yIiwicHJvdG90eXBlIl0sIiVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUiOlsiUmVmZXJlbmNlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVJlZ0V4cFByb3RvdHlwZSUiOlsiUmVnRXhwIiwicHJvdG90eXBlIl0sIiVTZXRQcm90b3R5cGUl''@;'; put 'put ''IjpbIlNldCIsInByb3RvdHlwZSJdLCIlU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlIjpbIlNoYXJlZEFycmF5QnVmZmVyIiwicHJvdG90eXBlIl0sIiVTdHJpbmdQcm90b3R5cGUlIjpbIlN0cmluZyIsInByb3RvdHlwZSJdLCIlU3ltYm9sUHJvdG90eXBlJSI6WyJTeW1ib2wiLCJwcm90''@;'; put 'put ''b3R5cGUiXSwiJVN5bnRheEVycm9yUHJvdG90eXBlJSI6WyJTeW50YXhFcnJvciIsInByb3RvdHlwZSJdLCIlVHlwZWRBcnJheVByb3RvdHlwZSUiOlsiVHlwZWRBcnJheSIsInByb3RvdHlwZSJdLCIlVHlwZUVycm9yUHJvdG90eXBlJSI6WyJUeXBlRXJyb3IiLCJwcm90b3R5cGUiXSwiJVVp''@;'; put 'put ''bnQ4QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQ4QXJyYXkiLCJwcm90b3R5cGUiXSwiJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSI6WyJVaW50OENsYW1wZWRBcnJheSIsInByb3RvdHlwZSJdLCIlVWludDE2QXJyYXlQcm90b3R5cGUlIjpbIlVpbnQxNkFycmF5IiwicHJvdG90eXBlIl0s''@;'; put 'put ''IiVVaW50MzJBcnJheVByb3RvdHlwZSUiOlsiVWludDMyQXJyYXkiLCJwcm90b3R5cGUiXSwiJVVSSUVycm9yUHJvdG90eXBlJSI6WyJVUklFcnJvciIsInByb3RvdHlwZSJdLCIlV2Vha01hcFByb3RvdHlwZSUiOlsiV2Vha01hcCIsInByb3RvdHlwZSJdLCIlV2Vha1NldFByb3RvdHlwZSUi''@;'; put 'put ''OlsiV2Vha1NldCIsInByb3RvdHlwZSJdfSx1ZT1JKDg2MTIpLGxlPUkoNzY0MiksYWU9dWUuY2FsbChGdW5jdGlvbi5jYWxsLEFycmF5LnByb3RvdHlwZS5jb25jYXQpLFc9dWUuY2FsbChGdW5jdGlvbi5hcHBseSxBcnJheS5wcm90b3R5cGUuc3BsaWNlKSxiPXVlLmNhbGwoRnVuY3Rpb24u''@;'; put 'put ''Y2FsbCxTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLEE9dWUuY2FsbChGdW5jdGlvbi5jYWxsLFN0cmluZy5wcm90b3R5cGUuc2xpY2UpLEY9dWUuY2FsbChGdW5jdGlvbi5jYWxsLFJlZ0V4cC5wcm90b3R5cGUuZXhlYyksSD0vW14lLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsi''@;'; put 'put ''J10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JSQpKS9nLGc9L1xcKFxcKT8vZyxDPWZ1bmN0aW9uKGssXyl7dmFyIHAsdz1rO2lmKGxlKGllLHcpJiYodz0iJSIrKHA9aWVbd10pWzBdKyIlIiksbGUoSix3KSl7dmFyIEs9Slt3XTtpZihL''@;'; put 'put ''PT09VSYmKEs9cmUodykpLHZvaWQgMD09PUsmJiFfKXRocm93IG5ldyBUKCJpbnRyaW5zaWMgIitrKyIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhIik7cmV0dXJue2FsaWFzOnAsbmFtZTp3LHZhbHVlOkt9fXRocm93IG5ldyBHKCJpbnRyaW5z''@;'; put 'put ''aWMgIitrKyIgZG9lcyBub3QgZXhpc3QhIil9O00uZXhwb3J0cz1mdW5jdGlvbihrLF8pe2lmKCJzdHJpbmciIT10eXBlb2Yga3x8MD09PWsubGVuZ3RoKXRocm93IG5ldyBUKCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2lmKGFyZ3VtZW50cy5sZW5ndGg+''@;'; put 'put ''MSYmImJvb2xlYW4iIT10eXBlb2YgXyl0aHJvdyBuZXcgVCgnImFsbG93TWlzc2luZyIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtpZihudWxsPT09RigvXiU/W14lXSolPyQvLGspKXRocm93IG5ldyBHKCJgJWAgbWF5IG5vdCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUg''@;'; put 'put ''YmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lIik7dmFyIHA9ZnVuY3Rpb24oVWUpe3ZhciBxZT1BKFVlLDAsMSksb3Q9QShVZSwtMSk7aWYoIiUiPT09cWUmJiIlIiE9PW90KXRocm93IG5ldyBHKCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIGNsb3Np''@;'; put 'put ''bmcgYCVgIik7aWYoIiUiPT09b3QmJiIlIiE9PXFlKXRocm93IG5ldyBHKCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgIik7dmFyIEZlPVtdO3JldHVybiBiKFVlLEgsZnVuY3Rpb24od2UsRWUsSWUsWGUpe0ZlW0ZlLmxlbmd0aF09SWU/YihYZSxnLCIk''@;'; put 'put ''MSIpOkVlfHx3ZX0pLEZlfShrKSx3PXAubGVuZ3RoPjA/cFswXToiIixLPUMoIiUiK3crIiUiLF8pLHRlPUsubmFtZSxjZT1LLnZhbHVlLGhlPSExLFNlPUsuYWxpYXM7U2UmJih3PVNlWzBdLFcocCxhZShbMCwxXSxTZSkpKTtmb3IodmFyIExlPTEsSGU9ITA7TGU8cC5sZW5ndGg7TGUrPTEp''@;'; put 'put ''e3ZhciB4ZT1wW0xlXSxEZT1BKHhlLDAsMSksQmU9QSh4ZSwtMSk7aWYoKCciJz09PURlfHwiJyI9PT1EZXx8ImAiPT09RGV8fCciJz09PUJlfHwiJyI9PT1CZXx8ImAiPT09QmUpJiZEZSE9PUJlKXRocm93IG5ldyBHKCJwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0''@;'; put 'put ''Y2hpbmcgcXVvdGVzIik7aWYoImNvbnN0cnVjdG9yIiE9PXhlJiZIZXx8KGhlPSEwKSxsZShKLHRlPSIlIisodys9Ii4iK3hlKSsiJSIpKWNlPUpbdGVdO2Vsc2UgaWYobnVsbCE9Y2Upe2lmKCEoeGUgaW4gY2UpKXtpZighXyl0aHJvdyBuZXcgVCgiYmFzZSBpbnRyaW5zaWMgZm9yICIraysi''@;'; put 'put ''IGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLiIpO3JldHVybn1pZih6JiZMZSsxPj1wLmxlbmd0aCl7dmFyIEdlPXooY2UseGUpO2NlPShIZT0hIUdlKSYmImdldCJpbiBHZSYmISgib3JpZ2luYWxWYWx1ZSJpbiBHZS5nZXQpP0dlLmdldDpjZVt4ZV19ZWxzZSBI''@;'; put 'put ''ZT1sZShjZSx4ZSksY2U9Y2VbeGVdO0hlJiYhaGUmJihKW3RlXT1jZSl9fXJldHVybiBjZX19LDY3NzI6KE0sTyxJKT0+e3ZhciBqPUkoNDE1NSk7ZnVuY3Rpb24gRyhxLEope3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocSxKKX1PLnNldG9wdHM9ZnVuY3Rp''@;'; put 'put ''b24ocSxKLGVlKXtpZihlZXx8KGVlPXt9KSxlZS5tYXRjaEJhc2UmJi0xPT09Si5pbmRleE9mKCIvIikpe2lmKGVlLm5vZ2xvYnN0YXIpdGhyb3cgbmV3IEVycm9yKCJiYXNlIG1hdGNoaW5nIHJlcXVpcmVzIGdsb2JzdGFyIik7Sj0iKiovIitKfXZhciBpZTtxLnNpbGVudD0hIWVlLnNpbGVu''@;'; put 'put ''dCxxLnBhdHRlcm49SixxLnN0cmljdD0hMSE9PWVlLnN0cmljdCxxLnJlYWxwYXRoPSEhZWUucmVhbHBhdGgscS5yZWFscGF0aENhY2hlPWVlLnJlYWxwYXRoQ2FjaGV8fE9iamVjdC5jcmVhdGUobnVsbCkscS5mb2xsb3c9ISFlZS5mb2xsb3cscS5kb3Q9ISFlZS5kb3QscS5tYXJrPSEhZWUu''@;'; put 'put ''bWFyayxxLm5vZGlyPSEhZWUubm9kaXIscS5ub2RpciYmKHEubWFyaz0hMCkscS5zeW5jPSEhZWUuc3luYyxxLm5vdW5pcXVlPSEhZWUubm91bmlxdWUscS5ub251bGw9ISFlZS5ub251bGwscS5ub3NvcnQ9ISFlZS5ub3NvcnQscS5ub2Nhc2U9ISFlZS5ub2Nhc2UscS5zdGF0PSEhZWUuc3Rh''@;'; put 'put ''dCxxLm5vcHJvY2Vzcz0hIWVlLm5vcHJvY2VzcyxxLmFic29sdXRlPSEhZWUuYWJzb2x1dGUscS5mcz1lZS5mc3x8RCxxLm1heExlbmd0aD1lZS5tYXhMZW5ndGh8fDEvMCxxLmNhY2hlPWVlLmNhY2hlfHxPYmplY3QuY3JlYXRlKG51bGwpLHEuc3RhdENhY2hlPWVlLnN0YXRDYWNoZXx8T2Jq''@;'; put 'put ''ZWN0LmNyZWF0ZShudWxsKSxxLnN5bWxpbmtzPWVlLnN5bWxpbmtzfHxPYmplY3QuY3JlYXRlKG51bGwpLChpZT1xKS5pZ25vcmU9ZWUuaWdub3JlfHxbXSxBcnJheS5pc0FycmF5KGllLmlnbm9yZSl8fChpZS5pZ25vcmU9W2llLmlnbm9yZV0pLGllLmlnbm9yZS5sZW5ndGgmJihpZS5pZ25v''@;'; put 'put ''cmU9aWUuaWdub3JlLm1hcChaKSkscS5jaGFuZ2VkQ3dkPSExO3ZhciByZT1qLmN3ZCgpO0coZWUsImN3ZCIpPyhxLmN3ZD1ULnJlc29sdmUoZWUuY3dkKSxxLmNoYW5nZWRDd2Q9cS5jd2QhPT1yZSk6cS5jd2Q9cmUscS5yb290PWVlLnJvb3R8fFQucmVzb2x2ZShxLmN3ZCwiLyIpLHEucm9v''@;'; put 'put ''dD1ULnJlc29sdmUocS5yb290KSwid2luMzIiPT09ai5wbGF0Zm9ybSYmKHEucm9vdD1xLnJvb3QucmVwbGFjZSgvXFwvZywiLyIpKSxxLmN3ZEFicz16KHEuY3dkKT9xLmN3ZDpZKHEscS5jd2QpLCJ3aW4zMiI9PT1qLnBsYXRmb3JtJiYocS5jd2RBYnM9cS5jd2RBYnMucmVwbGFjZSgvXFwv''@;'; put 'put ''ZywiLyIpKSxxLm5vbW91bnQ9ISFlZS5ub21vdW50LGVlLm5vbmVnYXRlPSEwLGVlLm5vY29tbWVudD0hMCxlZS5hbGxvd1dpbmRvd3NFc2NhcGU9ITEscS5taW5pbWF0Y2g9bmV3IE4oSixlZSkscS5vcHRpb25zPXEubWluaW1hdGNoLm9wdGlvbnN9LE8ub3duUHJvcD1HLE8ubWFrZUFicz1Z''@;'; put 'put ''LE8uZmluaXNoPWZ1bmN0aW9uKHEpe2Zvcih2YXIgSj1xLm5vdW5pcXVlLGVlPUo/W106T2JqZWN0LmNyZWF0ZShudWxsKSxyZT0wLGllPXEubWF0Y2hlcy5sZW5ndGg7cmU8aWU7cmUrKyl7dmFyIHVlPXEubWF0Y2hlc1tyZV07aWYodWUmJjAhPT1PYmplY3Qua2V5cyh1ZSkubGVuZ3RoKXt2''@;'; put 'put ''YXIgbGU9T2JqZWN0LmtleXModWUpO0o/ZWUucHVzaC5hcHBseShlZSxsZSk6bGUuZm9yRWFjaChmdW5jdGlvbihXKXtlZVtXXT0hMH0pfWVsc2UgaWYocS5ub251bGwpe3ZhciBhZT1xLm1pbmltYXRjaC5nbG9iU2V0W3JlXTtKP2VlLnB1c2goYWUpOmVlW2FlXT0hMH19aWYoSnx8KGVlPU9i''@;'; put 'put ''amVjdC5rZXlzKGVlKSkscS5ub3NvcnR8fChlZT1lZS5zb3J0KEIpKSxxLm1hcmspe2ZvcihyZT0wO3JlPGVlLmxlbmd0aDtyZSsrKWVlW3JlXT1xLl9tYXJrKGVlW3JlXSk7cS5ub2RpciYmKGVlPWVlLmZpbHRlcihmdW5jdGlvbihXKXt2YXIgYj0hL1wvJC8udGVzdChXKSxBPXEuY2FjaGVb''@;'; put 'put ''V118fHEuY2FjaGVbWShxLFcpXTtyZXR1cm4gYiYmQSYmKGI9IkRJUiIhPT1BJiYhQXJyYXkuaXNBcnJheShBKSksYn0pKX1xLmlnbm9yZS5sZW5ndGgmJihlZT1lZS5maWx0ZXIoZnVuY3Rpb24oVyl7cmV0dXJuIVUocSxXKX0pKSxxLmZvdW5kPWVlfSxPLm1hcms9ZnVuY3Rpb24ocSxKKXt2''@;'; put 'put ''YXIgZWU9WShxLEopLHJlPXEuY2FjaGVbZWVdLGllPUo7aWYocmUpe3ZhciB1ZT0iRElSIj09PXJlfHxBcnJheS5pc0FycmF5KHJlKSxsZT0iLyI9PT1KLnNsaWNlKC0xKTtpZih1ZSYmIWxlP2llKz0iLyI6IXVlJiZsZSYmKGllPWllLnNsaWNlKDAsLTEpKSxpZSE9PUope3ZhciBhZT1ZKHEs''@;'; put 'put ''aWUpO3Euc3RhdENhY2hlW2FlXT1xLnN0YXRDYWNoZVtlZV0scS5jYWNoZVthZV09cS5jYWNoZVtlZV19fXJldHVybiBpZX0sTy5pc0lnbm9yZWQ9VSxPLmNoaWxkcmVuSWdub3JlZD1mdW5jdGlvbihxLEope3JldHVybiEhcS5pZ25vcmUubGVuZ3RoJiZxLmlnbm9yZS5zb21lKGZ1bmN0aW9u''@;'; put 'put ''KGVlKXtyZXR1cm4hKCFlZS5nbWF0Y2hlcnx8IWVlLmdtYXRjaGVyLm1hdGNoKEopKX0pfTt2YXIgRD1JKDM3MTApLFQ9SSgyNTIwKSxFPUkoMTE3MSksej1JKDQwOTUpLE49RS5NaW5pbWF0Y2g7ZnVuY3Rpb24gQihxLEope3JldHVybiBxLmxvY2FsZUNvbXBhcmUoSiwiZW4iKX1mdW5jdGlv''@;'; put 'put ''biBaKHEpe3ZhciBKPW51bGw7aWYoIi8qKiI9PT1xLnNsaWNlKC0zKSl7dmFyIGVlPXEucmVwbGFjZSgvKFwvXCpcKikrJC8sIiIpO0o9bmV3IE4oZWUse2RvdDohMH0pfXJldHVybnttYXRjaGVyOm5ldyBOKHEse2RvdDohMH0pLGdtYXRjaGVyOkp9fWZ1bmN0aW9uIFkocSxKKXt2YXIgZWU9''@;'; put 'put ''SjtyZXR1cm4gZWU9Ii8iPT09Si5jaGFyQXQoMCk/VC5qb2luKHEucm9vdCxKKTp6KEopfHwiIj09PUo/SjpxLmNoYW5nZWRDd2Q/VC5yZXNvbHZlKHEuY3dkLEopOlQucmVzb2x2ZShKKSwid2luMzIiPT09ai5wbGF0Zm9ybSYmKGVlPWVlLnJlcGxhY2UoL1xcL2csIi8iKSksZWV9ZnVuY3Rp''@;'; put 'put ''b24gVShxLEope3JldHVybiEhcS5pZ25vcmUubGVuZ3RoJiZxLmlnbm9yZS5zb21lKGZ1bmN0aW9uKGVlKXtyZXR1cm4gZWUubWF0Y2hlci5tYXRjaChKKXx8ISghZWUuZ21hdGNoZXJ8fCFlZS5nbWF0Y2hlci5tYXRjaChKKSl9KX19LDI4ODQ6KE0sTyxJKT0+e3ZhciBqPUkoNDE1NSksRz1J''@;'; put 'put ''KDUxMDgpO00uZXhwb3J0cz1sZTt2YXIgRD1JKDczMzQpLFQ9SSgxMTcxKSxFPUkoNTcxNyksej1JKDcxODcpLkV2ZW50RW1pdHRlcixOPUkoMjUyMCksQj1JKDkyODIpLFo9SSg0MDk1KSxZPUkoNDc1MSksVT1JKDY3NzIpLHE9VS5zZXRvcHRzLEo9VS5vd25Qcm9wLGVlPUkoNzg0NCkscmU9''@;'; put 'put ''KEkoOTUzOSksVS5jaGlsZHJlbklnbm9yZWQpLGllPVUuaXNJZ25vcmVkLHVlPUkoNzc4KTtmdW5jdGlvbiBsZShiLEEsRil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEEmJihGPUEsQT17fSksQXx8KEE9e30pLEEuc3luYyl7aWYoRil0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92''@;'; put 'put ''aWRlZCB0byBzeW5jIGdsb2IiKTtyZXR1cm4gWShiLEEpfXJldHVybiBuZXcgVyhiLEEsRil9bGUuc3luYz1ZO3ZhciBhZT1sZS5HbG9iU3luYz1ZLkdsb2JTeW5jO2Z1bmN0aW9uIFcoYixBLEYpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBBJiYoRj1BLEE9bnVsbCksQSYmQS5zeW5jKXtpZihG''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIHByb3ZpZGVkIHRvIHN5bmMgZ2xvYiIpO3JldHVybiBuZXcgYWUoYixBKX1pZighKHRoaXMgaW5zdGFuY2VvZiBXKSlyZXR1cm4gbmV3IFcoYixBLEYpO3EodGhpcyxiLEEpLHRoaXMuX2RpZFJlYWxQYXRoPSExO3ZhciBIPXRoaXMubWlu''@;'; put 'put ''aW1hdGNoLnNldC5sZW5ndGg7dGhpcy5tYXRjaGVzPW5ldyBBcnJheShIKSwiZnVuY3Rpb24iPT10eXBlb2YgRiYmKEY9dWUoRiksdGhpcy5vbigiZXJyb3IiLEYpLHRoaXMub24oImVuZCIsZnVuY3Rpb24ocCl7RihudWxsLHApfSkpO3ZhciBnPXRoaXM7aWYodGhpcy5fcHJvY2Vzc2luZz0w''@;'; put 'put ''LHRoaXMuX2VtaXRRdWV1ZT1bXSx0aGlzLl9wcm9jZXNzUXVldWU9W10sdGhpcy5wYXVzZWQ9ITEsdGhpcy5ub3Byb2Nlc3MpcmV0dXJuIHRoaXM7aWYoMD09PUgpcmV0dXJuIF8oKTtmb3IodmFyIEM9ITAsaz0wO2s8SDtrKyspdGhpcy5fcHJvY2Vzcyh0aGlzLm1pbmltYXRjaC5zZXRba10s''@;'; put 'put ''aywhMSxfKTtmdW5jdGlvbiBfKCl7LS1nLl9wcm9jZXNzaW5nLGcuX3Byb2Nlc3Npbmc8PTAmJihDP2oubmV4dFRpY2soZnVuY3Rpb24oKXtnLl9maW5pc2goKX0pOmcuX2ZpbmlzaCgpKX1DPSExfWxlLmdsb2I9bGUsbGUuaGFzTWFnaWM9ZnVuY3Rpb24oYixBKXt2YXIgRj1mdW5jdGlvbihD''@;'; put 'put ''LGspe2lmKG51bGw9PT1rfHwib2JqZWN0IiE9dHlwZW9mIGspcmV0dXJuIEM7Zm9yKHZhciBfPU9iamVjdC5rZXlzKGspLHA9Xy5sZW5ndGg7cC0tOylDW19bcF1dPWtbX1twXV07cmV0dXJuIEN9KHt9LEEpO0Yubm9wcm9jZXNzPSEwO3ZhciBIPW5ldyBXKGIsRikubWluaW1hdGNoLnNldDtp''@;'; put 'put ''ZighYilyZXR1cm4hMTtpZihILmxlbmd0aD4xKXJldHVybiEwO2Zvcih2YXIgZz0wO2c8SFswXS5sZW5ndGg7ZysrKWlmKCJzdHJpbmciIT10eXBlb2YgSFswXVtnXSlyZXR1cm4hMDtyZXR1cm4hMX0sbGUuR2xvYj1XLEUoVyx6KSxXLnByb3RvdHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7aWYo''@;'; put 'put ''Qih0aGlzIGluc3RhbmNlb2YgVyksIXRoaXMuYWJvcnRlZCl7aWYodGhpcy5yZWFscGF0aCYmIXRoaXMuX2RpZFJlYWxwYXRoKXJldHVybiB0aGlzLl9yZWFscGF0aCgpO1UuZmluaXNoKHRoaXMpLHRoaXMuZW1pdCgiZW5kIix0aGlzLmZvdW5kKX19LFcucHJvdG90eXBlLl9yZWFscGF0aD1m''@;'; put 'put ''dW5jdGlvbigpe2lmKCF0aGlzLl9kaWRSZWFscGF0aCl7dGhpcy5fZGlkUmVhbHBhdGg9ITA7dmFyIGI9dGhpcy5tYXRjaGVzLmxlbmd0aDtpZigwPT09YilyZXR1cm4gdGhpcy5fZmluaXNoKCk7Zm9yKHZhciBBPXRoaXMsRj0wO0Y8dGhpcy5tYXRjaGVzLmxlbmd0aDtGKyspdGhpcy5fcmVh''@;'; put 'put ''bHBhdGhTZXQoRixIKX1mdW5jdGlvbiBIKCl7MD09LS1iJiZBLl9maW5pc2goKX19LFcucHJvdG90eXBlLl9yZWFscGF0aFNldD1mdW5jdGlvbihiLEEpe3ZhciBGPXRoaXMubWF0Y2hlc1tiXTtpZighRilyZXR1cm4gQSgpO3ZhciBIPU9iamVjdC5rZXlzKEYpLGc9dGhpcyxDPUgubGVuZ3Ro''@;'; put 'put ''O2lmKDA9PT1DKXJldHVybiBBKCk7dmFyIGs9dGhpcy5tYXRjaGVzW2JdPU9iamVjdC5jcmVhdGUobnVsbCk7SC5mb3JFYWNoKGZ1bmN0aW9uKF8scCl7Xz1nLl9tYWtlQWJzKF8pLEQucmVhbHBhdGgoXyxnLnJlYWxwYXRoQ2FjaGUsZnVuY3Rpb24odyxLKXt3PyJzdGF0Ij09PXcuc3lzY2Fs''@;'; put 'put ''bD9rW19dPSEwOmcuZW1pdCgiZXJyb3IiLHcpOmtbS109ITAsMD09LS1DJiYoZy5tYXRjaGVzW2JdPWssQSgpKX0pfSl9LFcucHJvdG90eXBlLl9tYXJrPWZ1bmN0aW9uKGIpe3JldHVybiBVLm1hcmsodGhpcyxiKX0sVy5wcm90b3R5cGUuX21ha2VBYnM9ZnVuY3Rpb24oYil7cmV0dXJuIFUu''@;'; put 'put ''bWFrZUFicyh0aGlzLGIpfSxXLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe3RoaXMuYWJvcnRlZD0hMCx0aGlzLmVtaXQoImFib3J0Iil9LFcucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5wYXVzZWR8fCh0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXQoInBhdXNlIikpfSxXLnBy''@;'; put 'put ''b3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXtpZih0aGlzLnBhdXNlZCl7aWYodGhpcy5lbWl0KCJyZXN1bWUiKSx0aGlzLnBhdXNlZD0hMSx0aGlzLl9lbWl0UXVldWUubGVuZ3RoKXt2YXIgYj10aGlzLl9lbWl0UXVldWUuc2xpY2UoMCk7dGhpcy5fZW1pdFF1ZXVlLmxlbmd0aD0wO2Zvcih2''@;'; put 'put ''YXIgQT0wO0E8Yi5sZW5ndGg7QSsrKXt2YXIgRj1iW0FdO3RoaXMuX2VtaXRNYXRjaChGWzBdLEZbMV0pfX1pZih0aGlzLl9wcm9jZXNzUXVldWUubGVuZ3RoKXt2YXIgSD10aGlzLl9wcm9jZXNzUXVldWUuc2xpY2UoMCk7Zm9yKHRoaXMuX3Byb2Nlc3NRdWV1ZS5sZW5ndGg9MCxBPTA7QTxI''@;'; put 'put ''Lmxlbmd0aDtBKyspe3ZhciBnPUhbQV07dGhpcy5fcHJvY2Vzc2luZy0tLHRoaXMuX3Byb2Nlc3MoZ1swXSxnWzFdLGdbMl0sZ1szXSl9fX19LFcucHJvdG90eXBlLl9wcm9jZXNzPWZ1bmN0aW9uKGIsQSxGLEgpe2lmKEIodGhpcyBpbnN0YW5jZW9mIFcpLEIoImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IEgpLCF0aGlzLmFib3J0ZWQpaWYodGhpcy5fcHJvY2Vzc2luZysrLHRoaXMucGF1c2VkKXRoaXMuX3Byb2Nlc3NRdWV1ZS5wdXNoKFtiLEEsRixIXSk7ZWxzZXtmb3IodmFyIGcsQz0wOyJzdHJpbmciPT10eXBlb2YgYltDXTspQysrO3N3aXRjaChDKXtjYXNlIGIubGVuZ3RoOnJldHVybiB2''@;'; put 'put ''b2lkIHRoaXMuX3Byb2Nlc3NTaW1wbGUoYi5qb2luKCIvIiksQSxIKTtjYXNlIDA6Zz1udWxsO2JyZWFrO2RlZmF1bHQ6Zz1iLnNsaWNlKDAsQykuam9pbigiLyIpfXZhciBrLF89Yi5zbGljZShDKTtudWxsPT09Zz9rPSIuIjooKFooZyl8fFooYi5tYXAoZnVuY3Rpb24odyl7cmV0dXJuInN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiB3P3c6IlsqXSJ9KS5qb2luKCIvIikpKSYmKGcmJlooZyl8fChnPSIvIitnKSksaz1nKTt2YXIgcD10aGlzLl9tYWtlQWJzKGspO2lmKHJlKHRoaXMsaykpcmV0dXJuIEgoKTtfWzBdPT09VC5HTE9CU1RBUj90aGlzLl9wcm9jZXNzR2xvYlN0YXIoZyxrLHAsXyxBLEYs''@;'; put 'put ''SCk6dGhpcy5fcHJvY2Vzc1JlYWRkaXIoZyxrLHAsXyxBLEYsSCl9fSxXLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRkaXI9ZnVuY3Rpb24oYixBLEYsSCxnLEMsayl7dmFyIF89dGhpczt0aGlzLl9yZWFkZGlyKEYsQyxmdW5jdGlvbihwLHcpe3JldHVybiBfLl9wcm9jZXNzUmVhZGRpcjIoYixB''@;'; put 'put ''LEYsSCxnLEMsdyxrKX0pfSxXLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRkaXIyPWZ1bmN0aW9uKGIsQSxGLEgsZyxDLGssXyl7aWYoIWspcmV0dXJuIF8oKTtmb3IodmFyIHA9SFswXSx3PSEhdGhpcy5taW5pbWF0Y2gubmVnYXRlLHRlPXRoaXMuZG90fHwiLiI9PT1wLl9nbG9iLmNoYXJBdCgw''@;'; put 'put ''KSxjZT1bXSxoZT0wO2hlPGsubGVuZ3RoO2hlKyspKCIuIiE9PShMZT1rW2hlXSkuY2hhckF0KDApfHx0ZSkmJih3JiYhYj8hTGUubWF0Y2gocCk6TGUubWF0Y2gocCkpJiZjZS5wdXNoKExlKTt2YXIgU2U9Y2UubGVuZ3RoO2lmKDA9PT1TZSlyZXR1cm4gXygpO2lmKDE9PT1ILmxlbmd0aCYm''@;'; put 'put ''IXRoaXMubWFyayYmIXRoaXMuc3RhdCl7Zm9yKHRoaXMubWF0Y2hlc1tnXXx8KHRoaXMubWF0Y2hlc1tnXT1PYmplY3QuY3JlYXRlKG51bGwpKSxoZT0wO2hlPFNlO2hlKyspe3ZhciBMZT1jZVtoZV07YiYmKExlPSIvIiE9PWI/YisiLyIrTGU6YitMZSksIi8iIT09TGUuY2hhckF0KDApfHx0''@;'; put 'put ''aGlzLm5vbW91bnR8fChMZT1OLmpvaW4odGhpcy5yb290LExlKSksdGhpcy5fZW1pdE1hdGNoKGcsTGUpfXJldHVybiBfKCl9Zm9yKEguc2hpZnQoKSxoZT0wO2hlPFNlO2hlKyspTGU9Y2VbaGVdLGImJihMZT0iLyIhPT1iP2IrIi8iK0xlOmIrTGUpLHRoaXMuX3Byb2Nlc3MoW0xlXS5jb25j''@;'; put 'put ''YXQoSCksZyxDLF8pO18oKX0sVy5wcm90b3R5cGUuX2VtaXRNYXRjaD1mdW5jdGlvbihiLEEpe2lmKCF0aGlzLmFib3J0ZWQmJiFpZSh0aGlzLEEpKWlmKHRoaXMucGF1c2VkKXRoaXMuX2VtaXRRdWV1ZS5wdXNoKFtiLEFdKTtlbHNle3ZhciBGPVooQSk/QTp0aGlzLl9tYWtlQWJzKEEpO2lm''@;'; put 'put ''KHRoaXMubWFyayYmKEE9dGhpcy5fbWFyayhBKSksdGhpcy5hYnNvbHV0ZSYmKEE9RiksIXRoaXMubWF0Y2hlc1tiXVtBXSl7aWYodGhpcy5ub2Rpcil7dmFyIEg9dGhpcy5jYWNoZVtGXTtpZigiRElSIj09PUh8fEFycmF5LmlzQXJyYXkoSCkpcmV0dXJufXRoaXMubWF0Y2hlc1tiXVtBXT0h''@;'; put 'put ''MDt2YXIgZz10aGlzLnN0YXRDYWNoZVtGXTtnJiZ0aGlzLmVtaXQoInN0YXQiLEEsZyksdGhpcy5lbWl0KCJtYXRjaCIsQSl9fX0sVy5wcm90b3R5cGUuX3JlYWRkaXJJbkdsb2JTdGFyPWZ1bmN0aW9uKGIsQSl7aWYoIXRoaXMuYWJvcnRlZCl7aWYodGhpcy5mb2xsb3cpcmV0dXJuIHRoaXMu''@;'; put 'put ''X3JlYWRkaXIoYiwhMSxBKTt2YXIgRj10aGlzLEg9ZWUoImxzdGF0XDAiK2IsZnVuY3Rpb24oZyxDKXtpZihnJiYiRU5PRU5UIj09PWcuY29kZSlyZXR1cm4gQSgpO3ZhciBrPUMmJkMuaXNTeW1ib2xpY0xpbmsoKTtGLnN5bWxpbmtzW2JdPWssa3x8IUN8fEMuaXNEaXJlY3RvcnkoKT9GLl9y''@;'; put 'put ''ZWFkZGlyKGIsITEsQSk6KEYuY2FjaGVbYl09IkZJTEUiLEEoKSl9KTtIJiZGLmZzLmxzdGF0KGIsSCl9fSxXLnByb3RvdHlwZS5fcmVhZGRpcj1mdW5jdGlvbihiLEEsRil7aWYoIXRoaXMuYWJvcnRlZCYmKEY9ZWUoInJlYWRkaXJcMCIrYisiXDAiK0EsRikpKXtpZihBJiYhSih0aGlzLnN5''@;'; put 'put ''bWxpbmtzLGIpKXJldHVybiB0aGlzLl9yZWFkZGlySW5HbG9iU3RhcihiLEYpO2lmKEoodGhpcy5jYWNoZSxiKSl7dmFyIEg9dGhpcy5jYWNoZVtiXTtpZighSHx8IkZJTEUiPT09SClyZXR1cm4gRigpO2lmKEFycmF5LmlzQXJyYXkoSCkpcmV0dXJuIEYobnVsbCxIKX10aGlzLmZzLnJlYWRk''@;'; put 'put ''aXIoYixmdW5jdGlvbihnLEMsayl7cmV0dXJuIGZ1bmN0aW9uKF8scCl7Xz9nLl9yZWFkZGlyRXJyb3IoQyxfLGspOmcuX3JlYWRkaXJFbnRyaWVzKEMscCxrKX19KHRoaXMsYixGKSl9fSxXLnByb3RvdHlwZS5fcmVhZGRpckVudHJpZXM9ZnVuY3Rpb24oYixBLEYpe2lmKCF0aGlzLmFib3J0''@;'; put 'put ''ZWQpe2lmKCF0aGlzLm1hcmsmJiF0aGlzLnN0YXQpZm9yKHZhciBIPTA7SDxBLmxlbmd0aDtIKyspe3ZhciBnPUFbSF07dGhpcy5jYWNoZVtnPSIvIj09PWI/YitnOmIrIi8iK2ddPSEwfXJldHVybiB0aGlzLmNhY2hlW2JdPUEsRihudWxsLEEpfX0sVy5wcm90b3R5cGUuX3JlYWRkaXJFcnJv''@;'; put 'put ''cj1mdW5jdGlvbihiLEEsRil7aWYoIXRoaXMuYWJvcnRlZCl7c3dpdGNoKEEuY29kZSl7Y2FzZSJFTk9UU1VQIjpjYXNlIkVOT1RESVIiOnZhciBIPXRoaXMuX21ha2VBYnMoYik7aWYodGhpcy5jYWNoZVtIXT0iRklMRSIsSD09PXRoaXMuY3dkQWJzKXt2YXIgZz1uZXcgRXJyb3IoQS5jb2Rl''@;'; put 'put ''KyIgaW52YWxpZCBjd2QgIit0aGlzLmN3ZCk7Zy5wYXRoPXRoaXMuY3dkLGcuY29kZT1BLmNvZGUsdGhpcy5lbWl0KCJlcnJvciIsZyksdGhpcy5hYm9ydCgpfWJyZWFrO2Nhc2UiRU5PRU5UIjpjYXNlIkVMT09QIjpjYXNlIkVOQU1FVE9PTE9ORyI6Y2FzZSJVTktOT1dOIjp0aGlzLmNhY2hl''@;'; put 'put ''W3RoaXMuX21ha2VBYnMoYildPSExO2JyZWFrO2RlZmF1bHQ6dGhpcy5jYWNoZVt0aGlzLl9tYWtlQWJzKGIpXT0hMSx0aGlzLnN0cmljdCYmKHRoaXMuZW1pdCgiZXJyb3IiLEEpLHRoaXMuYWJvcnQoKSksdGhpcy5zaWxlbnR8fEcuZXJyb3IoImdsb2IgZXJyb3IiLEEpfXJldHVybiBGKCl9''@;'; put 'put ''fSxXLnByb3RvdHlwZS5fcHJvY2Vzc0dsb2JTdGFyPWZ1bmN0aW9uKGIsQSxGLEgsZyxDLGspe3ZhciBfPXRoaXM7dGhpcy5fcmVhZGRpcihGLEMsZnVuY3Rpb24ocCx3KXtfLl9wcm9jZXNzR2xvYlN0YXIyKGIsQSxGLEgsZyxDLHcsayl9KX0sVy5wcm90b3R5cGUuX3Byb2Nlc3NHbG9iU3Rh''@;'; put 'put ''cjI9ZnVuY3Rpb24oYixBLEYsSCxnLEMsayxfKXtpZighaylyZXR1cm4gXygpO3ZhciBwPUguc2xpY2UoMSksdz1iP1tiXTpbXSxLPXcuY29uY2F0KHApO3RoaXMuX3Byb2Nlc3MoSyxnLCExLF8pO3ZhciBjZT1rLmxlbmd0aDtpZih0aGlzLnN5bWxpbmtzW0ZdJiZDKXJldHVybiBfKCk7Zm9y''@;'; put 'put ''KHZhciBoZT0wO2hlPGNlO2hlKyspaWYoIi4iIT09a1toZV0uY2hhckF0KDApfHx0aGlzLmRvdCl7dmFyIFNlPXcuY29uY2F0KGtbaGVdLHApO3RoaXMuX3Byb2Nlc3MoU2UsZywhMCxfKTt2YXIgTGU9dy5jb25jYXQoa1toZV0sSCk7dGhpcy5fcHJvY2VzcyhMZSxnLCEwLF8pfV8oKX0sVy5w''@;'; put 'put ''cm90b3R5cGUuX3Byb2Nlc3NTaW1wbGU9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPXRoaXM7dGhpcy5fc3RhdChiLGZ1bmN0aW9uKGcsQyl7SC5fcHJvY2Vzc1NpbXBsZTIoYixBLGcsQyxGKX0pfSxXLnByb3RvdHlwZS5fcHJvY2Vzc1NpbXBsZTI9ZnVuY3Rpb24oYixBLEYsSCxnKXtpZih0aGlz''@;'; put 'put ''Lm1hdGNoZXNbQV18fCh0aGlzLm1hdGNoZXNbQV09T2JqZWN0LmNyZWF0ZShudWxsKSksIUgpcmV0dXJuIGcoKTtpZihiJiZaKGIpJiYhdGhpcy5ub21vdW50KXt2YXIgQz0vW1wvXFxdJC8udGVzdChiKTsiLyI9PT1iLmNoYXJBdCgwKT9iPU4uam9pbih0aGlzLnJvb3QsYik6KGI9Ti5yZXNv''@;'; put 'put ''bHZlKHRoaXMucm9vdCxiKSxDJiYoYis9Ii8iKSl9IndpbjMyIj09PWoucGxhdGZvcm0mJihiPWIucmVwbGFjZSgvXFwvZywiLyIpKSx0aGlzLl9lbWl0TWF0Y2goQSxiKSxnKCl9LFcucHJvdG90eXBlLl9zdGF0PWZ1bmN0aW9uKGIsQSl7dmFyIEY9dGhpcy5fbWFrZUFicyhiKSxIPSIvIj09''@;'; put 'put ''PWIuc2xpY2UoLTEpO2lmKGIubGVuZ3RoPnRoaXMubWF4TGVuZ3RoKXJldHVybiBBKCk7aWYoIXRoaXMuc3RhdCYmSih0aGlzLmNhY2hlLEYpKXt2YXIgZz10aGlzLmNhY2hlW0ZdO2lmKEFycmF5LmlzQXJyYXkoZykmJihnPSJESVIiKSwhSHx8IkRJUiI9PT1nKXJldHVybiBBKG51bGwsZyk7''@;'; put 'put ''aWYoSCYmIkZJTEUiPT09ZylyZXR1cm4gQSgpfXZhciBDPXRoaXMuc3RhdENhY2hlW0ZdO2lmKHZvaWQgMCE9PUMpe2lmKCExPT09QylyZXR1cm4gQShudWxsLEMpO3ZhciBrPUMuaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSI7cmV0dXJuIEgmJiJGSUxFIj09PWs/QSgpOkEobnVsbCxrLEMp''@;'; put 'put ''fXZhciBfPXRoaXMscD1lZSgic3RhdFwwIitGLGZ1bmN0aW9uKHcsSyl7aWYoSyYmSy5pc1N5bWJvbGljTGluaygpKXJldHVybiBfLmZzLnN0YXQoRixmdW5jdGlvbih0ZSxjZSl7dGU/Xy5fc3RhdDIoYixGLG51bGwsSyxBKTpfLl9zdGF0MihiLEYsdGUsY2UsQSl9KTtfLl9zdGF0MihiLEYs''@;'; put 'put ''dyxLLEEpfSk7cCYmXy5mcy5sc3RhdChGLHApfSxXLnByb3RvdHlwZS5fc3RhdDI9ZnVuY3Rpb24oYixBLEYsSCxnKXtpZihGJiYoIkVOT0VOVCI9PT1GLmNvZGV8fCJFTk9URElSIj09PUYuY29kZSkpcmV0dXJuIHRoaXMuc3RhdENhY2hlW0FdPSExLGcoKTt2YXIgQz0iLyI9PT1iLnNsaWNl''@;'; put 'put ''KC0xKTtpZih0aGlzLnN0YXRDYWNoZVtBXT1ILCIvIj09PUEuc2xpY2UoLTEpJiZIJiYhSC5pc0RpcmVjdG9yeSgpKXJldHVybiBnKG51bGwsITEsSCk7dmFyIGs9ITA7cmV0dXJuIEgmJihrPUguaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSIpLHRoaXMuY2FjaGVbQV09dGhpcy5jYWNoZVtB''@;'; put 'put ''XXx8ayxDJiYiRklMRSI9PT1rP2coKTpnKG51bGwsayxIKX19LDQ3NTE6KE0sTyxJKT0+e3ZhciBqPUkoNTEwOCksRz1JKDQxNTUpO00uZXhwb3J0cz1KLEouR2xvYlN5bmM9ZWU7dmFyIEQ9SSg3MzM0KSxUPUkoMTE3MSksRT0oSSgyODg0KSxJKDk1MzkpLEkoMjUyMCkpLHo9SSg5MjgyKSxO''@;'; put 'put ''PUkoNDA5NSksQj1JKDY3NzIpLFo9Qi5zZXRvcHRzLFk9Qi5vd25Qcm9wLFU9Qi5jaGlsZHJlbklnbm9yZWQscT1CLmlzSWdub3JlZDtmdW5jdGlvbiBKKHJlLGllKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgaWV8fDM9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImNh''@;'; put 'put ''bGxiYWNrIHByb3ZpZGVkIHRvIHN5bmMgZ2xvYlxuU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYi9pc3N1ZXMvMTY3Iik7cmV0dXJuIG5ldyBlZShyZSxpZSkuZm91bmR9ZnVuY3Rpb24gZWUocmUsaWUpe2lmKCFyZSl0aHJvdyBuZXcgRXJyb3IoIm11c3QgcHJvdmlk''@;'; put 'put ''ZSBwYXR0ZXJuIik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGllfHwzPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBwcm92aWRlZCB0byBzeW5jIGdsb2JcblNlZTogaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ub2RlLWdsb2IvaXNzdWVzLzE2NyIp''@;'; put 'put ''O2lmKCEodGhpcyBpbnN0YW5jZW9mIGVlKSlyZXR1cm4gbmV3IGVlKHJlLGllKTtpZihaKHRoaXMscmUsaWUpLHRoaXMubm9wcm9jZXNzKXJldHVybiB0aGlzO3ZhciB1ZT10aGlzLm1pbmltYXRjaC5zZXQubGVuZ3RoO3RoaXMubWF0Y2hlcz1uZXcgQXJyYXkodWUpO2Zvcih2YXIgbGU9MDts''@;'; put 'put ''ZTx1ZTtsZSsrKXRoaXMuX3Byb2Nlc3ModGhpcy5taW5pbWF0Y2guc2V0W2xlXSxsZSwhMSk7dGhpcy5fZmluaXNoKCl9ZWUucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXtpZih6Lm9rKHRoaXMgaW5zdGFuY2VvZiBlZSksdGhpcy5yZWFscGF0aCl7dmFyIHJlPXRoaXM7dGhpcy5tYXRj''@;'; put 'put ''aGVzLmZvckVhY2goZnVuY3Rpb24oaWUsdWUpe3ZhciBsZT1yZS5tYXRjaGVzW3VlXT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcih2YXIgYWUgaW4gaWUpdHJ5e2FlPXJlLl9tYWtlQWJzKGFlKSxsZVtELnJlYWxwYXRoU3luYyhhZSxyZS5yZWFscGF0aENhY2hlKV09ITB9Y2F0Y2goVyl7aWYo''@;'; put 'put ''InN0YXQiIT09Vy5zeXNjYWxsKXRocm93IFc7bGVbcmUuX21ha2VBYnMoYWUpXT0hMH19KX1CLmZpbmlzaCh0aGlzKX0sZWUucHJvdG90eXBlLl9wcm9jZXNzPWZ1bmN0aW9uKHJlLGllLHVlKXt6Lm9rKHRoaXMgaW5zdGFuY2VvZiBlZSk7Zm9yKHZhciBsZSxhZT0wOyJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgcmVbYWVdOylhZSsrO3N3aXRjaChhZSl7Y2FzZSByZS5sZW5ndGg6cmV0dXJuIHZvaWQgdGhpcy5fcHJvY2Vzc1NpbXBsZShyZS5qb2luKCIvIiksaWUpO2Nhc2UgMDpsZT1udWxsO2JyZWFrO2RlZmF1bHQ6bGU9cmUuc2xpY2UoMCxhZSkuam9pbigiLyIpfXZhciBXLGI9cmUuc2xpY2Uo''@;'; put 'put ''YWUpO251bGw9PT1sZT9XPSIuIjooKE4obGUpfHxOKHJlLm1hcChmdW5jdGlvbihGKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEY/RjoiWypdIn0pLmpvaW4oIi8iKSkpJiYobGUmJk4obGUpfHwobGU9Ii8iK2xlKSksVz1sZSk7dmFyIEE9dGhpcy5fbWFrZUFicyhXKTtVKHRoaXMsVyl8fChi''@;'; put 'put ''WzBdPT09VC5HTE9CU1RBUj90aGlzLl9wcm9jZXNzR2xvYlN0YXIobGUsVyxBLGIsaWUsdWUpOnRoaXMuX3Byb2Nlc3NSZWFkZGlyKGxlLFcsQSxiLGllLHVlKSl9LGVlLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRkaXI9ZnVuY3Rpb24ocmUsaWUsdWUsbGUsYWUsVyl7dmFyIGI9dGhpcy5fcmVh''@;'; put 'put ''ZGRpcih1ZSxXKTtpZihiKXtmb3IodmFyIEE9bGVbMF0sRj0hIXRoaXMubWluaW1hdGNoLm5lZ2F0ZSxnPXRoaXMuZG90fHwiLiI9PT1BLl9nbG9iLmNoYXJBdCgwKSxDPVtdLGs9MDtrPGIubGVuZ3RoO2srKykoIi4iIT09KHc9YltrXSkuY2hhckF0KDApfHxnKSYmKEYmJiFyZT8hdy5tYXRj''@;'; put 'put ''aChBKTp3Lm1hdGNoKEEpKSYmQy5wdXNoKHcpO3ZhciBfPUMubGVuZ3RoO2lmKDAhPT1fKWlmKDEhPT1sZS5sZW5ndGh8fHRoaXMubWFya3x8dGhpcy5zdGF0KWZvcihsZS5zaGlmdCgpLGs9MDtrPF87aysrKXc9Q1trXSx0aGlzLl9wcm9jZXNzKChyZT9bcmUsd106W3ddKS5jb25jYXQobGUp''@;'; put 'put ''LGFlLFcpO2Vsc2UgZm9yKHRoaXMubWF0Y2hlc1thZV18fCh0aGlzLm1hdGNoZXNbYWVdPU9iamVjdC5jcmVhdGUobnVsbCkpLGs9MDtrPF87aysrKXt2YXIgdz1DW2tdO3JlJiYodz0iLyIhPT1yZS5zbGljZSgtMSk/cmUrIi8iK3c6cmUrdyksIi8iIT09dy5jaGFyQXQoMCl8fHRoaXMubm9t''@;'; put 'put ''b3VudHx8KHc9RS5qb2luKHRoaXMucm9vdCx3KSksdGhpcy5fZW1pdE1hdGNoKGFlLHcpfX19LGVlLnByb3RvdHlwZS5fZW1pdE1hdGNoPWZ1bmN0aW9uKHJlLGllKXtpZighcSh0aGlzLGllKSl7dmFyIHVlPXRoaXMuX21ha2VBYnMoaWUpO2lmKHRoaXMubWFyayYmKGllPXRoaXMuX21hcmso''@;'; put 'put ''aWUpKSx0aGlzLmFic29sdXRlJiYoaWU9dWUpLCF0aGlzLm1hdGNoZXNbcmVdW2llXSl7aWYodGhpcy5ub2Rpcil7dmFyIGxlPXRoaXMuY2FjaGVbdWVdO2lmKCJESVIiPT09bGV8fEFycmF5LmlzQXJyYXkobGUpKXJldHVybn10aGlzLm1hdGNoZXNbcmVdW2llXT0hMCx0aGlzLnN0YXQmJnRo''@;'; put 'put ''aXMuX3N0YXQoaWUpfX19LGVlLnByb3RvdHlwZS5fcmVhZGRpckluR2xvYlN0YXI9ZnVuY3Rpb24ocmUpe2lmKHRoaXMuZm9sbG93KXJldHVybiB0aGlzLl9yZWFkZGlyKHJlLCExKTt2YXIgaWUsdWU7dHJ5e3VlPXRoaXMuZnMubHN0YXRTeW5jKHJlKX1jYXRjaChhZSl7aWYoIkVOT0VOVCI9''@;'; put 'put ''PT1hZS5jb2RlKXJldHVybiBudWxsfXZhciBsZT11ZSYmdWUuaXNTeW1ib2xpY0xpbmsoKTtyZXR1cm4gdGhpcy5zeW1saW5rc1tyZV09bGUsbGV8fCF1ZXx8dWUuaXNEaXJlY3RvcnkoKT9pZT10aGlzLl9yZWFkZGlyKHJlLCExKTp0aGlzLmNhY2hlW3JlXT0iRklMRSIsaWV9LGVlLnByb3Rv''@;'; put 'put ''dHlwZS5fcmVhZGRpcj1mdW5jdGlvbihyZSxpZSl7aWYoaWUmJiFZKHRoaXMuc3ltbGlua3MscmUpKXJldHVybiB0aGlzLl9yZWFkZGlySW5HbG9iU3RhcihyZSk7aWYoWSh0aGlzLmNhY2hlLHJlKSl7dmFyIHVlPXRoaXMuY2FjaGVbcmVdO2lmKCF1ZXx8IkZJTEUiPT09dWUpcmV0dXJuIG51''@;'; put 'put ''bGw7aWYoQXJyYXkuaXNBcnJheSh1ZSkpcmV0dXJuIHVlfXRyeXtyZXR1cm4gdGhpcy5fcmVhZGRpckVudHJpZXMocmUsdGhpcy5mcy5yZWFkZGlyU3luYyhyZSkpfWNhdGNoKGxlKXtyZXR1cm4gdGhpcy5fcmVhZGRpckVycm9yKHJlLGxlKSxudWxsfX0sZWUucHJvdG90eXBlLl9yZWFkZGly''@;'; put 'put ''RW50cmllcz1mdW5jdGlvbihyZSxpZSl7aWYoIXRoaXMubWFyayYmIXRoaXMuc3RhdClmb3IodmFyIHVlPTA7dWU8aWUubGVuZ3RoO3VlKyspe3ZhciBsZT1pZVt1ZV07dGhpcy5jYWNoZVtsZT0iLyI9PT1yZT9yZStsZTpyZSsiLyIrbGVdPSEwfXJldHVybiB0aGlzLmNhY2hlW3JlXT1pZSxp''@;'; put 'put ''ZX0sZWUucHJvdG90eXBlLl9yZWFkZGlyRXJyb3I9ZnVuY3Rpb24ocmUsaWUpe3N3aXRjaChpZS5jb2RlKXtjYXNlIkVOT1RTVVAiOmNhc2UiRU5PVERJUiI6dmFyIHVlPXRoaXMuX21ha2VBYnMocmUpO2lmKHRoaXMuY2FjaGVbdWVdPSJGSUxFIix1ZT09PXRoaXMuY3dkQWJzKXt2YXIgbGU9''@;'; put 'put ''bmV3IEVycm9yKGllLmNvZGUrIiBpbnZhbGlkIGN3ZCAiK3RoaXMuY3dkKTt0aHJvdyBsZS5wYXRoPXRoaXMuY3dkLGxlLmNvZGU9aWUuY29kZSxsZX1icmVhaztjYXNlIkVOT0VOVCI6Y2FzZSJFTE9PUCI6Y2FzZSJFTkFNRVRPT0xPTkciOmNhc2UiVU5LTk9XTiI6dGhpcy5jYWNoZVt0aGlz''@;'; put 'put ''Ll9tYWtlQWJzKHJlKV09ITE7YnJlYWs7ZGVmYXVsdDppZih0aGlzLmNhY2hlW3RoaXMuX21ha2VBYnMocmUpXT0hMSx0aGlzLnN0cmljdCl0aHJvdyBpZTt0aGlzLnNpbGVudHx8ai5lcnJvcigiZ2xvYiBlcnJvciIsaWUpfX0sZWUucHJvdG90eXBlLl9wcm9jZXNzR2xvYlN0YXI9ZnVuY3Rp''@;'; put 'put ''b24ocmUsaWUsdWUsbGUsYWUsVyl7dmFyIGI9dGhpcy5fcmVhZGRpcih1ZSxXKTtpZihiKXt2YXIgQT1sZS5zbGljZSgxKSxGPXJlP1tyZV06W10sSD1GLmNvbmNhdChBKTt0aGlzLl9wcm9jZXNzKEgsYWUsITEpO3ZhciBnPWIubGVuZ3RoO2lmKCF0aGlzLnN5bWxpbmtzW3VlXXx8IVcpZm9y''@;'; put 'put ''KHZhciBDPTA7QzxnO0MrKylpZigiLiIhPT1iW0NdLmNoYXJBdCgwKXx8dGhpcy5kb3Qpe3ZhciBrPUYuY29uY2F0KGJbQ10sQSk7dGhpcy5fcHJvY2VzcyhrLGFlLCEwKTt2YXIgXz1GLmNvbmNhdChiW0NdLGxlKTt0aGlzLl9wcm9jZXNzKF8sYWUsITApfX19LGVlLnByb3RvdHlwZS5fcHJv''@;'; put 'put ''Y2Vzc1NpbXBsZT1mdW5jdGlvbihyZSxpZSl7dmFyIHVlPXRoaXMuX3N0YXQocmUpO2lmKHRoaXMubWF0Y2hlc1tpZV18fCh0aGlzLm1hdGNoZXNbaWVdPU9iamVjdC5jcmVhdGUobnVsbCkpLHVlKXtpZihyZSYmTihyZSkmJiF0aGlzLm5vbW91bnQpe3ZhciBsZT0vW1wvXFxdJC8udGVzdChy''@;'; put 'put ''ZSk7Ii8iPT09cmUuY2hhckF0KDApP3JlPUUuam9pbih0aGlzLnJvb3QscmUpOihyZT1FLnJlc29sdmUodGhpcy5yb290LHJlKSxsZSYmKHJlKz0iLyIpKX0id2luMzIiPT09Ry5wbGF0Zm9ybSYmKHJlPXJlLnJlcGxhY2UoL1xcL2csIi8iKSksdGhpcy5fZW1pdE1hdGNoKGllLHJlKX19LGVl''@;'; put 'put ''LnByb3RvdHlwZS5fc3RhdD1mdW5jdGlvbihyZSl7dmFyIGllPXRoaXMuX21ha2VBYnMocmUpLHVlPSIvIj09PXJlLnNsaWNlKC0xKTtpZihyZS5sZW5ndGg+dGhpcy5tYXhMZW5ndGgpcmV0dXJuITE7aWYoIXRoaXMuc3RhdCYmWSh0aGlzLmNhY2hlLGllKSl7dmFyIGxlPXRoaXMuY2FjaGVb''@;'; put 'put ''aWVdO2lmKEFycmF5LmlzQXJyYXkobGUpJiYobGU9IkRJUiIpLCF1ZXx8IkRJUiI9PT1sZSlyZXR1cm4gbGU7aWYodWUmJiJGSUxFIj09PWxlKXJldHVybiExfXZhciBhZT10aGlzLnN0YXRDYWNoZVtpZV07aWYoIWFlKXt2YXIgVzt0cnl7Vz10aGlzLmZzLmxzdGF0U3luYyhpZSl9Y2F0Y2go''@;'; put 'put ''Yil7aWYoYiYmKCJFTk9FTlQiPT09Yi5jb2RlfHwiRU5PVERJUiI9PT1iLmNvZGUpKXJldHVybiB0aGlzLnN0YXRDYWNoZVtpZV09ITEsITF9aWYoVyYmVy5pc1N5bWJvbGljTGluaygpKXRyeXthZT10aGlzLmZzLnN0YXRTeW5jKGllKX1jYXRjaHthZT1XfWVsc2UgYWU9V31yZXR1cm4gdGhp''@;'; put 'put ''cy5zdGF0Q2FjaGVbaWVdPWFlLGxlPSEwLGFlJiYobGU9YWUuaXNEaXJlY3RvcnkoKT8iRElSIjoiRklMRSIpLHRoaXMuY2FjaGVbaWVdPXRoaXMuY2FjaGVbaWVdfHxsZSwoIXVlfHwiRklMRSIhPT1sZSkmJmxlfSxlZS5wcm90b3R5cGUuX21hcms9ZnVuY3Rpb24ocmUpe3JldHVybiBCLm1h''@;'; put 'put ''cmsodGhpcyxyZSl9LGVlLnByb3RvdHlwZS5fbWFrZUFicz1mdW5jdGlvbihyZSl7cmV0dXJuIEIubWFrZUFicyh0aGlzLHJlKX19LDcyOTY6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDIxMCkoIiVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJSIsITApO2lmKGopdHJ5''@;'; put 'put ''e2ooW10sImxlbmd0aCIpfWNhdGNoe2o9bnVsbH1NLmV4cG9ydHM9an0sNjQ1ODpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1mdW5jdGlvbihJKXtpZihudWxsPT09SXx8Im9iamVjdCIhPXR5cGVvZiBJKXJldHVybiBJO2lmKEkgaW5zdGFuY2VvZiBPYmplY3QpdmFyIGo9e19fcHJvdG9f''@;'; put 'put ''XzpPKEkpfTtlbHNlIGo9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoSSkuZm9yRWFjaChmdW5jdGlvbihHKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaixHLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSSxHKSl9KSxqfTt2YXIg''@;'; put 'put ''Tz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKEkpe3JldHVybiBJLl9fcHJvdG9fX319LDc3OihNLE8sSSk9Pnt2YXIgaixHLEQ9SSg0MTU1KSxUPUkoNTEwOCksRT1JKDU0NDMpLHo9SSgyMTYxKSxOPUkoODUyMCksQj1JKDY0NTgpLFo9SSg5NTM5KTtmdW5jdGlvbiBZKGxlLGFl''@;'; put 'put ''KXtPYmplY3QuZGVmaW5lUHJvcGVydHkobGUsaix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFlfX0pfSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wuZm9yPyhqPVN5bWJvbC5mb3IoImdyYWNlZnVsLWZzLnF1ZXVlIiksRz1TeW1ib2wuZm9yKCJn''@;'; put 'put ''cmFjZWZ1bC1mcy5wcmV2aW91cyIpKTooaj0iX19fZ3JhY2VmdWwtZnMucXVldWUiLEc9Il9fX2dyYWNlZnVsLWZzLnByZXZpb3VzIik7dmFyIFUscT1mdW5jdGlvbigpe307ZnVuY3Rpb24gZWUobGUpe3oobGUpLGxlLmdyYWNlZnVsaWZ5PWVlLGxlLmNyZWF0ZVJlYWRTdHJlYW09ZnVuY3Rp''@;'; put 'put ''b24oaGUsU2Upe3JldHVybiBuZXcgbGUuUmVhZFN0cmVhbShoZSxTZSl9LGxlLmNyZWF0ZVdyaXRlU3RyZWFtPWZ1bmN0aW9uKGhlLFNlKXtyZXR1cm4gbmV3IGxlLldyaXRlU3RyZWFtKGhlLFNlKX07dmFyIGFlPWxlLnJlYWRGaWxlO2xlLnJlYWRGaWxlPWZ1bmN0aW9uKGhlLFNlLExlKXty''@;'; put 'put ''ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgU2UmJihMZT1TZSxTZT1udWxsKSxmdW5jdGlvbiBIZSh4ZSxEZSxCZSxHZSl7cmV0dXJuIGFlKHhlLERlLGZ1bmN0aW9uKFVlKXshVWV8fCJFTUZJTEUiIT09VWUuY29kZSYmIkVORklMRSIhPT1VZS5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBCZSYm''@;'; put 'put ''QmUuYXBwbHkodGhpcyxhcmd1bWVudHMpOnJlKFtIZSxbeGUsRGUsQmVdLFVlLEdlfHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShoZSxTZSxMZSl9O3ZhciBXPWxlLndyaXRlRmlsZTtsZS53cml0ZUZpbGU9ZnVuY3Rpb24oaGUsU2UsTGUsSGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBMZSYmKEhlPUxlLExlPW51bGwpLGZ1bmN0aW9uIHhlKERlLEJlLEdlLFVlLHFlKXtyZXR1cm4gVyhEZSxCZSxHZSxmdW5jdGlvbihvdCl7IW90fHwiRU1GSUxFIiE9PW90LmNvZGUmJiJFTkZJTEUiIT09b3QuY29kZT8iZnVuY3Rpb24iPT10eXBlb2YgVWUmJlVlLmFwcGx5KHRoaXMsYXJn''@;'; put 'put ''dW1lbnRzKTpyZShbeGUsW0RlLEJlLEdlLFVlXSxvdCxxZXx8RGF0ZS5ub3coKSxEYXRlLm5vdygpXSl9KX0oaGUsU2UsTGUsSGUpfTt2YXIgYj1sZS5hcHBlbmRGaWxlO2ImJihsZS5hcHBlbmRGaWxlPWZ1bmN0aW9uKGhlLFNlLExlLEhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTGUm''@;'; put 'put ''JihIZT1MZSxMZT1udWxsKSxmdW5jdGlvbiB4ZShEZSxCZSxHZSxVZSxxZSl7cmV0dXJuIGIoRGUsQmUsR2UsZnVuY3Rpb24ob3QpeyFvdHx8IkVNRklMRSIhPT1vdC5jb2RlJiYiRU5GSUxFIiE9PW90LmNvZGU/ImZ1bmN0aW9uIj09dHlwZW9mIFVlJiZVZS5hcHBseSh0aGlzLGFyZ3VtZW50''@;'; put 'put ''cyk6cmUoW3hlLFtEZSxCZSxHZSxVZV0sb3QscWV8fERhdGUubm93KCksRGF0ZS5ub3coKV0pfSl9KGhlLFNlLExlLEhlKX0pO3ZhciBBPWxlLmNvcHlGaWxlO0EmJihsZS5jb3B5RmlsZT1mdW5jdGlvbihoZSxTZSxMZSxIZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIExlJiYoSGU9TGUs''@;'; put 'put ''TGU9MCksZnVuY3Rpb24geGUoRGUsQmUsR2UsVWUscWUpe3JldHVybiBBKERlLEJlLEdlLGZ1bmN0aW9uKG90KXshb3R8fCJFTUZJTEUiIT09b3QuY29kZSYmIkVORklMRSIhPT1vdC5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBVZSYmVWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOnJlKFt4ZSxb''@;'; put 'put ''RGUsQmUsR2UsVWVdLG90LHFlfHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShoZSxTZSxMZSxIZSl9KTt2YXIgRj1sZS5yZWFkZGlyO2xlLnJlYWRkaXI9ZnVuY3Rpb24oaGUsU2UsTGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBTZSYmKExlPVNlLFNlPW51bGwpO3ZhciBIZT1ILnRlc3QoRC52''@;'; put 'put ''ZXJzaW9uKT9mdW5jdGlvbihEZSxCZSxHZSxVZSl7cmV0dXJuIEYoRGUseGUoRGUsQmUsR2UsVWUpKX06ZnVuY3Rpb24oRGUsQmUsR2UsVWUpe3JldHVybiBGKERlLEJlLHhlKERlLEJlLEdlLFVlKSl9O3JldHVybiBIZShoZSxTZSxMZSk7ZnVuY3Rpb24geGUoRGUsQmUsR2UsVWUpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihxZSxvdCl7IXFlfHwiRU1GSUxFIiE9PXFlLmNvZGUmJiJFTkZJTEUiIT09cWUuY29kZT8ob3QmJm90LnNvcnQmJm90LnNvcnQoKSwiZnVuY3Rpb24iPT10eXBlb2YgR2UmJkdlLmNhbGwodGhpcyxxZSxvdCkpOnJlKFtIZSxbRGUsQmUsR2VdLHFlLFVlfHxEYXRlLm5vdygp''@;'; put 'put ''LERhdGUubm93KCldKX19fTt2YXIgSD0vXnZbMC01XVwuLztpZigidjAuOCI9PT1ELnZlcnNpb24uc3Vic3RyKDAsNCkpe3ZhciBnPU4obGUpO3c9Zy5SZWFkU3RyZWFtLEs9Zy5Xcml0ZVN0cmVhbX12YXIgQz1sZS5SZWFkU3RyZWFtO0MmJih3LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEMu''@;'; put 'put ''cHJvdG90eXBlKSx3LnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7dmFyIGhlPXRoaXM7Y2UoaGUucGF0aCxoZS5mbGFncyxoZS5tb2RlLGZ1bmN0aW9uKFNlLExlKXtTZT8oaGUuYXV0b0Nsb3NlJiZoZS5kZXN0cm95KCksaGUuZW1pdCgiZXJyb3IiLFNlKSk6KGhlLmZkPUxlLGhlLmVtaXQo''@;'; put 'put ''Im9wZW4iLExlKSxoZS5yZWFkKCkpfSl9KTt2YXIgaz1sZS5Xcml0ZVN0cmVhbTtrJiYoSy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrLnByb3RvdHlwZSksSy5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3ZhciBoZT10aGlzO2NlKGhlLnBhdGgsaGUuZmxhZ3MsaGUubW9kZSxmdW5jdGlv''@;'; put 'put ''bihTZSxMZSl7U2U/KGhlLmRlc3Ryb3koKSxoZS5lbWl0KCJlcnJvciIsU2UpKTooaGUuZmQ9TGUsaGUuZW1pdCgib3BlbiIsTGUpKX0pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGxlLCJSZWFkU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHd9LHNldDpmdW5jdGlvbihoZSl7dz1o''@;'; put 'put ''ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobGUsIldyaXRlU3RyZWFtIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEt9LHNldDpmdW5jdGlvbihoZSl7Sz1oZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgXz13O09i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShsZSwiRmlsZVJlYWRTdHJlYW0iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gX30sc2V0OmZ1bmN0aW9uKGhlKXtfPWhlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBwPUs7ZnVuY3Rpb24gdyhoZSxTZSl7cmV0dXJuIHRoaXMgaW5zdGFu''@;'; put 'put ''Y2VvZiB3PyhDLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzKTp3LmFwcGx5KE9iamVjdC5jcmVhdGUody5wcm90b3R5cGUpLGFyZ3VtZW50cyl9ZnVuY3Rpb24gSyhoZSxTZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBLPyhrLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzKTpLLmFwcGx5''@;'; put 'put ''KE9iamVjdC5jcmVhdGUoSy5wcm90b3R5cGUpLGFyZ3VtZW50cyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGxlLCJGaWxlV3JpdGVTdHJlYW0iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sc2V0OmZ1bmN0aW9uKGhlKXtwPWhlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3Zh''@;'; put 'put ''ciB0ZT1sZS5vcGVuO2Z1bmN0aW9uIGNlKGhlLFNlLExlLEhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTGUmJihIZT1MZSxMZT1udWxsKSxmdW5jdGlvbiB4ZShEZSxCZSxHZSxVZSxxZSl7cmV0dXJuIHRlKERlLEJlLEdlLGZ1bmN0aW9uKG90LEZlKXshb3R8fCJFTUZJTEUiIT09b3Qu''@;'; put 'put ''Y29kZSYmIkVORklMRSIhPT1vdC5jb2RlPyJmdW5jdGlvbiI9PXR5cGVvZiBVZSYmVWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOnJlKFt4ZSxbRGUsQmUsR2UsVWVdLG90LHFlfHxEYXRlLm5vdygpLERhdGUubm93KCldKX0pfShoZSxTZSxMZSxIZSl9cmV0dXJuIGxlLm9wZW49Y2UsbGV9ZnVu''@;'; put 'put ''Y3Rpb24gcmUobGUpe3EoIkVOUVVFVUUiLGxlWzBdLm5hbWUsbGVbMV0pLEVbal0ucHVzaChsZSksdWUoKX1mdW5jdGlvbiBpZSgpe2Zvcih2YXIgbGU9RGF0ZS5ub3coKSxhZT0wO2FlPEVbal0ubGVuZ3RoOysrYWUpRVtqXVthZV0ubGVuZ3RoPjImJihFW2pdW2FlXVszXT1sZSxFW2pdW2Fl''@;'; put 'put ''XVs0XT1sZSk7dWUoKX1mdW5jdGlvbiB1ZSgpe2lmKGNsZWFyVGltZW91dChVKSxVPXZvaWQgMCwwIT09RVtqXS5sZW5ndGgpe3ZhciBsZT1FW2pdLnNoaWZ0KCksYWU9bGVbMF0sVz1sZVsxXSxiPWxlWzJdLEE9bGVbM10sRj1sZVs0XTtpZih2b2lkIDA9PT1BKXEoIlJFVFJZIixhZS5uYW1l''@;'; put 'put ''LFcpLGFlLmFwcGx5KG51bGwsVyk7ZWxzZSBpZihEYXRlLm5vdygpLUE+PTZlNCl7cSgiVElNRU9VVCIsYWUubmFtZSxXKTt2YXIgSD1XLnBvcCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBIJiZILmNhbGwobnVsbCxiKX1lbHNle3ZhciBnPURhdGUubm93KCktRixDPU1hdGgubWF4KEYtQSwxKTtn''@;'; put 'put ''Pj1NYXRoLm1pbigxLjIqQywxMDApPyhxKCJSRVRSWSIsYWUubmFtZSxXKSxhZS5hcHBseShudWxsLFcuY29uY2F0KFtBXSkpKTpFW2pdLnB1c2gobGUpfXZvaWQgMD09PVUmJihVPXNldFRpbWVvdXQodWUsMCkpfX1aLmRlYnVnbG9nP3E9Wi5kZWJ1Z2xvZygiZ2ZzNCIpOi9cYmdmczRcYi9p''@;'; put 'put ''LnRlc3QoRC5lbnYuTk9ERV9ERUJVR3x8IiIpJiYocT1mdW5jdGlvbigpe3ZhciBsZT1aLmZvcm1hdC5hcHBseShaLGFyZ3VtZW50cyk7bGU9IkdGUzQ6ICIrbGUuc3BsaXQoL1xuLykuam9pbigiXG5HRlM0OiAiKSxULmVycm9yKGxlKX0pLEVbal18fChZKEUsSS5nW2pdfHxbXSksRS5jbG9z''@;'; put 'put ''ZT1mdW5jdGlvbihsZSl7ZnVuY3Rpb24gYWUoVyxiKXtyZXR1cm4gbGUuY2FsbChFLFcsZnVuY3Rpb24oQSl7QXx8aWUoKSwiZnVuY3Rpb24iPT10eXBlb2YgYiYmYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFlLEcse3ZhbHVlOmxlfSks''@;'; put 'put ''YWV9KEUuY2xvc2UpLEUuY2xvc2VTeW5jPWZ1bmN0aW9uKGxlKXtmdW5jdGlvbiBhZShXKXtsZS5hcHBseShFLGFyZ3VtZW50cyksaWUoKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFlLEcse3ZhbHVlOmxlfSksYWV9KEUuY2xvc2VTeW5jKSwvXGJnZnM0XGIvaS50ZXN0KEQuZW52''@;'; put 'put ''Lk5PREVfREVCVUd8fCIiKSYmRC5vbigiZXhpdCIsZnVuY3Rpb24oKXtxKEVbal0pLEkoOTI4MikuZXF1YWwoRVtqXS5sZW5ndGgsMCl9KSksSS5nW2pdfHxZKEkuZyxFW2pdKSxNLmV4cG9ydHM9ZWUoQihFKSksRC5lbnYuVEVTVF9HUkFDRUZVTF9GU19HTE9CQUxfUEFUQ0gmJiFFLl9fcGF0''@;'; put 'put ''Y2hlZCYmKE0uZXhwb3J0cz1lZShFKSxFLl9fcGF0Y2hlZD0hMCl9LDg1MjA6KE0sTyxJKT0+e3ZhciBqPUkoNDE1NSksRz1JKDI4MzApLlN0cmVhbTtNLmV4cG9ydHM9ZnVuY3Rpb24oRCl7cmV0dXJue1JlYWRTdHJlYW06ZnVuY3Rpb24gVChFLHope2lmKCEodGhpcyBpbnN0YW5jZW9mIFQp''@;'; put 'put ''KXJldHVybiBuZXcgVChFLHopO0cuY2FsbCh0aGlzKTt2YXIgTj10aGlzO3RoaXMucGF0aD1FLHRoaXMuZmQ9bnVsbCx0aGlzLnJlYWRhYmxlPSEwLHRoaXMucGF1c2VkPSExLHRoaXMuZmxhZ3M9InIiLHRoaXMubW9kZT00MzgsdGhpcy5idWZmZXJTaXplPTY1NTM2LHo9enx8e307Zm9yKHZh''@;'; put 'put ''ciBCPU9iamVjdC5rZXlzKHopLFo9MCxZPUIubGVuZ3RoO1o8WTtaKyspe3ZhciBVPUJbWl07dGhpc1tVXT16W1VdfWlmKHRoaXMuZW5jb2RpbmcmJnRoaXMuc2V0RW5jb2RpbmcodGhpcy5lbmNvZGluZyksdm9pZCAwIT09dGhpcy5zdGFydCl7aWYoIm51bWJlciIhPXR5cGVvZiB0aGlzLnN0''@;'; put 'put ''YXJ0KXRocm93IFR5cGVFcnJvcigic3RhcnQgbXVzdCBiZSBhIE51bWJlciIpO2lmKHZvaWQgMD09PXRoaXMuZW5kKXRoaXMuZW5kPTEvMDtlbHNlIGlmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5lbmQpdGhyb3cgVHlwZUVycm9yKCJlbmQgbXVzdCBiZSBhIE51bWJlciIpO2lmKHRoaXMuc3Rh''@;'; put 'put ''cnQ+dGhpcy5lbmQpdGhyb3cgbmV3IEVycm9yKCJzdGFydCBtdXN0IGJlIDw9IGVuZCIpO3RoaXMucG9zPXRoaXMuc3RhcnR9bnVsbD09PXRoaXMuZmQ/RC5vcGVuKHRoaXMucGF0aCx0aGlzLmZsYWdzLHRoaXMubW9kZSxmdW5jdGlvbihxLEope2lmKHEpcmV0dXJuIE4uZW1pdCgiZXJyb3Ii''@;'; put 'put ''LHEpLHZvaWQoTi5yZWFkYWJsZT0hMSk7Ti5mZD1KLE4uZW1pdCgib3BlbiIsSiksTi5fcmVhZCgpfSk6ai5uZXh0VGljayhmdW5jdGlvbigpe04uX3JlYWQoKX0pfSxXcml0ZVN0cmVhbTpmdW5jdGlvbiBUKEUseil7aWYoISh0aGlzIGluc3RhbmNlb2YgVCkpcmV0dXJuIG5ldyBUKEUseik7''@;'; put 'put ''Ry5jYWxsKHRoaXMpLHRoaXMucGF0aD1FLHRoaXMuZmQ9bnVsbCx0aGlzLndyaXRhYmxlPSEwLHRoaXMuZmxhZ3M9InciLHRoaXMuZW5jb2Rpbmc9ImJpbmFyeSIsdGhpcy5tb2RlPTQzOCx0aGlzLmJ5dGVzV3JpdHRlbj0wLHo9enx8e307Zm9yKHZhciBOPU9iamVjdC5rZXlzKHopLEI9MCxa''@;'; put 'put ''PU4ubGVuZ3RoO0I8WjtCKyspe3ZhciBZPU5bQl07dGhpc1tZXT16W1ldfWlmKHZvaWQgMCE9PXRoaXMuc3RhcnQpe2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5zdGFydCl0aHJvdyBUeXBlRXJyb3IoInN0YXJ0IG11c3QgYmUgYSBOdW1iZXIiKTtpZih0aGlzLnN0YXJ0PDApdGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJzdGFydCBtdXN0IGJlID49IHplcm8iKTt0aGlzLnBvcz10aGlzLnN0YXJ0fXRoaXMuYnVzeT0hMSx0aGlzLl9xdWV1ZT1bXSxudWxsPT09dGhpcy5mZCYmKHRoaXMuX29wZW49RC5vcGVuLHRoaXMuX3F1ZXVlLnB1c2goW3RoaXMuX29wZW4sdGhpcy5wYXRoLHRoaXMuZmxhZ3Ms''@;'; put 'put ''dGhpcy5tb2RlLHZvaWQgMF0pLHRoaXMuZmx1c2goKSl9fX19LDIxNjE6KE0sTyxJKT0+e3ZhciBqPUkoNDE1NSksRz1JKDMyMDgpLEQ9ai5jd2QsVD1udWxsLEU9ai5lbnYuR1JBQ0VGVUxfRlNfUExBVEZPUk18fGoucGxhdGZvcm07ai5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4gVHx8KFQ9RC5j''@;'; put 'put ''YWxsKGopKSxUfTt0cnl7ai5jd2QoKX1jYXRjaHt9aWYoImZ1bmN0aW9uIj09dHlwZW9mIGouY2hkaXIpe3ZhciB6PWouY2hkaXI7ai5jaGRpcj1mdW5jdGlvbihOKXtUPW51bGwsei5jYWxsKGosTil9LE9iamVjdC5zZXRQcm90b3R5cGVPZiYmT2JqZWN0LnNldFByb3RvdHlwZU9mKGouY2hk''@;'; put 'put ''aXIseil9TS5leHBvcnRzPWZ1bmN0aW9uKE4pe3ZhciBpZSxyZTtmdW5jdGlvbiBCKGllKXtyZXR1cm4gaWUmJmZ1bmN0aW9uKHVlLGxlLGFlKXtyZXR1cm4gaWUuY2FsbChOLHVlLGxlLGZ1bmN0aW9uKFcpe2VlKFcpJiYoVz1udWxsKSxhZSYmYWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9''@;'; put 'put ''fWZ1bmN0aW9uIFooaWUpe3JldHVybiBpZSYmZnVuY3Rpb24odWUsbGUpe3RyeXtyZXR1cm4gaWUuY2FsbChOLHVlLGxlKX1jYXRjaChhZSl7aWYoIWVlKGFlKSl0aHJvdyBhZX19fWZ1bmN0aW9uIFkoaWUpe3JldHVybiBpZSYmZnVuY3Rpb24odWUsbGUsYWUsVyl7cmV0dXJuIGllLmNhbGwo''@;'; put 'put ''Tix1ZSxsZSxhZSxmdW5jdGlvbihiKXtlZShiKSYmKGI9bnVsbCksVyYmVy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX19ZnVuY3Rpb24gVShpZSl7cmV0dXJuIGllJiZmdW5jdGlvbih1ZSxsZSxhZSl7dHJ5e3JldHVybiBpZS5jYWxsKE4sdWUsbGUsYWUpfWNhdGNoKFcpe2lmKCFlZShXKSl0''@;'; put 'put ''aHJvdyBXfX19ZnVuY3Rpb24gcShpZSl7cmV0dXJuIGllJiZmdW5jdGlvbih1ZSxsZSxhZSl7ZnVuY3Rpb24gVyhiLEEpe0EmJihBLnVpZDwwJiYoQS51aWQrPTQyOTQ5NjcyOTYpLEEuZ2lkPDAmJihBLmdpZCs9NDI5NDk2NzI5NikpLGFlJiZhZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0''@;'; put 'put ''dXJuImZ1bmN0aW9uIj09dHlwZW9mIGxlJiYoYWU9bGUsbGU9bnVsbCksbGU/aWUuY2FsbChOLHVlLGxlLFcpOmllLmNhbGwoTix1ZSxXKX19ZnVuY3Rpb24gSihpZSl7cmV0dXJuIGllJiZmdW5jdGlvbih1ZSxsZSl7dmFyIGFlPWxlP2llLmNhbGwoTix1ZSxsZSk6aWUuY2FsbChOLHVlKTty''@;'; put 'put ''ZXR1cm4gYWUmJihhZS51aWQ8MCYmKGFlLnVpZCs9NDI5NDk2NzI5NiksYWUuZ2lkPDAmJihhZS5naWQrPTQyOTQ5NjcyOTYpKSxhZX19ZnVuY3Rpb24gZWUoaWUpe3JldHVybiFpZXx8IkVOT1NZUyI9PT1pZS5jb2RlfHwhKGouZ2V0dWlkJiYwPT09ai5nZXR1aWQoKXx8IkVJTlZBTCIhPT1p''@;'; put 'put ''ZS5jb2RlJiYiRVBFUk0iIT09aWUuY29kZSl9Ry5oYXNPd25Qcm9wZXJ0eSgiT19TWU1MSU5LIikmJmoudmVyc2lvbi5tYXRjaCgvXnYwXC42XC5bMC0yXXxedjBcLjVcLi8pJiYoKGllPU4pLmxjaG1vZD1mdW5jdGlvbih1ZSxsZSxhZSl7aWUub3Blbih1ZSxHLk9fV1JPTkxZfEcuT19TWU1M''@;'; put 'put ''SU5LLGxlLGZ1bmN0aW9uKFcsYil7Vz9hZSYmYWUoVyk6aWUuZmNobW9kKGIsbGUsZnVuY3Rpb24oQSl7aWUuY2xvc2UoYixmdW5jdGlvbihGKXthZSYmYWUoQXx8Ril9KX0pfSl9LGllLmxjaG1vZFN5bmM9ZnVuY3Rpb24odWUsbGUpe3ZhciBhZSxXPWllLm9wZW5TeW5jKHVlLEcuT19XUk9O''@;'; put 'put ''TFl8Ry5PX1NZTUxJTkssbGUpLGI9ITA7dHJ5e2FlPWllLmZjaG1vZFN5bmMoVyxsZSksYj0hMX1maW5hbGx5e2lmKGIpdHJ5e2llLmNsb3NlU3luYyhXKX1jYXRjaHt9ZWxzZSBpZS5jbG9zZVN5bmMoVyl9cmV0dXJuIGFlfSksTi5sdXRpbWVzfHxmdW5jdGlvbihpZSl7Ry5oYXNPd25Qcm9w''@;'; put 'put ''ZXJ0eSgiT19TWU1MSU5LIikmJmllLmZ1dGltZXM/KGllLmx1dGltZXM9ZnVuY3Rpb24odWUsbGUsYWUsVyl7aWUub3Blbih1ZSxHLk9fU1lNTElOSyxmdW5jdGlvbihiLEEpe2I/VyYmVyhiKTppZS5mdXRpbWVzKEEsbGUsYWUsZnVuY3Rpb24oRil7aWUuY2xvc2UoQSxmdW5jdGlvbihIKXtX''@;'; put 'put ''JiZXKEZ8fEgpfSl9KX0pfSxpZS5sdXRpbWVzU3luYz1mdW5jdGlvbih1ZSxsZSxhZSl7dmFyIFcsYj1pZS5vcGVuU3luYyh1ZSxHLk9fU1lNTElOSyksQT0hMDt0cnl7Vz1pZS5mdXRpbWVzU3luYyhiLGxlLGFlKSxBPSExfWZpbmFsbHl7aWYoQSl0cnl7aWUuY2xvc2VTeW5jKGIpfWNhdGNo''@;'; put 'put ''e31lbHNlIGllLmNsb3NlU3luYyhiKX1yZXR1cm4gV30pOmllLmZ1dGltZXMmJihpZS5sdXRpbWVzPWZ1bmN0aW9uKHVlLGxlLGFlLFcpe1cmJmoubmV4dFRpY2soVyl9LGllLmx1dGltZXNTeW5jPWZ1bmN0aW9uKCl7fSl9KE4pLE4uY2hvd249WShOLmNob3duKSxOLmZjaG93bj1ZKE4uZmNo''@;'; put 'put ''b3duKSxOLmxjaG93bj1ZKE4ubGNob3duKSxOLmNobW9kPUIoTi5jaG1vZCksTi5mY2htb2Q9QihOLmZjaG1vZCksTi5sY2htb2Q9QihOLmxjaG1vZCksTi5jaG93blN5bmM9VShOLmNob3duU3luYyksTi5mY2hvd25TeW5jPVUoTi5mY2hvd25TeW5jKSxOLmxjaG93blN5bmM9VShOLmxjaG93''@;'; put 'put ''blN5bmMpLE4uY2htb2RTeW5jPVooTi5jaG1vZFN5bmMpLE4uZmNobW9kU3luYz1aKE4uZmNobW9kU3luYyksTi5sY2htb2RTeW5jPVooTi5sY2htb2RTeW5jKSxOLnN0YXQ9cShOLnN0YXQpLE4uZnN0YXQ9cShOLmZzdGF0KSxOLmxzdGF0PXEoTi5sc3RhdCksTi5zdGF0U3luYz1KKE4uc3Rh''@;'; put 'put ''dFN5bmMpLE4uZnN0YXRTeW5jPUooTi5mc3RhdFN5bmMpLE4ubHN0YXRTeW5jPUooTi5sc3RhdFN5bmMpLE4uY2htb2QmJiFOLmxjaG1vZCYmKE4ubGNobW9kPWZ1bmN0aW9uKGllLHVlLGxlKXtsZSYmai5uZXh0VGljayhsZSl9LE4ubGNobW9kU3luYz1mdW5jdGlvbigpe30pLE4uY2hvd24m''@;'; put 'put ''JiFOLmxjaG93biYmKE4ubGNob3duPWZ1bmN0aW9uKGllLHVlLGxlLGFlKXthZSYmai5uZXh0VGljayhhZSl9LE4ubGNob3duU3luYz1mdW5jdGlvbigpe30pLCJ3aW4zMiI9PT1FJiYoTi5yZW5hbWU9ImZ1bmN0aW9uIiE9dHlwZW9mIE4ucmVuYW1lP04ucmVuYW1lOmZ1bmN0aW9uKGllKXtm''@;'; put 'put ''dW5jdGlvbiB1ZShsZSxhZSxXKXt2YXIgYj1EYXRlLm5vdygpLEE9MDtpZShsZSxhZSxmdW5jdGlvbiBGKEgpe2lmKEgmJigiRUFDQ0VTIj09PUguY29kZXx8IkVQRVJNIj09PUguY29kZSkmJkRhdGUubm93KCktYjw2ZTQpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtOLnN0YXQoYWUs''@;'; put 'put ''ZnVuY3Rpb24oZyxDKXtnJiYiRU5PRU5UIj09PWcuY29kZT9pZShsZSxhZSxGKTpXKEgpfSl9LEEpLHZvaWQoQTwxMDAmJihBKz0xMCkpO1cmJlcoSCl9KX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mJiZPYmplY3Quc2V0UHJvdG90eXBlT2YodWUsaWUpLHVlfShOLnJlbmFtZSkpLE4u''@;'; put 'put ''cmVhZD0iZnVuY3Rpb24iIT10eXBlb2YgTi5yZWFkP04ucmVhZDpmdW5jdGlvbihpZSl7ZnVuY3Rpb24gdWUobGUsYWUsVyxiLEEsRil7dmFyIEg7aWYoRiYmImZ1bmN0aW9uIj09dHlwZW9mIEYpe3ZhciBnPTA7SD1mdW5jdGlvbihDLGssXyl7aWYoQyYmIkVBR0FJTiI9PT1DLmNvZGUmJmc8''@;'; put 'put ''MTApcmV0dXJuIGcrKyxpZS5jYWxsKE4sbGUsYWUsVyxiLEEsSCk7Ri5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBpZS5jYWxsKE4sbGUsYWUsVyxiLEEsSCl9cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiYmT2JqZWN0LnNldFByb3RvdHlwZU9mKHVlLGllKSx1ZX0oTi5yZWFk''@;'; put 'put ''KSxOLnJlYWRTeW5jPSJmdW5jdGlvbiIhPXR5cGVvZiBOLnJlYWRTeW5jP04ucmVhZFN5bmM6KHJlPU4ucmVhZFN5bmMsZnVuY3Rpb24oaWUsdWUsbGUsYWUsVyl7Zm9yKHZhciBiPTA7Oyl0cnl7cmV0dXJuIHJlLmNhbGwoTixpZSx1ZSxsZSxhZSxXKX1jYXRjaChBKXtpZigiRUFHQUlOIj09''@;'; put 'put ''PUEuY29kZSYmYjwxMCl7YisrO2NvbnRpbnVlfXRocm93IEF9fSl9fSwxMDQ0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSgyMTApKCIlT2JqZWN0LmRlZmluZVByb3BlcnR5JSIsITApLEc9ZnVuY3Rpb24oKXtpZihqKXRyeXtyZXR1cm4gaih7fSwiYSIse3ZhbHVlOjF9KSwhMH1j''@;'; put 'put ''YXRjaHtyZXR1cm4hMX1yZXR1cm4hMX07Ry5oYXNBcnJheUxlbmd0aERlZmluZUJ1Zz1mdW5jdGlvbigpe2lmKCFHKCkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiAxIT09aihbXSwibGVuZ3RoIix7dmFsdWU6MX0pLmxlbmd0aH1jYXRjaHtyZXR1cm4hMH19LE0uZXhwb3J0cz1HfSwxNDA1OihN''@;'; put 'put ''LE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbCxHPUkoNTQxOSk7TS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGomJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgaigiZm9vIikm''@;'; put 'put ''JiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sKCJiYXIiKSYmRygpfX0sNTQxOTpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTeW1ib2x8fCJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXJldHVy''@;'; put 'put ''biExO2lmKCJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yKXJldHVybiEwO3ZhciBPPXt9LEk9U3ltYm9sKCJ0ZXN0Iiksaj1PYmplY3QoSSk7aWYoInN0cmluZyI9PXR5cGVvZiBJfHwiW29iamVjdCBTeW1ib2xdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJKXx8''@;'; put 'put ''IltvYmplY3QgU3ltYm9sXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaikpcmV0dXJuITE7Zm9yKEkgaW4gT1tJXT00MixPKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Qua2V5cyYmMCE9PU9iamVjdC5rZXlzKE8pLmxlbmd0aHx8ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzJiYwIT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTykubGVuZ3RoKXJldHVybiExO3ZhciBHPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTyk7aWYoMSE9PUcubGVuZ3RofHxHWzBdIT09SXx8IU9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChPLEkpKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKXt2YXIgRD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sSSk7aWYoNDIhPT1ELnZhbHVlfHwhMCE9PUQu''@;'; put 'put ''ZW51bWVyYWJsZSlyZXR1cm4hMX1yZXR1cm4hMH19LDY0MTA6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDU0MTkpO00uZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBqKCkmJiEhU3ltYm9sLnRvU3RyaW5nVGFnfX0sNzY0MjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUko''@;'; put 'put ''ODYxMik7TS5leHBvcnRzPWouY2FsbChGdW5jdGlvbi5jYWxsLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpfSwzMzQ5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg5NTA5KS5CdWZmZXIsRz1JKDg0NzMpLlRyYW5zZm9ybTtmdW5jdGlvbiBEKFQpe0cuY2FsbCh0aGlz''@;'; put 'put ''KSx0aGlzLl9ibG9jaz1qLmFsbG9jVW5zYWZlKFQpLHRoaXMuX2Jsb2NrU2l6ZT1ULHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9SSg1NzE3KShELEcpLEQucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oVCxFLHope3Zh''@;'; put 'put ''ciBOPW51bGw7dHJ5e3RoaXMudXBkYXRlKFQsRSl9Y2F0Y2goQil7Tj1CfXooTil9LEQucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihUKXt2YXIgRT1udWxsO3RyeXt0aGlzLnB1c2godGhpcy5kaWdlc3QoKSl9Y2F0Y2goeil7RT16fVQoRSl9LEQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlv''@;'; put 'put ''bihULEUpe2lmKGZ1bmN0aW9uKFUscSl7aWYoIWouaXNCdWZmZXIoVSkmJiJzdHJpbmciIT10eXBlb2YgVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEYXRhIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXIiKX0oVCksdGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiRGlnZXN0IGFs''@;'; put 'put ''cmVhZHkgY2FsbGVkIik7ai5pc0J1ZmZlcihUKXx8KFQ9ai5mcm9tKFQsRSkpO2Zvcih2YXIgej10aGlzLl9ibG9jayxOPTA7dGhpcy5fYmxvY2tPZmZzZXQrVC5sZW5ndGgtTj49dGhpcy5fYmxvY2tTaXplOyl7Zm9yKHZhciBCPXRoaXMuX2Jsb2NrT2Zmc2V0O0I8dGhpcy5fYmxvY2tTaXpl''@;'; put 'put ''Oyl6W0IrK109VFtOKytdO3RoaXMuX3VwZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTB9Zm9yKDtOPFQubGVuZ3RoOyl6W3RoaXMuX2Jsb2NrT2Zmc2V0KytdPVRbTisrXTtmb3IodmFyIFo9MCxZPTgqVC5sZW5ndGg7WT4wOysrWil0aGlzLl9sZW5ndGhbWl0rPVksKFk9dGhpcy5fbGVuZ3Ro''@;'; put 'put ''W1pdLzQyOTQ5NjcyOTZ8MCk+MCYmKHRoaXMuX2xlbmd0aFtaXS09NDI5NDk2NzI5NipZKTtyZXR1cm4gdGhpc30sRC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sRC5wcm90b3R5cGUuZGlnZXN0PWZ1''@;'; put 'put ''bmN0aW9uKFQpe2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMDt2YXIgRT10aGlzLl9kaWdlc3QoKTt2b2lkIDAhPT1UJiYoRT1FLnRvU3RyaW5nKFQpKSx0aGlzLl9ibG9jay5maWxsKDApLHRoaXMu''@;'; put 'put ''X2Jsb2NrT2Zmc2V0PTA7Zm9yKHZhciB6PTA7ejw0Oysreil0aGlzLl9sZW5ndGhbel09MDtyZXR1cm4gRX0sRC5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWQiKX0sTS5leHBvcnRzPUR9LDM3MTU6KE0sTyxJ''@;'; put 'put ''KT0+e3ZhciBqPU87ai51dGlscz1JKDY0MzYpLGouY29tbW9uPUkoNTc3Miksai5zaGE9SSg5MDQxKSxqLnJpcGVtZD1JKDI5NDkpLGouaG1hYz1JKDIzNDQpLGouc2hhMT1qLnNoYS5zaGExLGouc2hhMjU2PWouc2hhLnNoYTI1NixqLnNoYTIyND1qLnNoYS5zaGEyMjQsai5zaGEzODQ9ai5z''@;'; put 'put ''aGEuc2hhMzg0LGouc2hhNTEyPWouc2hhLnNoYTUxMixqLnJpcGVtZDE2MD1qLnJpcGVtZC5yaXBlbWQxNjB9LDU3NzI6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDY0MzYpLEc9SSg5NzQ2KTtmdW5jdGlvbiBEKCl7dGhpcy5wZW5kaW5nPW51bGwsdGhpcy5wZW5kaW5nVG90YWw9''@;'; put 'put ''MCx0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZSx0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplLHRoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoLHRoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFk''@;'; put 'put ''TGVuZ3RoLzgsdGhpcy5lbmRpYW49ImJpZyIsdGhpcy5fZGVsdGE4PXRoaXMuYmxvY2tTaXplLzgsdGhpcy5fZGVsdGEzMj10aGlzLmJsb2NrU2l6ZS8zMn1PLkJsb2NrSGFzaD1ELEQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihULEUpe2lmKFQ9ai50b0FycmF5KFQsRSksdGhpcy5wZW5k''@;'; put 'put ''aW5nPXRoaXMucGVuZGluZz90aGlzLnBlbmRpbmcuY29uY2F0KFQpOlQsdGhpcy5wZW5kaW5nVG90YWwrPVQubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dmFyIHo9KFQ9dGhpcy5wZW5kaW5nKS5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMucGVuZGluZz1ULnNs''@;'; put 'put ''aWNlKFQubGVuZ3RoLXosVC5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLFQ9ai5qb2luMzIoVCwwLFQubGVuZ3RoLXosdGhpcy5lbmRpYW4pO2Zvcih2YXIgTj0wO048VC5sZW5ndGg7Tis9dGhpcy5fZGVsdGEzMil0aGlzLl91cGRhdGUoVCxO''@;'; put 'put ''LE4rdGhpcy5fZGVsdGEzMil9cmV0dXJuIHRoaXN9LEQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihUKXtyZXR1cm4gdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpLEcobnVsbD09PXRoaXMucGVuZGluZyksdGhpcy5fZGlnZXN0KFQpfSxELnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IFQ9dGhpcy5wZW5kaW5nVG90YWwsRT10aGlzLl9kZWx0YTgsej1FLShUK3RoaXMucGFkTGVuZ3RoKSVFLE49bmV3IEFycmF5KHordGhpcy5wYWRMZW5ndGgpO05bMF09MTI4O2Zvcih2YXIgQj0xO0I8ejtCKyspTltCXT0wO2lmKFQ8PD0zLCJiaWciPT09dGhpcy5lbmRpYW4pe2Zvcih2YXIg''@;'; put 'put ''Wj04O1o8dGhpcy5wYWRMZW5ndGg7WisrKU5bQisrXT0wO05bQisrXT0wLE5bQisrXT0wLE5bQisrXT0wLE5bQisrXT0wLE5bQisrXT1UPj4+MjQmMjU1LE5bQisrXT1UPj4+MTYmMjU1LE5bQisrXT1UPj4+OCYyNTUsTltCKytdPTI1NSZUfWVsc2UgZm9yKE5bQisrXT0yNTUmVCxOW0IrK109''@;'; put 'put ''VD4+PjgmMjU1LE5bQisrXT1UPj4+MTYmMjU1LE5bQisrXT1UPj4+MjQmMjU1LE5bQisrXT0wLE5bQisrXT0wLE5bQisrXT0wLE5bQisrXT0wLFo9ODtaPHRoaXMucGFkTGVuZ3RoO1orKylOW0IrK109MDtyZXR1cm4gTn19LDIzNDQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDY0''@;'; put 'put ''MzYpLEc9SSg5NzQ2KTtmdW5jdGlvbiBEKFQsRSx6KXtpZighKHRoaXMgaW5zdGFuY2VvZiBEKSlyZXR1cm4gbmV3IEQoVCxFLHopO3RoaXMuSGFzaD1ULHRoaXMuYmxvY2tTaXplPVQuYmxvY2tTaXplLzgsdGhpcy5vdXRTaXplPVQub3V0U2l6ZS84LHRoaXMuaW5uZXI9bnVsbCx0aGlzLm91''@;'; put 'put ''dGVyPW51bGwsdGhpcy5faW5pdChqLnRvQXJyYXkoRSx6KSl9TS5leHBvcnRzPUQsRC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oVCl7VC5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJihUPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoVCkuZGlnZXN0KCkpLEcoVC5sZW5ndGg8PXRoaXMuYmxvY2tT''@;'; put 'put ''aXplKTtmb3IodmFyIEU9VC5sZW5ndGg7RTx0aGlzLmJsb2NrU2l6ZTtFKyspVC5wdXNoKDApO2ZvcihFPTA7RTxULmxlbmd0aDtFKyspVFtFXV49NTQ7Zm9yKHRoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShUKSxFPTA7RTxULmxlbmd0aDtFKyspVFtFXV49MTA2O3RoaXMub3V0''@;'; put 'put ''ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShUKX0sRC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKFQsRSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKFQsRSksdGhpc30sRC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVy''@;'; put 'put ''LmRpZ2VzdCgpKSx0aGlzLm91dGVyLmRpZ2VzdChUKX19LDI5NDk6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDY0MzYpLEc9SSg1NzcyKSxEPWoucm90bDMyLFQ9ai5zdW0zMixFPWouc3VtMzJfMyx6PWouc3VtMzJfNCxOPUcuQmxvY2tIYXNoO2Z1bmN0aW9uIEIoKXtpZighKHRo''@;'; put 'put ''aXMgaW5zdGFuY2VvZiBCKSlyZXR1cm4gbmV3IEI7Ti5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuZW5kaWFuPSJsaXR0bGUifWZ1bmN0aW9uIFooaWUsdWUsbGUsYWUpe3JldHVybiBpZTw9MTU/''@;'; put 'put ''dWVebGVeYWU6aWU8PTMxP3VlJmxlfH51ZSZhZTppZTw9NDc/KHVlfH5sZSleYWU6aWU8PTYzP3VlJmFlfGxlJn5hZTp1ZV4obGV8fmFlKX1mdW5jdGlvbiBZKGllKXtyZXR1cm4gaWU8PTE1PzA6aWU8PTMxPzE1MTg1MDAyNDk6aWU8PTQ3PzE4NTk3NzUzOTM6aWU8PTYzPzI0MDA5NTk3MDg6''@;'; put 'put ''Mjg0MDg1MzgzOH1mdW5jdGlvbiBVKGllKXtyZXR1cm4gaWU8PTE1PzEzNTI4Mjk5MjY6aWU8PTMxPzE1NDg2MDM2ODQ6aWU8PTQ3PzE4MzYwNzI2OTE6aWU8PTYzPzIwNTM5OTQyMTc6MH1qLmluaGVyaXRzKEIsTiksTy5yaXBlbWQxNjA9QixCLmJsb2NrU2l6ZT01MTIsQi5vdXRTaXplPTE2''@;'; put 'put ''MCxCLmhtYWNTdHJlbmd0aD0xOTIsQi5wYWRMZW5ndGg9NjQsQi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihpZSx1ZSl7Zm9yKHZhciBsZT10aGlzLmhbMF0sYWU9dGhpcy5oWzFdLFc9dGhpcy5oWzJdLGI9dGhpcy5oWzNdLEE9dGhpcy5oWzRdLEY9bGUsSD1hZSxnPVcsQz1iLGs9QSxf''@;'; put 'put ''PTA7Xzw4MDtfKyspe3ZhciBwPVQoRCh6KGxlLFooXyxhZSxXLGIpLGllW3FbX10rdWVdLFkoXykpLGVlW19dKSxBKTtsZT1BLEE9YixiPUQoVywxMCksVz1hZSxhZT1wLHA9VChEKHooRixaKDc5LV8sSCxnLEMpLGllW0pbX10rdWVdLFUoXykpLHJlW19dKSxrKSxGPWssaz1DLEM9RChnLDEw''@;'; put 'put ''KSxnPUgsSD1wfXA9RSh0aGlzLmhbMV0sVyxDKSx0aGlzLmhbMV09RSh0aGlzLmhbMl0sYixrKSx0aGlzLmhbMl09RSh0aGlzLmhbM10sQSxGKSx0aGlzLmhbM109RSh0aGlzLmhbNF0sbGUsSCksdGhpcy5oWzRdPUUodGhpcy5oWzBdLGFlLGcpLHRoaXMuaFswXT1wfSxCLnByb3RvdHlwZS5f''@;'; put 'put ''ZGlnZXN0PWZ1bmN0aW9uKGllKXtyZXR1cm4iaGV4Ij09PWllP2oudG9IZXgzMih0aGlzLmgsImxpdHRsZSIpOmouc3BsaXQzMih0aGlzLmgsImxpdHRsZSIpfTt2YXIgcT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUs''@;'; put 'put ''MiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxKPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEy''@;'; put 'put ''LDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLGVlPVsxMSwxNCwx''@;'; put 'put ''NSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYs''@;'; put 'put ''OCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxyZT1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0''@;'; put 'put ''LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV19LDkwNDE6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtPLnNoYTE9SSg0NzYxKSxPLnNoYTIyND1JKDc5OSksTy5zaGEyNTY9SSg5MzQ0KSxPLnNoYTM4ND1JKDc3MiksTy5z''@;'; put 'put ''aGE1MTI9SSg1OTAwKX0sNDc2MTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNjQzNiksRz1JKDU3NzIpLEQ9SSg3MDM4KSxUPWoucm90bDMyLEU9ai5zdW0zMix6PWouc3VtMzJfNSxOPUQuZnRfMSxCPUcuQmxvY2tIYXNoLFo9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5''@;'; put 'put ''NzA4LDMzOTU0Njk3ODJdO2Z1bmN0aW9uIFkoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBZKSlyZXR1cm4gbmV3IFk7Qi5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuVz1uZXcgQXJyYXkoODApfWou''@;'; put 'put ''aW5oZXJpdHMoWSxCKSxNLmV4cG9ydHM9WSxZLmJsb2NrU2l6ZT01MTIsWS5vdXRTaXplPTE2MCxZLmhtYWNTdHJlbmd0aD04MCxZLnBhZExlbmd0aD02NCxZLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFUscSl7Zm9yKHZhciBKPXRoaXMuVyxlZT0wO2VlPDE2O2VlKyspSltlZV09VVtx''@;'; put 'put ''K2VlXTtmb3IoO2VlPEoubGVuZ3RoO2VlKyspSltlZV09VChKW2VlLTNdXkpbZWUtOF1eSltlZS0xNF1eSltlZS0xNl0sMSk7dmFyIHJlPXRoaXMuaFswXSxpZT10aGlzLmhbMV0sdWU9dGhpcy5oWzJdLGxlPXRoaXMuaFszXSxhZT10aGlzLmhbNF07Zm9yKGVlPTA7ZWU8Si5sZW5ndGg7ZWUr''@;'; put 'put ''Kyl7dmFyIFc9fn4oZWUvMjApLGI9eihUKHJlLDUpLE4oVyxpZSx1ZSxsZSksYWUsSltlZV0sWltXXSk7YWU9bGUsbGU9dWUsdWU9VChpZSwzMCksaWU9cmUscmU9Yn10aGlzLmhbMF09RSh0aGlzLmhbMF0scmUpLHRoaXMuaFsxXT1FKHRoaXMuaFsxXSxpZSksdGhpcy5oWzJdPUUodGhpcy5o''@;'; put 'put ''WzJdLHVlKSx0aGlzLmhbM109RSh0aGlzLmhbM10sbGUpLHRoaXMuaFs0XT1FKHRoaXMuaFs0XSxhZSl9LFkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuImhleCI9PT1VP2oudG9IZXgzMih0aGlzLmgsImJpZyIpOmouc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNzk5OihN''@;'; put 'put ''LE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg2NDM2KSxHPUkoOTM0NCk7ZnVuY3Rpb24gRCgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEQpKXJldHVybiBuZXcgRDtHLmNhbGwodGhpcyksdGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1''@;'; put 'put ''ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XX1qLmluaGVyaXRzKEQsRyksTS5leHBvcnRzPUQsRC5ibG9ja1NpemU9NTEyLEQub3V0U2l6ZT0yMjQsRC5obWFjU3RyZW5ndGg9MTkyLEQucGFkTGVuZ3RoPTY0LEQucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVCl7cmV0''@;'; put 'put ''dXJuImhleCI9PT1UP2oudG9IZXgzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIik6ai5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKX19LDkzNDQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDY0MzYpLEc9SSg1NzcyKSxEPUkoNzAzOCksVD1JKDk3NDYpLEU9ai5zdW0z''@;'; put 'put ''Mix6PWouc3VtMzJfNCxOPWouc3VtMzJfNSxCPUQuY2gzMixaPUQubWFqMzIsWT1ELnMwXzI1NixVPUQuczFfMjU2LHE9RC5nMF8yNTYsSj1ELmcxXzI1NixlZT1HLkJsb2NrSGFzaCxyZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUw''@;'; put 'put ''ODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5''@;'; put 'put ''ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwx''@;'; put 'put ''Njk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5''@;'; put 'put ''Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtmdW5jdGlvbiBpZSgpe2lmKCEodGhpcyBpbnN0''@;'; put 'put ''YW5jZW9mIGllKSlyZXR1cm4gbmV3IGllO2VlLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0sdGhpcy5rPXJlLHRoaXMuVz1uZXcgQXJyYXkoNjQp''@;'; put 'put ''fWouaW5oZXJpdHMoaWUsZWUpLE0uZXhwb3J0cz1pZSxpZS5ibG9ja1NpemU9NTEyLGllLm91dFNpemU9MjU2LGllLmhtYWNTdHJlbmd0aD0xOTIsaWUucGFkTGVuZ3RoPTY0LGllLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHVlLGxlKXtmb3IodmFyIGFlPXRoaXMuVyxXPTA7VzwxNjtX''@;'; put 'put ''KyspYWVbV109dWVbbGUrV107Zm9yKDtXPGFlLmxlbmd0aDtXKyspYWVbV109eihKKGFlW1ctMl0pLGFlW1ctN10scShhZVtXLTE1XSksYWVbVy0xNl0pO3ZhciBiPXRoaXMuaFswXSxBPXRoaXMuaFsxXSxGPXRoaXMuaFsyXSxIPXRoaXMuaFszXSxnPXRoaXMuaFs0XSxDPXRoaXMuaFs1XSxr''@;'; put 'put ''PXRoaXMuaFs2XSxfPXRoaXMuaFs3XTtmb3IoVCh0aGlzLmsubGVuZ3RoPT09YWUubGVuZ3RoKSxXPTA7VzxhZS5sZW5ndGg7VysrKXt2YXIgcD1OKF8sVShnKSxCKGcsQyxrKSx0aGlzLmtbV10sYWVbV10pLHc9RShZKGIpLFooYixBLEYpKTtfPWssaz1DLEM9ZyxnPUUoSCxwKSxIPUYsRj1B''@;'; put 'put ''LEE9YixiPUUocCx3KX10aGlzLmhbMF09RSh0aGlzLmhbMF0sYiksdGhpcy5oWzFdPUUodGhpcy5oWzFdLEEpLHRoaXMuaFsyXT1FKHRoaXMuaFsyXSxGKSx0aGlzLmhbM109RSh0aGlzLmhbM10sSCksdGhpcy5oWzRdPUUodGhpcy5oWzRdLGcpLHRoaXMuaFs1XT1FKHRoaXMuaFs1XSxDKSx0''@;'; put 'put ''aGlzLmhbNl09RSh0aGlzLmhbNl0sayksdGhpcy5oWzddPUUodGhpcy5oWzddLF8pfSxpZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih1ZSl7cmV0dXJuImhleCI9PT11ZT9qLnRvSGV4MzIodGhpcy5oLCJiaWciKTpqLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LDc3MjooTSxPLEkpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBqPUkoNjQzNiksRz1JKDU5MDApO2Z1bmN0aW9uIEQoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBEKSlyZXR1cm4gbmV3IEQ7Ry5jYWxsKHRoaXMpLHRoaXMuaD1bMzQxODA3MDM2NSwzMjM4MzcxMDMyLDE2NTQyNzAyNTAsOTE0MTUwNjYzLDI0Mzg1MjkzNzAsODEy''@;'; put 'put ''NzAyOTk5LDM1NTQ2MjM2MCw0MTQ0OTEyNjk3LDE3MzE0MDU0MTUsNDI5MDc3NTg1NywyMzk0MTgwMjMxLDE3NTA2MDMwMjUsMzY3NTAwODUyNSwxNjk0MDc2ODM5LDEyMDMwNjI4MTMsMzIwNDA3NTQyOF19ai5pbmhlcml0cyhELEcpLE0uZXhwb3J0cz1ELEQuYmxvY2tTaXplPTEwMjQsRC5v''@;'; put 'put ''dXRTaXplPTM4NCxELmhtYWNTdHJlbmd0aD0xOTIsRC5wYWRMZW5ndGg9MTI4LEQucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVCl7cmV0dXJuImhleCI9PT1UP2oudG9IZXgzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpOmouc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIp''@;'; put 'put ''fX0sNTkwMDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNjQzNiksRz1JKDU3NzIpLEQ9SSg5NzQ2KSxUPWoucm90cjY0X2hpLEU9ai5yb3RyNjRfbG8sej1qLnNocjY0X2hpLE49ai5zaHI2NF9sbyxCPWouc3VtNjQsWj1qLnN1bTY0X2hpLFk9ai5zdW02NF9sbyxVPWouc3VtNjRf''@;'; put 'put ''NF9oaSxxPWouc3VtNjRfNF9sbyxKPWouc3VtNjRfNV9oaSxlZT1qLnN1bTY0XzVfbG8scmU9Ry5CbG9ja0hhc2gsaWU9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2''@;'; put 'put ''Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQs''@;'; put 'put ''MTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4''@;'; put 'put ''MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEz''@;'; put 'put ''NjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwx''@;'; put 'put ''Mzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1''@;'; put 'put ''MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1''@;'; put 'put ''NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4''@;'; put 'put ''LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1''@;'; put 'put ''NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcx''@;'; put 'put ''LDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXTtmdW5jdGlvbiB1ZSgpe2lmKCEodGhp''@;'; put 'put ''cyBpbnN0YW5jZW9mIHVlKSlyZXR1cm4gbmV3IHVlO3JlLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIsNDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2''@;'; put 'put ''MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XSx0aGlzLms9aWUsdGhpcy5XPW5ldyBBcnJheSgxNjApfWZ1bmN0aW9uIGxlKHcsSyx0ZSxjZSxoZSl7dmFyIFNlPXcmdGVefncmaGU7cmV0dXJuIFNlPDAmJihTZSs9NDI5NDk2NzI5''@;'; put 'put ''NiksU2V9ZnVuY3Rpb24gYWUodyxLLHRlLGNlLGhlLFNlKXt2YXIgTGU9SyZjZV5+SyZTZTtyZXR1cm4gTGU8MCYmKExlKz00Mjk0OTY3Mjk2KSxMZX1mdW5jdGlvbiBXKHcsSyx0ZSxjZSxoZSl7dmFyIFNlPXcmdGVedyZoZV50ZSZoZTtyZXR1cm4gU2U8MCYmKFNlKz00Mjk0OTY3Mjk2KSxT''@;'; put 'put ''ZX1mdW5jdGlvbiBiKHcsSyx0ZSxjZSxoZSxTZSl7dmFyIExlPUsmY2VeSyZTZV5jZSZTZTtyZXR1cm4gTGU8MCYmKExlKz00Mjk0OTY3Mjk2KSxMZX1mdW5jdGlvbiBBKHcsSyl7dmFyIHRlPVQodyxLLDI4KV5UKEssdywyKV5UKEssdyw3KTtyZXR1cm4gdGU8MCYmKHRlKz00Mjk0OTY3Mjk2''@;'; put 'put ''KSx0ZX1mdW5jdGlvbiBGKHcsSyl7dmFyIHRlPUUodyxLLDI4KV5FKEssdywyKV5FKEssdyw3KTtyZXR1cm4gdGU8MCYmKHRlKz00Mjk0OTY3Mjk2KSx0ZX1mdW5jdGlvbiBIKHcsSyl7dmFyIHRlPVQodyxLLDE0KV5UKHcsSywxOCleVChLLHcsOSk7cmV0dXJuIHRlPDAmJih0ZSs9NDI5NDk2''@;'; put 'put ''NzI5NiksdGV9ZnVuY3Rpb24gZyh3LEspe3ZhciB0ZT1FKHcsSywxNCleRSh3LEssMTgpXkUoSyx3LDkpO3JldHVybiB0ZTwwJiYodGUrPTQyOTQ5NjcyOTYpLHRlfWZ1bmN0aW9uIEModyxLKXt2YXIgdGU9VCh3LEssMSleVCh3LEssOCleeih3LEssNyk7cmV0dXJuIHRlPDAmJih0ZSs9NDI5''@;'; put 'put ''NDk2NzI5NiksdGV9ZnVuY3Rpb24gayh3LEspe3ZhciB0ZT1FKHcsSywxKV5FKHcsSyw4KV5OKHcsSyw3KTtyZXR1cm4gdGU8MCYmKHRlKz00Mjk0OTY3Mjk2KSx0ZX1mdW5jdGlvbiBfKHcsSyl7dmFyIHRlPVQodyxLLDE5KV5UKEssdywyOSleeih3LEssNik7cmV0dXJuIHRlPDAmJih0ZSs9''@;'; put 'put ''NDI5NDk2NzI5NiksdGV9ZnVuY3Rpb24gcCh3LEspe3ZhciB0ZT1FKHcsSywxOSleRShLLHcsMjkpXk4odyxLLDYpO3JldHVybiB0ZTwwJiYodGUrPTQyOTQ5NjcyOTYpLHRlfWouaW5oZXJpdHModWUscmUpLE0uZXhwb3J0cz11ZSx1ZS5ibG9ja1NpemU9MTAyNCx1ZS5vdXRTaXplPTUxMix1''@;'; put 'put ''ZS5obWFjU3RyZW5ndGg9MTkyLHVlLnBhZExlbmd0aD0xMjgsdWUucHJvdG90eXBlLl9wcmVwYXJlQmxvY2s9ZnVuY3Rpb24odyxLKXtmb3IodmFyIHRlPXRoaXMuVyxjZT0wO2NlPDMyO2NlKyspdGVbY2VdPXdbSytjZV07Zm9yKDtjZTx0ZS5sZW5ndGg7Y2UrPTIpe3ZhciBoZT1fKHRlW2Nl''@;'; put 'put ''LTRdLHRlW2NlLTNdKSxTZT1wKHRlW2NlLTRdLHRlW2NlLTNdKSxMZT10ZVtjZS0xNF0sSGU9dGVbY2UtMTNdLHhlPUModGVbY2UtMzBdLHRlW2NlLTI5XSksRGU9ayh0ZVtjZS0zMF0sdGVbY2UtMjldKSxCZT10ZVtjZS0zMl0sR2U9dGVbY2UtMzFdO3RlW2NlXT1VKGhlLFNlLExlLEhlLHhl''@;'; put 'put ''LERlLEJlLEdlKSx0ZVtjZSsxXT1xKGhlLFNlLExlLEhlLHhlLERlLEJlLEdlKX19LHVlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHcsSyl7dGhpcy5fcHJlcGFyZUJsb2NrKHcsSyk7dmFyIHRlPXRoaXMuVyxjZT10aGlzLmhbMF0saGU9dGhpcy5oWzFdLFNlPXRoaXMuaFsyXSxMZT10''@;'; put 'put ''aGlzLmhbM10sSGU9dGhpcy5oWzRdLHhlPXRoaXMuaFs1XSxEZT10aGlzLmhbNl0sQmU9dGhpcy5oWzddLEdlPXRoaXMuaFs4XSxVZT10aGlzLmhbOV0scWU9dGhpcy5oWzEwXSxvdD10aGlzLmhbMTFdLEZlPXRoaXMuaFsxMl0sd2U9dGhpcy5oWzEzXSxFZT10aGlzLmhbMTRdLEllPXRoaXMu''@;'; put 'put ''aFsxNV07RCh0aGlzLmsubGVuZ3RoPT09dGUubGVuZ3RoKTtmb3IodmFyIFhlPTA7WGU8dGUubGVuZ3RoO1hlKz0yKXt2YXIgdHQ9RWUsWmU9SWUsY3Q9SChHZSxVZSksa2U9ZyhHZSxVZSksQWU9bGUoR2UsMCxxZSwwLEZlKSxqZT1hZSgwLFVlLDAsb3QsMCx3ZSksaXQ9dGhpcy5rW1hlXSxz''@;'; put 'put ''dD10aGlzLmtbWGUrMV0seHQ9dGVbWGVdLEZ0PXRlW1hlKzFdLE90PUoodHQsWmUsY3Qsa2UsQWUsamUsaXQsc3QseHQsRnQpLEt0PWVlKHR0LFplLGN0LGtlLEFlLGplLGl0LHN0LHh0LEZ0KTt0dD1BKGNlLGhlKSxaZT1GKGNlLGhlKSxjdD1XKGNlLDAsU2UsMCxIZSksa2U9YigwLGhlLDAs''@;'; put 'put ''TGUsMCx4ZSk7dmFyIGJuPVoodHQsWmUsY3Qsa2UpLEJ0PVkodHQsWmUsY3Qsa2UpO0VlPUZlLEllPXdlLEZlPXFlLHdlPW90LHFlPUdlLG90PVVlLEdlPVooRGUsQmUsT3QsS3QpLFVlPVkoQmUsQmUsT3QsS3QpLERlPUhlLEJlPXhlLEhlPVNlLHhlPUxlLFNlPWNlLExlPWhlLGNlPVooT3Qs''@;'; put 'put ''S3QsYm4sQnQpLGhlPVkoT3QsS3QsYm4sQnQpfUIodGhpcy5oLDAsY2UsaGUpLEIodGhpcy5oLDIsU2UsTGUpLEIodGhpcy5oLDQsSGUseGUpLEIodGhpcy5oLDYsRGUsQmUpLEIodGhpcy5oLDgsR2UsVWUpLEIodGhpcy5oLDEwLHFlLG90KSxCKHRoaXMuaCwxMixGZSx3ZSksQih0aGlzLmgs''@;'; put 'put ''MTQsRWUsSWUpfSx1ZS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih3KXtyZXR1cm4iaGV4Ij09PXc/ai50b0hleDMyKHRoaXMuaCwiYmlnIik6ai5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSw3MDM4OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg2NDM2KS5yb3RyMzI7ZnVuY3Rp''@;'; put 'put ''b24gRyhFLHosTil7cmV0dXJuIEUmel5+RSZOfWZ1bmN0aW9uIEQoRSx6LE4pe3JldHVybiBFJnpeRSZOXnomTn1mdW5jdGlvbiBUKEUseixOKXtyZXR1cm4gRV56Xk59Ty5mdF8xPWZ1bmN0aW9uKEUseixOLEIpe3JldHVybiAwPT09RT9HKHosTixCKToxPT09RXx8Mz09PUU/VCh6LE4sQik6''@;'; put 'put ''Mj09PUU/RCh6LE4sQik6dm9pZCAwfSxPLmNoMzI9RyxPLm1hajMyPUQsTy5wMzI9VCxPLnMwXzI1Nj1mdW5jdGlvbihFKXtyZXR1cm4gaihFLDIpXmooRSwxMyleaihFLDIyKX0sTy5zMV8yNTY9ZnVuY3Rpb24oRSl7cmV0dXJuIGooRSw2KV5qKEUsMTEpXmooRSwyNSl9LE8uZzBfMjU2PWZ1''@;'; put 'put ''bmN0aW9uKEUpe3JldHVybiBqKEUsNyleaihFLDE4KV5FPj4+M30sTy5nMV8yNTY9ZnVuY3Rpb24oRSl7cmV0dXJuIGooRSwxNyleaihFLDE5KV5FPj4+MTB9fSw2NDM2OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg5NzQ2KSxHPUkoNTcxNyk7ZnVuY3Rpb24gRChOLEIpe3JldHVy''@;'; put 'put ''biA1NTI5Nj09KDY0NTEyJk4uY2hhckNvZGVBdChCKSkmJiEoQjwwfHxCKzE+PU4ubGVuZ3RoKSYmNTYzMjA9PSg2NDUxMiZOLmNoYXJDb2RlQXQoQisxKSl9ZnVuY3Rpb24gVChOKXtyZXR1cm4oTj4+PjI0fE4+Pj44JjY1MjgwfE48PDgmMTY3MTE2ODB8KDI1NSZOKTw8MjQpPj4+MH1mdW5j''@;'; put 'put ''dGlvbiBFKE4pe3JldHVybiAxPT09Ti5sZW5ndGg/IjAiK046Tn1mdW5jdGlvbiB6KE4pe3JldHVybiA3PT09Ti5sZW5ndGg/IjAiK046Nj09PU4ubGVuZ3RoPyIwMCIrTjo1PT09Ti5sZW5ndGg/IjAwMCIrTjo0PT09Ti5sZW5ndGg/IjAwMDAiK046Mz09PU4ubGVuZ3RoPyIwMDAwMCIrTjoy''@;'; put 'put ''PT09Ti5sZW5ndGg/IjAwMDAwMCIrTjoxPT09Ti5sZW5ndGg/IjAwMDAwMDAiK046Tn1PLmluaGVyaXRzPUcsTy50b0FycmF5PWZ1bmN0aW9uKE4sQil7aWYoQXJyYXkuaXNBcnJheShOKSlyZXR1cm4gTi5zbGljZSgpO2lmKCFOKXJldHVybltdO3ZhciBaPVtdO2lmKCJzdHJpbmciPT10eXBl''@;'; put 'put ''b2YgTilpZihCKXtpZigiaGV4Ij09PUIpZm9yKChOPU4ucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT0wJiYoTj0iMCIrTiksVT0wO1U8Ti5sZW5ndGg7VSs9MilaLnB1c2gocGFyc2VJbnQoTltVXStOW1UrMV0sMTYpKX1lbHNlIGZvcih2YXIgWT0wLFU9MDtVPE4ubGVu''@;'; put 'put ''Z3RoO1UrKyl7dmFyIHE9Ti5jaGFyQ29kZUF0KFUpO3E8MTI4P1pbWSsrXT1xOnE8MjA0OD8oWltZKytdPXE+PjZ8MTkyLFpbWSsrXT02MyZxfDEyOCk6RChOLFUpPyhxPTY1NTM2KygoMTAyMyZxKTw8MTApKygxMDIzJk4uY2hhckNvZGVBdCgrK1UpKSxaW1krK109cT4+MTh8MjQwLFpbWSsr''@;'; put 'put ''XT1xPj4xMiY2M3wxMjgsWltZKytdPXE+PjYmNjN8MTI4LFpbWSsrXT02MyZxfDEyOCk6KFpbWSsrXT1xPj4xMnwyMjQsWltZKytdPXE+PjYmNjN8MTI4LFpbWSsrXT02MyZxfDEyOCl9ZWxzZSBmb3IoVT0wO1U8Ti5sZW5ndGg7VSsrKVpbVV09MHxOW1VdO3JldHVybiBafSxPLnRvSGV4PWZ1''@;'; put 'put ''bmN0aW9uKE4pe2Zvcih2YXIgQj0iIixaPTA7WjxOLmxlbmd0aDtaKyspQis9RShOW1pdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIEJ9LE8uaHRvbmw9VCxPLnRvSGV4MzI9ZnVuY3Rpb24oTixCKXtmb3IodmFyIFo9IiIsWT0wO1k8Ti5sZW5ndGg7WSsrKXt2YXIgVT1OW1ldOyJsaXR0bGUiPT09''@;'; put 'put ''QiYmKFU9VChVKSksWis9eihVLnRvU3RyaW5nKDE2KSl9cmV0dXJuIFp9LE8uemVybzI9RSxPLnplcm84PXosTy5qb2luMzI9ZnVuY3Rpb24oTixCLFosWSl7dmFyIFU9Wi1CO2ooVSU0PT0wKTtmb3IodmFyIHE9bmV3IEFycmF5KFUvNCksSj0wLGVlPUI7SjxxLmxlbmd0aDtKKyssZWUrPTQp''@;'; put 'put ''cVtKXT0oImJpZyI9PT1ZP05bZWVdPDwyNHxOW2VlKzFdPDwxNnxOW2VlKzJdPDw4fE5bZWUrM106TltlZSszXTw8MjR8TltlZSsyXTw8MTZ8TltlZSsxXTw8OHxOW2VlXSk+Pj4wO3JldHVybiBxfSxPLnNwbGl0MzI9ZnVuY3Rpb24oTixCKXtmb3IodmFyIFo9bmV3IEFycmF5KDQqTi5sZW5n''@;'; put 'put ''dGgpLFk9MCxVPTA7WTxOLmxlbmd0aDtZKyssVSs9NCl7dmFyIHE9TltZXTsiYmlnIj09PUI/KFpbVV09cT4+PjI0LFpbVSsxXT1xPj4+MTYmMjU1LFpbVSsyXT1xPj4+OCYyNTUsWltVKzNdPTI1NSZxKTooWltVKzNdPXE+Pj4yNCxaW1UrMl09cT4+PjE2JjI1NSxaW1UrMV09cT4+PjgmMjU1''@;'; put 'put ''LFpbVV09MjU1JnEpfXJldHVybiBafSxPLnJvdHIzMj1mdW5jdGlvbihOLEIpe3JldHVybiBOPj4+QnxOPDwzMi1CfSxPLnJvdGwzMj1mdW5jdGlvbihOLEIpe3JldHVybiBOPDxCfE4+Pj4zMi1CfSxPLnN1bTMyPWZ1bmN0aW9uKE4sQil7cmV0dXJuIE4rQj4+PjB9LE8uc3VtMzJfMz1mdW5j''@;'; put 'put ''dGlvbihOLEIsWil7cmV0dXJuIE4rQitaPj4+MH0sTy5zdW0zMl80PWZ1bmN0aW9uKE4sQixaLFkpe3JldHVybiBOK0IrWitZPj4+MH0sTy5zdW0zMl81PWZ1bmN0aW9uKE4sQixaLFksVSl7cmV0dXJuIE4rQitaK1krVT4+PjB9LE8uc3VtNjQ9ZnVuY3Rpb24oTixCLFosWSl7dmFyIHE9WStO''@;'; put 'put ''W0IrMV0+Pj4wO05bQl09KHE8WT8xOjApK1orTltCXT4+PjAsTltCKzFdPXF9LE8uc3VtNjRfaGk9ZnVuY3Rpb24oTixCLFosWSl7cmV0dXJuKEIrWT4+PjA8Qj8xOjApK04rWj4+PjB9LE8uc3VtNjRfbG89ZnVuY3Rpb24oTixCLFosWSl7cmV0dXJuIEIrWT4+PjB9LE8uc3VtNjRfNF9oaT1m''@;'; put 'put ''dW5jdGlvbihOLEIsWixZLFUscSxKLGVlKXt2YXIgcmU9MCxpZT1CO3JldHVybiByZSs9KGllPWllK1k+Pj4wKTxCPzE6MCxyZSs9KGllPWllK3E+Pj4wKTxxPzE6MCxOK1orVStKKyhyZSs9KGllPWllK2VlPj4+MCk8ZWU/MTowKT4+PjB9LE8uc3VtNjRfNF9sbz1mdW5jdGlvbihOLEIsWixZ''@;'; put 'put ''LFUscSxKLGVlKXtyZXR1cm4gQitZK3ErZWU+Pj4wfSxPLnN1bTY0XzVfaGk9ZnVuY3Rpb24oTixCLFosWSxVLHEsSixlZSxyZSxpZSl7dmFyIHVlPTAsbGU9QjtyZXR1cm4gdWUrPShsZT1sZStZPj4+MCk8Qj8xOjAsdWUrPShsZT1sZStxPj4+MCk8cT8xOjAsdWUrPShsZT1sZStlZT4+PjAp''@;'; put 'put ''PGVlPzE6MCxOK1orVStKK3JlKyh1ZSs9KGxlPWxlK2llPj4+MCk8aWU/MTowKT4+PjB9LE8uc3VtNjRfNV9sbz1mdW5jdGlvbihOLEIsWixZLFUscSxKLGVlLHJlLGllKXtyZXR1cm4gQitZK3ErZWUraWU+Pj4wfSxPLnJvdHI2NF9oaT1mdW5jdGlvbihOLEIsWil7cmV0dXJuKEI8PDMyLVp8''@;'; put 'put ''Tj4+PlopPj4+MH0sTy5yb3RyNjRfbG89ZnVuY3Rpb24oTixCLFope3JldHVybihOPDwzMi1afEI+Pj5aKT4+PjB9LE8uc2hyNjRfaGk9ZnVuY3Rpb24oTixCLFope3JldHVybiBOPj4+Wn0sTy5zaHI2NF9sbz1mdW5jdGlvbihOLEIsWil7cmV0dXJuKE48PDMyLVp8Qj4+PlopPj4+MH19LDIx''@;'; put 'put ''NTY6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDM3MTUpLEc9SSg0NTA0KSxEPUkoOTc0Nik7ZnVuY3Rpb24gVChFKXtpZighKHRoaXMgaW5zdGFuY2VvZiBUKSlyZXR1cm4gbmV3IFQoRSk7dGhpcy5oYXNoPUUuaGFzaCx0aGlzLnByZWRSZXNpc3Q9ISFFLnByZWRSZXNpc3QsdGhp''@;'; put 'put ''cy5vdXRMZW49dGhpcy5oYXNoLm91dFNpemUsdGhpcy5taW5FbnRyb3B5PUUubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aCx0aGlzLl9yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFyIHo9Ry50b0FycmF5KEUu''@;'; put 'put ''ZW50cm9weSxFLmVudHJvcHlFbmN8fCJoZXgiKSxOPUcudG9BcnJheShFLm5vbmNlLEUubm9uY2VFbmN8fCJoZXgiKSxCPUcudG9BcnJheShFLnBlcnMsRS5wZXJzRW5jfHwiaGV4Iik7RCh6Lmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBp''@;'; put 'put ''czogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5faW5pdCh6LE4sQil9TS5leHBvcnRzPVQsVC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oRSx6LE4pe3ZhciBCPUUuY29uY2F0KHopLmNvbmNhdChOKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcg''@;'; put 'put ''QXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBaPTA7Wjx0aGlzLlYubGVuZ3RoO1orKyl0aGlzLktbWl09MCx0aGlzLlZbWl09MTt0aGlzLl91cGRhdGUoQiksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LFQucHJvdG90eXBlLl9obWFjPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIG5ldyBqLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LFQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRSl7dmFyIHo9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO0UmJih6PXoudXBkYXRlKEUpKSx0aGlzLks9ei5kaWdlc3QoKSx0aGlz''@;'; put 'put ''LlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLEUmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShFKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sVC5wcm90b3R5''@;'; put 'put ''cGUucmVzZWVkPWZ1bmN0aW9uKEUseixOLEIpeyJzdHJpbmciIT10eXBlb2YgeiYmKEI9TixOPXosej1udWxsKSxFPUcudG9BcnJheShFLHopLE49Ry50b0FycmF5KE4sQiksRChFLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0''@;'; put 'put ''aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5fdXBkYXRlKEUuY29uY2F0KE58fFtdKSksdGhpcy5fcmVzZWVkPTF9LFQucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKEUseixOLEIpe2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcigiUmVz''@;'; put 'put ''ZWVkIGlzIHJlcXVpcmVkIik7InN0cmluZyIhPXR5cGVvZiB6JiYoQj1OLE49eix6PW51bGwpLE4mJihOPUcudG9BcnJheShOLEJ8fCJoZXgiKSx0aGlzLl91cGRhdGUoTikpO2Zvcih2YXIgWj1bXTtaLmxlbmd0aDxFOyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2Vz''@;'; put 'put ''dCgpLFo9Wi5jb25jYXQodGhpcy5WKTt2YXIgWT1aLnNsaWNlKDAsRSk7cmV0dXJuIHRoaXMuX3VwZGF0ZShOKSx0aGlzLl9yZXNlZWQrKyxHLmVuY29kZShZLHopfX0sNjQ1OihNLE8pPT57Ty5yZWFkPWZ1bmN0aW9uKEksaixHLEQsVCl7dmFyIEUseixOPTgqVC1ELTEsQj0oMTw8TiktMSxa''@;'; put 'put ''PUI+PjEsWT0tNyxVPUc/VC0xOjAscT1HPy0xOjEsSj1JW2orVV07Zm9yKFUrPXEsRT1KJigxPDwtWSktMSxKPj49LVksWSs9TjtZPjA7RT0yNTYqRStJW2orVV0sVSs9cSxZLT04KTtmb3Ioej1FJigxPDwtWSktMSxFPj49LVksWSs9RDtZPjA7ej0yNTYqeitJW2orVV0sVSs9cSxZLT04KTtp''@;'; put 'put ''ZigwPT09RSlFPTEtWjtlbHNle2lmKEU9PT1CKXJldHVybiB6P05hTjoxLzAqKEo/LTE6MSk7eis9TWF0aC5wb3coMixEKSxFLT1afXJldHVybihKPy0xOjEpKnoqTWF0aC5wb3coMixFLUQpfSxPLndyaXRlPWZ1bmN0aW9uKEksaixHLEQsVCxFKXt2YXIgeixOLEIsWj04KkUtVC0xLFk9KDE8''@;'; put 'put ''PFopLTEsVT1ZPj4xLHE9MjM9PT1UP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxKPUQ/MDpFLTEsZWU9RD8xOi0xLHJlPWo8MHx8MD09PWomJjEvajwwPzE6MDtmb3Ioaj1NYXRoLmFicyhqKSxpc05hTihqKXx8aj09PTEvMD8oTj1pc05hTihqKT8xOjAsej1ZKTooej1NYXRo''@;'; put 'put ''LmZsb29yKE1hdGgubG9nKGopL01hdGguTE4yKSxqKihCPU1hdGgucG93KDIsLXopKTwxJiYoei0tLEIqPTIpLChqKz16K1U+PTE/cS9COnEqTWF0aC5wb3coMiwxLVUpKSpCPj0yJiYoeisrLEIvPTIpLHorVT49WT8oTj0wLHo9WSk6eitVPj0xPyhOPShqKkItMSkqTWF0aC5wb3coMixUKSx6''@;'; put 'put ''Kz1VKTooTj1qKk1hdGgucG93KDIsVS0xKSpNYXRoLnBvdygyLFQpLHo9MCkpO1Q+PTg7SVtHK0pdPTI1NSZOLEorPWVlLE4vPTI1NixULT04KTtmb3Ioej16PDxUfE4sWis9VDtaPjA7SVtHK0pdPTI1NSZ6LEorPWVlLHovPTI1NixaLT04KTtJW0crSi1lZV18PTEyOCpyZX19LDc4NDQ6KE0s''@;'; put 'put ''TyxJKT0+e3ZhciBqPUkoNDE1NSksRz1JKDI0NzkpLEQ9T2JqZWN0LmNyZWF0ZShudWxsKSxUPUkoNzc4KTtNLmV4cG9ydHM9RyhmdW5jdGlvbihFLHope3JldHVybiBEW0VdPyhEW0VdLnB1c2goeiksbnVsbCk6KERbRV09W3pdLE49RSxUKGZ1bmN0aW9uIEIoKXt2YXIgWj1EW05dLFk9Wi5s''@;'; put 'put ''ZW5ndGgsVT1mdW5jdGlvbihKKXtmb3IodmFyIGVlPUoubGVuZ3RoLHJlPVtdLGllPTA7aWU8ZWU7aWUrKylyZVtpZV09SltpZV07cmV0dXJuIHJlfShhcmd1bWVudHMpO3RyeXtmb3IodmFyIHE9MDtxPFk7cSsrKVpbcV0uYXBwbHkobnVsbCxVKX1maW5hbGx5e1oubGVuZ3RoPlk/KFouc3Bs''@;'; put 'put ''aWNlKDAsWSksai5uZXh0VGljayhmdW5jdGlvbigpe0IuYXBwbHkobnVsbCxVKX0pKTpkZWxldGUgRFtOXX19KSk7dmFyIE59KX0sNTcxNzpNPT57TS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKE8sSSl7SSYmKE8uc3VwZXJfPUksTy5wcm90b3R5''@;'; put 'put ''cGU9T2JqZWN0LmNyZWF0ZShJLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOk8sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTpmdW5jdGlvbihPLEkpe2lmKEkpe08uc3VwZXJfPUk7dmFyIGo9ZnVuY3Rpb24oKXt9O2oucHJvdG90eXBlPUkucHJv''@;'; put 'put ''dG90eXBlLE8ucHJvdG90eXBlPW5ldyBqLE8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU99fX0sMjU4NDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNjQxMCkoKSxHPUkoMTkyNCkoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSxEPWZ1bmN0aW9uKHope3JldHVybiEoaiYmeiYm''@;'; put 'put ''Im9iamVjdCI9PXR5cGVvZiB6JiZTeW1ib2wudG9TdHJpbmdUYWcgaW4geikmJiJbb2JqZWN0IEFyZ3VtZW50c10iPT09Ryh6KX0sVD1mdW5jdGlvbih6KXtyZXR1cm4hIUQoeil8fG51bGwhPT16JiYib2JqZWN0Ij09dHlwZW9mIHomJiJudW1iZXIiPT10eXBlb2Ygei5sZW5ndGgmJnoubGVu''@;'; put 'put ''Z3RoPj0wJiYiW29iamVjdCBBcnJheV0iIT09Ryh6KSYmIltvYmplY3QgRnVuY3Rpb25dIj09PUcoei5jYWxsZWUpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIEQoYXJndW1lbnRzKX0oKTtELmlzTGVnYWN5QXJndW1lbnRzPVQsTS5leHBvcnRzPUU/RDpUfSw1MzIwOk09PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIE8sSSxqPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxHPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmbnVsbCE9PVJlZmxlY3QmJlJlZmxlY3QuYXBwbHk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEcmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5''@;'; put 'put ''e089T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXt0aHJvdyBJfX0pLEk9e30sRyhmdW5jdGlvbigpe3Rocm93IDQyfSxudWxsLE8pfWNhdGNoKFUpe1UhPT1JJiYoRz1udWxsKX1lbHNlIEc9bnVsbDt2YXIgRD0vXlxzKmNsYXNzXGIvLFQ9ZnVuY3Rp''@;'; put 'put ''b24oVSl7dHJ5e3ZhciBxPWouY2FsbChVKTtyZXR1cm4gRC50ZXN0KHEpfWNhdGNoe3JldHVybiExfX0sRT1mdW5jdGlvbihVKXt0cnl7cmV0dXJuIVQoVSkmJihqLmNhbGwoVSksITApfWNhdGNoe3JldHVybiExfX0sej1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLE49ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFN5bWJvbCYmISFTeW1ib2wudG9TdHJpbmdUYWcsQj0hKDAgaW5bLF0pLFo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07aWYoIm9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCl7dmFyIFk9ZG9jdW1lbnQuYWxsO3ouY2FsbChZKT09PXouY2FsbChkb2N1bWVudC5hbGwpJiYoWj1mdW5jdGlv''@;'; put 'put ''bihVKXtpZigoQnx8IVUpJiYodm9pZCAwPT09VXx8Im9iamVjdCI9PXR5cGVvZiBVKSl0cnl7dmFyIHE9ei5jYWxsKFUpO3JldHVybigiW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0iPT09cXx8IltvYmplY3QgSFRNTCBkb2N1bWVudC5hbGwgY2xhc3NdIj09PXF8fCJbb2JqZWN0IEhUTUxD''@;'; put 'put ''b2xsZWN0aW9uXSI9PT1xfHwiW29iamVjdCBPYmplY3RdIj09PXEpJiZudWxsPT1VKCIiKX1jYXRjaHt9cmV0dXJuITF9KX1NLmV4cG9ydHM9Rz9mdW5jdGlvbihVKXtpZihaKFUpKXJldHVybiEwO2lmKCFVfHwiZnVuY3Rpb24iIT10eXBlb2YgVSYmIm9iamVjdCIhPXR5cGVvZiBVKXJldHVy''@;'; put 'put ''biExO3RyeXtHKFUsbnVsbCxPKX1jYXRjaChxKXtpZihxIT09SSlyZXR1cm4hMX1yZXR1cm4hVChVKSYmRShVKX06ZnVuY3Rpb24oVSl7aWYoWihVKSlyZXR1cm4hMDtpZighVXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFUmJiJvYmplY3QiIT10eXBlb2YgVSlyZXR1cm4hMTtpZihOKXJldHVybiBF''@;'; put 'put ''KFUpO2lmKFQoVSkpcmV0dXJuITE7dmFyIHE9ei5jYWxsKFUpO3JldHVybiEoIltvYmplY3QgRnVuY3Rpb25dIiE9PXEmJiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIhPT1xJiYhL15cW29iamVjdCBIVE1MLy50ZXN0KHEpKSYmRShVKX19LDg2NjI6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgaixHPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsVD0vXlxzKig/OmZ1bmN0aW9uKT9cKi8sRT1JKDY0MTApKCksej1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7TS5leHBvcnRzPWZ1bmN0aW9uKE4pe2lmKCJmdW5jdGlvbiIhPXR5''@;'; put 'put ''cGVvZiBOKXJldHVybiExO2lmKFQudGVzdChELmNhbGwoTikpKXJldHVybiEwO2lmKCFFKXJldHVybiJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PT1HLmNhbGwoTik7aWYoIXopcmV0dXJuITE7aWYodm9pZCAwPT09ail7dmFyIEI9ZnVuY3Rpb24oKXtpZighRSlyZXR1cm4hMTt0cnl7''@;'; put 'put ''cmV0dXJuIEZ1bmN0aW9uKCJyZXR1cm4gZnVuY3Rpb24qKCkge30iKSgpfWNhdGNoe319KCk7aj0hIUImJnooQil9cmV0dXJuIHooTik9PT1qfX0sODYxMTpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1mdW5jdGlvbihPKXtyZXR1cm4gTyE9T319LDM2MDooTSxPLEkpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBqPUkoNTU1OSksRz1JKDQyODkpLEQ9SSg4NjExKSxUPUkoOTQxNSksRT1JKDMxOTQpLHo9aihUKCksTnVtYmVyKTtHKHose2dldFBvbHlmaWxsOlQsaW1wbGVtZW50YXRpb246RCxzaGltOkV9KSxNLmV4cG9ydHM9en0sOTQxNTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBq''@;'; put 'put ''PUkoODYxMSk7TS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuIE51bWJlci5pc05hTiYmTnVtYmVyLmlzTmFOKE5hTikmJiFOdW1iZXIuaXNOYU4oImEiKT9OdW1iZXIuaXNOYU46an19LDMxOTQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQyODkpLEc9SSg5NDE1KTtNLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oKXt2YXIgRD1HKCk7cmV0dXJuIGooTnVtYmVyLHtpc05hTjpEfSx7aXNOYU46ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLmlzTmFOIT09RH19KSxEfX0sNTY5MjooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDAyOSksRz1JKDMwODMpLEQ9SSgxOTI0KSxUPUQo''@;'; put 'put ''Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSxFPUkoNjQxMCkoKSx6PUkoNzI5NiksTj10eXBlb2YgZ2xvYmFsVGhpcz4idSI/SS5nOmdsb2JhbFRoaXMsQj1HKCksWj1EKCJBcnJheS5wcm90b3R5cGUuaW5kZXhPZiIsITApfHxmdW5jdGlvbihKLGVlKXtmb3IodmFyIHJlPTA7cmU8Si5s''@;'; put 'put ''ZW5ndGg7cmUrPTEpaWYoSltyZV09PT1lZSlyZXR1cm4gcmU7cmV0dXJuLTF9LFk9RCgiU3RyaW5nLnByb3RvdHlwZS5zbGljZSIpLFU9e30scT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7RSYmeiYmcSYmaihCLGZ1bmN0aW9uKEope3ZhciBlZT1uZXcgTltKXTtpZihTeW1ib2wudG9TdHJpbmdU''@;'; put 'put ''YWcgaW4gZWUpe3ZhciByZT1xKGVlKSxpZT16KHJlLFN5bWJvbC50b1N0cmluZ1RhZyk7aWYoIWllKXt2YXIgdWU9cShyZSk7aWU9eih1ZSxTeW1ib2wudG9TdHJpbmdUYWcpfVVbSl09aWUuZ2V0fX0pLE0uZXhwb3J0cz1mdW5jdGlvbihKKXtpZighSnx8Im9iamVjdCIhPXR5cGVvZiBKKXJl''@;'; put 'put ''dHVybiExO2lmKCFFfHwhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBKKSl7dmFyIGVlPVkoVChKKSw4LC0xKTtyZXR1cm4gWihCLGVlKT4tMX1yZXR1cm4hIXomJihyZT1KLGllPSExLGooVSxmdW5jdGlvbih1ZSxsZSl7aWYoIWllKXRyeXtpZT11ZS5jYWxsKHJlKT09PWxlfWNhdGNoe319KSxp''@;'; put 'put ''ZSk7dmFyIHJlLGllfX0sNjgxMzooTSxPLEkpPT57bGV0IGo7dHJ5e2o9SSg3Nyl9Y2F0Y2h7aj1JKDQxMjkpfWNvbnN0IEc9SSg4OTgxKSx7c3RyaW5naWZ5OkQsc3RyaXBCb206VH09SSg2NzgwKSxFPXtyZWFkRmlsZTpHLmZyb21Qcm9taXNlKGZ1bmN0aW9uKCl7dmFyIHo9b2UoZnVuY3Rp''@;'; put 'put ''b24qKE4sQj17fSl7InN0cmluZyI9PXR5cGVvZiBCJiYoQj17ZW5jb2Rpbmc6Qn0pO2NvbnN0IFo9Qi5mc3x8aixZPSEoInRocm93cyJpbiBCKXx8Qi50aHJvd3M7bGV0IFUscT15aWVsZCBHLmZyb21DYWxsYmFjayhaLnJlYWRGaWxlKShOLEIpO3E9VChxKTt0cnl7VT1KU09OLnBhcnNlKHEs''@;'; put 'put ''Qj9CLnJldml2ZXI6bnVsbCl9Y2F0Y2goSil7aWYoWSl0aHJvdyBKLm1lc3NhZ2U9YCR7Tn06ICR7Si5tZXNzYWdlfWAsSjtyZXR1cm4gbnVsbH1yZXR1cm4gVX0pO3JldHVybiBmdW5jdGlvbihOKXtyZXR1cm4gei5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSxyZWFkRmlsZVN5bmM6ZnVu''@;'; put 'put ''Y3Rpb24oeixOPXt9KXsic3RyaW5nIj09dHlwZW9mIE4mJihOPXtlbmNvZGluZzpOfSk7Y29uc3QgQj1OLmZzfHxqLFo9ISgidGhyb3dzImluIE4pfHxOLnRocm93czt0cnl7bGV0IFk9Qi5yZWFkRmlsZVN5bmMoeixOKTtyZXR1cm4gWT1UKFkpLEpTT04ucGFyc2UoWSxOLnJldml2ZXIpfWNh''@;'; put 'put ''dGNoKFkpe2lmKFopdGhyb3cgWS5tZXNzYWdlPWAke3p9OiAke1kubWVzc2FnZX1gLFk7cmV0dXJuIG51bGx9fSx3cml0ZUZpbGU6Ry5mcm9tUHJvbWlzZShmdW5jdGlvbigpe3ZhciB6PW9lKGZ1bmN0aW9uKihOLEIsWj17fSl7Y29uc3QgWT1aLmZzfHxqLFU9RChCLFopO3lpZWxkIEcuZnJv''@;'; put 'put ''bUNhbGxiYWNrKFkud3JpdGVGaWxlKShOLFUsWil9KTtyZXR1cm4gZnVuY3Rpb24oTixCKXtyZXR1cm4gei5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSx3cml0ZUZpbGVTeW5jOmZ1bmN0aW9uKHosTixCPXt9KXtjb25zdCBaPUIuZnN8fGosWT1EKE4sQik7cmV0dXJuIFoud3JpdGVGaWxl''@;'; put 'put ''U3luYyh6LFksQil9fTtNLmV4cG9ydHM9RX0sNjc4MDooTSxPLEkpPT57dmFyIGo9SSg4NzY0KS5CdWZmZXI7TS5leHBvcnRzPXtzdHJpbmdpZnk6ZnVuY3Rpb24oRyx7RU9MOkQ9IlxuIixmaW5hbEVPTDpUPSEwLHJlcGxhY2VyOkU9bnVsbCxzcGFjZXM6en09e30pe2NvbnN0IE49VD9EOiIi''@;'; put 'put ''O3JldHVybiBKU09OLnN0cmluZ2lmeShHLEUseikucmVwbGFjZSgvXG4vZyxEKStOfSxzdHJpcEJvbTpmdW5jdGlvbihHKXtyZXR1cm4gai5pc0J1ZmZlcihHKSYmKEc9Ry50b1N0cmluZygidXRmOCIpKSxHLnJlcGxhY2UoL15cdUZFRkYvLCIiKX19fSw2MjQ1OihNLE8sSSk9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7ZnVuY3Rpb24gaih6KXt0aGlzLm1lc3NhZ2U9en1JLnIoTyksSS5kKE8se0ludmFsaWRUb2tlbkVycm9yOigpPT5ULGRlZmF1bHQ6KCk9PkV9KSwoai5wcm90b3R5cGU9bmV3IEVycm9yKS5uYW1lPSJJbnZhbGlkQ2hhcmFjdGVyRXJyb3IiO3ZhciBHPXR5cGVvZiB3aW5kb3c8InUi''@;'; put 'put ''JiZ3aW5kb3cuYXRvYiYmd2luZG93LmF0b2IuYmluZCh3aW5kb3cpfHxmdW5jdGlvbih6KXt2YXIgTj1TdHJpbmcoeikucmVwbGFjZSgvPSskLywiIik7aWYoTi5sZW5ndGglND09MSl0aHJvdyBuZXcgaigiJ2F0b2InIGZhaWxlZDogVGhlIHN0cmluZyB0byBiZSBkZWNvZGVkIGlzIG5vdCBj''@;'; put 'put ''b3JyZWN0bHkgZW5jb2RlZC4iKTtmb3IodmFyIEIsWixZPTAsVT0wLHE9IiI7Wj1OLmNoYXJBdChVKyspO35aJiYoQj1ZJTQ/NjQqQitaOlosWSsrJTQpP3ErPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JkI+PigtMipZJjYpKTowKVo9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVm''@;'; put 'put ''Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89Ii5pbmRleE9mKFopO3JldHVybiBxfTtmdW5jdGlvbiBUKHope3RoaXMubWVzc2FnZT16fShULnByb3RvdHlwZT1uZXcgRXJyb3IpLm5hbWU9IkludmFsaWRUb2tlbkVycm9yIjtjb25zdCBFPWZ1bmN0aW9uKHosTil7aWYoInN0cmlu''@;'; put 'put ''ZyIhPXR5cGVvZiB6KXRocm93IG5ldyBUKCJJbnZhbGlkIHRva2VuIHNwZWNpZmllZCIpO3ZhciBCPSEwPT09KE49Tnx8e30pLmhlYWRlcj8wOjE7dHJ5e3JldHVybiBKU09OLnBhcnNlKGZ1bmN0aW9uIEQoeil7dmFyIE49ei5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKTtz''@;'; put 'put ''d2l0Y2goTi5sZW5ndGglNCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjpOKz0iPT0iO2JyZWFrO2Nhc2UgMzpOKz0iPSI7YnJlYWs7ZGVmYXVsdDp0aHJvdyJJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchIn10cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChHKE4pLnJlcGxhY2UoLyguKS9nLGZ1''@;'; put 'put ''bmN0aW9uKFosWSl7dmFyIFU9WS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBVLmxlbmd0aDwyJiYoVT0iMCIrVSksIiUiK1V9KSl9Y2F0Y2h7cmV0dXJuIEcoTil9fSh6LnNwbGl0KCIuIilbQl0pKX1jYXRjaChaKXt0aHJvdyBuZXcgVCgiSW52YWxp''@;'; put 'put ''ZCB0b2tlbiBzcGVjaWZpZWQ6ICIrWi5tZXNzYWdlKX19fSwyMzE4OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg1NzE3KSxHPUkoMzM0OSksRD1JKDk1MDkpLkJ1ZmZlcixUPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gRSgpe0cuY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQx''@;'; put 'put ''OTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiB6KFUscSl7cmV0dXJuIFU8PHF8VT4+PjMyLXF9ZnVuY3Rpb24gTihVLHEsSixlZSxyZSxpZSx1ZSl7cmV0dXJuIHooVSsocSZKfH5xJmVlKStyZStpZXwwLHVlKStxfDB9''@;'; put 'put ''ZnVuY3Rpb24gQihVLHEsSixlZSxyZSxpZSx1ZSl7cmV0dXJuIHooVSsocSZlZXxKJn5lZSkrcmUraWV8MCx1ZSkrcXwwfWZ1bmN0aW9uIFooVSxxLEosZWUscmUsaWUsdWUpe3JldHVybiB6KFUrKHFeSl5lZSkrcmUraWV8MCx1ZSkrcXwwfWZ1bmN0aW9uIFkoVSxxLEosZWUscmUsaWUsdWUp''@;'; put 'put ''e3JldHVybiB6KFUrKEpeKHF8fmVlKSkrcmUraWV8MCx1ZSkrcXwwfWooRSxHKSxFLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciBVPVQscT0wO3E8MTY7KytxKVVbcV09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpxKTt2YXIgSj10aGlzLl9hLGVlPXRoaXMuX2IscmU9''@;'; put 'put ''dGhpcy5fYyxpZT10aGlzLl9kO0o9TihKLGVlLHJlLGllLFVbMF0sMzYxNDA5MDM2MCw3KSxpZT1OKGllLEosZWUscmUsVVsxXSwzOTA1NDAyNzEwLDEyKSxyZT1OKHJlLGllLEosZWUsVVsyXSw2MDYxMDU4MTksMTcpLGVlPU4oZWUscmUsaWUsSixVWzNdLDMyNTA0NDE5NjYsMjIpLEo9TihK''@;'; put 'put ''LGVlLHJlLGllLFVbNF0sNDExODU0ODM5OSw3KSxpZT1OKGllLEosZWUscmUsVVs1XSwxMjAwMDgwNDI2LDEyKSxyZT1OKHJlLGllLEosZWUsVVs2XSwyODIxNzM1OTU1LDE3KSxlZT1OKGVlLHJlLGllLEosVVs3XSw0MjQ5MjYxMzEzLDIyKSxKPU4oSixlZSxyZSxpZSxVWzhdLDE3NzAwMzU0''@;'; put 'put ''MTYsNyksaWU9TihpZSxKLGVlLHJlLFVbOV0sMjMzNjU1Mjg3OSwxMikscmU9TihyZSxpZSxKLGVlLFVbMTBdLDQyOTQ5MjUyMzMsMTcpLGVlPU4oZWUscmUsaWUsSixVWzExXSwyMzA0NTYzMTM0LDIyKSxKPU4oSixlZSxyZSxpZSxVWzEyXSwxODA0NjAzNjgyLDcpLGllPU4oaWUsSixlZSxy''@;'; put 'put ''ZSxVWzEzXSw0MjU0NjI2MTk1LDEyKSxyZT1OKHJlLGllLEosZWUsVVsxNF0sMjc5Mjk2NTAwNiwxNyksSj1CKEosZWU9TihlZSxyZSxpZSxKLFVbMTVdLDEyMzY1MzUzMjksMjIpLHJlLGllLFVbMV0sNDEyOTE3MDc4Niw1KSxpZT1CKGllLEosZWUscmUsVVs2XSwzMjI1NDY1NjY0LDkpLHJl''@;'; put 'put ''PUIocmUsaWUsSixlZSxVWzExXSw2NDM3MTc3MTMsMTQpLGVlPUIoZWUscmUsaWUsSixVWzBdLDM5MjEwNjk5OTQsMjApLEo9QihKLGVlLHJlLGllLFVbNV0sMzU5MzQwODYwNSw1KSxpZT1CKGllLEosZWUscmUsVVsxMF0sMzgwMTYwODMsOSkscmU9QihyZSxpZSxKLGVlLFVbMTVdLDM2MzQ0''@;'; put 'put ''ODg5NjEsMTQpLGVlPUIoZWUscmUsaWUsSixVWzRdLDM4ODk0Mjk0NDgsMjApLEo9QihKLGVlLHJlLGllLFVbOV0sNTY4NDQ2NDM4LDUpLGllPUIoaWUsSixlZSxyZSxVWzE0XSwzMjc1MTYzNjA2LDkpLHJlPUIocmUsaWUsSixlZSxVWzNdLDQxMDc2MDMzMzUsMTQpLGVlPUIoZWUscmUsaWUs''@;'; put 'put ''SixVWzhdLDExNjM1MzE1MDEsMjApLEo9QihKLGVlLHJlLGllLFVbMTNdLDI4NTAyODU4MjksNSksaWU9QihpZSxKLGVlLHJlLFVbMl0sNDI0MzU2MzUxMiw5KSxyZT1CKHJlLGllLEosZWUsVVs3XSwxNzM1MzI4NDczLDE0KSxKPVooSixlZT1CKGVlLHJlLGllLEosVVsxMl0sMjM2ODM1OTU2''@;'; put 'put ''MiwyMCkscmUsaWUsVVs1XSw0Mjk0NTg4NzM4LDQpLGllPVooaWUsSixlZSxyZSxVWzhdLDIyNzIzOTI4MzMsMTEpLHJlPVoocmUsaWUsSixlZSxVWzExXSwxODM5MDMwNTYyLDE2KSxlZT1aKGVlLHJlLGllLEosVVsxNF0sNDI1OTY1Nzc0MCwyMyksSj1aKEosZWUscmUsaWUsVVsxXSwyNzYz''@;'; put 'put ''OTc1MjM2LDQpLGllPVooaWUsSixlZSxyZSxVWzRdLDEyNzI4OTMzNTMsMTEpLHJlPVoocmUsaWUsSixlZSxVWzddLDQxMzk0Njk2NjQsMTYpLGVlPVooZWUscmUsaWUsSixVWzEwXSwzMjAwMjM2NjU2LDIzKSxKPVooSixlZSxyZSxpZSxVWzEzXSw2ODEyNzkxNzQsNCksaWU9WihpZSxKLGVl''@;'; put 'put ''LHJlLFVbMF0sMzkzNjQzMDA3NCwxMSkscmU9WihyZSxpZSxKLGVlLFVbM10sMzU3MjQ0NTMxNywxNiksZWU9WihlZSxyZSxpZSxKLFVbNl0sNzYwMjkxODksMjMpLEo9WihKLGVlLHJlLGllLFVbOV0sMzY1NDYwMjgwOSw0KSxpZT1aKGllLEosZWUscmUsVVsxMl0sMzg3MzE1MTQ2MSwxMSks''@;'; put 'put ''cmU9WihyZSxpZSxKLGVlLFVbMTVdLDUzMDc0MjUyMCwxNiksSj1ZKEosZWU9WihlZSxyZSxpZSxKLFVbMl0sMzI5OTYyODY0NSwyMykscmUsaWUsVVswXSw0MDk2MzM2NDUyLDYpLGllPVkoaWUsSixlZSxyZSxVWzddLDExMjY4OTE0MTUsMTApLHJlPVkocmUsaWUsSixlZSxVWzE0XSwyODc4''@;'; put 'put ''NjEyMzkxLDE1KSxlZT1ZKGVlLHJlLGllLEosVVs1XSw0MjM3NTMzMjQxLDIxKSxKPVkoSixlZSxyZSxpZSxVWzEyXSwxNzAwNDg1NTcxLDYpLGllPVkoaWUsSixlZSxyZSxVWzNdLDIzOTk5ODA2OTAsMTApLHJlPVkocmUsaWUsSixlZSxVWzEwXSw0MjkzOTE1NzczLDE1KSxlZT1ZKGVlLHJl''@;'; put 'put ''LGllLEosVVsxXSwyMjQwMDQ0NDk3LDIxKSxKPVkoSixlZSxyZSxpZSxVWzhdLDE4NzMzMTMzNTksNiksaWU9WShpZSxKLGVlLHJlLFVbMTVdLDQyNjQzNTU1NTIsMTApLHJlPVkocmUsaWUsSixlZSxVWzZdLDI3MzQ3Njg5MTYsMTUpLGVlPVkoZWUscmUsaWUsSixVWzEzXSwxMzA5MTUxNjQ5''@;'; put 'put ''LDIxKSxKPVkoSixlZSxyZSxpZSxVWzRdLDQxNDk0NDQyMjYsNiksaWU9WShpZSxKLGVlLHJlLFVbMTFdLDMxNzQ3NTY5MTcsMTApLHJlPVkocmUsaWUsSixlZSxVWzJdLDcxODc4NzI1OSwxNSksZWU9WShlZSxyZSxpZSxKLFVbOV0sMzk1MTQ4MTc0NSwyMSksdGhpcy5fYT10aGlzLl9hK0p8''@;'; put 'put ''MCx0aGlzLl9iPXRoaXMuX2IrZWV8MCx0aGlzLl9jPXRoaXMuX2MrcmV8MCx0aGlzLl9kPXRoaXMuX2QraWV8MH0sRS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNldD41NiYmKHRoaXMuX2Js''@;'; put 'put ''b2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1NiksdGhpcy5fYmxv''@;'; put 'put ''Y2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBVPUQuYWxsb2NVbnNhZmUoMTYpO3JldHVybiBVLndyaXRlSW50MzJMRSh0aGlzLl9hLDApLFUud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCksVS53cml0ZUludDMyTEUodGhpcy5fYyw4KSxVLndy''@;'; put 'put ''aXRlSW50MzJMRSh0aGlzLl9kLDEyKSxVfSxNLmV4cG9ydHM9RX0sMzA0NzooTSxPLEkpPT57dmFyIGo9SSg2MjQwKSxHPUkoOTkzMSk7ZnVuY3Rpb24gRChUKXt0aGlzLnJhbmQ9VHx8bmV3IEcuUmFuZH1NLmV4cG9ydHM9RCxELmNyZWF0ZT1mdW5jdGlvbihUKXtyZXR1cm4gbmV3IEQoVCl9''@;'; put 'put ''LEQucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24oVCl7dmFyIEU9VC5iaXRMZW5ndGgoKSx6PU1hdGguY2VpbChFLzgpO2Rve3ZhciBOPW5ldyBqKHRoaXMucmFuZC5nZW5lcmF0ZSh6KSl9d2hpbGUoTi5jbXAoVCk+PTApO3JldHVybiBOfSxELnByb3RvdHlwZS5fcmFuZHJhbmdlPWZ1''@;'; put 'put ''bmN0aW9uKFQsRSl7dmFyIHo9RS5zdWIoVCk7cmV0dXJuIFQuYWRkKHRoaXMuX3JhbmRiZWxvdyh6KSl9LEQucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oVCxFLHope3ZhciBOPVQuYml0TGVuZ3RoKCksQj1qLm1vbnQoVCksWj1uZXcgaigxKS50b1JlZChCKTtFfHwoRT1NYXRoLm1heCgxLE4v''@;'; put 'put ''NDh8MCkpO2Zvcih2YXIgWT1ULnN1Ym4oMSksVT0wOyFZLnRlc3RuKFUpO1UrKyk7Zm9yKHZhciBxPVQuc2hybihVKSxKPVkudG9SZWQoQik7RT4wO0UtLSl7dmFyIGVlPXRoaXMuX3JhbmRyYW5nZShuZXcgaigyKSxZKTt6JiZ6KGVlKTt2YXIgcmU9ZWUudG9SZWQoQikucmVkUG93KHEpO2lm''@;'; put 'put ''KDAhPT1yZS5jbXAoWikmJjAhPT1yZS5jbXAoSikpe2Zvcih2YXIgaWU9MTtpZTxVO2llKyspe2lmKDA9PT0ocmU9cmUucmVkU3FyKCkpLmNtcChaKSlyZXR1cm4hMTtpZigwPT09cmUuY21wKEopKWJyZWFrfWlmKGllPT09VSlyZXR1cm4hMX19cmV0dXJuITB9LEQucHJvdG90eXBlLmdldERp''@;'; put 'put ''dmlzb3I9ZnVuY3Rpb24oVCxFKXt2YXIgej1ULmJpdExlbmd0aCgpLE49ai5tb250KFQpLEI9bmV3IGooMSkudG9SZWQoTik7RXx8KEU9TWF0aC5tYXgoMSx6LzQ4fDApKTtmb3IodmFyIFo9VC5zdWJuKDEpLFk9MDshWi50ZXN0bihZKTtZKyspO2Zvcih2YXIgVT1ULnNocm4oWSkscT1aLnRv''@;'; put 'put ''UmVkKE4pO0U+MDtFLS0pe3ZhciBKPXRoaXMuX3JhbmRyYW5nZShuZXcgaigyKSxaKSxlZT1ULmdjZChKKTtpZigwIT09ZWUuY21wbigxKSlyZXR1cm4gZWU7dmFyIHJlPUoudG9SZWQoTikucmVkUG93KFUpO2lmKDAhPT1yZS5jbXAoQikmJjAhPT1yZS5jbXAocSkpe2Zvcih2YXIgaWU9MTtp''@;'; put 'put ''ZTxZO2llKyspe2lmKDA9PT0ocmU9cmUucmVkU3FyKCkpLmNtcChCKSlyZXR1cm4gcmUuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKFQpO2lmKDA9PT1yZS5jbXAocSkpYnJlYWt9aWYoaWU9PT1ZKXJldHVybihyZT1yZS5yZWRTcXIoKSkuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKFQpfX1yZXR1cm4h''@;'; put 'put ''MX19LDYyNDA6ZnVuY3Rpb24oTSxPLEkpeyFmdW5jdGlvbihqLEcpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBEKGcsQyl7aWYoIWcpdGhyb3cgbmV3IEVycm9yKEN8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVChnLEMpe2cuc3VwZXJfPUM7dmFyIGs9ZnVuY3Rpb24oKXt9O2sucHJv''@;'; put 'put ''dG90eXBlPUMucHJvdG90eXBlLGcucHJvdG90eXBlPW5ldyBrLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWd9ZnVuY3Rpb24gRShnLEMsayl7aWYoRS5pc0JOKGcpKXJldHVybiBnO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51''@;'; put 'put ''bGwhPT1nJiYoImxlIiE9PUMmJiJiZSIhPT1DfHwoaz1DLEM9MTApLHRoaXMuX2luaXQoZ3x8MCxDfHwxMCxrfHwiYmUiKSl9dmFyIHo7Im9iamVjdCI9PXR5cGVvZiBqP2ouZXhwb3J0cz1FOkcuQk49RSxFLkJOPUUsRS53b3JkU2l6ZT0yNjt0cnl7ej10eXBlb2Ygd2luZG93PCJ1IiYmdm9p''@;'; put 'put ''ZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkkoNjYxOSkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBOKGcsQyl7dmFyIGs9Zy5jaGFyQ29kZUF0KEMpO3JldHVybiBrPj02NSYmazw9NzA/ay01NTprPj05NyYmazw9MTAyP2stODc6ay00OCYxNX1mdW5jdGlvbiBCKGcsQyxrKXt2''@;'; put 'put ''YXIgXz1OKGcsayk7cmV0dXJuIGstMT49QyYmKF98PU4oZyxrLTEpPDw0KSxffWZ1bmN0aW9uIFooZyxDLGssXyl7Zm9yKHZhciBwPTAsdz1NYXRoLm1pbihnLmxlbmd0aCxrKSxLPUM7Szx3O0srKyl7dmFyIHRlPWcuY2hhckNvZGVBdChLKS00ODtwKj1fLHArPXRlPj00OT90ZS00OSsxMDp0''@;'; put 'put ''ZT49MTc/dGUtMTcrMTA6dGV9cmV0dXJuIHB9RS5pc0JOPWZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgRXx8bnVsbCE9PWcmJiJvYmplY3QiPT10eXBlb2YgZyYmZy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZy53b3Jkcyl9LEUubWF4''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPjA/ZzpDfSxFLm1pbj1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKTwwP2c6Q30sRS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZyxDLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihnLEMs''@;'; put 'put ''ayk7aWYoIm9iamVjdCI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZyxDLGspOyJoZXgiPT09QyYmKEM9MTYpLEQoQz09PSgwfEMpJiZDPj0yJiZDPD0zNik7dmFyIF89MDsiLSI9PT0oZz1nLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKF8rKyx0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTEpLF88Zy5sZW5ndGgmJigxNj09PUM/dGhpcy5fcGFyc2VIZXgoZyxfLGspOih0aGlzLl9wYXJzZUJhc2UoZyxDLF8pLCJsZSI9PT1rJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQyxrKSkpfSxFLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihnLEMsayl7''@;'; put 'put ''ZzwwJiYodGhpcy5uZWdhdGl2ZT0xLGc9LWcpLGc8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmddLHRoaXMubGVuZ3RoPTEpOmc8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZyxnLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRChnPDkw''@;'; put 'put ''MDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsayl9LEUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZyxDLGspe2lm''@;'; put 'put ''KEQoIm51bWJlciI9PXR5cGVvZiBnLmxlbmd0aCksZy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgXz0wO188''@;'; put 'put ''dGhpcy5sZW5ndGg7XysrKXRoaXMud29yZHNbX109MDt2YXIgcCx3LEs9MDtpZigiYmUiPT09aylmb3IoXz1nLmxlbmd0aC0xLHA9MDtfPj0wO18tPTMpdGhpcy53b3Jkc1twXXw9KHc9Z1tfXXxnW18tMV08PDh8Z1tfLTJdPDwxNik8PEsmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPXc+Pj4y''@;'; put 'put ''Ni1LJjY3MTA4ODYzLChLKz0yNCk+PTI2JiYoSy09MjYscCsrKTtlbHNlIGlmKCJsZSI9PT1rKWZvcihfPTAscD0wO188Zy5sZW5ndGg7Xys9Myl0aGlzLndvcmRzW3BdfD0odz1nW19dfGdbXysxXTw8OHxnW18rMl08PDE2KTw8SyY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09dz4+PjI2LUsm''@;'; put 'put ''NjcxMDg4NjMsKEsrPTI0KT49MjYmJihLLT0yNixwKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihnLEMsayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChnLmxlbmd0aC1DKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7''@;'; put 'put ''Zm9yKHZhciBfPTA7Xzx0aGlzLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT0wO3ZhciBwLHc9MCxLPTA7aWYoImJlIj09PWspZm9yKF89Zy5sZW5ndGgtMTtfPj1DO18tPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndvcmRzW0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0aGlzLndvcmRzW0sr''@;'; put 'put ''PTFdfD1wPj4+MjYpOncrPTg7ZWxzZSBmb3IoXz0oZy5sZW5ndGgtQyklMj09MD9DKzE6QztfPGcubGVuZ3RoO18rPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndvcmRzW0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0aGlzLndvcmRzW0srPTFdfD1wPj4+MjYpOncrPTg7dGhpcy5zdHJpcCgp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGcsQyxrKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgXz0wLHA9MTtwPD02NzEwODg2MztwKj1DKV8rKztfLS0scD1wL0N8MDtmb3IodmFyIHc9Zy5sZW5ndGgtayxLPXclXyx0ZT1NYXRoLm1pbih3LHctSykr''@;'; put 'put ''ayxjZT0wLGhlPWs7aGU8dGU7aGUrPV8pY2U9WihnLGhlLGhlK18sQyksdGhpcy5pbXVsbihwKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNlKTtpZigwIT09Syl7dmFyIFNlPTE7Zm9yKGNlPVooZyxoZSxnLmxlbmd0aCxDKSxoZT0w''@;'; put 'put ''O2hlPEs7aGUrKylTZSo9Qzt0aGlzLmltdWxuKFNlKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNlKX10aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZyl7Zy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgp''@;'; put 'put ''O2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGg7QysrKWcud29yZHNbQ109dGhpcy53b3Jkc1tDXTtnLmxlbmd0aD10aGlzLmxlbmd0aCxnLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZy5yZWQ9dGhpcy5yZWR9LEUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7''@;'; put 'put ''cmV0dXJuIHRoaXMuY29weShnKSxnfSxFLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8ZzspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYm''@;'; put 'put ''MD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEUucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0''@;'; put 'put ''aGlzfSxFLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBZPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwi''@;'; put 'put ''MDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwi''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMCJdLFU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0scT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQz''@;'; put 'put ''MDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIw''@;'; put 'put ''NTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBKKGcsQyxrKXtrLm5lZ2F0aXZlPUMubmVnYXRpdmVeZy5uZWdhdGl2ZTt2YXIgXz1nLmxlbmd0aCtDLmxlbmd0aHwwO2subGVuZ3RoPV8sXz1fLTF8MDt2''@;'; put 'put ''YXIgcD0wfGcud29yZHNbMF0sdz0wfEMud29yZHNbMF0sSz1wKncsY2U9Sy82NzEwODg2NHwwO2sud29yZHNbMF09NjcxMDg4NjMmSztmb3IodmFyIGhlPTE7aGU8XztoZSsrKXtmb3IodmFyIFNlPWNlPj4+MjYsTGU9NjcxMDg4NjMmY2UsSGU9TWF0aC5taW4oaGUsQy5sZW5ndGgtMSkseGU9''@;'; put 'put ''TWF0aC5tYXgoMCxoZS1nLmxlbmd0aCsxKTt4ZTw9SGU7eGUrKylTZSs9KEs9KHA9MHxnLndvcmRzW2hlLXhlfDBdKSoodz0wfEMud29yZHNbeGVdKStMZSkvNjcxMDg4NjR8MCxMZT02NzEwODg2MyZLO2sud29yZHNbaGVdPTB8TGUsY2U9MHxTZX1yZXR1cm4gMCE9PWNlP2sud29yZHNbaGVd''@;'; put 'put ''PTB8Y2U6ay5sZW5ndGgtLSxrLnN0cmlwKCl9RS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZyxDKXt2YXIgaztpZihDPTB8Q3x8MSwxNj09PShnPWd8fDEwKXx8ImhleCI9PT1nKXtrPSIiO2Zvcih2YXIgXz0wLHA9MCx3PTA7dzx0aGlzLmxlbmd0aDt3Kyspe3ZhciBLPXRoaXMud29y''@;'; put 'put ''ZHNbd10sdGU9KDE2Nzc3MjE1JihLPDxffHApKS50b1N0cmluZygxNik7az0wIT0ocD1LPj4+MjQtXyYxNjc3NzIxNSl8fHchPT10aGlzLmxlbmd0aC0xP1lbNi10ZS5sZW5ndGhdK3RlK2s6dGUraywoXys9Mik+PTI2JiYoXy09MjYsdy0tKX1mb3IoMCE9PXAmJihrPXAudG9TdHJpbmcoMTYp''@;'; put 'put ''K2spO2subGVuZ3RoJUMhPTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihnPT09KDB8ZykmJmc+PTImJmc8PTM2KXt2YXIgY2U9VVtnXSxoZT1xW2ddO2s9IiI7dmFyIFNlPXRoaXMuY2xvbmUoKTtmb3IoU2UubmVnYXRpdmU9MDshU2UuaXNaZXJv''@;'; put 'put ''KCk7KXt2YXIgTGU9U2UubW9kbihoZSkudG9TdHJpbmcoZyk7az0oU2U9U2UuaWRpdm4oaGUpKS5pc1plcm8oKT9MZStrOllbY2UtTGUubGVuZ3RoXStMZStrfWZvcih0aGlzLmlzWmVybygpJiYoaz0iMCIrayk7ay5sZW5ndGglQyE9MDspaz0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUmJihrPSItIitrKSxrfUQoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sRS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Zys9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhp''@;'; put 'put ''cy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2crPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZEKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tZzpnfSxFLnBy''@;'; put 'put ''b3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LEUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGcsQyl7cmV0dXJuIEQodm9pZCAwIT09eiksdGhpcy50b0FycmF5TGlrZSh6LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oZyxD''@;'; put 'put ''KXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxnLEMpfSxFLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihnLEMsayl7dmFyIF89dGhpcy5ieXRlTGVuZ3RoKCkscD1rfHxNYXRoLm1heCgxLF8pO0QoXzw9cCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0''@;'; put 'put ''aCIpLEQocD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHcsSyx0ZT0ibGUiPT09QyxjZT1uZXcgZyhwKSxoZT10aGlzLmNsb25lKCk7aWYodGUpe2ZvcihLPTA7IWhlLmlzWmVybygpO0srKyl3PWhlLmFuZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNl''@;'; put 'put ''W0tdPXc7Zm9yKDtLPHA7SysrKWNlW0tdPTB9ZWxzZXtmb3IoSz0wO0s8cC1fO0srKyljZVtLXT0wO2ZvcihLPTA7IWhlLmlzWmVybygpO0srKyl3PWhlLmFuZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNlW3AtSy0xXT13fXJldHVybiBjZX0sRS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNs''@;'; put 'put ''ejMyP2Z1bmN0aW9uKGcpe3JldHVybiAzMi1NYXRoLmNsejMyKGcpfTpmdW5jdGlvbihnKXt2YXIgQz1nLGs9MDtyZXR1cm4gQz49NDA5NiYmKGsrPTEzLEM+Pj49MTMpLEM+PTY0JiYoays9NyxDPj4+PTcpLEM+PTgmJihrKz00LEM+Pj49NCksQz49MiYmKGsrPTIsQz4+Pj0yKSxrK0N9LEUu''@;'; put 'put ''cHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihnKXtpZigwPT09ZylyZXR1cm4gMjY7dmFyIEM9ZyxrPTA7cmV0dXJuISg4MTkxJkMpJiYoays9MTMsQz4+Pj0xMyksISgxMjcmQykmJihrKz03LEM+Pj49NyksISgxNSZDKSYmKGsrPTQsQz4+Pj00KSwhKDMmQykmJihrKz0yLEM+Pj49Miks''@;'; put 'put ''ISgxJkMpJiZrKyssa30sRS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrQ30sRS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlz''@;'; put 'put ''LmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZz0wLEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tDXSk7aWYoZys9aywyNiE9PWspYnJlYWt9cmV0dXJuIGd9LEUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0''@;'; put 'put ''aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LEUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihnKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihnKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LEUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGcpe3JldHVy''@;'; put 'put ''biB0aGlzLnRlc3RuKGctMSk/dGhpcy5ub3RuKGcpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LEUucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxFLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlu''@;'; put 'put ''ZWcoKX0sRS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sRS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGcubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7''@;'; put 'put ''Zm9yKHZhciBDPTA7QzxnLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT10aGlzLndvcmRzW0NdfGcud29yZHNbQ107cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGcp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5vcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihnKTpnLmNsb25lKCkuaW9yKHRoaXMpfSxFLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUo''@;'; put 'put ''KS5pdW9yKGcpOmcuY2xvbmUoKS5pdW9yKHRoaXMpfSxFLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihnKXt2YXIgQztDPXRoaXMubGVuZ3RoPmcubGVuZ3RoP2c6dGhpcztmb3IodmFyIGs9MDtrPEMubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPXRoaXMud29yZHNba10mZy53b3Jkc1trXTty''@;'; put 'put ''ZXR1cm4gdGhpcy5sZW5ndGg9Qy5sZW5ndGgsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90''@;'; put 'put ''b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsazt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLGs9Zyk6KEM9ZyxrPXRoaXMpO2Zvcih2YXIgXz0wO188ay5sZW5ndGg7XysrKXRoaXMud29yZHNbX109Qy53b3Jkc1tfXV5rLndvcmRzW19dO2lmKHRoaXMhPT1DKWZvcig7XzxDLmxl''@;'; put 'put ''bmd0aDtfKyspdGhpcy53b3Jkc1tfXT1DLndvcmRzW19dO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1eG9yKGcpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS54b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGcpOmcuY2xvbmUoKS5peG9yKHRoaXMpfSxFLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4''@;'; put 'put ''b3IoZyk6Zy5jbG9uZSgpLml1eG9yKHRoaXMpfSxFLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFyIEM9MHxNYXRoLmNlaWwoZy8yNiksaz1nJTI2O3RoaXMuX2V4cGFuZChDKSxrPjAmJkMtLTtmb3IodmFyIF89MDtfPEM7XysrKXRo''@;'; put 'put ''aXMud29yZHNbX109NjcxMDg4NjMmfnRoaXMud29yZHNbX107cmV0dXJuIGs+MCYmKHRoaXMud29yZHNbX109fnRoaXMud29yZHNbX10mNjcxMDg4NjM+PjI2LWspLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGcp''@;'; put 'put ''fSxFLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGcsQyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBrPWcvMjZ8MCxfPWclMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba109Qz90aGlzLndvcmRzW2tdfDE8PF86dGhpcy53b3Jkc1trXSZ+KDE8PF8pLHRo''@;'; put 'put ''aXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihnKXt2YXIgQyxrLF87aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9''@;'; put 'put ''PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gZy5uZWdhdGl2ZT0wLEM9dGhpcy5pc3ViKGcpLGcubmVnYXRpdmU9MSxDLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmcubGVuZ3RoPyhrPXRoaXMsXz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciBwPTAsdz0wO3c8Xy5sZW5n''@;'; put 'put ''dGg7dysrKXRoaXMud29yZHNbd109NjcxMDg4NjMmKEM9KDB8ay53b3Jkc1t3XSkrKDB8Xy53b3Jkc1t3XSkrcCkscD1DPj4+MjY7Zm9yKDswIT09cCYmdzxrLmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT02NzEwODg2MyYoQz0oMHxrLndvcmRzW3ddKStwKSxwPUM+Pj4yNjtpZih0aGlzLmxl''@;'; put 'put ''bmd0aD1rLmxlbmd0aCwwIT09cCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1wLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihrIT09dGhpcylmb3IoO3c8ay5sZW5ndGg7dysrKXRoaXMud29yZHNbd109ay53b3Jkc1t3XTtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGcpe3Zh''@;'; put 'put ''ciBDO3JldHVybiAwIT09Zy5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGcubmVnYXRpdmU9MCxDPXRoaXMuc3ViKGcpLGcubmVnYXRpdmVePTEsQyk6MD09PWcubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsQz1nLnN1Yih0aGlzKSx0aGlzLm5lZ2F0''@;'; put 'put ''aXZlPTEsQyk6dGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoZyk6Zy5jbG9uZSgpLmlhZGQodGhpcyl9LEUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oZyl7aWYoMCE9PWcubmVnYXRpdmUpe2cubmVnYXRpdmU9MDt2YXIgQz10aGlzLmlhZGQoZyk7cmV0dXJuIGcubmVn''@;'; put 'put ''YXRpdmU9MSxDLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGcpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBrLF8scD10aGlzLmNtcChnKTtpZigwPT09cClyZXR1cm4gdGhpcy5uZWdhdGl2ZT0w''@;'; put 'put ''LHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7cD4wPyhrPXRoaXMsXz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciB3PTAsSz0wO0s8Xy5sZW5ndGg7SysrKXc9KEM9KDB8ay53b3Jkc1tLXSktKDB8Xy53b3Jkc1tLXSkrdyk+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmQztm''@;'; put 'put ''b3IoOzAhPT13JiZLPGsubGVuZ3RoO0srKyl3PShDPSgwfGsud29yZHNbS10pK3cpPj4yNix0aGlzLndvcmRzW0tdPTY3MTA4ODYzJkM7aWYoMD09PXcmJks8ay5sZW5ndGgmJmshPT10aGlzKWZvcig7SzxrLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT1rLndvcmRzW0tdO3JldHVybiB0aGlz''@;'; put 'put ''Lmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxLKSxrIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGcpfTt2YXIgZWU9ZnVuY3Rpb24oZyxDLGspe3ZhciBfLHAsdyxL''@;'; put 'put ''PWcud29yZHMsdGU9Qy53b3JkcyxjZT1rLndvcmRzLGhlPTAsU2U9MHxLWzBdLExlPTgxOTEmU2UsSGU9U2U+Pj4xMyx4ZT0wfEtbMV0sRGU9ODE5MSZ4ZSxCZT14ZT4+PjEzLEdlPTB8S1syXSxVZT04MTkxJkdlLHFlPUdlPj4+MTMsb3Q9MHxLWzNdLEZlPTgxOTEmb3Qsd2U9b3Q+Pj4xMyxF''@;'; put 'put ''ZT0wfEtbNF0sSWU9ODE5MSZFZSxYZT1FZT4+PjEzLHR0PTB8S1s1XSxaZT04MTkxJnR0LGN0PXR0Pj4+MTMsa2U9MHxLWzZdLEFlPTgxOTEma2UsamU9a2U+Pj4xMyxpdD0wfEtbN10sc3Q9ODE5MSZpdCx4dD1pdD4+PjEzLEZ0PTB8S1s4XSxPdD04MTkxJkZ0LEt0PUZ0Pj4+MTMsYm49MHxL''@;'; put 'put ''WzldLEJ0PTgxOTEmYm4seW49Ym4+Pj4xMyxObj0wfHRlWzBdLG5uPTgxOTEmTm4sR249Tm4+Pj4xMyxZbj0wfHRlWzFdLGZ0PTgxOTEmWW4sZG49WW4+Pj4xMyxobj0wfHRlWzJdLHd0PTgxOTEmaG4sanQ9aG4+Pj4xMyxtdD0wfHRlWzNdLEh0PTgxOTEmbXQscG49bXQ+Pj4xMyxudD0wfHRl''@;'; put 'put ''WzRdLEV0PTgxOTEmbnQsZW49bnQ+Pj4xMyxUdD0wfHRlWzVdLHl0PTgxOTEmVHQsJHQ9VHQ+Pj4xMyx4bj0wfHRlWzZdLHp0PTgxOTEmeG4sX249eG4+Pj4xMyxPbj0wfHRlWzddLHJuPTgxOTEmT24sUG49T24+Pj4xMyxDbj0wfHRlWzhdLFh0PTgxOTEmQ24sSm49Q24+Pj4xMyx4aT0wfHRl''@;'; put 'put ''WzldLGFuPTgxOTEmeGksdG49eGk+Pj4xMztrLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD0xOTt2YXIgdWk9KGhlKyhfPU1hdGguaW11bChMZSxubikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoTGUsR24pKStNYXRoLmltdWwoSGUsbm4pfDApKTw8MTMpfDA7''@;'; put 'put ''aGU9KCh3PU1hdGguaW11bChIZSxHbikpKyhwPj4+MTMpfDApKyh1aT4+PjI2KXwwLHVpJj02NzEwODg2MyxfPU1hdGguaW11bChEZSxubikscD0ocD1NYXRoLmltdWwoRGUsR24pKStNYXRoLmltdWwoQmUsbm4pfDAsdz1NYXRoLmltdWwoQmUsR24pO3ZhciBBcj0oaGUrKF89XytNYXRoLmlt''@;'; put 'put ''dWwoTGUsZnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxkbil8MCkrTWF0aC5pbXVsKEhlLGZ0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxkbil8MCkrKHA+Pj4xMyl8MCkrKEFyPj4+MjYpfDAsQXImPTY3MTA4ODYzLF89TWF0aC5pbXVsKFVlLG5uKSxw''@;'; put 'put ''PShwPU1hdGguaW11bChVZSxHbikpK01hdGguaW11bChxZSxubil8MCx3PU1hdGguaW11bChxZSxHbiksXz1fK01hdGguaW11bChEZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGRuKXwwKStNYXRoLmltdWwoQmUsZnQpfDAsdz13K01hdGguaW11bChCZSxkbil8MDt2YXIgaHI9KGhlKyhf''@;'; put 'put ''PV8rTWF0aC5pbXVsKExlLHd0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsanQpfDApK01hdGguaW11bChIZSx3dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsanQpfDApKyhwPj4+MTMpfDApKyhocj4+PjI2KXwwLGhyJj02NzEwODg2MyxfPU1hdGguaW11''@;'; put 'put ''bChGZSxubikscD0ocD1NYXRoLmltdWwoRmUsR24pKStNYXRoLmltdWwod2Usbm4pfDAsdz1NYXRoLmltdWwod2UsR24pLF89XytNYXRoLmltdWwoVWUsZnQpfDAscD0ocD1wK01hdGguaW11bChVZSxkbil8MCkrTWF0aC5pbXVsKHFlLGZ0KXwwLHc9dytNYXRoLmltdWwocWUsZG4pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChEZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGp0KXwwKStNYXRoLmltdWwoQmUsd3QpfDAsdz13K01hdGguaW11bChCZSxqdCl8MDt2YXIgZGk9KGhlKyhfPV8rTWF0aC5pbXVsKExlLEh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUscG4pfDApK01h''@;'; put 'put ''dGguaW11bChIZSxIdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUscG4pfDApKyhwPj4+MTMpfDApKyhkaT4+PjI2KXwwLGRpJj02NzEwODg2MyxfPU1hdGguaW11bChJZSxubikscD0ocD1NYXRoLmltdWwoSWUsR24pKStNYXRoLmltdWwoWGUsbm4pfDAsdz1NYXRoLmltdWwo''@;'; put 'put ''WGUsR24pLF89XytNYXRoLmltdWwoRmUsZnQpfDAscD0ocD1wK01hdGguaW11bChGZSxkbil8MCkrTWF0aC5pbXVsKHdlLGZ0KXwwLHc9dytNYXRoLmltdWwod2UsZG4pfDAsXz1fK01hdGguaW11bChVZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGp0KXwwKStNYXRoLmltdWwocWUsd3Qp''@;'; put 'put ''fDAsdz13K01hdGguaW11bChxZSxqdCl8MCxfPV8rTWF0aC5pbXVsKERlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUscG4pfDApK01hdGguaW11bChCZSxIdCl8MCx3PXcrTWF0aC5pbXVsKEJlLHBuKXwwO3ZhciBmaT0oaGUrKF89XytNYXRoLmltdWwoTGUsRXQpfDApfDApKygoODE5MSYo''@;'; put 'put ''cD0ocD1wK01hdGguaW11bChMZSxlbil8MCkrTWF0aC5pbXVsKEhlLEV0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxlbil8MCkrKHA+Pj4xMyl8MCkrKGZpPj4+MjYpfDAsZmkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKFplLG5uKSxwPShwPU1hdGguaW11bChaZSxHbikpK01h''@;'; put 'put ''dGguaW11bChjdCxubil8MCx3PU1hdGguaW11bChjdCxHbiksXz1fK01hdGguaW11bChJZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGRuKXwwKStNYXRoLmltdWwoWGUsZnQpfDAsdz13K01hdGguaW11bChYZSxkbil8MCxfPV8rTWF0aC5pbXVsKEZlLHd0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRmUsanQpfDApK01hdGguaW11bCh3ZSx3dCl8MCx3PXcrTWF0aC5pbXVsKHdlLGp0KXwwLF89XytNYXRoLmltdWwoVWUsSHQpfDAscD0ocD1wK01hdGguaW11bChVZSxwbil8MCkrTWF0aC5pbXVsKHFlLEh0KXwwLHc9dytNYXRoLmltdWwocWUscG4pfDAsXz1fK01hdGguaW11bChEZSxF''@;'; put 'put ''dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGVuKXwwKStNYXRoLmltdWwoQmUsRXQpfDAsdz13K01hdGguaW11bChCZSxlbil8MDt2YXIgaG89KGhlKyhfPV8rTWF0aC5pbXVsKExlLHl0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsJHQpfDApK01hdGguaW11bChIZSx5dCl8''@;'; put 'put ''MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsJHQpfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxfPU1hdGguaW11bChBZSxubikscD0ocD1NYXRoLmltdWwoQWUsR24pKStNYXRoLmltdWwoamUsbm4pfDAsdz1NYXRoLmltdWwoamUsR24pLF89XytNYXRo''@;'; put 'put ''LmltdWwoWmUsZnQpfDAscD0ocD1wK01hdGguaW11bChaZSxkbil8MCkrTWF0aC5pbXVsKGN0LGZ0KXwwLHc9dytNYXRoLmltdWwoY3QsZG4pfDAsXz1fK01hdGguaW11bChJZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGp0KXwwKStNYXRoLmltdWwoWGUsd3QpfDAsdz13K01hdGguaW11''@;'; put 'put ''bChYZSxqdCl8MCxfPV8rTWF0aC5pbXVsKEZlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUscG4pfDApK01hdGguaW11bCh3ZSxIdCl8MCx3PXcrTWF0aC5pbXVsKHdlLHBuKXwwLF89XytNYXRoLmltdWwoVWUsRXQpfDAscD0ocD1wK01hdGguaW11bChVZSxlbil8MCkrTWF0aC5pbXVsKHFl''@;'; put 'put ''LEV0KXwwLHc9dytNYXRoLmltdWwocWUsZW4pfDAsXz1fK01hdGguaW11bChEZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLCR0KXwwKStNYXRoLmltdWwoQmUseXQpfDAsdz13K01hdGguaW11bChCZSwkdCl8MDt2YXIgYnI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHp0KXwwKXwwKSsoKDgx''@;'; put 'put ''OTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsX24pfDApK01hdGguaW11bChIZSx6dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsX24pfDApKyhwPj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2MyxfPU1hdGguaW11bChzdCxubikscD0ocD1NYXRoLmltdWwoc3QsR24p''@;'; put 'put ''KStNYXRoLmltdWwoeHQsbm4pfDAsdz1NYXRoLmltdWwoeHQsR24pLF89XytNYXRoLmltdWwoQWUsZnQpfDAscD0ocD1wK01hdGguaW11bChBZSxkbil8MCkrTWF0aC5pbXVsKGplLGZ0KXwwLHc9dytNYXRoLmltdWwoamUsZG4pfDAsXz1fK01hdGguaW11bChaZSx3dCl8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKFplLGp0KXwwKStNYXRoLmltdWwoY3Qsd3QpfDAsdz13K01hdGguaW11bChjdCxqdCl8MCxfPV8rTWF0aC5pbXVsKEllLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoSWUscG4pfDApK01hdGguaW11bChYZSxIdCl8MCx3PXcrTWF0aC5pbXVsKFhlLHBuKXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''RmUsRXQpfDAscD0ocD1wK01hdGguaW11bChGZSxlbil8MCkrTWF0aC5pbXVsKHdlLEV0KXwwLHc9dytNYXRoLmltdWwod2UsZW4pfDAsXz1fK01hdGguaW11bChVZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLCR0KXwwKStNYXRoLmltdWwocWUseXQpfDAsdz13K01hdGguaW11bChxZSwk''@;'; put 'put ''dCl8MCxfPV8rTWF0aC5pbXVsKERlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsX24pfDApK01hdGguaW11bChCZSx6dCl8MCx3PXcrTWF0aC5pbXVsKEJlLF9uKXwwO3ZhciBMaT0oaGUrKF89XytNYXRoLmltdWwoTGUscm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxQ''@;'; put 'put ''bil8MCkrTWF0aC5pbXVsKEhlLHJuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxQbil8MCkrKHA+Pj4xMyl8MCkrKExpPj4+MjYpfDAsTGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKE90LG5uKSxwPShwPU1hdGguaW11bChPdCxHbikpK01hdGguaW11bChLdCxubil8MCx3PU1h''@;'; put 'put ''dGguaW11bChLdCxHbiksXz1fK01hdGguaW11bChzdCxmdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGRuKXwwKStNYXRoLmltdWwoeHQsZnQpfDAsdz13K01hdGguaW11bCh4dCxkbil8MCxfPV8rTWF0aC5pbXVsKEFlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsanQpfDApK01hdGguaW11''@;'; put 'put ''bChqZSx3dCl8MCx3PXcrTWF0aC5pbXVsKGplLGp0KXwwLF89XytNYXRoLmltdWwoWmUsSHQpfDAscD0ocD1wK01hdGguaW11bChaZSxwbil8MCkrTWF0aC5pbXVsKGN0LEh0KXwwLHc9dytNYXRoLmltdWwoY3QscG4pfDAsXz1fK01hdGguaW11bChJZSxFdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KEllLGVuKXwwKStNYXRoLmltdWwoWGUsRXQpfDAsdz13K01hdGguaW11bChYZSxlbil8MCxfPV8rTWF0aC5pbXVsKEZlLHl0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsJHQpfDApK01hdGguaW11bCh3ZSx5dCl8MCx3PXcrTWF0aC5pbXVsKHdlLCR0KXwwLF89XytNYXRoLmltdWwoVWUsenQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChVZSxfbil8MCkrTWF0aC5pbXVsKHFlLHp0KXwwLHc9dytNYXRoLmltdWwocWUsX24pfDAsXz1fK01hdGguaW11bChEZSxybil8MCxwPShwPXArTWF0aC5pbXVsKERlLFBuKXwwKStNYXRoLmltdWwoQmUscm4pfDAsdz13K01hdGguaW11bChCZSxQbil8MDt2''@;'; put 'put ''YXIgbG89KGhlKyhfPV8rTWF0aC5pbXVsKExlLFh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsSm4pfDApK01hdGguaW11bChIZSxYdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsSm4pfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2''@;'; put 'put ''MyxfPU1hdGguaW11bChCdCxubikscD0ocD1NYXRoLmltdWwoQnQsR24pKStNYXRoLmltdWwoeW4sbm4pfDAsdz1NYXRoLmltdWwoeW4sR24pLF89XytNYXRoLmltdWwoT3QsZnQpfDAscD0ocD1wK01hdGguaW11bChPdCxkbil8MCkrTWF0aC5pbXVsKEt0LGZ0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''S3QsZG4pfDAsXz1fK01hdGguaW11bChzdCx3dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGp0KXwwKStNYXRoLmltdWwoeHQsd3QpfDAsdz13K01hdGguaW11bCh4dCxqdCl8MCxfPV8rTWF0aC5pbXVsKEFlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUscG4pfDApK01hdGguaW11bChqZSxI''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKGplLHBuKXwwLF89XytNYXRoLmltdWwoWmUsRXQpfDAscD0ocD1wK01hdGguaW11bChaZSxlbil8MCkrTWF0aC5pbXVsKGN0LEV0KXwwLHc9dytNYXRoLmltdWwoY3QsZW4pfDAsXz1fK01hdGguaW11bChJZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLCR0''@;'; put 'put ''KXwwKStNYXRoLmltdWwoWGUseXQpfDAsdz13K01hdGguaW11bChYZSwkdCl8MCxfPV8rTWF0aC5pbXVsKEZlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsX24pfDApK01hdGguaW11bCh3ZSx6dCl8MCx3PXcrTWF0aC5pbXVsKHdlLF9uKXwwLF89XytNYXRoLmltdWwoVWUscm4pfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChVZSxQbil8MCkrTWF0aC5pbXVsKHFlLHJuKXwwLHc9dytNYXRoLmltdWwocWUsUG4pfDAsXz1fK01hdGguaW11bChEZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLEpuKXwwKStNYXRoLmltdWwoQmUsWHQpfDAsdz13K01hdGguaW11bChCZSxKbil8MDt2YXIgVW49''@;'; put 'put ''KGhlKyhfPV8rTWF0aC5pbXVsKExlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsdG4pfDApK01hdGguaW11bChIZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsdG4pfDApKyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1h''@;'; put 'put ''dGguaW11bChCdCxmdCkscD0ocD1NYXRoLmltdWwoQnQsZG4pKStNYXRoLmltdWwoeW4sZnQpfDAsdz1NYXRoLmltdWwoeW4sZG4pLF89XytNYXRoLmltdWwoT3Qsd3QpfDAscD0ocD1wK01hdGguaW11bChPdCxqdCl8MCkrTWF0aC5pbXVsKEt0LHd0KXwwLHc9dytNYXRoLmltdWwoS3QsanQp''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChzdCxIdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LHBuKXwwKStNYXRoLmltdWwoeHQsSHQpfDAsdz13K01hdGguaW11bCh4dCxwbil8MCxfPV8rTWF0aC5pbXVsKEFlLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsZW4pfDApK01hdGguaW11bChqZSxFdCl8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKGplLGVuKXwwLF89XytNYXRoLmltdWwoWmUseXQpfDAscD0ocD1wK01hdGguaW11bChaZSwkdCl8MCkrTWF0aC5pbXVsKGN0LHl0KXwwLHc9dytNYXRoLmltdWwoY3QsJHQpfDAsXz1fK01hdGguaW11bChJZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLF9uKXwwKStN''@;'; put 'put ''YXRoLmltdWwoWGUsenQpfDAsdz13K01hdGguaW11bChYZSxfbil8MCxfPV8rTWF0aC5pbXVsKEZlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsUG4pfDApK01hdGguaW11bCh3ZSxybil8MCx3PXcrTWF0aC5pbXVsKHdlLFBuKXwwLF89XytNYXRoLmltdWwoVWUsWHQpfDAscD0ocD1wK01h''@;'; put 'put ''dGguaW11bChVZSxKbil8MCkrTWF0aC5pbXVsKHFlLFh0KXwwLHc9dytNYXRoLmltdWwocWUsSm4pfDA7dmFyIFhpPShoZSsoXz1fK01hdGguaW11bChEZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKERlLHRuKXwwKStNYXRoLmltdWwoQmUsYW4pfDApKTw8MTMpfDA7aGU9''@;'; put 'put ''KCh3PXcrTWF0aC5pbXVsKEJlLHRuKXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsd3QpLHA9KHA9TWF0aC5pbXVsKEJ0LGp0KSkrTWF0aC5pbXVsKHluLHd0KXwwLHc9TWF0aC5pbXVsKHluLGp0KSxfPV8rTWF0aC5pbXVsKE90LEh0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoT3QscG4pfDApK01hdGguaW11bChLdCxIdCl8MCx3PXcrTWF0aC5pbXVsKEt0LHBuKXwwLF89XytNYXRoLmltdWwoc3QsRXQpfDAscD0ocD1wK01hdGguaW11bChzdCxlbil8MCkrTWF0aC5pbXVsKHh0LEV0KXwwLHc9dytNYXRoLmltdWwoeHQsZW4pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChBZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLCR0KXwwKStNYXRoLmltdWwoamUseXQpfDAsdz13K01hdGguaW11bChqZSwkdCl8MCxfPV8rTWF0aC5pbXVsKFplLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsX24pfDApK01hdGguaW11bChjdCx6dCl8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKGN0LF9uKXwwLF89XytNYXRoLmltdWwoSWUscm4pfDAscD0ocD1wK01hdGguaW11bChJZSxQbil8MCkrTWF0aC5pbXVsKFhlLHJuKXwwLHc9dytNYXRoLmltdWwoWGUsUG4pfDAsXz1fK01hdGguaW11bChGZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEpuKXwwKStNYXRoLmlt''@;'; put 'put ''dWwod2UsWHQpfDAsdz13K01hdGguaW11bCh3ZSxKbil8MDt2YXIgUWk9KGhlKyhfPV8rTWF0aC5pbXVsKFVlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoVWUsdG4pfDApK01hdGguaW11bChxZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwocWUsdG4pfDAp''@;'; put 'put ''KyhwPj4+MTMpfDApKyhRaT4+PjI2KXwwLFFpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxIdCkscD0ocD1NYXRoLmltdWwoQnQscG4pKStNYXRoLmltdWwoeW4sSHQpfDAsdz1NYXRoLmltdWwoeW4scG4pLF89XytNYXRoLmltdWwoT3QsRXQpfDAscD0ocD1wK01hdGguaW11bChPdCxlbil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEt0LEV0KXwwLHc9dytNYXRoLmltdWwoS3QsZW4pfDAsXz1fK01hdGguaW11bChzdCx5dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LCR0KXwwKStNYXRoLmltdWwoeHQseXQpfDAsdz13K01hdGguaW11bCh4dCwkdCl8MCxfPV8rTWF0aC5pbXVsKEFlLHp0KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoQWUsX24pfDApK01hdGguaW11bChqZSx6dCl8MCx3PXcrTWF0aC5pbXVsKGplLF9uKXwwLF89XytNYXRoLmltdWwoWmUscm4pfDAscD0ocD1wK01hdGguaW11bChaZSxQbil8MCkrTWF0aC5pbXVsKGN0LHJuKXwwLHc9dytNYXRoLmltdWwoY3QsUG4pfDAsXz1fK01hdGgu''@;'; put 'put ''aW11bChJZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLEpuKXwwKStNYXRoLmltdWwoWGUsWHQpfDAsdz13K01hdGguaW11bChYZSxKbil8MDt2YXIgZm89KGhlKyhfPV8rTWF0aC5pbXVsKEZlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUsdG4pfDApK01hdGguaW11''@;'; put 'put ''bCh3ZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwod2UsdG4pfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxFdCkscD0ocD1NYXRoLmltdWwoQnQsZW4pKStNYXRoLmltdWwoeW4sRXQpfDAsdz1NYXRoLmltdWwoeW4sZW4p''@;'; put 'put ''LF89XytNYXRoLmltdWwoT3QseXQpfDAscD0ocD1wK01hdGguaW11bChPdCwkdCl8MCkrTWF0aC5pbXVsKEt0LHl0KXwwLHc9dytNYXRoLmltdWwoS3QsJHQpfDAsXz1fK01hdGguaW11bChzdCx6dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LF9uKXwwKStNYXRoLmltdWwoeHQsenQpfDAsdz13''@;'; put 'put ''K01hdGguaW11bCh4dCxfbil8MCxfPV8rTWF0aC5pbXVsKEFlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsUG4pfDApK01hdGguaW11bChqZSxybil8MCx3PXcrTWF0aC5pbXVsKGplLFBuKXwwLF89XytNYXRoLmltdWwoWmUsWHQpfDAscD0ocD1wK01hdGguaW11bChaZSxKbil8MCkrTWF0''@;'; put 'put ''aC5pbXVsKGN0LFh0KXwwLHc9dytNYXRoLmltdWwoY3QsSm4pfDA7dmFyIHZvPShoZSsoXz1fK01hdGguaW11bChJZSxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEllLHRuKXwwKStNYXRoLmltdWwoWGUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKFhlLHRu''@;'; put 'put ''KXwwKSsocD4+PjEzKXwwKSsodm8+Pj4yNil8MCx2byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQseXQpLHA9KHA9TWF0aC5pbXVsKEJ0LCR0KSkrTWF0aC5pbXVsKHluLHl0KXwwLHc9TWF0aC5pbXVsKHluLCR0KSxfPV8rTWF0aC5pbXVsKE90LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3Qs''@;'; put 'put ''X24pfDApK01hdGguaW11bChLdCx6dCl8MCx3PXcrTWF0aC5pbXVsKEt0LF9uKXwwLF89XytNYXRoLmltdWwoc3Qscm4pfDAscD0ocD1wK01hdGguaW11bChzdCxQbil8MCkrTWF0aC5pbXVsKHh0LHJuKXwwLHc9dytNYXRoLmltdWwoeHQsUG4pfDAsXz1fK01hdGguaW11bChBZSxYdCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKEFlLEpuKXwwKStNYXRoLmltdWwoamUsWHQpfDAsdz13K01hdGguaW11bChqZSxKbil8MDt2YXIgUnI9KGhlKyhfPV8rTWF0aC5pbXVsKFplLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoWmUsdG4pfDApK01hdGguaW11bChjdCxhbil8MCkpPDwx''@;'; put 'put ''Myl8MDtoZT0oKHc9dytNYXRoLmltdWwoY3QsdG4pfDApKyhwPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx6dCkscD0ocD1NYXRoLmltdWwoQnQsX24pKStNYXRoLmltdWwoeW4senQpfDAsdz1NYXRoLmltdWwoeW4sX24pLF89XytNYXRoLmltdWwo''@;'; put 'put ''T3Qscm4pfDAscD0ocD1wK01hdGguaW11bChPdCxQbil8MCkrTWF0aC5pbXVsKEt0LHJuKXwwLHc9dytNYXRoLmltdWwoS3QsUG4pfDAsXz1fK01hdGguaW11bChzdCxYdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LEpuKXwwKStNYXRoLmltdWwoeHQsWHQpfDAsdz13K01hdGguaW11bCh4dCxK''@;'; put 'put ''bil8MDt2YXIgWWk9KGhlKyhfPV8rTWF0aC5pbXVsKEFlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoQWUsdG4pfDApK01hdGguaW11bChqZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoamUsdG4pfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02''@;'; put 'put ''NzEwODg2MyxfPU1hdGguaW11bChCdCxybikscD0ocD1NYXRoLmltdWwoQnQsUG4pKStNYXRoLmltdWwoeW4scm4pfDAsdz1NYXRoLmltdWwoeW4sUG4pLF89XytNYXRoLmltdWwoT3QsWHQpfDAscD0ocD1wK01hdGguaW11bChPdCxKbil8MCkrTWF0aC5pbXVsKEt0LFh0KXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoS3QsSm4pfDA7dmFyIHpvPShoZSsoXz1fK01hdGguaW11bChzdCxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHN0LHRuKXwwKStNYXRoLmltdWwoeHQsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKHh0LHRuKXwwKSsocD4+PjEzKXwwKSsoem8+Pj4y''@;'; put 'put ''Nil8MCx6byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsWHQpLHA9KHA9TWF0aC5pbXVsKEJ0LEpuKSkrTWF0aC5pbXVsKHluLFh0KXwwLHc9TWF0aC5pbXVsKHluLEpuKTt2YXIgaXM9KGhlKyhfPV8rTWF0aC5pbXVsKE90LGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT3Qs''@;'; put 'put ''dG4pfDApK01hdGguaW11bChLdCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoS3QsdG4pfDApKyhwPj4+MTMpfDApKyhpcz4+PjI2KXwwLGlzJj02NzEwODg2Mzt2YXIgdXM9KGhlKyhfPU1hdGguaW11bChCdCxhbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoQnQsdG4p''@;'; put 'put ''KStNYXRoLmltdWwoeW4sYW4pfDApKTw8MTMpfDA7cmV0dXJuIGhlPSgodz1NYXRoLmltdWwoeW4sdG4pKSsocD4+PjEzKXwwKSsodXM+Pj4yNil8MCx1cyY9NjcxMDg4NjMsY2VbMF09dWksY2VbMV09QXIsY2VbMl09aHIsY2VbM109ZGksY2VbNF09ZmksY2VbNV09aG8sY2VbNl09YnIsY2Vb''@;'; put 'put ''N109TGksY2VbOF09bG8sY2VbOV09VW4sY2VbMTBdPVhpLGNlWzExXT1RaSxjZVsxMl09Zm8sY2VbMTNdPXZvLGNlWzE0XT1ScixjZVsxNV09WWksY2VbMTZdPXpvLGNlWzE3XT1pcyxjZVsxOF09dXMsMCE9PWhlJiYoY2VbMTldPWhlLGsubGVuZ3RoKyspLGt9O2Z1bmN0aW9uIHJlKGcsQyxr''@;'; put 'put ''KXtyZXR1cm4obmV3IGllKS5tdWxwKGcsQyxrKX1mdW5jdGlvbiBpZShnLEMpe3RoaXMueD1nLHRoaXMueT1DfU1hdGguaW11bHx8KGVlPUopLEUucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIF89dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgm''@;'; put 'put ''JjEwPT09Zy5sZW5ndGg/ZWUodGhpcyxnLEMpOl88NjM/Sih0aGlzLGcsQyk6XzwxMDI0P2Z1bmN0aW9uKHAsdyxLKXtLLm5lZ2F0aXZlPXcubmVnYXRpdmVecC5uZWdhdGl2ZSxLLmxlbmd0aD1wLmxlbmd0aCt3Lmxlbmd0aDtmb3IodmFyIHRlPTAsY2U9MCxoZT0wO2hlPEsubGVuZ3RoLTE7''@;'; put 'put ''aGUrKyl7dmFyIFNlPWNlO2NlPTA7Zm9yKHZhciBMZT02NzEwODg2MyZ0ZSxIZT1NYXRoLm1pbihoZSx3Lmxlbmd0aC0xKSx4ZT1NYXRoLm1heCgwLGhlLXAubGVuZ3RoKzEpO3hlPD1IZTt4ZSsrKXt2YXIgQmU9KDB8cC53b3Jkc1toZS14ZV0pKigwfHcud29yZHNbeGVdKSxHZT02NzEwODg2''@;'; put 'put ''MyZCZTtMZT02NzEwODg2MyYoR2U9R2UrTGV8MCksY2UrPShTZT0oU2U9U2UrKEJlLzY3MTA4ODY0fDApfDApKyhHZT4+PjI2KXwwKT4+PjI2LFNlJj02NzEwODg2M31LLndvcmRzW2hlXT1MZSx0ZT1TZSxTZT1jZX1yZXR1cm4gMCE9PXRlP0sud29yZHNbaGVdPXRlOksubGVuZ3RoLS0sSy5z''@;'; put 'put ''dHJpcCgpfSh0aGlzLGcsQyk6cmUodGhpcyxnLEMpfSxpZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLGs9RS5wcm90b3R5cGUuX2NvdW50Qml0cyhnKS0xLF89MDtfPGc7XysrKUNbX109dGhpcy5yZXZCaW4oXyxrLGcpO3JldHVybiBDfSxp''@;'; put 'put ''ZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGcsQyxrKXtpZigwPT09Z3x8Zz09PWstMSlyZXR1cm4gZztmb3IodmFyIF89MCxwPTA7cDxDO3ArKylffD0oMSZnKTw8Qy1wLTEsZz4+PTE7cmV0dXJuIF99LGllLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGcsQyxrLF8scCx3KXtmb3Io''@;'; put 'put ''dmFyIEs9MDtLPHc7SysrKV9bS109Q1tnW0tdXSxwW0tdPWtbZ1tLXV19LGllLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZyxDLGssXyxwLHcpe3RoaXMucGVybXV0ZSh3LGcsQyxrLF8scCk7Zm9yKHZhciBLPTE7SzxwO0s8PD0xKWZvcih2YXIgdGU9Szw8MSxjZT1NYXRoLmNvcygy''@;'; put 'put ''Kk1hdGguUEkvdGUpLGhlPU1hdGguc2luKDIqTWF0aC5QSS90ZSksU2U9MDtTZTxwO1NlKz10ZSlmb3IodmFyIExlPWNlLEhlPWhlLHhlPTA7eGU8Szt4ZSsrKXt2YXIgRGU9a1tTZSt4ZV0sQmU9X1tTZSt4ZV0sR2U9a1tTZSt4ZStLXSxVZT1fW1NlK3hlK0tdLHFlPUxlKkdlLUhlKlVlO1Vl''@;'; put 'put ''PUxlKlVlK0hlKkdlLGtbU2UreGVdPURlKyhHZT1xZSksX1tTZSt4ZV09QmUrVWUsa1tTZSt4ZStLXT1EZS1HZSxfW1NlK3hlK0tdPUJlLVVlLHhlIT09dGUmJihxZT1jZSpMZS1oZSpIZSxIZT1jZSpIZStoZSpMZSxMZT1xZSl9fSxpZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24o''@;'; put 'put ''ZyxDKXt2YXIgaz0xfE1hdGgubWF4KEMsZyksXz0xJmsscD0wO2ZvcihrPWsvMnwwO2s7az4+Pj0xKXArKztyZXR1cm4gMTw8cCsxK199LGllLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oZyxDLGspe2lmKCEoazw9MSkpZm9yKHZhciBfPTA7XzxrLzI7XysrKXt2YXIgcD1nW19dO2db''@;'; put 'put ''X109Z1trLV8tMV0sZ1trLV8tMV09cCxwPUNbX10sQ1tfXT0tQ1trLV8tMV0sQ1trLV8tMV09LXB9fSxpZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGcsQyl7Zm9yKHZhciBrPTAsXz0wO188Qy8yO18rKyl7dmFyIHA9ODE5MipNYXRoLnJvdW5kKGdbMipfKzFdL0MpK01hdGgu''@;'; put 'put ''cm91bmQoZ1syKl9dL0MpK2s7Z1tfXT02NzEwODg2MyZwLGs9cDw2NzEwODg2ND8wOnAvNjcxMDg4NjR8MH1yZXR1cm4gZ30saWUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oZyxDLGssXyl7Zm9yKHZhciBwPTAsdz0wO3c8Qzt3Kyspa1syKnddPTgxOTEmKHArPTB8Z1t3XSksa1sy''@;'; put 'put ''KncrMV09ODE5MSYocD4+Pj0xMykscD4+Pj0xMztmb3Iodz0yKkM7dzxfOysrdylrW3ddPTA7RCgwPT09cCksRCghKC04MTkyJnApKX0saWUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxrPTA7azxnO2srKylDW2tdPTA7cmV0dXJuIEN9LGllLnBy''@;'; put 'put ''b3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXz0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKF8pLHc9dGhpcy5zdHViKF8pLEs9bmV3IEFycmF5KF8pLHRlPW5ldyBBcnJheShfKSxjZT1uZXcgQXJyYXkoXyksaGU9bmV3IEFycmF5''@;'; put 'put ''KF8pLFNlPW5ldyBBcnJheShfKSxMZT1uZXcgQXJyYXkoXyksSGU9ay53b3JkcztIZS5sZW5ndGg9Xyx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxLLF8pLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLGhlLF8pLHRoaXMudHJhbnNmb3JtKEssdyx0ZSxjZSxfLHAp''@;'; put 'put ''LHRoaXMudHJhbnNmb3JtKGhlLHcsU2UsTGUsXyxwKTtmb3IodmFyIHhlPTA7eGU8Xzt4ZSsrKXt2YXIgRGU9dGVbeGVdKlNlW3hlXS1jZVt4ZV0qTGVbeGVdO2NlW3hlXT10ZVt4ZV0qTGVbeGVdK2NlW3hlXSpTZVt4ZV0sdGVbeGVdPURlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh0ZSxjZSxf''@;'; put 'put ''KSx0aGlzLnRyYW5zZm9ybSh0ZSxjZSxIZSx3LF8scCksdGhpcy5jb25qdWdhdGUoSGUsdyxfKSx0aGlzLm5vcm1hbGl6ZTEzYihIZSxfKSxrLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxrLnN0cmlwKCl9LEUucHJvdG90eXBlLm11''@;'; put 'put ''bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8oZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJy''@;'; put 'put ''YXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHJlKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKSxEKGc8NjcxMDg4''@;'; put 'put ''NjQpO2Zvcih2YXIgQz0wLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkqZyxwPSg2NzEwODg2MyZfKSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPV8vNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYm''@;'; put 'put ''KHRoaXMud29yZHNba109Qyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKHcpe2Zvcih2YXIgSz1uZXcgQXJyYXkody5iaXRMZW5ndGgoKSksdGU9MDt0ZTxLLmxlbmd0aDt0ZSsrKXt2YXIgaGU9dGUlMjY7S1t0ZV09''@;'; put 'put ''KHcud29yZHNbdGUvMjZ8MF0mMTw8aGUpPj4+aGV9cmV0dXJuIEt9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBrPXRoaXMsXz0wO188Qy5sZW5ndGgmJjA9PT1DW19dO18rKyxrPWsuc3FyKCkpO2lmKCsrXzxDLmxlbmd0aClmb3IodmFyIHA9ay5zcXIoKTtf''@;'; put 'put ''PEMubGVuZ3RoO18rKyxwPXAuc3FyKCkpMCE9PUNbX10mJihrPWsubXVsKHApKTtyZXR1cm4ga30sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxrPWclMjYsXz0oZy1rKS8yNixwPTY3MTA4ODYzPj4+MjYtazw8MjYtaztp''@;'; put 'put ''ZigwIT09ayl7dmFyIHc9MDtmb3IoQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgSz10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndvcmRzW0NdKS1LPDxrfHcsdz1LPj4+MjYta313JiYodGhpcy53b3Jkc1tDXT13LHRoaXMubGVuZ3RoKyspfWlmKDAhPT1fKXtmb3Io''@;'; put 'put ''Qz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNbQytfXT10aGlzLndvcmRzW0NdO2ZvcihDPTA7QzxfO0MrKyl0aGlzLndvcmRzW0NdPTA7dGhpcy5sZW5ndGgrPV99cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEQoMD09''@;'; put 'put ''PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLGspe3ZhciBfO0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKSxfPUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LHc9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLEs9''@;'; put 'put ''NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHRlPWs7aWYoXy09dyxfPU1hdGgubWF4KDAsXyksdGUpe2Zvcih2YXIgY2U9MDtjZTx3O2NlKyspdGUud29yZHNbY2VdPXRoaXMud29yZHNbY2VdO3RlLmxlbmd0aD13fWlmKDAhPT13KWlmKHRoaXMubGVuZ3RoPncpZm9yKHRoaXMubGVuZ3RoLT13''@;'; put 'put ''LGNlPTA7Y2U8dGhpcy5sZW5ndGg7Y2UrKyl0aGlzLndvcmRzW2NlXT10aGlzLndvcmRzW2NlK3ddO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIGhlPTA7Zm9yKGNlPXRoaXMubGVuZ3RoLTE7Y2U+PTAmJigwIT09aGV8fGNlPj1fKTtjZS0tKXt2YXIgU2U9MHx0aGlz''@;'; put 'put ''LndvcmRzW2NlXTt0aGlzLndvcmRzW2NlXT1oZTw8MjYtcHxTZT4+PnAsaGU9U2UmS31yZXR1cm4gdGUmJjAhPT1oZSYmKHRlLndvcmRzW3RlLmxlbmd0aCsrXT1oZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90''@;'; put 'put ''b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLGspe3JldHVybiBEKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsayl9LEUucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0sRS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRl''@;'; put 'put ''c3RuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8ISh0aGlzLndvcmRzW2tdJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBn''@;'; put 'put ''JiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1DJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0''@;'; put 'put ''aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndv''@;'; put 'put ''cmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jkc1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1''@;'; put 'put ''Ym49ZnVuY3Rpb24oZyl7aWYoRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhp''@;'; put 'put ''cy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4''@;'; put 'put ''NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXyxwO3RoaXMuX2V4''@;'; put 'put ''cGFuZChnLmxlbmd0aCtrKTt2YXIgSz0wO2ZvcihfPTA7XzxnLmxlbmd0aDtfKyspe3A9KDB8dGhpcy53b3Jkc1tfK2tdKStLO3ZhciB0ZT0oMHxnLndvcmRzW19dKSpDO0s9KChwLT02NzEwODg2MyZ0ZSk+PjI2KS0odGUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnB9''@;'; put 'put ''Zm9yKDtfPHRoaXMubGVuZ3RoLWs7XysrKUs9KHA9KDB8dGhpcy53b3Jkc1tfK2tdKStLKT4+MjYsdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnA7aWYoMD09PUspcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRCgtMT09PUspLEs9MCxfPTA7Xzx0aGlzLmxlbmd0aDtfKyspSz0ocD0tKDB8dGhp''@;'; put 'put ''cy53b3Jkc1tfXSkrSyk+PjI2LHRoaXMud29yZHNbX109NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgayxfPXRoaXMuY2xvbmUoKSxwPWcsdz0wfHAud29yZHNbcC5sZW5ndGgtMV07''@;'; put 'put ''MCE9KGs9MjYtdGhpcy5fY291bnRCaXRzKHcpKSYmKHA9cC51c2hsbihrKSxfLml1c2hsbihrKSx3PTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIEssdGU9Xy5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoSz1uZXcgRShudWxsKSkubGVuZ3RoPXRlKzEsSy53b3Jkcz1uZXcgQXJy''@;'; put 'put ''YXkoSy5sZW5ndGgpO2Zvcih2YXIgY2U9MDtjZTxLLmxlbmd0aDtjZSsrKUsud29yZHNbY2VdPTB9dmFyIGhlPV8uY2xvbmUoKS5faXNobG5zdWJtdWwocCwxLHRlKTswPT09aGUubmVnYXRpdmUmJihfPWhlLEsmJihLLndvcmRzW3RlXT0xKSk7Zm9yKHZhciBTZT10ZS0xO1NlPj0wO1NlLS0p''@;'; put 'put ''e3ZhciBMZT02NzEwODg2NCooMHxfLndvcmRzW3AubGVuZ3RoK1NlXSkrKDB8Xy53b3Jkc1twLmxlbmd0aCtTZS0xXSk7Zm9yKExlPU1hdGgubWluKExlL3d8MCw2NzEwODg2MyksXy5faXNobG5zdWJtdWwocCxMZSxTZSk7MCE9PV8ubmVnYXRpdmU7KUxlLS0sXy5uZWdhdGl2ZT0wLF8uX2lz''@;'; put 'put ''aGxuc3VibXVsKHAsMSxTZSksXy5pc1plcm8oKXx8KF8ubmVnYXRpdmVePTEpO0smJihLLndvcmRzW1NlXT1MZSl9cmV0dXJuIEsmJksuc3RyaXAoKSxfLnN0cmlwKCksImRpdiIhPT1DJiYwIT09ayYmXy5pdXNocm4oaykse2RpdjpLfHxudWxsLG1vZDpffX0sRS5wcm90b3R5cGUuZGl2bW9k''@;'; put 'put ''PWZ1bmN0aW9uKGcsQyxrKXtyZXR1cm4gRCghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyh3PXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoXz13LmRpdi5uZWco''@;'; put 'put ''KSksImRpdiIhPT1DJiYocD13Lm1vZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2Ol8sbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmU/KHc9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJihfPXcuZGl2Lm5lZygpKSx7ZGl2''@;'; put 'put ''Ol8sbW9kOncubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0aXZlPyh3PXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD13Lm1vZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OncuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5n''@;'; put 'put ''dGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlz''@;'; put 'put ''LmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgXyxwLHd9LEUucHJvdG90eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtp''@;'; put 'put ''ZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIGs9MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QsXz1nLnVzaHJuKDEpLHA9Zy5hbmRsbigxKSx3PWsuY21wKF8pO3JldHVybiB3PDB8fDE9PT1wJiYwPT09dz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5k''@;'; put 'put ''aXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7RChnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0JWcsaz0wLF89dGhpcy5sZW5ndGgtMTtfPj0wO18tLSlrPShDKmsrKDB8dGhpcy53b3Jkc1tfXSkpJWc7cmV0dXJuIGt9LEUucHJv''@;'; put 'put ''dG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0QoZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLGs9dGhpcy5sZW5ndGgtMTtrPj0wO2stLSl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW2tdPV8vZ3wwLEM9XyVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJv''@;'; put 'put ''dG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlKSxEKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcp''@;'; put 'put ''OkMuY2xvbmUoKTtmb3IodmFyIF89bmV3IEUoMSkscD1uZXcgRSgwKSx3PW5ldyBFKDApLEs9bmV3IEUoMSksdGU9MDtDLmlzRXZlbigpJiZrLmlzRXZlbigpOylDLml1c2hybigxKSxrLml1c2hybigxKSwrK3RlO2Zvcih2YXIgY2U9ay5jbG9uZSgpLGhlPUMuY2xvbmUoKTshQy5pc1plcm8o''@;'; put 'put ''KTspe2Zvcih2YXIgU2U9MCxMZT0xOyEoQy53b3Jkc1swXSZMZSkmJlNlPDI2OysrU2UsTGU8PD0xKTtpZihTZT4wKWZvcihDLml1c2hybihTZSk7U2UtLSA+MDspKF8uaXNPZGQoKXx8cC5pc09kZCgpKSYmKF8uaWFkZChjZSkscC5pc3ViKGhlKSksXy5pdXNocm4oMSkscC5pdXNocm4oMSk7''@;'; put 'put ''Zm9yKHZhciBIZT0wLHhlPTE7IShrLndvcmRzWzBdJnhlKSYmSGU8MjY7KytIZSx4ZTw8PTEpO2lmKEhlPjApZm9yKGsuaXVzaHJuKEhlKTtIZS0tID4wOykody5pc09kZCgpfHxLLmlzT2RkKCkpJiYody5pYWRkKGNlKSxLLmlzdWIoaGUpKSx3Lml1c2hybigxKSxLLml1c2hybigxKTtDLmNt''@;'; put 'put ''cChrKT49MD8oQy5pc3ViKGspLF8uaXN1Yih3KSxwLmlzdWIoSykpOihrLmlzdWIoQyksdy5pc3ViKF8pLEsuaXN1YihwKSl9cmV0dXJue2E6dyxiOkssZ2NkOmsuaXVzaGxuKHRlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlKSxEKCFnLmlzWmVy''@;'; put 'put ''bygpKTt2YXIgQz10aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIF8scD1uZXcgRSgxKSx3PW5ldyBFKDApLEs9ay5jbG9uZSgpO0MuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgdGU9MCxjZT0xOyEoQy53b3Jkc1sw''@;'; put 'put ''XSZjZSkmJnRlPDI2OysrdGUsY2U8PD0xKTtpZih0ZT4wKWZvcihDLml1c2hybih0ZSk7dGUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoSykscC5pdXNocm4oMSk7Zm9yKHZhciBoZT0wLFNlPTE7IShrLndvcmRzWzBdJlNlKSYmaGU8MjY7KytoZSxTZTw8PTEpO2lmKGhlPjApZm9yKGsuaXVz''@;'; put 'put ''aHJuKGhlKTtoZS0tID4wOyl3LmlzT2RkKCkmJncuaWFkZChLKSx3Lml1c2hybigxKTtDLmNtcChrKT49MD8oQy5pc3ViKGspLHAuaXN1Yih3KSk6KGsuaXN1YihDKSx3LmlzdWIocCkpfXJldHVybihfPTA9PT1DLmNtcG4oMSk/cDp3KS5jbXBuKDApPDAmJl8uaWFkZChnKSxffSxFLnByb3Rv''@;'; put 'put ''dHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBDPXRoaXMuY2xvbmUoKSxrPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgXz0wO0MuaXNFdmVuKCkm''@;'; put 'put ''JmsuaXNFdmVuKCk7XysrKUMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO2suaXNFdmVuKCk7KWsuaXVzaHJuKDEpO3ZhciBwPUMuY21wKGspO2lmKHA8MCl7dmFyIHc9QztDPWssaz13fWVsc2UgaWYoMD09PXB8fDA9PT1r''@;'; put 'put ''LmNtcG4oMSkpYnJlYWs7Qy5pc3ViKGspfXJldHVybiBrLml1c2hsbihfKX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2NkKGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSxFLnBy''@;'; put 'put ''b3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLndvcmRzWzBdJmd9LEUucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKTt2YXIgQz1n''@;'; put 'put ''JTI2LGs9KGctQykvMjYsXz0xPDxDO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1fLHRoaXM7Zm9yKHZhciBwPV8sdz1rOzAhPT1wJiZ3PHRoaXMubGVuZ3RoO3crKyl7dmFyIEs9MHx0aGlzLndvcmRzW3ddO3A9KEsrPXApPj4+MjYs''@;'; put 'put ''dGhpcy53b3Jkc1t3XT1LJj02NzEwODg2M31yZXR1cm4gMCE9PXAmJih0aGlzLndvcmRzW3ddPXAsdGhpcy5sZW5ndGgrKyksdGhpc30sRS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LEUucHJvdG90eXBlLmNt''@;'; put 'put ''cG49ZnVuY3Rpb24oZyl7dmFyIEMsaz1nPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFrKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZrKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKUM9MTtlbHNle2smJihnPS1nKSxEKGc8PTY3MTA4ODYzLCJOdW1iZXIg''@;'; put 'put ''aXMgdG9vIGJpZyIpO3ZhciBfPTB8dGhpcy53b3Jkc1swXTtDPV89PT1nPzA6XzxnPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGcpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZSlyZXR1cm4tMTtpZigw''@;'; put 'put ''PT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmUpcmV0dXJuIDE7dmFyIEM9dGhpcy51Y21wKGcpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1DOkN9LEUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZyl7aWYodGhpcy5sZW5ndGg+Zy5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5s''@;'; put 'put ''ZW5ndGg8Zy5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0wfHRoaXMud29yZHNba10scD0wfGcud29yZHNba107aWYoXyE9PXApe188cD9DPS0xOl8+cCYmKEM9MSk7YnJlYWt9fXJldHVybiBDfSxFLnByb3RvdHlwZS5ndG49ZnVu''@;'; put 'put ''Y3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGcpe3JldHVybiAxPT09dGhpcy5jbXAoZyl9LEUucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKT49MH0sRS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGcp''@;'; put 'put ''e3JldHVybiB0aGlzLmNtcChnKT49MH0sRS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5sdD1mdW5jdGlvbihnKXtyZXR1cm4tMT09PXRoaXMuY21wKGcpfSxFLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLmNtcG4oZyk8PTB9LEUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXAoZyk8PTB9LEUucHJvdG90eXBlLmVxbj1mdW5jdGlvbihnKXtyZXR1cm4gMD09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZyl7cmV0dXJuIDA9PT10aGlzLmNt''@;'; put 'put ''cChnKX0sRS5yZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBGKGcpfSxFLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxEKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHBvc2l0aXZlcyIpLGcuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQu''@;'; put 'put ''Y29udmVydEZyb20odGhpcyl9LEUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5yZWQ9Zyx0aGlzfSxFLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRl''@;'; put 'put ''eHQiKSx0aGlzLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oZyl7''@;'; put 'put ''cmV0dXJuIEQodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLnJlZC5zdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLm11bCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxnKSx0''@;'; put 'put ''aGlzLnJlZC5pbXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sRS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMu''@;'; put 'put ''cmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEUucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxFLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMp''@;'; put 'put ''LHRoaXMucmVkLm5lZyh0aGlzKX0sRS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkJiYhZy5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsZyl9O3ZhciB1ZT17azI1NjpudWxsLHAy''@;'; put 'put ''MjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIGxlKGcsQyl7dGhpcy5uYW1lPWcsdGhpcy5wPW5ldyBFKEMsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBFKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90''@;'; put 'put ''bXAoKX1mdW5jdGlvbiBhZSgpe2xlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gVygpe2xlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gYigpe2xlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gQSgpe2xlLmNhbGwodGhpcywi''@;'; put 'put ''MjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gRihnKXtpZigic3RyaW5nIj09dHlwZW9mIGcpe3ZhciBDPUUuX3ByaW1lKGcpO3RoaXMubT1DLnAsdGhpcy5wcmltZT1DfWVsc2UgRChn''@;'; put 'put ''Lmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWcsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIEgoZyl7Ri5jYWxsKHRoaXMsZyksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMu''@;'; put 'put ''c2hpZnQlMjYpLHRoaXMucj1uZXcgRSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhp''@;'; put 'put ''cy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1sZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZ30sbGUucHJv''@;'; put 'put ''dG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZyl7dmFyIEMsaz1nO2Rve3RoaXMuc3BsaXQoayx0aGlzLnRtcCksQz0oaz0oaz10aGlzLmltdWxLKGspKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoQz50aGlzLm4pO3ZhciBfPUM8dGhpcy5uPy0xOmsudWNtcCh0aGlzLnApO3Jl''@;'; put 'put ''dHVybiAwPT09Xz8oay53b3Jkc1swXT0wLGsubGVuZ3RoPTEpOl8+MD9rLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1rLnN0cmlwP2suc3RyaXAoKTprLl9zdHJpcCgpLGt9LGxlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2cuaXVzaHJuKHRoaXMubiwwLEMpfSxsZS5wcm90b3R5cGUu''@;'; put 'put ''aW11bEs9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaW11bCh0aGlzLmspfSxUKGFlLGxlKSxhZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZyxDKXtmb3IodmFyIGs9NDE5NDMwMyxfPU1hdGgubWluKGcubGVuZ3RoLDkpLHA9MDtwPF87cCsrKUMud29yZHNbcF09Zy53b3Jkc1twXTtpZihDLmxl''@;'; put 'put ''bmd0aD1fLGcubGVuZ3RoPD05KXJldHVybiBnLndvcmRzWzBdPTAsdm9pZChnLmxlbmd0aD0xKTt2YXIgdz1nLndvcmRzWzldO2ZvcihDLndvcmRzW0MubGVuZ3RoKytdPXcmayxwPTEwO3A8Zy5sZW5ndGg7cCsrKXt2YXIgSz0wfGcud29yZHNbcF07Zy53b3Jkc1twLTEwXT0oSyZrKTw8NHx3''@;'; put 'put ''Pj4+MjIsdz1LfWcud29yZHNbcC0xMF09dz4+Pj0yMixnLmxlbmd0aC09MD09PXcmJmcubGVuZ3RoPjEwPzEwOjl9LGFlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihnKXtnLndvcmRzW2cubGVuZ3RoXT0wLGcud29yZHNbZy5sZW5ndGgrMV09MCxnLmxlbmd0aCs9Mjtmb3IodmFyIEM9MCxr''@;'; put 'put ''PTA7azxnLmxlbmd0aDtrKyspe3ZhciBfPTB8Zy53b3Jkc1trXTtnLndvcmRzW2tdPTY3MTA4ODYzJihDKz05NzcqXyksQz02NCpfKyhDLzY3MTA4ODY0fDApfXJldHVybiAwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmKGcubGVuZ3RoLS0sMD09PWcud29yZHNbZy5sZW5ndGgtMV0mJmcubGVu''@;'; put 'put ''Z3RoLS0pLGd9LFQoVyxsZSksVChiLGxlKSxUKEEsbGUpLEEucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3RoO2srKyl7dmFyIF89MTkqKDB8Zy53b3Jkc1trXSkrQyxwPTY3MTA4ODYzJl87Xz4+Pj0yNixnLndvcmRzW2tdPXAsQz1ffXJldHVy''@;'; put 'put ''biAwIT09QyYmKGcud29yZHNbZy5sZW5ndGgrK109QyksZ30sRS5fcHJpbWU9ZnVuY3Rpb24oZyl7aWYodWVbZ10pcmV0dXJuIHVlW2ddO3ZhciBDO2lmKCJrMjU2Ij09PWcpQz1uZXcgYWU7ZWxzZSBpZigicDIyNCI9PT1nKUM9bmV3IFc7ZWxzZSBpZigicDE5MiI9PT1nKUM9bmV3IGI7ZWxz''@;'; put 'put ''ZXtpZigicDI1NTE5IiE9PWcpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZyk7Qz1uZXcgQX1yZXR1cm4gdWVbZ109QyxDfSxGLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQo''@;'; put 'put ''Zy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRi5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZyxDKXtEKCEoZy5uZWdhdGl2ZXxDLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxEKGcucmVkJiZnLnJlZD09PUMucmVkLCJyZWQg''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEYucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGcpLl9mb3JjZVJlZCh0aGlzKTpnLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLm5lZz1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gZy5pc1plcm8oKT9nLmNsb25lKCk6dGhpcy5tLnN1YihnKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmFkZChDKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5pc3Vi''@;'; put 'put ''KHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5pYWRkKEMpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyxD''@;'; put 'put ''KXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5zdWIoQyk7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0sRi5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmlzdWIoQyk7cmV0dXJuIGsu''@;'; put 'put ''Y21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShnKSx0aGlzLmltb2QoZy51c2hsbihDKSl9LEYucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRo''@;'; put 'put ''aXMuaW1vZChnLmltdWwoQykpfSxGLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLm11bChDKSl9LEYucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW11bChnLGcuY2xvbmUoKSl9LEYucHJvdG90''@;'; put 'put ''eXBlLnNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5tdWwoZyxnKX0sRi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihnKXtpZihnLmlzWmVybygpKXJldHVybiBnLmNsb25lKCk7dmFyIEM9dGhpcy5tLmFuZGxuKDMpO2lmKEQoQyUyPT0xKSwzPT09Qyl7dmFyIGs9dGhpcy5tLmFkZChuZXcg''@;'; put 'put ''RSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhnLGspfWZvcih2YXIgXz10aGlzLm0uc3VibigxKSxwPTA7IV8uaXNaZXJvKCkmJjA9PT1fLmFuZGxuKDEpOylwKyssXy5pdXNocm4oMSk7RCghXy5pc1plcm8oKSk7dmFyIHc9bmV3IEUoMSkudG9SZWQodGhpcyksSz13LnJlZE5lZygp''@;'; put 'put ''LHRlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxjZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGNlPW5ldyBFKDIqY2UqY2UpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhjZSx0ZSkuY21wKEspOyljZS5yZWRJQWRkKEspO2Zvcih2YXIgaGU9dGhpcy5wb3coY2UsXyksU2U9dGhpcy5wb3co''@;'; put 'put ''ZyxfLmFkZG4oMSkuaXVzaHJuKDEpKSxMZT10aGlzLnBvdyhnLF8pLEhlPXA7MCE9PUxlLmNtcCh3KTspe2Zvcih2YXIgeGU9TGUsRGU9MDswIT09eGUuY21wKHcpO0RlKyspeGU9eGUucmVkU3FyKCk7RChEZTxIZSk7dmFyIEJlPXRoaXMucG93KGhlLG5ldyBFKDEpLml1c2hsbihIZS1EZS0x''@;'; put 'put ''KSk7U2U9U2UucmVkTXVsKEJlKSxoZT1CZS5yZWRTcXIoKSxMZT1MZS5yZWRNdWwoaGUpLEhlPURlfXJldHVybiBTZX0sRi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXt2YXIgQz1nLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09Qy5uZWdhdGl2ZT8oQy5uZWdhdGl2ZT0wLHRoaXMuaW1v''@;'; put 'put ''ZChDKS5yZWROZWcoKSk6dGhpcy5pbW9kKEMpfSxGLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyxDKXtpZihDLmlzWmVybygpKXJldHVybiBuZXcgRSgxKS50b1JlZCh0aGlzKTtpZigwPT09Qy5jbXBuKDEpKXJldHVybiBnLmNsb25lKCk7dmFyIGs9bmV3IEFycmF5KDE2KTtrWzBdPW5ldyBF''@;'; put 'put ''KDEpLnRvUmVkKHRoaXMpLGtbMV09Zztmb3IodmFyIF89MjtfPGsubGVuZ3RoO18rKylrW19dPXRoaXMubXVsKGtbXy0xXSxnKTt2YXIgcD1rWzBdLHc9MCxLPTAsdGU9Qy5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXRlJiYodGU9MjYpLF89Qy5sZW5ndGgtMTtfPj0wO18tLSl7Zm9yKHZhciBj''@;'; put 'put ''ZT1DLndvcmRzW19dLGhlPXRlLTE7aGU+PTA7aGUtLSl7dmFyIFNlPWNlPj5oZSYxO3AhPT1rWzBdJiYocD10aGlzLnNxcihwKSksMCE9PVNlfHwwIT09dz8odzw8PTEsd3w9U2UsKDQ9PSsrS3x8MD09PV8mJjA9PT1oZSkmJihwPXRoaXMubXVsKHAsa1t3XSksSz0wLHc9MCkpOks9MH10ZT0y''@;'; put 'put ''Nn1yZXR1cm4gcH0sRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3ZhciBDPWcudW1vZCh0aGlzLm0pO3JldHVybiBDPT09Zz9DLmNsb25lKCk6Q30sRi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9Zy5jbG9uZSgpO3JldHVybiBDLnJlZD1udWxsLEN9''@;'; put 'put ''LEUubW9udD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IEgoZyl9LFQoSCxGKSxILnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW1vZChnLnVzaGxuKHRoaXMuc2hpZnQpKX0sSC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9dGhpcy5p''@;'; put 'put ''bW9kKGcubXVsKHRoaXMucmludikpO3JldHVybiBDLnJlZD1udWxsLEN9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBnLndvcmRzWzBdPTAsZy5sZW5ndGg9MSxnO3ZhciBrPWcuaW11bChDKSxfPWsubWFza24odGhpcy5z''@;'; put 'put ''aGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHA9ay5pc3ViKF8pLml1c2hybih0aGlzLnNoaWZ0KSx3PXA7cmV0dXJuIHAuY21wKHRoaXMubSk+PTA/dz1wLmlzdWIodGhpcy5tKTpwLmNtcG4oMCk8MCYmKHc9cC5pYWRkKHRoaXMubSkpLHcuX2Zv''@;'; put 'put ''cmNlUmVkKHRoaXMpfSxILnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIGs9Zy5tdWwoQyksXz1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlz''@;'; put 'put ''LnNoaWZ0KS5tdWwodGhpcy5tKSxwPWsuaXN1YihfKS5pdXNocm4odGhpcy5zaGlmdCksdz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP3c9cC5pc3ViKHRoaXMubSk6cC5jbXBuKDApPDAmJih3PXAuaWFkZCh0aGlzLm0pKSx3Ll9mb3JjZVJlZCh0aGlzKX0sSC5wcm90b3R5cGUuaW52bT1m''@;'; put 'put ''dW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShNPUkubm1kKE0pLHRoaXMpfSw5NzQ2Ok09PntmdW5jdGlvbiBPKEksail7aWYoIUkpdGhyb3cgbmV3IEVycm9yKGp8fCJBc3NlcnRpb24gZmFpbGVkIil9''@;'; put 'put ''TS5leHBvcnRzPU8sTy5lcXVhbD1mdW5jdGlvbihJLGosRyl7aWYoSSE9ail0aHJvdyBuZXcgRXJyb3IoR3x8IkFzc2VydGlvbiBmYWlsZWQ6ICIrSSsiICE9ICIrail9fSw0NTA0OihNLE8pPT57InVzZSBzdHJpY3QiO3ZhciBJPU87ZnVuY3Rpb24gaihEKXtyZXR1cm4gMT09PUQubGVuZ3Ro''@;'; put 'put ''PyIwIitEOkR9ZnVuY3Rpb24gRyhEKXtmb3IodmFyIFQ9IiIsRT0wO0U8RC5sZW5ndGg7RSsrKVQrPWooRFtFXS50b1N0cmluZygxNikpO3JldHVybiBUfUkudG9BcnJheT1mdW5jdGlvbihELFQpe2lmKEFycmF5LmlzQXJyYXkoRCkpcmV0dXJuIEQuc2xpY2UoKTtpZighRClyZXR1cm5bXTt2''@;'; put 'put ''YXIgRT1bXTtpZigic3RyaW5nIiE9dHlwZW9mIEQpe2Zvcih2YXIgej0wO3o8RC5sZW5ndGg7eisrKUVbel09MHxEW3pdO3JldHVybiBFfWlmKCJoZXgiPT09VClmb3IoKEQ9RC5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLCIiKSkubGVuZ3RoJTIhPTAmJihEPSIwIitEKSx6PTA7ejxELmxlbmd0''@;'; put 'put ''aDt6Kz0yKUUucHVzaChwYXJzZUludChEW3pdK0RbeisxXSwxNikpO2Vsc2UgZm9yKHo9MDt6PEQubGVuZ3RoO3orKyl7dmFyIE49RC5jaGFyQ29kZUF0KHopLEI9Tj4+OCxaPTI1NSZOO0I/RS5wdXNoKEIsWik6RS5wdXNoKFopfXJldHVybiBFfSxJLnplcm8yPWosSS50b0hleD1HLEkuZW5j''@;'; put 'put ''b2RlPWZ1bmN0aW9uKEQsVCl7cmV0dXJuImhleCI9PT1UP0coRCk6RH19LDExNzE6KE0sTyxJKT0+e3ZhciBqPUkoNTEwOCk7TS5leHBvcnRzPUosSi5NaW5pbWF0Y2g9ZWU7dmFyIEc9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEkoMjUyMCl9Y2F0Y2h7fX0oKXx8e3NlcDoiLyJ9O0ouc2VwPUcu''@;'; put 'put ''c2VwO3ZhciBEPUouR0xPQlNUQVI9ZWUuR0xPQlNUQVI9e30sVD1JKDM2NDQpLEU9eyIhIjp7b3BlbjoiKD86KD8hKD86IixjbG9zZToiKSlbXi9dKj8pIn0sIj8iOntvcGVuOiIoPzoiLGNsb3NlOiIpPyJ9LCIrIjp7b3BlbjoiKD86IixjbG9zZToiKSsifSwiKiI6e29wZW46Iig/OiIsY2xv''@;'; put 'put ''c2U6IikqIn0sIkAiOntvcGVuOiIoPzoiLGNsb3NlOiIpIn19LHo9IlteL10iLE49eisiKj8iLFk9IigpLip7fSs/W11eJFxcISIuc3BsaXQoIiIpLnJlZHVjZShmdW5jdGlvbihsZSxhZSl7cmV0dXJuIGxlW2FlXT0hMCxsZX0se30pLFU9L1wvKy87ZnVuY3Rpb24gcShsZSxhZSl7YWU9YWV8''@;'; put 'put ''fHt9O3ZhciBXPXt9O3JldHVybiBPYmplY3Qua2V5cyhsZSkuZm9yRWFjaChmdW5jdGlvbihiKXtXW2JdPWxlW2JdfSksT2JqZWN0LmtleXMoYWUpLmZvckVhY2goZnVuY3Rpb24oYil7V1tiXT1hZVtiXX0pLFd9ZnVuY3Rpb24gSihsZSxhZSxXKXtyZXR1cm4gaWUoYWUpLFd8fChXPXt9KSwh''@;'; put 'put ''KCFXLm5vY29tbWVudCYmIiMiPT09YWUuY2hhckF0KDApKSYmbmV3IGVlKGFlLFcpLm1hdGNoKGxlKX1mdW5jdGlvbiBlZShsZSxhZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgZWUpKXJldHVybiBuZXcgZWUobGUsYWUpO2llKGxlKSxhZXx8KGFlPXt9KSxsZT1sZS50cmltKCksYWUuYWxsb3dX''@;'; put 'put ''aW5kb3dzRXNjYXBlfHwiLyI9PT1HLnNlcHx8KGxlPWxlLnNwbGl0KEcuc2VwKS5qb2luKCIvIikpLHRoaXMub3B0aW9ucz1hZSx0aGlzLnNldD1bXSx0aGlzLnBhdHRlcm49bGUsdGhpcy5yZWdleHA9bnVsbCx0aGlzLm5lZ2F0ZT0hMSx0aGlzLmNvbW1lbnQ9ITEsdGhpcy5lbXB0eT0hMSx0''@;'; put 'put ''aGlzLnBhcnRpYWw9ISFhZS5wYXJ0aWFsLHRoaXMubWFrZSgpfWZ1bmN0aW9uIHJlKGxlLGFlKXtyZXR1cm4gYWV8fChhZT10aGlzIGluc3RhbmNlb2YgZWU/dGhpcy5vcHRpb25zOnt9KSxpZShsZT12b2lkIDA9PT1sZT90aGlzLnBhdHRlcm46bGUpLGFlLm5vYnJhY2V8fCEvXHsoPzooPyFc''@;'; put 'put ''eykuKSpcfS8udGVzdChsZSk/W2xlXTpUKGxlKX1KLmZpbHRlcj1mdW5jdGlvbihsZSxhZSl7cmV0dXJuIGFlPWFlfHx7fSxmdW5jdGlvbihXLGIsQSl7cmV0dXJuIEooVyxsZSxhZSl9fSxKLmRlZmF1bHRzPWZ1bmN0aW9uKGxlKXtpZighbGV8fCJvYmplY3QiIT10eXBlb2YgbGV8fCFPYmpl''@;'; put 'put ''Y3Qua2V5cyhsZSkubGVuZ3RoKXJldHVybiBKO3ZhciBhZT1KLFc9ZnVuY3Rpb24oYixBLEYpe3JldHVybiBhZShiLEEscShsZSxGKSl9O3JldHVybihXLk1pbmltYXRjaD1mdW5jdGlvbihiLEEpe3JldHVybiBuZXcgYWUuTWluaW1hdGNoKGIscShsZSxBKSl9KS5kZWZhdWx0cz1mdW5jdGlv''@;'; put 'put ''bihiKXtyZXR1cm4gYWUuZGVmYXVsdHMocShsZSxiKSkuTWluaW1hdGNofSxXLmZpbHRlcj1mdW5jdGlvbihiLEEpe3JldHVybiBhZS5maWx0ZXIoYixxKGxlLEEpKX0sVy5kZWZhdWx0cz1mdW5jdGlvbihiKXtyZXR1cm4gYWUuZGVmYXVsdHMocShsZSxiKSl9LFcubWFrZVJlPWZ1bmN0aW9u''@;'; put 'put ''KGIsQSl7cmV0dXJuIGFlLm1ha2VSZShiLHEobGUsQSkpfSxXLmJyYWNlRXhwYW5kPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIGFlLmJyYWNlRXhwYW5kKGIscShsZSxBKSl9LFcubWF0Y2g9ZnVuY3Rpb24oYixBLEYpe3JldHVybiBhZS5tYXRjaChiLEEscShsZSxGKSl9LFd9LGVlLmRlZmF1bHRz''@;'; put 'put ''PWZ1bmN0aW9uKGxlKXtyZXR1cm4gSi5kZWZhdWx0cyhsZSkuTWluaW1hdGNofSxlZS5wcm90b3R5cGUuZGVidWc9ZnVuY3Rpb24oKXt9LGVlLnByb3RvdHlwZS5tYWtlPWZ1bmN0aW9uKCl7dmFyIGxlPXRoaXMucGF0dGVybixhZT10aGlzLm9wdGlvbnM7aWYoYWUubm9jb21tZW50fHwiIyIh''@;'; put 'put ''PT1sZS5jaGFyQXQoMCkpaWYobGUpe3RoaXMucGFyc2VOZWdhdGUoKTt2YXIgVz10aGlzLmdsb2JTZXQ9dGhpcy5icmFjZUV4cGFuZCgpO2FlLmRlYnVnJiYodGhpcy5kZWJ1Zz1mdW5jdGlvbigpe2ouZXJyb3IuYXBwbHkoaixhcmd1bWVudHMpfSksdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4s''@;'; put 'put ''VyksVz10aGlzLmdsb2JQYXJ0cz1XLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5zcGxpdChVKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFcpLFc9Vy5tYXAoZnVuY3Rpb24oYixBLEYpe3JldHVybiBiLm1hcCh0aGlzLnBhcnNlLHRoaXMpfSx0aGlzKSx0aGlzLmRlYnVnKHRoaXMucGF0''@;'; put 'put ''dGVybixXKSxXPVcuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybi0xPT09Yi5pbmRleE9mKCExKX0pLHRoaXMuZGVidWcodGhpcy5wYXR0ZXJuLFcpLHRoaXMuc2V0PVd9ZWxzZSB0aGlzLmVtcHR5PSEwO2Vsc2UgdGhpcy5jb21tZW50PSEwfSxlZS5wcm90b3R5cGUucGFyc2VOZWdhdGU9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgbGU9dGhpcy5wYXR0ZXJuLGFlPSExLGI9MDtpZighdGhpcy5vcHRpb25zLm5vbmVnYXRlKXtmb3IodmFyIEE9MCxGPWxlLmxlbmd0aDtBPEYmJiIhIj09PWxlLmNoYXJBdChBKTtBKyspYWU9IWFlLGIrKztiJiYodGhpcy5wYXR0ZXJuPWxlLnN1YnN0cihiKSksdGhpcy5u''@;'; put 'put ''ZWdhdGU9YWV9fSxKLmJyYWNlRXhwYW5kPWZ1bmN0aW9uKGxlLGFlKXtyZXR1cm4gcmUobGUsYWUpfSxlZS5wcm90b3R5cGUuYnJhY2VFeHBhbmQ9cmU7dmFyIGllPWZ1bmN0aW9uKGxlKXtpZigic3RyaW5nIiE9dHlwZW9mIGxlKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgcGF0dGVy''@;'; put 'put ''biIpO2lmKGxlLmxlbmd0aD42NTUzNil0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXR0ZXJuIGlzIHRvbyBsb25nIil9O2VlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihsZSxhZSl7aWUobGUpO3ZhciBXPXRoaXMub3B0aW9ucztpZigiKioiPT09bGUpe2lmKCFXLm5vZ2xvYnN0YXIpcmV0dXJu''@;'; put 'put ''IEQ7bGU9IioifWlmKCIiPT09bGUpcmV0dXJuIiI7dmFyIGIsQT0iIixGPSEhVy5ub2Nhc2UsSD0hMSxnPVtdLEM9W10saz0hMSxfPS0xLHA9LTEsdz0iLiI9PT1sZS5jaGFyQXQoMCk/IiI6Vy5kb3Q/Iig/ISg/Ol58XFwvKVxcLnsxLDJ9KD86JHxcXC8pKSI6Iig/IVxcLikiLEs9dGhpcztm''@;'; put 'put ''dW5jdGlvbiB0ZSgpe2lmKGIpe3N3aXRjaChiKXtjYXNlIioiOkErPU4sRj0hMDticmVhaztjYXNlIj8iOkErPXosRj0hMDticmVhaztkZWZhdWx0OkErPSJcXCIrYn1LLmRlYnVnKCJjbGVhclN0YXRlQ2hhciAlaiAlaiIsYixBKSxiPSExfX1mb3IodmFyIGNlLGhlPTAsU2U9bGUubGVuZ3Ro''@;'; put 'put ''O2hlPFNlJiYoY2U9bGUuY2hhckF0KGhlKSk7aGUrKylpZih0aGlzLmRlYnVnKCIlc1x0JXMgJXMgJWoiLGxlLGhlLEEsY2UpLEgmJllbY2VdKUErPSJcXCIrY2UsSD0hMTtlbHNlIHN3aXRjaChjZSl7Y2FzZSIvIjpyZXR1cm4hMTtjYXNlIlxcIjp0ZSgpLEg9ITA7Y29udGludWU7Y2FzZSI/''@;'; put 'put ''IjpjYXNlIioiOmNhc2UiKyI6Y2FzZSJAIjpjYXNlIiEiOmlmKHRoaXMuZGVidWcoIiVzXHQlcyAlcyAlaiA8LS0gc3RhdGVDaGFyIixsZSxoZSxBLGNlKSxrKXt0aGlzLmRlYnVnKCIgIGluIGNsYXNzIiksIiEiPT09Y2UmJmhlPT09cCsxJiYoY2U9Il4iKSxBKz1jZTtjb250aW51ZX1LLmRl''@;'; put 'put ''YnVnKCJjYWxsIGNsZWFyU3RhdGVDaGFyICVqIixiKSx0ZSgpLGI9Y2UsVy5ub2V4dCYmdGUoKTtjb250aW51ZTtjYXNlIigiOmlmKGspe0ErPSIoIjtjb250aW51ZX1pZighYil7QSs9IlxcKCI7Y29udGludWV9Zy5wdXNoKHt0eXBlOmIsc3RhcnQ6aGUtMSxyZVN0YXJ0OkEubGVuZ3RoLG9w''@;'; put 'put ''ZW46RVtiXS5vcGVuLGNsb3NlOkVbYl0uY2xvc2V9KSx0aGlzLmRlYnVnKCJwbFR5cGUgJWogJWoiLGIsQSs9IiEiPT09Yj8iKD86KD8hKD86IjoiKD86IiksYj0hMTtjb250aW51ZTtjYXNlIikiOmlmKGt8fCFnLmxlbmd0aCl7QSs9IlxcKSI7Y29udGludWV9dGUoKSxGPSEwO3ZhciBMZT1n''@;'; put 'put ''LnBvcCgpO0ErPUxlLmNsb3NlLCIhIj09PUxlLnR5cGUmJkMucHVzaChMZSksTGUucmVFbmQ9QS5sZW5ndGg7Y29udGludWU7Y2FzZSJ8IjppZihrfHwhZy5sZW5ndGh8fEgpe0ErPSJcXHwiLEg9ITE7Y29udGludWV9dGUoKSxBKz0ifCI7Y29udGludWU7Y2FzZSJbIjppZih0ZSgpLGspe0Er''@;'; put 'put ''PSJcXCIrY2U7Y29udGludWV9az0hMCxwPWhlLF89QS5sZW5ndGgsQSs9Y2U7Y29udGludWU7Y2FzZSJdIjppZihoZT09PXArMXx8IWspe0ErPSJcXCIrY2UsSD0hMTtjb250aW51ZX12YXIgSGU9bGUuc3Vic3RyaW5nKHArMSxoZSk7dHJ5e1JlZ0V4cCgiWyIrSGUrIl0iKX1jYXRjaHt2YXIg''@;'; put 'put ''eGU9dGhpcy5wYXJzZShIZSx1ZSk7QT1BLnN1YnN0cigwLF8pKyJcXFsiK3hlWzBdKyJcXF0iLEY9Rnx8eGVbMV0saz0hMTtjb250aW51ZX1GPSEwLGs9ITEsQSs9Y2U7Y29udGludWU7ZGVmYXVsdDp0ZSgpLEg/SD0hMTohWVtjZV18fCJeIj09PWNlJiZrfHwoQSs9IlxcIiksQSs9Y2V9Zm9y''@;'; put 'put ''KGsmJihIZT1sZS5zdWJzdHIocCsxKSx4ZT10aGlzLnBhcnNlKEhlLHVlKSxBPUEuc3Vic3RyKDAsXykrIlxcWyIreGVbMF0sRj1GfHx4ZVsxXSksTGU9Zy5wb3AoKTtMZTtMZT1nLnBvcCgpKXt2YXIgRGU9QS5zbGljZShMZS5yZVN0YXJ0K0xlLm9wZW4ubGVuZ3RoKTt0aGlzLmRlYnVnKCJz''@;'; put 'put ''ZXR0aW5nIHRhaWwiLEEsTGUpLERlPURlLnJlcGxhY2UoLygoPzpcXHsyfSl7MCw2NH0pKFxcPylcfC9nLGZ1bmN0aW9uKGtlLEFlLGplKXtyZXR1cm4gamV8fChqZT0iXFwiKSxBZStBZStqZSsifCJ9KSx0aGlzLmRlYnVnKCJ0YWlsPSVqXG4gICAlcyIsRGUsRGUsTGUsQSk7dmFyIEJlPSIq''@;'; put 'put ''Ij09PUxlLnR5cGU/TjoiPyI9PT1MZS50eXBlP3o6IlxcIitMZS50eXBlO0Y9ITAsQT1BLnNsaWNlKDAsTGUucmVTdGFydCkrQmUrIlxcKCIrRGV9dGUoKSxIJiYoQSs9IlxcXFwiKTt2YXIgR2U9ITE7c3dpdGNoKEEuY2hhckF0KDApKXtjYXNlIlsiOmNhc2UiLiI6Y2FzZSIoIjpHZT0hMH1m''@;'; put 'put ''b3IodmFyIFVlPUMubGVuZ3RoLTE7VWU+LTE7VWUtLSl7dmFyIHFlPUNbVWVdLG90PUEuc2xpY2UoMCxxZS5yZVN0YXJ0KSxGZT1BLnNsaWNlKHFlLnJlU3RhcnQscWUucmVFbmQtOCksd2U9QS5zbGljZShxZS5yZUVuZC04LHFlLnJlRW5kKSxFZT1BLnNsaWNlKHFlLnJlRW5kKTt3ZSs9RWU7''@;'; put 'put ''dmFyIEllPW90LnNwbGl0KCIoIikubGVuZ3RoLTEsWGU9RWU7Zm9yKGhlPTA7aGU8SWU7aGUrKylYZT1YZS5yZXBsYWNlKC9cKVsrKj9dPy8sIiIpO3ZhciB0dD0iIjsiIj09PShFZT1YZSkmJmFlIT09dWUmJih0dD0iJCIpLEE9b3QrRmUrRWUrdHQrd2V9aWYoIiIhPT1BJiZGJiYoQT0iKD89''@;'; put 'put ''LikiK0EpLEdlJiYoQT13K0EpLGFlPT09dWUpcmV0dXJuW0EsRl07aWYoIUYpcmV0dXJuIGxlLnJlcGxhY2UoL1xcKC4pL2csIiQxIik7dmFyIFplPVcubm9jYXNlPyJpIjoiIjt0cnl7dmFyIGN0PW5ldyBSZWdFeHAoIl4iK0ErIiQiLFplKX1jYXRjaHtyZXR1cm4gbmV3IFJlZ0V4cCgiJC4i''@;'; put 'put ''KX1yZXR1cm4gY3QuX2dsb2I9bGUsY3QuX3NyYz1BLGN0fTt2YXIgdWU9e307Si5tYWtlUmU9ZnVuY3Rpb24obGUsYWUpe3JldHVybiBuZXcgZWUobGUsYWV8fHt9KS5tYWtlUmUoKX0sZWUucHJvdG90eXBlLm1ha2VSZT1mdW5jdGlvbigpe2lmKHRoaXMucmVnZXhwfHwhMT09PXRoaXMucmVn''@;'; put 'put ''ZXhwKXJldHVybiB0aGlzLnJlZ2V4cDt2YXIgbGU9dGhpcy5zZXQ7aWYoIWxlLmxlbmd0aClyZXR1cm4gdGhpcy5yZWdleHA9ITEsdGhpcy5yZWdleHA7dmFyIGFlPXRoaXMub3B0aW9ucyxXPWFlLm5vZ2xvYnN0YXI/TjphZS5kb3Q/Iig/Oig/ISg/OlxcL3xeKSg/OlxcLnsxLDJ9KSgkfFxc''@;'; put 'put ''LykpLikqPyI6Iig/Oig/ISg/OlxcL3xeKVxcLikuKSo/IixiPWFlLm5vY2FzZT8iaSI6IiIsQT1sZS5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIEYubWFwKGZ1bmN0aW9uKEgpe3JldHVybiBIPT09RD9XOiJzdHJpbmciPT10eXBlb2YgSD9ILnJlcGxhY2UoL1stW1xde30oKSorPy4sXFxeJHwj''@;'; put 'put ''XHNdL2csIlxcJCYiKTpILl9zcmN9KS5qb2luKCJcXC8iKX0pLmpvaW4oInwiKTtBPSJeKD86IitBKyIpJCIsdGhpcy5uZWdhdGUmJihBPSJeKD8hIitBKyIpLiokIik7dHJ5e3RoaXMucmVnZXhwPW5ldyBSZWdFeHAoQSxiKX1jYXRjaHt0aGlzLnJlZ2V4cD0hMX1yZXR1cm4gdGhpcy5yZWdl''@;'; put 'put ''eHB9LEoubWF0Y2g9ZnVuY3Rpb24obGUsYWUsVyl7dmFyIGI9bmV3IGVlKGFlLFc9V3x8e30pO3JldHVybiBsZT1sZS5maWx0ZXIoZnVuY3Rpb24oQSl7cmV0dXJuIGIubWF0Y2goQSl9KSxiLm9wdGlvbnMubm9udWxsJiYhbGUubGVuZ3RoJiZsZS5wdXNoKGFlKSxsZX0sZWUucHJvdG90eXBl''@;'; put 'put ''Lm1hdGNoPWZ1bmN0aW9uKGxlLGFlKXtpZih2b2lkIDA9PT1hZSYmKGFlPXRoaXMucGFydGlhbCksdGhpcy5kZWJ1ZygibWF0Y2giLGxlLHRoaXMucGF0dGVybiksdGhpcy5jb21tZW50KXJldHVybiExO2lmKHRoaXMuZW1wdHkpcmV0dXJuIiI9PT1sZTtpZigiLyI9PT1sZSYmYWUpcmV0dXJu''@;'; put 'put ''ITA7dmFyIFc9dGhpcy5vcHRpb25zOyIvIiE9PUcuc2VwJiYobGU9bGUuc3BsaXQoRy5zZXApLmpvaW4oIi8iKSksbGU9bGUuc3BsaXQoVSksdGhpcy5kZWJ1Zyh0aGlzLnBhdHRlcm4sInNwbGl0IixsZSk7dmFyIGIsQSxGPXRoaXMuc2V0O2Zvcih0aGlzLmRlYnVnKHRoaXMucGF0dGVybiwi''@;'; put 'put ''c2V0IixGKSxBPWxlLmxlbmd0aC0xO0E+PTAmJiEoYj1sZVtBXSk7QS0tKTtmb3IoQT0wO0E8Ri5sZW5ndGg7QSsrKXt2YXIgSD1GW0FdLGc9bGU7aWYoVy5tYXRjaEJhc2UmJjE9PT1ILmxlbmd0aCYmKGc9W2JdKSx0aGlzLm1hdGNoT25lKGcsSCxhZSkpcmV0dXJuISFXLmZsaXBOZWdhdGV8''@;'; put 'put ''fCF0aGlzLm5lZ2F0ZX1yZXR1cm4hVy5mbGlwTmVnYXRlJiZ0aGlzLm5lZ2F0ZX0sZWUucHJvdG90eXBlLm1hdGNoT25lPWZ1bmN0aW9uKGxlLGFlLFcpe3ZhciBiPXRoaXMub3B0aW9uczt0aGlzLmRlYnVnKCJtYXRjaE9uZSIse3RoaXM6dGhpcyxmaWxlOmxlLHBhdHRlcm46YWV9KSx0aGlz''@;'; put 'put ''LmRlYnVnKCJtYXRjaE9uZSIsbGUubGVuZ3RoLGFlLmxlbmd0aCk7Zm9yKHZhciBBPTAsRj0wLEg9bGUubGVuZ3RoLGc9YWUubGVuZ3RoO0E8SCYmRjxnO0ErKyxGKyspe3RoaXMuZGVidWcoIm1hdGNoT25lIGxvb3AiKTt2YXIgQyxrPWFlW0ZdLF89bGVbQV07aWYodGhpcy5kZWJ1ZyhhZSxr''@;'; put 'put ''LF8pLCExPT09aylyZXR1cm4hMTtpZihrPT09RCl7dGhpcy5kZWJ1ZygiR0xPQlNUQVIiLFthZSxrLF9dKTt2YXIgcD1BLHc9RisxO2lmKHc9PT1nKXtmb3IodGhpcy5kZWJ1ZygiKiogYXQgdGhlIGVuZCIpO0E8SDtBKyspaWYoIi4iPT09bGVbQV18fCIuLiI9PT1sZVtBXXx8IWIuZG90JiYi''@;'; put 'put ''LiI9PT1sZVtBXS5jaGFyQXQoMCkpcmV0dXJuITE7cmV0dXJuITB9Zm9yKDtwPEg7KXt2YXIgSz1sZVtwXTtpZih0aGlzLmRlYnVnKCJcbmdsb2JzdGFyIHdoaWxlIixsZSxwLGFlLHcsSyksdGhpcy5tYXRjaE9uZShsZS5zbGljZShwKSxhZS5zbGljZSh3KSxXKSlyZXR1cm4gdGhpcy5kZWJ1''@;'; put 'put ''ZygiZ2xvYnN0YXIgZm91bmQgbWF0Y2ghIixwLEgsSyksITA7aWYoIi4iPT09S3x8Ii4uIj09PUt8fCFiLmRvdCYmIi4iPT09Sy5jaGFyQXQoMCkpe3RoaXMuZGVidWcoImRvdCBkZXRlY3RlZCEiLGxlLHAsYWUsdyk7YnJlYWt9dGhpcy5kZWJ1ZygiZ2xvYnN0YXIgc3dhbGxvdyBhIHNlZ21l''@;'; put 'put ''bnQsIGFuZCBjb250aW51ZSIpLHArK31yZXR1cm4hKCFXfHwodGhpcy5kZWJ1ZygiXG4+Pj4gbm8gbWF0Y2gsIHBhcnRpYWw/IixsZSxwLGFlLHcpLHAhPT1IKSl9aWYoInN0cmluZyI9PXR5cGVvZiBrP3RoaXMuZGVidWcoInN0cmluZyBtYXRjaCIsayxfLEM9Xz09PWspOihDPV8ubWF0Y2go''@;'; put 'put ''ayksdGhpcy5kZWJ1ZygicGF0dGVybiBtYXRjaCIsayxfLEMpKSwhQylyZXR1cm4hMX1pZihBPT09SCYmRj09PWcpcmV0dXJuITA7aWYoQT09PUgpcmV0dXJuIFc7aWYoRj09PWcpcmV0dXJuIEE9PT1ILTEmJiIiPT09bGVbQV07dGhyb3cgbmV3IEVycm9yKCJ3dGY/Iil9fSw0MjQ0Ok09Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIE89ZnVuY3Rpb24oSSl7cmV0dXJuIEkhPUl9O00uZXhwb3J0cz1mdW5jdGlvbihJLGope3JldHVybiAwPT09SSYmMD09PWo/MS9JPT0xL2o6ST09PWp8fCEoIU8oSSl8fCFPKGopKX19LDYwOTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDI4OSksRz1J''@;'; put 'put ''KDU1NTkpLEQ9SSg0MjQ0KSxUPUkoNTYyNCksRT1JKDIyODEpLHo9RyhUKCksT2JqZWN0KTtqKHose2dldFBvbHlmaWxsOlQsaW1wbGVtZW50YXRpb246RCxzaGltOkV9KSxNLmV4cG9ydHM9en0sNTYyNDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDI0NCk7TS5leHBvcnRzPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6an19LDIyODE6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDU2MjQpLEc9SSg0Mjg5KTtNLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgRD1qKCk7cmV0dXJuIEcoT2JqZWN0LHtpczpEfSx7''@;'; put 'put ''aXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzIT09RH19KSxEfX0sODk4NzooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqO2lmKCFPYmplY3Qua2V5cyl7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxEPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsVD1JKDE0''@;'; put 'put ''MTQpLEU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSx6PSFFLmNhbGwoe3RvU3RyaW5nOm51bGx9LCJ0b1N0cmluZyIpLE49RS5jYWxsKGZ1bmN0aW9uKCl7fSwicHJvdG90eXBlIiksQj1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3du''@;'; put 'put ''UHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLFo9ZnVuY3Rpb24ocSl7dmFyIEo9cS5jb25zdHJ1Y3RvcjtyZXR1cm4gSiYmSi5wcm90b3R5cGU9PT1xfSxZPXskYXBwbGljYXRpb25DYWNoZTohMCwkY29uc29sZTohMCwkZXh0''@;'; put 'put ''ZXJuYWw6ITAsJGZyYW1lOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJGZyYW1lczohMCwkaW5uZXJIZWlnaHQ6ITAsJGlubmVyV2lkdGg6ITAsJG9ubW96ZnVsbHNjcmVlbmNoYW5nZTohMCwkb25tb3pmdWxsc2NyZWVuZXJyb3I6ITAsJG91dGVySGVpZ2h0OiEwLCRvdXRlcldpZHRoOiEwLCRwYWdl''@;'; put 'put ''WE9mZnNldDohMCwkcGFnZVlPZmZzZXQ6ITAsJHBhcmVudDohMCwkc2Nyb2xsTGVmdDohMCwkc2Nyb2xsVG9wOiEwLCRzY3JvbGxYOiEwLCRzY3JvbGxZOiEwLCRzZWxmOiEwLCR3ZWJraXRJbmRleGVkREI6ITAsJHdlYmtpdFN0b3JhZ2VJbmZvOiEwLCR3aW5kb3c6ITB9LFU9ZnVuY3Rpb24o''@;'; put 'put ''KXtpZih0eXBlb2Ygd2luZG93PiJ1IilyZXR1cm4hMTtmb3IodmFyIHEgaW4gd2luZG93KXRyeXtpZighWVsiJCIrcV0mJkcuY2FsbCh3aW5kb3cscSkmJm51bGwhPT13aW5kb3dbcV0mJiJvYmplY3QiPT10eXBlb2Ygd2luZG93W3FdKXRyeXtaKHdpbmRvd1txXSl9Y2F0Y2h7cmV0dXJuITB9''@;'; put 'put ''fWNhdGNoe3JldHVybiEwfXJldHVybiExfSgpO2o9ZnVuY3Rpb24ocSl7dmFyIEo9bnVsbCE9PXEmJiJvYmplY3QiPT10eXBlb2YgcSxlZT0iW29iamVjdCBGdW5jdGlvbl0iPT09RC5jYWxsKHEpLHJlPVQocSksaWU9SiYmIltvYmplY3QgU3RyaW5nXSI9PT1ELmNhbGwocSksdWU9W107aWYo''@;'; put 'put ''IUomJiFlZSYmIXJlKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QiKTt2YXIgbGU9TiYmZWU7aWYoaWUmJnEubGVuZ3RoPjAmJiFHLmNhbGwocSwwKSlmb3IodmFyIGFlPTA7YWU8cS5sZW5ndGg7KythZSl1ZS5wdXNoKFN0cmluZyhhZSkp''@;'; put 'put ''O2lmKHJlJiZxLmxlbmd0aD4wKWZvcih2YXIgVz0wO1c8cS5sZW5ndGg7KytXKXVlLnB1c2goU3RyaW5nKFcpKTtlbHNlIGZvcih2YXIgYiBpbiBxKWxlJiYicHJvdG90eXBlIj09PWJ8fCFHLmNhbGwocSxiKXx8dWUucHVzaChTdHJpbmcoYikpO2lmKHopZm9yKHZhciBBPWZ1bmN0aW9uKEgp''@;'; put 'put ''e2lmKHR5cGVvZiB3aW5kb3c+InUifHwhVSlyZXR1cm4gWihIKTt0cnl7cmV0dXJuIFooSCl9Y2F0Y2h7cmV0dXJuITF9fShxKSxGPTA7RjxCLmxlbmd0aDsrK0YpQSYmImNvbnN0cnVjdG9yIj09PUJbRl18fCFHLmNhbGwocSxCW0ZdKXx8dWUucHVzaChCW0ZdKTtyZXR1cm4gdWV9fU0uZXhw''@;'; put 'put ''b3J0cz1qfSwyMjE1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9QXJyYXkucHJvdG90eXBlLnNsaWNlLEc9SSgxNDE0KSxEPU9iamVjdC5rZXlzLFQ9RD9mdW5jdGlvbih6KXtyZXR1cm4gRCh6KX06SSg4OTg3KSxFPU9iamVjdC5rZXlzO1Quc2hpbT1mdW5jdGlvbigpe2lmKE9iamVj''@;'; put 'put ''dC5rZXlzKXt2YXIgej1mdW5jdGlvbigpe3ZhciBOPU9iamVjdC5rZXlzKGFyZ3VtZW50cyk7cmV0dXJuIE4mJk4ubGVuZ3RoPT09YXJndW1lbnRzLmxlbmd0aH0oMSwyKTt6fHwoT2JqZWN0LmtleXM9ZnVuY3Rpb24oTil7cmV0dXJuIEcoTik/RShqLmNhbGwoTikpOkUoTil9KX1lbHNlIE9i''@;'; put 'put ''amVjdC5rZXlzPVQ7cmV0dXJuIE9iamVjdC5rZXlzfHxUfSxNLmV4cG9ydHM9VH0sMTQxNDpNPT57InVzZSBzdHJpY3QiO3ZhciBPPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7TS5leHBvcnRzPWZ1bmN0aW9uKEkpe3ZhciBqPU8uY2FsbChJKSxHPSJbb2JqZWN0IEFyZ3VtZW50c10iPT09''@;'; put 'put ''ajtyZXR1cm4gR3x8KEc9IltvYmplY3QgQXJyYXldIiE9PWomJm51bGwhPT1JJiYib2JqZWN0Ij09dHlwZW9mIEkmJiJudW1iZXIiPT10eXBlb2YgSS5sZW5ndGgmJkkubGVuZ3RoPj0wJiYiW29iamVjdCBGdW5jdGlvbl0iPT09Ty5jYWxsKEkuY2FsbGVlKSksR319LDc3ODooTSxPLEkpPT57''@;'; put 'put ''dmFyIGo9SSgyNDc5KTtmdW5jdGlvbiBHKFQpe3ZhciBFPWZ1bmN0aW9uKCl7cmV0dXJuIEUuY2FsbGVkP0UudmFsdWU6KEUuY2FsbGVkPSEwLEUudmFsdWU9VC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfTtyZXR1cm4gRS5jYWxsZWQ9ITEsRX1mdW5jdGlvbiBEKFQpe3ZhciBFPWZ1bmN0aW9u''@;'; put 'put ''KCl7aWYoRS5jYWxsZWQpdGhyb3cgbmV3IEVycm9yKEUub25jZUVycm9yKTtyZXR1cm4gRS5jYWxsZWQ9ITAsRS52YWx1ZT1ULmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIEUub25jZUVycm9yPShULm5hbWV8fCJGdW5jdGlvbiB3cmFwcGVkIHdpdGggYG9uY2VgIikrIiBzaG91bGRu''@;'; put 'put ''J3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIixFLmNhbGxlZD0hMSxFfU0uZXhwb3J0cz1qKEcpLE0uZXhwb3J0cy5zdHJpY3Q9aihEKSxHLnByb3RvPUcoZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCJvbmNlIix7dmFsdWU6ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gRyh0aGlzKX0sY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwib25jZVN0cmljdCIse3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9LDc0MzU6KE0sTyk9PntPLmVuZGlh''@;'; put 'put ''bm5lc3M9ZnVuY3Rpb24oKXtyZXR1cm4iTEUifSxPLmhvc3RuYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBsb2NhdGlvbjwidSI/bG9jYXRpb24uaG9zdG5hbWU6IiJ9LE8ubG9hZGF2Zz1mdW5jdGlvbigpe3JldHVybltdfSxPLnVwdGltZT1mdW5jdGlvbigpe3JldHVybiAwfSxPLmZy''@;'; put 'put ''ZWVtZW09ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLk1BWF9WQUxVRX0sTy50b3RhbG1lbT1mdW5jdGlvbigpe3JldHVybiBOdW1iZXIuTUFYX1ZBTFVFfSxPLmNwdXM9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sTy50eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIkJyb3dzZXIifSxPLnJlbGVhc2U9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdHlwZW9mIG5hdmlnYXRvcjwidSI/bmF2aWdhdG9yLmFwcFZlcnNpb246IiJ9LE8ubmV0d29ya0ludGVyZmFjZXM9Ty5nZXROZXR3b3JrSW50ZXJmYWNlcz1mdW5jdGlvbigpe3JldHVybnt9fSxPLmFyY2g9ZnVuY3Rpb24oKXtyZXR1cm4iamF2YXNjcmlwdCJ9LE8u''@;'; put 'put ''cGxhdGZvcm09ZnVuY3Rpb24oKXtyZXR1cm4iYnJvd3NlciJ9LE8udG1wZGlyPU8udG1wRGlyPWZ1bmN0aW9uKCl7cmV0dXJuIi90bXAifSxPLkVPTD0iXG4iLE8uaG9tZWRpcj1mdW5jdGlvbigpe3JldHVybiIvIn19LDI4MTg6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDk4MDkp''@;'; put 'put ''O08uY2VydGlmaWNhdGU9SSgxOTM0KTt2YXIgRz1qLmRlZmluZSgiUlNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCks''@;'; put 'put ''dGhpcy5rZXkoInByaXZhdGVFeHBvbmVudCIpLmludCgpLHRoaXMua2V5KCJwcmltZTEiKS5pbnQoKSx0aGlzLmtleSgicHJpbWUyIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MSIpLmludCgpLHRoaXMua2V5KCJleHBvbmVudDIiKS5pbnQoKSx0aGlzLmtleSgiY29lZmZpY2llbnQiKS5p''@;'; put 'put ''bnQoKSl9KTtPLlJTQVByaXZhdGVLZXk9Rzt2YXIgRD1qLmRlZmluZSgiUlNBUHVibGljS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJtb2R1bHVzIikuaW50KCksdGhpcy5rZXkoInB1YmxpY0V4cG9uZW50IikuaW50KCkpfSk7Ty5SU0FQdWJsaWNLZXk9RDt2YXIg''@;'; put 'put ''VD1qLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShFKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pO08uUHVibGljS2V5PVQ7dmFyIEU9ai5kZWZpbmUoIkFsZ29y''@;'; put 'put ''aXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5rZXkoIm5vbmUiKS5udWxsXygpLm9wdGlvbmFsKCksdGhpcy5rZXkoImN1cnZlIikub2JqaWQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJwYXJhbXMiKS5z''@;'; put 'put ''ZXEoKS5vYmoodGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCkpLm9wdGlvbmFsKCkpfSksej1qLmRlZmluZSgiUHJpdmF0ZUtleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5pbnQoKSx0''@;'; put 'put ''aGlzLmtleSgiYWxnb3JpdGhtIikudXNlKEUpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO08uUHJpdmF0ZUtleT16O3ZhciBOPWouZGVmaW5lKCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgiYWxn''@;'; put 'put ''b3JpdGhtIikuc2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImRlY3J5cHQiKS5zZXEoKS5vYmoodGhpcy5rZXkoImtkZSIpLnNlcSgpLm9iaih0aGlzLmtleSgiaWQiKS5vYmppZCgpLHRoaXMua2V5KCJrZGVwYXJhbXMiKS5zZXEoKS5vYmoodGhpcy5rZXkoInNh''@;'; put 'put ''bHQiKS5vY3RzdHIoKSx0aGlzLmtleSgiaXRlcnMiKS5pbnQoKSkpLHRoaXMua2V5KCJjaXBoZXIiKS5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ28iKS5vYmppZCgpLHRoaXMua2V5KCJpdiIpLm9jdHN0cigpKSkpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO08u''@;'; put 'put ''RW5jcnlwdGVkUHJpdmF0ZUtleT1OO3ZhciBCPWouZGVmaW5lKCJEU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIikuaW50KCksdGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCks''@;'; put 'put ''dGhpcy5rZXkoInB1Yl9rZXkiKS5pbnQoKSx0aGlzLmtleSgicHJpdl9rZXkiKS5pbnQoKSl9KTtPLkRTQVByaXZhdGVLZXk9QixPLkRTQXBhcmFtPWouZGVmaW5lKCJEU0FwYXJhbSIsZnVuY3Rpb24oKXt0aGlzLmludCgpfSk7dmFyIFo9ai5kZWZpbmUoIkVDUHJpdmF0ZUtleSIsZnVuY3Rp''@;'; put 'put ''b24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlS2V5Iikub2N0c3RyKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShZKSx0aGlzLmtleSgicHVibGljS2V5Iikub3B0aW9uYWwoKS5l''@;'; put 'put ''eHBsaWNpdCgxKS5iaXRzdHIoKSl9KTtPLkVDUHJpdmF0ZUtleT1aO3ZhciBZPWouZGVmaW5lKCJFQ1BhcmFtZXRlcnMiLGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe25hbWVkQ3VydmU6dGhpcy5vYmppZCgpfSl9KTtPLnNpZ25hdHVyZT1qLmRlZmluZSgic2lnbmF0dXJlIixmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJyIikuaW50KCksdGhpcy5rZXkoInMiKS5pbnQoKSl9KX0sMTkzNDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoOTgwOSksRz1qLmRlZmluZSgiVGltZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7dXRjVGltZTp0aGlzLnV0Y3RpbWUo''@;'; put 'put ''KSxnZW5lcmFsVGltZTp0aGlzLmdlbnRpbWUoKX0pfSksRD1qLmRlZmluZSgiQXR0cmlidXRlVHlwZVZhbHVlIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0eXBlIikub2JqaWQoKSx0aGlzLmtleSgidmFsdWUiKS5hbnkoKSl9KSxUPWouZGVmaW5lKCJBbGdvcml0aG1J''@;'; put 'put ''ZGVudGlmaWVyIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5vYmppZCgpLHRoaXMua2V5KCJwYXJhbWV0ZXJzIikub3B0aW9uYWwoKSx0aGlzLmtleSgiY3VydmUiKS5vYmppZCgpLm9wdGlvbmFsKCkpfSksRT1qLmRlZmluZSgiU3ViamVjdFB1Ymxp''@;'; put 'put ''Y0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShUKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleSIpLmJpdHN0cigpKX0pLHo9ai5kZWZpbmUoIlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUiLGZ1bmN0aW9uKCl7dGhpcy5zZXRv''@;'; put 'put ''ZihEKX0pLE49ai5kZWZpbmUoIlJETlNlcXVlbmNlIixmdW5jdGlvbigpe3RoaXMuc2Vxb2Yoeil9KSxCPWouZGVmaW5lKCJOYW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtyZG5TZXF1ZW5jZTp0aGlzLnVzZShOKX0pfSksWj1qLmRlZmluZSgiVmFsaWRpdHkiLGZ1bmN0aW9uKCl7dGhp''@;'; put 'put ''cy5zZXEoKS5vYmoodGhpcy5rZXkoIm5vdEJlZm9yZSIpLnVzZShHKSx0aGlzLmtleSgibm90QWZ0ZXIiKS51c2UoRykpfSksWT1qLmRlZmluZSgiRXh0ZW5zaW9uIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJleHRuSUQiKS5vYmppZCgpLHRoaXMua2V5KCJjcml0aWNh''@;'; put 'put ''bCIpLmJvb2woKS5kZWYoITEpLHRoaXMua2V5KCJleHRuVmFsdWUiKS5vY3RzdHIoKSl9KSxVPWouZGVmaW5lKCJUQlNDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmV4cGxpY2l0KDApLmludCgpLm9wdGlvbmFsKCksdGhpcy5rZXko''@;'; put 'put ''InNlcmlhbE51bWJlciIpLmludCgpLHRoaXMua2V5KCJzaWduYXR1cmUiKS51c2UoVCksdGhpcy5rZXkoImlzc3VlciIpLnVzZShCKSx0aGlzLmtleSgidmFsaWRpdHkiKS51c2UoWiksdGhpcy5rZXkoInN1YmplY3QiKS51c2UoQiksdGhpcy5rZXkoInN1YmplY3RQdWJsaWNLZXlJbmZvIiku''@;'; put 'put ''dXNlKEUpLHRoaXMua2V5KCJpc3N1ZXJVbmlxdWVJRCIpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoInN1YmplY3RVbmlxdWVJRCIpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksdGhpcy5rZXkoImV4dGVuc2lvbnMiKS5leHBsaWNpdCgzKS5zZXFv''@;'; put 'put ''ZihZKS5vcHRpb25hbCgpKX0pLHE9ai5kZWZpbmUoIlg1MDlDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidGJzQ2VydGlmaWNhdGUiKS51c2UoVSksdGhpcy5rZXkoInNpZ25hdHVyZUFsZ29yaXRobSIpLnVzZShUKSx0aGlzLmtleSgic2lnbmF0dXJl''@;'; put 'put ''VmFsdWUiKS5iaXRzdHIoKSl9KTtNLmV4cG9ydHM9cX0sNzYzMTooTSxPLEkpPT57dmFyIGo9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXG5ccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcblxyXSsoWzAtOUEtelxuXHIrLz1dKylb''@;'; put 'put ''XG5ccl0rL20sRz0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL20sRD0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcblxyKy89XSspLS0tLS1FTkQgXDEtLS0tLSQvbSxUPUkoMzA0OCksRT1JKDQ2OTYpLHo9SSg5''@;'; put 'put ''NTA5KS5CdWZmZXI7TS5leHBvcnRzPWZ1bmN0aW9uKE4sQil7dmFyIFosWT1OLnRvU3RyaW5nKCksVT1ZLm1hdGNoKGopO2lmKFUpe3ZhciBxPSJhZXMiK1VbMV0sSj16LmZyb20oVVsyXSwiaGV4IiksZWU9ei5mcm9tKFVbM10ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKSxyZT1U''@;'; put 'put ''KEIsSi5zbGljZSgwLDgpLHBhcnNlSW50KFVbMV0sMTApKS5rZXksaWU9W10sdWU9RS5jcmVhdGVEZWNpcGhlcml2KHEscmUsSik7aWUucHVzaCh1ZS51cGRhdGUoZWUpKSxpZS5wdXNoKHVlLmZpbmFsKCkpLFo9ei5jb25jYXQoaWUpfWVsc2V7dmFyIGxlPVkubWF0Y2goRCk7Wj16LmZyb20o''@;'; put 'put ''bGVbMl0ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKX1yZXR1cm57dGFnOlkubWF0Y2goRylbMV0sZGF0YTpafX19LDk4MDooTSxPLEkpPT57dmFyIGo9SSgyODE4KSxHPUkoMjU2MiksRD1JKDc2MzEpLFQ9SSg0Njk2KSxFPUkoNTYzMiksej1JKDk1MDkpLkJ1ZmZlcjtmdW5jdGlv''@;'; put 'put ''biBOKEIpe3ZhciBaOyJvYmplY3QiIT10eXBlb2YgQnx8ei5pc0J1ZmZlcihCKXx8KFo9Qi5wYXNzcGhyYXNlLEI9Qi5rZXkpLCJzdHJpbmciPT10eXBlb2YgQiYmKEI9ei5mcm9tKEIpKTt2YXIgWSxVLHJlLGllLHVlLGxlLGFlLFcsYixBLEYsSCxnLHE9RChCLFopLEo9cS50YWcsZWU9cS5k''@;'; put 'put ''YXRhO3N3aXRjaChKKXtjYXNlIkNFUlRJRklDQVRFIjpVPWouY2VydGlmaWNhdGUuZGVjb2RlKGVlLCJkZXIiKS50YnNDZXJ0aWZpY2F0ZS5zdWJqZWN0UHVibGljS2V5SW5mbztjYXNlIlBVQkxJQyBLRVkiOnN3aXRjaChVfHwoVT1qLlB1YmxpY0tleS5kZWNvZGUoZWUsImRlciIpKSxZPVUu''@;'; put 'put ''YWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCIuIikpe2Nhc2UiMS4yLjg0MC4xMTM1NDkuMS4xLjEiOnJldHVybiBqLlJTQVB1YmxpY0tleS5kZWNvZGUoVS5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybiBVLnN1YmplY3RQcml2YXRl''@;'; put 'put ''S2V5PVUuc3ViamVjdFB1YmxpY0tleSx7dHlwZToiZWMiLGRhdGE6VX07Y2FzZSIxLjIuODQwLjEwMDQwLjQuMSI6cmV0dXJuIFUuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PWouRFNBcGFyYW0uZGVjb2RlKFUuc3ViamVjdFB1YmxpY0tleS5kYXRhLCJkZXIiKSx7dHlwZToiZHNhIixkYXRh''@;'; put 'put ''OlUuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25vd24ga2V5IGlkICIrWSl9Y2FzZSJFTkNSWVBURUQgUFJJVkFURSBLRVkiOmllPVosdWU9KHJlPWVlPWouRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoZWUsImRlciIpKS5hbGdvcml0aG0uZGVjcnlw''@;'; put 'put ''dC5rZGUua2RlcGFyYW1zLnNhbHQsbGU9cGFyc2VJbnQocmUuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLDEwKSxhZT1HW3JlLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oIi4iKV0sVz1yZS5hbGdvcml0aG0uZGVjcnlwdC5jaXBo''@;'; put 'put ''ZXIuaXYsYj1yZS5zdWJqZWN0UHJpdmF0ZUtleSxBPXBhcnNlSW50KGFlLnNwbGl0KCItIilbMV0sMTApLzgsRj1FLnBia2RmMlN5bmMoaWUsdWUsbGUsQSwic2hhMSIpLEg9VC5jcmVhdGVEZWNpcGhlcml2KGFlLEYsVyksKGc9W10pLnB1c2goSC51cGRhdGUoYikpLGcucHVzaChILmZpbmFs''@;'; put 'put ''KCkpLGVlPXouY29uY2F0KGcpO2Nhc2UiUFJJVkFURSBLRVkiOnN3aXRjaChZPShVPWouUHJpdmF0ZUtleS5kZWNvZGUoZWUsImRlciIpKS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4xLjEuMSI6cmV0dXJuIGouUlNBUHJpdmF0ZUtleS5kZWNv''@;'; put 'put ''ZGUoVS5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIik7Y2FzZSIxLjIuODQwLjEwMDQ1LjIuMSI6cmV0dXJue2N1cnZlOlUuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6ai5FQ1ByaXZhdGVLZXkuZGVjb2RlKFUuc3ViamVjdFByaXZhdGVLZXksImRlciIpLnByaXZhdGVLZXl9O2Nhc2UiMS4y''@;'; put 'put ''Ljg0MC4xMDA0MC40LjEiOnJldHVybiBVLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXk9ai5EU0FwYXJhbS5kZWNvZGUoVS5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIikse3R5cGU6ImRzYSIscGFyYW1zOlUuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVua25v''@;'; put 'put ''d24ga2V5IGlkICIrWSl9Y2FzZSJSU0EgUFVCTElDIEtFWSI6cmV0dXJuIGouUlNBUHVibGljS2V5LmRlY29kZShlZSwiZGVyIik7Y2FzZSJSU0EgUFJJVkFURSBLRVkiOnJldHVybiBqLlJTQVByaXZhdGVLZXkuZGVjb2RlKGVlLCJkZXIiKTtjYXNlIkRTQSBQUklWQVRFIEtFWSI6cmV0dXJu''@;'; put 'put ''e3R5cGU6ImRzYSIscGFyYW1zOmouRFNBUHJpdmF0ZUtleS5kZWNvZGUoZWUsImRlciIpfTtjYXNlIkVDIFBSSVZBVEUgS0VZIjpyZXR1cm57Y3VydmU6KGVlPWouRUNQcml2YXRlS2V5LmRlY29kZShlZSwiZGVyIikpLnBhcmFtZXRlcnMudmFsdWUscHJpdmF0ZUtleTplZS5wcml2YXRlS2V5''@;'; put 'put ''fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgdHlwZSAiK0opfX1NLmV4cG9ydHM9TixOLnNpZ25hdHVyZT1qLnNpZ25hdHVyZX0sNDA5NTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSk7ZnVuY3Rpb24gRyhUKXtyZXR1cm4iLyI9PT1ULmNoYXJBdCgw''@;'; put 'put ''KX1mdW5jdGlvbiBEKFQpe3ZhciBFPS9eKFthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXStbXlxcXC9dKyk/KFtcXFwvXSk/KFtcc1xTXSo/KSQvLmV4ZWMoVCksej1FWzFdfHwiIixOPSEoIXp8fCI6Ij09PXouY2hhckF0KDEpKTtyZXR1cm4hKCFFWzJdJiYhTil9TS5leHBvcnRz''@;'; put 'put ''PSJ3aW4zMiI9PT1qLnBsYXRmb3JtP0Q6RyxNLmV4cG9ydHMucG9zaXg9RyxNLmV4cG9ydHMud2luMzI9RH0sMTcyNTpNPT57TS5leHBvcnRzPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKE8sSSl7Ty5zdXBlcl89SSxPLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl''@;'; put 'put ''KEkucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6TyxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06ZnVuY3Rpb24oTyxJKXtPLnN1cGVyXz1JO3ZhciBqPWZ1bmN0aW9uKCl7fTtqLnByb3RvdHlwZT1JLnByb3RvdHlwZSxPLnByb3RvdHlwZT1uZXcg''@;'; put 'put ''aixPLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1PfX0sMjk3NDpNPT57TS5leHBvcnRzPWZ1bmN0aW9uKE8pe3JldHVybiBPJiYib2JqZWN0Ij09dHlwZW9mIE8mJiJmdW5jdGlvbiI9PXR5cGVvZiBPLmNvcHkmJiJmdW5jdGlvbiI9PXR5cGVvZiBPLmZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBP''@;'; put 'put ''LnJlYWRVSW50OH19LDgwNTk6KE0sTyxJKT0+e3ZhciBqPUkoNDE1NSksRz1JKDUxMDgpLEQ9LyVbc2RqJV0vZztPLmZvcm1hdD1mdW5jdGlvbihrKXtpZighaWUoaykpe2Zvcih2YXIgXz1bXSxwPTA7cDxhcmd1bWVudHMubGVuZ3RoO3ArKylfLnB1c2goeihhcmd1bWVudHNbcF0pKTtyZXR1''@;'; put 'put ''cm4gXy5qb2luKCIgIil9cD0xO2Zvcih2YXIgdz1hcmd1bWVudHMsSz13Lmxlbmd0aCx0ZT1TdHJpbmcoaykucmVwbGFjZShELGZ1bmN0aW9uKGhlKXtpZigiJSUiPT09aGUpcmV0dXJuIiUiO2lmKHA+PUspcmV0dXJuIGhlO3N3aXRjaChoZSl7Y2FzZSIlcyI6cmV0dXJuIFN0cmluZyh3W3Ar''@;'; put 'put ''K10pO2Nhc2UiJWQiOnJldHVybiBOdW1iZXIod1twKytdKTtjYXNlIiVqIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHdbcCsrXSl9Y2F0Y2h7cmV0dXJuIltDaXJjdWxhcl0ifWRlZmF1bHQ6cmV0dXJuIGhlfX0pLGNlPXdbcF07cDxLO2NlPXdbKytwXSllZShjZSl8fCFhZShjZSk/dGUr''@;'; put 'put ''PSIgIitjZTp0ZSs9IiAiK3ooY2UpO3JldHVybiB0ZX0sTy5kZXByZWNhdGU9ZnVuY3Rpb24oayxfKXtpZih1ZShJLmcucHJvY2VzcykpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE8uZGVwcmVjYXRlKGssXykuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtpZighMD09PWoubm9EZXByZWNhdGlv''@;'; put 'put ''bilyZXR1cm4gazt2YXIgcD0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighcCl7aWYoai50aHJvd0RlcHJlY2F0aW9uKXRocm93IG5ldyBFcnJvcihfKTtqLnRyYWNlRGVwcmVjYXRpb24/Ry50cmFjZShfKTpHLmVycm9yKF8pLHA9ITB9cmV0dXJuIGsuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07''@;'; put 'put ''dmFyIFQsRT17fTtmdW5jdGlvbiB6KGssXyl7dmFyIHA9e3NlZW46W10sc3R5bGl6ZTpCfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKHAuZGVwdGg9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPj00JiYocC5jb2xvcnM9YXJndW1lbnRzWzNdKSxKKF8pP3Auc2hvd0hpZGRl''@;'; put 'put ''bj1fOl8mJk8uX2V4dGVuZChwLF8pLHVlKHAuc2hvd0hpZGRlbikmJihwLnNob3dIaWRkZW49ITEpLHVlKHAuZGVwdGgpJiYocC5kZXB0aD0yKSx1ZShwLmNvbG9ycykmJihwLmNvbG9ycz0hMSksdWUocC5jdXN0b21JbnNwZWN0KSYmKHAuY3VzdG9tSW5zcGVjdD0hMCkscC5jb2xvcnMmJihw''@;'; put 'put ''LnN0eWxpemU9TiksWihwLGsscC5kZXB0aCl9ZnVuY3Rpb24gTihrLF8pe3ZhciBwPXouc3R5bGVzW19dO3JldHVybiBwPyJceDFiWyIrei5jb2xvcnNbcF1bMF0rIm0iK2srIlx4MWJbIit6LmNvbG9yc1twXVsxXSsibSI6a31mdW5jdGlvbiBCKGssXyl7cmV0dXJuIGt9ZnVuY3Rpb24gWihr''@;'; put 'put ''LF8scCl7aWYoay5jdXN0b21JbnNwZWN0JiZfJiZBKF8uaW5zcGVjdCkmJl8uaW5zcGVjdCE9PU8uaW5zcGVjdCYmKCFfLmNvbnN0cnVjdG9yfHxfLmNvbnN0cnVjdG9yLnByb3RvdHlwZSE9PV8pKXt2YXIgdz1fLmluc3BlY3QocCxrKTtyZXR1cm4gaWUodyl8fCh3PVooayx3LHApKSx3fXZh''@;'; put 'put ''ciBLPWZ1bmN0aW9uKERlLEJlKXtpZih1ZShCZSkpcmV0dXJuIERlLnN0eWxpemUoInVuZGVmaW5lZCIsInVuZGVmaW5lZCIpO2lmKGllKEJlKSl7dmFyIEdlPSInIitKU09OLnN0cmluZ2lmeShCZSkucmVwbGFjZSgvXiJ8IiQvZywiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9c''@;'; put 'put ''XCIvZywnIicpKyInIjtyZXR1cm4gRGUuc3R5bGl6ZShHZSwic3RyaW5nIil9cmV0dXJuIHJlKEJlKT9EZS5zdHlsaXplKCIiK0JlLCJudW1iZXIiKTpKKEJlKT9EZS5zdHlsaXplKCIiK0JlLCJib29sZWFuIik6ZWUoQmUpP0RlLnN0eWxpemUoIm51bGwiLCJudWxsIik6dm9pZCAwfShrLF8p''@;'; put 'put ''O2lmKEspcmV0dXJuIEs7dmFyIEJlLHRlPU9iamVjdC5rZXlzKF8pLGNlPShCZT17fSx0ZS5mb3JFYWNoKGZ1bmN0aW9uKEdlLFVlKXtCZVtHZV09ITB9KSxCZSk7aWYoay5zaG93SGlkZGVuJiYodGU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoXykpLGIoXykmJih0ZS5pbmRleE9mKCJt''@;'; put 'put ''ZXNzYWdlIik+PTB8fHRlLmluZGV4T2YoImRlc2NyaXB0aW9uIik+PTApKXJldHVybiBZKF8pO2lmKDA9PT10ZS5sZW5ndGgpe2lmKEEoXykpcmV0dXJuIGsuc3R5bGl6ZSgiW0Z1bmN0aW9uIisoXy5uYW1lPyI6ICIrXy5uYW1lOiIiKSsiXSIsInNwZWNpYWwiKTtpZihsZShfKSlyZXR1cm4g''@;'; put 'put ''ay5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChfKSwicmVnZXhwIik7aWYoVyhfKSlyZXR1cm4gay5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoXyksImRhdGUiKTtpZihiKF8pKXJldHVybiBZKF8pfXZhciBTZSxMZT0iIixIZT0hMSx4ZT1bInsi''@;'; put 'put ''LCJ9Il07cmV0dXJuIHEoXykmJihIZT0hMCx4ZT1bIlsiLCJdIl0pLEEoXykmJihMZT0iIFtGdW5jdGlvbiIrKF8ubmFtZT8iOiAiK18ubmFtZToiIikrIl0iKSxsZShfKSYmKExlPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoXykpLFcoXykmJihMZT0iICIrRGF0ZS5wcm90''@;'; put 'put ''b3R5cGUudG9VVENTdHJpbmcuY2FsbChfKSksYihfKSYmKExlPSIgIitZKF8pKSwwIT09dGUubGVuZ3RofHxIZSYmMCE9Xy5sZW5ndGg/cDwwP2xlKF8pP2suc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoXyksInJlZ2V4cCIpOmsuc3R5bGl6ZSgiW09iamVjdF0iLCJz''@;'; put 'put ''cGVjaWFsIik6KGsuc2Vlbi5wdXNoKF8pLFNlPUhlP2Z1bmN0aW9uKERlLEJlLEdlLFVlLHFlKXtmb3IodmFyIG90PVtdLEZlPTAsd2U9QmUubGVuZ3RoO0ZlPHdlOysrRmUpQyhCZSxTdHJpbmcoRmUpKT9vdC5wdXNoKFUoRGUsQmUsR2UsVWUsU3RyaW5nKEZlKSwhMCkpOm90LnB1c2goIiIp''@;'; put 'put ''O3JldHVybiBxZS5mb3JFYWNoKGZ1bmN0aW9uKEVlKXtFZS5tYXRjaCgvXlxkKyQvKXx8b3QucHVzaChVKERlLEJlLEdlLFVlLEVlLCEwKSl9KSxvdH0oayxfLHAsY2UsdGUpOnRlLm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIFUoayxfLHAsY2UsRGUsSGUpfSksay5zZWVuLnBvcCgpLGZ1bmN0''@;'; put 'put ''aW9uKERlLEJlLEdlKXtyZXR1cm4gRGUucmVkdWNlKGZ1bmN0aW9uKHFlLG90KXtyZXR1cm4gb3QuaW5kZXhPZigiXG4iKSxxZStvdC5yZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCIiKS5sZW5ndGgrMX0sMCk+NjA/R2VbMF0rKCIiPT09QmU/IiI6QmUrIlxuICIpKyIgIitEZS5qb2luKCIs''@;'; put 'put ''XG4gICIpKyIgIitHZVsxXTpHZVswXStCZSsiICIrRGUuam9pbigiLCAiKSsiICIrR2VbMV19KFNlLExlLHhlKSk6eGVbMF0rTGUreGVbMV19ZnVuY3Rpb24gWShrKXtyZXR1cm4iWyIrRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaykrIl0ifWZ1bmN0aW9uIFUoayxfLHAsdyxLLHRl''@;'; put 'put ''KXt2YXIgY2UsaGUsU2U7aWYoKFNlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXyxLKXx8e3ZhbHVlOl9bS119KS5nZXQ/aGU9ay5zdHlsaXplKFNlLnNldD8iW0dldHRlci9TZXR0ZXJdIjoiW0dldHRlcl0iLCJzcGVjaWFsIik6U2Uuc2V0JiYoaGU9ay5zdHlsaXplKCJbU2V0''@;'; put 'put ''dGVyXSIsInNwZWNpYWwiKSksQyh3LEspfHwoY2U9IlsiK0srIl0iKSxoZXx8KGsuc2Vlbi5pbmRleE9mKFNlLnZhbHVlKTwwPyhoZT1lZShwKT9aKGssU2UudmFsdWUsbnVsbCk6WihrLFNlLnZhbHVlLHAtMSkpLmluZGV4T2YoIlxuIik+LTEmJihoZT10ZT9oZS5zcGxpdCgiXG4iKS5tYXAo''@;'; put 'put ''ZnVuY3Rpb24oTGUpe3JldHVybiIgICIrTGV9KS5qb2luKCJcbiIpLnN1YnN0cigyKToiXG4iK2hlLnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihMZSl7cmV0dXJuIiAgICIrTGV9KS5qb2luKCJcbiIpKTpoZT1rLnN0eWxpemUoIltDaXJjdWxhcl0iLCJzcGVjaWFsIikpLHVlKGNlKSl7aWYo''@;'; put 'put ''dGUmJksubWF0Y2goL15cZCskLykpcmV0dXJuIGhlOyhjZT1KU09OLnN0cmluZ2lmeSgiIitLKSkubWF0Y2goL14iKFthLXpBLVpfXVthLXpBLVpfMC05XSopIiQvKT8oY2U9Y2Uuc3Vic3RyKDEsY2UubGVuZ3RoLTIpLGNlPWsuc3R5bGl6ZShjZSwibmFtZSIpKTooY2U9Y2UucmVwbGFjZSgv''@;'; put 'put ''Jy9nLCJcXCciKS5yZXBsYWNlKC9cXCIvZywnIicpLnJlcGxhY2UoLyheInwiJCkvZywiJyIpLGNlPWsuc3R5bGl6ZShjZSwic3RyaW5nIikpfXJldHVybiBjZSsiOiAiK2hlfWZ1bmN0aW9uIHEoayl7cmV0dXJuIEFycmF5LmlzQXJyYXkoayl9ZnVuY3Rpb24gSihrKXtyZXR1cm4iYm9vbGVh''@;'; put 'put ''biI9PXR5cGVvZiBrfWZ1bmN0aW9uIGVlKGspe3JldHVybiBudWxsPT09a31mdW5jdGlvbiByZShrKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGt9ZnVuY3Rpb24gaWUoayl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBrfWZ1bmN0aW9uIHVlKGspe3JldHVybiB2b2lkIDA9PT1rfWZ1bmN0aW9u''@;'; put 'put ''IGxlKGspe3JldHVybiBhZShrKSYmIltvYmplY3QgUmVnRXhwXSI9PT1GKGspfWZ1bmN0aW9uIGFlKGspe3JldHVybiJvYmplY3QiPT10eXBlb2YgayYmbnVsbCE9PWt9ZnVuY3Rpb24gVyhrKXtyZXR1cm4gYWUoaykmJiJbb2JqZWN0IERhdGVdIj09PUYoayl9ZnVuY3Rpb24gYihrKXtyZXR1''@;'; put 'put ''cm4gYWUoaykmJigiW29iamVjdCBFcnJvcl0iPT09RihrKXx8ayBpbnN0YW5jZW9mIEVycm9yKX1mdW5jdGlvbiBBKGspe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBrfWZ1bmN0aW9uIEYoayl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChrKX1mdW5jdGlvbiBIKGsp''@;'; put 'put ''e3JldHVybiBrPDEwPyIwIitrLnRvU3RyaW5nKDEwKTprLnRvU3RyaW5nKDEwKX1PLmRlYnVnbG9nPWZ1bmN0aW9uKGspe2lmKHVlKFQpJiYoVD1qLmVudi5OT0RFX0RFQlVHfHwiIiksaz1rLnRvVXBwZXJDYXNlKCksIUVba10paWYobmV3IFJlZ0V4cCgiXFxiIitrKyJcXGIiLCJpIikudGVz''@;'; put 'put ''dChUKSl7dmFyIF89ai5waWQ7RVtrXT1mdW5jdGlvbigpe3ZhciBwPU8uZm9ybWF0LmFwcGx5KE8sYXJndW1lbnRzKTtHLmVycm9yKCIlcyAlZDogJXMiLGssXyxwKX19ZWxzZSBFW2tdPWZ1bmN0aW9uKCl7fTtyZXR1cm4gRVtrXX0sTy5pbnNwZWN0PXosei5jb2xvcnM9e2JvbGQ6WzEsMjJd''@;'; put 'put ''LGl0YWxpYzpbMywyM10sdW5kZXJsaW5lOls0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93Olsz''@;'; put 'put ''MywzOV19LHouc3R5bGVzPXtzcGVjaWFsOiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3JlZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sTy5pc0FycmF5PXEsTy5pc0Jvb2xlYW49SixP''@;'; put 'put ''LmlzTnVsbD1lZSxPLmlzTnVsbE9yVW5kZWZpbmVkPWZ1bmN0aW9uKGspe3JldHVybiBudWxsPT1rfSxPLmlzTnVtYmVyPXJlLE8uaXNTdHJpbmc9aWUsTy5pc1N5bWJvbD1mdW5jdGlvbihrKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGt9LE8uaXNVbmRlZmluZWQ9dWUsTy5pc1JlZ0V4cD1s''@;'; put 'put ''ZSxPLmlzT2JqZWN0PWFlLE8uaXNEYXRlPVcsTy5pc0Vycm9yPWIsTy5pc0Z1bmN0aW9uPUEsTy5pc1ByaW1pdGl2ZT1mdW5jdGlvbihrKXtyZXR1cm4gbnVsbD09PWt8fCJib29sZWFuIj09dHlwZW9mIGt8fCJudW1iZXIiPT10eXBlb2Yga3x8InN0cmluZyI9PXR5cGVvZiBrfHwic3ltYm9s''@;'; put 'put ''Ij09dHlwZW9mIGt8fHZvaWQgMD09PWt9LE8uaXNCdWZmZXI9SSgyOTc0KTt2YXIgZz1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO2Z1bmN0aW9uIEMoayxfKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKGssXyl9Ty5sb2c9ZnVuY3Rpb24oKXt2YXIgayxfO0cubG9nKCIlcyAtICVzIiwoXz1bSCgoaz1uZXcgRGF0ZSkuZ2V0SG91cnMoKSksSChrLmdldE1pbnV0ZXMoKSksSChrLmdldFNlY29uZHMoKSldLmpvaW4oIjoiKSxbay5nZXREYXRlKCksZ1trLmdldE1v''@;'; put 'put ''bnRoKCldLF9dLmpvaW4oIiAiKSksTy5mb3JtYXQuYXBwbHkoTyxhcmd1bWVudHMpKX0sTy5pbmhlcml0cz1JKDE3MjUpLE8uX2V4dGVuZD1mdW5jdGlvbihrLF8pe2lmKCFffHwhYWUoXykpcmV0dXJuIGs7Zm9yKHZhciBwPU9iamVjdC5rZXlzKF8pLHc9cC5sZW5ndGg7dy0tOylrW3Bbd11d''@;'; put 'put ''PV9bcFt3XV07cmV0dXJuIGt9fSwyNTIwOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KSxHPSJ3aW4zMiI9PT1qLnBsYXRmb3JtLEQ9SSg4MDU5KTtmdW5jdGlvbiBUKHJlLGllKXtmb3IodmFyIHVlPVtdLGxlPTA7bGU8cmUubGVuZ3RoO2xlKyspe3ZhciBhZT1yZVtsZV07''@;'; put 'put ''YWUmJiIuIiE9PWFlJiYoIi4uIj09PWFlP3VlLmxlbmd0aCYmIi4uIiE9PXVlW3VlLmxlbmd0aC0xXT91ZS5wb3AoKTppZSYmdWUucHVzaCgiLi4iKTp1ZS5wdXNoKGFlKSl9cmV0dXJuIHVlfWZ1bmN0aW9uIEUocmUpe2Zvcih2YXIgaWU9cmUubGVuZ3RoLTEsdWU9MDt1ZTw9aWUmJiFyZVt1''@;'; put 'put ''ZV07dWUrKyk7Zm9yKHZhciBsZT1pZTtsZT49MCYmIXJlW2xlXTtsZS0tKTtyZXR1cm4gMD09PXVlJiZsZT09PWllP3JlOnVlPmxlP1tdOnJlLnNsaWNlKHVlLGxlKzEpfXZhciB6PS9eKFthLXpBLVpdOnxbXFxcL117Mn1bXlxcXC9dK1tcXFwvXStbXlxcXC9dKyk/KFtcXFwvXSk/KFtcc1xT''@;'; put 'put ''XSo/KSQvLE49L14oW1xzXFNdKj8pKCg/OlwuezEsMn18W15cXFwvXSs/fCkoXC5bXi5cL1xcXSp8KSkoPzpbXFxcL10qKSQvLEI9e307ZnVuY3Rpb24gWihyZSl7dmFyIGllPXouZXhlYyhyZSksdWU9KGllWzFdfHwiIikrKGllWzJdfHwiIiksYWU9Ti5leGVjKGllWzNdfHwiIik7cmV0dXJu''@;'; put 'put ''W3VlLGFlWzFdLGFlWzJdLGFlWzNdXX1mdW5jdGlvbiBZKHJlKXt2YXIgaWU9ei5leGVjKHJlKSx1ZT1pZVsxXXx8IiIsbGU9ISF1ZSYmIjoiIT09dWVbMV07cmV0dXJue2RldmljZTp1ZSxpc1VuYzpsZSxpc0Fic29sdXRlOmxlfHwhIWllWzJdLHRhaWw6aWVbM119fWZ1bmN0aW9uIFUocmUp''@;'; put 'put ''e3JldHVybiJcXFxcIityZS5yZXBsYWNlKC9eW1xcXC9dKy8sIiIpLnJlcGxhY2UoL1tcXFwvXSsvZywiXFwiKX1CLnJlc29sdmU9ZnVuY3Rpb24oKXtmb3IodmFyIHJlPSIiLGllPSIiLHVlPSExLGxlPWFyZ3VtZW50cy5sZW5ndGgtMTtsZT49LTE7bGUtLSl7dmFyIGFlO2lmKGxlPj0wP2Fl''@;'; put 'put ''PWFyZ3VtZW50c1tsZV06cmU/KGFlPWouZW52WyI9IityZV0pJiZhZS5zdWJzdHIoMCwzKS50b0xvd2VyQ2FzZSgpPT09cmUudG9Mb3dlckNhc2UoKSsiXFwifHwoYWU9cmUrIlxcIik6YWU9ai5jd2QoKSwhRC5pc1N0cmluZyhhZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRv''@;'; put 'put ''IHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtpZihhZSl7dmFyIFc9WShhZSksYj1XLmRldmljZSxBPVcuaXNVbmMsRj1XLmlzQWJzb2x1dGUsSD1XLnRhaWw7aWYoKCFifHwhcmV8fGIudG9Mb3dlckNhc2UoKT09PXJlLnRvTG93ZXJDYXNlKCkpJiYocmV8fChyZT1iKSx1ZXx8KGll''@;'; put 'put ''PUgrIlxcIitpZSx1ZT1GKSxyZSYmdWUpKWJyZWFrfX1yZXR1cm4gQSYmKHJlPVUocmUpKSxyZSsodWU/IlxcIjoiIikrKGllPVQoaWUuc3BsaXQoL1tcXFwvXSsvKSwhdWUpLmpvaW4oIlxcIikpfHwiLiJ9LEIubm9ybWFsaXplPWZ1bmN0aW9uKHJlKXt2YXIgaWU9WShyZSksdWU9aWUuZGV2''@;'; put 'put ''aWNlLGxlPWllLmlzVW5jLGFlPWllLmlzQWJzb2x1dGUsVz1pZS50YWlsLGI9L1tcXFwvXSQvLnRlc3QoVyk7cmV0dXJuKFc9VChXLnNwbGl0KC9bXFxcL10rLyksIWFlKS5qb2luKCJcXCIpKXx8YWV8fChXPSIuIiksVyYmYiYmKFcrPSJcXCIpLGxlJiYodWU9VSh1ZSkpLHVlKyhhZT8iXFwi''@;'; put 'put ''OiIiKStXfSxCLmlzQWJzb2x1dGU9ZnVuY3Rpb24ocmUpe3JldHVybiBZKHJlKS5pc0Fic29sdXRlfSxCLmpvaW49ZnVuY3Rpb24oKXtmb3IodmFyIHJlPVtdLGllPTA7aWU8YXJndW1lbnRzLmxlbmd0aDtpZSsrKXt2YXIgdWU9YXJndW1lbnRzW2llXTtpZighRC5pc1N0cmluZyh1ZSkpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MiKTt1ZSYmcmUucHVzaCh1ZSl9dmFyIGxlPXJlLmpvaW4oIlxcIik7cmV0dXJuL15bXFxcL117Mn1bXlxcXC9dLy50ZXN0KHJlWzBdKXx8KGxlPWxlLnJlcGxhY2UoL15bXFxcL117Mix9Lywi''@;'; put 'put ''XFwiKSksQi5ub3JtYWxpemUobGUpfSxCLnJlbGF0aXZlPWZ1bmN0aW9uKHJlLGllKXtyZT1CLnJlc29sdmUocmUpLGllPUIucmVzb2x2ZShpZSk7Zm9yKHZhciB1ZT1yZS50b0xvd2VyQ2FzZSgpLGxlPWllLnRvTG93ZXJDYXNlKCksYWU9RShpZS5zcGxpdCgiXFwiKSksVz1FKHVlLnNwbGl0''@;'; put 'put ''KCJcXCIpKSxiPUUobGUuc3BsaXQoIlxcIikpLEE9TWF0aC5taW4oVy5sZW5ndGgsYi5sZW5ndGgpLEY9QSxIPTA7SDxBO0grKylpZihXW0hdIT09YltIXSl7Rj1IO2JyZWFrfWlmKDA9PUYpcmV0dXJuIGllO3ZhciBnPVtdO2ZvcihIPUY7SDxXLmxlbmd0aDtIKyspZy5wdXNoKCIuLiIpO3Jl''@;'; put 'put ''dHVybihnPWcuY29uY2F0KGFlLnNsaWNlKEYpKSkuam9pbigiXFwiKX0sQi5fbWFrZUxvbmc9ZnVuY3Rpb24ocmUpe2lmKCFELmlzU3RyaW5nKHJlKSlyZXR1cm4gcmU7aWYoIXJlKXJldHVybiIiO3ZhciBpZT1CLnJlc29sdmUocmUpO3JldHVybi9eW2EtekEtWl1cOlxcLy50ZXN0KGllKT8i''@;'; put 'put ''XFxcXD9cXCIraWU6L15cXFxcW14/Ll0vLnRlc3QoaWUpPyJcXFxcP1xcVU5DXFwiK2llLnN1YnN0cmluZygyKTpyZX0sQi5kaXJuYW1lPWZ1bmN0aW9uKHJlKXt2YXIgaWU9WihyZSksdWU9aWVbMF0sbGU9aWVbMV07cmV0dXJuIHVlfHxsZT8obGUmJihsZT1sZS5zdWJzdHIoMCxsZS5sZW5n''@;'; put 'put ''dGgtMSkpLHVlK2xlKToiLiJ9LEIuYmFzZW5hbWU9ZnVuY3Rpb24ocmUsaWUpe3ZhciB1ZT1aKHJlKVsyXTtyZXR1cm4gaWUmJnVlLnN1YnN0cigtMSppZS5sZW5ndGgpPT09aWUmJih1ZT11ZS5zdWJzdHIoMCx1ZS5sZW5ndGgtaWUubGVuZ3RoKSksdWV9LEIuZXh0bmFtZT1mdW5jdGlvbihy''@;'; put 'put ''ZSl7cmV0dXJuIFoocmUpWzNdfSxCLmZvcm1hdD1mdW5jdGlvbihyZSl7aWYoIUQuaXNPYmplY3QocmUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlBhcmFtZXRlciAncGF0aE9iamVjdCcgbXVzdCBiZSBhbiBvYmplY3QsIG5vdCAiK3R5cGVvZiByZSk7aWYoIUQuaXNTdHJpbmcocmUucm9vdHx8''@;'; put 'put ''IiIpKXRocm93IG5ldyBUeXBlRXJyb3IoIidwYXRoT2JqZWN0LnJvb3QnIG11c3QgYmUgYSBzdHJpbmcgb3IgdW5kZWZpbmVkLCBub3QgIit0eXBlb2YgcmUucm9vdCk7dmFyIHVlPXJlLmRpcixsZT1yZS5iYXNlfHwiIjtyZXR1cm4gdWU/dWVbdWUubGVuZ3RoLTFdPT09Qi5zZXA/dWUrbGU6''@;'; put 'put ''dWUrQi5zZXArbGU6bGV9LEIucGFyc2U9ZnVuY3Rpb24ocmUpe2lmKCFELmlzU3RyaW5nKHJlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3BhdGhTdHJpbmcnIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAiK3R5cGVvZiByZSk7dmFyIGllPVoocmUpO2lmKCFpZXx8NCE9PWllLmxl''@;'; put 'put ''bmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHBhdGggJyIrcmUrIiciKTtyZXR1cm57cm9vdDppZVswXSxkaXI6aWVbMF0raWVbMV0uc2xpY2UoMCwtMSksYmFzZTppZVsyXSxleHQ6aWVbM10sbmFtZTppZVsyXS5zbGljZSgwLGllWzJdLmxlbmd0aC1pZVszXS5sZW5ndGgpfX0s''@;'; put 'put ''Qi5zZXA9IlxcIixCLmRlbGltaXRlcj0iOyI7dmFyIHE9L14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/OltcL10qKSQvLEo9e307ZnVuY3Rpb24gZWUocmUpe3JldHVybiBxLmV4ZWMocmUpLnNsaWNlKDEpfUoucmVzb2x2ZT1mdW5jdGlvbigp''@;'; put 'put ''e2Zvcih2YXIgcmU9IiIsaWU9ITEsdWU9YXJndW1lbnRzLmxlbmd0aC0xO3VlPj0tMSYmIWllO3VlLS0pe3ZhciBsZT11ZT49MD9hcmd1bWVudHNbdWVdOmouY3dkKCk7aWYoIUQuaXNTdHJpbmcobGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVz''@;'; put 'put ''dCBiZSBzdHJpbmdzIik7bGUmJihyZT1sZSsiLyIrcmUsaWU9Ii8iPT09bGVbMF0pfXJldHVybihpZT8iLyI6IiIpKyhyZT1UKHJlLnNwbGl0KCIvIiksIWllKS5qb2luKCIvIikpfHwiLiJ9LEoubm9ybWFsaXplPWZ1bmN0aW9uKHJlKXt2YXIgaWU9Si5pc0Fic29sdXRlKHJlKSx1ZT1yZSYm''@;'; put 'put ''Ii8iPT09cmVbcmUubGVuZ3RoLTFdO3JldHVybihyZT1UKHJlLnNwbGl0KCIvIiksIWllKS5qb2luKCIvIikpfHxpZXx8KHJlPSIuIikscmUmJnVlJiYocmUrPSIvIiksKGllPyIvIjoiIikrcmV9LEouaXNBYnNvbHV0ZT1mdW5jdGlvbihyZSl7cmV0dXJuIi8iPT09cmUuY2hhckF0KDApfSxK''@;'; put 'put ''LmpvaW49ZnVuY3Rpb24oKXtmb3IodmFyIHJlPSIiLGllPTA7aWU8YXJndW1lbnRzLmxlbmd0aDtpZSsrKXt2YXIgdWU9YXJndW1lbnRzW2llXTtpZighRC5pc1N0cmluZyh1ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MiKTt1''@;'; put 'put ''ZSYmKHJlKz1yZT8iLyIrdWU6dWUpfXJldHVybiBKLm5vcm1hbGl6ZShyZSl9LEoucmVsYXRpdmU9ZnVuY3Rpb24ocmUsaWUpe3JlPUoucmVzb2x2ZShyZSkuc3Vic3RyKDEpLGllPUoucmVzb2x2ZShpZSkuc3Vic3RyKDEpO2Zvcih2YXIgdWU9RShyZS5zcGxpdCgiLyIpKSxsZT1FKGllLnNw''@;'; put 'put ''bGl0KCIvIikpLGFlPU1hdGgubWluKHVlLmxlbmd0aCxsZS5sZW5ndGgpLFc9YWUsYj0wO2I8YWU7YisrKWlmKHVlW2JdIT09bGVbYl0pe1c9YjticmVha312YXIgQT1bXTtmb3IoYj1XO2I8dWUubGVuZ3RoO2IrKylBLnB1c2goIi4uIik7cmV0dXJuKEE9QS5jb25jYXQobGUuc2xpY2UoVykp''@;'; put 'put ''KS5qb2luKCIvIil9LEouX21ha2VMb25nPWZ1bmN0aW9uKHJlKXtyZXR1cm4gcmV9LEouZGlybmFtZT1mdW5jdGlvbihyZSl7dmFyIGllPWVlKHJlKSx1ZT1pZVswXSxsZT1pZVsxXTtyZXR1cm4gdWV8fGxlPyhsZSYmKGxlPWxlLnN1YnN0cigwLGxlLmxlbmd0aC0xKSksdWUrbGUpOiIuIn0s''@;'; put 'put ''Si5iYXNlbmFtZT1mdW5jdGlvbihyZSxpZSl7dmFyIHVlPWVlKHJlKVsyXTtyZXR1cm4gaWUmJnVlLnN1YnN0cigtMSppZS5sZW5ndGgpPT09aWUmJih1ZT11ZS5zdWJzdHIoMCx1ZS5sZW5ndGgtaWUubGVuZ3RoKSksdWV9LEouZXh0bmFtZT1mdW5jdGlvbihyZSl7cmV0dXJuIGVlKHJlKVsz''@;'; put 'put ''XX0sSi5mb3JtYXQ9ZnVuY3Rpb24ocmUpe2lmKCFELmlzT2JqZWN0KHJlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXJhbWV0ZXIgJ3BhdGhPYmplY3QnIG11c3QgYmUgYW4gb2JqZWN0LCBub3QgIit0eXBlb2YgcmUpO2lmKCFELmlzU3RyaW5nKHJlLnJvb3R8fCIiKSl0aHJvdyBuZXcgVHlw''@;'; put 'put ''ZUVycm9yKCIncGF0aE9iamVjdC5yb290JyBtdXN0IGJlIGEgc3RyaW5nIG9yIHVuZGVmaW5lZCwgbm90ICIrdHlwZW9mIHJlLnJvb3QpO3JldHVybihyZS5kaXI/cmUuZGlyK0ouc2VwOiIiKSsocmUuYmFzZXx8IiIpfSxKLnBhcnNlPWZ1bmN0aW9uKHJlKXtpZighRC5pc1N0cmluZyhyZSkp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiUGFyYW1ldGVyICdwYXRoU3RyaW5nJyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgIit0eXBlb2YgcmUpO3ZhciBpZT1lZShyZSk7aWYoIWllfHw0IT09aWUubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgcGF0aCAnIityZSsiJyIpO3JldHVy''@;'; put 'put ''biBpZVsxXT1pZVsxXXx8IiIsaWVbMl09aWVbMl18fCIiLGllWzNdPWllWzNdfHwiIix7cm9vdDppZVswXSxkaXI6aWVbMF0raWVbMV0uc2xpY2UoMCwtMSksYmFzZTppZVsyXSxleHQ6aWVbM10sbmFtZTppZVsyXS5zbGljZSgwLGllWzJdLmxlbmd0aC1pZVszXS5sZW5ndGgpfX0sSi5zZXA9''@;'; put 'put ''Ii8iLEouZGVsaW1pdGVyPSI6IixNLmV4cG9ydHM9Rz9COkosTS5leHBvcnRzLnBvc2l4PUosTS5leHBvcnRzLndpbjMyPUJ9LDU2MzI6KE0sTyxJKT0+e08ucGJrZGYyPUkoODYzOCksTy5wYmtkZjJTeW5jPUkoMTI1Nyl9LDg2Mzg6KE0sTyxJKT0+e3ZhciBqLEcsRD1JKDk1MDkpLkJ1ZmZl''@;'; put 'put ''cixUPUkoNzM1NyksRT1JKDIzNjgpLHo9SSgxMjU3KSxOPUkoNzc3NyksQj1JLmcuY3J5cHRvJiZJLmcuY3J5cHRvLnN1YnRsZSxaPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hBLTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNI''@;'; put 'put ''QS0zODQiLCJzaGEtMzg0IjoiU0hBLTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxZPVtdO2Z1bmN0aW9uIFUoKXtyZXR1cm4gR3x8KEc9SS5nLnByb2Nlc3MmJkkuZy5wcm9jZXNzLm5leHRUaWNrP0kuZy5wcm9jZXNzLm5leHRUaWNrOkkuZy5xdWV1ZU1pY3Jv''@;'; put 'put ''dGFzaz9JLmcucXVldWVNaWNyb3Rhc2s6SS5nLnNldEltbWVkaWF0ZT9JLmcuc2V0SW1tZWRpYXRlOkkuZy5zZXRUaW1lb3V0KX1mdW5jdGlvbiBxKEosZWUscmUsaWUsdWUpe3JldHVybiBCLmltcG9ydEtleSgicmF3IixKLHtuYW1lOiJQQktERjIifSwhMSxbImRlcml2ZUJpdHMiXSkudGhl''@;'; put 'put ''bihmdW5jdGlvbihsZSl7cmV0dXJuIEIuZGVyaXZlQml0cyh7bmFtZToiUEJLREYyIixzYWx0OmVlLGl0ZXJhdGlvbnM6cmUsaGFzaDp7bmFtZTp1ZX19LGxlLGllPDwzKX0pLnRoZW4oZnVuY3Rpb24obGUpe3JldHVybiBELmZyb20obGUpfSl9TS5leHBvcnRzPWZ1bmN0aW9uKEosZWUscmUs''@;'; put 'put ''aWUsdWUsbGUpeyJmdW5jdGlvbiI9PXR5cGVvZiB1ZSYmKGxlPXVlLHVlPXZvaWQgMCk7dmFyIFcsYixhZT1aWyh1ZT11ZXx8InNoYTEiKS50b0xvd2VyQ2FzZSgpXTtpZihhZSYmImZ1bmN0aW9uIj09dHlwZW9mIEkuZy5Qcm9taXNlKXtpZihUKHJlLGllKSxKPU4oSixFLCJQYXNzd29yZCIp''@;'; put 'put ''LGVlPU4oZWUsRSwiU2FsdCIpLCJmdW5jdGlvbiIhPXR5cGVvZiBsZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpO1c9ZnVuY3Rpb24oVyl7aWYoSS5nLnByb2Nlc3MmJiFJLmcucHJvY2Vzcy5icm93c2VyfHwhQnx8IUIuaW1wb3J0S2V5fHwhQi5k''@;'; put 'put ''ZXJpdmVCaXRzKXJldHVybiBQcm9taXNlLnJlc29sdmUoITEpO2lmKHZvaWQgMCE9PVlbV10pcmV0dXJuIFlbV107dmFyIGI9cShqPWp8fEQuYWxsb2MoOCksaiwxMCwxMjgsVykudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pO3JldHVybiBZ''@;'; put 'put ''W1ddPWIsYn0oYWUpLnRoZW4oZnVuY3Rpb24oVyl7cmV0dXJuIFc/cShKLGVlLHJlLGllLGFlKTp6KEosZWUscmUsaWUsdWUpfSksYj1sZSxXLnRoZW4oZnVuY3Rpb24oQSl7VSgpKGZ1bmN0aW9uKCl7YihudWxsLEEpfSl9LGZ1bmN0aW9uKEEpe1UoKShmdW5jdGlvbigpe2IoQSl9KX0pfWVs''@;'; put 'put ''c2UgVSgpKGZ1bmN0aW9uKCl7dmFyIFc7dHJ5e1c9eihKLGVlLHJlLGllLHVlKX1jYXRjaChiKXtyZXR1cm4gbGUoYil9bGUobnVsbCxXKX0pfX0sMjM2ODooTSxPLEkpPT57dmFyIGosRz1JKDQxNTUpO2o9SS5nLnByb2Nlc3MmJkkuZy5wcm9jZXNzLmJyb3dzZXI/InV0Zi04IjpJLmcucHJv''@;'; put 'put ''Y2VzcyYmSS5nLnByb2Nlc3MudmVyc2lvbj9wYXJzZUludChHLnZlcnNpb24uc3BsaXQoIi4iKVswXS5zbGljZSgxKSwxMCk+PTY/InV0Zi04IjoiYmluYXJ5IjoidXRmLTgiLE0uZXhwb3J0cz1qfSw3MzU3Ok09Pnt2YXIgTz1NYXRoLnBvdygyLDMwKS0xO00uZXhwb3J0cz1mdW5jdGlvbihJ''@;'; put 'put ''LGope2lmKCJudW1iZXIiIT10eXBlb2YgSSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRpb25zIG5vdCBhIG51bWJlciIpO2lmKEk8MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJCYWQgaXRlcmF0aW9ucyIpO2lmKCJudW1iZXIiIT10eXBlb2Ygail0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXkg''@;'; put 'put ''bGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKGo8MHx8aj5PfHxqIT1qKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBrZXkgbGVuZ3RoIil9fSwxMjU3OihNLE8sSSk9Pnt2YXIgaj1JKDgwMjgpLEc9SSg5Nzg1KSxEPUkoOTA3MiksVD1JKDk1MDkpLkJ1ZmZlcixFPUkoNzM1Nyksej1JKDIzNjgp''@;'; put 'put ''LE49SSg3Nzc3KSxCPVQuYWxsb2MoMTI4KSxaPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07ZnVuY3Rpb24gWShVLHEsSil7dmFyIGVlPWZ1bmN0aW9uKFcpe3JldHVybiJybWQxNjAiPT09V3x8''@;'; put 'put ''InJpcGVtZDE2MCI9PT1XP2Z1bmN0aW9uIEEoRil7cmV0dXJuKG5ldyBHKS51cGRhdGUoRikuZGlnZXN0KCl9OiJtZDUiPT09Vz9qOmZ1bmN0aW9uIGIoRil7cmV0dXJuIEQoVykudXBkYXRlKEYpLmRpZ2VzdCgpfX0oVSkscmU9InNoYTUxMiI9PT1VfHwic2hhMzg0Ij09PVU/MTI4OjY0O3Eu''@;'; put 'put ''bGVuZ3RoPnJlP3E9ZWUocSk6cS5sZW5ndGg8cmUmJihxPVQuY29uY2F0KFtxLEJdLHJlKSk7Zm9yKHZhciBpZT1ULmFsbG9jVW5zYWZlKHJlK1pbVV0pLHVlPVQuYWxsb2NVbnNhZmUocmUrWltVXSksbGU9MDtsZTxyZTtsZSsrKWllW2xlXT01NF5xW2xlXSx1ZVtsZV09OTJecVtsZV07dmFy''@;'; put 'put ''IGFlPVQuYWxsb2NVbnNhZmUocmUrSis0KTtpZS5jb3B5KGFlLDAsMCxyZSksdGhpcy5pcGFkMT1hZSx0aGlzLmlwYWQyPWllLHRoaXMub3BhZD11ZSx0aGlzLmFsZz1VLHRoaXMuYmxvY2tzaXplPXJlLHRoaXMuaGFzaD1lZSx0aGlzLnNpemU9WltVXX1ZLnByb3RvdHlwZS5ydW49ZnVuY3Rp''@;'; put 'put ''b24oVSxxKXtyZXR1cm4gVS5jb3B5KHEsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaChxKS5jb3B5KHRoaXMub3BhZCx0aGlzLmJsb2Nrc2l6ZSksdGhpcy5oYXNoKHRoaXMub3BhZCl9LE0uZXhwb3J0cz1mdW5jdGlvbihVLHEsSixlZSxyZSl7RShKLGVlKTt2YXIgaWU9bmV3IFkocmU9cmV8''@;'; put 'put ''fCJzaGExIixVPU4oVSx6LCJQYXNzd29yZCIpLChxPU4ocSx6LCJTYWx0IikpLmxlbmd0aCksdWU9VC5hbGxvY1Vuc2FmZShlZSksbGU9VC5hbGxvY1Vuc2FmZShxLmxlbmd0aCs0KTtxLmNvcHkobGUsMCwwLHEubGVuZ3RoKTtmb3IodmFyIGFlPTAsVz1aW3JlXSxiPU1hdGguY2VpbChlZS9X''@;'; put 'put ''KSxBPTE7QTw9YjtBKyspe2xlLndyaXRlVUludDMyQkUoQSxxLmxlbmd0aCk7Zm9yKHZhciBGPWllLnJ1bihsZSxpZS5pcGFkMSksSD1GLGc9MTtnPEo7ZysrKXtIPWllLnJ1bihILGllLmlwYWQyKTtmb3IodmFyIEM9MDtDPFc7QysrKUZbQ11ePUhbQ119Ri5jb3B5KHVlLGFlKSxhZSs9V31y''@;'; put 'put ''ZXR1cm4gdWV9fSw3Nzc3OihNLE8sSSk9Pnt2YXIgaj1JKDk1MDkpLkJ1ZmZlcjtNLmV4cG9ydHM9ZnVuY3Rpb24oRyxELFQpe2lmKGouaXNCdWZmZXIoRykpcmV0dXJuIEc7aWYoInN0cmluZyI9PXR5cGVvZiBHKXJldHVybiBqLmZyb20oRyxEKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoRykp''@;'; put 'put ''cmV0dXJuIGouZnJvbShHLmJ1ZmZlcik7dGhyb3cgbmV3IFR5cGVFcnJvcihUKyIgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgdHlwZWQgYXJyYXkgb3IgYSBEYXRhVmlldyIpfX0sNDE1NTpNPT57dmFyIE8sSSxqPU0uZXhwb3J0cz17fTtmdW5jdGlvbiBHKCl7dGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gRCgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gVChKKXtpZihPPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChKLDApO2lmKChP''@;'; put 'put ''PT09R3x8IU8pJiZzZXRUaW1lb3V0KXJldHVybiBPPXNldFRpbWVvdXQsc2V0VGltZW91dChKLDApO3RyeXtyZXR1cm4gTyhKLDApfWNhdGNoe3RyeXtyZXR1cm4gTy5jYWxsKG51bGwsSiwwKX1jYXRjaHtyZXR1cm4gTy5jYWxsKHRoaXMsSiwwKX19fSFmdW5jdGlvbigpe3RyeXtPPSJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6R31jYXRjaHtPPUd9dHJ5e0k9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6RH1jYXRjaHtJPUR9fSgpO3ZhciBFLHo9W10sTj0hMSxCPS0xO2Z1bmN0aW9uIFooKXtOJiZFJiYoTj0hMSxFLmxl''@;'; put 'put ''bmd0aD96PUUuY29uY2F0KHopOkI9LTEsei5sZW5ndGgmJlkoKSl9ZnVuY3Rpb24gWSgpe2lmKCFOKXt2YXIgSj1UKFopO049ITA7Zm9yKHZhciBlZT16Lmxlbmd0aDtlZTspe2ZvcihFPXosej1bXTsrK0I8ZWU7KUUmJkVbQl0ucnVuKCk7Qj0tMSxlZT16Lmxlbmd0aH1FPW51bGwsTj0hMSxm''@;'; put 'put ''dW5jdGlvbihyZSl7aWYoST09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KHJlKTtpZigoST09PUR8fCFJKSYmY2xlYXJUaW1lb3V0KXJldHVybiBJPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQocmUpO3RyeXtyZXR1cm4gSShyZSl9Y2F0Y2h7dHJ5e3JldHVybiBJLmNhbGwo''@;'; put 'put ''bnVsbCxyZSl9Y2F0Y2h7cmV0dXJuIEkuY2FsbCh0aGlzLHJlKX19fShKKX19ZnVuY3Rpb24gVShKLGVlKXt0aGlzLmZ1bj1KLHRoaXMuYXJyYXk9ZWV9ZnVuY3Rpb24gcSgpe31qLm5leHRUaWNrPWZ1bmN0aW9uKEope3ZhciBlZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihh''@;'; put 'put ''cmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByZT0xO3JlPGFyZ3VtZW50cy5sZW5ndGg7cmUrKyllZVtyZS0xXT1hcmd1bWVudHNbcmVdO3oucHVzaChuZXcgVShKLGVlKSksMSE9PXoubGVuZ3RofHxOfHxUKFkpfSxVLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShu''@;'; put 'put ''dWxsLHRoaXMuYXJyYXkpfSxqLnRpdGxlPSJicm93c2VyIixqLmJyb3dzZXI9ITAsai5lbnY9e30sai5hcmd2PVtdLGoudmVyc2lvbj0iIixqLnZlcnNpb25zPXt9LGoub249cSxqLmFkZExpc3RlbmVyPXEsai5vbmNlPXEsai5vZmY9cSxqLnJlbW92ZUxpc3RlbmVyPXEsai5yZW1vdmVBbGxM''@;'; put 'put ''aXN0ZW5lcnM9cSxqLmVtaXQ9cSxqLnByZXBlbmRMaXN0ZW5lcj1xLGoucHJlcGVuZE9uY2VMaXN0ZW5lcj1xLGoubGlzdGVuZXJzPWZ1bmN0aW9uKEope3JldHVybltdfSxqLmJpbmRpbmc9ZnVuY3Rpb24oSil7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBv''@;'; put 'put ''cnRlZCIpfSxqLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sai5jaGRpcj1mdW5jdGlvbihKKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxqLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSw2MjQ0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIGo9SSgzNjg5KSxHPXt9O0cucnVsZXM9SSgzNzA0KS5tYXAoZnVuY3Rpb24oRCl7cmV0dXJue3J1bGU6RCxzdWZmaXg6RC5yZXBsYWNlKC9eKFwqXC58XCEpLywiIikscHVueVN1ZmZpeDotMSx3aWxkY2FyZDoiKiI9PT1ELmNoYXJBdCgwKSxleGNlcHRpb246IiEiPT09RC5jaGFyQXQo''@;'; put 'put ''MCl9fSksRy5lbmRzV2l0aD1mdW5jdGlvbihELFQpe3JldHVybi0xIT09RC5pbmRleE9mKFQsRC5sZW5ndGgtVC5sZW5ndGgpfSxHLmZpbmRSdWxlPWZ1bmN0aW9uKEQpe3ZhciBUPWoudG9BU0NJSShEKTtyZXR1cm4gRy5ydWxlcy5yZWR1Y2UoZnVuY3Rpb24oRSx6KXtyZXR1cm4tMT09PXou''@;'; put 'put ''cHVueVN1ZmZpeCYmKHoucHVueVN1ZmZpeD1qLnRvQVNDSUkoei5zdWZmaXgpKSxHLmVuZHNXaXRoKFQsIi4iK3oucHVueVN1ZmZpeCl8fFQ9PT16LnB1bnlTdWZmaXg/ejpFfSxudWxsKX0sTy5lcnJvckNvZGVzPXtET01BSU5fVE9PX1NIT1JUOiJEb21haW4gbmFtZSB0b28gc2hvcnQuIixE''@;'; put 'put ''T01BSU5fVE9PX0xPTkc6IkRvbWFpbiBuYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFycy4iLExBQkVMX1NUQVJUU19XSVRIX0RBU0g6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBub3Qgc3RhcnQgd2l0aCBhIGRhc2guIixMQUJFTF9FTkRTX1dJVEhfREFT''@;'; put 'put ''SDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBlbmQgd2l0aCBhIGRhc2guIixMQUJFTF9UT09fTE9ORzoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IG1vc3QgNjMgY2hhcnMgbG9uZy4iLExBQkVMX1RPT19TSE9SVDoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IGxl''@;'; put 'put ''YXN0IDEgY2hhcmFjdGVyIGxvbmcuIixMQUJFTF9JTlZBTElEX0NIQVJTOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIGRhc2hlcy4ifSxHLnZhbGlkYXRlPWZ1bmN0aW9uKEQpe3ZhciBUPWoudG9BU0NJSShEKTtpZihULmxl''@;'; put 'put ''bmd0aDwxKXJldHVybiJET01BSU5fVE9PX1NIT1JUIjtpZihULmxlbmd0aD4yNTUpcmV0dXJuIkRPTUFJTl9UT09fTE9ORyI7Zm9yKHZhciBFLHo9VC5zcGxpdCgiLiIpLE49MDtOPHoubGVuZ3RoOysrTil7aWYoIShFPXpbTl0pLmxlbmd0aClyZXR1cm4iTEFCRUxfVE9PX1NIT1JUIjtpZihF''@;'; put 'put ''Lmxlbmd0aD42MylyZXR1cm4iTEFCRUxfVE9PX0xPTkciO2lmKCItIj09PUUuY2hhckF0KDApKXJldHVybiJMQUJFTF9TVEFSVFNfV0lUSF9EQVNIIjtpZigiLSI9PT1FLmNoYXJBdChFLmxlbmd0aC0xKSlyZXR1cm4iTEFCRUxfRU5EU19XSVRIX0RBU0giO2lmKCEvXlthLXowLTlcLV0rJC8u''@;'; put 'put ''dGVzdChFKSlyZXR1cm4iTEFCRUxfSU5WQUxJRF9DSEFSUyJ9fSxPLnBhcnNlPWZ1bmN0aW9uKEQpe2lmKCJzdHJpbmciIT10eXBlb2YgRCl0aHJvdyBuZXcgVHlwZUVycm9yKCJEb21haW4gbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpO3ZhciBUPUQuc2xpY2UoMCkudG9Mb3dlckNhc2UoKTsi''@;'; put 'put ''LiI9PT1ULmNoYXJBdChULmxlbmd0aC0xKSYmKFQ9VC5zbGljZSgwLFQubGVuZ3RoLTEpKTt2YXIgRT1HLnZhbGlkYXRlKFQpO2lmKEUpcmV0dXJue2lucHV0OkQsZXJyb3I6e21lc3NhZ2U6Ty5lcnJvckNvZGVzW0VdLGNvZGU6RX19O3ZhciB6PXtpbnB1dDpELHRsZDpudWxsLHNsZDpudWxs''@;'; put 'put ''LGRvbWFpbjpudWxsLHN1YmRvbWFpbjpudWxsLGxpc3RlZDohMX0sTj1ULnNwbGl0KCIuIik7aWYoImxvY2FsIj09PU5bTi5sZW5ndGgtMV0pcmV0dXJuIHo7dmFyIEI9ZnVuY3Rpb24oKXtyZXR1cm4veG4tLS8udGVzdChUKSYmKHouZG9tYWluJiYoei5kb21haW49ai50b0FTQ0lJKHouZG9t''@;'; put 'put ''YWluKSksei5zdWJkb21haW4mJih6LnN1YmRvbWFpbj1qLnRvQVNDSUkoei5zdWJkb21haW4pKSksen0sWj1HLmZpbmRSdWxlKFQpO2lmKCFaKXJldHVybiBOLmxlbmd0aDwyP3o6KHoudGxkPU4ucG9wKCksei5zbGQ9Ti5wb3AoKSx6LmRvbWFpbj1bei5zbGQsei50bGRdLmpvaW4oIi4iKSxO''@;'; put 'put ''Lmxlbmd0aCYmKHouc3ViZG9tYWluPU4ucG9wKCkpLEIoKSk7ei5saXN0ZWQ9ITA7dmFyIFk9Wi5zdWZmaXguc3BsaXQoIi4iKSxVPU4uc2xpY2UoMCxOLmxlbmd0aC1ZLmxlbmd0aCk7cmV0dXJuIFouZXhjZXB0aW9uJiZVLnB1c2goWS5zaGlmdCgpKSx6LnRsZD1ZLmpvaW4oIi4iKSxVLmxl''@;'; put 'put ''bmd0aD8oWi53aWxkY2FyZCYmKFkudW5zaGlmdChVLnBvcCgpKSx6LnRsZD1ZLmpvaW4oIi4iKSksVS5sZW5ndGgmJih6LnNsZD1VLnBvcCgpLHouZG9tYWluPVt6LnNsZCx6LnRsZF0uam9pbigiLiIpLFUubGVuZ3RoJiYoei5zdWJkb21haW49VS5qb2luKCIuIikpKSxCKCkpOkIoKX0sTy5n''@;'; put 'put ''ZXQ9ZnVuY3Rpb24oRCl7cmV0dXJuIEQmJk8ucGFyc2UoRCkuZG9tYWlufHxudWxsfSxPLmlzVmFsaWQ9ZnVuY3Rpb24oRCl7dmFyIFQ9Ty5wYXJzZShEKTtyZXR1cm4hKCFULmRvbWFpbnx8IVQubGlzdGVkKX19LDc5MDA6KE0sTyxJKT0+e08ucHVibGljRW5jcnlwdD1JKDY1NTkpLE8ucHJp''@;'; put 'put ''dmF0ZURlY3J5cHQ9SSg2MTM4KSxPLnByaXZhdGVFbmNyeXB0PWZ1bmN0aW9uKGosRyl7cmV0dXJuIE8ucHVibGljRW5jcnlwdChqLEcsITApfSxPLnB1YmxpY0RlY3J5cHQ9ZnVuY3Rpb24oaixHKXtyZXR1cm4gTy5wcml2YXRlRGVjcnlwdChqLEcsITApfX0sOTE5OTooTSxPLEkpPT57dmFy''@;'; put 'put ''IGo9SSgzNDgyKSxHPUkoOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIEQoVCl7dmFyIEU9Ry5hbGxvY1Vuc2FmZSg0KTtyZXR1cm4gRS53cml0ZVVJbnQzMkJFKFQsMCksRX1NLmV4cG9ydHM9ZnVuY3Rpb24oVCxFKXtmb3IodmFyIHosTj1HLmFsbG9jKDApLEI9MDtOLmxlbmd0aDxFOyl6PUQoQisr''@;'; put 'put ''KSxOPUcuY29uY2F0KFtOLGooInNoYTEiKS51cGRhdGUoVCkudXBkYXRlKHopLmRpZ2VzdCgpXSk7cmV0dXJuIE4uc2xpY2UoMCxFKX19LDIxNDQ6ZnVuY3Rpb24oTSxPLEkpeyFmdW5jdGlvbihqLEcpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBEKGcsQyl7aWYoIWcpdGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KEN8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gVChnLEMpe2cuc3VwZXJfPUM7dmFyIGs9ZnVuY3Rpb24oKXt9O2sucHJvdG90eXBlPUMucHJvdG90eXBlLGcucHJvdG90eXBlPW5ldyBrLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWd9ZnVuY3Rpb24gRShnLEMsayl7aWYoRS5pc0JO''@;'; put 'put ''KGcpKXJldHVybiBnO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1nJiYoImxlIiE9PUMmJiJiZSIhPT1DfHwoaz1DLEM9MTApLHRoaXMuX2luaXQoZ3x8MCxDfHwxMCxrfHwiYmUiKSl9dmFyIHo7Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBqP2ouZXhwb3J0cz1FOkcuQk49RSxFLkJOPUUsRS53b3JkU2l6ZT0yNjt0cnl7ej10eXBlb2Ygd2luZG93PCJ1IiYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93aW5kb3cuQnVmZmVyOkkoNzEwOCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBOKGcsQyl7dmFyIGs9Zy5jaGFyQ29kZUF0''@;'; put 'put ''KEMpO3JldHVybiBrPj02NSYmazw9NzA/ay01NTprPj05NyYmazw9MTAyP2stODc6ay00OCYxNX1mdW5jdGlvbiBCKGcsQyxrKXt2YXIgXz1OKGcsayk7cmV0dXJuIGstMT49QyYmKF98PU4oZyxrLTEpPDw0KSxffWZ1bmN0aW9uIFooZyxDLGssXyl7Zm9yKHZhciBwPTAsdz1NYXRoLm1pbihn''@;'; put 'put ''Lmxlbmd0aCxrKSxLPUM7Szx3O0srKyl7dmFyIHRlPWcuY2hhckNvZGVBdChLKS00ODtwKj1fLHArPXRlPj00OT90ZS00OSsxMDp0ZT49MTc/dGUtMTcrMTA6dGV9cmV0dXJuIHB9RS5pc0JOPWZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgRXx8bnVsbCE9PWcmJiJvYmplY3QiPT10''@;'; put 'put ''eXBlb2YgZyYmZy5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUUud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZy53b3Jkcyl9LEUubWF4PWZ1bmN0aW9uKGcsQyl7cmV0dXJuIGcuY21wKEMpPjA/ZzpDfSxFLm1pbj1mdW5jdGlvbihnLEMpe3JldHVybiBnLmNtcChDKTwwP2c6Q30sRS5wcm90b3R5''@;'; put 'put ''cGUuX2luaXQ9ZnVuY3Rpb24oZyxDLGspe2lmKCJudW1iZXIiPT10eXBlb2YgZylyZXR1cm4gdGhpcy5faW5pdE51bWJlcihnLEMsayk7aWYoIm9iamVjdCI9PXR5cGVvZiBnKXJldHVybiB0aGlzLl9pbml0QXJyYXkoZyxDLGspOyJoZXgiPT09QyYmKEM9MTYpLEQoQz09PSgwfEMpJiZDPj0y''@;'; put 'put ''JiZDPD0zNik7dmFyIF89MDsiLSI9PT0oZz1nLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKF8rKyx0aGlzLm5lZ2F0aXZlPTEpLF88Zy5sZW5ndGgmJigxNj09PUM/dGhpcy5fcGFyc2VIZXgoZyxfLGspOih0aGlzLl9wYXJzZUJhc2UoZyxDLF8pLCJsZSI9PT1rJiZ0aGlz''@;'; put 'put ''Ll9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQyxrKSkpfSxFLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihnLEMsayl7ZzwwJiYodGhpcy5uZWdhdGl2ZT0xLGc9LWcpLGc8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmddLHRoaXMubGVuZ3RoPTEpOmc8NDUwMzU5OTYy''@;'; put 'put ''NzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZyxnLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKTooRChnPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmcsZy82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ayYmdGhp''@;'; put 'put ''cy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEMsayl9LEUucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZyxDLGspe2lmKEQoIm51bWJlciI9PXR5cGVvZiBnLmxlbmd0aCksZy5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxl''@;'; put 'put ''bmd0aD1NYXRoLmNlaWwoZy5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgXz0wO188dGhpcy5sZW5ndGg7XysrKXRoaXMud29yZHNbX109MDt2YXIgcCx3LEs9MDtpZigiYmUiPT09aylmb3IoXz1nLmxlbmd0aC0xLHA9MDtfPj0wO18tPTMpdGhp''@;'; put 'put ''cy53b3Jkc1twXXw9KHc9Z1tfXXxnW18tMV08PDh8Z1tfLTJdPDwxNik8PEsmNjcxMDg4NjMsdGhpcy53b3Jkc1twKzFdPXc+Pj4yNi1LJjY3MTA4ODYzLChLKz0yNCk+PTI2JiYoSy09MjYscCsrKTtlbHNlIGlmKCJsZSI9PT1rKWZvcihfPTAscD0wO188Zy5sZW5ndGg7Xys9Myl0aGlzLndv''@;'; put 'put ''cmRzW3BdfD0odz1nW19dfGdbXysxXTw8OHxnW18rMl08PDE2KTw8SyY2NzEwODg2Myx0aGlzLndvcmRzW3ArMV09dz4+PjI2LUsmNjcxMDg4NjMsKEsrPTI0KT49MjYmJihLLT0yNixwKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihnLEMs''@;'; put 'put ''ayl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChnLmxlbmd0aC1DKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBfPTA7Xzx0aGlzLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT0wO3ZhciBwLHc9MCxLPTA7aWYoImJlIj09PWspZm9yKF89Zy5sZW5ndGgtMTtf''@;'; put 'put ''Pj1DO18tPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndvcmRzW0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0aGlzLndvcmRzW0srPTFdfD1wPj4+MjYpOncrPTg7ZWxzZSBmb3IoXz0oZy5sZW5ndGgtQyklMj09MD9DKzE6QztfPGcubGVuZ3RoO18rPTIpcD1CKGcsQyxfKTw8dyx0aGlzLndv''@;'; put 'put ''cmRzW0tdfD02NzEwODg2MyZwLHc+PTE4Pyh3LT0xOCx0aGlzLndvcmRzW0srPTFdfD1wPj4+MjYpOncrPTg7dGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGcsQyxrKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgXz0wLHA9MTtwPD02''@;'; put 'put ''NzEwODg2MztwKj1DKV8rKztfLS0scD1wL0N8MDtmb3IodmFyIHc9Zy5sZW5ndGgtayxLPXclXyx0ZT1NYXRoLm1pbih3LHctSykrayxjZT0wLGhlPWs7aGU8dGU7aGUrPV8pY2U9WihnLGhlLGhlK18sQyksdGhpcy5pbXVsbihwKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29y''@;'; put 'put ''ZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNlKTtpZigwIT09Syl7dmFyIFNlPTE7Zm9yKGNlPVooZyxoZSxnLmxlbmd0aCxDKSxoZT0wO2hlPEs7aGUrKylTZSo9Qzt0aGlzLmltdWxuKFNlKSx0aGlzLndvcmRzWzBdK2NlPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPWNlOnRoaXMuX2lhZGRuKGNl''@;'; put 'put ''KX10aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZyl7Zy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGg7QysrKWcud29yZHNbQ109dGhpcy53b3Jkc1tDXTtnLmxlbmd0aD10aGlzLmxlbmd0aCxnLm5lZ2F0aXZlPXRo''@;'; put 'put ''aXMubmVnYXRpdmUsZy5yZWQ9dGhpcy5yZWR9LEUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGc9bmV3IEUobnVsbCk7cmV0dXJuIHRoaXMuY29weShnKSxnfSxFLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGcpe2Zvcig7dGhpcy5sZW5ndGg8ZzspdGhpcy53b3Jkc1t0aGlz''@;'; put 'put ''Lmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxFLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LEUucHJvdG90eXBlLl9ub3JtU2ln''@;'; put 'put ''bj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxFLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsi''@;'; put 'put ''PiJ9O3ZhciBZPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLFU9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUs''@;'; put 'put ''NV0scT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgx''@;'; put 'put ''LDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBKKGcsQyxrKXtrLm5l''@;'; put 'put ''Z2F0aXZlPUMubmVnYXRpdmVeZy5uZWdhdGl2ZTt2YXIgXz1nLmxlbmd0aCtDLmxlbmd0aHwwO2subGVuZ3RoPV8sXz1fLTF8MDt2YXIgcD0wfGcud29yZHNbMF0sdz0wfEMud29yZHNbMF0sSz1wKncsY2U9Sy82NzEwODg2NHwwO2sud29yZHNbMF09NjcxMDg4NjMmSztmb3IodmFyIGhlPTE7''@;'; put 'put ''aGU8XztoZSsrKXtmb3IodmFyIFNlPWNlPj4+MjYsTGU9NjcxMDg4NjMmY2UsSGU9TWF0aC5taW4oaGUsQy5sZW5ndGgtMSkseGU9TWF0aC5tYXgoMCxoZS1nLmxlbmd0aCsxKTt4ZTw9SGU7eGUrKylTZSs9KEs9KHA9MHxnLndvcmRzW2hlLXhlfDBdKSoodz0wfEMud29yZHNbeGVdKStMZSkv''@;'; put 'put ''NjcxMDg4NjR8MCxMZT02NzEwODg2MyZLO2sud29yZHNbaGVdPTB8TGUsY2U9MHxTZX1yZXR1cm4gMCE9PWNlP2sud29yZHNbaGVdPTB8Y2U6ay5sZW5ndGgtLSxrLnN0cmlwKCl9RS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZyxDKXt2YXIgaztpZihDPTB8Q3x8MSwxNj09PShnPWd8''@;'; put 'put ''fDEwKXx8ImhleCI9PT1nKXtrPSIiO2Zvcih2YXIgXz0wLHA9MCx3PTA7dzx0aGlzLmxlbmd0aDt3Kyspe3ZhciBLPXRoaXMud29yZHNbd10sdGU9KDE2Nzc3MjE1JihLPDxffHApKS50b1N0cmluZygxNik7az0wIT0ocD1LPj4+MjQtXyYxNjc3NzIxNSl8fHchPT10aGlzLmxlbmd0aC0xP1lb''@;'; put 'put ''Ni10ZS5sZW5ndGhdK3RlK2s6dGUraywoXys9Mik+PTI2JiYoXy09MjYsdy0tKX1mb3IoMCE9PXAmJihrPXAudG9TdHJpbmcoMTYpK2spO2subGVuZ3RoJUMhPTA7KWs9IjAiK2s7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoaz0iLSIrayksa31pZihnPT09KDB8ZykmJmc+PTImJmc8PTM2''@;'; put 'put ''KXt2YXIgY2U9VVtnXSxoZT1xW2ddO2s9IiI7dmFyIFNlPXRoaXMuY2xvbmUoKTtmb3IoU2UubmVnYXRpdmU9MDshU2UuaXNaZXJvKCk7KXt2YXIgTGU9U2UubW9kbihoZSkudG9TdHJpbmcoZyk7az0oU2U9U2UuaWRpdm4oaGUpKS5pc1plcm8oKT9MZStrOllbY2UtTGUubGVuZ3RoXStMZStr''@;'; put 'put ''fWZvcih0aGlzLmlzWmVybygpJiYoaz0iMCIrayk7ay5sZW5ndGglQyE9MDspaz0iMCIraztyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihrPSItIitrKSxrfUQoITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sRS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgZz10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Zys9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2crPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZEKCEx''@;'; put 'put ''LCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tZzpnfSxFLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LEUucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGcsQyl7cmV0''@;'; put 'put ''dXJuIEQodm9pZCAwIT09eiksdGhpcy50b0FycmF5TGlrZSh6LGcsQyl9LEUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxnLEMpfSxFLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihnLEMsayl7dmFyIF89dGhpcy5i''@;'; put 'put ''eXRlTGVuZ3RoKCkscD1rfHxNYXRoLm1heCgxLF8pO0QoXzw9cCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLEQocD4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIHcsSyx0ZT0ibGUiPT09QyxjZT1uZXcgZyhwKSxoZT10''@;'; put 'put ''aGlzLmNsb25lKCk7aWYodGUpe2ZvcihLPTA7IWhlLmlzWmVybygpO0srKyl3PWhlLmFuZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNlW0tdPXc7Zm9yKDtLPHA7SysrKWNlW0tdPTB9ZWxzZXtmb3IoSz0wO0s8cC1fO0srKyljZVtLXT0wO2ZvcihLPTA7IWhlLmlzWmVybygpO0srKyl3PWhlLmFu''@;'; put 'put ''ZGxuKDI1NSksaGUuaXVzaHJuKDgpLGNlW3AtSy0xXT13fXJldHVybiBjZX0sRS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGcpe3JldHVybiAzMi1NYXRoLmNsejMyKGcpfTpmdW5jdGlvbihnKXt2YXIgQz1nLGs9MDtyZXR1cm4gQz49NDA5NiYmKGsrPTEzLEM+''@;'; put 'put ''Pj49MTMpLEM+PTY0JiYoays9NyxDPj4+PTcpLEM+PTgmJihrKz00LEM+Pj49NCksQz49MiYmKGsrPTIsQz4+Pj0yKSxrK0N9LEUucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihnKXtpZigwPT09ZylyZXR1cm4gMjY7dmFyIEM9ZyxrPTA7cmV0dXJuISg4MTkxJkMpJiYoays9MTMsQz4+''@;'; put 'put ''Pj0xMyksISgxMjcmQykmJihrKz03LEM+Pj49NyksISgxNSZDKSYmKGsrPTQsQz4+Pj00KSwhKDMmQykmJihrKz0yLEM+Pj49MiksISgxJkMpJiZrKyssa30sRS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5n''@;'; put 'put ''dGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrQ30sRS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZz0wLEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tDXSk7''@;'; put 'put ''aWYoZys9aywyNiE9PWspYnJlYWt9cmV0dXJuIGd9LEUucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LEUucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihnKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5h''@;'; put 'put ''YnMoKS5pbm90bihnKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LEUucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnRlc3RuKGctMSk/dGhpcy5ub3RuKGcpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LEUucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxFLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sRS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sRS5wcm90b3R5''@;'; put 'put ''cGUuaXVvcj1mdW5jdGlvbihnKXtmb3IoO3RoaXMubGVuZ3RoPGcubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBDPTA7QzxnLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT10aGlzLndvcmRzW0NdfGcud29yZHNbQ107cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5w''@;'; put 'put ''cm90b3R5cGUuaW9yPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdhdGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGcpfSxFLnByb3RvdHlwZS5vcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihnKTpnLmNsb25lKCkuaW9y''@;'; put 'put ''KHRoaXMpfSxFLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGcpOmcuY2xvbmUoKS5pdW9yKHRoaXMpfSxFLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihnKXt2YXIgQztDPXRoaXMubGVuZ3RoPmcubGVuZ3Ro''@;'; put 'put ''P2c6dGhpcztmb3IodmFyIGs9MDtrPEMubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPXRoaXMud29yZHNba10mZy53b3Jkc1trXTtyZXR1cm4gdGhpcy5sZW5ndGg9Qy5sZW5ndGgsdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGcpe3JldHVybiBEKCEodGhpcy5uZWdh''@;'; put 'put ''dGl2ZXxnLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChnKX0sRS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChnKTpnLmNsb25lKCkuaWFuZCh0aGlzKX0sRS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihnKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGcpOmcuY2xvbmUoKS5pdWFuZCh0aGlzKX0sRS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZyl7dmFyIEMsazt0aGlzLmxlbmd0aD5nLmxlbmd0aD8oQz10aGlzLGs9Zyk6KEM9ZyxrPXRoaXMpO2Zvcih2YXIgXz0w''@;'; put 'put ''O188ay5sZW5ndGg7XysrKXRoaXMud29yZHNbX109Qy53b3Jkc1tfXV5rLndvcmRzW19dO2lmKHRoaXMhPT1DKWZvcig7XzxDLmxlbmd0aDtfKyspdGhpcy53b3Jkc1tfXT1DLndvcmRzW19dO3JldHVybiB0aGlzLmxlbmd0aD1DLmxlbmd0aCx0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLml4''@;'; put 'put ''b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIEQoISh0aGlzLm5lZ2F0aXZlfGcubmVnYXRpdmUpKSx0aGlzLml1eG9yKGcpfSxFLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubGVuZ3RoPmcubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGcpOmcuY2xvbmUoKS5peG9yKHRoaXMp''@;'; put 'put ''fSxFLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxlbmd0aD5nLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoZyk6Zy5jbG9uZSgpLml1eG9yKHRoaXMpfSxFLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihnKXtEKCJudW1iZXIiPT10eXBlb2YgZyYmZz49MCk7dmFy''@;'; put 'put ''IEM9MHxNYXRoLmNlaWwoZy8yNiksaz1nJTI2O3RoaXMuX2V4cGFuZChDKSxrPjAmJkMtLTtmb3IodmFyIF89MDtfPEM7XysrKXRoaXMud29yZHNbX109NjcxMDg4NjMmfnRoaXMud29yZHNbX107cmV0dXJuIGs+MCYmKHRoaXMud29yZHNbX109fnRoaXMud29yZHNbX10mNjcxMDg4NjM+PjI2''@;'; put 'put ''LWspLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGcpfSxFLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGcsQyl7RCgibnVtYmVyIj09dHlwZW9mIGcmJmc+PTApO3ZhciBrPWcvMjZ8MCxfPWclMjY7cmV0dXJuIHRo''@;'; put 'put ''aXMuX2V4cGFuZChrKzEpLHRoaXMud29yZHNba109Qz90aGlzLndvcmRzW2tdfDE8PF86dGhpcy53b3Jkc1trXSZ+KDE8PF8pLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihnKXt2YXIgQyxrLF87aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlKXJl''@;'; put 'put ''dHVybiB0aGlzLm5lZ2F0aXZlPTAsQz10aGlzLmlzdWIoZyksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Zy5uZWdhdGl2ZSlyZXR1cm4gZy5uZWdhdGl2ZT0wLEM9dGhpcy5pc3ViKGcpLGcubmVnYXRpdmU9MSxDLl9ub3JtU2ln''@;'; put 'put ''bigpO3RoaXMubGVuZ3RoPmcubGVuZ3RoPyhrPXRoaXMsXz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciBwPTAsdz0wO3c8Xy5sZW5ndGg7dysrKXRoaXMud29yZHNbd109NjcxMDg4NjMmKEM9KDB8ay53b3Jkc1t3XSkrKDB8Xy53b3Jkc1t3XSkrcCkscD1DPj4+MjY7Zm9yKDswIT09cCYmdzxr''@;'; put 'put ''Lmxlbmd0aDt3KyspdGhpcy53b3Jkc1t3XT02NzEwODg2MyYoQz0oMHxrLndvcmRzW3ddKStwKSxwPUM+Pj4yNjtpZih0aGlzLmxlbmd0aD1rLmxlbmd0aCwwIT09cCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1wLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihrIT09dGhpcylmb3IoO3c8ay5sZW5n''@;'; put 'put ''dGg7dysrKXRoaXMud29yZHNbd109ay53b3Jkc1t3XTtyZXR1cm4gdGhpc30sRS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGcpe3ZhciBDO3JldHVybiAwIT09Zy5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGcubmVnYXRpdmU9MCxDPXRoaXMuc3ViKGcpLGcubmVnYXRpdmVePTEsQyk6''@;'; put 'put ''MD09PWcubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsQz1nLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsQyk6dGhpcy5sZW5ndGg+Zy5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoZyk6Zy5jbG9uZSgpLmlhZGQodGhpcyl9LEUucHJvdG90eXBlLmlzdWI9''@;'; put 'put ''ZnVuY3Rpb24oZyl7aWYoMCE9PWcubmVnYXRpdmUpe2cubmVnYXRpdmU9MDt2YXIgQz10aGlzLmlhZGQoZyk7cmV0dXJuIGcubmVnYXRpdmU9MSxDLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKGcpLHRoaXMubmVnYXRp''@;'; put 'put ''dmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBrLF8scD10aGlzLmNtcChnKTtpZigwPT09cClyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7cD4wPyhrPXRoaXMsXz1nKTooaz1nLF89dGhpcyk7Zm9yKHZhciB3PTAsSz0wO0s8Xy5sZW5n''@;'; put 'put ''dGg7SysrKXc9KEM9KDB8ay53b3Jkc1tLXSktKDB8Xy53b3Jkc1tLXSkrdyk+PjI2LHRoaXMud29yZHNbS109NjcxMDg4NjMmQztmb3IoOzAhPT13JiZLPGsubGVuZ3RoO0srKyl3PShDPSgwfGsud29yZHNbS10pK3cpPj4yNix0aGlzLndvcmRzW0tdPTY3MTA4ODYzJkM7aWYoMD09PXcmJks8''@;'; put 'put ''ay5sZW5ndGgmJmshPT10aGlzKWZvcig7SzxrLmxlbmd0aDtLKyspdGhpcy53b3Jkc1tLXT1rLndvcmRzW0tdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxLKSxrIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxFLnByb3RvdHlwZS5zdWI9''@;'; put 'put ''ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGcpfTt2YXIgZWU9ZnVuY3Rpb24oZyxDLGspe3ZhciBfLHAsdyxLPWcud29yZHMsdGU9Qy53b3JkcyxjZT1rLndvcmRzLGhlPTAsU2U9MHxLWzBdLExlPTgxOTEmU2UsSGU9U2U+Pj4xMyx4ZT0wfEtbMV0sRGU9ODE5MSZ4ZSxC''@;'; put 'put ''ZT14ZT4+PjEzLEdlPTB8S1syXSxVZT04MTkxJkdlLHFlPUdlPj4+MTMsb3Q9MHxLWzNdLEZlPTgxOTEmb3Qsd2U9b3Q+Pj4xMyxFZT0wfEtbNF0sSWU9ODE5MSZFZSxYZT1FZT4+PjEzLHR0PTB8S1s1XSxaZT04MTkxJnR0LGN0PXR0Pj4+MTMsa2U9MHxLWzZdLEFlPTgxOTEma2UsamU9a2U+''@;'; put 'put ''Pj4xMyxpdD0wfEtbN10sc3Q9ODE5MSZpdCx4dD1pdD4+PjEzLEZ0PTB8S1s4XSxPdD04MTkxJkZ0LEt0PUZ0Pj4+MTMsYm49MHxLWzldLEJ0PTgxOTEmYm4seW49Ym4+Pj4xMyxObj0wfHRlWzBdLG5uPTgxOTEmTm4sR249Tm4+Pj4xMyxZbj0wfHRlWzFdLGZ0PTgxOTEmWW4sZG49WW4+Pj4x''@;'; put 'put ''Myxobj0wfHRlWzJdLHd0PTgxOTEmaG4sanQ9aG4+Pj4xMyxtdD0wfHRlWzNdLEh0PTgxOTEmbXQscG49bXQ+Pj4xMyxudD0wfHRlWzRdLEV0PTgxOTEmbnQsZW49bnQ+Pj4xMyxUdD0wfHRlWzVdLHl0PTgxOTEmVHQsJHQ9VHQ+Pj4xMyx4bj0wfHRlWzZdLHp0PTgxOTEmeG4sX249eG4+Pj4x''@;'; put 'put ''MyxPbj0wfHRlWzddLHJuPTgxOTEmT24sUG49T24+Pj4xMyxDbj0wfHRlWzhdLFh0PTgxOTEmQ24sSm49Q24+Pj4xMyx4aT0wfHRlWzldLGFuPTgxOTEmeGksdG49eGk+Pj4xMztrLm5lZ2F0aXZlPWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD0xOTt2YXIgdWk9KGhlKyhfPU1hdGgu''@;'; put 'put ''aW11bChMZSxubikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoTGUsR24pKStNYXRoLmltdWwoSGUsbm4pfDApKTw8MTMpfDA7aGU9KCh3PU1hdGguaW11bChIZSxHbikpKyhwPj4+MTMpfDApKyh1aT4+PjI2KXwwLHVpJj02NzEwODg2MyxfPU1hdGguaW11bChEZSxubikscD0ocD1NYXRo''@;'; put 'put ''LmltdWwoRGUsR24pKStNYXRoLmltdWwoQmUsbm4pfDAsdz1NYXRoLmltdWwoQmUsR24pO3ZhciBBcj0oaGUrKF89XytNYXRoLmltdWwoTGUsZnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxkbil8MCkrTWF0aC5pbXVsKEhlLGZ0KXwwKSk8PDEzKXwwO2hlPSgodz13K01h''@;'; put 'put ''dGguaW11bChIZSxkbil8MCkrKHA+Pj4xMyl8MCkrKEFyPj4+MjYpfDAsQXImPTY3MTA4ODYzLF89TWF0aC5pbXVsKFVlLG5uKSxwPShwPU1hdGguaW11bChVZSxHbikpK01hdGguaW11bChxZSxubil8MCx3PU1hdGguaW11bChxZSxHbiksXz1fK01hdGguaW11bChEZSxmdCl8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKERlLGRuKXwwKStNYXRoLmltdWwoQmUsZnQpfDAsdz13K01hdGguaW11bChCZSxkbil8MDt2YXIgaHI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHd0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsanQpfDApK01hdGguaW11bChIZSx3dCl8MCkpPDwxMyl8MDto''@;'; put 'put ''ZT0oKHc9dytNYXRoLmltdWwoSGUsanQpfDApKyhwPj4+MTMpfDApKyhocj4+PjI2KXwwLGhyJj02NzEwODg2MyxfPU1hdGguaW11bChGZSxubikscD0ocD1NYXRoLmltdWwoRmUsR24pKStNYXRoLmltdWwod2Usbm4pfDAsdz1NYXRoLmltdWwod2UsR24pLF89XytNYXRoLmltdWwoVWUsZnQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChVZSxkbil8MCkrTWF0aC5pbXVsKHFlLGZ0KXwwLHc9dytNYXRoLmltdWwocWUsZG4pfDAsXz1fK01hdGguaW11bChEZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGp0KXwwKStNYXRoLmltdWwoQmUsd3QpfDAsdz13K01hdGguaW11bChCZSxqdCl8MDt2''@;'; put 'put ''YXIgZGk9KGhlKyhfPV8rTWF0aC5pbXVsKExlLEh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUscG4pfDApK01hdGguaW11bChIZSxIdCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUscG4pfDApKyhwPj4+MTMpfDApKyhkaT4+PjI2KXwwLGRpJj02NzEwODg2''@;'; put 'put ''MyxfPU1hdGguaW11bChJZSxubikscD0ocD1NYXRoLmltdWwoSWUsR24pKStNYXRoLmltdWwoWGUsbm4pfDAsdz1NYXRoLmltdWwoWGUsR24pLF89XytNYXRoLmltdWwoRmUsZnQpfDAscD0ocD1wK01hdGguaW11bChGZSxkbil8MCkrTWF0aC5pbXVsKHdlLGZ0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''d2UsZG4pfDAsXz1fK01hdGguaW11bChVZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLGp0KXwwKStNYXRoLmltdWwocWUsd3QpfDAsdz13K01hdGguaW11bChxZSxqdCl8MCxfPV8rTWF0aC5pbXVsKERlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUscG4pfDApK01hdGguaW11bChCZSxI''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKEJlLHBuKXwwO3ZhciBmaT0oaGUrKF89XytNYXRoLmltdWwoTGUsRXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxlbil8MCkrTWF0aC5pbXVsKEhlLEV0KXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxlbil8MCkrKHA+Pj4x''@;'; put 'put ''Myl8MCkrKGZpPj4+MjYpfDAsZmkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKFplLG5uKSxwPShwPU1hdGguaW11bChaZSxHbikpK01hdGguaW11bChjdCxubil8MCx3PU1hdGguaW11bChjdCxHbiksXz1fK01hdGguaW11bChJZSxmdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGRuKXwwKStNYXRo''@;'; put 'put ''LmltdWwoWGUsZnQpfDAsdz13K01hdGguaW11bChYZSxkbil8MCxfPV8rTWF0aC5pbXVsKEZlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsanQpfDApK01hdGguaW11bCh3ZSx3dCl8MCx3PXcrTWF0aC5pbXVsKHdlLGp0KXwwLF89XytNYXRoLmltdWwoVWUsSHQpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChVZSxwbil8MCkrTWF0aC5pbXVsKHFlLEh0KXwwLHc9dytNYXRoLmltdWwocWUscG4pfDAsXz1fK01hdGguaW11bChEZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKERlLGVuKXwwKStNYXRoLmltdWwoQmUsRXQpfDAsdz13K01hdGguaW11bChCZSxlbil8MDt2YXIgaG89KGhlKyhfPV8r''@;'; put 'put ''TWF0aC5pbXVsKExlLHl0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsJHQpfDApK01hdGguaW11bChIZSx5dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsJHQpfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxfPU1hdGguaW11bChB''@;'; put 'put ''ZSxubikscD0ocD1NYXRoLmltdWwoQWUsR24pKStNYXRoLmltdWwoamUsbm4pfDAsdz1NYXRoLmltdWwoamUsR24pLF89XytNYXRoLmltdWwoWmUsZnQpfDAscD0ocD1wK01hdGguaW11bChaZSxkbil8MCkrTWF0aC5pbXVsKGN0LGZ0KXwwLHc9dytNYXRoLmltdWwoY3QsZG4pfDAsXz1fK01h''@;'; put 'put ''dGguaW11bChJZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGp0KXwwKStNYXRoLmltdWwoWGUsd3QpfDAsdz13K01hdGguaW11bChYZSxqdCl8MCxfPV8rTWF0aC5pbXVsKEZlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUscG4pfDApK01hdGguaW11bCh3ZSxIdCl8MCx3PXcrTWF0aC5p''@;'; put 'put ''bXVsKHdlLHBuKXwwLF89XytNYXRoLmltdWwoVWUsRXQpfDAscD0ocD1wK01hdGguaW11bChVZSxlbil8MCkrTWF0aC5pbXVsKHFlLEV0KXwwLHc9dytNYXRoLmltdWwocWUsZW4pfDAsXz1fK01hdGguaW11bChEZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKERlLCR0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''QmUseXQpfDAsdz13K01hdGguaW11bChCZSwkdCl8MDt2YXIgYnI9KGhlKyhfPV8rTWF0aC5pbXVsKExlLHp0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsX24pfDApK01hdGguaW11bChIZSx6dCl8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsX24pfDApKyhw''@;'; put 'put ''Pj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2MyxfPU1hdGguaW11bChzdCxubikscD0ocD1NYXRoLmltdWwoc3QsR24pKStNYXRoLmltdWwoeHQsbm4pfDAsdz1NYXRoLmltdWwoeHQsR24pLF89XytNYXRoLmltdWwoQWUsZnQpfDAscD0ocD1wK01hdGguaW11bChBZSxkbil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKGplLGZ0KXwwLHc9dytNYXRoLmltdWwoamUsZG4pfDAsXz1fK01hdGguaW11bChaZSx3dCl8MCxwPShwPXArTWF0aC5pbXVsKFplLGp0KXwwKStNYXRoLmltdWwoY3Qsd3QpfDAsdz13K01hdGguaW11bChjdCxqdCl8MCxfPV8rTWF0aC5pbXVsKEllLEh0KXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoSWUscG4pfDApK01hdGguaW11bChYZSxIdCl8MCx3PXcrTWF0aC5pbXVsKFhlLHBuKXwwLF89XytNYXRoLmltdWwoRmUsRXQpfDAscD0ocD1wK01hdGguaW11bChGZSxlbil8MCkrTWF0aC5pbXVsKHdlLEV0KXwwLHc9dytNYXRoLmltdWwod2UsZW4pfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChVZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKFVlLCR0KXwwKStNYXRoLmltdWwocWUseXQpfDAsdz13K01hdGguaW11bChxZSwkdCl8MCxfPV8rTWF0aC5pbXVsKERlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRGUsX24pfDApK01hdGguaW11bChCZSx6dCl8MCx3PXcrTWF0aC5pbXVsKEJl''@;'; put 'put ''LF9uKXwwO3ZhciBMaT0oaGUrKF89XytNYXRoLmltdWwoTGUscm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChMZSxQbil8MCkrTWF0aC5pbXVsKEhlLHJuKXwwKSk8PDEzKXwwO2hlPSgodz13K01hdGguaW11bChIZSxQbil8MCkrKHA+Pj4xMyl8MCkrKExpPj4+MjYpfDAsTGkm''@;'; put 'put ''PTY3MTA4ODYzLF89TWF0aC5pbXVsKE90LG5uKSxwPShwPU1hdGguaW11bChPdCxHbikpK01hdGguaW11bChLdCxubil8MCx3PU1hdGguaW11bChLdCxHbiksXz1fK01hdGguaW11bChzdCxmdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGRuKXwwKStNYXRoLmltdWwoeHQsZnQpfDAsdz13K01h''@;'; put 'put ''dGguaW11bCh4dCxkbil8MCxfPV8rTWF0aC5pbXVsKEFlLHd0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsanQpfDApK01hdGguaW11bChqZSx3dCl8MCx3PXcrTWF0aC5pbXVsKGplLGp0KXwwLF89XytNYXRoLmltdWwoWmUsSHQpfDAscD0ocD1wK01hdGguaW11bChaZSxwbil8MCkrTWF0aC5p''@;'; put 'put ''bXVsKGN0LEh0KXwwLHc9dytNYXRoLmltdWwoY3QscG4pfDAsXz1fK01hdGguaW11bChJZSxFdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLGVuKXwwKStNYXRoLmltdWwoWGUsRXQpfDAsdz13K01hdGguaW11bChYZSxlbil8MCxfPV8rTWF0aC5pbXVsKEZlLHl0KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoRmUsJHQpfDApK01hdGguaW11bCh3ZSx5dCl8MCx3PXcrTWF0aC5pbXVsKHdlLCR0KXwwLF89XytNYXRoLmltdWwoVWUsenQpfDAscD0ocD1wK01hdGguaW11bChVZSxfbil8MCkrTWF0aC5pbXVsKHFlLHp0KXwwLHc9dytNYXRoLmltdWwocWUsX24pfDAsXz1fK01hdGguaW11bChEZSxy''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKERlLFBuKXwwKStNYXRoLmltdWwoQmUscm4pfDAsdz13K01hdGguaW11bChCZSxQbil8MDt2YXIgbG89KGhlKyhfPV8rTWF0aC5pbXVsKExlLFh0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsSm4pfDApK01hdGguaW11bChIZSxYdCl8''@;'; put 'put ''MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsSm4pfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxubikscD0ocD1NYXRoLmltdWwoQnQsR24pKStNYXRoLmltdWwoeW4sbm4pfDAsdz1NYXRoLmltdWwoeW4sR24pLF89XytNYXRo''@;'; put 'put ''LmltdWwoT3QsZnQpfDAscD0ocD1wK01hdGguaW11bChPdCxkbil8MCkrTWF0aC5pbXVsKEt0LGZ0KXwwLHc9dytNYXRoLmltdWwoS3QsZG4pfDAsXz1fK01hdGguaW11bChzdCx3dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LGp0KXwwKStNYXRoLmltdWwoeHQsd3QpfDAsdz13K01hdGguaW11''@;'; put 'put ''bCh4dCxqdCl8MCxfPV8rTWF0aC5pbXVsKEFlLEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUscG4pfDApK01hdGguaW11bChqZSxIdCl8MCx3PXcrTWF0aC5pbXVsKGplLHBuKXwwLF89XytNYXRoLmltdWwoWmUsRXQpfDAscD0ocD1wK01hdGguaW11bChaZSxlbil8MCkrTWF0aC5pbXVsKGN0''@;'; put 'put ''LEV0KXwwLHc9dytNYXRoLmltdWwoY3QsZW4pfDAsXz1fK01hdGguaW11bChJZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLCR0KXwwKStNYXRoLmltdWwoWGUseXQpfDAsdz13K01hdGguaW11bChYZSwkdCl8MCxfPV8rTWF0aC5pbXVsKEZlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoRmUs''@;'; put 'put ''X24pfDApK01hdGguaW11bCh3ZSx6dCl8MCx3PXcrTWF0aC5pbXVsKHdlLF9uKXwwLF89XytNYXRoLmltdWwoVWUscm4pfDAscD0ocD1wK01hdGguaW11bChVZSxQbil8MCkrTWF0aC5pbXVsKHFlLHJuKXwwLHc9dytNYXRoLmltdWwocWUsUG4pfDAsXz1fK01hdGguaW11bChEZSxYdCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKERlLEpuKXwwKStNYXRoLmltdWwoQmUsWHQpfDAsdz13K01hdGguaW11bChCZSxKbil8MDt2YXIgVW49KGhlKyhfPV8rTWF0aC5pbXVsKExlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoTGUsdG4pfDApK01hdGguaW11bChIZSxhbil8MCkpPDwx''@;'; put 'put ''Myl8MDtoZT0oKHc9dytNYXRoLmltdWwoSGUsdG4pfDApKyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxmdCkscD0ocD1NYXRoLmltdWwoQnQsZG4pKStNYXRoLmltdWwoeW4sZnQpfDAsdz1NYXRoLmltdWwoeW4sZG4pLF89XytNYXRoLmltdWwo''@;'; put 'put ''T3Qsd3QpfDAscD0ocD1wK01hdGguaW11bChPdCxqdCl8MCkrTWF0aC5pbXVsKEt0LHd0KXwwLHc9dytNYXRoLmltdWwoS3QsanQpfDAsXz1fK01hdGguaW11bChzdCxIdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LHBuKXwwKStNYXRoLmltdWwoeHQsSHQpfDAsdz13K01hdGguaW11bCh4dCxw''@;'; put 'put ''bil8MCxfPV8rTWF0aC5pbXVsKEFlLEV0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsZW4pfDApK01hdGguaW11bChqZSxFdCl8MCx3PXcrTWF0aC5pbXVsKGplLGVuKXwwLF89XytNYXRoLmltdWwoWmUseXQpfDAscD0ocD1wK01hdGguaW11bChaZSwkdCl8MCkrTWF0aC5pbXVsKGN0LHl0KXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoY3QsJHQpfDAsXz1fK01hdGguaW11bChJZSx6dCl8MCxwPShwPXArTWF0aC5pbXVsKEllLF9uKXwwKStNYXRoLmltdWwoWGUsenQpfDAsdz13K01hdGguaW11bChYZSxfbil8MCxfPV8rTWF0aC5pbXVsKEZlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoRmUsUG4pfDAp''@;'; put 'put ''K01hdGguaW11bCh3ZSxybil8MCx3PXcrTWF0aC5pbXVsKHdlLFBuKXwwLF89XytNYXRoLmltdWwoVWUsWHQpfDAscD0ocD1wK01hdGguaW11bChVZSxKbil8MCkrTWF0aC5pbXVsKHFlLFh0KXwwLHc9dytNYXRoLmltdWwocWUsSm4pfDA7dmFyIFhpPShoZSsoXz1fK01hdGguaW11bChEZSxh''@;'; put 'put ''bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKERlLHRuKXwwKStNYXRoLmltdWwoQmUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKEJlLHRuKXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsd3QpLHA9KHA9TWF0''@;'; put 'put ''aC5pbXVsKEJ0LGp0KSkrTWF0aC5pbXVsKHluLHd0KXwwLHc9TWF0aC5pbXVsKHluLGp0KSxfPV8rTWF0aC5pbXVsKE90LEh0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QscG4pfDApK01hdGguaW11bChLdCxIdCl8MCx3PXcrTWF0aC5pbXVsKEt0LHBuKXwwLF89XytNYXRoLmltdWwoc3QsRXQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChzdCxlbil8MCkrTWF0aC5pbXVsKHh0LEV0KXwwLHc9dytNYXRoLmltdWwoeHQsZW4pfDAsXz1fK01hdGguaW11bChBZSx5dCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLCR0KXwwKStNYXRoLmltdWwoamUseXQpfDAsdz13K01hdGguaW11bChqZSwkdCl8MCxf''@;'; put 'put ''PV8rTWF0aC5pbXVsKFplLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoWmUsX24pfDApK01hdGguaW11bChjdCx6dCl8MCx3PXcrTWF0aC5pbXVsKGN0LF9uKXwwLF89XytNYXRoLmltdWwoSWUscm4pfDAscD0ocD1wK01hdGguaW11bChJZSxQbil8MCkrTWF0aC5pbXVsKFhlLHJuKXwwLHc9dytN''@;'; put 'put ''YXRoLmltdWwoWGUsUG4pfDAsXz1fK01hdGguaW11bChGZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEZlLEpuKXwwKStNYXRoLmltdWwod2UsWHQpfDAsdz13K01hdGguaW11bCh3ZSxKbil8MDt2YXIgUWk9KGhlKyhfPV8rTWF0aC5pbXVsKFVlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoVWUsdG4pfDApK01hdGguaW11bChxZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwocWUsdG4pfDApKyhwPj4+MTMpfDApKyhRaT4+PjI2KXwwLFFpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxIdCkscD0ocD1NYXRoLmltdWwoQnQscG4pKStNYXRoLmltdWwo''@;'; put 'put ''eW4sSHQpfDAsdz1NYXRoLmltdWwoeW4scG4pLF89XytNYXRoLmltdWwoT3QsRXQpfDAscD0ocD1wK01hdGguaW11bChPdCxlbil8MCkrTWF0aC5pbXVsKEt0LEV0KXwwLHc9dytNYXRoLmltdWwoS3QsZW4pfDAsXz1fK01hdGguaW11bChzdCx5dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LCR0''@;'; put 'put ''KXwwKStNYXRoLmltdWwoeHQseXQpfDAsdz13K01hdGguaW11bCh4dCwkdCl8MCxfPV8rTWF0aC5pbXVsKEFlLHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsX24pfDApK01hdGguaW11bChqZSx6dCl8MCx3PXcrTWF0aC5pbXVsKGplLF9uKXwwLF89XytNYXRoLmltdWwoWmUscm4pfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChaZSxQbil8MCkrTWF0aC5pbXVsKGN0LHJuKXwwLHc9dytNYXRoLmltdWwoY3QsUG4pfDAsXz1fK01hdGguaW11bChJZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEllLEpuKXwwKStNYXRoLmltdWwoWGUsWHQpfDAsdz13K01hdGguaW11bChYZSxKbil8MDt2YXIgZm89''@;'; put 'put ''KGhlKyhfPV8rTWF0aC5pbXVsKEZlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRmUsdG4pfDApK01hdGguaW11bCh3ZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwod2UsdG4pfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1h''@;'; put 'put ''dGguaW11bChCdCxFdCkscD0ocD1NYXRoLmltdWwoQnQsZW4pKStNYXRoLmltdWwoeW4sRXQpfDAsdz1NYXRoLmltdWwoeW4sZW4pLF89XytNYXRoLmltdWwoT3QseXQpfDAscD0ocD1wK01hdGguaW11bChPdCwkdCl8MCkrTWF0aC5pbXVsKEt0LHl0KXwwLHc9dytNYXRoLmltdWwoS3QsJHQp''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChzdCx6dCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LF9uKXwwKStNYXRoLmltdWwoeHQsenQpfDAsdz13K01hdGguaW11bCh4dCxfbil8MCxfPV8rTWF0aC5pbXVsKEFlLHJuKXwwLHA9KHA9cCtNYXRoLmltdWwoQWUsUG4pfDApK01hdGguaW11bChqZSxybil8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKGplLFBuKXwwLF89XytNYXRoLmltdWwoWmUsWHQpfDAscD0ocD1wK01hdGguaW11bChaZSxKbil8MCkrTWF0aC5pbXVsKGN0LFh0KXwwLHc9dytNYXRoLmltdWwoY3QsSm4pfDA7dmFyIHZvPShoZSsoXz1fK01hdGguaW11bChJZSxhbil8MCl8MCkrKCg4MTkxJihwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKEllLHRuKXwwKStNYXRoLmltdWwoWGUsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKFhlLHRuKXwwKSsocD4+PjEzKXwwKSsodm8+Pj4yNil8MCx2byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQseXQpLHA9KHA9TWF0aC5pbXVsKEJ0LCR0KSkrTWF0aC5p''@;'; put 'put ''bXVsKHluLHl0KXwwLHc9TWF0aC5pbXVsKHluLCR0KSxfPV8rTWF0aC5pbXVsKE90LHp0KXwwLHA9KHA9cCtNYXRoLmltdWwoT3QsX24pfDApK01hdGguaW11bChLdCx6dCl8MCx3PXcrTWF0aC5pbXVsKEt0LF9uKXwwLF89XytNYXRoLmltdWwoc3Qscm4pfDAscD0ocD1wK01hdGguaW11bChz''@;'; put 'put ''dCxQbil8MCkrTWF0aC5pbXVsKHh0LHJuKXwwLHc9dytNYXRoLmltdWwoeHQsUG4pfDAsXz1fK01hdGguaW11bChBZSxYdCl8MCxwPShwPXArTWF0aC5pbXVsKEFlLEpuKXwwKStNYXRoLmltdWwoamUsWHQpfDAsdz13K01hdGguaW11bChqZSxKbil8MDt2YXIgUnI9KGhlKyhfPV8rTWF0aC5p''@;'; put 'put ''bXVsKFplLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoWmUsdG4pfDApK01hdGguaW11bChjdCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoY3QsdG4pfDApKyhwPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxfPU1hdGguaW11bChCdCx6dCks''@;'; put 'put ''cD0ocD1NYXRoLmltdWwoQnQsX24pKStNYXRoLmltdWwoeW4senQpfDAsdz1NYXRoLmltdWwoeW4sX24pLF89XytNYXRoLmltdWwoT3Qscm4pfDAscD0ocD1wK01hdGguaW11bChPdCxQbil8MCkrTWF0aC5pbXVsKEt0LHJuKXwwLHc9dytNYXRoLmltdWwoS3QsUG4pfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChzdCxYdCl8MCxwPShwPXArTWF0aC5pbXVsKHN0LEpuKXwwKStNYXRoLmltdWwoeHQsWHQpfDAsdz13K01hdGguaW11bCh4dCxKbil8MDt2YXIgWWk9KGhlKyhfPV8rTWF0aC5pbXVsKEFlLGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoQWUsdG4pfDApK01hdGguaW11bChq''@;'; put 'put ''ZSxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoamUsdG4pfDApKyhwPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2MyxfPU1hdGguaW11bChCdCxybikscD0ocD1NYXRoLmltdWwoQnQsUG4pKStNYXRoLmltdWwoeW4scm4pfDAsdz1NYXRoLmltdWwoeW4sUG4pLF89''@;'; put 'put ''XytNYXRoLmltdWwoT3QsWHQpfDAscD0ocD1wK01hdGguaW11bChPdCxKbil8MCkrTWF0aC5pbXVsKEt0LFh0KXwwLHc9dytNYXRoLmltdWwoS3QsSm4pfDA7dmFyIHpvPShoZSsoXz1fK01hdGguaW11bChzdCxhbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHN0LHRuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoeHQsYW4pfDApKTw8MTMpfDA7aGU9KCh3PXcrTWF0aC5pbXVsKHh0LHRuKXwwKSsocD4+PjEzKXwwKSsoem8+Pj4yNil8MCx6byY9NjcxMDg4NjMsXz1NYXRoLmltdWwoQnQsWHQpLHA9KHA9TWF0aC5pbXVsKEJ0LEpuKSkrTWF0aC5pbXVsKHluLFh0KXwwLHc9TWF0aC5pbXVs''@;'; put 'put ''KHluLEpuKTt2YXIgaXM9KGhlKyhfPV8rTWF0aC5pbXVsKE90LGFuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoT3QsdG4pfDApK01hdGguaW11bChLdCxhbil8MCkpPDwxMyl8MDtoZT0oKHc9dytNYXRoLmltdWwoS3QsdG4pfDApKyhwPj4+MTMpfDApKyhpcz4+PjI2KXwwLGlz''@;'; put 'put ''Jj02NzEwODg2Mzt2YXIgdXM9KGhlKyhfPU1hdGguaW11bChCdCxhbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoQnQsdG4pKStNYXRoLmltdWwoeW4sYW4pfDApKTw8MTMpfDA7cmV0dXJuIGhlPSgodz1NYXRoLmltdWwoeW4sdG4pKSsocD4+PjEzKXwwKSsodXM+Pj4yNil8MCx1cyY9''@;'; put 'put ''NjcxMDg4NjMsY2VbMF09dWksY2VbMV09QXIsY2VbMl09aHIsY2VbM109ZGksY2VbNF09ZmksY2VbNV09aG8sY2VbNl09YnIsY2VbN109TGksY2VbOF09bG8sY2VbOV09VW4sY2VbMTBdPVhpLGNlWzExXT1RaSxjZVsxMl09Zm8sY2VbMTNdPXZvLGNlWzE0XT1ScixjZVsxNV09WWksY2VbMTZd''@;'; put 'put ''PXpvLGNlWzE3XT1pcyxjZVsxOF09dXMsMCE9PWhlJiYoY2VbMTldPWhlLGsubGVuZ3RoKyspLGt9O2Z1bmN0aW9uIHJlKGcsQyxrKXtyZXR1cm4obmV3IGllKS5tdWxwKGcsQyxrKX1mdW5jdGlvbiBpZShnLEMpe3RoaXMueD1nLHRoaXMueT1DfU1hdGguaW11bHx8KGVlPUopLEUucHJvdG90''@;'; put 'put ''eXBlLm11bFRvPWZ1bmN0aW9uKGcsQyl7dmFyIF89dGhpcy5sZW5ndGgrZy5sZW5ndGg7cmV0dXJuIDEwPT09dGhpcy5sZW5ndGgmJjEwPT09Zy5sZW5ndGg/ZWUodGhpcyxnLEMpOl88NjM/Sih0aGlzLGcsQyk6XzwxMDI0P2Z1bmN0aW9uKHAsdyxLKXtLLm5lZ2F0aXZlPXcubmVnYXRpdmVe''@;'; put 'put ''cC5uZWdhdGl2ZSxLLmxlbmd0aD1wLmxlbmd0aCt3Lmxlbmd0aDtmb3IodmFyIHRlPTAsY2U9MCxoZT0wO2hlPEsubGVuZ3RoLTE7aGUrKyl7dmFyIFNlPWNlO2NlPTA7Zm9yKHZhciBMZT02NzEwODg2MyZ0ZSxIZT1NYXRoLm1pbihoZSx3Lmxlbmd0aC0xKSx4ZT1NYXRoLm1heCgwLGhlLXAu''@;'; put 'put ''bGVuZ3RoKzEpO3hlPD1IZTt4ZSsrKXt2YXIgQmU9KDB8cC53b3Jkc1toZS14ZV0pKigwfHcud29yZHNbeGVdKSxHZT02NzEwODg2MyZCZTtMZT02NzEwODg2MyYoR2U9R2UrTGV8MCksY2UrPShTZT0oU2U9U2UrKEJlLzY3MTA4ODY0fDApfDApKyhHZT4+PjI2KXwwKT4+PjI2LFNlJj02NzEw''@;'; put 'put ''ODg2M31LLndvcmRzW2hlXT1MZSx0ZT1TZSxTZT1jZX1yZXR1cm4gMCE9PXRlP0sud29yZHNbaGVdPXRlOksubGVuZ3RoLS0sSy5zdHJpcCgpfSh0aGlzLGcsQyk6cmUodGhpcyxnLEMpfSxpZS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihnKXtmb3IodmFyIEM9bmV3IEFycmF5KGcpLGs9''@;'; put 'put ''RS5wcm90b3R5cGUuX2NvdW50Qml0cyhnKS0xLF89MDtfPGc7XysrKUNbX109dGhpcy5yZXZCaW4oXyxrLGcpO3JldHVybiBDfSxpZS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGcsQyxrKXtpZigwPT09Z3x8Zz09PWstMSlyZXR1cm4gZztmb3IodmFyIF89MCxwPTA7cDxDO3ArKylffD0o''@;'; put 'put ''MSZnKTw8Qy1wLTEsZz4+PTE7cmV0dXJuIF99LGllLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGcsQyxrLF8scCx3KXtmb3IodmFyIEs9MDtLPHc7SysrKV9bS109Q1tnW0tdXSxwW0tdPWtbZ1tLXV19LGllLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZyxDLGssXyxwLHcpe3Ro''@;'; put 'put ''aXMucGVybXV0ZSh3LGcsQyxrLF8scCk7Zm9yKHZhciBLPTE7SzxwO0s8PD0xKWZvcih2YXIgdGU9Szw8MSxjZT1NYXRoLmNvcygyKk1hdGguUEkvdGUpLGhlPU1hdGguc2luKDIqTWF0aC5QSS90ZSksU2U9MDtTZTxwO1NlKz10ZSlmb3IodmFyIExlPWNlLEhlPWhlLHhlPTA7eGU8Szt4ZSsr''@;'; put 'put ''KXt2YXIgRGU9a1tTZSt4ZV0sQmU9X1tTZSt4ZV0sR2U9a1tTZSt4ZStLXSxVZT1fW1NlK3hlK0tdLHFlPUxlKkdlLUhlKlVlO1VlPUxlKlVlK0hlKkdlLGtbU2UreGVdPURlKyhHZT1xZSksX1tTZSt4ZV09QmUrVWUsa1tTZSt4ZStLXT1EZS1HZSxfW1NlK3hlK0tdPUJlLVVlLHhlIT09dGUm''@;'; put 'put ''JihxZT1jZSpMZS1oZSpIZSxIZT1jZSpIZStoZSpMZSxMZT1xZSl9fSxpZS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZyxDKXt2YXIgaz0xfE1hdGgubWF4KEMsZyksXz0xJmsscD0wO2ZvcihrPWsvMnwwO2s7az4+Pj0xKXArKztyZXR1cm4gMTw8cCsxK199LGllLnByb3RvdHlw''@;'; put 'put ''ZS5jb25qdWdhdGU9ZnVuY3Rpb24oZyxDLGspe2lmKCEoazw9MSkpZm9yKHZhciBfPTA7XzxrLzI7XysrKXt2YXIgcD1nW19dO2dbX109Z1trLV8tMV0sZ1trLV8tMV09cCxwPUNbX10sQ1tfXT0tQ1trLV8tMV0sQ1trLV8tMV09LXB9fSxpZS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0''@;'; put 'put ''aW9uKGcsQyl7Zm9yKHZhciBrPTAsXz0wO188Qy8yO18rKyl7dmFyIHA9ODE5MipNYXRoLnJvdW5kKGdbMipfKzFdL0MpK01hdGgucm91bmQoZ1syKl9dL0MpK2s7Z1tfXT02NzEwODg2MyZwLGs9cDw2NzEwODg2ND8wOnAvNjcxMDg4NjR8MH1yZXR1cm4gZ30saWUucHJvdG90eXBlLmNvbnZl''@;'; put 'put ''cnQxM2I9ZnVuY3Rpb24oZyxDLGssXyl7Zm9yKHZhciBwPTAsdz0wO3c8Qzt3Kyspa1syKnddPTgxOTEmKHArPTB8Z1t3XSksa1syKncrMV09ODE5MSYocD4+Pj0xMykscD4+Pj0xMztmb3Iodz0yKkM7dzxfOysrdylrW3ddPTA7RCgwPT09cCksRCghKC04MTkyJnApKX0saWUucHJvdG90eXBl''@;'; put 'put ''LnN0dWI9ZnVuY3Rpb24oZyl7Zm9yKHZhciBDPW5ldyBBcnJheShnKSxrPTA7azxnO2srKylDW2tdPTA7cmV0dXJuIEN9LGllLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXz0yKnRoaXMuZ3Vlc3NMZW4xM2IoZy5sZW5ndGgsQy5sZW5ndGgpLHA9dGhpcy5tYWtlUkJUKF8p''@;'; put 'put ''LHc9dGhpcy5zdHViKF8pLEs9bmV3IEFycmF5KF8pLHRlPW5ldyBBcnJheShfKSxjZT1uZXcgQXJyYXkoXyksaGU9bmV3IEFycmF5KF8pLFNlPW5ldyBBcnJheShfKSxMZT1uZXcgQXJyYXkoXyksSGU9ay53b3JkcztIZS5sZW5ndGg9Xyx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0''@;'; put 'put ''aCxLLF8pLHRoaXMuY29udmVydDEzYihDLndvcmRzLEMubGVuZ3RoLGhlLF8pLHRoaXMudHJhbnNmb3JtKEssdyx0ZSxjZSxfLHApLHRoaXMudHJhbnNmb3JtKGhlLHcsU2UsTGUsXyxwKTtmb3IodmFyIHhlPTA7eGU8Xzt4ZSsrKXt2YXIgRGU9dGVbeGVdKlNlW3hlXS1jZVt4ZV0qTGVbeGVd''@;'; put 'put ''O2NlW3hlXT10ZVt4ZV0qTGVbeGVdK2NlW3hlXSpTZVt4ZV0sdGVbeGVdPURlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZSh0ZSxjZSxfKSx0aGlzLnRyYW5zZm9ybSh0ZSxjZSxIZSx3LF8scCksdGhpcy5jb25qdWdhdGUoSGUsdyxfKSx0aGlzLm5vcm1hbGl6ZTEzYihIZSxfKSxrLm5lZ2F0aXZl''@;'; put 'put ''PWcubmVnYXRpdmVeQy5uZWdhdGl2ZSxrLmxlbmd0aD1nLmxlbmd0aCtDLmxlbmd0aCxrLnN0cmlwKCl9LEUucHJvdG90eXBlLm11bD1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHRoaXMubXVsVG8o''@;'; put 'put ''ZyxDKX0sRS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihnKXt2YXIgQz1uZXcgRShudWxsKTtyZXR1cm4gQy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZy5sZW5ndGgpLHJlKHRoaXMsZyxDKX0sRS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11''@;'; put 'put ''bFRvKGcsdGhpcyl9LEUucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKSxEKGc8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkqZyxwPSg2NzEwODg2MyZfKSsoNjcxMDg4NjMm''@;'; put 'put ''Qyk7Qz4+PTI2LEMrPV8vNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNba109Qyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxFLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW11''@;'; put 'put ''bG4oZyl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sRS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sRS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGcpe3ZhciBDPWZ1bmN0aW9uKHcpe2Zv''@;'; put 'put ''cih2YXIgSz1uZXcgQXJyYXkody5iaXRMZW5ndGgoKSksdGU9MDt0ZTxLLmxlbmd0aDt0ZSsrKXt2YXIgaGU9dGUlMjY7S1t0ZV09KHcud29yZHNbdGUvMjZ8MF0mMTw8aGUpPj4+aGV9cmV0dXJuIEt9KGcpO2lmKDA9PT1DLmxlbmd0aClyZXR1cm4gbmV3IEUoMSk7Zm9yKHZhciBrPXRoaXMs''@;'; put 'put ''Xz0wO188Qy5sZW5ndGgmJjA9PT1DW19dO18rKyxrPWsuc3FyKCkpO2lmKCsrXzxDLmxlbmd0aClmb3IodmFyIHA9ay5zcXIoKTtfPEMubGVuZ3RoO18rKyxwPXAuc3FyKCkpMCE9PUNbX10mJihrPWsubXVsKHApKTtyZXR1cm4ga30sRS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0aW9uKGcpe0Qo''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQyxrPWclMjYsXz0oZy1rKS8yNixwPTY3MTA4ODYzPj4+MjYtazw8MjYtaztpZigwIT09ayl7dmFyIHc9MDtmb3IoQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgSz10aGlzLndvcmRzW0NdJnA7dGhpcy53b3Jkc1tDXT0oMHx0aGlzLndv''@;'; put 'put ''cmRzW0NdKS1LPDxrfHcsdz1LPj4+MjYta313JiYodGhpcy53b3Jkc1tDXT13LHRoaXMubGVuZ3RoKyspfWlmKDAhPT1fKXtmb3IoQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXRoaXMud29yZHNbQytfXT10aGlzLndvcmRzW0NdO2ZvcihDPTA7QzxfO0MrKyl0aGlzLndvcmRzW0NdPTA7dGhp''@;'; put 'put ''cy5sZW5ndGgrPV99cmV0dXJuIHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGcpfSxFLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZyxDLGspe3ZhciBfO0QoIm51bWJlciI9PXR5cGVv''@;'; put 'put ''ZiBnJiZnPj0wKSxfPUM/KEMtQyUyNikvMjY6MDt2YXIgcD1nJTI2LHc9TWF0aC5taW4oKGctcCkvMjYsdGhpcy5sZW5ndGgpLEs9NjcxMDg4NjNeNjcxMDg4NjM+Pj5wPDxwLHRlPWs7aWYoXy09dyxfPU1hdGgubWF4KDAsXyksdGUpe2Zvcih2YXIgY2U9MDtjZTx3O2NlKyspdGUud29yZHNb''@;'; put 'put ''Y2VdPXRoaXMud29yZHNbY2VdO3RlLmxlbmd0aD13fWlmKDAhPT13KWlmKHRoaXMubGVuZ3RoPncpZm9yKHRoaXMubGVuZ3RoLT13LGNlPTA7Y2U8dGhpcy5sZW5ndGg7Y2UrKyl0aGlzLndvcmRzW2NlXT10aGlzLndvcmRzW2NlK3ddO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3Ro''@;'; put 'put ''PTE7dmFyIGhlPTA7Zm9yKGNlPXRoaXMubGVuZ3RoLTE7Y2U+PTAmJigwIT09aGV8fGNlPj1fKTtjZS0tKXt2YXIgU2U9MHx0aGlzLndvcmRzW2NlXTt0aGlzLndvcmRzW2NlXT1oZTw8MjYtcHxTZT4+PnAsaGU9U2UmS31yZXR1cm4gdGUmJjAhPT1oZSYmKHRlLndvcmRzW3RlLmxlbmd0aCsr''@;'; put 'put ''XT1oZSksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oZyxDLGspe3JldHVybiBEKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihnLEMsayl9LEUucHJvdG90eXBlLnNo''@;'; put 'put ''bG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihnKX0sRS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZyl9LEUucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihnKX0s''@;'; put 'put ''RS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZyl9LEUucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9a3x8''@;'; put 'put ''ISh0aGlzLndvcmRzW2tdJjE8PEMpKX0sRS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnJiZnPj0wKTt2YXIgQz1nJTI2LGs9KGctQykvMjY7cmV0dXJuIEQoMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUg''@;'; put 'put ''bnVtYmVycyIpLHRoaXMubGVuZ3RoPD1rP3RoaXM6KDAhPT1DJiZrKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oayx0aGlzLmxlbmd0aCksMCE9PUMmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkM8PEMpLHRoaXMuc3RyaXAoKSl9LEUucHJvdG90eXBl''@;'; put 'put ''Lm1hc2tuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGcpfSxFLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihnKXtyZXR1cm4gRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwP3RoaXMuaXN1Ym4oLWcpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10''@;'; put 'put ''aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Zz8odGhpcy53b3Jkc1swXT1nLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGcpfSxFLnByb3Rv''@;'; put 'put ''dHlwZS5faWFkZG49ZnVuY3Rpb24oZyl7dGhpcy53b3Jkc1swXSs9Zztmb3IodmFyIEM9MDtDPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0NdPj02NzEwODg2NDtDKyspdGhpcy53b3Jkc1tDXS09NjcxMDg4NjQsQz09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tDKzFdPTE6dGhpcy53b3Jk''@;'; put 'put ''c1tDKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEMrMSksdGhpc30sRS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oZyl7aWYoRCgibnVtYmVyIj09dHlwZW9mIGcpLEQoZzw2NzEwODg2NCksZzwwKXJldHVybiB0aGlzLmlhZGRuKC1nKTtpZigwIT09dGhp''@;'; put 'put ''cy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oZyksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09ZywxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MTtlbHNlIGZvcih2YXIgQz0wO0M8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQ108MDtDKyspdGhpcy53b3Jkc1tDXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tDKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pYWRkbihnKX0sRS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGcpfSxFLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxFLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jbG9uZSgpLmlhYnMoKX0sRS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGcsQyxrKXt2YXIgXyxwO3RoaXMuX2V4cGFuZChnLmxlbmd0aCtrKTt2YXIgSz0wO2ZvcihfPTA7XzxnLmxlbmd0aDtfKyspe3A9KDB8dGhpcy53b3Jkc1tfK2tdKStLO3ZhciB0ZT0oMHxnLndvcmRz''@;'; put 'put ''W19dKSpDO0s9KChwLT02NzEwODg2MyZ0ZSk+PjI2KS0odGUvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnB9Zm9yKDtfPHRoaXMubGVuZ3RoLWs7XysrKUs9KHA9KDB8dGhpcy53b3Jkc1tfK2tdKStLKT4+MjYsdGhpcy53b3Jkc1tfK2tdPTY3MTA4ODYzJnA7aWYoMD09''@;'; put 'put ''PUspcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IoRCgtMT09PUspLEs9MCxfPTA7Xzx0aGlzLmxlbmd0aDtfKyspSz0ocD0tKDB8dGhpcy53b3Jkc1tfXSkrSyk+PjI2LHRoaXMud29yZHNbX109NjcxMDg4NjMmcDtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sRS5wcm90b3R5''@;'; put 'put ''cGUuX3dvcmREaXY9ZnVuY3Rpb24oZyxDKXt2YXIgayxfPXRoaXMuY2xvbmUoKSxwPWcsdz0wfHAud29yZHNbcC5sZW5ndGgtMV07MCE9KGs9MjYtdGhpcy5fY291bnRCaXRzKHcpKSYmKHA9cC51c2hsbihrKSxfLml1c2hsbihrKSx3PTB8cC53b3Jkc1twLmxlbmd0aC0xXSk7dmFyIEssdGU9''@;'; put 'put ''Xy5sZW5ndGgtcC5sZW5ndGg7aWYoIm1vZCIhPT1DKXsoSz1uZXcgRShudWxsKSkubGVuZ3RoPXRlKzEsSy53b3Jkcz1uZXcgQXJyYXkoSy5sZW5ndGgpO2Zvcih2YXIgY2U9MDtjZTxLLmxlbmd0aDtjZSsrKUsud29yZHNbY2VdPTB9dmFyIGhlPV8uY2xvbmUoKS5faXNobG5zdWJtdWwocCwx''@;'; put 'put ''LHRlKTswPT09aGUubmVnYXRpdmUmJihfPWhlLEsmJihLLndvcmRzW3RlXT0xKSk7Zm9yKHZhciBTZT10ZS0xO1NlPj0wO1NlLS0pe3ZhciBMZT02NzEwODg2NCooMHxfLndvcmRzW3AubGVuZ3RoK1NlXSkrKDB8Xy53b3Jkc1twLmxlbmd0aCtTZS0xXSk7Zm9yKExlPU1hdGgubWluKExlL3d8''@;'; put 'put ''MCw2NzEwODg2MyksXy5faXNobG5zdWJtdWwocCxMZSxTZSk7MCE9PV8ubmVnYXRpdmU7KUxlLS0sXy5uZWdhdGl2ZT0wLF8uX2lzaGxuc3VibXVsKHAsMSxTZSksXy5pc1plcm8oKXx8KF8ubmVnYXRpdmVePTEpO0smJihLLndvcmRzW1NlXT1MZSl9cmV0dXJuIEsmJksuc3RyaXAoKSxfLnN0''@;'; put 'put ''cmlwKCksImRpdiIhPT1DJiYwIT09ayYmXy5pdXNocm4oaykse2RpdjpLfHxudWxsLG1vZDpffX0sRS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGcsQyxrKXtyZXR1cm4gRCghZy5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBFKDApLG1vZDpuZXcgRSgwKX06MCE9PXRoaXMu''@;'; put 'put ''bmVnYXRpdmUmJjA9PT1nLm5lZ2F0aXZlPyh3PXRoaXMubmVnKCkuZGl2bW9kKGcsQyksIm1vZCIhPT1DJiYoXz13LmRpdi5uZWcoKSksImRpdiIhPT1DJiYocD13Lm1vZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pYWRkKGcpKSx7ZGl2Ol8sbW9kOnB9KTowPT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSYmMCE9PWcubmVnYXRpdmU/KHc9dGhpcy5kaXZtb2QoZy5uZWcoKSxDKSwibW9kIiE9PUMmJihfPXcuZGl2Lm5lZygpKSx7ZGl2Ol8sbW9kOncubW9kfSk6dGhpcy5uZWdhdGl2ZSZnLm5lZ2F0aXZlPyh3PXRoaXMubmVnKCkuZGl2bW9kKGcubmVnKCksQyksImRpdiIhPT1DJiYocD13Lm1v''@;'; put 'put ''ZC5uZWcoKSxrJiYwIT09cC5uZWdhdGl2ZSYmcC5pc3ViKGcpKSx7ZGl2OncuZGl2LG1vZDpwfSk6Zy5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGcpPDA/e2RpdjpuZXcgRSgwKSxtb2Q6dGhpc306MT09PWcubGVuZ3RoPyJkaXYiPT09Qz97ZGl2OnRoaXMuZGl2bihnLndvcmRzWzBd''@;'; put 'put ''KSxtb2Q6bnVsbH06Im1vZCI9PT1DP3tkaXY6bnVsbCxtb2Q6bmV3IEUodGhpcy5tb2RuKGcud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oZy53b3Jkc1swXSksbW9kOm5ldyBFKHRoaXMubW9kbihnLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoZyxDKTt2YXIgXyxwLHd9LEUucHJvdG90''@;'; put 'put ''eXBlLmRpdj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZtb2QoZywiZGl2IiwhMSkuZGl2fSxFLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZGl2bW9kKGcsIm1vZCIsITEpLm1vZH0sRS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5kaXZt''@;'; put 'put ''b2QoZywibW9kIiwhMCkubW9kfSxFLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihnKXt2YXIgQz10aGlzLmRpdm1vZChnKTtpZihDLm1vZC5pc1plcm8oKSlyZXR1cm4gQy5kaXY7dmFyIGs9MCE9PUMuZGl2Lm5lZ2F0aXZlP0MubW9kLmlzdWIoZyk6Qy5tb2QsXz1nLnVzaHJuKDEpLHA9''@;'; put 'put ''Zy5hbmRsbigxKSx3PWsuY21wKF8pO3JldHVybiB3PDB8fDE9PT1wJiYwPT09dz9DLmRpdjowIT09Qy5kaXYubmVnYXRpdmU/Qy5kaXYuaXN1Ym4oMSk6Qy5kaXYuaWFkZG4oMSl9LEUucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oZyl7RChnPD02NzEwODg2Myk7Zm9yKHZhciBDPTY3MTA4ODY0''@;'; put 'put ''JWcsaz0wLF89dGhpcy5sZW5ndGgtMTtfPj0wO18tLSlrPShDKmsrKDB8dGhpcy53b3Jkc1tfXSkpJWc7cmV0dXJuIGt9LEUucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGcpe0QoZzw9NjcxMDg4NjMpO2Zvcih2YXIgQz0wLGs9dGhpcy5sZW5ndGgtMTtrPj0wO2stLSl7dmFyIF89KDB8dGhp''@;'; put 'put ''cy53b3Jkc1trXSkrNjcxMDg4NjQqQzt0aGlzLndvcmRzW2tdPV8vZ3wwLEM9XyVnfXJldHVybiB0aGlzLnN0cmlwKCl9LEUucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihnKX0sRS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihnKXtEKDA9PT1n''@;'; put 'put ''Lm5lZ2F0aXZlKSxEKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIF89bmV3IEUoMSkscD1uZXcgRSgwKSx3PW5ldyBFKDApLEs9bmV3IEUoMSksdGU9MDtDLmlzRXZlbigpJiZrLmlzRXZlbigp''@;'; put 'put ''OylDLml1c2hybigxKSxrLml1c2hybigxKSwrK3RlO2Zvcih2YXIgY2U9ay5jbG9uZSgpLGhlPUMuY2xvbmUoKTshQy5pc1plcm8oKTspe2Zvcih2YXIgU2U9MCxMZT0xOyEoQy53b3Jkc1swXSZMZSkmJlNlPDI2OysrU2UsTGU8PD0xKTtpZihTZT4wKWZvcihDLml1c2hybihTZSk7U2UtLSA+''@;'; put 'put ''MDspKF8uaXNPZGQoKXx8cC5pc09kZCgpKSYmKF8uaWFkZChjZSkscC5pc3ViKGhlKSksXy5pdXNocm4oMSkscC5pdXNocm4oMSk7Zm9yKHZhciBIZT0wLHhlPTE7IShrLndvcmRzWzBdJnhlKSYmSGU8MjY7KytIZSx4ZTw8PTEpO2lmKEhlPjApZm9yKGsuaXVzaHJuKEhlKTtIZS0tID4wOyko''@;'; put 'put ''dy5pc09kZCgpfHxLLmlzT2RkKCkpJiYody5pYWRkKGNlKSxLLmlzdWIoaGUpKSx3Lml1c2hybigxKSxLLml1c2hybigxKTtDLmNtcChrKT49MD8oQy5pc3ViKGspLF8uaXN1Yih3KSxwLmlzdWIoSykpOihrLmlzdWIoQyksdy5pc3ViKF8pLEsuaXN1YihwKSl9cmV0dXJue2E6dyxiOkssZ2Nk''@;'; put 'put ''OmsuaXVzaGxuKHRlKX19LEUucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlKSxEKCFnLmlzWmVybygpKTt2YXIgQz10aGlzLGs9Zy5jbG9uZSgpO0M9MCE9PUMubmVnYXRpdmU/Qy51bW9kKGcpOkMuY2xvbmUoKTtmb3IodmFyIF8scD1uZXcgRSgxKSx3PW5l''@;'; put 'put ''dyBFKDApLEs9ay5jbG9uZSgpO0MuY21wbigxKT4wJiZrLmNtcG4oMSk+MDspe2Zvcih2YXIgdGU9MCxjZT0xOyEoQy53b3Jkc1swXSZjZSkmJnRlPDI2OysrdGUsY2U8PD0xKTtpZih0ZT4wKWZvcihDLml1c2hybih0ZSk7dGUtLSA+MDspcC5pc09kZCgpJiZwLmlhZGQoSykscC5pdXNocm4o''@;'; put 'put ''MSk7Zm9yKHZhciBoZT0wLFNlPTE7IShrLndvcmRzWzBdJlNlKSYmaGU8MjY7KytoZSxTZTw8PTEpO2lmKGhlPjApZm9yKGsuaXVzaHJuKGhlKTtoZS0tID4wOyl3LmlzT2RkKCkmJncuaWFkZChLKSx3Lml1c2hybigxKTtDLmNtcChrKT49MD8oQy5pc3ViKGspLHAuaXN1Yih3KSk6KGsuaXN1''@;'; put 'put ''YihDKSx3LmlzdWIocCkpfXJldHVybihfPTA9PT1DLmNtcG4oMSk/cDp3KS5jbXBuKDApPDAmJl8uaWFkZChnKSxffSxFLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZyl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZy5hYnMoKTtpZihnLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBD''@;'; put 'put ''PXRoaXMuY2xvbmUoKSxrPWcuY2xvbmUoKTtDLm5lZ2F0aXZlPTAsay5uZWdhdGl2ZT0wO2Zvcih2YXIgXz0wO0MuaXNFdmVuKCkmJmsuaXNFdmVuKCk7XysrKUMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtDLmlzRXZlbigpOylDLml1c2hybigxKTtmb3IoO2suaXNFdmVu''@;'; put 'put ''KCk7KWsuaXVzaHJuKDEpO3ZhciBwPUMuY21wKGspO2lmKHA8MCl7dmFyIHc9QztDPWssaz13fWVsc2UgaWYoMD09PXB8fDA9PT1rLmNtcG4oMSkpYnJlYWs7Qy5pc3ViKGspfXJldHVybiBrLml1c2hsbihfKX0sRS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5lZ2Nk''@;'; put 'put ''KGcpLmEudW1vZChnKX0sRS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSxFLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LEUucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGcpe3JldHVybiB0''@;'; put 'put ''aGlzLndvcmRzWzBdJmd9LEUucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGcpe0QoIm51bWJlciI9PXR5cGVvZiBnKTt2YXIgQz1nJTI2LGs9KGctQykvMjYsXz0xPDxDO2lmKHRoaXMubGVuZ3RoPD1rKXJldHVybiB0aGlzLl9leHBhbmQoaysxKSx0aGlzLndvcmRzW2tdfD1fLHRoaXM7Zm9y''@;'; put 'put ''KHZhciBwPV8sdz1rOzAhPT1wJiZ3PHRoaXMubGVuZ3RoO3crKyl7dmFyIEs9MHx0aGlzLndvcmRzW3ddO3A9KEsrPXApPj4+MjYsdGhpcy53b3Jkc1t3XT1LJj02NzEwODg2M31yZXR1cm4gMCE9PXAmJih0aGlzLndvcmRzW3ddPXAsdGhpcy5sZW5ndGgrKyksdGhpc30sRS5wcm90b3R5cGUu''@;'; put 'put ''aXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LEUucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oZyl7dmFyIEMsaz1nPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFrKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZrKXJldHVy''@;'; put 'put ''biAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKUM9MTtlbHNle2smJihnPS1nKSxEKGc8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBfPTB8dGhpcy53b3Jkc1swXTtDPV89PT1nPzA6XzxnPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sRS5w''@;'; put 'put ''cm90b3R5cGUuY21wPWZ1bmN0aW9uKGcpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Zy5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWcubmVnYXRpdmUpcmV0dXJuIDE7dmFyIEM9dGhpcy51Y21wKGcpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1D''@;'; put 'put ''OkN9LEUucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oZyl7aWYodGhpcy5sZW5ndGg+Zy5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Zy5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0wfHRoaXMud29yZHNba10scD0wfGcu''@;'; put 'put ''d29yZHNba107aWYoXyE9PXApe188cD9DPS0xOl8+cCYmKEM9MSk7YnJlYWt9fXJldHVybiBDfSxFLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oZyl7cmV0dXJuIDE9PT10aGlzLmNtcG4oZyl9LEUucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGcpe3JldHVybiAxPT09dGhpcy5jbXAoZyl9LEUucHJv''@;'; put 'put ''dG90eXBlLmd0ZW49ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuY21wbihnKT49MH0sRS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcChnKT49MH0sRS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGcpe3JldHVybi0xPT09dGhpcy5jbXBuKGcpfSxFLnByb3RvdHlwZS5s''@;'; put 'put ''dD1mdW5jdGlvbihnKXtyZXR1cm4tMT09PXRoaXMuY21wKGcpfSxFLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmNtcG4oZyk8PTB9LEUucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5jbXAoZyk8PTB9LEUucHJvdG90eXBlLmVxbj1mdW5jdGlv''@;'; put 'put ''bihnKXtyZXR1cm4gMD09PXRoaXMuY21wbihnKX0sRS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZyl7cmV0dXJuIDA9PT10aGlzLmNtcChnKX0sRS5yZWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBGKGcpfSxFLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhpcy5yZWQs''@;'; put 'put ''IkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxEKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGcuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBE''@;'; put 'put ''KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LEUucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5yZWQ9Zyx0aGlzfSxFLnByb3RvdHlwZS5m''@;'; put 'put ''b3JjZVJlZD1mdW5jdGlvbihnKXtyZXR1cm4gRCghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChnKX0sRS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGcpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRTdWI9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxnKX0sRS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBv''@;'; put 'put ''bmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihnKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGcpfSxFLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRNdWw9ZnVuY3Rpb24oZyl7cmV0dXJuIEQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGcpLHRoaXMucmVkLm11bCh0aGlzLGcpfSxFLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGcpe3JldHVybiBE''@;'; put 'put ''KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxnKSx0aGlzLnJlZC5pbXVsKHRoaXMsZyl9LEUucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3''@;'; put 'put ''aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxFLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3Zlcmlm''@;'; put 'put ''eTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sRS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LEUu''@;'; put 'put ''cHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxFLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gRCh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sRS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGcpe3JldHVybiBEKHRoaXMucmVkJiYhZy5yZWQsInJlZFBvdyhub3Jt''@;'; put 'put ''YWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsZyl9O3ZhciB1ZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIGxlKGcsQyl7dGhpcy5uYW1lPWcsdGhpcy5wPW5ldyBFKEMsMTYpLHRoaXMubj10aGlz''@;'; put 'put ''LnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBFKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBhZSgpe2xlLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gVygpe2xlLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gYigpe2xlLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gQSgpe2xlLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gRihn''@;'; put 'put ''KXtpZigic3RyaW5nIj09dHlwZW9mIGcpe3ZhciBDPUUuX3ByaW1lKGcpO3RoaXMubT1DLnAsdGhpcy5wcmltZT1DfWVsc2UgRChnLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPWcsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIEgoZyl7Ri5jYWxsKHRo''@;'; put 'put ''aXMsZyksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgRSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhp''@;'; put 'put ''cy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1sZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigp''@;'; put 'put ''e3ZhciBnPW5ldyBFKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksZ30sbGUucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oZyl7dmFyIEMsaz1nO2Rve3RoaXMuc3BsaXQoayx0aGlzLnRtcCksQz0oaz0oaz10aGlzLmltdWxLKGspKS5pYWRk''@;'; put 'put ''KHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoQz50aGlzLm4pO3ZhciBfPUM8dGhpcy5uPy0xOmsudWNtcCh0aGlzLnApO3JldHVybiAwPT09Xz8oay53b3Jkc1swXT0wLGsubGVuZ3RoPTEpOl8+MD9rLmlzdWIodGhpcy5wKTp2b2lkIDAhPT1rLnN0cmlwP2suc3RyaXAoKTprLl9zdHJp''@;'; put 'put ''cCgpLGt9LGxlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihnLEMpe2cuaXVzaHJuKHRoaXMubiwwLEMpfSxsZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaW11bCh0aGlzLmspfSxUKGFlLGxlKSxhZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZyxDKXtmb3IodmFy''@;'; put 'put ''IGs9NDE5NDMwMyxfPU1hdGgubWluKGcubGVuZ3RoLDkpLHA9MDtwPF87cCsrKUMud29yZHNbcF09Zy53b3Jkc1twXTtpZihDLmxlbmd0aD1fLGcubGVuZ3RoPD05KXJldHVybiBnLndvcmRzWzBdPTAsdm9pZChnLmxlbmd0aD0xKTt2YXIgdz1nLndvcmRzWzldO2ZvcihDLndvcmRzW0MubGVu''@;'; put 'put ''Z3RoKytdPXcmayxwPTEwO3A8Zy5sZW5ndGg7cCsrKXt2YXIgSz0wfGcud29yZHNbcF07Zy53b3Jkc1twLTEwXT0oSyZrKTw8NHx3Pj4+MjIsdz1LfWcud29yZHNbcC0xMF09dz4+Pj0yMixnLmxlbmd0aC09MD09PXcmJmcubGVuZ3RoPjEwPzEwOjl9LGFlLnByb3RvdHlwZS5pbXVsSz1mdW5j''@;'; put 'put ''dGlvbihnKXtnLndvcmRzW2cubGVuZ3RoXT0wLGcud29yZHNbZy5sZW5ndGgrMV09MCxnLmxlbmd0aCs9Mjtmb3IodmFyIEM9MCxrPTA7azxnLmxlbmd0aDtrKyspe3ZhciBfPTB8Zy53b3Jkc1trXTtnLndvcmRzW2tdPTY3MTA4ODYzJihDKz05NzcqXyksQz02NCpfKyhDLzY3MTA4ODY0fDAp''@;'; put 'put ''fXJldHVybiAwPT09Zy53b3Jkc1tnLmxlbmd0aC0xXSYmKGcubGVuZ3RoLS0sMD09PWcud29yZHNbZy5sZW5ndGgtMV0mJmcubGVuZ3RoLS0pLGd9LFQoVyxsZSksVChiLGxlKSxUKEEsbGUpLEEucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGcpe2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3Ro''@;'; put 'put ''O2srKyl7dmFyIF89MTkqKDB8Zy53b3Jkc1trXSkrQyxwPTY3MTA4ODYzJl87Xz4+Pj0yNixnLndvcmRzW2tdPXAsQz1ffXJldHVybiAwIT09QyYmKGcud29yZHNbZy5sZW5ndGgrK109QyksZ30sRS5fcHJpbWU9ZnVuY3Rpb24oZyl7aWYodWVbZ10pcmV0dXJuIHVlW2ddO3ZhciBDO2lmKCJr''@;'; put 'put ''MjU2Ij09PWcpQz1uZXcgYWU7ZWxzZSBpZigicDIyNCI9PT1nKUM9bmV3IFc7ZWxzZSBpZigicDE5MiI9PT1nKUM9bmV3IGI7ZWxzZXtpZigicDI1NTE5IiE9PWcpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrZyk7Qz1uZXcgQX1yZXR1cm4gdWVbZ109QyxDfSxGLnByb3RvdHlw''@;'; put 'put ''ZS5fdmVyaWZ5MT1mdW5jdGlvbihnKXtEKDA9PT1nLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEQoZy5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRi5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZyxDKXtEKCEoZy5uZWdhdGl2''@;'; put 'put ''ZXxDLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxEKGcucmVkJiZnLnJlZD09PUMucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEYucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5p''@;'; put 'put ''cmVkdWNlKGcpLl9mb3JjZVJlZCh0aGlzKTpnLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLm5lZz1mdW5jdGlvbihnKXtyZXR1cm4gZy5pc1plcm8oKT9nLmNsb25lKCk6dGhpcy5tLnN1YihnKS5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmFkZD1mdW5j''@;'; put 'put ''dGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmFkZChDKTtyZXR1cm4gay5jbXAodGhpcy5tKT49MCYmay5pc3ViKHRoaXMubSksay5fZm9yY2VSZWQodGhpcyl9LEYucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5pYWRk''@;'; put 'put ''KEMpO3JldHVybiBrLmNtcCh0aGlzLm0pPj0wJiZrLmlzdWIodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZyxDKXt0aGlzLl92ZXJpZnkyKGcsQyk7dmFyIGs9Zy5zdWIoQyk7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrLl9mb3JjZVJlZCh0aGlzKX0s''@;'; put 'put ''Ri5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihnLEMpe3RoaXMuX3ZlcmlmeTIoZyxDKTt2YXIgaz1nLmlzdWIoQyk7cmV0dXJuIGsuY21wbigwKTwwJiZrLmlhZGQodGhpcy5tKSxrfSxGLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShnKSx0aGlzLmlt''@;'; put 'put ''b2QoZy51c2hsbihDKSl9LEYucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLmltdWwoQykpfSxGLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihnLEMpLHRoaXMuaW1vZChnLm11''@;'; put 'put ''bChDKSl9LEYucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaW11bChnLGcuY2xvbmUoKSl9LEYucHJvdG90eXBlLnNxcj1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5tdWwoZyxnKX0sRi5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihnKXtpZihnLmlzWmVybygpKXJldHVy''@;'; put 'put ''biBnLmNsb25lKCk7dmFyIEM9dGhpcy5tLmFuZGxuKDMpO2lmKEQoQyUyPT0xKSwzPT09Qyl7dmFyIGs9dGhpcy5tLmFkZChuZXcgRSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhnLGspfWZvcih2YXIgXz10aGlzLm0uc3VibigxKSxwPTA7IV8uaXNaZXJvKCkmJjA9PT1fLmFuZGxu''@;'; put 'put ''KDEpOylwKyssXy5pdXNocm4oMSk7RCghXy5pc1plcm8oKSk7dmFyIHc9bmV3IEUoMSkudG9SZWQodGhpcyksSz13LnJlZE5lZygpLHRlPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxjZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGNlPW5ldyBFKDIqY2UqY2UpLnRvUmVkKHRoaXMpOzAhPT10''@;'; put 'put ''aGlzLnBvdyhjZSx0ZSkuY21wKEspOyljZS5yZWRJQWRkKEspO2Zvcih2YXIgaGU9dGhpcy5wb3coY2UsXyksU2U9dGhpcy5wb3coZyxfLmFkZG4oMSkuaXVzaHJuKDEpKSxMZT10aGlzLnBvdyhnLF8pLEhlPXA7MCE9PUxlLmNtcCh3KTspe2Zvcih2YXIgeGU9TGUsRGU9MDswIT09eGUuY21w''@;'; put 'put ''KHcpO0RlKyspeGU9eGUucmVkU3FyKCk7RChEZTxIZSk7dmFyIEJlPXRoaXMucG93KGhlLG5ldyBFKDEpLml1c2hsbihIZS1EZS0xKSk7U2U9U2UucmVkTXVsKEJlKSxoZT1CZS5yZWRTcXIoKSxMZT1MZS5yZWRNdWwoaGUpLEhlPURlfXJldHVybiBTZX0sRi5wcm90b3R5cGUuaW52bT1mdW5j''@;'; put 'put ''dGlvbihnKXt2YXIgQz1nLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09Qy5uZWdhdGl2ZT8oQy5uZWdhdGl2ZT0wLHRoaXMuaW1vZChDKS5yZWROZWcoKSk6dGhpcy5pbW9kKEMpfSxGLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oZyxDKXtpZihDLmlzWmVybygpKXJldHVybiBuZXcgRSgxKS50''@;'; put 'put ''b1JlZCh0aGlzKTtpZigwPT09Qy5jbXBuKDEpKXJldHVybiBnLmNsb25lKCk7dmFyIGs9bmV3IEFycmF5KDE2KTtrWzBdPW5ldyBFKDEpLnRvUmVkKHRoaXMpLGtbMV09Zztmb3IodmFyIF89MjtfPGsubGVuZ3RoO18rKylrW19dPXRoaXMubXVsKGtbXy0xXSxnKTt2YXIgcD1rWzBdLHc9MCxL''@;'; put 'put ''PTAsdGU9Qy5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXRlJiYodGU9MjYpLF89Qy5sZW5ndGgtMTtfPj0wO18tLSl7Zm9yKHZhciBjZT1DLndvcmRzW19dLGhlPXRlLTE7aGU+PTA7aGUtLSl7dmFyIFNlPWNlPj5oZSYxO3AhPT1rWzBdJiYocD10aGlzLnNxcihwKSksMCE9PVNlfHwwIT09dz8o''@;'; put 'put ''dzw8PTEsd3w9U2UsKDQ9PSsrS3x8MD09PV8mJjA9PT1oZSkmJihwPXRoaXMubXVsKHAsa1t3XSksSz0wLHc9MCkpOks9MH10ZT0yNn1yZXR1cm4gcH0sRi5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGcpe3ZhciBDPWcudW1vZCh0aGlzLm0pO3JldHVybiBDPT09Zz9DLmNsb25lKCk6''@;'; put 'put ''Q30sRi5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9Zy5jbG9uZSgpO3JldHVybiBDLnJlZD1udWxsLEN9LEUubW9udD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IEgoZyl9LFQoSCxGKSxILnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMu''@;'; put 'put ''aW1vZChnLnVzaGxuKHRoaXMuc2hpZnQpKX0sSC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oZyl7dmFyIEM9dGhpcy5pbW9kKGcubXVsKHRoaXMucmludikpO3JldHVybiBDLnJlZD1udWxsLEN9LEgucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxD''@;'; put 'put ''LmlzWmVybygpKXJldHVybiBnLndvcmRzWzBdPTAsZy5sZW5ndGg9MSxnO3ZhciBrPWcuaW11bChDKSxfPWsubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLHA9ay5pc3ViKF8pLml1c2hybih0aGlzLnNoaWZ0KSx3PXA7cmV0''@;'; put 'put ''dXJuIHAuY21wKHRoaXMubSk+PTA/dz1wLmlzdWIodGhpcy5tKTpwLmNtcG4oMCk8MCYmKHc9cC5pYWRkKHRoaXMubSkpLHcuX2ZvcmNlUmVkKHRoaXMpfSxILnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZyxDKXtpZihnLmlzWmVybygpfHxDLmlzWmVybygpKXJldHVybiBuZXcgRSgwKS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyk7dmFyIGs9Zy5tdWwoQyksXz1rLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxwPWsuaXN1YihfKS5pdXNocm4odGhpcy5zaGlmdCksdz1wO3JldHVybiBwLmNtcCh0aGlzLm0pPj0wP3c9cC5pc3ViKHRo''@;'; put 'put ''aXMubSk6cC5jbXBuKDApPDAmJih3PXAuaWFkZCh0aGlzLm0pKSx3Ll9mb3JjZVJlZCh0aGlzKX0sSC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5pbW9kKGcuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShNPUkubm1kKE0pLHRo''@;'; put 'put ''aXMpfSw2MTM4OihNLE8sSSk9Pnt2YXIgaj1JKDk4MCksRz1JKDkxOTkpLEQ9SSg3ODU5KSxUPUkoMjE0NCksRT1JKDM2NjMpLHo9SSgzNDgyKSxOPUkoNDgxOCksQj1JKDk1MDkpLkJ1ZmZlcjtNLmV4cG9ydHM9ZnVuY3Rpb24oWixZLFUpe3ZhciBxO3E9Wi5wYWRkaW5nP1oucGFkZGluZzpV''@;'; put 'put ''PzE6NDt2YXIgSixlZT1qKFopLHJlPWVlLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKFkubGVuZ3RoPnJlfHxuZXcgVChZKS5jbXAoZWUubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7Sj1VP04obmV3IFQoWSksZWUpOkUoWSxlZSk7dmFyIGllPUIuYWxs''@;'; put 'put ''b2MocmUtSi5sZW5ndGgpO2lmKEo9Qi5jb25jYXQoW2llLEpdLHJlKSw0PT09cSlyZXR1cm4gZnVuY3Rpb24odWUsbGUpe3ZhciBhZT11ZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxXPXooInNoYTEiKS51cGRhdGUoQi5hbGxvYygwKSkuZGlnZXN0KCksYj1XLmxlbmd0aDtpZigwIT09bGVbMF0p''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7dmFyIEE9bGUuc2xpY2UoMSxiKzEpLEY9bGUuc2xpY2UoYisxKSxIPUQoQSxHKEYsYikpLGc9RChGLEcoSCxhZS1iLTEpKTtpZihmdW5jdGlvbihrLF8pe2s9Qi5mcm9tKGspLF89Qi5mcm9tKF8pO3ZhciBwPTAsdz1rLmxlbmd0''@;'; put 'put ''aDtrLmxlbmd0aCE9PV8ubGVuZ3RoJiYocCsrLHc9TWF0aC5taW4oay5sZW5ndGgsXy5sZW5ndGgpKTtmb3IodmFyIEs9LTE7KytLPHc7KXArPWtbS11eX1tLXTtyZXR1cm4gcH0oVyxnLnNsaWNlKDAsYikpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgQz1i''@;'; put 'put ''OzA9PT1nW0NdOylDKys7aWYoMSE9PWdbQysrXSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gZy5zbGljZShDKX0oZWUsSik7aWYoMT09PXEpcmV0dXJuIGZ1bmN0aW9uKHVlLGxlLGFlKXtmb3IodmFyIFc9bGUuc2xpY2UoMCwyKSxiPTIsQT0wOzAhPT1sZVti''@;'; put 'put ''KytdOylpZihiPj1sZS5sZW5ndGgpe0ErKzticmVha312YXIgRj1sZS5zbGljZSgyLGItMSk7aWYoKCIwMDAyIiE9PVcudG9TdHJpbmcoImhleCIpJiYhYWV8fCIwMDAxIiE9PVcudG9TdHJpbmcoImhleCIpJiZhZSkmJkErKyxGLmxlbmd0aDw4JiZBKyssQSl0aHJvdyBuZXcgRXJyb3IoImRl''@;'; put 'put ''Y3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gbGUuc2xpY2UoYil9KDAsSixVKTtpZigzPT09cSlyZXR1cm4gSjt0aHJvdyBuZXcgRXJyb3IoInVua25vd24gcGFkZGluZyIpfX0sNjU1OTooTSxPLEkpPT57dmFyIGo9SSg5ODApLEc9SSgxNzk4KSxEPUkoMzQ4MiksVD1JKDkxOTkpLEU9SSg3ODU5''@;'; put 'put ''KSx6PUkoMjE0NCksTj1JKDQ4MTgpLEI9SSgzNjYzKSxaPUkoOTUwOSkuQnVmZmVyO00uZXhwb3J0cz1mdW5jdGlvbihZLFUscSl7dmFyIEo7Sj1ZLnBhZGRpbmc/WS5wYWRkaW5nOnE/MTo0O3ZhciBlZSxyZT1qKFkpO2lmKDQ9PT1KKWVlPWZ1bmN0aW9uKGllLHVlKXt2YXIgbGU9aWUubW9k''@;'; put 'put ''dWx1cy5ieXRlTGVuZ3RoKCksYWU9dWUubGVuZ3RoLFc9RCgic2hhMSIpLnVwZGF0ZShaLmFsbG9jKDApKS5kaWdlc3QoKSxiPVcubGVuZ3RoLEE9MipiO2lmKGFlPmxlLUEtMil0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTt2YXIgRj1aLmFsbG9jKGxlLWFlLUEtMiksSD1s''@;'; put 'put ''ZS1iLTEsZz1HKGIpLEM9RShaLmNvbmNhdChbVyxGLFouYWxsb2MoMSwxKSx1ZV0sSCksVChnLEgpKSxrPUUoZyxUKEMsYikpO3JldHVybiBuZXcgeihaLmNvbmNhdChbWi5hbGxvYygxKSxrLENdLGxlKSl9KHJlLFUpO2Vsc2UgaWYoMT09PUopZWU9ZnVuY3Rpb24oaWUsdWUsbGUpe3ZhciBh''@;'; put 'put ''ZSxXPXVlLmxlbmd0aCxiPWllLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKFc+Yi0xMSl0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTtyZXR1cm4gYWU9bGU/Wi5hbGxvYyhiLVctMywyNTUpOmZ1bmN0aW9uKEEpe2Zvcih2YXIgRixIPVouYWxsb2NVbnNhZmUoQSksZz0wLEM9''@;'; put 'put ''RygyKkEpLGs9MDtnPEE7KWs9PT1DLmxlbmd0aCYmKEM9RygyKkEpLGs9MCksKEY9Q1trKytdKSYmKEhbZysrXT1GKTtyZXR1cm4gSH0oYi1XLTMpLG5ldyB6KFouY29uY2F0KFtaLmZyb20oWzAsbGU/MToyXSksYWUsWi5hbGxvYygxKSx1ZV0sYikpfShyZSxVLHEpO2Vsc2V7aWYoMyE9PUop''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHBhZGRpbmciKTtpZigoZWU9bmV3IHooVSkpLmNtcChyZS5tb2R1bHVzKT49MCl0aHJvdyBuZXcgRXJyb3IoImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMiKX1yZXR1cm4gcT9CKGVlLHJlKTpOKGVlLHJlKX19LDQ4MTg6KE0sTyxJKT0+e3ZhciBq''@;'; put 'put ''PUkoMjE0NCksRz1JKDk1MDkpLkJ1ZmZlcjtNLmV4cG9ydHM9ZnVuY3Rpb24oRCxUKXtyZXR1cm4gRy5mcm9tKEQudG9SZWQoai5tb250KFQubW9kdWx1cykpLnJlZFBvdyhuZXcgaihULnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpLnRvQXJyYXkoKSl9fSw3ODU5Ok09PntNLmV4cG9ydHM9''@;'; put 'put ''ZnVuY3Rpb24oTyxJKXtmb3IodmFyIGo9Ty5sZW5ndGgsRz0tMTsrK0c8ajspT1tHXV49SVtHXTtyZXR1cm4gT319LDM2ODk6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtJLnIoTyksSS5kKE8se2RlY29kZTooKT0+cmUsZGVmYXVsdDooKT0+YWUsZW5jb2RlOigpPT5pZSx0b0FTQ0lJOigpPT5s''@;'; put 'put ''ZSx0b1VuaWNvZGU6KCk9PnVlLHVjczJkZWNvZGU6KCk9PlUsdWNzMmVuY29kZTooKT0+cX0pO2NvbnN0IGo9MjE0NzQ4MzY0NyxHPTM2LEQ9L154bi0tLyxUPS9bXlwwLVx4N0ZdLyxFPS9bXHgyRVx1MzAwMlx1RkYwRVx1RkY2MV0vZyx6PXtvdmVyZmxvdzoiT3ZlcmZsb3c6IGlucHV0IG5l''@;'; put 'put ''ZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MiLCJub3QtYmFzaWMiOiJJbGxlZ2FsIGlucHV0ID49IDB4ODAgKG5vdCBhIGJhc2ljIGNvZGUgcG9pbnQpIiwiaW52YWxpZC1pbnB1dCI6IkludmFsaWQgaW5wdXQifSxOPU1hdGguZmxvb3IsQj1TdHJpbmcuZnJvbUNoYXJDb2RlO2Z1bmN0''@;'; put 'put ''aW9uIFooVyl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoeltXXSl9ZnVuY3Rpb24gWShXLGIpe2NvbnN0IEE9Vy5zcGxpdCgiQCIpO2xldCBGPSIiO3JldHVybiBBLmxlbmd0aD4xJiYoRj1BWzBdKyJAIixXPUFbMV0pLEYrZnVuY3Rpb24oZyxDKXtjb25zdCBrPVtdO2xldCBfPWcubGVuZ3RoO2Zv''@;'; put 'put ''cig7Xy0tOylrW19dPUMoZ1tfXSk7cmV0dXJuIGt9KChXPVcucmVwbGFjZShFLCIuIikpLnNwbGl0KCIuIiksYikuam9pbigiLiIpfWZ1bmN0aW9uIFUoVyl7Y29uc3QgYj1bXTtsZXQgQT0wO2NvbnN0IEY9Vy5sZW5ndGg7Zm9yKDtBPEY7KXtjb25zdCBIPVcuY2hhckNvZGVBdChBKyspO2lm''@;'; put 'put ''KEg+PTU1Mjk2JiZIPD01NjMxOSYmQTxGKXtjb25zdCBnPVcuY2hhckNvZGVBdChBKyspOzU2MzIwPT0oNjQ1MTImZyk/Yi5wdXNoKCgoMTAyMyZIKTw8MTApKygxMDIzJmcpKzY1NTM2KTooYi5wdXNoKEgpLEEtLSl9ZWxzZSBiLnB1c2goSCl9cmV0dXJuIGJ9Y29uc3QgcT1XPT5TdHJpbmcu''@;'; put 'put ''ZnJvbUNvZGVQb2ludCguLi5XKSxKPWZ1bmN0aW9uKFcsYil7cmV0dXJuIFcrMjIrNzUqKFc8MjYpLSgoMCE9Yik8PDUpfSxlZT1mdW5jdGlvbihXLGIsQSl7bGV0IEY9MDtmb3IoVz1BP04oVy83MDApOlc+PjEsVys9TihXL2IpO1c+NDU1O0YrPUcpVz1OKFcvMzUpO3JldHVybiBOKEYrMzYq''@;'; put 'put ''Vy8oVyszOCkpfSxyZT1mdW5jdGlvbihXKXtjb25zdCBiPVtdLEE9Vy5sZW5ndGg7bGV0IEY9MCxIPTEyOCxnPTcyLEM9Vy5sYXN0SW5kZXhPZigiLSIpO0M8MCYmKEM9MCk7Zm9yKGxldCBfPTA7XzxDOysrXylXLmNoYXJDb2RlQXQoXyk+PTEyOCYmWigibm90LWJhc2ljIiksYi5wdXNoKFcu''@;'; put 'put ''Y2hhckNvZGVBdChfKSk7Zm9yKGxldCBfPUM+MD9DKzE6MDtfPEE7KXtjb25zdCBwPUY7Zm9yKGxldCBLPTEsdGU9Rzs7dGUrPUcpe18+PUEmJlooImludmFsaWQtaW5wdXQiKTtjb25zdCBjZT0oaz1XLmNoYXJDb2RlQXQoXysrKSk+PTQ4JiZrPDU4P2stNDgrMjY6az49NjUmJms8OTE/ay02''@;'; put 'put ''NTprPj05NyYmazwxMjM/ay05NzpHO2NlPj1HJiZaKCJpbnZhbGlkLWlucHV0IiksY2U+Tigoai1GKS9LKSYmWigib3ZlcmZsb3ciKSxGKz1jZSpLO2NvbnN0IGhlPXRlPD1nPzE6dGU+PWcrMjY/MjY6dGUtZztpZihjZTxoZSlicmVhaztjb25zdCBTZT1HLWhlO0s+TihqL1NlKSYmWigib3Zl''@;'; put 'put ''cmZsb3ciKSxLKj1TZX1jb25zdCB3PWIubGVuZ3RoKzE7Zz1lZShGLXAsdywwPT1wKSxOKEYvdyk+ai1IJiZaKCJvdmVyZmxvdyIpLEgrPU4oRi93KSxGJT13LGIuc3BsaWNlKEYrKywwLEgpfXZhciBrO3JldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5iKX0saWU9ZnVuY3Rpb24oVyl7''@;'; put 'put ''Y29uc3QgYj1bXSxBPShXPVUoVykpLmxlbmd0aDtsZXQgRj0xMjgsSD0wLGc9NzI7Zm9yKGNvbnN0IF8gb2YgVylfPDEyOCYmYi5wdXNoKEIoXykpO2NvbnN0IEM9Yi5sZW5ndGg7bGV0IGs9Qztmb3IoQyYmYi5wdXNoKCItIik7azxBOyl7bGV0IF89ajtmb3IoY29uc3QgdyBvZiBXKXc+PUYm''@;'; put 'put ''Jnc8XyYmKF89dyk7Y29uc3QgcD1rKzE7Xy1GPk4oKGotSCkvcCkmJlooIm92ZXJmbG93IiksSCs9KF8tRikqcCxGPV87Zm9yKGNvbnN0IHcgb2YgVylpZih3PEYmJisrSD5qJiZaKCJvdmVyZmxvdyIpLHc9PT1GKXtsZXQgSz1IO2ZvcihsZXQgdGU9Rzs7dGUrPUcpe2NvbnN0IGNlPXRlPD1n''@;'; put 'put ''PzE6dGU+PWcrMjY/MjY6dGUtZztpZihLPGNlKWJyZWFrO2NvbnN0IGhlPUstY2UsU2U9Ry1jZTtiLnB1c2goQihKKGNlK2hlJVNlLDApKSksSz1OKGhlL1NlKX1iLnB1c2goQihKKEssMCkpKSxnPWVlKEgscCxrPT09QyksSD0wLCsra30rK0gsKytGfXJldHVybiBiLmpvaW4oIiIpfSx1ZT1m''@;'; put 'put ''dW5jdGlvbihXKXtyZXR1cm4gWShXLGZ1bmN0aW9uKGIpe3JldHVybiBELnRlc3QoYik/cmUoYi5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKTpifSl9LGxlPWZ1bmN0aW9uKFcpe3JldHVybiBZKFcsZnVuY3Rpb24oYil7cmV0dXJuIFQudGVzdChiKT8ieG4tLSIraWUoYik6Yn0pfSxhZT17dmVy''@;'; put 'put ''c2lvbjoiMi4xLjAiLHVjczI6e2RlY29kZTpVLGVuY29kZTpxfSxkZWNvZGU6cmUsZW5jb2RlOmllLHRvQVNDSUk6bGUsdG9Vbmljb2RlOnVlfX0sNzEyOTooTSxPKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgST1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGooRCl7dHJ5''@;'; put 'put ''e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoRC5yZXBsYWNlKC9cKy9nLCIgIikpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBHKEQpe3RyeXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEQpfWNhdGNoe3JldHVybiBudWxsfX1PLnN0cmluZ2lmeT1mdW5jdGlvbihELFQpe1Q9VHx8''@;'; put 'put ''IiI7dmFyIEUseixOPVtdO2Zvcih6IGluInN0cmluZyIhPXR5cGVvZiBUJiYoVD0iPyIpLEQpaWYoSS5jYWxsKEQseikpe2lmKChFPURbel0pfHxudWxsIT1FJiYhaXNOYU4oRSl8fChFPSIiKSx6PUcoeiksRT1HKEUpLG51bGw9PT16fHxudWxsPT09RSljb250aW51ZTtOLnB1c2goeisiPSIr''@;'; put 'put ''RSl9cmV0dXJuIE4ubGVuZ3RoP1QrTi5qb2luKCImIik6IiJ9LE8ucGFyc2U9ZnVuY3Rpb24oRCl7Zm9yKHZhciBULEU9LyhbXj0/IyZdKyk9PyhbXiZdKikvZyx6PXt9O1Q9RS5leGVjKEQpOyl7dmFyIE49aihUWzFdKSxCPWooVFsyXSk7bnVsbD09PU58fG51bGw9PT1CfHxOIGluIHp8fCh6''@;'; put 'put ''W05dPUIpfXJldHVybiB6fX0sMTc5ODooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz02NTUzNixUPUkoOTUwOSkuQnVmZmVyLEU9SS5nLmNyeXB0b3x8SS5nLm1zQ3J5cHRvO00uZXhwb3J0cz1FJiZFLmdldFJhbmRvbVZhbHVlcz9mdW5jdGlvbih6LE4pe2lmKHo+NDI5''@;'; put 'put ''NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBCPVQuYWxsb2NVbnNhZmUoeik7aWYoej4wKWlmKHo+Rylmb3IodmFyIFo9MDtaPHo7Wis9RylFLmdldFJhbmRvbVZhbHVlcyhCLnNsaWNlKFosWitHKSk7ZWxzZSBFLmdl''@;'; put 'put ''dFJhbmRvbVZhbHVlcyhCKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgTj9qLm5leHRUaWNrKGZ1bmN0aW9uKCl7TihudWxsLEIpfSk6Qn06ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlz''@;'; put 'put ''IGJyb3dzZXIuXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9fSw3OTYzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KTtmdW5jdGlvbiBHKCl7dGhyb3cgbmV3IEVycm9yKCJzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5v''@;'; put 'put ''dCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9dmFyIEQ9SSg5NTA5KSxUPUkoMTc5OCksRT1ELkJ1ZmZlcix6PUQua01heExlbmd0aCxOPUkuZy5jcnlwdG98fEkuZy5tc0NyeXB0byxCPU1hdGgucG93KDIs''@;'; put 'put ''MzIpLTE7ZnVuY3Rpb24gWihxLEope2lmKCJudW1iZXIiIT10eXBlb2YgcXx8cSE9cSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIG51bWJlciIpO2lmKHE+Qnx8cTwwKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdWludDMyIik7aWYocT56fHxx''@;'; put 'put ''PkopdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBZKHEsSixlZSl7aWYoIm51bWJlciIhPXR5cGVvZiBxfHxxIT1xKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpO2lmKHE+Qnx8cTwwKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoInNpemUgbXVzdCBiZSBhIHVpbnQzMiIpO2lmKHErSj5lZXx8cT56KXRocm93IG5ldyBSYW5nZUVycm9yKCJidWZmZXIgdG9vIHNtYWxsIil9ZnVuY3Rpb24gVShxLEosZWUscmUpe2lmKGouYnJvd3Nlcil7dmFyIHVlPW5ldyBVaW50OEFycmF5KHEuYnVmZmVyLEosZWUpO3JldHVy''@;'; put 'put ''biBOLmdldFJhbmRvbVZhbHVlcyh1ZSkscmU/dm9pZCBqLm5leHRUaWNrKGZ1bmN0aW9uKCl7cmUobnVsbCxxKX0pOnF9aWYoIXJlKXJldHVybiBUKGVlKS5jb3B5KHEsSikscTtUKGVlLGZ1bmN0aW9uKGxlLGFlKXtpZihsZSlyZXR1cm4gcmUobGUpO2FlLmNvcHkocSxKKSxyZShudWxsLHEp''@;'; put 'put ''fSl9TiYmTi5nZXRSYW5kb21WYWx1ZXN8fCFqLmJyb3dzZXI/KE8ucmFuZG9tRmlsbD1mdW5jdGlvbihxLEosZWUscmUpe2lmKCEoRS5pc0J1ZmZlcihxKXx8cSBpbnN0YW5jZW9mIEkuZy5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJlIGEg''@;'; put 'put ''QnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgSilyZT1KLEo9MCxlZT1xLmxlbmd0aDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBlZSlyZT1lZSxlZT1xLmxlbmd0aC1KO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIHJlKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoJyJjYiIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7cmV0dXJuIFooSixxLmxlbmd0aCksWShlZSxKLHEubGVuZ3RoKSxVKHEsSixlZSxyZSl9LE8ucmFuZG9tRmlsbFN5bmM9ZnVuY3Rpb24ocSxKLGVlKXtpZih2b2lkIDA9PT1KJiYoSj0wKSwhKEUuaXNCdWZmZXIocSl8fHEg''@;'; put 'put ''aW5zdGFuY2VvZiBJLmcuVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZiIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7cmV0dXJuIFooSixxLmxlbmd0aCksdm9pZCAwPT09ZWUmJihlZT1xLmxlbmd0aC1KKSxZKGVlLEoscS5sZW5ndGgpLFUo''@;'; put 'put ''cSxKLGVlKX0pOihPLnJhbmRvbUZpbGw9RyxPLnJhbmRvbUZpbGxTeW5jPUcpfSw0MjgxOk09PnsidXNlIHN0cmljdCI7dmFyIE89e307ZnVuY3Rpb24gSShHLEQsVCl7VHx8KFQ9RXJyb3IpO3ZhciBFPWZ1bmN0aW9uKHope3ZhciBOLEI7ZnVuY3Rpb24gWihZLFUscSl7cmV0dXJuIHouY2Fs''@;'; put 'put ''bCh0aGlzLCJzdHJpbmciPT10eXBlb2YgRD9EOkQoWSxVLHEpKXx8dGhpc31yZXR1cm4gQj16LChOPVopLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEIucHJvdG90eXBlKSxOLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1OLE4uX19wcm90b19fPUIsWn0oVCk7RS5wcm90b3R5cGUubmFtZT1ULm5h''@;'; put 'put ''bWUsRS5wcm90b3R5cGUuY29kZT1HLE9bR109RX1mdW5jdGlvbiBqKEcsRCl7aWYoQXJyYXkuaXNBcnJheShHKSl7dmFyIFQ9Ry5sZW5ndGg7cmV0dXJuIEc9Ry5tYXAoZnVuY3Rpb24oRSl7cmV0dXJuIFN0cmluZyhFKX0pLFQ+Mj8ib25lIG9mICIuY29uY2F0KEQsIiAiKS5jb25jYXQoRy5z''@;'; put 'put ''bGljZSgwLFQtMSkuam9pbigiLCAiKSwiLCBvciAiKStHW1QtMV06Mj09PVQ/Im9uZSBvZiAiLmNvbmNhdChELCIgIikuY29uY2F0KEdbMF0sIiBvciAiKS5jb25jYXQoR1sxXSk6Im9mICIuY29uY2F0KEQsIiAiKS5jb25jYXQoR1swXSl9cmV0dXJuIm9mICIuY29uY2F0KEQsIiAiKS5jb25j''@;'; put 'put ''YXQoU3RyaW5nKEcpKX1JKCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLGZ1bmN0aW9uKEcsRCl7cmV0dXJuJ1RoZSB2YWx1ZSAiJytEKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAiJytHKyciJ30sVHlwZUVycm9yKSxJKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsZnVuY3Rpb24oRyxELFQpe3Zh''@;'; put 'put ''ciBFLEIsWSxxO2lmKCJzdHJpbmciPT10eXBlb2YgRCYmIm5vdCAiPT09RC5zdWJzdHIoMCw0KT8oRT0ibXVzdCBub3QgYmUiLEQ9RC5yZXBsYWNlKC9ebm90IC8sIiIpKTpFPSJtdXN0IGJlIixZPUcsKHZvaWQgMD09PXF8fHE+WS5sZW5ndGgpJiYocT1ZLmxlbmd0aCksIiBhcmd1bWVudCI9''@;'; put 'put ''PT1ZLnN1YnN0cmluZyhxLTkscSkpQj0iVGhlICIuY29uY2F0KEcsIiAiKS5jb25jYXQoRSwiICIpLmNvbmNhdChqKEQsInR5cGUiKSk7ZWxzZXt2YXIgWj1mdW5jdGlvbihZLFUscSl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBxJiYocT0wKSwhKHErMT5ZLmxlbmd0aCkmJi0xIT09WS5pbmRl''@;'; put 'put ''eE9mKCIuIixxKX0oRyk/InByb3BlcnR5IjoiYXJndW1lbnQiO0I9J1RoZSAiJy5jb25jYXQoRywnIiAnKS5jb25jYXQoWiwiICIpLmNvbmNhdChFLCIgIikuY29uY2F0KGooRCwidHlwZSIpKX1yZXR1cm4gQisiLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5cGVvZiBUKX0sVHlwZUVycm9y''@;'; put 'put ''KSxJKCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GIiwic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSxJKCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsZnVuY3Rpb24oRyl7cmV0dXJuIlRoZSAiK0crIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIn0pLEkoIkVSUl9TVFJFQU1fUFJF''@;'; put 'put ''TUFUVVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3NlIiksSSgiRVJSX1NUUkVBTV9ERVNUUk9ZRUQiLGZ1bmN0aW9uKEcpe3JldHVybiJDYW5ub3QgY2FsbCAiK0crIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkIn0pLEkoIkVSUl9NVUxUSVBMRV9DQUxMQkFDSyIsIkNhbGxiYWNrIGNh''@;'; put 'put ''bGxlZCBtdWx0aXBsZSB0aW1lcyIpLEkoIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIiksSSgiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQiLCJ3cml0ZSBhZnRlciBlbmQiKSxJKCJFUlJfU1RSRUFNX05VTExfVkFMVUVTIiwiTWF5IG5vdCB3''@;'; put 'put ''cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iLFR5cGVFcnJvciksSSgiRVJSX1VOS05PV05fRU5DT0RJTkciLGZ1bmN0aW9uKEcpe3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK0d9LFR5cGVFcnJvciksSSgiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsInN0cmVhbS51''@;'; put 'put ''bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IiksTS5leHBvcnRzLnE9T30sNjc1MzooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oVSl7dmFyIHE9W107Zm9yKHZhciBKIGluIFUpcS5wdXNoKEopO3JldHVybiBxfTtNLmV4cG9ydHM9''@;'; put 'put ''Qjt2YXIgRD1JKDk0ODEpLFQ9SSg0MjI5KTtJKDU3MTcpKEIsRCk7Zm9yKHZhciBFPUcoVC5wcm90b3R5cGUpLHo9MDt6PEUubGVuZ3RoO3orKyl7dmFyIE49RVt6XTtCLnByb3RvdHlwZVtOXXx8KEIucHJvdG90eXBlW05dPVQucHJvdG90eXBlW05dKX1mdW5jdGlvbiBCKFUpe2lmKCEodGhp''@;'; put 'put ''cyBpbnN0YW5jZW9mIEIpKXJldHVybiBuZXcgQihVKTtELmNhbGwodGhpcyxVKSxULmNhbGwodGhpcyxVKSx0aGlzLmFsbG93SGFsZk9wZW49ITAsVSYmKCExPT09VS5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLCExPT09VS53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLCExPT09''@;'; put 'put ''VS5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZSgiZW5kIixaKSkpfWZ1bmN0aW9uIFooKXt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxqLm5leHRUaWNrKFksdGhpcyl9ZnVuY3Rpb24gWShVKXtVLmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShC''@;'; put 'put ''LnByb3RvdHlwZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLnByb3RvdHlwZSwid3JpdGFibGVCdWZmZXIiLHtlbnVt''@;'; put 'put ''ZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRo''@;'; put 'put ''aXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKFUpe3ZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl9y''@;'; put 'put ''ZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1VLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPVUpfX0pfSwyNzI1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPUc7dmFyIGo9SSg0NjA1KTtmdW5jdGlvbiBHKEQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEcpKXJldHVybiBuZXcg''@;'; put 'put ''RyhEKTtqLmNhbGwodGhpcyxEKX1JKDU3MTcpKEcsaiksRy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihELFQsRSl7RShudWxsLEQpfX0sOTQ4MTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqLEc9SSg0MTU1KTtNLmV4cG9ydHM9RixGLlJlYWRhYmxlU3RhdGU9QSxJKDcxODcp''@;'; put 'put ''O3ZhciBOLEQ9ZnVuY3Rpb24oQmUsR2Upe3JldHVybiBCZS5saXN0ZW5lcnMoR2UpLmxlbmd0aH0sVD1JKDI1MDMpLEU9SSg4NzY0KS5CdWZmZXIsej0odm9pZCAwIT09SS5nP0kuZzp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30pLlVpbnQ4QXJyYXl8''@;'; put 'put ''fGZ1bmN0aW9uKCl7fSxCPUkoNDYxNik7Tj1CJiZCLmRlYnVnbG9nP0IuZGVidWdsb2coInN0cmVhbSIpOmZ1bmN0aW9uKCl7fTt2YXIgWixZLFUscT1JKDczMjcpLEo9SSgxMTk1KSxlZT1JKDI0NTcpLmdldEhpZ2hXYXRlck1hcmsscmU9SSg0MjgxKS5xLGllPXJlLkVSUl9JTlZBTElEX0FS''@;'; put 'put ''R19UWVBFLHVlPXJlLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsbGU9cmUuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsYWU9cmUuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDtJKDU3MTcpKEYsVCk7dmFyIFc9Si5lcnJvck9yRGVzdHJveSxiPVsiZXJyb3IiLCJjbG9z''@;'; put 'put ''ZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIEEoQmUsR2UsVWUpe2o9anx8SSg2NzUzKSwiYm9vbGVhbiIhPXR5cGVvZiBVZSYmKFVlPUdlIGluc3RhbmNlb2YgaiksdGhpcy5vYmplY3RNb2RlPSEhKEJlPUJlfHx7fSkub2JqZWN0TW9kZSxVZSYmKHRoaXMub2JqZWN0''@;'; put 'put ''TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhQmUucmVhZGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9ZWUodGhpcyxCZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIixVZSksdGhpcy5idWZmZXI9bmV3IHEsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0Nv''@;'; put 'put ''dW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVz''@;'; put 'put ''dW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09QmUuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFCZS5hdXRvRGVzdHJveSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1CZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0''@;'; put 'put ''aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxCZS5lbmNvZGluZyYmKFp8fChaPUkoMjU1MykuU3RyaW5nRGVjb2RlciksdGhpcy5kZWNvZGVyPW5ldyBaKEJlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPUJl''@;'; put 'put ''LmVuY29kaW5nKX1mdW5jdGlvbiBGKEJlKXtpZihqPWp8fEkoNjc1MyksISh0aGlzIGluc3RhbmNlb2YgRikpcmV0dXJuIG5ldyBGKEJlKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBBKEJlLHRoaXMsdGhpcyBpbnN0YW5jZW9mIGopLHRoaXMucmVhZGFibGU9ITAsQmUmJigiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgQmUucmVhZCYmKHRoaXMuX3JlYWQ9QmUucmVhZCksImZ1bmN0aW9uIj09dHlwZW9mIEJlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PUJlLmRlc3Ryb3kpKSxULmNhbGwodGhpcyl9ZnVuY3Rpb24gSChCZSxHZSxVZSxxZSxvdCl7TigicmVhZGFibGVBZGRDaHVuayIsR2UpO3Zh''@;'; put 'put ''ciBGZSxFZSxJZSxYZSx0dCx3ZT1CZS5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09R2Upd2UucmVhZGluZz0hMSxmdW5jdGlvbihFZSxJZSl7aWYoTigib25Fb2ZDaHVuayIpLCFJZS5lbmRlZCl7aWYoSWUuZGVjb2Rlcil7dmFyIFhlPUllLmRlY29kZXIuZW5kKCk7WGUmJlhlLmxlbmd0aCYm''@;'; put 'put ''KEllLmJ1ZmZlci5wdXNoKFhlKSxJZS5sZW5ndGgrPUllLm9iamVjdE1vZGU/MTpYZS5sZW5ndGgpfUllLmVuZGVkPSEwLEllLnN5bmM/XyhFZSk6KEllLm5lZWRSZWFkYWJsZT0hMSxJZS5lbWl0dGVkUmVhZGFibGV8fChJZS5lbWl0dGVkUmVhZGFibGU9ITAscChFZSkpKX19KEJlLHdlKTtl''@;'; put 'put ''bHNlIGlmKG90fHwoRWU9d2UsRS5pc0J1ZmZlcih0dD1JZT1HZSl8fHR0IGluc3RhbmNlb2Ygenx8InN0cmluZyI9PXR5cGVvZiBJZXx8dm9pZCAwPT09SWV8fEVlLm9iamVjdE1vZGV8fChYZT1uZXcgaWUoImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciIsIlVpbnQ4QXJyYXkiXSxJZSkpLEZl''@;'; put 'put ''PVhlKSxGZSlXKEJlLEZlKTtlbHNlIGlmKHdlLm9iamVjdE1vZGV8fEdlJiZHZS5sZW5ndGg+MClpZigic3RyaW5nIj09dHlwZW9mIEdlfHx3ZS5vYmplY3RNb2RlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoR2UpPT09RS5wcm90b3R5cGV8fChHZT1mdW5jdGlvbihFZSl7cmV0dXJuIEUuZnJv''@;'; put 'put ''bShFZSl9KEdlKSkscWUpd2UuZW5kRW1pdHRlZD9XKEJlLG5ldyBhZSk6ZyhCZSx3ZSxHZSwhMCk7ZWxzZSBpZih3ZS5lbmRlZClXKEJlLG5ldyB1ZSk7ZWxzZXtpZih3ZS5kZXN0cm95ZWQpcmV0dXJuITE7d2UucmVhZGluZz0hMSx3ZS5kZWNvZGVyJiYhVWU/KEdlPXdlLmRlY29kZXIud3Jp''@;'; put 'put ''dGUoR2UpLHdlLm9iamVjdE1vZGV8fDAhPT1HZS5sZW5ndGg/ZyhCZSx3ZSxHZSwhMSk6dyhCZSx3ZSkpOmcoQmUsd2UsR2UsITEpfWVsc2UgcWV8fCh3ZS5yZWFkaW5nPSExLHcoQmUsd2UpKTtyZXR1cm4hd2UuZW5kZWQmJih3ZS5sZW5ndGg8d2UuaGlnaFdhdGVyTWFya3x8MD09PXdlLmxl''@;'; put 'put ''bmd0aCl9ZnVuY3Rpb24gZyhCZSxHZSxVZSxxZSl7R2UuZmxvd2luZyYmMD09PUdlLmxlbmd0aCYmIUdlLnN5bmM/KEdlLmF3YWl0RHJhaW49MCxCZS5lbWl0KCJkYXRhIixVZSkpOihHZS5sZW5ndGgrPUdlLm9iamVjdE1vZGU/MTpVZS5sZW5ndGgscWU/R2UuYnVmZmVyLnVuc2hpZnQoVWUp''@;'; put 'put ''OkdlLmJ1ZmZlci5wdXNoKFVlKSxHZS5uZWVkUmVhZGFibGUmJl8oQmUpKSx3KEJlLEdlKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUm''@;'; put 'put ''JnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oQmUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1CZSl9fSksRi5wcm90b3R5cGUuZGVzdHJveT1KLmRlc3Ryb3ksRi5wcm90b3R5cGUuX3VuZGVzdHJveT1KLnVu''@;'; put 'put ''ZGVzdHJveSxGLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihCZSxHZSl7R2UoQmUpfSxGLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKEJlLEdlKXt2YXIgVWUscWU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gcWUub2JqZWN0TW9kZT9VZT0hMDoic3RyaW5nIj09dHlwZW9mIEJlJiYo''@;'; put 'put ''KEdlPUdlfHxxZS5kZWZhdWx0RW5jb2RpbmcpIT09cWUuZW5jb2RpbmcmJihCZT1FLmZyb20oQmUsR2UpLEdlPSIiKSxVZT0hMCksSCh0aGlzLEJlLEdlLCExLFVlKX0sRi5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihCZSl7cmV0dXJuIEgodGhpcyxCZSxudWxsLCEwLCExKX0sRi5wcm90''@;'; put 'put ''b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sRi5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24oQmUpe1p8fChaPUkoMjU1MykuU3RyaW5nRGVjb2Rlcik7dmFyIEdlPW5ldyBaKEJlKTt0aGlzLl9yZWFkYWJsZVN0''@;'; put 'put ''YXRlLmRlY29kZXI9R2UsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9yKHZhciBVZT10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkLHFlPSIiO251bGwhPT1VZTspcWUrPUdlLndyaXRlKFVlLmRhdGEpLFVl''@;'; put 'put ''PVVlLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1xZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChxZSksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9cWUubGVuZ3RoLHRoaXN9O3ZhciBDPTEwNzM3NDE4MjQ7ZnVuY3Rpb24g''@;'; put 'put ''ayhCZSxHZSl7cmV0dXJuIEJlPD0wfHwwPT09R2UubGVuZ3RoJiZHZS5lbmRlZD8wOkdlLm9iamVjdE1vZGU/MTpCZSE9QmU/R2UuZmxvd2luZyYmR2UubGVuZ3RoP0dlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOkdlLmxlbmd0aDooQmU+R2UuaGlnaFdhdGVyTWFyayYmKEdlLmhpZ2hXYXRl''@;'; put 'put ''ck1hcms9KChVZT1CZSk+PUM/VWU9QzooVWUtLSxVZXw9VWU+Pj4xLFVlfD1VZT4+PjIsVWV8PVVlPj4+NCxVZXw9VWU+Pj44LFVlfD1VZT4+PjE2LFVlKyspLFVlKSksQmU8PUdlLmxlbmd0aD9CZTpHZS5lbmRlZD9HZS5sZW5ndGg6KEdlLm5lZWRSZWFkYWJsZT0hMCwwKSk7dmFyIFVlfWZ1''@;'; put 'put ''bmN0aW9uIF8oQmUpe3ZhciBHZT1CZS5fcmVhZGFibGVTdGF0ZTtOKCJlbWl0UmVhZGFibGUiLEdlLm5lZWRSZWFkYWJsZSxHZS5lbWl0dGVkUmVhZGFibGUpLEdlLm5lZWRSZWFkYWJsZT0hMSxHZS5lbWl0dGVkUmVhZGFibGV8fChOKCJlbWl0UmVhZGFibGUiLEdlLmZsb3dpbmcpLEdlLmVt''@;'; put 'put ''aXR0ZWRSZWFkYWJsZT0hMCxHLm5leHRUaWNrKHAsQmUpKX1mdW5jdGlvbiBwKEJlKXt2YXIgR2U9QmUuX3JlYWRhYmxlU3RhdGU7TigiZW1pdFJlYWRhYmxlXyIsR2UuZGVzdHJveWVkLEdlLmxlbmd0aCxHZS5lbmRlZCksR2UuZGVzdHJveWVkfHwhR2UubGVuZ3RoJiYhR2UuZW5kZWR8fChC''@;'; put 'put ''ZS5lbWl0KCJyZWFkYWJsZSIpLEdlLmVtaXR0ZWRSZWFkYWJsZT0hMSksR2UubmVlZFJlYWRhYmxlPSFHZS5mbG93aW5nJiYhR2UuZW5kZWQmJkdlLmxlbmd0aDw9R2UuaGlnaFdhdGVyTWFyayxTZShCZSl9ZnVuY3Rpb24gdyhCZSxHZSl7R2UucmVhZGluZ01vcmV8fChHZS5yZWFkaW5nTW9y''@;'; put 'put ''ZT0hMCxHLm5leHRUaWNrKEssQmUsR2UpKX1mdW5jdGlvbiBLKEJlLEdlKXtmb3IoOyFHZS5yZWFkaW5nJiYhR2UuZW5kZWQmJihHZS5sZW5ndGg8R2UuaGlnaFdhdGVyTWFya3x8R2UuZmxvd2luZyYmMD09PUdlLmxlbmd0aCk7KXt2YXIgVWU9R2UubGVuZ3RoO2lmKE4oIm1heWJlUmVhZE1v''@;'; put 'put ''cmUgcmVhZCAwIiksQmUucmVhZCgwKSxVZT09PUdlLmxlbmd0aClicmVha31HZS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiB0ZShCZSl7dmFyIEdlPUJlLl9yZWFkYWJsZVN0YXRlO0dlLnJlYWRhYmxlTGlzdGVuaW5nPUJlLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCxHZS5yZXN1bWVT''@;'; put 'put ''Y2hlZHVsZWQmJiFHZS5wYXVzZWQ/R2UuZmxvd2luZz0hMDpCZS5saXN0ZW5lckNvdW50KCJkYXRhIik+MCYmQmUucmVzdW1lKCl9ZnVuY3Rpb24gY2UoQmUpe04oInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCIpLEJlLnJlYWQoMCl9ZnVuY3Rpb24gaGUoQmUsR2Upe04oInJlc3VtZSIsR2Uu''@;'; put 'put ''cmVhZGluZyksR2UucmVhZGluZ3x8QmUucmVhZCgwKSxHZS5yZXN1bWVTY2hlZHVsZWQ9ITEsQmUuZW1pdCgicmVzdW1lIiksU2UoQmUpLEdlLmZsb3dpbmcmJiFHZS5yZWFkaW5nJiZCZS5yZWFkKDApfWZ1bmN0aW9uIFNlKEJlKXt2YXIgR2U9QmUuX3JlYWRhYmxlU3RhdGU7Zm9yKE4oImZs''@;'; put 'put ''b3ciLEdlLmZsb3dpbmcpO0dlLmZsb3dpbmcmJm51bGwhPT1CZS5yZWFkKCk7KTt9ZnVuY3Rpb24gTGUoQmUsR2Upe3JldHVybiAwPT09R2UubGVuZ3RoP251bGw6KEdlLm9iamVjdE1vZGU/VWU9R2UuYnVmZmVyLnNoaWZ0KCk6IUJlfHxCZT49R2UubGVuZ3RoPyhVZT1HZS5kZWNvZGVyP0dl''@;'; put 'put ''LmJ1ZmZlci5qb2luKCIiKToxPT09R2UuYnVmZmVyLmxlbmd0aD9HZS5idWZmZXIuZmlyc3QoKTpHZS5idWZmZXIuY29uY2F0KEdlLmxlbmd0aCksR2UuYnVmZmVyLmNsZWFyKCkpOlVlPUdlLmJ1ZmZlci5jb25zdW1lKEJlLEdlLmRlY29kZXIpLFVlKTt2YXIgVWV9ZnVuY3Rpb24gSGUoQmUp''@;'; put 'put ''e3ZhciBHZT1CZS5fcmVhZGFibGVTdGF0ZTtOKCJlbmRSZWFkYWJsZSIsR2UuZW5kRW1pdHRlZCksR2UuZW5kRW1pdHRlZHx8KEdlLmVuZGVkPSEwLEcubmV4dFRpY2soeGUsR2UsQmUpKX1mdW5jdGlvbiB4ZShCZSxHZSl7aWYoTigiZW5kUmVhZGFibGVOVCIsQmUuZW5kRW1pdHRlZCxCZS5s''@;'; put 'put ''ZW5ndGgpLCFCZS5lbmRFbWl0dGVkJiYwPT09QmUubGVuZ3RoJiYoQmUuZW5kRW1pdHRlZD0hMCxHZS5yZWFkYWJsZT0hMSxHZS5lbWl0KCJlbmQiKSxCZS5hdXRvRGVzdHJveSkpe3ZhciBVZT1HZS5fd3JpdGFibGVTdGF0ZTsoIVVlfHxVZS5hdXRvRGVzdHJveSYmVWUuZmluaXNoZWQpJiZH''@;'; put 'put ''ZS5kZXN0cm95KCl9fWZ1bmN0aW9uIERlKEJlLEdlKXtmb3IodmFyIFVlPTAscWU9QmUubGVuZ3RoO1VlPHFlO1VlKyspaWYoQmVbVWVdPT09R2UpcmV0dXJuIFVlO3JldHVybi0xfUYucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oQmUpe04oInJlYWQiLEJlKSxCZT1wYXJzZUludChCZSwxMCk7''@;'; put 'put ''dmFyIEdlPXRoaXMuX3JlYWRhYmxlU3RhdGUsVWU9QmU7aWYoMCE9PUJlJiYoR2UuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09QmUmJkdlLm5lZWRSZWFkYWJsZSYmKCgwIT09R2UuaGlnaFdhdGVyTWFyaz9HZS5sZW5ndGg+PUdlLmhpZ2hXYXRlck1hcms6R2UubGVuZ3RoPjApfHxHZS5lbmRl''@;'; put 'put ''ZCkpcmV0dXJuIE4oInJlYWQ6IGVtaXRSZWFkYWJsZSIsR2UubGVuZ3RoLEdlLmVuZGVkKSwwPT09R2UubGVuZ3RoJiZHZS5lbmRlZD9IZSh0aGlzKTpfKHRoaXMpLG51bGw7aWYoMD09PShCZT1rKEJlLEdlKSkmJkdlLmVuZGVkKXJldHVybiAwPT09R2UubGVuZ3RoJiZIZSh0aGlzKSxudWxs''@;'; put 'put ''O3ZhciBxZSxvdD1HZS5uZWVkUmVhZGFibGU7cmV0dXJuIE4oIm5lZWQgcmVhZGFibGUiLG90KSwoMD09PUdlLmxlbmd0aHx8R2UubGVuZ3RoLUJlPEdlLmhpZ2hXYXRlck1hcmspJiZOKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsb3Q9ITApLEdlLmVuZGVkfHxHZS5yZWFkaW5nP04o''@;'; put 'put ''InJlYWRpbmcgb3IgZW5kZWQiLG90PSExKTpvdCYmKE4oImRvIHJlYWQiKSxHZS5yZWFkaW5nPSEwLEdlLnN5bmM9ITAsMD09PUdlLmxlbmd0aCYmKEdlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChHZS5oaWdoV2F0ZXJNYXJrKSxHZS5zeW5jPSExLEdlLnJlYWRpbmd8fChCZT1rKFVl''@;'; put 'put ''LEdlKSkpLG51bGw9PT0ocWU9QmU+MD9MZShCZSxHZSk6bnVsbCk/KEdlLm5lZWRSZWFkYWJsZT1HZS5sZW5ndGg8PUdlLmhpZ2hXYXRlck1hcmssQmU9MCk6KEdlLmxlbmd0aC09QmUsR2UuYXdhaXREcmFpbj0wKSwwPT09R2UubGVuZ3RoJiYoR2UuZW5kZWR8fChHZS5uZWVkUmVhZGFibGU9''@;'; put 'put ''ITApLFVlIT09QmUmJkdlLmVuZGVkJiZIZSh0aGlzKSksbnVsbCE9PXFlJiZ0aGlzLmVtaXQoImRhdGEiLHFlKSxxZX0sRi5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oQmUpe1codGhpcyxuZXcgbGUoIl9yZWFkKCkiKSl9LEYucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oQmUsR2Upe3ZhciBV''@;'; put 'put ''ZT10aGlzLHFlPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKHFlLnBpcGVzQ291bnQpe2Nhc2UgMDpxZS5waXBlcz1CZTticmVhaztjYXNlIDE6cWUucGlwZXM9W3FlLnBpcGVzLEJlXTticmVhaztkZWZhdWx0OnFlLnBpcGVzLnB1c2goQmUpfXFlLnBpcGVzQ291bnQrPTEsTigicGlwZSBj''@;'; put 'put ''b3VudD0lZCBvcHRzPSVqIixxZS5waXBlc0NvdW50LEdlKTt2YXIgb3Q9R2UmJiExPT09R2UuZW5kfHxCZT09PUcuc3Rkb3V0fHxCZT09PUcuc3RkZXJyP2tlOndlO2Z1bmN0aW9uIHdlKCl7Tigib25lbmQiKSxCZS5lbmQoKX1xZS5lbmRFbWl0dGVkP0cubmV4dFRpY2sob3QpOlVlLm9uY2Uo''@;'; put 'put ''ImVuZCIsb3QpLEJlLm9uKCJ1bnBpcGUiLGZ1bmN0aW9uIEZlKEFlLGplKXtOKCJvbnVucGlwZSIpLEFlPT09VWUmJmplJiYhMT09PWplLmhhc1VucGlwZWQmJihqZS5oYXNVbnBpcGVkPSEwLE4oImNsZWFudXAiKSxCZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFplKSxCZS5yZW1vdmVMaXN0''@;'; put 'put ''ZW5lcigiZmluaXNoIixjdCksQmUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixFZSksQmUucmVtb3ZlTGlzdGVuZXIoImVycm9yIix0dCksQmUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsRmUpLFVlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHdlKSxVZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixrZSks''@;'; put 'put ''VWUucmVtb3ZlTGlzdGVuZXIoImRhdGEiLFhlKSxJZT0hMCwhcWUuYXdhaXREcmFpbnx8QmUuX3dyaXRhYmxlU3RhdGUmJiFCZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fEVlKCkpfSk7dmFyIEVlPWZ1bmN0aW9uKEFlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgamU9QWUuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGU7TigicGlwZU9uRHJhaW4iLGplLmF3YWl0RHJhaW4pLGplLmF3YWl0RHJhaW4mJmplLmF3YWl0RHJhaW4tLSwwPT09amUuYXdhaXREcmFpbiYmRChBZSwiZGF0YSIpJiYoamUuZmxvd2luZz0hMCxTZShBZSkpfX0oVWUpO0JlLm9uKCJkcmFpbiIsRWUpO3ZhciBJZT0hMTtmdW5jdGlv''@;'; put 'put ''biBYZShBZSl7Tigib25kYXRhIik7dmFyIGplPUJlLndyaXRlKEFlKTtOKCJkZXN0LndyaXRlIixqZSksITE9PT1qZSYmKCgxPT09cWUucGlwZXNDb3VudCYmcWUucGlwZXM9PT1CZXx8cWUucGlwZXNDb3VudD4xJiYtMSE9PURlKHFlLnBpcGVzLEJlKSkmJiFJZSYmKE4oImZhbHNlIHdyaXRl''@;'; put 'put ''IHJlc3BvbnNlLCBwYXVzZSIscWUuYXdhaXREcmFpbikscWUuYXdhaXREcmFpbisrKSxVZS5wYXVzZSgpKX1mdW5jdGlvbiB0dChBZSl7Tigib25lcnJvciIsQWUpLGtlKCksQmUucmVtb3ZlTGlzdGVuZXIoImVycm9yIix0dCksMD09PUQoQmUsImVycm9yIikmJlcoQmUsQWUpfWZ1bmN0aW9u''@;'; put 'put ''IFplKCl7QmUucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsY3QpLGtlKCl9ZnVuY3Rpb24gY3QoKXtOKCJvbmZpbmlzaCIpLEJlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsWmUpLGtlKCl9ZnVuY3Rpb24ga2UoKXtOKCJ1bnBpcGUiKSxVZS51bnBpcGUoQmUpfXJldHVybiBVZS5vbigiZGF0YSIs''@;'; put 'put ''WGUpLGZ1bmN0aW9uKEFlLGplLGl0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQWUucHJlcGVuZExpc3RlbmVyKXJldHVybiBBZS5wcmVwZW5kTGlzdGVuZXIoamUsaXQpO0FlLl9ldmVudHMmJkFlLl9ldmVudHNbamVdP0FycmF5LmlzQXJyYXkoQWUuX2V2ZW50c1tqZV0pP0FlLl9ldmVudHNb''@;'; put 'put ''amVdLnVuc2hpZnQoaXQpOkFlLl9ldmVudHNbamVdPVtpdCxBZS5fZXZlbnRzW2plXV06QWUub24oamUsaXQpfShCZSwiZXJyb3IiLHR0KSxCZS5vbmNlKCJjbG9zZSIsWmUpLEJlLm9uY2UoImZpbmlzaCIsY3QpLEJlLmVtaXQoInBpcGUiLFVlKSxxZS5mbG93aW5nfHwoTigicGlwZSByZXN1''@;'; put 'put ''bWUiKSxVZS5yZXN1bWUoKSksQmV9LEYucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihCZSl7dmFyIEdlPXRoaXMuX3JlYWRhYmxlU3RhdGUsVWU9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1HZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1HZS5waXBlc0NvdW50KXJldHVybiBCZSYm''@;'; put 'put ''QmUhPT1HZS5waXBlc3x8KEJlfHwoQmU9R2UucGlwZXMpLEdlLnBpcGVzPW51bGwsR2UucGlwZXNDb3VudD0wLEdlLmZsb3dpbmc9ITEsQmUmJkJlLmVtaXQoInVucGlwZSIsdGhpcyxVZSkpLHRoaXM7aWYoIUJlKXt2YXIgcWU9R2UucGlwZXMsb3Q9R2UucGlwZXNDb3VudDtHZS5waXBlcz1u''@;'; put 'put ''dWxsLEdlLnBpcGVzQ291bnQ9MCxHZS5mbG93aW5nPSExO2Zvcih2YXIgRmU9MDtGZTxvdDtGZSsrKXFlW0ZlXS5lbWl0KCJ1bnBpcGUiLHRoaXMse2hhc1VucGlwZWQ6ITF9KTtyZXR1cm4gdGhpc312YXIgd2U9RGUoR2UucGlwZXMsQmUpO3JldHVybi0xPT09d2V8fChHZS5waXBlcy5zcGxp''@;'; put 'put ''Y2Uod2UsMSksR2UucGlwZXNDb3VudC09MSwxPT09R2UucGlwZXNDb3VudCYmKEdlLnBpcGVzPUdlLnBpcGVzWzBdKSxCZS5lbWl0KCJ1bnBpcGUiLHRoaXMsVWUpKSx0aGlzfSxGLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1GLnByb3RvdHlwZS5vbj1mdW5jdGlvbihCZSxHZSl7dmFyIFVlPVQu''@;'; put 'put ''cHJvdG90eXBlLm9uLmNhbGwodGhpcyxCZSxHZSkscWU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1CZT8ocWUucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsITEhPT1xZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVhZGFi''@;'; put 'put ''bGUiPT09QmUmJihxZS5lbmRFbWl0dGVkfHxxZS5yZWFkYWJsZUxpc3RlbmluZ3x8KHFlLnJlYWRhYmxlTGlzdGVuaW5nPXFlLm5lZWRSZWFkYWJsZT0hMCxxZS5mbG93aW5nPSExLHFlLmVtaXR0ZWRSZWFkYWJsZT0hMSxOKCJvbiByZWFkYWJsZSIscWUubGVuZ3RoLHFlLnJlYWRpbmcpLHFl''@;'; put 'put ''Lmxlbmd0aD9fKHRoaXMpOnFlLnJlYWRpbmd8fEcubmV4dFRpY2soY2UsdGhpcykpKSxVZX0sRi5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oQmUsR2Upe3ZhciBVZT1ULnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsQmUsR2UpO3JldHVybiJyZWFkYWJsZSI9''@;'; put 'put ''PT1CZSYmRy5uZXh0VGljayh0ZSx0aGlzKSxVZX0sRi5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKEJlKXt2YXIgR2U9VC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4icmVhZGFibGUiIT09QmUmJnZvaWQgMCE9''@;'; put 'put ''PUJlfHxHLm5leHRUaWNrKHRlLHRoaXMpLEdlfSxGLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgVWUsQmU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gQmUuZmxvd2luZ3x8KE4oInJlc3VtZSIpLEJlLmZsb3dpbmc9IUJlLnJlYWRhYmxlTGlzdGVuaW5nLChVZT1CZSkucmVz''@;'; put 'put ''dW1lU2NoZWR1bGVkfHwoVWUucmVzdW1lU2NoZWR1bGVkPSEwLEcubmV4dFRpY2soaGUsdGhpcyxVZSkpKSxCZS5wYXVzZWQ9ITEsdGhpc30sRi5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gTigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZs''@;'; put 'put ''b3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoTigicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZD0hMCx0aGlzfSxGLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9u''@;'; put 'put ''KEJlKXt2YXIgR2U9dGhpcyxVZT10aGlzLl9yZWFkYWJsZVN0YXRlLHFlPSExO2Zvcih2YXIgb3QgaW4gQmUub24oImVuZCIsZnVuY3Rpb24oKXtpZihOKCJ3cmFwcGVkIGVuZCIpLFVlLmRlY29kZXImJiFVZS5lbmRlZCl7dmFyIHdlPVVlLmRlY29kZXIuZW5kKCk7d2UmJndlLmxlbmd0aCYm''@;'; put 'put ''R2UucHVzaCh3ZSl9R2UucHVzaChudWxsKX0pLEJlLm9uKCJkYXRhIixmdW5jdGlvbih3ZSl7Tigid3JhcHBlZCBkYXRhIiksVWUuZGVjb2RlciYmKHdlPVVlLmRlY29kZXIud3JpdGUod2UpKSxVZS5vYmplY3RNb2RlJiZudWxsPT13ZXx8KFVlLm9iamVjdE1vZGV8fHdlJiZ3ZS5sZW5ndGgp''@;'; put 'put ''JiYoR2UucHVzaCh3ZSl8fChxZT0hMCxCZS5wYXVzZSgpKSl9KSxCZSl2b2lkIDA9PT10aGlzW290XSYmImZ1bmN0aW9uIj09dHlwZW9mIEJlW290XSYmKHRoaXNbb3RdPWZ1bmN0aW9uKHdlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQmVbd2VdLmFwcGx5KEJlLGFyZ3VtZW50cyl9fShv''@;'; put 'put ''dCkpO2Zvcih2YXIgRmU9MDtGZTxiLmxlbmd0aDtGZSsrKUJlLm9uKGJbRmVdLHRoaXMuZW1pdC5iaW5kKHRoaXMsYltGZV0pKTtyZXR1cm4gdGhpcy5fcmVhZD1mdW5jdGlvbih3ZSl7Tigid3JhcHBlZCBfcmVhZCIsd2UpLHFlJiYocWU9ITEsQmUucmVzdW1lKCkpfSx0aGlzfSwiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiYoRi5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PVkmJihZPUkoNTg1MCkpLFkodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIs''@;'; put 'put ''e2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsInJlYWRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCJyZWFkYWJsZUZsb3dpbmciLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9''@;'; put 'put ''LHNldDpmdW5jdGlvbihCZSl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1CZSl9fSksRi5fZnJvbUxpc3Q9TGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KEYucHJvdG90eXBlLCJyZWFkYWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihGLmZyb209ZnVuY3Rpb24oQmUsR2Upe3JldHVybiB2b2lkIDA9PT1VJiYoVT1JKDUxNjcpKSxVKEYsQmUsR2UpfSl9LDQ2MDU6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtNLmV4cG9ydHM9Qjt2YXIgaj1JKDQyODEpLnEsRz1qLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEQ9ai5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssVD1qLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsRT1qLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCx6PUkoNjc1''@;'; put 'put ''Myk7ZnVuY3Rpb24gTihVLHEpe3ZhciBKPXRoaXMuX3RyYW5zZm9ybVN0YXRlO0oudHJhbnNmb3JtaW5nPSExO3ZhciBlZT1KLndyaXRlY2I7aWYobnVsbD09PWVlKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgRCk7Si53cml0ZWNodW5rPW51bGwsSi53cml0ZWNiPW51bGwsbnVsbCE9''@;'; put 'put ''cSYmdGhpcy5wdXNoKHEpLGVlKFUpO3ZhciByZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JlLnJlYWRpbmc9ITEsKHJlLm5lZWRSZWFkYWJsZXx8cmUubGVuZ3RoPHJlLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKHJlLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIEIoVSl7aWYoISh0aGlzIGlu''@;'; put 'put ''c3RhbmNlb2YgQikpcmV0dXJuIG5ldyBCKFUpO3ouY2FsbCh0aGlzLFUpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpOLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29k''@;'; put 'put ''aW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxVJiYoImZ1bmN0aW9uIj09dHlwZW9mIFUudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPVUudHJhbnNmb3JtKSwiZnVuY3Rpb24iPT10eXBlb2YgVS5mbHVz''@;'; put 'put ''aCYmKHRoaXMuX2ZsdXNoPVUuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2giLFopfWZ1bmN0aW9uIFooKXt2YXIgVT10aGlzOyJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/WSh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2go''@;'; put 'put ''ZnVuY3Rpb24ocSxKKXtZKFUscSxKKX0pfWZ1bmN0aW9uIFkoVSxxLEope2lmKHEpcmV0dXJuIFUuZW1pdCgiZXJyb3IiLHEpO2lmKG51bGwhPUomJlUucHVzaChKKSxVLl93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgRTtpZihVLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcp''@;'; put 'put ''dGhyb3cgbmV3IFQ7cmV0dXJuIFUucHVzaChudWxsKX1JKDU3MTcpKEIseiksQi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihVLHEpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLHoucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLFUscSl9LEIucHJvdG90eXBl''@;'; put 'put ''Ll90cmFuc2Zvcm09ZnVuY3Rpb24oVSxxLEope0oobmV3IEcoIl90cmFuc2Zvcm0oKSIpKX0sQi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKFUscSxKKXt2YXIgZWU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYoZWUud3JpdGVjYj1KLGVlLndyaXRlY2h1bms9VSxlZS53cml0ZWVuY29kaW5n''@;'; put 'put ''PXEsIWVlLnRyYW5zZm9ybWluZyl7dmFyIHJlPXRoaXMuX3JlYWRhYmxlU3RhdGU7KGVlLm5lZWRUcmFuc2Zvcm18fHJlLm5lZWRSZWFkYWJsZXx8cmUubGVuZ3RoPHJlLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKHJlLmhpZ2hXYXRlck1hcmspfX0sQi5wcm90b3R5cGUuX3JlYWQ9ZnVu''@;'; put 'put ''Y3Rpb24oVSl7dmFyIHE9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PXEud3JpdGVjaHVua3x8cS50cmFuc2Zvcm1pbmc/cS5uZWVkVHJhbnNmb3JtPSEwOihxLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0ocS53cml0ZWNodW5rLHEud3JpdGVlbmNvZGluZyxxLmFmdGVyVHJh''@;'; put 'put ''bnNmb3JtKSl9LEIucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKFUscSl7ei5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLFUsZnVuY3Rpb24oSil7cShKKX0pfX0sNDIyOTooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqLEc9SSg0MTU1KTtmdW5jdGlvbiBEKHcpe3ZhciBLPXRo''@;'; put 'put ''aXM7dGhpcy5uZXh0PW51bGwsdGhpcy5lbnRyeT1udWxsLHRoaXMuZmluaXNoPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uKHRlLGNlLGhlKXt2YXIgU2U9dGUuZW50cnk7Zm9yKHRlLmVudHJ5PW51bGw7U2U7KXt2YXIgTGU9U2UuY2FsbGJhY2s7Y2UucGVuZGluZ2NiLS0sTGUodm9pZCAwKSxTZT1T''@;'; put 'put ''ZS5uZXh0fWNlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PXRlfShLLHcpfX1NLmV4cG9ydHM9RixGLldyaXRhYmxlU3RhdGU9QTt2YXIgQixUPXtkZXByZWNhdGU6SSg0OTI3KX0sRT1JKDI1MDMpLHo9SSg4NzY0KS5CdWZmZXIsTj0odm9pZCAwIT09SS5nP0kuZzp0eXBlb2Ygd2luZG93PCJ1''@;'; put 'put ''Ij93aW5kb3c6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30pLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxaPUkoMTE5NSksWT1JKDI0NTcpLmdldEhpZ2hXYXRlck1hcmssVT1JKDQyODEpLnEscT1VLkVSUl9JTlZBTElEX0FSR19UWVBFLEo9VS5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxl''@;'; put 'put ''ZT1VLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxyZT1VLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsaWU9VS5FUlJfU1RSRUFNX0RFU1RST1lFRCx1ZT1VLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsbGU9VS5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxhZT1VLkVSUl9VTktOT1dOX0VOQ09ESU5H''@;'; put 'put ''LFc9Wi5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIEEodyxLLHRlKXtqPWp8fEkoNjc1MyksImJvb2xlYW4iIT10eXBlb2YgdGUmJih0ZT1LIGluc3RhbmNlb2YgaiksdGhpcy5vYmplY3RNb2RlPSEhKHc9d3x8e30pLm9iamVjdE1vZGUsdGUmJih0aGlzLm9iamVjdE1v''@;'; put 'put ''ZGU9dGhpcy5vYmplY3RNb2RlfHwhIXcud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9WSh0aGlzLHcsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsdGUpLHRoaXMuZmluYWxDYWxsZWQ9ITEsdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0h''@;'; put 'put ''MSx0aGlzLmZpbmlzaGVkPSExLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVjb2RlU3RyaW5ncz0hKCExPT09dy5kZWNvZGVTdHJpbmdzKSx0aGlzLmRlZmF1bHRFbmNvZGluZz13LmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29y''@;'; put 'put ''a2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oaGUpeyFmdW5jdGlvbihTZSxMZSl7dmFyIEdlLEhlPVNlLl93cml0YWJsZVN0YXRlLHhlPUhlLnN5bmMsRGU9SGUud3JpdGVjYjtpZigiZnVuY3Rpb24iIT10eXBlb2YgRGUp''@;'; put 'put ''dGhyb3cgbmV3IGVlO2lmKChHZT1IZSkud3JpdGluZz0hMSxHZS53cml0ZWNiPW51bGwsR2UubGVuZ3RoLT1HZS53cml0ZWxlbixHZS53cml0ZWxlbj0wLExlKSFmdW5jdGlvbihHZSxVZSxxZSxvdCxGZSl7LS1VZS5wZW5kaW5nY2IscWU/KEcubmV4dFRpY2soRmUsb3QpLEcubmV4dFRpY2so''@;'; put 'put ''cCxHZSxVZSksR2UuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLFcoR2Usb3QpKTooRmUob3QpLEdlLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxXKEdlLG90KSxwKEdlLFVlKSl9KFNlLEhlLHhlLExlLERlKTtlbHNle3ZhciBCZT1rKEhlKXx8U2UuZGVzdHJveWVkO0Jl''@;'; put 'put ''fHxIZS5jb3JrZWR8fEhlLmJ1ZmZlclByb2Nlc3Npbmd8fCFIZS5idWZmZXJlZFJlcXVlc3R8fEMoU2UsSGUpLHhlP0cubmV4dFRpY2soZyxTZSxIZSxCZSxEZSk6ZyhTZSxIZSxCZSxEZSl9fShLLGhlKX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRS''@;'; put 'put ''ZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09dy5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIXcuYXV0b0Rlc3Ryb3ks''@;'; put 'put ''dGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBEKHRoaXMpfWZ1bmN0aW9uIEYodyl7dmFyIEs9dGhpcyBpbnN0YW5jZW9mKGo9anx8SSg2NzUzKSk7aWYoIUsmJiFCLmNhbGwoRix0aGlzKSlyZXR1cm4gbmV3IEYodyk7dGhpcy5fd3JpdGFi''@;'; put 'put ''bGVTdGF0ZT1uZXcgQSh3LHRoaXMsSyksdGhpcy53cml0YWJsZT0hMCx3JiYoImZ1bmN0aW9uIj09dHlwZW9mIHcud3JpdGUmJih0aGlzLl93cml0ZT13LndyaXRlKSwiZnVuY3Rpb24iPT10eXBlb2Ygdy53cml0ZXYmJih0aGlzLl93cml0ZXY9dy53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiB3LmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXcuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIHcuZmluYWwmJih0aGlzLl9maW5hbD13LmZpbmFsKSksRS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEgodyxLLHRlLGNlLGhlLFNlLExlKXtLLndyaXRlbGVuPWNlLEsud3JpdGVjYj1MZSxLLndy''@;'; put 'put ''aXRpbmc9ITAsSy5zeW5jPSEwLEsuZGVzdHJveWVkP0sub253cml0ZShuZXcgaWUoIndyaXRlIikpOnRlP3cuX3dyaXRldihoZSxLLm9ud3JpdGUpOncuX3dyaXRlKGhlLFNlLEsub253cml0ZSksSy5zeW5jPSExfWZ1bmN0aW9uIGcodyxLLHRlLGNlKXt2YXIgaGUsU2U7dGV8fChoZT13LDA9''@;'; put 'put ''PT0oU2U9SykubGVuZ3RoJiZTZS5uZWVkRHJhaW4mJihTZS5uZWVkRHJhaW49ITEsaGUuZW1pdCgiZHJhaW4iKSkpLEsucGVuZGluZ2NiLS0sY2UoKSxwKHcsSyl9ZnVuY3Rpb24gQyh3LEspe0suYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgdGU9Sy5idWZmZXJlZFJlcXVlc3Q7aWYody5fd3Jp''@;'; put 'put ''dGV2JiZ0ZSYmdGUubmV4dCl7dmFyIGhlPW5ldyBBcnJheShLLmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxTZT1LLmNvcmtlZFJlcXVlc3RzRnJlZTtTZS5lbnRyeT10ZTtmb3IodmFyIExlPTAsSGU9ITA7dGU7KWhlW0xlXT10ZSx0ZS5pc0J1Znx8KEhlPSExKSx0ZT10ZS5uZXh0LExlKz0xO2hl''@;'; put 'put ''LmFsbEJ1ZmZlcnM9SGUsSCh3LEssITAsSy5sZW5ndGgsaGUsIiIsU2UuZmluaXNoKSxLLnBlbmRpbmdjYisrLEsubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLFNlLm5leHQ/KEsuY29ya2VkUmVxdWVzdHNGcmVlPVNlLm5leHQsU2UubmV4dD1udWxsKTpLLmNvcmtlZFJlcXVlc3RzRnJlZT1u''@;'; put 'put ''ZXcgRChLKSxLLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO3RlOyl7dmFyIHhlPXRlLmNodW5rO2lmKEgodyxLLCExLEsub2JqZWN0TW9kZT8xOnhlLmxlbmd0aCx4ZSx0ZS5lbmNvZGluZyx0ZS5jYWxsYmFjayksdGU9dGUubmV4dCxLLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0s''@;'; put 'put ''Sy53cml0aW5nKWJyZWFrfW51bGw9PT10ZSYmKEsubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX1LLmJ1ZmZlcmVkUmVxdWVzdD10ZSxLLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gayh3KXtyZXR1cm4gdy5lbmRpbmcmJjA9PT13Lmxlbmd0aCYmbnVsbD09PXcuYnVmZmVyZWRSZXF1''@;'; put 'put ''ZXN0JiYhdy5maW5pc2hlZCYmIXcud3JpdGluZ31mdW5jdGlvbiBfKHcsSyl7dy5fZmluYWwoZnVuY3Rpb24odGUpe0sucGVuZGluZ2NiLS0sdGUmJlcodyx0ZSksSy5wcmVmaW5pc2hlZD0hMCx3LmVtaXQoInByZWZpbmlzaCIpLHAodyxLKX0pfWZ1bmN0aW9uIHAodyxLKXt2YXIgaGUsU2Us''@;'; put 'put ''dGU9ayhLKTtpZih0ZSYmKGhlPXcsKFNlPUspLnByZWZpbmlzaGVkfHxTZS5maW5hbENhbGxlZHx8KCJmdW5jdGlvbiIhPXR5cGVvZiBoZS5fZmluYWx8fFNlLmRlc3Ryb3llZD8oU2UucHJlZmluaXNoZWQ9ITAsaGUuZW1pdCgicHJlZmluaXNoIikpOihTZS5wZW5kaW5nY2IrKyxTZS5maW5h''@;'; put 'put ''bENhbGxlZD0hMCxHLm5leHRUaWNrKF8saGUsU2UpKSksMD09PUsucGVuZGluZ2NiJiYoSy5maW5pc2hlZD0hMCx3LmVtaXQoImZpbmlzaCIpLEsuYXV0b0Rlc3Ryb3kpKSl7dmFyIGNlPXcuX3JlYWRhYmxlU3RhdGU7KCFjZXx8Y2UuYXV0b0Rlc3Ryb3kmJmNlLmVuZEVtaXR0ZWQpJiZ3LmRl''@;'; put 'put ''c3Ryb3koKX1yZXR1cm4gdGV9SSg1NzE3KShGLEUpLEEucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgdz10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxLPVtdO3c7KUsucHVzaCh3KSx3PXcubmV4dDtyZXR1cm4gS30sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3Bl''@;'; put 'put ''cnR5KEEucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6VC5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIp''@;'; put 'put ''fSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8oQj1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoRixTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKHcpe3JldHVybiEhQi5jYWxsKHRoaXMsdyl8fHRoaXM9PT1GJiZ3JiZ3Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgQX19KSk6Qj1mdW5jdGlvbih3KXtyZXR1cm4gdyBpbnN0YW5jZW9mIHRo''@;'; put 'put ''aXN9LEYucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtXKHRoaXMsbmV3IHJlKX0sRi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odyxLLHRlKXt2YXIgY2UsSGUseGUsRGUsaGU9dGhpcy5fd3JpdGFibGVTdGF0ZSxTZT0hMSxMZT0haGUub2JqZWN0TW9kZSYmKHouaXNCdWZmZXIoY2U9dyl8''@;'; put 'put ''fGNlIGluc3RhbmNlb2YgTik7cmV0dXJuIExlJiYhei5pc0J1ZmZlcih3KSYmKHc9ei5mcm9tKHcpKSwiZnVuY3Rpb24iPT10eXBlb2YgSyYmKHRlPUssSz1udWxsKSxMZT9LPSJidWZmZXIiOkt8fChLPWhlLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIHRlJiYodGU9Yiks''@;'; put 'put ''aGUuZW5kaW5nPyhIZT10aGlzLHhlPXRlLERlPW5ldyBsZSxXKEhlLERlKSxHLm5leHRUaWNrKHhlLERlKSk6KExlfHxmdW5jdGlvbihIZSx4ZSxEZSxCZSl7dmFyIEdlO3JldHVybiBudWxsPT09RGU/R2U9bmV3IHVlOiJzdHJpbmciPT10eXBlb2YgRGV8fHhlLm9iamVjdE1vZGV8fChHZT1u''@;'; put 'put ''ZXcgcSgiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIl0sRGUpKSwhR2V8fChXKEhlLEdlKSxHLm5leHRUaWNrKEJlLEdlKSwhMSl9KHRoaXMsaGUsdyx0ZSkpJiYoaGUucGVuZGluZ2NiKyssU2U9ZnVuY3Rpb24oSGUseGUsRGUsQmUsR2UsVWUpe2lmKCFEZSl7dmFyIHFlPShJZT1CZSwoRWU9''@;'; put 'put ''eGUpLm9iamVjdE1vZGV8fCExPT09RWUuZGVjb2RlU3RyaW5nc3x8InN0cmluZyIhPXR5cGVvZiBJZXx8KEllPXouZnJvbShJZSxHZSkpLEllKTtCZSE9PXFlJiYoRGU9ITAsR2U9ImJ1ZmZlciIsQmU9cWUpfXZhciBFZSxJZSxvdD14ZS5vYmplY3RNb2RlPzE6QmUubGVuZ3RoO3hlLmxlbmd0''@;'; put 'put ''aCs9b3Q7dmFyIEZlPXhlLmxlbmd0aDx4ZS5oaWdoV2F0ZXJNYXJrO2lmKEZlfHwoeGUubmVlZERyYWluPSEwKSx4ZS53cml0aW5nfHx4ZS5jb3JrZWQpe3ZhciB3ZT14ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O3hlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOkJlLGVuY29kaW5nOkdlLGlz''@;'; put 'put ''QnVmOkRlLGNhbGxiYWNrOlVlLG5leHQ6bnVsbH0sd2U/d2UubmV4dD14ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OnhlLmJ1ZmZlcmVkUmVxdWVzdD14ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0LHhlLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgSChIZSx4ZSwhMSxvdCxCZSxHZSxVZSk7cmV0''@;'; put 'put ''dXJuIEZlfSh0aGlzLGhlLExlLHcsSyx0ZSkpLFNlfSxGLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30sRi5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIHc9dGhpcy5fd3JpdGFibGVTdGF0ZTt3LmNvcmtlZCYmKHcuY29ya2Vk''@;'; put 'put ''LS0sdy53cml0aW5nfHx3LmNvcmtlZHx8dy5idWZmZXJQcm9jZXNzaW5nfHwhdy5idWZmZXJlZFJlcXVlc3R8fEModGhpcyx3KSl9LEYucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbih3KXtpZigic3RyaW5nIj09dHlwZW9mIHcmJih3PXcudG9Mb3dlckNhc2UoKSksIShb''@;'; put 'put ''ImhleCIsInV0ZjgiLCJ1dGYtOCIsImFzY2lpIiwiYmluYXJ5IiwiYmFzZTY0IiwidWNzMiIsInVjcy0yIiwidXRmMTZsZSIsInV0Zi0xNmxlIiwicmF3Il0uaW5kZXhPZigodysiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBhZSh3KTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5kZWZhdWx0RW5jb2Rpbmc9dyx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIo''@;'; put 'put ''KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxGLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24o''@;'; put 'put ''dyxLLHRlKXt0ZShuZXcgSigiX3dyaXRlKCkiKSl9LEYucHJvdG90eXBlLl93cml0ZXY9bnVsbCxGLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odyxLLHRlKXt2YXIgU2UsTGUsY2U9dGhpcy5fd3JpdGFibGVTdGF0ZTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygdz8odGU9dyx3PW51bGwsSz1u''@;'; put 'put ''dWxsKToiZnVuY3Rpb24iPT10eXBlb2YgSyYmKHRlPUssSz1udWxsKSxudWxsIT13JiZ0aGlzLndyaXRlKHcsSyksY2UuY29ya2VkJiYoY2UuY29ya2VkPTEsdGhpcy51bmNvcmsoKSksY2UuZW5kaW5nfHwoTGU9dGUsKFNlPWNlKS5lbmRpbmc9ITAscCh0aGlzLFNlKSxMZSYmKFNlLmZpbmlz''@;'; put 'put ''aGVkP0cubmV4dFRpY2soTGUpOnRoaXMub25jZSgiZmluaXNoIixMZSkpLFNlLmVuZGVkPSEwLHRoaXMud3JpdGFibGU9ITEpLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRi5wcm90b3R5cGUsImRlc3Ryb3llZCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUu''@;'; put 'put ''ZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24odyl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPXcpfX0pLEYucHJvdG90eXBlLmRlc3Ryb3k9Wi5kZXN0cm95LEYucHJvdG90eXBlLl91bmRlc3Ryb3k9Wi51bmRlc3Ryb3ksRi5wcm90b3R5cGUuX2Rl''@;'; put 'put ''c3Ryb3k9ZnVuY3Rpb24odyxLKXtLKHcpfX0sNTg1MDooTSxPLEkpPT57InVzZSBzdHJpY3QiO3ZhciBqLEc9SSg0MTU1KTtmdW5jdGlvbiBEKHVlLGxlLGFlKXtyZXR1cm4obGU9InN5bWJvbCI9PXR5cGVvZihiPWZ1bmN0aW9uKEEsRil7aWYoIm9iamVjdCIhPXR5cGVvZiBBfHxudWxsPT09''@;'; put 'put ''QSlyZXR1cm4gQTt2YXIgSD1BW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09SCl7dmFyIGc9SC5jYWxsKEEsInN0cmluZyIpO2lmKCJvYmplY3QiIT10eXBlb2YgZylyZXR1cm4gZzt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0''@;'; put 'put ''aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoQSl9KGxlKSk/YjpTdHJpbmcoYikpaW4gdWU/T2JqZWN0LmRlZmluZVByb3BlcnR5KHVlLGxlLHt2YWx1ZTphZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnVlW2xlXT1hZSx1ZTt2YXIgYn12YXIgVD1JKDg2''@;'; put 'put ''MTApLEU9U3ltYm9sKCJsYXN0UmVzb2x2ZSIpLHo9U3ltYm9sKCJsYXN0UmVqZWN0IiksTj1TeW1ib2woImVycm9yIiksQj1TeW1ib2woImVuZGVkIiksWj1TeW1ib2woImxhc3RQcm9taXNlIiksWT1TeW1ib2woImhhbmRsZVByb21pc2UiKSxVPVN5bWJvbCgic3RyZWFtIik7ZnVuY3Rpb24g''@;'; put 'put ''cSh1ZSxsZSl7cmV0dXJue3ZhbHVlOnVlLGRvbmU6bGV9fWZ1bmN0aW9uIEoodWUpe3ZhciBsZT11ZVtFXTtpZihudWxsIT09bGUpe3ZhciBhZT11ZVtVXS5yZWFkKCk7bnVsbCE9PWFlJiYodWVbWl09bnVsbCx1ZVtFXT1udWxsLHVlW3pdPW51bGwsbGUocShhZSwhMSkpKX19ZnVuY3Rpb24g''@;'; put 'put ''ZWUodWUpe0cubmV4dFRpY2soSix1ZSl9dmFyIHJlPU9iamVjdC5nZXRQcm90b3R5cGVPZihmdW5jdGlvbigpe30pLGllPU9iamVjdC5zZXRQcm90b3R5cGVPZigoRChqPXtnZXQgc3RyZWFtKCl7cmV0dXJuIHRoaXNbVV19LG5leHQ6ZnVuY3Rpb24oKXt2YXIgdWU9dGhpcyxsZT10aGlzW05d''@;'; put 'put ''O2lmKG51bGwhPT1sZSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobGUpO2lmKHRoaXNbQl0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShxKHZvaWQgMCwhMCkpO2lmKHRoaXNbVV0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihBLEYpe0cubmV4dFRpY2soZnVuY3Rpb24oKXt1''@;'; put 'put ''ZVtOXT9GKHVlW05dKTpBKHEodm9pZCAwLCEwKSl9KX0pO3ZhciBhZSxXPXRoaXNbWl07aWYoVylhZT1uZXcgUHJvbWlzZShmdW5jdGlvbihBLEYpe3JldHVybiBmdW5jdGlvbihILGcpe0EudGhlbihmdW5jdGlvbigpe0ZbQl0/SChxKHZvaWQgMCwhMCkpOkZbWV0oSCxnKX0sZyl9fShXLHRo''@;'; put 'put ''aXMpKTtlbHNle3ZhciBiPXRoaXNbVV0ucmVhZCgpO2lmKG51bGwhPT1iKXJldHVybiBQcm9taXNlLnJlc29sdmUocShiLCExKSk7YWU9bmV3IFByb21pc2UodGhpc1tZXSl9cmV0dXJuIHRoaXNbWl09YWUsYWV9fSxTeW1ib2wuYXN5bmNJdGVyYXRvcixmdW5jdGlvbigpe3JldHVybiB0aGlz''@;'; put 'put ''fSksRChqLCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIHVlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGxlLGFlKXt1ZVtVXS5kZXN0cm95KG51bGwsZnVuY3Rpb24oVyl7Vz9hZShXKTpsZShxKHZvaWQgMCwhMCkpfSl9KX0pLGopLHJlKTtNLmV4cG9ydHM9ZnVuY3Rpb24odWUp''@;'; put 'put ''e3ZhciBsZSxhZT1PYmplY3QuY3JlYXRlKGllLChEKGxlPXt9LFUse3ZhbHVlOnVlLHdyaXRhYmxlOiEwfSksRChsZSxFLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksRChsZSx6LHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksRChsZSxOLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksRChs''@;'; put 'put ''ZSxCLHt2YWx1ZTp1ZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksRChsZSxZLHt2YWx1ZTpmdW5jdGlvbihXLGIpe3ZhciBBPWFlW1VdLnJlYWQoKTtBPyhhZVtaXT1udWxsLGFlW0VdPW51bGwsYWVbel09bnVsbCxXKHEoQSwhMSkpKTooYWVbRV09VyxhZVt6XT1i''@;'; put 'put ''KX0sd3JpdGFibGU6ITB9KSxsZSkpO3JldHVybiBhZVtaXT1udWxsLFQodWUsZnVuY3Rpb24oVyl7aWYoVyYmIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiE9PVcuY29kZSl7dmFyIGI9YWVbel07cmV0dXJuIG51bGwhPT1iJiYoYWVbWl09bnVsbCxhZVtFXT1udWxsLGFlW3pdPW51bGws''@;'; put 'put ''YihXKSksdm9pZChhZVtOXT1XKX12YXIgQT1hZVtFXTtudWxsIT09QSYmKGFlW1pdPW51bGwsYWVbRV09bnVsbCxhZVt6XT1udWxsLEEocSh2b2lkIDAsITApKSksYWVbQl09ITB9KSx1ZS5vbigicmVhZGFibGUiLGVlLmJpbmQobnVsbCxhZSkpLGFlfX0sNzMyNzooTSxPLEkpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO2Z1bmN0aW9uIGooWixZKXt2YXIgVT1PYmplY3Qua2V5cyhaKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKFopO1kmJihxPXEuZmlsdGVyKGZ1bmN0aW9uKEope3JldHVybiBPYmplY3QuZ2V0T3duUHJv''@;'; put 'put ''cGVydHlEZXNjcmlwdG9yKFosSikuZW51bWVyYWJsZX0pKSxVLnB1c2guYXBwbHkoVSxxKX1yZXR1cm4gVX1mdW5jdGlvbiBHKFope2Zvcih2YXIgWT0xO1k8YXJndW1lbnRzLmxlbmd0aDtZKyspe3ZhciBVPW51bGwhPWFyZ3VtZW50c1tZXT9hcmd1bWVudHNbWV06e307WSUyP2ooT2JqZWN0''@;'; put 'put ''KFUpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe0QoWixxLFVbcV0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhVKSk6aihPYmplY3QoVSkpLmZvckVhY2goZnVuY3Rp''@;'; put 'put ''b24ocSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFoscSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFUscSkpfSl9cmV0dXJuIFp9ZnVuY3Rpb24gRChaLFksVSl7cmV0dXJuKFk9RShZKSlpbiBaP09iamVjdC5kZWZpbmVQcm9wZXJ0eShaLFkse3ZhbHVlOlUsZW51bWVyYWJsZToh''@;'; put 'put ''MCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpaW1ldPVUsWn1mdW5jdGlvbiBFKFope3ZhciBZPWZ1bmN0aW9uKFUscSl7aWYoIm9iamVjdCIhPXR5cGVvZiBVfHxudWxsPT09VSlyZXR1cm4gVTt2YXIgSj1VW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09Sil7dmFyIGVl''@;'; put 'put ''PUouY2FsbChVLCJzdHJpbmciKTtpZigib2JqZWN0IiE9dHlwZW9mIGVlKXJldHVybiBlZTt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoVSl9KFopO3JldHVybiJzeW1ib2wiPT10eXBlb2Yg''@;'; put 'put ''WT9ZOlN0cmluZyhZKX12YXIgej1JKDg3NjQpLkJ1ZmZlcixOPUkoMjM2MSkuaW5zcGVjdCxCPU4mJk4uY3VzdG9tfHwiaW5zcGVjdCI7TS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gWigpeyhmdW5jdGlvbihKLGVlKXtpZighKEogaW5zdGFuY2VvZiBlZSkpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KSh0aGlzLFopLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIFksVTtyZXR1cm4gWT1aLChVPVt7a2V5OiJwdXNoIix2YWx1ZTpmdW5jdGlvbihKKXt2YXIgZWU9e2RhdGE6Sixu''@;'; put 'put ''ZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9ZWU6dGhpcy5oZWFkPWVlLHRoaXMudGFpbD1lZSwrK3RoaXMubGVuZ3RofX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oSil7dmFyIGVlPXtkYXRhOkosbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYm''@;'; put 'put ''KHRoaXMudGFpbD1lZSksdGhpcy5oZWFkPWVlLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciBKPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRo''@;'; put 'put ''aXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsSn19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0aW9uKEope2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4iIjtmb3Io''@;'; put 'put ''dmFyIGVlPXRoaXMuaGVhZCxyZT0iIitlZS5kYXRhO2VlPWVlLm5leHQ7KXJlKz1KK2VlLmRhdGE7cmV0dXJuIHJlfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihKKXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIHouYWxsb2MoMCk7Zm9yKHZhciB1ZT16LmFsbG9jVW5zYWZlKEo+''@;'; put 'put ''Pj4wKSxsZT10aGlzLmhlYWQsYWU9MDtsZTspei5wcm90b3R5cGUuY29weS5jYWxsKGxlLmRhdGEsdWUsYWUpLGFlKz1sZS5kYXRhLmxlbmd0aCxsZT1sZS5uZXh0O3JldHVybiB1ZX19LHtrZXk6ImNvbnN1bWUiLHZhbHVlOmZ1bmN0aW9uKEosZWUpe3ZhciByZTtyZXR1cm4gSjx0aGlzLmhl''@;'; put 'put ''YWQuZGF0YS5sZW5ndGg/KHJlPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsSiksdGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UoSikpOnJlPUo9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOmVlP3RoaXMuX2dldFN0cmluZyhKKTp0aGlzLl9nZXRCdWZmZXIo''@;'; put 'put ''SikscmV9fSx7a2V5OiJmaXJzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OiJfZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihKKXt2YXIgZWU9dGhpcy5oZWFkLHJlPTEsaWU9ZWUuZGF0YTtmb3IoSi09aWUubGVuZ3RoO2VlPWVlLm5leHQ7KXt2YXIg''@;'; put 'put ''dWU9ZWUuZGF0YSxsZT1KPnVlLmxlbmd0aD91ZS5sZW5ndGg6SjtpZihpZSs9bGU9PT11ZS5sZW5ndGg/dWU6dWUuc2xpY2UoMCxKKSwwPT0oSi09bGUpKXtsZT09PXVlLmxlbmd0aD8oKytyZSx0aGlzLmhlYWQ9ZWUubmV4dD9lZS5uZXh0OnRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWVl''@;'; put 'put ''LGVlLmRhdGE9dWUuc2xpY2UobGUpKTticmVha30rK3JlfXJldHVybiB0aGlzLmxlbmd0aC09cmUsaWV9fSx7a2V5OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihKKXt2YXIgZWU9ei5hbGxvY1Vuc2FmZShKKSxyZT10aGlzLmhlYWQsaWU9MTtmb3IocmUuZGF0YS5jb3B5KGVlKSxKLT1y''@;'; put 'put ''ZS5kYXRhLmxlbmd0aDtyZT1yZS5uZXh0Oyl7dmFyIHVlPXJlLmRhdGEsbGU9Sj51ZS5sZW5ndGg/dWUubGVuZ3RoOko7aWYodWUuY29weShlZSxlZS5sZW5ndGgtSiwwLGxlKSwwPT0oSi09bGUpKXtsZT09PXVlLmxlbmd0aD8oKytpZSx0aGlzLmhlYWQ9cmUubmV4dD9yZS5uZXh0OnRoaXMu''@;'; put 'put ''dGFpbD1udWxsKToodGhpcy5oZWFkPXJlLHJlLmRhdGE9dWUuc2xpY2UobGUpKTticmVha30rK2llfXJldHVybiB0aGlzLmxlbmd0aC09aWUsZWV9fSx7a2V5OkIsdmFsdWU6ZnVuY3Rpb24oSixlZSl7cmV0dXJuIE4odGhpcyxHKEcoe30sZWUpLHt9LHtkZXB0aDowLGN1c3RvbUluc3BlY3Q6''@;'; put 'put ''ITF9KSl9fV0pJiZmdW5jdGlvbiBUKFosWSl7Zm9yKHZhciBVPTA7VTxZLmxlbmd0aDtVKyspe3ZhciBxPVlbVV07cS5lbnVtZXJhYmxlPXEuZW51bWVyYWJsZXx8ITEscS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHEmJihxLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''WixFKHEua2V5KSxxKX19KFkucHJvdG90eXBlLFUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLFp9KCl9LDExOTU6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpO2Z1bmN0aW9uIEcoRSx6KXtUKEUseiksRChFKX1mdW5jdGlv''@;'; put 'put ''biBEKEUpe0UuX3dyaXRhYmxlU3RhdGUmJiFFLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8RS5fcmVhZGFibGVTdGF0ZSYmIUUuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlfHxFLmVtaXQoImNsb3NlIil9ZnVuY3Rpb24gVChFLHope0UuZW1pdCgiZXJyb3IiLHopfU0uZXhwb3J0cz17ZGVz''@;'; put 'put ''dHJveTpmdW5jdGlvbihFLHope3ZhciBOPXRoaXM7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfHx0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD8oej96KEUpOkUmJih0aGlzLl93cml0YWJs''@;'; put 'put ''ZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsai5uZXh0VGljayhULHRoaXMsRSkpOmoubmV4dFRpY2soVCx0aGlzLEUpKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3koRXx8bnVsbCxmdW5jdGlvbihZKXsheiYmWT9OLl93cml0YWJsZVN0YXRlP04uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkP2ou''@;'; put 'put ''bmV4dFRpY2soRCxOKTooTi5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsai5uZXh0VGljayhHLE4sWSkpOmoubmV4dFRpY2soRyxOLFkpOno/KGoubmV4dFRpY2soRCxOKSx6KFkpKTpqLm5leHRUaWNrKEQsTil9KSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fcmVh''@;'; put 'put ''ZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRo''@;'; put 'put ''aXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMu''@;'; put 'put ''X3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfSxlcnJvck9yRGVzdHJveTpmdW5jdGlvbihFLHope3ZhciBOPUUuX3JlYWRhYmxlU3RhdGUsQj1FLl93cml0YWJsZVN0YXRlO04mJk4uYXV0b0Rlc3Ryb3l8fEImJkIuYXV0b0Rl''@;'; put 'put ''c3Ryb3k/RS5kZXN0cm95KHopOkUuZW1pdCgiZXJyb3IiLHopfX19LDg2MTA6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQyODEpLnEuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U7ZnVuY3Rpb24gRygpe31NLmV4cG9ydHM9ZnVuY3Rpb24gRChULEUseil7aWYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIEUpcmV0dXJuIEQoVCxudWxsLEUpO0V8fChFPXt9KSx6PWZ1bmN0aW9uKHVlKXt2YXIgbGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWxlKXtsZT0hMDtmb3IodmFyIGFlPWFyZ3VtZW50cy5sZW5ndGgsVz1uZXcgQXJyYXkoYWUpLGI9MDtiPGFlO2IrKylXW2JdPWFyZ3Vt''@;'; put 'put ''ZW50c1tiXTt1ZS5hcHBseSh0aGlzLFcpfX19KHp8fEcpO3ZhciB1ZSxOPUUucmVhZGFibGV8fCExIT09RS5yZWFkYWJsZSYmVC5yZWFkYWJsZSxCPUUud3JpdGFibGV8fCExIT09RS53cml0YWJsZSYmVC53cml0YWJsZSxaPWZ1bmN0aW9uKCl7VC53cml0YWJsZXx8VSgpfSxZPVQuX3dyaXRh''@;'; put 'put ''YmxlU3RhdGUmJlQuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsVT1mdW5jdGlvbigpe0I9ITEsWT0hMCxOfHx6LmNhbGwoVCl9LHE9VC5fcmVhZGFibGVTdGF0ZSYmVC5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLEo9ZnVuY3Rpb24oKXtOPSExLHE9ITAsQnx8ei5jYWxsKFQpfSxlZT1mdW5j''@;'; put 'put ''dGlvbih1ZSl7ei5jYWxsKFQsdWUpfSxyZT1mdW5jdGlvbigpe3ZhciB1ZTtyZXR1cm4gTiYmIXE/KFQuX3JlYWRhYmxlU3RhdGUmJlQuX3JlYWRhYmxlU3RhdGUuZW5kZWR8fCh1ZT1uZXcgaiksei5jYWxsKFQsdWUpKTpCJiYhWT8oVC5fd3JpdGFibGVTdGF0ZSYmVC5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5lbmRlZHx8KHVlPW5ldyBqKSx6LmNhbGwoVCx1ZSkpOnZvaWQgMH0saWU9ZnVuY3Rpb24oKXtULnJlcS5vbigiZmluaXNoIixVKX07cmV0dXJuKHVlPVQpLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIHVlLmFib3J0PyhULm9uKCJjb21wbGV0ZSIsVSksVC5vbigiYWJvcnQiLHJl''@;'; put 'put ''KSxULnJlcT9pZSgpOlQub24oInJlcXVlc3QiLGllKSk6QiYmIVQuX3dyaXRhYmxlU3RhdGUmJihULm9uKCJlbmQiLFopLFQub24oImNsb3NlIixaKSksVC5vbigiZW5kIixKKSxULm9uKCJmaW5pc2giLFUpLCExIT09RS5lcnJvciYmVC5vbigiZXJyb3IiLGVlKSxULm9uKCJjbG9zZSIscmUp''@;'; put 'put ''LGZ1bmN0aW9uKCl7VC5yZW1vdmVMaXN0ZW5lcigiY29tcGxldGUiLFUpLFQucmVtb3ZlTGlzdGVuZXIoImFib3J0IixyZSksVC5yZW1vdmVMaXN0ZW5lcigicmVxdWVzdCIsaWUpLFQucmVxJiZULnJlcS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixVKSxULnJlbW92ZUxpc3RlbmVyKCJlbmQi''@;'; put 'put ''LFopLFQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixaKSxULnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLFUpLFQucmVtb3ZlTGlzdGVuZXIoImVuZCIsSiksVC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGVlKSxULnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIscmUpfX19LDUxNjc6TT0+e00uZXhwb3J0''@;'; put 'put ''cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSw5OTQ2OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGosRz1JKDQyODEpLnEsRD1HLkVSUl9NSVNTSU5HX0FSR1MsVD1HLkVSUl9TVFJFQU1fREVT''@;'; put 'put ''VFJPWUVEO2Z1bmN0aW9uIEUoQil7aWYoQil0aHJvdyBCfWZ1bmN0aW9uIHooQil7QigpfWZ1bmN0aW9uIE4oQixaKXtyZXR1cm4gQi5waXBlKFopfU0uZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgQj1hcmd1bWVudHMubGVuZ3RoLFo9bmV3IEFycmF5KEIpLFk9MDtZPEI7WSsrKVpbWV09''@;'; put 'put ''YXJndW1lbnRzW1ldO3ZhciBVLGVlLHE9KGVlPVopLmxlbmd0aD8iZnVuY3Rpb24iIT10eXBlb2YgZWVbZWUubGVuZ3RoLTFdP0U6ZWUucG9wKCk6RTtpZihBcnJheS5pc0FycmF5KFpbMF0pJiYoWj1aWzBdKSxaLmxlbmd0aDwyKXRocm93IG5ldyBEKCJzdHJlYW1zIik7dmFyIEo9Wi5tYXAo''@;'; put 'put ''ZnVuY3Rpb24oZWUscmUpe3ZhciBpZT1yZTxaLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbih1ZSxsZSxhZSxXKXtXPWZ1bmN0aW9uKEYpe3ZhciBIPSExO3JldHVybiBmdW5jdGlvbigpe0h8fChIPSEwLEYuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0oVyk7dmFyIGI9ITE7dWUub24oImNs''@;'; put 'put ''b3NlIixmdW5jdGlvbigpe2I9ITB9KSx2b2lkIDA9PT1qJiYoaj1JKDg2MTApKSxqKHVlLHtyZWFkYWJsZTpsZSx3cml0YWJsZTphZX0sZnVuY3Rpb24oRil7aWYoRilyZXR1cm4gVyhGKTtiPSEwLFcoKX0pO3ZhciBBPSExO3JldHVybiBmdW5jdGlvbihGKXtpZighYiYmIUEpcmV0dXJuIEE9''@;'; put 'put ''ITAsKEg9dWUpLnNldEhlYWRlciYmImZ1bmN0aW9uIj09dHlwZW9mIEguYWJvcnQ/dWUuYWJvcnQoKToiZnVuY3Rpb24iPT10eXBlb2YgdWUuZGVzdHJveT91ZS5kZXN0cm95KCk6dm9pZCBXKEZ8fG5ldyBUKCJwaXBlIikpO3ZhciBIfX0oZWUsaWUscmU+MCxmdW5jdGlvbih1ZSl7VXx8KFU9''@;'; put 'put ''dWUpLHVlJiZKLmZvckVhY2goeiksaWV8fChKLmZvckVhY2goeikscShVKSl9KX0pO3JldHVybiBaLnJlZHVjZShOKX19LDI0NTc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQyODEpLnEuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO00uZXhwb3J0cz17Z2V0SGlnaFdhdGVyTWFyazpm''@;'; put 'put ''dW5jdGlvbihHLEQsVCxFKXt2YXIgTix6PW51bGwhPShOPUQpLmhpZ2hXYXRlck1hcms/Ti5oaWdoV2F0ZXJNYXJrOkU/TltUXTpudWxsO2lmKG51bGwhPXope2lmKCFpc0Zpbml0ZSh6KXx8TWF0aC5mbG9vcih6KSE9PXp8fHo8MCl0aHJvdyBuZXcgaihFP1Q6ImhpZ2hXYXRlck1hcmsiLHop''@;'; put 'put ''O3JldHVybiBNYXRoLmZsb29yKHopfXJldHVybiBHLm9iamVjdE1vZGU/MTY6MTYzODR9fX0sMjUwMzooTSxPLEkpPT57TS5leHBvcnRzPUkoNzE4NykuRXZlbnRFbWl0dGVyfSw4NDczOihNLE8sSSk9PnsoTz1NLmV4cG9ydHM9SSg5NDgxKSkuU3RyZWFtPU8sTy5SZWFkYWJsZT1PLE8uV3Jp''@;'; put 'put ''dGFibGU9SSg0MjI5KSxPLkR1cGxleD1JKDY3NTMpLE8uVHJhbnNmb3JtPUkoNDYwNSksTy5QYXNzVGhyb3VnaD1JKDI3MjUpLE8uZmluaXNoZWQ9SSg4NjEwKSxPLnBpcGVsaW5lPUkoOTk0Nil9LDc0MTg6TT0+eyJ1c2Ugc3RyaWN0IjtNLmV4cG9ydHM9ZnVuY3Rpb24oTyxJKXtpZihJPUku''@;'; put 'put ''c3BsaXQoIjoiKVswXSwhKE89K08pKXJldHVybiExO3N3aXRjaChJKXtjYXNlImh0dHAiOmNhc2Uid3MiOnJldHVybiA4MCE9PU87Y2FzZSJodHRwcyI6Y2FzZSJ3c3MiOnJldHVybiA0NDMhPT1PO2Nhc2UiZnRwIjpyZXR1cm4gMjEhPT1PO2Nhc2UiZ29waGVyIjpyZXR1cm4gNzAhPT1PO2Nh''@;'; put 'put ''c2UiZmlsZSI6cmV0dXJuITF9cmV0dXJuIDAhPT1PfX0sOTg0OihNLE8sSSk9Pnt2YXIgaj1JKDQxNTUpO2NvbnN0IEc9SSg5MjgyKSxEPUkoMjUyMCksVD1JKDcyMTcpO2xldCBFO3RyeXtFPUkoMjg4NCl9Y2F0Y2h7fWNvbnN0IHo9e25vc29ydDohMCxzaWxlbnQ6ITB9O2xldCBOPTA7Y29u''@;'; put 'put ''c3QgQj0id2luMzIiPT09ai5wbGF0Zm9ybSxaPWFlPT57aWYoWyJ1bmxpbmsiLCJjaG1vZCIsInN0YXQiLCJsc3RhdCIsInJtZGlyIiwicmVhZGRpciJdLmZvckVhY2goVz0+e2FlW1ddPWFlW1ddfHxUW1ddLGFlW1crPSJTeW5jIl09YWVbV118fFRbV119KSxhZS5tYXhCdXN5VHJpZXM9YWUu''@;'; put 'put ''bWF4QnVzeVRyaWVzfHwzLGFlLmVtZmlsZVdhaXQ9YWUuZW1maWxlV2FpdHx8MWUzLCExPT09YWUuZ2xvYiYmKGFlLmRpc2FibGVHbG9iPSEwKSwhMCE9PWFlLmRpc2FibGVHbG9iJiZ2b2lkIDA9PT1FKXRocm93IEVycm9yKCJnbG9iIGRlcGVuZGVuY3kgbm90IGZvdW5kLCBzZXQgYG9wdGlv''@;'; put 'put ''bnMuZGlzYWJsZUdsb2IgPSB0cnVlYCBpZiBpbnRlbnRpb25hbCIpO2FlLmRpc2FibGVHbG9iPWFlLmRpc2FibGVHbG9ifHwhMSxhZS5nbG9iPWFlLmdsb2J8fHp9LFk9KGFlLFcsYik9PnsiZnVuY3Rpb24iPT10eXBlb2YgVyYmKGI9VyxXPXt9KSxHKGFlLCJyaW1yYWY6IG1pc3NpbmcgcGF0''@;'; put 'put ''aCIpLEcuZXF1YWwodHlwZW9mIGFlLCJzdHJpbmciLCJyaW1yYWY6IHBhdGggc2hvdWxkIGJlIGEgc3RyaW5nIiksRy5lcXVhbCh0eXBlb2YgYiwiZnVuY3Rpb24iLCJyaW1yYWY6IGNhbGxiYWNrIGZ1bmN0aW9uIHJlcXVpcmVkIiksRyhXLCJyaW1yYWY6IGludmFsaWQgb3B0aW9ucyBhcmd1''@;'; put 'put ''bWVudCBwcm92aWRlZCIpLEcuZXF1YWwodHlwZW9mIFcsIm9iamVjdCIsInJpbXJhZjogb3B0aW9ucyBzaG91bGQgYmUgb2JqZWN0IiksWihXKTtsZXQgQT0wLEY9bnVsbCxIPTA7Y29uc3QgZz0oQyxrKT0+Qz9iKEMpOihIPWsubGVuZ3RoLDA9PT1IP2IoKTp2b2lkIGsuZm9yRWFjaChfPT57''@;'; put 'put ''Y29uc3QgcD13PT57aWYodyl7aWYoKCJFQlVTWSI9PT13LmNvZGV8fCJFTk9URU1QVFkiPT09dy5jb2RlfHwiRVBFUk0iPT09dy5jb2RlKSYmQTxXLm1heEJ1c3lUcmllcylyZXR1cm4gQSsrLHNldFRpbWVvdXQoKCk9PlUoXyxXLHApLDEwMCpBKTtpZigiRU1GSUxFIj09PXcuY29kZSYmTjxX''@;'; put 'put ''LmVtZmlsZVdhaXQpcmV0dXJuIHNldFRpbWVvdXQoKCk9PlUoXyxXLHApLE4rKyk7IkVOT0VOVCI9PT13LmNvZGUmJih3PW51bGwpfU49MCxGPUZ8fHcsMD09LS1IJiZiKEYpfTtVKF8sVyxwKX0pKTtpZihXLmRpc2FibGVHbG9ifHwhRS5oYXNNYWdpYyhhZSkpcmV0dXJuIGcobnVsbCxbYWVd''@;'; put 'put ''KTtXLmxzdGF0KGFlLChDLGspPT57aWYoIUMpcmV0dXJuIGcobnVsbCxbYWVdKTtFKGFlLFcuZ2xvYixnKX0pfSxVPShhZSxXLGIpPT57RyhhZSksRyhXKSxHKCJmdW5jdGlvbiI9PXR5cGVvZiBiKSxXLmxzdGF0KGFlLChBLEYpPT5BJiYiRU5PRU5UIj09PUEuY29kZT9iKG51bGwpOihBJiYi''@;'; put 'put ''RVBFUk0iPT09QS5jb2RlJiZCJiZxKGFlLFcsQSxiKSxGJiZGLmlzRGlyZWN0b3J5KCk/ZWUoYWUsVyxBLGIpOnZvaWQgVy51bmxpbmsoYWUsSD0+e2lmKEgpe2lmKCJFTk9FTlQiPT09SC5jb2RlKXJldHVybiBiKG51bGwpO2lmKCJFUEVSTSI9PT1ILmNvZGUpcmV0dXJuIEI/cShhZSxXLEgs''@;'; put 'put ''Yik6ZWUoYWUsVyxILGIpO2lmKCJFSVNESVIiPT09SC5jb2RlKXJldHVybiBlZShhZSxXLEgsYil9cmV0dXJuIGIoSCl9KSkpfSxxPShhZSxXLGIsQSk9PntHKGFlKSxHKFcpLEcoImZ1bmN0aW9uIj09dHlwZW9mIEEpLFcuY2htb2QoYWUsNDM4LEY9PntGP0EoIkVOT0VOVCI9PT1GLmNvZGU/''@;'; put 'put ''bnVsbDpiKTpXLnN0YXQoYWUsKEgsZyk9PntIP0EoIkVOT0VOVCI9PT1ILmNvZGU/bnVsbDpiKTpnLmlzRGlyZWN0b3J5KCk/ZWUoYWUsVyxiLEEpOlcudW5saW5rKGFlLEEpfSl9KX0sSj0oYWUsVyxiKT0+e0coYWUpLEcoVyk7dHJ5e1cuY2htb2RTeW5jKGFlLDQzOCl9Y2F0Y2goRil7aWYo''@;'; put 'put ''IkVOT0VOVCI9PT1GLmNvZGUpcmV0dXJuO3Rocm93IGJ9bGV0IEE7dHJ5e0E9Vy5zdGF0U3luYyhhZSl9Y2F0Y2goRil7aWYoIkVOT0VOVCI9PT1GLmNvZGUpcmV0dXJuO3Rocm93IGJ9QS5pc0RpcmVjdG9yeSgpP3VlKGFlLFcsYik6Vy51bmxpbmtTeW5jKGFlKX0sZWU9KGFlLFcsYixBKT0+''@;'; put 'put ''e0coYWUpLEcoVyksRygiZnVuY3Rpb24iPT10eXBlb2YgQSksVy5ybWRpcihhZSxGPT57IUZ8fCJFTk9URU1QVFkiIT09Ri5jb2RlJiYiRUVYSVNUIiE9PUYuY29kZSYmIkVQRVJNIiE9PUYuY29kZT9BKEYmJiJFTk9URElSIj09PUYuY29kZT9iOkYpOnJlKGFlLFcsQSl9KX0scmU9KGFlLFcs''@;'; put 'put ''Yik9PntHKGFlKSxHKFcpLEcoImZ1bmN0aW9uIj09dHlwZW9mIGIpLFcucmVhZGRpcihhZSwoQSxGKT0+e2lmKEEpcmV0dXJuIGIoQSk7bGV0IEgsZz1GLmxlbmd0aDtpZigwPT09ZylyZXR1cm4gVy5ybWRpcihhZSxiKTtGLmZvckVhY2goQz0+e1koRC5qb2luKGFlLEMpLFcsaz0+e2lmKCFI''@;'; put 'put ''KXJldHVybiBrP2IoSD1rKTp2b2lkKDA9PS0tZyYmVy5ybWRpcihhZSxiKSl9KX0pfSl9LGllPShhZSxXKT0+e2xldCBiO2lmKFooVz1XfHx7fSksRyhhZSwicmltcmFmOiBtaXNzaW5nIHBhdGgiKSxHLmVxdWFsKHR5cGVvZiBhZSwic3RyaW5nIiwicmltcmFmOiBwYXRoIHNob3VsZCBiZSBh''@;'; put 'put ''IHN0cmluZyIpLEcoVywicmltcmFmOiBtaXNzaW5nIG9wdGlvbnMiKSxHLmVxdWFsKHR5cGVvZiBXLCJvYmplY3QiLCJyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCIpLFcuZGlzYWJsZUdsb2J8fCFFLmhhc01hZ2ljKGFlKSliPVthZV07ZWxzZSB0cnl7Vy5sc3RhdFN5bmMoYWUp''@;'; put 'put ''LGI9W2FlXX1jYXRjaHtiPUUuc3luYyhhZSxXLmdsb2IpfWlmKGIubGVuZ3RoKWZvcihsZXQgQT0wO0E8Yi5sZW5ndGg7QSsrKXtjb25zdCBGPWJbQV07bGV0IEg7dHJ5e0g9Vy5sc3RhdFN5bmMoRil9Y2F0Y2goZyl7aWYoIkVOT0VOVCI9PT1nLmNvZGUpcmV0dXJuOyJFUEVSTSI9PT1nLmNv''@;'; put 'put ''ZGUmJkImJkooRixXLGcpfXRyeXtIJiZILmlzRGlyZWN0b3J5KCk/dWUoRixXLG51bGwpOlcudW5saW5rU3luYyhGKX1jYXRjaChnKXtpZigiRU5PRU5UIj09PWcuY29kZSlyZXR1cm47aWYoIkVQRVJNIj09PWcuY29kZSlyZXR1cm4gQj9KKEYsVyxnKTp1ZShGLFcsZyk7aWYoIkVJU0RJUiIh''@;'; put 'put ''PT1nLmNvZGUpdGhyb3cgZzt1ZShGLFcsZyl9fX0sdWU9KGFlLFcsYik9PntHKGFlKSxHKFcpO3RyeXtXLnJtZGlyU3luYyhhZSl9Y2F0Y2goQSl7aWYoIkVOT0VOVCI9PT1BLmNvZGUpcmV0dXJuO2lmKCJFTk9URElSIj09PUEuY29kZSl0aHJvdyBiOyJFTk9URU1QVFkiIT09QS5jb2RlJiYi''@;'; put 'put ''RUVYSVNUIiE9PUEuY29kZSYmIkVQRVJNIiE9PUEuY29kZXx8bGUoYWUsVyl9fSxsZT0oYWUsVyk9PntHKGFlKSxHKFcpLFcucmVhZGRpclN5bmMoYWUpLmZvckVhY2goRj0+aWUoRC5qb2luKGFlLEYpLFcpKTtjb25zdCBiPUI/MTAwOjE7bGV0IEE9MDtmb3IoOzspe2xldCBGPSEwO3RyeXtj''@;'; put 'put ''b25zdCBIPVcucm1kaXJTeW5jKGFlLFcpO3JldHVybiBGPSExLEh9ZmluYWxseXtpZigrK0E8YiYmRiljb250aW51ZX19fTtNLmV4cG9ydHM9WSxZLnN5bmM9aWV9LDk3ODU6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDg3NjQpLkJ1ZmZlcixHPUkoNTcxNyksRD1JKDMzNDkpLFQ9''@;'; put 'put ''bmV3IEFycmF5KDE2KSxFPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUs''@;'; put 'put ''NiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdLHo9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0''@;'; put 'put ''LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0sTj1bMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcs''@;'; put 'put ''MTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0sQj1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywx''@;'; put 'put ''Miw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0sWj1bMCwxNTE4NTAwMjQ5''@;'; put 'put ''LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSxZPVsxMzUyODI5OTI2LDE1NDg2MDM2ODQsMTgzNjA3MjY5MSwyMDUzOTk0MjE3LDBdO2Z1bmN0aW9uIFUoKXtELmNhbGwodGhpcyw2NCksdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIz''@;'; put 'put ''ODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwfWZ1bmN0aW9uIHEobGUsYWUpe3JldHVybiBsZTw8YWV8bGU+Pj4zMi1hZX1mdW5jdGlvbiBKKGxlLGFlLFcsYixBLEYsSCxnKXtyZXR1cm4gcShsZSsoYWVeV15iKStGK0h8MCxnKStBfDB9ZnVuY3Rpb24gZWUobGUs''@;'; put 'put ''YWUsVyxiLEEsRixILGcpe3JldHVybiBxKGxlKyhhZSZXfH5hZSZiKStGK0h8MCxnKStBfDB9ZnVuY3Rpb24gcmUobGUsYWUsVyxiLEEsRixILGcpe3JldHVybiBxKGxlKygoYWV8flcpXmIpK0YrSHwwLGcpK0F8MH1mdW5jdGlvbiBpZShsZSxhZSxXLGIsQSxGLEgsZyl7cmV0dXJuIHEobGUr''@;'; put 'put ''KGFlJmJ8VyZ+YikrRitIfDAsZykrQXwwfWZ1bmN0aW9uIHVlKGxlLGFlLFcsYixBLEYsSCxnKXtyZXR1cm4gcShsZSsoYWVeKFd8fmIpKStGK0h8MCxnKStBfDB9RyhVLEQpLFUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIGxlPVQsYWU9MDthZTwxNjsrK2FlKWxlW2Fl''@;'; put 'put ''XT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KmFlKTtmb3IodmFyIFc9MHx0aGlzLl9hLGI9MHx0aGlzLl9iLEE9MHx0aGlzLl9jLEY9MHx0aGlzLl9kLEg9MHx0aGlzLl9lLGc9MHx0aGlzLl9hLEM9MHx0aGlzLl9iLGs9MHx0aGlzLl9jLF89MHx0aGlzLl9kLHA9MHx0aGlzLl9lLHc9MDt3''@;'; put 'put ''PDgwO3crPTEpe3ZhciBLLHRlO3c8MTY/KEs9SihXLGIsQSxGLEgsbGVbRVt3XV0sWlswXSxOW3ddKSx0ZT11ZShnLEMsayxfLHAsbGVbelt3XV0sWVswXSxCW3ddKSk6dzwzMj8oSz1lZShXLGIsQSxGLEgsbGVbRVt3XV0sWlsxXSxOW3ddKSx0ZT1pZShnLEMsayxfLHAsbGVbelt3XV0sWVsx''@;'; put 'put ''XSxCW3ddKSk6dzw0OD8oSz1yZShXLGIsQSxGLEgsbGVbRVt3XV0sWlsyXSxOW3ddKSx0ZT1yZShnLEMsayxfLHAsbGVbelt3XV0sWVsyXSxCW3ddKSk6dzw2ND8oSz1pZShXLGIsQSxGLEgsbGVbRVt3XV0sWlszXSxOW3ddKSx0ZT1lZShnLEMsayxfLHAsbGVbelt3XV0sWVszXSxCW3ddKSk6''@;'; put 'put ''KEs9dWUoVyxiLEEsRixILGxlW0Vbd11dLFpbNF0sTlt3XSksdGU9SihnLEMsayxfLHAsbGVbelt3XV0sWVs0XSxCW3ddKSksVz1ILEg9RixGPXEoQSwxMCksQT1iLGI9SyxnPXAscD1fLF89cShrLDEwKSxrPUMsQz10ZX12YXIgY2U9dGhpcy5fYitBK198MDt0aGlzLl9iPXRoaXMuX2MrRitw''@;'; put 'put ''fDAsdGhpcy5fYz10aGlzLl9kK0grZ3wwLHRoaXMuX2Q9dGhpcy5fZStXK0N8MCx0aGlzLl9lPXRoaXMuX2ErYitrfDAsdGhpcy5fYT1jZX0sVS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyOCx0aGlzLl9ibG9ja09mZnNl''@;'; put 'put ''dD41NiYmKHRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw2NCksdGhpcy5fdXBkYXRlKCksdGhpcy5fYmxvY2tPZmZzZXQ9MCksdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsw''@;'; put 'put ''XSw1NiksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApLHRoaXMuX3VwZGF0ZSgpO3ZhciBsZT1qLmFsbG9jP2ouYWxsb2MoMjApOm5ldyBqKDIwKTtyZXR1cm4gbGUud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksbGUud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCks''@;'; put 'put ''bGUud3JpdGVJbnQzMkxFKHRoaXMuX2MsOCksbGUud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLGxlLndyaXRlSW50MzJMRSh0aGlzLl9lLDE2KSxsZX0sTS5leHBvcnRzPVV9LDk1MDk6KE0sTyxJKT0+e3ZhciBqPUkoODc2NCksRz1qLkJ1ZmZlcjtmdW5jdGlvbiBEKEUseil7Zm9yKHZhciBO''@;'; put 'put ''IGluIEUpeltOXT1FW05dfWZ1bmN0aW9uIFQoRSx6LE4pe3JldHVybiBHKEUseixOKX1HLmZyb20mJkcuYWxsb2MmJkcuYWxsb2NVbnNhZmUmJkcuYWxsb2NVbnNhZmVTbG93P00uZXhwb3J0cz1qOihEKGosTyksTy5CdWZmZXI9VCksVC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3Rv''@;'; put 'put ''dHlwZSksRChHLFQpLFQuZnJvbT1mdW5jdGlvbihFLHosTil7aWYoIm51bWJlciI9PXR5cGVvZiBFKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIEcoRSx6LE4pfSxULmFsbG9jPWZ1bmN0aW9uKEUseixOKXtpZigibnVtYmVyIiE9''@;'; put 'put ''dHlwZW9mIEUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBCPUcoRSk7cmV0dXJuIHZvaWQgMCE9PXo/InN0cmluZyI9PXR5cGVvZiBOP0IuZmlsbCh6LE4pOkIuZmlsbCh6KTpCLmZpbGwoMCksQn0sVC5hbGxvY1Vuc2FmZT1mdW5jdGlvbihF''@;'; put 'put ''KXtpZigibnVtYmVyIiE9dHlwZW9mIEUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBHKEUpfSxULmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihFKXtpZigibnVtYmVyIiE9dHlwZW9mIEUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBqLlNsb3dCdWZmZXIoRSl9fSwyMzk5OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGosRz1JKDQxNTUpLEQ9SSg4NzY0KSxUPUQuQnVmZmVyLEU9e307Zm9yKGogaW4gRClELmhhc093blByb3BlcnR5KGopJiYiU2xvd0J1ZmZlciIhPT1q''@;'; put 'put ''JiYiQnVmZmVyIiE9PWomJihFW2pdPURbal0pO3ZhciB6PUUuQnVmZmVyPXt9O2ZvcihqIGluIFQpVC5oYXNPd25Qcm9wZXJ0eShqKSYmImFsbG9jVW5zYWZlIiE9PWomJiJhbGxvY1Vuc2FmZVNsb3ciIT09aiYmKHpbal09VFtqXSk7aWYoRS5CdWZmZXIucHJvdG90eXBlPVQucHJvdG90eXBl''@;'; put 'put ''LHouZnJvbSYmei5mcm9tIT09VWludDhBcnJheS5mcm9tfHwoei5mcm9tPWZ1bmN0aW9uKE4sQixaKXtpZigibnVtYmVyIj09dHlwZW9mIE4pdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUg''@;'; put 'put ''Jyt0eXBlb2YgTik7aWYoTiYmdm9pZCAwPT09Ti5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5''@;'; put 'put ''cGUgIit0eXBlb2YgTik7cmV0dXJuIFQoTixCLFopfSksei5hbGxvY3x8KHouYWxsb2M9ZnVuY3Rpb24oTixCLFope2lmKCJudW1iZXIiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5''@;'; put 'put ''cGUgJyt0eXBlb2YgTik7aWYoTjwwfHxOPj0yMTQ3NDgzNjQ4KXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrTisnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIFk9VChOKTtyZXR1cm4gQiYmMCE9PUIubGVuZ3RoPyJzdHJpbmciPT10eXBlb2YgWj9ZLmZp''@;'; put 'put ''bGwoQixaKTpZLmZpbGwoQik6WS5maWxsKDApLFl9KSwhRS5rU3RyaW5nTWF4TGVuZ3RoKXRyeXtFLmtTdHJpbmdNYXhMZW5ndGg9Ry5iaW5kaW5nKCJidWZmZXIiKS5rU3RyaW5nTWF4TGVuZ3RofWNhdGNoe31FLmNvbnN0YW50c3x8KEUuY29uc3RhbnRzPXtNQVhfTEVOR1RIOkUua01heExl''@;'; put 'put ''bmd0aH0sRS5rU3RyaW5nTWF4TGVuZ3RoJiYoRS5jb25zdGFudHMuTUFYX1NUUklOR19MRU5HVEg9RS5rU3RyaW5nTWF4TGVuZ3RoKSksTS5leHBvcnRzPUV9LDQxODk6KE0sTyxJKT0+e3ZhciBqPUkoOTUwOSkuQnVmZmVyO2Z1bmN0aW9uIEcoRCxUKXt0aGlzLl9ibG9jaz1qLmFsbG9jKEQp''@;'; put 'put ''LHRoaXMuX2ZpbmFsU2l6ZT1ULHRoaXMuX2Jsb2NrU2l6ZT1ELHRoaXMuX2xlbj0wfUcucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihELFQpeyJzdHJpbmciPT10eXBlb2YgRCYmKEQ9ai5mcm9tKEQsVD1UfHwidXRmOCIpKTtmb3IodmFyIEU9dGhpcy5fYmxvY2ssej10aGlzLl9ibG9ja1Np''@;'; put 'put ''emUsTj1ELmxlbmd0aCxCPXRoaXMuX2xlbixaPTA7WjxOOyl7Zm9yKHZhciBZPUIleixVPU1hdGgubWluKE4tWix6LVkpLHE9MDtxPFU7cSsrKUVbWStxXT1EW1orcV07Wis9VSwoQis9VSklej09MCYmdGhpcy5fdXBkYXRlKEUpfXJldHVybiB0aGlzLl9sZW4rPU4sdGhpc30sRy5wcm90b3R5''@;'; put 'put ''cGUuZGlnZXN0PWZ1bmN0aW9uKEQpe3ZhciBUPXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbVF09MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCxUKzEpLFQ+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7''@;'; put 'put ''dmFyIEU9OCp0aGlzLl9sZW47aWYoRTw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKEUsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIHo9KDQyOTQ5NjcyOTUmRSk+Pj4wO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoKEUteikvNDI5NDk2NzI5Nix0aGlzLl9ibG9j''@;'; put 'put ''a1NpemUtOCksdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRSh6LHRoaXMuX2Jsb2NrU2l6ZS00KX10aGlzLl91cGRhdGUodGhpcy5fYmxvY2spO3ZhciBCPXRoaXMuX2hhc2goKTtyZXR1cm4gRD9CLnRvU3RyaW5nKEQpOkJ9LEcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIl91cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcyIpfSxNLmV4cG9ydHM9R30sOTA3MjooTSxPLEkpPT57dmFyIGo9TS5leHBvcnRzPWZ1bmN0aW9uKEcpe0c9Ry50b0xvd2VyQ2FzZSgpO3ZhciBEPWpbR107aWYoIUQpdGhyb3cgbmV3IEVycm9yKEcrIiBp''@;'; put 'put ''cyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cykiKTtyZXR1cm4gbmV3IER9O2ouc2hhPUkoNDQ0OCksai5zaGExPUkoODMzNiksai5zaGEyMjQ9SSg4NDMyKSxqLnNoYTI1Nj1JKDc0OTkpLGouc2hhMzg0PUkoMTY4Niksai5zaGE1MTI9SSg3ODE2KX0sNDQ0ODooTSxP''@;'; put 'put ''LEkpPT57dmFyIGo9SSg1NzE3KSxHPUkoNDE4OSksRD1JKDk1MDkpLkJ1ZmZlcixUPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4OTQwMDc1ODgsLTg5OTQ5NzUxNF0sRT1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIHooKXt0aGlzLmluaXQoKSx0aGlzLl93PUUsRy5jYWxsKHRoaXMsNjQsNTYp''@;'; put 'put ''fWZ1bmN0aW9uIE4oWil7cmV0dXJuIFo8PDMwfFo+Pj4yfWZ1bmN0aW9uIEIoWixZLFUscSl7cmV0dXJuIDA9PT1aP1kmVXx+WSZxOjI9PT1aP1kmVXxZJnF8VSZxOlleVV5xfWooeixHKSx6LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlz''@;'; put 'put ''Ll9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSx6LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFope2Zvcih2YXIgWSxVPXRoaXMuX3cscT0wfHRoaXMuX2EsSj0wfHRoaXMuX2IsZWU9MHx0aGlzLl9j''@;'; put 'put ''LHJlPTB8dGhpcy5fZCxpZT0wfHRoaXMuX2UsdWU9MDt1ZTwxNjsrK3VlKVVbdWVdPVoucmVhZEludDMyQkUoNCp1ZSk7Zm9yKDt1ZTw4MDsrK3VlKVVbdWVdPVVbdWUtM11eVVt1ZS04XV5VW3VlLTE0XV5VW3VlLTE2XTtmb3IodmFyIGxlPTA7bGU8ODA7KytsZSl7dmFyIGFlPX5+KGxlLzIw''@;'; put 'put ''KSxXPTB8KChZPXEpPDw1fFk+Pj4yNykrQihhZSxKLGVlLHJlKStpZStVW2xlXStUW2FlXTtpZT1yZSxyZT1lZSxlZT1OKEopLEo9cSxxPVd9dGhpcy5fYT1xK3RoaXMuX2F8MCx0aGlzLl9iPUordGhpcy5fYnwwLHRoaXMuX2M9ZWUrdGhpcy5fY3wwLHRoaXMuX2Q9cmUrdGhpcy5fZHwwLHRo''@;'; put 'put ''aXMuX2U9aWUrdGhpcy5fZXwwfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBaPUQuYWxsb2NVbnNhZmUoMjApO3JldHVybiBaLndyaXRlSW50MzJCRSgwfHRoaXMuX2EsMCksWi53cml0ZUludDMyQkUoMHx0aGlzLl9iLDQpLFoud3JpdGVJbnQzMkJFKDB8dGhpcy5fYyw4KSxa''@;'; put 'put ''LndyaXRlSW50MzJCRSgwfHRoaXMuX2QsMTIpLFoud3JpdGVJbnQzMkJFKDB8dGhpcy5fZSwxNiksWn0sTS5leHBvcnRzPXp9LDgzMzY6KE0sTyxJKT0+e3ZhciBqPUkoNTcxNyksRz1JKDQxODkpLEQ9SSg5NTA5KS5CdWZmZXIsVD1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLC0xODk0MDA3NTg4''@;'; put 'put ''LC04OTk0OTc1MTRdLEU9bmV3IEFycmF5KDgwKTtmdW5jdGlvbiB6KCl7dGhpcy5pbml0KCksdGhpcy5fdz1FLEcuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBOKFkpe3JldHVybiBZPDw1fFk+Pj4yN31mdW5jdGlvbiBCKFkpe3JldHVybiBZPDwzMHxZPj4+Mn1mdW5jdGlvbiBaKFksVSxx''@;'; put 'put ''LEope3JldHVybiAwPT09WT9VJnF8flUmSjoyPT09WT9VJnF8VSZKfHEmSjpVXnFeSn1qKHosRyksei5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9kPTI3MTczMzg3''@;'; put 'put ''OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sei5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihZKXtmb3IodmFyIFUscT10aGlzLl93LEo9MHx0aGlzLl9hLGVlPTB8dGhpcy5fYixyZT0wfHRoaXMuX2MsaWU9MHx0aGlzLl9kLHVlPTB8dGhpcy5fZSxsZT0wO2xlPDE2OysrbGUpcVtsZV09''@;'; put 'put ''WS5yZWFkSW50MzJCRSg0KmxlKTtmb3IoO2xlPDgwOysrbGUpcVtsZV09KFU9cVtsZS0zXV5xW2xlLThdXnFbbGUtMTRdXnFbbGUtMTZdKTw8MXxVPj4+MzE7Zm9yKHZhciBhZT0wO2FlPDgwOysrYWUpe3ZhciBXPX5+KGFlLzIwKSxiPU4oSikrWihXLGVlLHJlLGllKSt1ZStxW2FlXStUW1dd''@;'; put 'put ''fDA7dWU9aWUsaWU9cmUscmU9QihlZSksZWU9SixKPWJ9dGhpcy5fYT1KK3RoaXMuX2F8MCx0aGlzLl9iPWVlK3RoaXMuX2J8MCx0aGlzLl9jPXJlK3RoaXMuX2N8MCx0aGlzLl9kPWllK3RoaXMuX2R8MCx0aGlzLl9lPXVlK3RoaXMuX2V8MH0sei5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgWT1ELmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gWS53cml0ZUludDMyQkUoMHx0aGlzLl9hLDApLFkud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxZLndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksWS53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEyKSxZLndyaXRlSW50MzJCRSgwfHRo''@;'; put 'put ''aXMuX2UsMTYpLFl9LE0uZXhwb3J0cz16fSw4NDMyOihNLE8sSSk9Pnt2YXIgaj1JKDU3MTcpLEc9SSg3NDk5KSxEPUkoNDE4OSksVD1JKDk1MDkpLkJ1ZmZlcixFPW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxELmNhbGwodGhpcyw2NCw1Nil9aih6''@;'; put 'put ''LEcpLHoucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRoaXMuX2I9OTE0MTUwNjYzLHRoaXMuX2M9ODEyNzAyOTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3''@;'; put 'put ''NjgzOSx0aGlzLl9oPTMyMDQwNzU0MjgsdGhpc30sei5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgTj1ULmFsbG9jVW5zYWZlKDI4KTtyZXR1cm4gTi53cml0ZUludDMyQkUodGhpcy5fYSwwKSxOLndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLE4ud3JpdGVJbnQzMkJFKHRoaXMuX2Ms''@;'; put 'put ''OCksTi53cml0ZUludDMyQkUodGhpcy5fZCwxMiksTi53cml0ZUludDMyQkUodGhpcy5fZSwxNiksTi53cml0ZUludDMyQkUodGhpcy5fZiwyMCksTi53cml0ZUludDMyQkUodGhpcy5fZywyNCksTn0sTS5leHBvcnRzPXp9LDc0OTk6KE0sTyxJKT0+e3ZhciBqPUkoNTcxNyksRz1JKDQxODkp''@;'; put 'put ''LEQ9SSg5NTA5KS5CdWZmZXIsVD1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYy''@;'; put 'put ''MDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcx''@;'; put 'put ''ODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEs''@;'; put 'put ''MzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1''@;'; put 'put ''MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSxFPW5ldyBBcnJheSg2NCk7ZnVuY3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxHLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gTihxLEosZWUpe3JldHVybiBlZV5xJihKXmVlKX1mdW5jdGlv''@;'; put 'put ''biBCKHEsSixlZSl7cmV0dXJuIHEmSnxlZSYocXxKKX1mdW5jdGlvbiBaKHEpe3JldHVybihxPj4+MnxxPDwzMCleKHE+Pj4xM3xxPDwxOSleKHE+Pj4yMnxxPDwxMCl9ZnVuY3Rpb24gWShxKXtyZXR1cm4ocT4+PjZ8cTw8MjYpXihxPj4+MTF8cTw8MjEpXihxPj4+MjV8cTw8Nyl9ZnVuY3Rp''@;'; put 'put ''b24gVShxKXtyZXR1cm4ocT4+Pjd8cTw8MjUpXihxPj4+MTh8cTw8MTQpXnE+Pj4zfWooeixHKSx6LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTc3OTAzMzcwMyx0aGlzLl9iPTMxNDQxMzQyNzcsdGhpcy5fYz0xMDEzOTA0MjQyLHRoaXMuX2Q9Mjc3MzQ4MDc2''@;'; put 'put ''Mix0aGlzLl9lPTEzNTk4OTMxMTksdGhpcy5fZj0yNjAwODIyOTI0LHRoaXMuX2c9NTI4NzM0NjM1LHRoaXMuX2g9MTU0MTQ1OTIyNSx0aGlzfSx6LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHEpe2Zvcih2YXIgSixlZT10aGlzLl93LHJlPTB8dGhpcy5fYSxpZT0wfHRoaXMuX2IsdWU9''@;'; put 'put ''MHx0aGlzLl9jLGxlPTB8dGhpcy5fZCxhZT0wfHRoaXMuX2UsVz0wfHRoaXMuX2YsYj0wfHRoaXMuX2csQT0wfHRoaXMuX2gsRj0wO0Y8MTY7KytGKWVlW0ZdPXEucmVhZEludDMyQkUoNCpGKTtmb3IoO0Y8NjQ7KytGKWVlW0ZdPTB8KCgoSj1lZVtGLTJdKT4+PjE3fEo8PDE1KV4oSj4+PjE5''@;'; put 'put ''fEo8PDEzKV5KPj4+MTApK2VlW0YtN10rVShlZVtGLTE1XSkrZWVbRi0xNl07Zm9yKHZhciBIPTA7SDw2NDsrK0gpe3ZhciBnPUErWShhZSkrTihhZSxXLGIpK1RbSF0rZWVbSF18MCxDPVoocmUpK0IocmUsaWUsdWUpfDA7QT1iLGI9VyxXPWFlLGFlPWxlK2d8MCxsZT11ZSx1ZT1pZSxpZT1y''@;'; put 'put ''ZSxyZT1nK0N8MH10aGlzLl9hPXJlK3RoaXMuX2F8MCx0aGlzLl9iPWllK3RoaXMuX2J8MCx0aGlzLl9jPXVlK3RoaXMuX2N8MCx0aGlzLl9kPWxlK3RoaXMuX2R8MCx0aGlzLl9lPWFlK3RoaXMuX2V8MCx0aGlzLl9mPVcrdGhpcy5fZnwwLHRoaXMuX2c9Yit0aGlzLl9nfDAsdGhpcy5faD1B''@;'; put 'put ''K3RoaXMuX2h8MH0sei5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgcT1ELmFsbG9jVW5zYWZlKDMyKTtyZXR1cm4gcS53cml0ZUludDMyQkUodGhpcy5fYSwwKSxxLndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHEud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCkscS53cml0ZUludDMyQkUo''@;'; put 'put ''dGhpcy5fZCwxMikscS53cml0ZUludDMyQkUodGhpcy5fZSwxNikscS53cml0ZUludDMyQkUodGhpcy5fZiwyMCkscS53cml0ZUludDMyQkUodGhpcy5fZywyNCkscS53cml0ZUludDMyQkUodGhpcy5faCwyOCkscX0sTS5leHBvcnRzPXp9LDE2ODY6KE0sTyxJKT0+e3ZhciBqPUkoNTcxNyks''@;'; put 'put ''Rz1JKDc4MTYpLEQ9SSg0MTg5KSxUPUkoOTUwOSkuQnVmZmVyLEU9bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24geigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9RSxELmNhbGwodGhpcywxMjgsMTEyKX1qKHosRyksei5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9haD0zNDE4''@;'; put 'put ''MDcwMzY1LHRoaXMuX2JoPTE2NTQyNzAyNTAsdGhpcy5fY2g9MjQzODUyOTM3MCx0aGlzLl9kaD0zNTU0NjIzNjAsdGhpcy5fZWg9MTczMTQwNTQxNSx0aGlzLl9maD0yMzk0MTgwMjMxLHRoaXMuX2doPTM2NzUwMDg1MjUsdGhpcy5faGg9MTIwMzA2MjgxMyx0aGlzLl9hbD0zMjM4MzcxMDMy''@;'; put 'put ''LHRoaXMuX2JsPTkxNDE1MDY2Myx0aGlzLl9jbD04MTI3MDI5OTksdGhpcy5fZGw9NDE0NDkxMjY5Nyx0aGlzLl9lbD00MjkwNzc1ODU3LHRoaXMuX2ZsPTE3NTA2MDMwMjUsdGhpcy5fZ2w9MTY5NDA3NjgzOSx0aGlzLl9obD0zMjA0MDc1NDI4LHRoaXN9LHoucHJvdG90eXBlLl9oYXNoPWZ1''@;'; put 'put ''bmN0aW9uKCl7dmFyIE49VC5hbGxvY1Vuc2FmZSg0OCk7ZnVuY3Rpb24gQihaLFksVSl7Ti53cml0ZUludDMyQkUoWixVKSxOLndyaXRlSW50MzJCRShZLFUrNCl9cmV0dXJuIEIodGhpcy5fYWgsdGhpcy5fYWwsMCksQih0aGlzLl9iaCx0aGlzLl9ibCw4KSxCKHRoaXMuX2NoLHRoaXMuX2Ns''@;'; put 'put ''LDE2KSxCKHRoaXMuX2RoLHRoaXMuX2RsLDI0KSxCKHRoaXMuX2VoLHRoaXMuX2VsLDMyKSxCKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSxOfSxNLmV4cG9ydHM9en0sNzgxNjooTSxPLEkpPT57dmFyIGo9SSg1NzE3KSxHPUkoNDE4OSksRD1JKDk1MDkpLkJ1ZmZlcixUPVsxMTE2MzUyNDA4LDM2''@;'; put 'put ''MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0''@;'; put 'put ''MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4''@;'; put 'put ''NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4Niwy''@;'; put 'put ''MTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4''@;'; put 'put ''MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5''@;'; put 'put ''MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkw''@;'; put 'put ''OSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1Mzcw''@;'; put 'put ''MDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEw''@;'; put 'put ''MjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIx''@;'; put 'put ''LDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUw''@;'; put 'put ''NTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV0sRT1uZXcgQXJyYXkoMTYwKTtmdW5jdGlvbiB6KCl7dGhpcy5pbml0KCksdGhpcy5fdz1FLEcuY2FsbCh0aGlzLDEyOCwxMTIpfWZ1bmN0aW9uIE4oaWUsdWUsbGUpe3JldHVybiBsZV5p''@;'; put 'put ''ZSYodWVebGUpfWZ1bmN0aW9uIEIoaWUsdWUsbGUpe3JldHVybiBpZSZ1ZXxsZSYoaWV8dWUpfWZ1bmN0aW9uIFooaWUsdWUpe3JldHVybihpZT4+PjI4fHVlPDw0KV4odWU+Pj4yfGllPDwzMCleKHVlPj4+N3xpZTw8MjUpfWZ1bmN0aW9uIFkoaWUsdWUpe3JldHVybihpZT4+PjE0fHVlPDwx''@;'; put 'put ''OCleKGllPj4+MTh8dWU8PDE0KV4odWU+Pj45fGllPDwyMyl9ZnVuY3Rpb24gVShpZSx1ZSl7cmV0dXJuKGllPj4+MXx1ZTw8MzEpXihpZT4+Pjh8dWU8PDI0KV5pZT4+Pjd9ZnVuY3Rpb24gcShpZSx1ZSl7cmV0dXJuKGllPj4+MXx1ZTw8MzEpXihpZT4+Pjh8dWU8PDI0KV4oaWU+Pj43fHVl''@;'; put 'put ''PDwyNSl9ZnVuY3Rpb24gSihpZSx1ZSl7cmV0dXJuKGllPj4+MTl8dWU8PDEzKV4odWU+Pj4yOXxpZTw8MyleaWU+Pj42fWZ1bmN0aW9uIGVlKGllLHVlKXtyZXR1cm4oaWU+Pj4xOXx1ZTw8MTMpXih1ZT4+PjI5fGllPDwzKV4oaWU+Pj42fHVlPDwyNil9ZnVuY3Rpb24gcmUoaWUsdWUpe3Jl''@;'; put 'put ''dHVybiBpZT4+PjA8dWU+Pj4wPzE6MH1qKHosRyksei5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9haD0xNzc5MDMzNzAzLHRoaXMuX2JoPTMxNDQxMzQyNzcsdGhpcy5fY2g9MTAxMzkwNDI0Mix0aGlzLl9kaD0yNzczNDgwNzYyLHRoaXMuX2VoPTEzNTk4OTMxMTks''@;'; put 'put ''dGhpcy5fZmg9MjYwMDgyMjkyNCx0aGlzLl9naD01Mjg3MzQ2MzUsdGhpcy5faGg9MTU0MTQ1OTIyNSx0aGlzLl9hbD00MDg5MjM1NzIwLHRoaXMuX2JsPTIyMjc4NzM1OTUsdGhpcy5fY2w9NDI3MTE3NTcyMyx0aGlzLl9kbD0xNTk1NzUwMTI5LHRoaXMuX2VsPTI5MTc1NjUxMzcsdGhpcy5f''@;'; put 'put ''Zmw9NzI1NTExMTk5LHRoaXMuX2dsPTQyMTUzODk1NDcsdGhpcy5faGw9MzI3MDMzMjA5LHRoaXN9LHoucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oaWUpe2Zvcih2YXIgdWU9dGhpcy5fdyxsZT0wfHRoaXMuX2FoLGFlPTB8dGhpcy5fYmgsVz0wfHRoaXMuX2NoLGI9MHx0aGlzLl9kaCxB''@;'; put 'put ''PTB8dGhpcy5fZWgsRj0wfHRoaXMuX2ZoLEg9MHx0aGlzLl9naCxnPTB8dGhpcy5faGgsQz0wfHRoaXMuX2FsLGs9MHx0aGlzLl9ibCxfPTB8dGhpcy5fY2wscD0wfHRoaXMuX2RsLHc9MHx0aGlzLl9lbCxLPTB8dGhpcy5fZmwsdGU9MHx0aGlzLl9nbCxjZT0wfHRoaXMuX2hsLGhlPTA7aGU8''@;'; put 'put ''MzI7aGUrPTIpdWVbaGVdPWllLnJlYWRJbnQzMkJFKDQqaGUpLHVlW2hlKzFdPWllLnJlYWRJbnQzMkJFKDQqaGUrNCk7Zm9yKDtoZTwxNjA7aGUrPTIpe3ZhciBTZT11ZVtoZS0zMF0sTGU9dWVbaGUtMzArMV0sSGU9VShTZSxMZSkseGU9cShMZSxTZSksRGU9SihTZT11ZVtoZS00XSxMZT11''@;'; put 'put ''ZVtoZS00KzFdKSxCZT1lZShMZSxTZSkscWU9dWVbaGUtMzJdLG90PXVlW2hlLTMyKzFdLEZlPXhlK3VlW2hlLTE0KzFdfDAsd2U9SGUrdWVbaGUtMTRdK3JlKEZlLHhlKXwwO3dlPSh3ZT13ZStEZStyZShGZT1GZStCZXwwLEJlKXwwKStxZStyZShGZT1GZStvdHwwLG90KXwwLHVlW2hlXT13''@;'; put 'put ''ZSx1ZVtoZSsxXT1GZX1mb3IodmFyIEVlPTA7RWU8MTYwO0VlKz0yKXt3ZT11ZVtFZV0sRmU9dWVbRWUrMV07dmFyIEllPUIobGUsYWUsVyksWGU9QihDLGssXyksdHQ9WihsZSxDKSxaZT1aKEMsbGUpLGN0PVkoQSx3KSxrZT1ZKHcsQSksQWU9VFtFZV0samU9VFtFZSsxXSxpdD1OKEEsRixI''@;'; put 'put ''KSxzdD1OKHcsSyx0ZSkseHQ9Y2Ura2V8MCxGdD1nK2N0K3JlKHh0LGNlKXwwO0Z0PShGdD0oRnQ9RnQraXQrcmUoeHQ9eHQrc3R8MCxzdCl8MCkrQWUrcmUoeHQ9eHQramV8MCxqZSl8MCkrd2UrcmUoeHQ9eHQrRmV8MCxGZSl8MDt2YXIgT3Q9WmUrWGV8MCxLdD10dCtJZStyZShPdCxaZSl8''@;'; put 'put ''MDtnPUgsY2U9dGUsSD1GLHRlPUssRj1BLEs9dyxBPWIrRnQrcmUodz1wK3h0fDAscCl8MCxiPVcscD1fLFc9YWUsXz1rLGFlPWxlLGs9QyxsZT1GdCtLdCtyZShDPXh0K090fDAseHQpfDB9dGhpcy5fYWw9dGhpcy5fYWwrQ3wwLHRoaXMuX2JsPXRoaXMuX2JsK2t8MCx0aGlzLl9jbD10aGlz''@;'; put 'put ''Ll9jbCtffDAsdGhpcy5fZGw9dGhpcy5fZGwrcHwwLHRoaXMuX2VsPXRoaXMuX2VsK3d8MCx0aGlzLl9mbD10aGlzLl9mbCtLfDAsdGhpcy5fZ2w9dGhpcy5fZ2wrdGV8MCx0aGlzLl9obD10aGlzLl9obCtjZXwwLHRoaXMuX2FoPXRoaXMuX2FoK2xlK3JlKHRoaXMuX2FsLEMpfDAsdGhpcy5f''@;'; put 'put ''Ymg9dGhpcy5fYmgrYWUrcmUodGhpcy5fYmwsayl8MCx0aGlzLl9jaD10aGlzLl9jaCtXK3JlKHRoaXMuX2NsLF8pfDAsdGhpcy5fZGg9dGhpcy5fZGgrYityZSh0aGlzLl9kbCxwKXwwLHRoaXMuX2VoPXRoaXMuX2VoK0ErcmUodGhpcy5fZWwsdyl8MCx0aGlzLl9maD10aGlzLl9maCtGK3Jl''@;'; put 'put ''KHRoaXMuX2ZsLEspfDAsdGhpcy5fZ2g9dGhpcy5fZ2grSCtyZSh0aGlzLl9nbCx0ZSl8MCx0aGlzLl9oaD10aGlzLl9oaCtnK3JlKHRoaXMuX2hsLGNlKXwwfSx6LnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBpZT1ELmFsbG9jVW5zYWZlKDY0KTtmdW5jdGlvbiB1ZShsZSxhZSxX''@;'; put 'put ''KXtpZS53cml0ZUludDMyQkUobGUsVyksaWUud3JpdGVJbnQzMkJFKGFlLFcrNCl9cmV0dXJuIHVlKHRoaXMuX2FoLHRoaXMuX2FsLDApLHVlKHRoaXMuX2JoLHRoaXMuX2JsLDgpLHVlKHRoaXMuX2NoLHRoaXMuX2NsLDE2KSx1ZSh0aGlzLl9kaCx0aGlzLl9kbCwyNCksdWUodGhpcy5fZWgs''@;'; put 'put ''dGhpcy5fZWwsMzIpLHVlKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKSx1ZSh0aGlzLl9naCx0aGlzLl9nbCw0OCksdWUodGhpcy5faGgsdGhpcy5faGwsNTYpLGllfSxNLmV4cG9ydHM9en0sMjgzMDooTSxPLEkpPT57TS5leHBvcnRzPUc7dmFyIGo9SSg3MTg3KS5FdmVudEVtaXR0ZXI7ZnVuY3Rp''@;'; put 'put ''b24gRygpe2ouY2FsbCh0aGlzKX1JKDU3MTcpKEcsaiksRy5SZWFkYWJsZT1JKDk0ODEpLEcuV3JpdGFibGU9SSg0MjI5KSxHLkR1cGxleD1JKDY3NTMpLEcuVHJhbnNmb3JtPUkoNDYwNSksRy5QYXNzVGhyb3VnaD1JKDI3MjUpLEcuZmluaXNoZWQ9SSg4NjEwKSxHLnBpcGVsaW5lPUkoOTk0''@;'; put 'put ''NiksRy5TdHJlYW09RyxHLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKEQsVCl7dmFyIEU9dGhpcztmdW5jdGlvbiB6KEope0Qud3JpdGFibGUmJiExPT09RC53cml0ZShKKSYmRS5wYXVzZSYmRS5wYXVzZSgpfWZ1bmN0aW9uIE4oKXtFLnJlYWRhYmxlJiZFLnJlc3VtZSYmRS5yZXN1bWUoKX1F''@;'; put 'put ''Lm9uKCJkYXRhIix6KSxELm9uKCJkcmFpbiIsTiksRC5faXNTdGRpb3x8VCYmITE9PT1ULmVuZHx8KEUub24oImVuZCIsWiksRS5vbigiY2xvc2UiLFkpKTt2YXIgQj0hMTtmdW5jdGlvbiBaKCl7Qnx8KEI9ITAsRC5lbmQoKSl9ZnVuY3Rpb24gWSgpe0J8fChCPSEwLCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBELmRlc3Ryb3kmJkQuZGVzdHJveSgpKX1mdW5jdGlvbiBVKEope2lmKHEoKSwwPT09ai5saXN0ZW5lckNvdW50KHRoaXMsImVycm9yIikpdGhyb3cgSn1mdW5jdGlvbiBxKCl7RS5yZW1vdmVMaXN0ZW5lcigiZGF0YSIseiksRC5yZW1vdmVMaXN0ZW5lcigiZHJhaW4iLE4pLEUucmVt''@;'; put 'put ''b3ZlTGlzdGVuZXIoImVuZCIsWiksRS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFkpLEUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixVKSxELnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsVSksRS5yZW1vdmVMaXN0ZW5lcigiZW5kIixxKSxFLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIscSksRC5yZW1v''@;'; put 'put ''dmVMaXN0ZW5lcigiY2xvc2UiLHEpfXJldHVybiBFLm9uKCJlcnJvciIsVSksRC5vbigiZXJyb3IiLFUpLEUub24oImVuZCIscSksRS5vbigiY2xvc2UiLHEpLEQub24oImNsb3NlIixxKSxELmVtaXQoInBpcGUiLEUpLER9fSwyNTUzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg5''@;'; put 'put ''NTA5KS5CdWZmZXIsRz1qLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKHEpe3N3aXRjaCgocT0iIitxKSYmcS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3Mt''@;'; put 'put ''MiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIEQocSl7dmFyIEo7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24oZWUpe3ZhciByZT1mdW5jdGlvbihpZSl7aWYoIWllKXJldHVybiJ1dGY4Ijtm''@;'; put 'put ''b3IodmFyIHVlOzspc3dpdGNoKGllKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGlu''@;'; put 'put ''MSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gaWU7ZGVmYXVsdDppZih1ZSlyZXR1cm47aWU9KCIiK2llKS50b0xvd2VyQ2FzZSgpLHVlPSEwfX0oZWUpO2lmKCJzdHJpbmciIT10eXBlb2YgcmUmJihqLmlzRW5jb2Rpbmc9PT1HfHwhRyhlZSkpKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlZSk7cmV0dXJuIHJlfHxlZX0ocSksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9eix0aGlzLmVuZD1OLEo9NDticmVhaztjYXNlInV0ZjgiOnRoaXMuZmlsbExhc3Q9RSxKPTQ7YnJlYWs7Y2FzZSJiYXNlNjQiOnRo''@;'; put 'put ''aXMudGV4dD1CLHRoaXMuZW5kPVosSj0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9WSx2b2lkKHRoaXMuZW5kPVUpfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMubGFzdENoYXI9ai5hbGxvY1Vuc2FmZShKKX1mdW5jdGlvbiBUKHEpe3JldHVybiBxPD0x''@;'; put 'put ''Mjc/MDpxPj41PT02PzI6cT4+ND09MTQ/MzpxPj4zPT0zMD80OnE+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gRShxKXt2YXIgSj10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLGVlPWZ1bmN0aW9uKHJlLGllLHVlKXtpZigxMjghPSgxOTImaWVbMF0pKXJldHVybiByZS5sYXN0TmVlZD0wLCJc''@;'; put 'put ''dWZmZmQiO2lmKHJlLmxhc3ROZWVkPjEmJmllLmxlbmd0aD4xKXtpZigxMjghPSgxOTImaWVbMV0pKXJldHVybiByZS5sYXN0TmVlZD0xLCJcdWZmZmQiO2lmKHJlLmxhc3ROZWVkPjImJmllLmxlbmd0aD4yJiYxMjghPSgxOTImaWVbMl0pKXJldHVybiByZS5sYXN0TmVlZD0yLCJcdWZmZmQi''@;'; put 'put ''fX0odGhpcyxxKTtyZXR1cm4gdm9pZCAwIT09ZWU/ZWU6dGhpcy5sYXN0TmVlZDw9cS5sZW5ndGg/KHEuY29weSh0aGlzLmxhc3RDaGFyLEosMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihxLmNvcHkodGhp''@;'; put 'put ''cy5sYXN0Q2hhcixKLDAscS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09cS5sZW5ndGgpKX1mdW5jdGlvbiB6KHEsSil7aWYoKHEubGVuZ3RoLUopJTI9PTApe3ZhciBlZT1xLnRvU3RyaW5nKCJ1dGYxNmxlIixKKTtpZihlZSl7dmFyIHJlPWVlLmNoYXJDb2RlQXQoZWUubGVuZ3RoLTEp''@;'; put 'put ''O2lmKHJlPj01NTI5NiYmcmU8PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPXFbcS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1xW3EubGVuZ3RoLTFdLGVlLnNsaWNlKDAsLTEpfXJldHVybiBlZX1yZXR1cm4gdGhpcy5s''@;'; put 'put ''YXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1xW3EubGVuZ3RoLTFdLHEudG9TdHJpbmcoInV0ZjE2bGUiLEoscS5sZW5ndGgtMSl9ZnVuY3Rpb24gTihxKXt2YXIgSj1xJiZxLmxlbmd0aD90aGlzLndyaXRlKHEpOiIiO3JldHVybiB0aGlzLmxhc3ROZWVkP0or''@;'; put 'put ''dGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCx0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkKTpKfWZ1bmN0aW9uIEIocSxKKXt2YXIgZWU9KHEubGVuZ3RoLUopJTM7cmV0dXJuIDA9PT1lZT9xLnRvU3RyaW5nKCJiYXNlNjQiLEopOih0aGlzLmxhc3ROZWVkPTMtZWUsdGhp''@;'; put 'put ''cy5sYXN0VG90YWw9MywxPT09ZWU/dGhpcy5sYXN0Q2hhclswXT1xW3EubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPXFbcS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1xW3EubGVuZ3RoLTFdKSxxLnRvU3RyaW5nKCJiYXNlNjQiLEoscS5sZW5ndGgtZWUpKX1mdW5jdGlvbiBaKHEp''@;'; put 'put ''e3ZhciBKPXEmJnEubGVuZ3RoP3RoaXMud3JpdGUocSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/Sit0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJiYXNlNjQiLDAsMy10aGlzLmxhc3ROZWVkKTpKfWZ1bmN0aW9uIFkocSl7cmV0dXJuIHEudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rp''@;'; put 'put ''b24gVShxKXtyZXR1cm4gcSYmcS5sZW5ndGg/dGhpcy53cml0ZShxKToiIn1PLlN0cmluZ0RlY29kZXI9RCxELnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihxKXtpZigwPT09cS5sZW5ndGgpcmV0dXJuIiI7dmFyIEosZWU7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KEo9dGhpcy5m''@;'; put 'put ''aWxsTGFzdChxKSkpcmV0dXJuIiI7ZWU9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSBlZT0wO3JldHVybiBlZTxxLmxlbmd0aD9KP0ordGhpcy50ZXh0KHEsZWUpOnRoaXMudGV4dChxLGVlKTpKfHwiIn0sRC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHEpe3ZhciBKPXEmJnEu''@;'; put 'put ''bGVuZ3RoP3RoaXMud3JpdGUocSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/SisiXHVmZmZkIjpKfSxELnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHEsSil7dmFyIGVlPWZ1bmN0aW9uKGllLHVlLGxlKXt2YXIgYWU9dWUubGVuZ3RoLTE7aWYoYWU8bGUpcmV0dXJuIDA7dmFyIFc9VCh1ZVth''@;'; put 'put ''ZV0pO3JldHVybiBXPj0wPyhXPjAmJihpZS5sYXN0TmVlZD1XLTEpLFcpOi0tYWU8bGV8fC0yPT09Vz8wOihXPVQodWVbYWVdKSk+PTA/KFc+MCYmKGllLmxhc3ROZWVkPVctMiksVyk6LS1hZTxsZXx8LTI9PT1XPzA6KFc9VCh1ZVthZV0pKT49MD8oVz4wJiYoMj09PVc/Vz0wOmllLmxhc3RO''@;'; put 'put ''ZWVkPVctMyksVyk6MH0odGhpcyxxLEopO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBxLnRvU3RyaW5nKCJ1dGY4IixKKTt0aGlzLmxhc3RUb3RhbD1lZTt2YXIgcmU9cS5sZW5ndGgtKGVlLXRoaXMubGFzdE5lZWQpO3JldHVybiBxLmNvcHkodGhpcy5sYXN0Q2hhciwwLHJlKSxxLnRvU3Ry''@;'; put 'put ''aW5nKCJ1dGY4IixKLHJlKX0sRC5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24ocSl7aWYodGhpcy5sYXN0TmVlZDw9cS5sZW5ndGgpcmV0dXJuIHEuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFy''@;'; put 'put ''LnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7cS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHEubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1xLmxlbmd0aH19LDc4NTc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijtjb25zdCBq''@;'; put 'put ''PUkoMzY4OSksRz1JKDQ1NjQpLEQ9SSg3NTIpLFQ9SSgyMjI0KS55LEU9SSg1NzYxKS5tLHo9SSg4OTcxKS5VLE49SSg3NjUyKSxCPUkoNDU2KSx7ZnJvbUNhbGxiYWNrOlp9PUkoNzA0MSkse2dldEN1c3RvbUluc3BlY3RTeW1ib2w6WX09SSgxMjY5KSxVPS9eW1x4MjFceDIzLVx4MkJceDJE''@;'; put 'put ''LVx4M0FceDNDLVx4NUJceDVELVx4N0VdKyQvLHE9L1tceDAwLVx4MUZdLyxKPVsiXG4iLCJcciIsIlwwIl0sZWU9L1tceDIwLVx4M0FceDNDLVx4N0VdKy8scmU9L1tceDA5XHgyMC1ceDJGXHgzQi1ceDQwXHg1Qi1ceDYwXHg3Qi1ceDdFXS8saWU9e2phbjowLGZlYjoxLG1hcjoyLGFwcjoz''@;'; put 'put ''LG1heTo0LGp1bjo1LGp1bDo2LGF1Zzo3LHNlcDo4LG9jdDo5LG5vdjoxMCxkZWM6MTF9LHVlPTIxNDc0ODM2NDdlMyxsZT0nSW52YWxpZCBzYW1lU2l0ZUNvbnRleHQgb3B0aW9uIGZvciBnZXRDb29raWVzKCk7IGV4cGVjdGVkIG9uZSBvZiAic3RyaWN0IiwgImxheCIsIG9yICJub25lIic7''@;'; put 'put ''ZnVuY3Rpb24gYWUocWUpe04udmFsaWRhdGUoTi5pc05vbkVtcHR5U3RyaW5nKHFlKSxxZSk7Y29uc3Qgb3Q9U3RyaW5nKHFlKS50b0xvd2VyQ2FzZSgpO3JldHVybiJub25lIj09PW90fHwibGF4Ij09PW90fHwic3RyaWN0Ij09PW90P290Om51bGx9Y29uc3QgVz1PYmplY3QuZnJlZXplKHtT''@;'; put 'put ''SUxFTlQ6InNpbGVudCIsU1RSSUNUOiJzdHJpY3QiLERJU0FCTEVEOiJ1bnNhZmUtZGlzYWJsZWQifSksYj0vKD86Xig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkpezN9JCl8KD86Xig/Oig/Olth''@;'; put 'put ''LWZcZF17MSw0fTopezd9KD86W2EtZlxkXXsxLDR9fDopfCg/OlthLWZcZF17MSw0fTopezZ9KD86KD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSg/OlwuKD86MjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XVxkfFxkKSl7M318OlthLWZcZF17MSw0fXw6KXwoPzpbYS1m''@;'; put 'put ''XGRdezEsNH06KXs1fSg/OjooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDJ9fDopfCg/OlthLWZcZF17MSw0fTopezR9KD86KD86OlthLWZcZF17MSw0''@;'; put 'put ''fSl7MCwxfTooPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDN9fDopfCg/OlthLWZcZF17MSw0fTopezN9KD86KD86OlthLWZcZF17MSw0fSl7MCwyfToo''@;'; put 'put ''PzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDR9fDopfCg/OlthLWZcZF17MSw0fTopezJ9KD86KD86OlthLWZcZF17MSw0fSl7MCwzfTooPzoyNVswLTVd''@;'; put 'put ''fDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDV9fDopfCg/OlthLWZcZF17MSw0fTopezF9KD86KD86OlthLWZcZF17MSw0fSl7MCw0fTooPzoyNVswLTVdfDJbMC00XVxk''@;'; put 'put ''fDFcZFxkfFsxLTldXGR8XGQpKD86XC4oPzoyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldXGR8XGQpKXszfXwoPzo6W2EtZlxkXXsxLDR9KXsxLDZ9fDopfCg/OjooPzooPzo6W2EtZlxkXXsxLDR9KXswLDV9Oig/OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkoPzpcLig/''@;'; put 'put ''OjI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV1cZHxcZCkpezN9fCg/OjpbYS1mXGRdezEsNH0pezEsN318OikpKSQpLyxBPSJcblxcWz8oPzpcbig/OlthLWZBLUZcXGRdezEsNH06KXs3fSg/OlthLWZBLUZcXGRdezEsNH18Oil8XG4oPzpbYS1mQS1GXFxkXXsxLDR9Oil7Nn0oPzooPzoy''@;'; put 'put ''NVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkpezN9fDpbYS1mQS1GXFxkXXsxLDR9fDopfFxuKD86W2EtZkEtRlxcZF17MSw0fTopezV9KD86Oig/OjI1WzAtNV18MlswLTRdXFxkfDFc''@;'; put 'put ''XGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSl7M318KD86OlthLWZBLUZcXGRdezEsNH0pezEsMn18Oil8XG4oPzpbYS1mQS1GXFxkXXsxLDR9Oil7NH0oPzooPzo6W2EtZkEtRlxcZF17MSw0fSl7MCwxfTooPzoyNVsw''@;'; put 'put ''LTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkpezN9fCg/OjpbYS1mQS1GXFxkXXsxLDR9KXsxLDN9fDopfFxuKD86W2EtZkEtRlxcZF17MSw0fTopezN9KD86KD86OlthLWZBLUZcXGRdezEs''@;'; put 'put ''NH0pezAsMn06KD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKD86XFwuKD86MjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XVxcZHxcXGQpKXszfXwoPzo6W2EtZkEtRlxcZF17MSw0fSl7MSw0fXw6KXxcbig/OlthLWZBLUZcXGRdezEsNH06KXsyfSg/Oig/''@;'; put 'put ''OjpbYS1mQS1GXFxkXXsxLDR9KXswLDN9Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSl7M318KD86OlthLWZBLUZcXGRdezEsNH0pezEsNX18Oil8XG4oPzpbYS1mQS1GXFxk''@;'; put 'put ''XXsxLDR9Oil7MX0oPzooPzo6W2EtZkEtRlxcZF17MSw0fSl7MCw0fTooPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkoPzpcXC4oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldXFxkfFxcZCkpezN9fCg/OjpbYS1mQS1GXFxkXXsxLDR9KXsxLDZ9fDop''@;'; put 'put ''fFxuKD86Oig/Oig/OjpbYS1mQS1GXFxkXXsxLDR9KXswLDV9Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSg/OlxcLig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV1cXGR8XFxkKSl7M318KD86OlthLWZBLUZcXGRdezEsNH0pezEsN318OikpXG4p''@;'; put 'put ''KD86JVswLTlhLXpBLVpdezEsfSk/XFxdP1xuIi5yZXBsYWNlKC9ccypcL1wvLiokL2dtLCIiKS5yZXBsYWNlKC9cbi9nLCIiKS50cmltKCksRj1uZXcgUmVnRXhwKGBeJHtBfSRgKTtmdW5jdGlvbiBIKHFlLG90LEZlLHdlKXtsZXQgRWU9MDtmb3IoO0VlPHFlLmxlbmd0aDspe2NvbnN0IEll''@;'; put 'put ''PXFlLmNoYXJDb2RlQXQoRWUpO2lmKEllPD00N3x8SWU+PTU4KWJyZWFrO0VlKyt9cmV0dXJuIEVlPG90fHxFZT5GZT9udWxsOndlfHxFZT09cWUubGVuZ3RoP3BhcnNlSW50KHFlLnN1YnN0cigwLEVlKSwxMCk6bnVsbH1mdW5jdGlvbiBnKHFlKXtjb25zdCBvdD1xZS5zcGxpdCgiOiIpLEZl''@;'; put 'put ''PVswLDAsMF07aWYoMyE9PW90Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IobGV0IHdlPTA7d2U8Mzt3ZSsrKXtjb25zdCBJZT1IKG90W3dlXSwxLDIsMj09d2UpO2lmKG51bGw9PT1JZSlyZXR1cm4gbnVsbDtGZVt3ZV09SWV9cmV0dXJuIEZlfWZ1bmN0aW9uIEMocWUpe3FlPVN0cmluZyhxZSku''@;'; put 'put ''c3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKTtjb25zdCBvdD1pZVtxZV07cmV0dXJuIG90Pj0wP290Om51bGx9ZnVuY3Rpb24gayhxZSl7aWYoIXFlKXJldHVybjtjb25zdCBvdD1xZS5zcGxpdChyZSk7aWYoIW90KXJldHVybjtsZXQgRmU9bnVsbCx3ZT1udWxsLEVlPW51bGwsSWU9bnVsbCxY''@;'; put 'put ''ZT1udWxsLHR0PW51bGw7Zm9yKGxldCBaZT0wO1plPG90Lmxlbmd0aDtaZSsrKXtjb25zdCBjdD1vdFtaZV0udHJpbSgpO2lmKCFjdC5sZW5ndGgpY29udGludWU7bGV0IGtlO251bGw9PT1FZSYmKGtlPWcoY3QpLGtlKT8oRmU9a2VbMF0sd2U9a2VbMV0sRWU9a2VbMl0pOm51bGwhPT1JZXx8''@;'; put 'put ''KGtlPUgoY3QsMSwyLCEwKSxudWxsPT09a2UpP251bGwhPT1YZXx8KGtlPUMoY3QpLG51bGw9PT1rZSk/bnVsbD09PXR0JiYoa2U9SChjdCwyLDQsITApLG51bGwhPT1rZSYmKHR0PWtlLHR0Pj03MCYmdHQ8PTk5P3R0Kz0xOTAwOnR0Pj0wJiZ0dDw9NjkmJih0dCs9MmUzKSkpOlhlPWtlOkll''@;'; put 'put ''PWtlfXJldHVybiBudWxsPT09SWV8fG51bGw9PT1YZXx8bnVsbD09PXR0fHxudWxsPT09RWV8fEllPDF8fEllPjMxfHx0dDwxNjAxfHxGZT4yM3x8d2U+NTl8fEVlPjU5P3ZvaWQgMDpuZXcgRGF0ZShEYXRlLlVUQyh0dCxYZSxJZSxGZSx3ZSxFZSkpfWZ1bmN0aW9uIF8ocWUpe3JldHVybiBO''@;'; put 'put ''LnZhbGlkYXRlKE4uaXNEYXRlKHFlKSxxZSkscWUudG9VVENTdHJpbmcoKX1mdW5jdGlvbiBwKHFlKXtyZXR1cm4gbnVsbD09cWU/bnVsbDoocWU9cWUudHJpbSgpLnJlcGxhY2UoL15cLi8sIiIpLEYudGVzdChxZSkmJihxZT1xZS5yZXBsYWNlKCJbIiwiIikucmVwbGFjZSgiXSIsIiIpKSxq''@;'; put 'put ''JiYvW15cdTAwMDEtXHUwMDdmXS8udGVzdChxZSkmJihxZT1qLnRvQVNDSUkocWUpKSxxZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiB3KHFlLG90LEZlKXtpZihudWxsPT1xZXx8bnVsbD09b3QpcmV0dXJuIG51bGw7aWYoITEhPT1GZSYmKHFlPXAocWUpLG90PXAob3QpKSxxZT09b3QpcmV0''@;'; put 'put ''dXJuITA7Y29uc3Qgd2U9cWUubGFzdEluZGV4T2Yob3QpO3JldHVybiEod2U8PTB8fHFlLmxlbmd0aCE9PW90Lmxlbmd0aCt3ZXx8Ii4iIT09cWUuc3Vic3RyKHdlLTEsMSl8fGIudGVzdChxZSkpfWZ1bmN0aW9uIEsocWUpe2lmKCFxZXx8Ii8iIT09cWUuc3Vic3RyKDAsMSkpcmV0dXJuIi8i''@;'; put 'put ''O2lmKCIvIj09PXFlKXJldHVybiBxZTtjb25zdCBvdD1xZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiAwPT09b3Q/Ii8iOnFlLnNsaWNlKDAsb3QpfWZ1bmN0aW9uIGNlKHFlLG90KXtpZihvdCYmIm9iamVjdCI9PXR5cGVvZiBvdHx8KG90PXt9KSxOLmlzRW1wdHlTdHJpbmcocWUpfHwhTi5p''@;'; put 'put ''c1N0cmluZyhxZSkpcmV0dXJuIG51bGw7Y29uc3QgRmU9KHFlPXFlLnRyaW0oKSkuaW5kZXhPZigiOyIpLHdlPWZ1bmN0aW9uIHRlKHFlLG90KXtxZT1mdW5jdGlvbihYZSl7aWYoTi5pc0VtcHR5U3RyaW5nKFhlKSlyZXR1cm4gWGU7Zm9yKGxldCB0dD0wO3R0PEoubGVuZ3RoO3R0Kyspe2Nv''@;'; put 'put ''bnN0IFplPVhlLmluZGV4T2YoSlt0dF0pOy0xIT09WmUmJihYZT1YZS5zdWJzdHIoMCxaZSkpfXJldHVybiBYZX0ocWUpLE4udmFsaWRhdGUoTi5pc1N0cmluZyhxZSkscWUpO2xldCBGZSx3ZSxFZT1xZS5pbmRleE9mKCI9Iik7aWYob3QpMD09PUVlJiYoRWU9KHFlPXFlLnN1YnN0cigxKSku''@;'; put 'put ''aW5kZXhPZigiPSIpKTtlbHNlIGlmKEVlPD0wKXJldHVybjtpZihFZTw9MD8oRmU9IiIsd2U9cWUudHJpbSgpKTooRmU9cWUuc3Vic3RyKDAsRWUpLnRyaW0oKSx3ZT1xZS5zdWJzdHIoRWUrMSkudHJpbSgpKSxxLnRlc3QoRmUpfHxxLnRlc3Qod2UpKXJldHVybjtjb25zdCBJZT1uZXcgRGU7''@;'; put 'put ''cmV0dXJuIEllLmtleT1GZSxJZS52YWx1ZT13ZSxJZX0oLTE9PT1GZT9xZTpxZS5zdWJzdHIoMCxGZSksISFvdC5sb29zZSk7aWYoIXdlKXJldHVybjtpZigtMT09PUZlKXJldHVybiB3ZTtjb25zdCBFZT1xZS5zbGljZShGZSsxKS50cmltKCk7aWYoMD09PUVlLmxlbmd0aClyZXR1cm4gd2U7''@;'; put 'put ''Y29uc3QgSWU9RWUuc3BsaXQoIjsiKTtmb3IoO0llLmxlbmd0aDspe2NvbnN0IFhlPUllLnNoaWZ0KCkudHJpbSgpO2lmKDA9PT1YZS5sZW5ndGgpY29udGludWU7Y29uc3QgdHQ9WGUuaW5kZXhPZigiPSIpO2xldCBaZSxjdDtzd2l0Y2goLTE9PT10dD8oWmU9WGUsY3Q9bnVsbCk6KFplPVhl''@;'; put 'put ''LnN1YnN0cigwLHR0KSxjdD1YZS5zdWJzdHIodHQrMSkpLFplPVplLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGN0JiYoY3Q9Y3QudHJpbSgpKSxaZSl7Y2FzZSJleHBpcmVzIjppZihjdCl7Y29uc3Qga2U9ayhjdCk7a2UmJih3ZS5leHBpcmVzPWtlKX1icmVhaztjYXNlIm1heC1hZ2UiOmlmKGN0''@;'; put 'put ''JiYvXi0/WzAtOV0rJC8udGVzdChjdCkpe2NvbnN0IGtlPXBhcnNlSW50KGN0LDEwKTt3ZS5zZXRNYXhBZ2Uoa2UpfWJyZWFrO2Nhc2UiZG9tYWluIjppZihjdCl7Y29uc3Qga2U9Y3QudHJpbSgpLnJlcGxhY2UoL15cLi8sIiIpO2tlJiYod2UuZG9tYWluPWtlLnRvTG93ZXJDYXNlKCkpfWJy''@;'; put 'put ''ZWFrO2Nhc2UicGF0aCI6d2UucGF0aD1jdCYmIi8iPT09Y3RbMF0/Y3Q6bnVsbDticmVhaztjYXNlInNlY3VyZSI6d2Uuc2VjdXJlPSEwO2JyZWFrO2Nhc2UiaHR0cG9ubHkiOndlLmh0dHBPbmx5PSEwO2JyZWFrO2Nhc2Uic2FtZXNpdGUiOnN3aXRjaChjdD9jdC50b0xvd2VyQ2FzZSgpOiIi''@;'; put 'put ''KXtjYXNlInN0cmljdCI6d2Uuc2FtZVNpdGU9InN0cmljdCI7YnJlYWs7Y2FzZSJsYXgiOndlLnNhbWVTaXRlPSJsYXgiO2JyZWFrO2Nhc2Uibm9uZSI6d2Uuc2FtZVNpdGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6d2Uuc2FtZVNpdGU9dm9pZCAwfWJyZWFrO2RlZmF1bHQ6d2UuZXh0ZW5zaW9u''@;'; put 'put ''cz13ZS5leHRlbnNpb25zfHxbXSx3ZS5leHRlbnNpb25zLnB1c2goWGUpfX1yZXR1cm4gd2V9ZnVuY3Rpb24gaGUocWUpe2xldCBvdDt0cnl7b3Q9SlNPTi5wYXJzZShxZSl9Y2F0Y2goRmUpe3JldHVybiBGZX1yZXR1cm4gb3R9ZnVuY3Rpb24gU2UocWUpe2lmKCFxZXx8Ti5pc0VtcHR5U3Ry''@;'; put 'put ''aW5nKHFlKSlyZXR1cm4gbnVsbDtsZXQgb3Q7aWYoInN0cmluZyI9PXR5cGVvZiBxZSl7aWYob3Q9aGUocWUpLG90IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIG51bGx9ZWxzZSBvdD1xZTtjb25zdCBGZT1uZXcgRGU7Zm9yKGxldCB3ZT0wO3dlPERlLnNlcmlhbGl6YWJsZVByb3BlcnRpZXMu''@;'; put 'put ''bGVuZ3RoO3dlKyspe2NvbnN0IEVlPURlLnNlcmlhbGl6YWJsZVByb3BlcnRpZXNbd2VdO3ZvaWQgMCE9PW90W0VlXSYmb3RbRWVdIT09eGVbRWVdJiYoRmVbRWVdPSJleHBpcmVzIj09PUVlfHwiY3JlYXRpb24iPT09RWV8fCJsYXN0QWNjZXNzZWQiPT09RWU/bnVsbD09PW90W0VlXT9udWxs''@;'; put 'put ''OiJJbmZpbml0eSI9PW90W0VlXT8iSW5maW5pdHkiOm5ldyBEYXRlKG90W0VlXSk6b3RbRWVdKX1yZXR1cm4gRmV9ZnVuY3Rpb24gTGUocWUsb3Qpe04udmFsaWRhdGUoTi5pc09iamVjdChxZSkscWUpLE4udmFsaWRhdGUoTi5pc09iamVjdChvdCksb3QpO2xldCBGZT0wO3JldHVybiBGZT0o''@;'; put 'put ''b3QucGF0aD9vdC5wYXRoLmxlbmd0aDowKS0ocWUucGF0aD9xZS5wYXRoLmxlbmd0aDowKSwwIT09RmV8fChGZT0ocWUuY3JlYXRpb24/cWUuY3JlYXRpb24uZ2V0VGltZSgpOnVlKS0ob3QuY3JlYXRpb24/b3QuY3JlYXRpb24uZ2V0VGltZSgpOnVlKSwwIT09RmV8fChGZT1xZS5jcmVhdGlv''@;'; put 'put ''bkluZGV4LW90LmNyZWF0aW9uSW5kZXgpKSxGZX1mdW5jdGlvbiBIZShxZSl7aWYocWUgaW5zdGFuY2VvZiBPYmplY3QpcmV0dXJuIHFlO3RyeXtxZT1kZWNvZGVVUkkocWUpfWNhdGNoe31yZXR1cm4gRyhxZSl9Y29uc3QgeGU9e2tleToiIix2YWx1ZToiIixleHBpcmVzOiJJbmZpbml0eSIs''@;'; put 'put ''bWF4QWdlOm51bGwsZG9tYWluOm51bGwscGF0aDpudWxsLHNlY3VyZTohMSxodHRwT25seTohMSxleHRlbnNpb25zOm51bGwsaG9zdE9ubHk6bnVsbCxwYXRoSXNEZWZhdWx0Om51bGwsY3JlYXRpb246bnVsbCxsYXN0QWNjZXNzZWQ6bnVsbCxzYW1lU2l0ZTp2b2lkIDB9O2NsYXNzIERle2Nv''@;'; put 'put ''bnN0cnVjdG9yKG90PXt9KXtjb25zdCBGZT1ZKCk7RmUmJih0aGlzW0ZlXT10aGlzLmluc3BlY3QpLE9iamVjdC5hc3NpZ24odGhpcyx4ZSxvdCksdGhpcy5jcmVhdGlvbj10aGlzLmNyZWF0aW9ufHxuZXcgRGF0ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY3JlYXRpb25JbmRleCIs''@;'; put 'put ''e2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOisrRGUuY29va2llc0NyZWF0ZWR9KX1pbnNwZWN0KCl7Y29uc3Qgb3Q9RGF0ZS5ub3coKSxGZT1udWxsIT10aGlzLmhvc3RPbmx5P3RoaXMuaG9zdE9ubHk6Ij8iLHdlPXRoaXMuY3JlYXRpb24/b3QtdGhp''@;'; put 'put ''cy5jcmVhdGlvbi5nZXRUaW1lKCkrIm1zIjoiPyIsRWU9dGhpcy5sYXN0QWNjZXNzZWQ/b3QtdGhpcy5sYXN0QWNjZXNzZWQuZ2V0VGltZSgpKyJtcyI6Ij8iO3JldHVybmBDb29raWU9IiR7dGhpcy50b1N0cmluZygpfTsgaG9zdE9ubHk9JHtGZX07IGFBZ2U9JHtFZX07IGNBZ2U9JHt3ZX0i''@;'; put 'put ''YH10b0pTT04oKXtjb25zdCBvdD17fTtmb3IoY29uc3QgRmUgb2YgRGUuc2VyaWFsaXphYmxlUHJvcGVydGllcyl0aGlzW0ZlXSE9PXhlW0ZlXSYmKCJleHBpcmVzIj09PUZlfHwiY3JlYXRpb24iPT09RmV8fCJsYXN0QWNjZXNzZWQiPT09RmU/b3RbRmVdPW51bGw9PT10aGlzW0ZlXT9udWxs''@;'; put 'put ''OiJJbmZpbml0eSI9PXRoaXNbRmVdPyJJbmZpbml0eSI6dGhpc1tGZV0udG9JU09TdHJpbmcoKToibWF4QWdlIj09PUZlP251bGwhPT10aGlzW0ZlXSYmKG90W0ZlXT10aGlzW0ZlXT09MS8wfHx0aGlzW0ZlXT09LTEvMD90aGlzW0ZlXS50b1N0cmluZygpOnRoaXNbRmVdKTp0aGlzW0ZlXSE9''@;'; put 'put ''PXhlW0ZlXSYmKG90W0ZlXT10aGlzW0ZlXSkpO3JldHVybiBvdH1jbG9uZSgpe3JldHVybiBTZSh0aGlzLnRvSlNPTigpKX12YWxpZGF0ZSgpe2lmKCFVLnRlc3QodGhpcy52YWx1ZSl8fCEodGhpcy5leHBpcmVzPT0xLzB8fHRoaXMuZXhwaXJlcyBpbnN0YW5jZW9mIERhdGV8fGsodGhpcy5l''@;'; put 'put ''eHBpcmVzKSl8fG51bGwhPXRoaXMubWF4QWdlJiZ0aGlzLm1heEFnZTw9MHx8bnVsbCE9dGhpcy5wYXRoJiYhZWUudGVzdCh0aGlzLnBhdGgpKXJldHVybiExO2NvbnN0IG90PXRoaXMuY2RvbWFpbigpO3JldHVybiEob3QmJihvdC5tYXRjaCgvXC4kLyl8fG51bGw9PUQuZ2V0UHVibGljU3Vm''@;'; put 'put ''Zml4KG90KSkpfXNldEV4cGlyZXMob3Qpe3RoaXMuZXhwaXJlcz1vdCBpbnN0YW5jZW9mIERhdGU/b3Q6ayhvdCl8fCJJbmZpbml0eSJ9c2V0TWF4QWdlKG90KXt0aGlzLm1heEFnZT1vdD09PTEvMHx8b3Q9PT0tMS8wP290LnRvU3RyaW5nKCk6b3R9Y29va2llU3RyaW5nKCl7bGV0IG90PXRo''@;'; put 'put ''aXMudmFsdWU7cmV0dXJuIG51bGw9PW90JiYob3Q9IiIpLCIiPT09dGhpcy5rZXk/b3Q6YCR7dGhpcy5rZXl9PSR7b3R9YH10b1N0cmluZygpe2xldCBvdD10aGlzLmNvb2tpZVN0cmluZygpO2lmKHRoaXMuZXhwaXJlcyE9MS8wJiYodGhpcy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZT9vdCs9''@;'; put 'put ''YDsgRXhwaXJlcz0ke18odGhpcy5leHBpcmVzKX1gOm90Kz1gOyBFeHBpcmVzPSR7dGhpcy5leHBpcmVzfWApLG51bGwhPXRoaXMubWF4QWdlJiZ0aGlzLm1heEFnZSE9MS8wJiYob3QrPWA7IE1heC1BZ2U9JHt0aGlzLm1heEFnZX1gKSx0aGlzLmRvbWFpbiYmIXRoaXMuaG9zdE9ubHkmJihv''@;'; put 'put ''dCs9YDsgRG9tYWluPSR7dGhpcy5kb21haW59YCksdGhpcy5wYXRoJiYob3QrPWA7IFBhdGg9JHt0aGlzLnBhdGh9YCksdGhpcy5zZWN1cmUmJihvdCs9IjsgU2VjdXJlIiksdGhpcy5odHRwT25seSYmKG90Kz0iOyBIdHRwT25seSIpLHRoaXMuc2FtZVNpdGUmJiJub25lIiE9PXRoaXMuc2Ft''@;'; put 'put ''ZVNpdGUpe2NvbnN0IEZlPURlLnNhbWVTaXRlQ2Fub25pY2FsW3RoaXMuc2FtZVNpdGUudG9Mb3dlckNhc2UoKV07b3QrPWA7IFNhbWVTaXRlPSR7RmV8fHRoaXMuc2FtZVNpdGV9YH1yZXR1cm4gdGhpcy5leHRlbnNpb25zJiZ0aGlzLmV4dGVuc2lvbnMuZm9yRWFjaChGZT0+e290Kz1gOyAk''@;'; put 'put ''e0ZlfWB9KSxvdH1UVEwob3Qpe2lmKG51bGwhPXRoaXMubWF4QWdlKXJldHVybiB0aGlzLm1heEFnZTw9MD8wOjFlMyp0aGlzLm1heEFnZTtsZXQgRmU9dGhpcy5leHBpcmVzO3JldHVybiBGZSE9MS8wPyhGZSBpbnN0YW5jZW9mIERhdGV8fChGZT1rKEZlKXx8MS8wKSxGZT09MS8wPzEvMDpG''@;'; put 'put ''ZS5nZXRUaW1lKCktKG90fHxEYXRlLm5vdygpKSk6MS8wfWV4cGlyeVRpbWUob3Qpe2lmKG51bGwhPXRoaXMubWF4QWdlKXtjb25zdCB3ZT10aGlzLm1heEFnZTw9MD8tMS8wOjFlMyp0aGlzLm1heEFnZTtyZXR1cm4ob3R8fHRoaXMuY3JlYXRpb258fG5ldyBEYXRlKS5nZXRUaW1lKCkrd2V9''@;'; put 'put ''cmV0dXJuIHRoaXMuZXhwaXJlcz09MS8wPzEvMDp0aGlzLmV4cGlyZXMuZ2V0VGltZSgpfWV4cGlyeURhdGUob3Qpe2NvbnN0IEZlPXRoaXMuZXhwaXJ5VGltZShvdCk7cmV0dXJuIEZlPT0xLzA/bmV3IERhdGUodWUpOkZlPT0tMS8wP25ldyBEYXRlKDApOm5ldyBEYXRlKEZlKX1pc1BlcnNp''@;'; put 'put ''c3RlbnQoKXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhBZ2V8fHRoaXMuZXhwaXJlcyE9MS8wfWNhbm9uaWNhbGl6ZWREb21haW4oKXtyZXR1cm4gbnVsbD09dGhpcy5kb21haW4/bnVsbDpwKHRoaXMuZG9tYWluKX1jZG9tYWluKCl7cmV0dXJuIHRoaXMuY2Fub25pY2FsaXplZERvbWFpbigpfX1m''@;'; put 'put ''dW5jdGlvbiBCZShxZSl7aWYobnVsbCE9cWUpe2NvbnN0IG90PXFlLnRvTG93ZXJDYXNlKCk7c3dpdGNoKG90KXtjYXNlIFcuU1RSSUNUOmNhc2UgVy5TSUxFTlQ6Y2FzZSBXLkRJU0FCTEVEOnJldHVybiBvdH19cmV0dXJuIFcuU0lMRU5UfURlLmNvb2tpZXNDcmVhdGVkPTAsRGUucGFyc2U9''@;'; put 'put ''Y2UsRGUuZnJvbUpTT049U2UsRGUuc2VyaWFsaXphYmxlUHJvcGVydGllcz1PYmplY3Qua2V5cyh4ZSksRGUuc2FtZVNpdGVMZXZlbD17c3RyaWN0OjMsbGF4OjIsbm9uZToxfSxEZS5zYW1lU2l0ZUNhbm9uaWNhbD17c3RyaWN0OiJTdHJpY3QiLGxheDoiTGF4In07Y2xhc3MgR2V7Y29uc3Ry''@;'; put 'put ''dWN0b3Iob3QsRmU9e3JlamVjdFB1YmxpY1N1ZmZpeGVzOiEwfSl7ImJvb2xlYW4iPT10eXBlb2YgRmUmJihGZT17cmVqZWN0UHVibGljU3VmZml4ZXM6RmV9KSxOLnZhbGlkYXRlKE4uaXNPYmplY3QoRmUpLEZlKSx0aGlzLnJlamVjdFB1YmxpY1N1ZmZpeGVzPUZlLnJlamVjdFB1YmxpY1N1''@;'; put 'put ''ZmZpeGVzLHRoaXMuZW5hYmxlTG9vc2VNb2RlPSEhRmUubG9vc2VNb2RlLHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9tYWluPSJib29sZWFuIiE9dHlwZW9mIEZlLmFsbG93U3BlY2lhbFVzZURvbWFpbnx8RmUuYWxsb3dTcGVjaWFsVXNlRG9tYWluLHRoaXMuc3RvcmU9b3R8fG5ldyBFLHRoaXMu''@;'; put 'put ''cHJlZml4U2VjdXJpdHk9QmUoRmUucHJlZml4U2VjdXJpdHkpLHRoaXMuX2Nsb25lU3luYz1VZSgiY2xvbmUiKSx0aGlzLl9pbXBvcnRDb29raWVzU3luYz1VZSgiX2ltcG9ydENvb2tpZXMiKSx0aGlzLmdldENvb2tpZXNTeW5jPVVlKCJnZXRDb29raWVzIiksdGhpcy5nZXRDb29raWVTdHJp''@;'; put 'put ''bmdTeW5jPVVlKCJnZXRDb29raWVTdHJpbmciKSx0aGlzLmdldFNldENvb2tpZVN0cmluZ3NTeW5jPVVlKCJnZXRTZXRDb29raWVTdHJpbmdzIiksdGhpcy5yZW1vdmVBbGxDb29raWVzU3luYz1VZSgicmVtb3ZlQWxsQ29va2llcyIpLHRoaXMuc2V0Q29va2llU3luYz1VZSgic2V0Q29va2ll''@;'; put 'put ''IiksdGhpcy5zZXJpYWxpemVTeW5jPVVlKCJzZXJpYWxpemUiKX1zZXRDb29raWUob3QsRmUsd2UsRWUpe2xldCBJZTtpZihOLnZhbGlkYXRlKE4uaXNOb25FbXB0eVN0cmluZyhGZSksRWUsd2UpLE4uaXNGdW5jdGlvbihGZSkpcmV0dXJuKEVlPUZlKShuZXcgRXJyb3IoIk5vIFVSTCB3YXMg''@;'; put 'put ''c3BlY2lmaWVkIikpO2NvbnN0IFhlPUhlKEZlKTtpZihOLmlzRnVuY3Rpb24od2UpJiYoRWU9d2Usd2U9e30pLE4udmFsaWRhdGUoTi5pc0Z1bmN0aW9uKEVlKSxFZSksIU4uaXNOb25FbXB0eVN0cmluZyhvdCkmJiFOLmlzT2JqZWN0KG90KSYmb3QgaW5zdGFuY2VvZiBTdHJpbmcmJjA9PW90''@;'; put 'put ''Lmxlbmd0aClyZXR1cm4gRWUobnVsbCk7Y29uc3QgdHQ9cChYZS5ob3N0bmFtZSksWmU9d2UubG9vc2V8fHRoaXMuZW5hYmxlTG9vc2VNb2RlO2xldCBjdD1udWxsO2lmKHdlLnNhbWVTaXRlQ29udGV4dCYmKGN0PWFlKHdlLnNhbWVTaXRlQ29udGV4dCksIWN0KSlyZXR1cm4gRWUobmV3IEVy''@;'; put 'put ''cm9yKGxlKSk7aWYoInN0cmluZyI9PXR5cGVvZiBvdHx8b3QgaW5zdGFuY2VvZiBTdHJpbmcpe2lmKCEob3Q9RGUucGFyc2Uob3Qse2xvb3NlOlplfSkpKXJldHVybiBJZT1uZXcgRXJyb3IoIkNvb2tpZSBmYWlsZWQgdG8gcGFyc2UiKSxFZSh3ZS5pZ25vcmVFcnJvcj9udWxsOkllKX1lbHNl''@;'; put 'put ''IGlmKCEob3QgaW5zdGFuY2VvZiBEZSkpcmV0dXJuIEllPW5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc2V0Q29va2llIG11c3QgYmUgYSBDb29raWUgb2JqZWN0IG9yIHN0cmluZyIpLEVlKHdlLmlnbm9yZUVycm9yP251bGw6SWUpO2NvbnN0IGtlPXdlLm5vd3x8bmV3IERhdGU7aWYo''@;'; put 'put ''dGhpcy5yZWplY3RQdWJsaWNTdWZmaXhlcyYmb3QuZG9tYWluJiZudWxsPT1ELmdldFB1YmxpY1N1ZmZpeChvdC5jZG9tYWluKCkse2FsbG93U3BlY2lhbFVzZURvbWFpbjp0aGlzLmFsbG93U3BlY2lhbFVzZURvbWFpbixpZ25vcmVFcnJvcjp3ZS5pZ25vcmVFcnJvcn0pJiYhRi50ZXN0KG90''@;'; put 'put ''LmRvbWFpbikpcmV0dXJuIEllPW5ldyBFcnJvcigiQ29va2llIGhhcyBkb21haW4gc2V0IHRvIGEgcHVibGljIHN1ZmZpeCIpLEVlKHdlLmlnbm9yZUVycm9yP251bGw6SWUpO2lmKG90LmRvbWFpbil7aWYoIXcodHQsb3QuY2RvbWFpbigpLCExKSlyZXR1cm4gSWU9bmV3IEVycm9yKGBDb29r''@;'; put 'put ''aWUgbm90IGluIHRoaXMgaG9zdCdzIGRvbWFpbi4gQ29va2llOiR7b3QuY2RvbWFpbigpfSBSZXF1ZXN0OiR7dHR9YCksRWUod2UuaWdub3JlRXJyb3I/bnVsbDpJZSk7bnVsbD09b3QuaG9zdE9ubHkmJihvdC5ob3N0T25seT0hMSl9ZWxzZSBvdC5ob3N0T25seT0hMCxvdC5kb21haW49dHQ7''@;'; put 'put ''aWYob3QucGF0aCYmIi8iPT09b3QucGF0aFswXXx8KG90LnBhdGg9SyhYZS5wYXRobmFtZSksb3QucGF0aElzRGVmYXVsdD0hMCksITE9PT13ZS5odHRwJiZvdC5odHRwT25seSlyZXR1cm4gSWU9bmV3IEVycm9yKCJDb29raWUgaXMgSHR0cE9ubHkgYW5kIHRoaXMgaXNuJ3QgYW4gSFRUUCBB''@;'; put 'put ''UEkiKSxFZSh3ZS5pZ25vcmVFcnJvcj9udWxsOkllKTtpZigibm9uZSIhPT1vdC5zYW1lU2l0ZSYmdm9pZCAwIT09b3Quc2FtZVNpdGUmJmN0JiYibm9uZSI9PT1jdClyZXR1cm4gSWU9bmV3IEVycm9yKCJDb29raWUgaXMgU2FtZVNpdGUgYnV0IHRoaXMgaXMgYSBjcm9zcy1vcmlnaW4gcmVx''@;'; put 'put ''dWVzdCIpLEVlKHdlLmlnbm9yZUVycm9yP251bGw6SWUpO2NvbnN0IEFlPXRoaXMucHJlZml4U2VjdXJpdHk9PT1XLlNJTEVOVDtpZih0aGlzLnByZWZpeFNlY3VyaXR5IT09Vy5ESVNBQkxFRCl7bGV0IGl0LHN0PSExO2lmKE4udmFsaWRhdGUoTi5pc09iamVjdCh4dD1vdCkseHQpLCF4dC5r''@;'; put 'put ''ZXkuc3RhcnRzV2l0aCgiX19TZWN1cmUtIil8fHh0LnNlY3VyZT9mdW5jdGlvbih4dCl7cmV0dXJuIE4udmFsaWRhdGUoTi5pc09iamVjdCh4dCkpLCF4dC5rZXkuc3RhcnRzV2l0aCgiX19Ib3N0LSIpfHx4dC5zZWN1cmUmJnh0Lmhvc3RPbmx5JiZudWxsIT14dC5wYXRoJiYiLyI9PT14dC5w''@;'; put 'put ''YXRofShvdCl8fChzdD0hMCxpdD0iQ29va2llIGhhcyBfX0hvc3QgcHJlZml4IGJ1dCBlaXRoZXIgU2VjdXJlIG9yIEhvc3RPbmx5IGF0dHJpYnV0ZSBpcyBub3Qgc2V0IG9yIFBhdGggaXMgbm90ICcvJyIpOihzdD0hMCxpdD0iQ29va2llIGhhcyBfX1NlY3VyZSBwcmVmaXggYnV0IFNlY3Vy''@;'; put 'put ''ZSBhdHRyaWJ1dGUgaXMgbm90IHNldCIpLHN0KXJldHVybiBFZSh3ZS5pZ25vcmVFcnJvcnx8QWU/bnVsbDpuZXcgRXJyb3IoaXQpKX12YXIgeHQ7Y29uc3QgamU9dGhpcy5zdG9yZTtqZS51cGRhdGVDb29raWV8fChqZS51cGRhdGVDb29raWU9ZnVuY3Rpb24oaXQsc3QseHQpe3RoaXMucHV0''@;'; put 'put ''Q29va2llKHN0LHh0KX0pLGplLmZpbmRDb29raWUob3QuZG9tYWluLG90LnBhdGgsb3Qua2V5LGZ1bmN0aW9uKGl0LHN0KXtpZihpdClyZXR1cm4gRWUoaXQpO2NvbnN0IHh0PWZ1bmN0aW9uKEZ0KXtpZihGdClyZXR1cm4gRWUoRnQpO0VlKG51bGwsb3QpfTtpZihzdCl7aWYoITE9PT13ZS5o''@;'; put 'put ''dHRwJiZzdC5odHRwT25seSlyZXR1cm4gaXQ9bmV3IEVycm9yKCJvbGQgQ29va2llIGlzIEh0dHBPbmx5IGFuZCB0aGlzIGlzbid0IGFuIEhUVFAgQVBJIiksRWUod2UuaWdub3JlRXJyb3I/bnVsbDppdCk7b3QuY3JlYXRpb249c3QuY3JlYXRpb24sb3QuY3JlYXRpb25JbmRleD1zdC5jcmVh''@;'; put 'put ''dGlvbkluZGV4LG90Lmxhc3RBY2Nlc3NlZD1rZSxqZS51cGRhdGVDb29raWUoc3Qsb3QseHQpfWVsc2Ugb3QuY3JlYXRpb249b3QubGFzdEFjY2Vzc2VkPWtlLGplLnB1dENvb2tpZShvdCx4dCl9KX1nZXRDb29raWVzKG90LEZlLHdlKXtOLnZhbGlkYXRlKE4uaXNOb25FbXB0eVN0cmluZyhv''@;'; put 'put ''dCksd2Usb3QpO2NvbnN0IEVlPUhlKG90KTtOLmlzRnVuY3Rpb24oRmUpJiYod2U9RmUsRmU9e30pLE4udmFsaWRhdGUoTi5pc09iamVjdChGZSksd2UsRmUpLE4udmFsaWRhdGUoTi5pc0Z1bmN0aW9uKHdlKSx3ZSk7Y29uc3QgSWU9cChFZS5ob3N0bmFtZSksWGU9RWUucGF0aG5hbWV8fCIv''@;'; put 'put ''IjtsZXQgdHQ9RmUuc2VjdXJlO251bGwhPXR0fHwhRWUucHJvdG9jb2x8fCJodHRwczoiIT1FZS5wcm90b2NvbCYmIndzczoiIT1FZS5wcm90b2NvbHx8KHR0PSEwKTtsZXQgWmU9MDtpZihGZS5zYW1lU2l0ZUNvbnRleHQpe2NvbnN0IHh0PWFlKEZlLnNhbWVTaXRlQ29udGV4dCk7aWYoWmU9''@;'; put 'put ''RGUuc2FtZVNpdGVMZXZlbFt4dF0sIVplKXJldHVybiB3ZShuZXcgRXJyb3IobGUpKX1sZXQgY3Q9RmUuaHR0cDtudWxsPT1jdCYmKGN0PSEwKTtjb25zdCBrZT1GZS5ub3d8fERhdGUubm93KCksQWU9ITEhPT1GZS5leHBpcmUsamU9ISFGZS5hbGxQYXRocyxpdD10aGlzLnN0b3JlO2Z1bmN0''@;'; put 'put ''aW9uIHN0KHh0KXtpZih4dC5ob3N0T25seSl7aWYoeHQuZG9tYWluIT1JZSlyZXR1cm4hMX1lbHNlIGlmKCF3KEllLHh0LmRvbWFpbiwhMSkpcmV0dXJuITE7cmV0dXJuISghamUmJiF6KFhlLHh0LnBhdGgpfHx4dC5zZWN1cmUmJiF0dHx8eHQuaHR0cE9ubHkmJiFjdHx8WmUmJkRlLnNhbWVT''@;'; put 'put ''aXRlTGV2ZWxbeHQuc2FtZVNpdGV8fCJub25lIl0+WmV8fEFlJiZ4dC5leHBpcnlUaW1lKCk8PWtlJiYoaXQucmVtb3ZlQ29va2llKHh0LmRvbWFpbix4dC5wYXRoLHh0LmtleSwoKT0+e30pLDEpKX1pdC5maW5kQ29va2llcyhJZSxqZT9udWxsOlhlLHRoaXMuYWxsb3dTcGVjaWFsVXNlRG9t''@;'; put 'put ''YWluLCh4dCxGdCk9PntpZih4dClyZXR1cm4gd2UoeHQpO0Z0PUZ0LmZpbHRlcihzdCksITEhPT1GZS5zb3J0JiYoRnQ9RnQuc29ydChMZSkpO2NvbnN0IE90PW5ldyBEYXRlO2Zvcihjb25zdCBLdCBvZiBGdClLdC5sYXN0QWNjZXNzZWQ9T3Q7d2UobnVsbCxGdCl9KX1nZXRDb29raWVTdHJp''@;'; put 'put ''bmcoLi4ub3Qpe2NvbnN0IEZlPW90LnBvcCgpO04udmFsaWRhdGUoTi5pc0Z1bmN0aW9uKEZlKSxGZSksb3QucHVzaChmdW5jdGlvbih3ZSxFZSl7d2U/RmUod2UpOkZlKG51bGwsRWUuc29ydChMZSkubWFwKEllPT5JZS5jb29raWVTdHJpbmcoKSkuam9pbigiOyAiKSl9KSx0aGlzLmdldENv''@;'; put 'put ''b2tpZXMuYXBwbHkodGhpcyxvdCl9Z2V0U2V0Q29va2llU3RyaW5ncyguLi5vdCl7Y29uc3QgRmU9b3QucG9wKCk7Ti52YWxpZGF0ZShOLmlzRnVuY3Rpb24oRmUpLEZlKSxvdC5wdXNoKGZ1bmN0aW9uKHdlLEVlKXt3ZT9GZSh3ZSk6RmUobnVsbCxFZS5tYXAoSWU9PkllLnRvU3RyaW5nKCkp''@;'; put 'put ''KX0pLHRoaXMuZ2V0Q29va2llcy5hcHBseSh0aGlzLG90KX1zZXJpYWxpemUob3Qpe04udmFsaWRhdGUoTi5pc0Z1bmN0aW9uKG90KSxvdCk7bGV0IEZlPXRoaXMuc3RvcmUuY29uc3RydWN0b3IubmFtZTtOLmlzT2JqZWN0KEZlKSYmKEZlPW51bGwpO2NvbnN0IHdlPXt2ZXJzaW9uOmB0b3Vn''@;'; put 'put ''aC1jb29raWVAJHtCfWAsc3RvcmVUeXBlOkZlLHJlamVjdFB1YmxpY1N1ZmZpeGVzOiEhdGhpcy5yZWplY3RQdWJsaWNTdWZmaXhlcyxlbmFibGVMb29zZU1vZGU6ISF0aGlzLmVuYWJsZUxvb3NlTW9kZSxhbGxvd1NwZWNpYWxVc2VEb21haW46ISF0aGlzLmFsbG93U3BlY2lhbFVzZURvbWFp''@;'; put 'put ''bixwcmVmaXhTZWN1cml0eTpCZSh0aGlzLnByZWZpeFNlY3VyaXR5KSxjb29raWVzOltdfTtpZighdGhpcy5zdG9yZS5nZXRBbGxDb29raWVzfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5zdG9yZS5nZXRBbGxDb29raWVzKXJldHVybiBvdChuZXcgRXJyb3IoInN0b3JlIGRvZXMgbm90IHN1''@;'; put 'put ''cHBvcnQgZ2V0QWxsQ29va2llcyBhbmQgY2Fubm90IGJlIHNlcmlhbGl6ZWQiKSk7dGhpcy5zdG9yZS5nZXRBbGxDb29raWVzKChFZSxJZSk9PkVlP290KEVlKTood2UuY29va2llcz1JZS5tYXAoWGU9PihkZWxldGUoWGU9WGUgaW5zdGFuY2VvZiBEZT9YZS50b0pTT04oKTpYZSkuY3JlYXRp''@;'; put 'put ''b25JbmRleCxYZSkpLG90KG51bGwsd2UpKSl9dG9KU09OKCl7cmV0dXJuIHRoaXMuc2VyaWFsaXplU3luYygpfV9pbXBvcnRDb29raWVzKG90LEZlKXtsZXQgd2U9b3QuY29va2llcztpZighd2V8fCFBcnJheS5pc0FycmF5KHdlKSlyZXR1cm4gRmUobmV3IEVycm9yKCJzZXJpYWxpemVkIGph''@;'; put 'put ''ciBoYXMgbm8gY29va2llcyBhcnJheSIpKTt3ZT13ZS5zbGljZSgpO2NvbnN0IEVlPUllPT57aWYoSWUpcmV0dXJuIEZlKEllKTtpZighd2UubGVuZ3RoKXJldHVybiBGZShJZSx0aGlzKTtsZXQgWGU7dHJ5e1hlPVNlKHdlLnNoaWZ0KCkpfWNhdGNoKHR0KXtyZXR1cm4gRmUodHQpfWlmKG51''@;'; put 'put ''bGw9PT1YZSlyZXR1cm4gRWUobnVsbCk7dGhpcy5zdG9yZS5wdXRDb29raWUoWGUsRWUpfTtFZSgpfWNsb25lKG90LEZlKXsxPT09YXJndW1lbnRzLmxlbmd0aCYmKEZlPW90LG90PW51bGwpLHRoaXMuc2VyaWFsaXplKCh3ZSxFZSk9PntpZih3ZSlyZXR1cm4gRmUod2UpO0dlLmRlc2VyaWFs''@;'; put 'put ''aXplKEVlLG90LEZlKX0pfWNsb25lU3luYyhvdCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX2Nsb25lU3luYygpO2lmKCFvdC5zeW5jaHJvbm91cyl0aHJvdyBuZXcgRXJyb3IoIkNvb2tpZUphciBjbG9uZSBkZXN0aW5hdGlvbiBzdG9yZSBpcyBub3Qgc3luY2hyb25v''@;'; put 'put ''dXM7IHVzZSBhc3luYyBBUEkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpcy5fY2xvbmVTeW5jKG90KX1yZW1vdmVBbGxDb29raWVzKG90KXtOLnZhbGlkYXRlKE4uaXNGdW5jdGlvbihvdCksb3QpO2NvbnN0IEZlPXRoaXMuc3RvcmU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEZlLnJlbW92ZUFsbENv''@;'; put 'put ''b2tpZXMmJkZlLnJlbW92ZUFsbENvb2tpZXMhPT1ULnByb3RvdHlwZS5yZW1vdmVBbGxDb29raWVzKXJldHVybiBGZS5yZW1vdmVBbGxDb29raWVzKG90KTtGZS5nZXRBbGxDb29raWVzKCh3ZSxFZSk9PntpZih3ZSlyZXR1cm4gb3Qod2UpO2lmKDA9PT1FZS5sZW5ndGgpcmV0dXJuIG90KG51''@;'; put 'put ''bGwpO2xldCBJZT0wO2NvbnN0IFhlPVtdO2Z1bmN0aW9uIHR0KFplKXtpZihaZSYmWGUucHVzaChaZSksSWUrKyxJZT09PUVlLmxlbmd0aClyZXR1cm4gb3QoWGUubGVuZ3RoP1hlWzBdOm51bGwpfUVlLmZvckVhY2goWmU9PntGZS5yZW1vdmVDb29raWUoWmUuZG9tYWluLFplLnBhdGgsWmUu''@;'; put 'put ''a2V5LHR0KX0pfSl9c3RhdGljIGRlc2VyaWFsaXplKG90LEZlLHdlKXtsZXQgRWU7aWYoMyE9PWFyZ3VtZW50cy5sZW5ndGgmJih3ZT1GZSxGZT1udWxsKSxOLnZhbGlkYXRlKE4uaXNGdW5jdGlvbih3ZSksd2UpLCJzdHJpbmciPT10eXBlb2Ygb3Qpe2lmKEVlPWhlKG90KSxFZSBpbnN0YW5j''@;'; put 'put ''ZW9mIEVycm9yKXJldHVybiB3ZShFZSl9ZWxzZSBFZT1vdDtjb25zdCBJZT1uZXcgR2UoRmUse3JlamVjdFB1YmxpY1N1ZmZpeGVzOkVlLnJlamVjdFB1YmxpY1N1ZmZpeGVzLGxvb3NlTW9kZTpFZS5lbmFibGVMb29zZU1vZGUsYWxsb3dTcGVjaWFsVXNlRG9tYWluOkVlLmFsbG93U3BlY2lh''@;'; put 'put ''bFVzZURvbWFpbixwcmVmaXhTZWN1cml0eTpFZS5wcmVmaXhTZWN1cml0eX0pO0llLl9pbXBvcnRDb29raWVzKEVlLFhlPT57aWYoWGUpcmV0dXJuIHdlKFhlKTt3ZShudWxsLEllKX0pfXN0YXRpYyBkZXNlcmlhbGl6ZVN5bmMob3QsRmUpe2NvbnN0IHdlPSJzdHJpbmciPT10eXBlb2Ygb3Q/''@;'; put 'put ''SlNPTi5wYXJzZShvdCk6b3QsRWU9bmV3IEdlKEZlLHtyZWplY3RQdWJsaWNTdWZmaXhlczp3ZS5yZWplY3RQdWJsaWNTdWZmaXhlcyxsb29zZU1vZGU6d2UuZW5hYmxlTG9vc2VNb2RlfSk7aWYoIUVlLnN0b3JlLnN5bmNocm9ub3VzKXRocm93IG5ldyBFcnJvcigiQ29va2llSmFyIHN0b3Jl''@;'; put 'put ''IGlzIG5vdCBzeW5jaHJvbm91czsgdXNlIGFzeW5jIEFQSSBpbnN0ZWFkLiIpO3JldHVybiBFZS5faW1wb3J0Q29va2llc1N5bmMod2UpLEVlfX1mdW5jdGlvbiBVZShxZSl7cmV0dXJuIGZ1bmN0aW9uKC4uLm90KXtpZighdGhpcy5zdG9yZS5zeW5jaHJvbm91cyl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IkNvb2tpZUphciBzdG9yZSBpcyBub3Qgc3luY2hyb25vdXM7IHVzZSBhc3luYyBBUEkgaW5zdGVhZC4iKTtsZXQgRmUsd2U7aWYodGhpc1txZV0oLi4ub3QsKEVlLEllKT0+e0ZlPUVlLHdlPUllfSksRmUpdGhyb3cgRmU7cmV0dXJuIHdlfX1HZS5mcm9tSlNPTj1HZS5kZXNlcmlhbGl6ZVN5''@;'; put 'put ''bmMsWyJfaW1wb3J0Q29va2llcyIsImNsb25lIiwiZ2V0Q29va2llcyIsImdldENvb2tpZVN0cmluZyIsImdldFNldENvb2tpZVN0cmluZ3MiLCJyZW1vdmVBbGxDb29raWVzIiwic2VyaWFsaXplIiwic2V0Q29va2llIl0uZm9yRWFjaChxZT0+e0dlLnByb3RvdHlwZVtxZV09WihHZS5wcm90''@;'; put 'put ''b3R5cGVbcWVdKX0pLEdlLmRlc2VyaWFsaXplPVooR2UuZGVzZXJpYWxpemUpLE8udmVyc2lvbj1CLE8uQ29va2llSmFyPUdlLE8uQ29va2llPURlLE8uU3RvcmU9VCxPLk1lbW9yeUNvb2tpZVN0b3JlPUUsTy5wYXJzZURhdGU9ayxPLmZvcm1hdERhdGU9XyxPLnBhcnNlPWNlLE8uZnJvbUpT''@;'; put 'put ''T049U2UsTy5kb21haW5NYXRjaD13LE8uZGVmYXVsdFBhdGg9SyxPLnBhdGhNYXRjaD16LE8uZ2V0UHVibGljU3VmZml4PUQuZ2V0UHVibGljU3VmZml4LE8uY29va2llQ29tcGFyZT1MZSxPLnBlcm11dGVEb21haW49SSg3MzI0KS5wZXJtdXRlRG9tYWluLE8ucGVybXV0ZVBhdGg9ZnVuY3Rp''@;'; put 'put ''b24ocWUpe2lmKE4udmFsaWRhdGUoTi5pc1N0cmluZyhxZSkpLCIvIj09PXFlKXJldHVyblsiLyJdO2NvbnN0IG90PVtxZV07Zm9yKDtxZS5sZW5ndGg+MTspe2NvbnN0IEZlPXFlLmxhc3RJbmRleE9mKCIvIik7aWYoMD09PUZlKWJyZWFrO3FlPXFlLnN1YnN0cigwLEZlKSxvdC5wdXNoKHFl''@;'; put 'put ''KX1yZXR1cm4gb3QucHVzaCgiLyIpLG90fSxPLmNhbm9uaWNhbERvbWFpbj1wLE8uUHJlZml4U2VjdXJpdHlFbnVtPVcsTy5QYXJhbWV0ZXJFcnJvcj1OLlBhcmFtZXRlckVycm9yfSw1NzYxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3R7ZnJvbUNhbGxiYWNrOmp9PUkoNzA0MSksRz1J''@;'; put 'put ''KDIyMjQpLnksRD1JKDczMjQpLnBlcm11dGVEb21haW4sVD1JKDg5NzEpLlUse2dldEN1c3RvbUluc3BlY3RTeW1ib2w6RSxnZXRVdGlsSW5zcGVjdDp6fT1JKDEyNjkpO2NsYXNzIE4gZXh0ZW5kcyBHe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnN5bmNocm9ub3VzPSEwLHRoaXMuaWR4''@;'; put 'put ''PU9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3QgWT1FKCk7WSYmKHRoaXNbWV09dGhpcy5pbnNwZWN0KX1pbnNwZWN0KCl7cmV0dXJuYHsgaWR4OiAke3ooQikodGhpcy5pZHgsITEsMil9IH1gfWZpbmRDb29raWUoWSxVLHEsSil7cmV0dXJuIEoobnVsbCx0aGlzLmlkeFtZXSYmdGhpcy5pZHhb''@;'; put 'put ''WV1bVV0/dGhpcy5pZHhbWV1bVV1bcV18fG51bGw6dm9pZCAwKX1maW5kQ29va2llcyhZLFUscSxKKXtjb25zdCBlZT1bXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgcSYmKEo9cSxxPSEwKSwhWSlyZXR1cm4gSihudWxsLFtdKTtsZXQgcmU7cmU9VT9mdW5jdGlvbihsZSl7T2JqZWN0LmtleXMo''@;'; put 'put ''bGUpLmZvckVhY2goYWU9PntpZihUKFUsYWUpKXtjb25zdCBXPWxlW2FlXTtmb3IoY29uc3QgYiBpbiBXKWVlLnB1c2goV1tiXSl9fSl9OmZ1bmN0aW9uKGxlKXtmb3IoY29uc3QgYWUgaW4gbGUpe2NvbnN0IFc9bGVbYWVdO2Zvcihjb25zdCBiIGluIFcpZWUucHVzaChXW2JdKX19O2NvbnN0''@;'; put 'put ''IGllPUQoWSxxKXx8W1ldLHVlPXRoaXMuaWR4O2llLmZvckVhY2gobGU9Pntjb25zdCBhZT11ZVtsZV07YWUmJnJlKGFlKX0pLEoobnVsbCxlZSl9cHV0Q29va2llKFksVSl7dGhpcy5pZHhbWS5kb21haW5dfHwodGhpcy5pZHhbWS5kb21haW5dPU9iamVjdC5jcmVhdGUobnVsbCkpLHRoaXMu''@;'; put 'put ''aWR4W1kuZG9tYWluXVtZLnBhdGhdfHwodGhpcy5pZHhbWS5kb21haW5dW1kucGF0aF09T2JqZWN0LmNyZWF0ZShudWxsKSksdGhpcy5pZHhbWS5kb21haW5dW1kucGF0aF1bWS5rZXldPVksVShudWxsKX11cGRhdGVDb29raWUoWSxVLHEpe3RoaXMucHV0Q29va2llKFUscSl9cmVtb3ZlQ29v''@;'; put 'put ''a2llKFksVSxxLEope3RoaXMuaWR4W1ldJiZ0aGlzLmlkeFtZXVtVXSYmdGhpcy5pZHhbWV1bVV1bcV0mJmRlbGV0ZSB0aGlzLmlkeFtZXVtVXVtxXSxKKG51bGwpfXJlbW92ZUNvb2tpZXMoWSxVLHEpe3JldHVybiB0aGlzLmlkeFtZXSYmKFU/ZGVsZXRlIHRoaXMuaWR4W1ldW1VdOmRlbGV0''@;'; put 'put ''ZSB0aGlzLmlkeFtZXSkscShudWxsKX1yZW1vdmVBbGxDb29raWVzKFkpe3JldHVybiB0aGlzLmlkeD1PYmplY3QuY3JlYXRlKG51bGwpLFkobnVsbCl9Z2V0QWxsQ29va2llcyhZKXtjb25zdCBVPVtdLHE9dGhpcy5pZHg7T2JqZWN0LmtleXMocSkuZm9yRWFjaChKPT57T2JqZWN0LmtleXMo''@;'; put 'put ''cVtKXSkuZm9yRWFjaChlZT0+e09iamVjdC5rZXlzKHFbSl1bZWVdKS5mb3JFYWNoKHJlPT57bnVsbCE9PXJlJiZVLnB1c2gocVtKXVtlZV1bcmVdKX0pfSl9KSxVLnNvcnQoKEosZWUpPT4oSi5jcmVhdGlvbkluZGV4fHwwKS0oZWUuY3JlYXRpb25JbmRleHx8MCkpLFkobnVsbCxVKX19ZnVu''@;'; put 'put ''Y3Rpb24gQihaKXtjb25zdCBZPU9iamVjdC5rZXlzKFopO2lmKDA9PT1ZLmxlbmd0aClyZXR1cm4iW09iamVjdDogbnVsbCBwcm90b3R5cGVdIHt9IjtsZXQgVT0iW09iamVjdDogbnVsbCBwcm90b3R5cGVdIHtcbiI7cmV0dXJuIE9iamVjdC5rZXlzKFopLmZvckVhY2goKHEsSik9PntVKz1m''@;'; put 'put ''dW5jdGlvbihlZSxyZSl7bGV0IHVlPWAgICcke2VlfSc6IFtPYmplY3Q6IG51bGwgcHJvdG90eXBlXSB7XG5gO3JldHVybiBPYmplY3Qua2V5cyhyZSkuZm9yRWFjaCgobGUsYWUsVyk9Pnt1ZSs9ZnVuY3Rpb24oYixBKXtjb25zdCBGPSIgICAgIjtsZXQgSD1gJHtGfScke2J9JzogW09iamVj''@;'; put 'put ''dDogbnVsbCBwcm90b3R5cGVdIHtcbmA7cmV0dXJuIE9iamVjdC5rZXlzKEEpLmZvckVhY2goKGcsQyxrKT0+e0grPWAgICAgICAke2d9OiAke0FbZ10uaW5zcGVjdCgpfWAsQzxrLmxlbmd0aC0xJiYoSCs9IiwiKSxIKz0iXG4ifSksSCs9YCR7Rn19YCxIfShsZSxyZVtsZV0pLGFlPFcubGVu''@;'; put 'put ''Z3RoLTEmJih1ZSs9IiwiKSx1ZSs9IlxuIn0pLHVlKz0iICB9Iix1ZX0ocSxaW3FdKSxKPFkubGVuZ3RoLTEmJihVKz0iLCIpLFUrPSJcbiJ9KSxVKz0ifSIsVX1bImZpbmRDb29raWUiLCJmaW5kQ29va2llcyIsInB1dENvb2tpZSIsInVwZGF0ZUNvb2tpZSIsInJlbW92ZUNvb2tpZSIsInJl''@;'; put 'put ''bW92ZUNvb2tpZXMiLCJyZW1vdmVBbGxDb29raWVzIiwiZ2V0QWxsQ29va2llcyJdLmZvckVhY2goWj0+e04ucHJvdG90eXBlW1pdPWooTi5wcm90b3R5cGVbWl0pfSksTy5tPU59LDg5NzE6KE0sTyk9PnsidXNlIHN0cmljdCI7Ty5VPWZ1bmN0aW9uKEksail7cmV0dXJuIGo9PT1JfHwwPT09''@;'; put 'put ''SS5pbmRleE9mKGopJiYoIi8iPT09ai5zdWJzdHIoLTEpfHwiLyI9PT1JLnN1YnN0cihqLmxlbmd0aCwxKSl9fSw3MzI0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7Y29uc3Qgaj1JKDc1Mik7Ty5wZXJtdXRlRG9tYWluPWZ1bmN0aW9uKEcsRCl7Y29uc3QgVD1qLmdldFB1YmxpY1N1ZmZpeChH''@;'; put 'put ''LHthbGxvd1NwZWNpYWxVc2VEb21haW46RH0pO2lmKCFUKXJldHVybiBudWxsO2lmKFQ9PUcpcmV0dXJuW0ddOyIuIj09Ry5zbGljZSgtMSkmJihHPUcuc2xpY2UoMCwtMSkpO2NvbnN0IEU9Ry5zbGljZSgwLC0oVC5sZW5ndGgrMSkpLnNwbGl0KCIuIikucmV2ZXJzZSgpO2xldCB6PVQ7Y29u''@;'; put 'put ''c3QgTj1bel07Zm9yKDtFLmxlbmd0aDspej1gJHtFLnNoaWZ0KCl9LiR7en1gLE4ucHVzaCh6KTtyZXR1cm4gTn19LDc1MjooTSxPLEkpPT57InVzZSBzdHJpY3QiO2NvbnN0IGo9SSg2MjQ0KSxHPVsibG9jYWwiLCJleGFtcGxlIiwiaW52YWxpZCIsImxvY2FsaG9zdCIsInRlc3QiXSxEPVsi''@;'; put 'put ''bG9jYWxob3N0IiwiaW52YWxpZCJdO08uZ2V0UHVibGljU3VmZml4PWZ1bmN0aW9uKFQsRT17fSl7Y29uc3Qgej1ULnNwbGl0KCIuIiksTj16W3oubGVuZ3RoLTFdLFo9ISFFLmlnbm9yZUVycm9yO2lmKEUuYWxsb3dTcGVjaWFsVXNlRG9tYWluJiZHLmluY2x1ZGVzKE4pKXtpZih6Lmxlbmd0''@;'; put 'put ''aD4xKXJldHVybmAke3pbei5sZW5ndGgtMl19LiR7Tn1gO2lmKEQuaW5jbHVkZXMoTikpcmV0dXJuYCR7Tn1gfWlmKCFaJiZHLmluY2x1ZGVzKE4pKXRocm93IG5ldyBFcnJvcihgQ29va2llIGhhcyBkb21haW4gc2V0IHRvIHRoZSBwdWJsaWMgc3VmZml4ICIke059IiB3aGljaCBpcyBhIHNw''@;'; put 'put ''ZWNpYWwgdXNlIGRvbWFpbi4gVG8gYWxsb3cgdGhpcywgY29uZmlndXJlIHlvdXIgQ29va2llSmFyIHdpdGgge2FsbG93U3BlY2lhbFVzZURvbWFpbjp0cnVlLCByZWplY3RQdWJsaWNTdWZmaXhlczogZmFsc2V9LmApO3JldHVybiBqLmdldChUKX19LDIyMjQ6KE0sTyk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7Ty55PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zeW5jaHJvbm91cz0hMX1maW5kQ29va2llKEksaixHLEQpe3Rocm93IG5ldyBFcnJvcigiZmluZENvb2tpZSBpcyBub3QgaW1wbGVtZW50ZWQiKX1maW5kQ29va2llcyhJLGosRyxEKXt0aHJvdyBuZXcgRXJyb3IoImZpbmRDb29raWVz''@;'; put 'put ''IGlzIG5vdCBpbXBsZW1lbnRlZCIpfXB1dENvb2tpZShJLGope3Rocm93IG5ldyBFcnJvcigicHV0Q29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXVwZGF0ZUNvb2tpZShJLGosRyl7dGhyb3cgbmV3IEVycm9yKCJ1cGRhdGVDb29raWUgaXMgbm90IGltcGxlbWVudGVkIil9cmVtb3ZlQ29v''@;'; put 'put ''a2llKEksaixHLEQpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llIGlzIG5vdCBpbXBsZW1lbnRlZCIpfXJlbW92ZUNvb2tpZXMoSSxqLEcpe3Rocm93IG5ldyBFcnJvcigicmVtb3ZlQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1yZW1vdmVBbGxDb29raWVzKEkpe3Rocm93IG5l''@;'; put 'put ''dyBFcnJvcigicmVtb3ZlQWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQiKX1nZXRBbGxDb29raWVzKEkpe3Rocm93IG5ldyBFcnJvcigiZ2V0QWxsQ29va2llcyBpcyBub3QgaW1wbGVtZW50ZWQgKHRoZXJlZm9yZSBqYXIgY2Fubm90IGJlIHNlcmlhbGl6ZWQpIil9fX0sMTI2OTooTSxP''@;'; put 'put ''LEkpPT57ZnVuY3Rpb24gaigpe3RyeXtyZXR1cm4gSSg5NTM5KX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gRygpe3JldHVybiBTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpfU8uZ2V0VXRpbEluc3BlY3Q9ZnVuY3Rpb24oRCxUPXt9KXtjb25zdCBFPShULnJl''@;'; put 'put ''cXVpcmVVdGlsfHxqKSgpO3JldHVybiBmdW5jdGlvbih6LE4sQil7cmV0dXJuIEU/RS5pbnNwZWN0KHosTixCKTpEKHopfX0sTy5nZXRDdXN0b21JbnNwZWN0U3ltYm9sPWZ1bmN0aW9uKEQ9e30pe3JldHVybihELmxvb2t1cEN1c3RvbUluc3BlY3RTeW1ib2x8fEcpKCl8fGZ1bmN0aW9uKFQp''@;'; put 'put ''e2NvbnN0IEU9KFQucmVxdWlyZVV0aWx8fGopKCk7cmV0dXJuIEU/RS5pbnNwZWN0LmN1c3RvbTpudWxsfShEKX19LDc2NTI6KE0sTyk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSShUKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgVH1mdW5jdGlvbiBqKFQpe3JldHVybiJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgVHx8VCBpbnN0YW5jZW9mIFN0cmluZ31mdW5jdGlvbiBHKFQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09dG9TdHJpbmcuY2FsbChUKX1jbGFzcyBEIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoLi4uRSl7c3VwZXIoLi4uRSl9fU8uUGFyYW1ldGVyRXJyb3I9RCxPLmlzRnVu''@;'; put 'put ''Y3Rpb249SSxPLmlzTm9uRW1wdHlTdHJpbmc9ZnVuY3Rpb24oVCl7cmV0dXJuIGooVCkmJiIiIT09VH0sTy5pc0RhdGU9ZnVuY3Rpb24oVCl7cmV0dXJuIGZ1bmN0aW9uKEUseil7dHJ5e3JldHVybiBFIGluc3RhbmNlb2Ygen1jYXRjaHtyZXR1cm4hMX19KFQsRGF0ZSkmJiJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YoRT1ULmdldFRpbWUoKSkmJkUlMT09MDt2YXIgRX0sTy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKFQpe3JldHVybiIiPT09VHx8VCBpbnN0YW5jZW9mIFN0cmluZyYmIiI9PT1ULnRvU3RyaW5nKCl9LE8uaXNTdHJpbmc9aixPLmlzT2JqZWN0PUcsTy52YWxpZGF0ZT1mdW5jdGlvbihU''@;'; put 'put ''LEUseil7aWYoSShFKXx8KHo9RSxFPW51bGwpLEcoeil8fCh6PXtFcnJvcjoiRmFpbGVkIENoZWNrIn0pLCFUKXtpZighRSl0aHJvdyBuZXcgRCh6KTtFKG5ldyBEKHopKX19fSw0NTY6TT0+e00uZXhwb3J0cz0iNC4xLjMifSw3MDQxOihNLE8pPT57InVzZSBzdHJpY3QiO08uZnJvbUNhbGxi''@;'; put 'put ''YWNrPWZ1bmN0aW9uKEkpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0pcmV0dXJuIG5ldyBQcm9taXNlKChqLEcpPT57YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGhdPShE''@;'; put 'put ''LFQpPT57aWYoRClyZXR1cm4gRyhEKTtqKFQpfSxhcmd1bWVudHMubGVuZ3RoKyssSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTtJLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sIm5hbWUiLHt2YWx1ZTpJLm5hbWV9KX0sTy5mcm9tUHJvbWlzZT1mdW5jdGlvbihJKXtyZXR1cm4gT2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7Y29uc3Qgaj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgailyZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLGFyZ3VtZW50cy5s''@;'; put 'put ''ZW5ndGgtLSxJLmFwcGx5KHRoaXMsYXJndW1lbnRzKS50aGVuKEc9PmoobnVsbCxHKSxqKX0sIm5hbWUiLHt2YWx1ZTpJLm5hbWV9KX19LDY3MjpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGo9T2JqZWN0''@;'; put 'put ''LmFzc2lnbnx8ZnVuY3Rpb24oTil7Zm9yKHZhciBCLFo9MSxZPWFyZ3VtZW50cy5sZW5ndGg7WjxZO1orKylmb3IodmFyIFUgaW4gQj1hcmd1bWVudHNbWl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEIsVSkmJihOW1VdPUJbVV0pO3JldHVybiBOfSxqLmFwcGx5KHRo''@;'; put 'put ''aXMsYXJndW1lbnRzKX0sRz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oTixCLFosWSl7cmV0dXJuIG5ldyhafHwoWj1Qcm9taXNlKSkoZnVuY3Rpb24oVSxxKXtmdW5jdGlvbiBKKGllKXt0cnl7cmUoWS5uZXh0KGllKSl9Y2F0Y2godWUpe3EodWUpfX1mdW5jdGlvbiBlZShpZSl7''@;'; put 'put ''dHJ5e3JlKFkudGhyb3coaWUpKX1jYXRjaCh1ZSl7cSh1ZSl9fWZ1bmN0aW9uIHJlKGllKXt2YXIgdWU7aWUuZG9uZT9VKGllLnZhbHVlKToodWU9aWUudmFsdWUsdWUgaW5zdGFuY2VvZiBaP3VlOm5ldyBaKGZ1bmN0aW9uKGxlKXtsZSh1ZSl9KSkudGhlbihKLGVlKX1yZSgoWT1ZLmFwcGx5''@;'; put 'put ''KE4sQnx8W10pKS5uZXh0KCkpfSl9LEQ9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oTixCKXt2YXIgWixZLFUscSxKPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJlVbMF0pdGhyb3cgVVsxXTtyZXR1cm4gVVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBxPXtuZXh0''@;'; put 'put ''OmVlKDApLHRocm93OmVlKDEpLHJldHVybjplZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSkscTtmdW5jdGlvbiBlZShyZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtyZXR1cm4gZnVuY3Rpb24odWUpe2lm''@;'; put 'put ''KFopdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SjspdHJ5e2lmKFo9MSxZJiYoVT0yJnVlWzBdP1kucmV0dXJuOnVlWzBdP1kudGhyb3d8fCgoVT1ZLnJldHVybikmJlUuY2FsbChZKSwwKTpZLm5leHQpJiYhKFU9VS5jYWxsKFks''@;'; put 'put ''dWVbMV0pKS5kb25lKXJldHVybiBVO3N3aXRjaChZPTAsVSYmKHVlPVsyJnVlWzBdLFUudmFsdWVdKSx1ZVswXSl7Y2FzZSAwOmNhc2UgMTpVPXVlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gSi5sYWJlbCsrLHt2YWx1ZTp1ZVsxXSxkb25lOiExfTtjYXNlIDU6Si5sYWJlbCsrLFk9dWVbMV0sdWU9''@;'; put 'put ''WzBdO2NvbnRpbnVlO2Nhc2UgNzp1ZT1KLm9wcy5wb3AoKSxKLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChVPShVPUoudHJ5cykubGVuZ3RoPjAmJlVbVS5sZW5ndGgtMV0pfHw2IT09dWVbMF0mJjIhPT11ZVswXSkpe0o9MDtjb250aW51ZX1pZigzPT09dWVbMF0mJighVXx8''@;'; put 'put ''dWVbMV0+VVswXSYmdWVbMV08VVszXSkpe0oubGFiZWw9dWVbMV07YnJlYWt9aWYoNj09PXVlWzBdJiZKLmxhYmVsPFVbMV0pe0oubGFiZWw9VVsxXSxVPXVlO2JyZWFrfWlmKFUmJkoubGFiZWw8VVsyXSl7Si5sYWJlbD1VWzJdLEoub3BzLnB1c2godWUpO2JyZWFrfVVbMl0mJkoub3BzLnBv''@;'; put 'put ''cCgpLEoudHJ5cy5wb3AoKTtjb250aW51ZX11ZT1CLmNhbGwoTixKKX1jYXRjaChsZSl7dWU9WzYsbGVdLFk9MH1maW5hbGx5e1o9VT0wfWlmKDUmdWVbMF0pdGhyb3cgdWVbMV07cmV0dXJue3ZhbHVlOnVlWzBdP3VlWzFdOnZvaWQgMCxkb25lOiEwfX0oW3JlLGllXSl9fX07T2JqZWN0LmRl''@;'; put 'put ''ZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uQ29udGV4dE1hbmFnZXI9dm9pZCAwO3ZhciBUPUkoNTkyOCksRT1JKDk3NzgpLHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBOKEIsWil7dGhpcy5zZXJ2ZXJVcmw9Qix0aGlzLnJlcXVlc3RDbGllbnQ9Wix0aGlzLmRlZmF1''@;'; put 'put ''bHRDb21wdXRlQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGNvbXB1dGUgY29udGV4dCIsIkRhdGEgTWluaW5nIGNvbXB1dGUgY29udGV4dCIsIkltcG9ydCA5IHNlcnZpY2UgY29tcHV0ZSBjb250ZXh0IiwiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0IiwiU0FTIE1v''@;'; put 'put ''ZGVsIE1hbmFnZXIgY29tcHV0ZSBjb250ZXh0IiwiU0FTIFN0dWRpbyBjb21wdXRlIGNvbnRleHQiLCJTQVMgVmlzdWFsIEZvcmVjYXN0aW5nIGNvbXB1dGUgY29udGV4dCJdLHRoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHM9WyJDQVMgRm9ybWF0cyBzZXJ2aWNlIGxhdW5jaGVyIGNvbnRl''@;'; put 'put ''eHQiLCJEYXRhIE1pbmluZyBsYXVuY2hlciBjb250ZXh0IiwiSW1wb3J0IDkgc2VydmljZSBsYXVuY2hlciBjb250ZXh0IiwiSm9iIEZsb3cgRXhlY3V0aW9uIGxhdW5jaGVyIGNvbnRleHQiLCJTQVMgSm9iIEV4ZWN1dGlvbiBsYXVuY2hlciBjb250ZXh0IiwiU0FTIE1vZGVsIE1hbmFnZXIg''@;'; put 'put ''bGF1bmNoZXIgY29udGV4dCIsIlNBUyBTdHVkaW8gbGF1bmNoZXIgY29udGV4dCIsIlNBUyBWaXN1YWwgRm9yZWNhc3RpbmcgbGF1bmNoZXIgY29udGV4dCJdLEImJigwLFQuaXNVcmwpKEIpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTi5wcm90b3R5cGUsImdldERlZmF1bHRDb21w''@;'; put 'put ''dXRlQ29udGV4dHMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOLnByb3RvdHlwZSwiZ2V0RGVmYXVsdExhdW5jaGVyQ29udGV4dHMiLHtnZXQ6''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0c30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxOLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oQil7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFy''@;'; put 'put ''IFo7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvY29tcHV0ZS9jb250ZXh0cz9saW1pdD0xMDAwMCIpLEIpLmNhdGNoKGZ1bmN0aW9uKFUpe3Ro''@;'; put 'put ''cm93KDAsRS5wcmVmaXhNZXNzYWdlKShVLCJFcnJvciB3aGlsZSBnZXR0aW5nIGNvbXB1dGUgY29udGV4dHMuICIpfSldO2Nhc2UgMTpyZXR1cm5bMiwoKFo9WS5zZW50KCkucmVzdWx0KSYmWi5pdGVtcz9aLml0ZW1zOltdKS5tYXAoZnVuY3Rpb24oVSl7cmV0dXJue2NyZWF0ZWRCeTpVLmNy''@;'; put 'put ''ZWF0ZWRCeSxpZDpVLmlkLG5hbWU6VS5uYW1lLHZlcnNpb246VS52ZXJzaW9uLGF0dHJpYnV0ZXM6e319fSldfX0pfSl9LE4ucHJvdG90eXBlLmdldExhdW5jaGVyQ29udGV4dHM9ZnVuY3Rpb24oQil7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFo7cmV0dXJu''@;'; put 'put ''IEQodGhpcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvbGF1bmNoZXIvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxCKS5jYXRjaChmdW5jdGlvbihVKXt0aHJvdygwLEUu''@;'; put 'put ''cHJlZml4TWVzc2FnZSkoVSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBsYXVuY2hlciBjb250ZXh0cy4gIil9KV07Y2FzZSAxOnJldHVyblsyLCgoWj1ZLnNlbnQoKS5yZXN1bHQpJiZaLml0ZW1zP1ouaXRlbXM6W10pLm1hcChmdW5jdGlvbihVKXtyZXR1cm57Y3JlYXRlZEJ5OlUuY3JlYXRlZEJ5''@;'; put 'put ''LGlkOlUuaWQsbmFtZTpVLm5hbWUsdmVyc2lvbjpVLnZlcnNpb24sYXR0cmlidXRlczp7fX19KV19fSl9KX0sTi5wcm90b3R5cGUuY3JlYXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oQixaLFksVSxxLEope3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlZSxy''@;'; put 'put ''ZSxpZSx1ZSxsZTtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy52YWxpZGF0ZUNvbnRleHROYW1lKEIpLHRoaXMuaXNEZWZhdWx0Q29udGV4dChCLHRoaXMuZGVmYXVsdENvbXB1dGVDb250ZXh0cywiQ29tcHV0ZSBjb250ZXh0''@;'; put 'put ''ICciLmNvbmNhdChCLCInIGFscmVhZHkgZXhpc3RzLiIpKSxbNCx0aGlzLmdldENvbXB1dGVDb250ZXh0cyhxKV07Y2FzZSAxOmlmKGFlLnNlbnQoKS5maW5kKGZ1bmN0aW9uKFcpe3JldHVybiBXLm5hbWU9PT1CfSkpdGhyb3cgbmV3IEVycm9yKCJDb21wdXRlIGNvbnRleHQgJyIuY29uY2F0''@;'; put 'put ''KEIsIicgYWxyZWFkeSBleGlzdHMuIikpO3JldHVybiBaP3RoaXMuZGVmYXVsdExhdW5jaGVyQ29udGV4dHMuaW5jbHVkZXMoWik/WzMsNF06WzQsdGhpcy5nZXRMYXVuY2hlckNvbnRleHRzKHEpXTpbMyw0XTtjYXNlIDI6cmV0dXJuIGFlLnNlbnQoKS5maW5kKGZ1bmN0aW9uKFcpe3JldHVy''@;'; put 'put ''biBXLm5hbWU9PT1afSk/WzMsNF06KGVlPSJUaGUgbGF1bmNoZXIgY29udGV4dCBmb3IgIi5jb25jYXQoWiksWzQsdGhpcy5jcmVhdGVMYXVuY2hlckNvbnRleHQoWixlZSwiZGlyZWN0IixxKS5jYXRjaChmdW5jdGlvbihXKXt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHdoaWxlIGNyZWF0aW5n''@;'; put 'put ''IGxhdW5jaGVyIGNvbnRleHQuICIuY29uY2F0KFcpKX0pXSk7Y2FzZSAzOmlmKCEocmU9YWUuc2VudCgpKXx8IXJlLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB3aGlsZSBjcmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiIpO1o9cmUubmFtZSxhZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4g''@;'; put 'put ''aWU9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0scSYmKGllLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChxKSksdWU9e3JldXNlU2VydmVyUHJvY2Vzc2VzOiEwfSxZJiYodWU9aihqKHt9LHVlKSx7cnVuU2VydmVyQXM6WX0pKSxsZT17bmFtZTpCLGxhdW5jaENv''@;'; put 'put ''bnRleHQ6e2NvbnRleHROYW1lOlp8fCIifSxhdHRyaWJ1dGVzOnVlfSxKJiZKLmxlbmd0aD9sZS5hdXRob3JpemVkVXNlcnM9SjpsZS5hdXRob3JpemVBbGxBdXRoZW50aWNhdGVkVXNlcnM9ITAsVSYmKGxlLmVudmlyb25tZW50PXthdXRvRXhlY0xpbmVzOlV9KSxbNCx0aGlzLnJlcXVlc3RD''@;'; put 'put ''bGllbnQucG9zdCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9jb21wdXRlL2NvbnRleHRzIiksbGUscSkuY2F0Y2goZnVuY3Rpb24oVyl7dGhyb3coMCxFLnByZWZpeE1lc3NhZ2UpKFcsIkVycm9yIHdoaWxlIGNyZWF0aW5nIGNvbXB1dGUgY29udGV4dC4gIil9KV07Y2FzZSA1OnJldHVy''@;'; put 'put ''blsyLGFlLnNlbnQoKS5yZXN1bHRdfX0pfSl9LE4ucHJvdG90eXBlLmNyZWF0ZUxhdW5jaGVyQ29udGV4dD1mdW5jdGlvbihCLFosWSxVKXtyZXR1cm4gdm9pZCAwPT09WSYmKFk9ImRpcmVjdCIpLEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHEsSjtyZXR1cm4gRCh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKGVlKXtzd2l0Y2goZWUubGFiZWwpe2Nhc2UgMDppZighQil0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRDb250ZXh0KEIsdGhpcy5kZWZhdWx0TGF1bmNoZXJDb250ZXh0cywiTGF1bmNoZXIgY29udGV4''@;'; put 'put ''dCAnIi5jb25jYXQoQiwiJyBhbHJlYWR5IGV4aXN0cy4iKSksWzQsdGhpcy5nZXRMYXVuY2hlckNvbnRleHRzKFUpXTtjYXNlIDE6aWYoZWUuc2VudCgpLmZpbmQoZnVuY3Rpb24ocmUpe3JldHVybiByZS5uYW1lPT09Qn0pKXRocm93IG5ldyBFcnJvcigiTGF1bmNoZXIgY29udGV4dCAnIi5j''@;'; put 'put ''b25jYXQoQiwiJyBhbHJlYWR5IGV4aXN0cy4iKSk7cmV0dXJuIHE9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sVSYmKHEuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KFUpKSxKPXtuYW1lOkIsZGVzY3JpcHRpb246WixsYXVuY2hUeXBlOll9LFs0LHRoaXMucmVx''@;'; put 'put ''dWVzdENsaWVudC5wb3N0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2xhdW5jaGVyL2NvbnRleHRzIiksSixVKS5jYXRjaChmdW5jdGlvbihyZSl7dGhyb3coMCxFLnByZWZpeE1lc3NhZ2UpKHJlLCJFcnJvciB3aGlsZSBjcmVhdGluZyBsYXVuY2hlciBjb250ZXh0LiAiKX0pXTtjYXNl''@;'; put 'put ''IDI6cmV0dXJuWzIsZWUuc2VudCgpLnJlc3VsdF19fSl9KX0sTi5wcm90b3R5cGUuZWRpdENvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKEIsWixZKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVSxxLEosZWU7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihyZSl7c3dp''@;'; put 'put ''dGNoKHJlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMudmFsaWRhdGVDb250ZXh0TmFtZShCKSx0aGlzLmlzRGVmYXVsdENvbnRleHQoQix0aGlzLmRlZmF1bHRDb21wdXRlQ29udGV4dHMsIkVkaXRpbmcgZGVmYXVsdCBTQVMgY29tcHV0ZSBjb250ZXh0cyBpcyBub3QgYWxsb3dlZC4iLCEw''@;'; put 'put ''KSxbNCx0aGlzLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKEIsWSldO2Nhc2UgMTpyZXR1cm4oVT1yZS5zZW50KCkpP1szLDNdOls0LHRoaXMuZ2V0Q29tcHV0ZUNvbnRleHRCeUlkKFouaWQsWSldO2Nhc2UgMjpVPXJlLnNlbnQoKSxyZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLnJl''@;'; put 'put ''cXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KFUuaWQpLFkpLmNhdGNoKGZ1bmN0aW9uKGllKXt0aHJvdyBpZSYmNDA0PT09aWUuc3RhdHVzP25ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KEIsIicgd2Fz''@;'; put 'put ''IG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci4iKSk6aWV9KV07Y2FzZSA0OnJldHVybiBxPXJlLnNlbnQoKSxlZT1xLmV0YWcsWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnB1dCgiL2NvbXB1dGUvY29udGV4dHMvIi5jb25jYXQoKEo9cS5yZXN1bHQpLmlkKSxqKGooaih7fSxKKSxaKSx7YXR0cmli''@;'; put 'put ''dXRlczpqKGooe30sSi5hdHRyaWJ1dGVzKSxaLmF0dHJpYnV0ZXMpfSksWSx7IklmLU1hdGNoIjplZX0pXTtjYXNlIDU6cmV0dXJuWzIscmUuc2VudCgpXX19KX0pfSxOLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihCLFope3JldHVybiBHKHRoaXMsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciBZO3JldHVybiBEKHRoaXMsZnVuY3Rpb24oVSl7c3dpdGNoKFUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwnL2NvbXB1dGUvY29udGV4dHM/ZmlsdGVyPWVxKG5hbWUs''@;'; put 'put ''ICInKS5jb25jYXQoQiwnIiknKSxaKS5jYXRjaChmdW5jdGlvbihxKXt0aHJvdygwLEUucHJlZml4TWVzc2FnZSkocSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBjb21wdXRlIGNvbnRleHQgYnkgbmFtZS4gIil9KV07Y2FzZSAxOmlmKCEoWT1VLnNlbnQoKS5yZXN1bHQpfHwhWS5pdGVtc3x8IVku''@;'; put 'put ''aXRlbXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KEIsIicgd2FzIG5vdCBmb3VuZCBhdCAnIikuY29uY2F0KHRoaXMuc2VydmVyVXJsLCInLiIpKTtyZXR1cm5bMixZLml0ZW1zWzBdXX19KX0pfSxOLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5''@;'; put 'put ''SWQ9ZnVuY3Rpb24oQixaKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKFkpe3N3aXRjaChZLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIi9j''@;'; put 'put ''b21wdXRlL2NvbnRleHRzLyIpLmNvbmNhdChCKSxaKS5jYXRjaChmdW5jdGlvbihVKXt0aHJvdygwLEUucHJlZml4TWVzc2FnZSkoVSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBjb21wdXRlIGNvbnRleHQgYnkgaWQuICIpfSldO2Nhc2UgMTpyZXR1cm5bMixZLnNlbnQoKS5yZXN1bHRdfX0pfSl9''@;'; put 'put ''LE4ucHJvdG90eXBlLmdldEV4ZWN1dGFibGVDb250ZXh0cz1mdW5jdGlvbihCLFope3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBZLFUscSxKLGVlLHJlLGllLGxlLGFlO3JldHVybiBEKHRoaXMsZnVuY3Rpb24oVyl7c3dpdGNoKFcubGFiZWwpe2Nhc2UgMDpy''@;'; put 'put ''ZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDAiKSxaPy5hY2Nlc3NfdG9rZW4pLmNhdGNoKGZ1bmN0aW9uKGIpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShiLCJFcnJvciB3aGlsZSBm''@;'; put 'put ''ZXRjaGluZyBjb21wdXRlIGNvbnRleHRzLiIpfSldO2Nhc2UgMTpZPVcuc2VudCgpLnJlc3VsdCxxPVtdLEo9KFU9WS5pdGVtc3x8W10pLm1hcChmdW5jdGlvbihiKXt2YXIgQT1bIiVwdXQgJj1zeXN1c2VyaWQ7Il07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEIoInRlc3QtIi5jb25jYXQo''@;'; put 'put ''Yi5uYW1lKSxBLGIubmFtZSxaLG51bGwsITEsITAsITApLmNhdGNoKGZ1bmN0aW9uKEYpe3JldHVybiBGfSl9fSksZWU9W10scmU9MCxpZT1KLFcubGFiZWw9MjtjYXNlIDI6cmV0dXJuIHJlPGllLmxlbmd0aD8oYWU9KGxlPWVlKS5wdXNoLFs0LCgwLGllW3JlXSkoKV0pOlszLDVdO2Nhc2Ug''@;'; put 'put ''MzphZS5hcHBseShsZSxbVy5zZW50KCldKSxXLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiByZSsrLFszLDJdO2Nhc2UgNTpyZXR1cm4gZWUuZm9yRWFjaChmdW5jdGlvbihiLEEpe2lmKGImJmIubG9nKXRyeXt2YXIgSD0iIixnPWIubG9nLnNwbGl0KCJcbiIpLmZpbmQoZnVuY3Rpb24oQyl7cmV0''@;'; put 'put ''dXJuIEMuc3RhcnRzV2l0aCgiU1lTVVNFUklEPSIpfSk7ZyYmKEg9Zy5yZXBsYWNlKCJTWVNVU0VSSUQ9IiwiIikscS5wdXNoKHtjcmVhdGVkQnk6VVtBXS5jcmVhdGVkQnksaWQ6VVtBXS5pZCxuYW1lOlVbQV0ubmFtZSx2ZXJzaW9uOlVbQV0udmVyc2lvbixhdHRyaWJ1dGVzOntzeXNVc2Vy''@;'; put 'put ''SWQ6SH19KSl9Y2F0Y2goQyl7dGhyb3cgQ319KSxbMixxXX19KX0pfSxOLnByb3RvdHlwZS5kZWxldGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihCLFope3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBZLFU7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihxKXtzd2l0''@;'; put 'put ''Y2gocS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnZhbGlkYXRlQ29udGV4dE5hbWUoQiksdGhpcy5pc0RlZmF1bHRDb250ZXh0KEIsdGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzLCJEZWxldGluZyBkZWZhdWx0IFNBUyBjb21wdXRlIGNvbnRleHRzIGlzIG5vdCBhbGxvd2VkLiIsITAp''@;'; put 'put ''LFk9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sWiYmKFkuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KFopKSxbNCx0aGlzLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKEIsWildO2Nhc2UgMTpyZXR1cm4gVT1xLnNlbnQoKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQu''@;'; put 'put ''ZGVsZXRlKCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KFUuaWQpLFopXTtjYXNlIDI6cmV0dXJuWzIscS5zZW50KCldfX0pfSl9LE4ucHJvdG90eXBlLnZhbGlkYXRlQ29udGV4dE5hbWU9ZnVuY3Rpb24oQil7aWYoIUIpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJDb250ZXh0IG5hbWUgaXMgcmVxdWlyZWQuIil9LE4ucHJvdG90eXBlLmlzRGVmYXVsdENvbnRleHQ9ZnVuY3Rpb24oQixaLFksVSl7aWYodm9pZCAwPT09WiYmKFo9dGhpcy5kZWZhdWx0Q29tcHV0ZUNvbnRleHRzKSx2b2lkIDA9PT1ZJiYoWT0iIiksdm9pZCAwPT09VSYmKFU9ITEp''@;'; put 'put ''LFouaW5jbHVkZXMoQikpdGhyb3cgbmV3IEVycm9yKCIiLmNvbmNhdChZKS5jb25jYXQoVT8iXG5EZWZhdWx0IGNvbnRleHRzOiIrWi5tYXAoZnVuY3Rpb24ocSxKKXtyZXR1cm4iXG4iLmNvbmNhdChKKzEsIi4gIikuY29uY2F0KHEpfSk6IiIpKX0sTn0oKTtPLkNvbnRleHRNYW5hZ2VyPXp9''@;'; put 'put ''LDgzMDY6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oWSxVLHEsSil7cmV0dXJuIG5ldyhxfHwocT1Qcm9taXNlKSkoZnVuY3Rpb24oZWUscmUpe2Z1bmN0aW9uIGllKGFlKXt0cnl7bGUoSi5uZXh0KGFlKSl9Y2F0Y2go''@;'; put 'put ''Vyl7cmUoVyl9fWZ1bmN0aW9uIHVlKGFlKXt0cnl7bGUoSi50aHJvdyhhZSkpfWNhdGNoKFcpe3JlKFcpfX1mdW5jdGlvbiBsZShhZSl7dmFyIFc7YWUuZG9uZT9lZShhZS52YWx1ZSk6KFc9YWUudmFsdWUsVyBpbnN0YW5jZW9mIHE/VzpuZXcgcShmdW5jdGlvbihiKXtiKFcpfSkpLnRoZW4o''@;'; put 'put ''aWUsdWUpfWxlKChKPUouYXBwbHkoWSxVfHxbXSkpLm5leHQoKSl9KX0sRz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihZLFUpe3ZhciBxLEosZWUscmUsaWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmZWVbMF0pdGhyb3cgZWVbMV07cmV0dXJuIGVlWzFdfSx0cnlz''@;'; put 'put ''OltdLG9wczpbXX07cmV0dXJuIHJlPXtuZXh0OnVlKDApLHRocm93OnVlKDEpLHJldHVybjp1ZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHJlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHJlO2Z1bmN0aW9uIHVlKGxlKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24oYWUpe3JldHVybiBmdW5jdGlvbihXKXtpZihxKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2llOyl0cnl7aWYocT0xLEomJihlZT0yJldbMF0/Si5yZXR1cm46V1swXT9KLnRocm93fHwoKGVlPUoucmV0dXJuKSYmZWUuY2Fs''@;'; put 'put ''bChKKSwwKTpKLm5leHQpJiYhKGVlPWVlLmNhbGwoSixXWzFdKSkuZG9uZSlyZXR1cm4gZWU7c3dpdGNoKEo9MCxlZSYmKFc9WzImV1swXSxlZS52YWx1ZV0pLFdbMF0pe2Nhc2UgMDpjYXNlIDE6ZWU9VzticmVhaztjYXNlIDQ6cmV0dXJuIGllLmxhYmVsKysse3ZhbHVlOldbMV0sZG9uZToh''@;'; put 'put ''MX07Y2FzZSA1OmllLmxhYmVsKyssSj1XWzFdLFc9WzBdO2NvbnRpbnVlO2Nhc2UgNzpXPWllLm9wcy5wb3AoKSxpZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoZWU9KGVlPWllLnRyeXMpLmxlbmd0aD4wJiZlZVtlZS5sZW5ndGgtMV0pfHw2IT09V1swXSYmMiE9PVdbMF0p''@;'; put 'put ''KXtpZT0wO2NvbnRpbnVlfWlmKDM9PT1XWzBdJiYoIWVlfHxXWzFdPmVlWzBdJiZXWzFdPGVlWzNdKSl7aWUubGFiZWw9V1sxXTticmVha31pZig2PT09V1swXSYmaWUubGFiZWw8ZWVbMV0pe2llLmxhYmVsPWVlWzFdLGVlPVc7YnJlYWt9aWYoZWUmJmllLmxhYmVsPGVlWzJdKXtpZS5sYWJl''@;'; put 'put ''bD1lZVsyXSxpZS5vcHMucHVzaChXKTticmVha31lZVsyXSYmaWUub3BzLnBvcCgpLGllLnRyeXMucG9wKCk7Y29udGludWV9Vz1VLmNhbGwoWSxpZSl9Y2F0Y2goYil7Vz1bNixiXSxKPTB9ZmluYWxseXtxPWVlPTB9aWYoNSZXWzBdKXRocm93IFdbMV07cmV0dXJue3ZhbHVlOldbMF0/V1sx''@;'; put 'put ''XTp2b2lkIDAsZG9uZTohMH19KFtsZSxhZV0pfX19LEQ9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihZLFUscSl7aWYocXx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBKLGVlPTAscmU9VS5sZW5ndGg7ZWU8cmU7ZWUrKykhSiYmZWUgaW4gVXx8KEp8fChKPUFycmF5''@;'; put 'put ''LnByb3RvdHlwZS5zbGljZS5jYWxsKFUsMCxlZSkpLEpbZWVdPVVbZWVdKTtyZXR1cm4gWS5jb25jYXQoSnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoVSkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5TQVM5QXBpQ2xpZW50PXZvaWQg''@;'; put 'put ''MDt2YXIgVD1JKDc3NTcpLEU9SSg2MjMwKSx6PUkoNzk1KSxOPUkoNTkyOCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIFkoVSxxLEope3RoaXMuc2VydmVyVXJsPVUsdGhpcy5qb2JzUGF0aD1xLFUmJigwLE4uaXNVcmwpKFUpLHRoaXMucmVxdWVzdENsaWVudD1uZXcgei5TYXM5UmVxdWVzdENs''@;'; put 'put ''aWVudChVLEopfXJldHVybiBZLnByb3RvdHlwZS5nZXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm57c2VydmVyVXJsOnRoaXMuc2VydmVyVXJsfX0sWS5wcm90b3R5cGUuc2V0Q29uZmlnPWZ1bmN0aW9uKFUpe1UmJih0aGlzLnNlcnZlclVybD1VKX0sWS5wcm90b3R5cGUuZXhlY3V0ZVNjcmlw''@;'; put 'put ''dD1mdW5jdGlvbihVLHEsSil7cmV0dXJuIGoodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlLHJlLGllLHVlLGxlLGFlLFc7cmV0dXJuIEcodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5sb2dpbihx''@;'; put 'put ''LEosdGhpcy5qb2JzUGF0aCldO2Nhc2UgMTpyZXR1cm4gYi5zZW50KCksZWU9WyJkYXRhIF9udWxsXzsiLCJmaWxlIF93ZWJvdXQ7IiwicHV0ICdFeGVjdXRlZCBzYXNqcyBydW4nOyIsInJ1bjsiXSxyZT1aKEQoRChbXSxVLCEwKSxlZSwhMCkuam9pbigiXG4iKSksaWU9Ii9Vc2VyIEZvbGRl''@;'; put 'put ''cnMvIi5jb25jYXQocSwiL015IEZvbGRlci9zYXNqcy9ydW5uZXIiKSx1ZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9IityZS5nZXRCb3VuZGFyeSgpLGxlPXJlLmdldExlbmd0aFN5bmMoKSxhZT17ImNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSIsQWNjZXB0OiIqLyoiLCJDb250''@;'; put 'put ''ZW50LVR5cGUiOnVlLCJDb250ZW50LUxlbmd0aCI6bGUsQ29ubmVjdGlvbjoia2VlcC1hbGl2ZSJ9LFc9IiIuY29uY2F0KHRoaXMuam9ic1BhdGgsIi8/IikuY29uY2F0KCJfcHJvZ3JhbT0iK2llKyImX2RlYnVnPWxvZyIpLFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KFcscmUsdm9pZCAw''@;'; put 'put ''LHVlLGFlKV07Y2FzZSAyOnJldHVyblsyLGIuc2VudCgpLnJlc3VsdF19fSl9KX0sWX0oKTtPLlNBUzlBcGlDbGllbnQ9Qjt2YXIgWj1mdW5jdGlvbihZKXt2YXIgVT1uZXcgRSxxPSJzYXNqcy1leGVjdXRlLXNhczktIi5jb25jYXQoKDAsVC5nZW5lcmF0ZVRpbWVzdGFtcCkoIiIpLCIuc2Fz''@;'; put 'put ''Iik7cmV0dXJuIFUuYXBwZW5kKHEsWSx7ZmlsZW5hbWU6cSxjb250ZW50VHlwZToidGV4dC9wbGFpbiJ9KSxVfX0sOTgyMTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz1JKDUxMDgpLEQ9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGFlLFcsYixB''@;'; put 'put ''KXtyZXR1cm4gbmV3KGJ8fChiPVByb21pc2UpKShmdW5jdGlvbihGLEgpe2Z1bmN0aW9uIGcoXyl7dHJ5e2soQS5uZXh0KF8pKX1jYXRjaChwKXtIKHApfX1mdW5jdGlvbiBDKF8pe3RyeXtrKEEudGhyb3coXykpfWNhdGNoKHApe0gocCl9fWZ1bmN0aW9uIGsoXyl7dmFyIHA7Xy5kb25lP0Yo''@;'; put 'put ''Xy52YWx1ZSk6KHA9Xy52YWx1ZSxwIGluc3RhbmNlb2YgYj9wOm5ldyBiKGZ1bmN0aW9uKHcpe3cocCl9KSkudGhlbihnLEMpfWsoKEE9QS5hcHBseShhZSxXfHxbXSkpLm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihhZSxXKXt2YXIgYixBLEYsSCxnPXts''@;'; put 'put ''YWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkZbMF0pdGhyb3cgRlsxXTtyZXR1cm4gRlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBIPXtuZXh0OkMoMCksdGhyb3c6QygxKSxyZXR1cm46QygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEhbU3ltYm9sLml0ZXJhdG9yXT1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzfSksSDtmdW5jdGlvbiBDKGspe3JldHVybiBmdW5jdGlvbihfKXtyZXR1cm4gZnVuY3Rpb24ocCl7aWYoYil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtnOyl0cnl7aWYoYj0xLEEmJihGPTIm''@;'; put 'put ''cFswXT9BLnJldHVybjpwWzBdP0EudGhyb3d8fCgoRj1BLnJldHVybikmJkYuY2FsbChBKSwwKTpBLm5leHQpJiYhKEY9Ri5jYWxsKEEscFsxXSkpLmRvbmUpcmV0dXJuIEY7c3dpdGNoKEE9MCxGJiYocD1bMiZwWzBdLEYudmFsdWVdKSxwWzBdKXtjYXNlIDA6Y2FzZSAxOkY9cDticmVhaztj''@;'; put 'put ''YXNlIDQ6cmV0dXJuIGcubGFiZWwrKyx7dmFsdWU6cFsxXSxkb25lOiExfTtjYXNlIDU6Zy5sYWJlbCsrLEE9cFsxXSxwPVswXTtjb250aW51ZTtjYXNlIDc6cD1nLm9wcy5wb3AoKSxnLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChGPShGPWcudHJ5cykubGVuZ3RoPjAmJkZb''@;'; put 'put ''Ri5sZW5ndGgtMV0pfHw2IT09cFswXSYmMiE9PXBbMF0pKXtnPTA7Y29udGludWV9aWYoMz09PXBbMF0mJighRnx8cFsxXT5GWzBdJiZwWzFdPEZbM10pKXtnLmxhYmVsPXBbMV07YnJlYWt9aWYoNj09PXBbMF0mJmcubGFiZWw8RlsxXSl7Zy5sYWJlbD1GWzFdLEY9cDticmVha31pZihGJiZn''@;'; put 'put ''LmxhYmVsPEZbMl0pe2cubGFiZWw9RlsyXSxnLm9wcy5wdXNoKHApO2JyZWFrfUZbMl0mJmcub3BzLnBvcCgpLGcudHJ5cy5wb3AoKTtjb250aW51ZX1wPVcuY2FsbChhZSxnKX1jYXRjaCh3KXtwPVs2LHddLEE9MH1maW5hbGx5e2I9Rj0wfWlmKDUmcFswXSl0aHJvdyBwWzFdO3JldHVybnt2''@;'; put 'put ''YWx1ZTpwWzBdP3BbMV06dm9pZCAwLGRvbmU6ITB9fShbayxfXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uU0FTVml5YUFwaUNsaWVudD12b2lkIDA7dmFyIEU9SSg1OTI4KSx6PUkoNjIzMCksTj1JKDEzOTUpLEI9SSg2OTAzKSxaPUko''@;'; put 'put ''NjcyKSxZPUkoOTA5NyksVT1JKDk3NzgpLHE9SSgxMzQzKSxKPUkoNzA0KSxlZT1JKDY0OTYpLHJlPUkoMTYyMiksaWU9SSgzNTY5KSx1ZT1JKDM2NiksbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhZShXLGIsQSxGKXt0aGlzLnNlcnZlclVybD1XLHRoaXMucm9vdEZvbGRlck5hbWU9Yix0aGlz''@;'; put 'put ''LmNvbnRleHROYW1lPUEsdGhpcy5yZXF1ZXN0Q2xpZW50PUYsdGhpcy5fZGVidWc9ITEsdGhpcy5zZXNzaW9uTWFuYWdlcj1uZXcgQi5TZXNzaW9uTWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVudCksdGhpcy5jb250ZXh0TWFuYWdlcj1u''@;'; put 'put ''ZXcgWi5Db250ZXh0TWFuYWdlcih0aGlzLnNlcnZlclVybCx0aGlzLnJlcXVlc3RDbGllbnQpLHRoaXMuZm9sZGVyTWFwPW5ldyBNYXAsVyYmKDAsRS5pc1VybCkoVyl9cmV0dXJuIGFlLnByb3RvdHlwZS5hcHBlbmRSZXF1ZXN0PWZ1bmN0aW9uKFcsYixBKXt0aGlzLnJlcXVlc3RDbGllbnQu''@;'; put 'put ''YXBwZW5kUmVxdWVzdChXLGIsQSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhZS5wcm90b3R5cGUsImRlYnVnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnfSxzZXQ6ZnVuY3Rpb24oVyl7dGhpcy5fZGVidWc9Vyx0aGlzLnNlc3Npb25NYW5hZ2VyJiYodGhpcy5zZXNzaW9u''@;'; put 'put ''TWFuYWdlci5kZWJ1Zz1XKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxhZS5wcm90b3R5cGUuZ2V0Sm9ic0luRm9sZGVyPWZ1bmN0aW9uKFcpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oQSl7c3dp''@;'; put 'put ''dGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYj0oMCxFLmlzUmVsYXRpdmVQYXRoKShXKT8iIi5jb25jYXQodGhpcy5yb290Rm9sZGVyTmFtZSwiLyIpLmNvbmNhdChXKTpXLHRoaXMuZm9sZGVyTWFwLmdldChiKT9bMix0aGlzLmZvbGRlck1hcC5nZXQoYildOls0LHRoaXMucG9wdWxhdGVG''@;'; put 'put ''b2xkZXJNYXAoYildO2Nhc2UgMTpyZXR1cm4gQS5zZW50KCksWzIsdGhpcy5mb2xkZXJNYXAuZ2V0KGIpXX19KX0pfSxhZS5wcm90b3R5cGUuZ2V0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue3NlcnZlclVybDp0aGlzLnNlcnZlclVybCxyb290Rm9sZGVyTmFtZTp0aGlzLnJvb3RGb2xkZXJO''@;'; put 'put ''YW1lfX0sYWUucHJvdG90eXBlLnNldENvbmZpZz1mdW5jdGlvbihXLGIpe1cmJih0aGlzLnNlcnZlclVybD1XKSxiJiYodGhpcy5yb290Rm9sZGVyTmFtZT1iKX0sYWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbihXKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5nZXRDb21wdXRlQ29udGV4dHMoVyldO2Nhc2UgMTpyZXR1cm5bMixiLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmdldERlZmF1''@;'; put 'put ''bHRDb21wdXRlQ29udGV4dHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0TWFuYWdlci5nZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzfSxhZS5wcm90b3R5cGUuZ2V0TGF1bmNoZXJDb250ZXh0cz1mdW5jdGlvbihXKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5nZXRMYXVuY2hlckNvbnRleHRzKFcpXTtjYXNlIDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LGFlLnByb3RvdHlwZS5nZXRFeGVjdXRhYmxlQ29u''@;'; put 'put ''dGV4dHM9ZnVuY3Rpb24oVyl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGI7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybiBiPXRoaXMuZXhlY3V0ZVNjcmlwdC5iaW5kKHRoaXMpLFs0LHRoaXMuY29udGV4''@;'; put 'put ''dE1hbmFnZXIuZ2V0RXhlY3V0YWJsZUNvbnRleHRzKGIsVyldO2Nhc2UgMTpyZXR1cm5bMixBLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmNyZWF0ZVNlc3Npb249ZnVuY3Rpb24oVyxiKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQSxGLEg7cmV0dXJu''@;'; put 'put ''IFQodGhpcyxmdW5jdGlvbihnKXtzd2l0Y2goZy5sYWJlbCl7Y2FzZSAwOnJldHVybiBBPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGImJihBLkF1dGhvcml6YXRpb249IkJlYXJlciAiLmNvbmNhdChiKSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL2NvbXB1dGUv''@;'; put 'put ''Y29udGV4dHM/bGltaXQ9MTAwMDAiLGIpXTtjYXNlIDE6aWYoRj1nLnNlbnQoKS5yZXN1bHQsIShIPUYuaXRlbXMmJkYuaXRlbXMubGVuZ3RoP0YuaXRlbXMuZmluZChmdW5jdGlvbihDKXtyZXR1cm4gQy5uYW1lPT09V30pOm51bGwpKXRocm93IG5ldyBFcnJvcigiRXhlY3V0aW9uIGNvbnRl''@;'; put 'put ''eHQgIi5jb25jYXQoVywiIG5vdCBmb3VuZC4iKSk7cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIi9jb21wdXRlL2NvbnRleHRzLyIuY29uY2F0KEguaWQsIi9zZXNzaW9ucyIpLHt9LGIpXTtjYXNlIDI6cmV0dXJuWzIsZy5zZW50KCkucmVzdWx0XX19KX0pfSxhZS5wcm90b3R5''@;'; put 'put ''cGUuY3JlYXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oVyxiLEEsRixILGcpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmNy''@;'; put 'put ''ZWF0ZUNvbXB1dGVDb250ZXh0KFcsYixBLEYsSCxnKV07Y2FzZSAxOnJldHVyblsyLEMuc2VudCgpXX19KX0pfSxhZS5wcm90b3R5cGUuY3JlYXRlTGF1bmNoZXJDb250ZXh0PWZ1bmN0aW9uKFcsYixBLEYpe3JldHVybiB2b2lkIDA9PT1BJiYoQT0iZGlyZWN0IiksRCh0aGlzLHZvaWQgMCx2''@;'; put 'put ''b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRjaChILmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5jcmVhdGVMYXVuY2hlckNvbnRleHQoVyxiLEEsRildO2Nhc2UgMTpyZXR1cm5bMixILnNlbnQoKV19fSl9KX0sYWUucHJv''@;'; put 'put ''dG90eXBlLmVkaXRDb21wdXRlQ29udGV4dD1mdW5jdGlvbihXLGIsQSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuY29udGV4dE1hbmFnZXIuZWRpdENv''@;'; put 'put ''bXB1dGVDb250ZXh0KFcsYixBKV07Y2FzZSAxOnJldHVyblsyLEYuc2VudCgpXX19KX0pfSxhZS5wcm90b3R5cGUuZGVsZXRlQ29tcHV0ZUNvbnRleHQ9ZnVuY3Rpb24oVyxiKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEEp''@;'; put 'put ''e3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5jb250ZXh0TWFuYWdlci5kZWxldGVDb21wdXRlQ29udGV4dChXLGIpXTtjYXNlIDE6cmV0dXJuWzIsQS5zZW50KCldfX0pfSl9LGFlLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKFcsYixBLEYsSCxnLEMsayxf''@;'; put 'put ''LHAsdyl7cmV0dXJuIHZvaWQgMD09PUgmJihIPW51bGwpLHZvaWQgMD09PWcmJihnPSExKSx2b2lkIDA9PT1DJiYoQz0hMSksdm9pZCAwPT09ayYmKGs9ITApLHZvaWQgMD09PXAmJihwPSExKSxEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''Syl7cmV0dXJuWzIsKDAscmUuZXhlY3V0ZU9uQ29tcHV0ZUFwaSkodGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2Vzc2lvbk1hbmFnZXIsdGhpcy5yb290Rm9sZGVyTmFtZSxXLGIsQSxGLEgsZyxDLGssXyxwLHcpXX0pfSl9LGFlLnByb3RvdHlwZS5nZXRGb2xkZXI9ZnVuY3Rpb24oVyxiKXty''@;'; put 'put ''ZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiL2ZvbGRlcnMvZm9sZGVycy9AaXRlbT9wYXRoPSIuY29uY2F0KFcpLGIpLnRo''@;'; put 'put ''ZW4oZnVuY3Rpb24oRil7cmV0dXJuIEYucmVzdWx0fSldO2Nhc2UgMTpyZXR1cm5bMixBLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24oVyxiLEEsRixIKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZyxDO3JldHVybiBU''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oayl7c3dpdGNoKGsubGFiZWwpe2Nhc2UgMDppZighQSYmIUYpdGhyb3cgbmV3IEVycm9yKCJQYXRoIG9yIFVSSSBvZiB0aGUgcGFyZW50IGZvbGRlciBpcyByZXF1aXJlZC4iKTtyZXR1cm4gRnx8IUE/WzMsMl06WzQsdGhpcy5nZXRGb2xkZXJVcmkoQSxIKV07Y2Fz''@;'; put 'put ''ZSAxOkY9ay5zZW50KCksay5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gZz17QWNjZXB0OiJhcHBsaWNhdGlvbi92bmQuc2FzLmZpbGUranNvbiIsIkNvbnRlbnQtRGlzcG9zaXRpb24iOidmaWxlbmFtZT0iJy5jb25jYXQoVywnIjsnKX0sKEM9bmV3IHopLmFwcGVuZCgiZmlsZSIsYixXKSxbNCx0''@;'; put 'put ''aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiL2ZpbGVzL2ZpbGVzP3BhcmVudEZvbGRlclVyaT0iLmNvbmNhdChGLCImdHlwZURlZk5hbWU9ZmlsZSNyYXdVcGxvYWQiKSxDLEgsIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIrQy5fYm91bmRhcnksZyldO2Nhc2UgMzpyZXR1cm5bMixr''@;'; put 'put ''LnNlbnQoKS5yZXN1bHRdfX0pfSl9LGFlLnByb3RvdHlwZS5jcmVhdGVGb2xkZXI9ZnVuY3Rpb24oVyxiLEEsRixIKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZyxDLGssXyx3O3JldHVybiBUKHRoaXMsZnVuY3Rpb24oSyl7c3dpdGNoKEsubGFiZWwpe2Nh''@;'; put 'put ''c2UgMDppZihnPWoubG9nZ2VyfHxHLCFiJiYhQSl0aHJvdyBuZXcgRXJyb3IoIlBhdGggb3IgVVJJIG9mIHRoZSBwYXJlbnQgZm9sZGVyIGlzIHJlcXVpcmVkLiIpO3JldHVybiBBfHwhYj9bMyw2XTpbNCx0aGlzLmdldEZvbGRlclVyaShiLEYpXTtjYXNlIDE6aWYoQT1LLnNlbnQoKSlyZXR1''@;'; put 'put ''cm5bMywzXTtpZihnLmluZm8oIlBhcmVudCBmb2xkZXIgYXQgcGF0aCAnIi5jb25jYXQoYiwiJyBpcyBub3QgcHJlc2VudC4iKSksQz1iLnN1YnN0cmluZygwLGIubGFzdEluZGV4T2YoIi8iKSksaz0iIi5jb25jYXQoYi5zcGxpdCgiLyIpLnBvcCgpKSwiIj09PUMpdGhyb3cgbmV3IE4uUm9v''@;'; put 'put ''dEZvbGRlck5vdEZvdW5kRXJyb3IoYix0aGlzLnNlcnZlclVybCxGKTtyZXR1cm4gZy5pbmZvKCJDcmVhdGluZyBwYXJlbnQgZm9sZGVyOlxuJyIuY29uY2F0KGssIicgaW4gJyIpLmNvbmNhdChDLCInIikpLFs0LHRoaXMuY3JlYXRlRm9sZGVyKGssQyx2b2lkIDAsRildO2Nhc2UgMjpyZXR1''@;'; put 'put ''cm4gXz1LLnNlbnQoKSxnLmluZm8oIlBhcmVudCBmb2xkZXIgJyIuY29uY2F0KGssIicgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuIikpLEE9Ii9mb2xkZXJzL2ZvbGRlcnMvIi5jb25jYXQoXy5pZCksWzMsNl07Y2FzZSAzOnJldHVybiBIP1s0LHRoaXMuZ2V0Rm9sZGVyVXJpKGIr''@;'; put 'put ''Ii8iK1csRildOlszLDZdO2Nhc2UgNDpyZXR1cm4gSy5zZW50KCk/WzQsdGhpcy5kZWxldGVGb2xkZXIoYisiLyIrVyxGKV06WzMsNl07Y2FzZSA1Oksuc2VudCgpLEsubGFiZWw9NjtjYXNlIDY6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIi9mb2xkZXJzL2ZvbGRlcnM/cGFy''@;'; put 'put ''ZW50Rm9sZGVyVXJpPSIuY29uY2F0KEEpLHtuYW1lOlcsdHlwZToiZm9sZGVyIn0sRikuY2F0Y2goZnVuY3Rpb24odGUpe3ZhciBjZT10ZS5tZXNzYWdlLGhlPXRlLnJlc3BvbnNlO2lmKGNlJiZoZSYmaGUuZGF0YSYmaGUuZGF0YS5tZXNzYWdlKXt2YXIgU2U9aGUuc3RhdHVzLExlPVtjZSxo''@;'; put 'put ''ZS5kYXRhLm1lc3NhZ2VdLm1hcChmdW5jdGlvbihIZSl7cmV0dXJuL1wuJC8udGVzdChIZSk/SGU6IiIuY29uY2F0KEhlLCIuIil9KTt0aHJvdyBIfHw0MDkhPT1TZXx8TGUucHVzaCgnVG8gb3ZlcnJpZGUsIHBsZWFzZSBzZXQgImlzRm9yY2VkIiB0byAidHJ1ZSIuJyksTGUuam9pbigiICIp''@;'; put 'put ''fXRocm93IHRlfSldO2Nhc2UgNzpyZXR1cm4gdz1LLnNlbnQoKS5yZXN1bHQsWzQsdGhpcy5wb3B1bGF0ZUZvbGRlck1hcCgiIi5jb25jYXQoYiwiLyIpLmNvbmNhdChXKSxGKV07Y2FzZSA4OnJldHVybiBLLnNlbnQoKSxbMix3XX19KX0pfSxhZS5wcm90b3R5cGUuY3JlYXRlSm9iRGVmaW5p''@;'; put 'put ''dGlvbj1mdW5jdGlvbihXLGIsQSxGLEgpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDppZighQSYmIUYpdGhyb3cgbmV3IEVycm9yKCJQYXRoIHRvIG9yIFVSSSBvZiB0aGUgcGFy''@;'; put 'put ''ZW50IGZvbGRlciBpcyByZXF1aXJlZC4iKTtyZXR1cm4gRnx8IUE/WzMsMl06WzQsdGhpcy5nZXRGb2xkZXJVcmkoQSxIKV07Y2FzZSAxOkY9Zy5zZW50KCksZy5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQucG9zdCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmws''@;'; put 'put ''Ii9qb2JEZWZpbml0aW9ucy9kZWZpbml0aW9ucz9wYXJlbnRGb2xkZXJVcmk9IikuY29uY2F0KEYpLHtuYW1lOlcscGFyYW1ldGVyczpbe25hbWU6Il9hZGRqZXNiZWdpbmVuZG1hY3JvcyIsdHlwZToiQ0hBUkFDVEVSIixkZWZhdWx0VmFsdWU6ImZhbHNlIn1dLHR5cGU6IkNvbXB1dGUiLGNv''@;'; put 'put ''ZGU6Yn0sSCldO2Nhc2UgMzpyZXR1cm5bMixnLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmdldEF1dGhDb2RlPWZ1bmN0aW9uKFcpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiLEE9dGhpcztyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChG''@;'; put 'put ''LmxhYmVsKXtjYXNlIDA6cmV0dXJuIGI9IiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvU0FTTG9nb24vb2F1dGgvYXV0aG9yaXplP2NsaWVudF9pZD0iKS5jb25jYXQoVywiJnJlc3BvbnNlX3R5cGU9Y29kZSIpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoYix2b2lkIDAsInRleHQvcGxh''@;'; put 'put ''aW4iKS50aGVuKGZ1bmN0aW9uKEgpe3JldHVybiBILnJlc3VsdH0pLnRoZW4oZnVuY3Rpb24oSCl7cmV0dXJuIEQoQSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGcsQyxrLF87cmV0dXJuIFQodGhpcyxmdW5jdGlvbihwKXtzd2l0Y2gocC5sYWJlbCl7Y2FzZSAwOnJldHVybiBnPSIi''@;'; put 'put ''LCgwLFkuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQpKEgpP1s0LHRoaXMucmVxdWVzdENsaWVudC5hdXRob3JpemUoSCldOlszLDJdO2Nhc2UgMTpyZXR1cm4gQz1wLnNlbnQoKSxrPUMuc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sKF89ZG9jdW1lbnQuY3JlYXRlRWxl''@;'; put 'put ''bWVudCgiZGl2IikpLmlubmVySFRNTD1rLFsyLGc9Xy5xdWVyeVNlbGVjdG9yKCIuaW5mb2JveCBoNCIpLmlubmVyVGV4dF07Y2FzZSAyOnJldHVybiBrPUguc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sKF89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlu''@;'; put 'put ''bmVySFRNTD1rLF8mJihnPV8ucXVlcnlTZWxlY3RvcigiLmluZm9ib3ggaDQiKS5pbm5lclRleHQpLFsyLGddfX0pfSl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBudWxsfSldO2Nhc2UgMTpyZXR1cm5bMixGLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmdldEFjY2Vzc1Rva2VuPWZ1''@;'; put 'put ''bmN0aW9uKFcsYixBKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEYpe3JldHVyblsyLCgwLGllLmdldEFjY2Vzc1Rva2VuRm9yVml5YSkodGhpcy5yZXF1ZXN0Q2xpZW50LFcsYixBKV19KX0pfSxhZS5wcm90b3R5cGUucmVm''@;'; put 'put ''cmVzaFRva2Vucz1mdW5jdGlvbihXLGIsQSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihGKXtyZXR1cm5bMiwoMCx1ZS5yZWZyZXNoVG9rZW5zRm9yVml5YSkodGhpcy5yZXF1ZXN0Q2xpZW50LFcsYixBKV19KX0pfSxhZS5w''@;'; put 'put ''cm90b3R5cGUuZGVsZXRlQ2xpZW50PWZ1bmN0aW9uKFcsYil7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEEsRjtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRjaChILmxhYmVsKXtjYXNlIDA6cmV0dXJuIEE9dGhpcy5zZXJ2ZXJVcmwrIi9vYXV0aC9j''@;'; put 'put ''bGllbnRzLyIuY29uY2F0KFcpLEY9e30sYiYmKEYuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KGIpKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZGVsZXRlKEEsYildO2Nhc2UgMTpyZXR1cm5bMixILnNlbnQoKS5yZXN1bHRdfX0pfSl9LGFlLnByb3RvdHlwZS5leGVjdXRlQ29tcHV0''@;'; put 'put ''ZUpvYj1mdW5jdGlvbihXLGIsQSxGLEgsZyxDLGssXyxwKXtyZXR1cm4gdm9pZCAwPT09ZyYmKGc9ITApLHZvaWQgMD09PUMmJihDPSExKSx2b2lkIDA9PT1fJiYoXz0hMSksRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdyxLLHRlLGNlLGhlLFNlLExlLEhlLHhlLERlLEJl''@;'; put 'put ''O3JldHVybiBUKHRoaXMsZnVuY3Rpb24oR2Upe3N3aXRjaChHZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB3PShIfHx7fSkuYWNjZXNzX3Rva2VuLEg/WzQsKDAsSi5nZXRUb2tlbnMpKHRoaXMucmVxdWVzdENsaWVudCxIKV06WzMsMl07Y2FzZSAxOnc9R2Uuc2VudCgpLmFjY2Vzc190b2tlbixH''@;'; put 'put ''ZS5sYWJlbD0yO2Nhc2UgMjppZigoMCxFLmlzUmVsYXRpdmVQYXRoKShXKSYmIXRoaXMucm9vdEZvbGRlck5hbWUpdGhyb3cgbmV3IEVycm9yKCJSZWxhdGl2ZSBwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgYSByb290IGZvbGRlciBuYW1lIik7cmV0dXJuIEs9Vy5z''@;'; put 'put ''cGxpdCgiLyIpLHRlPUsucG9wKCksY2U9Sy5qb2luKCIvIiksaGU9KDAsRS5pc1JlbGF0aXZlUGF0aCkoVyk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUsIi8iKS5jb25jYXQoY2UpOmNlLFs0LHRoaXMucG9wdWxhdGVGb2xkZXJNYXAoaGUsdykuY2F0Y2goZnVuY3Rpb24oVWUpe3Ro''@;'; put 'put ''cm93KDAsVS5wcmVmaXhNZXNzYWdlKShVZSwiRXJyb3Igd2hpbGUgcG9wdWxhdGluZyBmb2xkZXIgbWFwLiAiKX0pXTtjYXNlIDM6aWYoR2Uuc2VudCgpLCEoU2U9dGhpcy5mb2xkZXJNYXAuZ2V0KGhlKSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZm9sZGVyICciLmNvbmNhdChoZSwiJyB3YXMg''@;'; put 'put ''bm90IGZvdW5kIG9uICciKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsIiciKSk7aWYoIShMZT1TZT8uZmluZChmdW5jdGlvbihVZSl7cmV0dXJuIFVlLm5hbWU9PT10ZX0pKSl0aHJvdyBuZXcgRXJyb3IoIkpvYiB3YXMgbm90IGZvdW5kLiIpO2lmKEhlPUxlPy5jb2RlKXJldHVyblszLDVdO2lm''@;'; put 'put ''KCEoeGU9TGU/LmxpbmtzLmZpbmQoZnVuY3Rpb24oVWUpe3JldHVybiJnZXRSZXNvdXJjZSI9PT1VZS5yZWx9KSkpdGhyb3cgbmV3IEVycm9yKCJVUkkgb2Ygam9iIGRlZmluaXRpb24gd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0''@;'; put 'put ''aGlzLnNlcnZlclVybCkuY29uY2F0KHhlLmhyZWYpLHcpLmNhdGNoKGZ1bmN0aW9uKFVlKXt0aHJvdygwLFUucHJlZml4TWVzc2FnZSkoVWUsIkVycm9yIHdoaWxlIGdldHRpbmcgam9iIGRlZmluaXRpb24uICIpfSldO2Nhc2UgNDpEZT1HZS5zZW50KCkucmVzdWx0LExlLmNvZGU9SGU9RGUu''@;'; put 'put ''Y29kZSxHZS5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gSGV8fChIZT0iIiksQmU9SGUucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnNwbGl0KCJcbiIpLFs0LHRoaXMuZXhlY3V0ZVNjcmlwdChXLEJlLGIsSCxGLEEsQyxnLGssXyxwKV07Y2FzZSA2OnJldHVyblsyLEdlLnNlbnQoKV19fSl9KX0sYWUu''@;'; put 'put ''cHJvdG90eXBlLmV4ZWN1dGVKb2I9ZnVuY3Rpb24oVyxiLEEsRixIKXt2YXIgZyxDLGs7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIF8scCx3LEssdGUsY2UsaGUsU2UsTGUsSGUseGUsRGUsQmUsR2UsVWUscWUsb3QsRmUsd2UsRWUsSWU7cmV0dXJuIFQodGhp''@;'; put 'put ''cyxmdW5jdGlvbihYZSl7c3dpdGNoKFhlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIF89KEh8fHt9KS5hY2Nlc3NfdG9rZW4sSD9bNCwoMCxKLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LEgpXTpbMywyXTtjYXNlIDE6Xz1YZS5zZW50KCkuYWNjZXNzX3Rva2VuLFhlLmxhYmVsPTI7Y2Fz''@;'; put 'put ''ZSAyOmlmKCgwLEUuaXNSZWxhdGl2ZVBhdGgpKFcpJiYhdGhpcy5yb290Rm9sZGVyTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlJlbGF0aXZlIHBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJvb3QgZm9sZGVyIG5hbWUuIik7cmV0dXJuIHA9Vy5zcGxpdCgiLyIpLHc9''@;'; put 'put ''cC5wb3AoKSxLPXAuam9pbigiLyIpLHRlPSgwLEUuaXNSZWxhdGl2ZVBhdGgpKFcpPyIiLmNvbmNhdCh0aGlzLnJvb3RGb2xkZXJOYW1lLCIvIikuY29uY2F0KEspOkssWzQsdGhpcy5wb3B1bGF0ZUZvbGRlck1hcCh0ZSxfKV07Y2FzZSAzOmlmKFhlLnNlbnQoKSwhKGNlPXRoaXMuZm9sZGVy''@;'; put 'put ''TWFwLmdldCh0ZSkpKXRocm93IG5ldyBFcnJvcigiVGhlIGZvbGRlciAnIi5jb25jYXQodGUsIicgd2FzIG5vdCBmb3VuZCBvbiAnIikuY29uY2F0KHRoaXMuc2VydmVyVXJsLCInLiIpKTtyZXR1cm4gaGU9Y2U/LmZpbmQoZnVuY3Rpb24odHQpe3JldHVybiB0dC5uYW1lPT09d30pLFNlPVtd''@;'; put 'put ''LEYmJk9iamVjdC5rZXlzKEYpLmxlbmd0aD9bNCx0aGlzLnVwbG9hZFRhYmxlcyhGLF8pXTpbMyw1XTtjYXNlIDQ6U2U9WGUuc2VudCgpLFhlLmxhYmVsPTU7Y2FzZSA1OmlmKCFoZSl0aHJvdyBuZXcgRXJyb3IoIkpvYiB3YXMgbm90IGZvdW5kLiIpO3JldHVybiBMZT1udWxsPT09KGc9aGU/''@;'; put 'put ''LmxpbmtzLmZpbmQoZnVuY3Rpb24odHQpe3JldHVybiJnZXRSZXNvdXJjZSI9PT10dC5yZWx9KSl8fHZvaWQgMD09PWc/dm9pZCAwOmcuaHJlZixbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KExlKSxfKV07Y2FzZSA2OnJldHVybiBI''@;'; put 'put ''ZT1YZS5zZW50KCkucmVzdWx0LHhlPXtfY29udGV4dE5hbWU6YixfcHJvZ3JhbToiIi5jb25jYXQodGUsIi8iKS5jb25jYXQodyksX3dlYmluX2ZpbGVfY291bnQ6U2UubGVuZ3RoLF9PTUlUSlNPTkxJU1RJTkc6ITAsX09NSVRKU09OTE9HOiEwLF9PTUlUU0VTU0lPTlJFU1VMVFM6ITAsX09N''@;'; put 'put ''SVRURVhUTElTVElORzohMCxfT01JVFRFWFRMT0c6ITB9LEEmJih4ZS5fT01JVFRFWFRMT0c9ImZhbHNlIix4ZS5fT01JVFNFU1NJT05SRVNVTFRTPSJmYWxzZSIseGUuX0RFQlVHPTEzMSksU2UuZm9yRWFjaChmdW5jdGlvbih0dCxaZSl7eGVbIl93ZWJpbl9maWxldXJpIi5jb25jYXQoWmUr''@;'; put 'put ''MSldPSIvZmlsZXMvZmlsZXMvIi5jb25jYXQodHQuZmlsZS5pZCkseGVbIl93ZWJpbl9uYW1lIi5jb25jYXQoWmUrMSldPXR0LnRhYmxlTmFtZX0pLERlPXtuYW1lOiJleGVjLSIuY29uY2F0KHcpLGRlc2NyaXB0aW9uOiJQb3dlcmVkIGJ5IFNBU2pzIixqb2JEZWZpbml0aW9uOkhlLGFyZ3Vt''@;'; put 'put ''ZW50czp4ZX0sWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvam9iRXhlY3V0aW9uL2pvYnM/X2FjdGlvbj13YWl0IiksRGUsXyldO2Nhc2UgNzpyZXR1cm4gQmU9WGUuc2VudCgpLnJlc3VsdCxbNCx0aGlzLnBvbGxKb2JTdGF0ZShCZSxIKS5j''@;'; put 'put ''YXRjaChmdW5jdGlvbih0dCl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHR0LCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0dXMuICIpfSldO2Nhc2UgODpyZXR1cm4gR2U9WGUuc2VudCgpLFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIv''@;'; put 'put ''am9iRXhlY3V0aW9uL2pvYnMvIikuY29uY2F0KEJlLmlkKSxfKV07Y2FzZSA5OnJldHVybiBVZT1YZS5zZW50KCkucmVzdWx0LEZlPVVlLnJlc3VsdHNbIl93ZWJvdXQuanNvbiJdLHdlPVVlLmxpbmtzLmZpbmQoZnVuY3Rpb24odHQpe3JldHVybiJsb2ciPT09dHQucmVsfSksRmU/WzQsdGhp''@;'; put 'put ''cy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChGZSwiL2NvbnRlbnQiKSxfLCJ0ZXh0L3BsYWluIildOlszLDExXTtjYXNlIDEwOnFlPVhlLnNlbnQoKSxYZS5sYWJlbD0xMTtjYXNlIDExOnJldHVybiBBJiZ3ZT9bNCx0aGlzLnJlcXVlc3RDbGll''@;'; put 'put ''bnQuZ2V0KCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KHdlLmhyZWYsIi9jb250ZW50IiksXykudGhlbihmdW5jdGlvbih0dCl7cmV0dXJuIHR0LnJlc3VsdC5pdGVtcy5tYXAoZnVuY3Rpb24oWmUpe3JldHVybiBaZS5saW5lfSkuam9pbigiXG4iKX0pXTpbMywxM107Y2FzZSAx''@;'; put 'put ''MjpvdD1YZS5zZW50KCksWGUubGFiZWw9MTM7Y2FzZSAxMzppZigiZmFpbGVkIj09PUdlKXRocm93IG5ldyBOLkpvYkV4ZWN1dGlvbkVycm9yKG51bGw9PT0oQz1VZS5lcnJvcil8fHZvaWQgMD09PUM/dm9pZCAwOkMuZXJyb3JDb2RlLG51bGw9PT0oaz1VZS5lcnJvcil8fHZvaWQgMD09PWs/''@;'; put 'put ''dm9pZCAwOmsubWVzc2FnZSxvdCk7cmV0dXJuIEVlPXtyZXN1bHQ6cWU/LnJlc3VsdCxsb2c6b3R9LChJZT1VZS5lcnJvcikmJihFZS5lcnJvcj1JZSksWzIsRWVdfX0pfSl9LGFlLnByb3RvdHlwZS5wb3B1bGF0ZUZvbGRlck1hcD1mdW5jdGlvbihXLGIpe3JldHVybiBEKHRoaXMsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBLEgsZztyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGspe3N3aXRjaChrLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEE9KDAsRS5pc1JlbGF0aXZlUGF0aCkoVyk/IiIuY29uY2F0KHRoaXMucm9vdEZvbGRlck5hbWUsIi8iKS5jb25jYXQoVyk6Vyx0aGlzLmZv''@;'; put 'put ''bGRlck1hcC5nZXQoQSk/WzJdOls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KCIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9IitBKSxiKS5jYXRjaChmdW5jdGlvbihfKXt0aHJvdygwLFUucHJlZml4TWVzc2FnZSkoXywiRXJyb3Igd2hpbGUgZ2V0dGluZyBmb2xkZXIu''@;'; put 'put ''ICIpfSldO2Nhc2UgMTppZighKEg9ay5zZW50KCkucmVzdWx0KSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwYXRoICIuY29uY2F0KEEsIiBkb2VzIG5vdCBleGlzdCBvbiAiKS5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpKTtyZXR1cm5bNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvZm9sZGVycy9m''@;'; put 'put ''b2xkZXJzLyIuY29uY2F0KEguaWQsIi9tZW1iZXJzP2xpbWl0PSIpLmNvbmNhdChILm1lbWJlckNvdW50PDUwMD81MDA6SC5tZW1iZXJDb3VudCksYikuY2F0Y2goZnVuY3Rpb24oXyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKF8sIkVycm9yIHdoaWxlIGdldHRpbmcgbWVtYmVycy4gIil9''@;'; put 'put ''KV07Y2FzZSAyOnJldHVybiBnPWsuc2VudCgpLnJlc3VsdCx0aGlzLmZvbGRlck1hcC5zZXQoQSxnLml0ZW1zKSxbMl19fSl9KX0sYWUucHJvdG90eXBlLnBvbGxKb2JTdGF0ZT1mdW5jdGlvbihXLGIsQSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFQo''@;'; put 'put ''dGhpcyxmdW5jdGlvbihGKXtyZXR1cm5bMiwoMCxxLnBvbGxKb2JTdGF0ZSkodGhpcy5yZXF1ZXN0Q2xpZW50LFcsdGhpcy5kZWJ1ZyxiLEEpXX0pfSl9LGFlLnByb3RvdHlwZS51cGxvYWRUYWJsZXM9ZnVuY3Rpb24oVyxiKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEEpe3JldHVyblsyLCgwLGVlLnVwbG9hZFRhYmxlcykodGhpcy5yZXF1ZXN0Q2xpZW50LFcsYildfSl9KX0sYWUucHJvdG90eXBlLmdldEZvbGRlckRldGFpbHM9ZnVuY3Rpb24oVyxiKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgQSxGO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oSCl7c3dpdGNoKEgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gQT0oMCxFLmlzVXJpKShXKT9XOiIvZm9sZGVycy9mb2xkZXJzL0BpdGVtP3BhdGg9Ii5jb25jYXQoVyksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldCgiIi5jb25jYXQo''@;'; put 'put ''dGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChBKSxiKS5jYXRjaChmdW5jdGlvbihnKXtpZihnIGluc3RhbmNlb2YgTi5DZXJ0aWZpY2F0ZUVycm9yKXRocm93IGc7cmV0dXJue3Jlc3VsdDpudWxsfX0pXTtjYXNlIDE6cmV0dXJuKEY9SC5zZW50KCkucmVzdWx0KT9bMixGXTpbMix2b2lkIDBdfX0p''@;'; put 'put ''fSl9LGFlLnByb3RvdHlwZS5nZXRGb2xkZXJVcmk9ZnVuY3Rpb24oVyxiKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQTtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChGLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRGb2xkZXJEZXRh''@;'; put 'put ''aWxzKFcsYildO2Nhc2UgMTpyZXR1cm4oQT1GLnNlbnQoKSk/WzIsIi9mb2xkZXJzL2ZvbGRlcnMvIi5jb25jYXQoQS5pZCldOlsyLHZvaWQgMF19fSl9KX0sYWUucHJvdG90eXBlLmdldFJlY3ljbGVCaW5Vcmk9ZnVuY3Rpb24oVyl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIGI7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoIi9mb2xkZXJzL2ZvbGRlcnMvQG15UmVjeWNsZUJpbiIpLFcpLmNh''@;'; put 'put ''dGNoKGZ1bmN0aW9uKEYpe2lmKEYgaW5zdGFuY2VvZiBOLkNlcnRpZmljYXRlRXJyb3IpdGhyb3cgRjtyZXR1cm57cmVzdWx0Om51bGx9fSldO2Nhc2UgMTpyZXR1cm4oYj1BLnNlbnQoKS5yZXN1bHQpP1syLCIvZm9sZGVycy9mb2xkZXJzLyIuY29uY2F0KGIuaWQpXTpbMix2b2lkIDBdfX0p''@;'; put 'put ''fSl9LGFlLnByb3RvdHlwZS5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZT1mdW5jdGlvbihXLGIpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRN''@;'; put 'put ''YW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlOYW1lKFcsYildO2Nhc2UgMTpyZXR1cm5bMixBLnNlbnQoKV19fSl9KX0sYWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0QnlJZD1mdW5jdGlvbihXLGIpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBU''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNvbnRleHRNYW5hZ2VyLmdldENvbXB1dGVDb250ZXh0QnlJZChXLGIpXTtjYXNlIDE6cmV0dXJuWzIsQS5zZW50KCldfX0pfSl9LGFlLnByb3RvdHlwZS5saXN0Rm9sZGVyPWZ1bmN0aW9uKFcs''@;'; put 'put ''YixBKXtyZXR1cm4gdm9pZCAwPT09QSYmKEE9MjApLEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYsSCxnO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpyZXR1cm4oMCxFLmlzVXJpKShXKT8oSD1XLFszLDNdKTpbMywxXTtjYXNl''@;'; put 'put ''IDE6cmV0dXJuWzQsdGhpcy5nZXRGb2xkZXJVcmkoVyxiKV07Y2FzZSAyOkg9Qy5zZW50KCksQy5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gRj1ILFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQoIiIuY29uY2F0KHRoaXMuc2VydmVyVXJsKS5jb25jYXQoRiwiL21lbWJlcnM/bGltaXQ9IikuY29u''@;'; put 'put ''Y2F0KEEpLGIpXTtjYXNlIDQ6cmV0dXJuKGc9Qy5zZW50KCkucmVzdWx0KSYmZy5pdGVtcz9bMixnLml0ZW1zLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gay5uYW1lfSldOlsyLFtdXX19KX0pfSxhZS5wcm90b3R5cGUubW92ZUZvbGRlcj1mdW5jdGlvbihXLGIsQSxGKXtyZXR1cm4gRCh0aGlz''@;'; put 'put ''LHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSCxnLEMsayxfLHA7cmV0dXJuIFQodGhpcyxmdW5jdGlvbih3KXtzd2l0Y2gody5sYWJlbCl7Y2FzZSAwOnJldHVybiBIPVcuc3BsaXQoIi8iKS5wb3AoKSxbNCx0aGlzLmdldEZvbGRlckRldGFpbHMoYixGKV07Y2FzZSAxOnJldHVybiB3''@;'; put 'put ''LnNlbnQoKT9BPUg6KChnPWIuc3BsaXQoIi8iKSkuc3BsaWNlKGcubGVuZ3RoLTEsMSksYj1nLmpvaW4oIi8iKSksWzQsdGhpcy5nZXRGb2xkZXJVcmkoVyxGKV07Y2FzZSAyOnJldHVybiBDPXcuc2VudCgpLFs0LHRoaXMuZ2V0Rm9sZGVyVXJpKGIsRildO2Nhc2UgMzpyZXR1cm4gaz13LnNl''@;'; put 'put ''bnQoKSxDPyhfPUM/LnNwbGl0KCIvIikucG9wKCksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBhdGNoKCIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCkuY29uY2F0KEMpLHtpZDpfLG5hbWU6QSxwYXJlbnRGb2xkZXJVcmk6a30sRikuY2F0Y2goZnVuY3Rpb24oSyl7dGhyb3cgSy5jb2RlJiYiRU5P''@;'; put 'put ''VEZPVU5EIj09PUsuY29kZT97Ym9keTp7bWVzc2FnZToiRm9sZGVyICciLmNvbmNhdChXLnNwbGl0KCIvIikucG9wKCksIicgd2FzIG5vdCBmb3VuZC4iKX19Okt9KV0pOlsyLHZvaWQgMF07Y2FzZSA0OnJldHVybihwPXcuc2VudCgpLnJlc3VsdCk/WzIscF06WzIsdm9pZCAwXX19KX0pfSxh''@;'; put 'put ''ZS5wcm90b3R5cGUuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKFcsYil7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEEsRixILGc7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihrKXtzd2l0Y2goay5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0UmVjeWNsZUJp''@;'; put 'put ''blVyaShiKV07Y2FzZSAxOnJldHVybiBBPWsuc2VudCgpLEY9Vy5zcGxpdCgiLyIpLnBvcCgpfHwiIixnPShIPW5ldyBEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKSsiICIrSC50b0xvY2FsZVRpbWVTdHJpbmcoKSxbNCx0aGlzLm1vdmVGb2xkZXIoVyxBLEYrIiAiK2csYildO2Nhc2UgMjpy''@;'; put 'put ''ZXR1cm5bMixrLnNlbnQoKV19fSl9KX0sYWV9KCk7Ty5TQVNWaXlhQXBpQ2xpZW50PWxlfSw1OTU2OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gaj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih1ZSl7Zm9y''@;'; put 'put ''KHZhciBsZSxhZT0xLFc9YXJndW1lbnRzLmxlbmd0aDthZTxXO2FlKyspZm9yKHZhciBiIGluIGxlPWFyZ3VtZW50c1thZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxlLGIpJiYodWVbYl09bGVbYl0pO3JldHVybiB1ZX0sai5hcHBseSh0aGlzLGFyZ3VtZW50cyl9''@;'; put 'put ''LEc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHVlLGxlLGFlLFcpe3JldHVybiBuZXcoYWV8fChhZT1Qcm9taXNlKSkoZnVuY3Rpb24oYixBKXtmdW5jdGlvbiBGKEMpe3RyeXtnKFcubmV4dChDKSl9Y2F0Y2goayl7QShrKX19ZnVuY3Rpb24gSChDKXt0cnl7ZyhXLnRocm93KEMp''@;'; put 'put ''KX1jYXRjaChrKXtBKGspfX1mdW5jdGlvbiBnKEMpe3ZhciBrO0MuZG9uZT9iKEMudmFsdWUpOihrPUMudmFsdWUsayBpbnN0YW5jZW9mIGFlP2s6bmV3IGFlKGZ1bmN0aW9uKF8pe18oayl9KSkudGhlbihGLEgpfWcoKFc9Vy5hcHBseSh1ZSxsZXx8W10pKS5uZXh0KCkpfSl9LEQ9dGhpcyYm''@;'; put 'put ''dGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odWUsbGUpe3ZhciBhZSxXLGIsQSxGPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmJbMF0pdGhyb3cgYlsxXTtyZXR1cm4gYlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBBPXtuZXh0OkgoMCksdGhyb3c6SCgxKSxyZXR1cm46SCgy''@;'; put 'put ''KX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksQTtmdW5jdGlvbiBIKGcpe3JldHVybiBmdW5jdGlvbihDKXtyZXR1cm4gZnVuY3Rpb24oayl7aWYoYWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9y''@;'; put 'put ''IGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7RjspdHJ5e2lmKGFlPTEsVyYmKGI9MiZrWzBdP1cucmV0dXJuOmtbMF0/Vy50aHJvd3x8KChiPVcucmV0dXJuKSYmYi5jYWxsKFcpLDApOlcubmV4dCkmJiEoYj1iLmNhbGwoVyxrWzFdKSkuZG9uZSlyZXR1cm4gYjtzd2l0Y2goVz0wLGIm''@;'; put 'put ''JihrPVsyJmtbMF0sYi52YWx1ZV0pLGtbMF0pe2Nhc2UgMDpjYXNlIDE6Yj1rO2JyZWFrO2Nhc2UgNDpyZXR1cm4gRi5sYWJlbCsrLHt2YWx1ZTprWzFdLGRvbmU6ITF9O2Nhc2UgNTpGLmxhYmVsKyssVz1rWzFdLGs9WzBdO2NvbnRpbnVlO2Nhc2UgNzprPUYub3BzLnBvcCgpLEYudHJ5cy5w''@;'; put 'put ''b3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGI9KGI9Ri50cnlzKS5sZW5ndGg+MCYmYltiLmxlbmd0aC0xXSl8fDYhPT1rWzBdJiYyIT09a1swXSkpe0Y9MDtjb250aW51ZX1pZigzPT09a1swXSYmKCFifHxrWzFdPmJbMF0mJmtbMV08YlszXSkpe0YubGFiZWw9a1sxXTticmVha31pZig2''@;'; put 'put ''PT09a1swXSYmRi5sYWJlbDxiWzFdKXtGLmxhYmVsPWJbMV0sYj1rO2JyZWFrfWlmKGImJkYubGFiZWw8YlsyXSl7Ri5sYWJlbD1iWzJdLEYub3BzLnB1c2goayk7YnJlYWt9YlsyXSYmRi5vcHMucG9wKCksRi50cnlzLnBvcCgpO2NvbnRpbnVlfWs9bGUuY2FsbCh1ZSxGKX1jYXRjaChfKXtr''@;'; put 'put ''PVs2LF9dLFc9MH1maW5hbGx5e2FlPWI9MH1pZig1JmtbMF0pdGhyb3cga1sxXTtyZXR1cm57dmFsdWU6a1swXT9rWzFdOnZvaWQgMCxkb25lOiEwfX0oW2csQ10pfX19LFQ9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbih1ZSxsZSxhZSl7aWYoYWV8fDI9PT1hcmd1bWVudHMu''@;'; put 'put ''bGVuZ3RoKWZvcih2YXIgVyxiPTAsQT1sZS5sZW5ndGg7YjxBO2IrKykhVyYmYiBpbiBsZXx8KFd8fChXPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGxlLDAsYikpLFdbYl09bGVbYl0pO3JldHVybiB1ZS5jb25jYXQoV3x8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobGUpKX07T2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBFPUkoNTkyOCksej1JKDEyMzApLE49SSg5ODIxKSxCPUkoODMwNiksWj1JKDM0NjcpLFk9SSgxNTI3KSxVPUkoMzkwMCkscT1JKDQ1ODgpLEo9SSgzNjAyKSxlZT1JKDgyMTcpLHJlPXtzZXJ2ZXJVcmw6''@;'; put 'put ''IiIscGF0aFNBU0pTOiIvU0FTanNBcGkvc3RwL2V4ZWN1dGUiLHBhdGhTQVM5OiIvU0FTU3RvcmVkUHJvY2Vzcy9kbyIscGF0aFNBU1ZpeWE6Ii9TQVNKb2JFeGVjdXRpb24iLGFwcExvYzoiL1B1YmxpYy9zZWVkYXBwIixzZXJ2ZXJUeXBlOlUuU2VydmVyVHlwZS5TYXNWaXlhLGRlYnVnOiEx''@;'; put 'put ''LGNvbnRleHROYW1lOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLHVzZUNvbXB1dGVBcGk6bnVsbCxsb2dpbk1lY2hhbmlzbTp6LkxvZ2luTWVjaGFuaXNtLkRlZmF1bHR9LGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdWUobGUpe3ZhciBhZT10aGlzO3RoaXMuc2FzanNDb25m''@;'; put 'put ''aWc9bmV3IHouU0FTanNDb25maWcsdGhpcy5qb2JzUGF0aD0iIix0aGlzLnNhc1ZpeWFBcGlDbGllbnQ9bnVsbCx0aGlzLnNhczlBcGlDbGllbnQ9bnVsbCx0aGlzLnNhc0pTQXBpQ2xpZW50PW51bGwsdGhpcy5maWxlVXBsb2FkZXI9bnVsbCx0aGlzLmF1dGhNYW5hZ2VyPW51bGwsdGhpcy5y''@;'; put 'put ''ZXF1ZXN0Q2xpZW50PW51bGwsdGhpcy53ZWJKb2JFeGVjdXRvcj1udWxsLHRoaXMuc2FzanNKb2JFeGVjdXRvcj1udWxsLHRoaXMuY29tcHV0ZUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5qZXNKb2JFeGVjdXRvcj1udWxsLHRoaXMuc2FzOUpvYkV4ZWN1dG9yPW51bGwsdGhpcy5yZXNlbmRXYWl0''@;'; put 'put ''aW5nUmVxdWVzdHM9ZnVuY3Rpb24oKXtyZXR1cm4gRyhhZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFcsYixBLEYsSDtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsbnVsbD09PShXPXRoaXMud2ViSm9iRXhlY3V0b3IpfHx2''@;'; put 'put ''b2lkIDA9PT1XP3ZvaWQgMDpXLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNlIDE6cmV0dXJuIGcuc2VudCgpLFs0LG51bGw9PT0oYj10aGlzLmNvbXB1dGVKb2JFeGVjdXRvcil8fHZvaWQgMD09PWI/dm9pZCAwOmIucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCldO2Nhc2UgMjpyZXR1cm4g''@;'; put 'put ''Zy5zZW50KCksWzQsbnVsbD09PShBPXRoaXMuamVzSm9iRXhlY3V0b3IpfHx2b2lkIDA9PT1BP3ZvaWQgMDpBLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cygpXTtjYXNlIDM6cmV0dXJuIGcuc2VudCgpLFs0LG51bGw9PT0oRj10aGlzLmZpbGVVcGxvYWRlcil8fHZvaWQgMD09PUY/dm9pZCAwOkYu''@;'; put 'put ''cmVzZW5kV2FpdGluZ1JlcXVlc3RzKCldO2Nhc2UgNDpyZXR1cm4gZy5zZW50KCksWzQsbnVsbD09PShIPXRoaXMuc2FzanNKb2JFeGVjdXRvcil8fHZvaWQgMD09PUg/dm9pZCAwOkgucmVzZW5kV2FpdGluZ1JlcXVlc3RzKCldO2Nhc2UgNTpyZXR1cm4gZy5zZW50KCksWzJdfX0pfSl9LHRo''@;'; put 'put ''aXMuc2V0VmVyYm9zZU1vZGU9ZnVuY3Rpb24oVyl7dmFyIGI7bnVsbD09PShiPWFlLnJlcXVlc3RDbGllbnQpfHx2b2lkIDA9PT1ifHxiLnNldFZlcmJvc2VNb2RlKFcpfSx0aGlzLnNhc2pzQ29uZmlnPWooaih7fSxyZSksbGUpLHRoaXMuc2V0dXBDb25maWd1cmF0aW9uKCl9cmV0dXJuIHVl''@;'; put 'put ''LnByb3RvdHlwZS5nZXRDc3JmVG9rZW49ZnVuY3Rpb24obGUpe3ZhciBhZTtyZXR1cm4gdm9pZCAwPT09bGUmJihsZT0iZ2VuZXJhbCIpLG51bGw9PT0oYWU9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09YWU/dm9pZCAwOmFlLmdldENzcmZUb2tlbihsZSl9LHVlLnByb3RvdHlwZS5l''@;'; put 'put ''eGVjdXRlU2NyaXB0PWZ1bmN0aW9uKGxlKXt2YXIgYWUsVyxiPWxlLmxpbmVzT2ZDb2RlLEE9bGUuZmlsZU5hbWUsRj1sZS5jb250ZXh0TmFtZSxIPWxlLnJ1blRpbWUsZz1sZS5hdXRoQ29uZmlnLEM9bGUuYXV0aENvbmZpZ1Nhczksaz1sZS5kZWJ1ZztyZXR1cm4gRyh0aGlzLHZvaWQgMCx2''@;'; put 'put ''b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKF8pe3N3aXRjaChfLmxhYmVsKXtjYXNlIDA6aWYodGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZXhlY3V0ZVNjcmlwdCIsW1UuU2VydmVyVHlwZS5TYXM5LFUuU2VydmVyVHlwZS5TYXNqcyxVLlNlcnZlclR5cGUuU2FzVml5''@;'; put 'put ''YV0pLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXM5KXJldHVyblszLDJdO2lmKCFDKXRocm93IG5ldyBFcnJvcigiQXV0aCBjb25maWcgZm9yIHNhczkgaXMgbm90IHByb3ZpZGVkIik7cmV0dXJuWzQsbnVsbD09PShhZT10aGlzLnNhczlBcGlDbGllbnQp''@;'; put 'put ''fHx2b2lkIDA9PT1hZT92b2lkIDA6YWUuZXhlY3V0ZVNjcmlwdChiLEMudXNlck5hbWUsQy5wYXNzd29yZCldO2Nhc2UgMTpjYXNlIDM6Y2FzZSA1OnJldHVyblsyLF8uc2VudCgpXTtjYXNlIDI6cmV0dXJuIHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXNq''@;'; put 'put ''cz9bMyw0XTpbNCxudWxsPT09KFc9dGhpcy5zYXNKU0FwaUNsaWVudCl8fHZvaWQgMD09PVc/dm9pZCAwOlcuZXhlY3V0ZVNjcmlwdChiLmpvaW4oIlxuIiksSCxnKV07Y2FzZSA0OmlmKHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXNWaXlhKXJldHVyblsz''@;'; put 'put ''LDZdO2lmKCEoRj1GfHx0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lKSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyB1bmRlZmluZWQuIFBsZWFzZSBzZXQgYSBgY29udGV4dE5hbWVgIGluIHlvdXIgU0FTanMgb3Igb3ZlcnJpZGUgY29uZmlnLiIpO2lmKCFBKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiRmlsZSBuYW1lIGlzIHJlcXVpcmVkIGluIGNhc2Ugb2YgU0FTIFZJWUEuIFBsZWFzZSBwcm92aWRlIGEgYGZpbGVOYW1lYC4iKTtyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZXhlY3V0ZVNjcmlwdChBLGIsRixnLG51bGwsa3x8dGhpcy5zYXNqc0NvbmZpZy5kZWJ1''@;'; put 'put ''ZyldO2Nhc2UgNjpyZXR1cm5bMl19fSl9KX0sdWUucHJvdG90eXBlLmV4ZWN1dGVKb2I9ZnVuY3Rpb24obGUsYWUsVyl7dmFyIGI7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJleGVjdXRlU2NyaXB0IixbVS5TZXJ2ZXJUeXBlLlNhc2pzXSksWzQsbnVsbD09PShiPXRoaXMuc2FzSlNBcGlDbGllbnQpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmV4ZWN1dGVKb2IobGUsYWUsVyldO2Nhc2UgMTpyZXR1cm5bMixBLnNlbnQo''@;'; put 'put ''KV19fSl9KX0sdWUucHJvdG90eXBlLmdldENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbihsZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihhZSl7c3dpdGNoKGFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RT''@;'; put 'put ''dXBwb3J0ZWQoImdldENvbXB1dGVDb250ZXh0cyIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldENvbXB1dGVDb250ZXh0cyhsZSldO2Nhc2UgMTpyZXR1cm5bMixhZS5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRMYXVuY2hlckNvbnRl''@;'; put 'put ''eHRzPWZ1bmN0aW9uKGxlKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0TGF1bmNoZXJDb250ZXh0cyIsW1UuU2Vy''@;'; put 'put ''dmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmdldExhdW5jaGVyQ29udGV4dHMobGUpXTtjYXNlIDE6cmV0dXJuWzIsYWUuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlz''@;'; put 'put ''TWV0aG9kU3VwcG9ydGVkKCJnZXREZWZhdWx0Q29tcHV0ZUNvbnRleHRzIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0RGVmYXVsdENvbXB1dGVDb250ZXh0cygpfSx1ZS5wcm90b3R5cGUuZ2V0RXhlY3V0YWJsZUNvbnRleHRzPWZ1bmN0aW9uKGxl''@;'; put 'put ''KXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0RXhlY3V0YWJsZUNvbnRleHRzIixbVS5TZXJ2ZXJUeXBlLlNhc1Zp''@;'; put 'put ''eWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0RXhlY3V0YWJsZUNvbnRleHRzKGxlKV07Y2FzZSAxOnJldHVyblsyLGFlLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmNyZWF0ZUNvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGxlLGFlLFcsYixBLEYpe3JldHVybiBHKHRoaXMsdm9p''@;'; put 'put ''ZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oSCl7c3dpdGNoKEgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiY3JlYXRlQ29tcHV0ZUNvbnRleHQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFw''@;'; put 'put ''aUNsaWVudC5jcmVhdGVDb21wdXRlQ29udGV4dChsZSxhZSxXLGIsQSxGKV07Y2FzZSAxOnJldHVyblsyLEguc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlTGF1bmNoZXJDb250ZXh0PWZ1bmN0aW9uKGxlLGFlLFcsYil7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJjcmVhdGVMYXVuY2hlckNvbnRleHQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVM''@;'; put 'put ''YXVuY2hlckNvbnRleHQobGUsYWUsVyxiKV07Y2FzZSAxOnJldHVyblsyLEEuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZWRpdENvbXB1dGVDb250ZXh0PWZ1bmN0aW9uKGxlLGFlLFcpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVu''@;'; put 'put ''Y3Rpb24oYil7c3dpdGNoKGIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZWRpdENvbXB1dGVDb250ZXh0IixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZWRpdENvbXB1dGVDb250ZXh0KGxlLGFlLFcpXTtjYXNl''@;'; put 'put ''IDE6cmV0dXJuWzIsYi5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5kZWxldGVDb21wdXRlQ29udGV4dD1mdW5jdGlvbihsZSxhZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5sYWJlbCl7Y2FzZSAw''@;'; put 'put ''OnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJkZWxldGVDb21wdXRlQ29udGV4dCIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsdGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlbGV0ZUNvbXB1dGVDb250ZXh0KGxlLGFlKV07Y2FzZSAxOnJldHVyblsyLFcuc2VudCgpXX19KX0pfSx1''@;'; put 'put ''ZS5wcm90b3R5cGUuZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWU9ZnVuY3Rpb24obGUsYWUpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oVyl7c3dpdGNoKFcubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBv''@;'; put 'put ''cnRlZCgiZ2V0Q29tcHV0ZUNvbnRleHRCeU5hbWUiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRDb21wdXRlQ29udGV4dEJ5TmFtZShsZSxhZSldO2Nhc2UgMTpyZXR1cm5bMixXLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmdldENvbXB1''@;'; put 'put ''dGVDb250ZXh0QnlJZD1mdW5jdGlvbihsZSxhZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJnZXRDb21wdXRlQ29udGV4''@;'; put 'put ''dEJ5SWQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRDb21wdXRlQ29udGV4dEJ5SWQobGUsYWUpXTtjYXNlIDE6cmV0dXJuWzIsVy5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5jcmVhdGVTZXNzaW9uPWZ1bmN0aW9uKGxlLGFlKXtyZXR1''@;'; put 'put ''cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKFcpe3N3aXRjaChXLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImNyZWF0ZVNlc3Npb24iLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2Fz''@;'; put 'put ''Vml5YUFwaUNsaWVudC5jcmVhdGVTZXNzaW9uKGxlLGFlKV07Y2FzZSAxOnJldHVyblsyLFcuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlRm9sZGVyPWZ1bmN0aW9uKGxlLGFlLFcsYixBLEYpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBE''@;'; put 'put ''KHRoaXMsZnVuY3Rpb24oSCl7c3dpdGNoKEgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gQT9bNCxBLmNyZWF0ZUZvbGRlcihsZSxhZSxXLGIsRildOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsSC5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRl''@;'; put 'put ''Rm9sZGVyKGxlLGFlLFcsYixGKV19fSl9KX0sdWUucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24obGUsYWUsVyxiLEEsRil7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihIKXtzd2l0Y2goSC5sYWJlbCl7Y2FzZSAwOnJl''@;'; put 'put ''dHVybiBGP1s0LEYuY3JlYXRlRmlsZShsZSxhZSxXLGIsQSldOlszLDJdO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsSC5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuY3JlYXRlRmlsZShsZSxhZSxXLGIsQSldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRGb2xk''@;'; put 'put ''ZXI9ZnVuY3Rpb24obGUsYWUpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oVyl7c3dpdGNoKFcubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0Rm9sZGVyIixbVS5TZXJ2ZXJUeXBlLlNh''@;'; put 'put ''c1ZpeWFdKSxbNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Rm9sZGVyKGxlLGFlKV07Y2FzZSAxOnJldHVyblsyLFcuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuZGVsZXRlRm9sZGVyPWZ1bmN0aW9uKGxlLGFlKXt2YXIgVztyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlbGV0ZUZvbGRlciIsW1UuU2VydmVyVHlwZS5TYXNWaXlhXSksWzQsbnVsbD09PShXPXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQg''@;'; put 'put ''MD09PVc/dm9pZCAwOlcuZGVsZXRlRm9sZGVyKGxlLGFlKV07Y2FzZSAxOnJldHVyblsyLGIuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUubGlzdEZvbGRlcj1mdW5jdGlvbihsZSxhZSxXKXt2YXIgYjtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0''@;'; put 'put ''aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImxpc3RGb2xkZXIiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LG51bGw9PT0oYj10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmxp''@;'; put 'put ''c3RGb2xkZXIobGUsYWUsVyldO2Nhc2UgMTpyZXR1cm5bMixBLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLm1vdmVGb2xkZXI9ZnVuY3Rpb24obGUsYWUsVyxiKXt2YXIgQTtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKEYp''@;'; put 'put ''e3N3aXRjaChGLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoIm1vdmVGb2xkZXIiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LG51bGw9PT0oQT10aGlzLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1BP3ZvaWQgMDpBLm1vdmVGb2xkZXIobGUsYWUs''@;'; put 'put ''VyxiKV07Y2FzZSAxOnJldHVyblsyLEYuc2VudCgpXX19KX0pfSx1ZS5wcm90b3R5cGUuY3JlYXRlSm9iRGVmaW5pdGlvbj1mdW5jdGlvbihsZSxhZSxXLGIsQSxGKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRj''@;'; put 'put ''aChILmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImNyZWF0ZUpvYkRlZmluaXRpb24iLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLEY/WzQsRi5jcmVhdGVKb2JEZWZpbml0aW9uKGxlLGFlLFcsYixBKV06WzMsMl07Y2FzZSAxOmNhc2UgMzpyZXR1cm5bMixI''@;'; put 'put ''LnNlbnQoKV07Y2FzZSAyOnJldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5jcmVhdGVKb2JEZWZpbml0aW9uKGxlLGFlLFcsYixBKV19fSl9KX0sdWUucHJvdG90eXBlLmdldEF1dGhDb2RlPWZ1bmN0aW9uKGxlKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXty''@;'; put 'put ''ZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGFlKXtzd2l0Y2goYWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgiZ2V0QXV0aENvZGUiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRBdXRoQ29kZShsZSldO2Nhc2Ug''@;'; put 'put ''MTpyZXR1cm5bMixhZS5zZW50KCldfX0pfSl9LHVlLnByb3RvdHlwZS5nZXRBY2Nlc3NUb2tlbj1mdW5jdGlvbihsZSxhZSxXKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0''@;'; put 'put ''dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImdldEFjY2Vzc1Rva2VuIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWEsVS5TZXJ2ZXJUeXBlLlNhc2pzXSksdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlIT09VS5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMuc2FzSlNBcGlDbGllbnQu''@;'; put 'put ''Z2V0QWNjZXNzVG9rZW4obGUsVyldO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsYi5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0QWNjZXNzVG9rZW4obGUsYWUsVyldfX0pfSl9LHVlLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKGxlLGFl''@;'; put 'put ''LFcpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oYil7c3dpdGNoKGIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgicmVmcmVzaFRva2VucyIsW1UuU2VydmVyVHlwZS5TYXNWaXlhLFUuU2Vy''@;'; put 'put ''dmVyVHlwZS5TYXNqc10pLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSE9PVUuU2VydmVyVHlwZS5TYXNqcz9bMywyXTpbNCx0aGlzLnNhc0pTQXBpQ2xpZW50LnJlZnJlc2hUb2tlbnMoVyldO2Nhc2UgMTpjYXNlIDM6cmV0dXJuWzIsYi5zZW50KCldO2Nhc2UgMjpyZXR1cm5bNCx0aGlz''@;'; put 'put ''LnNhc1ZpeWFBcGlDbGllbnQucmVmcmVzaFRva2VucyhsZSxhZSxXKV19fSl9KX0sdWUucHJvdG90eXBlLmRlbGV0ZUNsaWVudD1mdW5jdGlvbihsZSxhZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5s''@;'; put 'put ''YWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmlzTWV0aG9kU3VwcG9ydGVkKCJkZWxldGVDbGllbnQiLFtVLlNlcnZlclR5cGUuU2FzVml5YV0pLFs0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5kZWxldGVDbGllbnQobGUsYWUpXTtjYXNlIDE6cmV0dXJuWzIsVy5zZW50KCldfX0pfSl9LHVlLnBy''@;'; put 'put ''b3RvdHlwZS5nZXRTYXNqc0NvbmZpZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhc2pzQ29uZmlnfSx1ZS5wcm90b3R5cGUuZ2V0VXNlck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdXRoTWFuYWdlci51c2VyTmFtZX0sdWUucHJvdG90eXBlLnNldFNBU2pzQ29uZmlnPWZ1bmN0aW9u''@;'; put 'put ''KGxlKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGFlKXtyZXR1cm4gdGhpcy5zYXNqc0NvbmZpZz1qKGooe30sdGhpcy5zYXNqc0NvbmZpZyksbGUpLHRoaXMuc2V0dXBDb25maWd1cmF0aW9uKCksWzJdfSl9KX0sdWUucHJv''@;'; put 'put ''dG90eXBlLnNldERlYnVnU3RhdGU9ZnVuY3Rpb24obGUpe3RoaXMuc2FzanNDb25maWcuZGVidWc9bGUsdGhpcy5zYXNWaXlhQXBpQ2xpZW50JiYodGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlYnVnPWxlKX0sdWUucHJvdG90eXBlLmNoZWNrU2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBHKHRo''@;'; put 'put ''aXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24obGUpe3JldHVyblsyLHRoaXMuYXV0aE1hbmFnZXIuY2hlY2tTZXNzaW9uKCldfSl9KX0sdWUucHJvdG90eXBlLmxvZ0luPWZ1bmN0aW9uKGxlLGFlLFcsYil7cmV0dXJuIHZvaWQgMD09PWImJihiPXt9''@;'; put 'put ''KSxHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oQSl7aWYodGhpcy5zYXNqc0NvbmZpZy5sb2dpbk1lY2hhbmlzbT09PXouTG9naW5NZWNoYW5pc20uRGVmYXVsdCl7aWYoIWxlfHwhYWUpdGhyb3cgbmV3IEVycm9yKCJBIHVzZXJuYW1lIGFu''@;'; put 'put ''ZCBwYXNzd29yZCBhcmUgcmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBsb2dpbiBtZWNoYW5pc20uIik7cmV0dXJuWzIsdGhpcy5hdXRoTWFuYWdlci5sb2dJbihsZSxhZSldfWlmKHR5cGVvZiB3aW5kb3c+InUiKXRocm93IG5ldyBFcnJvcigiVGhlIHJlZGlyZWN0ZWQgbG9naW4g''@;'; put 'put ''bWVjaGFuaXNtIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gdGhlIGJyb3dzZXIuIik7cmV0dXJuWzIsdGhpcy5hdXRoTWFuYWdlci5yZWRpcmVjdGVkTG9nSW4oYildfSl9KX0sdWUucHJvdG90eXBlLmxvZ091dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF1dGhNYW5hZ2VyLmxvZ091''@;'; put 'put ''dCgpfSx1ZS5wcm90b3R5cGUudXBsb2FkRmlsZT1mdW5jdGlvbihsZSxhZSxXLGIsQSl7cmV0dXJuIHZvaWQgMD09PWImJihiPXt9KSxHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oSCl7c3dpdGNoKEgubGFiZWwpe2Nhc2UgMDpyZXR1cm4g''@;'; put 'put ''Yj1qKGooe30sdGhpcy5zYXNqc0NvbmZpZyksYiksWzQsdGhpcy5maWxlVXBsb2FkZXIuZXhlY3V0ZShsZSx7ZmlsZXM6YWUscGFyYW1zOld9LGIsQSldO2Nhc2UgMTpyZXR1cm5bMixILnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24obGUsYWUsVyxiLEEsRil7''@;'; put 'put ''cmV0dXJuIHZvaWQgMD09PVcmJihXPXt9KSx2b2lkIDA9PT1GJiYoRj1bXSksRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSDtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6cmV0dXJuIFc9aihqKHt9LHRoaXMuc2FzanNDb25maWcp''@;'; put 'put ''LFcpLChIPSgwLEUudmFsaWRhdGVJbnB1dCkoYWUpKS5zdGF0dXM/Vy5zZXJ2ZXJUeXBlIT09VS5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMuc2FzanNKb2JFeGVjdXRvci5leGVjdXRlKGxlLGFlLFcsYixBLEYpXTpbMywxMl07Y2FzZSAxOmNhc2UgMzpjYXNlIDU6Y2FzZSA4OmNh''@;'; put 'put ''c2UgMTA6cmV0dXJuWzIsZy5zZW50KCldO2Nhc2UgMjpyZXR1cm4gVy5zZXJ2ZXJUeXBlIT09VS5TZXJ2ZXJUeXBlLlNhc1ZpeWF8fG51bGw9PVcudXNlQ29tcHV0ZUFwaT9bMyw3XTpXLnVzZUNvbXB1dGVBcGk/WzQsdGhpcy5jb21wdXRlSm9iRXhlY3V0b3IuZXhlY3V0ZShsZSxhZSxXLGIs''@;'; put 'put ''QSldOlszLDRdO2Nhc2UgNDpyZXR1cm4gVy5jb250ZXh0TmFtZXx8KFc9aihqKHt9LFcpLHtjb250ZXh0TmFtZToiU0FTIEpvYiBFeGVjdXRpb24gY29tcHV0ZSBjb250ZXh0In0pKSxbNCx0aGlzLmplc0pvYkV4ZWN1dG9yLmV4ZWN1dGUobGUsYWUsVyxiLEEsRildO2Nhc2UgNjpyZXR1cm5b''@;'; put 'put ''MywxMV07Y2FzZSA3OnJldHVybiBXLnNlcnZlclR5cGU9PT1VLlNlcnZlclR5cGUuU2FzOSYmVy51c2VybmFtZSYmVy5wYXNzd29yZD9bNCx0aGlzLnNhczlKb2JFeGVjdXRvci5leGVjdXRlKGxlLGFlLFcpXTpbMyw5XTtjYXNlIDk6cmV0dXJuWzQsdGhpcy53ZWJKb2JFeGVjdXRvci5leGVj''@;'; put 'put ''dXRlKGxlLGFlLFcsYixBLEYpXTtjYXNlIDExOnJldHVyblszLDEzXTtjYXNlIDEyOnJldHVyblsyLFByb21pc2UucmVqZWN0KG5ldyB6LkVycm9yUmVzcG9uc2UoSC5tc2cpKV07Y2FzZSAxMzpyZXR1cm5bMl19fSl9KX0sdWUucHJvdG90eXBlLmRlcGxveVNlcnZpY2VQYWNrPWZ1bmN0aW9u''@;'; put 'put ''KGxlLGFlLFcsYixBKXtyZXR1cm4gdm9pZCAwPT09QSYmKEE9ITEpLEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYsSDtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKEMpe3N3aXRjaChDLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaXNNZXRob2RTdXBwb3J0ZWQoImRlcGxv''@;'; put 'put ''eVNlcnZpY2VQYWNrIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSxGPW51bGwsV3x8YWU/KFd8fChXPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsKSxhZXx8KGFlPXRoaXMuc2FzanNDb25maWcuYXBwTG9jKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1VLlNlcnZlclR5cGUuU2Fz''@;'; put 'put ''Vml5YT8oRj1uZXcgTi5TQVNWaXlhQXBpQ2xpZW50KFcsYWUsdGhpcy5zYXNqc0NvbmZpZy5jb250ZXh0TmFtZSx0aGlzLnJlcXVlc3RDbGllbnQpKS5kZWJ1Zz10aGlzLnNhc2pzQ29uZmlnLmRlYnVnOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXM5JiYo''@;'; put 'put ''Rj1uZXcgQi5TQVM5QXBpQ2xpZW50KFcsdGhpcy5qb2JzUGF0aCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKSkpOihIPW51bGwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/SD10aGlzLnNhc1ZpeWFBcGlDbGllbnQuZ2V0Q29u''@;'; put 'put ''ZmlnKCk6dGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlPT09VS5TZXJ2ZXJUeXBlLlNhczkmJihIPXRoaXMuc2FzOUFwaUNsaWVudC5nZXRDb25maWcoKSksVz1ILnNlcnZlclVybCxhZT1ILnJvb3RGb2xkZXJOYW1lKSxsZS5tZW1iZXJzWzBdLm1lbWJlcnMmJmxlLm1lbWJlcnNbMF0ubWVt''@;'; put 'put ''YmVycy5zb3J0KGZ1bmN0aW9uKGspe3JldHVybiJmb2xkZXIiPT09ay50eXBlPy0xOjF9KSxbNCx0aGlzLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNlcyhhZSxsZS5tZW1iZXJzLGIsRixBKV07Y2FzZSAxOnJldHVybiBDLnNlbnQoKSxbMl19fSl9KX0sdWUucHJvdG90eXBlLnN0YXJ0Q29tcHV0''@;'; put 'put ''ZUpvYj1mdW5jdGlvbihsZSxhZSxXLGIsQSxGLEgsZyxDKXt2YXIgayxfLHAsdztyZXR1cm4gdm9pZCAwPT09VyYmKFc9e30pLHZvaWQgMD09PUgmJihIPSExKSxHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oSyl7aWYoVz1qKGooe30sdGhp''@;'; put 'put ''cy5zYXNqc0NvbmZpZyksVyksdGhpcy5pc01ldGhvZFN1cHBvcnRlZCgic3RhcnRDb21wdXRlSm9iIixbVS5TZXJ2ZXJUeXBlLlNhc1ZpeWFdKSwhVy5jb250ZXh0TmFtZSl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHQgbmFtZSBpcyB1bmRlZmluZWQuIFBsZWFzZSBzZXQgYSBgY29udGV4dE5h''@;'; put 'put ''bWVgIGluIHlvdXIgU0FTanMgb3Igb3ZlcnJpZGUgY29uZmlnLiIpO3JldHVybiBDPyhudWxsPT09KGs9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09a3x8ay5zZXRWZXJib3NlTW9kZShDKSxudWxsPT09KF89dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09X3x8Xy5lbmFibGVW''@;'; put 'put ''ZXJib3NlTW9kZSgpKTohMT09PUMmJihudWxsPT09KHA9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09cHx8cC5kaXNhYmxlVmVyYm9zZU1vZGUoKSksWzIsbnVsbD09PSh3PXRoaXMuc2FzVml5YUFwaUNsaWVudCl8fHZvaWQgMD09PXc/dm9pZCAwOncuZXhlY3V0ZUNvbXB1dGVKb2Io''@;'; put 'put ''bGUsVy5jb250ZXh0TmFtZSxXLmRlYnVnLGFlLGIsISFBLCExLEYsSCxnKV19KX0pfSx1ZS5wcm90b3R5cGUuZmV0Y2hMb2dGaWxlQ29udGVudD1mdW5jdGlvbihsZSxhZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihXKXtz''@;'; put 'put ''d2l0Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucmVxdWVzdENsaWVudC5nZXQobGUsYWUpLnRoZW4oZnVuY3Rpb24oYil7aWYoIWIpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyB6LkVycm9yUmVzcG9uc2UoIkVycm9yIHdoaWxlIGZldGNoaW5nIGxvZy4gUmVzcG9uc2Ugd2Fz''@;'; put 'put ''IG5vdCBwcm92aWRlZC4iKSk7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShiLnJlc3VsdCl9Y2F0Y2goQSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyB6LkVycm9yUmVzcG9uc2UoIkVycm9yIHdoaWxlIGZldGNoaW5nIGxvZy4gVGhlIHJlc3VsdCBpcyBub3QgdmFsaWQuIixBKSl9fSld''@;'; put 'put ''O2Nhc2UgMTpyZXR1cm5bMixXLnNlbnQoKV19fSl9KX0sdWUucHJvdG90eXBlLmdldFNhc1JlcXVlc3RzPWZ1bmN0aW9uKCl7cmV0dXJuIFQoW10sdGhpcy5yZXF1ZXN0Q2xpZW50LmdldFJlcXVlc3RzKCksITApLnNvcnQoRS5jb21wYXJlVGltZXN0YW1wcyl9LHVlLnByb3RvdHlwZS5jbGVh''@;'; put 'put ''clNhc1JlcXVlc3RzPWZ1bmN0aW9uKCl7dGhpcy5yZXF1ZXN0Q2xpZW50LmNsZWFyUmVxdWVzdHMoKX0sdWUucHJvdG90eXBlLnNldHVwQ29uZmlndXJhdGlvbj1mdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsfHwiIj09PXRoaXMuc2FzanNDb25maWcu''@;'; put 'put ''c2VydmVyVXJsKWlmKHR5cGVvZiBsb2NhdGlvbjwidSIpe3ZhciBsZT0iIi5jb25jYXQobG9jYXRpb24ucHJvdG9jb2wsIi8vIikuY29uY2F0KGxvY2F0aW9uLmhvc3RuYW1lKTtsb2NhdGlvbi5wb3J0JiYobGU9IiIuY29uY2F0KGxlLCI6IikuY29uY2F0KGxvY2F0aW9uLnBvcnQpKSx0aGlz''@;'; put 'put ''LnNhc2pzQ29uZmlnLnNlcnZlclVybD1sZX1lbHNlIHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsPSIiOyIvIj09PXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLnNsaWNlKC0xKSYmKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsPXRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLnNsaWNl''@;'; put 'put ''KDAsLTEpKSx0aGlzLnJlcXVlc3RDbGllbnQ/dGhpcy5yZXF1ZXN0Q2xpZW50LnNldENvbmZpZyh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKTp0aGlzLnJlcXVlc3RDbGllbnQ9bmV3KHRoaXMuc2FzanNDb25maWcuc2VydmVy''@;'; put 'put ''VHlwZT09PVUuU2VydmVyVHlwZS5TYXNqcz9KLlNhc2pzUmVxdWVzdENsaWVudDpxLlJlcXVlc3RDbGllbnQpKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuaHR0cHNBZ2VudE9wdGlvbnMsdGhpcy5zYXNqc0NvbmZpZy5yZXF1ZXN0SGlzdG9yeUxpbWl0LHRo''@;'; put 'put ''aXMuc2FzanNDb25maWcudmVyYm9zZSksdGhpcy5qb2JzUGF0aD10aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1VLlNlcnZlclR5cGUuU2FzVml5YT90aGlzLnNhc2pzQ29uZmlnLnBhdGhTQVNWaXlhOnRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXM5''@;'; put 'put ''P3RoaXMuc2FzanNDb25maWcucGF0aFNBUzk6dGhpcy5zYXNqc0NvbmZpZy5wYXRoU0FTSlMsdGhpcy5hdXRoTWFuYWdlcj1uZXcgWS5BdXRoTWFuYWdlcih0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGUsdGhpcy5yZXF1ZXN0Q2xpZW50LHRo''@;'; put 'put ''aXMucmVzZW5kV2FpdGluZ1JlcXVlc3RzKSx0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclR5cGU9PT1VLlNlcnZlclR5cGUuU2FzVml5YSYmKHRoaXMuc2FzVml5YUFwaUNsaWVudD90aGlzLnNhc1ZpeWFBcGlDbGllbnQuc2V0Q29uZmlnKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMu''@;'; put 'put ''c2FzanNDb25maWcuYXBwTG9jKTp0aGlzLnNhc1ZpeWFBcGlDbGllbnQ9bmV3IE4uU0FTVml5YUFwaUNsaWVudCh0aGlzLnNhc2pzQ29uZmlnLnNlcnZlclVybCx0aGlzLnNhc2pzQ29uZmlnLmFwcExvYyx0aGlzLnNhc2pzQ29uZmlnLmNvbnRleHROYW1lLHRoaXMucmVxdWVzdENsaWVudCks''@;'; put 'put ''dGhpcy5zYXNWaXlhQXBpQ2xpZW50LmRlYnVnPXRoaXMuc2FzanNDb25maWcuZGVidWcpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2VydmVyVHlwZS5TYXM5JiYodGhpcy5zYXM5QXBpQ2xpZW50P3RoaXMuc2FzOUFwaUNsaWVudC5zZXRDb25maWcodGhpcy5zYXNqc0NvbmZp''@;'; put 'put ''Zy5zZXJ2ZXJVcmwpOnRoaXMuc2FzOUFwaUNsaWVudD1uZXcgQi5TQVM5QXBpQ2xpZW50KHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuam9ic1BhdGgsdGhpcy5zYXNqc0NvbmZpZy5odHRwc0FnZW50T3B0aW9ucykpLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZT09PVUuU2Vy''@;'; put 'put ''dmVyVHlwZS5TYXNqcyYmKHRoaXMuc2FzSlNBcGlDbGllbnR8fCh0aGlzLnNhc0pTQXBpQ2xpZW50PW5ldyBaLlNBU2pzQXBpQ2xpZW50KHRoaXMucmVxdWVzdENsaWVudCkpKSx0aGlzLmZpbGVVcGxvYWRlcj1uZXcgZWUuRmlsZVVwbG9hZGVyKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJs''@;'; put 'put ''LHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSx0aGlzLmpvYnNQYXRoLHRoaXMucmVxdWVzdENsaWVudCksdGhpcy53ZWJKb2JFeGVjdXRvcj1uZXcgZWUuV2ViSm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmwsdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlLHRoaXMu''@;'; put 'put ''am9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2FzVml5YUFwaUNsaWVudCksdGhpcy5zYXNqc0pvYkV4ZWN1dG9yPW5ldyBlZS5TYXNqc0pvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuam9ic1BhdGgsdGhpcy5yZXF1ZXN0Q2xpZW50KSx0aGlzLnNh''@;'; put 'put ''czlKb2JFeGVjdXRvcj1uZXcgZWUuU2FzOUpvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzanNDb25maWcuc2VydmVyVHlwZSx0aGlzLmpvYnNQYXRoLHRoaXMucmVxdWVzdENsaWVudCx0aGlzLnNhc2pzQ29uZmlnLmh0dHBzQWdlbnRPcHRpb25zKSx0aGlz''@;'; put 'put ''LmNvbXB1dGVKb2JFeGVjdXRvcj1uZXcgZWUuQ29tcHV0ZUpvYkV4ZWN1dG9yKHRoaXMuc2FzanNDb25maWcuc2VydmVyVXJsLHRoaXMuc2FzVml5YUFwaUNsaWVudCksdGhpcy5qZXNKb2JFeGVjdXRvcj1uZXcgZWUuSmVzSm9iRXhlY3V0b3IodGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJVcmws''@;'; put 'put ''dGhpcy5zYXNWaXlhQXBpQ2xpZW50KX0sdWUucHJvdG90eXBlLmNyZWF0ZUZvbGRlcnNBbmRTZXJ2aWNlcz1mdW5jdGlvbihsZSxhZSxXLGIsQSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEY9dGhpcztyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRj''@;'; put 'put ''aChILmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsKDAsRS5hc3luY0ZvckVhY2gpKGFlLGZ1bmN0aW9uKGcpe3JldHVybiBHKEYsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpzd2l0Y2goZy50eXBlKXtjYXNl''@;'; put 'put ''ImZvbGRlciI6cmV0dXJuWzMsMV07Y2FzZSJmaWxlIjpyZXR1cm5bMywzXTtjYXNlInNlcnZpY2UiOnJldHVyblszLDVdfXJldHVyblszLDddO2Nhc2UgMTpyZXR1cm5bNCx0aGlzLmNyZWF0ZUZvbGRlcihnLm5hbWUsbGUsdm9pZCAwLFcsYixBKV07Y2FzZSAyOnJldHVybiBDLnNlbnQoKSxb''@;'; put 'put ''Myw4XTtjYXNlIDM6cmV0dXJuWzQsdGhpcy5jcmVhdGVGaWxlKGcubmFtZSxnLmNvZGUsbGUsdm9pZCAwLFcsYildO2Nhc2UgNDpyZXR1cm4gQy5zZW50KCksWzMsOF07Y2FzZSA1OnJldHVybls0LHRoaXMuY3JlYXRlSm9iRGVmaW5pdGlvbihnLm5hbWUsZy5jb2RlLGxlLHZvaWQgMCxXLGIp''@;'; put 'put ''XTtjYXNlIDY6cmV0dXJuIEMuc2VudCgpLFszLDhdO2Nhc2UgNzp0aHJvdyBuZXcgRXJyb3IoIlVuaWRlbnRpZmllZCBtZW1iZXIgJyIuY29uY2F0KGcubmFtZSwiJyBwcm92aWRlZC4iKSk7Y2FzZSA4OnJldHVybiJmb2xkZXIiPT09Zy50eXBlJiZnLm1lbWJlcnMmJmcubWVtYmVycy5sZW5n''@;'; put 'put ''dGg/WzQsdGhpcy5jcmVhdGVGb2xkZXJzQW5kU2VydmljZXMoIiIuY29uY2F0KGxlLCIvIikuY29uY2F0KGcubmFtZSksZy5tZW1iZXJzLFcsYixBKV06WzMsMTBdO2Nhc2UgOTpDLnNlbnQoKSxDLmxhYmVsPTEwO2Nhc2UgMTA6cmV0dXJuWzJdfX0pfSl9KV07Y2FzZSAxOnJldHVybiBILnNl''@;'; put 'put ''bnQoKSxbMl19fSl9KX0sdWUucHJvdG90eXBlLmlzTWV0aG9kU3VwcG9ydGVkPWZ1bmN0aW9uKGxlLGFlKXtpZighdGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlfHwhYWUuaW5jbHVkZXModGhpcy5zYXNqc0NvbmZpZy5zZXJ2ZXJUeXBlKSl0aHJvdyBuZXcgRXJyb3IoIk1ldGhvZCAnIi5j''@;'; put 'put ''b25jYXQobGUsIicgaXMgb25seSBzdXBwb3J0ZWQgb24gIikuY29uY2F0KGFlLmpvaW4oIiwgIiksIiBzZXJ2ZXJzLiIpKX0sdWUucHJvdG90eXBlLmVuYWJsZVZlcmJvc2VNb2RlPWZ1bmN0aW9uKGxlLGFlKXt2YXIgVztudWxsPT09KFc9dGhpcy5yZXF1ZXN0Q2xpZW50KXx8dm9pZCAwPT09''@;'; put 'put ''V3x8Vy5lbmFibGVWZXJib3NlTW9kZShsZSxhZSl9LHVlLnByb3RvdHlwZS5kaXNhYmxlVmVyYm9zZU1vZGU9ZnVuY3Rpb24oKXt2YXIgbGU7bnVsbD09PShsZT10aGlzLnJlcXVlc3RDbGllbnQpfHx2b2lkIDA9PT1sZXx8bGUuZGlzYWJsZVZlcmJvc2VNb2RlKCl9LHVlfSgpO08uZGVmYXVs''@;'; put 'put ''dD1pZX0sMzQ2NzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGo9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oVSl7Zm9yKHZhciBxLEo9MSxlZT1hcmd1bWVudHMubGVuZ3RoO0o8ZWU7SisrKWZvcih2YXIg''@;'; put 'put ''cmUgaW4gcT1hcmd1bWVudHNbSl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEscmUpJiYoVVtyZV09cVtyZV0pO3JldHVybiBVfSxqLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sRz10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVSxxLEosZWUpe3JldHVybiBu''@;'; put 'put ''ZXcoSnx8KEo9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlLGllKXtmdW5jdGlvbiB1ZShXKXt0cnl7YWUoZWUubmV4dChXKSl9Y2F0Y2goYil7aWUoYil9fWZ1bmN0aW9uIGxlKFcpe3RyeXthZShlZS50aHJvdyhXKSl9Y2F0Y2goYil7aWUoYil9fWZ1bmN0aW9uIGFlKFcpe3ZhciBiO1cuZG9uZT9y''@;'; put 'put ''ZShXLnZhbHVlKTooYj1XLnZhbHVlLGIgaW5zdGFuY2VvZiBKP2I6bmV3IEooZnVuY3Rpb24oQSl7QShiKX0pKS50aGVuKHVlLGxlKX1hZSgoZWU9ZWUuYXBwbHkoVSxxfHxbXSkpLm5leHQoKSl9KX0sRD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihVLHEpe3ZhciBKLGVlLHJl''@;'; put 'put ''LGllLHVlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnJlWzBdKXRocm93IHJlWzFdO3JldHVybiByZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpZT17bmV4dDpsZSgwKSx0aHJvdzpsZSgxKSxyZXR1cm46bGUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpZVtT''@;'; put 'put ''eW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpZTtmdW5jdGlvbiBsZShhZSl7cmV0dXJuIGZ1bmN0aW9uKFcpe3JldHVybiBmdW5jdGlvbihiKXtpZihKKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3Vl''@;'; put 'put ''Oyl0cnl7aWYoSj0xLGVlJiYocmU9MiZiWzBdP2VlLnJldHVybjpiWzBdP2VlLnRocm93fHwoKHJlPWVlLnJldHVybikmJnJlLmNhbGwoZWUpLDApOmVlLm5leHQpJiYhKHJlPXJlLmNhbGwoZWUsYlsxXSkpLmRvbmUpcmV0dXJuIHJlO3N3aXRjaChlZT0wLHJlJiYoYj1bMiZiWzBdLHJlLnZh''@;'; put 'put ''bHVlXSksYlswXSl7Y2FzZSAwOmNhc2UgMTpyZT1iO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdWUubGFiZWwrKyx7dmFsdWU6YlsxXSxkb25lOiExfTtjYXNlIDU6dWUubGFiZWwrKyxlZT1iWzFdLGI9WzBdO2NvbnRpbnVlO2Nhc2UgNzpiPXVlLm9wcy5wb3AoKSx1ZS50cnlzLnBvcCgpO2NvbnRp''@;'; put 'put ''bnVlO2RlZmF1bHQ6aWYoISgocmU9KHJlPXVlLnRyeXMpLmxlbmd0aD4wJiZyZVtyZS5sZW5ndGgtMV0pfHw2IT09YlswXSYmMiE9PWJbMF0pKXt1ZT0wO2NvbnRpbnVlfWlmKDM9PT1iWzBdJiYoIXJlfHxiWzFdPnJlWzBdJiZiWzFdPHJlWzNdKSl7dWUubGFiZWw9YlsxXTticmVha31pZig2''@;'; put 'put ''PT09YlswXSYmdWUubGFiZWw8cmVbMV0pe3VlLmxhYmVsPXJlWzFdLHJlPWI7YnJlYWt9aWYocmUmJnVlLmxhYmVsPHJlWzJdKXt1ZS5sYWJlbD1yZVsyXSx1ZS5vcHMucHVzaChiKTticmVha31yZVsyXSYmdWUub3BzLnBvcCgpLHVlLnRyeXMucG9wKCk7Y29udGludWV9Yj1xLmNhbGwoVSx1''@;'; put 'put ''ZSl9Y2F0Y2goQSl7Yj1bNixBXSxlZT0wfWZpbmFsbHl7Sj1yZT0wfWlmKDUmYlswXSl0aHJvdyBiWzFdO3JldHVybnt2YWx1ZTpiWzBdP2JbMV06dm9pZCAwLGRvbmU6ITB9fShbYWUsV10pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLlNB''@;'; put 'put ''U2pzQXBpQ2xpZW50PXZvaWQgMDt2YXIgVD1JKDYyMzApLEU9SSgzOTAwKSx6PUkoOTc3OCksTj1JKDU3KSxCPUkoMjQ5KSxaPUkoNzA0KSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gVShxKXt0aGlzLnJlcXVlc3RDbGllbnQ9cX1yZXR1cm4gVS5wcm90b3R5cGUuZ2V0QWNjZXNzVG9rZW5Gb3JS''@;'; put 'put ''ZXF1ZXN0PWZ1bmN0aW9uKHEpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oSil7c3dpdGNoKEoubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcT9bNCwoMCxaLmdldFRva2VucykodGhpcy5yZXF1ZXN0Q2xpZW50LHEsRS5TZXJ2ZXJU''@;'; put 'put ''eXBlLlNhc2pzKV06WzMsMl07Y2FzZSAxOnJldHVyblsyLEouc2VudCgpLmFjY2Vzc190b2tlbl07Y2FzZSAyOnJldHVyblsyXX19KX0pfSxVLnByb3RvdHlwZS5kZXBsb3k9ZnVuY3Rpb24ocSxKLGVlKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmUsaWU7''@;'; put 'put ''cmV0dXJuIEQodGhpcyxmdW5jdGlvbih1ZSl7c3dpdGNoKHVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXRBY2Nlc3NUb2tlbkZvclJlcXVlc3QoZWUpXTtjYXNlIDE6cmV0dXJuIHJlPXVlLnNlbnQoKSxxLmFwcExvYz1xLmFwcExvY3x8SixbNCx0aGlzLnJlcXVlc3RDbGllbnQu''@;'; put 'put ''cG9zdCgiU0FTanNBcGkvZHJpdmUvZGVwbG95IixxLHJlLHZvaWQgMCx7fSx7bWF4Q29udGVudExlbmd0aDoxLzAsbWF4Qm9keUxlbmd0aDoxLzB9KV07Y2FzZSAyOnJldHVybiBpZT11ZS5zZW50KCkucmVzdWx0LFsyLFByb21pc2UucmVzb2x2ZShpZSldfX0pfSl9LFUucHJvdG90eXBlLmRl''@;'; put 'put ''cGxveVppcEZpbGU9ZnVuY3Rpb24ocSxKKXtyZXR1cm4gRyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZWUscmUsaWUsdWUsbGUsYWU7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihXKXtzd2l0Y2goVy5sYWJlbCl7Y2FzZSAwOnJldHVybiBlZT1JKDI5NzUpLmNyZWF0ZVJlYWRT''@;'; put 'put ''dHJlYW0sWzQsdGhpcy5nZXRBY2Nlc3NUb2tlbkZvclJlcXVlc3QoSildO2Nhc2UgMTpyZXR1cm4gcmU9Vy5zZW50KCksWzQsZWUocSldO2Nhc2UgMjpyZXR1cm4gaWU9Vy5zZW50KCksKHVlPW5ldyBUKS5hcHBlbmQoImZpbGUiLGllKSxsZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRh''@;'; put 'put ''cnk9Ii5jb25jYXQodWUuZ2V0Qm91bmRhcnkoKSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNBU2pzQXBpL2RyaXZlL2RlcGxveS91cGxvYWQiLHVlLHJlLGxlLHt9LHttYXhDb250ZW50TGVuZ3RoOjEvMCxtYXhCb2R5TGVuZ3RoOjEvMH0pXTtjYXNlIDM6cmV0dXJuIGFlPVcuc2Vu''@;'; put 'put ''dCgpLnJlc3VsdCxbMixQcm9taXNlLnJlc29sdmUoYWUpXX19KX0pfSxVLnByb3RvdHlwZS5leGVjdXRlSm9iPWZ1bmN0aW9uKHEsSixlZSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlLGllLHVlO3JldHVybiBEKHRoaXMsZnVuY3Rpb24obGUpe3N3aXRj''@;'; put 'put ''aChsZS5sYWJlbCl7Y2FzZSAwOnJldHVybiByZT1lZT9lZS5hY2Nlc3NfdG9rZW46dm9pZCAwLGllPXEuX3Byb2dyYW0uc3RhcnRzV2l0aCgiLyIpP3EuX3Byb2dyYW06IiIuY29uY2F0KEosIi8iKS5jb25jYXQocS5fcHJvZ3JhbSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QoIlNBU2pz''@;'; put 'put ''QXBpL3N0cC9leGVjdXRlIixqKGooe19kZWJ1ZzoxMzF9LHEpLHtfcHJvZ3JhbTppZX0pLHJlKV07Y2FzZSAxOnJldHVyblsyLHtyZXN1bHQ6KHVlPWxlLnNlbnQoKSkucmVzdWx0LGxvZzp1ZS5sb2d9XX19KX0pfSxVLnByb3RvdHlwZS5leGVjdXRlU2NyaXB0PWZ1bmN0aW9uKHEsSixlZSl7''@;'; put 'put ''cmV0dXJuIHZvaWQgMD09PUomJihKPSJzYXMiKSxHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZSxpZTtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKHVlKXtzd2l0Y2godWUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldEFjY2Vzc1Rva2VuRm9yUmVxdWVzdChlZSld''@;'; put 'put ''O2Nhc2UgMTpyZXR1cm4gcmU9dWUuc2VudCgpLGllPXtsb2c6IiJ9LFs0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KCJTQVNqc0FwaS9jb2RlL2V4ZWN1dGUiLHtjb2RlOnEscnVuVGltZTpKfSxyZSkudGhlbihmdW5jdGlvbihsZSl7dmFyIFc9bGUucHJpbnRPdXRwdXQsYj1sZS5yZXN1bHQ7''@;'; put 'put ''aWUubG9nPWxlLmxvZyxXJiYoaWUucHJpbnRPdXRwdXQ9VyksYiYmKGllLndlYm91dD1iKX0pLmNhdGNoKGZ1bmN0aW9uKGxlKXt0aHJvdygwLHoucHJlZml4TWVzc2FnZSkobGUsIkVycm9yIHdoaWxlIHNlbmRpbmcgUE9TVCByZXF1ZXN0IHRvIGV4ZWN1dGUgY29kZS4gIil9KV07Y2FzZSAy''@;'; put 'put ''OnJldHVybiB1ZS5zZW50KCksWzIsaWVdfX0pfSl9LFUucHJvdG90eXBlLmdldEFjY2Vzc1Rva2VuPWZ1bmN0aW9uKHEsSil7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyxmdW5jdGlvbihlZSl7cmV0dXJuWzIsKDAsTi5nZXRBY2Nlc3NUb2tl''@;'; put 'put ''bkZvclNhc2pzKSh0aGlzLnJlcXVlc3RDbGllbnQscSxKKV19KX0pfSxVLnByb3RvdHlwZS5yZWZyZXNoVG9rZW5zPWZ1bmN0aW9uKHEpe3JldHVybiBHKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBEKHRoaXMsZnVuY3Rpb24oSil7cmV0dXJuWzIsKDAsQi5yZWZyZXNo''@;'; put 'put ''VG9rZW5zRm9yU2FzanMpKHRoaXMucmVxdWVzdENsaWVudCxxKV19KX0pfSxVfSgpO08uU0FTanNBcGlDbGllbnQ9WX0sNjkwMzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz1JKDUxMDgpLEQ9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKFksVSxx''@;'; put 'put ''LEope3JldHVybiBuZXcocXx8KHE9UHJvbWlzZSkpKGZ1bmN0aW9uKGVlLHJlKXtmdW5jdGlvbiBpZShhZSl7dHJ5e2xlKEoubmV4dChhZSkpfWNhdGNoKFcpe3JlKFcpfX1mdW5jdGlvbiB1ZShhZSl7dHJ5e2xlKEoudGhyb3coYWUpKX1jYXRjaChXKXtyZShXKX19ZnVuY3Rpb24gbGUoYWUp''@;'; put 'put ''e3ZhciBXO2FlLmRvbmU/ZWUoYWUudmFsdWUpOihXPWFlLnZhbHVlLFcgaW5zdGFuY2VvZiBxP1c6bmV3IHEoZnVuY3Rpb24oYil7YihXKX0pKS50aGVuKGllLHVlKX1sZSgoSj1KLmFwcGx5KFksVXx8W10pKS5uZXh0KCkpfSl9LFQ9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24o''@;'; put 'put ''WSxVKXt2YXIgcSxKLGVlLHJlLGllPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmVlWzBdKXRocm93IGVlWzFdO3JldHVybiBlZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiByZT17bmV4dDp1ZSgwKSx0aHJvdzp1ZSgxKSxyZXR1cm46dWUoMil9LCJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJihyZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyZTtmdW5jdGlvbiB1ZShsZSl7cmV0dXJuIGZ1bmN0aW9uKGFlKXtyZXR1cm4gZnVuY3Rpb24oVyl7aWYocSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVj''@;'; put 'put ''dXRpbmcuIik7Zm9yKDtpZTspdHJ5e2lmKHE9MSxKJiYoZWU9MiZXWzBdP0oucmV0dXJuOldbMF0/Si50aHJvd3x8KChlZT1KLnJldHVybikmJmVlLmNhbGwoSiksMCk6Si5uZXh0KSYmIShlZT1lZS5jYWxsKEosV1sxXSkpLmRvbmUpcmV0dXJuIGVlO3N3aXRjaChKPTAsZWUmJihXPVsyJldb''@;'; put 'put ''MF0sZWUudmFsdWVdKSxXWzBdKXtjYXNlIDA6Y2FzZSAxOmVlPVc7YnJlYWs7Y2FzZSA0OnJldHVybiBpZS5sYWJlbCsrLHt2YWx1ZTpXWzFdLGRvbmU6ITF9O2Nhc2UgNTppZS5sYWJlbCsrLEo9V1sxXSxXPVswXTtjb250aW51ZTtjYXNlIDc6Vz1pZS5vcHMucG9wKCksaWUudHJ5cy5wb3Ao''@;'; put 'put ''KTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGVlPShlZT1pZS50cnlzKS5sZW5ndGg+MCYmZWVbZWUubGVuZ3RoLTFdKXx8NiE9PVdbMF0mJjIhPT1XWzBdKSl7aWU9MDtjb250aW51ZX1pZigzPT09V1swXSYmKCFlZXx8V1sxXT5lZVswXSYmV1sxXTxlZVszXSkpe2llLmxhYmVsPVdbMV07YnJl''@;'; put 'put ''YWt9aWYoNj09PVdbMF0mJmllLmxhYmVsPGVlWzFdKXtpZS5sYWJlbD1lZVsxXSxlZT1XO2JyZWFrfWlmKGVlJiZpZS5sYWJlbDxlZVsyXSl7aWUubGFiZWw9ZWVbMl0saWUub3BzLnB1c2goVyk7YnJlYWt9ZWVbMl0mJmllLm9wcy5wb3AoKSxpZS50cnlzLnBvcCgpO2NvbnRpbnVlfVc9VS5j''@;'; put 'put ''YWxsKFksaWUpfWNhdGNoKGIpe1c9WzYsYl0sSj0wfWZpbmFsbHl7cT1lZT0wfWlmKDUmV1swXSl0aHJvdyBXWzFdO3JldHVybnt2YWx1ZTpXWzBdP1dbMV06dm9pZCAwLGRvbmU6ITB9fShbbGUsYWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEw''@;'; put 'put ''fSksTy5TZXNzaW9uTWFuYWdlcj12b2lkIDA7dmFyIEU9SSgxMjMwKSx6PUkoMTM5NSksTj1JKDU5MjgpLEI9SSg5Nzc4KSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gWShVLHEsSil7dGhpcy5zZXJ2ZXJVcmw9VSx0aGlzLmNvbnRleHROYW1lPXEsdGhpcy5yZXF1ZXN0Q2xpZW50PUosdGhpcy5s''@;'; put 'put ''b2dnZWRFcnJvcnM9W10sdGhpcy5zZXNzaW9uU3RhdGVMaW5rRXJyb3I9IkVycm9yIHdoaWxlIGdldHRpbmcgc2Vzc2lvbiBzdGF0ZSBsaW5rLiAiLHRoaXMuc2Vzc2lvbnM9W10sdGhpcy5jdXJyZW50Q29udGV4dD1udWxsLHRoaXMuc2V0dGluZ0NvbnRleHQ9ITEsdGhpcy5fZGVidWc9ITEs''@;'; put 'put ''dGhpcy5wcmludGVkU2Vzc2lvblN0YXRlPXtwcmludGVkOiExLHN0YXRlOkUuU2Vzc2lvblN0YXRlLk5vU3RhdGV9LFUmJigwLE4uaXNVcmwpKFUpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWS5wcm90b3R5cGUsImRlYnVnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rl''@;'; put 'put ''YnVnfSxzZXQ6ZnVuY3Rpb24oVSl7dGhpcy5fZGVidWc9VX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxZLnByb3RvdHlwZS5pc1Nlc3Npb25WYWxpZD1mdW5jdGlvbihVKXtpZighVSlyZXR1cm4hMTt2YXIgcT0oKG5ldyBEYXRlKS5nZXRUaW1lKCktbmV3IERhdGUoVS5jcmVh''@;'; put 'put ''dGlvblRpbWVTdGFtcCkuZ2V0VGltZSgpKS8xZTM7cmV0dXJuISghVS5hdHRyaWJ1dGVzfHxxPj1VLmF0dHJpYnV0ZXMuc2Vzc2lvbkluYWN0aXZlVGltZW91dCl9LFkucHJvdG90eXBlLnJlbW92ZVNlc3Npb25Gcm9tUG9vbD1mdW5jdGlvbihVKXt0aGlzLnNlc3Npb25zPXRoaXMuc2Vzc2lv''@;'; put 'put ''bnMuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLmlkIT09VS5pZH0pfSxZLnByb3RvdHlwZS5yZW1vdmVFeHBpcmVkU2Vzc2lvbnM9ZnVuY3Rpb24oKXt2YXIgVT10aGlzO3RoaXMuc2Vzc2lvbnM9dGhpcy5zZXNzaW9ucy5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIFUuaXNTZXNzaW9u''@;'; put 'put ''VmFsaWQocSl9KX0sWS5wcm90b3R5cGUudGhyb3dFcnJvcnM9ZnVuY3Rpb24oVSxxKXt0aHJvdyBxPygwLEIucHJlZml4TWVzc2FnZSkobmV3IEVycm9yKFUuam9pbigiLiAiKSkscSk6bmV3IEVycm9yKFUubWFwKGZ1bmN0aW9uKEope3JldHVybiBKLm1lc3NhZ2U/Si5tZXNzYWdlOkp9KS5q''@;'; put 'put ''b2luKCIuICIpKX0sWS5wcm90b3R5cGUuZ2V0U2Vzc2lvbj1mdW5jdGlvbihVKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcSxKLGVlLHJlLGllPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbih1ZSl7c3dpdGNoKHVlLmxhYmVsKXtjYXNlIDA6cmV0dXJu''@;'; put 'put ''IHE9W10sSj0hMSxlZT1mdW5jdGlvbigpe3EubGVuZ3RoJiYhSiYmKEo9ITAsaWUudGhyb3dFcnJvcnMocSkpfSx0aGlzLnJlbW92ZUV4cGlyZWRTZXNzaW9ucygpLHRoaXMuc2Vzc2lvbnMubGVuZ3RoPyh0aGlzLnJlbW92ZVNlc3Npb25Gcm9tUG9vbChyZT10aGlzLnNlc3Npb25zWzBdKSx0''@;'; put 'put ''aGlzLmNyZWF0ZVNlc3Npb25zKFUpLmNhdGNoKGZ1bmN0aW9uKGxlKXtxLnB1c2gobGUpfSksdGhpcy5jcmVhdGVBbmRXYWl0Rm9yU2Vzc2lvbihVKS5jYXRjaChmdW5jdGlvbihsZSl7cS5wdXNoKGxlKX0pLGVlKCksWzIscmVdKTpbMywxXTtjYXNlIDE6cmV0dXJuIHRoaXMuY3JlYXRlU2Vz''@;'; put 'put ''c2lvbnMoVSkuY2F0Y2goZnVuY3Rpb24obGUpe3EucHVzaChsZSl9KSxbNCx0aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFUpLmNhdGNoKGZ1bmN0aW9uKGxlKXtxLnB1c2gobGUpfSldO2Nhc2UgMjpyZXR1cm4gdWUuc2VudCgpLHRoaXMucmVtb3ZlRXhwaXJlZFNlc3Npb25zKCkscmU9''@;'; put 'put ''dGhpcy5zZXNzaW9ucy5wb3AoKSx0aGlzLnJlbW92ZVNlc3Npb25Gcm9tUG9vbChyZSksZWUoKSxbMixyZV19fSl9KX0sWS5wcm90b3R5cGUuZ2V0RXJyb3JNZXNzYWdlPWZ1bmN0aW9uKFUscSxKKXtyZXR1cm4iIi5jb25jYXQoSiwiIHJlcXVlc3QgdG8gIikuY29uY2F0KHEsIiBmYWlsZWQg''@;'; put 'put ''d2l0aCBzdGF0dXMgY29kZSAiKS5jb25jYXQoVS5yZXNwb25zZS5zdGF0dXN8fCJ1bmtub3duIiwiLiAiKStVLnJlc3BvbnNlLmRhdGEubWVzc2FnZXx8IiJ9LFkucHJvdG90eXBlLmNsZWFyU2Vzc2lvbj1mdW5jdGlvbihVLHEpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBKLGVlPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihyZSl7c3dpdGNoKHJlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEo9Ii9jb21wdXRlL3Nlc3Npb25zLyIuY29uY2F0KFUpLFs0LHRoaXMucmVxdWVzdENsaWVudC5kZWxldGUoSixxKS50aGVuKGZ1bmN0aW9uKCl7ZWUuc2Vz''@;'; put 'put ''c2lvbnM9ZWUuc2Vzc2lvbnMuZmlsdGVyKGZ1bmN0aW9uKGllKXtyZXR1cm4gaWUuaWQhPT1VfSl9KS5jYXRjaChmdW5jdGlvbihpZSl7dGhyb3coMCxCLnByZWZpeE1lc3NhZ2UpKGVlLmdldEVycm9yTWVzc2FnZShpZSxKLCJERUxFVEUiKSwiRXJyb3Igd2hpbGUgZGVsZXRpbmcgc2Vzc2lv''@;'; put 'put ''bi4gIil9KV07Y2FzZSAxOnJldHVyblsyLHJlLnNlbnQoKV19fSl9KX0sWS5wcm90b3R5cGUuY3JlYXRlU2Vzc2lvbnM9ZnVuY3Rpb24oVSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHEsSj10aGlzO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oZWUpe3N3aXRj''@;'; put 'put ''aChlZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBxPVtdLHRoaXMuc2Vzc2lvbnMubGVuZ3RoP1szLDJdOls0LCgwLE4uYXN5bmNGb3JFYWNoKShuZXcgQXJyYXkoMSksZnVuY3Rpb24oKXtyZXR1cm4gRChKLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKHJl''@;'; put 'put ''KXtzd2l0Y2gocmUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uKFUpLmNhdGNoKGZ1bmN0aW9uKGllKXtxLnB1c2goaWUpfSldO2Nhc2UgMTpyZXR1cm4gcmUuc2VudCgpLFsyXX19KX0pfSldO2Nhc2UgMTplZS5zZW50KCksZWUubGFiZWw9Mjtj''@;'; put 'put ''YXNlIDI6cmV0dXJuIHEubGVuZ3RoJiZ0aGlzLnRocm93RXJyb3JzKHEsIkVycm9yIHdoaWxlIGNyZWF0aW5nIHNlc3Npb24uICIpLFsyXX19KX0pfSxZLnByb3RvdHlwZS53YWl0Rm9yQ3VycmVudENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgVT10aGlzO3JldHVybiBUKHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oSil7dmFyIGVlPXNldEludGVydmFsKGZ1bmN0aW9uKCl7VS5jdXJyZW50Q29udGV4dCYmKFUuc2V0dGluZ0NvbnRleHQ9ITEsY2xlYXJJbnRlcnZhbChlZSksSigp''@;'; put 'put ''KX0sMTAwKX0pXX0pfSl9LFkucHJvdG90eXBlLmNyZWF0ZUFuZFdhaXRGb3JTZXNzaW9uPWZ1bmN0aW9uKFUpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBxLEosZWUscmUsaWUsdWU9dGhpcztyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGxlKXtzd2l0Y2gobGUu''@;'; put 'put ''bGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jdXJyZW50Q29udGV4dD9bMyw0XTp0aGlzLnNldHRpbmdDb250ZXh0P1szLDJdOls0LHRoaXMuc2V0Q3VycmVudENvbnRleHQoVSldO2Nhc2UgMTpyZXR1cm4gbGUuc2VudCgpLFszLDRdO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLndhaXRGb3JDdXJy''@;'; put 'put ''ZW50Q29udGV4dCgpXTtjYXNlIDM6bGUuc2VudCgpLGxlLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBxPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHMvIikuY29uY2F0KHRoaXMuY3VycmVudENvbnRleHQuaWQsIi9zZXNzaW9ucyIpLFs0LHRoaXMucmVxdWVzdENs''@;'; put 'put ''aWVudC5wb3N0KHEse30sVSkuY2F0Y2goZnVuY3Rpb24oYWUpe3Rocm93KDAsQi5wcmVmaXhNZXNzYWdlKSh1ZS5nZXRFcnJvck1lc3NhZ2UoYWUscSwiUE9TVCIpLCJFcnJvciB3aGlsZSBjcmVhdGluZyBzZXNzaW9uLiAiKX0pXTtjYXNlIDU6aWYoSj1sZS5zZW50KCksKGVlPUoucmVzdWx0''@;'; put 'put ''KS5ldGFnPXJlPUouZXRhZywhKGllPWVlLmxpbmtzLmZpbmQoZnVuY3Rpb24oYWUpe3JldHVybiJzdGF0ZSI9PT1hZS5yZWx9KSkpdGhyb3cgdGhpcy5zZXNzaW9uU3RhdGVMaW5rRXJyb3I7cmV0dXJuIGVlLnN0YXRlVXJsPWllLmhyZWYsWzQsdGhpcy53YWl0Rm9yU2Vzc2lvbihlZSxyZSxV''@;'; put 'put ''KV07Y2FzZSA2OnJldHVybiBsZS5zZW50KCksdGhpcy5zZXNzaW9ucy5wdXNoKGVlKSxbMixlZV19fSl9KX0sWS5wcm90b3R5cGUuc2V0Q3VycmVudENvbnRleHQ9ZnVuY3Rpb24oVSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHEsSixyZSxpZT10aGlzO3Jl''@;'; put 'put ''dHVybiBUKHRoaXMsZnVuY3Rpb24odWUpe3N3aXRjaCh1ZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmN1cnJlbnRDb250ZXh0P1szLDJdOihxPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvY29udGV4dHM/bGltaXQ9MTAwMDAiKSx0aGlzLnNldHRpbmdDb250ZXh0PSEw''@;'; put 'put ''LFs0LHRoaXMucmVxdWVzdENsaWVudC5nZXQocSxVKS5jYXRjaChmdW5jdGlvbihsZSl7dGhyb3coMCxCLnByZWZpeE1lc3NhZ2UpKGllLmdldEVycm9yTWVzc2FnZShsZSxxLCJHRVQiKSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBsaXN0IG9mIGNvbnRleHRzLiAiKX0pXSk7Y2FzZSAxOmlmKEo9''@;'; put 'put ''dWUuc2VudCgpLnJlc3VsdCwhKHJlPShKJiZKLml0ZW1zJiZKLml0ZW1zLmxlbmd0aD9KLml0ZW1zOltdKS5maW5kKGZ1bmN0aW9uKGxlKXtyZXR1cm4gbGUubmFtZT09PWllLmNvbnRleHROYW1lfSkpKXRocm93IG5ldyBFcnJvcigiVGhlIGNvbnRleHQgJyIuY29uY2F0KHRoaXMuY29udGV4''@;'; put 'put ''dE5hbWUsIicgd2FzIG5vdCBmb3VuZCBvbiB0aGUgc2VydmVyICIpLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiLiIpKTt0aGlzLmN1cnJlbnRDb250ZXh0PXJlLFByb21pc2UucmVzb2x2ZSgpLHVlLmxhYmVsPTI7Y2FzZSAyOnJldHVyblsyXX19KX0pfSxZLnByb3RvdHlwZS53YWl0Rm9yU2Vz''@;'; put 'put ''c2lvbj1mdW5jdGlvbihVLHEsSil7dmFyIGVlO3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZSxpZSx1ZSxsZSxhZSxiLEE7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybiBpZT1VLnN0YXRlVXJsLHVlPWou''@;'; put 'put ''bG9nZ2VyfHxHLChyZT1VLnN0YXRlKSE9PUUuU2Vzc2lvblN0YXRlLlBlbmRpbmcmJnJlIT09RS5TZXNzaW9uU3RhdGUuUnVubmluZyYmcmUhPT1FLlNlc3Npb25TdGF0ZS5Ob1N0YXRlP1szLDZdOmllPyh0aGlzLmRlYnVnJiYhdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnByaW50ZWQmJih1''@;'; put 'put ''ZS5pbmZvKCJQb2xsaW5nOiAiLmNvbmNhdCh0aGlzLnNlcnZlclVybCtpZSkpLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5wcmludGVkPSEwKSxsZT0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwpLmNvbmNhdChpZSwiP3dhaXQ9MzAiKSxbNCx0aGlzLmdldFNlc3Npb25TdGF0ZShsZSxxLEop''@;'; put 'put ''LmNhdGNoKGZ1bmN0aW9uKEgpe3Rocm93KDAsQi5wcmVmaXhNZXNzYWdlKShILCJFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBzZXNzaW9uLiAiKX0pXSk6WzMsNF07Y2FzZSAxOnJldHVybiBhZT1GLnNlbnQoKSxiPWFlLnJlc3BvbnNlU3RhdHVzLHJlPWFlLnJlc3VsdC50cmltKCksdGhpcy5k''@;'; put 'put ''ZWJ1ZyYmdGhpcy5wcmludGVkU2Vzc2lvblN0YXRlLnN0YXRlIT09cmUmJih1ZS5pbmZvKCJDdXJyZW50IHNlc3Npb24gc3RhdGUgaXMgJyIuY29uY2F0KHJlLCInIikpLHRoaXMucHJpbnRlZFNlc3Npb25TdGF0ZS5zdGF0ZT1yZSx0aGlzLnByaW50ZWRTZXNzaW9uU3RhdGUucHJpbnRlZD0h''@;'; put 'put ''MSkscmU/WzMsM106KEE9bmV3IHouTm9TZXNzaW9uU3RhdGVFcnJvcihiLHRoaXMuc2VydmVyVXJsK2llLG51bGw9PT0oZWU9VS5saW5rcy5maW5kKGZ1bmN0aW9uKEgpe3JldHVybiJsb2ciPT09SC5yZWx9KSl8fHZvaWQgMD09PWVlP3ZvaWQgMDplZS5ocmVmKSx0aGlzLmxvZ2dlZEVycm9y''@;'; put 'put ''cy5maW5kKGZ1bmN0aW9uKEgpe3JldHVybiBILnNlcnZlclJlc3BvbnNlU3RhdHVzPT09QS5zZXJ2ZXJSZXNwb25zZVN0YXR1c30pfHwodGhpcy5sb2dnZWRFcnJvcnMucHVzaChBKSx1ZS5pbmZvKEEubWVzc2FnZSkpLFs0LHRoaXMud2FpdEZvclNlc3Npb24oVSxxLEopXSk7Y2FzZSAyOnJl''@;'; put 'put ''dHVyblsyLEYuc2VudCgpXTtjYXNlIDM6Y2FzZSA2OnJldHVybiB0aGlzLmxvZ2dlZEVycm9ycz1bXSxbMixyZV07Y2FzZSA0OnRocm93IHRoaXMuc2Vzc2lvblN0YXRlTGlua0Vycm9yO2Nhc2UgNTpyZXR1cm5bMyw3XTtjYXNlIDc6cmV0dXJuWzJdfX0pfSl9LFkucHJvdG90eXBlLmdldFNl''@;'; put 'put ''c3Npb25TdGF0ZT1mdW5jdGlvbihVLHEsSil7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGVlPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihyZSl7c3dpdGNoKHJlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LmdldChVLEos''@;'; put 'put ''InRleHQvcGxhaW4iLHsiSWYtTm9uZS1NYXRjaCI6cX0pLnRoZW4oZnVuY3Rpb24oaWUpe3JldHVybntyZXN1bHQ6aWUucmVzdWx0LHJlc3BvbnNlU3RhdHVzOmllLnN0YXR1c319KS5jYXRjaChmdW5jdGlvbihpZSl7dGhyb3coMCxCLnByZWZpeE1lc3NhZ2UpKGVlLmdldEVycm9yTWVzc2Fn''@;'; put 'put ''ZShpZSxVLCJHRVQiKSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBzZXNzaW9uIHN0YXRlLiAiKX0pXTtjYXNlIDE6cmV0dXJuWzIscmUuc2VudCgpXX19KX0pfSxZLnByb3RvdHlwZS5nZXRWYXJpYWJsZT1mdW5jdGlvbihVLHEsSil7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9u''@;'; put 'put ''KCl7dmFyIGVlLHJlPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihpZSl7c3dpdGNoKGllLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGVlPSIiLmNvbmNhdCh0aGlzLnNlcnZlclVybCwiL2NvbXB1dGUvc2Vzc2lvbnMvIikuY29uY2F0KFUsIi92YXJpYWJsZXMvIikuY29uY2F0KHEpLFs0LHRo''@;'; put 'put ''aXMucmVxdWVzdENsaWVudC5nZXQoZWUsSikuY2F0Y2goZnVuY3Rpb24odWUpe3Rocm93KDAsQi5wcmVmaXhNZXNzYWdlKShyZS5nZXRFcnJvck1lc3NhZ2UodWUsZWUsIkdFVCIpLCJFcnJvciB3aGlsZSBmZXRjaGluZyBzZXNzaW9uIHZhcmlhYmxlICciLmNvbmNhdChxLCInLiAiKSl9KV07''@;'; put 'put ''Y2FzZSAxOnJldHVyblsyLGllLnNlbnQoKV19fSl9KX0sWX0oKTtPLlNlc3Npb25NYW5hZ2VyPVp9LDE2MjI6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpLEc9SSg1MTA4KSxEPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEQ9T2JqZWN0''@;'; put 'put ''LmFzc2lnbnx8ZnVuY3Rpb24oZWUpe2Zvcih2YXIgcmUsaWU9MSx1ZT1hcmd1bWVudHMubGVuZ3RoO2llPHVlO2llKyspZm9yKHZhciBsZSBpbiByZT1hcmd1bWVudHNbaWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZSxsZSkmJihlZVtsZV09cmVbbGVdKTtyZXR1''@;'; put 'put ''cm4gZWV9LEQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxUPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihlZSxyZSxpZSx1ZSl7cmV0dXJuIG5ldyhpZXx8KGllPVByb21pc2UpKShmdW5jdGlvbihsZSxhZSl7ZnVuY3Rpb24gVyhGKXt0cnl7QSh1ZS5uZXh0KEYpKX1jYXRjaChIKXth''@;'; put 'put ''ZShIKX19ZnVuY3Rpb24gYihGKXt0cnl7QSh1ZS50aHJvdyhGKSl9Y2F0Y2goSCl7YWUoSCl9fWZ1bmN0aW9uIEEoRil7dmFyIEg7Ri5kb25lP2xlKEYudmFsdWUpOihIPUYudmFsdWUsSCBpbnN0YW5jZW9mIGllP0g6bmV3IGllKGZ1bmN0aW9uKGcpe2coSCl9KSkudGhlbihXLGIpfUEoKHVl''@;'; put 'put ''PXVlLmFwcGx5KGVlLHJlfHxbXSkpLm5leHQoKSl9KX0sRT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlZSxyZSl7dmFyIGllLHVlLGxlLGFlLFc9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmbGVbMF0pdGhyb3cgbGVbMV07cmV0dXJuIGxlWzFdfSx0cnlzOltdLG9w''@;'; put 'put ''czpbXX07cmV0dXJuIGFlPXtuZXh0OmIoMCksdGhyb3c6YigxKSxyZXR1cm46YigyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGFlO2Z1bmN0aW9uIGIoQSl7cmV0dXJuIGZ1bmN0aW9uKEYpe3JldHVy''@;'; put 'put ''biBmdW5jdGlvbihIKXtpZihpZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtXOyl0cnl7aWYoaWU9MSx1ZSYmKGxlPTImSFswXT91ZS5yZXR1cm46SFswXT91ZS50aHJvd3x8KChsZT11ZS5yZXR1cm4pJiZsZS5jYWxsKHVlKSww''@;'; put 'put ''KTp1ZS5uZXh0KSYmIShsZT1sZS5jYWxsKHVlLEhbMV0pKS5kb25lKXJldHVybiBsZTtzd2l0Y2godWU9MCxsZSYmKEg9WzImSFswXSxsZS52YWx1ZV0pLEhbMF0pe2Nhc2UgMDpjYXNlIDE6bGU9SDticmVhaztjYXNlIDQ6cmV0dXJuIFcubGFiZWwrKyx7dmFsdWU6SFsxXSxkb25lOiExfTtj''@;'; put 'put ''YXNlIDU6Vy5sYWJlbCsrLHVlPUhbMV0sSD1bMF07Y29udGludWU7Y2FzZSA3Okg9Vy5vcHMucG9wKCksVy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgobGU9KGxlPVcudHJ5cykubGVuZ3RoPjAmJmxlW2xlLmxlbmd0aC0xXSl8fDYhPT1IWzBdJiYyIT09SFswXSkpe1c9MDtj''@;'; put 'put ''b250aW51ZX1pZigzPT09SFswXSYmKCFsZXx8SFsxXT5sZVswXSYmSFsxXTxsZVszXSkpe1cubGFiZWw9SFsxXTticmVha31pZig2PT09SFswXSYmVy5sYWJlbDxsZVsxXSl7Vy5sYWJlbD1sZVsxXSxsZT1IO2JyZWFrfWlmKGxlJiZXLmxhYmVsPGxlWzJdKXtXLmxhYmVsPWxlWzJdLFcub3Bz''@;'; put 'put ''LnB1c2goSCk7YnJlYWt9bGVbMl0mJlcub3BzLnBvcCgpLFcudHJ5cy5wb3AoKTtjb250aW51ZX1IPXJlLmNhbGwoZWUsVyl9Y2F0Y2goZyl7SD1bNixnXSx1ZT0wfWZpbmFsbHl7aWU9bGU9MH1pZig1JkhbMF0pdGhyb3cgSFsxXTtyZXR1cm57dmFsdWU6SFswXT9IWzFdOnZvaWQgMCxkb25l''@;'; put 'put ''OiEwfX0oW0EsRl0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmV4ZWN1dGVPbkNvbXB1dGVBcGk9dm9pZCAwO3ZhciB6PUkoNzc1NyksTj1JKDk3NzgpLEI9SSgzNjA3KSxaPUkoNzA0KSxZPUkoNTkyOCksVT1JKDcxNCkscT1JKDEzNDMp''@;'; put 'put ''LEo9SSg2NDk2KTtPLmV4ZWN1dGVPbkNvbXB1dGVBcGk9ZnVuY3Rpb24gZWUocmUsaWUsdWUsbGUsYWUsVyxiLEEsRixILGcsQyxrLF8pe3ZhciBwLHc7cmV0dXJuIHZvaWQgMD09PUEmJihBPW51bGwpLHZvaWQgMD09PUYmJihGPSExKSx2b2lkIDA9PT1IJiYoSD0hMSksdm9pZCAwPT09ZyYm''@;'; put 'put ''KGc9ITApLHZvaWQgMD09PWsmJihrPSExKSxUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBLLHRlLGNlLGhlLFNlLExlLEhlLHhlLERlLEJlLEdlLFVlLHFlLG90LEZlLHdlLEVlLEllLFhlLHR0LFplLGN0LGtlPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihBZSl7c3dp''@;'; put 'put ''dGNoKEFlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEs9KGJ8fHt9KS5hY2Nlc3NfdG9rZW4sYj9bNCwoMCxaLmdldFRva2VucykocmUsYildOlszLDJdO2Nhc2UgMTpLPUFlLnNlbnQoKS5hY2Nlc3NfdG9rZW4sQWUubGFiZWw9MjtjYXNlIDI6dGU9ai5sb2dnZXJ8fEcsQWUubGFiZWw9MztjYXNl''@;'; put 'put ''IDM6cmV0dXJuIEFlLnRyeXMucHVzaChbMywxOSwsMjBdKSxjZT12b2lkIDAsWzQsaWUuZ2V0U2Vzc2lvbihLKS5jYXRjaChmdW5jdGlvbihqZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGplLCJFcnJvciB3aGlsZSBnZXR0aW5nIHNlc3Npb24uICIpfSldO2Nhc2UgNDpyZXR1cm4gaGU9''@;'; put 'put ''QWUuc2VudCgpLGNlPWhlLmlkLGs/WzQsaWUuZ2V0VmFyaWFibGUoY2UsIlNZU0pPQklEIixLKS5jYXRjaChmdW5jdGlvbihqZSl7dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGplLCJFcnJvciB3aGlsZSBnZXR0aW5nIHNlc3Npb24gdmFyaWFibGUuICIpfSldOlszLDZdO2Nhc2UgNTooU2U9''@;'; put 'put ''QWUuc2VudCgpLnJlc3VsdCkmJlNlLnZhbHVlJiYoTGU9dWU/bGUuc3BsaXQodWUpLmpvaW4oIiIpLnJlcGxhY2UoL15cLy8sIiIpOmxlLChqLmxvZ2dlcnx8RykuaW5mbygiVHJpZ2dlcmluZyAnIi5jb25jYXQoTGUsIicgd2l0aCBQSUQgIikuY29uY2F0KFNlLnZhbHVlLCIgYXQgIikuY29u''@;'; put 'put ''Y2F0KCgwLHoudGltZXN0YW1wVG9ZWVlZTU1EREhITU1TUykoKSkpKSxBZS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gSGU9dm9pZCAwLCgwLFkuaXNSZWxhdGl2ZVBhdGgpKGxlKT9IZT0iZXhlYy0iLmNvbmNhdChsZS5pbmNsdWRlcygiLyIpP2xlLnNwbGl0KCIvIilbMV06bGUpOih4ZT1sZS5z''@;'; put 'put ''cGxpdCgiLyIpLEhlPXhlLnBvcCgpKSxEZT17U1lTX0pFU19KT0JfVVJJOiIiLF9wcm9ncmFtOigwLFkuaXNSZWxhdGl2ZVBhdGgpKGxlKT91ZSsiLyIrbGU6bGV9LF8mJihEZT1EKEQoe30sRGUpLF8pKSxGJiYoRGU9RChEKHt9LERlKSx7X0RFQlVHOjEzMX0pKSxCZT1bXSxBP0pTT04uc3Ry''@;'; put 'put ''aW5naWZ5KEEpLmluY2x1ZGVzKCI7Iik/WzQsKDAsSi51cGxvYWRUYWJsZXMpKHJlLEEsSykuY2F0Y2goZnVuY3Rpb24oamUpe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShqZSwiRXJyb3Igd2hpbGUgdXBsb2FkaW5nIHRhYmxlcy4gIil9KV06WzMsOF06WzMsOV07Y2FzZSA3OnJldHVybiBC''@;'; put 'put ''ZT1BZS5zZW50KCksRGUuX3dlYmluX2ZpbGVfY291bnQ9QmUubGVuZ3RoLEJlLmZvckVhY2goZnVuY3Rpb24oamUsaXQpe0RlWyJfd2ViaW5fZmlsZXVyaSIuY29uY2F0KGl0KzEpXT0iL2ZpbGVzL2ZpbGVzLyIuY29uY2F0KGplLmZpbGUuaWQpLERlWyJfd2ViaW5fbmFtZSIuY29uY2F0KGl0''@;'; put 'put ''KzEpXT1qZS50YWJsZU5hbWV9KSxbMyw5XTtjYXNlIDg6RGU9RChEKHt9LERlKSwoMCxVLmZvcm1hdERhdGFGb3JSZXF1ZXN0KShBKSksQWUubGFiZWw9OTtjYXNlIDk6cmV0dXJuIEdlPXtuYW1lOkhlfHwiRGVmYXVsdCBKb2IgTmFtZSIsZGVzY3JpcHRpb246IlBvd2VyZWQgYnkgU0FTanMi''@;'; put 'put ''LGNvZGU6YWUsdmFyaWFibGVzOkRlLHZlcnNpb246Mn0sWzQscmUucG9zdCgiL2NvbXB1dGUvc2Vzc2lvbnMvIi5jb25jYXQoY2UsIi9qb2JzIiksR2UsSykuY2F0Y2goZnVuY3Rpb24oamUpe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShqZSwiRXJyb3Igd2hpbGUgcG9zdGluZyBqb2IuICIp''@;'; put 'put ''fSldO2Nhc2UgMTA6cmV0dXJuIFVlPUFlLnNlbnQoKSxxZT1VZS5yZXN1bHQsZz8oRiYmKHRlLmluZm8oIkpvYiBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yICciLmNvbmNhdChIZSwiJy4iKSksdGUuaW5mbygiWW91IGNhbiBtb25pdG9yIHRoZSBqb2IgcHJvZ3Jlc3MgYXQgJyIuY29uY2F0KHJl''@;'; put 'put ''LmdldEJhc2VVcmwoKSkuY29uY2F0KHFlLmxpbmtzLmZpbmQoZnVuY3Rpb24oamUpe3JldHVybiJzdGF0ZSI9PT1qZS5yZWx9KS5ocmVmLCInLiIpKSksWzQsKDAscS5wb2xsSm9iU3RhdGUpKHJlLHFlLEYsYixDLHtzZXNzaW9uOmhlLHNlc3Npb25NYW5hZ2VyOmllfSkuY2F0Y2goZnVuY3Rp''@;'; put 'put ''b24oamUpe3JldHVybiBUKGtlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaXQsc3QseHQsRnQsT3QsS3Q7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihibil7c3dpdGNoKGJuLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGl0PW51bGw9PT0oT3Q9amU/LnJlc3BvbnNlKXx8dm9pZCAwPT09T3Q/''@;'; put 'put ''dm9pZCAwOk90LmRhdGEsc3Q9L2Vycj1bMC05XSosLy5leGVjKGl0KSwiNTExMyIhPT0obnVsbD09PShLdD1zdD8uWzBdKXx8dm9pZCAwPT09S3Q/dm9pZCAwOkt0LnNsaWNlKDQsLTEpKT9bMywyXTooeHQ9cWUubGlua3MuZmluZChmdW5jdGlvbihCdCl7cmV0dXJuInVwIj09PUJ0LnJlbH0p''@;'; put 'put ''LmhyZWYrIi9sb2ciLEZ0PWplLFs0LCgwLFkuZmV0Y2hMb2dCeUNodW5rcykocmUsSyx4dCwxZTYpXSk7Y2FzZSAxOkZ0LmxvZz1ibi5zZW50KCksYm4ubGFiZWw9MjtjYXNlIDI6dGhyb3coMCxOLnByZWZpeE1lc3NhZ2UpKGplLCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0dXMuICIp''@;'; put 'put ''fX0pfSl9KV0pOlsyLGhlXTtjYXNlIDExOnJldHVybiBvdD1BZS5zZW50KCksYj9bNCwoMCxaLmdldFRva2VucykocmUsYildOlszLDEzXTtjYXNlIDEyOks9QWUuc2VudCgpLmFjY2Vzc190b2tlbixBZS5sYWJlbD0xMztjYXNlIDEzOnJldHVybls0LHJlLmdldCgiL2NvbXB1dGUvc2Vzc2lv''@;'; put 'put ''bnMvIi5jb25jYXQoY2UsIi9qb2JzLyIpLmNvbmNhdChxZS5pZCksSykuY2F0Y2goZnVuY3Rpb24oamUpe3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShqZSwiRXJyb3Igd2hpbGUgZ2V0dGluZyBqb2IuICIpfSldO2Nhc2UgMTQ6cmV0dXJuIEZlPUFlLnNlbnQoKS5yZXN1bHQsd2U9dm9pZCAw''@;'; put 'put ''LEVlPSIiLEllPUZlLmxpbmtzLmZpbmQoZnVuY3Rpb24oamUpe3JldHVybiJsb2ciPT09amUucmVsfSksRiYmSWU/KFhlPSIiLmNvbmNhdChJZS5ocmVmLCIvY29udGVudCIpLHR0PW51bGwhPT0odz1udWxsPT09KHA9RmUubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PXA/dm9pZCAwOnAubGlu''@;'; put 'put ''ZUNvdW50KSYmdm9pZCAwIT09dz93OjFlNixbNCwoMCxZLmZldGNoTG9nQnlDaHVua3MpKHJlLEssWGUsdHQpXSk6WzMsMTZdO2Nhc2UgMTU6RWU9QWUuc2VudCgpLEFlLmxhYmVsPTE2O2Nhc2UgMTY6aWYob3Q9PT1xLkpvYlN0YXRlLkZhaWxlZHx8b3Q9PT1xLkpvYlN0YXRlLkVycm9yKXRo''@;'; put 'put ''cm93IG5ldyBCLkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvcihGZSxFZSk7cmV0dXJuIEg/KFplPSIvY29tcHV0ZS9zZXNzaW9ucy8iLmNvbmNhdChjZSwiL2ZpbGVyZWZzL193ZWJvdXQvY29udGVudCIpLFs0LHJlLmdldChaZSxLLCJ0ZXh0L3BsYWluIikuY2F0Y2goZnVuY3Rpb24oamUpe3Jl''@;'; put 'put ''dHVybiBUKGtlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaXQsc3QseHQsRnQ7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihPdCl7c3dpdGNoKE90LmxhYmVsKXtjYXNlIDA6cmV0dXJuIGplIGluc3RhbmNlb2YgQi5Ob3RGb3VuZEVycm9yJiZJZT8oaXQ9IiIuY29uY2F0KEllLmhyZWYs''@;'; put 'put ''Ii9jb250ZW50Iiksc3Q9bnVsbCE9PShGdD1udWxsPT09KHh0PUZlLmxvZ1N0YXRpc3RpY3MpfHx2b2lkIDA9PT14dD92b2lkIDA6eHQubGluZUNvdW50KSYmdm9pZCAwIT09RnQ/RnQ6MWU2LFs0LCgwLFkuZmV0Y2hMb2dCeUNodW5rcykocmUsSyxpdCxzdCldKTpbMywyXTtjYXNlIDE6cmV0''@;'; put 'put ''dXJuIEVlPU90LnNlbnQoKSxbMixQcm9taXNlLnJlamVjdCh7c3RhdHVzOjUwMCxsb2c6RWV9KV07Y2FzZSAyOnJldHVyblsyLHtyZXN1bHQ6SlNPTi5zdHJpbmdpZnkoamUpfV19fSl9KX0pXSk6WzIse2pvYjpGZSxsb2c6RWV9XTtjYXNlIDE3OnJldHVybiB3ZT1BZS5zZW50KCksWzQsaWUu''@;'; put 'put ''Y2xlYXJTZXNzaW9uKGNlLEspLmNhdGNoKGZ1bmN0aW9uKGplKXt0aHJvdygwLE4ucHJlZml4TWVzc2FnZSkoamUsIkVycm9yIHdoaWxlIGNsZWFyaW5nIHNlc3Npb24uICIpfSldO2Nhc2UgMTg6cmV0dXJuIEFlLnNlbnQoKSxbMix7cmVzdWx0OndlPy5yZXN1bHQsbG9nOkVlfV07Y2FzZSAx''@;'; put 'put ''OTppZig0MDQ9PT0oY3Q9QWUuc2VudCgpKS5zdGF0dXMpcmV0dXJuWzIsZWUocmUsaWUsdWUsbGUsYWUsVyxiLEEsRiwhMSwhMCldO3Rocm93KDAsTi5wcmVmaXhNZXNzYWdlKShjdCwiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIHNjcmlwdC4gIik7Y2FzZSAyMDpyZXR1cm5bMl19fSl9KX19LDc0''@;'; put 'put ''NTg6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpLEc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHosTixCLFope3JldHVybiBuZXcoQnx8KEI9UHJvbWlzZSkpKGZ1bmN0aW9uKFksVSl7ZnVuY3Rpb24gcShyZSl7dHJ5e2VlKFoubmV4dChyZSkpfWNh''@;'; put 'put ''dGNoKGllKXtVKGllKX19ZnVuY3Rpb24gSihyZSl7dHJ5e2VlKFoudGhyb3cocmUpKX1jYXRjaChpZSl7VShpZSl9fWZ1bmN0aW9uIGVlKHJlKXt2YXIgaWU7cmUuZG9uZT9ZKHJlLnZhbHVlKTooaWU9cmUudmFsdWUsaWUgaW5zdGFuY2VvZiBCP2llOm5ldyBCKGZ1bmN0aW9uKHVlKXt1ZShp''@;'; put 'put ''ZSl9KSkudGhlbihxLEopfWVlKChaPVouYXBwbHkoeixOfHxbXSkpLm5leHQoKSl9KX0sRD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih6LE4pe3ZhciBCLFosWSxVLHE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmWVswXSl0aHJvdyBZWzFdO3JldHVybiBZWzFdfSx0''@;'; put 'put ''cnlzOltdLG9wczpbXX07cmV0dXJuIFU9e25leHQ6SigwKSx0aHJvdzpKKDEpLHJldHVybjpKKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoVVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxVO2Z1bmN0aW9uIEooZWUpe3JldHVybiBmdW5jdGlvbihy''@;'; put 'put ''ZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtpZihCKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3E7KXRyeXtpZihCPTEsWiYmKFk9MiZpZVswXT9aLnJldHVybjppZVswXT9aLnRocm93fHwoKFk9Wi5yZXR1cm4pJiZZLmNhbGwoWiks''@;'; put 'put ''MCk6Wi5uZXh0KSYmIShZPVkuY2FsbChaLGllWzFdKSkuZG9uZSlyZXR1cm4gWTtzd2l0Y2goWj0wLFkmJihpZT1bMiZpZVswXSxZLnZhbHVlXSksaWVbMF0pe2Nhc2UgMDpjYXNlIDE6WT1pZTticmVhaztjYXNlIDQ6cmV0dXJuIHEubGFiZWwrKyx7dmFsdWU6aWVbMV0sZG9uZTohMX07Y2Fz''@;'; put 'put ''ZSA1OnEubGFiZWwrKyxaPWllWzFdLGllPVswXTtjb250aW51ZTtjYXNlIDc6aWU9cS5vcHMucG9wKCkscS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoWT0oWT1xLnRyeXMpLmxlbmd0aD4wJiZZW1kubGVuZ3RoLTFdKXx8NiE9PWllWzBdJiYyIT09aWVbMF0pKXtxPTA7Y29u''@;'; put 'put ''dGludWV9aWYoMz09PWllWzBdJiYoIVl8fGllWzFdPllbMF0mJmllWzFdPFlbM10pKXtxLmxhYmVsPWllWzFdO2JyZWFrfWlmKDY9PT1pZVswXSYmcS5sYWJlbDxZWzFdKXtxLmxhYmVsPVlbMV0sWT1pZTticmVha31pZihZJiZxLmxhYmVsPFlbMl0pe3EubGFiZWw9WVsyXSxxLm9wcy5wdXNo''@;'; put 'put ''KGllKTticmVha31ZWzJdJiZxLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWV9aWU9Ti5jYWxsKHoscSl9Y2F0Y2godWUpe2llPVs2LHVlXSxaPTB9ZmluYWxseXtCPVk9MH1pZig1JmllWzBdKXRocm93IGllWzFdO3JldHVybnt2YWx1ZTppZVswXT9pZVsxXTp2b2lkIDAsZG9uZToh''@;'; put 'put ''MH19KFtlZSxyZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmdldEZpbGVTdHJlYW09dm9pZCAwO3ZhciBUPUkoMjk3NSksRT1JKDc3NTcpO08uZ2V0RmlsZVN0cmVhbT1mdW5jdGlvbih6LE4pe3JldHVybiBHKHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''dm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEIsWixZLFUscTtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKEope3N3aXRjaChKLmxhYmVsKXtjYXNlIDA6cmV0dXJuIEI9SSgyOTc1KS5jcmVhdGVXcml0ZVN0cmVhbSxaPU58fGouY3dkKCksWzQsKDAsVC5pc0ZvbGRlcikoWildO2Nhc2UgMTpyZXR1cm4g''@;'; put 'put ''Si5zZW50KCk/KFk9IiIuY29uY2F0KHoubmFtZXx8ImpvYiIsIi0iKS5jb25jYXQoKDAsRS5nZW5lcmF0ZVRpbWVzdGFtcCkoKSwiLmxvZyIpLFU9SSgyNTIwKSxxPVUuam9pbihOfHxqLmN3ZCgpLFkpLFs0LEIocSldKTpbMywzXTtjYXNlIDI6Y2FzZSA0OnJldHVyblsyLEouc2VudCgpXTtj''@;'; put 'put ''YXNlIDM6cmV0dXJuWzQsQihaKV19fSl9KX19LDEzNDM6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpLEc9SSg1MTA4KSxEPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocmUpe2Zvcih2YXIg''@;'; put 'put ''aWUsdWU9MSxsZT1hcmd1bWVudHMubGVuZ3RoO3VlPGxlO3VlKyspZm9yKHZhciBhZSBpbiBpZT1hcmd1bWVudHNbdWVdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpZSxhZSkmJihyZVthZV09aWVbYWVdKTtyZXR1cm4gcmV9LEQuYXBwbHkodGhpcyxhcmd1bWVudHMp''@;'; put 'put ''fSxUPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihyZSxpZSx1ZSxsZSl7cmV0dXJuIG5ldyh1ZXx8KHVlPVByb21pc2UpKShmdW5jdGlvbihhZSxXKXtmdW5jdGlvbiBiKEgpe3RyeXtGKGxlLm5leHQoSCkpfWNhdGNoKGcpe1coZyl9fWZ1bmN0aW9uIEEoSCl7dHJ5e0YobGUudGhy''@;'; put 'put ''b3coSCkpfWNhdGNoKGcpe1coZyl9fWZ1bmN0aW9uIEYoSCl7dmFyIGc7SC5kb25lP2FlKEgudmFsdWUpOihnPUgudmFsdWUsZyBpbnN0YW5jZW9mIHVlP2c6bmV3IHVlKGZ1bmN0aW9uKEMpe0MoZyl9KSkudGhlbihiLEEpfUYoKGxlPWxlLmFwcGx5KHJlLGllfHxbXSkpLm5leHQoKSl9KX0s''@;'; put 'put ''RT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihyZSxpZSl7dmFyIHVlLGxlLGFlLFcsYj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZhZVswXSl0aHJvdyBhZVsxXTtyZXR1cm4gYWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVz17bmV4dDpBKDApLHRocm93OkEo''@;'; put 'put ''MSkscmV0dXJuOkEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihXW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFc7ZnVuY3Rpb24gQShGKXtyZXR1cm4gZnVuY3Rpb24oSCl7cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKHVlKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2I7KXRyeXtpZih1ZT0xLGxlJiYoYWU9MiZnWzBdP2xlLnJldHVybjpnWzBdP2xlLnRocm93fHwoKGFlPWxlLnJldHVybikmJmFlLmNhbGwobGUpLDApOmxlLm5leHQpJiYhKGFlPWFlLmNhbGwobGUsZ1sxXSkpLmRv''@;'; put 'put ''bmUpcmV0dXJuIGFlO3N3aXRjaChsZT0wLGFlJiYoZz1bMiZnWzBdLGFlLnZhbHVlXSksZ1swXSl7Y2FzZSAwOmNhc2UgMTphZT1nO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYi5sYWJlbCsrLHt2YWx1ZTpnWzFdLGRvbmU6ITF9O2Nhc2UgNTpiLmxhYmVsKyssbGU9Z1sxXSxnPVswXTtjb250aW51''@;'; put 'put ''ZTtjYXNlIDc6Zz1iLm9wcy5wb3AoKSxiLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChhZT0oYWU9Yi50cnlzKS5sZW5ndGg+MCYmYWVbYWUubGVuZ3RoLTFdKXx8NiE9PWdbMF0mJjIhPT1nWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1nWzBdJiYoIWFlfHxnWzFdPmFlWzBd''@;'; put 'put ''JiZnWzFdPGFlWzNdKSl7Yi5sYWJlbD1nWzFdO2JyZWFrfWlmKDY9PT1nWzBdJiZiLmxhYmVsPGFlWzFdKXtiLmxhYmVsPWFlWzFdLGFlPWc7YnJlYWt9aWYoYWUmJmIubGFiZWw8YWVbMl0pe2IubGFiZWw9YWVbMl0sYi5vcHMucHVzaChnKTticmVha31hZVsyXSYmYi5vcHMucG9wKCksYi50''@;'; put 'put ''cnlzLnBvcCgpO2NvbnRpbnVlfWc9aWUuY2FsbChyZSxiKX1jYXRjaChDKXtnPVs2LENdLGxlPTB9ZmluYWxseXt1ZT1hZT0wfWlmKDUmZ1swXSl0aHJvdyBnWzFdO3JldHVybnt2YWx1ZTpnWzBdP2dbMV06dm9pZCAwLGRvbmU6ITB9fShbRixIXSl9fX0sej10aGlzJiZ0aGlzLl9fc3ByZWFk''@;'; put 'put ''QXJyYXl8fGZ1bmN0aW9uKHJlLGllLHVlKXtpZih1ZXx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBsZSxhZT0wLFc9aWUubGVuZ3RoO2FlPFc7YWUrKykhbGUmJmFlIGluIGllfHwobGV8fChsZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpZSwwLGFlKSksbGVbYWVdPWllW2Fl''@;'; put 'put ''XSk7cmV0dXJuIHJlLmNvbmNhdChsZXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaWUpKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZG9Qb2xsPU8ucG9sbEpvYlN0YXRlPU8uSm9iU3RhdGU9dm9pZCAwO3ZhciBOLHJlLEI9SSg3MDQp''@;'; put 'put ''LFo9SSgxMzk1KSxZPUkoMTIzMCksVT1JKDU5MjgpOyhyZT1OPU8uSm9iU3RhdGV8fChPLkpvYlN0YXRlPXt9KSkuQ29tcGxldGVkPSJjb21wbGV0ZWQiLHJlLlJ1bm5pbmc9InJ1bm5pbmciLHJlLlBlbmRpbmc9InBlbmRpbmciLHJlLlVuYXZhaWxhYmxlPSJ1bmF2YWlsYWJsZSIscmUuTm9T''@;'; put 'put ''dGF0ZT0iIixyZS5GYWlsZWQ9ImZhaWxlZCIscmUuRXJyb3I9ImVycm9yIixPLnBvbGxKb2JTdGF0ZT1mdW5jdGlvbihyZSxpZSx1ZSxsZSxhZSxXKXtyZXR1cm4gVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYixBLEYsSCxnLEMsayxfLHAsdyxLO3JldHVybiBFKHRoaXMs''@;'; put 'put ''ZnVuY3Rpb24odGUpe3N3aXRjaCh0ZS5sYWJlbCl7Y2FzZSAwOmlmKGI9ai5sb2dnZXJ8fEcsQT1hZT8uc3RyZWFtTG9nfHwhMSxGPVt7bWF4UG9sbENvdW50OjIwMCxwb2xsSW50ZXJ2YWw6MzAwfSx7bWF4UG9sbENvdW50OjMwMCxwb2xsSW50ZXJ2YWw6M2UzfSx7bWF4UG9sbENvdW50OjUw''@;'; put 'put ''MCxwb2xsSW50ZXJ2YWw6M2U0fSx7bWF4UG9sbENvdW50OjM0MDAscG9sbEludGVydmFsOjZlNH1dLHZvaWQgMCE9PWFlPyhIPVthZV0sdm9pZCAwIT09KGc9YWUucG9sbFN0cmF0ZWd5KT8oZWUoZyksZz1nLnNvcnQoZnVuY3Rpb24oY2UsaGUpe3JldHVybiBjZS5tYXhQb2xsQ291bnQtaGUu''@;'; put 'put ''bWF4UG9sbENvdW50fSksSD16KHooW10sSCwhMCksZywhMCkpOkg9eih6KFtdLEgsITApLEYsITApKTpIPUYsQz1ILnNwbGljZSgwLDEpWzBdLGFlPUQoRCh7fSxDKSxhZXx8e30pLCEoaz1pZS5saW5rcy5maW5kKGZ1bmN0aW9uKGNlKXtyZXR1cm4ic3RhdGUiPT09Y2UucmVsfSkpKXRocm93''@;'; put 'put ''IG5ldyBFcnJvcigiSm9iIHN0YXRlIGxpbmsgd2FzIG5vdCBmb3VuZC4iKTtyZXR1cm5bNCxxKHJlLGllLE4uTm9TdGF0ZSx1ZSxsZSkuY2F0Y2goZnVuY3Rpb24oY2Upe3JldHVybiBiLmVycm9yKCJFcnJvciBmZXRjaGluZyBqb2Igc3RhdGUgZnJvbSAiLmNvbmNhdChrLmhyZWYsIi4gU3Rh''@;'; put 'put ''cnRpbmcgcG9sbCwgYXNzdW1pbmcgam9iIHRvIGJlIHJ1bm5pbmcuIiksY2UpLE4uVW5hdmFpbGFibGV9KV07Y2FzZSAxOnJldHVybiBfPXRlLnNlbnQoKSxwPTAsXz09PU4uQ29tcGxldGVkP1syLFByb21pc2UucmVzb2x2ZShfKV06QSYmKDAsVS5pc05vZGUpKCk/WzQsKDAsSSg3NDU4KS5n''@;'; put 'put ''ZXRGaWxlU3RyZWFtKShpZSxhZS5sb2dGb2xkZXJQYXRoKV06WzMsM107Y2FzZSAyOnc9dGUuc2VudCgpLHRlLmxhYmVsPTM7Y2FzZSAzOnJldHVybls0LCgwLE8uZG9Qb2xsKShyZSxpZSxfLHVlLHAsYWUsbGUsQSx3LFcpXTtjYXNlIDQ6aWYoSz10ZS5zZW50KCkscD1LLnBvbGxDb3VudCwh''@;'; put 'put ''SihfPUsuc3RhdGUpfHxwPj1hZS5tYXhQb2xsQ291bnQmJiFILmxlbmd0aClyZXR1cm5bMixfXTt0ZS5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gSC5sZW5ndGgmJkooXyk/KEM9SC5zcGxpY2UoMCwxKVswXSxhZSYmKEMubG9nRm9sZGVyUGF0aD1hZS5sb2dGb2xkZXJQYXRoKSxbNCwoMCxPLmRv''@;'; put 'put ''UG9sbCkocmUsaWUsXyx1ZSxwLEMsbGUsQSx3LFcpXSk6WzMsN107Y2FzZSA2OnJldHVybiBLPXRlLnNlbnQoKSxfPUsuc3RhdGUscD1LLnBvbGxDb3VudCxbMyw1XTtjYXNlIDc6cmV0dXJuIHcmJncuZW5kKCksWzIsX119fSl9KX07dmFyIHE9ZnVuY3Rpb24ocmUsaWUsdWUsbGUsYWUpe3Jl''@;'; put 'put ''dHVybiBUKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFcsYjtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuIFc9aWUubGlua3MuZmluZChmdW5jdGlvbihGKXtyZXR1cm4ic3RhdGUiPT09Ri5yZWx9KSxKKHVlKT8oYj12''@;'; put 'put ''b2lkIDAsYWU/WzQsKDAsQi5nZXRUb2tlbnMpKHJlLGFlKV06WzMsMl0pOlszLDRdO2Nhc2UgMTpiPUEuc2VudCgpLEEubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzQscmUuZ2V0KCIiLmNvbmNhdChXLmhyZWYsIj9fYWN0aW9uPXdhaXQmd2FpdD0zMDAiKSxiPy5hY2Nlc3NfdG9rZW4sInRleHQv''@;'; put 'put ''cGxhaW4iLHt9LGxlKS5jYXRjaChmdW5jdGlvbihGKXt0aHJvdyBuZXcgWi5Kb2JTdGF0ZVBvbGxFcnJvcihpZS5pZCxGKX0pXTtjYXNlIDM6cmV0dXJuWzIsQS5zZW50KCkucmVzdWx0LnRyaW0oKV07Y2FzZSA0OnJldHVyblsyLHVlXX19KX0pfSxKPWZ1bmN0aW9uKHJlKXtyZXR1cm4gcmU9''@;'; put 'put ''PT1OLlJ1bm5pbmd8fHJlPT09Ti5Ob1N0YXRlfHxyZT09PU4uUGVuZGluZ3x8cmU9PT1OLlVuYXZhaWxhYmxlfTtPLmRvUG9sbD1mdW5jdGlvbihyZSxpZSx1ZSxsZSxhZSxXLGIsQSxGLEgpe3JldHVybiBUKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGcsQyxrLF8scCx3''@;'; put 'put ''LEssdGUsY2UsaGUsU2U7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihMZSl7c3dpdGNoKExlLmxhYmVsKXtjYXNlIDA6Zz1XLm1heFBvbGxDb3VudCxDPVcucG9sbEludGVydmFsLGs9ai5sb2dnZXJ8fEcsXz1pZS5saW5rcy5maW5kKGZ1bmN0aW9uKEhlKXtyZXR1cm4ic3RhdGUiPT09SGUucmVs''@;'; put 'put ''fSkscD0wLHc9dWUsSz1OLk5vU3RhdGUsdGU9MCxjZT1mdW5jdGlvbigpe3ZhciBIZSx4ZSxHZSxVZSxxZSxvdCxGZSx3ZSxFZSxJZSxYZSx0dCxaZSxjdDtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGtlKXtzd2l0Y2goa2UubGFiZWwpe2Nhc2UgMDpyZXR1cm4gSCYmYWUmJmFlJTEwPT0wJiZi''@;'; put 'put ''PyhHZT0oSGU9SC5zZXNzaW9uKS5pZCxxZT1pZS5pZCxbNCwoeGU9SC5zZXNzaW9uTWFuYWdlcikuZ2V0U2Vzc2lvblN0YXRlKEhlLnN0YXRlVXJsLEhlLmV0YWcsVWU9Yi5hY2Nlc3NfdG9rZW4pLmNhdGNoKGZ1bmN0aW9uKEFlKXt0aHJvdyBuZXcgWi5Kb2JTdGF0ZVBvbGxFcnJvcihxZSxB''@;'; put 'put ''ZSl9KV0pOlszLDJdO2Nhc2UgMTppZihvdD1rZS5zZW50KCksd2U9b3QucmVzcG9uc2VTdGF0dXMsIShFZT1mdW5jdGlvbihBZSl7cmV0dXJuW1kuU2Vzc2lvblN0YXRlLlJ1bm5pbmcsWS5TZXNzaW9uU3RhdGUuSWRsZV0uaW5jbHVkZXMoQWUpfSkoRmU9b3QucmVzdWx0KXx8MjAwIT09d2Up''@;'; put 'put ''dGhyb3cgeGUuY2xlYXJTZXNzaW9uKEdlLFVlKSxJZT1FZShGZSk/IlNlc3Npb24gcmVzcG9uc2Ugc3RhdHVzIGlzIG5vdCAyMDAuIFNlc3Npb24gcmVzcG9uc2Ugc3RhdHVzIGlzICIuY29uY2F0KHdlLCIuIik6IlNlc3Npb24gc3RhdGUgb2YgdGhlIGpvYiBpcyBub3QgJ3J1bm5pbmcnIG9y''@;'; put 'put ''ICdpZGxlJy4gU2Vzc2lvbiBzdGF0ZSBpcyAnIi5jb25jYXQoRmUsIiciKSxuZXcgWi5Kb2JTdGF0ZVBvbGxFcnJvcihxZSxuZXcgRXJyb3IoSWUpKTtrZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bNCxxKHJlLGllLHcsbGUsYikuY2F0Y2goZnVuY3Rpb24oQWUpe2lmKHArKyxhZT49Z3x8cD49''@;'; put 'put ''NSl0aHJvdyBBZTtyZXR1cm4gay5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgam9iIHN0YXRlIGZyb20gIi5jb25jYXQoXy5ocmVmLCIuIFJlc3VtaW5nIHBvbGwsIGFzc3VtaW5nIGpvYiB0byBiZSBydW5uaW5nLiIpLEFlKSxOLlVuYXZhaWxhYmxlfSldO2Nhc2UgMzpyZXR1cm4gdz1rZS5zZW50''@;'; put 'put ''KCksYWUrKyxYZT1pZS5saW5rcy5maW5kKGZ1bmN0aW9uKEFlKXtyZXR1cm4ic2VsZiI9PT1BZS5yZWx9KS5ocmVmLEE/WzQscmUuZ2V0KFhlLGI/LmFjY2Vzc190b2tlbildOlszLDddO2Nhc2UgNDpyZXR1cm4gdHQ9a2Uuc2VudCgpLnJlc3VsdCxaZT1udWxsIT09KFNlPW51bGw9PT0oaGU9''@;'; put 'put ''dHQubG9nU3RhdGlzdGljcyl8fHZvaWQgMD09PWhlP3ZvaWQgMDpoZS5saW5lQ291bnQpJiZ2b2lkIDAhPT1TZT9TZToxZTYsKGN0PSgoMCxVLmlzTm9kZSkoKT9JKDIwODApOntzYXZlTG9nOm51bGx9KS5zYXZlTG9nKT9bNCxjdChpZSxyZSx0ZSxaZSxGLGI/LmFjY2Vzc190b2tlbildOlsz''@;'; put 'put ''LDZdO2Nhc2UgNTprZS5zZW50KCksa2UubGFiZWw9NjtjYXNlIDY6dGUrPVplLGtlLmxhYmVsPTc7Y2FzZSA3OnJldHVybiBsZSYmSyE9PXcmJihrLmluZm8oIlBvbGxpbmc6ICIuY29uY2F0KHJlLmdldEJhc2VVcmwoKStYZSwiL3N0YXRlIikpLGsuaW5mbygiQ3VycmVudCBqb2Igc3RhdGU6''@;'; put 'put ''ICIuY29uY2F0KHcpKSxLPXcpLHchPT1OLlVuYXZhaWxhYmxlJiZwPjAmJihwPTApLHc9PT1OLkNvbXBsZXRlZD9bMyw5XTpbNCwoMCxVLmRlbGF5KShDKV07Y2FzZSA4OmtlLnNlbnQoKSxrZS5sYWJlbD05O2Nhc2UgOTpyZXR1cm5bMl19fSl9LExlLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBK''@;'; put 'put ''KHcpJiZhZTw9Zz9bNSxjZSgpXTpbMywzXTtjYXNlIDI6cmV0dXJuIExlLnNlbnQoKSxbMywxXTtjYXNlIDM6cmV0dXJuWzIse3N0YXRlOncscG9sbENvdW50OmFlfV19fSl9KX07dmFyIGVlPWZ1bmN0aW9uKHJlKXt2YXIgaWU9ZnVuY3Rpb24odWUsbGUpe3Rocm93IG5ldyBFcnJvcigiUG9s''@;'; put 'put ''bCBzdHJhdGVnaWVzIGFyZSBub3QgdmFsaWQuIi5jb25jYXQodWU/IiAiLmNvbmNhdCh1ZSk6IiIpLmNvbmNhdChsZT8iIEludmFsaWQgcG9sbCBzdHJhdGVneTogXG4iLmNvbmNhdChKU09OLnN0cmluZ2lmeShsZSxudWxsLDIpKToiIikpfTtyZS5mb3JFYWNoKGZ1bmN0aW9uKHVlLGxlKXt2''@;'; put 'put ''YXIgYWU9dWUubWF4UG9sbENvdW50LFc9dWUucG9sbEludGVydmFsO2FlPDE/aWUoIidtYXhQb2xsQ291bnQnIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC4iLHVlKTowIT09bGU/YWU8PXJlW2xlLTFdLm1heFBvbGxDb3VudCYmaWUoIidtYXhQb2xsQ291bnQnIGhhcyB0byBiZSBncmVhdGVy''@;'; put 'put ''IHRoYW4gJ21heFBvbGxDb3VudCcgaW4gcHJldmlvdXMgcG9sbCBzdHJhdGVneS4iLHVlKTpXPDEmJmllKCIncG9sbEludGVydmFsJyBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuIix1ZSl9KX19LDIwODA6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDQxNTUpLEc9SSg1''@;'; put 'put ''MTA4KSxEPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihOLEIsWixZKXtyZXR1cm4gbmV3KFp8fChaPVByb21pc2UpKShmdW5jdGlvbihVLHEpe2Z1bmN0aW9uIEooaWUpe3RyeXtyZShZLm5leHQoaWUpKX1jYXRjaCh1ZSl7cSh1ZSl9fWZ1bmN0aW9uIGVlKGllKXt0cnl7cmUoWS50''@;'; put 'put ''aHJvdyhpZSkpfWNhdGNoKHVlKXtxKHVlKX19ZnVuY3Rpb24gcmUoaWUpe3ZhciB1ZTtpZS5kb25lP1UoaWUudmFsdWUpOih1ZT1pZS52YWx1ZSx1ZSBpbnN0YW5jZW9mIFo/dWU6bmV3IFooZnVuY3Rpb24obGUpe2xlKHVlKX0pKS50aGVuKEosZWUpfXJlKChZPVkuYXBwbHkoTixCfHxbXSkp''@;'; put 'put ''Lm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihOLEIpe3ZhciBaLFksVSxxLEo9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVVswXSl0aHJvdyBVWzFdO3JldHVybiBVWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHE9e25leHQ6ZWUoMCksdGhy''@;'; put 'put ''b3c6ZWUoMSkscmV0dXJuOmVlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYocVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxxO2Z1bmN0aW9uIGVlKHJlKXtyZXR1cm4gZnVuY3Rpb24oaWUpe3JldHVybiBmdW5jdGlvbih1ZSl7aWYoWil0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtKOyl0cnl7aWYoWj0xLFkmJihVPTImdWVbMF0/WS5yZXR1cm46dWVbMF0/WS50aHJvd3x8KChVPVkucmV0dXJuKSYmVS5jYWxsKFkpLDApOlkubmV4dCkmJiEoVT1VLmNhbGwoWSx1ZVsxXSkpLmRv''@;'; put 'put ''bmUpcmV0dXJuIFU7c3dpdGNoKFk9MCxVJiYodWU9WzImdWVbMF0sVS52YWx1ZV0pLHVlWzBdKXtjYXNlIDA6Y2FzZSAxOlU9dWU7YnJlYWs7Y2FzZSA0OnJldHVybiBKLmxhYmVsKysse3ZhbHVlOnVlWzFdLGRvbmU6ITF9O2Nhc2UgNTpKLmxhYmVsKyssWT11ZVsxXSx1ZT1bMF07Y29udGlu''@;'; put 'put ''dWU7Y2FzZSA3OnVlPUoub3BzLnBvcCgpLEoudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFU9KFU9Si50cnlzKS5sZW5ndGg+MCYmVVtVLmxlbmd0aC0xXSl8fDYhPT11ZVswXSYmMiE9PXVlWzBdKSl7Sj0wO2NvbnRpbnVlfWlmKDM9PT11ZVswXSYmKCFVfHx1ZVsxXT5VWzBd''@;'; put 'put ''JiZ1ZVsxXTxVWzNdKSl7Si5sYWJlbD11ZVsxXTticmVha31pZig2PT09dWVbMF0mJkoubGFiZWw8VVsxXSl7Si5sYWJlbD1VWzFdLFU9dWU7YnJlYWt9aWYoVSYmSi5sYWJlbDxVWzJdKXtKLmxhYmVsPVVbMl0sSi5vcHMucHVzaCh1ZSk7YnJlYWt9VVsyXSYmSi5vcHMucG9wKCksSi50cnlz''@;'; put 'put ''LnBvcCgpO2NvbnRpbnVlfXVlPUIuY2FsbChOLEopfWNhdGNoKGxlKXt1ZT1bNixsZV0sWT0wfWZpbmFsbHl7Wj1VPTB9aWYoNSZ1ZVswXSl0aHJvdyB1ZVsxXTtyZXR1cm57dmFsdWU6dWVbMF0/dWVbMV06dm9pZCAwLGRvbmU6ITB9fShbcmUsaWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5zYXZlTG9nPXZvaWQgMDt2YXIgRT1JKDU5MjgpLHo9SSg2MTMxKTtPLnNhdmVMb2c9ZnVuY3Rpb24oTixCLFosWSxVLHEpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBKLGVlLHJlO3JldHVybiBUKHRo''@;'; put 'put ''aXMsZnVuY3Rpb24oaWUpe3N3aXRjaChpZS5sYWJlbCl7Y2FzZSAwOmlmKCFxKXRocm93IG5ldyBFcnJvcigiTG9ncyBmb3Igam9iICIuY29uY2F0KE4uaWQsIiBjYW5ub3QgYmUgZmV0Y2hlZCB3aXRob3V0IGEgdmFsaWQgYWNjZXNzIHRva2VuLiIpKTtpZighVSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IkxvZ3MgZm9yIGpvYiAiLmNvbmNhdChOLmlkLCIgY2Fubm90IGJlIHdyaXR0ZW4gd2l0aG91dCBhIHZhbGlkIHdyaXRlIHN0cmVhbS4iKSk7aWYoSj1qLmxvZ2dlcnx8RywhKGVlPU4ubGlua3MuZmluZChmdW5jdGlvbih1ZSl7cmV0dXJuImxvZyI9PT11ZS5yZWx9KSkpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJMb2cgVVJMIGZvciBqb2IgIi5jb25jYXQoTi5pZCwiIHdhcyBub3QgZm91bmQuIikpO3JldHVybls0LCgwLEUuZmV0Y2hMb2cpKEIscSwiIi5jb25jYXQoZWUuaHJlZiwiL2NvbnRlbnQiKSxaLFkpXTtjYXNlIDE6cmV0dXJuIHJlPWllLnNlbnQoKSxKLmluZm8oIldyaXRpbmcgbG9n''@;'; put 'put ''cyB0byAiLmNvbmNhdChVLnBhdGgpKSxbNCwoMCx6LndyaXRlU3RyZWFtKShVLHJlfHwiIildO2Nhc2UgMjpyZXR1cm4gaWUuc2VudCgpLFsyXX19KX0pfX0sNjQ5NjpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihFLHos''@;'; put 'put ''TixCKXtyZXR1cm4gbmV3KE58fChOPVByb21pc2UpKShmdW5jdGlvbihaLFkpe2Z1bmN0aW9uIFUoZWUpe3RyeXtKKEIubmV4dChlZSkpfWNhdGNoKHJlKXtZKHJlKX19ZnVuY3Rpb24gcShlZSl7dHJ5e0ooQi50aHJvdyhlZSkpfWNhdGNoKHJlKXtZKHJlKX19ZnVuY3Rpb24gSihlZSl7dmFy''@;'; put 'put ''IHJlO2VlLmRvbmU/WihlZS52YWx1ZSk6KHJlPWVlLnZhbHVlLHJlIGluc3RhbmNlb2YgTj9yZTpuZXcgTihmdW5jdGlvbihpZSl7aWUocmUpfSkpLnRoZW4oVSxxKX1KKChCPUIuYXBwbHkoRSx6fHxbXSkpLm5leHQoKSl9KX0sRz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihF''@;'; put 'put ''LHope3ZhciBOLEIsWixZLFU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmWlswXSl0aHJvdyBaWzFdO3JldHVybiBaWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIFk9e25leHQ6cSgwKSx0aHJvdzpxKDEpLHJldHVybjpxKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYo''@;'; put 'put ''WVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxZO2Z1bmN0aW9uIHEoSil7cmV0dXJuIGZ1bmN0aW9uKGVlKXtyZXR1cm4gZnVuY3Rpb24ocmUpe2lmKE4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7''@;'; put 'put ''VTspdHJ5e2lmKE49MSxCJiYoWj0yJnJlWzBdP0IucmV0dXJuOnJlWzBdP0IudGhyb3d8fCgoWj1CLnJldHVybikmJlouY2FsbChCKSwwKTpCLm5leHQpJiYhKFo9Wi5jYWxsKEIscmVbMV0pKS5kb25lKXJldHVybiBaO3N3aXRjaChCPTAsWiYmKHJlPVsyJnJlWzBdLFoudmFsdWVdKSxyZVsw''@;'; put 'put ''XSl7Y2FzZSAwOmNhc2UgMTpaPXJlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gVS5sYWJlbCsrLHt2YWx1ZTpyZVsxXSxkb25lOiExfTtjYXNlIDU6VS5sYWJlbCsrLEI9cmVbMV0scmU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpyZT1VLm9wcy5wb3AoKSxVLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVs''@;'; put 'put ''dDppZighKChaPShaPVUudHJ5cykubGVuZ3RoPjAmJlpbWi5sZW5ndGgtMV0pfHw2IT09cmVbMF0mJjIhPT1yZVswXSkpe1U9MDtjb250aW51ZX1pZigzPT09cmVbMF0mJighWnx8cmVbMV0+WlswXSYmcmVbMV08WlszXSkpe1UubGFiZWw9cmVbMV07YnJlYWt9aWYoNj09PXJlWzBdJiZVLmxh''@;'; put 'put ''YmVsPFpbMV0pe1UubGFiZWw9WlsxXSxaPXJlO2JyZWFrfWlmKFomJlUubGFiZWw8WlsyXSl7VS5sYWJlbD1aWzJdLFUub3BzLnB1c2gocmUpO2JyZWFrfVpbMl0mJlUub3BzLnBvcCgpLFUudHJ5cy5wb3AoKTtjb250aW51ZX1yZT16LmNhbGwoRSxVKX1jYXRjaChpZSl7cmU9WzYsaWVdLEI9''@;'; put 'put ''MH1maW5hbGx5e049Wj0wfWlmKDUmcmVbMF0pdGhyb3cgcmVbMV07cmV0dXJue3ZhbHVlOnJlWzBdP3JlWzFdOnZvaWQgMCxkb25lOiEwfX0oW0osZWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy51cGxvYWRUYWJsZXM9dm9pZCAwO3Zh''@;'; put 'put ''ciBEPUkoOTc3OCksVD1JKDI0MDIpO08udXBsb2FkVGFibGVzPWZ1bmN0aW9uKEUseixOKXtyZXR1cm4gaih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQixaLFksVSxxLEosZWU7cmV0dXJuIEcodGhpcyxmdW5jdGlvbihyZSl7c3dpdGNoKHJlLmxhYmVsKXtjYXNlIDA6Zm9y''@;'; put 'put ''KFkgaW4gQj1bXSxaPVtdLHopWi5wdXNoKFkpO1U9MCxyZS5sYWJlbD0xO2Nhc2UgMTppZighKFU8Wi5sZW5ndGgpKXJldHVyblszLDRdO2lmKCJFUlJPUjogTEFSR0UgU1RSSU5HIExFTkdUSCI9PT0oSj0oMCxULmNvbnZlcnRUb0NTVikoeixxPVpbVV0pKSl0aHJvdyBuZXcgRXJyb3IoIlRo''@;'; put 'put ''ZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7cmV0dXJuWzQsRS51cGxvYWRGaWxlKCIvZmlsZXMvZmlsZXMjcmF3VXBsb2FkIixKLE4pLmNhdGNoKGZ1bmN0aW9uKGllKXt0aHJvdygwLEQucHJlZml4TWVzc2FnZSkoaWUsIkVy''@;'; put 'put ''cm9yIHdoaWxlIHVwbG9hZGluZyBmaWxlLiAiKX0pXTtjYXNlIDI6ZWU9cmUuc2VudCgpLEIucHVzaCh7dGFibGVOYW1lOnEsZmlsZTplZS5yZXN1bHR9KSxyZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gVSsrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMixCXX19KX0pfX0sNjEzMTpmdW5jdGlvbihN''@;'; put 'put ''LE8peyJ1c2Ugc3RyaWN0Ijt2YXIgST10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oRyxELFQsRSl7cmV0dXJuIG5ldyhUfHwoVD1Qcm9taXNlKSkoZnVuY3Rpb24oeixOKXtmdW5jdGlvbiBCKFUpe3RyeXtZKEUubmV4dChVKSl9Y2F0Y2gocSl7TihxKX19ZnVuY3Rpb24gWihVKXt0''@;'; put 'put ''cnl7WShFLnRocm93KFUpKX1jYXRjaChxKXtOKHEpfX1mdW5jdGlvbiBZKFUpe3ZhciBxO1UuZG9uZT96KFUudmFsdWUpOihxPVUudmFsdWUscSBpbnN0YW5jZW9mIFQ/cTpuZXcgVChmdW5jdGlvbihKKXtKKHEpfSkpLnRoZW4oQixaKX1ZKChFPUUuYXBwbHkoRyxEfHxbXSkpLm5leHQoKSl9''@;'; put 'put ''KX0saj10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihHLEQpe3ZhciBULEUseixOLEI9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmelswXSl0aHJvdyB6WzFdO3JldHVybiB6WzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIE49e25leHQ6WigwKSx0aHJvdzpaKDEpLHJl''@;'; put 'put ''dHVybjpaKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoTltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxOO2Z1bmN0aW9uIFooWSl7cmV0dXJuIGZ1bmN0aW9uKFUpe3JldHVybiBmdW5jdGlvbihxKXtpZihUKXRocm93IG5ldyBUeXBlRXJyb3IoIkdl''@;'; put 'put ''bmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO0I7KXRyeXtpZihUPTEsRSYmKHo9MiZxWzBdP0UucmV0dXJuOnFbMF0/RS50aHJvd3x8KCh6PUUucmV0dXJuKSYmei5jYWxsKEUpLDApOkUubmV4dCkmJiEoej16LmNhbGwoRSxxWzFdKSkuZG9uZSlyZXR1cm4gejtzd2l0Y2go''@;'; put 'put ''RT0wLHomJihxPVsyJnFbMF0sei52YWx1ZV0pLHFbMF0pe2Nhc2UgMDpjYXNlIDE6ej1xO2JyZWFrO2Nhc2UgNDpyZXR1cm4gQi5sYWJlbCsrLHt2YWx1ZTpxWzFdLGRvbmU6ITF9O2Nhc2UgNTpCLmxhYmVsKyssRT1xWzFdLHE9WzBdO2NvbnRpbnVlO2Nhc2UgNzpxPUIub3BzLnBvcCgpLEIu''@;'; put 'put ''dHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHo9KHo9Qi50cnlzKS5sZW5ndGg+MCYmelt6Lmxlbmd0aC0xXSl8fDYhPT1xWzBdJiYyIT09cVswXSkpe0I9MDtjb250aW51ZX1pZigzPT09cVswXSYmKCF6fHxxWzFdPnpbMF0mJnFbMV08elszXSkpe0IubGFiZWw9cVsxXTticmVh''@;'; put 'put ''a31pZig2PT09cVswXSYmQi5sYWJlbDx6WzFdKXtCLmxhYmVsPXpbMV0sej1xO2JyZWFrfWlmKHomJkIubGFiZWw8elsyXSl7Qi5sYWJlbD16WzJdLEIub3BzLnB1c2gocSk7YnJlYWt9elsyXSYmQi5vcHMucG9wKCksQi50cnlzLnBvcCgpO2NvbnRpbnVlfXE9RC5jYWxsKEcsQil9Y2F0Y2go''@;'; put 'put ''Sil7cT1bNixKXSxFPTB9ZmluYWxseXtUPXo9MH1pZig1JnFbMF0pdGhyb3cgcVsxXTtyZXR1cm57dmFsdWU6cVswXT9xWzFdOnZvaWQgMCxkb25lOiEwfX0oW1ksVV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLndyaXRlU3RyZWFtPXZv''@;'; put 'put ''aWQgMCxPLndyaXRlU3RyZWFtPWZ1bmN0aW9uKEcsRCl7cmV0dXJuIEkodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gaih0aGlzLGZ1bmN0aW9uKFQpe3JldHVyblsyLEcud3JpdGUoRCsiXG4iLGZ1bmN0aW9uKEUpe3JldHVybiBFP1Byb21pc2UucmVqZWN0KEUpOlBy''@;'; put 'put ''b21pc2UucmVzb2x2ZSgpfSldfSl9KX19LDI4NTE6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDUxMDgpLEc9SSg0MTU1KSxEPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihyZSxpZSx1ZSxsZSl7cmV0dXJuIG5ldyh1ZXx8KHVlPVByb21pc2UpKShmdW5jdGlv''@;'; put 'put ''bihhZSxXKXtmdW5jdGlvbiBiKEgpe3RyeXtGKGxlLm5leHQoSCkpfWNhdGNoKGcpe1coZyl9fWZ1bmN0aW9uIEEoSCl7dHJ5e0YobGUudGhyb3coSCkpfWNhdGNoKGcpe1coZyl9fWZ1bmN0aW9uIEYoSCl7dmFyIGc7SC5kb25lP2FlKEgudmFsdWUpOihnPUgudmFsdWUsZyBpbnN0YW5jZW9m''@;'; put 'put ''IHVlP2c6bmV3IHVlKGZ1bmN0aW9uKEMpe0MoZyl9KSkudGhlbihiLEEpfUYoKGxlPWxlLmFwcGx5KHJlLGllfHxbXSkpLm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihyZSxpZSl7dmFyIHVlLGxlLGFlLFcsYj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7''@;'; put 'put ''aWYoMSZhZVswXSl0aHJvdyBhZVsxXTtyZXR1cm4gYWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVz17bmV4dDpBKDApLHRocm93OkEoMSkscmV0dXJuOkEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihXW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''c30pLFc7ZnVuY3Rpb24gQShGKXtyZXR1cm4gZnVuY3Rpb24oSCl7cmV0dXJuIGZ1bmN0aW9uKGcpe2lmKHVlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2I7KXRyeXtpZih1ZT0xLGxlJiYoYWU9MiZnWzBdP2xlLnJldHVybjpn''@;'; put 'put ''WzBdP2xlLnRocm93fHwoKGFlPWxlLnJldHVybikmJmFlLmNhbGwobGUpLDApOmxlLm5leHQpJiYhKGFlPWFlLmNhbGwobGUsZ1sxXSkpLmRvbmUpcmV0dXJuIGFlO3N3aXRjaChsZT0wLGFlJiYoZz1bMiZnWzBdLGFlLnZhbHVlXSksZ1swXSl7Y2FzZSAwOmNhc2UgMTphZT1nO2JyZWFrO2Nh''@;'; put 'put ''c2UgNDpyZXR1cm4gYi5sYWJlbCsrLHt2YWx1ZTpnWzFdLGRvbmU6ITF9O2Nhc2UgNTpiLmxhYmVsKyssbGU9Z1sxXSxnPVswXTtjb250aW51ZTtjYXNlIDc6Zz1iLm9wcy5wb3AoKSxiLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChhZT0oYWU9Yi50cnlzKS5sZW5ndGg+MCYm''@;'; put 'put ''YWVbYWUubGVuZ3RoLTFdKXx8NiE9PWdbMF0mJjIhPT1nWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1nWzBdJiYoIWFlfHxnWzFdPmFlWzBdJiZnWzFdPGFlWzNdKSl7Yi5sYWJlbD1nWzFdO2JyZWFrfWlmKDY9PT1nWzBdJiZiLmxhYmVsPGFlWzFdKXtiLmxhYmVsPWFlWzFdLGFlPWc7YnJl''@;'; put 'put ''YWt9aWYoYWUmJmIubGFiZWw8YWVbMl0pe2IubGFiZWw9YWVbMl0sYi5vcHMucHVzaChnKTticmVha31hZVsyXSYmYi5vcHMucG9wKCksYi50cnlzLnBvcCgpO2NvbnRpbnVlfWc9aWUuY2FsbChyZSxiKX1jYXRjaChDKXtnPVs2LENdLGxlPTB9ZmluYWxseXt1ZT1hZT0wfWlmKDUmZ1swXSl0''@;'; put 'put ''aHJvdyBnWzFdO3JldHVybnt2YWx1ZTpnWzBdP2dbMV06dm9pZCAwLGRvbmU6ITB9fShbRixIXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uQXV0aE1hbmFnZXI9dm9pZCAwO3ZhciBFPUkoMzkwMCksej1JKDEzOTUpLE49SSg1OTI4KSxC''@;'; put 'put ''PUkoMTE3MCksWj1JKDU0MTgpLFk9SSg0NTgyKSxVPUkoNjU0NykscT1mdW5jdGlvbigpe2Z1bmN0aW9uIHJlKGllLHVlLGxlLGFlKXt2YXIgVz10aGlzO3RoaXMuc2VydmVyVXJsPWllLHRoaXMuc2VydmVyVHlwZT11ZSx0aGlzLnJlcXVlc3RDbGllbnQ9bGUsdGhpcy5sb2dpbkNhbGxiYWNr''@;'; put 'put ''PWFlLHRoaXMudXNlck5hbWU9IiIsdGhpcy51c2VyTG9uZ05hbWU9IiIsdGhpcy5yZWRpcmVjdGVkTG9naW5Vcmw9Ii9TQVNMb2dvbiIsdGhpcy5leHRyYWN0VXNlck5hbWU9ZnVuY3Rpb24oYil7c3dpdGNoKFcuc2VydmVyVHlwZSl7Y2FzZSBFLlNlcnZlclR5cGUuU2FzVml5YTpyZXR1cm4g''@;'; put 'put ''Yj8uaWQ7Y2FzZSBFLlNlcnZlclR5cGUuU2FzOTpyZXR1cm4iIjtjYXNlIEUuU2VydmVyVHlwZS5TYXNqczpyZXR1cm4gYj8udXNlcm5hbWU7ZGVmYXVsdDpyZXR1cm4gai5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGluIGV4dHJhY3RVc2VyTmFtZSBmdW5jdGlvbiIpLCIifX0sdGhp''@;'; put 'put ''cy5leHRyYWN0VXNlckxvbmdOYW1lPWZ1bmN0aW9uKGIpe3N3aXRjaChXLnNlcnZlclR5cGUpe2Nhc2UgRS5TZXJ2ZXJUeXBlLlNhc1ZpeWE6cmV0dXJuIGI/Lm5hbWU7Y2FzZSBFLlNlcnZlclR5cGUuU2FzOTpyZXR1cm4oMCxCLmV4dHJhY3RVc2VyTG9uZ05hbWVTYXM5KShiKTtjYXNlIEUu''@;'; put 'put ''U2VydmVyVHlwZS5TYXNqczpyZXR1cm4gYj8uZGlzcGxheU5hbWU7ZGVmYXVsdDpyZXR1cm4gai5lcnJvcigiU2VydmVyIFR5cGUgbm90IGZvdW5kIGluIGV4dHJhY3RVc2VyTmFtZSBmdW5jdGlvbiIpLCIifX0sdGhpcy5zZXRMb2dpblVybD1mdW5jdGlvbihiKXt2YXIgQT1iWzFdLnJlcGxh''@;'; put 'put ''Y2UoL1w/LiovLCIiKTtpZigiLyI9PT1BWzBdKXtBPUEuc3Vic3RyKDEpO3ZhciBGPVcuc2VydmVyVXJsPyIiLmNvbmNhdChXLnNlcnZlclVybCwiLyIpLmNvbmNhdChBKToiIi5jb25jYXQoQSk7Vy5sb2dpblVybD1XLnNlcnZlclR5cGU9PT1FLlNlcnZlclR5cGUuU2FzVml5YT9GOkYucmVw''@;'; put 'put ''bGFjZSgiL1NBU0xvZ29uL2xvZ2luLmRvIiwiL1NBU0xvZ29uL2xvZ2luIil9fSx0aGlzLmxvZ2luVXJsPSIvU0FTTG9nb24vbG9naW4iLHRoaXMubG9nb3V0VXJsPXRoaXMuc2VydmVyVHlwZT09PUUuU2VydmVyVHlwZS5TYXM5PyIvU0FTTG9nb24vbG9nb3V0PyI6dGhpcy5zZXJ2ZXJUeXBl''@;'; put 'put ''PT09RS5TZXJ2ZXJUeXBlLlNhc1ZpeWE/Ii9TQVNMb2dvbi9sb2dvdXQuZG8/IjoiL1NBU0xvZ29uL2xvZ291dCIsdGhpcy5yZWRpcmVjdGVkTG9naW5Vcmw9dGhpcy5zZXJ2ZXJVcmwrdGhpcy5yZWRpcmVjdGVkTG9naW5Vcmx9cmV0dXJuIHJlLnByb3RvdHlwZS5yZWRpcmVjdGVkTG9nSW49''@;'; put 'put ''ZnVuY3Rpb24oaWUpe3ZhciB1ZT1pZS5vbkxvZ2dlZE91dDtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbGUsVyxiLEEsRixILGcsQyxrO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oXyl7c3dpdGNoKF8ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmZldGNo''@;'; put 'put ''VXNlck5hbWUoKV07Y2FzZSAxOnJldHVybiBsZT1fLnNlbnQoKSxXPWxlLnVzZXJOYW1lLGI9bGUudXNlckxvbmdOYW1lLGxlLmlzTG9nZ2VkSW4/KChHLmxvZ2dlcnx8aikubG9nKCJsb2dpbiB3YXMgbm90IGF0dGVtcHRlZCBhcyBhIHZhbGlkIHNlc3Npb24gYWxyZWFkeSBleGlzdHMiKSxb''@;'; put 'put ''NCx0aGlzLmxvZ2luQ2FsbGJhY2soKV0pOlszLDNdO2Nhc2UgMjpyZXR1cm4gXy5zZW50KCksWzIse2lzTG9nZ2VkSW46ITAsdXNlck5hbWU6Vyx1c2VyTG9uZ05hbWU6Yn1dO2Nhc2UgMzpyZXR1cm5bNCwoMCxaLm9wZW5XZWJQYWdlKSh0aGlzLnJlZGlyZWN0ZWRMb2dpblVybCwiU0FTTG9n''@;'; put 'put ''b24iLHt3aWR0aDo1MDAsaGVpZ2h0OjYwMH0sdWUpXTtjYXNlIDQ6cmV0dXJuKEE9Xy5zZW50KCkpP3RoaXMuc2VydmVyVHlwZSE9PUUuU2VydmVyVHlwZS5TYXNWaXlhP1szLDZdOls0LCgwLFUudmVyaWZ5U2FzVml5YUxvZ2luKShBKV06WzIse2lzTG9nZ2VkSW46ITEsdXNlck5hbWU6IiIs''@;'; put 'put ''dXNlckxvbmdOYW1lOiIifV07Y2FzZSA1OnJldHVybiBIPV8uc2VudCgpLFszLDhdO2Nhc2UgNjpyZXR1cm5bNCwoMCxZLnZlcmlmeVNhczlMb2dpbikoQSldO2Nhc2UgNzpIPV8uc2VudCgpLF8ubGFiZWw9ODtjYXNlIDg6cmV0dXJuIEY9SC5pc0xvZ2dlZEluLEEuY2xvc2UoKSxGP3RoaXMu''@;'; put 'put ''c2VydmVyVHlwZSE9PUUuU2VydmVyVHlwZS5TYXM5P1szLDEwXTpbNCx0aGlzLnBlcmZvcm1DQVNTZWN1cml0eUNoZWNrKCldOlszLDEzXTtjYXNlIDk6Xy5zZW50KCksXy5sYWJlbD0xMDtjYXNlIDEwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgpXTtjYXNlIDExOnJldHVybiBnPV8u''@;'; put 'put ''c2VudCgpLEM9Zy51c2VyTmFtZSxrPWcudXNlckxvbmdOYW1lLFs0LHRoaXMubG9naW5DYWxsYmFjaygpXTtjYXNlIDEyOnJldHVybiBfLnNlbnQoKSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTpDLHVzZXJMb25nTmFtZTprfV07Y2FzZSAxMzpyZXR1cm5bMix7aXNMb2dnZWRJbjohMSx1''@;'; put 'put ''c2VyTmFtZToiIix1c2VyTG9uZ05hbWU6IiJ9XX19KX0pfSxyZS5wcm90b3R5cGUubG9nSW49ZnVuY3Rpb24oaWUsdWUpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsZSxhZSxiLEEsRixILGcsQztyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKGspe3N3aXRjaChr''@;'; put 'put ''LmxhYmVsKXtjYXNlIDA6cmV0dXJuIGxlPXtfc2VydmljZToiZGVmYXVsdCIsdXNlcm5hbWU6aWUscGFzc3dvcmQ6dWV9LHRoaXMudXNlck5hbWU9IiIsdGhpcy51c2VyTG9uZ05hbWU9IiIsWzQsdGhpcy5jaGVja1Nlc3Npb24oKV07Y2FzZSAxOnJldHVybiBhZT1rLnNlbnQoKSxiPWFlLmxv''@;'; put 'put ''Z2luRm9ybSxBPWFlLnVzZXJMb25nTmFtZSxhZS5pc0xvZ2dlZEluPygoRy5sb2dnZXJ8fGopLmxvZygibG9naW4gd2FzIG5vdCBhdHRlbXB0ZWQgYXMgYSB2YWxpZCBzZXNzaW9uIGFscmVhZHkgZXhpc3RzIiksWzQsdGhpcy5sb2dpbkNhbGxiYWNrKCldKTpbMywzXTtjYXNlIDI6cmV0dXJu''@;'; put 'put ''IGsuc2VudCgpLHRoaXMudXNlck5hbWU9bGUudXNlcm5hbWUsdGhpcy51c2VyTG9uZ05hbWU9QSxbMix7aXNMb2dnZWRJbjohMCx1c2VyTmFtZTp0aGlzLnVzZXJOYW1lLHVzZXJMb25nTmFtZTp0aGlzLnVzZXJMb25nTmFtZX1dO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLnNlbmRMb2dpblJlcXVl''@;'; put 'put ''c3QoYixsZSldO2Nhc2UgNDpyZXR1cm4gRj1rLnNlbnQoKSwoSD1lZSh0aGlzLnNlcnZlclR5cGUsRikpP1szLDldOkooRik/WzQsdGhpcy5nZXRMb2dpbkZvcm0oRildOlszLDddO2Nhc2UgNTpyZXR1cm4gZz1rLnNlbnQoKSxbNCx0aGlzLnNlbmRMb2dpblJlcXVlc3QoZyxsZSldO2Nhc2Ug''@;'; put 'put ''NjpGPWsuc2VudCgpLGsubGFiZWw9NztjYXNlIDc6cmV0dXJuWzQsdGhpcy5jaGVja1Nlc3Npb24oKV07Y2FzZSA4OkM9ay5zZW50KCksSD1DLmlzTG9nZ2VkSW4sdGhpcy51c2VyTG9uZ05hbWU9Qy51c2VyTG9uZ05hbWUsay5sYWJlbD05O2Nhc2UgOTpyZXR1cm4gSD90aGlzLnNlcnZlclR5''@;'; put 'put ''cGUhPT1FLlNlcnZlclR5cGUuU2FzOT9bMywxMV06WzQsdGhpcy5wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaygpXTpbMywxMl07Y2FzZSAxMDprLnNlbnQoKSxrLmxhYmVsPTExO2Nhc2UgMTE6dGhpcy5sb2dpbkNhbGxiYWNrKCksdGhpcy51c2VyTmFtZT1sZS51c2VybmFtZSxrLmxhYmVsPTEy''@;'; put 'put ''O2Nhc2UgMTI6cmV0dXJuWzIse2lzTG9nZ2VkSW46SCx1c2VyTmFtZTp0aGlzLnVzZXJOYW1lLHVzZXJMb25nTmFtZTp0aGlzLnVzZXJMb25nTmFtZX1dfX0pfSl9LHJlLnByb3RvdHlwZS5wZXJmb3JtQ0FTU2VjdXJpdHlDaGVjaz1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZv''@;'; put 'put ''aWQgMCxmdW5jdGlvbigpe3ZhciBpZTtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKHVlKXtzd2l0Y2godWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gaWU9IiIuY29uY2F0KHRoaXMuc2VydmVyVXJsLCIvU0FTU3RvcmVkUHJvY2Vzcy9qX3NwcmluZ19jYXNfc2VjdXJpdHlfY2hlY2siKSxbNCx0aGlz''@;'; put 'put ''LnJlcXVlc3RDbGllbnQuZ2V0KCIvU0FTTG9nb24vbG9naW4/c2VydmljZT0iLmNvbmNhdChpZSksdm9pZCAwKS5jYXRjaChmdW5jdGlvbihsZSl7aWYoIShsZSBpbnN0YW5jZW9mIHouTm90Rm91bmRFcnJvcikpdGhyb3cgbGV9KV07Y2FzZSAxOnJldHVybiB1ZS5zZW50KCksWzJdfX0pfSl9''@;'; put 'put ''LHJlLnByb3RvdHlwZS5zZW5kTG9naW5SZXF1ZXN0PWZ1bmN0aW9uKGllLHVlKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVyxiO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5zZXJ2ZXJUeXBl''@;'; put 'put ''IT09RS5TZXJ2ZXJUeXBlLlNhc2pzP1szLDJdOls0LHRoaXMucmVxdWVzdENsaWVudC5wb3N0KHRoaXMubG9naW5Vcmwse3VzZXJuYW1lOnVlLnVzZXJuYW1lLHBhc3N3b3JkOnVlLnBhc3N3b3JkfSx2b2lkIDApXTtjYXNlIDE6Y2FzZSAzOnJldHVyblsyLEEuc2VudCgpLnJlc3VsdF07Y2Fz''@;'; put 'put ''ZSAyOmZvcihXIGluIGllKXVlW1ddPWllW1ddO3JldHVybiBiPSgwLE4uc2VyaWFsaXplKSh1ZSksWzQsdGhpcy5yZXF1ZXN0Q2xpZW50LnBvc3QodGhpcy5sb2dpblVybCxiLHZvaWQgMCwidGV4dC9wbGFpbiIseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu''@;'; put 'put ''Y29kZWQiLEFjY2VwdDoiKi8qIn0pXX19KX0pfSxyZS5wcm90b3R5cGUuY2hlY2tTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGllLHVlLGxlLGFlLFc7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihiKXtzd2l0Y2goYi5sYWJlbCl7''@;'; put 'put ''Y2FzZSAwOnJldHVybls0LHRoaXMuZmV0Y2hVc2VyTmFtZSgpXTtjYXNlIDE6cmV0dXJuIGllPWIuc2VudCgpLGxlPWllLnVzZXJOYW1lLGFlPWllLnVzZXJMb25nTmFtZSxXPW51bGwsKHVlPWllLmlzTG9nZ2VkSW4pP1szLDRdOls0LHRoaXMubG9nT3V0KCldO2Nhc2UgMjpyZXR1cm4gYi5z''@;'; put 'put ''ZW50KCksWzQsdGhpcy5nZXROZXdMb2dpbkZvcm0oKV07Y2FzZSAzOlc9Yi5zZW50KCksYi5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMixQcm9taXNlLnJlc29sdmUoe2lzTG9nZ2VkSW46dWUsdXNlck5hbWU6bGUsdXNlckxvbmdOYW1lOmFlLGxvZ2luRm9ybTpXfSldfX0pfSl9LHJlLnByb3Rv''@;'; put 'put ''dHlwZS5nZXROZXdMb2dpbkZvcm09ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaWU7cmV0dXJuIFQodGhpcyxmdW5jdGlvbih1ZSl7c3dpdGNoKHVlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuc2VydmVyVHlwZT09PUUuU2VydmVyVHlw''@;'; put 'put ''ZS5TYXNqcz9bMix0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KCIvIix2b2lkIDApLnRoZW4oZnVuY3Rpb24obGUpe3ZhciBhZSxiPW51bGw9PT0oYWU9LzxzY3JpcHQ+ZG9jdW1lbnQuY29va2llID0gJyhYU1JGLVRPS0VOPS4qOyBNYXgtQWdlPTg2NDAwOyBTYW1lU2l0ZT1TdHJpY3Q7IFBhdGg9''@;'; put 'put ''XC87KSc8XC9zY3JpcHQ+Ly5leGVjKGxlLnJlc3VsdCkpfHx2b2lkIDA9PT1hZT92b2lkIDA6YWVbMV07YiYmKGRvY3VtZW50LmNvb2tpZT1iKX0pXTpbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KHRoaXMubG9naW5VcmwucmVwbGFjZSgiL1NBU0xvZ29uL2xvZ2luLmRvIiwiL1NBU0xvZ29u''@;'; put 'put ''L2xvZ2luIiksdm9pZCAwLCJ0ZXh0L3BsYWluIildO2Nhc2UgMTpyZXR1cm4gaWU9dWUuc2VudCgpLnJlc3VsdCxbNCx0aGlzLmdldExvZ2luRm9ybShpZSldO2Nhc2UgMjpyZXR1cm5bMix1ZS5zZW50KCldfX0pfSl9LHJlLnByb3RvdHlwZS5mZXRjaFVzZXJOYW1lPWZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGllLHVlLGxlO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYWUpe3N3aXRjaChhZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBpZT0iIi5jb25jYXQodGhpcy5zZXJ2ZXJVcmwsdGhpcy5zZXJ2ZXJUeXBlPT09RS5TZXJ2ZXJUeXBl''@;'; put 'put ''LlNhc1ZpeWE/Ii9pZGVudGl0aWVzL3VzZXJzL0BjdXJyZW50VXNlciI6dGhpcy5zZXJ2ZXJUeXBlPT09RS5TZXJ2ZXJUeXBlLlNhczk/Ii9TQVNTdG9yZWRQcm9jZXNzIjoiL1NBU2pzQXBpL3Nlc3Npb24iKSxbNCx0aGlzLnJlcXVlc3RDbGllbnQuZ2V0KGllLHZvaWQgMCwidGV4dC9wbGFp''@;'; put 'put ''biIpLmNhdGNoKGZ1bmN0aW9uKFcpe3JldHVybntyZXN1bHQ6ImF1dGhFcnIifX0pXTtjYXNlIDE6cmV0dXJuIHVlPWFlLnNlbnQoKS5yZXN1bHQsKGxlPSJhdXRoRXJyIiE9PXVlKT9bMywzXTpbNCx0aGlzLmxvZ091dCgpXTtjYXNlIDI6cmV0dXJuIGFlLnNlbnQoKSxbMix7aXNMb2dnZWRJ''@;'; put 'put ''bjpsZSx1c2VyTmFtZToiIix1c2VyTG9uZ05hbWU6IiJ9XTtjYXNlIDM6cmV0dXJuWzIse2lzTG9nZ2VkSW46bGUsdXNlck5hbWU6dGhpcy5leHRyYWN0VXNlck5hbWUodWUpLHVzZXJMb25nTmFtZTp0aGlzLmV4dHJhY3RVc2VyTG9uZ05hbWUodWUpfV19fSl9KX0scmUucHJvdG90eXBlLmdl''@;'; put 'put ''dExvZ2luRm9ybT1mdW5jdGlvbihpZSl7dmFyIHVlPS88Zm9ybS4rYWN0aW9uPSIoLiooTG9nb258bG9naW4pW14iXSopLio+Ly5leGVjKGllKSxsZT17fTtpZih1ZSYmdWUubGVuZ3RoKXt0aGlzLnNldExvZ2luVXJsKHVlKTt2YXIgYWU9KGllPWllLnJlcGxhY2UoLzxpbnB1dC9nLCJcbjxp''@;'; put 'put ''bnB1dCIpKS5tYXRjaCgvPGlucHV0LioiaGlkZGVuIltePl0qPi9nKTthZSYmYWUuZm9yRWFjaChmdW5jdGlvbihXKXt2YXIgYj1XLm1hdGNoKC9uYW1lPSIoW14iXSopIlxzdmFsdWU9IihbXiJdKikvKTtiJiZiLmxlbmd0aCYmKGxlW2JbMV1dPWJbMl0pfSl9cmV0dXJuIE9iamVjdC5rZXlz''@;'; put 'put ''KGxlKS5sZW5ndGg/bGU6bnVsbH0scmUucHJvdG90eXBlLmxvZ091dD1mdW5jdGlvbigpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oaWUpe3JldHVybiB0aGlzLnJlcXVlc3RDbGllbnQuY2xlYXJDc3JmVG9rZW5zKCksWzIs''@;'; put 'put ''dGhpcy5yZXF1ZXN0Q2xpZW50LmdldCh0aGlzLmxvZ291dFVybCx2b2lkIDApLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4hMH0pXX0pfSl9LHJlfSgpO08uQXV0aE1hbmFnZXI9cTt2YXIgSj1mdW5jdGlvbihyZSl7cmV0dXJuL0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRoZSBzeXN0ZW0gd2Fz''@;'; put 'put ''IHZlcmlmeWluZyB5b3VyIGNyZWRlbnRpYWxzLiBQbGVhc2UgZW50ZXIgeW91ciBjcmVkZW50aWFscyBhZ2Fpbi4vZ20udGVzdChyZSl9LGVlPWZ1bmN0aW9uKHJlLGllKXtyZXR1cm4gcmU9PT1FLlNlcnZlclR5cGUuU2FzanM/aWU/LmxvZ2dlZGluOi9Zb3UgaGF2ZSBzaWduZWQgaW4vZ20u''@;'; put 'put ''dGVzdChpZSl9fSw1NzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbih6LE4sQixaKXtyZXR1cm4gbmV3KEJ8fChCPVByb21pc2UpKShmdW5jdGlvbihZLFUpe2Z1bmN0aW9uIHEocmUpe3RyeXtlZShaLm5leHQocmUpKX1j''@;'; put 'put ''YXRjaChpZSl7VShpZSl9fWZ1bmN0aW9uIEoocmUpe3RyeXtlZShaLnRocm93KHJlKSl9Y2F0Y2goaWUpe1UoaWUpfX1mdW5jdGlvbiBlZShyZSl7dmFyIGllO3JlLmRvbmU/WShyZS52YWx1ZSk6KGllPXJlLnZhbHVlLGllIGluc3RhbmNlb2YgQj9pZTpuZXcgQihmdW5jdGlvbih1ZSl7dWUo''@;'; put 'put ''aWUpfSkpLnRoZW4ocSxKKX1lZSgoWj1aLmFwcGx5KHosTnx8W10pKS5uZXh0KCkpfSl9LEc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oeixOKXt2YXIgQixaLFksVSxxPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJllbMF0pdGhyb3cgWVsxXTtyZXR1cm4gWVsxXX0s''@;'; put 'put ''dHJ5czpbXSxvcHM6W119O3JldHVybiBVPXtuZXh0OkooMCksdGhyb3c6SigxKSxyZXR1cm46SigyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksVTtmdW5jdGlvbiBKKGVlKXtyZXR1cm4gZnVuY3Rpb24o''@;'; put 'put ''cmUpe3JldHVybiBmdW5jdGlvbihpZSl7aWYoQil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtxOyl0cnl7aWYoQj0xLFomJihZPTImaWVbMF0/Wi5yZXR1cm46aWVbMF0/Wi50aHJvd3x8KChZPVoucmV0dXJuKSYmWS5jYWxsKFop''@;'; put 'put ''LDApOloubmV4dCkmJiEoWT1ZLmNhbGwoWixpZVsxXSkpLmRvbmUpcmV0dXJuIFk7c3dpdGNoKFo9MCxZJiYoaWU9WzImaWVbMF0sWS52YWx1ZV0pLGllWzBdKXtjYXNlIDA6Y2FzZSAxOlk9aWU7YnJlYWs7Y2FzZSA0OnJldHVybiBxLmxhYmVsKysse3ZhbHVlOmllWzFdLGRvbmU6ITF9O2Nh''@;'; put 'put ''c2UgNTpxLmxhYmVsKyssWj1pZVsxXSxpZT1bMF07Y29udGludWU7Y2FzZSA3OmllPXEub3BzLnBvcCgpLHEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFk9KFk9cS50cnlzKS5sZW5ndGg+MCYmWVtZLmxlbmd0aC0xXSl8fDYhPT1pZVswXSYmMiE9PWllWzBdKSl7cT0wO2Nv''@;'; put 'put ''bnRpbnVlfWlmKDM9PT1pZVswXSYmKCFZfHxpZVsxXT5ZWzBdJiZpZVsxXTxZWzNdKSl7cS5sYWJlbD1pZVsxXTticmVha31pZig2PT09aWVbMF0mJnEubGFiZWw8WVsxXSl7cS5sYWJlbD1ZWzFdLFk9aWU7YnJlYWt9aWYoWSYmcS5sYWJlbDxZWzJdKXtxLmxhYmVsPVlbMl0scS5vcHMucHVz''@;'; put 'put ''aChpZSk7YnJlYWt9WVsyXSYmcS5vcHMucG9wKCkscS50cnlzLnBvcCgpO2NvbnRpbnVlfWllPU4uY2FsbCh6LHEpfWNhdGNoKHVlKXtpZT1bNix1ZV0sWj0wfWZpbmFsbHl7Qj1ZPTB9aWYoNSZpZVswXSl0aHJvdyBpZVsxXTtyZXR1cm57dmFsdWU6aWVbMF0/aWVbMV06dm9pZCAwLGRvbmU6''@;'; put 'put ''ITB9fShbZWUscmVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZXRBY2Nlc3NUb2tlbkZvclNhc2pzPXZvaWQgMDt2YXIgRD1JKDk3NzgpLFQ9SSg5MDE3KSxFPUkoMzkwMCk7Ty5nZXRBY2Nlc3NUb2tlbkZvclNhc2pzPWZ1bmN0aW9u''@;'; put 'put ''KHosTixCKXtyZXR1cm4gaih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgWTtyZXR1cm4gRyh0aGlzLGZ1bmN0aW9uKFUpe3N3aXRjaChVLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsei5wb3N0KCIvU0FTanNBcGkvYXV0aC90b2tlbiIsWT17Y2xpZW50SWQ6Tixjb2RlOkJ9LHZv''@;'; put 'put ''aWQgMCkudGhlbihmdW5jdGlvbihxKXt2YXIgSj1xLnJlc3VsdDtyZXR1cm57YWNjZXNzX3Rva2VuOkouYWNjZXNzVG9rZW4scmVmcmVzaF90b2tlbjpKLnJlZnJlc2hUb2tlbn19KS5jYXRjaChmdW5jdGlvbihxKXt0aHJvdygwLEQucHJlZml4TWVzc2FnZSkocSwoMCxULmdldFRva2VuUmVx''@;'; put 'put ''dWVzdEVycm9yUHJlZml4KSgiZmV0Y2hpbmcgYWNjZXNzIHRva2VuIiwiZ2V0QWNjZXNzVG9rZW5Gb3JTYXNqcyIsRS5TZXJ2ZXJUeXBlLlNhc2pzLCIvU0FTanNBcGkvYXV0aC90b2tlbiIsWSxOKSl9KV07Y2FzZSAxOnJldHVyblsyLFUuc2VudCgpXX19KX0pfX0sMzU2OTpmdW5jdGlvbihN''@;'; put 'put ''LE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoODc2NCkuQnVmZmVyLEc9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEIsWixZLFUpe3JldHVybiBuZXcoWXx8KFk9UHJvbWlzZSkpKGZ1bmN0aW9uKHEsSil7ZnVuY3Rpb24gZWUodWUpe3RyeXtpZShVLm5leHQodWUpKX1jYXRjaChs''@;'; put 'put ''ZSl7SihsZSl9fWZ1bmN0aW9uIHJlKHVlKXt0cnl7aWUoVS50aHJvdyh1ZSkpfWNhdGNoKGxlKXtKKGxlKX19ZnVuY3Rpb24gaWUodWUpe3ZhciBsZTt1ZS5kb25lP3EodWUudmFsdWUpOihsZT11ZS52YWx1ZSxsZSBpbnN0YW5jZW9mIFk/bGU6bmV3IFkoZnVuY3Rpb24oYWUpe2FlKGxlKX0p''@;'; put 'put ''KS50aGVuKGVlLHJlKX1pZSgoVT1VLmFwcGx5KEIsWnx8W10pKS5uZXh0KCkpfSl9LEQ9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oQixaKXt2YXIgWSxVLHEsSixlZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZxWzBdKXRocm93IHFbMV07cmV0dXJuIHFbMV19LHRy''@;'; put 'put ''eXM6W10sb3BzOltdfTtyZXR1cm4gSj17bmV4dDpyZSgwKSx0aHJvdzpyZSgxKSxyZXR1cm46cmUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihKW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEo7ZnVuY3Rpb24gcmUoaWUpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bih1ZSl7cmV0dXJuIGZ1bmN0aW9uKGxlKXtpZihZKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2VlOyl0cnl7aWYoWT0xLFUmJihxPTImbGVbMF0/VS5yZXR1cm46bGVbMF0/VS50aHJvd3x8KChxPVUucmV0dXJuKSYmcS5jYWxs''@;'; put 'put ''KFUpLDApOlUubmV4dCkmJiEocT1xLmNhbGwoVSxsZVsxXSkpLmRvbmUpcmV0dXJuIHE7c3dpdGNoKFU9MCxxJiYobGU9WzImbGVbMF0scS52YWx1ZV0pLGxlWzBdKXtjYXNlIDA6Y2FzZSAxOnE9bGU7YnJlYWs7Y2FzZSA0OnJldHVybiBlZS5sYWJlbCsrLHt2YWx1ZTpsZVsxXSxkb25lOiEx''@;'; put 'put ''fTtjYXNlIDU6ZWUubGFiZWwrKyxVPWxlWzFdLGxlPVswXTtjb250aW51ZTtjYXNlIDc6bGU9ZWUub3BzLnBvcCgpLGVlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChxPShxPWVlLnRyeXMpLmxlbmd0aD4wJiZxW3EubGVuZ3RoLTFdKXx8NiE9PWxlWzBdJiYyIT09bGVbMF0p''@;'; put 'put ''KXtlZT0wO2NvbnRpbnVlfWlmKDM9PT1sZVswXSYmKCFxfHxsZVsxXT5xWzBdJiZsZVsxXTxxWzNdKSl7ZWUubGFiZWw9bGVbMV07YnJlYWt9aWYoNj09PWxlWzBdJiZlZS5sYWJlbDxxWzFdKXtlZS5sYWJlbD1xWzFdLHE9bGU7YnJlYWt9aWYocSYmZWUubGFiZWw8cVsyXSl7ZWUubGFiZWw9''@;'; put 'put ''cVsyXSxlZS5vcHMucHVzaChsZSk7YnJlYWt9cVsyXSYmZWUub3BzLnBvcCgpLGVlLnRyeXMucG9wKCk7Y29udGludWV9bGU9Wi5jYWxsKEIsZWUpfWNhdGNoKGFlKXtsZT1bNixhZV0sVT0wfWZpbmFsbHl7WT1xPTB9aWYoNSZsZVswXSl0aHJvdyBsZVsxXTtyZXR1cm57dmFsdWU6bGVbMF0/''@;'; put 'put ''bGVbMV06dm9pZCAwLGRvbmU6ITB9fShbaWUsdWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZXRBY2Nlc3NUb2tlbkZvclZpeWE9dm9pZCAwO3ZhciBUPUkoMzkwMCksRT1JKDk3NzgpLHo9SSgxMzk1KSxOPUkoOTAxNyk7Ty5nZXRB''@;'; put 'put ''Y2Nlc3NUb2tlbkZvclZpeWE9ZnVuY3Rpb24oQixaLFksVSl7cmV0dXJuIEcodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHEsSixlZSxyZSxpZTtyZXR1cm4gRCh0aGlzLGZ1bmN0aW9uKHVlKXtzd2l0Y2godWUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcT12b2lkIDA9PT1qP2J0''@;'; put 'put ''b2EoWisiOiIrWSk6ai5mcm9tKForIjoiK1kpLnRvU3RyaW5nKCJiYXNlNjQiKSxKPSIvU0FTTG9nb24vb2F1dGgvdG9rZW4iLGVlPXtBdXRob3JpemF0aW9uOiJCYXNpYyAiK3EsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn0scmU9bmV3IFVSTFNlYXJjaFBhcmFtcyh7Z3JhbnRfdHlwZToi''@;'; put 'put ''YXV0aG9yaXphdGlvbl9jb2RlIixjb2RlOlV9KSxpZT1uZXcgVVJMU2VhcmNoUGFyYW1zKHJlKSxbNCxCLnBvc3QoSixpZSx2b2lkIDAsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsZWUpLnRoZW4oZnVuY3Rpb24obGUpe3JldHVybiBsZS5yZXN1bHR9KS5jYXRjaChmdW5j''@;'; put 'put ''dGlvbihsZSl7dGhyb3cgbGUgaW5zdGFuY2VvZiB6LkNlcnRpZmljYXRlRXJyb3I/bGU6KDAsRS5wcmVmaXhNZXNzYWdlKShsZSwoMCxOLmdldFRva2VuUmVxdWVzdEVycm9yUHJlZml4KSgiZmV0Y2hpbmcgYWNjZXNzIHRva2VuIiwiZ2V0QWNjZXNzVG9rZW5Gb3JWaXlhIixULlNlcnZlclR5''@;'; put 'put ''cGUuU2FzVml5YSxKLHJlLGVlLFosWSkpfSldO2Nhc2UgMTpyZXR1cm5bMix1ZS5zZW50KCldfX0pfSl9fSw5MDE3OihNLE8sSSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZ2V0VG9rZW5SZXF1ZXN0RXJyb3JQcmVm''@;'; put 'put ''aXhSZXNwb25zZT1PLmdldFRva2VuUmVxdWVzdEVycm9yUHJlZml4PXZvaWQgMDt2YXIgaj1JKDM5MDApLEc9ZnVuY3Rpb24oRCl7cmV0dXJuIlJlc3BvbnNlIGZyb20gIi5jb25jYXQoRD09PWouU2VydmVyVHlwZS5TYXNWaXlhPyJWaXlhIjoiU2FzanMiLCIgaXMgYmVsb3cuIil9O08uZ2V0''@;'; put 'put ''VG9rZW5SZXF1ZXN0RXJyb3JQcmVmaXg9ZnVuY3Rpb24oRCxULEUseixOLEIsWixZKXt2YXIgVT1mdW5jdGlvbihKKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoSixudWxsLDIpfSxxPVsiRXJyb3Igd2hpbGUgIi5jb25jYXQoRCwiIGZyb20gIikuY29uY2F0KHopLCJUaHJvd24gYnkgdGhlIEBz''@;'; put 'put ''YXNqcy9hZGFwdGVyICIuY29uY2F0KFQsIiBmdW5jdGlvbi4iKV07cmV0dXJuIE4mJihxLnB1c2goIlBheWxvYWQ6IikscS5wdXNoKFUoTikpKSxCJiYocS5wdXNoKCJIZWFkZXJzOiIpLHEucHVzaChVKEIpKSksWiYmcS5wdXNoKCJDbGllbnRJZDogIi5jb25jYXQoWikpLFkmJnEucHVzaCgi''@;'; put 'put ''Q2xpZW50U2VjcmV0OiAiLmNvbmNhdChZKSkscS5wdXNoKCIiKSxxLnB1c2goIiIuY29uY2F0KEcoRSkpKSxxLnB1c2goIiIpLHEuam9pbigiXG4iKX0sTy5nZXRUb2tlblJlcXVlc3RFcnJvclByZWZpeFJlc3BvbnNlPWZ1bmN0aW9uKEQsVCl7cmV0dXJuIEQuc3BsaXQoIiIuY29uY2F0KEco''@;'; put 'put ''VCksIlxuIikpLnBvcCgpfX0sNzA0OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KSxHPUkoNTEwOCksRD10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oWixZLFUscSl7cmV0dXJuIG5ldyhVfHwoVT1Qcm9taXNlKSkoZnVuY3Rpb24oSixlZSl7ZnVuY3Rp''@;'; put 'put ''b24gcmUobGUpe3RyeXt1ZShxLm5leHQobGUpKX1jYXRjaChhZSl7ZWUoYWUpfX1mdW5jdGlvbiBpZShsZSl7dHJ5e3VlKHEudGhyb3cobGUpKX1jYXRjaChhZSl7ZWUoYWUpfX1mdW5jdGlvbiB1ZShsZSl7dmFyIGFlO2xlLmRvbmU/SihsZS52YWx1ZSk6KGFlPWxlLnZhbHVlLGFlIGluc3Rh''@;'; put 'put ''bmNlb2YgVT9hZTpuZXcgVShmdW5jdGlvbihXKXtXKGFlKX0pKS50aGVuKHJlLGllKX11ZSgocT1xLmFwcGx5KFosWXx8W10pKS5uZXh0KCkpfSl9LFQ9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oWixZKXt2YXIgVSxxLEosZWUscmU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigp''@;'; put 'put ''e2lmKDEmSlswXSl0aHJvdyBKWzFdO3JldHVybiBKWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGVlPXtuZXh0OmllKDApLHRocm93OmllKDEpLHJldHVybjppZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGVlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpc30pLGVlO2Z1bmN0aW9uIGllKHVlKXtyZXR1cm4gZnVuY3Rpb24obGUpe3JldHVybiBmdW5jdGlvbihhZSl7aWYoVSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyZTspdHJ5e2lmKFU9MSxxJiYoSj0yJmFlWzBdP3EucmV0''@;'; put 'put ''dXJuOmFlWzBdP3EudGhyb3d8fCgoSj1xLnJldHVybikmJkouY2FsbChxKSwwKTpxLm5leHQpJiYhKEo9Si5jYWxsKHEsYWVbMV0pKS5kb25lKXJldHVybiBKO3N3aXRjaChxPTAsSiYmKGFlPVsyJmFlWzBdLEoudmFsdWVdKSxhZVswXSl7Y2FzZSAwOmNhc2UgMTpKPWFlO2JyZWFrO2Nhc2Ug''@;'; put 'put ''NDpyZXR1cm4gcmUubGFiZWwrKyx7dmFsdWU6YWVbMV0sZG9uZTohMX07Y2FzZSA1OnJlLmxhYmVsKysscT1hZVsxXSxhZT1bMF07Y29udGludWU7Y2FzZSA3OmFlPXJlLm9wcy5wb3AoKSxyZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1yZS50cnlzKS5sZW5ndGg+''@;'; put 'put ''MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1hZVswXSYmMiE9PWFlWzBdKSl7cmU9MDtjb250aW51ZX1pZigzPT09YWVbMF0mJighSnx8YWVbMV0+SlswXSYmYWVbMV08SlszXSkpe3JlLmxhYmVsPWFlWzFdO2JyZWFrfWlmKDY9PT1hZVswXSYmcmUubGFiZWw8SlsxXSl7cmUubGFiZWw9SlsxXSxK''@;'; put 'put ''PWFlO2JyZWFrfWlmKEomJnJlLmxhYmVsPEpbMl0pe3JlLmxhYmVsPUpbMl0scmUub3BzLnB1c2goYWUpO2JyZWFrfUpbMl0mJnJlLm9wcy5wb3AoKSxyZS50cnlzLnBvcCgpO2NvbnRpbnVlfWFlPVkuY2FsbChaLHJlKX1jYXRjaChXKXthZT1bNixXXSxxPTB9ZmluYWxseXtVPUo9MH1pZig1''@;'; put 'put ''JmFlWzBdKXRocm93IGFlWzFdO3JldHVybnt2YWx1ZTphZVswXT9hZVsxXTp2b2lkIDAsZG9uZTohMH19KFt1ZSxsZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmdldFRva2Vucz12b2lkIDA7dmFyIEU9SSg2Nzk5KSx6PUkoMzkwMCks''@;'; put 'put ''Tj1JKDM2NiksQj1JKDI0OSk7Ty5nZXRUb2tlbnM9ZnVuY3Rpb24oWixZLFUpe3JldHVybiB2b2lkIDA9PT1VJiYoVT16LlNlcnZlclR5cGUuU2FzVml5YSksRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcSxKLGVlLHJlLGllLGxlLGFlO3JldHVybiBUKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oVyl7c3dpdGNoKFcubGFiZWwpe2Nhc2UgMDppZihxPWoubG9nZ2VyfHxHLGVlPVkucmVmcmVzaF90b2tlbixyZT1ZLmNsaWVudCxpZT1ZLnNlY3JldCwhKDAsRS5pc0FjY2Vzc1Rva2VuRXhwaXJpbmcpKEo9WS5hY2Nlc3NfdG9rZW4pJiYhKDAsRS5pc1JlZnJlc2hUb2tlbkV4cGlyaW5n''@;'; put 'put ''KShlZSkpcmV0dXJuWzMsNV07aWYoKDAsRS5oYXNUb2tlbkV4cGlyZWQpKGVlKSl0aHJvdyBxLmVycm9yKCJVbmFibGUgdG8gb2J0YWluIG5ldyBhY2Nlc3MgdG9rZW4uIFlvdXIgcmVmcmVzaCB0b2tlbiBoYXMgZXhwaXJlZC4iKSxuZXcgRXJyb3IoIlVuYWJsZSB0byBvYnRhaW4gbmV3IGFj''@;'; put 'put ''Y2VzcyB0b2tlbi4gWW91ciByZWZyZXNoIHRva2VuIGhhcyBleHBpcmVkLiIpO3JldHVybiBxLmluZm8oIlJlZnJlc2hpbmcgYWNjZXNzIGFuZCByZWZyZXNoIHRva2Vucy4iKSxVIT09ei5TZXJ2ZXJUeXBlLlNhc1ZpeWE/WzMsMl06WzQsKDAsTi5yZWZyZXNoVG9rZW5zRm9yVml5YSkoWixy''@;'; put 'put ''ZSxpZSxlZSldO2Nhc2UgMTpyZXR1cm4gYWU9Vy5zZW50KCksWzMsNF07Y2FzZSAyOnJldHVybls0LCgwLEIucmVmcmVzaFRva2Vuc0ZvclNhc2pzKShaLGVlKV07Y2FzZSAzOmFlPVcuc2VudCgpLFcubGFiZWw9NDtjYXNlIDQ6Sj0obGU9YWUpLmFjY2Vzc190b2tlbixlZT1sZS5yZWZyZXNo''@;'; put 'put ''X3Rva2VuLFcubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzIse2FjY2Vzc190b2tlbjpKLHJlZnJlc2hfdG9rZW46ZWUsY2xpZW50OnJlLHNlY3JldDppZX1dfX0pfSl9fSwxNTI3OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChP''@;'; put 'put ''YmplY3QuY3JlYXRlP2Z1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpO3ZhciBOPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVCxFKTtOJiYhKCJnZXQiaW4gTj8hVC5fX2VzTW9kdWxlOk4ud3JpdGFibGV8fE4uY29uZmlndXJhYmxlKXx8KE49e2VudW1lcmFibGU6''@;'; put 'put ''ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFRbRV19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEQseixOKX06ZnVuY3Rpb24oRCxULEUseil7dm9pZCAwPT09eiYmKHo9RSksRFt6XT1UW0VdfSksRz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oRCxUKXtmb3IodmFyIEUgaW4g''@;'; put 'put ''RCkiZGVmYXVsdCI9PT1FfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxFKXx8aihULEQsRSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxHKEkoMjg1MSksTyksRyhJKDkwOTcpLE8pLEcoSSg5MTY2KSxPKX0sOTA5Nzoo''@;'; put 'put ''TSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZD12b2lkIDAsTy5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZD1mdW5jdGlvbihJKXtyZXR1cm4vPGZvcm0uK2FjdGlvbj0iKC4q''@;'; put 'put ''TG9nb25cL29hdXRoXC9hdXRob3JpemVbXiJdKikuKj4vZ20udGVzdChJKX19LDkxNjY6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uaXNMb2dJblJlcXVpcmVkPXZvaWQgMCxPLmlzTG9nSW5SZXF1aXJlZD1m''@;'; put 'put ''dW5jdGlvbihJKXtyZXR1cm4vPGZvcm0uK2FjdGlvbj0iKC4qKExvZ29uKXwobG9naW4pW14iXSopLio+L2dtLnRlc3QoSSl9fSw1NDE4OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEUseixOLEIpe3JldHVybiBuZXco''@;'; put 'put ''Tnx8KE49UHJvbWlzZSkpKGZ1bmN0aW9uKFosWSl7ZnVuY3Rpb24gVShlZSl7dHJ5e0ooQi5uZXh0KGVlKSl9Y2F0Y2gocmUpe1kocmUpfX1mdW5jdGlvbiBxKGVlKXt0cnl7SihCLnRocm93KGVlKSl9Y2F0Y2gocmUpe1kocmUpfX1mdW5jdGlvbiBKKGVlKXt2YXIgcmU7ZWUuZG9uZT9aKGVl''@;'; put 'put ''LnZhbHVlKToocmU9ZWUudmFsdWUscmUgaW5zdGFuY2VvZiBOP3JlOm5ldyBOKGZ1bmN0aW9uKGllKXtpZShyZSl9KSkudGhlbihVLHEpfUooKEI9Qi5hcHBseShFLHp8fFtdKSkubmV4dCgpKX0pfSxHPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEUseil7dmFyIE4sQixaLFks''@;'; put 'put ''VT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZaWzBdKXRocm93IFpbMV07cmV0dXJuIFpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWT17bmV4dDpxKDApLHRocm93OnEoMSkscmV0dXJuOnEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihZW1N5bWJvbC5pdGVyYXRv''@;'; put 'put ''cl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFk7ZnVuY3Rpb24gcShKKXtyZXR1cm4gZnVuY3Rpb24oZWUpe3JldHVybiBmdW5jdGlvbihyZSl7aWYoTil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtVOyl0cnl7aWYoTj0xLEIm''@;'; put 'put ''JihaPTImcmVbMF0/Qi5yZXR1cm46cmVbMF0/Qi50aHJvd3x8KChaPUIucmV0dXJuKSYmWi5jYWxsKEIpLDApOkIubmV4dCkmJiEoWj1aLmNhbGwoQixyZVsxXSkpLmRvbmUpcmV0dXJuIFo7c3dpdGNoKEI9MCxaJiYocmU9WzImcmVbMF0sWi52YWx1ZV0pLHJlWzBdKXtjYXNlIDA6Y2FzZSAx''@;'; put 'put ''Olo9cmU7YnJlYWs7Y2FzZSA0OnJldHVybiBVLmxhYmVsKysse3ZhbHVlOnJlWzFdLGRvbmU6ITF9O2Nhc2UgNTpVLmxhYmVsKyssQj1yZVsxXSxyZT1bMF07Y29udGludWU7Y2FzZSA3OnJlPVUub3BzLnBvcCgpLFUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFo9KFo9VS50''@;'; put 'put ''cnlzKS5sZW5ndGg+MCYmWltaLmxlbmd0aC0xXSl8fDYhPT1yZVswXSYmMiE9PXJlWzBdKSl7VT0wO2NvbnRpbnVlfWlmKDM9PT1yZVswXSYmKCFafHxyZVsxXT5aWzBdJiZyZVsxXTxaWzNdKSl7VS5sYWJlbD1yZVsxXTticmVha31pZig2PT09cmVbMF0mJlUubGFiZWw8WlsxXSl7VS5sYWJl''@;'; put 'put ''bD1aWzFdLFo9cmU7YnJlYWt9aWYoWiYmVS5sYWJlbDxaWzJdKXtVLmxhYmVsPVpbMl0sVS5vcHMucHVzaChyZSk7YnJlYWt9WlsyXSYmVS5vcHMucG9wKCksVS50cnlzLnBvcCgpO2NvbnRpbnVlfXJlPXouY2FsbChFLFUpfWNhdGNoKGllKXtyZT1bNixpZV0sQj0wfWZpbmFsbHl7Tj1aPTB9''@;'; put 'put ''aWYoNSZyZVswXSl0aHJvdyByZVsxXTtyZXR1cm57dmFsdWU6cmVbMF0/cmVbMV06dm9pZCAwLGRvbmU6ITB9fShbSixlZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLm9wZW5XZWJQYWdlPXZvaWQgMDt2YXIgRD1JKDEyMTApLFQ9e3dp''@;'; put 'put ''ZHRoOjUwMCxoZWlnaHQ6NjAwfTtPLm9wZW5XZWJQYWdlPWZ1bmN0aW9uKEUseixOLEIpe3JldHVybiB2b2lkIDA9PT16JiYoej0iIiksdm9pZCAwPT09TiYmKE49VCksaih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgWixZLFUscSxKO3JldHVybiBHKHRoaXMsZnVuY3Rpb24o''@;'; put 'put ''ZWUpe3N3aXRjaChlZS5sYWJlbCl7Y2FzZSAwOnJldHVybiBaPU4ud2lkdGgsWT1OLmhlaWdodCxVPXNjcmVlbi53aWR0aC8yLVovMixxPXNjcmVlbi5oZWlnaHQvMi1ZLzIsKEo9d2luZG93Lm9wZW4oRSx6LCJ0b29sYmFyPTAsbG9jYXRpb249MCxtZW51YmFyPTAsd2lkdGg9Ii5jb25jYXQo''@;'; put 'put ''WiwiLGhlaWdodD0iKS5jb25jYXQoWSwiLGxlZnQ9IikuY29uY2F0KFUsIix0b3A9IikuY29uY2F0KHEpKSk/WzMsMl06WzQsKEI/P0Qub3BlbkxvZ2luUHJvbXB0KSgpXTtjYXNlIDE6cmV0dXJuWzIsZWUuc2VudCgpP3dpbmRvdy5vcGVuKEUseiwidG9vbGJhcj0wLGxvY2F0aW9uPTAsbWVu''@;'; put 'put ''dWJhcj0wLHdpZHRoPSIuY29uY2F0KFosIixoZWlnaHQ9IikuY29uY2F0KFksIixsZWZ0PSIpLmNvbmNhdChVLCIsdG9wPSIpLmNvbmNhdChxKSk6bnVsbF07Y2FzZSAyOnJldHVyblsyLEpdfX0pfSl9fSwyNDk6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj10aGlzJiZ0aGlz''@;'; put 'put ''Ll9fYXdhaXRlcnx8ZnVuY3Rpb24oeixOLEIsWil7cmV0dXJuIG5ldyhCfHwoQj1Qcm9taXNlKSkoZnVuY3Rpb24oWSxVKXtmdW5jdGlvbiBxKHJlKXt0cnl7ZWUoWi5uZXh0KHJlKSl9Y2F0Y2goaWUpe1UoaWUpfX1mdW5jdGlvbiBKKHJlKXt0cnl7ZWUoWi50aHJvdyhyZSkpfWNhdGNoKGll''@;'; put 'put ''KXtVKGllKX19ZnVuY3Rpb24gZWUocmUpe3ZhciBpZTtyZS5kb25lP1kocmUudmFsdWUpOihpZT1yZS52YWx1ZSxpZSBpbnN0YW5jZW9mIEI/aWU6bmV3IEIoZnVuY3Rpb24odWUpe3VlKGllKX0pKS50aGVuKHEsSil9ZWUoKFo9Wi5hcHBseSh6LE58fFtdKSkubmV4dCgpKX0pfSxHPXRoaXMm''@;'; put 'put ''JnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHosTil7dmFyIEIsWixZLFUscT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZZWzBdKXRocm93IFlbMV07cmV0dXJuIFlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gVT17bmV4dDpKKDApLHRocm93OkooMSkscmV0dXJuOkooMil9''@;'; put 'put ''LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihVW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFU7ZnVuY3Rpb24gSihlZSl7cmV0dXJuIGZ1bmN0aW9uKHJlKXtyZXR1cm4gZnVuY3Rpb24oaWUpe2lmKEIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9y''@;'; put 'put ''IGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7cTspdHJ5e2lmKEI9MSxaJiYoWT0yJmllWzBdP1oucmV0dXJuOmllWzBdP1oudGhyb3d8fCgoWT1aLnJldHVybikmJlkuY2FsbChaKSwwKTpaLm5leHQpJiYhKFk9WS5jYWxsKFosaWVbMV0pKS5kb25lKXJldHVybiBZO3N3aXRjaChaPTAs''@;'; put 'put ''WSYmKGllPVsyJmllWzBdLFkudmFsdWVdKSxpZVswXSl7Y2FzZSAwOmNhc2UgMTpZPWllO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcS5sYWJlbCsrLHt2YWx1ZTppZVsxXSxkb25lOiExfTtjYXNlIDU6cS5sYWJlbCsrLFo9aWVbMV0saWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzppZT1xLm9wcy5wb3Ao''@;'; put 'put ''KSxxLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChZPShZPXEudHJ5cykubGVuZ3RoPjAmJllbWS5sZW5ndGgtMV0pfHw2IT09aWVbMF0mJjIhPT1pZVswXSkpe3E9MDtjb250aW51ZX1pZigzPT09aWVbMF0mJighWXx8aWVbMV0+WVswXSYmaWVbMV08WVszXSkpe3EubGFiZWw9''@;'; put 'put ''aWVbMV07YnJlYWt9aWYoNj09PWllWzBdJiZxLmxhYmVsPFlbMV0pe3EubGFiZWw9WVsxXSxZPWllO2JyZWFrfWlmKFkmJnEubGFiZWw8WVsyXSl7cS5sYWJlbD1ZWzJdLHEub3BzLnB1c2goaWUpO2JyZWFrfVlbMl0mJnEub3BzLnBvcCgpLHEudHJ5cy5wb3AoKTtjb250aW51ZX1pZT1OLmNh''@;'; put 'put ''bGwoeixxKX1jYXRjaCh1ZSl7aWU9WzYsdWVdLFo9MH1maW5hbGx5e0I9WT0wfWlmKDUmaWVbMF0pdGhyb3cgaWVbMV07cmV0dXJue3ZhbHVlOmllWzBdP2llWzFdOnZvaWQgMCxkb25lOiEwfX0oW2VlLHJlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLE8ucmVmcmVzaFRva2Vuc0ZvclNhc2pzPXZvaWQgMDt2YXIgRD1JKDk3NzgpLFQ9SSg5MDE3KSxFPUkoMzkwMCk7Ty5yZWZyZXNoVG9rZW5zRm9yU2FzanM9ZnVuY3Rpb24oeixOKXtyZXR1cm4gaih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLGZ1''@;'; put 'put ''bmN0aW9uKFkpe3N3aXRjaChZLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsei5wb3N0KCIvU0FTanNBcGkvYXV0aC9yZWZyZXNoIix2b2lkIDAsdm9pZCAwLHZvaWQgMCx7QXV0aG9yaXphdGlvbjoiQmVhcmVyICIrTn0pLnRoZW4oZnVuY3Rpb24oVSl7dmFyIHE9VS5yZXN1bHQ7cmV0dXJue2Fj''@;'; put 'put ''Y2Vzc190b2tlbjpxLmFjY2Vzc1Rva2VuLHJlZnJlc2hfdG9rZW46cS5yZWZyZXNoVG9rZW59fSkuY2F0Y2goZnVuY3Rpb24oVSl7dGhyb3coMCxELnByZWZpeE1lc3NhZ2UpKFUsKDAsVC5nZXRUb2tlblJlcXVlc3RFcnJvclByZWZpeCkoInJlZnJlc2hpbmcgdG9rZW5zIiwicmVmcmVzaFRv''@;'; put 'put ''a2Vuc0ZvclNhc2pzIixFLlNlcnZlclR5cGUuU2FzanMsIi9TQVNqc0FwaS9hdXRoL3JlZnJlc2giKSl9KV07Y2FzZSAxOnJldHVyblsyLFkuc2VudCgpXX19KX0pfX0sMzY2OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9SSg4NzY0KS5CdWZmZXIsRz10aGlzJiZ0aGlzLl9f''@;'; put 'put ''YXdhaXRlcnx8ZnVuY3Rpb24oWixZLFUscSl7cmV0dXJuIG5ldyhVfHwoVT1Qcm9taXNlKSkoZnVuY3Rpb24oSixlZSl7ZnVuY3Rpb24gcmUobGUpe3RyeXt1ZShxLm5leHQobGUpKX1jYXRjaChhZSl7ZWUoYWUpfX1mdW5jdGlvbiBpZShsZSl7dHJ5e3VlKHEudGhyb3cobGUpKX1jYXRjaChh''@;'; put 'put ''ZSl7ZWUoYWUpfX1mdW5jdGlvbiB1ZShsZSl7dmFyIGFlO2xlLmRvbmU/SihsZS52YWx1ZSk6KGFlPWxlLnZhbHVlLGFlIGluc3RhbmNlb2YgVT9hZTpuZXcgVShmdW5jdGlvbihXKXtXKGFlKX0pKS50aGVuKHJlLGllKX11ZSgocT1xLmFwcGx5KFosWXx8W10pKS5uZXh0KCkpfSl9LEQ9dGhp''@;'; put 'put ''cyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oWixZKXt2YXIgVSxxLEosZWUscmU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmSlswXSl0aHJvdyBKWzFdO3JldHVybiBKWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGVlPXtuZXh0OmllKDApLHRocm93OmllKDEpLHJldHVy''@;'; put 'put ''bjppZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGVlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGVlO2Z1bmN0aW9uIGllKHVlKXtyZXR1cm4gZnVuY3Rpb24obGUpe3JldHVybiBmdW5jdGlvbihhZSl7aWYoVSl0aHJvdyBuZXcgVHlwZUVycm9y''@;'; put 'put ''KCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyZTspdHJ5e2lmKFU9MSxxJiYoSj0yJmFlWzBdP3EucmV0dXJuOmFlWzBdP3EudGhyb3d8fCgoSj1xLnJldHVybikmJkouY2FsbChxKSwwKTpxLm5leHQpJiYhKEo9Si5jYWxsKHEsYWVbMV0pKS5kb25lKXJldHVybiBK''@;'; put 'put ''O3N3aXRjaChxPTAsSiYmKGFlPVsyJmFlWzBdLEoudmFsdWVdKSxhZVswXSl7Y2FzZSAwOmNhc2UgMTpKPWFlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcmUubGFiZWwrKyx7dmFsdWU6YWVbMV0sZG9uZTohMX07Y2FzZSA1OnJlLmxhYmVsKysscT1hZVsxXSxhZT1bMF07Y29udGludWU7Y2FzZSA3''@;'; put 'put ''OmFlPXJlLm9wcy5wb3AoKSxyZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoSj0oSj1yZS50cnlzKS5sZW5ndGg+MCYmSltKLmxlbmd0aC0xXSl8fDYhPT1hZVswXSYmMiE9PWFlWzBdKSl7cmU9MDtjb250aW51ZX1pZigzPT09YWVbMF0mJighSnx8YWVbMV0+SlswXSYmYWVb''@;'; put 'put ''MV08SlszXSkpe3JlLmxhYmVsPWFlWzFdO2JyZWFrfWlmKDY9PT1hZVswXSYmcmUubGFiZWw8SlsxXSl7cmUubGFiZWw9SlsxXSxKPWFlO2JyZWFrfWlmKEomJnJlLmxhYmVsPEpbMl0pe3JlLmxhYmVsPUpbMl0scmUub3BzLnB1c2goYWUpO2JyZWFrfUpbMl0mJnJlLm9wcy5wb3AoKSxyZS50''@;'; put 'put ''cnlzLnBvcCgpO2NvbnRpbnVlfWFlPVkuY2FsbChaLHJlKX1jYXRjaChXKXthZT1bNixXXSxxPTB9ZmluYWxseXtVPUo9MH1pZig1JmFlWzBdKXRocm93IGFlWzFdO3JldHVybnt2YWx1ZTphZVswXT9hZVsxXTp2b2lkIDAsZG9uZTohMH19KFt1ZSxsZV0pfX19O09iamVjdC5kZWZpbmVQcm9w''@;'; put 'put ''ZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnJlZnJlc2hUb2tlbnNGb3JWaXlhPXZvaWQgMDt2YXIgVD1JKDM5MDApLEU9SSg5Nzc4KSx6PUkoNjIzMCksTj1JKDU5MjgpLEI9SSg5MDE3KTtPLnJlZnJlc2hUb2tlbnNGb3JWaXlhPWZ1bmN0aW9uKFosWSxVLHEpe3JldHVybiBH''@;'; put 'put ''KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBKLGVlLHJlLGllO3JldHVybiBEKHRoaXMsZnVuY3Rpb24odWUpe3N3aXRjaCh1ZS5sYWJlbCl7Y2FzZSAwOmlmKCEoMCxOLmlzTm9kZSkoKSl0aHJvdyBuZXcgRXJyb3IoIk1ldGhvZCAncmVmcmVzaFRva2Vuc0ZvclZpeWEnIGNh''@;'; put 'put ''biBvbmx5IGJlIHVzZWQgYnkgTm9kZS4iKTtyZXR1cm4gSj0iL1NBU0xvZ29uL29hdXRoL3Rva2VuIixlZT12b2lkIDA9PT1qP2J0b2EoWSsiOiIrVSk6ai5mcm9tKFkrIjoiK1UpLnRvU3RyaW5nKCJiYXNlNjQiKSxyZT17QXV0aG9yaXphdGlvbjoiQmFzaWMgIitlZX0sKGllPW5ldyB6KS5h''@;'; put 'put ''cHBlbmQoImdyYW50X3R5cGUiLCJyZWZyZXNoX3Rva2VuIiksaWUuYXBwZW5kKCJyZWZyZXNoX3Rva2VuIixxKSxbNCxaLnBvc3QoSixpZSx2b2lkIDAsIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIraWUuX2JvdW5kYXJ5LHJlKS50aGVuKGZ1bmN0aW9uKGxlKXtyZXR1cm4gbGUu''@;'; put 'put ''cmVzdWx0fSkuY2F0Y2goZnVuY3Rpb24obGUpe3Rocm93KDAsRS5wcmVmaXhNZXNzYWdlKShsZSwoMCxCLmdldFRva2VuUmVxdWVzdEVycm9yUHJlZml4KSgicmVmcmVzaGluZyB0b2tlbnMiLCJyZWZyZXNoVG9rZW5zRm9yVml5YSIsVC5TZXJ2ZXJUeXBlLlNhc1ZpeWEsSixpZSxyZSxZLFUp''@;'; put 'put ''KX0pXTtjYXNlIDE6cmV0dXJuWzIsdWUuc2VudCgpXX19KX0pfX0sNDU4MjpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihULEUseixOKXtyZXR1cm4gbmV3KHp8fCh6PVByb21pc2UpKShmdW5jdGlvbihCLFope2Z1bmN0''@;'; put 'put ''aW9uIFkoSil7dHJ5e3EoTi5uZXh0KEopKX1jYXRjaChlZSl7WihlZSl9fWZ1bmN0aW9uIFUoSil7dHJ5e3EoTi50aHJvdyhKKSl9Y2F0Y2goZWUpe1ooZWUpfX1mdW5jdGlvbiBxKEope3ZhciBlZTtKLmRvbmU/QihKLnZhbHVlKTooZWU9Si52YWx1ZSxlZSBpbnN0YW5jZW9mIHo/ZWU6bmV3''@;'; put 'put ''IHooZnVuY3Rpb24ocmUpe3JlKGVlKX0pKS50aGVuKFksVSl9cSgoTj1OLmFwcGx5KFQsRXx8W10pKS5uZXh0KCkpfSl9LEc9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oVCxFKXt2YXIgeixOLEIsWixZPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJkJbMF0pdGhyb3cg''@;'; put 'put ''QlsxXTtyZXR1cm4gQlsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBaPXtuZXh0OlUoMCksdGhyb3c6VSgxKSxyZXR1cm46VSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFpbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksWjtmdW5jdGlvbiBVKHEp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbihKKXtyZXR1cm4gZnVuY3Rpb24oZWUpe2lmKHopdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7WTspdHJ5e2lmKHo9MSxOJiYoQj0yJmVlWzBdP04ucmV0dXJuOmVlWzBdP04udGhyb3d8fCgoQj1OLnJl''@;'; put 'put ''dHVybikmJkIuY2FsbChOKSwwKTpOLm5leHQpJiYhKEI9Qi5jYWxsKE4sZWVbMV0pKS5kb25lKXJldHVybiBCO3N3aXRjaChOPTAsQiYmKGVlPVsyJmVlWzBdLEIudmFsdWVdKSxlZVswXSl7Y2FzZSAwOmNhc2UgMTpCPWVlO2JyZWFrO2Nhc2UgNDpyZXR1cm4gWS5sYWJlbCsrLHt2YWx1ZTpl''@;'; put 'put ''ZVsxXSxkb25lOiExfTtjYXNlIDU6WS5sYWJlbCsrLE49ZWVbMV0sZWU9WzBdO2NvbnRpbnVlO2Nhc2UgNzplZT1ZLm9wcy5wb3AoKSxZLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChCPShCPVkudHJ5cykubGVuZ3RoPjAmJkJbQi5sZW5ndGgtMV0pfHw2IT09ZWVbMF0mJjIh''@;'; put 'put ''PT1lZVswXSkpe1k9MDtjb250aW51ZX1pZigzPT09ZWVbMF0mJighQnx8ZWVbMV0+QlswXSYmZWVbMV08QlszXSkpe1kubGFiZWw9ZWVbMV07YnJlYWt9aWYoNj09PWVlWzBdJiZZLmxhYmVsPEJbMV0pe1kubGFiZWw9QlsxXSxCPWVlO2JyZWFrfWlmKEImJlkubGFiZWw8QlsyXSl7WS5sYWJl''@;'; put 'put ''bD1CWzJdLFkub3BzLnB1c2goZWUpO2JyZWFrfUJbMl0mJlkub3BzLnBvcCgpLFkudHJ5cy5wb3AoKTtjb250aW51ZX1lZT1FLmNhbGwoVCxZKX1jYXRjaChyZSl7ZWU9WzYscmVdLE49MH1maW5hbGx5e3o9Qj0wfWlmKDUmZWVbMF0pdGhyb3cgZWVbMV07cmV0dXJue3ZhbHVlOmVlWzBdP2Vl''@;'; put 'put ''WzFdOnZvaWQgMCxkb25lOiEwfX0oW3EsSl0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnZlcmlmeVNhczlMb2dpbj12b2lkIDA7dmFyIEQ9SSg1OTI4KTtPLnZlcmlmeVNhczlMb2dpbj1mdW5jdGlvbihUKXtyZXR1cm4gaih0aGlzLHZv''@;'; put 'put ''aWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRSx6LE47cmV0dXJuIEcodGhpcyxmdW5jdGlvbihCKXtzd2l0Y2goQi5sYWJlbCl7Y2FzZSAwOkU9ITEsej1uZXcgRGF0ZSxOPTAsQi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm5bNCwoMCxELmRlbGF5KSgxZTMpXTtjYXNlIDI6aWYoQi5zZW50KCks''@;'; put 'put ''VC5jbG9zZWQpcmV0dXJuWzMsNF07RT1ULndpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCJTQVNMb2dvbiIpJiZULndpbmRvdy5kb2N1bWVudC5ib2R5LmlubmVyVGV4dC5pbmNsdWRlcygiWW91IGhhdmUgc2lnbmVkIGluLiIpLE49KChuZXcgRGF0ZSkudmFsdWVPZigpLXoudmFsdWVP''@;'; put 'put ''ZigpKS8xZTMsQi5sYWJlbD0zO2Nhc2UgMzppZighRSYmTjwzMDApcmV0dXJuWzMsMV07Qi5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMix7aXNMb2dnZWRJbjpFfV19fSl9KX19LDY1NDc6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVu''@;'; put 'put ''Y3Rpb24oVCxFLHosTil7cmV0dXJuIG5ldyh6fHwoej1Qcm9taXNlKSkoZnVuY3Rpb24oQixaKXtmdW5jdGlvbiBZKEope3RyeXtxKE4ubmV4dChKKSl9Y2F0Y2goZWUpe1ooZWUpfX1mdW5jdGlvbiBVKEope3RyeXtxKE4udGhyb3coSikpfWNhdGNoKGVlKXtaKGVlKX19ZnVuY3Rpb24gcShK''@;'; put 'put ''KXt2YXIgZWU7Si5kb25lP0IoSi52YWx1ZSk6KGVlPUoudmFsdWUsZWUgaW5zdGFuY2VvZiB6P2VlOm5ldyB6KGZ1bmN0aW9uKHJlKXtyZShlZSl9KSkudGhlbihZLFUpfXEoKE49Ti5hcHBseShULEV8fFtdKSkubmV4dCgpKX0pfSxHPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9u''@;'; put 'put ''KFQsRSl7dmFyIHosTixCLFosWT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZCWzBdKXRocm93IEJbMV07cmV0dXJuIEJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWj17bmV4dDpVKDApLHRocm93OlUoMSkscmV0dXJuOlUoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm''@;'; put 'put ''JihaW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFo7ZnVuY3Rpb24gVShxKXtyZXR1cm4gZnVuY3Rpb24oSil7cmV0dXJuIGZ1bmN0aW9uKGVlKXtpZih6KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3Io''@;'; put 'put ''O1k7KXRyeXtpZih6PTEsTiYmKEI9MiZlZVswXT9OLnJldHVybjplZVswXT9OLnRocm93fHwoKEI9Ti5yZXR1cm4pJiZCLmNhbGwoTiksMCk6Ti5uZXh0KSYmIShCPUIuY2FsbChOLGVlWzFdKSkuZG9uZSlyZXR1cm4gQjtzd2l0Y2goTj0wLEImJihlZT1bMiZlZVswXSxCLnZhbHVlXSksZWVb''@;'; put 'put ''MF0pe2Nhc2UgMDpjYXNlIDE6Qj1lZTticmVhaztjYXNlIDQ6cmV0dXJuIFkubGFiZWwrKyx7dmFsdWU6ZWVbMV0sZG9uZTohMX07Y2FzZSA1OlkubGFiZWwrKyxOPWVlWzFdLGVlPVswXTtjb250aW51ZTtjYXNlIDc6ZWU9WS5vcHMucG9wKCksWS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1''@;'; put 'put ''bHQ6aWYoISgoQj0oQj1ZLnRyeXMpLmxlbmd0aD4wJiZCW0IubGVuZ3RoLTFdKXx8NiE9PWVlWzBdJiYyIT09ZWVbMF0pKXtZPTA7Y29udGludWV9aWYoMz09PWVlWzBdJiYoIUJ8fGVlWzFdPkJbMF0mJmVlWzFdPEJbM10pKXtZLmxhYmVsPWVlWzFdO2JyZWFrfWlmKDY9PT1lZVswXSYmWS5s''@;'; put 'put ''YWJlbDxCWzFdKXtZLmxhYmVsPUJbMV0sQj1lZTticmVha31pZihCJiZZLmxhYmVsPEJbMl0pe1kubGFiZWw9QlsyXSxZLm9wcy5wdXNoKGVlKTticmVha31CWzJdJiZZLm9wcy5wb3AoKSxZLnRyeXMucG9wKCk7Y29udGludWV9ZWU9RS5jYWxsKFQsWSl9Y2F0Y2gocmUpe2VlPVs2LHJlXSxO''@;'; put 'put ''PTB9ZmluYWxseXt6PUI9MH1pZig1JmVlWzBdKXRocm93IGVlWzFdO3JldHVybnt2YWx1ZTplZVswXT9lZVsxXTp2b2lkIDAsZG9uZTohMH19KFtxLEpdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5pc0xvZ2dlZEluU0FTVklZQT1PLnZl''@;'; put 'put ''cmlmeVNhc1ZpeWFMb2dpbj12b2lkIDA7dmFyIEQ9SSg1OTI4KTtPLnZlcmlmeVNhc1ZpeWFMb2dpbj1mdW5jdGlvbihUKXt2YXIgRSx6O3JldHVybiBqKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBOLEIsWixZO3JldHVybiBHKHRoaXMsZnVuY3Rpb24oVSl7c3dpdGNoKFUu''@;'; put 'put ''bGFiZWwpe2Nhc2UgMDpOPSExLEI9bmV3IERhdGUsWj0wLFUubGFiZWw9MTtjYXNlIDE6cmV0dXJuWzQsKDAsRC5kZWxheSkoMWUzKV07Y2FzZSAyOmlmKFUuc2VudCgpLFQuY2xvc2VkKXJldHVyblszLDRdO049KDAsTy5pc0xvZ2dlZEluU0FTVklZQSkoKSxaPSgobmV3IERhdGUpLnZhbHVl''@;'; put 'put ''T2YoKS1CLnZhbHVlT2YoKSkvMWUzLFUubGFiZWw9MztjYXNlIDM6aWYoIU4mJlo8MzAwKXJldHVyblszLDFdO1UubGFiZWw9NDtjYXNlIDQ6WT0hMSxCPW5ldyBEYXRlLFUubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzQsKDAsRC5kZWxheSkoMWUzKV07Y2FzZSA2OmlmKFUuc2VudCgpLFQuY2xv''@;'; put 'put ''c2VkKXJldHVyblszLDhdO1k9VC53aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygiU0FTTG9nb24iKXx8KG51bGw9PT0oej1udWxsPT09KEU9VC53aW5kb3cuZG9jdW1lbnQuYm9keSl8fHZvaWQgMD09PUU/dm9pZCAwOkUuaW5uZXJUZXh0KXx8dm9pZCAwPT09ej92b2lkIDA6ei5pbmNs''@;'; put 'put ''dWRlcygiWW91IGhhdmUgc2lnbmVkIGluLiIpKSxaPSgobmV3IERhdGUpLnZhbHVlT2YoKS1CLnZhbHVlT2YoKSkvMWUzLFUubGFiZWw9NztjYXNlIDc6aWYoIVkmJlo8MzAwKXJldHVyblszLDVdO1UubGFiZWw9ODtjYXNlIDg6cmV0dXJuWzIse2lzTG9nZ2VkSW46TiYmWX1dfX0pfSl9LE8u''@;'; put 'put ''aXNMb2dnZWRJblNBU1ZJWUE9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY29va2llLmluY2x1ZGVzKCJDdXJyZW50LVVzZXIiKSYmZG9jdW1lbnQuY29va2llLmluY2x1ZGVzKCJ1c2VySWQiKX19LDQwMzc6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''TywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZW5lcmF0ZUZpbGVVcGxvYWRGb3JtPXZvaWQgMDt2YXIgaj1JKDI0MDIpLEc9SSg1OTI4KTtPLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm09ZnVuY3Rpb24oRCxUKXtmb3IodmFyIEUgaW4gVClpZihBcnJheS5pc0FycmF5KFRbRV0pKXt2YXIg''@;'; put 'put ''ej1FLE49KDAsai5jb252ZXJ0VG9DU1YpKFQsRSk7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PU4pdGhyb3cgbmV3IEVycm9yKCJUaGUgbWF4IGxlbmd0aCBvZiBhIHN0cmluZyB2YWx1ZSBpbiBTQVNqcyBpcyAzMjc2NSBjaGFyYWN0ZXJzLiIpO2lmKCgwLEcuaXNOb2RlKSgp''@;'; put 'put ''KUQuYXBwZW5kKHosTix7ZmlsZW5hbWU6IiIuY29uY2F0KHosIi5jc3YiKSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vY3N2In0pO2Vsc2V7dmFyIEI9bmV3IEJsb2IoW05dLHt0eXBlOiJhcHBsaWNhdGlvbi9jc3YifSk7RC5hcHBlbmQoeixCLCIiLmNvbmNhdCh6LCIuY3N2IikpfX1yZXR1''@;'; put 'put ''cm4gRH19LDIxNzA6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybT12b2lkIDA7dmFyIGo9SSgyNDAyKSxHPUkoNDc5OSk7Ty5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9y''@;'; put 'put ''bT1mdW5jdGlvbihELFQpe3ZhciBFPVtdLHo9e30sTj0wO2Zvcih2YXIgQiBpbiBUKXtOKyssKDAsai5pc0Zvcm1hdHNUYWJsZSkoQil8fEUucHVzaChCKTt2YXIgWj0oMCxqLmNvbnZlcnRUb0NTVikoVCxCKTtpZigiRVJST1I6IExBUkdFIFNUUklORyBMRU5HVEgiPT09Wil0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMyNzY1IGNoYXJhY3RlcnMuIik7Wi5sZW5ndGg+MTZlMz8oMCxHLnNwbGl0Q2h1bmtzKShaKS5tYXAoZnVuY3Rpb24oWSl7RC5hcHBlbmQoInNhc2pzIi5jb25jYXQoTiwiZGF0YSIpLFkpfSk6elsi''@;'; put 'put ''c2FzanMiLmNvbmNhdChOLCJkYXRhIildPVp9cmV0dXJuIHouc2FzanNfdGFibGVzPUUuam9pbigiICIpLHtmb3JtRGF0YTpELHJlcXVlc3RQYXJhbXM6en19fSwzNjA3OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmpl''@;'; put 'put ''Y3QuY3JlYXRlP2Z1bmN0aW9uKFQsRSx6LE4pe3ZvaWQgMD09PU4mJihOPXopO3ZhciBCPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRSx6KTtCJiYhKCJnZXQiaW4gQj8hRS5fX2VzTW9kdWxlOkIud3JpdGFibGV8fEIuY29uZmlndXJhYmxlKXx8KEI9e2VudW1lcmFibGU6ITAs''@;'; put 'put ''Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEVbel19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQsTixCKX06ZnVuY3Rpb24oVCxFLHosTil7dm9pZCAwPT09TiYmKE49eiksVFtOXT1FW3pdfSksRz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oVCxFKXtmb3IodmFyIHogaW4gVCki''@;'; put 'put ''ZGVmYXVsdCI9PT16fHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRSx6KXx8aihFLFQseil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRD1JKDU5NTYpO0coSSgxMjMwKSxPKSxHKEkoMTM5NSksTyksRyhJKDk4MjEp''@;'; put 'put ''LE8pLEcoSSg4MzA2KSxPKSxHKEkoMzQ2NyksTyksRyhJKDM2MDIpLE8pLE8uZGVmYXVsdD1ELmRlZmF1bHR9LDE1NzA6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihCLFope3JldHVybihqPU9iamVjdC5zZXRQ''@;'; put 'put ''cm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihZLFUpe1kuX19wcm90b19fPVV9fHxmdW5jdGlvbihZLFUpe2Zvcih2YXIgcSBpbiBVKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChVLHEpJiYoWVtxXT1VW3FdKX0pKEIsWil9''@;'; put 'put ''LGZ1bmN0aW9uKEIsWil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFomJm51bGwhPT1aKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoWikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gWSgpe3RoaXMuY29uc3RydWN0b3I9''@;'; put 'put ''Qn1qKEIsWiksQi5wcm90b3R5cGU9bnVsbD09PVo/T2JqZWN0LmNyZWF0ZShaKTooWS5wcm90b3R5cGU9Wi5wcm90b3R5cGUsbmV3IFkpfSksRD10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oQixaLFksVSl7cmV0dXJuIG5ldyhZfHwoWT1Qcm9taXNlKSkoZnVuY3Rpb24ocSxKKXtm''@;'; put 'put ''dW5jdGlvbiBlZSh1ZSl7dHJ5e2llKFUubmV4dCh1ZSkpfWNhdGNoKGxlKXtKKGxlKX19ZnVuY3Rpb24gcmUodWUpe3RyeXtpZShVLnRocm93KHVlKSl9Y2F0Y2gobGUpe0oobGUpfX1mdW5jdGlvbiBpZSh1ZSl7dmFyIGxlO3VlLmRvbmU/cSh1ZS52YWx1ZSk6KGxlPXVlLnZhbHVlLGxlIGlu''@;'; put 'put ''c3RhbmNlb2YgWT9sZTpuZXcgWShmdW5jdGlvbihhZSl7YWUobGUpfSkpLnRoZW4oZWUscmUpfWllKChVPVUuYXBwbHkoQixafHxbXSkpLm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihCLFope3ZhciBZLFUscSxKLGVlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rp''@;'; put 'put ''b24oKXtpZigxJnFbMF0pdGhyb3cgcVsxXTtyZXR1cm4gcVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBKPXtuZXh0OnJlKDApLHRocm93OnJlKDEpLHJldHVybjpyZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEpbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzfSksSjtmdW5jdGlvbiByZShpZSl7cmV0dXJuIGZ1bmN0aW9uKHVlKXtyZXR1cm4gZnVuY3Rpb24obGUpe2lmKFkpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7ZWU7KXRyeXtpZihZPTEsVSYmKHE9MiZsZVswXT9VLnJl''@;'; put 'put ''dHVybjpsZVswXT9VLnRocm93fHwoKHE9VS5yZXR1cm4pJiZxLmNhbGwoVSksMCk6VS5uZXh0KSYmIShxPXEuY2FsbChVLGxlWzFdKSkuZG9uZSlyZXR1cm4gcTtzd2l0Y2goVT0wLHEmJihsZT1bMiZsZVswXSxxLnZhbHVlXSksbGVbMF0pe2Nhc2UgMDpjYXNlIDE6cT1sZTticmVhaztjYXNl''@;'; put 'put ''IDQ6cmV0dXJuIGVlLmxhYmVsKysse3ZhbHVlOmxlWzFdLGRvbmU6ITF9O2Nhc2UgNTplZS5sYWJlbCsrLFU9bGVbMV0sbGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsZT1lZS5vcHMucG9wKCksZWUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHE9KHE9ZWUudHJ5cykubGVuZ3Ro''@;'; put 'put ''PjAmJnFbcS5sZW5ndGgtMV0pfHw2IT09bGVbMF0mJjIhPT1sZVswXSkpe2VlPTA7Y29udGludWV9aWYoMz09PWxlWzBdJiYoIXF8fGxlWzFdPnFbMF0mJmxlWzFdPHFbM10pKXtlZS5sYWJlbD1sZVsxXTticmVha31pZig2PT09bGVbMF0mJmVlLmxhYmVsPHFbMV0pe2VlLmxhYmVsPXFbMV0s''@;'; put 'put ''cT1sZTticmVha31pZihxJiZlZS5sYWJlbDxxWzJdKXtlZS5sYWJlbD1xWzJdLGVlLm9wcy5wdXNoKGxlKTticmVha31xWzJdJiZlZS5vcHMucG9wKCksZWUudHJ5cy5wb3AoKTtjb250aW51ZX1sZT1aLmNhbGwoQixlZSl9Y2F0Y2goYWUpe2xlPVs2LGFlXSxVPTB9ZmluYWxseXtZPXE9MH1p''@;'; put 'put ''Zig1JmxlWzBdKXRocm93IGxlWzFdO3JldHVybnt2YWx1ZTpsZVswXT9sZVsxXTp2b2lkIDAsZG9uZTohMH19KFtpZSx1ZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLkNvbXB1dGVKb2JFeGVjdXRvcj12b2lkIDA7dmFyIEU9SSgzOTAw''@;'; put 'put ''KSx6PUkoMTM5NSksTj1mdW5jdGlvbihCKXtmdW5jdGlvbiBaKFksVSl7dmFyIHE9Qi5jYWxsKHRoaXMsWSxFLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJuIHEuc2FzVml5YUFwaUNsaWVudD1VLHF9cmV0dXJuIEcoWixCKSxaLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKFks''@;'; put 'put ''VSxxLEosZWUpe3JldHVybiBEKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZSx1ZT10aGlzO3JldHVybiBUKHRoaXMsZnVuY3Rpb24obGUpe3JldHVybiByZT1KfHxmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sWzIsbmV3IFByb21pc2UoZnVuY3Rpb24o''@;'; put 'put ''YWUsVyl7dmFyIGI7bnVsbD09PShiPXVlLnNhc1ZpeWFBcGlDbGllbnQpfHx2b2lkIDA9PT1ifHxiLmV4ZWN1dGVDb21wdXRlSm9iKFkscS5jb250ZXh0TmFtZSxxLmRlYnVnLFUsZWUsITAsITApLnRoZW4oZnVuY3Rpb24oQSl7dWUuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KEEs''@;'; put 'put ''WSxxLmRlYnVnKSxhZShBLnJlc3VsdCl9KS5jYXRjaChmdW5jdGlvbihBKXtyZXR1cm4gRCh1ZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEY9dGhpcztyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRjaChILmxhYmVsKXtjYXNlIDA6cmV0dXJuIEEgaW5zdGFuY2VvZiB6LkNv''@;'; put 'put ''bXB1dGVKb2JFeGVjdXRpb25FcnJvciYmKHRoaXMuc2FzVml5YUFwaUNsaWVudC5hcHBlbmRSZXF1ZXN0KEEsWSxxLmRlYnVnKSxXKG5ldyB6LkVycm9yUmVzcG9uc2UoQT8ubWVzc2FnZSxBKSkpLEEgaW5zdGFuY2VvZiB6LkxvZ2luUmVxdWlyZWRFcnJvcj8odGhpcy5hcHBlbmRXYWl0aW5n''@;'; put 'put ''UmVxdWVzdChmdW5jdGlvbigpe3JldHVybiBGLmV4ZWN1dGUoWSxVLHEsSikudGhlbihmdW5jdGlvbihnKXthZShnKX0sZnVuY3Rpb24oZyl7VyhnKX0pfSksWzQscmUoKV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gSC5zZW50KCksWzMsM107Y2FzZSAyOlcobmV3IHouRXJyb3JSZXNwb25zZShB''@;'; put 'put ''Py5tZXNzYWdlLEEpKSxILmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxafShJKDYxMTgpLkJhc2VKb2JFeGVjdXRvcik7Ty5Db21wdXRlSm9iRXhlY3V0b3I9Tn0sMzQ5MTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqLEc9dGhpcyYmdGhpcy5fX2V4''@;'; put 'put ''dGVuZHN8fChqPWZ1bmN0aW9uKFosWSl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKFUscSl7VS5fX3Byb3RvX189cX18fGZ1bmN0aW9uKFUscSl7Zm9yKHZhciBKIGluIHEpT2JqZWN0LnByb3RvdHlwZS5o''@;'; put 'put ''YXNPd25Qcm9wZXJ0eS5jYWxsKHEsSikmJihVW0pdPXFbSl0pfSkoWixZKX0sZnVuY3Rpb24oWixZKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgWSYmbnVsbCE9PVkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhZKSsiIGlzIG5vdCBhIGNvbnN0cnVj''@;'; put 'put ''dG9yIG9yIG51bGwiKTtmdW5jdGlvbiBVKCl7dGhpcy5jb25zdHJ1Y3Rvcj1afWooWixZKSxaLnByb3RvdHlwZT1udWxsPT09WT9PYmplY3QuY3JlYXRlKFkpOihVLnByb3RvdHlwZT1ZLnByb3RvdHlwZSxuZXcgVSl9KSxEPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihaLFksVSxx''@;'; put 'put ''KXtyZXR1cm4gbmV3KFV8fChVPVByb21pc2UpKShmdW5jdGlvbihKLGVlKXtmdW5jdGlvbiByZShsZSl7dHJ5e3VlKHEubmV4dChsZSkpfWNhdGNoKGFlKXtlZShhZSl9fWZ1bmN0aW9uIGllKGxlKXt0cnl7dWUocS50aHJvdyhsZSkpfWNhdGNoKGFlKXtlZShhZSl9fWZ1bmN0aW9uIHVlKGxl''@;'; put 'put ''KXt2YXIgYWU7bGUuZG9uZT9KKGxlLnZhbHVlKTooYWU9bGUudmFsdWUsYWUgaW5zdGFuY2VvZiBVP2FlOm5ldyBVKGZ1bmN0aW9uKFcpe1coYWUpfSkpLnRoZW4ocmUsaWUpfXVlKChxPXEuYXBwbHkoWixZfHxbXSkpLm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5j''@;'; put 'put ''dGlvbihaLFkpe3ZhciBVLHEsSixlZSxyZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZKWzBdKXRocm93IEpbMV07cmV0dXJuIEpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZWU9e25leHQ6aWUoMCksdGhyb3c6aWUoMSkscmV0dXJuOmllKDIpfSwiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiYoZWVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZWU7ZnVuY3Rpb24gaWUodWUpe3JldHVybiBmdW5jdGlvbihsZSl7cmV0dXJuIGZ1bmN0aW9uKGFlKXtpZihVKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4''@;'; put 'put ''ZWN1dGluZy4iKTtmb3IoO3JlOyl0cnl7aWYoVT0xLHEmJihKPTImYWVbMF0/cS5yZXR1cm46YWVbMF0/cS50aHJvd3x8KChKPXEucmV0dXJuKSYmSi5jYWxsKHEpLDApOnEubmV4dCkmJiEoSj1KLmNhbGwocSxhZVsxXSkpLmRvbmUpcmV0dXJuIEo7c3dpdGNoKHE9MCxKJiYoYWU9WzImYWVb''@;'; put 'put ''MF0sSi52YWx1ZV0pLGFlWzBdKXtjYXNlIDA6Y2FzZSAxOko9YWU7YnJlYWs7Y2FzZSA0OnJldHVybiByZS5sYWJlbCsrLHt2YWx1ZTphZVsxXSxkb25lOiExfTtjYXNlIDU6cmUubGFiZWwrKyxxPWFlWzFdLGFlPVswXTtjb250aW51ZTtjYXNlIDc6YWU9cmUub3BzLnBvcCgpLHJlLnRyeXMu''@;'; put 'put ''cG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChKPShKPXJlLnRyeXMpLmxlbmd0aD4wJiZKW0oubGVuZ3RoLTFdKXx8NiE9PWFlWzBdJiYyIT09YWVbMF0pKXtyZT0wO2NvbnRpbnVlfWlmKDM9PT1hZVswXSYmKCFKfHxhZVsxXT5KWzBdJiZhZVsxXTxKWzNdKSl7cmUubGFiZWw9YWVbMV07''@;'; put 'put ''YnJlYWt9aWYoNj09PWFlWzBdJiZyZS5sYWJlbDxKWzFdKXtyZS5sYWJlbD1KWzFdLEo9YWU7YnJlYWt9aWYoSiYmcmUubGFiZWw8SlsyXSl7cmUubGFiZWw9SlsyXSxyZS5vcHMucHVzaChhZSk7YnJlYWt9SlsyXSYmcmUub3BzLnBvcCgpLHJlLnRyeXMucG9wKCk7Y29udGludWV9YWU9WS5j''@;'; put 'put ''YWxsKFoscmUpfWNhdGNoKFcpe2FlPVs2LFddLHE9MH1maW5hbGx5e1U9Sj0wfWlmKDUmYWVbMF0pdGhyb3cgYWVbMV07cmV0dXJue3ZhbHVlOmFlWzBdP2FlWzFdOnZvaWQgMCxkb25lOiEwfX0oW3VlLGxlXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLE8uRmlsZVVwbG9hZGVyPXZvaWQgMDt2YXIgRT1JKDU5MjgpLHo9SSgxMzk1KSxOPUkoMzkwMCksQj1mdW5jdGlvbihaKXtmdW5jdGlvbiBZKFUscSxKLGVlKXt2YXIgcmU9Wi5jYWxsKHRoaXMsVSxxKXx8dGhpcztyZXR1cm4gcmUuam9ic1BhdGg9SixyZS5yZXF1ZXN0Q2xpZW50''@;'; put 'put ''PWVlLHJlfXJldHVybiBHKFksWiksWS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihVLHEsSixlZSl7cmV0dXJuIEQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlLGllLHVlLGxlLGFlLFcsYixBLEYsSCxnLEMsayxwPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbih3''@;'; put 'put ''KXtpZihyZT1xLmZpbGVzLGllPXEucGFyYW1zLHVlPWVlfHxmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sIXJlPy5sZW5ndGgpdGhyb3cgbmV3IHouRXJyb3JSZXNwb25zZSgiQXQgbGVhc3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92aWRlZC4iKTtpZighVXx8IiI9PT1VKXRo''@;'; put 'put ''cm93IG5ldyB6LkVycm9yUmVzcG9uc2UoInNhc0pvYiBtdXN0IGJlIHByb3ZpZGVkLiIpO2ZvcihhZSBpbiBsZT0iIixpZSlpZS5oYXNPd25Qcm9wZXJ0eShhZSkmJihsZSs9IiYiLmNvbmNhdChhZSwiPSIpLmNvbmNhdChpZVthZV0pKTtmb3IoVz1KLmFwcExvYz9KLmFwcExvYy5yZXBsYWNl''@;'; put 'put ''KC9cLz8kLywiLyIpK1UucmVwbGFjZSgvXlwvLywiIik6VSxiPSIiLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitXKS5jb25jYXQobGUpLEE9bmV3IEZvcm1EYXRhLEY9MCxIPXJlO0Y8SC5sZW5ndGg7RisrKUEuYXBwZW5kKCJmaWxlIiwoZz1IW0ZdKS5m''@;'; put 'put ''aWxlLGcuZmlsZU5hbWUpO3JldHVybihDPXRoaXMucmVxdWVzdENsaWVudC5nZXRDc3JmVG9rZW4oImZpbGUiKSkmJkEuYXBwZW5kKCJfY3NyZiIsQy52YWx1ZSksSi5kZWJ1ZyYmQS5hcHBlbmQoIl9kZWJ1ZyIsIjEzMSIpLEouc2VydmVyVHlwZT09PU4uU2VydmVyVHlwZS5TYXNWaXlhJiZK''@;'; put 'put ''LmNvbnRleHROYW1lJiZBLmFwcGVuZCgiX2NvbnRleHRuYW1lIixKLmNvbnRleHROYW1lKSxrPXsiY2FjaGUtY29udHJvbCI6Im5vLWNhY2hlIixBY2NlcHQ6IiovKiIsIkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifSxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihLLHRlKXtwLnJlcXVlc3RD''@;'; put 'put ''bGllbnQucG9zdChiLEEsdm9pZCAwLCJhcHBsaWNhdGlvbi9qc29uIixrKS50aGVuKGZ1bmN0aW9uKGNlKXtyZXR1cm4gRChwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGU7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihTZSl7c3dpdGNoKFNlLmxhYmVsKXtjYXNlIDA6aWYodGhpcy5y''@;'; put 'put ''ZXF1ZXN0Q2xpZW50LmFwcGVuZFJlcXVlc3QoY2UsVSxKLmRlYnVnKSxoZT1jZS5yZXN1bHQsIUouZGVidWcpcmV0dXJuWzMsNl07c3dpdGNoKHRoaXMuc2VydmVyVHlwZSl7Y2FzZSBOLlNlcnZlclR5cGUuU2FzVml5YTpyZXR1cm5bMywxXTtjYXNlIE4uU2VydmVyVHlwZS5TYXM5OnJldHVy''@;'; put 'put ''blszLDNdO2Nhc2UgTi5TZXJ2ZXJUeXBlLlNhc2pzOnJldHVyblszLDRdfXJldHVyblszLDVdO2Nhc2UgMTpyZXR1cm5bNCwoMCxFLnBhcnNlU2FzVml5YURlYnVnUmVzcG9uc2UpKGNlLnJlc3VsdCx0aGlzLnJlcXVlc3RDbGllbnQsSi5zZXJ2ZXJVcmwpXTtjYXNlIDI6cmV0dXJuIGhlPVNl''@;'; put 'put ''LnNlbnQoKSxbMyw1XTtjYXNlIDM6cmV0dXJuIGhlPSJzdHJpbmciPT10eXBlb2YgY2UucmVzdWx0PygwLEUucGFyc2VXZWJvdXRSZXNwb25zZSkoY2UucmVzdWx0LGIpOmNlLnJlc3VsdCxbMyw1XTtjYXNlIDQ6cmV0dXJuIGhlPSJzdHJpbmciPT10eXBlb2YgY2UucmVzdWx0PygwLEUuZ2V0''@;'; put 'put ''VmFsaWRKc29uKShjZS5yZXN1bHQpOmNlLnJlc3VsdCxbMyw1XTtjYXNlIDU6cmV0dXJuWzMsN107Y2FzZSA2OmhlPSJzdHJpbmciPT10eXBlb2YgY2UucmVzdWx0PygwLEUuZ2V0VmFsaWRKc29uKShjZS5yZXN1bHQpOmNlLnJlc3VsdCxTZS5sYWJlbD03O2Nhc2UgNzpyZXR1cm4gSyhoZSks''@;'; put 'put ''WzJdfX0pfSl9KS5jYXRjaChmdW5jdGlvbihjZSl7cmV0dXJuIEQocCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGhlPXRoaXM7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihTZSl7c3dpdGNoKFNlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGNlIGluc3RhbmNlb2Ygei5Kb2JFeGVjdXRpb25F''@;'; put 'put ''cnJvciYmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KGNlLFUsSi5kZWJ1ZyksdGUobmV3IHouRXJyb3JSZXNwb25zZShjZT8ubWVzc2FnZSxjZSkpKSxjZSBpbnN0YW5jZW9mIHouTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIGhlLmV4ZWN1dGUoVSxxLEosZWUpLnRoZW4oZnVuY3Rpb24oTGUpe0soTGUpfSxmdW5jdGlvbihMZSl7dGUoTGUpfSl9KSxbNCx1ZSgpXSk6WzMsMl07Y2FzZSAxOnJldHVybiBTZS5zZW50KCksWzMsM107Y2FzZSAyOnRlKG5ldyB6LkVycm9yUmVzcG9uc2UoIkZpbGUgdXBs''@;'; put 'put ''b2FkIHJlcXVlc3QgZmFpbGVkLiIsY2UpKSxTZS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bMl19fSl9KX0pfSldfSl9KX0sWX0oSSg2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO08uRmlsZVVwbG9hZGVyPUJ9LDQ0NDY6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPXRoaXMmJnRo''@;'; put 'put ''aXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihZLFUpe3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihxLEope3EuX19wcm90b19fPUp9fHxmdW5jdGlvbihxLEope2Zvcih2YXIgZWUgaW4gSilPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSixlZSkmJihxW2VlXT1KW2VlXSl9KShZLFUpfSxmdW5jdGlvbihZLFUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBVJiZudWxsIT09VSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFUpKyIgaXMgbm90''@;'; put 'put ''IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHEoKXt0aGlzLmNvbnN0cnVjdG9yPVl9aihZLFUpLFkucHJvdG90eXBlPW51bGw9PT1VP09iamVjdC5jcmVhdGUoVSk6KHEucHJvdG90eXBlPVUucHJvdG90eXBlLG5ldyBxKX0pLEQ9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0''@;'; put 'put ''aW9uKFksVSxxLEope3JldHVybiBuZXcocXx8KHE9UHJvbWlzZSkpKGZ1bmN0aW9uKGVlLHJlKXtmdW5jdGlvbiBpZShhZSl7dHJ5e2xlKEoubmV4dChhZSkpfWNhdGNoKFcpe3JlKFcpfX1mdW5jdGlvbiB1ZShhZSl7dHJ5e2xlKEoudGhyb3coYWUpKX1jYXRjaChXKXtyZShXKX19ZnVuY3Rp''@;'; put 'put ''b24gbGUoYWUpe3ZhciBXO2FlLmRvbmU/ZWUoYWUudmFsdWUpOihXPWFlLnZhbHVlLFcgaW5zdGFuY2VvZiBxP1c6bmV3IHEoZnVuY3Rpb24oYil7YihXKX0pKS50aGVuKGllLHVlKX1sZSgoSj1KLmFwcGx5KFksVXx8W10pKS5uZXh0KCkpfSl9LFQ9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8''@;'; put 'put ''ZnVuY3Rpb24oWSxVKXt2YXIgcSxKLGVlLHJlLGllPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmVlWzBdKXRocm93IGVlWzFdO3JldHVybiBlZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiByZT17bmV4dDp1ZSgwKSx0aHJvdzp1ZSgxKSxyZXR1cm46dWUoMil9LCJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJihyZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyZTtmdW5jdGlvbiB1ZShsZSl7cmV0dXJuIGZ1bmN0aW9uKGFlKXtyZXR1cm4gZnVuY3Rpb24oVyl7aWYocSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxy''@;'; put 'put ''ZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtpZTspdHJ5e2lmKHE9MSxKJiYoZWU9MiZXWzBdP0oucmV0dXJuOldbMF0/Si50aHJvd3x8KChlZT1KLnJldHVybikmJmVlLmNhbGwoSiksMCk6Si5uZXh0KSYmIShlZT1lZS5jYWxsKEosV1sxXSkpLmRvbmUpcmV0dXJuIGVlO3N3aXRjaChKPTAsZWUm''@;'; put 'put ''JihXPVsyJldbMF0sZWUudmFsdWVdKSxXWzBdKXtjYXNlIDA6Y2FzZSAxOmVlPVc7YnJlYWs7Y2FzZSA0OnJldHVybiBpZS5sYWJlbCsrLHt2YWx1ZTpXWzFdLGRvbmU6ITF9O2Nhc2UgNTppZS5sYWJlbCsrLEo9V1sxXSxXPVswXTtjb250aW51ZTtjYXNlIDc6Vz1pZS5vcHMucG9wKCksaWUu''@;'; put 'put ''dHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGVlPShlZT1pZS50cnlzKS5sZW5ndGg+MCYmZWVbZWUubGVuZ3RoLTFdKXx8NiE9PVdbMF0mJjIhPT1XWzBdKSl7aWU9MDtjb250aW51ZX1pZigzPT09V1swXSYmKCFlZXx8V1sxXT5lZVswXSYmV1sxXTxlZVszXSkpe2llLmxhYmVs''@;'; put 'put ''PVdbMV07YnJlYWt9aWYoNj09PVdbMF0mJmllLmxhYmVsPGVlWzFdKXtpZS5sYWJlbD1lZVsxXSxlZT1XO2JyZWFrfWlmKGVlJiZpZS5sYWJlbDxlZVsyXSl7aWUubGFiZWw9ZWVbMl0saWUub3BzLnB1c2goVyk7YnJlYWt9ZWVbMl0mJmllLm9wcy5wb3AoKSxpZS50cnlzLnBvcCgpO2NvbnRp''@;'; put 'put ''bnVlfVc9VS5jYWxsKFksaWUpfWNhdGNoKGIpe1c9WzYsYl0sSj0wfWZpbmFsbHl7cT1lZT0wfWlmKDUmV1swXSl0aHJvdyBXWzFdO3JldHVybnt2YWx1ZTpXWzBdP1dbMV06dm9pZCAwLGRvbmU6ITB9fShbbGUsYWVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIs''@;'; put 'put ''e3ZhbHVlOiEwfSksTy5KZXNKb2JFeGVjdXRvcj12b2lkIDA7dmFyIEU9SSgzOTAwKSx6PUkoMTM5NSksTj1JKDYxMTgpLEI9SSg1OTI4KSxaPWZ1bmN0aW9uKFkpe2Z1bmN0aW9uIFUocSxKKXt2YXIgZWU9WS5jYWxsKHRoaXMscSxFLlNlcnZlclR5cGUuU2FzVml5YSl8fHRoaXM7cmV0dXJu''@;'; put 'put ''IGVlLnNhc1ZpeWFBcGlDbGllbnQ9SixlZX1yZXR1cm4gRyhVLFkpLFUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24ocSxKLGVlLHJlLGllLHVlKXtyZXR1cm4gdm9pZCAwPT09dWUmJih1ZT1bXSksRCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbGUsVz10aGlzO3JldHVy''@;'; put 'put ''biBUKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGxlPXJlfHxmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oQSxGKXt2YXIgSDtudWxsPT09KEg9Vy5zYXNWaXlhQXBpQ2xpZW50KXx8dm9pZCAwPT09SHx8SC5leGVjdXRlSm9iKHEs''@;'; put 'put ''ZWUuY29udGV4dE5hbWUsZWUuZGVidWcsSixpZSkudGhlbihmdW5jdGlvbihnKXtXLnNhc1ZpeWFBcGlDbGllbnQuYXBwZW5kUmVxdWVzdChnLHEsZWUuZGVidWcpO3ZhciBDPSgwLEIuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKGcsdWUpO0EoQyl9KS5jYXRjaChmdW5jdGlvbihn''@;'; put 'put ''KXtyZXR1cm4gRChXLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQz10aGlzO3JldHVybiBUKHRoaXMsZnVuY3Rpb24oayl7c3dpdGNoKGsubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZyBpbnN0YW5jZW9mIHouSm9iRXhlY3V0aW9uRXJyb3ImJih0aGlzLnNhc1ZpeWFBcGlDbGllbnQuYXBw''@;'; put 'put ''ZW5kUmVxdWVzdChnLHEsZWUuZGVidWcpLEYobmV3IHouRXJyb3JSZXNwb25zZShnPy5tZXNzYWdlLGcpKSksZyBpbnN0YW5jZW9mIHouTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIEMuZXhlY3V0ZShxLEosZWUscmUsaWUs''@;'; put 'put ''dWUpLnRoZW4oZnVuY3Rpb24oXyl7QShfKX0sZnVuY3Rpb24oXyl7RihfKX0pfSksWzQsbGUoKV0pOlszLDJdO2Nhc2UgMTpyZXR1cm4gay5zZW50KCksWzMsM107Y2FzZSAyOkYobmV3IHouRXJyb3JSZXNwb25zZShnPy5tZXNzYWdlLGcpKSxrLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19''@;'; put 'put ''KX0pfSl9KV19KX0pfSxVfShOLkJhc2VKb2JFeGVjdXRvcik7Ty5KZXNKb2JFeGVjdXRvcj1afSw2MTE4OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEUseixOLEIpe3JldHVybiBuZXcoTnx8KE49UHJvbWlzZSkpKGZ1''@;'; put 'put ''bmN0aW9uKFosWSl7ZnVuY3Rpb24gVShlZSl7dHJ5e0ooQi5uZXh0KGVlKSl9Y2F0Y2gocmUpe1kocmUpfX1mdW5jdGlvbiBxKGVlKXt0cnl7SihCLnRocm93KGVlKSl9Y2F0Y2gocmUpe1kocmUpfX1mdW5jdGlvbiBKKGVlKXt2YXIgcmU7ZWUuZG9uZT9aKGVlLnZhbHVlKToocmU9ZWUudmFs''@;'; put 'put ''dWUscmUgaW5zdGFuY2VvZiBOP3JlOm5ldyBOKGZ1bmN0aW9uKGllKXtpZShyZSl9KSkudGhlbihVLHEpfUooKEI9Qi5hcHBseShFLHp8fFtdKSkubmV4dCgpKX0pfSxHPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEUseil7dmFyIE4sQixaLFksVT17bGFiZWw6MCxzZW50OmZ1''@;'; put 'put ''bmN0aW9uKCl7aWYoMSZaWzBdKXRocm93IFpbMV07cmV0dXJuIFpbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWT17bmV4dDpxKDApLHRocm93OnEoMSkscmV0dXJuOnEoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihZW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpc30pLFk7ZnVuY3Rpb24gcShKKXtyZXR1cm4gZnVuY3Rpb24oZWUpe3JldHVybiBmdW5jdGlvbihyZSl7aWYoTil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtVOyl0cnl7aWYoTj0xLEImJihaPTImcmVbMF0/Qi5yZXR1''@;'; put 'put ''cm46cmVbMF0/Qi50aHJvd3x8KChaPUIucmV0dXJuKSYmWi5jYWxsKEIpLDApOkIubmV4dCkmJiEoWj1aLmNhbGwoQixyZVsxXSkpLmRvbmUpcmV0dXJuIFo7c3dpdGNoKEI9MCxaJiYocmU9WzImcmVbMF0sWi52YWx1ZV0pLHJlWzBdKXtjYXNlIDA6Y2FzZSAxOlo9cmU7YnJlYWs7Y2FzZSA0''@;'; put 'put ''OnJldHVybiBVLmxhYmVsKysse3ZhbHVlOnJlWzFdLGRvbmU6ITF9O2Nhc2UgNTpVLmxhYmVsKyssQj1yZVsxXSxyZT1bMF07Y29udGludWU7Y2FzZSA3OnJlPVUub3BzLnBvcCgpLFUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFo9KFo9VS50cnlzKS5sZW5ndGg+MCYmWlta''@;'; put 'put ''Lmxlbmd0aC0xXSl8fDYhPT1yZVswXSYmMiE9PXJlWzBdKSl7VT0wO2NvbnRpbnVlfWlmKDM9PT1yZVswXSYmKCFafHxyZVsxXT5aWzBdJiZyZVsxXTxaWzNdKSl7VS5sYWJlbD1yZVsxXTticmVha31pZig2PT09cmVbMF0mJlUubGFiZWw8WlsxXSl7VS5sYWJlbD1aWzFdLFo9cmU7YnJlYWt9''@;'; put 'put ''aWYoWiYmVS5sYWJlbDxaWzJdKXtVLmxhYmVsPVpbMl0sVS5vcHMucHVzaChyZSk7YnJlYWt9WlsyXSYmVS5vcHMucG9wKCksVS50cnlzLnBvcCgpO2NvbnRpbnVlfXJlPXouY2FsbChFLFUpfWNhdGNoKGllKXtyZT1bNixpZV0sQj0wfWZpbmFsbHl7Tj1aPTB9aWYoNSZyZVswXSl0aHJvdyBy''@;'; put 'put ''ZVsxXTtyZXR1cm57dmFsdWU6cmVbMF0/cmVbMV06dm9pZCAwLGRvbmU6ITB9fShbSixlZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLkJhc2VKb2JFeGVjdXRvcj12b2lkIDA7dmFyIEQ9SSg1OTI4KSxUPWZ1bmN0aW9uKCl7ZnVuY3Rp''@;'; put 'put ''b24gRSh6LE4pe3ZhciBCPXRoaXM7dGhpcy5zZXJ2ZXJVcmw9eix0aGlzLnNlcnZlclR5cGU9Tix0aGlzLndhaXRpbmdSZXF1ZXN0cz1bXSx0aGlzLnJlc2VuZFdhaXRpbmdSZXF1ZXN0cz1mdW5jdGlvbigpe3JldHVybiBqKEIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBaPXRoaXM7''@;'; put 'put ''cmV0dXJuIEcodGhpcyxmdW5jdGlvbihZKXtzd2l0Y2goWS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LCgwLEQuYXN5bmNGb3JFYWNoKSh0aGlzLndhaXRpbmdSZXF1ZXN0cyxmdW5jdGlvbihVKXtyZXR1cm4gaihaLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLGZ1bmN0''@;'; put 'put ''aW9uKHEpe3N3aXRjaChxLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsVSgpXTtjYXNlIDE6cmV0dXJuIHEuc2VudCgpLFsyXX19KX0pfSldO2Nhc2UgMTpyZXR1cm4gWS5zZW50KCksdGhpcy53YWl0aW5nUmVxdWVzdHM9W10sWzJdfX0pfSl9fXJldHVybiBFLnByb3RvdHlwZS5hcHBlbmRXYWl0''@;'; put 'put ''aW5nUmVxdWVzdD1mdW5jdGlvbih6KXt0aGlzLndhaXRpbmdSZXF1ZXN0cy5wdXNoKHopfSxFLnByb3RvdHlwZS5nZXRSZXF1ZXN0UGFyYW1zPWZ1bmN0aW9uKHope3ZhciBOPXt9O3JldHVybiB6LmRlYnVnJiYoTi5fb21pdHRleHRsb2c9ImZhbHNlIixOLl9vbWl0c2Vzc2lvbnJlc3VsdHM9''@;'; put 'put ''ImZhbHNlIixOLl9kZWJ1Zz0xMzEpLE59LEV9KCk7Ty5CYXNlSm9iRXhlY3V0b3I9VH0sMjY5MzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqLEc9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0aW9uKEosZWUpe3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8''@;'; put 'put ''e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihyZSxpZSl7cmUuX19wcm90b19fPWllfXx8ZnVuY3Rpb24ocmUsaWUpe2Zvcih2YXIgdWUgaW4gaWUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGllLHVlKSYmKHJlW3VlXT1pZVt1ZV0pfSkoSixl''@;'; put 'put ''ZSl9LGZ1bmN0aW9uKEosZWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlZSYmbnVsbCE9PWVlKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoZWUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHJlKCl7dGhpcy5jb25z''@;'; put 'put ''dHJ1Y3Rvcj1KfWooSixlZSksSi5wcm90b3R5cGU9bnVsbD09PWVlP09iamVjdC5jcmVhdGUoZWUpOihyZS5wcm90b3R5cGU9ZWUucHJvdG90eXBlLG5ldyByZSl9KSxEPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIEQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oSil7''@;'; put 'put ''Zm9yKHZhciBlZSxyZT0xLGllPWFyZ3VtZW50cy5sZW5ndGg7cmU8aWU7cmUrKylmb3IodmFyIHVlIGluIGVlPWFyZ3VtZW50c1tyZV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVlLHVlKSYmKEpbdWVdPWVlW3VlXSk7cmV0dXJuIEp9LEQuYXBwbHkodGhpcyxhcmd1''@;'; put 'put ''bWVudHMpfSxUPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihKLGVlLHJlLGllKXtyZXR1cm4gbmV3KHJlfHwocmU9UHJvbWlzZSkpKGZ1bmN0aW9uKHVlLGxlKXtmdW5jdGlvbiBhZShBKXt0cnl7YihpZS5uZXh0KEEpKX1jYXRjaChGKXtsZShGKX19ZnVuY3Rpb24gVyhBKXt0cnl7''@;'; put 'put ''YihpZS50aHJvdyhBKSl9Y2F0Y2goRil7bGUoRil9fWZ1bmN0aW9uIGIoQSl7dmFyIEY7QS5kb25lP3VlKEEudmFsdWUpOihGPUEudmFsdWUsRiBpbnN0YW5jZW9mIHJlP0Y6bmV3IHJlKGZ1bmN0aW9uKEgpe0goRil9KSkudGhlbihhZSxXKX1iKChpZT1pZS5hcHBseShKLGVlfHxbXSkpLm5l''@;'; put 'put ''eHQoKSl9KX0sRT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihKLGVlKXt2YXIgcmUsaWUsdWUsbGUsYWU9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmdWVbMF0pdGhyb3cgdWVbMV07cmV0dXJuIHVlWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGxlPXtuZXh0Olco''@;'; put 'put ''MCksdGhyb3c6VygxKSxyZXR1cm46VygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGxlO2Z1bmN0aW9uIFcoYil7cmV0dXJuIGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihGKXtpZihyZSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthZTspdHJ5e2lmKHJlPTEsaWUmJih1ZT0yJkZbMF0/aWUucmV0dXJuOkZbMF0/aWUudGhyb3d8fCgodWU9aWUucmV0dXJuKSYmdWUuY2FsbChpZSksMCk6aWUubmV4dCkmJiEodWU9dWUuY2Fs''@;'; put 'put ''bChpZSxGWzFdKSkuZG9uZSlyZXR1cm4gdWU7c3dpdGNoKGllPTAsdWUmJihGPVsyJkZbMF0sdWUudmFsdWVdKSxGWzBdKXtjYXNlIDA6Y2FzZSAxOnVlPUY7YnJlYWs7Y2FzZSA0OnJldHVybiBhZS5sYWJlbCsrLHt2YWx1ZTpGWzFdLGRvbmU6ITF9O2Nhc2UgNTphZS5sYWJlbCsrLGllPUZb''@;'; put 'put ''MV0sRj1bMF07Y29udGludWU7Y2FzZSA3OkY9YWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh1ZT0odWU9YWUudHJ5cykubGVuZ3RoPjAmJnVlW3VlLmxlbmd0aC0xXSl8fDYhPT1GWzBdJiYyIT09RlswXSkpe2FlPTA7Y29udGludWV9aWYoMz09PUZb''@;'; put 'put ''MF0mJighdWV8fEZbMV0+dWVbMF0mJkZbMV08dWVbM10pKXthZS5sYWJlbD1GWzFdO2JyZWFrfWlmKDY9PT1GWzBdJiZhZS5sYWJlbDx1ZVsxXSl7YWUubGFiZWw9dWVbMV0sdWU9RjticmVha31pZih1ZSYmYWUubGFiZWw8dWVbMl0pe2FlLmxhYmVsPXVlWzJdLGFlLm9wcy5wdXNoKEYpO2Jy''@;'; put 'put ''ZWFrfXVlWzJdJiZhZS5vcHMucG9wKCksYWUudHJ5cy5wb3AoKTtjb250aW51ZX1GPWVlLmNhbGwoSixhZSl9Y2F0Y2goSCl7Rj1bNixIXSxpZT0wfWZpbmFsbHl7cmU9dWU9MH1pZig1JkZbMF0pdGhyb3cgRlsxXTtyZXR1cm57dmFsdWU6RlswXT9GWzFdOnZvaWQgMCxkb25lOiEwfX0oW2Is''@;'; put 'put ''QV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLlNhczlKb2JFeGVjdXRvcj12b2lkIDA7dmFyIHo9SSg2MjMwKSxOPUkoMTM5NSksQj1JKDU5MjgpLFo9SSg2MTE4KSxZPUkoNzk1KSxVPWZ1bmN0aW9uKEope2Z1bmN0aW9uIGVlKHJlLGll''@;'; put 'put ''LHVlLGxlLGFlKXt2YXIgVz1KLmNhbGwodGhpcyxyZSxpZSl8fHRoaXM7cmV0dXJuIFcuam9ic1BhdGg9dWUsVy5yZXF1ZXN0Q2xpZW50PWxlLFcuc2FzOVJlcXVlc3RDbGllbnQ9bmV3IFkuU2FzOVJlcXVlc3RDbGllbnQocmUsYWUpLFd9cmV0dXJuIEcoZWUsSiksZWUucHJvdG90eXBlLmV4''@;'; put 'put ''ZWN1dGU9ZnVuY3Rpb24ocmUsaWUsdWUpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsZSxhZSxXLGIsQSxGLEg9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGcpe3N3aXRjaChnLmxhYmVsKXtjYXNlIDA6aWYobGU9KDAsQi5pc1JlbGF0aXZlUGF0aCko''@;'; put 'put ''cmUpJiZ1ZS5hcHBMb2M/dWUuYXBwTG9jLnJlcGxhY2UoL1wvPyQvLCIvIikrcmUucmVwbGFjZSgvXlwvLywiIik6cmUsYWU9IiIuY29uY2F0KHVlLnNlcnZlclVybCkuY29uY2F0KHRoaXMuam9ic1BhdGgsIj8iKS5jb25jYXQoIl9wcm9ncmFtPSIrbGUpLGFlPSIiLmNvbmNhdChhZSkuY29u''@;'; put 'put ''Y2F0KHVlLnVzZXJuYW1lJiZ1ZS5wYXNzd29yZD8iJl91c2VybmFtZT0iK3VlLnVzZXJuYW1lKyImX3Bhc3N3b3JkPSIrdWUucGFzc3dvcmQ6IiIpLGFlPSIiLmNvbmNhdChhZSkuY29uY2F0KHVlLmRlYnVnPyImX2RlYnVnPTEzMSI6IiIpLFc9RCh7fSx0aGlzLmdldFJlcXVlc3RQYXJhbXMo''@;'; put 'put ''dWUpKSxiPW5ldyB6LGllKXRyeXtiPXEoYixpZSl9Y2F0Y2goQyl7cmV0dXJuWzIsUHJvbWlzZS5yZWplY3QobmV3IE4uRXJyb3JSZXNwb25zZShDPy5tZXNzYWdlLEMpKV19ZWxzZSBpZT0iIjtmb3IoQSBpbiBXKVcuaGFzT3duUHJvcGVydHkoQSkmJmIuYXBwZW5kKEEsV1tBXSk7cmV0dXJu''@;'; put 'put ''WzQsdGhpcy5zYXM5UmVxdWVzdENsaWVudC5sb2dpbih1ZS51c2VybmFtZSx1ZS5wYXNzd29yZCx0aGlzLmpvYnNQYXRoKV07Y2FzZSAxOnJldHVybiBnLnNlbnQoKSxGPWllJiZPYmplY3Qua2V5cyhpZSkubGVuZ3RoPyJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iK2IuX2JvdW5k''@;'; put 'put ''YXJ5OiJ0ZXh0L3BsYWluIixbMixuZXcgUHJvbWlzZShmdW5jdGlvbihDLGspe3JldHVybiBILnNhczlSZXF1ZXN0Q2xpZW50LnBvc3QoYWUsYix2b2lkIDAsRix7QWNjZXB0OiIqLyoiLENvbm5lY3Rpb246IktlZXAtQWxpdmUifSkudGhlbihmdW5jdGlvbihfKXtILnJlcXVlc3RDbGllbnQu''@;'; put 'put ''YXBwZW5kUmVxdWVzdChfLHJlLHVlLmRlYnVnKSxDKF8pfSkuY2F0Y2goZnVuY3Rpb24oXyl7dmFyIHA9XztfLnJlc3VsdCYmIiIhPT1fLnJlc3VsdD9wPV8ucmVzdWx0Ol8ubWVzc2FnZSYmKHA9Xy5tZXNzYWdlKSxILnJlcXVlc3RDbGllbnQuYXBwZW5kUmVxdWVzdChwLHJlLHVlLmRlYnVn''@;'; put 'put ''KSxrKG5ldyBOLkVycm9yUmVzcG9uc2UoXz8ubWVzc2FnZSxfKSl9KX0pXX19KX0pfSxlZS5wcm90b3R5cGUuZ2V0UmVxdWVzdFBhcmFtcz1mdW5jdGlvbihyZSl7dmFyIGllPXt9O3JldHVybiByZS5kZWJ1ZyYmKGllLl9kZWJ1Zz0xMzEpLGllfSxlZX0oWi5CYXNlSm9iRXhlY3V0b3IpO08u''@;'; put 'put ''U2FzOUpvYkV4ZWN1dG9yPVU7dmFyIHE9ZnVuY3Rpb24oSixlZSl7Zm9yKHZhciByZSBpbiBlZSl7dmFyIGllPXJlLHVlPSgwLEIuY29udmVydFRvQ1NWKShlZSxyZSk7aWYoIkVSUk9SOiBMQVJHRSBTVFJJTkcgTEVOR1RIIj09PXVlKXRocm93IG5ldyBFcnJvcigiVGhlIG1heCBsZW5ndGgg''@;'; put 'put ''b2YgYSBzdHJpbmcgdmFsdWUgaW4gU0FTanMgaXMgMzI3NjUgY2hhcmFjdGVycy4iKTtKLmFwcGVuZChpZSx1ZSx7ZmlsZW5hbWU6IiIuY29uY2F0KGllLCIuY3N2IiksY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2NzdiJ9KX1yZXR1cm4gSn19LDEwNjU6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgaixHPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihKLGVlKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocmUsaWUpe3JlLl9fcHJvdG9fXz1pZX18fGZ1bmN0aW9uKHJl''@;'; put 'put ''LGllKXtmb3IodmFyIHVlIGluIGllKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpZSx1ZSkmJihyZVt1ZV09aWVbdWVdKX0pKEosZWUpfSxmdW5jdGlvbihKLGVlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZWUmJm51bGwhPT1lZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''bGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGVlKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiByZSgpe3RoaXMuY29uc3RydWN0b3I9Sn1qKEosZWUpLEoucHJvdG90eXBlPW51bGw9PT1lZT9PYmplY3QuY3JlYXRlKGVlKToocmUucHJvdG90eXBlPWVlLnBy''@;'; put 'put ''b3RvdHlwZSxuZXcgcmUpfSksRD10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBEPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKEope2Zvcih2YXIgZWUscmU9MSxpZT1hcmd1bWVudHMubGVuZ3RoO3JlPGllO3JlKyspZm9yKHZhciB1ZSBpbiBlZT1hcmd1bWVudHNbcmVd''@;'; put 'put ''KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlZSx1ZSkmJihKW3VlXT1lZVt1ZV0pO3JldHVybiBKfSxELmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVD10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oSixlZSxyZSxpZSl7cmV0dXJuIG5ldyhyZXx8KHJlPVByb21p''@;'; put 'put ''c2UpKShmdW5jdGlvbih1ZSxsZSl7ZnVuY3Rpb24gYWUoQSl7dHJ5e2IoaWUubmV4dChBKSl9Y2F0Y2goRil7bGUoRil9fWZ1bmN0aW9uIFcoQSl7dHJ5e2IoaWUudGhyb3coQSkpfWNhdGNoKEYpe2xlKEYpfX1mdW5jdGlvbiBiKEEpe3ZhciBGO0EuZG9uZT91ZShBLnZhbHVlKTooRj1BLnZh''@;'; put 'put ''bHVlLEYgaW5zdGFuY2VvZiByZT9GOm5ldyByZShmdW5jdGlvbihIKXtIKEYpfSkpLnRoZW4oYWUsVyl9YigoaWU9aWUuYXBwbHkoSixlZXx8W10pKS5uZXh0KCkpfSl9LEU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oSixlZSl7dmFyIHJlLGllLHVlLGxlLGFlPXtsYWJlbDow''@;'; put 'put ''LHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnVlWzBdKXRocm93IHVlWzFdO3JldHVybiB1ZVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBsZT17bmV4dDpXKDApLHRocm93OlcoMSkscmV0dXJuOlcoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihsZVtTeW1ib2wuaXRlcmF0b3JdPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxsZTtmdW5jdGlvbiBXKGIpe3JldHVybiBmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oRil7aWYocmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YWU7KXRyeXtpZihyZT0xLGllJiYo''@;'; put 'put ''dWU9MiZGWzBdP2llLnJldHVybjpGWzBdP2llLnRocm93fHwoKHVlPWllLnJldHVybikmJnVlLmNhbGwoaWUpLDApOmllLm5leHQpJiYhKHVlPXVlLmNhbGwoaWUsRlsxXSkpLmRvbmUpcmV0dXJuIHVlO3N3aXRjaChpZT0wLHVlJiYoRj1bMiZGWzBdLHVlLnZhbHVlXSksRlswXSl7Y2FzZSAw''@;'; put 'put ''OmNhc2UgMTp1ZT1GO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYWUubGFiZWwrKyx7dmFsdWU6RlsxXSxkb25lOiExfTtjYXNlIDU6YWUubGFiZWwrKyxpZT1GWzFdLEY9WzBdO2NvbnRpbnVlO2Nhc2UgNzpGPWFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgo''@;'; put 'put ''dWU9KHVlPWFlLnRyeXMpLmxlbmd0aD4wJiZ1ZVt1ZS5sZW5ndGgtMV0pfHw2IT09RlswXSYmMiE9PUZbMF0pKXthZT0wO2NvbnRpbnVlfWlmKDM9PT1GWzBdJiYoIXVlfHxGWzFdPnVlWzBdJiZGWzFdPHVlWzNdKSl7YWUubGFiZWw9RlsxXTticmVha31pZig2PT09RlswXSYmYWUubGFiZWw8''@;'; put 'put ''dWVbMV0pe2FlLmxhYmVsPXVlWzFdLHVlPUY7YnJlYWt9aWYodWUmJmFlLmxhYmVsPHVlWzJdKXthZS5sYWJlbD11ZVsyXSxhZS5vcHMucHVzaChGKTticmVha311ZVsyXSYmYWUub3BzLnBvcCgpLGFlLnRyeXMucG9wKCk7Y29udGludWV9Rj1lZS5jYWxsKEosYWUpfWNhdGNoKEgpe0Y9WzYs''@;'; put 'put ''SF0saWU9MH1maW5hbGx5e3JlPXVlPTB9aWYoNSZGWzBdKXRocm93IEZbMV07cmV0dXJue3ZhbHVlOkZbMF0/RlsxXTp2b2lkIDAsZG9uZTohMH19KFtiLEFdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5TYXNqc0pvYkV4ZWN1dG9yPXZv''@;'; put 'put ''aWQgMDt2YXIgej1JKDYyMzApLE49SSgzOTAwKSxCPUkoMTM5NSksWj1JKDQwMzcpLFk9SSg1OTI4KSxVPUkoNTkyOCkscT1mdW5jdGlvbihKKXtmdW5jdGlvbiBlZShyZSxpZSx1ZSl7dmFyIGxlPUouY2FsbCh0aGlzLHJlLE4uU2VydmVyVHlwZS5TYXNqcyl8fHRoaXM7cmV0dXJuIGxlLmpv''@;'; put 'put ''YnNQYXRoPWllLGxlLnJlcXVlc3RDbGllbnQ9dWUsbGV9cmV0dXJuIEcoZWUsSiksZWUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24ocmUsaWUsdWUsbGUsYWUsVyl7cmV0dXJuIHZvaWQgMD09PVcmJihXPVtdKSxUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBiLEEsRixI''@;'; put 'put ''LGcsQyxrLHA9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKHcpe2lmKGI9bGUsQT0oMCxVLmlzUmVsYXRpdmVQYXRoKShyZSkmJnVlLmFwcExvYz91ZS5hcHBMb2MucmVwbGFjZSgvXC8/JC8sIi8iKStyZS5yZXBsYWNlKC9eXC8vLCIiKTpyZSxGPSIiLmNvbmNhdCh1ZS5zZXJ2ZXJVcmwp''@;'; put 'put ''LmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitBKSxIPUQoe30sdGhpcy5nZXRSZXF1ZXN0UGFyYW1zKHVlKSksZz0oMCxZLmdldEZvcm1EYXRhKSgpLGllKXRyeXtnPSgwLFouZ2VuZXJhdGVGaWxlVXBsb2FkRm9ybSkoZyxpZSl9Y2F0Y2goSyl7cmV0dXJu''@;'; put 'put ''WzIsUHJvbWlzZS5yZWplY3QobmV3IEIuRXJyb3JSZXNwb25zZShLPy5tZXNzYWdlLEspKV19Zm9yKEMgaW4gSClILmhhc093blByb3BlcnR5KEMpJiZnLmFwcGVuZChDLEhbQ10pO3JldHVybiBrPWcgaW5zdGFuY2VvZiB6JiZ0eXBlb2YgRm9ybURhdGE+InUiPyJtdWx0aXBhcnQvZm9ybS1k''@;'; put 'put ''YXRhOyBib3VuZGFyeT0iLmNvbmNhdChnLmdldEJvdW5kYXJ5KCkpOnZvaWQgMCxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihLLHRlKXtwLnJlcXVlc3RDbGllbnQucG9zdChGLGcsYWU/LmFjY2Vzc190b2tlbixrKS50aGVuKGZ1bmN0aW9uKGNlKXtyZXR1cm4gVChwLHZvaWQgMCx2b2lkIDAs''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgaGUsU2U7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihMZSl7aWYoT2JqZWN0LmVudHJpZXMoY2UucmVzdWx0KS5sZW5ndGg8MSl0aHJvdyBuZXcgQi5Kb2JFeGVjdXRpb25FcnJvcigwLCJObyB3ZWJvdXQgd2FzIHJldHVybmVkIGJ5IGpvYiAiLmNvbmNhdChBLCIuICBQ''@;'; put 'put ''bGVhc2UgY2hlY2sgdGhlIFNBUyBsb2cgZm9yIG1vcmUgaW5mby4iKSxjZS5sb2cpO3JldHVybihoZT1jZS5yZXN1bHQpJiYic3RyaW5nIj09dHlwZW9mIGhlJiZoZS50cmltKCkmJihjZS5yZXN1bHQ9KDAsVS5nZXRWYWxpZEpzb24pKGhlKSksdGhpcy5yZXF1ZXN0Q2xpZW50LmFwcGVuZFJl''@;'; put 'put ''cXVlc3QoY2UscmUsdWUuZGVidWcpLFNlPSgwLFUuYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXMpKGNlLFcpLEsoU2UpLFsyXX0pfSl9KS5jYXRjaChmdW5jdGlvbihjZSl7cmV0dXJuIFQocCx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGhlPXRoaXM7cmV0dXJuIEUodGhpcyxm''@;'; put 'put ''dW5jdGlvbihTZSl7c3dpdGNoKFNlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGNlIGluc3RhbmNlb2YgQi5Kb2JFeGVjdXRpb25FcnJvciYmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KGNlLHJlLHVlLmRlYnVnKSx0ZShuZXcgQi5FcnJvclJlc3BvbnNlKGNlPy5tZXNzYWdlLGNl''@;'; put 'put ''KSkpLGNlIGluc3RhbmNlb2YgQi5Mb2dpblJlcXVpcmVkRXJyb3I/KGxlfHx0ZShuZXcgQi5FcnJvclJlc3BvbnNlKCJSZXF1ZXN0IGlzIG5vdCBhdXRoZW50aWNhdGVkLiBNYWtlIHN1cmUgLmVudiBmaWxlIGV4aXN0cyB3aXRoIHZhbGlkIGNyZWRlbnRpYWxzLiIsY2UpKSx0aGlzLmFwcGVu''@;'; put 'put ''ZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIGhlLmV4ZWN1dGUocmUsaWUsdWUsbGUsYWUsVykudGhlbihmdW5jdGlvbihMZSl7SyhMZSl9LGZ1bmN0aW9uKExlKXt0ZShMZSl9KX0pLGI/WzQsYigpXTpbMywyXSk6WzMsM107Y2FzZSAxOlNlLnNlbnQoKSxTZS5sYWJlbD0yO2Nh''@;'; put 'put ''c2UgMjpyZXR1cm5bMyw0XTtjYXNlIDM6dGUobmV3IEIuRXJyb3JSZXNwb25zZShjZT8ubWVzc2FnZSxjZSkpLFNlLmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyXX19KX0pfSl9KV19KX0pfSxlZX0oSSg2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO08uU2FzanNKb2JFeGVjdXRvcj1xfSw2MDg0OmZ1''@;'; put 'put ''bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGosRz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGo9ZnVuY3Rpb24oSixlZSl7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHJlLGllKXtyZS5fX3Byb3Rv''@;'; put 'put ''X189aWV9fHxmdW5jdGlvbihyZSxpZSl7Zm9yKHZhciB1ZSBpbiBpZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaWUsdWUpJiYocmVbdWVdPWllW3VlXSl9KShKLGVlKX0sZnVuY3Rpb24oSixlZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGVlJiZudWxsIT09ZWUpdGhy''@;'; put 'put ''b3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhlZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gcmUoKXt0aGlzLmNvbnN0cnVjdG9yPUp9aihKLGVlKSxKLnByb3RvdHlwZT1udWxsPT09ZWU/T2JqZWN0LmNyZWF0ZShlZSk6''@;'; put 'put ''KHJlLnByb3RvdHlwZT1lZS5wcm90b3R5cGUsbmV3IHJlKX0pLEQ9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gRD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihKKXtmb3IodmFyIGVlLHJlPTEsaWU9YXJndW1lbnRzLmxlbmd0aDtyZTxpZTtyZSsrKWZvcih2YXIgdWUg''@;'; put 'put ''aW4gZWU9YXJndW1lbnRzW3JlXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZWUsdWUpJiYoSlt1ZV09ZWVbdWVdKTtyZXR1cm4gSn0sRC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFQ9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEosZWUscmUsaWUpe3JldHVy''@;'; put 'put ''biBuZXcocmV8fChyZT1Qcm9taXNlKSkoZnVuY3Rpb24odWUsbGUpe2Z1bmN0aW9uIGFlKEEpe3RyeXtiKGllLm5leHQoQSkpfWNhdGNoKEYpe2xlKEYpfX1mdW5jdGlvbiBXKEEpe3RyeXtiKGllLnRocm93KEEpKX1jYXRjaChGKXtsZShGKX19ZnVuY3Rpb24gYihBKXt2YXIgRjtBLmRvbmU/''@;'; put 'put ''dWUoQS52YWx1ZSk6KEY9QS52YWx1ZSxGIGluc3RhbmNlb2YgcmU/RjpuZXcgcmUoZnVuY3Rpb24oSCl7SChGKX0pKS50aGVuKGFlLFcpfWIoKGllPWllLmFwcGx5KEosZWV8fFtdKSkubmV4dCgpKX0pfSxFPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKEosZWUpe3ZhciByZSxp''@;'; put 'put ''ZSx1ZSxsZSxhZT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZ1ZVswXSl0aHJvdyB1ZVsxXTtyZXR1cm4gdWVbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbGU9e25leHQ6VygwKSx0aHJvdzpXKDEpLHJldHVybjpXKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYobGVb''@;'; put 'put ''U3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbGU7ZnVuY3Rpb24gVyhiKXtyZXR1cm4gZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKEYpe2lmKHJlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2Fl''@;'; put 'put ''Oyl0cnl7aWYocmU9MSxpZSYmKHVlPTImRlswXT9pZS5yZXR1cm46RlswXT9pZS50aHJvd3x8KCh1ZT1pZS5yZXR1cm4pJiZ1ZS5jYWxsKGllKSwwKTppZS5uZXh0KSYmISh1ZT11ZS5jYWxsKGllLEZbMV0pKS5kb25lKXJldHVybiB1ZTtzd2l0Y2goaWU9MCx1ZSYmKEY9WzImRlswXSx1ZS52''@;'; put 'put ''YWx1ZV0pLEZbMF0pe2Nhc2UgMDpjYXNlIDE6dWU9RjticmVhaztjYXNlIDQ6cmV0dXJuIGFlLmxhYmVsKysse3ZhbHVlOkZbMV0sZG9uZTohMX07Y2FzZSA1OmFlLmxhYmVsKyssaWU9RlsxXSxGPVswXTtjb250aW51ZTtjYXNlIDc6Rj1hZS5vcHMucG9wKCksYWUudHJ5cy5wb3AoKTtjb250''@;'; put 'put ''aW51ZTtkZWZhdWx0OmlmKCEoKHVlPSh1ZT1hZS50cnlzKS5sZW5ndGg+MCYmdWVbdWUubGVuZ3RoLTFdKXx8NiE9PUZbMF0mJjIhPT1GWzBdKSl7YWU9MDtjb250aW51ZX1pZigzPT09RlswXSYmKCF1ZXx8RlsxXT51ZVswXSYmRlsxXTx1ZVszXSkpe2FlLmxhYmVsPUZbMV07YnJlYWt9aWYo''@;'; put 'put ''Nj09PUZbMF0mJmFlLmxhYmVsPHVlWzFdKXthZS5sYWJlbD11ZVsxXSx1ZT1GO2JyZWFrfWlmKHVlJiZhZS5sYWJlbDx1ZVsyXSl7YWUubGFiZWw9dWVbMl0sYWUub3BzLnB1c2goRik7YnJlYWt9dWVbMl0mJmFlLm9wcy5wb3AoKSxhZS50cnlzLnBvcCgpO2NvbnRpbnVlfUY9ZWUuY2FsbChK''@;'; put 'put ''LGFlKX1jYXRjaChIKXtGPVs2LEhdLGllPTB9ZmluYWxseXtyZT11ZT0wfWlmKDUmRlswXSl0aHJvdyBGWzFdO3JldHVybnt2YWx1ZTpGWzBdP0ZbMV06dm9pZCAwLGRvbmU6ITB9fShbYixBXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8u''@;'; put 'put ''V2ViSm9iRXhlY3V0b3I9dm9pZCAwO3ZhciB6PUkoNjIzMCksTj1JKDM5MDApLEI9SSgxMzk1KSxaPUkoNDAzNyksWT1JKDIxNzApLFU9SSg1OTI4KSxxPWZ1bmN0aW9uKEope2Z1bmN0aW9uIGVlKHJlLGllLHVlLGxlLGFlKXt2YXIgVz1KLmNhbGwodGhpcyxyZSxpZSl8fHRoaXM7cmV0dXJu''@;'; put 'put ''IFcuam9ic1BhdGg9dWUsVy5yZXF1ZXN0Q2xpZW50PWxlLFcuc2FzVml5YUFwaUNsaWVudD1hZSxXfXJldHVybiBHKGVlLEopLGVlLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKHJlLGllLHVlLGxlLGFlLFcpe3JldHVybiB2b2lkIDA9PT1XJiYoVz1bXSksVCh0aGlzLHZvaWQgMCx2b2lk''@;'; put 'put ''IDAsZnVuY3Rpb24oKXt2YXIgYixBLEYsSCxnLEMsayxfLHAsSyx0ZSxjZSxTZT10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oTGUpe3N3aXRjaChMZS5sYWJlbCl7Y2FzZSAwOmlmKGI9bGUsQT0oMCxVLmlzUmVsYXRpdmVQYXRoKShyZSkmJnVlLmFwcExvYz91ZS5hcHBMb2MucmVwbGFj''@;'; put 'put ''ZSgvXC8/JC8sIi8iKStyZS5yZXBsYWNlKC9eXC8vLCIiKTpyZSxGPSIiLmNvbmNhdCh1ZS5zZXJ2ZXJVcmwpLmNvbmNhdCh0aGlzLmpvYnNQYXRoLCIvPyIpLmNvbmNhdCgiX3Byb2dyYW09IitBKSx1ZS5zZXJ2ZXJUeXBlIT09Ti5TZXJ2ZXJUeXBlLlNhc1ZpeWEpcmV0dXJuWzMsNV07SD12''@;'; put 'put ''b2lkIDAsTGUubGFiZWw9MTtjYXNlIDE6cmV0dXJuIExlLnRyeXMucHVzaChbMSwzLCw0XSksWzQsdGhpcy5nZXRKb2JVcmkocmUpXTtjYXNlIDI6cmV0dXJuIEg9TGUuc2VudCgpLFszLDRdO2Nhc2UgMzpyZXR1cm4gZz1MZS5zZW50KCksWzIsbmV3IFByb21pc2UoZnVuY3Rpb24oSGUseGUp''@;'; put 'put ''e3JldHVybiBUKFNlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRGU9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEJlKXtzd2l0Y2goQmUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZyBpbnN0YW5jZW9mIEIuTG9naW5SZXF1aXJlZEVycm9yPyh0aGlzLmFwcGVuZFdhaXRpbmdSZXF1''@;'; put 'put ''ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIERlLmV4ZWN1dGUocmUsaWUsdWUsbGUsYWUsVykudGhlbihmdW5jdGlvbihHZSl7SGUoR2UpfSxmdW5jdGlvbihHZSl7eGUoR2UpfSl9KSxiP1s0LGIoKV06WzMsMl0pOlszLDNdO2Nhc2UgMTpCZS5zZW50KCksQmUubGFiZWw9MjtjYXNlIDI6cmV0dXJu''@;'; put 'put ''WzMsNF07Y2FzZSAzOnhlKG5ldyBCLkVycm9yUmVzcG9uc2UoZz8ubWVzc2FnZSxnKSksQmUubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9KV07Y2FzZSA0OkYrPUgubGVuZ3RoPjA/IiZfam9iPSIrSDoiIixILmxlbmd0aD4wJiYoRj0oRis9IiZfam9iPSIrSCkucmVwbGFjZSgiX3By''@;'; put 'put ''b2dyYW09IiwiX19wcm9ncmFtPSIpKSxGKz11ZS5jb250ZXh0TmFtZSYmIS9ccy8udGVzdCh1ZS5jb250ZXh0TmFtZSk/IiZfY29udGV4dG5hbWU9Ii5jb25jYXQodWUuY29udGV4dE5hbWUpOiIiLExlLmxhYmVsPTU7Y2FzZSA1OmlmKEM9RCh7fSx0aGlzLmdldFJlcXVlc3RQYXJhbXModWUp''@;'; put 'put ''KSxrPSgwLFUuZ2V0Rm9ybURhdGEpKCksaWUpaWYoXz1KU09OLnN0cmluZ2lmeShpZSksdWUuc2VydmVyVHlwZT09PU4uU2VydmVyVHlwZS5TYXM5fHxfLmxlbmd0aD41ZTV8fF8uaW5jbHVkZXMoIjsiKSl0cnl7az0oMCxaLmdlbmVyYXRlRmlsZVVwbG9hZEZvcm0pKGssaWUpfWNhdGNoKEhl''@;'; put 'put ''KXtyZXR1cm5bMixQcm9taXNlLnJlamVjdChuZXcgQi5FcnJvclJlc3BvbnNlKEhlPy5tZXNzYWdlLEhlKSldfWVsc2UgdHJ5e3A9KDAsWS5nZW5lcmF0ZVRhYmxlVXBsb2FkRm9ybSkoayxpZSksSz1wLnJlcXVlc3RQYXJhbXMsaz1wLmZvcm1EYXRhLEM9RChEKHt9LEMpLEspfWNhdGNoKEhl''@;'; put 'put ''KXtyZXR1cm5bMixQcm9taXNlLnJlamVjdChuZXcgQi5FcnJvclJlc3BvbnNlKEhlPy5tZXNzYWdlLEhlKSldfWZvcih0ZSBpbiBDKUMuaGFzT3duUHJvcGVydHkodGUpJiZrLmFwcGVuZCh0ZSxDW3RlXSk7cmV0dXJuIGNlPWsgaW5zdGFuY2VvZiB6JiZ0eXBlb2YgRm9ybURhdGE+InUiPyJt''@;'; put 'put ''dWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iLmNvbmNhdChrLmdldEJvdW5kYXJ5KCkpOnZvaWQgMCxbMixuZXcgUHJvbWlzZShmdW5jdGlvbihIZSx4ZSl7U2UucmVxdWVzdENsaWVudC5wb3N0KEYsayxhZT8uYWNjZXNzX3Rva2VuLGNlKS50aGVuKGZ1bmN0aW9uKERlKXtyZXR1cm4g''@;'; put 'put ''VChTZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEJlLEdlO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oVWUpe3N3aXRjaChVZS5sYWJlbCl7Y2FzZSAwOmlmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KERlLHJlLHVlLmRlYnVnKSxCZT1EZS5yZXN1bHQsIXVlLmRlYnVn''@;'; put 'put ''KXJldHVyblszLDRdO3N3aXRjaCh0aGlzLnNlcnZlclR5cGUpe2Nhc2UgTi5TZXJ2ZXJUeXBlLlNhc1ZpeWE6cmV0dXJuWzMsMV07Y2FzZSBOLlNlcnZlclR5cGUuU2FzOTpyZXR1cm5bMywzXX1yZXR1cm5bMyw0XTtjYXNlIDE6cmV0dXJuWzQsKDAsVS5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3Bv''@;'; put 'put ''bnNlKShEZS5yZXN1bHQsdGhpcy5yZXF1ZXN0Q2xpZW50LHRoaXMuc2VydmVyVXJsKV07Y2FzZSAyOnJldHVybiBCZT1VZS5zZW50KCksWzMsNF07Y2FzZSAzOnJldHVybiBCZT0ic3RyaW5nIj09dHlwZW9mIERlLnJlc3VsdD8oMCxVLnBhcnNlV2Vib3V0UmVzcG9uc2UpKERlLnJlc3VsdCxG''@;'; put 'put ''KTpEZS5yZXN1bHQsWzMsNF07Y2FzZSA0OnJldHVybiBHZT0oMCxVLmFwcGVuZEV4dHJhUmVzcG9uc2VBdHRyaWJ1dGVzKSh7cmVzdWx0OkJlLGxvZzpEZS5sb2d9LFcpLEhlKEdlKSxbMl19fSl9KX0pLmNhdGNoKGZ1bmN0aW9uKERlKXtyZXR1cm4gVChTZSx2b2lkIDAsdm9pZCAwLGZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEJlPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihHZSl7c3dpdGNoKEdlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIERlIGluc3RhbmNlb2YgQi5Kb2JFeGVjdXRpb25FcnJvciYmKHRoaXMucmVxdWVzdENsaWVudC5hcHBlbmRSZXF1ZXN0KERlLHJlLHVlLmRlYnVnKSx4ZShu''@;'; put 'put ''ZXcgQi5FcnJvclJlc3BvbnNlKERlPy5tZXNzYWdlLERlKSkpLERlIGluc3RhbmNlb2YgQi5Mb2dpblJlcXVpcmVkRXJyb3I/KGxlfHx4ZShuZXcgQi5FcnJvclJlc3BvbnNlKCJSZXF1ZXN0IGlzIG5vdCBhdXRoZW50aWNhdGVkLiBNYWtlIHN1cmUgLmVudiBmaWxlIGV4aXN0cyB3aXRoIHZh''@;'; put 'put ''bGlkIGNyZWRlbnRpYWxzLiIsRGUpKSx0aGlzLmFwcGVuZFdhaXRpbmdSZXF1ZXN0KGZ1bmN0aW9uKCl7cmV0dXJuIEJlLmV4ZWN1dGUocmUsaWUsdWUsbGUsYWUsVykudGhlbihmdW5jdGlvbihVZSl7SGUoVWUpfSxmdW5jdGlvbihVZSl7eGUoVWUpfSl9KSxiP1s0LGIoKV06WzMsMl0pOlsz''@;'; put 'put ''LDNdO2Nhc2UgMTpHZS5zZW50KCksR2UubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzMsNF07Y2FzZSAzOnhlKG5ldyBCLkVycm9yUmVzcG9uc2UoRGU/Lm1lc3NhZ2UsRGUpKSxHZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0pfSldfX0pfSl9LGVlLnByb3RvdHlwZS5nZXRKb2JVcmk9''@;'; put 'put ''ZnVuY3Rpb24ocmUpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpZSx1ZSxsZSxhZSxXLGI7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLnNhc1ZpeWFBcGlDbGllbnQpcmV0dXJuWzIsIiJdO2lmKGll''@;'; put 'put ''PSIiLCgwLFUuaXNSZWxhdGl2ZVBhdGgpKHJlKT8oYWU9cmUuc3BsaXQoIi8iKSx1ZT1hZS5sZW5ndGg+MT9hZVswXToiIixsZT1hZS5sZW5ndGg+MT9hZVsxXToiIik6KGFlPXJlLnNwbGl0KCIvIiksbGU9YWUucG9wKCl8fCIiLHVlPWFlLmpvaW4oIi8iKSksIWxlKXRocm93IG5ldyBFcnJv''@;'; put 'put ''cigiSm9iIG5hbWUgaXMgZW1wdHksIG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybls0LHRoaXMuc2FzVml5YUFwaUNsaWVudC5nZXRKb2JzSW5Gb2xkZXIodWUpXTtjYXNlIDE6cmV0dXJuKFc9QS5zZW50KCkpJiYoYj1XLmZpbmQoZnVuY3Rpb24oRil7cmV0dXJuIEYubmFtZT09PWxlJiYi''@;'; put 'put ''am9iRGVmaW5pdGlvbiI9PT1GLmNvbnRlbnRUeXBlfSkpJiYoaWU9Yi51cmkpLFsyLGllXX19KX0pfSxlZX0oSSg2MTE4KS5CYXNlSm9iRXhlY3V0b3IpO08uV2ViSm9iRXhlY3V0b3I9cX0sODIxNzpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19jcmVh''@;'; put 'put ''dGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihELFQsRSx6KXt2b2lkIDA9PT16JiYoej1FKTt2YXIgTj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFQsRSk7TiYmISgiZ2V0ImluIE4/IVQuX19lc01vZHVsZTpOLndyaXRhYmxlfHxOLmNvbmZpZ3VyYWJsZSl8fChO''@;'; put 'put ''PXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUW0VdfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELHosTil9OmZ1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLERbel09VFtFXX0pLEc9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEQsVCl7''@;'; put 'put ''Zm9yKHZhciBFIGluIEQpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFQsRSl8fGooVCxELEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksRyhJKDE1NzApLE8pLEcoSSgzNDkxKSxPKSxHKEkoNDQ0''@;'; put 'put ''NiksTyksRyhJKDYxMTgpLE8pLEcoSSgyNjkzKSxPKSxHKEkoNjA4NCksTyksRyhJKDEwNjUpLE8pfSw0NTg4OmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KSxHPUkoNTEwOCksRD10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBEPU9iamVj''@;'; put 'put ''dC5hc3NpZ258fGZ1bmN0aW9uKGxlKXtmb3IodmFyIGFlLFc9MSxiPWFyZ3VtZW50cy5sZW5ndGg7VzxiO1crKylmb3IodmFyIEEgaW4gYWU9YXJndW1lbnRzW1ddKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhZSxBKSYmKGxlW0FdPWFlW0FdKTtyZXR1cm4gbGV9LEQu''@;'; put 'put ''YXBwbHkodGhpcyxhcmd1bWVudHMpfSxUPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihsZSxhZSxXLGIpe3JldHVybiBuZXcoV3x8KFc9UHJvbWlzZSkpKGZ1bmN0aW9uKEEsRil7ZnVuY3Rpb24gSChrKXt0cnl7QyhiLm5leHQoaykpfWNhdGNoKF8pe0YoXyl9fWZ1bmN0aW9uIGco''@;'; put 'put ''ayl7dHJ5e0MoYi50aHJvdyhrKSl9Y2F0Y2goXyl7RihfKX19ZnVuY3Rpb24gQyhrKXt2YXIgXztrLmRvbmU/QShrLnZhbHVlKTooXz1rLnZhbHVlLF8gaW5zdGFuY2VvZiBXP186bmV3IFcoZnVuY3Rpb24ocCl7cChfKX0pKS50aGVuKEgsZyl9QygoYj1iLmFwcGx5KGxlLGFlfHxbXSkpLm5l''@;'; put 'put ''eHQoKSl9KX0sRT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihsZSxhZSl7dmFyIFcsYixBLEYsSD17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZBWzBdKXRocm93IEFbMV07cmV0dXJuIEFbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gRj17bmV4dDpnKDApLHRocm93''@;'; put 'put ''OmcoMSkscmV0dXJuOmcoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihGW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEY7ZnVuY3Rpb24gZyhDKXtyZXR1cm4gZnVuY3Rpb24oayl7cmV0dXJuIGZ1bmN0aW9uKF8pe2lmKFcpdGhyb3cgbmV3IFR5cGVF''@;'; put 'put ''cnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7SDspdHJ5e2lmKFc9MSxiJiYoQT0yJl9bMF0/Yi5yZXR1cm46X1swXT9iLnRocm93fHwoKEE9Yi5yZXR1cm4pJiZBLmNhbGwoYiksMCk6Yi5uZXh0KSYmIShBPUEuY2FsbChiLF9bMV0pKS5kb25lKXJldHVybiBB''@;'; put 'put ''O3N3aXRjaChiPTAsQSYmKF89WzImX1swXSxBLnZhbHVlXSksX1swXSl7Y2FzZSAwOmNhc2UgMTpBPV87YnJlYWs7Y2FzZSA0OnJldHVybiBILmxhYmVsKysse3ZhbHVlOl9bMV0sZG9uZTohMX07Y2FzZSA1OkgubGFiZWwrKyxiPV9bMV0sXz1bMF07Y29udGludWU7Y2FzZSA3Ol89SC5vcHMu''@;'; put 'put ''cG9wKCksSC50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoQT0oQT1ILnRyeXMpLmxlbmd0aD4wJiZBW0EubGVuZ3RoLTFdKXx8NiE9PV9bMF0mJjIhPT1fWzBdKSl7SD0wO2NvbnRpbnVlfWlmKDM9PT1fWzBdJiYoIUF8fF9bMV0+QVswXSYmX1sxXTxBWzNdKSl7SC5sYWJlbD1f''@;'; put 'put ''WzFdO2JyZWFrfWlmKDY9PT1fWzBdJiZILmxhYmVsPEFbMV0pe0gubGFiZWw9QVsxXSxBPV87YnJlYWt9aWYoQSYmSC5sYWJlbDxBWzJdKXtILmxhYmVsPUFbMl0sSC5vcHMucHVzaChfKTticmVha31BWzJdJiZILm9wcy5wb3AoKSxILnRyeXMucG9wKCk7Y29udGludWV9Xz1hZS5jYWxsKGxl''@;'; put 'put ''LEgpfWNhdGNoKHApe189WzYscF0sYj0wfWZpbmFsbHl7Vz1BPTB9aWYoNSZfWzBdKXRocm93IF9bMV07cmV0dXJue3ZhbHVlOl9bMF0/X1sxXTp2b2lkIDAsZG9uZTohMH19KFtDLGtdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy50aHJv''@;'; put 'put ''d0lmRXJyb3I9Ty5SZXF1ZXN0Q2xpZW50PXZvaWQgMDt2YXIgej1JKDk2NjkpLE49SSg4MzczKSxCPUkoMTUyNyksWj1JKDEzOTUpLFk9SSgyODEzKSxVPUkoOTc3OCkscT1JKDk1MjYpLEo9SSg1OTI4KSxlZT1JKDEwMDUpLHJlPUkoOTUzOSksaWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsZShh''@;'; put 'put ''ZSxXLGIsQSl7dmFyIEY9dGhpczt0aGlzLmJhc2VVcmw9YWUsdGhpcy5yZXF1ZXN0cz1bXSx0aGlzLnJlcXVlc3RzTGltaXQ9MTAsdGhpcy52ZXJib3NlTW9kZT0hMSx0aGlzLmNzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn0sdGhpcy5nZXRSZXF1ZXN0cz1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiBGLnJlcXVlc3RzfSx0aGlzLmNsZWFyUmVxdWVzdHM9ZnVuY3Rpb24oKXtGLnJlcXVlc3RzPVtdfSx0aGlzLmF1dGhvcml6ZT1mdW5jdGlvbihIKXtyZXR1cm4gVChGLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZyxDLGssXyxwLHcsSyx0ZSxjZSxoZSxTZSxMZTtyZXR1cm4g''@;'; put 'put ''RSh0aGlzLGZ1bmN0aW9uKEhlKXtzd2l0Y2goSGUubGFiZWwpe2Nhc2UgMDpmb3IoQz17fSxrPUguc3BsaXQoIjxib2R5PiIpWzFdLnNwbGl0KCI8L2JvZHk+IilbMF0sKF89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1rLHA9Xy5xdWVyeVNlbGVjdG9yKCIjYXBw''@;'; put 'put ''bGljYXRpb25fYXV0aG9yaXphdGlvbiIpLGc9cD90aGlzLmJhc2VVcmwrcC5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpOm51bGwsdz1wPy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLEs9MCx0ZT13O0s8dGUubGVuZ3RoO0srKykidXNlcl9vYXV0aF9hcHByb3ZhbCI9PT0oY2U9dGVbS10pLm5h''@;'; put 'put ''bWUmJihjZS52YWx1ZT0idHJ1ZSIpLENbY2UubmFtZV09Y2UudmFsdWU7Zm9yKExlIGluKGhlPU9iamVjdC5rZXlzKEMpLmZpbmQoZnVuY3Rpb24oeGUpe3JldHVybiB4ZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygiY3NyZiIpfSkpJiYodGhpcy5jc3JmVG9rZW4udmFsdWU9Q1toZV0sdGhp''@;'; put 'put ''cy5jc3JmVG9rZW4uaGVhZGVyTmFtZT10aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lfHwieC1jc3JmLXRva2VuIiksU2U9bmV3IEZvcm1EYXRhLEMpQy5oYXNPd25Qcm9wZXJ0eShMZSkmJlNlLmFwcGVuZChMZSxDW0xlXSk7aWYoIWcpdGhyb3cgbmV3IEVycm9yKCJBdXRoIEZvcm0gVVJMIGlz''@;'; put 'put ''IG51bGwgb3IgdW5kZWZpbmVkLiIpO3JldHVybls0LHRoaXMuaHR0cENsaWVudC5wb3N0KGcsU2Use3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7QWNjZXB0OiIqLyoiLCJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn19KS50aGVuKGZ1bmN0aW9uKHhlKXtyZXR1cm4geGUuZGF0YX0p''@;'; put 'put ''LmNhdGNoKGZ1bmN0aW9uKHhlKXsoai5sb2dnZXJ8fEcpLmVycm9yKHhlKX0pXTtjYXNlIDE6cmV0dXJuWzIsSGUuc2VudCgpXX19KX0pfSx0aGlzLnByZXR0aWZ5U3RyaW5nPWZ1bmN0aW9uKEgpe3JldHVybigwLHJlLmluc3BlY3QpKEgse2NvbG9yczoiYmxlYWNoZWQiIT09Ri52ZXJib3Nl''@;'; put 'put ''TW9kZX0pfSx0aGlzLnBhcnNlSW50ZXJjZXB0ZWRCb2R5PWZ1bmN0aW9uKEgpe2lmKCFIKXJldHVybiIiO3ZhciBnO2lmKCJzdHJpbmciPT10eXBlb2YgSCl0cnl7Zz1KU09OLnBhcnNlKEgpfWNhdGNoe2c9SH1lbHNlIGc9SDt2YXIgQz1GLnByZXR0aWZ5U3RyaW5nKGcpLnNwbGl0KCJcbiIp''@;'; put 'put ''O3JldHVybiBDLmxlbmd0aD41MSYmKEMuc3BsaWNlKDUwKSxDLnB1c2goIi4uLiIpKSxDLmpvaW4oIlxuIil9LHRoaXMuZGVmYXVsdEludGVyY2VwdGlvbkNhbGxCYWNrPWZ1bmN0aW9uKEgpe3ZhciBnLEM9Ik5vdCBwcm92aWRlZCIsaz17X2hlYWRlcjoiIi5jb25jYXQoQywiXG4iKSxyZXM6''@;'; put 'put ''e3Jhd0hlYWRlcnM6W0NdfX0sXz1IO2lmKHouZGVmYXVsdC5pc0F4aW9zRXJyb3IoSCkpe3ZhciBwPUgucmVzcG9uc2Usdz1ILnJlcXVlc3QsSz1ILmNvbmZpZztpZihwKV89cDtlbHNle2lmKHcpe3ZhciB0ZT13Ll9oZWFkZXIsY2U9dy5fY3VycmVudFJlcXVlc3Q7dGU/ay5faGVhZGVyPXRl''@;'; put 'put ''OmNlJiZjZS5faGVhZGVyJiYoay5faGVhZGVyPWNlLl9oZWFkZXIpO3ZhciBoZT13LnJlcztoZSYmaGUucmF3SGVhZGVycyYmKGsucmVzLnJhd0hlYWRlcnM9aGUucmF3SGVhZGVycyl9Xz17c3RhdHVzOkMscmVxdWVzdDprLGNvbmZpZzpLfHx7ZGF0YTpDfSxkYXRhOkN9fX12YXIgU2U9Xy5z''@;'; put 'put ''dGF0dXMseGU9Xy5kYXRhLERlPV8uY29uZmlnLmRhdGEsQmU9Xy5yZXF1ZXN0fHxrLEdlPUJlLl9oZWFkZXIsVWU9QmUucmVzLnJhd0hlYWRlcnMucmVkdWNlKGZ1bmN0aW9uKG90LEZlLHdlKXtyZXR1cm4gb3QrKHdlJTI9PTA/IiIuY29uY2F0KDA9PT13ZT8iIjoiXG4iKS5jb25jYXQoRmUp''@;'; put 'put ''OiI6ICIuY29uY2F0KEZlKSl9LCIiKSxxZT1GLnBhcnNlSW50ZXJjZXB0ZWRCb2R5KHhlKTtyZXR1cm4gbnVsbD09PShnPWoubG9nZ2VyKXx8dm9pZCAwPT09Z3x8Zy5pbmZvKCJIVFRQIFJlcXVlc3QgKGZpcnN0IDUwIGxpbmVzKTpcbiIuY29uY2F0KEdlKS5jb25jYXQoRi5wYXJzZUludGVy''@;'; put 'put ''Y2VwdGVkQm9keShEZSksIlxuXG5IVFRQIFJlc3BvbnNlIENvZGU6ICIpLmNvbmNhdChGLnByZXR0aWZ5U3RyaW5nKFNlKSwiXG5cbkhUVFAgUmVzcG9uc2UgKGZpcnN0IDUwIGxpbmVzKTpcbiIpLmNvbmNhdChVZSkuY29uY2F0KHFlPyJcblxuIi5jb25jYXQocWUpOiIiLCJcbiIpKSxIfSx0''@;'; put 'put ''aGlzLnNldFZlcmJvc2VNb2RlPWZ1bmN0aW9uKEgpe0YudmVyYm9zZU1vZGU9SCxGLnZlcmJvc2VNb2RlP0YuZW5hYmxlVmVyYm9zZU1vZGUoKTpGLmRpc2FibGVWZXJib3NlTW9kZSgpfSx0aGlzLmVuYWJsZVZlcmJvc2VNb2RlPWZ1bmN0aW9uKEgsZyl7dm9pZCAwPT09SCYmKEg9Ri5kZWZh''@;'; put 'put ''dWx0SW50ZXJjZXB0aW9uQ2FsbEJhY2spLHZvaWQgMD09PWcmJihnPUYuZGVmYXVsdEludGVyY2VwdGlvbkNhbGxCYWNrKSxGLmh0dHBJbnRlcmNlcHRvcj1GLmh0dHBDbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShILGcpfSx0aGlzLmRpc2FibGVWZXJib3NlTW9kZT1mdW5jdGlv''@;'; put 'put ''bigpe0YuaHR0cEludGVyY2VwdG9yJiZGLmh0dHBDbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmVqZWN0KEYuaHR0cEludGVyY2VwdG9yKX0sdGhpcy5nZXRIZWFkZXJzPWZ1bmN0aW9uKEgsZyl7dmFyIEM9e307cmV0dXJuImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIh''@;'; put 'put ''PT1nJiYoQ1siQ29udGVudC1UeXBlIl09ZyksQy5BY2NlcHQ9ImFwcGxpY2F0aW9uL2pzb24iPT09Zz8iYXBwbGljYXRpb24vanNvbiI6IiovKiIsSCYmKEMuQXV0aG9yaXphdGlvbj0iQmVhcmVyICIuY29uY2F0KEgpKSxGLmNzcmZUb2tlbi5oZWFkZXJOYW1lJiZGLmNzcmZUb2tlbi52YWx1''@;'; put 'put ''ZSYmKENbRi5jc3JmVG9rZW4uaGVhZGVyTmFtZV09Ri5jc3JmVG9rZW4udmFsdWUpLEN9LHRoaXMucGFyc2VBbmRTZXRGaWxlVXBsb2FkQ3NyZlRva2VuPWZ1bmN0aW9uKEgpe3ZhciBnPUYucGFyc2VDc3JmVG9rZW4oSCk7ZyYmKEYuZmlsZVVwbG9hZENzcmZUb2tlbj1nKX0sdGhpcy5wYXJz''@;'; put 'put ''ZUFuZFNldENzcmZUb2tlbj1mdW5jdGlvbihIKXt2YXIgZz1GLnBhcnNlQ3NyZlRva2VuKEgpO2cmJihGLmNzcmZUb2tlbj1nKX0sdGhpcy5wYXJzZUNzcmZUb2tlbj1mdW5jdGlvbihIKXt2YXIgZyxDPW51bGw9PT0oZz1ILmhlYWRlcnNbIngtY3NyZi1oZWFkZXIiXSl8fHZvaWQgMD09PWc/''@;'; put 'put ''dm9pZCAwOmcudG9Mb3dlckNhc2UoKTtpZihDKXJldHVybntoZWFkZXJOYW1lOkMsdmFsdWU6SC5oZWFkZXJzW0NdfHwiIn19LHRoaXMuaGFuZGxlRXJyb3I9ZnVuY3Rpb24oSCxnLEMpe3JldHVybiB2b2lkIDA9PT1DJiYoQz0hMSksVChGLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIg''@;'; put 'put ''ayxfO3JldHVybiBFKHRoaXMsZnVuY3Rpb24ocCl7c3dpdGNoKHAubGFiZWwpe2Nhc2UgMDpyZXR1cm4gaz1ILnJlc3BvbnNlLEggaW5zdGFuY2VvZiBaLkF1dGhvcml6ZUVycm9yP1s0LHRoaXMuaHR0cENsaWVudC5nZXQoSC5jb25maXJtVXJsLHtyZXNwb25zZVR5cGU6InRleHQiLGhlYWRl''@;'; put 'put ''cnM6eyJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIixBY2NlcHQ6IiovKiJ9fSkuY2F0Y2goZnVuY3Rpb24odyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHcsIkVycm9yIHdoaWxlIGdldHRpbmcgZXJyb3IgY29uZmlybVVybC4gIil9KV06WzMsNV07Y2FzZSAxOnJldHVybiBfPXAuc2Vu''@;'; put 'put ''dCgpLCgwLEIuaXNBdXRob3JpemVGb3JtUmVxdWlyZWQpKF8/LmRhdGEpP1s0LHRoaXMuYXV0aG9yaXplKF8uZGF0YSkuY2F0Y2goZnVuY3Rpb24odyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHcsIkVycm9yIHdoaWxlIGF1dGhvcml6aW5nIHJlcXVlc3QuICIpfSldOlszLDNdO2Nhc2Ug''@;'; put 'put ''MjpwLnNlbnQoKSxwLmxhYmVsPTM7Y2FzZSAzOnJldHVybls0LGcoKS5jYXRjaChmdW5jdGlvbih3KXt0aHJvdygwLFUucHJlZml4TWVzc2FnZSkodywiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGNhbGxiYWNrIGluIGhhbmRsZUVycm9yLiAiKX0pXTtjYXNlIDQ6cmV0dXJuWzIscC5zZW50KCld''@;'; put 'put ''O2Nhc2UgNTppZihIIGluc3RhbmNlb2YgWi5Mb2dpblJlcXVpcmVkRXJyb3IpdGhyb3cgdGhpcy5jbGVhckNzcmZUb2tlbnMoKSxIO3JldHVybiBIIGluc3RhbmNlb2YgZWUuSW52YWxpZFNBU2pzQ3NyZkVycm9yP1s0LHRoaXMuaHR0cENsaWVudC5nZXQoIi8iLHt3aXRoQ3JlZGVudGlhbHM6''@;'; put 'put ''ITB9KS50aGVuKGZ1bmN0aW9uKHcpe3ZhciBLLHRlPW51bGw9PT0oSz0vPHNjcmlwdD5kb2N1bWVudC5jb29raWUgPSAnKFhTUkYtVE9LRU49Lio7IE1heC1BZ2U9ODY0MDA7IFNhbWVTaXRlPVN0cmljdDsgUGF0aD1cLzspJzxcL3NjcmlwdD4vLmV4ZWMody5kYXRhKSl8fHZvaWQgMD09PUs/''@;'; put 'put ''dm9pZCAwOktbMV07dGUmJihkb2N1bWVudC5jb29raWU9dGUpfSkuY2F0Y2goZnVuY3Rpb24odyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHcsIkVycm9yIHdoaWxlIHJlLWZldGNoaW5nIENTUkYgdG9rZW4uIil9KV06WzMsOF07Y2FzZSA2OnJldHVybiBwLnNlbnQoKSxbNCxnKCkuY2F0''@;'; put 'put ''Y2goZnVuY3Rpb24odyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHcsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBjYWxsYmFjayBpbiBoYW5kbGVFcnJvci4gIil9KV07Y2FzZSA3OnJldHVyblsyLHAuc2VudCgpXTtjYXNlIDg6cmV0dXJuIDQwMyE9PWs/LnN0YXR1cyYmNDQ5IT09az8uc3Rh''@;'; put 'put ''dHVzP1szLDExXToodGhpcy5wYXJzZUFuZFNldENzcmZUb2tlbihrKSx0aGlzLmNzcmZUb2tlbi5oZWFkZXJOYW1lJiZ0aGlzLmNzcmZUb2tlbi52YWx1ZT9bNCxnKCkuY2F0Y2goZnVuY3Rpb24odyl7dGhyb3coMCxVLnByZWZpeE1lc3NhZ2UpKHcsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBj''@;'; put 'put ''YWxsYmFjayBpbiBoYW5kbGVFcnJvci4gIil9KV06WzMsMTBdKTtjYXNlIDk6cmV0dXJuWzIscC5zZW50KCldO2Nhc2UgMTA6dGhyb3cgSDtjYXNlIDExOmlmKDQwND09PWs/LnN0YXR1cyl0aHJvdyBuZXcgWi5Ob3RGb3VuZEVycm9yKGsuY29uZmlnLnVybCk7aWYoNTAyPT09az8uc3RhdHVz''@;'; put 'put ''KXtpZihDKXRocm93IG5ldyBaLkludGVybmFsU2VydmVyRXJyb3I7cmV0dXJuWzJdfXAubGFiZWw9MTI7Y2FzZSAxMjp0aHJvdyBILmlzQXhpb3NFcnJvciYmIlVOQUJMRV9UT19WRVJJRllfTEVBRl9TSUdOQVRVUkUiPT09SC5jb2RlP25ldyBaLkNlcnRpZmljYXRlRXJyb3IoSC5tZXNzYWdl''@;'; put 'put ''KTpILm1lc3NhZ2U/SDooMCxVLnByZWZpeE1lc3NhZ2UpKEgsIkVycm9yIHdoaWxlIGhhbmRsaW5nIGVycm9yLiAiKX19KX0pfSx0aGlzLmNyZWF0ZUh0dHBDbGllbnQoYWUsVyksYiYmKHRoaXMucmVxdWVzdHNMaW1pdD1iKSxBJiYodGhpcy5zZXRWZXJib3NlTW9kZShBKSx0aGlzLmVuYWJs''@;'; put 'put ''ZVZlcmJvc2VNb2RlKCkpfXJldHVybiBsZS5wcm90b3R5cGUuc2V0Q29uZmlnPWZ1bmN0aW9uKGFlLFcpe3RoaXMuY3JlYXRlSHR0cENsaWVudChhZSxXKX0sbGUucHJvdG90eXBlLnNhdmVMb2NhbFN0b3JhZ2VUb2tlbj1mdW5jdGlvbihhZSxXKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiYWNj''@;'; put 'put ''ZXNzVG9rZW4iLGFlKSxsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgicmVmcmVzaFRva2VuIixXKX0sbGUucHJvdG90eXBlLmdldENzcmZUb2tlbj1mdW5jdGlvbihhZSl7cmV0dXJuIHZvaWQgMD09PWFlJiYoYWU9ImdlbmVyYWwiKSwiZmlsZSI9PT1hZT90aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW46''@;'; put 'put ''dGhpcy5jc3JmVG9rZW59LGxlLnByb3RvdHlwZS5jbGVhckNzcmZUb2tlbnM9ZnVuY3Rpb24oKXt0aGlzLmNzcmZUb2tlbj17aGVhZGVyTmFtZToiIix2YWx1ZToiIn0sdGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuPXtoZWFkZXJOYW1lOiIiLHZhbHVlOiIifX0sbGUucHJvdG90eXBlLmNsZWFy''@;'; put 'put ''TG9jYWxTdG9yYWdlVG9rZW5zPWZ1bmN0aW9uKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oImFjY2Vzc1Rva2VuIiwiIiksbG9jYWxTdG9yYWdlLnNldEl0ZW0oInJlZnJlc2hUb2tlbiIsIiIpfSxsZS5wcm90b3R5cGUuZ2V0QmFzZVVybD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh0dHBDbGll''@;'; put 'put ''bnQuZGVmYXVsdHMuYmFzZVVSTHx8IiJ9LGxlLnByb3RvdHlwZS5hcHBlbmRSZXF1ZXN0PWZ1bmN0aW9uKGFlLFcsYil7dmFyIEE9IiIsRj0iIixIPW51bGw7YiYmKGFlPy5sb2c/KEE9KDAsSi5wYXJzZVNvdXJjZUNvZGUpKGFlLmxvZyksRj0oMCxKLnBhcnNlR2VuZXJhdGVkQ29kZSkoYWUu''@;'; put 'put ''bG9nKSxIPWFlPy5yZXN1bHQ/YWUucmVzdWx0LldPUks6YWUubG9nKTphZT8ucmVzdWx0JiYoInN0cmluZyI9PXR5cGVvZiBhZS5yZXN1bHQmJihBPSgwLEoucGFyc2VTb3VyY2VDb2RlKShhZS5yZXN1bHQpLEY9KDAsSi5wYXJzZUdlbmVyYXRlZENvZGUpKGFlLnJlc3VsdCkpLEg9YWUucmVz''@;'; put 'put ''dWx0LldPUkspKTt2YXIgZz0ic3RyaW5nIj09dHlwZW9mIGFlPy5yZXN1bHQ/YWU/LnJlc3VsdDpKU09OLnN0cmluZ2lmeShhZT8ucmVzdWx0LG51bGwsMik7dGhpcy5yZXF1ZXN0cy5wdXNoKHtsb2dGaWxlOmFlPy5sb2d8fGd8fGFlLHNlcnZpY2VMaW5rOlcsdGltZXN0YW1wOm5ldyBEYXRl''@;'; put 'put ''LHNvdXJjZUNvZGU6QSxnZW5lcmF0ZWRDb2RlOkYsU0FTV09SSzpIfSksdGhpcy5yZXF1ZXN0cy5sZW5ndGg+dGhpcy5yZXF1ZXN0c0xpbWl0JiZ0aGlzLnJlcXVlc3RzLnNwbGljZSgwLDEpfSxsZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGFlLFcsYixBLEYpe3JldHVybiB2b2lkIDA9PT1i''@;'; put 'put ''JiYoYj0iYXBwbGljYXRpb24vanNvbiIpLHZvaWQgMD09PUEmJihBPXt9KSx2b2lkIDA9PT1GJiYoRj0hMSksVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSCxnLEM9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGspe3JldHVybiBIPUQoRCh7fSx0aGlzLmdldEhlYWRl''@;'; put 'put ''cnMoVyxiKSksQSksZz17aGVhZGVyczpILHJlc3BvbnNlVHlwZToidGV4dC9wbGFpbiI9PT1iPyJ0ZXh0IjoianNvbiIsd2l0aENyZWRlbnRpYWxzOiEwfSwidGV4dC9wbGFpbiI9PT1iJiYoZy50cmFuc2Zvcm1SZXNwb25zZT12b2lkIDApLFsyLHRoaXMuaHR0cENsaWVudC5nZXQoYWUsZyku''@;'; put 'put ''dGhlbihmdW5jdGlvbihfKXtyZXR1cm4oMCxPLnRocm93SWZFcnJvcikoXyksQy5wYXJzZVJlc3BvbnNlKF8pfSkuY2F0Y2goZnVuY3Rpb24oXyl7cmV0dXJuIFQoQyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHA9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKHcpe3N3aXRjaCh3''@;'; put 'put ''LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihfLGZ1bmN0aW9uKCl7cmV0dXJuIHAuZ2V0KGFlLFcsYixBKS5jYXRjaChmdW5jdGlvbihLKXt0aHJvdygwLFUucHJlZml4TWVzc2FnZSkoSywiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIGhhbmRsZSBlcnJvciBjYWxsYmFj''@;'; put 'put ''ay4gIil9KX0sRildO2Nhc2UgMTpyZXR1cm5bMix3LnNlbnQoKV19fSl9KX0pXX0pfSl9LGxlLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKGFlLFcsYixBLEYsSCl7cmV0dXJuIHZvaWQgMD09PUEmJihBPSJhcHBsaWNhdGlvbi9qc29uIiksdm9pZCAwPT09RiYmKEY9e30pLHZvaWQgMD09PUgm''@;'; put 'put ''JihIPXt9KSxUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBnLEM9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGspe3JldHVybiBnPUQoRCh7fSx0aGlzLmdldEhlYWRlcnMoYixBKSksRiksWzIsdGhpcy5odHRwQ2xpZW50LnBvc3QoYWUsVyxEKHtoZWFkZXJzOmcsd2l0''@;'; put 'put ''aENyZWRlbnRpYWxzOiEwfSxIKSkudGhlbihmdW5jdGlvbihfKXtyZXR1cm4oMCxPLnRocm93SWZFcnJvcikoXyksQy5wYXJzZVJlc3BvbnNlKF8pfSkuY2F0Y2goZnVuY3Rpb24oXyl7cmV0dXJuIFQoQyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHA9dGhpcztyZXR1cm4gRSh0aGlz''@;'; put 'put ''LGZ1bmN0aW9uKHcpe3N3aXRjaCh3LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihfLGZ1bmN0aW9uKCl7cmV0dXJuIHAucG9zdChhZSxXLGIsQSxGKX0pXTtjYXNlIDE6cmV0dXJuWzIsdy5zZW50KCldfX0pfSl9KV19KX0pfSxsZS5wcm90b3R5cGUucHV0PWZ1bmN0''@;'; put 'put ''aW9uKGFlLFcsYixBKXtyZXR1cm4gdm9pZCAwPT09QSYmKEE9e30pLFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYsSD10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7cmV0dXJuIEY9RChEKHt9LHRoaXMuZ2V0SGVhZGVycyhiLCJhcHBsaWNhdGlvbi9qc29uIikp''@;'; put 'put ''LEEpLFsyLHRoaXMuaHR0cENsaWVudC5wdXQoYWUsVyx7aGVhZGVyczpGLHdpdGhDcmVkZW50aWFsczohMH0pLnRoZW4oZnVuY3Rpb24oQyl7cmV0dXJuKDAsTy50aHJvd0lmRXJyb3IpKEMpLEgucGFyc2VSZXNwb25zZShDKX0pLmNhdGNoKGZ1bmN0aW9uKEMpe3JldHVybiBUKEgsdm9pZCAw''@;'; put 'put ''LHZvaWQgMCxmdW5jdGlvbigpe3ZhciBrPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihfKXtzd2l0Y2goXy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuaGFuZGxlRXJyb3IoQyxmdW5jdGlvbigpe3JldHVybiBrLnB1dChhZSxXLGIsQSl9KV07Y2FzZSAxOnJldHVyblsyLF8uc2Vu''@;'; put 'put ''dCgpXX19KX0pfSldfSl9KX0sbGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihhZSxXKXtyZXR1cm4gVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYixBPXRoaXM7cmV0dXJuIEUodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gYj10aGlzLmdldEhlYWRlcnMoVywiYXBwbGlj''@;'; put 'put ''YXRpb24vanNvbiIpLFsyLHRoaXMuaHR0cENsaWVudC5kZWxldGUoYWUse2hlYWRlcnM6Yix3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKEgpe3JldHVybigwLE8udGhyb3dJZkVycm9yKShIKSxBLnBhcnNlUmVzcG9uc2UoSCl9KS5jYXRjaChmdW5jdGlvbihIKXtyZXR1cm4g''@;'; put 'put ''VChBLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZz10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKEgsZnVuY3Rpb24oKXtyZXR1cm4gZy5kZWxldGUoYWUsVyl9KV07Y2FzZSAxOnJldHVy''@;'; put 'put ''blsyLEMuc2VudCgpXX19KX0pfSldfSl9KX0sbGUucHJvdG90eXBlLnBhdGNoPWZ1bmN0aW9uKGFlLFcsYil7cmV0dXJuIHZvaWQgMD09PVcmJihXPXt9KSxUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBBLEY9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEgpe3JldHVy''@;'; put 'put ''biBBPXRoaXMuZ2V0SGVhZGVycyhiLCJhcHBsaWNhdGlvbi9qc29uIiksWzIsdGhpcy5odHRwQ2xpZW50LnBhdGNoKGFlLFcse2hlYWRlcnM6QSx3aXRoQ3JlZGVudGlhbHM6ITB9KS50aGVuKGZ1bmN0aW9uKGcpe3JldHVybigwLE8udGhyb3dJZkVycm9yKShnKSxGLnBhcnNlUmVzcG9uc2Uo''@;'; put 'put ''Zyl9KS5jYXRjaChmdW5jdGlvbihnKXtyZXR1cm4gVChGLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgQz10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oayl7c3dpdGNoKGsubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhhbmRsZUVycm9yKGcsZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''Qy5wYXRjaChhZSxXLGIpfSldO2Nhc2UgMTpyZXR1cm5bMixrLnNlbnQoKV19fSl9KX0pXX0pfSl9LGxlLnByb3RvdHlwZS51cGxvYWRGaWxlPWZ1bmN0aW9uKGFlLFcsYil7dmFyIEE7cmV0dXJuIFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYsSCxnO3JldHVybiBFKHRo''@;'; put 'put ''aXMsZnVuY3Rpb24oQyl7c3dpdGNoKEMubGFiZWwpe2Nhc2UgMDpGPXRoaXMuZ2V0SGVhZGVycyhiLCJhcHBsaWNhdGlvbi9qc29uIiksIShudWxsPT09KEE9dGhpcy5maWxlVXBsb2FkQ3NyZlRva2VuKXx8dm9pZCAwPT09QSkmJkEudmFsdWUmJihGW3RoaXMuZmlsZVVwbG9hZENzcmZUb2tl''@;'; put 'put ''bi5oZWFkZXJOYW1lXT10aGlzLmZpbGVVcGxvYWRDc3JmVG9rZW4udmFsdWUpLEMubGFiZWw9MTtjYXNlIDE6cmV0dXJuIEMudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmh0dHBDbGllbnQucG9zdChhZSxXLHtoZWFkZXJzOkYsdHJhbnNmb3JtUmVxdWVzdDpmdW5jdGlvbihrKXtyZXR1''@;'; put 'put ''cm4ga319KV07Y2FzZSAyOnJldHVyblsyLHtyZXN1bHQ6KGc9Qy5zZW50KCkpLmRhdGEsZXRhZzpnLmhlYWRlcnMuZXRhZ31dO2Nhc2UgMzppZihIPUMuc2VudCgpLDQwMz09PShudWxsPT0oZz1ILnJlc3BvbnNlKT92b2lkIDA6Zy5zdGF0dXMpfHw0NDk9PT1nPy5zdGF0dXMpe2lmKHRoaXMu''@;'; put 'put ''cGFyc2VBbmRTZXRGaWxlVXBsb2FkQ3NyZlRva2VuKGcpLHRoaXMuZmlsZVVwbG9hZENzcmZUb2tlbilyZXR1cm5bMix0aGlzLnVwbG9hZEZpbGUoYWUsVyxiKV07dGhyb3cgSH10aHJvdyBIO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0sbGUucHJvdG90eXBlLnBhcnNlUmVzcG9uc2U9ZnVuY3Rp''@;'; put 'put ''b24oYWUpe3ZhciBXLGI9YWU/LmhlYWRlcnM/YWUuaGVhZGVycy5ldGFnOiIiLEE9ITE7dHJ5e1c9InN0cmluZyI9PXR5cGVvZiBhZS5kYXRhP0pTT04ucGFyc2UoYWUuZGF0YSk6YWUuZGF0YX1jYXRjaHt0cnl7Vz1KU09OLnBhcnNlKCgwLFkucGFyc2VXZWJvdXRSZXNwb25zZSkoYWUuZGF0''@;'; put 'put ''YSkpfWNhdGNoe1c9YWUuZGF0YX1BPSEwfXZhciBGPXtyZXN1bHQ6VyxldGFnOmIsc3RhdHVzOmFlLnN0YXR1c307cmV0dXJuIEEmJihGLmxvZz1hZS5kYXRhKSxGfSxsZS5wcm90b3R5cGUuY3JlYXRlSHR0cENsaWVudD1mdW5jdGlvbihhZSxXKXt2YXIgYj1XP25ldyBOLkFnZW50KFcpOnZv''@;'; put 'put ''aWQgMDt0aGlzLmh0dHBDbGllbnQ9KDAsSi5jcmVhdGVBeGlvc0luc3RhbmNlKShhZSxiKSx0aGlzLmh0dHBDbGllbnQuZGVmYXVsdHMudmFsaWRhdGVTdGF0dXM9ZnVuY3Rpb24oQSl7cmV0dXJuIEE+PTIwMCYmQTw9NDAxfX0sbGV9KCk7Ty5SZXF1ZXN0Q2xpZW50PWllLE8udGhyb3dJZkVy''@;'; put 'put ''cm9yPWZ1bmN0aW9uKGxlKXt2YXIgYWUsVyxiLEEsRixILGc7c3dpdGNoKGxlLnN0YXR1cyl7Y2FzZSA0MDA6aWYoIm9iamVjdCI9PXR5cGVvZiBsZS5kYXRhJiYiaW52YWxpZF9ncmFudCI9PT1sZS5kYXRhLmVycm9yKXRocm93IG5ldyBaLkxvZ2luUmVxdWlyZWRFcnJvcihsZS5kYXRhKTtp''@;'; put 'put ''Zigic3RyaW5nIj09dHlwZW9mIGxlLmRhdGEmJiJpbnZhbGlkIGNzcmYgdG9rZW4hIj09PWxlLmRhdGEudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgZWUuSW52YWxpZFNBU2pzQ3NyZkVycm9yO2JyZWFrO2Nhc2UgNDAxOnRocm93Im9iamVjdCI9PXR5cGVvZiBsZS5kYXRhP25ldyBaLkxvZ2lu''@;'; put 'put ''UmVxdWlyZWRFcnJvcihsZS5kYXRhKTpuZXcgWi5Mb2dpblJlcXVpcmVkRXJyb3J9aWYobnVsbCE9PShXPW51bGw9PT0oYWU9bGUuZGF0YSl8fHZvaWQgMD09PWFlP3ZvaWQgMDphZS5lbnRpdHlJRCkmJnZvaWQgMCE9PVcmJlcuaW5jbHVkZXMoImxvZ2luIikpdGhyb3cgbmV3IFouTG9naW5S''@;'; put 'put ''ZXF1aXJlZEVycm9yO2lmKCJzdHJpbmciPT10eXBlb2YgbGUuZGF0YSYmKDAsQi5pc0F1dGhvcml6ZUZvcm1SZXF1aXJlZCkobGUuZGF0YSkpdGhyb3cgbmV3IFouQXV0aG9yaXplRXJyb3IoIkF1dGhvcml6YXRpb24gcmVxdWlyZWQiLGxlLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKCJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgbGUuZGF0YSYmKDAsQi5pc0xvZ0luUmVxdWlyZWQpKGxlLmRhdGEpJiYobnVsbD09PShBPW51bGw9PT0oYj1sZS5jb25maWcpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnVybCl8fHZvaWQgMD09PUF8fCFBLmluY2x1ZGVzKCIvU0FTTG9nb24vbG9naW4iKSkpdGhyb3cgbmV3''@;'; put 'put ''IFouTG9naW5SZXF1aXJlZEVycm9yO2lmKG51bGwhPT0oRj1sZS5kYXRhKSYmdm9pZCAwIT09RiYmRi5hdXRoX3JlcXVlc3QpdGhyb3cgbmV3IFouQXV0aG9yaXplRXJyb3IobGUuZGF0YS5tZXNzYWdlLGxlLnJlcXVlc3QucmVzcG9uc2VVUkwpO2lmKG51bGwhPT0oZz1udWxsPT09KEg9bGUu''@;'; put 'put ''Y29uZmlnKXx8dm9pZCAwPT09SD92b2lkIDA6SC51cmwpJiZ2b2lkIDAhPT1nJiZnLmluY2x1ZGVzKCJzYXNBdXRoRXJyb3IiKSl0aHJvdyBuZXcgcS5TQVM5QXV0aEVycm9yO3ZhciBrPXVlKGxlLmRhdGEpO2lmKGspdGhyb3cga307dmFyIHVlPWZ1bmN0aW9uKGxlKXtpZighbGUpcmV0dXJu''@;'; put 'put ''IG51bGw7dHJ5e3ZhciBhZT1KU09OLnBhcnNlKGxlPy5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTtpZihhZS5lcnJvckNvZGUmJmFlLm1lc3NhZ2UpcmV0dXJuIG5ldyBaLkpvYkV4ZWN1dGlvbkVycm9yKGFlLmVycm9yQ29kZSxhZS5tZXNzYWdlLGxlPy5yZXBsYWNlKC9bXG5ccl0vZywiICIp''@;'; put 'put ''KX1jYXRjaHt9dHJ5e2lmKGxlPy5pbmNsdWRlcygneyJlcnJvckNvZGUnKSYmKEg9bGUuc3BsaXQoJ3siZXJyb3JDb2RlJykpLmxlbmd0aD4xKXt2YXIgVz0neyJlcnJvckNvZGUnK0hbMV0uc3BsaXQoJyJ9JylbMF0rJyJ9JyxiPUpTT04ucGFyc2UoVy5yZXBsYWNlKC9bXG5ccl0vZywiICIp''@;'; put 'put ''KTtyZXR1cm4gbmV3IFouSm9iRXhlY3V0aW9uRXJyb3IoYi5lcnJvckNvZGUsYi5tZXNzYWdlLGxlPy5yZXBsYWNlKC9bXG5ccl0vZywiXG4iKSl9fWNhdGNoe310cnl7aWYobGU/Lm1hdGNoKC9zdG9yZWQgcHJvY2VzcyBub3QgZm91bmQ6IC9pKSYmKEg9bGUuc3BsaXQoL3N0b3JlZCBwcm9j''@;'; put 'put ''ZXNzIG5vdCBmb3VuZDogL2kpKS5sZW5ndGg+MSl7dmFyIEE9SFsxXS5zcGxpdCgiPGk+IilbMV0uc3BsaXQoIjwvaT4iKVswXSxGPUEuZW5kc1dpdGgoInJ1bm5lciIpPyJTQVNKUyBydW5uZXIgbm90IGZvdW5kLiBIZXJlJ3MgdGhlIGxpbmsgKGh0dHBzOi8vY2xpLnNhc2pzLmlvL2F1dGgv''@;'; put 'put ''I3Nhc2pzLXJ1bm5lcikgdG8gdGhlIFNBUyBjb2RlIGZvciByZWdpc3RlcmluZyB0aGUgU0FTanMgcnVubmVyIjoiU3RvcmVkIHByb2Nlc3Mgbm90IGZvdW5kOiAiLmNvbmNhdChBKTtyZXR1cm4gbmV3IFouSm9iRXhlY3V0aW9uRXJyb3IoNTAwLEYsIiIpfX1jYXRjaHt9dHJ5e3ZhciBIO2lm''@;'; put 'put ''KCFsZT8ubWF0Y2goLz4+d2Vib3V0QkVHSU48PC8pJiZsZT8ubWF0Y2goL1N0b3JlZCBQcm9jZXNzIEVycm9yL2kpJiZsZT8ubWF0Y2goL1RoaXMgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBlcnJvcnMuL2kpJiYoSD1sZS5zcGxpdCgiPGgyPlNBUyBMb2c8L2gyPiIpKS5sZW5ndGg+MSl7dmFy''@;'; put 'put ''IGc9SFsxXS5zcGxpdCgiPHByZT4iKVsxXS5zcGxpdCgiPC9wcmU+IilbMF07cmV0dXJuIG5ldyBaLkpvYkV4ZWN1dGlvbkVycm9yKDUwMCxGPSJUaGlzIHJlcXVlc3QgY29tcGxldGVkIHdpdGggZXJyb3JzLiIsZyl9fWNhdGNoe31yZXR1cm4gbnVsbH19LDc5NTpmdW5jdGlvbihNLE8sSSl7''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBqLEc9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChqPWZ1bmN0aW9uKHEsSil7cmV0dXJuKGo9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGVlLHJlKXtlZS5fX3Byb3RvX189cmV9fHxmdW5jdGlv''@;'; put 'put ''bihlZSxyZSl7Zm9yKHZhciBpZSBpbiByZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmUsaWUpJiYoZWVbaWVdPXJlW2llXSl9KShxLEopfSxmdW5jdGlvbihxLEope2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBKJiZudWxsIT09Sil0aHJvdyBuZXcgVHlwZUVycm9yKCJD''@;'; put 'put ''bGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKEopKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIGVlKCl7dGhpcy5jb25zdHJ1Y3Rvcj1xfWoocSxKKSxxLnByb3RvdHlwZT1udWxsPT09Sj9PYmplY3QuY3JlYXRlKEopOihlZS5wcm90b3R5cGU9Si5wcm90b3R5''@;'; put 'put ''cGUsbmV3IGVlKX0pLEQ9dGhpcyYmdGhpcy5fX2Fzc2lnbnx8ZnVuY3Rpb24oKXtyZXR1cm4gRD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihxKXtmb3IodmFyIEosZWU9MSxyZT1hcmd1bWVudHMubGVuZ3RoO2VlPHJlO2VlKyspZm9yKHZhciBpZSBpbiBKPWFyZ3VtZW50c1tlZV0pT2JqZWN0''@;'; put 'put ''LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEosaWUpJiYocVtpZV09SltpZV0pO3JldHVybiBxfSxELmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVD10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24ocSxKLGVlLHJlKXtyZXR1cm4gbmV3KGVlfHwoZWU9UHJvbWlzZSkpKGZ1bmN0''@;'; put 'put ''aW9uKGllLHVlKXtmdW5jdGlvbiBsZShiKXt0cnl7VyhyZS5uZXh0KGIpKX1jYXRjaChBKXt1ZShBKX19ZnVuY3Rpb24gYWUoYil7dHJ5e1cocmUudGhyb3coYikpfWNhdGNoKEEpe3VlKEEpfX1mdW5jdGlvbiBXKGIpe3ZhciBBO2IuZG9uZT9pZShiLnZhbHVlKTooQT1iLnZhbHVlLEEgaW5z''@;'; put 'put ''dGFuY2VvZiBlZT9BOm5ldyBlZShmdW5jdGlvbihGKXtGKEEpfSkpLnRoZW4obGUsYWUpfVcoKHJlPXJlLmFwcGx5KHEsSnx8W10pKS5uZXh0KCkpfSl9LEU9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24ocSxKKXt2YXIgZWUscmUsaWUsdWUsbGU9e2xhYmVsOjAsc2VudDpmdW5j''@;'; put 'put ''dGlvbigpe2lmKDEmaWVbMF0pdGhyb3cgaWVbMV07cmV0dXJuIGllWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHVlPXtuZXh0OmFlKDApLHRocm93OmFlKDEpLHJldHVybjphZSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHVlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpc30pLHVlO2Z1bmN0aW9uIGFlKFcpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oQSl7aWYoZWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bGU7KXRyeXtpZihlZT0xLHJlJiYoaWU9MiZB''@;'; put 'put ''WzBdP3JlLnJldHVybjpBWzBdP3JlLnRocm93fHwoKGllPXJlLnJldHVybikmJmllLmNhbGwocmUpLDApOnJlLm5leHQpJiYhKGllPWllLmNhbGwocmUsQVsxXSkpLmRvbmUpcmV0dXJuIGllO3N3aXRjaChyZT0wLGllJiYoQT1bMiZBWzBdLGllLnZhbHVlXSksQVswXSl7Y2FzZSAwOmNhc2Ug''@;'; put 'put ''MTppZT1BO2JyZWFrO2Nhc2UgNDpyZXR1cm4gbGUubGFiZWwrKyx7dmFsdWU6QVsxXSxkb25lOiExfTtjYXNlIDU6bGUubGFiZWwrKyxyZT1BWzFdLEE9WzBdO2NvbnRpbnVlO2Nhc2UgNzpBPWxlLm9wcy5wb3AoKSxsZS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoaWU9KGll''@;'; put 'put ''PWxlLnRyeXMpLmxlbmd0aD4wJiZpZVtpZS5sZW5ndGgtMV0pfHw2IT09QVswXSYmMiE9PUFbMF0pKXtsZT0wO2NvbnRpbnVlfWlmKDM9PT1BWzBdJiYoIWllfHxBWzFdPmllWzBdJiZBWzFdPGllWzNdKSl7bGUubGFiZWw9QVsxXTticmVha31pZig2PT09QVswXSYmbGUubGFiZWw8aWVbMV0p''@;'; put 'put ''e2xlLmxhYmVsPWllWzFdLGllPUE7YnJlYWt9aWYoaWUmJmxlLmxhYmVsPGllWzJdKXtsZS5sYWJlbD1pZVsyXSxsZS5vcHMucHVzaChBKTticmVha31pZVsyXSYmbGUub3BzLnBvcCgpLGxlLnRyeXMucG9wKCk7Y29udGludWV9QT1KLmNhbGwocSxsZSl9Y2F0Y2goRil7QT1bNixGXSxyZT0w''@;'; put 'put ''fWZpbmFsbHl7ZWU9aWU9MH1pZig1JkFbMF0pdGhyb3cgQVsxXTtyZXR1cm57dmFsdWU6QVswXT9BWzFdOnZvaWQgMCxkb25lOiEwfX0oW1csYl0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLlNhczlSZXF1ZXN0Q2xpZW50PXZvaWQgMDt2''@;'; put 'put ''YXIgej1JKDgyMjQpLE49SSg3ODU3KSxCPUkoOTc3OCksWj1JKDQ1ODgpLFk9SSgxMzk1KSxVPWZ1bmN0aW9uKHEpe2Z1bmN0aW9uIEooZWUscmUpe3ZhciBpZT1xLmNhbGwodGhpcyxlZSxyZSl8fHRoaXM7cmV0dXJuIGllLmh0dHBDbGllbnQuZGVmYXVsdHMubWF4UmVkaXJlY3RzPTAsaWUu''@;'; put 'put ''aHR0cENsaWVudC5kZWZhdWx0cy52YWxpZGF0ZVN0YXR1cz1mdW5jdGlvbih1ZSl7cmV0dXJuIHVlPj0yMDAmJnVlPDMwM30sei5kZWZhdWx0JiYoKDAsei5kZWZhdWx0KShpZS5odHRwQ2xpZW50KSxpZS5odHRwQ2xpZW50LmRlZmF1bHRzLmphcj1uZXcgTi5Db29raWVKYXIpLGllfXJldHVy''@;'; put 'put ''biBHKEoscSksSi5wcm90b3R5cGUubG9naW49ZnVuY3Rpb24oZWUscmUsaWUpe3JldHVybiBUKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB1ZTtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKGxlKXtzd2l0Y2gobGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdWU9Ii9Vc2VyIEZvbGRl''@;'; put 'put ''cnMvIi5jb25jYXQoZWUsIi9NeSBGb2xkZXIvc2FzanMvcnVubmVyIiksdGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphcj8odGhpcy5odHRwQ2xpZW50LmRlZmF1bHRzLmphci5yZW1vdmVBbGxDb29raWVzKCksWzQsdGhpcy5nZXQoIiIuY29uY2F0KGllLCI/X3Byb2dyYW09IikuY29uY2F0''@;'; put 'put ''KHVlLCImX3VzZXJuYW1lPSIpLmNvbmNhdChlZSwiJl9wYXNzd29yZD0iKS5jb25jYXQocmUpLHZvaWQgMCwidGV4dC9wbGFpbiIpXSk6WzMsMl07Y2FzZSAxOmxlLnNlbnQoKSxsZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSl9KX0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGVlLHJl''@;'; put 'put ''LGllLHVlLGxlKXtyZXR1cm4gdm9pZCAwPT09aWUmJihpZT0iYXBwbGljYXRpb24vanNvbiIpLHZvaWQgMD09PXVlJiYodWU9e30pLHZvaWQgMD09PWxlJiYobGU9ITEpLFQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGFlLFcsYj10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oQSl7cmV0dXJuIGFlPUQoRCh7fSx0aGlzLmdldEhlYWRlcnMocmUsaWUpKSx1ZSksVz17aGVhZGVyczphZSxyZXNwb25zZVR5cGU6InRleHQvcGxhaW4iPT09aWU/InRleHQiOiJqc29uIix3aXRoQ3JlZGVudGlhbHM6ITB9LCJ0ZXh0L3BsYWluIj09PWllJiYoVy50cmFuc2Zvcm1SZXNw''@;'; put 'put ''b25zZT12b2lkIDApLFsyLHRoaXMuaHR0cENsaWVudC5nZXQoZWUsVykudGhlbihmdW5jdGlvbihGKXtyZXR1cm4gMzAyPT09Ri5zdGF0dXM/Yi5nZXQoRi5oZWFkZXJzLmxvY2F0aW9uLHJlLGllKTooKDAsWi50aHJvd0lmRXJyb3IpKEYpLGIucGFyc2VSZXNwb25zZShGKSl9KS5jYXRjaChm''@;'; put 'put ''dW5jdGlvbihGKXtyZXR1cm4gVChiLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSD10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oZyl7c3dpdGNoKGcubGFiZWwpe2Nhc2UgMDppZihGIGluc3RhbmNlb2YgWS5Kb2JFeGVjdXRpb25FcnJvcil0aHJvdyBGO3JldHVybls0LHRoaXMu''@;'; put 'put ''aGFuZGxlRXJyb3IoRixmdW5jdGlvbigpe3JldHVybiBILmdldChlZSxyZSxpZSx1ZSkuY2F0Y2goZnVuY3Rpb24oQyl7dGhyb3coMCxCLnByZWZpeE1lc3NhZ2UpKEMsIkVycm9yIHdoaWxlIGV4ZWN1dGluZyBoYW5kbGUgZXJyb3IgY2FsbGJhY2suICIpfSl9LGxlKS5jYXRjaChmdW5jdGlv''@;'; put 'put ''bihDKXt0aHJvdygwLEIucHJlZml4TWVzc2FnZSkoQywiRXJyb3Igd2hpbGUgaGFuZGxpbmcgZXJyb3IuICIpfSldO2Nhc2UgMTpyZXR1cm5bMixnLnNlbnQoKV19fSl9KX0pXX0pfSl9LEoucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24oZWUscmUsaWUsdWUsbGUpe3JldHVybiB2b2lkIDA9PT11''@;'; put 'put ''ZSYmKHVlPSJhcHBsaWNhdGlvbi9qc29uIiksdm9pZCAwPT09bGUmJihsZT17fSksVCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYWUsVz10aGlzO3JldHVybiBFKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGFlPUQoRCh7fSx0aGlzLmdldEhlYWRlcnMoaWUsdWUpKSxsZSks''@;'; put 'put ''WzIsdGhpcy5odHRwQ2xpZW50LnBvc3QoZWUscmUse2hlYWRlcnM6YWUsd2l0aENyZWRlbnRpYWxzOiEwfSkudGhlbihmdW5jdGlvbihBKXtyZXR1cm4gVChXLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEYpe3N3aXRjaChGLmxhYmVsKXtjYXNlIDA6''@;'; put 'put ''cmV0dXJuIDMwMiE9PUEuc3RhdHVzP1szLDJdOls0LHRoaXMuZ2V0KEEuaGVhZGVycy5sb2NhdGlvbix2b2lkIDAsdWUsbGUpXTtjYXNlIDE6cmV0dXJuWzIsRi5zZW50KCldO2Nhc2UgMjpyZXR1cm4oMCxaLnRocm93SWZFcnJvcikoQSksWzIsdGhpcy5wYXJzZVJlc3BvbnNlKEEpXX19KX0p''@;'; put 'put ''fSkuY2F0Y2goZnVuY3Rpb24oQSl7cmV0dXJuIFQoVyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEY9dGhpcztyZXR1cm4gRSh0aGlzLGZ1bmN0aW9uKEgpe3N3aXRjaChILmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5oYW5kbGVFcnJvcihBLGZ1bmN0aW9uKCl7cmV0dXJuIEYu''@;'; put 'put ''cG9zdChlZSxyZSxpZSx1ZSxsZSl9KV07Y2FzZSAxOnJldHVyblsyLEguc2VudCgpXX19KX0pfSldfSl9KX0sSn0oWi5SZXF1ZXN0Q2xpZW50KTtPLlNhczlSZXF1ZXN0Q2xpZW50PVV9LDM2MDI6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPXRoaXMmJnRoaXMuX19leHRl''@;'; put 'put ''bmRzfHwoaj1mdW5jdGlvbihULEUpe3JldHVybihqPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih6LE4pe3ouX19wcm90b19fPU59fHxmdW5jdGlvbih6LE4pe2Zvcih2YXIgQiBpbiBOKU9iamVjdC5wcm90b3R5cGUuaGFz''@;'; put 'put ''T3duUHJvcGVydHkuY2FsbChOLEIpJiYoeltCXT1OW0JdKX0pKFQsRSl9LGZ1bmN0aW9uKFQsRSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEUmJm51bGwhPT1FKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoRSkrIiBpcyBub3QgYSBjb25zdHJ1Y3Rv''@;'; put 'put ''ciBvciBudWxsIik7ZnVuY3Rpb24geigpe3RoaXMuY29uc3RydWN0b3I9VH1qKFQsRSksVC5wcm90b3R5cGU9bnVsbD09PUU/T2JqZWN0LmNyZWF0ZShFKTooei5wcm90b3R5cGU9RS5wcm90b3R5cGUsbmV3IHopfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1''@;'; put 'put ''ZTohMH0pLE8uU0FTSlNfTE9HU19TRVBBUkFUT1I9Ty5TYXNqc1JlcXVlc3RDbGllbnQ9dm9pZCAwO3ZhciBEPWZ1bmN0aW9uKFQpe2Z1bmN0aW9uIEUoKXt2YXIgej1udWxsIT09VCYmVC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHouZ2V0SGVhZGVycz1mdW5jdGlvbihO''@;'; put 'put ''LEIpe3ZhciBaLFk9e307cmV0dXJuImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIhPT1CJiYoWVsiQ29udGVudC1UeXBlIl09QiksWS5BY2NlcHQ9ImFwcGxpY2F0aW9uL2pzb24iPT09Qj9COiIqLyoiLE58fHR5cGVvZiB3aW5kb3c+InUifHwoTj1udWxsIT09KFo9bG9jYWxT''@;'; put 'put ''dG9yYWdlLmdldEl0ZW0oImFjY2Vzc1Rva2VuIikpJiZ2b2lkIDAhPT1aP1o6dm9pZCAwKSxOJiYoWS5BdXRob3JpemF0aW9uPSJCZWFyZXIgIi5jb25jYXQoTikpLFl9LHp9cmV0dXJuIEcoRSxUKSxFLnByb3RvdHlwZS5wYXJzZVJlc3BvbnNlPWZ1bmN0aW9uKHope3ZhciBOLEIsWixZPXo/''@;'; put 'put ''LmhlYWRlcnM/ei5oZWFkZXJzLmV0YWc6IiIsVT17fTt0cnl7VT0ic3RyaW5nIj09dHlwZW9mIHouZGF0YT9KU09OLnBhcnNlKHouZGF0YSk6ei5kYXRhfWNhdGNoe2lmKHouZGF0YS5pbmNsdWRlcyhPLlNBU0pTX0xPR1NfU0VQQVJBVE9SKSl7dmFyIHE9ei5kYXRhLEo9cS5zcGxpdChPLlNB''@;'; put 'put ''U0pTX0xPR1NfU0VQQVJBVE9SKTt2b2lkIDAhPT0oTj1KLnNwbGljZSgwLDEpWzBdKSYmKFU9Tik7dmFyIGVlPUouc3BsaWNlKDAsSi5sZW5ndGgtMSkscmU9bmV3IFJlZ0V4cCgiIi5jb25jYXQoTy5TQVNKU19MT0dTX1NFUEFSQVRPUiwiJCIpKSxpZT1KWzBdO2llJiYocmUudGVzdChxKT9l''@;'; put 'put ''ZS5sZW5ndGg+MSYmZWUucHVzaChpZSk6Wj1pZSksQj1lZS5qb2luKE8uU0FTSlNfTE9HU19TRVBBUkFUT1IpfWVsc2UgVT16LmRhdGF9dmFyIHVlPXtyZXN1bHQ6VSxsb2c6Qnx8IiIsZXRhZzpZLHN0YXR1czp6LnN0YXR1c307cmV0dXJuIFomJih1ZS5wcmludE91dHB1dD1aKSx1ZX0sRX0o''@;'; put 'put ''SSg0NTg4KS5SZXF1ZXN0Q2xpZW50KTtPLlNhc2pzUmVxdWVzdENsaWVudD1ELE8uU0FTSlNfTE9HU19TRVBBUkFUT1I9IlNBU0pTX0xPR1NfU0VQQVJBVE9SXzE2M2VlMTdiNmZmMjRmMDI4OTI4OTcyZDgwYTI2Nzg0In0sNDcwOihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDY2NjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDYxNzc6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9f''@;'; put 'put ''ZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw1NzY2OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sNDk3NTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3Zh''@;'; put 'put ''bHVlOiEwfSl9LDIxNTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDQ3ODI6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw0MTY4''@;'; put 'put ''OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sODUxNjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDM4NDA6KE0sTyk9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSwzMTUzOihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTQyODooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LDU4NDE6KE0sTyk9PnsidXNlIHN0cmljdCI7dmFyIEksRztPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5Mb2dpbk1lY2hhbmlzbT1PLlNBU2pzQ29uZmlnPXZvaWQg''@;'; put 'put ''MCxPLlNBU2pzQ29uZmlnPWZ1bmN0aW9uKCl7dGhpcy5zZXJ2ZXJVcmw9IiIsdGhpcy5wYXRoU0FTSlM9IiIsdGhpcy5wYXRoU0FTOT0iIix0aGlzLnBhdGhTQVNWaXlhPSIiLHRoaXMuYXBwTG9jPSIiLHRoaXMuc2VydmVyVHlwZT1udWxsLHRoaXMuZGVidWc9ITAsdGhpcy52ZXJib3NlPSEw''@;'; put 'put ''LHRoaXMuY29udGV4dE5hbWU9IiIsdGhpcy51c2VDb21wdXRlQXBpPW51bGwsdGhpcy5sb2dpbk1lY2hhbmlzbT1JLkRlZmF1bHQsdGhpcy5yZXF1ZXN0SGlzdG9yeUxpbWl0PTEwfSwoRz1JPU8uTG9naW5NZWNoYW5pc218fChPLkxvZ2luTWVjaGFuaXNtPXt9KSkuRGVmYXVsdD0iRGVmYXVs''@;'; put 'put ''dCIsRy5SZWRpcmVjdGVkPSJSZWRpcmVjdGVkIn0sNjAzODooTSxPKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5TZXNzaW9uU3RhdGU9dm9pZCAwLChJPU8uU2Vzc2lvblN0YXRlfHwoTy5TZXNzaW9uU3Rh''@;'; put 'put ''dGU9e30pKS5Db21wbGV0ZWQ9ImNvbXBsZXRlZCIsSS5SdW5uaW5nPSJydW5uaW5nIixJLlBlbmRpbmc9InBlbmRpbmciLEkuSWRsZT0iaWRsZSIsSS5VbmF2YWlsYWJsZT0idW5hdmFpbGFibGUiLEkuTm9TdGF0ZT0iIixJLkZhaWxlZD0iZmFpbGVkIixJLkVycm9yPSJlcnJvciJ9LDk0OTM6''@;'; put 'put ''KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSw4NjUwOihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sMTI0OmZ1bmN0aW9uKE0sTyl7''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBJLGo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChJPWZ1bmN0aW9uKEQsVCl7cmV0dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUs''@;'; put 'put ''eil7Zm9yKHZhciBOIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosTikmJihFW05dPXpbTl0pfSkoRCxUKX0sZnVuY3Rpb24oRCxUKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVCYmbnVsbCE9PVQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2''@;'; put 'put ''YWx1ZSAiK1N0cmluZyhUKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1EfUkoRCxUKSxELnByb3RvdHlwZT1udWxsPT09VD9PYmplY3QuY3JlYXRlKFQpOihFLnByb3RvdHlwZT1ULnByb3RvdHlwZSxuZXcgRSl9KTtPYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5BdXRob3JpemVFcnJvcj12b2lkIDA7dmFyIEc9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24gVChFLHope3ZhciBOPUQuY2FsbCh0aGlzLEUpfHx0aGlzO3JldHVybiBOLm1lc3NhZ2U9RSxOLmNvbmZpcm1Vcmw9eixO''@;'; put 'put ''Lm5hbWU9IkF1dGhvcml6ZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoTixULnByb3RvdHlwZSksTn1yZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLkF1dGhvcml6ZUVycm9yPUd9LDk0NjU6ZnVuY3Rpb24oTSxPKXsidXNlIHN0cmljdCI7dmFyIEksaj10aGlzJiZ0aGlzLl9fZXh0ZW5k''@;'; put 'put ''c3x8KEk9ZnVuY3Rpb24oRCxUKXtyZXR1cm4oST1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIE4gaW4geilPYmplY3QucHJvdG90eXBlLmhhc093''@;'; put 'put ''blByb3BlcnR5LmNhbGwoeixOKSYmKEVbTl09eltOXSl9KShELFQpfSxmdW5jdGlvbihELFQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBUJiZudWxsIT09VCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Ig''@;'; put 'put ''b3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUR9SShELFQpLEQucHJvdG90eXBlPW51bGw9PT1UP09iamVjdC5jcmVhdGUoVCk6KEUucHJvdG90eXBlPVQucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6''@;'; put 'put ''ITB9KSxPLkNlcnRpZmljYXRlRXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9uKEQpe2Z1bmN0aW9uIFQoRSl7dmFyIHo9RC5jYWxsKHRoaXMsIiIuY29uY2F0KEUsIlxuUGxlYXNlIHZpc2l0IHRoZSBsaW5rIGJlbG93IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoaXMgaXNzdWU6XG4t''@;'; put 'put ''ICIpLmNvbmNhdCgiaHR0cHM6Ly9naXRodWIuY29tL3Nhc2pzL2NsaS9pc3N1ZXMvMTE4MSNpc3N1ZWNvbW1lbnQtMTA5MDYzODU4NCIsIlxuIikpfHx0aGlzO3JldHVybiB6Lm5hbWU9IkNlcnRpZmljYXRlRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih6LFQucHJvdG90eXBlKSx6fXJl''@;'; put 'put ''dHVybiBqKFQsRCksVH0oRXJyb3IpO08uQ2VydGlmaWNhdGVFcnJvcj1HfSw1MjY3OmZ1bmN0aW9uKE0sTyl7InVzZSBzdHJpY3QiO3ZhciBJLGo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChJPWZ1bmN0aW9uKEQsVCl7cmV0dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19f''@;'; put 'put ''OltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBOIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosTikmJihFW05dPXpbTl0pfSkoRCxUKX0sZnVuY3Rpb24oRCxUKXtpZigiZnVu''@;'; put 'put ''Y3Rpb24iIT10eXBlb2YgVCYmbnVsbCE9PVQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhUKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1EfUkoRCxUKSxELnByb3RvdHlwZT1u''@;'; put 'put ''dWxsPT09VD9PYmplY3QuY3JlYXRlKFQpOihFLnByb3RvdHlwZT1ULnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9uKEQpe2Z1bmN0''@;'; put 'put ''aW9uIFQoRSx6KXt2YXIgTj1ELmNhbGwodGhpcywiRXJyb3I6IEpvYiBleGVjdXRpb24gZmFpbGVkIil8fHRoaXM7cmV0dXJuIE4uam9iPUUsTi5sb2c9eixOLm5hbWU9IkNvbXB1dGVKb2JFeGVjdXRpb25FcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKE4sVC5wcm90b3R5cGUpLE59cmV0''@;'; put 'put ''dXJuIGooVCxEKSxUfShFcnJvcik7Ty5Db21wdXRlSm9iRXhlY3V0aW9uRXJyb3I9R30sOTIzMjooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5FcnJvclJlc3BvbnNlPXZvaWQgMCxPLkVycm9yUmVzcG9uc2U9''@;'; put 'put ''ZnVuY3Rpb24oaixHLEQpe3ZhciBUPUc7aWYoIm9iamVjdCIhPXR5cGVvZiBHKXRyeXtUPUpTT04ucGFyc2UoRyl9Y2F0Y2h7RD1HLFQ9IiJ9dGhpcy5lcnJvcj17bWVzc2FnZTpqLGRldGFpbHM6VCxyYXc6RH19fSw1MTA5OmZ1bmN0aW9uKE0sTyl7InVzZSBzdHJpY3QiO3ZhciBJLGo9dGhp''@;'; put 'put ''cyYmdGhpcy5fX2V4dGVuZHN8fChJPWZ1bmN0aW9uKEQsVCl7cmV0dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBOIGluIHopT2JqZWN0''@;'; put 'put ''LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosTikmJihFW05dPXpbTl0pfSkoRCxUKX0sZnVuY3Rpb24oRCxUKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVCYmbnVsbCE9PVQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhUKSsiIGlzIG5v''@;'; put 'put ''dCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1EfUkoRCxUKSxELnByb3RvdHlwZT1udWxsPT09VD9PYmplY3QuY3JlYXRlKFQpOihFLnByb3RvdHlwZT1ULnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19l''@;'; put 'put ''c01vZHVsZSIse3ZhbHVlOiEwfSksTy5JbnRlcm5hbFNlcnZlckVycm9yPXZvaWQgMDt2YXIgRz1mdW5jdGlvbihEKXtmdW5jdGlvbiBUKCl7dmFyIEU9RC5jYWxsKHRoaXMsIkVycm9yOiBJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuIil8fHRoaXM7cmV0dXJuIEUubmFtZT0iSW50ZXJuYWxTZXJ2''@;'; put 'put ''ZXJFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKEUsVC5wcm90b3R5cGUpLEV9cmV0dXJuIGooVCxEKSxUfShFcnJvcik7Ty5JbnRlcm5hbFNlcnZlckVycm9yPUd9LDU1MTg6ZnVuY3Rpb24oTSxPKXsidXNlIHN0cmljdCI7dmFyIEksaj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEk9ZnVu''@;'; put 'put ''Y3Rpb24oRCxUKXtyZXR1cm4oST1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIE4gaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5''@;'; put 'put ''LmNhbGwoeixOKSYmKEVbTl09eltOXSl9KShELFQpfSxmdW5jdGlvbihELFQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBUJiZudWxsIT09VCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIp''@;'; put 'put ''O2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUR9SShELFQpLEQucHJvdG90eXBlPW51bGw9PT1UP09iamVjdC5jcmVhdGUoVCk6KEUucHJvdG90eXBlPVQucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLklu''@;'; put 'put ''dmFsaWRKc29uRXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9uKEQpe2Z1bmN0aW9uIFQoKXt2YXIgRT1ELmNhbGwodGhpcywiRXJyb3I6IGludmFsaWQgSnNvbiBzdHJpbmciKXx8dGhpcztyZXR1cm4gRS5uYW1lPSJJbnZhbGlkSnNvbkVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoRSxU''@;'; put 'put ''LnByb3RvdHlwZSksRX1yZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLkludmFsaWRKc29uRXJyb3I9R30sMTAwNTpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoST1mdW5jdGlvbihELFQpe3JldHVybihJPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgTiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LE4pJiYoRVtOXT16W05dKX0pKEQsVCl9LGZ1bmN0''@;'; put 'put ''aW9uKEQsVCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFQmJm51bGwhPT1UKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9RH1JKEQs''@;'; put 'put ''VCksRC5wcm90b3R5cGU9bnVsbD09PVQ/T2JqZWN0LmNyZWF0ZShUKTooRS5wcm90b3R5cGU9VC5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uSW52YWxpZFNBU2pzQ3NyZkVycm9yPXZvaWQgMDt2YXIgRz1mdW5j''@;'; put 'put ''dGlvbihEKXtmdW5jdGlvbiBUKCl7dmFyIEU9dGhpcztyZXR1cm4oRT1ELmNhbGwodGhpcywiQXV0aCBlcnJvcjogIi5jb25jYXQoIkludmFsaWQgQ1NSRiB0b2tlbiEiKSl8fHRoaXMpLm5hbWU9IkludmFsaWRTQVNqc0NzcmZFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKEUsVC5wcm90''@;'; put 'put ''b3R5cGUpLEV9cmV0dXJuIGooVCxEKSxUfShFcnJvcik7Ty5JbnZhbGlkU0FTanNDc3JmRXJyb3I9R30sODUzMTpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoST1mdW5jdGlvbihELFQpe3JldHVybihJPU9iamVjdC5zZXRQcm90b3R5''@;'; put 'put ''cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgTiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LE4pJiYoRVtOXT16W05dKX0pKEQsVCl9LGZ1bmN0''@;'; put 'put ''aW9uKEQsVCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFQmJm51bGwhPT1UKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9RH1JKEQs''@;'; put 'put ''VCksRC5wcm90b3R5cGU9bnVsbD09PVQ/T2JqZWN0LmNyZWF0ZShUKTooRS5wcm90b3R5cGU9VC5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uSm9iRXhlY3V0aW9uRXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9u''@;'; put 'put ''KEQpe2Z1bmN0aW9uIFQoRSx6LE4pe3ZhciBCPUQuY2FsbCh0aGlzLCJFcnJvciBDb2RlICIuY29uY2F0KEUsIjogIikuY29uY2F0KHopKXx8dGhpcztyZXR1cm4gQi5lcnJvckNvZGU9RSxCLmVycm9yTWVzc2FnZT16LEIucmVzdWx0PU4sQi5uYW1lPSJKb2JFeGVjdXRpb25FcnJvciIsT2Jq''@;'; put 'put ''ZWN0LnNldFByb3RvdHlwZU9mKEIsVC5wcm90b3R5cGUpLEJ9cmV0dXJuIGooVCxEKSxUfShFcnJvcik7Ty5Kb2JFeGVjdXRpb25FcnJvcj1HfSw5MDc5OmZ1bmN0aW9uKE0sTyl7InVzZSBzdHJpY3QiO3ZhciBJLGo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChJPWZ1bmN0aW9uKEQsVCl7cmV0''@;'; put 'put ''dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBOIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosTikmJihF''@;'; put 'put ''W05dPXpbTl0pfSkoRCxUKX0sZnVuY3Rpb24oRCxUKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVCYmbnVsbCE9PVQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhUKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7''@;'; put 'put ''dGhpcy5jb25zdHJ1Y3Rvcj1EfUkoRCxUKSxELnByb3RvdHlwZT1udWxsPT09VD9PYmplY3QuY3JlYXRlKFQpOihFLnByb3RvdHlwZT1ULnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5Kb2JTdGF0ZVBvbGxFcnJv''@;'; put 'put ''cj12b2lkIDA7dmFyIEc9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24gVChFLHope3ZhciBOPUQuY2FsbCh0aGlzLCJFcnJvciB3aGlsZSBwb2xsaW5nIGpvYiBzdGF0ZSBmb3Igam9iICIuY29uY2F0KEUsIjogIikuY29uY2F0KHoubWVzc2FnZXx8eikpfHx0aGlzO3JldHVybiBOLm9yaWdpbmFsRXJy''@;'; put 'put ''b3I9eixOLm5hbWU9IkpvYlN0YXRlUG9sbEVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoTixULnByb3RvdHlwZSksTn1yZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLkpvYlN0YXRlUG9sbEVycm9yPUd9LDMwOTY6ZnVuY3Rpb24oTSxPKXsidXNlIHN0cmljdCI7dmFyIEksaj10aGlzJiZ0''@;'; put 'put ''aGlzLl9fZXh0ZW5kc3x8KEk9ZnVuY3Rpb24oRCxUKXtyZXR1cm4oST1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24oRSx6KXtmb3IodmFyIE4gaW4geilPYmplY3QucHJv''@;'; put 'put ''dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixOKSYmKEVbTl09eltOXSl9KShELFQpfSxmdW5jdGlvbihELFQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBUJiZudWxsIT09VCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKFQpKyIgaXMgbm90IGEg''@;'; put 'put ''Y29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUR9SShELFQpLEQucHJvdG90eXBlPW51bGw9PT1UP09iamVjdC5jcmVhdGUoVCk6KEUucHJvdG90eXBlPVQucHJvdG90eXBlLG5ldyBFKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9k''@;'; put 'put ''dWxlIix7dmFsdWU6ITB9KSxPLkpzb25QYXJzZUFycmF5RXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9uKEQpe2Z1bmN0aW9uIFQoKXt2YXIgRT1ELmNhbGwodGhpcywiQ2FuIG5vdCBwYXJzZSBhcnJheSBvYmplY3QgdG8ganNvbi4iKXx8dGhpcztyZXR1cm4gRS5uYW1lPSJKc29uUGFyc2VB''@;'; put 'put ''cnJheUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoRSxULnByb3RvdHlwZSksRX1yZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLkpzb25QYXJzZUFycmF5RXJyb3I9R30sNjc0MzpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoST1m''@;'; put 'put ''dW5jdGlvbihELFQpe3JldHVybihJPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgTiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbCh6LE4pJiYoRVtOXT16W05dKX0pKEQsVCl9LGZ1bmN0aW9uKEQsVCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFQmJm51bGwhPT1UKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxs''@;'; put 'put ''Iik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9RH1JKEQsVCksRC5wcm90b3R5cGU9bnVsbD09PVQ/T2JqZWN0LmNyZWF0ZShUKTooRS5wcm90b3R5cGU9VC5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8u''@;'; put 'put ''TG9naW5SZXF1aXJlZEVycm9yPXZvaWQgMDt2YXIgRz1mdW5jdGlvbihEKXtmdW5jdGlvbiBUKEUpe3ZhciB6PXRoaXMsTj1FP0pTT04uc3RyaW5naWZ5KEUsbnVsbCwyKToiWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIGFjY2VzcyB0aGlzIHJlc291cmNlIjtyZXR1cm4oej1ELmNhbGwodGhp''@;'; put 'put ''cywiQXV0aCBlcnJvcjogIi5jb25jYXQoTikpfHx0aGlzKS5uYW1lPSJMb2dpblJlcXVpcmVkRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih6LFQucHJvdG90eXBlKSx6fXJldHVybiBqKFQsRCksVH0oRXJyb3IpO08uTG9naW5SZXF1aXJlZEVycm9yPUd9LDc4NjQ6ZnVuY3Rpb24oTSxP''@;'; put 'put ''KXsidXNlIHN0cmljdCI7dmFyIEksaj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KEk9ZnVuY3Rpb24oRCxUKXtyZXR1cm4oST1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oRSx6KXtFLl9fcHJvdG9fXz16fXx8ZnVuY3Rpb24o''@;'; put 'put ''RSx6KXtmb3IodmFyIE4gaW4geilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeixOKSYmKEVbTl09eltOXSl9KShELFQpfSxmdW5jdGlvbihELFQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBUJiZudWxsIT09VCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRz''@;'; put 'put ''IHZhbHVlICIrU3RyaW5nKFQpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIEUoKXt0aGlzLmNvbnN0cnVjdG9yPUR9SShELFQpLEQucHJvdG90eXBlPW51bGw9PT1UP09iamVjdC5jcmVhdGUoVCk6KEUucHJvdG90eXBlPVQucHJvdG90eXBlLG5ldyBFKX0pO09i''@;'; put 'put ''amVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLk5vU2Vzc2lvblN0YXRlRXJyb3I9dm9pZCAwO3ZhciBHPWZ1bmN0aW9uKEQpe2Z1bmN0aW9uIFQoRSx6LE4pe3ZhciBCPUQuY2FsbCh0aGlzLCJDb3VsZCBub3QgZ2V0IHNlc3Npb24gc3RhdGUuIFNlcnZl''@;'; put 'put ''ciByZXNwb25kZWQgd2l0aCAiLmNvbmNhdChFLCIgd2hpbHN0IGNoZWNraW5nIHN0YXRlOiAiKS5jb25jYXQoeikpfHx0aGlzO3JldHVybiBCLnNlcnZlclJlc3BvbnNlU3RhdHVzPUUsQi5zZXNzaW9uU3RhdGVVcmw9eixCLmxvZ1VybD1OLEIubmFtZT0iTm9TZXNzaW9uU3RhdHVzIixPYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2YoQixULnByb3RvdHlwZSksQn1yZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLk5vU2Vzc2lvblN0YXRlRXJyb3I9R30sOTU3NzpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoST1mdW5jdGlvbihELFQpe3Jl''@;'; put 'put ''dHVybihJPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgTiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LE4pJiYo''@;'; put 'put ''RVtOXT16W05dKX0pKEQsVCl9LGZ1bmN0aW9uKEQsVCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFQmJm51bGwhPT1UKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgp''@;'; put 'put ''e3RoaXMuY29uc3RydWN0b3I9RH1JKEQsVCksRC5wcm90b3R5cGU9bnVsbD09PVQ/T2JqZWN0LmNyZWF0ZShUKTooRS5wcm90b3R5cGU9VC5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uTm90Rm91bmRFcnJvcj12''@;'; put 'put ''b2lkIDA7dmFyIEc9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24gVChFKXt2YXIgej1ELmNhbGwodGhpcywiRXJyb3I6IFJlc291cmNlIGF0ICIuY29uY2F0KEUsIiB3YXMgbm90IGZvdW5kIikpfHx0aGlzO3JldHVybiB6LnVybD1FLHoubmFtZT0iTm90Rm91bmRFcnJvciIsT2JqZWN0LnNldFByb3Rv''@;'; put 'put ''dHlwZU9mKHosVC5wcm90b3R5cGUpLHp9cmV0dXJuIGooVCxEKSxUfShFcnJvcik7Ty5Ob3RGb3VuZEVycm9yPUd9LDkyNzk6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIgaixHPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaj1mdW5jdGlvbihFLHope3JldHVybihqPU9iamVjdC5z''@;'; put 'put ''ZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihOLEIpe04uX19wcm90b19fPUJ9fHxmdW5jdGlvbihOLEIpe2Zvcih2YXIgWiBpbiBCKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLFopJiYoTltaXT1CW1pdKX0pKEUs''@;'; put 'put ''eil9LGZ1bmN0aW9uKEUseil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHomJm51bGwhPT16KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoeikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gTigpe3RoaXMuY29uc3RydWN0''@;'; put 'put ''b3I9RX1qKEUseiksRS5wcm90b3R5cGU9bnVsbD09PXo/T2JqZWN0LmNyZWF0ZSh6KTooTi5wcm90b3R5cGU9ei5wcm90b3R5cGUsbmV3IE4pfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uUm9vdEZvbGRlck5vdEZvdW5kRXJyb3I9dm9pZCAw''@;'; put 'put ''O3ZhciBEPUkoNjc5OSksVD1mdW5jdGlvbihFKXtmdW5jdGlvbiB6KE4sQixaKXt2YXIgWT10aGlzLFU9IlJvb3QgZm9sZGVyICIuY29uY2F0KE4sIiB3YXMgbm90IGZvdW5kLiIpKyJcblBsZWFzZSBjaGVjayAiLmNvbmNhdChCLCIvU0FTRHJpdmUuIikrIlxuSWYgdGhlIGZvbGRlciBET0VT''@;'; put 'put ''IGV4aXN0IHRoZW4gaXQgaXMgbGlrZWx5IGEgcGVybWlzc2lvbiBwcm9ibGVtLlxuIjtpZihaKXt2YXIgcT0oMCxELmRlY29kZVRva2VuKShaKS5zY29wZTtVKz0iWW91ciBhY2Nlc3MgdG9rZW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBzY29wZXM6XG4iKyhxPXEubWFwKGZ1bmN0aW9uKEop''@;'; put 'put ''e3JldHVybiIqICIrSn0pKS5qb2luKCJcbiIpfXJldHVybihZPUUuY2FsbCh0aGlzLFUpfHx0aGlzKS5uYW1lPSJSb290Rm9sZGVyTm90Rm91bmRFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKFksei5wcm90b3R5cGUpLFl9cmV0dXJuIEcoeixFKSx6fShFcnJvcik7Ty5Sb290Rm9sZGVy''@;'; put 'put ''Tm90Rm91bmRFcnJvcj1UfSw5NTI2OmZ1bmN0aW9uKE0sTyl7InVzZSBzdHJpY3QiO3ZhciBJLGo9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChJPWZ1bmN0aW9uKEQsVCl7cmV0dXJuKEk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0''@;'; put 'put ''aW9uKEUseil7RS5fX3Byb3RvX189en18fGZ1bmN0aW9uKEUseil7Zm9yKHZhciBOIGluIHopT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHosTikmJihFW05dPXpbTl0pfSkoRCxUKX0sZnVuY3Rpb24oRCxUKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgVCYmbnVsbCE9PVQp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhUKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBFKCl7dGhpcy5jb25zdHJ1Y3Rvcj1EfUkoRCxUKSxELnByb3RvdHlwZT1udWxsPT09VD9PYmplY3QuY3JlYXRlKFQpOihF''@;'; put 'put ''LnByb3RvdHlwZT1ULnByb3RvdHlwZSxuZXcgRSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5TQVM5QXV0aEVycm9yPXZvaWQgMDt2YXIgRz1mdW5jdGlvbihEKXtmdW5jdGlvbiBUKCl7dmFyIEU9RC5jYWxsKHRoaXMsIlRoZSBjcmVkZW50''@;'; put 'put ''aWFscyB5b3UgcHJvdmlkZWQgY2Fubm90IGJlIGF1dGhlbnRpY2F0ZWQuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgc2V0IG9mIGNyZWRlbnRpYWxzLiIpfHx0aGlzO3JldHVybiBFLm5hbWU9IkF1dGhvcml6ZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoRSxULnByb3RvdHlwZSksRX1y''@;'; put 'put ''ZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLlNBUzlBdXRoRXJyb3I9R30sODg3NTpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoST1mdW5jdGlvbihELFQpe3JldHVybihJPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpb''@;'; put 'put ''XX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihFLHope0UuX19wcm90b19fPXp9fHxmdW5jdGlvbihFLHope2Zvcih2YXIgTiBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LE4pJiYoRVtOXT16W05dKX0pKEQsVCl9LGZ1bmN0aW9uKEQsVCl7aWYoImZ1bmN0''@;'; put 'put ''aW9uIiE9dHlwZW9mIFQmJm51bGwhPT1UKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoVCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gRSgpe3RoaXMuY29uc3RydWN0b3I9RH1JKEQsVCksRC5wcm90b3R5cGU9bnVs''@;'; put 'put ''bD09PVQ/T2JqZWN0LmNyZWF0ZShUKTooRS5wcm90b3R5cGU9VC5wcm90b3R5cGUsbmV3IEUpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uV2Vib3V0UmVzcG9uc2VFcnJvcj12b2lkIDA7dmFyIEc9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24gVChF''@;'; put 'put ''KXt2YXIgej1ELmNhbGwodGhpcywiRXJyb3I6IGVycm9yIHdoaWxlIHBhcnNpbmcgcmVzcG9uc2UgZnJvbSAiLmNvbmNhdChFKSl8fHRoaXM7cmV0dXJuIHoudXJsPUUsei5uYW1lPSJXZWJvdXRSZXNwb25zZUVycm9yIixPYmplY3Quc2V0UHJvdG90eXBlT2YoeixULnByb3RvdHlwZSksen1y''@;'; put 'put ''ZXR1cm4gaihULEQpLFR9KEVycm9yKTtPLldlYm91dFJlc3BvbnNlRXJyb3I9R30sMTM5NTpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihELFQsRSx6KXt2b2lkIDA9PT16JiYoej1F''@;'; put 'put ''KTt2YXIgTj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFQsRSk7TiYmISgiZ2V0ImluIE4/IVQuX19lc01vZHVsZTpOLndyaXRhYmxlfHxOLmNvbmZpZ3VyYWJsZSl8fChOPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBUW0VdfX0pLE9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShELHosTil9OmZ1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpLERbel09VFtFXX0pLEc9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKEQsVCl7Zm9yKHZhciBFIGluIEQpImRlZmF1bHQiPT09RXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eS5jYWxsKFQsRSl8fGooVCxELEUpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksRyhJKDEyNCksTyksRyhJKDk0NjUpLE8pLEcoSSg1MjY3KSxPKSxHKEkoOTIzMiksTyksRyhJKDUxMDkpLE8pLEcoSSg1NTE4KSxPKSxHKEkoODUzMSksTyksRyhJ''@;'; put 'put ''KDkwNzkpLE8pLEcoSSgzMDk2KSxPKSxHKEkoNjc0MyksTyksRyhJKDc4NjQpLE8pLEcoSSg5NTc3KSxPKSxHKEkoOTI3OSksTyksRyhJKDg4NzUpLE8pfSwxMjMwOmZ1bmN0aW9uKE0sTyxJKXsidXNlIHN0cmljdCI7dmFyIGo9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3Qu''@;'; put 'put ''Y3JlYXRlP2Z1bmN0aW9uKEQsVCxFLHope3ZvaWQgMD09PXomJih6PUUpO3ZhciBOPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVCxFKTtOJiYhKCJnZXQiaW4gTj8hVC5fX2VzTW9kdWxlOk4ud3JpdGFibGV8fE4uY29uZmlndXJhYmxlKXx8KE49e2VudW1lcmFibGU6ITAsZ2V0''@;'; put 'put ''OmZ1bmN0aW9uKCl7cmV0dXJuIFRbRV19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEQseixOKX06ZnVuY3Rpb24oRCxULEUseil7dm9pZCAwPT09eiYmKHo9RSksRFt6XT1UW0VdfSksRz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oRCxUKXtmb3IodmFyIEUgaW4gRCkiZGVm''@;'; put 'put ''YXVsdCI9PT1FfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVCxFKXx8aihULEQsRSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxHKEkoNDcwKSxPKSxHKEkoNDY2NiksTyksRyhJKDQ5NzUpLE8pLEcoSSg1NzY2KSxPKSxH''@;'; put 'put ''KEkoMjE1KSxPKSxHKEkoNDc4MiksTyksRyhJKDQxNjgpLE8pLEcoSSg4NTE2KSxPKSxHKEkoMzg0MCksTyksRyhJKDU4NDEpLE8pLEcoSSgxNDI4KSxPKSxHKEkoNjAzOCksTyksRyhJKDk0OTMpLE8pLEcoSSgzMTUzKSxPKSxHKEkoODY1MCksTyksRyhJKDYxNzcpLE8pLEcoSSgxMzk1KSxP''@;'; put 'put ''KX0sMzMwMjpmdW5jdGlvbihNLE8peyJ1c2Ugc3RyaWN0Ijt2YXIgST10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBJPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKEQpe2Zvcih2YXIgVCxFPTEsej1hcmd1bWVudHMubGVuZ3RoO0U8ejtFKyspZm9yKHZhciBOIGluIFQ9''@;'; put 'put ''YXJndW1lbnRzW0VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChULE4pJiYoRFtOXT1UW05dKTtyZXR1cm4gRH0sSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGo9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEQsVCxFLHope3JldHVybiBuZXcoRXx8KEU9UHJv''@;'; put 'put ''bWlzZSkpKGZ1bmN0aW9uKE4sQil7ZnVuY3Rpb24gWihxKXt0cnl7VSh6Lm5leHQocSkpfWNhdGNoKEope0IoSil9fWZ1bmN0aW9uIFkocSl7dHJ5e1Uoei50aHJvdyhxKSl9Y2F0Y2goSil7QihKKX19ZnVuY3Rpb24gVShxKXt2YXIgSjtxLmRvbmU/TihxLnZhbHVlKTooSj1xLnZhbHVlLEog''@;'; put 'put ''aW5zdGFuY2VvZiBFP0o6bmV3IEUoZnVuY3Rpb24oZWUpe2VlKEopfSkpLnRoZW4oWixZKX1VKCh6PXouYXBwbHkoRCxUfHxbXSkpLm5leHQoKSl9KX0sRz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihELFQpe3ZhciBFLHosTixCLFo9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigp''@;'; put 'put ''e2lmKDEmTlswXSl0aHJvdyBOWzFdO3JldHVybiBOWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIEI9e25leHQ6WSgwKSx0aHJvdzpZKDEpLHJldHVybjpZKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoQltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9''@;'; put 'put ''KSxCO2Z1bmN0aW9uIFkoVSl7cmV0dXJuIGZ1bmN0aW9uKHEpe3JldHVybiBmdW5jdGlvbihKKXtpZihFKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1o7KXRyeXtpZihFPTEseiYmKE49MiZKWzBdP3oucmV0dXJuOkpbMF0/ei50''@;'; put 'put ''aHJvd3x8KChOPXoucmV0dXJuKSYmTi5jYWxsKHopLDApOnoubmV4dCkmJiEoTj1OLmNhbGwoeixKWzFdKSkuZG9uZSlyZXR1cm4gTjtzd2l0Y2goej0wLE4mJihKPVsyJkpbMF0sTi52YWx1ZV0pLEpbMF0pe2Nhc2UgMDpjYXNlIDE6Tj1KO2JyZWFrO2Nhc2UgNDpyZXR1cm4gWi5sYWJlbCsr''@;'; put 'put ''LHt2YWx1ZTpKWzFdLGRvbmU6ITF9O2Nhc2UgNTpaLmxhYmVsKyssej1KWzFdLEo9WzBdO2NvbnRpbnVlO2Nhc2UgNzpKPVoub3BzLnBvcCgpLFoudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKE49KE49Wi50cnlzKS5sZW5ndGg+MCYmTltOLmxlbmd0aC0xXSl8fDYhPT1KWzBd''@;'; put 'put ''JiYyIT09SlswXSkpe1o9MDtjb250aW51ZX1pZigzPT09SlswXSYmKCFOfHxKWzFdPk5bMF0mJkpbMV08TlszXSkpe1oubGFiZWw9SlsxXTticmVha31pZig2PT09SlswXSYmWi5sYWJlbDxOWzFdKXtaLmxhYmVsPU5bMV0sTj1KO2JyZWFrfWlmKE4mJloubGFiZWw8TlsyXSl7Wi5sYWJlbD1O''@;'; put 'put ''WzJdLFoub3BzLnB1c2goSik7YnJlYWt9TlsyXSYmWi5vcHMucG9wKCksWi50cnlzLnBvcCgpO2NvbnRpbnVlfUo9VC5jYWxsKEQsWil9Y2F0Y2goZWUpe0o9WzYsZWVdLHo9MH1maW5hbGx5e0U9Tj0wfWlmKDUmSlswXSl0aHJvdyBKWzFdO3JldHVybnt2YWx1ZTpKWzBdP0pbMV06dm9pZCAw''@;'; put 'put ''LGRvbmU6ITB9fShbVSxxXSl9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9dm9pZCAwLE8uYXBwZW5kRXh0cmFSZXNwb25zZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oRCxUKXtyZXR1cm4gaih0''@;'; put 'put ''aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgRSx6O3JldHVybiBHKHRoaXMsZnVuY3Rpb24oTil7cmV0dXJuIEU9e30sVD8ubGVuZ3RoPyh6PVQucmVkdWNlKGZ1bmN0aW9uKEIsWil7cmV0dXJuIEJbWl09RFtaXSxCfSx7fSksRT1JKHtyZXN1bHQ6RC5yZXN1bHR9LHopKTpFPUQu''@;'; put 'put ''cmVzdWx0LFsyLEVdfSl9KX19LDc5MjI6ZnVuY3Rpb24oTSxPKXsidXNlIHN0cmljdCI7dmFyIEk9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKEcsRCxULEUpe3JldHVybiBuZXcoVHx8KFQ9UHJvbWlzZSkpKGZ1bmN0aW9uKHosTil7ZnVuY3Rpb24gQihVKXt0cnl7WShFLm5leHQo''@;'; put 'put ''VSkpfWNhdGNoKHEpe04ocSl9fWZ1bmN0aW9uIFooVSl7dHJ5e1koRS50aHJvdyhVKSl9Y2F0Y2gocSl7TihxKX19ZnVuY3Rpb24gWShVKXt2YXIgcTtVLmRvbmU/eihVLnZhbHVlKToocT1VLnZhbHVlLHEgaW5zdGFuY2VvZiBUP3E6bmV3IFQoZnVuY3Rpb24oSil7SihxKX0pKS50aGVuKEIs''@;'; put 'put ''Wil9WSgoRT1FLmFwcGx5KEcsRHx8W10pKS5uZXh0KCkpfSl9LGo9dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oRyxEKXt2YXIgVCxFLHosTixCPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnpbMF0pdGhyb3cgelsxXTtyZXR1cm4gelsxXX0sdHJ5czpbXSxvcHM6W119''@;'; put 'put ''O3JldHVybiBOPXtuZXh0OlooMCksdGhyb3c6WigxKSxyZXR1cm46WigyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKE5bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksTjtmdW5jdGlvbiBaKFkpe3JldHVybiBmdW5jdGlvbihVKXtyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24ocSl7aWYoVCl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtCOyl0cnl7aWYoVD0xLEUmJih6PTImcVswXT9FLnJldHVybjpxWzBdP0UudGhyb3d8fCgoej1FLnJldHVybikmJnouY2FsbChFKSwwKTpFLm5leHQpJiYhKHo9ei5j''@;'; put 'put ''YWxsKEUscVsxXSkpLmRvbmUpcmV0dXJuIHo7c3dpdGNoKEU9MCx6JiYocT1bMiZxWzBdLHoudmFsdWVdKSxxWzBdKXtjYXNlIDA6Y2FzZSAxOno9cTticmVhaztjYXNlIDQ6cmV0dXJuIEIubGFiZWwrKyx7dmFsdWU6cVsxXSxkb25lOiExfTtjYXNlIDU6Qi5sYWJlbCsrLEU9cVsxXSxxPVsw''@;'; put 'put ''XTtjb250aW51ZTtjYXNlIDc6cT1CLm9wcy5wb3AoKSxCLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKCh6PSh6PUIudHJ5cykubGVuZ3RoPjAmJnpbei5sZW5ndGgtMV0pfHw2IT09cVswXSYmMiE9PXFbMF0pKXtCPTA7Y29udGludWV9aWYoMz09PXFbMF0mJighenx8cVsxXT56''@;'; put 'put ''WzBdJiZxWzFdPHpbM10pKXtCLmxhYmVsPXFbMV07YnJlYWt9aWYoNj09PXFbMF0mJkIubGFiZWw8elsxXSl7Qi5sYWJlbD16WzFdLHo9cTticmVha31pZih6JiZCLmxhYmVsPHpbMl0pe0IubGFiZWw9elsyXSxCLm9wcy5wdXNoKHEpO2JyZWFrfXpbMl0mJkIub3BzLnBvcCgpLEIudHJ5cy5w''@;'; put 'put ''b3AoKTtjb250aW51ZX1xPUQuY2FsbChHLEIpfWNhdGNoKEope3E9WzYsSl0sRT0wfWZpbmFsbHl7VD16PTB9aWYoNSZxWzBdKXRocm93IHFbMV07cmV0dXJue3ZhbHVlOnFbMF0/cVsxXTp2b2lkIDAsZG9uZTohMH19KFtZLFVdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01v''@;'; put 'put ''ZHVsZSIse3ZhbHVlOiEwfSksTy5hc3luY0ZvckVhY2g9dm9pZCAwLE8uYXN5bmNGb3JFYWNoPWZ1bmN0aW9uKEcsRCl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFQ7cmV0dXJuIGoodGhpcyxmdW5jdGlvbihFKXtzd2l0Y2goRS5sYWJlbCl7Y2FzZSAwOlQ9''@;'; put 'put ''MCxFLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBUPEcubGVuZ3RoP1s0LEQoR1tUXSxULEcpXTpbMyw0XTtjYXNlIDI6RS5zZW50KCksRS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gVCsrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX19LDM3OTM6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0''@;'; put 'put ''LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uY29tcGFyZVRpbWVzdGFtcHM9dm9pZCAwLE8uY29tcGFyZVRpbWVzdGFtcHM9ZnVuY3Rpb24oSSxqKXtyZXR1cm4gai50aW1lc3RhbXAuZ2V0VGltZSgpLUkudGltZXN0YW1wLmdldFRpbWUoKX19LDI0MDI6KE0s''@;'; put 'put ''TyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmlzRm9ybWF0c1RhYmxlPU8uY29udmVydFRvQ1NWPXZvaWQgMDt2YXIgRz1JKDY0NjcpLEQ9SSg5Nzc4KTtPLmNvbnZlcnRUb0NTVj1mdW5j''@;'; put 'put ''dGlvbihFLHope3ZhciBOO2lmKCFFW3pdKXRocm93KDAsRC5wcmVmaXhNZXNzYWdlKSgiTm8gdGFibGUgcHJvdmlkZWQgdG8gYmUgY29udmVydGVkIHRvIENTVi4iLCJFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIENTVi4gIik7dmFyIEI9RVt6XTtpZighQXJyYXkuaXNBcnJheShCKSlyZXR1''@;'; put 'put ''cm4iIjt2YXIgWixZPW51bGw9PT0oTj1FWyIkIi5jb25jYXQoeildKXx8dm9pZCAwPT09Tj92b2lkIDA6Ti5mb3JtYXRzLFU9W10scT0hMTtZJiYoVT1PYmplY3Qua2V5cyhZKS5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiIiLmNvbmNhdChlZSwiOiIpLmNvbmNhdChZW2VlXSl9KSk7dmFyIEo9''@;'; put 'put ''T2JqZWN0LmtleXMoQlswXSk7cmV0dXJuIEouZm9yRWFjaChmdW5jdGlvbihlZSl7aWYoIVl8fCFPYmplY3Qua2V5cyhZKS5pbmNsdWRlcyhlZSkpe3ZhciByZT0hMSxpZT0hMTtpZihCLmZvckVhY2goZnVuY3Rpb24oYil7bnVsbD09PWJbZWVdfHwibnVtYmVyIj09dHlwZW9mIGJbZWVdP3Jl''@;'; put 'put ''PSEwOiJzdHJpbmciPT10eXBlb2YgYltlZV0mJigwLEcuaXNTcGVjaWFsTWlzc2luZykoYltlZV0pJiYoaWU9ITApfSkscmUmJmllKVUucHVzaCgiIi5jb25jYXQoZWUsIjpiZXN0LiIpKSxZfHwoWT17fSksWVtlZV09ImJlc3QuIjtlbHNle3ZhciB1ZT1udWxsLGxlPSExLGFlPS0xLFc9Qi5t''@;'; put 'put ''YXAoZnVuY3Rpb24oYixBKXtpZihiW2VlXXx8IiI9PT1iW2VlXSl7dWU/bGV8fChhZT0obGU9KCIiPT09YltlZV18fCJzdHJpbmciPT10eXBlb2YgYltlZV0/ImNoYXJzIjoibnVtYmVyIikhPT11ZSk/QSsxOi0xKTp1ZT0iIj09PWJbZWVdfHwic3RyaW5nIj09dHlwZW9mIGJbZWVdPyJjaGFy''@;'; put 'put ''cyI6Im51bWJlciI7dmFyIEg9dm9pZCAwO3JldHVybiJzdHJpbmciPT10eXBlb2YgYltlZV0mJihIPVQoYltlZV0pKSxIfX0pLnNvcnQoZnVuY3Rpb24oYixBKXtyZXR1cm4gQS1ifSlbMF07VyYmVz4zMjc2NSYmKHE9ITApLGxlJiZqLmVycm9yKCJSb3cgKCIuY29uY2F0KGFlLCIpLCBDb2x1''@;'; put 'put ''bW4gKCIpLmNvbmNhdChlZSwiKSBoYXMgbWl4ZWQgdHlwZXM6IEVSUk9SIikpLFUucHVzaCgiIi5jb25jYXQoZWUsIjoiKS5jb25jYXQoImNoYXJzIj09PXVlPyIkY2hhciI6IiIpLmNvbmNhdChXfHwoImNoYXJzIj09PXVlPyIxIjoiYmVzdCIpLCIuIikpfX19KSxZJiYoVT1VLnNvcnQoZnVu''@;'; put 'put ''Y3Rpb24oZWUscmUpe3JldHVybiBKLmluZGV4T2YoZWUucmVwbGFjZSgvOi4qLywiIikpLUouaW5kZXhPZihyZS5yZXBsYWNlKC86LiovLCIiKSl9KSkscT8iRVJST1I6IExBUkdFIFNUUklORyBMRU5HVEgiOihaPUIubWFwKGZ1bmN0aW9uKGVlKXtyZXR1cm4gT2JqZWN0LmtleXMoZWUpLm1h''@;'; put 'put ''cChmdW5jdGlvbihyZSxpZSl7dmFyIHVlLGxlPWVlW3JlXTtpZigibnVtYmVyIj09dHlwZW9mIGxlKXJldHVybiBsZTtpZih1ZT1udWxsPT09bGU/IiI6bGUsWSYmImJlc3QuIj09PVlbcmVdKXtpZih1ZSYmISgwLEcuaXNTcGVjaWFsTWlzc2luZykodWUpKXRocm93IG5ldyBFcnJvcigiQSBT''@;'; put 'put ''cGVjaWFsIG1pc3NpbmcgdmFsdWUgY2FuIG9ubHkgYmUgYSBzaW5nbGUgY2hhcmFjdGVyIGZyb20gJ0EnIHRvICdaJywgJ18nLCAnLlthLXpdJywgJy5fJyIpO3ZhciBhZT11ZS5pbmNsdWRlcygiLiIpPyIiOiIuIjtyZXR1cm4iIi5jb25jYXQoYWUpLmNvbmNhdCh1ZS50b0xvd2VyQ2FzZSgp''@;'; put 'put ''KX1yZXR1cm4gdWU9dWUucmVwbGFjZSgvIi9nLCciIicpLCh1ZT0nIicuY29uY2F0KHVlLCciJykpLnN1YnN0cmluZygxLHVlLmxlbmd0aC0xKS5zZWFyY2goLyhcdHxcbnxccnwsfFwnfFwiKS9nbSk8MCYmKHVlPXVlLnN1YnN0cmluZygxLHVlLmxlbmd0aC0xKSksIiI9PT0odWU9dWUucmVw''@;'; put 'put ''bGFjZSgvXHJcbi9nbSwiXG4iKSkmJlVbaWVdLmluY2x1ZGVzKCJiZXN0IikmJih1ZT0iLiIpLHVlfSkuam9pbigiLCIpfSksVS5qb2luKCIsIikucmVwbGFjZSgvLC9nLCIgIikrIlxyXG4iK1ouam9pbigiXHJcbiIpKX0sTy5pc0Zvcm1hdHNUYWJsZT1mdW5jdGlvbihFKXtyZXR1cm4vXlwk''@;'; put 'put ''LiovLnRlc3QoRSl9O3ZhciBUPWZ1bmN0aW9uKEUpe2Zvcih2YXIgej1FLmxlbmd0aCxOPUUubGVuZ3RoLTE7Tj49MDtOLS0pe3ZhciBCPUUuY2hhckNvZGVBdChOKTtCPjEyNyYmQjw9MjA0Nz96Kys6Qj4yMDQ3JiZCPD02NTUzNSYmKHorPTIpLEI+PTU2MzIwJiZCPD01NzM0MyYmTi0tfXJl''@;'; put 'put ''dHVybiB6fX0sNjExNjooTSxPLEkpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmNyZWF0ZUF4aW9zSW5zdGFuY2U9dm9pZCAwO3ZhciBqPUkoOTY2OSk7Ty5jcmVhdGVBeGlvc0luc3RhbmNlPWZ1bmN0aW9uKEcsRCl7''@;'; put 'put ''cmV0dXJuIGouZGVmYXVsdC5jcmVhdGUoe2Jhc2VVUkw6RyxodHRwc0FnZW50OkR9KX19LDk4MjU6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZGVsYXk9dm9pZCAwLE8uZGVsYXk9ZnVuY3Rpb24oSSl7cmV0''@;'; put 'put ''dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGope3JldHVybiBzZXRUaW1lb3V0KGosSSl9KX19LDk5MDpmdW5jdGlvbihNLE8sSSl7InVzZSBzdHJpY3QiO3ZhciBqPUkoNDE1NSksRz1JKDUxMDgpLEQ9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHosTixCLFope3JldHVybiBuZXco''@;'; put 'put ''Qnx8KEI9UHJvbWlzZSkpKGZ1bmN0aW9uKFksVSl7ZnVuY3Rpb24gcShyZSl7dHJ5e2VlKFoubmV4dChyZSkpfWNhdGNoKGllKXtVKGllKX19ZnVuY3Rpb24gSihyZSl7dHJ5e2VlKFoudGhyb3cocmUpKX1jYXRjaChpZSl7VShpZSl9fWZ1bmN0aW9uIGVlKHJlKXt2YXIgaWU7cmUuZG9uZT9Z''@;'; put 'put ''KHJlLnZhbHVlKTooaWU9cmUudmFsdWUsaWUgaW5zdGFuY2VvZiBCP2llOm5ldyBCKGZ1bmN0aW9uKHVlKXt1ZShpZSl9KSkudGhlbihxLEopfWVlKChaPVouYXBwbHkoeixOfHxbXSkpLm5leHQoKSl9KX0sVD10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih6LE4pe3ZhciBCLFos''@;'; put 'put ''WSxVLHE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmWVswXSl0aHJvdyBZWzFdO3JldHVybiBZWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIFU9e25leHQ6SigwKSx0aHJvdzpKKDEpLHJldHVybjpKKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoVVtTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxVO2Z1bmN0aW9uIEooZWUpe3JldHVybiBmdW5jdGlvbihyZSl7cmV0dXJuIGZ1bmN0aW9uKGllKXtpZihCKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3E7KXRyeXtpZihC''@;'; put 'put ''PTEsWiYmKFk9MiZpZVswXT9aLnJldHVybjppZVswXT9aLnRocm93fHwoKFk9Wi5yZXR1cm4pJiZZLmNhbGwoWiksMCk6Wi5uZXh0KSYmIShZPVkuY2FsbChaLGllWzFdKSkuZG9uZSlyZXR1cm4gWTtzd2l0Y2goWj0wLFkmJihpZT1bMiZpZVswXSxZLnZhbHVlXSksaWVbMF0pe2Nhc2UgMDpj''@;'; put 'put ''YXNlIDE6WT1pZTticmVhaztjYXNlIDQ6cmV0dXJuIHEubGFiZWwrKyx7dmFsdWU6aWVbMV0sZG9uZTohMX07Y2FzZSA1OnEubGFiZWwrKyxaPWllWzFdLGllPVswXTtjb250aW51ZTtjYXNlIDc6aWU9cS5vcHMucG9wKCkscS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoWT0o''@;'; put 'put ''WT1xLnRyeXMpLmxlbmd0aD4wJiZZW1kubGVuZ3RoLTFdKXx8NiE9PWllWzBdJiYyIT09aWVbMF0pKXtxPTA7Y29udGludWV9aWYoMz09PWllWzBdJiYoIVl8fGllWzFdPllbMF0mJmllWzFdPFlbM10pKXtxLmxhYmVsPWllWzFdO2JyZWFrfWlmKDY9PT1pZVswXSYmcS5sYWJlbDxZWzFdKXtx''@;'; put 'put ''LmxhYmVsPVlbMV0sWT1pZTticmVha31pZihZJiZxLmxhYmVsPFlbMl0pe3EubGFiZWw9WVsyXSxxLm9wcy5wdXNoKGllKTticmVha31ZWzJdJiZxLm9wcy5wb3AoKSxxLnRyeXMucG9wKCk7Y29udGludWV9aWU9Ti5jYWxsKHoscSl9Y2F0Y2godWUpe2llPVs2LHVlXSxaPTB9ZmluYWxseXtC''@;'; put 'put ''PVk9MH1pZig1JmllWzBdKXRocm93IGllWzFdO3JldHVybnt2YWx1ZTppZVswXT9pZVsxXTp2b2lkIDAsZG9uZTohMH19KFtlZSxyZV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmZldGNoTG9nPU8uZmV0Y2hMb2dCeUNodW5rcz12b2lk''@;'; put 'put ''IDA7dmFyIEU9SSg5Nzc4KTtPLmZldGNoTG9nQnlDaHVua3M9ZnVuY3Rpb24oeixOLEIsWil7cmV0dXJuIEQodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gVCh0aGlzLGZ1bmN0aW9uKFkpe3N3aXRjaChZLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsKDAsTy5mZXRjaExv''@;'; put 'put ''ZykoeixOLEIsMCxaKV07Y2FzZSAxOnJldHVyblsyLFkuc2VudCgpXX19KX0pfSxPLmZldGNoTG9nPWZ1bmN0aW9uKHosTixCLFosWSl7cmV0dXJuIEQodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgVSxxLEosZWUscmU7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihpZSl7c3dp''@;'; put 'put ''dGNoKGllLmxhYmVsKXtjYXNlIDA6VT1qLmxvZ2dlcnx8RyxxPSIiLEo9WTwxZTQ/WToxZTQsaWUubGFiZWw9MTtjYXNlIDE6cmV0dXJuIFUuaW5mbygiRmV0Y2hpbmcgbG9ncyBmcm9tIGxpbmUgbm86ICIuY29uY2F0KForMSwiIHRvICIpLmNvbmNhdChaK0osIiBvZiAiKS5jb25jYXQoWSwi''@;'; put 'put ''LiIpKSxbNCx6LmdldCgiIi5jb25jYXQoQiwiP3N0YXJ0PSIpLmNvbmNhdChaLCImbGltaXQ9IikuY29uY2F0KEopLE4pLnRoZW4oZnVuY3Rpb24odWUpe3JldHVybiB1ZS5yZXN1bHR9KS5jYXRjaChmdW5jdGlvbih1ZSl7dGhyb3coMCxFLnByZWZpeE1lc3NhZ2UpKHVlLCJFcnJvciB3aGls''@;'; put 'put ''ZSBnZXR0aW5nIGxvZy4gIil9KV07Y2FzZSAyOmlmKDA9PT0oZWU9aWUuc2VudCgpKS5pdGVtcy5sZW5ndGgpcmV0dXJuWzMsNF07cmU9ZWUuaXRlbXMubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWUubGluZX0pLmpvaW4oIlxuIikscSs9cmUsWis9SixpZS5sYWJlbD0zO2Nhc2UgMzppZiha''@;'; put 'put ''PFkpcmV0dXJuWzMsMV07aWUubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzIscV19fSl9KX19LDcxNDooTSxPLEkpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLmZvcm1hdERhdGFGb3JSZXF1ZXN0PXZvaWQgMDt2YXIgaj1J''@;'; put 'put ''KDI0MDIpLEc9SSg0Nzk5KTtPLmZvcm1hdERhdGFGb3JSZXF1ZXN0PWZ1bmN0aW9uKEQpe3ZhciBUPVtdLEU9MCx6PXt9O2Zvcih2YXIgTiBpbiBEKWlmKCEoMCxqLmlzRm9ybWF0c1RhYmxlKShOKXx8IU9iamVjdC5rZXlzKEQpLmluY2x1ZGVzKE4ucmVwbGFjZSgvXlwkLywiIikpKXtFKyss''@;'; put 'put ''KDAsai5pc0Zvcm1hdHNUYWJsZSkoTil8fFQucHVzaChOKTt2YXIgQj0oMCxqLmNvbnZlcnRUb0NTVikoRCxOKTtpZigiRVJST1I6IExBUkdFIFNUUklORyBMRU5HVEgiPT09Qil0aHJvdyBuZXcgRXJyb3IoIlRoZSBtYXggbGVuZ3RoIG9mIGEgc3RyaW5nIHZhbHVlIGluIFNBU2pzIGlzIDMy''@;'; put 'put ''NzY1IGNoYXJhY3RlcnMuIik7aWYoQi5sZW5ndGg+MTZlMyl7dmFyIFo9KDAsRy5zcGxpdENodW5rcykoQik7elsic2FzanMiLmNvbmNhdChFLCJkYXRhMCIpXT1aLmxlbmd0aCxaLmZvckVhY2goZnVuY3Rpb24oWSxVKXt6WyJzYXNqcyIuY29uY2F0KEUsImRhdGEiKS5jb25jYXQoVSsxKV09''@;'; put 'put ''WX0pfWVsc2Ugelsic2FzanMiLmNvbmNhdChFLCJkYXRhIildPUJ9cmV0dXJuIHouc2FzanNfdGFibGVzPVQuam9pbigiICIpLHp9fSw4NDU4OihNLE8sSSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uZ2V0Rm9ybURh''@;'; put 'put ''dGE9dm9pZCAwO3ZhciBqPUkoNTkyOCksRz1JKDYyMzApO08uZ2V0Rm9ybURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxqLmlzTm9kZSkoKT9uZXcgRzpuZXcgRm9ybURhdGF9fSwxODg0OihNLE8sSSk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUi''@;'; put 'put ''LHt2YWx1ZTohMH0pLE8uZ2V0VmFsaWRKc29uPXZvaWQgMDt2YXIgaj1JKDEzOTUpO08uZ2V0VmFsaWRKc29uPWZ1bmN0aW9uKEcpe3RyeXtpZihudWxsPT1HKXRocm93IG5ldyBqLkludmFsaWRKc29uRXJyb3I7aWYoQXJyYXkuaXNBcnJheShHKSl0aHJvdyBuZXcgai5Kc29uUGFyc2VBcnJh''@;'; put 'put ''eUVycm9yO3JldHVybiJvYmplY3QiPT10eXBlb2YgRz9HOiIiPT09Rz97fTpKU09OLnBhcnNlKEcpfWNhdGNoKEQpe3Rocm93IEQgaW5zdGFuY2VvZiBqLkpzb25QYXJzZUFycmF5RXJyb3I/RDpuZXcgai5JbnZhbGlkSnNvbkVycm9yfX19LDU5Mjg6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgaj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oRCxULEUseil7dm9pZCAwPT09eiYmKHo9RSk7dmFyIE49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihULEUpO04mJiEoImdldCJpbiBOPyFULl9fZXNNb2R1bGU6Ti53''@;'; put 'put ''cml0YWJsZXx8Ti5jb25maWd1cmFibGUpfHwoTj17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVFtFXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRCx6LE4pfTpmdW5jdGlvbihELFQsRSx6KXt2b2lkIDA9PT16JiYoej1FKSxEW3pdPVRbRV19KSxHPXRoaXMmJnRoaXMu''@;'; put 'put ''X19leHBvcnRTdGFyfHxmdW5jdGlvbihELFQpe2Zvcih2YXIgRSBpbiBEKSJkZWZhdWx0Ij09PUV8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChULEUpfHxqKFQsRCxFKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEcoSSgz''@;'; put 'put ''MzAyKSxPKSxHKEkoNzkyMiksTyksRyhJKDM3OTMpLE8pLEcoSSgyNDAyKSxPKSxHKEkoNjExNiksTyksRyhJKDk4MjUpLE8pLEcoSSg5OTApLE8pLEcoSSgxODg0KSxPKSxHKEkoNDI0MyksTyksRyhJKDI1NyksTyksRyhJKDIpLE8pLEcoSSgyNjE1KSxPKSxHKEkoMjkyMCksTyksRyhJKDI0''@;'; put 'put ''MjIpLE8pLEcoSSgzMSksTyksRyhJKDY1MTUpLE8pLEcoSSg2NDE2KSxPKSxHKEkoMjgxMyksTyksRyhJKDk4OTYpLE8pLEcoSSg0Nzk5KSxPKSxHKEkoNDUxNiksTyksRyhJKDg0NTgpLE8pfSw0MjQzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MTU1KTtPYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5pc05vZGU9dm9pZCAwLE8uaXNOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWomJm51bGwhPWoudmVyc2lvbnMmJm51bGwhPWoudmVyc2lvbnMubm9kZX19LDI1NzooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5pc1JlbGF0aXZlUGF0aD12b2lkIDAsTy5pc1JlbGF0aXZlUGF0aD1mdW5jdGlvbihJKXtyZXR1cm4hIUkmJiFJLnN0YXJ0c1dpdGgoIi8iKX19LDI6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnR5KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8uaXNVcmk9dm9pZCAwLE8uaXNVcmk9ZnVuY3Rpb24oSSl7cmV0dXJuL15cL2ZvbGRlcnNcL2ZvbGRlcnNcLy8udGVzdChJKX19LDI2MTU6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIl9fZXNN''@;'; put 'put ''b2R1bGUiLHt2YWx1ZTohMH0pLE8uaXNVcmw9dm9pZCAwLE8uaXNVcmw9ZnVuY3Rpb24oSSl7dHJ5e3ZhciBqPW5ldyBVUkwoSSk7aWYoIVsiaHR0cDoiLCJodHRwczoiXS5pbmNsdWRlcyhqLnByb3RvY29sKSlyZXR1cm4hMX1jYXRjaHtyZXR1cm4hMX1yZXR1cm4hMH19LDEyMTA6ZnVuY3Rp''@;'; put 'put ''b24oTSxPKXsidXNlIHN0cmljdCI7dmFyIEksTixqPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihOLEIsWixZKXtyZXR1cm4gbmV3KFp8fChaPVByb21pc2UpKShmdW5jdGlvbihVLHEpe2Z1bmN0aW9uIEooaWUpe3RyeXtyZShZLm5leHQoaWUpKX1jYXRjaCh1ZSl7cSh1ZSl9fWZ1''@;'; put 'put ''bmN0aW9uIGVlKGllKXt0cnl7cmUoWS50aHJvdyhpZSkpfWNhdGNoKHVlKXtxKHVlKX19ZnVuY3Rpb24gcmUoaWUpe3ZhciB1ZTtpZS5kb25lP1UoaWUudmFsdWUpOih1ZT1pZS52YWx1ZSx1ZSBpbnN0YW5jZW9mIFo/dWU6bmV3IFooZnVuY3Rpb24obGUpe2xlKHVlKX0pKS50aGVuKEosZWUp''@;'; put 'put ''fXJlKChZPVkuYXBwbHkoTixCfHxbXSkpLm5leHQoKSl9KX0sRz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihOLEIpe3ZhciBaLFksVSxxLEo9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmVVswXSl0aHJvdyBVWzFdO3JldHVybiBVWzFdfSx0cnlzOltdLG9wczpbXX07''@;'; put 'put ''cmV0dXJuIHE9e25leHQ6ZWUoMCksdGhyb3c6ZWUoMSkscmV0dXJuOmVlKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYocVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxxO2Z1bmN0aW9uIGVlKHJlKXtyZXR1cm4gZnVuY3Rpb24oaWUpe3JldHVybiBm''@;'; put 'put ''dW5jdGlvbih1ZSl7aWYoWil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtKOyl0cnl7aWYoWj0xLFkmJihVPTImdWVbMF0/WS5yZXR1cm46dWVbMF0/WS50aHJvd3x8KChVPVkucmV0dXJuKSYmVS5jYWxsKFkpLDApOlkubmV4dCkm''@;'; put 'put ''JiEoVT1VLmNhbGwoWSx1ZVsxXSkpLmRvbmUpcmV0dXJuIFU7c3dpdGNoKFk9MCxVJiYodWU9WzImdWVbMF0sVS52YWx1ZV0pLHVlWzBdKXtjYXNlIDA6Y2FzZSAxOlU9dWU7YnJlYWs7Y2FzZSA0OnJldHVybiBKLmxhYmVsKysse3ZhbHVlOnVlWzFdLGRvbmU6ITF9O2Nhc2UgNTpKLmxhYmVs''@;'; put 'put ''KyssWT11ZVsxXSx1ZT1bMF07Y29udGludWU7Y2FzZSA3OnVlPUoub3BzLnBvcCgpLEoudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKFU9KFU9Si50cnlzKS5sZW5ndGg+MCYmVVtVLmxlbmd0aC0xXSl8fDYhPT11ZVswXSYmMiE9PXVlWzBdKSl7Sj0wO2NvbnRpbnVlfWlmKDM9''@;'; put 'put ''PT11ZVswXSYmKCFVfHx1ZVsxXT5VWzBdJiZ1ZVsxXTxVWzNdKSl7Si5sYWJlbD11ZVsxXTticmVha31pZig2PT09dWVbMF0mJkoubGFiZWw8VVsxXSl7Si5sYWJlbD1VWzFdLFU9dWU7YnJlYWt9aWYoVSYmSi5sYWJlbDxVWzJdKXtKLmxhYmVsPVVbMl0sSi5vcHMucHVzaCh1ZSk7YnJlYWt9''@;'; put 'put ''VVsyXSYmSi5vcHMucG9wKCksSi50cnlzLnBvcCgpO2NvbnRpbnVlfXVlPUIuY2FsbChOLEopfWNhdGNoKGxlKXt1ZT1bNixsZV0sWT0wfWZpbmFsbHl7Wj1VPTB9aWYoNSZ1ZVswXSl0aHJvdyB1ZVsxXTtyZXR1cm57dmFsdWU6dWVbMF0/dWVbMV06dm9pZCAwLGRvbmU6ITB9fShbcmUsaWVd''@;'; put 'put ''KX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5vcGVuTG9naW5Qcm9tcHQ9dm9pZCAwLChOPUl8fChJPXt9KSkuc3R5bGVzPSJzYXNqc0FkYXB0ZXJTdHlsZXMiLE4ub3ZlcmxheT0ic2FzanNBZGFwdGVyTG9naW5Qcm9tcHRCRyIsTi5kaWFs''@;'; put 'put ''b2c9InNhc2pzQWRhcHRlckxvZ2luUHJvbXB0Ijt2YXIgRD0ic2FzanMtYWRhcHRlciIsVD17cG9wVXA6IiIuY29uY2F0KEQsInBvcFVwIikscG9wVXBCRzoiIi5jb25jYXQoRCwicG9wVXBCRyIpfTtPLm9wZW5Mb2dpblByb21wdD1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5j''@;'; put 'put ''dGlvbihOKXtyZXR1cm4gaih2b2lkIDAsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBCLFosWSxVLHEsSixlZSxyZTtyZXR1cm4gRyh0aGlzLGZ1bmN0aW9uKGllKXtyZXR1cm4oQj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKS5pZD1JLnN0eWxlcyxCLmlubmVyVGV4dD16''@;'; put 'put ''LChaPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pZD1JLm92ZXJsYXksWi5jbGFzc0xpc3QuYWRkKFQucG9wVXBCRyksKFk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlkPUkuZGlhbG9nLFkuY2xhc3NMaXN0LmFkZChULnBvcFVwKSwoVT1kb2N1bWVudC5jcmVhdGVF''@;'; put 'put ''bGVtZW50KCJoMSIpKS5pbm5lclRleHQ9IlNlc3Npb24gRXhwaXJlZCEiLFkuYXBwZW5kQ2hpbGQoVSkscT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwoSj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLmlubmVyVGV4dD0iWW91IG5lZWQgdG8gcmVsb2dpbiwgY2xpY2sg''@;'; put 'put ''T0sgdG8gbG9naW4uIixxLmFwcGVuZENoaWxkKEopLFkuYXBwZW5kQ2hpbGQocSksKGVlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKS5jbGFzc0xpc3QuYWRkKCJjYW5jZWwiKSxlZS5pbm5lclRleHQ9IkNhbmNlbCIsZWUub25jbGljaz1mdW5jdGlvbigpe0UoKSxOKCExKX0s''@;'; put 'put ''WS5hcHBlbmRDaGlsZChlZSksKHJlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKS5jbGFzc0xpc3QuYWRkKCJjb25maXJtIikscmUuaW5uZXJUZXh0PSJPayIscmUub25jbGljaz1mdW5jdGlvbigpe0UoKSxOKCEwKX0sWS5hcHBlbmRDaGlsZChyZSksZG9jdW1lbnQuYm9keS5z''@;'; put 'put ''dHlsZS5vdmVyZmxvdz0iaGlkZGVuIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKEIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoWiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChZKSxbMl19KX0pfSl9O3ZhciBFPWZ1bmN0aW9uKCl7T2JqZWN0LnZhbHVlcyhJKS5mb3JFYWNoKGZ1''@;'; put 'put ''bmN0aW9uKE4pe3ZhciBCLFo9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTik7bnVsbD09PShCPVo/LnBhcmVudE5vZGUpfHx2b2lkIDA9PT1CfHxCLnJlbW92ZUNoaWxkKFopfSksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iYXV0byJ9LHo9IlxuLiIuY29uY2F0KFQucG9wVXBCRywi''@;'; put 'put ''ICxcbi4iKS5jb25jYXQoVC5wb3BVcCwiIHtcbiAgei1pbmRleDogMTAwMDA7XG59XG4uIikuY29uY2F0KFQucG9wVXAsIiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94''@;'; put 'put ''O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDQwJTtcbiAgbGVmdDogNTAlO1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtZmFtaWx5OiAnUFQgU2FucycsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjZmZmO1xuICBib3Jk''@;'; put 'put ''ZXItc3R5bGU6IG5vbmU7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC1o''@;'; put 'put ''ZWlnaHQ6IDMwMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi4iKS5jb25jYXQoVC5wb3BVcCwiID4gaDEge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzog''@;'; put 'put ''Ym9yZGVyLWJveDtcbiAgcGFkZGluZzogNXB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEuMmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7''@;'; put 'put ''XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XG4gIGJvcmRlci1jb2xvcjogYmxhY2s7XG59XG4uIikuY29uY2F0KFQucG9wVXAsIiA+IGRpdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtMTA4cHgpO1xuICBtYXJnaW46IDA7XG4g''@;'; put 'put ''IGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogNSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXdpZHRo''@;'; put 'put ''OiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2NjYztcbiAgYm9yZGVyLXN0eWxlOiBub25lIG5vbmUgc29saWQgbm9uZTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4uIikuY29uY2F0KFQucG9wVXAsIiA+IGRpdiA+IHNwYW4ge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBib3gtc2l6aW5n''@;'; put 'put ''OiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTA4cHg7XG4gIHZlcnRpY2FsLWFsaWduOiBt''@;'; put 'put ''aWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cbi4iKS5jb25jYXQoVC5wb3BVcCwiIC5jYW5jZWwge1xuICBmbG9hdDogbGVmdDtcbn1cbi4iKS5jb25jYXQoVC5wb3BVcCwiIC5jb25maXJtIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLiIpLmNvbmNhdChULnBvcFVwLCIgPiBidXR0''@;'; put 'put ''b24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAxMHB4O1xuICB3aWR0aDogNTAlO1xuICBib3JkZXI6IDFweCBub25l''@;'; put 'put ''ICNjY2M7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMSwgMSwgMSwgMC4yKTtcbn1cbi4iKS5jb25jYXQoVC5wb3BVcCwiID4gYnV0dG9uOmhvdmVyIHtcbiAg''@;'; put 'put ''YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuLiIpLmNvbmNhdChULnBvcFVwQkcsIiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2lu''@;'; put 'put ''OiAwO1xuICBwYWRkaW5nOiAwO1xuICBvcGFjaXR5OiAwLjk1O1xuICB6LWluZGV4OiA1MDtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KCMwMzc4Y2QsICMwMTIwMzYpO1xufVxuIil9LDI5MjA6KE0sTyk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5''@;'; put 'put ''KE8sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE8ubmVlZHNSZXRyeT12b2lkIDAsTy5uZWVkc1JldHJ5PWZ1bmN0aW9uKEkpe3JldHVybiEhSSYmKEkuaW5jbHVkZXMoJyJlcnJvckNvZGUiOjQwMycpJiZJLmluY2x1ZGVzKCJfY3NyZiIpJiZJLmluY2x1ZGVzKCJYLUNTUkYtVE9LRU4iKXx8''@;'; put 'put ''SS5pbmNsdWRlcygnInN0YXR1cyI6NDAzJykmJkkuaW5jbHVkZXMoJyJlcnJvciI6IkZvcmJpZGRlbiInKXx8SS5pbmNsdWRlcygnInN0YXR1cyI6NDQ5JykmJkkuaW5jbHVkZXMoIkF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3MsIHJldHJ5IG9yaWdpbmFsIHJlcXVlc3QiKSl9fSwyNDIyOihNLE8p''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnBhcnNlR2VuZXJhdGVkQ29kZT12b2lkIDAsTy5wYXJzZUdlbmVyYXRlZENvZGU9ZnVuY3Rpb24oSSl7cmV0dXJuIEkuc3BsaXQoIlxuIikuZmlsdGVyKGZ1bmN0aW9uKGop''@;'; put 'put ''e3JldHVybiBqLnRyaW0oKS5zdGFydHNXaXRoKCJNUFJJTlQiKX0pLmpvaW4oIlxyXG4iKX19LDMxOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg1MTA4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5wYXJzZVNhc1ZpeWFMb2c9dm9p''@;'; put 'put ''ZCAwLE8ucGFyc2VTYXNWaXlhTG9nPWZ1bmN0aW9uKEcpe3ZhciBEO3RyeXtEPUcuaXRlbXM/Ry5pdGVtcy5tYXAoZnVuY3Rpb24oVCl7cmV0dXJuIFQubGluZX0pLmpvaW4oIlxuIik6SlNPTi5zdHJpbmdpZnkoRyl9Y2F0Y2goVCl7ai5lcnJvcigiQW4gZXJyb3IgaGFzIG9jY3VycmVkIHdo''@;'; put 'put ''aWxlIHBhcnNpbmcgdGhlIGxvZyByZXNwb25zZSIsVCksRD1HfXJldHVybiBEfX0sNjUxNTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5wYXJzZVNvdXJjZUNvZGU9dm9pZCAwLE8ucGFyc2VTb3VyY2VDb2Rl''@;'; put 'put ''PWZ1bmN0aW9uKEkpe3JldHVybiBJLnNwbGl0KCJcbiIpLmZpbHRlcihmdW5jdGlvbihqKXtyZXR1cm4gai50cmltKCkuc3Vic3RyaW5nKDAsMTApLnRyaW1TdGFydCgpLm1hdGNoKC9eXGQvKX0pLmpvaW4oIlxyXG4iKX19LDY0MTY6ZnVuY3Rpb24oTSxPLEkpeyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''aj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oVCxFLHosTil7cmV0dXJuIG5ldyh6fHwoej1Qcm9taXNlKSkoZnVuY3Rpb24oQixaKXtmdW5jdGlvbiBZKEope3RyeXtxKE4ubmV4dChKKSl9Y2F0Y2goZWUpe1ooZWUpfX1mdW5jdGlvbiBVKEope3RyeXtxKE4udGhyb3coSikpfWNh''@;'; put 'put ''dGNoKGVlKXtaKGVlKX19ZnVuY3Rpb24gcShKKXt2YXIgZWU7Si5kb25lP0IoSi52YWx1ZSk6KGVlPUoudmFsdWUsZWUgaW5zdGFuY2VvZiB6P2VlOm5ldyB6KGZ1bmN0aW9uKHJlKXtyZShlZSl9KSkudGhlbihZLFUpfXEoKE49Ti5hcHBseShULEV8fFtdKSkubmV4dCgpKX0pfSxHPXRoaXMm''@;'; put 'put ''JnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKFQsRSl7dmFyIHosTixCLFosWT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZCWzBdKXRocm93IEJbMV07cmV0dXJuIEJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gWj17bmV4dDpVKDApLHRocm93OlUoMSkscmV0dXJuOlUoMil9''@;'; put 'put ''LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihaW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLFo7ZnVuY3Rpb24gVShxKXtyZXR1cm4gZnVuY3Rpb24oSil7cmV0dXJuIGZ1bmN0aW9uKGVlKXtpZih6KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBp''@;'; put 'put ''cyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO1k7KXRyeXtpZih6PTEsTiYmKEI9MiZlZVswXT9OLnJldHVybjplZVswXT9OLnRocm93fHwoKEI9Ti5yZXR1cm4pJiZCLmNhbGwoTiksMCk6Ti5uZXh0KSYmIShCPUIuY2FsbChOLGVlWzFdKSkuZG9uZSlyZXR1cm4gQjtzd2l0Y2goTj0wLEIm''@;'; put 'put ''JihlZT1bMiZlZVswXSxCLnZhbHVlXSksZWVbMF0pe2Nhc2UgMDpjYXNlIDE6Qj1lZTticmVhaztjYXNlIDQ6cmV0dXJuIFkubGFiZWwrKyx7dmFsdWU6ZWVbMV0sZG9uZTohMX07Y2FzZSA1OlkubGFiZWwrKyxOPWVlWzFdLGVlPVswXTtjb250aW51ZTtjYXNlIDc6ZWU9WS5vcHMucG9wKCks''@;'; put 'put ''WS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgoQj0oQj1ZLnRyeXMpLmxlbmd0aD4wJiZCW0IubGVuZ3RoLTFdKXx8NiE9PWVlWzBdJiYyIT09ZWVbMF0pKXtZPTA7Y29udGludWV9aWYoMz09PWVlWzBdJiYoIUJ8fGVlWzFdPkJbMF0mJmVlWzFdPEJbM10pKXtZLmxhYmVsPWVl''@;'; put 'put ''WzFdO2JyZWFrfWlmKDY9PT1lZVswXSYmWS5sYWJlbDxCWzFdKXtZLmxhYmVsPUJbMV0sQj1lZTticmVha31pZihCJiZZLmxhYmVsPEJbMl0pe1kubGFiZWw9QlsyXSxZLm9wcy5wdXNoKGVlKTticmVha31CWzJdJiZZLm9wcy5wb3AoKSxZLnRyeXMucG9wKCk7Y29udGludWV9ZWU9RS5jYWxs''@;'; put 'put ''KFQsWSl9Y2F0Y2gocmUpe2VlPVs2LHJlXSxOPTB9ZmluYWxseXt6PUI9MH1pZig1JmVlWzBdKXRocm93IGVlWzFdO3JldHVybnt2YWx1ZTplZVswXT9lZVsxXTp2b2lkIDAsZG9uZTohMH19KFtxLEpdKX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEw''@;'; put 'put ''fSksTy5wYXJzZVNhc1ZpeWFEZWJ1Z1Jlc3BvbnNlPXZvaWQgMDt2YXIgRD1JKDU5MjgpO08ucGFyc2VTYXNWaXlhRGVidWdSZXNwb25zZT1mdW5jdGlvbihULEUseil7cmV0dXJuIGoodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTixCO3JldHVybiBHKHRoaXMsZnVuY3Rp''@;'; put 'put ''b24oWil7aWYoTj1ULnNwbGl0KC88aWZyYW1lIHN0eWxlPSJ3aWR0aDogOTklOyBoZWlnaHQ6IDUwMHB4IiBzcmM9Inw8aWZyYW1lIHN0eWxlPSJ3aWR0aDogOTklOyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOkNhbnZhczsiIHNyYz0vKVsxXSwhKEI9Tj9OLnNwbGl0KC8iPjxc''@;'; put 'put ''L2lmcmFtZT58PjxcL2lmcmFtZT4vKVswXTpudWxsKSl0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHdlYm91dCBmaWxlIFVSTC4iKTtyZXR1cm5bMixFLmdldCh6K0Isdm9pZCAwLCJ0ZXh0L3BsYWluIikudGhlbihmdW5jdGlvbihZKXtyZXR1cm4oMCxELmdldFZhbGlkSnNvbiko''@;'; put 'put ''WS5yZXN1bHQpfSldfSl9KX19LDI4MTM6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDUxMDgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnBhcnNlV2Vib3V0UmVzcG9uc2U9dm9pZCAwO3ZhciBHPUkoMTM5NSk7Ty5wYXJzZVdlYm91''@;'; put 'put ''dFJlc3BvbnNlPWZ1bmN0aW9uKEQsVCl7dmFyIEU9IiI7aWYoRC5pbmNsdWRlcygiPj53ZWJvdXRCRUdJTjw8IikpdHJ5e0U9RC5zcGxpdCgiPj53ZWJvdXRCRUdJTjw8IilbMV0uc3BsaXQoIj4+d2Vib3V0RU5EPDwiKVswXX1jYXRjaCh6KXtpZihUKXRocm93IG5ldyBHLldlYm91dFJlc3Bv''@;'; put 'put ''bnNlRXJyb3IoVCk7RT0iIixqLmVycm9yKHopfXJldHVybiBFfX0sMTE3MDooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTy5leHRyYWN0VXNlckxvbmdOYW1lU2FzOT12b2lkIDA7dmFyIEk9WyJMb2cgT2ZmIl07''@;'; put 'put ''Ty5leHRyYWN0VXNlckxvbmdOYW1lU2FzOT1mdW5jdGlvbihqKXt2YXIgRz1qPy5tYXRjaCgvInRpdGxlIjpccz8iLio/Ii8pLEQ9Rz8uWzBdLnNwbGl0KCI6IilbMV0udHJpbSgpLFQ9RD8uaW5kZXhPZigiICIpO3JldHVybiBEPyhJLm1hcChmdW5jdGlvbihFKXt2YXIgej1EPy5pbmRleE9m''@;'; put 'put ''KEUpfHwtMTt6Pi0xJiYoVD16K0UubGVuZ3RoKX0pLEQuc2xpY2UoVCwtMSkudHJpbSgpKToidW5rbm93biJ9fSw5ODk2OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnNlcmlhbGl6ZT12b2lkIDAsTy5zZXJp''@;'; put 'put ''YWxpemU9ZnVuY3Rpb24oSSl7dmFyIGo9W107Zm9yKHZhciBHIGluIEkpaWYoSS5oYXNPd25Qcm9wZXJ0eShHKSlpZihJW0ddaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIEQ9MCxUPUlbR10ubGVuZ3RoO0Q8VDtEKyspai5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChHKSsiPSIrZW5jb2RlVVJJ''@;'; put 'put ''Q29tcG9uZW50KElbR11bRF0pKTtlbHNlIGoucHVzaChlbmNvZGVVUklDb21wb25lbnQoRykrIj0iK2VuY29kZVVSSUNvbXBvbmVudChJW0ddKSk7cmV0dXJuIGouam9pbigiJiIpfX0sNDc5OTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTywiX19lc01vZHVs''@;'; put 'put ''ZSIse3ZhbHVlOiEwfSksTy5zcGxpdENodW5rcz12b2lkIDAsTy5zcGxpdENodW5rcz1mdW5jdGlvbihJKXtmb3IodmFyIGo9MTZlMyxHPU1hdGguY2VpbChJLmxlbmd0aC9qKSxEPW5ldyBBcnJheShHKSxUPTAsRT0wO1Q8RzsrK1QsRSs9ailEW1RdPUkuc3Vic3RyKEUsaik7cmV0dXJuIER9''@;'; put 'put ''fSw0NTE2OihNLE8pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPLnZhbGlkYXRlSW5wdXQ9Ty5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRT1PLk1PUkVfSU5GTz12b2lkIDAsTy5NT1JFX0lORk89IkZvciBtb3JlIGluZm8g''@;'; put 'put ''c2VlIGh0dHBzOi8vc2FzanMuaW8vc2FzanMtYWRhcHRlci8jcmVxdWVzdC1yZXNwb25zZSIsTy5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRT0iUGFyYW1ldGVyIGRhdGEgY29udGFpbnMgaW52YWxpZCB0YWJsZSBzdHJ1Y3R1cmUuICIuY29uY2F0KE8uTU9SRV9JTkZPKSxPLnZhbGlkYXRlSW5w''@;'; put 'put ''dXQ9ZnVuY3Rpb24oail7aWYobnVsbD09PWopcmV0dXJue3N0YXR1czohMCxtc2c6IiJ9O2lmKCJvYmplY3QiIT09SShqKSlyZXR1cm57c3RhdHVzOiExLG1zZzpPLklOVkFMSURfVEFCTEVfU1RSVUNUVVJFfTt2YXIgRz1mdW5jdGlvbihZKXtyZXR1cm4gWS5tYXRjaCgvXlwkLiovKSYmT2Jq''@;'; put 'put ''ZWN0LmtleXMoaikuaW5jbHVkZXMoWS5yZXBsYWNlKC9eXCQvLCIiKSl9O2Zvcih2YXIgRCBpbiBqKXtpZighRC5tYXRjaCgvXlthLXpBLVpfXS8pJiYhRyhEKSlyZXR1cm57c3RhdHVzOiExLG1zZzoiRmlyc3QgbGV0dGVyIG9mIHRhYmxlIHNob3VsZCBiZSBhbHBoYWJldCBvciB1bmRlcnNj''@;'; put 'put ''b3JlLiJ9O2lmKCFELm1hdGNoKC9eW2EtekEtWl9dW2EtekEtWjAtOV9dKiQvKSYmIUcoRCkpcmV0dXJue3N0YXR1czohMSxtc2c6IlRhYmxlIG5hbWUgc2hvdWxkIGJlIGFscGhhbnVtZXJpYy4ifTtpZihELmxlbmd0aD4zMilyZXR1cm57c3RhdHVzOiExLG1zZzoiTWF4aW11bSBsZW5ndGgg''@;'; put 'put ''Zm9yIHRhYmxlIG5hbWUgY291bGQgYmUgMzIgY2hhcmFjdGVycy4ifTtpZigiQXJyYXkiIT09SShqW0RdKSYmIUcoRCkpcmV0dXJue3N0YXR1czohMSxtc2c6Ty5JTlZBTElEX1RBQkxFX1NUUlVDVFVSRX07Zm9yKHZhciBUPTAsRT1qW0RdO1Q8RS5sZW5ndGg7VCsrKXt2YXIgej1FW1RdO2lm''@;'; put 'put ''KCJvYmplY3QiIT09SSh6KSlyZXR1cm57c3RhdHVzOiExLG1zZzoiVGFibGUgIi5jb25jYXQoRCwiIGNvbnRhaW5zIGludmFsaWQgc3RydWN0dXJlLiAiKS5jb25jYXQoTy5NT1JFX0lORk8pfTtmb3IodmFyIE49MCxCPU9iamVjdC5rZXlzKHopO048Qi5sZW5ndGg7TisrKXt2YXIgWj1CW05d''@;'; put 'put ''O2lmKHZvaWQgMD09PXpbWl0pcmV0dXJue3N0YXR1czohMSxtc2c6IkEgcm93IGluIHRhYmxlICIuY29uY2F0KEQsIiBjb250YWlucyBpbnZhbGlkIHZhbHVlLiBDYW4ndCBhc3NpZ24gdW5kZWZpbmVkIHRvICIpLmNvbmNhdChaLCIuIil9fX19cmV0dXJue3N0YXR1czohMCxtc2c6IiJ9fTt2''@;'; put 'put ''YXIgST1mdW5jdGlvbihqKXtyZXR1cm4gQXJyYXkuaXNBcnJheShqKT8iQXJyYXkiOnR5cGVvZiBqfX0sODk4MTooTSxPKT0+eyJ1c2Ugc3RyaWN0IjtPLmZyb21DYWxsYmFjaz1mdW5jdGlvbihJKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLmope2lmKCJmdW5j''@;'; put 'put ''dGlvbiIhPXR5cGVvZiBqW2oubGVuZ3RoLTFdKXJldHVybiBuZXcgUHJvbWlzZSgoRyxEKT0+e0kuY2FsbCh0aGlzLC4uLmosKFQsRSk9Pm51bGwhPVQ/RChUKTpHKEUpKX0pO0kuYXBwbHkodGhpcyxqKX0sIm5hbWUiLHt2YWx1ZTpJLm5hbWV9KX0sTy5mcm9tUHJvbWlzZT1mdW5jdGlvbihJ''@;'; put 'put ''KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLmope2NvbnN0IEc9altqLmxlbmd0aC0xXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgRylyZXR1cm4gSS5hcHBseSh0aGlzLGopO0kuYXBwbHkodGhpcyxqLnNsaWNlKDAsLTEpKS50aGVuKEQ9PkcobnVsbCxEKSxHKX0s''@;'; put 'put ''Im5hbWUiLHt2YWx1ZTpJLm5hbWV9KX19LDQ1NjQ6KE0sTyxJKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaj1JKDc0MTgpLEc9SSg3MTI5KSxEPS9eW1x4MDAtXHgyMFx1MDBhMFx1MTY4MFx1MjAwMC1cdTIwMGFcdTIwMjhcdTIwMjlcdTIwMmZcdTIwNWZcdTMwMDBcdWZlZmZdKy8sVD0vW1xuXHJc''@;'; put 'put ''dF0vZyxFPS9eW0EtWmEtel1bQS1aYS16MC05Ky0uXSo6XC9cLy8sej0vOlxkKyQvLE49L14oW2Etel1bYS16MC05ListXSo6KT8oXC9cLyk/KFtcXC9dKyk/KFtcU1xzXSopL2ksQj0vXlthLXpBLVpdOi87ZnVuY3Rpb24gWihpZSl7cmV0dXJuKGllfHwiIikudG9TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KEQsIiIpfXZhciBZPVtbIiMiLCJoYXNoIl0sWyI/IiwicXVlcnkiXSxmdW5jdGlvbihpZSx1ZSl7cmV0dXJuIEoodWUucHJvdG9jb2wpP2llLnJlcGxhY2UoL1xcL2csIi8iKTppZX0sWyIvIiwicGF0aG5hbWUiXSxbIkAiLCJhdXRoIiwxXSxbTmFOLCJob3N0Iix2b2lkIDAsMSwxXSxbLzoo''@;'; put 'put ''XGQqKSQvLCJwb3J0Iix2b2lkIDAsMV0sW05hTiwiaG9zdG5hbWUiLHZvaWQgMCwxLDFdXSxVPXtoYXNoOjEscXVlcnk6MX07ZnVuY3Rpb24gcShpZSl7dmFyIHVlLGxlPSh0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09SS5nP0kuZzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSku''@;'; put 'put ''bG9jYXRpb258fHt9LGFlPXt9LFc9dHlwZW9mKGllPWllfHxsZSk7aWYoImJsb2I6Ij09PWllLnByb3RvY29sKWFlPW5ldyByZSh1bmVzY2FwZShpZS5wYXRobmFtZSkse30pO2Vsc2UgaWYoInN0cmluZyI9PT1XKWZvcih1ZSBpbiBhZT1uZXcgcmUoaWUse30pLFUpZGVsZXRlIGFlW3VlXTtl''@;'; put 'put ''bHNlIGlmKCJvYmplY3QiPT09Vyl7Zm9yKHVlIGluIGllKXVlIGluIFV8fChhZVt1ZV09aWVbdWVdKTt2b2lkIDA9PT1hZS5zbGFzaGVzJiYoYWUuc2xhc2hlcz1FLnRlc3QoaWUuaHJlZikpfXJldHVybiBhZX1mdW5jdGlvbiBKKGllKXtyZXR1cm4iZmlsZToiPT09aWV8fCJmdHA6Ij09PWll''@;'; put 'put ''fHwiaHR0cDoiPT09aWV8fCJodHRwczoiPT09aWV8fCJ3czoiPT09aWV8fCJ3c3M6Ij09PWllfWZ1bmN0aW9uIGVlKGllLHVlKXtpZT0oaWU9WihpZSkpLnJlcGxhY2UoVCwiIiksdWU9dWV8fHt9O3ZhciBsZSxhZT1OLmV4ZWMoaWUpLFc9YWVbMV0/YWVbMV0udG9Mb3dlckNhc2UoKToiIixi''@;'; put 'put ''PSEhYWVbMl0sQT0hIWFlWzNdLEY9MDtyZXR1cm4gYj9BPyhsZT1hZVsyXSthZVszXSthZVs0XSxGPWFlWzJdLmxlbmd0aCthZVszXS5sZW5ndGgpOihsZT1hZVsyXSthZVs0XSxGPWFlWzJdLmxlbmd0aCk6QT8obGU9YWVbM10rYWVbNF0sRj1hZVszXS5sZW5ndGgpOmxlPWFlWzRdLCJmaWxl''@;'; put 'put ''OiI9PT1XP0Y+PTImJihsZT1sZS5zbGljZSgyKSk6SihXKT9sZT1hZVs0XTpXP2ImJihsZT1sZS5zbGljZSgyKSk6Rj49MiYmSih1ZS5wcm90b2NvbCkmJihsZT1hZVs0XSkse3Byb3RvY29sOlcsc2xhc2hlczpifHxKKFcpLHNsYXNoZXNDb3VudDpGLHJlc3Q6bGV9fWZ1bmN0aW9uIHJlKGll''@;'; put 'put ''LHVlLGxlKXtpZihpZT0oaWU9WihpZSkpLnJlcGxhY2UoVCwiIiksISh0aGlzIGluc3RhbmNlb2YgcmUpKXJldHVybiBuZXcgcmUoaWUsdWUsbGUpO3ZhciBhZSxXLGIsQSxGLEgsZz1ZLnNsaWNlKCksQz10eXBlb2YgdWUsaz10aGlzLF89MDtmb3IoIm9iamVjdCIhPT1DJiYic3RyaW5nIiE9''@;'; put 'put ''PUMmJihsZT11ZSx1ZT1udWxsKSxsZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGxlJiYobGU9Ry5wYXJzZSksYWU9IShXPWVlKGllfHwiIix1ZT1xKHVlKSkpLnByb3RvY29sJiYhVy5zbGFzaGVzLGsuc2xhc2hlcz1XLnNsYXNoZXN8fGFlJiZ1ZS5zbGFzaGVzLGsucHJvdG9jb2w9Vy5wcm90b2Nv''@;'; put 'put ''bHx8dWUucHJvdG9jb2x8fCIiLGllPVcucmVzdCwoImZpbGU6Ij09PVcucHJvdG9jb2wmJigyIT09Vy5zbGFzaGVzQ291bnR8fEIudGVzdChpZSkpfHwhVy5zbGFzaGVzJiYoVy5wcm90b2NvbHx8Vy5zbGFzaGVzQ291bnQ8Mnx8IUooay5wcm90b2NvbCkpKSYmKGdbM109Wy8oLiopLywicGF0''@;'; put 'put ''aG5hbWUiXSk7XzxnLmxlbmd0aDtfKyspImZ1bmN0aW9uIiE9dHlwZW9mKEE9Z1tfXSk/KEg9QVsxXSwoYj1BWzBdKSE9Yj9rW0hdPWllOiJzdHJpbmciPT10eXBlb2YgYj9+KEY9IkAiPT09Yj9pZS5sYXN0SW5kZXhPZihiKTppZS5pbmRleE9mKGIpKSYmKCJudW1iZXIiPT10eXBlb2YgQVsy''@;'; put 'put ''XT8oa1tIXT1pZS5zbGljZSgwLEYpLGllPWllLnNsaWNlKEYrQVsyXSkpOihrW0hdPWllLnNsaWNlKEYpLGllPWllLnNsaWNlKDAsRikpKTooRj1iLmV4ZWMoaWUpKSYmKGtbSF09RlsxXSxpZT1pZS5zbGljZSgwLEYuaW5kZXgpKSxrW0hdPWtbSF18fGFlJiZBWzNdJiZ1ZVtIXXx8IiIsQVs0''@;'; put 'put ''XSYmKGtbSF09a1tIXS50b0xvd2VyQ2FzZSgpKSk6aWU9QShpZSxrKTtsZSYmKGsucXVlcnk9bGUoay5xdWVyeSkpLGFlJiZ1ZS5zbGFzaGVzJiYiLyIhPT1rLnBhdGhuYW1lLmNoYXJBdCgwKSYmKCIiIT09ay5wYXRobmFtZXx8IiIhPT11ZS5wYXRobmFtZSkmJihrLnBhdGhuYW1lPWZ1bmN0''@;'; put 'put ''aW9uKHAsdyl7aWYoIiI9PT1wKXJldHVybiB3O2Zvcih2YXIgSz0od3x8Ii8iKS5zcGxpdCgiLyIpLnNsaWNlKDAsLTEpLmNvbmNhdChwLnNwbGl0KCIvIikpLHRlPUsubGVuZ3RoLGNlPUtbdGUtMV0saGU9ITEsU2U9MDt0ZS0tOykiLiI9PT1LW3RlXT9LLnNwbGljZSh0ZSwxKToiLi4iPT09''@;'; put 'put ''S1t0ZV0/KEsuc3BsaWNlKHRlLDEpLFNlKyspOlNlJiYoMD09PXRlJiYoaGU9ITApLEsuc3BsaWNlKHRlLDEpLFNlLS0pO3JldHVybiBoZSYmSy51bnNoaWZ0KCIiKSwiLiIhPT1jZSYmIi4uIiE9PWNlfHxLLnB1c2goIiIpLEsuam9pbigiLyIpfShrLnBhdGhuYW1lLHVlLnBhdGhuYW1lKSks''@;'; put 'put ''Ii8iIT09ay5wYXRobmFtZS5jaGFyQXQoMCkmJkooay5wcm90b2NvbCkmJihrLnBhdGhuYW1lPSIvIitrLnBhdGhuYW1lKSxqKGsucG9ydCxrLnByb3RvY29sKXx8KGsuaG9zdD1rLmhvc3RuYW1lLGsucG9ydD0iIiksay51c2VybmFtZT1rLnBhc3N3b3JkPSIiLGsuYXV0aCYmKH4oRj1rLmF1''@;'; put 'put ''dGguaW5kZXhPZigiOiIpKT8oay51c2VybmFtZT1rLmF1dGguc2xpY2UoMCxGKSxrLnVzZXJuYW1lPWVuY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUklDb21wb25lbnQoay51c2VybmFtZSkpLGsucGFzc3dvcmQ9ay5hdXRoLnNsaWNlKEYrMSksay5wYXNzd29yZD1lbmNvZGVVUklDb21wb25l''@;'; put 'put ''bnQoZGVjb2RlVVJJQ29tcG9uZW50KGsucGFzc3dvcmQpKSk6ay51c2VybmFtZT1lbmNvZGVVUklDb21wb25lbnQoZGVjb2RlVVJJQ29tcG9uZW50KGsuYXV0aCkpLGsuYXV0aD1rLnBhc3N3b3JkP2sudXNlcm5hbWUrIjoiK2sucGFzc3dvcmQ6ay51c2VybmFtZSksay5vcmlnaW49ImZpbGU6''@;'; put 'put ''IiE9PWsucHJvdG9jb2wmJkooay5wcm90b2NvbCkmJmsuaG9zdD9rLnByb3RvY29sKyIvLyIray5ob3N0OiJudWxsIixrLmhyZWY9ay50b1N0cmluZygpfXJlLnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKGllLHVlLGxlKXt2YXIgYWU9dGhpcztzd2l0Y2goaWUpe2Nhc2UicXVlcnkiOiJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgdWUmJnVlLmxlbmd0aCYmKHVlPShsZXx8Ry5wYXJzZSkodWUpKSxhZVtpZV09dWU7YnJlYWs7Y2FzZSJwb3J0IjphZVtpZV09dWUsaih1ZSxhZS5wcm90b2NvbCk/dWUmJihhZS5ob3N0PWFlLmhvc3RuYW1lKyI6Iit1ZSk6KGFlLmhvc3Q9YWUuaG9zdG5hbWUsYWVbaWVd''@;'; put 'put ''PSIiKTticmVhaztjYXNlImhvc3RuYW1lIjphZVtpZV09dWUsYWUucG9ydCYmKHVlKz0iOiIrYWUucG9ydCksYWUuaG9zdD11ZTticmVhaztjYXNlImhvc3QiOmFlW2llXT11ZSx6LnRlc3QodWUpPyh1ZT11ZS5zcGxpdCgiOiIpLGFlLnBvcnQ9dWUucG9wKCksYWUuaG9zdG5hbWU9dWUuam9p''@;'; put 'put ''bigiOiIpKTooYWUuaG9zdG5hbWU9dWUsYWUucG9ydD0iIik7YnJlYWs7Y2FzZSJwcm90b2NvbCI6YWUucHJvdG9jb2w9dWUudG9Mb3dlckNhc2UoKSxhZS5zbGFzaGVzPSFsZTticmVhaztjYXNlInBhdGhuYW1lIjpjYXNlImhhc2giOmlmKHVlKXt2YXIgVz0icGF0aG5hbWUiPT09aWU/Ii8i''@;'; put 'put ''OiIjIjthZVtpZV09dWUuY2hhckF0KDApIT09Vz9XK3VlOnVlfWVsc2UgYWVbaWVdPXVlO2JyZWFrO2Nhc2UidXNlcm5hbWUiOmNhc2UicGFzc3dvcmQiOmFlW2llXT1lbmNvZGVVUklDb21wb25lbnQodWUpO2JyZWFrO2Nhc2UiYXV0aCI6dmFyIGI9dWUuaW5kZXhPZigiOiIpO35iPyhhZS51''@;'; put 'put ''c2VybmFtZT11ZS5zbGljZSgwLGIpLGFlLnVzZXJuYW1lPWVuY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUklDb21wb25lbnQoYWUudXNlcm5hbWUpKSxhZS5wYXNzd29yZD11ZS5zbGljZShiKzEpLGFlLnBhc3N3b3JkPWVuY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUklDb21wb25lbnQoYWUu''@;'; put 'put ''cGFzc3dvcmQpKSk6YWUudXNlcm5hbWU9ZW5jb2RlVVJJQ29tcG9uZW50KGRlY29kZVVSSUNvbXBvbmVudCh1ZSkpfWZvcih2YXIgQT0wO0E8WS5sZW5ndGg7QSsrKXt2YXIgRj1ZW0FdO0ZbNF0mJihhZVtGWzFdXT1hZVtGWzFdXS50b0xvd2VyQ2FzZSgpKX1yZXR1cm4gYWUuYXV0aD1hZS5w''@;'; put 'put ''YXNzd29yZD9hZS51c2VybmFtZSsiOiIrYWUucGFzc3dvcmQ6YWUudXNlcm5hbWUsYWUub3JpZ2luPSJmaWxlOiIhPT1hZS5wcm90b2NvbCYmSihhZS5wcm90b2NvbCkmJmFlLmhvc3Q/YWUucHJvdG9jb2wrIi8vIithZS5ob3N0OiJudWxsIixhZS5ocmVmPWFlLnRvU3RyaW5nKCksYWV9LHRv''@;'; put 'put ''U3RyaW5nOmZ1bmN0aW9uKGllKXtpZSYmImZ1bmN0aW9uIj09dHlwZW9mIGllfHwoaWU9Ry5zdHJpbmdpZnkpO3ZhciB1ZSxsZT10aGlzLGFlPWxlLmhvc3QsVz1sZS5wcm90b2NvbDtXJiYiOiIhPT1XLmNoYXJBdChXLmxlbmd0aC0xKSYmKFcrPSI6Iik7dmFyIGI9VysobGUucHJvdG9jb2wm''@;'; put 'put ''JmxlLnNsYXNoZXN8fEoobGUucHJvdG9jb2wpPyIvLyI6IiIpO3JldHVybiBsZS51c2VybmFtZT8oYis9bGUudXNlcm5hbWUsbGUucGFzc3dvcmQmJihiKz0iOiIrbGUucGFzc3dvcmQpLGIrPSJAIik6bGUucGFzc3dvcmQ/KGIrPSI6IitsZS5wYXNzd29yZCxiKz0iQCIpOiJmaWxlOiIhPT1s''@;'; put 'put ''ZS5wcm90b2NvbCYmSihsZS5wcm90b2NvbCkmJiFhZSYmIi8iIT09bGUucGF0aG5hbWUmJihiKz0iQCIpLCgiOiI9PT1hZVthZS5sZW5ndGgtMV18fHoudGVzdChsZS5ob3N0bmFtZSkmJiFsZS5wb3J0KSYmKGFlKz0iOiIpLGIrPWFlK2xlLnBhdGhuYW1lLCh1ZT0ib2JqZWN0Ij09dHlwZW9m''@;'; put 'put ''IGxlLnF1ZXJ5P2llKGxlLnF1ZXJ5KTpsZS5xdWVyeSkmJihiKz0iPyIhPT11ZS5jaGFyQXQoMCk/Ij8iK3VlOnVlKSxsZS5oYXNoJiYoYis9bGUuaGFzaCksYn19LHJlLmV4dHJhY3RQcm90b2NvbD1lZSxyZS5sb2NhdGlvbj1xLHJlLnRyaW1MZWZ0PVoscmUucXM9RyxNLmV4cG9ydHM9cmV9''@;'; put 'put ''LDQ5Mjc6KE0sTyxJKT0+e3ZhciBqPUkoNTEwOCk7ZnVuY3Rpb24gRyhEKXt0cnl7aWYoIUkuZy5sb2NhbFN0b3JhZ2UpcmV0dXJuITF9Y2F0Y2h7cmV0dXJuITF9dmFyIFQ9SS5nLmxvY2FsU3RvcmFnZVtEXTtyZXR1cm4gbnVsbCE9VCYmInRydWUiPT09U3RyaW5nKFQpLnRvTG93ZXJDYXNl''@;'; put 'put ''KCl9TS5leHBvcnRzPWZ1bmN0aW9uKEQsVCl7aWYoRygibm9EZXByZWNhdGlvbiIpKXJldHVybiBEO3ZhciBFPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFFKXtpZihHKCJ0aHJvd0RlcHJlY2F0aW9uIikpdGhyb3cgbmV3IEVycm9yKFQpO0coInRyYWNlRGVwcmVjYXRpb24iKT9qLnRyYWNl''@;'; put 'put ''KFQpOmoud2FybihUKSxFPSEwfXJldHVybiBELmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSwzODQ6TT0+e00uZXhwb3J0cz1mdW5jdGlvbihPKXtyZXR1cm4gTyYmIm9iamVjdCI9PXR5cGVvZiBPJiYiZnVuY3Rpb24iPT10eXBlb2YgTy5jb3B5JiYiZnVuY3Rpb24iPT10eXBlb2YgTy5maWxs''@;'; put 'put ''JiYiZnVuY3Rpb24iPT10eXBlb2YgTy5yZWFkVUludDh9fSw1OTU1OihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSgyNTg0KSxHPUkoODY2MiksRD1JKDY0MzApLFQ9SSg1NjkyKTtmdW5jdGlvbiBFKEspe3JldHVybiBLLmNhbGwuYmluZChLKX12YXIgej10eXBlb2YgQmlnSW50PCJ1''@;'; put 'put ''IixOPXR5cGVvZiBTeW1ib2w8InUiLEI9RShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSxaPUUoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKSxZPUUoU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mKSxVPUUoQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7aWYoeil2YXIgcT1FKEJpZ0ludC5w''@;'; put 'put ''cm90b3R5cGUudmFsdWVPZik7aWYoTil2YXIgSj1FKFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZik7ZnVuY3Rpb24gZWUoSyx0ZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBLKXJldHVybiExO3RyeXtyZXR1cm4gdGUoSyksITB9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHJlKEspe3JldHVybiJb''@;'; put 'put ''b2JqZWN0IE1hcF0iPT09QihLKX1mdW5jdGlvbiBpZShLKXtyZXR1cm4iW29iamVjdCBTZXRdIj09PUIoSyl9ZnVuY3Rpb24gdWUoSyl7cmV0dXJuIltvYmplY3QgV2Vha01hcF0iPT09QihLKX1mdW5jdGlvbiBsZShLKXtyZXR1cm4iW29iamVjdCBXZWFrU2V0XSI9PT1CKEspfWZ1bmN0aW9u''@;'; put 'put ''IGFlKEspe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1CKEspfWZ1bmN0aW9uIFcoSyl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJihhZS53b3JraW5nP2FlKEspOksgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil9ZnVuY3Rpb24gYihLKXtyZXR1cm4iW29iamVjdCBEYXRh''@;'; put 'put ''Vmlld10iPT09QihLKX1mdW5jdGlvbiBBKEspe3JldHVybiB0eXBlb2YgRGF0YVZpZXc8InUiJiYoYi53b3JraW5nP2IoSyk6SyBpbnN0YW5jZW9mIERhdGFWaWV3KX1PLmlzQXJndW1lbnRzT2JqZWN0PWosTy5pc0dlbmVyYXRvckZ1bmN0aW9uPUcsTy5pc1R5cGVkQXJyYXk9VCxPLmlzUHJv''@;'; put 'put ''bWlzZT1mdW5jdGlvbihLKXtyZXR1cm4gdHlwZW9mIFByb21pc2U8InUiJiZLIGluc3RhbmNlb2YgUHJvbWlzZXx8bnVsbCE9PUsmJiJvYmplY3QiPT10eXBlb2YgSyYmImZ1bmN0aW9uIj09dHlwZW9mIEsudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIEsuY2F0Y2h9LE8uaXNBcnJheUJ1ZmZl''@;'; put 'put ''clZpZXc9ZnVuY3Rpb24oSyl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoSyk6VChLKXx8QShLKX0sTy5pc1VpbnQ4QXJyYXk9ZnVuY3Rpb24oSyl7cmV0dXJuIlVpbnQ4QXJyYXkiPT09RChLKX0sTy5pc1VpbnQ4''@;'; put 'put ''Q2xhbXBlZEFycmF5PWZ1bmN0aW9uKEspe3JldHVybiJVaW50OENsYW1wZWRBcnJheSI9PT1EKEspfSxPLmlzVWludDE2QXJyYXk9ZnVuY3Rpb24oSyl7cmV0dXJuIlVpbnQxNkFycmF5Ij09PUQoSyl9LE8uaXNVaW50MzJBcnJheT1mdW5jdGlvbihLKXtyZXR1cm4iVWludDMyQXJyYXkiPT09''@;'; put 'put ''RChLKX0sTy5pc0ludDhBcnJheT1mdW5jdGlvbihLKXtyZXR1cm4iSW50OEFycmF5Ij09PUQoSyl9LE8uaXNJbnQxNkFycmF5PWZ1bmN0aW9uKEspe3JldHVybiJJbnQxNkFycmF5Ij09PUQoSyl9LE8uaXNJbnQzMkFycmF5PWZ1bmN0aW9uKEspe3JldHVybiJJbnQzMkFycmF5Ij09PUQoSyl9''@;'; put 'put ''LE8uaXNGbG9hdDMyQXJyYXk9ZnVuY3Rpb24oSyl7cmV0dXJuIkZsb2F0MzJBcnJheSI9PT1EKEspfSxPLmlzRmxvYXQ2NEFycmF5PWZ1bmN0aW9uKEspe3JldHVybiJGbG9hdDY0QXJyYXkiPT09RChLKX0sTy5pc0JpZ0ludDY0QXJyYXk9ZnVuY3Rpb24oSyl7cmV0dXJuIkJpZ0ludDY0QXJy''@;'; put 'put ''YXkiPT09RChLKX0sTy5pc0JpZ1VpbnQ2NEFycmF5PWZ1bmN0aW9uKEspe3JldHVybiJCaWdVaW50NjRBcnJheSI9PT1EKEspfSxyZS53b3JraW5nPXR5cGVvZiBNYXA8InUiJiZyZShuZXcgTWFwKSxPLmlzTWFwPWZ1bmN0aW9uKEspe3JldHVybiB0eXBlb2YgTWFwPCJ1IiYmKHJlLndvcmtp''@;'; put 'put ''bmc/cmUoSyk6SyBpbnN0YW5jZW9mIE1hcCl9LGllLndvcmtpbmc9dHlwZW9mIFNldDwidSImJmllKG5ldyBTZXQpLE8uaXNTZXQ9ZnVuY3Rpb24oSyl7cmV0dXJuIHR5cGVvZiBTZXQ8InUiJiYoaWUud29ya2luZz9pZShLKTpLIGluc3RhbmNlb2YgU2V0KX0sdWUud29ya2luZz10eXBlb2Yg''@;'; put 'put ''V2Vha01hcDwidSImJnVlKG5ldyBXZWFrTWFwKSxPLmlzV2Vha01hcD1mdW5jdGlvbihLKXtyZXR1cm4gdHlwZW9mIFdlYWtNYXA8InUiJiYodWUud29ya2luZz91ZShLKTpLIGluc3RhbmNlb2YgV2Vha01hcCl9LGxlLndvcmtpbmc9dHlwZW9mIFdlYWtTZXQ8InUiJiZsZShuZXcgV2Vha1Nl''@;'; put 'put ''dCksTy5pc1dlYWtTZXQ9ZnVuY3Rpb24oSyl7cmV0dXJuIGxlKEspfSxhZS53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJmFlKG5ldyBBcnJheUJ1ZmZlciksTy5pc0FycmF5QnVmZmVyPVcsYi53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJnR5cGVvZiBEYXRhVmlldzwi''@;'; put 'put ''dSImJmIobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSwwLDEpKSxPLmlzRGF0YVZpZXc9QTt2YXIgRj10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiP1NoYXJlZEFycmF5QnVmZmVyOnZvaWQgMDtmdW5jdGlvbiBIKEspe3JldHVybiJbb2JqZWN0IFNoYXJlZEFycmF5QnVmZmVy''@;'; put 'put ''XSI9PT1CKEspfWZ1bmN0aW9uIGcoSyl7cmV0dXJuIHZvaWQgMCE9PUYmJih2b2lkIDA9PT1ILndvcmtpbmcmJihILndvcmtpbmc9SChuZXcgRikpLEgud29ya2luZz9IKEspOksgaW5zdGFuY2VvZiBGKX1mdW5jdGlvbiBDKEspe3JldHVybiBlZShLLFopfWZ1bmN0aW9uIGsoSyl7cmV0dXJu''@;'; put 'put ''IGVlKEssWSl9ZnVuY3Rpb24gXyhLKXtyZXR1cm4gZWUoSyxVKX1mdW5jdGlvbiBwKEspe3JldHVybiB6JiZlZShLLHEpfWZ1bmN0aW9uIHcoSyl7cmV0dXJuIE4mJmVlKEssSil9Ty5pc1NoYXJlZEFycmF5QnVmZmVyPWcsTy5pc0FzeW5jRnVuY3Rpb249ZnVuY3Rpb24oSyl7cmV0dXJuIltv''@;'; put 'put ''YmplY3QgQXN5bmNGdW5jdGlvbl0iPT09QihLKX0sTy5pc01hcEl0ZXJhdG9yPWZ1bmN0aW9uKEspe3JldHVybiJbb2JqZWN0IE1hcCBJdGVyYXRvcl0iPT09QihLKX0sTy5pc1NldEl0ZXJhdG9yPWZ1bmN0aW9uKEspe3JldHVybiJbb2JqZWN0IFNldCBJdGVyYXRvcl0iPT09QihLKX0sTy5p''@;'; put 'put ''c0dlbmVyYXRvck9iamVjdD1mdW5jdGlvbihLKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIj09PUIoSyl9LE8uaXNXZWJBc3NlbWJseUNvbXBpbGVkTW9kdWxlPWZ1bmN0aW9uKEspe3JldHVybiJbb2JqZWN0IFdlYkFzc2VtYmx5Lk1vZHVsZV0iPT09QihLKX0sTy5pc051bWJlck9iamVj''@;'; put 'put ''dD1DLE8uaXNTdHJpbmdPYmplY3Q9ayxPLmlzQm9vbGVhbk9iamVjdD1fLE8uaXNCaWdJbnRPYmplY3Q9cCxPLmlzU3ltYm9sT2JqZWN0PXcsTy5pc0JveGVkUHJpbWl0aXZlPWZ1bmN0aW9uKEspe3JldHVybiBDKEspfHxrKEspfHxfKEspfHxwKEspfHx3KEspfSxPLmlzQW55QXJyYXlCdWZm''@;'; put 'put ''ZXI9ZnVuY3Rpb24oSyl7cmV0dXJuIHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmKFcoSyl8fGcoSykpfSxbImlzUHJveHkiLCJpc0V4dGVybmFsIiwiaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKEspe09iamVjdC5kZWZpbmVQcm9wZXJ0eShPLEsse2VudW1lcmFi''@;'; put 'put ''bGU6ITEsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoSysiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdXNlcmxhbmQiKX19KX0pfSw5NTM5OihNLE8sSSk9Pnt2YXIgaj1JKDQxNTUpLEc9SSg1MTA4KSxEPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzfHxmdW5jdGlvbihL''@;'; put 'put ''KXtmb3IodmFyIHRlPU9iamVjdC5rZXlzKEspLGNlPXt9LGhlPTA7aGU8dGUubGVuZ3RoO2hlKyspY2VbdGVbaGVdXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEssdGVbaGVdKTtyZXR1cm4gY2V9LFQ9LyVbc2RqJV0vZztPLmZvcm1hdD1mdW5jdGlvbihLKXtpZighbGUoSykp''@;'; put 'put ''e2Zvcih2YXIgdGU9W10sY2U9MDtjZTxhcmd1bWVudHMubGVuZ3RoO2NlKyspdGUucHVzaChCKGFyZ3VtZW50c1tjZV0pKTtyZXR1cm4gdGUuam9pbigiICIpfWNlPTE7Zm9yKHZhciBoZT1hcmd1bWVudHMsU2U9aGUubGVuZ3RoLExlPVN0cmluZyhLKS5yZXBsYWNlKFQsZnVuY3Rpb24oeGUp''@;'; put 'put ''e2lmKCIlJSI9PT14ZSlyZXR1cm4iJSI7aWYoY2U+PVNlKXJldHVybiB4ZTtzd2l0Y2goeGUpe2Nhc2UiJXMiOnJldHVybiBTdHJpbmcoaGVbY2UrK10pO2Nhc2UiJWQiOnJldHVybiBOdW1iZXIoaGVbY2UrK10pO2Nhc2UiJWoiOnRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoaGVbY2UrK10p''@;'; put 'put ''fWNhdGNoe3JldHVybiJbQ2lyY3VsYXJdIn1kZWZhdWx0OnJldHVybiB4ZX19KSxIZT1oZVtjZV07Y2U8U2U7SGU9aGVbKytjZV0paWUoSGUpfHwhYihIZSk/TGUrPSIgIitIZTpMZSs9IiAiK0IoSGUpO3JldHVybiBMZX0sTy5kZXByZWNhdGU9ZnVuY3Rpb24oSyx0ZSl7aWYodm9pZCAwIT09''@;'; put 'put ''aiYmITA9PT1qLm5vRGVwcmVjYXRpb24pcmV0dXJuIEs7aWYodm9pZCAwPT09ailyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTy5kZXByZWNhdGUoSyx0ZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgY2U9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWNlKXtpZihqLnRocm93RGVwcmVj''@;'; put 'put ''YXRpb24pdGhyb3cgbmV3IEVycm9yKHRlKTtqLnRyYWNlRGVwcmVjYXRpb24/Ry50cmFjZSh0ZSk6Ry5lcnJvcih0ZSksY2U9ITB9cmV0dXJuIEsuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07dmFyIEU9e30sej0vXiQvO2lmKGouZW52Lk5PREVfREVCVUcpe3ZhciBOPWouZW52Lk5PREVfREVC''@;'; put 'put ''VUc7Tj1OLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrPy5dL2csIlxcJCYiKS5yZXBsYWNlKC9cKi9nLCIuKiIpLnJlcGxhY2UoLywvZywiJHxeIikudG9VcHBlckNhc2UoKSx6PW5ldyBSZWdFeHAoIl4iK04rIiQiLCJpIil9ZnVuY3Rpb24gQihLLHRlKXt2YXIgY2U9e3NlZW46W10sc3R5bGl6''@;'; put 'put ''ZTpZfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKGNlLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD49NCYmKGNlLmNvbG9ycz1hcmd1bWVudHNbM10pLHJlKHRlKT9jZS5zaG93SGlkZGVuPXRlOnRlJiZPLl9leHRlbmQoY2UsdGUpLGFlKGNlLnNob3dIaWRkZW4p''@;'; put 'put ''JiYoY2Uuc2hvd0hpZGRlbj0hMSksYWUoY2UuZGVwdGgpJiYoY2UuZGVwdGg9MiksYWUoY2UuY29sb3JzKSYmKGNlLmNvbG9ycz0hMSksYWUoY2UuY3VzdG9tSW5zcGVjdCkmJihjZS5jdXN0b21JbnNwZWN0PSEwKSxjZS5jb2xvcnMmJihjZS5zdHlsaXplPVopLFUoY2UsSyxjZS5kZXB0aCl9''@;'; put 'put ''ZnVuY3Rpb24gWihLLHRlKXt2YXIgY2U9Qi5zdHlsZXNbdGVdO3JldHVybiBjZT8iXHgxYlsiK0IuY29sb3JzW2NlXVswXSsibSIrSysiXHgxYlsiK0IuY29sb3JzW2NlXVsxXSsibSI6S31mdW5jdGlvbiBZKEssdGUpe3JldHVybiBLfWZ1bmN0aW9uIFUoSyx0ZSxjZSl7aWYoSy5jdXN0b21J''@;'; put 'put ''bnNwZWN0JiZ0ZSYmSCh0ZS5pbnNwZWN0KSYmdGUuaW5zcGVjdCE9PU8uaW5zcGVjdCYmKCF0ZS5jb25zdHJ1Y3Rvcnx8dGUuY29uc3RydWN0b3IucHJvdG90eXBlIT09dGUpKXt2YXIgaGU9dGUuaW5zcGVjdChjZSxLKTtyZXR1cm4gbGUoaGUpfHwoaGU9VShLLGhlLGNlKSksaGV9dmFyIFNl''@;'; put 'put ''PWZ1bmN0aW9uKHFlLG90KXtpZihhZShvdCkpcmV0dXJuIHFlLnN0eWxpemUoInVuZGVmaW5lZCIsInVuZGVmaW5lZCIpO2lmKGxlKG90KSl7dmFyIEZlPSInIitKU09OLnN0cmluZ2lmeShvdCkucmVwbGFjZSgvXiJ8IiQvZywiIikucmVwbGFjZSgvJy9nLCJcXCciKS5yZXBsYWNlKC9cXCIv''@;'; put 'put ''ZywnIicpKyInIjtyZXR1cm4gcWUuc3R5bGl6ZShGZSwic3RyaW5nIil9cmV0dXJuIHVlKG90KT9xZS5zdHlsaXplKCIiK290LCJudW1iZXIiKTpyZShvdCk/cWUuc3R5bGl6ZSgiIitvdCwiYm9vbGVhbiIpOmllKG90KT9xZS5zdHlsaXplKCJudWxsIiwibnVsbCIpOnZvaWQgMH0oSyx0ZSk7''@;'; put 'put ''aWYoU2UpcmV0dXJuIFNlO3ZhciBvdCxMZT1PYmplY3Qua2V5cyh0ZSksSGU9KG90PXt9LExlLmZvckVhY2goZnVuY3Rpb24oRmUsd2Upe290W0ZlXT0hMH0pLG90KTtpZihLLnNob3dIaWRkZW4mJihMZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZSkpLEYodGUpJiYoTGUuaW5kZXhP''@;'; put 'put ''ZigibWVzc2FnZSIpPj0wfHxMZS5pbmRleE9mKCJkZXNjcmlwdGlvbiIpPj0wKSlyZXR1cm4gcSh0ZSk7aWYoMD09PUxlLmxlbmd0aCl7aWYoSCh0ZSkpcmV0dXJuIEsuc3R5bGl6ZSgiW0Z1bmN0aW9uIisodGUubmFtZT8iOiAiK3RlLm5hbWU6IiIpKyJdIiwic3BlY2lhbCIpO2lmKFcodGUp''@;'; put 'put ''KXJldHVybiBLLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlKSwicmVnZXhwIik7aWYoQSh0ZSkpcmV0dXJuIEsuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlKSwiZGF0ZSIpO2lmKEYodGUpKXJldHVybiBxKHRlKX12YXIgRGUsQmU9IiIs''@;'; put 'put ''R2U9ITEsVWU9WyJ7IiwifSJdO3JldHVybiBlZSh0ZSkmJihHZT0hMCxVZT1bIlsiLCJdIl0pLEgodGUpJiYoQmU9IiBbRnVuY3Rpb24iKyh0ZS5uYW1lPyI6ICIrdGUubmFtZToiIikrIl0iKSxXKHRlKSYmKEJlPSIgIitSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGUpKSxBKHRl''@;'; put 'put ''KSYmKEJlPSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHRlKSksRih0ZSkmJihCZT0iICIrcSh0ZSkpLDAhPT1MZS5sZW5ndGh8fEdlJiYwIT10ZS5sZW5ndGg/Y2U8MD9XKHRlKT9LLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlKSwicmVnZXhw''@;'; put 'put ''Iik6Sy5zdHlsaXplKCJbT2JqZWN0XSIsInNwZWNpYWwiKTooSy5zZWVuLnB1c2godGUpLERlPUdlP2Z1bmN0aW9uKHFlLG90LEZlLHdlLEVlKXtmb3IodmFyIEllPVtdLFhlPTAsdHQ9b3QubGVuZ3RoO1hlPHR0OysrWGUpXyhvdCxTdHJpbmcoWGUpKT9JZS5wdXNoKEoocWUsb3QsRmUsd2Us''@;'; put 'put ''U3RyaW5nKFhlKSwhMCkpOkllLnB1c2goIiIpO3JldHVybiBFZS5mb3JFYWNoKGZ1bmN0aW9uKFplKXtaZS5tYXRjaCgvXlxkKyQvKXx8SWUucHVzaChKKHFlLG90LEZlLHdlLFplLCEwKSl9KSxJZX0oSyx0ZSxjZSxIZSxMZSk6TGUubWFwKGZ1bmN0aW9uKHFlKXtyZXR1cm4gSihLLHRlLGNl''@;'; put 'put ''LEhlLHFlLEdlKX0pLEsuc2Vlbi5wb3AoKSxmdW5jdGlvbihxZSxvdCxGZSl7cmV0dXJuIHFlLnJlZHVjZShmdW5jdGlvbihFZSxJZSl7cmV0dXJuIEllLmluZGV4T2YoIlxuIiksRWUrSWUucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIikubGVuZ3RoKzF9LDApPjYwP0ZlWzBdKygiIj09''@;'; put 'put ''PW90PyIiOm90KyJcbiAiKSsiICIrcWUuam9pbigiLFxuICAiKSsiICIrRmVbMV06RmVbMF0rb3QrIiAiK3FlLmpvaW4oIiwgIikrIiAiK0ZlWzFdfShEZSxCZSxVZSkpOlVlWzBdK0JlK1VlWzFdfWZ1bmN0aW9uIHEoSyl7cmV0dXJuIlsiK0Vycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxs''@;'; put 'put ''KEspKyJdIn1mdW5jdGlvbiBKKEssdGUsY2UsaGUsU2UsTGUpe3ZhciBIZSx4ZSxEZTtpZigoRGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0ZSxTZSl8fHt2YWx1ZTp0ZVtTZV19KS5nZXQ/eGU9Sy5zdHlsaXplKERlLnNldD8iW0dldHRlci9TZXR0ZXJdIjoiW0dldHRlcl0i''@;'; put 'put ''LCJzcGVjaWFsIik6RGUuc2V0JiYoeGU9Sy5zdHlsaXplKCJbU2V0dGVyXSIsInNwZWNpYWwiKSksXyhoZSxTZSl8fChIZT0iWyIrU2UrIl0iKSx4ZXx8KEsuc2Vlbi5pbmRleE9mKERlLnZhbHVlKTwwPyh4ZT1pZShjZSk/VShLLERlLnZhbHVlLG51bGwpOlUoSyxEZS52YWx1ZSxjZS0xKSku''@;'; put 'put ''aW5kZXhPZigiXG4iKT4tMSYmKHhlPUxlP3hlLnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihCZSl7cmV0dXJuIiAgIitCZX0pLmpvaW4oIlxuIikuc2xpY2UoMik6IlxuIit4ZS5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24oQmUpe3JldHVybiIgICAiK0JlfSkuam9pbigiXG4iKSk6eGU9Sy5z''@;'; put 'put ''dHlsaXplKCJbQ2lyY3VsYXJdIiwic3BlY2lhbCIpKSxhZShIZSkpe2lmKExlJiZTZS5tYXRjaCgvXlxkKyQvKSlyZXR1cm4geGU7KEhlPUpTT04uc3RyaW5naWZ5KCIiK1NlKSkubWF0Y2goL14iKFthLXpBLVpfXVthLXpBLVpfMC05XSopIiQvKT8oSGU9SGUuc2xpY2UoMSwtMSksSGU9Sy5z''@;'; put 'put ''dHlsaXplKEhlLCJuYW1lIikpOihIZT1IZS5yZXBsYWNlKC8nL2csIlxcJyIpLnJlcGxhY2UoL1xcIi9nLCciJykucmVwbGFjZSgvKF4ifCIkKS9nLCInIiksSGU9Sy5zdHlsaXplKEhlLCJzdHJpbmciKSl9cmV0dXJuIEhlKyI6ICIreGV9ZnVuY3Rpb24gZWUoSyl7cmV0dXJuIEFycmF5Lmlz''@;'; put 'put ''QXJyYXkoSyl9ZnVuY3Rpb24gcmUoSyl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgS31mdW5jdGlvbiBpZShLKXtyZXR1cm4gbnVsbD09PUt9ZnVuY3Rpb24gdWUoSyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBLfWZ1bmN0aW9uIGxlKEspe3JldHVybiJzdHJpbmciPT10eXBlb2YgS31mdW5j''@;'; put 'put ''dGlvbiBhZShLKXtyZXR1cm4gdm9pZCAwPT09S31mdW5jdGlvbiBXKEspe3JldHVybiBiKEspJiYiW29iamVjdCBSZWdFeHBdIj09PWcoSyl9ZnVuY3Rpb24gYihLKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIEsmJm51bGwhPT1LfWZ1bmN0aW9uIEEoSyl7cmV0dXJuIGIoSykmJiJbb2JqZWN0''@;'; put 'put ''IERhdGVdIj09PWcoSyl9ZnVuY3Rpb24gRihLKXtyZXR1cm4gYihLKSYmKCJbb2JqZWN0IEVycm9yXSI9PT1nKEspfHxLIGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIEgoSyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEt9ZnVuY3Rpb24gZyhLKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlw''@;'; put 'put ''ZS50b1N0cmluZy5jYWxsKEspfWZ1bmN0aW9uIEMoSyl7cmV0dXJuIEs8MTA/IjAiK0sudG9TdHJpbmcoMTApOksudG9TdHJpbmcoMTApfU8uZGVidWdsb2c9ZnVuY3Rpb24oSyl7aWYoSz1LLnRvVXBwZXJDYXNlKCksIUVbS10paWYoei50ZXN0KEspKXt2YXIgdGU9ai5waWQ7RVtLXT1mdW5j''@;'; put 'put ''dGlvbigpe3ZhciBjZT1PLmZvcm1hdC5hcHBseShPLGFyZ3VtZW50cyk7Ry5lcnJvcigiJXMgJWQ6ICVzIixLLHRlLGNlKX19ZWxzZSBFW0tdPWZ1bmN0aW9uKCl7fTtyZXR1cm4gRVtLXX0sTy5pbnNwZWN0PUIsQi5jb2xvcnM9e2JvbGQ6WzEsMjJdLGl0YWxpYzpbMywyM10sdW5kZXJsaW5l''@;'; put 'put ''Ols0LDI0XSxpbnZlcnNlOls3LDI3XSx3aGl0ZTpbMzcsMzldLGdyZXk6WzkwLDM5XSxibGFjazpbMzAsMzldLGJsdWU6WzM0LDM5XSxjeWFuOlszNiwzOV0sZ3JlZW46WzMyLDM5XSxtYWdlbnRhOlszNSwzOV0scmVkOlszMSwzOV0seWVsbG93OlszMywzOV19LEIuc3R5bGVzPXtzcGVjaWFs''@;'; put 'put ''OiJjeWFuIixudW1iZXI6InllbGxvdyIsYm9vbGVhbjoieWVsbG93Iix1bmRlZmluZWQ6ImdyZXkiLG51bGw6ImJvbGQiLHN0cmluZzoiZ3JlZW4iLGRhdGU6Im1hZ2VudGEiLHJlZ2V4cDoicmVkIn0sTy50eXBlcz1JKDU5NTUpLE8uaXNBcnJheT1lZSxPLmlzQm9vbGVhbj1yZSxPLmlzTnVs''@;'; put 'put ''bD1pZSxPLmlzTnVsbE9yVW5kZWZpbmVkPWZ1bmN0aW9uKEspe3JldHVybiBudWxsPT1LfSxPLmlzTnVtYmVyPXVlLE8uaXNTdHJpbmc9bGUsTy5pc1N5bWJvbD1mdW5jdGlvbihLKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIEt9LE8uaXNVbmRlZmluZWQ9YWUsTy5pc1JlZ0V4cD1XLE8udHlw''@;'; put 'put ''ZXMuaXNSZWdFeHA9VyxPLmlzT2JqZWN0PWIsTy5pc0RhdGU9QSxPLnR5cGVzLmlzRGF0ZT1BLE8uaXNFcnJvcj1GLE8udHlwZXMuaXNOYXRpdmVFcnJvcj1GLE8uaXNGdW5jdGlvbj1ILE8uaXNQcmltaXRpdmU9ZnVuY3Rpb24oSyl7cmV0dXJuIG51bGw9PT1LfHwiYm9vbGVhbiI9PXR5cGVv''@;'; put 'put ''ZiBLfHwibnVtYmVyIj09dHlwZW9mIEt8fCJzdHJpbmciPT10eXBlb2YgS3x8InN5bWJvbCI9PXR5cGVvZiBLfHx2b2lkIDA9PT1LfSxPLmlzQnVmZmVyPUkoMzg0KTt2YXIgaz1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5v''@;'; put 'put ''diIsIkRlYyJdO2Z1bmN0aW9uIF8oSyx0ZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChLLHRlKX1PLmxvZz1mdW5jdGlvbigpe3ZhciBLLHRlO0cubG9nKCIlcyAtICVzIiwodGU9W0MoKEs9bmV3IERhdGUpLmdldEhvdXJzKCkpLEMoSy5nZXRNaW51dGVz''@;'; put 'put ''KCkpLEMoSy5nZXRTZWNvbmRzKCkpXS5qb2luKCI6IiksW0suZ2V0RGF0ZSgpLGtbSy5nZXRNb250aCgpXSx0ZV0uam9pbigiICIpKSxPLmZvcm1hdC5hcHBseShPLGFyZ3VtZW50cykpfSxPLmluaGVyaXRzPUkoNTcxNyksTy5fZXh0ZW5kPWZ1bmN0aW9uKEssdGUpe2lmKCF0ZXx8IWIodGUp''@;'; put 'put ''KXJldHVybiBLO2Zvcih2YXIgY2U9T2JqZWN0LmtleXModGUpLGhlPWNlLmxlbmd0aDtoZS0tOylLW2NlW2hlXV09dGVbY2VbaGVdXTtyZXR1cm4gS307dmFyIHA9dHlwZW9mIFN5bWJvbDwidSI/U3ltYm9sKCJ1dGlsLnByb21pc2lmeS5jdXN0b20iKTp2b2lkIDA7ZnVuY3Rpb24gdyhLLHRl''@;'; put 'put ''KXtpZighSyl7dmFyIGNlPW5ldyBFcnJvcigiUHJvbWlzZSB3YXMgcmVqZWN0ZWQgd2l0aCBhIGZhbHN5IHZhbHVlIik7Y2UucmVhc29uPUssSz1jZX1yZXR1cm4gdGUoSyl9Ty5wcm9taXNpZnk9ZnVuY3Rpb24oSyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEspdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cignVGhlICJvcmlnaW5hbCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7aWYocCYmS1twXSl7dmFyIHRlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZih0ZT1LW3BdKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInV0aWwucHJvbWlzaWZ5LmN1c3RvbSIgYXJndW1lbnQgbXVz''@;'; put 'put ''dCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0ZSxwLHt2YWx1ZTp0ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHRlfWZ1bmN0aW9uIHRlKCl7Zm9yKHZhciBjZSxoZSxTZT1uZXcgUHJvbWlzZShmdW5jdGlv''@;'; put 'put ''bih4ZSxEZSl7Y2U9eGUsaGU9RGV9KSxMZT1bXSxIZT0wO0hlPGFyZ3VtZW50cy5sZW5ndGg7SGUrKylMZS5wdXNoKGFyZ3VtZW50c1tIZV0pO0xlLnB1c2goZnVuY3Rpb24oeGUsRGUpe3hlP2hlKHhlKTpjZShEZSl9KTt0cnl7Sy5hcHBseSh0aGlzLExlKX1jYXRjaCh4ZSl7aGUoeGUpfXJl''@;'; put 'put ''dHVybiBTZX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHRlLE9iamVjdC5nZXRQcm90b3R5cGVPZihLKSkscCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHRlLHAse3ZhbHVlOnRlLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy''@;'; put 'put ''b3BlcnRpZXModGUsRChLKSl9LE8ucHJvbWlzaWZ5LmN1c3RvbT1wLE8uY2FsbGJhY2tpZnk9ZnVuY3Rpb24oSyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEspdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJvcmlnaW5hbCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7ZnVu''@;'; put 'put ''Y3Rpb24gdGUoKXtmb3IodmFyIGNlPVtdLGhlPTA7aGU8YXJndW1lbnRzLmxlbmd0aDtoZSsrKWNlLnB1c2goYXJndW1lbnRzW2hlXSk7dmFyIFNlPWNlLnBvcCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBTZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgbGFzdCBhcmd1bWVudCBtdXN0IGJl''@;'; put 'put ''IG9mIHR5cGUgRnVuY3Rpb24iKTt2YXIgTGU9dGhpcyxIZT1mdW5jdGlvbigpe3JldHVybiBTZS5hcHBseShMZSxhcmd1bWVudHMpfTtLLmFwcGx5KHRoaXMsY2UpLnRoZW4oZnVuY3Rpb24oeGUpe2oubmV4dFRpY2soSGUuYmluZChudWxsLG51bGwseGUpKX0sZnVuY3Rpb24oeGUpe2oubmV4''@;'; put 'put ''dFRpY2sody5iaW5kKG51bGwseGUsSGUpKX0pfXJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YodGUsT2JqZWN0LmdldFByb3RvdHlwZU9mKEspKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0ZSxEKEspKSx0ZX19LDQ4MTooTSxPLEkpPT57IWZ1bmN0aW9uKGopeyJ1c2Ugc3RyaWN0Ijtq''@;'; put 'put ''LmV4cG9ydHMuaXNfdXJpPUQsai5leHBvcnRzLmlzX2h0dHBfdXJpPVQsai5leHBvcnRzLmlzX2h0dHBzX3VyaT1FLGouZXhwb3J0cy5pc193ZWJfdXJpPXosai5leHBvcnRzLmlzVXJpPUQsai5leHBvcnRzLmlzSHR0cFVyaT1ULGouZXhwb3J0cy5pc0h0dHBzVXJpPUUsai5leHBvcnRzLmlz''@;'; put 'put ''V2ViVXJpPXo7dmFyIEc9ZnVuY3Rpb24oTil7cmV0dXJuIE4ubWF0Y2goLyg/OihbXjpcLz8jXSspOik/KD86XC9cLyhbXlwvPyNdKikpPyhbXj8jXSopKD86XD8oW14jXSopKT8oPzojKC4qKSk/Lyl9O2Z1bmN0aW9uIEQoTil7aWYoTiYmIS9bXmEtejAtOVw6XC9cP1wjXFtcXVxAXCFcJFwm''@;'; put 'put ''XCdcKFwpXCpcK1wsXDtcPVwuXC1cX1x+XCVdL2kudGVzdChOKSYmIS8lW14wLTlhLWZdL2kudGVzdChOKSYmIS8lWzAtOWEtZl0oOj9bXjAtOWEtZl18JCkvaS50ZXN0KE4pKXt2YXIgQixaLFksVSxxLEo9IiIsZWU9IiI7aWYoSj0oQj1HKE4pKVsxXSxaPUJbMl0sWT1CWzNdLFU9Qls0XSxx''@;'; put 'put ''PUJbNV0sSiYmSi5sZW5ndGgmJlkubGVuZ3RoPj0wKXtpZihaJiZaLmxlbmd0aCl7aWYoMCE9PVkubGVuZ3RoJiYhL15cLy8udGVzdChZKSlyZXR1cm59ZWxzZSBpZigvXlwvXC8vLnRlc3QoWSkpcmV0dXJuO2lmKC9eW2Etel1bYS16MC05XCtcLVwuXSokLy50ZXN0KEoudG9Mb3dlckNhc2Uo''@;'; put 'put ''KSkpcmV0dXJuIGVlKz1KKyI6IixaJiZaLmxlbmd0aCYmKGVlKz0iLy8iK1opLGVlKz1ZLFUmJlUubGVuZ3RoJiYoZWUrPSI/IitVKSxxJiZxLmxlbmd0aCYmKGVlKz0iIyIrcSksZWV9fX1mdW5jdGlvbiBUKE4sQil7aWYoRChOKSl7dmFyIFosWSxVLHEsSj0iIixlZT0iIixyZT0iIixpZT0i''@;'; put 'put ''IjtpZihKPShaPUcoTikpWzFdLGVlPVpbMl0sWT1aWzNdLFU9Wls0XSxxPVpbNV0sSil7aWYoQil7aWYoImh0dHBzIiE9Si50b0xvd2VyQ2FzZSgpKXJldHVybn1lbHNlIGlmKCJodHRwIiE9Si50b0xvd2VyQ2FzZSgpKXJldHVybjtpZihlZSlyZXR1cm4vOihcZCspJC8udGVzdChlZSkmJihy''@;'; put 'put ''ZT1lZS5tYXRjaCgvOihcZCspJC8pWzBdLGVlPWVlLnJlcGxhY2UoLzpcZCskLywiIikpLGllKz1KKyI6IixpZSs9Ii8vIitlZSxyZSYmKGllKz1yZSksaWUrPVksVSYmVS5sZW5ndGgmJihpZSs9Ij8iK1UpLHEmJnEubGVuZ3RoJiYoaWUrPSIjIitxKSxpZX19fWZ1bmN0aW9uIEUoTil7cmV0''@;'; put 'put ''dXJuIFQoTiwhMCl9ZnVuY3Rpb24geihOKXtyZXR1cm4gVChOKXx8RShOKX19KE09SS5ubWQoTSkpfSw2NDMwOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9SSg0MDI5KSxHPUkoMzA4MyksRD1JKDE5MjQpLFQ9SSg3Mjk2KSxFPUQoIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmciKSx6''@;'; put 'put ''PUkoNjQxMCkoKSxOPXR5cGVvZiBnbG9iYWxUaGlzPiJ1Ij9JLmc6Z2xvYmFsVGhpcyxCPUcoKSxaPUQoIlN0cmluZy5wcm90b3R5cGUuc2xpY2UiKSxZPXt9LFU9T2JqZWN0LmdldFByb3RvdHlwZU9mO3omJlQmJlUmJmooQixmdW5jdGlvbihKKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgTltK''@;'; put 'put ''XSl7dmFyIGVlPW5ldyBOW0pdO2lmKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBlZSl7dmFyIHJlPVUoZWUpLGllPVQocmUsU3ltYm9sLnRvU3RyaW5nVGFnKTtpZighaWUpe3ZhciB1ZT1VKHJlKTtpZT1UKHVlLFN5bWJvbC50b1N0cmluZ1RhZyl9WVtKXT1pZS5nZXR9fX0pO3ZhciBxPUkoNTY5''@;'; put 'put ''Mik7TS5leHBvcnRzPWZ1bmN0aW9uKEope3JldHVybiEhcShKKSYmKHomJlN5bWJvbC50b1N0cmluZ1RhZyBpbiBKPyhlZT1KLHJlPSExLGooWSxmdW5jdGlvbihpZSx1ZSl7aWYoIXJlKXRyeXt2YXIgbGU9aWUuY2FsbChlZSk7bGU9PT11ZSYmKHJlPWxlKX1jYXRjaHt9fSkscmUpOlooRShK''@;'; put 'put ''KSw4LC0xKSk7dmFyIGVlLHJlfX0sMjQ3OTpNPT57TS5leHBvcnRzPWZ1bmN0aW9uIE8oSSxqKXtpZihJJiZqKXJldHVybiBPKEkpKGopO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBJKXRocm93IG5ldyBUeXBlRXJyb3IoIm5lZWQgd3JhcHBlciBmdW5jdGlvbiIpO3JldHVybiBPYmplY3Qua2V5''@;'; put 'put ''cyhJKS5mb3JFYWNoKGZ1bmN0aW9uKEQpe0dbRF09SVtEXX0pLEc7ZnVuY3Rpb24gRygpe2Zvcih2YXIgRD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksVD0wO1Q8RC5sZW5ndGg7VCsrKURbVF09YXJndW1lbnRzW1RdO3ZhciBFPUkuYXBwbHkodGhpcyxEKSx6PURbRC5sZW5ndGgtMV07''@;'; put 'put ''cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEUmJkUhPT16JiZPYmplY3Qua2V5cyh6KS5mb3JFYWNoKGZ1bmN0aW9uKE4pe0VbTl09eltOXX0pLEV9fX0sOTUwOigpPT57fSw2NjAxOigpPT57fSw5MjE0OigpPT57fSw4NjIzOigpPT57fSw3NzQ4OigpPT57fSw1NTY4OigpPT57fSwyNTM1Oigp''@;'; put 'put ''PT57fSwzNzEwOigpPT57fSw1NDQzOigpPT57fSw0MTI5OigpPT57fSw2NjE5OigpPT57fSw3MTA4OigpPT57fSwyMzYxOigpPT57fSw0NjE2OigpPT57fSw3MjE3OigpPT57fSw4MzczOigpPT57fSwzMDgzOihNLE8sSSk9PnsidXNlIHN0cmljdCI7dmFyIGo9WyJCaWdJbnQ2NEFycmF5Iiwi''@;'; put 'put ''QmlnVWludDY0QXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIkludDhBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiXSxHPXR5cGVvZiBnbG9iYWxUaGlz''@;'; put 'put ''PiJ1Ij9JLmc6Z2xvYmFsVGhpcztNLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIEQ9W10sVD0wO1Q8ai5sZW5ndGg7VCsrKSJmdW5jdGlvbiI9PXR5cGVvZiBHW2pbVF1dJiYoRFtELmxlbmd0aF09altUXSk7cmV0dXJuIER9fSw0OTQ2Ok09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPUpT''@;'; put 'put ''T04ucGFyc2UoJ3siYWVzLTEyOC1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjowLCJtb2RlIjoiRUNCIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xOTItZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MCwibW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJh''@;'; put 'put ''ZXMtMjU2LWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTEyOC1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWNiYyI6''@;'; put 'put ''eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0yNTYtY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTI4Ijp7ImNpcGhlciI6IkFFUyIs''@;'; put 'put ''ImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMTkyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzMjU2Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1v''@;'; put 'put ''ZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTEyOC1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQiIs''@;'; put 'put ''InR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkI4IiwidHlwZSI6''@;'; put 'put ''InN0cmVhbSJ9LCJhZXMtMTkyLWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJl''@;'; put 'put ''YW0ifSwiYWVzLTEyOC1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMTkyLWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNGQjEiLCJ0eXBlIjoic3RyZWFtIn0s''@;'; put 'put ''ImFlcy0yNTYtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5''@;'; put 'put ''Mi1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1vZmIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6Ik9GQiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1jdHIiOnsi''@;'; put 'put ''Y2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jdHIiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTI1Ni1jdHIiOnsiY2lwaGVyIjoi''@;'; put 'put ''QUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNUUiIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTEyOC1nY20iOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxMjgsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn0sImFlcy0xOTItZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6''@;'; put 'put ''MTkyLCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMjU2LWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifX0nKX0sNTIwNzpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1KU09OLnBhcnNlKCd7''@;'; put 'put ''InNoYTIyNFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxYyJ9LCJSU0EtU0hBMjI0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIzMDJkMzAw''@;'; put 'put ''ZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxYyJ9LCJzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSwiUlNBLVNIQTI1NiI6eyJzaWduIjoiZWNkc2Ev''@;'; put 'put ''cnNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAifSwic2hhMzg0V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAw''@;'; put 'put ''NDMwIn0sIlJTQS1TSEEzODQiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwIn0sInNoYTUxMldpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIz''@;'; put 'put ''MDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MCJ9LCJSU0EtU0hBNTEyIjp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MCJ9LCJSU0EtU0hBMSI6eyJzaWduIjoicnNhIiwiaGFz''@;'; put 'put ''aCI6InNoYTEiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMGUwMzAyMWEwNTAwMDQxNCJ9LCJlY2RzYS13aXRoLVNIQTEiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJzaGEyNTYiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sInNoYTIyNCI6''@;'; put 'put ''eyJzaWduIjoiZWNkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIifSwic2hhMzg0Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJzaGE1MTIiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiIn0sIkRTQS1TSEEiOnsic2lnbiI6ImRzYSIs''@;'; put 'put ''Imhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBLVNIQTEiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwiRFNBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTIyNCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTIyNCIsImlk''@;'; put 'put ''IjoiIn0sIkRTQS1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyNTYiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJEU0EtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIi''@;'; put 'put ''fSwiRFNBLVdJVEgtU0hBMzg0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwiRFNBLVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTUxMiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoi''@;'; put 'put ''In0sIkRTQS1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtUklQRU1EMTYwIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIifSwicmlwZW1kMTYwV2l0aFJTQSI6eyJzaWduIjoicnNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoi''@;'; put 'put ''MzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0In0sIlJTQS1SSVBFTUQxNjAiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNCJ9LCJtZDVXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6Im1k''@;'; put 'put ''NSIsImlkIjoiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwIn0sIlJTQS1NRDUiOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9fScpfSwxMzA4Ok09PnsidXNlIHN0cmljdCI7TS5leHBvcnRz''@;'; put 'put ''PUpTT04ucGFyc2UoJ3siMS4zLjEzMi4wLjEwIjoic2VjcDI1NmsxIiwiMS4zLjEzMi4wLjMzIjoicDIyNCIsIjEuMi44NDAuMTAwNDUuMy4xLjEiOiJwMTkyIiwiMS4yLjg0MC4xMDA0NS4zLjEuNyI6InAyNTYiLCIxLjMuMTMyLjAuMzQiOiJwMzg0IiwiMS4zLjEzMi4wLjM1IjoicDUyMSJ9''@;'; put 'put ''Jyl9LDMyMDg6TT0+eyJ1c2Ugc3RyaWN0IjtNLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJPX1JET05MWSI6MCwiT19XUk9OTFkiOjEsIk9fUkRXUiI6MiwiU19JRk1UIjo2MTQ0MCwiU19JRlJFRyI6MzI3NjgsIlNfSUZESVIiOjE2Mzg0LCJTX0lGQ0hSIjo4MTkyLCJTX0lGQkxLIjoyNDU3Niwi''@;'; put 'put ''U19JRklGTyI6NDA5NiwiU19JRkxOSyI6NDA5NjAsIlNfSUZTT0NLIjo0OTE1MiwiT19DUkVBVCI6NTEyLCJPX0VYQ0wiOjIwNDgsIk9fTk9DVFRZIjoxMzEwNzIsIk9fVFJVTkMiOjEwMjQsIk9fQVBQRU5EIjo4LCJPX0RJUkVDVE9SWSI6MTA0ODU3NiwiT19OT0ZPTExPVyI6MjU2LCJPX1NZ''@;'; put 'put ''TkMiOjEyOCwiT19TWU1MSU5LIjoyMDk3MTUyLCJPX05PTkJMT0NLIjo0LCJTX0lSV1hVIjo0NDgsIlNfSVJVU1IiOjI1NiwiU19JV1VTUiI6MTI4LCJTX0lYVVNSIjo2NCwiU19JUldYRyI6NTYsIlNfSVJHUlAiOjMyLCJTX0lXR1JQIjoxNiwiU19JWEdSUCI6OCwiU19JUldYTyI6NywiU19J''@;'; put 'put ''Uk9USCI6NCwiU19JV09USCI6MiwiU19JWE9USCI6MSwiRTJCSUciOjcsIkVBQ0NFUyI6MTMsIkVBRERSSU5VU0UiOjQ4LCJFQUREUk5PVEFWQUlMIjo0OSwiRUFGTk9TVVBQT1JUIjo0NywiRUFHQUlOIjozNSwiRUFMUkVBRFkiOjM3LCJFQkFERiI6OSwiRUJBRE1TRyI6OTQsIkVCVVNZIjox''@;'; put 'put ''NiwiRUNBTkNFTEVEIjo4OSwiRUNISUxEIjoxMCwiRUNPTk5BQk9SVEVEIjo1MywiRUNPTk5SRUZVU0VEIjo2MSwiRUNPTk5SRVNFVCI6NTQsIkVERUFETEsiOjExLCJFREVTVEFERFJSRVEiOjM5LCJFRE9NIjozMywiRURRVU9UIjo2OSwiRUVYSVNUIjoxNywiRUZBVUxUIjoxNCwiRUZCSUci''@;'; put 'put ''OjI3LCJFSE9TVFVOUkVBQ0giOjY1LCJFSURSTSI6OTAsIkVJTFNFUSI6OTIsIkVJTlBST0dSRVNTIjozNiwiRUlOVFIiOjQsIkVJTlZBTCI6MjIsIkVJTyI6NSwiRUlTQ09OTiI6NTYsIkVJU0RJUiI6MjEsIkVMT09QIjo2MiwiRU1GSUxFIjoyNCwiRU1MSU5LIjozMSwiRU1TR1NJWkUiOjQw''@;'; put 'put ''LCJFTVVMVElIT1AiOjk1LCJFTkFNRVRPT0xPTkciOjYzLCJFTkVURE9XTiI6NTAsIkVORVRSRVNFVCI6NTIsIkVORVRVTlJFQUNIIjo1MSwiRU5GSUxFIjoyMywiRU5PQlVGUyI6NTUsIkVOT0RBVEEiOjk2LCJFTk9ERVYiOjE5LCJFTk9FTlQiOjIsIkVOT0VYRUMiOjgsIkVOT0xDSyI6Nzcs''@;'; put 'put ''IkVOT0xJTksiOjk3LCJFTk9NRU0iOjEyLCJFTk9NU0ciOjkxLCJFTk9QUk9UT09QVCI6NDIsIkVOT1NQQyI6MjgsIkVOT1NSIjo5OCwiRU5PU1RSIjo5OSwiRU5PU1lTIjo3OCwiRU5PVENPTk4iOjU3LCJFTk9URElSIjoyMCwiRU5PVEVNUFRZIjo2NiwiRU5PVFNPQ0siOjM4LCJFTk9UU1VQ''@;'; put 'put ''Ijo0NSwiRU5PVFRZIjoyNSwiRU5YSU8iOjYsIkVPUE5PVFNVUFAiOjEwMiwiRU9WRVJGTE9XIjo4NCwiRVBFUk0iOjEsIkVQSVBFIjozMiwiRVBST1RPIjoxMDAsIkVQUk9UT05PU1VQUE9SVCI6NDMsIkVQUk9UT1RZUEUiOjQxLCJFUkFOR0UiOjM0LCJFUk9GUyI6MzAsIkVTUElQRSI6Mjks''@;'; put 'put ''IkVTUkNIIjozLCJFU1RBTEUiOjcwLCJFVElNRSI6MTAxLCJFVElNRURPVVQiOjYwLCJFVFhUQlNZIjoyNiwiRVdPVUxEQkxPQ0siOjM1LCJFWERFViI6MTgsIlNJR0hVUCI6MSwiU0lHSU5UIjoyLCJTSUdRVUlUIjozLCJTSUdJTEwiOjQsIlNJR1RSQVAiOjUsIlNJR0FCUlQiOjYsIlNJR0lP''@;'; put 'put ''VCI6NiwiU0lHQlVTIjoxMCwiU0lHRlBFIjo4LCJTSUdLSUxMIjo5LCJTSUdVU1IxIjozMCwiU0lHU0VHViI6MTEsIlNJR1VTUjIiOjMxLCJTSUdQSVBFIjoxMywiU0lHQUxSTSI6MTQsIlNJR1RFUk0iOjE1LCJTSUdDSExEIjoyMCwiU0lHQ09OVCI6MTksIlNJR1NUT1AiOjE3LCJTSUdUU1RQ''@;'; put 'put ''IjoxOCwiU0lHVFRJTiI6MjEsIlNJR1RUT1UiOjIyLCJTSUdVUkciOjE2LCJTSUdYQ1BVIjoyNCwiU0lHWEZTWiI6MjUsIlNJR1ZUQUxSTSI6MjYsIlNJR1BST0YiOjI3LCJTSUdXSU5DSCI6MjgsIlNJR0lPIjoyMywiU0lHU1lTIjoxMiwiU1NMX09QX0FMTCI6MjE0NzQ4NjcxOSwiU1NMX09Q''@;'; put 'put ''X0FMTE9XX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTiI6MjYyMTQ0LCJTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIjo0MTk0MzA0LCJTU0xfT1BfQ0lTQ09fQU5ZQ09OTkVDVCI6MzI3NjgsIlNTTF9PUF9DT09LSUVfRVhDSEFOR0UiOjgxOTIsIlNTTF9PUF9DUllQVE9QUk9f''@;'; put 'put ''VExTRVhUX0JVRyI6MjE0NzQ4MzY0OCwiU1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUyI6MjA0OCwiU1NMX09QX0VQSEVNRVJBTF9SU0EiOjAsIlNTTF9PUF9MRUdBQ1lfU0VSVkVSX0NPTk5FQ1QiOjQsIlNTTF9PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUiI6MzIsIlNT''@;'; put 'put ''TF9PUF9NSUNST1NPRlRfU0VTU19JRF9CVUciOjEsIlNTTF9PUF9NU0lFX1NTTFYyX1JTQV9QQURESU5HIjowLCJTU0xfT1BfTkVUU0NBUEVfQ0FfRE5fQlVHIjo1MzY4NzA5MTIsIlNTTF9PUF9ORVRTQ0FQRV9DSEFMTEVOR0VfQlVHIjoyLCJTU0xfT1BfTkVUU0NBUEVfREVNT19DSVBIRVJf''@;'; put 'put ''Q0hBTkdFX0JVRyI6MTA3Mzc0MTgyNCwiU1NMX09QX05FVFNDQVBFX1JFVVNFX0NJUEhFUl9DSEFOR0VfQlVHIjo4LCJTU0xfT1BfTk9fQ09NUFJFU1NJT04iOjEzMTA3MiwiU1NMX09QX05PX1FVRVJZX01UVSI6NDA5NiwiU1NMX09QX05PX1NFU1NJT05fUkVTVU1QVElPTl9PTl9SRU5FR09U''@;'; put 'put ''SUFUSU9OIjo2NTUzNiwiU1NMX09QX05PX1NTTHYyIjoxNjc3NzIxNiwiU1NMX09QX05PX1NTTHYzIjozMzU1NDQzMiwiU1NMX09QX05PX1RJQ0tFVCI6MTYzODQsIlNTTF9PUF9OT19UTFN2MSI6NjcxMDg4NjQsIlNTTF9PUF9OT19UTFN2MV8xIjoyNjg0MzU0NTYsIlNTTF9PUF9OT19UTFN2''@;'; put 'put ''MV8yIjoxMzQyMTc3MjgsIlNTTF9PUF9QS0NTMV9DSEVDS18xIjowLCJTU0xfT1BfUEtDUzFfQ0hFQ0tfMiI6MCwiU1NMX09QX1NJTkdMRV9ESF9VU0UiOjEwNDg1NzYsIlNTTF9PUF9TSU5HTEVfRUNESF9VU0UiOjUyNDI4OCwiU1NMX09QX1NTTEVBWV8wODBfQ0xJRU5UX0RIX0JVRyI6MTI4''@;'; put 'put ''LCJTU0xfT1BfU1NMUkVGMl9SRVVTRV9DRVJUX1RZUEVfQlVHIjowLCJTU0xfT1BfVExTX0JMT0NLX1BBRERJTkdfQlVHIjo1MTIsIlNTTF9PUF9UTFNfRDVfQlVHIjoyNTYsIlNTTF9PUF9UTFNfUk9MTEJBQ0tfQlVHIjo4Mzg4NjA4LCJFTkdJTkVfTUVUSE9EX0RTQSI6MiwiRU5HSU5FX01F''@;'; put 'put ''VEhPRF9ESCI6NCwiRU5HSU5FX01FVEhPRF9SQU5EIjo4LCJFTkdJTkVfTUVUSE9EX0VDREgiOjE2LCJFTkdJTkVfTUVUSE9EX0VDRFNBIjozMiwiRU5HSU5FX01FVEhPRF9DSVBIRVJTIjo2NCwiRU5HSU5FX01FVEhPRF9ESUdFU1RTIjoxMjgsIkVOR0lORV9NRVRIT0RfU1RPUkUiOjI1Niwi''@;'; put 'put ''RU5HSU5FX01FVEhPRF9QS0VZX01FVEhTIjo1MTIsIkVOR0lORV9NRVRIT0RfUEtFWV9BU04xX01FVEhTIjoxMDI0LCJFTkdJTkVfTUVUSE9EX0FMTCI6NjU1MzUsIkVOR0lORV9NRVRIT0RfTk9ORSI6MCwiREhfQ0hFQ0tfUF9OT1RfU0FGRV9QUklNRSI6MiwiREhfQ0hFQ0tfUF9OT1RfUFJJ''@;'; put 'put ''TUUiOjEsIkRIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1IiOjQsIkRIX05PVF9TVUlUQUJMRV9HRU5FUkFUT1IiOjgsIk5QTl9FTkFCTEVEIjoxLCJSU0FfUEtDUzFfUEFERElORyI6MSwiUlNBX1NTTFYyM19QQURESU5HIjoyLCJSU0FfTk9fUEFERElORyI6MywiUlNBX1BLQ1MxX09BRVBf''@;'; put 'put ''UEFERElORyI6NCwiUlNBX1g5MzFfUEFERElORyI6NSwiUlNBX1BLQ1MxX1BTU19QQURESU5HIjo2LCJQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQiOjIsIlBPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEIjo0LCJQT0lOVF9DT05WRVJTSU9OX0hZQlJJRCI6NiwiRl9PSyI6MCwiUl9P''@;'; put 'put ''SyI6NCwiV19PSyI6MiwiWF9PSyI6MSwiVVZfVURQX1JFVVNFQUREUiI6NH0nKX0sOTc5OTpNPT57InVzZSBzdHJpY3QiO00uZXhwb3J0cz1KU09OLnBhcnNlKCd7Im1vZHAxIjp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBk''@;'; put 'put ''YzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDIiOnsiZ2Vu''@;'; put 'put ''IjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODVi''@;'; put 'put ''NTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDUiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIx''@;'; put 'put ''NjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2Yjdl''@;'; put 'put ''ZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0''@;'; put 'put ''NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTQiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIz''@;'; put 'put ''Y2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVk''@;'; put 'put ''MzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRl''@;'; put 'put ''MmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRl''@;'; put 'put ''MDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0''@;'; put 'put ''YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNi''@;'; put 'put ''ZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3''@;'; put 'put ''MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0''@;'; put 'put ''ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNiI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzli''@;'; put 'put ''MjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIw''@;'; put 'put ''MDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2Ey''@;'; put 'put ''ZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFl''@;'; put 'put ''NGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRi''@;'; put 'put ''ODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4''@;'; put 'put ''NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTciOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZm''@;'; put 'put ''ZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZi''@;'; put 'put ''MGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMz''@;'; put 'put ''NTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0''@;'; put 'put ''NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAw''@;'; put 'put ''Y2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJi''@;'; put 'put ''YzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1Yzkz''@;'; put 'put ''NDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1''@;'; put 'put ''NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJk''@;'; put 'put ''NDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDVi''@;'; put 'put ''MGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMTgiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0''@;'; put 'put ''MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5''@;'; put 'put ''OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVk''@;'; put 'put ''ZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIw''@;'; put 'put ''OTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAx''@;'; put 'put ''MWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEy''@;'; put 'put ''OTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQx''@;'; put 'put ''MzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVm''@;'; put 'put ''NmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUw''@;'; put 'put ''YWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRkMDczYjkzMWJhM2JjODMyYjY4''@;'; put 'put ''ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2VhMzA2YjRiY2JjODg2MmY4Mzg1''@;'; put 'put ''ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNmYWYzNmJjMzFlY2ZhMjY4MzU5''@;'; put 'put ''MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmIn19Jyl9LDg1OTc6TT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtNLmV4cG9ydHM9e2k4OiI2LjUuNCJ9fSwyNTYyOk09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPUpTT04ucGFyc2UoJ3siMi4xNi44NDAuMS4xMDEuMy40LjEuMSI6ImFlcy0xMjgtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMiI6ImFlcy0xMjgtY2JjIiwiMi4xNi44NDAuMS4x''@;'; put 'put ''MDEuMy40LjEuMyI6ImFlcy0xMjgtb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNCI6ImFlcy0xMjgtY2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjEiOiJhZXMtMTkyLWVjYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyIjoiYWVzLTE5Mi1jYmMiLCIyLjE2Ljg0MC4xLjEwMS4zLjQu''@;'; put 'put ''MS4yMyI6ImFlcy0xOTItb2ZiIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjQiOiJhZXMtMTkyLWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxIjoiYWVzLTI1Ni1lY2IiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MiI6ImFlcy0yNTYtY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDMi''@;'; put 'put ''OiJhZXMtMjU2LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0IjoiYWVzLTI1Ni1jZmIifScpfSwzNzA0Ok09PnsidXNlIHN0cmljdCI7TS5leHBvcnRzPUpTT04ucGFyc2UoJ1siYWMiLCJjb20uYWMiLCJlZHUuYWMiLCJnb3YuYWMiLCJuZXQuYWMiLCJtaWwuYWMiLCJvcmcuYWMiLCJh''@;'; put 'put ''ZCIsIm5vbS5hZCIsImFlIiwiY28uYWUiLCJuZXQuYWUiLCJvcmcuYWUiLCJzY2guYWUiLCJhYy5hZSIsImdvdi5hZSIsIm1pbC5hZSIsImFlcm8iLCJhY2NpZGVudC1pbnZlc3RpZ2F0aW9uLmFlcm8iLCJhY2NpZGVudC1wcmV2ZW50aW9uLmFlcm8iLCJhZXJvYmF0aWMuYWVybyIsImFlcm9j''@;'; put 'put ''bHViLmFlcm8iLCJhZXJvZHJvbWUuYWVybyIsImFnZW50cy5hZXJvIiwiYWlyY3JhZnQuYWVybyIsImFpcmxpbmUuYWVybyIsImFpcnBvcnQuYWVybyIsImFpci1zdXJ2ZWlsbGFuY2UuYWVybyIsImFpcnRyYWZmaWMuYWVybyIsImFpci10cmFmZmljLWNvbnRyb2wuYWVybyIsImFtYnVsYW5j''@;'; put 'put ''ZS5hZXJvIiwiYW11c2VtZW50LmFlcm8iLCJhc3NvY2lhdGlvbi5hZXJvIiwiYXV0aG9yLmFlcm8iLCJiYWxsb29uaW5nLmFlcm8iLCJicm9rZXIuYWVybyIsImNhYS5hZXJvIiwiY2FyZ28uYWVybyIsImNhdGVyaW5nLmFlcm8iLCJjZXJ0aWZpY2F0aW9uLmFlcm8iLCJjaGFtcGlvbnNoaXAu''@;'; put 'put ''YWVybyIsImNoYXJ0ZXIuYWVybyIsImNpdmlsYXZpYXRpb24uYWVybyIsImNsdWIuYWVybyIsImNvbmZlcmVuY2UuYWVybyIsImNvbnN1bHRhbnQuYWVybyIsImNvbnN1bHRpbmcuYWVybyIsImNvbnRyb2wuYWVybyIsImNvdW5jaWwuYWVybyIsImNyZXcuYWVybyIsImRlc2lnbi5hZXJvIiwi''@;'; put 'put ''ZGdjYS5hZXJvIiwiZWR1Y2F0b3IuYWVybyIsImVtZXJnZW5jeS5hZXJvIiwiZW5naW5lLmFlcm8iLCJlbmdpbmVlci5hZXJvIiwiZW50ZXJ0YWlubWVudC5hZXJvIiwiZXF1aXBtZW50LmFlcm8iLCJleGNoYW5nZS5hZXJvIiwiZXhwcmVzcy5hZXJvIiwiZmVkZXJhdGlvbi5hZXJvIiwiZmxp''@;'; put 'put ''Z2h0LmFlcm8iLCJmdWVsLmFlcm8iLCJnbGlkaW5nLmFlcm8iLCJnb3Zlcm5tZW50LmFlcm8iLCJncm91bmRoYW5kbGluZy5hZXJvIiwiZ3JvdXAuYWVybyIsImhhbmdnbGlkaW5nLmFlcm8iLCJob21lYnVpbHQuYWVybyIsImluc3VyYW5jZS5hZXJvIiwiam91cm5hbC5hZXJvIiwiam91cm5h''@;'; put 'put ''bGlzdC5hZXJvIiwibGVhc2luZy5hZXJvIiwibG9naXN0aWNzLmFlcm8iLCJtYWdhemluZS5hZXJvIiwibWFpbnRlbmFuY2UuYWVybyIsIm1lZGlhLmFlcm8iLCJtaWNyb2xpZ2h0LmFlcm8iLCJtb2RlbGxpbmcuYWVybyIsIm5hdmlnYXRpb24uYWVybyIsInBhcmFjaHV0aW5nLmFlcm8iLCJw''@;'; put 'put ''YXJhZ2xpZGluZy5hZXJvIiwicGFzc2VuZ2VyLWFzc29jaWF0aW9uLmFlcm8iLCJwaWxvdC5hZXJvIiwicHJlc3MuYWVybyIsInByb2R1Y3Rpb24uYWVybyIsInJlY3JlYXRpb24uYWVybyIsInJlcGJvZHkuYWVybyIsInJlcy5hZXJvIiwicmVzZWFyY2guYWVybyIsInJvdG9yY3JhZnQuYWVy''@;'; put 'put ''byIsInNhZmV0eS5hZXJvIiwic2NpZW50aXN0LmFlcm8iLCJzZXJ2aWNlcy5hZXJvIiwic2hvdy5hZXJvIiwic2t5ZGl2aW5nLmFlcm8iLCJzb2Z0d2FyZS5hZXJvIiwic3R1ZGVudC5hZXJvIiwidHJhZGVyLmFlcm8iLCJ0cmFkaW5nLmFlcm8iLCJ0cmFpbmVyLmFlcm8iLCJ1bmlvbi5hZXJv''@;'; put 'put ''Iiwid29ya2luZ2dyb3VwLmFlcm8iLCJ3b3Jrcy5hZXJvIiwiYWYiLCJnb3YuYWYiLCJjb20uYWYiLCJvcmcuYWYiLCJuZXQuYWYiLCJlZHUuYWYiLCJhZyIsImNvbS5hZyIsIm9yZy5hZyIsIm5ldC5hZyIsImNvLmFnIiwibm9tLmFnIiwiYWkiLCJvZmYuYWkiLCJjb20uYWkiLCJuZXQuYWki''@;'; put 'put ''LCJvcmcuYWkiLCJhbCIsImNvbS5hbCIsImVkdS5hbCIsImdvdi5hbCIsIm1pbC5hbCIsIm5ldC5hbCIsIm9yZy5hbCIsImFtIiwiY28uYW0iLCJjb20uYW0iLCJjb21tdW5lLmFtIiwibmV0LmFtIiwib3JnLmFtIiwiYW8iLCJlZC5hbyIsImd2LmFvIiwib2cuYW8iLCJjby5hbyIsInBiLmFv''@;'; put 'put ''IiwiaXQuYW8iLCJhcSIsImFyIiwiYmV0LmFyIiwiY29tLmFyIiwiY29vcC5hciIsImVkdS5hciIsImdvYi5hciIsImdvdi5hciIsImludC5hciIsIm1pbC5hciIsIm11c2ljYS5hciIsIm11dHVhbC5hciIsIm5ldC5hciIsIm9yZy5hciIsInNlbmFzYS5hciIsInR1ci5hciIsImFycGEiLCJl''@;'; put 'put ''MTY0LmFycGEiLCJpbi1hZGRyLmFycGEiLCJpcDYuYXJwYSIsImlyaXMuYXJwYSIsInVyaS5hcnBhIiwidXJuLmFycGEiLCJhcyIsImdvdi5hcyIsImFzaWEiLCJhdCIsImFjLmF0IiwiY28uYXQiLCJndi5hdCIsIm9yLmF0Iiwic3RoLmFjLmF0IiwiYXUiLCJjb20uYXUiLCJuZXQuYXUiLCJv''@;'; put 'put ''cmcuYXUiLCJlZHUuYXUiLCJnb3YuYXUiLCJhc24uYXUiLCJpZC5hdSIsImluZm8uYXUiLCJjb25mLmF1Iiwib3ouYXUiLCJhY3QuYXUiLCJuc3cuYXUiLCJudC5hdSIsInFsZC5hdSIsInNhLmF1IiwidGFzLmF1IiwidmljLmF1Iiwid2EuYXUiLCJhY3QuZWR1LmF1IiwiY2F0aG9saWMuZWR1''@;'; put 'put ''LmF1IiwibnN3LmVkdS5hdSIsIm50LmVkdS5hdSIsInFsZC5lZHUuYXUiLCJzYS5lZHUuYXUiLCJ0YXMuZWR1LmF1IiwidmljLmVkdS5hdSIsIndhLmVkdS5hdSIsInFsZC5nb3YuYXUiLCJzYS5nb3YuYXUiLCJ0YXMuZ292LmF1IiwidmljLmdvdi5hdSIsIndhLmdvdi5hdSIsInNjaG9vbHMu''@;'; put 'put ''bnN3LmVkdS5hdSIsImF3IiwiY29tLmF3IiwiYXgiLCJheiIsImNvbS5heiIsIm5ldC5heiIsImludC5heiIsImdvdi5heiIsIm9yZy5heiIsImVkdS5heiIsImluZm8uYXoiLCJwcC5heiIsIm1pbC5heiIsIm5hbWUuYXoiLCJwcm8uYXoiLCJiaXouYXoiLCJiYSIsImNvbS5iYSIsImVkdS5i''@;'; put 'put ''YSIsImdvdi5iYSIsIm1pbC5iYSIsIm5ldC5iYSIsIm9yZy5iYSIsImJiIiwiYml6LmJiIiwiY28uYmIiLCJjb20uYmIiLCJlZHUuYmIiLCJnb3YuYmIiLCJpbmZvLmJiIiwibmV0LmJiIiwib3JnLmJiIiwic3RvcmUuYmIiLCJ0di5iYiIsIiouYmQiLCJiZSIsImFjLmJlIiwiYmYiLCJnb3Yu''@;'; put 'put ''YmYiLCJiZyIsImEuYmciLCJiLmJnIiwiYy5iZyIsImQuYmciLCJlLmJnIiwiZi5iZyIsImcuYmciLCJoLmJnIiwiaS5iZyIsImouYmciLCJrLmJnIiwibC5iZyIsIm0uYmciLCJuLmJnIiwiby5iZyIsInAuYmciLCJxLmJnIiwici5iZyIsInMuYmciLCJ0LmJnIiwidS5iZyIsInYuYmciLCJ3''@;'; put 'put ''LmJnIiwieC5iZyIsInkuYmciLCJ6LmJnIiwiMC5iZyIsIjEuYmciLCIyLmJnIiwiMy5iZyIsIjQuYmciLCI1LmJnIiwiNi5iZyIsIjcuYmciLCI4LmJnIiwiOS5iZyIsImJoIiwiY29tLmJoIiwiZWR1LmJoIiwibmV0LmJoIiwib3JnLmJoIiwiZ292LmJoIiwiYmkiLCJjby5iaSIsImNvbS5i''@;'; put 'put ''aSIsImVkdS5iaSIsIm9yLmJpIiwib3JnLmJpIiwiYml6IiwiYmoiLCJhc3NvLmJqIiwiYmFycmVhdS5iaiIsImdvdXYuYmoiLCJibSIsImNvbS5ibSIsImVkdS5ibSIsImdvdi5ibSIsIm5ldC5ibSIsIm9yZy5ibSIsImJuIiwiY29tLmJuIiwiZWR1LmJuIiwiZ292LmJuIiwibmV0LmJuIiwi''@;'; put 'put ''b3JnLmJuIiwiYm8iLCJjb20uYm8iLCJlZHUuYm8iLCJnb2IuYm8iLCJpbnQuYm8iLCJvcmcuYm8iLCJuZXQuYm8iLCJtaWwuYm8iLCJ0di5ibyIsIndlYi5ibyIsImFjYWRlbWlhLmJvIiwiYWdyby5ibyIsImFydGUuYm8iLCJibG9nLmJvIiwiYm9saXZpYS5ibyIsImNpZW5jaWEuYm8iLCJj''@;'; put 'put ''b29wZXJhdGl2YS5ibyIsImRlbW9jcmFjaWEuYm8iLCJkZXBvcnRlLmJvIiwiZWNvbG9naWEuYm8iLCJlY29ub21pYS5ibyIsImVtcHJlc2EuYm8iLCJpbmRpZ2VuYS5ibyIsImluZHVzdHJpYS5ibyIsImluZm8uYm8iLCJtZWRpY2luYS5ibyIsIm1vdmltaWVudG8uYm8iLCJtdXNpY2EuYm8i''@;'; put 'put ''LCJuYXR1cmFsLmJvIiwibm9tYnJlLmJvIiwibm90aWNpYXMuYm8iLCJwYXRyaWEuYm8iLCJwb2xpdGljYS5ibyIsInByb2Zlc2lvbmFsLmJvIiwicGx1cmluYWNpb25hbC5ibyIsInB1ZWJsby5ibyIsInJldmlzdGEuYm8iLCJzYWx1ZC5ibyIsInRlY25vbG9naWEuYm8iLCJ0a3NhdC5ibyIs''@;'; put 'put ''InRyYW5zcG9ydGUuYm8iLCJ3aWtpLmJvIiwiYnIiLCI5Z3VhY3UuYnIiLCJhYmMuYnIiLCJhZG0uYnIiLCJhZHYuYnIiLCJhZ3IuYnIiLCJhanUuYnIiLCJhbS5iciIsImFuYW5pLmJyIiwiYXBhcmVjaWRhLmJyIiwiYXBwLmJyIiwiYXJxLmJyIiwiYXJ0LmJyIiwiYXRvLmJyIiwiYi5iciIs''@;'; put 'put ''ImJhcnVlcmkuYnIiLCJiZWxlbS5iciIsImJoei5iciIsImJpYi5iciIsImJpby5iciIsImJsb2cuYnIiLCJibWQuYnIiLCJib2F2aXN0YS5iciIsImJzYi5iciIsImNhbXBpbmFncmFuZGUuYnIiLCJjYW1waW5hcy5iciIsImNheGlhcy5iciIsImNpbS5iciIsImNuZy5iciIsImNudC5iciIs''@;'; put 'put ''ImNvbS5iciIsImNvbnRhZ2VtLmJyIiwiY29vcC5iciIsImNvei5iciIsImNyaS5iciIsImN1aWFiYS5iciIsImN1cml0aWJhLmJyIiwiZGVmLmJyIiwiZGVzLmJyIiwiZGV0LmJyIiwiZGV2LmJyIiwiZWNuLmJyIiwiZWNvLmJyIiwiZWR1LmJyIiwiZW1wLmJyIiwiZW5mLmJyIiwiZW5nLmJy''@;'; put 'put ''IiwiZXNwLmJyIiwiZXRjLmJyIiwiZXRpLmJyIiwiZmFyLmJyIiwiZmVpcmEuYnIiLCJmbG9nLmJyIiwiZmxvcmlwYS5iciIsImZtLmJyIiwiZm5kLmJyIiwiZm9ydGFsLmJyIiwiZm90LmJyIiwiZm96LmJyIiwiZnN0LmJyIiwiZzEyLmJyIiwiZ2VvLmJyIiwiZ2dmLmJyIiwiZ29pYW5pYS5i''@;'; put 'put ''ciIsImdvdi5iciIsImFjLmdvdi5iciIsImFsLmdvdi5iciIsImFtLmdvdi5iciIsImFwLmdvdi5iciIsImJhLmdvdi5iciIsImNlLmdvdi5iciIsImRmLmdvdi5iciIsImVzLmdvdi5iciIsImdvLmdvdi5iciIsIm1hLmdvdi5iciIsIm1nLmdvdi5iciIsIm1zLmdvdi5iciIsIm10Lmdvdi5i''@;'; put 'put ''ciIsInBhLmdvdi5iciIsInBiLmdvdi5iciIsInBlLmdvdi5iciIsInBpLmdvdi5iciIsInByLmdvdi5iciIsInJqLmdvdi5iciIsInJuLmdvdi5iciIsInJvLmdvdi5iciIsInJyLmdvdi5iciIsInJzLmdvdi5iciIsInNjLmdvdi5iciIsInNlLmdvdi5iciIsInNwLmdvdi5iciIsInRvLmdv''@;'; put 'put ''di5iciIsImdydS5iciIsImltYi5iciIsImluZC5iciIsImluZi5iciIsImphYi5iciIsImphbXBhLmJyIiwiamRmLmJyIiwiam9pbnZpbGxlLmJyIiwiam9yLmJyIiwianVzLmJyIiwibGVnLmJyIiwibGVsLmJyIiwibG9nLmJyIiwibG9uZHJpbmEuYnIiLCJtYWNhcGEuYnIiLCJtYWNlaW8u''@;'; put 'put ''YnIiLCJtYW5hdXMuYnIiLCJtYXJpbmdhLmJyIiwibWF0LmJyIiwibWVkLmJyIiwibWlsLmJyIiwibW9yZW5hLmJyIiwibXAuYnIiLCJtdXMuYnIiLCJuYXRhbC5iciIsIm5ldC5iciIsIm5pdGVyb2kuYnIiLCIqLm5vbS5iciIsIm5vdC5iciIsIm50ci5iciIsIm9kby5iciIsIm9uZy5iciIs''@;'; put 'put ''Im9yZy5iciIsIm9zYXNjby5iciIsInBhbG1hcy5iciIsInBvYS5iciIsInBwZy5iciIsInByby5iciIsInBzYy5iciIsInBzaS5iciIsInB2aC5iciIsInFzbC5iciIsInJhZGlvLmJyIiwicmVjLmJyIiwicmVjaWZlLmJyIiwicmVwLmJyIiwicmliZWlyYW8uYnIiLCJyaW8uYnIiLCJyaW9i''@;'; put 'put ''cmFuY28uYnIiLCJyaW9wcmV0by5iciIsInNhbHZhZG9yLmJyIiwic2FtcGEuYnIiLCJzYW50YW1hcmlhLmJyIiwic2FudG9hbmRyZS5iciIsInNhb2Jlcm5hcmRvLmJyIiwic2FvZ29uY2EuYnIiLCJzZWcuYnIiLCJzamMuYnIiLCJzbGcuYnIiLCJzbHouYnIiLCJzb3JvY2FiYS5iciIsInNy''@;'; put 'put ''di5iciIsInRheGkuYnIiLCJ0Yy5iciIsInRlYy5iciIsInRlby5iciIsInRoZS5iciIsInRtcC5iciIsInRyZC5iciIsInR1ci5iciIsInR2LmJyIiwidWRpLmJyIiwidmV0LmJyIiwidml4LmJyIiwidmxvZy5iciIsIndpa2kuYnIiLCJ6bGcuYnIiLCJicyIsImNvbS5icyIsIm5ldC5icyIs''@;'; put 'put ''Im9yZy5icyIsImVkdS5icyIsImdvdi5icyIsImJ0IiwiY29tLmJ0IiwiZWR1LmJ0IiwiZ292LmJ0IiwibmV0LmJ0Iiwib3JnLmJ0IiwiYnYiLCJidyIsImNvLmJ3Iiwib3JnLmJ3IiwiYnkiLCJnb3YuYnkiLCJtaWwuYnkiLCJjb20uYnkiLCJvZi5ieSIsImJ6IiwiY29tLmJ6IiwibmV0LmJ6''@;'; put 'put ''Iiwib3JnLmJ6IiwiZWR1LmJ6IiwiZ292LmJ6IiwiY2EiLCJhYi5jYSIsImJjLmNhIiwibWIuY2EiLCJuYi5jYSIsIm5mLmNhIiwibmwuY2EiLCJucy5jYSIsIm50LmNhIiwibnUuY2EiLCJvbi5jYSIsInBlLmNhIiwicWMuY2EiLCJzay5jYSIsInlrLmNhIiwiZ2MuY2EiLCJjYXQiLCJjYyIs''@;'; put 'put ''ImNkIiwiZ292LmNkIiwiY2YiLCJjZyIsImNoIiwiY2kiLCJvcmcuY2kiLCJvci5jaSIsImNvbS5jaSIsImNvLmNpIiwiZWR1LmNpIiwiZWQuY2kiLCJhYy5jaSIsIm5ldC5jaSIsImdvLmNpIiwiYXNzby5jaSIsImFceGU5cm9wb3J0LmNpIiwiaW50LmNpIiwicHJlc3NlLmNpIiwibWQuY2ki''@;'; put 'put ''LCJnb3V2LmNpIiwiKi5jayIsIiF3d3cuY2siLCJjbCIsImNvLmNsIiwiZ29iLmNsIiwiZ292LmNsIiwibWlsLmNsIiwiY20iLCJjby5jbSIsImNvbS5jbSIsImdvdi5jbSIsIm5ldC5jbSIsImNuIiwiYWMuY24iLCJjb20uY24iLCJlZHUuY24iLCJnb3YuY24iLCJuZXQuY24iLCJvcmcuY24i''@;'; put 'put ''LCJtaWwuY24iLCJcdTUxNmNcdTUzZjguY24iLCJcdTdmNTFcdTdlZGMuY24iLCJcdTdkYjJcdTdkNjEuY24iLCJhaC5jbiIsImJqLmNuIiwiY3EuY24iLCJmai5jbiIsImdkLmNuIiwiZ3MuY24iLCJnei5jbiIsImd4LmNuIiwiaGEuY24iLCJoYi5jbiIsImhlLmNuIiwiaGkuY24iLCJobC5j''@;'; put 'put ''biIsImhuLmNuIiwiamwuY24iLCJqcy5jbiIsImp4LmNuIiwibG4uY24iLCJubS5jbiIsIm54LmNuIiwicWguY24iLCJzYy5jbiIsInNkLmNuIiwic2guY24iLCJzbi5jbiIsInN4LmNuIiwidGouY24iLCJ4ai5jbiIsInh6LmNuIiwieW4uY24iLCJ6ai5jbiIsImhrLmNuIiwibW8uY24iLCJ0''@;'; put 'put ''dy5jbiIsImNvIiwiYXJ0cy5jbyIsImNvbS5jbyIsImVkdS5jbyIsImZpcm0uY28iLCJnb3YuY28iLCJpbmZvLmNvIiwiaW50LmNvIiwibWlsLmNvIiwibmV0LmNvIiwibm9tLmNvIiwib3JnLmNvIiwicmVjLmNvIiwid2ViLmNvIiwiY29tIiwiY29vcCIsImNyIiwiYWMuY3IiLCJjby5jciIs''@;'; put 'put ''ImVkLmNyIiwiZmkuY3IiLCJnby5jciIsIm9yLmNyIiwic2EuY3IiLCJjdSIsImNvbS5jdSIsImVkdS5jdSIsIm9yZy5jdSIsIm5ldC5jdSIsImdvdi5jdSIsImluZi5jdSIsImN2IiwiY29tLmN2IiwiZWR1LmN2IiwiaW50LmN2Iiwibm9tZS5jdiIsIm9yZy5jdiIsImN3IiwiY29tLmN3Iiwi''@;'; put 'put ''ZWR1LmN3IiwibmV0LmN3Iiwib3JnLmN3IiwiY3giLCJnb3YuY3giLCJjeSIsImFjLmN5IiwiYml6LmN5IiwiY29tLmN5IiwiZWtsb2dlcy5jeSIsImdvdi5jeSIsImx0ZC5jeSIsIm1pbC5jeSIsIm5ldC5jeSIsIm9yZy5jeSIsInByZXNzLmN5IiwicHJvLmN5IiwidG0uY3kiLCJjeiIsImRl''@;'; put 'put ''IiwiZGoiLCJkayIsImRtIiwiY29tLmRtIiwibmV0LmRtIiwib3JnLmRtIiwiZWR1LmRtIiwiZ292LmRtIiwiZG8iLCJhcnQuZG8iLCJjb20uZG8iLCJlZHUuZG8iLCJnb2IuZG8iLCJnb3YuZG8iLCJtaWwuZG8iLCJuZXQuZG8iLCJvcmcuZG8iLCJzbGQuZG8iLCJ3ZWIuZG8iLCJkeiIsImFy''@;'; put 'put ''dC5keiIsImFzc28uZHoiLCJjb20uZHoiLCJlZHUuZHoiLCJnb3YuZHoiLCJvcmcuZHoiLCJuZXQuZHoiLCJwb2wuZHoiLCJzb2MuZHoiLCJ0bS5keiIsImVjIiwiY29tLmVjIiwiaW5mby5lYyIsIm5ldC5lYyIsImZpbi5lYyIsImsxMi5lYyIsIm1lZC5lYyIsInByby5lYyIsIm9yZy5lYyIs''@;'; put 'put ''ImVkdS5lYyIsImdvdi5lYyIsImdvYi5lYyIsIm1pbC5lYyIsImVkdSIsImVlIiwiZWR1LmVlIiwiZ292LmVlIiwicmlpay5lZSIsImxpYi5lZSIsIm1lZC5lZSIsImNvbS5lZSIsInByaS5lZSIsImFpcC5lZSIsIm9yZy5lZSIsImZpZS5lZSIsImVnIiwiY29tLmVnIiwiZWR1LmVnIiwiZXVu''@;'; put 'put ''LmVnIiwiZ292LmVnIiwibWlsLmVnIiwibmFtZS5lZyIsIm5ldC5lZyIsIm9yZy5lZyIsInNjaS5lZyIsIiouZXIiLCJlcyIsImNvbS5lcyIsIm5vbS5lcyIsIm9yZy5lcyIsImdvYi5lcyIsImVkdS5lcyIsImV0IiwiY29tLmV0IiwiZ292LmV0Iiwib3JnLmV0IiwiZWR1LmV0IiwiYml6LmV0''@;'; put 'put ''IiwibmFtZS5ldCIsImluZm8uZXQiLCJuZXQuZXQiLCJldSIsImZpIiwiYWxhbmQuZmkiLCJmaiIsImFjLmZqIiwiYml6LmZqIiwiY29tLmZqIiwiZ292LmZqIiwiaW5mby5maiIsIm1pbC5maiIsIm5hbWUuZmoiLCJuZXQuZmoiLCJvcmcuZmoiLCJwcm8uZmoiLCIqLmZrIiwiY29tLmZtIiwi''@;'; put 'put ''ZWR1LmZtIiwibmV0LmZtIiwib3JnLmZtIiwiZm0iLCJmbyIsImZyIiwiYXNzby5mciIsImNvbS5mciIsImdvdXYuZnIiLCJub20uZnIiLCJwcmQuZnIiLCJ0bS5mciIsImFlcm9wb3J0LmZyIiwiYXZvY2F0LmZyIiwiYXZvdWVzLmZyIiwiY2NpLmZyIiwiY2hhbWJhZ3JpLmZyIiwiY2hpcnVy''@;'; put 'put ''Z2llbnMtZGVudGlzdGVzLmZyIiwiZXhwZXJ0cy1jb21wdGFibGVzLmZyIiwiZ2VvbWV0cmUtZXhwZXJ0LmZyIiwiZ3JldGEuZnIiLCJodWlzc2llci1qdXN0aWNlLmZyIiwibWVkZWNpbi5mciIsIm5vdGFpcmVzLmZyIiwicGhhcm1hY2llbi5mciIsInBvcnQuZnIiLCJ2ZXRlcmluYWlyZS5m''@;'; put 'put ''ciIsImdhIiwiZ2IiLCJlZHUuZ2QiLCJnb3YuZ2QiLCJnZCIsImdlIiwiY29tLmdlIiwiZWR1LmdlIiwiZ292LmdlIiwib3JnLmdlIiwibWlsLmdlIiwibmV0LmdlIiwicHZ0LmdlIiwiZ2YiLCJnZyIsImNvLmdnIiwibmV0LmdnIiwib3JnLmdnIiwiZ2giLCJjb20uZ2giLCJlZHUuZ2giLCJn''@;'; put 'put ''b3YuZ2giLCJvcmcuZ2giLCJtaWwuZ2giLCJnaSIsImNvbS5naSIsImx0ZC5naSIsImdvdi5naSIsIm1vZC5naSIsImVkdS5naSIsIm9yZy5naSIsImdsIiwiY28uZ2wiLCJjb20uZ2wiLCJlZHUuZ2wiLCJuZXQuZ2wiLCJvcmcuZ2wiLCJnbSIsImduIiwiYWMuZ24iLCJjb20uZ24iLCJlZHUu''@;'; put 'put ''Z24iLCJnb3YuZ24iLCJvcmcuZ24iLCJuZXQuZ24iLCJnb3YiLCJncCIsImNvbS5ncCIsIm5ldC5ncCIsIm1vYmkuZ3AiLCJlZHUuZ3AiLCJvcmcuZ3AiLCJhc3NvLmdwIiwiZ3EiLCJnciIsImNvbS5nciIsImVkdS5nciIsIm5ldC5nciIsIm9yZy5nciIsImdvdi5nciIsImdzIiwiZ3QiLCJj''@;'; put 'put ''b20uZ3QiLCJlZHUuZ3QiLCJnb2IuZ3QiLCJpbmQuZ3QiLCJtaWwuZ3QiLCJuZXQuZ3QiLCJvcmcuZ3QiLCJndSIsImNvbS5ndSIsImVkdS5ndSIsImdvdi5ndSIsImd1YW0uZ3UiLCJpbmZvLmd1IiwibmV0Lmd1Iiwib3JnLmd1Iiwid2ViLmd1IiwiZ3ciLCJneSIsImNvLmd5IiwiY29tLmd5''@;'; put 'put ''IiwiZWR1Lmd5IiwiZ292Lmd5IiwibmV0Lmd5Iiwib3JnLmd5IiwiaGsiLCJjb20uaGsiLCJlZHUuaGsiLCJnb3YuaGsiLCJpZHYuaGsiLCJuZXQuaGsiLCJvcmcuaGsiLCJcdTUxNmNcdTUzZjguaGsiLCJcdTY1NTlcdTgwYjIuaGsiLCJcdTY1NGVcdTgwYjIuaGsiLCJcdTY1M2ZcdTVlOWMu''@;'; put 'put ''aGsiLCJcdTUwMGJcdTRlYmEuaGsiLCJcdTRlMmFcdWZmZmRcdWZmZmQuaGsiLCJcdTdiODdcdTRlYmEuaGsiLCJcdTdkYjJcdTdlZGMuaGsiLCJcdTdmNTFcdTdlZGMuaGsiLCJcdTdlYzRcdTdlNTQuaGsiLCJcdTdkYjJcdTdkNjEuaGsiLCJcdTdmNTFcdTdkNjEuaGsiLCJcdTdlYzRcdTdl''@;'; put 'put ''YzcuaGsiLCJcdTdkNDRcdTdlNTQuaGsiLCJcdTdkNDRcdTdlYzcuaGsiLCJobSIsImhuIiwiY29tLmhuIiwiZWR1LmhuIiwib3JnLmhuIiwibmV0LmhuIiwibWlsLmhuIiwiZ29iLmhuIiwiaHIiLCJpei5ociIsImZyb20uaHIiLCJuYW1lLmhyIiwiY29tLmhyIiwiaHQiLCJjb20uaHQiLCJz''@;'; put 'put ''aG9wLmh0IiwiZmlybS5odCIsImluZm8uaHQiLCJhZHVsdC5odCIsIm5ldC5odCIsInByby5odCIsIm9yZy5odCIsIm1lZC5odCIsImFydC5odCIsImNvb3AuaHQiLCJwb2wuaHQiLCJhc3NvLmh0IiwiZWR1Lmh0IiwicmVsLmh0IiwiZ291di5odCIsInBlcnNvLmh0IiwiaHUiLCJjby5odSIs''@;'; put 'put ''ImluZm8uaHUiLCJvcmcuaHUiLCJwcml2Lmh1Iiwic3BvcnQuaHUiLCJ0bS5odSIsIjIwMDAuaHUiLCJhZ3Jhci5odSIsImJvbHQuaHUiLCJjYXNpbm8uaHUiLCJjaXR5Lmh1IiwiZXJvdGljYS5odSIsImVyb3Rpa2EuaHUiLCJmaWxtLmh1IiwiZm9ydW0uaHUiLCJnYW1lcy5odSIsImhvdGVs''@;'; put 'put ''Lmh1IiwiaW5nYXRsYW4uaHUiLCJqb2dhc3ouaHUiLCJrb255dmVsby5odSIsImxha2FzLmh1IiwibWVkaWEuaHUiLCJuZXdzLmh1IiwicmVrbGFtLmh1Iiwic2V4Lmh1Iiwic2hvcC5odSIsInN1bGkuaHUiLCJzemV4Lmh1IiwidG96c2RlLmh1IiwidXRhemFzLmh1IiwidmlkZW8uaHUiLCJp''@;'; put 'put ''ZCIsImFjLmlkIiwiYml6LmlkIiwiY28uaWQiLCJkZXNhLmlkIiwiZ28uaWQiLCJtaWwuaWQiLCJteS5pZCIsIm5ldC5pZCIsIm9yLmlkIiwicG9ucGVzLmlkIiwic2NoLmlkIiwid2ViLmlkIiwiaWUiLCJnb3YuaWUiLCJpbCIsImFjLmlsIiwiY28uaWwiLCJnb3YuaWwiLCJpZGYuaWwiLCJr''@;'; put 'put ''MTIuaWwiLCJtdW5pLmlsIiwibmV0LmlsIiwib3JnLmlsIiwiaW0iLCJhYy5pbSIsImNvLmltIiwiY29tLmltIiwibHRkLmNvLmltIiwibmV0LmltIiwib3JnLmltIiwicGxjLmNvLmltIiwidHQuaW0iLCJ0di5pbSIsImluIiwiY28uaW4iLCJmaXJtLmluIiwibmV0LmluIiwib3JnLmluIiwi''@;'; put 'put ''Z2VuLmluIiwiaW5kLmluIiwibmljLmluIiwiYWMuaW4iLCJlZHUuaW4iLCJyZXMuaW4iLCJnb3YuaW4iLCJtaWwuaW4iLCJpbmZvIiwiaW50IiwiZXUuaW50IiwiaW8iLCJjb20uaW8iLCJpcSIsImdvdi5pcSIsImVkdS5pcSIsIm1pbC5pcSIsImNvbS5pcSIsIm9yZy5pcSIsIm5ldC5pcSIs''@;'; put 'put ''ImlyIiwiYWMuaXIiLCJjby5pciIsImdvdi5pciIsImlkLmlyIiwibmV0LmlyIiwib3JnLmlyIiwic2NoLmlyIiwiXHUwNjI3XHUwNmNjXHUwNjMxXHUwNjI3XHUwNjQ2LmlyIiwiXHUwNjI3XHUwNjRhXHUwNjMxXHUwNjI3XHUwNjQ2LmlyIiwiaXMiLCJuZXQuaXMiLCJjb20uaXMiLCJlZHUu''@;'; put 'put ''aXMiLCJnb3YuaXMiLCJvcmcuaXMiLCJpbnQuaXMiLCJpdCIsImdvdi5pdCIsImVkdS5pdCIsImFici5pdCIsImFicnV6em8uaXQiLCJhb3N0YS12YWxsZXkuaXQiLCJhb3N0YXZhbGxleS5pdCIsImJhcy5pdCIsImJhc2lsaWNhdGEuaXQiLCJjYWwuaXQiLCJjYWxhYnJpYS5pdCIsImNhbS5p''@;'; put 'put ''dCIsImNhbXBhbmlhLml0IiwiZW1pbGlhLXJvbWFnbmEuaXQiLCJlbWlsaWFyb21hZ25hLml0IiwiZW1yLml0IiwiZnJpdWxpLXYtZ2l1bGlhLml0IiwiZnJpdWxpLXZlLWdpdWxpYS5pdCIsImZyaXVsaS12ZWdpdWxpYS5pdCIsImZyaXVsaS12ZW5lemlhLWdpdWxpYS5pdCIsImZyaXVsaS12''@;'; put 'put ''ZW5lemlhZ2l1bGlhLml0IiwiZnJpdWxpLXZnaXVsaWEuaXQiLCJmcml1bGl2LWdpdWxpYS5pdCIsImZyaXVsaXZlLWdpdWxpYS5pdCIsImZyaXVsaXZlZ2l1bGlhLml0IiwiZnJpdWxpdmVuZXppYS1naXVsaWEuaXQiLCJmcml1bGl2ZW5lemlhZ2l1bGlhLml0IiwiZnJpdWxpdmdpdWxpYS5p''@;'; put 'put ''dCIsImZ2Zy5pdCIsImxhei5pdCIsImxhemlvLml0IiwibGlnLml0IiwibGlndXJpYS5pdCIsImxvbS5pdCIsImxvbWJhcmRpYS5pdCIsImxvbWJhcmR5Lml0IiwibHVjYW5pYS5pdCIsIm1hci5pdCIsIm1hcmNoZS5pdCIsIm1vbC5pdCIsIm1vbGlzZS5pdCIsInBpZWRtb250Lml0IiwicGll''@;'; put 'put ''bW9udGUuaXQiLCJwbW4uaXQiLCJwdWcuaXQiLCJwdWdsaWEuaXQiLCJzYXIuaXQiLCJzYXJkZWduYS5pdCIsInNhcmRpbmlhLml0Iiwic2ljLml0Iiwic2ljaWxpYS5pdCIsInNpY2lseS5pdCIsInRhYS5pdCIsInRvcy5pdCIsInRvc2NhbmEuaXQiLCJ0cmVudGluLXN1ZC10aXJvbC5pdCIs''@;'; put 'put ''InRyZW50aW4tc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbi1zdWR0aXJvbC5pdCIsInRyZW50aW4tc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluLXN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluLXN1ZWR0aXJvbC5pdCIsInRyZW50aW5vLWEtYWRpZ2UuaXQiLCJ0cmVudGluby1hYWRpZ2UuaXQiLCJ0''@;'; put 'put ''cmVudGluby1hbHRvLWFkaWdlLml0IiwidHJlbnRpbm8tYWx0b2FkaWdlLml0IiwidHJlbnRpbm8tcy10aXJvbC5pdCIsInRyZW50aW5vLXN0aXJvbC5pdCIsInRyZW50aW5vLXN1ZC10aXJvbC5pdCIsInRyZW50aW5vLXNceGZjZC10aXJvbC5pdCIsInRyZW50aW5vLXN1ZHRpcm9sLml0Iiwi''@;'; put 'put ''dHJlbnRpbm8tc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGluby1zdWVkLXRpcm9sLml0IiwidHJlbnRpbm8tc3VlZHRpcm9sLml0IiwidHJlbnRpbm8uaXQiLCJ0cmVudGlub2EtYWRpZ2UuaXQiLCJ0cmVudGlub2FhZGlnZS5pdCIsInRyZW50aW5vYWx0by1hZGlnZS5pdCIsInRyZW50aW5vYWx0''@;'; put 'put ''b2FkaWdlLml0IiwidHJlbnRpbm9zLXRpcm9sLml0IiwidHJlbnRpbm9zdGlyb2wuaXQiLCJ0cmVudGlub3N1ZC10aXJvbC5pdCIsInRyZW50aW5vc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbm9zdWR0aXJvbC5pdCIsInRyZW50aW5vc1x4ZmNkdGlyb2wuaXQiLCJ0cmVudGlub3N1ZWQtdGly''@;'; put 'put ''b2wuaXQiLCJ0cmVudGlub3N1ZWR0aXJvbC5pdCIsInRyZW50aW5zdWQtdGlyb2wuaXQiLCJ0cmVudGluc1x4ZmNkLXRpcm9sLml0IiwidHJlbnRpbnN1ZHRpcm9sLml0IiwidHJlbnRpbnNceGZjZHRpcm9sLml0IiwidHJlbnRpbnN1ZWQtdGlyb2wuaXQiLCJ0cmVudGluc3VlZHRpcm9sLml0''@;'; put 'put ''IiwidHVzY2FueS5pdCIsInVtYi5pdCIsInVtYnJpYS5pdCIsInZhbC1kLWFvc3RhLml0IiwidmFsLWRhb3N0YS5pdCIsInZhbGQtYW9zdGEuaXQiLCJ2YWxkYW9zdGEuaXQiLCJ2YWxsZS1hb3N0YS5pdCIsInZhbGxlLWQtYW9zdGEuaXQiLCJ2YWxsZS1kYW9zdGEuaXQiLCJ2YWxsZWFvc3Rh''@;'; put 'put ''Lml0IiwidmFsbGVkLWFvc3RhLml0IiwidmFsbGVkYW9zdGEuaXQiLCJ2YWxsZWUtYW9zdGUuaXQiLCJ2YWxsXHhlOWUtYW9zdGUuaXQiLCJ2YWxsZWUtZC1hb3N0ZS5pdCIsInZhbGxceGU5ZS1kLWFvc3RlLml0IiwidmFsbGVlYW9zdGUuaXQiLCJ2YWxsXHhlOWVhb3N0ZS5pdCIsInZhbGxl''@;'; put 'put ''ZWRhb3N0ZS5pdCIsInZhbGxceGU5ZWRhb3N0ZS5pdCIsInZhby5pdCIsInZkYS5pdCIsInZlbi5pdCIsInZlbmV0by5pdCIsImFnLml0IiwiYWdyaWdlbnRvLml0IiwiYWwuaXQiLCJhbGVzc2FuZHJpYS5pdCIsImFsdG8tYWRpZ2UuaXQiLCJhbHRvYWRpZ2UuaXQiLCJhbi5pdCIsImFuY29u''@;'; put 'put ''YS5pdCIsImFuZHJpYS1iYXJsZXR0YS10cmFuaS5pdCIsImFuZHJpYS10cmFuaS1iYXJsZXR0YS5pdCIsImFuZHJpYWJhcmxldHRhdHJhbmkuaXQiLCJhbmRyaWF0cmFuaWJhcmxldHRhLml0IiwiYW8uaXQiLCJhb3N0YS5pdCIsImFvc3RlLml0IiwiYXAuaXQiLCJhcS5pdCIsImFxdWlsYS5p''@;'; put 'put ''dCIsImFyLml0IiwiYXJlenpvLml0IiwiYXNjb2xpLXBpY2Vuby5pdCIsImFzY29saXBpY2Vuby5pdCIsImFzdGkuaXQiLCJhdC5pdCIsImF2Lml0IiwiYXZlbGxpbm8uaXQiLCJiYS5pdCIsImJhbHNhbi1zdWR0aXJvbC5pdCIsImJhbHNhbi1zXHhmY2R0aXJvbC5pdCIsImJhbHNhbi1zdWVk''@;'; put 'put ''dGlyb2wuaXQiLCJiYWxzYW4uaXQiLCJiYXJpLml0IiwiYmFybGV0dGEtdHJhbmktYW5kcmlhLml0IiwiYmFybGV0dGF0cmFuaWFuZHJpYS5pdCIsImJlbGx1bm8uaXQiLCJiZW5ldmVudG8uaXQiLCJiZXJnYW1vLml0IiwiYmcuaXQiLCJiaS5pdCIsImJpZWxsYS5pdCIsImJsLml0IiwiYm4u''@;'; put 'put ''aXQiLCJiby5pdCIsImJvbG9nbmEuaXQiLCJib2x6YW5vLWFsdG9hZGlnZS5pdCIsImJvbHphbm8uaXQiLCJib3plbi1zdWR0aXJvbC5pdCIsImJvemVuLXNceGZjZHRpcm9sLml0IiwiYm96ZW4tc3VlZHRpcm9sLml0IiwiYm96ZW4uaXQiLCJici5pdCIsImJyZXNjaWEuaXQiLCJicmluZGlz''@;'; put 'put ''aS5pdCIsImJzLml0IiwiYnQuaXQiLCJidWxzYW4tc3VkdGlyb2wuaXQiLCJidWxzYW4tc1x4ZmNkdGlyb2wuaXQiLCJidWxzYW4tc3VlZHRpcm9sLml0IiwiYnVsc2FuLml0IiwiYnouaXQiLCJjYS5pdCIsImNhZ2xpYXJpLml0IiwiY2FsdGFuaXNzZXR0YS5pdCIsImNhbXBpZGFuby1tZWRp''@;'; put 'put ''by5pdCIsImNhbXBpZGFub21lZGlvLml0IiwiY2FtcG9iYXNzby5pdCIsImNhcmJvbmlhLWlnbGVzaWFzLml0IiwiY2FyYm9uaWFpZ2xlc2lhcy5pdCIsImNhcnJhcmEtbWFzc2EuaXQiLCJjYXJyYXJhbWFzc2EuaXQiLCJjYXNlcnRhLml0IiwiY2F0YW5pYS5pdCIsImNhdGFuemFyby5pdCIs''@;'; put 'put ''ImNiLml0IiwiY2UuaXQiLCJjZXNlbmEtZm9ybGkuaXQiLCJjZXNlbmEtZm9ybFx4ZWMuaXQiLCJjZXNlbmFmb3JsaS5pdCIsImNlc2VuYWZvcmxceGVjLml0IiwiY2guaXQiLCJjaGlldGkuaXQiLCJjaS5pdCIsImNsLml0IiwiY24uaXQiLCJjby5pdCIsImNvbW8uaXQiLCJjb3NlbnphLml0''@;'; put 'put ''IiwiY3IuaXQiLCJjcmVtb25hLml0IiwiY3JvdG9uZS5pdCIsImNzLml0IiwiY3QuaXQiLCJjdW5lby5pdCIsImN6Lml0IiwiZGVsbC1vZ2xpYXN0cmEuaXQiLCJkZWxsb2dsaWFzdHJhLml0IiwiZW4uaXQiLCJlbm5hLml0IiwiZmMuaXQiLCJmZS5pdCIsImZlcm1vLml0IiwiZmVycmFyYS5p''@;'; put 'put ''dCIsImZnLml0IiwiZmkuaXQiLCJmaXJlbnplLml0IiwiZmxvcmVuY2UuaXQiLCJmbS5pdCIsImZvZ2dpYS5pdCIsImZvcmxpLWNlc2VuYS5pdCIsImZvcmxceGVjLWNlc2VuYS5pdCIsImZvcmxpY2VzZW5hLml0IiwiZm9ybFx4ZWNjZXNlbmEuaXQiLCJmci5pdCIsImZyb3Npbm9uZS5pdCIs''@;'; put 'put ''ImdlLml0IiwiZ2Vub2EuaXQiLCJnZW5vdmEuaXQiLCJnby5pdCIsImdvcml6aWEuaXQiLCJnci5pdCIsImdyb3NzZXRvLml0IiwiaWdsZXNpYXMtY2FyYm9uaWEuaXQiLCJpZ2xlc2lhc2NhcmJvbmlhLml0IiwiaW0uaXQiLCJpbXBlcmlhLml0IiwiaXMuaXQiLCJpc2VybmlhLml0Iiwia3Iu''@;'; put 'put ''aXQiLCJsYS1zcGV6aWEuaXQiLCJsYXF1aWxhLml0IiwibGFzcGV6aWEuaXQiLCJsYXRpbmEuaXQiLCJsYy5pdCIsImxlLml0IiwibGVjY2UuaXQiLCJsZWNjby5pdCIsImxpLml0IiwibGl2b3Juby5pdCIsImxvLml0IiwibG9kaS5pdCIsImx0Lml0IiwibHUuaXQiLCJsdWNjYS5pdCIsIm1h''@;'; put 'put ''Y2VyYXRhLml0IiwibWFudG92YS5pdCIsIm1hc3NhLWNhcnJhcmEuaXQiLCJtYXNzYWNhcnJhcmEuaXQiLCJtYXRlcmEuaXQiLCJtYi5pdCIsIm1jLml0IiwibWUuaXQiLCJtZWRpby1jYW1waWRhbm8uaXQiLCJtZWRpb2NhbXBpZGFuby5pdCIsIm1lc3NpbmEuaXQiLCJtaS5pdCIsIm1pbGFu''@;'; put 'put ''Lml0IiwibWlsYW5vLml0IiwibW4uaXQiLCJtby5pdCIsIm1vZGVuYS5pdCIsIm1vbnphLWJyaWFuemEuaXQiLCJtb256YS1lLWRlbGxhLWJyaWFuemEuaXQiLCJtb256YS5pdCIsIm1vbnphYnJpYW56YS5pdCIsIm1vbnphZWJyaWFuemEuaXQiLCJtb256YWVkZWxsYWJyaWFuemEuaXQiLCJt''@;'; put 'put ''cy5pdCIsIm10Lml0IiwibmEuaXQiLCJuYXBsZXMuaXQiLCJuYXBvbGkuaXQiLCJuby5pdCIsIm5vdmFyYS5pdCIsIm51Lml0IiwibnVvcm8uaXQiLCJvZy5pdCIsIm9nbGlhc3RyYS5pdCIsIm9sYmlhLXRlbXBpby5pdCIsIm9sYmlhdGVtcGlvLml0Iiwib3IuaXQiLCJvcmlzdGFuby5pdCIs''@;'; put 'put ''Im90Lml0IiwicGEuaXQiLCJwYWRvdmEuaXQiLCJwYWR1YS5pdCIsInBhbGVybW8uaXQiLCJwYXJtYS5pdCIsInBhdmlhLml0IiwicGMuaXQiLCJwZC5pdCIsInBlLml0IiwicGVydWdpYS5pdCIsInBlc2Fyby11cmJpbm8uaXQiLCJwZXNhcm91cmJpbm8uaXQiLCJwZXNjYXJhLml0IiwicGcu''@;'; put 'put ''aXQiLCJwaS5pdCIsInBpYWNlbnphLml0IiwicGlzYS5pdCIsInBpc3RvaWEuaXQiLCJwbi5pdCIsInBvLml0IiwicG9yZGVub25lLml0IiwicG90ZW56YS5pdCIsInByLml0IiwicHJhdG8uaXQiLCJwdC5pdCIsInB1Lml0IiwicHYuaXQiLCJwei5pdCIsInJhLml0IiwicmFndXNhLml0Iiwi''@;'; put 'put ''cmF2ZW5uYS5pdCIsInJjLml0IiwicmUuaXQiLCJyZWdnaW8tY2FsYWJyaWEuaXQiLCJyZWdnaW8tZW1pbGlhLml0IiwicmVnZ2lvY2FsYWJyaWEuaXQiLCJyZWdnaW9lbWlsaWEuaXQiLCJyZy5pdCIsInJpLml0IiwicmlldGkuaXQiLCJyaW1pbmkuaXQiLCJybS5pdCIsInJuLml0Iiwicm8u''@;'; put 'put ''aXQiLCJyb21hLml0Iiwicm9tZS5pdCIsInJvdmlnby5pdCIsInNhLml0Iiwic2FsZXJuby5pdCIsInNhc3NhcmkuaXQiLCJzYXZvbmEuaXQiLCJzaS5pdCIsInNpZW5hLml0Iiwic2lyYWN1c2EuaXQiLCJzby5pdCIsInNvbmRyaW8uaXQiLCJzcC5pdCIsInNyLml0Iiwic3MuaXQiLCJzdWVk''@;'; put 'put ''dGlyb2wuaXQiLCJzXHhmY2R0aXJvbC5pdCIsInN2Lml0IiwidGEuaXQiLCJ0YXJhbnRvLml0IiwidGUuaXQiLCJ0ZW1waW8tb2xiaWEuaXQiLCJ0ZW1waW9vbGJpYS5pdCIsInRlcmFtby5pdCIsInRlcm5pLml0IiwidG4uaXQiLCJ0by5pdCIsInRvcmluby5pdCIsInRwLml0IiwidHIuaXQi''@;'; put 'put ''LCJ0cmFuaS1hbmRyaWEtYmFybGV0dGEuaXQiLCJ0cmFuaS1iYXJsZXR0YS1hbmRyaWEuaXQiLCJ0cmFuaWFuZHJpYWJhcmxldHRhLml0IiwidHJhbmliYXJsZXR0YWFuZHJpYS5pdCIsInRyYXBhbmkuaXQiLCJ0cmVudG8uaXQiLCJ0cmV2aXNvLml0IiwidHJpZXN0ZS5pdCIsInRzLml0Iiwi''@;'; put 'put ''dHVyaW4uaXQiLCJ0di5pdCIsInVkLml0IiwidWRpbmUuaXQiLCJ1cmJpbm8tcGVzYXJvLml0IiwidXJiaW5vcGVzYXJvLml0IiwidmEuaXQiLCJ2YXJlc2UuaXQiLCJ2Yi5pdCIsInZjLml0IiwidmUuaXQiLCJ2ZW5lemlhLml0IiwidmVuaWNlLml0IiwidmVyYmFuaWEuaXQiLCJ2ZXJjZWxs''@;'; put 'put ''aS5pdCIsInZlcm9uYS5pdCIsInZpLml0Iiwidmliby12YWxlbnRpYS5pdCIsInZpYm92YWxlbnRpYS5pdCIsInZpY2VuemEuaXQiLCJ2aXRlcmJvLml0IiwidnIuaXQiLCJ2cy5pdCIsInZ0Lml0IiwidnYuaXQiLCJqZSIsImNvLmplIiwibmV0LmplIiwib3JnLmplIiwiKi5qbSIsImpvIiwi''@;'; put 'put ''Y29tLmpvIiwib3JnLmpvIiwibmV0LmpvIiwiZWR1LmpvIiwic2NoLmpvIiwiZ292LmpvIiwibWlsLmpvIiwibmFtZS5qbyIsImpvYnMiLCJqcCIsImFjLmpwIiwiYWQuanAiLCJjby5qcCIsImVkLmpwIiwiZ28uanAiLCJnci5qcCIsImxnLmpwIiwibmUuanAiLCJvci5qcCIsImFpY2hpLmpw''@;'; put 'put ''IiwiYWtpdGEuanAiLCJhb21vcmkuanAiLCJjaGliYS5qcCIsImVoaW1lLmpwIiwiZnVrdWkuanAiLCJmdWt1b2thLmpwIiwiZnVrdXNoaW1hLmpwIiwiZ2lmdS5qcCIsImd1bm1hLmpwIiwiaGlyb3NoaW1hLmpwIiwiaG9ra2FpZG8uanAiLCJoeW9nby5qcCIsImliYXJha2kuanAiLCJpc2hp''@;'; put 'put ''a2F3YS5qcCIsIml3YXRlLmpwIiwia2FnYXdhLmpwIiwia2Fnb3NoaW1hLmpwIiwia2FuYWdhd2EuanAiLCJrb2NoaS5qcCIsImt1bWFtb3RvLmpwIiwia3lvdG8uanAiLCJtaWUuanAiLCJtaXlhZ2kuanAiLCJtaXlhemFraS5qcCIsIm5hZ2Fuby5qcCIsIm5hZ2FzYWtpLmpwIiwibmFyYS5q''@;'; put 'put ''cCIsIm5paWdhdGEuanAiLCJvaXRhLmpwIiwib2theWFtYS5qcCIsIm9raW5hd2EuanAiLCJvc2FrYS5qcCIsInNhZ2EuanAiLCJzYWl0YW1hLmpwIiwic2hpZ2EuanAiLCJzaGltYW5lLmpwIiwic2hpenVva2EuanAiLCJ0b2NoaWdpLmpwIiwidG9rdXNoaW1hLmpwIiwidG9reW8uanAiLCJ0''@;'; put 'put ''b3R0b3JpLmpwIiwidG95YW1hLmpwIiwid2FrYXlhbWEuanAiLCJ5YW1hZ2F0YS5qcCIsInlhbWFndWNoaS5qcCIsInlhbWFuYXNoaS5qcCIsIlx1NjgwM1x1NjcyOC5qcCIsIlx1NjExYlx1NzdlNS5qcCIsIlx1NjExYlx1NWE5Yi5qcCIsIlx1NTE3NVx1NWVhYi5qcCIsIlx1NzE4YVx1Njcy''@;'; put 'put ''Yy5qcCIsIlx1ODMyOFx1NTdjZS5qcCIsIlx1NTMxN1x1NmQ3N1x1OTA1My5qcCIsIlx1NTM0M1x1ODQ0OS5qcCIsIlx1NTQ4Y1x1NmI0Y1x1NWM3MS5qcCIsIlx1OTU3N1x1NWQwZS5qcCIsIlx1OTU3N1x1OTFjZS5qcCIsIlx1NjViMFx1NmY1Zi5qcCIsIlx1OTc1Mlx1NjhlZS5qcCIsIlx1''@;'; put 'put ''OTc1OVx1NWNhMS5qcCIsIlx1Njc3MVx1NGVhYy5qcCIsIlx1NzdmM1x1NWRkZC5qcCIsIlx1NTdmY1x1NzM4OS5qcCIsIlx1NGUwOVx1OTFjZC5qcCIsIlx1NGVhY1x1OTBmZC5qcCIsIlx1NGY1MFx1OGNjMC5qcCIsIlx1NTkyN1x1NTIwNi5qcCIsIlx1NTkyN1x1OTYyYS5qcCIsIlx1NTk0''@;'; put 'put ''OFx1ODI2Zi5qcCIsIlx1NWJhZVx1NTdjZS5qcCIsIlx1NWJhZVx1NWQwZS5qcCIsIlx1NWJjY1x1NWM3MS5qcCIsIlx1NWM3MVx1NTNlMy5qcCIsIlx1NWM3MVx1NWY2Mi5qcCIsIlx1NWM3MVx1NjhhOC5qcCIsIlx1NWNhOVx1NjI0Yi5qcCIsIlx1NWM5MFx1OTYxYy5qcCIsIlx1NWNhMVx1''@;'; put 'put ''NWM3MS5qcCIsIlx1NWNmNlx1NjgzOS5qcCIsIlx1NWU4M1x1NWNmNi5qcCIsIlx1NWZiM1x1NWNmNi5qcCIsIlx1NmM5Nlx1N2UwNC5qcCIsIlx1NmVjYlx1OGNjMC5qcCIsIlx1Nzk1ZVx1NTk0OFx1NWRkZC5qcCIsIlx1Nzk4Zlx1NGU5NS5qcCIsIlx1Nzk4Zlx1NWNhMS5qcCIsIlx1Nzk4''@;'; put 'put ''Zlx1NWNmNi5qcCIsIlx1NzljYlx1NzUzMC5qcCIsIlx1N2ZhNFx1OTlhYy5qcCIsIlx1OTk5OVx1NWRkZC5qcCIsIlx1OWFkOFx1NzdlNS5qcCIsIlx1OWNlNVx1NTNkNi5qcCIsIlx1OWU3Zlx1NTE1MFx1NWNmNi5qcCIsIioua2F3YXNha2kuanAiLCIqLmtpdGFreXVzaHUuanAiLCIqLmtv''@;'; put 'put ''YmUuanAiLCIqLm5hZ295YS5qcCIsIiouc2FwcG9yby5qcCIsIiouc2VuZGFpLmpwIiwiKi55b2tvaGFtYS5qcCIsIiFjaXR5Lmthd2FzYWtpLmpwIiwiIWNpdHkua2l0YWt5dXNodS5qcCIsIiFjaXR5LmtvYmUuanAiLCIhY2l0eS5uYWdveWEuanAiLCIhY2l0eS5zYXBwb3JvLmpwIiwiIWNp''@;'; put 'put ''dHkuc2VuZGFpLmpwIiwiIWNpdHkueW9rb2hhbWEuanAiLCJhaXNhaS5haWNoaS5qcCIsImFtYS5haWNoaS5qcCIsImFuam8uYWljaGkuanAiLCJhc3VrZS5haWNoaS5qcCIsImNoaXJ5dS5haWNoaS5qcCIsImNoaXRhLmFpY2hpLmpwIiwiZnVzby5haWNoaS5qcCIsImdhbWFnb3JpLmFpY2hp''@;'; put 'put ''LmpwIiwiaGFuZGEuYWljaGkuanAiLCJoYXp1LmFpY2hpLmpwIiwiaGVraW5hbi5haWNoaS5qcCIsImhpZ2FzaGl1cmEuYWljaGkuanAiLCJpY2hpbm9taXlhLmFpY2hpLmpwIiwiaW5hemF3YS5haWNoaS5qcCIsImludXlhbWEuYWljaGkuanAiLCJpc3NoaWtpLmFpY2hpLmpwIiwiaXdha3Vy''@;'; put 'put ''YS5haWNoaS5qcCIsImthbmllLmFpY2hpLmpwIiwia2FyaXlhLmFpY2hpLmpwIiwia2FzdWdhaS5haWNoaS5qcCIsImtpcmEuYWljaGkuanAiLCJraXlvc3UuYWljaGkuanAiLCJrb21ha2kuYWljaGkuanAiLCJrb25hbi5haWNoaS5qcCIsImtvdGEuYWljaGkuanAiLCJtaWhhbWEuYWljaGku''@;'; put 'put ''anAiLCJtaXlvc2hpLmFpY2hpLmpwIiwibmlzaGlvLmFpY2hpLmpwIiwibmlzc2hpbi5haWNoaS5qcCIsIm9idS5haWNoaS5qcCIsIm9ndWNoaS5haWNoaS5qcCIsIm9oYXJ1LmFpY2hpLmpwIiwib2themFraS5haWNoaS5qcCIsIm93YXJpYXNhaGkuYWljaGkuanAiLCJzZXRvLmFpY2hpLmpw''@;'; put 'put ''Iiwic2hpa2F0c3UuYWljaGkuanAiLCJzaGluc2hpcm8uYWljaGkuanAiLCJzaGl0YXJhLmFpY2hpLmpwIiwidGFoYXJhLmFpY2hpLmpwIiwidGFrYWhhbWEuYWljaGkuanAiLCJ0b2Jpc2hpbWEuYWljaGkuanAiLCJ0b2VpLmFpY2hpLmpwIiwidG9nby5haWNoaS5qcCIsInRva2FpLmFpY2hp''@;'; put 'put ''LmpwIiwidG9rb25hbWUuYWljaGkuanAiLCJ0b3lvYWtlLmFpY2hpLmpwIiwidG95b2hhc2hpLmFpY2hpLmpwIiwidG95b2thd2EuYWljaGkuanAiLCJ0b3lvbmUuYWljaGkuanAiLCJ0b3lvdGEuYWljaGkuanAiLCJ0c3VzaGltYS5haWNoaS5qcCIsInlhdG9taS5haWNoaS5qcCIsImFraXRh''@;'; put 'put ''LmFraXRhLmpwIiwiZGFpc2VuLmFraXRhLmpwIiwiZnVqaXNhdG8uYWtpdGEuanAiLCJnb2pvbWUuYWtpdGEuanAiLCJoYWNoaXJvZ2F0YS5ha2l0YS5qcCIsImhhcHBvdS5ha2l0YS5qcCIsImhpZ2FzaGluYXJ1c2UuYWtpdGEuanAiLCJob25qby5ha2l0YS5qcCIsImhvbmp5by5ha2l0YS5q''@;'; put 'put ''cCIsImlrYXdhLmFraXRhLmpwIiwia2FtaWtvYW5pLmFraXRhLmpwIiwia2FtaW9rYS5ha2l0YS5qcCIsImthdGFnYW1pLmFraXRhLmpwIiwia2F6dW5vLmFraXRhLmpwIiwia2l0YWFraXRhLmFraXRhLmpwIiwia29zYWthLmFraXRhLmpwIiwia3lvd2EuYWtpdGEuanAiLCJtaXNhdG8uYWtp''@;'; put 'put ''dGEuanAiLCJtaXRhbmUuYWtpdGEuanAiLCJtb3JpeW9zaGkuYWtpdGEuanAiLCJuaWthaG8uYWtpdGEuanAiLCJub3NoaXJvLmFraXRhLmpwIiwib2RhdGUuYWtpdGEuanAiLCJvZ2EuYWtpdGEuanAiLCJvZ2F0YS5ha2l0YS5qcCIsInNlbWJva3UuYWtpdGEuanAiLCJ5b2tvdGUuYWtpdGEu''@;'; put 'put ''anAiLCJ5dXJpaG9uam8uYWtpdGEuanAiLCJhb21vcmkuYW9tb3JpLmpwIiwiZ29ub2hlLmFvbW9yaS5qcCIsImhhY2hpbm9oZS5hb21vcmkuanAiLCJoYXNoaWthbWkuYW9tb3JpLmpwIiwiaGlyYW5haS5hb21vcmkuanAiLCJoaXJvc2FraS5hb21vcmkuanAiLCJpdGF5YW5hZ2kuYW9tb3Jp''@;'; put 'put ''LmpwIiwia3Vyb2lzaGkuYW9tb3JpLmpwIiwibWlzYXdhLmFvbW9yaS5qcCIsIm11dHN1LmFvbW9yaS5qcCIsIm5ha2Fkb21hcmkuYW9tb3JpLmpwIiwibm9oZWppLmFvbW9yaS5qcCIsIm9pcmFzZS5hb21vcmkuanAiLCJvd2FuaS5hb21vcmkuanAiLCJyb2t1bm9oZS5hb21vcmkuanAiLCJz''@;'; put 'put ''YW5ub2hlLmFvbW9yaS5qcCIsInNoaWNoaW5vaGUuYW9tb3JpLmpwIiwic2hpbmdvLmFvbW9yaS5qcCIsInRha2tvLmFvbW9yaS5qcCIsInRvd2FkYS5hb21vcmkuanAiLCJ0c3VnYXJ1LmFvbW9yaS5qcCIsInRzdXJ1dGEuYW9tb3JpLmpwIiwiYWJpa28uY2hpYmEuanAiLCJhc2FoaS5jaGli''@;'; put 'put ''YS5qcCIsImNob25hbi5jaGliYS5qcCIsImNob3NlaS5jaGliYS5qcCIsImNob3NoaS5jaGliYS5qcCIsImNodW8uY2hpYmEuanAiLCJmdW5hYmFzaGkuY2hpYmEuanAiLCJmdXR0c3UuY2hpYmEuanAiLCJoYW5hbWlnYXdhLmNoaWJhLmpwIiwiaWNoaWhhcmEuY2hpYmEuanAiLCJpY2hpa2F3''@;'; put 'put ''YS5jaGliYS5qcCIsImljaGlub21peWEuY2hpYmEuanAiLCJpbnphaS5jaGliYS5qcCIsImlzdW1pLmNoaWJhLmpwIiwia2FtYWdheWEuY2hpYmEuanAiLCJrYW1vZ2F3YS5jaGliYS5qcCIsImthc2hpd2EuY2hpYmEuanAiLCJrYXRvcmkuY2hpYmEuanAiLCJrYXRzdXVyYS5jaGliYS5qcCIs''@;'; put 'put ''ImtpbWl0c3UuY2hpYmEuanAiLCJraXNhcmF6dS5jaGliYS5qcCIsImtvemFraS5jaGliYS5qcCIsImt1anVrdXJpLmNoaWJhLmpwIiwia3lvbmFuLmNoaWJhLmpwIiwibWF0c3Vkby5jaGliYS5qcCIsIm1pZG9yaS5jaGliYS5qcCIsIm1paGFtYS5jaGliYS5qcCIsIm1pbmFtaWJvc28uY2hp''@;'; put 'put ''YmEuanAiLCJtb2JhcmEuY2hpYmEuanAiLCJtdXRzdXphd2EuY2hpYmEuanAiLCJuYWdhcmEuY2hpYmEuanAiLCJuYWdhcmV5YW1hLmNoaWJhLmpwIiwibmFyYXNoaW5vLmNoaWJhLmpwIiwibmFyaXRhLmNoaWJhLmpwIiwibm9kYS5jaGliYS5qcCIsIm9hbWlzaGlyYXNhdG8uY2hpYmEuanAi''@;'; put 'put ''LCJvbWlnYXdhLmNoaWJhLmpwIiwib25qdWt1LmNoaWJhLmpwIiwib3Rha2kuY2hpYmEuanAiLCJzYWthZS5jaGliYS5qcCIsInNha3VyYS5jaGliYS5qcCIsInNoaW1vZnVzYS5jaGliYS5qcCIsInNoaXJha28uY2hpYmEuanAiLCJzaGlyb2kuY2hpYmEuanAiLCJzaGlzdWkuY2hpYmEuanAi''@;'; put 'put ''LCJzb2RlZ2F1cmEuY2hpYmEuanAiLCJzb3NhLmNoaWJhLmpwIiwidGFrby5jaGliYS5qcCIsInRhdGV5YW1hLmNoaWJhLmpwIiwidG9nYW5lLmNoaWJhLmpwIiwidG9obm9zaG8uY2hpYmEuanAiLCJ0b21pc2F0by5jaGliYS5qcCIsInVyYXlhc3UuY2hpYmEuanAiLCJ5YWNoaW1hdGEuY2hp''@;'; put 'put ''YmEuanAiLCJ5YWNoaXlvLmNoaWJhLmpwIiwieW9rYWljaGliYS5jaGliYS5qcCIsInlva29zaGliYWhpa2FyaS5jaGliYS5qcCIsInlvdHN1a2FpZG8uY2hpYmEuanAiLCJhaW5hbi5laGltZS5qcCIsImhvbmFpLmVoaW1lLmpwIiwiaWthdGEuZWhpbWUuanAiLCJpbWFiYXJpLmVoaW1lLmpw''@;'; put 'put ''IiwiaXlvLmVoaW1lLmpwIiwia2FtaWppbWEuZWhpbWUuanAiLCJraWhva3UuZWhpbWUuanAiLCJrdW1ha29nZW4uZWhpbWUuanAiLCJtYXNha2kuZWhpbWUuanAiLCJtYXRzdW5vLmVoaW1lLmpwIiwibWF0c3V5YW1hLmVoaW1lLmpwIiwibmFtaWthdGEuZWhpbWUuanAiLCJuaWloYW1hLmVo''@;'; put 'put ''aW1lLmpwIiwib3p1LmVoaW1lLmpwIiwic2Fpam8uZWhpbWUuanAiLCJzZWl5by5laGltZS5qcCIsInNoaWtva3VjaHVvLmVoaW1lLmpwIiwidG9iZS5laGltZS5qcCIsInRvb24uZWhpbWUuanAiLCJ1Y2hpa28uZWhpbWUuanAiLCJ1d2FqaW1hLmVoaW1lLmpwIiwieWF3YXRhaGFtYS5laGlt''@;'; put 'put ''ZS5qcCIsImVjaGl6ZW4uZnVrdWkuanAiLCJlaWhlaWppLmZ1a3VpLmpwIiwiZnVrdWkuZnVrdWkuanAiLCJpa2VkYS5mdWt1aS5qcCIsImthdHN1eWFtYS5mdWt1aS5qcCIsIm1paGFtYS5mdWt1aS5qcCIsIm1pbmFtaWVjaGl6ZW4uZnVrdWkuanAiLCJvYmFtYS5mdWt1aS5qcCIsIm9oaS5m''@;'; put 'put ''dWt1aS5qcCIsIm9uby5mdWt1aS5qcCIsInNhYmFlLmZ1a3VpLmpwIiwic2FrYWkuZnVrdWkuanAiLCJ0YWthaGFtYS5mdWt1aS5qcCIsInRzdXJ1Z2EuZnVrdWkuanAiLCJ3YWthc2EuZnVrdWkuanAiLCJhc2hpeWEuZnVrdW9rYS5qcCIsImJ1emVuLmZ1a3Vva2EuanAiLCJjaGlrdWdvLmZ1''@;'; put 'put ''a3Vva2EuanAiLCJjaGlrdWhvLmZ1a3Vva2EuanAiLCJjaGlrdWpvLmZ1a3Vva2EuanAiLCJjaGlrdXNoaW5vLmZ1a3Vva2EuanAiLCJjaGlrdXplbi5mdWt1b2thLmpwIiwiY2h1by5mdWt1b2thLmpwIiwiZGF6YWlmdS5mdWt1b2thLmpwIiwiZnVrdWNoaS5mdWt1b2thLmpwIiwiaGFrYXRh''@;'; put 'put ''LmZ1a3Vva2EuanAiLCJoaWdhc2hpLmZ1a3Vva2EuanAiLCJoaXJva2F3YS5mdWt1b2thLmpwIiwiaGlzYXlhbWEuZnVrdW9rYS5qcCIsImlpenVrYS5mdWt1b2thLmpwIiwiaW5hdHN1a2kuZnVrdW9rYS5qcCIsImthaG8uZnVrdW9rYS5qcCIsImthc3VnYS5mdWt1b2thLmpwIiwia2FzdXlh''@;'; put 'put ''LmZ1a3Vva2EuanAiLCJrYXdhcmEuZnVrdW9rYS5qcCIsImtlaXNlbi5mdWt1b2thLmpwIiwia29nYS5mdWt1b2thLmpwIiwia3VyYXRlLmZ1a3Vva2EuanAiLCJrdXJvZ2kuZnVrdW9rYS5qcCIsImt1cnVtZS5mdWt1b2thLmpwIiwibWluYW1pLmZ1a3Vva2EuanAiLCJtaXlha28uZnVrdW9r''@;'; put 'put ''YS5qcCIsIm1peWFtYS5mdWt1b2thLmpwIiwibWl5YXdha2EuZnVrdW9rYS5qcCIsIm1penVtYWtpLmZ1a3Vva2EuanAiLCJtdW5ha2F0YS5mdWt1b2thLmpwIiwibmFrYWdhd2EuZnVrdW9rYS5qcCIsIm5ha2FtYS5mdWt1b2thLmpwIiwibmlzaGkuZnVrdW9rYS5qcCIsIm5vZ2F0YS5mdWt1''@;'; put 'put ''b2thLmpwIiwib2dvcmkuZnVrdW9rYS5qcCIsIm9rYWdha2kuZnVrdW9rYS5qcCIsIm9rYXdhLmZ1a3Vva2EuanAiLCJva2kuZnVrdW9rYS5qcCIsIm9tdXRhLmZ1a3Vva2EuanAiLCJvbmdhLmZ1a3Vva2EuanAiLCJvbm9qby5mdWt1b2thLmpwIiwib3RvLmZ1a3Vva2EuanAiLCJzYWlnYXdh''@;'; put 'put ''LmZ1a3Vva2EuanAiLCJzYXNhZ3VyaS5mdWt1b2thLmpwIiwic2hpbmd1LmZ1a3Vva2EuanAiLCJzaGlueW9zaGl0b21pLmZ1a3Vva2EuanAiLCJzaG9uYWkuZnVrdW9rYS5qcCIsInNvZWRhLmZ1a3Vva2EuanAiLCJzdWUuZnVrdW9rYS5qcCIsInRhY2hpYXJhaS5mdWt1b2thLmpwIiwidGFn''@;'; put 'put ''YXdhLmZ1a3Vva2EuanAiLCJ0YWthdGEuZnVrdW9rYS5qcCIsInRvaG8uZnVrdW9rYS5qcCIsInRveW90c3UuZnVrdW9rYS5qcCIsInRzdWlraS5mdWt1b2thLmpwIiwidWtpaGEuZnVrdW9rYS5qcCIsInVtaS5mdWt1b2thLmpwIiwidXN1aS5mdWt1b2thLmpwIiwieWFtYWRhLmZ1a3Vva2Eu''@;'; put 'put ''anAiLCJ5YW1lLmZ1a3Vva2EuanAiLCJ5YW5hZ2F3YS5mdWt1b2thLmpwIiwieXVrdWhhc2hpLmZ1a3Vva2EuanAiLCJhaXp1YmFuZ2UuZnVrdXNoaW1hLmpwIiwiYWl6dW1pc2F0by5mdWt1c2hpbWEuanAiLCJhaXp1d2FrYW1hdHN1LmZ1a3VzaGltYS5qcCIsImFzYWthd2EuZnVrdXNoaW1h''@;'; put 'put ''LmpwIiwiYmFuZGFpLmZ1a3VzaGltYS5qcCIsImRhdGUuZnVrdXNoaW1hLmpwIiwiZnVrdXNoaW1hLmZ1a3VzaGltYS5qcCIsImZ1cnVkb25vLmZ1a3VzaGltYS5qcCIsImZ1dGFiYS5mdWt1c2hpbWEuanAiLCJoYW5hd2EuZnVrdXNoaW1hLmpwIiwiaGlnYXNoaS5mdWt1c2hpbWEuanAiLCJo''@;'; put 'put ''aXJhdGEuZnVrdXNoaW1hLmpwIiwiaGlyb25vLmZ1a3VzaGltYS5qcCIsImlpdGF0ZS5mdWt1c2hpbWEuanAiLCJpbmF3YXNoaXJvLmZ1a3VzaGltYS5qcCIsImlzaGlrYXdhLmZ1a3VzaGltYS5qcCIsIml3YWtpLmZ1a3VzaGltYS5qcCIsIml6dW1pemFraS5mdWt1c2hpbWEuanAiLCJrYWdh''@;'; put 'put ''bWlpc2hpLmZ1a3VzaGltYS5qcCIsImthbmV5YW1hLmZ1a3VzaGltYS5qcCIsImthd2FtYXRhLmZ1a3VzaGltYS5qcCIsImtpdGFrYXRhLmZ1a3VzaGltYS5qcCIsImtpdGFzaGlvYmFyYS5mdWt1c2hpbWEuanAiLCJrb29yaS5mdWt1c2hpbWEuanAiLCJrb3JpeWFtYS5mdWt1c2hpbWEuanAi''@;'; put 'put ''LCJrdW5pbWkuZnVrdXNoaW1hLmpwIiwibWloYXJ1LmZ1a3VzaGltYS5qcCIsIm1pc2hpbWEuZnVrdXNoaW1hLmpwIiwibmFtaWUuZnVrdXNoaW1hLmpwIiwibmFuZ28uZnVrdXNoaW1hLmpwIiwibmlzaGlhaXp1LmZ1a3VzaGltYS5qcCIsIm5pc2hpZ28uZnVrdXNoaW1hLmpwIiwib2t1bWEu''@;'; put 'put ''ZnVrdXNoaW1hLmpwIiwib21vdGVnby5mdWt1c2hpbWEuanAiLCJvbm8uZnVrdXNoaW1hLmpwIiwib3RhbWEuZnVrdXNoaW1hLmpwIiwic2FtZWdhd2EuZnVrdXNoaW1hLmpwIiwic2hpbW9nby5mdWt1c2hpbWEuanAiLCJzaGlyYWthd2EuZnVrdXNoaW1hLmpwIiwic2hvd2EuZnVrdXNoaW1h''@;'; put 'put ''LmpwIiwic29tYS5mdWt1c2hpbWEuanAiLCJzdWthZ2F3YS5mdWt1c2hpbWEuanAiLCJ0YWlzaGluLmZ1a3VzaGltYS5qcCIsInRhbWFrYXdhLmZ1a3VzaGltYS5qcCIsInRhbmFndXJhLmZ1a3VzaGltYS5qcCIsInRlbmVpLmZ1a3VzaGltYS5qcCIsInlhYnVraS5mdWt1c2hpbWEuanAiLCJ5''@;'; put 'put ''YW1hdG8uZnVrdXNoaW1hLmpwIiwieWFtYXRzdXJpLmZ1a3VzaGltYS5qcCIsInlhbmFpenUuZnVrdXNoaW1hLmpwIiwieXVnYXdhLmZ1a3VzaGltYS5qcCIsImFucGFjaGkuZ2lmdS5qcCIsImVuYS5naWZ1LmpwIiwiZ2lmdS5naWZ1LmpwIiwiZ2luYW4uZ2lmdS5qcCIsImdvZG8uZ2lmdS5q''@;'; put 'put ''cCIsImd1am8uZ2lmdS5qcCIsImhhc2hpbWEuZ2lmdS5qcCIsImhpY2hpc28uZ2lmdS5qcCIsImhpZGEuZ2lmdS5qcCIsImhpZ2FzaGlzaGlyYWthd2EuZ2lmdS5qcCIsImliaWdhd2EuZ2lmdS5qcCIsImlrZWRhLmdpZnUuanAiLCJrYWthbWlnYWhhcmEuZ2lmdS5qcCIsImthbmkuZ2lmdS5q''@;'; put 'put ''cCIsImthc2FoYXJhLmdpZnUuanAiLCJrYXNhbWF0c3UuZ2lmdS5qcCIsImthd2F1ZS5naWZ1LmpwIiwia2l0YWdhdGEuZ2lmdS5qcCIsIm1pbm8uZ2lmdS5qcCIsIm1pbm9rYW1vLmdpZnUuanAiLCJtaXRha2UuZ2lmdS5qcCIsIm1penVuYW1pLmdpZnUuanAiLCJtb3Rvc3UuZ2lmdS5qcCIs''@;'; put 'put ''Im5ha2F0c3VnYXdhLmdpZnUuanAiLCJvZ2FraS5naWZ1LmpwIiwic2FrYWhvZ2kuZ2lmdS5qcCIsInNla2kuZ2lmdS5qcCIsInNla2lnYWhhcmEuZ2lmdS5qcCIsInNoaXJha2F3YS5naWZ1LmpwIiwidGFqaW1pLmdpZnUuanAiLCJ0YWtheWFtYS5naWZ1LmpwIiwidGFydWkuZ2lmdS5qcCIs''@;'; put 'put ''InRva2kuZ2lmdS5qcCIsInRvbWlrYS5naWZ1LmpwIiwid2Fub3VjaGkuZ2lmdS5qcCIsInlhbWFnYXRhLmdpZnUuanAiLCJ5YW90c3UuZ2lmdS5qcCIsInlvcm8uZ2lmdS5qcCIsImFubmFrYS5ndW5tYS5qcCIsImNoaXlvZGEuZ3VubWEuanAiLCJmdWppb2thLmd1bm1hLmpwIiwiaGlnYXNo''@;'; put 'put ''aWFnYXRzdW1hLmd1bm1hLmpwIiwiaXNlc2FraS5ndW5tYS5qcCIsIml0YWt1cmEuZ3VubWEuanAiLCJrYW5uYS5ndW5tYS5qcCIsImthbnJhLmd1bm1hLmpwIiwia2F0YXNoaW5hLmd1bm1hLmpwIiwia2F3YWJhLmd1bm1hLmpwIiwia2lyeXUuZ3VubWEuanAiLCJrdXNhdHN1Lmd1bm1hLmpw''@;'; put 'put ''IiwibWFlYmFzaGkuZ3VubWEuanAiLCJtZWl3YS5ndW5tYS5qcCIsIm1pZG9yaS5ndW5tYS5qcCIsIm1pbmFrYW1pLmd1bm1hLmpwIiwibmFnYW5vaGFyYS5ndW5tYS5qcCIsIm5ha2Fub2pvLmd1bm1hLmpwIiwibmFubW9rdS5ndW5tYS5qcCIsIm51bWF0YS5ndW5tYS5qcCIsIm9penVtaS5n''@;'; put 'put ''dW5tYS5qcCIsIm9yYS5ndW5tYS5qcCIsIm90YS5ndW5tYS5qcCIsInNoaWJ1a2F3YS5ndW5tYS5qcCIsInNoaW1vbml0YS5ndW5tYS5qcCIsInNoaW50by5ndW5tYS5qcCIsInNob3dhLmd1bm1hLmpwIiwidGFrYXNha2kuZ3VubWEuanAiLCJ0YWtheWFtYS5ndW5tYS5qcCIsInRhbWFtdXJh''@;'; put 'put ''Lmd1bm1hLmpwIiwidGF0ZWJheWFzaGkuZ3VubWEuanAiLCJ0b21pb2thLmd1bm1hLmpwIiwidHN1a2l5b25vLmd1bm1hLmpwIiwidHN1bWFnb2kuZ3VubWEuanAiLCJ1ZW5vLmd1bm1hLmpwIiwieW9zaGlva2EuZ3VubWEuanAiLCJhc2FtaW5hbWkuaGlyb3NoaW1hLmpwIiwiZGFpd2EuaGly''@;'; put 'put ''b3NoaW1hLmpwIiwiZXRhamltYS5oaXJvc2hpbWEuanAiLCJmdWNodS5oaXJvc2hpbWEuanAiLCJmdWt1eWFtYS5oaXJvc2hpbWEuanAiLCJoYXRzdWthaWNoaS5oaXJvc2hpbWEuanAiLCJoaWdhc2hpaGlyb3NoaW1hLmhpcm9zaGltYS5qcCIsImhvbmdvLmhpcm9zaGltYS5qcCIsImppbnNl''@;'; put 'put ''a2lrb2dlbi5oaXJvc2hpbWEuanAiLCJrYWl0YS5oaXJvc2hpbWEuanAiLCJrdWkuaGlyb3NoaW1hLmpwIiwia3VtYW5vLmhpcm9zaGltYS5qcCIsImt1cmUuaGlyb3NoaW1hLmpwIiwibWloYXJhLmhpcm9zaGltYS5qcCIsIm1peW9zaGkuaGlyb3NoaW1hLmpwIiwibmFrYS5oaXJvc2hpbWEu''@;'; put 'put ''anAiLCJvbm9taWNoaS5oaXJvc2hpbWEuanAiLCJvc2FraWthbWlqaW1hLmhpcm9zaGltYS5qcCIsIm90YWtlLmhpcm9zaGltYS5qcCIsInNha2EuaGlyb3NoaW1hLmpwIiwic2VyYS5oaXJvc2hpbWEuanAiLCJzZXJhbmlzaGkuaGlyb3NoaW1hLmpwIiwic2hpbmljaGkuaGlyb3NoaW1hLmpw''@;'; put 'put ''Iiwic2hvYmFyYS5oaXJvc2hpbWEuanAiLCJ0YWtlaGFyYS5oaXJvc2hpbWEuanAiLCJhYmFzaGlyaS5ob2trYWlkby5qcCIsImFiaXJhLmhva2thaWRvLmpwIiwiYWliZXRzdS5ob2trYWlkby5qcCIsImFrYWJpcmEuaG9ra2FpZG8uanAiLCJha2tlc2hpLmhva2thaWRvLmpwIiwiYXNhaGlr''@;'; put 'put ''YXdhLmhva2thaWRvLmpwIiwiYXNoaWJldHN1Lmhva2thaWRvLmpwIiwiYXNob3JvLmhva2thaWRvLmpwIiwiYXNzYWJ1Lmhva2thaWRvLmpwIiwiYXRzdW1hLmhva2thaWRvLmpwIiwiYmliYWkuaG9ra2FpZG8uanAiLCJiaWVpLmhva2thaWRvLmpwIiwiYmlmdWthLmhva2thaWRvLmpwIiwi''@;'; put 'put ''Ymlob3JvLmhva2thaWRvLmpwIiwiYmlyYXRvcmkuaG9ra2FpZG8uanAiLCJjaGlwcHViZXRzdS5ob2trYWlkby5qcCIsImNoaXRvc2UuaG9ra2FpZG8uanAiLCJkYXRlLmhva2thaWRvLmpwIiwiZWJldHN1Lmhva2thaWRvLmpwIiwiZW1iZXRzdS5ob2trYWlkby5qcCIsImVuaXdhLmhva2th''@;'; put 'put ''aWRvLmpwIiwiZXJpbW8uaG9ra2FpZG8uanAiLCJlc2FuLmhva2thaWRvLmpwIiwiZXNhc2hpLmhva2thaWRvLmpwIiwiZnVrYWdhd2EuaG9ra2FpZG8uanAiLCJmdWt1c2hpbWEuaG9ra2FpZG8uanAiLCJmdXJhbm8uaG9ra2FpZG8uanAiLCJmdXJ1YmlyYS5ob2trYWlkby5qcCIsImhhYm9y''@;'; put 'put ''by5ob2trYWlkby5qcCIsImhha29kYXRlLmhva2thaWRvLmpwIiwiaGFtYXRvbmJldHN1Lmhva2thaWRvLmpwIiwiaGlkYWthLmhva2thaWRvLmpwIiwiaGlnYXNoaWthZ3VyYS5ob2trYWlkby5qcCIsImhpZ2FzaGlrYXdhLmhva2thaWRvLmpwIiwiaGlyb28uaG9ra2FpZG8uanAiLCJob2t1''@;'; put 'put ''cnl1Lmhva2thaWRvLmpwIiwiaG9rdXRvLmhva2thaWRvLmpwIiwiaG9uYmV0c3UuaG9ra2FpZG8uanAiLCJob3Jva2FuYWkuaG9ra2FpZG8uanAiLCJob3Jvbm9iZS5ob2trYWlkby5qcCIsImlrZWRhLmhva2thaWRvLmpwIiwiaW1ha2FuZS5ob2trYWlkby5qcCIsImlzaGlrYXJpLmhva2th''@;'; put 'put ''aWRvLmpwIiwiaXdhbWl6YXdhLmhva2thaWRvLmpwIiwiaXdhbmFpLmhva2thaWRvLmpwIiwia2FtaWZ1cmFuby5ob2trYWlkby5qcCIsImthbWlrYXdhLmhva2thaWRvLmpwIiwia2FtaXNoaWhvcm8uaG9ra2FpZG8uanAiLCJrYW1pc3VuYWdhd2EuaG9ra2FpZG8uanAiLCJrYW1vZW5haS5o''@;'; put 'put ''b2trYWlkby5qcCIsImtheWFiZS5ob2trYWlkby5qcCIsImtlbWJ1Y2hpLmhva2thaWRvLmpwIiwia2lrb25haS5ob2trYWlkby5qcCIsImtpbW9iZXRzdS5ob2trYWlkby5qcCIsImtpdGFoaXJvc2hpbWEuaG9ra2FpZG8uanAiLCJraXRhbWkuaG9ra2FpZG8uanAiLCJraXlvc2F0by5ob2tr''@;'; put 'put ''YWlkby5qcCIsImtvc2hpbWl6dS5ob2trYWlkby5qcCIsImt1bm5lcHB1Lmhva2thaWRvLmpwIiwia3VyaXlhbWEuaG9ra2FpZG8uanAiLCJrdXJvbWF0c3VuYWkuaG9ra2FpZG8uanAiLCJrdXNoaXJvLmhva2thaWRvLmpwIiwia3V0Y2hhbi5ob2trYWlkby5qcCIsImt5b3dhLmhva2thaWRv''@;'; put 'put ''LmpwIiwibWFzaGlrZS5ob2trYWlkby5qcCIsIm1hdHN1bWFlLmhva2thaWRvLmpwIiwibWlrYXNhLmhva2thaWRvLmpwIiwibWluYW1pZnVyYW5vLmhva2thaWRvLmpwIiwibW9tYmV0c3UuaG9ra2FpZG8uanAiLCJtb3NldXNoaS5ob2trYWlkby5qcCIsIm11a2F3YS5ob2trYWlkby5qcCIs''@;'; put 'put ''Im11cm9yYW4uaG9ra2FpZG8uanAiLCJuYWllLmhva2thaWRvLmpwIiwibmFrYWdhd2EuaG9ra2FpZG8uanAiLCJuYWthc2F0c3VuYWkuaG9ra2FpZG8uanAiLCJuYWthdG9tYmV0c3UuaG9ra2FpZG8uanAiLCJuYW5hZS5ob2trYWlkby5qcCIsIm5hbnBvcm8uaG9ra2FpZG8uanAiLCJuYXlv''@;'; put 'put ''cm8uaG9ra2FpZG8uanAiLCJuZW11cm8uaG9ra2FpZG8uanAiLCJuaWlrYXBwdS5ob2trYWlkby5qcCIsIm5pa2kuaG9ra2FpZG8uanAiLCJuaXNoaW9rb3BwZS5ob2trYWlkby5qcCIsIm5vYm9yaWJldHN1Lmhva2thaWRvLmpwIiwibnVtYXRhLmhva2thaWRvLmpwIiwib2JpaGlyby5ob2tr''@;'; put 'put ''YWlkby5qcCIsIm9iaXJhLmhva2thaWRvLmpwIiwib2tldG8uaG9ra2FpZG8uanAiLCJva29wcGUuaG9ra2FpZG8uanAiLCJvdGFydS5ob2trYWlkby5qcCIsIm90b2JlLmhva2thaWRvLmpwIiwib3RvZnVrZS5ob2trYWlkby5qcCIsIm90b2luZXBwdS5ob2trYWlkby5qcCIsIm91bXUuaG9r''@;'; put 'put ''a2FpZG8uanAiLCJvem9yYS5ob2trYWlkby5qcCIsInBpcHB1Lmhva2thaWRvLmpwIiwicmFua29zaGkuaG9ra2FpZG8uanAiLCJyZWJ1bi5ob2trYWlkby5qcCIsInJpa3ViZXRzdS5ob2trYWlkby5qcCIsInJpc2hpcmkuaG9ra2FpZG8uanAiLCJyaXNoaXJpZnVqaS5ob2trYWlkby5qcCIs''@;'; put 'put ''InNhcm9tYS5ob2trYWlkby5qcCIsInNhcnVmdXRzdS5ob2trYWlkby5qcCIsInNoYWtvdGFuLmhva2thaWRvLmpwIiwic2hhcmkuaG9ra2FpZG8uanAiLCJzaGliZWNoYS5ob2trYWlkby5qcCIsInNoaWJldHN1Lmhva2thaWRvLmpwIiwic2hpa2FiZS5ob2trYWlkby5qcCIsInNoaWthb2ku''@;'; put 'put ''aG9ra2FpZG8uanAiLCJzaGltYW1ha2kuaG9ra2FpZG8uanAiLCJzaGltaXp1Lmhva2thaWRvLmpwIiwic2hpbW9rYXdhLmhva2thaWRvLmpwIiwic2hpbnNoaW5vdHN1Lmhva2thaWRvLmpwIiwic2hpbnRva3UuaG9ra2FpZG8uanAiLCJzaGlyYW51a2EuaG9ra2FpZG8uanAiLCJzaGlyYW9p''@;'; put 'put ''Lmhva2thaWRvLmpwIiwic2hpcml1Y2hpLmhva2thaWRvLmpwIiwic29iZXRzdS5ob2trYWlkby5qcCIsInN1bmFnYXdhLmhva2thaWRvLmpwIiwidGFpa2kuaG9ra2FpZG8uanAiLCJ0YWthc3UuaG9ra2FpZG8uanAiLCJ0YWtpa2F3YS5ob2trYWlkby5qcCIsInRha2lub3VlLmhva2thaWRv''@;'; put 'put ''LmpwIiwidGVzaGlrYWdhLmhva2thaWRvLmpwIiwidG9iZXRzdS5ob2trYWlkby5qcCIsInRvaG1hLmhva2thaWRvLmpwIiwidG9tYWtvbWFpLmhva2thaWRvLmpwIiwidG9tYXJpLmhva2thaWRvLmpwIiwidG95YS5ob2trYWlkby5qcCIsInRveWFrby5ob2trYWlkby5qcCIsInRveW90b21p''@;'; put 'put ''Lmhva2thaWRvLmpwIiwidG95b3VyYS5ob2trYWlkby5qcCIsInRzdWJldHN1Lmhva2thaWRvLmpwIiwidHN1a2lnYXRhLmhva2thaWRvLmpwIiwidXJha2F3YS5ob2trYWlkby5qcCIsInVyYXVzdS5ob2trYWlkby5qcCIsInVyeXUuaG9ra2FpZG8uanAiLCJ1dGFzaGluYWkuaG9ra2FpZG8u''@;'; put 'put ''anAiLCJ3YWtrYW5haS5ob2trYWlkby5qcCIsIndhc3NhbXUuaG9ra2FpZG8uanAiLCJ5YWt1bW8uaG9ra2FpZG8uanAiLCJ5b2ljaGkuaG9ra2FpZG8uanAiLCJhaW9pLmh5b2dvLmpwIiwiYWthc2hpLmh5b2dvLmpwIiwiYWtvLmh5b2dvLmpwIiwiYW1hZ2FzYWtpLmh5b2dvLmpwIiwiYW9n''@;'; put 'put ''YWtpLmh5b2dvLmpwIiwiYXNhZ28uaHlvZ28uanAiLCJhc2hpeWEuaHlvZ28uanAiLCJhd2FqaS5oeW9nby5qcCIsImZ1a3VzYWtpLmh5b2dvLmpwIiwiZ29zaGlraS5oeW9nby5qcCIsImhhcmltYS5oeW9nby5qcCIsImhpbWVqaS5oeW9nby5qcCIsImljaGlrYXdhLmh5b2dvLmpwIiwiaW5h''@;'; put 'put ''Z2F3YS5oeW9nby5qcCIsIml0YW1pLmh5b2dvLmpwIiwia2Frb2dhd2EuaHlvZ28uanAiLCJrYW1pZ29yaS5oeW9nby5qcCIsImthbWlrYXdhLmh5b2dvLmpwIiwia2FzYWkuaHlvZ28uanAiLCJrYXN1Z2EuaHlvZ28uanAiLCJrYXdhbmlzaGkuaHlvZ28uanAiLCJtaWtpLmh5b2dvLmpwIiwi''@;'; put 'put ''bWluYW1pYXdhamkuaHlvZ28uanAiLCJuaXNoaW5vbWl5YS5oeW9nby5qcCIsIm5pc2hpd2FraS5oeW9nby5qcCIsIm9uby5oeW9nby5qcCIsInNhbmRhLmh5b2dvLmpwIiwic2FubmFuLmh5b2dvLmpwIiwic2FzYXlhbWEuaHlvZ28uanAiLCJzYXlvLmh5b2dvLmpwIiwic2hpbmd1Lmh5b2dv''@;'; put 'put ''LmpwIiwic2hpbm9uc2VuLmh5b2dvLmpwIiwic2hpc28uaHlvZ28uanAiLCJzdW1vdG8uaHlvZ28uanAiLCJ0YWlzaGkuaHlvZ28uanAiLCJ0YWthLmh5b2dvLmpwIiwidGFrYXJhenVrYS5oeW9nby5qcCIsInRha2FzYWdvLmh5b2dvLmpwIiwidGFraW5vLmh5b2dvLmpwIiwidGFtYmEuaHlv''@;'; put 'put ''Z28uanAiLCJ0YXRzdW5vLmh5b2dvLmpwIiwidG95b29rYS5oeW9nby5qcCIsInlhYnUuaHlvZ28uanAiLCJ5YXNoaXJvLmh5b2dvLmpwIiwieW9rYS5oeW9nby5qcCIsInlva2F3YS5oeW9nby5qcCIsImFtaS5pYmFyYWtpLmpwIiwiYXNhaGkuaWJhcmFraS5qcCIsImJhbmRvLmliYXJha2ku''@;'; put 'put ''anAiLCJjaGlrdXNlaS5pYmFyYWtpLmpwIiwiZGFpZ28uaWJhcmFraS5qcCIsImZ1amlzaGlyby5pYmFyYWtpLmpwIiwiaGl0YWNoaS5pYmFyYWtpLmpwIiwiaGl0YWNoaW5ha2EuaWJhcmFraS5qcCIsImhpdGFjaGlvbWl5YS5pYmFyYWtpLmpwIiwiaGl0YWNoaW90YS5pYmFyYWtpLmpwIiwi''@;'; put 'put ''aWJhcmFraS5pYmFyYWtpLmpwIiwiaW5hLmliYXJha2kuanAiLCJpbmFzaGlraS5pYmFyYWtpLmpwIiwiaXRha28uaWJhcmFraS5qcCIsIml3YW1hLmliYXJha2kuanAiLCJqb3NvLmliYXJha2kuanAiLCJrYW1pc3UuaWJhcmFraS5qcCIsImthc2FtYS5pYmFyYWtpLmpwIiwia2FzaGltYS5p''@;'; put 'put ''YmFyYWtpLmpwIiwia2FzdW1pZ2F1cmEuaWJhcmFraS5qcCIsImtvZ2EuaWJhcmFraS5qcCIsIm1paG8uaWJhcmFraS5qcCIsIm1pdG8uaWJhcmFraS5qcCIsIm1vcml5YS5pYmFyYWtpLmpwIiwibmFrYS5pYmFyYWtpLmpwIiwibmFtZWdhdGEuaWJhcmFraS5qcCIsIm9hcmFpLmliYXJha2ku''@;'; put 'put ''anAiLCJvZ2F3YS5pYmFyYWtpLmpwIiwib21pdGFtYS5pYmFyYWtpLmpwIiwicnl1Z2FzYWtpLmliYXJha2kuanAiLCJzYWthaS5pYmFyYWtpLmpwIiwic2FrdXJhZ2F3YS5pYmFyYWtpLmpwIiwic2hpbW9kYXRlLmliYXJha2kuanAiLCJzaGltb3RzdW1hLmliYXJha2kuanAiLCJzaGlyb3Nh''@;'; put 'put ''dG8uaWJhcmFraS5qcCIsInNvd2EuaWJhcmFraS5qcCIsInN1aWZ1LmliYXJha2kuanAiLCJ0YWthaGFnaS5pYmFyYWtpLmpwIiwidGFtYXRzdWt1cmkuaWJhcmFraS5qcCIsInRva2FpLmliYXJha2kuanAiLCJ0b21vYmUuaWJhcmFraS5qcCIsInRvbmUuaWJhcmFraS5qcCIsInRvcmlkZS5p''@;'; put 'put ''YmFyYWtpLmpwIiwidHN1Y2hpdXJhLmliYXJha2kuanAiLCJ0c3VrdWJhLmliYXJha2kuanAiLCJ1Y2hpaGFyYS5pYmFyYWtpLmpwIiwidXNoaWt1LmliYXJha2kuanAiLCJ5YWNoaXlvLmliYXJha2kuanAiLCJ5YW1hZ2F0YS5pYmFyYWtpLmpwIiwieWF3YXJhLmliYXJha2kuanAiLCJ5dWtp''@;'; put 'put ''LmliYXJha2kuanAiLCJhbmFtaXp1LmlzaGlrYXdhLmpwIiwiaGFrdWkuaXNoaWthd2EuanAiLCJoYWt1c2FuLmlzaGlrYXdhLmpwIiwia2FnYS5pc2hpa2F3YS5qcCIsImthaG9rdS5pc2hpa2F3YS5qcCIsImthbmF6YXdhLmlzaGlrYXdhLmpwIiwia2F3YWtpdGEuaXNoaWthd2EuanAiLCJr''@;'; put 'put ''b21hdHN1LmlzaGlrYXdhLmpwIiwibmFrYW5vdG8uaXNoaWthd2EuanAiLCJuYW5hby5pc2hpa2F3YS5qcCIsIm5vbWkuaXNoaWthd2EuanAiLCJub25vaWNoaS5pc2hpa2F3YS5qcCIsIm5vdG8uaXNoaWthd2EuanAiLCJzaGlrYS5pc2hpa2F3YS5qcCIsInN1enUuaXNoaWthd2EuanAiLCJ0''@;'; put 'put ''c3ViYXRhLmlzaGlrYXdhLmpwIiwidHN1cnVnaS5pc2hpa2F3YS5qcCIsInVjaGluYWRhLmlzaGlrYXdhLmpwIiwid2FqaW1hLmlzaGlrYXdhLmpwIiwiZnVkYWkuaXdhdGUuanAiLCJmdWppc2F3YS5pd2F0ZS5qcCIsImhhbmFtYWtpLml3YXRlLmpwIiwiaGlyYWl6dW1pLml3YXRlLmpwIiwi''@;'; put 'put ''aGlyb25vLml3YXRlLmpwIiwiaWNoaW5vaGUuaXdhdGUuanAiLCJpY2hpbm9zZWtpLml3YXRlLmpwIiwiaXdhaXp1bWkuaXdhdGUuanAiLCJpd2F0ZS5pd2F0ZS5qcCIsImpvYm9qaS5pd2F0ZS5qcCIsImthbWFpc2hpLml3YXRlLmpwIiwia2FuZWdhc2FraS5pd2F0ZS5qcCIsImthcnVtYWku''@;'; put 'put ''aXdhdGUuanAiLCJrYXdhaS5pd2F0ZS5qcCIsImtpdGFrYW1pLml3YXRlLmpwIiwia3VqaS5pd2F0ZS5qcCIsImt1bm9oZS5pd2F0ZS5qcCIsImt1enVtYWtpLml3YXRlLmpwIiwibWl5YWtvLml3YXRlLmpwIiwibWl6dXNhd2EuaXdhdGUuanAiLCJtb3Jpb2thLml3YXRlLmpwIiwibmlub2hl''@;'; put 'put ''Lml3YXRlLmpwIiwibm9kYS5pd2F0ZS5qcCIsIm9mdW5hdG8uaXdhdGUuanAiLCJvc2h1Lml3YXRlLmpwIiwib3RzdWNoaS5pd2F0ZS5qcCIsInJpa3V6ZW50YWthdGEuaXdhdGUuanAiLCJzaGl3YS5pd2F0ZS5qcCIsInNoaXp1a3Vpc2hpLml3YXRlLmpwIiwic3VtaXRhLml3YXRlLmpwIiwi''@;'; put 'put ''dGFub2hhdGEuaXdhdGUuanAiLCJ0b25vLml3YXRlLmpwIiwieWFoYWJhLml3YXRlLmpwIiwieWFtYWRhLml3YXRlLmpwIiwiYXlhZ2F3YS5rYWdhd2EuanAiLCJoaWdhc2hpa2FnYXdhLmthZ2F3YS5qcCIsImthbm9uamkua2FnYXdhLmpwIiwia290b2hpcmEua2FnYXdhLmpwIiwibWFubm8u''@;'; put 'put ''a2FnYXdhLmpwIiwibWFydWdhbWUua2FnYXdhLmpwIiwibWl0b3lvLmthZ2F3YS5qcCIsIm5hb3NoaW1hLmthZ2F3YS5qcCIsInNhbnVraS5rYWdhd2EuanAiLCJ0YWRvdHN1LmthZ2F3YS5qcCIsInRha2FtYXRzdS5rYWdhd2EuanAiLCJ0b25vc2hvLmthZ2F3YS5qcCIsInVjaGlub21pLmth''@;'; put 'put ''Z2F3YS5qcCIsInV0YXp1LmthZ2F3YS5qcCIsInplbnRzdWppLmthZ2F3YS5qcCIsImFrdW5lLmthZ29zaGltYS5qcCIsImFtYW1pLmthZ29zaGltYS5qcCIsImhpb2tpLmthZ29zaGltYS5qcCIsImlzYS5rYWdvc2hpbWEuanAiLCJpc2VuLmthZ29zaGltYS5qcCIsIml6dW1pLmthZ29zaGlt''@;'; put 'put ''YS5qcCIsImthZ29zaGltYS5rYWdvc2hpbWEuanAiLCJrYW5veWEua2Fnb3NoaW1hLmpwIiwia2F3YW5hYmUua2Fnb3NoaW1hLmpwIiwia2lua28ua2Fnb3NoaW1hLmpwIiwia291eWFtYS5rYWdvc2hpbWEuanAiLCJtYWt1cmF6YWtpLmthZ29zaGltYS5qcCIsIm1hdHN1bW90by5rYWdvc2hp''@;'; put 'put ''bWEuanAiLCJtaW5hbWl0YW5lLmthZ29zaGltYS5qcCIsIm5ha2F0YW5lLmthZ29zaGltYS5qcCIsIm5pc2hpbm9vbW90ZS5rYWdvc2hpbWEuanAiLCJzYXRzdW1hc2VuZGFpLmthZ29zaGltYS5qcCIsInNvby5rYWdvc2hpbWEuanAiLCJ0YXJ1bWl6dS5rYWdvc2hpbWEuanAiLCJ5dXN1aS5r''@;'; put 'put ''YWdvc2hpbWEuanAiLCJhaWthd2Eua2FuYWdhd2EuanAiLCJhdHN1Z2kua2FuYWdhd2EuanAiLCJheWFzZS5rYW5hZ2F3YS5qcCIsImNoaWdhc2FraS5rYW5hZ2F3YS5qcCIsImViaW5hLmthbmFnYXdhLmpwIiwiZnVqaXNhd2Eua2FuYWdhd2EuanAiLCJoYWRhbm8ua2FuYWdhd2EuanAiLCJo''@;'; put 'put ''YWtvbmUua2FuYWdhd2EuanAiLCJoaXJhdHN1a2Eua2FuYWdhd2EuanAiLCJpc2VoYXJhLmthbmFnYXdhLmpwIiwia2Fpc2VpLmthbmFnYXdhLmpwIiwia2FtYWt1cmEua2FuYWdhd2EuanAiLCJraXlva2F3YS5rYW5hZ2F3YS5qcCIsIm1hdHN1ZGEua2FuYWdhd2EuanAiLCJtaW5hbWlhc2hp''@;'; put 'put ''Z2FyYS5rYW5hZ2F3YS5qcCIsIm1pdXJhLmthbmFnYXdhLmpwIiwibmFrYWkua2FuYWdhd2EuanAiLCJuaW5vbWl5YS5rYW5hZ2F3YS5qcCIsIm9kYXdhcmEua2FuYWdhd2EuanAiLCJvaS5rYW5hZ2F3YS5qcCIsIm9pc28ua2FuYWdhd2EuanAiLCJzYWdhbWloYXJhLmthbmFnYXdhLmpwIiwi''@;'; put 'put ''c2FtdWthd2Eua2FuYWdhd2EuanAiLCJ0c3VrdWkua2FuYWdhd2EuanAiLCJ5YW1ha2l0YS5rYW5hZ2F3YS5qcCIsInlhbWF0by5rYW5hZ2F3YS5qcCIsInlva29zdWthLmthbmFnYXdhLmpwIiwieXVnYXdhcmEua2FuYWdhd2EuanAiLCJ6YW1hLmthbmFnYXdhLmpwIiwienVzaGkua2FuYWdh''@;'; put 'put ''d2EuanAiLCJha2kua29jaGkuanAiLCJnZWlzZWkua29jaGkuanAiLCJoaWRha2Eua29jaGkuanAiLCJoaWdhc2hpdHN1bm8ua29jaGkuanAiLCJpbm8ua29jaGkuanAiLCJrYWdhbWkua29jaGkuanAiLCJrYW1pLmtvY2hpLmpwIiwia2l0YWdhd2Eua29jaGkuanAiLCJrb2NoaS5rb2NoaS5q''@;'; put 'put ''cCIsIm1paGFyYS5rb2NoaS5qcCIsIm1vdG95YW1hLmtvY2hpLmpwIiwibXVyb3RvLmtvY2hpLmpwIiwibmFoYXJpLmtvY2hpLmpwIiwibmFrYW11cmEua29jaGkuanAiLCJuYW5rb2t1LmtvY2hpLmpwIiwibmlzaGl0b3NhLmtvY2hpLmpwIiwibml5b2RvZ2F3YS5rb2NoaS5qcCIsIm9jaGku''@;'; put 'put ''a29jaGkuanAiLCJva2F3YS5rb2NoaS5qcCIsIm90b3lvLmtvY2hpLmpwIiwib3RzdWtpLmtvY2hpLmpwIiwic2FrYXdhLmtvY2hpLmpwIiwic3VrdW1vLmtvY2hpLmpwIiwic3VzYWtpLmtvY2hpLmpwIiwidG9zYS5rb2NoaS5qcCIsInRvc2FzaGltaXp1LmtvY2hpLmpwIiwidG95by5rb2No''@;'; put 'put ''aS5qcCIsInRzdW5vLmtvY2hpLmpwIiwidW1hamkua29jaGkuanAiLCJ5YXN1ZGEua29jaGkuanAiLCJ5dXN1aGFyYS5rb2NoaS5qcCIsImFtYWt1c2Eua3VtYW1vdG8uanAiLCJhcmFvLmt1bWFtb3RvLmpwIiwiYXNvLmt1bWFtb3RvLmpwIiwiY2hveW8ua3VtYW1vdG8uanAiLCJneW9rdXRv''@;'; put 'put ''Lmt1bWFtb3RvLmpwIiwia2FtaWFtYWt1c2Eua3VtYW1vdG8uanAiLCJraWt1Y2hpLmt1bWFtb3RvLmpwIiwia3VtYW1vdG8ua3VtYW1vdG8uanAiLCJtYXNoaWtpLmt1bWFtb3RvLmpwIiwibWlmdW5lLmt1bWFtb3RvLmpwIiwibWluYW1hdGEua3VtYW1vdG8uanAiLCJtaW5hbWlvZ3VuaS5r''@;'; put 'put ''dW1hbW90by5qcCIsIm5hZ2FzdS5rdW1hbW90by5qcCIsIm5pc2hpaGFyYS5rdW1hbW90by5qcCIsIm9ndW5pLmt1bWFtb3RvLmpwIiwib3p1Lmt1bWFtb3RvLmpwIiwic3Vtb3RvLmt1bWFtb3RvLmpwIiwidGFrYW1vcmkua3VtYW1vdG8uanAiLCJ1a2kua3VtYW1vdG8uanAiLCJ1dG8ua3Vt''@;'; put 'put ''YW1vdG8uanAiLCJ5YW1hZ2Eua3VtYW1vdG8uanAiLCJ5YW1hdG8ua3VtYW1vdG8uanAiLCJ5YXRzdXNoaXJvLmt1bWFtb3RvLmpwIiwiYXlhYmUua3lvdG8uanAiLCJmdWt1Y2hpeWFtYS5reW90by5qcCIsImhpZ2FzaGl5YW1hLmt5b3RvLmpwIiwiaWRlLmt5b3RvLmpwIiwiaW5lLmt5b3Rv''@;'; put 'put ''LmpwIiwiam95by5reW90by5qcCIsImthbWVva2Eua3lvdG8uanAiLCJrYW1vLmt5b3RvLmpwIiwia2l0YS5reW90by5qcCIsImtpenUua3lvdG8uanAiLCJrdW1peWFtYS5reW90by5qcCIsImt5b3RhbWJhLmt5b3RvLmpwIiwia3lvdGFuYWJlLmt5b3RvLmpwIiwia3lvdGFuZ28ua3lvdG8u''@;'; put 'put ''anAiLCJtYWl6dXJ1Lmt5b3RvLmpwIiwibWluYW1pLmt5b3RvLmpwIiwibWluYW1peWFtYXNoaXJvLmt5b3RvLmpwIiwibWl5YXp1Lmt5b3RvLmpwIiwibXVrby5reW90by5qcCIsIm5hZ2Fva2FreW8ua3lvdG8uanAiLCJuYWthZ3lvLmt5b3RvLmpwIiwibmFudGFuLmt5b3RvLmpwIiwib3lh''@;'; put 'put ''bWF6YWtpLmt5b3RvLmpwIiwic2FreW8ua3lvdG8uanAiLCJzZWlrYS5reW90by5qcCIsInRhbmFiZS5reW90by5qcCIsInVqaS5reW90by5qcCIsInVqaXRhd2FyYS5reW90by5qcCIsIndhenVrYS5reW90by5qcCIsInlhbWFzaGluYS5reW90by5qcCIsInlhd2F0YS5reW90by5qcCIsImFz''@;'; put 'put ''YWhpLm1pZS5qcCIsImluYWJlLm1pZS5qcCIsImlzZS5taWUuanAiLCJrYW1leWFtYS5taWUuanAiLCJrYXdhZ29lLm1pZS5qcCIsImtpaG8ubWllLmpwIiwia2lzb3Nha2kubWllLmpwIiwia2l3YS5taWUuanAiLCJrb21vbm8ubWllLmpwIiwia3VtYW5vLm1pZS5qcCIsImt1d2FuYS5taWUu''@;'; put 'put ''anAiLCJtYXRzdXNha2EubWllLmpwIiwibWVpd2EubWllLmpwIiwibWloYW1hLm1pZS5qcCIsIm1pbmFtaWlzZS5taWUuanAiLCJtaXN1Z2kubWllLmpwIiwibWl5YW1hLm1pZS5qcCIsIm5hYmFyaS5taWUuanAiLCJzaGltYS5taWUuanAiLCJzdXp1a2EubWllLmpwIiwidGFkby5taWUuanAi''@;'; put 'put ''LCJ0YWlraS5taWUuanAiLCJ0YWtpLm1pZS5qcCIsInRhbWFraS5taWUuanAiLCJ0b2JhLm1pZS5qcCIsInRzdS5taWUuanAiLCJ1ZG9uby5taWUuanAiLCJ1cmVzaGluby5taWUuanAiLCJ3YXRhcmFpLm1pZS5qcCIsInlva2thaWNoaS5taWUuanAiLCJmdXJ1a2F3YS5taXlhZ2kuanAiLCJo''@;'; put 'put ''aWdhc2hpbWF0c3VzaGltYS5taXlhZ2kuanAiLCJpc2hpbm9tYWtpLm1peWFnaS5qcCIsIml3YW51bWEubWl5YWdpLmpwIiwia2FrdWRhLm1peWFnaS5qcCIsImthbWkubWl5YWdpLmpwIiwia2F3YXNha2kubWl5YWdpLmpwIiwibWFydW1vcmkubWl5YWdpLmpwIiwibWF0c3VzaGltYS5taXlh''@;'; put 'put ''Z2kuanAiLCJtaW5hbWlzYW5yaWt1Lm1peWFnaS5qcCIsIm1pc2F0by5taXlhZ2kuanAiLCJtdXJhdGEubWl5YWdpLmpwIiwibmF0b3JpLm1peWFnaS5qcCIsIm9nYXdhcmEubWl5YWdpLmpwIiwib2hpcmEubWl5YWdpLmpwIiwib25hZ2F3YS5taXlhZ2kuanAiLCJvc2FraS5taXlhZ2kuanAi''@;'; put 'put ''LCJyaWZ1Lm1peWFnaS5qcCIsInNlbWluZS5taXlhZ2kuanAiLCJzaGliYXRhLm1peWFnaS5qcCIsInNoaWNoaWthc2h1a3UubWl5YWdpLmpwIiwic2hpa2FtYS5taXlhZ2kuanAiLCJzaGlvZ2FtYS5taXlhZ2kuanAiLCJzaGlyb2lzaGkubWl5YWdpLmpwIiwidGFnYWpvLm1peWFnaS5qcCIs''@;'; put 'put ''InRhaXdhLm1peWFnaS5qcCIsInRvbWUubWl5YWdpLmpwIiwidG9taXlhLm1peWFnaS5qcCIsIndha3V5YS5taXlhZ2kuanAiLCJ3YXRhcmkubWl5YWdpLmpwIiwieWFtYW1vdG8ubWl5YWdpLmpwIiwiemFvLm1peWFnaS5qcCIsImF5YS5taXlhemFraS5qcCIsImViaW5vLm1peWF6YWtpLmpw''@;'; put 'put ''IiwiZ29rYXNlLm1peWF6YWtpLmpwIiwiaHl1Z2EubWl5YXpha2kuanAiLCJrYWRvZ2F3YS5taXlhemFraS5qcCIsImthd2FtaW5hbWkubWl5YXpha2kuanAiLCJraWpvLm1peWF6YWtpLmpwIiwia2l0YWdhd2EubWl5YXpha2kuanAiLCJraXRha2F0YS5taXlhemFraS5qcCIsImtpdGF1cmEu''@;'; put 'put ''bWl5YXpha2kuanAiLCJrb2JheWFzaGkubWl5YXpha2kuanAiLCJrdW5pdG9taS5taXlhemFraS5qcCIsImt1c2hpbWEubWl5YXpha2kuanAiLCJtaW1hdGEubWl5YXpha2kuanAiLCJtaXlha29ub2pvLm1peWF6YWtpLmpwIiwibWl5YXpha2kubWl5YXpha2kuanAiLCJtb3JvdHN1a2EubWl5''@;'; put 'put ''YXpha2kuanAiLCJuaWNoaW5hbi5taXlhemFraS5qcCIsIm5pc2hpbWVyYS5taXlhemFraS5qcCIsIm5vYmVva2EubWl5YXpha2kuanAiLCJzYWl0by5taXlhemFraS5qcCIsInNoaWliYS5taXlhemFraS5qcCIsInNoaW50b21pLm1peWF6YWtpLmpwIiwidGFrYWhhcnUubWl5YXpha2kuanAi''@;'; put 'put ''LCJ0YWthbmFiZS5taXlhemFraS5qcCIsInRha2F6YWtpLm1peWF6YWtpLmpwIiwidHN1bm8ubWl5YXpha2kuanAiLCJhY2hpLm5hZ2Fuby5qcCIsImFnZW1hdHN1Lm5hZ2Fuby5qcCIsImFuYW4ubmFnYW5vLmpwIiwiYW9raS5uYWdhbm8uanAiLCJhc2FoaS5uYWdhbm8uanAiLCJhenVtaW5v''@;'; put 'put ''Lm5hZ2Fuby5qcCIsImNoaWt1aG9rdS5uYWdhbm8uanAiLCJjaGlrdW1hLm5hZ2Fuby5qcCIsImNoaW5vLm5hZ2Fuby5qcCIsImZ1amltaS5uYWdhbm8uanAiLCJoYWt1YmEubmFnYW5vLmpwIiwiaGFyYS5uYWdhbm8uanAiLCJoaXJheWEubmFnYW5vLmpwIiwiaWlkYS5uYWdhbm8uanAiLCJp''@;'; put 'put ''aWppbWEubmFnYW5vLmpwIiwiaWl5YW1hLm5hZ2Fuby5qcCIsImlpenVuYS5uYWdhbm8uanAiLCJpa2VkYS5uYWdhbm8uanAiLCJpa3VzYWthLm5hZ2Fuby5qcCIsImluYS5uYWdhbm8uanAiLCJrYXJ1aXphd2EubmFnYW5vLmpwIiwia2F3YWthbWkubmFnYW5vLmpwIiwia2lzby5uYWdhbm8u''@;'; put 'put ''anAiLCJraXNvZnVrdXNoaW1hLm5hZ2Fuby5qcCIsImtpdGFhaWtpLm5hZ2Fuby5qcCIsImtvbWFnYW5lLm5hZ2Fuby5qcCIsImtvbW9yby5uYWdhbm8uanAiLCJtYXRzdWthd2EubmFnYW5vLmpwIiwibWF0c3Vtb3RvLm5hZ2Fuby5qcCIsIm1pYXNhLm5hZ2Fuby5qcCIsIm1pbmFtaWFpa2ku''@;'; put 'put ''bmFnYW5vLmpwIiwibWluYW1pbWFraS5uYWdhbm8uanAiLCJtaW5hbWltaW5vd2EubmFnYW5vLmpwIiwibWlub3dhLm5hZ2Fuby5qcCIsIm1peWFkYS5uYWdhbm8uanAiLCJtaXlvdGEubmFnYW5vLmpwIiwibW9jaGl6dWtpLm5hZ2Fuby5qcCIsIm5hZ2Fuby5uYWdhbm8uanAiLCJuYWdhd2Eu''@;'; put 'put ''bmFnYW5vLmpwIiwibmFnaXNvLm5hZ2Fuby5qcCIsIm5ha2FnYXdhLm5hZ2Fuby5qcCIsIm5ha2Fuby5uYWdhbm8uanAiLCJub3phd2FvbnNlbi5uYWdhbm8uanAiLCJvYnVzZS5uYWdhbm8uanAiLCJvZ2F3YS5uYWdhbm8uanAiLCJva2F5YS5uYWdhbm8uanAiLCJvbWFjaGkubmFnYW5vLmpw''@;'; put 'put ''Iiwib21pLm5hZ2Fuby5qcCIsIm9va3V3YS5uYWdhbm8uanAiLCJvb3NoaWthLm5hZ2Fuby5qcCIsIm90YWtpLm5hZ2Fuby5qcCIsIm90YXJpLm5hZ2Fuby5qcCIsInNha2FlLm5hZ2Fuby5qcCIsInNha2FraS5uYWdhbm8uanAiLCJzYWt1Lm5hZ2Fuby5qcCIsInNha3Voby5uYWdhbm8uanAi''@;'; put 'put ''LCJzaGltb3N1d2EubmFnYW5vLmpwIiwic2hpbmFub21hY2hpLm5hZ2Fuby5qcCIsInNoaW9qaXJpLm5hZ2Fuby5qcCIsInN1d2EubmFnYW5vLmpwIiwic3V6YWthLm5hZ2Fuby5qcCIsInRha2FnaS5uYWdhbm8uanAiLCJ0YWthbW9yaS5uYWdhbm8uanAiLCJ0YWtheWFtYS5uYWdhbm8uanAi''@;'; put 'put ''LCJ0YXRlc2hpbmEubmFnYW5vLmpwIiwidGF0c3Vuby5uYWdhbm8uanAiLCJ0b2dha3VzaGkubmFnYW5vLmpwIiwidG9ndXJhLm5hZ2Fuby5qcCIsInRvbWkubmFnYW5vLmpwIiwidWVkYS5uYWdhbm8uanAiLCJ3YWRhLm5hZ2Fuby5qcCIsInlhbWFnYXRhLm5hZ2Fuby5qcCIsInlhbWFub3Vj''@;'; put 'put ''aGkubmFnYW5vLmpwIiwieWFzYWthLm5hZ2Fuby5qcCIsInlhc3Vva2EubmFnYW5vLmpwIiwiY2hpaml3YS5uYWdhc2FraS5qcCIsImZ1dHN1Lm5hZ2FzYWtpLmpwIiwiZ290by5uYWdhc2FraS5qcCIsImhhc2FtaS5uYWdhc2FraS5qcCIsImhpcmFkby5uYWdhc2FraS5qcCIsImlraS5uYWdh''@;'; put 'put ''c2FraS5qcCIsImlzYWhheWEubmFnYXNha2kuanAiLCJrYXdhdGFuYS5uYWdhc2FraS5qcCIsImt1Y2hpbm90c3UubmFnYXNha2kuanAiLCJtYXRzdXVyYS5uYWdhc2FraS5qcCIsIm5hZ2FzYWtpLm5hZ2FzYWtpLmpwIiwib2JhbWEubmFnYXNha2kuanAiLCJvbXVyYS5uYWdhc2FraS5qcCIs''@;'; put 'put ''Im9zZXRvLm5hZ2FzYWtpLmpwIiwic2Fpa2FpLm5hZ2FzYWtpLmpwIiwic2FzZWJvLm5hZ2FzYWtpLmpwIiwic2VpaGkubmFnYXNha2kuanAiLCJzaGltYWJhcmEubmFnYXNha2kuanAiLCJzaGlua2FtaWdvdG8ubmFnYXNha2kuanAiLCJ0b2dpdHN1Lm5hZ2FzYWtpLmpwIiwidHN1c2hpbWEu''@;'; put 'put ''bmFnYXNha2kuanAiLCJ1bnplbi5uYWdhc2FraS5qcCIsImFuZG8ubmFyYS5qcCIsImdvc2UubmFyYS5qcCIsImhlZ3VyaS5uYXJhLmpwIiwiaGlnYXNoaXlvc2hpbm8ubmFyYS5qcCIsImlrYXJ1Z2EubmFyYS5qcCIsImlrb21hLm5hcmEuanAiLCJrYW1pa2l0YXlhbWEubmFyYS5qcCIsImth''@;'; put 'put ''bm1ha2kubmFyYS5qcCIsImthc2hpYmEubmFyYS5qcCIsImthc2hpaGFyYS5uYXJhLmpwIiwia2F0c3VyYWdpLm5hcmEuanAiLCJrYXdhaS5uYXJhLmpwIiwia2F3YWthbWkubmFyYS5qcCIsImthd2FuaXNoaS5uYXJhLmpwIiwia29yeW8ubmFyYS5qcCIsImt1cm90YWtpLm5hcmEuanAiLCJt''@;'; put 'put ''aXRzdWUubmFyYS5qcCIsIm1peWFrZS5uYXJhLmpwIiwibmFyYS5uYXJhLmpwIiwibm9zZWdhd2EubmFyYS5qcCIsIm9qaS5uYXJhLmpwIiwib3VkYS5uYXJhLmpwIiwib3lvZG8ubmFyYS5qcCIsInNha3VyYWkubmFyYS5qcCIsInNhbmdvLm5hcmEuanAiLCJzaGltb2ljaGkubmFyYS5qcCIs''@;'; put 'put ''InNoaW1va2l0YXlhbWEubmFyYS5qcCIsInNoaW5qby5uYXJhLmpwIiwic29uaS5uYXJhLmpwIiwidGFrYXRvcmkubmFyYS5qcCIsInRhd2FyYW1vdG8ubmFyYS5qcCIsInRlbmthd2EubmFyYS5qcCIsInRlbnJpLm5hcmEuanAiLCJ1ZGEubmFyYS5qcCIsInlhbWF0b2tvcml5YW1hLm5hcmEu''@;'; put 'put ''anAiLCJ5YW1hdG90YWthZGEubmFyYS5qcCIsInlhbWF6b2UubmFyYS5qcCIsInlvc2hpbm8ubmFyYS5qcCIsImFnYS5uaWlnYXRhLmpwIiwiYWdhbm8ubmlpZ2F0YS5qcCIsImdvc2VuLm5paWdhdGEuanAiLCJpdG9pZ2F3YS5uaWlnYXRhLmpwIiwiaXp1bW96YWtpLm5paWdhdGEuanAiLCJq''@;'; put 'put ''b2V0c3UubmlpZ2F0YS5qcCIsImthbW8ubmlpZ2F0YS5qcCIsImthcml3YS5uaWlnYXRhLmpwIiwia2FzaGl3YXpha2kubmlpZ2F0YS5qcCIsIm1pbmFtaXVvbnVtYS5uaWlnYXRhLmpwIiwibWl0c3VrZS5uaWlnYXRhLmpwIiwibXVpa2EubmlpZ2F0YS5qcCIsIm11cmFrYW1pLm5paWdhdGEu''@;'; put 'put ''anAiLCJteW9rby5uaWlnYXRhLmpwIiwibmFnYW9rYS5uaWlnYXRhLmpwIiwibmlpZ2F0YS5uaWlnYXRhLmpwIiwib2ppeWEubmlpZ2F0YS5qcCIsIm9taS5uaWlnYXRhLmpwIiwic2Fkby5uaWlnYXRhLmpwIiwic2Fuam8ubmlpZ2F0YS5qcCIsInNlaXJvLm5paWdhdGEuanAiLCJzZWlyb3Uu''@;'; put 'put ''bmlpZ2F0YS5qcCIsInNla2lrYXdhLm5paWdhdGEuanAiLCJzaGliYXRhLm5paWdhdGEuanAiLCJ0YWdhbWkubmlpZ2F0YS5qcCIsInRhaW5haS5uaWlnYXRhLmpwIiwidG9jaGlvLm5paWdhdGEuanAiLCJ0b2thbWFjaGkubmlpZ2F0YS5qcCIsInRzdWJhbWUubmlpZ2F0YS5qcCIsInRzdW5h''@;'; put 'put ''bi5uaWlnYXRhLmpwIiwidW9udW1hLm5paWdhdGEuanAiLCJ5YWhpa28ubmlpZ2F0YS5qcCIsInlvaXRhLm5paWdhdGEuanAiLCJ5dXphd2EubmlpZ2F0YS5qcCIsImJlcHB1Lm9pdGEuanAiLCJidW5nb29uby5vaXRhLmpwIiwiYnVuZ290YWthZGEub2l0YS5qcCIsImhhc2FtYS5vaXRhLmpw''@;'; put 'put ''IiwiaGlqaS5vaXRhLmpwIiwiaGltZXNoaW1hLm9pdGEuanAiLCJoaXRhLm9pdGEuanAiLCJrYW1pdHN1ZS5vaXRhLmpwIiwia29rb25vZS5vaXRhLmpwIiwia3VqdS5vaXRhLmpwIiwia3VuaXNha2kub2l0YS5qcCIsImt1c3Uub2l0YS5qcCIsIm9pdGEub2l0YS5qcCIsInNhaWtpLm9pdGEu''@;'; put 'put ''anAiLCJ0YWtldGEub2l0YS5qcCIsInRzdWt1bWkub2l0YS5qcCIsInVzYS5vaXRhLmpwIiwidXN1a2kub2l0YS5qcCIsInl1ZnUub2l0YS5qcCIsImFrYWl3YS5va2F5YW1hLmpwIiwiYXNha3VjaGkub2theWFtYS5qcCIsImJpemVuLm9rYXlhbWEuanAiLCJoYXlhc2hpbWEub2theWFtYS5q''@;'; put 'put ''cCIsImliYXJhLm9rYXlhbWEuanAiLCJrYWdhbWluby5va2F5YW1hLmpwIiwia2FzYW9rYS5va2F5YW1hLmpwIiwia2liaWNodW8ub2theWFtYS5qcCIsImt1bWVuYW4ub2theWFtYS5qcCIsImt1cmFzaGlraS5va2F5YW1hLmpwIiwibWFuaXdhLm9rYXlhbWEuanAiLCJtaXNha2kub2theWFt''@;'; put 'put ''YS5qcCIsIm5hZ2kub2theWFtYS5qcCIsIm5paW1pLm9rYXlhbWEuanAiLCJuaXNoaWF3YWt1cmEub2theWFtYS5qcCIsIm9rYXlhbWEub2theWFtYS5qcCIsInNhdG9zaG8ub2theWFtYS5qcCIsInNldG91Y2hpLm9rYXlhbWEuanAiLCJzaGluam8ub2theWFtYS5qcCIsInNob28ub2theWFt''@;'; put 'put ''YS5qcCIsInNvamEub2theWFtYS5qcCIsInRha2FoYXNoaS5va2F5YW1hLmpwIiwidGFtYW5vLm9rYXlhbWEuanAiLCJ0c3V5YW1hLm9rYXlhbWEuanAiLCJ3YWtlLm9rYXlhbWEuanAiLCJ5YWthZ2Uub2theWFtYS5qcCIsImFndW5pLm9raW5hd2EuanAiLCJnaW5vd2FuLm9raW5hd2EuanAi''@;'; put 'put ''LCJnaW5vemEub2tpbmF3YS5qcCIsImd1c2hpa2FtaS5va2luYXdhLmpwIiwiaGFlYmFydS5va2luYXdhLmpwIiwiaGlnYXNoaS5va2luYXdhLmpwIiwiaGlyYXJhLm9raW5hd2EuanAiLCJpaGV5YS5va2luYXdhLmpwIiwiaXNoaWdha2kub2tpbmF3YS5qcCIsImlzaGlrYXdhLm9raW5hd2Eu''@;'; put 'put ''anAiLCJpdG9tYW4ub2tpbmF3YS5qcCIsIml6ZW5hLm9raW5hd2EuanAiLCJrYWRlbmEub2tpbmF3YS5qcCIsImtpbi5va2luYXdhLmpwIiwia2l0YWRhaXRvLm9raW5hd2EuanAiLCJraXRhbmFrYWd1c3VrdS5va2luYXdhLmpwIiwia3VtZWppbWEub2tpbmF3YS5qcCIsImt1bmlnYW1pLm9r''@;'; put 'put ''aW5hd2EuanAiLCJtaW5hbWlkYWl0by5va2luYXdhLmpwIiwibW90b2J1Lm9raW5hd2EuanAiLCJuYWdvLm9raW5hd2EuanAiLCJuYWhhLm9raW5hd2EuanAiLCJuYWthZ3VzdWt1Lm9raW5hd2EuanAiLCJuYWtpamluLm9raW5hd2EuanAiLCJuYW5qby5va2luYXdhLmpwIiwibmlzaGloYXJh''@;'; put 'put ''Lm9raW5hd2EuanAiLCJvZ2ltaS5va2luYXdhLmpwIiwib2tpbmF3YS5va2luYXdhLmpwIiwib25uYS5va2luYXdhLmpwIiwic2hpbW9qaS5va2luYXdhLmpwIiwidGFrZXRvbWkub2tpbmF3YS5qcCIsInRhcmFtYS5va2luYXdhLmpwIiwidG9rYXNoaWtpLm9raW5hd2EuanAiLCJ0b21pZ3Vz''@;'; put 'put ''dWt1Lm9raW5hd2EuanAiLCJ0b25ha2kub2tpbmF3YS5qcCIsInVyYXNvZS5va2luYXdhLmpwIiwidXJ1bWEub2tpbmF3YS5qcCIsInlhZXNlLm9raW5hd2EuanAiLCJ5b21pdGFuLm9raW5hd2EuanAiLCJ5b25hYmFydS5va2luYXdhLmpwIiwieW9uYWd1bmkub2tpbmF3YS5qcCIsInphbWFt''@;'; put 'put ''aS5va2luYXdhLmpwIiwiYWJlbm8ub3Nha2EuanAiLCJjaGloYXlhYWthc2FrYS5vc2FrYS5qcCIsImNodW8ub3Nha2EuanAiLCJkYWl0by5vc2FrYS5qcCIsImZ1amlpZGVyYS5vc2FrYS5qcCIsImhhYmlraW5vLm9zYWthLmpwIiwiaGFubmFuLm9zYWthLmpwIiwiaGlnYXNoaW9zYWthLm9z''@;'; put 'put ''YWthLmpwIiwiaGlnYXNoaXN1bWl5b3NoaS5vc2FrYS5qcCIsImhpZ2FzaGl5b2RvZ2F3YS5vc2FrYS5qcCIsImhpcmFrYXRhLm9zYWthLmpwIiwiaWJhcmFraS5vc2FrYS5qcCIsImlrZWRhLm9zYWthLmpwIiwiaXp1bWkub3Nha2EuanAiLCJpenVtaW90c3Uub3Nha2EuanAiLCJpenVtaXNh''@;'; put 'put ''bm8ub3Nha2EuanAiLCJrYWRvbWEub3Nha2EuanAiLCJrYWl6dWthLm9zYWthLmpwIiwia2FuYW4ub3Nha2EuanAiLCJrYXNoaXdhcmEub3Nha2EuanAiLCJrYXRhbm8ub3Nha2EuanAiLCJrYXdhY2hpbmFnYW5vLm9zYWthLmpwIiwia2lzaGl3YWRhLm9zYWthLmpwIiwia2l0YS5vc2FrYS5q''@;'; put 'put ''cCIsImt1bWF0b3JpLm9zYWthLmpwIiwibWF0c3ViYXJhLm9zYWthLmpwIiwibWluYXRvLm9zYWthLmpwIiwibWlub2gub3Nha2EuanAiLCJtaXNha2kub3Nha2EuanAiLCJtb3JpZ3VjaGkub3Nha2EuanAiLCJuZXlhZ2F3YS5vc2FrYS5qcCIsIm5pc2hpLm9zYWthLmpwIiwibm9zZS5vc2Fr''@;'; put 'put ''YS5qcCIsIm9zYWthc2F5YW1hLm9zYWthLmpwIiwic2FrYWkub3Nha2EuanAiLCJzYXlhbWEub3Nha2EuanAiLCJzZW5uYW4ub3Nha2EuanAiLCJzZXR0c3Uub3Nha2EuanAiLCJzaGlqb25hd2F0ZS5vc2FrYS5qcCIsInNoaW1hbW90by5vc2FrYS5qcCIsInN1aXRhLm9zYWthLmpwIiwidGFk''@;'; put 'put ''YW9rYS5vc2FrYS5qcCIsInRhaXNoaS5vc2FrYS5qcCIsInRhamlyaS5vc2FrYS5qcCIsInRha2Fpc2hpLm9zYWthLmpwIiwidGFrYXRzdWtpLm9zYWthLmpwIiwidG9uZGFiYXlhc2hpLm9zYWthLmpwIiwidG95b25ha2Eub3Nha2EuanAiLCJ0b3lvbm8ub3Nha2EuanAiLCJ5YW8ub3Nha2Eu''@;'; put 'put ''anAiLCJhcmlha2Uuc2FnYS5qcCIsImFyaXRhLnNhZ2EuanAiLCJmdWt1ZG9taS5zYWdhLmpwIiwiZ2Vua2FpLnNhZ2EuanAiLCJoYW1hdGFtYS5zYWdhLmpwIiwiaGl6ZW4uc2FnYS5qcCIsImltYXJpLnNhZ2EuanAiLCJrYW1pbWluZS5zYWdhLmpwIiwia2FuemFraS5zYWdhLmpwIiwia2Fy''@;'; put 'put ''YXRzdS5zYWdhLmpwIiwia2FzaGltYS5zYWdhLmpwIiwia2l0YWdhdGEuc2FnYS5qcCIsImtpdGFoYXRhLnNhZ2EuanAiLCJraXlhbWEuc2FnYS5qcCIsImtvdWhva3Uuc2FnYS5qcCIsImt5dXJhZ2kuc2FnYS5qcCIsIm5pc2hpYXJpdGEuc2FnYS5qcCIsIm9naS5zYWdhLmpwIiwib21hY2hp''@;'; put 'put ''LnNhZ2EuanAiLCJvdWNoaS5zYWdhLmpwIiwic2FnYS5zYWdhLmpwIiwic2hpcm9pc2hpLnNhZ2EuanAiLCJ0YWt1LnNhZ2EuanAiLCJ0YXJhLnNhZ2EuanAiLCJ0b3N1LnNhZ2EuanAiLCJ5b3NoaW5vZ2FyaS5zYWdhLmpwIiwiYXJha2F3YS5zYWl0YW1hLmpwIiwiYXNha2Euc2FpdGFtYS5q''@;'; put 'put ''cCIsImNoaWNoaWJ1LnNhaXRhbWEuanAiLCJmdWppbWkuc2FpdGFtYS5qcCIsImZ1amltaW5vLnNhaXRhbWEuanAiLCJmdWtheWEuc2FpdGFtYS5qcCIsImhhbm5vLnNhaXRhbWEuanAiLCJoYW55dS5zYWl0YW1hLmpwIiwiaGFzdWRhLnNhaXRhbWEuanAiLCJoYXRvZ2F5YS5zYWl0YW1hLmpw''@;'; put 'put ''IiwiaGF0b3lhbWEuc2FpdGFtYS5qcCIsImhpZGFrYS5zYWl0YW1hLmpwIiwiaGlnYXNoaWNoaWNoaWJ1LnNhaXRhbWEuanAiLCJoaWdhc2hpbWF0c3V5YW1hLnNhaXRhbWEuanAiLCJob25qby5zYWl0YW1hLmpwIiwiaW5hLnNhaXRhbWEuanAiLCJpcnVtYS5zYWl0YW1hLmpwIiwiaXdhdHN1''@;'; put 'put ''a2kuc2FpdGFtYS5qcCIsImthbWlpenVtaS5zYWl0YW1hLmpwIiwia2FtaWthd2Euc2FpdGFtYS5qcCIsImthbWlzYXRvLnNhaXRhbWEuanAiLCJrYXN1a2FiZS5zYWl0YW1hLmpwIiwia2F3YWdvZS5zYWl0YW1hLmpwIiwia2F3YWd1Y2hpLnNhaXRhbWEuanAiLCJrYXdhamltYS5zYWl0YW1h''@;'; put 'put ''LmpwIiwia2F6by5zYWl0YW1hLmpwIiwia2l0YW1vdG8uc2FpdGFtYS5qcCIsImtvc2hpZ2F5YS5zYWl0YW1hLmpwIiwia291bm9zdS5zYWl0YW1hLmpwIiwia3VraS5zYWl0YW1hLmpwIiwia3VtYWdheWEuc2FpdGFtYS5qcCIsIm1hdHN1YnVzaGkuc2FpdGFtYS5qcCIsIm1pbmFuby5zYWl0''@;'; put 'put ''YW1hLmpwIiwibWlzYXRvLnNhaXRhbWEuanAiLCJtaXlhc2hpcm8uc2FpdGFtYS5qcCIsIm1peW9zaGkuc2FpdGFtYS5qcCIsIm1vcm95YW1hLnNhaXRhbWEuanAiLCJuYWdhdG9yby5zYWl0YW1hLmpwIiwibmFtZWdhd2Euc2FpdGFtYS5qcCIsIm5paXphLnNhaXRhbWEuanAiLCJvZ2Fuby5z''@;'; put 'put ''YWl0YW1hLmpwIiwib2dhd2Euc2FpdGFtYS5qcCIsIm9nb3NlLnNhaXRhbWEuanAiLCJva2VnYXdhLnNhaXRhbWEuanAiLCJvbWl5YS5zYWl0YW1hLmpwIiwib3Rha2kuc2FpdGFtYS5qcCIsInJhbnphbi5zYWl0YW1hLmpwIiwicnlva2FtaS5zYWl0YW1hLmpwIiwic2FpdGFtYS5zYWl0YW1h''@;'; put 'put ''LmpwIiwic2FrYWRvLnNhaXRhbWEuanAiLCJzYXR0ZS5zYWl0YW1hLmpwIiwic2F5YW1hLnNhaXRhbWEuanAiLCJzaGlraS5zYWl0YW1hLmpwIiwic2hpcmFva2Euc2FpdGFtYS5qcCIsInNva2Euc2FpdGFtYS5qcCIsInN1Z2l0by5zYWl0YW1hLmpwIiwidG9kYS5zYWl0YW1hLmpwIiwidG9r''@;'; put 'put ''aWdhd2Euc2FpdGFtYS5qcCIsInRva29yb3phd2Euc2FpdGFtYS5qcCIsInRzdXJ1Z2FzaGltYS5zYWl0YW1hLmpwIiwidXJhd2Euc2FpdGFtYS5qcCIsIndhcmFiaS5zYWl0YW1hLmpwIiwieWFzaGlvLnNhaXRhbWEuanAiLCJ5b2tvemUuc2FpdGFtYS5qcCIsInlvbm8uc2FpdGFtYS5qcCIs''@;'; put 'put ''InlvcmlpLnNhaXRhbWEuanAiLCJ5b3NoaWRhLnNhaXRhbWEuanAiLCJ5b3NoaWthd2Euc2FpdGFtYS5qcCIsInlvc2hpbWkuc2FpdGFtYS5qcCIsImFpc2hvLnNoaWdhLmpwIiwiZ2Ftby5zaGlnYS5qcCIsImhpZ2FzaGlvbWkuc2hpZ2EuanAiLCJoaWtvbmUuc2hpZ2EuanAiLCJrb2thLnNo''@;'; put 'put ''aWdhLmpwIiwia29uYW4uc2hpZ2EuanAiLCJrb3NlaS5zaGlnYS5qcCIsImtvdG8uc2hpZ2EuanAiLCJrdXNhdHN1LnNoaWdhLmpwIiwibWFpYmFyYS5zaGlnYS5qcCIsIm1vcml5YW1hLnNoaWdhLmpwIiwibmFnYWhhbWEuc2hpZ2EuanAiLCJuaXNoaWF6YWkuc2hpZ2EuanAiLCJub3RvZ2F3''@;'; put 'put ''YS5zaGlnYS5qcCIsIm9taWhhY2hpbWFuLnNoaWdhLmpwIiwib3RzdS5zaGlnYS5qcCIsInJpdHRvLnNoaWdhLmpwIiwicnl1b2guc2hpZ2EuanAiLCJ0YWthc2hpbWEuc2hpZ2EuanAiLCJ0YWthdHN1a2kuc2hpZ2EuanAiLCJ0b3JhaGltZS5zaGlnYS5qcCIsInRveW9zYXRvLnNoaWdhLmpw''@;'; put 'put ''IiwieWFzdS5zaGlnYS5qcCIsImFrYWdpLnNoaW1hbmUuanAiLCJhbWEuc2hpbWFuZS5qcCIsImdvdHN1LnNoaW1hbmUuanAiLCJoYW1hZGEuc2hpbWFuZS5qcCIsImhpZ2FzaGlpenVtby5zaGltYW5lLmpwIiwiaGlrYXdhLnNoaW1hbmUuanAiLCJoaWtpbWkuc2hpbWFuZS5qcCIsIml6dW1v''@;'; put 'put ''LnNoaW1hbmUuanAiLCJrYWtpbm9raS5zaGltYW5lLmpwIiwibWFzdWRhLnNoaW1hbmUuanAiLCJtYXRzdWUuc2hpbWFuZS5qcCIsIm1pc2F0by5zaGltYW5lLmpwIiwibmlzaGlub3NoaW1hLnNoaW1hbmUuanAiLCJvaGRhLnNoaW1hbmUuanAiLCJva2lub3NoaW1hLnNoaW1hbmUuanAiLCJv''@;'; put 'put ''a3VpenVtby5zaGltYW5lLmpwIiwic2hpbWFuZS5zaGltYW5lLmpwIiwidGFtYXl1LnNoaW1hbmUuanAiLCJ0c3V3YW5vLnNoaW1hbmUuanAiLCJ1bm5hbi5zaGltYW5lLmpwIiwieWFrdW1vLnNoaW1hbmUuanAiLCJ5YXN1Z2kuc2hpbWFuZS5qcCIsInlhdHN1a2Euc2hpbWFuZS5qcCIsImFy''@;'; put 'put ''YWkuc2hpenVva2EuanAiLCJhdGFtaS5zaGl6dW9rYS5qcCIsImZ1amkuc2hpenVva2EuanAiLCJmdWppZWRhLnNoaXp1b2thLmpwIiwiZnVqaWthd2Euc2hpenVva2EuanAiLCJmdWppbm9taXlhLnNoaXp1b2thLmpwIiwiZnVrdXJvaS5zaGl6dW9rYS5qcCIsImdvdGVtYmEuc2hpenVva2Eu''@;'; put 'put ''anAiLCJoYWliYXJhLnNoaXp1b2thLmpwIiwiaGFtYW1hdHN1LnNoaXp1b2thLmpwIiwiaGlnYXNoaWl6dS5zaGl6dW9rYS5qcCIsIml0by5zaGl6dW9rYS5qcCIsIml3YXRhLnNoaXp1b2thLmpwIiwiaXp1LnNoaXp1b2thLmpwIiwiaXp1bm9rdW5pLnNoaXp1b2thLmpwIiwia2FrZWdhd2Eu''@;'; put 'put ''c2hpenVva2EuanAiLCJrYW5uYW1pLnNoaXp1b2thLmpwIiwia2F3YW5laG9uLnNoaXp1b2thLmpwIiwia2F3YXp1LnNoaXp1b2thLmpwIiwia2lrdWdhd2Euc2hpenVva2EuanAiLCJrb3NhaS5zaGl6dW9rYS5qcCIsIm1ha2lub2hhcmEuc2hpenVva2EuanAiLCJtYXRzdXpha2kuc2hpenVv''@;'; put 'put ''a2EuanAiLCJtaW5hbWlpenUuc2hpenVva2EuanAiLCJtaXNoaW1hLnNoaXp1b2thLmpwIiwibW9yaW1hY2hpLnNoaXp1b2thLmpwIiwibmlzaGlpenUuc2hpenVva2EuanAiLCJudW1henUuc2hpenVva2EuanAiLCJvbWFlemFraS5zaGl6dW9rYS5qcCIsInNoaW1hZGEuc2hpenVva2EuanAi''@;'; put 'put ''LCJzaGltaXp1LnNoaXp1b2thLmpwIiwic2hpbW9kYS5zaGl6dW9rYS5qcCIsInNoaXp1b2thLnNoaXp1b2thLmpwIiwic3Vzb25vLnNoaXp1b2thLmpwIiwieWFpenUuc2hpenVva2EuanAiLCJ5b3NoaWRhLnNoaXp1b2thLmpwIiwiYXNoaWthZ2EudG9jaGlnaS5qcCIsImJhdG8udG9jaGln''@;'; put 'put ''aS5qcCIsImhhZ2EudG9jaGlnaS5qcCIsImljaGlrYWkudG9jaGlnaS5qcCIsIml3YWZ1bmUudG9jaGlnaS5qcCIsImthbWlub2thd2EudG9jaGlnaS5qcCIsImthbnVtYS50b2NoaWdpLmpwIiwia2FyYXN1eWFtYS50b2NoaWdpLmpwIiwia3Vyb2lzby50b2NoaWdpLmpwIiwibWFzaGlrby50''@;'; put 'put ''b2NoaWdpLmpwIiwibWlidS50b2NoaWdpLmpwIiwibW9rYS50b2NoaWdpLmpwIiwibW90ZWdpLnRvY2hpZ2kuanAiLCJuYXN1LnRvY2hpZ2kuanAiLCJuYXN1c2hpb2JhcmEudG9jaGlnaS5qcCIsIm5pa2tvLnRvY2hpZ2kuanAiLCJuaXNoaWthdGEudG9jaGlnaS5qcCIsIm5vZ2kudG9jaGln''@;'; put 'put ''aS5qcCIsIm9oaXJhLnRvY2hpZ2kuanAiLCJvaHRhd2FyYS50b2NoaWdpLmpwIiwib3lhbWEudG9jaGlnaS5qcCIsInNha3VyYS50b2NoaWdpLmpwIiwic2Fuby50b2NoaWdpLmpwIiwic2hpbW90c3VrZS50b2NoaWdpLmpwIiwic2hpb3lhLnRvY2hpZ2kuanAiLCJ0YWthbmV6YXdhLnRvY2hp''@;'; put 'put ''Z2kuanAiLCJ0b2NoaWdpLnRvY2hpZ2kuanAiLCJ0c3VnYS50b2NoaWdpLmpwIiwidWppaWUudG9jaGlnaS5qcCIsInV0c3Vub21peWEudG9jaGlnaS5qcCIsInlhaXRhLnRvY2hpZ2kuanAiLCJhaXp1bWkudG9rdXNoaW1hLmpwIiwiYW5hbi50b2t1c2hpbWEuanAiLCJpY2hpYmEudG9rdXNo''@;'; put 'put ''aW1hLmpwIiwiaXRhbm8udG9rdXNoaW1hLmpwIiwia2FpbmFuLnRva3VzaGltYS5qcCIsImtvbWF0c3VzaGltYS50b2t1c2hpbWEuanAiLCJtYXRzdXNoaWdlLnRva3VzaGltYS5qcCIsIm1pbWEudG9rdXNoaW1hLmpwIiwibWluYW1pLnRva3VzaGltYS5qcCIsIm1peW9zaGkudG9rdXNoaW1h''@;'; put 'put ''LmpwIiwibXVnaS50b2t1c2hpbWEuanAiLCJuYWthZ2F3YS50b2t1c2hpbWEuanAiLCJuYXJ1dG8udG9rdXNoaW1hLmpwIiwic2FuYWdvY2hpLnRva3VzaGltYS5qcCIsInNoaXNoaWt1aS50b2t1c2hpbWEuanAiLCJ0b2t1c2hpbWEudG9rdXNoaW1hLmpwIiwid2FqaWtpLnRva3VzaGltYS5q''@;'; put 'put ''cCIsImFkYWNoaS50b2t5by5qcCIsImFraXJ1bm8udG9reW8uanAiLCJha2lzaGltYS50b2t5by5qcCIsImFvZ2FzaGltYS50b2t5by5qcCIsImFyYWthd2EudG9reW8uanAiLCJidW5reW8udG9reW8uanAiLCJjaGl5b2RhLnRva3lvLmpwIiwiY2hvZnUudG9reW8uanAiLCJjaHVvLnRva3lv''@;'; put 'put ''LmpwIiwiZWRvZ2F3YS50b2t5by5qcCIsImZ1Y2h1LnRva3lvLmpwIiwiZnVzc2EudG9reW8uanAiLCJoYWNoaWpvLnRva3lvLmpwIiwiaGFjaGlvamkudG9reW8uanAiLCJoYW11cmEudG9reW8uanAiLCJoaWdhc2hpa3VydW1lLnRva3lvLmpwIiwiaGlnYXNoaW11cmF5YW1hLnRva3lvLmpw''@;'; put 'put ''IiwiaGlnYXNoaXlhbWF0by50b2t5by5qcCIsImhpbm8udG9reW8uanAiLCJoaW5vZGUudG9reW8uanAiLCJoaW5vaGFyYS50b2t5by5qcCIsImluYWdpLnRva3lvLmpwIiwiaXRhYmFzaGkudG9reW8uanAiLCJrYXRzdXNoaWthLnRva3lvLmpwIiwia2l0YS50b2t5by5qcCIsImtpeW9zZS50''@;'; put 'put ''b2t5by5qcCIsImtvZGFpcmEudG9reW8uanAiLCJrb2dhbmVpLnRva3lvLmpwIiwia29rdWJ1bmppLnRva3lvLmpwIiwia29tYWUudG9reW8uanAiLCJrb3RvLnRva3lvLmpwIiwia291enVzaGltYS50b2t5by5qcCIsImt1bml0YWNoaS50b2t5by5qcCIsIm1hY2hpZGEudG9reW8uanAiLCJt''@;'; put 'put ''ZWd1cm8udG9reW8uanAiLCJtaW5hdG8udG9reW8uanAiLCJtaXRha2EudG9reW8uanAiLCJtaXp1aG8udG9reW8uanAiLCJtdXNhc2hpbXVyYXlhbWEudG9reW8uanAiLCJtdXNhc2hpbm8udG9reW8uanAiLCJuYWthbm8udG9reW8uanAiLCJuZXJpbWEudG9reW8uanAiLCJvZ2FzYXdhcmEu''@;'; put 'put ''dG9reW8uanAiLCJva3V0YW1hLnRva3lvLmpwIiwib21lLnRva3lvLmpwIiwib3NoaW1hLnRva3lvLmpwIiwib3RhLnRva3lvLmpwIiwic2V0YWdheWEudG9reW8uanAiLCJzaGlidXlhLnRva3lvLmpwIiwic2hpbmFnYXdhLnRva3lvLmpwIiwic2hpbmp1a3UudG9reW8uanAiLCJzdWdpbmFt''@;'; put 'put ''aS50b2t5by5qcCIsInN1bWlkYS50b2t5by5qcCIsInRhY2hpa2F3YS50b2t5by5qcCIsInRhaXRvLnRva3lvLmpwIiwidGFtYS50b2t5by5qcCIsInRvc2hpbWEudG9reW8uanAiLCJjaGl6dS50b3R0b3JpLmpwIiwiaGluby50b3R0b3JpLmpwIiwia2F3YWhhcmEudG90dG9yaS5qcCIsImtv''@;'; put 'put ''Z2UudG90dG9yaS5qcCIsImtvdG91cmEudG90dG9yaS5qcCIsIm1pc2FzYS50b3R0b3JpLmpwIiwibmFuYnUudG90dG9yaS5qcCIsIm5pY2hpbmFuLnRvdHRvcmkuanAiLCJzYWthaW1pbmF0by50b3R0b3JpLmpwIiwidG90dG9yaS50b3R0b3JpLmpwIiwid2FrYXNhLnRvdHRvcmkuanAiLCJ5''@;'; put 'put ''YXp1LnRvdHRvcmkuanAiLCJ5b25hZ28udG90dG9yaS5qcCIsImFzYWhpLnRveWFtYS5qcCIsImZ1Y2h1LnRveWFtYS5qcCIsImZ1a3VtaXRzdS50b3lhbWEuanAiLCJmdW5haGFzaGkudG95YW1hLmpwIiwiaGltaS50b3lhbWEuanAiLCJpbWl6dS50b3lhbWEuanAiLCJpbmFtaS50b3lhbWEu''@;'; put 'put ''anAiLCJqb2hhbmEudG95YW1hLmpwIiwia2FtaWljaGkudG95YW1hLmpwIiwia3Vyb2JlLnRveWFtYS5qcCIsIm5ha2FuaWlrYXdhLnRveWFtYS5qcCIsIm5hbWVyaWthd2EudG95YW1hLmpwIiwibmFudG8udG95YW1hLmpwIiwibnl1emVuLnRveWFtYS5qcCIsIm95YWJlLnRveWFtYS5qcCIs''@;'; put 'put ''InRhaXJhLnRveWFtYS5qcCIsInRha2Fva2EudG95YW1hLmpwIiwidGF0ZXlhbWEudG95YW1hLmpwIiwidG9nYS50b3lhbWEuanAiLCJ0b25hbWkudG95YW1hLmpwIiwidG95YW1hLnRveWFtYS5qcCIsInVuYXp1a2kudG95YW1hLmpwIiwidW96dS50b3lhbWEuanAiLCJ5YW1hZGEudG95YW1h''@;'; put 'put ''LmpwIiwiYXJpZGEud2FrYXlhbWEuanAiLCJhcmlkYWdhd2Eud2FrYXlhbWEuanAiLCJnb2JvLndha2F5YW1hLmpwIiwiaGFzaGltb3RvLndha2F5YW1hLmpwIiwiaGlkYWthLndha2F5YW1hLmpwIiwiaGlyb2dhd2Eud2FrYXlhbWEuanAiLCJpbmFtaS53YWtheWFtYS5qcCIsIml3YWRlLndh''@;'; put 'put ''a2F5YW1hLmpwIiwia2FpbmFuLndha2F5YW1hLmpwIiwia2FtaXRvbmRhLndha2F5YW1hLmpwIiwia2F0c3VyYWdpLndha2F5YW1hLmpwIiwia2ltaW5vLndha2F5YW1hLmpwIiwia2lub2thd2Eud2FrYXlhbWEuanAiLCJraXRheWFtYS53YWtheWFtYS5qcCIsImtveWEud2FrYXlhbWEuanAi''@;'; put 'put ''LCJrb3phLndha2F5YW1hLmpwIiwia296YWdhd2Eud2FrYXlhbWEuanAiLCJrdWRveWFtYS53YWtheWFtYS5qcCIsImt1c2hpbW90by53YWtheWFtYS5qcCIsIm1paGFtYS53YWtheWFtYS5qcCIsIm1pc2F0by53YWtheWFtYS5qcCIsIm5hY2hpa2F0c3V1cmEud2FrYXlhbWEuanAiLCJzaGlu''@;'; put 'put ''Z3Uud2FrYXlhbWEuanAiLCJzaGlyYWhhbWEud2FrYXlhbWEuanAiLCJ0YWlqaS53YWtheWFtYS5qcCIsInRhbmFiZS53YWtheWFtYS5qcCIsIndha2F5YW1hLndha2F5YW1hLmpwIiwieXVhc2Eud2FrYXlhbWEuanAiLCJ5dXJhLndha2F5YW1hLmpwIiwiYXNhaGkueWFtYWdhdGEuanAiLCJm''@;'; put 'put ''dW5hZ2F0YS55YW1hZ2F0YS5qcCIsImhpZ2FzaGluZS55YW1hZ2F0YS5qcCIsImlpZGUueWFtYWdhdGEuanAiLCJrYWhva3UueWFtYWdhdGEuanAiLCJrYW1pbm95YW1hLnlhbWFnYXRhLmpwIiwia2FuZXlhbWEueWFtYWdhdGEuanAiLCJrYXdhbmlzaGkueWFtYWdhdGEuanAiLCJtYW11cm9n''@;'; put 'put ''YXdhLnlhbWFnYXRhLmpwIiwibWlrYXdhLnlhbWFnYXRhLmpwIiwibXVyYXlhbWEueWFtYWdhdGEuanAiLCJuYWdhaS55YW1hZ2F0YS5qcCIsIm5ha2F5YW1hLnlhbWFnYXRhLmpwIiwibmFueW8ueWFtYWdhdGEuanAiLCJuaXNoaWthd2EueWFtYWdhdGEuanAiLCJvYmFuYXphd2EueWFtYWdh''@;'; put 'put ''dGEuanAiLCJvZS55YW1hZ2F0YS5qcCIsIm9ndW5pLnlhbWFnYXRhLmpwIiwib2hrdXJhLnlhbWFnYXRhLmpwIiwib2lzaGlkYS55YW1hZ2F0YS5qcCIsInNhZ2FlLnlhbWFnYXRhLmpwIiwic2FrYXRhLnlhbWFnYXRhLmpwIiwic2FrZWdhd2EueWFtYWdhdGEuanAiLCJzaGluam8ueWFtYWdh''@;'; put 'put ''dGEuanAiLCJzaGlyYXRha2EueWFtYWdhdGEuanAiLCJzaG9uYWkueWFtYWdhdGEuanAiLCJ0YWthaGF0YS55YW1hZ2F0YS5qcCIsInRlbmRvLnlhbWFnYXRhLmpwIiwidG96YXdhLnlhbWFnYXRhLmpwIiwidHN1cnVva2EueWFtYWdhdGEuanAiLCJ5YW1hZ2F0YS55YW1hZ2F0YS5qcCIsInlh''@;'; put 'put ''bWFub2JlLnlhbWFnYXRhLmpwIiwieW9uZXphd2EueWFtYWdhdGEuanAiLCJ5dXphLnlhbWFnYXRhLmpwIiwiYWJ1LnlhbWFndWNoaS5qcCIsImhhZ2kueWFtYWd1Y2hpLmpwIiwiaGlrYXJpLnlhbWFndWNoaS5qcCIsImhvZnUueWFtYWd1Y2hpLmpwIiwiaXdha3VuaS55YW1hZ3VjaGkuanAi''@;'; put 'put ''LCJrdWRhbWF0c3UueWFtYWd1Y2hpLmpwIiwibWl0b3UueWFtYWd1Y2hpLmpwIiwibmFnYXRvLnlhbWFndWNoaS5qcCIsIm9zaGltYS55YW1hZ3VjaGkuanAiLCJzaGltb25vc2VraS55YW1hZ3VjaGkuanAiLCJzaHVuYW4ueWFtYWd1Y2hpLmpwIiwidGFidXNlLnlhbWFndWNoaS5qcCIsInRv''@;'; put 'put ''a3V5YW1hLnlhbWFndWNoaS5qcCIsInRveW90YS55YW1hZ3VjaGkuanAiLCJ1YmUueWFtYWd1Y2hpLmpwIiwieXV1LnlhbWFndWNoaS5qcCIsImNodW8ueWFtYW5hc2hpLmpwIiwiZG9zaGkueWFtYW5hc2hpLmpwIiwiZnVlZnVraS55YW1hbmFzaGkuanAiLCJmdWppa2F3YS55YW1hbmFzaGku''@;'; put 'put ''anAiLCJmdWppa2F3YWd1Y2hpa28ueWFtYW5hc2hpLmpwIiwiZnVqaXlvc2hpZGEueWFtYW5hc2hpLmpwIiwiaGF5YWthd2EueWFtYW5hc2hpLmpwIiwiaG9rdXRvLnlhbWFuYXNoaS5qcCIsImljaGlrYXdhbWlzYXRvLnlhbWFuYXNoaS5qcCIsImthaS55YW1hbmFzaGkuanAiLCJrb2Z1Lnlh''@;'; put 'put ''bWFuYXNoaS5qcCIsImtvc2h1LnlhbWFuYXNoaS5qcCIsImtvc3VnZS55YW1hbmFzaGkuanAiLCJtaW5hbWktYWxwcy55YW1hbmFzaGkuanAiLCJtaW5vYnUueWFtYW5hc2hpLmpwIiwibmFrYW1pY2hpLnlhbWFuYXNoaS5qcCIsIm5hbmJ1LnlhbWFuYXNoaS5qcCIsIm5hcnVzYXdhLnlhbWFu''@;'; put 'put ''YXNoaS5qcCIsIm5pcmFzYWtpLnlhbWFuYXNoaS5qcCIsIm5pc2hpa2F0c3VyYS55YW1hbmFzaGkuanAiLCJvc2hpbm8ueWFtYW5hc2hpLmpwIiwib3RzdWtpLnlhbWFuYXNoaS5qcCIsInNob3dhLnlhbWFuYXNoaS5qcCIsInRhYmF5YW1hLnlhbWFuYXNoaS5qcCIsInRzdXJ1LnlhbWFuYXNo''@;'; put 'put ''aS5qcCIsInVlbm9oYXJhLnlhbWFuYXNoaS5qcCIsInlhbWFuYWtha28ueWFtYW5hc2hpLmpwIiwieWFtYW5hc2hpLnlhbWFuYXNoaS5qcCIsImtlIiwiYWMua2UiLCJjby5rZSIsImdvLmtlIiwiaW5mby5rZSIsIm1lLmtlIiwibW9iaS5rZSIsIm5lLmtlIiwib3Iua2UiLCJzYy5rZSIsImtn''@;'; put 'put ''Iiwib3JnLmtnIiwibmV0LmtnIiwiY29tLmtnIiwiZWR1LmtnIiwiZ292LmtnIiwibWlsLmtnIiwiKi5raCIsImtpIiwiZWR1LmtpIiwiYml6LmtpIiwibmV0LmtpIiwib3JnLmtpIiwiZ292LmtpIiwiaW5mby5raSIsImNvbS5raSIsImttIiwib3JnLmttIiwibm9tLmttIiwiZ292LmttIiwi''@;'; put 'put ''cHJkLmttIiwidG0ua20iLCJlZHUua20iLCJtaWwua20iLCJhc3Mua20iLCJjb20ua20iLCJjb29wLmttIiwiYXNzby5rbSIsInByZXNzZS5rbSIsIm1lZGVjaW4ua20iLCJub3RhaXJlcy5rbSIsInBoYXJtYWNpZW5zLmttIiwidmV0ZXJpbmFpcmUua20iLCJnb3V2LmttIiwia24iLCJuZXQu''@;'; put 'put ''a24iLCJvcmcua24iLCJlZHUua24iLCJnb3Yua24iLCJrcCIsImNvbS5rcCIsImVkdS5rcCIsImdvdi5rcCIsIm9yZy5rcCIsInJlcC5rcCIsInRyYS5rcCIsImtyIiwiYWMua3IiLCJjby5rciIsImVzLmtyIiwiZ28ua3IiLCJocy5rciIsImtnLmtyIiwibWlsLmtyIiwibXMua3IiLCJuZS5r''@;'; put 'put ''ciIsIm9yLmtyIiwicGUua3IiLCJyZS5rciIsInNjLmtyIiwiYnVzYW4ua3IiLCJjaHVuZ2J1ay5rciIsImNodW5nbmFtLmtyIiwiZGFlZ3Uua3IiLCJkYWVqZW9uLmtyIiwiZ2FuZ3dvbi5rciIsImd3YW5nanUua3IiLCJneWVvbmdidWsua3IiLCJneWVvbmdnaS5rciIsImd5ZW9uZ25hbS5r''@;'; put 'put ''ciIsImluY2hlb24ua3IiLCJqZWp1LmtyIiwiamVvbmJ1ay5rciIsImplb25uYW0ua3IiLCJzZW91bC5rciIsInVsc2FuLmtyIiwia3ciLCJjb20ua3ciLCJlZHUua3ciLCJlbWIua3ciLCJnb3Yua3ciLCJpbmQua3ciLCJuZXQua3ciLCJvcmcua3ciLCJreSIsImNvbS5reSIsImVkdS5reSIs''@;'; put 'put ''Im5ldC5reSIsIm9yZy5reSIsImt6Iiwib3JnLmt6IiwiZWR1Lmt6IiwibmV0Lmt6IiwiZ292Lmt6IiwibWlsLmt6IiwiY29tLmt6IiwibGEiLCJpbnQubGEiLCJuZXQubGEiLCJpbmZvLmxhIiwiZWR1LmxhIiwiZ292LmxhIiwicGVyLmxhIiwiY29tLmxhIiwib3JnLmxhIiwibGIiLCJjb20u''@;'; put 'put ''bGIiLCJlZHUubGIiLCJnb3YubGIiLCJuZXQubGIiLCJvcmcubGIiLCJsYyIsImNvbS5sYyIsIm5ldC5sYyIsImNvLmxjIiwib3JnLmxjIiwiZWR1LmxjIiwiZ292LmxjIiwibGkiLCJsayIsImdvdi5sayIsInNjaC5sayIsIm5ldC5sayIsImludC5sayIsImNvbS5sayIsIm9yZy5sayIsImVk''@;'; put 'put ''dS5sayIsIm5nby5sayIsInNvYy5sayIsIndlYi5sayIsImx0ZC5sayIsImFzc24ubGsiLCJncnAubGsiLCJob3RlbC5sayIsImFjLmxrIiwibHIiLCJjb20ubHIiLCJlZHUubHIiLCJnb3YubHIiLCJvcmcubHIiLCJuZXQubHIiLCJscyIsImFjLmxzIiwiYml6LmxzIiwiY28ubHMiLCJlZHUu''@;'; put 'put ''bHMiLCJnb3YubHMiLCJpbmZvLmxzIiwibmV0LmxzIiwib3JnLmxzIiwic2MubHMiLCJsdCIsImdvdi5sdCIsImx1IiwibHYiLCJjb20ubHYiLCJlZHUubHYiLCJnb3YubHYiLCJvcmcubHYiLCJtaWwubHYiLCJpZC5sdiIsIm5ldC5sdiIsImFzbi5sdiIsImNvbmYubHYiLCJseSIsImNvbS5s''@;'; put 'put ''eSIsIm5ldC5seSIsImdvdi5seSIsInBsYy5seSIsImVkdS5seSIsInNjaC5seSIsIm1lZC5seSIsIm9yZy5seSIsImlkLmx5IiwibWEiLCJjby5tYSIsIm5ldC5tYSIsImdvdi5tYSIsIm9yZy5tYSIsImFjLm1hIiwicHJlc3MubWEiLCJtYyIsInRtLm1jIiwiYXNzby5tYyIsIm1kIiwibWUi''@;'; put 'put ''LCJjby5tZSIsIm5ldC5tZSIsIm9yZy5tZSIsImVkdS5tZSIsImFjLm1lIiwiZ292Lm1lIiwiaXRzLm1lIiwicHJpdi5tZSIsIm1nIiwib3JnLm1nIiwibm9tLm1nIiwiZ292Lm1nIiwicHJkLm1nIiwidG0ubWciLCJlZHUubWciLCJtaWwubWciLCJjb20ubWciLCJjby5tZyIsIm1oIiwibWls''@;'; put 'put ''IiwibWsiLCJjb20ubWsiLCJvcmcubWsiLCJuZXQubWsiLCJlZHUubWsiLCJnb3YubWsiLCJpbmYubWsiLCJuYW1lLm1rIiwibWwiLCJjb20ubWwiLCJlZHUubWwiLCJnb3V2Lm1sIiwiZ292Lm1sIiwibmV0Lm1sIiwib3JnLm1sIiwicHJlc3NlLm1sIiwiKi5tbSIsIm1uIiwiZ292Lm1uIiwi''@;'; put 'put ''ZWR1Lm1uIiwib3JnLm1uIiwibW8iLCJjb20ubW8iLCJuZXQubW8iLCJvcmcubW8iLCJlZHUubW8iLCJnb3YubW8iLCJtb2JpIiwibXAiLCJtcSIsIm1yIiwiZ292Lm1yIiwibXMiLCJjb20ubXMiLCJlZHUubXMiLCJnb3YubXMiLCJuZXQubXMiLCJvcmcubXMiLCJtdCIsImNvbS5tdCIsImVk''@;'; put 'put ''dS5tdCIsIm5ldC5tdCIsIm9yZy5tdCIsIm11IiwiY29tLm11IiwibmV0Lm11Iiwib3JnLm11IiwiZ292Lm11IiwiYWMubXUiLCJjby5tdSIsIm9yLm11IiwibXVzZXVtIiwiYWNhZGVteS5tdXNldW0iLCJhZ3JpY3VsdHVyZS5tdXNldW0iLCJhaXIubXVzZXVtIiwiYWlyZ3VhcmQubXVzZXVt''@;'; put 'put ''IiwiYWxhYmFtYS5tdXNldW0iLCJhbGFza2EubXVzZXVtIiwiYW1iZXIubXVzZXVtIiwiYW1idWxhbmNlLm11c2V1bSIsImFtZXJpY2FuLm11c2V1bSIsImFtZXJpY2FuYS5tdXNldW0iLCJhbWVyaWNhbmFudGlxdWVzLm11c2V1bSIsImFtZXJpY2FuYXJ0Lm11c2V1bSIsImFtc3RlcmRhbS5t''@;'; put 'put ''dXNldW0iLCJhbmQubXVzZXVtIiwiYW5uZWZyYW5rLm11c2V1bSIsImFudGhyby5tdXNldW0iLCJhbnRocm9wb2xvZ3kubXVzZXVtIiwiYW50aXF1ZXMubXVzZXVtIiwiYXF1YXJpdW0ubXVzZXVtIiwiYXJib3JldHVtLm11c2V1bSIsImFyY2hhZW9sb2dpY2FsLm11c2V1bSIsImFyY2hhZW9s''@;'; put 'put ''b2d5Lm11c2V1bSIsImFyY2hpdGVjdHVyZS5tdXNldW0iLCJhcnQubXVzZXVtIiwiYXJ0YW5kZGVzaWduLm11c2V1bSIsImFydGNlbnRlci5tdXNldW0iLCJhcnRkZWNvLm11c2V1bSIsImFydGVkdWNhdGlvbi5tdXNldW0iLCJhcnRnYWxsZXJ5Lm11c2V1bSIsImFydHMubXVzZXVtIiwiYXJ0''@;'; put 'put ''c2FuZGNyYWZ0cy5tdXNldW0iLCJhc21hdGFydC5tdXNldW0iLCJhc3Nhc3NpbmF0aW9uLm11c2V1bSIsImFzc2lzaS5tdXNldW0iLCJhc3NvY2lhdGlvbi5tdXNldW0iLCJhc3Ryb25vbXkubXVzZXVtIiwiYXRsYW50YS5tdXNldW0iLCJhdXN0aW4ubXVzZXVtIiwiYXVzdHJhbGlhLm11c2V1''@;'; put 'put ''bSIsImF1dG9tb3RpdmUubXVzZXVtIiwiYXZpYXRpb24ubXVzZXVtIiwiYXhpcy5tdXNldW0iLCJiYWRham96Lm11c2V1bSIsImJhZ2hkYWQubXVzZXVtIiwiYmFobi5tdXNldW0iLCJiYWxlLm11c2V1bSIsImJhbHRpbW9yZS5tdXNldW0iLCJiYXJjZWxvbmEubXVzZXVtIiwiYmFzZWJhbGwu''@;'; put 'put ''bXVzZXVtIiwiYmFzZWwubXVzZXVtIiwiYmF0aHMubXVzZXVtIiwiYmF1ZXJuLm11c2V1bSIsImJlYXV4YXJ0cy5tdXNldW0iLCJiZWVsZGVuZ2VsdWlkLm11c2V1bSIsImJlbGxldnVlLm11c2V1bSIsImJlcmdiYXUubXVzZXVtIiwiYmVya2VsZXkubXVzZXVtIiwiYmVybGluLm11c2V1bSIs''@;'; put 'put ''ImJlcm4ubXVzZXVtIiwiYmlibGUubXVzZXVtIiwiYmlsYmFvLm11c2V1bSIsImJpbGwubXVzZXVtIiwiYmlyZGFydC5tdXNldW0iLCJiaXJ0aHBsYWNlLm11c2V1bSIsImJvbm4ubXVzZXVtIiwiYm9zdG9uLm11c2V1bSIsImJvdGFuaWNhbC5tdXNldW0iLCJib3RhbmljYWxnYXJkZW4ubXVz''@;'; put 'put ''ZXVtIiwiYm90YW5pY2dhcmRlbi5tdXNldW0iLCJib3RhbnkubXVzZXVtIiwiYnJhbmR5d2luZXZhbGxleS5tdXNldW0iLCJicmFzaWwubXVzZXVtIiwiYnJpc3RvbC5tdXNldW0iLCJicml0aXNoLm11c2V1bSIsImJyaXRpc2hjb2x1bWJpYS5tdXNldW0iLCJicm9hZGNhc3QubXVzZXVtIiwi''@;'; put 'put ''YnJ1bmVsLm11c2V1bSIsImJydXNzZWwubXVzZXVtIiwiYnJ1c3NlbHMubXVzZXVtIiwiYnJ1eGVsbGVzLm11c2V1bSIsImJ1aWxkaW5nLm11c2V1bSIsImJ1cmdob2YubXVzZXVtIiwiYnVzLm11c2V1bSIsImJ1c2hleS5tdXNldW0iLCJjYWRhcXVlcy5tdXNldW0iLCJjYWxpZm9ybmlhLm11''@;'; put 'put ''c2V1bSIsImNhbWJyaWRnZS5tdXNldW0iLCJjYW4ubXVzZXVtIiwiY2FuYWRhLm11c2V1bSIsImNhcGVicmV0b24ubXVzZXVtIiwiY2Fycmllci5tdXNldW0iLCJjYXJ0b29uYXJ0Lm11c2V1bSIsImNhc2FkZWxhbW9uZWRhLm11c2V1bSIsImNhc3RsZS5tdXNldW0iLCJjYXN0cmVzLm11c2V1''@;'; put 'put ''bSIsImNlbHRpYy5tdXNldW0iLCJjZW50ZXIubXVzZXVtIiwiY2hhdHRhbm9vZ2EubXVzZXVtIiwiY2hlbHRlbmhhbS5tdXNldW0iLCJjaGVzYXBlYWtlYmF5Lm11c2V1bSIsImNoaWNhZ28ubXVzZXVtIiwiY2hpbGRyZW4ubXVzZXVtIiwiY2hpbGRyZW5zLm11c2V1bSIsImNoaWxkcmVuc2dh''@;'; put 'put ''cmRlbi5tdXNldW0iLCJjaGlyb3ByYWN0aWMubXVzZXVtIiwiY2hvY29sYXRlLm11c2V1bSIsImNocmlzdGlhbnNidXJnLm11c2V1bSIsImNpbmNpbm5hdGkubXVzZXVtIiwiY2luZW1hLm11c2V1bSIsImNpcmN1cy5tdXNldW0iLCJjaXZpbGlzYXRpb24ubXVzZXVtIiwiY2l2aWxpemF0aW9u''@;'; put 'put ''Lm11c2V1bSIsImNpdmlsd2FyLm11c2V1bSIsImNsaW50b24ubXVzZXVtIiwiY2xvY2subXVzZXVtIiwiY29hbC5tdXNldW0iLCJjb2FzdGFsZGVmZW5jZS5tdXNldW0iLCJjb2R5Lm11c2V1bSIsImNvbGR3YXIubXVzZXVtIiwiY29sbGVjdGlvbi5tdXNldW0iLCJjb2xvbmlhbHdpbGxpYW1z''@;'; put 'put ''YnVyZy5tdXNldW0iLCJjb2xvcmFkb3BsYXRlYXUubXVzZXVtIiwiY29sdW1iaWEubXVzZXVtIiwiY29sdW1idXMubXVzZXVtIiwiY29tbXVuaWNhdGlvbi5tdXNldW0iLCJjb21tdW5pY2F0aW9ucy5tdXNldW0iLCJjb21tdW5pdHkubXVzZXVtIiwiY29tcHV0ZXIubXVzZXVtIiwiY29tcHV0''@;'; put 'put ''ZXJoaXN0b3J5Lm11c2V1bSIsImNvbXVuaWNhXHhlN1x4ZjVlcy5tdXNldW0iLCJjb250ZW1wb3JhcnkubXVzZXVtIiwiY29udGVtcG9yYXJ5YXJ0Lm11c2V1bSIsImNvbnZlbnQubXVzZXVtIiwiY29wZW5oYWdlbi5tdXNldW0iLCJjb3Jwb3JhdGlvbi5tdXNldW0iLCJjb3JyZWlvcy1lLXRl''@;'; put 'put ''bGVjb211bmljYVx4ZTdceGY1ZXMubXVzZXVtIiwiY29ydmV0dGUubXVzZXVtIiwiY29zdHVtZS5tdXNldW0iLCJjb3VudHJ5ZXN0YXRlLm11c2V1bSIsImNvdW50eS5tdXNldW0iLCJjcmFmdHMubXVzZXVtIiwiY3JhbmJyb29rLm11c2V1bSIsImNyZWF0aW9uLm11c2V1bSIsImN1bHR1cmFs''@;'; put 'put ''Lm11c2V1bSIsImN1bHR1cmFsY2VudGVyLm11c2V1bSIsImN1bHR1cmUubXVzZXVtIiwiY3liZXIubXVzZXVtIiwiY3ltcnUubXVzZXVtIiwiZGFsaS5tdXNldW0iLCJkYWxsYXMubXVzZXVtIiwiZGF0YWJhc2UubXVzZXVtIiwiZGRyLm11c2V1bSIsImRlY29yYXRpdmVhcnRzLm11c2V1bSIs''@;'; put 'put ''ImRlbGF3YXJlLm11c2V1bSIsImRlbG1lbmhvcnN0Lm11c2V1bSIsImRlbm1hcmsubXVzZXVtIiwiZGVwb3QubXVzZXVtIiwiZGVzaWduLm11c2V1bSIsImRldHJvaXQubXVzZXVtIiwiZGlub3NhdXIubXVzZXVtIiwiZGlzY292ZXJ5Lm11c2V1bSIsImRvbGxzLm11c2V1bSIsImRvbm9zdGlh''@;'; put 'put ''Lm11c2V1bSIsImR1cmhhbS5tdXNldW0iLCJlYXN0YWZyaWNhLm11c2V1bSIsImVhc3Rjb2FzdC5tdXNldW0iLCJlZHVjYXRpb24ubXVzZXVtIiwiZWR1Y2F0aW9uYWwubXVzZXVtIiwiZWd5cHRpYW4ubXVzZXVtIiwiZWlzZW5iYWhuLm11c2V1bSIsImVsYnVyZy5tdXNldW0iLCJlbHZlbmRy''@;'; put 'put ''ZWxsLm11c2V1bSIsImVtYnJvaWRlcnkubXVzZXVtIiwiZW5jeWNsb3BlZGljLm11c2V1bSIsImVuZ2xhbmQubXVzZXVtIiwiZW50b21vbG9neS5tdXNldW0iLCJlbnZpcm9ubWVudC5tdXNldW0iLCJlbnZpcm9ubWVudGFsY29uc2VydmF0aW9uLm11c2V1bSIsImVwaWxlcHN5Lm11c2V1bSIs''@;'; put 'put ''ImVzc2V4Lm11c2V1bSIsImVzdGF0ZS5tdXNldW0iLCJldGhub2xvZ3kubXVzZXVtIiwiZXhldGVyLm11c2V1bSIsImV4aGliaXRpb24ubXVzZXVtIiwiZmFtaWx5Lm11c2V1bSIsImZhcm0ubXVzZXVtIiwiZmFybWVxdWlwbWVudC5tdXNldW0iLCJmYXJtZXJzLm11c2V1bSIsImZhcm1zdGVh''@;'; put 'put ''ZC5tdXNldW0iLCJmaWVsZC5tdXNldW0iLCJmaWd1ZXJlcy5tdXNldW0iLCJmaWxhdGVsaWEubXVzZXVtIiwiZmlsbS5tdXNldW0iLCJmaW5lYXJ0Lm11c2V1bSIsImZpbmVhcnRzLm11c2V1bSIsImZpbmxhbmQubXVzZXVtIiwiZmxhbmRlcnMubXVzZXVtIiwiZmxvcmlkYS5tdXNldW0iLCJm''@;'; put 'put ''b3JjZS5tdXNldW0iLCJmb3J0bWlzc291bGEubXVzZXVtIiwiZm9ydHdvcnRoLm11c2V1bSIsImZvdW5kYXRpb24ubXVzZXVtIiwiZnJhbmNhaXNlLm11c2V1bSIsImZyYW5rZnVydC5tdXNldW0iLCJmcmFuemlza2FuZXIubXVzZXVtIiwiZnJlZW1hc29ucnkubXVzZXVtIiwiZnJlaWJ1cmcu''@;'; put 'put ''bXVzZXVtIiwiZnJpYm91cmcubXVzZXVtIiwiZnJvZy5tdXNldW0iLCJmdW5kYWNpby5tdXNldW0iLCJmdXJuaXR1cmUubXVzZXVtIiwiZ2FsbGVyeS5tdXNldW0iLCJnYXJkZW4ubXVzZXVtIiwiZ2F0ZXdheS5tdXNldW0iLCJnZWVsdmluY2subXVzZXVtIiwiZ2Vtb2xvZ2ljYWwubXVzZXVt''@;'; put 'put ''IiwiZ2VvbG9neS5tdXNldW0iLCJnZW9yZ2lhLm11c2V1bSIsImdpZXNzZW4ubXVzZXVtIiwiZ2xhcy5tdXNldW0iLCJnbGFzcy5tdXNldW0iLCJnb3JnZS5tdXNldW0iLCJncmFuZHJhcGlkcy5tdXNldW0iLCJncmF6Lm11c2V1bSIsImd1ZXJuc2V5Lm11c2V1bSIsImhhbGxvZmZhbWUubXVz''@;'; put 'put ''ZXVtIiwiaGFtYnVyZy5tdXNldW0iLCJoYW5kc29uLm11c2V1bSIsImhhcnZlc3RjZWxlYnJhdGlvbi5tdXNldW0iLCJoYXdhaWkubXVzZXVtIiwiaGVhbHRoLm11c2V1bSIsImhlaW1hdHVuZHVocmVuLm11c2V1bSIsImhlbGxhcy5tdXNldW0iLCJoZWxzaW5raS5tdXNldW0iLCJoZW1ieWdk''@;'; put 'put ''c2ZvcmJ1bmQubXVzZXVtIiwiaGVyaXRhZ2UubXVzZXVtIiwiaGlzdG9pcmUubXVzZXVtIiwiaGlzdG9yaWNhbC5tdXNldW0iLCJoaXN0b3JpY2Fsc29jaWV0eS5tdXNldW0iLCJoaXN0b3JpY2hvdXNlcy5tdXNldW0iLCJoaXN0b3Jpc2NoLm11c2V1bSIsImhpc3RvcmlzY2hlcy5tdXNldW0i''@;'; put 'put ''LCJoaXN0b3J5Lm11c2V1bSIsImhpc3RvcnlvZnNjaWVuY2UubXVzZXVtIiwiaG9yb2xvZ3kubXVzZXVtIiwiaG91c2UubXVzZXVtIiwiaHVtYW5pdGllcy5tdXNldW0iLCJpbGx1c3RyYXRpb24ubXVzZXVtIiwiaW1hZ2VhbmRzb3VuZC5tdXNldW0iLCJpbmRpYW4ubXVzZXVtIiwiaW5kaWFu''@;'; put 'put ''YS5tdXNldW0iLCJpbmRpYW5hcG9saXMubXVzZXVtIiwiaW5kaWFubWFya2V0Lm11c2V1bSIsImludGVsbGlnZW5jZS5tdXNldW0iLCJpbnRlcmFjdGl2ZS5tdXNldW0iLCJpcmFxLm11c2V1bSIsImlyb24ubXVzZXVtIiwiaXNsZW9mbWFuLm11c2V1bSIsImphbWlzb24ubXVzZXVtIiwiamVm''@;'; put 'put ''ZmVyc29uLm11c2V1bSIsImplcnVzYWxlbS5tdXNldW0iLCJqZXdlbHJ5Lm11c2V1bSIsImpld2lzaC5tdXNldW0iLCJqZXdpc2hhcnQubXVzZXVtIiwiamZrLm11c2V1bSIsImpvdXJuYWxpc20ubXVzZXVtIiwianVkYWljYS5tdXNldW0iLCJqdWR5Z2FybGFuZC5tdXNldW0iLCJqdWVkaXNj''@;'; put 'put ''aGVzLm11c2V1bSIsImp1aWYubXVzZXVtIiwia2FyYXRlLm11c2V1bSIsImthcmlrYXR1ci5tdXNldW0iLCJraWRzLm11c2V1bSIsImtvZWJlbmhhdm4ubXVzZXVtIiwia29lbG4ubXVzZXVtIiwia3Vuc3QubXVzZXVtIiwia3Vuc3RzYW1tbHVuZy5tdXNldW0iLCJrdW5zdHVuZGRlc2lnbi5t''@;'; put 'put ''dXNldW0iLCJsYWJvci5tdXNldW0iLCJsYWJvdXIubXVzZXVtIiwibGFqb2xsYS5tdXNldW0iLCJsYW5jYXNoaXJlLm11c2V1bSIsImxhbmRlcy5tdXNldW0iLCJsYW5zLm11c2V1bSIsImxceGU0bnMubXVzZXVtIiwibGFyc3Nvbi5tdXNldW0iLCJsZXdpc21pbGxlci5tdXNldW0iLCJsaW5j''@;'; put 'put ''b2xuLm11c2V1bSIsImxpbnoubXVzZXVtIiwibGl2aW5nLm11c2V1bSIsImxpdmluZ2hpc3RvcnkubXVzZXVtIiwibG9jYWxoaXN0b3J5Lm11c2V1bSIsImxvbmRvbi5tdXNldW0iLCJsb3NhbmdlbGVzLm11c2V1bSIsImxvdXZyZS5tdXNldW0iLCJsb3lhbGlzdC5tdXNldW0iLCJsdWNlcm5l''@;'; put 'put ''Lm11c2V1bSIsImx1eGVtYm91cmcubXVzZXVtIiwibHV6ZXJuLm11c2V1bSIsIm1hZC5tdXNldW0iLCJtYWRyaWQubXVzZXVtIiwibWFsbG9yY2EubXVzZXVtIiwibWFuY2hlc3Rlci5tdXNldW0iLCJtYW5zaW9uLm11c2V1bSIsIm1hbnNpb25zLm11c2V1bSIsIm1hbngubXVzZXVtIiwibWFy''@;'; put 'put ''YnVyZy5tdXNldW0iLCJtYXJpdGltZS5tdXNldW0iLCJtYXJpdGltby5tdXNldW0iLCJtYXJ5bGFuZC5tdXNldW0iLCJtYXJ5bGh1cnN0Lm11c2V1bSIsIm1lZGlhLm11c2V1bSIsIm1lZGljYWwubXVzZXVtIiwibWVkaXppbmhpc3RvcmlzY2hlcy5tdXNldW0iLCJtZWVyZXMubXVzZXVtIiwi''@;'; put 'put ''bWVtb3JpYWwubXVzZXVtIiwibWVzYXZlcmRlLm11c2V1bSIsIm1pY2hpZ2FuLm11c2V1bSIsIm1pZGF0bGFudGljLm11c2V1bSIsIm1pbGl0YXJ5Lm11c2V1bSIsIm1pbGwubXVzZXVtIiwibWluZXJzLm11c2V1bSIsIm1pbmluZy5tdXNldW0iLCJtaW5uZXNvdGEubXVzZXVtIiwibWlzc2ls''@;'; put 'put ''ZS5tdXNldW0iLCJtaXNzb3VsYS5tdXNldW0iLCJtb2Rlcm4ubXVzZXVtIiwibW9tYS5tdXNldW0iLCJtb25leS5tdXNldW0iLCJtb25tb3V0aC5tdXNldW0iLCJtb250aWNlbGxvLm11c2V1bSIsIm1vbnRyZWFsLm11c2V1bSIsIm1vc2Nvdy5tdXNldW0iLCJtb3RvcmN5Y2xlLm11c2V1bSIs''@;'; put 'put ''Im11ZW5jaGVuLm11c2V1bSIsIm11ZW5zdGVyLm11c2V1bSIsIm11bGhvdXNlLm11c2V1bSIsIm11bmNpZS5tdXNldW0iLCJtdXNlZXQubXVzZXVtIiwibXVzZXVtY2VudGVyLm11c2V1bSIsIm11c2V1bXZlcmVuaWdpbmcubXVzZXVtIiwibXVzaWMubXVzZXVtIiwibmF0aW9uYWwubXVzZXVt''@;'; put 'put ''IiwibmF0aW9uYWxmaXJlYXJtcy5tdXNldW0iLCJuYXRpb25hbGhlcml0YWdlLm11c2V1bSIsIm5hdGl2ZWFtZXJpY2FuLm11c2V1bSIsIm5hdHVyYWxoaXN0b3J5Lm11c2V1bSIsIm5hdHVyYWxoaXN0b3J5bXVzZXVtLm11c2V1bSIsIm5hdHVyYWxzY2llbmNlcy5tdXNldW0iLCJuYXR1cmUu''@;'; put 'put ''bXVzZXVtIiwibmF0dXJoaXN0b3Jpc2NoZXMubXVzZXVtIiwibmF0dXVyd2V0ZW5zY2hhcHBlbi5tdXNldW0iLCJuYXVtYnVyZy5tdXNldW0iLCJuYXZhbC5tdXNldW0iLCJuZWJyYXNrYS5tdXNldW0iLCJuZXVlcy5tdXNldW0iLCJuZXdoYW1wc2hpcmUubXVzZXVtIiwibmV3amVyc2V5Lm11''@;'; put 'put ''c2V1bSIsIm5ld21leGljby5tdXNldW0iLCJuZXdwb3J0Lm11c2V1bSIsIm5ld3NwYXBlci5tdXNldW0iLCJuZXd5b3JrLm11c2V1bSIsIm5pZXBjZS5tdXNldW0iLCJub3Jmb2xrLm11c2V1bSIsIm5vcnRoLm11c2V1bSIsIm5ydy5tdXNldW0iLCJueWMubXVzZXVtIiwibnlueS5tdXNldW0i''@;'; put 'put ''LCJvY2Vhbm9ncmFwaGljLm11c2V1bSIsIm9jZWFub2dyYXBoaXF1ZS5tdXNldW0iLCJvbWFoYS5tdXNldW0iLCJvbmxpbmUubXVzZXVtIiwib250YXJpby5tdXNldW0iLCJvcGVuYWlyLm11c2V1bSIsIm9yZWdvbi5tdXNldW0iLCJvcmVnb250cmFpbC5tdXNldW0iLCJvdGFnby5tdXNldW0i''@;'; put 'put ''LCJveGZvcmQubXVzZXVtIiwicGFjaWZpYy5tdXNldW0iLCJwYWRlcmJvcm4ubXVzZXVtIiwicGFsYWNlLm11c2V1bSIsInBhbGVvLm11c2V1bSIsInBhbG1zcHJpbmdzLm11c2V1bSIsInBhbmFtYS5tdXNldW0iLCJwYXJpcy5tdXNldW0iLCJwYXNhZGVuYS5tdXNldW0iLCJwaGFybWFjeS5t''@;'; put 'put ''dXNldW0iLCJwaGlsYWRlbHBoaWEubXVzZXVtIiwicGhpbGFkZWxwaGlhYXJlYS5tdXNldW0iLCJwaGlsYXRlbHkubXVzZXVtIiwicGhvZW5peC5tdXNldW0iLCJwaG90b2dyYXBoeS5tdXNldW0iLCJwaWxvdHMubXVzZXVtIiwicGl0dHNidXJnaC5tdXNldW0iLCJwbGFuZXRhcml1bS5tdXNl''@;'; put 'put ''dW0iLCJwbGFudGF0aW9uLm11c2V1bSIsInBsYW50cy5tdXNldW0iLCJwbGF6YS5tdXNldW0iLCJwb3J0YWwubXVzZXVtIiwicG9ydGxhbmQubXVzZXVtIiwicG9ydGxsaWdhdC5tdXNldW0iLCJwb3N0cy1hbmQtdGVsZWNvbW11bmljYXRpb25zLm11c2V1bSIsInByZXNlcnZhdGlvbi5tdXNl''@;'; put 'put ''dW0iLCJwcmVzaWRpby5tdXNldW0iLCJwcmVzcy5tdXNldW0iLCJwcm9qZWN0Lm11c2V1bSIsInB1YmxpYy5tdXNldW0iLCJwdWJvbC5tdXNldW0iLCJxdWViZWMubXVzZXVtIiwicmFpbHJvYWQubXVzZXVtIiwicmFpbHdheS5tdXNldW0iLCJyZXNlYXJjaC5tdXNldW0iLCJyZXNpc3RhbmNl''@;'; put 'put ''Lm11c2V1bSIsInJpb2RlamFuZWlyby5tdXNldW0iLCJyb2NoZXN0ZXIubXVzZXVtIiwicm9ja2FydC5tdXNldW0iLCJyb21hLm11c2V1bSIsInJ1c3NpYS5tdXNldW0iLCJzYWludGxvdWlzLm11c2V1bSIsInNhbGVtLm11c2V1bSIsInNhbHZhZG9yZGFsaS5tdXNldW0iLCJzYWx6YnVyZy5t''@;'; put 'put ''dXNldW0iLCJzYW5kaWVnby5tdXNldW0iLCJzYW5mcmFuY2lzY28ubXVzZXVtIiwic2FudGFiYXJiYXJhLm11c2V1bSIsInNhbnRhY3J1ei5tdXNldW0iLCJzYW50YWZlLm11c2V1bSIsInNhc2thdGNoZXdhbi5tdXNldW0iLCJzYXR4Lm11c2V1bSIsInNhdmFubmFoZ2EubXVzZXVtIiwic2No''@;'; put 'put ''bGVzaXNjaGVzLm11c2V1bSIsInNjaG9lbmJydW5uLm11c2V1bSIsInNjaG9rb2xhZGVuLm11c2V1bSIsInNjaG9vbC5tdXNldW0iLCJzY2h3ZWl6Lm11c2V1bSIsInNjaWVuY2UubXVzZXVtIiwic2NpZW5jZWFuZGhpc3RvcnkubXVzZXVtIiwic2NpZW5jZWFuZGluZHVzdHJ5Lm11c2V1bSIs''@;'; put 'put ''InNjaWVuY2VjZW50ZXIubXVzZXVtIiwic2NpZW5jZWNlbnRlcnMubXVzZXVtIiwic2NpZW5jZS1maWN0aW9uLm11c2V1bSIsInNjaWVuY2VoaXN0b3J5Lm11c2V1bSIsInNjaWVuY2VzLm11c2V1bSIsInNjaWVuY2VzbmF0dXJlbGxlcy5tdXNldW0iLCJzY290bGFuZC5tdXNldW0iLCJzZWFw''@;'; put 'put ''b3J0Lm11c2V1bSIsInNldHRsZW1lbnQubXVzZXVtIiwic2V0dGxlcnMubXVzZXVtIiwic2hlbGwubXVzZXVtIiwic2hlcmJyb29rZS5tdXNldW0iLCJzaWJlbmlrLm11c2V1bSIsInNpbGsubXVzZXVtIiwic2tpLm11c2V1bSIsInNrb2xlLm11c2V1bSIsInNvY2lldHkubXVzZXVtIiwic29s''@;'; put 'put ''b2duZS5tdXNldW0iLCJzb3VuZGFuZHZpc2lvbi5tdXNldW0iLCJzb3V0aGNhcm9saW5hLm11c2V1bSIsInNvdXRod2VzdC5tdXNldW0iLCJzcGFjZS5tdXNldW0iLCJzcHkubXVzZXVtIiwic3F1YXJlLm11c2V1bSIsInN0YWR0Lm11c2V1bSIsInN0YWxiYW5zLm11c2V1bSIsInN0YXJuYmVy''@;'; put 'put ''Zy5tdXNldW0iLCJzdGF0ZS5tdXNldW0iLCJzdGF0ZW9mZGVsYXdhcmUubXVzZXVtIiwic3RhdGlvbi5tdXNldW0iLCJzdGVhbS5tdXNldW0iLCJzdGVpZXJtYXJrLm11c2V1bSIsInN0am9obi5tdXNldW0iLCJzdG9ja2hvbG0ubXVzZXVtIiwic3RwZXRlcnNidXJnLm11c2V1bSIsInN0dXR0''@;'; put 'put ''Z2FydC5tdXNldW0iLCJzdWlzc2UubXVzZXVtIiwic3VyZ2VvbnNoYWxsLm11c2V1bSIsInN1cnJleS5tdXNldW0iLCJzdml6emVyYS5tdXNldW0iLCJzd2VkZW4ubXVzZXVtIiwic3lkbmV5Lm11c2V1bSIsInRhbmsubXVzZXVtIiwidGNtLm11c2V1bSIsInRlY2hub2xvZ3kubXVzZXVtIiwi''@;'; put 'put ''dGVsZWtvbW11bmlrYXRpb24ubXVzZXVtIiwidGVsZXZpc2lvbi5tdXNldW0iLCJ0ZXhhcy5tdXNldW0iLCJ0ZXh0aWxlLm11c2V1bSIsInRoZWF0ZXIubXVzZXVtIiwidGltZS5tdXNldW0iLCJ0aW1la2VlcGluZy5tdXNldW0iLCJ0b3BvbG9neS5tdXNldW0iLCJ0b3Jpbm8ubXVzZXVtIiwi''@;'; put 'put ''dG91Y2gubXVzZXVtIiwidG93bi5tdXNldW0iLCJ0cmFuc3BvcnQubXVzZXVtIiwidHJlZS5tdXNldW0iLCJ0cm9sbGV5Lm11c2V1bSIsInRydXN0Lm11c2V1bSIsInRydXN0ZWUubXVzZXVtIiwidWhyZW4ubXVzZXVtIiwidWxtLm11c2V1bSIsInVuZGVyc2VhLm11c2V1bSIsInVuaXZlcnNp''@;'; put 'put ''dHkubXVzZXVtIiwidXNhLm11c2V1bSIsInVzYW50aXF1ZXMubXVzZXVtIiwidXNhcnRzLm11c2V1bSIsInVzY291bnRyeWVzdGF0ZS5tdXNldW0iLCJ1c2N1bHR1cmUubXVzZXVtIiwidXNkZWNvcmF0aXZlYXJ0cy5tdXNldW0iLCJ1c2dhcmRlbi5tdXNldW0iLCJ1c2hpc3RvcnkubXVzZXVt''@;'; put 'put ''IiwidXNodWFpYS5tdXNldW0iLCJ1c2xpdmluZ2hpc3RvcnkubXVzZXVtIiwidXRhaC5tdXNldW0iLCJ1dmljLm11c2V1bSIsInZhbGxleS5tdXNldW0iLCJ2YW50YWEubXVzZXVtIiwidmVyc2FpbGxlcy5tdXNldW0iLCJ2aWtpbmcubXVzZXVtIiwidmlsbGFnZS5tdXNldW0iLCJ2aXJnaW5p''@;'; put 'put ''YS5tdXNldW0iLCJ2aXJ0dWFsLm11c2V1bSIsInZpcnR1ZWwubXVzZXVtIiwidmxhYW5kZXJlbi5tdXNldW0iLCJ2b2xrZW5rdW5kZS5tdXNldW0iLCJ3YWxlcy5tdXNldW0iLCJ3YWxsb25pZS5tdXNldW0iLCJ3YXIubXVzZXVtIiwid2FzaGluZ3RvbmRjLm11c2V1bSIsIndhdGNoYW5kY2xv''@;'; put 'put ''Y2subXVzZXVtIiwid2F0Y2gtYW5kLWNsb2NrLm11c2V1bSIsIndlc3Rlcm4ubXVzZXVtIiwid2VzdGZhbGVuLm11c2V1bSIsIndoYWxpbmcubXVzZXVtIiwid2lsZGxpZmUubXVzZXVtIiwid2lsbGlhbXNidXJnLm11c2V1bSIsIndpbmRtaWxsLm11c2V1bSIsIndvcmtzaG9wLm11c2V1bSIs''@;'; put 'put ''InlvcmsubXVzZXVtIiwieW9ya3NoaXJlLm11c2V1bSIsInlvc2VtaXRlLm11c2V1bSIsInlvdXRoLm11c2V1bSIsInpvb2xvZ2ljYWwubXVzZXVtIiwiem9vbG9neS5tdXNldW0iLCJcdTA1ZDlcdTA1ZThcdTA1ZDVcdTA1ZTlcdTA1ZGNcdTA1ZDlcdTA1ZGQubXVzZXVtIiwiXHUwNDM4XHUw''@;'; put 'put ''NDNhXHUwNDNlXHUwNDNjLm11c2V1bSIsIm12IiwiYWVyby5tdiIsImJpei5tdiIsImNvbS5tdiIsImNvb3AubXYiLCJlZHUubXYiLCJnb3YubXYiLCJpbmZvLm12IiwiaW50Lm12IiwibWlsLm12IiwibXVzZXVtLm12IiwibmFtZS5tdiIsIm5ldC5tdiIsIm9yZy5tdiIsInByby5tdiIsIm13''@;'; put 'put ''IiwiYWMubXciLCJiaXoubXciLCJjby5tdyIsImNvbS5tdyIsImNvb3AubXciLCJlZHUubXciLCJnb3YubXciLCJpbnQubXciLCJtdXNldW0ubXciLCJuZXQubXciLCJvcmcubXciLCJteCIsImNvbS5teCIsIm9yZy5teCIsImdvYi5teCIsImVkdS5teCIsIm5ldC5teCIsIm15IiwiYml6Lm15''@;'; put 'put ''IiwiY29tLm15IiwiZWR1Lm15IiwiZ292Lm15IiwibWlsLm15IiwibmFtZS5teSIsIm5ldC5teSIsIm9yZy5teSIsIm16IiwiYWMubXoiLCJhZHYubXoiLCJjby5teiIsImVkdS5teiIsImdvdi5teiIsIm1pbC5teiIsIm5ldC5teiIsIm9yZy5teiIsIm5hIiwiaW5mby5uYSIsInByby5uYSIs''@;'; put 'put ''Im5hbWUubmEiLCJzY2hvb2wubmEiLCJvci5uYSIsImRyLm5hIiwidXMubmEiLCJteC5uYSIsImNhLm5hIiwiaW4ubmEiLCJjYy5uYSIsInR2Lm5hIiwid3MubmEiLCJtb2JpLm5hIiwiY28ubmEiLCJjb20ubmEiLCJvcmcubmEiLCJuYW1lIiwibmMiLCJhc3NvLm5jIiwibm9tLm5jIiwibmUi''@;'; put 'put ''LCJuZXQiLCJuZiIsImNvbS5uZiIsIm5ldC5uZiIsInBlci5uZiIsInJlYy5uZiIsIndlYi5uZiIsImFydHMubmYiLCJmaXJtLm5mIiwiaW5mby5uZiIsIm90aGVyLm5mIiwic3RvcmUubmYiLCJuZyIsImNvbS5uZyIsImVkdS5uZyIsImdvdi5uZyIsImkubmciLCJtaWwubmciLCJtb2JpLm5n''@;'; put 'put ''IiwibmFtZS5uZyIsIm5ldC5uZyIsIm9yZy5uZyIsInNjaC5uZyIsIm5pIiwiYWMubmkiLCJiaXoubmkiLCJjby5uaSIsImNvbS5uaSIsImVkdS5uaSIsImdvYi5uaSIsImluLm5pIiwiaW5mby5uaSIsImludC5uaSIsIm1pbC5uaSIsIm5ldC5uaSIsIm5vbS5uaSIsIm9yZy5uaSIsIndlYi5u''@;'; put 'put ''aSIsIm5sIiwibm8iLCJmaHMubm8iLCJ2Z3Mubm8iLCJmeWxrZXNiaWJsLm5vIiwiZm9sa2ViaWJsLm5vIiwibXVzZXVtLm5vIiwiaWRyZXR0Lm5vIiwicHJpdi5ubyIsIm1pbC5ubyIsInN0YXQubm8iLCJkZXAubm8iLCJrb21tdW5lLm5vIiwiaGVyYWQubm8iLCJhYS5ubyIsImFoLm5vIiwi''@;'; put 'put ''YnUubm8iLCJmbS5ubyIsImhsLm5vIiwiaG0ubm8iLCJqYW4tbWF5ZW4ubm8iLCJtci5ubyIsIm5sLm5vIiwibnQubm8iLCJvZi5ubyIsIm9sLm5vIiwib3Nsby5ubyIsInJsLm5vIiwic2Yubm8iLCJzdC5ubyIsInN2YWxiYXJkLm5vIiwidG0ubm8iLCJ0ci5ubyIsInZhLm5vIiwidmYubm8i''@;'; put 'put ''LCJncy5hYS5ubyIsImdzLmFoLm5vIiwiZ3MuYnUubm8iLCJncy5mbS5ubyIsImdzLmhsLm5vIiwiZ3MuaG0ubm8iLCJncy5qYW4tbWF5ZW4ubm8iLCJncy5tci5ubyIsImdzLm5sLm5vIiwiZ3MubnQubm8iLCJncy5vZi5ubyIsImdzLm9sLm5vIiwiZ3Mub3Nsby5ubyIsImdzLnJsLm5vIiwi''@;'; put 'put ''Z3Muc2Yubm8iLCJncy5zdC5ubyIsImdzLnN2YWxiYXJkLm5vIiwiZ3MudG0ubm8iLCJncy50ci5ubyIsImdzLnZhLm5vIiwiZ3MudmYubm8iLCJha3JlaGFtbi5ubyIsIlx4ZTVrcmVoYW1uLm5vIiwiYWxnYXJkLm5vIiwiXHhlNWxnXHhlNXJkLm5vIiwiYXJuYS5ubyIsImJydW11bmRkYWwu''@;'; put 'put ''bm8iLCJicnluZS5ubyIsImJyb25ub3lzdW5kLm5vIiwiYnJceGY4bm5ceGY4eXN1bmQubm8iLCJkcm9iYWsubm8iLCJkclx4ZjhiYWsubm8iLCJlZ2Vyc3VuZC5ubyIsImZldHN1bmQubm8iLCJmbG9yby5ubyIsImZsb3JceGY4Lm5vIiwiZnJlZHJpa3N0YWQubm8iLCJob2trc3VuZC5ubyIs''@;'; put 'put ''ImhvbmVmb3NzLm5vIiwiaFx4ZjhuZWZvc3Mubm8iLCJqZXNzaGVpbS5ubyIsImpvcnBlbGFuZC5ubyIsImpceGY4cnBlbGFuZC5ubyIsImtpcmtlbmVzLm5vIiwia29wZXJ2aWsubm8iLCJrcm9rc3RhZGVsdmEubm8iLCJsYW5nZXZhZy5ubyIsImxhbmdldlx4ZTVnLm5vIiwibGVpcnZpay5u''@;'; put 'put ''byIsIm1qb25kYWxlbi5ubyIsIm1qXHhmOG5kYWxlbi5ubyIsIm1vLWktcmFuYS5ubyIsIm1vc2pvZW4ubm8iLCJtb3NqXHhmOGVuLm5vIiwibmVzb2RkdGFuZ2VuLm5vIiwib3JrYW5nZXIubm8iLCJvc295cm8ubm8iLCJvc1x4Zjh5cm8ubm8iLCJyYWhvbHQubm8iLCJyXHhlNWhvbHQubm8i''@;'; put 'put ''LCJzYW5kbmVzc2pvZW4ubm8iLCJzYW5kbmVzc2pceGY4ZW4ubm8iLCJza2Vkc21va29yc2V0Lm5vIiwic2xhdHR1bS5ubyIsInNwamVsa2F2aWsubm8iLCJzdGF0aGVsbGUubm8iLCJzdGF2ZXJuLm5vIiwic3Rqb3JkYWxzaGFsc2VuLm5vIiwic3RqXHhmOHJkYWxzaGFsc2VuLm5vIiwidGFu''@;'; put 'put ''YW5nZXIubm8iLCJ0cmFuYnkubm8iLCJ2b3NzZXZhbmdlbi5ubyIsImFmam9yZC5ubyIsIlx4ZTVmam9yZC5ubyIsImFnZGVuZXMubm8iLCJhbC5ubyIsIlx4ZTVsLm5vIiwiYWxlc3VuZC5ubyIsIlx4ZTVsZXN1bmQubm8iLCJhbHN0YWhhdWcubm8iLCJhbHRhLm5vIiwiXHhlMWx0XHhlMS5u''@;'; put 'put ''byIsImFsYWhlYWRqdS5ubyIsIlx4ZTFsYWhlYWRqdS5ubyIsImFsdmRhbC5ubyIsImFtbGkubm8iLCJceGU1bWxpLm5vIiwiYW1vdC5ubyIsIlx4ZTVtb3Qubm8iLCJhbmRlYnUubm8iLCJhbmRveS5ubyIsImFuZFx4Zjh5Lm5vIiwiYW5kYXN1b2xvLm5vIiwiYXJkYWwubm8iLCJceGU1cmRh''@;'; put 'put ''bC5ubyIsImFyZW1hcmsubm8iLCJhcmVuZGFsLm5vIiwiXHhlNXMubm8iLCJhc2VyYWwubm8iLCJceGU1c2VyYWwubm8iLCJhc2tlci5ubyIsImFza2ltLm5vIiwiYXNrdm9sbC5ubyIsImFza295Lm5vIiwiYXNrXHhmOHkubm8iLCJhc25lcy5ubyIsIlx4ZTVzbmVzLm5vIiwiYXVkbmVkYWxu''@;'; put 'put ''Lm5vIiwiYXVrcmEubm8iLCJhdXJlLm5vIiwiYXVybGFuZC5ubyIsImF1cnNrb2ctaG9sYW5kLm5vIiwiYXVyc2tvZy1oXHhmOGxhbmQubm8iLCJhdXN0ZXZvbGwubm8iLCJhdXN0cmhlaW0ubm8iLCJhdmVyb3kubm8iLCJhdmVyXHhmOHkubm8iLCJiYWxlc3RyYW5kLm5vIiwiYmFsbGFuZ2Vu''@;'; put 'put ''Lm5vIiwiYmFsYXQubm8iLCJiXHhlMWxceGUxdC5ubyIsImJhbHNmam9yZC5ubyIsImJhaGNjYXZ1b3RuYS5ubyIsImJceGUxaGNjYXZ1b3RuYS5ubyIsImJhbWJsZS5ubyIsImJhcmR1Lm5vIiwiYmVhcmR1Lm5vIiwiYmVpYXJuLm5vIiwiYmFqZGRhci5ubyIsImJceGUxamRkYXIubm8iLCJi''@;'; put 'put ''YWlkYXIubm8iLCJiXHhlMWlkXHhlMXIubm8iLCJiZXJnLm5vIiwiYmVyZ2VuLm5vIiwiYmVybGV2YWcubm8iLCJiZXJsZXZceGU1Zy5ubyIsImJlYXJhbHZhaGtpLm5vIiwiYmVhcmFsdlx4ZTFoa2kubm8iLCJiaW5kYWwubm8iLCJiaXJrZW5lcy5ubyIsImJqYXJrb3kubm8iLCJiamFya1x4''@;'; put 'put ''Zjh5Lm5vIiwiYmplcmtyZWltLm5vIiwiYmp1Z24ubm8iLCJib2RvLm5vIiwiYm9kXHhmOC5ubyIsImJhZGFkZGphLm5vIiwiYlx4ZTVkXHhlNWRkalx4ZTUubm8iLCJidWRlamp1Lm5vIiwiYm9rbi5ubyIsImJyZW1hbmdlci5ubyIsImJyb25ub3kubm8iLCJiclx4Zjhublx4Zjh5Lm5vIiwi''@;'; put 'put ''YnlnbGFuZC5ubyIsImJ5a2xlLm5vIiwiYmFydW0ubm8iLCJiXHhlNnJ1bS5ubyIsImJvLnRlbGVtYXJrLm5vIiwiYlx4ZjgudGVsZW1hcmsubm8iLCJiby5ub3JkbGFuZC5ubyIsImJceGY4Lm5vcmRsYW5kLm5vIiwiYmlldmF0Lm5vIiwiYmlldlx4ZTF0Lm5vIiwiYm9tbG8ubm8iLCJiXHhm''@;'; put 'put ''OG1sby5ubyIsImJhdHNmam9yZC5ubyIsImJceGU1dHNmam9yZC5ubyIsImJhaGNhdnVvdG5hLm5vIiwiYlx4ZTFoY2F2dW90bmEubm8iLCJkb3ZyZS5ubyIsImRyYW1tZW4ubm8iLCJkcmFuZ2VkYWwubm8iLCJkeXJveS5ubyIsImR5clx4Zjh5Lm5vIiwiZG9ubmEubm8iLCJkXHhmOG5uYS5u''@;'; put 'put ''byIsImVpZC5ubyIsImVpZGZqb3JkLm5vIiwiZWlkc2Jlcmcubm8iLCJlaWRza29nLm5vIiwiZWlkc3ZvbGwubm8iLCJlaWdlcnN1bmQubm8iLCJlbHZlcnVtLm5vIiwiZW5lYmFray5ubyIsImVuZ2VyZGFsLm5vIiwiZXRuZS5ubyIsImV0bmVkYWwubm8iLCJldmVuZXMubm8iLCJldmVuYXNz''@;'; put 'put ''aS5ubyIsImV2ZW5ceGUxXHUwMTYxXHUwMTYxaS5ubyIsImV2amUtb2ctaG9ybm5lcy5ubyIsImZhcnN1bmQubm8iLCJmYXVza2Uubm8iLCJmdW9zc2tvLm5vIiwiZnVvaXNrdS5ubyIsImZlZGplLm5vIiwiZmV0Lm5vIiwiZmlubm95Lm5vIiwiZmlublx4Zjh5Lm5vIiwiZml0amFyLm5vIiwi''@;'; put 'put ''ZmphbGVyLm5vIiwiZmplbGwubm8iLCJmbGFrc3RhZC5ubyIsImZsYXRhbmdlci5ubyIsImZsZWtrZWZqb3JkLm5vIiwiZmxlc2Jlcmcubm8iLCJmbG9yYS5ubyIsImZsYS5ubyIsImZsXHhlNS5ubyIsImZvbGxkYWwubm8iLCJmb3JzYW5kLm5vIiwiZm9zbmVzLm5vIiwiZnJlaS5ubyIsImZy''@;'; put 'put ''b2duLm5vIiwiZnJvbGFuZC5ubyIsImZyb3N0YS5ubyIsImZyYW5hLm5vIiwiZnJceGU2bmEubm8iLCJmcm95YS5ubyIsImZyXHhmOHlhLm5vIiwiZnVzYS5ubyIsImZ5cmVzZGFsLm5vIiwiZm9yZGUubm8iLCJmXHhmOHJkZS5ubyIsImdhbXZpay5ubyIsImdhbmdhdmlpa2Eubm8iLCJnXHhl''@;'; put 'put ''MVx1MDE0Ymdhdmlpa2Eubm8iLCJnYXVsYXIubm8iLCJnYXVzZGFsLm5vIiwiZ2lsZGVza2FsLm5vIiwiZ2lsZGVza1x4ZTVsLm5vIiwiZ2lza2Uubm8iLCJnamVtbmVzLm5vIiwiZ2plcmRydW0ubm8iLCJnamVyc3RhZC5ubyIsImdqZXNkYWwubm8iLCJnam92aWsubm8iLCJnalx4Zjh2aWsu''@;'; put 'put ''bm8iLCJnbG9wcGVuLm5vIiwiZ29sLm5vIiwiZ3Jhbi5ubyIsImdyYW5lLm5vIiwiZ3JhbnZpbi5ubyIsImdyYXRhbmdlbi5ubyIsImdyaW1zdGFkLm5vIiwiZ3Jvbmcubm8iLCJrcmFhbmdoa2Uubm8iLCJrclx4ZTVhbmdoa2Uubm8iLCJncnVlLm5vIiwiZ3VsZW4ubm8iLCJoYWRzZWwubm8i''@;'; put 'put ''LCJoYWxkZW4ubm8iLCJoYWxzYS5ubyIsImhhbWFyLm5vIiwiaGFtYXJveS5ubyIsImhhYm1lci5ubyIsImhceGUxYm1lci5ubyIsImhhcG1pci5ubyIsImhceGUxcG1pci5ubyIsImhhbW1lcmZlc3Qubm8iLCJoYW1tYXJmZWFzdGEubm8iLCJoXHhlMW1tXHhlMXJmZWFzdGEubm8iLCJoYXJh''@;'; put 'put ''bS5ubyIsImhhcmVpZC5ubyIsImhhcnN0YWQubm8iLCJoYXN2aWsubm8iLCJha25vbHVva3RhLm5vIiwiXHhlMWtcdTAxNGJvbHVva3RhLm5vIiwiaGF0dGZqZWxsZGFsLm5vIiwiYWFyYm9ydGUubm8iLCJoYXVnZXN1bmQubm8iLCJoZW1uZS5ubyIsImhlbW5lcy5ubyIsImhlbXNlZGFsLm5v''@;'; put 'put ''IiwiaGVyb3kubW9yZS1vZy1yb21zZGFsLm5vIiwiaGVyXHhmOHkubVx4ZjhyZS1vZy1yb21zZGFsLm5vIiwiaGVyb3kubm9yZGxhbmQubm8iLCJoZXJceGY4eS5ub3JkbGFuZC5ubyIsImhpdHJhLm5vIiwiaGphcnRkYWwubm8iLCJoamVsbWVsYW5kLm5vIiwiaG9ib2wubm8iLCJob2JceGY4''@;'; put 'put ''bC5ubyIsImhvZi5ubyIsImhvbC5ubyIsImhvbGUubm8iLCJob2xtZXN0cmFuZC5ubyIsImhvbHRhbGVuLm5vIiwiaG9sdFx4ZTVsZW4ubm8iLCJob3JuaW5kYWwubm8iLCJob3J0ZW4ubm8iLCJodXJkYWwubm8iLCJodXJ1bS5ubyIsImh2YWxlci5ubyIsImh5bGxlc3RhZC5ubyIsImhhZ2Vi''@;'; put 'put ''b3N0YWQubm8iLCJoXHhlNmdlYm9zdGFkLm5vIiwiaG95YW5nZXIubm8iLCJoXHhmOHlhbmdlci5ubyIsImhveWxhbmRldC5ubyIsImhceGY4eWxhbmRldC5ubyIsImhhLm5vIiwiaFx4ZTUubm8iLCJpYmVzdGFkLm5vIiwiaW5kZXJveS5ubyIsImluZGVyXHhmOHkubm8iLCJpdmVsYW5kLm5v''@;'; put 'put ''IiwiamV2bmFrZXIubm8iLCJqb25kYWwubm8iLCJqb2xzdGVyLm5vIiwialx4Zjhsc3Rlci5ubyIsImthcmFzam9rLm5vIiwia2FyYXNqb2hrYS5ubyIsImtceGUxclx4ZTFcdTAxNjFqb2hrYS5ubyIsImthcmxzb3kubm8iLCJnYWxzYS5ubyIsImdceGUxbHNceGUxLm5vIiwia2FybW95Lm5v''@;'; put 'put ''Iiwia2FybVx4Zjh5Lm5vIiwia2F1dG9rZWluby5ubyIsImd1b3ZkYWdlYWlkbnUubm8iLCJrbGVwcC5ubyIsImtsYWJ1Lm5vIiwia2xceGU2YnUubm8iLCJrb25nc2Jlcmcubm8iLCJrb25nc3Zpbmdlci5ubyIsImtyYWdlcm8ubm8iLCJrcmFnZXJceGY4Lm5vIiwia3Jpc3RpYW5zYW5kLm5v''@;'; put 'put ''Iiwia3Jpc3RpYW5zdW5kLm5vIiwia3JvZHNoZXJhZC5ubyIsImtyXHhmOGRzaGVyYWQubm8iLCJrdmFsc3VuZC5ubyIsInJhaGtrZXJhdmp1Lm5vIiwiclx4ZTFoa2tlclx4ZTF2anUubm8iLCJrdmFtLm5vIiwia3ZpbmVzZGFsLm5vIiwia3Zpbm5oZXJhZC5ubyIsImt2aXRlc2VpZC5ubyIs''@;'; put 'put ''Imt2aXRzb3kubm8iLCJrdml0c1x4Zjh5Lm5vIiwia3ZhZmpvcmQubm8iLCJrdlx4ZTZmam9yZC5ubyIsImdpZWh0YXZ1b2F0bmEubm8iLCJrdmFuYW5nZW4ubm8iLCJrdlx4ZTZuYW5nZW4ubm8iLCJuYXZ1b3RuYS5ubyIsIm5ceGUxdnVvdG5hLm5vIiwia2Fmam9yZC5ubyIsImtceGU1Zmpv''@;'; put 'put ''cmQubm8iLCJnYWl2dW90bmEubm8iLCJnXHhlMWl2dW90bmEubm8iLCJsYXJ2aWsubm8iLCJsYXZhbmdlbi5ubyIsImxhdmFnaXMubm8iLCJsb2FiYXQubm8iLCJsb2FiXHhlMXQubm8iLCJsZWJlc2J5Lm5vIiwiZGF2dmVzaWlkYS5ubyIsImxlaWthbmdlci5ubyIsImxlaXJmam9yZC5ubyIs''@;'; put 'put ''Imxla2Eubm8iLCJsZWtzdmlrLm5vIiwibGVudmlrLm5vIiwibGVhbmdhdmlpa2Eubm8iLCJsZWFcdTAxNGJnYXZpaWthLm5vIiwibGVzamEubm8iLCJsZXZhbmdlci5ubyIsImxpZXIubm8iLCJsaWVybmUubm8iLCJsaWxsZWhhbW1lci5ubyIsImxpbGxlc2FuZC5ubyIsImxpbmRlc25lcy5u''@;'; put 'put ''byIsImxpbmRhcy5ubyIsImxpbmRceGU1cy5ubyIsImxvbS5ubyIsImxvcHBhLm5vIiwibGFocHBpLm5vIiwibFx4ZTFocHBpLm5vIiwibHVuZC5ubyIsImx1bm5lci5ubyIsImx1cm95Lm5vIiwibHVyXHhmOHkubm8iLCJsdXN0ZXIubm8iLCJseW5nZGFsLm5vIiwibHluZ2VuLm5vIiwiaXZn''@;'; put 'put ''dS5ubyIsImxhcmRhbC5ubyIsImxlcmRhbC5ubyIsImxceGU2cmRhbC5ubyIsImxvZGluZ2VuLm5vIiwibFx4ZjhkaW5nZW4ubm8iLCJsb3JlbnNrb2cubm8iLCJsXHhmOHJlbnNrb2cubm8iLCJsb3Rlbi5ubyIsImxceGY4dGVuLm5vIiwibWFsdmlrLm5vIiwibWFzb3kubm8iLCJtXHhlNXNc''@;'; put 'put ''eGY4eS5ubyIsIm11b3NhdC5ubyIsIm11b3NceGUxdC5ubyIsIm1hbmRhbC5ubyIsIm1hcmtlci5ubyIsIm1hcm5hcmRhbC5ubyIsIm1hc2Zqb3JkZW4ubm8iLCJtZWxhbmQubm8iLCJtZWxkYWwubm8iLCJtZWxodXMubm8iLCJtZWxveS5ubyIsIm1lbFx4Zjh5Lm5vIiwibWVyYWtlci5ubyIs''@;'; put 'put ''Im1lclx4ZTVrZXIubm8iLCJtb2FyZWtlLm5vIiwibW9ceGU1cmVrZS5ubyIsIm1pZHN1bmQubm8iLCJtaWR0cmUtZ2F1bGRhbC5ubyIsIm1vZGFsZW4ubm8iLCJtb2R1bS5ubyIsIm1vbGRlLm5vIiwibW9za2VuZXMubm8iLCJtb3NzLm5vIiwibW9zdmlrLm5vIiwibWFsc2Vsdi5ubyIsIm1c''@;'; put 'put ''eGU1bHNlbHYubm8iLCJtYWxhdHZ1b3BtaS5ubyIsIm1ceGUxbGF0dnVvcG1pLm5vIiwibmFtZGFsc2VpZC5ubyIsImFlanJpZS5ubyIsIm5hbXNvcy5ubyIsIm5hbXNza29nYW4ubm8iLCJuYWFtZXNqZXZ1ZW1pZS5ubyIsIm5ceGU1XHhlNW1lc2pldnVlbWllLm5vIiwibGFha2VzdnVlbWll''@;'; put 'put ''Lm5vIiwibmFubmVzdGFkLm5vIiwibmFydmlrLm5vIiwibmFydmlpa2Eubm8iLCJuYXVzdGRhbC5ubyIsIm5lZHJlLWVpa2VyLm5vIiwibmVzLmFrZXJzaHVzLm5vIiwibmVzLmJ1c2tlcnVkLm5vIiwibmVzbmEubm8iLCJuZXNvZGRlbi5ubyIsIm5lc3NlYnkubm8iLCJ1bmphcmdhLm5vIiwi''@;'; put 'put ''dW5qXHhlMXJnYS5ubyIsIm5lc3NldC5ubyIsIm5pc3NlZGFsLm5vIiwibml0dGVkYWwubm8iLCJub3JkLWF1cmRhbC5ubyIsIm5vcmQtZnJvbi5ubyIsIm5vcmQtb2RhbC5ubyIsIm5vcmRkYWwubm8iLCJub3Jka2FwcC5ubyIsImRhdnZlbmphcmdhLm5vIiwiZGF2dmVualx4ZTFyZ2Eubm8i''@;'; put 'put ''LCJub3JkcmUtbGFuZC5ubyIsIm5vcmRyZWlzYS5ubyIsInJhaXNhLm5vIiwiclx4ZTFpc2Eubm8iLCJub3JlLW9nLXV2ZGFsLm5vIiwibm90b2RkZW4ubm8iLCJuYXJveS5ubyIsIm5ceGU2clx4Zjh5Lm5vIiwibm90dGVyb3kubm8iLCJuXHhmOHR0ZXJceGY4eS5ubyIsIm9kZGEubm8iLCJv''@;'; put 'put ''a3NuZXMubm8iLCJceGY4a3NuZXMubm8iLCJvcHBkYWwubm8iLCJvcHBlZ2FyZC5ubyIsIm9wcGVnXHhlNXJkLm5vIiwib3JrZGFsLm5vIiwib3JsYW5kLm5vIiwiXHhmOHJsYW5kLm5vIiwib3Jza29nLm5vIiwiXHhmOHJza29nLm5vIiwib3JzdGEubm8iLCJceGY4cnN0YS5ubyIsIm9zLmhl''@;'; put 'put ''ZG1hcmsubm8iLCJvcy5ob3JkYWxhbmQubm8iLCJvc2VuLm5vIiwib3N0ZXJveS5ubyIsIm9zdGVyXHhmOHkubm8iLCJvc3RyZS10b3Rlbi5ubyIsIlx4ZjhzdHJlLXRvdGVuLm5vIiwib3ZlcmhhbGxhLm5vIiwib3ZyZS1laWtlci5ubyIsIlx4Zjh2cmUtZWlrZXIubm8iLCJveWVyLm5vIiwi''@;'; put 'put ''XHhmOHllci5ubyIsIm95Z2FyZGVuLm5vIiwiXHhmOHlnYXJkZW4ubm8iLCJveXN0cmUtc2xpZHJlLm5vIiwiXHhmOHlzdHJlLXNsaWRyZS5ubyIsInBvcnNhbmdlci5ubyIsInBvcnNhbmd1Lm5vIiwicG9yc1x4ZTFcdTAxNGJndS5ubyIsInBvcnNncnVubi5ubyIsInJhZG95Lm5vIiwicmFk''@;'; put 'put ''XHhmOHkubm8iLCJyYWtrZXN0YWQubm8iLCJyYW5hLm5vIiwicnVvdmF0Lm5vIiwicmFuZGFiZXJnLm5vIiwicmF1bWEubm8iLCJyZW5kYWxlbi5ubyIsInJlbm5lYnUubm8iLCJyZW5uZXNveS5ubyIsInJlbm5lc1x4Zjh5Lm5vIiwicmluZGFsLm5vIiwicmluZ2VidS5ubyIsInJpbmdlcmlr''@;'; put 'put ''ZS5ubyIsInJpbmdzYWtlci5ubyIsInJpc3NhLm5vIiwicmlzb3Iubm8iLCJyaXNceGY4ci5ubyIsInJvYW4ubm8iLCJyb2xsYWcubm8iLCJyeWdnZS5ubyIsInJhbGluZ2VuLm5vIiwiclx4ZTZsaW5nZW4ubm8iLCJyb2RveS5ubyIsInJceGY4ZFx4Zjh5Lm5vIiwicm9tc2tvZy5ubyIsInJc''@;'; put 'put ''eGY4bXNrb2cubm8iLCJyb3Jvcy5ubyIsInJceGY4cm9zLm5vIiwicm9zdC5ubyIsInJceGY4c3Qubm8iLCJyb3lrZW4ubm8iLCJyXHhmOHlrZW4ubm8iLCJyb3lydmlrLm5vIiwiclx4Zjh5cnZpay5ubyIsInJhZGUubm8iLCJyXHhlNWRlLm5vIiwic2FsYW5nZW4ubm8iLCJzaWVsbGFrLm5v''@;'; put 'put ''Iiwic2FsdGRhbC5ubyIsInNhbGF0Lm5vIiwic1x4ZTFsXHhlMXQubm8iLCJzXHhlMWxhdC5ubyIsInNhbW5hbmdlci5ubyIsInNhbmRlLm1vcmUtb2ctcm9tc2RhbC5ubyIsInNhbmRlLm1ceGY4cmUtb2ctcm9tc2RhbC5ubyIsInNhbmRlLnZlc3Rmb2xkLm5vIiwic2FuZGVmam9yZC5ubyIs''@;'; put 'put ''InNhbmRuZXMubm8iLCJzYW5kb3kubm8iLCJzYW5kXHhmOHkubm8iLCJzYXJwc2Jvcmcubm8iLCJzYXVkYS5ubyIsInNhdWhlcmFkLm5vIiwic2VsLm5vIiwic2VsYnUubm8iLCJzZWxqZS5ubyIsInNlbGpvcmQubm8iLCJzaWdkYWwubm8iLCJzaWxqYW4ubm8iLCJzaXJkYWwubm8iLCJza2F1''@;'; put 'put ''bi5ubyIsInNrZWRzbW8ubm8iLCJza2kubm8iLCJza2llbi5ubyIsInNraXB0dmV0Lm5vIiwic2tqZXJ2b3kubm8iLCJza2plcnZceGY4eS5ubyIsInNraWVydmEubm8iLCJza2llcnZceGUxLm5vIiwic2tqYWsubm8iLCJza2pceGU1ay5ubyIsInNrb2RqZS5ubyIsInNrYW5sYW5kLm5vIiwi''@;'; put 'put ''c2tceGU1bmxhbmQubm8iLCJza2FuaXQubm8iLCJza1x4ZTFuaXQubm8iLCJzbW9sYS5ubyIsInNtXHhmOGxhLm5vIiwic25pbGxmam9yZC5ubyIsInNuYXNhLm5vIiwic25ceGU1c2Eubm8iLCJzbm9hc2Eubm8iLCJzbmFhc2Uubm8iLCJzblx4ZTVhc2Uubm8iLCJzb2duZGFsLm5vIiwic29r''@;'; put 'put ''bmRhbC5ubyIsInNvbGEubm8iLCJzb2x1bmQubm8iLCJzb25nZGFsZW4ubm8iLCJzb3J0bGFuZC5ubyIsInNweWRlYmVyZy5ubyIsInN0YW5nZS5ubyIsInN0YXZhbmdlci5ubyIsInN0ZWlnZW4ubm8iLCJzdGVpbmtqZXIubm8iLCJzdGpvcmRhbC5ubyIsInN0alx4ZjhyZGFsLm5vIiwic3Rv''@;'; put 'put ''a2tlLm5vIiwic3Rvci1lbHZkYWwubm8iLCJzdG9yZC5ubyIsInN0b3JkYWwubm8iLCJzdG9yZmpvcmQubm8iLCJvbWFzdnVvdG5hLm5vIiwic3RyYW5kLm5vIiwic3RyYW5kYS5ubyIsInN0cnluLm5vIiwic3VsYS5ubyIsInN1bGRhbC5ubyIsInN1bmQubm8iLCJzdW5uZGFsLm5vIiwic3Vy''@;'; put 'put ''bmFkYWwubm8iLCJzdmVpby5ubyIsInN2ZWx2aWsubm8iLCJzeWtreWx2ZW4ubm8iLCJzb2duZS5ubyIsInNceGY4Z25lLm5vIiwic29tbmEubm8iLCJzXHhmOG1uYS5ubyIsInNvbmRyZS1sYW5kLm5vIiwic1x4ZjhuZHJlLWxhbmQubm8iLCJzb3ItYXVyZGFsLm5vIiwic1x4ZjhyLWF1cmRh''@;'; put 'put ''bC5ubyIsInNvci1mcm9uLm5vIiwic1x4ZjhyLWZyb24ubm8iLCJzb3Itb2RhbC5ubyIsInNceGY4ci1vZGFsLm5vIiwic29yLXZhcmFuZ2VyLm5vIiwic1x4ZjhyLXZhcmFuZ2VyLm5vIiwibWF0dGEtdmFyamphdC5ubyIsIm1ceGUxdHRhLXZceGUxcmpqYXQubm8iLCJzb3Jmb2xkLm5vIiwi''@;'; put 'put ''c1x4ZjhyZm9sZC5ubyIsInNvcnJlaXNhLm5vIiwic1x4ZjhycmVpc2Eubm8iLCJzb3J1bS5ubyIsInNceGY4cnVtLm5vIiwidGFuYS5ubyIsImRlYXRudS5ubyIsInRpbWUubm8iLCJ0aW5ndm9sbC5ubyIsInRpbm4ubm8iLCJ0amVsZHN1bmQubm8iLCJkaWVsZGRhbnVvcnJpLm5vIiwidGpv''@;'; put 'put ''bWUubm8iLCJ0alx4ZjhtZS5ubyIsInRva2tlLm5vIiwidG9sZ2Eubm8iLCJ0b3Jza2VuLm5vIiwidHJhbm95Lm5vIiwidHJhblx4Zjh5Lm5vIiwidHJvbXNvLm5vIiwidHJvbXNceGY4Lm5vIiwidHJvbXNhLm5vIiwicm9tc2Eubm8iLCJ0cm9uZGhlaW0ubm8iLCJ0cm9hbmRpbi5ubyIsInRy''@;'; put 'put ''eXNpbC5ubyIsInRyYW5hLm5vIiwidHJceGU2bmEubm8iLCJ0cm9nc3RhZC5ubyIsInRyXHhmOGdzdGFkLm5vIiwidHZlZGVzdHJhbmQubm8iLCJ0eWRhbC5ubyIsInR5bnNldC5ubyIsInR5c2Zqb3JkLm5vIiwiZGl2dGFzdnVvZG5hLm5vIiwiZGl2dHRhc3Z1b3RuYS5ubyIsInR5c25lcy5u''@;'; put 'put ''byIsInR5c3Zhci5ubyIsInR5c3ZceGU2ci5ubyIsInRvbnNiZXJnLm5vIiwidFx4Zjhuc2Jlcmcubm8iLCJ1bGxlbnNha2VyLm5vIiwidWxsZW5zdmFuZy5ubyIsInVsdmlrLm5vIiwidXRzaXJhLm5vIiwidmFkc28ubm8iLCJ2YWRzXHhmOC5ubyIsImNhaGNlc3VvbG8ubm8iLCJcdTAxMGRc''@;'; put 'put ''eGUxaGNlc3VvbG8ubm8iLCJ2YWtzZGFsLm5vIiwidmFsbGUubm8iLCJ2YW5nLm5vIiwidmFueWx2ZW4ubm8iLCJ2YXJkby5ubyIsInZhcmRceGY4Lm5vIiwidmFyZ2dhdC5ubyIsInZceGUxcmdnXHhlMXQubm8iLCJ2ZWZzbi5ubyIsInZhYXBzdGUubm8iLCJ2ZWdhLm5vIiwidmVnYXJzaGVp''@;'; put 'put ''Lm5vIiwidmVnXHhlNXJzaGVpLm5vIiwidmVubmVzbGEubm8iLCJ2ZXJkYWwubm8iLCJ2ZXJyYW4ubm8iLCJ2ZXN0Ynkubm8iLCJ2ZXN0bmVzLm5vIiwidmVzdHJlLXNsaWRyZS5ubyIsInZlc3RyZS10b3Rlbi5ubyIsInZlc3R2YWdveS5ubyIsInZlc3R2XHhlNWdceGY4eS5ubyIsInZldmVs''@;'; put 'put ''c3RhZC5ubyIsInZpay5ubyIsInZpa25hLm5vIiwidmluZGFmam9yZC5ubyIsInZvbGRhLm5vIiwidm9zcy5ubyIsInZhcm95Lm5vIiwidlx4ZTZyXHhmOHkubm8iLCJ2YWdhbi5ubyIsInZceGU1Z2FuLm5vIiwidm9hZ2F0Lm5vIiwidmFnc295Lm5vIiwidlx4ZTVnc1x4Zjh5Lm5vIiwidmFn''@;'; put 'put ''YS5ubyIsInZceGU1Z1x4ZTUubm8iLCJ2YWxlci5vc3Rmb2xkLm5vIiwidlx4ZTVsZXIuXHhmOHN0Zm9sZC5ubyIsInZhbGVyLmhlZG1hcmsubm8iLCJ2XHhlNWxlci5oZWRtYXJrLm5vIiwiKi5ucCIsIm5yIiwiYml6Lm5yIiwiaW5mby5uciIsImdvdi5uciIsImVkdS5uciIsIm9yZy5uciIs''@;'; put 'put ''Im5ldC5uciIsImNvbS5uciIsIm51IiwibnoiLCJhYy5ueiIsImNvLm56IiwiY3JpLm56IiwiZ2Vlay5ueiIsImdlbi5ueiIsImdvdnQubnoiLCJoZWFsdGgubnoiLCJpd2kubnoiLCJraXdpLm56IiwibWFvcmkubnoiLCJtaWwubnoiLCJtXHUwMTAxb3JpLm56IiwibmV0Lm56Iiwib3JnLm56''@;'; put 'put ''IiwicGFybGlhbWVudC5ueiIsInNjaG9vbC5ueiIsIm9tIiwiY28ub20iLCJjb20ub20iLCJlZHUub20iLCJnb3Yub20iLCJtZWQub20iLCJtdXNldW0ub20iLCJuZXQub20iLCJvcmcub20iLCJwcm8ub20iLCJvbmlvbiIsIm9yZyIsInBhIiwiYWMucGEiLCJnb2IucGEiLCJjb20ucGEiLCJv''@;'; put 'put ''cmcucGEiLCJzbGQucGEiLCJlZHUucGEiLCJuZXQucGEiLCJpbmcucGEiLCJhYm8ucGEiLCJtZWQucGEiLCJub20ucGEiLCJwZSIsImVkdS5wZSIsImdvYi5wZSIsIm5vbS5wZSIsIm1pbC5wZSIsIm9yZy5wZSIsImNvbS5wZSIsIm5ldC5wZSIsInBmIiwiY29tLnBmIiwib3JnLnBmIiwiZWR1''@;'; put 'put ''LnBmIiwiKi5wZyIsInBoIiwiY29tLnBoIiwibmV0LnBoIiwib3JnLnBoIiwiZ292LnBoIiwiZWR1LnBoIiwibmdvLnBoIiwibWlsLnBoIiwiaS5waCIsInBrIiwiY29tLnBrIiwibmV0LnBrIiwiZWR1LnBrIiwib3JnLnBrIiwiZmFtLnBrIiwiYml6LnBrIiwid2ViLnBrIiwiZ292LnBrIiwi''@;'; put 'put ''Z29iLnBrIiwiZ29rLnBrIiwiZ29uLnBrIiwiZ29wLnBrIiwiZ29zLnBrIiwiaW5mby5wayIsInBsIiwiY29tLnBsIiwibmV0LnBsIiwib3JnLnBsIiwiYWlkLnBsIiwiYWdyby5wbCIsImF0bS5wbCIsImF1dG8ucGwiLCJiaXoucGwiLCJlZHUucGwiLCJnbWluYS5wbCIsImdzbS5wbCIsImlu''@;'; put 'put ''Zm8ucGwiLCJtYWlsLnBsIiwibWlhc3RhLnBsIiwibWVkaWEucGwiLCJtaWwucGwiLCJuaWVydWNob21vc2NpLnBsIiwibm9tLnBsIiwicGMucGwiLCJwb3dpYXQucGwiLCJwcml2LnBsIiwicmVhbGVzdGF0ZS5wbCIsInJlbC5wbCIsInNleC5wbCIsInNob3AucGwiLCJza2xlcC5wbCIsInNv''@;'; put 'put ''cy5wbCIsInN6a29sYS5wbCIsInRhcmdpLnBsIiwidG0ucGwiLCJ0b3VyaXNtLnBsIiwidHJhdmVsLnBsIiwidHVyeXN0eWthLnBsIiwiZ292LnBsIiwiYXAuZ292LnBsIiwiaWMuZ292LnBsIiwiaXMuZ292LnBsIiwidXMuZ292LnBsIiwia21wc3AuZ292LnBsIiwia3Bwc3AuZ292LnBsIiwi''@;'; put 'put ''a3dwc3AuZ292LnBsIiwicHNwLmdvdi5wbCIsIndza3IuZ292LnBsIiwia3dwLmdvdi5wbCIsIm13Lmdvdi5wbCIsInVnLmdvdi5wbCIsInVtLmdvdi5wbCIsInVtaWcuZ292LnBsIiwidWdpbS5nb3YucGwiLCJ1cG93Lmdvdi5wbCIsInV3Lmdvdi5wbCIsInN0YXJvc3R3by5nb3YucGwiLCJw''@;'; put 'put ''YS5nb3YucGwiLCJwby5nb3YucGwiLCJwc3NlLmdvdi5wbCIsInB1cC5nb3YucGwiLCJyemd3Lmdvdi5wbCIsInNhLmdvdi5wbCIsInNvLmdvdi5wbCIsInNyLmdvdi5wbCIsIndzYS5nb3YucGwiLCJza28uZ292LnBsIiwidXpzLmdvdi5wbCIsIndpaWguZ292LnBsIiwid2luYi5nb3YucGwi''@;'; put 'put ''LCJwaW5iLmdvdi5wbCIsIndpb3MuZ292LnBsIiwid2l0ZC5nb3YucGwiLCJ3em1pdXcuZ292LnBsIiwicGl3Lmdvdi5wbCIsIndpdy5nb3YucGwiLCJncml3Lmdvdi5wbCIsIndpZi5nb3YucGwiLCJvdW0uZ292LnBsIiwic2RuLmdvdi5wbCIsInpwLmdvdi5wbCIsInVwcG8uZ292LnBsIiwi''@;'; put 'put ''bXVwLmdvdi5wbCIsInd1b3ouZ292LnBsIiwia29uc3VsYXQuZ292LnBsIiwib2lybS5nb3YucGwiLCJhdWd1c3Rvdy5wbCIsImJhYmlhLWdvcmEucGwiLCJiZWR6aW4ucGwiLCJiZXNraWR5LnBsIiwiYmlhbG93aWV6YS5wbCIsImJpYWx5c3Rvay5wbCIsImJpZWxhd2EucGwiLCJiaWVzemN6''@;'; put 'put ''YWR5LnBsIiwiYm9sZXNsYXdpZWMucGwiLCJieWRnb3N6Y3oucGwiLCJieXRvbS5wbCIsImNpZXN6eW4ucGwiLCJjemVsYWR6LnBsIiwiY3plc3QucGwiLCJkbHVnb2xla2EucGwiLCJlbGJsYWcucGwiLCJlbGsucGwiLCJnbG9nb3cucGwiLCJnbmllem5vLnBsIiwiZ29ybGljZS5wbCIsImdy''@;'; put 'put ''YWpld28ucGwiLCJpbGF3YS5wbCIsImphd29yem5vLnBsIiwiamVsZW5pYS1nb3JhLnBsIiwiamdvcmEucGwiLCJrYWxpc3oucGwiLCJrYXppbWllcnotZG9sbnkucGwiLCJrYXJwYWN6LnBsIiwia2FydHV6eS5wbCIsImthc3p1YnkucGwiLCJrYXRvd2ljZS5wbCIsImtlcG5vLnBsIiwia2V0''@;'; put 'put ''cnp5bi5wbCIsImtsb2R6a28ucGwiLCJrb2JpZXJ6eWNlLnBsIiwia29sb2JyemVnLnBsIiwia29uaW4ucGwiLCJrb25za293b2xhLnBsIiwia3V0bm8ucGwiLCJsYXB5LnBsIiwibGVib3JrLnBsIiwibGVnbmljYS5wbCIsImxlemFqc2sucGwiLCJsaW1hbm93YS5wbCIsImxvbXphLnBsIiwi''@;'; put 'put ''bG93aWN6LnBsIiwibHViaW4ucGwiLCJsdWtvdy5wbCIsIm1hbGJvcmsucGwiLCJtYWxvcG9sc2thLnBsIiwibWF6b3dzemUucGwiLCJtYXp1cnkucGwiLCJtaWVsZWMucGwiLCJtaWVsbm8ucGwiLCJtcmFnb3dvLnBsIiwibmFrbG8ucGwiLCJub3dhcnVkYS5wbCIsIm55c2EucGwiLCJvbGF3''@;'; put 'put ''YS5wbCIsIm9sZWNrby5wbCIsIm9sa3Vzei5wbCIsIm9sc3p0eW4ucGwiLCJvcG9jem5vLnBsIiwib3BvbGUucGwiLCJvc3Ryb2RhLnBsIiwib3N0cm9sZWthLnBsIiwib3N0cm93aWVjLnBsIiwib3N0cm93d2xrcC5wbCIsInBpbGEucGwiLCJwaXN6LnBsIiwicG9kaGFsZS5wbCIsInBvZGxh''@;'; put 'put ''c2llLnBsIiwicG9sa293aWNlLnBsIiwicG9tb3J6ZS5wbCIsInBvbW9yc2tpZS5wbCIsInByb2Nob3dpY2UucGwiLCJwcnVzemtvdy5wbCIsInByemV3b3Jzay5wbCIsInB1bGF3eS5wbCIsInJhZG9tLnBsIiwicmF3YS1tYXoucGwiLCJyeWJuaWsucGwiLCJyemVzem93LnBsIiwic2Fub2su''@;'; put 'put ''cGwiLCJzZWpueS5wbCIsInNsYXNrLnBsIiwic2x1cHNrLnBsIiwic29zbm93aWVjLnBsIiwic3RhbG93YS13b2xhLnBsIiwic2tvY3pvdy5wbCIsInN0YXJhY2hvd2ljZS5wbCIsInN0YXJnYXJkLnBsIiwic3V3YWxraS5wbCIsInN3aWRuaWNhLnBsIiwic3dpZWJvZHppbi5wbCIsInN3aW5v''@;'; put 'put ''dWpzY2llLnBsIiwic3pjemVjaW4ucGwiLCJzemN6eXRuby5wbCIsInRhcm5vYnJ6ZWcucGwiLCJ0Z29yeS5wbCIsInR1cmVrLnBsIiwidHljaHkucGwiLCJ1c3RrYS5wbCIsIndhbGJyenljaC5wbCIsIndhcm1pYS5wbCIsIndhcnN6YXdhLnBsIiwid2F3LnBsIiwid2Vncm93LnBsIiwid2ll''@;'; put 'put ''bHVuLnBsIiwid2xvY2wucGwiLCJ3bG9jbGF3ZWsucGwiLCJ3b2R6aXNsYXcucGwiLCJ3b2xvbWluLnBsIiwid3JvY2xhdy5wbCIsInphY2hwb21vci5wbCIsInphZ2FuLnBsIiwiemFyb3cucGwiLCJ6Z29yYS5wbCIsInpnb3J6ZWxlYy5wbCIsInBtIiwicG4iLCJnb3YucG4iLCJjby5wbiIs''@;'; put 'put ''Im9yZy5wbiIsImVkdS5wbiIsIm5ldC5wbiIsInBvc3QiLCJwciIsImNvbS5wciIsIm5ldC5wciIsIm9yZy5wciIsImdvdi5wciIsImVkdS5wciIsImlzbGEucHIiLCJwcm8ucHIiLCJiaXoucHIiLCJpbmZvLnByIiwibmFtZS5wciIsImVzdC5wciIsInByb2YucHIiLCJhYy5wciIsInBybyIs''@;'; put 'put ''ImFhYS5wcm8iLCJhY2EucHJvIiwiYWNjdC5wcm8iLCJhdm9jYXQucHJvIiwiYmFyLnBybyIsImNwYS5wcm8iLCJlbmcucHJvIiwianVyLnBybyIsImxhdy5wcm8iLCJtZWQucHJvIiwicmVjaHQucHJvIiwicHMiLCJlZHUucHMiLCJnb3YucHMiLCJzZWMucHMiLCJwbG8ucHMiLCJjb20ucHMi''@;'; put 'put ''LCJvcmcucHMiLCJuZXQucHMiLCJwdCIsIm5ldC5wdCIsImdvdi5wdCIsIm9yZy5wdCIsImVkdS5wdCIsImludC5wdCIsInB1YmwucHQiLCJjb20ucHQiLCJub21lLnB0IiwicHciLCJjby5wdyIsIm5lLnB3Iiwib3IucHciLCJlZC5wdyIsImdvLnB3IiwiYmVsYXUucHciLCJweSIsImNvbS5w''@;'; put 'put ''eSIsImNvb3AucHkiLCJlZHUucHkiLCJnb3YucHkiLCJtaWwucHkiLCJuZXQucHkiLCJvcmcucHkiLCJxYSIsImNvbS5xYSIsImVkdS5xYSIsImdvdi5xYSIsIm1pbC5xYSIsIm5hbWUucWEiLCJuZXQucWEiLCJvcmcucWEiLCJzY2gucWEiLCJyZSIsImFzc28ucmUiLCJjb20ucmUiLCJub20u''@;'; put 'put ''cmUiLCJybyIsImFydHMucm8iLCJjb20ucm8iLCJmaXJtLnJvIiwiaW5mby5ybyIsIm5vbS5ybyIsIm50LnJvIiwib3JnLnJvIiwicmVjLnJvIiwic3RvcmUucm8iLCJ0bS5ybyIsInd3dy5ybyIsInJzIiwiYWMucnMiLCJjby5ycyIsImVkdS5ycyIsImdvdi5ycyIsImluLnJzIiwib3JnLnJz''@;'; put 'put ''IiwicnUiLCJydyIsImFjLnJ3IiwiY28ucnciLCJjb29wLnJ3IiwiZ292LnJ3IiwibWlsLnJ3IiwibmV0LnJ3Iiwib3JnLnJ3Iiwic2EiLCJjb20uc2EiLCJuZXQuc2EiLCJvcmcuc2EiLCJnb3Yuc2EiLCJtZWQuc2EiLCJwdWIuc2EiLCJlZHUuc2EiLCJzY2guc2EiLCJzYiIsImNvbS5zYiIs''@;'; put 'put ''ImVkdS5zYiIsImdvdi5zYiIsIm5ldC5zYiIsIm9yZy5zYiIsInNjIiwiY29tLnNjIiwiZ292LnNjIiwibmV0LnNjIiwib3JnLnNjIiwiZWR1LnNjIiwic2QiLCJjb20uc2QiLCJuZXQuc2QiLCJvcmcuc2QiLCJlZHUuc2QiLCJtZWQuc2QiLCJ0di5zZCIsImdvdi5zZCIsImluZm8uc2QiLCJz''@;'; put 'put ''ZSIsImEuc2UiLCJhYy5zZSIsImIuc2UiLCJiZC5zZSIsImJyYW5kLnNlIiwiYy5zZSIsImQuc2UiLCJlLnNlIiwiZi5zZSIsImZoLnNlIiwiZmhzay5zZSIsImZodi5zZSIsImcuc2UiLCJoLnNlIiwiaS5zZSIsImsuc2UiLCJrb21mb3JiLnNlIiwia29tbXVuYWxmb3JidW5kLnNlIiwia29t''@;'; put 'put ''dnV4LnNlIiwibC5zZSIsImxhbmJpYi5zZSIsIm0uc2UiLCJuLnNlIiwibmF0dXJicnVrc2d5bW4uc2UiLCJvLnNlIiwib3JnLnNlIiwicC5zZSIsInBhcnRpLnNlIiwicHAuc2UiLCJwcmVzcy5zZSIsInIuc2UiLCJzLnNlIiwidC5zZSIsInRtLnNlIiwidS5zZSIsIncuc2UiLCJ4LnNlIiwi''@;'; put 'put ''eS5zZSIsInouc2UiLCJzZyIsImNvbS5zZyIsIm5ldC5zZyIsIm9yZy5zZyIsImdvdi5zZyIsImVkdS5zZyIsInBlci5zZyIsInNoIiwiY29tLnNoIiwibmV0LnNoIiwiZ292LnNoIiwib3JnLnNoIiwibWlsLnNoIiwic2kiLCJzaiIsInNrIiwic2wiLCJjb20uc2wiLCJuZXQuc2wiLCJlZHUu''@;'; put 'put ''c2wiLCJnb3Yuc2wiLCJvcmcuc2wiLCJzbSIsInNuIiwiYXJ0LnNuIiwiY29tLnNuIiwiZWR1LnNuIiwiZ291di5zbiIsIm9yZy5zbiIsInBlcnNvLnNuIiwidW5pdi5zbiIsInNvIiwiY29tLnNvIiwiZWR1LnNvIiwiZ292LnNvIiwibWUuc28iLCJuZXQuc28iLCJvcmcuc28iLCJzciIsInNz''@;'; put 'put ''IiwiYml6LnNzIiwiY29tLnNzIiwiZWR1LnNzIiwiZ292LnNzIiwibWUuc3MiLCJuZXQuc3MiLCJvcmcuc3MiLCJzY2guc3MiLCJzdCIsImNvLnN0IiwiY29tLnN0IiwiY29uc3VsYWRvLnN0IiwiZWR1LnN0IiwiZW1iYWl4YWRhLnN0IiwibWlsLnN0IiwibmV0LnN0Iiwib3JnLnN0IiwicHJp''@;'; put 'put ''bmNpcGUuc3QiLCJzYW90b21lLnN0Iiwic3RvcmUuc3QiLCJzdSIsInN2IiwiY29tLnN2IiwiZWR1LnN2IiwiZ29iLnN2Iiwib3JnLnN2IiwicmVkLnN2Iiwic3giLCJnb3Yuc3giLCJzeSIsImVkdS5zeSIsImdvdi5zeSIsIm5ldC5zeSIsIm1pbC5zeSIsImNvbS5zeSIsIm9yZy5zeSIsInN6''@;'; put 'put ''IiwiY28uc3oiLCJhYy5zeiIsIm9yZy5zeiIsInRjIiwidGQiLCJ0ZWwiLCJ0ZiIsInRnIiwidGgiLCJhYy50aCIsImNvLnRoIiwiZ28udGgiLCJpbi50aCIsIm1pLnRoIiwibmV0LnRoIiwib3IudGgiLCJ0aiIsImFjLnRqIiwiYml6LnRqIiwiY28udGoiLCJjb20udGoiLCJlZHUudGoiLCJn''@;'; put 'put ''by50aiIsImdvdi50aiIsImludC50aiIsIm1pbC50aiIsIm5hbWUudGoiLCJuZXQudGoiLCJuaWMudGoiLCJvcmcudGoiLCJ0ZXN0LnRqIiwid2ViLnRqIiwidGsiLCJ0bCIsImdvdi50bCIsInRtIiwiY29tLnRtIiwiY28udG0iLCJvcmcudG0iLCJuZXQudG0iLCJub20udG0iLCJnb3YudG0i''@;'; put 'put ''LCJtaWwudG0iLCJlZHUudG0iLCJ0biIsImNvbS50biIsImVucy50biIsImZpbi50biIsImdvdi50biIsImluZC50biIsImluZm8udG4iLCJpbnRsLnRuIiwibWluY29tLnRuIiwibmF0LnRuIiwibmV0LnRuIiwib3JnLnRuIiwicGVyc28udG4iLCJ0b3VyaXNtLnRuIiwidG8iLCJjb20udG8i''@;'; put 'put ''LCJnb3YudG8iLCJuZXQudG8iLCJvcmcudG8iLCJlZHUudG8iLCJtaWwudG8iLCJ0ciIsImF2LnRyIiwiYmJzLnRyIiwiYmVsLnRyIiwiYml6LnRyIiwiY29tLnRyIiwiZHIudHIiLCJlZHUudHIiLCJnZW4udHIiLCJnb3YudHIiLCJpbmZvLnRyIiwibWlsLnRyIiwiazEyLnRyIiwia2VwLnRy''@;'; put 'put ''IiwibmFtZS50ciIsIm5ldC50ciIsIm9yZy50ciIsInBvbC50ciIsInRlbC50ciIsInRzay50ciIsInR2LnRyIiwid2ViLnRyIiwibmMudHIiLCJnb3YubmMudHIiLCJ0dCIsImNvLnR0IiwiY29tLnR0Iiwib3JnLnR0IiwibmV0LnR0IiwiYml6LnR0IiwiaW5mby50dCIsInByby50dCIsImlu''@;'; put 'put ''dC50dCIsImNvb3AudHQiLCJqb2JzLnR0IiwibW9iaS50dCIsInRyYXZlbC50dCIsIm11c2V1bS50dCIsImFlcm8udHQiLCJuYW1lLnR0IiwiZ292LnR0IiwiZWR1LnR0IiwidHYiLCJ0dyIsImVkdS50dyIsImdvdi50dyIsIm1pbC50dyIsImNvbS50dyIsIm5ldC50dyIsIm9yZy50dyIsImlk''@;'; put 'put ''di50dyIsImdhbWUudHciLCJlYml6LnR3IiwiY2x1Yi50dyIsIlx1N2RiMlx1OGRlZi50dyIsIlx1N2Q0NFx1N2U1NC50dyIsIlx1NTU0Nlx1Njk2ZC50dyIsInR6IiwiYWMudHoiLCJjby50eiIsImdvLnR6IiwiaG90ZWwudHoiLCJpbmZvLnR6IiwibWUudHoiLCJtaWwudHoiLCJtb2JpLnR6''@;'; put 'put ''IiwibmUudHoiLCJvci50eiIsInNjLnR6IiwidHYudHoiLCJ1YSIsImNvbS51YSIsImVkdS51YSIsImdvdi51YSIsImluLnVhIiwibmV0LnVhIiwib3JnLnVhIiwiY2hlcmthc3N5LnVhIiwiY2hlcmthc3kudWEiLCJjaGVybmlnb3YudWEiLCJjaGVybmloaXYudWEiLCJjaGVybml2dHNpLnVh''@;'; put 'put ''IiwiY2hlcm5vdnRzeS51YSIsImNrLnVhIiwiY24udWEiLCJjci51YSIsImNyaW1lYS51YSIsImN2LnVhIiwiZG4udWEiLCJkbmVwcm9wZXRyb3Zzay51YSIsImRuaXByb3BldHJvdnNrLnVhIiwiZG9uZXRzay51YSIsImRwLnVhIiwiaWYudWEiLCJpdmFuby1mcmFua2l2c2sudWEiLCJraC51''@;'; put 'put ''YSIsImtoYXJraXYudWEiLCJraGFya292LnVhIiwia2hlcnNvbi51YSIsImtobWVsbml0c2tpeS51YSIsImtobWVsbnl0c2t5aS51YSIsImtpZXYudWEiLCJraXJvdm9ncmFkLnVhIiwia20udWEiLCJrci51YSIsImtyeW0udWEiLCJrcy51YSIsImt2LnVhIiwia3lpdi51YSIsImxnLnVhIiwi''@;'; put 'put ''bHQudWEiLCJsdWdhbnNrLnVhIiwibHV0c2sudWEiLCJsdi51YSIsImx2aXYudWEiLCJtay51YSIsIm15a29sYWl2LnVhIiwibmlrb2xhZXYudWEiLCJvZC51YSIsIm9kZXNhLnVhIiwib2Rlc3NhLnVhIiwicGwudWEiLCJwb2x0YXZhLnVhIiwicml2bmUudWEiLCJyb3Zuby51YSIsInJ2LnVh''@;'; put 'put ''Iiwic2IudWEiLCJzZWJhc3RvcG9sLnVhIiwic2V2YXN0b3BvbC51YSIsInNtLnVhIiwic3VteS51YSIsInRlLnVhIiwidGVybm9waWwudWEiLCJ1ei51YSIsInV6aGdvcm9kLnVhIiwidmlubmljYS51YSIsInZpbm55dHNpYS51YSIsInZuLnVhIiwidm9seW4udWEiLCJ5YWx0YS51YSIsInph''@;'; put 'put ''cG9yaXpoemhlLnVhIiwiemFwb3Jpemh6aGlhLnVhIiwiemhpdG9taXIudWEiLCJ6aHl0b215ci51YSIsInpwLnVhIiwienQudWEiLCJ1ZyIsImNvLnVnIiwib3IudWciLCJhYy51ZyIsInNjLnVnIiwiZ28udWciLCJuZS51ZyIsImNvbS51ZyIsIm9yZy51ZyIsInVrIiwiYWMudWsiLCJjby51''@;'; put 'put ''ayIsImdvdi51ayIsImx0ZC51ayIsIm1lLnVrIiwibmV0LnVrIiwibmhzLnVrIiwib3JnLnVrIiwicGxjLnVrIiwicG9saWNlLnVrIiwiKi5zY2gudWsiLCJ1cyIsImRuaS51cyIsImZlZC51cyIsImlzYS51cyIsImtpZHMudXMiLCJuc24udXMiLCJhay51cyIsImFsLnVzIiwiYXIudXMiLCJh''@;'; put 'put ''cy51cyIsImF6LnVzIiwiY2EudXMiLCJjby51cyIsImN0LnVzIiwiZGMudXMiLCJkZS51cyIsImZsLnVzIiwiZ2EudXMiLCJndS51cyIsImhpLnVzIiwiaWEudXMiLCJpZC51cyIsImlsLnVzIiwiaW4udXMiLCJrcy51cyIsImt5LnVzIiwibGEudXMiLCJtYS51cyIsIm1kLnVzIiwibWUudXMi''@;'; put 'put ''LCJtaS51cyIsIm1uLnVzIiwibW8udXMiLCJtcy51cyIsIm10LnVzIiwibmMudXMiLCJuZC51cyIsIm5lLnVzIiwibmgudXMiLCJuai51cyIsIm5tLnVzIiwibnYudXMiLCJueS51cyIsIm9oLnVzIiwib2sudXMiLCJvci51cyIsInBhLnVzIiwicHIudXMiLCJyaS51cyIsInNjLnVzIiwic2Qu''@;'; put 'put ''dXMiLCJ0bi51cyIsInR4LnVzIiwidXQudXMiLCJ2aS51cyIsInZ0LnVzIiwidmEudXMiLCJ3YS51cyIsIndpLnVzIiwid3YudXMiLCJ3eS51cyIsImsxMi5hay51cyIsImsxMi5hbC51cyIsImsxMi5hci51cyIsImsxMi5hcy51cyIsImsxMi5hei51cyIsImsxMi5jYS51cyIsImsxMi5jby51''@;'; put 'put ''cyIsImsxMi5jdC51cyIsImsxMi5kYy51cyIsImsxMi5kZS51cyIsImsxMi5mbC51cyIsImsxMi5nYS51cyIsImsxMi5ndS51cyIsImsxMi5pYS51cyIsImsxMi5pZC51cyIsImsxMi5pbC51cyIsImsxMi5pbi51cyIsImsxMi5rcy51cyIsImsxMi5reS51cyIsImsxMi5sYS51cyIsImsxMi5t''@;'; put 'put ''YS51cyIsImsxMi5tZC51cyIsImsxMi5tZS51cyIsImsxMi5taS51cyIsImsxMi5tbi51cyIsImsxMi5tby51cyIsImsxMi5tcy51cyIsImsxMi5tdC51cyIsImsxMi5uYy51cyIsImsxMi5uZS51cyIsImsxMi5uaC51cyIsImsxMi5uai51cyIsImsxMi5ubS51cyIsImsxMi5udi51cyIsImsx''@;'; put 'put ''Mi5ueS51cyIsImsxMi5vaC51cyIsImsxMi5vay51cyIsImsxMi5vci51cyIsImsxMi5wYS51cyIsImsxMi5wci51cyIsImsxMi5zYy51cyIsImsxMi50bi51cyIsImsxMi50eC51cyIsImsxMi51dC51cyIsImsxMi52aS51cyIsImsxMi52dC51cyIsImsxMi52YS51cyIsImsxMi53YS51cyIs''@;'; put 'put ''ImsxMi53aS51cyIsImsxMi53eS51cyIsImNjLmFrLnVzIiwiY2MuYWwudXMiLCJjYy5hci51cyIsImNjLmFzLnVzIiwiY2MuYXoudXMiLCJjYy5jYS51cyIsImNjLmNvLnVzIiwiY2MuY3QudXMiLCJjYy5kYy51cyIsImNjLmRlLnVzIiwiY2MuZmwudXMiLCJjYy5nYS51cyIsImNjLmd1LnVz''@;'; put 'put ''IiwiY2MuaGkudXMiLCJjYy5pYS51cyIsImNjLmlkLnVzIiwiY2MuaWwudXMiLCJjYy5pbi51cyIsImNjLmtzLnVzIiwiY2Mua3kudXMiLCJjYy5sYS51cyIsImNjLm1hLnVzIiwiY2MubWQudXMiLCJjYy5tZS51cyIsImNjLm1pLnVzIiwiY2MubW4udXMiLCJjYy5tby51cyIsImNjLm1zLnVz''@;'; put 'put ''IiwiY2MubXQudXMiLCJjYy5uYy51cyIsImNjLm5kLnVzIiwiY2MubmUudXMiLCJjYy5uaC51cyIsImNjLm5qLnVzIiwiY2Mubm0udXMiLCJjYy5udi51cyIsImNjLm55LnVzIiwiY2Mub2gudXMiLCJjYy5vay51cyIsImNjLm9yLnVzIiwiY2MucGEudXMiLCJjYy5wci51cyIsImNjLnJpLnVz''@;'; put 'put ''IiwiY2Muc2MudXMiLCJjYy5zZC51cyIsImNjLnRuLnVzIiwiY2MudHgudXMiLCJjYy51dC51cyIsImNjLnZpLnVzIiwiY2MudnQudXMiLCJjYy52YS51cyIsImNjLndhLnVzIiwiY2Mud2kudXMiLCJjYy53di51cyIsImNjLnd5LnVzIiwibGliLmFrLnVzIiwibGliLmFsLnVzIiwibGliLmFy''@;'; put 'put ''LnVzIiwibGliLmFzLnVzIiwibGliLmF6LnVzIiwibGliLmNhLnVzIiwibGliLmNvLnVzIiwibGliLmN0LnVzIiwibGliLmRjLnVzIiwibGliLmZsLnVzIiwibGliLmdhLnVzIiwibGliLmd1LnVzIiwibGliLmhpLnVzIiwibGliLmlhLnVzIiwibGliLmlkLnVzIiwibGliLmlsLnVzIiwibGli''@;'; put 'put ''LmluLnVzIiwibGliLmtzLnVzIiwibGliLmt5LnVzIiwibGliLmxhLnVzIiwibGliLm1hLnVzIiwibGliLm1kLnVzIiwibGliLm1lLnVzIiwibGliLm1pLnVzIiwibGliLm1uLnVzIiwibGliLm1vLnVzIiwibGliLm1zLnVzIiwibGliLm10LnVzIiwibGliLm5jLnVzIiwibGliLm5kLnVzIiwi''@;'; put 'put ''bGliLm5lLnVzIiwibGliLm5oLnVzIiwibGliLm5qLnVzIiwibGliLm5tLnVzIiwibGliLm52LnVzIiwibGliLm55LnVzIiwibGliLm9oLnVzIiwibGliLm9rLnVzIiwibGliLm9yLnVzIiwibGliLnBhLnVzIiwibGliLnByLnVzIiwibGliLnJpLnVzIiwibGliLnNjLnVzIiwibGliLnNkLnVz''@;'; put 'put ''IiwibGliLnRuLnVzIiwibGliLnR4LnVzIiwibGliLnV0LnVzIiwibGliLnZpLnVzIiwibGliLnZ0LnVzIiwibGliLnZhLnVzIiwibGliLndhLnVzIiwibGliLndpLnVzIiwibGliLnd5LnVzIiwicHZ0LmsxMi5tYS51cyIsImNodHIuazEyLm1hLnVzIiwicGFyb2NoLmsxMi5tYS51cyIsImFu''@;'; put 'put ''bi1hcmJvci5taS51cyIsImNvZy5taS51cyIsImRzdC5taS51cyIsImVhdG9uLm1pLnVzIiwiZ2VuLm1pLnVzIiwibXVzLm1pLnVzIiwidGVjLm1pLnVzIiwid2FzaHRlbmF3Lm1pLnVzIiwidXkiLCJjb20udXkiLCJlZHUudXkiLCJndWIudXkiLCJtaWwudXkiLCJuZXQudXkiLCJvcmcudXki''@;'; put 'put ''LCJ1eiIsImNvLnV6IiwiY29tLnV6IiwibmV0LnV6Iiwib3JnLnV6IiwidmEiLCJ2YyIsImNvbS52YyIsIm5ldC52YyIsIm9yZy52YyIsImdvdi52YyIsIm1pbC52YyIsImVkdS52YyIsInZlIiwiYXJ0cy52ZSIsImJpYi52ZSIsImNvLnZlIiwiY29tLnZlIiwiZTEyLnZlIiwiZWR1LnZlIiwi''@;'; put 'put ''ZmlybS52ZSIsImdvYi52ZSIsImdvdi52ZSIsImluZm8udmUiLCJpbnQudmUiLCJtaWwudmUiLCJuZXQudmUiLCJub20udmUiLCJvcmcudmUiLCJyYXIudmUiLCJyZWMudmUiLCJzdG9yZS52ZSIsInRlYy52ZSIsIndlYi52ZSIsInZnIiwidmkiLCJjby52aSIsImNvbS52aSIsImsxMi52aSIs''@;'; put 'put ''Im5ldC52aSIsIm9yZy52aSIsInZuIiwiY29tLnZuIiwibmV0LnZuIiwib3JnLnZuIiwiZWR1LnZuIiwiZ292LnZuIiwiaW50LnZuIiwiYWMudm4iLCJiaXoudm4iLCJpbmZvLnZuIiwibmFtZS52biIsInByby52biIsImhlYWx0aC52biIsInZ1IiwiY29tLnZ1IiwiZWR1LnZ1IiwibmV0LnZ1''@;'; put 'put ''Iiwib3JnLnZ1Iiwid2YiLCJ3cyIsImNvbS53cyIsIm5ldC53cyIsIm9yZy53cyIsImdvdi53cyIsImVkdS53cyIsInl0IiwiXHUwNjI3XHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjI3XHUwNjJhIiwiXHUwNTcwXHUwNTYxXHUwNTc1IiwiXHUwOWFjXHUwOWJlXHUwOTgyXHUwOWIyXHUwOWJlIiwi''@;'; put 'put ''XHUwNDMxXHUwNDMzIiwiXHUwNjI3XHUwNjQ0XHUwNjI4XHUwNjJkXHUwNjMxXHUwNjRhXHUwNjQ2IiwiXHUwNDMxXHUwNDM1XHUwNDNiIiwiXHU0ZTJkXHU1NmZkIiwiXHU0ZTJkXHU1NzBiIiwiXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjMyXHUwNjI3XHUwNjI2XHUwNjMxIiwiXHUwNjQ1XHUw''@;'; put 'put ''NjM1XHUwNjMxIiwiXHUwNDM1XHUwNDRlIiwiXHUwM2I1XHUwM2M1IiwiXHUwNjQ1XHUwNjQ4XHUwNjMxXHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI3IiwiXHUxMGQyXHUxMGQ0IiwiXHUwM2I1XHUwM2JiIiwiXHU5OTk5XHU2ZTJmIiwiXHU1MTZjXHU1M2Y4Llx1OTk5OVx1''@;'; put 'put ''NmUyZiIsIlx1NjU1OVx1ODBiMi5cdTk5OTlcdTZlMmYiLCJcdTY1M2ZcdTVlOWMuXHU5OTk5XHU2ZTJmIiwiXHU1MDBiXHU0ZWJhLlx1OTk5OVx1NmUyZiIsIlx1N2RiMlx1N2Q2MS5cdTk5OTlcdTZlMmYiLCJcdTdkNDRcdTdlNTQuXHU5OTk5XHU2ZTJmIiwiXHUwY2FkXHUwY2JlXHUwY2Iw''@;'; put 'put ''XHUwY2E0IiwiXHUwYjJkXHUwYjNlXHUwYjMwXHUwYjI0IiwiXHUwOWFkXHUwOWJlXHUwOWYwXHUwOWE0IiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0XHUwOTJlXHUwOTRkIiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTRiXHUwOTI0IiwiXHUwNjgwXHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUw''@;'; put 'put ''ZDJkXHUwZDNlXHUwZDMwXHUwZDI0XHUwZDAyIiwiXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0IiwiXHUwNjI4XHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUwNjI4XHUwNmJlXHUwNjI3XHUwNjMxXHUwNjJhIiwiXHUwYzJkXHUwYzNlXHUwYzMwXHUwYzI0XHUwYzRkIiwiXHUwYWFkXHUwYWJlXHUw''@;'; put 'put ''YWIwXHUwYWE0IiwiXHUwYTJkXHUwYTNlXHUwYTMwXHUwYTI0IiwiXHUwOWFkXHUwOWJlXHUwOWIwXHUwOWE0IiwiXHUwYjg3XHUwYmE4XHUwYmNkXHUwYmE0XHUwYmJmXHUwYmFmXHUwYmJlIiwiXHUwNjI3XHUwNmNjXHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjI3XHUwNjRhXHUwNjMxXHUw''@;'; put 'put ''NjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjMxXHUwNjI3XHUwNjQyIiwiXHUwNjI3XHUwNjQ0XHUwNjI3XHUwNjMxXHUwNjJmXHUwNjQ2IiwiXHVkNTVjXHVhZDZkIiwiXHUwNDliXHUwNDMwXHUwNDM3IiwiXHUwZWE1XHUwZWIyXHUwZWE3IiwiXHUwZGJkXHUwZDgyXHUwZDlhXHUwZGNmIiwiXHUw''@;'; put 'put ''Yjg3XHUwYmIyXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmM4IiwiXHUwNjI3XHUwNjQ0XHUwNjQ1XHUwNjNhXHUwNjMxXHUwNjI4IiwiXHUwNDNjXHUwNDNhXHUwNDM0IiwiXHUwNDNjXHUwNDNlXHUwNDNkIiwiXHU2ZmIzXHU5NTgwIiwiXHU2ZmIzXHU5NWU4IiwiXHUwNjQ1XHUwNjQ0XHUwNjRh''@;'; put 'put ''XHUwNjMzXHUwNjRhXHUwNjI3IiwiXHUwNjM5XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjdlXHUwNjI3XHUwNmE5XHUwNjMzXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjdlXHUwNjI3XHUwNjQzXHUwNjMzXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjQxXHUwNjQ0XHUwNjMzXHUwNjM3XHUw''@;'; put 'put ''NjRhXHUwNjQ2IiwiXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNmXHUwNDQwLlx1MDQ0MVx1MDQ0MFx1MDQzMSIsIlx1MDQzZVx1MDQ0MFx1MDQzMy5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0M2VcdTA0MzFcdTA0NDAuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDNlXHUwNDM0Llx1MDQ0''@;'; put 'put ''MVx1MDQ0MFx1MDQzMSIsIlx1MDQ0M1x1MDQzZlx1MDQ0MC5cdTA0NDFcdTA0NDBcdTA0MzEiLCJcdTA0MzBcdTA0M2EuXHUwNDQxXHUwNDQwXHUwNDMxIiwiXHUwNDQwXHUwNDQ0IiwiXHUwNjQyXHUwNjM3XHUwNjMxIiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUw''@;'; put 'put ''NjRhXHUwNjI5IiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUwNmNjXHUwNjI5IiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUwNmNjXHUwNmMzIiwiXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjM5XHUwNjQ4XHUwNjJmXHUwNjRhXHUwNjQ3Iiwi''@;'; put 'put ''XHUwNjMzXHUwNjQ4XHUwNjJmXHUwNjI3XHUwNjQ2IiwiXHU2NWIwXHU1MmEwXHU1NzYxIiwiXHUwYjlhXHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmFhXHUwYmNkXHUwYmFhXHUwYmMyXHUwYmIwXHUwYmNkIiwiXHUwNjMzXHUwNjQ4XHUwNjMxXHUwNjRhXHUwNjI5IiwiXHUwNjMzXHUw''@;'; put 'put ''NjQ4XHUwNjMxXHUwNjRhXHUwNjI3IiwiXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTI4XHUwZTM2XHUwZTAxXHUwZTI5XHUwZTMyLlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGUxOFx1MGUzOFx1MGUyM1x1MGUwMVx1MGUzNFx1MGUwOC5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMjNcdTBl''@;'; put 'put ''MzFcdTBlMTBcdTBlMWFcdTBlMzJcdTBlMjUuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwZTE3XHUwZTJiXHUwZTMyXHUwZTIzLlx1MGU0NFx1MGUxN1x1MGUyMiIsIlx1MGU0MFx1MGUxOVx1MGU0N1x1MGUxNS5cdTBlNDRcdTBlMTdcdTBlMjIiLCJcdTBlMmRcdTBlMDdcdTBlMDRcdTBlNGNc''@;'; put 'put ''dTBlMDFcdTBlMjMuXHUwZTQ0XHUwZTE3XHUwZTIyIiwiXHUwNjJhXHUwNjQ4XHUwNjQ2XHUwNjMzIiwiXHU1M2YwXHU3MDYzIiwiXHU1M2YwXHU2ZTdlIiwiXHU4MWZhXHU3MDYzIiwiXHUwNDQzXHUwNDNhXHUwNDQwIiwiXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ1XHUwNjQ2IiwieHh4Iiwi''@;'; put 'put ''eWUiLCJjb20ueWUiLCJlZHUueWUiLCJnb3YueWUiLCJuZXQueWUiLCJtaWwueWUiLCJvcmcueWUiLCJhYy56YSIsImFncmljLnphIiwiYWx0LnphIiwiY28uemEiLCJlZHUuemEiLCJnb3YuemEiLCJncm9uZGFyLnphIiwibGF3LnphIiwibWlsLnphIiwibmV0LnphIiwibmdvLnphIiwibmlj''@;'; put 'put ''LnphIiwibmlzLnphIiwibm9tLnphIiwib3JnLnphIiwic2Nob29sLnphIiwidG0uemEiLCJ3ZWIuemEiLCJ6bSIsImFjLnptIiwiYml6LnptIiwiY28uem0iLCJjb20uem0iLCJlZHUuem0iLCJnb3Yuem0iLCJpbmZvLnptIiwibWlsLnptIiwibmV0LnptIiwib3JnLnptIiwic2NoLnptIiwi''@;'; put 'put ''enciLCJhYy56dyIsImNvLnp3IiwiZ292Lnp3IiwibWlsLnp3Iiwib3JnLnp3IiwiYWFhIiwiYWFycCIsImFiYXJ0aCIsImFiYiIsImFiYm90dCIsImFiYnZpZSIsImFiYyIsImFibGUiLCJhYm9nYWRvIiwiYWJ1ZGhhYmkiLCJhY2FkZW15IiwiYWNjZW50dXJlIiwiYWNjb3VudGFudCIsImFj''@;'; put 'put ''Y291bnRhbnRzIiwiYWNvIiwiYWN0b3IiLCJhZGFjIiwiYWRzIiwiYWR1bHQiLCJhZWciLCJhZXRuYSIsImFmbCIsImFmcmljYSIsImFnYWtoYW4iLCJhZ2VuY3kiLCJhaWciLCJhaXJidXMiLCJhaXJmb3JjZSIsImFpcnRlbCIsImFrZG4iLCJhbGZhcm9tZW8iLCJhbGliYWJhIiwiYWxpcGF5''@;'; put 'put ''IiwiYWxsZmluYW56IiwiYWxsc3RhdGUiLCJhbGx5IiwiYWxzYWNlIiwiYWxzdG9tIiwiYW1hem9uIiwiYW1lcmljYW5leHByZXNzIiwiYW1lcmljYW5mYW1pbHkiLCJhbWV4IiwiYW1mYW0iLCJhbWljYSIsImFtc3RlcmRhbSIsImFuYWx5dGljcyIsImFuZHJvaWQiLCJhbnF1YW4iLCJhbnoi''@;'; put 'put ''LCJhb2wiLCJhcGFydG1lbnRzIiwiYXBwIiwiYXBwbGUiLCJhcXVhcmVsbGUiLCJhcmFiIiwiYXJhbWNvIiwiYXJjaGkiLCJhcm15IiwiYXJ0IiwiYXJ0ZSIsImFzZGEiLCJhc3NvY2lhdGVzIiwiYXRobGV0YSIsImF0dG9ybmV5IiwiYXVjdGlvbiIsImF1ZGkiLCJhdWRpYmxlIiwiYXVkaW8i''@;'; put 'put ''LCJhdXNwb3N0IiwiYXV0aG9yIiwiYXV0byIsImF1dG9zIiwiYXZpYW5jYSIsImF3cyIsImF4YSIsImF6dXJlIiwiYmFieSIsImJhaWR1IiwiYmFuYW1leCIsImJhbmFuYXJlcHVibGljIiwiYmFuZCIsImJhbmsiLCJiYXIiLCJiYXJjZWxvbmEiLCJiYXJjbGF5Y2FyZCIsImJhcmNsYXlzIiwi''@;'; put 'put ''YmFyZWZvb3QiLCJiYXJnYWlucyIsImJhc2ViYWxsIiwiYmFza2V0YmFsbCIsImJhdWhhdXMiLCJiYXllcm4iLCJiYmMiLCJiYnQiLCJiYnZhIiwiYmNnIiwiYmNuIiwiYmVhdHMiLCJiZWF1dHkiLCJiZWVyIiwiYmVudGxleSIsImJlcmxpbiIsImJlc3QiLCJiZXN0YnV5IiwiYmV0IiwiYmhh''@;'; put 'put ''cnRpIiwiYmlibGUiLCJiaWQiLCJiaWtlIiwiYmluZyIsImJpbmdvIiwiYmlvIiwiYmxhY2siLCJibGFja2ZyaWRheSIsImJsb2NrYnVzdGVyIiwiYmxvZyIsImJsb29tYmVyZyIsImJsdWUiLCJibXMiLCJibXciLCJibnBwYXJpYmFzIiwiYm9hdHMiLCJib2VocmluZ2VyIiwiYm9mYSIsImJv''@;'; put 'put ''bSIsImJvbmQiLCJib28iLCJib29rIiwiYm9va2luZyIsImJvc2NoIiwiYm9zdGlrIiwiYm9zdG9uIiwiYm90IiwiYm91dGlxdWUiLCJib3giLCJicmFkZXNjbyIsImJyaWRnZXN0b25lIiwiYnJvYWR3YXkiLCJicm9rZXIiLCJicm90aGVyIiwiYnJ1c3NlbHMiLCJidWdhdHRpIiwiYnVpbGQi''@;'; put 'put ''LCJidWlsZGVycyIsImJ1c2luZXNzIiwiYnV5IiwiYnV6eiIsImJ6aCIsImNhYiIsImNhZmUiLCJjYWwiLCJjYWxsIiwiY2Fsdmlua2xlaW4iLCJjYW0iLCJjYW1lcmEiLCJjYW1wIiwiY2FuY2VycmVzZWFyY2giLCJjYW5vbiIsImNhcGV0b3duIiwiY2FwaXRhbCIsImNhcGl0YWxvbmUiLCJj''@;'; put 'put ''YXIiLCJjYXJhdmFuIiwiY2FyZHMiLCJjYXJlIiwiY2FyZWVyIiwiY2FyZWVycyIsImNhcnMiLCJjYXNhIiwiY2FzZSIsImNhc2giLCJjYXNpbm8iLCJjYXRlcmluZyIsImNhdGhvbGljIiwiY2JhIiwiY2JuIiwiY2JyZSIsImNicyIsImNlbnRlciIsImNlbyIsImNlcm4iLCJjZmEiLCJjZmQi''@;'; put 'put ''LCJjaGFuZWwiLCJjaGFubmVsIiwiY2hhcml0eSIsImNoYXNlIiwiY2hhdCIsImNoZWFwIiwiY2hpbnRhaSIsImNocmlzdG1hcyIsImNocm9tZSIsImNodXJjaCIsImNpcHJpYW5pIiwiY2lyY2xlIiwiY2lzY28iLCJjaXRhZGVsIiwiY2l0aSIsImNpdGljIiwiY2l0eSIsImNpdHllYXRzIiwi''@;'; put 'put ''Y2xhaW1zIiwiY2xlYW5pbmciLCJjbGljayIsImNsaW5pYyIsImNsaW5pcXVlIiwiY2xvdGhpbmciLCJjbG91ZCIsImNsdWIiLCJjbHVibWVkIiwiY29hY2giLCJjb2RlcyIsImNvZmZlZSIsImNvbGxlZ2UiLCJjb2xvZ25lIiwiY29tY2FzdCIsImNvbW1iYW5rIiwiY29tbXVuaXR5IiwiY29t''@;'; put 'put ''cGFueSIsImNvbXBhcmUiLCJjb21wdXRlciIsImNvbXNlYyIsImNvbmRvcyIsImNvbnN0cnVjdGlvbiIsImNvbnN1bHRpbmciLCJjb250YWN0IiwiY29udHJhY3RvcnMiLCJjb29raW5nIiwiY29va2luZ2NoYW5uZWwiLCJjb29sIiwiY29yc2ljYSIsImNvdW50cnkiLCJjb3Vwb24iLCJjb3Vw''@;'; put 'put ''b25zIiwiY291cnNlcyIsImNwYSIsImNyZWRpdCIsImNyZWRpdGNhcmQiLCJjcmVkaXR1bmlvbiIsImNyaWNrZXQiLCJjcm93biIsImNycyIsImNydWlzZSIsImNydWlzZXMiLCJjdWlzaW5lbGxhIiwiY3ltcnUiLCJjeW91IiwiZGFidXIiLCJkYWQiLCJkYW5jZSIsImRhdGEiLCJkYXRlIiwi''@;'; put 'put ''ZGF0aW5nIiwiZGF0c3VuIiwiZGF5IiwiZGNsayIsImRkcyIsImRlYWwiLCJkZWFsZXIiLCJkZWFscyIsImRlZ3JlZSIsImRlbGl2ZXJ5IiwiZGVsbCIsImRlbG9pdHRlIiwiZGVsdGEiLCJkZW1vY3JhdCIsImRlbnRhbCIsImRlbnRpc3QiLCJkZXNpIiwiZGVzaWduIiwiZGV2IiwiZGhsIiwi''@;'; put 'put ''ZGlhbW9uZHMiLCJkaWV0IiwiZGlnaXRhbCIsImRpcmVjdCIsImRpcmVjdG9yeSIsImRpc2NvdW50IiwiZGlzY292ZXIiLCJkaXNoIiwiZGl5IiwiZG5wIiwiZG9jcyIsImRvY3RvciIsImRvZyIsImRvbWFpbnMiLCJkb3QiLCJkb3dubG9hZCIsImRyaXZlIiwiZHR2IiwiZHViYWkiLCJkdW5s''@;'; put 'put ''b3AiLCJkdXBvbnQiLCJkdXJiYW4iLCJkdmFnIiwiZHZyIiwiZWFydGgiLCJlYXQiLCJlY28iLCJlZGVrYSIsImVkdWNhdGlvbiIsImVtYWlsIiwiZW1lcmNrIiwiZW5lcmd5IiwiZW5naW5lZXIiLCJlbmdpbmVlcmluZyIsImVudGVycHJpc2VzIiwiZXBzb24iLCJlcXVpcG1lbnQiLCJlcmlj''@;'; put 'put ''c3NvbiIsImVybmkiLCJlc3EiLCJlc3RhdGUiLCJldGlzYWxhdCIsImV1cm92aXNpb24iLCJldXMiLCJldmVudHMiLCJleGNoYW5nZSIsImV4cGVydCIsImV4cG9zZWQiLCJleHByZXNzIiwiZXh0cmFzcGFjZSIsImZhZ2UiLCJmYWlsIiwiZmFpcndpbmRzIiwiZmFpdGgiLCJmYW1pbHkiLCJm''@;'; put 'put ''YW4iLCJmYW5zIiwiZmFybSIsImZhcm1lcnMiLCJmYXNoaW9uIiwiZmFzdCIsImZlZGV4IiwiZmVlZGJhY2siLCJmZXJyYXJpIiwiZmVycmVybyIsImZpYXQiLCJmaWRlbGl0eSIsImZpZG8iLCJmaWxtIiwiZmluYWwiLCJmaW5hbmNlIiwiZmluYW5jaWFsIiwiZmlyZSIsImZpcmVzdG9uZSIs''@;'; put 'put ''ImZpcm1kYWxlIiwiZmlzaCIsImZpc2hpbmciLCJmaXQiLCJmaXRuZXNzIiwiZmxpY2tyIiwiZmxpZ2h0cyIsImZsaXIiLCJmbG9yaXN0IiwiZmxvd2VycyIsImZseSIsImZvbyIsImZvb2QiLCJmb29kbmV0d29yayIsImZvb3RiYWxsIiwiZm9yZCIsImZvcmV4IiwiZm9yc2FsZSIsImZvcnVt''@;'; put 'put ''IiwiZm91bmRhdGlvbiIsImZveCIsImZyZWUiLCJmcmVzZW5pdXMiLCJmcmwiLCJmcm9nYW5zIiwiZnJvbnRkb29yIiwiZnJvbnRpZXIiLCJmdHIiLCJmdWppdHN1IiwiZnVuIiwiZnVuZCIsImZ1cm5pdHVyZSIsImZ1dGJvbCIsImZ5aSIsImdhbCIsImdhbGxlcnkiLCJnYWxsbyIsImdhbGx1''@;'; put 'put ''cCIsImdhbWUiLCJnYW1lcyIsImdhcCIsImdhcmRlbiIsImdheSIsImdiaXoiLCJnZG4iLCJnZWEiLCJnZW50IiwiZ2VudGluZyIsImdlb3JnZSIsImdnZWUiLCJnaWZ0IiwiZ2lmdHMiLCJnaXZlcyIsImdpdmluZyIsImdsYXNzIiwiZ2xlIiwiZ2xvYmFsIiwiZ2xvYm8iLCJnbWFpbCIsImdt''@;'; put 'put ''YmgiLCJnbW8iLCJnbXgiLCJnb2RhZGR5IiwiZ29sZCIsImdvbGRwb2ludCIsImdvbGYiLCJnb28iLCJnb29keWVhciIsImdvb2ciLCJnb29nbGUiLCJnb3AiLCJnb3QiLCJncmFpbmdlciIsImdyYXBoaWNzIiwiZ3JhdGlzIiwiZ3JlZW4iLCJncmlwZSIsImdyb2NlcnkiLCJncm91cCIsImd1''@;'; put 'put ''YXJkaWFuIiwiZ3VjY2kiLCJndWdlIiwiZ3VpZGUiLCJndWl0YXJzIiwiZ3VydSIsImhhaXIiLCJoYW1idXJnIiwiaGFuZ291dCIsImhhdXMiLCJoYm8iLCJoZGZjIiwiaGRmY2JhbmsiLCJoZWFsdGgiLCJoZWFsdGhjYXJlIiwiaGVscCIsImhlbHNpbmtpIiwiaGVyZSIsImhlcm1lcyIsImhn''@;'; put 'put ''dHYiLCJoaXBob3AiLCJoaXNhbWl0c3UiLCJoaXRhY2hpIiwiaGl2IiwiaGt0IiwiaG9ja2V5IiwiaG9sZGluZ3MiLCJob2xpZGF5IiwiaG9tZWRlcG90IiwiaG9tZWdvb2RzIiwiaG9tZXMiLCJob21lc2Vuc2UiLCJob25kYSIsImhvcnNlIiwiaG9zcGl0YWwiLCJob3N0IiwiaG9zdGluZyIs''@;'; put 'put ''ImhvdCIsImhvdGVsZXMiLCJob3RlbHMiLCJob3RtYWlsIiwiaG91c2UiLCJob3ciLCJoc2JjIiwiaHVnaGVzIiwiaHlhdHQiLCJoeXVuZGFpIiwiaWJtIiwiaWNiYyIsImljZSIsImljdSIsImllZWUiLCJpZm0iLCJpa2FubyIsImltYW1hdCIsImltZGIiLCJpbW1vIiwiaW1tb2JpbGllbiIs''@;'; put 'put ''ImluYyIsImluZHVzdHJpZXMiLCJpbmZpbml0aSIsImluZyIsImluayIsImluc3RpdHV0ZSIsImluc3VyYW5jZSIsImluc3VyZSIsImludGVybmF0aW9uYWwiLCJpbnR1aXQiLCJpbnZlc3RtZW50cyIsImlwaXJhbmdhIiwiaXJpc2giLCJpc21haWxpIiwiaXN0IiwiaXN0YW5idWwiLCJpdGF1''@;'; put 'put ''IiwiaXR2IiwiamFndWFyIiwiamF2YSIsImpjYiIsImplZXAiLCJqZXR6dCIsImpld2VscnkiLCJqaW8iLCJqbGwiLCJqbXAiLCJqbmoiLCJqb2J1cmciLCJqb3QiLCJqb3kiLCJqcG1vcmdhbiIsImpwcnMiLCJqdWVnb3MiLCJqdW5pcGVyIiwia2F1ZmVuIiwia2RkaSIsImtlcnJ5aG90ZWxz''@;'; put 'put ''Iiwia2Vycnlsb2dpc3RpY3MiLCJrZXJyeXByb3BlcnRpZXMiLCJrZmgiLCJraWEiLCJraWRzIiwia2ltIiwia2luZGVyIiwia2luZGxlIiwia2l0Y2hlbiIsImtpd2kiLCJrb2VsbiIsImtvbWF0c3UiLCJrb3NoZXIiLCJrcG1nIiwia3BuIiwia3JkIiwia3JlZCIsImt1b2tncm91cCIsImt5''@;'; put 'put ''b3RvIiwibGFjYWl4YSIsImxhbWJvcmdoaW5pIiwibGFtZXIiLCJsYW5jYXN0ZXIiLCJsYW5jaWEiLCJsYW5kIiwibGFuZHJvdmVyIiwibGFueGVzcyIsImxhc2FsbGUiLCJsYXQiLCJsYXRpbm8iLCJsYXRyb2JlIiwibGF3IiwibGF3eWVyIiwibGRzIiwibGVhc2UiLCJsZWNsZXJjIiwibGVm''@;'; put 'put ''cmFrIiwibGVnYWwiLCJsZWdvIiwibGV4dXMiLCJsZ2J0IiwibGlkbCIsImxpZmUiLCJsaWZlaW5zdXJhbmNlIiwibGlmZXN0eWxlIiwibGlnaHRpbmciLCJsaWtlIiwibGlsbHkiLCJsaW1pdGVkIiwibGltbyIsImxpbmNvbG4iLCJsaW5kZSIsImxpbmsiLCJsaXBzeSIsImxpdmUiLCJsaXZp''@;'; put 'put ''bmciLCJsbGMiLCJsbHAiLCJsb2FuIiwibG9hbnMiLCJsb2NrZXIiLCJsb2N1cyIsImxvZnQiLCJsb2wiLCJsb25kb24iLCJsb3R0ZSIsImxvdHRvIiwibG92ZSIsImxwbCIsImxwbGZpbmFuY2lhbCIsImx0ZCIsImx0ZGEiLCJsdW5kYmVjayIsImx1eGUiLCJsdXh1cnkiLCJtYWN5cyIsIm1h''@;'; put 'put ''ZHJpZCIsIm1haWYiLCJtYWlzb24iLCJtYWtldXAiLCJtYW4iLCJtYW5hZ2VtZW50IiwibWFuZ28iLCJtYXAiLCJtYXJrZXQiLCJtYXJrZXRpbmciLCJtYXJrZXRzIiwibWFycmlvdHQiLCJtYXJzaGFsbHMiLCJtYXNlcmF0aSIsIm1hdHRlbCIsIm1iYSIsIm1ja2luc2V5IiwibWVkIiwibWVk''@;'; put 'put ''aWEiLCJtZWV0IiwibWVsYm91cm5lIiwibWVtZSIsIm1lbW9yaWFsIiwibWVuIiwibWVudSIsIm1lcmNrbXNkIiwibWlhbWkiLCJtaWNyb3NvZnQiLCJtaW5pIiwibWludCIsIm1pdCIsIm1pdHN1YmlzaGkiLCJtbGIiLCJtbHMiLCJtbWEiLCJtb2JpbGUiLCJtb2RhIiwibW9lIiwibW9pIiwi''@;'; put 'put ''bW9tIiwibW9uYXNoIiwibW9uZXkiLCJtb25zdGVyIiwibW9ybW9uIiwibW9ydGdhZ2UiLCJtb3Njb3ciLCJtb3RvIiwibW90b3JjeWNsZXMiLCJtb3YiLCJtb3ZpZSIsIm1zZCIsIm10biIsIm10ciIsIm11c2ljIiwibXV0dWFsIiwibmFiIiwibmFnb3lhIiwibmF0dXJhIiwibmF2eSIsIm5i''@;'; put 'put ''YSIsIm5lYyIsIm5ldGJhbmsiLCJuZXRmbGl4IiwibmV0d29yayIsIm5ldXN0YXIiLCJuZXciLCJuZXdzIiwibmV4dCIsIm5leHRkaXJlY3QiLCJuZXh1cyIsIm5mbCIsIm5nbyIsIm5oayIsIm5pY28iLCJuaWtlIiwibmlrb24iLCJuaW5qYSIsIm5pc3NhbiIsIm5pc3NheSIsIm5va2lhIiwi''@;'; put 'put ''bm9ydGh3ZXN0ZXJubXV0dWFsIiwibm9ydG9uIiwibm93Iiwibm93cnV6Iiwibm93dHYiLCJucmEiLCJucnciLCJudHQiLCJueWMiLCJvYmkiLCJvYnNlcnZlciIsIm9mZmljZSIsIm9raW5hd2EiLCJvbGF5YW4iLCJvbGF5YW5ncm91cCIsIm9sZG5hdnkiLCJvbGxvIiwib21lZ2EiLCJvbmUi''@;'; put 'put ''LCJvbmciLCJvbmwiLCJvbmxpbmUiLCJvb28iLCJvcGVuIiwib3JhY2xlIiwib3JhbmdlIiwib3JnYW5pYyIsIm9yaWdpbnMiLCJvc2FrYSIsIm90c3VrYSIsIm90dCIsIm92aCIsInBhZ2UiLCJwYW5hc29uaWMiLCJwYXJpcyIsInBhcnMiLCJwYXJ0bmVycyIsInBhcnRzIiwicGFydHkiLCJw''@;'; put 'put ''YXNzYWdlbnMiLCJwYXkiLCJwY2N3IiwicGV0IiwicGZpemVyIiwicGhhcm1hY3kiLCJwaGQiLCJwaGlsaXBzIiwicGhvbmUiLCJwaG90byIsInBob3RvZ3JhcGh5IiwicGhvdG9zIiwicGh5c2lvIiwicGljcyIsInBpY3RldCIsInBpY3R1cmVzIiwicGlkIiwicGluIiwicGluZyIsInBpbmsi''@;'; put 'put ''LCJwaW9uZWVyIiwicGl6emEiLCJwbGFjZSIsInBsYXkiLCJwbGF5c3RhdGlvbiIsInBsdW1iaW5nIiwicGx1cyIsInBuYyIsInBvaGwiLCJwb2tlciIsInBvbGl0aWUiLCJwb3JuIiwicHJhbWVyaWNhIiwicHJheGkiLCJwcmVzcyIsInByaW1lIiwicHJvZCIsInByb2R1Y3Rpb25zIiwicHJv''@;'; put 'put ''ZiIsInByb2dyZXNzaXZlIiwicHJvbW8iLCJwcm9wZXJ0aWVzIiwicHJvcGVydHkiLCJwcm90ZWN0aW9uIiwicHJ1IiwicHJ1ZGVudGlhbCIsInB1YiIsInB3YyIsInFwb24iLCJxdWViZWMiLCJxdWVzdCIsInJhY2luZyIsInJhZGlvIiwicmVhZCIsInJlYWxlc3RhdGUiLCJyZWFsdG9yIiwi''@;'; put 'put ''cmVhbHR5IiwicmVjaXBlcyIsInJlZCIsInJlZHN0b25lIiwicmVkdW1icmVsbGEiLCJyZWhhYiIsInJlaXNlIiwicmVpc2VuIiwicmVpdCIsInJlbGlhbmNlIiwicmVuIiwicmVudCIsInJlbnRhbHMiLCJyZXBhaXIiLCJyZXBvcnQiLCJyZXB1YmxpY2FuIiwicmVzdCIsInJlc3RhdXJhbnQi''@;'; put 'put ''LCJyZXZpZXciLCJyZXZpZXdzIiwicmV4cm90aCIsInJpY2giLCJyaWNoYXJkbGkiLCJyaWNvaCIsInJpbCIsInJpbyIsInJpcCIsInJvY2hlciIsInJvY2tzIiwicm9kZW8iLCJyb2dlcnMiLCJyb29tIiwicnN2cCIsInJ1Z2J5IiwicnVociIsInJ1biIsInJ3ZSIsInJ5dWt5dSIsInNhYXJs''@;'; put 'put ''YW5kIiwic2FmZSIsInNhZmV0eSIsInNha3VyYSIsInNhbGUiLCJzYWxvbiIsInNhbXNjbHViIiwic2Ftc3VuZyIsInNhbmR2aWsiLCJzYW5kdmlrY29yb21hbnQiLCJzYW5vZmkiLCJzYXAiLCJzYXJsIiwic2FzIiwic2F2ZSIsInNheG8iLCJzYmkiLCJzYnMiLCJzY2EiLCJzY2IiLCJzY2hh''@;'; put 'put ''ZWZmbGVyIiwic2NobWlkdCIsInNjaG9sYXJzaGlwcyIsInNjaG9vbCIsInNjaHVsZSIsInNjaHdhcnoiLCJzY2llbmNlIiwic2NvdCIsInNlYXJjaCIsInNlYXQiLCJzZWN1cmUiLCJzZWN1cml0eSIsInNlZWsiLCJzZWxlY3QiLCJzZW5lciIsInNlcnZpY2VzIiwic2VzIiwic2V2ZW4iLCJz''@;'; put 'put ''ZXciLCJzZXgiLCJzZXh5Iiwic2ZyIiwic2hhbmdyaWxhIiwic2hhcnAiLCJzaGF3Iiwic2hlbGwiLCJzaGlhIiwic2hpa3NoYSIsInNob2VzIiwic2hvcCIsInNob3BwaW5nIiwic2hvdWppIiwic2hvdyIsInNob3d0aW1lIiwic2lsayIsInNpbmEiLCJzaW5nbGVzIiwic2l0ZSIsInNraSIs''@;'; put 'put ''InNraW4iLCJza3kiLCJza3lwZSIsInNsaW5nIiwic21hcnQiLCJzbWlsZSIsInNuY2YiLCJzb2NjZXIiLCJzb2NpYWwiLCJzb2Z0YmFuayIsInNvZnR3YXJlIiwic29odSIsInNvbGFyIiwic29sdXRpb25zIiwic29uZyIsInNvbnkiLCJzb3kiLCJzcGEiLCJzcGFjZSIsInNwb3J0Iiwic3Bv''@;'; put 'put ''dCIsInNybCIsInN0YWRhIiwic3RhcGxlcyIsInN0YXIiLCJzdGF0ZWJhbmsiLCJzdGF0ZWZhcm0iLCJzdGMiLCJzdGNncm91cCIsInN0b2NraG9sbSIsInN0b3JhZ2UiLCJzdG9yZSIsInN0cmVhbSIsInN0dWRpbyIsInN0dWR5Iiwic3R5bGUiLCJzdWNrcyIsInN1cHBsaWVzIiwic3VwcGx5''@;'; put 'put ''Iiwic3VwcG9ydCIsInN1cmYiLCJzdXJnZXJ5Iiwic3V6dWtpIiwic3dhdGNoIiwic3dpc3MiLCJzeWRuZXkiLCJzeXN0ZW1zIiwidGFiIiwidGFpcGVpIiwidGFsayIsInRhb2JhbyIsInRhcmdldCIsInRhdGFtb3RvcnMiLCJ0YXRhciIsInRhdHRvbyIsInRheCIsInRheGkiLCJ0Y2kiLCJ0''@;'; put 'put ''ZGsiLCJ0ZWFtIiwidGVjaCIsInRlY2hub2xvZ3kiLCJ0ZW1hc2VrIiwidGVubmlzIiwidGV2YSIsInRoZCIsInRoZWF0ZXIiLCJ0aGVhdHJlIiwidGlhYSIsInRpY2tldHMiLCJ0aWVuZGEiLCJ0aWZmYW55IiwidGlwcyIsInRpcmVzIiwidGlyb2wiLCJ0am1heHgiLCJ0angiLCJ0a21heHgi''@;'; put 'put ''LCJ0bWFsbCIsInRvZGF5IiwidG9reW8iLCJ0b29scyIsInRvcCIsInRvcmF5IiwidG9zaGliYSIsInRvdGFsIiwidG91cnMiLCJ0b3duIiwidG95b3RhIiwidG95cyIsInRyYWRlIiwidHJhZGluZyIsInRyYWluaW5nIiwidHJhdmVsIiwidHJhdmVsY2hhbm5lbCIsInRyYXZlbGVycyIsInRy''@;'; put 'put ''YXZlbGVyc2luc3VyYW5jZSIsInRydXN0IiwidHJ2IiwidHViZSIsInR1aSIsInR1bmVzIiwidHVzaHUiLCJ0dnMiLCJ1YmFuayIsInVicyIsInVuaWNvbSIsInVuaXZlcnNpdHkiLCJ1bm8iLCJ1b2wiLCJ1cHMiLCJ2YWNhdGlvbnMiLCJ2YW5hIiwidmFuZ3VhcmQiLCJ2ZWdhcyIsInZlbnR1''@;'; put 'put ''cmVzIiwidmVyaXNpZ24iLCJ2ZXJzaWNoZXJ1bmciLCJ2ZXQiLCJ2aWFqZXMiLCJ2aWRlbyIsInZpZyIsInZpa2luZyIsInZpbGxhcyIsInZpbiIsInZpcCIsInZpcmdpbiIsInZpc2EiLCJ2aXNpb24iLCJ2aXZhIiwidml2byIsInZsYWFuZGVyZW4iLCJ2b2RrYSIsInZvbGtzd2FnZW4iLCJ2''@;'; put 'put ''b2x2byIsInZvdGUiLCJ2b3RpbmciLCJ2b3RvIiwidm95YWdlIiwidnVlbG9zIiwid2FsZXMiLCJ3YWxtYXJ0Iiwid2FsdGVyIiwid2FuZyIsIndhbmdnb3UiLCJ3YXRjaCIsIndhdGNoZXMiLCJ3ZWF0aGVyIiwid2VhdGhlcmNoYW5uZWwiLCJ3ZWJjYW0iLCJ3ZWJlciIsIndlYnNpdGUiLCJ3''@;'; put 'put ''ZWRkaW5nIiwid2VpYm8iLCJ3ZWlyIiwid2hvc3dobyIsIndpZW4iLCJ3aWtpIiwid2lsbGlhbWhpbGwiLCJ3aW4iLCJ3aW5kb3dzIiwid2luZSIsIndpbm5lcnMiLCJ3bWUiLCJ3b2x0ZXJza2x1d2VyIiwid29vZHNpZGUiLCJ3b3JrIiwid29ya3MiLCJ3b3JsZCIsIndvdyIsInd0YyIsInd0''@;'; put 'put ''ZiIsInhib3giLCJ4ZXJveCIsInhmaW5pdHkiLCJ4aWh1YW4iLCJ4aW4iLCJcdTA5MTVcdTA5NDlcdTA5MmUiLCJcdTMwYmJcdTMwZmNcdTMwZWIiLCJcdTRmNWJcdTVjNzEiLCJcdTYxNDhcdTU1ODQiLCJcdTk2YzZcdTU2ZTIiLCJcdTU3MjhcdTdlYmYiLCJcdTcwYjlcdTc3MGIiLCJcdTBl''@;'; put 'put ''MDRcdTBlMmRcdTBlMjEiLCJcdTUxNmJcdTUzNjYiLCJcdTA2NDVcdTA2NDhcdTA2NDJcdTA2MzkiLCJcdTUxNmNcdTc2Y2EiLCJcdTUxNmNcdTUzZjgiLCJcdTk5OTlcdTY4M2NcdTkxY2NcdTYyYzkiLCJcdTdmNTFcdTdhZDkiLCJcdTc5ZmJcdTUyYTgiLCJcdTYyMTFcdTcyMzFcdTRmNjAi''@;'; put 'put ''LCJcdTA0M2NcdTA0M2VcdTA0NDFcdTA0M2FcdTA0MzJcdTA0MzAiLCJcdTA0M2FcdTA0MzBcdTA0NDJcdTA0M2VcdTA0M2JcdTA0MzhcdTA0M2EiLCJcdTA0M2VcdTA0M2RcdTA0M2JcdTA0MzBcdTA0MzlcdTA0M2QiLCJcdTA0NDFcdTA0MzBcdTA0MzlcdTA0NDIiLCJcdTgwNTRcdTkwMWEi''@;'; put 'put ''LCJcdTA1ZTdcdTA1ZDVcdTA1ZGQiLCJcdTY1ZjZcdTVjMWEiLCJcdTVmYWVcdTUzNWEiLCJcdTZkZTFcdTlhNmNcdTk1MjEiLCJcdTMwZDVcdTMwYTFcdTMwYzNcdTMwYjdcdTMwZTdcdTMwZjMiLCJcdTA0M2VcdTA0NDBcdTA0MzMiLCJcdTA5MjhcdTA5NDdcdTA5MWYiLCJcdTMwYjlcdTMw''@;'; put 'put ''YzhcdTMwYTIiLCJcdTMwYTJcdTMwZGVcdTMwYmVcdTMwZjMiLCJcdWMwYmNcdWMxMzEiLCJcdTU1NDZcdTY4MDciLCJcdTU1NDZcdTVlOTciLCJcdTU1NDZcdTU3Y2UiLCJcdTA0MzRcdTA0MzVcdTA0NDJcdTA0MzgiLCJcdTMwZGRcdTMwYTRcdTMwZjNcdTMwYzgiLCJcdTY1YjBcdTk1ZmIi''@;'; put 'put ''LCJcdTViYjZcdTk2ZmIiLCJcdTA2NDNcdTA2NDhcdTA2NDUiLCJcdTRlMmRcdTY1ODdcdTdmNTEiLCJcdTRlMmRcdTRmZTEiLCJcdTVhMzFcdTRlNTAiLCJcdThjMzdcdTZiNGMiLCJcdTk2ZmJcdThhMGFcdTc2YzhcdTc5ZDEiLCJcdThkMmRcdTcyNjkiLCJcdTMwYWZcdTMwZTlcdTMwYTZc''@;'; put 'put ''dTMwYzkiLCJcdTkwMWFcdThjYTkiLCJcdTdmNTFcdTVlOTciLCJcdTA5MzhcdTA5MDJcdTA5MTdcdTA5MjBcdTA5MjgiLCJcdTk5MTBcdTUzODUiLCJcdTdmNTFcdTdlZGMiLCJcdTA0M2FcdTA0M2VcdTA0M2MiLCJcdTRlOWFcdTlhNmNcdTkwMGEiLCJcdThiZmFcdTU3ZmFcdTRlOWEiLCJc''@;'; put 'put ''dTk4ZGZcdTU0YzEiLCJcdTk4ZGVcdTUyMjlcdTZkNjYiLCJcdTYyNGJcdTY3M2EiLCJcdTA2MjdcdTA2MzFcdTA2MjdcdTA2NDVcdTA2NDNcdTA2NDgiLCJcdTA2MjdcdTA2NDRcdTA2MzlcdTA2NDRcdTA2NGFcdTA2MjdcdTA2NDYiLCJcdTA2MjdcdTA2MmFcdTA2MzVcdTA2MjdcdTA2NDRc''@;'; put 'put ''dTA2MjdcdTA2MmEiLCJcdTA2MjhcdTA2MjdcdTA2MzJcdTA2MjdcdTA2MzEiLCJcdTA2MjdcdTA2MjhcdTA2NDhcdTA2MzhcdTA2MjhcdTA2NGEiLCJcdTA2NDNcdTA2MjdcdTA2MmJcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDMiLCJcdTA2NDdcdTA2NDVcdTA2MzFcdTA2MjdcdTA2NDciLCJc''@;'; put 'put ''dWIyZjdcdWNlZjQiLCJcdTY1M2ZcdTVlOWMiLCJcdTA2MzRcdTA2MjhcdTA2NDNcdTA2MjkiLCJcdTA2MjhcdTA2NGFcdTA2MmFcdTA2NDMiLCJcdTA2MzlcdTA2MzFcdTA2MjgiLCJcdTY3M2FcdTY3ODQiLCJcdTdlYzRcdTdlYzdcdTY3M2FcdTY3ODQiLCJcdTUwNjVcdTVlYjciLCJcdTYy''@;'; put 'put ''ZGJcdTgwNTgiLCJcdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTU5MjdcdTYyZmYiLCJcdTMwN2ZcdTMwOTNcdTMwNmEiLCJcdTMwYjBcdTMwZmNcdTMwYjBcdTMwZWIiLCJcdTRlMTZcdTc1NGMiLCJcdTY2ZjhcdTdjNGQiLCJcdTdmNTFcdTU3NDAiLCJcdWIyZjdcdWIxMzciLCJcdTMwYjNcdTMw''@;'; put 'put ''ZTAiLCJcdTU5MjlcdTRlM2JcdTY1NTkiLCJcdTZlMzhcdTYyMGYiLCJ2ZXJtXHhmNmdlbnNiZXJhdGVyIiwidmVybVx4ZjZnZW5zYmVyYXR1bmciLCJcdTRmMDFcdTRlMWEiLCJcdTRmZTFcdTYwNmYiLCJcdTU2MDlcdTkxY2NcdTU5MjdcdTkxNTJcdTVlOTciLCJcdTU2MDlcdTkxY2MiLCJc''@;'; put 'put ''dTVlN2ZcdTRlMWMiLCJcdTY1M2ZcdTUyYTEiLCJ4eXoiLCJ5YWNodHMiLCJ5YWhvbyIsInlhbWF4dW4iLCJ5YW5kZXgiLCJ5b2RvYmFzaGkiLCJ5b2dhIiwieW9rb2hhbWEiLCJ5b3UiLCJ5b3V0dWJlIiwieXVuIiwiemFwcG9zIiwiemFyYSIsInplcm8iLCJ6aXAiLCJ6b25lIiwienVlcmlj''@;'; put 'put ''aCIsImNjLnVhIiwiaW5mLnVhIiwibHRkLnVhIiwiNjExLnRvIiwiZ3JhcGhveC51cyIsIiouZGV2Y2RuYWNjZXNzby5jb20iLCJhZG9iZWFlbWNsb3VkLmNvbSIsIiouZGV2LmFkb2JlYWVtY2xvdWQuY29tIiwiaGx4LmxpdmUiLCJhZG9iZWFlbWNsb3VkLm5ldCIsImhseC5wYWdlIiwiaGx4''@;'; put 'put ''My5wYWdlIiwiYmVlcC5wbCIsImFpcmtpdGFwcHMuY29tIiwiYWlya2l0YXBwcy1hdS5jb20iLCJhaXJraXRhcHBzLmV1IiwiYWl2ZW5jbG91ZC5jb20iLCJiYXJzeS5jYSIsIiouY29tcHV0ZS5lc3RhdGUiLCIqLmFsY2VzLm5ldHdvcmsiLCJrYXNzZXJ2ZXIuY29tIiwiYWx0ZXJ2aXN0YS5v''@;'; put 'put ''cmciLCJhbHdheXNkYXRhLm5ldCIsImNsb3VkZnJvbnQubmV0IiwiKi5jb21wdXRlLmFtYXpvbmF3cy5jb20iLCIqLmNvbXB1dGUtMS5hbWF6b25hd3MuY29tIiwiKi5jb21wdXRlLmFtYXpvbmF3cy5jb20uY24iLCJ1cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsImNuLW5vcnRoLTEuZWIuYW1h''@;'; put 'put ''em9uYXdzLmNvbS5jbiIsImNuLW5vcnRod2VzdC0xLmViLmFtYXpvbmF3cy5jb20uY24iLCJlbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLW5vcnRoZWFzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiYXAtbm9ydGhlYXN0LTIuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1ub3J0aGVhc3Qt''@;'; put 'put ''My5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLXNvdXRoLTEuZWxhc3RpY2JlYW5zdGFsay5jb20iLCJhcC1zb3V0aGVhc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsImFwLXNvdXRoZWFzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiY2EtY2VudHJhbC0xLmVsYXN0aWNiZWFuc3RhbGsu''@;'; put 'put ''Y29tIiwiZXUtY2VudHJhbC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiZXUtd2VzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiZXUtd2VzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwiZXUtd2VzdC0zLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwic2EtZWFzdC0xLmVsYXN0aWNiZWFuc3Rh''@;'; put 'put ''bGsuY29tIiwidXMtZWFzdC0xLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtZWFzdC0yLmVsYXN0aWNiZWFuc3RhbGsuY29tIiwidXMtZ292LXdlc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInVzLXdlc3QtMS5lbGFzdGljYmVhbnN0YWxrLmNvbSIsInVzLXdlc3QtMi5lbGFzdGljYmVh''@;'; put 'put ''bnN0YWxrLmNvbSIsIiouZWxiLmFtYXpvbmF3cy5jb20iLCIqLmVsYi5hbWF6b25hd3MuY29tLmNuIiwiYXdzZ2xvYmFsYWNjZWxlcmF0b3IuY29tIiwiczMuYW1hem9uYXdzLmNvbSIsInMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1hcC1ub3J0aGVhc3QtMi5hbWF6b25h''@;'; put 'put ''d3MuY29tIiwiczMtYXAtc291dGgtMS5hbWF6b25hd3MuY29tIiwiczMtYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLWFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy1jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLWV1LWNlbnRyYWwtMS5hbWF6b25hd3Mu''@;'; put 'put ''Y29tIiwiczMtZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLWV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMtZXh0ZXJuYWwtMS5hbWF6b25hd3MuY29tIiwiczMtZmlwcy11cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy1z''@;'; put 'put ''YS1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtdXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmFwLW5vcnRoZWFzdC0yLmFt''@;'; put 'put ''YXpvbmF3cy5jb20iLCJzMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy5jbi1ub3J0aC0xLmFtYXpvbmF3cy5jb20uY24iLCJzMy5jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMuZXUtd2VzdC0yLmFtYXpvbmF3cy5j''@;'; put 'put ''b20iLCJzMy5ldS13ZXN0LTMuYW1hem9uYXdzLmNvbSIsInMzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5h''@;'; put 'put ''cC1zb3V0aC0xLmFtYXpvbmF3cy5jb20iLCJzMy5kdWFsc3RhY2suYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLmR1YWxzdGFjay5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0''@;'; put 'put ''YWNrLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmV1LXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnNh''@;'; put 'put ''LWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMuZHVhbHN0YWNrLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS11cy1lYXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtdXMtd2VzdC0xLmFtYXpv''@;'; put 'put ''bmF3cy5jb20iLCJzMy13ZWJzaXRlLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS1hcC1ub3J0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS1hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS1hcC1zb3V0aGVhc3QtMi5hbWF6b25h''@;'; put 'put ''d3MuY29tIiwiczMtd2Vic2l0ZS1ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUtc2EtZWFzdC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLW5vcnRoZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbSIsInMz''@;'; put 'put ''LXdlYnNpdGUuY2EtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwiczMtd2Vic2l0ZS5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbSIsInMzLXdlYnNpdGUuZXUtd2VzdC0zLmFtYXpvbmF3cy5jb20iLCJzMy13ZWJzaXRlLnVz''@;'; put 'put ''LWVhc3QtMi5hbWF6b25hd3MuY29tIiwidDNsM3AwcnQubmV0IiwidGVsZS5hbXVuZS5vcmciLCJhcGlnZWUuaW8iLCJzaWlpdGVzLmNvbSIsImFwcHNwYWNlaG9zdGVkLmNvbSIsImFwcHNwYWNldXNlcmNvbnRlbnQuY29tIiwiYXBwdWRvLm5ldCIsIm9uLWFwdGlibGUuY29tIiwidXNlci5h''@;'; put 'put ''c2VpbmV0Lm5lLmpwIiwiZ3YudmMiLCJkLmd2LnZjIiwidXNlci5wYXJ0eS5ldXMiLCJwaW1pZW50YS5vcmciLCJwb2l2cm9uLm9yZyIsInBvdGFnZXIub3JnIiwic3dlZXRwZXBwZXIub3JnIiwibXlhc3VzdG9yLmNvbSIsImNkbi5wcm9kLmF0bGFzc2lhbi1kZXYubmV0IiwidHJhbnNsYXRl''@;'; put 'put ''ZC5wYWdlIiwibXlmcml0ei5uZXQiLCJvbmF2c3RhY2submV0IiwiKi5hd2Rldi5jYSIsIiouYWR2aXNvci53cyIsImVjb21tZXJjZS1zaG9wLnBsIiwiYi1kYXRhLmlvIiwiYmFja3BsYW5lYXBwLmlvIiwiYmFsZW5hLWRldmljZXMuY29tIiwicnMuYmEiLCIqLmJhbnphaS5jbG91ZCIsImFw''@;'; put 'put ''cC5iYW56YWljbG91ZC5pbyIsIiouYmFja3lhcmRzLmJhbnphaWNsb3VkLmlvIiwiYmFzZS5lYyIsIm9mZmljaWFsLmVjIiwiYnV5c2hvcC5qcCIsImZhc2hpb25zdG9yZS5qcCIsImhhbmRjcmFmdGVkLmpwIiwia2F3YWlpc2hvcC5qcCIsInN1cGVyc2FsZS5qcCIsInRoZXNob3AuanAiLCJz''@;'; put 'put ''aG9wc2VsZWN0Lm5ldCIsImJhc2Uuc2hvcCIsIiouYmVnZXQuYXBwIiwiYmV0YWluYWJveC5jb20iLCJibnIubGEiLCJiaXRidWNrZXQuaW8iLCJibGFja2JhdWRjZG4ubmV0Iiwib2YuamUiLCJibHVlYml0ZS5pbyIsImJvb21sYS5uZXQiLCJib3V0aXIuY29tIiwiYm94ZnVzZS5pbyIsInNx''@;'; put 'put ''dWFyZTcuY2giLCJicGxhY2VkLmNvbSIsImJwbGFjZWQuZGUiLCJzcXVhcmU3LmRlIiwiYnBsYWNlZC5uZXQiLCJzcXVhcmU3Lm5ldCIsInNob3AuYnJlbmRseS5ycyIsImJyb3dzZXJzYWZldHltYXJrLmlvIiwidWswLmJpZ3YuaW8iLCJkaC5ieXRlbWFyay5jby51ayIsInZtLmJ5dGVtYXJr''@;'; put 'put ''LmNvLnVrIiwiY2FmanMuY29tIiwibXljZC5ldSIsImRyci5hYyIsInV3dS5haSIsImNhcnJkLmNvIiwiY3JkLmNvIiwianUubXAiLCJhZS5vcmciLCJici5jb20iLCJjbi5jb20iLCJjb20uZGUiLCJjb20uc2UiLCJkZS5jb20iLCJldS5jb20iLCJnYi5uZXQiLCJodS5uZXQiLCJqcC5uZXQi''@;'; put 'put ''LCJqcG4uY29tIiwibWV4LmNvbSIsInJ1LmNvbSIsInNhLmNvbSIsInNlLm5ldCIsInVrLmNvbSIsInVrLm5ldCIsInVzLmNvbSIsInphLmJ6IiwiemEuY29tIiwiYXIuY29tIiwiaHUuY29tIiwia3IuY29tIiwibm8uY29tIiwicWMuY29tIiwidXkuY29tIiwiYWZyaWNhLmNvbSIsImdyLmNv''@;'; put 'put ''bSIsImluLm5ldCIsIndlYi5pbiIsInVzLm9yZyIsImNvLmNvbSIsImF1cy5iYXNrZXRiYWxsIiwibnouYmFza2V0YmFsbCIsInJhZGlvLmFtIiwicmFkaW8uZm0iLCJjLmxhIiwiY2VydG1nci5vcmciLCJjeC51YSIsImRpc2NvdXJzZS5ncm91cCIsImRpc2NvdXJzZS50ZWFtIiwiY2xldmVy''@;'; put 'put ''YXBwcy5pbyIsImNsZXJrLmFwcCIsImNsZXJrc3RhZ2UuYXBwIiwiKi5sY2wuZGV2IiwiKi5sY2xzdGFnZS5kZXYiLCIqLnN0Zy5kZXYiLCIqLnN0Z3N0YWdlLmRldiIsImNsaWNrcmlzaW5nLm5ldCIsImM2Ni5tZSIsImNsb3VkNjYud3MiLCJjbG91ZDY2LnpvbmUiLCJqZGV2Y2xvdWQuY29t''@;'; put 'put ''Iiwid3BkZXZjbG91ZC5jb20iLCJjbG91ZGFjY2Vzcy5ob3N0IiwiZnJlZXNpdGUuaG9zdCIsImNsb3VkYWNjZXNzLm5ldCIsImNsb3VkY29udHJvbGxlZC5jb20iLCJjbG91ZGNvbnRyb2xhcHAuY29tIiwiKi5jbG91ZGVyYS5zaXRlIiwicGFnZXMuZGV2IiwidHJ5Y2xvdWRmbGFyZS5jb20i''@;'; put 'put ''LCJ3b3JrZXJzLmRldiIsInduZXh0LmFwcCIsImNvLmNhIiwiKi5vdGFwLmNvIiwiY28uY3oiLCJjLmNkbjc3Lm9yZyIsImNkbjc3LXNzbC5uZXQiLCJyLmNkbjc3Lm5ldCIsInJzYy5jZG43Ny5vcmciLCJzc2wub3JpZ2luLmNkbjc3LXNlY3VyZS5vcmciLCJjbG91ZG5zLmFzaWEiLCJjbG91''@;'; put 'put ''ZG5zLmJpeiIsImNsb3VkbnMuY2x1YiIsImNsb3VkbnMuY2MiLCJjbG91ZG5zLmV1IiwiY2xvdWRucy5pbiIsImNsb3VkbnMuaW5mbyIsImNsb3VkbnMub3JnIiwiY2xvdWRucy5wcm8iLCJjbG91ZG5zLnB3IiwiY2xvdWRucy51cyIsImNucHkuZ2RuIiwiY29kZWJlcmcucGFnZSIsImNvLm5s''@;'; put 'put ''IiwiY28ubm8iLCJ3ZWJob3N0aW5nLmJlIiwiaG9zdGluZy1jbHVzdGVyLm5sIiwiYWMucnUiLCJlZHUucnUiLCJnb3YucnUiLCJpbnQucnUiLCJtaWwucnUiLCJ0ZXN0LnJ1IiwiZHluLmNvc2lkbnMuZGUiLCJkeW5hbWlzY2hlcy1kbnMuZGUiLCJkbnN1cGRhdGVyLmRlIiwiaW50ZXJuZXQt''@;'; put 'put ''ZG5zLmRlIiwibC1vLWctaS1uLmRlIiwiZHluYW1pYy1kbnMuaW5mbyIsImZlc3RlLWlwLm5ldCIsImtueC1zZXJ2ZXIubmV0Iiwic3RhdGljLWFjY2Vzcy5uZXQiLCJyZWFsbS5jeiIsIiouY3J5cHRvbm9taWMubmV0IiwiY3VwY2FrZS5pcyIsImN1cnYuZGV2IiwiKi5jdXN0b21lci1vY2ku''@;'; put 'put ''Y29tIiwiKi5vY2kuY3VzdG9tZXItb2NpLmNvbSIsIioub2NwLmN1c3RvbWVyLW9jaS5jb20iLCIqLm9jcy5jdXN0b21lci1vY2kuY29tIiwiY3lvbi5saW5rIiwiY3lvbi5zaXRlIiwiZm53ay5zaXRlIiwiZm9saW9uZXR3b3JrLnNpdGUiLCJwbGF0Zm9ybTAuYXBwIiwiZGFwbGllLm1lIiwi''@;'; put 'put ''bG9jYWxob3N0LmRhcGxpZS5tZSIsImRhdHRvbG9jYWwuY29tIiwiZGF0dG9yZWxheS5jb20iLCJkYXR0b3dlYi5jb20iLCJteWRhdHRvLmNvbSIsImRhdHRvbG9jYWwubmV0IiwibXlkYXR0by5uZXQiLCJiaXouZGsiLCJjby5kayIsImZpcm0uZGsiLCJyZWcuZGsiLCJzdG9yZS5kayIsImR5''@;'; put 'put ''bmRucy5kYXBwbm9kZS5pbyIsIiouZGFwcHMuZWFydGgiLCIqLmJ6ei5kYXBwcy5lYXJ0aCIsImJ1aWx0d2l0aGRhcmsuY29tIiwiZGVtby5kYXRhZGV0ZWN0LmNvbSIsImluc3RhbmNlLmRhdGFkZXRlY3QuY29tIiwiZWRnZXN0YWNrLm1lIiwiZGRuczUuY29tIiwiZGViaWFuLm5ldCIsImRl''@;'; put 'put ''bm8uZGV2IiwiZGVuby1zdGFnaW5nLmRldiIsImRlZHluLmlvIiwiZGV0YS5hcHAiLCJkZXRhLmRldiIsIioucnNzLm15LmlkIiwiKi5kaWhlci5zb2x1dGlvbnMiLCJkaXNjb3Jkc2F5cy5jb20iLCJkaXNjb3Jkc2V6LmNvbSIsImpvemkuYml6IiwiZG5zaG9tZS5kZSIsIm9ubGluZS50aCIs''@;'; put 'put ''InNob3AudGgiLCJkcmF5ZGRucy5jb20iLCJzaG9wYXJlbmEucGwiLCJkcmVhbWhvc3RlcnMuY29tIiwibXlkcm9iby5jb20iLCJkcnVkLmlvIiwiZHJ1ZC51cyIsImR1Y2tkbnMub3JnIiwiYmlwLnNoIiwiYml0YnJpZGdlLm5ldCIsImR5LmZpIiwidHVuay5vcmciLCJkeW5kbnMtYXQtaG9t''@;'; put 'put ''ZS5jb20iLCJkeW5kbnMtYXQtd29yay5jb20iLCJkeW5kbnMtYmxvZy5jb20iLCJkeW5kbnMtZnJlZS5jb20iLCJkeW5kbnMtaG9tZS5jb20iLCJkeW5kbnMtaXAuY29tIiwiZHluZG5zLW1haWwuY29tIiwiZHluZG5zLW9mZmljZS5jb20iLCJkeW5kbnMtcGljcy5jb20iLCJkeW5kbnMtcmVt''@;'; put 'put ''b3RlLmNvbSIsImR5bmRucy1zZXJ2ZXIuY29tIiwiZHluZG5zLXdlYi5jb20iLCJkeW5kbnMtd2lraS5jb20iLCJkeW5kbnMtd29yay5jb20iLCJkeW5kbnMuYml6IiwiZHluZG5zLmluZm8iLCJkeW5kbnMub3JnIiwiZHluZG5zLnR2IiwiYXQtYmFuZC1jYW1wLm5ldCIsImF0aC5jeCIsImJh''@;'; put 'put ''cnJlbC1vZi1rbm93bGVkZ2UuaW5mbyIsImJhcnJlbGwtb2Yta25vd2xlZGdlLmluZm8iLCJiZXR0ZXItdGhhbi50diIsImJsb2dkbnMuY29tIiwiYmxvZ2Rucy5uZXQiLCJibG9nZG5zLm9yZyIsImJsb2dzaXRlLm9yZyIsImJvbGRseWdvaW5nbm93aGVyZS5vcmciLCJicm9rZS1pdC5uZXQi''@;'; put 'put ''LCJidXlzaG91c2VzLm5ldCIsImNlY2hpcmUuY29tIiwiZG5zYWxpYXMuY29tIiwiZG5zYWxpYXMubmV0IiwiZG5zYWxpYXMub3JnIiwiZG5zZG9qby5jb20iLCJkbnNkb2pvLm5ldCIsImRuc2Rvam8ub3JnIiwiZG9lcy1pdC5uZXQiLCJkb2VzbnRleGlzdC5jb20iLCJkb2VzbnRleGlzdC5v''@;'; put 'put ''cmciLCJkb250ZXhpc3QuY29tIiwiZG9udGV4aXN0Lm5ldCIsImRvbnRleGlzdC5vcmciLCJkb29tZG5zLmNvbSIsImRvb21kbnMub3JnIiwiZHZyZG5zLm9yZyIsImR5bi1vLXNhdXIuY29tIiwiZHluYWxpYXMuY29tIiwiZHluYWxpYXMubmV0IiwiZHluYWxpYXMub3JnIiwiZHluYXRob21l''@;'; put 'put ''Lm5ldCIsImR5bmRucy53cyIsImVuZG9maW50ZXJuZXQubmV0IiwiZW5kb2ZpbnRlcm5ldC5vcmciLCJlbmRvZnRoZWludGVybmV0Lm9yZyIsImVzdC1hLWxhLW1haXNvbi5jb20iLCJlc3QtYS1sYS1tYXNpb24uY29tIiwiZXN0LWxlLXBhdHJvbi5jb20iLCJlc3QtbW9uLWJsb2d1ZXVyLmNv''@;'; put 'put ''bSIsImZvci1iZXR0ZXIuYml6IiwiZm9yLW1vcmUuYml6IiwiZm9yLW91ci5pbmZvIiwiZm9yLXNvbWUuYml6IiwiZm9yLXRoZS5iaXoiLCJmb3Jnb3QuaGVyLm5hbWUiLCJmb3Jnb3QuaGlzLm5hbWUiLCJmcm9tLWFrLmNvbSIsImZyb20tYWwuY29tIiwiZnJvbS1hci5jb20iLCJmcm9tLWF6''@;'; put 'put ''Lm5ldCIsImZyb20tY2EuY29tIiwiZnJvbS1jby5uZXQiLCJmcm9tLWN0LmNvbSIsImZyb20tZGMuY29tIiwiZnJvbS1kZS5jb20iLCJmcm9tLWZsLmNvbSIsImZyb20tZ2EuY29tIiwiZnJvbS1oaS5jb20iLCJmcm9tLWlhLmNvbSIsImZyb20taWQuY29tIiwiZnJvbS1pbC5jb20iLCJmcm9t''@;'; put 'put ''LWluLmNvbSIsImZyb20ta3MuY29tIiwiZnJvbS1reS5jb20iLCJmcm9tLWxhLm5ldCIsImZyb20tbWEuY29tIiwiZnJvbS1tZC5jb20iLCJmcm9tLW1lLm9yZyIsImZyb20tbWkuY29tIiwiZnJvbS1tbi5jb20iLCJmcm9tLW1vLmNvbSIsImZyb20tbXMuY29tIiwiZnJvbS1tdC5jb20iLCJm''@;'; put 'put ''cm9tLW5jLmNvbSIsImZyb20tbmQuY29tIiwiZnJvbS1uZS5jb20iLCJmcm9tLW5oLmNvbSIsImZyb20tbmouY29tIiwiZnJvbS1ubS5jb20iLCJmcm9tLW52LmNvbSIsImZyb20tbnkubmV0IiwiZnJvbS1vaC5jb20iLCJmcm9tLW9rLmNvbSIsImZyb20tb3IuY29tIiwiZnJvbS1wYS5jb20i''@;'; put 'put ''LCJmcm9tLXByLmNvbSIsImZyb20tcmkuY29tIiwiZnJvbS1zYy5jb20iLCJmcm9tLXNkLmNvbSIsImZyb20tdG4uY29tIiwiZnJvbS10eC5jb20iLCJmcm9tLXV0LmNvbSIsImZyb20tdmEuY29tIiwiZnJvbS12dC5jb20iLCJmcm9tLXdhLmNvbSIsImZyb20td2kuY29tIiwiZnJvbS13di5j''@;'; put 'put ''b20iLCJmcm9tLXd5LmNvbSIsImZ0cGFjY2Vzcy5jYyIsImZ1ZXR0ZXJ0ZGFzbmV0ei5kZSIsImdhbWUtaG9zdC5vcmciLCJnYW1lLXNlcnZlci5jYyIsImdldG15aXAuY29tIiwiZ2V0cy1pdC5uZXQiLCJnby5keW5kbnMub3JnIiwiZ290ZG5zLmNvbSIsImdvdGRucy5vcmciLCJncm9rcy10''@;'; put 'put ''aGUuaW5mbyIsImdyb2tzLXRoaXMuaW5mbyIsImhhbS1yYWRpby1vcC5uZXQiLCJoZXJlLWZvci1tb3JlLmluZm8iLCJob2JieS1zaXRlLmNvbSIsImhvYmJ5LXNpdGUub3JnIiwiaG9tZS5keW5kbnMub3JnIiwiaG9tZWRucy5vcmciLCJob21lZnRwLm5ldCIsImhvbWVmdHAub3JnIiwiaG9t''@;'; put 'put ''ZWlwLm5ldCIsImhvbWVsaW51eC5jb20iLCJob21lbGludXgubmV0IiwiaG9tZWxpbnV4Lm9yZyIsImhvbWV1bml4LmNvbSIsImhvbWV1bml4Lm5ldCIsImhvbWV1bml4Lm9yZyIsImlhbWFsbGFtYS5jb20iLCJpbi10aGUtYmFuZC5uZXQiLCJpcy1hLWFuYXJjaGlzdC5jb20iLCJpcy1hLWJs''@;'; put 'put ''b2dnZXIuY29tIiwiaXMtYS1ib29ra2VlcGVyLmNvbSIsImlzLWEtYnJ1aW5zZmFuLm9yZyIsImlzLWEtYnVsbHMtZmFuLmNvbSIsImlzLWEtY2FuZGlkYXRlLm9yZyIsImlzLWEtY2F0ZXJlci5jb20iLCJpcy1hLWNlbHRpY3NmYW4ub3JnIiwiaXMtYS1jaGVmLmNvbSIsImlzLWEtY2hlZi5u''@;'; put 'put ''ZXQiLCJpcy1hLWNoZWYub3JnIiwiaXMtYS1jb25zZXJ2YXRpdmUuY29tIiwiaXMtYS1jcGEuY29tIiwiaXMtYS1jdWJpY2xlLXNsYXZlLmNvbSIsImlzLWEtZGVtb2NyYXQuY29tIiwiaXMtYS1kZXNpZ25lci5jb20iLCJpcy1hLWRvY3Rvci5jb20iLCJpcy1hLWZpbmFuY2lhbGFkdmlzb3Iu''@;'; put 'put ''Y29tIiwiaXMtYS1nZWVrLmNvbSIsImlzLWEtZ2Vlay5uZXQiLCJpcy1hLWdlZWsub3JnIiwiaXMtYS1ncmVlbi5jb20iLCJpcy1hLWd1cnUuY29tIiwiaXMtYS1oYXJkLXdvcmtlci5jb20iLCJpcy1hLWh1bnRlci5jb20iLCJpcy1hLWtuaWdodC5vcmciLCJpcy1hLWxhbmRzY2FwZXIuY29t''@;'; put 'put ''IiwiaXMtYS1sYXd5ZXIuY29tIiwiaXMtYS1saWJlcmFsLmNvbSIsImlzLWEtbGliZXJ0YXJpYW4uY29tIiwiaXMtYS1saW51eC11c2VyLm9yZyIsImlzLWEtbGxhbWEuY29tIiwiaXMtYS1tdXNpY2lhbi5jb20iLCJpcy1hLW5hc2NhcmZhbi5jb20iLCJpcy1hLW51cnNlLmNvbSIsImlzLWEt''@;'; put 'put ''cGFpbnRlci5jb20iLCJpcy1hLXBhdHNmYW4ub3JnIiwiaXMtYS1wZXJzb25hbHRyYWluZXIuY29tIiwiaXMtYS1waG90b2dyYXBoZXIuY29tIiwiaXMtYS1wbGF5ZXIuY29tIiwiaXMtYS1yZXB1YmxpY2FuLmNvbSIsImlzLWEtcm9ja3N0YXIuY29tIiwiaXMtYS1zb2NpYWxpc3QuY29tIiwi''@;'; put 'put ''aXMtYS1zb3hmYW4ub3JnIiwiaXMtYS1zdHVkZW50LmNvbSIsImlzLWEtdGVhY2hlci5jb20iLCJpcy1hLXRlY2hpZS5jb20iLCJpcy1hLXRoZXJhcGlzdC5jb20iLCJpcy1hbi1hY2NvdW50YW50LmNvbSIsImlzLWFuLWFjdG9yLmNvbSIsImlzLWFuLWFjdHJlc3MuY29tIiwiaXMtYW4tYW5h''@;'; put 'put ''cmNoaXN0LmNvbSIsImlzLWFuLWFydGlzdC5jb20iLCJpcy1hbi1lbmdpbmVlci5jb20iLCJpcy1hbi1lbnRlcnRhaW5lci5jb20iLCJpcy1ieS51cyIsImlzLWNlcnRpZmllZC5jb20iLCJpcy1mb3VuZC5vcmciLCJpcy1nb25lLmNvbSIsImlzLWludG8tYW5pbWUuY29tIiwiaXMtaW50by1j''@;'; put 'put ''YXJzLmNvbSIsImlzLWludG8tY2FydG9vbnMuY29tIiwiaXMtaW50by1nYW1lcy5jb20iLCJpcy1sZWV0LmNvbSIsImlzLWxvc3Qub3JnIiwiaXMtbm90LWNlcnRpZmllZC5jb20iLCJpcy1zYXZlZC5vcmciLCJpcy1zbGljay5jb20iLCJpcy11YmVybGVldC5jb20iLCJpcy12ZXJ5LWJhZC5v''@;'; put 'put ''cmciLCJpcy12ZXJ5LWV2aWwub3JnIiwiaXMtdmVyeS1nb29kLm9yZyIsImlzLXZlcnktbmljZS5vcmciLCJpcy12ZXJ5LXN3ZWV0Lm9yZyIsImlzLXdpdGgtdGhlYmFuZC5jb20iLCJpc2EtZ2Vlay5jb20iLCJpc2EtZ2Vlay5uZXQiLCJpc2EtZ2Vlay5vcmciLCJpc2EtaG9ja2V5bnV0LmNv''@;'; put 'put ''bSIsImlzc21hcnRlcnRoYW55b3UuY29tIiwiaXN0ZWluZ2Vlay5kZSIsImlzdG1laW4uZGUiLCJraWNrcy1hc3MubmV0Iiwia2lja3MtYXNzLm9yZyIsImtub3dzaXRhbGwuaW5mbyIsImxhbmQtNC1zYWxlLnVzIiwibGVidGltbmV0ei5kZSIsImxlaXR1bmdzZW4uZGUiLCJsaWtlcy1waWUu''@;'; put 'put ''Y29tIiwibGlrZXNjYW5keS5jb20iLCJtZXJzZWluZS5udSIsIm1pbmUubnUiLCJtaXNjb25mdXNlZC5vcmciLCJteXBldHMud3MiLCJteXBob3Rvcy5jYyIsIm5lYXQtdXJsLmNvbSIsIm9mZmljZS1vbi10aGUubmV0Iiwib24tdGhlLXdlYi50diIsInBvZHpvbmUubmV0IiwicG9kem9uZS5v''@;'; put 'put ''cmciLCJyZWFkbXlibG9nLm9yZyIsInNhdmVzLXRoZS13aGFsZXMuY29tIiwic2NyYXBwZXItc2l0ZS5uZXQiLCJzY3JhcHBpbmcuY2MiLCJzZWxmaXAuYml6Iiwic2VsZmlwLmNvbSIsInNlbGZpcC5pbmZvIiwic2VsZmlwLm5ldCIsInNlbGZpcC5vcmciLCJzZWxscy1mb3ItbGVzcy5jb20i''@;'; put 'put ''LCJzZWxscy1mb3ItdS5jb20iLCJzZWxscy1pdC5uZXQiLCJzZWxsc3lvdXJob21lLm9yZyIsInNlcnZlYmJzLmNvbSIsInNlcnZlYmJzLm5ldCIsInNlcnZlYmJzLm9yZyIsInNlcnZlZnRwLm5ldCIsInNlcnZlZnRwLm9yZyIsInNlcnZlZ2FtZS5vcmciLCJzaGFja25ldC5udSIsInNpbXBs''@;'; put 'put ''ZS11cmwuY29tIiwic3BhY2UtdG8tcmVudC5jb20iLCJzdHVmZi00LXNhbGUub3JnIiwic3R1ZmYtNC1zYWxlLnVzIiwidGVhY2hlcy15b2dhLmNvbSIsInRocnVoZXJlLm5ldCIsInRyYWV1bXRnZXJhZGUuZGUiLCJ3ZWJob3AuYml6Iiwid2ViaG9wLmluZm8iLCJ3ZWJob3AubmV0Iiwid2Vi''@;'; put 'put ''aG9wLm9yZyIsIndvcnNlLXRoYW4udHYiLCJ3cml0ZXN0aGlzYmxvZy5jb20iLCJkZG5zcy5kZSIsImR5bi5kZG5zcy5kZSIsImR5bmRucy5kZG5zcy5kZSIsImR5bmRuczEuZGUiLCJkeW4taXAyNC5kZSIsImhvbWUtd2Vic2VydmVyLmRlIiwiZHluLmhvbWUtd2Vic2VydmVyLmRlIiwibXlo''@;'; put 'put ''b21lLXNlcnZlci5kZSIsImRkbnNzLm9yZyIsImRlZmluaW1hLm5ldCIsImRlZmluaW1hLmlvIiwib25kaWdpdGFsb2NlYW4uYXBwIiwiKi5kaWdpdGFsb2NlYW5zcGFjZXMuY29tIiwiYmNpLmRuc3RyYWNlLnBybyIsImRkbnNmcmVlLmNvbSIsImRkbnNnZWVrLmNvbSIsImdpaXplLmNvbSIs''@;'; put 'put ''ImdsZWV6ZS5jb20iLCJrb3pvdy5jb20iLCJsb3NleW91cmlwLmNvbSIsIm9vZ3V5LmNvbSIsInRoZXdvcmtwYy5jb20iLCJjYXNhY2FtLm5ldCIsImR5bnUubmV0IiwiYWNjZXNzY2FtLm9yZyIsImNhbWR2ci5vcmciLCJmcmVlZGRucy5vcmciLCJteXdpcmUub3JnIiwid2VicmVkaXJlY3Qu''@;'; put 'put ''b3JnIiwibXlkZG5zLnJvY2tzIiwiYmxvZ3NpdGUueHl6IiwiZHludjYubmV0IiwiZTQuY3oiLCJlZXJvLm9ubGluZSIsImVlcm8tc3RhZ2Uub25saW5lIiwiZWxlbWVudG9yLmNsb3VkIiwiZWxlbWVudG9yLmNvb2wiLCJlbi1yb290LmZyIiwibXl0dWxlYXAuY29tIiwidHVsZWFwLXBhcnRu''@;'; put 'put ''ZXJzLmNvbSIsImVuY3IuYXBwIiwiZW5jb3JlYXBpLmNvbSIsIm9ucmVkLm9uZSIsInN0YWdpbmcub25yZWQub25lIiwiZXUuZW5jb3dheS5jbG91ZCIsImV1Lm9yZyIsImFsLmV1Lm9yZyIsImFzc28uZXUub3JnIiwiYXQuZXUub3JnIiwiYXUuZXUub3JnIiwiYmUuZXUub3JnIiwiYmcuZXUu''@;'; put 'put ''b3JnIiwiY2EuZXUub3JnIiwiY2QuZXUub3JnIiwiY2guZXUub3JnIiwiY24uZXUub3JnIiwiY3kuZXUub3JnIiwiY3ouZXUub3JnIiwiZGUuZXUub3JnIiwiZGsuZXUub3JnIiwiZWR1LmV1Lm9yZyIsImVlLmV1Lm9yZyIsImVzLmV1Lm9yZyIsImZpLmV1Lm9yZyIsImZyLmV1Lm9yZyIsImdy''@;'; put 'put ''LmV1Lm9yZyIsImhyLmV1Lm9yZyIsImh1LmV1Lm9yZyIsImllLmV1Lm9yZyIsImlsLmV1Lm9yZyIsImluLmV1Lm9yZyIsImludC5ldS5vcmciLCJpcy5ldS5vcmciLCJpdC5ldS5vcmciLCJqcC5ldS5vcmciLCJrci5ldS5vcmciLCJsdC5ldS5vcmciLCJsdS5ldS5vcmciLCJsdi5ldS5vcmci''@;'; put 'put ''LCJtYy5ldS5vcmciLCJtZS5ldS5vcmciLCJtay5ldS5vcmciLCJtdC5ldS5vcmciLCJteS5ldS5vcmciLCJuZXQuZXUub3JnIiwibmcuZXUub3JnIiwibmwuZXUub3JnIiwibm8uZXUub3JnIiwibnouZXUub3JnIiwicGFyaXMuZXUub3JnIiwicGwuZXUub3JnIiwicHQuZXUub3JnIiwicS1h''@;'; put 'put ''LmV1Lm9yZyIsInJvLmV1Lm9yZyIsInJ1LmV1Lm9yZyIsInNlLmV1Lm9yZyIsInNpLmV1Lm9yZyIsInNrLmV1Lm9yZyIsInRyLmV1Lm9yZyIsInVrLmV1Lm9yZyIsInVzLmV1Lm9yZyIsImV1cm9kaXIucnUiLCJldS0xLmV2ZW5ub2RlLmNvbSIsImV1LTIuZXZlbm5vZGUuY29tIiwiZXUtMy5l''@;'; put 'put ''dmVubm9kZS5jb20iLCJldS00LmV2ZW5ub2RlLmNvbSIsInVzLTEuZXZlbm5vZGUuY29tIiwidXMtMi5ldmVubm9kZS5jb20iLCJ1cy0zLmV2ZW5ub2RlLmNvbSIsInVzLTQuZXZlbm5vZGUuY29tIiwidHdtYWlsLmNjIiwidHdtYWlsLm5ldCIsInR3bWFpbC5vcmciLCJteW1haWxlci5jb20u''@;'; put 'put ''dHciLCJ1cmwudHciLCJvbmZhYnJpY2EuY29tIiwiYXBwcy5mYnNieC5jb20iLCJydS5uZXQiLCJhZHlnZXlhLnJ1IiwiYmFzaGtpcmlhLnJ1IiwiYmlyLnJ1IiwiY2JnLnJ1IiwiY29tLnJ1IiwiZGFnZXN0YW4ucnUiLCJncm96bnkucnUiLCJrYWxteWtpYS5ydSIsImt1c3RhbmFpLnJ1Iiwi''@;'; put 'put ''bWFyaW5lLnJ1IiwibW9yZG92aWEucnUiLCJtc2sucnUiLCJteXRpcy5ydSIsIm5hbGNoaWsucnUiLCJub3YucnUiLCJweWF0aWdvcnNrLnJ1Iiwic3BiLnJ1IiwidmxhZGlrYXZrYXoucnUiLCJ2bGFkaW1pci5ydSIsImFia2hhemlhLnN1IiwiYWR5Z2V5YS5zdSIsImFrdHl1Ymluc2suc3Ui''@;'; put 'put ''LCJhcmtoYW5nZWxzay5zdSIsImFybWVuaWEuc3UiLCJhc2hnYWJhZC5zdSIsImF6ZXJiYWlqYW4uc3UiLCJiYWxhc2hvdi5zdSIsImJhc2hraXJpYS5zdSIsImJyeWFuc2suc3UiLCJidWtoYXJhLnN1IiwiY2hpbWtlbnQuc3UiLCJkYWdlc3Rhbi5zdSIsImVhc3Qta2F6YWtoc3Rhbi5zdSIs''@;'; put 'put ''ImV4bmV0LnN1IiwiZ2VvcmdpYS5zdSIsImdyb3pueS5zdSIsIml2YW5vdm8uc3UiLCJqYW1ieWwuc3UiLCJrYWxteWtpYS5zdSIsImthbHVnYS5zdSIsImthcmFjb2wuc3UiLCJrYXJhZ2FuZGEuc3UiLCJrYXJlbGlhLnN1Iiwia2hha2Fzc2lhLnN1Iiwia3Jhc25vZGFyLnN1Iiwia3VyZ2Fu''@;'; put 'put ''LnN1Iiwia3VzdGFuYWkuc3UiLCJsZW51Zy5zdSIsIm1hbmd5c2hsYWsuc3UiLCJtb3Jkb3ZpYS5zdSIsIm1zay5zdSIsIm11cm1hbnNrLnN1IiwibmFsY2hpay5zdSIsIm5hdm9pLnN1Iiwibm9ydGgta2F6YWtoc3Rhbi5zdSIsIm5vdi5zdSIsIm9ibmluc2suc3UiLCJwZW56YS5zdSIsInBv''@;'; put 'put ''a3JvdnNrLnN1Iiwic29jaGkuc3UiLCJzcGIuc3UiLCJ0YXNoa2VudC5zdSIsInRlcm1lei5zdSIsInRvZ2xpYXR0aS5zdSIsInRyb2l0c2suc3UiLCJ0c2VsaW5vZ3JhZC5zdSIsInR1bGEuc3UiLCJ0dXZhLnN1IiwidmxhZGlrYXZrYXouc3UiLCJ2bGFkaW1pci5zdSIsInZvbG9nZGEuc3Ui''@;'; put 'put ''LCJjaGFubmVsc2R2ci5uZXQiLCJ1LmNoYW5uZWxzZHZyLm5ldCIsImVkZ2Vjb21wdXRlLmFwcCIsImZhc3RseS10ZXJyYXJpdW0uY29tIiwiZmFzdGx5bGIubmV0IiwibWFwLmZhc3RseWxiLm5ldCIsImZyZWV0bHMuZmFzdGx5Lm5ldCIsIm1hcC5mYXN0bHkubmV0IiwiYS5wcm9kLmZhc3Rs''@;'; put 'put ''eS5uZXQiLCJnbG9iYWwucHJvZC5mYXN0bHkubmV0IiwiYS5zc2wuZmFzdGx5Lm5ldCIsImIuc3NsLmZhc3RseS5uZXQiLCJnbG9iYWwuc3NsLmZhc3RseS5uZXQiLCJmYXN0dnBzLXNlcnZlci5jb20iLCJmYXN0dnBzLmhvc3QiLCJteWZhc3QuaG9zdCIsImZhc3R2cHMuc2l0ZSIsIm15ZmFz''@;'; put 'put ''dC5zcGFjZSIsImZlZG9yYWluZnJhY2xvdWQub3JnIiwiZmVkb3JhcGVvcGxlLm9yZyIsImNsb3VkLmZlZG9yYXByb2plY3Qub3JnIiwiYXBwLm9zLmZlZG9yYXByb2plY3Qub3JnIiwiYXBwLm9zLnN0Zy5mZWRvcmFwcm9qZWN0Lm9yZyIsImNvbm4udWsiLCJjb3Byby51ayIsImhvc3AudWsi''@;'; put 'put ''LCJteWRvYmlzcy5jb20iLCJmaC1tdWVuc3Rlci5pbyIsImZpbGVnZWFyLm1lIiwiZmlsZWdlYXItYXUubWUiLCJmaWxlZ2Vhci1kZS5tZSIsImZpbGVnZWFyLWdiLm1lIiwiZmlsZWdlYXItaWUubWUiLCJmaWxlZ2Vhci1qcC5tZSIsImZpbGVnZWFyLXNnLm1lIiwiZmlyZWJhc2VhcHAuY29t''@;'; put 'put ''IiwiZmlyZXdlYi5hcHAiLCJmbGFwLmlkIiwib25mbGFzaGRyaXZlLmFwcCIsImZsZHJ2LmNvbSIsImZseS5kZXYiLCJlZGdlYXBwLm5ldCIsInNody5pbyIsImZseW5uaG9zdGluZy5uZXQiLCJmb3JnZWJsb2Nrcy5jb20iLCJpZC5mb3JnZXJvY2suaW8iLCJmcmFtZXIuYXBwIiwiZnJhbWVy''@;'; put 'put ''Y2FudmFzLmNvbSIsIiouZnJ1c2t5LmRlIiwicmF2cGFnZS5jby5pbCIsIjBlLnZjIiwiZnJlZWJveC1vcy5jb20iLCJmcmVlYm94b3MuY29tIiwiZmJ4LW9zLmZyIiwiZmJ4b3MuZnIiLCJmcmVlYm94LW9zLmZyIiwiZnJlZWJveG9zLmZyIiwiZnJlZWRlc2t0b3Aub3JnIiwiZnJlZW15aXAu''@;'; put 'put ''Y29tIiwid2llbi5mdW5rZmV1ZXIuYXQiLCIqLmZ1dHVyZWNtcy5hdCIsIiouZXguZnV0dXJlY21zLmF0IiwiKi5pbi5mdXR1cmVjbXMuYXQiLCJmdXR1cmVob3N0aW5nLmF0IiwiZnV0dXJlbWFpbGluZy5hdCIsIiouZXgub3J0c2luZm8uYXQiLCIqLmt1bmRlbi5vcnRzaW5mby5hdCIsIiou''@;'; put 'put ''c3RhdGljcy5jbG91ZCIsImluZGVwZW5kZW50LWNvbW1pc3Npb24udWsiLCJpbmRlcGVuZGVudC1pbnF1ZXN0LnVrIiwiaW5kZXBlbmRlbnQtaW5xdWlyeS51ayIsImluZGVwZW5kZW50LXBhbmVsLnVrIiwiaW5kZXBlbmRlbnQtcmV2aWV3LnVrIiwicHVibGljLWlucXVpcnkudWsiLCJyb3lh''@;'; put 'put ''bC1jb21taXNzaW9uLnVrIiwiY2FtcGFpZ24uZ292LnVrIiwic2VydmljZS5nb3YudWsiLCJhcGkuZ292LnVrIiwiZ2VoaXJuLm5lLmpwIiwidXNlcmNvbnRlbnQuanAiLCJnZW50YXBwcy5jb20iLCJnZW50bGVudGFwaXMuY29tIiwibGFiLm1zIiwiY2RuLWVkZ2VzLm5ldCIsImdob3N0Lmlv''@;'; put 'put ''IiwiZ3NqLmJ6IiwiZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwiZ2l0aHVicHJldmlldy5kZXYiLCJnaXRodWIuaW8iLCJnaXRsYWIuaW8iLCJnaXRhcHAuc2kiLCJnaXRwYWdlLnNpIiwiZ2xpdGNoLm1lIiwibm9nLmNvbW11bml0eSIsImNvLnJvIiwic2hvcC5ybyIsImxvbGlwb3AuaW8iLCJh''@;'; put 'put ''bmdyeS5qcCIsImJhYnlibHVlLmpwIiwiYmFieW1pbGsuanAiLCJiYWNrZHJvcC5qcCIsImJhbWJpbmEuanAiLCJiaXR0ZXIuanAiLCJibHVzaC5qcCIsImJvby5qcCIsImJveS5qcCIsImJveWZyaWVuZC5qcCIsImJ1dC5qcCIsImNhbmR5cG9wLmpwIiwiY2Fwb28uanAiLCJjYXRmb29kLmpw''@;'; put 'put ''IiwiY2hlYXAuanAiLCJjaGljYXBwYS5qcCIsImNoaWxsb3V0LmpwIiwiY2hpcHMuanAiLCJjaG93ZGVyLmpwIiwiY2h1LmpwIiwiY2lhby5qcCIsImNvY290dGUuanAiLCJjb29sYmxvZy5qcCIsImNyYW5reS5qcCIsImN1dGVnaXJsLmpwIiwiZGFhLmpwIiwiZGVjYS5qcCIsImRlY2kuanAi''@;'; put 'put ''LCJkaWdpY2suanAiLCJlZ29pc20uanAiLCJmYWtlZnVyLmpwIiwiZmVtLmpwIiwiZmxpZXIuanAiLCJmbG9wcHkuanAiLCJmb29sLmpwIiwiZnJlbmNoa2lzcy5qcCIsImdpcmxmcmllbmQuanAiLCJnaXJseS5qcCIsImdsb29teS5qcCIsImdvbm5hLmpwIiwiZ3JlYXRlci5qcCIsImhhY2Nh''@;'; put 'put ''LmpwIiwiaGVhdnkuanAiLCJoZXIuanAiLCJoaWhvLmpwIiwiaGlwcHkuanAiLCJob2x5LmpwIiwiaHVuZ3J5LmpwIiwiaWN1cnVzLmpwIiwiaXRpZ28uanAiLCJqZWxseWJlYW4uanAiLCJraWtpcmFyYS5qcCIsImtpbGwuanAiLCJraWxvLmpwIiwia3Vyb24uanAiLCJsaXR0bGVzdGFyLmpw''@;'; put 'put ''IiwibG9saXBvcG1jLmpwIiwibG9saXRhcHVuay5qcCIsImxvbW8uanAiLCJsb3ZlcG9wLmpwIiwibG92ZXNpY2suanAiLCJtYWluLmpwIiwibW9kcy5qcCIsIm1vbmQuanAiLCJtb25nb2xpYW4uanAiLCJtb28uanAiLCJuYW1hc3RlLmpwIiwibmlraXRhLmpwIiwibm9idXNoaS5qcCIsIm5v''@;'; put 'put ''b3IuanAiLCJvb3BzLmpwIiwicGFyYWxsZWwuanAiLCJwYXJhc2l0ZS5qcCIsInBlY29yaS5qcCIsInBlZXdlZS5qcCIsInBlbm5lLmpwIiwicGVwcGVyLmpwIiwicGVybWEuanAiLCJwaWdib2F0LmpwIiwicGlub2tvLmpwIiwicHVueXUuanAiLCJwdXB1LmpwIiwicHVzc3ljYXQuanAiLCJw''@;'; put 'put ''eWEuanAiLCJyYWluZHJvcC5qcCIsInJlYWR5bWFkZS5qcCIsInNhZGlzdC5qcCIsInNjaG9vbGJ1cy5qcCIsInNlY3JldC5qcCIsInN0YWJhLmpwIiwic3RyaXBwZXIuanAiLCJzdWIuanAiLCJzdW5ueWRheS5qcCIsInRoaWNrLmpwIiwidG9ua290c3UuanAiLCJ1bmRlci5qcCIsInVwcGVy''@;'; put 'put ''LmpwIiwidmVsdmV0LmpwIiwidmVyc2UuanAiLCJ2ZXJzdXMuanAiLCJ2aXZpYW4uanAiLCJ3YXRzb24uanAiLCJ3ZWJsaWtlLmpwIiwid2hpdGVzbm93LmpwIiwiem9tYmllLmpwIiwiaGV0ZW1sLm5ldCIsImNsb3VkYXBwcy5kaWdpdGFsIiwibG9uZG9uLmNsb3VkYXBwcy5kaWdpdGFsIiwi''@;'; put 'put ''cHltbnQudWsiLCJob21lb2ZmaWNlLmdvdi51ayIsInJvLmltIiwiZ29pcC5kZSIsInJ1bi5hcHAiLCJhLnJ1bi5hcHAiLCJ3ZWIuYXBwIiwiKi4wZW1tLmNvbSIsImFwcHNwb3QuY29tIiwiKi5yLmFwcHNwb3QuY29tIiwiY29kZXNwb3QuY29tIiwiZ29vZ2xlYXBpcy5jb20iLCJnb29nbGVj''@;'; put 'put ''b2RlLmNvbSIsInBhZ2VzcGVlZG1vYmlsaXplci5jb20iLCJwdWJsaXNocHJveHkuY29tIiwid2l0aGdvb2dsZS5jb20iLCJ3aXRoeW91dHViZS5jb20iLCIqLmdhdGV3YXkuZGV2IiwiY2xvdWQuZ29vZyIsInRyYW5zbGF0ZS5nb29nIiwiKi51c2VyY29udGVudC5nb29nIiwiY2xvdWRmdW5j''@;'; put 'put ''dGlvbnMubmV0IiwiYmxvZ3Nwb3QuYWUiLCJibG9nc3BvdC5hbCIsImJsb2dzcG90LmFtIiwiYmxvZ3Nwb3QuYmEiLCJibG9nc3BvdC5iZSIsImJsb2dzcG90LmJnIiwiYmxvZ3Nwb3QuYmoiLCJibG9nc3BvdC5jYSIsImJsb2dzcG90LmNmIiwiYmxvZ3Nwb3QuY2giLCJibG9nc3BvdC5jbCIs''@;'; put 'put ''ImJsb2dzcG90LmNvLmF0IiwiYmxvZ3Nwb3QuY28uaWQiLCJibG9nc3BvdC5jby5pbCIsImJsb2dzcG90LmNvLmtlIiwiYmxvZ3Nwb3QuY28ubnoiLCJibG9nc3BvdC5jby51ayIsImJsb2dzcG90LmNvLnphIiwiYmxvZ3Nwb3QuY29tIiwiYmxvZ3Nwb3QuY29tLmFyIiwiYmxvZ3Nwb3QuY29t''@;'; put 'put ''LmF1IiwiYmxvZ3Nwb3QuY29tLmJyIiwiYmxvZ3Nwb3QuY29tLmJ5IiwiYmxvZ3Nwb3QuY29tLmNvIiwiYmxvZ3Nwb3QuY29tLmN5IiwiYmxvZ3Nwb3QuY29tLmVlIiwiYmxvZ3Nwb3QuY29tLmVnIiwiYmxvZ3Nwb3QuY29tLmVzIiwiYmxvZ3Nwb3QuY29tLm10IiwiYmxvZ3Nwb3QuY29tLm5n''@;'; put 'put ''IiwiYmxvZ3Nwb3QuY29tLnRyIiwiYmxvZ3Nwb3QuY29tLnV5IiwiYmxvZ3Nwb3QuY3YiLCJibG9nc3BvdC5jeiIsImJsb2dzcG90LmRlIiwiYmxvZ3Nwb3QuZGsiLCJibG9nc3BvdC5maSIsImJsb2dzcG90LmZyIiwiYmxvZ3Nwb3QuZ3IiLCJibG9nc3BvdC5oayIsImJsb2dzcG90LmhyIiwi''@;'; put 'put ''YmxvZ3Nwb3QuaHUiLCJibG9nc3BvdC5pZSIsImJsb2dzcG90LmluIiwiYmxvZ3Nwb3QuaXMiLCJibG9nc3BvdC5pdCIsImJsb2dzcG90LmpwIiwiYmxvZ3Nwb3Qua3IiLCJibG9nc3BvdC5saSIsImJsb2dzcG90Lmx0IiwiYmxvZ3Nwb3QubHUiLCJibG9nc3BvdC5tZCIsImJsb2dzcG90Lm1r''@;'; put 'put ''IiwiYmxvZ3Nwb3QubXIiLCJibG9nc3BvdC5teCIsImJsb2dzcG90Lm15IiwiYmxvZ3Nwb3QubmwiLCJibG9nc3BvdC5ubyIsImJsb2dzcG90LnBlIiwiYmxvZ3Nwb3QucHQiLCJibG9nc3BvdC5xYSIsImJsb2dzcG90LnJlIiwiYmxvZ3Nwb3Qucm8iLCJibG9nc3BvdC5ycyIsImJsb2dzcG90''@;'; put 'put ''LnJ1IiwiYmxvZ3Nwb3Quc2UiLCJibG9nc3BvdC5zZyIsImJsb2dzcG90LnNpIiwiYmxvZ3Nwb3Quc2siLCJibG9nc3BvdC5zbiIsImJsb2dzcG90LnRkIiwiYmxvZ3Nwb3QudHciLCJibG9nc3BvdC51ZyIsImJsb2dzcG90LnZuIiwiZ291cGlsZS5mciIsImdvdi5ubCIsImF3c21wcGwuY29t''@;'; put 'put ''IiwiZ1x4ZmNuc3RpZ2Jlc3RlbGxlbi5kZSIsImdceGZjbnN0aWdsaWVmZXJuLmRlIiwiZmluLmNpIiwiZnJlZS5ociIsImNhYS5saSIsInVhLnJzIiwiY29uZi5zZSIsImhzLnpvbmUiLCJocy5ydW4iLCJoYXNoYmFuZy5zaCIsImhhc3VyYS5hcHAiLCJoYXN1cmEtYXBwLmlvIiwicGFnZXMu''@;'; put 'put ''aXQuaHMtaGVpbGJyb25uLmRlIiwiaGVwZm9yZ2Uub3JnIiwiaGVyb2t1YXBwLmNvbSIsImhlcm9rdXNzbC5jb20iLCJyYXZlbmRiLmNsb3VkIiwibXlyYXZlbmRiLmNvbSIsInJhdmVuZGIuY29tbXVuaXR5IiwicmF2ZW5kYi5tZSIsImRldmVsb3BtZW50LnJ1biIsInJhdmVuZGIucnVuIiwi''@;'; put 'put ''aG9tZXNrbGVwLnBsIiwic2VjYWFzLmhrIiwiaG9wbGl4LnNob3AiLCJvcnguYml6IiwiYml6LmdsIiwiY29sLm5nIiwiZmlybS5uZyIsImdlbi5uZyIsImx0ZC5uZyIsIm5nby5uZyIsImVkdS5zY290Iiwic2NoLnNvIiwiaG9zdHlob3N0aW5nLmlvIiwiaFx4ZTRra2luZW4uZmkiLCIqLm1v''@;'; put 'put ''b25zY2FsZS5pbyIsIm1vb25zY2FsZS5uZXQiLCJpa2kuZmkiLCJpYnhvcy5pdCIsImlsaWFkYm94b3MuaXQiLCJpbXBlcnRyaXhjZG4uY29tIiwiaW1wZXJ0cml4LmNvbSIsInNtdXNoY2RuLmNvbSIsIndwaG9zdGVkbWFpbC5jb20iLCJ3cG11Y2RuLmNvbSIsInRlbXB1cmwuaG9zdCIsIndw''@;'; put 'put ''bXVkZXYuaG9zdCIsImR5bi1iZXJsaW4uZGUiLCJpbi1iZXJsaW4uZGUiLCJpbi1icmIuZGUiLCJpbi1idXR0ZXIuZGUiLCJpbi1kc2wuZGUiLCJpbi1kc2wubmV0IiwiaW4tZHNsLm9yZyIsImluLXZwbi5kZSIsImluLXZwbi5uZXQiLCJpbi12cG4ub3JnIiwiYml6LmF0IiwiaW5mby5hdCIs''@;'; put 'put ''ImluZm8uY3giLCJhYy5sZWcuYnIiLCJhbC5sZWcuYnIiLCJhbS5sZWcuYnIiLCJhcC5sZWcuYnIiLCJiYS5sZWcuYnIiLCJjZS5sZWcuYnIiLCJkZi5sZWcuYnIiLCJlcy5sZWcuYnIiLCJnby5sZWcuYnIiLCJtYS5sZWcuYnIiLCJtZy5sZWcuYnIiLCJtcy5sZWcuYnIiLCJtdC5sZWcuYnIi''@;'; put 'put ''LCJwYS5sZWcuYnIiLCJwYi5sZWcuYnIiLCJwZS5sZWcuYnIiLCJwaS5sZWcuYnIiLCJwci5sZWcuYnIiLCJyai5sZWcuYnIiLCJybi5sZWcuYnIiLCJyby5sZWcuYnIiLCJyci5sZWcuYnIiLCJycy5sZWcuYnIiLCJzYy5sZWcuYnIiLCJzZS5sZWcuYnIiLCJzcC5sZWcuYnIiLCJ0by5sZWcu''@;'; put 'put ''YnIiLCJwaXhvbGluby5jb20iLCJuYTR1LnJ1IiwiaW9wc3lzLnNlIiwiaXBpZm9ueS5uZXQiLCJpc2VydnNjaHVsZS5kZSIsIm1laW4taXNlcnYuZGUiLCJzY2h1bHBsYXR0Zm9ybS5kZSIsInNjaHVsc2VydmVyLmRlIiwidGVzdC1pc2Vydi5kZSIsImlzZXJ2LmRldiIsImlvYmIubmV0Iiwi''@;'; put 'put ''bWVsLmNsb3VkbGV0cy5jb20uYXUiLCJjbG91ZC5pbnRlcmhvc3Rzb2x1dGlvbnMuYmUiLCJ1c2Vycy5zY2FsZS52aXJ0dWFsY2xvdWQuY29tLmJyIiwibXljbG91ZC5ieSIsImFscDEuYWUuZmxvdy5jaCIsImFwcGVuZ2luZS5mbG93LmNoIiwiZXMtMS5heGFybmV0LmNsb3VkIiwiZGlhZGVt''@;'; put 'put ''LmNsb3VkIiwidmlwLmplbGFzdGljLmNsb3VkIiwiamVsZS5jbG91ZCIsIml0MS5ldXIuYXJ1YmEuamVudi1hcnViYS5jbG91ZCIsIml0MS5qZW52LWFydWJhLmNsb3VkIiwia2VsaXdlYi5jbG91ZCIsImNzLmtlbGl3ZWIuY2xvdWQiLCJveGEuY2xvdWQiLCJ0bi5veGEuY2xvdWQiLCJ1ay5v''@;'; put 'put ''eGEuY2xvdWQiLCJwcmltZXRlbC5jbG91ZCIsInVrLnByaW1ldGVsLmNsb3VkIiwiY2EucmVjbGFpbS5jbG91ZCIsInVrLnJlY2xhaW0uY2xvdWQiLCJ1cy5yZWNsYWltLmNsb3VkIiwiY2gudHJlbmRob3N0aW5nLmNsb3VkIiwiZGUudHJlbmRob3N0aW5nLmNsb3VkIiwiamVsZS5jbHViIiwi''@;'; put 'put ''YW1zY29tcHV0ZS5jb20iLCJjbGlja2V0Y2xvdWQuY29tIiwiZG9wYWFzLmNvbSIsImhpZG9yYS5jb20iLCJwYWFzLmhvc3RlZC1ieS1wcmV2aWRlci5jb20iLCJyYWctY2xvdWQuaG9zdGV1ci5jb20iLCJyYWctY2xvdWQtY2guaG9zdGV1ci5jb20iLCJqY2xvdWQuaWstc2VydmVyLmNvbSIs''@;'; put 'put ''ImpjbG91ZC12ZXItanBjLmlrLXNlcnZlci5jb20iLCJkZW1vLmplbGFzdGljLmNvbSIsImtpbGF0aXJvbi5jb20iLCJwYWFzLm1hc3NpdmVncmlkLmNvbSIsImplZC53YWZhaWNsb3VkLmNvbSIsImxvbi53YWZhaWNsb3VkLmNvbSIsInJ5ZC53YWZhaWNsb3VkLmNvbSIsImouc2NhbGVmb3Jj''@;'; put 'put ''ZS5jb20uY3kiLCJqZWxhc3RpYy5kb2dhZG8uZXUiLCJmaS5jbG91ZHBsYXRmb3JtLmZpIiwiZGVtby5kYXRhY2VudGVyLmZpIiwicGFhcy5kYXRhY2VudGVyLmZpIiwiamVsZS5ob3N0IiwibWlyY2xvdWQuaG9zdCIsInBhYXMuYmVlYnl0ZS5pbyIsInNla2QxLmJlZWJ5dGVhcHAuaW8iLCJq''@;'; put 'put ''ZWxlLmlvIiwiY2xvdWQtZnIxLnVuaXNwYWNlLmlvIiwiamMubmVlbi5pdCIsImNsb3VkLmplbGFzdGljLm9wZW4udGltLml0IiwiamNsb3VkLmt6IiwidXBhYXMua2F6dGVsZXBvcnQua3oiLCJjbG91ZGppZmZ5Lm5ldCIsImZyYTEtZGUuY2xvdWRqaWZmeS5uZXQiLCJ3ZXN0MS11cy5jbG91''@;'; put 'put ''ZGppZmZ5Lm5ldCIsImpscy1zdG8xLmVsYXN0eC5uZXQiLCJqbHMtc3RvMi5lbGFzdHgubmV0IiwiamxzLXN0bzMuZWxhc3R4Lm5ldCIsImZhc3RzdGFja3MubmV0IiwiZnItMS5wYWFzLm1hc3NpdmVncmlkLm5ldCIsImxvbi0xLnBhYXMubWFzc2l2ZWdyaWQubmV0IiwibG9uLTIucGFhcy5t''@;'; put 'put ''YXNzaXZlZ3JpZC5uZXQiLCJueS0xLnBhYXMubWFzc2l2ZWdyaWQubmV0IiwibnktMi5wYWFzLm1hc3NpdmVncmlkLm5ldCIsInNnLTEucGFhcy5tYXNzaXZlZ3JpZC5uZXQiLCJqZWxhc3RpYy5zYXZlaW5jbG91ZC5uZXQiLCJub3JkZXN0ZS1pZGMuc2F2ZWluY2xvdWQubmV0Iiwiai5zY2Fs''@;'; put 'put ''ZWZvcmNlLm5ldCIsImplbGFzdGljLnRzdWthZXJ1Lm5ldCIsInNkc2Nsb3VkLnBsIiwidW5pY2xvdWQucGwiLCJtaXJjbG91ZC5ydSIsImplbGFzdGljLnJlZ3J1aG9zdGluZy5ydSIsImVuc2NhbGVkLnNnIiwiamVsZS5zaXRlIiwiamVsYXN0aWMudGVhbSIsIm9yYW5nZWNsb3VkLnRuIiwi''@;'; put 'put ''ai5sYXllcnNoaWZ0LmNvLnVrIiwicGh4LmVuc2NhbGVkLnVzIiwibWlyY2xvdWQudXMiLCJteWppbm8ucnUiLCIqLmhvc3RpbmcubXlqaW5vLnJ1IiwiKi5sYW5kaW5nLm15amluby5ydSIsIiouc3BlY3RydW0ubXlqaW5vLnJ1IiwiKi52cHMubXlqaW5vLnJ1Iiwiam90ZWx1bHUuY2xvdWQi''@;'; put 'put ''LCIqLnRyaXRvbi56b25lIiwiKi5jbnMuam95ZW50LmNvbSIsImpzLm9yZyIsImthYXMuZ2ciLCJraHBsYXkubmwiLCJrdGlzdG9yeS5jb20iLCJrYXBzaS5maSIsImtleW1hY2hpbmUuZGUiLCJraW5naG9zdC5uZXQiLCJ1bmk1Lm5ldCIsImtuaWdodHBvaW50LnN5c3RlbXMiLCJrb29iaW4u''@;'; put 'put ''ZXZlbnRzIiwib3lhLnRvIiwia3VsZXV2ZW4uY2xvdWQiLCJlenByb3h5Lmt1bGV1dmVuLmJlIiwiY28ua3JkIiwiZWR1LmtyZCIsImtyZWxsaWFuLm5ldCIsIndlYnRoaW5ncy5pbyIsImdpdC1yZXBvcy5kZSIsImxjdWJlLXNlcnZlci5kZSIsInN2bi1yZXBvcy5kZSIsImxlYWRwYWdlcy5j''@;'; put 'put ''byIsImxwYWdlcy5jbyIsImxwdXNlcmNvbnRlbnQuY29tIiwibGVsdXguc2l0ZSIsImNvLmJ1c2luZXNzIiwiY28uZWR1Y2F0aW9uIiwiY28uZXZlbnRzIiwiY28uZmluYW5jaWFsIiwiY28ubmV0d29yayIsImNvLnBsYWNlIiwiY28udGVjaG5vbG9neSIsImFwcC5sbXBtLmNvbSIsImxpbmt5''@;'; put 'put ''YXJkLmNsb3VkIiwibGlua3lhcmQtY2xvdWQuY2giLCJtZW1iZXJzLmxpbm9kZS5jb20iLCIqLm5vZGViYWxhbmNlci5saW5vZGUuY29tIiwiKi5saW5vZGVvYmplY3RzLmNvbSIsImlwLmxpbm9kZXVzZXJjb250ZW50LmNvbSIsIndlLmJzIiwiKi51c2VyLmxvY2FsY2VydC5kZXYiLCJsb2Nh''@;'; put 'put ''bHpvbmUueHl6IiwibG9naW5saW5lLmFwcCIsImxvZ2lubGluZS5kZXYiLCJsb2dpbmxpbmUuaW8iLCJsb2dpbmxpbmUuc2VydmljZXMiLCJsb2dpbmxpbmUuc2l0ZSIsInNlcnZlcnMucnVuIiwibG9obXVzLm1lIiwia3Jhc25pay5wbCIsImxlY3puYS5wbCIsImx1YmFydG93LnBsIiwibHVi''@;'; put 'put ''bGluLnBsIiwicG9uaWF0b3dhLnBsIiwic3dpZG5pay5wbCIsImdsdWcub3JnLnVrIiwibHVnLm9yZy51ayIsImx1Z3Mub3JnLnVrIiwiYmFyc3kuYmciLCJiYXJzeS5jby51ayIsImJhcnN5b25saW5lLmNvLnVrIiwiYmFyc3ljZW50ZXIuY29tIiwiYmFyc3lvbmxpbmUuY29tIiwiYmFyc3ku''@;'; put 'put ''Y2x1YiIsImJhcnN5LmRlIiwiYmFyc3kuZXUiLCJiYXJzeS5pbiIsImJhcnN5LmluZm8iLCJiYXJzeS5pbyIsImJhcnN5Lm1lIiwiYmFyc3kubWVudSIsImJhcnN5Lm1vYmkiLCJiYXJzeS5uZXQiLCJiYXJzeS5vbmxpbmUiLCJiYXJzeS5vcmciLCJiYXJzeS5wcm8iLCJiYXJzeS5wdWIiLCJi''@;'; put 'put ''YXJzeS5ybyIsImJhcnN5LnNob3AiLCJiYXJzeS5zaXRlIiwiYmFyc3kuc3VwcG9ydCIsImJhcnN5LnVrIiwiKi5tYWdlbnRvc2l0ZS5jbG91ZCIsIm1heWZpcnN0LmluZm8iLCJtYXlmaXJzdC5vcmciLCJoYi5jbGRtYWlsLnJ1IiwiY24udnUiLCJtYXplcGxheS5jb20iLCJtY3BlLm1lIiwi''@;'; put 'put ''bWNkaXIubWUiLCJtY2Rpci5ydSIsIm1jcHJlLnJ1IiwidnBzLm1jZGlyLnJ1IiwibWVkaWF0ZWNoLmJ5IiwibWVkaWF0ZWNoLmRldiIsImhyYS5oZWFsdGgiLCJtaW5pc2VydmVyLmNvbSIsIm1lbXNldC5uZXQiLCJtZXNzZXJsaS5hcHAiLCIqLmNsb3VkLm1ldGFjZW50cnVtLmN6IiwiY3Vz''@;'; put 'put ''dG9tLm1ldGFjZW50cnVtLmN6IiwiZmx0LmNsb3VkLm11bmkuY3oiLCJ1c3IuY2xvdWQubXVuaS5jeiIsIm1ldGVvcmFwcC5jb20iLCJldS5tZXRlb3JhcHAuY29tIiwiY28ucGwiLCIqLmF6dXJlY29udGFpbmVyLmlvIiwiYXp1cmV3ZWJzaXRlcy5uZXQiLCJhenVyZS1tb2JpbGUubmV0Iiwi''@;'; put 'put ''Y2xvdWRhcHAubmV0IiwiYXp1cmVzdGF0aWNhcHBzLm5ldCIsIjEuYXp1cmVzdGF0aWNhcHBzLm5ldCIsImNlbnRyYWx1cy5henVyZXN0YXRpY2FwcHMubmV0IiwiZWFzdGFzaWEuYXp1cmVzdGF0aWNhcHBzLm5ldCIsImVhc3R1czIuYXp1cmVzdGF0aWNhcHBzLm5ldCIsIndlc3RldXJvcGUu''@;'; put 'put ''YXp1cmVzdGF0aWNhcHBzLm5ldCIsIndlc3R1czIuYXp1cmVzdGF0aWNhcHBzLm5ldCIsImNzeC5jYyIsIm1pbnRlcmUuc2l0ZSIsImZvcnRlLmlkIiwibW96aWxsYS1pb3Qub3JnIiwiYm1vYXR0YWNobWVudHMub3JnIiwibmV0LnJ1Iiwib3JnLnJ1IiwicHAucnUiLCJob3N0ZWRwaS5jb20i''@;'; put 'put ''LCJjdXN0b21lci5teXRoaWMtYmVhc3RzLmNvbSIsImNhcmFjYWwubXl0aGljLWJlYXN0cy5jb20iLCJmZW50aWdlci5teXRoaWMtYmVhc3RzLmNvbSIsImx5bngubXl0aGljLWJlYXN0cy5jb20iLCJvY2Vsb3QubXl0aGljLWJlYXN0cy5jb20iLCJvbmNpbGxhLm15dGhpYy1iZWFzdHMuY29t''@;'; put 'put ''Iiwib256YS5teXRoaWMtYmVhc3RzLmNvbSIsInNwaGlueC5teXRoaWMtYmVhc3RzLmNvbSIsInZzLm15dGhpYy1iZWFzdHMuY29tIiwieC5teXRoaWMtYmVhc3RzLmNvbSIsInlhbGkubXl0aGljLWJlYXN0cy5jb20iLCJjdXN0LnJldHJvc251Yi5jby51ayIsInVpLm5hYnUuY2FzYSIsInBv''@;'; put 'put ''bnkuY2x1YiIsIm9mLmZhc2hpb24iLCJpbi5sb25kb24iLCJvZi5sb25kb24iLCJmcm9tLm1hcmtldGluZyIsIndpdGgubWFya2V0aW5nIiwiZm9yLm1lbiIsInJlcGFpci5tZW4iLCJhbmQubW9tIiwiZm9yLm1vbSIsImZvci5vbmUiLCJ1bmRlci5vbmUiLCJmb3Iuc2FsZSIsInRoYXQud2lu''@;'; put 'put ''IiwiZnJvbS53b3JrIiwidG8ud29yayIsImNsb3VkLm5vc3BhbXByb3h5LmNvbSIsIm5ldGxpZnkuYXBwIiwiNHUuY29tIiwibmdyb2suaW8iLCJuaC1zZXJ2LmNvLnVrIiwibmZzaG9zdC5jb20iLCIqLmRldmVsb3Blci5hcHAiLCJub29wLmFwcCIsIioubm9ydGhmbGFuay5hcHAiLCIqLmJ1''@;'; put 'put ''aWxkLnJ1biIsIiouY29kZS5ydW4iLCIqLmRhdGFiYXNlLnJ1biIsIioubWlncmF0aW9uLnJ1biIsIm5vdGljZWFibGUubmV3cyIsImRuc2tpbmcuY2giLCJteXBpLmNvIiwibjR0LmNvIiwiMDAxd3d3LmNvbSIsImRkbnNsaXZlLmNvbSIsIm15aXBob3N0LmNvbSIsImZvcnVtei5pbmZvIiwi''@;'; put 'put ''MTYtYi5pdCIsIjMyLWIuaXQiLCI2NC1iLml0Iiwic291bmRjYXN0Lm1lIiwidGNwNC5tZSIsImRuc3VwLm5ldCIsImhpY2FtLm5ldCIsIm5vdy1kbnMubmV0Iiwib3duaXAubmV0IiwidnBuZG5zLm5ldCIsImR5bnNlcnYub3JnIiwibm93LWRucy5vcmciLCJ4NDQzLnB3Iiwibm93LWRucy50''@;'; put 'put ''b3AiLCJudGRsbC50b3AiLCJmcmVlZGRucy51cyIsImNyYWZ0aW5nLnh5eiIsInphcHRvLnh5eiIsIm5zdXBkYXRlLmluZm8iLCJuZXJkcG9sLm92aCIsImJsb2dzeXRlLmNvbSIsImJyYXNpbGlhLm1lIiwiY2FibGUtbW9kZW0ub3JnIiwiY2lzY29mcmVhay5jb20iLCJjb2xsZWdlZmFuLm9y''@;'; put 'put ''ZyIsImNvdWNocG90YXRvZnJpZXMub3JnIiwiZGFtbnNlcnZlci5jb20iLCJkZG5zLm1lIiwiZGl0Y2h5b3VyaXAuY29tIiwiZG5zZm9yLm1lIiwiZG5zaXNraW5reS5jb20iLCJkdnJjYW0uaW5mbyIsImR5bm5zLmNvbSIsImVhdGluZy1vcmdhbmljLm5ldCIsImZhbnRhc3lsZWFndWUuY2Mi''@;'; put 'put ''LCJnZWVrZ2FsYXh5LmNvbSIsImdvbGZmYW4udXMiLCJoZWFsdGgtY2FyZXJlZm9ybS5jb20iLCJob21lc2VjdXJpdHltYWMuY29tIiwiaG9tZXNlY3VyaXR5cGMuY29tIiwiaG9wdG8ubWUiLCJpbG92ZWNvbGxlZ2UuaW5mbyIsImxvZ2ludG8ubWUiLCJtbGJmYW4ub3JnIiwibW1hZmFuLmJp''@;'; put 'put ''eiIsIm15YWN0aXZlZGlyZWN0b3J5LmNvbSIsIm15ZGlzc2VudC5uZXQiLCJteWVmZmVjdC5uZXQiLCJteW1lZGlhcGMubmV0IiwibXlwc3gubmV0IiwibXlzZWN1cml0eWNhbWVyYS5jb20iLCJteXNlY3VyaXR5Y2FtZXJhLm5ldCIsIm15c2VjdXJpdHljYW1lcmEub3JnIiwibmV0LWZyZWFr''@;'; put 'put ''cy5jb20iLCJuZmxmYW4ub3JnIiwibmhsZmFuLm5ldCIsIm5vLWlwLmNhIiwibm8taXAuY28udWsiLCJuby1pcC5uZXQiLCJub2lwLnVzIiwib250aGV3aWZpLmNvbSIsInBnYWZhbi5uZXQiLCJwb2ludDJ0aGlzLmNvbSIsInBvaW50dG8udXMiLCJwcml2YXRpemVoZWFsdGhpbnN1cmFuY2Uu''@;'; put 'put ''bmV0IiwicXVpY2tzeXRlcy5jb20iLCJyZWFkLWJvb2tzLm9yZyIsInNlY3VyaXR5dGFjdGljcy5jb20iLCJzZXJ2ZWV4Y2hhbmdlLmNvbSIsInNlcnZlaHVtb3VyLmNvbSIsInNlcnZlcDJwLmNvbSIsInNlcnZlc2FyY2FzbS5jb20iLCJzdHVmZnRvcmVhZC5jb20iLCJ1ZmNmYW4ub3JnIiwi''@;'; put 'put ''dW51c3VhbHBlcnNvbi5jb20iLCJ3b3JraXNib3JpbmcuY29tIiwiM3V0aWxpdGllcy5jb20iLCJib3VuY2VtZS5uZXQiLCJkZG5zLm5ldCIsImRkbnNraW5nLmNvbSIsImdvdGRucy5jaCIsImhvcHRvLm9yZyIsIm15ZnRwLmJpeiIsIm15ZnRwLm9yZyIsIm15dm5jLmNvbSIsIm5vLWlwLmJp''@;'; put 'put ''eiIsIm5vLWlwLmluZm8iLCJuby1pcC5vcmciLCJub2lwLm1lIiwicmVkaXJlY3RtZS5uZXQiLCJzZXJ2ZWJlZXIuY29tIiwic2VydmVibG9nLm5ldCIsInNlcnZlY291bnRlcnN0cmlrZS5jb20iLCJzZXJ2ZWZ0cC5jb20iLCJzZXJ2ZWdhbWUuY29tIiwic2VydmVoYWxmbGlmZS5jb20iLCJz''@;'; put 'put ''ZXJ2ZWh0dHAuY29tIiwic2VydmVpcmMuY29tIiwic2VydmVtaW5lY3JhZnQubmV0Iiwic2VydmVtcDMuY29tIiwic2VydmVwaWNzLmNvbSIsInNlcnZlcXVha2UuY29tIiwic3l0ZXMubmV0Iiwid2ViaG9wLm1lIiwiemFwdG8ub3JnIiwic3RhZ2Uubm9kZWFydC5pbyIsInBjbG91ZC5ob3N0''@;'; put 'put ''IiwibnljLm1uIiwic3RhdGljLm9ic2VydmFibGV1c2VyY29udGVudC5jb20iLCJjeWEuZ2ciLCJvbWcubG9sIiwiY2xvdWR5Y2x1c3Rlci5uZXQiLCJvbW5pd2Uuc2l0ZSIsInNlcnZpY2Uub25lIiwibmlkLmlvIiwib3BlbnNvY2lhbC5zaXRlIiwib3BlbmNyYWZ0Lmhvc3RpbmciLCJvcnNp''@;'; put 'put ''dGVzLmNvbSIsIm9wZXJhdW5pdGUuY29tIiwidGVjaC5vcmFuZ2UiLCJhdXRoZ2Vhci1zdGFnaW5nLmNvbSIsImF1dGhnZWFyYXBwcy5jb20iLCJza3lnZWFyYXBwLmNvbSIsIm91dHN5c3RlbXNjbG91ZC5jb20iLCIqLndlYnBhYXMub3ZoLm5ldCIsIiouaG9zdGluZy5vdmgubmV0Iiwib3du''@;'; put 'put ''cHJvdmlkZXIuY29tIiwib3duLnBtIiwiKi5vd28uY29kZXMiLCJveC5ycyIsIm95LmxjIiwicGdmb2cuY29tIiwicGFnZWZyb250YXBwLmNvbSIsInBhZ2V4bC5jb20iLCIqLnBheXdoaXJsLmNvbSIsImJhcjAubmV0IiwiYmFyMS5uZXQiLCJiYXIyLm5ldCIsInJkdi50byIsImFydC5wbCIs''@;'; put 'put ''ImdsaXdpY2UucGwiLCJrcmFrb3cucGwiLCJwb3puYW4ucGwiLCJ3cm9jLnBsIiwiemFrb3BhbmUucGwiLCJwYW50aGVvbnNpdGUuaW8iLCJnb3RwYW50aGVvbi5jb20iLCJteXBlcC5saW5rIiwicGVyc3BlY3RhLmNsb3VkIiwibGszLnJ1Iiwib24td2ViLmZyIiwiYmMucGxhdGZvcm0uc2gi''@;'; put 'put ''LCJlbnQucGxhdGZvcm0uc2giLCJldS5wbGF0Zm9ybS5zaCIsInVzLnBsYXRmb3JtLnNoIiwiKi5wbGF0Zm9ybXNoLnNpdGUiLCIqLnRzdC5zaXRlIiwicGxhdHRlci1hcHAuY29tIiwicGxhdHRlci1hcHAuZGV2IiwicGxhdHRlcnAudXMiLCJwZG5zLnBhZ2UiLCJwbGVzay5wYWdlIiwicGxl''@;'; put 'put ''c2tucy5jb20iLCJkeW41My5pbyIsIm9ucG9ydGVyLnJ1biIsImNvLmJuIiwicG9zdG1hbi1lY2hvLmNvbSIsInBzdG1uLmlvIiwibW9jay5wc3Rtbi5pbyIsImh0dHBiaW4ub3JnIiwicHJlcXVhbGlmeW1lLnRvZGF5IiwieGVuLnByZ21yLmNvbSIsInByaXYuYXQiLCJwcnZjeS5wYWdlIiwi''@;'; put 'put ''Ki5kd2ViLmxpbmsiLCJwcm90b25ldC5pbyIsImNoaXJ1cmdpZW5zLWRlbnRpc3Rlcy1lbi1mcmFuY2UuZnIiLCJieWVuLnNpdGUiLCJwdWJ0bHMub3JnIiwicHl0aG9uYW55d2hlcmUuY29tIiwiZXUucHl0aG9uYW55d2hlcmUuY29tIiwicW90by5pbyIsInF1YWxpZmlvYXBwLmNvbSIsInFi''@;'; put 'put ''dXNlci5jb20iLCJjbG91ZHNpdGUuYnVpbGRlcnMiLCJpbnN0YW5jZXMuc3Bhd24uY2MiLCJpbnN0YW50Y2xvdWQuY24iLCJyYXMucnUiLCJxYTIuY29tIiwicWN4LmlvIiwiKi5zeXMucWN4LmlvIiwiZGV2LW15cW5hcGNsb3VkLmNvbSIsImFscGhhLW15cW5hcGNsb3VkLmNvbSIsIm15cW5h''@;'; put 'put ''cGNsb3VkLmNvbSIsIioucXVpcGVsZW1lbnRzLmNvbSIsInZhcG9yLmNsb3VkIiwidmFwb3JjbG91ZC5pbyIsInJhY2ttYXplLmNvbSIsInJhY2ttYXplLm5ldCIsImcudmJycGxzYnguaW8iLCIqLm9uLWszcy5pbyIsIioub24tcmFuY2hlci5jbG91ZCIsIioub24tcmlvLmlvIiwicmVhZHRo''@;'; put 'put ''ZWRvY3MuaW8iLCJyaGNsb3VkLmNvbSIsImFwcC5yZW5kZXIuY29tIiwib25yZW5kZXIuY29tIiwicmVwbC5jbyIsImlkLnJlcGwuY28iLCJyZXBsLnJ1biIsInJlc2luZGV2aWNlLmlvIiwiZGV2aWNlcy5yZXNpbnN0YWdpbmcuaW8iLCJoemMuaW8iLCJ3ZWxsYmVpbmd6b25lLmV1Iiwid2Vs''@;'; put 'put ''bGJlaW5nem9uZS5jby51ayIsImFkaW1vLmNvLnVrIiwiaXRjb3VsZGJld29yLnNlIiwiZ2l0LXBhZ2VzLnJpdC5lZHUiLCJyb2NreS5wYWdlIiwiXHUwNDMxXHUwNDM4XHUwNDM3Llx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQzYVx1MDQzZVx1MDQzYy5cdTA0NDBcdTA0NDNcdTA0NDEiLCJc''@;'; put 'put ''dTA0M2FcdTA0NDBcdTA0NGJcdTA0M2MuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDNjXHUwNDM4XHUwNDQwLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQzY1x1MDQ0MVx1MDQzYS5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0M2VcdTA0NDBcdTA0MzMuXHUwNDQwXHUwNDQzXHUwNDQxIiwi''@;'; put 'put ''XHUwNDQxXHUwNDMwXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDMwLlx1MDQ0MFx1MDQ0M1x1MDQ0MSIsIlx1MDQ0MVx1MDQzZVx1MDQ0N1x1MDQzOC5cdTA0NDBcdTA0NDNcdTA0NDEiLCJcdTA0NDFcdTA0M2ZcdTA0MzEuXHUwNDQwXHUwNDQzXHUwNDQxIiwiXHUwNDRmLlx1MDQ0MFx1MDQ0M1x1''@;'; put 'put ''MDQ0MSIsIiouYnVpbGRlci5jb2RlLmNvbSIsIiouZGV2LWJ1aWxkZXIuY29kZS5jb20iLCIqLnN0Zy1idWlsZGVyLmNvZGUuY29tIiwic2FuZGNhdHMuaW8iLCJsb2dvaXAuZGUiLCJsb2dvaXAuY29tIiwiZnItcGFyLTEuYmFyZW1ldGFsLnNjdy5jbG91ZCIsImZyLXBhci0yLmJhcmVtZXRh''@;'; put 'put ''bC5zY3cuY2xvdWQiLCJubC1hbXMtMS5iYXJlbWV0YWwuc2N3LmNsb3VkIiwiZm5jLmZyLXBhci5zY3cuY2xvdWQiLCJmdW5jdGlvbnMuZm5jLmZyLXBhci5zY3cuY2xvdWQiLCJrOHMuZnItcGFyLnNjdy5jbG91ZCIsIm5vZGVzLms4cy5mci1wYXIuc2N3LmNsb3VkIiwiczMuZnItcGFyLnNj''@;'; put 'put ''dy5jbG91ZCIsInMzLXdlYnNpdGUuZnItcGFyLnNjdy5jbG91ZCIsIndobS5mci1wYXIuc2N3LmNsb3VkIiwicHJpdi5pbnN0YW5jZXMuc2N3LmNsb3VkIiwicHViLmluc3RhbmNlcy5zY3cuY2xvdWQiLCJrOHMuc2N3LmNsb3VkIiwiazhzLm5sLWFtcy5zY3cuY2xvdWQiLCJub2Rlcy5rOHMu''@;'; put 'put ''bmwtYW1zLnNjdy5jbG91ZCIsInMzLm5sLWFtcy5zY3cuY2xvdWQiLCJzMy13ZWJzaXRlLm5sLWFtcy5zY3cuY2xvdWQiLCJ3aG0ubmwtYW1zLnNjdy5jbG91ZCIsIms4cy5wbC13YXcuc2N3LmNsb3VkIiwibm9kZXMuazhzLnBsLXdhdy5zY3cuY2xvdWQiLCJzMy5wbC13YXcuc2N3LmNsb3Vk''@;'; put 'put ''IiwiczMtd2Vic2l0ZS5wbC13YXcuc2N3LmNsb3VkIiwic2NhbGVib29rLnNjdy5jbG91ZCIsInNtYXJ0bGFiZWxpbmcuc2N3LmNsb3VkIiwiZGVkaWJveC5mciIsInNjaG9rb2tla3MubmV0IiwiZ292LnNjb3QiLCJzZXJ2aWNlLmdvdi5zY290Iiwic2NyeXNlYy5jb20iLCJmaXJld2FsbC1n''@;'; put 'put ''YXRld2F5LmNvbSIsImZpcmV3YWxsLWdhdGV3YXkuZGUiLCJteS1nYXRld2F5LmRlIiwibXktcm91dGVyLmRlIiwic3BkbnMuZGUiLCJzcGRucy5ldSIsImZpcmV3YWxsLWdhdGV3YXkubmV0IiwibXktZmlyZXdhbGwub3JnIiwibXlmaXJld2FsbC5vcmciLCJzcGRucy5vcmciLCJzZWlkYXQu''@;'; put 'put ''bmV0Iiwic2VsbGZ5LnN0b3JlIiwic2Vuc2VlcmluZy5uZXQiLCJtaW5pc2l0ZS5tcyIsIm1hZ25ldC5wYWdlIiwiYml6LnVhIiwiY28udWEiLCJwcC51YSIsInNoaWZ0Y3J5cHRvLmRldiIsInNoaWZ0Y3J5cHRvLmlvIiwic2hpZnRlZGl0LmlvIiwibXlzaG9wYmxvY2tzLmNvbSIsIm15c2hv''@;'; put 'put ''cGlmeS5jb20iLCJzaG9waXRzaXRlLmNvbSIsInNob3B3YXJlLnN0b3JlIiwibW8tc2llbWVucy5pbyIsIjFrYXBwLmNvbSIsImFwcGNoaXppLmNvbSIsImFwcGxpbnppLmNvbSIsInNpbmFhcHAuY29tIiwidmlwc2luYWFwcC5jb20iLCJzaXRlbGVhZi5uZXQiLCJib3VudHktZnVsbC5jb20i''@;'; put 'put ''LCJhbHBoYS5ib3VudHktZnVsbC5jb20iLCJiZXRhLmJvdW50eS1mdWxsLmNvbSIsInNtYWxsLXdlYi5vcmciLCJ2cDQubWUiLCJ0cnktc25vd3Bsb3cuY29tIiwic3JodC5zaXRlIiwic3RhY2toZXJvLW5ldHdvcmsuY29tIiwibXVzaWNpYW4uaW8iLCJub3ZlY29yZS5zaXRlIiwic3RhdGlj''@;'; put 'put ''LmxhbmQiLCJkZXYuc3RhdGljLmxhbmQiLCJzaXRlcy5zdGF0aWMubGFuZCIsInN0b3JlYmFzZS5zdG9yZSIsInZwcy1ob3N0Lm5ldCIsImF0bC5qZWxhc3RpYy52cHMtaG9zdC5uZXQiLCJuanMuamVsYXN0aWMudnBzLWhvc3QubmV0IiwicmljLmplbGFzdGljLnZwcy1ob3N0Lm5ldCIsInBs''@;'; put 'put ''YXlzdGF0aW9uLWNsb3VkLmNvbSIsImFwcHMubGFpci5pbyIsIiouc3RvbG9zLmlvIiwic3BhY2VraXQuaW8iLCJjdXN0b21lci5zcGVlZHBhcnRuZXIuZGUiLCJteXNwcmVhZHNob3AuYXQiLCJteXNwcmVhZHNob3AuY29tLmF1IiwibXlzcHJlYWRzaG9wLmJlIiwibXlzcHJlYWRzaG9wLmNh''@;'; put 'put ''IiwibXlzcHJlYWRzaG9wLmNoIiwibXlzcHJlYWRzaG9wLmNvbSIsIm15c3ByZWFkc2hvcC5kZSIsIm15c3ByZWFkc2hvcC5kayIsIm15c3ByZWFkc2hvcC5lcyIsIm15c3ByZWFkc2hvcC5maSIsIm15c3ByZWFkc2hvcC5mciIsIm15c3ByZWFkc2hvcC5pZSIsIm15c3ByZWFkc2hvcC5pdCIs''@;'; put 'put ''Im15c3ByZWFkc2hvcC5uZXQiLCJteXNwcmVhZHNob3AubmwiLCJteXNwcmVhZHNob3Aubm8iLCJteXNwcmVhZHNob3AucGwiLCJteXNwcmVhZHNob3Auc2UiLCJteXNwcmVhZHNob3AuY28udWsiLCJhcGkuc3RkbGliLmNvbSIsInN0b3JqLmZhcm0iLCJ1dHdlbnRlLmlvIiwic29jLnNyY2Yu''@;'; put 'put ''bmV0IiwidXNlci5zcmNmLm5ldCIsInRlbXAtZG5zLmNvbSIsInN1cGFiYXNlLmNvIiwic3VwYWJhc2UuaW4iLCJzdXBhYmFzZS5uZXQiLCJzdS5wYWJhLnNlIiwiKi5zNXkuaW8iLCIqLnNlbnNpb3NpdGUuY2xvdWQiLCJzeW5jbG91ZC5pdCIsImRzY2xvdWQuYml6IiwiZGlyZWN0LnF1aWNr''@;'; put 'put ''Y29ubmVjdC5jbiIsImRzbXluYXMuY29tIiwiZmFtaWx5ZHMuY29tIiwiZGlza3N0YXRpb24ubWUiLCJkc2Nsb3VkLm1lIiwiaTIzNC5tZSIsIm15ZHMubWUiLCJzeW5vbG9neS5tZSIsImRzY2xvdWQubW9iaSIsImRzbXluYXMubmV0IiwiZmFtaWx5ZHMubmV0IiwiZHNteW5hcy5vcmciLCJm''@;'; put 'put ''YW1pbHlkcy5vcmciLCJ2cG5wbHVzLnRvIiwiZGlyZWN0LnF1aWNrY29ubmVjdC50byIsInRhYml0b3JkZXIuY28uaWwiLCJ0YWlmdW4tZG5zLmRlIiwiYmV0YS50YWlsc2NhbGUubmV0IiwidHMubmV0IiwiZ2RhLnBsIiwiZ2RhbnNrLnBsIiwiZ2R5bmlhLnBsIiwibWVkLnBsIiwic29wb3Qu''@;'; put 'put ''cGwiLCJzaXRlLnRiLWhvc3RpbmcuY29tIiwiZWR1Z2l0LmlvIiwiczMudGVja2lkcy5vcmciLCJ0ZWxlYml0LmFwcCIsInRlbGViaXQuaW8iLCIqLnRlbGViaXQueHl6IiwiZ3dpZGRsZS5jby51ayIsIiouZmlyZW5ldC5jaCIsIiouc3ZjLmZpcmVuZXQuY2giLCJyZXNlcnZkLmNvbSIsInRo''@;'; put 'put ''aW5nZHVzdGRhdGEuY29tIiwiY3VzdC5kZXYudGhpbmdkdXN0LmlvIiwiY3VzdC5kaXNyZWMudGhpbmdkdXN0LmlvIiwiY3VzdC5wcm9kLnRoaW5nZHVzdC5pbyIsImN1c3QudGVzdGluZy50aGluZ2R1c3QuaW8iLCJyZXNlcnZkLmRldi50aGluZ2R1c3QuaW8iLCJyZXNlcnZkLmRpc3JlYy50''@;'; put 'put ''aGluZ2R1c3QuaW8iLCJyZXNlcnZkLnRlc3RpbmcudGhpbmdkdXN0LmlvIiwidGlja2V0cy5pbyIsImFydm8ubmV0d29yayIsImF6aW11dGgubmV0d29yayIsInRsb24ubmV0d29yayIsInRvcnByb2plY3QubmV0IiwicGFnZXMudG9ycHJvamVjdC5uZXQiLCJibG94Y21zLmNvbSIsInRvd25u''@;'; put 'put ''ZXdzLXN0YWdpbmcuY29tIiwidGJpdHMubWUiLCIxMmhwLmF0IiwiMml4LmF0IiwiNGxpbWEuYXQiLCJsaW1hLWNpdHkuYXQiLCIxMmhwLmNoIiwiMml4LmNoIiwiNGxpbWEuY2giLCJsaW1hLWNpdHkuY2giLCJ0cmFmZmljcGxleC5jbG91ZCIsImRlLmNvb2wiLCIxMmhwLmRlIiwiMml4LmRl''@;'; put 'put ''IiwiNGxpbWEuZGUiLCJsaW1hLWNpdHkuZGUiLCIxMzM3LnBpY3R1cmVzIiwiY2xhbi5yaXAiLCJsaW1hLWNpdHkucm9ja3MiLCJ3ZWJzcGFjZS5yb2NrcyIsImxpbWEuem9uZSIsIioudHJhbnN1cmwuYmUiLCIqLnRyYW5zdXJsLmV1IiwiKi50cmFuc3VybC5ubCIsInNpdGUudHJhbnNpcC5t''@;'; put 'put ''ZSIsInR1eGZhbWlseS5vcmciLCJkZC1kbnMuZGUiLCJkaXNrc3RhdGlvbi5ldSIsImRpc2tzdGF0aW9uLm9yZyIsImRyYXktZG5zLmRlIiwiZHJheWRucy5kZSIsImR5bi12cG4uZGUiLCJkeW52cG4uZGUiLCJtZWluLXZpZ29yLmRlIiwibXktdmlnb3IuZGUiLCJteS13YW4uZGUiLCJzeW5v''@;'; put 'put ''LWRzLmRlIiwic3lub2xvZ3ktZGlza3N0YXRpb24uZGUiLCJzeW5vbG9neS1kcy5kZSIsInR5cGVkcmVhbS5hcHAiLCJwcm8udHlwZWZvcm0uY29tIiwidWJlci5zcGFjZSIsIioudWJlcnNwYWNlLmRlIiwiaGsuY29tIiwiaGsub3JnIiwibHRkLmhrIiwiaW5jLmhrIiwibmFtZS5wbSIsInNj''@;'; put 'put ''aC50ZiIsImJpei53ZiIsInNjaC53ZiIsIm9yZy55dCIsInZpcnR1YWx1c2VyLmRlIiwidmlydHVhbC11c2VyLmRlIiwidXBsaS5pbyIsInVyb3duLmNsb3VkIiwiZG5zdXBkYXRlLmluZm8iLCJsaWIuZGUudXMiLCIyMDM4LmlvIiwidmVyY2VsLmFwcCIsInZlcmNlbC5kZXYiLCJub3cuc2gi''@;'; put 'put ''LCJyb3V0ZXIubWFuYWdlbWVudCIsInYtaW5mby5pbmZvIiwidm9vcmxvcGVyLmNsb3VkIiwibmVrby5hbSIsIm55YWEuYW0iLCJiZS5heCIsImNhdC5heCIsImVzLmF4IiwiZXUuYXgiLCJnZy5heCIsIm1jLmF4IiwidXMuYXgiLCJ4eS5heCIsIm5sLmNpIiwieHguZ2wiLCJhcHAuZ3AiLCJi''@;'; put 'put ''bG9nLmd0IiwiZGUuZ3QiLCJ0by5ndCIsImJlLmd5IiwiY2MuaG4iLCJibG9nLmtnIiwiaW8ua2ciLCJqcC5rZyIsInR2LmtnIiwidWsua2ciLCJ1cy5rZyIsImRlLmxzIiwiYXQubWQiLCJkZS5tZCIsImpwLm1kIiwidG8ubWQiLCJpbmRpZS5wb3JuIiwidnhsLnNoIiwiY2gudGMiLCJtZS50''@;'; put 'put ''YyIsIndlLnRjIiwibnlhbi50byIsImF0LnZnIiwiYmxvZy52dSIsImRldi52dSIsIm1lLnZ1Iiwidi51YSIsIioudnVsdHJvYmplY3RzLmNvbSIsIndhZmZsZWNlbGwuY29tIiwiKi53ZWJoYXJlLmRldiIsInJlc2VydmUtb25saW5lLm5ldCIsInJlc2VydmUtb25saW5lLmNvbSIsImJvb2tv''@;'; put 'put ''bmxpbmUuYXBwIiwiaG90ZWx3aXRoZmxpZ2h0LmNvbSIsIndlZGVwbG95LmlvIiwid2VkZXBsb3kubWUiLCJ3ZWRlcGxveS5zaCIsInJlbW90ZXdkLmNvbSIsInBhZ2VzLndpYXJkd2ViLmNvbSIsIndtZmxhYnMub3JnIiwidG9vbGZvcmdlLm9yZyIsIndtY2xvdWQub3JnIiwicGFuZWwuZ2ci''@;'; put 'put ''LCJkYWVtb24ucGFuZWwuZ2ciLCJtZXNzd2l0aGRucy5jb20iLCJ3b2x0bGFiLWRlbW8uY29tIiwibXlmb3J1bS5jb21tdW5pdHkiLCJjb21tdW5pdHktcHJvLmRlIiwiZGlza3Vzc2lvbnNiZXJlaWNoLmRlIiwiY29tbXVuaXR5LXByby5uZXQiLCJtZWluZm9ydW0ubmV0IiwiYWZmaW5pdHls''@;'; put 'put ''b3R0ZXJ5Lm9yZy51ayIsInJhZmZsZWVudHJ5Lm9yZy51ayIsIndlZWtseWxvdHRlcnkub3JnLnVrIiwid3BlbmdpbmVwb3dlcmVkLmNvbSIsImpzLndwZW5naW5lcG93ZXJlZC5jb20iLCJ3aXhzaXRlLmNvbSIsImVkaXRvcnguaW8iLCJoYWxmLmhvc3QiLCJ4bmJheS5jb20iLCJ1Mi54bmJh''@;'; put 'put ''eS5jb20iLCJ1Mi1sb2NhbC54bmJheS5jb20iLCJjaXN0cm9uLm5sIiwiZGVtb24ubmwiLCJ4czRhbGwuc3BhY2UiLCJ5YW5kZXhjbG91ZC5uZXQiLCJzdG9yYWdlLnlhbmRleGNsb3VkLm5ldCIsIndlYnNpdGUueWFuZGV4Y2xvdWQubmV0Iiwib2ZmaWNpYWwuYWNhZGVteSIsInlvbGFzaXRl''@;'; put 'put ''LmNvbSIsInliby5mYWl0aCIsInlvbWJvLm1lIiwiaG9tZWxpbmsub25lIiwieWJvLnBhcnR5IiwieWJvLnJldmlldyIsInliby5zY2llbmNlIiwieWJvLnRyYWRlIiwieW5oLmZyIiwibm9ob3N0Lm1lIiwibm9oby5zdCIsInphLm5ldCIsInphLm9yZyIsImJzcy5kZXNpZ24iLCJiYXNpY3Nl''@;'; put 'put ''cnZlci5pbyIsInZpcnR1YWxzZXJ2ZXIuaW8iLCJlbnRlcnByaXNlY2xvdWQubnUiXScpfX0sbT17fTtmdW5jdGlvbiBzZShNKXt2YXIgTz1tW01dO2lmKHZvaWQgMCE9PU8pcmV0dXJuIE8uZXhwb3J0czt2YXIgST1tW01dPXtpZDpNLGxvYWRlZDohMSxleHBvcnRzOnt9fTtyZXR1cm4geFtN''@;'; put 'put ''XS5jYWxsKEkuZXhwb3J0cyxJLEkuZXhwb3J0cyxzZSksSS5sb2FkZWQ9ITAsSS5leHBvcnRzfXJldHVybiBzZS5kPShNLE8pPT57Zm9yKHZhciBJIGluIE8pc2UubyhPLEkpJiYhc2UubyhNLEkpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxJLHtlbnVtZXJhYmxlOiEwLGdldDpPW0ldfSl9''@;'; put 'put ''LHNlLmc9ZnVuY3Rpb24oKXtpZigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaHtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxz''@;'; put 'put ''ZS5vPShNLE8pPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoTSxPKSxzZS5yPU09Pnt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoTSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2Jq''@;'; put 'put ''ZWN0LmRlZmluZVByb3BlcnR5KE0sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxzZS5ubWQ9TT0+KE0ucGF0aHM9W10sTS5jaGlsZHJlbnx8KE0uY2hpbGRyZW49W10pLE0pLHNlKDM2MDcpfSkoKX0sNTk0ODpmdW5jdGlvbihRZSxNZSxSKXsidXNlIHN0cmljdCI7dmFyIG9lPXRoaXMmJnRo''@;'; put 'put ''aXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihJKXtyZXR1cm4gSSYmSS5fX2VzTW9kdWxlP0k6e2RlZmF1bHQ6SX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksTWUuaXNTcGVjaWFsTWlzc2luZz1NZS5jaG9pY2VWYWxpZGF0b3I9TWUuY29u''@;'; put 'put ''ZmlybWF0aW9uVmFsaWRhdG9yPU1lLnVybFZhbGlkYXRvcj12b2lkIDA7dmFyIHg9b2UoUigxMjk1NCkpO01lLnVybFZhbGlkYXRvcj1mdW5jdGlvbihJLGope3JldHVybiEheC5kZWZhdWx0LmlzSHR0cFVyaShJKXx8ISF4LmRlZmF1bHQuaXNIdHRwc1VyaShJKXx8IiI9PT1JfHxqfSxNZS5j''@;'; put 'put ''b25maXJtYXRpb25WYWxpZGF0b3I9ZnVuY3Rpb24oSSl7cmV0dXJuITA9PT1JfHwhMT09PUl9LE1lLmNob2ljZVZhbGlkYXRvcj1mdW5jdGlvbihJLGosRyl7cmV0dXJuIEk+MCYmSTw9anx8R30sTWUuaXNTcGVjaWFsTWlzc2luZz1mdW5jdGlvbihJKXtyZXR1cm4oInN0cmluZyIhPXR5cGVv''@;'; put 'put ''ZiBJfHwhSS5pbmNsdWRlcygiLi4iKSkmJm5ldyBSZWdFeHAoIl4oXFwuKT9bYS16Xy5dezF9JCIsImkiKS50ZXN0KEkpfX0sMTMyNDc6KFFlLE1lKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgeDtNZS5ZPXZvaWQgMCwoeD1NZS5ZfHwoTWUuWT17fSkpLlNhc1ZpeWE9IlNBU1ZJWUEiLHguU2FzOT0i''@;'; put 'put ''U0FTOSIseC5TYXNqcz0iU0FTSlMifSwyNTAwMTooUWUsTWUpPT57InVzZSBzdHJpY3QiO01lLkM9dm9pZCAwLE1lLkM9ZnVuY3Rpb24oeCxtLHNlKXtpZih2b2lkIDA9PT1tJiYobT0xKSx2b2lkIDA9PT1zZSYmKHNlPTEwOTk1MTE2Mjc3NzYpLDA9PT14KXJldHVybiIwIEIiO3g9eD5zZT9z''@;'; put 'put ''ZTp4O3ZhciBJPW08MD8wOm0saj1NYXRoLmZsb29yKE1hdGgubG9nKHgpL01hdGgubG9nKDEwMjQpKTtyZXR1cm4oeC9NYXRoLnBvdygxMDI0LGopKS50b0ZpeGVkKEkpKyIgIitbIkIiLCJLQiIsIk1CIiwiR0IiLCJUQiJdW2pdfX0sNDI5MjQ6ZnVuY3Rpb24oUWUpe3ZhciBNZT17dmVyc2lv''@;'; put 'put ''bjoiMS4xNS4wIn07TWVbNDM3XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYn''@;'; put 'put ''KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZc''@;'; put 'put ''eGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGEyXHhhM1x4YTVcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFceGFhXHhiYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1''@;'; put 'put ''NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRc''@;'; put 'put ''dTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1''@;'; put 'put ''MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0p''@;'; put 'put ''LG9lW21dPVIuY2hhckF0KG0pO3JldHVybntlbmM6eCxkZWM6b2V9fSgpLE1lWzYyMF09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4''@;'; put 'put ''MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHUwMTA1XHhlN1x4ZWFceGVi''@;'; put 'put ''XHhlOFx4ZWZceGVlXHUwMTA3XHhjNFx1MDEwNFx1MDExOFx1MDExOVx1MDE0Mlx4ZjRceGY2XHUwMTA2XHhmYlx4ZjlcdTAxNWFceGQ2XHhkY1x4YTJcdTAxNDFceGE1XHUwMTViXHUwMTkyXHUwMTc5XHUwMTdiXHhmM1x4ZDNcdTAxNDRcdTAxNDNcdTAxN2FcdTAxN2NceGJmXHUyMzEwXHhh''@;'; put 'put ''Y1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVm''@;'; put 'put ''XHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNj''@;'; put 'put ''MFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLG9lPVtdLHg9''@;'; put 'put ''e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVs3MzddPWZ1bmN0aW9uKCl7Zm9yKHZhciBSPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdc''@;'; put 'put ''Ylx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5v''@;'; put 'put ''cHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1''@;'; put 'put ''MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjMlx1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUw''@;'; put 'put ''Mlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1''@;'; put 'put ''MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNjOVx1MDNhY1x1MDNhZFx1MDNhZVx1MDNjYVx1MDNhZlx1MDNjY1x1MDNjZFx1MDNjYlx1MDNjZVx1MDM4''@;'; put 'put ''Nlx1MDM4OFx1MDM4OVx1MDM4YVx1MDM4Y1x1MDM4ZVx1MDM4Zlx4YjFcdTIyNjVcdTIyNjRcdTAzYWFcdTAzYWJceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9PVIuY2hhckNvZGVBdCht''@;'; put 'put ''KSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hhckF0KG0pO3JldHVybntlbmM6eCxkZWM6b2V9fSgpLE1lWzg1MF09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRc''@;'; put 'put ''eDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRc''@;'; put 'put ''eGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4YWVceGFjXHhiZFx4YmNceGEx''@;'; put 'put ''XHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2''@;'; put 'put ''MFx1MjU1MFx1MjU2Y1x4YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MDEzMVx4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIx''@;'; put 'put ''XHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRl''@;'; put 'put ''YzpvZX19KCksTWVbODUyXT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkq''@;'; put 'put ''KywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM3XHhmY1x4ZTlceGUyXHhlNFx1MDE2Zlx1MDEwN1x4ZTdcdTAxNDJceGViXHUwMTUwXHUwMTUxXHhlZVx1MDE3OVx4YzRcdTAx''@;'; put 'put ''MDZceGM5XHUwMTM5XHUwMTNhXHhmNFx4ZjZcdTAxM2RcdTAxM2VcdTAxNWFcdTAxNWJceGQ2XHhkY1x1MDE2NFx1MDE2NVx1MDE0MVx4ZDdcdTAxMGRceGUxXHhlZFx4ZjNceGZhXHUwMTA0XHUwMTA1XHUwMTdkXHUwMTdlXHUwMTE4XHUwMTE5XHhhY1x1MDE3YVx1MDEwY1x1MDE1Zlx4YWJc''@;'; put 'put ''eGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHhjMVx4YzJcdTAxMWFcdTAxNWVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAxN2JcdTAxN2NcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAxMDJcdTAxMDNcdTI1NWFcdTI1NTRcdTI1NjlcdTI1''@;'; put 'put ''NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwMTExXHUwMTEwXHUwMTBlXHhjYlx1MDEwZlx1MDE0N1x4Y2RceGNlXHUwMTFiXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwMTYyXHUwMTZlXHUyNTgwXHhkM1x4ZGZceGQ0XHUwMTQzXHUwMTQ0XHUwMTQ4XHUwMTYwXHUwMTYxXHUwMTU0XHhk''@;'; put 'put ''YVx1MDE1NVx1MDE3MFx4ZmRceGRkXHUwMTYzXHhiNFx4YWRcdTAyZGRcdTAyZGJcdTAyYzdcdTAyZDhceGE3XHhmN1x4YjhceGIwXHhhOFx1MDJkOVx1MDE3MVx1MDE1OFx1MDE1OVx1MjVhMFx4YTAiLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkm''@;'; put 'put ''Jih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVs4NTddPWZ1bmN0aW9uKCl7Zm9yKHZhciBSPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgx''@;'; put 'put ''NVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhl''@;'; put 'put ''MFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTAxMzFceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHUwMTMwXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTAxNWVcdTAxNWZceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFcdTAxMWVcdTAxMWZceGJmXHhhZVx4YWNceGJk''@;'; put 'put ''XHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUy''@;'; put 'put ''NTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4YmFceGFhXHhjYVx4Y2JceGM4XHVmZmZkXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHVmZmZkXHhkN1x4ZGFceGRiXHhkOVx4ZWNceGZmXHhhZlx4''@;'; put 'put ''YjRceGFkXHhiMVx1ZmZmZFx4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hhckF0KG0pO3JldHVy''@;'; put 'put ''bntlbmM6eCxkZWM6b2V9fSgpLE1lWzg2MV09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAh''@;'; put 'put ''XCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGQwXHhmMFx4ZGVceGM0XHhjNVx4''@;'; put 'put ''YzlceGU2XHhjNlx4ZjRceGY2XHhmZVx4ZmJceGRkXHhmZFx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4YzFceGNkXHhkM1x4ZGFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUy''@;'; put 'put ''NTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4''@;'; put 'put ''XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVc''@;'; put 'put ''dTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAiLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0''@;'; put 'put ''KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVs4NjVdPWZ1bmN0aW9uKCl7Zm9yKHZhciBSPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgx''@;'; put 'put ''OFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhl''@;'; put 'put ''YVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2XHhkY1x4ZjhceGEzXHhkOFx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhhNFx1''@;'; put 'put ''MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2''@;'; put 'put ''Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0''@;'; put 'put ''XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMz''@;'; put 'put ''IT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbODY2XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEw''@;'; put 'put ''XHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTA0''@;'; put 'put ''MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJc''@;'; put 'put ''dTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1''@;'; put 'put ''NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVc''@;'; put 'put ''dTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0''@;'; put 'put ''NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MGVcdTA0NWVceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjExNlx4YTRcdTI1YTBceGEwIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09''@;'; put 'put ''bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbODc0XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5''@;'; put 'put ''XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMjZcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRceGEwXHUwZTAxXHUw''@;'; put 'put ''ZTAyXHUwZTAzXHUwZTA0XHUwZTA1XHUwZTA2XHUwZTA3XHUwZTA4XHUwZTA5XHUwZTBhXHUwZTBiXHUwZTBjXHUwZTBkXHUwZTBlXHUwZTBmXHUwZTEwXHUwZTExXHUwZTEyXHUwZTEzXHUwZTE0XHUwZTE1XHUwZTE2XHUwZTE3XHUwZTE4XHUwZTE5XHUwZTFhXHUwZTFiXHUwZTFjXHUwZTFk''@;'; put 'put ''XHUwZTFlXHUwZTFmXHUwZTIwXHUwZTIxXHUwZTIyXHUwZTIzXHUwZTI0XHUwZTI1XHUwZTI2XHUwZTI3XHUwZTI4XHUwZTI5XHUwZTJhXHUwZTJiXHUwZTJjXHUwZTJkXHUwZTJlXHUwZTJmXHUwZTMwXHUwZTMxXHUwZTMyXHUwZTMzXHUwZTM0XHUwZTM1XHUwZTM2XHUwZTM3XHUwZTM4XHUw''@;'; put 'put ''ZTM5XHUwZTNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwZTNmXHUwZTQwXHUwZTQxXHUwZTQyXHUwZTQzXHUwZTQ0XHUwZTQ1XHUwZTQ2XHUwZTQ3XHUwZTQ4XHUwZTQ5XHUwZTRhXHUwZTRiXHUwZTRjXHUwZTRkXHUwZTRlXHUwZTRmXHUwZTUwXHUwZTUxXHUwZTUyXHUwZTUzXHUwZTU0''@;'; put 'put ''XHUwZTU1XHUwZTU2XHUwZTU3XHUwZTU4XHUwZTU5XHUwZTVhXHUwZTViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2Vu''@;'; put 'put ''Yzp4LGRlYzpvZX19KCksTWVbODk1XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMk''@;'; put 'put ''JSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTAxMGNceGZjXHhlOVx1MDEwZlx4ZTRcdTAxMGVcdTAxNjRcdTAxMGRcdTAxMWJcdTAxMWFcdTAxMzlceGNkXHUwMTNl''@;'; put 'put ''XHUwMWVhXHhjNFx4YzFceGM5XHUwMTdlXHUwMTdkXHhmNFx4ZjZceGQzXHUwMTZmXHhkYVx4ZmRceGQ2XHhkY1x1MDE2MFx1MDEzZFx4ZGRcdTAxNThcdTAxNjVceGUxXHhlZFx4ZjNceGZhXHUwMTQ4XHUwMTQ3XHUwMTZlXHhkNFx1MDE2MVx1MDE1OVx1MDE1NVx1MDE1NFx4YmNceGE3XHhh''@;'; put 'put ''Ylx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1''@;'; put 'put ''NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhi''@;'; put 'put ''NVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysr''@;'; put 'put ''bSk2NTUzMyE9PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hhckF0KG0pO3JldHVybntlbmM6eCxkZWM6b2V9fSgpLE1lWzkzMl09ZnVuY3Rpb24oKXt2YXIgbSxSPVtdLG9lPXt9LHg9W107Zm9yKHhbMF09IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2''@;'; put 'put ''XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlq''@;'; put 'put ''a2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjYxXHVmZjYyXHVmZjYzXHVmZjY0XHVmZjY1XHVmZjY2XHVmZjY3XHVmZjY4XHVmZjY5XHVmZjZhXHVmZjZiXHVmZjZjXHVmZjZkXHVmZjZlXHVmZjZmXHVmZjcwXHVmZjcxXHVmZjcy''@;'; put 'put ''XHVmZjczXHVmZjc0XHVmZjc1XHVmZjc2XHVmZjc3XHVmZjc4XHVmZjc5XHVmZjdhXHVmZjdiXHVmZjdjXHVmZjdkXHVmZjdlXHVmZjdmXHVmZjgwXHVmZjgxXHVmZjgyXHVmZjgzXHVmZjg0XHVmZjg1XHVmZjg2XHVmZjg3XHVmZjg4XHVmZjg5XHVmZjhhXHVmZjhiXHVmZjhjXHVmZjhkXHVm''@;'; put 'put ''ZjhlXHVmZjhmXHVmZjkwXHVmZjkxXHVmZjkyXHVmZjkzXHVmZjk0XHVmZjk1XHVmZjk2XHVmZjk3XHVmZjk4XHVmZjk5XHVmZjlhXHVmZjliXHVmZjljXHVmZjlkXHVmZjllXHVmZjlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMF0ubGVuZ3RoOysr''@;'; put 'put ''bSk2NTUzMyE9PXhbMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMF1bbV1dPTArbSxSWzArbV09eFswXVttXSk7Zm9yKHhbMTI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUz''@;'; put 'put ''MGZiXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIy''@;'; put 'put ''MjVcdWZmNWNcdTIwMjZcdTIwMjVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDhcdTMwMDlcdTMwMGFcdTMwMGJcdTMwMGNcdTMwMGRcdTMwMGVcdTMwMGZcdTMwMTBcdTMwMTFcdWZmMGJcdWZmMGRc''@;'; put 'put ''eGIxXHhkN1x1ZmZmZFx4ZjdcdWZmMWRcdTIyNjBcdWZmMWNcdWZmMWVcdTIyNjZcdTIyNjdcdTIyMWVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHVmZmU1XHVmZjA0XHVmZmUwXHVmZmUxXHVmZjA1XHVmZjAzXHVmZjA2XHVmZjBhXHVmZjIwXHhhN1x1MjYwNlx1''@;'; put 'put ''MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjAzYlx1MzAxMlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyN1x1MjIyOFx1ZmZlMlx1MjFkMlx1MjFkNFx1MjIwMFx1MjIwM1x1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIyY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjEyYlx1MjAzMFx1MjY2Zlx1MjY2ZFx1MjY2YVx1MjAyMFx1MjAyMVx4YjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1ZWZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMjldLmxlbmd0aDsrK20pNjU1MzMhPT14WzEyOV1b''@;'; put 'put ''bV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTI5XVttXV09MzMwMjQrbSxSWzMzMDI0K21dPXhbMTI5XVttXSk7Zm9yKHhbMTMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjIxXHVm''@;'; put 'put ''ZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVmZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVm''@;'; put 'put ''ZjU4XHVmZjU5XHVmZjVhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUzMDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1''@;'; put 'put ''XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZiXHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUz''@;'; put 'put ''MDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUzMDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhj''@;'; put 'put ''XHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTMwXS5sZW5ndGg7KyttKTY1''@;'; put 'put ''NTMzIT09eFsxMzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzMF1bbV1dPTMzMjgwK20sUlszMzI4MCttXT14WzEzMF1bbV0pO2Zvcih4WzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBh''@;'; put 'put ''NFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1''@;'; put 'put ''MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBjOVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBk''@;'; put 'put ''Ylx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1ZmZmZFx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1''@;'; put 'put ''MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNh''@;'; put 'put ''NFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1''@;'; put 'put ''MDNiZlx1MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzMV0u''@;'; put 'put ''bGVuZ3RoOysrbSk2NTUzMyE9PXhbMTMxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzFdW21dXT0zMzUzNittLFJbMzM1MzYrbV09eFsxMzFdW21dKTtmb3IoeFsxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MTBcdTA0''@;'; put 'put ''MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MDFcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJc''@;'; put 'put ''dTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0NTFcdTA0MzZcdTA0''@;'; put 'put ''MzdcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdWZmZmRcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1''@;'; put 'put ''MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxt''@;'; put 'put ''PTA7bSE9eFsxMzJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTMyXVttXV09MzM3OTIrbSxSWzMzNzkyK21dPXhbMTMyXVttXSk7Zm9yKHhbMTM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHUyNDYwXHUyNDYxXHUyNDYyXHUyNDYzXHUyNDY0XHUyNDY1XHUyNDY2XHUyNDY3XHUyNDY4XHUyNDY5XHUyNDZhXHUyNDZiXHUyNDZjXHUyNDZkXHUyNDZlXHUyNDZmXHUyNDcwXHUyNDcxXHUyNDcyXHUyNDczXHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2''@;'; put 'put ''XHUyMTY3XHUyMTY4XHUyMTY5XHVmZmZkXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUzMzM2XHUzMzUxXHUzMzU3XHUzMzBkXHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUzMzllXHUzMzhlXHUzMzhmXHUzM2M0XHUzM2ExXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMzdiXHVmZmZkXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUzMmE0XHUzMmE1XHUzMmE2XHUzMmE3XHUzMmE4XHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYx''@;'; put 'put ''XHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksbT0wO20hPXhbMTM1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzNV1bbV1dPTM0NTYwK20sUlszNDU2MCttXT14WzEzNV1bbV0pO2Zvcih4WzEzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU5Y1x1NTUxNlx1NWEwM1x1OTYzZlx1NTRjMFx1NjExYlx1NjMyOFx1NTlmNlx1OTAyMlx1ODQ3NVx1ODMxY1x1N2E1MFx1''@;'; put 'put ''NjBhYVx1NjNlMVx1NmUyNVx1NjVlZFx1ODQ2Nlx1ODJhNlx1OWJmNVx1Njg5M1x1NTcyN1x1NjVhMVx1NjI3MVx1NWI5Ylx1NTlkMFx1ODY3Ylx1OThmNFx1N2Q2Mlx1N2RiZVx1OWI4ZVx1NjIxNlx1N2M5Zlx1ODhiN1x1NWI4OVx1NWViNVx1NjMwOVx1NjY5N1x1Njg0OFx1OTVjN1x1OTc4''@;'; put 'put ''ZFx1Njc0Zlx1NGVlNVx1NGYwYVx1NGY0ZFx1NGY5ZFx1NTA0OVx1NTZmMlx1NTkzN1x1NTlkNFx1NWEwMVx1NWMwOVx1NjBkZlx1NjEwZlx1NjE3MFx1NjYxM1x1NjkwNVx1NzBiYVx1NzU0Zlx1NzU3MFx1NzlmYlx1N2RhZFx1N2RlZlx1ODBjM1x1ODQwZVx1ODg2M1x1OGIwMlx1OTA1NVx1''@;'; put 'put ''OTA3YVx1NTMzYlx1NGU5NVx1NGVhNVx1NTdkZlx1ODBiMlx1OTBjMVx1NzhlZlx1NGUwMFx1NThmMVx1NmVhMlx1OTAzOFx1N2EzMlx1ODMyOFx1ODI4Ylx1OWMyZlx1NTE0MVx1NTM3MFx1NTRiZFx1NTRlMVx1NTZlMFx1NTlmYlx1NWYxNVx1OThmMlx1NmRlYlx1ODBlNFx1ODUyZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzZdW21dXT0zNDgxNittLFJbMzQ4MTYrbV09eFsxMzZdW21dKTtmb3IoeFsxMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJcdTU0MGJcdTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJcdTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTlj''@;'; put 'put ''M2JcdTU5ZTVcdTUzYTlcdTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2ZjJcdTgzNGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVmNzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJc''@;'; put 'put ''dThhNjBcdTkyZWRcdTZkYjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFcdTk1YjJcdTY5OGVcdTUzYWRcdTUxODZcdWZmZmRcdTU3MTJcdTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcx''@;'; put 'put ''ZDVcdTczM2ZcdTdlMDFcdTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlkMWJcdTU4NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5NjVcdTVmODBcdTVmZGNcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNcdTlkMGVc''@;'; put 'put ''dTllYzRcdTVjYTFcdTZjOTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZcdTY4NzZcdTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlcdTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2MDlcdTU5''@;'; put 'put ''MGZcdTVhYzFcdTViYjZcdTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZiNGNcdTZjYjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdiODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZcdTkwNGVc''@;'; put 'put ''dTk3MWVcdTg2OGFcdTRmYzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVcdTgyYmRcdTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2JcdTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYyMTJcdTYy''@;'; put 'put ''ZDBcdTY1MzlcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzddLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzN11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTM3XVttXV09MzUwNzIrbSxSWzM1MDcyK21dPXhbMTM3XVttXSk7Zm9yKHhbMTM4XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1MmJlXHU1OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2''@;'; put 'put ''OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNjXHU2ODM4XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlh''@;'; put 'put ''XHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiXHVmZmZkXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4''@;'; put 'put ''NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxXHU3Y2E1XHU1MjA4XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQy''@;'; put 'put ''XHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2OGZhXHU2YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3''@;'; put 'put ''NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEyXHU5NjY1XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4''@;'; put 'put ''XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1YzkwXHU1ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2''@;'; put 'put ''NWUyXHU2NzFmXHU2OGNiXHU2OGM0XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTM4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzOF1bbV1dPTM1MzI4K20sUlszNTMyOCttXT14WzEzOF1bbV0pO2Zvcih4WzEzOV09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmE1Zlx1NWUzMFx1NmJjNVx1NmMxN1x1NmM3ZFx1NzU3Zlx1Nzk0OFx1NWI2M1x1N2EwMFx1N2QwMFx1NWZiZFx1ODk4Zlx1OGExOFx1OGNiNFx1OGQ3N1x1OGVjY1x1OGYxZFx1OThlMlx1''@;'; put 'put ''OWEwZVx1OWIzY1x1NGU4MFx1NTA3ZFx1NTEwMFx1NTk5M1x1NWI5Y1x1NjIyZlx1NjI4MFx1NjRlY1x1NmIzYVx1NzJhMFx1NzU5MVx1Nzk0N1x1N2ZhOVx1ODdmYlx1OGFiY1x1OGI3MFx1NjNhY1x1ODNjYVx1OTdhMFx1NTQwOVx1NTQwM1x1NTVhYlx1Njg1NFx1NmE1OFx1OGE3MFx1Nzgy''@;'; put 'put ''N1x1Njc3NVx1OWVjZFx1NTM3NFx1NWJhMlx1ODExYVx1ODY1MFx1OTAwNlx1NGUxOFx1NGU0NVx1NGVjN1x1NGYxMVx1NTNjYVx1NTQzOFx1NWJhZVx1NWYxM1x1NjAyNVx1NjU1MVx1ZmZmZFx1NjczZFx1NmM0Mlx1NmM3Mlx1NmNlM1x1NzA3OFx1NzQwM1x1N2E3Nlx1N2FhZVx1N2IwOFx1''@;'; put 'put ''N2QxYVx1N2NmZVx1N2Q2Nlx1NjVlN1x1NzI1Ylx1NTNiYlx1NWM0NVx1NWRlOFx1NjJkMlx1NjJlMFx1NjMxOVx1NmUyMFx1ODY1YVx1OGEzMVx1OGRkZFx1OTJmOFx1NmYwMVx1NzlhNlx1OWI1YVx1NGVhOFx1NGVhYlx1NGVhY1x1NGY5Ylx1NGZhMFx1NTBkMVx1NTE0N1x1N2FmNlx1NTE3''@;'; put 'put ''MVx1NTFmNlx1NTM1NFx1NTMyMVx1NTM3Zlx1NTNlYlx1NTVhY1x1NTg4M1x1NWNlMVx1NWYzN1x1NWY0YVx1NjAyZlx1NjA1MFx1NjA2ZFx1NjMxZlx1NjU1OVx1NmE0Ylx1NmNjMVx1NzJjMlx1NzJlZFx1NzdlZlx1ODBmOFx1ODEwNVx1ODIwOFx1ODU0ZVx1OTBmN1x1OTNlMVx1OTdmZlx1''@;'; put 'put ''OTk1N1x1OWE1YVx1NGVmMFx1NTFkZFx1NWMyZFx1NjY4MVx1Njk2ZFx1NWM0MFx1NjZmMlx1Njk3NVx1NzM4OVx1Njg1MFx1N2M4MVx1NTBjNVx1NTJlNFx1NTc0N1x1NWRmZVx1OTMyNlx1NjVhNFx1NmIyM1x1NmIzZFx1NzQzNFx1Nzk4MVx1NzliZFx1N2I0Ylx1N2RjYVx1ODJiOVx1ODNj''@;'; put 'put ''Y1x1ODg3Zlx1ODk1Zlx1OGIzOVx1OGZkMVx1OTFkMVx1NTQxZlx1OTI4MFx1NGU1ZFx1NTAzNlx1NTNlNVx1NTMzYVx1NzJkN1x1NzM5Nlx1NzdlOVx1ODJlNlx1OGVhZlx1OTljNlx1OTljOFx1OTlkMlx1NTE3N1x1NjExYVx1ODY1ZVx1NTViMFx1N2E3YVx1NTA3Nlx1NWJkM1x1OTA0N1x1''@;'; put 'put ''OTY4NVx1NGUzMlx1NmFkYlx1OTFlN1x1NWM1MVx1NWM0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzldW21dXT0zNTU4NCttLFJbMzU1ODQrbV09eFsxMzldW21d''@;'; put 'put ''KTtmb3IoeFsxNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzOThcdTdhOWZcdTZjOTNcdTk3NzRcdThmNjFcdTdhYWFcdTcxOGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJc''@;'; put 'put ''dThhMTNcdTdmYTRcdThlY2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJcdTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJcdTU5NTFcdTVmNjJcdTVmODRcdTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZl''@;'; put 'put ''MTNcdTc1NjZcdTdhM2RcdTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgzMGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4MWFcdTlkOGZcdTgyYjhcdThmY2VcdTliZThcdWZmZmRcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFc''@;'; put 'put ''dTZiMjBcdTZjN2FcdTZmNTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZcdTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNcdTU1YTdcdTU3MGZcdTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzJcdTY5MWNcdTZhMjlcdTcyN2RcdTcy''@;'; put 'put ''YWNcdTczMmVcdTc4MTRcdTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlhMTNcdTllNzhcdTUxNDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdc''@;'; put 'put ''dThhMDBcdThhZmFcdTk2NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2NcdTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVcdTY3YWZcdTZlNTZcdTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2''@;'; put 'put ''YzdcdTk4NjdcdTlmMTNcdTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0NWFcdTc4ODFcdThhOWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZc''@;'; put 'put ''dTUxNDlcdTUxNmNcdTUyOWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNcdTU0MTFcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQwXVttXV09MzU4NDArbSxSWzM1ODQw''@;'; put 'put ''K21dPXhbMTQwXVttXSk7Zm9yKHhbMTQxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlh''@;'; put 'put ''XHU1ZWI3XHU1ZjE4XHU2MDUyXHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3''@;'; put 'put ''ZDVlXHU3ZGIxXHU4MDE1XHU4MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkXHVmZmZkXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjVi''@;'; put 'put ''XHU1MmFiXHU1M2Y3XHU1NDA4XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjXHU2YjY0XHU5''@;'; put 'put ''ODAzXHU0ZWNhXHU1NmYwXHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAy''@;'; put 'put ''XHU4YTUwXHU5Mzk2XHU4OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3''@;'; put 'put ''ZDMwXHU4M2RjXHU4OGMxXHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1''@;'; put 'put ''XHU3YTg0XHU3YjU2XHU3ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0MV1bbV1dPTM2''@;'; put 'put ''MDk2K20sUlszNjA5NittXT14WzE0MV1bbV0pO2Zvcih4WzE0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJkZlx1NjJmNlx1NjRhZVx1NjRlNlx1NjcyZFx1NmJiYVx1ODVhOVx1OTZkMVx1NzY5MFx1OWJkNlx1NjM0Y1x1OTMw''@;'; put 'put ''Nlx1OWJhYlx1NzZiZlx1NjY1Mlx1NGUwOVx1NTA5OFx1NTNjMlx1NWM3MVx1NjBlOFx1NjQ5Mlx1NjU2M1x1Njg1Zlx1NzFlNlx1NzNjYVx1NzUyM1x1N2I5N1x1N2U4Mlx1ODY5NVx1OGI4M1x1OGNkYlx1OTE3OFx1OTkxMFx1NjVhY1x1NjZhYlx1NmI4Ylx1NGVkNVx1NGVkNFx1NGYzYVx1''@;'; put 'put ''NGY3Zlx1NTIzYVx1NTNmOFx1NTNmMlx1NTVlM1x1NTZkYlx1NThlYlx1NTljYlx1NTljOVx1NTlmZlx1NWI1MFx1NWM0ZFx1NWUwMlx1NWUyYlx1NWZkN1x1NjAxZFx1NjMwN1x1NjUyZlx1NWI1Y1x1NjVhZlx1NjViZFx1NjVlOFx1Njc5ZFx1NmI2Mlx1ZmZmZFx1NmI3Ylx1NmMwZlx1NzM0''@;'; put 'put ''NVx1Nzk0OVx1NzljMVx1N2NmOFx1N2QxOVx1N2QyYlx1ODBhMlx1ODEwMlx1ODFmM1x1ODk5Nlx1OGE1ZVx1OGE2OVx1OGE2Nlx1OGE4Y1x1OGFlZVx1OGNjN1x1OGNkY1x1OTZjY1x1OThmY1x1NmI2Zlx1NGU4Ylx1NGYzY1x1NGY4ZFx1NTE1MFx1NWI1N1x1NWJmYVx1NjE0OFx1NjMwMVx1''@;'; put 'put ''NjY0Mlx1NmIyMVx1NmVjYlx1NmNiYlx1NzIzZVx1NzRiZFx1NzVkNFx1NzhjMVx1NzkzYVx1ODAwY1x1ODAzM1x1ODFlYVx1ODQ5NFx1OGY5ZVx1NmM1MFx1OWU3Zlx1NWYwZlx1OGI1OFx1OWQyYlx1N2FmYVx1OGVmOFx1NWI4ZFx1OTZlYlx1NGUwM1x1NTNmMVx1NTdmN1x1NTkzMVx1NWFj''@;'; put 'put ''OVx1NWJhNFx1NjA4OVx1NmU3Zlx1NmYwNlx1NzViZVx1OGNlYVx1NWI5Zlx1ODUwMFx1N2JlMFx1NTA3Mlx1NjdmNFx1ODI5ZFx1NWM2MVx1ODU0YVx1N2UxZVx1ODIwZVx1NTE5OVx1NWMwNFx1NjM2OFx1OGQ2Nlx1NjU5Y1x1NzE2ZVx1NzkzZVx1N2QxN1x1ODAwNVx1OGIxZFx1OGVjYVx1''@;'; put 'put ''OTA2ZVx1ODZjN1x1OTBhYVx1NTAxZlx1NTJmYVx1NWMzYVx1Njc1M1x1NzA3Y1x1NzIzNVx1OTE0Y1x1OTFjOFx1OTMyYlx1ODJlNVx1NWJjMlx1NWYzMVx1NjBmOVx1NGUzYlx1NTNkNlx1NWI4OFx1NjI0Ylx1NjczMVx1NmI4YVx1NzJlOVx1NzNlMFx1N2EyZVx1ODE2Ylx1OGRhM1x1OTE1''@;'; put 'put ''Mlx1OTk5Nlx1NTExMlx1NTNkN1x1NTQ2YVx1NWJmZlx1NjM4OFx1NmEzOVx1N2RhY1x1OTcwMFx1NTZkYVx1NTNjZVx1NTQ2OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQyXVttXS5jaGFyQ29kZUF0KDApJiYob2Vb''@;'; put 'put ''eFsxNDJdW21dXT0zNjM1MittLFJbMzYzNTIrbV09eFsxNDJdW21dKTtmb3IoeFsxNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJcdTc5YzBcdTc5Y2JcdTdk''@;'; put 'put ''NDJcdTdlNGRcdTdmZDJcdTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkxOWNcdTRlYzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTczNjNcdTdlMjZcdTkxY2Rc''@;'; put 'put ''dTkyODNcdTUzZDRcdTU5MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJcdTY2MjVcdTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlcdTZkZjNcdWZmZmRcdTZl''@;'; put 'put ''OTZcdTZmNjRcdTc2ZmVcdTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdkZDJcdTdmNzJcdTY2ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVlOGZcdTVmOTBcdTYwNTVcdTkyZTRc''@;'; put 'put ''dTk2NjRcdTUwYjdcdTUxMWZcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVcdTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2ZcdTYyODRcdTYyZGJcdTYzOGNcdTYz''@;'; put 'put ''NzdcdTY2MDdcdTY2MGNcdTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcxNjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdjYTdcdTdkMzlcdTgwOTZcdTgzZDZc''@;'; put 'put ''dTg0OGJcdTg1NDlcdTg4NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNcdTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRcdTU4Y2NcdTViMjJcdTVlMzhcdTYw''@;'; put 'put ''YzVcdTY0ZmVcdTY3NjFcdTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0M11bbV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG9lW3hbMTQzXVttXV09MzY2MDgrbSxSWzM2NjA4K21dPXhbMTQzXVttXSk7Zm9yKHhbMTQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4''@;'; put 'put ''OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1YmRkXHU1YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUz''@;'; put 'put ''XHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJhXHU0ZWMxXHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1''@;'; put 'put ''M2E4XHVmZmZkXHU5MDE3XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5''@;'; put 'put ''XHU2OTE5XHU4M2M1XHU5ODE3XHU5NmMwXHU4OGZlXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2XHU3MDJjXHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3''@;'; put 'put ''MjcyXHU3NTFmXHU3NmRiXHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4YTkzXHU4YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRk''@;'; put 'put ''XHU3ZTNlXHU4MTBhXHU4Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5XHU2M2E1XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1''@;'; put 'put ''ZGRkXHU2MjI2XHU2MjQ3XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2N2QzXHU2ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQ0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsx''@;'; put 'put ''NDRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0NF1bbV1dPTM2ODY0K20sUlszNjg2NCttXT14WzE0NF1bbV0pO2Zvcih4WzE0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U0YVx1N2ZhOFx1ODE3YVx1ODIxYlx1ODIzOVx1''@;'; put 'put ''ODVhNlx1OGE2ZVx1OGNjZVx1OGRmNVx1OTA3OFx1OTA3N1x1OTJhZFx1OTI5MVx1OTU4M1x1OWJhZVx1NTI0ZFx1NTU4NFx1NmYzOFx1NzEzNlx1NTE2OFx1Nzk4NVx1N2U1NVx1ODFiM1x1N2NjZVx1NTY0Y1x1NTg1MVx1NWNhOFx1NjNhYVx1NjZmZVx1NjZmZFx1Njk1YVx1NzJkOVx1NzU4''@;'; put 'put ''Zlx1NzU4ZVx1NzkwZVx1Nzk1Nlx1NzlkZlx1N2M5N1x1N2QyMFx1N2Q0NFx1ODYwN1x1OGEzNFx1OTYzYlx1OTA2MVx1OWYyMFx1NTBlN1x1NTI3NVx1NTNjY1x1NTNlMlx1NTAwOVx1NTVhYVx1NThlZVx1NTk0Zlx1NzIzZFx1NWI4Ylx1NWM2NFx1NTMxZFx1NjBlM1x1NjBmM1x1NjM1Y1x1''@;'; put 'put ''NjM4M1x1NjMzZlx1NjNiYlx1ZmZmZFx1NjRjZFx1NjVlOVx1NjZmOVx1NWRlM1x1NjljZFx1NjlmZFx1NmYxNVx1NzFlNVx1NGU4OVx1NzVlOVx1NzZmOFx1N2E5M1x1N2NkZlx1N2RjZlx1N2Q5Y1x1ODA2MVx1ODM0OVx1ODM1OFx1ODQ2Y1x1ODRiY1x1ODVmYlx1ODhjNVx1OGQ3MFx1OTAw''@;'; put 'put ''MVx1OTA2ZFx1OTM5N1x1OTcxY1x1OWExMlx1NTBjZlx1NTg5N1x1NjE4ZVx1ODFkM1x1ODUzNVx1OGQwOFx1OTAyMFx1NGZjM1x1NTA3NFx1NTI0N1x1NTM3M1x1NjA2Zlx1NjM0OVx1Njc1Zlx1NmUyY1x1OGRiM1x1OTAxZlx1NGZkN1x1NWM1ZVx1OGNjYVx1NjVjZlx1N2Q5YVx1NTM1Mlx1''@;'; put 'put ''ODg5Nlx1NTE3Nlx1NjNjM1x1NWI1OFx1NWI2Ylx1NWMwYVx1NjQwZFx1Njc1MVx1OTA1Y1x1NGVkNlx1NTkxYVx1NTkyYVx1NmM3MFx1OGE1MVx1NTUzZVx1NTgxNVx1NTlhNVx1NjBmMFx1NjI1M1x1NjdjMVx1ODIzNVx1Njk1NVx1OTY0MFx1OTljNFx1OWEyOFx1NGY1M1x1NTgwNlx1NWJm''@;'; put 'put ''ZVx1ODAxMFx1NWNiMVx1NWUyZlx1NWY4NVx1NjAyMFx1NjE0Ylx1NjIzNFx1NjZmZlx1NmNmMFx1NmVkZVx1ODBjZVx1ODE3Zlx1ODJkNFx1ODg4Ylx1OGNiOFx1OTAwMFx1OTAyZVx1OTY4YVx1OWVkYlx1OWJkYlx1NGVlM1x1NTNmMFx1NTkyN1x1N2IyY1x1OTE4ZFx1OTg0Y1x1OWRmOVx1''@;'; put 'put ''NmVkZFx1NzAyN1x1NTM1M1x1NTU0NFx1NWI4NVx1NjI1OFx1NjI5ZVx1NjJkM1x1NmNhMlx1NmZlZlx1NzQyMlx1OGExN1x1OTQzOFx1NmZjMVx1OGFmZVx1ODMzOFx1NTFlN1x1ODZmOFx1NTNlYVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0NV0ubGVuZ3RoOysr''@;'; put 'put ''bSk2NTUzMyE9PXhbMTQ1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDVdW21dXT0zNzEyMCttLFJbMzcxMjArbV09eFsxNDVdW21dKTtmb3IoeFsxNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzZTlcdTRmNDZcdTkwNTRc''@;'; put 'put ''dThmYjBcdTU5NmFcdTgxMzFcdTVkZmRcdTdhZWFcdThmYmZcdTY4ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZcdTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRcdTdhZWZcdTdiYWFcdTdkYmJcdTgw''@;'; put 'put ''M2RcdTgwYzZcdTg2Y2JcdThhOTVcdTkzNWJcdTU2ZTNcdTU4YzdcdTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgxZjRcdTg3MThcdTkwNDVcdTk5YjNc''@;'; put 'put ''dTdiYzlcdTc1NWNcdTdhZjlcdTdiNTFcdTg0YzRcdWZmZmRcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlcdTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNcdTk5ZDBcdTZhMTdcdTcw''@;'; put 'put ''MjZcdTczMmFcdTgyZTdcdTg0NTdcdThjYWZcdTRlMDFcdTUxNDZcdTUxY2JcdTU1OGJcdTViZjVcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVmNmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhc''@;'; put 'put ''dTg3NzZcdThhYmZcdThhZGNcdThkODVcdThkZjNcdTkyOWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2RcdThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRcdTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4''@;'; put 'put ''MDJcdTYzYjRcdTY5ZmJcdTRmNDNcdTZmMmNcdTY3ZDhcdThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdkMmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUwNzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRc''@;'; put 'put ''dTViOWFcdTVlMWRcdTVlOTVcdTVlYWRcdTVlZjdcdTVmMWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJcdTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsx''@;'; put 'put ''NDZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQ2XVttXV09MzczNzYrbSxSWzM3Mzc2K21dPXhbMTQ2XVttXSk7Zm9yKHhbMTQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGI4''@;'; put 'put ''XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVkXHU5MjQ0XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4''@;'; put 'put ''Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2ZTIxXHU3NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFh''@;'; put 'put ''XHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjXHVmZmZkXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2''@;'; put 'put ''ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4YzQ2XHU4ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1''@;'; put 'put ''XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIzXHU2ZDljXHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1''@;'; put 'put ''MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1NDUxXHU2NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4''@;'; put 'put ''XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2QxXHU4MDg5XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksbT0wO20hPXhbMTQ3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0N11bbV1dPTM3NjMyK20sUlszNzYzMittXT14WzE0N11bbV0pO2Zvcih4WzE0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1NTk4Mlx1NWMzZlx1OTdlZVx1NGVmYlx1NTk4YVx1NWZjZFx1OGE4ZFx1NmZlMVx1NzliMFx1Nzk2Mlx1NWJlN1x1ODQ3MVx1NzMyYlx1NzFiMVx1NWU3NFx1NWZmNVx1NjM3Ylx1NjQ5YVx1NzFjM1x1N2M5OFx1NGU0M1x1NWVmY1x1NGU0Ylx1NTdkY1x1NTZhMlx1NjBhOVx1''@;'; put 'put ''NmZjM1x1N2QwZFx1ODBmZFx1ODEzM1x1ODFiZlx1OGZiMlx1ODk5N1x1ODZhNFx1NWRmNFx1NjI4YVx1NjRhZFx1ODk4N1x1Njc3N1x1NmNlMlx1NmQzZVx1NzQzNlx1NzgzNFx1NWE0Nlx1N2Y3NVx1ODJhZFx1OTlhY1x1NGZmM1x1NWVjM1x1NjJkZFx1NjM5Mlx1NjU1N1x1Njc2Zlx1NzZj''@;'; put 'put ''M1x1NzI0Y1x1ODBjY1x1ODBiYVx1OGYyOVx1OTE0ZFx1NTAwZFx1NTdmOVx1NWE5Mlx1Njg4NVx1ZmZmZFx1Njk3M1x1NzE2NFx1NzJmZFx1OGNiN1x1NThmMlx1OGNlMFx1OTY2YVx1OTAxOVx1ODc3Zlx1NzllNFx1NzdlN1x1ODQyOVx1NGYyZlx1NTI2NVx1NTM1YVx1NjJjZFx1NjdjZlx1''@;'; put 'put ''NmNjYVx1NzY3ZFx1N2I5NFx1N2M5NVx1ODIzNlx1ODU4NFx1OGZlYlx1NjZkZFx1NmYyMFx1NzIwNlx1N2UxYlx1ODNhYlx1OTljMVx1OWVhNlx1NTFmZFx1N2JiMVx1Nzg3Mlx1N2JiOFx1ODA4N1x1N2I0OFx1NmFlOFx1NWU2MVx1ODA4Y1x1NzU1MVx1NzU2MFx1NTE2Ylx1OTI2Mlx1NmU4''@;'; put 'put ''Y1x1NzY3YVx1OTE5N1x1OWFlYVx1NGYxMFx1N2Y3MFx1NjI5Y1x1N2I0Zlx1OTVhNVx1OWNlOVx1NTY3YVx1NTg1OVx1ODZlNFx1OTZiY1x1NGYzNFx1NTIyNFx1NTM0YVx1NTNjZFx1NTNkYlx1NWUwNlx1NjQyY1x1NjU5MVx1Njc3Zlx1NmMzZVx1NmM0ZVx1NzI0OFx1NzJhZlx1NzNlZFx1''@;'; put 'put ''NzU1NFx1N2U0MVx1ODIyY1x1ODVlOVx1OGNhOVx1N2JjNFx1OTFjNlx1NzE2OVx1OTgxMlx1OThlZlx1NjMzZFx1NjY2OVx1NzU2YVx1NzZlNFx1NzhkMFx1ODU0M1x1ODZlZVx1NTMyYVx1NTM1MVx1NTQyNlx1NTk4M1x1NWU4N1x1NWY3Y1x1NjBiMlx1NjI0OVx1NjI3OVx1NjJhYlx1NjU5''@;'; put 'put ''MFx1NmJkNFx1NmNjY1x1NzViMlx1NzZhZVx1Nzg5MVx1NzlkOFx1N2RjYlx1N2Y3N1x1ODBhNVx1ODhhYlx1OGFiOVx1OGNiYlx1OTA3Zlx1OTc1ZVx1OThkYlx1NmEwYlx1N2MzOFx1NTA5OVx1NWMzZVx1NWZhZVx1Njc4N1x1NmJkOFx1NzQzNVx1NzcwOVx1N2Y4ZVx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQ4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDhdW21dXT0zNzg4OCttLFJbMzc4ODgrbV09eFsxNDhdW21dKTtmb3IoeFsxNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlmM2JcdTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThcdTVmM2NcdTVmYzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlc''@;'; put 'put ''dTZjMzdcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTkyZjJcdTg0OWNcdTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRl''@;'; put 'put ''MGRcdTRlZDhcdTU3ZTBcdTU5MmJcdTVhNjZcdTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzdcdWZmZmRcdTY1YTdcdTY2NmVcdTZkNmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVc''@;'; put 'put ''dTY0YWJcdTZiNjZcdTgyMWVcdTg0NjFcdTg1NmFcdTkwZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUyNmZcdTVmYTlcdTVlNDVcdTY3MGRcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUy''@;'; put 'put ''MDZcdTU0M2JcdTU2NzRcdTU4YjNcdTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdcdTgwNWVcdTRlMTlcdTRmNzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFc''@;'; put 'put ''dTUwZmJcdTU4YzFcdTc2NTZcdTc4YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdkZThcdThmYmFcdThmZDRcdTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1''@;'; put 'put ''MmJcdTg4ZGNcdThmMTRcdTdhNDJcdTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNcdTRmZjhcdTUzMDVcdTU0NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQ5XVttXV09MzgxNDQrbSxSWzM4MTQ0K21dPXhbMTQ5XVttXSk7Zm9yKHhbMTUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1MDhkXHU1MjU2''@;'; put 'put ''XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIyXHU2NzM0XHU3''@;'; put 'put ''MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2XHVmZmZkXHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4MTlj''@;'; put 'put ''XHU2Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1XHU1Y2FjXHU1YmM2XHU4''@;'; put 'put ''NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5Mjk4XHU5Y2Y0XHU1OWVh''@;'; put 'put ''XHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZmXHU5OTA1XHU1YzI0XHU2''@;'; put 'put ''MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5NDUzXHU2MTA5XHU2MTA4''@;'; put 'put ''XHU2Y2I5XHU3NjUyXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTUwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1MF1bbV1dPTM4NDAwK20sUlszODQwMCttXT14WzE1MF1bbV0pO2Zvcih4WzE1MV09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFlZFx1OGYzOFx1NTUyZlx1NGY1MVx1NTEyYVx1NTJjN1x1NTNjYlx1NWJhNVx1NWU3ZFx1NjBhMFx1NjE4Mlx1NjNkNlx1NjcwOVx1NjdkYVx1NmU2N1x1NmQ4Y1x1NzMzNlx1NzMzN1x1NzUzMVx1Nzk1''@;'; put 'put ''MFx1ODhkNVx1OGE5OFx1OTA0YVx1OTA5MVx1OTBmNVx1OTZjNFx1ODc4ZFx1NTkxNVx1NGU4OFx1NGY1OVx1NGUwZVx1OGE4OVx1OGYzZlx1OTgxMFx1NTBhZFx1NWU3Y1x1NTk5Nlx1NWJiOVx1NWViOFx1NjNkYVx1NjNmYVx1NjRjMVx1NjZkY1x1Njk0YVx1NjlkOFx1NmQwYlx1NmViNlx1''@;'; put 'put ''NzE5NFx1NzUyOFx1N2FhZlx1N2Y4YVx1ODAwMFx1ODQ0OVx1ODRjOVx1ODk4MVx1OGIyMVx1OGUwYVx1OTA2NVx1OTY3ZFx1OTkwYVx1NjE3ZVx1NjI5MVx1NmIzMlx1ZmZmZFx1NmM4M1x1NmQ3NFx1N2ZjY1x1N2ZmY1x1NmRjMFx1N2Y4NVx1ODdiYVx1ODhmOFx1Njc2NVx1ODNiMVx1OTgz''@;'; put 'put ''Y1x1OTZmN1x1NmQxYlx1N2Q2MVx1ODQzZFx1OTE2YVx1NGU3MVx1NTM3NVx1NWQ1MFx1NmIwNFx1NmZlYlx1ODVjZFx1ODYyZFx1ODlhN1x1NTIyOVx1NTQwZlx1NWM2NVx1Njc0ZVx1NjhhOFx1NzQwNlx1NzQ4M1x1NzVlMlx1ODhjZlx1ODhlMVx1OTFjY1x1OTZlMlx1OTY3OFx1NWY4Ylx1''@;'; put 'put ''NzM4N1x1N2FjYlx1ODQ0ZVx1NjNhMFx1NzU2NVx1NTI4OVx1NmQ0MVx1NmU5Y1x1NzQwOVx1NzU1OVx1Nzg2Ylx1N2M5Mlx1OTY4Nlx1N2FkY1x1OWY4ZFx1NGZiNlx1NjE2ZVx1NjVjNVx1ODY1Y1x1NGU4Nlx1NGVhZVx1NTBkYVx1NGUyMVx1NTFjY1x1NWJlZVx1NjU5OVx1Njg4MVx1NmRi''@;'; put 'put ''Y1x1NzMxZlx1NzY0Mlx1NzdhZFx1N2ExY1x1N2NlN1x1ODI2Zlx1OGFkMlx1OTA3Y1x1OTFjZlx1OTY3NVx1OTgxOFx1NTI5Ylx1N2RkMVx1NTAyYlx1NTM5OFx1Njc5N1x1NmRjYlx1NzFkMFx1NzQzM1x1ODFlOFx1OGYyYVx1OTZhM1x1OWM1N1x1OWU5Zlx1NzQ2MFx1NTg0MVx1NmQ5OVx1''@;'; put 'put ''N2QyZlx1OTg1ZVx1NGVlNFx1NGYzNlx1NGY4Ylx1NTFiN1x1NTJiMVx1NWRiYVx1NjAxY1x1NzNiMlx1NzkzY1x1ODJkM1x1OTIzNFx1OTZiN1x1OTZmNlx1OTcwYVx1OWU5N1x1OWY2Mlx1NjZhNlx1NmI3NFx1NTIxN1x1NTJhM1x1NzBjOFx1ODhjMlx1NWVjOVx1NjA0Ylx1NjE5MFx1NmYy''@;'; put 'put ''M1x1NzE0OVx1N2MzZVx1N2RmNFx1ODA2Zlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTUxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTFdW21dXT0zODY1NittLFJbMzg2NTYrbV09eFsxNTFdW21dKTtmb3IoeFsx''@;'; put 'put ''NTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg0ZWVcdTkwMjNcdTkzMmNcdTU0NDJcdTliNmZcdTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVhNDFcdTVlY2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZk''@;'; put 'put ''NmFcdTZmMGZcdTcyNjJcdTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJcdTkzMzJcdThhZDZcdTUwMmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFcdTY3YTBcdTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJc''@;'; put 'put ''dTg1YzFcdTg1NjhcdTY5MDBcdTZlN2VcdTc4OTdcdTgxNTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRlMzFc''@;'; put 'put ''dTRlMzZcdTRlM2NcdTRlM2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThjNmJcdTRlOGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZcdTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVcdTRl''@;'; put 'put ''ZWRcdTRlZGZcdTRlZjdcdTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdcdTRmNDdcdTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRmNjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRmZDFc''@;'; put 'put ''dTRmZGFcdTRmZDBcdTRmZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUwMjVcdTUwMDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNcdTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZcdTUw''@;'; put 'put ''NmNcdTUwNzhcdTUwODBcdTUwOWFcdTUwODVcdTUwYjRcdTUwYjJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTUyXVttXV09Mzg5MTIrbSxSWzM4OTEyK21dPXhbMTUy''@;'; put 'put ''XVttXSk7Zm9yKHhbMTUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVlXHU1MGY5XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1''@;'; put 'put ''MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1MThjXHU1MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1''@;'; put 'put ''XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkXHVmZmZkXHU1MWYwXHU1MWY1XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1''@;'; put 'put ''MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1MjkxXHU4ZmE4XHU4ZmE3XHU1MmFjXHU1MmFk''@;'; put 'put ''XHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1XHU1MzFhXHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1''@;'; put 'put ''MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1M2MzXHU3YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2Vl''@;'; put 'put ''XHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhmXHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcwXHU1NDkyXHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1''@;'; put 'put ''NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTUzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1M11bbV1dPTM5MTY4K20sUlsz''@;'; put 'put ''OTE2OCttXT14WzE1M11bbV0pO2Zvcih4WzE1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTRjMlx1NTRhNFx1NTRiZVx1NTRiY1x1NTRkOFx1NTRlNVx1NTRlNlx1NTUwZlx1NTUxNFx1NTRmZFx1NTRlZVx1NTRlZFx1''@;'; put 'put ''NTRmYVx1NTRlMlx1NTUzOVx1NTU0MFx1NTU2M1x1NTU0Y1x1NTUyZVx1NTU1Y1x1NTU0NVx1NTU1Nlx1NTU1N1x1NTUzOFx1NTUzM1x1NTU1ZFx1NTU5OVx1NTU4MFx1NTRhZlx1NTU4YVx1NTU5Zlx1NTU3Ylx1NTU3ZVx1NTU5OFx1NTU5ZVx1NTVhZVx1NTU3Y1x1NTU4M1x1NTVhOVx1NTU4''@;'; put 'put ''N1x1NTVhOFx1NTVkYVx1NTVjNVx1NTVkZlx1NTVjNFx1NTVkY1x1NTVlNFx1NTVkNFx1NTYxNFx1NTVmN1x1NTYxNlx1NTVmZVx1NTVmZFx1NTYxYlx1NTVmOVx1NTY0ZVx1NTY1MFx1NzFkZlx1NTYzNFx1NTYzNlx1NTYzMlx1NTYzOFx1ZmZmZFx1NTY2Ylx1NTY2NFx1NTYyZlx1NTY2Y1x1''@;'; put 'put ''NTY2YVx1NTY4Nlx1NTY4MFx1NTY4YVx1NTZhMFx1NTY5NFx1NTY4Zlx1NTZhNVx1NTZhZVx1NTZiNlx1NTZiNFx1NTZjMlx1NTZiY1x1NTZjMVx1NTZjM1x1NTZjMFx1NTZjOFx1NTZjZVx1NTZkMVx1NTZkM1x1NTZkN1x1NTZlZVx1NTZmOVx1NTcwMFx1NTZmZlx1NTcwNFx1NTcwOVx1NTcw''@;'; put 'put ''OFx1NTcwYlx1NTcwZFx1NTcxM1x1NTcxOFx1NTcxNlx1NTVjN1x1NTcxY1x1NTcyNlx1NTczN1x1NTczOFx1NTc0ZVx1NTczYlx1NTc0MFx1NTc0Zlx1NTc2OVx1NTdjMFx1NTc4OFx1NTc2MVx1NTc3Zlx1NTc4OVx1NTc5M1x1NTdhMFx1NTdiM1x1NTdhNFx1NTdhYVx1NTdiMFx1NTdjM1x1''@;'; put 'put ''NTdjNlx1NTdkNFx1NTdkMlx1NTdkM1x1NTgwYVx1NTdkNlx1NTdlM1x1NTgwYlx1NTgxOVx1NTgxZFx1NTg3Mlx1NTgyMVx1NTg2Mlx1NTg0Ylx1NTg3MFx1NmJjMFx1NTg1Mlx1NTgzZFx1NTg3OVx1NTg4NVx1NThiOVx1NTg5Zlx1NThhYlx1NThiYVx1NThkZVx1NThiYlx1NThiOFx1NThh''@;'; put 'put ''ZVx1NThjNVx1NThkM1x1NThkMVx1NThkN1x1NThkOVx1NThkOFx1NThlNVx1NThkY1x1NThlNFx1NThkZlx1NThlZlx1NThmYVx1NThmOVx1NThmYlx1NThmY1x1NThmZFx1NTkwMlx1NTkwYVx1NTkxMFx1NTkxYlx1NjhhNlx1NTkyNVx1NTkyY1x1NTkyZFx1NTkzMlx1NTkzOFx1NTkzZVx1''@;'; put 'put ''N2FkMlx1NTk1NVx1NTk1MFx1NTk0ZVx1NTk1YVx1NTk1OFx1NTk2Mlx1NTk2MFx1NTk2N1x1NTk2Y1x1NTk2OVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTU0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTRdW21d''@;'; put 'put ''XT0zOTQyNCttLFJbMzk0MjQrbV09eFsxNTRdW21dKTtmb3IoeFsxNTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5NzhcdTU5ODFcdTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRc''@;'; put 'put ''dTU5ZDlcdTU5ZGFcdTVhMjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVhNDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFcdTVhOWFcdTVhYmNcdTVhYmVcdTVhY2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVh''@;'; put 'put ''ZmJcdTViMGNcdTViMGJcdTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2VcdTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTViNWJcdTViNjVcdTViNjlcdTViNzBcdTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODBcdWZmZmRcdTViODNcdTViYTZc''@;'; put 'put ''dTViYjhcdTViYzNcdTViYzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTViZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNcdTVjMDVcdTVjMDdcdTVjMDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVj''@;'; put 'put ''NGVcdTVjNTNcdTVjNTBcdTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJcdTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVjYmJcdTVjYjZcdTVjYmNcdTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNc''@;'; put 'put ''dTVjZWFcdTVkMGJcdTVkMTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVkMTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJcdTVkNGVcdTVkNGJcdTVkNmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVk''@;'; put 'put ''YmRcdTVkOTBcdTVkYjdcdTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJcdTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVlMTlcdTVlMTFcdTVlMWJcdTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJc''@;'; put 'put ''dTVlNjRcdTVlNDdcdTVlNzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVlYTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2ZcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1NV1bbV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG9lW3hbMTU1XVttXV09Mzk2ODArbSxSWzM5NjgwK21dPXhbMTU1XVttXSk7Zm9yKHhbMTU2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5''@;'; put 'put ''XHU1ZWVjXHU1ZWYxXHU1ZWYzXHU1ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1''@;'; put 'put ''ZjZkXHU1ZjczXHU1Zjc3XHU1ZjgzXHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwXHVmZmZk''@;'; put 'put ''XHU2MDE5XHU2MDEwXHU2MDI5XHU2MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2''@;'; put 'put ''MDhkXHU2MGU3XHU2MDgzXHU2MDlhXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0''@;'; put 'put ''XHU2MGZhXHU2MTAzXHU2MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2''@;'; put 'put ''MTY1XHU2MTcxXHU2MTVmXHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2''@;'; put 'put ''XHU2MWUzXHU2MWY2XHU2MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTU2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTZdW21dLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihvZVt4WzE1Nl1bbV1dPTM5OTM2K20sUlszOTkzNittXT14WzE1Nl1bbV0pO2Zvcih4WzE1N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjIxZVx1NjIyMVx1NjIyYVx1NjIyZVx1NjIzMFx1NjIzMlx1NjIz''@;'; put 'put ''M1x1NjI0MVx1NjI0ZVx1NjI1ZVx1NjI2M1x1NjI1Ylx1NjI2MFx1NjI2OFx1NjI3Y1x1NjI4Mlx1NjI4OVx1NjI3ZVx1NjI5Mlx1NjI5M1x1NjI5Nlx1NjJkNFx1NjI4M1x1NjI5NFx1NjJkN1x1NjJkMVx1NjJiYlx1NjJjZlx1NjJmZlx1NjJjNlx1NjRkNFx1NjJjOFx1NjJkY1x1NjJjY1x1''@;'; put 'put ''NjJjYVx1NjJjMlx1NjJjN1x1NjI5Ylx1NjJjOVx1NjMwY1x1NjJlZVx1NjJmMVx1NjMyN1x1NjMwMlx1NjMwOFx1NjJlZlx1NjJmNVx1NjM1MFx1NjMzZVx1NjM0ZFx1NjQxY1x1NjM0Zlx1NjM5Nlx1NjM4ZVx1NjM4MFx1NjNhYlx1NjM3Nlx1NjNhM1x1NjM4Zlx1NjM4OVx1NjM5Zlx1NjNi''@;'; put 'put ''NVx1NjM2Ylx1ZmZmZFx1NjM2OVx1NjNiZVx1NjNlOVx1NjNjMFx1NjNjNlx1NjNlM1x1NjNjOVx1NjNkMlx1NjNmNlx1NjNjNFx1NjQxNlx1NjQzNFx1NjQwNlx1NjQxM1x1NjQyNlx1NjQzNlx1NjUxZFx1NjQxN1x1NjQyOFx1NjQwZlx1NjQ2N1x1NjQ2Zlx1NjQ3Nlx1NjQ0ZVx1NjUyYVx1''@;'; put 'put ''NjQ5NVx1NjQ5M1x1NjRhNVx1NjRhOVx1NjQ4OFx1NjRiY1x1NjRkYVx1NjRkMlx1NjRjNVx1NjRjN1x1NjRiYlx1NjRkOFx1NjRjMlx1NjRmMVx1NjRlN1x1ODIwOVx1NjRlMFx1NjRlMVx1NjJhY1x1NjRlM1x1NjRlZlx1NjUyY1x1NjRmNlx1NjRmNFx1NjRmMlx1NjRmYVx1NjUwMFx1NjRm''@;'; put 'put ''ZFx1NjUxOFx1NjUxY1x1NjUwNVx1NjUyNFx1NjUyM1x1NjUyYlx1NjUzNFx1NjUzNVx1NjUzN1x1NjUzNlx1NjUzOFx1NzU0Ylx1NjU0OFx1NjU1Nlx1NjU1NVx1NjU0ZFx1NjU1OFx1NjU1ZVx1NjU1ZFx1NjU3Mlx1NjU3OFx1NjU4Mlx1NjU4M1x1OGI4YVx1NjU5Ylx1NjU5Zlx1NjVhYlx1''@;'; put 'put ''NjViN1x1NjVjM1x1NjVjNlx1NjVjMVx1NjVjNFx1NjVjY1x1NjVkMlx1NjVkYlx1NjVkOVx1NjVlMFx1NjVlMVx1NjVmMVx1Njc3Mlx1NjYwYVx1NjYwM1x1NjVmYlx1Njc3M1x1NjYzNVx1NjYzNlx1NjYzNFx1NjYxY1x1NjY0Zlx1NjY0NFx1NjY0OVx1NjY0MVx1NjY1ZVx1NjY1ZFx1NjY2''@;'; put 'put ''NFx1NjY2N1x1NjY2OFx1NjY1Zlx1NjY2Mlx1NjY3MFx1NjY4M1x1NjY4OFx1NjY4ZVx1NjY4OVx1NjY4NFx1NjY5OFx1NjY5ZFx1NjZjMVx1NjZiOVx1NjZjOVx1NjZiZVx1NjZiY1x1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1N10ubGVuZ3RoOysrbSk2NTUzMyE9''@;'; put 'put ''PXhbMTU3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTddW21dXT00MDE5MittLFJbNDAxOTIrbV09eFsxNTddW21dKTtmb3IoeFsxNThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2YzRcdTY2YjhcdTY2ZDZcdTY2ZGFcdTY2''@;'; put 'put ''ZTBcdTY2M2ZcdTY2ZTZcdTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3MzZcdTY3NDFcdTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlcdTY3NzBcdTY3YTlc''@;'; put 'put ''dTY3N2NcdTY3NmFcdTY3OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRcdTY3ZGVcdTY3ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4NDZcdTY4MjlcdTY4''@;'; put 'put ''NDBcdTY4NGRcdTY4MzJcdTY4NGVcdWZmZmRcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4OWRcdTY4OWJcdTY4ODNcdTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZcdTY4OGRcdTY4N2VcdTY5MDFc''@;'; put 'put ''dTY4Y2FcdTY5MDhcdTY4ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2RcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdcdTY4ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5MjFcdTY4YzZcdTY5NzlcdTY5''@;'; put 'put ''NzdcdTY5NWNcdTY5NzhcdTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5ODFcdTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2VcdTViZThcdTY5Y2FcdTY5ZGRc''@;'; put 'put ''dTY5YmJcdTY5YzNcdTY5YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFcdTY5ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZhMGFcdTZhMTJcdTZhYzFcdTZh''@;'; put 'put ''MjNcdTZhMTNcdTZhNDRcdTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZhOGRcdTZhYTBcdTZhODRcdTZhYTJcdTZhYTNcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNThdLmxlbmd0''@;'; put 'put ''aDsrK20pNjU1MzMhPT14WzE1OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTU4XVttXV09NDA0NDgrbSxSWzQwNDQ4K21dPXhbMTU4XVttXSk7Zm9yKHhbMTU5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YTk3XHU4NjE3XHU2''@;'; put 'put ''YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRhXHU2YWVhXHU2YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5''@;'; put 'put ''XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2Yjg0XHU2YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2''@;'; put 'put ''YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYzXHU2YmVmXHVmZmZkXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFiXHU2YzI0XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2Yzkw''@;'; put 'put ''XHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlXHU2Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2''@;'; put 'put ''ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5XHU2ZTE1XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVh''@;'; put 'put ''XHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2ZTZiXHU2ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2''@;'; put 'put ''ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlmXHU2ZjQxXHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20h''@;'; put 'put ''PXhbMTU5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1OV1bbV1dPTQwNzA0K20sUls0MDcwNCttXT14WzE1OV1bbV0pO2Zvcih4WzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NmYzZVx1NmYxM1x1NmVmN1x1NmY4Nlx1NmY3YVx1NmY3OFx1NmY4MVx1NmY4MFx1NmY2Zlx1NmY1Ylx1NmZmM1x1NmY2ZFx1NmY4Mlx1NmY3Y1x1NmY1OFx1NmY4ZVx1NmY5MVx1NmZjMlx1NmY2Nlx1NmZiM1x1NmZhM1x1NmZhMVx1NmZhNFx1NmZiOVx1NmZjNlx1NmZhYVx1NmZkZlx1NmZk''@;'; put 'put ''NVx1NmZlY1x1NmZkNFx1NmZkOFx1NmZmMVx1NmZlZVx1NmZkYlx1NzAwOVx1NzAwYlx1NmZmYVx1NzAxMVx1NzAwMVx1NzAwZlx1NmZmZVx1NzAxYlx1NzAxYVx1NmY3NFx1NzAxZFx1NzAxOFx1NzAxZlx1NzAzMFx1NzAzZVx1NzAzMlx1NzA1MVx1NzA2M1x1NzA5OVx1NzA5Mlx1NzBhZlx1''@;'; put 'put ''NzBmMVx1NzBhY1x1NzBiOFx1NzBiM1x1NzBhZVx1NzBkZlx1NzBjYlx1NzBkZFx1ZmZmZFx1NzBkOVx1NzEwOVx1NzBmZFx1NzExY1x1NzExOVx1NzE2NVx1NzE1NVx1NzE4OFx1NzE2Nlx1NzE2Mlx1NzE0Y1x1NzE1Nlx1NzE2Y1x1NzE4Zlx1NzFmYlx1NzE4NFx1NzE5NVx1NzFhOFx1NzFh''@;'; put 'put ''Y1x1NzFkN1x1NzFiOVx1NzFiZVx1NzFkMlx1NzFjOVx1NzFkNFx1NzFjZVx1NzFlMFx1NzFlY1x1NzFlN1x1NzFmNVx1NzFmY1x1NzFmOVx1NzFmZlx1NzIwZFx1NzIxMFx1NzIxYlx1NzIyOFx1NzIyZFx1NzIyY1x1NzIzMFx1NzIzMlx1NzIzYlx1NzIzY1x1NzIzZlx1NzI0MFx1NzI0Nlx1''@;'; put 'put ''NzI0Ylx1NzI1OFx1NzI3NFx1NzI3ZVx1NzI4Mlx1NzI4MVx1NzI4N1x1NzI5Mlx1NzI5Nlx1NzJhMlx1NzJhN1x1NzJiOVx1NzJiMlx1NzJjM1x1NzJjNlx1NzJjNFx1NzJjZVx1NzJkMlx1NzJlMlx1NzJlMFx1NzJlMVx1NzJmOVx1NzJmN1x1NTAwZlx1NzMxN1x1NzMwYVx1NzMxY1x1NzMx''@;'; put 'put ''Nlx1NzMxZFx1NzMzNFx1NzMyZlx1NzMyOVx1NzMyNVx1NzMzZVx1NzM0ZVx1NzM0Zlx1OWVkOFx1NzM1N1x1NzM2YVx1NzM2OFx1NzM3MFx1NzM3OFx1NzM3NVx1NzM3Ylx1NzM3YVx1NzNjOFx1NzNiM1x1NzNjZVx1NzNiYlx1NzNjMFx1NzNlNVx1NzNlZVx1NzNkZVx1NzRhMlx1NzQwNVx1''@;'; put 'put ''NzQ2Zlx1NzQyNVx1NzNmOFx1NzQzMlx1NzQzYVx1NzQ1NVx1NzQzZlx1NzQ1Zlx1NzQ1OVx1NzQ0MVx1NzQ1Y1x1NzQ2OVx1NzQ3MFx1NzQ2M1x1NzQ2YVx1NzQ3Nlx1NzQ3ZVx1NzQ4Ylx1NzQ5ZVx1NzRhN1x1NzRjYVx1NzRjZlx1NzRkNFx1NzNmMVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLG09MDttIT14WzIyNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjRdW21dXT01NzM0NCttLFJbNTczNDQrbV09eFsyMjRdW21dKTtmb3IoeFsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTc0ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlcdTc0ZWVcdTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVcdTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1NDRcdTc1NGRcdTc1NGFcdTc1''@;'; put 'put ''NDlcdTc1NWJcdTc1NDZcdTc1NWFcdTc1NjlcdTc1NjRcdTc1NjdcdTc1NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNcdTc1YjVcdTc1YmRcdTc1Yjhc''@;'; put 'put ''dTc1YmNcdTc1YjFcdTc1Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlcdTc1ZTNcdTc1ZGVcdTc1ZmVcdTc1ZmZcdWZmZmRcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFcdTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2MjRcdTc2MzRcdTc2''@;'; put 'put ''MzBcdTc2M2JcdTc2NDdcdTc2NDhcdTc2NDZcdTc2NWNcdTc2NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzBcdTc2NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVcdTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFc''@;'; put 'put ''dTc2YjBcdTc2YjRcdTc2YjhcdTc2YjlcdTc2YmFcdTc2YzJcdTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZcdTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3''@;'; put 'put ''NDdcdTc3NWFcdTc3NjhcdTc3NmJcdTc3NWJcdTc3NjVcdTc3N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdcdTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVc''@;'; put 'put ''dTc3ZmNcdTc4MGNcdTc4MTJcdTc5MjZcdTc4MjBcdTc5MmFcdTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVcdTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4YzVcdTc4Y2FcdTc4ZWNcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI1XVttXV09NTc2MDArbSxSWzU3NjAwK21dPXhbMjI1XVttXSk7Zm9yKHhbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3OTVhXHU3OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3''@;'; put 'put ''OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMxXHU3YTNiXHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5''@;'; put 'put ''XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwXHVmZmZkXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3''@;'; put 'put ''YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwXHU3YjdhXHU3YjA0XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3Yjcw''@;'; put 'put ''XHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3YmNmXHU3YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3''@;'; put 'put ''YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0XHU3YzRmXHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1''@;'; put 'put ''XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3Y2Q4XHU3Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3''@;'; put 'put ''ZDA2XHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyNl1bbV1dPTU3ODU2K20sUls1Nzg1NittXT14WzIyNl1bbV0pO2Zvcih4WzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QwMlx1N2QxY1x1N2QxNVx1N2QwYVx1N2Q0NVx1N2Q0Ylx1N2QyZVx1N2QzMlx1N2QzZlx1N2QzNVx1N2Q0Nlx1N2Q3M1x1N2Q1Nlx1N2Q0ZVx1N2Q3Mlx1N2Q2OFx1N2Q2ZVx1N2Q0Zlx1N2Q2M1x1N2Q5M1x1N2Q4OVx1''@;'; put 'put ''N2Q1Ylx1N2Q4Zlx1N2Q3ZFx1N2Q5Ylx1N2RiYVx1N2RhZVx1N2RhM1x1N2RiNVx1N2RjN1x1N2RiZFx1N2RhYlx1N2UzZFx1N2RhMlx1N2RhZlx1N2RkY1x1N2RiOFx1N2Q5Zlx1N2RiMFx1N2RkOFx1N2RkZFx1N2RlNFx1N2RkZVx1N2RmYlx1N2RmMlx1N2RlMVx1N2UwNVx1N2UwYVx1N2Uy''@;'; put 'put ''M1x1N2UyMVx1N2UxMlx1N2UzMVx1N2UxZlx1N2UwOVx1N2UwYlx1N2UyMlx1N2U0Nlx1N2U2Nlx1N2UzYlx1N2UzNVx1N2UzOVx1N2U0M1x1N2UzN1x1ZmZmZFx1N2UzMlx1N2UzYVx1N2U2N1x1N2U1ZFx1N2U1Nlx1N2U1ZVx1N2U1OVx1N2U1YVx1N2U3OVx1N2U2YVx1N2U2OVx1N2U3Y1x1''@;'; put 'put ''N2U3Ylx1N2U4M1x1N2RkNVx1N2U3ZFx1OGZhZVx1N2U3Zlx1N2U4OFx1N2U4OVx1N2U4Y1x1N2U5Mlx1N2U5MFx1N2U5M1x1N2U5NFx1N2U5Nlx1N2U4ZVx1N2U5Ylx1N2U5Y1x1N2YzOFx1N2YzYVx1N2Y0NVx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y1MFx1N2Y1MVx1N2Y1NVx1N2Y1NFx1N2Y1''@;'; put 'put ''OFx1N2Y1Zlx1N2Y2MFx1N2Y2OFx1N2Y2OVx1N2Y2N1x1N2Y3OFx1N2Y4Mlx1N2Y4Nlx1N2Y4M1x1N2Y4OFx1N2Y4N1x1N2Y4Y1x1N2Y5NFx1N2Y5ZVx1N2Y5ZFx1N2Y5YVx1N2ZhM1x1N2ZhZlx1N2ZiMlx1N2ZiOVx1N2ZhZVx1N2ZiNlx1N2ZiOFx1OGI3MVx1N2ZjNVx1N2ZjNlx1N2ZjYVx1''@;'; put 'put ''N2ZkNVx1N2ZkNFx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZmM1x1N2ZmOVx1OThkY1x1ODAwNlx1ODAwNFx1ODAwYlx1ODAxMlx1ODAxOFx1ODAxOVx1ODAxY1x1ODAyMVx1ODAyOFx1ODAzZlx1ODAzYlx1ODA0YVx1ODA0Nlx1ODA1Mlx1ODA1OFx1ODA1YVx1ODA1Zlx1ODA2Mlx1ODA2OFx1ODA3''@;'; put 'put ''M1x1ODA3Mlx1ODA3MFx1ODA3Nlx1ODA3OVx1ODA3ZFx1ODA3Zlx1ODA4NFx1ODA4Nlx1ODA4NVx1ODA5Ylx1ODA5M1x1ODA5YVx1ODBhZFx1NTE5MFx1ODBhY1x1ODBkYlx1ODBlNVx1ODBkOVx1ODBkZFx1ODBjNFx1ODBkYVx1ODBkNlx1ODEwOVx1ODBlZlx1ODBmMVx1ODExYlx1ODEyOVx1''@;'; put 'put ''ODEyM1x1ODEyZlx1ODE0Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjddW21dXT01ODExMittLFJbNTgxMTIrbV09eFsyMjddW21dKTtmb3IoeFsyMjhdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgwZmNcdTgxNzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRc''@;'; put 'put ''dTgxYTNcdTgxNWZcdTgxOTNcdTgxYTlcdTgxYjBcdTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2RcdTgxZDFcdTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgy''@;'; put 'put ''MDVcdTgyMDdcdTgyMGFcdTgyMGRcdTgyMTBcdTgyMTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgyNWFcdTgyNWZcdTgyNjRcdWZmZmRcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRc''@;'; put 'put ''dTgyOTJcdTgyYWJcdTgyOWZcdTgyYmJcdTgyYWNcdTgyZTFcdTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNcdTgzMDNcdTgyZmJcdTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDlcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgz''@;'; put 'put ''MzlcdTgzNTBcdTgzNDVcdTgzMmZcdTgzMmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgzMjNcdTgzOGVcdTgzODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2Vc''@;'; put 'put ''dTgzZmRcdTg0MDNcdTgzZDhcdTg0MGJcdTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRcdTg0MzhcdTg1MDZcdTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0''@;'; put 'put ''NDZcdTg0MmNcdTg0NmZcdTg0NzlcdTg0MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0ZGFcdTg0ZDBcdTg0YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRc''@;'; put 'put ''dTg0ZmNcdTg1NDBcdTg1NjNcdTg1NThcdTg1NDhcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI4XVttXV09NTgzNjgrbSxSWzU4MzY4K21dPXhbMjI4XVttXSk7Zm9y''@;'; put 'put ''KHhbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTljXHU4NTc3''@;'; put 'put ''XHU4NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4NjY3XHU4''@;'; put 'put ''NjcxXHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjXHVmZmZkXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAz''@;'; put 'put ''XHU4NmZiXHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5XHU4NzUzXHU4NzYzXHU4NzZhXHU4ODA1XHU4''@;'; put 'put ''N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODExXHU4ODE2XHU4ODE1''@;'; put 'put ''XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4ODk5XHU4OGEyXHU4''@;'; put 'put ''ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJiXHU4OTQxXHU4OTQ0''@;'; put 'put ''XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyOV1bbV1dPTU4NjI0K20sUls1ODYyNCttXT14''@;'; put 'put ''WzIyOV1bbV0pO2Zvcih4WzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODk2Nlx1ODk2NFx1ODk2ZFx1ODk2YVx1ODk2Zlx1ODk3NFx1ODk3N1x1ODk3ZVx1ODk4M1x1ODk4OFx1ODk4YVx1ODk5M1x1ODk5OFx1ODlhMVx1ODlh''@;'; put 'put ''OVx1ODlhNlx1ODlhY1x1ODlhZlx1ODliMlx1ODliYVx1ODliZFx1ODliZlx1ODljMFx1ODlkYVx1ODlkY1x1ODlkZFx1ODllN1x1ODlmNFx1ODlmOFx1OGEwM1x1OGExNlx1OGExMFx1OGEwY1x1OGExYlx1OGExZFx1OGEyNVx1OGEzNlx1OGE0MVx1OGE1Ylx1OGE1Mlx1OGE0Nlx1OGE0OFx1''@;'; put 'put ''OGE3Y1x1OGE2ZFx1OGE2Y1x1OGE2Mlx1OGE4NVx1OGE4Mlx1OGE4NFx1OGFhOFx1OGFhMVx1OGE5MVx1OGFhNVx1OGFhNlx1OGE5YVx1OGFhM1x1OGFjNFx1OGFjZFx1OGFjMlx1OGFkYVx1OGFlYlx1OGFmM1x1OGFlN1x1ZmZmZFx1OGFlNFx1OGFmMVx1OGIxNFx1OGFlMFx1OGFlMlx1OGFm''@;'; put 'put ''N1x1OGFkZVx1OGFkYlx1OGIwY1x1OGIwN1x1OGIxYVx1OGFlMVx1OGIxNlx1OGIxMFx1OGIxN1x1OGIyMFx1OGIzM1x1OTdhYlx1OGIyNlx1OGIyYlx1OGIzZVx1OGIyOFx1OGI0MVx1OGI0Y1x1OGI0Zlx1OGI0ZVx1OGI0OVx1OGI1Nlx1OGI1Ylx1OGI1YVx1OGI2Ylx1OGI1Zlx1OGI2Y1x1''@;'; put 'put ''OGI2Zlx1OGI3NFx1OGI3ZFx1OGI4MFx1OGI4Y1x1OGI4ZVx1OGI5Mlx1OGI5M1x1OGI5Nlx1OGI5OVx1OGI5YVx1OGMzYVx1OGM0MVx1OGMzZlx1OGM0OFx1OGM0Y1x1OGM0ZVx1OGM1MFx1OGM1NVx1OGM2Mlx1OGM2Y1x1OGM3OFx1OGM3YVx1OGM4Mlx1OGM4OVx1OGM4NVx1OGM4YVx1OGM4''@;'; put 'put ''ZFx1OGM4ZVx1OGM5NFx1OGM3Y1x1OGM5OFx1NjIxZFx1OGNhZFx1OGNhYVx1OGNiZFx1OGNiMlx1OGNiM1x1OGNhZVx1OGNiNlx1OGNjOFx1OGNjMVx1OGNlNFx1OGNlM1x1OGNkYVx1OGNmZFx1OGNmYVx1OGNmYlx1OGQwNFx1OGQwNVx1OGQwYVx1OGQwN1x1OGQwZlx1OGQwZFx1OGQxMFx1''@;'; put 'put ''OWY0ZVx1OGQxM1x1OGNjZFx1OGQxNFx1OGQxNlx1OGQ2N1x1OGQ2ZFx1OGQ3MVx1OGQ3M1x1OGQ4MVx1OGQ5OVx1OGRjMlx1OGRiZVx1OGRiYVx1OGRjZlx1OGRkYVx1OGRkNlx1OGRjY1x1OGRkYlx1OGRjYlx1OGRlYVx1OGRlYlx1OGRkZlx1OGRlM1x1OGRmY1x1OGUwOFx1OGUwOVx1OGRm''@;'; put 'put ''Zlx1OGUxZFx1OGUxZVx1OGUxMFx1OGUxZlx1OGU0Mlx1OGUzNVx1OGUzMFx1OGUzNFx1OGU0YVx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzBdW21dXT01ODg4MCtt''@;'; put 'put ''LFJbNTg4ODArbV09eFsyMzBdW21dKTtmb3IoeFsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRcdThlNjBcdThlMmFcdThlNjNcdThlNTVcdThlNzZcdThl''@;'; put 'put ''NzJcdThlN2NcdThlODFcdThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThlYTFcdThlYWNcdThlYjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThlZGJcdThlZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVc''@;'; put 'put ''dThmMGFcdThmMDVcdThmMTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2JcdThmMzlcdThmNDVcdThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdcdThmNWNcdWZmZmRcdThmNjJcdThmNjNcdThmNjRcdThm''@;'; put 'put ''OWNcdThmOWZcdThmYTNcdThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThmZjlcdThmZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkwMTZcdTkwMGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjhc''@;'; put 'put ''dTkwNGZcdTkwNTBcdTkwNTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZcdTkwNzZcdTk2YThcdTkwNzJcdTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlcdTkwOGZcdTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkw''@;'; put 'put ''ZTRcdTYyNDhcdTkwZGJcdTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkxNjVcdTkxNjlcdTkxNzNcdTkxNzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkxYWZcdTkxYWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFc''@;'; put 'put ''dTkxYzlcdTkxY2JcdTkxZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZcdTkyMTRcdTkyMmNcdTkyMTVcdTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRcdTkyNDhcdTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTky''@;'; put 'put ''OTZcdTkyOTNcdTkyOWJcdTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmVcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjMx''@;'; put 'put ''XVttXV09NTkxMzYrbSxSWzU5MTM2K21dPXhbMjMxXVttXSk7Zm9yKHhbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5''@;'; put 'put ''MzZlXHU5MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5M2Q2XHU5M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNh''@;'; put 'put ''XHU5NDQxXHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVlXHU5NDZhXHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5XHVmZmZkXHU5NWEwXHU5''@;'; put 'put ''NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3''@;'; put 'put ''XHU5NjVjXHU5NjVlXHU5NjVkXHU5NjVmXHU5NjY2XHU5NjcyXHU5NjZjXHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5''@;'; put 'put ''NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5NzBlXHU5NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQy''@;'; put 'put ''XHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5NzgxXHU5NzdhXHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5''@;'; put 'put ''N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5ODM3XHU5ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzJdW21dLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihvZVt4WzIzMl1bbV1dPTU5MzkyK20sUls1OTM5MittXT14WzIzMl1bbV0pO2Zvcih4WzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg3MVx1OTg3NFx1OTg3M1x1OThhYVx1OThhZlx1OThiMVx1OThiNlx1OThjNFx1''@;'; put 'put ''OThjM1x1OThjNlx1OThlOVx1OThlYlx1OTkwM1x1OTkwOVx1OTkxMlx1OTkxNFx1OTkxOFx1OTkyMVx1OTkxZFx1OTkxZVx1OTkyNFx1OTkyMFx1OTkyY1x1OTkyZVx1OTkzZFx1OTkzZVx1OTk0Mlx1OTk0OVx1OTk0NVx1OTk1MFx1OTk0Ylx1OTk1MVx1OTk1Mlx1OTk0Y1x1OTk1NVx1OTk5''@;'; put 'put ''N1x1OTk5OFx1OTlhNVx1OTlhZFx1OTlhZVx1OTliY1x1OTlkZlx1OTlkYlx1OTlkZFx1OTlkOFx1OTlkMVx1OTllZFx1OTllZVx1OTlmMVx1OTlmMlx1OTlmYlx1OTlmOFx1OWEwMVx1OWEwZlx1OWEwNVx1OTllMlx1OWExOVx1OWEyYlx1OWEzN1x1OWE0NVx1OWE0Mlx1OWE0MFx1OWE0M1x1''@;'; put 'put ''ZmZmZFx1OWEzZVx1OWE1NVx1OWE0ZFx1OWE1Ylx1OWE1N1x1OWE1Zlx1OWE2Mlx1OWE2NVx1OWE2NFx1OWE2OVx1OWE2Ylx1OWE2YVx1OWFhZFx1OWFiMFx1OWFiY1x1OWFjMFx1OWFjZlx1OWFkMVx1OWFkM1x1OWFkNFx1OWFkZVx1OWFkZlx1OWFlMlx1OWFlM1x1OWFlNlx1OWFlZlx1OWFl''@;'; put 'put ''Ylx1OWFlZVx1OWFmNFx1OWFmMVx1OWFmN1x1OWFmYlx1OWIwNlx1OWIxOFx1OWIxYVx1OWIxZlx1OWIyMlx1OWIyM1x1OWIyNVx1OWIyN1x1OWIyOFx1OWIyOVx1OWIyYVx1OWIyZVx1OWIyZlx1OWIzMlx1OWI0NFx1OWI0M1x1OWI0Zlx1OWI0ZFx1OWI0ZVx1OWI1MVx1OWI1OFx1OWI3NFx1''@;'; put 'put ''OWI5M1x1OWI4M1x1OWI5MVx1OWI5Nlx1OWI5N1x1OWI5Zlx1OWJhMFx1OWJhOFx1OWJiNFx1OWJjMFx1OWJjYVx1OWJiOVx1OWJjNlx1OWJjZlx1OWJkMVx1OWJkMlx1OWJlM1x1OWJlMlx1OWJlNFx1OWJkNFx1OWJlMVx1OWMzYVx1OWJmMlx1OWJmMVx1OWJmMFx1OWMxNVx1OWMxNFx1OWMw''@;'; put 'put ''OVx1OWMxM1x1OWMwY1x1OWMwNlx1OWMwOFx1OWMxMlx1OWMwYVx1OWMwNFx1OWMyZVx1OWMxYlx1OWMyNVx1OWMyNFx1OWMyMVx1OWMzMFx1OWM0N1x1OWMzMlx1OWM0Nlx1OWMzZVx1OWM1YVx1OWM2MFx1OWM2N1x1OWM3Nlx1OWM3OFx1OWNlN1x1OWNlY1x1OWNmMFx1OWQwOVx1OWQwOFx1''@;'; put 'put ''OWNlYlx1OWQwM1x1OWQwNlx1OWQyYVx1OWQyNlx1OWRhZlx1OWQyM1x1OWQxZlx1OWQ0NFx1OWQxNVx1OWQxMlx1OWQ0MVx1OWQzZlx1OWQzZVx1OWQ0Nlx1OWQ0OFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMzXVtt''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzNdW21dXT01OTY0OCttLFJbNTk2NDgrbV09eFsyMzNdW21dKTtmb3IoeFsyMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlc''@;'; put 'put ''dTlkNzJcdTlkODlcdTlkODdcdTlkYWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFcdTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhcdTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTll''@;'; put 'put ''MWVcdTllNzVcdTllNzlcdTllN2RcdTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTllYWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTllZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVc''@;'; put 'put ''dTllZThcdTllZWZcdWZmZmRcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFcdTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlm''@;'; put 'put ''NmFcdTlmNzdcdTlmNzJcdTlmNzZcdTlmOTVcdTlmOWNcdTlmYTBcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzRdLmxlbmd0aDsrK20pNjU1''@;'; put 'put ''MzMhPT14WzIzNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM0XVttXV09NTk5MDQrbSxSWzU5OTA0K21dPXhbMjM0XVttXSk7Zm9yKHhbMjM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4''@;'; put 'put ''XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1''@;'; put 'put ''MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBlXHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1''@;'; put 'put ''XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmZmZkXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1''@;'; put 'put ''ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3XHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMwXHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRl''@;'; put 'put ''XHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2''@;'; put 'put ''OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZmXHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVj''@;'; put 'put ''XHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3MmIxXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM3XS5s''@;'; put 'put ''ZW5ndGg7KyttKTY1NTMzIT09eFsyMzddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzN11bbV1dPTYwNjcyK20sUls2MDY3MittXT14WzIzN11bbV0pO2Zvcih4WzIzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzJiZVx1NzMy''@;'; put 'put ''NFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZhNlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1''@;'; put 'put ''Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3''@;'; put 'put ''Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ZmZmZFx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1''@;'; put 'put ''OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2''@;'; put 'put ''N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNjNlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1''@;'; put 'put ''OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1OWFkY1x1OWI3NVx1OWI3Mlx1OWI4Zlx1OWJiMVx1OWJi''@;'; put 'put ''Ylx1OWMwMFx1OWQ3MFx1OWQ2Ylx1ZmEyZFx1OWUxOVx1OWVkMVx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZlMlx1ZmZlNFx1ZmYwN1x1ZmYwMlx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09''@;'; put 'put ''MDttIT14WzIzOF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzhdW21dXT02MDkyOCttLFJbNjA5MjgrbV09eFsyMzhdW21dKTtmb3IoeFsyNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTIxNzBcdTIxNzFcdTIxNzJcdTIxNzNcdTIxNzRcdTIxNzVcdTIxNzZcdTIxNzdcdTIxNzhcdTIxNzlcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFc''@;'; put 'put ''dTIyMzVcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRm''@;'; put 'put ''ZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdWZmZmRcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNc''@;'; put 'put ''dTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVj''@;'; put 'put ''YmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZc''@;'; put 'put ''dTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3''@;'; put 'put ''YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdWZmZmRcdWZmZmRcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxtPTA7bSE9eFsyNTBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI1MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjUwXVttXV09NjRlMyttLFJbNjRlMyttXT14WzI1MF1bbV0pO2Zvcih4WzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1NmQ5Nlx1NmRhY1x1NmRjZlx1NmRmOFx1NmRmMlx1NmRmY1x1NmUzOVx1NmU1Y1x1NmUyN1x1NmUzY1x1NmViZlx1NmY4OFx1NmZiNVx1NmZmNVx1NzAwNVx1NzAwN1x1NzAyOFx1NzA4NVx1NzBhYlx1NzEwZlx1NzEwNFx1NzE1Y1x1NzE0Nlx1NzE0N1x1ZmExNVx1''@;'; put 'put ''NzFjMVx1NzFmZVx1NzJiMVx1NzJiZVx1NzMyNFx1ZmExNlx1NzM3N1x1NzNiZFx1NzNjOVx1NzNkNlx1NzNlM1x1NzNkMlx1NzQwN1x1NzNmNVx1NzQyNlx1NzQyYVx1NzQyOVx1NzQyZVx1NzQ2Mlx1NzQ4OVx1NzQ5Zlx1NzUwMVx1NzU2Zlx1NzY4Mlx1NzY5Y1x1NzY5ZVx1NzY5Ylx1NzZh''@;'; put 'put ''Nlx1ZmExN1x1Nzc0Nlx1NTJhZlx1NzgyMVx1Nzg0ZVx1Nzg2NFx1Nzg3YVx1NzkzMFx1ZmExOFx1ZmExOVx1ZmZmZFx1ZmExYVx1Nzk5NFx1ZmExYlx1Nzk5Ylx1N2FkMVx1N2FlN1x1ZmExY1x1N2FlYlx1N2I5ZVx1ZmExZFx1N2Q0OFx1N2Q1Y1x1N2RiN1x1N2RhMFx1N2RkNlx1N2U1Mlx1''@;'; put 'put ''N2Y0N1x1N2ZhMVx1ZmExZVx1ODMwMVx1ODM2Mlx1ODM3Zlx1ODNjN1x1ODNmNlx1ODQ0OFx1ODRiNFx1ODU1M1x1ODU1OVx1ODU2Ylx1ZmExZlx1ODViMFx1ZmEyMFx1ZmEyMVx1ODgwN1x1ODhmNVx1OGExMlx1OGEzN1x1OGE3OVx1OGFhN1x1OGFiZVx1OGFkZlx1ZmEyMlx1OGFmNlx1OGI1''@;'; put 'put ''M1x1OGI3Zlx1OGNmMFx1OGNmNFx1OGQxMlx1OGQ3Nlx1ZmEyM1x1OGVjZlx1ZmEyNFx1ZmEyNVx1OTA2N1x1OTBkZVx1ZmEyNlx1OTExNVx1OTEyN1x1OTFkYVx1OTFkN1x1OTFkZVx1OTFlZFx1OTFlZVx1OTFlNFx1OTFlNVx1OTIwNlx1OTIxMFx1OTIwYVx1OTIzYVx1OTI0MFx1OTIzY1x1''@;'; put 'put ''OTI0ZVx1OTI1OVx1OTI1MVx1OTIzOVx1OTI2N1x1OTJhN1x1OTI3N1x1OTI3OFx1OTJlN1x1OTJkN1x1OTJkOVx1OTJkMFx1ZmEyN1x1OTJkNVx1OTJlMFx1OTJkM1x1OTMyNVx1OTMyMVx1OTJmYlx1ZmEyOFx1OTMxZVx1OTJmZlx1OTMxZFx1OTMwMlx1OTM3MFx1OTM1N1x1OTNhNFx1OTNj''@;'; put 'put ''Nlx1OTNkZVx1OTNmOFx1OTQzMVx1OTQ0NVx1OTQ0OFx1OTU5Mlx1ZjlkY1x1ZmEyOVx1OTY5ZFx1OTZhZlx1OTczM1x1OTczYlx1OTc0M1x1OTc0ZFx1OTc0Zlx1OTc1MVx1OTc1NVx1OTg1N1x1OTg2NVx1ZmEyYVx1ZmEyYlx1OTkyN1x1ZmEyY1x1OTk5ZVx1OWE0ZVx1OWFkOVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI1MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjUxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNTFdW21dXT02NDI1NittLFJbNjQyNTYrbV09eFsyNTFdW21dKTtmb3IoeFsyNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNTJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI1Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjUyXVttXV09NjQ1MTIrbSxSWzY0NTEyK21dPXhbMjUyXVttXSk7cmV0dXJue2VuYzpvZSxkZWM6Un19KCksTWVb''@;'; put 'put ''OTM2XT1mdW5jdGlvbigpe3ZhciBtLFI9W10sb2U9e30seD1bXTtmb3IoeFswXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFc''@;'; put 'put ''IiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFswXS5sZW5ndGg7KyttKTY1NTMzIT09eFswXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFswXVttXV09MCttLFJbMCttXT14WzBdW21dKTtmb3IoeFsxMjldPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMDZcdTRlMGZcdTRlMTJcdTRlMTdcdTRlMWZcdTRlMjBcdTRlMjFcdTRlMjNcdTRlMjZcdTRlMjlcdTRlMmVcdTRlMmZcdTRlMzFcdTRlMzNcdTRlMzVcdTRlMzdcdTRlM2NcdTRl''@;'; put 'put ''NDBcdTRlNDFcdTRlNDJcdTRlNDRcdTRlNDZcdTRlNGFcdTRlNTFcdTRlNTVcdTRlNTdcdTRlNWFcdTRlNWJcdTRlNjJcdTRlNjNcdTRlNjRcdTRlNjVcdTRlNjdcdTRlNjhcdTRlNmFcdTRlNmJcdTRlNmNcdTRlNmRcdTRlNmVcdTRlNmZcdTRlNzJcdTRlNzRcdTRlNzVcdTRlNzZcdTRlNzdc''@;'; put 'put ''dTRlNzhcdTRlNzlcdTRlN2FcdTRlN2JcdTRlN2NcdTRlN2RcdTRlN2ZcdTRlODBcdTRlODFcdTRlODJcdTRlODNcdTRlODRcdTRlODVcdTRlODdcdTRlOGFcdWZmZmRcdTRlOTBcdTRlOTZcdTRlOTdcdTRlOTlcdTRlOWNcdTRlOWRcdTRlOWVcdTRlYTNcdTRlYWFcdTRlYWZcdTRlYjBcdTRl''@;'; put 'put ''YjFcdTRlYjRcdTRlYjZcdTRlYjdcdTRlYjhcdTRlYjlcdTRlYmNcdTRlYmRcdTRlYmVcdTRlYzhcdTRlY2NcdTRlY2ZcdTRlZDBcdTRlZDJcdTRlZGFcdTRlZGJcdTRlZGNcdTRlZTBcdTRlZTJcdTRlZTZcdTRlZTdcdTRlZTlcdTRlZWRcdTRlZWVcdTRlZWZcdTRlZjFcdTRlZjRcdTRlZjhc''@;'; put 'put ''dTRlZjlcdTRlZmFcdTRlZmNcdTRlZmVcdTRmMDBcdTRmMDJcdTRmMDNcdTRmMDRcdTRmMDVcdTRmMDZcdTRmMDdcdTRmMDhcdTRmMGJcdTRmMGNcdTRmMTJcdTRmMTNcdTRmMTRcdTRmMTVcdTRmMTZcdTRmMWNcdTRmMWRcdTRmMjFcdTRmMjNcdTRmMjhcdTRmMjlcdTRmMmNcdTRmMmRcdTRm''@;'; put 'put ''MmVcdTRmMzFcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2VcdTRmM2ZcdTRmNDBcdTRmNDFcdTRmNDJcdTRmNDRcdTRmNDVcdTRmNDdcdTRmNDhcdTRmNDlcdTRmNGFcdTRmNGJcdTRmNGNcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNjFcdTRmNjJcdTRmNjZcdTRmNjhcdTRmNmFc''@;'; put 'put ''dTRmNmJcdTRmNmRcdTRmNmVcdTRmNzFcdTRmNzJcdTRmNzVcdTRmNzdcdTRmNzhcdTRmNzlcdTRmN2FcdTRmN2RcdTRmODBcdTRmODFcdTRmODJcdTRmODVcdTRmODZcdTRmODdcdTRmOGFcdTRmOGNcdTRmOGVcdTRmOTBcdTRmOTJcdTRmOTNcdTRmOTVcdTRmOTZcdTRmOThcdTRmOTlcdTRm''@;'; put 'put ''OWFcdTRmOWNcdTRmOWVcdTRmOWZcdTRmYTFcdTRmYTJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMjldLmxlbmd0aDsrK20pNjU1MzMhPT14WzEyOV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTI5XVttXV09MzMwMjQrbSxSWzMzMDI0K21dPXhbMTI5XVttXSk7Zm9yKHhbMTMwXT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZmE0XHU0ZmFiXHU0ZmFkXHU0ZmIwXHU0ZmIxXHU0ZmIyXHU0ZmIzXHU0ZmI0XHU0ZmI2XHU0ZmI3XHU0ZmI4XHU0ZmI5XHU0ZmJhXHU0ZmJiXHU0ZmJjXHU0ZmJkXHU0ZmJlXHU0ZmMwXHU0''@;'; put 'put ''ZmMxXHU0ZmMyXHU0ZmM2XHU0ZmM3XHU0ZmM4XHU0ZmM5XHU0ZmNiXHU0ZmNjXHU0ZmNkXHU0ZmQyXHU0ZmQzXHU0ZmQ0XHU0ZmQ1XHU0ZmQ2XHU0ZmQ5XHU0ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2''@;'; put 'put ''XHU0ZmY3XHU0ZmY5XHU0ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmXHU1MDAwXHU1MDAxXHU1MDAyXHU1MDAzXHU1MDA0XHU1MDA1XHU1MDA2XHU1MDA3XHU1MDA4XHU1MDA5XHU1MDBhXHVmZmZkXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDExXHU1MDEzXHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1''@;'; put 'put ''MDFkXHU1MDFlXHU1MDIwXHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmXHU1MDMwXHU1MDMxXHU1MDMyXHU1MDMzXHU1MDM0XHU1MDM1XHU1MDM2XHU1MDM3XHU1MDM4XHU1MDM5XHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2''@;'; put 'put ''XHU1MDQ5XHU1MDRhXHU1MDRiXHU1MDRkXHU1MDUwXHU1MDUxXHU1MDUyXHU1MDUzXHU1MDU0XHU1MDU2XHU1MDU3XHU1MDU4XHU1MDU5XHU1MDViXHU1MDVkXHU1MDVlXHU1MDVmXHU1MDYwXHU1MDYxXHU1MDYyXHU1MDYzXHU1MDY0XHU1MDY2XHU1MDY3XHU1MDY4XHU1MDY5XHU1MDZhXHU1''@;'; put 'put ''MDZiXHU1MDZkXHU1MDZlXHU1MDZmXHU1MDcwXHU1MDcxXHU1MDcyXHU1MDczXHU1MDc0XHU1MDc1XHU1MDc4XHU1MDc5XHU1MDdhXHU1MDdjXHU1MDdkXHU1MDgxXHU1MDgyXHU1MDgzXHU1MDg0XHU1MDg2XHU1MDg3XHU1MDg5XHU1MDhhXHU1MDhiXHU1MDhjXHU1MDhlXHU1MDhmXHU1MDkw''@;'; put 'put ''XHU1MDkxXHU1MDkyXHU1MDkzXHU1MDk0XHU1MDk1XHU1MDk2XHU1MDk3XHU1MDk4XHU1MDk5XHU1MDlhXHU1MDliXHU1MDljXHU1MDlkXHU1MDllXHU1MDlmXHU1MGEwXHU1MGExXHU1MGEyXHU1MGE0XHU1MGE2XHU1MGFhXHU1MGFiXHU1MGFkXHU1MGFlXHU1MGFmXHU1MGIwXHU1MGIxXHU1''@;'; put 'put ''MGIzXHU1MGI0XHU1MGI1XHU1MGI2XHU1MGI3XHU1MGI4XHU1MGI5XHU1MGJjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTMwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzMF1bbV1dPTMzMjgwK20sUlszMzI4MCttXT14WzEzMF1bbV0p''@;'; put 'put ''O2Zvcih4WzEzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTBiZFx1NTBiZVx1NTBiZlx1NTBjMFx1NTBjMVx1NTBjMlx1NTBjM1x1NTBjNFx1NTBjNVx1NTBjNlx1NTBjN1x1NTBjOFx1NTBjOVx1NTBjYVx1NTBjYlx1NTBjY1x1''@;'; put 'put ''NTBjZFx1NTBjZVx1NTBkMFx1NTBkMVx1NTBkMlx1NTBkM1x1NTBkNFx1NTBkNVx1NTBkN1x1NTBkOFx1NTBkOVx1NTBkYlx1NTBkY1x1NTBkZFx1NTBkZVx1NTBkZlx1NTBlMFx1NTBlMVx1NTBlMlx1NTBlM1x1NTBlNFx1NTBlNVx1NTBlOFx1NTBlOVx1NTBlYVx1NTBlYlx1NTBlZlx1NTBm''@;'; put 'put ''MFx1NTBmMVx1NTBmMlx1NTBmNFx1NTBmNlx1NTBmN1x1NTBmOFx1NTBmOVx1NTBmYVx1NTBmY1x1NTBmZFx1NTBmZVx1NTBmZlx1NTEwMFx1NTEwMVx1NTEwMlx1NTEwM1x1NTEwNFx1NTEwNVx1NTEwOFx1ZmZmZFx1NTEwOVx1NTEwYVx1NTEwY1x1NTEwZFx1NTEwZVx1NTEwZlx1NTExMFx1''@;'; put 'put ''NTExMVx1NTExM1x1NTExNFx1NTExNVx1NTExNlx1NTExN1x1NTExOFx1NTExOVx1NTExYVx1NTExYlx1NTExY1x1NTExZFx1NTExZVx1NTExZlx1NTEyMFx1NTEyMlx1NTEyM1x1NTEyNFx1NTEyNVx1NTEyNlx1NTEyN1x1NTEyOFx1NTEyOVx1NTEyYVx1NTEyYlx1NTEyY1x1NTEyZFx1NTEy''@;'; put 'put ''ZVx1NTEyZlx1NTEzMFx1NTEzMVx1NTEzMlx1NTEzM1x1NTEzNFx1NTEzNVx1NTEzNlx1NTEzN1x1NTEzOFx1NTEzOVx1NTEzYVx1NTEzYlx1NTEzY1x1NTEzZFx1NTEzZVx1NTE0Mlx1NTE0N1x1NTE0YVx1NTE0Y1x1NTE0ZVx1NTE0Zlx1NTE1MFx1NTE1Mlx1NTE1M1x1NTE1N1x1NTE1OFx1''@;'; put 'put ''NTE1OVx1NTE1Ylx1NTE1ZFx1NTE1ZVx1NTE1Zlx1NTE2MFx1NTE2MVx1NTE2M1x1NTE2NFx1NTE2Nlx1NTE2N1x1NTE2OVx1NTE2YVx1NTE2Zlx1NTE3Mlx1NTE3YVx1NTE3ZVx1NTE3Zlx1NTE4M1x1NTE4NFx1NTE4Nlx1NTE4N1x1NTE4YVx1NTE4Ylx1NTE4ZVx1NTE4Zlx1NTE5MFx1NTE5''@;'; put 'put ''MVx1NTE5M1x1NTE5NFx1NTE5OFx1NTE5YVx1NTE5ZFx1NTE5ZVx1NTE5Zlx1NTFhMVx1NTFhM1x1NTFhNlx1NTFhN1x1NTFhOFx1NTFhOVx1NTFhYVx1NTFhZFx1NTFhZVx1NTFiNFx1NTFiOFx1NTFiOVx1NTFiYVx1NTFiZVx1NTFiZlx1NTFjMVx1NTFjMlx1NTFjM1x1NTFjNVx1NTFjOFx1''@;'; put 'put ''NTFjYVx1NTFjZFx1NTFjZVx1NTFkMFx1NTFkMlx1NTFkM1x1NTFkNFx1NTFkNVx1NTFkNlx1NTFkN1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTMxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzFdW21dXT0zMzUzNittLFJbMzM1MzYr''@;'; put 'put ''bV09eFsxMzFdW21dKTtmb3IoeFsxMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUxZDhcdTUxZDlcdTUxZGFcdTUxZGNcdTUxZGVcdTUxZGZcdTUxZTJcdTUxZTNcdTUxZTVcdTUxZTZcdTUxZTdcdTUxZThcdTUxZTlcdTUxZWFc''@;'; put 'put ''dTUxZWNcdTUxZWVcdTUxZjFcdTUxZjJcdTUxZjRcdTUxZjdcdTUxZmVcdTUyMDRcdTUyMDVcdTUyMDlcdTUyMGJcdTUyMGNcdTUyMGZcdTUyMTBcdTUyMTNcdTUyMTRcdTUyMTVcdTUyMWNcdTUyMWVcdTUyMWZcdTUyMjFcdTUyMjJcdTUyMjNcdTUyMjVcdTUyMjZcdTUyMjdcdTUyMmFcdTUy''@;'; put 'put ''MmNcdTUyMmZcdTUyMzFcdTUyMzJcdTUyMzRcdTUyMzVcdTUyM2NcdTUyM2VcdTUyNDRcdTUyNDVcdTUyNDZcdTUyNDdcdTUyNDhcdTUyNDlcdTUyNGJcdTUyNGVcdTUyNGZcdTUyNTJcdTUyNTNcdTUyNTVcdTUyNTdcdTUyNThcdWZmZmRcdTUyNTlcdTUyNWFcdTUyNWJcdTUyNWRcdTUyNWZc''@;'; put 'put ''dTUyNjBcdTUyNjJcdTUyNjNcdTUyNjRcdTUyNjZcdTUyNjhcdTUyNmJcdTUyNmNcdTUyNmRcdTUyNmVcdTUyNzBcdTUyNzFcdTUyNzNcdTUyNzRcdTUyNzVcdTUyNzZcdTUyNzdcdTUyNzhcdTUyNzlcdTUyN2FcdTUyN2JcdTUyN2NcdTUyN2VcdTUyODBcdTUyODNcdTUyODRcdTUyODVcdTUy''@;'; put 'put ''ODZcdTUyODdcdTUyODlcdTUyOGFcdTUyOGJcdTUyOGNcdTUyOGRcdTUyOGVcdTUyOGZcdTUyOTFcdTUyOTJcdTUyOTRcdTUyOTVcdTUyOTZcdTUyOTdcdTUyOThcdTUyOTlcdTUyOWFcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWVcdTUyYWZcdTUyYjBcdTUyYjRcdTUyYjVc''@;'; put 'put ''dTUyYjZcdTUyYjdcdTUyYjhcdTUyYjlcdTUyYmFcdTUyYmJcdTUyYmNcdTUyYmRcdTUyYzBcdTUyYzFcdTUyYzJcdTUyYzRcdTUyYzVcdTUyYzZcdTUyYzhcdTUyY2FcdTUyY2NcdTUyY2RcdTUyY2VcdTUyY2ZcdTUyZDFcdTUyZDNcdTUyZDRcdTUyZDVcdTUyZDdcdTUyZDlcdTUyZGFcdTUy''@;'; put 'put ''ZGJcdTUyZGNcdTUyZGRcdTUyZGVcdTUyZTBcdTUyZTFcdTUyZTJcdTUyZTNcdTUyZTVcdTUyZTZcdTUyZTdcdTUyZThcdTUyZTlcdTUyZWFcdTUyZWJcdTUyZWNcdTUyZWRcdTUyZWVcdTUyZWZcdTUyZjFcdTUyZjJcdTUyZjNcdTUyZjRcdTUyZjVcdTUyZjZcdTUyZjdcdTUyZjhcdTUyZmJc''@;'; put 'put ''dTUyZmNcdTUyZmRcdTUzMDFcdTUzMDJcdTUzMDNcdTUzMDRcdTUzMDdcdTUzMDlcdTUzMGFcdTUzMGJcdTUzMGNcdTUzMGVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTMyXVttXV09MzM3''@;'; put 'put ''OTIrbSxSWzMzNzkyK21dPXhbMTMyXVttXSk7Zm9yKHhbMTMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzExXHU1MzEyXHU1MzEzXHU1MzE0XHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFmXHU1MzIyXHU1MzI0XHU1MzI1''@;'; put 'put ''XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzJmXHU1MzMwXHU1MzMxXHU1MzMyXHU1MzMzXHU1MzM0XHU1MzM1XHU1MzM2XHU1MzM3XHU1MzM4XHU1MzNjXHU1MzNkXHU1MzQwXHU1MzQyXHU1MzQ0XHU1MzQ2XHU1MzRiXHU1MzRjXHU1MzRkXHU1MzUwXHU1MzU0XHU1''@;'; put 'put ''MzU4XHU1MzU5XHU1MzViXHU1MzVkXHU1MzY1XHU1MzY4XHU1MzZhXHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc2XHU1Mzc5XHU1MzdiXHU1MzdjXHU1MzdkXHU1MzdlXHU1MzgwXHU1MzgxXHU1MzgzXHU1Mzg3XHU1Mzg4XHU1MzhhXHU1MzhlXHU1MzhmXHVmZmZkXHU1MzkwXHU1MzkxXHU1Mzky''@;'; put 'put ''XHU1MzkzXHU1Mzk0XHU1Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2FjXHU1M2FkXHU1M2FmXHU1M2IwXHU1M2IxXHU1M2IyXHU1M2IzXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2I5XHU1M2JhXHU1''@;'; put 'put ''M2JjXHU1M2JkXHU1M2JlXHU1M2MwXHU1M2MzXHU1M2M0XHU1M2M1XHU1M2M2XHU1M2M3XHU1M2NlXHU1M2NmXHU1M2QwXHU1M2QyXHU1M2QzXHU1M2Q1XHU1M2RhXHU1M2RjXHU1M2RkXHU1M2RlXHU1M2UxXHU1M2UyXHU1M2U3XHU1M2Y0XHU1M2ZhXHU1M2ZlXHU1M2ZmXHU1NDAwXHU1NDAy''@;'; put 'put ''XHU1NDA1XHU1NDA3XHU1NDBiXHU1NDE0XHU1NDE4XHU1NDE5XHU1NDFhXHU1NDFjXHU1NDIyXHU1NDI0XHU1NDI1XHU1NDJhXHU1NDMwXHU1NDMzXHU1NDM2XHU1NDM3XHU1NDNhXHU1NDNkXHU1NDNmXHU1NDQxXHU1NDQyXHU1NDQ0XHU1NDQ1XHU1NDQ3XHU1NDQ5XHU1NDRjXHU1NDRkXHU1''@;'; put 'put ''NDRlXHU1NDRmXHU1NDUxXHU1NDVhXHU1NDVkXHU1NDVlXHU1NDVmXHU1NDYwXHU1NDYxXHU1NDYzXHU1NDY1XHU1NDY3XHU1NDY5XHU1NDZhXHU1NDZiXHU1NDZjXHU1NDZkXHU1NDZlXHU1NDZmXHU1NDcwXHU1NDc0XHU1NDc5XHU1NDdhXHU1NDdlXHU1NDdmXHU1NDgxXHU1NDgzXHU1NDg1''@;'; put 'put ''XHU1NDg3XHU1NDg4XHU1NDg5XHU1NDhhXHU1NDhkXHU1NDkxXHU1NDkzXHU1NDk3XHU1NDk4XHU1NDljXHU1NDllXHU1NDlmXHU1NGEwXHU1NGExXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTMzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4''@;'; put 'put ''WzEzM11bbV1dPTM0MDQ4K20sUlszNDA0OCttXT14WzEzM11bbV0pO2Zvcih4WzEzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhMlx1NTRhNVx1NTRhZVx1NTRiMFx1NTRiMlx1NTRiNVx1NTRiNlx1NTRiN1x1NTRiOVx1NTRi''@;'; put 'put ''YVx1NTRiY1x1NTRiZVx1NTRjM1x1NTRjNVx1NTRjYVx1NTRjYlx1NTRkNlx1NTRkOFx1NTRkYlx1NTRlMFx1NTRlMVx1NTRlMlx1NTRlM1x1NTRlNFx1NTRlYlx1NTRlY1x1NTRlZlx1NTRmMFx1NTRmMVx1NTRmNFx1NTRmNVx1NTRmNlx1NTRmN1x1NTRmOFx1NTRmOVx1NTRmYlx1NTRmZVx1''@;'; put 'put ''NTUwMFx1NTUwMlx1NTUwM1x1NTUwNFx1NTUwNVx1NTUwOFx1NTUwYVx1NTUwYlx1NTUwY1x1NTUwZFx1NTUwZVx1NTUxMlx1NTUxM1x1NTUxNVx1NTUxNlx1NTUxN1x1NTUxOFx1NTUxOVx1NTUxYVx1NTUxY1x1NTUxZFx1NTUxZVx1NTUxZlx1NTUyMVx1NTUyNVx1NTUyNlx1ZmZmZFx1NTUy''@;'; put 'put ''OFx1NTUyOVx1NTUyYlx1NTUyZFx1NTUzMlx1NTUzNFx1NTUzNVx1NTUzNlx1NTUzOFx1NTUzOVx1NTUzYVx1NTUzYlx1NTUzZFx1NTU0MFx1NTU0Mlx1NTU0NVx1NTU0N1x1NTU0OFx1NTU0Ylx1NTU0Y1x1NTU0ZFx1NTU0ZVx1NTU0Zlx1NTU1MVx1NTU1Mlx1NTU1M1x1NTU1NFx1NTU1N1x1''@;'; put 'put ''NTU1OFx1NTU1OVx1NTU1YVx1NTU1Ylx1NTU1ZFx1NTU1ZVx1NTU1Zlx1NTU2MFx1NTU2Mlx1NTU2M1x1NTU2OFx1NTU2OVx1NTU2Ylx1NTU2Zlx1NTU3MFx1NTU3MVx1NTU3Mlx1NTU3M1x1NTU3NFx1NTU3OVx1NTU3YVx1NTU3ZFx1NTU3Zlx1NTU4NVx1NTU4Nlx1NTU4Y1x1NTU4ZFx1NTU4''@;'; put 'put ''ZVx1NTU5MFx1NTU5Mlx1NTU5M1x1NTU5NVx1NTU5Nlx1NTU5N1x1NTU5YVx1NTU5Ylx1NTU5ZVx1NTVhMFx1NTVhMVx1NTVhMlx1NTVhM1x1NTVhNFx1NTVhNVx1NTVhNlx1NTVhOFx1NTVhOVx1NTVhYVx1NTVhYlx1NTVhY1x1NTVhZFx1NTVhZVx1NTVhZlx1NTViMFx1NTViMlx1NTViNFx1''@;'; put 'put ''NTViNlx1NTViOFx1NTViYVx1NTViY1x1NTViZlx1NTVjMFx1NTVjMVx1NTVjMlx1NTVjM1x1NTVjNlx1NTVjN1x1NTVjOFx1NTVjYVx1NTVjYlx1NTVjZVx1NTVjZlx1NTVkMFx1NTVkNVx1NTVkN1x1NTVkOFx1NTVkOVx1NTVkYVx1NTVkYlx1NTVkZVx1NTVlMFx1NTVlMlx1NTVlN1x1NTVl''@;'; put 'put ''OVx1NTVlZFx1NTVlZVx1NTVmMFx1NTVmMVx1NTVmNFx1NTVmNlx1NTVmOFx1NTVmOVx1NTVmYVx1NTVmYlx1NTVmY1x1NTVmZlx1NTYwMlx1NTYwM1x1NTYwNFx1NTYwNVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM0XVttXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYob2VbeFsxMzRdW21dXT0zNDMwNCttLFJbMzQzMDQrbV09eFsxMzRdW21dKTtmb3IoeFsxMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2MDZcdTU2MDdcdTU2MGFcdTU2MGJcdTU2MGRcdTU2MTBcdTU2MTFcdTU2''@;'; put 'put ''MTJcdTU2MTNcdTU2MTRcdTU2MTVcdTU2MTZcdTU2MTdcdTU2MTlcdTU2MWFcdTU2MWNcdTU2MWRcdTU2MjBcdTU2MjFcdTU2MjJcdTU2MjVcdTU2MjZcdTU2MjhcdTU2MjlcdTU2MmFcdTU2MmJcdTU2MmVcdTU2MmZcdTU2MzBcdTU2MzNcdTU2MzVcdTU2MzdcdTU2MzhcdTU2M2FcdTU2M2Nc''@;'; put 'put ''dTU2M2RcdTU2M2VcdTU2NDBcdTU2NDFcdTU2NDJcdTU2NDNcdTU2NDRcdTU2NDVcdTU2NDZcdTU2NDdcdTU2NDhcdTU2NDlcdTU2NGFcdTU2NGJcdTU2NGZcdTU2NTBcdTU2NTFcdTU2NTJcdTU2NTNcdTU2NTVcdTU2NTZcdTU2NWFcdTU2NWJcdTU2NWRcdTU2NWVcdTU2NWZcdTU2NjBcdTU2''@;'; put 'put ''NjFcdWZmZmRcdTU2NjNcdTU2NjVcdTU2NjZcdTU2NjdcdTU2NmRcdTU2NmVcdTU2NmZcdTU2NzBcdTU2NzJcdTU2NzNcdTU2NzRcdTU2NzVcdTU2NzdcdTU2NzhcdTU2NzlcdTU2N2FcdTU2N2RcdTU2N2VcdTU2N2ZcdTU2ODBcdTU2ODFcdTU2ODJcdTU2ODNcdTU2ODRcdTU2ODdcdTU2ODhc''@;'; put 'put ''dTU2ODlcdTU2OGFcdTU2OGJcdTU2OGNcdTU2OGRcdTU2OTBcdTU2OTFcdTU2OTJcdTU2OTRcdTU2OTVcdTU2OTZcdTU2OTdcdTU2OThcdTU2OTlcdTU2OWFcdTU2OWJcdTU2OWNcdTU2OWRcdTU2OWVcdTU2OWZcdTU2YTBcdTU2YTFcdTU2YTJcdTU2YTRcdTU2YTVcdTU2YTZcdTU2YTdcdTU2''@;'; put 'put ''YThcdTU2YTlcdTU2YWFcdTU2YWJcdTU2YWNcdTU2YWRcdTU2YWVcdTU2YjBcdTU2YjFcdTU2YjJcdTU2YjNcdTU2YjRcdTU2YjVcdTU2YjZcdTU2YjhcdTU2YjlcdTU2YmFcdTU2YmJcdTU2YmRcdTU2YmVcdTU2YmZcdTU2YzBcdTU2YzFcdTU2YzJcdTU2YzNcdTU2YzRcdTU2YzVcdTU2YzZc''@;'; put 'put ''dTU2YzdcdTU2YzhcdTU2YzlcdTU2Y2JcdTU2Y2NcdTU2Y2RcdTU2Y2VcdTU2Y2ZcdTU2ZDBcdTU2ZDFcdTU2ZDJcdTU2ZDNcdTU2ZDVcdTU2ZDZcdTU2ZDhcdTU2ZDlcdTU2ZGNcdTU2ZTNcdTU2ZTVcdTU2ZTZcdTU2ZTdcdTU2ZThcdTU2ZTlcdTU2ZWFcdTU2ZWNcdTU2ZWVcdTU2ZWZcdTU2''@;'; put 'put ''ZjJcdTU2ZjNcdTU2ZjZcdTU2ZjdcdTU2ZjhcdTU2ZmJcdTU2ZmNcdTU3MDBcdTU3MDFcdTU3MDJcdTU3MDVcdTU3MDdcdTU3MGJcdTU3MGNcdTU3MGRcdTU3MGVcdTU3MGZcdTU3MTBcdTU3MTFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEz''@;'; put 'put ''NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTM1XVttXV09MzQ1NjArbSxSWzM0NTYwK21dPXhbMTM1XVttXSk7Zm9yKHhbMTM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NzEyXHU1NzEzXHU1NzE0XHU1NzE1XHU1NzE2XHU1''@;'; put 'put ''NzE3XHU1NzE4XHU1NzE5XHU1NzFhXHU1NzFiXHU1NzFkXHU1NzFlXHU1NzIwXHU1NzIxXHU1NzIyXHU1NzI0XHU1NzI1XHU1NzI2XHU1NzI3XHU1NzJiXHU1NzMxXHU1NzMyXHU1NzM0XHU1NzM1XHU1NzM2XHU1NzM3XHU1NzM4XHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0''@;'; put 'put ''XHU1NzQ1XHU1NzQ2XHU1NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyXHU1NzUzXHU1NzU0XHU1NzU1XHU1NzU2XHU1NzU4XHU1NzU5XHU1NzYyXHU1NzYzXHU1NzY1XHU1NzY3XHU1NzZjXHU1NzZlXHU1NzcwXHU1NzcxXHU1NzcyXHU1Nzc0XHU1Nzc1XHU1Nzc4XHU1Nzc5XHU1NzdhXHU1NzdkXHU1''@;'; put 'put ''NzdlXHU1NzdmXHU1NzgwXHVmZmZkXHU1NzgxXHU1Nzg3XHU1Nzg4XHU1Nzg5XHU1NzhhXHU1NzhkXHU1NzhlXHU1NzhmXHU1NzkwXHU1NzkxXHU1Nzk0XHU1Nzk1XHU1Nzk2XHU1Nzk3XHU1Nzk4XHU1Nzk5XHU1NzlhXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2Fh''@;'; put 'put ''XHU1N2FjXHU1N2FmXHU1N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5XHU1N2JhXHU1N2JiXHU1N2JjXHU1N2JkXHU1N2JlXHU1N2JmXHU1N2MwXHU1N2MxXHU1N2M0XHU1N2M1XHU1N2M2XHU1N2M3XHU1N2M4XHU1N2M5XHU1N2NhXHU1N2NjXHU1N2NkXHU1N2QwXHU1''@;'; put 'put ''N2QxXHU1N2QzXHU1N2Q2XHU1N2Q3XHU1N2RiXHU1N2RjXHU1N2RlXHU1N2UxXHU1N2UyXHU1N2UzXHU1N2U1XHU1N2U2XHU1N2U3XHU1N2U4XHU1N2U5XHU1N2VhXHU1N2ViXHU1N2VjXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2Zj''@;'; put 'put ''XHU1N2ZlXHU1N2ZmXHU1ODAxXHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBlXHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEzXHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1XHU1''@;'; put 'put ''ODI2XHU1ODI3XHU1ODI4XHU1ODI5XHU1ODJiXHU1ODJjXHU1ODJkXHU1ODJlXHU1ODJmXHU1ODMxXHU1ODMyXHU1ODMzXHU1ODM0XHU1ODM2XHU1ODM3XHU1ODM4XHU1ODM5XHU1ODNhXHU1ODNiXHU1ODNjXHU1ODNkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTM2XS5sZW5ndGg7Kytt''@;'; put 'put ''KTY1NTMzIT09eFsxMzZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzNl1bbV1dPTM0ODE2K20sUlszNDgxNittXT14WzEzNl1bbV0pO2Zvcih4WzEzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgzZVx1NTgzZlx1NTg0MFx1''@;'; put 'put ''NTg0MVx1NTg0Mlx1NTg0M1x1NTg0NVx1NTg0Nlx1NTg0N1x1NTg0OFx1NTg0OVx1NTg0YVx1NTg0Ylx1NTg0ZVx1NTg0Zlx1NTg1MFx1NTg1Mlx1NTg1M1x1NTg1NVx1NTg1Nlx1NTg1N1x1NTg1OVx1NTg1YVx1NTg1Ylx1NTg1Y1x1NTg1ZFx1NTg1Zlx1NTg2MFx1NTg2MVx1NTg2Mlx1NTg2''@;'; put 'put ''M1x1NTg2NFx1NTg2Nlx1NTg2N1x1NTg2OFx1NTg2OVx1NTg2YVx1NTg2ZFx1NTg2ZVx1NTg2Zlx1NTg3MFx1NTg3MVx1NTg3Mlx1NTg3M1x1NTg3NFx1NTg3NVx1NTg3Nlx1NTg3N1x1NTg3OFx1NTg3OVx1NTg3YVx1NTg3Ylx1NTg3Y1x1NTg3ZFx1NTg3Zlx1NTg4Mlx1NTg4NFx1NTg4Nlx1''@;'; put 'put ''NTg4N1x1NTg4OFx1NTg4YVx1NTg4Ylx1NTg4Y1x1ZmZmZFx1NTg4ZFx1NTg4ZVx1NTg4Zlx1NTg5MFx1NTg5MVx1NTg5NFx1NTg5NVx1NTg5Nlx1NTg5N1x1NTg5OFx1NTg5Ylx1NTg5Y1x1NTg5ZFx1NThhMFx1NThhMVx1NThhMlx1NThhM1x1NThhNFx1NThhNVx1NThhNlx1NThhN1x1NThh''@;'; put 'put ''YVx1NThhYlx1NThhY1x1NThhZFx1NThhZVx1NThhZlx1NThiMFx1NThiMVx1NThiMlx1NThiM1x1NThiNFx1NThiNVx1NThiNlx1NThiN1x1NThiOFx1NThiOVx1NThiYVx1NThiYlx1NThiZFx1NThiZVx1NThiZlx1NThjMFx1NThjMlx1NThjM1x1NThjNFx1NThjNlx1NThjN1x1NThjOFx1''@;'; put 'put ''NThjOVx1NThjYVx1NThjYlx1NThjY1x1NThjZFx1NThjZVx1NThjZlx1NThkMFx1NThkMlx1NThkM1x1NThkNFx1NThkNlx1NThkN1x1NThkOFx1NThkOVx1NThkYVx1NThkYlx1NThkY1x1NThkZFx1NThkZVx1NThkZlx1NThlMFx1NThlMVx1NThlMlx1NThlM1x1NThlNVx1NThlNlx1NThl''@;'; put 'put ''N1x1NThlOFx1NThlOVx1NThlYVx1NThlZFx1NThlZlx1NThmMVx1NThmMlx1NThmNFx1NThmNVx1NThmN1x1NThmOFx1NThmYVx1NThmYlx1NThmY1x1NThmZFx1NThmZVx1NThmZlx1NTkwMFx1NTkwMVx1NTkwM1x1NTkwNVx1NTkwNlx1NTkwOFx1NTkwOVx1NTkwYVx1NTkwYlx1NTkwY1x1''@;'; put 'put ''NTkwZVx1NTkxMFx1NTkxMVx1NTkxMlx1NTkxM1x1NTkxN1x1NTkxOFx1NTkxYlx1NTkxZFx1NTkxZVx1NTkyMFx1NTkyMVx1NTkyMlx1NTkyM1x1NTkyNlx1NTkyOFx1NTkyY1x1NTkzMFx1NTkzMlx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzYlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEz''@;'; put 'put ''N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzddW21dXT0zNTA3MittLFJbMzUwNzIrbV09eFsxMzddW21dKTtmb3IoeFsxMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU5M2Rc''@;'; put 'put ''dTU5M2VcdTU5M2ZcdTU5NDBcdTU5NDNcdTU5NDVcdTU5NDZcdTU5NGFcdTU5NGNcdTU5NGRcdTU5NTBcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWJcdTU5NWNcdTU5NWRcdTU5NWVcdTU5NWZcdTU5NjFcdTU5NjNcdTU5NjRcdTU5NjZcdTU5NjdcdTU5NjhcdTU5NjlcdTU5NmFcdTU5NmJcdTU5''@;'; put 'put ''NmNcdTU5NmRcdTU5NmVcdTU5NmZcdTU5NzBcdTU5NzFcdTU5NzJcdTU5NzVcdTU5NzdcdTU5N2FcdTU5N2JcdTU5N2NcdTU5N2VcdTU5N2ZcdTU5ODBcdTU5ODVcdTU5ODlcdTU5OGJcdTU5OGNcdTU5OGVcdTU5OGZcdTU5OTBcdTU5OTFcdTU5OTRcdTU5OTVcdTU5OThcdTU5OWFcdTU5OWJc''@;'; put 'put ''dTU5OWNcdTU5OWRcdTU5OWZcdTU5YTBcdTU5YTFcdTU5YTJcdTU5YTZcdWZmZmRcdTU5YTdcdTU5YWNcdTU5YWRcdTU5YjBcdTU5YjFcdTU5YjNcdTU5YjRcdTU5YjVcdTU5YjZcdTU5YjdcdTU5YjhcdTU5YmFcdTU5YmNcdTU5YmRcdTU5YmZcdTU5YzBcdTU5YzFcdTU5YzJcdTU5YzNcdTU5''@;'; put 'put ''YzRcdTU5YzVcdTU5YzdcdTU5YzhcdTU5YzlcdTU5Y2NcdTU5Y2RcdTU5Y2VcdTU5Y2ZcdTU5ZDVcdTU5ZDZcdTU5ZDlcdTU5ZGJcdTU5ZGVcdTU5ZGZcdTU5ZTBcdTU5ZTFcdTU5ZTJcdTU5ZTRcdTU5ZTZcdTU5ZTdcdTU5ZTlcdTU5ZWFcdTU5ZWJcdTU5ZWRcdTU5ZWVcdTU5ZWZcdTU5ZjBc''@;'; put 'put ''dTU5ZjFcdTU5ZjJcdTU5ZjNcdTU5ZjRcdTU5ZjVcdTU5ZjZcdTU5ZjdcdTU5ZjhcdTU5ZmFcdTU5ZmNcdTU5ZmRcdTU5ZmVcdTVhMDBcdTVhMDJcdTVhMGFcdTVhMGJcdTVhMGRcdTVhMGVcdTVhMGZcdTVhMTBcdTVhMTJcdTVhMTRcdTVhMTVcdTVhMTZcdTVhMTdcdTVhMTlcdTVhMWFcdTVh''@;'; put 'put ''MWJcdTVhMWRcdTVhMWVcdTVhMjFcdTVhMjJcdTVhMjRcdTVhMjZcdTVhMjdcdTVhMjhcdTVhMmFcdTVhMmJcdTVhMmNcdTVhMmRcdTVhMmVcdTVhMmZcdTVhMzBcdTVhMzNcdTVhMzVcdTVhMzdcdTVhMzhcdTVhMzlcdTVhM2FcdTVhM2JcdTVhM2RcdTVhM2VcdTVhM2ZcdTVhNDFcdTVhNDJc''@;'; put 'put ''dTVhNDNcdTVhNDRcdTVhNDVcdTVhNDdcdTVhNDhcdTVhNGJcdTVhNGNcdTVhNGRcdTVhNGVcdTVhNGZcdTVhNTBcdTVhNTFcdTVhNTJcdTVhNTNcdTVhNTRcdTVhNTZcdTVhNTdcdTVhNThcdTVhNTlcdTVhNWJcdTVhNWNcdTVhNWRcdTVhNWVcdTVhNWZcdTVhNjBcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxtPTA7bSE9eFsxMzhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTM4XVttXV09MzUzMjgrbSxSWzM1MzI4K21dPXhbMTM4XVttXSk7Zm9yKHhbMTM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU1YTYxXHU1YTYzXHU1YTY0XHU1YTY1XHU1YTY2XHU1YTY4XHU1YTY5XHU1YTZiXHU1YTZjXHU1YTZkXHU1YTZlXHU1YTZmXHU1YTcwXHU1YTcxXHU1YTcyXHU1YTczXHU1YTc4XHU1YTc5XHU1YTdiXHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwXHU1YTgxXHU1YTgyXHU1YTgzXHU1''@;'; put 'put ''YTg0XHU1YTg1XHU1YTg2XHU1YTg3XHU1YTg4XHU1YTg5XHU1YThhXHU1YThiXHU1YThjXHU1YThkXHU1YThlXHU1YThmXHU1YTkwXHU1YTkxXHU1YTkzXHU1YTk0XHU1YTk1XHU1YTk2XHU1YTk3XHU1YTk4XHU1YTk5XHU1YTljXHU1YTlkXHU1YTllXHU1YTlmXHU1YWEwXHU1YWExXHU1YWEy''@;'; put 'put ''XHU1YWEzXHU1YWE0XHU1YWE1XHU1YWE2XHU1YWE3XHU1YWE4XHU1YWE5XHU1YWFiXHU1YWFjXHVmZmZkXHU1YWFkXHU1YWFlXHU1YWFmXHU1YWIwXHU1YWIxXHU1YWI0XHU1YWI2XHU1YWI3XHU1YWI5XHU1YWJhXHU1YWJiXHU1YWJjXHU1YWJkXHU1YWJmXHU1YWMwXHU1YWMzXHU1YWM0XHU1''@;'; put 'put ''YWM1XHU1YWM2XHU1YWM3XHU1YWM4XHU1YWNhXHU1YWNiXHU1YWNkXHU1YWNlXHU1YWNmXHU1YWQwXHU1YWQxXHU1YWQzXHU1YWQ1XHU1YWQ3XHU1YWQ5XHU1YWRhXHU1YWRiXHU1YWRkXHU1YWRlXHU1YWRmXHU1YWUyXHU1YWU0XHU1YWU1XHU1YWU3XHU1YWU4XHU1YWVhXHU1YWVjXHU1YWVk''@;'; put 'put ''XHU1YWVlXHU1YWVmXHU1YWYwXHU1YWYyXHU1YWYzXHU1YWY0XHU1YWY1XHU1YWY2XHU1YWY3XHU1YWY4XHU1YWY5XHU1YWZhXHU1YWZiXHU1YWZjXHU1YWZkXHU1YWZlXHU1YWZmXHU1YjAwXHU1YjAxXHU1YjAyXHU1YjAzXHU1YjA0XHU1YjA1XHU1YjA2XHU1YjA3XHU1YjA4XHU1YjBhXHU1''@;'; put 'put ''YjBiXHU1YjBjXHU1YjBkXHU1YjBlXHU1YjBmXHU1YjEwXHU1YjExXHU1YjEyXHU1YjEzXHU1YjE0XHU1YjE1XHU1YjE4XHU1YjE5XHU1YjFhXHU1YjFiXHU1YjFjXHU1YjFkXHU1YjFlXHU1YjFmXHU1YjIwXHU1YjIxXHU1YjIyXHU1YjIzXHU1YjI0XHU1YjI1XHU1YjI2XHU1YjI3XHU1YjI4''@;'; put 'put ''XHU1YjI5XHU1YjJhXHU1YjJiXHU1YjJjXHU1YjJkXHU1YjJlXHU1YjJmXHU1YjMwXHU1YjMxXHU1YjMzXHU1YjM1XHU1YjM2XHU1YjM4XHU1YjM5XHU1YjNhXHU1YjNiXHU1YjNjXHU1YjNkXHU1YjNlXHU1YjNmXHU1YjQxXHU1YjQyXHU1YjQzXHU1YjQ0XHU1YjQ1XHU1YjQ2XHU1YjQ3XHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTM5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzOV1bbV1dPTM1NTg0K20sUlszNTU4NCttXT14WzEzOV1bbV0pO2Zvcih4WzE0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI0OFx1NWI0OVx1NWI0YVx1NWI0Ylx1NWI0Y1x1NWI0ZFx1NWI0ZVx1NWI0Zlx1NWI1Mlx1NWI1Nlx1NWI1ZVx1NWI2MFx1NWI2MVx1NWI2N1x1NWI2OFx1NWI2Ylx1NWI2ZFx1NWI2ZVx1NWI2Zlx1NWI3Mlx1NWI3NFx1NWI3Nlx1NWI3N1x1NWI3OFx1''@;'; put 'put ''NWI3OVx1NWI3Ylx1NWI3Y1x1NWI3ZVx1NWI3Zlx1NWI4Mlx1NWI4Nlx1NWI4YVx1NWI4ZFx1NWI4ZVx1NWI5MFx1NWI5MVx1NWI5Mlx1NWI5NFx1NWI5Nlx1NWI5Zlx1NWJhN1x1NWJhOFx1NWJhOVx1NWJhY1x1NWJhZFx1NWJhZVx1NWJhZlx1NWJiMVx1NWJiMlx1NWJiN1x1NWJiYVx1NWJi''@;'; put 'put ''Ylx1NWJiY1x1NWJjMFx1NWJjMVx1NWJjM1x1NWJjOFx1NWJjOVx1NWJjYVx1NWJjYlx1NWJjZFx1NWJjZVx1NWJjZlx1ZmZmZFx1NWJkMVx1NWJkNFx1NWJkNVx1NWJkNlx1NWJkN1x1NWJkOFx1NWJkOVx1NWJkYVx1NWJkYlx1NWJkY1x1NWJlMFx1NWJlMlx1NWJlM1x1NWJlNlx1NWJlN1x1''@;'; put 'put ''NWJlOVx1NWJlYVx1NWJlYlx1NWJlY1x1NWJlZFx1NWJlZlx1NWJmMVx1NWJmMlx1NWJmM1x1NWJmNFx1NWJmNVx1NWJmNlx1NWJmN1x1NWJmZFx1NWJmZVx1NWMwMFx1NWMwMlx1NWMwM1x1NWMwNVx1NWMwN1x1NWMwOFx1NWMwYlx1NWMwY1x1NWMwZFx1NWMwZVx1NWMxMFx1NWMxMlx1NWMx''@;'; put 'put ''M1x1NWMxN1x1NWMxOVx1NWMxYlx1NWMxZVx1NWMxZlx1NWMyMFx1NWMyMVx1NWMyM1x1NWMyNlx1NWMyOFx1NWMyOVx1NWMyYVx1NWMyYlx1NWMyZFx1NWMyZVx1NWMyZlx1NWMzMFx1NWMzMlx1NWMzM1x1NWMzNVx1NWMzNlx1NWMzN1x1NWM0M1x1NWM0NFx1NWM0Nlx1NWM0N1x1NWM0Y1x1''@;'; put 'put ''NWM0ZFx1NWM1Mlx1NWM1M1x1NWM1NFx1NWM1Nlx1NWM1N1x1NWM1OFx1NWM1YVx1NWM1Ylx1NWM1Y1x1NWM1ZFx1NWM1Zlx1NWM2Mlx1NWM2NFx1NWM2N1x1NWM2OFx1NWM2OVx1NWM2YVx1NWM2Ylx1NWM2Y1x1NWM2ZFx1NWM3MFx1NWM3Mlx1NWM3M1x1NWM3NFx1NWM3NVx1NWM3Nlx1NWM3''@;'; put 'put ''N1x1NWM3OFx1NWM3Ylx1NWM3Y1x1NWM3ZFx1NWM3ZVx1NWM4MFx1NWM4M1x1NWM4NFx1NWM4NVx1NWM4Nlx1NWM4N1x1NWM4OVx1NWM4YVx1NWM4Ylx1NWM4ZVx1NWM4Zlx1NWM5Mlx1NWM5M1x1NWM5NVx1NWM5ZFx1NWM5ZVx1NWM5Zlx1NWNhMFx1NWNhMVx1NWNhNFx1NWNhNVx1NWNhNlx1''@;'; put 'put ''NWNhN1x1NWNhOFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDBdW21dXT0zNTg0MCttLFJbMzU4NDArbV09eFsxNDBdW21dKTtmb3IoeFsxNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVjYWFcdTVjYWVcdTVjYWZcdTVjYjBcdTVjYjJcdTVjYjRcdTVjYjZcdTVjYjlcdTVjYmFcdTVjYmJcdTVjYmNcdTVjYmVcdTVjYzBcdTVjYzJcdTVjYzNcdTVjYzVcdTVjYzZcdTVjYzdcdTVjYzhcdTVjYzlcdTVjY2FcdTVjY2Nc''@;'; put 'put ''dTVjY2RcdTVjY2VcdTVjY2ZcdTVjZDBcdTVjZDFcdTVjZDNcdTVjZDRcdTVjZDVcdTVjZDZcdTVjZDdcdTVjZDhcdTVjZGFcdTVjZGJcdTVjZGNcdTVjZGRcdTVjZGVcdTVjZGZcdTVjZTBcdTVjZTJcdTVjZTNcdTVjZTdcdTVjZTlcdTVjZWJcdTVjZWNcdTVjZWVcdTVjZWZcdTVjZjFcdTVj''@;'; put 'put ''ZjJcdTVjZjNcdTVjZjRcdTVjZjVcdTVjZjZcdTVjZjdcdTVjZjhcdTVjZjlcdTVjZmFcdTVjZmNcdTVjZmRcdTVjZmVcdTVjZmZcdTVkMDBcdWZmZmRcdTVkMDFcdTVkMDRcdTVkMDVcdTVkMDhcdTVkMDlcdTVkMGFcdTVkMGJcdTVkMGNcdTVkMGRcdTVkMGZcdTVkMTBcdTVkMTFcdTVkMTJc''@;'; put 'put ''dTVkMTNcdTVkMTVcdTVkMTdcdTVkMThcdTVkMTlcdTVkMWFcdTVkMWNcdTVkMWRcdTVkMWZcdTVkMjBcdTVkMjFcdTVkMjJcdTVkMjNcdTVkMjVcdTVkMjhcdTVkMmFcdTVkMmJcdTVkMmNcdTVkMmZcdTVkMzBcdTVkMzFcdTVkMzJcdTVkMzNcdTVkMzVcdTVkMzZcdTVkMzdcdTVkMzhcdTVk''@;'; put 'put ''MzlcdTVkM2FcdTVkM2JcdTVkM2NcdTVkM2ZcdTVkNDBcdTVkNDFcdTVkNDJcdTVkNDNcdTVkNDRcdTVkNDVcdTVkNDZcdTVkNDhcdTVkNDlcdTVkNGRcdTVkNGVcdTVkNGZcdTVkNTBcdTVkNTFcdTVkNTJcdTVkNTNcdTVkNTRcdTVkNTVcdTVkNTZcdTVkNTdcdTVkNTlcdTVkNWFcdTVkNWNc''@;'; put 'put ''dTVkNWVcdTVkNWZcdTVkNjBcdTVkNjFcdTVkNjJcdTVkNjNcdTVkNjRcdTVkNjVcdTVkNjZcdTVkNjdcdTVkNjhcdTVkNmFcdTVkNmRcdTVkNmVcdTVkNzBcdTVkNzFcdTVkNzJcdTVkNzNcdTVkNzVcdTVkNzZcdTVkNzdcdTVkNzhcdTVkNzlcdTVkN2FcdTVkN2JcdTVkN2NcdTVkN2RcdTVk''@;'; put 'put ''N2VcdTVkN2ZcdTVkODBcdTVkODFcdTVkODNcdTVkODRcdTVkODVcdTVkODZcdTVkODdcdTVkODhcdTVkODlcdTVkOGFcdTVkOGJcdTVkOGNcdTVkOGRcdTVkOGVcdTVkOGZcdTVkOTBcdTVkOTFcdTVkOTJcdTVkOTNcdTVkOTRcdTVkOTVcdTVkOTZcdTVkOTdcdTVkOThcdTVkOWFcdTVkOWJc''@;'; put 'put ''dTVkOWNcdTVkOWVcdTVkOWZcdTVkYTBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQxXVttXV09MzYwOTYrbSxSWzM2MDk2K21dPXhbMTQxXVttXSk7Zm9yKHhbMTQyXT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZGExXHU1ZGEyXHU1ZGEzXHU1ZGE0XHU1ZGE1XHU1ZGE2XHU1ZGE3XHU1ZGE4XHU1ZGE5XHU1ZGFhXHU1ZGFiXHU1ZGFjXHU1ZGFkXHU1ZGFlXHU1ZGFmXHU1ZGIwXHU1ZGIxXHU1ZGIyXHU1ZGIzXHU1ZGI0''@;'; put 'put ''XHU1ZGI1XHU1ZGI2XHU1ZGI4XHU1ZGI5XHU1ZGJhXHU1ZGJiXHU1ZGJjXHU1ZGJkXHU1ZGJlXHU1ZGJmXHU1ZGMwXHU1ZGMxXHU1ZGMyXHU1ZGMzXHU1ZGM0XHU1ZGM2XHU1ZGM3XHU1ZGM4XHU1ZGM5XHU1ZGNhXHU1ZGNiXHU1ZGNjXHU1ZGNlXHU1ZGNmXHU1ZGQwXHU1ZGQxXHU1ZGQyXHU1''@;'; put 'put ''ZGQzXHU1ZGQ0XHU1ZGQ1XHU1ZGQ2XHU1ZGQ3XHU1ZGQ4XHU1ZGQ5XHU1ZGRhXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1ZGU0XHU1ZGVhXHU1ZGVjXHU1ZGVkXHVmZmZkXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4XHU1ZGY5XHU1ZGZhXHU1ZGZiXHU1ZGZjXHU1ZGZmXHU1ZTAwXHU1ZTA0''@;'; put 'put ''XHU1ZTA3XHU1ZTA5XHU1ZTBhXHU1ZTBiXHU1ZTBkXHU1ZTBlXHU1ZTEyXHU1ZTEzXHU1ZTE3XHU1ZTFlXHU1ZTFmXHU1ZTIwXHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTI0XHU1ZTI1XHU1ZTI4XHU1ZTI5XHU1ZTJhXHU1ZTJiXHU1ZTJjXHU1ZTJmXHU1ZTMwXHU1ZTMyXHU1ZTMzXHU1ZTM0XHU1''@;'; put 'put ''ZTM1XHU1ZTM2XHU1ZTM5XHU1ZTNhXHU1ZTNlXHU1ZTNmXHU1ZTQwXHU1ZTQxXHU1ZTQzXHU1ZTQ2XHU1ZTQ3XHU1ZTQ4XHU1ZTQ5XHU1ZTRhXHU1ZTRiXHU1ZTRkXHU1ZTRlXHU1ZTRmXHU1ZTUwXHU1ZTUxXHU1ZTUyXHU1ZTUzXHU1ZTU2XHU1ZTU3XHU1ZTU4XHU1ZTU5XHU1ZTVhXHU1ZTVj''@;'; put 'put ''XHU1ZTVkXHU1ZTVmXHU1ZTYwXHU1ZTYzXHU1ZTY0XHU1ZTY1XHU1ZTY2XHU1ZTY3XHU1ZTY4XHU1ZTY5XHU1ZTZhXHU1ZTZiXHU1ZTZjXHU1ZTZkXHU1ZTZlXHU1ZTZmXHU1ZTcwXHU1ZTcxXHU1ZTc1XHU1ZTc3XHU1ZTc5XHU1ZTdlXHU1ZTgxXHU1ZTgyXHU1ZTgzXHU1ZTg1XHU1ZTg4XHU1''@;'; put 'put ''ZTg5XHU1ZThjXHU1ZThkXHU1ZThlXHU1ZTkyXHU1ZTk4XHU1ZTliXHU1ZTlkXHU1ZWExXHU1ZWEyXHU1ZWEzXHU1ZWE0XHU1ZWE4XHU1ZWE5XHU1ZWFhXHU1ZWFiXHU1ZWFjXHU1ZWFlXHU1ZWFmXHU1ZWIwXHU1ZWIxXHU1ZWIyXHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJm''@;'; put 'put ''XHU1ZWMwXHU1ZWMxXHU1ZWMyXHU1ZWMzXHU1ZWM0XHU1ZWM1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0Ml1bbV1dPTM2MzUyK20sUlszNjM1MittXT14WzE0Ml1bbV0pO2Zvcih4WzE0''@;'; put 'put ''M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWVjNlx1NWVjN1x1NWVjOFx1NWVjYlx1NWVjY1x1NWVjZFx1NWVjZVx1NWVjZlx1NWVkMFx1NWVkNFx1NWVkNVx1NWVkN1x1NWVkOFx1NWVkOVx1NWVkYVx1NWVkY1x1NWVkZFx1NWVk''@;'; put 'put ''ZVx1NWVkZlx1NWVlMFx1NWVlMVx1NWVlMlx1NWVlM1x1NWVlNFx1NWVlNVx1NWVlNlx1NWVlN1x1NWVlOVx1NWVlYlx1NWVlY1x1NWVlZFx1NWVlZVx1NWVlZlx1NWVmMFx1NWVmMVx1NWVmMlx1NWVmM1x1NWVmNVx1NWVmOFx1NWVmOVx1NWVmYlx1NWVmY1x1NWVmZFx1NWYwNVx1NWYwNlx1''@;'; put 'put ''NWYwN1x1NWYwOVx1NWYwY1x1NWYwZFx1NWYwZVx1NWYxMFx1NWYxMlx1NWYxNFx1NWYxNlx1NWYxOVx1NWYxYVx1NWYxY1x1NWYxZFx1NWYxZVx1NWYyMVx1NWYyMlx1NWYyM1x1NWYyNFx1ZmZmZFx1NWYyOFx1NWYyYlx1NWYyY1x1NWYyZVx1NWYzMFx1NWYzMlx1NWYzM1x1NWYzNFx1NWYz''@;'; put 'put ''NVx1NWYzNlx1NWYzN1x1NWYzOFx1NWYzYlx1NWYzZFx1NWYzZVx1NWYzZlx1NWY0MVx1NWY0Mlx1NWY0M1x1NWY0NFx1NWY0NVx1NWY0Nlx1NWY0N1x1NWY0OFx1NWY0OVx1NWY0YVx1NWY0Ylx1NWY0Y1x1NWY0ZFx1NWY0ZVx1NWY0Zlx1NWY1MVx1NWY1NFx1NWY1OVx1NWY1YVx1NWY1Ylx1''@;'; put 'put ''NWY1Y1x1NWY1ZVx1NWY1Zlx1NWY2MFx1NWY2M1x1NWY2NVx1NWY2N1x1NWY2OFx1NWY2Ylx1NWY2ZVx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3Nlx1NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY3Zlx1NWY4M1x1NWY4Nlx1NWY4ZFx1NWY4ZVx1NWY4Zlx1NWY5MVx1NWY5M1x1NWY5''@;'; put 'put ''NFx1NWY5Nlx1NWY5YVx1NWY5Ylx1NWY5ZFx1NWY5ZVx1NWY5Zlx1NWZhMFx1NWZhMlx1NWZhM1x1NWZhNFx1NWZhNVx1NWZhNlx1NWZhN1x1NWZhOVx1NWZhYlx1NWZhY1x1NWZhZlx1NWZiMFx1NWZiMVx1NWZiMlx1NWZiM1x1NWZiNFx1NWZiNlx1NWZiOFx1NWZiOVx1NWZiYVx1NWZiYlx1''@;'; put 'put ''NWZiZVx1NWZiZlx1NWZjMFx1NWZjMVx1NWZjMlx1NWZjN1x1NWZjOFx1NWZjYVx1NWZjYlx1NWZjZVx1NWZkM1x1NWZkNFx1NWZkNVx1NWZkYVx1NWZkYlx1NWZkY1x1NWZkZVx1NWZkZlx1NWZlMlx1NWZlM1x1NWZlNVx1NWZlNlx1NWZlOFx1NWZlOVx1NWZlY1x1NWZlZlx1NWZmMFx1NWZm''@;'; put 'put ''Mlx1NWZmM1x1NWZmNFx1NWZmNlx1NWZmN1x1NWZmOVx1NWZmYVx1NWZmY1x1NjAwN1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDNdW21dXT0zNjYwOCttLFJbMzY2MDgrbV09eFsxNDNd''@;'; put 'put ''W21dKTtmb3IoeFsxNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwMDhcdTYwMDlcdTYwMGJcdTYwMGNcdTYwMTBcdTYwMTFcdTYwMTNcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWVcdTYwMWZcdTYwMjJcdTYwMjNcdTYwMjRcdTYw''@;'; put 'put ''MmNcdTYwMmRcdTYwMmVcdTYwMzBcdTYwMzFcdTYwMzJcdTYwMzNcdTYwMzRcdTYwMzZcdTYwMzdcdTYwMzhcdTYwMzlcdTYwM2FcdTYwM2RcdTYwM2VcdTYwNDBcdTYwNDRcdTYwNDVcdTYwNDZcdTYwNDdcdTYwNDhcdTYwNDlcdTYwNGFcdTYwNGNcdTYwNGVcdTYwNGZcdTYwNTFcdTYwNTNc''@;'; put 'put ''dTYwNTRcdTYwNTZcdTYwNTdcdTYwNThcdTYwNWJcdTYwNWNcdTYwNWVcdTYwNWZcdTYwNjBcdTYwNjFcdTYwNjVcdTYwNjZcdTYwNmVcdTYwNzFcdTYwNzJcdTYwNzRcdTYwNzVcdTYwNzdcdTYwN2VcdTYwODBcdWZmZmRcdTYwODFcdTYwODJcdTYwODVcdTYwODZcdTYwODdcdTYwODhcdTYw''@;'; put 'put ''OGFcdTYwOGJcdTYwOGVcdTYwOGZcdTYwOTBcdTYwOTFcdTYwOTNcdTYwOTVcdTYwOTdcdTYwOThcdTYwOTlcdTYwOWNcdTYwOWVcdTYwYTFcdTYwYTJcdTYwYTRcdTYwYTVcdTYwYTdcdTYwYTlcdTYwYWFcdTYwYWVcdTYwYjBcdTYwYjNcdTYwYjVcdTYwYjZcdTYwYjdcdTYwYjlcdTYwYmFc''@;'; put 'put ''dTYwYmRcdTYwYmVcdTYwYmZcdTYwYzBcdTYwYzFcdTYwYzJcdTYwYzNcdTYwYzRcdTYwYzdcdTYwYzhcdTYwYzlcdTYwY2NcdTYwY2RcdTYwY2VcdTYwY2ZcdTYwZDBcdTYwZDJcdTYwZDNcdTYwZDRcdTYwZDZcdTYwZDdcdTYwZDlcdTYwZGJcdTYwZGVcdTYwZTFcdTYwZTJcdTYwZTNcdTYw''@;'; put 'put ''ZTRcdTYwZTVcdTYwZWFcdTYwZjFcdTYwZjJcdTYwZjVcdTYwZjdcdTYwZjhcdTYwZmJcdTYwZmNcdTYwZmRcdTYwZmVcdTYwZmZcdTYxMDJcdTYxMDNcdTYxMDRcdTYxMDVcdTYxMDdcdTYxMGFcdTYxMGJcdTYxMGNcdTYxMTBcdTYxMTFcdTYxMTJcdTYxMTNcdTYxMTRcdTYxMTZcdTYxMTdc''@;'; put 'put ''dTYxMThcdTYxMTlcdTYxMWJcdTYxMWNcdTYxMWRcdTYxMWVcdTYxMjFcdTYxMjJcdTYxMjVcdTYxMjhcdTYxMjlcdTYxMmFcdTYxMmNcdTYxMmRcdTYxMmVcdTYxMmZcdTYxMzBcdTYxMzFcdTYxMzJcdTYxMzNcdTYxMzRcdTYxMzVcdTYxMzZcdTYxMzdcdTYxMzhcdTYxMzlcdTYxM2FcdTYx''@;'; put 'put ''M2JcdTYxM2NcdTYxM2RcdTYxM2VcdTYxNDBcdTYxNDFcdTYxNDJcdTYxNDNcdTYxNDRcdTYxNDVcdTYxNDZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQ0XVttXV09MzY4NjQrbSxSWzM2''@;'; put 'put ''ODY0K21dPXhbMTQ0XVttXSk7Zm9yKHhbMTQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTQ3XHU2MTQ5XHU2MTRiXHU2MTRkXHU2MTRmXHU2MTUwXHU2MTUyXHU2MTUzXHU2MTU0XHU2MTU2XHU2MTU3XHU2MTU4XHU2MTU5XHU2''@;'; put 'put ''MTVhXHU2MTViXHU2MTVjXHU2MTVlXHU2MTVmXHU2MTYwXHU2MTYxXHU2MTYzXHU2MTY0XHU2MTY1XHU2MTY2XHU2MTY5XHU2MTZhXHU2MTZiXHU2MTZjXHU2MTZkXHU2MTZlXHU2MTZmXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4XHU2MTc5XHU2MTdhXHU2MTdiXHU2MTdj''@;'; put 'put ''XHU2MTdkXHU2MTdlXHU2MTdmXHU2MTgwXHU2MTgxXHU2MTgyXHU2MTgzXHU2MTg0XHU2MTg1XHU2MTg2XHU2MTg3XHU2MTg4XHU2MTg5XHU2MThhXHU2MThjXHU2MThkXHU2MThmXHU2MTkwXHU2MTkxXHU2MTkyXHU2MTkzXHU2MTk1XHVmZmZkXHU2MTk2XHU2MTk3XHU2MTk4XHU2MTk5XHU2''@;'; put 'put ''MTlhXHU2MTliXHU2MTljXHU2MTllXHU2MTlmXHU2MWEwXHU2MWExXHU2MWEyXHU2MWEzXHU2MWE0XHU2MWE1XHU2MWE2XHU2MWFhXHU2MWFiXHU2MWFkXHU2MWFlXHU2MWFmXHU2MWIwXHU2MWIxXHU2MWIyXHU2MWIzXHU2MWI0XHU2MWI1XHU2MWI2XHU2MWI4XHU2MWI5XHU2MWJhXHU2MWJi''@;'; put 'put ''XHU2MWJjXHU2MWJkXHU2MWJmXHU2MWMwXHU2MWMxXHU2MWMzXHU2MWM0XHU2MWM1XHU2MWM2XHU2MWM3XHU2MWM5XHU2MWNjXHU2MWNkXHU2MWNlXHU2MWNmXHU2MWQwXHU2MWQzXHU2MWQ1XHU2MWQ2XHU2MWQ3XHU2MWQ4XHU2MWQ5XHU2MWRhXHU2MWRiXHU2MWRjXHU2MWRkXHU2MWRlXHU2''@;'; put 'put ''MWRmXHU2MWUwXHU2MWUxXHU2MWUyXHU2MWUzXHU2MWU0XHU2MWU1XHU2MWU3XHU2MWU4XHU2MWU5XHU2MWVhXHU2MWViXHU2MWVjXHU2MWVkXHU2MWVlXHU2MWVmXHU2MWYwXHU2MWYxXHU2MWYyXHU2MWYzXHU2MWY0XHU2MWY2XHU2MWY3XHU2MWY4XHU2MWY5XHU2MWZhXHU2MWZiXHU2MWZj''@;'; put 'put ''XHU2MWZkXHU2MWZlXHU2MjAwXHU2MjAxXHU2MjAyXHU2MjAzXHU2MjA0XHU2MjA1XHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0XHU2MjE5XHU2MjFjXHU2MjFkXHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2''@;'; put 'put ''MjMyXHU2MjM1XHU2MjM2XHU2MjM4XHU2MjM5XHU2MjNhXHU2MjNiXHU2MjNjXHU2MjQyXHU2MjQ0XHU2MjQ1XHU2MjQ2XHU2MjRhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQ1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0NV1bbV1d''@;'; put 'put ''PTM3MTIwK20sUlszNzEyMCttXT14WzE0NV1bbV0pO2Zvcih4WzE0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjI0Zlx1NjI1MFx1NjI1NVx1NjI1Nlx1NjI1N1x1NjI1OVx1NjI1YVx1NjI1Y1x1NjI1ZFx1NjI1ZVx1NjI1Zlx1''@;'; put 'put ''NjI2MFx1NjI2MVx1NjI2Mlx1NjI2NFx1NjI2NVx1NjI2OFx1NjI3MVx1NjI3Mlx1NjI3NFx1NjI3NVx1NjI3N1x1NjI3OFx1NjI3YVx1NjI3Ylx1NjI3ZFx1NjI4MVx1NjI4Mlx1NjI4M1x1NjI4NVx1NjI4Nlx1NjI4N1x1NjI4OFx1NjI4Ylx1NjI4Y1x1NjI4ZFx1NjI4ZVx1NjI4Zlx1NjI5''@;'; put 'put ''MFx1NjI5NFx1NjI5OVx1NjI5Y1x1NjI5ZFx1NjI5ZVx1NjJhM1x1NjJhNlx1NjJhN1x1NjJhOVx1NjJhYVx1NjJhZFx1NjJhZVx1NjJhZlx1NjJiMFx1NjJiMlx1NjJiM1x1NjJiNFx1NjJiNlx1NjJiN1x1NjJiOFx1NjJiYVx1NjJiZVx1NjJjMFx1NjJjMVx1ZmZmZFx1NjJjM1x1NjJjYlx1''@;'; put 'put ''NjJjZlx1NjJkMVx1NjJkNVx1NjJkZFx1NjJkZVx1NjJlMFx1NjJlMVx1NjJlNFx1NjJlYVx1NjJlYlx1NjJmMFx1NjJmMlx1NjJmNVx1NjJmOFx1NjJmOVx1NjJmYVx1NjJmYlx1NjMwMFx1NjMwM1x1NjMwNFx1NjMwNVx1NjMwNlx1NjMwYVx1NjMwYlx1NjMwY1x1NjMwZFx1NjMwZlx1NjMx''@;'; put 'put ''MFx1NjMxMlx1NjMxM1x1NjMxNFx1NjMxNVx1NjMxN1x1NjMxOFx1NjMxOVx1NjMxY1x1NjMyNlx1NjMyN1x1NjMyOVx1NjMyY1x1NjMyZFx1NjMyZVx1NjMzMFx1NjMzMVx1NjMzM1x1NjMzNFx1NjMzNVx1NjMzNlx1NjMzN1x1NjMzOFx1NjMzYlx1NjMzY1x1NjMzZVx1NjMzZlx1NjM0MFx1''@;'; put 'put ''NjM0MVx1NjM0NFx1NjM0N1x1NjM0OFx1NjM0YVx1NjM1MVx1NjM1Mlx1NjM1M1x1NjM1NFx1NjM1Nlx1NjM1N1x1NjM1OFx1NjM1OVx1NjM1YVx1NjM1Ylx1NjM1Y1x1NjM1ZFx1NjM2MFx1NjM2NFx1NjM2NVx1NjM2Nlx1NjM2OFx1NjM2YVx1NjM2Ylx1NjM2Y1x1NjM2Zlx1NjM3MFx1NjM3''@;'; put 'put ''Mlx1NjM3M1x1NjM3NFx1NjM3NVx1NjM3OFx1NjM3OVx1NjM3Y1x1NjM3ZFx1NjM3ZVx1NjM3Zlx1NjM4MVx1NjM4M1x1NjM4NFx1NjM4NVx1NjM4Nlx1NjM4Ylx1NjM4ZFx1NjM5MVx1NjM5M1x1NjM5NFx1NjM5NVx1NjM5N1x1NjM5OVx1NjM5YVx1NjM5Ylx1NjM5Y1x1NjM5ZFx1NjM5ZVx1''@;'; put 'put ''NjM5Zlx1NjNhMVx1NjNhNFx1NjNhNlx1NjNhYlx1NjNhZlx1NjNiMVx1NjNiMlx1NjNiNVx1NjNiNlx1NjNiOVx1NjNiYlx1NjNiZFx1NjNiZlx1NjNjMFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQ2XVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsxNDZdW21dXT0zNzM3NittLFJbMzczNzYrbV09eFsxNDZdW21dKTtmb3IoeFsxNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYzYzFcdTYzYzJcdTYzYzNcdTYzYzVcdTYzYzdcdTYzYzhcdTYzY2FcdTYzY2JcdTYzY2Nc''@;'; put 'put ''dTYzZDFcdTYzZDNcdTYzZDRcdTYzZDVcdTYzZDdcdTYzZDhcdTYzZDlcdTYzZGFcdTYzZGJcdTYzZGNcdTYzZGRcdTYzZGZcdTYzZTJcdTYzZTRcdTYzZTVcdTYzZTZcdTYzZTdcdTYzZThcdTYzZWJcdTYzZWNcdTYzZWVcdTYzZWZcdTYzZjBcdTYzZjFcdTYzZjNcdTYzZjVcdTYzZjdcdTYz''@;'; put 'put ''ZjlcdTYzZmFcdTYzZmJcdTYzZmNcdTYzZmVcdTY0MDNcdTY0MDRcdTY0MDZcdTY0MDdcdTY0MDhcdTY0MDlcdTY0MGFcdTY0MGRcdTY0MGVcdTY0MTFcdTY0MTJcdTY0MTVcdTY0MTZcdTY0MTdcdTY0MThcdTY0MTlcdTY0MWFcdTY0MWRcdTY0MWZcdTY0MjJcdTY0MjNcdTY0MjRcdWZmZmRc''@;'; put 'put ''dTY0MjVcdTY0MjdcdTY0MjhcdTY0MjlcdTY0MmJcdTY0MmVcdTY0MmZcdTY0MzBcdTY0MzFcdTY0MzJcdTY0MzNcdTY0MzVcdTY0MzZcdTY0MzdcdTY0MzhcdTY0MzlcdTY0M2JcdTY0M2NcdTY0M2VcdTY0NDBcdTY0NDJcdTY0NDNcdTY0NDlcdTY0NGJcdTY0NGNcdTY0NGRcdTY0NGVcdTY0''@;'; put 'put ''NGZcdTY0NTBcdTY0NTFcdTY0NTNcdTY0NTVcdTY0NTZcdTY0NTdcdTY0NTlcdTY0NWFcdTY0NWJcdTY0NWNcdTY0NWRcdTY0NWZcdTY0NjBcdTY0NjFcdTY0NjJcdTY0NjNcdTY0NjRcdTY0NjVcdTY0NjZcdTY0NjhcdTY0NmFcdTY0NmJcdTY0NmNcdTY0NmVcdTY0NmZcdTY0NzBcdTY0NzFc''@;'; put 'put ''dTY0NzJcdTY0NzNcdTY0NzRcdTY0NzVcdTY0NzZcdTY0NzdcdTY0N2JcdTY0N2NcdTY0N2RcdTY0N2VcdTY0N2ZcdTY0ODBcdTY0ODFcdTY0ODNcdTY0ODZcdTY0ODhcdTY0ODlcdTY0OGFcdTY0OGJcdTY0OGNcdTY0OGRcdTY0OGVcdTY0OGZcdTY0OTBcdTY0OTNcdTY0OTRcdTY0OTdcdTY0''@;'; put 'put ''OThcdTY0OWFcdTY0OWJcdTY0OWNcdTY0OWRcdTY0OWZcdTY0YTBcdTY0YTFcdTY0YTJcdTY0YTNcdTY0YTVcdTY0YTZcdTY0YTdcdTY0YThcdTY0YWFcdTY0YWJcdTY0YWZcdTY0YjFcdTY0YjJcdTY0YjNcdTY0YjRcdTY0YjZcdTY0YjlcdTY0YmJcdTY0YmRcdTY0YmVcdTY0YmZcdTY0YzFc''@;'; put 'put ''dTY0YzNcdTY0YzRcdTY0YzZcdTY0YzdcdTY0YzhcdTY0YzlcdTY0Y2FcdTY0Y2JcdTY0Y2NcdTY0Y2ZcdTY0ZDFcdTY0ZDNcdTY0ZDRcdTY0ZDVcdTY0ZDZcdTY0ZDlcdTY0ZGFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0N11bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMTQ3XVttXV09Mzc2MzIrbSxSWzM3NjMyK21dPXhbMTQ3XVttXSk7Zm9yKHhbMTQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NGRiXHU2NGRjXHU2NGRkXHU2NGRmXHU2NGUwXHU2NGUxXHU2NGUz''@;'; put 'put ''XHU2NGU1XHU2NGU3XHU2NGU4XHU2NGU5XHU2NGVhXHU2NGViXHU2NGVjXHU2NGVkXHU2NGVlXHU2NGVmXHU2NGYwXHU2NGYxXHU2NGYyXHU2NGYzXHU2NGY0XHU2NGY1XHU2NGY2XHU2NGY3XHU2NGY4XHU2NGY5XHU2NGZhXHU2NGZiXHU2NGZjXHU2NGZkXHU2NGZlXHU2NGZmXHU2NTAxXHU2''@;'; put 'put ''NTAyXHU2NTAzXHU2NTA0XHU2NTA1XHU2NTA2XHU2NTA3XHU2NTA4XHU2NTBhXHU2NTBiXHU2NTBjXHU2NTBkXHU2NTBlXHU2NTBmXHU2NTEwXHU2NTExXHU2NTEzXHU2NTE0XHU2NTE1XHU2NTE2XHU2NTE3XHU2NTE5XHU2NTFhXHU2NTFiXHU2NTFjXHU2NTFkXHU2NTFlXHU2NTFmXHU2NTIw''@;'; put 'put ''XHU2NTIxXHVmZmZkXHU2NTIyXHU2NTIzXHU2NTI0XHU2NTI2XHU2NTI3XHU2NTI4XHU2NTI5XHU2NTJhXHU2NTJjXHU2NTJkXHU2NTMwXHU2NTMxXHU2NTMyXHU2NTMzXHU2NTM3XHU2NTNhXHU2NTNjXHU2NTNkXHU2NTQwXHU2NTQxXHU2NTQyXHU2NTQzXHU2NTQ0XHU2NTQ2XHU2NTQ3XHU2''@;'; put 'put ''NTRhXHU2NTRiXHU2NTRkXHU2NTRlXHU2NTUwXHU2NTUyXHU2NTUzXHU2NTU0XHU2NTU3XHU2NTU4XHU2NTVhXHU2NTVjXHU2NTVmXHU2NTYwXHU2NTYxXHU2NTY0XHU2NTY1XHU2NTY3XHU2NTY4XHU2NTY5XHU2NTZhXHU2NTZkXHU2NTZlXHU2NTZmXHU2NTcxXHU2NTczXHU2NTc1XHU2NTc2''@;'; put 'put ''XHU2NTc4XHU2NTc5XHU2NTdhXHU2NTdiXHU2NTdjXHU2NTdkXHU2NTdlXHU2NTdmXHU2NTgwXHU2NTgxXHU2NTgyXHU2NTgzXHU2NTg0XHU2NTg1XHU2NTg2XHU2NTg4XHU2NTg5XHU2NThhXHU2NThkXHU2NThlXHU2NThmXHU2NTkyXHU2NTk0XHU2NTk1XHU2NTk2XHU2NTk4XHU2NTlhXHU2''@;'; put 'put ''NTlkXHU2NTllXHU2NWEwXHU2NWEyXHU2NWEzXHU2NWE2XHU2NWE4XHU2NWFhXHU2NWFjXHU2NWFlXHU2NWIxXHU2NWIyXHU2NWIzXHU2NWI0XHU2NWI1XHU2NWI2XHU2NWI3XHU2NWI4XHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNh''@;'; put 'put ''XHU2NWNkXHU2NWQwXHU2NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4XHU2NWQ5XHU2NWRhXHU2NWRiXHU2NWRjXHU2NWRkXHU2NWRlXHU2NWRmXHU2NWUxXHU2NWUzXHU2NWU0XHU2NWVhXHU2NWViXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQ4XS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsxNDhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0OF1bbV1dPTM3ODg4K20sUlszNzg4OCttXT14WzE0OF1bbV0pO2Zvcih4WzE0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjVmMlx1NjVmM1x1NjVmNFx1NjVmNVx1NjVm''@;'; put 'put ''OFx1NjVmOVx1NjVmYlx1NjVmY1x1NjVmZFx1NjVmZVx1NjVmZlx1NjYwMVx1NjYwNFx1NjYwNVx1NjYwN1x1NjYwOFx1NjYwOVx1NjYwYlx1NjYwZFx1NjYxMFx1NjYxMVx1NjYxMlx1NjYxNlx1NjYxN1x1NjYxOFx1NjYxYVx1NjYxYlx1NjYxY1x1NjYxZVx1NjYyMVx1NjYyMlx1NjYyM1x1''@;'; put 'put ''NjYyNFx1NjYyNlx1NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMlx1NjYzM1x1NjYzN1x1NjYzOFx1NjYzOVx1NjYzYVx1NjYzYlx1NjYzZFx1NjYzZlx1NjY0MFx1NjY0Mlx1NjY0NFx1NjY0NVx1NjY0Nlx1NjY0N1x1NjY0OFx1NjY0OVx1NjY0YVx1NjY0ZFx1NjY0''@;'; put 'put ''ZVx1NjY1MFx1NjY1MVx1NjY1OFx1ZmZmZFx1NjY1OVx1NjY1Ylx1NjY1Y1x1NjY1ZFx1NjY1ZVx1NjY2MFx1NjY2Mlx1NjY2M1x1NjY2NVx1NjY2N1x1NjY2OVx1NjY2YVx1NjY2Ylx1NjY2Y1x1NjY2ZFx1NjY3MVx1NjY3Mlx1NjY3M1x1NjY3NVx1NjY3OFx1NjY3OVx1NjY3Ylx1NjY3Y1x1''@;'; put 'put ''NjY3ZFx1NjY3Zlx1NjY4MFx1NjY4MVx1NjY4M1x1NjY4NVx1NjY4Nlx1NjY4OFx1NjY4OVx1NjY4YVx1NjY4Ylx1NjY4ZFx1NjY4ZVx1NjY4Zlx1NjY5MFx1NjY5Mlx1NjY5M1x1NjY5NFx1NjY5NVx1NjY5OFx1NjY5OVx1NjY5YVx1NjY5Ylx1NjY5Y1x1NjY5ZVx1NjY5Zlx1NjZhMFx1NjZh''@;'; put 'put ''MVx1NjZhMlx1NjZhM1x1NjZhNFx1NjZhNVx1NjZhNlx1NjZhOVx1NjZhYVx1NjZhYlx1NjZhY1x1NjZhZFx1NjZhZlx1NjZiMFx1NjZiMVx1NjZiMlx1NjZiM1x1NjZiNVx1NjZiNlx1NjZiN1x1NjZiOFx1NjZiYVx1NjZiYlx1NjZiY1x1NjZiZFx1NjZiZlx1NjZjMFx1NjZjMVx1NjZjMlx1''@;'; put 'put ''NjZjM1x1NjZjNFx1NjZjNVx1NjZjNlx1NjZjN1x1NjZjOFx1NjZjOVx1NjZjYVx1NjZjYlx1NjZjY1x1NjZjZFx1NjZjZVx1NjZjZlx1NjZkMFx1NjZkMVx1NjZkMlx1NjZkM1x1NjZkNFx1NjZkNVx1NjZkNlx1NjZkN1x1NjZkOFx1NjZkYVx1NjZkZVx1NjZkZlx1NjZlMFx1NjZlMVx1NjZl''@;'; put 'put ''Mlx1NjZlM1x1NjZlNFx1NjZlNVx1NjZlN1x1NjZlOFx1NjZlYVx1NjZlYlx1NjZlY1x1NjZlZFx1NjZlZVx1NjZlZlx1NjZmMVx1NjZmNVx1NjZmNlx1NjZmOFx1NjZmYVx1NjZmYlx1NjZmZFx1NjcwMVx1NjcwMlx1NjcwM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0OV0ubGVuZ3Ro''@;'; put 'put ''OysrbSk2NTUzMyE9PXhbMTQ5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDldW21dXT0zODE0NCttLFJbMzgxNDQrbV09eFsxNDldW21dKTtmb3IoeFsxNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY3MDRcdTY3MDVcdTY3''@;'; put 'put ''MDZcdTY3MDdcdTY3MGNcdTY3MGVcdTY3MGZcdTY3MTFcdTY3MTJcdTY3MTNcdTY3MTZcdTY3MThcdTY3MTlcdTY3MWFcdTY3MWNcdTY3MWVcdTY3MjBcdTY3MjFcdTY3MjJcdTY3MjNcdTY3MjRcdTY3MjVcdTY3MjdcdTY3MjlcdTY3MmVcdTY3MzBcdTY3MzJcdTY3MzNcdTY3MzZcdTY3Mzdc''@;'; put 'put ''dTY3MzhcdTY3MzlcdTY3M2JcdTY3M2NcdTY3M2VcdTY3M2ZcdTY3NDFcdTY3NDRcdTY3NDVcdTY3NDdcdTY3NGFcdTY3NGJcdTY3NGRcdTY3NTJcdTY3NTRcdTY3NTVcdTY3NTdcdTY3NThcdTY3NTlcdTY3NWFcdTY3NWJcdTY3NWRcdTY3NjJcdTY3NjNcdTY3NjRcdTY3NjZcdTY3NjdcdTY3''@;'; put 'put ''NmJcdTY3NmNcdTY3NmVcdTY3NzFcdTY3NzRcdTY3NzZcdWZmZmRcdTY3NzhcdTY3NzlcdTY3N2FcdTY3N2JcdTY3N2RcdTY3ODBcdTY3ODJcdTY3ODNcdTY3ODVcdTY3ODZcdTY3ODhcdTY3OGFcdTY3OGNcdTY3OGRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTJcdTY3OTNcdTY3OTRcdTY3OTZc''@;'; put 'put ''dTY3OTlcdTY3OWJcdTY3OWZcdTY3YTBcdTY3YTFcdTY3YTRcdTY3YTZcdTY3YTlcdTY3YWNcdTY3YWVcdTY3YjFcdTY3YjJcdTY3YjRcdTY3YjlcdTY3YmFcdTY3YmJcdTY3YmNcdTY3YmRcdTY3YmVcdTY3YmZcdTY3YzBcdTY3YzJcdTY3YzVcdTY3YzZcdTY3YzdcdTY3YzhcdTY3YzlcdTY3''@;'; put 'put ''Y2FcdTY3Y2JcdTY3Y2NcdTY3Y2RcdTY3Y2VcdTY3ZDVcdTY3ZDZcdTY3ZDdcdTY3ZGJcdTY3ZGZcdTY3ZTFcdTY3ZTNcdTY3ZTRcdTY3ZTZcdTY3ZTdcdTY3ZThcdTY3ZWFcdTY3ZWJcdTY3ZWRcdTY3ZWVcdTY3ZjJcdTY3ZjVcdTY3ZjZcdTY3ZjdcdTY3ZjhcdTY3ZjlcdTY3ZmFcdTY3ZmJc''@;'; put 'put ''dTY3ZmNcdTY3ZmVcdTY4MDFcdTY4MDJcdTY4MDNcdTY4MDRcdTY4MDZcdTY4MGRcdTY4MTBcdTY4MTJcdTY4MTRcdTY4MTVcdTY4MThcdTY4MTlcdTY4MWFcdTY4MWJcdTY4MWNcdTY4MWVcdTY4MWZcdTY4MjBcdTY4MjJcdTY4MjNcdTY4MjRcdTY4MjVcdTY4MjZcdTY4MjdcdTY4MjhcdTY4''@;'; put 'put ''MmJcdTY4MmNcdTY4MmRcdTY4MmVcdTY4MmZcdTY4MzBcdTY4MzFcdTY4MzRcdTY4MzVcdTY4MzZcdTY4M2FcdTY4M2JcdTY4M2ZcdTY4NDdcdTY4NGJcdTY4NGRcdTY4NGZcdTY4NTJcdTY4NTZcdTY4NTdcdTY4NThcdTY4NTlcdTY4NWFcdTY4NWJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9''@;'; put 'put ''eFsxNTBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTUwXVttXV09Mzg0MDArbSxSWzM4NDAwK21dPXhbMTUwXVttXSk7Zm9yKHhbMTUxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2''@;'; put 'put ''ODVjXHU2ODVkXHU2ODVlXHU2ODVmXHU2ODZhXHU2ODZjXHU2ODZkXHU2ODZlXHU2ODZmXHU2ODcwXHU2ODcxXHU2ODcyXHU2ODczXHU2ODc1XHU2ODc4XHU2ODc5XHU2ODdhXHU2ODdiXHU2ODdjXHU2ODdkXHU2ODdlXHU2ODdmXHU2ODgwXHU2ODgyXHU2ODg0XHU2ODg3XHU2ODg4XHU2ODg5''@;'; put 'put ''XHU2ODhhXHU2ODhiXHU2ODhjXHU2ODhkXHU2ODhlXHU2ODkwXHU2ODkxXHU2ODkyXHU2ODk0XHU2ODk1XHU2ODk2XHU2ODk4XHU2ODk5XHU2ODlhXHU2ODliXHU2ODljXHU2ODlkXHU2ODllXHU2ODlmXHU2OGEwXHU2OGExXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFhXHU2OGFiXHU2''@;'; put 'put ''OGFjXHU2OGFlXHU2OGIxXHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4XHVmZmZkXHU2OGI5XHU2OGJhXHU2OGJiXHU2OGJjXHU2OGJkXHU2OGJlXHU2OGJmXHU2OGMxXHU2OGMzXHU2OGM0XHU2OGM1XHU2OGM2XHU2OGM3XHU2OGM4XHU2OGNhXHU2OGNjXHU2OGNlXHU2OGNmXHU2OGQw''@;'; put 'put ''XHU2OGQxXHU2OGQzXHU2OGQ0XHU2OGQ2XHU2OGQ3XHU2OGQ5XHU2OGRiXHU2OGRjXHU2OGRkXHU2OGRlXHU2OGRmXHU2OGUxXHU2OGUyXHU2OGU0XHU2OGU1XHU2OGU2XHU2OGU3XHU2OGU4XHU2OGU5XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGVmXHU2OGYyXHU2OGYzXHU2OGY0XHU2''@;'; put 'put ''OGY2XHU2OGY3XHU2OGY4XHU2OGZiXHU2OGZkXHU2OGZlXHU2OGZmXHU2OTAwXHU2OTAyXHU2OTAzXHU2OTA0XHU2OTA2XHU2OTA3XHU2OTA4XHU2OTA5XHU2OTBhXHU2OTBjXHU2OTBmXHU2OTExXHU2OTEzXHU2OTE0XHU2OTE1XHU2OTE2XHU2OTE3XHU2OTE4XHU2OTE5XHU2OTFhXHU2OTFi''@;'; put 'put ''XHU2OTFjXHU2OTFkXHU2OTFlXHU2OTIxXHU2OTIyXHU2OTIzXHU2OTI1XHU2OTI2XHU2OTI3XHU2OTI4XHU2OTI5XHU2OTJhXHU2OTJiXHU2OTJjXHU2OTJlXHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2''@;'; put 'put ''OTQwXHU2OTQxXHU2OTQzXHU2OTQ0XHU2OTQ1XHU2OTQ2XHU2OTQ3XHU2OTQ4XHU2OTQ5XHU2OTRhXHU2OTRiXHU2OTRjXHU2OTRkXHU2OTRlXHU2OTRmXHU2OTUwXHU2OTUxXHU2OTUyXHU2OTUzXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2OTVmXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksbT0wO20hPXhbMTUxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1MV1bbV1dPTM4NjU2K20sUlszODY1NittXT14WzE1MV1bbV0pO2Zvcih4WzE1Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1Njk2MVx1Njk2Mlx1Njk2NFx1Njk2NVx1Njk2N1x1Njk2OFx1Njk2OVx1Njk2YVx1Njk2Y1x1Njk2ZFx1Njk2Zlx1Njk3MFx1Njk3Mlx1Njk3M1x1Njk3NFx1Njk3NVx1Njk3Nlx1Njk3YVx1Njk3Ylx1Njk3ZFx1Njk3ZVx1Njk3Zlx1Njk4MVx1Njk4M1x1Njk4NVx1Njk4''@;'; put 'put ''YVx1Njk4Ylx1Njk4Y1x1Njk4ZVx1Njk4Zlx1Njk5MFx1Njk5MVx1Njk5Mlx1Njk5M1x1Njk5Nlx1Njk5N1x1Njk5OVx1Njk5YVx1Njk5ZFx1Njk5ZVx1Njk5Zlx1NjlhMFx1NjlhMVx1NjlhMlx1NjlhM1x1NjlhNFx1NjlhNVx1NjlhNlx1NjlhOVx1NjlhYVx1NjlhY1x1NjlhZVx1NjlhZlx1''@;'; put 'put ''NjliMFx1NjliMlx1NjliM1x1NjliNVx1NjliNlx1NjliOFx1NjliOVx1NjliYVx1NjliY1x1NjliZFx1ZmZmZFx1NjliZVx1NjliZlx1NjljMFx1NjljMlx1NjljM1x1NjljNFx1NjljNVx1NjljNlx1NjljN1x1NjljOFx1NjljOVx1NjljYlx1NjljZFx1NjljZlx1NjlkMVx1NjlkMlx1Njlk''@;'; put 'put ''M1x1NjlkNVx1NjlkNlx1NjlkN1x1NjlkOFx1NjlkOVx1NjlkYVx1NjlkY1x1NjlkZFx1NjlkZVx1NjllMVx1NjllMlx1NjllM1x1NjllNFx1NjllNVx1NjllNlx1NjllN1x1NjllOFx1NjllOVx1NjllYVx1NjllYlx1NjllY1x1NjllZVx1NjllZlx1NjlmMFx1NjlmMVx1NjlmM1x1NjlmNFx1''@;'; put 'put ''NjlmNVx1NjlmNlx1NjlmN1x1NjlmOFx1NjlmOVx1NjlmYVx1NjlmYlx1NjlmY1x1NjlmZVx1NmEwMFx1NmEwMVx1NmEwMlx1NmEwM1x1NmEwNFx1NmEwNVx1NmEwNlx1NmEwN1x1NmEwOFx1NmEwOVx1NmEwYlx1NmEwY1x1NmEwZFx1NmEwZVx1NmEwZlx1NmExMFx1NmExMVx1NmExMlx1NmEx''@;'; put 'put ''M1x1NmExNFx1NmExNVx1NmExNlx1NmExOVx1NmExYVx1NmExYlx1NmExY1x1NmExZFx1NmExZVx1NmEyMFx1NmEyMlx1NmEyM1x1NmEyNFx1NmEyNVx1NmEyNlx1NmEyN1x1NmEyOVx1NmEyYlx1NmEyY1x1NmEyZFx1NmEyZVx1NmEzMFx1NmEzMlx1NmEzM1x1NmEzNFx1NmEzNlx1NmEzN1x1''@;'; put 'put ''NmEzOFx1NmEzOVx1NmEzYVx1NmEzYlx1NmEzY1x1NmEzZlx1NmE0MFx1NmE0MVx1NmE0Mlx1NmE0M1x1NmE0NVx1NmE0Nlx1NmE0OFx1NmE0OVx1NmE0YVx1NmE0Ylx1NmE0Y1x1NmE0ZFx1NmE0ZVx1NmE0Zlx1NmE1MVx1NmE1Mlx1NmE1M1x1NmE1NFx1NmE1NVx1NmE1Nlx1NmE1N1x1NmE1''@;'; put 'put ''YVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTUyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTJdW21dXT0zODkxMittLFJbMzg5MTIrbV09eFsxNTJdW21dKTtmb3IoeFsxNTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZhNWNcdTZhNWRcdTZhNWVcdTZhNWZcdTZhNjBcdTZhNjJcdTZhNjNcdTZhNjRcdTZhNjZcdTZhNjdcdTZhNjhcdTZhNjlcdTZhNmFcdTZhNmJcdTZhNmNcdTZhNmRcdTZhNmVcdTZhNmZcdTZhNzBcdTZhNzJcdTZhNzNcdTZhNzRcdTZhNzVcdTZh''@;'; put 'put ''NzZcdTZhNzdcdTZhNzhcdTZhN2FcdTZhN2JcdTZhN2RcdTZhN2VcdTZhN2ZcdTZhODFcdTZhODJcdTZhODNcdTZhODVcdTZhODZcdTZhODdcdTZhODhcdTZhODlcdTZhOGFcdTZhOGJcdTZhOGNcdTZhOGRcdTZhOGZcdTZhOTJcdTZhOTNcdTZhOTRcdTZhOTVcdTZhOTZcdTZhOThcdTZhOTlc''@;'; put 'put ''dTZhOWFcdTZhOWJcdTZhOWNcdTZhOWRcdTZhOWVcdTZhOWZcdTZhYTFcdTZhYTJcdTZhYTNcdTZhYTRcdTZhYTVcdTZhYTZcdWZmZmRcdTZhYTdcdTZhYThcdTZhYWFcdTZhYWRcdTZhYWVcdTZhYWZcdTZhYjBcdTZhYjFcdTZhYjJcdTZhYjNcdTZhYjRcdTZhYjVcdTZhYjZcdTZhYjdcdTZh''@;'; put 'put ''YjhcdTZhYjlcdTZhYmFcdTZhYmJcdTZhYmNcdTZhYmRcdTZhYmVcdTZhYmZcdTZhYzBcdTZhYzFcdTZhYzJcdTZhYzNcdTZhYzRcdTZhYzVcdTZhYzZcdTZhYzdcdTZhYzhcdTZhYzlcdTZhY2FcdTZhY2JcdTZhY2NcdTZhY2RcdTZhY2VcdTZhY2ZcdTZhZDBcdTZhZDFcdTZhZDJcdTZhZDNc''@;'; put 'put ''dTZhZDRcdTZhZDVcdTZhZDZcdTZhZDdcdTZhZDhcdTZhZDlcdTZhZGFcdTZhZGJcdTZhZGNcdTZhZGRcdTZhZGVcdTZhZGZcdTZhZTBcdTZhZTFcdTZhZTJcdTZhZTNcdTZhZTRcdTZhZTVcdTZhZTZcdTZhZTdcdTZhZThcdTZhZTlcdTZhZWFcdTZhZWJcdTZhZWNcdTZhZWRcdTZhZWVcdTZh''@;'; put 'put ''ZWZcdTZhZjBcdTZhZjFcdTZhZjJcdTZhZjNcdTZhZjRcdTZhZjVcdTZhZjZcdTZhZjdcdTZhZjhcdTZhZjlcdTZhZmFcdTZhZmJcdTZhZmNcdTZhZmRcdTZhZmVcdTZhZmZcdTZiMDBcdTZiMDFcdTZiMDJcdTZiMDNcdTZiMDRcdTZiMDVcdTZiMDZcdTZiMDdcdTZiMDhcdTZiMDlcdTZiMGFc''@;'; put 'put ''dTZiMGJcdTZiMGNcdTZiMGRcdTZiMGVcdTZiMGZcdTZiMTBcdTZiMTFcdTZiMTJcdTZiMTNcdTZiMTRcdTZiMTVcdTZiMTZcdTZiMTdcdTZiMThcdTZiMTlcdTZiMWFcdTZiMWJcdTZiMWNcdTZiMWRcdTZiMWVcdTZiMWZcdTZiMjVcdTZiMjZcdTZiMjhcdTZiMjlcdTZiMmFcdTZiMmJcdTZi''@;'; put 'put ''MmNcdTZiMmRcdTZiMmVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTUzXVttXV09MzkxNjgrbSxSWzM5MTY4K21dPXhbMTUzXVttXSk7Zm9yKHhbMTU0XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YjJmXHU2YjMwXHU2YjMxXHU2YjMzXHU2YjM0XHU2YjM1XHU2YjM2XHU2YjM4XHU2YjNiXHU2YjNjXHU2YjNkXHU2YjNmXHU2YjQwXHU2YjQxXHU2YjQyXHU2YjQ0XHU2YjQ1XHU2YjQ4XHU2YjRhXHU2YjRiXHU2YjRkXHU2''@;'; put 'put ''YjRlXHU2YjRmXHU2YjUwXHU2YjUxXHU2YjUyXHU2YjUzXHU2YjU0XHU2YjU1XHU2YjU2XHU2YjU3XHU2YjU4XHU2YjVhXHU2YjViXHU2YjVjXHU2YjVkXHU2YjVlXHU2YjVmXHU2YjYwXHU2YjYxXHU2YjY4XHU2YjY5XHU2YjZiXHU2YjZjXHU2YjZkXHU2YjZlXHU2YjZmXHU2YjcwXHU2Yjcx''@;'; put 'put ''XHU2YjcyXHU2YjczXHU2Yjc0XHU2Yjc1XHU2Yjc2XHU2Yjc3XHU2Yjc4XHU2YjdhXHU2YjdkXHU2YjdlXHU2YjdmXHU2YjgwXHU2Yjg1XHU2Yjg4XHVmZmZkXHU2YjhjXHU2YjhlXHU2YjhmXHU2YjkwXHU2YjkxXHU2Yjk0XHU2Yjk1XHU2Yjk3XHU2Yjk4XHU2Yjk5XHU2YjljXHU2YjlkXHU2''@;'; put 'put ''YjllXHU2YjlmXHU2YmEwXHU2YmEyXHU2YmEzXHU2YmE0XHU2YmE1XHU2YmE2XHU2YmE3XHU2YmE4XHU2YmE5XHU2YmFiXHU2YmFjXHU2YmFkXHU2YmFlXHU2YmFmXHU2YmIwXHU2YmIxXHU2YmIyXHU2YmI2XHU2YmI4XHU2YmI5XHU2YmJhXHU2YmJiXHU2YmJjXHU2YmJkXHU2YmJlXHU2YmMw''@;'; put 'put ''XHU2YmMzXHU2YmM0XHU2YmM2XHU2YmM3XHU2YmM4XHU2YmM5XHU2YmNhXHU2YmNjXHU2YmNlXHU2YmQwXHU2YmQxXHU2YmQ4XHU2YmRhXHU2YmRjXHU2YmRkXHU2YmRlXHU2YmRmXHU2YmUwXHU2YmUyXHU2YmUzXHU2YmU0XHU2YmU1XHU2YmU2XHU2YmU3XHU2YmU4XHU2YmU5XHU2YmVjXHU2''@;'; put 'put ''YmVkXHU2YmVlXHU2YmYwXHU2YmYxXHU2YmYyXHU2YmY0XHU2YmY2XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlXHU2YmZmXHU2YzAwXHU2YzAxXHU2YzAyXHU2YzAzXHU2YzA0XHU2YzA4XHU2YzA5XHU2YzBhXHU2YzBiXHU2YzBjXHU2YzBlXHU2YzEyXHU2YzE3XHU2YzFj''@;'; put 'put ''XHU2YzFkXHU2YzFlXHU2YzIwXHU2YzIzXHU2YzI1XHU2YzJiXHU2YzJjXHU2YzJkXHU2YzMxXHU2YzMzXHU2YzM2XHU2YzM3XHU2YzM5XHU2YzNhXHU2YzNiXHU2YzNjXHU2YzNlXHU2YzNmXHU2YzQzXHU2YzQ0XHU2YzQ1XHU2YzQ4XHU2YzRiXHU2YzRjXHU2YzRkXHU2YzRlXHU2YzRmXHU2''@;'; put 'put ''YzUxXHU2YzUyXHU2YzUzXHU2YzU2XHU2YzU4XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTU0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1NF1bbV1dPTM5NDI0K20sUlszOTQyNCttXT14WzE1NF1bbV0pO2Zvcih4WzE1NV09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmM1OVx1NmM1YVx1NmM2Mlx1NmM2M1x1NmM2NVx1NmM2Nlx1NmM2N1x1NmM2Ylx1NmM2Y1x1NmM2ZFx1NmM2ZVx1NmM2Zlx1NmM3MVx1NmM3M1x1NmM3NVx1NmM3N1x1NmM3OFx1NmM3YVx1NmM3Ylx1''@;'; put 'put ''NmM3Y1x1NmM3Zlx1NmM4MFx1NmM4NFx1NmM4N1x1NmM4YVx1NmM4Ylx1NmM4ZFx1NmM4ZVx1NmM5MVx1NmM5Mlx1NmM5NVx1NmM5Nlx1NmM5N1x1NmM5OFx1NmM5YVx1NmM5Y1x1NmM5ZFx1NmM5ZVx1NmNhMFx1NmNhMlx1NmNhOFx1NmNhY1x1NmNhZlx1NmNiMFx1NmNiNFx1NmNiNVx1NmNi''@;'; put 'put ''Nlx1NmNiN1x1NmNiYVx1NmNjMFx1NmNjMVx1NmNjMlx1NmNjM1x1NmNjNlx1NmNjN1x1NmNjOFx1NmNjYlx1NmNjZFx1NmNjZVx1NmNjZlx1NmNkMVx1NmNkMlx1NmNkOFx1ZmZmZFx1NmNkOVx1NmNkYVx1NmNkY1x1NmNkZFx1NmNkZlx1NmNlNFx1NmNlNlx1NmNlN1x1NmNlOVx1NmNlY1x1''@;'; put 'put ''NmNlZFx1NmNmMlx1NmNmNFx1NmNmOVx1NmNmZlx1NmQwMFx1NmQwMlx1NmQwM1x1NmQwNVx1NmQwNlx1NmQwOFx1NmQwOVx1NmQwYVx1NmQwZFx1NmQwZlx1NmQxMFx1NmQxMVx1NmQxM1x1NmQxNFx1NmQxNVx1NmQxNlx1NmQxOFx1NmQxY1x1NmQxZFx1NmQxZlx1NmQyMFx1NmQyMVx1NmQy''@;'; put 'put ''Mlx1NmQyM1x1NmQyNFx1NmQyNlx1NmQyOFx1NmQyOVx1NmQyY1x1NmQyZFx1NmQyZlx1NmQzMFx1NmQzNFx1NmQzNlx1NmQzN1x1NmQzOFx1NmQzYVx1NmQzZlx1NmQ0MFx1NmQ0Mlx1NmQ0NFx1NmQ0OVx1NmQ0Y1x1NmQ1MFx1NmQ1NVx1NmQ1Nlx1NmQ1N1x1NmQ1OFx1NmQ1Ylx1NmQ1ZFx1''@;'; put 'put ''NmQ1Zlx1NmQ2MVx1NmQ2Mlx1NmQ2NFx1NmQ2NVx1NmQ2N1x1NmQ2OFx1NmQ2Ylx1NmQ2Y1x1NmQ2ZFx1NmQ3MFx1NmQ3MVx1NmQ3Mlx1NmQ3M1x1NmQ3NVx1NmQ3Nlx1NmQ3OVx1NmQ3YVx1NmQ3Ylx1NmQ3ZFx1NmQ3ZVx1NmQ3Zlx1NmQ4MFx1NmQ4MVx1NmQ4M1x1NmQ4NFx1NmQ4Nlx1NmQ4''@;'; put 'put ''N1x1NmQ4YVx1NmQ4Ylx1NmQ4ZFx1NmQ4Zlx1NmQ5MFx1NmQ5Mlx1NmQ5Nlx1NmQ5N1x1NmQ5OFx1NmQ5OVx1NmQ5YVx1NmQ5Y1x1NmRhMlx1NmRhNVx1NmRhY1x1NmRhZFx1NmRiMFx1NmRiMVx1NmRiM1x1NmRiNFx1NmRiNlx1NmRiN1x1NmRiOVx1NmRiYVx1NmRiYlx1NmRiY1x1NmRiZFx1''@;'; put 'put ''NmRiZVx1NmRjMVx1NmRjMlx1NmRjM1x1NmRjOFx1NmRjOVx1NmRjYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTU1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTVdW21dXT0zOTY4MCttLFJbMzk2ODArbV09eFsxNTVdW21dKTtmb3Io''@;'; put 'put ''eFsxNTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkY2RcdTZkY2VcdTZkY2ZcdTZkZDBcdTZkZDJcdTZkZDNcdTZkZDRcdTZkZDVcdTZkZDdcdTZkZGFcdTZkZGJcdTZkZGNcdTZkZGZcdTZkZTJcdTZkZTNcdTZkZTVcdTZkZTdc''@;'; put 'put ''dTZkZThcdTZkZTlcdTZkZWFcdTZkZWRcdTZkZWZcdTZkZjBcdTZkZjJcdTZkZjRcdTZkZjVcdTZkZjZcdTZkZjhcdTZkZmFcdTZkZmRcdTZkZmVcdTZkZmZcdTZlMDBcdTZlMDFcdTZlMDJcdTZlMDNcdTZlMDRcdTZlMDZcdTZlMDdcdTZlMDhcdTZlMDlcdTZlMGJcdTZlMGZcdTZlMTJcdTZl''@;'; put 'put ''MTNcdTZlMTVcdTZlMThcdTZlMTlcdTZlMWJcdTZlMWNcdTZlMWVcdTZlMWZcdTZlMjJcdTZlMjZcdTZlMjdcdTZlMjhcdTZlMmFcdTZlMmNcdTZlMmVcdTZlMzBcdTZlMzFcdTZlMzNcdTZlMzVcdWZmZmRcdTZlMzZcdTZlMzdcdTZlMzlcdTZlM2JcdTZlM2NcdTZlM2RcdTZlM2VcdTZlM2Zc''@;'; put 'put ''dTZlNDBcdTZlNDFcdTZlNDJcdTZlNDVcdTZlNDZcdTZlNDdcdTZlNDhcdTZlNDlcdTZlNGFcdTZlNGJcdTZlNGNcdTZlNGZcdTZlNTBcdTZlNTFcdTZlNTJcdTZlNTVcdTZlNTdcdTZlNTlcdTZlNWFcdTZlNWNcdTZlNWRcdTZlNWVcdTZlNjBcdTZlNjFcdTZlNjJcdTZlNjNcdTZlNjRcdTZl''@;'; put 'put ''NjVcdTZlNjZcdTZlNjdcdTZlNjhcdTZlNjlcdTZlNmFcdTZlNmNcdTZlNmRcdTZlNmZcdTZlNzBcdTZlNzFcdTZlNzJcdTZlNzNcdTZlNzRcdTZlNzVcdTZlNzZcdTZlNzdcdTZlNzhcdTZlNzlcdTZlN2FcdTZlN2JcdTZlN2NcdTZlN2RcdTZlODBcdTZlODFcdTZlODJcdTZlODRcdTZlODdc''@;'; put 'put ''dTZlODhcdTZlOGFcdTZlOGJcdTZlOGNcdTZlOGRcdTZlOGVcdTZlOTFcdTZlOTJcdTZlOTNcdTZlOTRcdTZlOTVcdTZlOTZcdTZlOTdcdTZlOTlcdTZlOWFcdTZlOWJcdTZlOWRcdTZlOWVcdTZlYTBcdTZlYTFcdTZlYTNcdTZlYTRcdTZlYTZcdTZlYThcdTZlYTlcdTZlYWJcdTZlYWNcdTZl''@;'; put 'put ''YWRcdTZlYWVcdTZlYjBcdTZlYjNcdTZlYjVcdTZlYjhcdTZlYjlcdTZlYmNcdTZlYmVcdTZlYmZcdTZlYzBcdTZlYzNcdTZlYzRcdTZlYzVcdTZlYzZcdTZlYzhcdTZlYzlcdTZlY2FcdTZlY2NcdTZlY2RcdTZlY2VcdTZlZDBcdTZlZDJcdTZlZDZcdTZlZDhcdTZlZDlcdTZlZGJcdTZlZGNc''@;'; put 'put ''dTZlZGRcdTZlZTNcdTZlZTdcdTZlZWFcdTZlZWJcdTZlZWNcdTZlZWRcdTZlZWVcdTZlZWZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTU2XVttXV09Mzk5MzYrbSxSWzM5OTM2K21dPXhb''@;'; put 'put ''MTU2XVttXSk7Zm9yKHhbMTU3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWYwXHU2ZWYxXHU2ZWYyXHU2ZWYzXHU2ZWY1XHU2ZWY2XHU2ZWY3XHU2ZWY4XHU2ZWZhXHU2ZWZiXHU2ZWZjXHU2ZWZkXHU2ZWZlXHU2ZWZmXHU2ZjAw''@;'; put 'put ''XHU2ZjAxXHU2ZjAzXHU2ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhXHU2ZjBiXHU2ZjBjXHU2ZjBkXHU2ZjBlXHU2ZjEwXHU2ZjExXHU2ZjEyXHU2ZjE2XHU2ZjE3XHU2ZjE4XHU2ZjE5XHU2ZjFhXHU2ZjFiXHU2ZjFjXHU2ZjFkXHU2ZjFlXHU2ZjFmXHU2ZjIxXHU2ZjIyXHU2ZjIzXHU2''@;'; put 'put ''ZjI1XHU2ZjI2XHU2ZjI3XHU2ZjI4XHU2ZjJjXHU2ZjJlXHU2ZjMwXHU2ZjMyXHU2ZjM0XHU2ZjM1XHU2ZjM3XHU2ZjM4XHU2ZjM5XHU2ZjNhXHU2ZjNiXHU2ZjNjXHU2ZjNkXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyXHVmZmZkXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRh''@;'; put 'put ''XHU2ZjRjXHU2ZjRlXHU2ZjRmXHU2ZjUwXHU2ZjUxXHU2ZjUyXHU2ZjUzXHU2ZjU0XHU2ZjU1XHU2ZjU2XHU2ZjU3XHU2ZjU5XHU2ZjVhXHU2ZjViXHU2ZjVkXHU2ZjVmXHU2ZjYwXHU2ZjYxXHU2ZjYzXHU2ZjY0XHU2ZjY1XHU2ZjY3XHU2ZjY4XHU2ZjY5XHU2ZjZhXHU2ZjZiXHU2ZjZjXHU2''@;'; put 'put ''ZjZmXHU2ZjcwXHU2ZjcxXHU2ZjczXHU2Zjc1XHU2Zjc2XHU2Zjc3XHU2Zjc5XHU2ZjdiXHU2ZjdkXHU2ZjdlXHU2ZjdmXHU2ZjgwXHU2ZjgxXHU2ZjgyXHU2ZjgzXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2ZjhiXHU2ZjhmXHU2ZjkwXHU2ZjkxXHU2ZjkyXHU2ZjkzXHU2Zjk0XHU2Zjk1''@;'; put 'put ''XHU2Zjk2XHU2Zjk3XHU2Zjk4XHU2Zjk5XHU2ZjlhXHU2ZjliXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyXHU2ZmEzXHU2ZmE0XHU2ZmE1XHU2ZmE2XHU2ZmE4XHU2ZmE5XHU2ZmFhXHU2ZmFiXHU2ZmFjXHU2ZmFkXHU2ZmFlXHU2ZmFmXHU2ZmIwXHU2ZmIxXHU2ZmIyXHU2ZmI0XHU2''@;'; put 'put ''ZmI1XHU2ZmI3XHU2ZmI4XHU2ZmJhXHU2ZmJiXHU2ZmJjXHU2ZmJkXHU2ZmJlXHU2ZmJmXHU2ZmMxXHU2ZmMzXHU2ZmM0XHU2ZmM1XHU2ZmM2XHU2ZmM3XHU2ZmM4XHU2ZmNhXHU2ZmNiXHU2ZmNjXHU2ZmNkXHU2ZmNlXHU2ZmNmXHU2ZmQwXHU2ZmQzXHU2ZmQ0XHU2ZmQ1XHU2ZmQ2XHU2ZmQ3''@;'; put 'put ''XHU2ZmQ4XHU2ZmQ5XHU2ZmRhXHU2ZmRiXHU2ZmRjXHU2ZmRkXHU2ZmRmXHU2ZmUyXHU2ZmUzXHU2ZmU0XHU2ZmU1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTU3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1N11bbV1dPTQwMTkyK20s''@;'; put 'put ''Uls0MDE5MittXT14WzE1N11bbV0pO2Zvcih4WzE1OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZlNlx1NmZlN1x1NmZlOFx1NmZlOVx1NmZlYVx1NmZlYlx1NmZlY1x1NmZlZFx1NmZmMFx1NmZmMVx1NmZmMlx1NmZmM1x1NmZm''@;'; put 'put ''NFx1NmZmNVx1NmZmNlx1NmZmN1x1NmZmOFx1NmZmOVx1NmZmYVx1NmZmYlx1NmZmY1x1NmZmZFx1NmZmZVx1NmZmZlx1NzAwMFx1NzAwMVx1NzAwMlx1NzAwM1x1NzAwNFx1NzAwNVx1NzAwNlx1NzAwN1x1NzAwOFx1NzAwOVx1NzAwYVx1NzAwYlx1NzAwY1x1NzAwZFx1NzAwZVx1NzAwZlx1''@;'; put 'put ''NzAxMFx1NzAxMlx1NzAxM1x1NzAxNFx1NzAxNVx1NzAxNlx1NzAxN1x1NzAxOFx1NzAxOVx1NzAxY1x1NzAxZFx1NzAxZVx1NzAxZlx1NzAyMFx1NzAyMVx1NzAyMlx1NzAyNFx1NzAyNVx1NzAyNlx1NzAyN1x1NzAyOFx1NzAyOVx1NzAyYVx1ZmZmZFx1NzAyYlx1NzAyY1x1NzAyZFx1NzAy''@;'; put 'put ''ZVx1NzAyZlx1NzAzMFx1NzAzMVx1NzAzMlx1NzAzM1x1NzAzNFx1NzAzNlx1NzAzN1x1NzAzOFx1NzAzYVx1NzAzYlx1NzAzY1x1NzAzZFx1NzAzZVx1NzAzZlx1NzA0MFx1NzA0MVx1NzA0Mlx1NzA0M1x1NzA0NFx1NzA0NVx1NzA0Nlx1NzA0N1x1NzA0OFx1NzA0OVx1NzA0YVx1NzA0Ylx1''@;'; put 'put ''NzA0ZFx1NzA0ZVx1NzA1MFx1NzA1MVx1NzA1Mlx1NzA1M1x1NzA1NFx1NzA1NVx1NzA1Nlx1NzA1N1x1NzA1OFx1NzA1OVx1NzA1YVx1NzA1Ylx1NzA1Y1x1NzA1ZFx1NzA1Zlx1NzA2MFx1NzA2MVx1NzA2Mlx1NzA2M1x1NzA2NFx1NzA2NVx1NzA2Nlx1NzA2N1x1NzA2OFx1NzA2OVx1NzA2''@;'; put 'put ''YVx1NzA2ZVx1NzA3MVx1NzA3Mlx1NzA3M1x1NzA3NFx1NzA3N1x1NzA3OVx1NzA3YVx1NzA3Ylx1NzA3ZFx1NzA4MVx1NzA4Mlx1NzA4M1x1NzA4NFx1NzA4Nlx1NzA4N1x1NzA4OFx1NzA4Ylx1NzA4Y1x1NzA4ZFx1NzA4Zlx1NzA5MFx1NzA5MVx1NzA5M1x1NzA5N1x1NzA5OFx1NzA5YVx1''@;'; put 'put ''NzA5Ylx1NzA5ZVx1NzA5Zlx1NzBhMFx1NzBhMVx1NzBhMlx1NzBhM1x1NzBhNFx1NzBhNVx1NzBhNlx1NzBhN1x1NzBhOFx1NzBhOVx1NzBhYVx1NzBiMFx1NzBiMlx1NzBiNFx1NzBiNVx1NzBiNlx1NzBiYVx1NzBiZVx1NzBiZlx1NzBjNFx1NzBjNVx1NzBjNlx1NzBjN1x1NzBjOVx1NzBj''@;'; put 'put ''Ylx1NzBjY1x1NzBjZFx1NzBjZVx1NzBjZlx1NzBkMFx1NzBkMVx1NzBkMlx1NzBkM1x1NzBkNFx1NzBkNVx1NzBkNlx1NzBkN1x1NzBkYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTU4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNThd''@;'; put 'put ''W21dXT00MDQ0OCttLFJbNDA0NDgrbV09eFsxNThdW21dKTtmb3IoeFsxNTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwZGNcdTcwZGRcdTcwZGVcdTcwZTBcdTcwZTFcdTcwZTJcdTcwZTNcdTcwZTVcdTcwZWFcdTcwZWVcdTcw''@;'; put 'put ''ZjBcdTcwZjFcdTcwZjJcdTcwZjNcdTcwZjRcdTcwZjVcdTcwZjZcdTcwZjhcdTcwZmFcdTcwZmJcdTcwZmNcdTcwZmVcdTcwZmZcdTcxMDBcdTcxMDFcdTcxMDJcdTcxMDNcdTcxMDRcdTcxMDVcdTcxMDZcdTcxMDdcdTcxMDhcdTcxMGJcdTcxMGNcdTcxMGRcdTcxMGVcdTcxMGZcdTcxMTFc''@;'; put 'put ''dTcxMTJcdTcxMTRcdTcxMTdcdTcxMWJcdTcxMWNcdTcxMWRcdTcxMWVcdTcxMWZcdTcxMjBcdTcxMjFcdTcxMjJcdTcxMjNcdTcxMjRcdTcxMjVcdTcxMjdcdTcxMjhcdTcxMjlcdTcxMmFcdTcxMmJcdTcxMmNcdTcxMmRcdTcxMmVcdTcxMzJcdTcxMzNcdTcxMzRcdWZmZmRcdTcxMzVcdTcx''@;'; put 'put ''MzdcdTcxMzhcdTcxMzlcdTcxM2FcdTcxM2JcdTcxM2NcdTcxM2RcdTcxM2VcdTcxM2ZcdTcxNDBcdTcxNDFcdTcxNDJcdTcxNDNcdTcxNDRcdTcxNDZcdTcxNDdcdTcxNDhcdTcxNDlcdTcxNGJcdTcxNGRcdTcxNGZcdTcxNTBcdTcxNTFcdTcxNTJcdTcxNTNcdTcxNTRcdTcxNTVcdTcxNTZc''@;'; put 'put ''dTcxNTdcdTcxNThcdTcxNTlcdTcxNWFcdTcxNWJcdTcxNWRcdTcxNWZcdTcxNjBcdTcxNjFcdTcxNjJcdTcxNjNcdTcxNjVcdTcxNjlcdTcxNmFcdTcxNmJcdTcxNmNcdTcxNmRcdTcxNmZcdTcxNzBcdTcxNzFcdTcxNzRcdTcxNzVcdTcxNzZcdTcxNzdcdTcxNzlcdTcxN2JcdTcxN2NcdTcx''@;'; put 'put ''N2VcdTcxN2ZcdTcxODBcdTcxODFcdTcxODJcdTcxODNcdTcxODVcdTcxODZcdTcxODdcdTcxODhcdTcxODlcdTcxOGJcdTcxOGNcdTcxOGRcdTcxOGVcdTcxOTBcdTcxOTFcdTcxOTJcdTcxOTNcdTcxOTVcdTcxOTZcdTcxOTdcdTcxOWFcdTcxOWJcdTcxOWNcdTcxOWRcdTcxOWVcdTcxYTFc''@;'; put 'put ''dTcxYTJcdTcxYTNcdTcxYTRcdTcxYTVcdTcxYTZcdTcxYTdcdTcxYTlcdTcxYWFcdTcxYWJcdTcxYWRcdTcxYWVcdTcxYWZcdTcxYjBcdTcxYjFcdTcxYjJcdTcxYjRcdTcxYjZcdTcxYjdcdTcxYjhcdTcxYmFcdTcxYmJcdTcxYmNcdTcxYmRcdTcxYmVcdTcxYmZcdTcxYzBcdTcxYzFcdTcx''@;'; put 'put ''YzJcdTcxYzRcdTcxYzVcdTcxYzZcdTcxYzdcdTcxYzhcdTcxYzlcdTcxY2FcdTcxY2JcdTcxY2NcdTcxY2RcdTcxY2ZcdTcxZDBcdTcxZDFcdTcxZDJcdTcxZDNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1OV1bbV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG9lW3hbMTU5XVttXV09NDA3MDQrbSxSWzQwNzA0K21dPXhbMTU5XVttXSk7Zm9yKHhbMTYwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MWQ2XHU3MWQ3XHU3MWQ4XHU3MWQ5XHU3MWRhXHU3MWRiXHU3MWRjXHU3MWRkXHU3''@;'; put 'put ''MWRlXHU3MWRmXHU3MWUxXHU3MWUyXHU3MWUzXHU3MWU0XHU3MWU2XHU3MWU4XHU3MWU5XHU3MWVhXHU3MWViXHU3MWVjXHU3MWVkXHU3MWVmXHU3MWYwXHU3MWYxXHU3MWYyXHU3MWYzXHU3MWY0XHU3MWY1XHU3MWY2XHU3MWY3XHU3MWY4XHU3MWZhXHU3MWZiXHU3MWZjXHU3MWZkXHU3MWZl''@;'; put 'put ''XHU3MWZmXHU3MjAwXHU3MjAxXHU3MjAyXHU3MjAzXHU3MjA0XHU3MjA1XHU3MjA3XHU3MjA4XHU3MjA5XHU3MjBhXHU3MjBiXHU3MjBjXHU3MjBkXHU3MjBlXHU3MjBmXHU3MjEwXHU3MjExXHU3MjEyXHU3MjEzXHU3MjE0XHU3MjE1XHU3MjE2XHU3MjE3XHU3MjE4XHU3MjE5XHU3MjFhXHVm''@;'; put 'put ''ZmZkXHU3MjFiXHU3MjFjXHU3MjFlXHU3MjFmXHU3MjIwXHU3MjIxXHU3MjIyXHU3MjIzXHU3MjI0XHU3MjI1XHU3MjI2XHU3MjI3XHU3MjI5XHU3MjJiXHU3MjJkXHU3MjJlXHU3MjJmXHU3MjMyXHU3MjMzXHU3MjM0XHU3MjNhXHU3MjNjXHU3MjNlXHU3MjQwXHU3MjQxXHU3MjQyXHU3MjQz''@;'; put 'put ''XHU3MjQ0XHU3MjQ1XHU3MjQ2XHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3MjZhXHU3MjZiXHU3MjZjXHU3MjZkXHU3''@;'; put 'put ''MjcwXHU3MjcxXHU3MjczXHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1XHU3Mjg2XHU3Mjg3XHU3Mjg4XHU3Mjg5XHU3MjhjXHU3MjhlXHU3MjkwXHU3MjkxXHU3MjkzXHU3Mjk0XHU3Mjk1XHU3Mjk2XHU3Mjk3XHU3Mjk4XHU3Mjk5''@;'; put 'put ''XHU3MjlhXHU3MjliXHU3MjljXHU3MjlkXHU3MjllXHU3MmEwXHU3MmExXHU3MmEyXHU3MmEzXHU3MmE0XHU3MmE1XHU3MmE2XHU3MmE3XHU3MmE4XHU3MmE5XHU3MmFhXHU3MmFiXHU3MmFlXHU3MmIxXHU3MmIyXHU3MmIzXHU3MmI1XHU3MmJhXHU3MmJiXHU3MmJjXHU3MmJkXHU3MmJlXHU3''@;'; put 'put ''MmJmXHU3MmMwXHU3MmM1XHU3MmM2XHU3MmM3XHU3MmM5XHU3MmNhXHU3MmNiXHU3MmNjXHU3MmNmXHU3MmQxXHU3MmQzXHU3MmQ0XHU3MmQ1XHU3MmQ2XHU3MmQ4XHU3MmRhXHU3MmRiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTYwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjBdW21d''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2MF1bbV1dPTQwOTYwK20sUls0MDk2MCttXT14WzE2MF1bbV0pO2Zvcih4WzE2MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTAyYzlcdTAyYzdceGE4XHUzMDAzXHUzMDA1XHUyMDE0XHVmZjVlXHUyMDE2XHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4''@;'; put 'put ''XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDE2XHUzMDE3XHUzMDEwXHUzMDExXHhiMVx4ZDdceGY3XHUyMjM2XHUyMjI3XHUyMjI4XHUyMjExXHUyMjBmXHUyMjJhXHUyMjI5XHUyMjA4XHUyMjM3XHUyMjFhXHUyMmE1XHUyMjI1XHUyMjIwXHUyMzEyXHUy''@;'; put 'put ''Mjk5XHUyMjJiXHUyMjJlXHUyMjYxXHUyMjRjXHUyMjQ4XHUyMjNkXHUyMjFkXHUyMjYwXHUyMjZlXHUyMjZmXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM1XHUyMjM0XHUyNjQyXHUyNjQwXHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1ZmYwNFx4YTRcdWZmZTBcdWZmZTFcdTIwMzBceGE3XHUyMTE2''@;'; put 'put ''XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyMDNiXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTYxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjFdW21dLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihvZVt4WzE2MV1bbV1dPTQxMjE2K20sUls0MTIxNittXT14WzE2MV1bbV0pO2Zvcih4WzE2Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjQ4OFx1MjQ4OVx1MjQ4YVx1MjQ4''@;'; put 'put ''Ylx1MjQ4Y1x1MjQ4ZFx1MjQ4ZVx1MjQ4Zlx1MjQ5MFx1MjQ5MVx1MjQ5Mlx1MjQ5M1x1MjQ5NFx1MjQ5NVx1MjQ5Nlx1MjQ5N1x1MjQ5OFx1MjQ5OVx1MjQ5YVx1MjQ5Ylx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1''@;'; put 'put ''MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx1MjQ4M1x1MjQ4NFx1MjQ4NVx1MjQ4Nlx1MjQ4N1x1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1ZmZmZFx1ZmZmZFx1MzIyMFx1MzIyMVx1MzIyMlx1MzIyM1x1MzIyNFx1MzIyNVx1MzIy''@;'; put 'put ''Nlx1MzIyN1x1MzIyOFx1MzIyOVx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1MjE2OVx1MjE2YVx1MjE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2Ml0ubGVuZ3RoOysrbSk2NTUzMyE9''@;'; put 'put ''PXhbMTYyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjJdW21dXT00MTQ3MittLFJbNDE0NzIrbV09eFsxNjJdW21dKTtmb3IoeFsxNjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZm''@;'; put 'put ''MTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZmMWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRc''@;'; put 'put ''dWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhcdWZmMzlcdWZmM2FcdWZmM2JcdWZmM2NcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZm''@;'; put 'put ''NDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZmNTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjNdLmxlbmd0''@;'; put 'put ''aDsrK20pNjU1MzMhPT14WzE2M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTYzXVttXV09NDE3MjgrbSxSWzQxNzI4K21dPXhbMTYzXVttXSk7Zm9yKHhbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1XHUzMDQ2XHUzMDQ3XHUzMDQ4XHUzMDQ5XHUzMDRhXHUzMDRiXHUzMDRjXHUzMDRkXHUzMDRlXHUzMDRmXHUz''@;'; put 'put ''MDUwXHUzMDUxXHUzMDUyXHUzMDUzXHUzMDU0XHUzMDU1XHUzMDU2XHUzMDU3XHUzMDU4XHUzMDU5XHUzMDVhXHUzMDViXHUzMDVjXHUzMDVkXHUzMDVlXHUzMDVmXHUzMDYwXHUzMDYxXHUzMDYyXHUzMDYzXHUzMDY0XHUzMDY1XHUzMDY2XHUzMDY3XHUzMDY4XHUzMDY5XHUzMDZhXHUzMDZi''@;'; put 'put ''XHUzMDZjXHUzMDZkXHUzMDZlXHUzMDZmXHUzMDcwXHUzMDcxXHUzMDcyXHUzMDczXHUzMDc0XHUzMDc1XHUzMDc2XHUzMDc3XHUzMDc4XHUzMDc5XHUzMDdhXHUzMDdiXHUzMDdjXHUzMDdkXHUzMDdlXHUzMDdmXHUzMDgwXHUzMDgxXHUzMDgyXHUzMDgzXHUzMDg0XHUzMDg1XHUzMDg2XHUz''@;'; put 'put ''MDg3XHUzMDg4XHUzMDg5XHUzMDhhXHUzMDhiXHUzMDhjXHUzMDhkXHUzMDhlXHUzMDhmXHUzMDkwXHUzMDkxXHUzMDkyXHUzMDkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20h''@;'; put 'put ''PXhbMTY0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2NF1bbV1dPTQxOTg0K20sUls0MTk4NCttXT14WzE2NF1bbV0pO2Zvcih4WzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzBhMVx1MzBhMlx1MzBhM1x1MzBhNFx1MzBhNVx1MzBhNlx1MzBhN1x1MzBhOFx1MzBhOVx1MzBhYVx1MzBhYlx1MzBhY1x1MzBhZFx1''@;'; put 'put ''MzBhZVx1MzBhZlx1MzBiMFx1MzBiMVx1MzBiMlx1MzBiM1x1MzBiNFx1MzBiNVx1MzBiNlx1MzBiN1x1MzBiOFx1MzBiOVx1MzBiYVx1MzBiYlx1MzBiY1x1MzBiZFx1MzBiZVx1MzBiZlx1MzBjMFx1MzBjMVx1MzBjMlx1MzBjM1x1MzBjNFx1MzBjNVx1MzBjNlx1MzBjN1x1MzBjOFx1MzBj''@;'; put 'put ''OVx1MzBjYVx1MzBjYlx1MzBjY1x1MzBjZFx1MzBjZVx1MzBjZlx1MzBkMFx1MzBkMVx1MzBkMlx1MzBkM1x1MzBkNFx1MzBkNVx1MzBkNlx1MzBkN1x1MzBkOFx1MzBkOVx1MzBkYVx1MzBkYlx1MzBkY1x1MzBkZFx1MzBkZVx1MzBkZlx1MzBlMFx1MzBlMVx1MzBlMlx1MzBlM1x1MzBlNFx1''@;'; put 'put ''MzBlNVx1MzBlNlx1MzBlN1x1MzBlOFx1MzBlOVx1MzBlYVx1MzBlYlx1MzBlY1x1MzBlZFx1MzBlZVx1MzBlZlx1MzBmMFx1MzBmMVx1MzBmMlx1MzBmM1x1MzBmNFx1MzBmNVx1MzBmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLG09MDttIT14WzE2NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjVdW21dXT00MjI0MCttLFJbNDIyNDArbV09eFsxNjVdW21dKTtmb3IoeFsxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJc''@;'; put 'put ''dTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAz''@;'; put 'put ''YjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlMzVcdWZlMzZcdWZlMzlc''@;'; put 'put ''dWZlM2FcdWZlM2ZcdWZlNDBcdWZlM2RcdWZlM2VcdWZlNDFcdWZlNDJcdWZlNDNcdWZlNDRcdWZmZmRcdWZmZmRcdWZlM2JcdWZlM2NcdWZlMzdcdWZlMzhcdWZlMzFcdWZmZmRcdWZlMzNcdWZlMzRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY2XVttXV09NDI0OTYrbSxSWzQyNDk2K21dPXhbMTY2XVttXSk7Zm9yKHhbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDAxXHUwNDE2XHUwNDE3''@;'; put 'put ''XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDUxXHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNl''@;'; put 'put ''XHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2N11bbV1dPTQyNzUyK20sUls0Mjc1MittXT14WzE2N11bbV0pO2Zvcih4WzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDJjYVx1MDJjYlx1MDJkOVx1MjAxM1x1MjAxNVx1MjAyNVx1MjAzNVx1MjEwNVx1MjEwOVx1MjE5Nlx1MjE5N1x1MjE5OFx1MjE5OVx1MjIxNVx1MjIxZlx1MjIyM1x1MjI1Mlx1MjI2Nlx1MjI2N1x1MjJiZlx1MjU1MFx1''@;'; put 'put ''MjU1MVx1MjU1Mlx1MjU1M1x1MjU1NFx1MjU1NVx1MjU1Nlx1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MjU1Y1x1MjU1ZFx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MjU2Mlx1MjU2M1x1MjU2NFx1MjU2NVx1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MjU2Ylx1MjU2''@;'; put 'put ''Y1x1MjU2ZFx1MjU2ZVx1MjU2Zlx1MjU3MFx1MjU3MVx1MjU3Mlx1MjU3M1x1MjU4MVx1MjU4Mlx1MjU4M1x1MjU4NFx1MjU4NVx1MjU4Nlx1MjU4N1x1ZmZmZFx1MjU4OFx1MjU4OVx1MjU4YVx1MjU4Ylx1MjU4Y1x1MjU4ZFx1MjU4ZVx1MjU4Zlx1MjU5M1x1MjU5NFx1MjU5NVx1MjViY1x1''@;'; put 'put ''MjViZFx1MjVlMlx1MjVlM1x1MjVlNFx1MjVlNVx1MjYwOVx1MjI5NVx1MzAxMlx1MzAxZFx1MzAxZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDEwMVx4ZTFcdTAxY2VceGUwXHUwMTEzXHhlOVx1MDExYlx4ZThc''@;'; put 'put ''dTAxMmJceGVkXHUwMWQwXHhlY1x1MDE0ZFx4ZjNcdTAxZDJceGYyXHUwMTZiXHhmYVx1MDFkNFx4ZjlcdTAxZDZcdTAxZDhcdTAxZGFcdTAxZGNceGZjXHhlYVx1MDI1MVx1ZmZmZFx1MDE0NFx1MDE0OFx1ZmZmZFx1MDI2MVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzEwNVx1MzEwNlx1''@;'; put 'put ''MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1MzExMFx1MzExMVx1MzExMlx1MzExM1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEy''@;'; put 'put ''Mlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjhdW21dXT00MzAwOCttLFJbNDMwMDgrbV09eFsxNjhdW21dKTtmb3IoeFsxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMjFcdTMwMjJcdTMwMjNcdTMwMjRcdTMwMjVcdTMwMjZcdTMwMjdcdTMwMjhcdTMwMjlcdTMyYTNcdTMzOGVcdTMzOGZcdTMzOWNcdTMzOWRcdTMzOWVcdTMzYTFcdTMzYzRcdTMzY2VcdTMzZDFcdTMzZDJcdTMzZDVcdWZlMzBcdWZmZTJc''@;'; put 'put ''dWZmZTRcdWZmZmRcdTIxMjFcdTMyMzFcdWZmZmRcdTIwMTBcdWZmZmRcdWZmZmRcdWZmZmRcdTMwZmNcdTMwOWJcdTMwOWNcdTMwZmRcdTMwZmVcdTMwMDZcdTMwOWRcdTMwOWVcdWZlNDlcdWZlNGFcdWZlNGJcdWZlNGNcdWZlNGRcdWZlNGVcdWZlNGZcdWZlNTBcdWZlNTFcdWZlNTJcdWZl''@;'; put 'put ''NTRcdWZlNTVcdWZlNTZcdWZlNTdcdWZlNTlcdWZlNWFcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdWZlNWZcdWZlNjBcdWZlNjFcdWZmZmRcdWZlNjJcdWZlNjNcdWZlNjRcdWZlNjVcdWZlNjZcdWZlNjhcdWZlNjlcdWZlNmFcdWZlNmJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwMDdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MDBcdTI1MDFcdTI1MDJcdTI1MDNcdTI1MDRcdTI1''@;'; put 'put ''MDVcdTI1MDZcdTI1MDdcdTI1MDhcdTI1MDlcdTI1MGFcdTI1MGJcdTI1MGNcdTI1MGRcdTI1MGVcdTI1MGZcdTI1MTBcdTI1MTFcdTI1MTJcdTI1MTNcdTI1MTRcdTI1MTVcdTI1MTZcdTI1MTdcdTI1MThcdTI1MTlcdTI1MWFcdTI1MWJcdTI1MWNcdTI1MWRcdTI1MWVcdTI1MWZcdTI1MjBc''@;'; put 'put ''dTI1MjFcdTI1MjJcdTI1MjNcdTI1MjRcdTI1MjVcdTI1MjZcdTI1MjdcdTI1MjhcdTI1MjlcdTI1MmFcdTI1MmJcdTI1MmNcdTI1MmRcdTI1MmVcdTI1MmZcdTI1MzBcdTI1MzFcdTI1MzJcdTI1MzNcdTI1MzRcdTI1MzVcdTI1MzZcdTI1MzdcdTI1MzhcdTI1MzlcdTI1M2FcdTI1M2JcdTI1''@;'; put 'put ''M2NcdTI1M2RcdTI1M2VcdTI1M2ZcdTI1NDBcdTI1NDFcdTI1NDJcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdTI1NGJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY5XVttXV09NDMyNjQrbSxSWzQzMjY0K21dPXhbMTY5XVttXSk7Zm9yKHhbMTcwXT0iXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmRjXHU3MmRkXHU3MmRmXHU3MmUyXHU3MmUzXHU3MmU0XHU3MmU1XHU3MmU2XHU3MmU3XHU3MmVhXHU3MmViXHU3MmY1XHU3MmY2XHU3MmY5XHU3MmZkXHU3MmZlXHU3MmZmXHU3MzAwXHU3MzAyXHU3MzA0XHU3MzA1''@;'; put 'put ''XHU3MzA2XHU3MzA3XHU3MzA4XHU3MzA5XHU3MzBiXHU3MzBjXHU3MzBkXHU3MzBmXHU3MzEwXHU3MzExXHU3MzEyXHU3MzE0XHU3MzE4XHU3MzE5XHU3MzFhXHU3MzFmXHU3MzIwXHU3MzIzXHU3MzI0XHU3MzI2XHU3MzI3XHU3MzI4XHU3MzJkXHU3MzJmXHU3MzMwXHU3MzMyXHU3MzMzXHU3''@;'; put 'put ''MzM1XHU3MzM2XHU3MzNhXHU3MzNiXHU3MzNjXHU3MzNkXHU3MzQwXHU3MzQxXHU3MzQyXHU3MzQzXHU3MzQ0XHU3MzQ1XHU3MzQ2XHU3MzQ3XHU3MzQ4XHVmZmZkXHU3MzQ5XHU3MzRhXHU3MzRiXHU3MzRjXHU3MzRlXHU3MzRmXHU3MzUxXHU3MzUzXHU3MzU0XHU3MzU1XHU3MzU2XHU3MzU4''@;'; put 'put ''XHU3MzU5XHU3MzVhXHU3MzViXHU3MzVjXHU3MzVkXHU3MzVlXHU3MzVmXHU3MzYxXHU3MzYyXHU3MzYzXHU3MzY0XHU3MzY1XHU3MzY2XHU3MzY3XHU3MzY4XHU3MzY5XHU3MzZhXHU3MzZiXHU3MzZlXHU3MzcwXHU3MzcxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTcwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3MF1bbV1dPTQzNTIwK20sUls0MzUyMCttXT14WzE3MF1bbV0pO2Zvcih4WzE3MV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzM3Mlx1NzM3M1x1NzM3NFx1NzM3NVx1NzM3Nlx1NzM3N1x1NzM3OFx1NzM3OVx1NzM3YVx1NzM3Ylx1NzM3Y1x1NzM3ZFx1NzM3Zlx1NzM4MFx1NzM4MVx1NzM4Mlx1NzM4M1x1NzM4NVx1NzM4''@;'; put 'put ''Nlx1NzM4OFx1NzM4YVx1NzM4Y1x1NzM4ZFx1NzM4Zlx1NzM5MFx1NzM5Mlx1NzM5M1x1NzM5NFx1NzM5NVx1NzM5N1x1NzM5OFx1NzM5OVx1NzM5YVx1NzM5Y1x1NzM5ZFx1NzM5ZVx1NzNhMFx1NzNhMVx1NzNhM1x1NzNhNFx1NzNhNVx1NzNhNlx1NzNhN1x1NzNhOFx1NzNhYVx1NzNhY1x1''@;'; put 'put ''NzNhZFx1NzNiMVx1NzNiNFx1NzNiNVx1NzNiNlx1NzNiOFx1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZVx1NzNiZlx1NzNjMVx1NzNjM1x1NzNjNFx1NzNjNVx1NzNjNlx1NzNjN1x1ZmZmZFx1NzNjYlx1NzNjY1x1NzNjZVx1NzNkMlx1NzNkM1x1NzNkNFx1NzNkNVx1NzNkNlx1NzNkN1x1NzNk''@;'; put 'put ''OFx1NzNkYVx1NzNkYlx1NzNkY1x1NzNkZFx1NzNkZlx1NzNlMVx1NzNlMlx1NzNlM1x1NzNlNFx1NzNlNlx1NzNlOFx1NzNlYVx1NzNlYlx1NzNlY1x1NzNlZVx1NzNlZlx1NzNmMFx1NzNmMVx1NzNmM1x1NzNmNFx1NzNmNVx1NzNmNlx1NzNmN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTcxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzFdW21dXT00Mzc3NittLFJbNDM3NzYrbV09eFsxNzFdW21dKTtm''@;'; put 'put ''b3IoeFsxNzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczZjhcdTczZjlcdTczZmFcdTczZmJcdTczZmNcdTczZmRcdTczZmVcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDJcdTc0MDRcdTc0MDdcdTc0MDhcdTc0MGJcdTc0MGNcdTc0''@;'; put 'put ''MGRcdTc0MGVcdTc0MTFcdTc0MTJcdTc0MTNcdTc0MTRcdTc0MTVcdTc0MTZcdTc0MTdcdTc0MThcdTc0MTlcdTc0MWNcdTc0MWRcdTc0MWVcdTc0MWZcdTc0MjBcdTc0MjFcdTc0MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzdcdTc0Mzhc''@;'; put 'put ''dTc0MzlcdTc0M2FcdTc0M2JcdTc0M2RcdTc0M2VcdTc0M2ZcdTc0NDBcdTc0NDJcdTc0NDNcdTc0NDRcdTc0NDVcdTc0NDZcdTc0NDdcdTc0NDhcdTc0NDlcdTc0NGFcdTc0NGJcdTc0NGNcdTc0NGRcdWZmZmRcdTc0NGVcdTc0NGZcdTc0NTBcdTc0NTFcdTc0NTJcdTc0NTNcdTc0NTRcdTc0''@;'; put 'put ''NTZcdTc0NThcdTc0NWRcdTc0NjBcdTc0NjFcdTc0NjJcdTc0NjNcdTc0NjRcdTc0NjVcdTc0NjZcdTc0NjdcdTc0NjhcdTc0NjlcdTc0NmFcdTc0NmJcdTc0NmNcdTc0NmVcdTc0NmZcdTc0NzFcdTc0NzJcdTc0NzNcdTc0NzRcdTc0NzVcdTc0NzhcdTc0NzlcdTc0N2FcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTcyXVttXV09NDQwMzIrbSxSWzQ0MDMyK21d''@;'; put 'put ''PXhbMTcyXVttXSk7Zm9yKHhbMTczXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdiXHU3NDdjXHU3NDdkXHU3NDdmXHU3NDgyXHU3NDg0XHU3NDg1XHU3NDg2XHU3NDg4XHU3NDg5XHU3NDhhXHU3NDhjXHU3NDhkXHU3NDhmXHU3''@;'; put 'put ''NDkxXHU3NDkyXHU3NDkzXHU3NDk0XHU3NDk1XHU3NDk2XHU3NDk3XHU3NDk4XHU3NDk5XHU3NDlhXHU3NDliXHU3NDlkXHU3NDlmXHU3NGEwXHU3NGExXHU3NGEyXHU3NGEzXHU3NGE0XHU3NGE1XHU3NGE2XHU3NGFhXHU3NGFiXHU3NGFjXHU3NGFkXHU3NGFlXHU3NGFmXHU3NGIwXHU3NGIx''@;'; put 'put ''XHU3NGIyXHU3NGIzXHU3NGI0XHU3NGI1XHU3NGI2XHU3NGI3XHU3NGI4XHU3NGI5XHU3NGJiXHU3NGJjXHU3NGJkXHU3NGJlXHU3NGJmXHU3NGMwXHU3NGMxXHU3NGMyXHU3NGMzXHU3NGM0XHU3NGM1XHU3NGM2XHU3NGM3XHVmZmZkXHU3NGM4XHU3NGM5XHU3NGNhXHU3NGNiXHU3NGNjXHU3''@;'; put 'put ''NGNkXHU3NGNlXHU3NGNmXHU3NGQwXHU3NGQxXHU3NGQzXHU3NGQ0XHU3NGQ1XHU3NGQ2XHU3NGQ3XHU3NGQ4XHU3NGQ5XHU3NGRhXHU3NGRiXHU3NGRkXHU3NGRmXHU3NGUxXHU3NGU1XHU3NGU3XHU3NGU4XHU3NGU5XHU3NGVhXHU3NGViXHU3NGVjXHU3NGVkXHU3NGYwXHU3NGYxXHU3NGYy''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTczXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3M11bbV1dPTQ0Mjg4''@;'; put 'put ''K20sUls0NDI4OCttXT14WzE3M11bbV0pO2Zvcih4WzE3NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRmM1x1NzRmNVx1NzRmOFx1NzRmOVx1NzRmYVx1NzRmYlx1NzRmY1x1NzRmZFx1NzRmZVx1NzUwMFx1NzUwMVx1NzUwMlx1''@;'; put 'put ''NzUwM1x1NzUwNVx1NzUwNlx1NzUwN1x1NzUwOFx1NzUwOVx1NzUwYVx1NzUwYlx1NzUwY1x1NzUwZVx1NzUxMFx1NzUxMlx1NzUxNFx1NzUxNVx1NzUxNlx1NzUxN1x1NzUxYlx1NzUxZFx1NzUxZVx1NzUyMFx1NzUyMVx1NzUyMlx1NzUyM1x1NzUyNFx1NzUyNlx1NzUyN1x1NzUyYVx1NzUy''@;'; put 'put ''ZVx1NzUzNFx1NzUzNlx1NzUzOVx1NzUzY1x1NzUzZFx1NzUzZlx1NzU0MVx1NzU0Mlx1NzU0M1x1NzU0NFx1NzU0Nlx1NzU0N1x1NzU0OVx1NzU0YVx1NzU0ZFx1NzU1MFx1NzU1MVx1NzU1Mlx1NzU1M1x1NzU1NVx1NzU1Nlx1NzU1N1x1NzU1OFx1ZmZmZFx1NzU1ZFx1NzU1ZVx1NzU1Zlx1''@;'; put 'put ''NzU2MFx1NzU2MVx1NzU2Mlx1NzU2M1x1NzU2NFx1NzU2N1x1NzU2OFx1NzU2OVx1NzU2Ylx1NzU2Y1x1NzU2ZFx1NzU2ZVx1NzU2Zlx1NzU3MFx1NzU3MVx1NzU3M1x1NzU3NVx1NzU3Nlx1NzU3N1x1NzU3YVx1NzU3Ylx1NzU3Y1x1NzU3ZFx1NzU3ZVx1NzU4MFx1NzU4MVx1NzU4Mlx1NzU4''@;'; put 'put ''NFx1NzU4NVx1NzU4N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsx''@;'; put 'put ''NzRdW21dXT00NDU0NCttLFJbNDQ1NDQrbV09eFsxNzRdW21dKTtmb3IoeFsxNzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1ODhcdTc1ODlcdTc1OGFcdTc1OGNcdTc1OGRcdTc1OGVcdTc1OTBcdTc1OTNcdTc1OTVcdTc1OThc''@;'; put 'put ''dTc1OWJcdTc1OWNcdTc1OWVcdTc1YTJcdTc1YTZcdTc1YTdcdTc1YThcdTc1YTlcdTc1YWFcdTc1YWRcdTc1YjZcdTc1YjdcdTc1YmFcdTc1YmJcdTc1YmZcdTc1YzBcdTc1YzFcdTc1YzZcdTc1Y2JcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDBcdTc1ZDFcdTc1ZDNcdTc1ZDdcdTc1ZDlcdTc1''@;'; put 'put ''ZGFcdTc1ZGNcdTc1ZGRcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTVcdTc1ZTlcdTc1ZWNcdTc1ZWRcdTc1ZWVcdTc1ZWZcdTc1ZjJcdTc1ZjNcdTc1ZjVcdTc1ZjZcdTc1ZjdcdTc1ZjhcdTc1ZmFcdTc1ZmJcdTc1ZmRcdTc1ZmVcdTc2MDJcdTc2MDRcdTc2MDZcdTc2MDdcdWZmZmRcdTc2MDhc''@;'; put 'put ''dTc2MDlcdTc2MGJcdTc2MGRcdTc2MGVcdTc2MGZcdTc2MTFcdTc2MTJcdTc2MTNcdTc2MTRcdTc2MTZcdTc2MWFcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjFcdTc2MjNcdTc2MjdcdTc2MjhcdTc2MmNcdTc2MmVcdTc2MmZcdTc2MzFcdTc2MzJcdTc2MzZcdTc2MzdcdTc2MzlcdTc2M2FcdTc2''@;'; put 'put ''M2JcdTc2M2RcdTc2NDFcdTc2NDJcdTc2NDRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3NV1bbV0uY2hhckNvZGVB''@;'; put 'put ''dCgwKSYmKG9lW3hbMTc1XVttXV09NDQ4MDArbSxSWzQ0ODAwK21dPXhbMTc1XVttXSk7Zm9yKHhbMTc2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjQ1XHU3NjQ2XHU3NjQ3XHU3NjQ4XHU3NjQ5XHU3NjRhXHU3NjRiXHU3NjRl''@;'; put 'put ''XHU3NjRmXHU3NjUwXHU3NjUxXHU3NjUyXHU3NjUzXHU3NjU1XHU3NjU3XHU3NjU4XHU3NjU5XHU3NjVhXHU3NjViXHU3NjVkXHU3NjVmXHU3NjYwXHU3NjYxXHU3NjYyXHU3NjY0XHU3NjY1XHU3NjY2XHU3NjY3XHU3NjY4XHU3NjY5XHU3NjZhXHU3NjZjXHU3NjZkXHU3NjZlXHU3NjcwXHU3''@;'; put 'put ''NjcxXHU3NjcyXHU3NjczXHU3Njc0XHU3Njc1XHU3Njc2XHU3Njc3XHU3Njc5XHU3NjdhXHU3NjdjXHU3NjdmXHU3NjgwXHU3NjgxXHU3NjgzXHU3Njg1XHU3Njg5XHU3NjhhXHU3NjhjXHU3NjhkXHU3NjhmXHU3NjkwXHU3NjkyXHU3Njk0XHU3Njk1XHU3Njk3XHU3Njk4XHU3NjlhXHU3Njli''@;'; put 'put ''XHVmZmZkXHU3NjljXHU3NjlkXHU3NjllXHU3NjlmXHU3NmEwXHU3NmExXHU3NmEyXHU3NmEzXHU3NmE1XHU3NmE2XHU3NmE3XHU3NmE4XHU3NmE5XHU3NmFhXHU3NmFiXHU3NmFjXHU3NmFkXHU3NmFmXHU3NmIwXHU3NmIzXHU3NmI1XHU3NmI2XHU3NmI3XHU3NmI4XHU3NmI5XHU3NmJhXHU3''@;'; put 'put ''NmJiXHU3NmJjXHU3NmJkXHU3NmJlXHU3NmMwXHU3NmMxXHU3NmMzXHU1NTRhXHU5NjNmXHU1N2MzXHU2MzI4XHU1NGNlXHU1NTA5XHU1NGMwXHU3NjkxXHU3NjRjXHU4NTNjXHU3N2VlXHU4MjdlXHU3ODhkXHU3MjMxXHU5Njk4XHU5NzhkXHU2YzI4XHU1Yjg5XHU0ZmZhXHU2MzA5XHU2Njk3''@;'; put 'put ''XHU1Y2I4XHU4MGZhXHU2ODQ4XHU4MGFlXHU2NjAyXHU3NmNlXHU1MWY5XHU2NTU2XHU3MWFjXHU3ZmYxXHU4ODg0XHU1MGIyXHU1OTY1XHU2MWNhXHU2ZmIzXHU4MmFkXHU2MzRjXHU2MjUyXHU1M2VkXHU1NDI3XHU3YjA2XHU1MTZiXHU3NWE0XHU1ZGY0XHU2MmQ0XHU4ZGNiXHU5Nzc2XHU2''@;'; put 'put ''MjhhXHU4MDE5XHU1NzVkXHU5NzM4XHU3ZjYyXHU3MjM4XHU3NjdkXHU2N2NmXHU3NjdlXHU2NDQ2XHU0ZjcwXHU4ZDI1XHU2MmRjXHU3YTE3XHU2NTkxXHU3M2VkXHU2NDJjXHU2MjczXHU4MjJjXHU5ODgxXHU2NzdmXHU3MjQ4XHU2MjZlXHU2MmNjXHU0ZjM0XHU3NGUzXHU1MzRhXHU1Mjll''@;'; put 'put ''XHU3ZWNhXHU5MGE2XHU1ZTJlXHU2ODg2XHU2OTljXHU4MTgwXHU3ZWQxXHU2OGQyXHU3OGM1XHU4NjhjXHU5NTUxXHU1MDhkXHU4YzI0XHU4MmRlXHU4MGRlXHU1MzA1XHU4OTEyXHU1MjY1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzZd''@;'; put 'put ''W21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3Nl1bbV1dPTQ1MDU2K20sUls0NTA1NittXT14WzE3Nl1bbV0pO2Zvcih4WzE3N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzZjNFx1NzZjN1x1NzZjOVx1NzZjYlx1NzZjY1x1NzZk''@;'; put 'put ''M1x1NzZkNVx1NzZkOVx1NzZkYVx1NzZkY1x1NzZkZFx1NzZkZVx1NzZlMFx1NzZlMVx1NzZlMlx1NzZlM1x1NzZlNFx1NzZlNlx1NzZlN1x1NzZlOFx1NzZlOVx1NzZlYVx1NzZlYlx1NzZlY1x1NzZlZFx1NzZmMFx1NzZmM1x1NzZmNVx1NzZmNlx1NzZmN1x1NzZmYVx1NzZmYlx1NzZmZFx1''@;'; put 'put ''NzZmZlx1NzcwMFx1NzcwMlx1NzcwM1x1NzcwNVx1NzcwNlx1NzcwYVx1NzcwY1x1NzcwZVx1NzcwZlx1NzcxMFx1NzcxMVx1NzcxMlx1NzcxM1x1NzcxNFx1NzcxNVx1NzcxNlx1NzcxN1x1NzcxOFx1NzcxYlx1NzcxY1x1NzcxZFx1NzcxZVx1NzcyMVx1NzcyM1x1NzcyNFx1NzcyNVx1Nzcy''@;'; put 'put ''N1x1NzcyYVx1NzcyYlx1ZmZmZFx1NzcyY1x1NzcyZVx1NzczMFx1NzczMVx1NzczMlx1NzczM1x1NzczNFx1NzczOVx1NzczYlx1NzczZFx1NzczZVx1NzczZlx1Nzc0Mlx1Nzc0NFx1Nzc0NVx1Nzc0Nlx1Nzc0OFx1Nzc0OVx1Nzc0YVx1Nzc0Ylx1Nzc0Y1x1Nzc0ZFx1Nzc0ZVx1Nzc0Zlx1''@;'; put 'put ''Nzc1Mlx1Nzc1M1x1Nzc1NFx1Nzc1NVx1Nzc1Nlx1Nzc1N1x1Nzc1OFx1Nzc1OVx1Nzc1Y1x1ODU4NFx1OTZmOVx1NGZkZFx1NTgyMVx1OTk3MVx1NWI5ZFx1NjJiMVx1NjJhNVx1NjZiNFx1OGM3OVx1OWM4ZFx1NzIwNlx1Njc2Zlx1Nzg5MVx1NjBiMlx1NTM1MVx1NTMxN1x1OGY4OFx1ODBj''@;'; put 'put ''Y1x1OGQxZFx1OTRhMVx1NTAwZFx1NzJjOFx1NTkwN1x1NjBlYlx1NzExOVx1ODhhYlx1NTk1NFx1ODJlZlx1NjcyY1x1N2IyOFx1NWQyOVx1N2VmN1x1NzUyZFx1NmNmNVx1OGU2Nlx1OGZmOFx1OTAzY1x1OWYzYlx1NmJkNFx1OTExOVx1N2IxNFx1NWY3Y1x1NzhhN1x1ODRkNlx1ODUzZFx1''@;'; put 'put ''NmJkNVx1NmJkOVx1NmJkNlx1NWUwMVx1NWU4N1x1NzVmOVx1OTVlZFx1NjU1ZFx1NWYwYVx1NWZjNVx1OGY5Zlx1NThjMVx1ODFjMlx1OTA3Zlx1OTY1Ylx1OTdhZFx1OGZiOVx1N2YxNlx1OGQyY1x1NjI0MVx1NGZiZlx1NTNkOFx1NTM1ZVx1OGZhOFx1OGZhOVx1OGZhYlx1OTA0ZFx1Njgw''@;'; put 'put ''N1x1NWY2YVx1ODE5OFx1ODg2OFx1OWNkNlx1NjE4Ylx1NTIyYlx1NzYyYVx1NWY2Y1x1NjU4Y1x1NmZkMlx1NmVlOFx1NWJiZVx1NjQ0OFx1NTE3NVx1NTFiMFx1NjdjNFx1NGUxOVx1NzljOVx1OTk3Y1x1NzBiM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3N10ubGVuZ3RoOysrbSk2''@;'; put 'put ''NTUzMyE9PXhbMTc3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzddW21dXT00NTMxMittLFJbNDUzMTIrbV09eFsxNzddW21dKTtmb3IoeFsxNzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3NWRcdTc3NWVcdTc3NWZcdTc3''@;'; put 'put ''NjBcdTc3NjRcdTc3NjdcdTc3NjlcdTc3NmFcdTc3NmRcdTc3NmVcdTc3NmZcdTc3NzBcdTc3NzFcdTc3NzJcdTc3NzNcdTc3NzRcdTc3NzVcdTc3NzZcdTc3NzdcdTc3NzhcdTc3N2FcdTc3N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNcdTc3ODZcdTc3ODdcdTc3ODhcdTc3ODlcdTc3OGFc''@;'; put 'put ''dTc3OGJcdTc3OGZcdTc3OTBcdTc3OTNcdTc3OTRcdTc3OTVcdTc3OTZcdTc3OTdcdTc3OThcdTc3OTlcdTc3OWFcdTc3OWJcdTc3OWNcdTc3OWRcdTc3OWVcdTc3YTFcdTc3YTNcdTc3YTRcdTc3YTZcdTc3YThcdTc3YWJcdTc3YWRcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjJcdTc3YjRcdTc3''@;'; put 'put ''YjZcdTc3YjdcdTc3YjhcdTc3YjlcdTc3YmFcdWZmZmRcdTc3YmNcdTc3YmVcdTc3YzBcdTc3YzFcdTc3YzJcdTc3YzNcdTc3YzRcdTc3YzVcdTc3YzZcdTc3YzdcdTc3YzhcdTc3YzlcdTc3Y2FcdTc3Y2JcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3ZDBcdTc3ZDFcdTc3ZDJcdTc3ZDNcdTc3ZDRc''@;'; put 'put ''dTc3ZDVcdTc3ZDZcdTc3ZDhcdTc3ZDlcdTc3ZGFcdTc3ZGRcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTFcdTc3ZTRcdTc1YzVcdTVlNzZcdTczYmJcdTgzZTBcdTY0YWRcdTYyZThcdTk0YjVcdTZjZTJcdTUzNWFcdTUyYzNcdTY0MGZcdTk0YzJcdTdiOTRcdTRmMmZcdTVlMWJcdTgyMzZcdTgx''@;'; put 'put ''MTZcdTgxOGFcdTZlMjRcdTZjY2FcdTlhNzNcdTYzNTVcdTUzNWNcdTU0ZmFcdTg4NjVcdTU3ZTBcdTRlMGRcdTVlMDNcdTZiNjVcdTdjM2ZcdTkwZThcdTYwMTZcdTY0ZTZcdTczMWNcdTg4YzFcdTY3NTBcdTYyNGRcdThkMjJcdTc3NmNcdThlMjlcdTkxYzdcdTVmNjlcdTgzZGNcdTg1MjFc''@;'; put 'put ''dTk5MTBcdTUzYzJcdTg2OTVcdTZiOGJcdTYwZWRcdTYwZThcdTcwN2ZcdTgyY2RcdTgyMzFcdTRlZDNcdTZjYTdcdTg1Y2ZcdTY0Y2RcdTdjZDlcdTY5ZmRcdTY2ZjlcdTgzNDlcdTUzOTVcdTdiNTZcdTRmYTdcdTUxOGNcdTZkNGJcdTVjNDJcdThlNmRcdTYzZDJcdTUzYzlcdTgzMmNcdTgz''@;'; put 'put ''MzZcdTY3ZTVcdTc4YjRcdTY0M2RcdTViZGZcdTVjOTRcdTVkZWVcdThiZTdcdTYyYzZcdTY3ZjRcdThjN2FcdTY0MDBcdTYzYmFcdTg3NDlcdTk5OGJcdThjMTdcdTdmMjBcdTk0ZjJcdTRlYTdcdTk2MTBcdTk4YTRcdTY2MGNcdTczMTZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzhd''@;'; put 'put ''Lmxlbmd0aDsrK20pNjU1MzMhPT14WzE3OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTc4XVttXV09NDU1NjgrbSxSWzQ1NTY4K21dPXhbMTc4XVttXSk7Zm9yKHhbMTc5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3N2U2XHU3''@;'; put 'put ''N2U4XHU3N2VhXHU3N2VmXHU3N2YwXHU3N2YxXHU3N2YyXHU3N2Y0XHU3N2Y1XHU3N2Y3XHU3N2Y5XHU3N2ZhXHU3N2ZiXHU3N2ZjXHU3ODAzXHU3ODA0XHU3ODA1XHU3ODA2XHU3ODA3XHU3ODA4XHU3ODBhXHU3ODBiXHU3ODBlXHU3ODBmXHU3ODEwXHU3ODEzXHU3ODE1XHU3ODE5XHU3ODFi''@;'; put 'put ''XHU3ODFlXHU3ODIwXHU3ODIxXHU3ODIyXHU3ODI0XHU3ODI4XHU3ODJhXHU3ODJiXHU3ODJlXHU3ODJmXHU3ODMxXHU3ODMyXHU3ODMzXHU3ODM1XHU3ODM2XHU3ODNkXHU3ODNmXHU3ODQxXHU3ODQyXHU3ODQzXHU3ODQ0XHU3ODQ2XHU3ODQ4XHU3ODQ5XHU3ODRhXHU3ODRiXHU3ODRkXHU3''@;'; put 'put ''ODRmXHU3ODUxXHU3ODUzXHU3ODU0XHU3ODU4XHU3ODU5XHU3ODVhXHVmZmZkXHU3ODViXHU3ODVjXHU3ODVlXHU3ODVmXHU3ODYwXHU3ODYxXHU3ODYyXHU3ODYzXHU3ODY0XHU3ODY1XHU3ODY2XHU3ODY3XHU3ODY4XHU3ODY5XHU3ODZmXHU3ODcwXHU3ODcxXHU3ODcyXHU3ODczXHU3ODc0''@;'; put 'put ''XHU3ODc1XHU3ODc2XHU3ODc4XHU3ODc5XHU3ODdhXHU3ODdiXHU3ODdkXHU3ODdlXHU3ODdmXHU3ODgwXHU3ODgxXHU3ODgyXHU3ODgzXHU1NzNhXHU1YzFkXHU1ZTM4XHU5NTdmXHU1MDdmXHU4MGEwXHU1MzgyXHU2NTVlXHU3NTQ1XHU1NTMxXHU1MDIxXHU4ZDg1XHU2Mjg0XHU5NDllXHU2''@;'; put 'put ''NzFkXHU1NjMyXHU2ZjZlXHU1ZGUyXHU1NDM1XHU3MDkyXHU4ZjY2XHU2MjZmXHU2NGE0XHU2M2EzXHU1ZjdiXHU2Zjg4XHU5MGY0XHU4MWUzXHU4ZmIwXHU1YzE4XHU2NjY4XHU1ZmYxXHU2Yzg5XHU5NjQ4XHU4ZDgxXHU4ODZjXHU2NDkxXHU3OWYwXHU1N2NlXHU2YTU5XHU2MjEwXHU1NDQ4''@;'; put 'put ''XHU0ZTU4XHU3YTBiXHU2MGU5XHU2Zjg0XHU4YmRhXHU2MjdmXHU5MDFlXHU5YThiXHU3OWU0XHU1NDAzXHU3NWY0XHU2MzAxXHU1MzE5XHU2YzYwXHU4ZmRmXHU1ZjFiXHU5YTcwXHU4MDNiXHU5ZjdmXHU0Zjg4XHU1YzNhXHU4ZDY0XHU3ZmM1XHU2NWE1XHU3MGJkXHU1MTQ1XHU1MWIyXHU4''@;'; put 'put ''NjZiXHU1ZDA3XHU1YmEwXHU2MmJkXHU5MTZjXHU3NTc0XHU4ZTBjXHU3YTIwXHU2MTAxXHU3Yjc5XHU0ZWM3XHU3ZWY4XHU3Nzg1XHU0ZTExXHU4MWVkXHU1MjFkXHU1MWZhXHU2YTcxXHU1M2E4XHU4ZTg3XHU5NTA0XHU5NmNmXHU2ZWMxXHU5NjY0XHU2OTVhXHVmZmZkIi5zcGxpdCgiIiks''@;'; put 'put ''bT0wO20hPXhbMTc5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3OV1bbV1dPTQ1ODI0K20sUls0NTgyNCttXT14WzE3OV1bbV0pO2Zvcih4WzE4MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1Nzg4NFx1Nzg4NVx1Nzg4Nlx1Nzg4OFx1Nzg4YVx1Nzg4Ylx1Nzg4Zlx1Nzg5MFx1Nzg5Mlx1Nzg5NFx1Nzg5NVx1Nzg5Nlx1Nzg5OVx1Nzg5ZFx1Nzg5ZVx1NzhhMFx1NzhhMlx1NzhhNFx1NzhhNlx1NzhhOFx1NzhhOVx1NzhhYVx1NzhhYlx1NzhhY1x1NzhhZFx1NzhhZVx1Nzhh''@;'; put 'put ''Zlx1NzhiNVx1NzhiNlx1NzhiN1x1NzhiOFx1NzhiYVx1NzhiYlx1NzhiY1x1NzhiZFx1NzhiZlx1NzhjMFx1NzhjMlx1NzhjM1x1NzhjNFx1NzhjNlx1NzhjN1x1NzhjOFx1NzhjY1x1NzhjZFx1NzhjZVx1NzhjZlx1NzhkMVx1NzhkMlx1NzhkM1x1NzhkNlx1NzhkN1x1NzhkOFx1NzhkYVx1''@;'; put 'put ''NzhkYlx1NzhkY1x1NzhkZFx1NzhkZVx1NzhkZlx1NzhlMFx1NzhlMVx1NzhlMlx1NzhlM1x1ZmZmZFx1NzhlNFx1NzhlNVx1NzhlNlx1NzhlN1x1NzhlOVx1NzhlYVx1NzhlYlx1NzhlZFx1NzhlZVx1NzhlZlx1NzhmMFx1NzhmMVx1NzhmM1x1NzhmNVx1NzhmNlx1NzhmOFx1NzhmOVx1Nzhm''@;'; put 'put ''Ylx1NzhmY1x1NzhmZFx1NzhmZVx1NzhmZlx1NzkwMFx1NzkwMlx1NzkwM1x1NzkwNFx1NzkwNlx1NzkwN1x1NzkwOFx1NzkwOVx1NzkwYVx1NzkwYlx1NzkwY1x1Nzg0MFx1NTBhOFx1NzdkN1x1NjQxMFx1ODllNlx1NTkwNFx1NjNlM1x1NWRkZFx1N2E3Zlx1NjkzZFx1NGYyMFx1ODIzOVx1''@;'; put 'put ''NTU5OFx1NGUzMlx1NzVhZVx1N2E5N1x1NWU2Mlx1NWU4YVx1OTVlZlx1NTIxYlx1NTQzOVx1NzA4YVx1NjM3Nlx1OTUyNFx1NTc4Mlx1NjYyNVx1NjkzZlx1OTE4N1x1NTUwN1x1NmRmM1x1N2VhZlx1ODgyMlx1NjIzM1x1N2VmMFx1NzViNVx1ODMyOFx1NzhjMVx1OTZjY1x1OGY5ZVx1NjE0''@;'; put 'put ''OFx1NzRmN1x1OGJjZFx1NmI2NFx1NTIzYVx1OGQ1MFx1NmIyMVx1ODA2YVx1ODQ3MVx1NTZmMVx1NTMwNlx1NGVjZVx1NGUxYlx1NTFkMVx1N2M5N1x1OTE4Ylx1N2MwN1x1NGZjM1x1OGU3Zlx1N2JlMVx1N2E5Y1x1NjQ2N1x1NWQxNFx1NTBhY1x1ODEwNlx1NzYwMVx1N2NiOVx1NmRlY1x1''@;'; put 'put ''N2ZlMFx1Njc1MVx1NWI1OFx1NWJmOFx1NzhjYlx1NjRhZVx1NjQxM1x1NjNhYVx1NjMyYlx1OTUxOVx1NjQyZFx1OGZiZVx1N2I1NFx1NzYyOVx1NjI1M1x1NTkyN1x1NTQ0Nlx1NmI3OVx1NTBhM1x1NjIzNFx1NWUyNlx1NmI4Nlx1NGVlM1x1OGQzN1x1ODg4Ylx1NWY4NVx1OTAyZVx1ZmZm''@;'; put 'put ''ZCIuc3BsaXQoIiIpLG09MDttIT14WzE4MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTgwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODBdW21dXT00NjA4MCttLFJbNDYwODArbV09eFsxODBdW21dKTtmb3IoeFsxODFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdTc5MGRcdTc5MGVcdTc5MGZcdTc5MTBcdTc5MTFcdTc5MTJcdTc5MTRcdTc5MTVcdTc5MTZcdTc5MTdcdTc5MThcdTc5MTlcdTc5MWFcdTc5MWJcdTc5MWNcdTc5MWRcdTc5MWZcdTc5MjBcdTc5MjFcdTc5MjJcdTc5MjNcdTc5MjVcdTc5MjZcdTc5MjdcdTc5''@;'; put 'put ''MjhcdTc5MjlcdTc5MmFcdTc5MmJcdTc5MmNcdTc5MmRcdTc5MmVcdTc5MmZcdTc5MzBcdTc5MzFcdTc5MzJcdTc5MzNcdTc5MzVcdTc5MzZcdTc5MzdcdTc5MzhcdTc5MzlcdTc5M2RcdTc5M2ZcdTc5NDJcdTc5NDNcdTc5NDRcdTc5NDVcdTc5NDdcdTc5NGFcdTc5NGJcdTc5NGNcdTc5NGRc''@;'; put 'put ''dTc5NGVcdTc5NGZcdTc5NTBcdTc5NTFcdTc5NTJcdTc5NTRcdTc5NTVcdTc5NThcdTc5NTlcdTc5NjFcdTc5NjNcdWZmZmRcdTc5NjRcdTc5NjZcdTc5NjlcdTc5NmFcdTc5NmJcdTc5NmNcdTc5NmVcdTc5NzBcdTc5NzFcdTc5NzJcdTc5NzNcdTc5NzRcdTc5NzVcdTc5NzZcdTc5NzlcdTc5''@;'; put 'put ''N2JcdTc5N2NcdTc5N2RcdTc5N2VcdTc5N2ZcdTc5ODJcdTc5ODNcdTc5ODZcdTc5ODdcdTc5ODhcdTc5ODlcdTc5OGJcdTc5OGNcdTc5OGRcdTc5OGVcdTc5OTBcdTc5OTFcdTc5OTJcdTYwMjBcdTgwM2RcdTYyYzVcdTRlMzlcdTUzNTVcdTkwZjhcdTYzYjhcdTgwYzZcdTY1ZTZcdTZjMmVc''@;'; put 'put ''dTRmNDZcdTYwZWVcdTZkZTFcdThiZGVcdTVmMzlcdTg2Y2JcdTVmNTNcdTYzMjFcdTUxNWFcdTgzNjFcdTY4NjNcdTUyMDBcdTYzNjNcdThlNDhcdTUwMTJcdTVjOWJcdTc5NzdcdTViZmNcdTUyMzBcdTdhM2JcdTYwYmNcdTkwNTNcdTc2ZDdcdTVmYjdcdTVmOTdcdTc2ODRcdThlNmNcdTcw''@;'; put 'put ''NmZcdTc2N2JcdTdiNDlcdTc3YWFcdTUxZjNcdTkwOTNcdTU4MjRcdTRmNGVcdTZlZjRcdThmZWFcdTY1NGNcdTdiMWJcdTcyYzRcdTZkYTRcdTdmZGZcdTVhZTFcdTYyYjVcdTVlOTVcdTU3MzBcdTg0ODJcdTdiMmNcdTVlMWRcdTVmMWZcdTkwMTJcdTdmMTRcdTk4YTBcdTYzODJcdTZlYzdc''@;'; put 'put ''dTc4OThcdTcwYjlcdTUxNzhcdTk3NWJcdTU3YWJcdTc1MzVcdTRmNDNcdTc1MzhcdTVlOTdcdTYwZTZcdTU5NjBcdTZkYzBcdTZiYmZcdTc4ODlcdTUzZmNcdTk2ZDVcdTUxY2JcdTUyMDFcdTYzODlcdTU0MGFcdTk0OTNcdThjMDNcdThkY2NcdTcyMzlcdTc4OWZcdTg3NzZcdThmZWRcdThj''@;'; put 'put ''MGRcdTUzZTBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTgxXVttXV09NDYzMzYrbSxSWzQ2MzM2K21dPXhbMTgxXVttXSk7Zm9yKHhbMTgyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTkzXHU3OTk0XHU3OTk1XHU3OTk2XHU3OTk3XHU3OTk4XHU3OTk5XHU3OTliXHU3OTljXHU3OTlkXHU3OTllXHU3OTlmXHU3OWEwXHU3OWExXHU3OWEyXHU3OWEzXHU3OWE0XHU3OWE1XHU3OWE2XHU3OWE4XHU3OWE5XHU3OWFhXHU3''@;'; put 'put ''OWFiXHU3OWFjXHU3OWFkXHU3OWFlXHU3OWFmXHU3OWIwXHU3OWIxXHU3OWIyXHU3OWI0XHU3OWI1XHU3OWI2XHU3OWI3XHU3OWI4XHU3OWJjXHU3OWJmXHU3OWMyXHU3OWM0XHU3OWM1XHU3OWM3XHU3OWM4XHU3OWNhXHU3OWNjXHU3OWNlXHU3OWNmXHU3OWQwXHU3OWQzXHU3OWQ0XHU3OWQ2''@;'; put 'put ''XHU3OWQ3XHU3OWQ5XHU3OWRhXHU3OWRiXHU3OWRjXHU3OWRkXHU3OWRlXHU3OWUwXHU3OWUxXHU3OWUyXHU3OWU1XHU3OWU4XHU3OWVhXHVmZmZkXHU3OWVjXHU3OWVlXHU3OWYxXHU3OWYyXHU3OWYzXHU3OWY0XHU3OWY1XHU3OWY2XHU3OWY3XHU3OWY5XHU3OWZhXHU3OWZjXHU3OWZlXHU3''@;'; put 'put ''OWZmXHU3YTAxXHU3YTA0XHU3YTA1XHU3YTA3XHU3YTA4XHU3YTA5XHU3YTBhXHU3YTBjXHU3YTBmXHU3YTEwXHU3YTExXHU3YTEyXHU3YTEzXHU3YTE1XHU3YTE2XHU3YTE4XHU3YTE5XHU3YTFiXHU3YTFjXHU0ZTAxXHU3NmVmXHU1M2VlXHU5NDg5XHU5ODc2XHU5ZjBlXHU5NTJkXHU1Yjlh''@;'; put 'put ''XHU4YmEyXHU0ZTIyXHU0ZTFjXHU1MWFjXHU4NDYzXHU2MWMyXHU1MmE4XHU2ODBiXHU0Zjk3XHU2MDZiXHU1MWJiXHU2ZDFlXHU1MTVjXHU2Mjk2XHU2NTk3XHU5NjYxXHU4YzQ2XHU5MDE3XHU3NWQ4XHU5MGZkXHU3NzYzXHU2YmQyXHU3MjhhXHU3MmVjXHU4YmZiXHU1ODM1XHU3Nzc5XHU4''@;'; put 'put ''ZDRjXHU2NzVjXHU5NTQwXHU4MDlhXHU1ZWE2XHU2ZTIxXHU1OTkyXHU3YWVmXHU3N2VkXHU5NTNiXHU2YmI1XHU2NWFkXHU3ZjBlXHU1ODA2XHU1MTUxXHU5NjFmXHU1YmY5XHU1OGE5XHU1NDI4XHU4ZTcyXHU2NTY2XHU5ODdmXHU1NmU0XHU5NDlkXHU3NmZlXHU5MDQxXHU2Mzg3XHU1NGM2''@;'; put 'put ''XHU1OTFhXHU1OTNhXHU1NzliXHU4ZWIyXHU2NzM1XHU4ZGZhXHU4MjM1XHU1MjQxXHU2MGYwXHU1ODE1XHU4NmZlXHU1Y2U4XHU5ZTQ1XHU0ZmM0XHU5ODlkXHU4YmI5XHU1YTI1XHU2MDc2XHU1Mzg0XHU2MjdjXHU5MDRmXHU5MTAyXHU5OTdmXHU2MDY5XHU4MDBjXHU1MTNmXHU4MDMzXHU1''@;'; put 'put ''YzE0XHU5OTc1XHU2ZDMxXHU0ZThjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTgyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4Ml1bbV1dPTQ2NTkyK20sUls0NjU5MittXT14WzE4Ml1bbV0pO2Zvcih4WzE4M109Ilx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2ExZFx1N2ExZlx1N2EyMVx1N2EyMlx1N2EyNFx1N2EyNVx1N2EyNlx1N2EyN1x1N2EyOFx1N2EyOVx1N2EyYVx1N2EyYlx1N2EyY1x1N2EyZFx1N2EyZVx1N2EyZlx1N2EzMFx1N2EzMVx1N2EzMlx1N2EzNFx1''@;'; put 'put ''N2EzNVx1N2EzNlx1N2EzOFx1N2EzYVx1N2EzZVx1N2E0MFx1N2E0MVx1N2E0Mlx1N2E0M1x1N2E0NFx1N2E0NVx1N2E0N1x1N2E0OFx1N2E0OVx1N2E0YVx1N2E0Ylx1N2E0Y1x1N2E0ZFx1N2E0ZVx1N2E0Zlx1N2E1MFx1N2E1Mlx1N2E1M1x1N2E1NFx1N2E1NVx1N2E1Nlx1N2E1OFx1N2E1''@;'; put 'put ''OVx1N2E1YVx1N2E1Ylx1N2E1Y1x1N2E1ZFx1N2E1ZVx1N2E1Zlx1N2E2MFx1N2E2MVx1N2E2Mlx1N2E2M1x1N2E2NFx1N2E2NVx1N2E2Nlx1N2E2N1x1N2E2OFx1ZmZmZFx1N2E2OVx1N2E2YVx1N2E2Ylx1N2E2Y1x1N2E2ZFx1N2E2ZVx1N2E2Zlx1N2E3MVx1N2E3Mlx1N2E3M1x1N2E3NVx1''@;'; put 'put ''N2E3Ylx1N2E3Y1x1N2E3ZFx1N2E3ZVx1N2E4Mlx1N2E4NVx1N2E4N1x1N2E4OVx1N2E4YVx1N2E4Ylx1N2E4Y1x1N2E4ZVx1N2E4Zlx1N2E5MFx1N2E5M1x1N2E5NFx1N2E5OVx1N2E5YVx1N2E5Ylx1N2E5ZVx1N2FhMVx1N2FhMlx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0''@;'; put 'put ''Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1''@;'; put 'put ''NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVm''@;'; put 'put ''ZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1''@;'; put 'put ''NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1NjcwZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTgzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODNdW21dXT00Njg0OCttLFJbNDY4NDgrbV09eFsxODNdW21dKTtmb3IoeFsxODRd''@;'; put 'put ''PSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhYTNcdTdhYTRcdTdhYTdcdTdhYTlcdTdhYWFcdTdhYWJcdTdhYWVcdTdhYWZcdTdhYjBcdTdhYjFcdTdhYjJcdTdhYjRcdTdhYjVcdTdhYjZcdTdhYjdcdTdhYjhcdTdhYjlcdTdhYmFc''@;'; put 'put ''dTdhYmJcdTdhYmNcdTdhYmRcdTdhYmVcdTdhYzBcdTdhYzFcdTdhYzJcdTdhYzNcdTdhYzRcdTdhYzVcdTdhYzZcdTdhYzdcdTdhYzhcdTdhYzlcdTdhY2FcdTdhY2NcdTdhY2RcdTdhY2VcdTdhY2ZcdTdhZDBcdTdhZDFcdTdhZDJcdTdhZDNcdTdhZDRcdTdhZDVcdTdhZDdcdTdhZDhcdTdh''@;'; put 'put ''ZGFcdTdhZGJcdTdhZGNcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTdcdTdhZThcdTdhZTlcdTdhZWFcdTdhZWJcdTdhZWNcdTdhZWVcdTdhZjBcdTdhZjFcdTdhZjJcdTdhZjNcdWZmZmRcdTdhZjRcdTdhZjVcdTdhZjZcdTdhZjdcdTdhZjhcdTdhZmJcdTdhZmNcdTdhZmVcdTdiMDBc''@;'; put 'put ''dTdiMDFcdTdiMDJcdTdiMDVcdTdiMDdcdTdiMDlcdTdiMGNcdTdiMGRcdTdiMGVcdTdiMTBcdTdiMTJcdTdiMTNcdTdiMTZcdTdiMTdcdTdiMThcdTdiMWFcdTdiMWNcdTdiMWRcdTdiMWZcdTdiMjFcdTdiMjJcdTdiMjNcdTdiMjdcdTdiMjlcdTdiMmRcdTZkNmVcdTZkYWFcdTc5OGZcdTg4''@;'; put 'put ''YjFcdTVmMTdcdTc1MmJcdTYyOWFcdThmODVcdTRmZWZcdTkxZGNcdTY1YTdcdTgxMmZcdTgxNTFcdTVlOWNcdTgxNTBcdThkNzRcdTUyNmZcdTg5ODZcdThkNGJcdTU5MGRcdTUwODVcdTRlZDhcdTk2MWNcdTcyMzZcdTgxNzlcdThkMWZcdTViY2NcdThiYTNcdTk2NDRcdTU5ODdcdTdmMWFc''@;'; put 'put ''dTU0OTBcdTU2NzZcdTU2MGVcdThiZTVcdTY1MzlcdTY5ODJcdTk0OTlcdTc2ZDZcdTZlODlcdTVlNzJcdTc1MThcdTY3NDZcdTY3ZDFcdTdhZmZcdTgwOWRcdThkNzZcdTYxMWZcdTc5YzZcdTY1NjJcdThkNjNcdTUxODhcdTUyMWFcdTk0YTJcdTdmMzhcdTgwOWJcdTdlYjJcdTVjOTdcdTZl''@;'; put 'put ''MmZcdTY3NjBcdTdiZDlcdTc2OGJcdTlhZDhcdTgxOGZcdTdmOTRcdTdjZDVcdTY0MWVcdTk1NTBcdTdhM2ZcdTU0NGFcdTU0ZTVcdTZiNGNcdTY0MDFcdTYyMDhcdTllM2RcdTgwZjNcdTc1OTlcdTUyNzJcdTk3NjlcdTg0NWJcdTY4M2NcdTg2ZTRcdTk2MDFcdTk2OTRcdTk0ZWNcdTRlMmFc''@;'; put 'put ''dTU0MDRcdTdlZDlcdTY4MzlcdThkZGZcdTgwMTVcdTY2ZjRcdTVlOWFcdTdmYjlcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg0XVttXV09NDcxMDQrbSxSWzQ3MTA0K21dPXhbMTg0XVtt''@;'; put 'put ''XSk7Zm9yKHhbMTg1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3YjJmXHU3YjMwXHU3YjMyXHU3YjM0XHU3YjM1XHU3YjM2XHU3YjM3XHU3YjM5XHU3YjNiXHU3YjNkXHU3YjNmXHU3YjQwXHU3YjQxXHU3YjQyXHU3YjQzXHU3YjQ0''@;'; put 'put ''XHU3YjQ2XHU3YjQ4XHU3YjRhXHU3YjRkXHU3YjRlXHU3YjUzXHU3YjU1XHU3YjU3XHU3YjU5XHU3YjVjXHU3YjVlXHU3YjVmXHU3YjYxXHU3YjYzXHU3YjY0XHU3YjY1XHU3YjY2XHU3YjY3XHU3YjY4XHU3YjY5XHU3YjZhXHU3YjZiXHU3YjZjXHU3YjZkXHU3YjZmXHU3YjcwXHU3YjczXHU3''@;'; put 'put ''Yjc0XHU3Yjc2XHU3Yjc4XHU3YjdhXHU3YjdjXHU3YjdkXHU3YjdmXHU3YjgxXHU3YjgyXHU3YjgzXHU3Yjg0XHU3Yjg2XHU3Yjg3XHU3Yjg4XHU3Yjg5XHU3YjhhXHU3YjhiXHU3YjhjXHU3YjhlXHU3YjhmXHVmZmZkXHU3YjkxXHU3YjkyXHU3YjkzXHU3Yjk2XHU3Yjk4XHU3Yjk5XHU3Yjlh''@;'; put 'put ''XHU3YjliXHU3YjllXHU3YjlmXHU3YmEwXHU3YmEzXHU3YmE0XHU3YmE1XHU3YmFlXHU3YmFmXHU3YmIwXHU3YmIyXHU3YmIzXHU3YmI1XHU3YmI2XHU3YmI3XHU3YmI5XHU3YmJhXHU3YmJiXHU3YmJjXHU3YmJkXHU3YmJlXHU3YmJmXHU3YmMwXHU3YmMyXHU3YmMzXHU3YmM0XHU1N2MyXHU4''@;'; put 'put ''MDNmXHU2ODk3XHU1ZGU1XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2YzVlXHU2MmYxXHU4ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFmXHU4ZjljXHU4M2M3''@;'; put 'put ''XHU1NDk1XHU3YjhkXHU0ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1XHU5ODdlXHU1NmZhXHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2OGZhXHU1MTczXHU1''@;'; put 'put ''Yjk4XHU1MWEwXHU4OWMyXHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4OWM0XHU1NzJkXHU3ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVhXHU4ZDM1XHU1MjNk''@;'; put 'put ''XHU4ZjhhXHU2ZWRhXHU2OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4NV1bbV1dPTQ3MzYwK20sUls0NzM2''@;'; put 'put ''MCttXT14WzE4NV1bbV0pO2Zvcih4WzE4Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2JjNVx1N2JjOFx1N2JjOVx1N2JjYVx1N2JjYlx1N2JjZFx1N2JjZVx1N2JjZlx1N2JkMFx1N2JkMlx1N2JkNFx1N2JkNVx1N2JkNlx1N2Jk''@;'; put 'put ''N1x1N2JkOFx1N2JkYlx1N2JkY1x1N2JkZVx1N2JkZlx1N2JlMFx1N2JlMlx1N2JlM1x1N2JlNFx1N2JlN1x1N2JlOFx1N2JlOVx1N2JlYlx1N2JlY1x1N2JlZFx1N2JlZlx1N2JmMFx1N2JmMlx1N2JmM1x1N2JmNFx1N2JmNVx1N2JmNlx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmYlx1N2JmZFx1''@;'; put 'put ''N2JmZlx1N2MwMFx1N2MwMVx1N2MwMlx1N2MwM1x1N2MwNFx1N2MwNVx1N2MwNlx1N2MwOFx1N2MwOVx1N2MwYVx1N2MwZFx1N2MwZVx1N2MxMFx1N2MxMVx1N2MxMlx1N2MxM1x1N2MxNFx1N2MxNVx1N2MxN1x1N2MxOFx1N2MxOVx1ZmZmZFx1N2MxYVx1N2MxYlx1N2MxY1x1N2MxZFx1N2Mx''@;'; put 'put ''ZVx1N2MyMFx1N2MyMVx1N2MyMlx1N2MyM1x1N2MyNFx1N2MyNVx1N2MyOFx1N2MyOVx1N2MyYlx1N2MyY1x1N2MyZFx1N2MyZVx1N2MyZlx1N2MzMFx1N2MzMVx1N2MzMlx1N2MzM1x1N2MzNFx1N2MzNVx1N2MzNlx1N2MzN1x1N2MzOVx1N2MzYVx1N2MzYlx1N2MzY1x1N2MzZFx1N2MzZVx1''@;'; put 'put ''N2M0Mlx1OWFiOFx1NWI2OVx1NmQ3N1x1NmMyNlx1NGVhNVx1NWJiM1x1OWE4N1x1OTE2M1x1NjFhOFx1OTBhZlx1OTdlOVx1NTQyYlx1NmRiNVx1NWJkMlx1NTFmZFx1NTU4YVx1N2Y1NVx1N2ZmMFx1NjRiY1x1NjM0ZFx1NjVmMVx1NjFiZVx1NjA4ZFx1NzEwYVx1NmM1N1x1NmM0OVx1NTky''@;'; put 'put ''Zlx1Njc2ZFx1ODIyYVx1NThkNVx1NTY4ZVx1OGM2YVx1NmJlYlx1OTBkZFx1NTk3ZFx1ODAxN1x1NTNmN1x1NmQ2OVx1NTQ3NVx1NTU5ZFx1ODM3N1x1ODNjZlx1NjgzOFx1NzliZVx1NTQ4Y1x1NGY1NVx1NTQwOFx1NzZkMlx1OGM4OVx1OTYwMlx1NmNiM1x1NmRiOFx1OGQ2Ylx1ODkxMFx1''@;'; put 'put ''OWU2NFx1OGQzYVx1NTYzZlx1OWVkMVx1NzVkNVx1NWY4OFx1NzJlMFx1NjA2OFx1NTRmY1x1NGVhOFx1NmEyYVx1ODg2MVx1NjA1Mlx1OGY3MFx1NTRjNFx1NzBkOFx1ODY3OVx1OWUzZlx1NmQyYVx1NWI4Zlx1NWYxOFx1N2VhMlx1NTU4OVx1NGZhZlx1NzMzNFx1NTQzY1x1NTM5YVx1NTAx''@;'; put 'put ''OVx1NTQwZVx1NTQ3Y1x1NGU0ZVx1NWZmZFx1NzQ1YVx1NThmNlx1ODQ2Ylx1ODBlMVx1ODc3NFx1NzJkMFx1N2NjYVx1NmU1Nlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODZdW21dXT00''@;'; put 'put ''NzYxNittLFJbNDc2MTYrbV09eFsxODZdW21dKTtmb3IoeFsxODddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjNDNcdTdjNDRcdTdjNDVcdTdjNDZcdTdjNDdcdTdjNDhcdTdjNDlcdTdjNGFcdTdjNGJcdTdjNGNcdTdjNGVcdTdj''@;'; put 'put ''NGZcdTdjNTBcdTdjNTFcdTdjNTJcdTdjNTNcdTdjNTRcdTdjNTVcdTdjNTZcdTdjNTdcdTdjNThcdTdjNTlcdTdjNWFcdTdjNWJcdTdjNWNcdTdjNWRcdTdjNWVcdTdjNWZcdTdjNjBcdTdjNjFcdTdjNjJcdTdjNjNcdTdjNjRcdTdjNjVcdTdjNjZcdTdjNjdcdTdjNjhcdTdjNjlcdTdjNmFc''@;'; put 'put ''dTdjNmJcdTdjNmNcdTdjNmRcdTdjNmVcdTdjNmZcdTdjNzBcdTdjNzFcdTdjNzJcdTdjNzVcdTdjNzZcdTdjNzdcdTdjNzhcdTdjNzlcdTdjN2FcdTdjN2VcdTdjN2ZcdTdjODBcdTdjODFcdTdjODJcdTdjODNcdTdjODRcdTdjODVcdTdjODZcdTdjODdcdWZmZmRcdTdjODhcdTdjOGFcdTdj''@;'; put 'put ''OGJcdTdjOGNcdTdjOGRcdTdjOGVcdTdjOGZcdTdjOTBcdTdjOTNcdTdjOTRcdTdjOTZcdTdjOTlcdTdjOWFcdTdjOWJcdTdjYTBcdTdjYTFcdTdjYTNcdTdjYTZcdTdjYTdcdTdjYThcdTdjYTlcdTdjYWJcdTdjYWNcdTdjYWRcdTdjYWZcdTdjYjBcdTdjYjRcdTdjYjVcdTdjYjZcdTdjYjdc''@;'; put 'put ''dTdjYjhcdTdjYmFcdTdjYmJcdTVmMjdcdTg2NGVcdTU1MmNcdTYyYTRcdTRlOTJcdTZjYWFcdTYyMzdcdTgyYjFcdTU0ZDdcdTUzNGVcdTczM2VcdTZlZDFcdTc1M2JcdTUyMTJcdTUzMTZcdThiZGRcdTY5ZDBcdTVmOGFcdTYwMDBcdTZkZWVcdTU3NGZcdTZiMjJcdTczYWZcdTY4NTNcdThm''@;'; put 'put ''ZDhcdTdmMTNcdTYzNjJcdTYwYTNcdTU1MjRcdTc1ZWFcdThjNjJcdTcxMTVcdTZkYTNcdTViYTZcdTVlN2JcdTgzNTJcdTYxNGNcdTllYzRcdTc4ZmFcdTg3NTdcdTdjMjdcdTc2ODdcdTUxZjBcdTYwZjZcdTcxNGNcdTY2NDNcdTVlNGNcdTYwNGRcdThjMGVcdTcwNzBcdTYzMjVcdThmODlc''@;'; put 'put ''dTVmYmRcdTYwNjJcdTg2ZDRcdTU2ZGVcdTZiYzFcdTYwOTRcdTYxNjdcdTUzNDlcdTYwZTBcdTY2NjZcdThkM2ZcdTc5ZmRcdTRmMWFcdTcwZTlcdTZjNDdcdThiYjNcdThiZjJcdTdlZDhcdTgzNjRcdTY2MGZcdTVhNWFcdTliNDJcdTZkNTFcdTZkZjdcdThjNDFcdTZkM2JcdTRmMTlcdTcw''@;'; put 'put ''NmJcdTgzYjdcdTYyMTZcdTYwZDFcdTk3MGRcdThkMjdcdTc5NzhcdTUxZmJcdTU3M2VcdTU3ZmFcdTY3M2FcdTc1NzhcdTdhM2RcdTc5ZWZcdTdiOTVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4N11bbV0uY2hhckNvZGVBdCgwKSYmKG9l''@;'; put 'put ''W3hbMTg3XVttXV09NDc4NzIrbSxSWzQ3ODcyK21dPXhbMTg3XVttXSk7Zm9yKHhbMTg4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3Y2JmXHU3Y2MwXHU3Y2MyXHU3Y2MzXHU3Y2M0XHU3Y2M2XHU3Y2M5XHU3Y2NiXHU3Y2NlXHU3''@;'; put 'put ''Y2NmXHU3Y2QwXHU3Y2QxXHU3Y2QyXHU3Y2QzXHU3Y2Q0XHU3Y2Q4XHU3Y2RhXHU3Y2RiXHU3Y2RkXHU3Y2RlXHU3Y2UxXHU3Y2UyXHU3Y2UzXHU3Y2U0XHU3Y2U1XHU3Y2U2XHU3Y2U3XHU3Y2U5XHU3Y2VhXHU3Y2ViXHU3Y2VjXHU3Y2VkXHU3Y2VlXHU3Y2YwXHU3Y2YxXHU3Y2YyXHU3Y2Yz''@;'; put 'put ''XHU3Y2Y0XHU3Y2Y1XHU3Y2Y2XHU3Y2Y3XHU3Y2Y5XHU3Y2ZhXHU3Y2ZjXHU3Y2ZkXHU3Y2ZlXHU3Y2ZmXHU3ZDAwXHU3ZDAxXHU3ZDAyXHU3ZDAzXHU3ZDA0XHU3ZDA1XHU3ZDA2XHU3ZDA3XHU3ZDA4XHU3ZDA5XHU3ZDBiXHU3ZDBjXHU3ZDBkXHU3ZDBlXHU3ZDBmXHU3ZDEwXHVmZmZkXHU3''@;'; put 'put ''ZDExXHU3ZDEyXHU3ZDEzXHU3ZDE0XHU3ZDE1XHU3ZDE2XHU3ZDE3XHU3ZDE4XHU3ZDE5XHU3ZDFhXHU3ZDFiXHU3ZDFjXHU3ZDFkXHU3ZDFlXHU3ZDFmXHU3ZDIxXHU3ZDIzXHU3ZDI0XHU3ZDI1XHU3ZDI2XHU3ZDI4XHU3ZDI5XHU3ZDJhXHU3ZDJjXHU3ZDJkXHU3ZDJlXHU3ZDMwXHU3ZDMx''@;'; put 'put ''XHU3ZDMyXHU3ZDMzXHU3ZDM0XHU3ZDM1XHU3ZDM2XHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMwXHU4YmE1XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1YWM5XHU3ZWE3XHU2''@;'; put 'put ''MzI0XHU1MWUwXHU4MTBhXHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3OTZkXHU1MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5XHU0ZjczXHU1YmI2''@;'; put 'put ''XHU1MmEwXHU4MzVhXHU5ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3XHU2N2I2XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVhXHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2OGMwXHU2N2VjXHU3''@;'; put 'put ''OGIxXHU3ODc3XHU2MmUzXHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2OWRiXHU5Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3YmFkXHU0ZWY2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODhdW21dLmNoYXJD''@;'; put 'put ''b2RlQXQoMCkmJihvZVt4WzE4OF1bbV1dPTQ4MTI4K20sUls0ODEyOCttXT14WzE4OF1bbV0pO2Zvcih4WzE4OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2QzN1x1N2QzOFx1N2QzOVx1N2QzYVx1N2QzYlx1N2QzY1x1N2QzZFx1''@;'; put 'put ''N2QzZVx1N2QzZlx1N2Q0MFx1N2Q0MVx1N2Q0Mlx1N2Q0M1x1N2Q0NFx1N2Q0NVx1N2Q0Nlx1N2Q0N1x1N2Q0OFx1N2Q0OVx1N2Q0YVx1N2Q0Ylx1N2Q0Y1x1N2Q0ZFx1N2Q0ZVx1N2Q0Zlx1N2Q1MFx1N2Q1MVx1N2Q1Mlx1N2Q1M1x1N2Q1NFx1N2Q1NVx1N2Q1Nlx1N2Q1N1x1N2Q1OFx1N2Q1''@;'; put 'put ''OVx1N2Q1YVx1N2Q1Ylx1N2Q1Y1x1N2Q1ZFx1N2Q1ZVx1N2Q1Zlx1N2Q2MFx1N2Q2MVx1N2Q2Mlx1N2Q2M1x1N2Q2NFx1N2Q2NVx1N2Q2Nlx1N2Q2N1x1N2Q2OFx1N2Q2OVx1N2Q2YVx1N2Q2Ylx1N2Q2Y1x1N2Q2ZFx1N2Q2Zlx1N2Q3MFx1N2Q3MVx1N2Q3Mlx1N2Q3M1x1N2Q3NFx1N2Q3NVx1''@;'; put 'put ''N2Q3Nlx1ZmZmZFx1N2Q3OFx1N2Q3OVx1N2Q3YVx1N2Q3Ylx1N2Q3Y1x1N2Q3ZFx1N2Q3ZVx1N2Q3Zlx1N2Q4MFx1N2Q4MVx1N2Q4Mlx1N2Q4M1x1N2Q4NFx1N2Q4NVx1N2Q4Nlx1N2Q4N1x1N2Q4OFx1N2Q4OVx1N2Q4YVx1N2Q4Ylx1N2Q4Y1x1N2Q4ZFx1N2Q4ZVx1N2Q4Zlx1N2Q5MFx1N2Q5''@;'; put 'put ''MVx1N2Q5Mlx1N2Q5M1x1N2Q5NFx1N2Q5NVx1N2Q5Nlx1N2Q5N1x1N2Q5OFx1NTA2NVx1ODIzMFx1NTI1MVx1OTk2Zlx1NmUxMFx1NmU4NVx1NmRhN1x1NWVmYVx1NTBmNVx1NTlkY1x1NWMwNlx1NmQ0Nlx1NmM1Zlx1NzU4Nlx1ODQ4Ylx1Njg2OFx1NTk1Nlx1OGJiMlx1NTMyMFx1OTE3MVx1''@;'; put 'put ''OTY0ZFx1ODU0OVx1NjkxMlx1NzkwMVx1NzEyNlx1ODBmNlx1NGVhNFx1OTBjYVx1NmQ0N1x1OWE4NFx1NWEwN1x1NTZiY1x1NjQwNVx1OTRmMFx1NzdlYlx1NGZhNVx1ODExYVx1NzJlMVx1ODlkMlx1OTk3YVx1N2YzNFx1N2VkZVx1NTI3Zlx1NjU1OVx1OTE3NVx1OGY3Zlx1OGY4M1x1NTNl''@;'; put 'put ''Ylx1N2E5Nlx1NjNlZFx1NjNhNVx1NzY4Nlx1NzlmOFx1ODg1N1x1OTYzNlx1NjIyYVx1NTJhYlx1ODI4Mlx1Njg1NFx1Njc3MFx1NjM3N1x1Nzc2Ylx1N2FlZFx1NmQwMVx1N2VkM1x1ODllM1x1NTlkMFx1NjIxMlx1ODVjOVx1ODJhNVx1NzU0Y1x1NTAxZlx1NGVjYlx1NzVhNVx1OGJlYlx1''@;'; put 'put ''NWM0YVx1NWRmZVx1N2I0Ylx1NjVhNFx1OTFkMVx1NGVjYVx1NmQyNVx1ODk1Zlx1N2QyN1x1OTUyNlx1NGVjNVx1OGMyOFx1OGZkYlx1OTc3M1x1NjY0Ylx1Nzk4MVx1OGZkMVx1NzBlY1x1NmQ3OFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhb''@;'; put 'put ''MTg5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODldW21dXT00ODM4NCttLFJbNDgzODQrbV09eFsxODldW21dKTtmb3IoeFsxOTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkOTlcdTdkOWFcdTdkOWJcdTdkOWNcdTdkOWRc''@;'; put 'put ''dTdkOWVcdTdkOWZcdTdkYTBcdTdkYTFcdTdkYTJcdTdkYTNcdTdkYTRcdTdkYTVcdTdkYTdcdTdkYThcdTdkYTlcdTdkYWFcdTdkYWJcdTdkYWNcdTdkYWRcdTdkYWZcdTdkYjBcdTdkYjFcdTdkYjJcdTdkYjNcdTdkYjRcdTdkYjVcdTdkYjZcdTdkYjdcdTdkYjhcdTdkYjlcdTdkYmFcdTdk''@;'; put 'put ''YmJcdTdkYmNcdTdkYmRcdTdkYmVcdTdkYmZcdTdkYzBcdTdkYzFcdTdkYzJcdTdkYzNcdTdkYzRcdTdkYzVcdTdkYzZcdTdkYzdcdTdkYzhcdTdkYzlcdTdkY2FcdTdkY2JcdTdkY2NcdTdkY2RcdTdkY2VcdTdkY2ZcdTdkZDBcdTdkZDFcdTdkZDJcdTdkZDNcdTdkZDRcdTdkZDVcdTdkZDZc''@;'; put 'put ''dTdkZDdcdTdkZDhcdTdkZDlcdWZmZmRcdTdkZGFcdTdkZGJcdTdkZGNcdTdkZGRcdTdkZGVcdTdkZGZcdTdkZTBcdTdkZTFcdTdkZTJcdTdkZTNcdTdkZTRcdTdkZTVcdTdkZTZcdTdkZTdcdTdkZThcdTdkZTlcdTdkZWFcdTdkZWJcdTdkZWNcdTdkZWRcdTdkZWVcdTdkZWZcdTdkZjBcdTdk''@;'; put 'put ''ZjFcdTdkZjJcdTdkZjNcdTdkZjRcdTdkZjVcdTdkZjZcdTdkZjdcdTdkZjhcdTdkZjlcdTdkZmFcdTVjM2RcdTUyYjJcdTgzNDZcdTUxNjJcdTgzMGVcdTc3NWJcdTY2NzZcdTljYjhcdTRlYWNcdTYwY2FcdTdjYmVcdTdjYjNcdTdlY2ZcdTRlOTVcdThiNjZcdTY2NmZcdTk4ODhcdTk3NTlc''@;'; put 'put ''dTU4ODNcdTY1NmNcdTk1NWNcdTVmODRcdTc1YzlcdTk3NTZcdTdhZGZcdTdhZGVcdTUxYzBcdTcwYWZcdTdhOThcdTYzZWFcdTdhNzZcdTdlYTBcdTczOTZcdTk3ZWRcdTRlNDVcdTcwNzhcdTRlNWRcdTkxNTJcdTUzYTlcdTY1NTFcdTY1ZTdcdTgxZmNcdTgyMDVcdTU0OGVcdTVjMzFcdTc1''@;'; put 'put ''OWFcdTk3YTBcdTYyZDhcdTcyZDlcdTc1YmRcdTVjNDVcdTlhNzlcdTgzY2FcdTVjNDBcdTU0ODBcdTc3ZTlcdTRlM2VcdTZjYWVcdTgwNWFcdTYyZDJcdTYzNmVcdTVkZThcdTUxNzdcdThkZGRcdThlMWVcdTk1MmZcdTRmZjFcdTUzZTVcdTYwZTdcdTcwYWNcdTUyNjdcdTYzNTBcdTllNDNc''@;'; put 'put ''dTVhMWZcdTUwMjZcdTc3MzdcdTUzNzdcdTdlZTJcdTY0ODVcdTY1MmJcdTYyODlcdTYzOThcdTUwMTRcdTcyMzVcdTg5YzlcdTUxYjNcdThiYzBcdTdlZGRcdTU3NDdcdTgzY2NcdTk0YTdcdTUxOWJcdTU0MWJcdTVjZmJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTBdLmxlbmd0aDsr''@;'; put 'put ''K20pNjU1MzMhPT14WzE5MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTkwXVttXV09NDg2NDArbSxSWzQ4NjQwK21dPXhbMTkwXVttXSk7Zm9yKHhbMTkxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZGZiXHU3ZGZjXHU3ZGZk''@;'; put 'put ''XHU3ZGZlXHU3ZGZmXHU3ZTAwXHU3ZTAxXHU3ZTAyXHU3ZTAzXHU3ZTA0XHU3ZTA1XHU3ZTA2XHU3ZTA3XHU3ZTA4XHU3ZTA5XHU3ZTBhXHU3ZTBiXHU3ZTBjXHU3ZTBkXHU3ZTBlXHU3ZTBmXHU3ZTEwXHU3ZTExXHU3ZTEyXHU3ZTEzXHU3ZTE0XHU3ZTE1XHU3ZTE2XHU3ZTE3XHU3ZTE4XHU3''@;'; put 'put ''ZTE5XHU3ZTFhXHU3ZTFiXHU3ZTFjXHU3ZTFkXHU3ZTFlXHU3ZTFmXHU3ZTIwXHU3ZTIxXHU3ZTIyXHU3ZTIzXHU3ZTI0XHU3ZTI1XHU3ZTI2XHU3ZTI3XHU3ZTI4XHU3ZTI5XHU3ZTJhXHU3ZTJiXHU3ZTJjXHU3ZTJkXHU3ZTJlXHU3ZTJmXHU3ZTMwXHU3ZTMxXHU3ZTMyXHU3ZTMzXHU3ZTM0''@;'; put 'put ''XHU3ZTM1XHU3ZTM2XHU3ZTM3XHU3ZTM4XHU3ZTM5XHVmZmZkXHU3ZTNhXHU3ZTNjXHU3ZTNkXHU3ZTNlXHU3ZTNmXHU3ZTQwXHU3ZTQyXHU3ZTQzXHU3ZTQ0XHU3ZTQ1XHU3ZTQ2XHU3ZTQ4XHU3ZTQ5XHU3ZTRhXHU3ZTRiXHU3ZTRjXHU3ZTRkXHU3ZTRlXHU3ZTRmXHU3ZTUwXHU3ZTUxXHU3''@;'; put 'put ''ZTUyXHU3ZTUzXHU3ZTU0XHU3ZTU1XHU3ZTU2XHU3ZTU3XHU3ZTU4XHU3ZTU5XHU3ZTVhXHU3ZTViXHU3ZTVjXHU3ZTVkXHU0ZmNhXHU3YWUzXHU2ZDVhXHU5MGUxXHU5YThmXHU1NTgwXHU1NDk2XHU1MzYxXHU1NGFmXHU1ZjAwXHU2M2U5XHU2OTc3XHU1MWVmXHU2MTY4XHU1MjBhXHU1ODJh''@;'; put 'put ''XHU1MmQ4XHU1NzRlXHU3ODBkXHU3NzBiXHU1ZWI3XHU2MTc3XHU3Y2UwXHU2MjViXHU2Mjk3XHU0ZWEyXHU3MDk1XHU4MDAzXHU2MmY3XHU3MGU0XHU5NzYwXHU1Nzc3XHU4MmRiXHU2N2VmXHU2OGY1XHU3OGQ1XHU5ODk3XHU3OWQxXHU1OGYzXHU1NGIzXHU1M2VmXHU2ZTM0XHU1MTRiXHU1''@;'; put 'put ''MjNiXHU1YmEyXHU4YmZlXHU4MGFmXHU1NTQzXHU1N2E2XHU2MDczXHU1NzUxXHU1NDJkXHU3YTdhXHU2MDUwXHU1YjU0XHU2M2E3XHU2MmEwXHU1M2UzXHU2MjYzXHU1YmM3XHU2N2FmXHU1NGVkXHU3YTlmXHU4MmU2XHU5MTc3XHU1ZTkzXHU4OGU0XHU1OTM4XHU1N2FlXHU2MzBlXHU4ZGU4''@;'; put 'put ''XHU4MGVmXHU1NzU3XHU3Yjc3XHU0ZmE5XHU1ZmViXHU1YmJkXHU2YjNlXHU1MzIxXHU3YjUwXHU3MmMyXHU2ODQ2XHU3N2ZmXHU3NzM2XHU2NWY3XHU1MWI1XHU0ZThmXHU3NmQ0XHU1Y2JmXHU3YWE1XHU4NDc1XHU1OTRlXHU5YjQxXHU1MDgwXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhb''@;'; put 'put ''MTkxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5MV1bbV1dPTQ4ODk2K20sUls0ODg5NittXT14WzE5MV1bbV0pO2Zvcih4WzE5Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U1''@;'; put 'put ''ZVx1N2U1Zlx1N2U2MFx1N2U2MVx1N2U2Mlx1N2U2M1x1N2U2NFx1N2U2NVx1N2U2Nlx1N2U2N1x1N2U2OFx1N2U2OVx1N2U2YVx1N2U2Ylx1N2U2Y1x1N2U2ZFx1N2U2ZVx1N2U2Zlx1N2U3MFx1N2U3MVx1N2U3Mlx1N2U3M1x1N2U3NFx1N2U3NVx1N2U3Nlx1N2U3N1x1N2U3OFx1N2U3OVx1''@;'; put 'put ''N2U3YVx1N2U3Ylx1N2U3Y1x1N2U3ZFx1N2U3ZVx1N2U3Zlx1N2U4MFx1N2U4MVx1N2U4M1x1N2U4NFx1N2U4NVx1N2U4Nlx1N2U4N1x1N2U4OFx1N2U4OVx1N2U4YVx1N2U4Ylx1N2U4Y1x1N2U4ZFx1N2U4ZVx1N2U4Zlx1N2U5MFx1N2U5MVx1N2U5Mlx1N2U5M1x1N2U5NFx1N2U5NVx1N2U5''@;'; put 'put ''Nlx1N2U5N1x1N2U5OFx1N2U5OVx1N2U5YVx1N2U5Y1x1N2U5ZFx1N2U5ZVx1ZmZmZFx1N2VhZVx1N2ViNFx1N2ViYlx1N2ViY1x1N2VkNlx1N2VlNFx1N2VlY1x1N2VmOVx1N2YwYVx1N2YxMFx1N2YxZVx1N2YzN1x1N2YzOVx1N2YzYlx1N2YzY1x1N2YzZFx1N2YzZVx1N2YzZlx1N2Y0MFx1''@;'; put 'put ''N2Y0MVx1N2Y0M1x1N2Y0Nlx1N2Y0N1x1N2Y0OFx1N2Y0OVx1N2Y0YVx1N2Y0Ylx1N2Y0Y1x1N2Y0ZFx1N2Y0ZVx1N2Y0Zlx1N2Y1Mlx1N2Y1M1x1OTk4OFx1NjEyN1x1NmU4M1x1NTc2NFx1NjYwNlx1NjM0Nlx1NTZmMFx1NjJlY1x1NjI2OVx1NWVkM1x1OTYxNFx1NTc4M1x1NjJjOVx1NTU4''@;'; put 'put ''N1x1ODcyMVx1ODE0YVx1OGZhM1x1NTU2Nlx1ODNiMVx1Njc2NVx1OGQ1Nlx1ODRkZFx1NWE2YVx1NjgwZlx1NjJlNlx1N2JlZVx1OTYxMVx1NTE3MFx1NmY5Y1x1OGMzMFx1NjNmZFx1ODljOFx1NjFkMlx1N2YwNlx1NzBjMlx1NmVlNVx1NzQwNVx1Njk5NFx1NzJmY1x1NWVjYVx1OTBjZVx1''@;'; put 'put ''NjcxN1x1NmQ2YVx1NjM1ZVx1NTJiM1x1NzI2Mlx1ODAwMVx1NGY2Y1x1NTllNVx1OTE2YVx1NzBkOVx1NmQ5ZFx1NTJkMlx1NGU1MFx1OTZmN1x1OTU2ZFx1ODU3ZVx1NzhjYVx1N2QyZlx1NTEyMVx1NTc5Mlx1NjRjMlx1ODA4Ylx1N2M3Ylx1NmNlYVx1NjhmMVx1Njk1ZVx1NTFiN1x1NTM5''@;'; put 'put ''OFx1NjhhOFx1NzI4MVx1OWVjZVx1N2JmMVx1NzJmOFx1NzliYlx1NmYxM1x1NzQwNlx1Njc0ZVx1OTFjY1x1OWNhNFx1NzkzY1x1ODM4OVx1ODM1NFx1NTQwZlx1NjgxN1x1NGUzZFx1NTM4OVx1NTJiMVx1NzgzZVx1NTM4Nlx1NTIyOVx1NTA4OFx1NGY4Ylx1NGZkMFx1ZmZmZCIuc3BsaXQo''@;'; put 'put ''IiIpLG09MDttIT14WzE5Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTkyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTJdW21dXT00OTE1MittLFJbNDkxNTIrbV09eFsxOTJdW21dKTtmb3IoeFsxOTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdTdmNTZcdTdmNTlcdTdmNWJcdTdmNWNcdTdmNWRcdTdmNWVcdTdmNjBcdTdmNjNcdTdmNjRcdTdmNjVcdTdmNjZcdTdmNjdcdTdmNmJcdTdmNmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVcdTdmNzZcdTdmNzdcdTdmNzhcdTdmN2FcdTdmN2JcdTdmN2NcdTdmN2Rc''@;'; put 'put ''dTdmN2ZcdTdmODBcdTdmODJcdTdmODNcdTdmODRcdTdmODVcdTdmODZcdTdmODdcdTdmODhcdTdmODlcdTdmOGJcdTdmOGRcdTdmOGZcdTdmOTBcdTdmOTFcdTdmOTJcdTdmOTNcdTdmOTVcdTdmOTZcdTdmOTdcdTdmOThcdTdmOTlcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdm''@;'; put 'put ''YTVcdTdmYTZcdTdmYThcdTdmYTlcdTdmYWFcdTdmYWJcdTdmYWNcdTdmYWRcdTdmYWVcdTdmYjFcdWZmZmRcdTdmYjNcdTdmYjRcdTdmYjVcdTdmYjZcdTdmYjdcdTdmYmFcdTdmYmJcdTdmYmVcdTdmYzBcdTdmYzJcdTdmYzNcdTdmYzRcdTdmYzZcdTdmYzdcdTdmYzhcdTdmYzlcdTdmY2Jc''@;'; put 'put ''dTdmY2RcdTdmY2ZcdTdmZDBcdTdmZDFcdTdmZDJcdTdmZDNcdTdmZDZcdTdmZDdcdTdmZDlcdTdmZGFcdTdmZGJcdTdmZGNcdTdmZGRcdTdmZGVcdTdmZTJcdTdmZTNcdTc1ZTJcdTdhY2JcdTdjOTJcdTZjYTVcdTk2YjZcdTUyOWJcdTc0ODNcdTU0ZTlcdTRmZTlcdTgwNTRcdTgzYjJcdThm''@;'; put 'put ''ZGVcdTk1NzBcdTVlYzlcdTYwMWNcdTZkOWZcdTVlMThcdTY1NWJcdTgxMzhcdTk0ZmVcdTYwNGJcdTcwYmNcdTdlYzNcdTdjYWVcdTUxYzlcdTY4ODFcdTdjYjFcdTgyNmZcdTRlMjRcdThmODZcdTkxY2ZcdTY2N2VcdTRlYWVcdThjMDVcdTY0YTlcdTgwNGFcdTUwZGFcdTc1OTdcdTcxY2Vc''@;'; put 'put ''dTViZTVcdThmYmRcdTZmNjZcdTRlODZcdTY0ODJcdTk1NjNcdTVlZDZcdTY1OTlcdTUyMTdcdTg4YzJcdTcwYzhcdTUyYTNcdTczMGVcdTc0MzNcdTY3OTdcdTc4ZjdcdTk3MTZcdTRlMzRcdTkwYmJcdTljZGVcdTZkY2JcdTUxZGJcdThkNDFcdTU0MWRcdTYyY2VcdTczYjJcdTgzZjFcdTk2''@;'; put 'put ''ZjZcdTlmODRcdTk0YzNcdTRmMzZcdTdmOWFcdTUxY2NcdTcwNzVcdTk2NzVcdTVjYWRcdTk4ODZcdTUzZTZcdTRlZTRcdTZlOWNcdTc0MDlcdTY5YjRcdTc4NmJcdTk5OGZcdTc1NTlcdTUyMThcdTc2MjRcdTZkNDFcdTY3ZjNcdTUxNmRcdTlmOTlcdTgwNGJcdTU0OTlcdTdiM2NcdTdhYmZc''@;'; put 'put ''dWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTkzXVttXV09NDk0MDgrbSxSWzQ5NDA4K21dPXhbMTkzXVttXSk7Zm9yKHhbMTk0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU0XHU3ZmU3XHU3ZmU4XHU3ZmVhXHU3ZmViXHU3ZmVjXHU3ZmVkXHU3ZmVmXHU3ZmYyXHU3ZmY0XHU3ZmY1XHU3ZmY2XHU3ZmY3XHU3ZmY4XHU3ZmY5XHU3ZmZhXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDAyXHU4MDA3XHU4MDA4XHU4MDA5XHU4MDBh''@;'; put 'put ''XHU4MDBlXHU4MDBmXHU4MDExXHU4MDEzXHU4MDFhXHU4MDFiXHU4MDFkXHU4MDFlXHU4MDFmXHU4MDIxXHU4MDIzXHU4MDI0XHU4MDJiXHU4MDJjXHU4MDJkXHU4MDJlXHU4MDJmXHU4MDMwXHU4MDMyXHU4MDM0XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQxXHU4MDQ0XHU4''@;'; put 'put ''MDQ1XHU4MDQ3XHU4MDQ4XHU4MDQ5XHU4MDRlXHU4MDRmXHU4MDUwXHU4MDUxXHU4MDUzXHU4MDU1XHU4MDU2XHU4MDU3XHVmZmZkXHU4MDU5XHU4MDViXHU4MDVjXHU4MDVkXHU4MDVlXHU4MDVmXHU4MDYwXHU4MDYxXHU4MDYyXHU4MDYzXHU4MDY0XHU4MDY1XHU4MDY2XHU4MDY3XHU4MDY4''@;'; put 'put ''XHU4MDZiXHU4MDZjXHU4MDZkXHU4MDZlXHU4MDZmXHU4MDcwXHU4MDcyXHU4MDczXHU4MDc0XHU4MDc1XHU4MDc2XHU4MDc3XHU4MDc4XHU4MDc5XHU4MDdhXHU4MDdiXHU4MDdjXHU4MDdkXHU5Njg2XHU1Nzg0XHU2MmUyXHU5NjQ3XHU2OTdjXHU1YTA0XHU2NDAyXHU3YmQzXHU2ZjBmXHU5''@;'; put 'put ''NjRiXHU4MmE2XHU1MzYyXHU5ODg1XHU1ZTkwXHU3MDg5XHU2M2IzXHU1MzY0XHU4NjRmXHU5YzgxXHU5ZTkzXHU3ODhjXHU5NzMyXHU4ZGVmXHU4ZDQyXHU5ZTdmXHU2ZjVlXHU3OTg0XHU1ZjU1XHU5NjQ2XHU2MjJlXHU5YTc0XHU1NDE1XHU5NGRkXHU0ZmEzXHU2NWM1XHU1YzY1XHU1YzYx''@;'; put 'put ''XHU3ZjE1XHU4NjUxXHU2YzJmXHU1ZjhiXHU3Mzg3XHU2ZWU0XHU3ZWZmXHU1Y2U2XHU2MzFiXHU1YjZhXHU2ZWU2XHU1Mzc1XHU0ZTcxXHU2M2EwXHU3NTY1XHU2MmExXHU4ZjZlXHU0ZjI2XHU0ZWQxXHU2Y2E2XHU3ZWI2XHU4YmJhXHU4NDFkXHU4N2JhXHU3ZjU3XHU5MDNiXHU5NTIzXHU3''@;'; put 'put ''YmE5XHU5YWExXHU4OGY4XHU4NDNkXHU2ZDFiXHU5YTg2XHU3ZWRjXHU1OTg4XHU5ZWJiXHU3MzliXHU3ODAxXHU4NjgyXHU5YTZjXHU5YTgyXHU1NjFiXHU1NDE3XHU1N2NiXHU0ZTcwXHU5ZWE2XHU1MzU2XHU4ZmM4XHU4MTA5XHU3NzkyXHU5OTkyXHU4NmVlXHU2ZWUxXHU4NTEzXHU2NmZj''@;'; put 'put ''XHU2MTYyXHU2ZjJiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5NF1bbV1dPTQ5NjY0K20sUls0OTY2NCttXT14WzE5NF1bbV0pO2Zvcih4WzE5NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA3ZVx1ODA4MVx1ODA4Mlx1ODA4NVx1ODA4OFx1ODA4YVx1ODA4ZFx1ODA4ZVx1ODA4Zlx1ODA5MFx1ODA5MVx1ODA5Mlx1ODA5NFx1ODA5NVx1ODA5N1x1ODA5OVx1ODA5ZVx1ODBhM1x1ODBhNlx1ODBhN1x1ODBhOFx1ODBh''@;'; put 'put ''Y1x1ODBiMFx1ODBiM1x1ODBiNVx1ODBiNlx1ODBiOFx1ODBiOVx1ODBiYlx1ODBjNVx1ODBjN1x1ODBjOFx1ODBjOVx1ODBjYVx1ODBjYlx1ODBjZlx1ODBkMFx1ODBkMVx1ODBkMlx1ODBkM1x1ODBkNFx1ODBkNVx1ODBkOFx1ODBkZlx1ODBlMFx1ODBlMlx1ODBlM1x1ODBlNlx1ODBlZVx1''@;'; put 'put ''ODBmNVx1ODBmN1x1ODBmOVx1ODBmYlx1ODBmZVx1ODBmZlx1ODEwMFx1ODEwMVx1ODEwM1x1ODEwNFx1ODEwNVx1ODEwN1x1ODEwOFx1ODEwYlx1ZmZmZFx1ODEwY1x1ODExNVx1ODExN1x1ODExOVx1ODExYlx1ODExY1x1ODExZFx1ODExZlx1ODEyMFx1ODEyMVx1ODEyMlx1ODEyM1x1ODEy''@;'; put 'put ''NFx1ODEyNVx1ODEyNlx1ODEyN1x1ODEyOFx1ODEyOVx1ODEyYVx1ODEyYlx1ODEyZFx1ODEyZVx1ODEzMFx1ODEzM1x1ODEzNFx1ODEzNVx1ODEzN1x1ODEzOVx1ODEzYVx1ODEzYlx1ODEzY1x1ODEzZFx1ODEzZlx1OGMyOVx1ODI5Mlx1ODMyYlx1NzZmMlx1NmMxM1x1NWZkOVx1ODNiZFx1''@;'; put 'put ''NzMyYlx1ODMwNVx1OTUxYVx1NmJkYlx1NzdkYlx1OTRjNlx1NTM2Zlx1ODMwMlx1NTE5Mlx1NWUzZFx1OGM4Y1x1OGQzOFx1NGU0OFx1NzNhYlx1Njc5YVx1Njg4NVx1OTE3Nlx1OTcwOVx1NzE2NFx1NmNhMVx1NzcwOVx1NWE5Mlx1OTU0MVx1NmJjZlx1N2Y4ZVx1NjYyN1x1NWJkMFx1NTli''@;'; put 'put ''OVx1NWE5YVx1OTVlOFx1OTVmN1x1NGVlY1x1ODQwY1x1ODQ5OVx1NmFhY1x1NzZkZlx1OTUzMFx1NzMxYlx1NjhhNlx1NWI1Zlx1NzcyZlx1OTE5YVx1OTc2MVx1N2NkY1x1OGZmN1x1OGMxY1x1NWYyNVx1N2M3M1x1NzlkOFx1ODljNVx1NmNjY1x1ODcxY1x1NWJjNlx1NWU0Mlx1NjhjOVx1''@;'; put 'put ''NzcyMFx1N2VmNVx1NTE5NVx1NTE0ZFx1NTJjOVx1NWEyOVx1N2YwNVx1OTc2Mlx1ODJkN1x1NjNjZlx1Nzc4NFx1ODVkMFx1NzlkMlx1NmUzYVx1NWU5OVx1NTk5OVx1ODUxMVx1NzA2ZFx1NmMxMVx1NjJiZlx1NzZiZlx1NjU0Zlx1NjBhZlx1OTVmZFx1NjYwZVx1ODc5Zlx1OWUyM1x1OTRl''@;'; put 'put ''ZFx1NTQwZFx1NTQ3ZFx1OGMyY1x1NjQ3OFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTVdW21dXT00OTkyMCttLFJbNDk5MjArbV09eFsxOTVdW21dKTtmb3IoeFsxOTZdPSJcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDBcdTgxNDFcdTgxNDJcdTgxNDNcdTgxNDRcdTgxNDVcdTgxNDdcdTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZcdTgxNTdcdTgxNThcdTgxNWJcdTgxNWNcdTgxNWRcdTgxNWVcdTgx''@;'; put 'put ''NWZcdTgxNjFcdTgxNjJcdTgxNjNcdTgxNjRcdTgxNjZcdTgxNjhcdTgxNmFcdTgxNmJcdTgxNmNcdTgxNmZcdTgxNzJcdTgxNzNcdTgxNzVcdTgxNzZcdTgxNzdcdTgxNzhcdTgxODFcdTgxODNcdTgxODRcdTgxODVcdTgxODZcdTgxODdcdTgxODlcdTgxOGJcdTgxOGNcdTgxOGRcdTgxOGVc''@;'; put 'put ''dTgxOTBcdTgxOTJcdTgxOTNcdTgxOTRcdTgxOTVcdTgxOTZcdTgxOTdcdTgxOTlcdTgxOWFcdTgxOWVcdTgxOWZcdTgxYTBcdTgxYTFcdTgxYTJcdTgxYTRcdTgxYTVcdWZmZmRcdTgxYTdcdTgxYTlcdTgxYWJcdTgxYWNcdTgxYWRcdTgxYWVcdTgxYWZcdTgxYjBcdTgxYjFcdTgxYjJcdTgx''@;'; put 'put ''YjRcdTgxYjVcdTgxYjZcdTgxYjdcdTgxYjhcdTgxYjlcdTgxYmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgxY2JcdTgxY2RcdTgxY2VcdTgxY2ZcdTgxZDBcdTgxZDFcdTgxZDJcdTgxZDNcdTY0NzlcdTg2MTFcdTZhMjFcdTgxOWNcdTc4ZThc''@;'; put 'put ''dTY0NjlcdTliNTRcdTYyYjlcdTY3MmJcdTgzYWJcdTU4YThcdTllZDhcdTZjYWJcdTZmMjBcdTViZGVcdTk2NGNcdThjMGJcdTcyNWZcdTY3ZDBcdTYyYzdcdTcyNjFcdTRlYTlcdTU5YzZcdTZiY2RcdTU4OTNcdTY2YWVcdTVlNTVcdTUyZGZcdTYxNTVcdTY3MjhcdTc2ZWVcdTc3NjZcdTcy''@;'; put 'put ''NjdcdTdhNDZcdTYyZmZcdTU0ZWFcdTU0NTBcdTk0YTBcdTkwYTNcdTVhMWNcdTdlYjNcdTZjMTZcdTRlNDNcdTU5NzZcdTgwMTBcdTU5NDhcdTUzNTdcdTc1MzdcdTk2YmVcdTU2Y2FcdTYzMjBcdTgxMTFcdTYwN2NcdTk1ZjlcdTZkZDZcdTU0NjJcdTk5ODFcdTUxODVcdTVhZTlcdTgwZmRc''@;'; put 'put ''dTU5YWVcdTk3MTNcdTUwMmFcdTZjZTVcdTVjM2NcdTYyZGZcdTRmNjBcdTUzM2ZcdTgxN2JcdTkwMDZcdTZlYmFcdTg1MmJcdTYyYzhcdTVlNzRcdTc4YmVcdTY0YjVcdTYzN2JcdTVmZjVcdTVhMThcdTkxN2ZcdTllMWZcdTVjM2ZcdTYzNGZcdTgwNDJcdTViN2RcdTU1NmVcdTk1NGFcdTk1''@;'; put 'put ''NGRcdTZkODVcdTYwYThcdTY3ZTBcdTcyZGVcdTUxZGRcdTViODFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk2XVttXV09NTAxNzYrbSxSWzUwMTc2K21dPXhbMTk2XVttXSk7Zm9yKHhb''@;'; put 'put ''MTk3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MWQ0XHU4MWQ1XHU4MWQ2XHU4MWQ3XHU4MWQ4XHU4MWQ5XHU4MWRhXHU4MWRiXHU4MWRjXHU4MWRkXHU4MWRlXHU4MWRmXHU4MWUwXHU4MWUxXHU4MWUyXHU4MWU0XHU4MWU1XHU4''@;'; put 'put ''MWU2XHU4MWU4XHU4MWU5XHU4MWViXHU4MWVlXHU4MWVmXHU4MWYwXHU4MWYxXHU4MWYyXHU4MWY1XHU4MWY2XHU4MWY3XHU4MWY4XHU4MWY5XHU4MWZhXHU4MWZkXHU4MWZmXHU4MjAzXHU4MjA3XHU4MjA4XHU4MjA5XHU4MjBhXHU4MjBiXHU4MjBlXHU4MjBmXHU4MjExXHU4MjEzXHU4MjE1''@;'; put 'put ''XHU4MjE2XHU4MjE3XHU4MjE4XHU4MjE5XHU4MjFhXHU4MjFkXHU4MjIwXHU4MjI0XHU4MjI1XHU4MjI2XHU4MjI3XHU4MjI5XHU4MjJlXHU4MjMyXHU4MjNhXHU4MjNjXHU4MjNkXHU4MjNmXHVmZmZkXHU4MjQwXHU4MjQxXHU4MjQyXHU4MjQzXHU4MjQ1XHU4MjQ2XHU4MjQ4XHU4MjRhXHU4''@;'; put 'put ''MjRjXHU4MjRkXHU4MjRlXHU4MjUwXHU4MjUxXHU4MjUyXHU4MjUzXHU4MjU0XHU4MjU1XHU4MjU2XHU4MjU3XHU4MjU5XHU4MjViXHU4MjVjXHU4MjVkXHU4MjVlXHU4MjYwXHU4MjYxXHU4MjYyXHU4MjYzXHU4MjY0XHU4MjY1XHU4MjY2XHU4MjY3XHU4MjY5XHU2MmU3XHU2Y2RlXHU3MjVi''@;'; put 'put ''XHU2MjZkXHU5NGFlXHU3ZWJkXHU4MTEzXHU2ZDUzXHU1MTljXHU1ZjA0XHU1OTc0XHU1MmFhXHU2MDEyXHU1OTczXHU2Njk2XHU4NjUwXHU3NTlmXHU2MzJhXHU2MWU2XHU3Y2VmXHU4YmZhXHU1NGU2XHU2YjI3XHU5ZTI1XHU2YmI0XHU4NWQ1XHU1NDU1XHU1MDc2XHU2Y2E0XHU1NTZhXHU4''@;'; put 'put ''ZGI0XHU3MjJjXHU1ZTE1XHU2MDE1XHU3NDM2XHU2MmNkXHU2MzkyXHU3MjRjXHU1Zjk4XHU2ZTQzXHU2ZDNlXHU2NTAwXHU2ZjU4XHU3NmQ4XHU3OGQwXHU3NmZjXHU3NTU0XHU1MjI0XHU1M2RiXHU0ZTUzXHU1ZTllXHU2NWMxXHU4MDJhXHU4MGQ2XHU2MjliXHU1NDg2XHU1MjI4XHU3MGFl''@;'; put 'put ''XHU4ODhkXHU4ZGQxXHU2Y2UxXHU1NDc4XHU4MGRhXHU1N2Y5XHU4OGY0XHU4ZDU0XHU5NjZhXHU5MTRkXHU0ZjY5XHU2YzliXHU1NWI3XHU3NmM2XHU3ODMwXHU2MmE4XHU3MGY5XHU2ZjhlXHU1ZjZkXHU4NGVjXHU2OGRhXHU3ODdjXHU3YmY3XHU4MWE4XHU2NzBiXHU5ZTRmXHU2MzY3XHU3''@;'; put 'put ''OGIwXHU1NzZmXHU3ODEyXHU5NzM5XHU2Mjc5XHU2MmFiXHU1Mjg4XHU3NDM1XHU2YmQ3XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5N11bbV1dPTUwNDMyK20sUls1MDQzMittXT14WzE5''@;'; put 'put ''N11bbV0pO2Zvcih4WzE5OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODI2YVx1ODI2Ylx1ODI2Y1x1ODI2ZFx1ODI3MVx1ODI3NVx1ODI3Nlx1ODI3N1x1ODI3OFx1ODI3Ylx1ODI3Y1x1ODI4MFx1ODI4MVx1ODI4M1x1ODI4NVx1''@;'; put 'put ''ODI4Nlx1ODI4N1x1ODI4OVx1ODI4Y1x1ODI5MFx1ODI5M1x1ODI5NFx1ODI5NVx1ODI5Nlx1ODI5YVx1ODI5Ylx1ODI5ZVx1ODJhMFx1ODJhMlx1ODJhM1x1ODJhN1x1ODJiMlx1ODJiNVx1ODJiNlx1ODJiYVx1ODJiYlx1ODJiY1x1ODJiZlx1ODJjMFx1ODJjMlx1ODJjM1x1ODJjNVx1ODJj''@;'; put 'put ''Nlx1ODJjOVx1ODJkMFx1ODJkNlx1ODJkOVx1ODJkYVx1ODJkZFx1ODJlMlx1ODJlN1x1ODJlOFx1ODJlOVx1ODJlYVx1ODJlY1x1ODJlZFx1ODJlZVx1ODJmMFx1ODJmMlx1ODJmM1x1ODJmNVx1ODJmNlx1ODJmOFx1ZmZmZFx1ODJmYVx1ODJmY1x1ODJmZFx1ODJmZVx1ODJmZlx1ODMwMFx1''@;'; put 'put ''ODMwYVx1ODMwYlx1ODMwZFx1ODMxMFx1ODMxMlx1ODMxM1x1ODMxNlx1ODMxOFx1ODMxOVx1ODMxZFx1ODMxZVx1ODMxZlx1ODMyMFx1ODMyMVx1ODMyMlx1ODMyM1x1ODMyNFx1ODMyNVx1ODMyNlx1ODMyOVx1ODMyYVx1ODMyZVx1ODMzMFx1ODMzMlx1ODMzN1x1ODMzYlx1ODMzZFx1NTU2''@;'; put 'put ''NFx1ODEzZVx1NzViMlx1NzZhZVx1NTMzOVx1NzVkZVx1NTBmYlx1NWM0MVx1OGI2Y1x1N2JjN1x1NTA0Zlx1NzI0N1x1OWE5N1x1OThkOFx1NmYwMlx1NzRlMlx1Nzk2OFx1NjQ4N1x1NzdhNVx1NjJmY1x1OTg5MVx1OGQyYlx1NTRjMVx1ODA1OFx1NGU1Mlx1NTc2YVx1ODJmOVx1ODQwZFx1''@;'; put 'put ''NWU3M1x1NTFlZFx1NzRmNlx1OGJjNFx1NWM0Zlx1NTc2MVx1NmNmY1x1OTg4N1x1NWE0Nlx1NzgzNFx1OWI0NFx1OGZlYlx1N2M5NVx1NTI1Nlx1NjI1MVx1OTRmYVx1NGVjNlx1ODM4Nlx1ODQ2MVx1ODNlOVx1ODRiMlx1NTdkNFx1NjczNFx1NTcwM1x1NjY2ZVx1NmQ2Nlx1OGMzMVx1NjZk''@;'; put 'put ''ZFx1NzAxMVx1NjcxZlx1NmIzYVx1NjgxNlx1NjIxYVx1NTliYlx1NGUwM1x1NTFjNFx1NmYwNlx1NjdkMlx1NmM4Zlx1NTE3Nlx1NjhjYlx1NTk0N1x1NmI2N1x1NzU2Nlx1NWQwZVx1ODExMFx1OWY1MFx1NjVkN1x1Nzk0OFx1Nzk0MVx1OWE5MVx1OGQ3N1x1NWM4Mlx1NGU1ZVx1NGYwMVx1''@;'; put 'put ''NTQyZlx1NTk1MVx1NzgwY1x1NTY2OFx1NmMxNFx1OGZjNFx1NWYwM1x1NmM3ZFx1NmNlM1x1OGJhYlx1NjM5MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOThdW21dXT01MDY4OCttLFJb''@;'; put 'put ''NTA2ODgrbV09eFsxOThdW21dKTtmb3IoeFsxOTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzM2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhcdTgzNGFcdTgzNGJcdTgzNGNcdTgzNGRcdTgzNGVcdTgzNTNc''@;'; put 'put ''dTgzNTVcdTgzNTZcdTgzNTdcdTgzNThcdTgzNTlcdTgzNWRcdTgzNjJcdTgzNzBcdTgzNzFcdTgzNzJcdTgzNzNcdTgzNzRcdTgzNzVcdTgzNzZcdTgzNzlcdTgzN2FcdTgzN2VcdTgzN2ZcdTgzODBcdTgzODFcdTgzODJcdTgzODNcdTgzODRcdTgzODdcdTgzODhcdTgzOGFcdTgzOGJcdTgz''@;'; put 'put ''OGNcdTgzOGRcdTgzOGZcdTgzOTBcdTgzOTFcdTgzOTRcdTgzOTVcdTgzOTZcdTgzOTdcdTgzOTlcdTgzOWFcdTgzOWRcdTgzOWZcdTgzYTFcdTgzYTJcdTgzYTNcdTgzYTRcdTgzYTVcdTgzYTZcdTgzYTdcdTgzYWNcdTgzYWRcdTgzYWVcdWZmZmRcdTgzYWZcdTgzYjVcdTgzYmJcdTgzYmVc''@;'; put 'put ''dTgzYmZcdTgzYzJcdTgzYzNcdTgzYzRcdTgzYzZcdTgzYzhcdTgzYzlcdTgzY2JcdTgzY2RcdTgzY2VcdTgzZDBcdTgzZDFcdTgzZDJcdTgzZDNcdTgzZDVcdTgzZDdcdTgzZDlcdTgzZGFcdTgzZGJcdTgzZGVcdTgzZTJcdTgzZTNcdTgzZTRcdTgzZTZcdTgzZTdcdTgzZThcdTgzZWJcdTgz''@;'; put 'put ''ZWNcdTgzZWRcdTYwNzBcdTZkM2RcdTcyNzVcdTYyNjZcdTk0OGVcdTk0YzVcdTUzNDNcdThmYzFcdTdiN2VcdTRlZGZcdThjMjZcdTRlN2VcdTllZDRcdTk0YjFcdTk0YjNcdTUyNGRcdTZmNWNcdTkwNjNcdTZkNDVcdThjMzRcdTU4MTFcdTVkNGNcdTZiMjBcdTZiNDlcdTY3YWFcdTU0NWJc''@;'; put 'put ''dTgxNTRcdTdmOGNcdTU4OTlcdTg1MzdcdTVmM2FcdTYyYTJcdTZhNDdcdTk1MzlcdTY1NzJcdTYwODRcdTY4NjVcdTc3YTdcdTRlNTRcdTRmYThcdTVkZTdcdTk3OThcdTY0YWNcdTdmZDhcdTVjZWRcdTRmY2ZcdTdhOGRcdTUyMDdcdTgzMDRcdTRlMTRcdTYwMmZcdTdhODNcdTk0YTZcdTRm''@;'; put 'put ''YjVcdTRlYjJcdTc5ZTZcdTc0MzRcdTUyZTRcdTgyYjlcdTY0ZDJcdTc5YmRcdTViZGRcdTZjODFcdTk3NTJcdThmN2JcdTZjMjJcdTUwM2VcdTUzN2ZcdTZlMDVcdTY0Y2VcdTY2NzRcdTZjMzBcdTYwYzVcdTk4NzdcdThiZjdcdTVlODZcdTc0M2NcdTdhNzdcdTc5Y2JcdTRlMThcdTkwYjFc''@;'; put 'put ''dTc0MDNcdTZjNDJcdTU2ZGFcdTkxNGJcdTZjYzVcdThkOGJcdTUzM2FcdTg2YzZcdTY2ZjJcdThlYWZcdTVjNDhcdTlhNzFcdTZlMjBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk5XVtt''@;'; put 'put ''XV09NTA5NDQrbSxSWzUwOTQ0K21dPXhbMTk5XVttXSk7Zm9yKHhbMjAwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4M2VlXHU4M2VmXHU4M2YzXHU4M2Y0XHU4M2Y1XHU4M2Y2XHU4M2Y3XHU4M2ZhXHU4M2ZiXHU4M2ZjXHU4M2Zl''@;'; put 'put ''XHU4M2ZmXHU4NDAwXHU4NDAyXHU4NDA1XHU4NDA3XHU4NDA4XHU4NDA5XHU4NDBhXHU4NDEwXHU4NDEyXHU4NDEzXHU4NDE0XHU4NDE1XHU4NDE2XHU4NDE3XHU4NDE5XHU4NDFhXHU4NDFiXHU4NDFlXHU4NDFmXHU4NDIwXHU4NDIxXHU4NDIyXHU4NDIzXHU4NDI5XHU4NDJhXHU4NDJiXHU4''@;'; put 'put ''NDJjXHU4NDJkXHU4NDJlXHU4NDJmXHU4NDMwXHU4NDMyXHU4NDMzXHU4NDM0XHU4NDM1XHU4NDM2XHU4NDM3XHU4NDM5XHU4NDNhXHU4NDNiXHU4NDNlXHU4NDNmXHU4NDQwXHU4NDQxXHU4NDQyXHU4NDQzXHU4NDQ0XHU4NDQ1XHU4NDQ3XHU4NDQ4XHU4NDQ5XHVmZmZkXHU4NDRhXHU4NDRi''@;'; put 'put ''XHU4NDRjXHU4NDRkXHU4NDRlXHU4NDRmXHU4NDUwXHU4NDUyXHU4NDUzXHU4NDU0XHU4NDU1XHU4NDU2XHU4NDU4XHU4NDVkXHU4NDVlXHU4NDVmXHU4NDYwXHU4NDYyXHU4NDY0XHU4NDY1XHU4NDY2XHU4NDY3XHU4NDY4XHU4NDZhXHU4NDZlXHU4NDZmXHU4NDcwXHU4NDcyXHU4NDc0XHU4''@;'; put 'put ''NDc3XHU4NDc5XHU4NDdiXHU4NDdjXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3NWNhXHU2MmYzXHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3XHU3ODZlXHU5NmMw''@;'; put 'put ''XHU4OGQ5XHU3ZmE0XHU3MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5XHU3MGVkXHU1OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3ZWFiXHU2MjU0XHU0''@;'; put 'put ''ZWNkXHU2NWU1XHU2MjBlXHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4MzM5XHU4ODE1XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZmXHU5NjJlXHU4NTRh''@;'; put 'put ''XHU3NDVlXHU5NTEwXHU5NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2MxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjAwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDBdW21dLmNoYXJDb2RlQXQoMCkm''@;'; put 'put ''JihvZVt4WzIwMF1bbV1dPTUxMjAwK20sUls1MTIwMCttXT14WzIwMF1bbV0pO2Zvcih4WzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODQ3ZFx1ODQ3ZVx1ODQ3Zlx1ODQ4MFx1ODQ4MVx1ODQ4M1x1ODQ4NFx1ODQ4NVx1ODQ4''@;'; put 'put ''Nlx1ODQ4YVx1ODQ4ZFx1ODQ4Zlx1ODQ5MFx1ODQ5MVx1ODQ5Mlx1ODQ5M1x1ODQ5NFx1ODQ5NVx1ODQ5Nlx1ODQ5OFx1ODQ5YVx1ODQ5Ylx1ODQ5ZFx1ODQ5ZVx1ODQ5Zlx1ODRhMFx1ODRhMlx1ODRhM1x1ODRhNFx1ODRhNVx1ODRhNlx1ODRhN1x1ODRhOFx1ODRhOVx1ODRhYVx1ODRhYlx1''@;'; put 'put ''ODRhY1x1ODRhZFx1ODRhZVx1ODRiMFx1ODRiMVx1ODRiM1x1ODRiNVx1ODRiNlx1ODRiN1x1ODRiYlx1ODRiY1x1ODRiZVx1ODRjMFx1ODRjMlx1ODRjM1x1ODRjNVx1ODRjNlx1ODRjN1x1ODRjOFx1ODRjYlx1ODRjY1x1ODRjZVx1ODRjZlx1ODRkMlx1ODRkNFx1ODRkNVx1ODRkN1x1ZmZm''@;'; put 'put ''ZFx1ODRkOFx1ODRkOVx1ODRkYVx1ODRkYlx1ODRkY1x1ODRkZVx1ODRlMVx1ODRlMlx1ODRlNFx1ODRlN1x1ODRlOFx1ODRlOVx1ODRlYVx1ODRlYlx1ODRlZFx1ODRlZVx1ODRlZlx1ODRmMVx1ODRmMlx1ODRmM1x1ODRmNFx1ODRmNVx1ODRmNlx1ODRmN1x1ODRmOFx1ODRmOVx1ODRmYVx1''@;'; put 'put ''ODRmYlx1ODRmZFx1ODRmZVx1ODUwMFx1ODUwMVx1ODUwMlx1NGYxZVx1NjU2M1x1Njg1MVx1NTVkM1x1NGUyN1x1NjQxNFx1OWE5YVx1NjI2Ylx1NWFjMlx1NzQ1Zlx1ODI3Mlx1NmRhOVx1NjhlZVx1NTBlN1x1ODM4ZVx1NzgwMlx1Njc0MFx1NTIzOVx1NmM5OVx1N2ViMVx1NTBiYlx1NTU2''@;'; put 'put ''NVx1NzE1ZVx1N2I1Ylx1NjY1Mlx1NzNjYVx1ODJlYlx1Njc0OVx1NWM3MVx1NTIyMFx1NzE3ZFx1ODg2Ylx1OTVlYVx1OTY1NVx1NjRjNVx1OGQ2MVx1ODFiM1x1NTU4NFx1NmM1NVx1NjI0N1x1N2YyZVx1NTg5Mlx1NGYyNFx1NTU0Nlx1OGQ0Zlx1NjY0Y1x1NGUwYVx1NWMxYVx1ODhmM1x1''@;'; put 'put ''NjhhMlx1NjM0ZVx1N2EwZFx1NzBlN1x1ODI4ZFx1NTJmYVx1OTdmNlx1NWMxMVx1NTRlOFx1OTBiNVx1N2VjZFx1NTk2Mlx1OGQ0YVx1ODZjN1x1ODIwY1x1ODIwZFx1OGQ2Nlx1NjQ0NFx1NWMwNFx1NjE1MVx1NmQ4OVx1NzkzZVx1OGJiZVx1NzgzN1x1NzUzM1x1NTQ3Ylx1NGYzOFx1OGVh''@;'; put 'put ''Ylx1NmRmMVx1NWEyMFx1N2VjNVx1Nzk1ZVx1NmM4OFx1NWJhMVx1NWE3Nlx1NzUxYVx1ODBiZVx1NjE0ZVx1NmUxN1x1NThmMFx1NzUxZlx1NzUyNVx1NzI3Mlx1NTM0N1x1N2VmM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjAxXVttXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJiYob2VbeFsyMDFdW21dXT01MTQ1NittLFJbNTE0NTYrbV09eFsyMDFdW21dKTtmb3IoeFsyMDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1MDNcdTg1MDRcdTg1MDVcdTg1MDZcdTg1MDdcdTg1MDhcdTg1''@;'; put 'put ''MDlcdTg1MGFcdTg1MGJcdTg1MGRcdTg1MGVcdTg1MGZcdTg1MTBcdTg1MTJcdTg1MTRcdTg1MTVcdTg1MTZcdTg1MThcdTg1MTlcdTg1MWJcdTg1MWNcdTg1MWRcdTg1MWVcdTg1MjBcdTg1MjJcdTg1MjNcdTg1MjRcdTg1MjVcdTg1MjZcdTg1MjdcdTg1MjhcdTg1MjlcdTg1MmFcdTg1MmRc''@;'; put 'put ''dTg1MmVcdTg1MmZcdTg1MzBcdTg1MzFcdTg1MzJcdTg1MzNcdTg1MzRcdTg1MzVcdTg1MzZcdTg1M2VcdTg1M2ZcdTg1NDBcdTg1NDFcdTg1NDJcdTg1NDRcdTg1NDVcdTg1NDZcdTg1NDdcdTg1NGJcdTg1NGNcdTg1NGRcdTg1NGVcdTg1NGZcdTg1NTBcdTg1NTFcdTg1NTJcdTg1NTNcdTg1''@;'; put 'put ''NTRcdTg1NTVcdWZmZmRcdTg1NTdcdTg1NThcdTg1NWFcdTg1NWJcdTg1NWNcdTg1NWRcdTg1NWZcdTg1NjBcdTg1NjFcdTg1NjJcdTg1NjNcdTg1NjVcdTg1NjZcdTg1NjdcdTg1NjlcdTg1NmFcdTg1NmJcdTg1NmNcdTg1NmRcdTg1NmVcdTg1NmZcdTg1NzBcdTg1NzFcdTg1NzNcdTg1NzVc''@;'; put 'put ''dTg1NzZcdTg1NzdcdTg1NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcyZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2''@;'; put 'put ''ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRcdThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZc''@;'; put 'put ''dTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTVi''@;'; put 'put ''NzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZcdTU4ODVcdTVlYjZcdTY1NzBcdTZmMzFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDJdLmxlbmd0aDsrK20pNjU1MzMh''@;'; put 'put ''PT14WzIwMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjAyXVttXV09NTE3MTIrbSxSWzUxNzEyK21dPXhbMjAyXVttXSk7Zm9yKHhbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTgyXHU4NTgzXHU4NTg2XHU4NTg4XHU4''@;'; put 'put ''NTg5XHU4NThhXHU4NThiXHU4NThjXHU4NThkXHU4NThlXHU4NTkwXHU4NTkxXHU4NTkyXHU4NTkzXHU4NTk0XHU4NTk1XHU4NTk2XHU4NTk3XHU4NTk4XHU4NTk5XHU4NTlhXHU4NTlkXHU4NTllXHU4NTlmXHU4NWEwXHU4NWExXHU4NWEyXHU4NWEzXHU4NWE1XHU4NWE2XHU4NWE3XHU4NWE5''@;'; put 'put ''XHU4NWFiXHU4NWFjXHU4NWFkXHU4NWIxXHU4NWIyXHU4NWIzXHU4NWI0XHU4NWI1XHU4NWI2XHU4NWI4XHU4NWJhXHU4NWJiXHU4NWJjXHU4NWJkXHU4NWJlXHU4NWJmXHU4NWMwXHU4NWMyXHU4NWMzXHU4NWM0XHU4NWM1XHU4NWM2XHU4NWM3XHU4NWM4XHU4NWNhXHU4NWNiXHU4NWNjXHU4''@;'; put 'put ''NWNkXHU4NWNlXHU4NWQxXHU4NWQyXHVmZmZkXHU4NWQ0XHU4NWQ2XHU4NWQ3XHU4NWQ4XHU4NWQ5XHU4NWRhXHU4NWRiXHU4NWRkXHU4NWRlXHU4NWRmXHU4NWUwXHU4NWUxXHU4NWUyXHU4NWUzXHU4NWU1XHU4NWU2XHU4NWU3XHU4NWU4XHU4NWVhXHU4NWViXHU4NWVjXHU4NWVkXHU4NWVl''@;'; put 'put ''XHU4NWVmXHU4NWYwXHU4NWYxXHU4NWYyXHU4NWYzXHU4NWY0XHU4NWY1XHU4NWY2XHU4NWY3XHU4NWY4XHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcwXHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1M2NjXHU3MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3YTBlXHU1NDJlXHU3''@;'; put 'put ''N2FjXHU5ODdhXHU4MjFjXHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNjXHU5OTcyXHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAyXHU5ODgyXHU5MDAx''@;'; put 'put ''XHU1YjhiXHU4YmJjXHU4YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUxXHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4NDljXHU3Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3ZWU1XHU5YWQzXHU3''@;'; put 'put ''ODhlXHU1YzgxXHU3YTU3XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5XHU1ODU0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjAzXS5sZW5n''@;'; put 'put ''dGg7KyttKTY1NTMzIT09eFsyMDNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwM11bbV1dPTUxOTY4K20sUls1MTk2OCttXT14WzIwM11bbV0pO2Zvcih4WzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODVmOVx1ODVmYVx1''@;'; put 'put ''ODVmY1x1ODVmZFx1ODVmZVx1ODYwMFx1ODYwMVx1ODYwMlx1ODYwM1x1ODYwNFx1ODYwNlx1ODYwN1x1ODYwOFx1ODYwOVx1ODYwYVx1ODYwYlx1ODYwY1x1ODYwZFx1ODYwZVx1ODYwZlx1ODYxMFx1ODYxMlx1ODYxM1x1ODYxNFx1ODYxNVx1ODYxN1x1ODYxOFx1ODYxOVx1ODYxYVx1ODYx''@;'; put 'put ''Ylx1ODYxY1x1ODYxZFx1ODYxZVx1ODYxZlx1ODYyMFx1ODYyMVx1ODYyMlx1ODYyM1x1ODYyNFx1ODYyNVx1ODYyNlx1ODYyOFx1ODYyYVx1ODYyYlx1ODYyY1x1ODYyZFx1ODYyZVx1ODYyZlx1ODYzMFx1ODYzMVx1ODYzMlx1ODYzM1x1ODYzNFx1ODYzNVx1ODYzNlx1ODYzN1x1ODYzOVx1''@;'; put 'put ''ODYzYVx1ODYzYlx1ODYzZFx1ODYzZVx1ODYzZlx1ODY0MFx1ZmZmZFx1ODY0MVx1ODY0Mlx1ODY0M1x1ODY0NFx1ODY0NVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODY0OVx1ODY0YVx1ODY0Ylx1ODY0Y1x1ODY1Mlx1ODY1M1x1ODY1NVx1ODY1Nlx1ODY1N1x1ODY1OFx1ODY1OVx1ODY1Ylx1ODY1''@;'; put 'put ''Y1x1ODY1ZFx1ODY1Zlx1ODY2MFx1ODY2MVx1ODY2M1x1ODY2NFx1ODY2NVx1ODY2Nlx1ODY2N1x1ODY2OFx1ODY2OVx1ODY2YVx1NzM2ZFx1NjMxZVx1OGU0Ylx1OGUwZlx1ODBjZVx1ODJkNFx1NjJhY1x1NTNmMFx1NmNmMFx1OTE1ZVx1NTkyYVx1NjAwMVx1NmM3MFx1NTc0ZFx1NjQ0YVx1''@;'; put 'put ''OGQyYVx1NzYyYlx1NmVlOVx1NTc1Ylx1NmE4MFx1NzVmMFx1NmY2ZFx1OGMyZFx1OGMwOFx1NTc2Nlx1NmJlZlx1ODg5Mlx1NzhiM1x1NjNhMlx1NTNmOVx1NzBhZFx1NmM2NFx1NTg1OFx1NjQyYVx1NTgwMlx1NjhlMFx1ODE5Ylx1NTUxMFx1N2NkNlx1NTAxOFx1OGViYVx1NmRjY1x1OGQ5''@;'; put 'put ''Zlx1NzBlYlx1NjM4Zlx1NmQ5Ylx1NmVkNFx1N2VlNlx1ODQwNFx1Njg0M1x1OTAwM1x1NmRkOFx1OTY3Nlx1OGJhOFx1NTk1N1x1NzI3OVx1ODVlNFx1ODE3ZVx1NzViY1x1OGE4YVx1NjhhZlx1NTI1NFx1OGUyMlx1OTUxMVx1NjNkMFx1OTg5OFx1OGU0NFx1NTU3Y1x1NGY1M1x1NjZmZlx1''@;'; put 'put ''NTY4Zlx1NjBkNVx1NmQ5NVx1NTI0M1x1NWM0OVx1NTkyOVx1NmRmYlx1NTg2Ylx1NzUzMFx1NzUxY1x1NjA2Y1x1ODIxNFx1ODE0Nlx1NjMxMVx1Njc2MVx1OGZlMlx1NzczYVx1OGRmM1x1OGQzNFx1OTRjMVx1NWUxNlx1NTM4NVx1NTQyY1x1NzBjM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDtt''@;'; put 'put ''IT14WzIwNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDRdW21dXT01MjIyNCttLFJbNTIyMjQrbV09eFsyMDRdW21dKTtmb3IoeFsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTg2NmRcdTg2NmZcdTg2NzBcdTg2NzJcdTg2NzNcdTg2NzRcdTg2NzVcdTg2NzZcdTg2NzdcdTg2NzhcdTg2ODNcdTg2ODRcdTg2ODVcdTg2ODZcdTg2ODdcdTg2ODhcdTg2ODlcdTg2OGVcdTg2OGZcdTg2OTBcdTg2OTFcdTg2OTJcdTg2OTRcdTg2OTZcdTg2OTdcdTg2OThcdTg2OTlcdTg2''@;'; put 'put ''OWFcdTg2OWJcdTg2OWVcdTg2OWZcdTg2YTBcdTg2YTFcdTg2YTJcdTg2YTVcdTg2YTZcdTg2YWJcdTg2YWRcdTg2YWVcdTg2YjJcdTg2YjNcdTg2YjdcdTg2YjhcdTg2YjlcdTg2YmJcdTg2YmNcdTg2YmRcdTg2YmVcdTg2YmZcdTg2YzFcdTg2YzJcdTg2YzNcdTg2YzVcdTg2YzhcdTg2Y2Nc''@;'; put 'put ''dTg2Y2RcdTg2ZDJcdTg2ZDNcdTg2ZDVcdTg2ZDZcdTg2ZDdcdTg2ZGFcdTg2ZGNcdWZmZmRcdTg2ZGRcdTg2ZTBcdTg2ZTFcdTg2ZTJcdTg2ZTNcdTg2ZTVcdTg2ZTZcdTg2ZTdcdTg2ZThcdTg2ZWFcdTg2ZWJcdTg2ZWNcdTg2ZWZcdTg2ZjVcdTg2ZjZcdTg2ZjdcdTg2ZmFcdTg2ZmJcdTg2''@;'; put 'put ''ZmNcdTg2ZmRcdTg2ZmZcdTg3MDFcdTg3MDRcdTg3MDVcdTg3MDZcdTg3MGJcdTg3MGNcdTg3MGVcdTg3MGZcdTg3MTBcdTg3MTFcdTg3MTRcdTg3MTZcdTZjNDBcdTVlZjdcdTUwNWNcdTRlYWRcdTVlYWRcdTYzM2FcdTgyNDdcdTkwMWFcdTY4NTBcdTkxNmVcdTc3YjNcdTU0MGNcdTk0ZGNc''@;'; put 'put ''dTVmNjRcdTdhZTVcdTY4NzZcdTYzNDVcdTdiNTJcdTdlZGZcdTc1ZGJcdTUwNzdcdTYyOTVcdTU5MzRcdTkwMGZcdTUxZjhcdTc5YzNcdTdhODFcdTU2ZmVcdTVmOTJcdTkwMTRcdTZkODJcdTVjNjBcdTU3MWZcdTU0MTBcdTUxNTRcdTZlNGRcdTU2ZTJcdTYzYThcdTk4OTNcdTgxN2ZcdTg3''@;'; put 'put ''MTVcdTg5MmFcdTkwMDBcdTU0MWVcdTVjNmZcdTgxYzBcdTYyZDZcdTYyNThcdTgxMzFcdTllMzVcdTk2NDBcdTlhNmVcdTlhN2NcdTY5MmRcdTU5YTVcdTYyZDNcdTU1M2VcdTYzMTZcdTU0YzdcdTg2ZDlcdTZkM2NcdTVhMDNcdTc0ZTZcdTg4OWNcdTZiNmFcdTU5MTZcdThjNGNcdTVmMmZc''@;'; put 'put ''dTZlN2VcdTczYTlcdTk4N2RcdTRlMzhcdTcwZjdcdTViOGNcdTc4OTdcdTYzM2RcdTY2NWFcdTc2OTZcdTYwY2JcdTViOWJcdTVhNDlcdTRlMDdcdTgxNTVcdTZjNmFcdTczOGJcdTRlYTFcdTY3ODlcdTdmNTFcdTVmODBcdTY1ZmFcdTY3MWJcdTVmZDhcdTU5ODRcdTVhMDFcdWZmZmQiLnNw''@;'; put 'put ''bGl0KCIiKSxtPTA7bSE9eFsyMDVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA1XVttXV09NTI0ODArbSxSWzUyNDgwK21dPXhbMjA1XVttXSk7Zm9yKHhbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU4NzE5XHU4NzFiXHU4NzFkXHU4NzFmXHU4NzIwXHU4NzI0XHU4NzI2XHU4NzI3XHU4NzI4XHU4NzJhXHU4NzJiXHU4NzJjXHU4NzJkXHU4NzJmXHU4NzMwXHU4NzMyXHU4NzMzXHU4NzM1XHU4NzM2XHU4NzM4XHU4NzM5XHU4NzNhXHU4NzNjXHU4NzNkXHU4NzQwXHU4''@;'; put 'put ''NzQxXHU4NzQyXHU4NzQzXHU4NzQ0XHU4NzQ1XHU4NzQ2XHU4NzRhXHU4NzRiXHU4NzRkXHU4NzRmXHU4NzUwXHU4NzUxXHU4NzUyXHU4NzU0XHU4NzU1XHU4NzU2XHU4NzU4XHU4NzVhXHU4NzViXHU4NzVjXHU4NzVkXHU4NzVlXHU4NzVmXHU4NzYxXHU4NzYyXHU4NzY2XHU4NzY3XHU4NzY4''@;'; put 'put ''XHU4NzY5XHU4NzZhXHU4NzZiXHU4NzZjXHU4NzZkXHU4NzZmXHU4NzcxXHU4NzcyXHU4NzczXHU4Nzc1XHVmZmZkXHU4Nzc3XHU4Nzc4XHU4Nzc5XHU4NzdhXHU4NzdmXHU4NzgwXHU4NzgxXHU4Nzg0XHU4Nzg2XHU4Nzg3XHU4Nzg5XHU4NzhhXHU4NzhjXHU4NzhlXHU4NzhmXHU4NzkwXHU4''@;'; put 'put ''NzkxXHU4NzkyXHU4Nzk0XHU4Nzk1XHU4Nzk2XHU4Nzk4XHU4Nzk5XHU4NzlhXHU4NzliXHU4NzljXHU4NzlkXHU4NzllXHU4N2EwXHU4N2ExXHU4N2EyXHU4N2EzXHU4N2E0XHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4ZmRkXHU2ODQ1XHU1NmY0XHU1NTJmXHU2MGRmXHU0ZTNhXHU2ZjRk''@;'; put 'put ''XHU3ZWY0XHU4MmM3XHU4NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRmXHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZiXHU3NjFmXHU2ZTI5XHU4NjhhXHU2NTg3XHU5NWZiXHU3ZWI5XHU1''@;'; put 'put ''NDNiXHU3YTMzXHU3ZDBhXHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4YmVjXHU1YzRiXHU2NWUwXHU4MjljXHU2OGE3XHU1NDNlXHU1NDM0''@;'; put 'put ''XHU2YmNiXHU2YjY2XHU0ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmExXHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdmXHU3ODUyXHU3N2ZkXHU2NjcwXHU1NjNiXHU1NDM4XHU5NTIxXHU3''@;'; put 'put ''MjdhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwNl1bbV1dPTUyNzM2K20sUls1MjczNittXT14WzIwNl1bbV0pO2Zvcih4WzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODdhNVx1ODdhNlx1ODdhN1x1ODdhOVx1ODdhYVx1ODdhZVx1ODdiMFx1ODdiMVx1ODdiMlx1ODdiNFx1ODdiNlx1ODdiN1x1ODdiOFx1ODdiOVx1ODdiYlx1ODdiY1x1ODdiZVx1ODdiZlx1ODdjMVx1ODdjMlx1ODdjM1x1ODdjNFx1ODdjNVx1''@;'; put 'put ''ODdjN1x1ODdjOFx1ODdjOVx1ODdjY1x1ODdjZFx1ODdjZVx1ODdjZlx1ODdkMFx1ODdkNFx1ODdkNVx1ODdkNlx1ODdkN1x1ODdkOFx1ODdkOVx1ODdkYVx1ODdkY1x1ODdkZFx1ODdkZVx1ODdkZlx1ODdlMVx1ODdlMlx1ODdlM1x1ODdlNFx1ODdlNlx1ODdlN1x1ODdlOFx1ODdlOVx1ODdl''@;'; put 'put ''Ylx1ODdlY1x1ODdlZFx1ODdlZlx1ODdmMFx1ODdmMVx1ODdmMlx1ODdmM1x1ODdmNFx1ODdmNVx1ODdmNlx1ODdmN1x1ODdmOFx1ZmZmZFx1ODdmYVx1ODdmYlx1ODdmY1x1ODdmZFx1ODdmZlx1ODgwMFx1ODgwMVx1ODgwMlx1ODgwNFx1ODgwNVx1ODgwNlx1ODgwN1x1ODgwOFx1ODgwOVx1''@;'; put 'put ''ODgwYlx1ODgwY1x1ODgwZFx1ODgwZVx1ODgwZlx1ODgxMFx1ODgxMVx1ODgxMlx1ODgxNFx1ODgxN1x1ODgxOFx1ODgxOVx1ODgxYVx1ODgxY1x1ODgxZFx1ODgxZVx1ODgxZlx1ODgyMFx1ODgyM1x1N2EwMFx1NjA2Zlx1NWUwY1x1NjA4OVx1ODE5ZFx1NTkxNVx1NjBkY1x1NzE4NFx1NzBl''@;'; put 'put ''Zlx1NmVhYVx1NmM1MFx1NzI4MFx1NmE4NFx1ODhhZFx1NWUyZFx1NGU2MFx1NWFiM1x1NTU5Y1x1OTRlM1x1NmQxN1x1N2NmYlx1OTY5OVx1NjIwZlx1N2VjNlx1Nzc4ZVx1ODY3ZVx1NTMyM1x1OTcxZVx1OGY5Nlx1NjY4N1x1NWNlMVx1NGZhMFx1NzJlZFx1NGUwYlx1NTNhNlx1NTkwZlx1''@;'; put 'put ''NTQxM1x1NjM4MFx1OTUyOFx1NTE0OFx1NGVkOVx1OWM5Y1x1N2VhNFx1NTRiOFx1OGQyNFx1ODg1NFx1ODIzN1x1OTVmMlx1NmQ4ZVx1NWYyNlx1NWFjY1x1NjYzZVx1OTY2OVx1NzNiMFx1NzMyZVx1NTNiZlx1ODE3YVx1OTk4NVx1N2ZhMVx1NWJhYVx1OTY3N1x1OTY1MFx1N2ViZlx1NzZm''@;'; put 'put ''OFx1NTNhMlx1OTU3Nlx1OTk5OVx1N2JiMVx1ODk0NFx1NmU1OFx1NGU2MVx1N2ZkNFx1Nzk2NVx1OGJlNlx1NjBmM1x1NTRjZFx1NGVhYlx1OTg3OVx1NWRmN1x1NmE2MVx1NTBjZlx1NTQxMVx1OGM2MVx1ODQyN1x1Nzg1ZFx1OTcwNFx1NTI0YVx1NTRlZVx1NTZhM1x1OTUwMFx1NmQ4OFx1''@;'; put 'put ''NWJiNVx1NmRjNlx1NjY1M1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDddW21dXT01Mjk5MittLFJbNTI5OTIrbV09eFsyMDddW21dKTtmb3IoeFsyMDhdPSJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg4MjRcdTg4MjVcdTg4MjZcdTg4MjdcdTg4MjhcdTg4MjlcdTg4MmFcdTg4MmJcdTg4MmNcdTg4MmRcdTg4MmVcdTg4MmZcdTg4MzBcdTg4MzFcdTg4MzNcdTg4MzRcdTg4MzVcdTg4MzZcdTg4MzdcdTg4MzhcdTg4M2Fc''@;'; put 'put ''dTg4M2JcdTg4M2RcdTg4M2VcdTg4M2ZcdTg4NDFcdTg4NDJcdTg4NDNcdTg4NDZcdTg4NDdcdTg4NDhcdTg4NDlcdTg4NGFcdTg4NGJcdTg4NGVcdTg4NGZcdTg4NTBcdTg4NTFcdTg4NTJcdTg4NTNcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWFcdTg4NWJcdTg4NWNcdTg4NWRcdTg4NWVcdTg4''@;'; put 'put ''NWZcdTg4NjBcdTg4NjZcdTg4NjdcdTg4NmFcdTg4NmRcdTg4NmZcdTg4NzFcdTg4NzNcdTg4NzRcdTg4NzVcdTg4NzZcdTg4NzhcdTg4NzlcdTg4N2FcdWZmZmRcdTg4N2JcdTg4N2NcdTg4ODBcdTg4ODNcdTg4ODZcdTg4ODdcdTg4ODlcdTg4OGFcdTg4OGNcdTg4OGVcdTg4OGZcdTg4OTBc''@;'; put 'put ''dTg4OTFcdTg4OTNcdTg4OTRcdTg4OTVcdTg4OTdcdTg4OThcdTg4OTlcdTg4OWFcdTg4OWJcdTg4OWRcdTg4OWVcdTg4OWZcdTg4YTBcdTg4YTFcdTg4YTNcdTg4YTVcdTg4YTZcdTg4YTdcdTg4YThcdTg4YTlcdTg4YWFcdTVjMGZcdTViNWRcdTY4MjFcdTgwOTZcdTU1NzhcdTdiMTFcdTY1''@;'; put 'put ''NDhcdTY5NTRcdTRlOWJcdTZiNDdcdTg3NGVcdTk3OGJcdTUzNGZcdTYzMWZcdTY0M2FcdTkwYWFcdTY1OWNcdTgwYzFcdThjMTBcdTUxOTlcdTY4YjBcdTUzNzhcdTg3ZjlcdTYxYzhcdTZjYzRcdTZjZmJcdThjMjJcdTVjNTFcdTg1YWFcdTgyYWZcdTk1MGNcdTZiMjNcdThmOWJcdTY1YjBc''@;'; put 'put ''dTVmZmJcdTVmYzNcdTRmZTFcdTg4NDVcdTY2MWZcdTgxNjVcdTczMjlcdTYwZmFcdTUxNzRcdTUyMTFcdTU3OGJcdTVmNjJcdTkwYTJcdTg4NGNcdTkxOTJcdTVlNzhcdTY3NGZcdTYwMjdcdTU5ZDNcdTUxNDRcdTUxZjZcdTgwZjhcdTUzMDhcdTZjNzlcdTk2YzRcdTcxOGFcdTRmMTFcdTRm''@;'; put 'put ''ZWVcdTdmOWVcdTY3M2RcdTU1YzVcdTk1MDhcdTc5YzBcdTg4OTZcdTdlZTNcdTU4OWZcdTYyMGNcdTk3MDBcdTg2NWFcdTU2MThcdTk4N2JcdTVmOTBcdThiYjhcdTg0YzRcdTkxNTdcdTUzZDlcdTY1ZWRcdTVlOGZcdTc1NWNcdTYwNjRcdTdkNmVcdTVhN2ZcdTdlZWFcdTdlZWRcdThmNjlc''@;'; put 'put ''dTU1YTdcdTViYTNcdTYwYWNcdTY1Y2JcdTczODRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA4XVttXV09NTMyNDgrbSxSWzUzMjQ4K21dPXhbMjA4XVttXSk7Zm9yKHhbMjA5XT0iXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4OGFjXHU4OGFlXHU4OGFmXHU4OGIwXHU4OGIyXHU4OGIzXHU4OGI0XHU4OGI1XHU4OGI2XHU4OGI4XHU4OGI5XHU4OGJhXHU4OGJiXHU4OGJkXHU4OGJlXHU4OGJmXHU4OGMwXHU4OGMzXHU4OGM0''@;'; put 'put ''XHU4OGM3XHU4OGM4XHU4OGNhXHU4OGNiXHU4OGNjXHU4OGNkXHU4OGNmXHU4OGQwXHU4OGQxXHU4OGQzXHU4OGQ2XHU4OGQ3XHU4OGRhXHU4OGRiXHU4OGRjXHU4OGRkXHU4OGRlXHU4OGUwXHU4OGUxXHU4OGU2XHU4OGU3XHU4OGU5XHU4OGVhXHU4OGViXHU4OGVjXHU4OGVkXHU4OGVlXHU4''@;'; put 'put ''OGVmXHU4OGYyXHU4OGY1XHU4OGY2XHU4OGY3XHU4OGZhXHU4OGZiXHU4OGZkXHU4OGZmXHU4OTAwXHU4OTAxXHU4OTAzXHU4OTA0XHU4OTA1XHU4OTA2XHU4OTA3XHU4OTA4XHVmZmZkXHU4OTA5XHU4OTBiXHU4OTBjXHU4OTBkXHU4OTBlXHU4OTBmXHU4OTExXHU4OTE0XHU4OTE1XHU4OTE2''@;'; put 'put ''XHU4OTE3XHU4OTE4XHU4OTFjXHU4OTFkXHU4OTFlXHU4OTFmXHU4OTIwXHU4OTIyXHU4OTIzXHU4OTI0XHU4OTI2XHU4OTI3XHU4OTI4XHU4OTI5XHU4OTJjXHU4OTJkXHU4OTJlXHU4OTJmXHU4OTMxXHU4OTMyXHU4OTMzXHU4OTM1XHU4OTM3XHU5MDA5XHU3NjYzXHU3NzI5XHU3ZWRhXHU5''@;'; put 'put ''Nzc0XHU4NTliXHU1YjY2XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZmXHU1ZGUxXHU2Yjg5XHU2YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJiXHU4MmJkXHU3MjU5''@;'; put 'put ''XHU4NjljXHU1ZDE2XHU4ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2ZGY5XHU3NmQwXHU0ZTI1XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2M2E5XHU3NzNjXHU4''@;'; put 'put ''ODRkXHU2ZjE0XHU4MjczXHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFhXHU5YThjXHU2YjgzXHU1OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3XHU0ZWYwXHU3NWQy''@;'; put 'put ''XHU1MTdiXHU2ODM3XHU2ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwOV1bbV1dPTUzNTA0K20sUls1MzUwNCttXT14WzIwOV1bbV0pO2Zv''@;'; put 'put ''cih4WzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODkzOFx1ODkzOVx1ODkzYVx1ODkzYlx1ODkzY1x1ODkzZFx1ODkzZVx1ODkzZlx1ODk0MFx1ODk0Mlx1ODk0M1x1ODk0NVx1ODk0Nlx1ODk0N1x1ODk0OFx1ODk0OVx1ODk0''@;'; put 'put ''YVx1ODk0Ylx1ODk0Y1x1ODk0ZFx1ODk0ZVx1ODk0Zlx1ODk1MFx1ODk1MVx1ODk1Mlx1ODk1M1x1ODk1NFx1ODk1NVx1ODk1Nlx1ODk1N1x1ODk1OFx1ODk1OVx1ODk1YVx1ODk1Ylx1ODk1Y1x1ODk1ZFx1ODk2MFx1ODk2MVx1ODk2Mlx1ODk2M1x1ODk2NFx1ODk2NVx1ODk2N1x1ODk2OFx1''@;'; put 'put ''ODk2OVx1ODk2YVx1ODk2Ylx1ODk2Y1x1ODk2ZFx1ODk2ZVx1ODk2Zlx1ODk3MFx1ODk3MVx1ODk3Mlx1ODk3M1x1ODk3NFx1ODk3NVx1ODk3Nlx1ODk3N1x1ODk3OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ZmZmZFx1ODk3ZFx1ODk3ZVx1ODk4MFx1ODk4Mlx1ODk4NFx1ODk4NVx1ODk4N1x1ODk4''@;'; put 'put ''OFx1ODk4OVx1ODk4YVx1ODk4Ylx1ODk4Y1x1ODk4ZFx1ODk4ZVx1ODk4Zlx1ODk5MFx1ODk5MVx1ODk5Mlx1ODk5M1x1ODk5NFx1ODk5NVx1ODk5Nlx1ODk5N1x1ODk5OFx1ODk5OVx1ODk5YVx1ODk5Ylx1ODk5Y1x1ODk5ZFx1ODk5ZVx1ODk5Zlx1ODlhMFx1ODlhMVx1NjQ0N1x1NWMyN1x1''@;'; put 'put ''OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNk''@;'; put 'put ''Nlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1NzlmYlx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1''@;'; put 'put ''NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYz''@;'; put 'put ''NFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYxNVx1OTY5MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTBdW21dXT01Mzc2MCttLFJbNTM3NjArbV09''@;'; put 'put ''eFsyMTBdW21dKTtmb3IoeFsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5YTJcdTg5YTNcdTg5YTRcdTg5YTVcdTg5YTZcdTg5YTdcdTg5YThcdTg5YTlcdTg5YWFcdTg5YWJcdTg5YWNcdTg5YWRcdTg5YWVcdTg5YWZcdTg5''@;'; put 'put ''YjBcdTg5YjFcdTg5YjJcdTg5YjNcdTg5YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YjhcdTg5YjlcdTg5YmFcdTg5YmJcdTg5YmNcdTg5YmRcdTg5YmVcdTg5YmZcdTg5YzBcdTg5YzNcdTg5Y2RcdTg5ZDNcdTg5ZDRcdTg5ZDVcdTg5ZDdcdTg5ZDhcdTg5ZDlcdTg5ZGJcdTg5ZGRcdTg5ZGZc''@;'; put 'put ''dTg5ZTBcdTg5ZTFcdTg5ZTJcdTg5ZTRcdTg5ZTdcdTg5ZThcdTg5ZTlcdTg5ZWFcdTg5ZWNcdTg5ZWRcdTg5ZWVcdTg5ZjBcdTg5ZjFcdTg5ZjJcdTg5ZjRcdTg5ZjVcdTg5ZjZcdTg5ZjdcdTg5ZjhcdTg5ZjlcdTg5ZmFcdWZmZmRcdTg5ZmJcdTg5ZmNcdTg5ZmRcdTg5ZmVcdTg5ZmZcdThh''@;'; put 'put ''MDFcdThhMDJcdThhMDNcdThhMDRcdThhMDVcdThhMDZcdThhMDhcdThhMDlcdThhMGFcdThhMGJcdThhMGNcdThhMGRcdThhMGVcdThhMGZcdThhMTBcdThhMTFcdThhMTJcdThhMTNcdThhMTRcdThhMTVcdThhMTZcdThhMTdcdThhMThcdThhMTlcdThhMWFcdThhMWJcdThhMWNcdThhMWRc''@;'; put 'put ''dTUzNzBcdTgyZjFcdTZhMzFcdTVhNzRcdTllNzBcdTVlOTRcdTdmMjhcdTgzYjlcdTg0MjRcdTg0MjVcdTgzNjdcdTg3NDdcdThmY2VcdThkNjJcdTc2YzhcdTVmNzFcdTk4OTZcdTc4NmNcdTY2MjBcdTU0ZGZcdTYyZTVcdTRmNjNcdTgxYzNcdTc1YzhcdTVlYjhcdTk2Y2RcdThlMGFcdTg2''@;'; put 'put ''ZjlcdTU0OGZcdTZjZjNcdTZkOGNcdTZjMzhcdTYwN2ZcdTUyYzdcdTc1MjhcdTVlN2RcdTRmMThcdTYwYTBcdTVmZTdcdTVjMjRcdTc1MzFcdTkwYWVcdTk0YzBcdTcyYjlcdTZjYjlcdTZlMzhcdTkxNDlcdTY3MDlcdTUzY2JcdTUzZjNcdTRmNTFcdTkxYzlcdThiZjFcdTUzYzhcdTVlN2Nc''@;'; put 'put ''dThmYzJcdTZkZTRcdTRlOGVcdTc2YzJcdTY5ODZcdTg2NWVcdTYxMWFcdTgyMDZcdTRmNTlcdTRmZGVcdTkwM2VcdTljN2NcdTYxMDlcdTZlMWRcdTZlMTRcdTk2ODVcdTRlODhcdTVhMzFcdTk2ZThcdTRlMGVcdTVjN2ZcdTc5YjlcdTViODdcdThiZWRcdTdmYmRcdTczODlcdTU3ZGZcdTgy''@;'; put 'put ''OGJcdTkwYzFcdTU0MDFcdTkwNDdcdTU1YmJcdTVjZWFcdTVmYTFcdTYxMDhcdTZiMzJcdTcyZjFcdTgwYjJcdThhODlcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjExXVttXV09NTQwMTYr''@;'; put 'put ''bSxSWzU0MDE2K21dPXhbMjExXVttXSk7Zm9yKHhbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YTFlXHU4YTFmXHU4YTIwXHU4YTIxXHU4YTIyXHU4YTIzXHU4YTI0XHU4YTI1XHU4YTI2XHU4YTI3XHU4YTI4XHU4YTI5XHU4''@;'; put 'put ''YTJhXHU4YTJiXHU4YTJjXHU4YTJkXHU4YTJlXHU4YTJmXHU4YTMwXHU4YTMxXHU4YTMyXHU4YTMzXHU4YTM0XHU4YTM1XHU4YTM2XHU4YTM3XHU4YTM4XHU4YTM5XHU4YTNhXHU4YTNiXHU4YTNjXHU4YTNkXHU4YTNmXHU4YTQwXHU4YTQxXHU4YTQyXHU4YTQzXHU4YTQ0XHU4YTQ1XHU4YTQ2''@;'; put 'put ''XHU4YTQ3XHU4YTQ5XHU4YTRhXHU4YTRiXHU4YTRjXHU4YTRkXHU4YTRlXHU4YTRmXHU4YTUwXHU4YTUxXHU4YTUyXHU4YTUzXHU4YTU0XHU4YTU1XHU4YTU2XHU4YTU3XHU4YTU4XHU4YTU5XHU4YTVhXHU4YTViXHU4YTVjXHU4YTVkXHU4YTVlXHVmZmZkXHU4YTVmXHU4YTYwXHU4YTYxXHU4''@;'; put 'put ''YTYyXHU4YTYzXHU4YTY0XHU4YTY1XHU4YTY2XHU4YTY3XHU4YTY4XHU4YTY5XHU4YTZhXHU4YTZiXHU4YTZjXHU4YTZkXHU4YTZlXHU4YTZmXHU4YTcwXHU4YTcxXHU4YTcyXHU4YTczXHU4YTc0XHU4YTc1XHU4YTc2XHU4YTc3XHU4YTc4XHU4YTdhXHU4YTdiXHU4YTdjXHU4YTdkXHU4YTdl''@;'; put 'put ''XHU4YTdmXHU4YTgwXHU2ZDc0XHU1YmQzXHU4OGQ1XHU5ODg0XHU4YzZiXHU5YTZkXHU5ZTMzXHU2ZTBhXHU1MWE0XHU1MTQzXHU1N2EzXHU4ODgxXHU1MzlmXHU2M2Y0XHU4Zjk1XHU1NmVkXHU1NDU4XHU1NzA2XHU3MzNmXHU2ZTkwXHU3ZjE4XHU4ZmRjXHU4MmQxXHU2MTNmXHU2MDI4XHU5''@;'; put 'put ''NjYyXHU2NmYwXHU3ZWE2XHU4ZDhhXHU4ZGMzXHU5NGE1XHU1Y2IzXHU3Y2E0XHU2NzA4XHU2MGE2XHU5NjA1XHU4MDE4XHU0ZTkxXHU5MGU3XHU1MzAwXHU5NjY4XHU1MTQxXHU4ZmQwXHU4NTc0XHU5MTVkXHU2NjU1XHU5N2Y1XHU1YjU1XHU1MzFkXHU3ODM4XHU2NzQyXHU2ODNkXHU1NGM5''@;'; put 'put ''XHU3MDdlXHU1YmIwXHU4ZjdkXHU1MThkXHU1NzI4XHU1NGIxXHU2NTEyXHU2NjgyXHU4ZDVlXHU4ZDQzXHU4MTBmXHU4NDZjXHU5MDZkXHU3Y2RmXHU1MWZmXHU4NWZiXHU2N2EzXHU2NWU5XHU2ZmExXHU4NmE0XHU4ZTgxXHU1NjZhXHU5MDIwXHU3NjgyXHU3MDc2XHU3MWU1XHU4ZDIzXHU2''@;'; put 'put ''MmU5XHU1MjE5XHU2Y2ZkXHU4ZDNjXHU2MDBlXHU1ODllXHU2MThlXHU2NmZlXHU4ZDYwXHU2MjRlXHU1NWIzXHU2ZTIzXHU2NzJkXHU4ZjY3XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjEyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIx''@;'; put 'put ''Ml1bbV1dPTU0MjcyK20sUls1NDI3MittXT14WzIxMl1bbV0pO2Zvcih4WzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGE4MVx1OGE4Mlx1OGE4M1x1OGE4NFx1OGE4NVx1OGE4Nlx1OGE4N1x1OGE4OFx1OGE4Ylx1OGE4Y1x1''@;'; put 'put ''OGE4ZFx1OGE4ZVx1OGE4Zlx1OGE5MFx1OGE5MVx1OGE5Mlx1OGE5NFx1OGE5NVx1OGE5Nlx1OGE5N1x1OGE5OFx1OGE5OVx1OGE5YVx1OGE5Ylx1OGE5Y1x1OGE5ZFx1OGE5ZVx1OGE5Zlx1OGFhMFx1OGFhMVx1OGFhMlx1OGFhM1x1OGFhNFx1OGFhNVx1OGFhNlx1OGFhN1x1OGFhOFx1OGFh''@;'; put 'put ''OVx1OGFhYVx1OGFhYlx1OGFhY1x1OGFhZFx1OGFhZVx1OGFhZlx1OGFiMFx1OGFiMVx1OGFiMlx1OGFiM1x1OGFiNFx1OGFiNVx1OGFiNlx1OGFiN1x1OGFiOFx1OGFiOVx1OGFiYVx1OGFiYlx1OGFiY1x1OGFiZFx1OGFiZVx1OGFiZlx1OGFjMFx1OGFjMVx1OGFjMlx1ZmZmZFx1OGFjM1x1''@;'; put 'put ''OGFjNFx1OGFjNVx1OGFjNlx1OGFjN1x1OGFjOFx1OGFjOVx1OGFjYVx1OGFjYlx1OGFjY1x1OGFjZFx1OGFjZVx1OGFjZlx1OGFkMFx1OGFkMVx1OGFkMlx1OGFkM1x1OGFkNFx1OGFkNVx1OGFkNlx1OGFkN1x1OGFkOFx1OGFkOVx1OGFkYVx1OGFkYlx1OGFkY1x1OGFkZFx1OGFkZVx1OGFk''@;'; put 'put ''Zlx1OGFlMFx1OGFlMVx1OGFlMlx1OGFlM1x1OTRlMVx1OTVmOFx1NzcyOFx1NjgwNVx1NjlhOFx1NTQ4Ylx1NGU0ZFx1NzBiOFx1OGJjOFx1NjQ1OFx1NjU4Ylx1NWI4NVx1N2E4NFx1NTAzYVx1NWJlOFx1NzdiYlx1NmJlMVx1OGE3OVx1N2M5OFx1NmNiZVx1NzZjZlx1NjVhOVx1OGY5N1x1''@;'; put 'put ''NWQyZFx1NWM1NVx1ODYzOFx1NjgwOFx1NTM2MFx1NjIxOFx1N2FkOVx1NmU1Ylx1N2VmZFx1NmExZlx1N2FlMFx1NWY3MFx1NmYzM1x1NWYyMFx1NjM4Y1x1NmRhOFx1Njc1Nlx1NGUwOFx1NWUxMFx1OGQyNlx1NGVkN1x1ODBjMFx1NzYzNFx1OTY5Y1x1NjJkYlx1NjYyZFx1NjI3ZVx1NmNi''@;'; put 'put ''Y1x1OGQ3NVx1NzE2N1x1N2Y2OVx1NTE0Nlx1ODA4N1x1NTNlY1x1OTA2ZVx1NjI5OFx1NTRmMlx1ODZmMFx1OGY5OVx1ODAwNVx1OTUxN1x1ODUxN1x1OGZkOVx1NmQ1OVx1NzNjZFx1NjU5Zlx1NzcxZlx1NzUwNFx1NzgyN1x1ODFmYlx1OGQxZVx1OTQ4OFx1NGZhNlx1Njc5NVx1NzViOVx1''@;'; put 'put ''OGJjYVx1OTcwN1x1NjMyZlx1OTU0N1x1OTYzNVx1ODRiOFx1NjMyM1x1Nzc0MVx1NWY4MVx1NzJmMFx1NGU4OVx1NjAxNFx1NjU3NFx1NjJlZlx1NmI2M1x1NjUzZlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEzXVttXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYob2VbeFsyMTNdW21dXT01NDUyOCttLFJbNTQ1MjgrbV09eFsyMTNdW21dKTtmb3IoeFsyMTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTRcdThhZTVcdThhZTZcdThhZTdcdThhZThcdThhZTlcdThhZWFcdThhZWJc''@;'; put 'put ''dThhZWNcdThhZWRcdThhZWVcdThhZWZcdThhZjBcdThhZjFcdThhZjJcdThhZjNcdThhZjRcdThhZjVcdThhZjZcdThhZjdcdThhZjhcdThhZjlcdThhZmFcdThhZmJcdThhZmNcdThhZmRcdThhZmVcdThhZmZcdThiMDBcdThiMDFcdThiMDJcdThiMDNcdThiMDRcdThiMDVcdThiMDZcdThi''@;'; put 'put ''MDhcdThiMDlcdThiMGFcdThiMGJcdThiMGNcdThiMGRcdThiMGVcdThiMGZcdThiMTBcdThiMTFcdThiMTJcdThiMTNcdThiMTRcdThiMTVcdThiMTZcdThiMTdcdThiMThcdThiMTlcdThiMWFcdThiMWJcdThiMWNcdThiMWRcdThiMWVcdThiMWZcdThiMjBcdThiMjFcdThiMjJcdThiMjNc''@;'; put 'put ''dWZmZmRcdThiMjRcdThiMjVcdThiMjdcdThiMjhcdThiMjlcdThiMmFcdThiMmJcdThiMmNcdThiMmRcdThiMmVcdThiMmZcdThiMzBcdThiMzFcdThiMzJcdThiMzNcdThiMzRcdThiMzVcdThiMzZcdThiMzdcdThiMzhcdThiMzlcdThiM2FcdThiM2JcdThiM2NcdThiM2RcdThiM2VcdThi''@;'; put 'put ''M2ZcdThiNDBcdThiNDFcdThiNDJcdThiNDNcdThiNDRcdThiNDVcdTVlMjdcdTc1YzdcdTkwZDFcdThiYzFcdTgyOWRcdTY3OWRcdTY1MmZcdTU0MzFcdTg3MThcdTc3ZTVcdTgwYTJcdTgxMDJcdTZjNDFcdTRlNGJcdTdlYzdcdTgwNGNcdTc2ZjRcdTY5MGRcdTZiOTZcdTYyNjdcdTUwM2Nc''@;'; put 'put ''dTRmODRcdTU3NDBcdTYzMDdcdTZiNjJcdThkYmVcdTUzZWFcdTY1ZThcdTdlYjhcdTVmZDdcdTYzMWFcdTYzYjdcdTgxZjNcdTgxZjRcdTdmNmVcdTVlMWNcdTVjZDlcdTUyMzZcdTY2N2FcdTc5ZTlcdTdhMWFcdThkMjhcdTcwOTlcdTc1ZDRcdTZlZGVcdTZjYmJcdTdhOTJcdTRlMmRcdTc2''@;'; put 'put ''YzVcdTVmZTBcdTk0OWZcdTg4NzdcdTdlYzhcdTc5Y2RcdTgwYmZcdTkxY2RcdTRlZjJcdTRmMTdcdTgyMWZcdTU0NjhcdTVkZGVcdTZkMzJcdThiY2NcdTdjYTVcdThmNzRcdTgwOThcdTVlMWFcdTU0OTJcdTc2YjFcdTViOTlcdTY2M2NcdTlhYTRcdTczZTBcdTY4MmFcdTg2ZGJcdTY3MzFc''@;'; put 'put ''dTczMmFcdThiZjhcdThiZGJcdTkwMTBcdTdhZjlcdTcwZGJcdTcxNmVcdTYyYzRcdTc3YTlcdTU2MzFcdTRlM2JcdTg0NTdcdTY3ZjFcdTUyYTlcdTg2YzBcdThkMmVcdTk0ZjhcdTdiNTFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxNF1b''@;'; put 'put ''bV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE0XVttXV09NTQ3ODQrbSxSWzU0Nzg0K21dPXhbMjE0XVttXSk7Zm9yKHhbMjE1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjQ2XHU4YjQ3XHU4YjQ4XHU4YjQ5XHU4YjRhXHU4YjRi''@;'; put 'put ''XHU4YjRjXHU4YjRkXHU4YjRlXHU4YjRmXHU4YjUwXHU4YjUxXHU4YjUyXHU4YjUzXHU4YjU0XHU4YjU1XHU4YjU2XHU4YjU3XHU4YjU4XHU4YjU5XHU4YjVhXHU4YjViXHU4YjVjXHU4YjVkXHU4YjVlXHU4YjVmXHU4YjYwXHU4YjYxXHU4YjYyXHU4YjYzXHU4YjY0XHU4YjY1XHU4YjY3XHU4''@;'; put 'put ''YjY4XHU4YjY5XHU4YjZhXHU4YjZiXHU4YjZkXHU4YjZlXHU4YjZmXHU4YjcwXHU4YjcxXHU4YjcyXHU4YjczXHU4Yjc0XHU4Yjc1XHU4Yjc2XHU4Yjc3XHU4Yjc4XHU4Yjc5XHU4YjdhXHU4YjdiXHU4YjdjXHU4YjdkXHU4YjdlXHU4YjdmXHU4YjgwXHU4YjgxXHU4YjgyXHU4YjgzXHU4Yjg0''@;'; put 'put ''XHU4Yjg1XHU4Yjg2XHVmZmZkXHU4Yjg3XHU4Yjg4XHU4Yjg5XHU4YjhhXHU4YjhiXHU4YjhjXHU4YjhkXHU4YjhlXHU4YjhmXHU4YjkwXHU4YjkxXHU4YjkyXHU4YjkzXHU4Yjk0XHU4Yjk1XHU4Yjk2XHU4Yjk3XHU4Yjk4XHU4Yjk5XHU4YjlhXHU4YjliXHU4YjljXHU4YjlkXHU4YjllXHU4''@;'; put 'put ''YjlmXHU4YmFjXHU4YmIxXHU4YmJiXHU4YmM3XHU4YmQwXHU4YmVhXHU4YzA5XHU4YzFlXHU0ZjRmXHU2Y2U4XHU3OTVkXHU5YTdiXHU2MjkzXHU3MjJhXHU2MmZkXHU0ZTEzXHU3ODE2XHU4ZjZjXHU2NGIwXHU4ZDVhXHU3YmM2XHU2ODY5XHU1ZTg0XHU4OGM1XHU1OTg2XHU2NDllXHU1OGVl''@;'; put 'put ''XHU3MmI2XHU2OTBlXHU5NTI1XHU4ZmZkXHU4ZDU4XHU1NzYwXHU3ZjAwXHU4YzA2XHU1MWM2XHU2MzQ5XHU2MmQ5XHU1MzUzXHU2ODRjXHU3NDIyXHU4MzAxXHU5MTRjXHU1NTQ0XHU3NzQwXHU3MDdjXHU2ZDRhXHU1MTc5XHU1NGE4XHU4ZDQ0XHU1OWZmXHU2ZWNiXHU2ZGM0XHU1YjVjXHU3''@;'; put 'put ''ZDJiXHU0ZWQ0XHU3YzdkXHU2ZWQzXHU1YjUwXHU4MWVhXHU2ZTBkXHU1YjU3XHU5YjAzXHU2OGQ1XHU4ZTJhXHU1Yjk3XHU3ZWZjXHU2MDNiXHU3ZWI1XHU5MGI5XHU4ZDcwXHU1OTRmXHU2M2NkXHU3OWRmXHU4ZGIzXHU1MzUyXHU2NWNmXHU3OTU2XHU4YmM1XHU5NjNiXHU3ZWM0XHU5NGJi''@;'; put 'put ''XHU3ZTgyXHU1NjM0XHU5MTg5XHU2NzAwXHU3ZjZhXHU1YzBhXHU5MDc1XHU2NjI4XHU1ZGU2XHU0ZjUwXHU2N2RlXHU1MDVhXHU0ZjVjXHU1NzUwXHU1ZWE3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE1XS5sZW5ndGg7KyttKTY1''@;'; put 'put ''NTMzIT09eFsyMTVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxNV1bbV1dPTU1MDQwK20sUls1NTA0MCttXT14WzIxNV1bbV0pO2Zvcih4WzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGMzOFx1OGMzOVx1OGMzYVx1OGMz''@;'; put 'put ''Ylx1OGMzY1x1OGMzZFx1OGMzZVx1OGMzZlx1OGM0MFx1OGM0Mlx1OGM0M1x1OGM0NFx1OGM0NVx1OGM0OFx1OGM0YVx1OGM0Ylx1OGM0ZFx1OGM0ZVx1OGM0Zlx1OGM1MFx1OGM1MVx1OGM1Mlx1OGM1M1x1OGM1NFx1OGM1Nlx1OGM1N1x1OGM1OFx1OGM1OVx1OGM1Ylx1OGM1Y1x1OGM1ZFx1''@;'; put 'put ''OGM1ZVx1OGM1Zlx1OGM2MFx1OGM2M1x1OGM2NFx1OGM2NVx1OGM2Nlx1OGM2N1x1OGM2OFx1OGM2OVx1OGM2Y1x1OGM2ZFx1OGM2ZVx1OGM2Zlx1OGM3MFx1OGM3MVx1OGM3Mlx1OGM3NFx1OGM3NVx1OGM3Nlx1OGM3N1x1OGM3Ylx1OGM3Y1x1OGM3ZFx1OGM3ZVx1OGM3Zlx1OGM4MFx1OGM4''@;'; put 'put ''MVx1OGM4M1x1OGM4NFx1OGM4Nlx1OGM4N1x1ZmZmZFx1OGM4OFx1OGM4Ylx1OGM4ZFx1OGM4ZVx1OGM4Zlx1OGM5MFx1OGM5MVx1OGM5Mlx1OGM5M1x1OGM5NVx1OGM5Nlx1OGM5N1x1OGM5OVx1OGM5YVx1OGM5Ylx1OGM5Y1x1OGM5ZFx1OGM5ZVx1OGM5Zlx1OGNhMFx1OGNhMVx1OGNhMlx1''@;'; put 'put ''OGNhM1x1OGNhNFx1OGNhNVx1OGNhNlx1OGNhN1x1OGNhOFx1OGNhOVx1OGNhYVx1OGNhYlx1OGNhY1x1OGNhZFx1NGU4ZFx1NGUwY1x1NTE0MFx1NGUxMFx1NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0''@;'; put 'put ''N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1NGU1Y1x1NGU2OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1''@;'; put 'put ''OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIzM1x1NTIzZlx1NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1''@;'; put 'put ''NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1NGYyNVx1NGYyN1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxNl0u''@;'; put 'put ''bGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTZdW21dXT01NTI5NittLFJbNTUyOTYrbV09eFsyMTZdW21dKTtmb3IoeFsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjYWVcdThj''@;'; put 'put ''YWZcdThjYjBcdThjYjFcdThjYjJcdThjYjNcdThjYjRcdThjYjVcdThjYjZcdThjYjdcdThjYjhcdThjYjlcdThjYmFcdThjYmJcdThjYmNcdThjYmRcdThjYmVcdThjYmZcdThjYzBcdThjYzFcdThjYzJcdThjYzNcdThjYzRcdThjYzVcdThjYzZcdThjYzdcdThjYzhcdThjYzlcdThjY2Fc''@;'; put 'put ''dThjY2JcdThjY2NcdThjY2RcdThjY2VcdThjY2ZcdThjZDBcdThjZDFcdThjZDJcdThjZDNcdThjZDRcdThjZDVcdThjZDZcdThjZDdcdThjZDhcdThjZDlcdThjZGFcdThjZGJcdThjZGNcdThjZGRcdThjZGVcdThjZGZcdThjZTBcdThjZTFcdThjZTJcdThjZTNcdThjZTRcdThjZTVcdThj''@;'; put 'put ''ZTZcdThjZTdcdThjZThcdThjZTlcdThjZWFcdThjZWJcdThjZWNcdWZmZmRcdThjZWRcdThjZWVcdThjZWZcdThjZjBcdThjZjFcdThjZjJcdThjZjNcdThjZjRcdThjZjVcdThjZjZcdThjZjdcdThjZjhcdThjZjlcdThjZmFcdThjZmJcdThjZmNcdThjZmRcdThjZmVcdThjZmZcdThkMDBc''@;'; put 'put ''dThkMDFcdThkMDJcdThkMDNcdThkMDRcdThkMDVcdThkMDZcdThkMDdcdThkMDhcdThkMDlcdThkMGFcdThkMGJcdThkMGNcdThkMGRcdTRmNWZcdTRmNTdcdTRmMzJcdTRmM2RcdTRmNzZcdTRmNzRcdTRmOTFcdTRmODlcdTRmODNcdTRmOGZcdTRmN2VcdTRmN2JcdTRmYWFcdTRmN2NcdTRm''@;'; put 'put ''YWNcdTRmOTRcdTRmZTZcdTRmZThcdTRmZWFcdTRmYzVcdTRmZGFcdTRmZTNcdTRmZGNcdTRmZDFcdTRmZGZcdTRmZjhcdTUwMjlcdTUwNGNcdTRmZjNcdTUwMmNcdTUwMGZcdTUwMmVcdTUwMmRcdTRmZmVcdTUwMWNcdTUwMGNcdTUwMjVcdTUwMjhcdTUwN2VcdTUwNDNcdTUwNTVcdTUwNDhc''@;'; put 'put ''dTUwNGVcdTUwNmNcdTUwN2JcdTUwYTVcdTUwYTdcdTUwYTlcdTUwYmFcdTUwZDZcdTUxMDZcdTUwZWRcdTUwZWNcdTUwZTZcdTUwZWVcdTUxMDdcdTUxMGJcdTRlZGRcdTZjM2RcdTRmNThcdTRmNjVcdTRmY2VcdTlmYTBcdTZjNDZcdTdjNzRcdTUxNmVcdTVkZmRcdTllYzlcdTk5OThcdTUx''@;'; put 'put ''ODFcdTU5MTRcdTUyZjlcdTUzMGRcdThhMDdcdTUzMTBcdTUxZWJcdTU5MTlcdTUxNTVcdTRlYTBcdTUxNTZcdTRlYjNcdTg4NmVcdTg4YTRcdTRlYjVcdTgxMTRcdTg4ZDJcdTc5ODBcdTViMzRcdTg4MDNcdTdmYjhcdTUxYWJcdTUxYjFcdTUxYmRcdTUxYmNcdWZmZmQiLnNwbGl0KCIiKSxt''@;'; put 'put ''PTA7bSE9eFsyMTddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxN11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE3XVttXV09NTU1NTIrbSxSWzU1NTUyK21dPXhbMjE3XVttXSk7Zm9yKHhbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU4ZDBlXHU4ZDBmXHU4ZDEwXHU4ZDExXHU4ZDEyXHU4ZDEzXHU4ZDE0XHU4ZDE1XHU4ZDE2XHU4ZDE3XHU4ZDE4XHU4ZDE5XHU4ZDFhXHU4ZDFiXHU4ZDFjXHU4ZDIwXHU4ZDUxXHU4ZDUyXHU4ZDU3XHU4ZDVmXHU4ZDY1XHU4ZDY4XHU4ZDY5XHU4ZDZhXHU4ZDZjXHU4ZDZlXHU4ZDZm''@;'; put 'put ''XHU4ZDcxXHU4ZDcyXHU4ZDc4XHU4ZDc5XHU4ZDdhXHU4ZDdiXHU4ZDdjXHU4ZDdkXHU4ZDdlXHU4ZDdmXHU4ZDgwXHU4ZDgyXHU4ZDgzXHU4ZDg2XHU4ZDg3XHU4ZDg4XHU4ZDg5XHU4ZDhjXHU4ZDhkXHU4ZDhlXHU4ZDhmXHU4ZDkwXHU4ZDkyXHU4ZDkzXHU4ZDk1XHU4ZDk2XHU4ZDk3XHU4''@;'; put 'put ''ZDk4XHU4ZDk5XHU4ZDlhXHU4ZDliXHU4ZDljXHU4ZDlkXHU4ZDllXHU4ZGEwXHU4ZGExXHVmZmZkXHU4ZGEyXHU4ZGE0XHU4ZGE1XHU4ZGE2XHU4ZGE3XHU4ZGE4XHU4ZGE5XHU4ZGFhXHU4ZGFiXHU4ZGFjXHU4ZGFkXHU4ZGFlXHU4ZGFmXHU4ZGIwXHU4ZGIyXHU4ZGI2XHU4ZGI3XHU4ZGI5''@;'; put 'put ''XHU4ZGJiXHU4ZGJkXHU4ZGMwXHU4ZGMxXHU4ZGMyXHU4ZGM1XHU4ZGM3XHU4ZGM4XHU4ZGM5XHU4ZGNhXHU4ZGNkXHU4ZGQwXHU4ZGQyXHU4ZGQzXHU4ZGQ0XHU1MWM3XHU1MTk2XHU1MWEyXHU1MWE1XHU4YmEwXHU4YmE2XHU4YmE3XHU4YmFhXHU4YmI0XHU4YmI1XHU4YmI3XHU4YmMyXHU4''@;'; put 'put ''YmMzXHU4YmNiXHU4YmNmXHU4YmNlXHU4YmQyXHU4YmQzXHU4YmQ0XHU4YmQ2XHU4YmQ4XHU4YmQ5XHU4YmRjXHU4YmRmXHU4YmUwXHU4YmU0XHU4YmU4XHU4YmU5XHU4YmVlXHU4YmYwXHU4YmYzXHU4YmY2XHU4YmY5XHU4YmZjXHU4YmZmXHU4YzAwXHU4YzAyXHU4YzA0XHU4YzA3XHU4YzBj''@;'; put 'put ''XHU4YzBmXHU4YzExXHU4YzEyXHU4YzE0XHU4YzE1XHU4YzE2XHU4YzE5XHU4YzFiXHU4YzE4XHU4YzFkXHU4YzFmXHU4YzIwXHU4YzIxXHU4YzI1XHU4YzI3XHU4YzJhXHU4YzJiXHU4YzJlXHU4YzJmXHU4YzMyXHU4YzMzXHU4YzM1XHU4YzM2XHU1MzY5XHU1MzdhXHU5NjFkXHU5NjIyXHU5''@;'; put 'put ''NjIxXHU5NjMxXHU5NjJhXHU5NjNkXHU5NjNjXHU5NjQyXHU5NjQ5XHU5NjU0XHU5NjVmXHU5NjY3XHU5NjZjXHU5NjcyXHU5Njc0XHU5Njg4XHU5NjhkXHU5Njk3XHU5NmIwXHU5MDk3XHU5MDliXHU5MDlkXHU5MDk5XHU5MGFjXHU5MGExXHU5MGI0XHU5MGIzXHU5MGI2XHU5MGJhXHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksbT0wO20hPXhbMjE4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMThdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxOF1bbV1dPTU1ODA4K20sUls1NTgwOCttXT14WzIxOF1bbV0pO2Zvcih4WzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1OGRkNVx1OGRkOFx1OGRkOVx1OGRkY1x1OGRlMFx1OGRlMVx1OGRlMlx1OGRlNVx1OGRlNlx1OGRlN1x1OGRlOVx1OGRlZFx1OGRlZVx1OGRmMFx1OGRmMVx1OGRmMlx1OGRmNFx1OGRmNlx1OGRmY1x1OGRmZVx1OGRmZlx1OGUwMFx1OGUwMVx1OGUwMlx1OGUw''@;'; put 'put ''M1x1OGUwNFx1OGUwNlx1OGUwN1x1OGUwOFx1OGUwYlx1OGUwZFx1OGUwZVx1OGUxMFx1OGUxMVx1OGUxMlx1OGUxM1x1OGUxNVx1OGUxNlx1OGUxN1x1OGUxOFx1OGUxOVx1OGUxYVx1OGUxYlx1OGUxY1x1OGUyMFx1OGUyMVx1OGUyNFx1OGUyNVx1OGUyNlx1OGUyN1x1OGUyOFx1OGUyYlx1''@;'; put 'put ''OGUyZFx1OGUzMFx1OGUzMlx1OGUzM1x1OGUzNFx1OGUzNlx1OGUzN1x1OGUzOFx1OGUzYlx1OGUzY1x1OGUzZVx1ZmZmZFx1OGUzZlx1OGU0M1x1OGU0NVx1OGU0Nlx1OGU0Y1x1OGU0ZFx1OGU0ZVx1OGU0Zlx1OGU1MFx1OGU1M1x1OGU1NFx1OGU1NVx1OGU1Nlx1OGU1N1x1OGU1OFx1OGU1''@;'; put 'put ''YVx1OGU1Ylx1OGU1Y1x1OGU1ZFx1OGU1ZVx1OGU1Zlx1OGU2MFx1OGU2MVx1OGU2Mlx1OGU2M1x1OGU2NFx1OGU2NVx1OGU2N1x1OGU2OFx1OGU2YVx1OGU2Ylx1OGU2ZVx1OGU3MVx1OTBiOFx1OTBiMFx1OTBjZlx1OTBjNVx1OTBiZVx1OTBkMFx1OTBjNFx1OTBjN1x1OTBkM1x1OTBlNlx1''@;'; put 'put ''OTBlMlx1OTBkY1x1OTBkN1x1OTBkYlx1OTBlYlx1OTBlZlx1OTBmZVx1OTEwNFx1OTEyMlx1OTExZVx1OTEyM1x1OTEzMVx1OTEyZlx1OTEzOVx1OTE0M1x1OTE0Nlx1NTIwZFx1NTk0Mlx1NTJhMlx1NTJhY1x1NTJhZFx1NTJiZVx1NTRmZlx1NTJkMFx1NTJkNlx1NTJmMFx1NTNkZlx1NzFl''@;'; put 'put ''ZVx1NzdjZFx1NWVmNFx1NTFmNVx1NTFmY1x1OWIyZlx1NTNiNlx1NWYwMVx1NzU1YVx1NWRlZlx1NTc0Y1x1NTdhOVx1NTdhMVx1NTg3ZVx1NThiY1x1NThjNVx1NThkMVx1NTcyOVx1NTcyY1x1NTcyYVx1NTczM1x1NTczOVx1NTcyZVx1NTcyZlx1NTc1Y1x1NTczYlx1NTc0Mlx1NTc2OVx1''@;'; put 'put ''NTc4NVx1NTc2Ylx1NTc4Nlx1NTc3Y1x1NTc3Ylx1NTc2OFx1NTc2ZFx1NTc3Nlx1NTc3M1x1NTdhZFx1NTdhNFx1NTc4Y1x1NTdiMlx1NTdjZlx1NTdhN1x1NTdiNFx1NTc5M1x1NTdhMFx1NTdkNVx1NTdkOFx1NTdkYVx1NTdkOVx1NTdkMlx1NTdiOFx1NTdmNFx1NTdlZlx1NTdmOFx1NTdl''@;'; put 'put ''NFx1NTdkZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTldW21dXT01NjA2NCttLFJbNTYwNjQrbV09eFsyMTldW21dKTtmb3IoeFsyMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNzNcdThlNzVcdThlNzdcdThlNzhcdThlNzlcdThlN2FcdThlN2JcdThlN2RcdThlN2VcdThlODBcdThlODJcdThlODNcdThlODRcdThlODZcdThlODhcdThlODlcdThlOGFcdThlOGJcdThlOGNcdThlOGRcdThlOGVcdThlOTFcdThl''@;'; put 'put ''OTJcdThlOTNcdThlOTVcdThlOTZcdThlOTdcdThlOThcdThlOTlcdThlOWFcdThlOWJcdThlOWRcdThlOWZcdThlYTBcdThlYTFcdThlYTJcdThlYTNcdThlYTRcdThlYTVcdThlYTZcdThlYTdcdThlYThcdThlYTlcdThlYWFcdThlYWRcdThlYWVcdThlYjBcdThlYjFcdThlYjNcdThlYjRc''@;'; put 'put ''dThlYjVcdThlYjZcdThlYjdcdThlYjhcdThlYjlcdThlYmJcdThlYmNcdThlYmRcdThlYmVcdThlYmZcdThlYzBcdThlYzFcdThlYzJcdWZmZmRcdThlYzNcdThlYzRcdThlYzVcdThlYzZcdThlYzdcdThlYzhcdThlYzlcdThlY2FcdThlY2JcdThlY2NcdThlY2RcdThlY2ZcdThlZDBcdThl''@;'; put 'put ''ZDFcdThlZDJcdThlZDNcdThlZDRcdThlZDVcdThlZDZcdThlZDdcdThlZDhcdThlZDlcdThlZGFcdThlZGJcdThlZGNcdThlZGRcdThlZGVcdThlZGZcdThlZTBcdThlZTFcdThlZTJcdThlZTNcdThlZTRcdTU4MGJcdTU4MGRcdTU3ZmRcdTU3ZWRcdTU4MDBcdTU4MWVcdTU4MTlcdTU4NDRc''@;'; put 'put ''dTU4MjBcdTU4NjVcdTU4NmNcdTU4ODFcdTU4ODlcdTU4OWFcdTU4ODBcdTk5YThcdTlmMTlcdTYxZmZcdTgyNzlcdTgyN2RcdTgyN2ZcdTgyOGZcdTgyOGFcdTgyYThcdTgyODRcdTgyOGVcdTgyOTFcdTgyOTdcdTgyOTlcdTgyYWJcdTgyYjhcdTgyYmVcdTgyYjBcdTgyYzhcdTgyY2FcdTgy''@;'; put 'put ''ZTNcdTgyOThcdTgyYjdcdTgyYWVcdTgyY2JcdTgyY2NcdTgyYzFcdTgyYTlcdTgyYjRcdTgyYTFcdTgyYWFcdTgyOWZcdTgyYzRcdTgyY2VcdTgyYTRcdTgyZTFcdTgzMDlcdTgyZjdcdTgyZTRcdTgzMGZcdTgzMDdcdTgyZGNcdTgyZjRcdTgyZDJcdTgyZDhcdTgzMGNcdTgyZmJcdTgyZDNc''@;'; put 'put ''dTgzMTFcdTgzMWFcdTgzMDZcdTgzMTRcdTgzMTVcdTgyZTBcdTgyZDVcdTgzMWNcdTgzNTFcdTgzNWJcdTgzNWNcdTgzMDhcdTgzOTJcdTgzM2NcdTgzMzRcdTgzMzFcdTgzOWJcdTgzNWVcdTgzMmZcdTgzNGZcdTgzNDdcdTgzNDNcdTgzNWZcdTgzNDBcdTgzMTdcdTgzNjBcdTgzMmRcdTgz''@;'; put 'put ''M2FcdTgzMzNcdTgzNjZcdTgzNjVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIwXVttXV09NTYzMjArbSxSWzU2MzIwK21dPXhbMjIwXVttXSk7Zm9yKHhbMjIxXT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZWU1XHU4ZWU2XHU4ZWU3XHU4ZWU4XHU4ZWU5XHU4ZWVhXHU4ZWViXHU4ZWVjXHU4ZWVkXHU4ZWVlXHU4ZWVmXHU4ZWYwXHU4ZWYxXHU4ZWYyXHU4ZWYzXHU4ZWY0XHU4ZWY1XHU4ZWY2XHU4ZWY3XHU4ZWY4XHU4''@;'; put 'put ''ZWY5XHU4ZWZhXHU4ZWZiXHU4ZWZjXHU4ZWZkXHU4ZWZlXHU4ZWZmXHU4ZjAwXHU4ZjAxXHU4ZjAyXHU4ZjAzXHU4ZjA0XHU4ZjA1XHU4ZjA2XHU4ZjA3XHU4ZjA4XHU4ZjA5XHU4ZjBhXHU4ZjBiXHU4ZjBjXHU4ZjBkXHU4ZjBlXHU4ZjBmXHU4ZjEwXHU4ZjExXHU4ZjEyXHU4ZjEzXHU4ZjE0''@;'; put 'put ''XHU4ZjE1XHU4ZjE2XHU4ZjE3XHU4ZjE4XHU4ZjE5XHU4ZjFhXHU4ZjFiXHU4ZjFjXHU4ZjFkXHU4ZjFlXHU4ZjFmXHU4ZjIwXHU4ZjIxXHU4ZjIyXHU4ZjIzXHVmZmZkXHU4ZjI0XHU4ZjI1XHU4ZjI2XHU4ZjI3XHU4ZjI4XHU4ZjI5XHU4ZjJhXHU4ZjJiXHU4ZjJjXHU4ZjJkXHU4ZjJlXHU4''@;'; put 'put ''ZjJmXHU4ZjMwXHU4ZjMxXHU4ZjMyXHU4ZjMzXHU4ZjM0XHU4ZjM1XHU4ZjM2XHU4ZjM3XHU4ZjM4XHU4ZjM5XHU4ZjNhXHU4ZjNiXHU4ZjNjXHU4ZjNkXHU4ZjNlXHU4ZjNmXHU4ZjQwXHU4ZjQxXHU4ZjQyXHU4ZjQzXHU4ZjQ0XHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZjXHU4MzZhXHU4MzZk''@;'; put 'put ''XHU4MzZlXHU4M2IwXHU4Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4MzdjXHU4M2I2XHU4M2E5XHU4MzdkXHU4M2I4XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1ODA3XHU4NDE4XHU4''@;'; put 'put ''NDBiXHU4M2RkXHU4M2ZkXHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBmXHU4NDAzXHU4M2Y4XHU4M2Y5XHU4M2VhXHU4M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3XHU4NDg4XHU4NDdh''@;'; put 'put ''XHU4NDg5XHU4NDc4XHU4NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4NGMxXHU4NGNkXHU4NGQwXHU4NGU2XHU4NGJkXHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4NGUzXHU4NTBjXHU3''@;'; put 'put ''NTBkXHU4NTM4XHU4NGYwXHU4NTM5XHU4NTFmXHU4NTNhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjIxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyMV1bbV1dPTU2NTc2K20sUls1NjU3NittXT14WzIyMV1bbV0pO2Zvcih4WzIyMl09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGY0NVx1OGY0Nlx1OGY0N1x1OGY0OFx1OGY0OVx1OGY0YVx1OGY0Ylx1OGY0Y1x1OGY0ZFx1OGY0ZVx1OGY0Zlx1OGY1MFx1OGY1MVx1OGY1Mlx1OGY1M1x1OGY1NFx1OGY1NVx1OGY1Nlx1''@;'; put 'put ''OGY1N1x1OGY1OFx1OGY1OVx1OGY1YVx1OGY1Ylx1OGY1Y1x1OGY1ZFx1OGY1ZVx1OGY1Zlx1OGY2MFx1OGY2MVx1OGY2Mlx1OGY2M1x1OGY2NFx1OGY2NVx1OGY2YVx1OGY4MFx1OGY4Y1x1OGY5Mlx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhMlx1OGZhNFx1OGZhNVx1OGZhNlx1OGZhN1x1OGZh''@;'; put 'put ''YVx1OGZhY1x1OGZhZFx1OGZhZVx1OGZhZlx1OGZiMlx1OGZiM1x1OGZiNFx1OGZiNVx1OGZiN1x1OGZiOFx1OGZiYVx1OGZiYlx1OGZiY1x1OGZiZlx1OGZjMFx1OGZjM1x1OGZjNlx1ZmZmZFx1OGZjOVx1OGZjYVx1OGZjYlx1OGZjY1x1OGZjZFx1OGZjZlx1OGZkMlx1OGZkNlx1OGZkN1x1''@;'; put 'put ''OGZkYVx1OGZlMFx1OGZlMVx1OGZlM1x1OGZlN1x1OGZlY1x1OGZlZlx1OGZmMVx1OGZmMlx1OGZmNFx1OGZmNVx1OGZmNlx1OGZmYVx1OGZmYlx1OGZmY1x1OGZmZVx1OGZmZlx1OTAwN1x1OTAwOFx1OTAwY1x1OTAwZVx1OTAxM1x1OTAxNVx1OTAxOFx1ODU1Nlx1ODUzYlx1ODRmZlx1ODRm''@;'; put 'put ''Y1x1ODU1OVx1ODU0OFx1ODU2OFx1ODU2NFx1ODU1ZVx1ODU3YVx1NzdhMlx1ODU0M1x1ODU3Mlx1ODU3Ylx1ODVhNFx1ODVhOFx1ODU4N1x1ODU4Zlx1ODU3OVx1ODVhZVx1ODU5Y1x1ODU4NVx1ODViOVx1ODViN1x1ODViMFx1ODVkM1x1ODVjMVx1ODVkY1x1ODVmZlx1ODYyN1x1ODYwNVx1''@;'; put 'put ''ODYyOVx1ODYxNlx1ODYzY1x1NWVmZVx1NWYwOFx1NTkzY1x1NTk0MVx1ODAzN1x1NTk1NVx1NTk1YVx1NTk1OFx1NTMwZlx1NWMyMlx1NWMyNVx1NWMyY1x1NWMzNFx1NjI0Y1x1NjI2YVx1NjI5Zlx1NjJiYlx1NjJjYVx1NjJkYVx1NjJkN1x1NjJlZVx1NjMyMlx1NjJmNlx1NjMzOVx1NjM0''@;'; put 'put ''Ylx1NjM0M1x1NjNhZFx1NjNmNlx1NjM3MVx1NjM3YVx1NjM4ZVx1NjNiNFx1NjM2ZFx1NjNhY1x1NjM4YVx1NjM2OVx1NjNhZVx1NjNiY1x1NjNmMlx1NjNmOFx1NjNlMFx1NjNmZlx1NjNjNFx1NjNkZVx1NjNjZVx1NjQ1Mlx1NjNjNlx1NjNiZVx1NjQ0NVx1NjQ0MVx1NjQwYlx1NjQxYlx1''@;'; put 'put ''NjQyMFx1NjQwY1x1NjQyNlx1NjQyMVx1NjQ1ZVx1NjQ4NFx1NjQ2ZFx1NjQ5Nlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyMl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjIyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjJdW21dXT01NjgzMittLFJbNTY4MzIrbV09eFsyMjJdW21d''@;'; put 'put ''KTtmb3IoeFsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwMTlcdTkwMWNcdTkwMjNcdTkwMjRcdTkwMjVcdTkwMjdcdTkwMjhcdTkwMjlcdTkwMmFcdTkwMmJcdTkwMmNcdTkwMzBcdTkwMzFcdTkwMzJcdTkwMzNcdTkwMzRc''@;'; put 'put ''dTkwMzdcdTkwMzlcdTkwM2FcdTkwM2RcdTkwM2ZcdTkwNDBcdTkwNDNcdTkwNDVcdTkwNDZcdTkwNDhcdTkwNDlcdTkwNGFcdTkwNGJcdTkwNGNcdTkwNGVcdTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWNcdTkwNWRcdTkwNWVcdTkwNWZcdTkwNjBcdTkwNjFcdTkwNjRcdTkw''@;'; put 'put ''NjZcdTkwNjdcdTkwNjlcdTkwNmFcdTkwNmJcdTkwNmNcdTkwNmZcdTkwNzBcdTkwNzFcdTkwNzJcdTkwNzNcdTkwNzZcdTkwNzdcdTkwNzhcdTkwNzlcdTkwN2FcdTkwN2JcdTkwN2NcdTkwN2VcdTkwODFcdWZmZmRcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlcdTkwOGFcdTkwOGNc''@;'; put 'put ''dTkwOGRcdTkwOGVcdTkwOGZcdTkwOTBcdTkwOTJcdTkwOTRcdTkwOTZcdTkwOThcdTkwOWFcdTkwOWNcdTkwOWVcdTkwOWZcdTkwYTBcdTkwYTRcdTkwYTVcdTkwYTdcdTkwYThcdTkwYTlcdTkwYWJcdTkwYWRcdTkwYjJcdTkwYjdcdTkwYmNcdTkwYmRcdTkwYmZcdTkwYzBcdTY0N2FcdTY0''@;'; put 'put ''YjdcdTY0YjhcdTY0OTlcdTY0YmFcdTY0YzBcdTY0ZDBcdTY0ZDdcdTY0ZTRcdTY0ZTJcdTY1MDlcdTY1MjVcdTY1MmVcdTVmMGJcdTVmZDJcdTc1MTlcdTVmMTFcdTUzNWZcdTUzZjFcdTUzZmRcdTUzZTlcdTUzZThcdTUzZmJcdTU0MTJcdTU0MTZcdTU0MDZcdTU0NGJcdTU0NTJcdTU0NTNc''@;'; put 'put ''dTU0NTRcdTU0NTZcdTU0NDNcdTU0MjFcdTU0NTdcdTU0NTlcdTU0MjNcdTU0MzJcdTU0ODJcdTU0OTRcdTU0NzdcdTU0NzFcdTU0NjRcdTU0OWFcdTU0OWJcdTU0ODRcdTU0NzZcdTU0NjZcdTU0OWRcdTU0ZDBcdTU0YWRcdTU0YzJcdTU0YjRcdTU0ZDJcdTU0YTdcdTU0YTZcdTU0ZDNcdTU0''@;'; put 'put ''ZDRcdTU0NzJcdTU0YTNcdTU0ZDVcdTU0YmJcdTU0YmZcdTU0Y2NcdTU0ZDlcdTU0ZGFcdTU0ZGNcdTU0YTlcdTU0YWFcdTU0YTRcdTU0ZGRcdTU0Y2ZcdTU0ZGVcdTU1MWJcdTU0ZTdcdTU1MjBcdTU0ZmRcdTU1MTRcdTU0ZjNcdTU1MjJcdTU1MjNcdTU1MGZcdTU1MTFcdTU1MjdcdTU1MmFc''@;'; put 'put ''dTU1NjdcdTU1OGZcdTU1YjVcdTU1NDlcdTU1NmRcdTU1NDFcdTU1NTVcdTU1M2ZcdTU1NTBcdTU1M2NcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyM11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIzXVttXV09NTcwODgrbSxSWzU3MDg4''@;'; put 'put ''K21dPXhbMjIzXVttXSk7Zm9yKHhbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MGMyXHU5MGMzXHU5MGM2XHU5MGM4XHU5MGM5XHU5MGNiXHU5MGNjXHU5MGNkXHU5MGQyXHU5MGQ0XHU5MGQ1XHU5MGQ2XHU5MGQ4XHU5MGQ5''@;'; put 'put ''XHU5MGRhXHU5MGRlXHU5MGRmXHU5MGUwXHU5MGUzXHU5MGU0XHU5MGU1XHU5MGU5XHU5MGVhXHU5MGVjXHU5MGVlXHU5MGYwXHU5MGYxXHU5MGYyXHU5MGYzXHU5MGY1XHU5MGY2XHU5MGY3XHU5MGY5XHU5MGZhXHU5MGZiXHU5MGZjXHU5MGZmXHU5MTAwXHU5MTAxXHU5MTAzXHU5MTA1XHU5''@;'; put 'put ''MTA2XHU5MTA3XHU5MTA4XHU5MTA5XHU5MTBhXHU5MTBiXHU5MTBjXHU5MTBkXHU5MTBlXHU5MTBmXHU5MTEwXHU5MTExXHU5MTEyXHU5MTEzXHU5MTE0XHU5MTE1XHU5MTE2XHU5MTE3XHU5MTE4XHU5MTFhXHU5MTFiXHU5MTFjXHVmZmZkXHU5MTFkXHU5MTFmXHU5MTIwXHU5MTIxXHU5MTI0''@;'; put 'put ''XHU5MTI1XHU5MTI2XHU5MTI3XHU5MTI4XHU5MTI5XHU5MTJhXHU5MTJiXHU5MTJjXHU5MTJkXHU5MTJlXHU5MTMwXHU5MTMyXHU5MTMzXHU5MTM0XHU5MTM1XHU5MTM2XHU5MTM3XHU5MTM4XHU5MTNhXHU5MTNiXHU5MTNjXHU5MTNkXHU5MTNlXHU5MTNmXHU5MTQwXHU5MTQxXHU5MTQyXHU5''@;'; put 'put ''MTQ0XHU1NTM3XHU1NTU2XHU1NTc1XHU1NTc2XHU1NTc3XHU1NTMzXHU1NTMwXHU1NTVjXHU1NThiXHU1NWQyXHU1NTgzXHU1NWIxXHU1NWI5XHU1NTg4XHU1NTgxXHU1NTlmXHU1NTdlXHU1NWQ2XHU1NTkxXHU1NTdiXHU1NWRmXHU1NWJkXHU1NWJlXHU1NTk0XHU1NTk5XHU1NWVhXHU1NWY3''@;'; put 'put ''XHU1NWM5XHU1NjFmXHU1NWQxXHU1NWViXHU1NWVjXHU1NWQ0XHU1NWU2XHU1NWRkXHU1NWM0XHU1NWVmXHU1NWU1XHU1NWYyXHU1NWYzXHU1NWNjXHU1NWNkXHU1NWU4XHU1NWY1XHU1NWU0XHU4Zjk0XHU1NjFlXHU1NjA4XHU1NjBjXHU1NjAxXHU1NjI0XHU1NjIzXHU1NWZlXHU1NjAwXHU1''@;'; put 'put ''NjI3XHU1NjJkXHU1NjU4XHU1NjM5XHU1NjU3XHU1NjJjXHU1NjRkXHU1NjYyXHU1NjU5XHU1NjVjXHU1NjRjXHU1NjU0XHU1Njg2XHU1NjY0XHU1NjcxXHU1NjZiXHU1NjdiXHU1NjdjXHU1Njg1XHU1NjkzXHU1NmFmXHU1NmQ0XHU1NmQ3XHU1NmRkXHU1NmUxXHU1NmY1XHU1NmViXHU1NmY5''@;'; put 'put ''XHU1NmZmXHU1NzA0XHU1NzBhXHU1NzA5XHU1NzFjXHU1ZTBmXHU1ZTE5XHU1ZTE0XHU1ZTExXHU1ZTMxXHU1ZTNiXHU1ZTNjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyNF1bbV1dPTU3''@;'; put 'put ''MzQ0K20sUls1NzM0NCttXT14WzIyNF1bbV0pO2Zvcih4WzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTE0NVx1OTE0N1x1OTE0OFx1OTE1MVx1OTE1M1x1OTE1NFx1OTE1NVx1OTE1Nlx1OTE1OFx1OTE1OVx1OTE1Ylx1OTE1''@;'; put 'put ''Y1x1OTE1Zlx1OTE2MFx1OTE2Nlx1OTE2N1x1OTE2OFx1OTE2Ylx1OTE2ZFx1OTE3M1x1OTE3YVx1OTE3Ylx1OTE3Y1x1OTE4MFx1OTE4MVx1OTE4Mlx1OTE4M1x1OTE4NFx1OTE4Nlx1OTE4OFx1OTE4YVx1OTE4ZVx1OTE4Zlx1OTE5M1x1OTE5NFx1OTE5NVx1OTE5Nlx1OTE5N1x1OTE5OFx1''@;'; put 'put ''OTE5OVx1OTE5Y1x1OTE5ZFx1OTE5ZVx1OTE5Zlx1OTFhMFx1OTFhMVx1OTFhNFx1OTFhNVx1OTFhNlx1OTFhN1x1OTFhOFx1OTFhOVx1OTFhYlx1OTFhY1x1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFiN1x1OTFiOFx1OTFiOVx1OTFiYlx1ZmZmZFx1OTFiY1x1OTFiZFx1OTFi''@;'; put 'put ''ZVx1OTFiZlx1OTFjMFx1OTFjMVx1OTFjMlx1OTFjM1x1OTFjNFx1OTFjNVx1OTFjNlx1OTFjOFx1OTFjYlx1OTFkMFx1OTFkMlx1OTFkM1x1OTFkNFx1OTFkNVx1OTFkNlx1OTFkN1x1OTFkOFx1OTFkOVx1OTFkYVx1OTFkYlx1OTFkZFx1OTFkZVx1OTFkZlx1OTFlMFx1OTFlMVx1OTFlMlx1''@;'; put 'put ''OTFlM1x1OTFlNFx1OTFlNVx1NWUzN1x1NWU0NFx1NWU1NFx1NWU1Ylx1NWU1ZVx1NWU2MVx1NWM4Y1x1NWM3YVx1NWM4ZFx1NWM5MFx1NWM5Nlx1NWM4OFx1NWM5OFx1NWM5OVx1NWM5MVx1NWM5YVx1NWM5Y1x1NWNiNVx1NWNhMlx1NWNiZFx1NWNhY1x1NWNhYlx1NWNiMVx1NWNhM1x1NWNj''@;'; put 'put ''MVx1NWNiN1x1NWNjNFx1NWNkMlx1NWNlNFx1NWNjYlx1NWNlNVx1NWQwMlx1NWQwM1x1NWQyN1x1NWQyNlx1NWQyZVx1NWQyNFx1NWQxZVx1NWQwNlx1NWQxYlx1NWQ1OFx1NWQzZVx1NWQzNFx1NWQzZFx1NWQ2Y1x1NWQ1Ylx1NWQ2Zlx1NWQ1ZFx1NWQ2Ylx1NWQ0Ylx1NWQ0YVx1NWQ2OVx1''@;'; put 'put ''NWQ3NFx1NWQ4Mlx1NWQ5OVx1NWQ5ZFx1OGM3M1x1NWRiN1x1NWRjNVx1NWY3M1x1NWY3N1x1NWY4Mlx1NWY4N1x1NWY4OVx1NWY4Y1x1NWY5NVx1NWY5OVx1NWY5Y1x1NWZhOFx1NWZhZFx1NWZiNVx1NWZiY1x1ODg2Mlx1NWY2MVx1NzJhZFx1NzJiMFx1NzJiNFx1NzJiN1x1NzJiOFx1NzJj''@;'; put 'put ''M1x1NzJjMVx1NzJjZVx1NzJjZFx1NzJkMlx1NzJlOFx1NzJlZlx1NzJlOVx1NzJmMlx1NzJmNFx1NzJmN1x1NzMwMVx1NzJmM1x1NzMwM1x1NzJmYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyNV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI1XVttXS5jaGFyQ29kZUF0KDApJiYob2Vb''@;'; put 'put ''eFsyMjVdW21dXT01NzYwMCttLFJbNTc2MDArbV09eFsyMjVdW21dKTtmb3IoeFsyMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkxZTZcdTkxZTdcdTkxZThcdTkxZTlcdTkxZWFcdTkxZWJcdTkxZWNcdTkxZWRcdTkxZWVcdTkx''@;'; put 'put ''ZWZcdTkxZjBcdTkxZjFcdTkxZjJcdTkxZjNcdTkxZjRcdTkxZjVcdTkxZjZcdTkxZjdcdTkxZjhcdTkxZjlcdTkxZmFcdTkxZmJcdTkxZmNcdTkxZmRcdTkxZmVcdTkxZmZcdTkyMDBcdTkyMDFcdTkyMDJcdTkyMDNcdTkyMDRcdTkyMDVcdTkyMDZcdTkyMDdcdTkyMDhcdTkyMDlcdTkyMGFc''@;'; put 'put ''dTkyMGJcdTkyMGNcdTkyMGRcdTkyMGVcdTkyMGZcdTkyMTBcdTkyMTFcdTkyMTJcdTkyMTNcdTkyMTRcdTkyMTVcdTkyMTZcdTkyMTdcdTkyMThcdTkyMTlcdTkyMWFcdTkyMWJcdTkyMWNcdTkyMWRcdTkyMWVcdTkyMWZcdTkyMjBcdTkyMjFcdTkyMjJcdTkyMjNcdTkyMjRcdWZmZmRcdTky''@;'; put 'put ''MjVcdTkyMjZcdTkyMjdcdTkyMjhcdTkyMjlcdTkyMmFcdTkyMmJcdTkyMmNcdTkyMmRcdTkyMmVcdTkyMmZcdTkyMzBcdTkyMzFcdTkyMzJcdTkyMzNcdTkyMzRcdTkyMzVcdTkyMzZcdTkyMzdcdTkyMzhcdTkyMzlcdTkyM2FcdTkyM2JcdTkyM2NcdTkyM2RcdTkyM2VcdTkyM2ZcdTkyNDBc''@;'; put 'put ''dTkyNDFcdTkyNDJcdTkyNDNcdTkyNDRcdTkyNDVcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2VcdTgyMWJcdTU5''@;'; put 'put ''MjVcdTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjdcdTk5NjhcdTk5NjlcdTk5NmFcdTk5NmJcdTk5NmNcdTk5NzRcdTk5NzdcdTk5N2RcdTk5ODBcdTk5ODRcdTk5ODdcdTk5OGFcdTk5OGRcdTk5OTBcdTk5OTFcdTk5OTNcdTk5OTRcdTk5OTVcdTVlODBcdTVlOTFcdTVlOGJcdTVlOTZc''@;'; put 'put ''dTVlYTVcdTVlYTBcdTVlYjlcdTVlYjVcdTVlYmVcdTVlYjNcdThkNTNcdTVlZDJcdTVlZDFcdTVlZGJcdTVlZThcdTVlZWFcdTgxYmFcdTVmYzRcdTVmYzlcdTVmZDZcdTVmY2ZcdTYwMDNcdTVmZWVcdTYwMDRcdTVmZTFcdTVmZTRcdTVmZmVcdTYwMDVcdTYwMDZcdTVmZWFcdTVmZWRcdTVm''@;'; put 'put ''ZjhcdTYwMTlcdTYwMzVcdTYwMjZcdTYwMWJcdTYwMGZcdTYwMGRcdTYwMjlcdTYwMmJcdTYwMGFcdTYwM2ZcdTYwMjFcdTYwNzhcdTYwNzlcdTYwN2JcdTYwN2FcdTYwNDJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyNl1bbV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG9lW3hbMjI2XVttXV09NTc4NTYrbSxSWzU3ODU2K21dPXhbMjI2XVttXSk7Zm9yKHhbMjI3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MjQ2XHU5MjQ3XHU5MjQ4XHU5MjQ5XHU5MjRhXHU5MjRiXHU5MjRjXHU5''@;'; put 'put ''MjRkXHU5MjRlXHU5MjRmXHU5MjUwXHU5MjUxXHU5MjUyXHU5MjUzXHU5MjU0XHU5MjU1XHU5MjU2XHU5MjU3XHU5MjU4XHU5MjU5XHU5MjVhXHU5MjViXHU5MjVjXHU5MjVkXHU5MjVlXHU5MjVmXHU5MjYwXHU5MjYxXHU5MjYyXHU5MjYzXHU5MjY0XHU5MjY1XHU5MjY2XHU5MjY3XHU5MjY4''@;'; put 'put ''XHU5MjY5XHU5MjZhXHU5MjZiXHU5MjZjXHU5MjZkXHU5MjZlXHU5MjZmXHU5MjcwXHU5MjcxXHU5MjcyXHU5MjczXHU5Mjc1XHU5Mjc2XHU5Mjc3XHU5Mjc4XHU5Mjc5XHU5MjdhXHU5MjdiXHU5MjdjXHU5MjdkXHU5MjdlXHU5MjdmXHU5MjgwXHU5MjgxXHU5MjgyXHU5MjgzXHU5Mjg0XHU5''@;'; put 'put ''Mjg1XHVmZmZkXHU5Mjg2XHU5Mjg3XHU5Mjg4XHU5Mjg5XHU5MjhhXHU5MjhiXHU5MjhjXHU5MjhkXHU5MjhmXHU5MjkwXHU5MjkxXHU5MjkyXHU5MjkzXHU5Mjk0XHU5Mjk1XHU5Mjk2XHU5Mjk3XHU5Mjk4XHU5Mjk5XHU5MjlhXHU5MjliXHU5MjljXHU5MjlkXHU5MjllXHU5MjlmXHU5MmEw''@;'; put 'put ''XHU5MmExXHU5MmEyXHU5MmEzXHU5MmE0XHU5MmE1XHU5MmE2XHU5MmE3XHU2MDZhXHU2MDdkXHU2MDk2XHU2MDlhXHU2MGFkXHU2MDlkXHU2MDgzXHU2MDkyXHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2MTIwXHU2MTI2XHU2''@;'; put 'put ''MTE1XHU2MTIzXHU2MGY0XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3XHU2MWI3XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0XHU5NjA2XHU5NjA4''@;'; put 'put ''XHU5NjBhXHU5NjBiXHU5NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5NjFhXHU0ZTJjXHU3MjNmXHU2MjE1XHU2YzM1XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2Yzc0XHU2Yzc2XHU2''@;'; put 'put ''Yzg2XHU2Y2E5XHU2Y2QwXHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2UwXHU2Y2Q2XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsy''@;'; put 'put ''MjddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyN11bbV1dPTU4MTEyK20sUls1ODExMittXT14WzIyN11bbV0pO2Zvcih4WzIyOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhOFx1OTJhOVx1OTJhYVx1OTJhYlx1OTJhY1x1''@;'; put 'put ''OTJhZFx1OTJhZlx1OTJiMFx1OTJiMVx1OTJiMlx1OTJiM1x1OTJiNFx1OTJiNVx1OTJiNlx1OTJiN1x1OTJiOFx1OTJiOVx1OTJiYVx1OTJiYlx1OTJiY1x1OTJiZFx1OTJiZVx1OTJiZlx1OTJjMFx1OTJjMVx1OTJjMlx1OTJjM1x1OTJjNFx1OTJjNVx1OTJjNlx1OTJjN1x1OTJjOVx1OTJj''@;'; put 'put ''YVx1OTJjYlx1OTJjY1x1OTJjZFx1OTJjZVx1OTJjZlx1OTJkMFx1OTJkMVx1OTJkMlx1OTJkM1x1OTJkNFx1OTJkNVx1OTJkNlx1OTJkN1x1OTJkOFx1OTJkOVx1OTJkYVx1OTJkYlx1OTJkY1x1OTJkZFx1OTJkZVx1OTJkZlx1OTJlMFx1OTJlMVx1OTJlMlx1OTJlM1x1OTJlNFx1OTJlNVx1''@;'; put 'put ''OTJlNlx1OTJlN1x1OTJlOFx1ZmZmZFx1OTJlOVx1OTJlYVx1OTJlYlx1OTJlY1x1OTJlZFx1OTJlZVx1OTJlZlx1OTJmMFx1OTJmMVx1OTJmMlx1OTJmM1x1OTJmNFx1OTJmNVx1OTJmNlx1OTJmN1x1OTJmOFx1OTJmOVx1OTJmYVx1OTJmYlx1OTJmY1x1OTJmZFx1OTJmZVx1OTJmZlx1OTMw''@;'; put 'put ''MFx1OTMwMVx1OTMwMlx1OTMwM1x1OTMwNFx1OTMwNVx1OTMwNlx1OTMwN1x1OTMwOFx1OTMwOVx1NmQzOVx1NmQyN1x1NmQwY1x1NmQ0M1x1NmQ0OFx1NmQwN1x1NmQwNFx1NmQxOVx1NmQwZVx1NmQyYlx1NmQ0ZFx1NmQyZVx1NmQzNVx1NmQxYVx1NmQ0Zlx1NmQ1Mlx1NmQ1NFx1NmQzM1x1''@;'; put 'put ''NmQ5MVx1NmQ2Zlx1NmQ5ZVx1NmRhMFx1NmQ1ZVx1NmQ5M1x1NmQ5NFx1NmQ1Y1x1NmQ2MFx1NmQ3Y1x1NmQ2M1x1NmUxYVx1NmRjN1x1NmRjNVx1NmRkZVx1NmUwZVx1NmRiZlx1NmRlMFx1NmUxMVx1NmRlNlx1NmRkZFx1NmRkOVx1NmUxNlx1NmRhYlx1NmUwY1x1NmRhZVx1NmUyYlx1NmU2''@;'; put 'put ''ZVx1NmU0ZVx1NmU2Ylx1NmViMlx1NmU1Zlx1NmU4Nlx1NmU1M1x1NmU1NFx1NmUzMlx1NmUyNVx1NmU0NFx1NmVkZlx1NmViMVx1NmU5OFx1NmVlMFx1NmYyZFx1NmVlMlx1NmVhNVx1NmVhN1x1NmViZFx1NmViYlx1NmViN1x1NmVkN1x1NmViNFx1NmVjZlx1NmU4Zlx1NmVjMlx1NmU5Zlx1''@;'; put 'put ''NmY2Mlx1NmY0Nlx1NmY0N1x1NmYyNFx1NmYxNVx1NmVmOVx1NmYyZlx1NmYzNlx1NmY0Ylx1NmY3NFx1NmYyYVx1NmYwOVx1NmYyOVx1NmY4OVx1NmY4ZFx1NmY4Y1x1NmY3OFx1NmY3Mlx1NmY3Y1x1NmY3YVx1NmZkMVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyOF0ubGVuZ3RoOysr''@;'; put 'put ''bSk2NTUzMyE9PXhbMjI4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjhdW21dXT01ODM2OCttLFJbNTgzNjgrbV09eFsyMjhdW21dKTtmb3IoeFsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkzMGFcdTkzMGJcdTkzMGNc''@;'; put 'put ''dTkzMGRcdTkzMGVcdTkzMGZcdTkzMTBcdTkzMTFcdTkzMTJcdTkzMTNcdTkzMTRcdTkzMTVcdTkzMTZcdTkzMTdcdTkzMThcdTkzMTlcdTkzMWFcdTkzMWJcdTkzMWNcdTkzMWRcdTkzMWVcdTkzMWZcdTkzMjBcdTkzMjFcdTkzMjJcdTkzMjNcdTkzMjRcdTkzMjVcdTkzMjZcdTkzMjdcdTkz''@;'; put 'put ''MjhcdTkzMjlcdTkzMmFcdTkzMmJcdTkzMmNcdTkzMmRcdTkzMmVcdTkzMmZcdTkzMzBcdTkzMzFcdTkzMzJcdTkzMzNcdTkzMzRcdTkzMzVcdTkzMzZcdTkzMzdcdTkzMzhcdTkzMzlcdTkzM2FcdTkzM2JcdTkzM2NcdTkzM2RcdTkzM2ZcdTkzNDBcdTkzNDFcdTkzNDJcdTkzNDNcdTkzNDRc''@;'; put 'put ''dTkzNDVcdTkzNDZcdTkzNDdcdTkzNDhcdTkzNDlcdWZmZmRcdTkzNGFcdTkzNGJcdTkzNGNcdTkzNGRcdTkzNGVcdTkzNGZcdTkzNTBcdTkzNTFcdTkzNTJcdTkzNTNcdTkzNTRcdTkzNTVcdTkzNTZcdTkzNTdcdTkzNThcdTkzNTlcdTkzNWFcdTkzNWJcdTkzNWNcdTkzNWRcdTkzNWVcdTkz''@;'; put 'put ''NWZcdTkzNjBcdTkzNjFcdTkzNjJcdTkzNjNcdTkzNjRcdTkzNjVcdTkzNjZcdTkzNjdcdTkzNjhcdTkzNjlcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcwMzlcdTcwMzVcdTcwNGZc''@;'; put 'put ''dTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNcdThmZThcdTkwMDVcdTkw''@;'; put 'put ''MDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkwOGJcdTVmNTBcdTVmNTdc''@;'; put 'put ''dTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsy''@;'; put 'put ''MjldLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyOV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI5XVttXV09NTg2MjQrbSxSWzU4NjI0K21dPXhbMjI5XVttXSk7Zm9yKHhbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzZj''@;'; put 'put ''XHU5MzZkXHU5MzZlXHU5MzZmXHU5MzcwXHU5MzcxXHU5MzcyXHU5MzczXHU5Mzc0XHU5Mzc1XHU5Mzc2XHU5Mzc3XHU5Mzc4XHU5Mzc5XHU5MzdhXHU5MzdiXHU5MzdjXHU5MzdkXHU5MzdlXHU5MzdmXHU5MzgwXHU5MzgxXHU5MzgyXHU5MzgzXHU5Mzg0XHU5Mzg1XHU5Mzg2XHU5Mzg3XHU5''@;'; put 'put ''Mzg4XHU5Mzg5XHU5MzhhXHU5MzhiXHU5MzhjXHU5MzhkXHU5MzhlXHU5MzkwXHU5MzkxXHU5MzkyXHU5MzkzXHU5Mzk0XHU5Mzk1XHU5Mzk2XHU5Mzk3XHU5Mzk4XHU5Mzk5XHU5MzlhXHU5MzliXHU5MzljXHU5MzlkXHU5MzllXHU5MzlmXHU5M2EwXHU5M2ExXHU5M2EyXHU5M2EzXHU5M2E0''@;'; put 'put ''XHU5M2E1XHU5M2E2XHU5M2E3XHU5M2E4XHU5M2E5XHU5M2FhXHU5M2FiXHVmZmZkXHU5M2FjXHU5M2FkXHU5M2FlXHU5M2FmXHU5M2IwXHU5M2IxXHU5M2IyXHU5M2IzXHU5M2I0XHU5M2I1XHU5M2I2XHU5M2I3XHU5M2I4XHU5M2I5XHU5M2JhXHU5M2JiXHU5M2JjXHU5M2JkXHU5M2JlXHU5''@;'; put 'put ''M2JmXHU5M2MwXHU5M2MxXHU5M2MyXHU5M2MzXHU5M2M0XHU5M2M1XHU5M2M2XHU5M2M3XHU5M2M4XHU5M2M5XHU5M2NiXHU5M2NjXHU5M2NkXHU1OTk3XHU1OWNhXHU1OWFiXHU1OTllXHU1OWE0XHU1OWQyXHU1OWIyXHU1OWFmXHU1OWQ3XHU1OWJlXHU1YTA1XHU1YTA2XHU1OWRkXHU1YTA4''@;'; put 'put ''XHU1OWUzXHU1OWQ4XHU1OWY5XHU1YTBjXHU1YTA5XHU1YTMyXHU1YTM0XHU1YTExXHU1YTIzXHU1YTEzXHU1YTQwXHU1YTY3XHU1YTRhXHU1YTU1XHU1YTNjXHU1YTYyXHU1YTc1XHU4MGVjXHU1YWFhXHU1YTliXHU1YTc3XHU1YTdhXHU1YWJlXHU1YWViXHU1YWIyXHU1YWQyXHU1YWQ0XHU1''@;'; put 'put ''YWI4XHU1YWUwXHU1YWUzXHU1YWYxXHU1YWQ2XHU1YWU2XHU1YWQ4XHU1YWRjXHU1YjA5XHU1YjE3XHU1YjE2XHU1YjMyXHU1YjM3XHU1YjQwXHU1YzE1XHU1YzFjXHU1YjVhXHU1YjY1XHU1YjczXHU1YjUxXHU1YjUzXHU1YjYyXHU5YTc1XHU5YTc3XHU5YTc4XHU5YTdhXHU5YTdmXHU5YTdk''@;'; put 'put ''XHU5YTgwXHU5YTgxXHU5YTg1XHU5YTg4XHU5YThhXHU5YTkwXHU5YTkyXHU5YTkzXHU5YTk2XHU5YTk4XHU5YTliXHU5YTljXHU5YTlkXHU5YTlmXHU5YWEwXHU5YWEyXHU5YWEzXHU5YWE1XHU5YWE3XHU3ZTlmXHU3ZWExXHU3ZWEzXHU3ZWE1XHU3ZWE4XHU3ZWE5XHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksbT0wO20hPXhbMjMwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzMF1bbV1dPTU4ODgwK20sUls1ODg4MCttXT14WzIzMF1bbV0pO2Zvcih4WzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1OTNjZVx1OTNjZlx1OTNkMFx1OTNkMVx1OTNkMlx1OTNkM1x1OTNkNFx1OTNkNVx1OTNkN1x1OTNkOFx1OTNkOVx1OTNkYVx1OTNkYlx1OTNkY1x1OTNkZFx1OTNkZVx1OTNkZlx1OTNlMFx1OTNlMVx1OTNlMlx1OTNlM1x1OTNlNFx1OTNlNVx1OTNlNlx1OTNlN1x1OTNlOFx1''@;'; put 'put ''OTNlOVx1OTNlYVx1OTNlYlx1OTNlY1x1OTNlZFx1OTNlZVx1OTNlZlx1OTNmMFx1OTNmMVx1OTNmMlx1OTNmM1x1OTNmNFx1OTNmNVx1OTNmNlx1OTNmN1x1OTNmOFx1OTNmOVx1OTNmYVx1OTNmYlx1OTNmY1x1OTNmZFx1OTNmZVx1OTNmZlx1OTQwMFx1OTQwMVx1OTQwMlx1OTQwM1x1OTQw''@;'; put 'put ''NFx1OTQwNVx1OTQwNlx1OTQwN1x1OTQwOFx1OTQwOVx1OTQwYVx1OTQwYlx1OTQwY1x1OTQwZFx1ZmZmZFx1OTQwZVx1OTQwZlx1OTQxMFx1OTQxMVx1OTQxMlx1OTQxM1x1OTQxNFx1OTQxNVx1OTQxNlx1OTQxN1x1OTQxOFx1OTQxOVx1OTQxYVx1OTQxYlx1OTQxY1x1OTQxZFx1OTQxZVx1''@;'; put 'put ''OTQxZlx1OTQyMFx1OTQyMVx1OTQyMlx1OTQyM1x1OTQyNFx1OTQyNVx1OTQyNlx1OTQyN1x1OTQyOFx1OTQyOVx1OTQyYVx1OTQyYlx1OTQyY1x1OTQyZFx1OTQyZVx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2Vk''@;'; put 'put ''N1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2VmYVx1N2VmYlx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1''@;'; put 'put ''N2YxYlx1N2YxZlx1N2YyMVx1N2YyMlx1N2YyM1x1N2YyNFx1N2YyNVx1N2YyNlx1N2YyN1x1N2YyYVx1N2YyYlx1N2YyY1x1N2YyZFx1N2YyZlx1N2YzMFx1N2YzMVx1N2YzMlx1N2YzM1x1N2YzNVx1NWU3YVx1NzU3Zlx1NWRkYlx1NzUzZVx1OTA5NVx1NzM4ZVx1NzM5MVx1NzNhZVx1NzNh''@;'; put 'put ''Mlx1NzM5Zlx1NzNjZlx1NzNjMlx1NzNkMVx1NzNiN1x1NzNiM1x1NzNjMFx1NzNjOVx1NzNjOFx1NzNlNVx1NzNkOVx1OTg3Y1x1NzQwYVx1NzNlOVx1NzNlN1x1NzNkZVx1NzNiYVx1NzNmMlx1NzQwZlx1NzQyYVx1NzQ1Ylx1NzQyNlx1NzQyNVx1NzQyOFx1NzQzMFx1NzQyZVx1NzQyY1x1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzFdW21dXT01OTEzNittLFJbNTkxMzYrbV09eFsyMzFdW21dKTtmb3IoeFsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0MmZcdTk0MzBcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0MzVcdTk0MzZcdTk0MzdcdTk0MzhcdTk0MzlcdTk0M2FcdTk0M2JcdTk0M2NcdTk0M2RcdTk0M2ZcdTk0NDBcdTk0NDFcdTk0NDJcdTk0NDNcdTk0NDRcdTk0NDVcdTk0NDZcdTk0NDdc''@;'; put 'put ''dTk0NDhcdTk0NDlcdTk0NGFcdTk0NGJcdTk0NGNcdTk0NGRcdTk0NGVcdTk0NGZcdTk0NTBcdTk0NTFcdTk0NTJcdTk0NTNcdTk0NTRcdTk0NTVcdTk0NTZcdTk0NTdcdTk0NThcdTk0NTlcdTk0NWFcdTk0NWJcdTk0NWNcdTk0NWRcdTk0NWVcdTk0NWZcdTk0NjBcdTk0NjFcdTk0NjJcdTk0''@;'; put 'put ''NjNcdTk0NjRcdTk0NjVcdTk0NjZcdTk0NjdcdTk0NjhcdTk0NjlcdTk0NmFcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmZcdWZmZmRcdTk0NzBcdTk0NzFcdTk0NzJcdTk0NzNcdTk0NzRcdTk0NzVcdTk0NzZcdTk0NzdcdTk0NzhcdTk0NzlcdTk0N2FcdTk0N2JcdTk0N2NcdTk0N2RcdTk0N2Vc''@;'; put 'put ''dTk0N2ZcdTk0ODBcdTk0ODFcdTk0ODJcdTk0ODNcdTk0ODRcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0ZDRcdTk0ZGFcdTk0ZTZcdTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRcdTc0''@;'; put 'put ''N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJcdTc0YmFcdTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3YTdc''@;'; put 'put ''dTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3YjBcdTY4MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJcdTY4''@;'; put 'put ''MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4NjdcdTY4NDBcdTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5MWZc''@;'; put 'put ''dTY5MjBcdTY4ZjlcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjMyXVttXV09NTkzOTIrbSxSWzU5MzkyK21dPXhbMjMyXVttXSk7Zm9yKHhbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NTI3XHU5NTMzXHU5NTNkXHU5NTQzXHU5NTQ4XHU5NTRiXHU5NTU1XHU5NTVhXHU5NTYwXHU5NTZlXHU5NTc0XHU5NTc1XHU5NTc3XHU5NTc4XHU5NTc5XHU5NTdhXHU5NTdiXHU5NTdjXHU5NTdkXHU5NTdlXHU5NTgwXHU5NTgx''@;'; put 'put ''XHU5NTgyXHU5NTgzXHU5NTg0XHU5NTg1XHU5NTg2XHU5NTg3XHU5NTg4XHU5NTg5XHU5NThhXHU5NThiXHU5NThjXHU5NThkXHU5NThlXHU5NThmXHU5NTkwXHU5NTkxXHU5NTkyXHU5NTkzXHU5NTk0XHU5NTk1XHU5NTk2XHU5NTk3XHU5NTk4XHU5NTk5XHU5NTlhXHU5NTliXHU5NTljXHU5''@;'; put 'put ''NTlkXHU5NTllXHU5NTlmXHU5NWEwXHU5NWExXHU5NWEyXHU5NWEzXHU5NWE0XHU5NWE1XHU5NWE2XHU5NWE3XHU5NWE4XHU5NWE5XHU5NWFhXHVmZmZkXHU5NWFiXHU5NWFjXHU5NWFkXHU5NWFlXHU5NWFmXHU5NWIwXHU5NWIxXHU5NWIyXHU5NWIzXHU5NWI0XHU5NWI1XHU5NWI2XHU5NWI3''@;'; put 'put ''XHU5NWI4XHU5NWI5XHU5NWJhXHU5NWJiXHU5NWJjXHU5NWJkXHU5NWJlXHU5NWJmXHU5NWMwXHU5NWMxXHU5NWMyXHU5NWMzXHU5NWM0XHU5NWM1XHU5NWM2XHU5NWM3XHU5NWM4XHU5NWM5XHU5NWNhXHU5NWNiXHU2OTI0XHU2OGYwXHU2OTBiXHU2OTAxXHU2OTU3XHU2OGUzXHU2OTEwXHU2''@;'; put 'put ''OTcxXHU2OTM5XHU2OTYwXHU2OTQyXHU2OTVkXHU2OTg0XHU2OTZiXHU2OTgwXHU2OTk4XHU2OTc4XHU2OTM0XHU2OWNjXHU2OTg3XHU2OTg4XHU2OWNlXHU2OTg5XHU2OTY2XHU2OTYzXHU2OTc5XHU2OTliXHU2OWE3XHU2OWJiXHU2OWFiXHU2OWFkXHU2OWQ0XHU2OWIxXHU2OWMxXHU2OWNh''@;'; put 'put ''XHU2OWRmXHU2OTk1XHU2OWUwXHU2OThkXHU2OWZmXHU2YTJmXHU2OWVkXHU2YTE3XHU2YTE4XHU2YTY1XHU2OWYyXHU2YTQ0XHU2YTNlXHU2YWEwXHU2YTUwXHU2YTViXHU2YTM1XHU2YThlXHU2YTc5XHU2YTNkXHU2YTI4XHU2YTU4XHU2YTdjXHU2YTkxXHU2YTkwXHU2YWE5XHU2YTk3XHU2''@;'; put 'put ''YWFiXHU3MzM3XHU3MzUyXHU2YjgxXHU2YjgyXHU2Yjg3XHU2Yjg0XHU2YjkyXHU2YjkzXHU2YjhkXHU2YjlhXHU2YjliXHU2YmExXHU2YmFhXHU4ZjZiXHU4ZjZkXHU4ZjcxXHU4ZjcyXHU4ZjczXHU4Zjc1XHU4Zjc2XHU4Zjc4XHU4Zjc3XHU4Zjc5XHU4ZjdhXHU4ZjdjXHU4ZjdlXHU4Zjgx''@;'; put 'put ''XHU4ZjgyXHU4Zjg0XHU4Zjg3XHU4ZjhiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzM11bbV1dPTU5NjQ4K20sUls1OTY0OCttXT14WzIzM11bbV0pO2Zvcih4WzIzNF09Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTVjY1x1OTVjZFx1OTVjZVx1OTVjZlx1OTVkMFx1OTVkMVx1OTVkMlx1OTVkM1x1OTVkNFx1OTVkNVx1OTVkNlx1OTVkN1x1OTVkOFx1OTVkOVx1OTVkYVx1OTVkYlx1OTVkY1x1OTVkZFx1OTVkZVx1OTVk''@;'; put 'put ''Zlx1OTVlMFx1OTVlMVx1OTVlMlx1OTVlM1x1OTVlNFx1OTVlNVx1OTVlNlx1OTVlN1x1OTVlY1x1OTVmZlx1OTYwN1x1OTYxM1x1OTYxOFx1OTYxYlx1OTYxZVx1OTYyMFx1OTYyM1x1OTYyNFx1OTYyNVx1OTYyNlx1OTYyN1x1OTYyOFx1OTYyOVx1OTYyYlx1OTYyY1x1OTYyZFx1OTYyZlx1''@;'; put 'put ''OTYzMFx1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzZVx1OTY0MVx1OTY0M1x1OTY0YVx1OTY0ZVx1OTY0Zlx1OTY1MVx1OTY1Mlx1OTY1M1x1OTY1Nlx1OTY1N1x1ZmZmZFx1OTY1OFx1OTY1OVx1OTY1YVx1OTY1Y1x1OTY1ZFx1OTY1ZVx1OTY2MFx1OTY2M1x1OTY2NVx1OTY2Nlx1OTY2''@;'; put 'put ''Ylx1OTY2ZFx1OTY2ZVx1OTY2Zlx1OTY3MFx1OTY3MVx1OTY3M1x1OTY3OFx1OTY3OVx1OTY3YVx1OTY3Ylx1OTY3Y1x1OTY3ZFx1OTY3ZVx1OTY3Zlx1OTY4MFx1OTY4MVx1OTY4Mlx1OTY4M1x1OTY4NFx1OTY4N1x1OTY4OVx1OTY4YVx1OGY4ZFx1OGY4ZVx1OGY4Zlx1OGY5OFx1OGY5YVx1''@;'; put 'put ''OGVjZVx1NjIwYlx1NjIxN1x1NjIxYlx1NjIxZlx1NjIyMlx1NjIyMVx1NjIyNVx1NjIyNFx1NjIyY1x1ODFlN1x1NzRlZlx1NzRmNFx1NzRmZlx1NzUwZlx1NzUxMVx1NzUxM1x1NjUzNFx1NjVlZVx1NjVlZlx1NjVmMFx1NjYwYVx1NjYxOVx1Njc3Mlx1NjYwM1x1NjYxNVx1NjYwMFx1NzA4''@;'; put 'put ''NVx1NjZmN1x1NjYxZFx1NjYzNFx1NjYzMVx1NjYzNlx1NjYzNVx1ODAwNlx1NjY1Zlx1NjY1NFx1NjY0MVx1NjY0Zlx1NjY1Nlx1NjY2MVx1NjY1N1x1NjY3N1x1NjY4NFx1NjY4Y1x1NjZhN1x1NjY5ZFx1NjZiZVx1NjZkYlx1NjZkY1x1NjZlNlx1NjZlOVx1OGQzMlx1OGQzM1x1OGQzNlx1''@;'; put 'put ''OGQzYlx1OGQzZFx1OGQ0MFx1OGQ0NVx1OGQ0Nlx1OGQ0OFx1OGQ0OVx1OGQ0N1x1OGQ0ZFx1OGQ1NVx1OGQ1OVx1ODljN1x1ODljYVx1ODljYlx1ODljY1x1ODljZVx1ODljZlx1ODlkMFx1ODlkMVx1NzI2ZVx1NzI5Zlx1NzI1ZFx1NzI2Nlx1NzI2Zlx1NzI3ZVx1NzI3Zlx1NzI4NFx1NzI4''@;'; put 'put ''Ylx1NzI4ZFx1NzI4Zlx1NzI5Mlx1NjMwOFx1NjMzMlx1NjNiMFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzRdW21dXT01OTkwNCttLFJbNTk5MDQrbV09eFsyMzRdW21dKTtmb3IoeFsy''@;'; put 'put ''MzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNcdTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWRcdTk2OWVcdTk2OWZcdTk2YTBcdTk2YTFcdTk2YTJcdTk2YTNcdTk2YTRcdTk2''@;'; put 'put ''YTVcdTk2YTZcdTk2YThcdTk2YTlcdTk2YWFcdTk2YWJcdTk2YWNcdTk2YWRcdTk2YWVcdTk2YWZcdTk2YjFcdTk2YjJcdTk2YjRcdTk2YjVcdTk2YjdcdTk2YjhcdTk2YmFcdTk2YmJcdTk2YmZcdTk2YzJcdTk2YzNcdTk2YzhcdTk2Y2FcdTk2Y2JcdTk2ZDBcdTk2ZDFcdTk2ZDNcdTk2ZDRc''@;'; put 'put ''dTk2ZDZcdTk2ZDdcdTk2ZDhcdTk2ZDlcdTk2ZGFcdTk2ZGJcdTk2ZGNcdTk2ZGRcdTk2ZGVcdTk2ZGZcdTk2ZTFcdTk2ZTJcdTk2ZTNcdTk2ZTRcdTk2ZTVcdTk2ZTZcdTk2ZTdcdTk2ZWJcdWZmZmRcdTk2ZWNcdTk2ZWRcdTk2ZWVcdTk2ZjBcdTk2ZjFcdTk2ZjJcdTk2ZjRcdTk2ZjVcdTk2''@;'; put 'put ''ZjhcdTk2ZmFcdTk2ZmJcdTk2ZmNcdTk2ZmRcdTk2ZmZcdTk3MDJcdTk3MDNcdTk3MDVcdTk3MGFcdTk3MGJcdTk3MGNcdTk3MTBcdTk3MTFcdTk3MTJcdTk3MTRcdTk3MTVcdTk3MTdcdTk3MThcdTk3MTlcdTk3MWFcdTk3MWJcdTk3MWRcdTk3MWZcdTk3MjBcdTY0M2ZcdTY0ZDhcdTgwMDRc''@;'; put 'put ''dTZiZWFcdTZiZjNcdTZiZmRcdTZiZjVcdTZiZjlcdTZjMDVcdTZjMDdcdTZjMDZcdTZjMGRcdTZjMTVcdTZjMThcdTZjMTlcdTZjMWFcdTZjMjFcdTZjMjlcdTZjMjRcdTZjMmFcdTZjMzJcdTY1MzVcdTY1NTVcdTY1NmJcdTcyNGRcdTcyNTJcdTcyNTZcdTcyMzBcdTg2NjJcdTUyMTZcdTgw''@;'; put 'put ''OWZcdTgwOWNcdTgwOTNcdTgwYmNcdTY3MGFcdTgwYmRcdTgwYjFcdTgwYWJcdTgwYWRcdTgwYjRcdTgwYjdcdTgwZTdcdTgwZThcdTgwZTlcdTgwZWFcdTgwZGJcdTgwYzJcdTgwYzRcdTgwZDlcdTgwY2RcdTgwZDdcdTY3MTBcdTgwZGRcdTgwZWJcdTgwZjFcdTgwZjRcdTgwZWRcdTgxMGRc''@;'; put 'put ''dTgxMGVcdTgwZjJcdTgwZmNcdTY3MTVcdTgxMTJcdThjNWFcdTgxMzZcdTgxMWVcdTgxMmNcdTgxMThcdTgxMzJcdTgxNDhcdTgxNGNcdTgxNTNcdTgxNzRcdTgxNTlcdTgxNWFcdTgxNzFcdTgxNjBcdTgxNjlcdTgxN2NcdTgxN2RcdTgxNmRcdTgxNjdcdTU4NGRcdTVhYjVcdTgxODhcdTgx''@;'; put 'put ''ODJcdTgxOTFcdTZlZDVcdTgxYTNcdTgxYWFcdTgxY2NcdTY3MjZcdTgxY2FcdTgxYmJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM1XVttXV09NjAxNjArbSxSWzYwMTYwK21dPXhbMjM1''@;'; put 'put ''XVttXSk7Zm9yKHhbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzIxXHU5NzIyXHU5NzIzXHU5NzI0XHU5NzI1XHU5NzI2XHU5NzI3XHU5NzI4XHU5NzI5XHU5NzJiXHU5NzJjXHU5NzJlXHU5NzJmXHU5NzMxXHU5NzMzXHU5''@;'; put 'put ''NzM0XHU5NzM1XHU5NzM2XHU5NzM3XHU5NzNhXHU5NzNiXHU5NzNjXHU5NzNkXHU5NzNmXHU5NzQwXHU5NzQxXHU5NzQyXHU5NzQzXHU5NzQ0XHU5NzQ1XHU5NzQ2XHU5NzQ3XHU5NzQ4XHU5NzQ5XHU5NzRhXHU5NzRiXHU5NzRjXHU5NzRkXHU5NzRlXHU5NzRmXHU5NzUwXHU5NzUxXHU5NzU0''@;'; put 'put ''XHU5NzU1XHU5NzU3XHU5NzU4XHU5NzVhXHU5NzVjXHU5NzVkXHU5NzVmXHU5NzYzXHU5NzY0XHU5NzY2XHU5NzY3XHU5NzY4XHU5NzZhXHU5NzZiXHU5NzZjXHU5NzZkXHU5NzZlXHU5NzZmXHU5NzcwXHU5NzcxXHVmZmZkXHU5NzcyXHU5Nzc1XHU5Nzc3XHU5Nzc4XHU5Nzc5XHU5NzdhXHU5''@;'; put 'put ''NzdiXHU5NzdkXHU5NzdlXHU5NzdmXHU5NzgwXHU5NzgxXHU5NzgyXHU5NzgzXHU5Nzg0XHU5Nzg2XHU5Nzg3XHU5Nzg4XHU5Nzg5XHU5NzhhXHU5NzhjXHU5NzhlXHU5NzhmXHU5NzkwXHU5NzkzXHU5Nzk1XHU5Nzk2XHU5Nzk3XHU5Nzk5XHU5NzlhXHU5NzliXHU5NzljXHU5NzlkXHU4MWMx''@;'; put 'put ''XHU4MWE2XHU2YjI0XHU2YjM3XHU2YjM5XHU2YjQzXHU2YjQ2XHU2YjU5XHU5OGQxXHU5OGQyXHU5OGQzXHU5OGQ1XHU5OGQ5XHU5OGRhXHU2YmIzXHU1ZjQwXHU2YmMyXHU4OWYzXHU2NTkwXHU5ZjUxXHU2NTkzXHU2NWJjXHU2NWM2XHU2NWM0XHU2NWMzXHU2NWNjXHU2NWNlXHU2NWQyXHU2''@;'; put 'put ''NWQ2XHU3MDgwXHU3MDljXHU3MDk2XHU3MDlkXHU3MGJiXHU3MGMwXHU3MGI3XHU3MGFiXHU3MGIxXHU3MGU4XHU3MGNhXHU3MTEwXHU3MTEzXHU3MTE2XHU3MTJmXHU3MTMxXHU3MTczXHU3MTVjXHU3MTY4XHU3MTQ1XHU3MTcyXHU3MTRhXHU3MTc4XHU3MTdhXHU3MTk4XHU3MWIzXHU3MWI1''@;'; put 'put ''XHU3MWE4XHU3MWEwXHU3MWUwXHU3MWQ0XHU3MWU3XHU3MWY5XHU3MjFkXHU3MjI4XHU3MDZjXHU3MTE4XHU3MTY2XHU3MWI5XHU2MjNlXHU2MjNkXHU2MjQzXHU2MjQ4XHU2MjQ5XHU3OTNiXHU3OTQwXHU3OTQ2XHU3OTQ5XHU3OTViXHU3OTVjXHU3OTUzXHU3OTVhXHU3OTYyXHU3OTU3XHU3''@;'; put 'put ''OTYwXHU3OTZmXHU3OTY3XHU3OTdhXHU3OTg1XHU3OThhXHU3OTlhXHU3OWE3XHU3OWIzXHU1ZmQxXHU1ZmQwXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzNl1bbV1dPTYwNDE2K20sUls2''@;'; put 'put ''MDQxNittXT14WzIzNl1bbV0pO2Zvcih4WzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTc5ZVx1OTc5Zlx1OTdhMVx1OTdhMlx1OTdhNFx1OTdhNVx1OTdhNlx1OTdhN1x1OTdhOFx1OTdhOVx1OTdhYVx1OTdhY1x1OTdhZVx1''@;'; put 'put ''OTdiMFx1OTdiMVx1OTdiM1x1OTdiNVx1OTdiNlx1OTdiN1x1OTdiOFx1OTdiOVx1OTdiYVx1OTdiYlx1OTdiY1x1OTdiZFx1OTdiZVx1OTdiZlx1OTdjMFx1OTdjMVx1OTdjMlx1OTdjM1x1OTdjNFx1OTdjNVx1OTdjNlx1OTdjN1x1OTdjOFx1OTdjOVx1OTdjYVx1OTdjYlx1OTdjY1x1OTdj''@;'; put 'put ''ZFx1OTdjZVx1OTdjZlx1OTdkMFx1OTdkMVx1OTdkMlx1OTdkM1x1OTdkNFx1OTdkNVx1OTdkNlx1OTdkN1x1OTdkOFx1OTdkOVx1OTdkYVx1OTdkYlx1OTdkY1x1OTdkZFx1OTdkZVx1OTdkZlx1OTdlMFx1OTdlMVx1OTdlMlx1OTdlM1x1ZmZmZFx1OTdlNFx1OTdlNVx1OTdlOFx1OTdlZVx1''@;'; put 'put ''OTdlZlx1OTdmMFx1OTdmMVx1OTdmMlx1OTdmNFx1OTdmN1x1OTdmOFx1OTdmOVx1OTdmYVx1OTdmYlx1OTdmY1x1OTdmZFx1OTdmZVx1OTdmZlx1OTgwMFx1OTgwMVx1OTgwMlx1OTgwM1x1OTgwNFx1OTgwNVx1OTgwNlx1OTgwN1x1OTgwOFx1OTgwOVx1OTgwYVx1OTgwYlx1OTgwY1x1OTgw''@;'; put 'put ''ZFx1OTgwZVx1NjAzY1x1NjA1ZFx1NjA1YVx1NjA2N1x1NjA0MVx1NjA1OVx1NjA2M1x1NjBhYlx1NjEwNlx1NjEwZFx1NjE1ZFx1NjFhOVx1NjE5ZFx1NjFjYlx1NjFkMVx1NjIwNlx1ODA4MFx1ODA3Zlx1NmM5M1x1NmNmNlx1NmRmY1x1NzdmNlx1NzdmOFx1NzgwMFx1NzgwOVx1NzgxN1x1''@;'; put 'put ''NzgxOFx1NzgxMVx1NjVhYlx1NzgyZFx1NzgxY1x1NzgxZFx1NzgzOVx1NzgzYVx1NzgzYlx1NzgxZlx1NzgzY1x1NzgyNVx1NzgyY1x1NzgyM1x1NzgyOVx1Nzg0ZVx1Nzg2ZFx1Nzg1Nlx1Nzg1N1x1NzgyNlx1Nzg1MFx1Nzg0N1x1Nzg0Y1x1Nzg2YVx1Nzg5Ylx1Nzg5M1x1Nzg5YVx1Nzg4''@;'; put 'put ''N1x1Nzg5Y1x1NzhhMVx1NzhhM1x1NzhiMlx1NzhiOVx1NzhhNVx1NzhkNFx1NzhkOVx1NzhjOVx1NzhlY1x1NzhmMlx1NzkwNVx1NzhmNFx1NzkxM1x1NzkyNFx1NzkxZVx1NzkzNFx1OWY5Ylx1OWVmOVx1OWVmYlx1OWVmY1x1NzZmMVx1NzcwNFx1NzcwZFx1NzZmOVx1NzcwN1x1NzcwOFx1''@;'; put 'put ''NzcxYVx1NzcyMlx1NzcxOVx1NzcyZFx1NzcyNlx1NzczNVx1NzczOFx1Nzc1MFx1Nzc1MVx1Nzc0N1x1Nzc0M1x1Nzc1YVx1Nzc2OFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzddW21d''@;'; put 'put ''XT02MDY3MittLFJbNjA2NzIrbV09eFsyMzddW21dKTtmb3IoeFsyMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4MGZcdTk4MTBcdTk4MTFcdTk4MTJcdTk4MTNcdTk4MTRcdTk4MTVcdTk4MTZcdTk4MTdcdTk4MThcdTk4MTlc''@;'; put 'put ''dTk4MWFcdTk4MWJcdTk4MWNcdTk4MWRcdTk4MWVcdTk4MWZcdTk4MjBcdTk4MjFcdTk4MjJcdTk4MjNcdTk4MjRcdTk4MjVcdTk4MjZcdTk4MjdcdTk4MjhcdTk4MjlcdTk4MmFcdTk4MmJcdTk4MmNcdTk4MmRcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzFcdTk4MzJcdTk4MzNcdTk4MzRcdTk4''@;'; put 'put ''MzVcdTk4MzZcdTk4MzdcdTk4MzhcdTk4MzlcdTk4M2FcdTk4M2JcdTk4M2NcdTk4M2RcdTk4M2VcdTk4M2ZcdTk4NDBcdTk4NDFcdTk4NDJcdTk4NDNcdTk4NDRcdTk4NDVcdTk4NDZcdTk4NDdcdTk4NDhcdTk4NDlcdTk4NGFcdTk4NGJcdTk4NGNcdTk4NGRcdWZmZmRcdTk4NGVcdTk4NGZc''@;'; put 'put ''dTk4NTBcdTk4NTFcdTk4NTJcdTk4NTNcdTk4NTRcdTk4NTVcdTk4NTZcdTk4NTdcdTk4NThcdTk4NTlcdTk4NWFcdTk4NWJcdTk4NWNcdTk4NWRcdTk4NWVcdTk4NWZcdTk4NjBcdTk4NjFcdTk4NjJcdTk4NjNcdTk4NjRcdTk4NjVcdTk4NjZcdTk4NjdcdTk4NjhcdTk4NjlcdTk4NmFcdTk4''@;'; put 'put ''NmJcdTk4NmNcdTk4NmRcdTk4NmVcdTc3NjJcdTc3NjVcdTc3N2ZcdTc3OGRcdTc3N2RcdTc3ODBcdTc3OGNcdTc3OTFcdTc3OWZcdTc3YTBcdTc3YjBcdTc3YjVcdTc3YmRcdTc1M2FcdTc1NDBcdTc1NGVcdTc1NGJcdTc1NDhcdTc1NWJcdTc1NzJcdTc1NzlcdTc1ODNcdTdmNThcdTdmNjFc''@;'; put 'put ''dTdmNWZcdThhNDhcdTdmNjhcdTdmNzRcdTdmNzFcdTdmNzlcdTdmODFcdTdmN2VcdTc2Y2RcdTc2ZTVcdTg4MzJcdTk0ODVcdTk0ODZcdTk0ODdcdTk0OGJcdTk0OGFcdTk0OGNcdTk0OGRcdTk0OGZcdTk0OTBcdTk0OTRcdTk0OTdcdTk0OTVcdTk0OWFcdTk0OWJcdTk0OWNcdTk0YTNcdTk0''@;'; put 'put ''YTRcdTk0YWJcdTk0YWFcdTk0YWRcdTk0YWNcdTk0YWZcdTk0YjBcdTk0YjJcdTk0YjRcdTk0YjZcdTk0YjdcdTk0YjhcdTk0YjlcdTk0YmFcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzhcdTk0YzlcdTk0Y2FcdTk0Y2JcdTk0Y2NcdTk0Y2RcdTk0Y2VcdTk0ZDBcdTk0ZDFcdTk0ZDJc''@;'; put 'put ''dTk0ZDVcdTk0ZDZcdTk0ZDdcdTk0ZDlcdTk0ZDhcdTk0ZGJcdTk0ZGVcdTk0ZGZcdTk0ZTBcdTk0ZTJcdTk0ZTRcdTk0ZTVcdTk0ZTdcdTk0ZThcdTk0ZWFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzOF1bbV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG9lW3hbMjM4XVttXV09NjA5MjgrbSxSWzYwOTI4K21dPXhbMjM4XVttXSk7Zm9yKHhbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ODZmXHU5ODcwXHU5ODcxXHU5ODcyXHU5ODczXHU5ODc0XHU5ODhiXHU5ODhlXHU5ODky''@;'; put 'put ''XHU5ODk1XHU5ODk5XHU5OGEzXHU5OGE4XHU5OGE5XHU5OGFhXHU5OGFiXHU5OGFjXHU5OGFkXHU5OGFlXHU5OGFmXHU5OGIwXHU5OGIxXHU5OGIyXHU5OGIzXHU5OGI0XHU5OGI1XHU5OGI2XHU5OGI3XHU5OGI4XHU5OGI5XHU5OGJhXHU5OGJiXHU5OGJjXHU5OGJkXHU5OGJlXHU5OGJmXHU5''@;'; put 'put ''OGMwXHU5OGMxXHU5OGMyXHU5OGMzXHU5OGM0XHU5OGM1XHU5OGM2XHU5OGM3XHU5OGM4XHU5OGM5XHU5OGNhXHU5OGNiXHU5OGNjXHU5OGNkXHU5OGNmXHU5OGQwXHU5OGQ0XHU5OGQ2XHU5OGQ3XHU5OGRiXHU5OGRjXHU5OGRkXHU5OGUwXHU5OGUxXHU5OGUyXHU5OGUzXHU5OGU0XHVmZmZk''@;'; put 'put ''XHU5OGU1XHU5OGU2XHU5OGU5XHU5OGVhXHU5OGViXHU5OGVjXHU5OGVkXHU5OGVlXHU5OGVmXHU5OGYwXHU5OGYxXHU5OGYyXHU5OGYzXHU5OGY0XHU5OGY1XHU5OGY2XHU5OGY3XHU5OGY4XHU5OGY5XHU5OGZhXHU5OGZiXHU5OGZjXHU5OGZkXHU5OGZlXHU5OGZmXHU5OTAwXHU5OTAxXHU5''@;'; put 'put ''OTAyXHU5OTAzXHU5OTA0XHU5OTA1XHU5OTA2XHU5OTA3XHU5NGU5XHU5NGViXHU5NGVlXHU5NGVmXHU5NGYzXHU5NGY0XHU5NGY1XHU5NGY3XHU5NGY5XHU5NGZjXHU5NGZkXHU5NGZmXHU5NTAzXHU5NTAyXHU5NTA2XHU5NTA3XHU5NTA5XHU5NTBhXHU5NTBkXHU5NTBlXHU5NTBmXHU5NTEy''@;'; put 'put ''XHU5NTEzXHU5NTE0XHU5NTE1XHU5NTE2XHU5NTE4XHU5NTFiXHU5NTFkXHU5NTFlXHU5NTFmXHU5NTIyXHU5NTJhXHU5NTJiXHU5NTI5XHU5NTJjXHU5NTMxXHU5NTMyXHU5NTM0XHU5NTM2XHU5NTM3XHU5NTM4XHU5NTNjXHU5NTNlXHU5NTNmXHU5NTQyXHU5NTM1XHU5NTQ0XHU5NTQ1XHU5''@;'; put 'put ''NTQ2XHU5NTQ5XHU5NTRjXHU5NTRlXHU5NTRmXHU5NTUyXHU5NTUzXHU5NTU0XHU5NTU2XHU5NTU3XHU5NTU4XHU5NTU5XHU5NTViXHU5NTVlXHU5NTVmXHU5NTVkXHU5NTYxXHU5NTYyXHU5NTY0XHU5NTY1XHU5NTY2XHU5NTY3XHU5NTY4XHU5NTY5XHU5NTZhXHU5NTZiXHU5NTZjXHU5NTZm''@;'; put 'put ''XHU5NTcxXHU5NTcyXHU5NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAzXHU3YTAyXHU3YTFlXHU3YTE0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzldW21dLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihvZVt4WzIzOV1bbV1dPTYxMTg0K20sUls2MTE4NCttXT14WzIzOV1bbV0pO2Zvcih4WzI0MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTkwOFx1OTkwOVx1OTkwYVx1OTkwYlx1OTkwY1x1OTkwZVx1OTkw''@;'; put 'put ''Zlx1OTkxMVx1OTkxMlx1OTkxM1x1OTkxNFx1OTkxNVx1OTkxNlx1OTkxN1x1OTkxOFx1OTkxOVx1OTkxYVx1OTkxYlx1OTkxY1x1OTkxZFx1OTkxZVx1OTkxZlx1OTkyMFx1OTkyMVx1OTkyMlx1OTkyM1x1OTkyNFx1OTkyNVx1OTkyNlx1OTkyN1x1OTkyOFx1OTkyOVx1OTkyYVx1OTkyYlx1''@;'; put 'put ''OTkyY1x1OTkyZFx1OTkyZlx1OTkzMFx1OTkzMVx1OTkzMlx1OTkzM1x1OTkzNFx1OTkzNVx1OTkzNlx1OTkzN1x1OTkzOFx1OTkzOVx1OTkzYVx1OTkzYlx1OTkzY1x1OTkzZFx1OTkzZVx1OTkzZlx1OTk0MFx1OTk0MVx1OTk0Mlx1OTk0M1x1OTk0NFx1OTk0NVx1OTk0Nlx1OTk0N1x1OTk0''@;'; put 'put ''OFx1OTk0OVx1ZmZmZFx1OTk0YVx1OTk0Ylx1OTk0Y1x1OTk0ZFx1OTk0ZVx1OTk0Zlx1OTk1MFx1OTk1MVx1OTk1Mlx1OTk1M1x1OTk1Nlx1OTk1N1x1OTk1OFx1OTk1OVx1OTk1YVx1OTk1Ylx1OTk1Y1x1OTk1ZFx1OTk1ZVx1OTk1Zlx1OTk2MFx1OTk2MVx1OTk2Mlx1OTk2NFx1OTk2Nlx1''@;'; put 'put ''OTk3M1x1OTk3OFx1OTk3OVx1OTk3Ylx1OTk3ZVx1OTk4Mlx1OTk4M1x1OTk4OVx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOFx1OWUyOVx1OWUyYVx1OWUy''@;'; put 'put ''Ylx1OWUyY1x1OWUzMlx1OWUzMVx1OWUzNlx1OWUzOFx1OWUzN1x1OWUzOVx1OWUzYVx1OWUzZVx1OWU0MVx1OWU0Mlx1OWU0NFx1OWU0Nlx1OWU0N1x1OWU0OFx1OWU0OVx1OWU0Ylx1OWU0Y1x1OWU0ZVx1OWU1MVx1OWU1NVx1OWU1N1x1OWU1YVx1OWU1Ylx1OWU1Y1x1OWU1ZVx1OWU2M1x1''@;'; put 'put ''OWU2Nlx1OWU2N1x1OWU2OFx1OWU2OVx1OWU2YVx1OWU2Ylx1OWU2Y1x1OWU3MVx1OWU2ZFx1OWU3M1x1NzU5Mlx1NzU5NFx1NzU5Nlx1NzVhMFx1NzU5ZFx1NzVhY1x1NzVhM1x1NzViM1x1NzViNFx1NzViOFx1NzVjNFx1NzViMVx1NzViMFx1NzVjM1x1NzVjMlx1NzVkNlx1NzVjZFx1NzVl''@;'; put 'put ''M1x1NzVlOFx1NzVlNlx1NzVlNFx1NzVlYlx1NzVlN1x1NzYwM1x1NzVmMVx1NzVmY1x1NzVmZlx1NzYxMFx1NzYwMFx1NzYwNVx1NzYwY1x1NzYxN1x1NzYwYVx1NzYyNVx1NzYxOFx1NzYxNVx1NzYxOVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0MF0ubGVuZ3RoOysrbSk2NTUzMyE9''@;'; put 'put ''PXhbMjQwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDBdW21dXT02MTQ0MCttLFJbNjE0NDArbV09eFsyNDBdW21dKTtmb3IoeFsyNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5OGNcdTk5OGVcdTk5OWFcdTk5OWJcdTk5''@;'; put 'put ''OWNcdTk5OWRcdTk5OWVcdTk5OWZcdTk5YTBcdTk5YTFcdTk5YTJcdTk5YTNcdTk5YTRcdTk5YTZcdTk5YTdcdTk5YTlcdTk5YWFcdTk5YWJcdTk5YWNcdTk5YWRcdTk5YWVcdTk5YWZcdTk5YjBcdTk5YjFcdTk5YjJcdTk5YjNcdTk5YjRcdTk5YjVcdTk5YjZcdTk5YjdcdTk5YjhcdTk5Yjlc''@;'; put 'put ''dTk5YmFcdTk5YmJcdTk5YmNcdTk5YmRcdTk5YmVcdTk5YmZcdTk5YzBcdTk5YzFcdTk5YzJcdTk5YzNcdTk5YzRcdTk5YzVcdTk5YzZcdTk5YzdcdTk5YzhcdTk5YzlcdTk5Y2FcdTk5Y2JcdTk5Y2NcdTk5Y2RcdTk5Y2VcdTk5Y2ZcdTk5ZDBcdTk5ZDFcdTk5ZDJcdTk5ZDNcdTk5ZDRcdTk5''@;'; put 'put ''ZDVcdTk5ZDZcdTk5ZDdcdTk5ZDhcdWZmZmRcdTk5ZDlcdTk5ZGFcdTk5ZGJcdTk5ZGNcdTk5ZGRcdTk5ZGVcdTk5ZGZcdTk5ZTBcdTk5ZTFcdTk5ZTJcdTk5ZTNcdTk5ZTRcdTk5ZTVcdTk5ZTZcdTk5ZTdcdTk5ZThcdTk5ZTlcdTk5ZWFcdTk5ZWJcdTk5ZWNcdTk5ZWRcdTk5ZWVcdTk5ZWZc''@;'; put 'put ''dTk5ZjBcdTk5ZjFcdTk5ZjJcdTk5ZjNcdTk5ZjRcdTk5ZjVcdTk5ZjZcdTk5ZjdcdTk5ZjhcdTk5ZjlcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNcdTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2''@;'; put 'put ''NmJcdTc2NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJc''@;'; put 'put ''dTg4Y2VcdTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2JcdTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgw''@;'; put 'put ''MTZcdTgwMWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4ODBcdTk4ODNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDFdLmxlbmd0''@;'; put 'put ''aDsrK20pNjU1MzMhPT14WzI0MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQxXVttXV09NjE2OTYrbSxSWzYxNjk2K21dPXhbMjQxXVttXSk7Zm9yKHhbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5OWZhXHU5OWZiXHU5''@;'; put 'put ''OWZjXHU5OWZkXHU5OWZlXHU5OWZmXHU5YTAwXHU5YTAxXHU5YTAyXHU5YTAzXHU5YTA0XHU5YTA1XHU5YTA2XHU5YTA3XHU5YTA4XHU5YTA5XHU5YTBhXHU5YTBiXHU5YTBjXHU5YTBkXHU5YTBlXHU5YTBmXHU5YTEwXHU5YTExXHU5YTEyXHU5YTEzXHU5YTE0XHU5YTE1XHU5YTE2XHU5YTE3''@;'; put 'put ''XHU5YTE4XHU5YTE5XHU5YTFhXHU5YTFiXHU5YTFjXHU5YTFkXHU5YTFlXHU5YTFmXHU5YTIwXHU5YTIxXHU5YTIyXHU5YTIzXHU5YTI0XHU5YTI1XHU5YTI2XHU5YTI3XHU5YTI4XHU5YTI5XHU5YTJhXHU5YTJiXHU5YTJjXHU5YTJkXHU5YTJlXHU5YTJmXHU5YTMwXHU5YTMxXHU5YTMyXHU5''@;'; put 'put ''YTMzXHU5YTM0XHU5YTM1XHU5YTM2XHU5YTM3XHU5YTM4XHVmZmZkXHU5YTM5XHU5YTNhXHU5YTNiXHU5YTNjXHU5YTNkXHU5YTNlXHU5YTNmXHU5YTQwXHU5YTQxXHU5YTQyXHU5YTQzXHU5YTQ0XHU5YTQ1XHU5YTQ2XHU5YTQ3XHU5YTQ4XHU5YTQ5XHU5YTRhXHU5YTRiXHU5YTRjXHU5YTRk''@;'; put 'put ''XHU5YTRlXHU5YTRmXHU5YTUwXHU5YTUxXHU5YTUyXHU5YTUzXHU5YTU0XHU5YTU1XHU5YTU2XHU5YTU3XHU5YTU4XHU5YTU5XHU5ODg5XHU5ODhjXHU5ODhkXHU5ODhmXHU5ODk0XHU5ODlhXHU5ODliXHU5ODllXHU5ODlmXHU5OGExXHU5OGEyXHU5OGE1XHU5OGE2XHU4NjRkXHU4NjU0XHU4''@;'; put 'put ''NjZjXHU4NjZlXHU4NjdmXHU4NjdhXHU4NjdjXHU4NjdiXHU4NmE4XHU4NjhkXHU4NjhiXHU4NmFjXHU4NjlkXHU4NmE3XHU4NmEzXHU4NmFhXHU4NjkzXHU4NmE5XHU4NmI2XHU4NmM0XHU4NmI1XHU4NmNlXHU4NmIwXHU4NmJhXHU4NmIxXHU4NmFmXHU4NmM5XHU4NmNmXHU4NmI0XHU4NmU5''@;'; put 'put ''XHU4NmYxXHU4NmYyXHU4NmVkXHU4NmYzXHU4NmQwXHU4NzEzXHU4NmRlXHU4NmY0XHU4NmRmXHU4NmQ4XHU4NmQxXHU4NzAzXHU4NzA3XHU4NmY4XHU4NzA4XHU4NzBhXHU4NzBkXHU4NzA5XHU4NzIzXHU4NzNiXHU4NzFlXHU4NzI1XHU4NzJlXHU4NzFhXHU4NzNlXHU4NzQ4XHU4NzM0XHU4''@;'; put 'put ''NzMxXHU4NzI5XHU4NzM3XHU4NzNmXHU4NzgyXHU4NzIyXHU4NzdkXHU4NzdlXHU4NzdiXHU4NzYwXHU4NzcwXHU4NzRjXHU4NzZlXHU4NzhiXHU4NzUzXHU4NzYzXHU4NzdjXHU4NzY0XHU4NzU5XHU4NzY1XHU4NzkzXHU4N2FmXHU4N2E4XHU4N2QyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20h''@;'; put 'put ''PXhbMjQyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0Ml1bbV1dPTYxOTUyK20sUls2MTk1MittXT14WzI0Ml1bbV0pO2Zvcih4WzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''OWE1YVx1OWE1Ylx1OWE1Y1x1OWE1ZFx1OWE1ZVx1OWE1Zlx1OWE2MFx1OWE2MVx1OWE2Mlx1OWE2M1x1OWE2NFx1OWE2NVx1OWE2Nlx1OWE2N1x1OWE2OFx1OWE2OVx1OWE2YVx1OWE2Ylx1OWE3Mlx1OWE4M1x1OWE4OVx1OWE4ZFx1OWE4ZVx1OWE5NFx1OWE5NVx1OWE5OVx1OWFhNlx1OWFh''@;'; put 'put ''OVx1OWFhYVx1OWFhYlx1OWFhY1x1OWFhZFx1OWFhZVx1OWFhZlx1OWFiMlx1OWFiM1x1OWFiNFx1OWFiNVx1OWFiOVx1OWFiYlx1OWFiZFx1OWFiZVx1OWFiZlx1OWFjM1x1OWFjNFx1OWFjNlx1OWFjN1x1OWFjOFx1OWFjOVx1OWFjYVx1OWFjZFx1OWFjZVx1OWFjZlx1OWFkMFx1OWFkMlx1''@;'; put 'put ''OWFkNFx1OWFkNVx1OWFkNlx1OWFkN1x1OWFkOVx1OWFkYVx1OWFkYlx1OWFkY1x1ZmZmZFx1OWFkZFx1OWFkZVx1OWFlMFx1OWFlMlx1OWFlM1x1OWFlNFx1OWFlNVx1OWFlN1x1OWFlOFx1OWFlOVx1OWFlYVx1OWFlY1x1OWFlZVx1OWFmMFx1OWFmMVx1OWFmMlx1OWFmM1x1OWFmNFx1OWFm''@;'; put 'put ''NVx1OWFmNlx1OWFmN1x1OWFmOFx1OWFmYVx1OWFmY1x1OWFmZFx1OWFmZVx1OWFmZlx1OWIwMFx1OWIwMVx1OWIwMlx1OWIwNFx1OWIwNVx1OWIwNlx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1''@;'; put 'put ''ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1ODgyMVx1ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2Iw''@;'; put 'put ''YVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2IzZVx1N2IxZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1''@;'; put 'put ''N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1N2JjMVx1N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYlx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLG09MDttIT14WzI0M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDNdW21dXT02MjIwOCttLFJbNjIyMDgrbV09eFsyNDNdW21dKTtmb3IoeFsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTliMDdcdTliMDlcdTliMGFcdTliMGJcdTliMGNcdTliMGRcdTliMGVcdTliMTBcdTliMTFcdTliMTJcdTliMTRcdTliMTVcdTliMTZcdTliMTdcdTliMThcdTliMTlcdTliMWFcdTliMWJcdTliMWNcdTliMWRcdTliMWVcdTliMjBcdTliMjFcdTliMjJcdTliMjRcdTli''@;'; put 'put ''MjVcdTliMjZcdTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmJcdTliMmNcdTliMmRcdTliMmVcdTliMzBcdTliMzFcdTliMzNcdTliMzRcdTliMzVcdTliMzZcdTliMzdcdTliMzhcdTliMzlcdTliM2FcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNc''@;'; put 'put ''dTliNGVcdTliNTBcdTliNTJcdTliNTNcdTliNTVcdTliNTZcdTliNTdcdTliNThcdTliNTlcdTliNWFcdWZmZmRcdTliNWJcdTliNWNcdTliNWRcdTliNWVcdTliNWZcdTliNjBcdTliNjFcdTliNjJcdTliNjNcdTliNjRcdTliNjVcdTliNjZcdTliNjdcdTliNjhcdTliNjlcdTliNmFcdTli''@;'; put 'put ''NmJcdTliNmNcdTliNmRcdTliNmVcdTliNmZcdTliNzBcdTliNzFcdTliNzJcdTliNzNcdTliNzRcdTliNzVcdTliNzZcdTliNzdcdTliNzhcdTliNzlcdTliN2FcdTliN2JcdTdjMWZcdTdjMmFcdTdjMjZcdTdjMzhcdTdjNDFcdTdjNDBcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDRcdTgxZWNc''@;'; put 'put ''dTg4NDRcdTgyMjFcdTgyMjJcdTgyMjNcdTgyMmRcdTgyMmZcdTgyMjhcdTgyMmJcdTgyMzhcdTgyM2JcdTgyMzNcdTgyMzRcdTgyM2VcdTgyNDRcdTgyNDlcdTgyNGJcdTgyNGZcdTgyNWFcdTgyNWZcdTgyNjhcdTg4N2VcdTg4ODVcdTg4ODhcdTg4ZDhcdTg4ZGZcdTg5NWVcdTdmOWRcdTdm''@;'; put 'put ''OWZcdTdmYTdcdTdmYWZcdTdmYjBcdTdmYjJcdTdjN2NcdTY1NDlcdTdjOTFcdTdjOWRcdTdjOWNcdTdjOWVcdTdjYTJcdTdjYjJcdTdjYmNcdTdjYmRcdTdjYzFcdTdjYzdcdTdjY2NcdTdjY2RcdTdjYzhcdTdjYzVcdTdjZDdcdTdjZThcdTgyNmVcdTY2YThcdTdmYmZcdTdmY2VcdTdmZDVc''@;'; put 'put ''dTdmZTVcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZWVcdTdmZjNcdTdjZjhcdTdkNzdcdTdkYTZcdTdkYWVcdTdlNDdcdTdlOWJcdTllYjhcdTllYjRcdThkNzNcdThkODRcdThkOTRcdThkOTFcdThkYjFcdThkNjdcdThkNmRcdThjNDdcdThjNDlcdTkxNGFcdTkxNTBcdTkxNGVcdTkxNGZcdTkx''@;'; put 'put ''NjRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ0XVttXV09NjI0NjQrbSxSWzYyNDY0K21dPXhbMjQ0XVttXSk7Zm9yKHhbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjdjXHU5YjdkXHU5YjdlXHU5YjdmXHU5YjgwXHU5YjgxXHU5YjgyXHU5YjgzXHU5Yjg0XHU5Yjg1XHU5Yjg2XHU5Yjg3XHU5Yjg4XHU5Yjg5XHU5YjhhXHU5YjhiXHU5YjhjXHU5YjhkXHU5YjhlXHU5YjhmXHU5YjkwXHU5YjkxXHU5YjkyXHU5''@;'; put 'put ''YjkzXHU5Yjk0XHU5Yjk1XHU5Yjk2XHU5Yjk3XHU5Yjk4XHU5Yjk5XHU5YjlhXHU5YjliXHU5YjljXHU5YjlkXHU5YjllXHU5YjlmXHU5YmEwXHU5YmExXHU5YmEyXHU5YmEzXHU5YmE0XHU5YmE1XHU5YmE2XHU5YmE3XHU5YmE4XHU5YmE5XHU5YmFhXHU5YmFiXHU5YmFjXHU5YmFkXHU5YmFl''@;'; put 'put ''XHU5YmFmXHU5YmIwXHU5YmIxXHU5YmIyXHU5YmIzXHU5YmI0XHU5YmI1XHU5YmI2XHU5YmI3XHU5YmI4XHU5YmI5XHU5YmJhXHVmZmZkXHU5YmJiXHU5YmJjXHU5YmJkXHU5YmJlXHU5YmJmXHU5YmMwXHU5YmMxXHU5YmMyXHU5YmMzXHU5YmM0XHU5YmM1XHU5YmM2XHU5YmM3XHU5YmM4XHU5''@;'; put 'put ''YmM5XHU5YmNhXHU5YmNiXHU5YmNjXHU5YmNkXHU5YmNlXHU5YmNmXHU5YmQwXHU5YmQxXHU5YmQyXHU5YmQzXHU5YmQ0XHU5YmQ1XHU5YmQ2XHU5YmQ3XHU5YmQ4XHU5YmQ5XHU5YmRhXHU5YmRiXHU5MTYyXHU5MTYxXHU5MTcwXHU5MTY5XHU5MTZmXHU5MTdkXHU5MTdlXHU5MTcyXHU5MTc0''@;'; put 'put ''XHU5MTc5XHU5MThjXHU5MTg1XHU5MTkwXHU5MThkXHU5MTkxXHU5MWEyXHU5MWEzXHU5MWFhXHU5MWFkXHU5MWFlXHU5MWFmXHU5MWI1XHU5MWI0XHU5MWJhXHU4YzU1XHU5ZTdlXHU4ZGI4XHU4ZGViXHU4ZTA1XHU4ZTU5XHU4ZTY5XHU4ZGI1XHU4ZGJmXHU4ZGJjXHU4ZGJhXHU4ZGM0XHU4''@;'; put 'put ''ZGQ2XHU4ZGQ3XHU4ZGRhXHU4ZGRlXHU4ZGNlXHU4ZGNmXHU4ZGRiXHU4ZGM2XHU4ZGVjXHU4ZGY3XHU4ZGY4XHU4ZGUzXHU4ZGY5XHU4ZGZiXHU4ZGU0XHU4ZTA5XHU4ZGZkXHU4ZTE0XHU4ZTFkXHU4ZTFmXHU4ZTJjXHU4ZTJlXHU4ZTIzXHU4ZTJmXHU4ZTNhXHU4ZTQwXHU4ZTM5XHU4ZTM1''@;'; put 'put ''XHU4ZTNkXHU4ZTMxXHU4ZTQ5XHU4ZTQxXHU4ZTQyXHU4ZTUxXHU4ZTUyXHU4ZTRhXHU4ZTcwXHU4ZTc2XHU4ZTdjXHU4ZTZmXHU4ZTc0XHU4ZTg1XHU4ZThmXHU4ZTk0XHU4ZTkwXHU4ZTljXHU4ZTllXHU4Yzc4XHU4YzgyXHU4YzhhXHU4Yzg1XHU4Yzk4XHU4Yzk0XHU2NTliXHU4OWQ2XHU4''@;'; put 'put ''OWRlXHU4OWRhXHU4OWRjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0NV1bbV1dPTYyNzIwK20sUls2MjcyMCttXT14WzI0NV1bbV0pO2Zvcih4WzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWJkY1x1OWJkZFx1OWJkZVx1OWJkZlx1OWJlMFx1OWJlMVx1OWJlMlx1OWJlM1x1OWJlNFx1OWJlNVx1OWJlNlx1OWJlN1x1OWJlOFx1OWJlOVx1OWJlYVx1OWJlYlx1OWJlY1x1OWJlZFx1OWJlZVx1OWJlZlx1OWJmMFx1''@;'; put 'put ''OWJmMVx1OWJmMlx1OWJmM1x1OWJmNFx1OWJmNVx1OWJmNlx1OWJmN1x1OWJmOFx1OWJmOVx1OWJmYVx1OWJmYlx1OWJmY1x1OWJmZFx1OWJmZVx1OWJmZlx1OWMwMFx1OWMwMVx1OWMwMlx1OWMwM1x1OWMwNFx1OWMwNVx1OWMwNlx1OWMwN1x1OWMwOFx1OWMwOVx1OWMwYVx1OWMwYlx1OWMw''@;'; put 'put ''Y1x1OWMwZFx1OWMwZVx1OWMwZlx1OWMxMFx1OWMxMVx1OWMxMlx1OWMxM1x1OWMxNFx1OWMxNVx1OWMxNlx1OWMxN1x1OWMxOFx1OWMxOVx1OWMxYVx1ZmZmZFx1OWMxYlx1OWMxY1x1OWMxZFx1OWMxZVx1OWMxZlx1OWMyMFx1OWMyMVx1OWMyMlx1OWMyM1x1OWMyNFx1OWMyNVx1OWMyNlx1''@;'; put 'put ''OWMyN1x1OWMyOFx1OWMyOVx1OWMyYVx1OWMyYlx1OWMyY1x1OWMyZFx1OWMyZVx1OWMyZlx1OWMzMFx1OWMzMVx1OWMzMlx1OWMzM1x1OWMzNFx1OWMzNVx1OWMzNlx1OWMzN1x1OWMzOFx1OWMzOVx1OWMzYVx1OWMzYlx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZl''@;'; put 'put ''OVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NVx1OWY4Nlx1OWY4N1x1OWY4OFx1OWY4OVx1OWY4YVx1OWY4Y1x1OWVmZVx1OWYwYlx1OWYwZFx1OTZiOVx1OTZiY1x1OTZiZFx1OTZjZVx1''@;'; put 'put ''OTZkMlx1NzdiZlx1OTZlMFx1OTI4ZVx1OTJhZVx1OTJjOFx1OTMzZVx1OTM2YVx1OTNjYVx1OTM4Zlx1OTQzZVx1OTQ2Ylx1OWM3Zlx1OWM4Mlx1OWM4NVx1OWM4Nlx1OWM4N1x1OWM4OFx1N2EyM1x1OWM4Ylx1OWM4ZVx1OWM5MFx1OWM5MVx1OWM5Mlx1OWM5NFx1OWM5NVx1OWM5YVx1OWM5''@;'; put 'put ''Ylx1OWM5ZVx1OWM5Zlx1OWNhMFx1OWNhMVx1OWNhMlx1OWNhM1x1OWNhNVx1OWNhNlx1OWNhN1x1OWNhOFx1OWNhOVx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMFx1OWNiMVx1OWNiMlx1OWNiM1x1OWNiNFx1OWNiNVx1OWNiNlx1OWNiN1x1OWNiYVx1OWNiYlx1OWNiY1x1OWNiZFx1OWNjNFx1''@;'; put 'put ''OWNjNVx1OWNjNlx1OWNjN1x1OWNjYVx1OWNjYlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQ2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDZdW21dXT02Mjk3NittLFJbNjI5NzYrbV09eFsyNDZdW21dKTtmb3IoeFsyNDddPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTljM2NcdTljM2RcdTljM2VcdTljM2ZcdTljNDBcdTljNDFcdTljNDJcdTljNDNcdTljNDRcdTljNDVcdTljNDZcdTljNDdcdTljNDhcdTljNDlcdTljNGFcdTljNGJcdTljNGNcdTljNGRcdTljNGVc''@;'; put 'put ''dTljNGZcdTljNTBcdTljNTFcdTljNTJcdTljNTNcdTljNTRcdTljNTVcdTljNTZcdTljNTdcdTljNThcdTljNTlcdTljNWFcdTljNWJcdTljNWNcdTljNWRcdTljNWVcdTljNWZcdTljNjBcdTljNjFcdTljNjJcdTljNjNcdTljNjRcdTljNjVcdTljNjZcdTljNjdcdTljNjhcdTljNjlcdTlj''@;'; put 'put ''NmFcdTljNmJcdTljNmNcdTljNmRcdTljNmVcdTljNmZcdTljNzBcdTljNzFcdTljNzJcdTljNzNcdTljNzRcdTljNzVcdTljNzZcdTljNzdcdTljNzhcdTljNzlcdTljN2FcdWZmZmRcdTljN2JcdTljN2RcdTljN2VcdTljODBcdTljODNcdTljODRcdTljODlcdTljOGFcdTljOGNcdTljOGZc''@;'; put 'put ''dTljOTNcdTljOTZcdTljOTdcdTljOThcdTljOTlcdTljOWRcdTljYWFcdTljYWNcdTljYWZcdTljYjlcdTljYmVcdTljYmZcdTljYzBcdTljYzFcdTljYzJcdTljYzhcdTljYzlcdTljZDFcdTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2NcdTljY2RcdTljY2VcdTljY2ZcdTlj''@;'; put 'put ''ZDBcdTljZDNcdTljZDRcdTljZDVcdTljZDdcdTljZDhcdTljZDlcdTljZGNcdTljZGRcdTljZGZcdTljZTJcdTk3N2NcdTk3ODVcdTk3OTFcdTk3OTJcdTk3OTRcdTk3YWZcdTk3YWJcdTk3YTNcdTk3YjJcdTk3YjRcdTlhYjFcdTlhYjBcdTlhYjdcdTllNThcdTlhYjZcdTlhYmFcdTlhYmNc''@;'; put 'put ''dTlhYzFcdTlhYzBcdTlhYzVcdTlhYzJcdTlhY2JcdTlhY2NcdTlhZDFcdTliNDVcdTliNDNcdTliNDdcdTliNDlcdTliNDhcdTliNGRcdTliNTFcdTk4ZThcdTk5MGRcdTk5MmVcdTk5NTVcdTk5NTRcdTlhZGZcdTlhZTFcdTlhZTZcdTlhZWZcdTlhZWJcdTlhZmJcdTlhZWRcdTlhZjlcdTli''@;'; put 'put ''MDhcdTliMGZcdTliMTNcdTliMWZcdTliMjNcdTllYmRcdTllYmVcdTdlM2JcdTllODJcdTllODdcdTllODhcdTllOGJcdTllOTJcdTkzZDZcdTllOWRcdTllOWZcdTllZGJcdTllZGNcdTllZGRcdTllZTBcdTllZGZcdTllZTJcdTllZTlcdTllZTdcdTllZTVcdTllZWFcdTllZWZcdTlmMjJc''@;'; put 'put ''dTlmMmNcdTlmMmZcdTlmMzlcdTlmMzdcdTlmM2RcdTlmM2VcdTlmNDRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDddLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ3XVttXV09NjMyMzIrbSxSWzYzMjMyK21dPXhbMjQ3XVttXSk7Zm9y''@;'; put 'put ''KHhbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2UzXHU5Y2U0XHU5Y2U1XHU5Y2U2XHU5Y2U3XHU5Y2U4XHU5Y2U5XHU5Y2VhXHU5Y2ViXHU5Y2VjXHU5Y2VkXHU5Y2VlXHU5Y2VmXHU5Y2YwXHU5Y2YxXHU5Y2YyXHU5Y2Yz''@;'; put 'put ''XHU5Y2Y0XHU5Y2Y1XHU5Y2Y2XHU5Y2Y3XHU5Y2Y4XHU5Y2Y5XHU5Y2ZhXHU5Y2ZiXHU5Y2ZjXHU5Y2ZkXHU5Y2ZlXHU5Y2ZmXHU5ZDAwXHU5ZDAxXHU5ZDAyXHU5ZDAzXHU5ZDA0XHU5ZDA1XHU5ZDA2XHU5ZDA3XHU5ZDA4XHU5ZDA5XHU5ZDBhXHU5ZDBiXHU5ZDBjXHU5ZDBkXHU5ZDBlXHU5''@;'; put 'put ''ZDBmXHU5ZDEwXHU5ZDExXHU5ZDEyXHU5ZDEzXHU5ZDE0XHU5ZDE1XHU5ZDE2XHU5ZDE3XHU5ZDE4XHU5ZDE5XHU5ZDFhXHU5ZDFiXHU5ZDFjXHU5ZDFkXHU5ZDFlXHU5ZDFmXHU5ZDIwXHU5ZDIxXHVmZmZkXHU5ZDIyXHU5ZDIzXHU5ZDI0XHU5ZDI1XHU5ZDI2XHU5ZDI3XHU5ZDI4XHU5ZDI5''@;'; put 'put ''XHU5ZDJhXHU5ZDJiXHU5ZDJjXHU5ZDJkXHU5ZDJlXHU5ZDJmXHU5ZDMwXHU5ZDMxXHU5ZDMyXHU5ZDMzXHU5ZDM0XHU5ZDM1XHU5ZDM2XHU5ZDM3XHU5ZDM4XHU5ZDM5XHU5ZDNhXHU5ZDNiXHU5ZDNjXHU5ZDNkXHU5ZDNlXHU5ZDNmXHU5ZDQwXHU5ZDQxXHU5ZDQyXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0OF1bbV1dPTYzNDg4K20sUls2MzQ4OCttXT14''@;'; put 'put ''WzI0OF1bbV0pO2Zvcih4WzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWQ0M1x1OWQ0NFx1OWQ0NVx1OWQ0Nlx1OWQ0N1x1OWQ0OFx1OWQ0OVx1OWQ0YVx1OWQ0Ylx1OWQ0Y1x1OWQ0ZFx1OWQ0ZVx1OWQ0Zlx1OWQ1MFx1OWQ1''@;'; put 'put ''MVx1OWQ1Mlx1OWQ1M1x1OWQ1NFx1OWQ1NVx1OWQ1Nlx1OWQ1N1x1OWQ1OFx1OWQ1OVx1OWQ1YVx1OWQ1Ylx1OWQ1Y1x1OWQ1ZFx1OWQ1ZVx1OWQ1Zlx1OWQ2MFx1OWQ2MVx1OWQ2Mlx1OWQ2M1x1OWQ2NFx1OWQ2NVx1OWQ2Nlx1OWQ2N1x1OWQ2OFx1OWQ2OVx1OWQ2YVx1OWQ2Ylx1OWQ2Y1x1''@;'; put 'put ''OWQ2ZFx1OWQ2ZVx1OWQ2Zlx1OWQ3MFx1OWQ3MVx1OWQ3Mlx1OWQ3M1x1OWQ3NFx1OWQ3NVx1OWQ3Nlx1OWQ3N1x1OWQ3OFx1OWQ3OVx1OWQ3YVx1OWQ3Ylx1OWQ3Y1x1OWQ3ZFx1OWQ3ZVx1OWQ3Zlx1OWQ4MFx1OWQ4MVx1ZmZmZFx1OWQ4Mlx1OWQ4M1x1OWQ4NFx1OWQ4NVx1OWQ4Nlx1OWQ4''@;'; put 'put ''N1x1OWQ4OFx1OWQ4OVx1OWQ4YVx1OWQ4Ylx1OWQ4Y1x1OWQ4ZFx1OWQ4ZVx1OWQ4Zlx1OWQ5MFx1OWQ5MVx1OWQ5Mlx1OWQ5M1x1OWQ5NFx1OWQ5NVx1OWQ5Nlx1OWQ5N1x1OWQ5OFx1OWQ5OVx1OWQ5YVx1OWQ5Ylx1OWQ5Y1x1OWQ5ZFx1OWQ5ZVx1OWQ5Zlx1OWRhMFx1OWRhMVx1OWRhMlx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQ5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDldW21dXT02Mzc0NCtt''@;'; put 'put ''LFJbNjM3NDQrbV09eFsyNDldW21dKTtmb3IoeFsyNTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlkYTNcdTlkYTRcdTlkYTVcdTlkYTZcdTlkYTdcdTlkYThcdTlkYTlcdTlkYWFcdTlkYWJcdTlkYWNcdTlkYWRcdTlkYWVcdTlk''@;'; put 'put ''YWZcdTlkYjBcdTlkYjFcdTlkYjJcdTlkYjNcdTlkYjRcdTlkYjVcdTlkYjZcdTlkYjdcdTlkYjhcdTlkYjlcdTlkYmFcdTlkYmJcdTlkYmNcdTlkYmRcdTlkYmVcdTlkYmZcdTlkYzBcdTlkYzFcdTlkYzJcdTlkYzNcdTlkYzRcdTlkYzVcdTlkYzZcdTlkYzdcdTlkYzhcdTlkYzlcdTlkY2Fc''@;'; put 'put ''dTlkY2JcdTlkY2NcdTlkY2RcdTlkY2VcdTlkY2ZcdTlkZDBcdTlkZDFcdTlkZDJcdTlkZDNcdTlkZDRcdTlkZDVcdTlkZDZcdTlkZDdcdTlkZDhcdTlkZDlcdTlkZGFcdTlkZGJcdTlkZGNcdTlkZGRcdTlkZGVcdTlkZGZcdTlkZTBcdTlkZTFcdWZmZmRcdTlkZTJcdTlkZTNcdTlkZTRcdTlk''@;'; put 'put ''ZTVcdTlkZTZcdTlkZTdcdTlkZThcdTlkZTlcdTlkZWFcdTlkZWJcdTlkZWNcdTlkZWRcdTlkZWVcdTlkZWZcdTlkZjBcdTlkZjFcdTlkZjJcdTlkZjNcdTlkZjRcdTlkZjVcdTlkZjZcdTlkZjdcdTlkZjhcdTlkZjlcdTlkZmFcdTlkZmJcdTlkZmNcdTlkZmRcdTlkZmVcdTlkZmZcdTllMDBc''@;'; put 'put ''dTllMDFcdTllMDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNTBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI1MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjUw''@;'; put 'put ''XVttXV09NjRlMyttLFJbNjRlMyttXT14WzI1MF1bbV0pO2Zvcih4WzI1MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWUwM1x1OWUwNFx1OWUwNVx1OWUwNlx1OWUwN1x1OWUwOFx1OWUwOVx1OWUwYVx1OWUwYlx1OWUwY1x1OWUw''@;'; put 'put ''ZFx1OWUwZVx1OWUwZlx1OWUxMFx1OWUxMVx1OWUxMlx1OWUxM1x1OWUxNFx1OWUxNVx1OWUxNlx1OWUxN1x1OWUxOFx1OWUxOVx1OWUxYVx1OWUxYlx1OWUxY1x1OWUxZFx1OWUxZVx1OWUyNFx1OWUyN1x1OWUyZVx1OWUzMFx1OWUzNFx1OWUzYlx1OWUzY1x1OWU0MFx1OWU0ZFx1OWU1MFx1''@;'; put 'put ''OWU1Mlx1OWU1M1x1OWU1NFx1OWU1Nlx1OWU1OVx1OWU1ZFx1OWU1Zlx1OWU2MFx1OWU2MVx1OWU2Mlx1OWU2NVx1OWU2ZVx1OWU2Zlx1OWU3Mlx1OWU3NFx1OWU3NVx1OWU3Nlx1OWU3N1x1OWU3OFx1OWU3OVx1OWU3YVx1OWU3Ylx1OWU3Y1x1OWU3ZFx1OWU4MFx1ZmZmZFx1OWU4MVx1OWU4''@;'; put 'put ''M1x1OWU4NFx1OWU4NVx1OWU4Nlx1OWU4OVx1OWU4YVx1OWU4Y1x1OWU4ZFx1OWU4ZVx1OWU4Zlx1OWU5MFx1OWU5MVx1OWU5NFx1OWU5NVx1OWU5Nlx1OWU5N1x1OWU5OFx1OWU5OVx1OWU5YVx1OWU5Ylx1OWU5Y1x1OWU5ZVx1OWVhMFx1OWVhMVx1OWVhMlx1OWVhM1x1OWVhNFx1OWVhNVx1''@;'; put 'put ''OWVhN1x1OWVhOFx1OWVhOVx1OWVhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI1MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjUxXVttXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYob2VbeFsyNTFdW21dXT02NDI1NittLFJbNjQyNTYrbV09eFsyNTFdW21dKTtmb3IoeFsyNTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTllYWJcdTllYWNcdTllYWRcdTllYWVcdTllYWZcdTllYjBcdTllYjFcdTllYjJcdTll''@;'; put 'put ''YjNcdTllYjVcdTllYjZcdTllYjdcdTllYjlcdTllYmFcdTllYmNcdTllYmZcdTllYzBcdTllYzFcdTllYzJcdTllYzNcdTllYzVcdTllYzZcdTllYzdcdTllYzhcdTllY2FcdTllY2JcdTllY2NcdTllZDBcdTllZDJcdTllZDNcdTllZDVcdTllZDZcdTllZDdcdTllZDlcdTllZGFcdTllZGVc''@;'; put 'put ''dTllZTFcdTllZTNcdTllZTRcdTllZTZcdTllZThcdTllZWJcdTllZWNcdTllZWRcdTllZWVcdTllZjBcdTllZjFcdTllZjJcdTllZjNcdTllZjRcdTllZjVcdTllZjZcdTllZjdcdTllZjhcdTllZmFcdTllZmRcdTllZmZcdTlmMDBcdTlmMDFcdTlmMDJcdTlmMDNcdTlmMDRcdTlmMDVcdWZm''@;'; put 'put ''ZmRcdTlmMDZcdTlmMDdcdTlmMDhcdTlmMDlcdTlmMGFcdTlmMGNcdTlmMGZcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTVcdTlmMTZcdTlmMThcdTlmMWFcdTlmMWJcdTlmMWNcdTlmMWRcdTlmMWVcdTlmMWZcdTlmMjFcdTlmMjNcdTlmMjRcdTlmMjVcdTlmMjZcdTlmMjdcdTlmMjhcdTlmMjlc''@;'; put 'put ''dTlmMmFcdTlmMmJcdTlmMmRcdTlmMmVcdTlmMzBcdTlmMzFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNTJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI1Ml1bbV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKG9lW3hbMjUyXVttXV09NjQ1MTIrbSxSWzY0NTEyK21dPXhbMjUyXVttXSk7Zm9yKHhbMjUzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjMyXHU5ZjMzXHU5ZjM0XHU5ZjM1XHU5ZjM2XHU5ZjM4XHU5''@;'; put 'put ''ZjNhXHU5ZjNjXHU5ZjNmXHU5ZjQwXHU5ZjQxXHU5ZjQyXHU5ZjQzXHU5ZjQ1XHU5ZjQ2XHU5ZjQ3XHU5ZjQ4XHU5ZjQ5XHU5ZjRhXHU5ZjRiXHU5ZjRjXHU5ZjRkXHU5ZjRlXHU5ZjRmXHU5ZjUyXHU5ZjUzXHU5ZjU0XHU5ZjU1XHU5ZjU2XHU5ZjU3XHU5ZjU4XHU5ZjU5XHU5ZjVhXHU5ZjVi''@;'; put 'put ''XHU5ZjVjXHU5ZjVkXHU5ZjVlXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjYyXHU5ZjYzXHU5ZjY0XHU5ZjY1XHU5ZjY2XHU5ZjY3XHU5ZjY4XHU5ZjY5XHU5ZjZhXHU5ZjZiXHU5ZjZjXHU5ZjZkXHU5ZjZlXHU5ZjZmXHU5ZjcwXHU5ZjcxXHU5ZjcyXHU5ZjczXHU5Zjc0XHU5Zjc1XHU5Zjc2XHU5''@;'; put 'put ''Zjc3XHU5Zjc4XHVmZmZkXHU5Zjc5XHU5ZjdhXHU5ZjdiXHU5ZjdjXHU5ZjdkXHU5ZjdlXHU5ZjgxXHU5ZjgyXHU5ZjhkXHU5ZjhlXHU5ZjhmXHU5ZjkwXHU5ZjkxXHU5ZjkyXHU5ZjkzXHU5Zjk0XHU5Zjk1XHU5Zjk2XHU5Zjk3XHU5Zjk4XHU5ZjljXHU5ZjlkXHU5ZjllXHU5ZmExXHU5ZmEy''@;'; put 'put ''XHU5ZmEzXHU5ZmE0XHU5ZmE1XHVmOTJjXHVmOTc5XHVmOTk1XHVmOWU3XHVmOWYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjUzXS5sZW5ndGg7KyttKTY1NTMz''@;'; put 'put ''IT09eFsyNTNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI1M11bbV1dPTY0NzY4K20sUls2NDc2OCttXT14WzI1M11bbV0pO2Zvcih4WzI1NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmEwY1x1ZmEwZFx1ZmEwZVx1ZmEwZlx1''@;'; put 'put ''ZmExMVx1ZmExM1x1ZmExNFx1ZmExOFx1ZmExZlx1ZmEyMFx1ZmEyMVx1ZmEyM1x1ZmEyNFx1ZmEyN1x1ZmEyOFx1ZmEyOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI1NF0ubGVu''@;'; put 'put ''Z3RoOysrbSk2NTUzMyE9PXhbMjU0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNTRdW21dXT02NTAyNCttLFJbNjUwMjQrbV09eFsyNTRdW21dKTtyZXR1cm57ZW5jOm9lLGRlYzpSfX0oKSxNZVs5NDldPWZ1bmN0aW9uKCl7dmFyIG0sUj1bXSxvZT17fSx4PVtdO2Zvcih4WzBdPSJcMFx4''@;'; put 'put ''MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RV''@;'; put 'put ''VldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LG09MDttIT14WzBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzBdW21dXT0wK20sUlswK21dPXhbMF1bbV0pO2Zvcih4WzEyOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMw''@;'; put 'put ''Mlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMwYlx1YWMwY1x1YWMwZFx1YWMwZVx1YWMwZlx1YWMxOFx1YWMxZVx1YWMxZlx1YWMyMVx1YWMyMlx1YWMyM1x1YWMyNVx1YWMyNlx1YWMyN1x1YWMyOFx1YWMyOVx1YWMyYVx1YWMyYlx1YWMyZVx1YWMzMlx1YWMzM1x1YWMzNFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWMzNVx1YWMzNlx1YWMzN1x1YWMzYVx1YWMzYlx1YWMzZFx1YWMzZVx1YWMzZlx1YWM0MVx1YWM0Mlx1YWM0M1x1YWM0NFx1YWM0NVx1YWM0Nlx1YWM0N1x1YWM0OFx1YWM0OVx1YWM0YVx1YWM0Y1x1YWM0ZVx1YWM0Zlx1YWM1MFx1YWM1MVx1YWM1''@;'; put 'put ''Mlx1YWM1M1x1YWM1NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWM1Nlx1YWM1N1x1YWM1OVx1YWM1YVx1YWM1Ylx1YWM1ZFx1YWM1ZVx1YWM1Zlx1YWM2MFx1YWM2MVx1YWM2Mlx1YWM2M1x1YWM2NFx1YWM2NVx1YWM2Nlx1YWM2N1x1YWM2OFx1YWM2OVx1YWM2YVx1''@;'; put 'put ''YWM2Ylx1YWM2Y1x1YWM2ZFx1YWM2ZVx1YWM2Zlx1YWM3Mlx1YWM3M1x1YWM3NVx1YWM3Nlx1YWM3OVx1YWM3Ylx1YWM3Y1x1YWM3ZFx1YWM3ZVx1YWM3Zlx1YWM4Mlx1YWM4N1x1YWM4OFx1YWM4ZFx1YWM4ZVx1YWM4Zlx1YWM5MVx1YWM5Mlx1YWM5M1x1YWM5NVx1YWM5Nlx1YWM5N1x1YWM5''@;'; put 'put ''OFx1YWM5OVx1YWM5YVx1YWM5Ylx1YWM5ZVx1YWNhMlx1YWNhM1x1YWNhNFx1YWNhNVx1YWNhNlx1YWNhN1x1YWNhYlx1YWNhZFx1YWNhZVx1YWNiMVx1YWNiMlx1YWNiM1x1YWNiNFx1YWNiNVx1YWNiNlx1YWNiN1x1YWNiYVx1YWNiZVx1YWNiZlx1YWNjMFx1YWNjMlx1YWNjM1x1YWNjNVx1''@;'; put 'put ''YWNjNlx1YWNjN1x1YWNjOVx1YWNjYVx1YWNjYlx1YWNjZFx1YWNjZVx1YWNjZlx1YWNkMFx1YWNkMVx1YWNkMlx1YWNkM1x1YWNkNFx1YWNkNlx1YWNkOFx1YWNkOVx1YWNkYVx1YWNkYlx1YWNkY1x1YWNkZFx1YWNkZVx1YWNkZlx1YWNlMlx1YWNlM1x1YWNlNVx1YWNlNlx1YWNlOVx1YWNl''@;'; put 'put ''Ylx1YWNlZFx1YWNlZVx1YWNmMlx1YWNmNFx1YWNmN1x1YWNmOFx1YWNmOVx1YWNmYVx1YWNmYlx1YWNmZVx1YWNmZlx1YWQwMVx1YWQwMlx1YWQwM1x1YWQwNVx1YWQwN1x1YWQwOFx1YWQwOVx1YWQwYVx1YWQwYlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxM1x1ZmZmZCIuc3BsaXQoIiIpLG09''@;'; put 'put ''MDttIT14WzEyOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTI5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMjldW21dXT0zMzAyNCttLFJbMzMwMjQrbV09eFsxMjldW21dKTtmb3IoeFsxMzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWFkMTRcdWFkMTVcdWFkMTZcdWFkMTdcdWFkMTlcdWFkMWFcdWFkMWJcdWFkMWRcdWFkMWVcdWFkMWZcdWFkMjFcdWFkMjJcdWFkMjNcdWFkMjRcdWFkMjVcdWFkMjZcdWFkMjdcdWFkMjhcdWFkMmFcdWFkMmJcdWFkMmVcdWFkMmZcdWFkMzBcdWFkMzFcdWFkMzJcdWFkMzNc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkMzZcdWFkMzdcdWFkMzlcdWFkM2FcdWFkM2JcdWFkM2RcdWFkM2VcdWFkM2ZcdWFkNDBcdWFkNDFcdWFkNDJcdWFkNDNcdWFkNDZcdWFkNDhcdWFkNGFcdWFkNGJcdWFkNGNcdWFkNGRcdWFkNGVcdWFkNGZcdWFkNTFcdWFk''@;'; put 'put ''NTJcdWFkNTNcdWFkNTVcdWFkNTZcdWFkNTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFkNTlcdWFkNWFcdWFkNWJcdWFkNWNcdWFkNWRcdWFkNWVcdWFkNWZcdWFkNjBcdWFkNjJcdWFkNjRcdWFkNjVcdWFkNjZcdWFkNjdcdWFkNjhcdWFkNjlcdWFkNmFcdWFkNmJc''@;'; put 'put ''dWFkNmVcdWFkNmZcdWFkNzFcdWFkNzJcdWFkNzdcdWFkNzhcdWFkNzlcdWFkN2FcdWFkN2VcdWFkODBcdWFkODNcdWFkODRcdWFkODVcdWFkODZcdWFkODdcdWFkOGFcdWFkOGJcdWFkOGRcdWFkOGVcdWFkOGZcdWFkOTFcdWFkOTJcdWFkOTNcdWFkOTRcdWFkOTVcdWFkOTZcdWFkOTdcdWFk''@;'; put 'put ''OThcdWFkOTlcdWFkOWFcdWFkOWJcdWFkOWVcdWFkOWZcdWFkYTBcdWFkYTFcdWFkYTJcdWFkYTNcdWFkYTVcdWFkYTZcdWFkYTdcdWFkYThcdWFkYTlcdWFkYWFcdWFkYWJcdWFkYWNcdWFkYWRcdWFkYWVcdWFkYWZcdWFkYjBcdWFkYjFcdWFkYjJcdWFkYjNcdWFkYjRcdWFkYjVcdWFkYjZc''@;'; put 'put ''dWFkYjhcdWFkYjlcdWFkYmFcdWFkYmJcdWFkYmNcdWFkYmRcdWFkYmVcdWFkYmZcdWFkYzJcdWFkYzNcdWFkYzVcdWFkYzZcdWFkYzdcdWFkYzlcdWFkY2FcdWFkY2JcdWFkY2NcdWFkY2RcdWFkY2VcdWFkY2ZcdWFkZDJcdWFkZDRcdWFkZDVcdWFkZDZcdWFkZDdcdWFkZDhcdWFkZDlcdWFk''@;'; put 'put ''ZGFcdWFkZGJcdWFkZGRcdWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTVcdWFkZTZcdWFkZTdcdWFkZThcdWFkZTlcdWFkZWFcdWFkZWJcdWFkZWNcdWFkZWRcdWFkZWVcdWFkZWZcdWFkZjBcdWFkZjFcdWFkZjJcdWFkZjNcdWFkZjRcdWFkZjVcdWFkZjZcdWFkZjdcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxtPTA7bSE9eFsxMzBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTMwXVttXV09MzMyODArbSxSWzMzMjgwK21dPXhbMTMwXVttXSk7Zm9yKHhbMTMxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZGZhXHVhZGZiXHVhZGZkXHVhZGZlXHVhZTAyXHVhZTAzXHVhZTA0XHVhZTA1XHVhZTA2XHVhZTA3XHVhZTBhXHVhZTBjXHVhZTBlXHVhZTBmXHVhZTEwXHVhZTExXHVhZTEyXHVhZTEzXHVhZTE1XHVhZTE2XHVhZTE3XHVhZTE4XHVhZTE5XHVhZTFh''@;'; put 'put ''XHVhZTFiXHVhZTFjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTFkXHVhZTFlXHVhZTFmXHVhZTIwXHVhZTIxXHVhZTIyXHVhZTIzXHVhZTI0XHVhZTI1XHVhZTI2XHVhZTI3XHVhZTI4XHVhZTI5XHVhZTJhXHVhZTJiXHVhZTJjXHVhZTJkXHVhZTJlXHVhZTJmXHVh''@;'; put 'put ''ZTMyXHVhZTMzXHVhZTM1XHVhZTM2XHVhZTM5XHVhZTNiXHVhZTNjXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVhZTNkXHVhZTNlXHVhZTNmXHVhZTQyXHVhZTQ0XHVhZTQ3XHVhZTQ4XHVhZTQ5XHVhZTRiXHVhZTRmXHVhZTUxXHVhZTUyXHVhZTUzXHVhZTU1XHVhZTU3''@;'; put 'put ''XHVhZTU4XHVhZTU5XHVhZTVhXHVhZTViXHVhZTVlXHVhZTYyXHVhZTYzXHVhZTY0XHVhZTY2XHVhZTY3XHVhZTZhXHVhZTZiXHVhZTZkXHVhZTZlXHVhZTZmXHVhZTcxXHVhZTcyXHVhZTczXHVhZTc0XHVhZTc1XHVhZTc2XHVhZTc3XHVhZTdhXHVhZTdlXHVhZTdmXHVhZTgwXHVhZTgxXHVh''@;'; put 'put ''ZTgyXHVhZTgzXHVhZTg2XHVhZTg3XHVhZTg4XHVhZTg5XHVhZThhXHVhZThiXHVhZThkXHVhZThlXHVhZThmXHVhZTkwXHVhZTkxXHVhZTkyXHVhZTkzXHVhZTk0XHVhZTk1XHVhZTk2XHVhZTk3XHVhZTk4XHVhZTk5XHVhZTlhXHVhZTliXHVhZTljXHVhZTlkXHVhZTllXHVhZTlmXHVhZWEw''@;'; put 'put ''XHVhZWExXHVhZWEyXHVhZWEzXHVhZWE0XHVhZWE1XHVhZWE2XHVhZWE3XHVhZWE4XHVhZWE5XHVhZWFhXHVhZWFiXHVhZWFjXHVhZWFkXHVhZWFlXHVhZWFmXHVhZWIwXHVhZWIxXHVhZWIyXHVhZWIzXHVhZWI0XHVhZWI1XHVhZWI2XHVhZWI3XHVhZWI4XHVhZWI5XHVhZWJhXHVhZWJiXHVh''@;'; put 'put ''ZWJmXHVhZWMxXHVhZWMyXHVhZWMzXHVhZWM1XHVhZWM2XHVhZWM3XHVhZWM4XHVhZWM5XHVhZWNhXHVhZWNiXHVhZWNlXHVhZWQyXHVhZWQzXHVhZWQ0XHVhZWQ1XHVhZWQ2XHVhZWQ3XHVhZWRhXHVhZWRiXHVhZWRkXHVhZWRlXHVhZWRmXHVhZWUwXHVhZWUxXHVhZWUyXHVhZWUzXHVhZWU0''@;'; put 'put ''XHVhZWU1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTMxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzMV1bbV1dPTMzNTM2K20sUlszMzUzNittXT14WzEzMV1bbV0pO2Zvcih4WzEzMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZVx1YWVlZlx1YWVmMFx1YWVmMVx1YWVmMlx1YWVmM1x1YWVmNVx1YWVmNlx1YWVmN1x1YWVmOVx1YWVmYVx1YWVmYlx1YWVmZFx1YWVmZVx1YWVmZlx1YWYwMFx1YWYw''@;'; put 'put ''MVx1YWYwMlx1YWYwM1x1YWYwNFx1YWYwNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYwNlx1YWYwOVx1YWYwYVx1YWYwYlx1YWYwY1x1YWYwZVx1YWYwZlx1YWYxMVx1YWYxMlx1YWYxM1x1YWYxNFx1YWYxNVx1YWYxNlx1YWYxN1x1YWYxOFx1YWYxOVx1YWYxYVx1''@;'; put 'put ''YWYxYlx1YWYxY1x1YWYxZFx1YWYxZVx1YWYxZlx1YWYyMFx1YWYyMVx1YWYyMlx1YWYyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YWYyNFx1YWYyNVx1YWYyNlx1YWYyN1x1YWYyOFx1YWYyOVx1YWYyYVx1YWYyYlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYz''@;'; put 'put ''NVx1YWYzNlx1YWYzN1x1YWYzOFx1YWYzOVx1YWYzYVx1YWYzYlx1YWYzZVx1YWY0MFx1YWY0NFx1YWY0NVx1YWY0Nlx1YWY0N1x1YWY0YVx1YWY0Ylx1YWY0Y1x1YWY0ZFx1YWY0ZVx1YWY0Zlx1YWY1MVx1YWY1Mlx1YWY1M1x1YWY1NFx1YWY1NVx1YWY1Nlx1YWY1N1x1YWY1OFx1YWY1OVx1''@;'; put 'put ''YWY1YVx1YWY1Ylx1YWY1ZVx1YWY1Zlx1YWY2MFx1YWY2MVx1YWY2Mlx1YWY2M1x1YWY2Nlx1YWY2N1x1YWY2OFx1YWY2OVx1YWY2YVx1YWY2Ylx1YWY2Y1x1YWY2ZFx1YWY2ZVx1YWY2Zlx1YWY3MFx1YWY3MVx1YWY3Mlx1YWY3M1x1YWY3NFx1YWY3NVx1YWY3Nlx1YWY3N1x1YWY3OFx1YWY3''@;'; put 'put ''YVx1YWY3Ylx1YWY3Y1x1YWY3ZFx1YWY3ZVx1YWY3Zlx1YWY4MVx1YWY4Mlx1YWY4M1x1YWY4NVx1YWY4Nlx1YWY4N1x1YWY4OVx1YWY4YVx1YWY4Ylx1YWY4Y1x1YWY4ZFx1YWY4ZVx1YWY4Zlx1YWY5Mlx1YWY5M1x1YWY5NFx1YWY5Nlx1YWY5N1x1YWY5OFx1YWY5OVx1YWY5YVx1YWY5Ylx1''@;'; put 'put ''YWY5ZFx1YWY5ZVx1YWY5Zlx1YWZhMFx1YWZhMVx1YWZhMlx1YWZhM1x1YWZhNFx1YWZhNVx1YWZhNlx1YWZhN1x1YWZhOFx1YWZhOVx1YWZhYVx1YWZhYlx1YWZhY1x1YWZhZFx1YWZhZVx1YWZhZlx1YWZiMFx1YWZiMVx1YWZiMlx1YWZiM1x1YWZiNFx1YWZiNVx1YWZiNlx1YWZiN1x1YWZi''@;'; put 'put ''YVx1YWZiYlx1YWZiZFx1YWZiZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzMl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTMyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzJdW21dXT0zMzc5MittLFJbMzM3OTIrbV09eFsxMzJdW21dKTtmb3IoeFsxMzNdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmYmZcdWFmYzFcdWFmYzJcdWFmYzNcdWFmYzRcdWFmYzVcdWFmYzZcdWFmY2FcdWFmY2NcdWFmY2ZcdWFmZDBcdWFmZDFcdWFmZDJcdWFmZDNcdWFmZDVcdWFmZDZcdWFmZDdcdWFmZDhcdWFmZDlcdWFm''@;'; put 'put ''ZGFcdWFmZGJcdWFmZGRcdWFmZGVcdWFmZGZcdWFmZTBcdWFmZTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWFmZTJcdWFmZTNcdWFmZTRcdWFmZTVcdWFmZTZcdWFmZTdcdWFmZWFcdWFmZWJcdWFmZWNcdWFmZWRcdWFmZWVcdWFmZWZcdWFmZjJcdWFmZjNcdWFmZjVc''@;'; put 'put ''dWFmZjZcdWFmZjdcdWFmZjlcdWFmZmFcdWFmZmJcdWFmZmNcdWFmZmRcdWFmZmVcdWFmZmZcdWIwMDJcdWIwMDNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIwMDVcdWIwMDZcdWIwMDdcdWIwMDhcdWIwMDlcdWIwMGFcdWIwMGJcdWIwMGRcdWIwMGVcdWIwMGZcdWIw''@;'; put 'put ''MTFcdWIwMTJcdWIwMTNcdWIwMTVcdWIwMTZcdWIwMTdcdWIwMThcdWIwMTlcdWIwMWFcdWIwMWJcdWIwMWVcdWIwMWZcdWIwMjBcdWIwMjFcdWIwMjJcdWIwMjNcdWIwMjRcdWIwMjVcdWIwMjZcdWIwMjdcdWIwMjlcdWIwMmFcdWIwMmJcdWIwMmNcdWIwMmRcdWIwMmVcdWIwMmZcdWIwMzBc''@;'; put 'put ''dWIwMzFcdWIwMzJcdWIwMzNcdWIwMzRcdWIwMzVcdWIwMzZcdWIwMzdcdWIwMzhcdWIwMzlcdWIwM2FcdWIwM2JcdWIwM2NcdWIwM2RcdWIwM2VcdWIwM2ZcdWIwNDBcdWIwNDFcdWIwNDJcdWIwNDNcdWIwNDZcdWIwNDdcdWIwNDlcdWIwNGJcdWIwNGRcdWIwNGZcdWIwNTBcdWIwNTFcdWIw''@;'; put 'put ''NTJcdWIwNTZcdWIwNThcdWIwNWFcdWIwNWJcdWIwNWNcdWIwNWVcdWIwNWZcdWIwNjBcdWIwNjFcdWIwNjJcdWIwNjNcdWIwNjRcdWIwNjVcdWIwNjZcdWIwNjdcdWIwNjhcdWIwNjlcdWIwNmFcdWIwNmJcdWIwNmNcdWIwNmRcdWIwNmVcdWIwNmZcdWIwNzBcdWIwNzFcdWIwNzJcdWIwNzNc''@;'; put 'put ''dWIwNzRcdWIwNzVcdWIwNzZcdWIwNzdcdWIwNzhcdWIwNzlcdWIwN2FcdWIwN2JcdWIwN2VcdWIwN2ZcdWIwODFcdWIwODJcdWIwODNcdWIwODVcdWIwODZcdWIwODdcdWIwODhcdWIwODlcdWIwOGFcdWIwOGJcdWIwOGVcdWIwOTBcdWIwOTJcdWIwOTNcdWIwOTRcdWIwOTVcdWIwOTZcdWIw''@;'; put 'put ''OTdcdWIwOWJcdWIwOWRcdWIwOWVcdWIwYTNcdWIwYTRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzM11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTMzXVttXV09MzQwNDgrbSxSWzM0MDQ4K21dPXhbMTMzXVttXSk7Zm9yKHhbMTM0XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGE1XHViMGE2XHViMGE3XHViMGFhXHViMGIwXHViMGIyXHViMGI2XHViMGI3XHViMGI5XHViMGJhXHViMGJiXHViMGJkXHViMGJlXHViMGJmXHViMGMwXHViMGMxXHViMGMyXHVi''@;'; put 'put ''MGMzXHViMGM2XHViMGNhXHViMGNiXHViMGNjXHViMGNkXHViMGNlXHViMGNmXHViMGQyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGQzXHViMGQ1XHViMGQ2XHViMGQ3XHViMGQ5XHViMGRhXHViMGRiXHViMGRjXHViMGRkXHViMGRlXHViMGRmXHViMGUxXHViMGUy''@;'; put 'put ''XHViMGUzXHViMGU0XHViMGU2XHViMGU3XHViMGU4XHViMGU5XHViMGVhXHViMGViXHViMGVjXHViMGVkXHViMGVlXHViMGVmXHViMGYwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMGYxXHViMGYyXHViMGYzXHViMGY0XHViMGY1XHViMGY2XHViMGY3XHViMGY4XHVi''@;'; put 'put ''MGY5XHViMGZhXHViMGZiXHViMGZjXHViMGZkXHViMGZlXHViMGZmXHViMTAwXHViMTAxXHViMTAyXHViMTAzXHViMTA0XHViMTA1XHViMTA2XHViMTA3XHViMTBhXHViMTBkXHViMTBlXHViMTBmXHViMTExXHViMTE0XHViMTE1XHViMTE2XHViMTE3XHViMTFhXHViMTFlXHViMTFmXHViMTIw''@;'; put 'put ''XHViMTIxXHViMTIyXHViMTI2XHViMTI3XHViMTI5XHViMTJhXHViMTJiXHViMTJkXHViMTJlXHViMTJmXHViMTMwXHViMTMxXHViMTMyXHViMTMzXHViMTM2XHViMTNhXHViMTNiXHViMTNjXHViMTNkXHViMTNlXHViMTNmXHViMTQyXHViMTQzXHViMTQ1XHViMTQ2XHViMTQ3XHViMTQ5XHVi''@;'; put 'put ''MTRhXHViMTRiXHViMTRjXHViMTRkXHViMTRlXHViMTRmXHViMTUyXHViMTUzXHViMTU2XHViMTU3XHViMTU5XHViMTVhXHViMTViXHViMTVkXHViMTVlXHViMTVmXHViMTYxXHViMTYyXHViMTYzXHViMTY0XHViMTY1XHViMTY2XHViMTY3XHViMTY4XHViMTY5XHViMTZhXHViMTZiXHViMTZj''@;'; put 'put ''XHViMTZkXHViMTZlXHViMTZmXHViMTcwXHViMTcxXHViMTcyXHViMTczXHViMTc0XHViMTc1XHViMTc2XHViMTc3XHViMTdhXHViMTdiXHViMTdkXHViMTdlXHViMTdmXHViMTgxXHViMTgzXHViMTg0XHViMTg1XHViMTg2XHViMTg3XHViMThhXHViMThjXHViMThlXHViMThmXHViMTkwXHVi''@;'; put 'put ''MTkxXHViMTk1XHViMTk2XHViMTk3XHViMTk5XHViMTlhXHViMTliXHViMTlkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTM0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzEzNF1bbV1dPTM0MzA0K20sUlszNDMwNCttXT14WzEzNF1bbV0p''@;'; put 'put ''O2Zvcih4WzEzNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjE5ZVx1YjE5Zlx1YjFhMFx1YjFhMVx1YjFhMlx1YjFhM1x1YjFhNFx1YjFhNVx1YjFhNlx1YjFhN1x1YjFhOVx1YjFhYVx1YjFhYlx1YjFhY1x1YjFhZFx1''@;'; put 'put ''YjFhZVx1YjFhZlx1YjFiMFx1YjFiMVx1YjFiMlx1YjFiM1x1YjFiNFx1YjFiNVx1YjFiNlx1YjFiN1x1YjFiOFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFiOVx1YjFiYVx1YjFiYlx1YjFiY1x1YjFiZFx1YjFiZVx1YjFiZlx1YjFjMFx1YjFjMVx1YjFjMlx1YjFj''@;'; put 'put ''M1x1YjFjNFx1YjFjNVx1YjFjNlx1YjFjN1x1YjFjOFx1YjFjOVx1YjFjYVx1YjFjYlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjFkNlx1YjFkN1x1YjFkOFx1YjFkOVx1YjFkYVx1YjFkYlx1''@;'; put 'put ''YjFkZVx1YjFlMFx1YjFlMVx1YjFlMlx1YjFlM1x1YjFlNFx1YjFlNVx1YjFlNlx1YjFlN1x1YjFlYVx1YjFlYlx1YjFlZFx1YjFlZVx1YjFlZlx1YjFmMVx1YjFmMlx1YjFmM1x1YjFmNFx1YjFmNVx1YjFmNlx1YjFmN1x1YjFmOFx1YjFmYVx1YjFmY1x1YjFmZVx1YjFmZlx1YjIwMFx1YjIw''@;'; put 'put ''MVx1YjIwMlx1YjIwM1x1YjIwNlx1YjIwN1x1YjIwOVx1YjIwYVx1YjIwZFx1YjIwZVx1YjIwZlx1YjIxMFx1YjIxMVx1YjIxMlx1YjIxM1x1YjIxNlx1YjIxOFx1YjIxYVx1YjIxYlx1YjIxY1x1YjIxZFx1YjIxZVx1YjIxZlx1YjIyMVx1YjIyMlx1YjIyM1x1YjIyNFx1YjIyNVx1YjIyNlx1''@;'; put 'put ''YjIyN1x1YjIyOFx1YjIyOVx1YjIyYVx1YjIyYlx1YjIyY1x1YjIyZFx1YjIyZVx1YjIyZlx1YjIzMFx1YjIzMVx1YjIzMlx1YjIzM1x1YjIzNVx1YjIzNlx1YjIzN1x1YjIzOFx1YjIzOVx1YjIzYVx1YjIzYlx1YjIzZFx1YjIzZVx1YjIzZlx1YjI0MFx1YjI0MVx1YjI0Mlx1YjI0M1x1YjI0''@;'; put 'put ''NFx1YjI0NVx1YjI0Nlx1YjI0N1x1YjI0OFx1YjI0OVx1YjI0YVx1YjI0Ylx1YjI0Y1x1YjI0ZFx1YjI0ZVx1YjI0Zlx1YjI1MFx1YjI1MVx1YjI1Mlx1YjI1M1x1YjI1NFx1YjI1NVx1YjI1Nlx1YjI1N1x1YjI1OVx1YjI1YVx1YjI1Ylx1YjI1ZFx1YjI1ZVx1YjI1Zlx1YjI2MVx1YjI2Mlx1''@;'; put 'put ''YjI2M1x1YjI2NFx1YjI2NVx1YjI2Nlx1YjI2N1x1YjI2YVx1YjI2Ylx1YjI2Y1x1YjI2ZFx1YjI2ZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzNV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxMzVdW21dXT0zNDU2MCttLFJbMzQ1NjAr''@;'; put 'put ''bV09eFsxMzVdW21dKTtmb3IoeFsxMzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyNmZcdWIyNzBcdWIyNzFcdWIyNzJcdWIyNzNcdWIyNzZcdWIyNzdcdWIyNzhcdWIyNzlcdWIyN2FcdWIyN2JcdWIyN2RcdWIyN2Vc''@;'; put 'put ''dWIyN2ZcdWIyODBcdWIyODFcdWIyODJcdWIyODNcdWIyODZcdWIyODdcdWIyODhcdWIyOGFcdWIyOGJcdWIyOGNcdWIyOGRcdWIyOGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyOGZcdWIyOTJcdWIyOTNcdWIyOTVcdWIyOTZcdWIyOTdcdWIyOWJcdWIyOWNcdWIy''@;'; put 'put ''OWRcdWIyOWVcdWIyOWZcdWIyYTJcdWIyYTRcdWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIyYjNcdWIyYjVcdWIyYjZcdWIyYjdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWIyYjhcdWIyYjlcdWIyYmFcdWIyYmJc''@;'; put 'put ''dWIyYmNcdWIyYmRcdWIyYmVcdWIyYmZcdWIyYzBcdWIyYzFcdWIyYzJcdWIyYzNcdWIyYzRcdWIyYzVcdWIyYzZcdWIyYzdcdWIyY2FcdWIyY2JcdWIyY2RcdWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDNcdWIyZDRcdWIyZDVcdWIyZDZcdWIyZDdcdWIyZGFcdWIyZGNcdWIyZGVcdWIyZGZcdWIy''@;'; put 'put ''ZTBcdWIyZTFcdWIyZTNcdWIyZTdcdWIyZTlcdWIyZWFcdWIyZjBcdWIyZjFcdWIyZjJcdWIyZjZcdWIyZmNcdWIyZmRcdWIyZmVcdWIzMDJcdWIzMDNcdWIzMDVcdWIzMDZcdWIzMDdcdWIzMDlcdWIzMGFcdWIzMGJcdWIzMGNcdWIzMGRcdWIzMGVcdWIzMGZcdWIzMTJcdWIzMTZcdWIzMTdc''@;'; put 'put ''dWIzMThcdWIzMTlcdWIzMWFcdWIzMWJcdWIzMWRcdWIzMWVcdWIzMWZcdWIzMjBcdWIzMjFcdWIzMjJcdWIzMjNcdWIzMjRcdWIzMjVcdWIzMjZcdWIzMjdcdWIzMjhcdWIzMjlcdWIzMmFcdWIzMmJcdWIzMmNcdWIzMmRcdWIzMmVcdWIzMmZcdWIzMzBcdWIzMzFcdWIzMzJcdWIzMzNcdWIz''@;'; put 'put ''MzRcdWIzMzVcdWIzMzZcdWIzMzdcdWIzMzhcdWIzMzlcdWIzM2FcdWIzM2JcdWIzM2NcdWIzM2RcdWIzM2VcdWIzM2ZcdWIzNDBcdWIzNDFcdWIzNDJcdWIzNDNcdWIzNDRcdWIzNDVcdWIzNDZcdWIzNDdcdWIzNDhcdWIzNDlcdWIzNGFcdWIzNGJcdWIzNGNcdWIzNGRcdWIzNGVcdWIzNGZc''@;'; put 'put ''dWIzNTBcdWIzNTFcdWIzNTJcdWIzNTNcdWIzNTdcdWIzNTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzEzNl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTM2XVttXV09MzQ4''@;'; put 'put ''MTYrbSxSWzM0ODE2K21dPXhbMTM2XVttXSk7Zm9yKHhbMTM3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMzY2XHViMzY4XHViMzZhXHViMzZjXHViMzZkXHViMzZmXHViMzcyXHViMzczXHViMzc1XHViMzc2XHViMzc3''@;'; put 'put ''XHViMzc5XHViMzdhXHViMzdiXHViMzdjXHViMzdkXHViMzdlXHViMzdmXHViMzgyXHViMzg2XHViMzg3XHViMzg4XHViMzg5XHViMzhhXHViMzhiXHViMzhkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViMzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1XHVi''@;'; put 'put ''Mzk2XHViMzk3XHViMzk4XHViMzk5XHViMzlhXHViMzliXHViMzljXHViMzlkXHViMzllXHViMzlmXHViM2EyXHViM2EzXHViM2E0XHViM2E1XHViM2E2XHViM2E3XHViM2E5XHViM2FhXHViM2FiXHViM2FkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViM2FlXHViM2Fm''@;'; put 'put ''XHViM2IwXHViM2IxXHViM2IyXHViM2IzXHViM2I0XHViM2I1XHViM2I2XHViM2I3XHViM2I4XHViM2I5XHViM2JhXHViM2JiXHViM2JjXHViM2JkXHViM2JlXHViM2JmXHViM2MwXHViM2MxXHViM2MyXHViM2MzXHViM2M2XHViM2M3XHViM2M5XHViM2NhXHViM2NkXHViM2NmXHViM2QxXHVi''@;'; put 'put ''M2QyXHViM2QzXHViM2Q2XHViM2Q4XHViM2RhXHViM2RjXHViM2RlXHViM2RmXHViM2UxXHViM2UyXHViM2UzXHViM2U1XHViM2U2XHViM2U3XHViM2U5XHViM2VhXHViM2ViXHViM2VjXHViM2VkXHViM2VlXHViM2VmXHViM2YwXHViM2YxXHViM2YyXHViM2YzXHViM2Y0XHViM2Y1XHViM2Y2''@;'; put 'put ''XHViM2Y3XHViM2Y4XHViM2Y5XHViM2ZhXHViM2ZiXHViM2ZkXHViM2ZlXHViM2ZmXHViNDAwXHViNDAxXHViNDAyXHViNDAzXHViNDA0XHViNDA1XHViNDA2XHViNDA3XHViNDA4XHViNDA5XHViNDBhXHViNDBiXHViNDBjXHViNDBkXHViNDBlXHViNDBmXHViNDExXHViNDEyXHViNDEzXHVi''@;'; put 'put ''NDE0XHViNDE1XHViNDE2XHViNDE3XHViNDE5XHViNDFhXHViNDFiXHViNDFkXHViNDFlXHViNDFmXHViNDIxXHViNDIyXHViNDIzXHViNDI0XHViNDI1XHViNDI2XHViNDI3XHViNDJhXHViNDJjXHViNDJkXHViNDJlXHViNDJmXHViNDMwXHViNDMxXHViNDMyXHViNDMzXHViNDM1XHViNDM2''@;'; put 'put ''XHViNDM3XHViNDM4XHViNDM5XHViNDNhXHViNDNiXHViNDNjXHViNDNkXHViNDNlXHViNDNmXHViNDQwXHViNDQxXHViNDQyXHViNDQzXHViNDQ0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTM3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxMzddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4''@;'; put 'put ''WzEzN11bbV1dPTM1MDcyK20sUlszNTA3MittXT14WzEzN11bbV0pO2Zvcih4WzEzOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ0NVx1YjQ0Nlx1YjQ0N1x1YjQ0OFx1YjQ0OVx1YjQ0YVx1YjQ0Ylx1YjQ0Y1x1YjQ0''@;'; put 'put ''ZFx1YjQ0ZVx1YjQ0Zlx1YjQ1Mlx1YjQ1M1x1YjQ1NVx1YjQ1Nlx1YjQ1N1x1YjQ1OVx1YjQ1YVx1YjQ1Ylx1YjQ1Y1x1YjQ1ZFx1YjQ1ZVx1YjQ1Zlx1YjQ2Mlx1YjQ2NFx1YjQ2Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjQ2N1x1YjQ2OFx1YjQ2OVx1YjQ2YVx1''@;'; put 'put ''YjQ2Ylx1YjQ2ZFx1YjQ2ZVx1YjQ2Zlx1YjQ3MFx1YjQ3MVx1YjQ3Mlx1YjQ3M1x1YjQ3NFx1YjQ3NVx1YjQ3Nlx1YjQ3N1x1YjQ3OFx1YjQ3OVx1YjQ3YVx1YjQ3Ylx1YjQ3Y1x1YjQ3ZFx1YjQ3ZVx1YjQ3Zlx1YjQ4MVx1YjQ4Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1YjQ4M1x1YjQ4NFx1YjQ4NVx1YjQ4Nlx1YjQ4N1x1YjQ4OVx1YjQ4YVx1YjQ4Ylx1YjQ4Y1x1YjQ4ZFx1YjQ4ZVx1YjQ4Zlx1YjQ5MFx1YjQ5MVx1YjQ5Mlx1YjQ5M1x1YjQ5NFx1YjQ5NVx1YjQ5Nlx1YjQ5N1x1YjQ5OFx1YjQ5OVx1YjQ5YVx1YjQ5Ylx1YjQ5Y1x1YjQ5ZVx1YjQ5Zlx1''@;'; put 'put ''YjRhMFx1YjRhMVx1YjRhMlx1YjRhM1x1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZFx1YjRhZVx1YjRhZlx1YjRiMFx1YjRiMVx1YjRiMlx1YjRiM1x1YjRiNFx1YjRiNlx1YjRiOFx1YjRiYVx1YjRiYlx1YjRiY1x1YjRiZFx1YjRiZVx1YjRiZlx1YjRjMVx1YjRj''@;'; put 'put ''Mlx1YjRjM1x1YjRjNVx1YjRjNlx1YjRjN1x1YjRjOVx1YjRjYVx1YjRjYlx1YjRjY1x1YjRjZFx1YjRjZVx1YjRjZlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRkNlx1YjRkN1x1YjRkOFx1YjRkOVx1YjRkYVx1YjRkYlx1YjRkZVx1YjRkZlx1YjRlMVx1YjRlMlx1YjRlNVx1YjRlN1x1''@;'; put 'put ''YjRlOFx1YjRlOVx1YjRlYVx1YjRlYlx1YjRlZVx1YjRmMFx1YjRmMlx1YjRmM1x1YjRmNFx1YjRmNVx1YjRmNlx1YjRmN1x1YjRmOVx1YjRmYVx1YjRmYlx1YjRmY1x1YjRmZFx1YjRmZVx1YjRmZlx1YjUwMFx1YjUwMVx1YjUwMlx1YjUwM1x1YjUwNFx1YjUwNVx1YjUwNlx1YjUwN1x1YjUw''@;'; put 'put ''OFx1YjUwOVx1YjUwYVx1YjUwYlx1YjUwY1x1YjUwZFx1YjUwZVx1YjUwZlx1YjUxMFx1YjUxMVx1YjUxMlx1YjUxM1x1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzEzOF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTM4XVttXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYob2VbeFsxMzhdW21dXT0zNTMyOCttLFJbMzUzMjgrbV09eFsxMzhdW21dKTtmb3IoeFsxMzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1MWVcdWI1MWZcdWI1MjBcdWI1MjFcdWI1MjJcdWI1MjNcdWI1''@;'; put 'put ''MjZcdWI1MmJcdWI1MmNcdWI1MmRcdWI1MmVcdWI1MmZcdWI1MzJcdWI1MzNcdWI1MzVcdWI1MzZcdWI1MzdcdWI1MzlcdWI1M2FcdWI1M2JcdWI1M2NcdWI1M2RcdWI1M2VcdWI1M2ZcdWI1NDJcdWI1NDZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI1NDdcdWI1NDhc''@;'; put 'put ''dWI1NDlcdWI1NGFcdWI1NGVcdWI1NGZcdWI1NTFcdWI1NTJcdWI1NTNcdWI1NTVcdWI1NTZcdWI1NTdcdWI1NThcdWI1NTlcdWI1NWFcdWI1NWJcdWI1NWVcdWI1NjJcdWI1NjNcdWI1NjRcdWI1NjVcdWI1NjZcdWI1NjdcdWI1NjhcdWI1NjlcdWI1NmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWI1NmJcdWI1NmNcdWI1NmRcdWI1NmVcdWI1NmZcdWI1NzBcdWI1NzFcdWI1NzJcdWI1NzNcdWI1NzRcdWI1NzVcdWI1NzZcdWI1NzdcdWI1NzhcdWI1NzlcdWI1N2FcdWI1N2JcdWI1N2NcdWI1N2RcdWI1N2VcdWI1N2ZcdWI1ODBcdWI1ODFcdWI1ODJcdWI1ODNc''@;'; put 'put ''dWI1ODRcdWI1ODVcdWI1ODZcdWI1ODdcdWI1ODhcdWI1ODlcdWI1OGFcdWI1OGJcdWI1OGNcdWI1OGRcdWI1OGVcdWI1OGZcdWI1OTBcdWI1OTFcdWI1OTJcdWI1OTNcdWI1OTRcdWI1OTVcdWI1OTZcdWI1OTdcdWI1OThcdWI1OTlcdWI1OWFcdWI1OWJcdWI1OWNcdWI1OWRcdWI1OWVcdWI1''@;'; put 'put ''OWZcdWI1YTJcdWI1YTNcdWI1YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjZcdWI1YjdcdWI1YjhcdWI1YjlcdWI1YmFcdWI1YmVcdWI1YmZcdWI1YzFcdWI1YzJcdWI1YzNcdWI1YzVcdWI1YzZcdWI1YzdcdWI1YzhcdWI1YzlcdWI1Y2Fc''@;'; put 'put ''dWI1Y2JcdWI1Y2VcdWI1ZDJcdWI1ZDNcdWI1ZDRcdWI1ZDVcdWI1ZDZcdWI1ZDdcdWI1ZDlcdWI1ZGFcdWI1ZGJcdWI1ZGNcdWI1ZGRcdWI1ZGVcdWI1ZGZcdWI1ZTBcdWI1ZTFcdWI1ZTJcdWI1ZTNcdWI1ZTRcdWI1ZTVcdWI1ZTZcdWI1ZTdcdWI1ZThcdWI1ZTlcdWI1ZWFcdWI1ZWJcdWI1''@;'; put 'put ''ZWRcdWI1ZWVcdWI1ZWZcdWI1ZjBcdWI1ZjFcdWI1ZjJcdWI1ZjNcdWI1ZjRcdWI1ZjVcdWI1ZjZcdWI1ZjdcdWI1ZjhcdWI1ZjlcdWI1ZmFcdWI1ZmJcdWI1ZmNcdWI1ZmRcdWI1ZmVcdWI1ZmZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxMzldLmxlbmd0aDsrK20pNjU1MzMhPT14WzEz''@;'; put 'put ''OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTM5XVttXV09MzU1ODQrbSxSWzM1NTg0K21dPXhbMTM5XVttXSk7Zm9yKHhbMTQwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjAwXHViNjAxXHViNjAyXHViNjAzXHVi''@;'; put 'put ''NjA0XHViNjA1XHViNjA2XHViNjA3XHViNjA4XHViNjA5XHViNjBhXHViNjBiXHViNjBjXHViNjBkXHViNjBlXHViNjBmXHViNjEyXHViNjEzXHViNjE1XHViNjE2XHViNjE3XHViNjE5XHViNjFhXHViNjFiXHViNjFjXHViNjFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHViNjFlXHViNjFmXHViNjIwXHViNjIxXHViNjIyXHViNjIzXHViNjI0XHViNjI2XHViNjI3XHViNjI4XHViNjI5XHViNjJhXHViNjJiXHViNjJkXHViNjJlXHViNjJmXHViNjMwXHViNjMxXHViNjMyXHViNjMzXHViNjM1XHViNjM2XHViNjM3XHViNjM4XHViNjM5XHViNjNhXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViNjNiXHViNjNjXHViNjNkXHViNjNlXHViNjNmXHViNjQwXHViNjQxXHViNjQyXHViNjQzXHViNjQ0XHViNjQ1XHViNjQ2XHViNjQ3XHViNjQ5XHViNjRhXHViNjRiXHViNjRjXHViNjRkXHViNjRlXHViNjRmXHViNjUwXHViNjUxXHViNjUy''@;'; put 'put ''XHViNjUzXHViNjU0XHViNjU1XHViNjU2XHViNjU3XHViNjU4XHViNjU5XHViNjVhXHViNjViXHViNjVjXHViNjVkXHViNjVlXHViNjVmXHViNjYwXHViNjYxXHViNjYyXHViNjYzXHViNjY1XHViNjY2XHViNjY3XHViNjY5XHViNjZhXHViNjZiXHViNjZjXHViNjZkXHViNjZlXHViNjZmXHVi''@;'; put 'put ''NjcwXHViNjcxXHViNjcyXHViNjczXHViNjc0XHViNjc1XHViNjc2XHViNjc3XHViNjc4XHViNjc5XHViNjdhXHViNjdiXHViNjdjXHViNjdkXHViNjdlXHViNjdmXHViNjgwXHViNjgxXHViNjgyXHViNjgzXHViNjg0XHViNjg1XHViNjg2XHViNjg3XHViNjg4XHViNjg5XHViNjhhXHViNjhi''@;'; put 'put ''XHViNjhjXHViNjhkXHViNjhlXHViNjhmXHViNjkwXHViNjkxXHViNjkyXHViNjkzXHViNjk0XHViNjk1XHViNjk2XHViNjk3XHViNjk4XHViNjk5XHViNjlhXHViNjliXHViNjllXHViNjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1XHViNmE2XHViNmE3XHViNmE4XHViNmE5XHViNmFhXHVi''@;'; put 'put ''NmFkXHViNmFlXHViNmFmXHViNmIwXHViNmIyXHViNmIzXHViNmI0XHViNmI1XHViNmI2XHViNmI3XHViNmI4XHViNmI5XHViNmJhXHViNmJiXHViNmJjXHViNmJkXHViNmJlXHViNmJmXHViNmMwXHViNmMxXHViNmMyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQwXS5sZW5ndGg7Kytt''@;'; put 'put ''KTY1NTMzIT09eFsxNDBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0MF1bbV1dPTM1ODQwK20sUlszNTg0MCttXT14WzE0MF1bbV0pO2Zvcih4WzE0MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZjM1x1YjZjNFx1''@;'; put 'put ''YjZjNVx1YjZjNlx1YjZjN1x1YjZjOFx1YjZjOVx1YjZjYVx1YjZjYlx1YjZjY1x1YjZjZFx1YjZjZVx1YjZjZlx1YjZkMFx1YjZkMVx1YjZkMlx1YjZkM1x1YjZkNVx1YjZkNlx1YjZkN1x1YjZkOFx1YjZkOVx1YjZkYVx1YjZkYlx1YjZkY1x1YjZkZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1YjZkZVx1YjZkZlx1YjZlMFx1YjZlMVx1YjZlMlx1YjZlM1x1YjZlNFx1YjZlNVx1YjZlNlx1YjZlN1x1YjZlOFx1YjZlOVx1YjZlYVx1YjZlYlx1YjZlY1x1YjZlZFx1YjZlZVx1YjZlZlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1YjZmOVx1''@;'; put 'put ''YjZmYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YjZmYlx1YjZmY1x1YjZmZFx1YjZmZVx1YjZmZlx1YjcwMlx1YjcwM1x1YjcwNFx1YjcwNlx1YjcwN1x1YjcwOFx1YjcwOVx1YjcwYVx1YjcwYlx1YjcwY1x1YjcwZFx1YjcwZVx1YjcwZlx1YjcxMFx1YjcxMVx1Yjcx''@;'; put 'put ''Mlx1YjcxM1x1YjcxNFx1YjcxNVx1YjcxNlx1YjcxN1x1YjcxOFx1YjcxOVx1YjcxYVx1YjcxYlx1YjcxY1x1YjcxZFx1YjcxZVx1YjcxZlx1YjcyMFx1YjcyMVx1YjcyMlx1YjcyM1x1YjcyNFx1YjcyNVx1YjcyNlx1YjcyN1x1YjcyYVx1YjcyYlx1YjcyZFx1YjcyZVx1YjczMVx1YjczMlx1''@;'; put 'put ''YjczM1x1YjczNFx1YjczNVx1YjczNlx1YjczN1x1YjczYVx1YjczY1x1YjczZFx1YjczZVx1YjczZlx1Yjc0MFx1Yjc0MVx1Yjc0Mlx1Yjc0M1x1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZFx1Yjc0ZVx1Yjc0Zlx1Yjc1MFx1Yjc1MVx1Yjc1Mlx1Yjc1M1x1Yjc1''@;'; put 'put ''Nlx1Yjc1N1x1Yjc1OFx1Yjc1OVx1Yjc1YVx1Yjc1Ylx1Yjc1Y1x1Yjc1ZFx1Yjc1ZVx1Yjc1Zlx1Yjc2MVx1Yjc2Mlx1Yjc2M1x1Yjc2NVx1Yjc2Nlx1Yjc2N1x1Yjc2OVx1Yjc2YVx1Yjc2Ylx1Yjc2Y1x1Yjc2ZFx1Yjc2ZVx1Yjc2Zlx1Yjc3Mlx1Yjc3NFx1Yjc3Nlx1Yjc3N1x1Yjc3OFx1''@;'; put 'put ''Yjc3OVx1Yjc3YVx1Yjc3Ylx1Yjc3ZVx1Yjc3Zlx1Yjc4MVx1Yjc4Mlx1Yjc4M1x1Yjc4NVx1Yjc4Nlx1Yjc4N1x1Yjc4OFx1Yjc4OVx1Yjc4YVx1Yjc4Ylx1Yjc4ZVx1Yjc5M1x1Yjc5NFx1Yjc5NVx1Yjc5YVx1Yjc5Ylx1Yjc5ZFx1Yjc5ZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0''@;'; put 'put ''MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDFdW21dXT0zNjA5NittLFJbMzYwOTYrbV09eFsxNDFdW21dKTtmb3IoeFsxNDJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWI3OWZcdWI3YTFcdWI3YTJcdWI3YTNcdWI3YTRcdWI3YTVcdWI3YTZcdWI3YTdcdWI3YWFcdWI3YWVcdWI3YWZcdWI3YjBcdWI3YjFcdWI3YjJcdWI3YjNcdWI3YjZcdWI3YjdcdWI3YjlcdWI3YmFcdWI3YmJcdWI3YmNcdWI3YmRcdWI3YmVcdWI3YmZcdWI3YzBcdWI3YzFcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3YzJcdWI3YzNcdWI3YzRcdWI3YzVcdWI3YzZcdWI3YzhcdWI3Y2FcdWI3Y2JcdWI3Y2NcdWI3Y2RcdWI3Y2VcdWI3Y2ZcdWI3ZDBcdWI3ZDFcdWI3ZDJcdWI3ZDNcdWI3ZDRcdWI3ZDVcdWI3ZDZcdWI3ZDdcdWI3ZDhcdWI3ZDlcdWI3ZGFc''@;'; put 'put ''dWI3ZGJcdWI3ZGNcdWI3ZGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWI3ZGVcdWI3ZGZcdWI3ZTBcdWI3ZTFcdWI3ZTJcdWI3ZTNcdWI3ZTRcdWI3ZTVcdWI3ZTZcdWI3ZTdcdWI3ZThcdWI3ZTlcdWI3ZWFcdWI3ZWJcdWI3ZWVcdWI3ZWZcdWI3ZjFcdWI3ZjJcdWI3''@;'; put 'put ''ZjNcdWI3ZjVcdWI3ZjZcdWI3ZjdcdWI3ZjhcdWI3ZjlcdWI3ZmFcdWI3ZmJcdWI3ZmVcdWI4MDJcdWI4MDNcdWI4MDRcdWI4MDVcdWI4MDZcdWI4MGFcdWI4MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTFcdWI4MTJcdWI4MTNcdWI4MTRcdWI4MTVcdWI4MTZcdWI4MTdcdWI4MWFcdWI4MWNc''@;'; put 'put ''dWI4MWVcdWI4MWZcdWI4MjBcdWI4MjFcdWI4MjJcdWI4MjNcdWI4MjZcdWI4MjdcdWI4MjlcdWI4MmFcdWI4MmJcdWI4MmRcdWI4MmVcdWI4MmZcdWI4MzBcdWI4MzFcdWI4MzJcdWI4MzNcdWI4MzZcdWI4M2FcdWI4M2JcdWI4M2NcdWI4M2RcdWI4M2VcdWI4M2ZcdWI4NDFcdWI4NDJcdWI4''@;'; put 'put ''NDNcdWI4NDVcdWI4NDZcdWI4NDdcdWI4NDhcdWI4NDlcdWI4NGFcdWI4NGJcdWI4NGNcdWI4NGRcdWI4NGVcdWI4NGZcdWI4NTBcdWI4NTJcdWI4NTRcdWI4NTVcdWI4NTZcdWI4NTdcdWI4NThcdWI4NTlcdWI4NWFcdWI4NWJcdWI4NWVcdWI4NWZcdWI4NjFcdWI4NjJcdWI4NjNcdWI4NjVc''@;'; put 'put ''dWI4NjZcdWI4NjdcdWI4NjhcdWI4NjlcdWI4NmFcdWI4NmJcdWI4NmVcdWI4NzBcdWI4NzJcdWI4NzNcdWI4NzRcdWI4NzVcdWI4NzZcdWI4NzdcdWI4NzlcdWI4N2FcdWI4N2JcdWI4N2RcdWI4N2VcdWI4N2ZcdWI4ODBcdWI4ODFcdWI4ODJcdWI4ODNcdWI4ODRcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxtPTA7bSE9eFsxNDJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQyXVttXV09MzYzNTIrbSxSWzM2MzUyK21dPXhbMTQyXVttXSk7Zm9yKHhbMTQzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHViODg1XHViODg2XHViODg3XHViODg4XHViODg5XHViODhhXHViODhiXHViODhjXHViODhlXHViODhmXHViODkwXHViODkxXHViODkyXHViODkzXHViODk0XHViODk1XHViODk2XHViODk3XHViODk4XHViODk5XHViODlhXHViODliXHViODljXHViODlkXHViODllXHVi''@;'; put 'put ''ODlmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGEwXHViOGExXHViOGEyXHViOGEzXHViOGE0XHViOGE1XHViOGE2XHViOGE3XHViOGE5XHViOGFhXHViOGFiXHViOGFjXHViOGFkXHViOGFlXHViOGFmXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3''@;'; put 'put ''XHViOGI5XHViOGJhXHViOGJiXHViOGJjXHViOGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViOGJlXHViOGJmXHViOGMyXHViOGM0XHViOGM2XHViOGM3XHViOGM4XHViOGM5XHViOGNhXHViOGNiXHViOGNkXHViOGNlXHViOGNmXHViOGQxXHViOGQyXHViOGQzXHVi''@;'; put 'put ''OGQ1XHViOGQ2XHViOGQ3XHViOGQ4XHViOGQ5XHViOGRhXHViOGRiXHViOGRjXHViOGRlXHViOGUwXHViOGUyXHViOGUzXHViOGU0XHViOGU1XHViOGU2XHViOGU3XHViOGVhXHViOGViXHViOGVkXHViOGVlXHViOGVmXHViOGYxXHViOGYyXHViOGYzXHViOGY0XHViOGY1XHViOGY2XHViOGY3''@;'; put 'put ''XHViOGZhXHViOGZjXHViOGZlXHViOGZmXHViOTAwXHViOTAxXHViOTAyXHViOTAzXHViOTA1XHViOTA2XHViOTA3XHViOTA4XHViOTA5XHViOTBhXHViOTBiXHViOTBjXHViOTBkXHViOTBlXHViOTBmXHViOTEwXHViOTExXHViOTEyXHViOTEzXHViOTE0XHViOTE1XHViOTE2XHViOTE3XHVi''@;'; put 'put ''OTE5XHViOTFhXHViOTFiXHViOTFjXHViOTFkXHViOTFlXHViOTFmXHViOTIxXHViOTIyXHViOTIzXHViOTI0XHViOTI1XHViOTI2XHViOTI3XHViOTI4XHViOTI5XHViOTJhXHViOTJiXHViOTJjXHViOTJkXHViOTJlXHViOTJmXHViOTMwXHViOTMxXHViOTMyXHViOTMzXHViOTM0XHViOTM1''@;'; put 'put ''XHViOTM2XHViOTM3XHViOTM4XHViOTM5XHViOTNhXHViOTNiXHViOTNlXHViOTNmXHViOTQxXHViOTQyXHViOTQzXHViOTQ1XHViOTQ2XHViOTQ3XHViOTQ4XHViOTQ5XHViOTRhXHViOTRiXHViOTRkXHViOTRlXHViOTUwXHViOTUyXHViOTUzXHViOTU0XHViOTU1XHViOTU2XHViOTU3XHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0M11bbV1dPTM2NjA4K20sUlszNjYwOCttXT14WzE0M11bbV0pO2Zvcih4WzE0NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk1YVx1Yjk1Ylx1Yjk1ZFx1Yjk1ZVx1Yjk1Zlx1Yjk2MVx1Yjk2Mlx1Yjk2M1x1Yjk2NFx1Yjk2NVx1Yjk2Nlx1Yjk2N1x1Yjk2YVx1Yjk2Y1x1Yjk2ZVx1Yjk2Zlx1Yjk3MFx1Yjk3MVx1Yjk3Mlx1Yjk3M1x1Yjk3Nlx1Yjk3N1x1Yjk3OVx1''@;'; put 'put ''Yjk3YVx1Yjk3Ylx1Yjk3ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk3ZVx1Yjk3Zlx1Yjk4MFx1Yjk4MVx1Yjk4Mlx1Yjk4M1x1Yjk4Nlx1Yjk4OFx1Yjk4Ylx1Yjk4Y1x1Yjk4Zlx1Yjk5MFx1Yjk5MVx1Yjk5Mlx1Yjk5M1x1Yjk5NFx1Yjk5NVx1Yjk5Nlx1Yjk5''@;'; put 'put ''N1x1Yjk5OFx1Yjk5OVx1Yjk5YVx1Yjk5Ylx1Yjk5Y1x1Yjk5ZFx1Yjk5ZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Yjk5Zlx1YjlhMFx1YjlhMVx1YjlhMlx1YjlhM1x1YjlhNFx1YjlhNVx1YjlhNlx1YjlhN1x1YjlhOFx1YjlhOVx1YjlhYVx1YjlhYlx1YjlhZVx1''@;'; put 'put ''YjlhZlx1YjliMVx1YjliMlx1YjliM1x1YjliNVx1YjliNlx1YjliN1x1YjliOFx1YjliOVx1YjliYVx1YjliYlx1YjliZVx1YjljMFx1YjljMlx1YjljM1x1YjljNFx1YjljNVx1YjljNlx1YjljN1x1YjljYVx1YjljYlx1YjljZFx1YjlkM1x1YjlkNFx1YjlkNVx1YjlkNlx1YjlkN1x1Yjlk''@;'; put 'put ''YVx1YjlkY1x1YjlkZlx1YjllMFx1YjllMlx1YjllNlx1YjllN1x1YjllOVx1YjllYVx1YjllYlx1YjllZFx1YjllZVx1YjllZlx1YjlmMFx1YjlmMVx1YjlmMlx1YjlmM1x1YjlmNlx1YjlmYlx1YjlmY1x1YjlmZFx1YjlmZVx1YjlmZlx1YmEwMlx1YmEwM1x1YmEwNFx1YmEwNVx1YmEwNlx1''@;'; put 'put ''YmEwN1x1YmEwOVx1YmEwYVx1YmEwYlx1YmEwY1x1YmEwZFx1YmEwZVx1YmEwZlx1YmExMFx1YmExMVx1YmExMlx1YmExM1x1YmExNFx1YmExNlx1YmExN1x1YmExOFx1YmExOVx1YmExYVx1YmExYlx1YmExY1x1YmExZFx1YmExZVx1YmExZlx1YmEyMFx1YmEyMVx1YmEyMlx1YmEyM1x1YmEy''@;'; put 'put ''NFx1YmEyNVx1YmEyNlx1YmEyN1x1YmEyOFx1YmEyOVx1YmEyYVx1YmEyYlx1YmEyY1x1YmEyZFx1YmEyZVx1YmEyZlx1YmEzMFx1YmEzMVx1YmEzMlx1YmEzM1x1YmEzNFx1YmEzNVx1YmEzNlx1YmEzN1x1YmEzYVx1YmEzYlx1YmEzZFx1YmEzZVx1YmEzZlx1YmE0MVx1YmE0M1x1YmE0NFx1''@;'; put 'put ''YmE0NVx1YmE0Nlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQ0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDRdW21dXT0zNjg2NCttLFJbMzY4NjQrbV09eFsxNDRdW21dKTtmb3IoeFsxNDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNDdcdWJhNGFcdWJhNGNcdWJhNGZcdWJhNTBcdWJhNTFcdWJhNTJcdWJhNTZcdWJhNTdcdWJhNTlcdWJhNWFcdWJhNWJcdWJhNWRcdWJhNWVcdWJhNWZcdWJhNjBcdWJhNjFcdWJhNjJcdWJhNjNcdWJhNjZcdWJhNmFc''@;'; put 'put ''dWJhNmJcdWJhNmNcdWJhNmRcdWJhNmVcdWJhNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhNzJcdWJhNzNcdWJhNzVcdWJhNzZcdWJhNzdcdWJhNzlcdWJhN2FcdWJhN2JcdWJhN2NcdWJhN2RcdWJhN2VcdWJhN2ZcdWJhODBcdWJhODFcdWJhODJcdWJhODZcdWJh''@;'; put 'put ''ODhcdWJhODlcdWJhOGFcdWJhOGJcdWJhOGRcdWJhOGVcdWJhOGZcdWJhOTBcdWJhOTFcdWJhOTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJhOTNcdWJhOTRcdWJhOTVcdWJhOTZcdWJhOTdcdWJhOThcdWJhOTlcdWJhOWFcdWJhOWJcdWJhOWNcdWJhOWRcdWJhOWVc''@;'; put 'put ''dWJhOWZcdWJhYTBcdWJhYTFcdWJhYTJcdWJhYTNcdWJhYTRcdWJhYTVcdWJhYTZcdWJhYTdcdWJhYWFcdWJhYWRcdWJhYWVcdWJhYWZcdWJhYjFcdWJhYjNcdWJhYjRcdWJhYjVcdWJhYjZcdWJhYjdcdWJhYmFcdWJhYmNcdWJhYmVcdWJhYmZcdWJhYzBcdWJhYzFcdWJhYzJcdWJhYzNcdWJh''@;'; put 'put ''YzVcdWJhYzZcdWJhYzdcdWJhYzlcdWJhY2FcdWJhY2JcdWJhY2NcdWJhY2RcdWJhY2VcdWJhY2ZcdWJhZDBcdWJhZDFcdWJhZDJcdWJhZDNcdWJhZDRcdWJhZDVcdWJhZDZcdWJhZDdcdWJhZGFcdWJhZGJcdWJhZGNcdWJhZGRcdWJhZGVcdWJhZGZcdWJhZTBcdWJhZTFcdWJhZTJcdWJhZTNc''@;'; put 'put ''dWJhZTRcdWJhZTVcdWJhZTZcdWJhZTdcdWJhZThcdWJhZTlcdWJhZWFcdWJhZWJcdWJhZWNcdWJhZWRcdWJhZWVcdWJhZWZcdWJhZjBcdWJhZjFcdWJhZjJcdWJhZjNcdWJhZjRcdWJhZjVcdWJhZjZcdWJhZjdcdWJhZjhcdWJhZjlcdWJhZmFcdWJhZmJcdWJhZmRcdWJhZmVcdWJhZmZcdWJi''@;'; put 'put ''MDFcdWJiMDJcdWJiMDNcdWJiMDVcdWJiMDZcdWJiMDdcdWJiMDhcdWJiMDlcdWJiMGFcdWJiMGJcdWJiMGNcdWJiMGVcdWJiMTBcdWJiMTJcdWJiMTNcdWJiMTRcdWJiMTVcdWJiMTZcdWJiMTdcdWJiMTlcdWJiMWFcdWJiMWJcdWJiMWRcdWJiMWVcdWJiMWZcdWJiMjFcdWJiMjJcdWJiMjNc''@;'; put 'put ''dWJiMjRcdWJiMjVcdWJiMjZcdWJiMjdcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQ1XVttXV09MzcxMjArbSxSWzM3MTIwK21dPXhbMTQ1XVttXSk7Zm9yKHhbMTQ2XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjI4XHViYjJhXHViYjJjXHViYjJkXHViYjJlXHViYjJmXHViYjMwXHViYjMxXHViYjMyXHViYjMzXHViYjM3XHViYjM5XHViYjNhXHViYjNmXHViYjQwXHViYjQxXHViYjQyXHViYjQzXHViYjQ2''@;'; put 'put ''XHViYjQ4XHViYjRhXHViYjRiXHViYjRjXHViYjRlXHViYjUxXHViYjUyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjUzXHViYjU1XHViYjU2XHViYjU3XHViYjU5XHViYjVhXHViYjViXHViYjVjXHViYjVkXHViYjVlXHViYjVmXHViYjYwXHViYjYyXHViYjY0XHVi''@;'; put 'put ''YjY1XHViYjY2XHViYjY3XHViYjY4XHViYjY5XHViYjZhXHViYjZiXHViYjZkXHViYjZlXHViYjZmXHViYjcwXHViYjcxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViYjcyXHViYjczXHViYjc0XHViYjc1XHViYjc2XHViYjc3XHViYjc4XHViYjc5XHViYjdhXHViYjdi''@;'; put 'put ''XHViYjdjXHViYjdkXHViYjdlXHViYjdmXHViYjgwXHViYjgxXHViYjgyXHViYjgzXHViYjg0XHViYjg1XHViYjg2XHViYjg3XHViYjg5XHViYjhhXHViYjhiXHViYjhkXHViYjhlXHViYjhmXHViYjkxXHViYjkyXHViYjkzXHViYjk0XHViYjk1XHViYjk2XHViYjk3XHViYjk4XHViYjk5XHVi''@;'; put 'put ''YjlhXHViYjliXHViYjljXHViYjlkXHViYjllXHViYjlmXHViYmEwXHViYmExXHViYmEyXHViYmEzXHViYmE1XHViYmE2XHViYmE3XHViYmE5XHViYmFhXHViYmFiXHViYmFkXHViYmFlXHViYmFmXHViYmIwXHViYmIxXHViYmIyXHViYmIzXHViYmI1XHViYmI2XHViYmI4XHViYmI5XHViYmJh''@;'; put 'put ''XHViYmJiXHViYmJjXHViYmJkXHViYmJlXHViYmJmXHViYmMxXHViYmMyXHViYmMzXHViYmM1XHViYmM2XHViYmM3XHViYmM5XHViYmNhXHViYmNiXHViYmNjXHViYmNkXHViYmNlXHViYmNmXHViYmQxXHViYmQyXHViYmQ0XHViYmQ1XHViYmQ2XHViYmQ3XHViYmQ4XHViYmQ5XHViYmRhXHVi''@;'; put 'put ''YmRiXHViYmRjXHViYmRkXHViYmRlXHViYmRmXHViYmUwXHViYmUxXHViYmUyXHViYmUzXHViYmU0XHViYmU1XHViYmU2XHViYmU3XHViYmU4XHViYmU5XHViYmVhXHViYmViXHViYmVjXHViYmVkXHViYmVlXHViYmVmXHViYmYwXHViYmYxXHViYmYyXHViYmYzXHViYmY0XHViYmY1XHViYmY2''@;'; put 'put ''XHViYmY3XHViYmZhXHViYmZiXHViYmZkXHViYmZlXHViYzAxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQ2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0Nl1bbV1dPTM3Mzc2K20sUlszNzM3NittXT14WzE0Nl1bbV0pO2Zvcih4WzE0''@;'; put 'put ''N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMwM1x1YmMwNFx1YmMwNVx1YmMwNlx1YmMwN1x1YmMwYVx1YmMwZVx1YmMxMFx1YmMxMlx1YmMxM1x1YmMxOVx1YmMxYVx1YmMyMFx1YmMyMVx1YmMyMlx1YmMyM1x1YmMy''@;'; put 'put ''Nlx1YmMyOFx1YmMyYVx1YmMyYlx1YmMyY1x1YmMyZVx1YmMyZlx1YmMzMlx1YmMzM1x1YmMzNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmMzNlx1YmMzN1x1YmMzOVx1YmMzYVx1YmMzYlx1YmMzY1x1YmMzZFx1YmMzZVx1YmMzZlx1YmM0Mlx1YmM0Nlx1YmM0N1x1''@;'; put 'put ''YmM0OFx1YmM0YVx1YmM0Ylx1YmM0ZVx1YmM0Zlx1YmM1MVx1YmM1Mlx1YmM1M1x1YmM1NFx1YmM1NVx1YmM1Nlx1YmM1N1x1YmM1OFx1YmM1OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZVx1YmM1Zlx1YmM2MFx1YmM2MVx1YmM2''@;'; put 'put ''Mlx1YmM2M1x1YmM2NFx1YmM2NVx1YmM2Nlx1YmM2N1x1YmM2OFx1YmM2OVx1YmM2YVx1YmM2Ylx1YmM2Y1x1YmM2ZFx1YmM2ZVx1YmM2Zlx1YmM3MFx1YmM3MVx1YmM3Mlx1YmM3M1x1YmM3NFx1YmM3NVx1YmM3Nlx1YmM3N1x1YmM3OFx1YmM3OVx1YmM3YVx1YmM3Ylx1YmM3Y1x1YmM3ZFx1''@;'; put 'put ''YmM3ZVx1YmM3Zlx1YmM4MFx1YmM4MVx1YmM4Mlx1YmM4M1x1YmM4Nlx1YmM4N1x1YmM4OVx1YmM4YVx1YmM4ZFx1YmM4Zlx1YmM5MFx1YmM5MVx1YmM5Mlx1YmM5M1x1YmM5Nlx1YmM5OFx1YmM5Ylx1YmM5Y1x1YmM5ZFx1YmM5ZVx1YmM5Zlx1YmNhMlx1YmNhM1x1YmNhNVx1YmNhNlx1YmNh''@;'; put 'put ''OVx1YmNhYVx1YmNhYlx1YmNhY1x1YmNhZFx1YmNhZVx1YmNhZlx1YmNiMlx1YmNiNlx1YmNiN1x1YmNiOFx1YmNiOVx1YmNiYVx1YmNiYlx1YmNiZVx1YmNiZlx1YmNjMVx1YmNjMlx1YmNjM1x1YmNjNVx1YmNjNlx1YmNjN1x1YmNjOFx1YmNjOVx1YmNjYVx1YmNjYlx1YmNjY1x1YmNjZVx1''@;'; put 'put ''YmNkMlx1YmNkM1x1YmNkNFx1YmNkNlx1YmNkN1x1YmNkOVx1YmNkYVx1YmNkYlx1YmNkZFx1YmNkZVx1YmNkZlx1YmNlMFx1YmNlMVx1YmNlMlx1YmNlM1x1YmNlNFx1YmNlNVx1YmNlNlx1YmNlN1x1YmNlOFx1YmNlOVx1YmNlYVx1YmNlYlx1YmNlY1x1YmNlZFx1YmNlZVx1YmNlZlx1YmNm''@;'; put 'put ''MFx1YmNmMVx1YmNmMlx1YmNmM1x1YmNmN1x1YmNmOVx1YmNmYVx1YmNmYlx1YmNmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE0N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTQ3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNDddW21dXT0zNzYzMittLFJbMzc2MzIrbV09eFsxNDdd''@;'; put 'put ''W21dKTtmb3IoeFsxNDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJjZmVcdWJjZmZcdWJkMDBcdWJkMDFcdWJkMDJcdWJkMDNcdWJkMDZcdWJkMDhcdWJkMGFcdWJkMGJcdWJkMGNcdWJkMGRcdWJkMGVcdWJkMGZcdWJk''@;'; put 'put ''MTFcdWJkMTJcdWJkMTNcdWJkMTVcdWJkMTZcdWJkMTdcdWJkMThcdWJkMTlcdWJkMWFcdWJkMWJcdWJkMWNcdWJkMWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkMWVcdWJkMWZcdWJkMjBcdWJkMjFcdWJkMjJcdWJkMjNcdWJkMjVcdWJkMjZcdWJkMjdcdWJkMjhc''@;'; put 'put ''dWJkMjlcdWJkMmFcdWJkMmJcdWJkMmRcdWJkMmVcdWJkMmZcdWJkMzBcdWJkMzFcdWJkMzJcdWJkMzNcdWJkMzRcdWJkMzVcdWJkMzZcdWJkMzdcdWJkMzhcdWJkMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJkM2FcdWJkM2JcdWJkM2NcdWJkM2RcdWJkM2VcdWJk''@;'; put 'put ''M2ZcdWJkNDFcdWJkNDJcdWJkNDNcdWJkNDRcdWJkNDVcdWJkNDZcdWJkNDdcdWJkNGFcdWJkNGJcdWJkNGRcdWJkNGVcdWJkNGZcdWJkNTFcdWJkNTJcdWJkNTNcdWJkNTRcdWJkNTVcdWJkNTZcdWJkNTdcdWJkNWFcdWJkNWJcdWJkNWNcdWJkNWRcdWJkNWVcdWJkNWZcdWJkNjBcdWJkNjFc''@;'; put 'put ''dWJkNjJcdWJkNjNcdWJkNjVcdWJkNjZcdWJkNjdcdWJkNjlcdWJkNmFcdWJkNmJcdWJkNmNcdWJkNmRcdWJkNmVcdWJkNmZcdWJkNzBcdWJkNzFcdWJkNzJcdWJkNzNcdWJkNzRcdWJkNzVcdWJkNzZcdWJkNzdcdWJkNzhcdWJkNzlcdWJkN2FcdWJkN2JcdWJkN2NcdWJkN2RcdWJkN2VcdWJk''@;'; put 'put ''N2ZcdWJkODJcdWJkODNcdWJkODVcdWJkODZcdWJkOGJcdWJkOGNcdWJkOGRcdWJkOGVcdWJkOGZcdWJkOTJcdWJkOTRcdWJkOTZcdWJkOTdcdWJkOThcdWJkOWJcdWJkOWRcdWJkOWVcdWJkOWZcdWJkYTBcdWJkYTFcdWJkYTJcdWJkYTNcdWJkYTVcdWJkYTZcdWJkYTdcdWJkYThcdWJkYTlc''@;'; put 'put ''dWJkYWFcdWJkYWJcdWJkYWNcdWJkYWRcdWJkYWVcdWJkYWZcdWJkYjFcdWJkYjJcdWJkYjNcdWJkYjRcdWJkYjVcdWJkYjZcdWJkYjdcdWJkYjlcdWJkYmFcdWJkYmJcdWJkYmNcdWJkYmRcdWJkYmVcdWJkYmZcdWJkYzBcdWJkYzFcdWJkYzJcdWJkYzNcdWJkYzRcdWJkYzVcdWJkYzZcdWJk''@;'; put 'put ''YzdcdWJkYzhcdWJkYzlcdWJkY2FcdWJkY2JcdWJkY2NcdWJkY2RcdWJkY2VcdWJkY2ZcdWJkZDBcdWJkZDFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNDhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE0OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTQ4XVttXV09Mzc4ODgrbSxSWzM3''@;'; put 'put ''ODg4K21dPXhbMTQ4XVttXSk7Zm9yKHhbMTQ5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZGQyXHViZGQzXHViZGQ2XHViZGQ3XHViZGQ5XHViZGRhXHViZGRiXHViZGRkXHViZGRlXHViZGRmXHViZGUwXHViZGUxXHVi''@;'; put 'put ''ZGUyXHViZGUzXHViZGU0XHViZGU1XHViZGU2XHViZGU3XHViZGU4XHViZGVhXHViZGViXHViZGVjXHViZGVkXHViZGVlXHViZGVmXHViZGYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZGYyXHViZGYzXHViZGY1XHViZGY2XHViZGY3XHViZGY5XHViZGZhXHViZGZi''@;'; put 'put ''XHViZGZjXHViZGZkXHViZGZlXHViZGZmXHViZTAxXHViZTAyXHViZTA0XHViZTA2XHViZTA3XHViZTA4XHViZTA5XHViZTBhXHViZTBiXHViZTBlXHViZTBmXHViZTExXHViZTEyXHViZTEzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHViZTE1XHViZTE2XHViZTE3XHVi''@;'; put 'put ''ZTE4XHViZTE5XHViZTFhXHViZTFiXHViZTFlXHViZTIwXHViZTIxXHViZTIyXHViZTIzXHViZTI0XHViZTI1XHViZTI2XHViZTI3XHViZTI4XHViZTI5XHViZTJhXHViZTJiXHViZTJjXHViZTJkXHViZTJlXHViZTJmXHViZTMwXHViZTMxXHViZTMyXHViZTMzXHViZTM0XHViZTM1XHViZTM2''@;'; put 'put ''XHViZTM3XHViZTM4XHViZTM5XHViZTNhXHViZTNiXHViZTNjXHViZTNkXHViZTNlXHViZTNmXHViZTQwXHViZTQxXHViZTQyXHViZTQzXHViZTQ2XHViZTQ3XHViZTQ5XHViZTRhXHViZTRiXHViZTRkXHViZTRmXHViZTUwXHViZTUxXHViZTUyXHViZTUzXHViZTU2XHViZTU4XHViZTVjXHVi''@;'; put 'put ''ZTVkXHViZTVlXHViZTVmXHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiXHViZTZjXHViZTZkXHViZTZlXHViZTZmXHViZTcyXHViZTc2XHViZTc3XHViZTc4XHViZTc5XHViZTdhXHViZTdlXHViZTdmXHViZTgxXHViZTgyXHViZTgzXHViZTg1XHViZTg2XHViZTg3''@;'; put 'put ''XHViZTg4XHViZTg5XHViZThhXHViZThiXHViZThlXHViZTkyXHViZTkzXHViZTk0XHViZTk1XHViZTk2XHViZTk3XHViZTlhXHViZTliXHViZTljXHViZTlkXHViZTllXHViZTlmXHViZWEwXHViZWExXHViZWEyXHViZWEzXHViZWE0XHViZWE1XHViZWE2XHViZWE3XHViZWE5XHViZWFhXHVi''@;'; put 'put ''ZWFiXHViZWFjXHViZWFkXHViZWFlXHViZWFmXHViZWIwXHViZWIxXHViZWIyXHViZWIzXHViZWI0XHViZWI1XHViZWI2XHViZWI3XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTQ5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNDldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE0OV1bbV1d''@;'; put 'put ''PTM4MTQ0K20sUlszODE0NCttXT14WzE0OV1bbV0pO2Zvcih4WzE1MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmViOFx1YmViOVx1YmViYVx1YmViYlx1YmViY1x1YmViZFx1YmViZVx1YmViZlx1YmVjMFx1YmVjMVx1''@;'; put 'put ''YmVjMlx1YmVjM1x1YmVjNFx1YmVjNVx1YmVjNlx1YmVjN1x1YmVjOFx1YmVjOVx1YmVjYVx1YmVjYlx1YmVjY1x1YmVjZFx1YmVjZVx1YmVjZlx1YmVkMlx1YmVkM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVkNVx1YmVkNlx1YmVkOVx1YmVkYVx1YmVkYlx1YmVk''@;'; put 'put ''Y1x1YmVkZFx1YmVkZVx1YmVkZlx1YmVlMVx1YmVlMlx1YmVlNlx1YmVlN1x1YmVlOFx1YmVlOVx1YmVlYVx1YmVlYlx1YmVlZFx1YmVlZVx1YmVlZlx1YmVmMFx1YmVmMVx1YmVmMlx1YmVmM1x1YmVmNFx1YmVmNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YmVmNlx1''@;'; put 'put ''YmVmN1x1YmVmOFx1YmVmOVx1YmVmYVx1YmVmYlx1YmVmY1x1YmVmZFx1YmVmZVx1YmVmZlx1YmYwMFx1YmYwMlx1YmYwM1x1YmYwNFx1YmYwNVx1YmYwNlx1YmYwN1x1YmYwYVx1YmYwYlx1YmYwY1x1YmYwZFx1YmYwZVx1YmYwZlx1YmYxMFx1YmYxMVx1YmYxMlx1YmYxM1x1YmYxNFx1YmYx''@;'; put 'put ''NVx1YmYxNlx1YmYxN1x1YmYxYVx1YmYxZVx1YmYxZlx1YmYyMFx1YmYyMVx1YmYyMlx1YmYyM1x1YmYyNFx1YmYyNVx1YmYyNlx1YmYyN1x1YmYyOFx1YmYyOVx1YmYyYVx1YmYyYlx1YmYyY1x1YmYyZFx1YmYyZVx1YmYyZlx1YmYzMFx1YmYzMVx1YmYzMlx1YmYzM1x1YmYzNFx1YmYzNVx1''@;'; put 'put ''YmYzNlx1YmYzN1x1YmYzOFx1YmYzOVx1YmYzYVx1YmYzYlx1YmYzY1x1YmYzZFx1YmYzZVx1YmYzZlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OVx1YmY0YVx1YmY0Ylx1YmY0Y1x1YmY0ZFx1YmY0ZVx1YmY0Zlx1YmY1Mlx1YmY1M1x1YmY1NFx1YmY1Nlx1YmY1N1x1YmY1''@;'; put 'put ''OFx1YmY1OVx1YmY1YVx1YmY1Ylx1YmY1Y1x1YmY1ZFx1YmY1ZVx1YmY1Zlx1YmY2MFx1YmY2MVx1YmY2Mlx1YmY2M1x1YmY2NFx1YmY2NVx1YmY2Nlx1YmY2N1x1YmY2OFx1YmY2OVx1YmY2YVx1YmY2Ylx1YmY2Y1x1YmY2ZFx1YmY2ZVx1YmY2Zlx1YmY3MFx1YmY3MVx1YmY3Mlx1YmY3M1x1''@;'; put 'put ''YmY3NFx1YmY3NVx1YmY3Nlx1YmY3N1x1YmY3OFx1YmY3OVx1YmY3YVx1YmY3Ylx1YmY3Y1x1YmY3ZFx1YmY3ZVx1YmY3Zlx1YmY4MFx1YmY4MVx1YmY4Mlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTUwXVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsxNTBdW21dXT0zODQwMCttLFJbMzg0MDArbV09eFsxNTBdW21dKTtmb3IoeFsxNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmODNcdWJmODRcdWJmODVcdWJmODZcdWJmODdcdWJmODhcdWJmODlcdWJmOGFc''@;'; put 'put ''dWJmOGJcdWJmOGNcdWJmOGRcdWJmOGVcdWJmOGZcdWJmOTBcdWJmOTFcdWJmOTJcdWJmOTNcdWJmOTVcdWJmOTZcdWJmOTdcdWJmOThcdWJmOTlcdWJmOWFcdWJmOWJcdWJmOWNcdWJmOWRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWJmOWVcdWJmOWZcdWJmYTBcdWJm''@;'; put 'put ''YTFcdWJmYTJcdWJmYTNcdWJmYTRcdWJmYTVcdWJmYTZcdWJmYTdcdWJmYThcdWJmYTlcdWJmYWFcdWJmYWJcdWJmYWNcdWJmYWRcdWJmYWVcdWJmYWZcdWJmYjFcdWJmYjJcdWJmYjNcdWJmYjRcdWJmYjVcdWJmYjZcdWJmYjdcdWJmYjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWJmYjlcdWJmYmFcdWJmYmJcdWJmYmNcdWJmYmRcdWJmYmVcdWJmYmZcdWJmYzBcdWJmYzFcdWJmYzJcdWJmYzNcdWJmYzRcdWJmYzZcdWJmYzdcdWJmYzhcdWJmYzlcdWJmY2FcdWJmY2JcdWJmY2VcdWJmY2ZcdWJmZDFcdWJmZDJcdWJmZDNcdWJmZDVcdWJmZDZcdWJmZDdcdWJm''@;'; put 'put ''ZDhcdWJmZDlcdWJmZGFcdWJmZGJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTJcdWJmZTNcdWJmZTRcdWJmZTVcdWJmZTZcdWJmZTdcdWJmZThcdWJmZTlcdWJmZWFcdWJmZWJcdWJmZWNcdWJmZWRcdWJmZWVcdWJmZWZcdWJmZjBcdWJmZjFcdWJmZjJcdWJmZjNcdWJmZjRcdWJmZjVcdWJmZjZc''@;'; put 'put ''dWJmZjdcdWJmZjhcdWJmZjlcdWJmZmFcdWJmZmJcdWJmZmNcdWJmZmRcdWJmZmVcdWJmZmZcdWMwMDBcdWMwMDFcdWMwMDJcdWMwMDNcdWMwMDRcdWMwMDVcdWMwMDZcdWMwMDdcdWMwMDhcdWMwMDlcdWMwMGFcdWMwMGJcdWMwMGNcdWMwMGRcdWMwMGVcdWMwMGZcdWMwMTBcdWMwMTFcdWMw''@;'; put 'put ''MTJcdWMwMTNcdWMwMTRcdWMwMTVcdWMwMTZcdWMwMTdcdWMwMThcdWMwMTlcdWMwMWFcdWMwMWJcdWMwMWNcdWMwMWRcdWMwMWVcdWMwMWZcdWMwMjBcdWMwMjFcdWMwMjJcdWMwMjNcdWMwMjRcdWMwMjVcdWMwMjZcdWMwMjdcdWMwMjhcdWMwMjlcdWMwMmFcdWMwMmJcdWMwMmNcdWMwMmRc''@;'; put 'put ''dWMwMmVcdWMwMmZcdWMwMzBcdWMwMzFcdWMwMzJcdWMwMzNcdWMwMzRcdWMwMzVcdWMwMzZcdWMwMzdcdWMwMzhcdWMwMzlcdWMwM2FcdWMwM2JcdWMwM2RcdWMwM2VcdWMwM2ZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1MV1bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMTUxXVttXV09Mzg2NTYrbSxSWzM4NjU2K21dPXhbMTUxXVttXSk7Zm9yKHhbMTUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDQwXHVjMDQxXHVjMDQyXHVjMDQzXHVjMDQ0XHVjMDQ1''@;'; put 'put ''XHVjMDQ2XHVjMDQ3XHVjMDQ4XHVjMDQ5XHVjMDRhXHVjMDRiXHVjMDRjXHVjMDRkXHVjMDRlXHVjMDRmXHVjMDUwXHVjMDUyXHVjMDUzXHVjMDU0XHVjMDU1XHVjMDU2XHVjMDU3XHVjMDU5XHVjMDVhXHVjMDViXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMDVkXHVj''@;'; put 'put ''MDVlXHVjMDVmXHVjMDYxXHVjMDYyXHVjMDYzXHVjMDY0XHVjMDY1XHVjMDY2XHVjMDY3XHVjMDZhXHVjMDZiXHVjMDZjXHVjMDZkXHVjMDZlXHVjMDZmXHVjMDcwXHVjMDcxXHVjMDcyXHVjMDczXHVjMDc0XHVjMDc1XHVjMDc2XHVjMDc3XHVjMDc4XHVjMDc5XHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVjMDdhXHVjMDdiXHVjMDdjXHVjMDdkXHVjMDdlXHVjMDdmXHVjMDgwXHVjMDgxXHVjMDgyXHVjMDgzXHVjMDg0XHVjMDg1XHVjMDg2XHVjMDg3XHVjMDg4XHVjMDg5XHVjMDhhXHVjMDhiXHVjMDhjXHVjMDhkXHVjMDhlXHVjMDhmXHVjMDkyXHVjMDkzXHVj''@;'; put 'put ''MDk1XHVjMDk2XHVjMDk3XHVjMDk5XHVjMDlhXHVjMDliXHVjMDljXHVjMDlkXHVjMDllXHVjMDlmXHVjMGEyXHVjMGE0XHVjMGE2XHVjMGE3XHVjMGE4XHVjMGE5XHVjMGFhXHVjMGFiXHVjMGFlXHVjMGIxXHVjMGIyXHVjMGI3XHVjMGI4XHVjMGI5XHVjMGJhXHVjMGJiXHVjMGJlXHVjMGMy''@;'; put 'put ''XHVjMGMzXHVjMGM0XHVjMGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxXHVjMGQyXHVjMGQzXHVjMGQ0XHVjMGQ1XHVjMGQ2XHVjMGQ3XHVjMGRhXHVjMGRlXHVjMGRmXHVjMGUwXHVjMGUxXHVjMGUyXHVjMGUzXHVjMGU2XHVjMGU3XHVjMGU5XHVjMGVhXHVj''@;'; put 'put ''MGViXHVjMGVkXHVjMGVlXHVjMGVmXHVjMGYwXHVjMGYxXHVjMGYyXHVjMGYzXHVjMGY2XHVjMGY4XHVjMGZhXHVjMGZiXHVjMGZjXHVjMGZkXHVjMGZlXHVjMGZmXHVjMTAxXHVjMTAyXHVjMTAzXHVjMTA1XHVjMTA2XHVjMTA3XHVjMTA5XHVjMTBhXHVjMTBiXHVjMTBjXHVjMTBkXHVjMTBl''@;'; put 'put ''XHVjMTBmXHVjMTExXHVjMTEyXHVjMTEzXHVjMTE0XHVjMTE2XHVjMTE3XHVjMTE4XHVjMTE5XHVjMTFhXHVjMTFiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTUyXS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsxNTJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1Ml1bbV1dPTM4OTEyK20sUlszODkxMittXT14WzE1Ml1bbV0pO2Zvcih4WzE1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzEzMlx1YzEzM1x1YzEzNFx1YzEz''@;'; put 'put ''NVx1YzEzN1x1YzEzYVx1YzEzYlx1YzEzZFx1YzEzZVx1YzEzZlx1YzE0MVx1YzE0Mlx1YzE0M1x1YzE0NFx1YzE0NVx1YzE0Nlx1YzE0N1x1YzE0YVx1YzE0ZVx1YzE0Zlx1YzE1MFx1YzE1MVx1YzE1Mlx1YzE1M1x1YzE1Nlx1YzE1N1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZFx1YzE1ZVx1YzE1Zlx1YzE2MFx1YzE2MVx1YzE2Mlx1YzE2M1x1YzE2Nlx1YzE2YVx1YzE2Ylx1YzE2Y1x1YzE2ZFx1YzE2ZVx1YzE2Zlx1YzE3MVx1YzE3Mlx1YzE3M1x1YzE3NVx1YzE3Nlx1YzE3N1x1YzE3OVx1YzE3YVx1YzE3Ylx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzE3Y1x1YzE3ZFx1YzE3ZVx1YzE3Zlx1YzE4MFx1YzE4MVx1YzE4Mlx1YzE4M1x1YzE4NFx1YzE4Nlx1YzE4N1x1YzE4OFx1YzE4OVx1YzE4YVx1YzE4Ylx1YzE4Zlx1YzE5MVx1YzE5Mlx1YzE5M1x1YzE5NVx1YzE5N1x1YzE5OFx1''@;'; put 'put ''YzE5OVx1YzE5YVx1YzE5Ylx1YzE5ZVx1YzFhMFx1YzFhMlx1YzFhM1x1YzFhNFx1YzFhNlx1YzFhN1x1YzFhYVx1YzFhYlx1YzFhZFx1YzFhZVx1YzFhZlx1YzFiMVx1YzFiMlx1YzFiM1x1YzFiNFx1YzFiNVx1YzFiNlx1YzFiN1x1YzFiOFx1YzFiOVx1YzFiYVx1YzFiYlx1YzFiY1x1YzFi''@;'; put 'put ''ZVx1YzFiZlx1YzFjMFx1YzFjMVx1YzFjMlx1YzFjM1x1YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZFx1YzFjZVx1YzFjZlx1YzFkMFx1YzFkMVx1YzFkMlx1YzFkM1x1YzFkNVx1YzFkNlx1YzFkOVx1YzFkYVx1YzFkYlx1YzFkY1x1YzFkZFx1YzFkZVx1YzFkZlx1''@;'; put 'put ''YzFlMVx1YzFlMlx1YzFlM1x1YzFlNVx1YzFlNlx1YzFlN1x1YzFlOVx1YzFlYVx1YzFlYlx1YzFlY1x1YzFlZFx1YzFlZVx1YzFlZlx1YzFmMlx1YzFmNFx1YzFmNVx1YzFmNlx1YzFmN1x1YzFmOFx1YzFmOVx1YzFmYVx1YzFmYlx1YzFmZVx1YzFmZlx1YzIwMVx1YzIwMlx1YzIwM1x1YzIw''@;'; put 'put ''NVx1YzIwNlx1YzIwN1x1YzIwOFx1YzIwOVx1YzIwYVx1YzIwYlx1YzIwZVx1YzIxMFx1YzIxMlx1YzIxM1x1YzIxNFx1YzIxNVx1YzIxNlx1YzIxN1x1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1M10ubGVuZ3Ro''@;'; put 'put ''OysrbSk2NTUzMyE9PXhbMTUzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTNdW21dXT0zOTE2OCttLFJbMzkxNjgrbV09eFsxNTNdW21dKTtmb3IoeFsxNTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyMjRcdWMy''@;'; put 'put ''MjVcdWMyMjZcdWMyMjdcdWMyMmFcdWMyMmNcdWMyMmVcdWMyMzBcdWMyMzNcdWMyMzVcdWMyMzZcdWMyMzdcdWMyMzhcdWMyMzlcdWMyM2FcdWMyM2JcdWMyM2NcdWMyM2RcdWMyM2VcdWMyM2ZcdWMyNDBcdWMyNDFcdWMyNDJcdWMyNDNcdWMyNDRcdWMyNDVcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWMyNDZcdWMyNDdcdWMyNDlcdWMyNGFcdWMyNGJcdWMyNGNcdWMyNGRcdWMyNGVcdWMyNGZcdWMyNTJcdWMyNTNcdWMyNTVcdWMyNTZcdWMyNTdcdWMyNTlcdWMyNWFcdWMyNWJcdWMyNWNcdWMyNWRcdWMyNWVcdWMyNWZcdWMyNjFcdWMyNjJcdWMyNjNcdWMy''@;'; put 'put ''NjRcdWMyNjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWMyNjdcdWMyNjhcdWMyNjlcdWMyNmFcdWMyNmJcdWMyNmVcdWMyNmZcdWMyNzFcdWMyNzJcdWMyNzNcdWMyNzVcdWMyNzZcdWMyNzdcdWMyNzhcdWMyNzlcdWMyN2FcdWMyN2JcdWMyN2VcdWMyODBcdWMyODJc''@;'; put 'put ''dWMyODNcdWMyODRcdWMyODVcdWMyODZcdWMyODdcdWMyOGFcdWMyOGJcdWMyOGNcdWMyOGRcdWMyOGVcdWMyOGZcdWMyOTFcdWMyOTJcdWMyOTNcdWMyOTRcdWMyOTVcdWMyOTZcdWMyOTdcdWMyOTlcdWMyOWFcdWMyOWNcdWMyOWVcdWMyOWZcdWMyYTBcdWMyYTFcdWMyYTJcdWMyYTNcdWMy''@;'; put 'put ''YTZcdWMyYTdcdWMyYTlcdWMyYWFcdWMyYWJcdWMyYWVcdWMyYWZcdWMyYjBcdWMyYjFcdWMyYjJcdWMyYjNcdWMyYjZcdWMyYjhcdWMyYmFcdWMyYmJcdWMyYmNcdWMyYmRcdWMyYmVcdWMyYmZcdWMyYzBcdWMyYzFcdWMyYzJcdWMyYzNcdWMyYzRcdWMyYzVcdWMyYzZcdWMyYzdcdWMyYzhc''@;'; put 'put ''dWMyYzlcdWMyY2FcdWMyY2JcdWMyY2NcdWMyY2RcdWMyY2VcdWMyY2ZcdWMyZDBcdWMyZDFcdWMyZDJcdWMyZDNcdWMyZDRcdWMyZDVcdWMyZDZcdWMyZDdcdWMyZDhcdWMyZDlcdWMyZGFcdWMyZGJcdWMyZGVcdWMyZGZcdWMyZTFcdWMyZTJcdWMyZTVcdWMyZTZcdWMyZTdcdWMyZThcdWMy''@;'; put 'put ''ZTlcdWMyZWFcdWMyZWVcdWMyZjBcdWMyZjJcdWMyZjNcdWMyZjRcdWMyZjVcdWMyZjdcdWMyZmFcdWMyZmRcdWMyZmVcdWMyZmZcdWMzMDFcdWMzMDJcdWMzMDNcdWMzMDRcdWMzMDVcdWMzMDZcdWMzMDdcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9''@;'; put 'put ''eFsxNTRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTU0XVttXV09Mzk0MjQrbSxSWzM5NDI0K21dPXhbMTU0XVttXSk7Zm9yKHhbMTU1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVjMzEwXHVjMzExXHVjMzEyXHVjMzE2XHVjMzE3XHVjMzE5XHVjMzFhXHVjMzFiXHVjMzFkXHVjMzFlXHVjMzFmXHVjMzIwXHVjMzIxXHVjMzIyXHVjMzIzXHVjMzI2XHVjMzI3XHVjMzJhXHVjMzJiXHVjMzJjXHVjMzJkXHVjMzJlXHVjMzJmXHVjMzMwXHVjMzMxXHVjMzMyXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzMzXHVjMzM0XHVjMzM1XHVjMzM2XHVjMzM3XHVjMzM4XHVjMzM5XHVjMzNhXHVjMzNiXHVjMzNjXHVjMzNkXHVjMzNlXHVjMzNmXHVjMzQwXHVjMzQxXHVjMzQyXHVjMzQzXHVjMzQ0XHVjMzQ2XHVjMzQ3XHVjMzQ4XHVjMzQ5XHVj''@;'; put 'put ''MzRhXHVjMzRiXHVjMzRjXHVjMzRkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjMzRlXHVjMzRmXHVjMzUwXHVjMzUxXHVjMzUyXHVjMzUzXHVjMzU0XHVjMzU1XHVjMzU2XHVjMzU3XHVjMzU4XHVjMzU5XHVjMzVhXHVjMzViXHVjMzVjXHVjMzVkXHVjMzVlXHVjMzVm''@;'; put 'put ''XHVjMzYwXHVjMzYxXHVjMzYyXHVjMzYzXHVjMzY0XHVjMzY1XHVjMzY2XHVjMzY3XHVjMzZhXHVjMzZiXHVjMzZkXHVjMzZlXHVjMzZmXHVjMzcxXHVjMzczXHVjMzc0XHVjMzc1XHVjMzc2XHVjMzc3XHVjMzdhXHVjMzdiXHVjMzdlXHVjMzdmXHVjMzgwXHVjMzgxXHVjMzgyXHVjMzgzXHVj''@;'; put 'put ''Mzg1XHVjMzg2XHVjMzg3XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkXHVjMzhlXHVjMzhmXHVjMzkwXHVjMzkxXHVjMzkyXHVjMzkzXHVjMzk0XHVjMzk1XHVjMzk2XHVjMzk3XHVjMzk4XHVjMzk5XHVjMzlhXHVjMzliXHVjMzljXHVjMzlkXHVjMzllXHVjMzlmXHVjM2EwXHVjM2ExXHVjM2Ey''@;'; put 'put ''XHVjM2EzXHVjM2E0XHVjM2E1XHVjM2E2XHVjM2E3XHVjM2E4XHVjM2E5XHVjM2FhXHVjM2FiXHVjM2FjXHVjM2FkXHVjM2FlXHVjM2FmXHVjM2IwXHVjM2IxXHVjM2IyXHVjM2IzXHVjM2I0XHVjM2I1XHVjM2I2XHVjM2I3XHVjM2I4XHVjM2I5XHVjM2JhXHVjM2JiXHVjM2JjXHVjM2JkXHVj''@;'; put 'put ''M2JlXHVjM2JmXHVjM2MxXHVjM2MyXHVjM2MzXHVjM2M0XHVjM2M1XHVjM2M2XHVjM2M3XHVjM2M4XHVjM2M5XHVjM2NhXHVjM2NiXHVjM2NjXHVjM2NkXHVjM2NlXHVjM2NmXHVjM2QwXHVjM2QxXHVjM2QyXHVjM2QzXHVjM2Q0XHVjM2Q1XHVjM2Q2XHVjM2Q3XHVjM2RhXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksbT0wO20hPXhbMTU1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNTVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1NV1bbV1dPTM5NjgwK20sUlszOTY4MCttXT14WzE1NV1bbV0pO2Zvcih4WzE1Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNkYlx1YzNkZFx1YzNkZVx1YzNlMVx1YzNlM1x1YzNlNFx1YzNlNVx1YzNlNlx1YzNlN1x1YzNlYVx1YzNlYlx1YzNlY1x1YzNlZVx1YzNlZlx1YzNmMFx1YzNmMVx1YzNmMlx1YzNmM1x1YzNmNlx1YzNmN1x1YzNmOVx1YzNmYVx1YzNmYlx1YzNmY1x1YzNm''@;'; put 'put ''ZFx1YzNmZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzNmZlx1YzQwMFx1YzQwMVx1YzQwMlx1YzQwM1x1YzQwNFx1YzQwNVx1YzQwNlx1YzQwN1x1YzQwOVx1YzQwYVx1YzQwYlx1YzQwY1x1YzQwZFx1YzQwZVx1YzQwZlx1YzQxMVx1YzQxMlx1YzQxM1x1YzQxNFx1''@;'; put 'put ''YzQxNVx1YzQxNlx1YzQxN1x1YzQxOFx1YzQxOVx1YzQxYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzQxYlx1YzQxY1x1YzQxZFx1YzQxZVx1YzQxZlx1YzQyMFx1YzQyMVx1YzQyMlx1YzQyM1x1YzQyNVx1YzQyNlx1YzQyN1x1YzQyOFx1YzQyOVx1YzQyYVx1YzQy''@;'; put 'put ''Ylx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNVx1YzQzNlx1YzQzN1x1YzQzOFx1YzQzOVx1YzQzYVx1YzQzYlx1YzQzZVx1YzQzZlx1YzQ0MFx1YzQ0MVx1YzQ0Mlx1YzQ0M1x1YzQ0NFx1YzQ0NVx1YzQ0Nlx1YzQ0N1x1YzQ0OVx1YzQ0YVx1YzQ0Ylx1YzQ0Y1x1''@;'; put 'put ''YzQ0ZFx1YzQ0ZVx1YzQ0Zlx1YzQ1MFx1YzQ1MVx1YzQ1Mlx1YzQ1M1x1YzQ1NFx1YzQ1NVx1YzQ1Nlx1YzQ1N1x1YzQ1OFx1YzQ1OVx1YzQ1YVx1YzQ1Ylx1YzQ1Y1x1YzQ1ZFx1YzQ1ZVx1YzQ1Zlx1YzQ2MFx1YzQ2MVx1YzQ2Mlx1YzQ2M1x1YzQ2Nlx1YzQ2N1x1YzQ2OVx1YzQ2YVx1YzQ2''@;'; put 'put ''Ylx1YzQ2ZFx1YzQ2ZVx1YzQ2Zlx1YzQ3MFx1YzQ3MVx1YzQ3Mlx1YzQ3M1x1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YVx1YzQ3Ylx1YzQ3Y1x1YzQ3ZFx1YzQ3ZVx1YzQ3Zlx1YzQ4MVx1YzQ4Mlx1YzQ4M1x1YzQ4NFx1YzQ4NVx1YzQ4Nlx1YzQ4N1x1YzQ4OFx1YzQ4OVx1YzQ4YVx1YzQ4Ylx1''@;'; put 'put ''YzQ4Y1x1YzQ4ZFx1YzQ4ZVx1YzQ4Zlx1YzQ5MFx1YzQ5MVx1YzQ5Mlx1YzQ5M1x1YzQ5NVx1YzQ5Nlx1YzQ5N1x1YzQ5OFx1YzQ5OVx1YzQ5YVx1YzQ5Ylx1YzQ5ZFx1YzQ5ZVx1YzQ5Zlx1YzRhMFx1YzRhMVx1YzRhMlx1YzRhM1x1YzRhNFx1YzRhNVx1YzRhNlx1YzRhN1x1YzRhOFx1YzRh''@;'; put 'put ''OVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTU2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTZdW21dXT0zOTkzNittLFJbMzk5MzYrbV09eFsxNTZdW21dKTtmb3IoeFsxNTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0YWFcdWM0YWJcdWM0YWNcdWM0YWRcdWM0YWVcdWM0YWZcdWM0YjBcdWM0YjFcdWM0YjJcdWM0YjNcdWM0YjRcdWM0YjVcdWM0YjZcdWM0YjdcdWM0YjlcdWM0YmFcdWM0YmJcdWM0YmRcdWM0YmVcdWM0YmZcdWM0YzBcdWM0YzFcdWM0''@;'; put 'put ''YzJcdWM0YzNcdWM0YzRcdWM0YzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0YzZcdWM0YzdcdWM0YzhcdWM0YzlcdWM0Y2FcdWM0Y2JcdWM0Y2NcdWM0Y2RcdWM0Y2VcdWM0Y2ZcdWM0ZDBcdWM0ZDFcdWM0ZDJcdWM0ZDNcdWM0ZDRcdWM0ZDVcdWM0ZDZcdWM0ZDdc''@;'; put 'put ''dWM0ZDhcdWM0ZDlcdWM0ZGFcdWM0ZGJcdWM0ZGNcdWM0ZGRcdWM0ZGVcdWM0ZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM0ZTBcdWM0ZTFcdWM0ZTJcdWM0ZTNcdWM0ZTRcdWM0ZTVcdWM0ZTZcdWM0ZTdcdWM0ZThcdWM0ZWFcdWM0ZWJcdWM0ZWNcdWM0ZWRcdWM0''@;'; put 'put ''ZWVcdWM0ZWZcdWM0ZjJcdWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDJcdWM1MDNcdWM1MDRcdWM1MDVcdWM1MDZcdWM1MDdcdWM1MDhcdWM1MDlcdWM1MGFcdWM1MGJcdWM1MGRcdWM1MGVcdWM1MGZcdWM1MTFcdWM1MTJcdWM1MTNc''@;'; put 'put ''dWM1MTVcdWM1MTZcdWM1MTdcdWM1MThcdWM1MTlcdWM1MWFcdWM1MWJcdWM1MWRcdWM1MWVcdWM1MWZcdWM1MjBcdWM1MjFcdWM1MjJcdWM1MjNcdWM1MjRcdWM1MjVcdWM1MjZcdWM1MjdcdWM1MmFcdWM1MmJcdWM1MmRcdWM1MmVcdWM1MmZcdWM1MzFcdWM1MzJcdWM1MzNcdWM1MzRcdWM1''@;'; put 'put ''MzVcdWM1MzZcdWM1MzdcdWM1M2FcdWM1M2NcdWM1M2VcdWM1M2ZcdWM1NDBcdWM1NDFcdWM1NDJcdWM1NDNcdWM1NDZcdWM1NDdcdWM1NGJcdWM1NGZcdWM1NTBcdWM1NTFcdWM1NTJcdWM1NTZcdWM1NWFcdWM1NWJcdWM1NWNcdWM1NWZcdWM1NjJcdWM1NjNcdWM1NjVcdWM1NjZcdWM1Njdc''@;'; put 'put ''dWM1NjlcdWM1NmFcdWM1NmJcdWM1NmNcdWM1NmRcdWM1NmVcdWM1NmZcdWM1NzJcdWM1NzZcdWM1NzdcdWM1NzhcdWM1NzlcdWM1N2FcdWM1N2JcdWM1N2VcdWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1''@;'; put 'put ''OTJcdWM1OTNcdWM1OTRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNTddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE1N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTU3XVttXV09NDAxOTIrbSxSWzQwMTkyK21dPXhbMTU3XVttXSk7Zm9yKHhbMTU4XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNTk2XHVjNTk5XHVjNTlhXHVjNTliXHVjNTlkXHVjNTllXHVjNTlmXHVjNWExXHVjNWEyXHVjNWEzXHVjNWE0XHVjNWE1XHVjNWE2XHVjNWE3XHVjNWE4XHVjNWFhXHVjNWFiXHVjNWFjXHVjNWFkXHVjNWFlXHVj''@;'; put 'put ''NWFmXHVjNWIwXHVjNWIxXHVjNWIyXHVjNWIzXHVjNWI2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNWI3XHVjNWJhXHVjNWJmXHVjNWMwXHVjNWMxXHVjNWMyXHVjNWMzXHVjNWNiXHVjNWNkXHVjNWNmXHVjNWQyXHVjNWQzXHVjNWQ1XHVjNWQ2XHVjNWQ3XHVjNWQ5''@;'; put 'put ''XHVjNWRhXHVjNWRiXHVjNWRjXHVjNWRkXHVjNWRlXHVjNWRmXHVjNWUyXHVjNWU0XHVjNWU2XHVjNWU3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjNWU4XHVjNWU5XHVjNWVhXHVjNWViXHVjNWVmXHVjNWYxXHVjNWYyXHVjNWYzXHVjNWY1XHVjNWY4XHVjNWY5XHVj''@;'; put 'put ''NWZhXHVjNWZiXHVjNjAyXHVjNjAzXHVjNjA0XHVjNjA5XHVjNjBhXHVjNjBiXHVjNjBkXHVjNjBlXHVjNjBmXHVjNjExXHVjNjEyXHVjNjEzXHVjNjE0XHVjNjE1XHVjNjE2XHVjNjE3XHVjNjFhXHVjNjFkXHVjNjFlXHVjNjFmXHVjNjIwXHVjNjIxXHVjNjIyXHVjNjIzXHVjNjI2XHVjNjI3''@;'; put 'put ''XHVjNjI5XHVjNjJhXHVjNjJiXHVjNjJmXHVjNjMxXHVjNjMyXHVjNjM2XHVjNjM4XHVjNjNhXHVjNjNjXHVjNjNkXHVjNjNlXHVjNjNmXHVjNjQyXHVjNjQzXHVjNjQ1XHVjNjQ2XHVjNjQ3XHVjNjQ5XHVjNjRhXHVjNjRiXHVjNjRjXHVjNjRkXHVjNjRlXHVjNjRmXHVjNjUyXHVjNjU2XHVj''@;'; put 'put ''NjU3XHVjNjU4XHVjNjU5XHVjNjVhXHVjNjViXHVjNjVlXHVjNjVmXHVjNjYxXHVjNjYyXHVjNjYzXHVjNjY0XHVjNjY1XHVjNjY2XHVjNjY3XHVjNjY4XHVjNjY5XHVjNjZhXHVjNjZiXHVjNjZkXHVjNjZlXHVjNjcwXHVjNjcyXHVjNjczXHVjNjc0XHVjNjc1XHVjNjc2XHVjNjc3XHVjNjdh''@;'; put 'put ''XHVjNjdiXHVjNjdkXHVjNjdlXHVjNjdmXHVjNjgxXHVjNjgyXHVjNjgzXHVjNjg0XHVjNjg1XHVjNjg2XHVjNjg3XHVjNjhhXHVjNjhjXHVjNjhlXHVjNjhmXHVjNjkwXHVjNjkxXHVjNjkyXHVjNjkzXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjliXHVjNjlkXHVjNjllXHVjNjlmXHVj''@;'; put 'put ''NmEwXHVjNmExXHVjNmEyXHVjNmEzXHVjNmE2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTU4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNThdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE1OF1bbV1dPTQwNDQ4K20sUls0MDQ0OCttXT14WzE1OF1bbV0pO2Zvcih4WzE1OV09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZhOFx1YzZhYVx1YzZhYlx1YzZhY1x1YzZhZFx1YzZhZVx1YzZhZlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYlx1YzZiY1x1YzZiZFx1YzZiZVx1YzZiZlx1YzZjMlx1''@;'; put 'put ''YzZjNFx1YzZjNlx1YzZjN1x1YzZjOFx1YzZjOVx1YzZjYVx1YzZjYlx1YzZjZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZjZlx1YzZkMVx1YzZkMlx1YzZkM1x1YzZkNVx1YzZkNlx1YzZkN1x1YzZkOFx1YzZkOVx1YzZkYVx1YzZkYlx1YzZkZVx1YzZkZlx1YzZl''@;'; put 'put ''Mlx1YzZlM1x1YzZlNFx1YzZlNVx1YzZlNlx1YzZlN1x1YzZlYVx1YzZlYlx1YzZlZFx1YzZlZVx1YzZlZlx1YzZmMVx1YzZmMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzZmM1x1YzZmNFx1YzZmNVx1YzZmNlx1YzZmN1x1YzZmYVx1YzZmYlx1YzZmY1x1YzZmZVx1''@;'; put 'put ''YzZmZlx1YzcwMFx1YzcwMVx1YzcwMlx1YzcwM1x1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZFx1YzcwZVx1YzcwZlx1YzcxMFx1YzcxMVx1YzcxMlx1YzcxM1x1YzcxNlx1YzcxOFx1YzcxYVx1YzcxYlx1YzcxY1x1YzcxZFx1YzcxZVx1YzcxZlx1YzcyMlx1YzcyM1x1Yzcy''@;'; put 'put ''NVx1YzcyNlx1YzcyN1x1YzcyOVx1YzcyYVx1YzcyYlx1YzcyY1x1YzcyZFx1YzcyZVx1YzcyZlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NVx1Yzc0Nlx1Yzc0N1x1Yzc0OFx1Yzc0OVx1Yzc0Ylx1''@;'; put 'put ''Yzc0ZVx1Yzc1MFx1Yzc1OVx1Yzc1YVx1Yzc1Ylx1Yzc1ZFx1Yzc1ZVx1Yzc1Zlx1Yzc2MVx1Yzc2Mlx1Yzc2M1x1Yzc2NFx1Yzc2NVx1Yzc2Nlx1Yzc2N1x1Yzc2OVx1Yzc2YVx1Yzc2Y1x1Yzc2ZFx1Yzc2ZVx1Yzc2Zlx1Yzc3MFx1Yzc3MVx1Yzc3Mlx1Yzc3M1x1Yzc3Nlx1Yzc3N1x1Yzc3''@;'; put 'put ''OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1Yzc5OVx1Yzc5Ylx1Yzc5Y1x1Yzc5ZFx1Yzc5ZVx1Yzc5Zlx1YzdhMlx1YzdhN1x1YzdhOFx1YzdhOVx1YzdhYVx1YzdhYlx1YzdhZVx1''@;'; put 'put ''YzdhZlx1YzdiMVx1YzdiMlx1YzdiM1x1YzdiNVx1YzdiNlx1YzdiN1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE1OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTU5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNTldW21dXT00MDcwNCttLFJbNDA3MDQrbV09eFsxNTldW21dKTtmb3Io''@;'; put 'put ''eFsxNjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3YjhcdWM3YjlcdWM3YmFcdWM3YmJcdWM3YmVcdWM3YzJcdWM3YzNcdWM3YzRcdWM3YzVcdWM3YzZcdWM3YzdcdWM3Y2FcdWM3Y2JcdWM3Y2RcdWM3Y2ZcdWM3ZDFc''@;'; put 'put ''dWM3ZDJcdWM3ZDNcdWM3ZDRcdWM3ZDVcdWM3ZDZcdWM3ZDdcdWM3ZDlcdWM3ZGFcdWM3ZGJcdWM3ZGNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3ZGVcdWM3ZGZcdWM3ZTBcdWM3ZTFcdWM3ZTJcdWM3ZTNcdWM3ZTVcdWM3ZTZcdWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3''@;'; put 'put ''ZWJcdWM3ZWRcdWM3ZWVcdWM3ZWZcdWM3ZjBcdWM3ZjFcdWM3ZjJcdWM3ZjNcdWM3ZjRcdWM3ZjVcdWM3ZjZcdWM3ZjdcdWM3ZjhcdWM3ZjlcdWM3ZmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM3ZmJcdWM3ZmNcdWM3ZmRcdWM3ZmVcdWM3ZmZcdWM4MDJcdWM4MDNc''@;'; put 'put ''dWM4MDVcdWM4MDZcdWM4MDdcdWM4MDlcdWM4MGJcdWM4MGNcdWM4MGRcdWM4MGVcdWM4MGZcdWM4MTJcdWM4MTRcdWM4MTdcdWM4MThcdWM4MTlcdWM4MWFcdWM4MWJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjVcdWM4MjZcdWM4MjdcdWM4MjhcdWM4MjlcdWM4MmFcdWM4''@;'; put 'put ''MmJcdWM4MmVcdWM4MzBcdWM4MzJcdWM4MzNcdWM4MzRcdWM4MzVcdWM4MzZcdWM4MzdcdWM4MzlcdWM4M2FcdWM4M2JcdWM4M2RcdWM4M2VcdWM4M2ZcdWM4NDFcdWM4NDJcdWM4NDNcdWM4NDRcdWM4NDVcdWM4NDZcdWM4NDdcdWM4NGFcdWM4NGJcdWM4NGVcdWM4NGZcdWM4NTBcdWM4NTFc''@;'; put 'put ''dWM4NTJcdWM4NTNcdWM4NTVcdWM4NTZcdWM4NTdcdWM4NThcdWM4NTlcdWM4NWFcdWM4NWJcdWM4NWNcdWM4NWRcdWM4NWVcdWM4NWZcdWM4NjBcdWM4NjFcdWM4NjJcdWM4NjNcdWM4NjRcdWM4NjVcdWM4NjZcdWM4NjdcdWM4NjhcdWM4NjlcdWM4NmFcdWM4NmJcdWM4NmNcdWM4NmRcdWM4''@;'; put 'put ''NmVcdWM4NmZcdWM4NzJcdWM4NzNcdWM4NzVcdWM4NzZcdWM4NzdcdWM4NzlcdWM4N2JcdWM4N2NcdWM4N2RcdWM4N2VcdWM4N2ZcdWM4ODJcdWM4ODRcdWM4ODhcdWM4ODlcdWM4OGFcdWM4OGVcdWM4OGZcdWM4OTBcdWM4OTFcdWM4OTJcdWM4OTNcdWM4OTVcdWM4OTZcdWM4OTdcdWM4OThc''@;'; put 'put ''dWM4OTlcdWM4OWFcdWM4OWJcdWM4OWNcdWM4OWVcdWM4YTBcdWM4YTJcdWM4YTNcdWM4YTRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTYwXVttXV09NDA5NjArbSxSWzQwOTYwK21dPXhb''@;'; put 'put ''MTYwXVttXSk7Zm9yKHhbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGE1XHVjOGE2XHVjOGE3XHVjOGE5XHVjOGFhXHVjOGFiXHVjOGFjXHVjOGFkXHVjOGFlXHVjOGFmXHVjOGIwXHVjOGIxXHVjOGIyXHVjOGIz''@;'; put 'put ''XHVjOGI0XHVjOGI1XHVjOGI2XHVjOGI3XHVjOGI4XHVjOGI5XHVjOGJhXHVjOGJiXHVjOGJlXHVjOGJmXHVjOGMwXHVjOGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGMyXHVjOGMzXHVjOGM1XHVjOGM2XHVjOGM3XHVjOGM5XHVjOGNhXHVjOGNiXHVjOGNkXHVj''@;'; put 'put ''OGNlXHVjOGNmXHVjOGQwXHVjOGQxXHVjOGQyXHVjOGQzXHVjOGQ2XHVjOGQ4XHVjOGRhXHVjOGRiXHVjOGRjXHVjOGRkXHVjOGRlXHVjOGRmXHVjOGUyXHVjOGUzXHVjOGU1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOGU2XHVjOGU3XHVjOGU4XHVjOGU5XHVjOGVh''@;'; put 'put ''XHVjOGViXHVjOGVjXHVjOGVkXHVjOGVlXHVjOGVmXHVjOGYwXHVjOGYxXHVjOGYyXHVjOGYzXHVjOGY0XHVjOGY2XHVjOGY3XHVjOGY4XHVjOGY5XHVjOGZhXHVjOGZiXHVjOGZlXHVjOGZmXHVjOTAxXHVjOTAyXHVjOTAzXHVjOTA3XHVjOTA4XHVjOTA5XHVjOTBhXHVjOTBiXHVjOTBlXHUz''@;'; put 'put ''MDAwXHUzMDAxXHUzMDAyXHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4XHUzMDA5XHUzMDBhXHUzMDBiXHUzMDBjXHUzMDBkXHUzMDBlXHUzMDBmXHUzMDEwXHUzMDEx''@;'; put 'put ''XHhiMVx4ZDdceGY3XHUyMjYwXHUyMjY0XHUyMjY1XHUyMjFlXHUyMjM0XHhiMFx1MjAzMlx1MjAzM1x1MjEwM1x1MjEyYlx1ZmZlMFx1ZmZlMVx1ZmZlNVx1MjY0Mlx1MjY0MFx1MjIyMFx1MjJhNVx1MjMxMlx1MjIwMlx1MjIwN1x1MjI2MVx1MjI1Mlx4YTdcdTIwM2JcdTI2MDZcdTI2MDVc''@;'; put 'put ''dTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTI1YmRcdTI1YmNcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTIxOTRcdTMwMTNcdTIyNmFcdTIyNmJcdTIyMWFcdTIyM2RcdTIyMWRcdTIyMzVcdTIyMmJcdTIyMmNcdTIyMDhcdTIyMGJcdTIy''@;'; put 'put ''ODZcdTIyODdcdTIyODJcdTIyODNcdTIyMmFcdTIyMjlcdTIyMjdcdTIyMjhcdWZmZTJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTYxXVttXV09NDEyMTYrbSxSWzQxMjE2K21dPXhbMTYx''@;'; put 'put ''XVttXSk7Zm9yKHhbMTYyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTEwXHVjOTEyXHVjOTEzXHVjOTE0XHVjOTE1XHVjOTE2XHVjOTE3XHVjOTE5XHVjOTFhXHVjOTFiXHVjOTFjXHVjOTFkXHVjOTFlXHVjOTFmXHVj''@;'; put 'put ''OTIwXHVjOTIxXHVjOTIyXHVjOTIzXHVjOTI0XHVjOTI1XHVjOTI2XHVjOTI3XHVjOTI4XHVjOTI5XHVjOTJhXHVjOTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTJkXHVjOTJlXHVjOTJmXHVjOTMwXHVjOTMxXHVjOTMyXHVjOTMzXHVjOTM1XHVjOTM2XHVjOTM3''@;'; put 'put ''XHVjOTM4XHVjOTM5XHVjOTNhXHVjOTNiXHVjOTNjXHVjOTNkXHVjOTNlXHVjOTNmXHVjOTQwXHVjOTQxXHVjOTQyXHVjOTQzXHVjOTQ0XHVjOTQ1XHVjOTQ2XHVjOTQ3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOTQ4XHVjOTQ5XHVjOTRhXHVjOTRiXHVjOTRjXHVj''@;'; put 'put ''OTRkXHVjOTRlXHVjOTRmXHVjOTUyXHVjOTUzXHVjOTU1XHVjOTU2XHVjOTU3XHVjOTU5XHVjOTVhXHVjOTViXHVjOTVjXHVjOTVkXHVjOTVlXHVjOTVmXHVjOTYyXHVjOTY0XHVjOTY1XHVjOTY2XHVjOTY3XHVjOTY4XHVjOTY5XHVjOTZhXHVjOTZiXHVjOTZkXHVjOTZlXHVjOTZmXHUyMWQy''@;'; put 'put ''XHUyMWQ0XHUyMjAwXHUyMjAzXHhiNFx1ZmY1ZVx1MDJjN1x1MDJkOFx1MDJkZFx1MDJkYVx1MDJkOVx4YjhcdTAyZGJceGExXHhiZlx1MDJkMFx1MjIyZVx1MjIxMVx1MjIwZlx4YTRcdTIxMDlcdTIwMzBcdTI1YzFcdTI1YzBcdTI1YjdcdTI1YjZcdTI2NjRcdTI2NjBcdTI2NjFcdTI2NjVc''@;'; put 'put ''dTI2NjdcdTI2NjNcdTIyOTlcdTI1YzhcdTI1YTNcdTI1ZDBcdTI1ZDFcdTI1OTJcdTI1YTRcdTI1YTVcdTI1YThcdTI1YTdcdTI1YTZcdTI1YTlcdTI2NjhcdTI2MGZcdTI2MGVcdTI2MWNcdTI2MWVceGI2XHUyMDIwXHUyMDIxXHUyMTk1XHUyMTk3XHUyMTk5XHUyMTk2XHUyMTk4XHUyNjZk''@;'; put 'put ''XHUyNjY5XHUyNjZhXHUyNjZjXHUzMjdmXHUzMjFjXHUyMTE2XHUzM2M3XHUyMTIyXHUzM2MyXHUzM2Q4XHUyMTIxXHUyMGFjXHhhZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTYyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjJdW21dXT00MTQ3MittLFJbNDE0NzIrbV09eFsxNjJd''@;'; put 'put ''W21dKTtmb3IoeFsxNjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5NzFcdWM5NzJcdWM5NzNcdWM5NzVcdWM5NzZcdWM5NzdcdWM5NzhcdWM5NzlcdWM5N2FcdWM5N2JcdWM5N2RcdWM5N2VcdWM5N2ZcdWM5ODBcdWM5''@;'; put 'put ''ODFcdWM5ODJcdWM5ODNcdWM5ODRcdWM5ODVcdWM5ODZcdWM5ODdcdWM5OGFcdWM5OGJcdWM5OGRcdWM5OGVcdWM5OGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5OTFcdWM5OTJcdWM5OTNcdWM5OTRcdWM5OTVcdWM5OTZcdWM5OTdcdWM5OWFcdWM5OWNcdWM5OWVc''@;'; put 'put ''dWM5OWZcdWM5YTBcdWM5YTFcdWM5YTJcdWM5YTNcdWM5YTRcdWM5YTVcdWM5YTZcdWM5YTdcdWM5YThcdWM5YTlcdWM5YWFcdWM5YWJcdWM5YWNcdWM5YWRcdWM5YWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWM5YWZcdWM5YjBcdWM5YjFcdWM5YjJcdWM5YjNcdWM5''@;'; put 'put ''YjRcdWM5YjVcdWM5YjZcdWM5YjdcdWM5YjhcdWM5YjlcdWM5YmFcdWM5YmJcdWM5YmNcdWM5YmRcdWM5YmVcdWM5YmZcdWM5YzJcdWM5YzNcdWM5YzVcdWM5YzZcdWM5YzlcdWM5Y2JcdWM5Y2NcdWM5Y2RcdWM5Y2VcdWM5Y2ZcdWM5ZDJcdWM5ZDRcdWM5ZDdcdWM5ZDhcdWM5ZGJcdWZmMDFc''@;'; put 'put ''dWZmMDJcdWZmMDNcdWZmMDRcdWZmMDVcdWZmMDZcdWZmMDdcdWZmMDhcdWZmMDlcdWZmMGFcdWZmMGJcdWZmMGNcdWZmMGRcdWZmMGVcdWZmMGZcdWZmMTBcdWZmMTFcdWZmMTJcdWZmMTNcdWZmMTRcdWZmMTVcdWZmMTZcdWZmMTdcdWZmMThcdWZmMTlcdWZmMWFcdWZmMWJcdWZmMWNcdWZm''@;'; put 'put ''MWRcdWZmMWVcdWZmMWZcdWZmMjBcdWZmMjFcdWZmMjJcdWZmMjNcdWZmMjRcdWZmMjVcdWZmMjZcdWZmMjdcdWZmMjhcdWZmMjlcdWZmMmFcdWZmMmJcdWZmMmNcdWZmMmRcdWZmMmVcdWZmMmZcdWZmMzBcdWZmMzFcdWZmMzJcdWZmMzNcdWZmMzRcdWZmMzVcdWZmMzZcdWZmMzdcdWZmMzhc''@;'; put 'put ''dWZmMzlcdWZmM2FcdWZmM2JcdWZmZTZcdWZmM2RcdWZmM2VcdWZmM2ZcdWZmNDBcdWZmNDFcdWZmNDJcdWZmNDNcdWZmNDRcdWZmNDVcdWZmNDZcdWZmNDdcdWZmNDhcdWZmNDlcdWZmNGFcdWZmNGJcdWZmNGNcdWZmNGRcdWZmNGVcdWZmNGZcdWZmNTBcdWZmNTFcdWZmNTJcdWZmNTNcdWZm''@;'; put 'put ''NTRcdWZmNTVcdWZmNTZcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdWZmNWJcdWZmNWNcdWZmNWRcdWZmZTNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTYzXVttXV09NDE3MjgrbSxSWzQx''@;'; put 'put ''NzI4K21dPXhbMTYzXVttXSk7Zm9yKHhbMTY0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYyXHVj''@;'; put 'put ''OWYzXHVjOWY0XHVjOWY1XHVjOWY2XHVjOWY3XHVjOWZhXHVjOWZiXHVjOWZkXHVjOWZlXHVjOWZmXHVjYTAxXHVjYTAyXHVjYTAzXHVjYTA0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTA1XHVjYTA2XHVjYTA3XHVjYTBhXHVjYTBlXHVjYTBmXHVjYTEwXHVjYTEx''@;'; put 'put ''XHVjYTEyXHVjYTEzXHVjYTE1XHVjYTE2XHVjYTE3XHVjYTE5XHVjYTFhXHVjYTFiXHVjYTFjXHVjYTFkXHVjYTFlXHVjYTFmXHVjYTIwXHVjYTIxXHVjYTIyXHVjYTIzXHVjYTI0XHVjYTI1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYTI2XHVjYTI3XHVjYTI4XHVj''@;'; put 'put ''YTJhXHVjYTJiXHVjYTJjXHVjYTJkXHVjYTJlXHVjYTJmXHVjYTMwXHVjYTMxXHVjYTMyXHVjYTMzXHVjYTM0XHVjYTM1XHVjYTM2XHVjYTM3XHVjYTM4XHVjYTM5XHVjYTNhXHVjYTNiXHVjYTNjXHVjYTNkXHVjYTNlXHVjYTNmXHVjYTQwXHVjYTQxXHVjYTQyXHVjYTQzXHVjYTQ0XHVjYTQ1''@;'; put 'put ''XHVjYTQ2XHUzMTMxXHUzMTMyXHUzMTMzXHUzMTM0XHUzMTM1XHUzMTM2XHUzMTM3XHUzMTM4XHUzMTM5XHUzMTNhXHUzMTNiXHUzMTNjXHUzMTNkXHUzMTNlXHUzMTNmXHUzMTQwXHUzMTQxXHUzMTQyXHUzMTQzXHUzMTQ0XHUzMTQ1XHUzMTQ2XHUzMTQ3XHUzMTQ4XHUzMTQ5XHUzMTRhXHUz''@;'; put 'put ''MTRiXHUzMTRjXHUzMTRkXHUzMTRlXHUzMTRmXHUzMTUwXHUzMTUxXHUzMTUyXHUzMTUzXHUzMTU0XHUzMTU1XHUzMTU2XHUzMTU3XHUzMTU4XHUzMTU5XHUzMTVhXHUzMTViXHUzMTVjXHUzMTVkXHUzMTVlXHUzMTVmXHUzMTYwXHUzMTYxXHUzMTYyXHUzMTYzXHUzMTY0XHUzMTY1XHUzMTY2''@;'; put 'put ''XHUzMTY3XHUzMTY4XHUzMTY5XHUzMTZhXHUzMTZiXHUzMTZjXHUzMTZkXHUzMTZlXHUzMTZmXHUzMTcwXHUzMTcxXHUzMTcyXHUzMTczXHUzMTc0XHUzMTc1XHUzMTc2XHUzMTc3XHUzMTc4XHUzMTc5XHUzMTdhXHUzMTdiXHUzMTdjXHUzMTdkXHUzMTdlXHUzMTdmXHUzMTgwXHUzMTgxXHUz''@;'; put 'put ''MTgyXHUzMTgzXHUzMTg0XHUzMTg1XHUzMTg2XHUzMTg3XHUzMTg4XHUzMTg5XHUzMThhXHUzMThiXHUzMThjXHUzMThkXHUzMThlXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2NF1bbV1d''@;'; put 'put ''PTQxOTg0K20sUls0MTk4NCttXT14WzE2NF1bbV0pO2Zvcih4WzE2NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E0N1x1Y2E0OFx1Y2E0OVx1Y2E0YVx1Y2E0Ylx1Y2E0ZVx1Y2E0Zlx1Y2E1MVx1Y2E1Mlx1Y2E1M1x1''@;'; put 'put ''Y2E1NVx1Y2E1Nlx1Y2E1N1x1Y2E1OFx1Y2E1OVx1Y2E1YVx1Y2E1Ylx1Y2E1ZVx1Y2E2Mlx1Y2E2M1x1Y2E2NFx1Y2E2NVx1Y2E2Nlx1Y2E2N1x1Y2E2OVx1Y2E2YVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E2Ylx1Y2E2Y1x1Y2E2ZFx1Y2E2ZVx1Y2E2Zlx1Y2E3''@;'; put 'put ''MFx1Y2E3MVx1Y2E3Mlx1Y2E3M1x1Y2E3NFx1Y2E3NVx1Y2E3Nlx1Y2E3N1x1Y2E3OFx1Y2E3OVx1Y2E3YVx1Y2E3Ylx1Y2E3Y1x1Y2E3ZVx1Y2E3Zlx1Y2E4MFx1Y2E4MVx1Y2E4Mlx1Y2E4M1x1Y2E4NVx1Y2E4Nlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2E4N1x1''@;'; put 'put ''Y2E4OFx1Y2E4OVx1Y2E4YVx1Y2E4Ylx1Y2E4Y1x1Y2E4ZFx1Y2E4ZVx1Y2E4Zlx1Y2E5MFx1Y2E5MVx1Y2E5Mlx1Y2E5M1x1Y2E5NFx1Y2E5NVx1Y2E5Nlx1Y2E5N1x1Y2E5OVx1Y2E5YVx1Y2E5Ylx1Y2E5Y1x1Y2E5ZFx1Y2E5ZVx1Y2E5Zlx1Y2FhMFx1Y2FhMVx1Y2FhMlx1Y2FhM1x1Y2Fh''@;'; put 'put ''NFx1Y2FhNVx1Y2FhNlx1Y2FhN1x1MjE3MFx1MjE3MVx1MjE3Mlx1MjE3M1x1MjE3NFx1MjE3NVx1MjE3Nlx1MjE3N1x1MjE3OFx1MjE3OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NFx1MjE2NVx1MjE2Nlx1MjE2N1x1MjE2OFx1''@;'; put 'put ''MjE2OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNh''@;'; put 'put ''NVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1''@;'; put 'put ''MDNjMFx1MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY1XVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsxNjVdW21dXT00MjI0MCttLFJbNDIyNDArbV09eFsxNjVdW21dKTtmb3IoeFsxNjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYThcdWNhYTlcdWNhYWFcdWNhYWJcdWNhYWNcdWNhYWRcdWNhYWVcdWNhYWZc''@;'; put 'put ''dWNhYjBcdWNhYjFcdWNhYjJcdWNhYjNcdWNhYjRcdWNhYjVcdWNhYjZcdWNhYjdcdWNhYjhcdWNhYjlcdWNhYmFcdWNhYmJcdWNhYmVcdWNhYmZcdWNhYzFcdWNhYzJcdWNhYzNcdWNhYzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNhYzZcdWNhYzdcdWNhYzhcdWNh''@;'; put 'put ''YzlcdWNhY2FcdWNhY2JcdWNhY2VcdWNhZDBcdWNhZDJcdWNhZDRcdWNhZDVcdWNhZDZcdWNhZDdcdWNhZGFcdWNhZGJcdWNhZGNcdWNhZGRcdWNhZGVcdWNhZGZcdWNhZTFcdWNhZTJcdWNhZTNcdWNhZTRcdWNhZTVcdWNhZTZcdWNhZTdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWNhZThcdWNhZTlcdWNhZWFcdWNhZWJcdWNhZWRcdWNhZWVcdWNhZWZcdWNhZjBcdWNhZjFcdWNhZjJcdWNhZjNcdWNhZjVcdWNhZjZcdWNhZjdcdWNhZjhcdWNhZjlcdWNhZmFcdWNhZmJcdWNhZmNcdWNhZmRcdWNhZmVcdWNhZmZcdWNiMDBcdWNiMDFcdWNiMDJcdWNiMDNcdWNi''@;'; put 'put ''MDRcdWNiMDVcdWNiMDZcdWNiMDdcdWNiMDlcdWNiMGFcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJc''@;'; put 'put ''dTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDJcdTI1MTJcdTI1MTFcdTI1MWFcdTI1MTlcdTI1MTZcdTI1MTVcdTI1MGVcdTI1MGRcdTI1MWVcdTI1MWZcdTI1MjFcdTI1MjJcdTI1MjZcdTI1MjdcdTI1MjlcdTI1MmFcdTI1MmRcdTI1''@;'; put 'put ''MmVcdTI1MzFcdTI1MzJcdTI1MzVcdTI1MzZcdTI1MzlcdTI1M2FcdTI1M2RcdTI1M2VcdTI1NDBcdTI1NDFcdTI1NDNcdTI1NDRcdTI1NDVcdTI1NDZcdTI1NDdcdTI1NDhcdTI1NDlcdTI1NGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2Nl1bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMTY2XVttXV09NDI0OTYrbSxSWzQyNDk2K21dPXhbMTY2XVttXSk7Zm9yKHhbMTY3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjBiXHVjYjBjXHVjYjBkXHVjYjBlXHVjYjBmXHVjYjEx''@;'; put 'put ''XHVjYjEyXHVjYjEzXHVjYjE1XHVjYjE2XHVjYjE3XHVjYjE5XHVjYjFhXHVjYjFiXHVjYjFjXHVjYjFkXHVjYjFlXHVjYjFmXHVjYjIyXHVjYjIzXHVjYjI0XHVjYjI1XHVjYjI2XHVjYjI3XHVjYjI4XHVjYjI5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYjJhXHVj''@;'; put 'put ''YjJiXHVjYjJjXHVjYjJkXHVjYjJlXHVjYjJmXHVjYjMwXHVjYjMxXHVjYjMyXHVjYjMzXHVjYjM0XHVjYjM1XHVjYjM2XHVjYjM3XHVjYjM4XHVjYjM5XHVjYjNhXHVjYjNiXHVjYjNjXHVjYjNkXHVjYjNlXHVjYjNmXHVjYjQwXHVjYjQyXHVjYjQzXHVjYjQ0XHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVjYjUxXHVjYjUyXHVjYjUzXHVjYjU0XHVjYjU1XHVjYjU2XHVjYjU3XHVjYjVhXHVjYjViXHVjYjVjXHVjYjVlXHVjYjVmXHVjYjYwXHVjYjYxXHVjYjYyXHVjYjYzXHVj''@;'; put 'put ''YjY1XHVjYjY2XHVjYjY3XHVjYjY4XHVjYjY5XHVjYjZhXHVjYjZiXHVjYjZjXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUzM2E0XHUzM2E1XHUzM2E2XHUzMzk5XHUzMzlhXHUzMzliXHUzMzljXHUzMzlkXHUzMzllXHUzMzlmXHUzM2EwXHUzM2ExXHUzM2Ey''@;'; put 'put ''XHUzM2NhXHUzMzhkXHUzMzhlXHUzMzhmXHUzM2NmXHUzMzg4XHUzMzg5XHUzM2M4XHUzM2E3XHUzM2E4XHUzM2IwXHUzM2IxXHUzM2IyXHUzM2IzXHUzM2I0XHUzM2I1XHUzM2I2XHUzM2I3XHUzM2I4XHUzM2I5XHUzMzgwXHUzMzgxXHUzMzgyXHUzMzgzXHUzMzg0XHUzM2JhXHUzM2JiXHUz''@;'; put 'put ''M2JjXHUzM2JkXHUzM2JlXHUzM2JmXHUzMzkwXHUzMzkxXHUzMzkyXHUzMzkzXHUzMzk0XHUyMTI2XHUzM2MwXHUzM2MxXHUzMzhhXHUzMzhiXHUzMzhjXHUzM2Q2XHUzM2M1XHUzM2FkXHUzM2FlXHUzM2FmXHUzM2RiXHUzM2E5XHUzM2FhXHUzM2FiXHUzM2FjXHUzM2RkXHUzM2QwXHUzM2Qz''@;'; put 'put ''XHUzM2MzXHUzM2M5XHUzM2RjXHUzM2M2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY3XS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsxNjddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2N11bbV1dPTQyNzUyK20sUls0Mjc1MittXT14WzE2N11bbV0pO2Zvcih4WzE2OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2I2ZFx1Y2I2ZVx1Y2I2Zlx1Y2I3''@;'; put 'put ''MFx1Y2I3MVx1Y2I3Mlx1Y2I3M1x1Y2I3NFx1Y2I3NVx1Y2I3Nlx1Y2I3N1x1Y2I3YVx1Y2I3Ylx1Y2I3Y1x1Y2I3ZFx1Y2I3ZVx1Y2I3Zlx1Y2I4MFx1Y2I4MVx1Y2I4Mlx1Y2I4M1x1Y2I4NFx1Y2I4NVx1Y2I4Nlx1Y2I4N1x1Y2I4OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1Y2I4OVx1Y2I4YVx1Y2I4Ylx1Y2I4Y1x1Y2I4ZFx1Y2I4ZVx1Y2I4Zlx1Y2I5MFx1Y2I5MVx1Y2I5Mlx1Y2I5M1x1Y2I5NFx1Y2I5NVx1Y2I5Nlx1Y2I5N1x1Y2I5OFx1Y2I5OVx1Y2I5YVx1Y2I5Ylx1Y2I5ZFx1Y2I5ZVx1Y2I5Zlx1Y2JhMFx1Y2JhMVx1Y2JhMlx1Y2JhM1x1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2JhNFx1Y2JhNVx1Y2JhNlx1Y2JhN1x1Y2JhOFx1Y2JhOVx1Y2JhYVx1Y2JhYlx1Y2JhY1x1Y2JhZFx1Y2JhZVx1Y2JhZlx1Y2JiMFx1Y2JiMVx1Y2JiMlx1Y2JiM1x1Y2JiNFx1Y2JiNVx1Y2JiNlx1Y2JiN1x1Y2JiOVx1Y2JiYVx1''@;'; put 'put ''Y2JiYlx1Y2JiY1x1Y2JiZFx1Y2JiZVx1Y2JiZlx1Y2JjMFx1Y2JjMVx1Y2JjMlx1Y2JjM1x1Y2JjNFx4YzZceGQwXHhhYVx1MDEyNlx1ZmZmZFx1MDEzMlx1ZmZmZFx1MDEzZlx1MDE0MVx4ZDhcdTAxNTJceGJhXHhkZVx1MDE2Nlx1MDE0YVx1ZmZmZFx1MzI2MFx1MzI2MVx1MzI2Mlx1MzI2''@;'; put 'put ''M1x1MzI2NFx1MzI2NVx1MzI2Nlx1MzI2N1x1MzI2OFx1MzI2OVx1MzI2YVx1MzI2Ylx1MzI2Y1x1MzI2ZFx1MzI2ZVx1MzI2Zlx1MzI3MFx1MzI3MVx1MzI3Mlx1MzI3M1x1MzI3NFx1MzI3NVx1MzI3Nlx1MzI3N1x1MzI3OFx1MzI3OVx1MzI3YVx1MzI3Ylx1MjRkMFx1MjRkMVx1MjRkMlx1''@;'; put 'put ''MjRkM1x1MjRkNFx1MjRkNVx1MjRkNlx1MjRkN1x1MjRkOFx1MjRkOVx1MjRkYVx1MjRkYlx1MjRkY1x1MjRkZFx1MjRkZVx1MjRkZlx1MjRlMFx1MjRlMVx1MjRlMlx1MjRlM1x1MjRlNFx1MjRlNVx1MjRlNlx1MjRlN1x1MjRlOFx1MjRlOVx1MjQ2MFx1MjQ2MVx1MjQ2Mlx1MjQ2M1x1MjQ2''@;'; put 'put ''NFx1MjQ2NVx1MjQ2Nlx1MjQ2N1x1MjQ2OFx1MjQ2OVx1MjQ2YVx1MjQ2Ylx1MjQ2Y1x1MjQ2ZFx1MjQ2ZVx4YmRcdTIxNTNcdTIxNTRceGJjXHhiZVx1MjE1Ylx1MjE1Y1x1MjE1ZFx1MjE1ZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY4''@;'; put 'put ''XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjhdW21dXT00MzAwOCttLFJbNDMwMDgrbV09eFsxNjhdW21dKTtmb3IoeFsxNjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiYzVcdWNiYzZcdWNiYzdcdWNiYzhcdWNi''@;'; put 'put ''YzlcdWNiY2FcdWNiY2JcdWNiY2NcdWNiY2RcdWNiY2VcdWNiY2ZcdWNiZDBcdWNiZDFcdWNiZDJcdWNiZDNcdWNiZDVcdWNiZDZcdWNiZDdcdWNiZDhcdWNiZDlcdWNiZGFcdWNiZGJcdWNiZGNcdWNiZGRcdWNiZGVcdWNiZGZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWNiZTBcdWNiZTFcdWNiZTJcdWNiZTNcdWNiZTVcdWNiZTZcdWNiZThcdWNiZWFcdWNiZWJcdWNiZWNcdWNiZWRcdWNiZWVcdWNiZWZcdWNiZjBcdWNiZjFcdWNiZjJcdWNiZjNcdWNiZjRcdWNiZjVcdWNiZjZcdWNiZjdcdWNiZjhcdWNiZjlcdWNiZmFcdWNiZmJcdWNiZmNcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNiZmRcdWNiZmVcdWNiZmZcdWNjMDBcdWNjMDFcdWNjMDJcdWNjMDNcdWNjMDRcdWNjMDVcdWNjMDZcdWNjMDdcdWNjMDhcdWNjMDlcdWNjMGFcdWNjMGJcdWNjMGVcdWNjMGZcdWNjMTFcdWNjMTJcdWNjMTNcdWNjMTVcdWNjMTZcdWNjMTdc''@;'; put 'put ''dWNjMThcdWNjMTlcdWNjMWFcdWNjMWJcdWNjMWVcdWNjMWZcdWNjMjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1MzIwMFx1MzIwMVx1MzIwMlx1MzIwM1x1''@;'; put 'put ''MzIwNFx1MzIwNVx1MzIwNlx1MzIwN1x1MzIwOFx1MzIwOVx1MzIwYVx1MzIwYlx1MzIwY1x1MzIwZFx1MzIwZVx1MzIwZlx1MzIxMFx1MzIxMVx1MzIxMlx1MzIxM1x1MzIxNFx1MzIxNVx1MzIxNlx1MzIxN1x1MzIxOFx1MzIxOVx1MzIxYVx1MzIxYlx1MjQ5Y1x1MjQ5ZFx1MjQ5ZVx1MjQ5''@;'; put 'put ''Zlx1MjRhMFx1MjRhMVx1MjRhMlx1MjRhM1x1MjRhNFx1MjRhNVx1MjRhNlx1MjRhN1x1MjRhOFx1MjRhOVx1MjRhYVx1MjRhYlx1MjRhY1x1MjRhZFx1MjRhZVx1MjRhZlx1MjRiMFx1MjRiMVx1MjRiMlx1MjRiM1x1MjRiNFx1MjRiNVx1MjQ3NFx1MjQ3NVx1MjQ3Nlx1MjQ3N1x1MjQ3OFx1''@;'; put 'put ''MjQ3OVx1MjQ3YVx1MjQ3Ylx1MjQ3Y1x1MjQ3ZFx1MjQ3ZVx1MjQ3Zlx1MjQ4MFx1MjQ4MVx1MjQ4Mlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4MVx1MjA4Mlx1MjA4M1x1MjA4NFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY5XVtt''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjldW21dXT00MzI2NCttLFJbNDMyNjQrbV09eFsxNjldW21dKTtmb3IoeFsxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjMjVcdWNjMjZcdWNjMmFcdWNjMmJcdWNjMmRc''@;'; put 'put ''dWNjMmZcdWNjMzFcdWNjMzJcdWNjMzNcdWNjMzRcdWNjMzVcdWNjMzZcdWNjMzdcdWNjM2FcdWNjM2ZcdWNjNDBcdWNjNDFcdWNjNDJcdWNjNDNcdWNjNDZcdWNjNDdcdWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNj''@;'; put 'put ''NGZcdWNjNTBcdWNjNTFcdWNjNTJcdWNjNTNcdWNjNTZcdWNjNWFcdWNjNWJcdWNjNWNcdWNjNWRcdWNjNWVcdWNjNWZcdWNjNjFcdWNjNjJcdWNjNjNcdWNjNjVcdWNjNjdcdWNjNjlcdWNjNmFcdWNjNmJcdWNjNmNcdWNjNmRcdWNjNmVcdWNjNmZcdWNjNzFcdWNjNzJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNjNzNcdWNjNzRcdWNjNzZcdWNjNzdcdWNjNzhcdWNjNzlcdWNjN2FcdWNjN2JcdWNjN2NcdWNjN2RcdWNjN2VcdWNjN2ZcdWNjODBcdWNjODFcdWNjODJcdWNjODNcdWNjODRcdWNjODVcdWNjODZcdWNjODdcdWNjODhcdWNjODlcdWNjOGFcdWNj''@;'; put 'put ''OGJcdWNjOGNcdWNjOGRcdWNjOGVcdWNjOGZcdWNjOTBcdWNjOTFcdWNjOTJcdWNjOTNcdTMwNDFcdTMwNDJcdTMwNDNcdTMwNDRcdTMwNDVcdTMwNDZcdTMwNDdcdTMwNDhcdTMwNDlcdTMwNGFcdTMwNGJcdTMwNGNcdTMwNGRcdTMwNGVcdTMwNGZcdTMwNTBcdTMwNTFcdTMwNTJcdTMwNTNc''@;'; put 'put ''dTMwNTRcdTMwNTVcdTMwNTZcdTMwNTdcdTMwNThcdTMwNTlcdTMwNWFcdTMwNWJcdTMwNWNcdTMwNWRcdTMwNWVcdTMwNWZcdTMwNjBcdTMwNjFcdTMwNjJcdTMwNjNcdTMwNjRcdTMwNjVcdTMwNjZcdTMwNjdcdTMwNjhcdTMwNjlcdTMwNmFcdTMwNmJcdTMwNmNcdTMwNmRcdTMwNmVcdTMw''@;'; put 'put ''NmZcdTMwNzBcdTMwNzFcdTMwNzJcdTMwNzNcdTMwNzRcdTMwNzVcdTMwNzZcdTMwNzdcdTMwNzhcdTMwNzlcdTMwN2FcdTMwN2JcdTMwN2NcdTMwN2RcdTMwN2VcdTMwN2ZcdTMwODBcdTMwODFcdTMwODJcdTMwODNcdTMwODRcdTMwODVcdTMwODZcdTMwODdcdTMwODhcdTMwODlcdTMwOGFc''@;'; put 'put ''dTMwOGJcdTMwOGNcdTMwOGRcdTMwOGVcdTMwOGZcdTMwOTBcdTMwOTFcdTMwOTJcdTMwOTNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzBdLmxlbmd0aDsrK20pNjU1''@;'; put 'put ''MzMhPT14WzE3MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTcwXVttXV09NDM1MjArbSxSWzQzNTIwK21dPXhbMTcwXVttXSk7Zm9yKHhbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjYzk0XHVjYzk1XHVjYzk2''@;'; put 'put ''XHVjYzk3XHVjYzlhXHVjYzliXHVjYzlkXHVjYzllXHVjYzlmXHVjY2ExXHVjY2EyXHVjY2EzXHVjY2E0XHVjY2E1XHVjY2E2XHVjY2E3XHVjY2FhXHVjY2FlXHVjY2FmXHVjY2IwXHVjY2IxXHVjY2IyXHVjY2IzXHVjY2I2XHVjY2I3XHVjY2I5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVjY2JhXHVjY2JiXHVjY2JkXHVjY2JlXHVjY2JmXHVjY2MwXHVjY2MxXHVjY2MyXHVjY2MzXHVjY2M2XHVjY2M4XHVjY2NhXHVjY2NiXHVjY2NjXHVjY2NkXHVjY2NlXHVjY2NmXHVjY2QxXHVjY2QyXHVjY2QzXHVjY2Q1XHVjY2Q2XHVjY2Q3XHVjY2Q4XHVjY2Q5XHVjY2Rh''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjY2RiXHVjY2RjXHVjY2RkXHVjY2RlXHVjY2RmXHVjY2UwXHVjY2UxXHVjY2UyXHVjY2UzXHVjY2U1XHVjY2U2XHVjY2U3XHVjY2U4XHVjY2U5XHVjY2VhXHVjY2ViXHVjY2VkXHVjY2VlXHVjY2VmXHVjY2YxXHVjY2YyXHVj''@;'; put 'put ''Y2YzXHVjY2Y0XHVjY2Y1XHVjY2Y2XHVjY2Y3XHVjY2Y4XHVjY2Y5XHVjY2ZhXHVjY2ZiXHVjY2ZjXHVjY2ZkXHUzMGExXHUzMGEyXHUzMGEzXHUzMGE0XHUzMGE1XHUzMGE2XHUzMGE3XHUzMGE4XHUzMGE5XHUzMGFhXHUzMGFiXHUzMGFjXHUzMGFkXHUzMGFlXHUzMGFmXHUzMGIwXHUzMGIx''@;'; put 'put ''XHUzMGIyXHUzMGIzXHUzMGI0XHUzMGI1XHUzMGI2XHUzMGI3XHUzMGI4XHUzMGI5XHUzMGJhXHUzMGJiXHUzMGJjXHUzMGJkXHUzMGJlXHUzMGJmXHUzMGMwXHUzMGMxXHUzMGMyXHUzMGMzXHUzMGM0XHUzMGM1XHUzMGM2XHUzMGM3XHUzMGM4XHUzMGM5XHUzMGNhXHUzMGNiXHUzMGNjXHUz''@;'; put 'put ''MGNkXHUzMGNlXHUzMGNmXHUzMGQwXHUzMGQxXHUzMGQyXHUzMGQzXHUzMGQ0XHUzMGQ1XHUzMGQ2XHUzMGQ3XHUzMGQ4XHUzMGQ5XHUzMGRhXHUzMGRiXHUzMGRjXHUzMGRkXHUzMGRlXHUzMGRmXHUzMGUwXHUzMGUxXHUzMGUyXHUzMGUzXHUzMGU0XHUzMGU1XHUzMGU2XHUzMGU3XHUzMGU4''@;'; put 'put ''XHUzMGU5XHUzMGVhXHUzMGViXHUzMGVjXHUzMGVkXHUzMGVlXHUzMGVmXHUzMGYwXHUzMGYxXHUzMGYyXHUzMGYzXHUzMGY0XHUzMGY1XHUzMGY2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTcxXS5s''@;'; put 'put ''ZW5ndGg7KyttKTY1NTMzIT09eFsxNzFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3MV1bbV1dPTQzNzc2K20sUls0Mzc3NittXT14WzE3MV1bbV0pO2Zvcih4WzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Nm''@;'; put 'put ''ZVx1Y2NmZlx1Y2QwMFx1Y2QwMlx1Y2QwM1x1Y2QwNFx1Y2QwNVx1Y2QwNlx1Y2QwN1x1Y2QwYVx1Y2QwYlx1Y2QwZFx1Y2QwZVx1Y2QwZlx1Y2QxMVx1Y2QxMlx1Y2QxM1x1Y2QxNFx1Y2QxNVx1Y2QxNlx1Y2QxN1x1Y2QxYVx1Y2QxY1x1Y2QxZVx1Y2QxZlx1Y2QyMFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2QyMVx1Y2QyMlx1Y2QyM1x1Y2QyNVx1Y2QyNlx1Y2QyN1x1Y2QyOVx1Y2QyYVx1Y2QyYlx1Y2QyZFx1Y2QyZVx1Y2QyZlx1Y2QzMFx1Y2QzMVx1Y2QzMlx1Y2QzM1x1Y2QzNFx1Y2QzNVx1Y2QzNlx1Y2QzN1x1Y2QzOFx1Y2QzYVx1Y2QzYlx1Y2Qz''@;'; put 'put ''Y1x1Y2QzZFx1Y2QzZVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2QzZlx1Y2Q0MFx1Y2Q0MVx1Y2Q0Mlx1Y2Q0M1x1Y2Q0NFx1Y2Q0NVx1Y2Q0Nlx1Y2Q0N1x1Y2Q0OFx1Y2Q0OVx1Y2Q0YVx1Y2Q0Ylx1Y2Q0Y1x1Y2Q0ZFx1Y2Q0ZVx1Y2Q0Zlx1Y2Q1MFx1Y2Q1MVx1''@;'; put 'put ''Y2Q1Mlx1Y2Q1M1x1Y2Q1NFx1Y2Q1NVx1Y2Q1Nlx1Y2Q1N1x1Y2Q1OFx1Y2Q1OVx1Y2Q1YVx1Y2Q1Ylx1Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQx''@;'; put 'put ''ZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0''@;'; put 'put ''NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09''@;'; put 'put ''MDttIT14WzE3Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTcyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzJdW21dXT00NDAzMittLFJbNDQwMzIrbV09eFsxNzJdW21dKTtmb3IoeFsxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWNkNjFcdWNkNjJcdWNkNjNcdWNkNjVcdWNkNjZcdWNkNjdcdWNkNjhcdWNkNjlcdWNkNmFcdWNkNmJcdWNkNmVcdWNkNzBcdWNkNzJcdWNkNzNcdWNkNzRcdWNkNzVcdWNkNzZcdWNkNzdcdWNkNzlcdWNkN2FcdWNkN2JcdWNkN2NcdWNkN2RcdWNkN2VcdWNkN2ZcdWNkODBc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkODFcdWNkODJcdWNkODNcdWNkODRcdWNkODVcdWNkODZcdWNkODdcdWNkODlcdWNkOGFcdWNkOGJcdWNkOGNcdWNkOGRcdWNkOGVcdWNkOGZcdWNkOTBcdWNkOTFcdWNkOTJcdWNkOTNcdWNkOTZcdWNkOTdcdWNkOTlcdWNk''@;'; put 'put ''OWFcdWNkOWJcdWNkOWRcdWNkOWVcdWNkOWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNkYTBcdWNkYTFcdWNkYTJcdWNkYTNcdWNkYTZcdWNkYThcdWNkYWFcdWNkYWJcdWNkYWNcdWNkYWRcdWNkYWVcdWNkYWZcdWNkYjFcdWNkYjJcdWNkYjNcdWNkYjRcdWNkYjVc''@;'; put 'put ''dWNkYjZcdWNkYjdcdWNkYjhcdWNkYjlcdWNkYmFcdWNkYmJcdWNkYmNcdWNkYmRcdWNkYmVcdWNkYmZcdWNkYzBcdWNkYzFcdWNkYzJcdWNkYzNcdWNkYzVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxtPTA7bSE9eFsxNzNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTczXVttXV09NDQyODgrbSxSWzQ0Mjg4K21dPXhbMTczXVttXSk7Zm9yKHhbMTc0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGM2XHVjZGM3XHVjZGM4XHVjZGM5XHVjZGNhXHVjZGNiXHVjZGNkXHVjZGNlXHVjZGNmXHVjZGQxXHVjZGQyXHVjZGQzXHVjZGQ0XHVjZGQ1XHVjZGQ2XHVjZGQ3XHVjZGQ4XHVjZGQ5XHVjZGRhXHVjZGRiXHVjZGRjXHVjZGRkXHVjZGRlXHVjZGRm''@;'; put 'put ''XHVjZGUwXHVjZGUxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZGUyXHVjZGUzXHVjZGU0XHVjZGU1XHVjZGU2XHVjZGU3XHVjZGU5XHVjZGVhXHVjZGViXHVjZGVkXHVjZGVlXHVjZGVmXHVjZGYxXHVjZGYyXHVjZGYzXHVjZGY0XHVjZGY1XHVjZGY2XHVjZGY3XHVj''@;'; put 'put ''ZGZhXHVjZGZjXHVjZGZlXHVjZGZmXHVjZTAwXHVjZTAxXHVjZTAyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZTAzXHVjZTA1XHVjZTA2XHVjZTA3XHVjZTA5XHVjZTBhXHVjZTBiXHVjZTBkXHVjZTBlXHVjZTBmXHVjZTEwXHVjZTExXHVjZTEyXHVjZTEzXHVjZTE1''@;'; put 'put ''XHVjZTE2XHVjZTE3XHVjZTE4XHVjZTFhXHVjZTFiXHVjZTFjXHVjZTFkXHVjZTFlXHVjZTFmXHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3NF1bbV1dPTQ0NTQ0K20sUls0NDU0NCttXT14WzE3NF1bbV0pO2Zvcih4WzE3NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2UyY1x1Y2UyZFx1Y2UyZVx1Y2UyZlx1Y2UzMlx1Y2UzNFx1Y2UzNlx1Y2UzN1x1Y2UzOFx1Y2UzOVx1Y2UzYVx1Y2UzYlx1Y2UzY1x1Y2UzZFx1Y2UzZVx1Y2UzZlx1Y2U0MFx1Y2U0MVx1Y2U0Mlx1Y2U0M1x1Y2U0NFx1Y2U0''@;'; put 'put ''NVx1Y2U0Nlx1Y2U0N1x1Y2U0OFx1Y2U0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U0YVx1Y2U0Ylx1Y2U0Y1x1Y2U0ZFx1Y2U0ZVx1Y2U0Zlx1Y2U1MFx1Y2U1MVx1Y2U1Mlx1Y2U1M1x1Y2U1NFx1Y2U1NVx1Y2U1Nlx1Y2U1N1x1Y2U1YVx1Y2U1Ylx1Y2U1ZFx1''@;'; put 'put ''Y2U1ZVx1Y2U2Mlx1Y2U2M1x1Y2U2NFx1Y2U2NVx1Y2U2Nlx1Y2U2N1x1Y2U2YVx1Y2U2Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2U2ZVx1Y2U2Zlx1Y2U3MFx1Y2U3MVx1Y2U3Mlx1Y2U3M1x1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZFx1Y2U3''@;'; put 'put ''ZVx1Y2U3Zlx1Y2U4MFx1Y2U4MVx1Y2U4Mlx1Y2U4M1x1Y2U4Nlx1Y2U4OFx1Y2U4YVx1Y2U4Ylx1Y2U4Y1x1Y2U4ZFx1Y2U4ZVx1Y2U4Zlx1Y2U5Mlx1Y2U5M1x1Y2U5NVx1Y2U5Nlx1Y2U5N1x1Y2U5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzVdW21dXT00NDgwMCttLFJbNDQ4MDArbV09eFsxNzVdW21dKTtmb3IoeFsxNzZdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlOWFcdWNlOWJcdWNlOWNcdWNlOWRcdWNlOWVcdWNlOWZcdWNlYTJcdWNlYTZcdWNlYTdcdWNlYThcdWNlYTlcdWNlYWFcdWNlYWJcdWNlYWVcdWNlYWZcdWNlYjBcdWNlYjFcdWNlYjJcdWNlYjNcdWNl''@;'; put 'put ''YjRcdWNlYjVcdWNlYjZcdWNlYjdcdWNlYjhcdWNlYjlcdWNlYmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlYmJcdWNlYmNcdWNlYmRcdWNlYmVcdWNlYmZcdWNlYzBcdWNlYzJcdWNlYzNcdWNlYzRcdWNlYzVcdWNlYzZcdWNlYzdcdWNlYzhcdWNlYzlcdWNlY2Fc''@;'; put 'put ''dWNlY2JcdWNlY2NcdWNlY2RcdWNlY2VcdWNlY2ZcdWNlZDBcdWNlZDFcdWNlZDJcdWNlZDNcdWNlZDRcdWNlZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNlZDZcdWNlZDdcdWNlZDhcdWNlZDlcdWNlZGFcdWNlZGJcdWNlZGNcdWNlZGRcdWNlZGVcdWNlZGZcdWNl''@;'; put 'put ''ZTBcdWNlZTFcdWNlZTJcdWNlZTNcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNlZWRcdWNlZWVcdWNlZWZcdWNlZjBcdWNlZjFcdWNlZjJcdWNlZjNcdWNlZjZcdWNlZmFcdWNlZmJcdWNlZmNcdWNlZmRcdWNlZmVcdWNlZmZcdWFjMDBcdWFjMDFcdWFjMDRcdWFjMDdcdWFjMDhcdWFjMDlc''@;'; put 'put ''dWFjMGFcdWFjMTBcdWFjMTFcdWFjMTJcdWFjMTNcdWFjMTRcdWFjMTVcdWFjMTZcdWFjMTdcdWFjMTlcdWFjMWFcdWFjMWJcdWFjMWNcdWFjMWRcdWFjMjBcdWFjMjRcdWFjMmNcdWFjMmRcdWFjMmZcdWFjMzBcdWFjMzFcdWFjMzhcdWFjMzlcdWFjM2NcdWFjNDBcdWFjNGJcdWFjNGRcdWFj''@;'; put 'put ''NTRcdWFjNThcdWFjNWNcdWFjNzBcdWFjNzFcdWFjNzRcdWFjNzdcdWFjNzhcdWFjN2FcdWFjODBcdWFjODFcdWFjODNcdWFjODRcdWFjODVcdWFjODZcdWFjODlcdWFjOGFcdWFjOGJcdWFjOGNcdWFjOTBcdWFjOTRcdWFjOWNcdWFjOWRcdWFjOWZcdWFjYTBcdWFjYTFcdWFjYThcdWFjYTlc''@;'; put 'put ''dWFjYWFcdWFjYWNcdWFjYWZcdWFjYjBcdWFjYjhcdWFjYjlcdWFjYmJcdWFjYmNcdWFjYmRcdWFjYzFcdWFjYzRcdWFjYzhcdWFjY2NcdWFjZDVcdWFjZDdcdWFjZTBcdWFjZTFcdWFjZTRcdWFjZTdcdWFjZThcdWFjZWFcdWFjZWNcdWFjZWZcdWFjZjBcdWFjZjFcdWFjZjNcdWFjZjVcdWFj''@;'; put 'put ''ZjZcdWFjZmNcdWFjZmRcdWFkMDBcdWFkMDRcdWFkMDZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTc2XVttXV09NDUwNTYrbSxSWzQ1MDU2K21dPXhbMTc2XVttXSk7Zm9yKHhbMTc3XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjAyXHVjZjAzXHVjZjA1XHVjZjA2XHVjZjA3XHVjZjA5XHVjZjBhXHVjZjBiXHVjZjBjXHVjZjBkXHVjZjBlXHVjZjBmXHVjZjEyXHVjZjE0XHVjZjE2XHVjZjE3XHVjZjE4XHVj''@;'; put 'put ''ZjE5XHVjZjFhXHVjZjFiXHVjZjFkXHVjZjFlXHVjZjFmXHVjZjIxXHVjZjIyXHVjZjIzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjI1XHVjZjI2XHVjZjI3XHVjZjI4XHVjZjI5XHVjZjJhXHVjZjJiXHVjZjJlXHVjZjMyXHVjZjMzXHVjZjM0XHVjZjM1XHVjZjM2''@;'; put 'put ''XHVjZjM3XHVjZjM5XHVjZjNhXHVjZjNiXHVjZjNjXHVjZjNkXHVjZjNlXHVjZjNmXHVjZjQwXHVjZjQxXHVjZjQyXHVjZjQzXHVjZjQ0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVjZjQ1XHVjZjQ2XHVjZjQ3XHVjZjQ4XHVjZjQ5XHVjZjRhXHVjZjRiXHVjZjRjXHVj''@;'; put 'put ''ZjRkXHVjZjRlXHVjZjRmXHVjZjUwXHVjZjUxXHVjZjUyXHVjZjUzXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkXHVjZjVlXHVjZjVmXHVjZjYwXHVjZjYxXHVjZjYyXHVjZjYzXHVjZjY2XHVjZjY4XHVjZjZhXHVjZjZiXHVjZjZjXHVhZDBjXHVhZDBkXHVhZDBmXHVhZDEx''@;'; put 'put ''XHVhZDE4XHVhZDFjXHVhZDIwXHVhZDI5XHVhZDJjXHVhZDJkXHVhZDM0XHVhZDM1XHVhZDM4XHVhZDNjXHVhZDQ0XHVhZDQ1XHVhZDQ3XHVhZDQ5XHVhZDUwXHVhZDU0XHVhZDU4XHVhZDYxXHVhZDYzXHVhZDZjXHVhZDZkXHVhZDcwXHVhZDczXHVhZDc0XHVhZDc1XHVhZDc2XHVhZDdiXHVh''@;'; put 'put ''ZDdjXHVhZDdkXHVhZDdmXHVhZDgxXHVhZDgyXHVhZDg4XHVhZDg5XHVhZDhjXHVhZDkwXHVhZDljXHVhZDlkXHVhZGE0XHVhZGI3XHVhZGMwXHVhZGMxXHVhZGM0XHVhZGM4XHVhZGQwXHVhZGQxXHVhZGQzXHVhZGRjXHVhZGUwXHVhZGU0XHVhZGY4XHVhZGY5XHVhZGZjXHVhZGZmXHVhZTAw''@;'; put 'put ''XHVhZTAxXHVhZTA4XHVhZTA5XHVhZTBiXHVhZTBkXHVhZTE0XHVhZTMwXHVhZTMxXHVhZTM0XHVhZTM3XHVhZTM4XHVhZTNhXHVhZTQwXHVhZTQxXHVhZTQzXHVhZTQ1XHVhZTQ2XHVhZTRhXHVhZTRjXHVhZTRkXHVhZTRlXHVhZTUwXHVhZTU0XHVhZTU2XHVhZTVjXHVhZTVkXHVhZTVmXHVh''@;'; put 'put ''ZTYwXHVhZTYxXHVhZTY1XHVhZTY4XHVhZTY5XHVhZTZjXHVhZTcwXHVhZTc4XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3N11bbV1dPTQ1MzEyK20sUls0NTMxMittXT14WzE3N11bbV0p''@;'; put 'put ''O2Zvcih4WzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Y2ZFx1Y2Y2ZVx1Y2Y2Zlx1Y2Y3Mlx1Y2Y3M1x1Y2Y3NVx1Y2Y3Nlx1Y2Y3N1x1Y2Y3OVx1Y2Y3YVx1Y2Y3Ylx1Y2Y3Y1x1Y2Y3ZFx1Y2Y3ZVx1Y2Y3Zlx1''@;'; put 'put ''Y2Y4MVx1Y2Y4Mlx1Y2Y4M1x1Y2Y4NFx1Y2Y4Nlx1Y2Y4N1x1Y2Y4OFx1Y2Y4OVx1Y2Y4YVx1Y2Y4Ylx1Y2Y4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2Y4ZVx1Y2Y4Zlx1Y2Y5MFx1Y2Y5MVx1Y2Y5Mlx1Y2Y5M1x1Y2Y5NFx1Y2Y5NVx1Y2Y5Nlx1Y2Y5N1x1Y2Y5''@;'; put 'put ''OFx1Y2Y5OVx1Y2Y5YVx1Y2Y5Ylx1Y2Y5Y1x1Y2Y5ZFx1Y2Y5ZVx1Y2Y5Zlx1Y2ZhMFx1Y2ZhMlx1Y2ZhM1x1Y2ZhNFx1Y2ZhNVx1Y2ZhNlx1Y2ZhN1x1Y2ZhOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Y2ZhYVx1Y2ZhYlx1Y2ZhY1x1Y2ZhZFx1Y2ZhZVx1Y2ZhZlx1''@;'; put 'put ''Y2ZiMVx1Y2ZiMlx1Y2ZiM1x1Y2ZiNFx1Y2ZiNVx1Y2ZiNlx1Y2ZiN1x1Y2ZiOFx1Y2ZiOVx1Y2ZiYVx1Y2ZiYlx1Y2ZiY1x1Y2ZiZFx1Y2ZiZVx1Y2ZiZlx1Y2ZjMFx1Y2ZjMVx1Y2ZjMlx1Y2ZjM1x1Y2ZjNVx1Y2ZjNlx1Y2ZjN1x1Y2ZjOFx1Y2ZjOVx1Y2ZjYVx1Y2ZjYlx1YWU3OVx1YWU3''@;'; put 'put ''Ylx1YWU3Y1x1YWU3ZFx1YWU4NFx1YWU4NVx1YWU4Y1x1YWViY1x1YWViZFx1YWViZVx1YWVjMFx1YWVjNFx1YWVjY1x1YWVjZFx1YWVjZlx1YWVkMFx1YWVkMVx1YWVkOFx1YWVkOVx1YWVkY1x1YWVlOFx1YWVlYlx1YWVlZFx1YWVmNFx1YWVmOFx1YWVmY1x1YWYwN1x1YWYwOFx1YWYwZFx1''@;'; put 'put ''YWYxMFx1YWYyY1x1YWYyZFx1YWYzMFx1YWYzMlx1YWYzNFx1YWYzY1x1YWYzZFx1YWYzZlx1YWY0MVx1YWY0Mlx1YWY0M1x1YWY0OFx1YWY0OVx1YWY1MFx1YWY1Y1x1YWY1ZFx1YWY2NFx1YWY2NVx1YWY3OVx1YWY4MFx1YWY4NFx1YWY4OFx1YWY5MFx1YWY5MVx1YWY5NVx1YWY5Y1x1YWZi''@;'; put 'put ''OFx1YWZiOVx1YWZiY1x1YWZjMFx1YWZjN1x1YWZjOFx1YWZjOVx1YWZjYlx1YWZjZFx1YWZjZVx1YWZkNFx1YWZkY1x1YWZlOFx1YWZlOVx1YWZmMFx1YWZmMVx1YWZmNFx1YWZmOFx1YjAwMFx1YjAwMVx1YjAwNFx1YjAwY1x1YjAxMFx1YjAxNFx1YjAxY1x1YjAxZFx1YjAyOFx1YjA0NFx1''@;'; put 'put ''YjA0NVx1YjA0OFx1YjA0YVx1YjA0Y1x1YjA0ZVx1YjA1M1x1YjA1NFx1YjA1NVx1YjA1N1x1YjA1OVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzhdW21dXT00NTU2OCttLFJbNDU1Njgr''@;'; put 'put ''bV09eFsxNzhdW21dKTtmb3IoeFsxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmY2NcdWNmY2RcdWNmY2VcdWNmY2ZcdWNmZDBcdWNmZDFcdWNmZDJcdWNmZDNcdWNmZDRcdWNmZDVcdWNmZDZcdWNmZDdcdWNmZDhc''@;'; put 'put ''dWNmZDlcdWNmZGFcdWNmZGJcdWNmZGNcdWNmZGRcdWNmZGVcdWNmZGZcdWNmZTJcdWNmZTNcdWNmZTVcdWNmZTZcdWNmZTdcdWNmZTlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWNmZWFcdWNmZWJcdWNmZWNcdWNmZWRcdWNmZWVcdWNmZWZcdWNmZjJcdWNmZjRcdWNm''@;'; put 'put ''ZjZcdWNmZjdcdWNmZjhcdWNmZjlcdWNmZmFcdWNmZmJcdWNmZmRcdWNmZmVcdWNmZmZcdWQwMDFcdWQwMDJcdWQwMDNcdWQwMDVcdWQwMDZcdWQwMDdcdWQwMDhcdWQwMDlcdWQwMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQwMGJcdWQwMGNcdWQwMGRcdWQwMGVc''@;'; put 'put ''dWQwMGZcdWQwMTBcdWQwMTJcdWQwMTNcdWQwMTRcdWQwMTVcdWQwMTZcdWQwMTdcdWQwMTlcdWQwMWFcdWQwMWJcdWQwMWNcdWQwMWRcdWQwMWVcdWQwMWZcdWQwMjBcdWQwMjFcdWQwMjJcdWQwMjNcdWQwMjRcdWQwMjVcdWQwMjZcdWQwMjdcdWQwMjhcdWQwMjlcdWQwMmFcdWQwMmJcdWQw''@;'; put 'put ''MmNcdWIwNWRcdWIwN2NcdWIwN2RcdWIwODBcdWIwODRcdWIwOGNcdWIwOGRcdWIwOGZcdWIwOTFcdWIwOThcdWIwOTlcdWIwOWFcdWIwOWNcdWIwOWZcdWIwYTBcdWIwYTFcdWIwYTJcdWIwYThcdWIwYTlcdWIwYWJcdWIwYWNcdWIwYWRcdWIwYWVcdWIwYWZcdWIwYjFcdWIwYjNcdWIwYjRc''@;'; put 'put ''dWIwYjVcdWIwYjhcdWIwYmNcdWIwYzRcdWIwYzVcdWIwYzdcdWIwYzhcdWIwYzlcdWIwZDBcdWIwZDFcdWIwZDRcdWIwZDhcdWIwZTBcdWIwZTVcdWIxMDhcdWIxMDlcdWIxMGJcdWIxMGNcdWIxMTBcdWIxMTJcdWIxMTNcdWIxMThcdWIxMTlcdWIxMWJcdWIxMWNcdWIxMWRcdWIxMjNcdWIx''@;'; put 'put ''MjRcdWIxMjVcdWIxMjhcdWIxMmNcdWIxMzRcdWIxMzVcdWIxMzdcdWIxMzhcdWIxMzlcdWIxNDBcdWIxNDFcdWIxNDRcdWIxNDhcdWIxNTBcdWIxNTFcdWIxNTRcdWIxNTVcdWIxNThcdWIxNWNcdWIxNjBcdWIxNzhcdWIxNzlcdWIxN2NcdWIxODBcdWIxODJcdWIxODhcdWIxODlcdWIxOGJc''@;'; put 'put ''dWIxOGRcdWIxOTJcdWIxOTNcdWIxOTRcdWIxOThcdWIxOWNcdWIxYThcdWIxY2NcdWIxZDBcdWIxZDRcdWIxZGNcdWIxZGRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTc5XVttXV09NDU4''@;'; put 'put ''MjQrbSxSWzQ1ODI0K21dPXhbMTc5XVttXSk7Zm9yKHhbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDJlXHVkMDJmXHVkMDMwXHVkMDMxXHVkMDMyXHVkMDMzXHVkMDM2XHVkMDM3XHVkMDM5XHVkMDNhXHVkMDNi''@;'; put 'put ''XHVkMDNkXHVkMDNlXHVkMDNmXHVkMDQwXHVkMDQxXHVkMDQyXHVkMDQzXHVkMDQ2XHVkMDQ4XHVkMDRhXHVkMDRiXHVkMDRjXHVkMDRkXHVkMDRlXHVkMDRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDUxXHVkMDUyXHVkMDUzXHVkMDU1XHVkMDU2XHVkMDU3XHVk''@;'; put 'put ''MDU5XHVkMDVhXHVkMDViXHVkMDVjXHVkMDVkXHVkMDVlXHVkMDVmXHVkMDYxXHVkMDYyXHVkMDYzXHVkMDY0XHVkMDY1XHVkMDY2XHVkMDY3XHVkMDY4XHVkMDY5XHVkMDZhXHVkMDZiXHVkMDZlXHVkMDZmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMDcxXHVkMDcy''@;'; put 'put ''XHVkMDczXHVkMDc1XHVkMDc2XHVkMDc3XHVkMDc4XHVkMDc5XHVkMDdhXHVkMDdiXHVkMDdlXHVkMDdmXHVkMDgwXHVkMDgyXHVkMDgzXHVkMDg0XHVkMDg1XHVkMDg2XHVkMDg3XHVkMDg4XHVkMDg5XHVkMDhhXHVkMDhiXHVkMDhjXHVkMDhkXHVkMDhlXHVkMDhmXHVkMDkwXHVkMDkxXHVk''@;'; put 'put ''MDkyXHVkMDkzXHVkMDk0XHViMWRmXHViMWU4XHViMWU5XHViMWVjXHViMWYwXHViMWY5XHViMWZiXHViMWZkXHViMjA0XHViMjA1XHViMjA4XHViMjBiXHViMjBjXHViMjE0XHViMjE1XHViMjE3XHViMjE5XHViMjIwXHViMjM0XHViMjNjXHViMjU4XHViMjVjXHViMjYwXHViMjY4XHViMjY5''@;'; put 'put ''XHViMjc0XHViMjc1XHViMjdjXHViMjg0XHViMjg1XHViMjg5XHViMjkwXHViMjkxXHViMjk0XHViMjk4XHViMjk5XHViMjlhXHViMmEwXHViMmExXHViMmEzXHViMmE1XHViMmE2XHViMmFhXHViMmFjXHViMmIwXHViMmI0XHViMmM4XHViMmM5XHViMmNjXHViMmQwXHViMmQyXHViMmQ4XHVi''@;'; put 'put ''MmQ5XHViMmRiXHViMmRkXHViMmUyXHViMmU0XHViMmU1XHViMmU2XHViMmU4XHViMmViXHViMmVjXHViMmVkXHViMmVlXHViMmVmXHViMmYzXHViMmY0XHViMmY1XHViMmY3XHViMmY4XHViMmY5XHViMmZhXHViMmZiXHViMmZmXHViMzAwXHViMzAxXHViMzA0XHViMzA4XHViMzEwXHViMzEx''@;'; put 'put ''XHViMzEzXHViMzE0XHViMzE1XHViMzFjXHViMzU0XHViMzU1XHViMzU2XHViMzU4XHViMzViXHViMzVjXHViMzVlXHViMzVmXHViMzY0XHViMzY1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTgwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4''@;'; put 'put ''WzE4MF1bbV1dPTQ2MDgwK20sUls0NjA4MCttXT14WzE4MF1bbV0pO2Zvcih4WzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDA5NVx1ZDA5Nlx1ZDA5N1x1ZDA5OFx1ZDA5OVx1ZDA5YVx1ZDA5Ylx1ZDA5Y1x1ZDA5''@;'; put 'put ''ZFx1ZDA5ZVx1ZDA5Zlx1ZDBhMFx1ZDBhMVx1ZDBhMlx1ZDBhM1x1ZDBhNlx1ZDBhN1x1ZDBhOVx1ZDBhYVx1ZDBhYlx1ZDBhZFx1ZDBhZVx1ZDBhZlx1ZDBiMFx1ZDBiMVx1ZDBiMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYVx1''@;'; put 'put ''ZDBiYlx1ZDBiY1x1ZDBiZFx1ZDBiZVx1ZDBiZlx1ZDBjMlx1ZDBjM1x1ZDBjNVx1ZDBjNlx1ZDBjN1x1ZDBjYVx1ZDBjYlx1ZDBjY1x1ZDBjZFx1ZDBjZVx1ZDBjZlx1ZDBkMlx1ZDBkNlx1ZDBkN1x1ZDBkOFx1ZDBkOVx1ZDBkYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZDBkYlx1ZDBkZVx1ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNVx1ZDBlNlx1ZDBlN1x1ZDBlOFx1ZDBlOVx1ZDBlYVx1ZDBlYlx1ZDBlZVx1ZDBmMlx1ZDBmM1x1ZDBmNFx1ZDBmNVx1ZDBmNlx1ZDBmN1x1ZDBmOVx1ZDBmYVx1ZDBmYlx1ZDBmY1x1ZDBmZFx1ZDBmZVx1ZDBmZlx1''@;'; put 'put ''ZDEwMFx1ZDEwMVx1ZDEwMlx1ZDEwM1x1ZDEwNFx1YjM2N1x1YjM2OVx1YjM2Ylx1YjM2ZVx1YjM3MFx1YjM3MVx1YjM3NFx1YjM3OFx1YjM4MFx1YjM4MVx1YjM4M1x1YjM4NFx1YjM4NVx1YjM4Y1x1YjM5MFx1YjM5NFx1YjNhMFx1YjNhMVx1YjNhOFx1YjNhY1x1YjNjNFx1YjNjNVx1YjNj''@;'; put 'put ''OFx1YjNjYlx1YjNjY1x1YjNjZVx1YjNkMFx1YjNkNFx1YjNkNVx1YjNkN1x1YjNkOVx1YjNkYlx1YjNkZFx1YjNlMFx1YjNlNFx1YjNlOFx1YjNmY1x1YjQxMFx1YjQxOFx1YjQxY1x1YjQyMFx1YjQyOFx1YjQyOVx1YjQyYlx1YjQzNFx1YjQ1MFx1YjQ1MVx1YjQ1NFx1YjQ1OFx1YjQ2MFx1''@;'; put 'put ''YjQ2MVx1YjQ2M1x1YjQ2NVx1YjQ2Y1x1YjQ4MFx1YjQ4OFx1YjQ5ZFx1YjRhNFx1YjRhOFx1YjRhY1x1YjRiNVx1YjRiN1x1YjRiOVx1YjRjMFx1YjRjNFx1YjRjOFx1YjRkMFx1YjRkNVx1YjRkY1x1YjRkZFx1YjRlMFx1YjRlM1x1YjRlNFx1YjRlNlx1YjRlY1x1YjRlZFx1YjRlZlx1YjRm''@;'; put 'put ''MVx1YjRmOFx1YjUxNFx1YjUxNVx1YjUxOFx1YjUxYlx1YjUxY1x1YjUyNFx1YjUyNVx1YjUyN1x1YjUyOFx1YjUyOVx1YjUyYVx1YjUzMFx1YjUzMVx1YjUzNFx1YjUzOFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTgxXVttXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYob2VbeFsxODFdW21dXT00NjMzNittLFJbNDYzMzYrbV09eFsxODFdW21dKTtmb3IoeFsxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMDVcdWQxMDZcdWQxMDdcdWQxMDhcdWQxMDlcdWQxMGFcdWQx''@;'; put 'put ''MGJcdWQxMGNcdWQxMGVcdWQxMGZcdWQxMTBcdWQxMTFcdWQxMTJcdWQxMTNcdWQxMTRcdWQxMTVcdWQxMTZcdWQxMTdcdWQxMThcdWQxMTlcdWQxMWFcdWQxMWJcdWQxMWNcdWQxMWRcdWQxMWVcdWQxMWZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQxMjBcdWQxMjFc''@;'; put 'put ''dWQxMjJcdWQxMjNcdWQxMjRcdWQxMjVcdWQxMjZcdWQxMjdcdWQxMjhcdWQxMjlcdWQxMmFcdWQxMmJcdWQxMmNcdWQxMmRcdWQxMmVcdWQxMmZcdWQxMzJcdWQxMzNcdWQxMzVcdWQxMzZcdWQxMzdcdWQxMzlcdWQxM2JcdWQxM2NcdWQxM2RcdWQxM2VcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWQxM2ZcdWQxNDJcdWQxNDZcdWQxNDdcdWQxNDhcdWQxNDlcdWQxNGFcdWQxNGJcdWQxNGVcdWQxNGZcdWQxNTFcdWQxNTJcdWQxNTNcdWQxNTVcdWQxNTZcdWQxNTdcdWQxNThcdWQxNTlcdWQxNWFcdWQxNWJcdWQxNWVcdWQxNjBcdWQxNjJcdWQxNjNcdWQxNjRc''@;'; put 'put ''dWQxNjVcdWQxNjZcdWQxNjdcdWQxNjlcdWQxNmFcdWQxNmJcdWQxNmRcdWI1NDBcdWI1NDFcdWI1NDNcdWI1NDRcdWI1NDVcdWI1NGJcdWI1NGNcdWI1NGRcdWI1NTBcdWI1NTRcdWI1NWNcdWI1NWRcdWI1NWZcdWI1NjBcdWI1NjFcdWI1YTBcdWI1YTFcdWI1YTRcdWI1YThcdWI1YWFcdWI1''@;'; put 'put ''YWJcdWI1YjBcdWI1YjFcdWI1YjNcdWI1YjRcdWI1YjVcdWI1YmJcdWI1YmNcdWI1YmRcdWI1YzBcdWI1YzRcdWI1Y2NcdWI1Y2RcdWI1Y2ZcdWI1ZDBcdWI1ZDFcdWI1ZDhcdWI1ZWNcdWI2MTBcdWI2MTFcdWI2MTRcdWI2MThcdWI2MjVcdWI2MmNcdWI2MzRcdWI2NDhcdWI2NjRcdWI2Njhc''@;'; put 'put ''dWI2OWNcdWI2OWRcdWI2YTBcdWI2YTRcdWI2YWJcdWI2YWNcdWI2YjFcdWI2ZDRcdWI2ZjBcdWI2ZjRcdWI2ZjhcdWI3MDBcdWI3MDFcdWI3MDVcdWI3MjhcdWI3MjlcdWI3MmNcdWI3MmZcdWI3MzBcdWI3MzhcdWI3MzlcdWI3M2JcdWI3NDRcdWI3NDhcdWI3NGNcdWI3NTRcdWI3NTVcdWI3''@;'; put 'put ''NjBcdWI3NjRcdWI3NjhcdWI3NzBcdWI3NzFcdWI3NzNcdWI3NzVcdWI3N2NcdWI3N2RcdWI3ODBcdWI3ODRcdWI3OGNcdWI3OGRcdWI3OGZcdWI3OTBcdWI3OTFcdWI3OTJcdWI3OTZcdWI3OTdcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4''@;'; put 'put ''Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTgyXVttXV09NDY1OTIrbSxSWzQ2NTkyK21dPXhbMTgyXVttXSk7Zm9yKHhbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMTZlXHVkMTZmXHVkMTcwXHVkMTcxXHVk''@;'; put 'put ''MTcyXHVkMTczXHVkMTc0XHVkMTc1XHVkMTc2XHVkMTc3XHVkMTc4XHVkMTc5XHVkMTdhXHVkMTdiXHVkMTdkXHVkMTdlXHVkMTdmXHVkMTgwXHVkMTgxXHVkMTgyXHVkMTgzXHVkMTg1XHVkMTg2XHVkMTg3XHVkMTg5XHVkMThhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVkMThiXHVkMThjXHVkMThkXHVkMThlXHVkMThmXHVkMTkwXHVkMTkxXHVkMTkyXHVkMTkzXHVkMTk0XHVkMTk1XHVkMTk2XHVkMTk3XHVkMTk4XHVkMTk5XHVkMTlhXHVkMTliXHVkMTljXHVkMTlkXHVkMTllXHVkMTlmXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3XHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMWE5XHVkMWFhXHVkMWFiXHVkMWFjXHVkMWFkXHVkMWFlXHVkMWFmXHVkMWIyXHVkMWI0XHVkMWI2XHVkMWI3XHVkMWI4XHVkMWI5XHVkMWJiXHVkMWJkXHVkMWJlXHVkMWJmXHVkMWMxXHVkMWMyXHVkMWMzXHVkMWM0XHVkMWM1XHVkMWM2''@;'; put 'put ''XHVkMWM3XHVkMWM4XHVkMWM5XHVkMWNhXHVkMWNiXHVkMWNjXHVkMWNkXHVkMWNlXHVkMWNmXHViNzk4XHViNzk5XHViNzljXHViN2EwXHViN2E4XHViN2E5XHViN2FiXHViN2FjXHViN2FkXHViN2I0XHViN2I1XHViN2I4XHViN2M3XHViN2M5XHViN2VjXHViN2VkXHViN2YwXHViN2Y0XHVi''@;'; put 'put ''N2ZjXHViN2ZkXHViN2ZmXHViODAwXHViODAxXHViODA3XHViODA4XHViODA5XHViODBjXHViODEwXHViODE4XHViODE5XHViODFiXHViODFkXHViODI0XHViODI1XHViODI4XHViODJjXHViODM0XHViODM1XHViODM3XHViODM4XHViODM5XHViODQwXHViODQ0XHViODUxXHViODUzXHViODVj''@;'; put 'put ''XHViODVkXHViODYwXHViODY0XHViODZjXHViODZkXHViODZmXHViODcxXHViODc4XHViODdjXHViODhkXHViOGE4XHViOGIwXHViOGI0XHViOGI4XHViOGMwXHViOGMxXHViOGMzXHViOGM1XHViOGNjXHViOGQwXHViOGQ0XHViOGRkXHViOGRmXHViOGUxXHViOGU4XHViOGU5XHViOGVjXHVi''@;'; put 'put ''OGYwXHViOGY4XHViOGY5XHViOGZiXHViOGZkXHViOTA0XHViOTE4XHViOTIwXHViOTNjXHViOTNkXHViOTQwXHViOTQ0XHViOTRjXHViOTRmXHViOTUxXHViOTU4XHViOTU5XHViOTVjXHViOTYwXHViOTY4XHViOTY5XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTgzXS5sZW5ndGg7Kytt''@;'; put 'put ''KTY1NTMzIT09eFsxODNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4M11bbV1dPTQ2ODQ4K20sUls0Njg0OCttXT14WzE4M11bbV0pO2Zvcih4WzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDFkMFx1ZDFkMVx1''@;'; put 'put ''ZDFkMlx1ZDFkM1x1ZDFkNFx1ZDFkNVx1ZDFkNlx1ZDFkN1x1ZDFkOVx1ZDFkYVx1ZDFkYlx1ZDFkY1x1ZDFkZFx1ZDFkZVx1ZDFkZlx1ZDFlMFx1ZDFlMVx1ZDFlMlx1ZDFlM1x1ZDFlNFx1ZDFlNVx1ZDFlNlx1ZDFlN1x1ZDFlOFx1ZDFlOVx1ZDFlYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZDFlYlx1ZDFlY1x1ZDFlZFx1ZDFlZVx1ZDFlZlx1ZDFmMFx1ZDFmMVx1ZDFmMlx1ZDFmM1x1ZDFmNVx1ZDFmNlx1ZDFmN1x1ZDFmOVx1ZDFmYVx1ZDFmYlx1ZDFmY1x1ZDFmZFx1ZDFmZVx1ZDFmZlx1ZDIwMFx1ZDIwMVx1ZDIwMlx1ZDIwM1x1ZDIwNFx1ZDIwNVx1''@;'; put 'put ''ZDIwNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDIwOFx1ZDIwYVx1ZDIwYlx1ZDIwY1x1ZDIwZFx1ZDIwZVx1ZDIwZlx1ZDIxMVx1ZDIxMlx1ZDIxM1x1ZDIxNFx1ZDIxNVx1ZDIxNlx1ZDIxN1x1ZDIxOFx1ZDIxOVx1ZDIxYVx1ZDIxYlx1ZDIxY1x1ZDIxZFx1ZDIx''@;'; put 'put ''ZVx1ZDIxZlx1ZDIyMFx1ZDIyMVx1ZDIyMlx1ZDIyM1x1ZDIyNFx1ZDIyNVx1ZDIyNlx1ZDIyN1x1ZDIyOFx1ZDIyOVx1Yjk2Ylx1Yjk2ZFx1Yjk3NFx1Yjk3NVx1Yjk3OFx1Yjk3Y1x1Yjk4NFx1Yjk4NVx1Yjk4N1x1Yjk4OVx1Yjk4YVx1Yjk4ZFx1Yjk4ZVx1YjlhY1x1YjlhZFx1YjliMFx1''@;'; put 'put ''YjliNFx1YjliY1x1YjliZFx1YjliZlx1YjljMVx1YjljOFx1YjljOVx1YjljY1x1YjljZVx1YjljZlx1YjlkMFx1YjlkMVx1YjlkMlx1YjlkOFx1YjlkOVx1YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1Yjlm''@;'; put 'put ''OFx1YjlmOVx1YjlmYVx1YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1YmE0MFx1YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1''@;'; put 'put ''YmE3MVx1YmE3NFx1YmE3OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFhOVx1YmFhYlx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1YmFkOFx1YmFkOVx1YmFmY1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4''@;'; put 'put ''NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODRdW21dXT00NzEwNCttLFJbNDcxMDQrbV09eFsxODRdW21dKTtmb3IoeFsxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWQyMmFcdWQyMmJcdWQyMmVcdWQyMmZcdWQyMzFcdWQyMzJcdWQyMzNcdWQyMzVcdWQyMzZcdWQyMzdcdWQyMzhcdWQyMzlcdWQyM2FcdWQyM2JcdWQyM2VcdWQyNDBcdWQyNDJcdWQyNDNcdWQyNDRcdWQyNDVcdWQyNDZcdWQyNDdcdWQyNDlcdWQyNGFcdWQyNGJcdWQyNGNcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNGRcdWQyNGVcdWQyNGZcdWQyNTBcdWQyNTFcdWQyNTJcdWQyNTNcdWQyNTRcdWQyNTVcdWQyNTZcdWQyNTdcdWQyNThcdWQyNTlcdWQyNWFcdWQyNWJcdWQyNWRcdWQyNWVcdWQyNWZcdWQyNjBcdWQyNjFcdWQyNjJcdWQyNjNcdWQyNjVc''@;'; put 'put ''dWQyNjZcdWQyNjdcdWQyNjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQyNjlcdWQyNmFcdWQyNmJcdWQyNmNcdWQyNmRcdWQyNmVcdWQyNmZcdWQyNzBcdWQyNzFcdWQyNzJcdWQyNzNcdWQyNzRcdWQyNzVcdWQyNzZcdWQyNzdcdWQyNzhcdWQyNzlcdWQyN2FcdWQy''@;'; put 'put ''N2JcdWQyN2NcdWQyN2RcdWQyN2VcdWQyN2ZcdWQyODJcdWQyODNcdWQyODVcdWQyODZcdWQyODdcdWQyODlcdWQyOGFcdWQyOGJcdWQyOGNcdWJiMDBcdWJiMDRcdWJiMGRcdWJiMGZcdWJiMTFcdWJiMThcdWJiMWNcdWJiMjBcdWJiMjlcdWJiMmJcdWJiMzRcdWJiMzVcdWJiMzZcdWJiMzhc''@;'; put 'put ''dWJiM2JcdWJiM2NcdWJiM2RcdWJiM2VcdWJiNDRcdWJiNDVcdWJiNDdcdWJiNDlcdWJiNGRcdWJiNGZcdWJiNTBcdWJiNTRcdWJiNThcdWJiNjFcdWJiNjNcdWJiNmNcdWJiODhcdWJiOGNcdWJiOTBcdWJiYTRcdWJiYThcdWJiYWNcdWJiYjRcdWJiYjdcdWJiYzBcdWJiYzRcdWJiYzhcdWJi''@;'; put 'put ''ZDBcdWJiZDNcdWJiZjhcdWJiZjlcdWJiZmNcdWJiZmZcdWJjMDBcdWJjMDJcdWJjMDhcdWJjMDlcdWJjMGJcdWJjMGNcdWJjMGRcdWJjMGZcdWJjMTFcdWJjMTRcdWJjMTVcdWJjMTZcdWJjMTdcdWJjMThcdWJjMWJcdWJjMWNcdWJjMWRcdWJjMWVcdWJjMWZcdWJjMjRcdWJjMjVcdWJjMjdc''@;'; put 'put ''dWJjMjlcdWJjMmRcdWJjMzBcdWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBcdWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJcdWJjOGNcdWJjOGVcdWJjOTRcdWJjOTVcdWJjOTdcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxtPTA7bSE9eFsxODVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg1XVttXV09NDczNjArbSxSWzQ3MzYwK21dPXhbMTg1XVttXSk7Zm9yKHhbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVkMjhkXHVkMjhlXHVkMjhmXHVkMjkyXHVkMjkzXHVkMjk0XHVkMjk2XHVkMjk3XHVkMjk4XHVkMjk5XHVkMjlhXHVkMjliXHVkMjlkXHVkMjllXHVkMjlmXHVkMmExXHVkMmEyXHVkMmEzXHVkMmE1XHVkMmE2XHVkMmE3XHVkMmE4XHVkMmE5XHVkMmFhXHVkMmFiXHVk''@;'; put 'put ''MmFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmFlXHVkMmFmXHVkMmIwXHVkMmIyXHVkMmIzXHVkMmI0XHVkMmI1XHVkMmI2XHVkMmI3XHVkMmJhXHVkMmJiXHVkMmJkXHVkMmJlXHVkMmMxXHVkMmMzXHVkMmM0XHVkMmM1XHVkMmM2XHVkMmM3XHVkMmNhXHVkMmNj''@;'; put 'put ''XHVkMmNkXHVkMmNlXHVkMmNmXHVkMmQwXHVkMmQxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkXHVkMmRlXHVkMmRmXHVkMmUwXHVkMmUxXHVkMmUyXHVkMmUzXHVkMmU2XHVk''@;'; put 'put ''MmU3XHVkMmU4XHVkMmU5XHVkMmVhXHVkMmViXHVkMmVjXHVkMmVkXHVkMmVlXHVkMmVmXHVkMmYyXHVkMmYzXHVkMmY1XHVkMmY2XHVkMmY3XHVkMmY5XHVkMmZhXHViYzk5XHViYzlhXHViY2EwXHViY2ExXHViY2E0XHViY2E3XHViY2E4XHViY2IwXHViY2IxXHViY2IzXHViY2I0XHViY2I1''@;'; put 'put ''XHViY2JjXHViY2JkXHViY2MwXHViY2M0XHViY2NkXHViY2NmXHViY2QwXHViY2QxXHViY2Q1XHViY2Q4XHViY2RjXHViY2Y0XHViY2Y1XHViY2Y2XHViY2Y4XHViY2ZjXHViZDA0XHViZDA1XHViZDA3XHViZDA5XHViZDEwXHViZDE0XHViZDI0XHViZDJjXHViZDQwXHViZDQ4XHViZDQ5XHVi''@;'; put 'put ''ZDRjXHViZDUwXHViZDU4XHViZDU5XHViZDY0XHViZDY4XHViZDgwXHViZDgxXHViZDg0XHViZDg3XHViZDg4XHViZDg5XHViZDhhXHViZDkwXHViZDkxXHViZDkzXHViZDk1XHViZDk5XHViZDlhXHViZDljXHViZGE0XHViZGIwXHViZGI4XHViZGQ0XHViZGQ1XHViZGQ4XHViZGRjXHViZGU5''@;'; put 'put ''XHViZGYwXHViZGY0XHViZGY4XHViZTAwXHViZTAzXHViZTA1XHViZTBjXHViZTBkXHViZTEwXHViZTE0XHViZTFjXHViZTFkXHViZTFmXHViZTQ0XHViZTQ1XHViZTQ4XHViZTRjXHViZTRlXHViZTU0XHViZTU1XHViZTU3XHViZTU5XHViZTVhXHViZTViXHViZTYwXHViZTYxXHViZTY0XHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4Nl1bbV1dPTQ3NjE2K20sUls0NzYxNittXT14WzE4Nl1bbV0pO2Zvcih4WzE4N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDJmYlx1ZDJmY1x1ZDJmZFx1ZDJmZVx1ZDJmZlx1ZDMwMlx1ZDMwNFx1ZDMwNlx1ZDMwN1x1ZDMwOFx1ZDMwOVx1ZDMwYVx1ZDMwYlx1ZDMwZlx1ZDMxMVx1ZDMxMlx1ZDMxM1x1ZDMxNVx1ZDMxN1x1ZDMxOFx1ZDMxOVx1ZDMxYVx1ZDMxYlx1''@;'; put 'put ''ZDMxZVx1ZDMyMlx1ZDMyM1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDMyNFx1ZDMyNlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1ZDMyZVx1ZDMyZlx1ZDMzMVx1ZDMzMlx1ZDMzM1x1ZDMzNFx1ZDMzNVx1ZDMzNlx1ZDMzN1x1ZDMzYVx1ZDMzZVx1ZDMzZlx1ZDM0''@;'; put 'put ''MFx1ZDM0MVx1ZDM0Mlx1ZDM0M1x1ZDM0Nlx1ZDM0N1x1ZDM0OFx1ZDM0OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDM0YVx1ZDM0Ylx1ZDM0Y1x1ZDM0ZFx1ZDM0ZVx1ZDM0Zlx1ZDM1MFx1ZDM1MVx1ZDM1Mlx1ZDM1M1x1ZDM1NFx1ZDM1NVx1ZDM1Nlx1ZDM1N1x1''@;'; put 'put ''ZDM1OFx1ZDM1OVx1ZDM1YVx1ZDM1Ylx1ZDM1Y1x1ZDM1ZFx1ZDM1ZVx1ZDM1Zlx1ZDM2MFx1ZDM2MVx1ZDM2Mlx1ZDM2M1x1ZDM2NFx1ZDM2NVx1ZDM2Nlx1ZDM2N1x1ZDM2OFx1ZDM2OVx1YmU2OFx1YmU2YVx1YmU3MFx1YmU3MVx1YmU3M1x1YmU3NFx1YmU3NVx1YmU3Ylx1YmU3Y1x1YmU3''@;'; put 'put ''ZFx1YmU4MFx1YmU4NFx1YmU4Y1x1YmU4ZFx1YmU4Zlx1YmU5MFx1YmU5MVx1YmU5OFx1YmU5OVx1YmVhOFx1YmVkMFx1YmVkMVx1YmVkNFx1YmVkN1x1YmVkOFx1YmVlMFx1YmVlM1x1YmVlNFx1YmVlNVx1YmVlY1x1YmYwMVx1YmYwOFx1YmYwOVx1YmYxOFx1YmYxOVx1YmYxYlx1YmYxY1x1''@;'; put 'put ''YmYxZFx1YmY0MFx1YmY0MVx1YmY0NFx1YmY0OFx1YmY1MFx1YmY1MVx1YmY1NVx1YmY5NFx1YmZiMFx1YmZjNVx1YmZjY1x1YmZjZFx1YmZkMFx1YmZkNFx1YmZkY1x1YmZkZlx1YmZlMVx1YzAzY1x1YzA1MVx1YzA1OFx1YzA1Y1x1YzA2MFx1YzA2OFx1YzA2OVx1YzA5MFx1YzA5MVx1YzA5''@;'; put 'put ''NFx1YzA5OFx1YzBhMFx1YzBhMVx1YzBhM1x1YzBhNVx1YzBhY1x1YzBhZFx1YzBhZlx1YzBiMFx1YzBiM1x1YzBiNFx1YzBiNVx1YzBiNlx1YzBiY1x1YzBiZFx1YzBiZlx1YzBjMFx1YzBjMVx1YzBjNVx1YzBjOFx1YzBjOVx1YzBjY1x1YzBkMFx1YzBkOFx1YzBkOVx1YzBkYlx1YzBkY1x1''@;'; put 'put ''YzBkZFx1YzBlNFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODddW21dXT00Nzg3MittLFJbNDc4NzIrbV09eFsxODddW21dKTtmb3IoeFsxODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzNmFcdWQzNmJcdWQzNmNcdWQzNmRcdWQzNmVcdWQzNmZcdWQzNzBcdWQzNzFcdWQzNzJcdWQzNzNcdWQzNzRcdWQzNzVcdWQzNzZcdWQzNzdcdWQzNzhcdWQzNzlcdWQzN2FcdWQzN2JcdWQzN2VcdWQzN2ZcdWQzODFc''@;'; put 'put ''dWQzODJcdWQzODNcdWQzODVcdWQzODZcdWQzODdcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzODhcdWQzODlcdWQzOGFcdWQzOGJcdWQzOGVcdWQzOTJcdWQzOTNcdWQzOTRcdWQzOTVcdWQzOTZcdWQzOTdcdWQzOWFcdWQzOWJcdWQzOWRcdWQzOWVcdWQzOWZcdWQz''@;'; put 'put ''YTFcdWQzYTJcdWQzYTNcdWQzYTRcdWQzYTVcdWQzYTZcdWQzYTdcdWQzYWFcdWQzYWNcdWQzYWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQzYWZcdWQzYjBcdWQzYjFcdWQzYjJcdWQzYjNcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmRc''@;'; put 'put ''dWQzYmVcdWQzYmZcdWQzYzBcdWQzYzFcdWQzYzJcdWQzYzNcdWQzYzZcdWQzYzdcdWQzY2FcdWQzY2JcdWQzY2NcdWQzY2RcdWQzY2VcdWQzY2ZcdWQzZDFcdWQzZDJcdWQzZDNcdWQzZDRcdWQzZDVcdWQzZDZcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRcdWMwZjVcdWMwZjdcdWMwZjlcdWMx''@;'; put 'put ''MDBcdWMxMDRcdWMxMDhcdWMxMTBcdWMxMTVcdWMxMWNcdWMxMWRcdWMxMWVcdWMxMWZcdWMxMjBcdWMxMjNcdWMxMjRcdWMxMjZcdWMxMjdcdWMxMmNcdWMxMmRcdWMxMmZcdWMxMzBcdWMxMzFcdWMxMzZcdWMxMzhcdWMxMzlcdWMxM2NcdWMxNDBcdWMxNDhcdWMxNDlcdWMxNGJcdWMxNGNc''@;'; put 'put ''dWMxNGRcdWMxNTRcdWMxNTVcdWMxNThcdWMxNWNcdWMxNjRcdWMxNjVcdWMxNjdcdWMxNjhcdWMxNjlcdWMxNzBcdWMxNzRcdWMxNzhcdWMxODVcdWMxOGNcdWMxOGRcdWMxOGVcdWMxOTBcdWMxOTRcdWMxOTZcdWMxOWNcdWMxOWRcdWMxOWZcdWMxYTFcdWMxYTVcdWMxYThcdWMxYTlcdWMx''@;'; put 'put ''YWNcdWMxYjBcdWMxYmRcdWMxYzRcdWMxYzhcdWMxY2NcdWMxZDRcdWMxZDdcdWMxZDhcdWMxZTBcdWMxZTRcdWMxZThcdWMxZjBcdWMxZjFcdWMxZjNcdWMxZmNcdWMxZmRcdWMyMDBcdWMyMDRcdWMyMGNcdWMyMGRcdWMyMGZcdWMyMTFcdWMyMThcdWMyMTlcdWMyMWNcdWMyMWZcdWMyMjBc''@;'; put 'put ''dWMyMjhcdWMyMjlcdWMyMmJcdWMyMmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg4XVttXV09NDgxMjgrbSxSWzQ4MTI4K21dPXhbMTg4XVttXSk7Zm9yKHhbMTg5XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Q3XHVkM2Q5XHVkM2RhXHVkM2RiXHVkM2RjXHVkM2RkXHVkM2RlXHVkM2RmXHVkM2UwXHVkM2UyXHVkM2U0XHVkM2U1XHVkM2U2XHVkM2U3XHVkM2U4XHVkM2U5XHVkM2VhXHVkM2ViXHVkM2Vl''@;'; put 'put ''XHVkM2VmXHVkM2YxXHVkM2YyXHVkM2YzXHVkM2Y1XHVkM2Y2XHVkM2Y3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkM2Y4XHVkM2Y5XHVkM2ZhXHVkM2ZiXHVkM2ZlXHVkNDAwXHVkNDAyXHVkNDAzXHVkNDA0XHVkNDA1XHVkNDA2XHVkNDA3XHVkNDA5XHVkNDBhXHVk''@;'; put 'put ''NDBiXHVkNDBjXHVkNDBkXHVkNDBlXHVkNDBmXHVkNDEwXHVkNDExXHVkNDEyXHVkNDEzXHVkNDE0XHVkNDE1XHVkNDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNDE3XHVkNDE4XHVkNDE5XHVkNDFhXHVkNDFiXHVkNDFjXHVkNDFlXHVkNDFmXHVkNDIwXHVkNDIx''@;'; put 'put ''XHVkNDIyXHVkNDIzXHVkNDI0XHVkNDI1XHVkNDI2XHVkNDI3XHVkNDI4XHVkNDI5XHVkNDJhXHVkNDJiXHVkNDJjXHVkNDJkXHVkNDJlXHVkNDJmXHVkNDMwXHVkNDMxXHVkNDMyXHVkNDMzXHVkNDM0XHVkNDM1XHVkNDM2XHVkNDM3XHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVj''@;'; put 'put ''MjUwXHVjMjUxXHVjMjU0XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVjMjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3''@;'; put 'put ''XHVjMmI5XHVjMmRjXHVjMmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVj''@;'; put 'put ''MzI1XHVjMzI4XHVjMzI5XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVjMzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1''@;'; put 'put ''XHVjM2Y4XHVjNDA4XHVjNDEwXHVjNDI0XHVjNDJjXHVjNDMwXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4OV1bbV1dPTQ4Mzg0K20sUls0ODM4NCttXT14WzE4OV1bbV0pO2Zvcih4WzE5''@;'; put 'put ''MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQzOFx1ZDQzOVx1ZDQzYVx1ZDQzYlx1ZDQzY1x1ZDQzZFx1ZDQzZVx1ZDQzZlx1ZDQ0MVx1ZDQ0Mlx1ZDQ0M1x1ZDQ0NVx1ZDQ0Nlx1ZDQ0N1x1ZDQ0OFx1ZDQ0OVx1ZDQ0''@;'; put 'put ''YVx1ZDQ0Ylx1ZDQ0Y1x1ZDQ0ZFx1ZDQ0ZVx1ZDQ0Zlx1ZDQ1MFx1ZDQ1MVx1ZDQ1Mlx1ZDQ1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ1NFx1ZDQ1NVx1ZDQ1Nlx1ZDQ1N1x1ZDQ1OFx1ZDQ1OVx1ZDQ1YVx1ZDQ1Ylx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1''@;'; put 'put ''ZDQ2Mlx1ZDQ2M1x1ZDQ2NVx1ZDQ2Nlx1ZDQ2N1x1ZDQ2OFx1ZDQ2OVx1ZDQ2YVx1ZDQ2Ylx1ZDQ2Y1x1ZDQ2ZVx1ZDQ3MFx1ZDQ3MVx1ZDQ3Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQ3M1x1ZDQ3NFx1ZDQ3NVx1ZDQ3Nlx1ZDQ3N1x1ZDQ3YVx1ZDQ3Ylx1ZDQ3''@;'; put 'put ''ZFx1ZDQ3ZVx1ZDQ4MVx1ZDQ4M1x1ZDQ4NFx1ZDQ4NVx1ZDQ4Nlx1ZDQ4N1x1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZVx1ZDQ4Zlx1ZDQ5MFx1ZDQ5MVx1ZDQ5Mlx1ZDQ5M1x1ZDQ5NVx1ZDQ5Nlx1ZDQ5N1x1ZDQ5OFx1ZDQ5OVx1ZDQ5YVx1ZDQ5Ylx1ZDQ5Y1x1ZDQ5ZFx1YzQzNFx1YzQzY1x1YzQzZFx1''@;'; put 'put ''YzQ0OFx1YzQ2NFx1YzQ2NVx1YzQ2OFx1YzQ2Y1x1YzQ3NFx1YzQ3NVx1YzQ3OVx1YzQ4MFx1YzQ5NFx1YzQ5Y1x1YzRiOFx1YzRiY1x1YzRlOVx1YzRmMFx1YzRmMVx1YzRmNFx1YzRmOFx1YzRmYVx1YzRmZlx1YzUwMFx1YzUwMVx1YzUwY1x1YzUxMFx1YzUxNFx1YzUxY1x1YzUyOFx1YzUy''@;'; put 'put ''OVx1YzUyY1x1YzUzMFx1YzUzOFx1YzUzOVx1YzUzYlx1YzUzZFx1YzU0NFx1YzU0NVx1YzU0OFx1YzU0OVx1YzU0YVx1YzU0Y1x1YzU0ZFx1YzU0ZVx1YzU1M1x1YzU1NFx1YzU1NVx1YzU1N1x1YzU1OFx1YzU1OVx1YzU1ZFx1YzU1ZVx1YzU2MFx1YzU2MVx1YzU2NFx1YzU2OFx1YzU3MFx1''@;'; put 'put ''YzU3MVx1YzU3M1x1YzU3NFx1YzU3NVx1YzU3Y1x1YzU3ZFx1YzU4MFx1YzU4NFx1YzU4N1x1YzU4Y1x1YzU4ZFx1YzU4Zlx1YzU5MVx1YzU5NVx1YzU5N1x1YzU5OFx1YzU5Y1x1YzVhMFx1YzVhOVx1YzViNFx1YzViNVx1YzViOFx1YzViOVx1YzViYlx1YzViY1x1YzViZFx1YzViZVx1YzVj''@;'; put 'put ''NFx1YzVjNVx1YzVjNlx1YzVjN1x1YzVjOFx1YzVjOVx1YzVjYVx1YzVjY1x1YzVjZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTkwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTBdW21dXT00ODY0MCttLFJbNDg2NDArbV09eFsxOTBd''@;'; put 'put ''W21dKTtmb3IoeFsxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0OWVcdWQ0OWZcdWQ0YTBcdWQ0YTFcdWQ0YTJcdWQ0YTNcdWQ0YTRcdWQ0YTVcdWQ0YTZcdWQ0YTdcdWQ0YThcdWQ0YWFcdWQ0YWJcdWQ0YWNcdWQ0''@;'; put 'put ''YWRcdWQ0YWVcdWQ0YWZcdWQ0YjBcdWQ0YjFcdWQ0YjJcdWQ0YjNcdWQ0YjRcdWQ0YjVcdWQ0YjZcdWQ0YjdcdWQ0YjhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0YjlcdWQ0YmFcdWQ0YmJcdWQ0YmNcdWQ0YmRcdWQ0YmVcdWQ0YmZcdWQ0YzBcdWQ0YzFcdWQ0YzJc''@;'; put 'put ''dWQ0YzNcdWQ0YzRcdWQ0YzVcdWQ0YzZcdWQ0YzdcdWQ0YzhcdWQ0YzlcdWQ0Y2FcdWQ0Y2JcdWQ0Y2RcdWQ0Y2VcdWQ0Y2ZcdWQ0ZDFcdWQ0ZDJcdWQ0ZDNcdWQ0ZDVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ0ZDZcdWQ0ZDdcdWQ0ZDhcdWQ0ZDlcdWQ0ZGFcdWQ0''@;'; put 'put ''ZGJcdWQ0ZGRcdWQ0ZGVcdWQ0ZTBcdWQ0ZTFcdWQ0ZTJcdWQ0ZTNcdWQ0ZTRcdWQ0ZTVcdWQ0ZTZcdWQ0ZTdcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0ZWVcdWQ0ZWZcdWQ0ZjFcdWQ0ZjJcdWQ0ZjNcdWQ0ZjRcdWQ0ZjVcdWQ0ZjZcdWQ0ZjdcdWQ0ZjlcdWQ0ZmFcdWQ0ZmNcdWM1ZDBc''@;'; put 'put ''dWM1ZDFcdWM1ZDRcdWM1ZDhcdWM1ZTBcdWM1ZTFcdWM1ZTNcdWM1ZTVcdWM1ZWNcdWM1ZWRcdWM1ZWVcdWM1ZjBcdWM1ZjRcdWM1ZjZcdWM1ZjdcdWM1ZmNcdWM1ZmRcdWM1ZmVcdWM1ZmZcdWM2MDBcdWM2MDFcdWM2MDVcdWM2MDZcdWM2MDdcdWM2MDhcdWM2MGNcdWM2MTBcdWM2MThcdWM2''@;'; put 'put ''MTlcdWM2MWJcdWM2MWNcdWM2MjRcdWM2MjVcdWM2MjhcdWM2MmNcdWM2MmRcdWM2MmVcdWM2MzBcdWM2MzNcdWM2MzRcdWM2MzVcdWM2MzdcdWM2MzlcdWM2M2JcdWM2NDBcdWM2NDFcdWM2NDRcdWM2NDhcdWM2NTBcdWM2NTFcdWM2NTNcdWM2NTRcdWM2NTVcdWM2NWNcdWM2NWRcdWM2NjBc''@;'; put 'put ''dWM2NmNcdWM2NmZcdWM2NzFcdWM2NzhcdWM2NzlcdWM2N2NcdWM2ODBcdWM2ODhcdWM2ODlcdWM2OGJcdWM2OGRcdWM2OTRcdWM2OTVcdWM2OThcdWM2OWNcdWM2YTRcdWM2YTVcdWM2YTdcdWM2YTlcdWM2YjBcdWM2YjFcdWM2YjRcdWM2YjhcdWM2YjlcdWM2YmFcdWM2YzBcdWM2YzFcdWM2''@;'; put 'put ''YzNcdWM2YzVcdWM2Y2NcdWM2Y2RcdWM2ZDBcdWM2ZDRcdWM2ZGNcdWM2ZGRcdWM2ZTBcdWM2ZTFcdWM2ZThcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTkxXVttXV09NDg4OTYrbSxSWzQ4''@;'; put 'put ''ODk2K21dPXhbMTkxXVttXSk7Zm9yKHhbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNGZlXHVkNGZmXHVkNTAwXHVkNTAxXHVkNTAyXHVkNTAzXHVkNTA1XHVkNTA2XHVkNTA3XHVkNTA5XHVkNTBhXHVkNTBiXHVk''@;'; put 'put ''NTBkXHVkNTBlXHVkNTBmXHVkNTEwXHVkNTExXHVkNTEyXHVkNTEzXHVkNTE2XHVkNTE4XHVkNTE5XHVkNTFhXHVkNTFiXHVkNTFjXHVkNTFkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTFlXHVkNTFmXHVkNTIwXHVkNTIxXHVkNTIyXHVkNTIzXHVkNTI0XHVkNTI1''@;'; put 'put ''XHVkNTI2XHVkNTI3XHVkNTI4XHVkNTI5XHVkNTJhXHVkNTJiXHVkNTJjXHVkNTJkXHVkNTJlXHVkNTJmXHVkNTMwXHVkNTMxXHVkNTMyXHVkNTMzXHVkNTM0XHVkNTM1XHVkNTM2XHVkNTM3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNTM4XHVkNTM5XHVkNTNhXHVk''@;'; put 'put ''NTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1XHVkNTQ2XHVkNTQ3XHVkNTQ4XHVkNTQ5XHVkNTRhXHVkNTRiXHVkNTRlXHVkNTUwXHVkNTUyXHVkNTUzXHVkNTU0XHVkNTU1XHVkNTU2XHVkNTU3XHVkNTVhXHVkNTViXHVkNTVkXHVkNTVlXHVkNTVmXHVkNTYxXHVkNTYy''@;'; put 'put ''XHVkNTYzXHVjNmU5XHVjNmVjXHVjNmYwXHVjNmY4XHVjNmY5XHVjNmZkXHVjNzA0XHVjNzA1XHVjNzA4XHVjNzBjXHVjNzE0XHVjNzE1XHVjNzE3XHVjNzE5XHVjNzIwXHVjNzIxXHVjNzI0XHVjNzI4XHVjNzMwXHVjNzMxXHVjNzMzXHVjNzM1XHVjNzM3XHVjNzNjXHVjNzNkXHVjNzQwXHVj''@;'; put 'put ''NzQ0XHVjNzRhXHVjNzRjXHVjNzRkXHVjNzRmXHVjNzUxXHVjNzUyXHVjNzUzXHVjNzU0XHVjNzU1XHVjNzU2XHVjNzU3XHVjNzU4XHVjNzVjXHVjNzYwXHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4''@;'; put 'put ''XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVjNzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVj''@;'; put 'put ''N2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAxXHVjODA0XHVjODA4XHVjODBhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTkyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5Ml1bbV1d''@;'; put 'put ''PTQ5MTUyK20sUls0OTE1MittXT14WzE5Ml1bbV0pO2Zvcih4WzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDU2NFx1ZDU2Nlx1ZDU2N1x1ZDU2YVx1ZDU2Y1x1ZDU2ZVx1ZDU2Zlx1ZDU3MFx1ZDU3MVx1ZDU3Mlx1''@;'; put 'put ''ZDU3M1x1ZDU3Nlx1ZDU3N1x1ZDU3OVx1ZDU3YVx1ZDU3Ylx1ZDU3ZFx1ZDU3ZVx1ZDU3Zlx1ZDU4MFx1ZDU4MVx1ZDU4Mlx1ZDU4M1x1ZDU4Nlx1ZDU4YVx1ZDU4Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4Zlx1ZDU5MVx1ZDU5''@;'; put 'put ''Mlx1ZDU5M1x1ZDU5NFx1ZDU5NVx1ZDU5Nlx1ZDU5N1x1ZDU5OFx1ZDU5OVx1ZDU5YVx1ZDU5Ylx1ZDU5Y1x1ZDU5ZFx1ZDU5ZVx1ZDU5Zlx1ZDVhMFx1ZDVhMVx1ZDVhMlx1ZDVhM1x1ZDVhNFx1ZDVhNlx1ZDVhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDVhOFx1''@;'; put 'put ''ZDVhOVx1ZDVhYVx1ZDVhYlx1ZDVhY1x1ZDVhZFx1ZDVhZVx1ZDVhZlx1ZDViMFx1ZDViMVx1ZDViMlx1ZDViM1x1ZDViNFx1ZDViNVx1ZDViNlx1ZDViN1x1ZDViOFx1ZDViOVx1ZDViYVx1ZDViYlx1ZDViY1x1ZDViZFx1ZDViZVx1ZDViZlx1ZDVjMFx1ZDVjMVx1ZDVjMlx1ZDVjM1x1ZDVj''@;'; put 'put ''NFx1ZDVjNVx1ZDVjNlx1ZDVjN1x1YzgxMFx1YzgxMVx1YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1YzgyZlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1Yzg0ZFx1Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1''@;'; put 'put ''Yzg3OFx1Yzg3YVx1Yzg4MFx1Yzg4MVx1Yzg4M1x1Yzg4NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1YzhkNVx1YzhkN1x1YzhkOVx1YzhlMFx1YzhlMVx1Yzhl''@;'; put 'put ''NFx1YzhmNVx1YzhmY1x1YzhmZFx1YzkwMFx1YzkwNFx1YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1Yzk3MFx1Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1''@;'; put 'put ''Yzk4Y1x1Yzk5MFx1Yzk5OFx1Yzk5OVx1Yzk5Ylx1Yzk5ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTkzXVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsxOTNdW21dXT00OTQwOCttLFJbNDk0MDgrbV09eFsxOTNdW21dKTtmb3IoeFsxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1Y2FcdWQ1Y2JcdWQ1Y2RcdWQ1Y2VcdWQ1Y2ZcdWQ1ZDFcdWQ1ZDNcdWQ1ZDRc''@;'; put 'put ''dWQ1ZDVcdWQ1ZDZcdWQ1ZDdcdWQ1ZGFcdWQ1ZGNcdWQ1ZGVcdWQ1ZGZcdWQ1ZTBcdWQ1ZTFcdWQ1ZTJcdWQ1ZTNcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFcdWQ1ZWJcdWQ1ZWRcdWQ1ZWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ1ZWZcdWQ1ZjBcdWQ1ZjFcdWQ1''@;'; put 'put ''ZjJcdWQ1ZjNcdWQ1ZjZcdWQ1ZjhcdWQ1ZmFcdWQ1ZmJcdWQ1ZmNcdWQ1ZmRcdWQ1ZmVcdWQ1ZmZcdWQ2MDJcdWQ2MDNcdWQ2MDVcdWQ2MDZcdWQ2MDdcdWQ2MDlcdWQ2MGFcdWQ2MGJcdWQ2MGNcdWQ2MGRcdWQ2MGVcdWQ2MGZcdWQ2MTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWQ2MTZcdWQ2MTdcdWQ2MThcdWQ2MTlcdWQ2MWFcdWQ2MWJcdWQ2MWRcdWQ2MWVcdWQ2MWZcdWQ2MjFcdWQ2MjJcdWQ2MjNcdWQ2MjVcdWQ2MjZcdWQ2MjdcdWQ2MjhcdWQ2MjlcdWQ2MmFcdWQ2MmJcdWQ2MmNcdWQ2MmVcdWQ2MmZcdWQ2MzBcdWQ2MzFcdWQ2MzJcdWQ2MzNcdWQ2''@;'; put 'put ''MzRcdWQ2MzVcdWQ2MzZcdWQ2MzdcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5ZTdcdWM5ZWNcdWM5ZWRcdWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNhMGJc''@;'; put 'put ''dWNhMGNcdWNhMGRcdWNhMTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhcdWNhN2RcdWNhODRcdWNhOThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNcdWNh''@;'; put 'put ''ZDhcdWNhZDlcdWNhZTBcdWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNiNTBcdWNiNThcdWNiNTlcdWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNiZTlc''@;'; put 'put ''dWNjMGNcdWNjMGRcdWNjMTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhcdWNjMzlcdWNjM2JcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5NF1bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMTk0XVttXV09NDk2NjQrbSxSWzQ5NjY0K21dPXhbMTk0XVttXSk7Zm9yKHhbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjNkXHVkNjNlXHVkNjNmXHVkNjQxXHVkNjQyXHVkNjQz''@;'; put 'put ''XHVkNjQ0XHVkNjQ2XHVkNjQ3XHVkNjRhXHVkNjRjXHVkNjRlXHVkNjRmXHVkNjUwXHVkNjUyXHVkNjUzXHVkNjU2XHVkNjU3XHVkNjU5XHVkNjVhXHVkNjViXHVkNjVkXHVkNjVlXHVkNjVmXHVkNjYwXHVkNjYxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkNjYyXHVk''@;'; put 'put ''NjYzXHVkNjY0XHVkNjY1XHVkNjY2XHVkNjY4XHVkNjZhXHVkNjZiXHVkNjZjXHVkNjZkXHVkNjZlXHVkNjZmXHVkNjcyXHVkNjczXHVkNjc1XHVkNjc2XHVkNjc3XHVkNjc4XHVkNjc5XHVkNjdhXHVkNjdiXHVkNjdjXHVkNjdkXHVkNjdlXHVkNjdmXHVkNjgwXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVkNjgxXHVkNjgyXHVkNjg0XHVkNjg2XHVkNjg3XHVkNjg4XHVkNjg5XHVkNjhhXHVkNjhiXHVkNjhlXHVkNjhmXHVkNjkxXHVkNjkyXHVkNjkzXHVkNjk1XHVkNjk2XHVkNjk3XHVkNjk4XHVkNjk5XHVkNjlhXHVkNjliXHVkNjljXHVkNjllXHVkNmEwXHVk''@;'; put 'put ''NmEyXHVkNmEzXHVkNmE0XHVkNmE1XHVkNmE2XHVkNmE3XHVkNmE5XHVkNmFhXHVjYzNjXHVjYzNkXHVjYzNlXHVjYzQ0XHVjYzQ1XHVjYzQ4XHVjYzRjXHVjYzU0XHVjYzU1XHVjYzU3XHVjYzU4XHVjYzU5XHVjYzYwXHVjYzY0XHVjYzY2XHVjYzY4XHVjYzcwXHVjYzc1XHVjYzk4XHVjYzk5''@;'; put 'put ''XHVjYzljXHVjY2EwXHVjY2E4XHVjY2E5XHVjY2FiXHVjY2FjXHVjY2FkXHVjY2I0XHVjY2I1XHVjY2I4XHVjY2JjXHVjY2M0XHVjY2M1XHVjY2M3XHVjY2M5XHVjY2QwXHVjY2Q0XHVjY2U0XHVjY2VjXHVjY2YwXHVjZDAxXHVjZDA4XHVjZDA5XHVjZDBjXHVjZDEwXHVjZDE4XHVjZDE5XHVj''@;'; put 'put ''ZDFiXHVjZDFkXHVjZDI0XHVjZDI4XHVjZDJjXHVjZDM5XHVjZDVjXHVjZDYwXHVjZDY0XHVjZDZjXHVjZDZkXHVjZDZmXHVjZDcxXHVjZDc4XHVjZDg4XHVjZDk0XHVjZDk1XHVjZDk4XHVjZDljXHVjZGE0XHVjZGE1XHVjZGE3XHVjZGE5XHVjZGIwXHVjZGM0XHVjZGNjXHVjZGQwXHVjZGU4''@;'; put 'put ''XHVjZGVjXHVjZGYwXHVjZGY4XHVjZGY5XHVjZGZiXHVjZGZkXHVjZTA0XHVjZTA4XHVjZTBjXHVjZTE0XHVjZTE5XHVjZTIwXHVjZTIxXHVjZTI0XHVjZTI4XHVjZTMwXHVjZTMxXHVjZTMzXHVjZTM1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk1XS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsxOTVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5NV1bbV1dPTQ5OTIwK20sUls0OTkyMCttXT14WzE5NV1bbV0pO2Zvcih4WzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZhYlx1ZDZhZFx1ZDZhZVx1ZDZh''@;'; put 'put ''Zlx1ZDZiMVx1ZDZiMlx1ZDZiM1x1ZDZiNFx1ZDZiNVx1ZDZiNlx1ZDZiN1x1ZDZiOFx1ZDZiYVx1ZDZiY1x1ZDZiZFx1ZDZiZVx1ZDZiZlx1ZDZjMFx1ZDZjMVx1ZDZjMlx1ZDZjM1x1ZDZjNlx1ZDZjN1x1ZDZjOVx1ZDZjYVx1ZDZjYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZDZjZFx1ZDZjZVx1ZDZjZlx1ZDZkMFx1ZDZkMlx1ZDZkM1x1ZDZkNVx1ZDZkNlx1ZDZkOFx1ZDZkYVx1ZDZkYlx1ZDZkY1x1ZDZkZFx1ZDZkZVx1ZDZkZlx1ZDZlMVx1ZDZlMlx1ZDZlM1x1ZDZlNVx1ZDZlNlx1ZDZlN1x1ZDZlOVx1ZDZlYVx1ZDZlYlx1ZDZlY1x1ZDZlZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1ZDZmNlx1ZDZmN1x1ZDZmOFx1ZDZmOVx1ZDZmYVx1ZDZmYlx1ZDZmZVx1ZDZmZlx1ZDcwMVx1ZDcwMlx1ZDcwM1x1ZDcwNVx1ZDcwNlx1ZDcwN1x1ZDcwOFx1ZDcwOVx1''@;'; put 'put ''ZDcwYVx1ZDcwYlx1ZDcwY1x1ZDcwZFx1ZDcwZVx1ZDcwZlx1ZDcxMFx1ZDcxMlx1ZDcxM1x1ZDcxNFx1Y2U1OFx1Y2U1OVx1Y2U1Y1x1Y2U1Zlx1Y2U2MFx1Y2U2MVx1Y2U2OFx1Y2U2OVx1Y2U2Ylx1Y2U2ZFx1Y2U3NFx1Y2U3NVx1Y2U3OFx1Y2U3Y1x1Y2U4NFx1Y2U4NVx1Y2U4N1x1Y2U4''@;'; put 'put ''OVx1Y2U5MFx1Y2U5MVx1Y2U5NFx1Y2U5OFx1Y2VhMFx1Y2VhMVx1Y2VhM1x1Y2VhNFx1Y2VhNVx1Y2VhY1x1Y2VhZFx1Y2VjMVx1Y2VlNFx1Y2VlNVx1Y2VlOFx1Y2VlYlx1Y2VlY1x1Y2VmNFx1Y2VmNVx1Y2VmN1x1Y2VmOFx1Y2VmOVx1Y2YwMFx1Y2YwMVx1Y2YwNFx1Y2YwOFx1Y2YxMFx1''@;'; put 'put ''Y2YxMVx1Y2YxM1x1Y2YxNVx1Y2YxY1x1Y2YyMFx1Y2YyNFx1Y2YyY1x1Y2YyZFx1Y2YyZlx1Y2YzMFx1Y2YzMVx1Y2YzOFx1Y2Y1NFx1Y2Y1NVx1Y2Y1OFx1Y2Y1Y1x1Y2Y2NFx1Y2Y2NVx1Y2Y2N1x1Y2Y2OVx1Y2Y3MFx1Y2Y3MVx1Y2Y3NFx1Y2Y3OFx1Y2Y4MFx1Y2Y4NVx1Y2Y4Y1x1Y2Zh''@;'; put 'put ''MVx1Y2ZhOFx1Y2ZiMFx1Y2ZjNFx1Y2ZlMFx1Y2ZlMVx1Y2ZlNFx1Y2ZlOFx1Y2ZmMFx1Y2ZmMVx1Y2ZmM1x1Y2ZmNVx1Y2ZmY1x1ZDAwMFx1ZDAwNFx1ZDAxMVx1ZDAxOFx1ZDAyZFx1ZDAzNFx1ZDAzNVx1ZDAzOFx1ZDAzY1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5Nl0ubGVuZ3Ro''@;'; put 'put ''OysrbSk2NTUzMyE9PXhbMTk2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTZdW21dXT01MDE3NittLFJbNTAxNzYrbV09eFsxOTZdW21dKTtmb3IoeFsxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3MTVcdWQ3''@;'; put 'put ''MTZcdWQ3MTdcdWQ3MWFcdWQ3MWJcdWQ3MWRcdWQ3MWVcdWQ3MWZcdWQ3MjFcdWQ3MjJcdWQ3MjNcdWQ3MjRcdWQ3MjVcdWQ3MjZcdWQ3MjdcdWQ3MmFcdWQ3MmNcdWQ3MmVcdWQ3MmZcdWQ3MzBcdWQ3MzFcdWQ3MzJcdWQ3MzNcdWQ3MzZcdWQ3MzdcdWQ3MzlcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWQ3M2FcdWQ3M2JcdWQ3M2RcdWQ3M2VcdWQ3M2ZcdWQ3NDBcdWQ3NDFcdWQ3NDJcdWQ3NDNcdWQ3NDVcdWQ3NDZcdWQ3NDhcdWQ3NGFcdWQ3NGJcdWQ3NGNcdWQ3NGRcdWQ3NGVcdWQ3NGZcdWQ3NTJcdWQ3NTNcdWQ3NTVcdWQ3NWFcdWQ3NWJcdWQ3NWNcdWQ3''@;'; put 'put ''NWRcdWQ3NWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ3NWZcdWQ3NjJcdWQ3NjRcdWQ3NjZcdWQ3NjdcdWQ3NjhcdWQ3NmFcdWQ3NmJcdWQ3NmRcdWQ3NmVcdWQ3NmZcdWQ3NzFcdWQ3NzJcdWQ3NzNcdWQ3NzVcdWQ3NzZcdWQ3NzdcdWQ3NzhcdWQ3NzlcdWQ3N2Fc''@;'; put 'put ''dWQ3N2JcdWQ3N2VcdWQ3N2ZcdWQ3ODBcdWQ3ODJcdWQ3ODNcdWQ3ODRcdWQ3ODVcdWQ3ODZcdWQ3ODdcdWQ3OGFcdWQ3OGJcdWQwNDRcdWQwNDVcdWQwNDdcdWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQwNzRcdWQwN2NcdWQwN2RcdWQwODFcdWQw''@;'; put 'put ''YTRcdWQwYTVcdWQwYThcdWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQwZDBcdWQwZDFcdWQwZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRcdWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhc''@;'; put 'put ''dWQxMGRcdWQxMzBcdWQxMzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRcdWQxNTBcdWQxNTRcdWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQxODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQx''@;'; put 'put ''YThcdWQxYjBcdWQxYjFcdWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQyMTBcdWQyMmNcdWQyMmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9''@;'; put 'put ''eFsxOTddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk3XVttXV09NTA0MzIrbSxSWzUwNDMyK21dPXhbMTk3XVttXSk7Zm9yKHhbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVkNzhkXHVkNzhlXHVkNzhmXHVkNzkxXHVkNzkyXHVkNzkzXHVkNzk0XHVkNzk1XHVkNzk2XHVkNzk3XHVkNzlhXHVkNzljXHVkNzllXHVkNzlmXHVkN2EwXHVkN2ExXHVkN2EyXHVkN2EzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVkMjY0XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVk''@;'; put 'put ''MmI4XHVkMmI5XHVkMmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVkMzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2''@;'; put 'put ''XHVkMzFjXHVkMzFkXHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdkXHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVk''@;'; put 'put ''Mzk5XHVkMzljXHVkM2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVkM2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksbT0wO20hPXhbMTk4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOThdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5OF1bbV1dPTUwNjg4K20sUls1MDY4OCttXT14WzE5OF1bbV0pO2Zvcih4WzE5OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZDQwOFx1ZDQxZFx1ZDQ0MFx1ZDQ0NFx1ZDQ1Y1x1ZDQ2MFx1ZDQ2NFx1ZDQ2ZFx1ZDQ2Zlx1ZDQ3OFx1ZDQ3OVx1''@;'; put 'put ''ZDQ3Y1x1ZDQ3Zlx1ZDQ4MFx1ZDQ4Mlx1ZDQ4OFx1ZDQ4OVx1ZDQ4Ylx1ZDQ4ZFx1ZDQ5NFx1ZDRhOVx1ZDRjY1x1ZDRkMFx1ZDRkNFx1ZDRkY1x1ZDRkZlx1ZDRlOFx1ZDRlY1x1ZDRmMFx1ZDRmOFx1ZDRmYlx1ZDRmZFx1ZDUwNFx1ZDUwOFx1ZDUwY1x1ZDUxNFx1ZDUxNVx1ZDUxN1x1ZDUz''@;'; put 'put ''Y1x1ZDUzZFx1ZDU0MFx1ZDU0NFx1ZDU0Y1x1ZDU0ZFx1ZDU0Zlx1ZDU1MVx1ZDU1OFx1ZDU1OVx1ZDU1Y1x1ZDU2MFx1ZDU2NVx1ZDU2OFx1ZDU2OVx1ZDU2Ylx1ZDU2ZFx1ZDU3NFx1ZDU3NVx1ZDU3OFx1ZDU3Y1x1ZDU4NFx1ZDU4NVx1ZDU4N1x1ZDU4OFx1ZDU4OVx1ZDU5MFx1ZDVhNVx1''@;'; put 'put ''ZDVjOFx1ZDVjOVx1ZDVjY1x1ZDVkMFx1ZDVkMlx1ZDVkOFx1ZDVkOVx1ZDVkYlx1ZDVkZFx1ZDVlNFx1ZDVlNVx1ZDVlOFx1ZDVlY1x1ZDVmNFx1ZDVmNVx1ZDVmN1x1ZDVmOVx1ZDYwMFx1ZDYwMVx1ZDYwNFx1ZDYwOFx1ZDYxMFx1ZDYxMVx1ZDYxM1x1ZDYxNFx1ZDYxNVx1ZDYxY1x1ZDYy''@;'; put 'put ''MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTldW21dXT01MDk0NCttLFJbNTA5NDQrbV09eFsxOTldW21dKTtmb3IoeFsyMDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWQ2MjRcdWQ2MmRcdWQ2MzhcdWQ2MzlcdWQ2M2NcdWQ2NDBcdWQ2NDVcdWQ2NDhcdWQ2NDlc''@;'; put 'put ''dWQ2NGJcdWQ2NGRcdWQ2NTFcdWQ2NTRcdWQ2NTVcdWQ2NThcdWQ2NWNcdWQ2NjdcdWQ2NjlcdWQ2NzBcdWQ2NzFcdWQ2NzRcdWQ2ODNcdWQ2ODVcdWQ2OGNcdWQ2OGRcdWQ2OTBcdWQ2OTRcdWQ2OWRcdWQ2OWZcdWQ2YTFcdWQ2YThcdWQ2YWNcdWQ2YjBcdWQ2YjlcdWQ2YmJcdWQ2YzRcdWQ2''@;'; put 'put ''YzVcdWQ2YzhcdWQ2Y2NcdWQ2ZDFcdWQ2ZDRcdWQ2ZDdcdWQ2ZDlcdWQ2ZTBcdWQ2ZTRcdWQ2ZThcdWQ2ZjBcdWQ2ZjVcdWQ2ZmNcdWQ2ZmRcdWQ3MDBcdWQ3MDRcdWQ3MTFcdWQ3MThcdWQ3MTlcdWQ3MWNcdWQ3MjBcdWQ3MjhcdWQ3MjlcdWQ3MmJcdWQ3MmRcdWQ3MzRcdWQ3MzVcdWQ3Mzhc''@;'; put 'put ''dWQ3M2NcdWQ3NDRcdWQ3NDdcdWQ3NDlcdWQ3NTBcdWQ3NTFcdWQ3NTRcdWQ3NTZcdWQ3NTdcdWQ3NThcdWQ3NTlcdWQ3NjBcdWQ3NjFcdWQ3NjNcdWQ3NjVcdWQ3NjlcdWQ3NmNcdWQ3NzBcdWQ3NzRcdWQ3N2NcdWQ3N2RcdWQ3ODFcdWQ3ODhcdWQ3ODlcdWQ3OGNcdWQ3OTBcdWQ3OThcdWQ3''@;'; put 'put ''OTlcdWQ3OWJcdWQ3OWRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjAwXVttXV09NTEyMDArbSxSWzUxMjAwK21dPXhbMjAwXVttXSk7Zm9yKHhbMjAyXT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1''@;'; put 'put ''XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4MmRiXHU4MzA0XHU4ODU3XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2''@;'; put 'put ''YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5XHU2MWM3XHU2M2MwXHU2NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4Mjcx''@;'; put 'put ''XHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1MmQ4XHU1NzRlXHU1ODJhXHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3''@;'; put 'put ''ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjAyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwMl1bbV1dPTUxNzEyK20sUls1MTcxMittXT14WzIwMl1bbV0pO2Zvcih4WzIwM109Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTMyM1x1NWNhY1x1NzUzMlx1ODBkYlx1OTI0''@;'; put 'put ''MFx1OTU5OFx1NTI1Ylx1NTgwOFx1NTlkY1x1NWNhMVx1NWQxN1x1NWViN1x1NWYzYVx1NWY0YVx1NjE3N1x1NmM1Zlx1NzU3YVx1NzU4Nlx1N2NlMFx1N2Q3M1x1N2RiMVx1N2Y4Y1x1ODE1NFx1ODIyMVx1ODU5MVx1ODk0MVx1OGIxYlx1OTJmY1x1OTY0ZFx1OWM0N1x1NGVjYlx1NGVmN1x1''@;'; put 'put ''NTAwYlx1NTFmMVx1NTg0Zlx1NjEzN1x1NjEzZVx1NjE2OFx1NjUzOVx1NjllYVx1NmYxMVx1NzVhNVx1NzY4Nlx1NzZkNlx1N2I4N1x1ODJhNVx1ODRjYlx1ZjkwMFx1OTNhN1x1OTU4Ylx1NTU4MFx1NWJhMlx1NTc1MVx1ZjkwMVx1N2NiM1x1N2ZiOVx1OTFiNVx1NTAyOFx1NTNiYlx1NWM0''@;'; put 'put ''NVx1NWRlOFx1NjJkMlx1NjM2ZVx1NjRkYVx1NjRlN1x1NmUyMFx1NzBhY1x1Nzk1Ylx1OGRkZFx1OGUxZVx1ZjkwMlx1OTA3ZFx1OTI0NVx1OTJmOFx1NGU3ZVx1NGVmNlx1NTA2NVx1NWRmZVx1NWVmYVx1NjEwNlx1Njk1N1x1ODE3MVx1ODY1NFx1OGU0N1x1OTM3NVx1OWEyYlx1NGU1ZVx1''@;'; put 'put ''NTA5MVx1Njc3MFx1Njg0MFx1NTEwOVx1NTI4ZFx1NTI5Mlx1NmFhMlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjAzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDNdW21dXT01MTk2OCttLFJbNTE5NjgrbV09eFsyMDNdW21dKTtmb3Io''@;'; put 'put ''eFsyMDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc3YmNcdTkyMTBcdTll''@;'; put 'put ''ZDRcdTUyYWJcdTYwMmZcdThmZjJcdTUwNDhcdTYxYTlcdTYzZWRcdTY0Y2FcdTY4M2NcdTZhODRcdTZmYzBcdTgxODhcdTg5YTFcdTk2OTRcdTU4MDVcdTcyN2RcdTcyYWNcdTc1MDRcdTdkNzlcdTdlNmRcdTgwYTlcdTg5OGJcdThiNzRcdTkwNjNcdTlkNTFcdTYyODlcdTZjN2FcdTZmNTRc''@;'; put 'put ''dTdkNTBcdTdmM2FcdThhMjNcdTUxN2NcdTYxNGFcdTdiOWRcdThiMTlcdTkyNTdcdTkzOGNcdTRlYWNcdTRmZDNcdTUwMWVcdTUwYmVcdTUxMDZcdTUyYzFcdTUyY2RcdTUzN2ZcdTU3NzBcdTU4ODNcdTVlOWFcdTVmOTFcdTYxNzZcdTYxYWNcdTY0Y2VcdTY1NmNcdTY2NmZcdTY2YmJcdTY2''@;'; put 'put ''ZjRcdTY4OTdcdTZkODdcdTcwODVcdTcwZjFcdTc0OWZcdTc0YTVcdTc0Y2FcdTc1ZDlcdTc4NmNcdTc4ZWNcdTdhZGZcdTdhZjZcdTdkNDVcdTdkOTNcdTgwMTVcdTgwM2ZcdTgxMWJcdTgzOTZcdThiNjZcdThmMTVcdTkwMTVcdTkzZTFcdTk4MDNcdTk4MzhcdTlhNWFcdTliZThcdTRmYzJc''@;'; put 'put ''dTU1NTNcdTU4M2FcdTU5NTFcdTViNjNcdTVjNDZcdTYwYjhcdTYyMTJcdTY4NDJcdTY4YjBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA0XVttXV09NTIyMjQrbSxSWzUyMjI0K21dPXhb''@;'; put 'put ''MjA0XVttXSk7Zm9yKHhbMjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2''@;'; put 'put ''OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRhXHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEw''@;'; put 'put ''XHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3NzdlXHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2''@;'; put 'put ''NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3''@;'; put 'put ''XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5NzhmXHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwNV1bbV1dPTUyNDgwK20s''@;'; put 'put ''Uls1MjQ4MCttXT14WzIwNV1bbV0pO2Zvcih4WzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1NzlkMVx1ODNkM1x1OGE4N1x1OGFiMlx1OGRlOFx1OTA0ZVx1OTM0Ylx1OTg0Nlx1NWVkM1x1NjllOFx1ODVmZlx1OTBlZFx1ZjkwNVx1NTFhMFx1NWI5OFx1NWJlY1x1NjE2M1x1NjhmYVx1NmIzZVx1NzA0Y1x1NzQyZlx1NzRkOFx1N2JhMVx1N2Y1MFx1ODNjNVx1ODlj''@;'; put 'put ''MFx1OGNhYlx1OTVkY1x1OTkyOFx1NTIyZVx1NjA1ZFx1NjJlY1x1OTAwMlx1NGY4YVx1NTE0OVx1NTMyMVx1NThkOVx1NWVlM1x1NjZlMFx1NmQzOFx1NzA5YVx1NzJjMlx1NzNkNlx1N2I1MFx1ODBmMVx1OTQ1Ylx1NTM2Nlx1NjM5Ylx1N2Y2Ylx1NGU1Nlx1NTA4MFx1NTg0YVx1NThkZVx1''@;'; put 'put ''NjAyYVx1NjEyN1x1NjJkMFx1NjlkMFx1OWI0MVx1NWI4Zlx1N2QxOFx1ODBiMVx1OGY1Zlx1NGVhNFx1NTBkMVx1NTRhY1x1NTVhY1x1NWIwY1x1NWRhMFx1NWRlN1x1NjUyYVx1NjU0ZVx1NjgyMVx1NmE0Ylx1NzJlMVx1NzY4ZVx1NzdlZlx1N2Q1ZVx1N2ZmOVx1ODFhMFx1ODU0ZVx1ODZk''@;'; put 'put ''Zlx1OGYwM1x1OGY0ZVx1OTBjYVx1OTkwM1x1OWE1NVx1OWJhYlx1NGUxOFx1NGU0NVx1NGU1ZFx1NGVjN1x1NGZmMVx1NTE3N1x1NTJmZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDZd''@;'; put 'put ''W21dXT01MjczNittLFJbNTI3MzYrbV09eFsyMDZdW21dKTtmb3IoeFsyMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUzNDBcdTUzZTNcdTUzZTVcdTU0OGVcdTU2MTRcdTU3NzVcdTU3YTJcdTViYzdcdTVkODdcdTVlZDBcdTYxZmNcdTYyZDhcdTY1NTFcdTY3YjhcdTY3ZTlcdTY5Y2JcdTZiNTBcdTZiYzZcdTZiZWNcdTZjNDJcdTZlOWRcdTcwNzhcdTcyZDdcdTcz''@;'; put 'put ''OTZcdTc0MDNcdTc3YmZcdTc3ZTlcdTdhNzZcdTdkN2ZcdTgwMDlcdTgxZmNcdTgyMDVcdTgyMGFcdTgyZGZcdTg4NjJcdThiMzNcdThjZmNcdThlYzBcdTkwMTFcdTkwYjFcdTkyNjRcdTkyYjZcdTk5ZDJcdTlhNDVcdTljZTlcdTlkZDdcdTlmOWNcdTU3MGJcdTVjNDBcdTgzY2FcdTk3YTBc''@;'; put 'put ''dTk3YWJcdTllYjRcdTU0MWJcdTdhOThcdTdmYTRcdTg4ZDlcdThlY2RcdTkwZTFcdTU4MDBcdTVjNDhcdTYzOThcdTdhOWZcdTViYWVcdTVmMTNcdTdhNzlcdTdhYWVcdTgyOGVcdThlYWNcdTUwMjZcdTUyMzhcdTUyZjhcdTUzNzdcdTU3MDhcdTYyZjNcdTYzNzJcdTZiMGFcdTZkYzNcdTc3''@;'; put 'put ''MzdcdTUzYTVcdTczNTdcdTg1NjhcdThlNzZcdTk1ZDVcdTY3M2FcdTZhYzNcdTZmNzBcdThhNmRcdThlY2NcdTk5NGJcdWY5MDZcdTY2NzdcdTZiNzhcdThjYjRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwN11bbV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG9lW3hbMjA3XVttXV09NTI5OTIrbSxSWzUyOTkyK21dPXhbMjA3XVttXSk7Zm9yKHhbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYwXHU4''@;'; put 'put ''M2NjXHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0ZWNh''@;'; put 'put ''XHU1OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2XHU1''@;'; put 'put ''MTgwXHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2NWUzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDhdW21d''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwOF1bbV1dPTUzMjQ4K20sUls1MzI0OCttXT14WzIwOF1bbV0pO2Zvcih4WzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjcxZVx1NjcxZlx1Njc1ZVx1NjhjYlx1NjhjNFx1NmE1Zlx1NmIzYVx1NmMyM1x1NmM3ZFx1NmM4Mlx1NmRjN1x1NzM5OFx1NzQyNlx1NzQyYVx1NzQ4Mlx1NzRhM1x1NzU3OFx1NzU3Zlx1Nzg4MVx1''@;'; put 'put ''NzhlZlx1Nzk0MVx1Nzk0N1x1Nzk0OFx1Nzk3YVx1N2I5NVx1N2QwMFx1N2RiYVx1N2Y4OFx1ODAwNlx1ODAyZFx1ODA4Y1x1OGExOFx1OGI0Zlx1OGM0OFx1OGQ3N1x1OTMyMVx1OTMyNFx1OThlMlx1OTk1MVx1OWEwZVx1OWEwZlx1OWE2NVx1OWU5Mlx1N2RjYVx1NGY3Nlx1NTQwOVx1NjJl''@;'; put 'put ''ZVx1Njg1NFx1OTFkMVx1NTVhYlx1NTEzYVx1ZjkwYlx1ZjkwY1x1NWExY1x1NjFlNlx1ZjkwZFx1NjJjZlx1NjJmZlx1ZjkwZVx1ZjkwZlx1ZjkxMFx1ZjkxMVx1ZjkxMlx1ZjkxM1x1OTBhM1x1ZjkxNFx1ZjkxNVx1ZjkxNlx1ZjkxN1x1ZjkxOFx1OGFmZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1''@;'; put 'put ''ZjkxY1x1NjY5Nlx1ZjkxZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwOV0ubGVuZ3RoOysrbSk2NTUz''@;'; put 'put ''MyE9PXhbMjA5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDldW21dXT01MzUwNCttLFJbNTM1MDQrbV09eFsyMDldW21dKTtmb3IoeFsyMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdkMGRcdWY5MjZcdWY5MjdcdTg4NzJcdTU2Y2FcdTVhMThcdWY5MjhcdWY5MjlcdWY5MmFcdWY5MmJcdWY5MmNcdTRlNDNcdWY5MmRcdTUxNjdcdTU5NDhcdTY3ZjBcdTgwMTBc''@;'; put 'put ''dWY5MmVcdTU5NzNcdTVlNzRcdTY0OWFcdTc5Y2FcdTVmZjVcdTYwNmNcdTYyYzhcdTYzN2JcdTViZTdcdTViZDdcdTUyYWFcdWY5MmZcdTU5NzRcdTVmMjlcdTYwMTJcdWY5MzBcdWY5MzFcdWY5MzJcdTc0NTlcdWY5MzNcdWY5MzRcdWY5MzVcdWY5MzZcdWY5MzdcdWY5MzhcdTk5ZDFcdWY5''@;'; put 'put ''MzlcdWY5M2FcdWY5M2JcdWY5M2NcdWY5M2RcdWY5M2VcdWY5M2ZcdWY5NDBcdWY5NDFcdWY5NDJcdWY5NDNcdTZmYzNcdWY5NDRcdWY5NDVcdTgxYmZcdThmYjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGFcdWY5NGJcdWY5NGNcdWY5NGRcdWY5NGVc''@;'; put 'put ''dWY5NGZcdWY5NTBcdWY5NTFcdTVhZTlcdThhMjVcdTY3N2JcdTdkMTBcdWY5NTJcdWY5NTNcdWY5NTRcdWY5NTVcdWY5NTZcdWY5NTdcdTgwZmRcdWY5NThcdWY5NTlcdTVjM2NcdTZjZTVcdTUzM2ZcdTZlYmFcdTU5MWFcdTgzMzZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTBdLmxl''@;'; put 'put ''bmd0aDsrK20pNjU1MzMhPT14WzIxMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjEwXVttXV09NTM3NjArbSxSWzUzNzYwK21dPXhbMjEwXVttXSk7Zm9yKHhbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3YzFl''@;'; put 'put ''XHU3ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFmXHU2''@;'; put 'put ''YzkzXHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4MWZh''@;'; put 'put ''XHU4ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzXHVmZmZkIi5zcGxpdCgiIiksbT0w''@;'; put 'put ''O20hPXhbMjExXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxMV1bbV1dPTU0MDE2K20sUls1NDAxNittXT14WzIxMV1bbV0pO2Zvcih4WzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjhmOVx1NmFjMlx1NmRkOFx1NmUyMVx1NmVkNFx1NmZlNFx1NzFmZVx1NzZkY1x1Nzc3OVx1NzliMVx1N2EzYlx1ODQwNFx1ODlh''@;'; put 'put ''OVx1OGNlZFx1OGRmM1x1OGU0OFx1OTAwM1x1OTAxNFx1OTA1M1x1OTBmZFx1OTM0ZFx1OTY3Nlx1OTdkY1x1NmJkMlx1NzAwNlx1NzI1OFx1NzJhMlx1NzM2OFx1Nzc2M1x1NzliZlx1N2JlNFx1N2U5Ylx1OGI4MFx1NThhOVx1NjBjN1x1NjU2Nlx1NjVmZFx1NjZiZVx1NmM4Y1x1NzExZVx1''@;'; put 'put ''NzFjOVx1OGM1YVx1OTgxM1x1NGU2ZFx1N2E4MVx1NGVkZFx1NTFhY1x1NTFjZFx1NTJkNVx1NTQwY1x1NjFhN1x1Njc3MVx1Njg1MFx1NjhkZlx1NmQxZVx1NmY3Y1x1NzViY1x1NzdiM1x1N2FlNVx1ODBmNFx1ODQ2M1x1OTI4NVx1NTE1Y1x1NjU5N1x1Njc1Y1x1Njc5M1x1NzVkOFx1N2Fj''@;'; put 'put ''N1x1ODM3M1x1Zjk1YVx1OGM0Nlx1OTAxN1x1OTgyZFx1NWM2Zlx1ODFjMFx1ODI5YVx1OTA0MVx1OTA2Zlx1OTIwZFx1NWY5N1x1NWQ5ZFx1NmE1OVx1NzFjOFx1NzY3Ylx1N2I0OVx1ODVlNFx1OGIwNFx1OTEyN1x1OWEzMFx1NTU4N1x1NjFmNlx1Zjk1Ylx1NzY2OVx1N2Y4NVx1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLG09MDttIT14WzIxMl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTJdW21dXT01NDI3MittLFJbNTQyNzIrbV09eFsyMTJdW21dKTtmb3IoeFsyMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2M2ZcdTg3YmFcdTg4ZjhcdTkwOGZcdWY5NWNcdTZkMWJcdTcwZDlcdTczZGVcdTdkNjFcdTg0M2RcdWY5''@;'; put 'put ''NWRcdTkxNmFcdTk5ZjFcdWY5NWVcdTRlODJcdTUzNzVcdTZiMDRcdTZiMTJcdTcwM2VcdTcyMWJcdTg2MmRcdTllMWVcdTUyNGNcdThmYTNcdTVkNTBcdTY0ZTVcdTY1MmNcdTZiMTZcdTZmZWJcdTdjNDNcdTdlOWNcdTg1Y2RcdTg5NjRcdTg5YmRcdTYyYzlcdTgxZDhcdTg4MWZcdTVlY2Fc''@;'; put 'put ''dTY3MTdcdTZkNmFcdTcyZmNcdTc0MDVcdTc0NmZcdTg3ODJcdTkwZGVcdTRmODZcdTVkMGRcdTVmYTBcdTg0MGFcdTUxYjdcdTYzYTBcdTc1NjVcdTRlYWVcdTUwMDZcdTUxNjlcdTUxYzlcdTY4ODFcdTZhMTFcdTdjYWVcdTdjYjFcdTdjZTdcdTgyNmZcdThhZDJcdThmMWJcdTkxY2ZcdTRm''@;'; put 'put ''YjZcdTUxMzdcdTUyZjVcdTU0NDJcdTVlZWNcdTYxNmVcdTYyM2VcdTY1YzVcdTZhZGFcdTZmZmVcdTc5MmFcdTg1ZGNcdTg4MjNcdTk1YWRcdTlhNjJcdTlhNmFcdTllOTdcdTllY2VcdTUyOWJcdTY2YzZcdTZiNzdcdTcwMWRcdTc5MmJcdThmNjJcdTk3NDJcdTYxOTBcdTYyMDBcdTY1MjNc''@;'; put 'put ''dTZmMjNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxM11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjEzXVttXV09NTQ1MjgrbSxSWzU0NTI4K21dPXhbMjEzXVttXSk7Zm9yKHhbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MTQ5XHU3NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1''@;'; put 'put ''MWJkXHU1MjE3XHU1MmEzXHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJkXHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4''@;'; put 'put ''XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3''@;'; put 'put ''ZGEwXHU4M2M5XHU5MzA0XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQy''@;'; put 'put ''XHU3N2FkXHU4MDRhXHU4NGZjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxNF1bbV1dPTU0Nzg0K20sUls1NDc4NCttXT14WzIxNF1bbV0pO2Zvcih4WzIxNV09Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTA3Y1x1OWIyN1x1OWY4ZFx1NThkOFx1NWE0MVx1NWM2Mlx1''@;'; put 'put ''NmExM1x1NmRkYVx1NmYwZlx1NzYzYlx1N2QyZlx1N2UzN1x1ODUxZVx1ODkzOFx1OTNlNFx1OTY0Ylx1NTI4OVx1NjVkMlx1NjdmM1x1NjliNFx1NmQ0MVx1NmU5Y1x1NzAwZlx1NzQwOVx1NzQ2MFx1NzU1OVx1NzYyNFx1Nzg2Ylx1OGIyY1x1OTg1ZVx1NTE2ZFx1NjIyZVx1OTY3OFx1NGY5''@;'; put 'put ''Nlx1NTAyYlx1NWQxOVx1NmRlYVx1N2RiOFx1OGYyYVx1NWY4Ylx1NjE0NFx1NjgxN1x1Zjk2MVx1OTY4Nlx1NTJkMlx1ODA4Ylx1NTFkY1x1NTFjY1x1Njk1ZVx1N2ExY1x1N2RiZVx1ODNmMVx1OTY3NVx1NGZkYVx1NTIyOVx1NTM5OFx1NTQwZlx1NTUwZVx1NWM2NVx1NjBhN1x1Njc0ZVx1''@;'; put 'put ''NjhhOFx1NmQ2Y1x1NzI4MVx1NzJmOFx1NzQwNlx1NzQ4M1x1Zjk2Mlx1NzVlMlx1N2M2Y1x1N2Y3OVx1N2ZiOFx1ODM4OVx1ODhjZlx1ODhlMVx1OTFjY1x1OTFkMFx1OTZlMlx1OWJjOVx1NTQxZFx1NmY3ZVx1NzFkMFx1NzQ5OFx1ODVmYVx1OGVhYVx1OTZhM1x1OWM1N1x1OWU5Zlx1Njc5''@;'; put 'put ''N1x1NmRjYlx1NzQzM1x1ODFlOFx1OTcxNlx1NzgyY1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxNV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTVdW21dXT01NTA0MCttLFJbNTUwNDArbV09eFsyMTVdW21dKTtmb3IoeFsyMTZdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhY2JcdTdiMjBcdTdjOTJcdTY0Njlc''@;'; put 'put ''dTc0NmFcdTc1ZjJcdTc4YmNcdTc4ZThcdTk5YWNcdTliNTRcdTllYmJcdTViZGVcdTVlNTVcdTZmMjBcdTgxOWNcdTgzYWJcdTkwODhcdTRlMDdcdTUzNGRcdTVhMjlcdTVkZDJcdTVmNGVcdTYxNjJcdTYzM2RcdTY2NjlcdTY2ZmNcdTZlZmZcdTZmMmJcdTcwNjNcdTc3OWVcdTg0MmNcdTg1''@;'; put 'put ''MTNcdTg4M2JcdThmMTNcdTk5NDVcdTljM2JcdTU1MWNcdTYyYjlcdTY3MmJcdTZjYWJcdTgzMDlcdTg5NmFcdTk3N2FcdTRlYTFcdTU5ODRcdTVmZDhcdTVmZDlcdTY3MWJcdTdkYjJcdTdmNTRcdTgyOTJcdTgzMmJcdTgzYmRcdThmMWVcdTkwOTlcdTU3Y2JcdTU5YjlcdTVhOTJcdTViZDBc''@;'; put 'put ''dTY2MjdcdTY3OWFcdTY4ODVcdTZiY2ZcdTcxNjRcdTdmNzVcdThjYjdcdThjZTNcdTkwODFcdTliNDVcdTgxMDhcdThjOGFcdTk2NGNcdTlhNDBcdTllYTVcdTViNWZcdTZjMTNcdTczMWJcdTc2ZjJcdTc2ZGZcdTg0MGNcdTUxYWFcdTg5OTNcdTUxNGRcdTUxOTVcdTUyYzlcdTY4YzlcdTZj''@;'; put 'put ''OTRcdTc3MDRcdTc3MjBcdTdkYmZcdTdkZWNcdTk3NjJcdTllYjVcdTZlYzVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxNl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE2XVttXV09NTUyOTYrbSxSWzU1Mjk2K21dPXhbMjE2XVttXSk7''@;'; put 'put ''Zm9yKHhbMjE3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NTExXHU1MWE1''@;'; put 'put ''XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0XHU4ODgyXHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2''@;'; put 'put ''YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3MjY3XHU3NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRm''@;'; put 'put ''XHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3XHU2NGFiXHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4''@;'; put 'put ''Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxN11bbV1dPTU1NTUyK20sUls1NTU1Mitt''@;'; put 'put ''XT14WzIxN11bbV0pO2Zvcih4WzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NmM3Nlx1N2QwYVx1N2QwYlx1ODA1ZVx1ODY4YVx1OTU4MFx1OTZlZlx1NTJmZlx1NmM5NVx1NzI2OVx1NTQ3M1x1NWE5YVx1NWMzZVx1NWQ0Ylx1NWY0Y1x1NWZhZVx1NjcyYVx1NjhiNlx1Njk2M1x1NmUzY1x1NmU0NFx1NzcwOVx1N2M3M1x1N2Y4ZVx1ODU4N1x1OGIwZVx1OGZmN1x1''@;'; put 'put ''OTc2MVx1OWVmNFx1NWNiN1x1NjBiNlx1NjEwZFx1NjFhYlx1NjU0Zlx1NjVmYlx1NjVmY1x1NmMxMVx1NmNlZlx1NzM5Zlx1NzNjOVx1N2RlMVx1OTU5NFx1NWJjNlx1ODcxY1x1OGIxMFx1NTI1ZFx1NTM1YVx1NjJjZFx1NjQwZlx1NjRiMlx1NjczNFx1NmEzOFx1NmNjYVx1NzNjMFx1NzQ5''@;'; put 'put ''ZVx1N2I5NFx1N2M5NVx1N2UxYlx1ODE4YVx1ODIzNlx1ODU4NFx1OGZlYlx1OTZmOVx1OTljMVx1NGYzNFx1NTM0YVx1NTNjZFx1NTNkYlx1NjJjY1x1NjQyY1x1NjUwMFx1NjU5MVx1NjljM1x1NmNlZVx1NmY1OFx1NzNlZFx1NzU1NFx1NzYyMlx1NzZlNFx1NzZmY1x1NzhkMFx1NzhmYlx1''@;'; put 'put ''NzkyY1x1N2Q0Nlx1ODIyY1x1ODdlMFx1OGZkNFx1OTgxMlx1OThlZlx1NTJjM1x1NjJkNFx1NjRhNVx1NmUyNFx1NmY1MVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxOF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMThdW21dXT01NTgw''@;'; put 'put ''OCttLFJbNTU4MDgrbV09eFsyMThdW21dKTtmb3IoeFsyMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTc2N2NcdThkY2JcdTkxYjFcdTkyNjJcdTlhZWVcdTliNDNcdTUwMjNcdTUwOGRcdTU3NGFcdTU5YThcdTVjMjhcdTVlNDdcdTVmNzdcdTYyM2ZcdTY1M2VcdTY1YjlcdTY1YzFcdTY2MDlcdTY3OGJcdTY5OWNcdTZlYzJcdTc4YzVcdTdkMjFcdTgwYWFcdTgxODBc''@;'; put 'put ''dTgyMmJcdTgyYjNcdTg0YTFcdTg2OGNcdThhMmFcdThiMTdcdTkwYTZcdTk2MzJcdTlmOTBcdTUwMGRcdTRmZjNcdWY5NjNcdTU3ZjlcdTVmOThcdTYyZGNcdTYzOTJcdTY3NmZcdTZlNDNcdTcxMTlcdTc2YzNcdTgwY2NcdTgwZGFcdTg4ZjRcdTg4ZjVcdTg5MTlcdThjZTBcdThmMjlcdTkx''@;'; put 'put ''NGRcdTk2NmFcdTRmMmZcdTRmNzBcdTVlMWJcdTY3Y2ZcdTY4MjJcdTc2N2RcdTc2N2VcdTliNDRcdTVlNjFcdTZhMGFcdTcxNjlcdTcxZDRcdTc1NmFcdWY5NjRcdTdlNDFcdTg1NDNcdTg1ZTlcdTk4ZGNcdTRmMTBcdTdiNGZcdTdmNzBcdTk1YTVcdTUxZTFcdTVlMDZcdTY4YjVcdTZjM2Vc''@;'; put 'put ''dTZjNGVcdTZjZGJcdTcyYWZcdTdiYzRcdTgzMDNcdTZjZDVcdTc0M2FcdTUwZmJcdTUyODhcdTU4YzFcdTY0ZDhcdTZhOTdcdTc0YTdcdTc2NTZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTldLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxOV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hb''@;'; put 'put ''MjE5XVttXV09NTYwNjQrbSxSWzU2MDY0K21dPXhbMjE5XVttXSk7Zm9yKHhbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OGE3XHU4NjE3XHU5NWUyXHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0''@;'; put 'put ''XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1''@;'; put 'put ''MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJmXHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJi''@;'; put 'put ''XHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjIwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjBdW21dLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihvZVt4WzIyMF1bbV1dPTU2MzIwK20sUls1NjMyMCttXT14WzIyMF1bbV0pO2Zvcih4WzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWI1YVx1NWI3NVx1NWJjY1x1NWU5Y1x1Zjk2Nlx1NjI3Nlx1NjU3N1x1NjVhN1x1NmQ2ZVx1NmVhNVx1NzIzNlx1N2IyNlx1N2MzZlx1N2YzNlx1ODE1MFx1ODE1MVx1ODE5YVx1ODI0MFx1ODI5OVx1ODNhOVx1OGEw''@;'; put 'put ''M1x1OGNhMFx1OGNlNlx1OGNmYlx1OGQ3NFx1OGRiYVx1OTBlOFx1OTFkY1x1OTYxY1x1OTY0NFx1OTlkOVx1OWNlN1x1NTMxN1x1NTIwNlx1NTQyOVx1NTY3NFx1NThiM1x1NTk1NFx1NTk2ZVx1NWZmZlx1NjFhNFx1NjI2ZVx1NjYxMFx1NmM3ZVx1NzExYVx1NzZjNlx1N2M4OVx1N2NkZVx1''@;'; put 'put ''N2QxYlx1ODJhY1x1OGNjMVx1OTZmMFx1Zjk2N1x1NGY1Ylx1NWYxN1x1NWY3Zlx1NjJjMlx1NWQyOVx1NjcwYlx1NjhkYVx1Nzg3Y1x1N2U0M1x1OWQ2Y1x1NGUxNVx1NTA5OVx1NTMxNVx1NTMyYVx1NTM1MVx1NTk4M1x1NWE2Mlx1NWU4N1x1NjBiMlx1NjE4YVx1NjI0OVx1NjI3OVx1NjU5''@;'; put 'put ''MFx1Njc4N1x1NjlhN1x1NmJkNFx1NmJkNlx1NmJkN1x1NmJkOFx1NmNiOFx1Zjk2OFx1NzQzNVx1NzVmYVx1NzgxMlx1Nzg5MVx1NzlkNVx1NzlkOFx1N2M4M1x1N2RjYlx1N2ZlMVx1ODBhNVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjIx''@;'; put 'put ''XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjFdW21dXT01NjU3NittLFJbNTY1NzYrbV09eFsyMjFdW21dKTtmb3IoeFsyMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxM2VcdTgxYzJcdTgzZjJcdTg3MWFcdTg4ZThcdThhYjlcdThiNmNcdThjYmJcdTkxMTlcdTk3NWVcdTk4ZGJcdTlmM2JcdTU2YWNcdTViMmFcdTVmNmNcdTY1OGNcdTZhYjNcdTZiYWZcdTZk''@;'; put 'put ''NWNcdTZmZjFcdTcwMTVcdTcyNWRcdTczYWRcdThjYTdcdThjZDNcdTk4M2JcdTYxOTFcdTZjMzdcdTgwNThcdTlhMDFcdTRlNGRcdTRlOGJcdTRlOWJcdTRlZDVcdTRmM2FcdTRmM2NcdTRmN2ZcdTRmZGZcdTUwZmZcdTUzZjJcdTUzZjhcdTU1MDZcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5NjJc''@;'; put 'put ''dTVhMTFcdTViZWJcdTViZmFcdTVjMDRcdTVkZjNcdTVlMmJcdTVmOTlcdTYwMWRcdTYzNjhcdTY1OWNcdTY1YWZcdTY3ZjZcdTY3ZmJcdTY4YWRcdTZiN2JcdTZjOTlcdTZjZDdcdTZlMjNcdTcwMDlcdTczNDVcdTc4MDJcdTc5M2VcdTc5NDBcdTc5NjBcdTc5YzFcdTdiZTlcdTdkMTdcdTdk''@;'; put 'put ''NzJcdTgwODZcdTgyMGRcdTgzOGVcdTg0ZDFcdTg2YzdcdTg4ZGZcdThhNTBcdThhNWVcdThiMWRcdThjZGNcdThkNjZcdThmYWRcdTkwYWFcdTk4ZmNcdTk5ZGZcdTllOWRcdTUyNGFcdWY5NjlcdTY3MTRcdWY5NmFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjJdLmxlbmd0aDsrK20p''@;'; put 'put ''NjU1MzMhPT14WzIyMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIyXVttXV09NTY4MzIrbSxSWzU2ODMyK21dPXhbMjIyXVttXSk7Zm9yKHhbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4''@;'; put 'put ''NWE5XHU0ZTA5XHVmOTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYz''@;'; put 'put ''XHU2ODUxXHU2YTYxXHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVm''@;'; put 'put ''OTZkXHU3YjE5XHU1ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjIz''@;'; put 'put ''XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyM11bbV1dPTU3MDg4K20sUls1NzA4OCttXT14WzIyM11bbV0pO2Zvcih4WzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODBlNVx1ODIxMlx1ODVhZlx1ODk3Zlx1OGE5M1x1OTAxZFx1OTJlNFx1OWVjZFx1OWYyMFx1NTkxNVx1NTk2ZFx1NWUyZFx1NjBkY1x1NjYxNFx1''@;'; put 'put ''NjY3M1x1Njc5MFx1NmM1MFx1NmRjNVx1NmY1Zlx1NzdmM1x1NzhhOVx1ODRjNlx1OTFjYlx1OTMyYlx1NGVkOVx1NTBjYVx1NTE0OFx1NTU4NFx1NWIwYlx1NWJhM1x1NjI0N1x1NjU3ZVx1NjVjYlx1NmUzMlx1NzE3ZFx1NzQwMVx1NzQ0NFx1NzQ4N1x1NzRiZlx1NzY2Y1x1NzlhYVx1N2Rk''@;'; put 'put ''YVx1N2U1NVx1N2ZhOFx1ODE3YVx1ODFiM1x1ODIzOVx1ODYxYVx1ODdlY1x1OGE3NVx1OGRlM1x1OTA3OFx1OTI5MVx1OTQyNVx1OTk0ZFx1OWJhZVx1NTM2OFx1NWM1MVx1Njk1NFx1NmNjNFx1NmQyOVx1NmUyYlx1ODIwY1x1ODU5Ylx1ODkzYlx1OGEyZFx1OGFhYVx1OTZlYVx1OWY2N1x1''@;'; put 'put ''NTI2MVx1NjZiOVx1NmJiMlx1N2U5Nlx1ODdmZVx1OGQwZFx1OTU4M1x1OTY1ZFx1NjUxZFx1NmQ4OVx1NzFlZVx1Zjk2ZVx1NTdjZVx1NTlkM1x1NWJhY1x1NjAyN1x1NjBmYVx1NjIxMFx1NjYxZlx1NjY1Zlx1NzMyOVx1NzNmOVx1NzZkYlx1NzcwMVx1N2I2Y1x1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LG09MDttIT14WzIyNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjRdW21dXT01NzM0NCttLFJbNTczNDQrbV09eFsyMjRdW21dKTtmb3IoeFsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwNTZcdTgwNzJcdTgxNjVcdThhYTBcdTkxOTJcdTRlMTZcdTUyZTJcdTZiNzJcdTZkMTdcdTdhMDVcdTdiMzlcdTdkMzBc''@;'; put 'put ''dWY5NmZcdThjYjBcdTUzZWNcdTU2MmZcdTU4NTFcdTViYjVcdTVjMGZcdTVjMTFcdTVkZTJcdTYyNDBcdTYzODNcdTY0MTRcdTY2MmRcdTY4YjNcdTZjYmNcdTZkODhcdTZlYWZcdTcwMWZcdTcwYTRcdTcxZDJcdTc1MjZcdTc1OGZcdTc1OGVcdTc2MTlcdTdiMTFcdTdiZTBcdTdjMmJcdTdk''@;'; put 'put ''MjBcdTdkMzlcdTg1MmNcdTg1NmRcdTg2MDdcdThhMzRcdTkwMGRcdTkwNjFcdTkwYjVcdTkyYjdcdTk3ZjZcdTlhMzdcdTRmZDdcdTVjNmNcdTY3NWZcdTZkOTFcdTdjOWZcdTdlOGNcdThiMTZcdThkMTZcdTkwMWZcdTViNmJcdTVkZmRcdTY0MGRcdTg0YzBcdTkwNWNcdTk4ZTFcdTczODdc''@;'; put 'put ''dTViOGJcdTYwOWFcdTY3N2VcdTZkZGVcdThhMWZcdThhYTZcdTkwMDFcdTk4MGNcdTUyMzdcdWY5NzBcdTcwNTFcdTc4OGVcdTkzOTZcdTg4NzBcdTkxZDdcdTRmZWVcdTUzZDdcdTU1ZmRcdTU2ZGFcdTU3ODJcdTU4ZmRcdTVhYzJcdTViODhcdTVjYWJcdTVjYzBcdTVlMjVcdTYxMDFcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI1XVttXV09NTc2MDArbSxSWzU3NjAwK21dPXhbMjI1XVttXSk7Zm9yKHhbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5''@;'; put 'put ''XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5''@;'; put 'put ''MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQy''@;'; put 'put ''XHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1''@;'; put 'put ''ZDA3XHU1ZDI3XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyNl1bbV1dPTU3ODU2K20sUls1Nzg1NittXT14WzIyNl1bbV0pO2Zvcih4WzIyN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWQ2OVx1NzQ1Zlx1ODE5ZFx1ODc2OFx1NmZkNVx1NjJmZVx1N2ZkMlx1ODkz''@;'; put 'put ''Nlx1ODk3Mlx1NGUxZVx1NGU1OFx1NTBlN1x1NTJkZFx1NTM0N1x1NjI3Zlx1NjYwN1x1N2U2OVx1ODgwNVx1OTY1ZVx1NGY4ZFx1NTMxOVx1NTYzNlx1NTljYlx1NWFhNFx1NWMzOFx1NWM0ZVx1NWM0ZFx1NWUwMlx1NWYxMVx1NjA0M1x1NjViZFx1NjYyZlx1NjY0Mlx1NjdiZVx1NjdmNFx1''@;'; put 'put ''NzMxY1x1NzdlMlx1NzkzYVx1N2ZjNVx1ODQ5NFx1ODRjZFx1ODk5Nlx1OGE2Nlx1OGE2OVx1OGFlMVx1OGM1NVx1OGM3YVx1NTdmNFx1NWJkNFx1NWYwZlx1NjA2Zlx1NjJlZFx1NjkwZFx1NmI5Nlx1NmU1Y1x1NzE4NFx1N2JkMlx1ODc1NVx1OGI1OFx1OGVmZVx1OThkZlx1OThmZVx1NGYz''@;'; put 'put ''OFx1NGY4MVx1NGZlMVx1NTQ3Ylx1NWEyMFx1NWJiOFx1NjEzY1x1NjViMFx1NjY2OFx1NzFmY1x1NzUzM1x1Nzk1ZVx1N2QzM1x1ODE0ZVx1ODFlM1x1ODM5OFx1ODVhYVx1ODVjZVx1ODcwM1x1OGEwYVx1OGVhYlx1OGY5Ylx1Zjk3MVx1OGZjNVx1NTkzMVx1NWJhNFx1NWJlNlx1NjA4OVx1''@;'; put 'put ''NWJlOVx1NWMwYlx1NWZjM1x1NmM4MVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjddW21dXT01ODExMittLFJbNTgxMTIrbV09eFsyMjddW21dKTtmb3IoeFsyMjhdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5NzJcdTZkZjFcdTcwMGJcdTc1MWFcdTgyYWZcdThh''@;'; put 'put ''ZjZcdTRlYzBcdTUzNDFcdWY5NzNcdTk2ZDlcdTZjMGZcdTRlOWVcdTRmYzRcdTUxNTJcdTU1NWVcdTVhMjVcdTVjZThcdTYyMTFcdTcyNTlcdTgyYmRcdTgzYWFcdTg2ZmVcdTg4NTlcdThhMWRcdTk2M2ZcdTk2YzVcdTk5MTNcdTlkMDlcdTlkNWRcdTU4MGFcdTVjYjNcdTVkYmRcdTVlNDRc''@;'; put 'put ''dTYwZTFcdTYxMTVcdTYzZTFcdTZhMDJcdTZlMjVcdTkxMDJcdTkzNTRcdTk4NGVcdTljMTBcdTlmNzdcdTViODlcdTVjYjhcdTYzMDlcdTY2NGZcdTY4NDhcdTc3M2NcdTk2YzFcdTk3OGRcdTk4NTRcdTliOWZcdTY1YTFcdThiMDFcdThlY2JcdTk1YmNcdTU1MzVcdTVjYTlcdTVkZDZcdTVl''@;'; put 'put ''YjVcdTY2OTdcdTc2NGNcdTgzZjRcdTk1YzdcdTU4ZDNcdTYyYmNcdTcyY2VcdTlkMjhcdTRlZjBcdTU5MmVcdTYwMGZcdTY2M2JcdTZiODNcdTc5ZTdcdTlkMjZcdTUzOTNcdTU0YzBcdTU3YzNcdTVkMTZcdTYxMWJcdTY2ZDZcdTZkYWZcdTc4OGRcdTgyN2VcdTk2OThcdTk3NDRcdTUzODRc''@;'; put 'put ''dTYyN2NcdTYzOTZcdTZkYjJcdTdlMGFcdTgxNGJcdTk4NGRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI4XVttXV09NTgzNjgrbSxSWzU4MzY4K21dPXhbMjI4XVttXSk7Zm9yKHhbMjI5''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5''@;'; put 'put ''ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5''@;'; put 'put ''XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2''@;'; put 'put ''ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZk''@;'; put 'put ''XHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyOV1bbV1dPTU4NjI0K20sUls1ODYyNCttXT14WzIyOV1b''@;'; put 'put ''bV0pO2Zvcih4WzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Zjk4M1x1''@;'; put 'put ''NmI1Zlx1NmM1ZFx1Zjk4NFx1NzRiNVx1NzkxNlx1Zjk4NVx1ODIwN1x1ODI0NVx1ODMzOVx1OGYzZlx1OGY1ZFx1Zjk4Nlx1OTkxOFx1Zjk4N1x1Zjk4OFx1Zjk4OVx1NGVhNlx1Zjk4YVx1NTdkZlx1NWY3OVx1NjYxM1x1Zjk4Ylx1Zjk4Y1x1NzVhYlx1N2U3OVx1OGI2Zlx1Zjk4ZFx1OTAw''@;'; put 'put ''Nlx1OWE1Ylx1NTZhNVx1NTgyN1x1NTlmOFx1NWExZlx1NWJiNFx1Zjk4ZVx1NWVmNlx1Zjk4Zlx1Zjk5MFx1NjM1MFx1NjMzYlx1Zjk5MVx1NjkzZFx1NmM4N1x1NmNiZlx1NmQ4ZVx1NmQ5M1x1NmRmNVx1NmYxNFx1Zjk5Mlx1NzBkZlx1NzEzNlx1NzE1OVx1Zjk5M1x1NzFjM1x1NzFkNVx1''@;'; put 'put ''Zjk5NFx1Nzg0Zlx1Nzg2Zlx1Zjk5NVx1N2I3NVx1N2RlM1x1Zjk5Nlx1N2UyZlx1Zjk5N1x1ODg0ZFx1OGVkZlx1Zjk5OFx1Zjk5OVx1Zjk5YVx1OTI1Ylx1Zjk5Ylx1OWNmNlx1Zjk5Y1x1Zjk5ZFx1Zjk5ZVx1NjA4NVx1NmQ4NVx1Zjk5Zlx1NzFiMVx1ZjlhMFx1ZjlhMVx1OTViMVx1NTNh''@;'; put 'put ''ZFx1ZjlhMlx1ZjlhM1x1ZjlhNFx1NjdkM1x1ZjlhNVx1NzA4ZVx1NzEzMFx1NzQzMFx1ODI3Nlx1ODJkMlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzBdW21dXT01ODg4MCttLFJbNTg4''@;'; put 'put ''ODArbV09eFsyMzBdW21dKTtmb3IoeFsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWY5YTZcdTk1YmJcdTlhZTVcdTllN2RcdTY2YzRcdWY5YTdcdTcxYzFcdTg0NDlcdWY5YThcdWY5YTlcdTU4NGJcdWY5YWFcdWY5YWJcdTVkYjhcdTVmNzFcdWY5YWNcdTY2MjBcdTY2OGVcdTY5NzlcdTY5YWVcdTZjMzhcdTZjZjNcdTZlMzZcdTZmNDFcdTZmZGFcdTcwMWJcdTcw''@;'; put 'put ''MmZcdTcxNTBcdTcxZGZcdTczNzBcdWY5YWRcdTc0NWJcdWY5YWVcdTc0ZDRcdTc2YzhcdTdhNGVcdTdlOTNcdWY5YWZcdWY5YjBcdTgyZjFcdThhNjBcdThmY2VcdWY5YjFcdTkzNDhcdWY5YjJcdTk3MTlcdWY5YjNcdWY5YjRcdTRlNDJcdTUwMmFcdWY5YjVcdTUyMDhcdTUzZTFcdTY2ZjNc''@;'; put 'put ''dTZjNmRcdTZmY2FcdTczMGFcdTc3N2ZcdTdhNjJcdTgyYWVcdTg1ZGRcdTg2MDJcdWY5YjZcdTg4ZDRcdThhNjNcdThiN2RcdThjNmJcdWY5YjdcdTkyYjNcdWY5YjhcdTk3MTNcdTk4MTBcdTRlOTRcdTRmMGRcdTRmYzlcdTUwYjJcdTUzNDhcdTU0M2VcdTU0MzNcdTU1ZGFcdTU4NjJcdTU4''@;'; put 'put ''YmFcdTU5NjdcdTVhMWJcdTViZTRcdTYwOWZcdWY5YjlcdTYxY2FcdTY1NTZcdTY1ZmZcdTY2NjRcdTY4YTdcdTZjNWFcdTZmYjNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjMxXVttXV09''@;'; put 'put ''NTkxMzYrbSxSWzU5MTM2K21dPXhbMjMxXVttXSk7Zm9yKHhbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3''@;'; put 'put ''NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4Mzll''@;'; put 'put ''XHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3MzhiXHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVm''@;'; put 'put ''OWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVmOWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzJdW21dLmNoYXJDb2RlQXQoMCkmJihv''@;'; put 'put ''ZVt4WzIzMl1bbV1dPTU5MzkyK20sUls1OTM5MittXT14WzIzMl1bbV0pO2Zvcih4WzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E4OFx1N2FhZlx1N2U0N1x1N2U1ZVx1ODAwMFx1ODE3MFx1ZjljMlx1ODdlZlx1ODk4MVx1OGIyMFx1OTA1OVx1ZjljM1x1OTA4MFx1OTk1Mlx1NjE3ZVx1NmIzMlx1NmQ3NFx1N2UxZlx1ODkyNVx1OGZiMVx1NGZkMVx1NTBhZFx1''@;'; put 'put ''NTE5N1x1NTJjN1x1NTdjN1x1NTg4OVx1NWJiOVx1NWViOFx1NjE0Mlx1Njk5NVx1NmQ4Y1x1NmU2N1x1NmViNlx1NzE5NFx1NzQ2Mlx1NzUyOFx1NzUyY1x1ODA3M1x1ODMzOFx1ODRjOVx1OGUwYVx1OTM5NFx1OTNkZVx1ZjljNFx1NGU4ZVx1NGY1MVx1NTA3Nlx1NTEyYVx1NTNjOFx1NTNj''@;'; put 'put ''Ylx1NTNmM1x1NWI4N1x1NWJkM1x1NWMyNFx1NjExYVx1NjE4Mlx1NjVmNFx1NzI1Ylx1NzM5N1x1NzQ0MFx1NzZjMlx1Nzk1MFx1Nzk5MVx1NzliOVx1N2QwNlx1N2ZiZFx1ODI4Ylx1ODVkNVx1ODY1ZVx1OGZjMlx1OTA0N1x1OTBmNVx1OTFlYVx1OTY4NVx1OTZlOFx1OTZlOVx1NTJkNlx1''@;'; put 'put ''NWY2N1x1NjVlZFx1NjYzMVx1NjgyZlx1NzE1Y1x1N2EzNlx1OTBjMVx1OTgwYVx1NGU5MVx1ZjljNVx1NmE1Mlx1NmI5ZVx1NmY5MFx1NzE4OVx1ODAxOFx1ODJiOFx1ODU1M1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMzXVttXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYob2VbeFsyMzNdW21dXT01OTY0OCttLFJbNTk2NDgrbV09eFsyMzNdW21dKTtmb3IoeFsyMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwNGJcdTk2OTVcdTk2ZjJcdTk3ZmJcdTg1MWFcdTliMzFcdTRlOTBcdTcxOGFcdTk2YzRcdTUxNDNcdTUzOWZcdTU0ZTFcdTU3MTNcdTU3MTJcdTU3YTNcdTVhOWJcdTVhYzRcdTViYzNcdTYwMjhcdTYxM2Zc''@;'; put 'put ''dTYzZjRcdTZjODVcdTZkMzlcdTZlNzJcdTZlOTBcdTcyMzBcdTczM2ZcdTc0NTdcdTgyZDFcdTg4ODFcdThmNDVcdTkwNjBcdWY5YzZcdTk2NjJcdTk4NThcdTlkMWJcdTY3MDhcdThkOGFcdTkyNWVcdTRmNGRcdTUwNDlcdTUwZGVcdTUzNzFcdTU3MGRcdTU5ZDRcdTVhMDFcdTVjMDlcdTYx''@;'; put 'put ''NzBcdTY2OTBcdTZlMmRcdTcyMzJcdTc0NGJcdTdkZWZcdTgwYzNcdTg0MGVcdTg0NjZcdTg1M2ZcdTg3NWZcdTg4NWJcdTg5MThcdThiMDJcdTkwNTVcdTk3Y2JcdTliNGZcdTRlNzNcdTRmOTFcdTUxMTJcdTUxNmFcdWY5YzdcdTU1MmZcdTU1YTlcdTViN2FcdTViYTVcdTVlN2NcdTVlN2Rc''@;'; put 'put ''dTVlYmVcdTYwYTBcdTYwZGZcdTYxMDhcdTYxMDlcdTYzYzRcdTY1MzhcdTY3MDlcdWY5YzhcdTY3ZDRcdTY3ZGFcdWY5YzlcdTY5NjFcdTY5NjJcdTZjYjlcdTZkMjdcdWY5Y2FcdTZlMzhcdWY5Y2JcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzRdLmxlbmd0aDsrK20pNjU1MzMhPT14''@;'; put 'put ''WzIzNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM0XVttXV09NTk5MDQrbSxSWzU5OTA0K21dPXhbMjM0XVttXSk7Zm9yKHhbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMw''@;'; put 'put ''XHU4ZTQyXHU5MDRhXHU5MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5''@;'; put 'put ''NThmXHVmOWQ4XHVmOWQ5XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkx''@;'; put 'put ''XHU1MWRkXHU2MWM5XHU4MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM1XS5sZW5ndGg7''@;'; put 'put ''KyttKTY1NTMzIT09eFsyMzVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzNV1bbV1dPTYwMTYwK20sUls2MDE2MCttXT14WzIzNV1bbV0pO2Zvcih4WzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI3MFx1OTFhYlx1NGU4Y1x1NGVlNVx1NGYwYVx1ZjlkZFx1ZjlkZVx1NTkzN1x1NTllOFx1ZjlkZlx1NWRmMlx1NWYxYlx1NWY1Ylx1NjAyMVx1ZjllMFx1Zjll''@;'; put 'put ''MVx1ZjllMlx1ZjllM1x1NzIzZVx1NzNlNVx1ZjllNFx1NzU3MFx1NzVjZFx1ZjllNVx1NzlmYlx1ZjllNlx1ODAwY1x1ODAzM1x1ODA4NFx1ODJlMVx1ODM1MVx1ZjllN1x1ZjllOFx1OGNiZFx1OGNiM1x1OTA4N1x1ZjllOVx1ZjllYVx1OThmNFx1OTkwY1x1ZjllYlx1ZjllY1x1NzAzN1x1''@;'; put 'put ''NzZjYVx1N2ZjYVx1N2ZjY1x1N2ZmY1x1OGIxYVx1NGViYVx1NGVjMVx1NTIwM1x1NTM3MFx1ZjllZFx1NTRiZFx1NTZlMFx1NTlmYlx1NWJjNVx1NWYxNVx1NWZjZFx1NmU2ZVx1ZjllZVx1ZjllZlx1N2Q2YVx1ODMzNVx1ZjlmMFx1ODY5M1x1OGE4ZFx1ZjlmMVx1OTc2ZFx1OTc3N1x1Zjlm''@;'; put 'put ''Mlx1ZjlmM1x1NGUwMFx1NGY1YVx1NGY3ZVx1NThmOVx1NjVlNVx1NmVhMlx1OTAzOFx1OTNiMFx1OTliOVx1NGVmYlx1NThlY1x1NTk4YVx1NTlkOVx1NjA0MVx1ZjlmNFx1ZjlmNVx1N2ExNFx1ZjlmNlx1ODM0Zlx1OGNjM1x1NTE2NVx1NTM0NFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14''@;'; put 'put ''WzIzNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzZdW21dXT02MDQxNittLFJbNjA0MTYrbV09eFsyMzZdW21dKTtmb3IoeFsyMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWY5ZjdcdWY5ZjhcdWY5ZjlcdTRlY2RcdTUyNjlcdTViNTVcdTgyYmZcdTRlZDRcdTUyM2FcdTU0YThcdTU5YzlcdTU5ZmZcdTViNTBcdTVi''@;'; put 'put ''NTdcdTViNWNcdTYwNjNcdTYxNDhcdTZlY2JcdTcwOTlcdTcxNmVcdTczODZcdTc0ZjdcdTc1YjVcdTc4YzFcdTdkMmJcdTgwMDVcdTgxZWFcdTgzMjhcdTg1MTdcdTg1YzlcdThhZWVcdThjYzdcdTk2Y2NcdTRmNWNcdTUyZmFcdTU2YmNcdTY1YWJcdTY2MjhcdTcwN2NcdTcwYjhcdTcyMzVc''@;'; put 'put ''dTdkYmRcdTgyOGRcdTkxNGNcdTk2YzBcdTlkNzJcdTViNzFcdTY4ZTdcdTZiOThcdTZmN2FcdTc2ZGVcdTVjOTFcdTY2YWJcdTZmNWJcdTdiYjRcdTdjMmFcdTg4MzZcdTk2ZGNcdTRlMDhcdTRlZDdcdTUzMjBcdTU4MzRcdTU4YmJcdTU4ZWZcdTU5NmNcdTVjMDdcdTVlMzNcdTVlODRcdTVm''@;'; put 'put ''MzVcdTYzOGNcdTY2YjJcdTY3NTZcdTZhMWZcdTZhYTNcdTZiMGNcdTZmM2ZcdTcyNDZcdWY5ZmFcdTczNTBcdTc0OGJcdTdhZTBcdTdjYTdcdTgxNzhcdTgxZGZcdTgxZTdcdTgzOGFcdTg0NmNcdTg1MjNcdTg1OTRcdTg1Y2ZcdTg4ZGRcdThkMTNcdTkxYWNcdTk1NzdcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxtPTA7bSE9eFsyMzddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzN11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM3XVttXV09NjA2NzIrbSxSWzYwNjcyK21dPXhbMjM3XVttXSk7Zm9yKHhbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3''@;'; put 'put ''MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1''@;'; put 'put ''XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4''@;'; put 'put ''YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMwXHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIx''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzOF1bbV1dPTYwOTI4K20sUls2MDkyOCttXT14WzIzOF1bbV0pO2Zvcih4WzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0ZVx1NzQyMFx1NzUzMFx1NzUzOFx1NzU1MVx1NzY3Mlx1N2I0Y1x1N2I4Ylx1N2JhZFx1''@;'; put 'put ''N2JjNlx1N2U4Zlx1OGE2ZVx1OGYzZVx1OGY0OVx1OTIzZlx1OTI5M1x1OTMyMlx1OTQyYlx1OTZmYlx1OTg1YVx1OTg2Ylx1OTkxZVx1NTIwN1x1NjIyYVx1NjI5OFx1NmQ1OVx1NzY2NFx1N2FjYVx1N2JjMFx1N2Q3Nlx1NTM2MFx1NWNiZVx1NWU5N1x1NmYzOFx1NzBiOVx1N2M5OFx1OTcx''@;'; put 'put ''MVx1OWI4ZVx1OWVkZVx1NjNhNVx1NjQ3YVx1ODc3Nlx1NGUwMVx1NGU5NVx1NGVhZFx1NTA1Y1x1NTA3NVx1NTQ0OFx1NTljM1x1NWI5YVx1NWU0MFx1NWVhZFx1NWVmN1x1NWY4MVx1NjBjNVx1NjMzYVx1NjUzZlx1NjU3NFx1NjVjY1x1NjY3Nlx1NjY3OFx1NjdmZVx1Njk2OFx1NmE4OVx1''@;'; put 'put ''NmI2M1x1NmM0MFx1NmRjMFx1NmRlOFx1NmUxZlx1NmU1ZVx1NzAxZVx1NzBhMVx1NzM4ZVx1NzNmZFx1NzUzYVx1Nzc1Ylx1Nzg4N1x1Nzk4ZVx1N2EwYlx1N2E3ZFx1N2NiZVx1N2Q4ZVx1ODI0N1x1OGEwMlx1OGFlYVx1OGM5ZVx1OTEyZFx1OTE0YVx1OTFkOFx1OTI2Nlx1OTJjY1x1OTMy''@;'; put 'put ''MFx1OTcwNlx1OTc1Nlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzldW21dXT02MTE4NCttLFJbNjExODQrbV09eFsyMzldW21dKTtmb3IoeFsyNDBdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3NWNcdTk4MDJcdTlmMGVcdTUyMzZcdTUyOTFcdTU1N2NcdTU4MjRc''@;'; put 'put ''dTVlMWRcdTVmMWZcdTYwOGNcdTYzZDBcdTY4YWZcdTZmZGZcdTc5NmRcdTdiMmNcdTgxY2RcdTg1YmFcdTg4ZmRcdThhZjhcdThlNDRcdTkxOGRcdTk2NjRcdTk2OWJcdTk3M2RcdTk4NGNcdTlmNGFcdTRmY2VcdTUxNDZcdTUxY2JcdTUyYTlcdTU2MzJcdTVmMTRcdTVmNmJcdTYzYWFcdTY0''@;'; put 'put ''Y2RcdTY1ZTlcdTY2NDFcdTY2ZmFcdTY2ZjlcdTY3MWRcdTY4OWRcdTY4ZDdcdTY5ZmRcdTZmMTVcdTZmNmVcdTcxNjdcdTcxZTVcdTcyMmFcdTc0YWFcdTc3M2FcdTc5NTZcdTc5NWFcdTc5ZGZcdTdhMjBcdTdhOTVcdTdjOTdcdTdjZGZcdTdkNDRcdTdlNzBcdTgwODdcdTg1ZmJcdTg2YTRc''@;'; put 'put ''dThhNTRcdThhYmZcdThkOTlcdThlODFcdTkwMjBcdTkwNmRcdTkxZTNcdTk2M2JcdTk2ZDVcdTljZTVcdTY1Y2ZcdTdjMDdcdThkYjNcdTkzYzNcdTViNThcdTVjMGFcdTUzNTJcdTYyZDlcdTczMWRcdTUwMjdcdTViOTdcdTVmOWVcdTYwYjBcdTYxNmJcdTY4ZDVcdTZkZDlcdTc0MmVcdTdh''@;'; put 'put ''MmVcdTdkNDJcdTdkOWNcdTdlMzFcdTgxNmJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQwXVttXV09NjE0NDArbSxSWzYxNDQwK21dPXhbMjQwXVttXSk7Zm9yKHhbMjQxXT0iXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUw''@;'; put 'put ''XHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRlXHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3''@;'; put 'put ''M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNk''@;'; put 'put ''XHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1MzdkXHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3''@;'; put 'put ''NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0MV1bbV1dPTYxNjk2K20sUls2MTY5NittXT14WzI0MV1bbV0pO2Zvcih4''@;'; put 'put ''WzI0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTRhYlx1NTczMFx1NTc0''@;'; put 'put ''MFx1NWZkN1x1NjMwMVx1NjMwN1x1NjQ2Zlx1NjUyZlx1NjVlOFx1NjY3YVx1Njc5ZFx1NjdiM1x1NmI2Mlx1NmM2MFx1NmM5YVx1NmYyY1x1NzdlNVx1NzgyNVx1Nzk0OVx1Nzk1N1x1N2QxOVx1ODBhMlx1ODEwMlx1ODFmM1x1ODI5ZFx1ODJiN1x1ODcxOFx1OGE4Y1x1ZjlmY1x1OGQwNFx1''@;'; put 'put ''OGRiZVx1OTA3Mlx1NzZmNFx1N2ExOVx1N2EzN1x1N2U1NFx1ODA3N1x1NTUwN1x1NTVkNFx1NTg3NVx1NjMyZlx1NjQyMlx1NjY0OVx1NjY0Ylx1Njg2ZFx1Njk5Ylx1NmI4NFx1NmQyNVx1NmViMVx1NzNjZFx1NzQ2OFx1NzRhMVx1NzU1Ylx1NzViOVx1NzZlMVx1NzcxZVx1Nzc4Ylx1Nzll''@;'; put 'put ''Nlx1N2UwOVx1N2UxZFx1ODFmYlx1ODUyZlx1ODg5N1x1OGEzYVx1OGNkMVx1OGVlYlx1OGZiMFx1OTAzMlx1OTNhZFx1OTY2M1x1OTY3M1x1OTcwN1x1NGY4NFx1NTNmMVx1NTllYVx1NWFjOVx1NWUxOVx1Njg0ZVx1NzRjNlx1NzViZVx1NzllOVx1N2E5Mlx1ODFhM1x1ODZlZFx1OGNlYVx1''@;'; put 'put ''OGRjY1x1OGZlZFx1NjU5Zlx1NjcxNVx1ZjlmZFx1NTdmN1x1NmY1N1x1N2RkZFx1OGYyZlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDJdW21dXT02MTk1MittLFJbNjE5NTIrbV09eFsy''@;'; put 'put ''NDJdW21dKTtmb3IoeFsyNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkz''@;'; put 'put ''ZjZcdTk2YzZcdTVmYjVcdTYxZjJcdTZmODRcdTRlMTRcdTRmOThcdTUwMWZcdTUzYzlcdTU1ZGZcdTVkNmZcdTVkZWVcdTZiMjFcdTZiNjRcdTc4Y2JcdTdiOWFcdWY5ZmVcdThlNDlcdThlY2FcdTkwNmVcdTYzNDlcdTY0M2VcdTc3NDBcdTdhODRcdTkzMmZcdTk0N2ZcdTlmNmFcdTY0YjBc''@;'; put 'put ''dTZmYWZcdTcxZTZcdTc0YThcdTc0ZGFcdTdhYzRcdTdjMTJcdTdlODJcdTdjYjJcdTdlOThcdThiOWFcdThkMGFcdTk0N2RcdTk5MTBcdTk5NGNcdTUyMzlcdTViZGZcdTY0ZTZcdTY3MmRcdTdkMmVcdTUwZWRcdTUzYzNcdTU4NzlcdTYxNThcdTYxNTlcdTYxZmFcdTY1YWNcdTdhZDlcdThi''@;'; put 'put ''OTJcdThiOTZcdTUwMDlcdTUwMjFcdTUyNzVcdTU1MzFcdTVhM2NcdTVlZTBcdTVmNzBcdTYxMzRcdTY1NWVcdTY2MGNcdTY2MzZcdTY2YTJcdTY5Y2RcdTZlYzRcdTZmMzJcdTczMTZcdTc2MjFcdTdhOTNcdTgxMzlcdTgyNTlcdTgzZDZcdTg0YmNcdTUwYjVcdTU3ZjBcdTViYzBcdTViZThc''@;'; put 'put ''dTVmNjlcdTYzYTFcdTc4MjZcdTdkYjVcdTgzZGNcdTg1MjFcdTkxYzdcdTkxZjVcdTUxOGFcdTY3ZjVcdTdiNTZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQzXVttXV09NjIyMDgrbSxS''@;'; put 'put ''WzYyMjA4K21dPXhbMjQzXVttXSk7Zm9yKHhbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNhXHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1''@;'; put 'put ''XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3''@;'; put 'put ''NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUyXHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1''@;'; put 'put ''XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2Mjg0XHU2MmRiXHU2OGEyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0NF1b''@;'; put 'put ''bV1dPTYyNDY0K20sUls2MjQ2NCttXT14WzI0NF1bbV0pO2Zvcih4WzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjkxMlx1Njk1YVx1NmEzNVx1NzA5Mlx1NzEyNlx1Nzg1ZFx1NzkwMVx1NzkwZVx1NzlkMlx1N2EwZFx1ODA5Nlx1ODI3OFx1ODJkNVx1ODM0OVx1ODU0OVx1OGM4Mlx1OGQ4NVx1OTE2Mlx1OTE4Ylx1OTFhZVx1NGZjM1x1NTZkMVx1NzFlZFx1Nzdk''@;'; put 'put ''N1x1ODcwMFx1ODlmOFx1NWJmOFx1NWZkNlx1Njc1MVx1OTBhOFx1NTNlMlx1NTg1YVx1NWJmNVx1NjBhNFx1NjE4MVx1NjQ2MFx1N2UzZFx1ODA3MFx1ODUyNVx1OTI4M1x1NjRhZVx1NTBhY1x1NWQxNFx1NjcwMFx1NTg5Y1x1NjJiZFx1NjNhOFx1NjkwZVx1Njk3OFx1NmExZVx1NmU2Ylx1''@;'; put 'put ''NzZiYVx1NzljYlx1ODJiYlx1ODQyOVx1OGFjZlx1OGRhOFx1OGZmZFx1OTExMlx1OTE0Ylx1OTE5Y1x1OTMxMFx1OTMxOFx1OTM5YVx1OTZkYlx1OWEzNlx1OWMwZFx1NGUxMVx1NzU1Y1x1Nzk1ZFx1N2FmYVx1N2I1MVx1N2JjOVx1N2UyZVx1ODRjNFx1OGU1OVx1OGU3NFx1OGVmOFx1OTAx''@;'; put 'put ''MFx1NjYyNVx1NjkzZlx1NzQ0M1x1NTFmYVx1NjcyZVx1OWVkY1x1NTE0NVx1NWZlMFx1NmM5Nlx1ODdmMlx1ODg1ZFx1ODg3N1x1NjBiNFx1ODFiNVx1ODQwM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQ1XVttXS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''JiYob2VbeFsyNDVdW21dXT02MjcyMCttLFJbNjI3MjArbV09eFsyNDVdW21dKTtmb3IoeFsyNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMDVcdTUzZDZcdTU0MzlcdTU2MzRcdTVhMzZcdTVjMzFcdTcwOGFcdTdmZTBcdTgwNWFcdTgxMDZcdTgxZWRcdThkYTNcdTkxODlcdTlhNWZcdTlkZjJcdTUwNzRcdTRlYzRcdTUzYTBcdTYwZmJcdTZlMmNcdTVjNjRcdTRm''@;'; put 'put ''ODhcdTUwMjRcdTU1ZTRcdTVjZDlcdTVlNWZcdTYwNjVcdTY4OTRcdTZjYmJcdTZkYzRcdTcxYmVcdTc1ZDRcdTc1ZjRcdTc2NjFcdTdhMWFcdTdhNDlcdTdkYzdcdTdkZmJcdTdmNmVcdTgxZjRcdTg2YTlcdThmMWNcdTk2YzlcdTk5YjNcdTlmNTJcdTUyNDdcdTUyYzVcdTk4ZWRcdTg5YWFc''@;'; put 'put ''dTRlMDNcdTY3ZDJcdTZmMDZcdTRmYjVcdTViZTJcdTY3OTVcdTZjODhcdTZkNzhcdTc0MWJcdTc4MjdcdTkxZGRcdTkzN2NcdTg3YzRcdTc5ZTRcdTdhMzFcdTVmZWJcdTRlZDZcdTU0YTRcdTU1M2VcdTU4YWVcdTU5YTVcdTYwZjBcdTYyNTNcdTYyZDZcdTY3MzZcdTY5NTVcdTgyMzVcdTk2''@;'; put 'put ''NDBcdTk5YjFcdTk5ZGRcdTUwMmNcdTUzNTNcdTU1NDRcdTU3N2NcdWZhMDFcdTYyNThcdWZhMDJcdTY0ZTJcdTY2NmJcdTY3ZGRcdTZmYzFcdTZmZWZcdTc0MjJcdTc0MzhcdThhMTdcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0Nl1bbV0u''@;'; put 'put ''Y2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ2XVttXV09NjI5NzYrbSxSWzYyOTc2K21dPXhbMjQ2XVttXSk7Zm9yKHhbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2''@;'; put 'put ''OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVmYTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFm''@;'; put 'put ''XHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2''@;'; put 'put ''NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ3XS5sZW5ndGg7KyttKTY1NTMz''@;'; put 'put ''IT09eFsyNDddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0N11bbV1dPTYzMjMyK20sUls2MzIzMittXT14WzI0N11bbV0pO2Zvcih4WzI0OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTYyYVx1NTE2Ylx1NTNlZFx1NjM0Y1x1NGY2OVx1NTUwNFx1NjA5Nlx1NjU1N1x1NmM5Ylx1NmQ3Zlx1NzI0Y1x1NzJmZFx1N2ExN1x1ODk4N1x1OGM5ZFx1NWY2ZFx1NmY4ZVx1''@;'; put 'put ''NzBmOVx1ODFhOFx1NjEwZVx1NGZiZlx1NTA0Zlx1NjI0MVx1NzI0N1x1N2JjN1x1N2RlOFx1N2ZlOVx1OTA0ZFx1OTdhZFx1OWExOVx1OGNiNlx1NTc2YVx1NWU3M1x1NjdiMFx1ODQwZFx1OGE1NVx1NTQyMFx1NWIxNlx1NWU2M1x1NWVlMlx1NWYwYVx1NjU4M1x1ODBiYVx1ODUzZFx1OTU4''@;'; put 'put ''OVx1OTY1Ylx1NGY0OFx1NTMwNVx1NTMwZFx1NTMwZlx1NTQ4Nlx1NTRmYVx1NTcwM1x1NWUwM1x1NjAxNlx1NjI5Ylx1NjJiMVx1NjM1NVx1ZmEwNlx1NmNlMVx1NmQ2Nlx1NzViMVx1NzgzMlx1ODBkZVx1ODEyZlx1ODJkZVx1ODQ2MVx1ODRiMlx1ODg4ZFx1ODkxMlx1OTAwYlx1OTJlYVx1''@;'; put 'put ''OThmZFx1OWI5MVx1NWU0NVx1NjZiNFx1NjZkZFx1NzAxMVx1NzIwNlx1ZmEwN1x1NGZmNVx1NTI3ZFx1NWY2YVx1NjE1M1x1Njc1M1x1NmExOVx1NmYwMlx1NzRlMlx1Nzk2OFx1ODg2OFx1OGM3OVx1OThjN1x1OThjNFx1OWE0M1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0OF0ubGVu''@;'; put 'put ''Z3RoOysrbSk2NTUzMyE9PXhbMjQ4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDhdW21dXT02MzQ4OCttLFJbNjM0ODgrbV09eFsyNDhdW21dKTtmb3IoeFsyNDldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0YzFcdTdhMWZcdTY5NTNcdThhZjdcdThjNGFcdTk4YThcdTk5YWVcdTVmN2NcdTYyYWJcdTc1YjJcdTc2YWVcdTg4YWJcdTkwN2ZcdTk2NDJcdTUzMzlc''@;'; put 'put ''dTVmM2NcdTVmYzVcdTZjY2NcdTczY2NcdTc1NjJcdTc1OGJcdTdiNDZcdTgyZmVcdTk5OWRcdTRlNGZcdTkwM2NcdTRlMGJcdTRmNTVcdTUzYTZcdTU5MGZcdTVlYzhcdTY2MzBcdTZjYjNcdTc0NTVcdTgzNzdcdTg3NjZcdThjYzBcdTkwNTBcdTk3MWVcdTljMTVcdTU4ZDFcdTViNzhcdTg2''@;'; put 'put ''NTBcdThiMTRcdTlkYjRcdTViZDJcdTYwNjhcdTYwOGRcdTY1ZjFcdTZjNTdcdTZmMjJcdTZmYTNcdTcwMWFcdTdmNTVcdTdmZjBcdTk1OTFcdTk1OTJcdTk2NTBcdTk3ZDNcdTUyNzJcdThmNDRcdTUxZmRcdTU0MmJcdTU0YjhcdTU1NjNcdTU1OGFcdTZhYmJcdTZkYjVcdTdkZDhcdTgyNjZc''@;'; put 'put ''dTkyOWNcdTk2NzdcdTllNzlcdTU0MDhcdTU0YzhcdTc2ZDJcdTg2ZTRcdTk1YTRcdTk1ZDRcdTk2NWNcdTRlYTJcdTRmMDlcdTU5ZWVcdTVhZTZcdTVkZjdcdTYwNTJcdTYyOTdcdTY3NmRcdTY4NDFcdTZjODZcdTZlMmZcdTdmMzhcdTgwOWJcdTgyMmFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7''@;'; put 'put ''bSE9eFsyNDldLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ5XVttXV09NjM3NDQrbSxSWzYzNzQ0K21dPXhbMjQ5XVttXSk7Zm9yKHhbMjUwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2MWM4XHU2OTc3XHU2ZDc3''@;'; put 'put ''XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUzXHU1ODlmXHU4NjViXHU4''@;'; put 'put ''YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3ZDYyXHU3ZTIzXHU4MjM3''@;'; put 'put ''XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjExXHU1NzhiXHVmZmZkIi5z''@;'; put 'put ''cGxpdCgiIiksbT0wO20hPXhbMjUwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNTBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI1MF1bbV1dPTY0ZTMrbSxSWzY0ZTMrbV09eFsyNTBdW21dKTtmb3IoeFsyNTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVmNjJcdTZjYzJcdTZlY2VcdTcwMDVcdTcwNTBcdTcwYWZcdTcxOTJcdTczZTlcdTc0NjlcdTgzNGFcdTg3YTJc''@;'; put 'put ''dTg4NjFcdTkwMDhcdTkwYTJcdTkzYTNcdTk5YThcdTUxNmVcdTVmNTdcdTYwZTBcdTYxNjdcdTY2YjNcdTg1NTlcdThlNGFcdTkxYWZcdTk3OGJcdTRlNGVcdTRlOTJcdTU0N2NcdTU4ZDVcdTU4ZmFcdTU5N2RcdTVjYjVcdTVmMjdcdTYyMzZcdTYyNDhcdTY2MGFcdTY2NjdcdTZiZWJcdTZk''@;'; put 'put ''NjlcdTZkY2ZcdTZlNTZcdTZlZjhcdTZmOTRcdTZmZTBcdTZmZTlcdTcwNWRcdTcyZDBcdTc0MjVcdTc0NWFcdTc0ZTBcdTc2OTNcdTc5NWNcdTdjY2FcdTdlMWVcdTgwZTFcdTgyYTZcdTg0NmJcdTg0YmZcdTg2NGVcdTg2NWZcdTg3NzRcdThiNzdcdThjNmFcdTkzYWNcdTk4MDBcdTk4NjVc''@;'; put 'put ''dTYwZDFcdTYyMTZcdTkxNzdcdTVhNWFcdTY2MGZcdTZkZjdcdTZlM2VcdTc0M2ZcdTliNDJcdTVmZmRcdTYwZGFcdTdiMGZcdTU0YzRcdTVmMThcdTZjNWVcdTZjZDNcdTZkMmFcdTcwZDhcdTdkMDVcdTg2NzlcdThhMGNcdTlkM2JcdTUzMTZcdTU0OGNcdTViMDVcdTZhM2FcdTcwNmJcdTc1''@;'; put 'put ''NzVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI1MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjUxXVttXV09NjQyNTYrbSxSWzY0MjU2K21dPXhbMjUxXVttXSk7Zm9yKHhbMjUyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBi''@;'; put 'put ''XHU2NGY0XHU2NTJiXHU3OGJhXHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2YjYxXHU2NjY1XHU2ODUzXHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1''@;'; put 'put ''MWYwXHU1ZTRjXHU1ZmE4XHU2MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5XHU2ZjYyXHU3MTRjXHU3NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1Zjhh''@;'; put 'put ''XHU2MDYyXHU2MDk0XHU2MWY3XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4MzM0XHU4NmQ0XHU4YWE4XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2''@;'; put 'put ''ODlmXHU2ZDhkXHU2ZGM2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjUyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNTJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI1Ml1bbV1dPTY0NTEyK20sUls2NDUxMittXT14WzI1Ml1bbV0pO2Zvcih4WzI1M109Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzIzYlx1ODBiNFx1OTE3NVx1OWE0ZFx1NGZhZlx1NTAxOVx1NTM5''@;'; put 'put ''YVx1NTQwZVx1NTQzY1x1NTU4OVx1NTVjNVx1NWUzZlx1NWY4Y1x1NjczZFx1NzE2Nlx1NzNkZFx1OTAwNVx1NTJkYlx1NTJmM1x1NTg2NFx1NThjZVx1NzEwNFx1NzE4Zlx1NzFmYlx1ODViMFx1OGExM1x1NjY4OFx1ODVhOFx1NTVhN1x1NjY4NFx1NzE0YVx1ODQzMVx1NTM0OVx1NTU5OVx1''@;'; put 'put ''NmJjMVx1NWY1OVx1NWZiZFx1NjNlZVx1NjY4OVx1NzE0N1x1OGFmMVx1OGYxZFx1OWViZVx1NGYxMVx1NjQzYVx1NzBjYlx1NzU2Nlx1ODY2N1x1NjA2NFx1OGI0ZVx1OWRmOFx1NTE0N1x1NTFmNlx1NTMwOFx1NmQzNlx1ODBmOFx1OWVkMVx1NjYxNVx1NmIyM1x1NzA5OFx1NzVkNVx1NTQw''@;'; put 'put ''M1x1NWM3OVx1N2QwN1x1OGExNlx1NmIyMFx1NmIzZFx1NmI0Nlx1NTQzOFx1NjA3MFx1NmQzZFx1N2ZkNVx1ODIwOFx1NTBkNlx1NTFkZVx1NTU5Y1x1NTY2Ylx1NTZjZFx1NTllY1x1NWIwOVx1NWUwY1x1NjE5OVx1NjE5OFx1NjIzMVx1NjY1ZVx1NjZlNlx1NzE5OVx1NzFiOVx1NzFiYVx1''@;'; put 'put ''NzJhN1x1NzlhN1x1N2EwMFx1N2ZiMlx1OGE3MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI1M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjUzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNTNdW21dXT02NDc2OCttLFJbNjQ3NjgrbV09eFsyNTNdW21dKTtyZXR1cm57ZW5jOm9lLGRl''@;'; put 'put ''YzpSfX0oKSxNZVs5NTBdPWZ1bmN0aW9uKCl7dmFyIG0sUj1bXSxvZT17fSx4PVtdO2Zvcih4WzBdPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFk''@;'; put 'put ''XHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzBdW21dXT0wK20sUlswK21dPXhbMF1bbV0pO2Zvcih4WzE2MV09Ilx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzAwMFx1ZmYwY1x1MzAwMVx1MzAwMlx1ZmYwZVx1MjAyN1x1ZmYxYlx1ZmYxYVx1ZmYxZlx1ZmYwMVx1ZmUzMFx1MjAyNlx1MjAyNVx1ZmU1MFx1ZmU1MVx1ZmU1Mlx4YjdcdWZlNTRcdWZlNTVc''@;'; put 'put ''dWZlNTZcdWZlNTdcdWZmNWNcdTIwMTNcdWZlMzFcdTIwMTRcdWZlMzNcdTI1NzRcdWZlMzRcdWZlNGZcdWZmMDhcdWZmMDlcdWZlMzVcdWZlMzZcdWZmNWJcdWZmNWRcdWZlMzdcdWZlMzhcdTMwMTRcdTMwMTVcdWZlMzlcdWZlM2FcdTMwMTBcdTMwMTFcdWZlM2JcdWZlM2NcdTMwMGFcdTMw''@;'; put 'put ''MGJcdWZlM2RcdWZlM2VcdTMwMDhcdTMwMDlcdWZlM2ZcdWZlNDBcdTMwMGNcdTMwMGRcdWZlNDFcdWZlNDJcdTMwMGVcdTMwMGZcdWZlNDNcdWZlNDRcdWZlNTlcdWZlNWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZlNWJcdWZlNWNcdWZlNWRcdWZlNWVcdTIw''@;'; put 'put ''MThcdTIwMTlcdTIwMWNcdTIwMWRcdTMwMWRcdTMwMWVcdTIwMzVcdTIwMzJcdWZmMDNcdWZmMDZcdWZmMGFcdTIwM2JceGE3XHUzMDAzXHUyNWNiXHUyNWNmXHUyNWIzXHUyNWIyXHUyNWNlXHUyNjA2XHUyNjA1XHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWJkXHUyNWJjXHUzMmEzXHUy''@;'; put 'put ''MTA1XHhhZlx1ZmZlM1x1ZmYzZlx1MDJjZFx1ZmU0OVx1ZmU0YVx1ZmU0ZFx1ZmU0ZVx1ZmU0Ylx1ZmU0Y1x1ZmU1Zlx1ZmU2MFx1ZmU2MVx1ZmYwYlx1ZmYwZFx4ZDdceGY3XHhiMVx1MjIxYVx1ZmYxY1x1ZmYxZVx1ZmYxZFx1MjI2Nlx1MjI2N1x1MjI2MFx1MjIxZVx1MjI1Mlx1MjI2MVx1''@;'; put 'put ''ZmU2Mlx1ZmU2M1x1ZmU2NFx1ZmU2NVx1ZmU2Nlx1ZmY1ZVx1MjIyOVx1MjIyYVx1MjJhNVx1MjIyMFx1MjIxZlx1MjJiZlx1MzNkMlx1MzNkMVx1MjIyYlx1MjIyZVx1MjIzNVx1MjIzNFx1MjY0MFx1MjY0Mlx1MjI5NVx1MjI5OVx1MjE5MVx1MjE5M1x1MjE5MFx1MjE5Mlx1MjE5Nlx1MjE5''@;'; put 'put ''N1x1MjE5OVx1MjE5OFx1MjIyNVx1MjIyM1x1ZmYwZlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTYxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjFdW21dXT00MTIxNittLFJbNDEyMTYrbV09eFsxNjFdW21dKTtmb3IoeFsxNjJdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMzOWNcdTMzOWRcdTMz''@;'; put 'put ''OWVcdTMzY2VcdTMzYTFcdTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2NlXHUyNTgxXHUyNTgyXHUyNTgzXHUyNTg0XHUyNTg1XHUyNTg2XHUyNTg3XHUyNTg4XHUyNThmXHUyNThlXHUyNThkXHUyNThjXHUy''@;'; put 'put ''NThiXHUyNThhXHUyNTg5XHUyNTNjXHUyNTM0XHUyNTJjXHUyNTI0XHUyNTFjXHUyNTk0XHUyNTAwXHUyNTAyXHUyNTk1XHUyNTBjXHUyNTEwXHUyNTE0XHUyNTE4XHUyNTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTZlXHUyNTcwXHUyNTZmXHUyNTUwXHUy''@;'; put 'put ''NTVlXHUyNTZhXHUyNTYxXHUyNWUyXHUyNWUzXHUyNWU1XHUyNWU0XHUyNTcxXHUyNTcyXHUyNTczXHVmZjEwXHVmZjExXHVmZjEyXHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHUyMTYwXHUyMTYxXHUyMTYyXHUyMTYzXHUyMTY0XHUyMTY1XHUyMTY2XHUyMTY3''@;'; put 'put ''XHUyMTY4XHUyMTY5XHUzMDIxXHUzMDIyXHUzMDIzXHUzMDI0XHUzMDI1XHUzMDI2XHUzMDI3XHUzMDI4XHUzMDI5XHU1MzQxXHU1MzQ0XHU1MzQ1XHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVm''@;'; put 'put ''ZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRm''@;'; put 'put ''XHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTYyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2Ml1bbV1dPTQxNDcyK20sUls0MTQ3MittXT14WzE2Ml1bbV0pO2Zv''@;'; put 'put ''cih4WzE2M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmY1N1x1ZmY1OFx1ZmY1OVx1ZmY1YVx1MDM5MVx1MDM5Mlx1MDM5M1x1MDM5NFx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OFx1MDM5OVx1MDM5YVx1MDM5Ylx1MDM5Y1x1MDM5''@;'; put 'put ''ZFx1MDM5ZVx1MDM5Zlx1MDNhMFx1MDNhMVx1MDNhM1x1MDNhNFx1MDNhNVx1MDNhNlx1MDNhN1x1MDNhOFx1MDNhOVx1MDNiMVx1MDNiMlx1MDNiM1x1MDNiNFx1MDNiNVx1MDNiNlx1MDNiN1x1MDNiOFx1MDNiOVx1MDNiYVx1MDNiYlx1MDNiY1x1MDNiZFx1MDNiZVx1MDNiZlx1MDNjMFx1''@;'; put 'put ''MDNjMVx1MDNjM1x1MDNjNFx1MDNjNVx1MDNjNlx1MDNjN1x1MDNjOFx1MDNjOVx1MzEwNVx1MzEwNlx1MzEwN1x1MzEwOFx1MzEwOVx1MzEwYVx1MzEwYlx1MzEwY1x1MzEwZFx1MzEwZVx1MzEwZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzExMFx1MzExMVx1''@;'; put 'put ''MzExMlx1MzExM1x1MzExNFx1MzExNVx1MzExNlx1MzExN1x1MzExOFx1MzExOVx1MzExYVx1MzExYlx1MzExY1x1MzExZFx1MzExZVx1MzExZlx1MzEyMFx1MzEyMVx1MzEyMlx1MzEyM1x1MzEyNFx1MzEyNVx1MzEyNlx1MzEyN1x1MzEyOFx1MzEyOVx1MDJkOVx1MDJjOVx1MDJjYVx1MDJj''@;'; put 'put ''N1x1MDJjYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTYzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjNdW21dXT00MTcyOCttLFJbNDE3MjgrbV09''@;'; put 'put ''eFsxNjNdW21dKTtmb3IoeFsxNjRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlMDBcdTRlNTlcdTRlMDFcdTRlMDNcdTRlNDNcdTRlNWRcdTRlODZcdTRlOGNcdTRlYmFcdTUxM2ZcdTUxNjVcdTUxNmJcdTUxZTBcdTUyMDBcdTUy''@;'; put 'put ''MDFcdTUyOWJcdTUzMTVcdTUzNDFcdTUzNWNcdTUzYzhcdTRlMDlcdTRlMGJcdTRlMDhcdTRlMGFcdTRlMmJcdTRlMzhcdTUxZTFcdTRlNDVcdTRlNDhcdTRlNWZcdTRlNWVcdTRlOGVcdTRlYTFcdTUxNDBcdTUyMDNcdTUyZmFcdTUzNDNcdTUzYzlcdTUzZTNcdTU3MWZcdTU4ZWJcdTU5MTVc''@;'; put 'put ''dTU5MjdcdTU5NzNcdTViNTBcdTViNTFcdTViNTNcdTViZjhcdTVjMGZcdTVjMjJcdTVjMzhcdTVjNzFcdTVkZGRcdTVkZTVcdTVkZjFcdTVkZjJcdTVkZjNcdTVkZmVcdTVlNzJcdTVlZmVcdTVmMGJcdTVmMTNcdTYyNGRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dTRlMTFcdTRlMTBcdTRlMGRcdTRlMmRcdTRlMzBcdTRlMzlcdTRlNGJcdTVjMzlcdTRlODhcdTRlOTFcdTRlOTVcdTRlOTJcdTRlOTRcdTRlYTJcdTRlYzFcdTRlYzBcdTRlYzNcdTRlYzZcdTRlYzdcdTRlY2RcdTRlY2FcdTRlY2JcdTRlYzRcdTUxNDNcdTUxNDFcdTUxNjdcdTUxNmRcdTUx''@;'; put 'put ''NmVcdTUxNmNcdTUxOTdcdTUxZjZcdTUyMDZcdTUyMDdcdTUyMDhcdTUyZmJcdTUyZmVcdTUyZmZcdTUzMTZcdTUzMzlcdTUzNDhcdTUzNDdcdTUzNDVcdTUzNWVcdTUzODRcdTUzY2JcdTUzY2FcdTUzY2RcdTU4ZWNcdTU5MjlcdTU5MmJcdTU5MmFcdTU5MmRcdTViNTRcdTVjMTFcdTVjMjRc''@;'; put 'put ''dTVjM2FcdTVjNmZcdTVkZjRcdTVlN2JcdTVlZmZcdTVmMTRcdTVmMTVcdTVmYzNcdTYyMDhcdTYyMzZcdTYyNGJcdTYyNGVcdTY1MmZcdTY1ODdcdTY1OTdcdTY1YTRcdTY1YjlcdTY1ZTVcdTY2ZjBcdTY3MDhcdTY3MjhcdTZiMjBcdTZiNjJcdTZiNzlcdTZiY2JcdTZiZDRcdTZiZGJcdTZj''@;'; put 'put ''MGZcdTZjMzRcdTcwNmJcdTcyMmFcdTcyMzZcdTcyM2JcdTcyNDdcdTcyNTlcdTcyNWJcdTcyYWNcdTczOGJcdTRlMTlcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY0XVttXV09NDE5ODQr''@;'; put 'put ''bSxSWzQxOTg0K21dPXhbMTY0XVttXSk7Zm9yKHhbMTY1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1XHU0ZWQ4XHU0ZWQ0XHU0ZWQ1XHU0''@;'; put 'put ''ZWQ2XHU0ZWQ3XHU0ZWUzXHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1MzYxXHU1MzYwXHU1MzZmXHU1MzZl''@;'; put 'put ''XHU1M2JiXHU1M2VmXHU1M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2YyXHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHU1OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTczXHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1XHU2NWU2XHU2''@;'; put 'put ''NzJlXHU2NzJjXHU2NzJhXHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3NThiXHU3Njdk''@;'; put 'put ''XHU3NmFlXHU3NmJmXHU3NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEwXHU0ZjExXHU0''@;'; put 'put ''ZjBmXHU0ZWYyXHU0ZWY2XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2''@;'; put 'put ''NV1bbV1dPTQyMjQwK20sUls0MjI0MCttXT14WzE2NV1bbV0pO2Zvcih4WzE2Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTE3MVx1NTE4ZFx1NTFiMFx1NTIxN1x1NTIxMVx1NTIxMlx1NTIwZVx1NTIxNlx1NTJhM1x1NTMwOFx1''@;'; put 'put ''NTMyMVx1NTMyMFx1NTM3MFx1NTM3MVx1NTQwOVx1NTQwZlx1NTQwY1x1NTQwYVx1NTQxMFx1NTQwMVx1NTQwYlx1NTQwNFx1NTQxMVx1NTQwZFx1NTQwOFx1NTQwM1x1NTQwZVx1NTQwNlx1NTQxMlx1NTZlMFx1NTZkZVx1NTZkZFx1NTczM1x1NTczMFx1NTcyOFx1NTcyZFx1NTcyY1x1NTcy''@;'; put 'put ''Zlx1NTcyOVx1NTkxOVx1NTkxYVx1NTkzN1x1NTkzOFx1NTk4NFx1NTk3OFx1NTk4M1x1NTk3ZFx1NTk3OVx1NTk4Mlx1NTk4MVx1NWI1N1x1NWI1OFx1NWI4N1x1NWI4OFx1NWI4NVx1NWI4OVx1NWJmYVx1NWMxNlx1NWM3OVx1NWRkZVx1NWUwNlx1NWU3Nlx1NWU3NFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWYwZlx1NWYxYlx1NWZkOVx1NWZkNlx1NjIwZVx1NjIwY1x1NjIwZFx1NjIxMFx1NjI2M1x1NjI1Ylx1NjI1OFx1NjUzNlx1NjVlOVx1NjVlOFx1NjVlY1x1NjVlZFx1NjZmMlx1NjZmM1x1NjcwOVx1NjczZFx1NjczNFx1NjczMVx1NjczNVx1''@;'; put 'put ''NmIyMVx1NmI2NFx1NmI3Ylx1NmMxNlx1NmM1ZFx1NmM1N1x1NmM1OVx1NmM1Zlx1NmM2MFx1NmM1MFx1NmM1NVx1NmM2MVx1NmM1Ylx1NmM0ZFx1NmM0ZVx1NzA3MFx1NzI1Zlx1NzI1ZFx1NzY3ZVx1N2FmOVx1N2M3M1x1N2NmOFx1N2YzNlx1N2Y4YVx1N2ZiZFx1ODAwMVx1ODAwM1x1ODAw''@;'; put 'put ''Y1x1ODAxMlx1ODAzM1x1ODA3Zlx1ODA4OVx1ODA4Ylx1ODA4Y1x1ODFlM1x1ODFlYVx1ODFmM1x1ODFmY1x1ODIwY1x1ODIxYlx1ODIxZlx1ODI2ZVx1ODI3Mlx1ODI3ZVx1ODY2Ylx1ODg0MFx1ODg0Y1x1ODg2M1x1ODk3Zlx1OTYyMVx1NGUzMlx1NGVhOFx1NGY0ZFx1NGY0Zlx1NGY0N1x1''@;'; put 'put ''NGY1N1x1NGY1ZVx1NGYzNFx1NGY1Ylx1NGY1NVx1NGYzMFx1NGY1MFx1NGY1MVx1NGYzZFx1NGYzYVx1NGYzOFx1NGY0M1x1NGY1NFx1NGYzY1x1NGY0Nlx1NGY2M1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY2XVttXS5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYob2VbeFsxNjZdW21dXT00MjQ5NittLFJbNDI0OTYrbV09eFsxNjZdW21dKTtmb3IoeFsxNjddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmNWNcdTRmNjBcdTRmMmZcdTRmNGVcdTRmMzZcdTRmNTlcdTRmNWRcdTRmNDhc''@;'; put 'put ''dTRmNWFcdTUxNGNcdTUxNGJcdTUxNGRcdTUxNzVcdTUxYjZcdTUxYjdcdTUyMjVcdTUyMjRcdTUyMjlcdTUyMmFcdTUyMjhcdTUyYWJcdTUyYTlcdTUyYWFcdTUyYWNcdTUzMjNcdTUzNzNcdTUzNzVcdTU0MWRcdTU0MmRcdTU0MWVcdTU0M2VcdTU0MjZcdTU0NGVcdTU0MjdcdTU0NDZcdTU0''@;'; put 'put ''NDNcdTU0MzNcdTU0NDhcdTU0NDJcdTU0MWJcdTU0MjlcdTU0NGFcdTU0MzlcdTU0M2JcdTU0MzhcdTU0MmVcdTU0MzVcdTU0MzZcdTU0MjBcdTU0M2NcdTU0NDBcdTU0MzFcdTU0MmJcdTU0MWZcdTU0MmNcdTU2ZWFcdTU2ZjBcdTU2ZTRcdTU2ZWJcdTU3NGFcdTU3NTFcdTU3NDBcdTU3NGRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU3NDdcdTU3NGVcdTU3M2VcdTU3NTBcdTU3NGZcdTU3M2JcdTU4ZWZcdTU5M2VcdTU5OWRcdTU5OTJcdTU5YThcdTU5OWVcdTU5YTNcdTU5OTlcdTU5OTZcdTU5OGRcdTU5YTRcdTU5OTNcdTU5OGFcdTU5YTVcdTViNWRc''@;'; put 'put ''dTViNWNcdTViNWFcdTViNWJcdTViOGNcdTViOGJcdTViOGZcdTVjMmNcdTVjNDBcdTVjNDFcdTVjM2ZcdTVjM2VcdTVjOTBcdTVjOTFcdTVjOTRcdTVjOGNcdTVkZWJcdTVlMGNcdTVlOGZcdTVlODdcdTVlOGFcdTVlZjdcdTVmMDRcdTVmMWZcdTVmNjRcdTVmNjJcdTVmNzdcdTVmNzlcdTVm''@;'; put 'put ''ZDhcdTVmY2NcdTVmZDdcdTVmY2RcdTVmZjFcdTVmZWJcdTVmZjhcdTVmZWFcdTYyMTJcdTYyMTFcdTYyODRcdTYyOTdcdTYyOTZcdTYyODBcdTYyNzZcdTYyODlcdTYyNmRcdTYyOGFcdTYyN2NcdTYyN2VcdTYyNzlcdTYyNzNcdTYyOTJcdTYyNmZcdTYyOThcdTYyNmVcdTYyOTVcdTYyOTNc''@;'; put 'put ''dTYyOTFcdTYyODZcdTY1MzlcdTY1M2JcdTY1MzhcdTY1ZjFcdTY2ZjRcdTY3NWZcdTY3NGVcdTY3NGZcdTY3NTBcdTY3NTFcdTY3NWNcdTY3NTZcdTY3NWVcdTY3NDlcdTY3NDZcdTY3NjBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2N11b''@;'; put 'put ''bV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY3XVttXV09NDI3NTIrbSxSWzQyNzUyK21dPXhbMTY3XVttXSk7Zm9yKHhbMTY4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQyXHU2YzVl''@;'; put 'put ''XHU2Yzk5XHU2YzgxXHU2Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2YzdkXHU2YzgzXHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3MDdjXHU3''@;'; put 'put ''MDdkXHU3MDc4XHU3MjYyXHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3OWMxXHU3OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlhXHU4MGIy''@;'; put 'put ''XHU4MjZmXHU4MjkyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcwXHU4ZGIzXHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2XHU4ZmM1''@;'; put 'put ''XHU4ZmM0XHU1ZGUxXHU5MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJjXHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0ZTliXHU0ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0ZjczXHU0''@;'; put 'put ''ZjdmXHU0ZjZjXHU0ZjliXHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5XHU1MTc3XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4XHU1MjM3''@;'; put 'put ''XHU1MjNhXHU1MjMwXHU1MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1NDc1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY4XS5sZW5ndGg7KyttKTY1''@;'; put 'put ''NTMzIT09eFsxNjhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2OF1bbV1dPTQzMDA4K20sUls0MzAwOCttXT14WzE2OF1bbV0pO2Zvcih4WzE2OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTQ5Nlx1NTQ3OFx1NTQ5NVx1NTQ4''@;'; put 'put ''MFx1NTQ3Ylx1NTQ3N1x1NTQ4NFx1NTQ5Mlx1NTQ4Nlx1NTQ3Y1x1NTQ5MFx1NTQ3MVx1NTQ3Nlx1NTQ4Y1x1NTQ5YVx1NTQ2Mlx1NTQ2OFx1NTQ4Ylx1NTQ3ZFx1NTQ4ZVx1NTZmYVx1NTc4M1x1NTc3N1x1NTc2YVx1NTc2OVx1NTc2MVx1NTc2Nlx1NTc2NFx1NTc3Y1x1NTkxY1x1NTk0OVx1''@;'; put 'put ''NTk0N1x1NTk0OFx1NTk0NFx1NTk1NFx1NTliZVx1NTliYlx1NTlkNFx1NTliOVx1NTlhZVx1NTlkMVx1NTljNlx1NTlkMFx1NTljZFx1NTljYlx1NTlkM1x1NTljYVx1NTlhZlx1NTliM1x1NTlkMlx1NTljNVx1NWI1Zlx1NWI2NFx1NWI2M1x1NWI5N1x1NWI5YVx1NWI5OFx1NWI5Y1x1NWI5''@;'; put 'put ''OVx1NWI5Ylx1NWMxYVx1NWM0OFx1NWM0NVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWM0Nlx1NWNiN1x1NWNhMVx1NWNiOFx1NWNhOVx1NWNhYlx1NWNiMVx1NWNiM1x1NWUxOFx1NWUxYVx1NWUxNlx1NWUxNVx1NWUxYlx1NWUxMVx1NWU3OFx1NWU5YVx1NWU5''@;'; put 'put ''N1x1NWU5Y1x1NWU5NVx1NWU5Nlx1NWVmNlx1NWYyNlx1NWYyN1x1NWYyOVx1NWY4MFx1NWY4MVx1NWY3Zlx1NWY3Y1x1NWZkZFx1NWZlMFx1NWZmZFx1NWZmNVx1NWZmZlx1NjAwZlx1NjAxNFx1NjAyZlx1NjAzNVx1NjAxNlx1NjAyYVx1NjAxNVx1NjAyMVx1NjAyN1x1NjAyOVx1NjAyYlx1''@;'; put 'put ''NjAxYlx1NjIxNlx1NjIxNVx1NjIzZlx1NjIzZVx1NjI0MFx1NjI3Zlx1NjJjOVx1NjJjY1x1NjJjNFx1NjJiZlx1NjJjMlx1NjJiOVx1NjJkMlx1NjJkYlx1NjJhYlx1NjJkM1x1NjJkNFx1NjJjYlx1NjJjOFx1NjJhOFx1NjJiZFx1NjJiY1x1NjJkMFx1NjJkOVx1NjJjN1x1NjJjZFx1NjJi''@;'; put 'put ''NVx1NjJkYVx1NjJiMVx1NjJkOFx1NjJkNlx1NjJkN1x1NjJjNlx1NjJhY1x1NjJjZVx1NjUzZVx1NjVhN1x1NjViY1x1NjVmYVx1NjYxNFx1NjYxM1x1NjYwY1x1NjYwNlx1NjYwMlx1NjYwZVx1NjYwMFx1NjYwZlx1NjYxNVx1NjYwYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2OV0u''@;'; put 'put ''bGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjldW21dXT00MzI2NCttLFJbNDMyNjQrbV09eFsxNjldW21dKTtmb3IoeFsxNzBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY2MDdcdTY3''@;'; put 'put ''MGRcdTY3MGJcdTY3NmRcdTY3OGJcdTY3OTVcdTY3NzFcdTY3OWNcdTY3NzNcdTY3NzdcdTY3ODdcdTY3OWRcdTY3OTdcdTY3NmZcdTY3NzBcdTY3N2ZcdTY3ODlcdTY3N2VcdTY3OTBcdTY3NzVcdTY3OWFcdTY3OTNcdTY3N2NcdTY3NmFcdTY3NzJcdTZiMjNcdTZiNjZcdTZiNjdcdTZiN2Zc''@;'; put 'put ''dTZjMTNcdTZjMWJcdTZjZTNcdTZjZThcdTZjZjNcdTZjYjFcdTZjY2NcdTZjZTVcdTZjYjNcdTZjYmRcdTZjYmVcdTZjYmNcdTZjZTJcdTZjYWJcdTZjZDVcdTZjZDNcdTZjYjhcdTZjYzRcdTZjYjlcdTZjYzFcdTZjYWVcdTZjZDdcdTZjYzVcdTZjZjFcdTZjYmZcdTZjYmJcdTZjZTFcdTZj''@;'; put 'put ''ZGJcdTZjY2FcdTZjYWNcdTZjZWZcdTZjZGNcdTZjZDZcdTZjZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTcwOTVcdTcwOGVcdTcwOTJcdTcwOGFcdTcwOTlcdTcyMmNcdTcyMmRcdTcyMzhcdTcyNDhcdTcyNjdcdTcyNjlcdTcyYzBcdTcyY2VcdTcyZDlcdTcy''@;'; put 'put ''ZDdcdTcyZDBcdTczYTlcdTczYThcdTczOWZcdTczYWJcdTczYTVcdTc1M2RcdTc1OWRcdTc1OTlcdTc1OWFcdTc2ODRcdTc2YzJcdTc2ZjJcdTc2ZjRcdTc3ZTVcdTc3ZmRcdTc5M2VcdTc5NDBcdTc5NDFcdTc5YzlcdTc5YzhcdTdhN2FcdTdhNzlcdTdhZmFcdTdjZmVcdTdmNTRcdTdmOGNc''@;'; put 'put ''dTdmOGJcdTgwMDVcdTgwYmFcdTgwYTVcdTgwYTJcdTgwYjFcdTgwYTFcdTgwYWJcdTgwYTlcdTgwYjRcdTgwYWFcdTgwYWZcdTgxZTVcdTgxZmVcdTgyMGRcdTgyYjNcdTgyOWRcdTgyOTlcdTgyYWRcdTgyYmRcdTgyOWZcdTgyYjlcdTgyYjFcdTgyYWNcdTgyYTVcdTgyYWZcdTgyYjhcdTgy''@;'; put 'put ''YTNcdTgyYjBcdTgyYmVcdTgyYjdcdTg2NGVcdTg2NzFcdTUyMWRcdTg4NjhcdThlY2JcdThmY2VcdThmZDRcdThmZDFcdTkwYjVcdTkwYjhcdTkwYjFcdTkwYjZcdTkxYzdcdTkxZDFcdTk1NzdcdTk1ODBcdTk2MWNcdTk2NDBcdTk2M2ZcdTk2M2JcdTk2NDRcdWZmZmQiLnNwbGl0KCIiKSxt''@;'; put 'put ''PTA7bSE9eFsxNzBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTcwXVttXV09NDM1MjArbSxSWzQzNTIwK21dPXhbMTcwXVttXSk7Zm9yKHhbMTcxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU5NjQyXHU5NmI5XHU5NmU4XHU5NzUyXHU5NzVlXHU0ZTlmXHU0ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0ZmRh''@;'; put 'put ''XHU0ZmNlXHU0ZmRlXHU0ZmI3XHU1MTU3XHU1MTkyXHU1MTkxXHU1MWEwXHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNlXHU1''@;'; put 'put ''NGM5XHU1NGI4XHU1NGE2XHU1NGIzXHU1NGM3XHU1NGMyXHU1NGJkXHU1NGFhXHU1NGMxXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1NzhiXHU1''@;'; put 'put ''N2EwXHU1N2EzXHU1N2EyXHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUwXHU1OWRjXHU1OWQ4XHU1OWZmXHU1OWUzXHU1OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1YmEy''@;'; put 'put ''XHU1YmE1XHU1YzAxXHU1YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1ZTI1XHU1ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEyXHU2''@;'; put 'put ''MDFkXHU2MDIwXHU2MDI1XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQzXHU2MDZjXHU2MDZiXHU2MDZhXHU2MDY0XHU2MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3XHVmZmZk''@;'; put 'put ''Ii5zcGxpdCgiIiksbT0wO20hPXhbMTcxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3MV1bbV1dPTQzNzc2K20sUls0Mzc3NittXT14WzE3MV1bbV0pO2Zvcih4WzE3Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlZlx1NjJlY1x1NjJmZVx1NjJmNFx1NjMxMVx1NjMwMlx1NjUzZlx1NjU0NVx1NjVhYlx1NjViZFx1NjVlMlx1NjYyNVx1NjYyZFx1NjYyMFx1NjYyN1x1NjYyZlx1NjYxZlx1NjYyOFx1NjYzMVx1NjYyNFx1NjZmN1x1NjdmZlx1NjdkM1x1NjdmMVx1Njdk''@;'; put 'put ''NFx1NjdkMFx1NjdlY1x1NjdiNlx1NjdhZlx1NjdmNVx1NjdlOVx1NjdlZlx1NjdjNFx1NjdkMVx1NjdiNFx1NjdkYVx1NjdlNVx1NjdiOFx1NjdjZlx1NjdkZVx1NjdmM1x1NjdiMFx1NjdkOVx1NjdlMlx1NjdkZFx1NjdkMlx1NmI2YVx1NmI4M1x1NmI4Nlx1NmJiNVx1NmJkMlx1NmJkN1x1''@;'; put 'put ''NmMxZlx1NmNjOVx1NmQwYlx1NmQzMlx1NmQyYVx1NmQ0MVx1NmQyNVx1NmQwY1x1NmQzMVx1NmQxZVx1NmQxN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQzYlx1NmQzZFx1NmQzZVx1NmQzNlx1NmQxYlx1NmNmNVx1NmQzOVx1NmQyN1x1NmQzOFx1NmQyOVx1''@;'; put 'put ''NmQyZVx1NmQzNVx1NmQwZVx1NmQyYlx1NzBhYlx1NzBiYVx1NzBiM1x1NzBhY1x1NzBhZlx1NzBhZFx1NzBiOFx1NzBhZVx1NzBhNFx1NzIzMFx1NzI3Mlx1NzI2Zlx1NzI3NFx1NzJlOVx1NzJlMFx1NzJlMVx1NzNiN1x1NzNjYVx1NzNiYlx1NzNiMlx1NzNjZFx1NzNjMFx1NzNiM1x1NzUx''@;'; put 'put ''YVx1NzUyZFx1NzU0Zlx1NzU0Y1x1NzU0ZVx1NzU0Ylx1NzVhYlx1NzVhNFx1NzVhNVx1NzVhMlx1NzVhM1x1NzY3OFx1NzY4Nlx1NzY4N1x1NzY4OFx1NzZjOFx1NzZjNlx1NzZjM1x1NzZjNVx1NzcwMVx1NzZmOVx1NzZmOFx1NzcwOVx1NzcwYlx1NzZmZVx1NzZmY1x1NzcwN1x1NzdkY1x1''@;'; put 'put ''NzgwMlx1NzgxNFx1NzgwY1x1NzgwZFx1Nzk0Nlx1Nzk0OVx1Nzk0OFx1Nzk0N1x1NzliOVx1NzliYVx1NzlkMVx1NzlkMlx1NzljYlx1N2E3Zlx1N2E4MVx1N2FmZlx1N2FmZFx1N2M3ZFx1N2QwMlx1N2QwNVx1N2QwMFx1N2QwOVx1N2QwN1x1N2QwNFx1N2QwNlx1N2YzOFx1N2Y4ZVx1N2Zi''@;'; put 'put ''Zlx1ODAwNFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTcyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzJdW21dXT00NDAzMittLFJbNDQwMzIrbV09eFsxNzJdW21dKTtmb3IoeFsxNzNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgwMTBcdTgwMGRcdTgwMTFcdTgwMzZcdTgwZDZcdTgwZTVcdTgwZGFcdTgwYzNcdTgwYzRcdTgwY2NcdTgwZTFcdTgwZGJcdTgwY2VcdTgwZGVcdTgwZTRcdTgwZGRcdTgxZjRcdTgyMjJcdTgyZTdcdTgzMDNcdTgzMDVcdTgyZTNcdTgy''@;'; put 'put ''ZGJcdTgyZTZcdTgzMDRcdTgyZTVcdTgzMDJcdTgzMDlcdTgyZDJcdTgyZDdcdTgyZjFcdTgzMDFcdTgyZGNcdTgyZDRcdTgyZDFcdTgyZGVcdTgyZDNcdTgyZGZcdTgyZWZcdTgzMDZcdTg2NTBcdTg2NzlcdTg2N2JcdTg2N2FcdTg4NGRcdTg4NmJcdTg5ODFcdTg5ZDRcdThhMDhcdThhMDJc''@;'; put 'put ''dThhMDNcdThjOWVcdThjYTBcdThkNzRcdThkNzNcdThkYjRcdThlY2RcdThlY2NcdThmZjBcdThmZTZcdThmZTJcdThmZWFcdThmZTVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmZWRcdThmZWJcdThmZTRcdThmZThcdTkwY2FcdTkwY2VcdTkwYzFcdTkwYzNc''@;'; put 'put ''dTkxNGJcdTkxNGFcdTkxY2RcdTk1ODJcdTk2NTBcdTk2NGJcdTk2NGNcdTk2NGRcdTk3NjJcdTk3NjlcdTk3Y2JcdTk3ZWRcdTk3ZjNcdTk4MDFcdTk4YThcdTk4ZGJcdTk4ZGZcdTk5OTZcdTk5OTlcdTRlNThcdTRlYjNcdTUwMGNcdTUwMGRcdTUwMjNcdTRmZWZcdTUwMjZcdTUwMjVcdTRm''@;'; put 'put ''ZjhcdTUwMjlcdTUwMTZcdTUwMDZcdTUwM2NcdTUwMWZcdTUwMWFcdTUwMTJcdTUwMTFcdTRmZmFcdTUwMDBcdTUwMTRcdTUwMjhcdTRmZjFcdTUwMjFcdTUwMGJcdTUwMTlcdTUwMThcdTRmZjNcdTRmZWVcdTUwMmRcdTUwMmFcdTRmZmVcdTUwMmJcdTUwMDlcdTUxN2NcdTUxYTRcdTUxYTVc''@;'; put 'put ''dTUxYTJcdTUxY2RcdTUxY2NcdTUxYzZcdTUxY2JcdTUyNTZcdTUyNWNcdTUyNTRcdTUyNWJcdTUyNWRcdTUzMmFcdTUzN2ZcdTUzOWZcdTUzOWRcdTUzZGZcdTU0ZThcdTU1MTBcdTU1MDFcdTU1MzdcdTU0ZmNcdTU0ZTVcdTU0ZjJcdTU1MDZcdTU0ZmFcdTU1MTRcdTU0ZTlcdTU0ZWRcdTU0''@;'; put 'put ''ZTFcdTU1MDlcdTU0ZWVcdTU0ZWFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTczXVttXV09NDQyODgrbSxSWzQ0Mjg4K21dPXhbMTczXVttXSk7Zm9yKHhbMTc0XT0iXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2MyXHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1YTE4XHU1YTFjXHU1YTFmXHU1''@;'; put 'put ''YTFiXHU1YTEzXHU1OWVjXHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2ZkXHU1Y2ZiXHU1Y2VhXHU1Y2U4''@;'; put 'put ''XHU1Y2YwXHU1Y2Y2XHU1ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5''@;'; put 'put ''XHU2MDZmXHU2MDg0XHU2MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNlXHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2''@;'; put 'put ''MzRkXHU2MzRjXHU2NTQ4XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5''@;'; put 'put ''XHU2OGIzXHU2ODE3XHU2ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQxXHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2''@;'; put 'put ''ZDg3XHU2ZDY2XHU2ZDc4XHU2ZDc3XHU2ZDU5XHU2ZDkzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3NF1bbV1dPTQ0NTQ0K20sUls0NDU0NCttXT14WzE3NF1bbV0pO2Zvcih4WzE3NV09''@;'; put 'put ''Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ2Y1x1NmQ4OVx1NmQ2ZVx1NmQ1YVx1NmQ3NFx1NmQ2OVx1NmQ4Y1x1NmQ4YVx1NmQ3OVx1NmQ4NVx1NmQ2NVx1NmQ5NFx1NzBjYVx1NzBkOFx1NzBlNFx1NzBkOVx1NzBjOFx1NzBjZlx1''@;'; put 'put ''NzIzOVx1NzI3OVx1NzJmY1x1NzJmOVx1NzJmZFx1NzJmOFx1NzJmN1x1NzM4Nlx1NzNlZFx1NzQwOVx1NzNlZVx1NzNlMFx1NzNlYVx1NzNkZVx1NzU1NFx1NzU1ZFx1NzU1Y1x1NzU1YVx1NzU1OVx1NzViZVx1NzVjNVx1NzVjN1x1NzViMlx1NzViM1x1NzViZFx1NzViY1x1NzViOVx1NzVj''@;'; put 'put ''Mlx1NzViOFx1NzY4Ylx1NzZiMFx1NzZjYVx1NzZjZFx1NzZjZVx1NzcyOVx1NzcxZlx1NzcyMFx1NzcyOFx1NzdlOVx1NzgzMFx1NzgyN1x1NzgzOFx1NzgxZFx1NzgzNFx1NzgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzgyNVx1NzgyZFx1NzgyMFx1Nzgx''@;'; put 'put ''Zlx1NzgzMlx1Nzk1NVx1Nzk1MFx1Nzk2MFx1Nzk1Zlx1Nzk1Nlx1Nzk1ZVx1Nzk1ZFx1Nzk1N1x1Nzk1YVx1NzllNFx1NzllM1x1NzllN1x1NzlkZlx1NzllNlx1NzllOVx1NzlkOFx1N2E4NFx1N2E4OFx1N2FkOVx1N2IwNlx1N2IxMVx1N2M4OVx1N2QyMVx1N2QxN1x1N2QwYlx1N2QwYVx1''@;'; put 'put ''N2QyMFx1N2QyMlx1N2QxNFx1N2QxMFx1N2QxNVx1N2QxYVx1N2QxY1x1N2QwZFx1N2QxOVx1N2QxYlx1N2YzYVx1N2Y1Zlx1N2Y5NFx1N2ZjNVx1N2ZjMVx1ODAwNlx1ODAxOFx1ODAxNVx1ODAxOVx1ODAxN1x1ODAzZFx1ODAzZlx1ODBmMVx1ODEwMlx1ODBmMFx1ODEwNVx1ODBlZFx1ODBm''@;'; put 'put ''NFx1ODEwNlx1ODBmOFx1ODBmM1x1ODEwOFx1ODBmZFx1ODEwYVx1ODBmY1x1ODBlZlx1ODFlZFx1ODFlY1x1ODIwMFx1ODIxMFx1ODIyYVx1ODIyYlx1ODIyOFx1ODIyY1x1ODJiYlx1ODMyYlx1ODM1Mlx1ODM1NFx1ODM0YVx1ODMzOFx1ODM1MFx1ODM0OVx1ODMzNVx1ODMzNFx1ODM0Zlx1''@;'; put 'put ''ODMzMlx1ODMzOVx1ODMzNlx1ODMxN1x1ODM0MFx1ODMzMVx1ODMyOFx1ODM0M1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzVdW21dXT00NDgwMCttLFJbNDQ4MDArbV09eFsxNzVdW21d''@;'; put 'put ''KTtmb3IoeFsxNzZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg2NTRcdTg2OGFcdTg2YWFcdTg2OTNcdTg2YTRcdTg2YTlcdTg2OGNcdTg2YTNcdTg2OWNcdTg4NzBcdTg4NzdcdTg4ODFcdTg4ODJcdTg4N2RcdTg4NzlcdThhMThc''@;'; put 'put ''dThhMTBcdThhMGVcdThhMGNcdThhMTVcdThhMGFcdThhMTdcdThhMTNcdThhMTZcdThhMGZcdThhMTFcdThjNDhcdThjN2FcdThjNzlcdThjYTFcdThjYTJcdThkNzdcdThlYWNcdThlZDJcdThlZDRcdThlY2ZcdThmYjFcdTkwMDFcdTkwMDZcdThmZjdcdTkwMDBcdThmZmFcdThmZjRcdTkw''@;'; put 'put ''MDNcdThmZmRcdTkwMDVcdThmZjhcdTkwOTVcdTkwZTFcdTkwZGRcdTkwZTJcdTkxNTJcdTkxNGRcdTkxNGNcdTkxZDhcdTkxZGRcdTkxZDdcdTkxZGNcdTkxZDlcdTk1ODNcdTk2NjJcdTk2NjNcdTk2NjFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2NWJcdTk2''@;'; put 'put ''NWRcdTk2NjRcdTk2NThcdTk2NWVcdTk2YmJcdTk4ZTJcdTk5YWNcdTlhYThcdTlhZDhcdTliMjVcdTliMzJcdTliM2NcdTRlN2VcdTUwN2FcdTUwN2RcdTUwNWNcdTUwNDdcdTUwNDNcdTUwNGNcdTUwNWFcdTUwNDlcdTUwNjVcdTUwNzZcdTUwNGVcdTUwNTVcdTUwNzVcdTUwNzRcdTUwNzdc''@;'; put 'put ''dTUwNGZcdTUwMGZcdTUwNmZcdTUwNmRcdTUxNWNcdTUxOTVcdTUxZjBcdTUyNmFcdTUyNmZcdTUyZDJcdTUyZDlcdTUyZDhcdTUyZDVcdTUzMTBcdTUzMGZcdTUzMTlcdTUzM2ZcdTUzNDBcdTUzM2VcdTUzYzNcdTY2ZmNcdTU1NDZcdTU1NmFcdTU1NjZcdTU1NDRcdTU1NWVcdTU1NjFcdTU1''@;'; put 'put ''NDNcdTU1NGFcdTU1MzFcdTU1NTZcdTU1NGZcdTU1NTVcdTU1MmZcdTU1NjRcdTU1MzhcdTU1MmVcdTU1NWNcdTU1MmNcdTU1NjNcdTU1MzNcdTU1NDFcdTU1NTdcdTU3MDhcdTU3MGJcdTU3MDlcdTU3ZGZcdTU4MDVcdTU4MGFcdTU4MDZcdTU3ZTBcdTU3ZTRcdTU3ZmFcdTU4MDJcdTU4MzVc''@;'; put 'put ''dTU3ZjdcdTU3ZjlcdTU5MjBcdTU5NjJcdTVhMzZcdTVhNDFcdTVhNDlcdTVhNjZcdTVhNmFcdTVhNDBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTc2XVttXV09NDUwNTYrbSxSWzQ1MDU2''@;'; put 'put ''K21dPXhbMTc2XVttXSk7Zm9yKHhbMTc3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTNjXHU1YTYyXHU1YTVhXHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4''@;'; put 'put ''XHU1YzA3XHU1YzYwXHU1YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0XHU1ZDI3XHU1ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1''@;'; put 'put ''ZjM1XHU1ZjM3XHU1ZjU3XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2MDg5XHU2MGEwXHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHU2MGM1XHU2MGJiXHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2M2EyXHU2M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5''@;'; put 'put ''XHU2Mzg5XHU2MzgzXHU2MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUxXHU2NTU5XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2''@;'; put 'put ''NTljXHU2NTliXHU2NWFjXHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2OGI1XHU2ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgz''@;'; put 'put ''XHU2OGM0XHU2OGFkXHU2ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3N11bbV1dPTQ1''@;'; put 'put ''MzEyK20sUls0NTMxMittXT14WzE3N11bbV0pO2Zvcih4WzE3OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJlYlx1NmJlY1x1NmMyYlx1NmQ4ZVx1NmRiY1x1NmRmM1x1NmRkOVx1NmRiMlx1NmRlMVx1NmRjY1x1NmRlNFx1NmRm''@;'; put 'put ''Ylx1NmRmYVx1NmUwNVx1NmRjN1x1NmRjYlx1NmRhZlx1NmRkMVx1NmRhZVx1NmRkZVx1NmRmOVx1NmRiOFx1NmRmN1x1NmRmNVx1NmRjNVx1NmRkMlx1NmUxYVx1NmRiNVx1NmRkYVx1NmRlYlx1NmRkOFx1NmRlYVx1NmRmMVx1NmRlZVx1NmRlOFx1NmRjNlx1NmRjNFx1NmRhYVx1NmRlY1x1''@;'; put 'put ''NmRiZlx1NmRlNlx1NzBmOVx1NzEwOVx1NzEwYVx1NzBmZFx1NzBlZlx1NzIzZFx1NzI3ZFx1NzI4MVx1NzMxY1x1NzMxYlx1NzMxNlx1NzMxM1x1NzMxOVx1NzM4N1x1NzQwNVx1NzQwYVx1NzQwM1x1NzQwNlx1NzNmZVx1NzQwZFx1NzRlMFx1NzRmNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRmN1x1NzUxY1x1NzUyMlx1NzU2NVx1NzU2Nlx1NzU2Mlx1NzU3MFx1NzU4Zlx1NzVkNFx1NzVkNVx1NzViNVx1NzVjYVx1NzVjZFx1NzY4ZVx1NzZkNFx1NzZkMlx1NzZkYlx1NzczN1x1NzczZVx1NzczY1x1NzczNlx1NzczOFx1NzczYVx1Nzg2Ylx1Nzg0''@;'; put 'put ''M1x1Nzg0ZVx1Nzk2NVx1Nzk2OFx1Nzk2ZFx1NzlmYlx1N2E5Mlx1N2E5NVx1N2IyMFx1N2IyOFx1N2IxYlx1N2IyY1x1N2IyNlx1N2IxOVx1N2IxZVx1N2IyZVx1N2M5Mlx1N2M5N1x1N2M5NVx1N2Q0Nlx1N2Q0M1x1N2Q3MVx1N2QyZVx1N2QzOVx1N2QzY1x1N2Q0MFx1N2QzMFx1N2QzM1x1''@;'; put 'put ''N2Q0NFx1N2QyZlx1N2Q0Mlx1N2QzMlx1N2QzMVx1N2YzZFx1N2Y5ZVx1N2Y5YVx1N2ZjY1x1N2ZjZVx1N2ZkMlx1ODAxY1x1ODA0YVx1ODA0Nlx1ODEyZlx1ODExNlx1ODEyM1x1ODEyYlx1ODEyOVx1ODEzMFx1ODEyNFx1ODIwMlx1ODIzNVx1ODIzN1x1ODIzNlx1ODIzOVx1ODM4ZVx1ODM5''@;'; put 'put ''ZVx1ODM5OFx1ODM3OFx1ODNhMlx1ODM5Nlx1ODNiZFx1ODNhYlx1ODM5Mlx1ODM4YVx1ODM5M1x1ODM4OVx1ODNhMFx1ODM3N1x1ODM3Ylx1ODM3Y1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc4XVttXS5jaGFyQ29kZUF0KDApJiYob2Vb''@;'; put 'put ''eFsxNzhdW21dXT00NTU2OCttLFJbNDU1NjgrbV09eFsxNzhdW21dKTtmb3IoeFsxNzldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzODZcdTgzYTdcdTg2NTVcdTVmNmFcdTg2YzdcdTg2YzBcdTg2YjZcdTg2YzRcdTg2YjVcdTg2''@;'; put 'put ''YzZcdTg2Y2JcdTg2YjFcdTg2YWZcdTg2YzlcdTg4NTNcdTg4OWVcdTg4ODhcdTg4YWJcdTg4OTJcdTg4OTZcdTg4OGRcdTg4OGJcdTg5OTNcdTg5OGZcdThhMmFcdThhMWRcdThhMjNcdThhMjVcdThhMzFcdThhMmRcdThhMWZcdThhMWJcdThhMjJcdThjNDlcdThjNWFcdThjYTlcdThjYWNc''@;'; put 'put ''dThjYWJcdThjYThcdThjYWFcdThjYTdcdThkNjdcdThkNjZcdThkYmVcdThkYmFcdThlZGJcdThlZGZcdTkwMTlcdTkwMGRcdTkwMWFcdTkwMTdcdTkwMjNcdTkwMWZcdTkwMWRcdTkwMTBcdTkwMTVcdTkwMWVcdTkwMjBcdTkwMGZcdTkwMjJcdTkwMTZcdTkwMWJcdTkwMTRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwZThcdTkwZWRcdTkwZmRcdTkxNTdcdTkxY2VcdTkxZjVcdTkxZTZcdTkxZTNcdTkxZTdcdTkxZWRcdTkxZTlcdTk1ODlcdTk2NmFcdTk2NzVcdTk2NzNcdTk2NzhcdTk2NzBcdTk2NzRcdTk2NzZcdTk2NzdcdTk2NmNcdTk2YzBcdTk2''@;'; put 'put ''ZWFcdTk2ZTlcdTdhZTBcdTdhZGZcdTk4MDJcdTk4MDNcdTliNWFcdTljZTVcdTllNzVcdTllN2ZcdTllYTVcdTllYmJcdTUwYTJcdTUwOGRcdTUwODVcdTUwOTlcdTUwOTFcdTUwODBcdTUwOTZcdTUwOThcdTUwOWFcdTY3MDBcdTUxZjFcdTUyNzJcdTUyNzRcdTUyNzVcdTUyNjlcdTUyZGVc''@;'; put 'put ''dTUyZGRcdTUyZGJcdTUzNWFcdTUzYTVcdTU1N2JcdTU1ODBcdTU1YTdcdTU1N2NcdTU1OGFcdTU1OWRcdTU1OThcdTU1ODJcdTU1OWNcdTU1YWFcdTU1OTRcdTU1ODdcdTU1OGJcdTU1ODNcdTU1YjNcdTU1YWVcdTU1OWZcdTU1M2VcdTU1YjJcdTU1OWFcdTU1YmJcdTU1YWNcdTU1YjFcdTU1''@;'; put 'put ''N2VcdTU1ODlcdTU1YWJcdTU1OTlcdTU3MGRcdTU4MmZcdTU4MmFcdTU4MzRcdTU4MjRcdTU4MzBcdTU4MzFcdTU4MjFcdTU4MWRcdTU4MjBcdTU4ZjlcdTU4ZmFcdTU5NjBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3OV1bbV0uY2hhckNv''@;'; put 'put ''ZGVBdCgwKSYmKG9lW3hbMTc5XVttXV09NDU4MjQrbSxSWzQ1ODI0K21dPXhbMTc5XVttXSk7Zm9yKHhbMTgwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1''@;'; put 'put ''YjcxXHU1YmQyXHU1YmNjXHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBiXHU1YzMxXHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQx''@;'; put 'put ''XHU2MGUxXHU2MGIyXHU2MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2MGZhXHU2MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2''@;'; put 'put ''M2NkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2UxXHU2M2Q2XHU2M2VkXHU2M2VlXHU2Mzc2XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2''@;'; put 'put ''NWFmXHU2NjZlXHU2NjcwXHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2NmZmXHU2NzFmXHU2NzFkXHU2OGZhXHU2OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUz''@;'; put 'put ''XHU2OGNiXHU2OGNkXHU2OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNhXHU2YjNkXHU2Yjk4XHU2Yjk2XHU2YmJjXHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2''@;'; put 'put ''ZTI1XHU2ZTIzXHU2ZTFiXHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2ZTM0XHU2ZTRkXHU2ZTNhXHU2ZTJjXHU2ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTgwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsx''@;'; put 'put ''ODBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4MF1bbV1dPTQ2MDgwK20sUls0NjA4MCttXT14WzE4MF1bbV0pO2Zvcih4WzE4MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmU4OVx1NmUxOVx1NmU0ZVx1NmU2M1x1NmU0NFx1''@;'; put 'put ''NmU3Mlx1NmU2OVx1NmU1Zlx1NzExOVx1NzExYVx1NzEyNlx1NzEzMFx1NzEyMVx1NzEzNlx1NzE2ZVx1NzExY1x1NzI0Y1x1NzI4NFx1NzI4MFx1NzMzNlx1NzMyNVx1NzMzNFx1NzMyOVx1NzQzYVx1NzQyYVx1NzQzM1x1NzQyMlx1NzQyNVx1NzQzNVx1NzQzNlx1NzQzNFx1NzQyZlx1NzQx''@;'; put 'put ''Ylx1NzQyNlx1NzQyOFx1NzUyNVx1NzUyNlx1NzU2Ylx1NzU2YVx1NzVlMlx1NzVkYlx1NzVlM1x1NzVkOVx1NzVkOFx1NzVkZVx1NzVlMFx1NzY3Ylx1NzY3Y1x1NzY5Nlx1NzY5M1x1NzZiNFx1NzZkY1x1Nzc0Zlx1NzdlZFx1Nzg1ZFx1Nzg2Y1x1Nzg2Zlx1N2EwZFx1N2EwOFx1N2EwYlx1''@;'; put 'put ''N2EwNVx1N2EwMFx1N2E5OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2E5N1x1N2E5Nlx1N2FlNVx1N2FlM1x1N2I0OVx1N2I1Nlx1N2I0Nlx1N2I1MFx1N2I1Mlx1N2I1NFx1N2I0ZFx1N2I0Ylx1N2I0Zlx1N2I1MVx1N2M5Zlx1N2NhNVx1N2Q1ZVx1N2Q1MFx1''@;'; put 'put ''N2Q2OFx1N2Q1NVx1N2QyYlx1N2Q2ZVx1N2Q3Mlx1N2Q2MVx1N2Q2Nlx1N2Q2Mlx1N2Q3MFx1N2Q3M1x1NTU4NFx1N2ZkNFx1N2ZkNVx1ODAwYlx1ODA1Mlx1ODA4NVx1ODE1NVx1ODE1NFx1ODE0Ylx1ODE1MVx1ODE0ZVx1ODEzOVx1ODE0Nlx1ODEzZVx1ODE0Y1x1ODE1M1x1ODE3NFx1ODIx''@;'; put 'put ''Mlx1ODIxY1x1ODNlOVx1ODQwM1x1ODNmOFx1ODQwZFx1ODNlMFx1ODNjNVx1ODQwYlx1ODNjMVx1ODNlZlx1ODNmMVx1ODNmNFx1ODQ1N1x1ODQwYVx1ODNmMFx1ODQwY1x1ODNjY1x1ODNmZFx1ODNmMlx1ODNjYVx1ODQzOFx1ODQwZVx1ODQwNFx1ODNkY1x1ODQwN1x1ODNkNFx1ODNkZlx1''@;'; put 'put ''ODY1Ylx1ODZkZlx1ODZkOVx1ODZlZFx1ODZkNFx1ODZkYlx1ODZlNFx1ODZkMFx1ODZkZVx1ODg1N1x1ODhjMVx1ODhjMlx1ODhiMVx1ODk4M1x1ODk5Nlx1OGEzYlx1OGE2MFx1OGE1NVx1OGE1ZVx1OGEzY1x1OGE0MVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4MV0ubGVuZ3RoOysr''@;'; put 'put ''bSk2NTUzMyE9PXhbMTgxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODFdW21dXT00NjMzNittLFJbNDYzMzYrbV09eFsxODFdW21dKTtmb3IoeFsxODJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhNTRcdThhNWJcdThhNTBc''@;'; put 'put ''dThhNDZcdThhMzRcdThhM2FcdThhMzZcdThhNTZcdThjNjFcdThjODJcdThjYWZcdThjYmNcdThjYjNcdThjYmRcdThjYzFcdThjYmJcdThjYzBcdThjYjRcdThjYjdcdThjYjZcdThjYmZcdThjYjhcdThkOGFcdThkODVcdThkODFcdThkY2VcdThkZGRcdThkY2JcdThkZGFcdThkZDFcdThk''@;'; put 'put ''Y2NcdThkZGJcdThkYzZcdThlZmJcdThlZjhcdThlZmNcdThmOWNcdTkwMmVcdTkwMzVcdTkwMzFcdTkwMzhcdTkwMzJcdTkwMzZcdTkxMDJcdTkwZjVcdTkxMDlcdTkwZmVcdTkxNjNcdTkxNjVcdTkxY2ZcdTkyMTRcdTkyMTVcdTkyMjNcdTkyMDlcdTkyMWVcdTkyMGRcdTkyMTBcdTkyMDdc''@;'; put 'put ''dTkyMTFcdTk1OTRcdTk1OGZcdTk1OGJcdTk1OTFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk1OTNcdTk1OTJcdTk1OGVcdTk2OGFcdTk2OGVcdTk2OGJcdTk2N2RcdTk2ODVcdTk2ODZcdTk2OGRcdTk2NzJcdTk2ODRcdTk2YzFcdTk2YzVcdTk2YzRcdTk2YzZc''@;'; put 'put ''dTk2YzdcdTk2ZWZcdTk2ZjJcdTk3Y2NcdTk4MDVcdTk4MDZcdTk4MDhcdTk4ZTdcdTk4ZWFcdTk4ZWZcdTk4ZTlcdTk4ZjJcdTk4ZWRcdTk5YWVcdTk5YWRcdTllYzNcdTllY2RcdTllZDFcdTRlODJcdTUwYWRcdTUwYjVcdTUwYjJcdTUwYjNcdTUwYzVcdTUwYmVcdTUwYWNcdTUwYjdcdTUw''@;'; put 'put ''YmJcdTUwYWZcdTUwYzdcdTUyN2ZcdTUyNzdcdTUyN2RcdTUyZGZcdTUyZTZcdTUyZTRcdTUyZTJcdTUyZTNcdTUzMmZcdTU1ZGZcdTU1ZThcdTU1ZDNcdTU1ZTZcdTU1Y2VcdTU1ZGNcdTU1YzdcdTU1ZDFcdTU1ZTNcdTU1ZTRcdTU1ZWZcdTU1ZGFcdTU1ZTFcdTU1YzVcdTU1YzZcdTU1ZTVc''@;'; put 'put ''dTU1YzlcdTU3MTJcdTU3MTNcdTU4NWVcdTU4NTFcdTU4NThcdTU4NTdcdTU4NWFcdTU4NTRcdTU4NmJcdTU4NGNcdTU4NmRcdTU4NGFcdTU4NjJcdTU4NTJcdTU4NGJcdTU5NjdcdTVhYzFcdTVhYzlcdTVhY2NcdTVhYmVcdTVhYmRcdTVhYmNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsx''@;'; put 'put ''ODJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTgyXVttXV09NDY1OTIrbSxSWzQ2NTkyK21dPXhbMTgyXVttXSk7Zm9yKHhbMTgzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWIz''@;'; put 'put ''XHU1YWMyXHU1YWIyXHU1ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRkXHU2MTNlXHU2MTM0XHU2''@;'; put 'put ''MTI3XHU2MTBkXHU2MTA2XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2Njg5XHU2Njg3XHU2Njg4''@;'; put 'put ''XHU2Njk2XHU2Njg0XHU2Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2OTVhXHU2OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2''@;'; put 'put ''XHU2OTVkXHU2OTYzXHU2OTViXHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkwXHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2''@;'; put 'put ''ZWQ0XHU2ZWFhXHU2ZWE3XHU2ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1''@;'; put 'put ''XHU3NDVmXHU3NDVlXHU3NDQxXHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZhXHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzXHVmZmZkIi5zcGxpdCgi''@;'; put 'put ''IiksbT0wO20hPXhbMTgzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4M11bbV1dPTQ2ODQ4K20sUls0Njg0OCttXT14WzE4M11bbV0pO2Zvcih4WzE4NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1Nzc3OVx1Nzc2YVx1Nzc2Y1x1Nzc1Y1x1Nzc2NVx1Nzc2OFx1Nzc2Mlx1NzdlZVx1Nzg4ZVx1NzhiMFx1Nzg5N1x1Nzg5OFx1Nzg4Y1x1Nzg4OVx1Nzg3Y1x1Nzg5MVx1Nzg5M1x1Nzg3Zlx1Nzk3YVx1Nzk3Zlx1Nzk4MVx1ODQyY1x1NzliZFx1N2ExY1x1N2ExYVx1N2EyMFx1''@;'; put 'put ''N2ExNFx1N2ExZlx1N2ExZVx1N2E5Zlx1N2FhMFx1N2I3N1x1N2JjMFx1N2I2MFx1N2I2ZVx1N2I2N1x1N2NiMVx1N2NiM1x1N2NiNVx1N2Q5M1x1N2Q3OVx1N2Q5MVx1N2Q4MVx1N2Q4Zlx1N2Q1Ylx1N2Y2ZVx1N2Y2OVx1N2Y2YVx1N2Y3Mlx1N2ZhOVx1N2ZhOFx1N2ZhNFx1ODA1Nlx1ODA1''@;'; put 'put ''OFx1ODA4Nlx1ODA4NFx1ODE3MVx1ODE3MFx1ODE3OFx1ODE2NVx1ODE2ZVx1ODE3M1x1ODE2Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE3OVx1ODE3YVx1ODE2Nlx1ODIwNVx1ODI0N1x1ODQ4Mlx1ODQ3N1x1ODQzZFx1ODQzMVx1ODQ3NVx1ODQ2Nlx1ODQ2''@;'; put 'put ''Ylx1ODQ0OVx1ODQ2Y1x1ODQ1Ylx1ODQzY1x1ODQzNVx1ODQ2MVx1ODQ2M1x1ODQ2OVx1ODQ2ZFx1ODQ0Nlx1ODY1ZVx1ODY1Y1x1ODY1Zlx1ODZmOVx1ODcxM1x1ODcwOFx1ODcwN1x1ODcwMFx1ODZmZVx1ODZmYlx1ODcwMlx1ODcwM1x1ODcwNlx1ODcwYVx1ODg1OVx1ODhkZlx1ODhkNFx1''@;'; put 'put ''ODhkOVx1ODhkY1x1ODhkOFx1ODhkZFx1ODhlMVx1ODhjYVx1ODhkNVx1ODhkMlx1ODk5Y1x1ODllM1x1OGE2Ylx1OGE3Mlx1OGE3M1x1OGE2Nlx1OGE2OVx1OGE3MFx1OGE4N1x1OGE3Y1x1OGE2M1x1OGFhMFx1OGE3MVx1OGE4NVx1OGE2ZFx1OGE2Mlx1OGE2ZVx1OGE2Y1x1OGE3OVx1OGE3''@;'; put 'put ''Ylx1OGEzZVx1OGE2OFx1OGM2Mlx1OGM4YVx1OGM4OVx1OGNjYVx1OGNjN1x1OGNjOFx1OGNjNFx1OGNiMlx1OGNjM1x1OGNjMlx1OGNjNVx1OGRlMVx1OGRkZlx1OGRlOFx1OGRlZlx1OGRmM1x1OGRmYVx1OGRlYVx1OGRlNFx1OGRlNlx1OGViMlx1OGYwM1x1OGYwOVx1OGVmZVx1OGYwYVx1''@;'; put 'put ''ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODRdW21dXT00NzEwNCttLFJbNDcxMDQrbV09eFsxODRdW21dKTtmb3IoeFsxODVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmOWZcdThmYjJcdTkwNGJcdTkwNGFcdTkwNTNcdTkwNDJcdTkwNTRcdTkwM2NcdTkwNTVcdTkwNTBcdTkwNDdcdTkwNGZcdTkwNGVcdTkwNGRcdTkwNTFcdTkwM2VcdTkwNDFcdTkxMTJcdTkxMTdcdTkxNmNcdTkxNmFcdTkxNjlcdTkxYzlcdTkyMzdc''@;'; put 'put ''dTkyNTdcdTkyMzhcdTkyM2RcdTkyNDBcdTkyM2VcdTkyNWJcdTkyNGJcdTkyNjRcdTkyNTFcdTkyMzRcdTkyNDlcdTkyNGRcdTkyNDVcdTkyMzlcdTkyM2ZcdTkyNWFcdTk1OThcdTk2OThcdTk2OTRcdTk2OTVcdTk2Y2RcdTk2Y2JcdTk2YzlcdTk2Y2FcdTk2ZjdcdTk2ZmJcdTk2ZjlcdTk2''@;'; put 'put ''ZjZcdTk3NTZcdTk3NzRcdTk3NzZcdTk4MTBcdTk4MTFcdTk4MTNcdTk4MGFcdTk4MTJcdTk4MGNcdTk4ZmNcdTk4ZjRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk4ZmRcdTk4ZmVcdTk5YjNcdTk5YjFcdTk5YjRcdTlhZTFcdTljZTlcdTllODJcdTlmMGVcdTlm''@;'; put 'put ''MTNcdTlmMjBcdTUwZTdcdTUwZWVcdTUwZTVcdTUwZDZcdTUwZWRcdTUwZGFcdTUwZDVcdTUwY2ZcdTUwZDFcdTUwZjFcdTUwY2VcdTUwZTlcdTUxNjJcdTUxZjNcdTUyODNcdTUyODJcdTUzMzFcdTUzYWRcdTU1ZmVcdTU2MDBcdTU2MWJcdTU2MTdcdTU1ZmRcdTU2MTRcdTU2MDZcdTU2MDlc''@;'; put 'put ''dTU2MGRcdTU2MGVcdTU1ZjdcdTU2MTZcdTU2MWZcdTU2MDhcdTU2MTBcdTU1ZjZcdTU3MThcdTU3MTZcdTU4NzVcdTU4N2VcdTU4ODNcdTU4OTNcdTU4OGFcdTU4NzlcdTU4ODVcdTU4N2RcdTU4ZmRcdTU5MjVcdTU5MjJcdTU5MjRcdTU5NmFcdTU5NjlcdTVhZTFcdTVhZTZcdTVhZTlcdTVh''@;'; put 'put ''ZDdcdTVhZDZcdTVhZDhcdTVhZTNcdTViNzVcdTViZGVcdTViZTdcdTViZTFcdTViZTVcdTViZTZcdTViZThcdTViZTJcdTViZTRcdTViZGZcdTVjMGRcdTVjNjJcdTVkODRcdTVkODdcdTVlNWJcdTVlNjNcdTVlNTVcdTVlNTdcdTVlNTRcdTVlZDNcdTVlZDZcdTVmMGFcdTVmNDZcdTVmNzBc''@;'; put 'put ''dTVmYjlcdTYxNDdcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg1XVttXV09NDczNjArbSxSWzQ3MzYwK21dPXhbMTg1XVttXSk7Zm9yKHhbMTg2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2MjJhXHU2NDg3XHU2NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdi''@;'; put 'put ''XHU2NTcyXHU2NWExXHU2NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTliXHU2OWI3XHU2OWJiXHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2''@;'; put 'put ''YjRjXHU2YzMzXHU2ZjMzXHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZWZmXHU2ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2''@;'; put 'put ''ZjE1XHU2ZjJiXHU2ZjJmXHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUwXHU3NDY0XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkx''@;'; put 'put ''XHU3NjI3XHU3NjBkXHU3NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIzXHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3YTJlXHU3YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3''@;'; put 'put ''Yjk1XHU3YjhiXHU3Yjc1XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0XHU3ZGIyXHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4''@;'; put 'put ''XHU3ZGFkXHU3ZGQyXHU3ZGM3XHU3ZGFjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4Nl1bbV1dPTQ3NjE2K20sUls0NzYxNittXT14WzE4Nl1bbV0pO2Zvcih4WzE4N109Ilx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y3MFx1N2ZlMFx1N2ZlMVx1N2ZkZlx1ODA1ZVx1ODA1YVx1ODA4N1x1ODE1MFx1ODE4MFx1ODE4Zlx1ODE4OFx1ODE4YVx1ODE3Zlx1ODE4Mlx1ODFlN1x1ODFmYVx1ODIwN1x1ODIxNFx1ODIxZVx1ODI0''@;'; put 'put ''Ylx1ODRjOVx1ODRiZlx1ODRjNlx1ODRjNFx1ODQ5OVx1ODQ5ZVx1ODRiMlx1ODQ5Y1x1ODRjYlx1ODRiOFx1ODRjMFx1ODRkM1x1ODQ5MFx1ODRiY1x1ODRkMVx1ODRjYVx1ODczZlx1ODcxY1x1ODczYlx1ODcyMlx1ODcyNVx1ODczNFx1ODcxOFx1ODc1NVx1ODczN1x1ODcyOVx1ODhmM1x1''@;'; put 'put ''ODkwMlx1ODhmNFx1ODhmOVx1ODhmOFx1ODhmZFx1ODhlOFx1ODkxYVx1ODhlZlx1OGFhNlx1OGE4Y1x1OGE5ZVx1OGFhM1x1OGE4ZFx1OGFhMVx1OGE5M1x1OGFhNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGFhYVx1OGFhNVx1OGFhOFx1OGE5OFx1OGE5MVx1''@;'; put 'put ''OGE5YVx1OGFhN1x1OGM2YVx1OGM4ZFx1OGM4Y1x1OGNkM1x1OGNkMVx1OGNkMlx1OGQ2Ylx1OGQ5OVx1OGQ5NVx1OGRmY1x1OGYxNFx1OGYxMlx1OGYxNVx1OGYxM1x1OGZhM1x1OTA2MFx1OTA1OFx1OTA1Y1x1OTA2M1x1OTA1OVx1OTA1ZVx1OTA2Mlx1OTA1ZFx1OTA1Ylx1OTExOVx1OTEx''@;'; put 'put ''OFx1OTExZVx1OTE3NVx1OTE3OFx1OTE3N1x1OTE3NFx1OTI3OFx1OTI4MFx1OTI4NVx1OTI5OFx1OTI5Nlx1OTI3Ylx1OTI5M1x1OTI5Y1x1OTJhOFx1OTI3Y1x1OTI5MVx1OTVhMVx1OTVhOFx1OTVhOVx1OTVhM1x1OTVhNVx1OTVhNFx1OTY5OVx1OTY5Y1x1OTY5Ylx1OTZjY1x1OTZkMlx1''@;'; put 'put ''OTcwMFx1OTc3Y1x1OTc4NVx1OTdmNlx1OTgxN1x1OTgxOFx1OThhZlx1OThiMVx1OTkwM1x1OTkwNVx1OTkwY1x1OTkwOVx1OTljMVx1OWFhZlx1OWFiMFx1OWFlNlx1OWI0MVx1OWI0Mlx1OWNmNFx1OWNmNlx1OWNmM1x1OWViY1x1OWYzYlx1OWY0YVx1NTEwNFx1NTEwMFx1NTBmYlx1NTBm''@;'; put 'put ''NVx1NTBmOVx1NTEwMlx1NTEwOFx1NTEwOVx1NTEwNVx1NTFkY1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODddW21dXT00Nzg3MittLFJbNDc4NzIrbV09eFsxODddW21dKTtmb3IoeFsx''@;'; put 'put ''ODhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUyODdcdTUyODhcdTUyODlcdTUyOGRcdTUyOGFcdTUyZjBcdTUzYjJcdTU2MmVcdTU2M2JcdTU2MzlcdTU2MzJcdTU2M2ZcdTU2MzRcdTU2MjlcdTU2NTNcdTU2NGVcdTU2NTdcdTU2''@;'; put 'put ''NzRcdTU2MzZcdTU2MmZcdTU2MzBcdTU4ODBcdTU4OWZcdTU4OWVcdTU4YjNcdTU4OWNcdTU4YWVcdTU4YTlcdTU4YTZcdTU5NmRcdTViMDlcdTVhZmJcdTViMGJcdTVhZjVcdTViMGNcdTViMDhcdTViZWVcdTViZWNcdTViZTlcdTViZWJcdTVjNjRcdTVjNjVcdTVkOWRcdTVkOTRcdTVlNjJc''@;'; put 'put ''dTVlNWZcdTVlNjFcdTVlZTJcdTVlZGFcdTVlZGZcdTVlZGRcdTVlZTNcdTVlZTBcdTVmNDhcdTVmNzFcdTVmYjdcdTVmYjVcdTYxNzZcdTYxNjdcdTYxNmVcdTYxNWRcdTYxNTVcdTYxODJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxN2NcdTYxNzBcdTYxNmJc''@;'; put 'put ''dTYxN2VcdTYxYTdcdTYxOTBcdTYxYWJcdTYxOGVcdTYxYWNcdTYxOWFcdTYxYTRcdTYxOTRcdTYxYWVcdTYyMmVcdTY0NjlcdTY0NmZcdTY0NzlcdTY0OWVcdTY0YjJcdTY0ODhcdTY0OTBcdTY0YjBcdTY0YTVcdTY0OTNcdTY0OTVcdTY0YTlcdTY0OTJcdTY0YWVcdTY0YWRcdTY0YWJcdTY0''@;'; put 'put ''OWFcdTY0YWNcdTY0OTlcdTY0YTJcdTY0YjNcdTY1NzVcdTY1NzdcdTY1NzhcdTY2YWVcdTY2YWJcdTY2YjRcdTY2YjFcdTZhMjNcdTZhMWZcdTY5ZThcdTZhMDFcdTZhMWVcdTZhMTlcdTY5ZmRcdTZhMjFcdTZhMTNcdTZhMGFcdTY5ZjNcdTZhMDJcdTZhMDVcdTY5ZWRcdTZhMTFcdTZiNTBc''@;'; put 'put ''dTZiNGVcdTZiYTRcdTZiYzVcdTZiYzZcdTZmM2ZcdTZmN2NcdTZmODRcdTZmNTFcdTZmNjZcdTZmNTRcdTZmODZcdTZmNmRcdTZmNWJcdTZmNzhcdTZmNmVcdTZmOGVcdTZmN2FcdTZmNzBcdTZmNjRcdTZmOTdcdTZmNThcdTZlZDVcdTZmNmZcdTZmNjBcdTZmNWZcdTcxOWZcdTcxYWNcdTcx''@;'; put 'put ''YjFcdTcxYThcdTcyNTZcdTcyOWJcdTczNGVcdTczNTdcdTc0NjlcdTc0OGJcdTc0ODNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg4XVttXV09NDgxMjgrbSxSWzQ4MTI4K21dPXhbMTg4''@;'; put 'put ''XVttXSk7Zm9yKHhbMTg5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDdlXHU3NDgwXHU3NTdmXHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3''@;'; put 'put ''NzhjXHU3NzkxXHU3NzhiXHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3OGJlXHU3OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNj''@;'; put 'put ''XHU3Y2NhXHU3ZGUwXHU3ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVjXHU3ZGRkXHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3ZmU5''@;'; put 'put ''XHU4MDI2XHU4MTliXHU4MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4NTJjXHU4NTJkXHU4NTEzXHU4NTExXHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4''@;'; put 'put ''Nzc4XHU4NzY4XHU4NzU5XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEzXHU4OTE1XHU4OTBhXHU4YWJjXHU4YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNk''@;'; put 'put ''XHU4YWI2XHU4YWI5XHU4YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4Y2VkXHU4Y2UyXHU4Y2UzXHU4Y2RjXHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4''@;'; put 'put ''ZTIxXHU4ZTFlXHU4ZWJhXHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4OV1bbV1dPTQ4Mzg0K20sUls0''@;'; put 'put ''ODM4NCttXT14WzE4OV1bbV0pO2Zvcih4WzE5MF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGYyNVx1OTA2OVx1OTA2ZVx1OTA2OFx1OTA2ZFx1OTA3N1x1OTEzMFx1OTEyZFx1OTEyN1x1OTEzMVx1OTE4N1x1OTE4OVx1OTE4Ylx1''@;'; put 'put ''OTE4M1x1OTJjNVx1OTJiYlx1OTJiN1x1OTJlYVx1OTJhY1x1OTJlNFx1OTJjMVx1OTJiM1x1OTJiY1x1OTJkMlx1OTJjN1x1OTJmMFx1OTJiMlx1OTVhZFx1OTViMVx1OTcwNFx1OTcwNlx1OTcwN1x1OTcwOVx1OTc2MFx1OTc4ZFx1OTc4Ylx1OTc4Zlx1OTgyMVx1OTgyYlx1OTgxY1x1OThi''@;'; put 'put ''M1x1OTkwYVx1OTkxM1x1OTkxMlx1OTkxOFx1OTlkZFx1OTlkMFx1OTlkZlx1OTlkYlx1OTlkMVx1OTlkNVx1OTlkMlx1OTlkOVx1OWFiN1x1OWFlZVx1OWFlZlx1OWIyN1x1OWI0NVx1OWI0NFx1OWI3N1x1OWI2Zlx1OWQwNlx1OWQwOVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1OWQwM1x1OWVhOVx1OWViZVx1OWVjZVx1NThhOFx1OWY1Mlx1NTExMlx1NTExOFx1NTExNFx1NTExMFx1NTExNVx1NTE4MFx1NTFhYVx1NTFkZFx1NTI5MVx1NTI5M1x1NTJmM1x1NTY1OVx1NTY2Ylx1NTY3OVx1NTY2OVx1NTY2NFx1NTY3OFx1NTY2YVx1NTY2OFx1NTY2NVx1''@;'; put 'put ''NTY3MVx1NTY2Zlx1NTY2Y1x1NTY2Mlx1NTY3Nlx1NThjMVx1NThiZVx1NThjN1x1NThjNVx1NTk2ZVx1NWIxZFx1NWIzNFx1NWI3OFx1NWJmMFx1NWMwZVx1NWY0YVx1NjFiMlx1NjE5MVx1NjFhOVx1NjE4YVx1NjFjZFx1NjFiNlx1NjFiZVx1NjFjYVx1NjFjOFx1NjIzMFx1NjRjNVx1NjRj''@;'; put 'put ''MVx1NjRjYlx1NjRiYlx1NjRiY1x1NjRkYVx1NjRjNFx1NjRjN1x1NjRjMlx1NjRjZFx1NjRiZlx1NjRkMlx1NjRkNFx1NjRiZVx1NjU3NFx1NjZjNlx1NjZjOVx1NjZiOVx1NjZjNFx1NjZjN1x1NjZiOFx1NmEzZFx1NmEzOFx1NmEzYVx1NmE1OVx1NmE2Ylx1NmE1OFx1NmEzOVx1NmE0NFx1''@;'; put 'put ''NmE2Mlx1NmE2MVx1NmE0Ylx1NmE0N1x1NmEzNVx1NmE1Zlx1NmE0OFx1NmI1OVx1NmI3N1x1NmMwNVx1NmZjMlx1NmZiMVx1NmZhMVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTkwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTBdW21d''@;'; put 'put ''XT00ODY0MCttLFJbNDg2NDArbV09eFsxOTBdW21dKTtmb3IoeFsxOTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmYzNcdTZmYTRcdTZmYzFcdTZmYTdcdTZmYjNcdTZmYzBcdTZmYjlcdTZmYjZcdTZmYTZcdTZmYTBcdTZmYjRc''@;'; put 'put ''dTcxYmVcdTcxYzlcdTcxZDBcdTcxZDJcdTcxYzhcdTcxZDVcdTcxYjlcdTcxY2VcdTcxZDlcdTcxZGNcdTcxYzNcdTcxYzRcdTczNjhcdTc0OWNcdTc0YTNcdTc0OThcdTc0OWZcdTc0OWVcdTc0ZTJcdTc1MGNcdTc1MGRcdTc2MzRcdTc2MzhcdTc2M2FcdTc2ZTdcdTc2ZTVcdTc3YTBcdTc3''@;'; put 'put ''OWVcdTc3OWZcdTc3YTVcdTc4ZThcdTc4ZGFcdTc4ZWNcdTc4ZTdcdTc5YTZcdTdhNGRcdTdhNGVcdTdhNDZcdTdhNGNcdTdhNGJcdTdhYmFcdTdiZDlcdTdjMTFcdTdiYzlcdTdiZTRcdTdiZGJcdTdiZTFcdTdiZTlcdTdiZTZcdTdjZDVcdTdjZDZcdTdlMGFcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdlMTFcdTdlMDhcdTdlMWJcdTdlMjNcdTdlMWVcdTdlMWRcdTdlMDlcdTdlMTBcdTdmNzlcdTdmYjJcdTdmZjBcdTdmZjFcdTdmZWVcdTgwMjhcdTgxYjNcdTgxYTlcdTgxYThcdTgxZmJcdTgyMDhcdTgyNThcdTgyNTlcdTg1NGFcdTg1NTlcdTg1NDhc''@;'; put 'put ''dTg1NjhcdTg1NjlcdTg1NDNcdTg1NDlcdTg1NmRcdTg1NmFcdTg1NWVcdTg3ODNcdTg3OWZcdTg3OWVcdTg3YTJcdTg3OGRcdTg4NjFcdTg5MmFcdTg5MzJcdTg5MjVcdTg5MmJcdTg5MjFcdTg5YWFcdTg5YTZcdThhZTZcdThhZmFcdThhZWJcdThhZjFcdThiMDBcdThhZGNcdThhZTdcdThh''@;'; put 'put ''ZWVcdThhZmVcdThiMDFcdThiMDJcdThhZjdcdThhZWRcdThhZjNcdThhZjZcdThhZmNcdThjNmJcdThjNmRcdThjOTNcdThjZjRcdThlNDRcdThlMzFcdThlMzRcdThlNDJcdThlMzlcdThlMzVcdThmM2JcdThmMmZcdThmMzhcdThmMzNcdThmYThcdThmYTZcdTkwNzVcdTkwNzRcdTkwNzhc''@;'; put 'put ''dTkwNzJcdTkwN2NcdTkwN2FcdTkxMzRcdTkxOTJcdTkzMjBcdTkzMzZcdTkyZjhcdTkzMzNcdTkzMmZcdTkzMjJcdTkyZmNcdTkzMmJcdTkzMDRcdTkzMWFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5MV1bbV0uY2hhckNvZGVBdCgwKSYm''@;'; put 'put ''KG9lW3hbMTkxXVttXV09NDg4OTYrbSxSWzQ4ODk2K21dPXhbMTkxXVttXSk7Zm9yKHhbMTkyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJiXHU5NmE3XHU5NmE4''@;'; put 'put ''XHU5NmFhXHU5NmQ1XHU5NzBlXHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNiXHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5OWVkXHU5OWUyXHU5''@;'; put 'put ''OWYxXHU5YWI4XHU5YWJjXHU5YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1XHU1Njg3XHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2''@;'; put 'put ''XHU2MWNiXHU2MjMyXHU2MjM0XHU2NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgzXHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2''@;'; put 'put ''YWEwXHU2YjVjXHU2YmFlXHU2YmRhXHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0''@;'; put 'put ''XHU3MWUwXHU3MjM1XHU3MjQ2XHU3MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2FhXHU3N2IwXHU3N2FjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTkyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTJdW21dLmNo''@;'; put 'put ''YXJDb2RlQXQoMCkmJihvZVt4WzE5Ml1bbV1dPTQ5MTUyK20sUls0OTE1MittXT14WzE5Ml1bbV0pO2Zvcih4WzE5M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdhN1x1NzdhZFx1NzdlZlx1NzhmN1x1NzhmYVx1NzhmNFx1Nzhl''@;'; put 'put ''Zlx1NzkwMVx1NzlhN1x1NzlhYVx1N2E1N1x1N2FiZlx1N2MwN1x1N2MwZFx1N2JmZVx1N2JmN1x1N2MwY1x1N2JlMFx1N2NlMFx1N2NkY1x1N2NkZVx1N2NlMlx1N2NkZlx1N2NkOVx1N2NkZFx1N2UyZVx1N2UzZVx1N2U0Nlx1N2UzN1x1N2UzMlx1N2U0M1x1N2UyYlx1N2UzZFx1N2UzMVx1''@;'; put 'put ''N2U0NVx1N2U0MVx1N2UzNFx1N2UzOVx1N2U0OFx1N2UzNVx1N2UzZlx1N2UyZlx1N2Y0NFx1N2ZmM1x1N2ZmY1x1ODA3MVx1ODA3Mlx1ODA3MFx1ODA2Zlx1ODA3M1x1ODFjNlx1ODFjM1x1ODFiYVx1ODFjMlx1ODFjMFx1ODFiZlx1ODFiZFx1ODFjOVx1ODFiZVx1ODFlOFx1ODIwOVx1ODI3''@;'; put 'put ''MVx1ODVhYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODU4NFx1ODU3ZVx1ODU5Y1x1ODU5MVx1ODU5NFx1ODVhZlx1ODU5Ylx1ODU4N1x1ODVhOFx1ODU4YVx1ODY2N1x1ODdjMFx1ODdkMVx1ODdiM1x1ODdkMlx1ODdjNlx1ODdhYlx1ODdiYlx1ODdiYVx1ODdj''@;'; put 'put ''OFx1ODdjYlx1ODkzYlx1ODkzNlx1ODk0NFx1ODkzOFx1ODkzZFx1ODlhY1x1OGIwZVx1OGIxN1x1OGIxOVx1OGIxYlx1OGIwYVx1OGIyMFx1OGIxZFx1OGIwNFx1OGIxMFx1OGM0MVx1OGMzZlx1OGM3M1x1OGNmYVx1OGNmZFx1OGNmY1x1OGNmOFx1OGNmYlx1OGRhOFx1OGU0OVx1OGU0Ylx1''@;'; put 'put ''OGU0OFx1OGU0YVx1OGY0NFx1OGYzZVx1OGY0Mlx1OGY0NVx1OGYzZlx1OTA3Zlx1OTA3ZFx1OTA4NFx1OTA4MVx1OTA4Mlx1OTA4MFx1OTEzOVx1OTFhM1x1OTE5ZVx1OTE5Y1x1OTM0ZFx1OTM4Mlx1OTMyOFx1OTM3NVx1OTM0YVx1OTM2NVx1OTM0Ylx1OTMxOFx1OTM3ZVx1OTM2Y1x1OTM1''@;'; put 'put ''Ylx1OTM3MFx1OTM1YVx1OTM1NFx1OTVjYVx1OTVjYlx1OTVjY1x1OTVjOFx1OTVjNlx1OTZiMVx1OTZiOFx1OTZkNlx1OTcxY1x1OTcxZVx1OTdhMFx1OTdkM1x1OTg0Nlx1OThiNlx1OTkzNVx1OWEwMVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5M10ubGVuZ3RoOysrbSk2NTUzMyE9''@;'; put 'put ''PXhbMTkzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTNdW21dXT00OTQwOCttLFJbNDk0MDgrbV09eFsxOTNdW21dKTtmb3IoeFsxOTRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk5ZmZcdTliYWVcdTliYWJcdTliYWFcdTli''@;'; put 'put ''YWRcdTlkM2JcdTlkM2ZcdTllOGJcdTllY2ZcdTllZGVcdTllZGNcdTllZGRcdTllZGJcdTlmM2VcdTlmNGJcdTUzZTJcdTU2OTVcdTU2YWVcdTU4ZDlcdTU4ZDhcdTViMzhcdTVmNWRcdTYxZTNcdTYyMzNcdTY0ZjRcdTY0ZjJcdTY0ZmVcdTY1MDZcdTY0ZmFcdTY0ZmJcdTY0ZjdcdTY1Yjdc''@;'; put 'put ''dTY2ZGNcdTY3MjZcdTZhYjNcdTZhYWNcdTZhYzNcdTZhYmJcdTZhYjhcdTZhYzJcdTZhYWVcdTZhYWZcdTZiNWZcdTZiNzhcdTZiYWZcdTcwMDlcdTcwMGJcdTZmZmVcdTcwMDZcdTZmZmFcdTcwMTFcdTcwMGZcdTcxZmJcdTcxZmNcdTcxZmVcdTcxZjhcdTczNzdcdTczNzVcdTc0YTdcdTc0''@;'; put 'put ''YmZcdTc1MTVcdTc2NTZcdTc2NThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc2NTJcdTc3YmRcdTc3YmZcdTc3YmJcdTc3YmNcdTc5MGVcdTc5YWVcdTdhNjFcdTdhNjJcdTdhNjBcdTdhYzRcdTdhYzVcdTdjMmJcdTdjMjdcdTdjMmFcdTdjMWVcdTdjMjNcdTdj''@;'; put 'put ''MjFcdTdjZTdcdTdlNTRcdTdlNTVcdTdlNWVcdTdlNWFcdTdlNjFcdTdlNTJcdTdlNTlcdTdmNDhcdTdmZjlcdTdmZmJcdTgwNzdcdTgwNzZcdTgxY2RcdTgxY2ZcdTgyMGFcdTg1Y2ZcdTg1YTlcdTg1Y2RcdTg1ZDBcdTg1YzlcdTg1YjBcdTg1YmFcdTg1YjlcdTg1YTZcdTg3ZWZcdTg3ZWNc''@;'; put 'put ''dTg3ZjJcdTg3ZTBcdTg5ODZcdTg5YjJcdTg5ZjRcdThiMjhcdThiMzlcdThiMmNcdThiMmJcdThjNTBcdThkMDVcdThlNTlcdThlNjNcdThlNjZcdThlNjRcdThlNWZcdThlNTVcdThlYzBcdThmNDlcdThmNGRcdTkwODdcdTkwODNcdTkwODhcdTkxYWJcdTkxYWNcdTkxZDBcdTkzOTRcdTkz''@;'; put 'put ''OGFcdTkzOTZcdTkzYTJcdTkzYjNcdTkzYWVcdTkzYWNcdTkzYjBcdTkzOThcdTkzOWFcdTkzOTdcdTk1ZDRcdTk1ZDZcdTk1ZDBcdTk1ZDVcdTk2ZTJcdTk2ZGNcdTk2ZDlcdTk2ZGJcdTk2ZGVcdTk3MjRcdTk3YTNcdTk3YTZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTRdLmxlbmd0''@;'; put 'put ''aDsrK20pNjU1MzMhPT14WzE5NF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk0XVttXV09NDk2NjQrbSxSWzQ5NjY0K21dPXhbMTk0XVttXSk7Zm9yKHhbMTk1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5N2FkXHU5N2Y5XHU5''@;'; put 'put ''ODRkXHU5ODRmXHU5ODRjXHU5ODRlXHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5YjRmXHU5YjRlXHU5YjRkXHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1''@;'; put 'put ''XHU5ZjJjXHU1MTMzXHU1NmE1XHU1OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBmXHU2NmUwXHU2NmRkXHU2YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3''@;'; put 'put ''MDE4XHU3MjA2XHU3MjBkXHU3MjU4XHU3MmEyXHU3Mzc4XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MzdhXHU3NGJkXHU3NGNhXHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3XHU3OTE5XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3''@;'; put 'put ''YzM4XHU3YzNkXHU3YzM3XHU3YzQwXHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4NWY3XHU4N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYw''@;'; put 'put ''XHU4OTVmXHU4OTU2XHU4OTVlXHU4YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdjXHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0XHU4ZjU0XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5''@;'; put 'put ''MWFlXHU5M2UxXHU5M2QxXHU5M2RmXHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5N2RjXHU5N2ZiXHU5ODVlXHVmZmZkIi5zcGxpdCgiIiksbT0wO20h''@;'; put 'put ''PXhbMTk1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5NV1bbV1dPTQ5OTIwK20sUls0OTkyMCttXT14WzE5NV1bbV0pO2Zvcih4WzE5Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''OTg1OFx1OTg1Ylx1OThiY1x1OTk0NVx1OTk0OVx1OWExNlx1OWExOVx1OWIwZFx1OWJlOFx1OWJlN1x1OWJkNlx1OWJkYlx1OWQ4OVx1OWQ2MVx1OWQ3Mlx1OWQ2YVx1OWQ2Y1x1OWU5Mlx1OWU5N1x1OWU5M1x1OWViNFx1NTJmOFx1NTZhOFx1NTZiN1x1NTZiNlx1NTZiNFx1NTZiY1x1NThl''@;'; put 'put ''NFx1NWI0MFx1NWI0M1x1NWI3ZFx1NWJmNlx1NWRjOVx1NjFmOFx1NjFmYVx1NjUxOFx1NjUxNFx1NjUxOVx1NjZlNlx1NjcyN1x1NmFlY1x1NzAzZVx1NzAzMFx1NzAzMlx1NzIxMFx1NzM3Ylx1NzRjZlx1NzY2Mlx1NzY2NVx1NzkyNlx1NzkyYVx1NzkyY1x1NzkyYlx1N2FjN1x1N2FmNlx1''@;'; put 'put ''N2M0Y1x1N2M0M1x1N2M0ZFx1N2NlZlx1N2NmMFx1OGZhZVx1N2U3ZFx1N2U3Y1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2U4Mlx1N2Y0Y1x1ODAwMFx1ODFkYVx1ODI2Nlx1ODVmYlx1ODVmOVx1ODYxMVx1ODVmYVx1ODYwNlx1ODYwYlx1ODYwN1x1ODYwYVx1''@;'; put 'put ''ODgxNFx1ODgxNVx1ODk2NFx1ODliYVx1ODlmOFx1OGI3MFx1OGI2Y1x1OGI2Nlx1OGI2Zlx1OGI1Zlx1OGI2Ylx1OGQwZlx1OGQwZFx1OGU4OVx1OGU4MVx1OGU4NVx1OGU4Mlx1OTFiNFx1OTFjYlx1OTQxOFx1OTQwM1x1OTNmZFx1OTVlMVx1OTczMFx1OThjNFx1OTk1Mlx1OTk1MVx1OTlh''@;'; put 'put ''OFx1OWEyYlx1OWEzMFx1OWEzN1x1OWEzNVx1OWMxM1x1OWMwZFx1OWU3OVx1OWViNVx1OWVlOFx1OWYyZlx1OWY1Zlx1OWY2M1x1OWY2MVx1NTEzN1x1NTEzOFx1NTZjMVx1NTZjMFx1NTZjMlx1NTkxNFx1NWM2Y1x1NWRjZFx1NjFmY1x1NjFmZVx1NjUxZFx1NjUxY1x1NjU5NVx1NjZlOVx1''@;'; put 'put ''NmFmYlx1NmIwNFx1NmFmYVx1NmJiMlx1NzA0Y1x1NzIxYlx1NzJhN1x1NzRkNlx1NzRkNFx1NzY2OVx1NzdkM1x1N2M1MFx1N2U4Zlx1N2U4Y1x1N2ZiY1x1ODYxN1x1ODYyZFx1ODYxYVx1ODgyM1x1ODgyMlx1ODgyMVx1ODgxZlx1ODk2YVx1ODk2Y1x1ODliZFx1OGI3NFx1ZmZmZCIuc3Bs''@;'; put 'put ''aXQoIiIpLG09MDttIT14WzE5Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTZdW21dXT01MDE3NittLFJbNTAxNzYrbV09eFsxOTZdW21dKTtmb3IoeFsxOTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdThiNzdcdThiN2RcdThkMTNcdThlOGFcdThlOGRcdThlOGJcdThmNWZcdThmYWZcdTkxYmFcdTk0MmVcdTk0MzNcdTk0MzVcdTk0M2FcdTk0MzhcdTk0MzJcdTk0MmJcdTk1ZTJcdTk3MzhcdTk3MzlcdTk3MzJcdTk3ZmZcdTk4NjdcdTk4NjVcdTk5NTdcdTlhNDVcdTlh''@;'; put 'put ''NDNcdTlhNDBcdTlhM2VcdTlhY2ZcdTliNTRcdTliNTFcdTljMmRcdTljMjVcdTlkYWZcdTlkYjRcdTlkYzJcdTlkYjhcdTllOWRcdTllZWZcdTlmMTlcdTlmNWNcdTlmNjZcdTlmNjdcdTUxM2NcdTUxM2JcdTU2YzhcdTU2Y2FcdTU2YzlcdTViN2ZcdTVkZDRcdTVkZDJcdTVmNGVcdTYxZmZc''@;'; put 'put ''dTY1MjRcdTZiMGFcdTZiNjFcdTcwNTFcdTcwNThcdTczODBcdTc0ZTRcdTc1OGFcdTc2NmVcdTc2NmNcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5YjNcdTdjNjBcdTdjNWZcdTgwN2VcdTgwN2RcdTgxZGZcdTg5NzJcdTg5NmZcdTg5ZmNcdThiODBcdThkMTZc''@;'; put 'put ''dThkMTdcdThlOTFcdThlOTNcdThmNjFcdTkxNDhcdTk0NDRcdTk0NTFcdTk0NTJcdTk3M2RcdTk3M2VcdTk3YzNcdTk3YzFcdTk4NmJcdTk5NTVcdTlhNTVcdTlhNGRcdTlhZDJcdTliMWFcdTljNDlcdTljMzFcdTljM2VcdTljM2JcdTlkZDNcdTlkZDdcdTlmMzRcdTlmNmNcdTlmNmFcdTlm''@;'; put 'put ''OTRcdTU2Y2NcdTVkZDZcdTYyMDBcdTY1MjNcdTY1MmJcdTY1MmFcdTY2ZWNcdTZiMTBcdTc0ZGFcdTdhY2FcdTdjNjRcdTdjNjNcdTdjNjVcdTdlOTNcdTdlOTZcdTdlOTRcdTgxZTJcdTg2MzhcdTg2M2ZcdTg4MzFcdThiOGFcdTkwOTBcdTkwOGZcdTk0NjNcdTk0NjBcdTk0NjRcdTk3Njhc''@;'; put 'put ''dTk4NmZcdTk5NWNcdTlhNWFcdTlhNWJcdTlhNTdcdTlhZDNcdTlhZDRcdTlhZDFcdTljNTRcdTljNTdcdTljNTZcdTlkZTVcdTllOWZcdTllZjRcdTU2ZDFcdTU4ZTlcdTY1MmNcdTcwNWVcdTc2NzFcdTc2NzJcdTc3ZDdcdTdmNTBcdTdmODhcdTg4MzZcdTg4MzlcdTg4NjJcdThiOTNcdThi''@;'; put 'put ''OTJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk3XVttXV09NTA0MzIrbSxSWzUwNDMyK21dPXhbMTk3XVttXSk7Zm9yKHhbMTk4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5MWMwXHU5NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVmXHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3''@;'; put 'put ''MDYzXHU3YzZjXHU3YzZlXHU4ODNiXHU4OWMwXHU4ZWExXHU5MWMxXHU5NDcyXHU5NDcwXHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdj''@;'; put 'put ''XHU5Yzc3XHU5Yzc4XHU5ZWY3XHU4YzU0XHU5NDdmXHU5ZTFhXHU3MjI4XHU5YTZhXHU5YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOThdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5OF1bbV1dPTUwNjg4K20sUls1MDY4OCttXT14WzE5OF1bbV0pO2Zvcih4WzIwMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGU0Mlx1NGU1Y1x1NTFmNVx1NTMxYVx1NTM4Mlx1NGUwN1x1NGUwY1x1NGU0N1x1NGU4ZFx1NTZkN1x1ZmEwY1x1NWM2ZVx1NWY3M1x1NGUwZlx1NTE4N1x1NGUwZVx1NGUyZVx1NGU5M1x1NGVjMlx1NGVjOVx1NGVjOFx1''@;'; put 'put ''NTE5OFx1NTJmY1x1NTM2Y1x1NTNiOVx1NTcyMFx1NTkwM1x1NTkyY1x1NWMxMFx1NWRmZlx1NjVlMVx1NmJiM1x1NmJjY1x1NmMxNFx1NzIzZlx1NGUzMVx1NGUzY1x1NGVlOFx1NGVkY1x1NGVlOVx1NGVlMVx1NGVkZFx1NGVkYVx1NTIwY1x1NTMxY1x1NTM0Y1x1NTcyMlx1NTcyM1x1NTkx''@;'; put 'put ''N1x1NTkyZlx1NWI4MVx1NWI4NFx1NWMxMlx1NWMzYlx1NWM3NFx1NWM3M1x1NWUwNFx1NWU4MFx1NWU4Mlx1NWZjOVx1NjIwOVx1NjI1MFx1NmMxNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmMzNlx1NmM0M1x1NmMzZlx1NmMzYlx1NzJhZVx1NzJiMFx1NzM4''@;'; put 'put ''YVx1NzliOFx1ODA4YVx1OTYxZVx1NGYwZVx1NGYxOFx1NGYyY1x1NGVmNVx1NGYxNFx1NGVmMVx1NGYwMFx1NGVmN1x1NGYwOFx1NGYxZFx1NGYwMlx1NGYwNVx1NGYyMlx1NGYxM1x1NGYwNFx1NGVmNFx1NGYxMlx1NTFiMVx1NTIxM1x1NTIwOVx1NTIxMFx1NTJhNlx1NTMyMlx1NTMxZlx1''@;'; put 'put ''NTM0ZFx1NTM4YVx1NTQwN1x1NTZlMVx1NTZkZlx1NTcyZVx1NTcyYVx1NTczNFx1NTkzY1x1NTk4MFx1NTk3Y1x1NTk4NVx1NTk3Ylx1NTk3ZVx1NTk3N1x1NTk3Zlx1NWI1Nlx1NWMxNVx1NWMyNVx1NWM3Y1x1NWM3YVx1NWM3Ylx1NWM3ZVx1NWRkZlx1NWU3NVx1NWU4NFx1NWYwMlx1NWYx''@;'; put 'put ''YVx1NWY3NFx1NWZkNVx1NWZkNFx1NWZjZlx1NjI1Y1x1NjI1ZVx1NjI2NFx1NjI2MVx1NjI2Nlx1NjI2Mlx1NjI1OVx1NjI2MFx1NjI1YVx1NjI2NVx1NjVlZlx1NjVlZVx1NjczZVx1NjczOVx1NjczOFx1NjczYlx1NjczYVx1NjczZlx1NjczY1x1NjczM1x1NmMxOFx1NmM0Nlx1NmM1Mlx1''@;'; put 'put ''NmM1Y1x1NmM0Zlx1NmM0YVx1NmM1NFx1NmM0Ylx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjAxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDFdW21dXT01MTQ1NittLFJbNTE0NTYrbV09eFsyMDFdW21dKTtmb3IoeFsyMDJdPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjNGNcdTcwNzFcdTcyNWVcdTcyYjRcdTcyYjVcdTczOGVcdTc1MmFcdTc2N2ZcdTdhNzVcdTdmNTFcdTgyNzhcdTgyN2NcdTgyODBcdTgyN2RcdTgyN2ZcdTg2NGRcdTg5N2VcdTkwOTlcdTkwOTdc''@;'; put 'put ''dTkwOThcdTkwOWJcdTkwOTRcdTk2MjJcdTk2MjRcdTk2MjBcdTk2MjNcdTRmNTZcdTRmM2JcdTRmNjJcdTRmNDlcdTRmNTNcdTRmNjRcdTRmM2VcdTRmNjdcdTRmNTJcdTRmNWZcdTRmNDFcdTRmNThcdTRmMmRcdTRmMzNcdTRmM2ZcdTRmNjFcdTUxOGZcdTUxYjlcdTUyMWNcdTUyMWVcdTUy''@;'; put 'put ''MjFcdTUyYWRcdTUyYWVcdTUzMDlcdTUzNjNcdTUzNzJcdTUzOGVcdTUzOGZcdTU0MzBcdTU0MzdcdTU0MmFcdTU0NTRcdTU0NDVcdTU0MTlcdTU0MWNcdTU0MjVcdTU0MThcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU0M2RcdTU0NGZcdTU0NDFcdTU0MjhcdTU0''@;'; put 'put ''MjRcdTU0NDdcdTU2ZWVcdTU2ZTdcdTU2ZTVcdTU3NDFcdTU3NDVcdTU3NGNcdTU3NDlcdTU3NGJcdTU3NTJcdTU5MDZcdTU5NDBcdTU5YTZcdTU5OThcdTU5YTBcdTU5OTdcdTU5OGVcdTU5YTJcdTU5OTBcdTU5OGZcdTU5YTdcdTU5YTFcdTViOGVcdTViOTJcdTVjMjhcdTVjMmFcdTVjOGRc''@;'; put 'put ''dTVjOGZcdTVjODhcdTVjOGJcdTVjODlcdTVjOTJcdTVjOGFcdTVjODZcdTVjOTNcdTVjOTVcdTVkZTBcdTVlMGFcdTVlMGVcdTVlOGJcdTVlODlcdTVlOGNcdTVlODhcdTVlOGRcdTVmMDVcdTVmMWRcdTVmNzhcdTVmNzZcdTVmZDJcdTVmZDFcdTVmZDBcdTVmZWRcdTVmZThcdTVmZWVcdTVm''@;'; put 'put ''ZjNcdTVmZTFcdTVmZTRcdTVmZTNcdTVmZmFcdTVmZWZcdTVmZjdcdTVmZmJcdTYwMDBcdTVmZjRcdTYyM2FcdTYyODNcdTYyOGNcdTYyOGVcdTYyOGZcdTYyOTRcdTYyODdcdTYyNzFcdTYyN2JcdTYyN2FcdTYyNzBcdTYyODFcdTYyODhcdTYyNzdcdTYyN2RcdTYyNzJcdTYyNzRcdTY1Mzdc''@;'; put 'put ''dTY1ZjBcdTY1ZjRcdTY1ZjNcdTY1ZjJcdTY1ZjVcdTY3NDVcdTY3NDdcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjAyXVttXV09NTE3MTIrbSxSWzUxNzEyK21dPXhbMjAyXVttXSk7Zm9y''@;'; put 'put ''KHhbMjAzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NzU5XHU2NzU1XHU2NzRjXHU2NzQ4XHU2NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2Yzhm''@;'; put 'put ''XHU2YzcxXHU2YzZmXHU2YzY5XHU2YzlhXHU2YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2YzdiXHU2YzhlXHU3MDc0XHU3MDdhXHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3''@;'; put 'put ''MzkyXHU3NTNhXHU3NTM5XHU3NTk0XHU3NTk1XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4MDljXHU4MjkwXHU4MjhmXHU4Mjg1XHU4MjhlXHU4MjkxXHU4MjkzXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MjhhXHU4MjgzXHU4''@;'; put 'put ''Mjg0XHU4Yzc4XHU4ZmM5XHU4ZmJmXHU5MDlmXHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0Zjk4XHU0ZjdjXHU0Zjg1XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3''@;'; put 'put ''XHU0ZjZhXHU0ZjlhXHU0Zjc5XHU0ZjgxXHU0Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTllXHU1MWJjXHU1MWJlXHU1MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1''@;'; put 'put ''Mzk0XHU1NDg3XHU1NDdmXHU1NDgxXHU1NDkxXHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1NDZmXHU1NDYxXHU1NDYwXHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZi''@;'; put 'put ''XHU1NzcxXHU1NzcwXHU1Nzc2XHU1NzgwXHU1Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjAzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwM11bbV1dPTUxOTY4K20sUls1MTk2OCttXT14''@;'; put 'put ''WzIwM11bbV0pO2Zvcih4WzIwNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTc2OFx1NTc3ZFx1NTkwY1x1NTk0NVx1NTliNVx1NTliYVx1NTljZlx1NTljZVx1NTliMlx1NTljY1x1NTljMVx1NTliNlx1NTliY1x1NTljM1x1NTlk''@;'; put 'put ''Nlx1NTliMVx1NTliZFx1NTljMFx1NTljOFx1NTliNFx1NTljN1x1NWI2Mlx1NWI2NVx1NWI5M1x1NWI5NVx1NWM0NFx1NWM0N1x1NWNhZVx1NWNhNFx1NWNhMFx1NWNiNVx1NWNhZlx1NWNhOFx1NWNhY1x1NWM5Zlx1NWNhM1x1NWNhZFx1NWNhMlx1NWNhYVx1NWNhN1x1NWM5ZFx1NWNhNVx1''@;'; put 'put ''NWNiNlx1NWNiMFx1NWNhNlx1NWUxN1x1NWUxNFx1NWUxOVx1NWYyOFx1NWYyMlx1NWYyM1x1NWYyNFx1NWY1NFx1NWY4Mlx1NWY3ZVx1NWY3ZFx1NWZkZVx1NWZlNVx1NjAyZFx1NjAyNlx1NjAxOVx1NjAzMlx1NjAwYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NjAzNFx1NjAwYVx1NjAxN1x1NjAzM1x1NjAxYVx1NjAxZVx1NjAyY1x1NjAyMlx1NjAwZFx1NjAxMFx1NjAyZVx1NjAxM1x1NjAxMVx1NjAwY1x1NjAwOVx1NjAxY1x1NjIxNFx1NjIzZFx1NjJhZFx1NjJiNFx1NjJkMVx1NjJiZVx1NjJhYVx1NjJiNlx1NjJjYVx1NjJhZVx1NjJiM1x1NjJh''@;'; put 'put ''Zlx1NjJiYlx1NjJhOVx1NjJiMFx1NjJiOFx1NjUzZFx1NjVhOFx1NjViYlx1NjYwOVx1NjVmY1x1NjYwNFx1NjYxMlx1NjYwOFx1NjVmYlx1NjYwM1x1NjYwYlx1NjYwZFx1NjYwNVx1NjVmZFx1NjYxMVx1NjYxMFx1NjZmNlx1NjcwYVx1Njc4NVx1Njc2Y1x1Njc4ZVx1Njc5Mlx1Njc3Nlx1''@;'; put 'put ''Njc3Ylx1Njc5OFx1Njc4Nlx1Njc4NFx1Njc3NFx1Njc4ZFx1Njc4Y1x1Njc3YVx1Njc5Zlx1Njc5MVx1Njc5OVx1Njc4M1x1Njc3ZFx1Njc4MVx1Njc3OFx1Njc3OVx1Njc5NFx1NmIyNVx1NmI4MFx1NmI3ZVx1NmJkZVx1NmMxZFx1NmM5M1x1NmNlY1x1NmNlYlx1NmNlZVx1NmNkOVx1NmNi''@;'; put 'put ''Nlx1NmNkNFx1NmNhZFx1NmNlN1x1NmNiN1x1NmNkMFx1NmNjMlx1NmNiYVx1NmNjM1x1NmNjNlx1NmNlZFx1NmNmMlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDRdW21dXT01MjIyNCtt''@;'; put 'put ''LFJbNTIyMjQrbV09eFsyMDRdW21dKTtmb3IoeFsyMDVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZjZDJcdTZjZGRcdTZjYjRcdTZjOGFcdTZjOWRcdTZjODBcdTZjZGVcdTZjYzBcdTZkMzBcdTZjY2RcdTZjYzdcdTZjYjBcdTZj''@;'; put 'put ''ZjlcdTZjY2ZcdTZjZTlcdTZjZDFcdTcwOTRcdTcwOThcdTcwODVcdTcwOTNcdTcwODZcdTcwODRcdTcwOTFcdTcwOTZcdTcwODJcdTcwOWFcdTcwODNcdTcyNmFcdTcyZDZcdTcyY2JcdTcyZDhcdTcyYzlcdTcyZGNcdTcyZDJcdTcyZDRcdTcyZGFcdTcyY2NcdTcyZDFcdTczYTRcdTczYTFc''@;'; put 'put ''dTczYWRcdTczYTZcdTczYTJcdTczYTBcdTczYWNcdTczOWRcdTc0ZGRcdTc0ZThcdTc1M2ZcdTc1NDBcdTc1M2VcdTc1OGNcdTc1OThcdTc2YWZcdTc2ZjNcdTc2ZjFcdTc2ZjBcdTc2ZjVcdTc3ZjhcdTc3ZmNcdTc3ZjlcdTc3ZmJcdTc3ZmFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTc3ZjdcdTc5NDJcdTc5M2ZcdTc5YzVcdTdhNzhcdTdhN2JcdTdhZmJcdTdjNzVcdTdjZmRcdTgwMzVcdTgwOGZcdTgwYWVcdTgwYTNcdTgwYjhcdTgwYjVcdTgwYWRcdTgyMjBcdTgyYTBcdTgyYzBcdTgyYWJcdTgyOWFcdTgyOThcdTgyOWJcdTgyYjVcdTgyYTdcdTgy''@;'; put 'put ''YWVcdTgyYmNcdTgyOWVcdTgyYmFcdTgyYjRcdTgyYThcdTgyYTFcdTgyYTlcdTgyYzJcdTgyYTRcdTgyYzNcdTgyYjZcdTgyYTJcdTg2NzBcdTg2NmZcdTg2NmRcdTg2NmVcdThjNTZcdThmZDJcdThmY2JcdThmZDNcdThmY2RcdThmZDZcdThmZDVcdThmZDdcdTkwYjJcdTkwYjRcdTkwYWZc''@;'; put 'put ''dTkwYjNcdTkwYjBcdTk2MzlcdTk2M2RcdTk2M2NcdTk2M2FcdTk2NDNcdTRmY2RcdTRmYzVcdTRmZDNcdTRmYjJcdTRmYzlcdTRmY2JcdTRmYzFcdTRmZDRcdTRmZGNcdTRmZDlcdTRmYmJcdTRmYjNcdTRmZGJcdTRmYzdcdTRmZDZcdTRmYmFcdTRmYzBcdTRmYjlcdTRmZWNcdTUyNDRcdTUy''@;'; put 'put ''NDlcdTUyYzBcdTUyYzJcdTUzM2RcdTUzN2NcdTUzOTdcdTUzOTZcdTUzOTlcdTUzOThcdTU0YmFcdTU0YTFcdTU0YWRcdTU0YTVcdTU0Y2ZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA1''@;'; put 'put ''XVttXV09NTI0ODArbSxSWzUyNDgwK21dPXhbMjA1XVttXSk7Zm9yKHhbMjA2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1''@;'; put 'put ''NGJjXHU1NGEyXHU1NGJlXHU1NDcyXHU1NGRlXHU1NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAw''@;'; put 'put ''XHU1OWYxXHU1OWRkXHU1OWZhXHU1OWZkXHU1OWZjXHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZlXHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1Y2RlXHU1Y2RhXHU1Y2M5XHU1Y2M3XHU1Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1''@;'; put 'put ''ZTliXHU1ZWEzXHU1ZWE1XHU1ZjA3XHU1ZjJlXHU1ZjU2XHU1Zjg2XHU2MDM3XHU2MDM5XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQz''@;'; put 'put ''XHU2MmNmXHU2MzBkXHU2MzBiXHU2MmY1XHU2MzBlXHU2MzAzXHU2MmViXHU2MmY5XHU2MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2''@;'; put 'put ''NjFjXHU2NjI2XHU2NjIyXHU2NjMzXHU2NjJiXHU2NjNhXHU2NjFkXHU2NjM0XHU2NjM5XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2N2JhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDZdW21dLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihvZVt4WzIwNl1bbV1dPTUyNzM2K20sUls1MjczNittXT14WzIwNl1bbV0pO2Zvcih4WzIwN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjdkY1x1NjdiYlx1NjdmOFx1NjdkOFx1NjdjMFx1NjdiN1x1NjdjNVx1NjdlYlx1''@;'; put 'put ''NjdlNFx1NjdkZlx1NjdiNVx1NjdjZFx1NjdiM1x1NjdmN1x1NjdmNlx1NjdlZVx1NjdlM1x1NjdjMlx1NjdiOVx1NjdjZVx1NjdlN1x1NjdmMFx1NjdiMlx1NjdmY1x1NjdjNlx1NjdlZFx1NjdjY1x1NjdhZVx1NjdlNlx1NjdkYlx1NjdmYVx1NjdjOVx1NjdjYVx1NjdjM1x1NjdlYVx1Njdj''@;'; put 'put ''Ylx1NmIyOFx1NmI4Mlx1NmI4NFx1NmJiNlx1NmJkNlx1NmJkOFx1NmJlMFx1NmMyMFx1NmMyMVx1NmQyOFx1NmQzNFx1NmQyZFx1NmQxZlx1NmQzY1x1NmQzZlx1NmQxMlx1NmQwYVx1NmNkYVx1NmQzM1x1NmQwNFx1NmQxOVx1NmQzYVx1NmQxYVx1NmQxMVx1NmQwMFx1NmQxZFx1NmQ0Mlx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQwMVx1NmQxOFx1NmQzN1x1NmQwM1x1NmQwZlx1NmQ0MFx1NmQwN1x1NmQyMFx1NmQyY1x1NmQwOFx1NmQyMlx1NmQwOVx1NmQxMFx1NzBiN1x1NzA5Zlx1NzBiZVx1NzBiMVx1NzBiMFx1NzBhMVx1NzBiNFx1NzBiNVx1''@;'; put 'put ''NzBhOVx1NzI0MVx1NzI0OVx1NzI0YVx1NzI2Y1x1NzI3MFx1NzI3M1x1NzI2ZVx1NzJjYVx1NzJlNFx1NzJlOFx1NzJlYlx1NzJkZlx1NzJlYVx1NzJlNlx1NzJlM1x1NzM4NVx1NzNjY1x1NzNjMlx1NzNjOFx1NzNjNVx1NzNiOVx1NzNiNlx1NzNiNVx1NzNiNFx1NzNlYlx1NzNiZlx1NzNj''@;'; put 'put ''N1x1NzNiZVx1NzNjM1x1NzNjNlx1NzNiOFx1NzNjYlx1NzRlY1x1NzRlZVx1NzUyZVx1NzU0N1x1NzU0OFx1NzVhN1x1NzVhYVx1NzY3OVx1NzZjNFx1NzcwOFx1NzcwM1x1NzcwNFx1NzcwNVx1NzcwYVx1NzZmN1x1NzZmYlx1NzZmYVx1NzdlN1x1NzdlOFx1NzgwNlx1NzgxMVx1NzgxMlx1''@;'; put 'put ''NzgwNVx1NzgxMFx1NzgwZlx1NzgwZVx1NzgwOVx1NzgwM1x1NzgxM1x1Nzk0YVx1Nzk0Y1x1Nzk0Ylx1Nzk0NVx1Nzk0NFx1NzlkNVx1NzljZFx1NzljZlx1NzlkNlx1NzljZVx1N2E4MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA3XVtt''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDddW21dXT01Mjk5MittLFJbNTI5OTIrbV09eFsyMDddW21dKTtmb3IoeFsyMDhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhN2VcdTdhZDFcdTdiMDBcdTdiMDFcdTdjN2FcdTdjNzhc''@;'; put 'put ''dTdjNzlcdTdjN2ZcdTdjODBcdTdjODFcdTdkMDNcdTdkMDhcdTdkMDFcdTdmNThcdTdmOTFcdTdmOGRcdTdmYmVcdTgwMDdcdTgwMGVcdTgwMGZcdTgwMTRcdTgwMzdcdTgwZDhcdTgwYzdcdTgwZTBcdTgwZDFcdTgwYzhcdTgwYzJcdTgwZDBcdTgwYzVcdTgwZTNcdTgwZDlcdTgwZGNcdTgw''@;'; put 'put ''Y2FcdTgwZDVcdTgwYzlcdTgwY2ZcdTgwZDdcdTgwZTZcdTgwY2RcdTgxZmZcdTgyMjFcdTgyOTRcdTgyZDlcdTgyZmVcdTgyZjlcdTgzMDdcdTgyZThcdTgzMDBcdTgyZDVcdTgzM2FcdTgyZWJcdTgyZDZcdTgyZjRcdTgyZWNcdTgyZTFcdTgyZjJcdTgyZjVcdTgzMGNcdTgyZmJcdTgyZjZc''@;'; put 'put ''dTgyZjBcdTgyZWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgyZTRcdTgyZTBcdTgyZmFcdTgyZjNcdTgyZWRcdTg2NzdcdTg2NzRcdTg2N2NcdTg2NzNcdTg4NDFcdTg4NGVcdTg4NjdcdTg4NmFcdTg4NjlcdTg5ZDNcdThhMDRcdThhMDdcdThkNzJcdThmZTNc''@;'; put 'put ''dThmZTFcdThmZWVcdThmZTBcdTkwZjFcdTkwYmRcdTkwYmZcdTkwZDVcdTkwYzVcdTkwYmVcdTkwYzdcdTkwY2JcdTkwYzhcdTkxZDRcdTkxZDNcdTk2NTRcdTk2NGZcdTk2NTFcdTk2NTNcdTk2NGFcdTk2NGVcdTUwMWVcdTUwMDVcdTUwMDdcdTUwMTNcdTUwMjJcdTUwMzBcdTUwMWJcdTRm''@;'; put 'put ''ZjVcdTRmZjRcdTUwMzNcdTUwMzdcdTUwMmNcdTRmZjZcdTRmZjdcdTUwMTdcdTUwMWNcdTUwMjBcdTUwMjdcdTUwMzVcdTUwMmZcdTUwMzFcdTUwMGVcdTUxNWFcdTUxOTRcdTUxOTNcdTUxY2FcdTUxYzRcdTUxYzVcdTUxYzhcdTUxY2VcdTUyNjFcdTUyNWFcdTUyNTJcdTUyNWVcdTUyNWZc''@;'; put 'put ''dTUyNTVcdTUyNjJcdTUyY2RcdTUzMGVcdTUzOWVcdTU1MjZcdTU0ZTJcdTU1MTdcdTU1MTJcdTU0ZTdcdTU0ZjNcdTU0ZTRcdTU1MWFcdTU0ZmZcdTU1MDRcdTU1MDhcdTU0ZWJcdTU1MTFcdTU1MDVcdTU0ZjFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDhdLmxlbmd0aDsrK20pNjU1''@;'; put 'put ''MzMhPT14WzIwOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA4XVttXV09NTMyNDgrbSxSWzUzMjQ4K21dPXhbMjA4XVttXSk7Zm9yKHhbMjA5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4''@;'; put 'put ''XHU1NGUwXHU1NTBlXHU1NTAzXHU1NTBiXHU1NzAxXHU1NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1OTBlXHU1OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1''@;'; put 'put ''YTE1XHU1YTBmXHU1YTE3XHU1YTBhXHU1YTFlXHU1YTMzXHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4XHU1ZWE4XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMw''@;'; put 'put ''XHU1ZjY3XHU2MDVkXHU2MDVhXHU2MDY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2MjQ2XHU2MmYy''@;'; put 'put ''XHU2MzEwXHU2MzU2XHU2MzJjXHU2MzQ0XHU2MzQ1XHU2MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQwXHU2MzQ4XHU2''@;'; put 'put ''NTRhXHU2NTQ2XHU2NWM2XHU2NWMzXHU2NWM0XHU2NWMyXHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2ODJmXHU2ODRl''@;'; put 'put ''XHU2ODQ0XHU2ODM0XHU2ODFkXHU2ODEyXHU2ODE0XHU2ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJkXHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA5XS5s''@;'; put 'put ''ZW5ndGg7KyttKTY1NTMzIT09eFsyMDldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwOV1bbV1dPTUzNTA0K20sUls1MzUwNCttXT14WzIwOV1bbV0pO2Zvcih4WzIxMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJlOFx1NmJl''@;'; put 'put ''M1x1NmJlMlx1NmJlN1x1NmMyNVx1NmQ3YVx1NmQ2M1x1NmQ2NFx1NmQ3Nlx1NmQwZFx1NmQ2MVx1NmQ5Mlx1NmQ1OFx1NmQ2Mlx1NmQ2ZFx1NmQ2Zlx1NmQ5MVx1NmQ4ZFx1NmRlZlx1NmQ3Zlx1NmQ4Nlx1NmQ1ZVx1NmQ2N1x1NmQ2MFx1NmQ5N1x1NmQ3MFx1NmQ3Y1x1NmQ1Zlx1NmQ4Mlx1''@;'; put 'put ''NmQ5OFx1NmQyZlx1NmQ2OFx1NmQ4Ylx1NmQ3ZVx1NmQ4MFx1NmQ4NFx1NmQxNlx1NmQ4M1x1NmQ3Ylx1NmQ3ZFx1NmQ3NVx1NmQ5MFx1NzBkY1x1NzBkM1x1NzBkMVx1NzBkZFx1NzBjYlx1N2YzOVx1NzBlMlx1NzBkN1x1NzBkMlx1NzBkZVx1NzBlMFx1NzBkNFx1NzBjZFx1NzBjNVx1NzBj''@;'; put 'put ''Nlx1NzBjN1x1NzBkYVx1NzBjZVx1NzBlMVx1NzI0Mlx1NzI3OFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzI3N1x1NzI3Nlx1NzMwMFx1NzJmYVx1NzJmNFx1NzJmZVx1NzJmNlx1NzJmM1x1NzJmYlx1NzMwMVx1NzNkM1x1NzNkOVx1NzNlNVx1NzNkNlx1NzNi''@;'; put 'put ''Y1x1NzNlN1x1NzNlM1x1NzNlOVx1NzNkY1x1NzNkMlx1NzNkYlx1NzNkNFx1NzNkZFx1NzNkYVx1NzNkN1x1NzNkOFx1NzNlOFx1NzRkZVx1NzRkZlx1NzRmNFx1NzRmNVx1NzUyMVx1NzU1Ylx1NzU1Zlx1NzViMFx1NzVjMVx1NzViYlx1NzVjNFx1NzVjMFx1NzViZlx1NzViNlx1NzViYVx1''@;'; put 'put ''NzY4YVx1NzZjOVx1NzcxZFx1NzcxYlx1NzcxMFx1NzcxM1x1NzcxMlx1NzcyM1x1NzcxMVx1NzcxNVx1NzcxOVx1NzcxYVx1NzcyMlx1NzcyN1x1NzgyM1x1NzgyY1x1NzgyMlx1NzgzNVx1NzgyZlx1NzgyOFx1NzgyZVx1NzgyYlx1NzgyMVx1NzgyOVx1NzgzM1x1NzgyYVx1NzgzMVx1Nzk1''@;'; put 'put ''NFx1Nzk1Ylx1Nzk0Zlx1Nzk1Y1x1Nzk1M1x1Nzk1Mlx1Nzk1MVx1NzllYlx1NzllY1x1NzllMFx1NzllZVx1NzllZFx1NzllYVx1NzlkY1x1NzlkZVx1NzlkZFx1N2E4Nlx1N2E4OVx1N2E4NVx1N2E4Ylx1N2E4Y1x1N2E4YVx1N2E4N1x1N2FkOFx1N2IxMFx1ZmZmZCIuc3BsaXQoIiIpLG09''@;'; put 'put ''MDttIT14WzIxMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTBdW21dXT01Mzc2MCttLFJbNTM3NjArbV09eFsyMTBdW21dKTtmb3IoeFsyMTFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTdiMDRcdTdiMTNcdTdiMDVcdTdiMGZcdTdiMDhcdTdiMGFcdTdiMGVcdTdiMDlcdTdiMTJcdTdjODRcdTdjOTFcdTdjOGFcdTdjOGNcdTdjODhcdTdjOGRcdTdjODVcdTdkMWVcdTdkMWRcdTdkMTFcdTdkMGVcdTdkMThcdTdkMTZcdTdkMTNcdTdkMWZcdTdkMTJcdTdkMGZcdTdkMGNc''@;'; put 'put ''dTdmNWNcdTdmNjFcdTdmNWVcdTdmNjBcdTdmNWRcdTdmNWJcdTdmOTZcdTdmOTJcdTdmYzNcdTdmYzJcdTdmYzBcdTgwMTZcdTgwM2VcdTgwMzlcdTgwZmFcdTgwZjJcdTgwZjlcdTgwZjVcdTgxMDFcdTgwZmJcdTgxMDBcdTgyMDFcdTgyMmZcdTgyMjVcdTgzMzNcdTgzMmRcdTgzNDRcdTgz''@;'; put 'put ''MTlcdTgzNTFcdTgzMjVcdTgzNTZcdTgzM2ZcdTgzNDFcdTgzMjZcdTgzMWNcdTgzMjJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgzNDJcdTgzNGVcdTgzMWJcdTgzMmFcdTgzMDhcdTgzM2NcdTgzNGRcdTgzMTZcdTgzMjRcdTgzMjBcdTgzMzdcdTgzMmZcdTgz''@;'; put 'put ''MjlcdTgzNDdcdTgzNDVcdTgzNGNcdTgzNTNcdTgzMWVcdTgzMmNcdTgzNGJcdTgzMjdcdTgzNDhcdTg2NTNcdTg2NTJcdTg2YTJcdTg2YThcdTg2OTZcdTg2OGRcdTg2OTFcdTg2OWVcdTg2ODdcdTg2OTdcdTg2ODZcdTg2OGJcdTg2OWFcdTg2ODVcdTg2YTVcdTg2OTlcdTg2YTFcdTg2YTdc''@;'; put 'put ''dTg2OTVcdTg2OThcdTg2OGVcdTg2OWRcdTg2OTBcdTg2OTRcdTg4NDNcdTg4NDRcdTg4NmRcdTg4NzVcdTg4NzZcdTg4NzJcdTg4ODBcdTg4NzFcdTg4N2ZcdTg4NmZcdTg4ODNcdTg4N2VcdTg4NzRcdTg4N2NcdThhMTJcdThjNDdcdThjNTdcdThjN2JcdThjYTRcdThjYTNcdThkNzZcdThk''@;'; put 'put ''NzhcdThkYjVcdThkYjdcdThkYjZcdThlZDFcdThlZDNcdThmZmVcdThmZjVcdTkwMDJcdThmZmZcdThmZmJcdTkwMDRcdThmZmNcdThmZjZcdTkwZDZcdTkwZTBcdTkwZDlcdTkwZGFcdTkwZTNcdTkwZGZcdTkwZTVcdTkwZDhcdTkwZGJcdTkwZDdcdTkwZGNcdTkwZTRcdTkxNTBcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxtPTA7bSE9eFsyMTFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjExXVttXV09NTQwMTYrbSxSWzU0MDE2K21dPXhbMjExXVttXSk7Zm9yKHhbMjEyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU5MTRlXHU5MTRmXHU5MWQ1XHU5MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRmXHU5YjJmXHU0ZTdmXHU1MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDVi''@;'; put 'put ''XHU1MDRhXHU1MDYyXHU1MDE1XHU1MDQ1XHU1MDVmXHU1MDY5XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1MDczXHU1MDU3XHU1MDUxXHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1''@;'; put 'put ''NTRkXHU1NTUwXHU1NTM0XHU1NTJhXHU1NTUxXHU1NTYyXHU1NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NTBjXHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1''@;'; put 'put ''NzBhXHU1NzA3XHU1N2ZiXHU1ODE0XHU1N2UyXHU1N2Y2XHU1N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1N2NmXHU1ODA3XHU1N2VlXHU1N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAx''@;'; put 'put ''XHU1ODBjXHU1N2YxXHU1N2U5XHU1N2YwXHU1ODBkXHU1ODA0XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZkXHU1YTUwXHU1YTVmXHU1YTY1XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1''@;'; put 'put ''YTQ4XHU1YThlXHU1YTNlXHU1YTRkXHU1YTM5XHU1YTRjXHU1YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1YmMxXHU1YmMwXHU1YzU5XHU1ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1''@;'; put 'put ''XHU1ZDBmXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjEyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxMl1bbV1dPTU0MjcyK20sUls1NDI3MittXT14WzIxMl1bbV0pO2Zvcih4WzIxM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWQzMFx1NWQxMlx1NWQyM1x1NWQxZlx1NWQyZVx1NWUzZVx1NWUzNFx1NWViMVx1NWViNFx1NWViOVx1NWViMlx1NWViM1x1NWYzNlx1NWYzOFx1NWY5Ylx1NWY5Nlx1NWY5Zlx1NjA4YVx1NjA5MFx1NjA4Nlx1NjBiZVx1NjBiMFx1NjBi''@;'; put 'put ''YVx1NjBkM1x1NjBkNFx1NjBjZlx1NjBlNFx1NjBkOVx1NjBkZFx1NjBjOFx1NjBiMVx1NjBkYlx1NjBiN1x1NjBjYVx1NjBiZlx1NjBjM1x1NjBjZFx1NjBjMFx1NjMzMlx1NjM2NVx1NjM4YVx1NjM4Mlx1NjM3ZFx1NjNiZFx1NjM5ZVx1NjNhZFx1NjM5ZFx1NjM5N1x1NjNhYlx1NjM4ZVx1''@;'; put 'put ''NjM2Zlx1NjM4N1x1NjM5MFx1NjM2ZVx1NjNhZlx1NjM3NVx1NjM5Y1x1NjM2ZFx1NjNhZVx1NjM3Y1x1NjNhNFx1NjMzYlx1NjM5Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjM3OFx1NjM4NVx1NjM4MVx1NjM5MVx1NjM4ZFx1NjM3MFx1NjU1M1x1NjVjZFx1''@;'; put 'put ''NjY2NVx1NjY2MVx1NjY1Ylx1NjY1OVx1NjY1Y1x1NjY2Mlx1NjcxOFx1Njg3OVx1Njg4N1x1Njg5MFx1Njg5Y1x1Njg2ZFx1Njg2ZVx1NjhhZVx1NjhhYlx1Njk1Nlx1Njg2Zlx1NjhhM1x1NjhhY1x1NjhhOVx1Njg3NVx1Njg3NFx1NjhiMlx1Njg4Zlx1Njg3N1x1Njg5Mlx1Njg3Y1x1Njg2''@;'; put 'put ''Ylx1Njg3Mlx1NjhhYVx1Njg4MFx1Njg3MVx1Njg3ZVx1Njg5Ylx1Njg5Nlx1Njg4Ylx1NjhhMFx1Njg4OVx1NjhhNFx1Njg3OFx1Njg3Ylx1Njg5MVx1Njg4Y1x1Njg4YVx1Njg3ZFx1NmIzNlx1NmIzM1x1NmIzN1x1NmIzOFx1NmI5MVx1NmI4Zlx1NmI4ZFx1NmI4ZVx1NmI4Y1x1NmMyYVx1''@;'; put 'put ''NmRjMFx1NmRhYlx1NmRiNFx1NmRiM1x1NmU3NFx1NmRhY1x1NmRlOVx1NmRlMlx1NmRiN1x1NmRmNlx1NmRkNFx1NmUwMFx1NmRjOFx1NmRlMFx1NmRkZlx1NmRkNlx1NmRiZVx1NmRlNVx1NmRkY1x1NmRkZFx1NmRkYlx1NmRmNFx1NmRjYVx1NmRiZFx1NmRlZFx1NmRmMFx1NmRiYVx1NmRk''@;'; put 'put ''NVx1NmRjMlx1NmRjZlx1NmRjOVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTNdW21dXT01NDUyOCttLFJbNTQ1MjgrbV09eFsyMTNdW21dKTtmb3IoeFsyMTRdPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkZDBcdTZkZjJcdTZkZDNcdTZkZmRcdTZkZDdcdTZkY2RcdTZkZTNcdTZkYmJcdTcwZmFcdTcxMGRcdTcwZjdcdTcxMTdcdTcwZjRcdTcxMGNcdTcwZjBcdTcxMDRcdTcwZjNcdTcxMTBcdTcwZmNcdTcwZmZcdTcx''@;'; put 'put ''MDZcdTcxMTNcdTcxMDBcdTcwZjhcdTcwZjZcdTcxMGJcdTcxMDJcdTcxMGVcdTcyN2VcdTcyN2JcdTcyN2NcdTcyN2ZcdTczMWRcdTczMTdcdTczMDdcdTczMTFcdTczMThcdTczMGFcdTczMDhcdTcyZmZcdTczMGZcdTczMWVcdTczODhcdTczZjZcdTczZjhcdTczZjVcdTc0MDRcdTc0MDFc''@;'; put 'put ''dTczZmRcdTc0MDdcdTc0MDBcdTczZmFcdTczZmNcdTczZmZcdTc0MGNcdTc0MGJcdTczZjRcdTc0MDhcdTc1NjRcdTc1NjNcdTc1Y2VcdTc1ZDJcdTc1Y2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc1Y2JcdTc1Y2NcdTc1ZDFcdTc1ZDBcdTc2OGZcdTc2ODlc''@;'; put 'put ''dTc2ZDNcdTc3MzlcdTc3MmZcdTc3MmRcdTc3MzFcdTc3MzJcdTc3MzRcdTc3MzNcdTc3M2RcdTc3MjVcdTc3M2JcdTc3MzVcdTc4NDhcdTc4NTJcdTc4NDlcdTc4NGRcdTc4NGFcdTc4NGNcdTc4MjZcdTc4NDVcdTc4NTBcdTc5NjRcdTc5NjdcdTc5NjlcdTc5NmFcdTc5NjNcdTc5NmJcdTc5''@;'; put 'put ''NjFcdTc5YmJcdTc5ZmFcdTc5ZjhcdTc5ZjZcdTc5ZjdcdTdhOGZcdTdhOTRcdTdhOTBcdTdiMzVcdTdiNDdcdTdiMzRcdTdiMjVcdTdiMzBcdTdiMjJcdTdiMjRcdTdiMzNcdTdiMThcdTdiMmFcdTdiMWRcdTdiMzFcdTdiMmJcdTdiMmRcdTdiMmZcdTdiMzJcdTdiMzhcdTdiMWFcdTdiMjNc''@;'; put 'put ''dTdjOTRcdTdjOThcdTdjOTZcdTdjYTNcdTdkMzVcdTdkM2RcdTdkMzhcdTdkMzZcdTdkM2FcdTdkNDVcdTdkMmNcdTdkMjlcdTdkNDFcdTdkNDdcdTdkM2VcdTdkM2ZcdTdkNGFcdTdkM2JcdTdkMjhcdTdmNjNcdTdmOTVcdTdmOWNcdTdmOWRcdTdmOWJcdTdmY2FcdTdmY2JcdTdmY2RcdTdm''@;'; put 'put ''ZDBcdTdmZDFcdTdmYzdcdTdmY2ZcdTdmYzlcdTgwMWZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE0XVttXV09NTQ3ODQrbSxSWzU0Nzg0K21dPXhbMjE0XVttXSk7Zm9yKHhbMjE1XT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4''@;'; put 'put ''MjExXHU4MjM4XHU4MjMzXHU4MjNhXHU4MjM0XHU4MjMyXHU4Mjc0XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2Fh''@;'; put 'put ''XHU4MzhiXHU4MzdlXHU4M2E1XHU4M2FmXHU4Mzg4XHU4Mzk3XHU4M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2XHU4NmJmXHU4NmI3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJh''@;'; put 'put ''XHU4NmIwXHU4NmM4XHU4NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4NmI0XHU4NmJiXHU4NmJjXHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4''@;'; put 'put ''OGE0XHU4OGFjXHU4ODhjXHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2XHU4OWQ5XHU4OWQ1XHU4YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4''@;'; put 'put ''XHU4ZWRlXHU4ZWRkXHU4ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5MDI0XHU5MDBiXHU5MDExXHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYwXHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5''@;'; put 'put ''MWVjXHU5MWY0XHU5MWYxXHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5XHU5MWVhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxNV1bbV1dPTU1MDQwK20sUls1NTA0MCttXT14WzIxNV1bbV0p''@;'; put 'put ''O2Zvcih4WzIxNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTFlYlx1OTFmN1x1OTFlOFx1OTFlZVx1OTU3YVx1OTU4Nlx1OTU4OFx1OTY3Y1x1OTY2ZFx1OTY2Ylx1OTY3MVx1OTY2Zlx1OTZiZlx1OTc2YVx1OTgwNFx1OThlNVx1''@;'; put 'put ''OTk5N1x1NTA5Ylx1NTA5NVx1NTA5NFx1NTA5ZVx1NTA4Ylx1NTBhM1x1NTA4M1x1NTA4Y1x1NTA4ZVx1NTA5ZFx1NTA2OFx1NTA5Y1x1NTA5Mlx1NTA4Mlx1NTA4N1x1NTE1Zlx1NTFkNFx1NTMxMlx1NTMxMVx1NTNhNFx1NTNhN1x1NTU5MVx1NTVhOFx1NTVhNVx1NTVhZFx1NTU3N1x1NTY0''@;'; put 'put ''NVx1NTVhMlx1NTU5M1x1NTU4OFx1NTU4Zlx1NTViNVx1NTU4MVx1NTVhM1x1NTU5Mlx1NTVhNFx1NTU3ZFx1NTU4Y1x1NTVhNlx1NTU3Zlx1NTU5NVx1NTVhMVx1NTU4ZVx1NTcwY1x1NTgyOVx1NTgzN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTgxOVx1NTgx''@;'; put 'put ''ZVx1NTgyN1x1NTgyM1x1NTgyOFx1NTdmNVx1NTg0OFx1NTgyNVx1NTgxY1x1NTgxYlx1NTgzM1x1NTgzZlx1NTgzNlx1NTgyZVx1NTgzOVx1NTgzOFx1NTgyZFx1NTgyY1x1NTgzYlx1NTk2MVx1NWFhZlx1NWE5NFx1NWE5Zlx1NWE3YVx1NWFhMlx1NWE5ZVx1NWE3OFx1NWFhNlx1NWE3Y1x1''@;'; put 'put ''NWFhNVx1NWFhY1x1NWE5NVx1NWFhZVx1NWEzN1x1NWE4NFx1NWE4YVx1NWE5N1x1NWE4M1x1NWE4Ylx1NWFhOVx1NWE3Ylx1NWE3ZFx1NWE4Y1x1NWE5Y1x1NWE4Zlx1NWE5M1x1NWE5ZFx1NWJlYVx1NWJjZFx1NWJjYlx1NWJkNFx1NWJkMVx1NWJjYVx1NWJjZVx1NWMwY1x1NWMzMFx1NWQz''@;'; put 'put ''N1x1NWQ0M1x1NWQ2Ylx1NWQ0MVx1NWQ0Ylx1NWQzZlx1NWQzNVx1NWQ1MVx1NWQ0ZVx1NWQ1NVx1NWQzM1x1NWQzYVx1NWQ1Mlx1NWQzZFx1NWQzMVx1NWQ1OVx1NWQ0Mlx1NWQzOVx1NWQ0OVx1NWQzOFx1NWQzY1x1NWQzMlx1NWQzNlx1NWQ0MFx1NWQ0NVx1NWU0NFx1NWU0MVx1NWY1OFx1''@;'; put 'put ''NWZhNlx1NWZhNVx1NWZhYlx1NjBjOVx1NjBiOVx1NjBjY1x1NjBlMlx1NjBjZVx1NjBjNFx1NjExNFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTZdW21dXT01NTI5NittLFJbNTUyOTYr''@;'; put 'put ''bV09eFsyMTZdW21dKTtmb3IoeFsyMTddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwZjJcdTYxMGFcdTYxMTZcdTYxMDVcdTYwZjVcdTYxMTNcdTYwZjhcdTYwZmNcdTYwZmVcdTYwYzFcdTYxMDNcdTYxMThcdTYxMWRcdTYxMTBc''@;'; put 'put ''dTYwZmZcdTYxMDRcdTYxMGJcdTYyNGFcdTYzOTRcdTYzYjFcdTYzYjBcdTYzY2VcdTYzZTVcdTYzZThcdTYzZWZcdTYzYzNcdTY0OWRcdTYzZjNcdTYzY2FcdTYzZTBcdTYzZjZcdTYzZDVcdTYzZjJcdTYzZjVcdTY0NjFcdTYzZGZcdTYzYmVcdTYzZGRcdTYzZGNcdTYzYzRcdTYzZDhcdTYz''@;'; put 'put ''ZDNcdTYzYzJcdTYzYzdcdTYzY2NcdTYzY2JcdTYzYzhcdTYzZjBcdTYzZDdcdTYzZDlcdTY1MzJcdTY1NjdcdTY1NmFcdTY1NjRcdTY1NWNcdTY1NjhcdTY1NjVcdTY1OGNcdTY1OWRcdTY1OWVcdTY1YWVcdTY1ZDBcdTY1ZDJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTY2N2NcdTY2NmNcdTY2N2JcdTY2ODBcdTY2NzFcdTY2NzlcdTY2NmFcdTY2NzJcdTY3MDFcdTY5MGNcdTY4ZDNcdTY5MDRcdTY4ZGNcdTY5MmFcdTY4ZWNcdTY4ZWFcdTY4ZjFcdTY5MGZcdTY4ZDZcdTY4ZjdcdTY4ZWJcdTY4ZTRcdTY4ZjZcdTY5MTNcdTY5MTBcdTY4ZjNcdTY4ZTFc''@;'; put 'put ''dTY5MDdcdTY4Y2NcdTY5MDhcdTY5NzBcdTY4YjRcdTY5MTFcdTY4ZWZcdTY4YzZcdTY5MTRcdTY4ZjhcdTY4ZDBcdTY4ZmRcdTY4ZmNcdTY4ZThcdTY5MGJcdTY5MGFcdTY5MTdcdTY4Y2VcdTY4YzhcdTY4ZGRcdTY4ZGVcdTY4ZTZcdTY4ZjRcdTY4ZDFcdTY5MDZcdTY4ZDRcdTY4ZTlcdTY5''@;'; put 'put ''MTVcdTY5MjVcdTY4YzdcdTZiMzlcdTZiM2JcdTZiM2ZcdTZiM2NcdTZiOTRcdTZiOTdcdTZiOTlcdTZiOTVcdTZiYmRcdTZiZjBcdTZiZjJcdTZiZjNcdTZjMzBcdTZkZmNcdTZlNDZcdTZlNDdcdTZlMWZcdTZlNDlcdTZlODhcdTZlM2NcdTZlM2RcdTZlNDVcdTZlNjJcdTZlMmJcdTZlM2Zc''@;'; put 'put ''dTZlNDFcdTZlNWRcdTZlNzNcdTZlMWNcdTZlMzNcdTZlNGJcdTZlNDBcdTZlNTFcdTZlM2JcdTZlMDNcdTZlMmVcdTZlNWVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxN11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE3XVttXV09NTU1''@;'; put 'put ''NTIrbSxSWzU1NTUyK21dPXhbMjE3XVttXSk7Zm9yKHhbMjE4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2ZTcxXHU2ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUz''@;'; put 'put ''XHU2ZTY1XHU2ZTI3XHU2ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJmXHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMyXHU3MTFmXHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3''@;'; put 'put ''MjVhXHU3Mjg4XHU3Mjg5XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3NDJiXHU3NDE2XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3NjkyXHU3NmRh''@;'; put 'put ''XHU3NzQ2XHU3NzQ3XHU3NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRlXHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVjXHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3OTcyXHU3''@;'; put 'put ''OTcwXHU3YTAyXHU3YTBhXHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2XHU3ZDY3''@;'; put 'put ''XHU3ZDZhXHU3ZDRmXHU3ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMThdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4''@;'; put 'put ''WzIxOF1bbV1dPTU1ODA4K20sUls1NTgwOCttXT14WzIxOF1bbV0pO2Zvcih4WzIxOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1N2Y2Nlx1N2ZhMlx1N2ZhMFx1N2ZhMVx1N2ZkN1x1ODA1MVx1ODA0Zlx1ODA1MFx1ODBmZVx1ODBk''@;'; put 'put ''NFx1ODE0M1x1ODE0YVx1ODE1Mlx1ODE0Zlx1ODE0N1x1ODEzZFx1ODE0ZFx1ODEzYVx1ODFlNlx1ODFlZVx1ODFmN1x1ODFmOFx1ODFmOVx1ODIwNFx1ODIzY1x1ODIzZFx1ODIzZlx1ODI3NVx1ODMzYlx1ODNjZlx1ODNmOVx1ODQyM1x1ODNjMFx1ODNlOFx1ODQxMlx1ODNlN1x1ODNlNFx1''@;'; put 'put ''ODNmY1x1ODNmNlx1ODQxMFx1ODNjNlx1ODNjOFx1ODNlYlx1ODNlM1x1ODNiZlx1ODQwMVx1ODNkZFx1ODNlNVx1ODNkOFx1ODNmZlx1ODNlMVx1ODNjYlx1ODNjZVx1ODNkNlx1ODNmNVx1ODNjOVx1ODQwOVx1ODQwZlx1ODNkZVx1ODQxMVx1ODQwNlx1ODNjMlx1ODNmM1x1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODNkNVx1ODNmYVx1ODNjN1x1ODNkMVx1ODNlYVx1ODQxM1x1ODNjM1x1ODNlY1x1ODNlZVx1ODNjNFx1ODNmYlx1ODNkN1x1ODNlMlx1ODQxYlx1ODNkYlx1ODNmZVx1ODZkOFx1ODZlMlx1ODZlNlx1ODZkM1x1ODZlM1x1ODZkYVx1ODZl''@;'; put 'put ''YVx1ODZkZFx1ODZlYlx1ODZkY1x1ODZlY1x1ODZlOVx1ODZkN1x1ODZlOFx1ODZkMVx1ODg0OFx1ODg1Nlx1ODg1NVx1ODhiYVx1ODhkN1x1ODhiOVx1ODhiOFx1ODhjMFx1ODhiZVx1ODhiNlx1ODhiY1x1ODhiN1x1ODhiZFx1ODhiMlx1ODkwMVx1ODhjOVx1ODk5NVx1ODk5OFx1ODk5N1x1''@;'; put 'put ''ODlkZFx1ODlkYVx1ODlkYlx1OGE0ZVx1OGE0ZFx1OGEzOVx1OGE1OVx1OGE0MFx1OGE1N1x1OGE1OFx1OGE0NFx1OGE0NVx1OGE1Mlx1OGE0OFx1OGE1MVx1OGE0YVx1OGE0Y1x1OGE0Zlx1OGM1Zlx1OGM4MVx1OGM4MFx1OGNiYVx1OGNiZVx1OGNiMFx1OGNiOVx1OGNiNVx1OGQ4NFx1OGQ4''@;'; put 'put ''MFx1OGQ4OVx1OGRkOFx1OGRkM1x1OGRjZFx1OGRjN1x1OGRkNlx1OGRkY1x1OGRjZlx1OGRkNVx1OGRkOVx1OGRjOFx1OGRkN1x1OGRjNVx1OGVlZlx1OGVmN1x1OGVmYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE5XVttXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYob2VbeFsyMTldW21dXT01NjA2NCttLFJbNTYwNjQrbV09eFsyMTldW21dKTtmb3IoeFsyMjBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlZjlcdThlZTZcdThlZWVcdThlZTVcdThlZjVcdThlZTdcdThlZThcdThl''@;'; put 'put ''ZjZcdThlZWJcdThlZjFcdThlZWNcdThlZjRcdThlZTlcdTkwMmRcdTkwMzRcdTkwMmZcdTkxMDZcdTkxMmNcdTkxMDRcdTkwZmZcdTkwZmNcdTkxMDhcdTkwZjlcdTkwZmJcdTkxMDFcdTkxMDBcdTkxMDdcdTkxMDVcdTkxMDNcdTkxNjFcdTkxNjRcdTkxNWZcdTkxNjJcdTkxNjBcdTkyMDFc''@;'; put 'put ''dTkyMGFcdTkyMjVcdTkyMDNcdTkyMWFcdTkyMjZcdTkyMGZcdTkyMGNcdTkyMDBcdTkyMTJcdTkxZmZcdTkxZmRcdTkyMDZcdTkyMDRcdTkyMjdcdTkyMDJcdTkyMWNcdTkyMjRcdTkyMTlcdTkyMTdcdTkyMDVcdTkyMTZcdTk1N2JcdTk1OGRcdTk1OGNcdTk1OTBcdTk2ODdcdTk2N2VcdTk2''@;'; put 'put ''ODhcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk2ODlcdTk2ODNcdTk2ODBcdTk2YzJcdTk2YzhcdTk2YzNcdTk2ZjFcdTk2ZjBcdTk3NmNcdTk3NzBcdTk3NmVcdTk4MDdcdTk4YTlcdTk4ZWJcdTljZTZcdTllZjlcdTRlODNcdTRlODRcdTRlYjZcdTUwYmRcdTUw''@;'; put 'put ''YmZcdTUwYzZcdTUwYWVcdTUwYzRcdTUwY2FcdTUwYjRcdTUwYzhcdTUwYzJcdTUwYjBcdTUwYzFcdTUwYmFcdTUwYjFcdTUwY2JcdTUwYzlcdTUwYjZcdTUwYjhcdTUxZDdcdTUyN2FcdTUyNzhcdTUyN2JcdTUyN2NcdTU1YzNcdTU1ZGJcdTU1Y2NcdTU1ZDBcdTU1Y2JcdTU1Y2FcdTU1ZGRc''@;'; put 'put ''dTU1YzBcdTU1ZDRcdTU1YzRcdTU1ZTlcdTU1YmZcdTU1ZDJcdTU1OGRcdTU1Y2ZcdTU1ZDVcdTU1ZTJcdTU1ZDZcdTU1YzhcdTU1ZjJcdTU1Y2RcdTU1ZDlcdTU1YzJcdTU3MTRcdTU4NTNcdTU4NjhcdTU4NjRcdTU4NGZcdTU4NGRcdTU4NDlcdTU4NmZcdTU4NTVcdTU4NGVcdTU4NWRcdTU4''@;'; put 'put ''NTlcdTU4NjVcdTU4NWJcdTU4M2RcdTU4NjNcdTU4NzFcdTU4ZmNcdTVhYzdcdTVhYzRcdTVhY2JcdTVhYmFcdTVhYjhcdTVhYjFcdTVhYjVcdTVhYjBcdTVhYmZcdTVhYzhcdTVhYmJcdTVhYzZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIy''@;'; put 'put ''MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIwXVttXV09NTYzMjArbSxSWzU2MzIwK21dPXhbMjIwXVttXSk7Zm9yKHhbMjIxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1''@;'; put 'put ''YWNkXHU1YWI5XHU1YTkwXHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMzXHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1ZDZjXHU1ZDVlXHU1ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNi''@;'; put 'put ''XHU1ZWM3XHU1ZjQwXHU1ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2XHU2MTJmXHU2MTRmXHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2''@;'; put 'put ''NDA5XHU2NDIwXHU2NDI0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5XHU2NDM3XHU2NDIyXHU2NDIzXHU2NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2''@;'; put 'put ''NDQwXHU2NDI1XHU2NDI3XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIxXHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2NjkwXHU2NjhiXHU2NjhhXHU2Njk5XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcx''@;'; put 'put ''XHU2OTNmXHU2OTQ1XHU2OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1XHU2OGYwXHU2OTc4XHU2OTM0XHU2OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2''@;'; put 'put ''OTNiXHU2OTRiXHU2OTM3XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUyXHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2YjQ4XHU2YjQxXHU2YjliXHVmYTBkXHU2YmZiXHU2YmZjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjIxXS5sZW5ndGg7Kytt''@;'; put 'put ''KTY1NTMzIT09eFsyMjFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyMV1bbV1dPTU2NTc2K20sUls1NjU3NittXT14WzIyMV1bbV0pO2Zvcih4WzIyMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmJmOVx1NmJmN1x1NmJmOFx1''@;'; put 'put ''NmU5Ylx1NmVkNlx1NmVjOFx1NmU4Zlx1NmVjMFx1NmU5Zlx1NmU5M1x1NmU5NFx1NmVhMFx1NmViMVx1NmViOVx1NmVjNlx1NmVkMlx1NmViZFx1NmVjMVx1NmU5ZVx1NmVjOVx1NmViN1x1NmViMFx1NmVjZFx1NmVhNlx1NmVjZlx1NmViMlx1NmViZVx1NmVjM1x1NmVkY1x1NmVkOFx1NmU5''@;'; put 'put ''OVx1NmU5Mlx1NmU4ZVx1NmU4ZFx1NmVhNFx1NmVhMVx1NmViZlx1NmViM1x1NmVkMFx1NmVjYVx1NmU5N1x1NmVhZVx1NmVhM1x1NzE0N1x1NzE1NFx1NzE1Mlx1NzE2M1x1NzE2MFx1NzE0MVx1NzE1ZFx1NzE2Mlx1NzE3Mlx1NzE3OFx1NzE2YVx1NzE2MVx1NzE0Mlx1NzE1OFx1NzE0M1x1''@;'; put 'put ''NzE0Ylx1NzE3MFx1NzE1Zlx1NzE1MFx1NzE1M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzE0NFx1NzE0ZFx1NzE1YVx1NzI0Zlx1NzI4ZFx1NzI4Y1x1NzI5MVx1NzI5MFx1NzI4ZVx1NzMzY1x1NzM0Mlx1NzMzYlx1NzMzYVx1NzM0MFx1NzM0YVx1NzM0OVx1''@;'; put 'put ''NzQ0NFx1NzQ0YVx1NzQ0Ylx1NzQ1Mlx1NzQ1MVx1NzQ1N1x1NzQ0MFx1NzQ0Zlx1NzQ1MFx1NzQ0ZVx1NzQ0Mlx1NzQ0Nlx1NzQ0ZFx1NzQ1NFx1NzRlMVx1NzRmZlx1NzRmZVx1NzRmZFx1NzUxZFx1NzU3OVx1NzU3N1x1Njk4M1x1NzVlZlx1NzYwZlx1NzYwM1x1NzVmN1x1NzVmZVx1NzVm''@;'; put 'put ''Y1x1NzVmOVx1NzVmOFx1NzYxMFx1NzVmYlx1NzVmNlx1NzVlZFx1NzVmNVx1NzVmZFx1NzY5OVx1NzZiNVx1NzZkZFx1Nzc1NVx1Nzc1Zlx1Nzc2MFx1Nzc1Mlx1Nzc1Nlx1Nzc1YVx1Nzc2OVx1Nzc2N1x1Nzc1NFx1Nzc1OVx1Nzc2ZFx1NzdlMFx1Nzg4N1x1Nzg5YVx1Nzg5NFx1Nzg4Zlx1''@;'; put 'put ''Nzg4NFx1Nzg5NVx1Nzg4NVx1Nzg4Nlx1NzhhMVx1Nzg4M1x1Nzg3OVx1Nzg5OVx1Nzg4MFx1Nzg5Nlx1Nzg3Ylx1Nzk3Y1x1Nzk4Mlx1Nzk3ZFx1Nzk3OVx1N2ExMVx1N2ExOFx1N2ExOVx1N2ExMlx1N2ExN1x1N2ExNVx1N2EyMlx1N2ExM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIy''@;'; put 'put ''Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjIyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjJdW21dXT01NjgzMittLFJbNTY4MzIrbV09eFsyMjJdW21dKTtmb3IoeFsyMjNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMWJc''@;'; put 'put ''dTdhMTBcdTdhYTNcdTdhYTJcdTdhOWVcdTdhZWJcdTdiNjZcdTdiNjRcdTdiNmRcdTdiNzRcdTdiNjlcdTdiNzJcdTdiNjVcdTdiNzNcdTdiNzFcdTdiNzBcdTdiNjFcdTdiNzhcdTdiNzZcdTdiNjNcdTdjYjJcdTdjYjRcdTdjYWZcdTdkODhcdTdkODZcdTdkODBcdTdkOGRcdTdkN2ZcdTdk''@;'; put 'put ''ODVcdTdkN2FcdTdkOGVcdTdkN2JcdTdkODNcdTdkN2NcdTdkOGNcdTdkOTRcdTdkODRcdTdkN2RcdTdkOTJcdTdmNmRcdTdmNmJcdTdmNjdcdTdmNjhcdTdmNmNcdTdmYTZcdTdmYTVcdTdmYTdcdTdmZGJcdTdmZGNcdTgwMjFcdTgxNjRcdTgxNjBcdTgxNzdcdTgxNWNcdTgxNjlcdTgxNWJc''@;'; put 'put ''dTgxNjJcdTgxNzJcdTY3MjFcdTgxNWVcdTgxNzZcdTgxNjdcdTgxNmZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTgxNDRcdTgxNjFcdTgyMWRcdTgyNDlcdTgyNDRcdTgyNDBcdTgyNDJcdTgyNDVcdTg0ZjFcdTg0M2ZcdTg0NTZcdTg0NzZcdTg0NzlcdTg0OGZc''@;'; put 'put ''dTg0OGRcdTg0NjVcdTg0NTFcdTg0NDBcdTg0ODZcdTg0NjdcdTg0MzBcdTg0NGRcdTg0N2RcdTg0NWFcdTg0NTlcdTg0NzRcdTg0NzNcdTg0NWRcdTg1MDdcdTg0NWVcdTg0MzdcdTg0M2FcdTg0MzRcdTg0N2FcdTg0NDNcdTg0NzhcdTg0MzJcdTg0NDVcdTg0MjlcdTgzZDlcdTg0NGJcdTg0''@;'; put 'put ''MmZcdTg0NDJcdTg0MmRcdTg0NWZcdTg0NzBcdTg0MzlcdTg0NGVcdTg0NGNcdTg0NTJcdTg0NmZcdTg0YzVcdTg0OGVcdTg0M2JcdTg0NDdcdTg0MzZcdTg0MzNcdTg0NjhcdTg0N2VcdTg0NDRcdTg0MmJcdTg0NjBcdTg0NTRcdTg0NmVcdTg0NTBcdTg3MGJcdTg3MDRcdTg2ZjdcdTg3MGNc''@;'; put 'put ''dTg2ZmFcdTg2ZDZcdTg2ZjVcdTg3NGRcdTg2ZjhcdTg3MGVcdTg3MDlcdTg3MDFcdTg2ZjZcdTg3MGRcdTg3MDVcdTg4ZDZcdTg4Y2JcdTg4Y2RcdTg4Y2VcdTg4ZGVcdTg4ZGJcdTg4ZGFcdTg4Y2NcdTg4ZDBcdTg5ODVcdTg5OWJcdTg5ZGZcdTg5ZTVcdTg5ZTRcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxtPTA7bSE9eFsyMjNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyM11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIzXVttXV09NTcwODgrbSxSWzU3MDg4K21dPXhbMjIzXVttXSk7Zm9yKHhbMjI0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU4OWUxXHU4OWUwXHU4OWUyXHU4OWRjXHU4OWU2XHU4YTc2XHU4YTg2XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4''@;'; put 'put ''Yzg1XHU4Y2NjXHU4ZDY4XHU4ZDY5XHU4ZDkxXHU4ZDhjXHU4ZDhlXHU4ZDhmXHU4ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZm''@;'; put 'put ''XHU4ZjAxXHU4ZjAwXHU4ZjA1XHU4ZjA3XHU4ZjA4XHU4ZjAyXHU4ZjBiXHU5MDUyXHU5MDNmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZl''@;'; put 'put ''XHU5MTZmXHU5MjQ4XHU5MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1XHU5MjVlXHU5MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZjXHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5''@;'; put 'put ''MjRlXHU5MjUzXHU5MjRjXHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5NTliXHU5NjkyXHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5''@;'; put 'put ''XHU5OWFmXHU5OWIyXHU5OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2VhXHU5Y2VkXHU5Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyNF1bbV1dPTU3MzQ0K20sUls1NzM0NCttXT14WzIyNF1bbV0pO2Zvcih4WzIyNV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTFkOFx1NTI4MFx1NTI4MVx1NTJlOVx1NTJlYlx1NTMzMFx1NTNhY1x1NTYyN1x1NTYxNVx1NTYwY1x1NTYxMlx1NTVmY1x1NTYwZlx1NTYxY1x1NTYwMVx1NTYxM1x1NTYwMlx1NTVmYVx1NTYxZFx1NTYwNFx1NTVmZlx1NTVmOVx1NTg4OVx1NTg3Y1x1''@;'; put 'put ''NTg5MFx1NTg5OFx1NTg4Nlx1NTg4MVx1NTg3Zlx1NTg3NFx1NTg4Ylx1NTg3YVx1NTg4N1x1NTg5MVx1NTg4ZVx1NTg3Nlx1NTg4Mlx1NTg4OFx1NTg3Ylx1NTg5NFx1NTg4Zlx1NThmZVx1NTk2Ylx1NWFkY1x1NWFlZVx1NWFlNVx1NWFkNVx1NWFlYVx1NWFkYVx1NWFlZFx1NWFlYlx1NWFm''@;'; put 'put ''M1x1NWFlMlx1NWFlMFx1NWFkYlx1NWFlY1x1NWFkZVx1NWFkZFx1NWFkOVx1NWFlOFx1NWFkZlx1NWI3N1x1NWJlMFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWJlM1x1NWM2M1x1NWQ4Mlx1NWQ4MFx1NWQ3ZFx1NWQ4Nlx1NWQ3YVx1NWQ4MVx1NWQ3N1x1NWQ4''@;'; put 'put ''YVx1NWQ4OVx1NWQ4OFx1NWQ3ZVx1NWQ3Y1x1NWQ4ZFx1NWQ3OVx1NWQ3Zlx1NWU1OFx1NWU1OVx1NWU1M1x1NWVkOFx1NWVkMVx1NWVkN1x1NWVjZVx1NWVkY1x1NWVkNVx1NWVkOVx1NWVkMlx1NWVkNFx1NWY0NFx1NWY0M1x1NWY2Zlx1NWZiNlx1NjEyY1x1NjEyOFx1NjE0MVx1NjE1ZVx1''@;'; put 'put ''NjE3MVx1NjE3M1x1NjE1Mlx1NjE1M1x1NjE3Mlx1NjE2Y1x1NjE4MFx1NjE3NFx1NjE1NFx1NjE3YVx1NjE1Ylx1NjE2NVx1NjEzYlx1NjE2YVx1NjE2MVx1NjE1Nlx1NjIyOVx1NjIyN1x1NjIyYlx1NjQyYlx1NjQ0ZFx1NjQ1Ylx1NjQ1ZFx1NjQ3NFx1NjQ3Nlx1NjQ3Mlx1NjQ3M1x1NjQ3''@;'; put 'put ''ZFx1NjQ3NVx1NjQ2Nlx1NjRhNlx1NjQ0ZVx1NjQ4Mlx1NjQ1ZVx1NjQ1Y1x1NjQ0Ylx1NjQ1M1x1NjQ2MFx1NjQ1MFx1NjQ3Zlx1NjQzZlx1NjQ2Y1x1NjQ2Ylx1NjQ1OVx1NjQ2NVx1NjQ3N1x1NjU3M1x1NjVhMFx1NjZhMVx1NjZhMFx1NjY5Zlx1NjcwNVx1NjcwNFx1NjcyMlx1NjliMVx1''@;'; put 'put ''NjliNlx1NjljOVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyNV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjVdW21dXT01NzYwMCttLFJbNTc2MDArbV09eFsyMjVdW21dKTtmb3IoeFsyMjZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY5YTBcdTY5Y2VcdTY5OTZcdTY5YjBcdTY5YWNcdTY5YmNcdTY5OTFcdTY5OTlcdTY5OGVcdTY5YTdcdTY5OGRcdTY5YTlcdTY5YmVcdTY5YWZcdTY5YmZcdTY5YzRcdTY5YmRcdTY5YTRcdTY5ZDRcdTY5YjlcdTY5Y2FcdTY5OWFc''@;'; put 'put ''dTY5Y2ZcdTY5YjNcdTY5OTNcdTY5YWFcdTY5YTFcdTY5OWVcdTY5ZDlcdTY5OTdcdTY5OTBcdTY5YzJcdTY5YjVcdTY5YTVcdTY5YzZcdTZiNGFcdTZiNGRcdTZiNGJcdTZiOWVcdTZiOWZcdTZiYTBcdTZiYzNcdTZiYzRcdTZiZmVcdTZlY2VcdTZlZjVcdTZlZjFcdTZmMDNcdTZmMjVcdTZl''@;'; put 'put ''ZjhcdTZmMzdcdTZlZmJcdTZmMmVcdTZmMDlcdTZmNGVcdTZmMTlcdTZmMWFcdTZmMjdcdTZmMThcdTZmM2JcdTZmMTJcdTZlZWRcdTZmMGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZmMzZcdTZmNzNcdTZlZjlcdTZlZWVcdTZmMmRcdTZmNDBcdTZmMzBcdTZm''@;'; put 'put ''M2NcdTZmMzVcdTZlZWJcdTZmMDdcdTZmMGVcdTZmNDNcdTZmMDVcdTZlZmRcdTZlZjZcdTZmMzlcdTZmMWNcdTZlZmNcdTZmM2FcdTZmMWZcdTZmMGRcdTZmMWVcdTZmMDhcdTZmMjFcdTcxODdcdTcxOTBcdTcxODlcdTcxODBcdTcxODVcdTcxODJcdTcxOGZcdTcxN2JcdTcxODZcdTcxODFc''@;'; put 'put ''dTcxOTdcdTcyNDRcdTcyNTNcdTcyOTdcdTcyOTVcdTcyOTNcdTczNDNcdTczNGRcdTczNTFcdTczNGNcdTc0NjJcdTc0NzNcdTc0NzFcdTc0NzVcdTc0NzJcdTc0NjdcdTc0NmVcdTc1MDBcdTc1MDJcdTc1MDNcdTc1N2RcdTc1OTBcdTc2MTZcdTc2MDhcdTc2MGNcdTc2MTVcdTc2MTFcdTc2''@;'; put 'put ''MGFcdTc2MTRcdTc2YjhcdTc3ODFcdTc3N2NcdTc3ODVcdTc3ODJcdTc3NmVcdTc3ODBcdTc3NmZcdTc3N2VcdTc3ODNcdTc4YjJcdTc4YWFcdTc4YjRcdTc4YWRcdTc4YThcdTc4N2VcdTc4YWJcdTc4OWVcdTc4YTVcdTc4YTBcdTc4YWNcdTc4YTJcdTc4YTRcdTc5OThcdTc5OGFcdTc5OGJc''@;'; put 'put ''dTc5OTZcdTc5OTVcdTc5OTRcdTc5OTNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyNl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI2XVttXV09NTc4NTYrbSxSWzU3ODU2K21dPXhbMjI2XVttXSk7Zm9yKHhbMjI3XT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3OTk3XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4XHU3YjljXHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2''@;'; put 'put ''XHU3YjhkXHU3YjhjXHU3YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3ZDlkXHU3ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3''@;'; put 'put ''ZGNjXHU3ZGFmXHU3ZGI5XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3ZmRlXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2XHU4''@;'; put 'put ''MTgzXHU4MTg3XHU4MThkXHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGExXHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4NGEy''@;'; put 'put ''XHU4NDk0XHU4NGM3XHU4NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQyXHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIxXHU4''@;'; put 'put ''NzE5XHU4NzFiXHU4NzQzXHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMyXHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4OGYy''@;'; put 'put ''XHU4OGZhXHU4OGZlXHU4OGVlXHU4OGZjXHU4OGY2XHU4OGZiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyN11bbV1dPTU4MTEyK20sUls1ODExMittXT14WzIyN11bbV0pO2Zvcih4WzIy''@;'; put 'put ''OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODhmMFx1ODhlY1x1ODhlYlx1ODk5ZFx1ODlhMVx1ODk5Zlx1ODk5ZVx1ODllOVx1ODllYlx1ODllOFx1OGFhYlx1OGE5OVx1OGE4Ylx1OGE5Mlx1OGE4Zlx1OGE5Nlx1OGMzZFx1OGM2''@;'; put 'put ''OFx1OGM2OVx1OGNkNVx1OGNjZlx1OGNkN1x1OGQ5Nlx1OGUwOVx1OGUwMlx1OGRmZlx1OGUwZFx1OGRmZFx1OGUwYVx1OGUwM1x1OGUwN1x1OGUwNlx1OGUwNVx1OGRmZVx1OGUwMFx1OGUwNFx1OGYxMFx1OGYxMVx1OGYwZVx1OGYwZFx1OTEyM1x1OTExY1x1OTEyMFx1OTEyMlx1OTExZlx1''@;'; put 'put ''OTExZFx1OTExYVx1OTEyNFx1OTEyMVx1OTExYlx1OTE3YVx1OTE3Mlx1OTE3OVx1OTE3M1x1OTJhNVx1OTJhNFx1OTI3Nlx1OTI5Ylx1OTI3YVx1OTJhMFx1OTI5NFx1OTJhYVx1OTI4ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTJhNlx1OTI5YVx1OTJhYlx1''@;'; put 'put ''OTI3OVx1OTI5N1x1OTI3Zlx1OTJhM1x1OTJlZVx1OTI4ZVx1OTI4Mlx1OTI5NVx1OTJhMlx1OTI3ZFx1OTI4OFx1OTJhMVx1OTI4YVx1OTI4Nlx1OTI4Y1x1OTI5OVx1OTJhN1x1OTI3ZVx1OTI4N1x1OTJhOVx1OTI5ZFx1OTI4Ylx1OTIyZFx1OTY5ZVx1OTZhMVx1OTZmZlx1OTc1OFx1OTc3''@;'; put 'put ''ZFx1OTc3YVx1OTc3ZVx1OTc4M1x1OTc4MFx1OTc4Mlx1OTc3Ylx1OTc4NFx1OTc4MVx1OTc3Zlx1OTdjZVx1OTdjZFx1OTgxNlx1OThhZFx1OThhZVx1OTkwMlx1OTkwMFx1OTkwN1x1OTk5ZFx1OTk5Y1x1OTljM1x1OTliOVx1OTliYlx1OTliYVx1OTljMlx1OTliZFx1OTljN1x1OWFiMVx1''@;'; put 'put ''OWFlM1x1OWFlN1x1OWIzZVx1OWIzZlx1OWI2MFx1OWI2MVx1OWI1Zlx1OWNmMVx1OWNmMlx1OWNmNVx1OWVhN1x1NTBmZlx1NTEwM1x1NTEzMFx1NTBmOFx1NTEwNlx1NTEwN1x1NTBmNlx1NTBmZVx1NTEwYlx1NTEwY1x1NTBmZFx1NTEwYVx1NTI4Ylx1NTI4Y1x1NTJmMVx1NTJlZlx1NTY0''@;'; put 'put ''OFx1NTY0Mlx1NTY0Y1x1NTYzNVx1NTY0MVx1NTY0YVx1NTY0OVx1NTY0Nlx1NTY1OFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyOF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjhdW21dXT01ODM2OCttLFJbNTgzNjgrbV09eFsyMjhd''@;'; put 'put ''W21dKTtmb3IoeFsyMjldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2NWFcdTU2NDBcdTU2MzNcdTU2M2RcdTU2MmNcdTU2M2VcdTU2MzhcdTU2MmFcdTU2M2FcdTU3MWFcdTU4YWJcdTU4OWRcdTU4YjFcdTU4YTBcdTU4YTNcdTU4''@;'; put 'put ''YWZcdTU4YWNcdTU4YTVcdTU4YTFcdTU4ZmZcdTVhZmZcdTVhZjRcdTVhZmRcdTVhZjdcdTVhZjZcdTViMDNcdTVhZjhcdTViMDJcdTVhZjlcdTViMDFcdTViMDdcdTViMDVcdTViMGZcdTVjNjdcdTVkOTlcdTVkOTdcdTVkOWZcdTVkOTJcdTVkYTJcdTVkOTNcdTVkOTVcdTVkYTBcdTVkOWNc''@;'; put 'put ''dTVkYTFcdTVkOWFcdTVkOWVcdTVlNjlcdTVlNWRcdTVlNjBcdTVlNWNcdTdkZjNcdTVlZGJcdTVlZGVcdTVlZTFcdTVmNDlcdTVmYjJcdTYxOGJcdTYxODNcdTYxNzlcdTYxYjFcdTYxYjBcdTYxYTJcdTYxODlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYxOWJc''@;'; put 'put ''dTYxOTNcdTYxYWZcdTYxYWRcdTYxOWZcdTYxOTJcdTYxYWFcdTYxYTFcdTYxOGRcdTYxNjZcdTYxYjNcdTYyMmRcdTY0NmVcdTY0NzBcdTY0OTZcdTY0YTBcdTY0ODVcdTY0OTdcdTY0OWNcdTY0OGZcdTY0OGJcdTY0OGFcdTY0OGNcdTY0YTNcdTY0OWZcdTY0NjhcdTY0YjFcdTY0OThcdTY1''@;'; put 'put ''NzZcdTY1N2FcdTY1NzlcdTY1N2JcdTY1YjJcdTY1YjNcdTY2YjVcdTY2YjBcdTY2YTlcdTY2YjJcdTY2YjdcdTY2YWFcdTY2YWZcdTZhMDBcdTZhMDZcdTZhMTdcdTY5ZTVcdTY5ZjhcdTZhMTVcdTY5ZjFcdTY5ZTRcdTZhMjBcdTY5ZmZcdTY5ZWNcdTY5ZTJcdTZhMWJcdTZhMWRcdTY5ZmVc''@;'; put 'put ''dTZhMjdcdTY5ZjJcdTY5ZWVcdTZhMTRcdTY5ZjdcdTY5ZTdcdTZhNDBcdTZhMDhcdTY5ZTZcdTY5ZmJcdTZhMGRcdTY5ZmNcdTY5ZWJcdTZhMDlcdTZhMDRcdTZhMThcdTZhMjVcdTZhMGZcdTY5ZjZcdTZhMjZcdTZhMDdcdTY5ZjRcdTZhMTZcdTZiNTFcdTZiYTVcdTZiYTNcdTZiYTJcdTZi''@;'; put 'put ''YTZcdTZjMDFcdTZjMDBcdTZiZmZcdTZjMDJcdTZmNDFcdTZmMjZcdTZmN2VcdTZmODdcdTZmYzZcdTZmOTJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjldLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyOV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI5XVttXV09NTg2MjQrbSxSWzU4''@;'; put 'put ''NjI0K21dPXhbMjI5XVttXSk7Zm9yKHhbMjMwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZjhkXHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2''@;'; put 'put ''ZjUyXHU2ZjUwXHU2ZjU3XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2ZjhiXHU2ZjY5XHU2ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5''@;'; put 'put ''XHU3MWI1XHU3MTlkXHU3MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3MzUyXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU3MzYyXHU3NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdlXHU3NjI1XHU3NjFlXHU3NjE5XHU3NjFkXHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3''@;'; put 'put ''NjliXHU3NzhkXHU3NzhmXHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3OGM5XHU3OTlhXHU3OWExXHU3OWEwXHU3OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3''@;'; put 'put ''XHU3YmNiXHU3YmJlXHU3YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVhXHU3ZGU3XHU3ZGQ3XHU3ZGUxXHU3ZTAzXHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3''@;'; put 'put ''ZmFjXHU3ZmIwXHU3ZmFkXHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4MDY0XHU4MDY3XHU4MWEzXHU4MTlmXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzMF1bbV1d''@;'; put 'put ''PTU4ODgwK20sUls1ODg4MCttXT14WzIzMF1bbV0pO2Zvcih4WzIzMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODE5ZVx1ODE5NVx1ODFhMlx1ODE5OVx1ODE5N1x1ODIxNlx1ODI0Zlx1ODI1M1x1ODI1Mlx1ODI1MFx1ODI0ZVx1''@;'; put 'put ''ODI1MVx1ODUyNFx1ODUzYlx1ODUwZlx1ODUwMFx1ODUyOVx1ODUwZVx1ODUwOVx1ODUwZFx1ODUxZlx1ODUwYVx1ODUyN1x1ODUxY1x1ODRmYlx1ODUyYlx1ODRmYVx1ODUwOFx1ODUwY1x1ODRmNFx1ODUyYVx1ODRmMlx1ODUxNVx1ODRmN1x1ODRlYlx1ODRmM1x1ODRmY1x1ODUxMlx1ODRl''@;'; put 'put ''YVx1ODRlOVx1ODUxNlx1ODRmZVx1ODUyOFx1ODUxZFx1ODUyZVx1ODUwMlx1ODRmZFx1ODUxZVx1ODRmNlx1ODUzMVx1ODUyNlx1ODRlN1x1ODRlOFx1ODRmMFx1ODRlZlx1ODRmOVx1ODUxOFx1ODUyMFx1ODUzMFx1ODUwYlx1ODUxOVx1ODUyZlx1ODY2Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODc1Nlx1ODc2M1x1ODc2NFx1ODc3N1x1ODdlMVx1ODc3M1x1ODc1OFx1ODc1NFx1ODc1Ylx1ODc1Mlx1ODc2MVx1ODc1YVx1ODc1MVx1ODc1ZVx1ODc2ZFx1ODc2YVx1ODc1MFx1ODc0ZVx1ODc1Zlx1ODc1ZFx1ODc2Zlx1ODc2Y1x1ODc3YVx1ODc2ZVx1''@;'; put 'put ''ODc1Y1x1ODc2NVx1ODc0Zlx1ODc3Ylx1ODc3NVx1ODc2Mlx1ODc2N1x1ODc2OVx1ODg1YVx1ODkwNVx1ODkwY1x1ODkxNFx1ODkwYlx1ODkxN1x1ODkxOFx1ODkxOVx1ODkwNlx1ODkxNlx1ODkxMVx1ODkwZVx1ODkwOVx1ODlhMlx1ODlhNFx1ODlhM1x1ODllZFx1ODlmMFx1ODllY1x1OGFj''@;'; put 'put ''Zlx1OGFjNlx1OGFiOFx1OGFkM1x1OGFkMVx1OGFkNFx1OGFkNVx1OGFiYlx1OGFkN1x1OGFiZVx1OGFjMFx1OGFjNVx1OGFkOFx1OGFjM1x1OGFiYVx1OGFiZFx1OGFkOVx1OGMzZVx1OGM0ZFx1OGM4Zlx1OGNlNVx1OGNkZlx1OGNkOVx1OGNlOFx1OGNkYVx1OGNkZFx1OGNlN1x1OGRhMFx1''@;'; put 'put ''OGQ5Y1x1OGRhMVx1OGQ5Ylx1OGUyMFx1OGUyM1x1OGUyNVx1OGUyNFx1OGUyZVx1OGUxNVx1OGUxYlx1OGUxNlx1OGUxMVx1OGUxOVx1OGUyNlx1OGUyN1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzMV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMxXVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsyMzFdW21dXT01OTEzNittLFJbNTkxMzYrbV09eFsyMzFdW21dKTtmb3IoeFsyMzJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlMTRcdThlMTJcdThlMThcdThlMTNcdThlMWNcdThlMTdcdThlMWFcdThmMmNcdThmMjRc''@;'; put 'put ''dThmMThcdThmMWFcdThmMjBcdThmMjNcdThmMTZcdThmMTdcdTkwNzNcdTkwNzBcdTkwNmZcdTkwNjdcdTkwNmJcdTkxMmZcdTkxMmJcdTkxMjlcdTkxMmFcdTkxMzJcdTkxMjZcdTkxMmVcdTkxODVcdTkxODZcdTkxOGFcdTkxODFcdTkxODJcdTkxODRcdTkxODBcdTkyZDBcdTkyYzNcdTky''@;'; put 'put ''YzRcdTkyYzBcdTkyZDlcdTkyYjZcdTkyY2ZcdTkyZjFcdTkyZGZcdTkyZDhcdTkyZTlcdTkyZDdcdTkyZGRcdTkyY2NcdTkyZWZcdTkyYzJcdTkyZThcdTkyY2FcdTkyYzhcdTkyY2VcdTkyZTZcdTkyY2RcdTkyZDVcdTkyYzlcdTkyZTBcdTkyZGVcdTkyZTdcdTkyZDFcdTkyZDNcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkyYjVcdTkyZTFcdTkyYzZcdTkyYjRcdTk1N2NcdTk1YWNcdTk1YWJcdTk1YWVcdTk1YjBcdTk2YTRcdTk2YTJcdTk2ZDNcdTk3MDVcdTk3MDhcdTk3MDJcdTk3NWFcdTk3OGFcdTk3OGVcdTk3ODhcdTk3ZDBcdTk3Y2ZcdTk4MWVc''@;'; put 'put ''dTk4MWRcdTk4MjZcdTk4MjlcdTk4MjhcdTk4MjBcdTk4MWJcdTk4MjdcdTk4YjJcdTk5MDhcdTk4ZmFcdTk5MTFcdTk5MTRcdTk5MTZcdTk5MTdcdTk5MTVcdTk5ZGNcdTk5Y2RcdTk5Y2ZcdTk5ZDNcdTk5ZDRcdTk5Y2VcdTk5YzlcdTk5ZDZcdTk5ZDhcdTk5Y2JcdTk5ZDdcdTk5Y2NcdTlh''@;'; put 'put ''YjNcdTlhZWNcdTlhZWJcdTlhZjNcdTlhZjJcdTlhZjFcdTliNDZcdTliNDNcdTliNjdcdTliNzRcdTliNzFcdTliNjZcdTliNzZcdTliNzVcdTliNzBcdTliNjhcdTliNjRcdTliNmNcdTljZmNcdTljZmFcdTljZmRcdTljZmZcdTljZjdcdTlkMDdcdTlkMDBcdTljZjlcdTljZmJcdTlkMDhc''@;'; put 'put ''dTlkMDVcdTlkMDRcdTllODNcdTllZDNcdTlmMGZcdTlmMTBcdTUxMWNcdTUxMTNcdTUxMTdcdTUxMWFcdTUxMTFcdTUxZGVcdTUzMzRcdTUzZTFcdTU2NzBcdTU2NjBcdTU2NmVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzMl1bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMjMyXVttXV09NTkzOTIrbSxSWzU5MzkyK21dPXhbMjMyXVttXSk7Zm9yKHhbMjMzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3''@;'; put 'put ''XHU1NzFjXHU1NzFiXHU1OGM4XHU1OGJkXHU1OGM5XHU1OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1''@;'; put 'put ''ZGI1XHU1ZGIwXHU1ZGFlXHU1ZGFhXHU1ZGE4XHU1ZGIyXHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNj''@;'; put 'put ''XHU2MWJhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MWJmXHU2MWI4XHU2MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJl''@;'; put 'put ''XHU2NmMwXHU2NmNhXHU2NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIzXHU2YTM0XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2''@;'; put 'put ''YTY0XHU2YTUwXHU2YTRmXHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2YTU2XHU2YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEz''@;'; put 'put ''XHU2ZmM3XHU2ZmJjXHU2ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNhXHU2ZmE4XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFjXHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMzXS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsyMzNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzM11bbV1dPTU5NjQ4K20sUls1OTY0OCttXT14WzIzM11bbV0pO2Zvcih4WzIzNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmZhMlx1NmZjOVx1NmZhYlx1NmZjZFx1NmZh''@;'; put 'put ''Zlx1NmZiMlx1NmZiMFx1NzFjNVx1NzFjMlx1NzFiZlx1NzFiOFx1NzFkNlx1NzFjMFx1NzFjMVx1NzFjYlx1NzFkNFx1NzFjYVx1NzFjN1x1NzFjZlx1NzFiZFx1NzFkOFx1NzFiY1x1NzFjNlx1NzFkYVx1NzFkYlx1NzI5ZFx1NzI5ZVx1NzM2OVx1NzM2Nlx1NzM2N1x1NzM2Y1x1NzM2NVx1''@;'; put 'put ''NzM2Ylx1NzM2YVx1NzQ3Zlx1NzQ5YVx1NzRhMFx1NzQ5NFx1NzQ5Mlx1NzQ5NVx1NzRhMVx1NzUwYlx1NzU4MFx1NzYyZlx1NzYyZFx1NzYzMVx1NzYzZFx1NzYzM1x1NzYzY1x1NzYzNVx1NzYzMlx1NzYzMFx1NzZiYlx1NzZlNlx1Nzc5YVx1Nzc5ZFx1NzdhMVx1Nzc5Y1x1Nzc5Ylx1Nzdh''@;'; put 'put ''Mlx1NzdhM1x1Nzc5NVx1Nzc5OVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1Nzc5N1x1NzhkZFx1NzhlOVx1NzhlNVx1NzhlYVx1NzhkZVx1NzhlM1x1NzhkYlx1NzhlMVx1NzhlMlx1NzhlZFx1NzhkZlx1NzhlMFx1NzlhNFx1N2E0NFx1N2E0OFx1N2E0N1x1N2Fi''@;'; put 'put ''Nlx1N2FiOFx1N2FiNVx1N2FiMVx1N2FiN1x1N2JkZVx1N2JlM1x1N2JlN1x1N2JkZFx1N2JkNVx1N2JlNVx1N2JkYVx1N2JlOFx1N2JmOVx1N2JkNFx1N2JlYVx1N2JlMlx1N2JkY1x1N2JlYlx1N2JkOFx1N2JkZlx1N2NkMlx1N2NkNFx1N2NkN1x1N2NkMFx1N2NkMVx1N2UxMlx1N2UyMVx1''@;'; put 'put ''N2UxN1x1N2UwY1x1N2UxZlx1N2UyMFx1N2UxM1x1N2UwZVx1N2UxY1x1N2UxNVx1N2UxYVx1N2UyMlx1N2UwYlx1N2UwZlx1N2UxNlx1N2UwZFx1N2UxNFx1N2UyNVx1N2UyNFx1N2Y0M1x1N2Y3Ylx1N2Y3Y1x1N2Y3YVx1N2ZiMVx1N2ZlZlx1ODAyYVx1ODAyOVx1ODA2Y1x1ODFiMVx1ODFh''@;'; put 'put ''Nlx1ODFhZVx1ODFiOVx1ODFiNVx1ODFhYlx1ODFiMFx1ODFhY1x1ODFiNFx1ODFiMlx1ODFiN1x1ODFhN1x1ODFmMlx1ODI1NVx1ODI1Nlx1ODI1N1x1ODU1Nlx1ODU0NVx1ODU2Ylx1ODU0ZFx1ODU1M1x1ODU2MVx1ODU1OFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzNF0ubGVuZ3Ro''@;'; put 'put ''OysrbSk2NTUzMyE9PXhbMjM0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzRdW21dXT01OTkwNCttLFJbNTk5MDQrbV09eFsyMzRdW21dKTtmb3IoeFsyMzVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NDBcdTg1NDZcdTg1''@;'; put 'put ''NjRcdTg1NDFcdTg1NjJcdTg1NDRcdTg1NTFcdTg1NDdcdTg1NjNcdTg1M2VcdTg1NWJcdTg1NzFcdTg1NGVcdTg1NmVcdTg1NzVcdTg1NTVcdTg1NjdcdTg1NjBcdTg1OGNcdTg1NjZcdTg1NWRcdTg1NTRcdTg1NjVcdTg1NmNcdTg2NjNcdTg2NjVcdTg2NjRcdTg3OWJcdTg3OGZcdTg3OTdc''@;'; put 'put ''dTg3OTNcdTg3OTJcdTg3ODhcdTg3ODFcdTg3OTZcdTg3OThcdTg3NzlcdTg3ODdcdTg3YTNcdTg3ODVcdTg3OTBcdTg3OTFcdTg3OWRcdTg3ODRcdTg3OTRcdTg3OWNcdTg3OWFcdTg3ODlcdTg5MWVcdTg5MjZcdTg5MzBcdTg5MmRcdTg5MmVcdTg5MjdcdTg5MzFcdTg5MjJcdTg5MjlcdTg5''@;'; put 'put ''MjNcdTg5MmZcdTg5MmNcdTg5MWZcdTg5ZjFcdThhZTBcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThhZTJcdThhZjJcdThhZjRcdThhZjVcdThhZGRcdThiMTRcdThhZTRcdThhZGZcdThhZjBcdThhYzhcdThhZGVcdThhZTFcdThhZThcdThhZmZcdThhZWZcdThh''@;'; put 'put ''ZmJcdThjOTFcdThjOTJcdThjOTBcdThjZjVcdThjZWVcdThjZjFcdThjZjBcdThjZjNcdThkNmNcdThkNmVcdThkYTVcdThkYTdcdThlMzNcdThlM2VcdThlMzhcdThlNDBcdThlNDVcdThlMzZcdThlM2NcdThlM2RcdThlNDFcdThlMzBcdThlM2ZcdThlYmRcdThmMzZcdThmMmVcdThmMzVc''@;'; put 'put ''dThmMzJcdThmMzlcdThmMzdcdThmMzRcdTkwNzZcdTkwNzlcdTkwN2JcdTkwODZcdTkwZmFcdTkxMzNcdTkxMzVcdTkxMzZcdTkxOTNcdTkxOTBcdTkxOTFcdTkxOGRcdTkxOGZcdTkzMjdcdTkzMWVcdTkzMDhcdTkzMWZcdTkzMDZcdTkzMGZcdTkzN2FcdTkzMzhcdTkzM2NcdTkzMWJcdTkz''@;'; put 'put ''MjNcdTkzMTJcdTkzMDFcdTkzNDZcdTkzMmRcdTkzMGVcdTkzMGRcdTkyY2JcdTkzMWRcdTkyZmFcdTkzMjVcdTkzMTNcdTkyZjlcdTkyZjdcdTkzMzRcdTkzMDJcdTkzMjRcdTkyZmZcdTkzMjlcdTkzMzlcdTkzMzVcdTkzMmFcdTkzMTRcdTkzMGNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9''@;'; put 'put ''eFsyMzVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM1XVttXV09NjAxNjArbSxSWzYwMTYwK21dPXhbMjM1XVttXSk7Zm9yKHhbMjM2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5''@;'; put 'put ''MzBiXHU5MmZlXHU5MzA5XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5N2YwXHU5N2Y4XHU5ODM1XHU5ODJmXHU5ODMy''@;'; put 'put ''XHU5OTI0XHU5OTFmXHU5OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYwXHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMzXHU5YjgwXHU5Yjg1XHU5Yjg3XHU5YjdjXHU5''@;'; put 'put ''YjdlXHU5YjdiXHU5YjgyXHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5YjdkXHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5''@;'; put 'put ''ZDFmXHU5ZTg4XHU5ZTg2XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1Njgx''@;'; put 'put ''XHU1OGQ2XHU1OGQ0XHU1OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYxXHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2''@;'; put 'put ''MWU0XHU2MWU4XHU2MWRlXHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlXHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksbT0wO20hPXhbMjM2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzNl1bbV1dPTYwNDE2K20sUls2MDQxNittXT14WzIzNl1bbV0pO2Zvcih4WzIzN109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1NmE5NVx1NmE4M1x1NmFhOFx1NmFhNFx1NmE5MVx1NmE3Zlx1NmFhNlx1NmE5YVx1NmE4NVx1NmE4Y1x1NmE5Mlx1NmI1Ylx1NmJhZFx1NmMwOVx1NmZjY1x1NmZhOVx1NmZmNFx1NmZkNFx1NmZlM1x1NmZkY1x1NmZlZFx1NmZlN1x1NmZlNlx1NmZkZVx1NmZmMlx1NmZk''@;'; put 'put ''ZFx1NmZlMlx1NmZlOFx1NzFlMVx1NzFmMVx1NzFlOFx1NzFmMlx1NzFlNFx1NzFmMFx1NzFlMlx1NzM3M1x1NzM2ZVx1NzM2Zlx1NzQ5N1x1NzRiMlx1NzRhYlx1NzQ5MFx1NzRhYVx1NzRhZFx1NzRiMVx1NzRhNVx1NzRhZlx1NzUxMFx1NzUxMVx1NzUxMlx1NzUwZlx1NzU4NFx1NzY0M1x1''@;'; put 'put ''NzY0OFx1NzY0OVx1NzY0N1x1NzZhNFx1NzZlOVx1NzdiNVx1NzdhYlx1NzdiMlx1NzdiN1x1NzdiNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzdiNFx1NzdiMVx1NzdhOFx1NzdmMFx1NzhmM1x1NzhmZFx1NzkwMlx1NzhmYlx1NzhmY1x1NzhmMlx1NzkwNVx1''@;'; put 'put ''NzhmOVx1NzhmZVx1NzkwNFx1NzlhYlx1NzlhOFx1N2E1Y1x1N2E1Ylx1N2E1Nlx1N2E1OFx1N2E1NFx1N2E1YVx1N2FiZVx1N2FjMFx1N2FjMVx1N2MwNVx1N2MwZlx1N2JmMlx1N2MwMFx1N2JmZlx1N2JmYlx1N2MwZVx1N2JmNFx1N2MwYlx1N2JmM1x1N2MwMlx1N2MwOVx1N2MwM1x1N2Mw''@;'; put 'put ''MVx1N2JmOFx1N2JmZFx1N2MwNlx1N2JmMFx1N2JmMVx1N2MxMFx1N2MwYVx1N2NlOFx1N2UyZFx1N2UzY1x1N2U0Mlx1N2UzM1x1OTg0OFx1N2UzOFx1N2UyYVx1N2U0OVx1N2U0MFx1N2U0N1x1N2UyOVx1N2U0Y1x1N2UzMFx1N2UzYlx1N2UzNlx1N2U0NFx1N2UzYVx1N2Y0NVx1N2Y3Zlx1''@;'; put 'put ''N2Y3ZVx1N2Y3ZFx1N2ZmNFx1N2ZmMlx1ODAyY1x1ODFiYlx1ODFjNFx1ODFjY1x1ODFjYVx1ODFjNVx1ODFjN1x1ODFiY1x1ODFlOVx1ODI1Ylx1ODI1YVx1ODI1Y1x1ODU4M1x1ODU4MFx1ODU4Zlx1ODVhN1x1ODU5NVx1ODVhMFx1ODU4Ylx1ODVhM1x1ODU3Ylx1ODVhNFx1ODU5YVx1ODU5''@;'; put 'put ''ZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzddW21dXT02MDY3MittLFJbNjA2NzIrbV09eFsyMzddW21dKTtmb3IoeFsyMzhdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NzdcdTg1N2NcdTg1ODlcdTg1YTFcdTg1N2FcdTg1NzhcdTg1NTdcdTg1OGVcdTg1OTZcdTg1ODZcdTg1OGRcdTg1OTlcdTg1OWRcdTg1ODFcdTg1YTJcdTg1ODJcdTg1ODhcdTg1ODVcdTg1NzlcdTg1NzZcdTg1OThcdTg1OTBcdTg1OWZcdTg2''@;'; put 'put ''NjhcdTg3YmVcdTg3YWFcdTg3YWRcdTg3YzVcdTg3YjBcdTg3YWNcdTg3YjlcdTg3YjVcdTg3YmNcdTg3YWVcdTg3YzlcdTg3YzNcdTg3YzJcdTg3Y2NcdTg3YjdcdTg3YWZcdTg3YzRcdTg3Y2FcdTg3YjRcdTg3YjZcdTg3YmZcdTg3YjhcdTg3YmRcdTg3ZGVcdTg3YjJcdTg5MzVcdTg5MzNc''@;'; put 'put ''dTg5M2NcdTg5M2VcdTg5NDFcdTg5NTJcdTg5MzdcdTg5NDJcdTg5YWRcdTg5YWZcdTg5YWVcdTg5ZjJcdTg5ZjNcdThiMWVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThiMThcdThiMTZcdThiMTFcdThiMDVcdThiMGJcdThiMjJcdThiMGZcdThiMTJcdThiMTVc''@;'; put 'put ''dThiMDdcdThiMGRcdThiMDhcdThiMDZcdThiMWNcdThiMTNcdThiMWFcdThjNGZcdThjNzBcdThjNzJcdThjNzFcdThjNmZcdThjOTVcdThjOTRcdThjZjlcdThkNmZcdThlNGVcdThlNGRcdThlNTNcdThlNTBcdThlNGNcdThlNDdcdThmNDNcdThmNDBcdTkwODVcdTkwN2VcdTkxMzhcdTkx''@;'; put 'put ''OWFcdTkxYTJcdTkxOWJcdTkxOTlcdTkxOWZcdTkxYTFcdTkxOWRcdTkxYTBcdTkzYTFcdTkzODNcdTkzYWZcdTkzNjRcdTkzNTZcdTkzNDdcdTkzN2NcdTkzNThcdTkzNWNcdTkzNzZcdTkzNDlcdTkzNTBcdTkzNTFcdTkzNjBcdTkzNmRcdTkzOGZcdTkzNGNcdTkzNmFcdTkzNzlcdTkzNTdc''@;'; put 'put ''dTkzNTVcdTkzNTJcdTkzNGZcdTkzNzFcdTkzNzdcdTkzN2JcdTkzNjFcdTkzNWVcdTkzNjNcdTkzNjdcdTkzODBcdTkzNGVcdTkzNTlcdTk1YzdcdTk1YzBcdTk1YzlcdTk1YzNcdTk1YzVcdTk1YjdcdTk2YWVcdTk2YjBcdTk2YWNcdTk3MjBcdTk3MWZcdTk3MThcdTk3MWRcdTk3MTlcdTk3''@;'; put 'put ''OWFcdTk3YTFcdTk3OWNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM4XVttXV09NjA5MjgrbSxSWzYwOTI4K21dPXhbMjM4XVttXSk7Zm9yKHhbMjM5XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5N2YxXHU5ODQxXHU5ODQ0XHU5ODRhXHU5ODQ5XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5''@;'; put 'put ''OTk4XHU5OWEzXHU5OWExXHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZiXHU5OWZkXHU5OWZlXHU5OWZjXHU5YTAzXHU5YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1''@;'; put 'put ''XHU5YmE0XHU5Yjg2XHU5YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMwXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNk''@;'; put 'put ''XHU3ZmY1XHU5ZDJkXHU5ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEwXHU1MTMxXHU1MTJkXHU1MTJlXHU1Njk4XHU1NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1''@;'; put 'put ''YzZhXHU1ZGMwXHU1ZTZkXHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYwXHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2NTA0XHU2NGZkXHU2NGY4XHU2NTAxXHU2NTAzXHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5''@;'; put 'put ''XHU2YWJkXHU2YWUxXHU2YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBkXHU3MDAxXHU3MDA1XHU3MDE0XHU3MDBlXHU2ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3''@;'; put 'put ''MWZmXHU3MWY5XHU3MjAzXHU3MWZkXHU3Mzc2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzOV1bbV1dPTYxMTg0K20sUls2MTE4NCttXT14WzIzOV1bbV0pO2Zvcih4WzI0MF09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NzRiOFx1NzRjMFx1NzRiNVx1NzRjMVx1NzRiZVx1NzRiNlx1NzRiYlx1NzRjMlx1NzUxNFx1NzUxM1x1NzY1Y1x1NzY2NFx1NzY1OVx1NzY1MFx1NzY1M1x1NzY1N1x1NzY1YVx1NzZhNlx1NzZiZFx1''@;'; put 'put ''NzZlY1x1NzdjMlx1NzdiYVx1NzhmZlx1NzkwY1x1NzkxM1x1NzkxNFx1NzkwOVx1NzkxMFx1NzkxMlx1NzkxMVx1NzlhZFx1NzlhY1x1N2E1Zlx1N2MxY1x1N2MyOVx1N2MxOVx1N2MyMFx1N2MxZlx1N2MyZFx1N2MxZFx1N2MyNlx1N2MyOFx1N2MyMlx1N2MyNVx1N2MzMFx1N2U1Y1x1N2U1''@;'; put 'put ''MFx1N2U1Nlx1N2U2M1x1N2U1OFx1N2U2Mlx1N2U1Zlx1N2U1MVx1N2U2MFx1N2U1N1x1N2U1M1x1N2ZiNVx1N2ZiM1x1N2ZmN1x1N2ZmOFx1ODA3NVx1ODFkMVx1ODFkMlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFkMFx1ODI1Zlx1ODI1ZVx1ODViNFx1ODVj''@;'; put 'put ''Nlx1ODVjMFx1ODVjM1x1ODVjMlx1ODViM1x1ODViNVx1ODViZFx1ODVjN1x1ODVjNFx1ODViZlx1ODVjYlx1ODVjZVx1ODVjOFx1ODVjNVx1ODViMVx1ODViNlx1ODVkMlx1ODYyNFx1ODViOFx1ODViN1x1ODViZVx1ODY2OVx1ODdlN1x1ODdlNlx1ODdlMlx1ODdkYlx1ODdlYlx1ODdlYVx1''@;'; put 'put ''ODdlNVx1ODdkZlx1ODdmM1x1ODdlNFx1ODdkNFx1ODdkY1x1ODdkM1x1ODdlZFx1ODdkOFx1ODdlM1x1ODdhNFx1ODdkN1x1ODdkOVx1ODgwMVx1ODdmNFx1ODdlOFx1ODdkZFx1ODk1M1x1ODk0Ylx1ODk0Zlx1ODk0Y1x1ODk0Nlx1ODk1MFx1ODk1MVx1ODk0OVx1OGIyYVx1OGIyN1x1OGIy''@;'; put 'put ''M1x1OGIzM1x1OGIzMFx1OGIzNVx1OGI0N1x1OGIyZlx1OGIzY1x1OGIzZVx1OGIzMVx1OGIyNVx1OGIzN1x1OGIyNlx1OGIzNlx1OGIyZVx1OGIyNFx1OGIzYlx1OGIzZFx1OGIzYVx1OGM0Mlx1OGM3NVx1OGM5OVx1OGM5OFx1OGM5N1x1OGNmZVx1OGQwNFx1OGQwMlx1OGQwMFx1OGU1Y1x1''@;'; put 'put ''OGU2Mlx1OGU2MFx1OGU1N1x1OGU1Nlx1OGU1ZVx1OGU2NVx1OGU2N1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0MF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDBdW21dXT02MTQ0MCttLFJbNjE0NDArbV09eFsyNDBdW21dKTtmb3Io''@;'; put 'put ''eFsyNDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThlNWJcdThlNWFcdThlNjFcdThlNWRcdThlNjlcdThlNTRcdThmNDZcdThmNDdcdThmNDhcdThmNGJcdTkxMjhcdTkxM2FcdTkxM2JcdTkxM2VcdTkxYThcdTkxYTVcdTkxYTdc''@;'; put 'put ''dTkxYWZcdTkxYWFcdTkzYjVcdTkzOGNcdTkzOTJcdTkzYjdcdTkzOWJcdTkzOWRcdTkzODlcdTkzYTdcdTkzOGVcdTkzYWFcdTkzOWVcdTkzYTZcdTkzOTVcdTkzODhcdTkzOTlcdTkzOWZcdTkzOGRcdTkzYjFcdTkzOTFcdTkzYjJcdTkzYTRcdTkzYThcdTkzYjRcdTkzYTNcdTkzYTVcdTk1''@;'; put 'put ''ZDJcdTk1ZDNcdTk1ZDFcdTk2YjNcdTk2ZDdcdTk2ZGFcdTVkYzJcdTk2ZGZcdTk2ZDhcdTk2ZGRcdTk3MjNcdTk3MjJcdTk3MjVcdTk3YWNcdTk3YWVcdTk3YThcdTk3YWJcdTk3YTRcdTk3YWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk3YTJcdTk3YTVcdTk3''@;'; put 'put ''ZDdcdTk3ZDlcdTk3ZDZcdTk3ZDhcdTk3ZmFcdTk4NTBcdTk4NTFcdTk4NTJcdTk4YjhcdTk5NDFcdTk5M2NcdTk5M2FcdTlhMGZcdTlhMGJcdTlhMDlcdTlhMGRcdTlhMDRcdTlhMTFcdTlhMGFcdTlhMDVcdTlhMDdcdTlhMDZcdTlhYzBcdTlhZGNcdTliMDhcdTliMDRcdTliMDVcdTliMjlc''@;'; put 'put ''dTliMzVcdTliNGFcdTliNGNcdTliNGJcdTliYzdcdTliYzZcdTliYzNcdTliYmZcdTliYzFcdTliYjVcdTliYjhcdTliZDNcdTliYjZcdTliYzRcdTliYjlcdTliYmRcdTlkNWNcdTlkNTNcdTlkNGZcdTlkNGFcdTlkNWJcdTlkNGJcdTlkNTlcdTlkNTZcdTlkNGNcdTlkNTdcdTlkNTJcdTlk''@;'; put 'put ''NTRcdTlkNWZcdTlkNThcdTlkNWFcdTllOGVcdTllOGNcdTllZGZcdTlmMDFcdTlmMDBcdTlmMTZcdTlmMjVcdTlmMmJcdTlmMmFcdTlmMjlcdTlmMjhcdTlmNGNcdTlmNTVcdTUxMzRcdTUxMzVcdTUyOTZcdTUyZjdcdTUzYjRcdTU2YWJcdTU2YWRcdTU2YTZcdTU2YTdcdTU2YWFcdTU2YWNc''@;'; put 'put ''dTU4ZGFcdTU4ZGRcdTU4ZGJcdTU5MTJcdTViM2RcdTViM2VcdTViM2ZcdTVkYzNcdTVlNzBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0MV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQxXVttXV09NjE2OTYrbSxSWzYxNjk2K21dPXhb''@;'; put 'put ''MjQxXVttXSk7Zm9yKHhbMjQyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZmJmXHU2MWZiXHU2NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNj''@;'; put 'put ''XHU2YWQxXHU2YWQ5XHU2YWNiXHU2YWRmXHU2YWRjXHU2YWQwXHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYwXHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3''@;'; put 'put ''MjBhXHU3MjA3XHU3MjAyXHU3MjA1XHU3MmE1XHU3MmE2XHU3MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3''@;'; put 'put ''OTIxXHU3OTFjXHU3OTE3XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5XHU3YzJjXHU3YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2''@;'; put 'put ''XHU3ZmI3XHU3ZmZkXHU3ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4NWViXHU4NWYxXHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4''@;'; put 'put ''NWVmXHU4NWRlXHU4NWUyXHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBjXHU4ODBiXHU4ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3''@;'; put 'put ''XHU4OWI2XHU4OWY2XHU4YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4YjRiXHU4YjU1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0Ml1bbV1dPTYxOTUyK20s''@;'; put 'put ''Uls2MTk1MittXT14WzI0Ml1bbV0pO2Zvcih4WzI0M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OGI1MVx1OGI0Mlx1OGI1Mlx1OGI1N1x1OGM0M1x1OGM3N1x1OGM3Nlx1OGM5YVx1OGQwNlx1OGQwN1x1OGQwOVx1OGRhY1x1OGRh''@;'; put 'put ''YVx1OGRhZFx1OGRhYlx1OGU2ZFx1OGU3OFx1OGU3M1x1OGU2YVx1OGU2Zlx1OGU3Ylx1OGVjMlx1OGY1Mlx1OGY1MVx1OGY0Zlx1OGY1MFx1OGY1M1x1OGZiNFx1OTE0MFx1OTEzZlx1OTFiMFx1OTFhZFx1OTNkZVx1OTNjN1x1OTNjZlx1OTNjMlx1OTNkYVx1OTNkMFx1OTNmOVx1OTNlY1x1''@;'; put 'put ''OTNjY1x1OTNkOVx1OTNhOVx1OTNlNlx1OTNjYVx1OTNkNFx1OTNlZVx1OTNlM1x1OTNkNVx1OTNjNFx1OTNjZVx1OTNjMFx1OTNkMlx1OTNlN1x1OTU3ZFx1OTVkYVx1OTVkYlx1OTZlMVx1OTcyOVx1OTcyYlx1OTcyY1x1OTcyOFx1OTcyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1OTdiM1x1OTdiN1x1OTdiNlx1OTdkZFx1OTdkZVx1OTdkZlx1OTg1Y1x1OTg1OVx1OTg1ZFx1OTg1N1x1OThiZlx1OThiZFx1OThiYlx1OThiZVx1OTk0OFx1OTk0N1x1OTk0M1x1OTlhNlx1OTlhN1x1OWExYVx1OWExNVx1OWEyNVx1OWExZFx1OWEyNFx1OWExYlx1OWEy''@;'; put 'put ''Mlx1OWEyMFx1OWEyN1x1OWEyM1x1OWExZVx1OWExY1x1OWExNFx1OWFjMlx1OWIwYlx1OWIwYVx1OWIwZVx1OWIwY1x1OWIzN1x1OWJlYVx1OWJlYlx1OWJlMFx1OWJkZVx1OWJlNFx1OWJlNlx1OWJlMlx1OWJmMFx1OWJkNFx1OWJkN1x1OWJlY1x1OWJkY1x1OWJkOVx1OWJlNVx1OWJkNVx1''@;'; put 'put ''OWJlMVx1OWJkYVx1OWQ3N1x1OWQ4MVx1OWQ4YVx1OWQ4NFx1OWQ4OFx1OWQ3MVx1OWQ4MFx1OWQ3OFx1OWQ4Nlx1OWQ4Ylx1OWQ4Y1x1OWQ3ZFx1OWQ2Ylx1OWQ3NFx1OWQ3NVx1OWQ3MFx1OWQ2OVx1OWQ4NVx1OWQ3M1x1OWQ3Ylx1OWQ4Mlx1OWQ2Zlx1OWQ3OVx1OWQ3Zlx1OWQ4N1x1OWQ2''@;'; put 'put ''OFx1OWU5NFx1OWU5MVx1OWVjMFx1OWVmY1x1OWYyZFx1OWY0MFx1OWY0MVx1OWY0ZFx1OWY1Nlx1OWY1N1x1OWY1OFx1NTMzN1x1NTZiMlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0M10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDNd''@;'; put 'put ''W21dXT02MjIwOCttLFJbNjIyMDgrbV09eFsyNDNdW21dKTtmb3IoeFsyNDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU2YjVcdTU2YjNcdTU4ZTNcdTViNDVcdTVkYzZcdTVkYzdcdTVlZWVcdTVlZWZcdTVmYzBcdTVmYzFcdTYx''@;'; put 'put ''ZjlcdTY1MTdcdTY1MTZcdTY1MTVcdTY1MTNcdTY1ZGZcdTY2ZThcdTY2ZTNcdTY2ZTRcdTZhZjNcdTZhZjBcdTZhZWFcdTZhZThcdTZhZjlcdTZhZjFcdTZhZWVcdTZhZWZcdTcwM2NcdTcwMzVcdTcwMmZcdTcwMzdcdTcwMzRcdTcwMzFcdTcwNDJcdTcwMzhcdTcwM2ZcdTcwM2FcdTcwMzlc''@;'; put 'put ''dTcwNDBcdTcwM2JcdTcwMzNcdTcwNDFcdTcyMTNcdTcyMTRcdTcyYThcdTczN2RcdTczN2NcdTc0YmFcdTc2YWJcdTc2YWFcdTc2YmVcdTc2ZWRcdTc3Y2NcdTc3Y2VcdTc3Y2ZcdTc3Y2RcdTc3ZjJcdTc5MjVcdTc5MjNcdTc5MjdcdTc5MjhcdTc5MjRcdTc5MjlcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTc5YjJcdTdhNmVcdTdhNmNcdTdhNmRcdTdhZjdcdTdjNDlcdTdjNDhcdTdjNGFcdTdjNDdcdTdjNDVcdTdjZWVcdTdlN2JcdTdlN2VcdTdlODFcdTdlODBcdTdmYmFcdTdmZmZcdTgwNzlcdTgxZGJcdTgxZDlcdTgyMGJcdTgyNjhcdTgyNjlcdTg2''@;'; put 'put ''MjJcdTg1ZmZcdTg2MDFcdTg1ZmVcdTg2MWJcdTg2MDBcdTg1ZjZcdTg2MDRcdTg2MDlcdTg2MDVcdTg2MGNcdTg1ZmRcdTg4MTlcdTg4MTBcdTg4MTFcdTg4MTdcdTg4MTNcdTg4MTZcdTg5NjNcdTg5NjZcdTg5YjlcdTg5ZjdcdThiNjBcdThiNmFcdThiNWRcdThiNjhcdThiNjNcdThiNjVc''@;'; put 'put ''dThiNjdcdThiNmRcdThkYWVcdThlODZcdThlODhcdThlODRcdThmNTlcdThmNTZcdThmNTdcdThmNTVcdThmNThcdThmNWFcdTkwOGRcdTkxNDNcdTkxNDFcdTkxYjdcdTkxYjVcdTkxYjJcdTkxYjNcdTk0MGJcdTk0MTNcdTkzZmJcdTk0MjBcdTk0MGZcdTk0MTRcdTkzZmVcdTk0MTVcdTk0''@;'; put 'put ''MTBcdTk0MjhcdTk0MTlcdTk0MGRcdTkzZjVcdTk0MDBcdTkzZjdcdTk0MDdcdTk0MGVcdTk0MTZcdTk0MTJcdTkzZmFcdTk0MDlcdTkzZjhcdTk0MGFcdTkzZmZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0NF1bbV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG9lW3hbMjQ0XVttXV09NjI0NjQrbSxSWzYyNDY0K21dPXhbMjQ0XVttXSk7Zm9yKHhbMjQ1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5NDA2XHU5NWRlXHU5NWUwXHU5NWRmXHU5''@;'; put 'put ''NzJlXHU5NzJmXHU5N2I5XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMyXHU5OTUwXHU5OTRlXHU5OTU5XHU5OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2XHU5YTI5XHU5YTJlXHU5YTM4XHU5YTJk''@;'; put 'put ''XHU5YWM3XHU5YWNhXHU5YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5YmY4XHU5YzQwXHU5YzA3XHU5YzBlXHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5ZDkyXHU5ZDk4XHU5ZDkwXHU5ZDliXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5''@;'; put 'put ''ZWU3XHU5ZWU2XHU5ZjMwXHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4''@;'; put 'put ''XHU2YjAwXHU3MDQzXHU3MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3MzdlXHU3NTE3XHU3NjZhXHU3N2QwXHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3''@;'; put 'put ''ZjRkXHU3ZmJiXHU4MDMwXHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3XHU4NjJlXHU4NjIxXHU4NjIwXHU4NjI5XHU4NjFlXHU4NjI1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDVdW21d''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0NV1bbV1dPTYyNzIwK20sUls2MjcyMCttXT14WzI0NV1bbV0pO2Zvcih4WzI0Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODgyOVx1ODgxZFx1ODgxYlx1ODgyMFx1ODgyNFx1ODgxY1x1''@;'; put 'put ''ODgyYlx1ODg0YVx1ODk2ZFx1ODk2OVx1ODk2ZVx1ODk2Ylx1ODlmYVx1OGI3OVx1OGI3OFx1OGI0NVx1OGI3YVx1OGI3Ylx1OGQxMFx1OGQxNFx1OGRhZlx1OGU4ZVx1OGU4Y1x1OGY1ZVx1OGY1Ylx1OGY1ZFx1OTE0Nlx1OTE0NFx1OTE0NVx1OTFiOVx1OTQzZlx1OTQzYlx1OTQzNlx1OTQy''@;'; put 'put ''OVx1OTQzZFx1OTQzY1x1OTQzMFx1OTQzOVx1OTQyYVx1OTQzN1x1OTQyY1x1OTQ0MFx1OTQzMVx1OTVlNVx1OTVlNFx1OTVlM1x1OTczNVx1OTczYVx1OTdiZlx1OTdlMVx1OTg2NFx1OThjOVx1OThjNlx1OThjMFx1OTk1OFx1OTk1Nlx1OWEzOVx1OWEzZFx1OWE0Nlx1OWE0NFx1OWE0Mlx1''@;'; put 'put ''OWE0MVx1OWEzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWEzZlx1OWFjZFx1OWIxNVx1OWIxN1x1OWIxOFx1OWIxNlx1OWIzYVx1OWI1Mlx1OWMyYlx1OWMxZFx1OWMxY1x1OWMyY1x1OWMyM1x1OWMyOFx1OWMyOVx1OWMyNFx1OWMyMVx1OWRiN1x1OWRiNlx1''@;'; put 'put ''OWRiY1x1OWRjMVx1OWRjN1x1OWRjYVx1OWRjZlx1OWRiZVx1OWRjNVx1OWRjM1x1OWRiYlx1OWRiNVx1OWRjZVx1OWRiOVx1OWRiYVx1OWRhY1x1OWRjOFx1OWRiMVx1OWRhZFx1OWRjY1x1OWRiM1x1OWRjZFx1OWRiMlx1OWU3YVx1OWU5Y1x1OWVlYlx1OWVlZVx1OWVlZFx1OWYxYlx1OWYx''@;'; put 'put ''OFx1OWYxYVx1OWYzMVx1OWY0ZVx1OWY2NVx1OWY2NFx1OWY5Mlx1NGViOVx1NTZjNlx1NTZjNVx1NTZjYlx1NTk3MVx1NWI0Ylx1NWI0Y1x1NWRkNVx1NWRkMVx1NWVmMlx1NjUyMVx1NjUyMFx1NjUyNlx1NjUyMlx1NmIwYlx1NmIwOFx1NmIwOVx1NmMwZFx1NzA1NVx1NzA1Nlx1NzA1N1x1''@;'; put 'put ''NzA1Mlx1NzIxZVx1NzIxZlx1NzJhOVx1NzM3Zlx1NzRkOFx1NzRkNVx1NzRkOVx1NzRkN1x1NzY2ZFx1NzZhZFx1NzkzNVx1NzliNFx1N2E3MFx1N2E3MVx1N2M1N1x1N2M1Y1x1N2M1OVx1N2M1Ylx1N2M1YVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0Nl0ubGVuZ3RoOysrbSk2NTUz''@;'; put 'put ''MyE9PXhbMjQ2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDZdW21dXT02Mjk3NittLFJbNjI5NzYrbV09eFsyNDZdW21dKTtmb3IoeFsyNDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdjZjRcdTdjZjFcdTdlOTFcdTdmNGZc''@;'; put 'put ''dTdmODdcdTgxZGVcdTgyNmJcdTg2MzRcdTg2MzVcdTg2MzNcdTg2MmNcdTg2MzJcdTg2MzZcdTg4MmNcdTg4MjhcdTg4MjZcdTg4MmFcdTg4MjVcdTg5NzFcdTg5YmZcdTg5YmVcdTg5ZmJcdThiN2VcdThiODRcdThiODJcdThiODZcdThiODVcdThiN2ZcdThkMTVcdThlOTVcdThlOTRcdThl''@;'; put 'put ''OWFcdThlOTJcdThlOTBcdThlOTZcdThlOTdcdThmNjBcdThmNjJcdTkxNDdcdTk0NGNcdTk0NTBcdTk0NGFcdTk0NGJcdTk0NGZcdTk0NDdcdTk0NDVcdTk0NDhcdTk0NDlcdTk0NDZcdTk3M2ZcdTk3ZTNcdTk4NmFcdTk4NjlcdTk4Y2JcdTk5NTRcdTk5NWJcdTlhNGVcdTlhNTNcdTlhNTRc''@;'; put 'put ''dTlhNGNcdTlhNGZcdTlhNDhcdTlhNGFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhNDlcdTlhNTJcdTlhNTBcdTlhZDBcdTliMTlcdTliMmJcdTliM2JcdTliNTZcdTliNTVcdTljNDZcdTljNDhcdTljM2ZcdTljNDRcdTljMzlcdTljMzNcdTljNDFcdTljM2Nc''@;'; put 'put ''dTljMzdcdTljMzRcdTljMzJcdTljM2RcdTljMzZcdTlkZGJcdTlkZDJcdTlkZGVcdTlkZGFcdTlkY2JcdTlkZDBcdTlkZGNcdTlkZDFcdTlkZGZcdTlkZTlcdTlkZDlcdTlkZDhcdTlkZDZcdTlkZjVcdTlkZDVcdTlkZGRcdTllYjZcdTllZjBcdTlmMzVcdTlmMzNcdTlmMzJcdTlmNDJcdTlm''@;'; put 'put ''NmJcdTlmOTVcdTlmYTJcdTUxM2RcdTUyOTlcdTU4ZThcdTU4ZTdcdTU5NzJcdTViNGRcdTVkZDhcdTg4MmZcdTVmNGZcdTYyMDFcdTYyMDNcdTYyMDRcdTY1MjlcdTY1MjVcdTY1OTZcdTY2ZWJcdTZiMTFcdTZiMTJcdTZiMGZcdTZiY2FcdTcwNWJcdTcwNWFcdTcyMjJcdTczODJcdTczODFc''@;'; put 'put ''dTczODNcdTc2NzBcdTc3ZDRcdTdjNjdcdTdjNjZcdTdlOTVcdTgyNmNcdTg2M2FcdTg2NDBcdTg2MzlcdTg2M2NcdTg2MzFcdTg2M2JcdTg2M2VcdTg4MzBcdTg4MzJcdTg4MmVcdTg4MzNcdTg5NzZcdTg5NzRcdTg5NzNcdTg5ZmVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDddLmxl''@;'; put 'put ''bmd0aDsrK20pNjU1MzMhPT14WzI0N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ3XVttXV09NjMyMzIrbSxSWzYzMjMyK21dPXhbMjQ3XVttXSk7Zm9yKHhbMjQ4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU4YjhjXHU4Yjhl''@;'; put 'put ''XHU4YjhiXHU4Yjg4XHU4YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3XHU5NDVlXHU5N2M0XHU5N2M1XHU5ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5''@;'; put 'put ''YzU1XHU5YzU5XHU5YzRjXHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5ZGUxXHU5ZGVlXHU5ZGU2XHU5ZGYyXHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2''@;'; put 'put ''XHU5ZjFjXHU5ZjM4XHU5ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5ZjcxXHU5ZjcwXHU5ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1YjRlXHU1YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVk''@;'; put 'put ''XHU3MDYwXHU3MjIzXHU3NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZkXHU4NjQzXHU4ODM4XHU4ODM3XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1XHU4ZTllXHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5''@;'; put 'put ''NDY4XHU5NDY5XHU5NmU1XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5YzY3XHU5YzY2XHU5YzYyXHU5YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5ZTA3XHU5ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZk''@;'; put 'put ''XHU5ZTA0XHU5ZWEwXHU5ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5XHU2YjE3XHU2YjFhXHU3MDYyXHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5XHU3OTM5XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhXHVmZmZkIi5zcGxpdCgiIiksbT0w''@;'; put 'put ''O20hPXhbMjQ4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0OF1bbV1dPTYzNDg4K20sUls2MzQ4OCttXT14WzI0OF1bbV0pO2Zvcih4WzI0OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1N2U5OFx1N2U5Ylx1N2U5OVx1ODFlMFx1ODFlMVx1ODY0Nlx1ODY0N1x1ODY0OFx1ODk3OVx1ODk3YVx1ODk3Y1x1ODk3Ylx1ODlmZlx1OGI5OFx1OGI5OVx1OGVhNVx1OGVhNFx1OGVhM1x1OTQ2ZVx1OTQ2ZFx1OTQ2Zlx1OTQ3MVx1OTQ3M1x1OTc0OVx1OTg3Mlx1OTk1Zlx1OWM2OFx1''@;'; put 'put ''OWM2ZVx1OWM2ZFx1OWUwYlx1OWUwZFx1OWUxMFx1OWUwZlx1OWUxMlx1OWUxMVx1OWVhMVx1OWVmNVx1OWYwOVx1OWY0N1x1OWY3OFx1OWY3Ylx1OWY3YVx1OWY3OVx1NTcxZVx1NzA2Nlx1N2M2Zlx1ODgzY1x1OGRiMlx1OGVhNlx1OTFjM1x1OTQ3NFx1OTQ3OFx1OTQ3Nlx1OTQ3NVx1OWE2''@;'; put 'put ''MFx1OWM3NFx1OWM3M1x1OWM3MVx1OWM3NVx1OWUxNFx1OWUxM1x1OWVmNlx1OWYwYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OWZhNFx1NzA2OFx1NzA2NVx1N2NmN1x1ODY2YVx1ODgzZVx1ODgzZFx1ODgzZlx1OGI5ZVx1OGM5Y1x1OGVhOVx1OGVjOVx1OTc0''@;'; put 'put ''Ylx1OTg3M1x1OTg3NFx1OThjY1x1OTk2MVx1OTlhYlx1OWE2NFx1OWE2Nlx1OWE2N1x1OWIyNFx1OWUxNVx1OWUxN1x1OWY0OFx1NjIwN1x1NmIxZVx1NzIyN1x1ODY0Y1x1OGVhOFx1OTQ4Mlx1OTQ4MFx1OTQ4MVx1OWE2OVx1OWE2OFx1OWIyZVx1OWUxOVx1NzIyOVx1ODY0Ylx1OGI5Zlx1''@;'; put 'put ''OTQ4M1x1OWM3OVx1OWViN1x1NzY3NVx1OWE2Ylx1OWM3YVx1OWUxZFx1NzA2OVx1NzA2YVx1OWVhNFx1OWY3ZVx1OWY0OVx1OWY5OFx1Nzg4MVx1OTJiOVx1ODhjZlx1NThiYlx1NjA1Mlx1N2NhN1x1NWFmYVx1MjU1NFx1MjU2Nlx1MjU1N1x1MjU2MFx1MjU2Y1x1MjU2M1x1MjU1YVx1MjU2''@;'; put 'put ''OVx1MjU1ZFx1MjU1Mlx1MjU2NFx1MjU1NVx1MjU1ZVx1MjU2YVx1MjU2MVx1MjU1OFx1MjU2N1x1MjU1Ylx1MjU1M1x1MjU2NVx1MjU1Nlx1MjU1Zlx1MjU2Ylx1MjU2Mlx1MjU1OVx1MjU2OFx1MjU1Y1x1MjU1MVx1MjU1MFx1MjU2ZFx1MjU2ZVx1MjU3MFx1MjU2Zlx1MjU5M1x1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLG09MDttIT14WzI0OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQ5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDldW21dXT02Mzc0NCttLFJbNjM3NDQrbV09eFsyNDldW21dKTtyZXR1cm57ZW5jOm9lLGRlYzpSfX0oKSxNZVsxMjUwXT1mdW5jdGlvbigpe2Zvcih2YXIg''@;'; put 'put ''Uj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1O''@;'; put 'put ''T1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNWFcdTAxNjRcdTAxN2RcdTAxNzlcdWZmZmRcdTIwMThcdTIw''@;'; put 'put ''MTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNWJcdTAxNjVcdTAxN2VcdTAxN2FceGEwXHUwMmM3XHUwMmQ4XHUwMTQxXHhhNFx1MDEwNFx4YTZceGE3XHhhOFx4YTlcdTAxNWVceGFiXHhhY1x4YWRceGFlXHUwMTdiXHhiMFx4YjFc''@;'; put 'put ''dTAyZGJcdTAxNDJceGI0XHhiNVx4YjZceGI3XHhiOFx1MDEwNVx1MDE1Zlx4YmJcdTAxM2RcdTAyZGRcdTAxM2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1''@;'; put 'put ''MDE0N1x4ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhlZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhc''@;'; put 'put ''eGYzXHhmNFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5IixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4''@;'; put 'put ''LGRlYzpvZX19KCksTWVbMTI1MV09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUm''@;'; put 'put ''JygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUwNDAyXHUwNDAzXHUyMDFhXHUwNDUzXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUyMGFjXHUyMDMwXHUwNDA5XHUyMDM5''@;'; put 'put ''XHUwNDBhXHUwNDBjXHUwNDBiXHUwNDBmXHUwNDUyXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHUwNDU5XHUyMDNhXHUwNDVhXHUwNDVjXHUwNDViXHUwNDVmXHhhMFx1MDQwZVx1MDQ1ZVx1MDQwOFx4YTRcdTA0OTBceGE2XHhhN1x1MDQw''@;'; put 'put ''MVx4YTlcdTA0MDRceGFiXHhhY1x4YWRceGFlXHUwNDA3XHhiMFx4YjFcdTA0MDZcdTA0NTZcdTA0OTFceGI1XHhiNlx4YjdcdTA0NTFcdTIxMTZcdTA0NTRceGJiXHUwNDU4XHUwNDA1XHUwNDU1XHUwNDU3XHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3''@;'; put 'put ''XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUw''@;'; put 'put ''NDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRl''@;'; put 'put ''XHUwNDRmIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbMTI1Ml09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAz''@;'; put 'put ''XHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e''@;'; put 'put ''X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHUwMTdkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUy''@;'; put 'put ''MDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHUwMTdlXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4''@;'; put 'put ''YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHhkMFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx4ZTBceGUxXHhl''@;'; put 'put ''Mlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZceGYwXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHhmZFx4ZmVceGZmIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0''@;'; put 'put ''KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbMTI1M109ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4''@;'; put 'put ''MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFh''@;'; put 'put ''XHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHhhMFx1MDM4NVx1MDM4Nlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdWZmZmRceGFiXHhhY1x4YWRceGFlXHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1MDM4NFx4YjVceGI2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhlXHUwMzhmXHUwMzkw''@;'; put 'put ''XHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUwM2FhXHUwM2FiXHUw''@;'; put 'put ''M2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3''@;'; put 'put ''XHUwM2M4XHUwM2M5XHUwM2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVb''@;'; put 'put ''MTI1NF09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1''@;'; put 'put ''Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHUwMTYxXHUyMDNhXHUwMTUzXHVmZmZkXHVmZmZkXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFl''@;'; put 'put ''XHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTFlXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhk''@;'; put 'put ''N1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMTMwXHUwMTVlXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMWZceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxMzFcdTAx''@;'; put 'put ''NWZceGZmIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbMTI1NV09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAz''@;'; put 'put ''XHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e''@;'; put 'put ''X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHUyMGFjXHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUy''@;'; put 'put ''MDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx4YTFceGEyXHhhM1x1MjBhYVx4YTVceGE2XHhhN1x4YThceGE5XHhkN1x4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4''@;'; put 'put ''XHhiOVx4ZjdceGJiXHhiY1x4YmRceGJlXHhiZlx1MDViMFx1MDViMVx1MDViMlx1MDViM1x1MDViNFx1MDViNVx1MDViNlx1MDViN1x1MDViOFx1MDViOVx1ZmZmZFx1MDViYlx1MDViY1x1MDViZFx1MDViZVx1MDViZlx1MDVjMFx1MDVjMVx1MDVjMlx1MDVjM1x1MDVmMFx1MDVmMVx1MDVm''@;'; put 'put ''Mlx1MDVmM1x1MDVmNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDVkNVx1MDVkNlx1MDVkN1x1MDVkOFx1MDVkOVx1MDVkYVx1MDVkYlx1MDVkY1x1MDVkZFx1MDVkZVx1MDVkZlx1MDVlMFx1MDVlMVx1''@;'; put 'put ''MDVlMlx1MDVlM1x1MDVlNFx1MDVlNVx1MDVlNlx1MDVlN1x1MDVlOFx1MDVlOVx1MDVlYVx1ZmZmZFx1ZmZmZFx1MjAwZVx1MjAwZlx1ZmZmZCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hh''@;'; put 'put ''ckF0KG0pO3JldHVybntlbmM6eCxkZWM6b2V9fSgpLE1lWzEyNTZdPWZ1bmN0aW9uKCl7Zm9yKHZhciBSPSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNc''@;'; put 'put ''eDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MjBhY1x1MDY3ZVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJj''@;'; put 'put ''Nlx1MjAzMFx1MDY3OVx1MjAzOVx1MDE1Mlx1MDY4Nlx1MDY5OFx1MDY4OFx1MDZhZlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDZhOVx1MjEyMlx1MDY5MVx1MjAzYVx1MDE1M1x1MjAwY1x1MjAwZFx1MDZiYVx4YTBcdTA2MGNceGEyXHhhM1x4YTRceGE1''@;'; put 'put ''XHhhNlx4YTdceGE4XHhhOVx1MDZiZVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx1MDYxYlx4YmJceGJjXHhiZFx4YmVcdTA2MWZcdTA2YzFcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2Mjhc''@;'; put 'put ''dTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZceGQ3XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHhlMFx1MDY0NFx4ZTJcdTA2NDVcdTA2NDZcdTA2''@;'; put 'put ''NDdcdTA2NDhceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDY0OVx1MDY0YVx4ZWVceGVmXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHhmNFx1MDY0Zlx1MDY1MFx4ZjdcdTA2NTFceGY5XHUwNjUyXHhmYlx4ZmNcdTIwMGVcdTIwMGZcdTA2ZDIiLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1''@;'; put 'put ''MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVsxMjU3XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZc''@;'; put 'put ''eDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2Zc''@;'; put 'put ''dTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRceGE4XHUwMmM3XHhiOFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1ZmZmZFx1MjAzYVx1''@;'; put 'put ''ZmZmZFx4YWZcdTAyZGJcdWZmZmRceGEwXHVmZmZkXHhhMlx4YTNceGE0XHVmZmZkXHhhNlx4YTdceGQ4XHhhOVx1MDE1Nlx4YWJceGFjXHhhZFx4YWVceGM2XHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGY4XHhiOVx1MDE1N1x4YmJceGJjXHhiZFx4YmVceGU2XHUwMTA0XHUw''@;'; put 'put ''MTJlXHUwMTAwXHUwMTA2XHhjNFx4YzVcdTAxMThcdTAxMTJcdTAxMGNceGM5XHUwMTc5XHUwMTE2XHUwMTIyXHUwMTM2XHUwMTJhXHUwMTNiXHUwMTYwXHUwMTQzXHUwMTQ1XHhkM1x1MDE0Y1x4ZDVceGQ2XHhkN1x1MDE3Mlx1MDE0MVx1MDE1YVx1MDE2YVx4ZGNcdTAxN2JcdTAxN2RceGRm''@;'; put 'put ''XHUwMTA1XHUwMTJmXHUwMTAxXHUwMTA3XHhlNFx4ZTVcdTAxMTlcdTAxMTNcdTAxMGRceGU5XHUwMTdhXHUwMTE3XHUwMTIzXHUwMTM3XHUwMTJiXHUwMTNjXHUwMTYxXHUwMTQ0XHUwMTQ2XHhmM1x1MDE0ZFx4ZjVceGY2XHhmN1x1MDE3M1x1MDE0Mlx1MDE1Ylx1MDE2Ylx4ZmNcdTAxN2Nc''@;'; put 'put ''dTAxN2VcdTAyZDkiLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVsxMjU4XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgw''@;'; put 'put ''Mlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla''@;'; put 'put ''W1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdTAxNTJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIw''@;'; put 'put ''MWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdTAxNTNcdWZmZmRcdWZmZmRcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4Yjdc''@;'; put 'put ''eGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1''@;'; put 'put ''MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAxMDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIixvZT1bXSx4PXt9LG09''@;'; put 'put ''MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbMWU0XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxu''@;'; put 'put ''XHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0''@;'; put 'put ''dXZ3eHl6e3x9flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdc''@;'; put 'put ''dTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIy''@;'; put 'put ''MDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdWZiMDFcdWZiMDJcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhj''@;'; put 'put ''Mlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNo''@;'; put 'put ''YXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVsxMDAwNl09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFc''@;'; put 'put ''eDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4Yjlc''@;'; put 'put ''eGIyXHhjOVx4YjNceGQ2XHhkY1x1MDM4NVx4ZTBceGUyXHhlNFx1MDM4NFx4YThceGU3XHhlOVx4ZThceGVhXHhlYlx4YTNcdTIxMjJceGVlXHhlZlx1MjAyMlx4YmRcdTIwMzBceGY0XHhmNlx4YTZceGFkXHhmOVx4ZmJceGZjXHUyMDIwXHUwMzkzXHUwMzk0XHUwMzk4XHUwMzliXHUwMzll''@;'; put 'put ''XHUwM2EwXHhkZlx4YWVceGE5XHUwM2EzXHUwM2FhXHhhN1x1MjI2MFx4YjBcdTAzODdcdTAzOTFceGIxXHUyMjY0XHUyMjY1XHhhNVx1MDM5Mlx1MDM5NVx1MDM5Nlx1MDM5N1x1MDM5OVx1MDM5YVx1MDM5Y1x1MDNhNlx1MDNhYlx1MDNhOFx1MDNhOVx1MDNhY1x1MDM5ZFx4YWNcdTAzOWZc''@;'; put 'put ''dTAzYTFcdTIyNDhcdTAzYTRceGFiXHhiYlx1MjAyNlx4YTBcdTAzYTVcdTAzYTdcdTAzODZcdTAzODhcdTAxNTNcdTIwMTNcdTIwMTVcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUwMzg5XHUwMzhhXHUwMzhjXHUwMzhlXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2NjXHUwMzhmXHUwM2Nk''@;'; put 'put ''XHUwM2IxXHUwM2IyXHUwM2M4XHUwM2I0XHUwM2I1XHUwM2M2XHUwM2IzXHUwM2I3XHUwM2I5XHUwM2JlXHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JmXHUwM2MwXHUwM2NlXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2I4XHUwM2M5XHUwM2MyXHUwM2M3XHUwM2M1XHUwM2I2XHUwM2NhXHUw''@;'; put 'put ''M2NiXHUwMzkwXHUwM2IwXHVmZmZkIixvZT1bXSx4PXt9LG09MDsyNTYhPW07KyttKTY1NTMzIT09Ui5jaGFyQ29kZUF0KG0pJiYoeFtSLmNoYXJBdChtKV09bSksb2VbbV09Ui5jaGFyQXQobSk7cmV0dXJue2VuYzp4LGRlYzpvZX19KCksTWVbMTAwMDddPWZ1bmN0aW9uKCl7Zm9yKHZhciBS''@;'; put 'put ''PSJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5P''@;'; put 'put ''UFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQy''@;'; put 'put ''Mlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHUwNDA2XHhhZVx4YTlcdTIxMjJcdTA0MDJcdTA0NTJcdTIyNjBcdTA0MDNcdTA0NTNcdTIy''@;'; put 'put ''MWVceGIxXHUyMjY0XHUyMjY1XHUwNDU2XHhiNVx1MjIwMlx1MDQwOFx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwOVx1MDQ1OVx1MDQwYVx1MDQ1YVx1MDQ1OFx1MDQwNVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBcdTA0MGJcdTA0NWJcdTA0MGNc''@;'; put 'put ''dTA0NWNcdTA0NTVcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyMDFlXHUwNDBlXHUwNDVlXHUwNDBmXHUwNDVmXHUyMTE2XHUwNDAxXHUwNDUxXHUwNDRmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5''@;'; put 'put ''XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHhhNCIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9''@;'; put 'put ''PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hhckF0KG0pO3JldHVybntlbmM6eCxkZWM6b2V9fSgpLE1lWzEwMDA4XT1mdW5jdGlvbigpe3ZhciBtLFI9W10sb2U9e30seD1bXTtmb3IoeFswXT0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJc''@;'; put 'put ''dFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3Bx''@;'; put 'put ''cnN0dXZ3eHl6e3x9flx4N2ZceDgwXHVmOGQ4XHVmOGQ5XHVmOGRhXHVmOGRiXHVmOGRjXHVmOGRkXHVmOGRlXHVmOGRmXHVmOGUwXHVmOGUxXHVmOGUyXHVmOGUzXHVmOGU0XHVmOGU1XHVmOGU2XHVmOGU3XHVmOGU4XHVmOGU5XHVmOGVhXHVmOGViXHVmOGVjXHVmOGVkXHVmOGVlXHVmOGVm''@;'; put 'put ''XHVmOGYwXHVmOGYxXHVmOGYyXHVmOGYzXHVmOGY0XHVmOGY1XHVmOGY2XHVmOGY3XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmOGY4XHVmOGY5XHVmOGZhXHVmOGZiXHVmOGZjXHVmOGZkXHVmOGZlXHVmOGZmIi5zcGxpdCgiIiksbT0wO20hPXhbMF0ubGVuZ3RoOysrbSk2NTUzMyE9''@;'; put 'put ''PXhbMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMF1bbV1dPTArbSxSWzArbV09eFswXVttXSk7Zm9yKHhbMTYxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUzMDAwXHUzMDAxXHUzMDAyXHUzMGZiXHUwMmM5XHUwMmM3XHhhOFx1MzAwM1x1MzAwNVx1MjAxNVx1ZmY1ZVx1ZmZmZFx1MjAyNlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxNFx1MzAxNVx1MzAwOFx1''@;'; put 'put ''MzAwOVx1MzAwYVx1MzAwYlx1MzAwY1x1MzAwZFx1MzAwZVx1MzAwZlx1MzAxNlx1MzAxN1x1MzAxMFx1MzAxMVx4YjFceGQ3XHhmN1x1MjIzNlx1MjIyN1x1MjIyOFx1MjIxMVx1MjIwZlx1MjIyYVx1MjIyOVx1MjIwOFx1MjIzN1x1MjIxYVx1MjJhNVx1MjIyNVx1MjIyMFx1MjMxMlx1MjI5''@;'; put 'put ''OVx1MjIyYlx1MjIyZVx1MjI2MVx1MjI0Y1x1MjI0OFx1MjIzZFx1MjIxZFx1MjI2MFx1MjI2ZVx1MjI2Zlx1MjI2NFx1MjI2NVx1MjIxZVx1MjIzNVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmMDRceGE0XHVmZmUwXHVmZmUxXHUyMDMwXHhhN1x1MjExNlx1''@;'; put 'put ''MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjAzYlx1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MzAxM1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTYxXVttXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYob2VbeFsxNjFdW21dXT00MTIxNittLFJbNDEyMTYrbV09eFsxNjFdW21dKTtmb3IoeFsxNjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI0ODhcdTI0ODlcdTI0OGFcdTI0OGJc''@;'; put 'put ''dTI0OGNcdTI0OGRcdTI0OGVcdTI0OGZcdTI0OTBcdTI0OTFcdTI0OTJcdTI0OTNcdTI0OTRcdTI0OTVcdTI0OTZcdTI0OTdcdTI0OThcdTI0OTlcdTI0OWFcdTI0OWJcdTI0NzRcdTI0NzVcdTI0NzZcdTI0NzdcdTI0NzhcdTI0NzlcdTI0N2FcdTI0N2JcdTI0N2NcdTI0N2RcdTI0N2VcdTI0''@;'; put 'put ''N2ZcdTI0ODBcdTI0ODFcdTI0ODJcdTI0ODNcdTI0ODRcdTI0ODVcdTI0ODZcdTI0ODdcdTI0NjBcdTI0NjFcdTI0NjJcdTI0NjNcdTI0NjRcdTI0NjVcdTI0NjZcdTI0NjdcdTI0NjhcdTI0NjlcdWZmZmRcdWZmZmRcdTMyMjBcdTMyMjFcdTMyMjJcdTMyMjNcdTMyMjRcdTMyMjVcdTMyMjZc''@;'; put 'put ''dTMyMjdcdTMyMjhcdTMyMjlcdWZmZmRcdWZmZmRcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjRcdTIxNjVcdTIxNjZcdTIxNjdcdTIxNjhcdTIxNjlcdTIxNmFcdTIxNmJcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjJdLmxlbmd0aDsrK20pNjU1MzMhPT14''@;'; put 'put ''WzE2Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTYyXVttXV09NDE0NzIrbSxSWzQxNDcyK21dPXhbMTYyXVttXSk7Zm9yKHhbMTYzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZjAxXHVmZjAyXHVmZjAzXHVmZmU1XHVmZjA1XHVmZjA2XHVmZjA3XHVmZjA4XHVmZjA5XHVmZjBhXHVmZjBiXHVmZjBjXHVmZjBkXHVmZjBlXHVmZjBmXHVmZjEwXHVmZjExXHVmZjEy''@;'; put 'put ''XHVmZjEzXHVmZjE0XHVmZjE1XHVmZjE2XHVmZjE3XHVmZjE4XHVmZjE5XHVmZjFhXHVmZjFiXHVmZjFjXHVmZjFkXHVmZjFlXHVmZjFmXHVmZjIwXHVmZjIxXHVmZjIyXHVmZjIzXHVmZjI0XHVmZjI1XHVmZjI2XHVmZjI3XHVmZjI4XHVmZjI5XHVmZjJhXHVmZjJiXHVmZjJjXHVmZjJkXHVm''@;'; put 'put ''ZjJlXHVmZjJmXHVmZjMwXHVmZjMxXHVmZjMyXHVmZjMzXHVmZjM0XHVmZjM1XHVmZjM2XHVmZjM3XHVmZjM4XHVmZjM5XHVmZjNhXHVmZjNiXHVmZjNjXHVmZjNkXHVmZjNlXHVmZjNmXHVmZjQwXHVmZjQxXHVmZjQyXHVmZjQzXHVmZjQ0XHVmZjQ1XHVmZjQ2XHVmZjQ3XHVmZjQ4XHVmZjQ5''@;'; put 'put ''XHVmZjRhXHVmZjRiXHVmZjRjXHVmZjRkXHVmZjRlXHVmZjRmXHVmZjUwXHVmZjUxXHVmZjUyXHVmZjUzXHVmZjU0XHVmZjU1XHVmZjU2XHVmZjU3XHVmZjU4XHVmZjU5XHVmZjVhXHVmZjViXHVmZjVjXHVmZjVkXHVmZmUzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTYzXS5sZW5ndGg7''@;'; put 'put ''KyttKTY1NTMzIT09eFsxNjNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2M11bbV1dPTQxNzI4K20sUls0MTcyOCttXT14WzE2M11bbV0pO2Zvcih4WzE2NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NVx1MzA0Nlx1MzA0N1x1MzA0OFx1MzA0OVx1MzA0YVx1MzA0Ylx1MzA0Y1x1MzA0ZFx1MzA0ZVx1MzA0Zlx1MzA1''@;'; put 'put ''MFx1MzA1MVx1MzA1Mlx1MzA1M1x1MzA1NFx1MzA1NVx1MzA1Nlx1MzA1N1x1MzA1OFx1MzA1OVx1MzA1YVx1MzA1Ylx1MzA1Y1x1MzA1ZFx1MzA1ZVx1MzA1Zlx1MzA2MFx1MzA2MVx1MzA2Mlx1MzA2M1x1MzA2NFx1MzA2NVx1MzA2Nlx1MzA2N1x1MzA2OFx1MzA2OVx1MzA2YVx1MzA2Ylx1''@;'; put 'put ''MzA2Y1x1MzA2ZFx1MzA2ZVx1MzA2Zlx1MzA3MFx1MzA3MVx1MzA3Mlx1MzA3M1x1MzA3NFx1MzA3NVx1MzA3Nlx1MzA3N1x1MzA3OFx1MzA3OVx1MzA3YVx1MzA3Ylx1MzA3Y1x1MzA3ZFx1MzA3ZVx1MzA3Zlx1MzA4MFx1MzA4MVx1MzA4Mlx1MzA4M1x1MzA4NFx1MzA4NVx1MzA4Nlx1MzA4''@;'; put 'put ''N1x1MzA4OFx1MzA4OVx1MzA4YVx1MzA4Ylx1MzA4Y1x1MzA4ZFx1MzA4ZVx1MzA4Zlx1MzA5MFx1MzA5MVx1MzA5Mlx1MzA5M1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14''@;'; put 'put ''WzE2NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjRdW21dXT00MTk4NCttLFJbNDE5ODQrbV09eFsxNjRdW21dKTtmb3IoeFsxNjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTRcdTMwYTVcdTMwYTZcdTMwYTdcdTMwYThcdTMwYTlcdTMwYWFcdTMwYWJcdTMwYWNcdTMwYWRcdTMw''@;'; put 'put ''YWVcdTMwYWZcdTMwYjBcdTMwYjFcdTMwYjJcdTMwYjNcdTMwYjRcdTMwYjVcdTMwYjZcdTMwYjdcdTMwYjhcdTMwYjlcdTMwYmFcdTMwYmJcdTMwYmNcdTMwYmRcdTMwYmVcdTMwYmZcdTMwYzBcdTMwYzFcdTMwYzJcdTMwYzNcdTMwYzRcdTMwYzVcdTMwYzZcdTMwYzdcdTMwYzhcdTMwYzlc''@;'; put 'put ''dTMwY2FcdTMwY2JcdTMwY2NcdTMwY2RcdTMwY2VcdTMwY2ZcdTMwZDBcdTMwZDFcdTMwZDJcdTMwZDNcdTMwZDRcdTMwZDVcdTMwZDZcdTMwZDdcdTMwZDhcdTMwZDlcdTMwZGFcdTMwZGJcdTMwZGNcdTMwZGRcdTMwZGVcdTMwZGZcdTMwZTBcdTMwZTFcdTMwZTJcdTMwZTNcdTMwZTRcdTMw''@;'; put 'put ''ZTVcdTMwZTZcdTMwZTdcdTMwZThcdTMwZTlcdTMwZWFcdTMwZWJcdTMwZWNcdTMwZWRcdTMwZWVcdTMwZWZcdTMwZjBcdTMwZjFcdTMwZjJcdTMwZjNcdTMwZjRcdTMwZjVcdTMwZjZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQiLnNwbGl0''@;'; put 'put ''KCIiKSxtPTA7bSE9eFsxNjVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY1XVttXV09NDIyNDArbSxSWzQyMjQwK21dPXhbMTY1XVttXSk7Zm9yKHhbMTY2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUw''@;'; put 'put ''MzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3''@;'; put 'put ''XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MzXHUwM2M0XHUwM2M1XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2Nl1bbV1dPTQyNDk2K20sUls0MjQ5NittXT14WzE2Nl1bbV0pO2Zvcih4WzE2N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQwMVx1MDQxNlx1MDQxN1x1''@;'; put 'put ''MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQ1MVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1''@;'; put 'put ''MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE2N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTY3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNjddW21dXT00Mjc1MittLFJbNDI3NTIrbV09eFsxNjddW21dKTtmb3IoeFsxNjhdPSJcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUw''@;'; put 'put ''MTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTMxMDVcdTMxMDZcdTMx''@;'; put 'put ''MDdcdTMxMDhcdTMxMDlcdTMxMGFcdTMxMGJcdTMxMGNcdTMxMGRcdTMxMGVcdTMxMGZcdTMxMTBcdTMxMTFcdTMxMTJcdTMxMTNcdTMxMTRcdTMxMTVcdTMxMTZcdTMxMTdcdTMxMThcdTMxMTlcdTMxMWFcdTMxMWJcdTMxMWNcdTMxMWRcdTMxMWVcdTMxMWZcdTMxMjBcdTMxMjFcdTMxMjJc''@;'; put 'put ''dTMxMjNcdTMxMjRcdTMxMjVcdTMxMjZcdTMxMjdcdTMxMjhcdTMxMjlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNjhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE2OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTY4XVttXV09NDMwMDgrbSxSWzQzMDA4K21dPXhbMTY4XVttXSk7Zm9yKHhbMTY5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyNTAwXHUyNTAxXHUyNTAyXHUyNTAzXHUyNTA0XHUyNTA1''@;'; put 'put ''XHUyNTA2XHUyNTA3XHUyNTA4XHUyNTA5XHUyNTBhXHUyNTBiXHUyNTBjXHUyNTBkXHUyNTBlXHUyNTBmXHUyNTEwXHUyNTExXHUyNTEyXHUyNTEzXHUyNTE0XHUyNTE1XHUyNTE2XHUyNTE3XHUyNTE4XHUyNTE5XHUyNTFhXHUyNTFiXHUyNTFjXHUyNTFkXHUyNTFlXHUyNTFmXHUyNTIwXHUy''@;'; put 'put ''NTIxXHUyNTIyXHUyNTIzXHUyNTI0XHUyNTI1XHUyNTI2XHUyNTI3XHUyNTI4XHUyNTI5XHUyNTJhXHUyNTJiXHUyNTJjXHUyNTJkXHUyNTJlXHUyNTJmXHUyNTMwXHUyNTMxXHUyNTMyXHUyNTMzXHUyNTM0XHUyNTM1XHUyNTM2XHUyNTM3XHUyNTM4XHUyNTM5XHUyNTNhXHUyNTNiXHUyNTNj''@;'; put 'put ''XHUyNTNkXHUyNTNlXHUyNTNmXHUyNTQwXHUyNTQxXHUyNTQyXHUyNTQzXHUyNTQ0XHUyNTQ1XHUyNTQ2XHUyNTQ3XHUyNTQ4XHUyNTQ5XHUyNTRhXHUyNTRiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTY5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNjldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE2OV1bbV1dPTQzMjY0K20sUls0MzI2NCttXT14WzE2OV1bbV0pO2Zvcih4WzE3Nl09Ilx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTU0YVx1OTYzZlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRj''@;'; put 'put ''MFx1NzY5MVx1NzY0Y1x1ODUzY1x1NzdlZVx1ODI3ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBhZVx1NjYwMlx1NzZjZVx1NTFmOVx1NjU1Nlx1NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1''@;'; put 'put ''NjFjYVx1NmZiM1x1ODJhZFx1NjM0Y1x1NjI1Mlx1NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1N2Y2Mlx1NzIzOFx1NzY3ZFx1NjdjZlx1NzY3ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2Ex''@;'; put 'put ''N1x1NjU5MVx1NzNlZFx1NjQyY1x1NjI3M1x1ODIyY1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4Nlx1Njk5Y1x1ODE4MFx1N2VkMVx1NjhkMlx1NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1''@;'; put 'put ''ODJkZVx1ODBkZVx1NTMwNVx1ODkxMlx1NTI2NVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3Nl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzZdW21dXT00NTA1NittLFJbNDUwNTYrbV09eFsxNzZdW21dKTtmb3IoeFsxNzddPSJcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1ODRcdTk2ZjlcdTRmZGRcdTU4MjFcdTk5''@;'; put 'put ''NzFcdTViOWRcdTYyYjFcdTYyYTVcdTY2YjRcdThjNzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3MmNcdTdiMjhcdTVkMjlc''@;'; put 'put ''dTdlZjdcdTc1MmRcdTZjZjVcdThlNjZcdThmZjhcdTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZcdTU4YzFcdTgxYzJcdTkw''@;'; put 'put ''N2ZcdTk2NWJcdTk3YWRcdThmYjlcdTdmMTZcdThkMmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZlZThcdTViYmVcdTY0NDhc''@;'; put 'put ''dTUxNzVcdTUxYjBcdTY3YzRcdTRlMTlcdTc5YzlcdTk5N2NcdTcwYjNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxNzddLmxlbmd0aDsrK20pNjU1MzMhPT14WzE3N11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTc3XVttXV09NDUzMTIrbSxSWzQ1MzEyK21dPXhbMTc3XVttXSk7Zm9y''@;'; put 'put ''KHhbMTc4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NWM1XHU1ZTc2XHU3''@;'; put 'put ''M2JiXHU4M2UwXHU2NGFkXHU2MmU4XHU5NGI1XHU2Y2UyXHU1MzVhXHU1MmMzXHU2NDBmXHU5NGMyXHU3Yjk0XHU0ZjJmXHU1ZTFiXHU4MjM2XHU4MTE2XHU4MThhXHU2ZTI0XHU2Y2NhXHU5YTczXHU2MzU1XHU1MzVjXHU1NGZhXHU4ODY1XHU1N2UwXHU0ZTBkXHU1ZTAzXHU2YjY1XHU3YzNm''@;'; put 'put ''XHU5MGU4XHU2MDE2XHU2NGU2XHU3MzFjXHU4OGMxXHU2NzUwXHU2MjRkXHU4ZDIyXHU3NzZjXHU4ZTI5XHU5MWM3XHU1ZjY5XHU4M2RjXHU4NTIxXHU5OTEwXHU1M2MyXHU4Njk1XHU2YjhiXHU2MGVkXHU2MGU4XHU3MDdmXHU4MmNkXHU4MjMxXHU0ZWQzXHU2Y2E3XHU4NWNmXHU2NGNkXHU3''@;'; put 'put ''Y2Q5XHU2OWZkXHU2NmY5XHU4MzQ5XHU1Mzk1XHU3YjU2XHU0ZmE3XHU1MThjXHU2ZDRiXHU1YzQyXHU4ZTZkXHU2M2QyXHU1M2M5XHU4MzJjXHU4MzM2XHU2N2U1XHU3OGI0XHU2NDNkXHU1YmRmXHU1Yzk0XHU1ZGVlXHU4YmU3XHU2MmM2XHU2N2Y0XHU4YzdhXHU2NDAwXHU2M2JhXHU4NzQ5''@;'; put 'put ''XHU5OThiXHU4YzE3XHU3ZjIwXHU5NGYyXHU0ZWE3XHU5NjEwXHU5OGE0XHU2NjBjXHU3MzE2XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTc4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxNzhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE3OF1bbV1dPTQ1NTY4K20sUls0NTU2OCttXT14''@;'; put 'put ''WzE3OF1bbV0pO2Zvcih4WzE3OV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''NTczYVx1NWMxZFx1NWUzOFx1OTU3Zlx1NTA3Zlx1ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQzNVx1NzA5Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFl''@;'; put 'put ''M1x1OGZiMFx1NWMxOFx1NjY2OFx1NWZmMVx1NmM4OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1OGJkYVx1NjI3Zlx1OTAxZVx1OWE4Ylx1NzllNFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1''@;'; put 'put ''NmM2MFx1OGZkZlx1NWYxYlx1OWE3MFx1ODAzYlx1OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2Y1x1NzU3NFx1OGUwY1x1N2EyMFx1NjEwMVx1N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUx''@;'; put 'put ''MVx1ODFlZFx1NTIxZFx1NTFmYVx1NmE3MVx1NTNhOFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE3OV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTc5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxNzldW21dXT00NTgyNCtt''@;'; put 'put ''LFJbNDU4MjQrbV09eFsxNzldW21dKTtmb3IoeFsxODBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdTc4NDBcdTUwYThcdTc3ZDdcdTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJcdTVlOGFcdTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2''@;'; put 'put ''MjVcdTY5M2ZcdTkxODdcdTU1MDdcdTZkZjNcdTdlYWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThkNTBcdTZiMjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFc''@;'; put 'put ''dTdjOTdcdTkxOGJcdTdjMDdcdTRmYzNcdThlN2ZcdTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2JcdTY0YWVcdTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2''@;'; put 'put ''MjlcdTYyNTNcdTU5MjdcdTU0NDZcdTZiNzlcdTUwYTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmVcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTgw''@;'; put 'put ''XVttXV09NDYwODArbSxSWzQ2MDgwK21dPXhbMTgwXVttXSk7Zm9yKHhbMTgxXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDIwXHU4MDNkXHU2MmM1XHU0ZTM5XHU1MzU1XHU5MGY4XHU2M2I4XHU4MGM2XHU2NWU2XHU2YzJlXHU0ZjQ2XHU2MGVlXHU2ZGUxXHU4YmRlXHU1ZjM5XHU4NmNiXHU1ZjUzXHU2MzIxXHU1MTVhXHU4MzYxXHU2ODYzXHU1MjAwXHU2MzYzXHU4''@;'; put 'put ''ZTQ4XHU1MDEyXHU1YzliXHU3OTc3XHU1YmZjXHU1MjMwXHU3YTNiXHU2MGJjXHU5MDUzXHU3NmQ3XHU1ZmI3XHU1Zjk3XHU3Njg0XHU4ZTZjXHU3MDZmXHU3NjdiXHU3YjQ5XHU3N2FhXHU1MWYzXHU5MDkzXHU1ODI0XHU0ZjRlXHU2ZWY0XHU4ZmVhXHU2NTRjXHU3YjFiXHU3MmM0XHU2ZGE0''@;'; put 'put ''XHU3ZmRmXHU1YWUxXHU2MmI1XHU1ZTk1XHU1NzMwXHU4NDgyXHU3YjJjXHU1ZTFkXHU1ZjFmXHU5MDEyXHU3ZjE0XHU5OGEwXHU2MzgyXHU2ZWM3XHU3ODk4XHU3MGI5XHU1MTc4XHU5NzViXHU1N2FiXHU3NTM1XHU0ZjQzXHU3NTM4XHU1ZTk3XHU2MGU2XHU1OTYwXHU2ZGMwXHU2YmJmXHU3''@;'; put 'put ''ODg5XHU1M2ZjXHU5NmQ1XHU1MWNiXHU1MjAxXHU2Mzg5XHU1NDBhXHU5NDkzXHU4YzAzXHU4ZGNjXHU3MjM5XHU3ODlmXHU4Nzc2XHU4ZmVkXHU4YzBkXHU1M2UwXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTgxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODFdW21dLmNoYXJDb2RlQXQo''@;'; put 'put ''MCkmJihvZVt4WzE4MV1bbV1dPTQ2MzM2K20sUls0NjMzNittXT14WzE4MV1bbV0pO2Zvcih4WzE4Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGUwMVx1NzZlZlx1NTNlZVx1OTQ4OVx1OTg3Nlx1OWYwZVx1OTUyZFx1NWI5YVx1OGJhMlx1NGUyMlx1NGUxY1x1NTFhY1x1ODQ2M1x1NjFjMlx1NTJhOFx1NjgwYlx1NGY5N1x1NjA2Ylx1NTFiYlx1NmQxZVx1NTE1Y1x1''@;'; put 'put ''NjI5Nlx1NjU5N1x1OTY2MVx1OGM0Nlx1OTAxN1x1NzVkOFx1OTBmZFx1Nzc2M1x1NmJkMlx1NzI4YVx1NzJlY1x1OGJmYlx1NTgzNVx1Nzc3OVx1OGQ0Y1x1Njc1Y1x1OTU0MFx1ODA5YVx1NWVhNlx1NmUyMVx1NTk5Mlx1N2FlZlx1NzdlZFx1OTUzYlx1NmJiNVx1NjVhZFx1N2YwZVx1NTgw''@;'; put 'put ''Nlx1NTE1MVx1OTYxZlx1NWJmOVx1NThhOVx1NTQyOFx1OGU3Mlx1NjU2Nlx1OTg3Zlx1NTZlNFx1OTQ5ZFx1NzZmZVx1OTA0MVx1NjM4N1x1NTRjNlx1NTkxYVx1NTkzYVx1NTc5Ylx1OGViMlx1NjczNVx1OGRmYVx1ODIzNVx1NTI0MVx1NjBmMFx1NTgxNVx1ODZmZVx1NWNlOFx1OWU0NVx1''@;'; put 'put ''NGZjNFx1OTg5ZFx1OGJiOVx1NWEyNVx1NjA3Nlx1NTM4NFx1NjI3Y1x1OTA0Zlx1OTEwMlx1OTk3Zlx1NjA2OVx1ODAwY1x1NTEzZlx1ODAzM1x1NWMxNFx1OTk3NVx1NmQzMVx1NGU4Y1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTgyXVtt''@;'; put 'put ''XS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODJdW21dXT00NjU5MittLFJbNDY1OTIrbV09eFsxODJdW21dKTtmb3IoeFsxODNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThkMzBcdTUzZDFcdTdmNWFcdTdiNGZcdTRmMTBcdTRlNGZcdTk2MDBcdTZjZDVcdTczZDBcdTg1ZTlcdTVlMDZcdTc1NmFcdTdmZmJcdTZhMGFcdTc3ZmVcdTk0OTJcdTdlNDFcdTUxZTFcdTcwZTZc''@;'; put 'put ''dTUzY2RcdThmZDRcdTgzMDNcdThkMjlcdTcyYWZcdTk5NmRcdTZjZGJcdTU3NGFcdTgyYjNcdTY1YjlcdTgwYWFcdTYyM2ZcdTk2MzJcdTU5YThcdTRlZmZcdThiYmZcdTdlYmFcdTY1M2VcdTgzZjJcdTk3NWVcdTU1NjFcdTk4ZGVcdTgwYTVcdTUzMmFcdThiZmRcdTU0MjBcdTgwYmFcdTVl''@;'; put 'put ''OWZcdTZjYjhcdThkMzlcdTgyYWNcdTkxNWFcdTU0MjlcdTZjMWJcdTUyMDZcdTdlYjdcdTU3NWZcdTcxMWFcdTZjN2VcdTdjODlcdTU5NGJcdTRlZmRcdTVmZmZcdTYxMjRcdTdjYWFcdTRlMzBcdTVjMDFcdTY3YWJcdTg3MDJcdTVjZjBcdTk1MGJcdTk4Y2VcdTc1YWZcdTcwZmRcdTkwMjJc''@;'; put 'put ''dTUxYWZcdTdmMWRcdThiYmRcdTU5NDlcdTUxZTRcdTRmNWJcdTU0MjZcdTU5MmJcdTY1NzdcdTgwYTRcdTViNzVcdTYyNzZcdTYyYzJcdThmOTBcdTVlNDVcdTZjMWZcdTdiMjZcdTRmMGZcdTRmZDhcdTY3MGRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODNdLmxlbmd0aDsrK20pNjU1''@;'; put 'put ''MzMhPT14WzE4M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTgzXVttXV09NDY4NDgrbSxSWzQ2ODQ4K21dPXhbMTgzXVttXSk7Zm9yKHhbMTg0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZDZlXHU2ZGFhXHU3OThmXHU4OGIxXHU1ZjE3XHU3NTJiXHU2MjlhXHU4Zjg1XHU0ZmVmXHU5MWRjXHU2NWE3XHU4MTJmXHU4MTUxXHU1ZTljXHU4MTUwXHU4ZDc0XHU1MjZm''@;'; put 'put ''XHU4OTg2XHU4ZDRiXHU1OTBkXHU1MDg1XHU0ZWQ4XHU5NjFjXHU3MjM2XHU4MTc5XHU4ZDFmXHU1YmNjXHU4YmEzXHU5NjQ0XHU1OTg3XHU3ZjFhXHU1NDkwXHU1Njc2XHU1NjBlXHU4YmU1XHU2NTM5XHU2OTgyXHU5NDk5XHU3NmQ2XHU2ZTg5XHU1ZTcyXHU3NTE4XHU2NzQ2XHU2N2QxXHU3''@;'; put 'put ''YWZmXHU4MDlkXHU4ZDc2XHU2MTFmXHU3OWM2XHU2NTYyXHU4ZDYzXHU1MTg4XHU1MjFhXHU5NGEyXHU3ZjM4XHU4MDliXHU3ZWIyXHU1Yzk3XHU2ZTJmXHU2NzYwXHU3YmQ5XHU3NjhiXHU5YWQ4XHU4MThmXHU3Zjk0XHU3Y2Q1XHU2NDFlXHU5NTUwXHU3YTNmXHU1NDRhXHU1NGU1XHU2YjRj''@;'; put 'put ''XHU2NDAxXHU2MjA4XHU5ZTNkXHU4MGYzXHU3NTk5XHU1MjcyXHU5NzY5XHU4NDViXHU2ODNjXHU4NmU0XHU5NjAxXHU5Njk0XHU5NGVjXHU0ZTJhXHU1NDA0XHU3ZWQ5XHU2ODM5XHU4ZGRmXHU4MDE1XHU2NmY0XHU1ZTlhXHU3ZmI5XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg0XS5s''@;'; put 'put ''ZW5ndGg7KyttKTY1NTMzIT09eFsxODRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4NF1bbV1dPTQ3MTA0K20sUls0NzEwNCttXT14WzE4NF1bbV0pO2Zvcih4WzE4NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTdjMlx1ODAzZlx1Njg5N1x1NWRlNVx1NjUzYlx1NTI5Zlx1NjA2ZFx1OWY5YVx1NGY5Ylx1OGVhY1x1NTE2Y1x1NWJhYlx1NWYxM1x1NWRlOVx1NmM1''@;'; put 'put ''ZVx1NjJmMVx1OGQyMVx1NTE3MVx1OTRhOVx1NTJmZVx1NmM5Zlx1ODJkZlx1NzJkN1x1NTdhMlx1Njc4NFx1OGQyZFx1NTkxZlx1OGY5Y1x1ODNjN1x1NTQ5NVx1N2I4ZFx1NGYzMFx1NmNiZFx1NWI2NFx1NTlkMVx1OWYxM1x1NTNlNFx1ODZjYVx1OWFhOFx1OGMzN1x1ODBhMVx1NjU0NVx1''@;'; put 'put ''OTg3ZVx1NTZmYVx1OTZjN1x1NTIyZVx1NzRkY1x1NTI1MFx1NWJlMVx1NjMwMlx1ODkwMlx1NGU1Nlx1NjJkMFx1NjAyYVx1NjhmYVx1NTE3M1x1NWI5OFx1NTFhMFx1ODljMlx1N2JhMVx1OTk4Nlx1N2Y1MFx1NjBlZlx1NzA0Y1x1OGQyZlx1NTE0OVx1NWU3Zlx1OTAxYlx1NzQ3MFx1ODlj''@;'; put 'put ''NFx1NTcyZFx1Nzg0NVx1NWY1Mlx1OWY5Zlx1OTVmYVx1OGY2OFx1OWIzY1x1OGJlMVx1NzY3OFx1Njg0Mlx1NjdkY1x1OGRlYVx1OGQzNVx1NTIzZFx1OGY4YVx1NmVkYVx1NjhjZFx1OTUwNVx1OTBlZFx1NTZmZFx1Njc5Y1x1ODhmOVx1OGZjN1x1NTRjOFx1ZmZmZCIuc3BsaXQoIiIpLG09''@;'; put 'put ''MDttIT14WzE4NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODVdW21dXT00NzM2MCttLFJbNDczNjArbV09eFsxODVdW21dKTtmb3IoeFsxODZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZk''@;'; put 'put ''YjVcdTViZDJcdTUxZmRcdTU1OGFcdTdmNTVcdTdmZjBcdTY0YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZjNTdcdTZjNDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRc''@;'; put 'put ''dTgzNzdcdTgzY2ZcdTY4MzhcdTc5YmVcdTU0OGNcdTRmNTVcdTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhcdThkNmJcdTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThm''@;'; put 'put ''NzBcdTU0YzRcdTcwZDhcdTg2NzlcdTllM2ZcdTZkMmFcdTViOGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0M2NcdTUzOWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTZcdWZmZmQi''@;'; put 'put ''LnNwbGl0KCIiKSxtPTA7bSE9eFsxODZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg2XVttXV09NDc2MTYrbSxSWzQ3NjE2K21dPXhbMTg2XVttXSk7Zm9yKHhbMTg3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZjI3XHU4NjRlXHU1NTJjXHU2MmE0XHU0ZTkyXHU2Y2FhXHU2MjM3XHU4MmIxXHU1NGQ3XHU1MzRlXHU3''@;'; put 'put ''MzNlXHU2ZWQxXHU3NTNiXHU1MjEyXHU1MzE2XHU4YmRkXHU2OWQwXHU1ZjhhXHU2MDAwXHU2ZGVlXHU1NzRmXHU2YjIyXHU3M2FmXHU2ODUzXHU4ZmQ4XHU3ZjEzXHU2MzYyXHU2MGEzXHU1NTI0XHU3NWVhXHU4YzYyXHU3MTE1XHU2ZGEzXHU1YmE2XHU1ZTdiXHU4MzUyXHU2MTRjXHU5ZWM0''@;'; put 'put ''XHU3OGZhXHU4NzU3XHU3YzI3XHU3Njg3XHU1MWYwXHU2MGY2XHU3MTRjXHU2NjQzXHU1ZTRjXHU2MDRkXHU4YzBlXHU3MDcwXHU2MzI1XHU4Zjg5XHU1ZmJkXHU2MDYyXHU4NmQ0XHU1NmRlXHU2YmMxXHU2MDk0XHU2MTY3XHU1MzQ5XHU2MGUwXHU2NjY2XHU4ZDNmXHU3OWZkXHU0ZjFhXHU3''@;'; put 'put ''MGU5XHU2YzQ3XHU4YmIzXHU4YmYyXHU3ZWQ4XHU4MzY0XHU2NjBmXHU1YTVhXHU5YjQyXHU2ZDUxXHU2ZGY3XHU4YzQxXHU2ZDNiXHU0ZjE5XHU3MDZiXHU4M2I3XHU2MjE2XHU2MGQxXHU5NzBkXHU4ZDI3XHU3OTc4XHU1MWZiXHU1NzNlXHU1N2ZhXHU2NzNhXHU3NTc4XHU3YTNkXHU3OWVm''@;'; put 'put ''XHU3Yjk1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTg3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxODddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE4N11bbV1dPTQ3ODcyK20sUls0Nzg3MittXT14WzE4N11bbV0pO2Zvcih4WzE4OF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODA4Y1x1OTk2NVx1OGZmOVx1NmZjMFx1OGJhNVx1OWUyMVx1NTllY1x1N2VlOVx1''@;'; put 'put ''N2YwOVx1NTQwOVx1Njc4MVx1NjhkOFx1OGY5MVx1N2M0ZFx1OTZjNlx1NTNjYVx1NjAyNVx1NzViZVx1NmM3Mlx1NTM3M1x1NWFjOVx1N2VhN1x1NjMyNFx1NTFlMFx1ODEwYVx1NWRmMVx1ODRkZlx1NjI4MFx1NTE4MFx1NWI2M1x1NGYwZVx1Nzk2ZFx1NTI0Mlx1NjBiOFx1NmQ0ZVx1NWJj''@;'; put 'put ''NFx1NWJjMlx1OGJhMVx1OGJiMFx1NjVlMlx1NWZjY1x1OTY0NVx1NTk5M1x1N2VlN1x1N2VhYVx1NTYwOVx1NjdiN1x1NTkzOVx1NGY3M1x1NWJiNlx1NTJhMFx1ODM1YVx1OTg4YVx1OGQzZVx1NzUzMlx1OTRiZVx1NTA0N1x1N2EzY1x1NGVmN1x1NjdiNlx1OWE3ZVx1NWFjMVx1NmI3Y1x1''@;'; put 'put ''NzZkMVx1NTc1YVx1NWMxNlx1N2IzYVx1OTVmNFx1NzE0ZVx1NTE3Y1x1ODBhOVx1ODI3MFx1NTk3OFx1N2YwNFx1ODMyN1x1NjhjMFx1NjdlY1x1NzhiMVx1Nzg3N1x1NjJlM1x1NjM2MVx1N2I4MFx1NGZlZFx1NTI2YVx1NTFjZlx1ODM1MFx1NjlkYlx1OTI3NFx1OGRmNVx1OGQzMVx1ODlj''@;'; put 'put ''MVx1OTUyZVx1N2JhZFx1NGVmNlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE4OF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTg4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxODhdW21dXT00ODEyOCttLFJbNDgxMjgrbV09eFsxODhdW21dKTtmb3IoeFsxODldPSJcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVc''@;'; put 'put ''dTZkYTdcdTVlZmFcdTUwZjVcdTU5ZGNcdTVjMDZcdTZkNDZcdTZjNWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0''@;'; put 'put ''ZjBcdTc3ZWJcdTRmYTVcdTgxMWFcdTcyZTFcdTg5ZDJcdTk5N2FcdTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdc''@;'; put 'put ''dTc3NmJcdTdhZWRcdTZkMDFcdTdlZDNcdTg5ZTNcdTU5ZDBcdTYyMTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3''@;'; put 'put ''NzNcdTY2NGJcdTc5ODFcdThmZDFcdTcwZWNcdTZkNzhcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxODldLmxlbmd0aDsrK20pNjU1MzMhPT14WzE4OV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTg5XVttXV09NDgzODQrbSxSWzQ4Mzg0K21dPXhbMTg5XVttXSk7Zm9yKHhbMTkwXT0i''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzNkXHU1MmIyXHU4MzQ2XHU1MTYy''@;'; put 'put ''XHU4MzBlXHU3NzViXHU2Njc2XHU5Y2I4XHU0ZWFjXHU2MGNhXHU3Y2JlXHU3Y2IzXHU3ZWNmXHU0ZTk1XHU4YjY2XHU2NjZmXHU5ODg4XHU5NzU5XHU1ODgzXHU2NTZjXHU5NTVjXHU1Zjg0XHU3NWM5XHU5NzU2XHU3YWRmXHU3YWRlXHU1MWMwXHU3MGFmXHU3YTk4XHU2M2VhXHU3YTc2XHU3''@;'; put 'put ''ZWEwXHU3Mzk2XHU5N2VkXHU0ZTQ1XHU3MDc4XHU0ZTVkXHU5MTUyXHU1M2E5XHU2NTUxXHU2NWU3XHU4MWZjXHU4MjA1XHU1NDhlXHU1YzMxXHU3NTlhXHU5N2EwXHU2MmQ4XHU3MmQ5XHU3NWJkXHU1YzQ1XHU5YTc5XHU4M2NhXHU1YzQwXHU1NDgwXHU3N2U5XHU0ZTNlXHU2Y2FlXHU4MDVh''@;'; put 'put ''XHU2MmQyXHU2MzZlXHU1ZGU4XHU1MTc3XHU4ZGRkXHU4ZTFlXHU5NTJmXHU0ZmYxXHU1M2U1XHU2MGU3XHU3MGFjXHU1MjY3XHU2MzUwXHU5ZTQzXHU1YTFmXHU1MDI2XHU3NzM3XHU1Mzc3XHU3ZWUyXHU2NDg1XHU2NTJiXHU2Mjg5XHU2Mzk4XHU1MDE0XHU3MjM1XHU4OWM5XHU1MWIzXHU4''@;'; put 'put ''YmMwXHU3ZWRkXHU1NzQ3XHU4M2NjXHU5NGE3XHU1MTliXHU1NDFiXHU1Y2ZiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTkwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTBdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5MF1bbV1dPTQ4NjQwK20sUls0ODY0MCttXT14WzE5MF1bbV0p''@;'; put 'put ''O2Zvcih4WzE5MV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGZjYVx1N2Fl''@;'; put 'put ''M1x1NmQ1YVx1OTBlMVx1OWE4Zlx1NTU4MFx1NTQ5Nlx1NTM2MVx1NTRhZlx1NWYwMFx1NjNlOVx1Njk3N1x1NTFlZlx1NjE2OFx1NTIwYVx1NTgyYVx1NTJkOFx1NTc0ZVx1NzgwZFx1NzcwYlx1NWViN1x1NjE3N1x1N2NlMFx1NjI1Ylx1NjI5N1x1NGVhMlx1NzA5NVx1ODAwM1x1NjJmN1x1''@;'; put 'put ''NzBlNFx1OTc2MFx1NTc3N1x1ODJkYlx1NjdlZlx1NjhmNVx1NzhkNVx1OTg5N1x1NzlkMVx1NThmM1x1NTRiM1x1NTNlZlx1NmUzNFx1NTE0Ylx1NTIzYlx1NWJhMlx1OGJmZVx1ODBhZlx1NTU0M1x1NTdhNlx1NjA3M1x1NTc1MVx1NTQyZFx1N2E3YVx1NjA1MFx1NWI1NFx1NjNhN1x1NjJh''@;'; put 'put ''MFx1NTNlM1x1NjI2M1x1NWJjN1x1NjdhZlx1NTRlZFx1N2E5Zlx1ODJlNlx1OTE3N1x1NWU5M1x1ODhlNFx1NTkzOFx1NTdhZVx1NjMwZVx1OGRlOFx1ODBlZlx1NTc1N1x1N2I3N1x1NGZhOVx1NWZlYlx1NWJiZFx1NmIzZVx1NTMyMVx1N2I1MFx1NzJjMlx1Njg0Nlx1NzdmZlx1NzczNlx1''@;'; put 'put ''NjVmN1x1NTFiNVx1NGU4Zlx1NzZkNFx1NWNiZlx1N2FhNVx1ODQ3NVx1NTk0ZVx1OWI0MVx1NTA4MFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5MV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTkxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTFdW21dXT00ODg5NittLFJbNDg4OTYr''@;'; put 'put ''bV09eFsxOTFdW21dKTtmb3IoeFsxOTJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdTk5ODhcdTYxMjdcdTZlODNcdTU3NjRcdTY2MDZcdTYzNDZcdTU2ZjBcdTYyZWNcdTYyNjlcdTVlZDNcdTk2MTRcdTU3ODNcdTYyYzlcdTU1ODdcdTg3MjFcdTgxNGFcdThmYTNcdTU1NjZcdTgzYjFcdTY3NjVcdThkNTZcdTg0ZGRcdTVhNmFcdTY4MGZcdTYyZTZcdTdiZWVcdTk2MTFc''@;'; put 'put ''dTUxNzBcdTZmOWNcdThjMzBcdTYzZmRcdTg5YzhcdTYxZDJcdTdmMDZcdTcwYzJcdTZlZTVcdTc0MDVcdTY5OTRcdTcyZmNcdTVlY2FcdTkwY2VcdTY3MTdcdTZkNmFcdTYzNWVcdTUyYjNcdTcyNjJcdTgwMDFcdTRmNmNcdTU5ZTVcdTkxNmFcdTcwZDlcdTZkOWRcdTUyZDJcdTRlNTBcdTk2''@;'; put 'put ''ZjdcdTk1NmRcdTg1N2VcdTc4Y2FcdTdkMmZcdTUxMjFcdTU3OTJcdTY0YzJcdTgwOGJcdTdjN2JcdTZjZWFcdTY4ZjFcdTY5NWVcdTUxYjdcdTUzOThcdTY4YThcdTcyODFcdTllY2VcdTdiZjFcdTcyZjhcdTc5YmJcdTZmMTNcdTc0MDZcdTY3NGVcdTkxY2NcdTljYTRcdTc5M2NcdTgzODlc''@;'; put 'put ''dTgzNTRcdTU0MGZcdTY4MTdcdTRlM2RcdTUzODlcdTUyYjFcdTc4M2VcdTUzODZcdTUyMjlcdTUwODhcdTRmOGJcdTRmZDBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTJdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5Ml1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTkyXVttXV09NDkx''@;'; put 'put ''NTIrbSxSWzQ5MTUyK21dPXhbMTkyXVttXSk7Zm9yKHhbMTkzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHU3NWUyXHU3YWNiXHU3YzkyXHU2Y2E1XHU5NmI2XHU1MjliXHU3NDgzXHU1NGU5XHU0ZmU5XHU4MDU0XHU4M2IyXHU4ZmRlXHU5NTcwXHU1ZWM5XHU2MDFjXHU2ZDlmXHU1ZTE4XHU2NTViXHU4MTM4XHU5NGZlXHU2MDRiXHU3MGJjXHU3ZWMzXHU3Y2FlXHU1MWM5''@;'; put 'put ''XHU2ODgxXHU3Y2IxXHU4MjZmXHU0ZTI0XHU4Zjg2XHU5MWNmXHU2NjdlXHU0ZWFlXHU4YzA1XHU2NGE5XHU4MDRhXHU1MGRhXHU3NTk3XHU3MWNlXHU1YmU1XHU4ZmJkXHU2ZjY2XHU0ZTg2XHU2NDgyXHU5NTYzXHU1ZWQ2XHU2NTk5XHU1MjE3XHU4OGMyXHU3MGM4XHU1MmEzXHU3MzBlXHU3''@;'; put 'put ''NDMzXHU2Nzk3XHU3OGY3XHU5NzE2XHU0ZTM0XHU5MGJiXHU5Y2RlXHU2ZGNiXHU1MWRiXHU4ZDQxXHU1NDFkXHU2MmNlXHU3M2IyXHU4M2YxXHU5NmY2XHU5Zjg0XHU5NGMzXHU0ZjM2XHU3ZjlhXHU1MWNjXHU3MDc1XHU5Njc1XHU1Y2FkXHU5ODg2XHU1M2U2XHU0ZWU0XHU2ZTljXHU3NDA5''@;'; put 'put ''XHU2OWI0XHU3ODZiXHU5OThmXHU3NTU5XHU1MjE4XHU3NjI0XHU2ZDQxXHU2N2YzXHU1MTZkXHU5Zjk5XHU4MDRiXHU1NDk5XHU3YjNjXHU3YWJmXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTkzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4''@;'; put 'put ''WzE5M11bbV1dPTQ5NDA4K20sUls0OTQwOCttXT14WzE5M11bbV0pO2Zvcih4WzE5NF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1NWU5MFx1NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4Y1x1OTczMlx1OGRl''@;'; put 'put ''Zlx1OGQ0Mlx1OWU3Zlx1NmY1ZVx1Nzk4NFx1NWY1NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4Ylx1NzM4N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1NTM3NVx1NGU3MVx1''@;'; put 'put ''NjNhMFx1NzU2NVx1NjJhMVx1OGY2ZVx1NGYyNlx1NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1NmQxYlx1OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4Mlx1OWE2Y1x1OWE4''@;'; put 'put ''Mlx1NTYxYlx1NTQxN1x1NTdjYlx1NGU3MFx1OWVhNlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5NF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk0XVttXS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApJiYob2VbeFsxOTRdW21dXT00OTY2NCttLFJbNDk2NjQrbV09eFsxOTRdW21dKTtmb3IoeFsxOTVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThjMjlcdTgyOTJcdTgzMmJcdTc2ZjJcdTZjMTNcdTVmZDlcdTgzYmRcdTczMmJcdTgzMDVcdTk1MWFcdTZiZGJcdTc3ZGJcdTk0YzZcdTUzNmZcdTgzMDJcdTUxOTJcdTVlM2RcdThjOGNcdThkMzhcdTRlNDhcdTcz''@;'; put 'put ''YWJcdTY3OWFcdTY4ODVcdTkxNzZcdTk3MDlcdTcxNjRcdTZjYTFcdTc3MDlcdTVhOTJcdTk1NDFcdTZiY2ZcdTdmOGVcdTY2MjdcdTViZDBcdTU5YjlcdTVhOWFcdTk1ZThcdTk1ZjdcdTRlZWNcdTg0MGNcdTg0OTlcdTZhYWNcdTc2ZGZcdTk1MzBcdTczMWJcdTY4YTZcdTViNWZcdTc3MmZc''@;'; put 'put ''dTkxOWFcdTk3NjFcdTdjZGNcdThmZjdcdThjMWNcdTVmMjVcdTdjNzNcdTc5ZDhcdTg5YzVcdTZjY2NcdTg3MWNcdTViYzZcdTVlNDJcdTY4YzlcdTc3MjBcdTdlZjVcdTUxOTVcdTUxNGRcdTUyYzlcdTVhMjlcdTdmMDVcdTk3NjJcdTgyZDdcdTYzY2ZcdTc3ODRcdTg1ZDBcdTc5ZDJcdTZl''@;'; put 'put ''M2FcdTVlOTlcdTU5OTlcdTg1MTFcdTcwNmRcdTZjMTFcdTYyYmZcdTc2YmZcdTY1NGZcdTYwYWZcdTk1ZmRcdTY2MGVcdTg3OWZcdTllMjNcdTk0ZWRcdTU0MGRcdTU0N2RcdThjMmNcdTY0NzhcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsxOTVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5''@;'; put 'put ''NV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk1XVttXV09NDk5MjArbSxSWzQ5OTIwK21dPXhbMTk1XVttXSk7Zm9yKHhbMTk2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDc5XHU4NjExXHU2YTIxXHU4MTljXHU3OGU4XHU2NDY5XHU5YjU0XHU2MmI5XHU2NzJiXHU4M2FiXHU1OGE4XHU5ZWQ4XHU2Y2FiXHU2ZjIwXHU1YmRlXHU5NjRjXHU4YzBiXHU3MjVmXHU2''@;'; put 'put ''N2QwXHU2MmM3XHU3MjYxXHU0ZWE5XHU1OWM2XHU2YmNkXHU1ODkzXHU2NmFlXHU1ZTU1XHU1MmRmXHU2MTU1XHU2NzI4XHU3NmVlXHU3NzY2XHU3MjY3XHU3YTQ2XHU2MmZmXHU1NGVhXHU1NDUwXHU5NGEwXHU5MGEzXHU1YTFjXHU3ZWIzXHU2YzE2XHU0ZTQzXHU1OTc2XHU4MDEwXHU1OTQ4''@;'; put 'put ''XHU1MzU3XHU3NTM3XHU5NmJlXHU1NmNhXHU2MzIwXHU4MTExXHU2MDdjXHU5NWY5XHU2ZGQ2XHU1NDYyXHU5OTgxXHU1MTg1XHU1YWU5XHU4MGZkXHU1OWFlXHU5NzEzXHU1MDJhXHU2Y2U1XHU1YzNjXHU2MmRmXHU0ZjYwXHU1MzNmXHU4MTdiXHU5MDA2XHU2ZWJhXHU4NTJiXHU2MmM4XHU1''@;'; put 'put ''ZTc0XHU3OGJlXHU2NGI1XHU2MzdiXHU1ZmY1XHU1YTE4XHU5MTdmXHU5ZTFmXHU1YzNmXHU2MzRmXHU4MDQyXHU1YjdkXHU1NTZlXHU5NTRhXHU5NTRkXHU2ZDg1XHU2MGE4XHU2N2UwXHU3MmRlXHU1MWRkXHU1YjgxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk2XS5sZW5ndGg7Kytt''@;'; put 'put ''KTY1NTMzIT09eFsxOTZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5Nl1bbV1dPTUwMTc2K20sUls1MDE3NittXT14WzE5Nl1bbV0pO2Zvcih4WzE5N109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5Nlx1ODY1MFx1''@;'; put 'put ''NzU5Zlx1NjMyYVx1NjFlNlx1N2NlZlx1OGJmYVx1NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1NTQ1NVx1NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1NmY1OFx1NzZk''@;'; put 'put ''OFx1NzhkMFx1NzZmY1x1NzU1NFx1NTIyNFx1NTNkYlx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBkNlx1NjI5Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5Ylx1NTViN1x1''@;'; put 'put ''NzZjNlx1NzgzMFx1NjJhOFx1NzBmOVx1NmY4ZVx1NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1ODFhOFx1NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkN1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzE5''@;'; put 'put ''N10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMTk3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsxOTddW21dXT01MDQzMittLFJbNTA0MzIrbV09eFsxOTddW21dKTtmb3IoeFsxOThdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThiNmNcdTdiYzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhc''@;'; put 'put ''dTZmMDJcdTc0ZTJcdTc5NjhcdTY0ODdcdTc3YTVcdTYyZmNcdTk4OTFcdThkMmJcdTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdcdTVhNDZcdTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUy''@;'; put 'put ''NTZcdTYyNTFcdTk0ZmFcdTRlYzZcdTgzODZcdTg0NjFcdTgzZTlcdTg0YjJcdTU3ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUxYzRcdTZmMDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2Jc''@;'; put 'put ''dTU5NDdcdTZiNjdcdTc1NjZcdTVkMGVcdTgxMTBcdTlmNTBcdTY1ZDdcdTc5NDhcdTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2RcdTZjZTNcdThiYWJcdTYzOTBcdWZmZmQiLnNwbGl0KCIi''@;'; put 'put ''KSxtPTA7bSE9eFsxOThdLmxlbmd0aDsrK20pNjU1MzMhPT14WzE5OF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMTk4XVttXV09NTA2ODgrbSxSWzUwNjg4K21dPXhbMTk4XVttXSk7Zm9yKHhbMTk5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2MDcwXHU2ZDNkXHU3Mjc1XHU2MjY2XHU5NDhlXHU5NGM1XHU1MzQzXHU4ZmMxXHU3YjdlXHU0ZWRmXHU4YzI2XHU0ZTdl''@;'; put 'put ''XHU5ZWQ0XHU5NGIxXHU5NGIzXHU1MjRkXHU2ZjVjXHU5MDYzXHU2ZDQ1XHU4YzM0XHU1ODExXHU1ZDRjXHU2YjIwXHU2YjQ5XHU2N2FhXHU1NDViXHU4MTU0XHU3ZjhjXHU1ODk5XHU4NTM3XHU1ZjNhXHU2MmEyXHU2YTQ3XHU5NTM5XHU2NTcyXHU2MDg0XHU2ODY1XHU3N2E3XHU0ZTU0XHU0''@;'; put 'put ''ZmE4XHU1ZGU3XHU5Nzk4XHU2NGFjXHU3ZmQ4XHU1Y2VkXHU0ZmNmXHU3YThkXHU1MjA3XHU4MzA0XHU0ZTE0XHU2MDJmXHU3YTgzXHU5NGE2XHU0ZmI1XHU0ZWIyXHU3OWU2XHU3NDM0XHU1MmU0XHU4MmI5XHU2NGQyXHU3OWJkXHU1YmRkXHU2YzgxXHU5NzUyXHU4ZjdiXHU2YzIyXHU1MDNl''@;'; put 'put ''XHU1MzdmXHU2ZTA1XHU2NGNlXHU2Njc0XHU2YzMwXHU2MGM1XHU5ODc3XHU4YmY3XHU1ZTg2XHU3NDNjXHU3YTc3XHU3OWNiXHU0ZTE4XHU5MGIxXHU3NDAzXHU2YzQyXHU1NmRhXHU5MTRiXHU2Y2M1XHU4ZDhiXHU1MzNhXHU4NmM2XHU2NmYyXHU4ZWFmXHU1YzQ4XHU5YTcxXHU2ZTIwXHVm''@;'; put 'put ''ZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMTk5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsxOTldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzE5OV1bbV1dPTUwOTQ0K20sUls1MDk0NCttXT14WzE5OV1bbV0pO2Zvcih4WzIwMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTNkNlx1NWEzNlx1OWY4Ylx1OGRhM1x1NTNiYlx1NTcwOFx1OThhN1x1Njc0M1x1OTE5Ylx1NmNj''@;'; put 'put ''OVx1NTE2OFx1NzVjYVx1NjJmM1x1NzJhY1x1NTIzOFx1NTI5ZFx1N2YzYVx1NzA5NFx1NzYzOFx1NTM3NFx1OWU0YVx1NjliN1x1Nzg2ZVx1OTZjMFx1ODhkOVx1N2ZhNFx1NzEzNlx1NzFjM1x1NTE4OVx1NjdkM1x1NzRlNFx1NThlNFx1NjUxOFx1NTZiN1x1OGJhOVx1OTk3Nlx1NjI3MFx1''@;'; put 'put ''N2VkNVx1NjBmOVx1NzBlZFx1NThlY1x1NGVjMVx1NGViYVx1NWZjZFx1OTdlN1x1NGVmYlx1OGJhNFx1NTIwM1x1NTk4YVx1N2VhYlx1NjI1NFx1NGVjZFx1NjVlNVx1NjIwZVx1ODMzOFx1ODRjOVx1ODM2M1x1ODc4ZFx1NzE5NFx1NmViNlx1NWJiOVx1N2VkMlx1NTE5N1x1NjNjOVx1Njdk''@;'; put 'put ''NFx1ODA4OVx1ODMzOVx1ODgxNVx1NTExMlx1NWI3YVx1NTk4Mlx1OGZiMVx1NGU3M1x1NmM1ZFx1NTE2NVx1ODkyNVx1OGY2Zlx1OTYyZVx1ODU0YVx1NzQ1ZVx1OTUxMFx1OTVmMFx1NmRhNlx1ODJlNVx1NWYzMVx1NjQ5Mlx1NmQxMlx1ODQyOFx1ODE2ZVx1OWNjM1x1NTg1ZVx1OGQ1Ylx1''@;'; put 'put ''NGUwOVx1NTNjMVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjAwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDBdW21dXT01MTIwMCttLFJbNTEyMDArbV09eFsyMDBdW21dKTtmb3IoeFsyMDFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYy''@;'; put 'put ''NmJcdTVhYzJcdTc0NWZcdTgyNzJcdTZkYTlcdTY4ZWVcdTUwZTdcdTgzOGVcdTc4MDJcdTY3NDBcdTUyMzlcdTZjOTlcdTdlYjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVc''@;'; put 'put ''dThkNjFcdTgxYjNcdTU1ODRcdTZjNTVcdTYyNDdcdTdmMmVcdTU4OTJcdTRmMjRcdTU1NDZcdThkNGZcdTY2NGNcdTRlMGFcdTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2''@;'; put 'put ''YzdcdTgyMGNcdTgyMGRcdThkNjZcdTY0NDRcdTVjMDRcdTYxNTFcdTZkODlcdTc5M2VcdThiYmVcdTc4MzdcdTc1MzNcdTU0N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZc''@;'; put 'put ''dTc1MjVcdTcyNzJcdTUzNDdcdTdlZjNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjAxXVttXV09NTE0NTYrbSxSWzUxNDU2K21dPXhbMjAxXVttXSk7Zm9yKHhbMjAyXT0iXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzAxXHU3NmRiXHU1MjY5XHU4MGRjXHU1NzIzXHU1''@;'; put 'put ''ZTA4XHU1OTMxXHU3MmVlXHU2NWJkXHU2ZTdmXHU4YmQ3XHU1YzM4XHU4NjcxXHU1MzQxXHU3N2YzXHU2MmZlXHU2NWY2XHU0ZWMwXHU5OGRmXHU4NjgwXHU1YjllXHU4YmM2XHU1M2YyXHU3N2UyXHU0ZjdmXHU1YzRlXHU5YTc2XHU1OWNiXHU1ZjBmXHU3OTNhXHU1OGViXHU0ZTE2XHU2N2Zm''@;'; put 'put ''XHU0ZThiXHU2MmVkXHU4YTkzXHU5MDFkXHU1MmJmXHU2NjJmXHU1NWRjXHU1NjZjXHU5MDAyXHU0ZWQ1XHU0ZjhkXHU5MWNhXHU5OTcwXHU2YzBmXHU1ZTAyXHU2MDQzXHU1YmE0XHU4OWM2XHU4YmQ1XHU2NTM2XHU2MjRiXHU5OTk2XHU1Yjg4XHU1YmZmXHU2Mzg4XHU1NTJlXHU1M2Q3XHU3''@;'; put 'put ''NjI2XHU1MTdkXHU4NTJjXHU2N2EyXHU2OGIzXHU2YjhhXHU2MjkyXHU4ZjkzXHU1M2Q0XHU4MjEyXHU2ZGQxXHU3NThmXHU0ZTY2XHU4ZDRlXHU1YjcwXHU3MTlmXHU4NWFmXHU2NjkxXHU2NmQ5XHU3ZjcyXHU4NzAwXHU5ZWNkXHU5ZjIwXHU1YzVlXHU2NzJmXHU4ZmYwXHU2ODExXHU2NzVm''@;'; put 'put ''XHU2MjBkXHU3YWQ2XHU1ODg1XHU1ZWI2XHU2NTcwXHU2ZjMxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjAyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDJdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwMl1bbV1dPTUxNzEyK20sUls1MTcxMittXT14WzIwMl1bbV0pO2Zvcih4WzIw''@;'; put 'put ''M109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA1NVx1NTIzN1x1ODAwZFx1''@;'; put 'put ''NjQ1NFx1ODg3MFx1NzUyOVx1NWUwNVx1NjgxM1x1NjJmNFx1OTcxY1x1NTNjY1x1NzIzZFx1OGMwMVx1NmMzNFx1Nzc2MVx1N2EwZVx1NTQyZVx1NzdhY1x1OTg3YVx1ODIxY1x1OGJmNFx1Nzg1NVx1NjcxNFx1NzBjMVx1NjVhZlx1NjQ5NVx1NTYzNlx1NjAxZFx1NzljMVx1NTNmOFx1NGUx''@;'; put 'put ''ZFx1NmI3Ylx1ODA4Nlx1NWJmYVx1NTVlM1x1NTZkYlx1NGYzYVx1NGYzY1x1OTk3Mlx1NWRmM1x1Njc3ZVx1ODAzOFx1NjAwMlx1OTg4Mlx1OTAwMVx1NWI4Ylx1OGJiY1x1OGJmNVx1NjQxY1x1ODI1OFx1NjRkZVx1NTVmZFx1ODJjZlx1OTE2NVx1NGZkN1x1N2QyMFx1OTAxZlx1N2M5Zlx1''@;'; put 'put ''NTBmM1x1NTg1MVx1NmVhZlx1NWJiZlx1OGJjOVx1ODA4M1x1OTE3OFx1ODQ5Y1x1N2I5N1x1ODY3ZFx1OTY4Ylx1OTY4Zlx1N2VlNVx1OWFkM1x1Nzg4ZVx1NWM4MVx1N2E1N1x1OTA0Mlx1OTZhN1x1Nzk1Zlx1NWI1OVx1NjM1Zlx1N2IwYlx1ODRkMVx1NjhhZFx1NTUwNlx1N2YyOVx1NzQx''@;'; put 'put ''MFx1N2QyMlx1OTUwMVx1NjI0MFx1NTg0Y1x1NGVkNlx1NWI4M1x1NTk3OVx1NTg1NFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjAzXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDNdW21dXT01MTk2OCttLFJbNTE5NjgrbV09eFsyMDNd''@;'; put 'put ''W21dKTtmb3IoeFsyMDRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTczNmRc''@;'; put 'put ''dTYzMWVcdThlNGJcdThlMGZcdTgwY2VcdTgyZDRcdTYyYWNcdTUzZjBcdTZjZjBcdTkxNWVcdTU5MmFcdTYwMDFcdTZjNzBcdTU3NGRcdTY0NGFcdThkMmFcdTc2MmJcdTZlZTlcdTU3NWJcdTZhODBcdTc1ZjBcdTZmNmRcdThjMmRcdThjMDhcdTU3NjZcdTZiZWZcdTg4OTJcdTc4YjNcdTYz''@;'; put 'put ''YTJcdTUzZjlcdTcwYWRcdTZjNjRcdTU4NThcdTY0MmFcdTU4MDJcdTY4ZTBcdTgxOWJcdTU1MTBcdTdjZDZcdTUwMThcdThlYmFcdTZkY2NcdThkOWZcdTcwZWJcdTYzOGZcdTZkOWJcdTZlZDRcdTdlZTZcdTg0MDRcdTY4NDNcdTkwMDNcdTZkZDhcdTk2NzZcdThiYThcdTU5NTdcdTcyNzlc''@;'; put 'put ''dTg1ZTRcdTgxN2VcdTc1YmNcdThhOGFcdTY4YWZcdTUyNTRcdThlMjJcdTk1MTFcdTYzZDBcdTk4OThcdThlNDRcdTU1N2NcdTRmNTNcdTY2ZmZcdTU2OGZcdTYwZDVcdTZkOTVcdTUyNDNcdTVjNDlcdTU5MjlcdTZkZmJcdTU4NmJcdTc1MzBcdTc1MWNcdTYwNmNcdTgyMTRcdTgxNDZcdTYz''@;'; put 'put ''MTFcdTY3NjFcdThmZTJcdTc3M2FcdThkZjNcdThkMzRcdTk0YzFcdTVlMTZcdTUzODVcdTU0MmNcdTcwYzNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDRdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjA0XVttXV09NTIyMjQrbSxSWzUy''@;'; put 'put ''MjI0K21dPXhbMjA0XVttXSk7Zm9yKHhbMjA1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHU2YzQwXHU1ZWY3XHU1MDVjXHU0ZWFkXHU1ZWFkXHU2MzNhXHU4MjQ3XHU5MDFhXHU2ODUwXHU5MTZlXHU3N2IzXHU1NDBjXHU5NGRjXHU1ZjY0XHU3YWU1XHU2ODc2XHU2MzQ1XHU3YjUyXHU3ZWRmXHU3NWRiXHU1MDc3XHU2Mjk1XHU1OTM0XHU5MDBmXHU1MWY4XHU3OWMzXHU3''@;'; put 'put ''YTgxXHU1NmZlXHU1ZjkyXHU5MDE0XHU2ZDgyXHU1YzYwXHU1NzFmXHU1NDEwXHU1MTU0XHU2ZTRkXHU1NmUyXHU2M2E4XHU5ODkzXHU4MTdmXHU4NzE1XHU4OTJhXHU5MDAwXHU1NDFlXHU1YzZmXHU4MWMwXHU2MmQ2XHU2MjU4XHU4MTMxXHU5ZTM1XHU5NjQwXHU5YTZlXHU5YTdjXHU2OTJk''@;'; put 'put ''XHU1OWE1XHU2MmQzXHU1NTNlXHU2MzE2XHU1NGM3XHU4NmQ5XHU2ZDNjXHU1YTAzXHU3NGU2XHU4ODljXHU2YjZhXHU1OTE2XHU4YzRjXHU1ZjJmXHU2ZTdlXHU3M2E5XHU5ODdkXHU0ZTM4XHU3MGY3XHU1YjhjXHU3ODk3XHU2MzNkXHU2NjVhXHU3Njk2XHU2MGNiXHU1YjliXHU1YTQ5XHU0''@;'; put 'put ''ZTA3XHU4MTU1XHU2YzZhXHU3MzhiXHU0ZWExXHU2Nzg5XHU3ZjUxXHU1ZjgwXHU2NWZhXHU2NzFiXHU1ZmQ4XHU1OTg0XHU1YTAxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA1XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMDVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwNV1bbV1d''@;'; put 'put ''PTUyNDgwK20sUls1MjQ4MCttXT14WzIwNV1bbV0pO2Zvcih4WzIwNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NWRjZFx1NWZhZVx1NTM3MVx1OTdlNlx1OGZkZFx1Njg0NVx1NTZmNFx1NTUyZlx1NjBkZlx1NGUzYVx1NmY0ZFx1N2VmNFx1ODJjN1x1ODQwZVx1NTlkNFx1NGYxZlx1NGYyYVx1NWMzZVx1N2VhY1x1NjcyYVx1ODUxYVx1NTQ3M1x1NzU0Zlx1ODBjM1x1''@;'; put 'put ''NTU4Mlx1OWI0Zlx1NGY0ZFx1NmUyZFx1OGMxM1x1NWMwOVx1NjE3MFx1NTM2Ylx1NzYxZlx1NmUyOVx1ODY4YVx1NjU4N1x1OTVmYlx1N2ViOVx1NTQzYlx1N2EzM1x1N2QwYVx1OTVlZVx1NTVlMVx1N2ZjMVx1NzRlZVx1NjMxZFx1ODcxN1x1NmRhMVx1N2E5ZFx1NjIxMVx1NjVhMVx1NTM2''@;'; put 'put ''N1x1NjNlMVx1NmM4M1x1NWRlYlx1NTQ1Y1x1OTRhOFx1NGU0Y1x1NmM2MVx1OGJlY1x1NWM0Ylx1NjVlMFx1ODI5Y1x1NjhhN1x1NTQzZVx1NTQzNFx1NmJjYlx1NmI2Nlx1NGU5NFx1NjM0Mlx1NTM0OFx1ODIxZVx1NGYwZFx1NGZhZVx1NTc1ZVx1NjIwYVx1OTZmZVx1NjY2NFx1NzI2OVx1''@;'; put 'put ''NTJmZlx1NTJhMVx1NjA5Zlx1OGJlZlx1NjYxNFx1NzE5OVx1Njc5MFx1ODk3Zlx1Nzg1Mlx1NzdmZFx1NjY3MFx1NTYzYlx1NTQzOFx1OTUyMVx1NzI3YVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjA2XVttXS5jaGFyQ29kZUF0KDApJiYo''@;'; put 'put ''b2VbeFsyMDZdW21dXT01MjczNittLFJbNTI3MzYrbV09eFsyMDZdW21dKTtmb3IoeFsyMDddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlcdTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZcdTZlYWFcdTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlc''@;'; put 'put ''dTYyMGZcdTdlYzZcdTc3OGVcdTg2N2VcdTUzMjNcdTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRmYTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0MTNcdTYzODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVm''@;'; put 'put ''MjZcdTVhY2NcdTY2M2VcdTk2NjlcdTczYjBcdTczMmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFcdTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2ZjhcdTUzYTJcdTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJc''@;'; put 'put ''dTk4NzlcdTVkZjdcdTZhNjFcdTUwY2ZcdTU0MTFcdThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUyNGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTViYjVcdTZkYzZcdTY2NTNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMDddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIwN11bbV0uY2hh''@;'; put 'put ''ckNvZGVBdCgwKSYmKG9lW3hbMjA3XVttXV09NTI5OTIrbSxSWzUyOTkyK21dPXhbMjA3XVttXSk7Zm9yKHhbMjA4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1YzBmXHU1YjVkXHU2ODIxXHU4MDk2XHU1NTc4XHU3YjExXHU2NTQ4XHU2OTU0XHU0ZTliXHU2YjQ3XHU4NzRlXHU5NzhiXHU1MzRmXHU2MzFmXHU2NDNhXHU5MGFhXHU2NTljXHU4MGMxXHU4YzEwXHU1MTk5''@;'; put 'put ''XHU2OGIwXHU1Mzc4XHU4N2Y5XHU2MWM4XHU2Y2M0XHU2Y2ZiXHU4YzIyXHU1YzUxXHU4NWFhXHU4MmFmXHU5NTBjXHU2YjIzXHU4ZjliXHU2NWIwXHU1ZmZiXHU1ZmMzXHU0ZmUxXHU4ODQ1XHU2NjFmXHU4MTY1XHU3MzI5XHU2MGZhXHU1MTc0XHU1MjExXHU1NzhiXHU1ZjYyXHU5MGEyXHU4''@;'; put 'put ''ODRjXHU5MTkyXHU1ZTc4XHU2NzRmXHU2MDI3XHU1OWQzXHU1MTQ0XHU1MWY2XHU4MGY4XHU1MzA4XHU2Yzc5XHU5NmM0XHU3MThhXHU0ZjExXHU0ZmVlXHU3ZjllXHU2NzNkXHU1NWM1XHU5NTA4XHU3OWMwXHU4ODk2XHU3ZWUzXHU1ODlmXHU2MjBjXHU5NzAwXHU4NjVhXHU1NjE4XHU5ODdi''@;'; put 'put ''XHU1ZjkwXHU4YmI4XHU4NGM0XHU5MTU3XHU1M2Q5XHU2NWVkXHU1ZThmXHU3NTVjXHU2MDY0XHU3ZDZlXHU1YTdmXHU3ZWVhXHU3ZWVkXHU4ZjY5XHU1NWE3XHU1YmEzXHU2MGFjXHU2NWNiXHU3Mzg0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjA4XS5sZW5ndGg7KyttKTY1NTMzIT09''@;'; put 'put ''eFsyMDhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIwOF1bbV1dPTUzMjQ4K20sUls1MzI0OCttXT14WzIwOF1bbV0pO2Zvcih4WzIwOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTAwOVx1NzY2M1x1NzcyOVx1N2VkYVx1OTc3NFx1ODU5Ylx1NWI2Nlx1N2E3NFx1OTZlYVx1ODg0MFx1NTJjYlx1NzE4Zlx1NWZhYVx1NjVlY1x1OGJlMlx1NWJmYlx1OWE2Zlx1NWRl''@;'; put 'put ''MVx1NmI4OVx1NmM1Ylx1OGJhZFx1OGJhZlx1OTAwYVx1OGZjNVx1NTM4Ylx1NjJiY1x1OWUyNlx1OWUyZFx1NTQ0MFx1NGUyYlx1ODJiZFx1NzI1OVx1ODY5Y1x1NWQxNlx1ODg1OVx1NmRhZlx1OTZjNVx1NTRkMVx1NGU5YVx1OGJiNlx1NzEwOVx1NTRiZFx1OTYwOVx1NzBkZlx1NmRmOVx1''@;'; put 'put ''NzZkMFx1NGUyNVx1NzgxNFx1ODcxMlx1NWNhOVx1NWVmNlx1OGEwMFx1OTg5Y1x1OTYwZVx1NzA4ZVx1NmNiZlx1NTk0NFx1NjNhOVx1NzczY1x1ODg0ZFx1NmYxNFx1ODI3M1x1NTgzMFx1NzFkNVx1NTM4Y1x1NzgxYVx1OTZjMVx1NTUwMVx1NWY2Nlx1NzEzMFx1NWJiNFx1OGMxYVx1OWE4''@;'; put 'put ''Y1x1NmI4M1x1NTkyZVx1OWUyZlx1NzllN1x1Njc2OFx1NjI2Y1x1NGY2Zlx1NzVhMVx1N2Y4YVx1NmQwYlx1OTYzM1x1NmMyN1x1NGVmMFx1NzVkMlx1NTE3Ylx1NjgzN1x1NmYzZVx1OTA4MFx1ODE3MFx1NTk5Nlx1NzQ3Nlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIwOV0ubGVuZ3Ro''@;'; put 'put ''OysrbSk2NTUzMyE9PXhbMjA5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMDldW21dXT01MzUwNCttLFJbNTM1MDQrbV09eFsyMDldW21dKTtmb3IoeFsyMTBdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTY0NDdcdTVjMjdcdTkwNjVcdTdhOTFcdThjMjNcdTU5ZGFcdTU0YWNcdTgyMDBcdTgzNmZcdTg5ODFcdTgwMDBcdTY5MzBcdTU2NGVcdTgwMzZcdTcyMzdcdTkx''@;'; put 'put ''Y2VcdTUxYjZcdTRlNWZcdTk4NzVcdTYzOTZcdTRlMWFcdTUzZjZcdTY2ZjNcdTgxNGJcdTU5MWNcdTZkYjJcdTRlMDBcdTU4ZjlcdTUzM2JcdTYzZDZcdTk0ZjFcdTRmOWRcdTRmMGFcdTg4NjNcdTk4OTBcdTU5MzdcdTkwNTdcdTc5ZmJcdTRlZWFcdTgwZjBcdTc1OTFcdTZjODJcdTViOWNc''@;'; put 'put ''dTU5ZThcdTVmNWRcdTY5MDVcdTg2ODFcdTUwMWFcdTVkZjJcdTRlNTlcdTc3ZTNcdTRlZTVcdTgyN2FcdTYyOTFcdTY2MTNcdTkwOTFcdTVjNzlcdTRlYmZcdTVmNzlcdTgxYzZcdTkwMzhcdTgwODRcdTc1YWJcdTRlYTZcdTg4ZDRcdTYxMGZcdTZiYzVcdTVmYzZcdTRlNDlcdTc2Y2FcdTZl''@;'; put 'put ''YTJcdThiZTNcdThiYWVcdThjMGFcdThiZDFcdTVmMDJcdTdmZmNcdTdmY2NcdTdlY2VcdTgzMzVcdTgzNmJcdTU2ZTBcdTZiYjdcdTk3ZjNcdTk2MzRcdTU5ZmJcdTU0MWZcdTk0ZjZcdTZkZWJcdTViYzVcdTk5NmVcdTVjMzlcdTVmMTVcdTk2OTBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9''@;'; put 'put ''eFsyMTBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxMF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjEwXVttXV09NTM3NjArbSxSWzUzNzYwK21dPXhbMjEwXVttXSk7Zm9yKHhbMjExXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1MzcwXHU4MmYxXHU2YTMxXHU1YTc0XHU5ZTcwXHU1ZTk0XHU3ZjI4XHU4M2I5XHU4NDI0XHU4NDI1XHU4MzY3XHU4NzQ3XHU4ZmNlXHU4''@;'; put 'put ''ZDYyXHU3NmM4XHU1ZjcxXHU5ODk2XHU3ODZjXHU2NjIwXHU1NGRmXHU2MmU1XHU0ZjYzXHU4MWMzXHU3NWM4XHU1ZWI4XHU5NmNkXHU4ZTBhXHU4NmY5XHU1NDhmXHU2Y2YzXHU2ZDhjXHU2YzM4XHU2MDdmXHU1MmM3XHU3NTI4XHU1ZTdkXHU0ZjE4XHU2MGEwXHU1ZmU3XHU1YzI0XHU3NTMx''@;'; put 'put ''XHU5MGFlXHU5NGMwXHU3MmI5XHU2Y2I5XHU2ZTM4XHU5MTQ5XHU2NzA5XHU1M2NiXHU1M2YzXHU0ZjUxXHU5MWM5XHU4YmYxXHU1M2M4XHU1ZTdjXHU4ZmMyXHU2ZGU0XHU0ZThlXHU3NmMyXHU2OTg2XHU4NjVlXHU2MTFhXHU4MjA2XHU0ZjU5XHU0ZmRlXHU5MDNlXHU5YzdjXHU2MTA5XHU2''@;'; put 'put ''ZTFkXHU2ZTE0XHU5Njg1XHU0ZTg4XHU1YTMxXHU5NmU4XHU0ZTBlXHU1YzdmXHU3OWI5XHU1Yjg3XHU4YmVkXHU3ZmJkXHU3Mzg5XHU1N2RmXHU4MjhiXHU5MGMxXHU1NDAxXHU5MDQ3XHU1NWJiXHU1Y2VhXHU1ZmExXHU2MTA4XHU2YjMyXHU3MmYxXHU4MGIyXHU4YTg5XHVmZmZkIi5zcGxp''@;'; put 'put ''dCgiIiksbT0wO20hPXhbMjExXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxMV1bbV1dPTU0MDE2K20sUls1NDAxNittXT14WzIxMV1bbV0pO2Zvcih4WzIxMl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NmQ3NFx1NWJkM1x1ODhkNVx1OTg4NFx1OGM2Ylx1OWE2ZFx1OWUzM1x1NmUwYVx1NTFhNFx1NTE0M1x1NTdhM1x1''@;'; put 'put ''ODg4MVx1NTM5Zlx1NjNmNFx1OGY5NVx1NTZlZFx1NTQ1OFx1NTcwNlx1NzMzZlx1NmU5MFx1N2YxOFx1OGZkY1x1ODJkMVx1NjEzZlx1NjAyOFx1OTY2Mlx1NjZmMFx1N2VhNlx1OGQ4YVx1OGRjM1x1OTRhNVx1NWNiM1x1N2NhNFx1NjcwOFx1NjBhNlx1OTYwNVx1ODAxOFx1NGU5MVx1OTBl''@;'; put 'put ''N1x1NTMwMFx1OTY2OFx1NTE0MVx1OGZkMFx1ODU3NFx1OTE1ZFx1NjY1NVx1OTdmNVx1NWI1NVx1NTMxZFx1NzgzOFx1Njc0Mlx1NjgzZFx1NTRjOVx1NzA3ZVx1NWJiMFx1OGY3ZFx1NTE4ZFx1NTcyOFx1NTRiMVx1NjUxMlx1NjY4Mlx1OGQ1ZVx1OGQ0M1x1ODEwZlx1ODQ2Y1x1OTA2ZFx1''@;'; put 'put ''N2NkZlx1NTFmZlx1ODVmYlx1NjdhM1x1NjVlOVx1NmZhMVx1ODZhNFx1OGU4MVx1NTY2YVx1OTAyMFx1NzY4Mlx1NzA3Nlx1NzFlNVx1OGQyM1x1NjJlOVx1NTIxOVx1NmNmZFx1OGQzY1x1NjAwZVx1NTg5ZVx1NjE4ZVx1NjZmZVx1OGQ2MFx1NjI0ZVx1NTViM1x1NmUyM1x1NjcyZFx1OGY2''@;'; put 'put ''N1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxMl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjEyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTJdW21dXT01NDI3MittLFJbNTQyNzIrbV09eFsyMTJdW21dKTtmb3IoeFsyMTNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTk0ZTFcdTk1ZjhcdTc3MjhcdTY4MDVcdTY5YThcdTU0OGJcdTRlNGRcdTcwYjhcdThiYzhc''@;'; put 'put ''dTY0NThcdTY1OGJcdTViODVcdTdhODRcdTUwM2FcdTViZThcdTc3YmJcdTZiZTFcdThhNzlcdTdjOThcdTZjYmVcdTc2Y2ZcdTY1YTlcdThmOTdcdTVkMmRcdTVjNTVcdTg2MzhcdTY4MDhcdTUzNjBcdTYyMThcdTdhZDlcdTZlNWJcdTdlZmRcdTZhMWZcdTdhZTBcdTVmNzBcdTZmMzNcdTVm''@;'; put 'put ''MjBcdTYzOGNcdTZkYThcdTY3NTZcdTRlMDhcdTVlMTBcdThkMjZcdTRlZDdcdTgwYzBcdTc2MzRcdTk2OWNcdTYyZGJcdTY2MmRcdTYyN2VcdTZjYmNcdThkNzVcdTcxNjdcdTdmNjlcdTUxNDZcdTgwODdcdTUzZWNcdTkwNmVcdTYyOThcdTU0ZjJcdTg2ZjBcdThmOTlcdTgwMDVcdTk1MTdc''@;'; put 'put ''dTg1MTdcdThmZDlcdTZkNTlcdTczY2RcdTY1OWZcdTc3MWZcdTc1MDRcdTc4MjdcdTgxZmJcdThkMWVcdTk0ODhcdTRmYTZcdTY3OTVcdTc1YjlcdThiY2FcdTk3MDdcdTYzMmZcdTk1NDdcdTk2MzVcdTg0YjhcdTYzMjNcdTc3NDFcdTVmODFcdTcyZjBcdTRlODlcdTYwMTRcdTY1NzRcdTYy''@;'; put 'put ''ZWZcdTZiNjNcdTY1M2ZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxM11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjEzXVttXV09NTQ1MjgrbSxSWzU0NTI4K21dPXhbMjEzXVttXSk7Zm9yKHhbMjE0XT0iXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ZTI3XHU3NWM3XHU5MGQxXHU4YmMxXHU4MjlkXHU2NzlkXHU2NTJm''@;'; put 'put ''XHU1NDMxXHU4NzE4XHU3N2U1XHU4MGEyXHU4MTAyXHU2YzQxXHU0ZTRiXHU3ZWM3XHU4MDRjXHU3NmY0XHU2OTBkXHU2Yjk2XHU2MjY3XHU1MDNjXHU0Zjg0XHU1NzQwXHU2MzA3XHU2YjYyXHU4ZGJlXHU1M2VhXHU2NWU4XHU3ZWI4XHU1ZmQ3XHU2MzFhXHU2M2I3XHU4MWYzXHU4MWY0XHU3''@;'; put 'put ''ZjZlXHU1ZTFjXHU1Y2Q5XHU1MjM2XHU2NjdhXHU3OWU5XHU3YTFhXHU4ZDI4XHU3MDk5XHU3NWQ0XHU2ZWRlXHU2Y2JiXHU3YTkyXHU0ZTJkXHU3NmM1XHU1ZmUwXHU5NDlmXHU4ODc3XHU3ZWM4XHU3OWNkXHU4MGJmXHU5MWNkXHU0ZWYyXHU0ZjE3XHU4MjFmXHU1NDY4XHU1ZGRlXHU2ZDMy''@;'; put 'put ''XHU4YmNjXHU3Y2E1XHU4Zjc0XHU4MDk4XHU1ZTFhXHU1NDkyXHU3NmIxXHU1Yjk5XHU2NjNjXHU5YWE0XHU3M2UwXHU2ODJhXHU4NmRiXHU2NzMxXHU3MzJhXHU4YmY4XHU4YmRiXHU5MDEwXHU3YWY5XHU3MGRiXHU3MTZlXHU2MmM0XHU3N2E5XHU1NjMxXHU0ZTNiXHU4NDU3XHU2N2YxXHU1''@;'; put 'put ''MmE5XHU4NmMwXHU4ZDJlXHU5NGY4XHU3YjUxXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTRdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxNF1bbV1dPTU0Nzg0K20sUls1NDc4NCttXT14WzIxNF1bbV0pO2Zvcih4WzIxNV09Ilx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NGY0Zlx1NmNlOFx1Nzk1ZFx1OWE3Ylx1NjI5''@;'; put 'put ''M1x1NzIyYVx1NjJmZFx1NGUxM1x1NzgxNlx1OGY2Y1x1NjRiMFx1OGQ1YVx1N2JjNlx1Njg2OVx1NWU4NFx1ODhjNVx1NTk4Nlx1NjQ5ZVx1NThlZVx1NzJiNlx1NjkwZVx1OTUyNVx1OGZmZFx1OGQ1OFx1NTc2MFx1N2YwMFx1OGMwNlx1NTFjNlx1NjM0OVx1NjJkOVx1NTM1M1x1Njg0Y1x1''@;'; put 'put ''NzQyMlx1ODMwMVx1OTE0Y1x1NTU0NFx1Nzc0MFx1NzA3Y1x1NmQ0YVx1NTE3OVx1NTRhOFx1OGQ0NFx1NTlmZlx1NmVjYlx1NmRjNFx1NWI1Y1x1N2QyYlx1NGVkNFx1N2M3ZFx1NmVkM1x1NWI1MFx1ODFlYVx1NmUwZFx1NWI1N1x1OWIwM1x1NjhkNVx1OGUyYVx1NWI5N1x1N2VmY1x1NjAz''@;'; put 'put ''Ylx1N2ViNVx1OTBiOVx1OGQ3MFx1NTk0Zlx1NjNjZFx1NzlkZlx1OGRiM1x1NTM1Mlx1NjVjZlx1Nzk1Nlx1OGJjNVx1OTYzYlx1N2VjNFx1OTRiYlx1N2U4Mlx1NTYzNFx1OTE4OVx1NjcwMFx1N2Y2YVx1NWMwYVx1OTA3NVx1NjYyOFx1NWRlNlx1NGY1MFx1NjdkZVx1NTA1YVx1NGY1Y1x1''@;'; put 'put ''NTc1MFx1NWVhN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxNV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE1XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMTVdW21dXT01NTA0MCttLFJbNTUwNDArbV09eFsyMTVdW21dKTtmb3Io''@;'; put 'put ''eFsyMTZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTRlOGRcdTRlMGNcdTUx''@;'; put 'put ''NDBcdTRlMTBcdTVlZmZcdTUzNDVcdTRlMTVcdTRlOThcdTRlMWVcdTliMzJcdTViNmNcdTU2NjlcdTRlMjhcdTc5YmFcdTRlM2ZcdTUzMTVcdTRlNDdcdTU5MmRcdTcyM2JcdTUzNmVcdTZjMTBcdTU2ZGZcdTgwZTRcdTk5OTdcdTZiZDNcdTc3N2VcdTlmMTdcdTRlMzZcdTRlOWZcdTlmMTBc''@;'; put 'put ''dTRlNWNcdTRlNjlcdTRlOTNcdTgyODhcdTViNWJcdTU1NmNcdTU2MGZcdTRlYzRcdTUzOGRcdTUzOWRcdTUzYTNcdTUzYTVcdTUzYWVcdTk3NjVcdThkNWRcdTUzMWFcdTUzZjVcdTUzMjZcdTUzMmVcdTUzM2VcdThkNWNcdTUzNjZcdTUzNjNcdTUyMDJcdTUyMDhcdTUyMGVcdTUyMmRcdTUy''@;'; put 'put ''MzNcdTUyM2ZcdTUyNDBcdTUyNGNcdTUyNWVcdTUyNjFcdTUyNWNcdTg0YWZcdTUyN2RcdTUyODJcdTUyODFcdTUyOTBcdTUyOTNcdTUxODJcdTdmNTRcdTRlYmJcdTRlYzNcdTRlYzlcdTRlYzJcdTRlZThcdTRlZTFcdTRlZWJcdTRlZGVcdTRmMWJcdTRlZjNcdTRmMjJcdTRmNjRcdTRlZjVc''@;'; put 'put ''dTRmMjVcdTRmMjdcdTRmMDlcdTRmMmJcdTRmNWVcdTRmNjdcdTY1MzhcdTRmNWFcdTRmNWRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTZdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxNl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjE2XVttXV09NTUyOTYrbSxSWzU1Mjk2K21dPXhb''@;'; put 'put ''MjE2XVttXSk7Zm9yKHhbMjE3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU0''@;'; put 'put ''ZjVmXHU0ZjU3XHU0ZjMyXHU0ZjNkXHU0Zjc2XHU0Zjc0XHU0ZjkxXHU0Zjg5XHU0ZjgzXHU0ZjhmXHU0ZjdlXHU0ZjdiXHU0ZmFhXHU0ZjdjXHU0ZmFjXHU0Zjk0XHU0ZmU2XHU0ZmU4XHU0ZmVhXHU0ZmM1XHU0ZmRhXHU0ZmUzXHU0ZmRjXHU0ZmQxXHU0ZmRmXHU0ZmY4XHU1MDI5XHU1MDRj''@;'; put 'put ''XHU0ZmYzXHU1MDJjXHU1MDBmXHU1MDJlXHU1MDJkXHU0ZmZlXHU1MDFjXHU1MDBjXHU1MDI1XHU1MDI4XHU1MDdlXHU1MDQzXHU1MDU1XHU1MDQ4XHU1MDRlXHU1MDZjXHU1MDdiXHU1MGE1XHU1MGE3XHU1MGE5XHU1MGJhXHU1MGQ2XHU1MTA2XHU1MGVkXHU1MGVjXHU1MGU2XHU1MGVlXHU1''@;'; put 'put ''MTA3XHU1MTBiXHU0ZWRkXHU2YzNkXHU0ZjU4XHU0ZjY1XHU0ZmNlXHU5ZmEwXHU2YzQ2XHU3Yzc0XHU1MTZlXHU1ZGZkXHU5ZWM5XHU5OTk4XHU1MTgxXHU1OTE0XHU1MmY5XHU1MzBkXHU4YTA3XHU1MzEwXHU1MWViXHU1OTE5XHU1MTU1XHU0ZWEwXHU1MTU2XHU0ZWIzXHU4ODZlXHU4OGE0''@;'; put 'put ''XHU0ZWI1XHU4MTE0XHU4OGQyXHU3OTgwXHU1YjM0XHU4ODAzXHU3ZmI4XHU1MWFiXHU1MWIxXHU1MWJkXHU1MWJjXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjE3XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMTddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIxN11bbV1dPTU1NTUyK20s''@;'; put 'put ''Uls1NTU1MittXT14WzIxN11bbV0pO2Zvcih4WzIxOF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1NTFjN1x1NTE5Nlx1NTFhMlx1NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJlMFx1OGJl''@;'; put 'put ''NFx1OGJlOFx1OGJlOVx1OGJlZVx1OGJmMFx1OGJmM1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1OGMyMVx1''@;'; put 'put ''OGMyNVx1OGMyN1x1OGMyYVx1OGMyYlx1OGMyZVx1OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3NFx1OTY4''@;'; put 'put ''OFx1OTY4ZFx1OTY5N1x1OTZiMFx1OTA5N1x1OTA5Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIxOF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjE4XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMThd''@;'; put 'put ''W21dXT01NTgwOCttLFJbNTU4MDgrbV09eFsyMThdW21dKTtmb3IoeFsyMTldPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTkwYjhcdTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkwYzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkx''@;'; put 'put ''MzlcdTkxNDNcdTkxNDZcdTUyMGRcdTU5NDJcdTUyYTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZcdTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2Vc''@;'; put 'put ''dTU4YmNcdTU4YzVcdTU4ZDFcdTU3MjlcdTU3MmNcdTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3''@;'; put 'put ''Y2ZcdTU3YTdcdTU3YjRcdTU3OTNcdTU3YTBcdTU3ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRcdTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGRcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMTldLmxlbmd0aDsrK20pNjU1MzMhPT14WzIxOV1bbV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSYmKG9lW3hbMjE5XVttXV09NTYwNjQrbSxSWzU2MDY0K21dPXhbMjE5XVttXSk7Zm9yKHhbMjIwXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU1ODBiXHU1ODBkXHU1N2ZkXHU1N2VkXHU1ODAwXHU1ODFlXHU1ODE5XHU1ODQ0XHU1ODIwXHU1ODY1XHU1ODZjXHU1ODgxXHU1ODg5XHU1ODlhXHU1ODgwXHU5OWE4XHU5ZjE5XHU2MWZmXHU4Mjc5XHU4MjdkXHU4MjdmXHU4''@;'; put 'put ''MjhmXHU4MjhhXHU4MmE4XHU4Mjg0XHU4MjhlXHU4MjkxXHU4Mjk3XHU4Mjk5XHU4MmFiXHU4MmI4XHU4MmJlXHU4MmIwXHU4MmM4XHU4MmNhXHU4MmUzXHU4Mjk4XHU4MmI3XHU4MmFlXHU4MmNiXHU4MmNjXHU4MmMxXHU4MmE5XHU4MmI0XHU4MmExXHU4MmFhXHU4MjlmXHU4MmM0XHU4MmNl''@;'; put 'put ''XHU4MmE0XHU4MmUxXHU4MzA5XHU4MmY3XHU4MmU0XHU4MzBmXHU4MzA3XHU4MmRjXHU4MmY0XHU4MmQyXHU4MmQ4XHU4MzBjXHU4MmZiXHU4MmQzXHU4MzExXHU4MzFhXHU4MzA2XHU4MzE0XHU4MzE1XHU4MmUwXHU4MmQ1XHU4MzFjXHU4MzUxXHU4MzViXHU4MzVjXHU4MzA4XHU4MzkyXHU4''@;'; put 'put ''MzNjXHU4MzM0XHU4MzMxXHU4MzliXHU4MzVlXHU4MzJmXHU4MzRmXHU4MzQ3XHU4MzQzXHU4MzVmXHU4MzQwXHU4MzE3XHU4MzYwXHU4MzJkXHU4MzNhXHU4MzMzXHU4MzY2XHU4MzY1XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjIwXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjBdW21d''@;'; put 'put ''LmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyMF1bbV1dPTU2MzIwK20sUls1NjMyMCttXT14WzIyMF1bbV0pO2Zvcih4WzIyMV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODM2OFx1ODMxYlx1ODM2OVx1ODM2Y1x1ODM2YVx1ODM2ZFx1ODM2ZVx1ODNiMFx1ODM3OFx1ODNiM1x1ODNiNFx1ODNhMFx1ODNhYVx1ODM5M1x1ODM5Y1x1ODM4NVx1ODM3Y1x1ODNiNlx1ODNhOVx1''@;'; put 'put ''ODM3ZFx1ODNiOFx1ODM3Ylx1ODM5OFx1ODM5ZVx1ODNhOFx1ODNiYVx1ODNiY1x1ODNjMVx1ODQwMVx1ODNlNVx1ODNkOFx1NTgwN1x1ODQxOFx1ODQwYlx1ODNkZFx1ODNmZFx1ODNkNlx1ODQxY1x1ODQzOFx1ODQxMVx1ODQwNlx1ODNkNFx1ODNkZlx1ODQwZlx1ODQwM1x1ODNmOFx1ODNm''@;'; put 'put ''OVx1ODNlYVx1ODNjNVx1ODNjMFx1ODQyNlx1ODNmMFx1ODNlMVx1ODQ1Y1x1ODQ1MVx1ODQ1YVx1ODQ1OVx1ODQ3M1x1ODQ4N1x1ODQ4OFx1ODQ3YVx1ODQ4OVx1ODQ3OFx1ODQzY1x1ODQ0Nlx1ODQ2OVx1ODQ3Nlx1ODQ4Y1x1ODQ4ZVx1ODQzMVx1ODQ2ZFx1ODRjMVx1ODRjZFx1ODRkMFx1''@;'; put 'put ''ODRlNlx1ODRiZFx1ODRkM1x1ODRjYVx1ODRiZlx1ODRiYVx1ODRlMFx1ODRhMVx1ODRiOVx1ODRiNFx1ODQ5N1x1ODRlNVx1ODRlM1x1ODUwY1x1NzUwZFx1ODUzOFx1ODRmMFx1ODUzOVx1ODUxZlx1ODUzYVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyMV0ubGVuZ3RoOysrbSk2NTUz''@;'; put 'put ''MyE9PXhbMjIxXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjFdW21dXT01NjU3NittLFJbNTY1NzYrbV09eFsyMjFdW21dKTtmb3IoeFsyMjJdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg1NTZcdTg1M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdc''@;'; put 'put ''dTg1OGZcdTg1NzlcdTg1YWVcdTg1OWNcdTg1ODVcdTg1YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZcdTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVj''@;'; put 'put ''MjVcdTVjMmNcdTVjMzRcdTYyNGNcdTYyNmFcdTYyOWZcdTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYyZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNc''@;'; put 'put ''dTYzZjJcdTYzZjhcdTYzZTBcdTYzZmZcdTYzYzRcdTYzZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFcdTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTZcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjJdLmxl''@;'; put 'put ''bmd0aDsrK20pNjU1MzMhPT14WzIyMl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjIyXVttXV09NTY4MzIrbSxSWzU2ODMyK21dPXhbMjIyXVttXSk7Zm9yKHhbMjIzXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDdhXHU2NGI3XHU2NGI4XHU2NDk5XHU2NGJhXHU2NGMwXHU2NGQwXHU2NGQ3XHU2NGU0XHU2NGUyXHU2NTA5XHU2NTI1XHU2NTJlXHU1ZjBiXHU1ZmQy''@;'; put 'put ''XHU3NTE5XHU1ZjExXHU1MzVmXHU1M2YxXHU1M2ZkXHU1M2U5XHU1M2U4XHU1M2ZiXHU1NDEyXHU1NDE2XHU1NDA2XHU1NDRiXHU1NDUyXHU1NDUzXHU1NDU0XHU1NDU2XHU1NDQzXHU1NDIxXHU1NDU3XHU1NDU5XHU1NDIzXHU1NDMyXHU1NDgyXHU1NDk0XHU1NDc3XHU1NDcxXHU1NDY0XHU1''@;'; put 'put ''NDlhXHU1NDliXHU1NDg0XHU1NDc2XHU1NDY2XHU1NDlkXHU1NGQwXHU1NGFkXHU1NGMyXHU1NGI0XHU1NGQyXHU1NGE3XHU1NGE2XHU1NGQzXHU1NGQ0XHU1NDcyXHU1NGEzXHU1NGQ1XHU1NGJiXHU1NGJmXHU1NGNjXHU1NGQ5XHU1NGRhXHU1NGRjXHU1NGE5XHU1NGFhXHU1NGE0XHU1NGRk''@;'; put 'put ''XHU1NGNmXHU1NGRlXHU1NTFiXHU1NGU3XHU1NTIwXHU1NGZkXHU1NTE0XHU1NGYzXHU1NTIyXHU1NTIzXHU1NTBmXHU1NTExXHU1NTI3XHU1NTJhXHU1NTY3XHU1NThmXHU1NWI1XHU1NTQ5XHU1NTZkXHU1NTQxXHU1NTU1XHU1NTNmXHU1NTUwXHU1NTNjXHVmZmZkIi5zcGxpdCgiIiksbT0w''@;'; put 'put ''O20hPXhbMjIzXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjNdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyM11bbV1dPTU3MDg4K20sUls1NzA4OCttXT14WzIyM11bbV0pO2Zvcih4WzIyNF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NTUzN1x1NTU1Nlx1NTU3NVx1NTU3Nlx1NTU3N1x1NTUzM1x1NTUzMFx1NTU1Y1x1NTU4Ylx1NTVkMlx1NTU4M1x1NTViMVx1NTVi''@;'; put 'put ''OVx1NTU4OFx1NTU4MVx1NTU5Zlx1NTU3ZVx1NTVkNlx1NTU5MVx1NTU3Ylx1NTVkZlx1NTViZFx1NTViZVx1NTU5NFx1NTU5OVx1NTVlYVx1NTVmN1x1NTVjOVx1NTYxZlx1NTVkMVx1NTVlYlx1NTVlY1x1NTVkNFx1NTVlNlx1NTVkZFx1NTVjNFx1NTVlZlx1NTVlNVx1NTVmMlx1NTVmM1x1''@;'; put 'put ''NTVjY1x1NTVjZFx1NTVlOFx1NTVmNVx1NTVlNFx1OGY5NFx1NTYxZVx1NTYwOFx1NTYwY1x1NTYwMVx1NTYyNFx1NTYyM1x1NTVmZVx1NTYwMFx1NTYyN1x1NTYyZFx1NTY1OFx1NTYzOVx1NTY1N1x1NTYyY1x1NTY0ZFx1NTY2Mlx1NTY1OVx1NTY1Y1x1NTY0Y1x1NTY1NFx1NTY4Nlx1NTY2''@;'; put 'put ''NFx1NTY3MVx1NTY2Ylx1NTY3Ylx1NTY3Y1x1NTY4NVx1NTY5M1x1NTZhZlx1NTZkNFx1NTZkN1x1NTZkZFx1NTZlMVx1NTZmNVx1NTZlYlx1NTZmOVx1NTZmZlx1NTcwNFx1NTcwYVx1NTcwOVx1NTcxY1x1NWUwZlx1NWUxOVx1NWUxNFx1NWUxMVx1NWUzMVx1NWUzYlx1NWUzY1x1ZmZmZCIu''@;'; put 'put ''c3BsaXQoIiIpLG09MDttIT14WzIyNF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI0XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjRdW21dXT01NzM0NCttLFJbNTczNDQrbV09eFsyMjRdW21dKTtmb3IoeFsyMjVdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVj''@;'; put 'put ''OTZcdTVjODhcdTVjOThcdTVjOTlcdTVjOTFcdTVjOWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFcdTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVc''@;'; put 'put ''dTVkMDZcdTVkMWJcdTVkNThcdTVkM2VcdTVkMzRcdTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVkNGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVm''@;'; put 'put ''OTVcdTVmOTlcdTVmOWNcdTVmYThcdTVmYWRcdTVmYjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdcdTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNc''@;'; put 'put ''dTcyZmFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjVdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyNV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI1XVttXV09NTc2MDArbSxSWzU3NjAwK21dPXhbMjI1XVttXSk7Zm9yKHhbMjI2XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3MmZiXHU3MzE3XHU3MzEzXHU3MzIxXHU3MzBhXHU3MzFlXHU3MzFkXHU3MzE1XHU3''@;'; put 'put ''MzIyXHU3MzM5XHU3MzI1XHU3MzJjXHU3MzM4XHU3MzMxXHU3MzUwXHU3MzRkXHU3MzU3XHU3MzYwXHU3MzZjXHU3MzZmXHU3MzdlXHU4MjFiXHU1OTI1XHU5OGU3XHU1OTI0XHU1OTAyXHU5OTYzXHU5OTY3XHU5OTY4XHU5OTY5XHU5OTZhXHU5OTZiXHU5OTZjXHU5OTc0XHU5OTc3XHU5OTdk''@;'; put 'put ''XHU5OTgwXHU5OTg0XHU5OTg3XHU5OThhXHU5OThkXHU5OTkwXHU5OTkxXHU5OTkzXHU5OTk0XHU5OTk1XHU1ZTgwXHU1ZTkxXHU1ZThiXHU1ZTk2XHU1ZWE1XHU1ZWEwXHU1ZWI5XHU1ZWI1XHU1ZWJlXHU1ZWIzXHU4ZDUzXHU1ZWQyXHU1ZWQxXHU1ZWRiXHU1ZWU4XHU1ZWVhXHU4MWJhXHU1''@;'; put 'put ''ZmM0XHU1ZmM5XHU1ZmQ2XHU1ZmNmXHU2MDAzXHU1ZmVlXHU2MDA0XHU1ZmUxXHU1ZmU0XHU1ZmZlXHU2MDA1XHU2MDA2XHU1ZmVhXHU1ZmVkXHU1ZmY4XHU2MDE5XHU2MDM1XHU2MDI2XHU2MDFiXHU2MDBmXHU2MDBkXHU2MDI5XHU2MDJiXHU2MDBhXHU2MDNmXHU2MDIxXHU2MDc4XHU2MDc5''@;'; put 'put ''XHU2MDdiXHU2MDdhXHU2MDQyXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI2XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjZdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyNl1bbV1dPTU3ODU2K20sUls1Nzg1NittXT14WzIyNl1bbV0pO2Zvcih4WzIyN109Ilx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjA2YVx1NjA3ZFx1NjA5Nlx1NjA5YVx1NjBhZFx1NjA5ZFx1''@;'; put 'put ''NjA4M1x1NjA5Mlx1NjA4Y1x1NjA5Ylx1NjBlY1x1NjBiYlx1NjBiMVx1NjBkZFx1NjBkOFx1NjBjNlx1NjBkYVx1NjBiNFx1NjEyMFx1NjEyNlx1NjExNVx1NjEyM1x1NjBmNFx1NjEwMFx1NjEwZVx1NjEyYlx1NjE0YVx1NjE3NVx1NjFhY1x1NjE5NFx1NjFhN1x1NjFiN1x1NjFkNFx1NjFm''@;'; put 'put ''NVx1NWZkZFx1OTZiM1x1OTVlOVx1OTVlYlx1OTVmMVx1OTVmM1x1OTVmNVx1OTVmNlx1OTVmY1x1OTVmZVx1OTYwM1x1OTYwNFx1OTYwNlx1OTYwOFx1OTYwYVx1OTYwYlx1OTYwY1x1OTYwZFx1OTYwZlx1OTYxMlx1OTYxNVx1OTYxNlx1OTYxN1x1OTYxOVx1OTYxYVx1NGUyY1x1NzIzZlx1''@;'; put 'put ''NjIxNVx1NmMzNVx1NmM1NFx1NmM1Y1x1NmM0YVx1NmNhM1x1NmM4NVx1NmM5MFx1NmM5NFx1NmM4Y1x1NmM2OFx1NmM2OVx1NmM3NFx1NmM3Nlx1NmM4Nlx1NmNhOVx1NmNkMFx1NmNkNFx1NmNhZFx1NmNmN1x1NmNmOFx1NmNmMVx1NmNkN1x1NmNiMlx1NmNlMFx1NmNkNlx1NmNmYVx1NmNl''@;'; put 'put ''Ylx1NmNlZVx1NmNiMVx1NmNkM1x1NmNlZlx1NmNmZVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIyN10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjI3XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMjddW21dXT01ODExMittLFJbNTgxMTIrbV09eFsyMjddW21dKTtmb3IoeFsyMjhdPSJc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNc''@;'; put 'put ''dTZkNDhcdTZkMDdcdTZkMDRcdTZkMTlcdTZkMGVcdTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRcdTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZk''@;'; put 'put ''YzVcdTZkZGVcdTZlMGVcdTZkYmZcdTZkZTBcdTZlMTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZlMmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThc''@;'; put 'put ''dTZlZTBcdTZmMmRcdTZlZTJcdTZlYTVcdTZlYTdcdTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJcdTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZm''@;'; put 'put ''ODlcdTZmOGRcdTZmOGNcdTZmNzhcdTZmNzJcdTZmN2NcdTZmN2FcdTZmZDFcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMjhdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIyOF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjI4XVttXV09NTgzNjgrbSxSWzU4MzY4K21dPXhbMjI4XVttXSk7''@;'; put 'put ''Zm9yKHhbMjI5XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2ZmM5XHU2ZmE3''@;'; put 'put ''XHU2ZmI5XHU2ZmI2XHU2ZmMyXHU2ZmUxXHU2ZmVlXHU2ZmRlXHU2ZmUwXHU2ZmVmXHU3MDFhXHU3MDIzXHU3MDFiXHU3MDM5XHU3MDM1XHU3MDRmXHU3MDVlXHU1YjgwXHU1Yjg0XHU1Yjk1XHU1YjkzXHU1YmE1XHU1YmI4XHU3NTJmXHU5YTllXHU2NDM0XHU1YmU0XHU1YmVlXHU4OTMwXHU1''@;'; put 'put ''YmYwXHU4ZTQ3XHU4YjA3XHU4ZmI2XHU4ZmQzXHU4ZmQ1XHU4ZmU1XHU4ZmVlXHU4ZmU0XHU4ZmU5XHU4ZmU2XHU4ZmYzXHU4ZmU4XHU5MDA1XHU5MDA0XHU5MDBiXHU5MDI2XHU5MDExXHU5MDBkXHU5MDE2XHU5MDIxXHU5MDM1XHU5MDM2XHU5MDJkXHU5MDJmXHU5MDQ0XHU5MDUxXHU5MDUy''@;'; put 'put ''XHU5MDUwXHU5MDY4XHU5MDU4XHU5MDYyXHU5MDViXHU2NmI5XHU5MDc0XHU5MDdkXHU5MDgyXHU5MDg4XHU5MDgzXHU5MDhiXHU1ZjUwXHU1ZjU3XHU1ZjU2XHU1ZjU4XHU1YzNiXHU1NGFiXHU1YzUwXHU1YzU5XHU1YjcxXHU1YzYzXHU1YzY2XHU3ZmJjXHU1ZjJhXHU1ZjI5XHU1ZjJkXHU4''@;'; put 'put ''Mjc0XHU1ZjNjXHU5YjNiXHU1YzZlXHU1OTgxXHU1OTgzXHU1OThkXHU1OWE5XHU1OWFhXHU1OWEzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjI5XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMjldW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIyOV1bbV1dPTU4NjI0K20sUls1ODYyNCtt''@;'; put 'put ''XT14WzIyOV1bbV0pO2Zvcih4WzIzMF09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1NTk5N1x1NTljYVx1NTlhYlx1NTk5ZVx1NTlhNFx1NTlkMlx1NTliMlx1NTlhZlx1NTlkN1x1NTliZVx1NWEwNVx1NWEwNlx1NTlkZFx1NWEwOFx1NTllM1x1NTlkOFx1NTlmOVx1NWEwY1x1NWEwOVx1NWEzMlx1NWEzNFx1NWExMVx1NWEyM1x1NWExM1x1NWE0MFx1NWE2N1x1NWE0YVx1''@;'; put 'put ''NWE1NVx1NWEzY1x1NWE2Mlx1NWE3NVx1ODBlY1x1NWFhYVx1NWE5Ylx1NWE3N1x1NWE3YVx1NWFiZVx1NWFlYlx1NWFiMlx1NWFkMlx1NWFkNFx1NWFiOFx1NWFlMFx1NWFlM1x1NWFmMVx1NWFkNlx1NWFlNlx1NWFkOFx1NWFkY1x1NWIwOVx1NWIxN1x1NWIxNlx1NWIzMlx1NWIzN1x1NWI0''@;'; put 'put ''MFx1NWMxNVx1NWMxY1x1NWI1YVx1NWI2NVx1NWI3M1x1NWI1MVx1NWI1M1x1NWI2Mlx1OWE3NVx1OWE3N1x1OWE3OFx1OWE3YVx1OWE3Zlx1OWE3ZFx1OWE4MFx1OWE4MVx1OWE4NVx1OWE4OFx1OWE4YVx1OWE5MFx1OWE5Mlx1OWE5M1x1OWE5Nlx1OWE5OFx1OWE5Ylx1OWE5Y1x1OWE5ZFx1''@;'; put 'put ''OWE5Zlx1OWFhMFx1OWFhMlx1OWFhM1x1OWFhNVx1OWFhN1x1N2U5Zlx1N2VhMVx1N2VhM1x1N2VhNVx1N2VhOFx1N2VhOVx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzMF0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMwXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzBdW21dXT01ODg4''@;'; put 'put ''MCttLFJbNTg4ODArbV09eFsyMzBdW21dKTtmb3IoeFsyMzFdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdTdlYWRcdTdlYjBcdTdlYmVcdTdlYzBcdTdlYzFcdTdlYzJcdTdlYzlcdTdlY2JcdTdlY2NcdTdlZDBcdTdlZDRcdTdlZDdcdTdlZGJcdTdlZTBcdTdlZTFcdTdlZThcdTdlZWJcdTdlZWVcdTdlZWZcdTdlZjFcdTdlZjJcdTdmMGRcdTdlZjZcdTdlZmFcdTdlZmJc''@;'; put 'put ''dTdlZmVcdTdmMDFcdTdmMDJcdTdmMDNcdTdmMDdcdTdmMDhcdTdmMGJcdTdmMGNcdTdmMGZcdTdmMTFcdTdmMTJcdTdmMTdcdTdmMTlcdTdmMWNcdTdmMWJcdTdmMWZcdTdmMjFcdTdmMjJcdTdmMjNcdTdmMjRcdTdmMjVcdTdmMjZcdTdmMjdcdTdmMmFcdTdmMmJcdTdmMmNcdTdmMmRcdTdm''@;'; put 'put ''MmZcdTdmMzBcdTdmMzFcdTdmMzJcdTdmMzNcdTdmMzVcdTVlN2FcdTc1N2ZcdTVkZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVcdTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFc''@;'; put 'put ''dTczZTlcdTczZTdcdTczZGVcdTczYmFcdTczZjJcdTc0MGZcdTc0MmFcdTc0NWJcdTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0MmNcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzFdLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzMV1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hb''@;'; put 'put ''MjMxXVttXV09NTkxMzYrbSxSWzU5MTM2K21dPXhbMjMxXVttXSk7Zm9yKHhbMjMyXT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NDFiXHU3NDFhXHU3NDQxXHU3NDVjXHU3NDU3XHU3NDU1XHU3NDU5XHU3NDc3XHU3NDZkXHU3NDdlXHU3NDljXHU3NDhlXHU3NDgwXHU3NDgxXHU3NDg3XHU3NDhiXHU3NDllXHU3NGE4XHU3NGE5XHU3NDkwXHU3NGE3XHU3NGQyXHU3NGJh''@;'; put 'put ''XHU5N2VhXHU5N2ViXHU5N2VjXHU2NzRjXHU2NzUzXHU2NzVlXHU2NzQ4XHU2NzY5XHU2N2E1XHU2Nzg3XHU2NzZhXHU2NzczXHU2Nzk4XHU2N2E3XHU2Nzc1XHU2N2E4XHU2NzllXHU2N2FkXHU2NzhiXHU2Nzc3XHU2NzdjXHU2N2YwXHU2ODA5XHU2N2Q4XHU2ODBhXHU2N2U5XHU2N2IwXHU2''@;'; put 'put ''ODBjXHU2N2Q5XHU2N2I1XHU2N2RhXHU2N2IzXHU2N2RkXHU2ODAwXHU2N2MzXHU2N2I4XHU2N2UyXHU2ODBlXHU2N2MxXHU2N2ZkXHU2ODMyXHU2ODMzXHU2ODYwXHU2ODYxXHU2ODRlXHU2ODYyXHU2ODQ0XHU2ODY0XHU2ODgzXHU2ODFkXHU2ODU1XHU2ODY2XHU2ODQxXHU2ODY3XHU2ODQw''@;'; put 'put ''XHU2ODNlXHU2ODRhXHU2ODQ5XHU2ODI5XHU2OGI1XHU2ODhmXHU2ODc0XHU2ODc3XHU2ODkzXHU2ODZiXHU2OGMyXHU2OTZlXHU2OGZjXHU2OTFmXHU2OTIwXHU2OGY5XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjMyXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzJdW21dLmNoYXJDb2Rl''@;'; put 'put ''QXQoMCkmJihvZVt4WzIzMl1bbV1dPTU5MzkyK20sUls1OTM5MittXT14WzIzMl1bbV0pO2Zvcih4WzIzM109Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3OFx1NjkzNFx1NjljY1x1Njk4N1x1Njk4''@;'; put 'put ''OFx1NjljZVx1Njk4OVx1Njk2Nlx1Njk2M1x1Njk3OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1NmE2NVx1NjlmMlx1NmE0NFx1NmEzZVx1''@;'; put 'put ''NmFhMFx1NmE1MFx1NmE1Ylx1NmEzNVx1NmE4ZVx1NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4ZFx1NmI5YVx1NmI5Ylx1NmJhMVx1NmJh''@;'; put 'put ''YVx1OGY2Ylx1OGY2ZFx1OGY3MVx1OGY3Mlx1OGY3M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4Ylx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzM10ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjMz''@;'; put 'put ''XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzNdW21dXT01OTY0OCttLFJbNTk2NDgrbV09eFsyMzNdW21dKTtmb3IoeFsyMzRdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFcdThlY2VcdTYyMGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0''@;'; put 'put ''ZmZcdTc1MGZcdTc1MTFcdTc1MTNcdTY1MzRcdTY1ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcwODVcdTY2ZjdcdTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFc''@;'; put 'put ''dTY2NTdcdTY2NzdcdTY2ODRcdTY2OGNcdTY2YTdcdTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZcdThkM2JcdThkM2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5''@;'; put 'put ''Y2JcdTg5Y2NcdTg5Y2VcdTg5Y2ZcdTg5ZDBcdTg5ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcyOGJcdTcyOGRcdTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjBcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzRdLmxlbmd0aDsrK20p''@;'; put 'put ''NjU1MzMhPT14WzIzNF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM0XVttXV09NTk5MDQrbSxSWzU5OTA0K21dPXhbMjM0XVttXSk7Zm9yKHhbMjM1XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU2NDNmXHU2NGQ4XHU4MDA0XHU2YmVhXHU2YmYzXHU2YmZkXHU2YmY1XHU2YmY5XHU2YzA1XHU2YzA3XHU2YzA2XHU2YzBkXHU2YzE1XHU2YzE4XHU2YzE5XHU2YzFhXHU2''@;'; put 'put ''YzIxXHU2YzI5XHU2YzI0XHU2YzJhXHU2YzMyXHU2NTM1XHU2NTU1XHU2NTZiXHU3MjRkXHU3MjUyXHU3MjU2XHU3MjMwXHU4NjYyXHU1MjE2XHU4MDlmXHU4MDljXHU4MDkzXHU4MGJjXHU2NzBhXHU4MGJkXHU4MGIxXHU4MGFiXHU4MGFkXHU4MGI0XHU4MGI3XHU4MGU3XHU4MGU4XHU4MGU5''@;'; put 'put ''XHU4MGVhXHU4MGRiXHU4MGMyXHU4MGM0XHU4MGQ5XHU4MGNkXHU4MGQ3XHU2NzEwXHU4MGRkXHU4MGViXHU4MGYxXHU4MGY0XHU4MGVkXHU4MTBkXHU4MTBlXHU4MGYyXHU4MGZjXHU2NzE1XHU4MTEyXHU4YzVhXHU4MTM2XHU4MTFlXHU4MTJjXHU4MTE4XHU4MTMyXHU4MTQ4XHU4MTRjXHU4''@;'; put 'put ''MTUzXHU4MTc0XHU4MTU5XHU4MTVhXHU4MTcxXHU4MTYwXHU4MTY5XHU4MTdjXHU4MTdkXHU4MTZkXHU4MTY3XHU1ODRkXHU1YWI1XHU4MTg4XHU4MTgyXHU4MTkxXHU2ZWQ1XHU4MWEzXHU4MWFhXHU4MWNjXHU2NzI2XHU4MWNhXHU4MWJiXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM1''@;'; put 'put ''XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzVdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzNV1bbV1dPTYwMTYwK20sUls2MDE2MCttXT14WzIzNV1bbV0pO2Zvcih4WzIzNl09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ODFjMVx1ODFhNlx1NmIyNFx1NmIzN1x1NmIzOVx1NmI0M1x1NmI0Nlx1NmI1OVx1OThkMVx1OThkMlx1OThkM1x1OThkNVx1OThkOVx1OThkYVx1''@;'; put 'put ''NmJiM1x1NWY0MFx1NmJjMlx1ODlmM1x1NjU5MFx1OWY1MVx1NjU5M1x1NjViY1x1NjVjNlx1NjVjNFx1NjVjM1x1NjVjY1x1NjVjZVx1NjVkMlx1NjVkNlx1NzA4MFx1NzA5Y1x1NzA5Nlx1NzA5ZFx1NzBiYlx1NzBjMFx1NzBiN1x1NzBhYlx1NzBiMVx1NzBlOFx1NzBjYVx1NzExMFx1NzEx''@;'; put 'put ''M1x1NzExNlx1NzEyZlx1NzEzMVx1NzE3M1x1NzE1Y1x1NzE2OFx1NzE0NVx1NzE3Mlx1NzE0YVx1NzE3OFx1NzE3YVx1NzE5OFx1NzFiM1x1NzFiNVx1NzFhOFx1NzFhMFx1NzFlMFx1NzFkNFx1NzFlN1x1NzFmOVx1NzIxZFx1NzIyOFx1NzA2Y1x1NzExOFx1NzE2Nlx1NzFiOVx1NjIzZVx1''@;'; put 'put ''NjIzZFx1NjI0M1x1NjI0OFx1NjI0OVx1NzkzYlx1Nzk0MFx1Nzk0Nlx1Nzk0OVx1Nzk1Ylx1Nzk1Y1x1Nzk1M1x1Nzk1YVx1Nzk2Mlx1Nzk1N1x1Nzk2MFx1Nzk2Zlx1Nzk2N1x1Nzk3YVx1Nzk4NVx1Nzk4YVx1Nzk5YVx1NzlhN1x1NzliM1x1NWZkMVx1NWZkMFx1ZmZmZCIuc3BsaXQoIiIp''@;'; put 'put ''LG09MDttIT14WzIzNl0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM2XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzZdW21dXT02MDQxNittLFJbNjA0MTYrbV09eFsyMzZdW21dKTtmb3IoeFsyMzddPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTYwM2NcdTYwNWRcdTYwNWFcdTYwNjdcdTYwNDFcdTYwNTlcdTYwNjNcdTYwYWJcdTYxMDZcdTYxMGRcdTYxNWRcdTYxYTlc''@;'; put 'put ''dTYxOWRcdTYxY2JcdTYxZDFcdTYyMDZcdTgwODBcdTgwN2ZcdTZjOTNcdTZjZjZcdTZkZmNcdTc3ZjZcdTc3ZjhcdTc4MDBcdTc4MDlcdTc4MTdcdTc4MThcdTc4MTFcdTY1YWJcdTc4MmRcdTc4MWNcdTc4MWRcdTc4MzlcdTc4M2FcdTc4M2JcdTc4MWZcdTc4M2NcdTc4MjVcdTc4MmNcdTc4''@;'; put 'put ''MjNcdTc4MjlcdTc4NGVcdTc4NmRcdTc4NTZcdTc4NTdcdTc4MjZcdTc4NTBcdTc4NDdcdTc4NGNcdTc4NmFcdTc4OWJcdTc4OTNcdTc4OWFcdTc4ODdcdTc4OWNcdTc4YTFcdTc4YTNcdTc4YjJcdTc4YjlcdTc4YTVcdTc4ZDRcdTc4ZDlcdTc4YzlcdTc4ZWNcdTc4ZjJcdTc5MDVcdTc4ZjRc''@;'; put 'put ''dTc5MTNcdTc5MjRcdTc5MWVcdTc5MzRcdTlmOWJcdTllZjlcdTllZmJcdTllZmNcdTc2ZjFcdTc3MDRcdTc3MGRcdTc2ZjlcdTc3MDdcdTc3MDhcdTc3MWFcdTc3MjJcdTc3MTlcdTc3MmRcdTc3MjZcdTc3MzVcdTc3MzhcdTc3NTBcdTc3NTFcdTc3NDdcdTc3NDNcdTc3NWFcdTc3NjhcdWZm''@;'; put 'put ''ZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyMzddLmxlbmd0aDsrK20pNjU1MzMhPT14WzIzN11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjM3XVttXV09NjA2NzIrbSxSWzYwNjcyK21dPXhbMjM3XVttXSk7Zm9yKHhbMjM4XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NzYyXHU3NzY1XHU3NzdmXHU3NzhkXHU3NzdkXHU3NzgwXHU3NzhjXHU3NzkxXHU3NzlmXHU3N2Ew''@;'; put 'put ''XHU3N2IwXHU3N2I1XHU3N2JkXHU3NTNhXHU3NTQwXHU3NTRlXHU3NTRiXHU3NTQ4XHU3NTViXHU3NTcyXHU3NTc5XHU3NTgzXHU3ZjU4XHU3ZjYxXHU3ZjVmXHU4YTQ4XHU3ZjY4XHU3Zjc0XHU3ZjcxXHU3Zjc5XHU3ZjgxXHU3ZjdlXHU3NmNkXHU3NmU1XHU4ODMyXHU5NDg1XHU5NDg2XHU5''@;'; put 'put ''NDg3XHU5NDhiXHU5NDhhXHU5NDhjXHU5NDhkXHU5NDhmXHU5NDkwXHU5NDk0XHU5NDk3XHU5NDk1XHU5NDlhXHU5NDliXHU5NDljXHU5NGEzXHU5NGE0XHU5NGFiXHU5NGFhXHU5NGFkXHU5NGFjXHU5NGFmXHU5NGIwXHU5NGIyXHU5NGI0XHU5NGI2XHU5NGI3XHU5NGI4XHU5NGI5XHU5NGJh''@;'; put 'put ''XHU5NGJjXHU5NGJkXHU5NGJmXHU5NGM0XHU5NGM4XHU5NGM5XHU5NGNhXHU5NGNiXHU5NGNjXHU5NGNkXHU5NGNlXHU5NGQwXHU5NGQxXHU5NGQyXHU5NGQ1XHU5NGQ2XHU5NGQ3XHU5NGQ5XHU5NGQ4XHU5NGRiXHU5NGRlXHU5NGRmXHU5NGUwXHU5NGUyXHU5NGU0XHU5NGU1XHU5NGU3XHU5''@;'; put 'put ''NGU4XHU5NGVhXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjM4XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyMzhdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzIzOF1bbV1dPTYwOTI4K20sUls2MDkyOCttXT14WzIzOF1bbV0pO2Zvcih4WzIzOV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTRlOVx1OTRlYlx1OTRlZVx1OTRlZlx1OTRmM1x1OTRmNFx1OTRmNVx1OTRm''@;'; put 'put ''N1x1OTRmOVx1OTRmY1x1OTRmZFx1OTRmZlx1OTUwM1x1OTUwMlx1OTUwNlx1OTUwN1x1OTUwOVx1OTUwYVx1OTUwZFx1OTUwZVx1OTUwZlx1OTUxMlx1OTUxM1x1OTUxNFx1OTUxNVx1OTUxNlx1OTUxOFx1OTUxYlx1OTUxZFx1OTUxZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1''@;'; put 'put ''OTUyY1x1OTUzMVx1OTUzMlx1OTUzNFx1OTUzNlx1OTUzN1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1OTU1NFx1OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1''@;'; put 'put ''ZVx1OTU1Zlx1OTU1ZFx1OTU2MVx1OTU2Mlx1OTU2NFx1OTU2NVx1OTU2Nlx1OTU2N1x1OTU2OFx1OTU2OVx1OTU2YVx1OTU2Ylx1OTU2Y1x1OTU2Zlx1OTU3MVx1OTU3Mlx1OTU3M1x1OTUzYVx1NzdlN1x1NzdlY1x1OTZjOVx1NzlkNVx1NzllZFx1NzllM1x1NzllYlx1N2EwNlx1NWQ0N1x1''@;'; put 'put ''N2EwM1x1N2EwMlx1N2ExZVx1N2ExNFx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzIzOV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjM5XVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyMzldW21dXT02MTE4NCttLFJbNjExODQrbV09eFsyMzldW21dKTtmb3IoeFsyNDBdPSJcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTdhMzlcdTdhMzdcdTdhNTFcdTllY2ZcdTk5YTVcdTdh''@;'; put 'put ''NzBcdTc2ODhcdTc2OGVcdTc2OTNcdTc2OTlcdTc2YTRcdTc0ZGVcdTc0ZTBcdTc1MmNcdTllMjBcdTllMjJcdTllMjhcdTllMjlcdTllMmFcdTllMmJcdTllMmNcdTllMzJcdTllMzFcdTllMzZcdTllMzhcdTllMzdcdTllMzlcdTllM2FcdTllM2VcdTllNDFcdTllNDJcdTllNDRcdTllNDZc''@;'; put 'put ''dTllNDdcdTllNDhcdTllNDlcdTllNGJcdTllNGNcdTllNGVcdTllNTFcdTllNTVcdTllNTdcdTllNWFcdTllNWJcdTllNWNcdTllNWVcdTllNjNcdTllNjZcdTllNjdcdTllNjhcdTllNjlcdTllNmFcdTllNmJcdTllNmNcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1''@;'; put 'put ''YTBcdTc1OWRcdTc1YWNcdTc1YTNcdTc1YjNcdTc1YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNc''@;'; put 'put ''dTc2MTdcdTc2MGFcdTc2MjVcdTc2MThcdTc2MTVcdTc2MTlcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDBdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0MF1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQwXVttXV09NjE0NDArbSxSWzYxNDQwK21dPXhbMjQwXVttXSk7Zm9yKHhbMjQx''@;'; put 'put ''XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU3NjFiXHU3NjNjXHU3NjIyXHU3''@;'; put 'put ''NjIwXHU3NjQwXHU3NjJkXHU3NjMwXHU3NjNmXHU3NjM1XHU3NjQzXHU3NjNlXHU3NjMzXHU3NjRkXHU3NjVlXHU3NjU0XHU3NjVjXHU3NjU2XHU3NjZiXHU3NjZmXHU3ZmNhXHU3YWU2XHU3YTc4XHU3YTc5XHU3YTgwXHU3YTg2XHU3YTg4XHU3YTk1XHU3YWE2XHU3YWEwXHU3YWFjXHU3YWE4''@;'; put 'put ''XHU3YWFkXHU3YWIzXHU4ODY0XHU4ODY5XHU4ODcyXHU4ODdkXHU4ODdmXHU4ODgyXHU4OGEyXHU4OGM2XHU4OGI3XHU4OGJjXHU4OGM5XHU4OGUyXHU4OGNlXHU4OGUzXHU4OGU1XHU4OGYxXHU4OTFhXHU4OGZjXHU4OGU4XHU4OGZlXHU4OGYwXHU4OTIxXHU4OTE5XHU4OTEzXHU4OTFiXHU4''@;'; put 'put ''OTBhXHU4OTM0XHU4OTJiXHU4OTM2XHU4OTQxXHU4OTY2XHU4OTdiXHU3NThiXHU4MGU1XHU3NmIyXHU3NmI0XHU3N2RjXHU4MDEyXHU4MDE0XHU4MDE2XHU4MDFjXHU4MDIwXHU4MDIyXHU4MDI1XHU4MDI2XHU4MDI3XHU4MDI5XHU4MDI4XHU4MDMxXHU4MDBiXHU4MDM1XHU4MDQzXHU4MDQ2''@;'; put 'put ''XHU4MDRkXHU4MDUyXHU4MDY5XHU4MDcxXHU4OTgzXHU5ODc4XHU5ODgwXHU5ODgzXHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQxXS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDFdW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0MV1bbV1dPTYxNjk2K20sUls2MTY5NittXT14WzI0MV1b''@;'; put 'put ''bV0pO2Zvcih4WzI0Ml09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTg4OVx1''@;'; put 'put ''OTg4Y1x1OTg4ZFx1OTg4Zlx1OTg5NFx1OTg5YVx1OTg5Ylx1OTg5ZVx1OTg5Zlx1OThhMVx1OThhMlx1OThhNVx1OThhNlx1ODY0ZFx1ODY1NFx1ODY2Y1x1ODY2ZVx1ODY3Zlx1ODY3YVx1ODY3Y1x1ODY3Ylx1ODZhOFx1ODY4ZFx1ODY4Ylx1ODZhY1x1ODY5ZFx1ODZhN1x1ODZhM1x1ODZh''@;'; put 'put ''YVx1ODY5M1x1ODZhOVx1ODZiNlx1ODZjNFx1ODZiNVx1ODZjZVx1ODZiMFx1ODZiYVx1ODZiMVx1ODZhZlx1ODZjOVx1ODZjZlx1ODZiNFx1ODZlOVx1ODZmMVx1ODZmMlx1ODZlZFx1ODZmM1x1ODZkMFx1ODcxM1x1ODZkZVx1ODZmNFx1ODZkZlx1ODZkOFx1ODZkMVx1ODcwM1x1ODcwN1x1''@;'; put 'put ''ODZmOFx1ODcwOFx1ODcwYVx1ODcwZFx1ODcwOVx1ODcyM1x1ODczYlx1ODcxZVx1ODcyNVx1ODcyZVx1ODcxYVx1ODczZVx1ODc0OFx1ODczNFx1ODczMVx1ODcyOVx1ODczN1x1ODczZlx1ODc4Mlx1ODcyMlx1ODc3ZFx1ODc3ZVx1ODc3Ylx1ODc2MFx1ODc3MFx1ODc0Y1x1ODc2ZVx1ODc4''@;'; put 'put ''Ylx1ODc1M1x1ODc2M1x1ODc3Y1x1ODc2NFx1ODc1OVx1ODc2NVx1ODc5M1x1ODdhZlx1ODdhOFx1ODdkMlx1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0Ml0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQyXVttXS5jaGFyQ29kZUF0KDApJiYob2VbeFsyNDJdW21dXT02MTk1MittLFJbNjE5''@;'; put 'put ''NTIrbV09eFsyNDJdW21dKTtmb3IoeFsyNDNdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdTg3YzZcdTg3ODhcdTg3ODVcdTg3YWRcdTg3OTdcdTg3ODNcdTg3YWJcdTg3ZTVcdTg3YWNcdTg3YjVcdTg3YjNcdTg3Y2JcdTg3ZDNcdTg3YmRcdTg3ZDFcdTg3YzBcdTg3Y2FcdTg3ZGJcdTg3ZWFcdTg3ZTBcdTg3ZWVcdTg4MTZcdTg4MTNcdTg3ZmVcdTg4MGFcdTg4MWJcdTg4''@;'; put 'put ''MjFcdTg4MzlcdTg4M2NcdTdmMzZcdTdmNDJcdTdmNDRcdTdmNDVcdTgyMTBcdTdhZmFcdTdhZmRcdTdiMDhcdTdiMDNcdTdiMDRcdTdiMTVcdTdiMGFcdTdiMmJcdTdiMGZcdTdiNDdcdTdiMzhcdTdiMmFcdTdiMTlcdTdiMmVcdTdiMzFcdTdiMjBcdTdiMjVcdTdiMjRcdTdiMzNcdTdiM2Vc''@;'; put 'put ''dTdiMWVcdTdiNThcdTdiNWFcdTdiNDVcdTdiNzVcdTdiNGNcdTdiNWRcdTdiNjBcdTdiNmVcdTdiN2JcdTdiNjJcdTdiNzJcdTdiNzFcdTdiOTBcdTdiYTZcdTdiYTdcdTdiYjhcdTdiYWNcdTdiOWRcdTdiYThcdTdiODVcdTdiYWFcdTdiOWNcdTdiYTJcdTdiYWJcdTdiYjRcdTdiZDFcdTdi''@;'; put 'put ''YzFcdTdiY2NcdTdiZGRcdTdiZGFcdTdiZTVcdTdiZTZcdTdiZWFcdTdjMGNcdTdiZmVcdTdiZmNcdTdjMGZcdTdjMTZcdTdjMGJcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDNdLmxlbmd0aDsrK20pNjU1MzMhPT14WzI0M11bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQzXVttXV09''@;'; put 'put ''NjIyMDgrbSxSWzYyMjA4K21dPXhbMjQzXVttXSk7Zm9yKHhbMjQ0XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHU3YzFmXHU3YzJhXHU3YzI2XHU3YzM4XHU3YzQxXHU3YzQwXHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA0XHU4MWVjXHU4ODQ0XHU4MjIxXHU4MjIyXHU4MjIzXHU4MjJkXHU4MjJmXHU4MjI4XHU4MjJiXHU4MjM4XHU4MjNiXHU4MjMzXHU4MjM0XHU4MjNlXHU4''@;'; put 'put ''MjQ0XHU4MjQ5XHU4MjRiXHU4MjRmXHU4MjVhXHU4MjVmXHU4MjY4XHU4ODdlXHU4ODg1XHU4ODg4XHU4OGQ4XHU4OGRmXHU4OTVlXHU3ZjlkXHU3ZjlmXHU3ZmE3XHU3ZmFmXHU3ZmIwXHU3ZmIyXHU3YzdjXHU2NTQ5XHU3YzkxXHU3YzlkXHU3YzljXHU3YzllXHU3Y2EyXHU3Y2IyXHU3Y2Jj''@;'; put 'put ''XHU3Y2JkXHU3Y2MxXHU3Y2M3XHU3Y2NjXHU3Y2NkXHU3Y2M4XHU3Y2M1XHU3Y2Q3XHU3Y2U4XHU4MjZlXHU2NmE4XHU3ZmJmXHU3ZmNlXHU3ZmQ1XHU3ZmU1XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmVlXHU3ZmYzXHU3Y2Y4XHU3ZDc3XHU3ZGE2XHU3ZGFlXHU3ZTQ3XHU3ZTliXHU5ZWI4XHU5''@;'; put 'put ''ZWI0XHU4ZDczXHU4ZDg0XHU4ZDk0XHU4ZDkxXHU4ZGIxXHU4ZDY3XHU4ZDZkXHU4YzQ3XHU4YzQ5XHU5MTRhXHU5MTUwXHU5MTRlXHU5MTRmXHU5MTY0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ0XS5sZW5ndGg7KyttKTY1NTMzIT09eFsyNDRdW21dLmNoYXJDb2RlQXQoMCkmJihv''@;'; put 'put ''ZVt4WzI0NF1bbV1dPTYyNDY0K20sUls2MjQ2NCttXT14WzI0NF1bbV0pO2Zvcih4WzI0NV09Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1OTE2Mlx1OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5MVx1OTFhMlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1''@;'; put 'put ''OTFiNFx1OTFiYVx1OGM1NVx1OWU3ZVx1OGRiOFx1OGRlYlx1OGUwNVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1OGRkYlx1OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRm''@;'; put 'put ''Ylx1OGRlNFx1OGUwOVx1OGRmZFx1OGUxNFx1OGUxZFx1OGUxZlx1OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1MVx1OGU1Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1''@;'; put 'put ''OGU4NVx1OGU4Zlx1OGU5NFx1OGU5MFx1OGU5Y1x1OGU5ZVx1OGM3OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkY1x1ZmZmZCIuc3BsaXQoIiIpLG09MDttIT14WzI0NV0ubGVuZ3RoOysrbSk2NTUzMyE9PXhbMjQ1XVttXS5jaGFy''@;'; put 'put ''Q29kZUF0KDApJiYob2VbeFsyNDVdW21dXT02MjcyMCttLFJbNjI3MjArbV09eFsyNDVdW21dKTtmb3IoeFsyNDZdPSJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTg5ZTVcdTg5ZWJcdTg5ZWZcdThhM2VcdThiMjZcdTk3NTNcdTk2ZTlcdTk2ZjNcdTk2ZWZcdTk3MDZcdTk3MDFcdTk3MDhcdTk3MGZcdTk3MGVcdTk3MmFcdTk3MmRcdTk3MzBcdTk3M2VcdTlmODBcdTlmODNc''@;'; put 'put ''dTlmODVcdTlmODZcdTlmODdcdTlmODhcdTlmODlcdTlmOGFcdTlmOGNcdTllZmVcdTlmMGJcdTlmMGRcdTk2YjlcdTk2YmNcdTk2YmRcdTk2Y2VcdTk2ZDJcdTc3YmZcdTk2ZTBcdTkyOGVcdTkyYWVcdTkyYzhcdTkzM2VcdTkzNmFcdTkzY2FcdTkzOGZcdTk0M2VcdTk0NmJcdTljN2ZcdTlj''@;'; put 'put ''ODJcdTljODVcdTljODZcdTljODdcdTljODhcdTdhMjNcdTljOGJcdTljOGVcdTljOTBcdTljOTFcdTljOTJcdTljOTRcdTljOTVcdTljOWFcdTljOWJcdTljOWVcdTljOWZcdTljYTBcdTljYTFcdTljYTJcdTljYTNcdTljYTVcdTljYTZcdTljYTdcdTljYThcdTljYTlcdTljYWJcdTljYWRc''@;'; put 'put ''dTljYWVcdTljYjBcdTljYjFcdTljYjJcdTljYjNcdTljYjRcdTljYjVcdTljYjZcdTljYjdcdTljYmFcdTljYmJcdTljYmNcdTljYmRcdTljYzRcdTljYzVcdTljYzZcdTljYzdcdTljY2FcdTljY2JcdWZmZmQiLnNwbGl0KCIiKSxtPTA7bSE9eFsyNDZdLmxlbmd0aDsrK20pNjU1MzMhPT14''@;'; put 'put ''WzI0Nl1bbV0uY2hhckNvZGVBdCgwKSYmKG9lW3hbMjQ2XVttXV09NjI5NzYrbSxSWzYyOTc2K21dPXhbMjQ2XVttXSk7Zm9yKHhbMjQ3XT0iXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHU5Y2NjXHU5Y2NkXHU5Y2NlXHU5Y2NmXHU5Y2QwXHU5Y2QzXHU5Y2Q0XHU5Y2Q1XHU5Y2Q3XHU5Y2Q4XHU5Y2Q5XHU5Y2RjXHU5Y2RkXHU5Y2RmXHU5Y2UyXHU5NzdjXHU5Nzg1XHU5Nzkx''@;'; put 'put ''XHU5NzkyXHU5Nzk0XHU5N2FmXHU5N2FiXHU5N2EzXHU5N2IyXHU5N2I0XHU5YWIxXHU5YWIwXHU5YWI3XHU5ZTU4XHU5YWI2XHU5YWJhXHU5YWJjXHU5YWMxXHU5YWMwXHU5YWM1XHU5YWMyXHU5YWNiXHU5YWNjXHU5YWQxXHU5YjQ1XHU5YjQzXHU5YjQ3XHU5YjQ5XHU5YjQ4XHU5YjRkXHU5''@;'; put 'put ''YjUxXHU5OGU4XHU5OTBkXHU5OTJlXHU5OTU1XHU5OTU0XHU5YWRmXHU5YWUxXHU5YWU2XHU5YWVmXHU5YWViXHU5YWZiXHU5YWVkXHU5YWY5XHU5YjA4XHU5YjBmXHU5YjEzXHU5YjFmXHU5YjIzXHU5ZWJkXHU5ZWJlXHU3ZTNiXHU5ZTgyXHU5ZTg3XHU5ZTg4XHU5ZThiXHU5ZTkyXHU5M2Q2''@;'; put 'put ''XHU5ZTlkXHU5ZTlmXHU5ZWRiXHU5ZWRjXHU5ZWRkXHU5ZWUwXHU5ZWRmXHU5ZWUyXHU5ZWU5XHU5ZWU3XHU5ZWU1XHU5ZWVhXHU5ZWVmXHU5ZjIyXHU5ZjJjXHU5ZjJmXHU5ZjM5XHU5ZjM3XHU5ZjNkXHU5ZjNlXHU5ZjQ0XHVmZmZkIi5zcGxpdCgiIiksbT0wO20hPXhbMjQ3XS5sZW5ndGg7''@;'; put 'put ''KyttKTY1NTMzIT09eFsyNDddW21dLmNoYXJDb2RlQXQoMCkmJihvZVt4WzI0N11bbV1dPTYzMjMyK20sUls2MzIzMittXT14WzI0N11bbV0pO3JldHVybntlbmM6b2UsZGVjOlJ9fSgpLE1lWzEwMDI5XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZc''@;'; put 'put ''eDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWpr''@;'; put 'put ''bG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHUwMTAwXHUwMTAxXHhjOVx1MDEwNFx4ZDZceGRjXHhlMVx1MDEwNVx1MDEwY1x4ZTRcdTAxMGRcdTAxMDZcdTAxMDdceGU5XHUwMTc5XHUwMTdhXHUwMTBlXHhlZFx1MDEwZlx1MDExMlx1MDExM1x1MDExNlx4ZjNcdTAxMTdceGY0XHhmNlx4''@;'; put 'put ''ZjVceGZhXHUwMTFhXHUwMTFiXHhmY1x1MjAyMFx4YjBcdTAxMThceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJcdTAxMTlceGE4XHUyMjYwXHUwMTIzXHUwMTJlXHUwMTJmXHUwMTJhXHUyMjY0XHUyMjY1XHUwMTJiXHUwMTM2XHUyMjAyXHUyMjExXHUwMTQyXHUwMTNiXHUw''@;'; put 'put ''MTNjXHUwMTNkXHUwMTNlXHUwMTM5XHUwMTNhXHUwMTQ1XHUwMTQ2XHUwMTQzXHhhY1x1MjIxYVx1MDE0NFx1MDE0N1x1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx1MDE0OFx1MDE1MFx4ZDVcdTAxNTFcdTAxNGNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNh''@;'; put 'put ''XHUwMTRkXHUwMTU0XHUwMTU1XHUwMTU4XHUyMDM5XHUyMDNhXHUwMTU5XHUwMTU2XHUwMTU3XHUwMTYwXHUyMDFhXHUyMDFlXHUwMTYxXHUwMTVhXHUwMTViXHhjMVx1MDE2NFx1MDE2NVx4Y2RcdTAxN2RcdTAxN2VcdTAxNmFceGQzXHhkNFx1MDE2Ylx1MDE2ZVx4ZGFcdTAxNmZcdTAxNzBc''@;'; put 'put ''dTAxNzFcdTAxNzJcdTAxNzNceGRkXHhmZFx1MDEzN1x1MDE3Ylx1MDE0MVx1MDE3Y1x1MDEyMlx1MDJjNyIsb2U9W10seD17fSxtPTA7MjU2IT1tOysrbSk2NTUzMyE9PVIuY2hhckNvZGVBdChtKSYmKHhbUi5jaGFyQXQobSldPW0pLG9lW21dPVIuY2hhckF0KG0pO3JldHVybntlbmM6eCxk''@;'; put 'put ''ZWM6b2V9fSgpLE1lWzEwMDc5XT1mdW5jdGlvbigpe2Zvcih2YXIgUj0iXDBceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHgxNFx4MTVceDE2XHgxN1x4MThceDE5XHgxYVx4MWJceDFjXHgxZFx4MWVceDFmICFcIiMkJSYn''@;'; put 'put ''KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJc''@;'; put 'put ''eGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x4ZGRceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIy''@;'; put 'put ''MTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVj''@;'; put 'put ''YVx4ZmZcdTAxNzhcdTIwNDRceGE0XHhkMFx4ZjBceGRlXHhmZVx4ZmRceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1''@;'; put 'put ''MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzciLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVsxMDA4MV09ZnVuY3Rpb24oKXtmb3Io''@;'; put 'put ''dmFyIFI9IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK''@;'; put 'put ''S0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2''@;'; put 'put ''XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEy''@;'; put 'put ''Nlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTAxMWVcdTAxMWZcdTAxMzBcdTAx''@;'; put 'put ''MzFcdTAxNWVcdTAxNWZcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2FceGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHVmZmZkXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJc''@;'; put 'put ''dTAyYzciLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0oKSxNZVsyODU5MV09ZnVuY3Rpb24oKXtmb3IodmFyIFI9IlwwXHgwMVx4MDJceDAz''@;'; put 'put ''XHgwNFx4MDVceDA2XHgwN1xiXHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e''@;'; put 'put ''X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZc''@;'; put 'put ''eGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4''@;'; put 'put ''YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhm''@;'; put 'put ''Mlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYiLG9lPVtdLHg9e30sbT0wOzI1NiE9bTsrK20pNjU1MzMhPT1SLmNoYXJDb2RlQXQobSkmJih4W1IuY2hhckF0KG0pXT1tKSxvZVttXT1SLmNoYXJBdChtKTtyZXR1cm57ZW5jOngsZGVjOm9lfX0o''@;'; put 'put ''KSxRZS5leHBvcnRzJiZ0eXBlb2YgRE9fTk9UX0VYUE9SVF9DT0RFUEFHRT4idSImJihRZS5leHBvcnRzPU1lKSxmdW5jdGlvbihSLG9lKXsidXNlIHN0cmljdCI7aWYodHlwZW9mIE1lPiJ1Iil7dmFyIHg9TWU7UWUuZXhwb3J0cyYmdHlwZW9mIERPX05PVF9FWFBPUlRfQ09ERVBBR0U+InUi''@;'; put 'put ''P1FlLmV4cG9ydHM9b2UoeCk6Ui5jcHRhYmxlPW9lKHgpfWVsc2UgTWU9b2UoTWUpfSh0aGlzLGZ1bmN0aW9uKFIpeyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9ezEyMDA6InV0ZjE2bGUiLDEyMDE6InV0ZjE2YmUiLDEyZTM6InV0ZjMybGUiLDEyMDAxOiJ1dGYzMmJlIiwxNjk2OToidXRmNjRsZSIs''@;'; put 'put ''MjAxMjc6ImFzY2lpIiw2NWUzOiJ1dGY3Iiw2NTAwMToidXRmOCJ9LHg9Wzg3NCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDFlNF0sbT1bOTMyLDkzNiw5NDksOTUwXSxzZT1bNjUwMDFdLE09e30sTz17fSxJPXt9LGo9e30sRz1mdW5jdGlvbihrKXtyZXR1cm4gU3RyaW5n''@;'; put 'put ''LmZyb21DaGFyQ29kZShrKX0sRD1mdW5jdGlvbihrKXtyZXR1cm4gay5jaGFyQ29kZUF0KDApfSxUPXR5cGVvZiBCdWZmZXI8InUiLEU9ZnVuY3Rpb24oKXt9O2lmKFQpe3ZhciB6PSFCdWZmZXIuZnJvbTtpZigheil0cnl7QnVmZmVyLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaHt6PSEwfUU9''@;'; put 'put ''ej9mdW5jdGlvbihDLGspe3JldHVybiBrP25ldyBCdWZmZXIoQyxrKTpuZXcgQnVmZmVyKEMpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlciksQnVmZmVyLmFsbG9jVW5zYWZlfHwoQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKEMpe3JldHVybiBuZXcgQnVmZmVyKEMpfSk7dmFyIE49MTAy''@;'; put 'put ''NCxCPUJ1ZmZlci5hbGxvY1Vuc2FmZShOKSxZPWZ1bmN0aW9uKGspe3ZhciBfPWZ1bmN0aW9uKGspe2Zvcih2YXIgXz1CdWZmZXIuYWxsb2NVbnNhZmUoNjU1MzYpLHA9MDtwPDY1NTM2OysrcClfW3BdPTA7Zm9yKHZhciB3PU9iamVjdC5rZXlzKGspLEs9dy5sZW5ndGgsdGU9MCxjZT13W3Rl''@;'; put 'put ''XTt0ZTxLOysrdGUpKGNlPXdbdGVdKSYmKF9bY2UuY2hhckNvZGVBdCgwKV09a1tjZV0pO3JldHVybiBffShSW2tdLmVuYyk7cmV0dXJuIGZ1bmN0aW9uKHcsSyl7dmFyIGNlLHRlPXcubGVuZ3RoLGhlPTAsU2U9MCxMZT0wLEhlPTA7aWYoInN0cmluZyI9PXR5cGVvZiB3KWZvcihjZT1CdWZm''@;'; put 'put ''ZXIuYWxsb2NVbnNhZmUodGUpLGhlPTA7aGU8dGU7KytoZSljZVtoZV09X1t3LmNoYXJDb2RlQXQoaGUpXTtlbHNlIGlmKEJ1ZmZlci5pc0J1ZmZlcih3KSl7Zm9yKGNlPUJ1ZmZlci5hbGxvY1Vuc2FmZSgyKnRlKSxTZT0wLGhlPTA7aGU8dGU7KytoZSkoTGU9d1toZV0pPDEyOD9jZVtTZSsr''@;'; put 'put ''XT1fW0xlXTpMZTwyMjQ/KGNlW1NlKytdPV9bKCgzMSZMZSk8PDYpKyg2MyZ3W2hlKzFdKV0sKytoZSk6TGU8MjQwPyhjZVtTZSsrXT1fWygoMTUmTGUpPDwxMikrKCg2MyZ3W2hlKzFdKTw8NikrKDYzJndbaGUrMl0pXSxoZSs9Mik6KEhlPSgoNyZMZSk8PDE4KSsoKDYzJndbaGUrMV0pPDwx''@;'; put 'put ''MikrKCg2MyZ3W2hlKzJdKTw8NikrKDYzJndbaGUrM10pLGhlKz0zLEhlPDY1NTM2P2NlW1NlKytdPV9bSGVdOihjZVtTZSsrXT1fWzU1Mjk2KygoSGUtPTY1NTM2KT4+MTAmMTAyMyldLGNlW1NlKytdPV9bNTYzMjArKDEwMjMmSGUpXSkpO2NlPWNlLnNsaWNlKDAsU2UpfWVsc2UgZm9yKGNl''@;'; put 'put ''PUJ1ZmZlci5hbGxvY1Vuc2FmZSh0ZSksaGU9MDtoZTx0ZTsrK2hlKWNlW2hlXT1fW3dbaGVdLmNoYXJDb2RlQXQoMCldO3JldHVybiBLJiYiYnVmIiE9PUs/ImFyciIhPT1LP2NlLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKGNlKTpjZX19LFU9ZnVuY3Rpb24oayl7dmFyIF89''@;'; put 'put ''UltrXS5kZWMscD1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSx3PTAsSz0iIjtmb3Iodz0wO3c8Xy5sZW5ndGg7Kyt3KWlmKEs9X1t3XSl7dmFyIHRlPUsuY2hhckNvZGVBdCgwKTtwWzIqd109MjU1JnRlLHBbMip3KzFdPXRlPj44fXJldHVybiBmdW5jdGlvbihoZSl7dmFyIFNlPWhlLmxl''@;'; put 'put ''bmd0aCxMZT0wLEhlPTA7aWYoMipTZT5OJiYoTj0yKlNlLEI9QnVmZmVyLmFsbG9jVW5zYWZlKE4pKSxCdWZmZXIuaXNCdWZmZXIoaGUpKWZvcihMZT0wO0xlPFNlO0xlKyspQlsyKkxlXT1wW0hlPTIqaGVbTGVdXSxCWzIqTGUrMV09cFtIZSsxXTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2Yg''@;'; put 'put ''aGUpZm9yKExlPTA7TGU8U2U7TGUrKylIZT0yKmhlLmNoYXJDb2RlQXQoTGUpLEJbMipMZV09cFtIZV0sQlsyKkxlKzFdPXBbSGUrMV07ZWxzZSBmb3IoTGU9MDtMZTxTZTtMZSsrKUJbMipMZV09cFtIZT0yKmhlW0xlXV0sQlsyKkxlKzFdPXBbSGUrMV07cmV0dXJuIEIuc2xpY2UoMCwyKlNl''@;'; put 'put ''KS50b1N0cmluZygidWNzMiIpfX0scT1mdW5jdGlvbihrKXtmb3IodmFyIF89UltrXS5lbmMscD1CdWZmZXIuYWxsb2NVbnNhZmUoMTMxMDcyKSx3PTA7dzwxMzEwNzI7Kyt3KXBbd109MDtmb3IodmFyIEs9T2JqZWN0LmtleXMoXyksdGU9MCxjZT1LW3RlXTt0ZTxLLmxlbmd0aDsrK3RlKWlm''@;'; put 'put ''KGNlPUtbdGVdKXt2YXIgaGU9Y2UuY2hhckNvZGVBdCgwKTtwWzIqaGVdPTI1NSZfW2NlXSxwWzIqaGUrMV09X1tjZV0+Pjh9cmV0dXJuIGZ1bmN0aW9uKExlLEhlKXt2YXIgeGU9TGUubGVuZ3RoLERlPUJ1ZmZlci5hbGxvY1Vuc2FmZSgyKnhlKSxCZT0wLEdlPTAsVWU9MCxxZT0wLG90PTA7''@;'; put 'put ''aWYoInN0cmluZyI9PXR5cGVvZiBMZSl7Zm9yKEJlPXFlPTA7QmU8eGU7KytCZSlHZT0yKkxlLmNoYXJDb2RlQXQoQmUpLERlW3FlKytdPXBbR2UrMV18fHBbR2VdLHBbR2UrMV0+MCYmKERlW3FlKytdPXBbR2VdKTtEZT1EZS5zbGljZSgwLHFlKX1lbHNlIGlmKEJ1ZmZlci5pc0J1ZmZlcihM''@;'; put 'put ''ZSkpe2ZvcihCZT1xZT0wO0JlPHhlOysrQmUpKG90PUxlW0JlXSk8MTI4P0dlPW90Om90PDIyND8oR2U9KCgzMSZvdCk8PDYpKyg2MyZMZVtCZSsxXSksKytCZSk6b3Q8MjQwPyhHZT0oKDE1Jm90KTw8MTIpKygoNjMmTGVbQmUrMV0pPDw2KSsoNjMmTGVbQmUrMl0pLEJlKz0yKTooR2U9KCg3''@;'; put 'put ''Jm90KTw8MTgpKygoNjMmTGVbQmUrMV0pPDwxMikrKCg2MyZMZVtCZSsyXSk8PDYpKyg2MyZMZVtCZSszXSksQmUrPTMpLEdlPDY1NTM2PyhEZVtxZSsrXT1wWzErKEdlKj0yKV18fHBbR2VdLHBbR2UrMV0+MCYmKERlW3FlKytdPXBbR2VdKSk6KERlW3FlKytdPXBbMSsoR2U9MiooNTUyOTYr''@;'; put 'put ''KChVZT1HZS02NTUzNik+PjEwJjEwMjMpKSldfHxwW0dlXSxwW0dlKzFdPjAmJihEZVtxZSsrXT1wW0dlXSksRGVbcWUrK109cFsxKyhHZT0yKig1NjMyMCsoMTAyMyZVZSkpKV18fHBbR2VdLHBbR2UrMV0+MCYmKERlW3FlKytdPXBbR2VdKSk7RGU9RGUuc2xpY2UoMCxxZSl9ZWxzZSBmb3Io''@;'; put 'put ''QmU9cWU9MDtCZTx4ZTtCZSsrKUdlPTIqTGVbQmVdLmNoYXJDb2RlQXQoMCksRGVbcWUrK109cFtHZSsxXXx8cFtHZV0scFtHZSsxXT4wJiYoRGVbcWUrK109cFtHZV0pO3JldHVybiBIZSYmImJ1ZiIhPT1IZT8iYXJyIiE9PUhlP0RlLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxs''@;'; put 'put ''KERlKTpEZX19LEo9ZnVuY3Rpb24oayl7dmFyIEssXz1SW2tdLmRlYyxwPUJ1ZmZlci5hbGxvY1Vuc2FmZSgxMzEwNzIpLHc9MCx0ZT0wLGNlPTAsaGU9MDtmb3IoaGU9MDtoZTw2NTUzNjsrK2hlKXBbMipoZV09MjU1LHBbMipoZSsxXT0yNTM7Zm9yKHc9MDt3PF8ubGVuZ3RoOysrdykoSz1f''@;'; put 'put ''W3ddKSYmKHRlPUsuY2hhckNvZGVBdCgwKSxwW2NlPTIqd109MjU1JnRlLHBbY2UrMV09dGU+PjgpO3JldHVybiBmdW5jdGlvbihMZSl7dmFyIEhlPUxlLmxlbmd0aCx4ZT1CdWZmZXIuYWxsb2NVbnNhZmUoMipIZSksRGU9MCxCZT0wLEdlPTA7aWYoQnVmZmVyLmlzQnVmZmVyKExlKSlmb3Io''@;'; put 'put ''RGU9MDtEZTxIZTtEZSsrKTI1NT09PXBbQmU9MipMZVtEZV1dJiYyNTM9PT1wW0JlKzFdJiYoQmU9MiooKExlW0RlXTw8OCkrTGVbRGUrMV0pLCsrRGUpLHhlW0dlKytdPXBbQmVdLHhlW0dlKytdPXBbQmUrMV07ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIExlKWZvcihEZT0wO0RlPEhlO0Rl''@;'; put 'put ''KyspQmU9MipMZS5jaGFyQ29kZUF0KERlKSwyNTU9PT1wW0JlXSYmMjUzPT09cFtCZSsxXSYmKEJlPTIqKChMZS5jaGFyQ29kZUF0KERlKTw8OCkrTGUuY2hhckNvZGVBdChEZSsxKSksKytEZSkseGVbR2UrK109cFtCZV0seGVbR2UrK109cFtCZSsxXTtlbHNlIGZvcihEZT0wO0RlPEhlO0Rl''@;'; put 'put ''KyspMjU1PT09cFtCZT0yKkxlW0RlXV0mJjI1Mz09PXBbQmUrMV0mJihCZT0yKigoTGVbRGVdPDw4KStMZVtEZSsxXSksKytEZSkseGVbR2UrK109cFtCZV0seGVbR2UrK109cFtCZSsxXTtyZXR1cm4geGUuc2xpY2UoMCxHZSkudG9TdHJpbmcoInVjczIiKX19O01bNjUwMDFdPWZ1bmN0aW9u''@;'; put 'put ''IEMoayl7aWYoInN0cmluZyI9PXR5cGVvZiBrKXJldHVybiBDKGsuc3BsaXQoIiIpLm1hcChEKSk7dmFyIF89ay5sZW5ndGgscD0wLHc9MDs0Kl8+TiYmKE49NCpfLEI9QnVmZmVyLmFsbG9jVW5zYWZlKE4pKTt2YXIgSz0wO18+PTMmJjIzOT09a1swXSYmMTg3PT1rWzFdJiYxOTE9PWtbMl0m''@;'; put 'put ''JihLPTMpO2Zvcih2YXIgdGU9MSxjZT0wLGhlPTA7SzxfO0srPXRlKXRlPTEsKGhlPWtbS10pPDEyOD9wPWhlOmhlPDIyND8ocD02NCooMzEmaGUpKyg2MyZrW0srMV0pLHRlPTIpOmhlPDI0MD8ocD0oKDE1JmhlKTw8MTIpKzY0Kig2MyZrW0srMV0pKyg2MyZrW0srMl0pLHRlPTMpOihwPTI2''@;'; put 'put ''MjE0NCooNyZoZSkrKCg2MyZrW0srMV0pPDwxMikrNjQqKDYzJmtbSysyXSkrKDYzJmtbSyszXSksdGU9NCkscDw2NTUzNj8oQltjZSsrXT0yNTUmcCxCW2NlKytdPXA+PjgpOih3PTU1Mjk2KygocC09NjU1MzYpPj4xMCYxMDIzKSxwPTU2MzIwKygxMDIzJnApLEJbY2UrK109MjU1JncsQltj''@;'; put 'put ''ZSsrXT13Pj4+OCxCW2NlKytdPTI1NSZwLEJbY2UrK109cD4+PjgmMjU1KTtyZXR1cm4gQi5zbGljZSgwLGNlKS50b1N0cmluZygidWNzMiIpfSxPWzY1MDAxXT1mdW5jdGlvbihrLF8pe2lmKFQmJkJ1ZmZlci5pc0J1ZmZlcihrKSlyZXR1cm4gXyYmImJ1ZiIhPT1fPyJhcnIiIT09Xz9rLnRv''@;'; put 'put ''U3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKGspOms7dmFyIHA9ay5sZW5ndGgsdz0wLEs9MCx0ZT0wLGNlPSJzdHJpbmciPT10eXBlb2Ygazs0KnA+TiYmKE49NCpwLEI9QnVmZmVyLmFsbG9jVW5zYWZlKE4pKTtmb3IodmFyIGhlPTA7aGU8cDsrK2hlKSh3PWNlP2suY2hhckNvZGVB''@;'; put 'put ''dChoZSk6a1toZV0uY2hhckNvZGVBdCgwKSk8PTEyNz9CW3RlKytdPXc6dzw9MjA0Nz8oQlt0ZSsrXT0xOTIrKHc+PjYpLEJbdGUrK109MTI4Kyg2MyZ3KSk6dz49NTUyOTYmJnc8PTU3MzQzPyh3LT01NTI5NiwrK2hlLEs9KGNlP2suY2hhckNvZGVBdChoZSk6a1toZV0uY2hhckNvZGVBdCgw''@;'; put 'put ''KSktNTYzMjArKHc8PDEwKSxCW3RlKytdPTI0MCsoSz4+PjE4JjcpLEJbdGUrK109MTQ0KyhLPj4+MTImNjMpLEJbdGUrK109MTI4KyhLPj4+NiY2MyksQlt0ZSsrXT0xMjgrKDYzJkspKTooQlt0ZSsrXT0yMjQrKHc+PjEyKSxCW3RlKytdPTEyOCsodz4+NiY2MyksQlt0ZSsrXT0xMjgrKDYz''@;'; put 'put ''JncpKTtyZXR1cm4gXyYmImJ1ZiIhPT1fPyJhcnIiIT09Xz9CLnNsaWNlKDAsdGUpLnRvU3RyaW5nKCJiaW5hcnkiKTpbXS5zbGljZS5jYWxsKEIsMCx0ZSk6Qi5zbGljZSgwLHRlKX19dmFyIGVlPWZ1bmN0aW9uKCl7aWYoVCl7aWYoSVt4WzBdXSlyZXR1cm47dmFyIGs9MCxfPTA7Zm9yKGs9''@;'; put 'put ''MDtrPHgubGVuZ3RoOysraylSW189eFtrXV0mJihJW19dPVUoXyksaltfXT1ZKF8pKTtmb3Ioaz0wO2s8bS5sZW5ndGg7KytrKVJbXz1tW2tdXSYmKElbX109SihfKSxqW19dPXEoXykpO2ZvcihrPTA7azxzZS5sZW5ndGg7KytrKU1bXz1zZVtrXV0mJihJW19dPU1bX10pLE9bX10mJihqW19d''@;'; put 'put ''PU9bX10pfX0scmU9ZnVuY3Rpb24oQyxrKXtyZXR1cm4iIn0saWU9ZnVuY3Rpb24oayl7ZGVsZXRlIElba10sZGVsZXRlIGpba119LGxlPXtlbmNhY2hlOmVlLGRlY2FjaGU6ZnVuY3Rpb24oKXtpZihUKXtpZighSVt4WzBdXSlyZXR1cm47eC5mb3JFYWNoKGllKSxtLmZvckVhY2goaWUpLHNl''@;'; put 'put ''LmZvckVhY2goaWUpfWI9cmUsQT0wfSxzYmNzOngsZGJjczptfTtlZSgpO3ZhciBhZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsYj1yZSxBPTA7cmV0dXJuIFIudXRpbHM9e2RlY29kZTpmdW5jdGlvbiBDKGssXyl7''@;'; put 'put ''dmFyIHA7aWYocD1JW2tdKXJldHVybiBwKF8pO2lmKCJzdHJpbmciPT10eXBlb2YgXylyZXR1cm4gQyhrLF8uc3BsaXQoIiIpLm1hcChEKSk7dmFyIERlLHc9Xy5sZW5ndGgsSz1uZXcgQXJyYXkodyksdGU9IiIsY2U9MCxoZT0wLFNlPTEsTGU9MCxIZT0wLHhlPVJba10sQmU9IiI7aWYoeGUm''@;'; put 'put ''JihEZT14ZS5kZWMpKWZvcihoZT0wO2hlPHc7aGUrPVNlKXtpZihTZT0yLCh0ZT1EZVsoX1toZV08PDgpK19baGUrMV1dKXx8KFNlPTEsdGU9RGVbX1toZV1dKSwhdGUpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgY29kZTogIitfW2hlXSsiICIrX1toZStTZS0xXSsiICIraGUrIiAi''@;'; put 'put ''K1NlKyIgIitEZVtfW2hlXV0pO0tbTGUrK109dGV9ZWxzZXtpZighKEJlPW9lW2tdKSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBDUDogIitrKTtzd2l0Y2goQmUpe2Nhc2UidXRmOCI6Zm9yKHc+PTMmJjIzOT09X1swXSYmMTg3PT1fWzFdJiYxOTE9PV9bMl0mJihoZT0zKTtoZTx3''@;'; put 'put ''O2hlKz1TZSlTZT0xLF9baGVdPDEyOD9jZT1fW2hlXTpfW2hlXTwyMjQ/KGNlPTY0KigzMSZfW2hlXSkrKDYzJl9baGUrMV0pLFNlPTIpOl9baGVdPDI0MD8oY2U9KCgxNSZfW2hlXSk8PDEyKSs2NCooNjMmX1toZSsxXSkrKDYzJl9baGUrMl0pLFNlPTMpOihjZT0yNjIxNDQqKDcmX1toZV0p''@;'; put 'put ''KygoNjMmX1toZSsxXSk8PDEyKSs2NCooNjMmX1toZSsyXSkrKDYzJl9baGUrM10pLFNlPTQpLGNlPDY1NTM2fHwoSGU9NTUyOTYrKChjZS09NjU1MzYpPj4xMCYxMDIzKSxjZT01NjMyMCsoMTAyMyZjZSksS1tMZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhlKSksS1tMZSsrXT1TdHJpbmcu''@;'; put 'put ''ZnJvbUNoYXJDb2RlKGNlKTticmVhaztjYXNlImFzY2lpIjppZihUJiZCdWZmZXIuaXNCdWZmZXIoXykpcmV0dXJuIF8udG9TdHJpbmcoQmUpO2ZvcihoZT0wO2hlPHc7aGUrKylLW2hlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKF9baGVdKTtMZT13O2JyZWFrO2Nhc2UidXRmMTZsZSI6aWYodz49''@;'; put 'put ''MiYmMjU1PT1fWzBdJiYyNTQ9PV9bMV0mJihoZT0yKSxUJiZCdWZmZXIuaXNCdWZmZXIoXykpcmV0dXJuIF8udG9TdHJpbmcoQmUpO2ZvcihTZT0yO2hlKzE8dztoZSs9U2UpS1tMZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChfW2hlKzFdPDw4KStfW2hlXSk7YnJlYWs7Y2FzZSJ1dGYxNmJl''@;'; put 'put ''Ijpmb3Iodz49MiYmMjU0PT1fWzBdJiYyNTU9PV9bMV0mJihoZT0yKSxTZT0yO2hlKzE8dztoZSs9U2UpS1tMZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChfW2hlXTw8OCkrX1toZSsxXSk7YnJlYWs7Y2FzZSJ1dGYzMmxlIjpmb3Iodz49NCYmMjU1PT1fWzBdJiYyNTQ9PV9bMV0mJjA9PT1f''@;'; put 'put ''WzJdJiYwPT09X1szXSYmKGhlPTQpLFNlPTQ7aGU8dztoZSs9U2UpKGNlPShfW2hlKzNdPDwyNCkrKF9baGUrMl08PDE2KSsoX1toZSsxXTw8OCkrX1toZV0pPjY1NTM1PyhjZS09NjU1MzYsS1tMZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhjZT4+MTAmMTAyMykpLEtbTGUrK109''@;'; put 'put ''U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZjZSkpKTpLW0xlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoY2UpO2JyZWFrO2Nhc2UidXRmMzJiZSI6Zm9yKHc+PTQmJjI1NT09X1szXSYmMjU0PT1fWzJdJiYwPT09X1sxXSYmMD09PV9bMF0mJihoZT00KSxTZT00O2hlPHc7aGUrPVNl''@;'; put 'put ''KShjZT0oX1toZV08PDI0KSsoX1toZSsxXTw8MTYpKyhfW2hlKzJdPDw4KStfW2hlKzNdKT42NTUzNT8oY2UtPTY1NTM2LEtbTGUrK109U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoY2U+PjEwJjEwMjMpKSxLW0xlKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMmY2UpKSk6''@;'; put 'put ''S1tMZSsrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGNlKTticmVhaztjYXNlInV0ZjciOmZvcih3Pj00JiY0Mz09X1swXSYmNDc9PV9bMV0mJjExOD09X1syXSYmKHc+PTUmJjU2PT1fWzNdJiY0NT09X1s0XT9oZT01Oig1Nj09X1szXXx8NTc9PV9bM118fDQzPT1fWzNdfHw0Nz09X1szXSkmJiho''@;'; put 'put ''ZT00KSk7aGU8dztoZSs9U2UpaWYoNDM9PT1fW2hlXSlpZihTZT0xLDQ1IT09X1toZSsxXSl7Zm9yKDtTdHJpbmcuZnJvbUNoYXJDb2RlKF9baGUrU2VdKS5tYXRjaCgvW0EtWmEtejAtOStcL10vKTspU2UrKzt2YXIgR2U9MDs0NT09PV9baGUrU2VdJiYoKytTZSxHZT0xKTtmb3IodmFyIFVl''@;'; put 'put ''PVtdLHFlPSIiLEVlPTAsSWU9MCxYZT0wLHR0PTAsWmU9MTtaZTxTZS1HZSYmKEVlPWFlLmluZGV4T2YoU3RyaW5nLmZyb21DaGFyQ29kZShfW2hlK1plKytdKSksSWU9YWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKF9baGUrWmUrK10pKSxVZS5wdXNoKEVlPDwyfEllPj40KSwtMSE9''@;'; put 'put ''PShYZT1hZS5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUoX1toZStaZSsrXSkpKSYmKFVlLnB1c2goKDE1JkllKTw8NHxYZT4+MiksLTEhPT0odHQ9YWUuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKF9baGUrWmUrK10pKSkpKTspdHQ8NjQmJlVlLnB1c2goKDMmWGUpPDw2fHR0KTtm''@;'; put 'put ''b3IocWU9QygxMjAxLFVlKSxaZT0wO1plPHFlLmxlbmd0aDsrK1plKUtbTGUrK109cWUuY2hhckF0KFplKX1lbHNlIFNlPTIsS1tMZSsrXT0iKyI7ZWxzZSBTZT0xLEtbTGUrK109U3RyaW5nLmZyb21DaGFyQ29kZShfW2hlXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3Vw''@;'; put 'put ''cG9ydGVkIG1hZ2ljOiAiK2srIiAiK29lW2tdKX19cmV0dXJuIEsuc2xpY2UoMCxMZSkuam9pbigiIil9LGVuY29kZTpmdW5jdGlvbiBDKGssXyxwKXtpZihrPT09QSYmYilyZXR1cm4gYihfLHApO2lmKGpba10pcmV0dXJuKGI9altBPWtdKShfLHApO1QmJkJ1ZmZlci5pc0J1ZmZlcihfKSYm''@;'; put 'put ''KF89Xy50b1N0cmluZygidXRmOCIpKTt2YXIgSGUsdz1fLmxlbmd0aCxLPVQ/QnVmZmVyLmFsbG9jVW5zYWZlKDQqdyk6W10sdGU9MCxjZT0wLGhlPTAsU2U9MCxMZT1SW2tdLHhlPSIiLERlPSJzdHJpbmciPT10eXBlb2YgXztpZihMZSYmKEhlPUxlLmVuYykpZm9yKGNlPTA7Y2U8dzsrK2Nl''@;'; put 'put ''LCsraGUpKHRlPUhlW0RlP18uY2hhckF0KGNlKTpfW2NlXV0pPjI1NT8oS1toZV09dGU+PjgsS1srK2hlXT0yNTUmdGUpOktbaGVdPTI1NSZ0ZTtlbHNle2lmKCEoeGU9b2Vba10pKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIENQOiAiK2spO3N3aXRjaCh4ZSl7Y2FzZSJ1dGY4Ijpp''@;'; put 'put ''ZihUJiZEZSl7aGU9KEs9RShfLHhlKSkubGVuZ3RoO2JyZWFrfWZvcihjZT0wO2NlPHc7KytjZSwrK2hlKSh0ZT1EZT9fLmNoYXJDb2RlQXQoY2UpOl9bY2VdLmNoYXJDb2RlQXQoMCkpPD0xMjc/S1toZV09dGU6dGU8PTIwNDc/KEtbaGVdPTE5MisodGU+PjYpLEtbKytoZV09MTI4Kyg2MyZ0''@;'; put 'put ''ZSkpOnRlPj01NTI5NiYmdGU8PTU3MzQzPyh0ZS09NTUyOTYsU2U9KERlP18uY2hhckNvZGVBdCgrK2NlKTpfWysrY2VdLmNoYXJDb2RlQXQoMCkpLTU2MzIwKyh0ZTw8MTApLEtbaGVdPTI0MCsoU2U+Pj4xOCY3KSxLWysraGVdPTE0NCsoU2U+Pj4xMiY2MyksS1srK2hlXT0xMjgrKFNlPj4+''@;'; put 'put ''NiY2MyksS1srK2hlXT0xMjgrKDYzJlNlKSk6KEtbaGVdPTIyNCsodGU+PjEyKSxLWysraGVdPTEyOCsodGU+PjYmNjMpLEtbKytoZV09MTI4Kyg2MyZ0ZSkpO2JyZWFrO2Nhc2UiYXNjaWkiOmlmKFQmJiJzdHJpbmciPT10eXBlb2YgXyl7aGU9KEs9RShfLHhlKSkubGVuZ3RoO2JyZWFrfWZv''@;'; put 'put ''cihjZT0wO2NlPHc7KytjZSwrK2hlKXtpZighKCh0ZT1EZT9fLmNoYXJDb2RlQXQoY2UpOl9bY2VdLmNoYXJDb2RlQXQoMCkpPD0xMjcpKXRocm93IG5ldyBFcnJvcigiYmFkIGFzY2lpICIrdGUpO0tbaGVdPXRlfWJyZWFrO2Nhc2UidXRmMTZsZSI6aWYoVCYmInN0cmluZyI9PXR5cGVvZiBf''@;'; put 'put ''KXtoZT0oSz1FKF8seGUpKS5sZW5ndGg7YnJlYWt9Zm9yKGNlPTA7Y2U8dzsrK2NlKXRlPURlP18uY2hhckNvZGVBdChjZSk6X1tjZV0uY2hhckNvZGVBdCgwKSxLW2hlKytdPTI1NSZ0ZSxLW2hlKytdPXRlPj44O2JyZWFrO2Nhc2UidXRmMTZiZSI6Zm9yKGNlPTA7Y2U8dzsrK2NlKXRlPURl''@;'; put 'put ''P18uY2hhckNvZGVBdChjZSk6X1tjZV0uY2hhckNvZGVBdCgwKSxLW2hlKytdPXRlPj44LEtbaGUrK109MjU1JnRlO2JyZWFrO2Nhc2UidXRmMzJsZSI6Zm9yKGNlPTA7Y2U8dzsrK2NlKSh0ZT1EZT9fLmNoYXJDb2RlQXQoY2UpOl9bY2VdLmNoYXJDb2RlQXQoMCkpPj01NTI5NiYmdGU8PTU3''@;'; put 'put ''MzQzJiYodGU9NjU1MzYrKHRlLTU1Mjk2PDwxMCkrKF9bKytjZV0uY2hhckNvZGVBdCgwKS01NjMyMCkpLEtbaGUrK109MjU1JnRlLEtbaGUrK109MjU1Jih0ZT4+PTgpLEtbaGUrK109MjU1Jih0ZT4+PTgpLEtbaGUrK109MjU1Jih0ZT4+PTgpO2JyZWFrO2Nhc2UidXRmMzJiZSI6Zm9yKGNl''@;'; put 'put ''PTA7Y2U8dzsrK2NlKSh0ZT1EZT9fLmNoYXJDb2RlQXQoY2UpOl9bY2VdLmNoYXJDb2RlQXQoMCkpPj01NTI5NiYmdGU8PTU3MzQzJiYodGU9NjU1MzYrKHRlLTU1Mjk2PDwxMCkrKF9bKytjZV0uY2hhckNvZGVBdCgwKS01NjMyMCkpLEtbaGUrM109MjU1JnRlLEtbaGUrMl09MjU1Jih0ZT4+''@;'; put 'put ''PTgpLEtbaGUrMV09MjU1Jih0ZT4+PTgpLEtbaGVdPTI1NSYodGU+Pj04KSxoZSs9NDticmVhaztjYXNlInV0ZjciOmZvcihjZT0wO2NlPHc7Y2UrKyl7dmFyIEJlPURlP18uY2hhckF0KGNlKTpfW2NlXS5jaGFyQXQoMCk7aWYoIisiIT09QmUpaWYoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX''@;'; put 'put ''WFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JygpLC0uLzo/Ii5pbmRleE9mKEJlKT4tMSlLW2hlKytdPUJlLmNoYXJDb2RlQXQoMCk7ZWxzZXt2YXIgR2U9QygxMjAxLEJlKTtLW2hlKytdPTQzLEtbaGUrK109YWUuY2hhckNvZGVBdChHZVswXT4+MiksS1toZSsrXT1h''@;'; put 'put ''ZS5jaGFyQ29kZUF0KCgoMyZHZVswXSk8PDQpKygoR2VbMV18fDApPj40KSksS1toZSsrXT1hZS5jaGFyQ29kZUF0KCgoMTUmR2VbMV0pPDwyKSsoKEdlWzJdfHwwKT4+NikpLEtbaGUrK109NDV9ZWxzZSBLW2hlKytdPTQzLEtbaGUrK109NDV9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlVuc3VwcG9ydGVkIG1hZ2ljOiAiK2srIiAiK29lW2tdKX19cmV0dXJuIEs9Sy5zbGljZSgwLGhlKSxUP3AmJiJidWYiIT09cD8iYXJyIiE9PXA/Sy50b1N0cmluZygiYmluYXJ5Iik6W10uc2xpY2UuY2FsbChLKTpLOiJzdHIiPT1wP0subWFwKEcpLmpvaW4oIiIpOkt9LGhhc2NwOmZ1''@;'; put 'put ''bmN0aW9uKGspe3JldHVybiEoIVJba10mJiFvZVtrXSl9LG1hZ2ljOm9lLGNhY2hlOmxlfSxSfSl9LDMxNzk6KFFlLE1lKT0+e3ZhciBSLG9lLHg7IWZ1bmN0aW9uKG0pe2lmKHR5cGVvZiBET19OT1RfRVhQT1JUX0pTWklQPiJ1IilRZS5leHBvcnRzPW0oKTtlbHNlIGlmKHR5cGVvZiBET19O''@;'; put 'put ''T1RfRVhQT1JUX0pTWklQPiJ1IilKU1ppcFN5bmM9bSgpLG9lPVtdLHZvaWQgMCE9PSh4PSJmdW5jdGlvbiI9PXR5cGVvZihSPW0pP1IuYXBwbHkoTWUsb2UpOlIpJiYoUWUuZXhwb3J0cz14KTtlbHNle3ZhciBzZTt0eXBlb2YgZ2xvYmFsVGhpczwidSI/c2U9Z2xvYmFsVGhpczp0eXBlb2Yg''@;'; put 'put ''d2luZG93PCJ1Ij9zZT13aW5kb3c6dHlwZW9mIGdsb2JhbDwidSI/c2U9Z2xvYmFsOnR5cGVvZiAkPCJ1IiYmJC5nbG9iYWw/c2U9JC5nbG9iYWw6dHlwZW9mIHNlbGY8InUiJiYoc2U9c2VsZiksc2UuSlNaaXBTeW5jPW0oKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIE8oSSxqLEcp''@;'; put 'put ''e2Z1bmN0aW9uIEQoeixOKXtpZighalt6XSl7aWYoIUlbel0pe2lmKFQpcmV0dXJuIFQoeiwhMCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIreisiJyIpfXZhciBaPWpbel09e2V4cG9ydHM6e319O0lbel1bMF0uY2FsbChaLmV4cG9ydHMsZnVuY3Rpb24oWSl7cmV0''@;'; put 'put ''dXJuIEQoSVt6XVsxXVtZXXx8WSl9LFosWi5leHBvcnRzLE8sSSxqLEcpfXJldHVybiBqW3pdLmV4cG9ydHN9Zm9yKHZhciBUPXZvaWQgMCxFPTA7RTxHLmxlbmd0aDtFKyspRChHW0VdKTtyZXR1cm4gRH0oezE6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9IkFCQ0RFRkdI''@;'; put 'put ''SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtqLmVuY29kZT1mdW5jdGlvbihELFQpe2Zvcih2YXIgeixOLEIsWixZLFUscSxFPSIiLEo9MDtKPEQubGVuZ3RoOylaPSh6PUQuY2hhckNvZGVBdChKKyspKT4+MixZPSgzJnopPDw0fChO''@;'; put 'put ''PUQuY2hhckNvZGVBdChKKyspKT4+NCxVPSgxNSZOKTw8MnwoQj1ELmNoYXJDb2RlQXQoSisrKSk+PjYscT02MyZCLGlzTmFOKE4pP1U9cT02NDppc05hTihCKSYmKHE9NjQpLEU9RStHLmNoYXJBdChaKStHLmNoYXJBdChZKStHLmNoYXJBdChVKStHLmNoYXJBdChxKTtyZXR1cm4gRX0sai5k''@;'; put 'put ''ZWNvZGU9ZnVuY3Rpb24oRCxUKXt2YXIgTixCLFosWSxVLHEsRT0iIixKPTA7Zm9yKEQ9RC5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7SjxELmxlbmd0aDspWj1HLmluZGV4T2YoRC5jaGFyQXQoSisrKSksTj0oMTUmKFk9Ry5pbmRleE9mKEQuY2hhckF0KEorKykpKSk8PDR8''@;'; put 'put ''KFU9Ry5pbmRleE9mKEQuY2hhckF0KEorKykpKT4+MixCPSgzJlUpPDw2fChxPUcuaW5kZXhPZihELmNoYXJBdChKKyspKSksRSs9U3RyaW5nLmZyb21DaGFyQ29kZShaPDwyfFk+PjQpLDY0IT1VJiYoRSs9U3RyaW5nLmZyb21DaGFyQ29kZShOKSksNjQhPXEmJihFKz1TdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKEIpKTtyZXR1cm4gRX19LHt9XSwyOltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEcoKXt0aGlzLmNvbXByZXNzZWRTaXplPTAsdGhpcy51bmNvbXByZXNzZWRTaXplPTAsdGhpcy5jcmMzMj0wLHRoaXMuY29tcHJlc3Npb25NZXRob2Q9bnVsbCx0aGlzLmNv''@;'; put 'put ''bXByZXNzZWRDb250ZW50PW51bGx9Ry5wcm90b3R5cGU9e2dldENvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZ2V0Q29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19LEkuZXhwb3J0cz1HfSx7fV0sMzpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijtq''@;'; put 'put ''LlNUT1JFPXttYWdpYzoiXDBcMCIsY29tcHJlc3M6ZnVuY3Rpb24oRyl7cmV0dXJuIEd9LHVuY29tcHJlc3M6ZnVuY3Rpb24oRyl7cmV0dXJuIEd9LGNvbXByZXNzSW5wdXRUeXBlOm51bGwsdW5jb21wcmVzc0lucHV0VHlwZTpudWxsfSxqLkRFRkxBVEU9TygiLi9mbGF0ZSIpfSx7Ii4vZmxh''@;'; put 'put ''dGUiOjh9XSw0OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBHPU8oIi4vdXRpbHMiKSxEPVswLDE5OTY5NTk4OTQsMzk5MzkxOTc4OCwyNTY3NTI0Nzk0LDEyNDYzNDEzNywxODg2MDU3NjE1LDM5MTU2MjE2ODUsMjY1NzM5MjAzNSwyNDkyNjgyNzQsMjA0NDUwODMyNCwzNzcy''@;'; put 'put ''MTE1MjMwLDI1NDcxNzc4NjQsMTYyOTQxOTk1LDIxMjU1NjEwMjEsMzg4NzYwNzA0NywyNDI4NDQ0MDQ5LDQ5ODUzNjU0OCwxNzg5OTI3NjY2LDQwODkwMTY2NDgsMjIyNzA2MTIxNCw0NTA1NDg4NjEsMTg0MzI1ODYwMyw0MTA3NTgwNzUzLDIyMTE2Nzc2MzksMzI1ODgzOTkwLDE2ODQ3Nzcx''@;'; put 'put ''NTIsNDI1MTEyMjA0MiwyMzIxOTI2NjM2LDMzNTYzMzQ4NywxNjYxMzY1NDY1LDQxOTUzMDI3NTUsMjM2NjExNTMxNyw5OTcwNzMwOTYsMTI4MTk1Mzg4NiwzNTc5ODU1MzMyLDI3MjQ2ODgyNDIsMTAwNjg4ODE0NSwxMjU4NjA3Njg3LDM1MjQxMDE2MjksMjc2ODk0MjQ0Myw5MDEwOTc3MjIs''@;'; put 'put ''MTExOTAwMDY4NCwzNjg2NTE3MjA2LDI4OTgwNjU3MjgsODUzMDQ0NDUxLDExNzIyNjYxMDEsMzcwNTAxNTc1OSwyODgyNjE2NjY1LDY1MTc2Nzk4MCwxMzczNTAzNTQ2LDMzNjk1NTQzMDQsMzIxODEwNDU5OCw1NjU1MDcyNTMsMTQ1NDYyMTczMSwzNDg1MTExNzA1LDMwOTk0MzYzMDMsNjcx''@;'; put 'put ''MjY2OTc0LDE1OTQxOTgwMjQsMzMyMjczMDkzMCwyOTcwMzQ3ODEyLDc5NTgzNTUyNywxNDgzMjMwMjI1LDMyNDQzNjcyNzUsMzA2MDE0OTU2NSwxOTk0MTQ2MTkyLDMxMTU4NTM0LDI1NjM5MDc3NzIsNDAyMzcxNzkzMCwxOTA3NDU5NDY1LDExMjYzNzIxNSwyNjgwMTUzMjUzLDM5MDQ0Mjcw''@;'; put 'put ''NTksMjAxMzc3NjI5MCwyNTE3MjIwMzYsMjUxNzIxNTM3NCwzNzc1ODMwMDQwLDIxMzc2NTY3NjMsMTQxMzc2ODEzLDI0MzkyNzc3MTksMzg2NTI3MTI5NywxODAyMTk1NDQ0LDQ3Njg2NDg2NiwyMjM4MDAxMzY4LDQwNjY1MDg4NzgsMTgxMjM3MDkyNSw0NTMwOTI3MzEsMjE4MTYyNTAyNSw0''@;'; put 'put ''MTExNDUxMjIzLDE3MDYwODg5MDIsMzE0MDQyNzA0LDIzNDQ1MzIyMDIsNDI0MDAxNzUzMiwxNjU4NjU4MjcxLDM2NjYxOTk3NywyMzYyNjcwMzIzLDQyMjQ5OTQ0MDUsMTMwMzUzNTk2MCw5ODQ5NjE0ODYsMjc0NzAwNzA5MiwzNTY5MDM3NTM4LDEyNTYxNzA4MTcsMTAzNzYwNDMxMSwyNzY1''@;'; put 'put ''MjEwNzMzLDM1NTQwNzk5OTUsMTEzMTAxNDUwNiw4Nzk2Nzk5OTYsMjkwOTI0MzQ2MiwzNjYzNzcxODU2LDExNDExMjQ0NjcsODU1ODQyMjc3LDI4NTI4MDE2MzEsMzcwODY0ODY0OSwxMzQyNTMzOTQ4LDY1NDQ1OTMwNiwzMTg4Mzk2MDQ4LDMzNzMwMTUxNzQsMTQ2NjQ3OTkwOSw1NDQxNzk2''@;'; put 'put ''MzUsMzExMDUyMzkxMywzNDYyNTIyMDE1LDE1OTE2NzEwNTQsNzAyMTM4Nzc2LDI5NjY0NjA0NTAsMzM1Mjc5OTQxMiwxNTA0OTE4ODA3LDc4MzU1MTg3MywzMDgyNjQwNDQzLDMyMzM0NDI5ODksMzk4ODI5MjM4NCwyNTk2MjU0NjQ2LDYyMzE3MDY4LDE5NTc4MTA4NDIsMzkzOTg0NTk0NSwy''@;'; put 'put ''NjQ3ODE2MTExLDgxNDcwOTk3LDE5NDM4MDM1MjMsMzgxNDkxODkzMCwyNDg5NTk2ODA0LDIyNTI3NDQzMCwyMDUzNzkwMzc2LDM4MjYxNzU3NTUsMjQ2NjkwNjAxMywxNjc4MTY3NDMsMjA5NzY1MTM3Nyw0MDI3NTUyNTgwLDIyNjU0OTAzODYsNTAzNDQ0MDcyLDE3NjIwNTA4MTQsNDE1MDQx''@;'; put 'put ''NzI0NSwyMTU0MTI5MzU1LDQyNjUyMjIyNSwxODUyNTA3ODc5LDQyNzUzMTM1MjYsMjMxMjMxNzkyMCwyODI3NTM2MjYsMTc0MjU1NTg1Miw0MTg5NzA4MTQzLDIzOTQ4Nzc5NDUsMzk3OTE3NzYzLDE2MjIxODM2MzcsMzYwNDM5MDg4OCwyNzE0ODY2NTU4LDk1MzcyOTczMiwxMzQwMDc2NjI2''@;'; put 'put ''LDM1MTg3MTk5ODUsMjc5NzM2MDk5OSwxMDY4ODI4MzgxLDEyMTk2Mzg4NTksMzYyNDc0MTg1MCwyOTM2Njc1MTQ4LDkwNjE4NTQ2MiwxMDkwODEyNTEyLDM3NDc2NzIwMDMsMjgyNTM3OTY2OSw4MjkzMjkxMzUsMTE4MTMzNTE2MSwzNDEyMTc3ODA0LDMxNjA4MzQ4NDIsNjI4MDg1NDA4LDEz''@;'; put 'put ''ODI2MDUzNjYsMzQyMzM2OTEwOSwzMTM4MDc4NDY3LDU3MDU2MjIzMywxNDI2NDAwODE1LDMzMTczMTY1NDIsMjk5ODczMzYwOCw3MzMyMzk5NTQsMTU1NTI2MTk1NiwzMjY4OTM1NTkxLDMwNTAzNjA2MjUsNzUyNDU5NDAzLDE1NDEzMjAyMjEsMjYwNzA3MTkyMCwzOTY1OTczMDMwLDE5Njk5''@;'; put 'put ''MjI5NzIsNDA3MzU0OTgsMjYxNzgzNzIyNSwzOTQzNTc3MTUxLDE5MTMwODc4NzcsODM5MDgzNzEsMjUxMjM0MTYzNCwzODAzNzQwNjkyLDIwNzUyMDg2MjIsMjEzMjYxMTEyLDI0NjMyNzI2MDMsMzg1NTk5MDI4NSwyMDk0ODU0MDcxLDE5ODk1ODg4MSwyMjYyMDI5MDEyLDQwNTcyNjA2MTAs''@;'; put 'put ''MTc1OTM1OTk5Miw1MzQ0MTQxOTAsMjE3NjcxODU0MSw0MTM5MzI5MTE1LDE4NzM4MzYwMDEsNDE0NjY0NTY3LDIyODIyNDg5MzQsNDI3OTIwMDM2OCwxNzExNjg0NTU0LDI4NTI4MTExNiwyNDA1ODAxNzI3LDQxNjcyMTY3NDUsMTYzNDQ2Nzc5NSwzNzYyMjk3MDEsMjY4NTA2Nzg5NiwzNjA4''@;'; put 'put ''MDA3NDA2LDEzMDg5MTg2MTIsOTU2NTQzOTM4LDI4MDg1NTUxMDUsMzQ5NTk1ODI2MywxMjMxNjM2MzAxLDEwNDc0MjcwMzUsMjkzMjk1OTgxOCwzNjU0NzAzODM2LDEwODgzNTkyNzAsOTM2OTE4ZTMsMjg0NzcxNDg5OSwzNzM2ODM3ODI5LDEyMDI5MDA4NjMsODE3MjMzODk3LDMxODMzNDIx''@;'; put 'put ''MDgsMzQwMTIzNzEzMCwxNDA0Mjc3NTUyLDYxNTgxODE1MCwzMTM0MjA3NDkzLDM0NTM0MjEyMDMsMTQyMzg1NzQ0OSw2MDE0NTA0MzEsMzAwOTgzNzYxNCwzMjk0NzEwNDU2LDE1NjcxMDM3NDYsNzExOTI4NzI0LDMwMjA2Njg0NzEsMzI3MjM4MDA2NSwxNTEwMzM0MjM1LDc1NTE2NzExN107''@;'; put 'put ''SS5leHBvcnRzPWZ1bmN0aW9uKEUseil7aWYodHlwZW9mIEU+InUifHwhRS5sZW5ndGgpcmV0dXJuIDA7dmFyIE49InN0cmluZyIhPT1HLmdldFR5cGVPZihFKTt0eXBlb2Ygej4idSImJih6PTApO3ZhciBZPTA7ej1+ejtmb3IodmFyIFU9MCxxPUUubGVuZ3RoO1U8cTtVKyspWT1OP0VbVV06''@;'; put 'put ''RS5jaGFyQ29kZUF0KFUpLHo9ej4+PjheRFsyNTUmKHpeWSldO3JldHVybn56fX0seyIuL3V0aWxzIjoyMX1dLDU6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi91dGlscyIpO2Z1bmN0aW9uIEQoVCl7dGhpcy5kYXRhPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLmlu''@;'; put 'put ''ZGV4PTB9RC5wcm90b3R5cGU9e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKFQpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K1QpfSxjaGVja0luZGV4OmZ1bmN0aW9uKFQpe2lmKHRoaXMubGVuZ3RoPFR8fFQ8MCl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVu''@;'; put 'put ''Z3RoID0gIit0aGlzLmxlbmd0aCsiLCBhc2tlZCBpbmRleCA9ICIrVCsiKS4gQ29ycnVwdGVkIHppcCA/Iil9LHNldEluZGV4OmZ1bmN0aW9uKFQpe3RoaXMuY2hlY2tJbmRleChUKSx0aGlzLmluZGV4PVR9LHNraXA6ZnVuY3Rpb24oVCl7dGhpcy5zZXRJbmRleCh0aGlzLmluZGV4K1QpfSxi''@;'; put 'put ''eXRlQXQ6ZnVuY3Rpb24oVCl7fSxyZWFkSW50OmZ1bmN0aW9uKFQpe3ZhciB6LEU9MDtmb3IodGhpcy5jaGVja09mZnNldChUKSx6PXRoaXMuaW5kZXgrVC0xO3o+PXRoaXMuaW5kZXg7ei0tKUU9KEU8PDgpK3RoaXMuYnl0ZUF0KHopO3JldHVybiB0aGlzLmluZGV4Kz1ULEV9LHJlYWRTdHJp''@;'; put 'put ''bmc6ZnVuY3Rpb24oVCl7cmV0dXJuIEcudHJhbnNmb3JtVG8oInN0cmluZyIsdGhpcy5yZWFkRGF0YShUKSl9LHJlYWREYXRhOmZ1bmN0aW9uKFQpe30sbGFzdEluZGV4T2ZTaWduYXR1cmU6ZnVuY3Rpb24oVCl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBUPXRoaXMucmVhZEludCg0KTty''@;'; put 'put ''ZXR1cm4gbmV3IERhdGUoMTk4MCsoVD4+MjUmMTI3KSwoVD4+MjEmMTUpLTEsVD4+MTYmMzEsVD4+MTEmMzEsVD4+NSY2MywoMzEmVCk8PDEpfX0sSS5leHBvcnRzPUR9LHsiLi91dGlscyI6MjF9XSw2OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO2ouYmFzZTY0PSExLGouYmluYXJ5''@;'; put 'put ''PSExLGouZGlyPSExLGouY3JlYXRlRm9sZGVycz0hMSxqLmRhdGU9bnVsbCxqLmNvbXByZXNzaW9uPW51bGwsai5jb21tZW50PW51bGx9LHt9XSw3OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBHPU8oIi4vdXRpbHMiKTtqLnN0cmluZzJiaW5hcnk9ZnVuY3Rpb24oRCl7cmV0''@;'; put 'put ''dXJuIEcuc3RyaW5nMmJpbmFyeShEKX0sai5zdHJpbmcyVWludDhBcnJheT1mdW5jdGlvbihEKXtyZXR1cm4gRy50cmFuc2Zvcm1UbygidWludDhhcnJheSIsRCl9LGoudWludDhBcnJheTJTdHJpbmc9ZnVuY3Rpb24oRCl7cmV0dXJuIEcudHJhbnNmb3JtVG8oInN0cmluZyIsRCl9LGouc3Ry''@;'; put 'put ''aW5nMkJsb2I9ZnVuY3Rpb24oRCl7dmFyIFQ9Ry50cmFuc2Zvcm1UbygiYXJyYXlidWZmZXIiLEQpO3JldHVybiBHLmFycmF5QnVmZmVyMkJsb2IoVCl9LGouYXJyYXlCdWZmZXIyQmxvYj1mdW5jdGlvbihEKXtyZXR1cm4gRy5hcnJheUJ1ZmZlcjJCbG9iKEQpfSxqLnRyYW5zZm9ybVRvPWZ1''@;'; put 'put ''bmN0aW9uKEQsVCl7cmV0dXJuIEcudHJhbnNmb3JtVG8oRCxUKX0sai5nZXRUeXBlT2Y9ZnVuY3Rpb24oRCl7cmV0dXJuIEcuZ2V0VHlwZU9mKEQpfSxqLmNoZWNrU3VwcG9ydD1mdW5jdGlvbihEKXtyZXR1cm4gRy5jaGVja1N1cHBvcnQoRCl9LGouTUFYX1ZBTFVFXzE2QklUUz1HLk1BWF9W''@;'; put 'put ''QUxVRV8xNkJJVFMsai5NQVhfVkFMVUVfMzJCSVRTPUcuTUFYX1ZBTFVFXzMyQklUUyxqLnByZXR0eT1mdW5jdGlvbihEKXtyZXR1cm4gRy5wcmV0dHkoRCl9LGouZmluZENvbXByZXNzaW9uPWZ1bmN0aW9uKEQpe3JldHVybiBHLmZpbmRDb21wcmVzc2lvbihEKX0sai5pc1JlZ0V4cD1mdW5j''@;'; put 'put ''dGlvbihEKXtyZXR1cm4gRy5pc1JlZ0V4cChEKX19LHsiLi91dGlscyI6MjF9XSw4OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBHPXR5cGVvZiBVaW50OEFycmF5PCJ1IiYmdHlwZW9mIFVpbnQxNkFycmF5PCJ1IiYmdHlwZW9mIFVpbnQzMkFycmF5PCJ1IixEPU8oInBha28i''@;'; put 'put ''KTtqLnVuY29tcHJlc3NJbnB1dFR5cGU9Rz8idWludDhhcnJheSI6ImFycmF5IixqLmNvbXByZXNzSW5wdXRUeXBlPUc/InVpbnQ4YXJyYXkiOiJhcnJheSIsai5tYWdpYz0iXGJcMCIsai5jb21wcmVzcz1mdW5jdGlvbihUKXtyZXR1cm4gRC5kZWZsYXRlUmF3KFQpfSxqLnVuY29tcHJlc3M9''@;'; put 'put ''ZnVuY3Rpb24oVCl7cmV0dXJuIEQuaW5mbGF0ZVJhdyhUKX19LHtwYWtvOjI0fV0sOTpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgRz1PKCIuL2Jhc2U2NCIpO2Z1bmN0aW9uIEQoVCxFKXtpZighKHRoaXMgaW5zdGFuY2VvZiBEKSlyZXR1cm4gbmV3IEQoVCxFKTt0aGlzLmZp''@;'; put 'put ''bGVzPXt9LHRoaXMuY29tbWVudD1udWxsLHRoaXMucm9vdD0iIixUJiZ0aGlzLmxvYWQoVCxFKSx0aGlzLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHo9bmV3IEQ7Zm9yKHZhciBOIGluIHRoaXMpImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXNbTl0mJih6W05dPXRoaXNbTl0pO3JldHVybiB6fX0oRC5w''@;'; put 'put ''cm90b3R5cGU9TygiLi9vYmplY3QiKSkubG9hZD1PKCIuL2xvYWQiKSxELnN1cHBvcnQ9TygiLi9zdXBwb3J0IiksRC5kZWZhdWx0cz1PKCIuL2RlZmF1bHRzIiksRC51dGlscz1PKCIuL2RlcHJlY2F0ZWRQdWJsaWNVdGlscyIpLEQuYmFzZTY0PXtlbmNvZGU6ZnVuY3Rpb24oVCl7cmV0dXJu''@;'; put 'put ''IEcuZW5jb2RlKFQpfSxkZWNvZGU6ZnVuY3Rpb24oVCl7cmV0dXJuIEcuZGVjb2RlKFQpfX0sRC5jb21wcmVzc2lvbnM9TygiLi9jb21wcmVzc2lvbnMiKSxJLmV4cG9ydHM9RH0seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2lvbnMiOjMsIi4vZGVmYXVsdHMiOjYsIi4vZGVwcmVjYXRlZFB1''@;'; put 'put ''YmxpY1V0aWxzIjo3LCIuL2xvYWQiOjEwLCIuL29iamVjdCI6MTMsIi4vc3VwcG9ydCI6MTd9XSwxMDpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgRz1PKCIuL2Jhc2U2NCIpLEQ9TygiLi96aXBFbnRyaWVzIik7SS5leHBvcnRzPWZ1bmN0aW9uKFQsRSl7dmFyIHosTixCLFo7''@;'; put 'put ''Zm9yKChFPUV8fHt9KS5iYXNlNjQmJihUPUcuZGVjb2RlKFQpKSx6PShOPW5ldyBEKFQsRSkpLmZpbGVzLEI9MDtCPHoubGVuZ3RoO0IrKyl0aGlzLmZpbGUoKFo9eltCXSkuZmlsZU5hbWUsWi5kZWNvbXByZXNzZWQse2JpbmFyeTohMCxvcHRpbWl6ZWRCaW5hcnlTdHJpbmc6ITAsZGF0ZTpa''@;'; put 'put ''LmRhdGUsZGlyOlouZGlyLGNvbW1lbnQ6Wi5maWxlQ29tbWVudC5sZW5ndGg/Wi5maWxlQ29tbWVudDpudWxsLGNyZWF0ZUZvbGRlcnM6RS5jcmVhdGVGb2xkZXJzfSk7cmV0dXJuIE4uemlwQ29tbWVudC5sZW5ndGgmJih0aGlzLmNvbW1lbnQ9Ti56aXBDb21tZW50KSx0aGlzfX0seyIuL2Jh''@;'; put 'put ''c2U2NCI6MSwiLi96aXBFbnRyaWVzIjoyMn1dLDExOltmdW5jdGlvbihPLEksail7KGZ1bmN0aW9uKEcpeyJ1c2Ugc3RyaWN0Ijt2YXIgRD1mdW5jdGlvbigpe307aWYodHlwZW9mIEc8InUiKXt2YXIgVD0hRy5mcm9tO2lmKCFUKXRyeXtHLmZyb20oImZvbyIsInV0ZjgiKX1jYXRjaHtUPSEw''@;'; put 'put ''fUQ9VD9mdW5jdGlvbihFLHope3JldHVybiB6P25ldyBHKEUseik6bmV3IEcoRSl9OkcuZnJvbS5iaW5kKEcpLEcuYWxsb2N8fChHLmFsbG9jPWZ1bmN0aW9uKEUpe3JldHVybiBuZXcgRyhFKX0pfUkuZXhwb3J0cz1mdW5jdGlvbihFLHope3JldHVybiJudW1iZXIiPT10eXBlb2YgRT9HLmFs''@;'; put 'put ''bG9jKEUpOkQoRSx6KX0sSS5leHBvcnRzLnRlc3Q9ZnVuY3Rpb24oRSl7cmV0dXJuIEcuaXNCdWZmZXIoRSl9fSkuY2FsbCh0aGlzLHR5cGVvZiBCdWZmZXI8InUiP0J1ZmZlcjp2b2lkIDApfSx7fV0sMTI6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi91aW50OEFy''@;'; put 'put ''cmF5UmVhZGVyIik7ZnVuY3Rpb24gRChUKXt0aGlzLmRhdGE9VCx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH0oRC5wcm90b3R5cGU9bmV3IEcpLnJlYWREYXRhPWZ1bmN0aW9uKFQpe3RoaXMuY2hlY2tPZmZzZXQoVCk7dmFyIEU9dGhpcy5kYXRhLnNsaWNlKHRo''@;'; put 'put ''aXMuaW5kZXgsdGhpcy5pbmRleCtUKTtyZXR1cm4gdGhpcy5pbmRleCs9VCxFfSxJLmV4cG9ydHM9RH0seyIuL3VpbnQ4QXJyYXlSZWFkZXIiOjE4fV0sMTM6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi9zdXBwb3J0IiksRD1PKCIuL3V0aWxzIiksVD1PKCIuL2Ny''@;'; put 'put ''YzMyIiksRT1PKCIuL3NpZ25hdHVyZSIpLHo9TygiLi9kZWZhdWx0cyIpLE49TygiLi9iYXNlNjQiKSxCPU8oIi4vY29tcHJlc3Npb25zIiksWj1PKCIuL2NvbXByZXNzZWRPYmplY3QiKSxZPU8oIi4vbm9kZUJ1ZmZlciIpLFU9TygiLi91dGY4IikscT1PKCIuL3N0cmluZ1dyaXRlciIpLEo9''@;'; put 'put ''TygiLi91aW50OEFycmF5V3JpdGVyIiksZWU9ZnVuY3Rpb24oayl7aWYoay5fZGF0YSBpbnN0YW5jZW9mIFomJihrLl9kYXRhPWsuX2RhdGEuZ2V0Q29udGVudCgpLGsub3B0aW9ucy5iaW5hcnk9ITAsay5vcHRpb25zLmJhc2U2ND0hMSwidWludDhhcnJheSI9PT1ELmdldFR5cGVPZihrLl9k''@;'; put 'put ''YXRhKSkpe3ZhciBfPWsuX2RhdGE7ay5fZGF0YT1uZXcgVWludDhBcnJheShfLmxlbmd0aCksMCE9PV8ubGVuZ3RoJiZrLl9kYXRhLnNldChfLDApfXJldHVybiBrLl9kYXRhfSxyZT1mdW5jdGlvbihrKXt2YXIgXz1lZShrKTtyZXR1cm4ic3RyaW5nIj09PUQuZ2V0VHlwZU9mKF8pPyFrLm9w''@;'; put 'put ''dGlvbnMuYmluYXJ5JiZHLm5vZGVidWZmZXI/WShfLCJ1dGYtOCIpOmsuYXNCaW5hcnkoKTpffSxpZT1mdW5jdGlvbihrKXt2YXIgXz1lZSh0aGlzKTtyZXR1cm4gbnVsbD09PV98fHR5cGVvZiBfPiJ1Ij8iIjoodGhpcy5vcHRpb25zLmJhc2U2NCYmKF89Ti5kZWNvZGUoXykpLF89ayYmdGhp''@;'; put 'put ''cy5vcHRpb25zLmJpbmFyeT9DLnV0ZjhkZWNvZGUoXyk6RC50cmFuc2Zvcm1Ubygic3RyaW5nIixfKSwhayYmIXRoaXMub3B0aW9ucy5iaW5hcnkmJihfPUQudHJhbnNmb3JtVG8oInN0cmluZyIsQy51dGY4ZW5jb2RlKF8pKSksXyl9LHVlPWZ1bmN0aW9uKGssXyxwKXt0aGlzLm5hbWU9ayx0''@;'; put 'put ''aGlzLmRpcj1wLmRpcix0aGlzLmRhdGU9cC5kYXRlLHRoaXMuY29tbWVudD1wLmNvbW1lbnQsdGhpcy5fZGF0YT1fLHRoaXMub3B0aW9ucz1wLHRoaXMuX2luaXRpYWxNZXRhZGF0YT17ZGlyOnAuZGlyLGRhdGU6cC5kYXRlfX07dWUucHJvdG90eXBlPXthc1RleHQ6ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gaWUuY2FsbCh0aGlzLCEwKX0sYXNCaW5hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gaWUuY2FsbCh0aGlzLCExKX0sYXNOb2RlQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIGs9cmUodGhpcyk7cmV0dXJuIEQudHJhbnNmb3JtVG8oIm5vZGVidWZmZXIiLGspfSxhc1VpbnQ4QXJyYXk6ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgaz1yZSh0aGlzKTtyZXR1cm4gRC50cmFuc2Zvcm1UbygidWludDhhcnJheSIsayl9LGFzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc1VpbnQ4QXJyYXkoKS5idWZmZXJ9fTt2YXIgbGU9ZnVuY3Rpb24oayxfKXt2YXIgdyxwPSIiO2Zvcih3PTA7dzxfO3crKylw''@;'; put 'put ''Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZrKSxrPj4+PTg7cmV0dXJuIHB9LGFlPWZ1bmN0aW9uKCl7dmFyIF8scCxrPXt9O2ZvcihfPTA7Xzxhcmd1bWVudHMubGVuZ3RoO18rKylmb3IocCBpbiBhcmd1bWVudHNbX10pYXJndW1lbnRzW19dLmhhc093blByb3BlcnR5KHApJiZ0eXBlb2Yg''@;'; put 'put ''a1twXT4idSImJihrW3BdPWFyZ3VtZW50c1tfXVtwXSk7cmV0dXJuIGt9LGI9ZnVuY3Rpb24oayxfLHApe3ZhciBLLHc9RC5nZXRUeXBlT2YoXyk7aWYocD1mdW5jdGlvbihrKXtyZXR1cm4hMD09PShrPWt8fHt9KS5iYXNlNjQmJm51bGw9PWsuYmluYXJ5JiYoay5iaW5hcnk9ITApLChrPWFl''@;'; put 'put ''KGsseikpLmRhdGU9ay5kYXRlfHxuZXcgRGF0ZSxudWxsIT09ay5jb21wcmVzc2lvbiYmKGsuY29tcHJlc3Npb249ay5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpKSxrfShwKSxwLmNyZWF0ZUZvbGRlcnMmJihLPUEoaykpJiZGLmNhbGwodGhpcyxLLCEwKSxwLmRpcnx8bnVsbD09PV98fHR5''@;'; put 'put ''cGVvZiBfPiJ1IilwLmJhc2U2ND0hMSxwLmJpbmFyeT0hMSxfPW51bGw7ZWxzZSBpZigic3RyaW5nIj09PXcpcC5iaW5hcnkmJiFwLmJhc2U2NCYmITAhPT1wLm9wdGltaXplZEJpbmFyeVN0cmluZyYmKF89RC5zdHJpbmcyYmluYXJ5KF8pKTtlbHNle2lmKHAuYmFzZTY0PSExLHAuYmluYXJ5''@;'; put 'put ''PSEwLCEod3x8XyBpbnN0YW5jZW9mIFopKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgb2YgJyIraysiJyBpcyBpbiBhbiB1bnN1cHBvcnRlZCBmb3JtYXQgISIpOyJhcnJheWJ1ZmZlciI9PT13JiYoXz1ELnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixfKSl9dmFyIHRlPW5ldyB1ZShrLF8s''@;'; put 'put ''cCk7cmV0dXJuIHRoaXMuZmlsZXNba109dGUsdGV9LEE9ZnVuY3Rpb24oayl7Ii8iPT1rLnNsaWNlKC0xKSYmKGs9ay5zdWJzdHJpbmcoMCxrLmxlbmd0aC0xKSk7dmFyIF89ay5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBfPjA/ay5zdWJzdHJpbmcoMCxfKToiIn0sRj1mdW5jdGlvbihrLF8p''@;'; put 'put ''e3JldHVybiIvIiE9ay5zbGljZSgtMSkmJihrKz0iLyIpLF89dHlwZW9mIF88InUiJiZfLHRoaXMuZmlsZXNba118fGIuY2FsbCh0aGlzLGssbnVsbCx7ZGlyOiEwLGNyZWF0ZUZvbGRlcnM6X30pLHRoaXMuZmlsZXNba119LEg9ZnVuY3Rpb24oayxfKXt2YXIgdyxwPW5ldyBaO3JldHVybiBr''@;'; put 'put ''Ll9kYXRhIGluc3RhbmNlb2YgWj8ocC51bmNvbXByZXNzZWRTaXplPWsuX2RhdGEudW5jb21wcmVzc2VkU2l6ZSxwLmNyYzMyPWsuX2RhdGEuY3JjMzIsMD09PXAudW5jb21wcmVzc2VkU2l6ZXx8ay5kaXI/KF89Qi5TVE9SRSxwLmNvbXByZXNzZWRDb250ZW50PSIiLHAuY3JjMzI9MCk6ay5f''@;'; put 'put ''ZGF0YS5jb21wcmVzc2lvbk1ldGhvZD09PV8ubWFnaWM/cC5jb21wcmVzc2VkQ29udGVudD1rLl9kYXRhLmdldENvbXByZXNzZWRDb250ZW50KCk6KHc9ay5fZGF0YS5nZXRDb250ZW50KCkscC5jb21wcmVzc2VkQ29udGVudD1fLmNvbXByZXNzKEQudHJhbnNmb3JtVG8oXy5jb21wcmVzc0lu''@;'; put 'put ''cHV0VHlwZSx3KSkpKTooKCEodz1yZShrKSl8fDA9PT13Lmxlbmd0aHx8ay5kaXIpJiYoXz1CLlNUT1JFLHc9IiIpLHAudW5jb21wcmVzc2VkU2l6ZT13Lmxlbmd0aCxwLmNyYzMyPVQodykscC5jb21wcmVzc2VkQ29udGVudD1fLmNvbXByZXNzKEQudHJhbnNmb3JtVG8oXy5jb21wcmVzc0lu''@;'; put 'put ''cHV0VHlwZSx3KSkpLHAuY29tcHJlc3NlZFNpemU9cC5jb21wcmVzc2VkQ29udGVudC5sZW5ndGgscC5jb21wcmVzc2lvbk1ldGhvZD1fLm1hZ2ljLHB9LGc9ZnVuY3Rpb24oayxfLHAsdyl7dmFyIHhlLERlLHFlLG90LHRlPUQudHJhbnNmb3JtVG8oInN0cmluZyIsVS51dGY4ZW5jb2RlKF8u''@;'; put 'put ''bmFtZSkpLGNlPV8uY29tbWVudHx8IiIsaGU9RC50cmFuc2Zvcm1Ubygic3RyaW5nIixVLnV0ZjhlbmNvZGUoY2UpKSxTZT10ZS5sZW5ndGghPT1fLm5hbWUubGVuZ3RoLExlPWhlLmxlbmd0aCE9PWNlLmxlbmd0aCxIZT1fLm9wdGlvbnMsQmU9IiIsR2U9IiIsVWU9IiI7cWU9Xy5faW5pdGlh''@;'; put 'put ''bE1ldGFkYXRhLmRpciE9PV8uZGlyP18uZGlyOkhlLmRpcix4ZT0ob3Q9Xy5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT1fLmRhdGU/Xy5kYXRlOkhlLmRhdGUpLmdldEhvdXJzKCkseGU8PD02LHhlfD1vdC5nZXRNaW51dGVzKCkseGU8PD01LHhlfD1vdC5nZXRTZWNvbmRzKCkvMixEZT1vdC5n''@;'; put 'put ''ZXRGdWxsWWVhcigpLTE5ODAsRGU8PD00LERlfD1vdC5nZXRNb250aCgpKzEsRGU8PD01LERlfD1vdC5nZXREYXRlKCksU2UmJihHZT1sZSgxLDEpK2xlKFQodGUpLDQpK3RlLEJlKz0idXAiK2xlKEdlLmxlbmd0aCwyKStHZSksTGUmJihVZT1sZSgxLDEpK2xlKHRoaXMuY3JjMzIoaGUpLDQp''@;'; put 'put ''K2hlLEJlKz0idWMiK2xlKFVlLmxlbmd0aCwyKStVZSk7dmFyIEZlPSIiO3JldHVybiBGZSs9IlxuXDAiLEZlKz1TZXx8TGU/IlwwXGIiOiJcMFwwIixGZSs9cC5jb21wcmVzc2lvbk1ldGhvZCxGZSs9bGUoeGUsMiksRmUrPWxlKERlLDIpLEZlKz1sZShwLmNyYzMyLDQpLEZlKz1sZShwLmNv''@;'; put 'put ''bXByZXNzZWRTaXplLDQpLEZlKz1sZShwLnVuY29tcHJlc3NlZFNpemUsNCksRmUrPWxlKHRlLmxlbmd0aCwyKSxGZSs9bGUoQmUubGVuZ3RoLDIpLHtmaWxlUmVjb3JkOkUuTE9DQUxfRklMRV9IRUFERVIrRmUrdGUrQmUsZGlyUmVjb3JkOkUuQ0VOVFJBTF9GSUxFX0hFQURFUisiXHgxNFww''@;'; put 'put ''IitGZStsZShoZS5sZW5ndGgsMikrIlwwXDBcMFwwIisoITA9PT1xZT8iXHgxMFwwXDBcMCI6IlwwXDBcMFwwIikrbGUodyw0KSt0ZStCZStoZSxjb21wcmVzc2VkT2JqZWN0OnB9fSxDPXtsb2FkOmZ1bmN0aW9uKGssXyl7dGhyb3cgbmV3IEVycm9yKCJMb2FkIG1ldGhvZCBpcyBub3QgZGVm''@;'; put 'put ''aW5lZC4gSXMgdGhlIGZpbGUganN6aXAtbG9hZC5qcyBpbmNsdWRlZCA/Iil9LGZpbHRlcjpmdW5jdGlvbihrKXt2YXIgcCx3LEssdGUsXz1bXTtmb3IocCBpbiB0aGlzLmZpbGVzKXRoaXMuZmlsZXMuaGFzT3duUHJvcGVydHkocCkmJih0ZT1uZXcgdWUoKEs9dGhpcy5maWxlc1twXSkubmFt''@;'; put 'put ''ZSxLLl9kYXRhLGFlKEsub3B0aW9ucykpLHc9cC5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLHAubGVuZ3RoKSxwLnNsaWNlKDAsdGhpcy5yb290Lmxlbmd0aCk9PT10aGlzLnJvb3QmJmsodyx0ZSkmJl8ucHVzaCh0ZSkpO3JldHVybiBffSxmaWxlOmZ1bmN0aW9uKGssXyxwKXtpZigxPT09YXJn''@;'; put 'put ''dW1lbnRzLmxlbmd0aCl7aWYoRC5pc1JlZ0V4cChrKSl7dmFyIHc9aztyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oSyx0ZSl7cmV0dXJuIXRlLmRpciYmdy50ZXN0KEspfSl9cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKEssdGUpe3JldHVybiF0ZS5kaXImJks9PT1rfSlbMF18fG51''@;'; put 'put ''bGx9cmV0dXJuIGIuY2FsbCh0aGlzLGs9dGhpcy5yb290K2ssXyxwKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oayl7aWYoIWspcmV0dXJuIHRoaXM7aWYoRC5pc1JlZ0V4cChrKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oSyx0ZSl7cmV0dXJuIHRlLmRpciYmay50ZXN0KEspfSk7dmFy''@;'; put 'put ''IHA9Ri5jYWxsKHRoaXMsdGhpcy5yb290K2spLHc9dGhpcy5jbG9uZSgpO3JldHVybiB3LnJvb3Q9cC5uYW1lLHd9LHJlbW92ZTpmdW5jdGlvbihrKXt2YXIgXz10aGlzLmZpbGVzW2s9dGhpcy5yb290K2tdO2lmKF98fCgiLyIhPWsuc2xpY2UoLTEpJiYoays9Ii8iKSxfPXRoaXMuZmlsZXNb''@;'; put 'put ''a10pLF8mJiFfLmRpcilkZWxldGUgdGhpcy5maWxlc1trXTtlbHNlIGZvcih2YXIgcD10aGlzLmZpbHRlcihmdW5jdGlvbihLLHRlKXtyZXR1cm4gdGUubmFtZS5zbGljZSgwLGsubGVuZ3RoKT09PWt9KSx3PTA7dzxwLmxlbmd0aDt3KyspZGVsZXRlIHRoaXMuZmlsZXNbcFt3XS5uYW1lXTty''@;'; put 'put ''ZXR1cm4gdGhpc30sZ2VuZXJhdGU6ZnVuY3Rpb24oayl7az1hZShrfHx7fSx7YmFzZTY0OiEwLGNvbXByZXNzaW9uOiJTVE9SRSIsdHlwZToiYmFzZTY0Iixjb21tZW50Om51bGx9KSxELmNoZWNrU3VwcG9ydChrLnR5cGUpO3ZhciBLLHRlLEJlLF89W10scD0wLHc9MCxjZT1ELnRyYW5zZm9y''@;'; put 'put ''bVRvKCJzdHJpbmciLHRoaXMudXRmOGVuY29kZShrLmNvbW1lbnR8fHRoaXMuY29tbWVudHx8IiIpKTtmb3IodmFyIGhlIGluIHRoaXMuZmlsZXMpaWYodGhpcy5maWxlcy5oYXNPd25Qcm9wZXJ0eShoZSkpe3ZhciBTZT10aGlzLmZpbGVzW2hlXSxMZT1TZS5vcHRpb25zLmNvbXByZXNzaW9u''@;'; put 'put ''fHxrLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCksSGU9QltMZV07aWYoIUhlKXRocm93IG5ldyBFcnJvcihMZSsiIGlzIG5vdCBhIHZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAhIik7dmFyIHhlPUguY2FsbCh0aGlzLFNlLEhlKSxEZT1nLmNhbGwodGhpcyxoZSxTZSx4ZSxwKTtwKz1EZS5m''@;'; put 'put ''aWxlUmVjb3JkLmxlbmd0aCt4ZS5jb21wcmVzc2VkU2l6ZSx3Kz1EZS5kaXJSZWNvcmQubGVuZ3RoLF8ucHVzaChEZSl9QmU9RS5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlwwXDBcMFwwIitsZShfLmxlbmd0aCwyKStsZShfLmxlbmd0aCwyKStsZSh3LDQpK2xlKHAsNCkrbGUoY2UubGVuZ3Ro''@;'; put 'put ''LDIpK2NlO3ZhciBHZT1rLnR5cGUudG9Mb3dlckNhc2UoKTtmb3IoSz0idWludDhhcnJheSI9PT1HZXx8ImFycmF5YnVmZmVyIj09PUdlfHwiYmxvYiI9PT1HZXx8Im5vZGVidWZmZXIiPT09R2U/bmV3IEoocCt3K0JlLmxlbmd0aCk6bmV3IHEocCt3K0JlLmxlbmd0aCksdGU9MDt0ZTxfLmxl''@;'; put 'put ''bmd0aDt0ZSsrKUsuYXBwZW5kKF9bdGVdLmZpbGVSZWNvcmQpLEsuYXBwZW5kKF9bdGVdLmNvbXByZXNzZWRPYmplY3QuY29tcHJlc3NlZENvbnRlbnQpO2Zvcih0ZT0wO3RlPF8ubGVuZ3RoO3RlKyspSy5hcHBlbmQoX1t0ZV0uZGlyUmVjb3JkKTtLLmFwcGVuZChCZSk7dmFyIFVlPUsuZmlu''@;'; put 'put ''YWxpemUoKTtzd2l0Y2goay50eXBlLnRvTG93ZXJDYXNlKCkpe2Nhc2UidWludDhhcnJheSI6Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJub2RlYnVmZmVyIjpyZXR1cm4gRC50cmFuc2Zvcm1UbyhrLnR5cGUudG9Mb3dlckNhc2UoKSxVZSk7Y2FzZSJibG9iIjpyZXR1cm4gRC5hcnJheUJ1ZmZl''@;'; put 'put ''cjJCbG9iKEQudHJhbnNmb3JtVG8oImFycmF5YnVmZmVyIixVZSkpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gay5iYXNlNjQ/Ti5lbmNvZGUoVWUpOlVlO2RlZmF1bHQ6cmV0dXJuIFVlfX0sY3JjMzI6ZnVuY3Rpb24oayxfKXtyZXR1cm4gVChrLF8pfSx1dGY4ZW5jb2RlOmZ1bmN0aW9uKGspe3Jl''@;'; put 'put ''dHVybiBELnRyYW5zZm9ybVRvKCJzdHJpbmciLFUudXRmOGVuY29kZShrKSl9LHV0ZjhkZWNvZGU6ZnVuY3Rpb24oayl7cmV0dXJuIFUudXRmOGRlY29kZShrKX19O0kuZXhwb3J0cz1DfSx7Ii4vYmFzZTY0IjoxLCIuL2NvbXByZXNzZWRPYmplY3QiOjIsIi4vY29tcHJlc3Npb25zIjozLCIu''@;'; put 'put ''L2NyYzMyIjo0LCIuL2RlZmF1bHRzIjo2LCIuL25vZGVCdWZmZXIiOjExLCIuL3NpZ25hdHVyZSI6MTQsIi4vc3RyaW5nV3JpdGVyIjoxNiwiLi9zdXBwb3J0IjoxNywiLi91aW50OEFycmF5V3JpdGVyIjoxOSwiLi91dGY4IjoyMCwiLi91dGlscyI6MjF9XSwxNDpbZnVuY3Rpb24oTyxJLGop''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtqLkxPQ0FMX0ZJTEVfSEVBREVSPSJQS1x4MDNceDA0IixqLkNFTlRSQUxfRklMRV9IRUFERVI9IlBLXHgwMVx4MDIiLGouQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x4MDVceDA2IixqLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1I9IlBLXHgwNlx4MDci''@;'; put 'put ''LGouWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x4MDZceDA2IixqLkRBVEFfREVTQ1JJUFRPUj0iUEtceDA3XGIifSx7fV0sMTU6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi9kYXRhUmVhZGVyIiksRD1PKCIuL3V0aWxzIik7ZnVuY3Rpb24gVChFLHop''@;'; put 'put ''e3RoaXMuZGF0YT1FLHp8fCh0aGlzLmRhdGE9RC5zdHJpbmcyYmluYXJ5KHRoaXMuZGF0YSkpLHRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy5pbmRleD0wfShULnByb3RvdHlwZT1uZXcgRykuYnl0ZUF0PWZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmRhdGEuY2hhckNvZGVBdChF''@;'; put 'put ''KX0sVC5wcm90b3R5cGUubGFzdEluZGV4T2ZTaWduYXR1cmU9ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMuZGF0YS5sYXN0SW5kZXhPZihFKX0sVC5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oRSl7dGhpcy5jaGVja09mZnNldChFKTt2YXIgej10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRl''@;'; put 'put ''eCx0aGlzLmluZGV4K0UpO3JldHVybiB0aGlzLmluZGV4Kz1FLHp9LEkuZXhwb3J0cz1UfSx7Ii4vZGF0YVJlYWRlciI6NSwiLi91dGlscyI6MjF9XSwxNjpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgRz1PKCIuL3V0aWxzIiksRD1mdW5jdGlvbigpe3RoaXMuZGF0YT1bXX07''@;'; put 'put ''RC5wcm90b3R5cGU9e2FwcGVuZDpmdW5jdGlvbihUKXtUPUcudHJhbnNmb3JtVG8oInN0cmluZyIsVCksdGhpcy5kYXRhLnB1c2goVCl9LGZpbmFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5qb2luKCIiKX19LEkuZXhwb3J0cz1EfSx7Ii4vdXRpbHMiOjIxfV0sMTc6W2Z1bmN0''@;'; put 'put ''aW9uKE8sSSxqKXsoZnVuY3Rpb24oRyl7InVzZSBzdHJpY3QiO2lmKGouYmFzZTY0PSEwLGouYXJyYXk9ITAsai5zdHJpbmc9ITAsai5hcnJheWJ1ZmZlcj10eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZ0eXBlb2YgVWludDhBcnJheTwidSIsai5ub2RlYnVmZmVyPXR5cGVvZiBHPCJ1IixqLnVp''@;'; put 'put ''bnQ4YXJyYXk9dHlwZW9mIFVpbnQ4QXJyYXk8InUiLHR5cGVvZiBBcnJheUJ1ZmZlcj4idSIpai5ibG9iPSExO2Vsc2V7dmFyIEQ9bmV3IEFycmF5QnVmZmVyKDApO3RyeXtqLmJsb2I9MD09PW5ldyBCbG9iKFtEXSx7dHlwZToiYXBwbGljYXRpb24vemlwIn0pLnNpemV9Y2F0Y2h7dHJ5e3Zh''@;'; put 'put ''ciBFPW5ldyh3aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcik7RS5hcHBlbmQoRCksai5ibG9iPTA9PT1FLmdldEJsb2IoImFwcGxpY2F0aW9uL3ppcCIpLnNpemV9Y2F0Y2h7ai5i''@;'; put 'put ''bG9iPSExfX19fSkuY2FsbCh0aGlzLHR5cGVvZiBCdWZmZXI8InUiP0J1ZmZlcjp2b2lkIDApfSx7fV0sMTg6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi9kYXRhUmVhZGVyIik7ZnVuY3Rpb24gRChUKXtUJiYodGhpcy5kYXRhPVQsdGhpcy5sZW5ndGg9dGhpcy5k''@;'; put 'put ''YXRhLmxlbmd0aCx0aGlzLmluZGV4PTApfShELnByb3RvdHlwZT1uZXcgRykuYnl0ZUF0PWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLmRhdGFbVF19LEQucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKFQpe2Zvcih2YXIgRT1ULmNoYXJDb2RlQXQoMCksej1ULmNoYXJD''@;'; put 'put ''b2RlQXQoMSksTj1ULmNoYXJDb2RlQXQoMiksQj1ULmNoYXJDb2RlQXQoMyksWj10aGlzLmxlbmd0aC00O1o+PTA7LS1aKWlmKHRoaXMuZGF0YVtaXT09PUUmJnRoaXMuZGF0YVtaKzFdPT09eiYmdGhpcy5kYXRhW1orMl09PT1OJiZ0aGlzLmRhdGFbWiszXT09PUIpcmV0dXJuIFo7cmV0dXJu''@;'; put 'put ''LTF9LEQucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKFQpe2lmKHRoaXMuY2hlY2tPZmZzZXQoVCksMD09PVQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO3ZhciBFPXRoaXMuZGF0YS5zdWJhcnJheSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrVCk7cmV0dXJuIHRoaXMuaW5kZXgrPVQsRX0s''@;'; put 'put ''SS5leHBvcnRzPUR9LHsiLi9kYXRhUmVhZGVyIjo1fV0sMTk6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi91dGlscyIpLEQ9ZnVuY3Rpb24oVCl7dGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KFQpLHRoaXMuaW5kZXg9MH07RC5wcm90b3R5cGU9e2FwcGVuZDpmdW5j''@;'; put 'put ''dGlvbihUKXswIT09VC5sZW5ndGgmJihUPUcudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLFQpLHRoaXMuZGF0YS5zZXQoVCx0aGlzLmluZGV4KSx0aGlzLmluZGV4Kz1ULmxlbmd0aCl9LGZpbmFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YX19LEkuZXhwb3J0cz1EfSx7Ii4vdXRp''@;'; put 'put ''bHMiOjIxfV0sMjA6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7Zm9yKHZhciBHPU8oIi4vdXRpbHMiKSxEPU8oIi4vc3VwcG9ydCIpLFQ9TygiLi9ub2RlQnVmZmVyIiksRT1uZXcgQXJyYXkoMjU2KSx6PTA7ejwyNTY7eisrKUVbel09ej49MjUyPzY6ej49MjQ4PzU6ej49MjQwPzQ6''@;'; put 'put ''ej49MjI0PzM6ej49MTkyPzI6MTtFWzI1NF09RVsyNTRdPTE7dmFyIEI9ZnVuY3Rpb24oWSxVKXt2YXIgcTtmb3IoKFU9VXx8WS5sZW5ndGgpPlkubGVuZ3RoJiYoVT1ZLmxlbmd0aCkscT1VLTE7cT49MCYmMTI4PT0oMTkyJllbcV0pOylxLS07cmV0dXJuIHE8MHx8MD09PXE/VTpxK0VbWVtx''@;'; put 'put ''XV0+VT9xOlV9LFo9ZnVuY3Rpb24oWSl7dmFyIHEsSixlZSxyZSxpZT1ZLmxlbmd0aCx1ZT1uZXcgQXJyYXkoMippZSk7Zm9yKEo9MCxxPTA7cTxpZTspaWYoKGVlPVlbcSsrXSk8MTI4KXVlW0orK109ZWU7ZWxzZSBpZigocmU9RVtlZV0pPjQpdWVbSisrXT02NTUzMyxxKz1yZS0xO2Vsc2V7''@;'; put 'put ''Zm9yKGVlJj0yPT09cmU/MzE6Mz09PXJlPzE1Ojc7cmU+MSYmcTxpZTspZWU9ZWU8PDZ8NjMmWVtxKytdLHJlLS07cmU+MT91ZVtKKytdPTY1NTMzOmVlPDY1NTM2P3VlW0orK109ZWU6KHVlW0orK109NTUyOTZ8KGVlLT02NTUzNik+PjEwJjEwMjMsdWVbSisrXT01NjMyMHwxMDIzJmVlKX1y''@;'; put 'put ''ZXR1cm4gdWUubGVuZ3RoIT09SiYmKHVlLnN1YmFycmF5P3VlPXVlLnN1YmFycmF5KDAsSik6dWUubGVuZ3RoPUopLEcuYXBwbHlGcm9tQ2hhckNvZGUodWUpfTtqLnV0ZjhlbmNvZGU9ZnVuY3Rpb24oVSl7cmV0dXJuIEQubm9kZWJ1ZmZlcj9UKFUsInV0Zi04Iik6ZnVuY3Rpb24oWSl7dmFy''@;'; put 'put ''IFUscSxKLGVlLHJlLGllPVkubGVuZ3RoLHVlPTA7Zm9yKGVlPTA7ZWU8aWU7ZWUrKyk1NTI5Nj09KDY0NTEyJihxPVkuY2hhckNvZGVBdChlZSkpKSYmZWUrMTxpZSYmNTYzMjA9PSg2NDUxMiYoSj1ZLmNoYXJDb2RlQXQoZWUrMSkpKSYmKHE9NjU1MzYrKHEtNTUyOTY8PDEwKSsoSi01NjMy''@;'; put 'put ''MCksZWUrKyksdWUrPXE8MTI4PzE6cTwyMDQ4PzI6cTw2NTUzNj8zOjQ7Zm9yKFU9RC51aW50OGFycmF5P25ldyBVaW50OEFycmF5KHVlKTpuZXcgQXJyYXkodWUpLHJlPTAsZWU9MDtyZTx1ZTtlZSsrKTU1Mjk2PT0oNjQ1MTImKHE9WS5jaGFyQ29kZUF0KGVlKSkpJiZlZSsxPGllJiY1NjMy''@;'; put 'put ''MD09KDY0NTEyJihKPVkuY2hhckNvZGVBdChlZSsxKSkpJiYocT02NTUzNisocS01NTI5Njw8MTApKyhKLTU2MzIwKSxlZSsrKSxxPDEyOD9VW3JlKytdPXE6cTwyMDQ4PyhVW3JlKytdPTE5MnxxPj4+NixVW3JlKytdPTEyOHw2MyZxKTpxPDY1NTM2PyhVW3JlKytdPTIyNHxxPj4+MTIsVVty''@;'; put 'put ''ZSsrXT0xMjh8cT4+PjYmNjMsVVtyZSsrXT0xMjh8NjMmcSk6KFVbcmUrK109MjQwfHE+Pj4xOCxVW3JlKytdPTEyOHxxPj4+MTImNjMsVVtyZSsrXT0xMjh8cT4+PjYmNjMsVVtyZSsrXT0xMjh8NjMmcSk7cmV0dXJuIFV9KFUpfSxqLnV0ZjhkZWNvZGU9ZnVuY3Rpb24oVSl7aWYoRC5ub2Rl''@;'; put 'put ''YnVmZmVyKXJldHVybiBHLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixVKS50b1N0cmluZygidXRmLTgiKTtmb3IodmFyIHE9W10sSj0wLGVlPShVPUcudHJhbnNmb3JtVG8oRC51aW50OGFycmF5PyJ1aW50OGFycmF5IjoiYXJyYXkiLFUpKS5sZW5ndGg7SjxlZTspe3ZhciBpZT1CKFUsTWF0''@;'; put 'put ''aC5taW4oSis2NTUzNixlZSkpO3EucHVzaChaKEQudWludDhhcnJheT9VLnN1YmFycmF5KEosaWUpOlUuc2xpY2UoSixpZSkpKSxKPWllfXJldHVybiBxLmpvaW4oIiIpfX0seyIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3LCIuL3V0aWxzIjoyMX1dLDIxOltmdW5jdGlvbihPLEks''@;'; put 'put ''ail7InVzZSBzdHJpY3QiO3ZhciBHPU8oIi4vc3VwcG9ydCIpLEQ9TygiLi9jb21wcmVzc2lvbnMiKSxUPU8oIi4vbm9kZUJ1ZmZlciIpO2Z1bmN0aW9uIEUoWSl7cmV0dXJuIFl9ZnVuY3Rpb24geihZLFUpe2Zvcih2YXIgcT0wO3E8WS5sZW5ndGg7KytxKVVbcV09MjU1JlkuY2hhckNvZGVB''@;'; put 'put ''dChxKTtyZXR1cm4gVX1mdW5jdGlvbiBOKFkpe3ZhciBVPTY1NTM2LHE9W10sSj1ZLmxlbmd0aCxlZT1qLmdldFR5cGVPZihZKSxyZT0wLGllPSEwO3RyeXtzd2l0Y2goZWUpe2Nhc2UidWludDhhcnJheSI6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDAp''@;'; put 'put ''KTticmVhaztjYXNlIm5vZGVidWZmZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxUKDApKX19Y2F0Y2h7aWU9ITF9aWYoIWllKXtmb3IodmFyIHVlPSIiLGxlPTA7bGU8WS5sZW5ndGg7bGUrKyl1ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShZW2xlXSk7cmV0dXJuIHVlfWZvcig7''@;'; put 'put ''cmU8SiYmVT4xOyl0cnl7cS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwiYXJyYXkiPT09ZWV8fCJub2RlYnVmZmVyIj09PWVlP1kuc2xpY2UocmUsTWF0aC5taW4ocmUrVSxKKSk6WS5zdWJhcnJheShyZSxNYXRoLm1pbihyZStVLEopKSkpLHJlKz1VfWNhdGNoe1U9TWF0''@;'; put 'put ''aC5mbG9vcihVLzIpfXJldHVybiBxLmpvaW4oIiIpfWZ1bmN0aW9uIEIoWSxVKXtmb3IodmFyIHE9MDtxPFkubGVuZ3RoO3ErKylVW3FdPVlbcV07cmV0dXJuIFV9ai5zdHJpbmcyYmluYXJ5PWZ1bmN0aW9uKFkpe2Zvcih2YXIgVT0iIixxPTA7cTxZLmxlbmd0aDtxKyspVSs9U3RyaW5nLmZy''@;'; put 'put ''b21DaGFyQ29kZSgyNTUmWS5jaGFyQ29kZUF0KHEpKTtyZXR1cm4gVX0sai5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKFkpe2ouY2hlY2tTdXBwb3J0KCJibG9iIik7dHJ5e3JldHVybiBuZXcgQmxvYihbWV0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KX1jYXRjaHt0cnl7dmFyIHE9bmV3''@;'; put 'put ''KHdpbmRvdy5CbG9iQnVpbGRlcnx8d2luZG93LldlYktpdEJsb2JCdWlsZGVyfHx3aW5kb3cuTW96QmxvYkJ1aWxkZXJ8fHdpbmRvdy5NU0Jsb2JCdWlsZGVyKTtyZXR1cm4gcS5hcHBlbmQoWSkscS5nZXRCbG9iKCJhcHBsaWNhdGlvbi96aXAiKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkJ1''@;'; put 'put ''ZyA6IGNhbid0IGNvbnN0cnVjdCB0aGUgQmxvYi4iKX19fSxqLmFwcGx5RnJvbUNoYXJDb2RlPU47dmFyIFo9e307Wi5zdHJpbmc9e3N0cmluZzpFLGFycmF5OmZ1bmN0aW9uKFkpe3JldHVybiB6KFksbmV3IEFycmF5KFkubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVy''@;'; put 'put ''biBaLnN0cmluZy51aW50OGFycmF5KFkpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlvbihZKXtyZXR1cm4geihZLG5ldyBVaW50OEFycmF5KFkubGVuZ3RoKSl9LG5vZGVidWZmZXI6ZnVuY3Rpb24oWSl7cmV0dXJuIHooWSxUKFkubGVuZ3RoKSl9fSxaLmFycmF5PXtzdHJpbmc6TixhcnJh''@;'; put 'put ''eTpFLGFycmF5YnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBuZXcgVWludDhBcnJheShZKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBUKFkpfX0sWi5hcnJheWJ1ZmZlcj17c3Ry''@;'; put 'put ''aW5nOmZ1bmN0aW9uKFkpe3JldHVybiBOKG5ldyBVaW50OEFycmF5KFkpKX0sYXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIEIobmV3IFVpbnQ4QXJyYXkoWSksbmV3IEFycmF5KFkuYnl0ZUxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpFLHVpbnQ4YXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIG5ldyBV''@;'; put 'put ''aW50OEFycmF5KFkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKFkpe3JldHVybiBUKG5ldyBVaW50OEFycmF5KFkpKX19LFoudWludDhhcnJheT17c3RyaW5nOk4sYXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIEIoWSxuZXcgQXJyYXkoWS5sZW5ndGgpKX0sYXJyYXlidWZmZXI6ZnVuY3Rpb24oWSl7''@;'; put 'put ''cmV0dXJuIFkuYnVmZmVyfSx1aW50OGFycmF5OkUsbm9kZWJ1ZmZlcjpmdW5jdGlvbihZKXtyZXR1cm4gVChZKX19LFoubm9kZWJ1ZmZlcj17c3RyaW5nOk4sYXJyYXk6ZnVuY3Rpb24oWSl7cmV0dXJuIEIoWSxuZXcgQXJyYXkoWS5sZW5ndGgpKX0sYXJyYXlidWZmZXI6ZnVuY3Rpb24oWSl7''@;'; put 'put ''cmV0dXJuIFoubm9kZWJ1ZmZlci51aW50OGFycmF5KFkpLmJ1ZmZlcn0sdWludDhhcnJheTpmdW5jdGlvbihZKXtyZXR1cm4gQihZLG5ldyBVaW50OEFycmF5KFkubGVuZ3RoKSl9LG5vZGVidWZmZXI6RX0sai50cmFuc2Zvcm1Ubz1mdW5jdGlvbihZLFUpe2lmKFV8fChVPSIiKSwhWSlyZXR1''@;'; put 'put ''cm4gVTtqLmNoZWNrU3VwcG9ydChZKTt2YXIgcT1qLmdldFR5cGVPZihVKTtyZXR1cm4gWltxXVtZXShVKX0sai5nZXRUeXBlT2Y9ZnVuY3Rpb24oWSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBZPyJzdHJpbmciOiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5n''@;'; put 'put ''LmNhbGwoWSk/ImFycmF5IjpHLm5vZGVidWZmZXImJlQudGVzdChZKT8ibm9kZWJ1ZmZlciI6Ry51aW50OGFycmF5JiZZIGluc3RhbmNlb2YgVWludDhBcnJheT8idWludDhhcnJheSI6Ry5hcnJheWJ1ZmZlciYmWSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyPyJhcnJheWJ1ZmZlciI6dm9pZCAw''@;'; put 'put ''fSxqLmNoZWNrU3VwcG9ydD1mdW5jdGlvbihZKXtpZighR1tZLnRvTG93ZXJDYXNlKCldKXRocm93IG5ldyBFcnJvcihZKyIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIiKX0sai5NQVhfVkFMVUVfMTZCSVRTPTY1NTM1LGouTUFYX1ZBTFVFXzMyQklUUz0tMSxqLnByZXR0eT1m''@;'; put 'put ''dW5jdGlvbihZKXt2YXIgcSxKLFU9IiI7Zm9yKEo9MDtKPChZfHwiIikubGVuZ3RoO0orKylVKz0iXFx4IisoKHE9WS5jaGFyQ29kZUF0KEopKTwxNj8iMCI6IiIpK3EudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIFV9LGouZmluZENvbXByZXNzaW9uPWZ1bmN0aW9uKFkpe2Zv''@;'; put 'put ''cih2YXIgVSBpbiBEKWlmKEQuaGFzT3duUHJvcGVydHkoVSkmJkRbVV0ubWFnaWM9PT1ZKXJldHVybiBEW1VdO3JldHVybiBudWxsfSxqLmlzUmVnRXhwPWZ1bmN0aW9uKFkpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFkpfX0seyIu''@;'; put 'put ''L2NvbXByZXNzaW9ucyI6MywiLi9ub2RlQnVmZmVyIjoxMSwiLi9zdXBwb3J0IjoxN31dLDIyOltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBHPU8oIi4vc3RyaW5nUmVhZGVyIiksRD1PKCIuL25vZGVCdWZmZXJSZWFkZXIiKSxUPU8oIi4vdWludDhBcnJheVJlYWRlciIpLEU9''@;'; put 'put ''TygiLi91dGlscyIpLHo9TygiLi9zaWduYXR1cmUiKSxOPU8oIi4vemlwRW50cnkiKSxCPU8oIi4vc3VwcG9ydCIpLFo9TygiLi9vYmplY3QiKTtmdW5jdGlvbiBZKFUscSl7dGhpcy5maWxlcz1bXSx0aGlzLmxvYWRPcHRpb25zPXEsVSYmdGhpcy5sb2FkKFUpfVkucHJvdG90eXBlPXtjaGVj''@;'; put 'put ''a1NpZ25hdHVyZTpmdW5jdGlvbihVKXt2YXIgcT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDQpO2lmKHEhPT1VKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCBvciBidWcgOiB1bmV4cGVjdGVkIHNpZ25hdHVyZSAoIitFLnByZXR0eShxKSsiLCBleHBlY3RlZCAiK0UucHJldHR5KFUp''@;'; put 'put ''KyIpIil9LHJlYWRCbG9ja0VuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3RoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10''@;'; put 'put ''aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5jZW50cmFsRGlyT2Zmc2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy56aXBD''@;'; put 'put ''b21tZW50TGVuZ3RoPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy56aXBDb21tZW50PXRoaXMucmVhZGVyLnJlYWRTdHJpbmcodGhpcy56aXBDb21tZW50TGVuZ3RoKSx0aGlzLnppcENvbW1lbnQ9Wi51dGY4ZGVjb2RlKHRoaXMuemlwQ29tbWVudCl9LHJlYWRCbG9ja1ppcDY0RW5kT2ZD''@;'; put 'put ''ZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy56aXA2NEVuZE9mQ2VudHJhbFNpemU9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLnZlcnNpb25NYWRlQnk9dGhpcy5yZWFkZXIucmVhZFN0cmluZygyKSx0aGlzLnZlcnNpb25OZWVkZWQ9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLmRpc2tO''@;'; put 'put ''dW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoNCksdGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPXRoaXMu''@;'; put 'put ''cmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpck9mZnNldD10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YT17fTtmb3IodmFyIEosZWUscmUsVT10aGlzLnppcDY0RW5k''@;'; put 'put ''T2ZDZW50cmFsU2l6ZS00NDswPFU7KUo9dGhpcy5yZWFkZXIucmVhZEludCgyKSxlZT10aGlzLnJlYWRlci5yZWFkSW50KDQpLHJlPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoZWUpLHRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YVtKXT17aWQ6SixsZW5ndGg6ZWUsdmFsdWU6cmV9fSxyZWFkQmxv''@;'; put 'put ''Y2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3I6ZnVuY3Rpb24oKXtpZih0aGlzLmRpc2tXaXRoWmlwNjRDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXI9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlz''@;'; put 'put ''LmRpc2tzQ291bnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmRpc2tzQ291bnQ+MSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXZvbHVtZXMgemlwIGFyZSBub3Qgc3VwcG9ydGVkIil9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIFUscTtmb3IoVT0wO1U8dGhpcy5maWxlcy5s''@;'; put 'put ''ZW5ndGg7VSsrKXRoaXMucmVhZGVyLnNldEluZGV4KChxPXRoaXMuZmlsZXNbVV0pLmxvY2FsSGVhZGVyT2Zmc2V0KSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouTE9DQUxfRklMRV9IRUFERVIpLHEucmVhZExvY2FsUGFydCh0aGlzLnJlYWRlcikscS5oYW5kbGVVVEY4KCl9LHJlYWRDZW50cmFs''@;'; put 'put ''RGlyOmZ1bmN0aW9uKCl7dmFyIFU7Zm9yKHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMuY2VudHJhbERpck9mZnNldCk7dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KT09PXouQ0VOVFJBTF9GSUxFX0hFQURFUjspKFU9bmV3IE4oe3ppcDY0OnRoaXMuemlwNjR9LHRoaXMubG9hZE9wdGlvbnMp''@;'; put 'put ''KS5yZWFkQ2VudHJhbFBhcnQodGhpcy5yZWFkZXIpLHRoaXMuZmlsZXMucHVzaChVKX0scmVhZEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3ZhciBVPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHouQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKTtpZigtMT09PVUpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJDb3JydXB0ZWQgemlwIDogY2FuJ3QgZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkiKTtpZih0aGlzLnJlYWRlci5zZXRJbmRleChVKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlYWRCbG9ja0VuZE9mQ2VudHJhbCgpLHRoaXMu''@;'; put 'put ''ZGlza051bWJlcj09PUUuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD09PUUuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9PT1FLk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclJlY29yZHM9PT1F''@;'; put 'put ''Lk1BWF9WQUxVRV8xNkJJVFN8fHRoaXMuY2VudHJhbERpclNpemU9PT1FLk1BWF9WQUxVRV8zMkJJVFN8fHRoaXMuY2VudHJhbERpck9mZnNldD09PUUuTUFYX1ZBTFVFXzMyQklUUyl7aWYodGhpcy56aXA2ND0hMCwtMT09PShVPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKHou''@;'; put 'put ''WklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUikpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IGNhbid0IGZpbmQgdGhlIFpJUDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yIik7dGhpcy5yZWFkZXIuc2V0SW5kZXgoVSksdGhpcy5jaGVja1NpZ25hdHVy''@;'; put 'put ''ZSh6LlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1IpLHRoaXMucmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWxMb2NhdG9yKCksdGhpcy5yZWFkZXIuc2V0SW5kZXgodGhpcy5yZWxhdGl2ZU9mZnNldEVuZE9mWmlwNjRDZW50cmFsRGlyKSx0aGlzLmNoZWNrU2lnbmF0dXJlKHouWklQ''@;'; put 'put ''NjRfQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKSx0aGlzLnJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsKCl9fSxwcmVwYXJlUmVhZGVyOmZ1bmN0aW9uKFUpe3ZhciBxPUUuZ2V0VHlwZU9mKFUpO3RoaXMucmVhZGVyPSJzdHJpbmciIT09cXx8Qi51aW50OGFycmF5PyJub2RlYnVmZmVyIj09PXE/''@;'; put 'put ''bmV3IEQoVSk6bmV3IFQoRS50cmFuc2Zvcm1UbygidWludDhhcnJheSIsVSkpOm5ldyBHKFUsdGhpcy5sb2FkT3B0aW9ucy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcpfSxsb2FkOmZ1bmN0aW9uKFUpe3RoaXMucHJlcGFyZVJlYWRlcihVKSx0aGlzLnJlYWRFbmRPZkNlbnRyYWwoKSx0aGlzLnJl''@;'; put 'put ''YWRDZW50cmFsRGlyKCksdGhpcy5yZWFkTG9jYWxGaWxlcygpfX0sSS5leHBvcnRzPVl9LHsiLi9ub2RlQnVmZmVyUmVhZGVyIjoxMiwiLi9vYmplY3QiOjEzLCIuL3NpZ25hdHVyZSI6MTQsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi9zdXBwb3J0IjoxNywiLi91aW50OEFycmF5UmVhZGVyIjox''@;'; put 'put ''OCwiLi91dGlscyI6MjEsIi4vemlwRW50cnkiOjIzfV0sMjM6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi9zdHJpbmdSZWFkZXIiKSxEPU8oIi4vdXRpbHMiKSxUPU8oIi4vY29tcHJlc3NlZE9iamVjdCIpLEU9TygiLi9vYmplY3QiKTtmdW5jdGlvbiB6KE4sQil7''@;'; put 'put ''dGhpcy5vcHRpb25zPU4sdGhpcy5sb2FkT3B0aW9ucz1CfXoucHJvdG90eXBlPXtpc0VuY3J5cHRlZDpmdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy5iaXRGbGFnKX0sdXNlVVRGODpmdW5jdGlvbigpe3JldHVybiEoMjA0OCZ+dGhpcy5iaXRGbGFnKX0scHJlcGFyZUNvbXByZXNzZWRDb250''@;'; put 'put ''ZW50OmZ1bmN0aW9uKE4sQixaKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgWT1OLmluZGV4O04uc2V0SW5kZXgoQik7dmFyIFU9Ti5yZWFkRGF0YShaKTtyZXR1cm4gTi5zZXRJbmRleChZKSxVfX0scHJlcGFyZUNvbnRlbnQ6ZnVuY3Rpb24oTixCLFosWSxVKXtyZXR1cm4gZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgcT1ELnRyYW5zZm9ybVRvKFkudW5jb21wcmVzc0lucHV0VHlwZSx0aGlzLmdldENvbXByZXNzZWRDb250ZW50KCkpLEo9WS51bmNvbXByZXNzKHEpO2lmKEoubGVuZ3RoIT09VSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2giKTtyZXR1''@;'; put 'put ''cm4gSn19LHJlYWRMb2NhbFBhcnQ6ZnVuY3Rpb24oTil7dmFyIEIsWjtpZihOLnNraXAoMjIpLHRoaXMuZmlsZU5hbWVMZW5ndGg9Ti5yZWFkSW50KDIpLFo9Ti5yZWFkSW50KDIpLHRoaXMuZmlsZU5hbWU9Ti5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpLE4uc2tpcChaKSwtMT09''@;'; put 'put ''dGhpcy5jb21wcmVzc2VkU2l6ZXx8LTE9PXRoaXMudW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyBvciBjb3JydXB0ZWQgemlwIDogZGlkbid0IGdldCBlbm91Z2ggaW5mb3JtYXRpb25zIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IChjb21wcmVzc2VkU2l6ZSA9PSAt''@;'; put 'put ''MSB8fCB1bmNvbXByZXNzZWRTaXplID09IC0xKSIpO2lmKG51bGw9PT0oQj1ELmZpbmRDb21wcmVzc2lvbih0aGlzLmNvbXByZXNzaW9uTWV0aG9kKSkpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY29tcHJlc3Npb24gIitELnByZXR0eSh0aGlzLmNvbXByZXNzaW9uTWV0aG9k''@;'; put 'put ''KSsiIHVua25vd24gKGlubmVyIGZpbGUgOiAiK3RoaXMuZmlsZU5hbWUrIikiKTtpZih0aGlzLmRlY29tcHJlc3NlZD1uZXcgVCx0aGlzLmRlY29tcHJlc3NlZC5jb21wcmVzc2VkU2l6ZT10aGlzLmNvbXByZXNzZWRTaXplLHRoaXMuZGVjb21wcmVzc2VkLnVuY29tcHJlc3NlZFNpemU9dGhp''@;'; put 'put ''cy51bmNvbXByZXNzZWRTaXplLHRoaXMuZGVjb21wcmVzc2VkLmNyYzMyPXRoaXMuY3JjMzIsdGhpcy5kZWNvbXByZXNzZWQuY29tcHJlc3Npb25NZXRob2Q9dGhpcy5jb21wcmVzc2lvbk1ldGhvZCx0aGlzLmRlY29tcHJlc3NlZC5nZXRDb21wcmVzc2VkQ29udGVudD10aGlzLnByZXBhcmVD''@;'; put 'put ''b21wcmVzc2VkQ29udGVudChOLE4uaW5kZXgsdGhpcy5jb21wcmVzc2VkU2l6ZSxCKSx0aGlzLmRlY29tcHJlc3NlZC5nZXRDb250ZW50PXRoaXMucHJlcGFyZUNvbnRlbnQoTixOLmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsQix0aGlzLnVuY29tcHJlc3NlZFNpemUpLHRoaXMubG9hZE9w''@;'; put 'put ''dGlvbnMuY2hlY2tDUkMzMiYmKHRoaXMuZGVjb21wcmVzc2VkPUQudHJhbnNmb3JtVG8oInN0cmluZyIsdGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudCgpKSxFLmNyYzMyKHRoaXMuZGVjb21wcmVzc2VkKSE9PXRoaXMuY3JjMzIpKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6''@;'; put 'put ''IENSQzMyIG1pc21hdGNoIil9LHJlYWRDZW50cmFsUGFydDpmdW5jdGlvbihOKXtpZih0aGlzLnZlcnNpb25NYWRlQnk9Ti5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRlZD1OLnJlYWRJbnQoMiksdGhpcy5iaXRGbGFnPU4ucmVhZEludCgyKSx0aGlzLmNvbXByZXNzaW9uTWV0aG9k''@;'; put 'put ''PU4ucmVhZFN0cmluZygyKSx0aGlzLmRhdGU9Ti5yZWFkRGF0ZSgpLHRoaXMuY3JjMzI9Ti5yZWFkSW50KDQpLHRoaXMuY29tcHJlc3NlZFNpemU9Ti5yZWFkSW50KDQpLHRoaXMudW5jb21wcmVzc2VkU2l6ZT1OLnJlYWRJbnQoNCksdGhpcy5maWxlTmFtZUxlbmd0aD1OLnJlYWRJbnQoMiks''@;'; put 'put ''dGhpcy5leHRyYUZpZWxkc0xlbmd0aD1OLnJlYWRJbnQoMiksdGhpcy5maWxlQ29tbWVudExlbmd0aD1OLnJlYWRJbnQoMiksdGhpcy5kaXNrTnVtYmVyU3RhcnQ9Ti5yZWFkSW50KDIpLHRoaXMuaW50ZXJuYWxGaWxlQXR0cmlidXRlcz1OLnJlYWRJbnQoMiksdGhpcy5leHRlcm5hbEZpbGVB''@;'; put 'put ''dHRyaWJ1dGVzPU4ucmVhZEludCg0KSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PU4ucmVhZEludCg0KSx0aGlzLmlzRW5jcnlwdGVkKCkpdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0ZWQgemlwIGFyZSBub3Qgc3VwcG9ydGVkIik7dGhpcy5maWxlTmFtZT1OLnJlYWRTdHJpbmcodGhpcy5maWxl''@;'; put 'put ''TmFtZUxlbmd0aCksdGhpcy5yZWFkRXh0cmFGaWVsZHMoTiksdGhpcy5wYXJzZVpJUDY0RXh0cmFGaWVsZChOKSx0aGlzLmZpbGVDb21tZW50PU4ucmVhZFN0cmluZyh0aGlzLmZpbGVDb21tZW50TGVuZ3RoKSx0aGlzLmRpcj0hISgxNiZ0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXMpfSxw''@;'; put 'put ''YXJzZVpJUDY0RXh0cmFGaWVsZDpmdW5jdGlvbihOKXtpZih0aGlzLmV4dHJhRmllbGRzWzFdKXt2YXIgQj1uZXcgRyh0aGlzLmV4dHJhRmllbGRzWzFdLnZhbHVlKTt0aGlzLnVuY29tcHJlc3NlZFNpemU9PT1ELk1BWF9WQUxVRV8zMkJJVFMmJih0aGlzLnVuY29tcHJlc3NlZFNpemU9Qi5y''@;'; put 'put ''ZWFkSW50KDgpKSx0aGlzLmNvbXByZXNzZWRTaXplPT09RC5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5jb21wcmVzc2VkU2l6ZT1CLnJlYWRJbnQoOCkpLHRoaXMubG9jYWxIZWFkZXJPZmZzZXQ9PT1ELk1BWF9WQUxVRV8zMkJJVFMmJih0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PUIucmVhZElu''@;'; put 'put ''dCg4KSksdGhpcy5kaXNrTnVtYmVyU3RhcnQ9PT1ELk1BWF9WQUxVRV8zMkJJVFMmJih0aGlzLmRpc2tOdW1iZXJTdGFydD1CLnJlYWRJbnQoNCkpfX0scmVhZEV4dHJhRmllbGRzOmZ1bmN0aW9uKE4pe3ZhciBaLFksVSxCPU4uaW5kZXg7Zm9yKHRoaXMuZXh0cmFGaWVsZHM9dGhpcy5leHRy''@;'; put 'put ''YUZpZWxkc3x8e307Ti5pbmRleDxCK3RoaXMuZXh0cmFGaWVsZHNMZW5ndGg7KVo9Ti5yZWFkSW50KDIpLFk9Ti5yZWFkSW50KDIpLFU9Ti5yZWFkU3RyaW5nKFkpLHRoaXMuZXh0cmFGaWVsZHNbWl09e2lkOlosbGVuZ3RoOlksdmFsdWU6VX19LGhhbmRsZVVURjg6ZnVuY3Rpb24oKXtpZih0''@;'; put 'put ''aGlzLnVzZVVURjgoKSl0aGlzLmZpbGVOYW1lPUUudXRmOGRlY29kZSh0aGlzLmZpbGVOYW1lKSx0aGlzLmZpbGVDb21tZW50PUUudXRmOGRlY29kZSh0aGlzLmZpbGVDb21tZW50KTtlbHNle3ZhciBOPXRoaXMuZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aCgpO251bGwhPT1OJiYodGhpcy5m''@;'; put 'put ''aWxlTmFtZT1OKTt2YXIgQj10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZUNvbW1lbnQoKTtudWxsIT09QiYmKHRoaXMuZmlsZUNvbW1lbnQ9Qil9fSxmaW5kRXh0cmFGaWVsZFVuaWNvZGVQYXRoOmZ1bmN0aW9uKCl7dmFyIE49dGhpcy5leHRyYUZpZWxkc1syODc4OV07aWYoTil7dmFyIEI9''@;'; put 'put ''bmV3IEcoTi52YWx1ZSk7cmV0dXJuIDEhPT1CLnJlYWRJbnQoMSl8fEUuY3JjMzIodGhpcy5maWxlTmFtZSkhPT1CLnJlYWRJbnQoNCk/bnVsbDpFLnV0ZjhkZWNvZGUoQi5yZWFkU3RyaW5nKE4ubGVuZ3RoLTUpKX1yZXR1cm4gbnVsbH0sZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudDpm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBOPXRoaXMuZXh0cmFGaWVsZHNbMjU0NjFdO2lmKE4pe3ZhciBCPW5ldyBHKE4udmFsdWUpO3JldHVybiAxIT09Qi5yZWFkSW50KDEpfHxFLmNyYzMyKHRoaXMuZmlsZUNvbW1lbnQpIT09Qi5yZWFkSW50KDQpP251bGw6RS51dGY4ZGVjb2RlKEIucmVhZFN0cmluZyhO''@;'; put 'put ''Lmxlbmd0aC01KSl9cmV0dXJuIG51bGx9fSxJLmV4cG9ydHM9en0seyIuL2NvbXByZXNzZWRPYmplY3QiOjIsIi4vb2JqZWN0IjoxMywiLi9zdHJpbmdSZWFkZXIiOjE1LCIuL3V0aWxzIjoyMX1dLDI0OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciB6PXt9OygwLE8oIi4vbGli''@;'; put 'put ''L3V0aWxzL2NvbW1vbiIpLmFzc2lnbikoeixPKCIuL2xpYi9kZWZsYXRlIiksTygiLi9saWIvaW5mbGF0ZSIpLE8oIi4vbGliL3psaWIvY29uc3RhbnRzIikpLEkuZXhwb3J0cz16fSx7Ii4vbGliL2RlZmxhdGUiOjI1LCIuL2xpYi9pbmZsYXRlIjoyNiwiLi9saWIvdXRpbHMvY29tbW9uIjoy''@;'; put 'put ''NywiLi9saWIvemxpYi9jb25zdGFudHMiOjMwfV0sMjU6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi96bGliL2RlZmxhdGUuanMiKSxEPU8oIi4vdXRpbHMvY29tbW9uIiksVD1PKCIuL3V0aWxzL3N0cmluZ3MiKSxFPU8oIi4vemxpYi9tZXNzYWdlcyIpLHo9Tygi''@;'; put 'put ''Li96bGliL3pzdHJlYW0iKSxlZT1mdW5jdGlvbihsZSl7dGhpcy5vcHRpb25zPUQuYXNzaWduKHtsZXZlbDotMSxtZXRob2Q6OCxjaHVua1NpemU6MTYzODQsd2luZG93Qml0czoxNSxtZW1MZXZlbDo4LHN0cmF0ZWd5OjAsdG86IiJ9LGxlfHx7fSk7dmFyIGFlPXRoaXMub3B0aW9uczthZS5y''@;'; put 'put ''YXcmJmFlLndpbmRvd0JpdHM+MD9hZS53aW5kb3dCaXRzPS1hZS53aW5kb3dCaXRzOmFlLmd6aXAmJmFlLndpbmRvd0JpdHM+MCYmYWUud2luZG93Qml0czwxNiYmKGFlLndpbmRvd0JpdHMrPTE2KSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10s''@;'; put 'put ''dGhpcy5zdHJtPW5ldyB6LHRoaXMuc3RybS5hdmFpbF9vdXQ9MDt2YXIgVz1HLmRlZmxhdGVJbml0Mih0aGlzLnN0cm0sYWUubGV2ZWwsYWUubWV0aG9kLGFlLndpbmRvd0JpdHMsYWUubWVtTGV2ZWwsYWUuc3RyYXRlZ3kpO2lmKDAhPT1XKXRocm93IG5ldyBFcnJvcihFW1ddKTthZS5oZWFk''@;'; put 'put ''ZXImJkcuZGVmbGF0ZVNldEhlYWRlcih0aGlzLnN0cm0sYWUuaGVhZGVyKX07ZnVuY3Rpb24gcmUobGUsYWUpe3ZhciBXPW5ldyBlZShhZSk7aWYoVy5wdXNoKGxlLCEwKSxXLmVycil0aHJvdyBXLm1zZztyZXR1cm4gVy5yZXN1bHR9ZWUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obGUsYWUp''@;'; put 'put ''e3ZhciBBLEYsVz10aGlzLnN0cm0sYj10aGlzLm9wdGlvbnMuY2h1bmtTaXplO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7Rj1hZT09PX5+YWU/YWU6ITA9PT1hZT80OjAsVy5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGxlP1Quc3RyaW5nMmJ1ZihsZSk6bGUsVy5uZXh0X2luPTAsVy5hdmFpbF9p''@;'; put 'put ''bj1XLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09Vy5hdmFpbF9vdXQmJihXLm91dHB1dD1uZXcgRC5CdWY4KGIpLFcubmV4dF9vdXQ9MCxXLmF2YWlsX291dD1iKSwxIT09KEE9Ry5kZWZsYXRlKFcsRikpJiYwIT09QSlyZXR1cm4gdGhpcy5vbkVuZChBKSx0aGlzLmVuZGVkPSEwLCExOygwPT09''@;'; put 'put ''Vy5hdmFpbF9vdXR8fDA9PT1XLmF2YWlsX2luJiY0PT09RikmJnRoaXMub25EYXRhKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP1QuYnVmMmJpbnN0cmluZyhELnNocmlua0J1ZihXLm91dHB1dCxXLm5leHRfb3V0KSk6RC5zaHJpbmtCdWYoVy5vdXRwdXQsVy5uZXh0X291dCkpfXdoaWxl''@;'; put 'put ''KChXLmF2YWlsX2luPjB8fDA9PT1XLmF2YWlsX291dCkmJjEhPT1BKTtyZXR1cm4gNCE9PUZ8fChBPUcuZGVmbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoQSksdGhpcy5lbmRlZD0hMCwwPT09QSl9LGVlLnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24obGUpe3RoaXMuY2h1bmtzLnB1''@;'; put 'put ''c2gobGUpfSxlZS5wcm90b3R5cGUub25FbmQ9ZnVuY3Rpb24obGUpezA9PT1sZSYmKHRoaXMucmVzdWx0PSJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP3RoaXMuY2h1bmtzLmpvaW4oIiIpOkQuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcykpLHRoaXMuY2h1bmtzPVtdLHRoaXMuZXJyPWxl''@;'; put 'put ''LHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LGouRGVmbGF0ZT1lZSxqLmRlZmxhdGU9cmUsai5kZWZsYXRlUmF3PWZ1bmN0aW9uIGllKGxlLGFlKXtyZXR1cm4oYWU9YWV8fHt9KS5yYXc9ITAscmUobGUsYWUpfSxqLmd6aXA9ZnVuY3Rpb24gdWUobGUsYWUpe3JldHVybihhZT1hZXx8e30pLmd6''@;'; put 'put ''aXA9ITAscmUobGUsYWUpfX0seyIuL3V0aWxzL2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9kZWZsYXRlLmpzIjozMiwiLi96bGliL21lc3NhZ2VzIjozNywiLi96bGliL3pzdHJlYW0iOjM5fV0sMjY6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9''@;'; put 'put ''TygiLi96bGliL2luZmxhdGUuanMiKSxEPU8oIi4vdXRpbHMvY29tbW9uIiksVD1PKCIuL3V0aWxzL3N0cmluZ3MiKSxFPU8oIi4vemxpYi9jb25zdGFudHMiKSx6PU8oIi4vemxpYi9tZXNzYWdlcyIpLE49TygiLi96bGliL3pzdHJlYW0iKSxCPU8oIi4vemxpYi9nemhlYWRlciIpLFo9ZnVu''@;'; put 'put ''Y3Rpb24ocSl7dGhpcy5vcHRpb25zPUQuYXNzaWduKHtjaHVua1NpemU6MTYzODQsd2luZG93Qml0czowLHRvOiIifSxxfHx7fSk7dmFyIEo9dGhpcy5vcHRpb25zO0oucmF3JiZKLndpbmRvd0JpdHM+PTAmJkoud2luZG93Qml0czwxNiYmKEoud2luZG93Qml0cz0tSi53aW5kb3dCaXRzLDA9''@;'; put 'put ''PT1KLndpbmRvd0JpdHMmJihKLndpbmRvd0JpdHM9LTE1KSksSi53aW5kb3dCaXRzPj0wJiZKLndpbmRvd0JpdHM8MTYmJiEocSYmcS53aW5kb3dCaXRzKSYmKEoud2luZG93Qml0cys9MzIpLEoud2luZG93Qml0cz4xNSYmSi53aW5kb3dCaXRzPDQ4JiYoMTUmSi53aW5kb3dCaXRzfHwoSi53''@;'; put 'put ''aW5kb3dCaXRzfD0xNSkpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IE4sdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBlZT1HLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sSi53aW5kb3dCaXRzKTtpZihlZSE9PUUuWl9P''@;'; put 'put ''Syl0aHJvdyBuZXcgRXJyb3IoeltlZV0pO3RoaXMuaGVhZGVyPW5ldyBCLEcuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfTtmdW5jdGlvbiBZKHEsSil7dmFyIGVlPW5ldyBaKEopO2lmKGVlLnB1c2gocSwhMCksZWUuZXJyKXRocm93IGVlLm1zZztyZXR1cm4gZWUu''@;'; put 'put ''cmVzdWx0fVoucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24ocSxKKXt2YXIgaWUsdWUsbGUsYWUsVyxlZT10aGlzLnN0cm0scmU9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO3VlPUo9PT1+fko/SjohMD09PUo/RS5aX0ZJTklTSDpFLlpfTk9fRkxVU0gsZWUu''@;'; put 'put ''aW5wdXQ9InN0cmluZyI9PXR5cGVvZiBxP1QuYmluc3RyaW5nMmJ1ZihxKTpxLGVlLm5leHRfaW49MCxlZS5hdmFpbF9pbj1lZS5pbnB1dC5sZW5ndGg7ZG97aWYoMD09PWVlLmF2YWlsX291dCYmKGVlLm91dHB1dD1uZXcgRC5CdWY4KHJlKSxlZS5uZXh0X291dD0wLGVlLmF2YWlsX291dD1y''@;'; put 'put ''ZSksKGllPUcuaW5mbGF0ZShlZSxFLlpfTk9fRkxVU0gpKSE9PUUuWl9TVFJFQU1fRU5EJiZpZSE9PUUuWl9PSylyZXR1cm4gdGhpcy5vbkVuZChpZSksdGhpcy5lbmRlZD0hMCwhMTtlZS5uZXh0X291dCYmKDA9PT1lZS5hdmFpbF9vdXR8fGllPT09RS5aX1NUUkVBTV9FTkR8fDA9PT1lZS5h''@;'; put 'put ''dmFpbF9pbiYmdWU9PT1FLlpfRklOSVNIKSYmKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvPyhsZT1ULnV0Zjhib3JkZXIoZWUub3V0cHV0LGVlLm5leHRfb3V0KSxhZT1lZS5uZXh0X291dC1sZSxXPVQuYnVmMnN0cmluZyhlZS5vdXRwdXQsbGUpLGVlLm5leHRfb3V0PWFlLGVlLmF2YWls''@;'; put 'put ''X291dD1yZS1hZSxhZSYmRC5hcnJheVNldChlZS5vdXRwdXQsZWUub3V0cHV0LGxlLGFlLDApLHRoaXMub25EYXRhKFcpKTp0aGlzLm9uRGF0YShELnNocmlua0J1ZihlZS5vdXRwdXQsZWUubmV4dF9vdXQpKSl9d2hpbGUoZWUuYXZhaWxfaW4+MCYmaWUhPT1FLlpfU1RSRUFNX0VORCk7cmV0''@;'; put 'put ''dXJuIGllPT09RS5aX1NUUkVBTV9FTkQmJih1ZT1FLlpfRklOSVNIKSx1ZSE9PUUuWl9GSU5JU0h8fChpZT1HLmluZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKGllKSx0aGlzLmVuZGVkPSEwLGllPT09RS5aX09LKX0sWi5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKHEpe3RoaXMu''@;'; put 'put ''Y2h1bmtzLnB1c2gocSl9LFoucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHEpe3E9PT1FLlpfT0smJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpELmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0''@;'; put 'put ''aGlzLmVycj1xLHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LGouSW5mbGF0ZT1aLGouaW5mbGF0ZT1ZLGouaW5mbGF0ZVJhdz1mdW5jdGlvbiBVKHEsSil7cmV0dXJuKEo9Snx8e30pLnJhdz0hMCxZKHEsSil9LGoudW5nemlwPVl9LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmlu''@;'; put 'put ''Z3MiOjI4LCIuL3psaWIvY29uc3RhbnRzIjozMCwiLi96bGliL2d6aGVhZGVyIjozMywiLi96bGliL2luZmxhdGUuanMiOjM1LCIuL3psaWIvbWVzc2FnZXMiOjM3LCIuL3psaWIvenN0cmVhbSI6Mzl9XSwyNzpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgRz10eXBlb2YgVWlu''@;'; put 'put ''dDhBcnJheTwidSImJnR5cGVvZiBVaW50MTZBcnJheTwidSImJnR5cGVvZiBJbnQzMkFycmF5PCJ1IjtqLmFzc2lnbj1mdW5jdGlvbihFKXtmb3IodmFyIHo9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3oubGVuZ3RoOyl7dmFyIE49ei5zaGlmdCgpO2lmKE4pe2lm''@;'; put 'put ''KCJvYmplY3QiIT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKE4rIm11c3QgYmUgbm9uLW9iamVjdCIpO2Zvcih2YXIgQiBpbiBOKU4uaGFzT3duUHJvcGVydHkoQikmJihFW0JdPU5bQl0pfX1yZXR1cm4gRX0sai5zaHJpbmtCdWY9ZnVuY3Rpb24oRSx6KXtyZXR1cm4gRS5sZW5ndGg9''@;'; put 'put ''PT16P0U6RS5zdWJhcnJheT9FLnN1YmFycmF5KDAseik6KEUubGVuZ3RoPXosRSl9O3ZhciBEPXthcnJheVNldDpmdW5jdGlvbihFLHosTixCLFope2lmKHouc3ViYXJyYXkmJkUuc3ViYXJyYXkpRS5zZXQoei5zdWJhcnJheShOLE4rQiksWik7ZWxzZSBmb3IodmFyIFk9MDtZPEI7WSsrKUVb''@;'; put 'put ''WitZXT16W04rWV19LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24oRSl7dmFyIHosTixCLFosWSxVO2ZvcihCPTAsej0wLE49RS5sZW5ndGg7ejxOO3orKylCKz1FW3pdLmxlbmd0aDtmb3IoVT1uZXcgVWludDhBcnJheShCKSxaPTAsej0wLE49RS5sZW5ndGg7ejxOO3orKylVLnNldChZPUVbel0s''@;'; put 'put ''WiksWis9WS5sZW5ndGg7cmV0dXJuIFV9fSxUPXthcnJheVNldDpmdW5jdGlvbihFLHosTixCLFope2Zvcih2YXIgWT0wO1k8QjtZKyspRVtaK1ldPXpbTitZXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihFKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sRSl9fTtqLnNldFR5cGVkPWZ1bmN0''@;'; put 'put ''aW9uKEUpe0U/KGouQnVmOD1VaW50OEFycmF5LGouQnVmMTY9VWludDE2QXJyYXksai5CdWYzMj1JbnQzMkFycmF5LGouYXNzaWduKGosRCkpOihqLkJ1Zjg9QXJyYXksai5CdWYxNj1BcnJheSxqLkJ1ZjMyPUFycmF5LGouYXNzaWduKGosVCkpfSxqLnNldFR5cGVkKEcpfSx7fV0sMjg6W2Z1''@;'; put 'put ''bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi9jb21tb24iKSxEPSEwLFQ9ITA7dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxbMF0pfWNhdGNoe0Q9ITF9dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgxKSl9Y2F0''@;'; put 'put ''Y2h7VD0hMX1mb3IodmFyIEU9bmV3IEcuQnVmOCgyNTYpLHo9MDt6PDI1Njt6KyspRVt6XT16Pj0yNTI/Njp6Pj0yNDg/NTp6Pj0yNDA/NDp6Pj0yMjQ/Mzp6Pj0xOTI/MjoxO2Z1bmN0aW9uIE4oQixaKXtpZihaPDY1NTM3JiYoQi5zdWJhcnJheSYmVHx8IUIuc3ViYXJyYXkmJkQpKXJldHVy''@;'; put 'put ''biBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsRy5zaHJpbmtCdWYoQixaKSk7Zm9yKHZhciBZPSIiLFU9MDtVPFo7VSsrKVkrPVN0cmluZy5mcm9tQ2hhckNvZGUoQltVXSk7cmV0dXJuIFl9RVsyNTRdPUVbMjU0XT0xLGouc3RyaW5nMmJ1Zj1mdW5jdGlvbihCKXt2YXIgWixZLFUs''@;'; put 'put ''cSxKLGVlPUIubGVuZ3RoLHJlPTA7Zm9yKHE9MDtxPGVlO3ErKyk1NTI5Nj09KDY0NTEyJihZPUIuY2hhckNvZGVBdChxKSkpJiZxKzE8ZWUmJjU2MzIwPT0oNjQ1MTImKFU9Qi5jaGFyQ29kZUF0KHErMSkpKSYmKFk9NjU1MzYrKFktNTUyOTY8PDEwKSsoVS01NjMyMCkscSsrKSxyZSs9WTwx''@;'; put 'put ''Mjg/MTpZPDIwNDg/MjpZPDY1NTM2PzM6NDtmb3IoWj1uZXcgRy5CdWY4KHJlKSxKPTAscT0wO0o8cmU7cSsrKTU1Mjk2PT0oNjQ1MTImKFk9Qi5jaGFyQ29kZUF0KHEpKSkmJnErMTxlZSYmNTYzMjA9PSg2NDUxMiYoVT1CLmNoYXJDb2RlQXQocSsxKSkpJiYoWT02NTUzNisoWS01NTI5Njw8''@;'; put 'put ''MTApKyhVLTU2MzIwKSxxKyspLFk8MTI4P1pbSisrXT1ZOlk8MjA0OD8oWltKKytdPTE5MnxZPj4+NixaW0orK109MTI4fDYzJlkpOlk8NjU1MzY/KFpbSisrXT0yMjR8WT4+PjEyLFpbSisrXT0xMjh8WT4+PjYmNjMsWltKKytdPTEyOHw2MyZZKTooWltKKytdPTI0MHxZPj4+MTgsWltKKytd''@;'; put 'put ''PTEyOHxZPj4+MTImNjMsWltKKytdPTEyOHxZPj4+NiY2MyxaW0orK109MTI4fDYzJlkpO3JldHVybiBafSxqLmJ1ZjJiaW5zdHJpbmc9ZnVuY3Rpb24oQil7cmV0dXJuIE4oQixCLmxlbmd0aCl9LGouYmluc3RyaW5nMmJ1Zj1mdW5jdGlvbihCKXtmb3IodmFyIFo9bmV3IEcuQnVmOChCLmxl''@;'; put 'put ''bmd0aCksWT0wLFU9Wi5sZW5ndGg7WTxVO1krKylaW1ldPUIuY2hhckNvZGVBdChZKTtyZXR1cm4gWn0sai5idWYyc3RyaW5nPWZ1bmN0aW9uKEIsWil7dmFyIFksVSxxLEosZWU9Wnx8Qi5sZW5ndGgscmU9bmV3IEFycmF5KDIqZWUpO2ZvcihVPTAsWT0wO1k8ZWU7KWlmKChxPUJbWSsrXSk8''@;'; put 'put ''MTI4KXJlW1UrK109cTtlbHNlIGlmKChKPUVbcV0pPjQpcmVbVSsrXT02NTUzMyxZKz1KLTE7ZWxzZXtmb3IocSY9Mj09PUo/MzE6Mz09PUo/MTU6NztKPjEmJlk8ZWU7KXE9cTw8Nnw2MyZCW1krK10sSi0tO0o+MT9yZVtVKytdPTY1NTMzOnE8NjU1MzY/cmVbVSsrXT1xOihyZVtVKytdPTU1''@;'; put 'put ''Mjk2fChxLT02NTUzNik+PjEwJjEwMjMscmVbVSsrXT01NjMyMHwxMDIzJnEpfXJldHVybiBOKHJlLFUpfSxqLnV0Zjhib3JkZXI9ZnVuY3Rpb24oQixaKXt2YXIgWTtmb3IoKFo9Wnx8Qi5sZW5ndGgpPkIubGVuZ3RoJiYoWj1CLmxlbmd0aCksWT1aLTE7WT49MCYmMTI4PT0oMTkyJkJbWV0p''@;'; put 'put ''OylZLS07cmV0dXJuIFk8MHx8MD09PVk/WjpZK0VbQltZXV0+Wj9ZOlp9fSx7Ii4vY29tbW9uIjoyN31dLDI5OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO0kuZXhwb3J0cz1mdW5jdGlvbiBHKEQsVCxFLHope2Zvcih2YXIgTj02NTUzNSZELEI9RD4+PjE2JjY1NTM1LFo9MDswIT09''@;'; put 'put ''RTspe0UtPVo9RT4yZTM/MmUzOkU7ZG97Qj1CKyhOPU4rVFt6KytdfDApfDB9d2hpbGUoLS1aKTtOJT02NTUyMSxCJT02NTUyMX1yZXR1cm4gTnxCPDwxNn19LHt9XSwzMDpbZnVuY3Rpb24oTyxJLGope0kuZXhwb3J0cz17Wl9OT19GTFVTSDowLFpfUEFSVElBTF9GTFVTSDoxLFpfU1lOQ19G''@;'; put 'put ''TFVTSDoyLFpfRlVMTF9GTFVTSDozLFpfRklOSVNIOjQsWl9CTE9DSzo1LFpfVFJFRVM6NixaX09LOjAsWl9TVFJFQU1fRU5EOjEsWl9ORUVEX0RJQ1Q6MixaX0VSUk5POi0xLFpfU1RSRUFNX0VSUk9SOi0yLFpfREFUQV9FUlJPUjotMyxaX0JVRl9FUlJPUjotNSxaX05PX0NPTVBSRVNTSU9O''@;'; put 'put ''OjAsWl9CRVNUX1NQRUVEOjEsWl9CRVNUX0NPTVBSRVNTSU9OOjksWl9ERUZBVUxUX0NPTVBSRVNTSU9OOi0xLFpfRklMVEVSRUQ6MSxaX0hVRkZNQU5fT05MWToyLFpfUkxFOjMsWl9GSVhFRDo0LFpfREVGQVVMVF9TVFJBVEVHWTowLFpfQklOQVJZOjAsWl9URVhUOjEsWl9VTktOT1dOOjIs''@;'; put 'put ''Wl9ERUZMQVRFRDo4fX0se31dLDMxOltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBEPWZ1bmN0aW9uIEcoKXtmb3IodmFyIEUsej1bXSxOPTA7TjwyNTY7TisrKXtFPU47Zm9yKHZhciBCPTA7Qjw4O0IrKylFPTEmRT8zOTg4MjkyMzg0XkU+Pj4xOkU+Pj4xO3pbTl09RX1yZXR1''@;'; put 'put ''cm4gen0oKTtJLmV4cG9ydHM9ZnVuY3Rpb24gVChFLHosTixCKXt2YXIgWj1ELFk9QitOO0U9fkU7Zm9yKHZhciBVPUI7VTxZO1UrKylFPUU+Pj44XlpbMjU1JihFXnpbVV0pXTtyZXR1cm5+RX19LHt9XSwzMjpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0Ijt2YXIgRz1PKCIuLi91dGls''@;'; put 'put ''cy9jb21tb24iKSxEPU8oIi4vdHJlZXMiKSxUPU8oIi4vYWRsZXIzMiIpLEU9TygiLi9jcmMzMiIpLHo9TygiLi9tZXNzYWdlcyIpLE49MCxxPTAsZWU9LTIsRj0yLEg9OCx3PTI4NixLPTMwLHRlPTE5LGNlPTIqdysxLGhlPTE1LFNlPTMsTGU9MjU4LEhlPUxlK1NlKzEsRGU9NDIsb3Q9MTEz''@;'; put 'put ''O2Z1bmN0aW9uIFplKG50LEV0KXtyZXR1cm4gbnQubXNnPXpbRXRdLEV0fWZ1bmN0aW9uIGN0KG50KXtyZXR1cm4obnQ8PDEpLShudD40Pzk6MCl9ZnVuY3Rpb24ga2UobnQpe2Zvcih2YXIgRXQ9bnQubGVuZ3RoOy0tRXQ+PTA7KW50W0V0XT0wfWZ1bmN0aW9uIEFlKG50KXt2YXIgRXQ9bnQu''@;'; put 'put ''c3RhdGUsZW49RXQucGVuZGluZztlbj5udC5hdmFpbF9vdXQmJihlbj1udC5hdmFpbF9vdXQpLDAhPT1lbiYmKEcuYXJyYXlTZXQobnQub3V0cHV0LEV0LnBlbmRpbmdfYnVmLEV0LnBlbmRpbmdfb3V0LGVuLG50Lm5leHRfb3V0KSxudC5uZXh0X291dCs9ZW4sRXQucGVuZGluZ19vdXQrPWVu''@;'; put 'put ''LG50LnRvdGFsX291dCs9ZW4sbnQuYXZhaWxfb3V0LT1lbixFdC5wZW5kaW5nLT1lbiwwPT09RXQucGVuZGluZyYmKEV0LnBlbmRpbmdfb3V0PTApKX1mdW5jdGlvbiBqZShudCxFdCl7RC5fdHJfZmx1c2hfYmxvY2sobnQsbnQuYmxvY2tfc3RhcnQ+PTA/bnQuYmxvY2tfc3RhcnQ6LTEsbnQu''@;'; put 'put ''c3Ryc3RhcnQtbnQuYmxvY2tfc3RhcnQsRXQpLG50LmJsb2NrX3N0YXJ0PW50LnN0cnN0YXJ0LEFlKG50LnN0cm0pfWZ1bmN0aW9uIGl0KG50LEV0KXtudC5wZW5kaW5nX2J1ZltudC5wZW5kaW5nKytdPUV0fWZ1bmN0aW9uIHN0KG50LEV0KXtudC5wZW5kaW5nX2J1ZltudC5wZW5kaW5nKytd''@;'; put 'put ''PUV0Pj4+OCYyNTUsbnQucGVuZGluZ19idWZbbnQucGVuZGluZysrXT0yNTUmRXR9ZnVuY3Rpb24geHQobnQsRXQsZW4sVHQpe3ZhciB5dD1udC5hdmFpbF9pbjtyZXR1cm4geXQ+VHQmJih5dD1UdCksMD09PXl0PzA6KG50LmF2YWlsX2luLT15dCxHLmFycmF5U2V0KEV0LG50LmlucHV0LG50''@;'; put 'put ''Lm5leHRfaW4seXQsZW4pLDE9PT1udC5zdGF0ZS53cmFwP250LmFkbGVyPVQobnQuYWRsZXIsRXQseXQsZW4pOjI9PT1udC5zdGF0ZS53cmFwJiYobnQuYWRsZXI9RShudC5hZGxlcixFdCx5dCxlbikpLG50Lm5leHRfaW4rPXl0LG50LnRvdGFsX2luKz15dCx5dCl9ZnVuY3Rpb24gRnQobnQs''@;'; put 'put ''RXQpe3ZhciB5dCwkdCxlbj1udC5tYXhfY2hhaW5fbGVuZ3RoLFR0PW50LnN0cnN0YXJ0LHhuPW50LnByZXZfbGVuZ3RoLHp0PW50Lm5pY2VfbWF0Y2gsX249bnQuc3Ryc3RhcnQ+bnQud19zaXplLUhlP250LnN0cnN0YXJ0LShudC53X3NpemUtSGUpOjAsT249bnQud2luZG93LHJuPW50Lndf''@;'; put 'put ''bWFzayxQbj1udC5wcmV2LENuPW50LnN0cnN0YXJ0K0xlLFh0PU9uW1R0K3huLTFdLEpuPU9uW1R0K3huXTtudC5wcmV2X2xlbmd0aD49bnQuZ29vZF9tYXRjaCYmKGVuPj49MiksenQ+bnQubG9va2FoZWFkJiYoenQ9bnQubG9va2FoZWFkKTtkb3tpZihPblsoeXQ9RXQpK3huXT09PUpuJiZP''@;'; put 'put ''blt5dCt4bi0xXT09PVh0JiZPblt5dF09PT1PbltUdF0mJk9uWysreXRdPT09T25bVHQrMV0pe1R0Kz0yLHl0Kys7ZG97fXdoaWxlKE9uWysrVHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJk9uWysr''@;'; put 'put ''VHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJk9uWysrVHRdPT09T25bKyt5dF0mJlR0PENuKTtpZigkdD1MZS0oQ24tVHQpLFR0PUNuLUxlLCR0PnhuKXtpZihudC5tYXRjaF9zdGFydD1FdCx4bj0kdCwkdD49enQpYnJlYWs7WHQ9T25b''@;'; put 'put ''VHQreG4tMV0sSm49T25bVHQreG5dfX19d2hpbGUoKEV0PVBuW0V0JnJuXSk+X24mJjAhPS0tZW4pO3JldHVybiB4bjw9bnQubG9va2FoZWFkP3huOm50Lmxvb2thaGVhZH1mdW5jdGlvbiBPdChudCl7dmFyIGVuLFR0LHl0LCR0LHhuLEV0PW50Lndfc2l6ZTtkb3tpZigkdD1udC53aW5kb3df''@;'; put 'put ''c2l6ZS1udC5sb29rYWhlYWQtbnQuc3Ryc3RhcnQsbnQuc3Ryc3RhcnQ+PUV0KyhFdC1IZSkpe0cuYXJyYXlTZXQobnQud2luZG93LG50LndpbmRvdyxFdCxFdCwwKSxudC5tYXRjaF9zdGFydC09RXQsbnQuc3Ryc3RhcnQtPUV0LG50LmJsb2NrX3N0YXJ0LT1FdCxlbj1UdD1udC5oYXNoX3Np''@;'; put 'put ''emU7ZG97eXQ9bnQuaGVhZFstLWVuXSxudC5oZWFkW2VuXT15dD49RXQ/eXQtRXQ6MH13aGlsZSgtLVR0KTtlbj1UdD1FdDtkb3t5dD1udC5wcmV2Wy0tZW5dLG50LnByZXZbZW5dPXl0Pj1FdD95dC1FdDowfXdoaWxlKC0tVHQpOyR0Kz1FdH1pZigwPT09bnQuc3RybS5hdmFpbF9pbilicmVh''@;'; put 'put ''aztpZihUdD14dChudC5zdHJtLG50LndpbmRvdyxudC5zdHJzdGFydCtudC5sb29rYWhlYWQsJHQpLG50Lmxvb2thaGVhZCs9VHQsbnQubG9va2FoZWFkK250Lmluc2VydD49U2UpZm9yKG50Lmluc19oPW50LndpbmRvd1t4bj1udC5zdHJzdGFydC1udC5pbnNlcnRdLG50Lmluc19oPShudC5p''@;'; put 'put ''bnNfaDw8bnQuaGFzaF9zaGlmdF5udC53aW5kb3dbeG4rMV0pJm50Lmhhc2hfbWFzaztudC5pbnNlcnQmJihudC5pbnNfaD0obnQuaW5zX2g8PG50Lmhhc2hfc2hpZnRebnQud2luZG93W3huK1NlLTFdKSZudC5oYXNoX21hc2ssbnQucHJldlt4biZudC53X21hc2tdPW50LmhlYWRbbnQuaW5z''@;'; put 'put ''X2hdLG50LmhlYWRbbnQuaW5zX2hdPXhuLHhuKyssbnQuaW5zZXJ0LS0sIShudC5sb29rYWhlYWQrbnQuaW5zZXJ0PFNlKSk7KTt9d2hpbGUobnQubG9va2FoZWFkPEhlJiYwIT09bnQuc3RybS5hdmFpbF9pbil9ZnVuY3Rpb24gYm4obnQsRXQpe2Zvcih2YXIgZW4sVHQ7Oyl7aWYobnQubG9v''@;'; put 'put ''a2FoZWFkPEhlKXtpZihPdChudCksbnQubG9va2FoZWFkPEhlJiZFdD09PU4pcmV0dXJuIDE7aWYoMD09PW50Lmxvb2thaGVhZClicmVha31pZihlbj0wLG50Lmxvb2thaGVhZD49U2UmJihudC5pbnNfaD0obnQuaW5zX2g8PG50Lmhhc2hfc2hpZnRebnQud2luZG93W250LnN0cnN0YXJ0K1Nl''@;'; put 'put ''LTFdKSZudC5oYXNoX21hc2ssZW49bnQucHJldltudC5zdHJzdGFydCZudC53X21hc2tdPW50LmhlYWRbbnQuaW5zX2hdLG50LmhlYWRbbnQuaW5zX2hdPW50LnN0cnN0YXJ0KSwwIT09ZW4mJm50LnN0cnN0YXJ0LWVuPD1udC53X3NpemUtSGUmJihudC5tYXRjaF9sZW5ndGg9RnQobnQsZW4p''@;'; put 'put ''KSxudC5tYXRjaF9sZW5ndGg+PVNlKWlmKFR0PUQuX3RyX3RhbGx5KG50LG50LnN0cnN0YXJ0LW50Lm1hdGNoX3N0YXJ0LG50Lm1hdGNoX2xlbmd0aC1TZSksbnQubG9va2FoZWFkLT1udC5tYXRjaF9sZW5ndGgsbnQubWF0Y2hfbGVuZ3RoPD1udC5tYXhfbGF6eV9tYXRjaCYmbnQubG9va2Fo''@;'; put 'put ''ZWFkPj1TZSl7bnQubWF0Y2hfbGVuZ3RoLS07ZG97bnQuc3Ryc3RhcnQrKyxudC5pbnNfaD0obnQuaW5zX2g8PG50Lmhhc2hfc2hpZnRebnQud2luZG93W250LnN0cnN0YXJ0K1NlLTFdKSZudC5oYXNoX21hc2ssZW49bnQucHJldltudC5zdHJzdGFydCZudC53X21hc2tdPW50LmhlYWRbbnQu''@;'; put 'put ''aW5zX2hdLG50LmhlYWRbbnQuaW5zX2hdPW50LnN0cnN0YXJ0fXdoaWxlKDAhPS0tbnQubWF0Y2hfbGVuZ3RoKTtudC5zdHJzdGFydCsrfWVsc2UgbnQuc3Ryc3RhcnQrPW50Lm1hdGNoX2xlbmd0aCxudC5tYXRjaF9sZW5ndGg9MCxudC5pbnNfaD1udC53aW5kb3dbbnQuc3Ryc3RhcnRdLG50''@;'; put 'put ''Lmluc19oPShudC5pbnNfaDw8bnQuaGFzaF9zaGlmdF5udC53aW5kb3dbbnQuc3Ryc3RhcnQrMV0pJm50Lmhhc2hfbWFzaztlbHNlIFR0PUQuX3RyX3RhbGx5KG50LDAsbnQud2luZG93W250LnN0cnN0YXJ0XSksbnQubG9va2FoZWFkLS0sbnQuc3Ryc3RhcnQrKztpZihUdCYmKGplKG50LCEx''@;'; put 'put ''KSwwPT09bnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBudC5pbnNlcnQ9bnQuc3Ryc3RhcnQ8U2UtMT9udC5zdHJzdGFydDpTZS0xLDQ9PT1FdD8oamUobnQsITApLDA9PT1udC5zdHJtLmF2YWlsX291dD8zOjQpOm50Lmxhc3RfbGl0JiYoamUobnQsITEpLDA9PT1udC5zdHJt''@;'; put 'put ''LmF2YWlsX291dCk/MToyfWZ1bmN0aW9uIEJ0KG50LEV0KXtmb3IodmFyIGVuLFR0LHl0Ozspe2lmKG50Lmxvb2thaGVhZDxIZSl7aWYoT3QobnQpLG50Lmxvb2thaGVhZDxIZSYmRXQ9PT1OKXJldHVybiAxO2lmKDA9PT1udC5sb29rYWhlYWQpYnJlYWt9aWYoZW49MCxudC5sb29rYWhlYWQ+''@;'; put 'put ''PVNlJiYobnQuaW5zX2g9KG50Lmluc19oPDxudC5oYXNoX3NoaWZ0Xm50LndpbmRvd1tudC5zdHJzdGFydCtTZS0xXSkmbnQuaGFzaF9tYXNrLGVuPW50LnByZXZbbnQuc3Ryc3RhcnQmbnQud19tYXNrXT1udC5oZWFkW250Lmluc19oXSxudC5oZWFkW250Lmluc19oXT1udC5zdHJzdGFydCks''@;'; put 'put ''bnQucHJldl9sZW5ndGg9bnQubWF0Y2hfbGVuZ3RoLG50LnByZXZfbWF0Y2g9bnQubWF0Y2hfc3RhcnQsbnQubWF0Y2hfbGVuZ3RoPVNlLTEsMCE9PWVuJiZudC5wcmV2X2xlbmd0aDxudC5tYXhfbGF6eV9tYXRjaCYmbnQuc3Ryc3RhcnQtZW48PW50Lndfc2l6ZS1IZSYmKG50Lm1hdGNoX2xl''@;'; put 'put ''bmd0aD1GdChudCxlbiksbnQubWF0Y2hfbGVuZ3RoPD01JiYoMT09PW50LnN0cmF0ZWd5fHxudC5tYXRjaF9sZW5ndGg9PT1TZSYmbnQuc3Ryc3RhcnQtbnQubWF0Y2hfc3RhcnQ+NDA5NikmJihudC5tYXRjaF9sZW5ndGg9U2UtMSkpLG50LnByZXZfbGVuZ3RoPj1TZSYmbnQubWF0Y2hfbGVu''@;'; put 'put ''Z3RoPD1udC5wcmV2X2xlbmd0aCl7eXQ9bnQuc3Ryc3RhcnQrbnQubG9va2FoZWFkLVNlLFR0PUQuX3RyX3RhbGx5KG50LG50LnN0cnN0YXJ0LTEtbnQucHJldl9tYXRjaCxudC5wcmV2X2xlbmd0aC1TZSksbnQubG9va2FoZWFkLT1udC5wcmV2X2xlbmd0aC0xLG50LnByZXZfbGVuZ3RoLT0y''@;'; put 'put ''O2RveysrbnQuc3Ryc3RhcnQ8PXl0JiYobnQuaW5zX2g9KG50Lmluc19oPDxudC5oYXNoX3NoaWZ0Xm50LndpbmRvd1tudC5zdHJzdGFydCtTZS0xXSkmbnQuaGFzaF9tYXNrLGVuPW50LnByZXZbbnQuc3Ryc3RhcnQmbnQud19tYXNrXT1udC5oZWFkW250Lmluc19oXSxudC5oZWFkW250Lmlu''@;'; put 'put ''c19oXT1udC5zdHJzdGFydCl9d2hpbGUoMCE9LS1udC5wcmV2X2xlbmd0aCk7aWYobnQubWF0Y2hfYXZhaWxhYmxlPTAsbnQubWF0Y2hfbGVuZ3RoPVNlLTEsbnQuc3Ryc3RhcnQrKyxUdCYmKGplKG50LCExKSwwPT09bnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfWVsc2UgaWYobnQubWF0''@;'; put 'put ''Y2hfYXZhaWxhYmxlKXtpZigoVHQ9RC5fdHJfdGFsbHkobnQsMCxudC53aW5kb3dbbnQuc3Ryc3RhcnQtMV0pKSYmamUobnQsITEpLG50LnN0cnN0YXJ0KyssbnQubG9va2FoZWFkLS0sMD09PW50LnN0cm0uYXZhaWxfb3V0KXJldHVybiAxfWVsc2UgbnQubWF0Y2hfYXZhaWxhYmxlPTEsbnQu''@;'; put 'put ''c3Ryc3RhcnQrKyxudC5sb29rYWhlYWQtLX1yZXR1cm4gbnQubWF0Y2hfYXZhaWxhYmxlJiYoVHQ9RC5fdHJfdGFsbHkobnQsMCxudC53aW5kb3dbbnQuc3Ryc3RhcnQtMV0pLG50Lm1hdGNoX2F2YWlsYWJsZT0wKSxudC5pbnNlcnQ9bnQuc3Ryc3RhcnQ8U2UtMT9udC5zdHJzdGFydDpTZS0x''@;'; put 'put ''LDQ9PT1FdD8oamUobnQsITApLDA9PT1udC5zdHJtLmF2YWlsX291dD8zOjQpOm50Lmxhc3RfbGl0JiYoamUobnQsITEpLDA9PT1udC5zdHJtLmF2YWlsX291dCk/MToyfXZhciBHbixubj1mdW5jdGlvbihudCxFdCxlbixUdCx5dCl7dGhpcy5nb29kX2xlbmd0aD1udCx0aGlzLm1heF9sYXp5''@;'; put 'put ''PUV0LHRoaXMubmljZV9sZW5ndGg9ZW4sdGhpcy5tYXhfY2hhaW49VHQsdGhpcy5mdW5jPXl0fTtmdW5jdGlvbiBmdCgpe3RoaXMuc3RybT1udWxsLHRoaXMuc3RhdHVzPTAsdGhpcy5wZW5kaW5nX2J1Zj1udWxsLHRoaXMucGVuZGluZ19idWZfc2l6ZT0wLHRoaXMucGVuZGluZ19vdXQ9MCx0''@;'; put 'put ''aGlzLnBlbmRpbmc9MCx0aGlzLndyYXA9MCx0aGlzLmd6aGVhZD1udWxsLHRoaXMuZ3ppbmRleD0wLHRoaXMubWV0aG9kPUgsdGhpcy5sYXN0X2ZsdXNoPS0xLHRoaXMud19zaXplPTAsdGhpcy53X2JpdHM9MCx0aGlzLndfbWFzaz0wLHRoaXMud2luZG93PW51bGwsdGhpcy53aW5kb3dfc2l6''@;'; put 'put ''ZT0wLHRoaXMucHJldj1udWxsLHRoaXMuaGVhZD1udWxsLHRoaXMuaW5zX2g9MCx0aGlzLmhhc2hfc2l6ZT0wLHRoaXMuaGFzaF9iaXRzPTAsdGhpcy5oYXNoX21hc2s9MCx0aGlzLmhhc2hfc2hpZnQ9MCx0aGlzLmJsb2NrX3N0YXJ0PTAsdGhpcy5tYXRjaF9sZW5ndGg9MCx0aGlzLnByZXZf''@;'; put 'put ''bWF0Y2g9MCx0aGlzLm1hdGNoX2F2YWlsYWJsZT0wLHRoaXMuc3Ryc3RhcnQ9MCx0aGlzLm1hdGNoX3N0YXJ0PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnByZXZfbGVuZ3RoPTAsdGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTAsdGhpcy5tYXhfbGF6eV9tYXRjaD0wLHRoaXMubGV2ZWw9MCx0aGlz''@;'; put 'put ''LnN0cmF0ZWd5PTAsdGhpcy5nb29kX21hdGNoPTAsdGhpcy5uaWNlX21hdGNoPTAsdGhpcy5keW5fbHRyZWU9bmV3IEcuQnVmMTYoMipjZSksdGhpcy5keW5fZHRyZWU9bmV3IEcuQnVmMTYoMiooMipLKzEpKSx0aGlzLmJsX3RyZWU9bmV3IEcuQnVmMTYoMiooMip0ZSsxKSksa2UodGhpcy5k''@;'; put 'put ''eW5fbHRyZWUpLGtlKHRoaXMuZHluX2R0cmVlKSxrZSh0aGlzLmJsX3RyZWUpLHRoaXMubF9kZXNjPW51bGwsdGhpcy5kX2Rlc2M9bnVsbCx0aGlzLmJsX2Rlc2M9bnVsbCx0aGlzLmJsX2NvdW50PW5ldyBHLkJ1ZjE2KGhlKzEpLHRoaXMuaGVhcD1uZXcgRy5CdWYxNigyKncrMSksa2UodGhp''@;'; put 'put ''cy5oZWFwKSx0aGlzLmhlYXBfbGVuPTAsdGhpcy5oZWFwX21heD0wLHRoaXMuZGVwdGg9bmV3IEcuQnVmMTYoMip3KzEpLGtlKHRoaXMuZGVwdGgpLHRoaXMubF9idWY9MCx0aGlzLmxpdF9idWZzaXplPTAsdGhpcy5sYXN0X2xpdD0wLHRoaXMuZF9idWY9MCx0aGlzLm9wdF9sZW49MCx0aGlz''@;'; put 'put ''LnN0YXRpY19sZW49MCx0aGlzLm1hdGNoZXM9MCx0aGlzLmluc2VydD0wLHRoaXMuYmlfYnVmPTAsdGhpcy5iaV92YWxpZD0wfWZ1bmN0aW9uIGRuKG50KXt2YXIgRXQ7cmV0dXJuIG50JiZudC5zdGF0ZT8obnQudG90YWxfaW49bnQudG90YWxfb3V0PTAsbnQuZGF0YV90eXBlPUYsKEV0PW50''@;'; put 'put ''LnN0YXRlKS5wZW5kaW5nPTAsRXQucGVuZGluZ19vdXQ9MCxFdC53cmFwPDAmJihFdC53cmFwPS1FdC53cmFwKSxFdC5zdGF0dXM9RXQud3JhcD9EZTpvdCxudC5hZGxlcj0yPT09RXQud3JhcD8wOjEsRXQubGFzdF9mbHVzaD1OLEQuX3RyX2luaXQoRXQpLHEpOlplKG50LGVlKX1mdW5jdGlv''@;'; put 'put ''biBobihudCl7dmFyIEV0PWRuKG50KTtyZXR1cm4gRXQ9PT1xJiZmdW5jdGlvbiBZbihudCl7bnQud2luZG93X3NpemU9MipudC53X3NpemUsa2UobnQuaGVhZCksbnQubWF4X2xhenlfbWF0Y2g9R25bbnQubGV2ZWxdLm1heF9sYXp5LG50Lmdvb2RfbWF0Y2g9R25bbnQubGV2ZWxdLmdvb2Rf''@;'; put 'put ''bGVuZ3RoLG50Lm5pY2VfbWF0Y2g9R25bbnQubGV2ZWxdLm5pY2VfbGVuZ3RoLG50Lm1heF9jaGFpbl9sZW5ndGg9R25bbnQubGV2ZWxdLm1heF9jaGFpbixudC5zdHJzdGFydD0wLG50LmJsb2NrX3N0YXJ0PTAsbnQubG9va2FoZWFkPTAsbnQuaW5zZXJ0PTAsbnQubWF0Y2hfbGVuZ3RoPW50''@;'; put 'put ''LnByZXZfbGVuZ3RoPVNlLTEsbnQubWF0Y2hfYXZhaWxhYmxlPTAsbnQuaW5zX2g9MH0obnQuc3RhdGUpLEV0fWZ1bmN0aW9uIGp0KG50LEV0LGVuLFR0LHl0LCR0KXtpZighbnQpcmV0dXJuIGVlO3ZhciB4bj0xO2lmKC0xPT09RXQmJihFdD02KSxUdDwwPyh4bj0wLFR0PS1UdCk6VHQ+MTUm''@;'; put 'put ''Jih4bj0yLFR0LT0xNikseXQ8MXx8eXQ+OXx8ZW4hPT1IfHxUdDw4fHxUdD4xNXx8RXQ8MHx8RXQ+OXx8JHQ8MHx8JHQ+NClyZXR1cm4gWmUobnQsZWUpOzg9PT1UdCYmKFR0PTkpO3ZhciB6dD1uZXcgZnQ7cmV0dXJuIG50LnN0YXRlPXp0LHp0LnN0cm09bnQsenQud3JhcD14bix6dC5nemhl''@;'; put 'put ''YWQ9bnVsbCx6dC53X2JpdHM9VHQsenQud19zaXplPTE8PHp0LndfYml0cyx6dC53X21hc2s9enQud19zaXplLTEsenQuaGFzaF9iaXRzPXl0KzcsenQuaGFzaF9zaXplPTE8PHp0Lmhhc2hfYml0cyx6dC5oYXNoX21hc2s9enQuaGFzaF9zaXplLTEsenQuaGFzaF9zaGlmdD1+figoenQuaGFz''@;'; put 'put ''aF9iaXRzK1NlLTEpL1NlKSx6dC53aW5kb3c9bmV3IEcuQnVmOCgyKnp0Lndfc2l6ZSksenQuaGVhZD1uZXcgRy5CdWYxNih6dC5oYXNoX3NpemUpLHp0LnByZXY9bmV3IEcuQnVmMTYoenQud19zaXplKSx6dC5saXRfYnVmc2l6ZT0xPDx5dCs2LHp0LnBlbmRpbmdfYnVmX3NpemU9NCp6dC5s''@;'; put 'put ''aXRfYnVmc2l6ZSx6dC5wZW5kaW5nX2J1Zj1uZXcgRy5CdWY4KHp0LnBlbmRpbmdfYnVmX3NpemUpLHp0LmRfYnVmPXp0LmxpdF9idWZzaXplPj4xLHp0LmxfYnVmPTMqenQubGl0X2J1ZnNpemUsenQubGV2ZWw9RXQsenQuc3RyYXRlZ3k9JHQsenQubWV0aG9kPWVuLGhuKG50KX1Hbj1bbmV3''@;'; put 'put ''IG5uKDAsMCwwLDAsZnVuY3Rpb24gS3QobnQsRXQpe3ZhciBlbj02NTUzNTtmb3IoZW4+bnQucGVuZGluZ19idWZfc2l6ZS01JiYoZW49bnQucGVuZGluZ19idWZfc2l6ZS01KTs7KXtpZihudC5sb29rYWhlYWQ8PTEpe2lmKE90KG50KSwwPT09bnQubG9va2FoZWFkJiZFdD09PU4pcmV0dXJu''@;'; put 'put ''IDE7aWYoMD09PW50Lmxvb2thaGVhZClicmVha31udC5zdHJzdGFydCs9bnQubG9va2FoZWFkLG50Lmxvb2thaGVhZD0wO3ZhciBUdD1udC5ibG9ja19zdGFydCtlbjtpZigoMD09PW50LnN0cnN0YXJ0fHxudC5zdHJzdGFydD49VHQpJiYobnQubG9va2FoZWFkPW50LnN0cnN0YXJ0LVR0LG50''@;'; put 'put ''LnN0cnN0YXJ0PVR0LGplKG50LCExKSwwPT09bnQuc3RybS5hdmFpbF9vdXQpfHxudC5zdHJzdGFydC1udC5ibG9ja19zdGFydD49bnQud19zaXplLUhlJiYoamUobnQsITEpLDA9PT1udC5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIG50Lmluc2VydD0wLDQ9PT1FdD8oamUobnQs''@;'; put 'put ''ITApLDA9PT1udC5zdHJtLmF2YWlsX291dD8zOjQpOihudC5zdHJzdGFydD5udC5ibG9ja19zdGFydCYmamUobnQsITEpLDEpfSksbmV3IG5uKDQsNCw4LDQsYm4pLG5ldyBubig0LDUsMTYsOCxibiksbmV3IG5uKDQsNiwzMiwzMixibiksbmV3IG5uKDQsNCwxNiwxNixCdCksbmV3IG5uKDgs''@;'; put 'put ''MTYsMzIsMzIsQnQpLG5ldyBubig4LDE2LDEyOCwxMjgsQnQpLG5ldyBubig4LDMyLDEyOCwyNTYsQnQpLG5ldyBubigzMiwxMjgsMjU4LDEwMjQsQnQpLG5ldyBubigzMiwyNTgsMjU4LDQwOTYsQnQpXSxqLmRlZmxhdGVJbml0PWZ1bmN0aW9uIG10KG50LEV0KXtyZXR1cm4ganQobnQsRXQs''@;'; put 'put ''SCwxNSw4LDApfSxqLmRlZmxhdGVJbml0Mj1qdCxqLmRlZmxhdGVSZXNldD1obixqLmRlZmxhdGVSZXNldEtlZXA9ZG4sai5kZWZsYXRlU2V0SGVhZGVyPWZ1bmN0aW9uIHd0KG50LEV0KXtyZXR1cm4gbnQmJm50LnN0YXRlJiYyPT09bnQuc3RhdGUud3JhcD8obnQuc3RhdGUuZ3poZWFkPUV0''@;'; put 'put ''LHEpOmVlfSxqLmRlZmxhdGU9ZnVuY3Rpb24gSHQobnQsRXQpe3ZhciBlbixUdCx5dCwkdDtpZighbnR8fCFudC5zdGF0ZXx8RXQ+NXx8RXQ8MClyZXR1cm4gbnQ/WmUobnQsZWUpOmVlO2lmKFR0PW50LnN0YXRlLCFudC5vdXRwdXR8fCFudC5pbnB1dCYmMCE9PW50LmF2YWlsX2lufHw2NjY9''@;'; put 'put ''PT1UdC5zdGF0dXMmJjQhPT1FdClyZXR1cm4gWmUobnQsMD09PW50LmF2YWlsX291dD8tNTplZSk7aWYoVHQuc3RybT1udCxlbj1UdC5sYXN0X2ZsdXNoLFR0Lmxhc3RfZmx1c2g9RXQsVHQuc3RhdHVzPT09RGUpaWYoMj09PVR0LndyYXApbnQuYWRsZXI9MCxpdChUdCwzMSksaXQoVHQsMTM5''@;'; put 'put ''KSxpdChUdCw4KSxUdC5nemhlYWQ/KGl0KFR0LChUdC5nemhlYWQudGV4dD8xOjApKyhUdC5nemhlYWQuaGNyYz8yOjApKyhUdC5nemhlYWQuZXh0cmE/NDowKSsoVHQuZ3poZWFkLm5hbWU/ODowKSsoVHQuZ3poZWFkLmNvbW1lbnQ/MTY6MCkpLGl0KFR0LDI1NSZUdC5nemhlYWQudGltZSks''@;'; put 'put ''aXQoVHQsVHQuZ3poZWFkLnRpbWU+PjgmMjU1KSxpdChUdCxUdC5nemhlYWQudGltZT4+MTYmMjU1KSxpdChUdCxUdC5nemhlYWQudGltZT4+MjQmMjU1KSxpdChUdCw5PT09VHQubGV2ZWw/MjpUdC5zdHJhdGVneT49Mnx8VHQubGV2ZWw8Mj80OjApLGl0KFR0LDI1NSZUdC5nemhlYWQub3Mp''@;'; put 'put ''LFR0Lmd6aGVhZC5leHRyYSYmVHQuZ3poZWFkLmV4dHJhLmxlbmd0aCYmKGl0KFR0LDI1NSZUdC5nemhlYWQuZXh0cmEubGVuZ3RoKSxpdChUdCxUdC5nemhlYWQuZXh0cmEubGVuZ3RoPj44JjI1NSkpLFR0Lmd6aGVhZC5oY3JjJiYobnQuYWRsZXI9RShudC5hZGxlcixUdC5wZW5kaW5nX2J1''@;'; put 'put ''ZixUdC5wZW5kaW5nLDApKSxUdC5nemluZGV4PTAsVHQuc3RhdHVzPTY5KTooaXQoVHQsMCksaXQoVHQsMCksaXQoVHQsMCksaXQoVHQsMCksaXQoVHQsMCksaXQoVHQsOT09PVR0LmxldmVsPzI6VHQuc3RyYXRlZ3k+PTJ8fFR0LmxldmVsPDI/NDowKSxpdChUdCwzKSxUdC5zdGF0dXM9b3Qp''@;'; put 'put ''O2Vsc2V7dmFyIHhuPUgrKFR0LndfYml0cy04PDw0KTw8ODt4bnw9KFR0LnN0cmF0ZWd5Pj0yfHxUdC5sZXZlbDwyPzA6VHQubGV2ZWw8Nj8xOjY9PT1UdC5sZXZlbD8yOjMpPDw2LDAhPT1UdC5zdHJzdGFydCYmKHhufD0zMikseG4rPTMxLXhuJTMxLFR0LnN0YXR1cz1vdCxzdChUdCx4biks''@;'; put 'put ''MCE9PVR0LnN0cnN0YXJ0JiYoc3QoVHQsbnQuYWRsZXI+Pj4xNiksc3QoVHQsNjU1MzUmbnQuYWRsZXIpKSxudC5hZGxlcj0xfWlmKDY5PT09VHQuc3RhdHVzKWlmKFR0Lmd6aGVhZC5leHRyYSl7Zm9yKHl0PVR0LnBlbmRpbmc7VHQuZ3ppbmRleDwoNjU1MzUmVHQuZ3poZWFkLmV4dHJhLmxl''@;'; put 'put ''bmd0aCkmJihUdC5wZW5kaW5nIT09VHQucGVuZGluZ19idWZfc2l6ZXx8KFR0Lmd6aGVhZC5oY3JjJiZUdC5wZW5kaW5nPnl0JiYobnQuYWRsZXI9RShudC5hZGxlcixUdC5wZW5kaW5nX2J1ZixUdC5wZW5kaW5nLXl0LHl0KSksQWUobnQpLHl0PVR0LnBlbmRpbmcsVHQucGVuZGluZyE9PVR0''@;'; put 'put ''LnBlbmRpbmdfYnVmX3NpemUpKTspaXQoVHQsMjU1JlR0Lmd6aGVhZC5leHRyYVtUdC5nemluZGV4XSksVHQuZ3ppbmRleCsrO1R0Lmd6aGVhZC5oY3JjJiZUdC5wZW5kaW5nPnl0JiYobnQuYWRsZXI9RShudC5hZGxlcixUdC5wZW5kaW5nX2J1ZixUdC5wZW5kaW5nLXl0LHl0KSksVHQuZ3pp''@;'; put 'put ''bmRleD09PVR0Lmd6aGVhZC5leHRyYS5sZW5ndGgmJihUdC5nemluZGV4PTAsVHQuc3RhdHVzPTczKX1lbHNlIFR0LnN0YXR1cz03MztpZig3Mz09PVR0LnN0YXR1cylpZihUdC5nemhlYWQubmFtZSl7eXQ9VHQucGVuZGluZztkb3tpZihUdC5wZW5kaW5nPT09VHQucGVuZGluZ19idWZfc2l6''@;'; put 'put ''ZSYmKFR0Lmd6aGVhZC5oY3JjJiZUdC5wZW5kaW5nPnl0JiYobnQuYWRsZXI9RShudC5hZGxlcixUdC5wZW5kaW5nX2J1ZixUdC5wZW5kaW5nLXl0LHl0KSksQWUobnQpLHl0PVR0LnBlbmRpbmcsVHQucGVuZGluZz09PVR0LnBlbmRpbmdfYnVmX3NpemUpKXskdD0xO2JyZWFrfSR0PVR0Lmd6''@;'; put 'put ''aW5kZXg8VHQuZ3poZWFkLm5hbWUubGVuZ3RoPzI1NSZUdC5nemhlYWQubmFtZS5jaGFyQ29kZUF0KFR0Lmd6aW5kZXgrKyk6MCxpdChUdCwkdCl9d2hpbGUoMCE9PSR0KTtUdC5nemhlYWQuaGNyYyYmVHQucGVuZGluZz55dCYmKG50LmFkbGVyPUUobnQuYWRsZXIsVHQucGVuZGluZ19idWYs''@;'; put 'put ''VHQucGVuZGluZy15dCx5dCkpLDA9PT0kdCYmKFR0Lmd6aW5kZXg9MCxUdC5zdGF0dXM9OTEpfWVsc2UgVHQuc3RhdHVzPTkxO2lmKDkxPT09VHQuc3RhdHVzKWlmKFR0Lmd6aGVhZC5jb21tZW50KXt5dD1UdC5wZW5kaW5nO2Rve2lmKFR0LnBlbmRpbmc9PT1UdC5wZW5kaW5nX2J1Zl9zaXpl''@;'; put 'put ''JiYoVHQuZ3poZWFkLmhjcmMmJlR0LnBlbmRpbmc+eXQmJihudC5hZGxlcj1FKG50LmFkbGVyLFR0LnBlbmRpbmdfYnVmLFR0LnBlbmRpbmcteXQseXQpKSxBZShudCkseXQ9VHQucGVuZGluZyxUdC5wZW5kaW5nPT09VHQucGVuZGluZ19idWZfc2l6ZSkpeyR0PTE7YnJlYWt9JHQ9VHQuZ3pp''@;'; put 'put ''bmRleDxUdC5nemhlYWQuY29tbWVudC5sZW5ndGg/MjU1JlR0Lmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQoVHQuZ3ppbmRleCsrKTowLGl0KFR0LCR0KX13aGlsZSgwIT09JHQpO1R0Lmd6aGVhZC5oY3JjJiZUdC5wZW5kaW5nPnl0JiYobnQuYWRsZXI9RShudC5hZGxlcixUdC5wZW5kaW5n''@;'; put 'put ''X2J1ZixUdC5wZW5kaW5nLXl0LHl0KSksMD09PSR0JiYoVHQuc3RhdHVzPTEwMyl9ZWxzZSBUdC5zdGF0dXM9MTAzO2lmKDEwMz09PVR0LnN0YXR1cyYmKFR0Lmd6aGVhZC5oY3JjPyhUdC5wZW5kaW5nKzI+VHQucGVuZGluZ19idWZfc2l6ZSYmQWUobnQpLFR0LnBlbmRpbmcrMjw9VHQucGVu''@;'; put 'put ''ZGluZ19idWZfc2l6ZSYmKGl0KFR0LDI1NSZudC5hZGxlciksaXQoVHQsbnQuYWRsZXI+PjgmMjU1KSxudC5hZGxlcj0wLFR0LnN0YXR1cz1vdCkpOlR0LnN0YXR1cz1vdCksMCE9PVR0LnBlbmRpbmcpe2lmKEFlKG50KSwwPT09bnQuYXZhaWxfb3V0KXJldHVybiBUdC5sYXN0X2ZsdXNoPS0x''@;'; put 'put ''LHF9ZWxzZSBpZigwPT09bnQuYXZhaWxfaW4mJmN0KEV0KTw9Y3QoZW4pJiY0IT09RXQpcmV0dXJuIFplKG50LC01KTtpZig2NjY9PT1UdC5zdGF0dXMmJjAhPT1udC5hdmFpbF9pbilyZXR1cm4gWmUobnQsLTUpO2lmKDAhPT1udC5hdmFpbF9pbnx8MCE9PVR0Lmxvb2thaGVhZHx8RXQhPT1O''@;'; put 'put ''JiY2NjYhPT1UdC5zdGF0dXMpe3ZhciBfbj0yPT09VHQuc3RyYXRlZ3k/ZnVuY3Rpb24gTm4obnQsRXQpe2Zvcih2YXIgZW47Oyl7aWYoMD09PW50Lmxvb2thaGVhZCYmKE90KG50KSwwPT09bnQubG9va2FoZWFkKSl7aWYoRXQ9PT1OKXJldHVybiAxO2JyZWFrfWlmKG50Lm1hdGNoX2xlbmd0''@;'; put 'put ''aD0wLGVuPUQuX3RyX3RhbGx5KG50LDAsbnQud2luZG93W250LnN0cnN0YXJ0XSksbnQubG9va2FoZWFkLS0sbnQuc3Ryc3RhcnQrKyxlbiYmKGplKG50LCExKSwwPT09bnQuc3RybS5hdmFpbF9vdXQpKXJldHVybiAxfXJldHVybiBudC5pbnNlcnQ9MCw0PT09RXQ/KGplKG50LCEwKSwwPT09''@;'; put 'put ''bnQuc3RybS5hdmFpbF9vdXQ/Mzo0KTpudC5sYXN0X2xpdCYmKGplKG50LCExKSwwPT09bnQuc3RybS5hdmFpbF9vdXQpPzE6Mn0oVHQsRXQpOjM9PT1UdC5zdHJhdGVneT9mdW5jdGlvbiB5bihudCxFdCl7Zm9yKHZhciBlbixUdCx5dCwkdCx4bj1udC53aW5kb3c7Oyl7aWYobnQubG9va2Fo''@;'; put 'put ''ZWFkPD1MZSl7aWYoT3QobnQpLG50Lmxvb2thaGVhZDw9TGUmJkV0PT09TilyZXR1cm4gMTtpZigwPT09bnQubG9va2FoZWFkKWJyZWFrfWlmKG50Lm1hdGNoX2xlbmd0aD0wLG50Lmxvb2thaGVhZD49U2UmJm50LnN0cnN0YXJ0PjAmJihUdD14blt5dD1udC5zdHJzdGFydC0xXSk9PT14blsr''@;'; put 'put ''K3l0XSYmVHQ9PT14blsrK3l0XSYmVHQ9PT14blsrK3l0XSl7JHQ9bnQuc3Ryc3RhcnQrTGU7ZG97fXdoaWxlKFR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5dF0mJlR0PT09eG5bKyt5''@;'; put 'put ''dF0mJlR0PT09eG5bKyt5dF0mJnl0PCR0KTtudC5tYXRjaF9sZW5ndGg9TGUtKCR0LXl0KSxudC5tYXRjaF9sZW5ndGg+bnQubG9va2FoZWFkJiYobnQubWF0Y2hfbGVuZ3RoPW50Lmxvb2thaGVhZCl9aWYobnQubWF0Y2hfbGVuZ3RoPj1TZT8oZW49RC5fdHJfdGFsbHkobnQsMSxudC5tYXRj''@;'; put 'put ''aF9sZW5ndGgtU2UpLG50Lmxvb2thaGVhZC09bnQubWF0Y2hfbGVuZ3RoLG50LnN0cnN0YXJ0Kz1udC5tYXRjaF9sZW5ndGgsbnQubWF0Y2hfbGVuZ3RoPTApOihlbj1ELl90cl90YWxseShudCwwLG50LndpbmRvd1tudC5zdHJzdGFydF0pLG50Lmxvb2thaGVhZC0tLG50LnN0cnN0YXJ0Kysp''@;'; put 'put ''LGVuJiYoamUobnQsITEpLDA9PT1udC5zdHJtLmF2YWlsX291dCkpcmV0dXJuIDF9cmV0dXJuIG50Lmluc2VydD0wLDQ9PT1FdD8oamUobnQsITApLDA9PT1udC5zdHJtLmF2YWlsX291dD8zOjQpOm50Lmxhc3RfbGl0JiYoamUobnQsITEpLDA9PT1udC5zdHJtLmF2YWlsX291dCk/MToyfShU''@;'; put 'put ''dCxFdCk6R25bVHQubGV2ZWxdLmZ1bmMoVHQsRXQpO2lmKCgzPT09X258fDQ9PT1fbikmJihUdC5zdGF0dXM9NjY2KSwxPT09X258fDM9PT1fbilyZXR1cm4gMD09PW50LmF2YWlsX291dCYmKFR0Lmxhc3RfZmx1c2g9LTEpLHE7aWYoMj09PV9uJiYoMT09PUV0P0QuX3RyX2FsaWduKFR0KTo1''@;'; put 'put ''IT09RXQmJihELl90cl9zdG9yZWRfYmxvY2soVHQsMCwwLCExKSwzPT09RXQmJihrZShUdC5oZWFkKSwwPT09VHQubG9va2FoZWFkJiYoVHQuc3Ryc3RhcnQ9MCxUdC5ibG9ja19zdGFydD0wLFR0Lmluc2VydD0wKSkpLEFlKG50KSwwPT09bnQuYXZhaWxfb3V0KSlyZXR1cm4gVHQubGFzdF9m''@;'; put 'put ''bHVzaD0tMSxxfXJldHVybiA0IT09RXQ/cTpUdC53cmFwPD0wPzE6KDI9PT1UdC53cmFwPyhpdChUdCwyNTUmbnQuYWRsZXIpLGl0KFR0LG50LmFkbGVyPj44JjI1NSksaXQoVHQsbnQuYWRsZXI+PjE2JjI1NSksaXQoVHQsbnQuYWRsZXI+PjI0JjI1NSksaXQoVHQsMjU1Jm50LnRvdGFsX2lu''@;'; put 'put ''KSxpdChUdCxudC50b3RhbF9pbj4+OCYyNTUpLGl0KFR0LG50LnRvdGFsX2luPj4xNiYyNTUpLGl0KFR0LG50LnRvdGFsX2luPj4yNCYyNTUpKTooc3QoVHQsbnQuYWRsZXI+Pj4xNiksc3QoVHQsNjU1MzUmbnQuYWRsZXIpKSxBZShudCksVHQud3JhcD4wJiYoVHQud3JhcD0tVHQud3JhcCks''@;'; put 'put ''MCE9PVR0LnBlbmRpbmc/cToxKX0sai5kZWZsYXRlRW5kPWZ1bmN0aW9uIHBuKG50KXt2YXIgRXQ7cmV0dXJuIG50JiZudC5zdGF0ZT8oRXQ9bnQuc3RhdGUuc3RhdHVzKSE9PURlJiY2OSE9PUV0JiY3MyE9PUV0JiY5MSE9PUV0JiYxMDMhPT1FdCYmRXQhPT1vdCYmNjY2IT09RXQ/WmUobnQs''@;'; put 'put ''ZWUpOihudC5zdGF0ZT1udWxsLEV0PT09b3Q/WmUobnQsLTMpOnEpOmVlfSxqLmRlZmxhdGVJbmZvPSJwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9tZXNzYWdlcyI6MzcsIi4v''@;'; put 'put ''dHJlZXMiOjM4fV0sMzM6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7SS5leHBvcnRzPWZ1bmN0aW9uIEcoKXt0aGlzLnRleHQ9MCx0aGlzLnRpbWU9MCx0aGlzLnhmbGFncz0wLHRoaXMub3M9MCx0aGlzLmV4dHJhPW51bGwsdGhpcy5leHRyYV9sZW49MCx0aGlzLm5hbWU9IiIsdGhp''@;'; put 'put ''cy5jb21tZW50PSIiLHRoaXMuaGNyYz0wLHRoaXMuZG9uZT0hMX19LHt9XSwzNDpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0IjtJLmV4cG9ydHM9ZnVuY3Rpb24oRSx6KXt2YXIgTixCLFosWSxVLHEsSixlZSxyZSxpZSx1ZSxsZSxhZSxXLGIsQSxGLEgsZyxDLGssXyxwLHcsSzt3PUUu''@;'; put 'put ''aW5wdXQsWj0oQj1FLm5leHRfaW4pKyhFLmF2YWlsX2luLTUpLEs9RS5vdXRwdXQsVT0oWT1FLm5leHRfb3V0KS0oei1FLmF2YWlsX291dCkscT1ZKyhFLmF2YWlsX291dC0yNTcpLEo9KE49RS5zdGF0ZSkuZG1heCxlZT1OLndzaXplLHJlPU4ud2hhdmUsaWU9Ti53bmV4dCx1ZT1OLndpbmRv''@;'; put 'put ''dyxsZT1OLmhvbGQsYWU9Ti5iaXRzLFc9Ti5sZW5jb2RlLGI9Ti5kaXN0Y29kZSxBPSgxPDxOLmxlbmJpdHMpLTEsRj0oMTw8Ti5kaXN0Yml0cyktMTtlOmRve2FlPDE1JiYobGUrPXdbQisrXTw8YWUsbGUrPXdbQisrXTw8KGFlKz04KSxhZSs9OCksSD1XW2xlJkFdO3Q6Zm9yKDs7KXtpZihs''@;'; put 'put ''ZT4+Pj1nPUg+Pj4yNCxhZS09ZywwPT0oZz1IPj4+MTYmMjU1KSlLW1krK109NjU1MzUmSDtlbHNle2lmKCEoMTYmZykpe2lmKDY0Jmcpe2lmKDMyJmcpe04ubW9kZT0xMjticmVhayBlfUUubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLE4ubW9kZT0zMDticmVhayBlfUg9V1so''@;'; put 'put ''NjU1MzUmSCkrKGxlJigxPDxnKS0xKV07Y29udGludWUgdH1mb3IoQz02NTUzNSZILChnJj0xNSkmJihhZTxnJiYobGUrPXdbQisrXTw8YWUsYWUrPTgpLEMrPWxlJigxPDxnKS0xLGxlPj4+PWcsYWUtPWcpLGFlPDE1JiYobGUrPXdbQisrXTw8YWUsbGUrPXdbQisrXTw8KGFlKz04KSxhZSs9''@;'; put 'put ''OCksSD1iW2xlJkZdOzspe2lmKGxlPj4+PWc9SD4+PjI0LGFlLT1nLDE2JihnPUg+Pj4xNiYyNTUpKXtpZihrPTY1NTM1JkgsYWU8KGcmPTE1KSYmKGxlKz13W0IrK108PGFlLChhZSs9OCk8ZyYmKGxlKz13W0IrK108PGFlLGFlKz04KSksKGsrPWxlJigxPDxnKS0xKT5KKXtFLm1zZz0iaW52''@;'; put 'put ''YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLE4ubW9kZT0zMDticmVhayBlfWlmKGxlPj4+PWcsYWUtPWcsaz4oZz1ZLVUpKXtpZigoZz1rLWcpPnJlJiZOLnNhbmUpe0UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsTi5tb2RlPTMwO2JyZWFrIGV9aWYoXz0wLHA9dWUs''@;'; put 'put ''MD09PWllKXtpZihfKz1lZS1nLGc8Qyl7Qy09Zztkb3tLW1krK109dWVbXysrXX13aGlsZSgtLWcpO189WS1rLHA9S319ZWxzZSBpZihpZTxnKXtpZihfKz1lZStpZS1nLChnLT1pZSk8Qyl7Qy09Zztkb3tLW1krK109dWVbXysrXX13aGlsZSgtLWcpO2lmKF89MCxpZTxDKXtDLT1nPWllO2Rv''@;'; put 'put ''e0tbWSsrXT11ZVtfKytdfXdoaWxlKC0tZyk7Xz1ZLWsscD1LfX19ZWxzZSBpZihfKz1pZS1nLGc8Qyl7Qy09Zztkb3tLW1krK109dWVbXysrXX13aGlsZSgtLWcpO189WS1rLHA9S31mb3IoO0M+MjspS1tZKytdPXBbXysrXSxLW1krK109cFtfKytdLEtbWSsrXT1wW18rK10sQy09MztDJiYo''@;'; put 'put ''S1tZKytdPXBbXysrXSxDPjEmJihLW1krK109cFtfKytdKSl9ZWxzZXtfPVktaztkb3tLW1krK109S1tfKytdLEtbWSsrXT1LW18rK10sS1tZKytdPUtbXysrXSxDLT0zfXdoaWxlKEM+Mik7QyYmKEtbWSsrXT1LW18rK10sQz4xJiYoS1tZKytdPUtbXysrXSkpfWJyZWFrfWlmKDY0Jmcpe0Uu''@;'; put 'put ''bXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLE4ubW9kZT0zMDticmVhayBlfUg9YlsoNjU1MzUmSCkrKGxlJigxPDxnKS0xKV19fWJyZWFrfX13aGlsZShCPFomJlk8cSk7bGUmPSgxPDwoYWUtPShDPWFlPj4zKTw8MykpLTEsRS5uZXh0X2luPUItPUMsRS5uZXh0X291dD1ZLEUuYXZhaWxf''@;'; put 'put ''aW49QjxaP1otQis1OjUtKEItWiksRS5hdmFpbF9vdXQ9WTxxP3EtWSsyNTc6MjU3LShZLXEpLE4uaG9sZD1sZSxOLmJpdHM9YWV9fSx7fV0sMzU6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi4vdXRpbHMvY29tbW9uIiksRD1PKCIuL2FkbGVyMzIiKSxUPU8oIi4v''@;'; put 'put ''Y3JjMzIiKSxFPU8oIi4vaW5mZmFzdCIpLHo9TygiLi9pbmZ0cmVlcyIpLEo9MCxpZT0tMixiPTEsa2U9ODUyLEFlPTU5MjtmdW5jdGlvbiBzdCh3dCl7cmV0dXJuKHd0Pj4+MjQmMjU1KSsod3Q+Pj44JjY1MjgwKSsoKDY1MjgwJnd0KTw8OCkrKCgyNTUmd3QpPDwyNCl9ZnVuY3Rpb24geHQo''@;'; put 'put ''KXt0aGlzLm1vZGU9MCx0aGlzLmxhc3Q9ITEsdGhpcy53cmFwPTAsdGhpcy5oYXZlZGljdD0hMSx0aGlzLmZsYWdzPTAsdGhpcy5kbWF4PTAsdGhpcy5jaGVjaz0wLHRoaXMudG90YWw9MCx0aGlzLmhlYWQ9bnVsbCx0aGlzLndiaXRzPTAsdGhpcy53c2l6ZT0wLHRoaXMud2hhdmU9MCx0aGlz''@;'; put 'put ''LnduZXh0PTAsdGhpcy53aW5kb3c9bnVsbCx0aGlzLmhvbGQ9MCx0aGlzLmJpdHM9MCx0aGlzLmxlbmd0aD0wLHRoaXMub2Zmc2V0PTAsdGhpcy5leHRyYT0wLHRoaXMubGVuY29kZT1udWxsLHRoaXMuZGlzdGNvZGU9bnVsbCx0aGlzLmxlbmJpdHM9MCx0aGlzLmRpc3RiaXRzPTAsdGhpcy5u''@;'; put 'put ''Y29kZT0wLHRoaXMubmxlbj0wLHRoaXMubmRpc3Q9MCx0aGlzLmhhdmU9MCx0aGlzLm5leHQ9bnVsbCx0aGlzLmxlbnM9bmV3IEcuQnVmMTYoMzIwKSx0aGlzLndvcms9bmV3IEcuQnVmMTYoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMu''@;'; put 'put ''YmFjaz0wLHRoaXMud2FzPTB9ZnVuY3Rpb24gRnQod3Qpe3ZhciBqdDtyZXR1cm4gd3QmJnd0LnN0YXRlPyh3dC50b3RhbF9pbj13dC50b3RhbF9vdXQ9KGp0PXd0LnN0YXRlKS50b3RhbD0wLHd0Lm1zZz0iIixqdC53cmFwJiYod3QuYWRsZXI9MSZqdC53cmFwKSxqdC5tb2RlPWIsanQubGFz''@;'; put 'put ''dD0wLGp0LmhhdmVkaWN0PTAsanQuZG1heD0zMjc2OCxqdC5oZWFkPW51bGwsanQuaG9sZD0wLGp0LmJpdHM9MCxqdC5sZW5jb2RlPWp0LmxlbmR5bj1uZXcgRy5CdWYzMihrZSksanQuZGlzdGNvZGU9anQuZGlzdGR5bj1uZXcgRy5CdWYzMihBZSksanQuc2FuZT0xLGp0LmJhY2s9LTEsSik6''@;'; put 'put ''aWV9ZnVuY3Rpb24gT3Qod3Qpe3ZhciBqdDtyZXR1cm4gd3QmJnd0LnN0YXRlPygoanQ9d3Quc3RhdGUpLndzaXplPTAsanQud2hhdmU9MCxqdC53bmV4dD0wLEZ0KHd0KSk6aWV9ZnVuY3Rpb24gS3Qod3QsanQpe3ZhciBtdCxIdDtyZXR1cm4hd3R8fCF3dC5zdGF0ZXx8KEh0PXd0LnN0YXRl''@;'; put 'put ''LGp0PDA/KG10PTAsanQ9LWp0KToobXQ9MSsoanQ+PjQpLGp0PDQ4JiYoanQmPTE1KSksanQmJihqdDw4fHxqdD4xNSkpP2llOihudWxsIT09SHQud2luZG93JiZIdC53Yml0cyE9PWp0JiYoSHQud2luZG93PW51bGwpLEh0LndyYXA9bXQsSHQud2JpdHM9anQsT3Qod3QpKX1mdW5jdGlvbiBi''@;'; put 'put ''bih3dCxqdCl7dmFyIG10LEh0O3JldHVybiB3dD8oSHQ9bmV3IHh0LHd0LnN0YXRlPUh0LEh0LndpbmRvdz1udWxsLChtdD1LdCh3dCxqdCkpIT09SiYmKHd0LnN0YXRlPW51bGwpLG10KTppZX12YXIgTm4sbm4seW49ITA7ZnVuY3Rpb24gR24od3Qpe2lmKHluKXt2YXIganQ7Zm9yKE5uPW5l''@;'; put 'put ''dyBHLkJ1ZjMyKDUxMiksbm49bmV3IEcuQnVmMzIoMzIpLGp0PTA7anQ8MTQ0Oyl3dC5sZW5zW2p0KytdPTg7Zm9yKDtqdDwyNTY7KXd0LmxlbnNbanQrK109OTtmb3IoO2p0PDI4MDspd3QubGVuc1tqdCsrXT03O2Zvcig7anQ8Mjg4Oyl3dC5sZW5zW2p0KytdPTg7Zm9yKHooMSx3dC5sZW5z''@;'; put 'put ''LDAsMjg4LE5uLDAsd3Qud29yayx7Yml0czo5fSksanQ9MDtqdDwzMjspd3QubGVuc1tqdCsrXT01O3ooMix3dC5sZW5zLDAsMzIsbm4sMCx3dC53b3JrLHtiaXRzOjV9KSx5bj0hMX13dC5sZW5jb2RlPU5uLHd0LmxlbmJpdHM9OSx3dC5kaXN0Y29kZT1ubix3dC5kaXN0Yml0cz01fWouaW5m''@;'; put 'put ''bGF0ZVJlc2V0PU90LGouaW5mbGF0ZVJlc2V0Mj1LdCxqLmluZmxhdGVSZXNldEtlZXA9RnQsai5pbmZsYXRlSW5pdD1mdW5jdGlvbiBCdCh3dCl7cmV0dXJuIGJuKHd0LDE1KX0sai5pbmZsYXRlSW5pdDI9Ym4sai5pbmZsYXRlPWZ1bmN0aW9uIGZ0KHd0LGp0KXt2YXIgbXQsSHQscG4sbnQs''@;'; put 'put ''RXQsZW4sVHQseXQsJHQseG4senQsX24sT24scm4sQ24sWHQsSm4seGksYW4sdG4sdWksQXIsZGksZmksUG49MCxocj1uZXcgRy5CdWY4KDQpLGhvPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtpZighd3R8fCF3dC5zdGF0ZXx8IXd0Lm91dHB1dHx8''@;'; put 'put ''IXd0LmlucHV0JiYwIT09d3QuYXZhaWxfaW4pcmV0dXJuIGllOzEyPT09KG10PXd0LnN0YXRlKS5tb2RlJiYobXQubW9kZT0xMyksRXQ9d3QubmV4dF9vdXQscG49d3Qub3V0cHV0LG50PXd0Lm5leHRfaW4sSHQ9d3QuaW5wdXQseXQ9bXQuaG9sZCwkdD1tdC5iaXRzLHhuPWVuPXd0LmF2YWls''@;'; put 'put ''X2luLHp0PVR0PXd0LmF2YWlsX291dCxBcj1KO2U6Zm9yKDs7KXN3aXRjaChtdC5tb2RlKXtjYXNlIGI6aWYoMD09PW10LndyYXApe210Lm1vZGU9MTM7YnJlYWt9Zm9yKDskdDwxNjspe2lmKDA9PT1lbilicmVhayBlO2VuLS0seXQrPUh0W250KytdPDwkdCwkdCs9OH1pZigyJm10LndyYXAm''@;'; put 'put ''JjM1NjE1PT09eXQpe210LmNoZWNrPTAsaHJbMF09MjU1Jnl0LGhyWzFdPXl0Pj4+OCYyNTUsbXQuY2hlY2s9VChtdC5jaGVjayxociwyLDApLHl0PTAsJHQ9MCxtdC5tb2RlPTI7YnJlYWt9aWYobXQuZmxhZ3M9MCxtdC5oZWFkJiYobXQuaGVhZC5kb25lPSExKSwhKDEmbXQud3JhcCl8fCgo''@;'; put 'put ''KDI1NSZ5dCk8PDgpKyh5dD4+OCkpJTMxKXt3dC5tc2c9ImluY29ycmVjdCBoZWFkZXIgY2hlY2siLG10Lm1vZGU9MzA7YnJlYWt9aWYoOCE9KDE1Jnl0KSl7d3QubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsbXQubW9kZT0zMDticmVha31pZigkdC09NCx1aT04KygxNSYoeXQ+''@;'; put 'put ''Pj49NCkpLDA9PT1tdC53Yml0cyltdC53Yml0cz11aTtlbHNlIGlmKHVpPm10LndiaXRzKXt3dC5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLG10Lm1vZGU9MzA7YnJlYWt9bXQuZG1heD0xPDx1aSx3dC5hZGxlcj1tdC5jaGVjaz0xLG10Lm1vZGU9NTEyJnl0PzEwOjEyLHl0PTAsJHQ9MDti''@;'; put 'put ''cmVhaztjYXNlIDI6Zm9yKDskdDwxNjspe2lmKDA9PT1lbilicmVhayBlO2VuLS0seXQrPUh0W250KytdPDwkdCwkdCs9OH1pZihtdC5mbGFncz15dCw4IT0oMjU1Jm10LmZsYWdzKSl7d3QubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsbXQubW9kZT0zMDticmVha31pZig1NzM0''@;'; put 'put ''NCZtdC5mbGFncyl7d3QubXNnPSJ1bmtub3duIGhlYWRlciBmbGFncyBzZXQiLG10Lm1vZGU9MzA7YnJlYWt9bXQuaGVhZCYmKG10LmhlYWQudGV4dD15dD4+OCYxKSw1MTImbXQuZmxhZ3MmJihoclswXT0yNTUmeXQsaHJbMV09eXQ+Pj44JjI1NSxtdC5jaGVjaz1UKG10LmNoZWNrLGhyLDIs''@;'; put 'put ''MCkpLHl0PTAsJHQ9MCxtdC5tb2RlPTM7Y2FzZSAzOmZvcig7JHQ8MzI7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9bXQuaGVhZCYmKG10LmhlYWQudGltZT15dCksNTEyJm10LmZsYWdzJiYoaHJbMF09MjU1Jnl0LGhyWzFdPXl0Pj4+OCYyNTUsaHJb''@;'; put 'put ''Ml09eXQ+Pj4xNiYyNTUsaHJbM109eXQ+Pj4yNCYyNTUsbXQuY2hlY2s9VChtdC5jaGVjayxociw0LDApKSx5dD0wLCR0PTAsbXQubW9kZT00O2Nhc2UgNDpmb3IoOyR0PDE2Oyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fW10LmhlYWQmJihtdC5oZWFk''@;'; put 'put ''LnhmbGFncz0yNTUmeXQsbXQuaGVhZC5vcz15dD4+OCksNTEyJm10LmZsYWdzJiYoaHJbMF09MjU1Jnl0LGhyWzFdPXl0Pj4+OCYyNTUsbXQuY2hlY2s9VChtdC5jaGVjayxociwyLDApKSx5dD0wLCR0PTAsbXQubW9kZT01O2Nhc2UgNTppZigxMDI0Jm10LmZsYWdzKXtmb3IoOyR0PDE2Oyl7''@;'; put 'put ''aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fW10Lmxlbmd0aD15dCxtdC5oZWFkJiYobXQuaGVhZC5leHRyYV9sZW49eXQpLDUxMiZtdC5mbGFncyYmKGhyWzBdPTI1NSZ5dCxoclsxXT15dD4+PjgmMjU1LG10LmNoZWNrPVQobXQuY2hlY2ssaHIsMiwwKSks''@;'; put 'put ''eXQ9MCwkdD0wfWVsc2UgbXQuaGVhZCYmKG10LmhlYWQuZXh0cmE9bnVsbCk7bXQubW9kZT02O2Nhc2UgNjppZigxMDI0Jm10LmZsYWdzJiYoKF9uPW10Lmxlbmd0aCk+ZW4mJihfbj1lbiksX24mJihtdC5oZWFkJiYodWk9bXQuaGVhZC5leHRyYV9sZW4tbXQubGVuZ3RoLG10LmhlYWQuZXh0''@;'; put 'put ''cmF8fChtdC5oZWFkLmV4dHJhPW5ldyBBcnJheShtdC5oZWFkLmV4dHJhX2xlbikpLEcuYXJyYXlTZXQobXQuaGVhZC5leHRyYSxIdCxudCxfbix1aSkpLDUxMiZtdC5mbGFncyYmKG10LmNoZWNrPVQobXQuY2hlY2ssSHQsX24sbnQpKSxlbi09X24sbnQrPV9uLG10Lmxlbmd0aC09X24pLG10''@;'; put 'put ''Lmxlbmd0aCkpYnJlYWsgZTttdC5sZW5ndGg9MCxtdC5tb2RlPTc7Y2FzZSA3OmlmKDIwNDgmbXQuZmxhZ3Mpe2lmKDA9PT1lbilicmVhayBlO19uPTA7ZG97dWk9SHRbbnQrX24rK10sbXQuaGVhZCYmdWkmJm10Lmxlbmd0aDw2NTUzNiYmKG10LmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFy''@;'; put 'put ''Q29kZSh1aSkpfXdoaWxlKHVpJiZfbjxlbik7aWYoNTEyJm10LmZsYWdzJiYobXQuY2hlY2s9VChtdC5jaGVjayxIdCxfbixudCkpLGVuLT1fbixudCs9X24sdWkpYnJlYWsgZX1lbHNlIG10LmhlYWQmJihtdC5oZWFkLm5hbWU9bnVsbCk7bXQubGVuZ3RoPTAsbXQubW9kZT04O2Nhc2UgODpp''@;'; put 'put ''Zig0MDk2Jm10LmZsYWdzKXtpZigwPT09ZW4pYnJlYWsgZTtfbj0wO2Rve3VpPUh0W250K19uKytdLG10LmhlYWQmJnVpJiZtdC5sZW5ndGg8NjU1MzYmJihtdC5oZWFkLmNvbW1lbnQrPVN0cmluZy5mcm9tQ2hhckNvZGUodWkpKX13aGlsZSh1aSYmX248ZW4pO2lmKDUxMiZtdC5mbGFncyYm''@;'; put 'put ''KG10LmNoZWNrPVQobXQuY2hlY2ssSHQsX24sbnQpKSxlbi09X24sbnQrPV9uLHVpKWJyZWFrIGV9ZWxzZSBtdC5oZWFkJiYobXQuaGVhZC5jb21tZW50PW51bGwpO210Lm1vZGU9OTtjYXNlIDk6aWYoNTEyJm10LmZsYWdzKXtmb3IoOyR0PDE2Oyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5''@;'; put 'put ''dCs9SHRbbnQrK108PCR0LCR0Kz04fWlmKHl0IT09KDY1NTM1Jm10LmNoZWNrKSl7d3QubXNnPSJoZWFkZXIgY3JjIG1pc21hdGNoIixtdC5tb2RlPTMwO2JyZWFrfXl0PTAsJHQ9MH1tdC5oZWFkJiYobXQuaGVhZC5oY3JjPW10LmZsYWdzPj45JjEsbXQuaGVhZC5kb25lPSEwKSx3dC5hZGxl''@;'; put 'put ''cj1tdC5jaGVjaz0wLG10Lm1vZGU9MTI7YnJlYWs7Y2FzZSAxMDpmb3IoOyR0PDMyOyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fXd0LmFkbGVyPW10LmNoZWNrPXN0KHl0KSx5dD0wLCR0PTAsbXQubW9kZT0xMTtjYXNlIDExOmlmKDA9PT1tdC5oYXZl''@;'; put 'put ''ZGljdClyZXR1cm4gd3QubmV4dF9vdXQ9RXQsd3QuYXZhaWxfb3V0PVR0LHd0Lm5leHRfaW49bnQsd3QuYXZhaWxfaW49ZW4sbXQuaG9sZD15dCxtdC5iaXRzPSR0LDI7d3QuYWRsZXI9bXQuY2hlY2s9MSxtdC5tb2RlPTEyO2Nhc2UgMTI6aWYoNT09PWp0fHw2PT09anQpYnJlYWsgZTtjYXNl''@;'; put 'put ''IDEzOmlmKG10Lmxhc3Qpe3l0Pj4+PTcmJHQsJHQtPTcmJHQsbXQubW9kZT0yNzticmVha31mb3IoOyR0PDM7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9c3dpdGNoKG10Lmxhc3Q9MSZ5dCwkdC09MSwzJih5dD4+Pj0xKSl7Y2FzZSAwOm10Lm1vZGU9''@;'; put 'put ''MTQ7YnJlYWs7Y2FzZSAxOmlmKEduKG10KSxtdC5tb2RlPTIwLDY9PT1qdCl7eXQ+Pj49MiwkdC09MjticmVhayBlfWJyZWFrO2Nhc2UgMjptdC5tb2RlPTE3O2JyZWFrO2Nhc2UgMzp3dC5tc2c9ImludmFsaWQgYmxvY2sgdHlwZSIsbXQubW9kZT0zMH15dD4+Pj0yLCR0LT0yO2JyZWFrO2Nh''@;'; put 'put ''c2UgMTQ6Zm9yKHl0Pj4+PTcmJHQsJHQtPTcmJHQ7JHQ8MzI7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9aWYoKDY1NTM1Jnl0KSE9KHl0Pj4+MTZeNjU1MzUpKXt3dC5tc2c9ImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiLG10Lm1vZGU9MzA7''@;'; put 'put ''YnJlYWt9aWYobXQubGVuZ3RoPTY1NTM1Jnl0LHl0PTAsJHQ9MCxtdC5tb2RlPTE1LDY9PT1qdClicmVhayBlO2Nhc2UgMTU6bXQubW9kZT0xNjtjYXNlIDE2OmlmKF9uPW10Lmxlbmd0aCl7aWYoX24+ZW4mJihfbj1lbiksX24+VHQmJihfbj1UdCksMD09PV9uKWJyZWFrIGU7Ry5hcnJheVNl''@;'; put 'put ''dChwbixIdCxudCxfbixFdCksZW4tPV9uLG50Kz1fbixUdC09X24sRXQrPV9uLG10Lmxlbmd0aC09X247YnJlYWt9bXQubW9kZT0xMjticmVhaztjYXNlIDE3OmZvcig7JHQ8MTQ7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9aWYobXQubmxlbj0yNTcr''@;'; put 'put ''KDMxJnl0KSwkdC09NSxtdC5uZGlzdD0xKygzMSYoeXQ+Pj49NSkpLCR0LT01LG10Lm5jb2RlPTQrKDE1Jih5dD4+Pj01KSkseXQ+Pj49NCwkdC09NCxtdC5ubGVuPjI4Nnx8bXQubmRpc3Q+MzApe3d0Lm1zZz0idG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiLG10Lm1vZGU9''@;'; put 'put ''MzA7YnJlYWt9bXQuaGF2ZT0wLG10Lm1vZGU9MTg7Y2FzZSAxODpmb3IoO210LmhhdmU8bXQubmNvZGU7KXtmb3IoOyR0PDM7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9bXQubGVuc1tob1ttdC5oYXZlKytdXT03Jnl0LHl0Pj4+PTMsJHQtPTN9Zm9y''@;'; put 'put ''KDttdC5oYXZlPDE5OyltdC5sZW5zW2hvW210LmhhdmUrK11dPTA7aWYobXQubGVuY29kZT1tdC5sZW5keW4sbXQubGVuYml0cz03LEFyPXooMCxtdC5sZW5zLDAsMTksbXQubGVuY29kZSwwLG10LndvcmssZGk9e2JpdHM6bXQubGVuYml0c30pLG10LmxlbmJpdHM9ZGkuYml0cyxBcil7d3Qu''@;'; put 'put ''bXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLG10Lm1vZGU9MzA7YnJlYWt9bXQuaGF2ZT0wLG10Lm1vZGU9MTk7Y2FzZSAxOTpmb3IoO210LmhhdmU8bXQubmxlbittdC5uZGlzdDspe2Zvcig7WHQ9KFBuPW10LmxlbmNvZGVbeXQmKDE8PG10LmxlbmJpdHMpLTFdKT4+PjE2JjI1NSxK''@;'; put 'put ''bj02NTUzNSZQbiwhKChDbj1Qbj4+PjI0KTw9JHQpOyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fWlmKEpuPDE2KXl0Pj4+PUNuLCR0LT1DbixtdC5sZW5zW210LmhhdmUrK109Sm47ZWxzZXtpZigxNj09PUpuKXtmb3IoZmk9Q24rMjskdDxmaTspe2lm''@;'; put 'put ''KDA9PT1lbilicmVhayBlO2VuLS0seXQrPUh0W250KytdPDwkdCwkdCs9OH1pZih5dD4+Pj1DbiwkdC09Q24sMD09PW10LmhhdmUpe3d0Lm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsbXQubW9kZT0zMDticmVha311aT1tdC5sZW5zW210LmhhdmUtMV0sX249MysoMyZ5dCkseXQ+''@;'; put 'put ''Pj49MiwkdC09Mn1lbHNlIGlmKDE3PT09Sm4pe2ZvcihmaT1DbiszOyR0PGZpOyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fSR0LT1Dbix1aT0wLF9uPTMrKDcmKHl0Pj4+PUNuKSkseXQ+Pj49MywkdC09M31lbHNle2ZvcihmaT1Dbis3OyR0PGZpOyl7''@;'; put 'put ''aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dCs9SHRbbnQrK108PCR0LCR0Kz04fSR0LT1Dbix1aT0wLF9uPTExKygxMjcmKHl0Pj4+PUNuKSkseXQ+Pj49NywkdC09N31pZihtdC5oYXZlK19uPm10Lm5sZW4rbXQubmRpc3Qpe3d0Lm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsbXQu''@;'; put 'put ''bW9kZT0zMDticmVha31mb3IoO19uLS07KW10LmxlbnNbbXQuaGF2ZSsrXT11aX19aWYoMzA9PT1tdC5tb2RlKWJyZWFrO2lmKDA9PT1tdC5sZW5zWzI1Nl0pe3d0Lm1zZz0iaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrIixtdC5tb2RlPTMwO2JyZWFrfWlmKG10LmxlbmJp''@;'; put 'put ''dHM9OSxBcj16KDEsbXQubGVucywwLG10Lm5sZW4sbXQubGVuY29kZSwwLG10LndvcmssZGk9e2JpdHM6bXQubGVuYml0c30pLG10LmxlbmJpdHM9ZGkuYml0cyxBcil7d3QubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQiLG10Lm1vZGU9MzA7YnJlYWt9aWYobXQuZGlzdGJpdHM9''@;'; put 'put ''NixtdC5kaXN0Y29kZT1tdC5kaXN0ZHluLEFyPXooMixtdC5sZW5zLG10Lm5sZW4sbXQubmRpc3QsbXQuZGlzdGNvZGUsMCxtdC53b3JrLGRpPXtiaXRzOm10LmRpc3RiaXRzfSksbXQuZGlzdGJpdHM9ZGkuYml0cyxBcil7d3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlcyBzZXQiLG10Lm1vZGU9''@;'; put 'put ''MzA7YnJlYWt9aWYobXQubW9kZT0yMCw2PT09anQpYnJlYWsgZTtjYXNlIDIwOm10Lm1vZGU9MjE7Y2FzZSAyMTppZihlbj49NiYmVHQ+PTI1OCl7d3QubmV4dF9vdXQ9RXQsd3QuYXZhaWxfb3V0PVR0LHd0Lm5leHRfaW49bnQsd3QuYXZhaWxfaW49ZW4sbXQuaG9sZD15dCxtdC5iaXRzPSR0''@;'; put 'put ''LEUod3QsenQpLEV0PXd0Lm5leHRfb3V0LHBuPXd0Lm91dHB1dCxUdD13dC5hdmFpbF9vdXQsbnQ9d3QubmV4dF9pbixIdD13dC5pbnB1dCxlbj13dC5hdmFpbF9pbix5dD1tdC5ob2xkLCR0PW10LmJpdHMsMTI9PT1tdC5tb2RlJiYobXQuYmFjaz0tMSk7YnJlYWt9Zm9yKG10LmJhY2s9MDtY''@;'; put 'put ''dD0oUG49bXQubGVuY29kZVt5dCYoMTw8bXQubGVuYml0cyktMV0pPj4+MTYmMjU1LEpuPTY1NTM1JlBuLCEoKENuPVBuPj4+MjQpPD0kdCk7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9aWYoWHQmJiEoMjQwJlh0KSl7Zm9yKHhpPUNuLGFuPVh0LHRu''@;'; put 'put ''PUpuO1h0PShQbj1tdC5sZW5jb2RlW3RuKygoeXQmKDE8PHhpK2FuKS0xKT4+eGkpXSk+Pj4xNiYyNTUsSm49NjU1MzUmUG4sISh4aSsoQ249UG4+Pj4yNCk8PSR0KTspe2lmKDA9PT1lbilicmVhayBlO2VuLS0seXQrPUh0W250KytdPDwkdCwkdCs9OH15dD4+Pj14aSwkdC09eGksbXQuYmFj''@;'; put 'put ''ays9eGl9aWYoeXQ+Pj49Q24sJHQtPUNuLG10LmJhY2srPUNuLG10Lmxlbmd0aD1KbiwwPT09WHQpe210Lm1vZGU9MjY7YnJlYWt9aWYoMzImWHQpe210LmJhY2s9LTEsbXQubW9kZT0xMjticmVha31pZig2NCZYdCl7d3QubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLG10Lm1v''@;'; put 'put ''ZGU9MzA7YnJlYWt9bXQuZXh0cmE9MTUmWHQsbXQubW9kZT0yMjtjYXNlIDIyOmlmKG10LmV4dHJhKXtmb3IoZmk9bXQuZXh0cmE7JHQ8Zmk7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9bXQubGVuZ3RoKz15dCYoMTw8bXQuZXh0cmEpLTEseXQ+Pj49''@;'; put 'put ''bXQuZXh0cmEsJHQtPW10LmV4dHJhLG10LmJhY2srPW10LmV4dHJhfW10Lndhcz1tdC5sZW5ndGgsbXQubW9kZT0yMztjYXNlIDIzOmZvcig7WHQ9KFBuPW10LmRpc3Rjb2RlW3l0JigxPDxtdC5kaXN0Yml0cyktMV0pPj4+MTYmMjU1LEpuPTY1NTM1JlBuLCEoKENuPVBuPj4+MjQpPD0kdCk7''@;'; put 'put ''KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9aWYoISgyNDAmWHQpKXtmb3IoeGk9Q24sYW49WHQsdG49Sm47WHQ9KFBuPW10LmRpc3Rjb2RlW3RuKygoeXQmKDE8PHhpK2FuKS0xKT4+eGkpXSk+Pj4xNiYyNTUsSm49NjU1MzUmUG4sISh4aSsoQ249UG4+''@;'; put 'put ''Pj4yNCk8PSR0KTspe2lmKDA9PT1lbilicmVhayBlO2VuLS0seXQrPUh0W250KytdPDwkdCwkdCs9OH15dD4+Pj14aSwkdC09eGksbXQuYmFjays9eGl9aWYoeXQ+Pj49Q24sJHQtPUNuLG10LmJhY2srPUNuLDY0Jlh0KXt3dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsbXQubW9kZT0z''@;'; put 'put ''MDticmVha31tdC5vZmZzZXQ9Sm4sbXQuZXh0cmE9MTUmWHQsbXQubW9kZT0yNDtjYXNlIDI0OmlmKG10LmV4dHJhKXtmb3IoZmk9bXQuZXh0cmE7JHQ8Zmk7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9bXQub2Zmc2V0Kz15dCYoMTw8bXQuZXh0cmEp''@;'; put 'put ''LTEseXQ+Pj49bXQuZXh0cmEsJHQtPW10LmV4dHJhLG10LmJhY2srPW10LmV4dHJhfWlmKG10Lm9mZnNldD5tdC5kbWF4KXt3dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixtdC5tb2RlPTMwO2JyZWFrfW10Lm1vZGU9MjU7Y2FzZSAyNTppZigwPT09VHQpYnJlYWsgZTtp''@;'; put 'put ''ZihtdC5vZmZzZXQ+KF9uPXp0LVR0KSl7aWYoKF9uPW10Lm9mZnNldC1fbik+bXQud2hhdmUmJm10LnNhbmUpe3d0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLG10Lm1vZGU9MzA7YnJlYWt9T249X24+bXQud25leHQ/bXQud3NpemUtKF9uLT1tdC53bmV4dCk6bXQud25l''@;'; put 'put ''eHQtX24sX24+bXQubGVuZ3RoJiYoX249bXQubGVuZ3RoKSxybj1tdC53aW5kb3d9ZWxzZSBybj1wbixPbj1FdC1tdC5vZmZzZXQsX249bXQubGVuZ3RoO19uPlR0JiYoX249VHQpLFR0LT1fbixtdC5sZW5ndGgtPV9uO2Rve3BuW0V0KytdPXJuW09uKytdfXdoaWxlKC0tX24pOzA9PT1tdC5s''@;'; put 'put ''ZW5ndGgmJihtdC5tb2RlPTIxKTticmVhaztjYXNlIDI2OmlmKDA9PT1UdClicmVhayBlO3BuW0V0KytdPW10Lmxlbmd0aCxUdC0tLG10Lm1vZGU9MjE7YnJlYWs7Y2FzZSAyNzppZihtdC53cmFwKXtmb3IoOyR0PDMyOyl7aWYoMD09PWVuKWJyZWFrIGU7ZW4tLSx5dHw9SHRbbnQrK108PCR0''@;'; put 'put ''LCR0Kz04fWlmKHd0LnRvdGFsX291dCs9enQtPVR0LG10LnRvdGFsKz16dCx6dCYmKHd0LmFkbGVyPW10LmNoZWNrPW10LmZsYWdzP1QobXQuY2hlY2sscG4senQsRXQtenQpOkQobXQuY2hlY2sscG4senQsRXQtenQpKSx6dD1UdCwobXQuZmxhZ3M/eXQ6c3QoeXQpKSE9PW10LmNoZWNrKXt3''@;'; put 'put ''dC5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixtdC5tb2RlPTMwO2JyZWFrfXl0PTAsJHQ9MH1tdC5tb2RlPTI4O2Nhc2UgMjg6aWYobXQud3JhcCYmbXQuZmxhZ3Mpe2Zvcig7JHQ8MzI7KXtpZigwPT09ZW4pYnJlYWsgZTtlbi0tLHl0Kz1IdFtudCsrXTw8JHQsJHQrPTh9aWYoeXQhPT0o''@;'; put 'put ''NDI5NDk2NzI5NSZtdC50b3RhbCkpe3d0Lm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIsbXQubW9kZT0zMDticmVha315dD0wLCR0PTB9bXQubW9kZT0yOTtjYXNlIDI5OkFyPTE7YnJlYWsgZTtjYXNlIDMwOkFyPS0zO2JyZWFrIGU7Y2FzZSAzMTpyZXR1cm4tNDtkZWZhdWx0OnJldHVy''@;'; put 'put ''biBpZX1yZXR1cm4gd3QubmV4dF9vdXQ9RXQsd3QuYXZhaWxfb3V0PVR0LHd0Lm5leHRfaW49bnQsd3QuYXZhaWxfaW49ZW4sbXQuaG9sZD15dCxtdC5iaXRzPSR0LChtdC53c2l6ZXx8enQhPT13dC5hdmFpbF9vdXQmJm10Lm1vZGU8MzAmJihtdC5tb2RlPDI3fHw0IT09anQpKSYmZnVuY3Rp''@;'; put 'put ''b24gWW4od3QsanQsbXQsSHQpe3ZhciBwbixudD13dC5zdGF0ZTtyZXR1cm4gbnVsbD09PW50LndpbmRvdyYmKG50LndzaXplPTE8PG50LndiaXRzLG50LnduZXh0PTAsbnQud2hhdmU9MCxudC53aW5kb3c9bmV3IEcuQnVmOChudC53c2l6ZSkpLEh0Pj1udC53c2l6ZT8oRy5hcnJheVNldChu''@;'; put 'put ''dC53aW5kb3csanQsbXQtbnQud3NpemUsbnQud3NpemUsMCksbnQud25leHQ9MCxudC53aGF2ZT1udC53c2l6ZSk6KChwbj1udC53c2l6ZS1udC53bmV4dCk+SHQmJihwbj1IdCksRy5hcnJheVNldChudC53aW5kb3csanQsbXQtSHQscG4sbnQud25leHQpLChIdC09cG4pPyhHLmFycmF5U2V0''@;'; put 'put ''KG50LndpbmRvdyxqdCxtdC1IdCxIdCwwKSxudC53bmV4dD1IdCxudC53aGF2ZT1udC53c2l6ZSk6KG50LnduZXh0Kz1wbixudC53bmV4dD09PW50LndzaXplJiYobnQud25leHQ9MCksbnQud2hhdmU8bnQud3NpemUmJihudC53aGF2ZSs9cG4pKSksMH0od3Qsd3Qub3V0cHV0LHd0Lm5leHRf''@;'; put 'put ''b3V0LHp0LXd0LmF2YWlsX291dCk/KG10Lm1vZGU9MzEsLTQpOih6dC09d3QuYXZhaWxfb3V0LHd0LnRvdGFsX2luKz14bi09d3QuYXZhaWxfaW4sd3QudG90YWxfb3V0Kz16dCxtdC50b3RhbCs9enQsbXQud3JhcCYmenQmJih3dC5hZGxlcj1tdC5jaGVjaz1tdC5mbGFncz9UKG10LmNoZWNr''@;'; put 'put ''LHBuLHp0LHd0Lm5leHRfb3V0LXp0KTpEKG10LmNoZWNrLHBuLHp0LHd0Lm5leHRfb3V0LXp0KSksd3QuZGF0YV90eXBlPW10LmJpdHMrKG10Lmxhc3Q/NjQ6MCkrKDEyPT09bXQubW9kZT8xMjg6MCkrKDIwPT09bXQubW9kZXx8MTU9PT1tdC5tb2RlPzI1NjowKSwoMD09PXhuJiYwPT09enR8''@;'; put 'put ''fDQ9PT1qdCkmJkFyPT09SiYmKEFyPS01KSxBcil9LGouaW5mbGF0ZUVuZD1mdW5jdGlvbiBkbih3dCl7aWYoIXd0fHwhd3Quc3RhdGUpcmV0dXJuIGllO3ZhciBqdD13dC5zdGF0ZTtyZXR1cm4ganQud2luZG93JiYoanQud2luZG93PW51bGwpLHd0LnN0YXRlPW51bGwsSn0sai5pbmZsYXRl''@;'; put 'put ''R2V0SGVhZGVyPWZ1bmN0aW9uIGhuKHd0LGp0KXt2YXIgbXQ7cmV0dXJuIHd0JiZ3dC5zdGF0ZSYmMiYobXQ9d3Quc3RhdGUpLndyYXA/KG10LmhlYWQ9anQsanQuZG9uZT0hMSxKKTppZX0sai5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9LHsiLi4v''@;'; put 'put ''dXRpbHMvY29tbW9uIjoyNywiLi9hZGxlcjMyIjoyOSwiLi9jcmMzMiI6MzEsIi4vaW5mZmFzdCI6MzQsIi4vaW5mdHJlZXMiOjM2fV0sMzY6W2Z1bmN0aW9uKE8sSSxqKXsidXNlIHN0cmljdCI7dmFyIEc9TygiLi4vdXRpbHMvY29tbW9uIiksWj1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywx''@;'; put 'put ''NSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSw2Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OCwwLDBdLFk9WzE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE3LDE3LDE3LDE3LDE4LDE4LDE4LDE4LDE5LDE5LDE5LDE5LDIwLDIwLDIwLDIwLDIxLDIxLDIxLDIxLDE2LDcyLDc4XSxV''@;'; put 'put ''PVsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsMCwwXSxxPVsxNiwxNiwxNiwxNiwxNywxNywxOCwxOCwxOSwxOSwyMCwyMCwyMSwyMSwy''@;'; put 'put ''MiwyMiwyMywyMywyNCwyNCwyNSwyNSwyNiwyNiwyNywyNywyOCwyOCwyOSwyOSw2NCw2NF07SS5leHBvcnRzPWZ1bmN0aW9uKGVlLHJlLGllLHVlLGxlLGFlLFcsYil7dmFyIGNlLGhlLFNlLExlLEhlLEJlLEZlLHdlLEVlLEE9Yi5iaXRzLEY9MCxIPTAsZz0wLEM9MCxrPTAsXz0wLHA9MCx3''@;'; put 'put ''PTAsSz0wLHRlPTAseGU9bnVsbCxEZT0wLEdlPW5ldyBHLkJ1ZjE2KDE2KSxVZT1uZXcgRy5CdWYxNigxNikscWU9bnVsbCxvdD0wO2ZvcihGPTA7Rjw9MTU7RisrKUdlW0ZdPTA7Zm9yKEg9MDtIPHVlO0grKylHZVtyZVtpZStIXV0rKztmb3Ioaz1BLEM9MTU7Qz49MSYmMD09PUdlW0NdO0Mt''@;'; put 'put ''LSk7aWYoaz5DJiYoaz1DKSwwPT09QylyZXR1cm4gbGVbYWUrK109MjA5NzE1MjAsbGVbYWUrK109MjA5NzE1MjAsYi5iaXRzPTEsMDtmb3IoZz0xO2c8QyYmMD09PUdlW2ddO2crKyk7Zm9yKGs8ZyYmKGs9Zyksdz0xLEY9MTtGPD0xNTtGKyspaWYodzw8PTEsKHctPUdlW0ZdKTwwKXJldHVy''@;'; put 'put ''bi0xO2lmKHc+MCYmKDA9PT1lZXx8MSE9PUMpKXJldHVybi0xO2ZvcihVZVsxXT0wLEY9MTtGPDE1O0YrKylVZVtGKzFdPVVlW0ZdK0dlW0ZdO2ZvcihIPTA7SDx1ZTtIKyspMCE9PXJlW2llK0hdJiYoV1tVZVtyZVtpZStIXV0rK109SCk7aWYoMD09PWVlPyh4ZT1xZT1XLEJlPTE5KToxPT09''@;'; put 'put ''ZWU/KHhlPVosRGUtPTI1NyxxZT1ZLG90LT0yNTcsQmU9MjU2KTooeGU9VSxxZT1xLEJlPS0xKSx0ZT0wLEg9MCxGPWcsSGU9YWUsXz1rLHA9MCxTZT0tMSxMZT0oSz0xPDxrKS0xLDE9PT1lZSYmSz44NTJ8fDI9PT1lZSYmSz41OTIpcmV0dXJuIDE7Zm9yKDs7KXtGZT1GLXAsV1tIXTxCZT8o''@;'; put 'put ''d2U9MCxFZT1XW0hdKTpXW0hdPkJlPyh3ZT1xZVtvdCtXW0hdXSxFZT14ZVtEZStXW0hdXSk6KHdlPTk2LEVlPTApLGNlPTE8PEYtcCxnPWhlPTE8PF87ZG97bGVbSGUrKHRlPj5wKSsoaGUtPWNlKV09RmU8PDI0fHdlPDwxNnxFZX13aGlsZSgwIT09aGUpO2ZvcihjZT0xPDxGLTE7dGUmY2U7''@;'; put 'put ''KWNlPj49MTtpZigwIT09Y2U/KHRlJj1jZS0xLHRlKz1jZSk6dGU9MCxIKyssMD09LS1HZVtGXSl7aWYoRj09PUMpYnJlYWs7Rj1yZVtpZStXW0hdXX1pZihGPmsmJih0ZSZMZSkhPT1TZSl7Zm9yKDA9PT1wJiYocD1rKSxIZSs9Zyx3PTE8PChfPUYtcCk7XytwPEMmJiEoKHctPUdlW18rcF0p''@;'; put 'put ''PD0wKTspXysrLHc8PD0xO2lmKEsrPTE8PF8sMT09PWVlJiZLPjg1Mnx8Mj09PWVlJiZLPjU5MilyZXR1cm4gMTtsZVtTZT10ZSZMZV09azw8MjR8Xzw8MTZ8SGUtYWV9fXJldHVybiAwIT09dGUmJihsZVtIZSt0ZV09Ri1wPDwyNHw2NDw8MTYpLGIuYml0cz1rLDB9fSx7Ii4uL3V0aWxzL2Nv''@;'; put 'put ''bW1vbiI6Mjd9XSwzNzpbZnVuY3Rpb24oTyxJLGopeyJ1c2Ugc3RyaWN0IjtJLmV4cG9ydHM9ezI6Im5lZWQgZGljdGlvbmFyeSIsMToic3RyZWFtIGVuZCIsMDoiIiwiLTEiOiJmaWxlIGVycm9yIiwiLTIiOiJzdHJlYW0gZXJyb3IiLCItMyI6ImRhdGEgZXJyb3IiLCItNCI6Imluc3VmZmlj''@;'; put 'put ''aWVudCBtZW1vcnkiLCItNSI6ImJ1ZmZlciBlcnJvciIsIi02IjoiaW5jb21wYXRpYmxlIHZlcnNpb24ifX0se31dLDM4OltmdW5jdGlvbihPLEksail7InVzZSBzdHJpY3QiO3ZhciBHPU8oIi4uL3V0aWxzL2NvbW1vbiIpO2Z1bmN0aW9uIE4oZnQpe2Zvcih2YXIgZG49ZnQubGVuZ3RoOy0t''@;'; put 'put ''ZG4+PTA7KWZ0W2RuXT0wfXZhciBhZT0xNSxXPTE2LEM9WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF0saz1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM10s''@;'; put 'put ''Xz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDMsN10scD1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0sSz1uZXcgQXJyYXkoNTc2KTtOKEspO3ZhciB0ZT1uZXcgQXJyYXkoNjApO04odGUpO3ZhciBjZT1uZXcgQXJyYXkoNTEyKTtO''@;'; put 'put ''KGNlKTt2YXIgaGU9bmV3IEFycmF5KDI1Nik7TihoZSk7dmFyIFNlPW5ldyBBcnJheSgyOSk7TihTZSk7dmFyIExlPW5ldyBBcnJheSgzMCk7TihMZSk7dmFyIHhlLERlLEJlLEhlPWZ1bmN0aW9uKGZ0LGRuLGhuLHd0LGp0KXt0aGlzLnN0YXRpY190cmVlPWZ0LHRoaXMuZXh0cmFfYml0cz1k''@;'; put 'put ''bix0aGlzLmV4dHJhX2Jhc2U9aG4sdGhpcy5lbGVtcz13dCx0aGlzLm1heF9sZW5ndGg9anQsdGhpcy5oYXNfc3RyZWU9ZnQmJmZ0Lmxlbmd0aH0sR2U9ZnVuY3Rpb24oZnQsZG4pe3RoaXMuZHluX3RyZWU9ZnQsdGhpcy5tYXhfY29kZT0wLHRoaXMuc3RhdF9kZXNjPWRufTtmdW5jdGlvbiBV''@;'; put 'put ''ZShmdCl7cmV0dXJuIGZ0PDI1Nj9jZVtmdF06Y2VbMjU2KyhmdD4+PjcpXX1mdW5jdGlvbiBxZShmdCxkbil7ZnQucGVuZGluZ19idWZbZnQucGVuZGluZysrXT0yNTUmZG4sZnQucGVuZGluZ19idWZbZnQucGVuZGluZysrXT1kbj4+PjgmMjU1fWZ1bmN0aW9uIG90KGZ0LGRuLGhuKXtmdC5i''@;'; put 'put ''aV92YWxpZD5XLWhuPyhmdC5iaV9idWZ8PWRuPDxmdC5iaV92YWxpZCY2NTUzNSxxZShmdCxmdC5iaV9idWYpLGZ0LmJpX2J1Zj1kbj4+Vy1mdC5iaV92YWxpZCxmdC5iaV92YWxpZCs9aG4tVyk6KGZ0LmJpX2J1Znw9ZG48PGZ0LmJpX3ZhbGlkJjY1NTM1LGZ0LmJpX3ZhbGlkKz1obil9ZnVu''@;'; put 'put ''Y3Rpb24gRmUoZnQsZG4saG4pe290KGZ0LGhuWzIqZG5dLGhuWzIqZG4rMV0pfWZ1bmN0aW9uIHdlKGZ0LGRuKXt2YXIgaG49MDtkb3tobnw9MSZmdCxmdD4+Pj0xLGhuPDw9MX13aGlsZSgtLWRuPjApO3JldHVybiBobj4+PjF9ZnVuY3Rpb24gWGUoZnQsZG4saG4pe3ZhciBtdCxIdCx3dD1u''@;'; put 'put ''ZXcgQXJyYXkoYWUrMSksanQ9MDtmb3IobXQ9MTttdDw9YWU7bXQrKyl3dFttdF09anQ9anQraG5bbXQtMV08PDE7Zm9yKEh0PTA7SHQ8PWRuO0h0Kyspe3ZhciBwbj1mdFsyKkh0KzFdOzAhPT1wbiYmKGZ0WzIqSHRdPXdlKHd0W3BuXSsrLHBuKSl9fWZ1bmN0aW9uIFplKGZ0KXt2YXIgZG47''@;'; put 'put ''Zm9yKGRuPTA7ZG48Mjg2O2RuKyspZnQuZHluX2x0cmVlWzIqZG5dPTA7Zm9yKGRuPTA7ZG48MzA7ZG4rKylmdC5keW5fZHRyZWVbMipkbl09MDtmb3IoZG49MDtkbjwxOTtkbisrKWZ0LmJsX3RyZWVbMipkbl09MDtmdC5keW5fbHRyZWVbNTEyXT0xLGZ0Lm9wdF9sZW49ZnQuc3RhdGljX2xl''@;'; put 'put ''bj0wLGZ0Lmxhc3RfbGl0PWZ0Lm1hdGNoZXM9MH1mdW5jdGlvbiBjdChmdCl7ZnQuYmlfdmFsaWQ+OD9xZShmdCxmdC5iaV9idWYpOmZ0LmJpX3ZhbGlkPjAmJihmdC5wZW5kaW5nX2J1ZltmdC5wZW5kaW5nKytdPWZ0LmJpX2J1ZiksZnQuYmlfYnVmPTAsZnQuYmlfdmFsaWQ9MH1mdW5jdGlv''@;'; put 'put ''biBBZShmdCxkbixobix3dCl7dmFyIGp0PTIqZG4sbXQ9MipobjtyZXR1cm4gZnRbanRdPGZ0W210XXx8ZnRbanRdPT09ZnRbbXRdJiZ3dFtkbl08PXd0W2huXX1mdW5jdGlvbiBqZShmdCxkbixobil7Zm9yKHZhciB3dD1mdC5oZWFwW2huXSxqdD1objw8MTtqdDw9ZnQuaGVhcF9sZW4mJihq''@;'; put 'put ''dDxmdC5oZWFwX2xlbiYmQWUoZG4sZnQuaGVhcFtqdCsxXSxmdC5oZWFwW2p0XSxmdC5kZXB0aCkmJmp0KyssIUFlKGRuLHd0LGZ0LmhlYXBbanRdLGZ0LmRlcHRoKSk7KWZ0LmhlYXBbaG5dPWZ0LmhlYXBbanRdLGhuPWp0LGp0PDw9MTtmdC5oZWFwW2huXT13dH1mdW5jdGlvbiBpdChmdCxk''@;'; put 'put ''bixobil7dmFyIHd0LGp0LEh0LHBuLG10PTA7aWYoMCE9PWZ0Lmxhc3RfbGl0KWRve3d0PWZ0LnBlbmRpbmdfYnVmW2Z0LmRfYnVmKzIqbXRdPDw4fGZ0LnBlbmRpbmdfYnVmW2Z0LmRfYnVmKzIqbXQrMV0sanQ9ZnQucGVuZGluZ19idWZbZnQubF9idWYrbXRdLG10KyssMD09PXd0P0ZlKGZ0''@;'; put 'put ''LGp0LGRuKTooRmUoZnQsKEh0PWhlW2p0XSkrMjU2KzEsZG4pLDAhPT0ocG49Q1tIdF0pJiZvdChmdCxqdC09U2VbSHRdLHBuKSxGZShmdCxIdD1VZSgtLXd0KSxobiksMCE9PShwbj1rW0h0XSkmJm90KGZ0LHd0LT1MZVtIdF0scG4pKX13aGlsZShtdDxmdC5sYXN0X2xpdCk7RmUoZnQsMjU2''@;'; put 'put ''LGRuKX1mdW5jdGlvbiBzdChmdCxkbil7dmFyIEh0LHBuLEV0LGhuPWRuLmR5bl90cmVlLHd0PWRuLnN0YXRfZGVzYy5zdGF0aWNfdHJlZSxqdD1kbi5zdGF0X2Rlc2MuaGFzX3N0cmVlLG10PWRuLnN0YXRfZGVzYy5lbGVtcyxudD0tMTtmb3IoZnQuaGVhcF9sZW49MCxmdC5oZWFwX21heD01''@;'; put 'put ''NzMsSHQ9MDtIdDxtdDtIdCsrKTAhPT1oblsyKkh0XT8oZnQuaGVhcFsrK2Z0LmhlYXBfbGVuXT1udD1IdCxmdC5kZXB0aFtIdF09MCk6aG5bMipIdCsxXT0wO2Zvcig7ZnQuaGVhcF9sZW48MjspaG5bMiooRXQ9ZnQuaGVhcFsrK2Z0LmhlYXBfbGVuXT1udDwyPysrbnQ6MCldPTEsZnQuZGVw''@;'; put 'put ''dGhbRXRdPTAsZnQub3B0X2xlbi0tLGp0JiYoZnQuc3RhdGljX2xlbi09d3RbMipFdCsxXSk7Zm9yKGRuLm1heF9jb2RlPW50LEh0PWZ0LmhlYXBfbGVuPj4xO0h0Pj0xO0h0LS0pamUoZnQsaG4sSHQpO0V0PW10O2Rve0h0PWZ0LmhlYXBbMV0sZnQuaGVhcFsxXT1mdC5oZWFwW2Z0LmhlYXBf''@;'; put 'put ''bGVuLS1dLGplKGZ0LGhuLDEpLHBuPWZ0LmhlYXBbMV0sZnQuaGVhcFstLWZ0LmhlYXBfbWF4XT1IdCxmdC5oZWFwWy0tZnQuaGVhcF9tYXhdPXBuLGhuWzIqRXRdPWhuWzIqSHRdK2huWzIqcG5dLGZ0LmRlcHRoW0V0XT0oZnQuZGVwdGhbSHRdPj1mdC5kZXB0aFtwbl0/ZnQuZGVwdGhbSHRd''@;'; put 'put ''OmZ0LmRlcHRoW3BuXSkrMSxoblsyKkh0KzFdPWhuWzIqcG4rMV09RXQsZnQuaGVhcFsxXT1FdCsrLGplKGZ0LGhuLDEpfXdoaWxlKGZ0LmhlYXBfbGVuPj0yKTtmdC5oZWFwWy0tZnQuaGVhcF9tYXhdPWZ0LmhlYXBbMV0sZnVuY3Rpb24gSWUoZnQsZG4pe3ZhciBFdCxlbixUdCx5dCwkdCx4''@;'; put 'put ''bixobj1kbi5keW5fdHJlZSx3dD1kbi5tYXhfY29kZSxqdD1kbi5zdGF0X2Rlc2Muc3RhdGljX3RyZWUsbXQ9ZG4uc3RhdF9kZXNjLmhhc19zdHJlZSxIdD1kbi5zdGF0X2Rlc2MuZXh0cmFfYml0cyxwbj1kbi5zdGF0X2Rlc2MuZXh0cmFfYmFzZSxudD1kbi5zdGF0X2Rlc2MubWF4X2xlbmd0''@;'; put 'put ''aCx6dD0wO2Zvcih5dD0wO3l0PD1hZTt5dCsrKWZ0LmJsX2NvdW50W3l0XT0wO2ZvcihoblsyKmZ0LmhlYXBbZnQuaGVhcF9tYXhdKzFdPTAsRXQ9ZnQuaGVhcF9tYXgrMTtFdDw1NzM7RXQrKykoeXQ9aG5bMipoblsyKihlbj1mdC5oZWFwW0V0XSkrMV0rMV0rMSk+bnQmJih5dD1udCx6dCsr''@;'; put 'put ''KSxoblsyKmVuKzFdPXl0LCEoZW4+d3QpJiYoZnQuYmxfY291bnRbeXRdKyssJHQ9MCxlbj49cG4mJigkdD1IdFtlbi1wbl0pLGZ0Lm9wdF9sZW4rPSh4bj1oblsyKmVuXSkqKHl0KyR0KSxtdCYmKGZ0LnN0YXRpY19sZW4rPXhuKihqdFsyKmVuKzFdKyR0KSkpO2lmKDAhPT16dCl7ZG97Zm9y''@;'; put 'put ''KHl0PW50LTE7MD09PWZ0LmJsX2NvdW50W3l0XTspeXQtLTtmdC5ibF9jb3VudFt5dF0tLSxmdC5ibF9jb3VudFt5dCsxXSs9MixmdC5ibF9jb3VudFtudF0tLSx6dC09Mn13aGlsZSh6dD4wKTtmb3IoeXQ9bnQ7MCE9PXl0O3l0LS0pZm9yKGVuPWZ0LmJsX2NvdW50W3l0XTswIT09ZW47KSEo''@;'; put 'put ''KFR0PWZ0LmhlYXBbLS1FdF0pPnd0KSYmKGhuWzIqVHQrMV0hPT15dCYmKGZ0Lm9wdF9sZW4rPSh5dC1oblsyKlR0KzFdKSpoblsyKlR0XSxoblsyKlR0KzFdPXl0KSxlbi0tKX19KGZ0LGRuKSxYZShobixudCxmdC5ibF9jb3VudCl9ZnVuY3Rpb24geHQoZnQsZG4saG4pe3ZhciB3dCxtdCxq''@;'; put 'put ''dD0tMSxIdD1kblsxXSxwbj0wLG50PTcsRXQ9NDtmb3IoMD09PUh0JiYobnQ9MTM4LEV0PTMpLGRuWzIqKGhuKzEpKzFdPTY1NTM1LHd0PTA7d3Q8PWhuO3d0KyspbXQ9SHQsSHQ9ZG5bMiood3QrMSkrMV0sISgrK3BuPG50JiZtdD09PUh0KSYmKHBuPEV0P2Z0LmJsX3RyZWVbMiptdF0rPXBu''@;'; put 'put ''OjAhPT1tdD8obXQhPT1qdCYmZnQuYmxfdHJlZVsyKm10XSsrLGZ0LmJsX3RyZWVbMzJdKyspOnBuPD0xMD9mdC5ibF90cmVlWzM0XSsrOmZ0LmJsX3RyZWVbMzZdKysscG49MCxqdD1tdCwwPT09SHQ/KG50PTEzOCxFdD0zKTptdD09PUh0PyhudD02LEV0PTMpOihudD03LEV0PTQpKX1mdW5j''@;'; put 'put ''dGlvbiBGdChmdCxkbixobil7dmFyIHd0LG10LGp0PS0xLEh0PWRuWzFdLHBuPTAsbnQ9NyxFdD00O2ZvcigwPT09SHQmJihudD0xMzgsRXQ9Myksd3Q9MDt3dDw9aG47d3QrKylpZihtdD1IdCxIdD1kblsyKih3dCsxKSsxXSwhKCsrcG48bnQmJm10PT09SHQpKXtpZihwbjxFdClkb3tGZShm''@;'; put 'put ''dCxtdCxmdC5ibF90cmVlKX13aGlsZSgwIT0tLXBuKTtlbHNlIDAhPT1tdD8obXQhPT1qdCYmKEZlKGZ0LG10LGZ0LmJsX3RyZWUpLHBuLS0pLEZlKGZ0LDE2LGZ0LmJsX3RyZWUpLG90KGZ0LHBuLTMsMikpOnBuPD0xMD8oRmUoZnQsMTcsZnQuYmxfdHJlZSksb3QoZnQscG4tMywzKSk6KEZl''@;'; put 'put ''KGZ0LDE4LGZ0LmJsX3RyZWUpLG90KGZ0LHBuLTExLDcpKTtwbj0wLGp0PW10LDA9PT1IdD8obnQ9MTM4LEV0PTMpOm10PT09SHQ/KG50PTYsRXQ9Myk6KG50PTcsRXQ9NCl9fXZhciBCdD0hMTtmdW5jdGlvbiBObihmdCxkbixobix3dCl7b3QoZnQsMCsod3Q/MTowKSwzKSxmdW5jdGlvbiBr''@;'; put 'put ''ZShmdCxkbixobix3dCl7Y3QoZnQpLHd0JiYocWUoZnQsaG4pLHFlKGZ0LH5obikpLEcuYXJyYXlTZXQoZnQucGVuZGluZ19idWYsZnQud2luZG93LGRuLGhuLGZ0LnBlbmRpbmcpLGZ0LnBlbmRpbmcrPWhufShmdCxkbixobiwhMCl9ai5fdHJfaW5pdD1mdW5jdGlvbiB5bihmdCl7QnR8fChm''@;'; put 'put ''dW5jdGlvbiB0dCgpe3ZhciBmdCxkbixobix3dCxqdCxtdD1uZXcgQXJyYXkoYWUrMSk7Zm9yKGhuPTAsd3Q9MDt3dDwyODt3dCsrKWZvcihTZVt3dF09aG4sZnQ9MDtmdDwxPDxDW3d0XTtmdCsrKWhlW2huKytdPXd0O2ZvcihoZVtobi0xXT13dCxqdD0wLHd0PTA7d3Q8MTY7d3QrKylmb3Io''@;'; put 'put ''TGVbd3RdPWp0LGZ0PTA7ZnQ8MTw8a1t3dF07ZnQrKyljZVtqdCsrXT13dDtmb3IoanQ+Pj03O3d0PDMwO3d0KyspZm9yKExlW3d0XT1qdDw8NyxmdD0wO2Z0PDE8PGtbd3RdLTc7ZnQrKyljZVsyNTYranQrK109d3Q7Zm9yKGRuPTA7ZG48PWFlO2RuKyspbXRbZG5dPTA7Zm9yKGZ0PTA7ZnQ8''@;'; put 'put ''PTE0MzspS1syKmZ0KzFdPTgsZnQrKyxtdFs4XSsrO2Zvcig7ZnQ8PTI1NTspS1syKmZ0KzFdPTksZnQrKyxtdFs5XSsrO2Zvcig7ZnQ8PTI3OTspS1syKmZ0KzFdPTcsZnQrKyxtdFs3XSsrO2Zvcig7ZnQ8PTI4NzspS1syKmZ0KzFdPTgsZnQrKyxtdFs4XSsrO2ZvcihYZShLLDI4NyxtdCks''@;'; put 'put ''ZnQ9MDtmdDwzMDtmdCsrKXRlWzIqZnQrMV09NSx0ZVsyKmZ0XT13ZShmdCw1KTt4ZT1uZXcgSGUoSyxDLDI1NywyODYsYWUpLERlPW5ldyBIZSh0ZSxrLDAsMzAsYWUpLEJlPW5ldyBIZShuZXcgQXJyYXkoMCksXywwLDE5LDcpfSgpLEJ0PSEwKSxmdC5sX2Rlc2M9bmV3IEdlKGZ0LmR5bl9s''@;'; put 'put ''dHJlZSx4ZSksZnQuZF9kZXNjPW5ldyBHZShmdC5keW5fZHRyZWUsRGUpLGZ0LmJsX2Rlc2M9bmV3IEdlKGZ0LmJsX3RyZWUsQmUpLGZ0LmJpX2J1Zj0wLGZ0LmJpX3ZhbGlkPTAsWmUoZnQpfSxqLl90cl9zdG9yZWRfYmxvY2s9Tm4sai5fdHJfZmx1c2hfYmxvY2s9ZnVuY3Rpb24gR24oZnQs''@;'; put 'put ''ZG4saG4sd3Qpe3ZhciBqdCxtdCxIdD0wO2Z0LmxldmVsPjA/KDI9PT1mdC5zdHJtLmRhdGFfdHlwZSYmKGZ0LnN0cm0uZGF0YV90eXBlPWZ1bmN0aW9uIGJuKGZ0KXt2YXIgaG4sZG49NDA5MzYyNDQ0Nztmb3IoaG49MDtobjw9MzE7aG4rKyxkbj4+Pj0xKWlmKDEmZG4mJjAhPT1mdC5keW5f''@;'; put 'put ''bHRyZWVbMipobl0pcmV0dXJuIDA7aWYoMCE9PWZ0LmR5bl9sdHJlZVsxOF18fDAhPT1mdC5keW5fbHRyZWVbMjBdfHwwIT09ZnQuZHluX2x0cmVlWzI2XSlyZXR1cm4gMTtmb3IoaG49MzI7aG48MjU2O2huKyspaWYoMCE9PWZ0LmR5bl9sdHJlZVsyKmhuXSlyZXR1cm4gMTtyZXR1cm4gMH0o''@;'; put 'put ''ZnQpKSxzdChmdCxmdC5sX2Rlc2MpLHN0KGZ0LGZ0LmRfZGVzYyksSHQ9ZnVuY3Rpb24gT3QoZnQpe3ZhciBkbjtmb3IoeHQoZnQsZnQuZHluX2x0cmVlLGZ0LmxfZGVzYy5tYXhfY29kZSkseHQoZnQsZnQuZHluX2R0cmVlLGZ0LmRfZGVzYy5tYXhfY29kZSksc3QoZnQsZnQuYmxfZGVzYyks''@;'; put 'put ''ZG49MTg7ZG4+PTMmJjA9PT1mdC5ibF90cmVlWzIqcFtkbl0rMV07ZG4tLSk7cmV0dXJuIGZ0Lm9wdF9sZW4rPTMqKGRuKzEpKzUrNSs0LGRufShmdCksKG10PWZ0LnN0YXRpY19sZW4rMys3Pj4+Myk8PShqdD1mdC5vcHRfbGVuKzMrNz4+PjMpJiYoanQ9bXQpKTpqdD1tdD1obis1LGhuKzQ8''@;'; put 'put ''PWp0JiYtMSE9PWRuP05uKGZ0LGRuLGhuLHd0KTo0PT09ZnQuc3RyYXRlZ3l8fG10PT09anQ/KG90KGZ0LDIrKHd0PzE6MCksMyksaXQoZnQsSyx0ZSkpOihvdChmdCw0Kyh3dD8xOjApLDMpLGZ1bmN0aW9uIEt0KGZ0LGRuLGhuLHd0KXt2YXIganQ7Zm9yKG90KGZ0LGRuLTI1Nyw1KSxvdChm''@;'; put 'put ''dCxobi0xLDUpLG90KGZ0LHd0LTQsNCksanQ9MDtqdDx3dDtqdCsrKW90KGZ0LGZ0LmJsX3RyZWVbMipwW2p0XSsxXSwzKTtGdChmdCxmdC5keW5fbHRyZWUsZG4tMSksRnQoZnQsZnQuZHluX2R0cmVlLGhuLTEpfShmdCxmdC5sX2Rlc2MubWF4X2NvZGUrMSxmdC5kX2Rlc2MubWF4X2NvZGUr''@;'; put 'put ''MSxIdCsxKSxpdChmdCxmdC5keW5fbHRyZWUsZnQuZHluX2R0cmVlKSksWmUoZnQpLHd0JiZjdChmdCl9LGouX3RyX3RhbGx5PWZ1bmN0aW9uIFluKGZ0LGRuLGhuKXtyZXR1cm4gZnQucGVuZGluZ19idWZbZnQuZF9idWYrMipmdC5sYXN0X2xpdF09ZG4+Pj44JjI1NSxmdC5wZW5kaW5nX2J1''@;'; put 'put ''ZltmdC5kX2J1ZisyKmZ0Lmxhc3RfbGl0KzFdPTI1NSZkbixmdC5wZW5kaW5nX2J1ZltmdC5sX2J1ZitmdC5sYXN0X2xpdF09MjU1JmhuLGZ0Lmxhc3RfbGl0KyssMD09PWRuP2Z0LmR5bl9sdHJlZVsyKmhuXSsrOihmdC5tYXRjaGVzKyssZG4tLSxmdC5keW5fbHRyZWVbMiooaGVbaG5dKzI1''@;'; put 'put ''NisxKV0rKyxmdC5keW5fZHRyZWVbMipVZShkbildKyspLGZ0Lmxhc3RfbGl0PT09ZnQubGl0X2J1ZnNpemUtMX0sai5fdHJfYWxpZ249ZnVuY3Rpb24gbm4oZnQpe290KGZ0LDIsMyksRmUoZnQsMjU2LEspLGZ1bmN0aW9uIEVlKGZ0KXsxNj09PWZ0LmJpX3ZhbGlkPyhxZShmdCxmdC5iaV9i''@;'; put 'put ''dWYpLGZ0LmJpX2J1Zj0wLGZ0LmJpX3ZhbGlkPTApOmZ0LmJpX3ZhbGlkPj04JiYoZnQucGVuZGluZ19idWZbZnQucGVuZGluZysrXT0yNTUmZnQuYmlfYnVmLGZ0LmJpX2J1Zj4+PTgsZnQuYmlfdmFsaWQtPTgpfShmdCl9fSx7Ii4uL3V0aWxzL2NvbW1vbiI6Mjd9XSwzOTpbZnVuY3Rpb24o''@;'; put 'put ''TyxJLGopeyJ1c2Ugc3RyaWN0IjtJLmV4cG9ydHM9ZnVuY3Rpb24gRygpe3RoaXMuaW5wdXQ9bnVsbCx0aGlzLm5leHRfaW49MCx0aGlzLmF2YWlsX2luPTAsdGhpcy50b3RhbF9pbj0wLHRoaXMub3V0cHV0PW51bGwsdGhpcy5uZXh0X291dD0wLHRoaXMuYXZhaWxfb3V0PTAsdGhpcy50b3Rh''@;'; put 'put ''bF9vdXQ9MCx0aGlzLm1zZz0iIix0aGlzLnN0YXRlPW51bGwsdGhpcy5kYXRhX3R5cGU9Mix0aGlzLmFkbGVyPTB9fSx7fV19LHt9LFs5XSkoOSl9KX0sNjM1Nzg6KFFlLE1lLFIpPT57IWZ1bmN0aW9uIHgoTSl7TS52ZXJzaW9uPSIxLjIwMjExMTIyLjEiO3ZhciBPPTEyMDAsST0xMjUyO3R5''@;'; put 'put ''cGVvZiBjcHRhYmxlPiJ1IiYmKHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbC5jcHRhYmxlPVIoNDI5MjQpOnR5cGVvZiB3aW5kb3c8InUiJiYod2luZG93LmNwdGFibGU9Uig0MjkyNCkpKTtmb3IodmFyIGo9Wzg3NCw5MzIsOTM2LDk0OSw5NTAsMWU0XSxHPTA7Rzw9ODsrK0cpai5wdXNoKDEy''@;'; put 'put ''NTArRyk7dmFyIEQ9ezA6MTI1MiwxOjY1MDAxLDI6NjUwMDEsNzc6MWU0LDEyODo5MzIsMTI5Ojk0OSwxMzA6MTM2MSwxMzQ6OTM2LDEzNjo5NTAsMTYxOjEyNTMsMTYyOjEyNTQsMTYzOjEyNTgsMTc3OjEyNTUsMTc4OjEyNTYsMTg2OjEyNTcsMjA0OjEyNTEsMjIyOjg3NCwyMzg6MTI1MCwy''@;'; put 'put ''NTU6MTI1Miw2OTo2OTY5fSxUPWZ1bmN0aW9uKHkpey0xIT1qLmluZGV4T2YoeSkmJihJPURbMF09eSl9LHo9ZnVuY3Rpb24oeSl7Tz15LFQoeSl9O2Z1bmN0aW9uIE4oKXt6KDEyMDApLGZ1bmN0aW9uIEUoKXtUKDEyNTIpfSgpfWZ1bmN0aW9uIEIoeSl7Zm9yKHZhciBQPVtdLEw9MCxYPXku''@;'; put 'put ''bGVuZ3RoO0w8WDsrK0wpUFtMXT15LmNoYXJDb2RlQXQoTCk7cmV0dXJuIFB9dmFyIFU9ZnVuY3Rpb24oeSl7dmFyIFA9eS5jaGFyQ29kZUF0KDApLEw9eS5jaGFyQ29kZUF0KDEpO3JldHVybiAyNTU9PVAmJjI1ND09TD9mdW5jdGlvbiBaKHkpe2Zvcih2YXIgUD1bXSxMPTA7TDx5Lmxlbmd0''@;'; put 'put ''aD4+MTsrK0wpUFtMXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHkuY2hhckNvZGVBdCgyKkwpKyh5LmNoYXJDb2RlQXQoMipMKzEpPDw4KSk7cmV0dXJuIFAuam9pbigiIil9KHkuc2xpY2UoMikpOjI1ND09UCYmMjU1PT1MP2Z1bmN0aW9uIFkoeSl7Zm9yKHZhciBQPVtdLEw9MDtMPHkubGVuZ3Ro''@;'; put 'put ''Pj4xOysrTClQW0xdPVN0cmluZy5mcm9tQ2hhckNvZGUoeS5jaGFyQ29kZUF0KDIqTCsxKSsoeS5jaGFyQ29kZUF0KDIqTCk8PDgpKTtyZXR1cm4gUC5qb2luKCIiKX0oeS5zbGljZSgyKSk6NjUyNzk9PVA/eS5zbGljZSgxKTp5fSxxPWZ1bmN0aW9uKFApe3JldHVybiBTdHJpbmcuZnJvbUNo''@;'; put 'put ''YXJDb2RlKFApfSxKPWZ1bmN0aW9uKFApe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFApfTt0eXBlb2YgY3B0YWJsZTwidSImJih6PWZ1bmN0aW9uKHkpe089eSxUKHkpfSxVPWZ1bmN0aW9uKHkpe3JldHVybiAyNTU9PT15LmNoYXJDb2RlQXQoMCkmJjI1ND09PXkuY2hhckNvZGVBdCgx''@;'; put 'put ''KT9jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEIoeS5zbGljZSgyKSkpOnl9LHE9ZnVuY3Rpb24oUCl7cmV0dXJuIDEyMDA9PT1PP1N0cmluZy5mcm9tQ2hhckNvZGUoUCk6Y3B0YWJsZS51dGlscy5kZWNvZGUoTyxbMjU1JlAsUD4+OF0pWzBdfSxKPWZ1bmN0aW9uKFApe3JldHVybiBjcHRh''@;'; put 'put ''YmxlLnV0aWxzLmRlY29kZShJLFtQXSlbMF19KTt2YXIgZWU9bnVsbCxpZT1mdW5jdGlvbigpe3ZhciBQPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7cmV0dXJue2VuY29kZTpmdW5jdGlvbihMKXtmb3IodmFyIFg9''@;'; put 'put ''IiIsbmU9MCxmZT0wLGJlPTAsdmU9MCx5ZT0wLFZlPTAsemU9MCxXZT0wO1dlPEwubGVuZ3RoOyl2ZT0obmU9TC5jaGFyQ29kZUF0KFdlKyspKT4+Mix5ZT0oMyZuZSk8PDR8KGZlPUwuY2hhckNvZGVBdChXZSsrKSk+PjQsVmU9KDE1JmZlKTw8MnwoYmU9TC5jaGFyQ29kZUF0KFdlKyspKT4+''@;'; put 'put ''Nix6ZT02MyZiZSxpc05hTihmZSk/VmU9emU9NjQ6aXNOYU4oYmUpJiYoemU9NjQpLFgrPVAuY2hhckF0KHZlKStQLmNoYXJBdCh5ZSkrUC5jaGFyQXQoVmUpK1AuY2hhckF0KHplKTtyZXR1cm4gWH0sZGVjb2RlOmZ1bmN0aW9uKFgpe3ZhciBuZT0iIix5ZT0wLFZlPTAsemU9MCxXZT0wO1g9''@;'; put 'put ''WC5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIHJ0PTA7cnQ8WC5sZW5ndGg7KXllPVAuaW5kZXhPZihYLmNoYXJBdChydCsrKSksVmU9UC5pbmRleE9mKFguY2hhckF0KHJ0KyspKSxuZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh5ZTw8MnxWZT4+NCksNjQhPT0oemU9UC5pbmRl''@;'; put 'put ''eE9mKFguY2hhckF0KHJ0KyspKSkmJihuZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgoMTUmVmUpPDw0fHplPj4yKSksNjQhPT0oV2U9UC5pbmRleE9mKFguY2hhckF0KHJ0KyspKSkmJihuZSs9U3RyaW5nLmZyb21DaGFyQ29kZSgoMyZ6ZSk8PDZ8V2UpKTtyZXR1cm4gbmV9fX0oKSx1ZT10eXBl''@;'; put 'put ''b2YgQnVmZmVyPCJ1IiYmdHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9uczwidSImJiEhcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLGxlPWZ1bmN0aW9uKCl7fTtpZih0eXBlb2YgQnVmZmVyPCJ1Iil7dmFyIGFlPSFCdWZmZXIuZnJvbTtpZighYWUpdHJ5e0J1ZmZlci5m''@;'; put 'put ''cm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7YWU9ITB9bGU9YWU/ZnVuY3Rpb24oeSxQKXtyZXR1cm4gUD9uZXcgQnVmZmVyKHksUCk6bmV3IEJ1ZmZlcih5KX06QnVmZmVyLmZyb20uYmluZChCdWZmZXIpLEJ1ZmZlci5hbGxvY3x8KEJ1ZmZlci5hbGxvYz1mdW5jdGlvbih5KXtyZXR1cm4gbmV3''@;'; put 'put ''IEJ1ZmZlcih5KX0pLEJ1ZmZlci5hbGxvY1Vuc2FmZXx8KEJ1ZmZlci5hbGxvY1Vuc2FmZT1mdW5jdGlvbih5KXtyZXR1cm4gbmV3IEJ1ZmZlcih5KX0pfWZ1bmN0aW9uIFcoeSl7cmV0dXJuIHVlP0J1ZmZlci5hbGxvYyh5KTpuZXcgQXJyYXkoeSl9ZnVuY3Rpb24gYih5KXtyZXR1cm4gdWU/''@;'; put 'put ''QnVmZmVyLmFsbG9jVW5zYWZlKHkpOm5ldyBBcnJheSh5KX12YXIgQT1mdW5jdGlvbihQKXtyZXR1cm4gdWU/bGUoUCwiYmluYXJ5Iik6UC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKEwpe3JldHVybiAyNTUmTC5jaGFyQ29kZUF0KDApfSl9O2Z1bmN0aW9uIEYoeSl7aWYodHlwZW9mIEFycmF5''@;'; put 'put ''QnVmZmVyPiJ1IilyZXR1cm4gQSh5KTtmb3IodmFyIFA9bmV3IEFycmF5QnVmZmVyKHkubGVuZ3RoKSxMPW5ldyBVaW50OEFycmF5KFApLFg9MDtYIT15Lmxlbmd0aDsrK1gpTFtYXT0yNTUmeS5jaGFyQ29kZUF0KFgpO3JldHVybiBQfWZ1bmN0aW9uIEgoeSl7aWYoQXJyYXkuaXNBcnJheSh5''@;'; put 'put ''KSlyZXR1cm4geS5tYXAoZnVuY3Rpb24oWCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoWCl9KS5qb2luKCIiKTtmb3IodmFyIFA9W10sTD0wO0w8eS5sZW5ndGg7KytMKVBbTF09U3RyaW5nLmZyb21DaGFyQ29kZSh5W0xdKTtyZXR1cm4gUC5qb2luKCIiKX1mdW5jdGlvbiBDKHkpe2lm''@;'; put 'put ''KHR5cGVvZiBBcnJheUJ1ZmZlcj4idSIpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCIpO2lmKHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcilyZXR1cm4gQyhuZXcgVWludDhBcnJheSh5KSk7Zm9yKHZhciBQPW5ldyBBcnJheSh5Lmxlbmd0aCksTD0wO0w8eS5sZW5ndGg7KytMKVBbTF09''@;'; put 'put ''eVtMXTtyZXR1cm4gUH12YXIgaz1mdW5jdGlvbih5KXt2YXIgUD1bXTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKEwpe0FycmF5LmlzQXJyYXkoTCk/UD1QLmNvbmNhdChMKToodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZMIGluc3RhbmNlb2YgVWludDhBcnJheXx8dHlwZW9mIEFycmF5QnVm''@;'; put 'put ''ZmVyPCJ1IiYmTCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSYmKFA9UC5jb25jYXQoQyhMKSkpfSksUH0sXz0vXHUwMDAwL2cscD0vW1x1MDAwMS1cdTAwMDZdL2csdz17fSxLPWZ1bmN0aW9uKFApe2Z1bmN0aW9uIEwocXQpe2Zvcih2YXIgZm49IiIsTG49cXQubGVuZ3RoLTE7TG4+PTA7KWZu''@;'; put 'put ''Kz1xdC5jaGFyQXQoTG4tLSk7cmV0dXJuIGZufWZ1bmN0aW9uIFgocXQsZm4pe2Zvcih2YXIgTG49IiI7TG4ubGVuZ3RoPGZuOylMbis9cXQ7cmV0dXJuIExufWZ1bmN0aW9uIG5lKHF0LGZuKXt2YXIgTG49IiIrcXQ7cmV0dXJuIExuLmxlbmd0aD49Zm4/TG46WCgiMCIsZm4tTG4ubGVuZ3Ro''@;'; put 'put ''KStMbn1mdW5jdGlvbiBmZShxdCxmbil7dmFyIExuPSIiK3F0O3JldHVybiBMbi5sZW5ndGg+PWZuP0xuOlgoIiAiLGZuLUxuLmxlbmd0aCkrTG59ZnVuY3Rpb24gYmUocXQsZm4pe3ZhciBMbj0iIitxdDtyZXR1cm4gTG4ubGVuZ3RoPj1mbj9MbjpMbitYKCIgIixmbi1Mbi5sZW5ndGgpfVAu''@;'; put 'put ''dmVyc2lvbj0iMS4yMDIxMDcyNi4xIjt2YXIgVmU9TWF0aC5wb3coMiwzMik7ZnVuY3Rpb24gemUocXQsZm4pe3JldHVybiBxdD5WZXx8cXQ8LVZlP2Z1bmN0aW9uIHZlKHF0LGZuKXt2YXIgTG49IiIrTWF0aC5yb3VuZChxdCk7cmV0dXJuIExuLmxlbmd0aD49Zm4/TG46WCgiMCIsZm4tTG4u''@;'; put 'put ''bGVuZ3RoKStMbn0ocXQsZm4pOmZ1bmN0aW9uIHllKHF0LGZuKXt2YXIgTG49IiIrcXQ7cmV0dXJuIExuLmxlbmd0aD49Zm4/TG46WCgiMCIsZm4tTG4ubGVuZ3RoKStMbn0oTWF0aC5yb3VuZChxdCksZm4pfWZ1bmN0aW9uIFdlKHF0LGZuKXtyZXR1cm4gcXQubGVuZ3RoPj03Kyhmbj1mbnx8''@;'; put 'put ''MCkmJjEwMz09KDMyfHF0LmNoYXJDb2RlQXQoZm4pKSYmMTAxPT0oMzJ8cXQuY2hhckNvZGVBdChmbisxKSkmJjExMD09KDMyfHF0LmNoYXJDb2RlQXQoZm4rMikpJiYxMDE9PSgzMnxxdC5jaGFyQ29kZUF0KGZuKzMpKSYmMTE0PT0oMzJ8cXQuY2hhckNvZGVBdChmbis0KSkmJjk3PT0oMzJ8''@;'; put 'put ''cXQuY2hhckNvZGVBdChmbis1KSkmJjEwOD09KDMyfHF0LmNoYXJDb2RlQXQoZm4rNikpfWZ1bmN0aW9uIHJ0KHF0KXtmb3IodmFyIGZuPVtdLExuPU9iamVjdC5rZXlzKHF0KSxYcj0wO1hyIT09TG4ubGVuZ3RoOysrWHIpZm5bcXRbTG5bWHJdXV09TG5bWHJdO3JldHVybiBmbn12YXIgbHQ9''@;'; put 'put ''W1siU3VuIiwiU3VuZGF5Il0sWyJNb24iLCJNb25kYXkiXSxbIlR1ZSIsIlR1ZXNkYXkiXSxbIldlZCIsIldlZG5lc2RheSJdLFsiVGh1IiwiVGh1cnNkYXkiXSxbIkZyaSIsIkZyaWRheSJdLFsiU2F0IiwiU2F0dXJkYXkiXV0sQ3Q9W1siSiIsIkphbiIsIkphbnVhcnkiXSxbIkYiLCJGZWIi''@;'; put 'put ''LCJGZWJydWFyeSJdLFsiTSIsIk1hciIsIk1hcmNoIl0sWyJBIiwiQXByIiwiQXByaWwiXSxbIk0iLCJNYXkiLCJNYXkiXSxbIkoiLCJKdW4iLCJKdW5lIl0sWyJKIiwiSnVsIiwiSnVseSJdLFsiQSIsIkF1ZyIsIkF1Z3VzdCJdLFsiUyIsIlNlcCIsIlNlcHRlbWJlciJdLFsiTyIsIk9jdCIs''@;'; put 'put ''Ik9jdG9iZXIiXSxbIk4iLCJOb3YiLCJOb3ZlbWJlciJdLFsiRCIsIkRlYyIsIkRlY2VtYmVyIl1dO2Z1bmN0aW9uIGF0KHF0KXtxdFswXT0iR2VuZXJhbCIscXRbMV09IjAiLHF0WzJdPSIwLjAwIixxdFszXT0iIywjIzAiLHF0WzRdPSIjLCMjMC4wMCIscXRbOV09IjAlIixxdFsxMF09IjAu''@;'; put 'put ''MDAlIixxdFsxMV09IjAuMDBFKzAwIixxdFsxMl09IiMgPy8/IixxdFsxM109IiMgPz8vPz8iLHF0WzE0XT0ibS9kL3l5IixxdFsxNV09ImQtbW1tLXl5IixxdFsxNl09ImQtbW1tIixxdFsxN109Im1tbS15eSIscXRbMThdPSJoOm1tIEFNL1BNIixxdFsxOV09Img6bW06c3MgQU0vUE0iLHF0''@;'; put 'put ''WzIwXT0iaDptbSIscXRbMjFdPSJoOm1tOnNzIixxdFsyMl09Im0vZC95eSBoOm1tIixxdFszN109IiMsIyMwIDsoIywjIzApIixxdFszOF09IiMsIyMwIDtbUmVkXSgjLCMjMCkiLHF0WzM5XT0iIywjIzAuMDA7KCMsIyMwLjAwKSIscXRbNDBdPSIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCki''@;'; put 'put ''LHF0WzQ1XT0ibW06c3MiLHF0WzQ2XT0iW2hdOm1tOnNzIixxdFs0N109Im1tc3MuMCIscXRbNDhdPSIjIzAuMEUrMCIscXRbNDldPSJAIixxdFs1Nl09JyJcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4ICJoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiAiJyxFbihxdCl9dmFyIHZ0PXt9''@;'; put 'put ''O2F0KHZ0KTt2YXIgUHQ9W10sa3Q9MDtmb3Ioa3Q9NTtrdDw9ODsrK2t0KVB0W2t0XT0zMitrdDtmb3Ioa3Q9MjM7a3Q8PTI2Oysra3QpUHRba3RdPTA7Zm9yKGt0PTI3O2t0PD0zMTsrK2t0KVB0W2t0XT0xNDtmb3Ioa3Q9NTA7a3Q8PTU4Oysra3QpUHRba3RdPTE0O2ZvcihrdD01OTtrdDw9''@;'; put 'put ''NjI7KytrdClQdFtrdF09a3QtNTg7Zm9yKGt0PTY3O2t0PD02ODsrK2t0KVB0W2t0XT1rdC01ODtmb3Ioa3Q9NzI7a3Q8PTc1Oysra3QpUHRba3RdPWt0LTU4O2ZvcihrdD02NztrdDw9Njg7KytrdClQdFtrdF09a3QtNTc7Zm9yKGt0PTc2O2t0PD03ODsrK2t0KVB0W2t0XT1rdC01Njtmb3Io''@;'; put 'put ''a3Q9Nzk7a3Q8PTgxOysra3QpUHRba3RdPWt0LTM0O3ZhciBEdD1bXTtmdW5jdGlvbiBadChxdCxmbixMbil7Zm9yKHZhciBYcj1xdDwwPy0xOjEscW49cXQqWHIsbmk9MCxhcj0xLHJpPTAsYm89MSxvaT0wLFZpPTAsUXI9TWF0aC5mbG9vcihxbik7b2k8Zm4mJihyaT0oUXI9TWF0aC5mbG9v''@;'; put 'put ''cihxbikpKmFyK25pLFZpPVFyKm9pK2JvLCEocW4tUXI8NWUtOCkpOylxbj0xLyhxbi1Rciksbmk9YXIsYXI9cmksYm89b2ksb2k9Vmk7aWYoVmk+Zm4mJihvaT5mbj8oVmk9Ym8scmk9bmkpOihWaT1vaSxyaT1hcikpLCFMbilyZXR1cm5bMCxYcipyaSxWaV07dmFyIFBzPU1hdGguZmxvb3Io''@;'; put 'put ''WHIqcmkvVmkpO3JldHVybltQcyxYcipyaS1QcypWaSxWaV19ZnVuY3Rpb24gZ24ocXQsZm4sTG4pe2lmKHF0PjI5NTg0NjV8fHF0PDApcmV0dXJuIG51bGw7dmFyIFhyPTB8cXQscW49TWF0aC5mbG9vcig4NjQwMCoocXQtWHIpKSxuaT0wLGFyPVtdLHJpPXtEOlhyLFQ6cW4sdTo4NjQwMCoo''@;'; put 'put ''cXQtWHIpLXFuLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07aWYoTWF0aC5hYnMocmkudSk8MWUtNiYmKHJpLnU9MCksZm4mJmZuLmRhdGUxOTA0JiYoWHIrPTE0NjIpLHJpLnU+Ljk5OTkmJihyaS51PTAsODY0MDA9PSsrcW4mJihyaS5UPXFuPTAsKytYciwrK3JpLkQpKSw2MD09PVhy''@;'; put 'put ''KWFyPUxuP1sxMzE3LDEwLDI5XTpbMTkwMCwyLDI5XSxuaT0zO2Vsc2UgaWYoMD09PVhyKWFyPUxuP1sxMzE3LDgsMjldOlsxOTAwLDEsMF0sbmk9NjtlbHNle1hyPjYwJiYtLVhyO3ZhciBibz1uZXcgRGF0ZSgxOTAwLDAsMSk7Ym8uc2V0RGF0ZShiby5nZXREYXRlKCkrWHItMSksYXI9W2Jv''@;'; put 'put ''LmdldEZ1bGxZZWFyKCksYm8uZ2V0TW9udGgoKSsxLGJvLmdldERhdGUoKV0sbmk9Ym8uZ2V0RGF5KCksWHI8NjAmJihuaT0obmkrNiklNyksTG4mJihuaT1mdW5jdGlvbiBMbyhxdCxmbil7Zm5bMF0tPTU4MTt2YXIgTG49cXQuZ2V0RGF5KCk7cmV0dXJuIHF0PDYwJiYoTG49KExuKzYpJTcp''@;'; put 'put ''LExufShibyxhcikpfXJldHVybiByaS55PWFyWzBdLHJpLm09YXJbMV0scmkuZD1hclsyXSxyaS5TPXFuJTYwLHFuPU1hdGguZmxvb3IocW4vNjApLHJpLk09cW4lNjAscW49TWF0aC5mbG9vcihxbi82MCkscmkuSD1xbixyaS5xPW5pLHJpfUR0WzVdPUR0WzYzXT0nIiQiIywjIzBfKTtcXCgi''@;'; put 'put ''JCIjLCMjMFxcKScsRHRbNl09RHRbNjRdPSciJCIjLCMjMF8pO1tSZWRdXFwoIiQiIywjIzBcXCknLER0WzddPUR0WzY1XT0nIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsRHRbOF09RHRbNjZdPSciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLER0WzQxXT0n''@;'; put 'put ''XygqICMsIyMwXyk7XygqIFxcKCMsIyMwXFwpO18oKiAiLSJfKTtfKEBfKScsRHRbNDJdPSdfKCIkIiogIywjIzBfKTtfKCIkIiogXFwoIywjIzBcXCk7XygiJCIqICItIl8pO18oQF8pJyxEdFs0M109J18oKiAjLCMjMC4wMF8pO18oKiBcXCgjLCMjMC4wMFxcKTtfKCogIi0iPz9fKTtfKEBf''@;'; put 'put ''KScsRHRbNDRdPSdfKCIkIiogIywjIzAuMDBfKTtfKCIkIiogXFwoIywjIzAuMDBcXCk7XygiJCIqICItIj8/Xyk7XyhAXyknLFAucGFyc2VfZGF0ZV9jb2RlPWduO3ZhciAkbj1uZXcgRGF0ZSgxODk5LDExLDMxLDAsMCwwKSxjbj0kbi5nZXRUaW1lKCksWG49bmV3IERhdGUoMTkwMCwyLDEs''@;'; put 'put ''MCwwLDApO2Z1bmN0aW9uIEJuKHF0LGZuKXt2YXIgTG49cXQuZ2V0VGltZSgpO3JldHVybiBmbj9Mbi09MTI2MjMwNGU1OnF0Pj1YbiYmKExuKz04NjRlNSksKExuLShjbis2ZTQqKHF0LmdldFRpbWV6b25lT2Zmc2V0KCktJG4uZ2V0VGltZXpvbmVPZmZzZXQoKSkpKS84NjRlNX12YXIgRG49''@;'; put 'put ''IiIsUW49eyJlbi11cyI6e3k6InkiLGQ6ImQiLCIsIjoiLCIsIi4iOiIuIixkYXRlOiJfLyJ9LCJkZS1kZSI6e3k6ImoiLGQ6InQiLCIsIjoiLiIsIi4iOiIsIixkYXRlOiJfLiJ9LCJpdC1pdCI6e3k6InkiLGQ6ImQiLCIsIjoiLiIsIi4iOiIsIixkYXRlOiJfLyJ9fSxlcj1RbltEbi50b0xv''@;'; put 'put ''d2VyQ2FzZSgpXXx8UW5bImVuLXVzIl0sem49cnQoZXIpLEtyPSIkIixpaT0iIix0aT0iLCIsZnI9Ii4iLEFuPSIvIjtmdW5jdGlvbiBFbihxdCl7c3dpdGNoKChEbnx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiemgtdHciOnF0WzI3XT0iWyQtNDA0XWUvbS9kIixxdFsyOF09J1skLTQwNF1l''@;'; put 'put ''Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzI5XT0nWyQtNDA0XWUiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscXRbMzBdPSdtIi8iZCIvInl5JyxxdFszMV09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscXRbMzJdPSdoaCJcdTY2NDIibW0iXHU1MjA2IicscXRb''@;'; put 'put ''MzNdPSdoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLHF0WzM0XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2IicscXRbMzVdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicscXRbMzZd''@;'; put 'put ''PSJbJC00MDRdZS9tL2QiLHF0WzUwXT0iWyQtNDA0XWUvbS9kIixxdFs1MV09J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzUyXT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2IicscXRbNTNdPSdcdTRlMGFcdTUzNDgvXHU0ZTBi''@;'; put 'put ''XHU1MzQ4IGhoIlx1NjY0MiJtbSJcdTUyMDYic3MiXHU3OWQyIicscXRbNTRdPSdbJC00MDRdZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJyxxdFs1NV09J1x1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDggaGgiXHU2NjQyIm1tIlx1NTIwNiInLHF0WzU2XT0nXHU0ZTBhXHU1MzQ4L1x1NGUw''@;'; put 'put ''Ylx1NTM0OCBoaCJcdTY2NDIibW0iXHU1MjA2InNzIlx1NzlkMiInLHF0WzU3XT0iWyQtNDA0XWUvbS9kIixxdFs1OF09J1skLTQwNF1lIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInO2JyZWFrO2Nhc2UiemgtY24iOnF0WzI3XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxxdFsyOF09J20i''@;'; put 'put ''XHU2NzA4ImQiXHU2NWU1IicscXRbMjldPSdtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzMwXT0nbSItImQiLSJ5eScscXRbMzFdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzMyXT0naCJcdTY1ZjYibW0iXHU1MjA2IicscXRbMzNdPSdoIlx1NjVmNiJtbSJcdTUyMDYic3Mi''@;'; put 'put ''XHU3OWQyIicscXRbMzRdPSdcdTRlMGFcdTUzNDgvXHU0ZTBiXHU1MzQ4IGgiXHU2NWY2Im1tIlx1NTIwNiInLHF0WzM1XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYic3MiXHU3OWQyIicscXRbMzZdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHF0WzUw''@;'; put 'put ''XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxxdFs1MV09J20iXHU2NzA4ImQiXHU2NWU1IicscXRbNTJdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHF0WzUzXT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxxdFs1NF09J20iXHU2NzA4ImQiXHU2NWU1IicscXRbNTVdPSdcdTRlMGFcdTUzNDgvXHU0''@;'; put 'put ''ZTBiXHU1MzQ4IGgiXHU2NWY2Im1tIlx1NTIwNiInLHF0WzU2XT0nXHU0ZTBhXHU1MzQ4L1x1NGUwYlx1NTM0OCBoIlx1NjVmNiJtbSJcdTUyMDYic3MiXHU3OWQyIicscXRbNTddPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHF0WzU4XT0nbSJcdTY3MDgiZCJcdTY1ZTUiJzticmVhaztjYXNl''@;'; put 'put ''ImphLWpwIjpxdFsyN109J1skLTQxMV1nZSIuIm0iLiJkJyxxdFsyOF09J1skLTQxMV1nZ2dlIlx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzI5XT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscXRbMzBdPSdtIi8iZCIvInl5JyxxdFszMV09J3l5eXkiXHU1''@;'; put 'put ''ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscXRbMzJdPSdoIlx1NjY0MiJtbSJcdTUyMDYiJyxxdFszM109J2giXHU2NjQyIm1tIlx1NTIwNiJzcyJcdTc5ZDIiJyxxdFszNF09J3l5eXkiXHU1ZTc0Im0iXHU2NzA4IicscXRbMzVdPSdtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzM2XT0nWyQtNDEx''@;'; put 'put ''XWdlIi4ibSIuImQnLHF0WzUwXT0nWyQtNDExXWdlIi4ibSIuImQnLHF0WzUxXT0nWyQtNDExXWdnZ2UiXHU1ZTc0Im0iXHU2NzA4ImQiXHU2NWU1IicscXRbNTJdPSd5eXl5Ilx1NWU3NCJtIlx1NjcwOCInLHF0WzUzXT0nbSJcdTY3MDgiZCJcdTY1ZTUiJyxxdFs1NF09J1skLTQxMV1nZ2dl''@;'; put 'put ''Ilx1NWU3NCJtIlx1NjcwOCJkIlx1NjVlNSInLHF0WzU1XT0neXl5eSJcdTVlNzQibSJcdTY3MDgiJyxxdFs1Nl09J20iXHU2NzA4ImQiXHU2NWU1IicscXRbNTddPSdbJC00MTFdZ2UiLiJtIi4iZCcscXRbNThdPSdbJC00MTFdZ2dnZSJcdTVlNzQibSJcdTY3MDgiZCJcdTY1ZTUiJzticmVh''@;'; put 'put ''aztjYXNlImtvLWtyIjpxdFsyN109J3l5eXkiXHU1ZTc0IiBtbSJcdTY3MDgiIGRkIlx1NjVlNSInLHF0WzI4XT0ibW0tZGQiLHF0WzI5XT0ibW0tZGQiLHF0WzMwXT0ibW0tZGQteXkiLHF0WzMxXT0neXl5eSJcdWIxNDQiIG1tIlx1YzZkNCIgZGQiXHVjNzdjIicscXRbMzJdPSdoIlx1YzJk''@;'; put 'put ''YyIgbW0iXHViZDg0IicscXRbMzNdPSdoIlx1YzJkYyIgbW0iXHViZDg0IiBzcyJcdWNkMDgiJyxxdFszNF09Inl5eXktbW0tZGQiLHF0WzM1XT0ieXl5eS1tbS1kZCIscXRbMzZdPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJcdTY1ZTUiJyxxdFs1MF09J3l5eXkiXHU1ZTc0IiBtbSJc''@;'; put 'put ''dTY3MDgiIGRkIlx1NjVlNSInLHF0WzUxXT0ibW0tZGQiLHF0WzUyXT0ieXl5eS1tbS1kZCIscXRbNTNdPSJ5eXl5LW1tLWRkIixxdFs1NF09Im1tLWRkIixxdFs1NV09Inl5eXktbW0tZGQiLHF0WzU2XT0ieXl5eS1tbS1kZCIscXRbNTddPSd5eXl5Ilx1NWU3NCIgbW0iXHU2NzA4IiBkZCJc''@;'; put 'put ''dTY1ZTUiJyxxdFs1OF09Im1tLWRkIjticmVhaztjYXNlInRoLXRoIjpxdFs1OV09JyJ0IjAnLHF0WzYwXT0nInQiMC4wMCcscXRbNjFdPScidCIjLCMjMCcscXRbNjJdPScidCIjLCMjMC4wMCcscXRbNjddPSJ0MCUiLHF0WzY4XT0idDAuMDAlIixxdFs2OV09InQjID8vPyIscXRbNzBdPSJ0''@;'; put 'put ''IyA/Py8/PyIscXRbNzFdPSdcdTBlMjciLyJcdTBlMTQiLyJcdTBlMWJcdTBlMWJcdTBlMWJcdTBlMWInLHF0WzcyXT0nXHUwZTI3Ii0iXHUwZTE0XHUwZTE0XHUwZTE0Ii0iXHUwZTFiXHUwZTFiJyxxdFs3M109J1x1MGUyNyItIlx1MGUxNFx1MGUxNFx1MGUxNCcscXRbNzRdPSdcdTBlMTRc''@;'; put 'put ''dTBlMTRcdTBlMTQiLSJcdTBlMWJcdTBlMWInLHF0Wzc1XT0nXHUwZTBhIjoiXHUwZTE5XHUwZTE5JyxxdFs3Nl09J1x1MGUwYSI6Ilx1MGUxOVx1MGUxOSI6Ilx1MGUxN1x1MGUxNycscXRbNzddPSdcdTBlMjciLyJcdTBlMTQiLyJcdTBlMWJcdTBlMWJcdTBlMWJcdTBlMWIgXHUwZTBhIjoi''@;'; put 'put ''XHUwZTE5XHUwZTE5JyxxdFs3OF09J1x1MGUxOVx1MGUxOSI6Ilx1MGUxN1x1MGUxNycscXRbNzldPSdbXHUwZTBhXVx1MGUxOVx1MGUxOSI6Ilx1MGUxN1x1MGUxNycscXRbODBdPSdcdTBlMTlcdTBlMTkiOiJcdTBlMTdcdTBlMTcuMCcscXRbODFdPSJkL20vYmIifX1QLl9nZW5lcmFsX2lu''@;'; put 'put ''dD1mdW5jdGlvbiBiaShxdCl7cmV0dXJuIHF0LnRvU3RyaW5nKDEwKX07dmFyIHFyPWZ1bmN0aW9uKCl7dmFyIGZuPS8oPzpcLjAqfChcLlxkKlsxLTldKTArKSQvO2Z1bmN0aW9uIExuKG9pKXtyZXR1cm4tMT09b2kuaW5kZXhPZigiLiIpP29pOm9pLnJlcGxhY2UoZm4sIiQxIil9dmFyIFhy''@;'; put 'put ''PS8oPzpcLjAqfChcLlxkKlsxLTldKTArKVtFZV0vLHFuPS8oRVsrLV0pKFxkKSQvO3JldHVybiBmdW5jdGlvbihWaSl7dmFyIFFyPWZ1bmN0aW9uIGJvKG9pKXt2YXIgUXIsVmk9TWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyhvaSkpKk1hdGguTE9HMTBFKTtyZXR1cm4gUXI9Vmk+PS00''@;'; put 'put ''JiZWaTw9LTE/b2kudG9QcmVjaXNpb24oMTArVmkpOk1hdGguYWJzKFZpKTw9OT9mdW5jdGlvbiBhcihvaSl7dmFyIFZpPW9pPDA/MTI6MTEsUXI9TG4ob2kudG9GaXhlZCgxMikpO3JldHVybiBRci5sZW5ndGg8PVZpfHwoUXI9b2kudG9QcmVjaXNpb24oMTApKS5sZW5ndGg8PVZpP1FyOm9p''@;'; put 'put ''LnRvRXhwb25lbnRpYWwoNSl9KG9pKToxMD09PVZpP29pLnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTpmdW5jdGlvbiByaShvaSl7dmFyIFZpPUxuKG9pLnRvRml4ZWQoMTEpKTtyZXR1cm4gVmkubGVuZ3RoPihvaTwwPzEyOjExKXx8IjAiPT09Vml8fCItMCI9PT1WaT9vaS50b1ByZWNpc2lv''@;'; put 'put ''big2KTpWaX0ob2kpLExuKGZ1bmN0aW9uIG5pKG9pKXtyZXR1cm4tMT09b2kuaW5kZXhPZigiRSIpP29pOm9pLnJlcGxhY2UoWHIsIiQxRSIpLnJlcGxhY2UocW4sIiQxMCQyIil9KFFyLnRvVXBwZXJDYXNlKCkpKX0oVmkpO3JldHVybiIsIj09PXRpJiYiLiI9PT1mcj9RcjpRci5yZXBsYWNl''@;'; put 'put ''KC9bLC5dL2csZnVuY3Rpb24oUHMpe3JldHVybiIsIj09UHM/dGk6ZnJ9KX19KCk7ZnVuY3Rpb24gVWkocXQsZm4pe3N3aXRjaCh0eXBlb2YgcXQpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcXQ7Y2FzZSJib29sZWFuIjpyZXR1cm4gcXQ/IlRSVUUiOiJGQUxTRSI7Y2FzZSJudW1iZXIiOnJldHVy''@;'; put 'put ''bigwfHF0KT09PXF0P3F0LnRvU3RyaW5nKDEwKTpxcihxdCk7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZihudWxsPT1xdClyZXR1cm4iIjtpZihxdCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIFJjKDE0LEJuKHF0LGZuJiZmbi5kYXRlMTkwNCksZm4pfXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigidW5zdXBwb3J0ZWQgdmFsdWUgaW4gR2VuZXJhbCBmb3JtYXQ6ICIrcXQpfVAuX2dlbmVyYWxfbnVtPXFyLFAuX2dlbmVyYWw9VWk7dmFyIElpPSJcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTkiLnNwbGl0KCIiKTtm''@;'; put 'put ''dW5jdGlvbiBzcyhxdCxmbixMbixYcil7dmFyIGJvLHFuPSIiLG5pPTAsYXI9MCxyaT1Mbi55LG9pPTA7c3dpdGNoKHF0KXtjYXNlIDk4OnJpPUxuLnkrNTQzO2Nhc2UgMTIxOnN3aXRjaChmbi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6Ym89cmklMTAwLG9pPTI7YnJlYWs7ZGVmYXVsdDpibz1y''@;'; put 'put ''aSUxZTQsb2k9NH1icmVhaztjYXNlIDEwOTpzd2l0Y2goZm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmJvPUxuLm0sb2k9Zm4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gQ3RbTG4ubS0xXVsxXTtjYXNlIDU6cmV0dXJuIEN0W0xuLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gQ3RbTG4ubS0x''@;'; put 'put ''XVsyXX1icmVhaztjYXNlIDEwMDpzd2l0Y2goZm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmJvPUxuLmQsb2k9Zm4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gbHRbTG4ucV1bMF07ZGVmYXVsdDpyZXR1cm4gbHRbTG4ucV1bMV19YnJlYWs7Y2FzZSAxMDQ6c3dpdGNoKGZuLmxlbmd0aCl7''@;'; put 'put ''Y2FzZSAxOmNhc2UgMjpibz0xKyhMbi5IKzExKSUxMixvaT1mbi5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrZm59YnJlYWs7Y2FzZSA3Mjpzd2l0Y2goZm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmJvPUxuLkgsb2k9Zm4ubGVuZ3RoO2JyZWFrO2RlZmF1''@;'; put 'put ''bHQ6dGhyb3ciYmFkIGhvdXIgZm9ybWF0OiAiK2ZufWJyZWFrO2Nhc2UgNzc6c3dpdGNoKGZuLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpibz1Mbi5NLG9pPWZuLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBtaW51dGUgZm9ybWF0OiAiK2ZufWJyZWFrO2Nhc2UgMTE1OmlmKCJzIiE9''@;'; put 'put ''Zm4mJiJzcyIhPWZuJiYiLjAiIT1mbiYmIi4wMCIhPWZuJiYiLjAwMCIhPWZuKXRocm93ImJhZCBzZWNvbmQgZm9ybWF0OiAiK2ZuO3JldHVybiAwIT09TG4udXx8InMiIT1mbiYmInNzIiE9Zm4/KGFyPVhyPj0yPzM9PT1Ycj8xZTM6MTAwOjE9PT1Ycj8xMDoxLChuaT1NYXRoLnJvdW5kKGFy''@;'; put 'put ''KihMbi5TK0xuLnUpKSk+PTYwKmFyJiYobmk9MCksInMiPT09Zm4/MD09PW5pPyIwIjoiIituaS9hcjoocW49bmUobmksMitYciksInNzIj09PWZuP3FuLnN1YnN0cigwLDIpOiIuIitxbi5zdWJzdHIoMixmbi5sZW5ndGgtMSkpKTpuZShMbi5TLGZuLmxlbmd0aCk7Y2FzZSA5MDpzd2l0Y2go''@;'; put 'put ''Zm4pe2Nhc2UiW2hdIjpjYXNlIltoaF0iOmNhc2UiW1x1MGUwYV0iOmNhc2UiW1x1MGUwYVx1MGUwYV0iOmJvPTI0KkxuLkQrTG4uSDticmVhaztjYXNlIlttXSI6Y2FzZSJbbW1dIjpjYXNlIltcdTBlMTldIjpjYXNlIltcdTBlMTlcdTBlMTldIjpibz02MCooMjQqTG4uRCtMbi5IKStMbi5N''@;'; put 'put ''O2JyZWFrO2Nhc2UiW3NdIjpjYXNlIltzc10iOmNhc2UiW1x1MGUxN10iOmNhc2UiW1x1MGUxN1x1MGUxN10iOmJvPTYwKig2MCooMjQqTG4uRCtMbi5IKStMbi5NKStNYXRoLnJvdW5kKExuLlMrTG4udSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgYWJzdGltZSBmb3JtYXQ6ICIrZm59b2k9''@;'; put 'put ''Mz09PWZuLmxlbmd0aD8xOjI7YnJlYWs7Y2FzZSAxMDE6Ym89cmksb2k9MTticmVhaztjYXNlIDM2MjM6Ym89TG4uZCxvaT1mbi5sZW5ndGg7YnJlYWs7Y2FzZSAzNjA0OnN3aXRjaChmbi5sZW5ndGgpe2Nhc2UgMTpjYXNlIDI6Ym89TG4ubSxvaT1mbi5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJl''@;'; put 'put ''dHVybiBDdFtMbi5tLTFdWzFdO2Nhc2UgNTpyZXR1cm4gQ3RbTG4ubS0xXVswXTtkZWZhdWx0OnJldHVybiBDdFtMbi5tLTFdWzJdfWJyZWFrO2Nhc2UgMzYxMTpzd2l0Y2gocmk9TG4ueSs1NDMsZm4ubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmJvPXJpJTEwMCxvaT0yO2JyZWFrO2RlZmF1bHQ6''@;'; put 'put ''Ym89cmklMWU0LG9pPTR9YnJlYWs7Y2FzZSAzNTk0OmJvPUxuLkgsb2k9Zm4ubGVuZ3RoO2JyZWFrO2Nhc2UgMzYwOTpibz1Mbi5NLG9pPWZuLmxlbmd0aDticmVhaztjYXNlIDM2MDc6Ym89TG4uUyxvaT1mbi5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyBxdC50b1N0cmluZygxNil9dmFy''@;'; put 'put ''IFZpPW9pPjA/bmUoYm8sb2kpOiIiO3JldHVybig5MD09cXQ/Zm4uY2hhckNvZGVBdCgxKTwzNTg0OnF0PDM1ODQpP1ZpOlZpLnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24oUXIpe3JldHVybiBJaVsrUXJdfSl9ZnVuY3Rpb24gdW8ocXQpe2lmKHF0Lmxlbmd0aDw9MylyZXR1cm4gcXQ7Zm9y''@;'; put 'put ''KHZhciBMbj1xdC5sZW5ndGglMyxYcj1xdC5zdWJzdHIoMCxMbik7TG4hPXF0Lmxlbmd0aDtMbis9MylYcis9KFhyLmxlbmd0aD4wPyIsIjoiIikrcXQuc3Vic3RyKExuLDMpO3JldHVybiBYcn12YXIgTm89ZnVuY3Rpb24oKXt2YXIgZm49LyUvZztmdW5jdGlvbiBxbihzbixWdCl7dmFyIEd0''@;'; put 'put ''LHVuPXNuLmluZGV4T2YoIkUiKS1zbi5pbmRleE9mKCIuIiktMTtpZihzbi5tYXRjaCgvXiMrMC4wRVwrMCQvKSl7aWYoMD09VnQpcmV0dXJuIjAuMEUrMCI7aWYoVnQ8MClyZXR1cm4iLSIrcW4oc24sLVZ0KTt2YXIgUm49c24uaW5kZXhPZigiLiIpOy0xPT09Um4mJihSbj1zbi5pbmRleE9m''@;'; put 'put ''KCJFIikpO3ZhciB0cj1NYXRoLmZsb29yKE1hdGgubG9nKFZ0KSpNYXRoLkxPRzEwRSklUm47aWYodHI8MCYmKHRyKz1SbiksLTE9PT0oR3Q9KFZ0L01hdGgucG93KDEwLHRyKSkudG9QcmVjaXNpb24odW4rMSsoUm4rdHIpJVJuKSkuaW5kZXhPZigiZSIpKXt2YXIgTXI9TWF0aC5mbG9vcihN''@;'; put 'put ''YXRoLmxvZyhWdCkqTWF0aC5MT0cxMEUpO2ZvcigtMT09PUd0LmluZGV4T2YoIi4iKT9HdD1HdC5jaGFyQXQoMCkrIi4iK0d0LnN1YnN0cigxKSsiRSsiKyhNci1HdC5sZW5ndGgrdHIpOkd0Kz0iRSsiKyhNci10cik7IjAuIj09PUd0LnN1YnN0cigwLDIpOylHdD0oR3Q9R3QuY2hhckF0KDAp''@;'; put 'put ''K0d0LnN1YnN0cigyLFJuKSsiLiIrR3Quc3Vic3RyKDIrUm4pKS5yZXBsYWNlKC9eMCsoWzEtOV0pLywiJDEiKS5yZXBsYWNlKC9eMCtcLi8sIjAuIik7R3Q9R3QucmVwbGFjZSgvXCstLywiLSIpfUd0PUd0LnJlcGxhY2UoL14oWystXT8pKFxkKilcLihcZCopW0VlXS8sZnVuY3Rpb24oRnIs''@;'; put 'put ''THIsU2ksZ2kpe3JldHVybiBMcitTaStnaS5zdWJzdHIoMCwoUm4rdHIpJVJuKSsiLiIrZ2kuc3Vic3RyKHRyKSsiRSJ9KX1lbHNlIEd0PVZ0LnRvRXhwb25lbnRpYWwodW4pO3JldHVybiBzbi5tYXRjaCgvRVwrMDAkLykmJkd0Lm1hdGNoKC9lWystXVxkJC8pJiYoR3Q9R3Quc3Vic3RyKDAs''@;'; put 'put ''R3QubGVuZ3RoLTEpKyIwIitHdC5jaGFyQXQoR3QubGVuZ3RoLTEpKSxzbi5tYXRjaCgvRVwtLykmJkd0Lm1hdGNoKC9lXCsvKSYmKEd0PUd0LnJlcGxhY2UoL2VcKy8sImUiKSksR3QucmVwbGFjZSgiZSIsIkUiKX12YXIgbmk9LyMgKFw/KykoID8pXC8oID8pKFxkKykvLGJvPS9eIyowKlwu''@;'; put 'put ''KFswI10rKS8sb2k9L1wpLipbMCNdLyxWaT0vXCgjIyNcKSAjIyNcXD8tIyMjIy87ZnVuY3Rpb24gUXIoc24pe2Zvcih2YXIgR3QsVnQ9IiIsdW49MDt1biE9c24ubGVuZ3RoOysrdW4pc3dpdGNoKEd0PXNuLmNoYXJDb2RlQXQodW4pKXtjYXNlIDM1OmJyZWFrO2Nhc2UgNjM6VnQrPSIgIjti''@;'; put 'put ''cmVhaztjYXNlIDQ4OlZ0Kz0iMCI7YnJlYWs7ZGVmYXVsdDpWdCs9U3RyaW5nLmZyb21DaGFyQ29kZShHdCl9cmV0dXJuIFZ0fWZ1bmN0aW9uIFBzKHNuLFZ0KXt2YXIgR3Q9TWF0aC5wb3coMTAsVnQpO3JldHVybiIiK01hdGgucm91bmQoc24qR3QpL0d0fWZ1bmN0aW9uIHdzKHNuLFZ0KXtp''@;'; put 'put ''ZihWdD4xMSlyZXR1cm4gd3Moc24sMTEpKk1hdGgucG93KDEwLFZ0LTExKTt2YXIgR3Q9c24tTWF0aC5mbG9vcihzbiksdW49TWF0aC5wb3coMTAsVnQpO3JldHVybiBWdDwoIiIrTWF0aC5yb3VuZChHdCp1bikpLmxlbmd0aD8wOk1hdGgucm91bmQoR3QqdW4pfWZ1bmN0aW9uIEZhKHNuLFZ0''@;'; put 'put ''LEd0KXtpZig0MD09PXNuLmNoYXJDb2RlQXQoMCkmJiFWdC5tYXRjaChvaSkpe3ZhciB1bj1WdC5yZXBsYWNlKC9cKCAqLywiIikucmVwbGFjZSgvIFwpLywiIikucmVwbGFjZSgvXCkvLCIiKTtyZXR1cm4gR3Q+PTA/RmEoIm4iLHVuLEd0KToiKCIrRmEoIm4iLHVuLC1HdCkrIikifWlmKDQ0''@;'; put 'put ''PT09VnQuY2hhckNvZGVBdChWdC5sZW5ndGgtMSkpcmV0dXJuIGZ1bmN0aW9uIFhyKHNuLFZ0LEd0KXtmb3IodmFyIHVuPVZ0Lmxlbmd0aC0xOzQ0PT09VnQuY2hhckNvZGVBdCh1bi0xKTspLS11bjtyZXR1cm4gTm8oc24sVnQuc3Vic3RyKDAsdW4pLEd0L01hdGgucG93KDEwLDMqKFZ0Lmxl''@;'; put 'put ''bmd0aC11bikpKX0oc24sVnQsR3QpO2lmKC0xIT09VnQuaW5kZXhPZigiJSIpKXJldHVybiBmdW5jdGlvbiBMbihzbixWdCxHdCl7dmFyIHVuPVZ0LnJlcGxhY2UoZm4sIiIpLFJuPVZ0Lmxlbmd0aC11bi5sZW5ndGg7cmV0dXJuIE5vKHNuLHVuLEd0Kk1hdGgucG93KDEwLDIqUm4pKStYKCIl''@;'; put 'put ''IixSbil9KHNuLFZ0LEd0KTtpZigtMSE9PVZ0LmluZGV4T2YoIkUiKSlyZXR1cm4gcW4oVnQsR3QpO2lmKDM2PT09VnQuY2hhckNvZGVBdCgwKSlyZXR1cm4iJCIrRmEoc24sVnQuc3Vic3RyKCIgIj09VnQuY2hhckF0KDEpPzI6MSksR3QpO3ZhciBSbix0cixNcixGcixMcj1NYXRoLmFicyhH''@;'; put 'put ''dCksU2k9R3Q8MD8iLSI6IiI7aWYoVnQubWF0Y2goL14wMCskLykpcmV0dXJuIFNpK3plKExyLFZ0Lmxlbmd0aCk7aWYoVnQubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4iMCI9PT0oUm49emUoR3QsMCkpJiYoUm49IiIpLFJuLmxlbmd0aD5WdC5sZW5ndGg/Um46UXIoVnQuc3Vic3RyKDAsVnQu''@;'; put 'put ''bGVuZ3RoLVJuLmxlbmd0aCkpK1JuO2lmKHRyPVZ0Lm1hdGNoKG5pKSlyZXR1cm4gZnVuY3Rpb24gYXIoc24sVnQsR3Qpe3ZhciB1bj1wYXJzZUludChzbls0XSwxMCksUm49TWF0aC5yb3VuZChWdCp1biksdHI9TWF0aC5mbG9vcihSbi91biksTXI9Um4tdHIqdW4sRnI9dW47cmV0dXJuIEd0''@;'; put 'put ''KygwPT09dHI/IiI6IiIrdHIpKyIgIisoMD09PU1yP1goIiAiLHNuWzFdLmxlbmd0aCsxK3NuWzRdLmxlbmd0aCk6ZmUoTXIsc25bMV0ubGVuZ3RoKStzblsyXSsiLyIrc25bM10rbmUoRnIsc25bNF0ubGVuZ3RoKSl9KHRyLExyLFNpKTtpZihWdC5tYXRjaCgvXiMrMCskLykpcmV0dXJuIFNp''@;'; put 'put ''K3plKExyLFZ0Lmxlbmd0aC1WdC5pbmRleE9mKCIwIikpO2lmKHRyPVZ0Lm1hdGNoKGJvKSlyZXR1cm4gUm49UHMoR3QsdHJbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitRcih0clsxXSkpLnJlcGxhY2UoL1wuJC8sIi4iK1FyKHRyWzFdKSkucmVwbGFjZSgvXC4oXGQq''@;'; put 'put ''KSQvLGZ1bmN0aW9uKGVzLFlzKXtyZXR1cm4iLiIrWXMrWCgiMCIsUXIodHJbMV0pLmxlbmd0aC1Zcy5sZW5ndGgpfSksLTEhPT1WdC5pbmRleE9mKCIwLiIpP1JuOlJuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoVnQ9VnQucmVwbGFjZSgvXiMrKFswLl0pLywiJDEiKSx0cj1WdC5tYXRjaCgv''@;'; put 'put ''XigwKilcLigjKikkLykpcmV0dXJuIFNpK1BzKExyLHRyWzJdLmxlbmd0aCkucmVwbGFjZSgvXC4oXGQqWzEtOV0pMCokLywiLiQxIikucmVwbGFjZSgvXigtP1xkKikkLywiJDEuIikucmVwbGFjZSgvXjBcLi8sdHJbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZih0cj1WdC5tYXRjaCgvXiN7MSwz''@;'; put 'put ''fSwjIzAoXC4/KSQvKSlyZXR1cm4gU2krdW8oemUoTHIsMCkpO2lmKHRyPVZ0Lm1hdGNoKC9eIywjIzBcLihbIzBdKjApJC8pKXJldHVybiBHdDwwPyItIitGYShzbixWdCwtR3QpOnVvKCIiKyhNYXRoLmZsb29yKEd0KStmdW5jdGlvbiBQYShzbixWdCl7cmV0dXJuIFZ0PCgiIitNYXRoLnJv''@;'; put 'put ''dW5kKChzbi1NYXRoLmZsb29yKHNuKSkqTWF0aC5wb3coMTAsVnQpKSkubGVuZ3RoPzE6MH0oR3QsdHJbMV0ubGVuZ3RoKSkpKyIuIituZSh3cyhHdCx0clsxXS5sZW5ndGgpLHRyWzFdLmxlbmd0aCk7aWYodHI9VnQubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIEZhKHNuLFZ0LnJlcGxhY2Uo''@;'; put 'put ''L14jLCMqLC8sIiIpLEd0KTtpZih0cj1WdC5tYXRjaCgvXihbMCNdKykoXFw/LShbMCNdKykpKyQvKSlyZXR1cm4gUm49TChGYShzbixWdC5yZXBsYWNlKC9bXFwtXS9nLCIiKSxHdCkpLE1yPTAsTChMKFZ0LnJlcGxhY2UoL1xcL2csIiIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rpb24oZXMp''@;'; put 'put ''e3JldHVybiBNcjxSbi5sZW5ndGg/Um4uY2hhckF0KE1yKyspOiIwIj09PWVzPyIwIjoiIn0pKTtpZihWdC5tYXRjaChWaSkpcmV0dXJuIigiKyhSbj1GYShzbiwiIyMjIyMjIyMjIyIsR3QpKS5zdWJzdHIoMCwzKSsiKSAiK1JuLnN1YnN0cigzLDMpKyItIitSbi5zdWJzdHIoNik7dmFyIGdp''@;'; put 'put ''PSIiO2lmKHRyPVZ0Lm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gTXI9TWF0aC5taW4odHJbNF0ubGVuZ3RoLDcpLEZyPVp0KExyLE1hdGgucG93KDEwLE1yKS0xLCExKSxSbj0iIitTaSwiICI9PShnaT1ObygibiIsdHJbMV0sRnJbMV0pKS5jaGFyQXQoZ2ku''@;'; put 'put ''bGVuZ3RoLTEpJiYoZ2k9Z2kuc3Vic3RyKDAsZ2kubGVuZ3RoLTEpKyIwIiksUm4rPWdpK3RyWzJdKyIvIit0clszXSwoZ2k9YmUoRnJbMl0sTXIpKS5sZW5ndGg8dHJbNF0ubGVuZ3RoJiYoZ2k9UXIodHJbNF0uc3Vic3RyKHRyWzRdLmxlbmd0aC1naS5sZW5ndGgpKStnaSksUm4rPWdpO2lm''@;'; put 'put ''KHRyPVZ0Lm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBNcj1NYXRoLm1pbihNYXRoLm1heCh0clsxXS5sZW5ndGgsdHJbNF0ubGVuZ3RoKSw3KSxTaSsoKEZyPVp0KExyLE1hdGgucG93KDEwLE1yKS0xLCEwKSlbMF18fChGclsxXT8iIjoiMCIpKSsiICIr''@;'; put 'put ''KEZyWzFdP2ZlKEZyWzFdLE1yKSt0clsyXSsiLyIrdHJbM10rYmUoRnJbMl0sTXIpOlgoIiAiLDIqTXIrMSt0clsyXS5sZW5ndGgrdHJbM10ubGVuZ3RoKSk7aWYodHI9VnQubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIFJuPXplKEd0LDApLFZ0Lmxlbmd0aDw9Um4ubGVuZ3RoP1JuOlFyKFZ0''@;'; put 'put ''LnN1YnN0cigwLFZ0Lmxlbmd0aC1Sbi5sZW5ndGgpKStSbjtpZih0cj1WdC5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtSbj0iIitHdC50b0ZpeGVkKE1hdGgubWluKHRyWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksTXI9Um4uaW5kZXhPZigiLiIpO3Zh''@;'; put 'put ''ciBBbz1WdC5pbmRleE9mKCIuIiktTXIscG89VnQubGVuZ3RoLVJuLmxlbmd0aC1BbztyZXR1cm4gUXIoVnQuc3Vic3RyKDAsQW8pK1JuK1Z0LnN1YnN0cihWdC5sZW5ndGgtcG8pKX1pZih0cj1WdC5tYXRjaCgvXjAwLDAwMFwuKFsjMF0qMCkkLykpcmV0dXJuIE1yPXdzKEd0LHRyWzFdLmxl''@;'; put 'put ''bmd0aCksR3Q8MD8iLSIrRmEoc24sVnQsLUd0KTp1byhmdW5jdGlvbiBMYyhzbil7cmV0dXJuIHNuPDIxNDc0ODM2NDcmJnNuPi0yMTQ3NDgzNjQ4PyIiKyhzbj49MD8wfHNuOnNuLTF8MCk6IiIrTWF0aC5mbG9vcihzbil9KEd0KSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxh''@;'; put 'put ''Y2UoL15cZCokLyxmdW5jdGlvbihlcyl7cmV0dXJuIjAwLCIrKGVzLmxlbmd0aDwzP25lKDAsMy1lcy5sZW5ndGgpOiIiKStlc30pKyIuIituZShNcix0clsxXS5sZW5ndGgpO3N3aXRjaChWdCl7Y2FzZSIjIyMsIyMwLjAwIjpyZXR1cm4gRmEoc24sIiMsIyMwLjAwIixHdCk7Y2FzZSIjIyMs''@;'; put 'put ''IyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIHppPXVvKHplKExyLDApKTtyZXR1cm4iMCIhPT16aT9TaSt6aToiIjtjYXNlIiMjIywjIyMuMDAiOnJldHVybiBGYShzbiwiIyMjLCMjMC4wMCIsR3QpLnJlcGxhY2UoL14wXC4vLCIuIik7Y2FzZSIjLCMjIy4wMCI6cmV0dXJuIEZh''@;'; put 'put ''KHNuLCIjLCMjMC4wMCIsR3QpLnJlcGxhY2UoL14wXC4vLCIuIil9dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBmb3JtYXQgfCIrVnQrInwiKX1mdW5jdGlvbiBvbihzbixWdCl7dmFyIEd0LHVuPXNuLmluZGV4T2YoIkUiKS1zbi5pbmRleE9mKCIuIiktMTtpZihzbi5tYXRjaCgvXiMr''@;'; put 'put ''MC4wRVwrMCQvKSl7aWYoMD09VnQpcmV0dXJuIjAuMEUrMCI7aWYoVnQ8MClyZXR1cm4iLSIrb24oc24sLVZ0KTt2YXIgUm49c24uaW5kZXhPZigiLiIpOy0xPT09Um4mJihSbj1zbi5pbmRleE9mKCJFIikpO3ZhciB0cj1NYXRoLmZsb29yKE1hdGgubG9nKFZ0KSpNYXRoLkxPRzEwRSklUm47''@;'; put 'put ''aWYodHI8MCYmKHRyKz1SbiksIShHdD0oVnQvTWF0aC5wb3coMTAsdHIpKS50b1ByZWNpc2lvbih1bisxKyhSbit0ciklUm4pKS5tYXRjaCgvW0VlXS8pKXt2YXIgTXI9TWF0aC5mbG9vcihNYXRoLmxvZyhWdCkqTWF0aC5MT0cxMEUpOy0xPT09R3QuaW5kZXhPZigiLiIpP0d0PUd0LmNoYXJB''@;'; put 'put ''dCgwKSsiLiIrR3Quc3Vic3RyKDEpKyJFKyIrKE1yLUd0Lmxlbmd0aCt0cik6R3QrPSJFKyIrKE1yLXRyKSxHdD1HdC5yZXBsYWNlKC9cKy0vLCItIil9R3Q9R3QucmVwbGFjZSgvXihbKy1dPykoXGQqKVwuKFxkKilbRWVdLyxmdW5jdGlvbihGcixMcixTaSxnaSl7cmV0dXJuIExyK1NpK2dp''@;'; put 'put ''LnN1YnN0cigwLChSbit0ciklUm4pKyIuIitnaS5zdWJzdHIodHIpKyJFIn0pfWVsc2UgR3Q9VnQudG9FeHBvbmVudGlhbCh1bik7cmV0dXJuIHNuLm1hdGNoKC9FXCswMCQvKSYmR3QubWF0Y2goL2VbKy1dXGQkLykmJihHdD1HdC5zdWJzdHIoMCxHdC5sZW5ndGgtMSkrIjAiK0d0LmNoYXJB''@;'; put 'put ''dChHdC5sZW5ndGgtMSkpLHNuLm1hdGNoKC9FXC0vKSYmR3QubWF0Y2goL2VcKy8pJiYoR3Q9R3QucmVwbGFjZSgvZVwrLywiZSIpKSxHdC5yZXBsYWNlKCJlIiwiRSIpfWZ1bmN0aW9uIG1uKHNuLFZ0LEd0KXtpZig0MD09PXNuLmNoYXJDb2RlQXQoMCkmJiFWdC5tYXRjaChvaSkpe3ZhciB1''@;'; put 'put ''bj1WdC5yZXBsYWNlKC9cKCAqLywiIikucmVwbGFjZSgvIFwpLywiIikucmVwbGFjZSgvXCkvLCIiKTtyZXR1cm4gR3Q+PTA/bW4oIm4iLHVuLEd0KToiKCIrbW4oIm4iLHVuLC1HdCkrIikifWlmKDQ0PT09VnQuY2hhckNvZGVBdChWdC5sZW5ndGgtMSkpcmV0dXJuIGZ1bmN0aW9uIFAyKHNu''@;'; put 'put ''LFZ0LEd0KXtmb3IodmFyIHVuPVZ0Lmxlbmd0aC0xOzQ0PT09VnQuY2hhckNvZGVBdCh1bi0xKTspLS11bjtyZXR1cm4gTm8oc24sVnQuc3Vic3RyKDAsdW4pLEd0L01hdGgucG93KDEwLDMqKFZ0Lmxlbmd0aC11bikpKX0oc24sVnQsR3QpO2lmKC0xIT09VnQuaW5kZXhPZigiJSIpKXJldHVy''@;'; put 'put ''biBmdW5jdGlvbiBJMShzbixWdCxHdCl7dmFyIHVuPVZ0LnJlcGxhY2UoZm4sIiIpLFJuPVZ0Lmxlbmd0aC11bi5sZW5ndGg7cmV0dXJuIE5vKHNuLHVuLEd0Kk1hdGgucG93KDEwLDIqUm4pKStYKCIlIixSbil9KHNuLFZ0LEd0KTtpZigtMSE9PVZ0LmluZGV4T2YoIkUiKSlyZXR1cm4gb24o''@;'; put 'put ''VnQsR3QpO2lmKDM2PT09VnQuY2hhckNvZGVBdCgwKSlyZXR1cm4iJCIrbW4oc24sVnQuc3Vic3RyKCIgIj09VnQuY2hhckF0KDEpPzI6MSksR3QpO3ZhciBSbix0cixNcixGcixMcj1NYXRoLmFicyhHdCksU2k9R3Q8MD8iLSI6IiI7aWYoVnQubWF0Y2goL14wMCskLykpcmV0dXJuIFNpK25l''@;'; put 'put ''KExyLFZ0Lmxlbmd0aCk7aWYoVnQubWF0Y2goL15bIz9dKyQvKSlyZXR1cm4gUm49IiIrR3QsMD09PUd0JiYoUm49IiIpLFJuLmxlbmd0aD5WdC5sZW5ndGg/Um46UXIoVnQuc3Vic3RyKDAsVnQubGVuZ3RoLVJuLmxlbmd0aCkpK1JuO2lmKHRyPVZ0Lm1hdGNoKG5pKSlyZXR1cm4gZnVuY3Rp''@;'; put 'put ''b24gcmkoc24sVnQsR3Qpe3JldHVybiBHdCsoMD09PVZ0PyIiOiIiK1Z0KStYKCIgIixzblsxXS5sZW5ndGgrMitzbls0XS5sZW5ndGgpfSh0cixMcixTaSk7aWYoVnQubWF0Y2goL14jKzArJC8pKXJldHVybiBTaStuZShMcixWdC5sZW5ndGgtVnQuaW5kZXhPZigiMCIpKTtpZih0cj1WdC5t''@;'; put 'put ''YXRjaChibykpcmV0dXJuIFJuPShSbj0oIiIrR3QpLnJlcGxhY2UoL14oW15cLl0rKSQvLCIkMS4iK1FyKHRyWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrUXIodHJbMV0pKSkucmVwbGFjZSgvXC4oXGQqKSQvLGZ1bmN0aW9uKGVzLFlzKXtyZXR1cm4iLiIrWXMrWCgiMCIsUXIodHJbMV0pLmxl''@;'; put 'put ''bmd0aC1Zcy5sZW5ndGgpfSksLTEhPT1WdC5pbmRleE9mKCIwLiIpP1JuOlJuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoVnQ9VnQucmVwbGFjZSgvXiMrKFswLl0pLywiJDEiKSx0cj1WdC5tYXRjaCgvXigwKilcLigjKikkLykpcmV0dXJuIFNpKygiIitMcikucmVwbGFjZSgvXC4oXGQqWzEt''@;'; put 'put ''OV0pMCokLywiLiQxIikucmVwbGFjZSgvXigtP1xkKikkLywiJDEuIikucmVwbGFjZSgvXjBcLi8sdHJbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZih0cj1WdC5tYXRjaCgvXiN7MSwzfSwjIzAoXC4/KSQvKSlyZXR1cm4gU2krdW8oIiIrTHIpO2lmKHRyPVZ0Lm1hdGNoKC9eIywjIzBcLihbIzBd''@;'; put 'put ''KjApJC8pKXJldHVybiBHdDwwPyItIittbihzbixWdCwtR3QpOnVvKCIiK0d0KSsiLiIrWCgiMCIsdHJbMV0ubGVuZ3RoKTtpZih0cj1WdC5tYXRjaCgvXiMsIyosIzAvKSlyZXR1cm4gbW4oc24sVnQucmVwbGFjZSgvXiMsIyosLywiIiksR3QpO2lmKHRyPVZ0Lm1hdGNoKC9eKFswI10rKShc''@;'; put 'put ''XD8tKFswI10rKSkrJC8pKXJldHVybiBSbj1MKG1uKHNuLFZ0LnJlcGxhY2UoL1tcXC1dL2csIiIpLEd0KSksTXI9MCxMKEwoVnQucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbihlcyl7cmV0dXJuIE1yPFJuLmxlbmd0aD9Sbi5jaGFyQXQoTXIrKyk6IjAiPT09''@;'; put 'put ''ZXM/IjAiOiIifSkpO2lmKFZ0Lm1hdGNoKFZpKSlyZXR1cm4iKCIrKFJuPW1uKHNuLCIjIyMjIyMjIyMjIixHdCkpLnN1YnN0cigwLDMpKyIpICIrUm4uc3Vic3RyKDMsMykrIi0iK1JuLnN1YnN0cig2KTt2YXIgZ2k9IiI7aWYodHI9VnQubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMw''@;'; put 'put ''P10rKS8pKXJldHVybiBNcj1NYXRoLm1pbih0cls0XS5sZW5ndGgsNyksRnI9WnQoTHIsTWF0aC5wb3coMTAsTXIpLTEsITEpLFJuPSIiK1NpLCIgIj09KGdpPU5vKCJuIix0clsxXSxGclsxXSkpLmNoYXJBdChnaS5sZW5ndGgtMSkmJihnaT1naS5zdWJzdHIoMCxnaS5sZW5ndGgtMSkrIjAi''@;'; put 'put ''KSxSbis9Z2krdHJbMl0rIi8iK3RyWzNdLChnaT1iZShGclsyXSxNcikpLmxlbmd0aDx0cls0XS5sZW5ndGgmJihnaT1Rcih0cls0XS5zdWJzdHIodHJbNF0ubGVuZ3RoLWdpLmxlbmd0aCkpK2dpKSxSbis9Z2k7aWYodHI9VnQubWF0Y2goL14jIChbIzA/XSspKCA/KVwvKCA/KShbIzA/XSsp''@;'; put 'put ''LykpcmV0dXJuIE1yPU1hdGgubWluKE1hdGgubWF4KHRyWzFdLmxlbmd0aCx0cls0XS5sZW5ndGgpLDcpLFNpKygoRnI9WnQoTHIsTWF0aC5wb3coMTAsTXIpLTEsITApKVswXXx8KEZyWzFdPyIiOiIwIikpKyIgIisoRnJbMV0/ZmUoRnJbMV0sTXIpK3RyWzJdKyIvIit0clszXStiZShGclsy''@;'; put 'put ''XSxNcik6WCgiICIsMipNcisxK3RyWzJdLmxlbmd0aCt0clszXS5sZW5ndGgpKTtpZih0cj1WdC5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gVnQubGVuZ3RoPD0oUm49IiIrR3QpLmxlbmd0aD9SbjpRcihWdC5zdWJzdHIoMCxWdC5sZW5ndGgtUm4ubGVuZ3RoKSkrUm47aWYodHI9VnQubWF0''@;'; put 'put ''Y2goL14oWyMwXSspXC4oWyMwXSspJC8pKXtSbj0iIitHdC50b0ZpeGVkKE1hdGgubWluKHRyWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksTXI9Um4uaW5kZXhPZigiLiIpO3ZhciBBbz1WdC5pbmRleE9mKCIuIiktTXIscG89VnQubGVuZ3RoLVJuLmxlbmd0aC1B''@;'; put 'put ''bztyZXR1cm4gUXIoVnQuc3Vic3RyKDAsQW8pK1JuK1Z0LnN1YnN0cihWdC5sZW5ndGgtcG8pKX1pZih0cj1WdC5tYXRjaCgvXjAwLDAwMFwuKFsjMF0qMCkkLykpcmV0dXJuIEd0PDA/Ii0iK21uKHNuLFZ0LC1HdCk6dW8oIiIrR3QpLnJlcGxhY2UoL15cZCxcZHszfSQvLCIwJCYiKS5yZXBs''@;'; put 'put ''YWNlKC9eXGQqJC8sZnVuY3Rpb24oZXMpe3JldHVybiIwMCwiKyhlcy5sZW5ndGg8Mz9uZSgwLDMtZXMubGVuZ3RoKToiIikrZXN9KSsiLiIrbmUoMCx0clsxXS5sZW5ndGgpO3ZhciB6aT11bygiIitMcik7c3dpdGNoKFZ0KXtjYXNlIiMjIywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMj''@;'; put 'put ''IjpyZXR1cm4iMCIhPT16aT9TaSt6aToiIjtjYXNlIiMsIzAwIjpyZXR1cm4iMDAiIT09KHppPW5lKHppLDIpKT9TaSt6aToiIjtkZWZhdWx0OmlmKFZ0Lm1hdGNoKC9cLlswIz9dKiQvKSlyZXR1cm4gbW4oc24sVnQuc2xpY2UoMCxWdC5sYXN0SW5kZXhPZigiLiIpKSxHdCkrUXIoVnQuc2xp''@;'; put 'put ''Y2UoVnQubGFzdEluZGV4T2YoIi4iKSkpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK1Z0KyJ8Iil9cmV0dXJuIGZ1bmN0aW9uKFZ0LEd0LHVuKXtyZXR1cm4iMCwwIj09R3QmJihHdD0iIywjMDAiKSwoMHx1bik9PT11bj9tbihWdCxHdCx1bik6RmEoVnQsR3QsdW4p''@;'; put 'put ''fX0oKTtmdW5jdGlvbiBFbyhxdCl7Zm9yKHZhciBmbj1bXSxMbj0hMSxYcj0wLHFuPTA7WHI8cXQubGVuZ3RoOysrWHIpc3dpdGNoKHF0LmNoYXJDb2RlQXQoWHIpKXtjYXNlIDM0OkxuPSFMbjticmVhaztjYXNlIDk1OmNhc2UgNDI6Y2FzZSA5MjorK1hyO2JyZWFrO2Nhc2UgNTk6Zm5bZm4u''@;'; put 'put ''bGVuZ3RoXT1xdC5zdWJzdHIocW4sWHItcW4pLHFuPVhyKzF9aWYoZm5bZm4ubGVuZ3RoXT1xdC5zdWJzdHIocW4pLCEwPT09TG4pdGhyb3cgbmV3IEVycm9yKCJGb3JtYXQgfCIrcXQrInwgdW50ZXJtaW5hdGVkIHN0cmluZyAiKTtyZXR1cm4gZm59UC5fc3BsaXQ9RW87dmFyIGFpPS9cW1tI''@;'; put 'put ''aE1tU3NcdTBFMEFcdTBFMTlcdTBFMTddKlxdLztmdW5jdGlvbiBLcyhxdCl7Zm9yKHZhciBmbj0wLExuPSIiLFhyPSIiO2ZuPHF0Lmxlbmd0aDspc3dpdGNoKExuPXF0LmNoYXJBdChmbikpe2Nhc2UiRyI6V2UocXQsZm4pJiYoZm4rPTYpLGZuKys7YnJlYWs7Y2FzZSciJzpmb3IoOzM0IT09''@;'; put 'put ''cXQuY2hhckNvZGVBdCgrK2ZuKSYmZm48cXQubGVuZ3RoOyk7KytmbjticmVhaztjYXNlIlxcIjpjYXNlIl8iOmZuKz0yO2JyZWFrO2Nhc2UiQCI6KytmbjticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYoIjEiPT09cXQuY2hhckF0KGZuKzEpfHwiMiI9PT1xdC5jaGFyQXQoZm4rMSkpcmV0dXJu''@;'; put 'put ''ITA7Y2FzZSJNIjpjYXNlIkQiOmNhc2UiWSI6Y2FzZSJIIjpjYXNlIlMiOmNhc2UiRSI6Y2FzZSJtIjpjYXNlImQiOmNhc2UieSI6Y2FzZSJoIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJnIjpyZXR1cm4hMDtjYXNlIkEiOmNhc2UiYSI6Y2FzZSJcdTRlMGEiOmlmKCJBL1AiPT09cXQuc3Vic3Ry''@;'; put 'put ''KGZuLDMpLnRvVXBwZXJDYXNlKCl8fCJBTS9QTSI9PT1xdC5zdWJzdHIoZm4sNSkudG9VcHBlckNhc2UoKXx8Ilx1NGUwYVx1NTM0OC9cdTRlMGJcdTUzNDgiPT09cXQuc3Vic3RyKGZuLDUpLnRvVXBwZXJDYXNlKCkpcmV0dXJuITA7KytmbjticmVhaztjYXNlIlsiOmZvcihYcj1MbjsiXSIh''@;'; put 'put ''PT1xdC5jaGFyQXQoZm4rKykmJmZuPHF0Lmxlbmd0aDspWHIrPXF0LmNoYXJBdChmbik7aWYoWHIubWF0Y2goYWkpKXJldHVybiEwO2JyZWFrO2Nhc2UiLiI6Y2FzZSIwIjpjYXNlIiMiOmZvcig7Zm48cXQubGVuZ3RoJiYoIjAjPy4sRSstJSIuaW5kZXhPZihMbj1xdC5jaGFyQXQoKytmbikp''@;'; put 'put ''Pi0xfHwiXFwiPT1MbiYmIi0iPT1xdC5jaGFyQXQoZm4rMSkmJiIwIyIuaW5kZXhPZihxdC5jaGFyQXQoZm4rMikpPi0xKTspO2JyZWFrO2Nhc2UiPyI6Zm9yKDtxdC5jaGFyQXQoKytmbik9PT1MbjspO2JyZWFrO2Nhc2UiKiI6KytmbiwoIiAiPT1xdC5jaGFyQXQoZm4pfHwiKiI9PXF0LmNo''@;'; put 'put ''YXJBdChmbikpJiYrK2ZuO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjorK2ZuO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmZvcig7Zm48cXQubGVuZ3RoJiYiMDEyMzQ1Njc4OSIuaW5kZXhPZihxdC5j''@;'; put 'put ''aGFyQXQoKytmbikpPi0xOyk7YnJlYWs7ZGVmYXVsdDorK2ZufXJldHVybiExfWZ1bmN0aW9uIE1uKHF0LGZuLExuLFhyKXtmb3IodmFyIG9pLFZpLFFyLHFuPVtdLG5pPSIiLGFyPTAscmk9IiIsYm89InQiLFBzPSJIIjthcjxxdC5sZW5ndGg7KXN3aXRjaChyaT1xdC5jaGFyQXQoYXIpKXtj''@;'; put 'put ''YXNlIkciOmlmKCFXZShxdCxhcikpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrcmkrIiBpbiAiK3F0KTtxbltxbi5sZW5ndGhdPXt0OiJHIix2OiJHZW5lcmFsIn0sYXIrPTc7YnJlYWs7Y2FzZSciJzpmb3Iobmk9IiI7MzQhPT0oUXI9cXQuY2hhckNvZGVBdCgr''@;'; put 'put ''K2FyKSkmJmFyPHF0Lmxlbmd0aDspbmkrPVN0cmluZy5mcm9tQ2hhckNvZGUoUXIpO3FuW3FuLmxlbmd0aF09e3Q6InQiLHY6bml9LCsrYXI7YnJlYWs7Y2FzZSJcXCI6dmFyIHdzPXF0LmNoYXJBdCgrK2FyKTtxbltxbi5sZW5ndGhdPXt0OiIoIj09PXdzfHwiKSI9PT13cz93czoidCIsdjp3''@;'; put 'put ''c30sKythcjticmVhaztjYXNlIl8iOnFuW3FuLmxlbmd0aF09e3Q6InQiLHY6IiAifSxhcis9MjticmVhaztjYXNlIkAiOnFuW3FuLmxlbmd0aF09e3Q6IlQiLHY6Zm59LCsrYXI7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKCIxIj09PXF0LmNoYXJBdChhcisxKXx8IjIiPT09cXQuY2hhckF0''@;'; put 'put ''KGFyKzEpKXtpZihudWxsPT1vaSYmbnVsbD09KG9pPWduKGZuLExuLCIyIj09PXF0LmNoYXJBdChhcisxKSkpKXJldHVybiIiO3FuW3FuLmxlbmd0aF09e3Q6IlgiLHY6cXQuc3Vic3RyKGFyLDIpfSxibz1yaSxhcis9MjticmVha31jYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNh''@;'; put 'put ''c2UiUyI6Y2FzZSJFIjpyaT1yaS50b0xvd2VyQ2FzZSgpO2Nhc2UibSI6Y2FzZSJkIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJzIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJcdTBlMjciOmNhc2UiXHUwZTE0IjpjYXNlIlx1MGUxYiI6Y2FzZSJcdTBlMGEiOmNhc2UiXHUwZTE5IjpjYXNlIlx1MGUx''@;'; put 'put ''NyI6aWYoZm48MHx8bnVsbD09b2kmJm51bGw9PShvaT1nbihmbixMbikpKXJldHVybiIiO2ZvcihuaT1yaTsrK2FyPHF0Lmxlbmd0aCYmcXQuY2hhckF0KGFyKS50b0xvd2VyQ2FzZSgpPT09cmk7KW5pKz1yaTsibSI9PT1yaSYmImgiPT09Ym8udG9Mb3dlckNhc2UoKSYmKHJpPSJNIiksImgi''@;'; put 'put ''PT09cmkmJihyaT1QcykscW5bcW4ubGVuZ3RoXT17dDpyaSx2Om5pfSxibz1yaTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y2FzZSJcdTRlMGEiOnZhciBMYz17dDpyaSx2OnJpfTtpZihudWxsPT1vaSYmKG9pPWduKGZuLExuKSksIkEvUCI9PT1xdC5zdWJzdHIoYXIsMykudG9VcHBlckNhc2Uo''@;'; put 'put ''KT8obnVsbCE9b2kmJihMYy52PW9pLkg+PTEyPyJQIjoiQSIpLExjLnQ9IlQiLFBzPSJoIixhcis9Myk6IkFNL1BNIj09PXF0LnN1YnN0cihhciw1KS50b1VwcGVyQ2FzZSgpPyhudWxsIT1vaSYmKExjLnY9b2kuSD49MTI/IlBNIjoiQU0iKSxMYy50PSJUIixhcis9NSxQcz0iaCIpOiJcdTRl''@;'; put 'put ''MGFcdTUzNDgvXHU0ZTBiXHU1MzQ4Ij09PXF0LnN1YnN0cihhciw1KS50b1VwcGVyQ2FzZSgpPyhudWxsIT1vaSYmKExjLnY9b2kuSD49MTI/Ilx1NGUwYlx1NTM0OCI6Ilx1NGUwYVx1NTM0OCIpLExjLnQ9IlQiLGFyKz01LFBzPSJoIik6KExjLnQ9InQiLCsrYXIpLG51bGw9PW9pJiYiVCI9''@;'; put 'put ''PT1MYy50KXJldHVybiIiO3FuW3FuLmxlbmd0aF09TGMsYm89cmk7YnJlYWs7Y2FzZSJbIjpmb3Iobmk9cmk7Il0iIT09cXQuY2hhckF0KGFyKyspJiZhcjxxdC5sZW5ndGg7KW5pKz1xdC5jaGFyQXQoYXIpO2lmKCJdIiE9PW5pLnNsaWNlKC0xKSl0aHJvdyd1bnRlcm1pbmF0ZWQgIlsiIGJs''@;'; put 'put ''b2NrOiB8JytuaSsifCI7aWYobmkubWF0Y2goYWkpKXtpZihudWxsPT1vaSYmbnVsbD09KG9pPWduKGZuLExuKSkpcmV0dXJuIiI7cW5bcW4ubGVuZ3RoXT17dDoiWiIsdjpuaS50b0xvd2VyQ2FzZSgpfSxibz1uaS5jaGFyQXQoMSl9ZWxzZSBuaS5pbmRleE9mKCIkIik+LTEmJihuaT0obmku''@;'; put 'put ''bWF0Y2goL1wkKFteLVxbXF1dKikvKXx8W10pWzFdfHwiJCIsS3MocXQpfHwocW5bcW4ubGVuZ3RoXT17dDoidCIsdjpuaX0pKTticmVhaztjYXNlIi4iOmlmKG51bGwhPW9pKXtmb3Iobmk9cmk7KythcjxxdC5sZW5ndGgmJiIwIj09PShyaT1xdC5jaGFyQXQoYXIpKTspbmkrPXJpO3FuW3Fu''@;'; put 'put ''Lmxlbmd0aF09e3Q6InMiLHY6bml9O2JyZWFrfWNhc2UiMCI6Y2FzZSIjIjpmb3Iobmk9cmk7KythcjxxdC5sZW5ndGgmJiIwIz8uLEUrLSUiLmluZGV4T2Yocmk9cXQuY2hhckF0KGFyKSk+LTE7KW5pKz1yaTtxbltxbi5sZW5ndGhdPXt0OiJuIix2Om5pfTticmVhaztjYXNlIj8iOmZvcihu''@;'; put 'put ''aT1yaTtxdC5jaGFyQXQoKythcik9PT1yaTspbmkrPXJpO3FuW3FuLmxlbmd0aF09e3Q6cmksdjpuaX0sYm89cmk7YnJlYWs7Y2FzZSIqIjorK2FyLCgiICI9PXF0LmNoYXJBdChhcil8fCIqIj09cXQuY2hhckF0KGFyKSkmJisrYXI7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOnFuW3FuLmxlbmd0''@;'; put 'put ''aF09e3Q6MT09PVhyPyJ0IjpyaSx2OnJpfSwrK2FyO2JyZWFrO2Nhc2UiMSI6Y2FzZSIyIjpjYXNlIjMiOmNhc2UiNCI6Y2FzZSI1IjpjYXNlIjYiOmNhc2UiNyI6Y2FzZSI4IjpjYXNlIjkiOmZvcihuaT1yaTthcjxxdC5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKHF0LmNoYXJBdCgr''@;'; put 'put ''K2FyKSk+LTE7KW5pKz1xdC5jaGFyQXQoYXIpO3FuW3FuLmxlbmd0aF09e3Q6IkQiLHY6bml9O2JyZWFrO2Nhc2UiICI6cW5bcW4ubGVuZ3RoXT17dDpyaSx2OnJpfSwrK2FyO2JyZWFrO2Nhc2UiJCI6cW5bcW4ubGVuZ3RoXT17dDoidCIsdjpLcn0sKythcjticmVhaztjYXNlIi8iOnFuW3Fu''@;'; put 'put ''Lmxlbmd0aF09cW4ubGVuZ3RoPjAmJktzKHFuW3FuLmxlbmd0aC0xXS52KT97dDoidCIsdjpBbn06e3Q6InQiLHY6Ii8ifSwrK2FyO2JyZWFrO2RlZmF1bHQ6aWYoLTE9PT0iLCQtKy8oKTohXiYnfnt9PD49XHUyMGFjYWNmaWprbG9wcXJ0dXZ3eHpQIi5pbmRleE9mKHJpKSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIityaSsiIGluICIrcXQpO3FuW3FuLmxlbmd0aF09e3Q6InQiLHY6cml9LCsrYXJ9dmFyIEkxLEZhPTAsUDI9MDtmb3IoYXI9cW4ubGVuZ3RoLTEsYm89InQiO2FyPj0wOy0tYXIpc3dpdGNoKHFuW2FyXS50KXtjYXNlImgiOmNhc2UiSCI6''@;'; put 'put ''cW5bYXJdLnQ9UHMsYm89ImgiLEZhPDEmJihGYT0xKTticmVhaztjYXNlInMiOihJMT1xblthcl0udi5tYXRjaCgvXC4wKyQvKSkmJihQMj1NYXRoLm1heChQMixJMVswXS5sZW5ndGgtMSkpLEZhPDMmJihGYT0zKTtjYXNlImQiOmNhc2UieSI6Y2FzZSJNIjpjYXNlImUiOmJvPXFuW2FyXS50''@;'; put 'put ''O2JyZWFrO2Nhc2UibSI6InMiPT09Ym8mJihxblthcl0udD0iTSIsRmE8MiYmKEZhPTIpKTticmVhaztjYXNlIlgiOmJyZWFrO2Nhc2UiWiI6RmE8MSYmcW5bYXJdLnYubWF0Y2goL1tIaF0vKSYmKEZhPTEpLEZhPDImJnFuW2FyXS52Lm1hdGNoKC9bTW1dLykmJihGYT0yKSxGYTwzJiZxblth''@;'; put 'put ''cl0udi5tYXRjaCgvW1NzXS8pJiYoRmE9Myl9c3dpdGNoKEZhKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOm9pLnU+PS41JiYob2kudT0wLCsrb2kuUyksb2kuUz49NjAmJihvaS5TPTAsKytvaS5NKSxvaS5NPj02MCYmKG9pLk09MCwrK29pLkgpO2JyZWFrO2Nhc2UgMjpvaS51Pj0uNSYmKG9pLnU9''@;'; put 'put ''MCwrK29pLlMpLG9pLlM+PTYwJiYob2kuUz0wLCsrb2kuTSl9dmFyIG1uLG9uPSIiO2Zvcihhcj0wO2FyPHFuLmxlbmd0aDsrK2FyKXN3aXRjaChxblthcl0udCl7Y2FzZSJ0IjpjYXNlIlQiOmNhc2UiICI6Y2FzZSJEIjpicmVhaztjYXNlIlgiOnFuW2FyXS52PSIiLHFuW2FyXS50PSI7Ijti''@;'; put 'put ''cmVhaztjYXNlImQiOmNhc2UibSI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UiSCI6Y2FzZSJNIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJiIjpjYXNlIloiOmNhc2UiXHUwZTI3IjpjYXNlIlx1MGUxNCI6Y2FzZSJcdTBlMWIiOmNhc2UiXHUwZTBhIjpjYXNlIlx1MGUxOSI6Y2FzZSJcdTBlMTciOnFu''@;'; put 'put ''W2FyXS52PXNzKHFuW2FyXS50LmNoYXJDb2RlQXQoMCkscW5bYXJdLnYsb2ksUDIpLHFuW2FyXS50PSJ0IjticmVhaztjYXNlIm4iOmNhc2UiPyI6Zm9yKG1uPWFyKzE7bnVsbCE9cW5bbW5dJiYoIj8iPT09KHJpPXFuW21uXS50KXx8IkQiPT09cml8fCgiICI9PT1yaXx8InQiPT09cmkpJiZu''@;'; put 'put ''dWxsIT1xblttbisxXSYmKCI/Ij09PXFuW21uKzFdLnR8fCJ0Ij09PXFuW21uKzFdLnQmJiIvIj09PXFuW21uKzFdLnYpfHwiKCI9PT1xblthcl0udCYmKCIgIj09PXJpfHwibiI9PT1yaXx8IikiPT09cmkpfHwidCI9PT1yaSYmKCIvIj09PXFuW21uXS52fHwiICI9PT1xblttbl0udiYmbnVs''@;'; put 'put ''bCE9cW5bbW4rMV0mJiI/Ij09cW5bbW4rMV0udCkpOylxblthcl0udis9cW5bbW5dLnYscW5bbW5dPXt2OiIiLHQ6IjsifSwrK21uO29uKz1xblthcl0udixhcj1tbi0xO2JyZWFrO2Nhc2UiRyI6cW5bYXJdLnQ9InQiLHFuW2FyXS52PVVpKGZuLExuKX12YXIgVnQsR3Qsc249IiI7aWYob24u''@;'; put 'put ''bGVuZ3RoPjApezQwPT1vbi5jaGFyQ29kZUF0KDApPyhWdD1mbjwwJiY0NT09PW9uLmNoYXJDb2RlQXQoMCk/LWZuOmZuLEd0PU5vKCJuIixvbixWdCkpOihHdD1ObygibiIsb24sVnQ9Zm48MCYmWHI+MT8tZm46Zm4pLFZ0PDAmJnFuWzBdJiYidCI9PXFuWzBdLnQmJihHdD1HdC5zdWJzdHIo''@;'; put 'put ''MSkscW5bMF0udj0iLSIrcW5bMF0udikpLG1uPShHdD1HdC5yZXBsYWNlKC9bLFwuXS9nLGZ1bmN0aW9uKE1yKXtyZXR1cm4iLiI9PU1yP2ZyOnRpfSkpLmxlbmd0aC0xO3ZhciB1bj1xbi5sZW5ndGg7Zm9yKGFyPTA7YXI8cW4ubGVuZ3RoOysrYXIpaWYobnVsbCE9cW5bYXJdJiYidCIhPXFu''@;'; put 'put ''W2FyXS50JiZxblthcl0udi5pbmRleE9mKCIuIik+LTEpe3VuPWFyO2JyZWFrfXZhciBSbj1xbi5sZW5ndGg7aWYodW49PT1xbi5sZW5ndGgmJi0xPT09R3QuaW5kZXhPZigiRSIpKXtmb3IoYXI9cW4ubGVuZ3RoLTE7YXI+PTA7LS1hciludWxsPT1xblthcl18fC0xPT09Im4/Ii5pbmRleE9m''@;'; put 'put ''KHFuW2FyXS50KXx8KG1uPj1xblthcl0udi5sZW5ndGgtMT9xblthcl0udj1HdC5zdWJzdHIoMSsobW4tPXFuW2FyXS52Lmxlbmd0aCkscW5bYXJdLnYubGVuZ3RoKTptbjwwP3FuW2FyXS52PSIiOihxblthcl0udj1HdC5zdWJzdHIoMCxtbisxKSxtbj0tMSkscW5bYXJdLnQ9InQiLFJuPWFy''@;'; put 'put ''KTttbj49MCYmUm48cW4ubGVuZ3RoJiYocW5bUm5dLnY9R3Quc3Vic3RyKDAsbW4rMSkrcW5bUm5dLnYpfWVsc2UgaWYodW4hPT1xbi5sZW5ndGgmJi0xPT09R3QuaW5kZXhPZigiRSIpKXtmb3IobW49R3QuaW5kZXhPZihmciktMSxhcj11bjthcj49MDstLWFyKWlmKG51bGwhPXFuW2FyXSYm''@;'; put 'put ''LTEhPT0ibj8iLmluZGV4T2YocW5bYXJdLnQpKXtmb3IoVmk9cW5bYXJdLnYuaW5kZXhPZigiLiIpPi0xJiZhcj09PXVuP3FuW2FyXS52LmluZGV4T2YoIi4iKS0xOnFuW2FyXS52Lmxlbmd0aC0xLHNuPXFuW2FyXS52LnN1YnN0cihWaSsxKTtWaT49MDstLVZpKW1uPj0wJiYoIjAiPT09cW5b''@;'; put 'put ''YXJdLnYuY2hhckF0KFZpKXx8IiMiPT09cW5bYXJdLnYuY2hhckF0KFZpKSkmJihzbj1HdC5jaGFyQXQobW4tLSkrc24pO3FuW2FyXS52PXNuLHFuW2FyXS50PSJ0IixSbj1hcn1mb3IobW4+PTAmJlJuPHFuLmxlbmd0aCYmKHFuW1JuXS52PUd0LnN1YnN0cigwLG1uKzEpK3FuW1JuXS52KSxt''@;'; put 'put ''bj1HdC5pbmRleE9mKGZyKSsxLGFyPXVuO2FyPHFuLmxlbmd0aDsrK2FyKWlmKG51bGwhPXFuW2FyXSYmKC0xIT09Im4/KCIuaW5kZXhPZihxblthcl0udCl8fGFyPT09dW4pKXtmb3IoVmk9cW5bYXJdLnYuaW5kZXhPZihmcik+LTEmJmFyPT09dW4/cW5bYXJdLnYuaW5kZXhPZihmcikrMTow''@;'; put 'put ''LHNuPXFuW2FyXS52LnN1YnN0cigwLFZpKTtWaTxxblthcl0udi5sZW5ndGg7KytWaSltbjxHdC5sZW5ndGgmJihzbis9R3QuY2hhckF0KG1uKyspKTtxblthcl0udj1zbixxblthcl0udD0idCIsUm49YXJ9fX1mb3IoYXI9MDthcjxxbi5sZW5ndGg7KythciludWxsIT1xblthcl0mJiJuPyIu''@;'; put 'put ''aW5kZXhPZihxblthcl0udCk+LTEmJihxblthcl0udj1Obyhxblthcl0udCxxblthcl0udixWdD1Ycj4xJiZmbjwwJiZhcj4wJiYiLSI9PT1xblthci0xXS52Py1mbjpmbikucmVwbGFjZSgvXC4vZyxmcikucmVwbGFjZSgvLC8sdGkpLHFuW2FyXS50PSJ0Iik7dmFyIHRyPSIiO2Zvcihhcj0w''@;'; put 'put ''O2FyIT09cW4ubGVuZ3RoOysrYXIpbnVsbCE9cW5bYXJdJiYodHIrPXFuW2FyXS52KTtyZXR1cm4gdHJ9UC5pc19kYXRlPUtzLFAuX2V2YWw9TW47dmFyIHVyPS9cW1s9PD5dLyxsbD0vXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XGQrKD86XC5cZCopPylcXS87ZnVuY3Rpb24gZWwocXQsZm4pe2lm''@;'; put 'put ''KG51bGw9PWZuKXJldHVybiExO3ZhciBMbj1wYXJzZUZsb2F0KGZuWzJdKTtzd2l0Y2goZm5bMV0pe2Nhc2UiPSI6aWYocXQ9PUxuKXJldHVybiEwO2JyZWFrO2Nhc2UiPiI6aWYocXQ+TG4pcmV0dXJuITA7YnJlYWs7Y2FzZSI8IjppZihxdDxMbilyZXR1cm4hMDticmVhaztjYXNlIjw+Ijpp''@;'; put 'put ''ZihxdCE9TG4pcmV0dXJuITA7YnJlYWs7Y2FzZSI+PSI6aWYocXQ+PUxuKXJldHVybiEwO2JyZWFrO2Nhc2UiPD0iOmlmKHF0PD1MbilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBSYyhxdCxmbixMbil7bnVsbD09TG4mJihMbj17fSk7dmFyIFhyPSIiO3N3aXRjaCh0eXBlb2YgcXQpe2Nh''@;'; put 'put ''c2Uic3RyaW5nIjpYcj0ibS9kL3l5Ij09cXQmJkxuLmRhdGVORj9Mbi5kYXRlTkY6cXQ7YnJlYWs7Y2FzZSJudW1iZXIiOm51bGw9PShYcj0xND09cXQmJkxuLmRhdGVORj9Mbi5kYXRlTkY6KG51bGwhPUxuLnRhYmxlP0xuLnRhYmxlOnZ0KVtxdF0pJiYoWHI9TG4udGFibGUmJkxuLnRhYmxl''@;'; put 'put ''W1B0W3F0XV18fHZ0W1B0W3F0XV0pLG51bGw9PVhyJiYoWHI9RHRbcXRdfHwiR2VuZXJhbCIpfWlmKFdlKFhyLDApKXJldHVybiBVaShmbixMbik7Zm4gaW5zdGFuY2VvZiBEYXRlJiYoZm49Qm4oZm4sTG4uZGF0ZTE5MDQpKTt2YXIgcW49ZnVuY3Rpb24gdGwocXQsZm4pe3ZhciBMbj1Fbyhx''@;'; put 'put ''dCksWHI9TG4ubGVuZ3RoLHFuPUxuW1hyLTFdLmluZGV4T2YoIkAiKTtpZihYcjw0JiZxbj4tMSYmLS1YcixMbi5sZW5ndGg+NCl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmaW5kIHJpZ2h0IGZvcm1hdCBmb3IgfCIrTG4uam9pbigifCIpKyJ8Iik7aWYoIm51bWJlciIhPXR5cGVvZiBmbily''@;'; put 'put ''ZXR1cm5bNCw0PT09TG4ubGVuZ3RofHxxbj4tMT9MbltMbi5sZW5ndGgtMV06IkAiXTtzd2l0Y2goTG4ubGVuZ3RoKXtjYXNlIDE6TG49cW4+LTE/WyJHZW5lcmFsIiwiR2VuZXJhbCIsIkdlbmVyYWwiLExuWzBdXTpbTG5bMF0sTG5bMF0sTG5bMF0sIkAiXTticmVhaztjYXNlIDI6TG49cW4+''@;'; put 'put ''LTE/W0xuWzBdLExuWzBdLExuWzBdLExuWzFdXTpbTG5bMF0sTG5bMV0sTG5bMF0sIkAiXTticmVhaztjYXNlIDM6TG49cW4+LTE/W0xuWzBdLExuWzFdLExuWzBdLExuWzJdXTpbTG5bMF0sTG5bMV0sTG5bMl0sIkAiXX12YXIgbmk9Zm4+MD9MblswXTpmbjwwP0xuWzFdOkxuWzJdO2lmKC0x''@;'; put 'put ''PT09TG5bMF0uaW5kZXhPZigiWyIpJiYtMT09PUxuWzFdLmluZGV4T2YoIlsiKSlyZXR1cm5bWHIsbmldO2lmKG51bGwhPUxuWzBdLm1hdGNoKHVyKXx8bnVsbCE9TG5bMV0ubWF0Y2godXIpKXt2YXIgYXI9TG5bMF0ubWF0Y2gobGwpLHJpPUxuWzFdLm1hdGNoKGxsKTtyZXR1cm4gZWwoZm4s''@;'; put 'put ''YXIpP1tYcixMblswXV06ZWwoZm4scmkpP1tYcixMblsxXV06W1hyLExuW251bGwhPWFyJiZudWxsIT1yaT8yOjFdXX1yZXR1cm5bWHIsbmldfShYcixmbik7aWYoV2UocW5bMV0pKXJldHVybiBVaShmbixMbik7aWYoITA9PT1mbilmbj0iVFJVRSI7ZWxzZSBpZighMT09PWZuKWZuPSJGQUxT''@;'; put 'put ''RSI7ZWxzZSBpZigiIj09PWZufHxudWxsPT1mbilyZXR1cm4iIjtyZXR1cm4gTW4ocW5bMV0sZm4sTG4scW5bMF0pfWZ1bmN0aW9uIE9hKHF0LGZuKXtpZigibnVtYmVyIiE9dHlwZW9mIGZuKXtmbj0rZm58fC0xO2Zvcih2YXIgTG49MDtMbjwzOTI7KytMbilpZihudWxsIT12dFtMbl0pe2lm''@;'; put 'put ''KHZ0W0xuXT09cXQpe2ZuPUxuO2JyZWFrfX1lbHNlIGZuPDAmJihmbj1Mbik7Zm48MCYmKGZuPTM5MSl9cmV0dXJuIHZ0W2ZuXT1xdCxmbn1QLmxvYWQ9T2EsUC5fdGFibGU9dnQsUC5nZXRfdGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdnR9LFAubG9hZF90YWJsZT1mdW5jdGlvbihmbil7Zm9y''@;'; put 'put ''KHZhciBMbj0wOzM5MiE9TG47KytMbil2b2lkIDAhPT1mbltMbl0mJk9hKGZuW0xuXSxMbil9LFAuaW5pdF90YWJsZT1hdCxQLmZvcm1hdD1SYyxQLmdldGxvY2FsZT1mdW5jdGlvbiB3cigpe3JldHVybiBEbnx8ImVuLVVTIn0sUC5zZXRsb2NhbGU9ZnVuY3Rpb24gcnIocXQpe2lmKGZ1bmN0''@;'; put 'put ''aW9uIENyKHF0KXt2YXIgZm49MDtzd2l0Y2goKERufHwiIikudG9Mb3dlckNhc2UoKSl7Y2FzZSJ6aC10dyI6Y2FzZSJ6aC1jbiI6Y2FzZSJqYS1qcCI6Y2FzZSJrby1rciI6Zm9yKGZuPTI3O2ZuPD0zNjsrK2ZuKWRlbGV0ZSBxdFtmbl07Zm9yKGZuPTUwO2ZuPD01ODsrK2ZuKWRlbGV0ZSBx''@;'; put 'put ''dFtmbl07YnJlYWs7Y2FzZSJ0aC10aCI6Zm9yKGZuPTU5O2ZuPD02MjsrK2ZuKWRlbGV0ZSBxdFtmbl07Zm9yKGZuPTY3O2ZuPD04MTsrK2ZuKWRlbGV0ZSBxdFtmbl19fSh2dCksRG49cXQsRW4odnQpLHR5cGVvZiBJbnRsPCJ1Iil7dmFyIGZuPUludGwuRGF0ZVRpbWVGb3JtYXQocXQpO2lm''@;'; put 'put ''KGZuLmZvcm1hdFRvUGFydHMpe2Zvcih2YXIgTG49Zm4uZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLDAsNSwwLDAsMCkpLFhyPTA7WHI8NzsrK1hyKWx0W1hyXVsxXT1JbnRsLkRhdGVUaW1lRm9ybWF0KHF0LHt3ZWVrZGF5OiJsb25nIn0pLmZvcm1hdFRvUGFydHMobmV3IERhdGUoMjAy''@;'; put 'put ''MCwwLDUrWHIsMCwwLDApKVswXS52YWx1ZSxsdFtYcl1bMF09SW50bC5EYXRlVGltZUZvcm1hdChxdCx7d2Vla2RheToic2hvcnQifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIwLDAsNStYciwwLDAsMCkpWzBdLnZhbHVlO2Zvcih2YXIgcW49MDtxbjwxMjsrK3FuKUN0W3FuXVsyXT1J''@;'; put 'put ''bnRsLkRhdGVUaW1lRm9ybWF0KHF0LHttb250aDoibG9uZyJ9KS5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKDIwMjAscW4sMiwwLDAsMCkpWzBdLnZhbHVlLEN0W3FuXVsxXT1JbnRsLkRhdGVUaW1lRm9ybWF0KHF0LHttb250aDoic2hvcnQifSkuZm9ybWF0VG9QYXJ0cyhuZXcgRGF0ZSgyMDIw''@;'; put 'put ''LHFuLDIsMCwwLDApKVswXS52YWx1ZSxDdFtxbl1bMF09Q3RbcW5dWzFdLnNsaWNlKDAsMSk7Zm9yKHZhciBuaT0iIixhcj0wO2FyPExuLmxlbmd0aDsrK2FyKXt2YXIgcmk9TG5bYXJdLnZhbHVlO3N3aXRjaChMblthcl0udHlwZSl7Y2FzZSJ5ZWFyIjpuaSs9Mj09cmkubGVuZ3RoPyJ5eSI6''@;'; put 'put ''Inl5eXkiO2JyZWFrO2Nhc2UibW9udGgiOm5pKz0iMSI9PXJpPyJtIjoiMDEiPT1yaT8ibW0iOnJpPT1DdFswXVsxXT8ibW1tIjpyaT09Q3RbMF1bMl0/Im1tbW0iOnJpPT1DdFswXVswXT8ibW1tbW0iOiJtbSI7YnJlYWs7Y2FzZSJkYXkiOm5pKz0iNSI9PXJpPyJkIjoiMDUiPT1yaT8iZGQi''@;'; put 'put ''OnJpPT1sdFswXVswXT8iZGRkIjpyaT09bHRbMF1bMV0/ImRkZGQiOiJkZCI7YnJlYWs7Y2FzZSJsaXRlcmFsIjpuaSs9cmkucmVwbGFjZSgvLi9nLCJcXCQmIiksMT09cmkubGVuZ3RoJiYoQW49cmkpfX0ocXQubWF0Y2goL2VuL2kpJiZxdC5tYXRjaCgvdXMvaSl8fCFxdCkmJihuaT0ibS9k''@;'; put 'put ''L3l5IiksdnRbMTRdPW5pfWVsc2UiamEtanAiPT1xdC50b0xvd2VyQ2FzZSgpJiYodnRbMTRdPSJ5eXl5XFwvbVxcL2QiKTt2YXIgYm89SW50bC5OdW1iZXJGb3JtYXQocXQse30pLmZvcm1hdCgxMjM0NTY3Ljg5KTtibyYmKHRpPShiby5tYXRjaCgvMSguKikyLyl8fFtdKVsxXSxmcj0oYm8u''@;'; put 'put ''bWF0Y2goLzcoLiopOC8pfHxbXSlbMV0pfVFuW3F0LnRvTG93ZXJDYXNlKCldfHwoUW5bcXQudG9Mb3dlckNhc2UoKV09eyIuIjpmciwiLCI6dGl9KSx6bj1ydChlcj1RbltxdC50b0xvd2VyQ2FzZSgpXXx8UW5bImVuLXVzIl0pfSxQLm5vcm1hbGl6ZT1mdW5jdGlvbiB5cyhxdCl7Zm9yKHZh''@;'; put 'put ''ciBmbj0wLExuPTAsWHI9IiIscW49IiIsbmk9IiIsYXI9ZXIueXx8InkiLHJpPWFyLnRvVXBwZXJDYXNlKCksYm89ZXIuZHx8ImQiLG9pPWJvLnRvVXBwZXJDYXNlKCksVmk9ZXJbIi4iXSxRcj1lclsiLCJdLFBzPSIwIz9FKy0lIitlclsiLCJdK1ZpO2ZuPHF0Lmxlbmd0aDspc3dpdGNoKFhy''@;'; put 'put ''PXF0LmNoYXJBdChmbikpe2Nhc2UiRyI6Zm4rKyxuaSs9WHI7YnJlYWs7Y2FzZSciJzpmb3IobmkrPVhyOzM0IT09KExuPXF0LmNoYXJDb2RlQXQoKytmbikpJiZmbjxxdC5sZW5ndGg7KW5pKz1TdHJpbmcuZnJvbUNoYXJDb2RlKExuKTtuaSs9JyInLCsrZm47YnJlYWs7Y2FzZSJcXCI6Y2Fz''@;'; put 'put ''ZSJfIjpuaSs9cXQuc2xpY2UoZm4sZm4rMiksZm4rPTI7YnJlYWs7Y2FzZSJAIjpuaSs9WHIsKytmbjticmVhaztjYXNlIkIiOmNhc2UiYiI6KytmbixuaSs9WHI7YnJlYWs7Y2FzZSBhcjpjYXNlIHJpOmNhc2UgYm86Y2FzZSBvaTpuaSs9em5bWHIudG9Mb3dlckNhc2UoKV0sKytmbjticmVh''@;'; put 'put ''aztjYXNlIk0iOmNhc2UiSCI6Y2FzZSJTIjpjYXNlIkUiOmNhc2UibSI6Y2FzZSJoIjpjYXNlInMiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlIkEiOmNhc2UiYSI6bmkrPVhyLCsrZm47YnJlYWs7Y2FzZSJbIjpmb3IocW49WHI7Il0iIT09cXQuY2hhckF0KGZuKyspJiZmbjxxdC5sZW5ndGg7KXFu''@;'; put 'put ''Kz1xdC5jaGFyQXQoZm4pO25pKz1xbjticmVhaztjYXNlIFFyOm5pKz0nIicrWHIrJyInLCsrZm47YnJlYWs7Y2FzZSBWaTppZighKGZuPHF0Lmxlbmd0aCYmKFBzLmluZGV4T2YoWHI9cXQuY2hhckF0KCsrZm4pKT4tMXx8IlxcIj09WHImJiItIj09cXQuY2hhckF0KGZuKzEpJiYiMCMiLmlu''@;'; put 'put ''ZGV4T2YocXQuY2hhckF0KGZuKzIpKT4tMSkpKXtuaSs9JyInK1ZpKyciJzticmVha31Ycj1WaSwtLWZuO2Nhc2UiMCI6Y2FzZSIjIjpmb3IobmkrPXpuW1hyLnRvTG93ZXJDYXNlKCldfHxYcjtmbjxxdC5sZW5ndGgmJihQcy5pbmRleE9mKFhyPXF0LmNoYXJBdCgrK2ZuKSk+LTF8fCJcXCI9''@;'; put 'put ''PVhyJiYiLSI9PXF0LmNoYXJBdChmbisxKSYmIjAjIi5pbmRleE9mKHF0LmNoYXJBdChmbisyKSk+LTEpOyluaSs9em5bWHIudG9Mb3dlckNhc2UoKV18fFhyO2JyZWFrO2Nhc2UiPyI6Zm9yKG5pKz1YcjtxdC5jaGFyQXQoKytmbik9PT1YcjspbmkrPVhyO2JyZWFrO2Nhc2UiKiI6bmkrPVhy''@;'; put 'put ''LCsrZm4sKCIgIj09cXQuY2hhckF0KGZuKXx8IioiPT1xdC5jaGFyQXQoZm4pKSYmKG5pKz1xdC5jaGFyQXQoZm4pLCsrZm4pO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjpuaSs9WHIsKytmbjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNl''@;'; put 'put ''IjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IobmkrPVhyO2ZuPHF0Lmxlbmd0aCYmIjAxMjM0NTY3ODkiLmluZGV4T2YocXQuY2hhckF0KCsrZm4pKT4tMTspbmkrPXF0LmNoYXJBdChmbik7YnJlYWs7ZGVmYXVsdDpuaSs9WHIsKytmbn1yZXR1cm4gbml9LFAuZ2V0Y3VycmVuY3k9ZnVuY3Rpb24g''@;'; put 'put ''RWkoKXtyZXR1cm4gaWl8fCJVU0QifSxQLnNldGN1cnJlbmN5PWZ1bmN0aW9uIE9pKHF0KXtpaT1xdCxLcj10eXBlb2YgSW50bDwidSI/SW50bC5OdW1iZXJGb3JtYXQoRG4se3N0eWxlOiJjdXJyZW5jeSIsY3VycmVuY3lEaXNwbGF5OiJzeW1ib2wiLGN1cnJlbmN5OnF0fSkuZm9ybWF0KDAp''@;'; put 'put ''LnJlcGxhY2UoL1swXC5cLFxzXS9nLCIiKToiJCJ9fTtLKHcpO3ZhciB4ZSx0ZT17IkdlbmVyYWwgTnVtYmVyIjoiR2VuZXJhbCIsIkdlbmVyYWwgRGF0ZSI6dy5fdGFibGVbMjJdLCJMb25nIERhdGUiOiJkZGRkLCBtbW1tIGRkLCB5eXl5IiwiTWVkaXVtIERhdGUiOncuX3RhYmxlWzE1XSwi''@;'; put 'put ''U2hvcnQgRGF0ZSI6dy5fdGFibGVbMTRdLCJMb25nIFRpbWUiOncuX3RhYmxlWzE5XSwiTWVkaXVtIFRpbWUiOncuX3RhYmxlWzE4XSwiU2hvcnQgVGltZSI6dy5fdGFibGVbMjBdLEN1cnJlbmN5OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLEZpeGVkOncuX3RhYmxl''@;'; put 'put ''WzJdLFN0YW5kYXJkOncuX3RhYmxlWzRdLFBlcmNlbnQ6dy5fdGFibGVbMTBdLFNjaWVudGlmaWM6dy5fdGFibGVbMTFdLCJZZXMvTm8iOiciWWVzIjsiWWVzIjsiTm8iO0AnLCJUcnVlL0ZhbHNlIjonIlRydWUiOyJUcnVlIjsiRmFsc2UiO0AnLCJPbi9PZmYiOiciWWVzIjsiWWVzIjsiTm8i''@;'; put 'put ''O0AnfSxjZT17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw3OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw4OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDIzOiJHZW5lcmFsIiwy''@;'; put 'put ''NDoiR2VuZXJhbCIsMjU6IkdlbmVyYWwiLDI2OiJHZW5lcmFsIiwyNzoibS9kL3l5IiwyODoibS9kL3l5IiwyOToibS9kL3l5IiwzMDoibS9kL3l5IiwzMToibS9kL3l5IiwzMjoiaDptbTpzcyIsMzM6Img6bW06c3MiLDM0OiJoOm1tOnNzIiwzNToiaDptbTpzcyIsMzY6Im0vZC95eSIsNDE6''@;'; put 'put ''J18oKiAjLCMjMF8pO18oKiAoIywjIzApO18oKiAiLSJfKTtfKEBfKScsNDI6J18oIiQiKiAjLCMjMF8pO18oIiQiKiAoIywjIzApO18oIiQiKiAiLSJfKTtfKEBfKScsNDM6J18oKiAjLCMjMC4wMF8pO18oKiAoIywjIzAuMDApO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMw''@;'; put 'put ''LjAwXyk7XygiJCIqICgjLCMjMC4wMCk7XygiJCIqICItIj8/Xyk7XyhAXyknLDUwOiJtL2QveXkiLDUxOiJtL2QveXkiLDUyOiJtL2QveXkiLDUzOiJtL2QveXkiLDU0OiJtL2QveXkiLDU1OiJtL2QveXkiLDU2OiJtL2QveXkiLDU3OiJtL2QveXkiLDU4OiJtL2QveXkiLDU5OiIwIiw2MDoi''@;'; put 'put ''MC4wMCIsNjE6IiMsIyMwIiw2MjoiIywjIzAuMDAiLDYzOiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2NDonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw2NTonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIj''@;'; put 'put ''LCMjMC4wMFxcKScsNjc6IjAlIiw2ODoiMC4wMCUiLDY5OiIjID8vPyIsNzA6IiMgPz8vPz8iLDcxOiJtL2QveXkiLDcyOiJtL2QveXkiLDczOiJkLW1tbS15eSIsNzQ6ImQtbW1tIiw3NToibW1tLXl5Iiw3NjoiaDptbSIsNzc6Img6bW06c3MiLDc4OiJtL2QveXkgaDptbSIsNzk6Im1tOnNz''@;'; put 'put ''Iiw4MDoiW2hdOm1tOnNzIiw4MToibW1zcy4wIn0saGU9L1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZzshZnVuY3Rpb24oeSl7eS52ZXJzaW9uPSIxLjIuMCI7dmFyIEw9ZnVuY3Rpb24gUCgpe2Zvcih2YXIgdmU9MCx5ZT1uZXcgQXJyYXkoMjU2KSxWZT0wOzI1NiE9VmU7KytW''@;'; put 'put ''ZSl5ZVtWZV09dmU9MSYodmU9MSYodmU9MSYodmU9MSYodmU9MSYodmU9MSYodmU9MSYodmU9MSYodmU9VmUpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+MSk/LTMwNjY3NDkxMl52ZT4+PjE6dmU+Pj4xKT8tMzA2Njc0OTEyXnZlPj4+MTp2ZT4+PjEpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+''@;'; put 'put ''MSk/LTMwNjY3NDkxMl52ZT4+PjE6dmU+Pj4xKT8tMzA2Njc0OTEyXnZlPj4+MTp2ZT4+PjEpPy0zMDY2NzQ5MTJedmU+Pj4xOnZlPj4+MSk/LTMwNjY3NDkxMl52ZT4+PjE6dmU+Pj4xO3JldHVybiB0eXBlb2YgSW50MzJBcnJheTwidSI/bmV3IEludDMyQXJyYXkoeWUpOnllfSgpO3kudGFi''@;'; put 'put ''bGU9TCx5LmJzdHI9ZnVuY3Rpb24gWCh2ZSx5ZSl7Zm9yKHZhciBWZT1+eWUsemU9dmUubGVuZ3RoLTEsV2U9MDtXZTx6ZTspVmU9KFZlPVZlPj4+OF5MWzI1NSYoVmVedmUuY2hhckNvZGVBdChXZSsrKSldKT4+PjheTFsyNTUmKFZlXnZlLmNoYXJDb2RlQXQoV2UrKykpXTtyZXR1cm4gV2U9''@;'; put 'put ''PT16ZSYmKFZlPVZlPj4+OF5MWzI1NSYoVmVedmUuY2hhckNvZGVBdChXZSkpXSksflZlfSx5LmJ1Zj1mdW5jdGlvbiBuZSh2ZSx5ZSl7aWYodmUubGVuZ3RoPjFlNClyZXR1cm4gZnVuY3Rpb24gZmUodmUseWUpe2Zvcih2YXIgVmU9fnllLHplPXZlLmxlbmd0aC03LFdlPTA7V2U8emU7KVZl''@;'; put 'put ''PShWZT0oVmU9KFZlPShWZT0oVmU9KFZlPShWZT1WZT4+PjheTFsyNTUmKFZlXnZlW1dlKytdKV0pPj4+OF5MWzI1NSYoVmVedmVbV2UrK10pXSk+Pj44XkxbMjU1JihWZV52ZVtXZSsrXSldKT4+PjheTFsyNTUmKFZlXnZlW1dlKytdKV0pPj4+OF5MWzI1NSYoVmVedmVbV2UrK10pXSk+Pj44''@;'; put 'put ''XkxbMjU1JihWZV52ZVtXZSsrXSldKT4+PjheTFsyNTUmKFZlXnZlW1dlKytdKV0pPj4+OF5MWzI1NSYoVmVedmVbV2UrK10pXTtmb3IoO1dlPHplKzc7KVZlPVZlPj4+OF5MWzI1NSYoVmVedmVbV2UrK10pXTtyZXR1cm5+VmV9KHZlLHllKTtmb3IodmFyIFZlPX55ZSx6ZT12ZS5sZW5ndGgt''@;'; put 'put ''MyxXZT0wO1dlPHplOylWZT0oVmU9KFZlPShWZT1WZT4+PjheTFsyNTUmKFZlXnZlW1dlKytdKV0pPj4+OF5MWzI1NSYoVmVedmVbV2UrK10pXSk+Pj44XkxbMjU1JihWZV52ZVtXZSsrXSldKT4+PjheTFsyNTUmKFZlXnZlW1dlKytdKV07Zm9yKDtXZTx6ZSszOylWZT1WZT4+PjheTFsyNTUm''@;'; put 'put ''KFZlXnZlW1dlKytdKV07cmV0dXJuflZlfSx5LnN0cj1mdW5jdGlvbiBiZSh2ZSx5ZSl7Zm9yKHZhciBydCxsdCxWZT1+eWUsemU9MCxXZT12ZS5sZW5ndGg7emU8V2U7KShydD12ZS5jaGFyQ29kZUF0KHplKyspKTwxMjg/VmU9VmU+Pj44XkxbMjU1JihWZV5ydCldOnJ0PDIwNDg/VmU9KFZl''@;'; put 'put ''PVZlPj4+OF5MWzI1NSYoVmVeKDE5MnxydD4+NiYzMSkpXSk+Pj44XkxbMjU1JihWZV4oMTI4fDYzJnJ0KSldOnJ0Pj01NTI5NiYmcnQ8NTczNDQ/KHJ0PTY0KygxMDIzJnJ0KSxsdD0xMDIzJnZlLmNoYXJDb2RlQXQoemUrKyksVmU9KFZlPShWZT0oVmU9VmU+Pj44XkxbMjU1JihWZV4oMjQw''@;'; put 'put ''fHJ0Pj44JjcpKV0pPj4+OF5MWzI1NSYoVmVeKDEyOHxydD4+MiY2MykpXSk+Pj44XkxbMjU1JihWZV4oMTI4fGx0Pj42JjE1fCgzJnJ0KTw8NCkpXSk+Pj44XkxbMjU1JihWZV4oMTI4fDYzJmx0KSldKTpWZT0oVmU9KFZlPVZlPj4+OF5MWzI1NSYoVmVeKDIyNHxydD4+MTImMTUpKV0pPj4+''@;'; put 'put ''OF5MWzI1NSYoVmVeKDEyOHxydD4+NiY2MykpXSk+Pj44XkxbMjU1JihWZV4oMTI4fDYzJnJ0KSldO3JldHVybn5WZX19KHhlPXt9KTt2YXIgQmUsRGU9ZnVuY3Rpb24oKXt2YXIgeWUsUD17fTtmdW5jdGlvbiBYKG9uKXtpZigiLyI9PW9uLmNoYXJBdChvbi5sZW5ndGgtMSkpcmV0dXJuLTE9''@;'; put 'put ''PT1vbi5zbGljZSgwLC0xKS5pbmRleE9mKCIvIik/b246WChvbi5zbGljZSgwLC0xKSk7dmFyIG1uPW9uLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1tbj9vbjpvbi5zbGljZSgwLG1uKzEpfWZ1bmN0aW9uIG5lKG9uKXtpZigiLyI9PW9uLmNoYXJBdChvbi5sZW5ndGgtMSkpcmV0dXJu''@;'; put 'put ''IG5lKG9uLnNsaWNlKDAsLTEpKTt2YXIgbW49b24ubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PW1uP29uOm9uLnNsaWNlKG1uKzEpfWZ1bmN0aW9uIGZlKG9uLG1uKXsic3RyaW5nIj09dHlwZW9mIG1uJiYobW49bmV3IERhdGUobW4pKTt2YXIgc249bW4uZ2V0SG91cnMoKTtzbj0oc249''@;'; put 'put ''c248PDZ8bW4uZ2V0TWludXRlcygpKTw8NXxtbi5nZXRTZWNvbmRzKCk+Pj4xLG9uLndyaXRlX3NoaWZ0KDIsc24pO3ZhciBWdD1tbi5nZXRGdWxsWWVhcigpLTE5ODA7VnQ9KFZ0PVZ0PDw0fG1uLmdldE1vbnRoKCkrMSk8PDV8bW4uZ2V0RGF0ZSgpLG9uLndyaXRlX3NoaWZ0KDIsVnQpfWZ1''@;'; put 'put ''bmN0aW9uIHZlKG9uKXtncyhvbiwwKTtmb3IodmFyIG1uPXt9LHNuPTA7b24ubDw9b24ubGVuZ3RoLTQ7KXt2YXIgVnQ9b24ucmVhZF9zaGlmdCgyKSxHdD1vbi5yZWFkX3NoaWZ0KDIpLHVuPW9uLmwrR3QsUm49e307MjE1ODk9PT1WdCYmKDEmKHNuPW9uLnJlYWRfc2hpZnQoMSkpJiYoUm4u''@;'; put 'put ''bXRpbWU9b24ucmVhZF9zaGlmdCg0KSksR3Q+NSYmKDImc24mJihSbi5hdGltZT1vbi5yZWFkX3NoaWZ0KDQpKSw0JnNuJiYoUm4uY3RpbWU9b24ucmVhZF9zaGlmdCg0KSkpLFJuLm10aW1lJiYoUm4ubXQ9bmV3IERhdGUoMWUzKlJuLm10aW1lKSkpLG9uLmw9dW4sbW5bVnRdPVJufXJldHVy''@;'; put 'put ''biBtbn1mdW5jdGlvbiBWZSgpe3JldHVybiB5ZXx8KHllPVIoODMzMzcpKX1mdW5jdGlvbiB6ZShvbixtbil7aWYoODA9PW9uWzBdJiY3NT09b25bMV0pcmV0dXJuIFFyKG9uLG1uKTtpZihvbi5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK29uLmxlbmd0aCsi''@;'; put 'put ''IDwgNTEyIik7dmFyIHNuLEd0LHVuLFJuLHRyLE1yLFZ0PTUxMixGcj1bXSxMcj1vbi5zbGljZSgwLDUxMik7Z3MoTHIsMCk7dmFyIFNpPWZ1bmN0aW9uIFdlKG9uKXtpZig4MD09b25bb24ubF0mJjc1PT1vbltvbi5sKzFdKXJldHVyblswLDBdO29uLmNoayhLciwiSGVhZGVyIFNpZ25hdHVy''@;'; put 'put ''ZTogIiksb24ubCs9MTY7dmFyIG1uPW9uLnJlYWRfc2hpZnQoMiwidSIpO3JldHVybltvbi5yZWFkX3NoaWZ0KDIsInUiKSxtbl19KExyKTtzd2l0Y2goc249U2lbMF0pe2Nhc2UgMzpWdD01MTI7YnJlYWs7Y2FzZSA0OlZ0PTQwOTY7YnJlYWs7Y2FzZSAwOmlmKDA9PVNpWzFdKXJldHVybiBR''@;'; put 'put ''cihvbixtbik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIk1ham9yIFZlcnNpb246IEV4cGVjdGVkIDMgb3IgNCBzYXcgIitzbil9NTEyIT09VnQmJmdzKExyPW9uLnNsaWNlKDAsVnQpLDI4KTt2YXIgZ2k9b24uc2xpY2UoMCxWdCk7IWZ1bmN0aW9uIHJ0KG9uLG1uKXt2YXIgc247c3dpdGNo''@;'; put 'put ''KG9uLmwrPTIsc249b24ucmVhZF9zaGlmdCgyKSl7Y2FzZSA5OmlmKDMhPW1uKXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IHNhdyAiK3NuKTticmVhaztjYXNlIDEyOmlmKDQhPW1uKXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBz''@;'; put 'put ''YXcgIitzbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlNlY3RvciBTaGlmdDogRXhwZWN0ZWQgOSBvciAxMiBzYXcgIitzbil9b24uY2hrKCIwNjAwIiwiTWluaSBTZWN0b3IgU2hpZnQ6ICIpLG9uLmNoaygiMDAwMDAwMDAwMDAwIiwiUmVzZXJ2ZWQ6ICIpfShMcixzbik7dmFy''@;'; put 'put ''IEFvPUxyLnJlYWRfc2hpZnQoNCwiaSIpO2lmKDM9PT1zbiYmMCE9PUFvKXRocm93IG5ldyBFcnJvcigiIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcgIitBbyk7THIubCs9NCxSbj1Mci5yZWFkX3NoaWZ0KDQsImkiKSxMci5sKz00LExyLmNoaygiMDAxMDAwMDAiLCJNaW5p''@;'; put 'put ''IFN0cmVhbSBDdXRvZmYgU2l6ZTogIiksdHI9THIucmVhZF9zaGlmdCg0LCJpIiksR3Q9THIucmVhZF9zaGlmdCg0LCJpIiksTXI9THIucmVhZF9zaGlmdCg0LCJpIiksdW49THIucmVhZF9zaGlmdCg0LCJpIik7Zm9yKHZhciBwbz0tMSx6aT0wO3ppPDEwOSYmISgocG89THIucmVhZF9zaGlm''@;'; put 'put ''dCg0LCJpIikpPDApOysremkpRnJbemldPXBvO3ZhciBlcz1mdW5jdGlvbiBsdChvbixtbil7Zm9yKHZhciBzbj1NYXRoLmNlaWwob24ubGVuZ3RoL21uKS0xLFZ0PVtdLEd0PTE7R3Q8c247KytHdClWdFtHdC0xXT1vbi5zbGljZShHdCptbiwoR3QrMSkqbW4pO3JldHVybiBWdFtzbi0xXT1v''@;'; put 'put ''bi5zbGljZShzbiptbiksVnR9KG9uLFZ0KTt2dChNcix1bixlcyxWdCxGcik7dmFyIFlzPWZ1bmN0aW9uIGt0KG9uLG1uLHNuLFZ0KXt2YXIgR3Q9b24ubGVuZ3RoLHVuPVtdLFJuPVtdLHRyPVtdLE1yPVtdLEZyPVZ0LTEsTHI9MCxTaT0wLGdpPTAsQW89MDtmb3IoTHI9MDtMcjxHdDsrK0xy''@;'; put 'put ''KWlmKHRyPVtdLChnaT1Mcittbik+PUd0JiYoZ2ktPUd0KSwhUm5bZ2ldKXtNcj1bXTt2YXIgcG89W107Zm9yKFNpPWdpO1NpPj0wOyl7cG9bU2ldPSEwLFJuW1NpXT0hMCx0clt0ci5sZW5ndGhdPVNpLE1yLnB1c2gob25bU2ldKTt2YXIgemk9c25bTWF0aC5mbG9vcig0KlNpL1Z0KV07aWYo''@;'; put 'put ''VnQ8NCsoQW89NCpTaSZGcikpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitTaSsiIDQgIitWdCk7aWYoIW9uW3ppXXx8cG9bU2k9Wm4ob25bemldLEFvKV0pYnJlYWt9dW5bZ2ldPXtub2Rlczp0cixkYXRhOlUwKFtNcl0pfX1yZXR1cm4gdW59KGVzLFJuLEZyLFZ0''@;'; put 'put ''KTtZc1tSbl0ubmFtZT0iIURpcmVjdG9yeSIsR3Q+MCYmdHIhPT16biYmKFlzW3RyXS5uYW1lPSIhTWluaUZBVCIpLFlzW0ZyWzBdXS5uYW1lPSIhRkFUIixZcy5mYXRfYWRkcnM9RnIsWXMuc3N6PVZ0O3ZhciB2dT1bXSxTMD1bXSxCNj1bXTsoZnVuY3Rpb24gRHQob24sbW4sc24sVnQsR3Qs''@;'; put 'put ''dW4sUm4sdHIpe2Zvcih2YXIgQW8sTXI9MCxGcj1WdC5sZW5ndGg/MjowLExyPW1uW29uXS5kYXRhLFNpPTAsZ2k9MDtTaTxMci5sZW5ndGg7U2krPTEyOCl7dmFyIHBvPUxyLnNsaWNlKFNpLFNpKzEyOCk7Z3MocG8sNjQpLGdpPXBvLnJlYWRfc2hpZnQoMiksQW89TWwocG8sMCxnaS1Gciks''@;'; put 'put ''VnQucHVzaChBbyk7dmFyIHppPXtuYW1lOkFvLHR5cGU6cG8ucmVhZF9zaGlmdCgxKSxjb2xvcjpwby5yZWFkX3NoaWZ0KDEpLEw6cG8ucmVhZF9zaGlmdCg0LCJpIiksUjpwby5yZWFkX3NoaWZ0KDQsImkiKSxDOnBvLnJlYWRfc2hpZnQoNCwiaSIpLGNsc2lkOnBvLnJlYWRfc2hpZnQoMTYp''@;'; put 'put ''LHN0YXRlOnBvLnJlYWRfc2hpZnQoNCwiaSIpLHN0YXJ0OjAsc2l6ZTowfTswIT09cG8ucmVhZF9zaGlmdCgyKStwby5yZWFkX3NoaWZ0KDIpK3BvLnJlYWRfc2hpZnQoMikrcG8ucmVhZF9zaGlmdCgyKSYmKHppLmN0PVp0KHBvLHBvLmwtOCkpLDAhPT1wby5yZWFkX3NoaWZ0KDIpK3BvLnJl''@;'; put 'put ''YWRfc2hpZnQoMikrcG8ucmVhZF9zaGlmdCgyKStwby5yZWFkX3NoaWZ0KDIpJiYoemkubXQ9WnQocG8scG8ubC04KSksemkuc3RhcnQ9cG8ucmVhZF9zaGlmdCg0LCJpIiksemkuc2l6ZT1wby5yZWFkX3NoaWZ0KDQsImkiKSx6aS5zaXplPDAmJnppLnN0YXJ0PDAmJih6aS5zaXplPXppLnR5''@;'; put 'put ''cGU9MCx6aS5zdGFydD16bix6aS5uYW1lPSIiKSw1PT09emkudHlwZT8oTXI9emkuc3RhcnQsR3Q+MCYmTXIhPT16biYmKG1uW01yXS5uYW1lPSIhU3RyZWFtRGF0YSIpKTp6aS5zaXplPj00MDk2Pyh6aS5zdG9yYWdlPSJmYXQiLHZvaWQgMD09PW1uW3ppLnN0YXJ0XSYmKG1uW3ppLnN0YXJ0''@;'; put 'put ''XT1QdChzbix6aS5zdGFydCxtbi5mYXRfYWRkcnMsbW4uc3N6KSksbW5bemkuc3RhcnRdLm5hbWU9emkubmFtZSx6aS5jb250ZW50PW1uW3ppLnN0YXJ0XS5kYXRhLnNsaWNlKDAsemkuc2l6ZSkpOih6aS5zdG9yYWdlPSJtaW5pZmF0Iix6aS5zaXplPDA/emkuc2l6ZT0wOk1yIT09em4mJnpp''@;'; put 'put ''LnN0YXJ0IT09em4mJm1uW01yXSYmKHppLmNvbnRlbnQ9YXQoemksbW5bTXJdLmRhdGEsKG1uW3RyXXx8e30pLmRhdGEpKSksemkuY29udGVudCYmZ3MoemkuY29udGVudCwwKSx1bltBb109emksUm4ucHVzaCh6aSl9fSkoUm4sWXMsZXMsdnUsR3Qse30sUzAsdHIpLGZ1bmN0aW9uIEN0KG9u''@;'; put 'put ''LG1uLHNuKXtmb3IodmFyIFZ0PTAsR3Q9MCx1bj0wLFJuPTAsdHI9MCxNcj1zbi5sZW5ndGgsRnI9W10sTHI9W107VnQ8TXI7KytWdClGcltWdF09THJbVnRdPVZ0LG1uW1Z0XT1zbltWdF07Zm9yKDt0cjxMci5sZW5ndGg7Kyt0cilHdD1vbltWdD1Mclt0cl1dLkwsdW49b25bVnRdLlIsUm49''@;'; put 'put ''b25bVnRdLkMsRnJbVnRdPT09VnQmJigtMSE9PUd0JiZGcltHdF0hPT1HdCYmKEZyW1Z0XT1GcltHdF0pLC0xIT09dW4mJkZyW3VuXSE9PXVuJiYoRnJbVnRdPUZyW3VuXSkpLC0xIT09Um4mJihGcltSbl09VnQpLC0xIT09R3QmJlZ0IT1GcltWdF0mJihGcltHdF09RnJbVnRdLExyLmxhc3RJ''@;'; put 'put ''bmRleE9mKEd0KTx0ciYmTHIucHVzaChHdCkpLC0xIT09dW4mJlZ0IT1GcltWdF0mJihGclt1bl09RnJbVnRdLExyLmxhc3RJbmRleE9mKHVuKTx0ciYmTHIucHVzaCh1bikpO2ZvcihWdD0xO1Z0PE1yOysrVnQpRnJbVnRdPT09VnQmJigtMSE9PXVuJiZGclt1bl0hPT11bj9GcltWdF09RnJb''@;'; put 'put ''dW5dOi0xIT09R3QmJkZyW0d0XSE9PUd0JiYoRnJbVnRdPUZyW0d0XSkpO2ZvcihWdD0xO1Z0PE1yOysrVnQpaWYoMCE9PW9uW1Z0XS50eXBlKXtpZigodHI9VnQpIT1Gclt0cl0pZG97bW5bVnRdPW1uW3RyPUZyW3RyXV0rIi8iK21uW1Z0XX13aGlsZSgwIT09dHImJi0xIT09RnJbdHJdJiZ0''@;'; put 'put ''ciE9RnJbdHJdKTtGcltWdF09LTF9Zm9yKG1uWzBdKz0iLyIsVnQ9MTtWdDxNcjsrK1Z0KTIhPT1vbltWdF0udHlwZSYmKG1uW1Z0XSs9Ii8iKX0oUzAsQjYsdnUpLHZ1LnNoaWZ0KCk7dmFyIG5tPXtGaWxlSW5kZXg6UzAsRnVsbFBhdGhzOkI2fTtyZXR1cm4gbW4mJm1uLnJhdyYmKG5tLnJh''@;'; put 'put ''dz17aGVhZGVyOmdpLHNlY3RvcnM6ZXN9KSxubX1mdW5jdGlvbiBhdChvbixtbixzbil7Zm9yKHZhciBHdD1vbi5zaXplLHVuPVtdLFJuPW9uLnN0YXJ0O3NuJiZHdD4wJiZSbj49MDspdW4ucHVzaChtbi5zbGljZShSbiplcixSbiplcitlcikpLEd0LT1lcixSbj1abihzbiw0KlJuKTtyZXR1''@;'; put 'put ''cm4gMD09PXVuLmxlbmd0aD94cigwKTprKHVuKS5zbGljZSgwLG9uLnNpemUpfWZ1bmN0aW9uIHZ0KG9uLG1uLHNuLFZ0LEd0KXt2YXIgdW49em47aWYob249PT16bil7aWYoMCE9PW1uKXRocm93IG5ldyBFcnJvcigiRElGQVQgY2hhaW4gc2hvcnRlciB0aGFuIGV4cGVjdGVkIil9ZWxzZSBp''@;'; put 'put ''ZigtMSE9PW9uKXt2YXIgUm49c25bb25dLHRyPShWdD4+PjIpLTE7aWYoIVJuKXJldHVybjtmb3IodmFyIE1yPTA7TXI8dHImJih1bj1abihSbiw0Kk1yKSkhPT16bjsrK01yKUd0LnB1c2godW4pO3Z0KFpuKFJuLFZ0LTQpLG1uLTEsc24sVnQsR3QpfX1mdW5jdGlvbiBQdChvbixtbixzbixW''@;'; put 'put ''dCxHdCl7dmFyIHVuPVtdLFJuPVtdO0d0fHwoR3Q9W10pO3ZhciB0cj1WdC0xLE1yPTAsRnI9MDtmb3IoTXI9bW47TXI+PTA7KXtHdFtNcl09ITAsdW5bdW4ubGVuZ3RoXT1NcixSbi5wdXNoKG9uW01yXSk7dmFyIExyPXNuW01hdGguZmxvb3IoNCpNci9WdCldO2lmKFZ0PDQrKEZyPTQqTXIm''@;'; put 'put ''dHIpKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrTXIrIiA0ICIrVnQpO2lmKCFvbltMcl0pYnJlYWs7TXI9Wm4ob25bTHJdLEZyKX1yZXR1cm57bm9kZXM6dW4sZGF0YTpVMChbUm5dKX19ZnVuY3Rpb24gWnQob24sbW4pe3JldHVybiBuZXcgRGF0ZSgxZTMqKGpp''@;'; put 'put ''KG9uLG1uKzQpLzFlNypNYXRoLnBvdygyLDMyKStqaShvbixtbikvMWU3LTExNjQ0NDczNjAwKSl9ZnVuY3Rpb24gY24ob24sbW4pe3ZhciBzbj1tbnx8e30sVnQ9c24ucm9vdHx8IlJvb3QgRW50cnkiO2lmKG9uLkZ1bGxQYXRoc3x8KG9uLkZ1bGxQYXRocz1bXSksb24uRmlsZUluZGV4fHwo''@;'; put 'put ''b24uRmlsZUluZGV4PVtdKSxvbi5GdWxsUGF0aHMubGVuZ3RoIT09b24uRmlsZUluZGV4Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImluY29uc2lzdGVudCBDRkIgc3RydWN0dXJlIik7MD09PW9uLkZ1bGxQYXRocy5sZW5ndGgmJihvbi5GdWxsUGF0aHNbMF09VnQrIi8iLG9uLkZpbGVJbmRl''@;'; put 'put ''eFswXT17bmFtZTpWdCx0eXBlOjV9KSxzbi5DTFNJRCYmKG9uLkZpbGVJbmRleFswXS5jbHNpZD1zbi5DTFNJRCksZnVuY3Rpb24gWG4ob24pe3ZhciBtbj0iXHgwMVNoMzN0SjUiO2lmKCFEZS5maW5kKG9uLCIvIittbikpe3ZhciBzbj14cig0KTtzblswXT01NSxzblsxXT1zblszXT01MCxz''@;'; put 'put ''blsyXT01NCxvbi5GaWxlSW5kZXgucHVzaCh7bmFtZTptbix0eXBlOjIsY29udGVudDpzbixzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSxvbi5GdWxsUGF0aHMucHVzaChvbi5GdWxsUGF0aHNbMF0rbW4pLEJuKG9uKX19KG9uKX1mdW5jdGlvbiBCbihvbixtbil7Y24ob24pO2Zvcih2YXIgc249''@;'; put 'put ''ITEsVnQ9ITEsR3Q9b24uRnVsbFBhdGhzLmxlbmd0aC0xO0d0Pj0wOy0tR3Qpe3ZhciB1bj1vbi5GaWxlSW5kZXhbR3RdO3N3aXRjaCh1bi50eXBlKXtjYXNlIDA6VnQ/c249ITA6KG9uLkZpbGVJbmRleC5wb3AoKSxvbi5GdWxsUGF0aHMucG9wKCkpO2JyZWFrO2Nhc2UgMTpjYXNlIDI6Y2Fz''@;'; put 'put ''ZSA1OlZ0PSEwLGlzTmFOKHVuLlIqdW4uTCp1bi5DKSYmKHNuPSEwKSx1bi5SPi0xJiZ1bi5MPi0xJiZ1bi5SPT11bi5MJiYoc249ITApO2JyZWFrO2RlZmF1bHQ6c249ITB9fWlmKHNufHxtbil7dmFyIFJuPW5ldyBEYXRlKDE5ODcsMSwxOSksdHI9MCxNcj1bXTtmb3IoR3Q9MDtHdDxvbi5G''@;'; put 'put ''dWxsUGF0aHMubGVuZ3RoOysrR3QpMCE9PW9uLkZpbGVJbmRleFtHdF0udHlwZSYmTXIucHVzaChbb24uRnVsbFBhdGhzW0d0XSxvbi5GaWxlSW5kZXhbR3RdXSk7Zm9yKEd0PTA7R3Q8TXIubGVuZ3RoOysrR3Qpe3ZhciBGcj1YKE1yW0d0XVswXSk7Zm9yKFZ0PSExLHRyPTA7dHI8TXIubGVu''@;'; put 'put ''Z3RoOysrdHIpTXJbdHJdWzBdPT09RnImJihWdD0hMCk7VnR8fE1yLnB1c2goW0ZyLHtuYW1lOm5lKEZyKS5yZXBsYWNlKCIvIiwiIiksdHlwZToxLGNsc2lkOkVpLGN0OlJuLG10OlJuLGNvbnRlbnQ6bnVsbH1dKX1mb3IoTXIuc29ydChmdW5jdGlvbihnaSxBbyl7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IEwob24sbW4pe2Zvcih2YXIgc249b24uc3BsaXQoIi8iKSxWdD1tbi5zcGxpdCgiLyIpLEd0PTAsdW49MCxSbj1NYXRoLm1pbihzbi5sZW5ndGgsVnQubGVuZ3RoKTtHdDxSbjsrK0d0KXtpZih1bj1zbltHdF0ubGVuZ3RoLVZ0W0d0XS5sZW5ndGgpcmV0dXJuIHVuO2lmKHNuW0d0XSE9VnRb''@;'; put 'put ''R3RdKXJldHVybiBzbltHdF08VnRbR3RdPy0xOjF9cmV0dXJuIHNuLmxlbmd0aC1WdC5sZW5ndGh9KGdpWzBdLEFvWzBdKX0pLG9uLkZ1bGxQYXRocz1bXSxvbi5GaWxlSW5kZXg9W10sR3Q9MDtHdDxNci5sZW5ndGg7KytHdClvbi5GdWxsUGF0aHNbR3RdPU1yW0d0XVswXSxvbi5GaWxlSW5k''@;'; put 'put ''ZXhbR3RdPU1yW0d0XVsxXTtmb3IoR3Q9MDtHdDxNci5sZW5ndGg7KytHdCl7dmFyIExyPW9uLkZpbGVJbmRleFtHdF0sU2k9b24uRnVsbFBhdGhzW0d0XTtpZihMci5uYW1lPW5lKFNpKS5yZXBsYWNlKCIvIiwiIiksTHIuTD1Mci5SPUxyLkM9LShMci5jb2xvcj0xKSxMci5zaXplPUxyLmNv''@;'; put 'put ''bnRlbnQ/THIuY29udGVudC5sZW5ndGg6MCxMci5zdGFydD0wLExyLmNsc2lkPUxyLmNsc2lkfHxFaSwwPT09R3QpTHIuQz1Nci5sZW5ndGg+MT8xOi0xLExyLnNpemU9MCxMci50eXBlPTU7ZWxzZSBpZigiLyI9PVNpLnNsaWNlKC0xKSl7Zm9yKHRyPUd0KzE7dHI8TXIubGVuZ3RoJiZYKG9u''@;'; put 'put ''LkZ1bGxQYXRoc1t0cl0pIT1TaTsrK3RyKTtmb3IoTHIuQz10cj49TXIubGVuZ3RoPy0xOnRyLHRyPUd0KzE7dHI8TXIubGVuZ3RoJiZYKG9uLkZ1bGxQYXRoc1t0cl0pIT1YKFNpKTsrK3RyKTtMci5SPXRyPj1Nci5sZW5ndGg/LTE6dHIsTHIudHlwZT0xfWVsc2UgWChvbi5GdWxsUGF0aHNb''@;'; put 'put ''R3QrMV18fCIiKT09WChTaSkmJihMci5SPUd0KzEpLExyLnR5cGU9Mn19fWZ1bmN0aW9uIERuKG9uLG1uKXt2YXIgc249bW58fHt9O2lmKEJuKG9uKSwiemlwIj09c24uZmlsZVR5cGUpcmV0dXJuIGZ1bmN0aW9uIHdzKG9uLG1uKXt2YXIgc249bW58fHt9LFZ0PVtdLEd0PVtdLHVuPXhyKDEp''@;'; put 'put ''LFJuPXNuLmNvbXByZXNzaW9uPzg6MCx0cj0wLEZyPTAsTHI9MCxTaT0wLGdpPTAsQW89b24uRnVsbFBhdGhzWzBdLHBvPUFvLHppPW9uLkZpbGVJbmRleFswXSxlcz1bXSxZcz0wO2ZvcihGcj0xO0ZyPG9uLkZ1bGxQYXRocy5sZW5ndGg7KytGcilpZihwbz1vbi5GdWxsUGF0aHNbRnJdLnNs''@;'; put 'put ''aWNlKEFvLmxlbmd0aCksKHppPW9uLkZpbGVJbmRleFtGcl0pLnNpemUmJnppLmNvbnRlbnQmJiJceDAxU2gzM3RKNSIhPXBvKXt2YXIgQzA9U2ksdnU9eHIocG8ubGVuZ3RoKTtmb3IoTHI9MDtMcjxwby5sZW5ndGg7KytMcil2dS53cml0ZV9zaGlmdCgxLDEyNyZwby5jaGFyQ29kZUF0KExy''@;'; put 'put ''KSk7dnU9dnUuc2xpY2UoMCx2dS5sKSxlc1tnaV09eGUuYnVmKHppLmNvbnRlbnQsMCk7dmFyIFMwPXppLmNvbnRlbnQ7OD09Um4mJihTMD1DcihTMCkpLCh1bj14cigzMCkpLndyaXRlX3NoaWZ0KDQsNjczMjQ3NTIpLHVuLndyaXRlX3NoaWZ0KDIsMjApLHVuLndyaXRlX3NoaWZ0KDIsdHIp''@;'; put 'put ''LHVuLndyaXRlX3NoaWZ0KDIsUm4pLHppLm10P2ZlKHVuLHppLm10KTp1bi53cml0ZV9zaGlmdCg0LDApLHVuLndyaXRlX3NoaWZ0KC00LDgmdHI/MDplc1tnaV0pLHVuLndyaXRlX3NoaWZ0KDQsOCZ0cj8wOlMwLmxlbmd0aCksdW4ud3JpdGVfc2hpZnQoNCw4JnRyPzA6emkuY29udGVudC5s''@;'; put 'put ''ZW5ndGgpLHVuLndyaXRlX3NoaWZ0KDIsdnUubGVuZ3RoKSx1bi53cml0ZV9zaGlmdCgyLDApLFNpKz11bi5sZW5ndGgsVnQucHVzaCh1biksU2krPXZ1Lmxlbmd0aCxWdC5wdXNoKHZ1KSxTaSs9UzAubGVuZ3RoLFZ0LnB1c2goUzApLDgmdHImJigodW49eHIoMTIpKS53cml0ZV9zaGlmdCgt''@;'; put 'put ''NCxlc1tnaV0pLHVuLndyaXRlX3NoaWZ0KDQsUzAubGVuZ3RoKSx1bi53cml0ZV9zaGlmdCg0LHppLmNvbnRlbnQubGVuZ3RoKSxTaSs9dW4ubCxWdC5wdXNoKHVuKSksKHVuPXhyKDQ2KSkud3JpdGVfc2hpZnQoNCwzMzYzOTI0OCksdW4ud3JpdGVfc2hpZnQoMiwwKSx1bi53cml0ZV9zaGlm''@;'; put 'put ''dCgyLDIwKSx1bi53cml0ZV9zaGlmdCgyLHRyKSx1bi53cml0ZV9zaGlmdCgyLFJuKSx1bi53cml0ZV9zaGlmdCg0LDApLHVuLndyaXRlX3NoaWZ0KC00LGVzW2dpXSksdW4ud3JpdGVfc2hpZnQoNCxTMC5sZW5ndGgpLHVuLndyaXRlX3NoaWZ0KDQsemkuY29udGVudC5sZW5ndGgpLHVuLndy''@;'; put 'put ''aXRlX3NoaWZ0KDIsdnUubGVuZ3RoKSx1bi53cml0ZV9zaGlmdCgyLDApLHVuLndyaXRlX3NoaWZ0KDIsMCksdW4ud3JpdGVfc2hpZnQoMiwwKSx1bi53cml0ZV9zaGlmdCgyLDApLHVuLndyaXRlX3NoaWZ0KDQsMCksdW4ud3JpdGVfc2hpZnQoNCxDMCksWXMrPXVuLmwsR3QucHVzaCh1biks''@;'; put 'put ''WXMrPXZ1Lmxlbmd0aCxHdC5wdXNoKHZ1KSwrK2dpfXJldHVybih1bj14cigyMikpLndyaXRlX3NoaWZ0KDQsMTAxMDEwMjU2KSx1bi53cml0ZV9zaGlmdCgyLDApLHVuLndyaXRlX3NoaWZ0KDIsMCksdW4ud3JpdGVfc2hpZnQoMixnaSksdW4ud3JpdGVfc2hpZnQoMixnaSksdW4ud3JpdGVf''@;'; put 'put ''c2hpZnQoNCxZcyksdW4ud3JpdGVfc2hpZnQoNCxTaSksdW4ud3JpdGVfc2hpZnQoMiwwKSxrKFtrKFZ0KSxrKEd0KSx1bl0pfShvbixzbik7dmFyIFZ0PWZ1bmN0aW9uKEFvKXtmb3IodmFyIHBvPTAsemk9MCxlcz0wO2VzPEFvLkZpbGVJbmRleC5sZW5ndGg7Kytlcyl7dmFyIFlzPUFvLkZp''@;'; put 'put ''bGVJbmRleFtlc107aWYoWXMuY29udGVudCl7dmFyIEMwPVlzLmNvbnRlbnQubGVuZ3RoO0MwPjAmJihDMDw0MDk2P3BvKz1DMCs2Mz4+Njp6aSs9QzArNTExPj45KX19Zm9yKHZhciB2dT1Bby5GdWxsUGF0aHMubGVuZ3RoKzM+PjIsQjY9cG8rMTI3Pj43LG5tPShwbys3Pj4zKSt6aSt2dStC''@;'; put 'put ''NixybT1ubSsxMjc+PjcsUmU9cm08PTEwOT8wOk1hdGguY2VpbCgocm0tMTA5KS8xMjcpO25tK3JtK1JlKzEyNz4+Nz5ybTspUmU9KytybTw9MTA5PzA6TWF0aC5jZWlsKChybS0xMDkpLzEyNyk7dmFyIHBkPVsxLFJlLHJtLEI2LHZ1LHppLHBvLDBdO3JldHVybiBBby5GaWxlSW5kZXhbMF0u''@;'; put 'put ''c2l6ZT1wbzw8NixwZFs3XT0oQW8uRmlsZUluZGV4WzBdLnN0YXJ0PXBkWzBdK3BkWzFdK3BkWzJdK3BkWzNdK3BkWzRdK3BkWzVdKSsocGRbNl0rNz4+MykscGR9KG9uKSxHdD14cihWdFs3XTw8OSksdW49MCxSbj0wO2Zvcih1bj0wO3VuPDg7Kyt1bilHdC53cml0ZV9zaGlmdCgxLGlpW3Vu''@;'; put 'put ''XSk7Zm9yKHVuPTA7dW48ODsrK3VuKUd0LndyaXRlX3NoaWZ0KDIsMCk7Zm9yKEd0LndyaXRlX3NoaWZ0KDIsNjIpLEd0LndyaXRlX3NoaWZ0KDIsMyksR3Qud3JpdGVfc2hpZnQoMiw2NTUzNCksR3Qud3JpdGVfc2hpZnQoMiw5KSxHdC53cml0ZV9zaGlmdCgyLDYpLHVuPTA7dW48MzsrK3Vu''@;'; put 'put ''KUd0LndyaXRlX3NoaWZ0KDIsMCk7Zm9yKEd0LndyaXRlX3NoaWZ0KDQsMCksR3Qud3JpdGVfc2hpZnQoNCxWdFsyXSksR3Qud3JpdGVfc2hpZnQoNCxWdFswXStWdFsxXStWdFsyXStWdFszXS0xKSxHdC53cml0ZV9zaGlmdCg0LDApLEd0LndyaXRlX3NoaWZ0KDQsNDA5NiksR3Qud3JpdGVf''@;'; put 'put ''c2hpZnQoNCxWdFszXT9WdFswXStWdFsxXStWdFsyXS0xOnpuKSxHdC53cml0ZV9zaGlmdCg0LFZ0WzNdKSxHdC53cml0ZV9zaGlmdCgtNCxWdFsxXT9WdFswXS0xOnpuKSxHdC53cml0ZV9zaGlmdCg0LFZ0WzFdKSx1bj0wO3VuPDEwOTsrK3VuKUd0LndyaXRlX3NoaWZ0KC00LHVuPFZ0WzJd''@;'; put 'put ''P1Z0WzFdK3VuOi0xKTtpZihWdFsxXSlmb3IoUm49MDtSbjxWdFsxXTsrK1JuKXtmb3IoO3VuPDIzNisxMjcqUm47Kyt1bilHdC53cml0ZV9zaGlmdCgtNCx1bjxWdFsyXT9WdFsxXSt1bjotMSk7R3Qud3JpdGVfc2hpZnQoLTQsUm49PT1WdFsxXS0xP3puOlJuKzEpfXZhciB0cj1mdW5jdGlv''@;'; put 'put ''bihBbyl7Zm9yKFJuKz1Bbzt1bjxSbi0xOysrdW4pR3Qud3JpdGVfc2hpZnQoLTQsdW4rMSk7QW8mJigrK3VuLEd0LndyaXRlX3NoaWZ0KC00LHpuKSl9O2ZvcihSbj11bj0wLFJuKz1WdFsxXTt1bjxSbjsrK3VuKUd0LndyaXRlX3NoaWZ0KC00LE9pLkRJRlNFQ1QpO2ZvcihSbis9VnRbMl07''@;'; put 'put ''dW48Um47Kyt1bilHdC53cml0ZV9zaGlmdCgtNCxPaS5GQVRTRUNUKTt0cihWdFszXSksdHIoVnRbNF0pO2Zvcih2YXIgTXI9MCxGcj0wLExyPW9uLkZpbGVJbmRleFswXTtNcjxvbi5GaWxlSW5kZXgubGVuZ3RoOysrTXIpKExyPW9uLkZpbGVJbmRleFtNcl0pLmNvbnRlbnQmJiEoKEZyPUxy''@;'; put 'put ''LmNvbnRlbnQubGVuZ3RoKTw0MDk2KSYmKExyLnN0YXJ0PVJuLHRyKEZyKzUxMT4+OSkpO2Zvcih0cihWdFs2XSs3Pj4zKTs1MTEmR3QubDspR3Qud3JpdGVfc2hpZnQoLTQsT2kuRU5ET0ZDSEFJTik7Zm9yKFJuPXVuPTAsTXI9MDtNcjxvbi5GaWxlSW5kZXgubGVuZ3RoOysrTXIpKExyPW9u''@;'; put 'put ''LkZpbGVJbmRleFtNcl0pLmNvbnRlbnQmJihGcj1Mci5jb250ZW50Lmxlbmd0aCkmJiEoRnI+PTQwOTYpJiYoTHIuc3RhcnQ9Um4sdHIoRnIrNjM+PjYpKTtmb3IoOzUxMSZHdC5sOylHdC53cml0ZV9zaGlmdCgtNCxPaS5FTkRPRkNIQUlOKTtmb3IodW49MDt1bjxWdFs0XTw8MjsrK3VuKXt2''@;'; put 'put ''YXIgU2k9b24uRnVsbFBhdGhzW3VuXTtpZihTaSYmMCE9PVNpLmxlbmd0aCl7THI9b24uRmlsZUluZGV4W3VuXSwwPT09dW4mJihMci5zdGFydD1Mci5zaXplP0xyLnN0YXJ0LTE6em4pO3ZhciBnaT0wPT09dW4mJnNuLnJvb3R8fExyLm5hbWU7aWYoRnI9MiooZ2kubGVuZ3RoKzEpLEd0Lndy''@;'; put 'put ''aXRlX3NoaWZ0KDY0LGdpLCJ1dGYxNmxlIiksR3Qud3JpdGVfc2hpZnQoMixGciksR3Qud3JpdGVfc2hpZnQoMSxMci50eXBlKSxHdC53cml0ZV9zaGlmdCgxLExyLmNvbG9yKSxHdC53cml0ZV9zaGlmdCgtNCxMci5MKSxHdC53cml0ZV9zaGlmdCgtNCxMci5SKSxHdC53cml0ZV9zaGlmdCgt''@;'; put 'put ''NCxMci5DKSxMci5jbHNpZClHdC53cml0ZV9zaGlmdCgxNixMci5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoTXI9MDtNcjw0OysrTXIpR3Qud3JpdGVfc2hpZnQoNCwwKTtHdC53cml0ZV9zaGlmdCg0LExyLnN0YXRlfHwwKSxHdC53cml0ZV9zaGlmdCg0LDApLEd0LndyaXRlX3NoaWZ0KDQsMCks''@;'; put 'put ''R3Qud3JpdGVfc2hpZnQoNCwwKSxHdC53cml0ZV9zaGlmdCg0LDApLEd0LndyaXRlX3NoaWZ0KDQsTHIuc3RhcnQpLEd0LndyaXRlX3NoaWZ0KDQsTHIuc2l6ZSksR3Qud3JpdGVfc2hpZnQoNCwwKX1lbHNle2ZvcihNcj0wO01yPDE3OysrTXIpR3Qud3JpdGVfc2hpZnQoNCwwKTtmb3IoTXI9''@;'; put 'put ''MDtNcjwzOysrTXIpR3Qud3JpdGVfc2hpZnQoNCwtMSk7Zm9yKE1yPTA7TXI8MTI7KytNcilHdC53cml0ZV9zaGlmdCg0LDApfX1mb3IodW49MTt1bjxvbi5GaWxlSW5kZXgubGVuZ3RoOysrdW4paWYoKExyPW9uLkZpbGVJbmRleFt1bl0pLnNpemU+PTQwOTYpe2ZvcihHdC5sPUxyLnN0YXJ0''@;'; put 'put ''KzE8PDksTXI9MDtNcjxMci5zaXplOysrTXIpR3Qud3JpdGVfc2hpZnQoMSxMci5jb250ZW50W01yXSk7Zm9yKDs1MTEmTXI7KytNcilHdC53cml0ZV9zaGlmdCgxLDApfWZvcih1bj0xO3VuPG9uLkZpbGVJbmRleC5sZW5ndGg7Kyt1bilpZigoTHI9b24uRmlsZUluZGV4W3VuXSkuc2l6ZT4w''@;'; put 'put ''JiZMci5zaXplPDQwOTYpe2ZvcihNcj0wO01yPExyLnNpemU7KytNcilHdC53cml0ZV9zaGlmdCgxLExyLmNvbnRlbnRbTXJdKTtmb3IoOzYzJk1yOysrTXIpR3Qud3JpdGVfc2hpZnQoMSwwKX1mb3IoO0d0Lmw8R3QubGVuZ3RoOylHdC53cml0ZV9zaGlmdCgxLDApO3JldHVybiBHdH1QLnZl''@;'; put 'put ''cnNpb249IjEuMS40Ijt2YXIgd3IsZXI9NjQsem49LTIsS3I9ImQwY2YxMWUwYTFiMTFhZTEiLGlpPVsyMDgsMjA3LDE3LDIyNCwxNjEsMTc3LDI2LDIyNV0sRWk9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIixPaT17TUFYUkVHU0VDVDotNixESUZTRUNUOi00LEZBVFNFQ1Q6''@;'; put 'put ''LTMsRU5ET0ZDSEFJTjp6bixGUkVFU0VDVDotMSxIRUFERVJfU0lHTkFUVVJFOktyLEhFQURFUl9NSU5PUl9WRVJTSU9OOiIzZTAwIixNQVhSRUdTSUQ6LTYsTk9TVFJFQU06LTEsSEVBREVSX0NMU0lEOkVpLEVudHJ5VHlwZXM6WyJ1bmtub3duIiwic3RvcmFnZSIsInN0cmVhbSIsImxvY2ti''@;'; put 'put ''eXRlcyIsInByb3BlcnR5Iiwicm9vdCJdfTtmdW5jdGlvbiBmcihvbil7Zm9yKHZhciBtbj1uZXcgQXJyYXkob24ubGVuZ3RoKSxzbj0wO3NuPG9uLmxlbmd0aDsrK3NuKW1uW3NuXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG9uW3NuXSk7cmV0dXJuIG1uLmpvaW4oIiIpfWZ1bmN0aW9uIENyKG9u''@;'; put 'put ''KXtyZXR1cm4gd3I/d3IuZGVmbGF0ZVJhd1N5bmMob24pOnRsKG9uKX1mb3IodmFyIG9uLG1uLGJpPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxxcj1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywxNSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSw2''@;'; put 'put ''Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OF0sVWk9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3N10sSWk9dHlwZW9mIFVpbnQ4''@;'; put 'put ''QXJyYXk8InUiLHNzPUlpP25ldyBVaW50OEFycmF5KDI1Nik6W10sdW89MDt1bzwyNTY7Kyt1bylzc1t1b109KHZvaWQgMCwyNTUmKChtbj0xMzk1MzYmKChvbj11byk8PDF8b248PDExKXw1NTgxNDQmKG9uPDw1fG9uPDwxNSkpPj4xNnxtbj4+OHxtbikpO2Z1bmN0aW9uIE5vKG9uLG1uKXt2''@;'; put 'put ''YXIgc249c3NbMjU1Jm9uXTtyZXR1cm4gbW48PTg/c24+Pj44LW1uOihzbj1zbjw8OHxzc1tvbj4+OCYyNTVdLG1uPD0xNj9zbj4+PjE2LW1uOihzbj1zbjw8OHxzc1tvbj4+MTYmMjU1XSk+Pj4yNC1tbil9ZnVuY3Rpb24gRW8ob24sbW4pe3ZhciBzbj03Jm1uLFZ0PW1uPj4+MztyZXR1cm4o''@;'; put 'put ''b25bVnRdfChzbjw9Nj8wOm9uW1Z0KzFdPDw4KSk+Pj5zbiYzfWZ1bmN0aW9uIGFpKG9uLG1uKXt2YXIgc249NyZtbixWdD1tbj4+PjM7cmV0dXJuKG9uW1Z0XXwoc248PTU/MDpvbltWdCsxXTw8OCkpPj4+c24mN31mdW5jdGlvbiBNbihvbixtbil7dmFyIHNuPTcmbW4sVnQ9bW4+Pj4zO3Jl''@;'; put 'put ''dHVybihvbltWdF18KHNuPD0zPzA6b25bVnQrMV08PDgpKT4+PnNuJjMxfWZ1bmN0aW9uIHlzKG9uLG1uKXt2YXIgc249NyZtbixWdD1tbj4+PjM7cmV0dXJuKG9uW1Z0XXwoc248PTE/MDpvbltWdCsxXTw8OCkpPj4+c24mMTI3fWZ1bmN0aW9uIHVyKG9uLG1uLHNuKXt2YXIgVnQ9NyZtbixH''@;'; put 'put ''dD1tbj4+PjMsUm49b25bR3RdPj4+VnQ7cmV0dXJuIHNuPDgtVnR8fChSbnw9b25bR3QrMV08PDgtVnQsc248MTYtVnQpfHwoUm58PW9uW0d0KzJdPDwxNi1WdCxzbjwyNC1WdCl8fChSbnw9b25bR3QrM108PDI0LVZ0KSxSbiYoMTw8c24pLTF9ZnVuY3Rpb24gbGwob24sbW4pe3ZhciBzbj1v''@;'; put 'put ''bi5sZW5ndGgsVnQ9Mipzbj5tbj8yKnNuOm1uKzUsR3Q9MDtpZihzbj49bW4pcmV0dXJuIG9uO2lmKHVlKXt2YXIgdW49YihWdCk7aWYob24uY29weSlvbi5jb3B5KHVuKTtlbHNlIGZvcig7R3Q8b24ubGVuZ3RoOysrR3QpdW5bR3RdPW9uW0d0XTtyZXR1cm4gdW59aWYoSWkpe3ZhciBSbj1u''@;'; put 'put ''ZXcgVWludDhBcnJheShWdCk7aWYoUm4uc2V0KVJuLnNldChvbik7ZWxzZSBmb3IoO0d0PG9uLmxlbmd0aDsrK0d0KVJuW0d0XT1vbltHdF07cmV0dXJuIFJufXJldHVybiBvbi5sZW5ndGg9VnQsb259ZnVuY3Rpb24gZWwob24pe2Zvcih2YXIgbW49bmV3IEFycmF5KG9uKSxzbj0wO3NuPG9u''@;'; put 'put ''Oysrc24pbW5bc25dPTA7cmV0dXJuIG1ufXZhciB0bD1mdW5jdGlvbigpe3ZhciBvbj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihzbixWdCl7Zm9yKHZhciBHdD0wO0d0PHNuLmxlbmd0aDspe3ZhciB1bj1NYXRoLm1pbig2NTUzNSxzbi5sZW5ndGgtR3QpO2ZvcihWdC53cml0ZV9zaGlm''@;'; put 'put ''dCgxLCsoR3QrdW49PXNuLmxlbmd0aCkpLFZ0LndyaXRlX3NoaWZ0KDIsdW4pLFZ0LndyaXRlX3NoaWZ0KDIsNjU1MzUmfnVuKTt1bi0tID4wOylWdFtWdC5sKytdPXNuW0d0KytdfXJldHVybiBWdC5sfX0oKTtyZXR1cm4gZnVuY3Rpb24obW4pe3ZhciBzbj14cig1MCtNYXRoLmZsb29yKDEu''@;'; put 'put ''MSptbi5sZW5ndGgpKSxWdD1vbihtbixzbik7cmV0dXJuIHNuLnNsaWNlKDAsVnQpfX0oKTtmdW5jdGlvbiBSYyhvbixtbixzbil7dmFyIFZ0PTEsR3Q9MCx1bj0wLFJuPTAsdHI9MCxNcj1vbi5sZW5ndGgsRnI9SWk/bmV3IFVpbnQxNkFycmF5KDMyKTplbCgzMik7Zm9yKHVuPTA7dW48MzI7''@;'; put 'put ''Kyt1bilGclt1bl09MDtmb3IodW49TXI7dW48c247Kyt1bilvblt1bl09MDtNcj1vbi5sZW5ndGg7dmFyIExyPUlpP25ldyBVaW50MTZBcnJheShNcik6ZWwoTXIpO2Zvcih1bj0wO3VuPE1yOysrdW4pRnJbR3Q9b25bdW5dXSsrLFZ0PEd0JiYoVnQ9R3QpLExyW3VuXT0wO2ZvcihGclswXT0w''@;'; put 'put ''LHVuPTE7dW48PVZ0OysrdW4pRnJbdW4rMTZdPXRyPXRyK0ZyW3VuLTFdPDwxO2Zvcih1bj0wO3VuPE1yOysrdW4pMCE9KHRyPW9uW3VuXSkmJihMclt1bl09RnJbdHIrMTZdKyspO3ZhciBTaT0wO2Zvcih1bj0wO3VuPE1yOysrdW4paWYoMCE9KFNpPW9uW3VuXSkpZm9yKHRyPU5vKExyW3Vu''@;'; put 'put ''XSxWdCk+PlZ0LVNpLFJuPSgxPDxWdCs0LVNpKS0xO1JuPj0wOy0tUm4pbW5bdHJ8Um48PFNpXT0xNSZTaXx1bjw8NDtyZXR1cm4gVnR9dmFyIE9hPUlpP25ldyBVaW50MTZBcnJheSg1MTIpOmVsKDUxMikscXQ9SWk/bmV3IFVpbnQxNkFycmF5KDMyKTplbCgzMik7aWYoIUlpKXtmb3IodmFy''@;'; put 'put ''IGZuPTA7Zm48NTEyOysrZm4pT2FbZm5dPTA7Zm9yKGZuPTA7Zm48MzI7KytmbilxdFtmbl09MH0hZnVuY3Rpb24oKXtmb3IodmFyIG9uPVtdLG1uPTA7bW48MzI7bW4rKylvbi5wdXNoKDUpO1JjKG9uLHF0LDMyKTt2YXIgc249W107Zm9yKG1uPTA7bW48PTE0MzttbisrKXNuLnB1c2goOCk7''@;'; put 'put ''Zm9yKDttbjw9MjU1O21uKyspc24ucHVzaCg5KTtmb3IoO21uPD0yNzk7bW4rKylzbi5wdXNoKDcpO2Zvcig7bW48PTI4NzttbisrKXNuLnB1c2goOCk7UmMoc24sT2EsMjg4KX0oKTt2YXIgTG49SWk/bmV3IFVpbnQxNkFycmF5KDMyNzY4KTplbCgzMjc2OCksWHI9SWk/bmV3IFVpbnQxNkFy''@;'; put 'put ''cmF5KDMyNzY4KTplbCgzMjc2OCkscW49SWk/bmV3IFVpbnQxNkFycmF5KDEyOCk6ZWwoMTI4KSxuaT0xLGFyPTE7ZnVuY3Rpb24gcmkob24sbW4pe3ZhciBzbj1NbihvbixtbikrMjU3LFZ0PU1uKG9uLG1uKz01KSsxLEd0PWZ1bmN0aW9uIEtzKG9uLG1uKXt2YXIgc249NyZtbixWdD1tbj4+''@;'; put 'put ''PjM7cmV0dXJuKG9uW1Z0XXwoc248PTQ/MDpvbltWdCsxXTw8OCkpPj4+c24mMTV9KG9uLG1uKz01KSs0O21uKz00O2Zvcih2YXIgdW49MCxSbj1JaT9uZXcgVWludDhBcnJheSgxOSk6ZWwoMTkpLHRyPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxNcj0xLEZyPUlp''@;'; put 'put ''P25ldyBVaW50OEFycmF5KDgpOmVsKDgpLExyPUlpP25ldyBVaW50OEFycmF5KDgpOmVsKDgpLFNpPVJuLmxlbmd0aCxnaT0wO2dpPEd0OysrZ2kpUm5bYmlbZ2ldXT11bj1haShvbixtbiksTXI8dW4mJihNcj11biksRnJbdW5dKyssbW4rPTM7dmFyIEFvPTA7Zm9yKEZyWzBdPTAsZ2k9MTtn''@;'; put 'put ''aTw9TXI7KytnaSlMcltnaV09QW89QW8rRnJbZ2ktMV08PDE7Zm9yKGdpPTA7Z2k8U2k7KytnaSkwIT0oQW89Um5bZ2ldKSYmKHRyW2dpXT1McltBb10rKyk7dmFyIHBvPTA7Zm9yKGdpPTA7Z2k8U2k7KytnaSlpZigwIT0ocG89Um5bZ2ldKSl7QW89c3NbdHJbZ2ldXT4+OC1wbztmb3IodmFy''@;'; put 'put ''IHppPSgxPDw3LXBvKS0xO3ppPj0wOy0temkpcW5bQW98emk8PHBvXT03JnBvfGdpPDwzfXZhciBlcz1bXTtmb3IoTXI9MTtlcy5sZW5ndGg8c24rVnQ7KXN3aXRjaChBbz1xblt5cyhvbixtbildLG1uKz03JkFvLEFvPj4+PTMpe2Nhc2UgMTY6Zm9yKHVuPTMrRW8ob24sbW4pLG1uKz0yLEFv''@;'; put 'put ''PWVzW2VzLmxlbmd0aC0xXTt1bi0tID4wOyllcy5wdXNoKEFvKTticmVhaztjYXNlIDE3OmZvcih1bj0zK2FpKG9uLG1uKSxtbis9Mzt1bi0tID4wOyllcy5wdXNoKDApO2JyZWFrO2Nhc2UgMTg6Zm9yKHVuPTExK3lzKG9uLG1uKSxtbis9Nzt1bi0tID4wOyllcy5wdXNoKDApO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6ZXMucHVzaChBbyksTXI8QW8mJihNcj1Bbyl9dmFyIFlzPWVzLnNsaWNlKDAsc24pLEMwPWVzLnNsaWNlKHNuKTtmb3IoZ2k9c247Z2k8Mjg2OysrZ2kpWXNbZ2ldPTA7Zm9yKGdpPVZ0O2dpPDMwOysrZ2kpQzBbZ2ldPTA7cmV0dXJuIG5pPVJjKFlzLExuLDI4NiksYXI9UmMoQzAs''@;'; put 'put ''WHIsMzApLG1ufWZ1bmN0aW9uIG9pKG9uLG1uKXt2YXIgVnQ9ZnVuY3Rpb24gYm8ob24sbW4pe2lmKDM9PW9uWzBdJiYhKDMmb25bMV0pKXJldHVybltXKG1uKSwyXTtmb3IodmFyIHNuPTAsVnQ9MCxHdD1iKG1ufHwxPDwxOCksdW49MCxSbj1HdC5sZW5ndGg+Pj4wLHRyPTAsTXI9MDshKDEm''@;'; put 'put ''VnQpOylpZihWdD1haShvbixzbiksc24rPTMsVnQ+Pj4xKWZvcihWdD4+PjE9PTE/KHRyPTksTXI9NSk6KHNuPXJpKG9uLHNuKSx0cj1uaSxNcj1hciksIW1uJiZSbjx1biszMjc2NyYmKFJuPShHdD1sbChHdCx1biszMjc2NykpLmxlbmd0aCk7Oyl7dmFyIExyPXVyKG9uLHNuLHRyKSxTaT1W''@;'; put 'put ''dD4+PjE9PTE/T2FbTHJdOkxuW0xyXTtpZihzbis9MTUmU2ksKFNpPj4+PTQpPj4+OCYyNTUpe2lmKDI1Nj09U2kpYnJlYWs7dmFyIGdpPShTaS09MjU3KTw4PzA6U2ktND4+MjtnaT41JiYoZ2k9MCk7dmFyIEFvPXVuK3FyW1NpXTtnaT4wJiYoQW8rPXVyKG9uLHNuLGdpKSxzbis9Z2kpLExy''@;'; put 'put ''PXVyKG9uLHNuLE1yKSxzbis9MTUmKFNpPVZ0Pj4+MT09MT9xdFtMcl06WHJbTHJdKTt2YXIgcG89KFNpPj4+PTQpPDQ/MDpTaS0yPj4xLHppPVVpW1NpXTtmb3IocG8+MCYmKHppKz11cihvbixzbixwbyksc24rPXBvKSwhbW4mJlJuPEFvJiYoUm49KEd0PWxsKEd0LEFvKSkubGVuZ3RoKTt1''@;'; put 'put ''bjxBbzspR3RbdW5dPUd0W3VuLXppXSwrK3VufWVsc2UgR3RbdW4rK109U2l9ZWxzZXs3JnNuJiYoc24rPTgtKDcmc24pKTt2YXIgRnI9b25bc24+Pj4zXXxvblsxKyhzbj4+PjMpXTw8ODtpZihzbis9MzIsIW1uJiZSbjx1bitGciYmKFJuPShHdD1sbChHdCx1bitGcikpLmxlbmd0aCksImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIG9uLmNvcHkpb24uY29weShHdCx1bixzbj4+PjMsKHNuPj4+MykrRnIpLHVuKz1Gcixzbis9OCpGcjtlbHNlIGZvcig7RnItLSA+MDspR3RbdW4rK109b25bc24+Pj4zXSxzbis9OH1yZXR1cm5bbW4/R3Q6R3Quc2xpY2UoMCx1biksc24rNz4+PjNdfShvbi5zbGlj''@;'; put 'put ''ZShvbi5sfHwwKSxtbik7cmV0dXJuIG9uLmwrPVZ0WzFdLFZ0WzBdfWZ1bmN0aW9uIFZpKG9uLG1uKXtpZighb24pdGhyb3cgbmV3IEVycm9yKG1uKTt0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUuZXJyb3IobW4pfWZ1bmN0aW9uIFFyKG9uLG1uKXt2YXIgc249b247Z3Moc24sMCk7dmFy''@;'; put 'put ''IHVuPXtGaWxlSW5kZXg6W10sRnVsbFBhdGhzOltdfTtjbih1bix7cm9vdDptbi5yb290fSk7Zm9yKHZhciBSbj1zbi5sZW5ndGgtNDsoODAhPXNuW1JuXXx8NzUhPXNuW1JuKzFdfHw1IT1zbltSbisyXXx8NiE9c25bUm4rM10pJiZSbj49MDspLS1Sbjtzbi5sPVJuKzQsc24ubCs9NDt2YXIg''@;'; put 'put ''dHI9c24ucmVhZF9zaGlmdCgyKTtzbi5sKz02O3ZhciBNcj1zbi5yZWFkX3NoaWZ0KDQpO2Zvcihzbi5sPU1yLFJuPTA7Um48dHI7KytSbil7c24ubCs9MjA7dmFyIEZyPXNuLnJlYWRfc2hpZnQoNCksTHI9c24ucmVhZF9zaGlmdCg0KSxTaT1zbi5yZWFkX3NoaWZ0KDIpLGdpPXNuLnJlYWRf''@;'; put 'put ''c2hpZnQoMiksQW89c24ucmVhZF9zaGlmdCgyKTtzbi5sKz04O3ZhciBwbz1zbi5yZWFkX3NoaWZ0KDQpLHppPXZlKHNuLnNsaWNlKHNuLmwrU2ksc24ubCtTaStnaSkpO3NuLmwrPVNpK2dpK0FvO3ZhciBlcz1zbi5sO3NuLmw9cG8rNCxQcyhzbixGcixMcix1bix6aSksc24ubD1lc31yZXR1''@;'; put 'put ''cm4gdW59ZnVuY3Rpb24gUHMob24sbW4sc24sVnQsR3Qpe29uLmwrPTI7dmFyIHVuPW9uLnJlYWRfc2hpZnQoMiksUm49b24ucmVhZF9zaGlmdCgyKSx0cj1mdW5jdGlvbiBiZShvbil7dmFyIG1uPTY1NTM1Jm9uLnJlYWRfc2hpZnQoMiksc249NjU1MzUmb24ucmVhZF9zaGlmdCgyKSxWdD1u''@;'; put 'put ''ZXcgRGF0ZSxHdD0zMSZzbix1bj0xNSYoc24+Pj49NSk7c24+Pj49NCxWdC5zZXRNaWxsaXNlY29uZHMoMCksVnQuc2V0RnVsbFllYXIoc24rMTk4MCksVnQuc2V0TW9udGgodW4tMSksVnQuc2V0RGF0ZShHdCk7dmFyIFJuPTMxJm1uLHRyPTYzJihtbj4+Pj01KTtyZXR1cm4gVnQuc2V0SG91''@;'; put 'put ''cnMobW4+Pj49NiksVnQuc2V0TWludXRlcyh0ciksVnQuc2V0U2Vjb25kcyhSbjw8MSksVnR9KG9uKTtpZig4MjU3JnVuKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIGVuY3J5cHRpb24iKTtmb3IodmFyIE1yPW9uLnJlYWRfc2hpZnQoNCksRnI9b24ucmVhZF9zaGlmdCg0KSxM''@;'; put 'put ''cj1vbi5yZWFkX3NoaWZ0KDQpLFNpPW9uLnJlYWRfc2hpZnQoMiksZ2k9b24ucmVhZF9zaGlmdCgyKSxBbz0iIixwbz0wO3BvPFNpOysrcG8pQW8rPVN0cmluZy5mcm9tQ2hhckNvZGUob25bb24ubCsrXSk7aWYoZ2kpe3ZhciB6aT12ZShvbi5zbGljZShvbi5sLG9uLmwrZ2kpKTsoemlbMjE1''@;'; put 'put ''ODldfHx7fSkubXQmJih0cj16aVsyMTU4OV0ubXQpLCgoR3R8fHt9KVsyMTU4OV18fHt9KS5tdCYmKHRyPUd0WzIxNTg5XS5tdCl9b24ubCs9Z2k7dmFyIGVzPW9uLnNsaWNlKG9uLmwsb24ubCtGcik7c3dpdGNoKFJuKXtjYXNlIDg6ZXM9ZnVuY3Rpb24gRW4ob24sbW4pe2lmKCF3cilyZXR1''@;'; put 'put ''cm4gb2kob24sbW4pO3ZhciBWdD1uZXcoMCx3ci5JbmZsYXRlUmF3KSxHdD1WdC5fcHJvY2Vzc0NodW5rKG9uLnNsaWNlKG9uLmwpLFZ0Ll9maW5pc2hGbHVzaEZsYWcpO3JldHVybiBvbi5sKz1WdC5ieXRlc1JlYWQsR3R9KG9uLExyKTticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJv''@;'; put 'put ''dyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBDb21wcmVzc2lvbiBtZXRob2QgIitSbil9dmFyIFlzPSExOzgmdW4mJigxMzQ2OTU3NjA9PShNcj1vbi5yZWFkX3NoaWZ0KDQpKSYmKE1yPW9uLnJlYWRfc2hpZnQoNCksWXM9ITApLEZyPW9uLnJlYWRfc2hpZnQoNCksTHI9b24ucmVhZF9z''@;'; put 'put ''aGlmdCg0KSksRnIhPW1uJiZWaShZcywiQmFkIGNvbXByZXNzZWQgc2l6ZTogIittbisiICE9ICIrRnIpLExyIT1zbiYmVmkoWXMsIkJhZCB1bmNvbXByZXNzZWQgc2l6ZTogIitzbisiICE9ICIrTHIpO3ZhciBDMD14ZS5idWYoZXMsMCk7KDB8TXIpIT0oMHxDMCkmJlZpKFlzLCJCYWQgQ1JD''@;'; put 'put ''MzIgY2hlY2tzdW06ICIrTXIrIiAhPSAiK0MwKSxMYyhWdCxBbyxlcyx7dW5zYWZlOiEwLG10OnRyfSl9ZnVuY3Rpb24gTGMob24sbW4sc24sVnQpe3ZhciBHdD1WdCYmVnQudW5zYWZlO0d0fHxjbihvbik7dmFyIHVuPSFHdCYmRGUuZmluZChvbixtbik7aWYoIXVuKXt2YXIgUm49b24uRnVs''@;'; put 'put ''bFBhdGhzWzBdO21uLnNsaWNlKDAsUm4ubGVuZ3RoKT09Um4/Um49bW46KCIvIiE9Um4uc2xpY2UoLTEpJiYoUm4rPSIvIiksUm49KFJuK21uKS5yZXBsYWNlKCIvLyIsIi8iKSksdW49e25hbWU6bmUobW4pLHR5cGU6Mn0sb24uRmlsZUluZGV4LnB1c2godW4pLG9uLkZ1bGxQYXRocy5wdXNo''@;'; put 'put ''KFJuKSxHdHx8RGUudXRpbHMuY2ZiX2djKG9uKX1yZXR1cm4gdW4uY29udGVudD1zbix1bi5zaXplPXNuP3NuLmxlbmd0aDowLFZ0JiYoVnQuQ0xTSUQmJih1bi5jbHNpZD1WdC5DTFNJRCksVnQubXQmJih1bi5tdD1WdC5tdCksVnQuY3QmJih1bi5jdD1WdC5jdCkpLHVufXJldHVybiBQLmZp''@;'; put 'put ''bmQ9ZnVuY3Rpb24gUW4ob24sbW4pe3ZhciBzbj1vbi5GdWxsUGF0aHMubWFwKGZ1bmN0aW9uKE1yKXtyZXR1cm4gTXIudG9VcHBlckNhc2UoKX0pLFZ0PXNuLm1hcChmdW5jdGlvbihNcil7dmFyIEZyPU1yLnNwbGl0KCIvIik7cmV0dXJuIEZyW0ZyLmxlbmd0aC0oIi8iPT1Nci5zbGljZSgt''@;'; put 'put ''MSk/MjoxKV19KSxHdD0hMTs0Nz09PW1uLmNoYXJDb2RlQXQoMCk/KEd0PSEwLG1uPXNuWzBdLnNsaWNlKDAsLTEpK21uKTpHdD0tMSE9PW1uLmluZGV4T2YoIi8iKTt2YXIgdW49bW4udG9VcHBlckNhc2UoKSxSbj0hMD09PUd0P3NuLmluZGV4T2YodW4pOlZ0LmluZGV4T2YodW4pO2lmKC0x''@;'; put 'put ''IT09Um4pcmV0dXJuIG9uLkZpbGVJbmRleFtSbl07dmFyIHRyPSF1bi5tYXRjaChwKTtmb3IodW49dW4ucmVwbGFjZShfLCIiKSx0ciYmKHVuPXVuLnJlcGxhY2UocCwiISIpKSxSbj0wO1JuPHNuLmxlbmd0aDsrK1JuKWlmKCh0cj9zbltSbl0ucmVwbGFjZShwLCIhIik6c25bUm5dKS5yZXBs''@;'; put 'put ''YWNlKF8sIiIpPT11bnx8KHRyP1Z0W1JuXS5yZXBsYWNlKHAsIiEiKTpWdFtSbl0pLnJlcGxhY2UoXywiIik9PXVuKXJldHVybiBvbi5GaWxlSW5kZXhbUm5dO3JldHVybiBudWxsfSxQLnJlYWQ9ZnVuY3Rpb24gJG4ob24sbW4pe3N3aXRjaChtbiYmbW4udHlwZXx8ImJhc2U2NCIpe2Nhc2Ui''@;'; put 'put ''ZmlsZSI6cmV0dXJuIGZ1bmN0aW9uIGduKG9uLG1uKXtyZXR1cm4gVmUoKSx6ZSh5ZS5yZWFkRmlsZVN5bmMob24pLG1uKX0ob24sbW4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gemUoQShpZS5kZWNvZGUob24pKSxtbik7Y2FzZSJiaW5hcnkiOnJldHVybiB6ZShBKG9uKSxtbil9cmV0dXJuIHpl''@;'; put 'put ''KG9uLG1uKX0sUC5wYXJzZT16ZSxQLndyaXRlPWZ1bmN0aW9uIEFuKG9uLG1uKXt2YXIgc249RG4ob24sbW4pO3N3aXRjaChtbiYmbW4udHlwZSl7Y2FzZSJmaWxlIjpyZXR1cm4gVmUoKSx5ZS53cml0ZUZpbGVTeW5jKG1uLmZpbGVuYW1lLHNuKSxzbjtjYXNlImJpbmFyeSI6cmV0dXJuIGZy''@;'; put 'put ''KHNuKTtjYXNlImJhc2U2NCI6cmV0dXJuIGllLmVuY29kZShmcihzbikpfXJldHVybiBzbn0sUC53cml0ZUZpbGU9ZnVuY3Rpb24gdGkob24sbW4sc24pe1ZlKCk7dmFyIFZ0PURuKG9uLHNuKTt5ZS53cml0ZUZpbGVTeW5jKG1uLFZ0KX0sUC51dGlscz17Y2ZiX25ldzpmdW5jdGlvbiBQYShv''@;'; put 'put ''bil7dmFyIG1uPXt9O3JldHVybiBjbihtbixvbiksbW59LGNmYl9hZGQ6TGMsY2ZiX2RlbDpmdW5jdGlvbiBGYShvbixtbil7Y24ob24pO3ZhciBzbj1EZS5maW5kKG9uLG1uKTtpZihzbilmb3IodmFyIFZ0PTA7VnQ8b24uRmlsZUluZGV4Lmxlbmd0aDsrK1Z0KWlmKG9uLkZpbGVJbmRleFtW''@;'; put 'put ''dF09PXNuKXJldHVybiBvbi5GaWxlSW5kZXguc3BsaWNlKFZ0LDEpLG9uLkZ1bGxQYXRocy5zcGxpY2UoVnQsMSksITA7cmV0dXJuITF9LGNmYl9tb3Y6ZnVuY3Rpb24gUDIob24sbW4sc24pe2NuKG9uKTt2YXIgVnQ9RGUuZmluZChvbixtbik7aWYoVnQpZm9yKHZhciBHdD0wO0d0PG9uLkZp''@;'; put 'put ''bGVJbmRleC5sZW5ndGg7KytHdClpZihvbi5GaWxlSW5kZXhbR3RdPT1WdClyZXR1cm4gb24uRmlsZUluZGV4W0d0XS5uYW1lPW5lKHNuKSxvbi5GdWxsUGF0aHNbR3RdPXNuLCEwO3JldHVybiExfSxjZmJfZ2M6ZnVuY3Rpb24gSTEob24pe0JuKG9uLCEwKX0sUmVhZFNoaWZ0OlJpLENoZWNr''@;'; put 'put ''RmllbGQ6WHUscHJlcF9ibG9iOmdzLGJjb25jYXQ6ayx1c2VfemxpYjpmdW5jdGlvbiBycihvbil7dHJ5e3ZhciBzbj1uZXcoMCxvbi5JbmZsYXRlUmF3KTtpZihzbi5fcHJvY2Vzc0NodW5rKG5ldyBVaW50OEFycmF5KFszLDBdKSxzbi5fZmluaXNoRmx1c2hGbGFnKSwhc24uYnl0ZXNSZWFk''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkIik7d3I9b259Y2F0Y2goVnQpe2NvbnNvbGUuZXJyb3IoImNhbm5vdCB1c2UgbmF0aXZlIHpsaWI6ICIrKFZ0Lm1lc3NhZ2V8fFZ0KSl9fSxfZGVmbGF0ZVJhdzp0bCxfaW5mbGF0ZVJhdzpvaSxjb25zdHM6''@;'; put 'put ''T2l9LFB9KCk7dHJ5e0JlPVIoODMzMzcpfWNhdGNoe31mdW5jdGlvbiBHZSh5KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHk/Rih5KTpBcnJheS5pc0FycmF5KHkpP2Z1bmN0aW9uIGcoeSl7aWYodHlwZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQiKTty''@;'; put 'put ''ZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeSl9KHkpOnl9ZnVuY3Rpb24gVWUoeSxQLEwpe2lmKHR5cGVvZiBCZTwidSImJkJlLndyaXRlRmlsZVN5bmMpcmV0dXJuIEw/QmUud3JpdGVGaWxlU3luYyh5LFAsTCk6QmUud3JpdGVGaWxlU3luYyh5LFApO3ZhciBYPSJ1dGY4Ij09TD96byhQKTpQO2lm''@;'; put 'put ''KHR5cGVvZiBJRV9TYXZlRmlsZTwidSIpcmV0dXJuIElFX1NhdmVGaWxlKFgseSk7aWYodHlwZW9mIEJsb2I8InUiKXt2YXIgbmU9bmV3IEJsb2IoW0dlKFgpXSx7dHlwZToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn0pO2lmKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IubXNT''@;'; put 'put ''YXZlQmxvYilyZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZUJsb2IobmUseSk7aWYodHlwZW9mIHNhdmVBczwidSIpcmV0dXJuIHNhdmVBcyhuZSx5KTtpZih0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3JlYXRlRWxlbWVudCYmVVJMLmNyZWF0ZU9iamVjdFVS''@;'; put 'put ''TCl7dmFyIGZlPVVSTC5jcmVhdGVPYmplY3RVUkwobmUpO2lmKCJvYmplY3QiPT10eXBlb2YgY2hyb21lJiYiZnVuY3Rpb24iPT10eXBlb2YoY2hyb21lLmRvd25sb2Fkc3x8e30pLmRvd25sb2FkKXJldHVybiBVUkwucmV2b2tlT2JqZWN0VVJMJiZ0eXBlb2Ygc2V0VGltZW91dDwidSImJnNl''@;'; put 'put ''dFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKGZlKX0sNmU0KSxjaHJvbWUuZG93bmxvYWRzLmRvd25sb2FkKHt1cmw6ZmUsZmlsZW5hbWU6eSxzYXZlQXM6ITB9KTt2YXIgYmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2lmKG51bGwhPWJlLmRvd25sb2FkKXJl''@;'; put 'put ''dHVybiBiZS5kb3dubG9hZD15LGJlLmhyZWY9ZmUsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiZSksYmUuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGJlKSxVUkwucmV2b2tlT2JqZWN0VVJMJiZ0eXBlb2Ygc2V0VGltZW91dDwidSImJnNldFRpbWVvdXQoZnVuY3Rpb24o''@;'; put 'put ''KXtVUkwucmV2b2tlT2JqZWN0VVJMKGZlKX0sNmU0KSxmZX19aWYodHlwZW9mICQ8InUiJiZ0eXBlb2YgRmlsZTwidSImJnR5cGVvZiBGb2xkZXI8InUiKXRyeXt2YXIgdmU9RmlsZSh5KTtyZXR1cm4gdmUub3BlbigidyIpLHZlLmVuY29kaW5nPSJiaW5hcnkiLEFycmF5LmlzQXJyYXkoUCkm''@;'; put 'put ''JihQPUgoUCkpLHZlLndyaXRlKFApLHZlLmNsb3NlKCksUH1jYXRjaCh5ZSl7aWYoIXllLm1lc3NhZ2V8fCF5ZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKXRocm93IHllfXRocm93IG5ldyBFcnJvcigiY2Fubm90IHNhdmUgZmlsZSAiK3kpfWZ1bmN0aW9uIG90KHkpe2Zvcih2YXIgUD1P''@;'; put 'put ''YmplY3Qua2V5cyh5KSxMPVtdLFg9MDtYPFAubGVuZ3RoOysrWClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeSxQW1hdKSYmTC5wdXNoKFBbWF0pO3JldHVybiBMfWZ1bmN0aW9uIEZlKHksUCl7Zm9yKHZhciBMPVtdLFg9b3QoeSksbmU9MDtuZSE9PVgubGVuZ3RoOysr''@;'; put 'put ''bmUpbnVsbD09TFt5W1hbbmVdXVtQXV0mJihMW3lbWFtuZV1dW1BdXT1YW25lXSk7cmV0dXJuIEx9ZnVuY3Rpb24gd2UoeSl7Zm9yKHZhciBQPVtdLEw9b3QoeSksWD0wO1ghPT1MLmxlbmd0aDsrK1gpUFt5W0xbWF1dXT1MW1hdO3JldHVybiBQfWZ1bmN0aW9uIEVlKHkpe2Zvcih2YXIgUD1b''@;'; put 'put ''XSxMPW90KHkpLFg9MDtYIT09TC5sZW5ndGg7KytYKVBbeVtMW1hdXV09cGFyc2VJbnQoTFtYXSwxMCk7cmV0dXJuIFB9dmFyIFplLGN0LFhlPW5ldyBEYXRlKDE4OTksMTEsMzAsMCwwLDApLHR0PTA7ZnVuY3Rpb24ga2UoKXt0dD1YZS5nZXRUaW1lKCkrNmU0KigobmV3IERhdGUpLmdldFRp''@;'; put 'put ''bWV6b25lT2Zmc2V0KCktWGUuZ2V0VGltZXpvbmVPZmZzZXQoKSksWmU9ZnVuY3Rpb24oUCxMKXt2YXIgWD1QLmdldFRpbWUoKTtyZXR1cm4gTCYmKFgtPTEyNjMxNjhlNSksKFgtdHQpLzg2NGU1fSxjdD1mdW5jdGlvbihQKXt2YXIgTD1uZXcgRGF0ZTtyZXR1cm4gTC5zZXRUaW1lKDI0KlAq''@;'; put 'put ''NjAqNjAqMWUzK3R0KSxMfX1mdW5jdGlvbiBpdCh5KXt2YXIgUD0wLEw9MCxYPSExLG5lPXkubWF0Y2goL1AoWzAtOVwuXStZKT8oWzAtOVwuXStNKT8oWzAtOVwuXStEKT9UKFswLTlcLl0rSCk/KFswLTlcLl0rTSk/KFswLTlcLl0rUyk/Lyk7aWYoIW5lKXRocm93IG5ldyBFcnJvcigifCIr''@;'; put 'put ''eSsifCBpcyBub3QgYW4gSVNPODYwMSBEdXJhdGlvbiIpO2Zvcih2YXIgZmU9MTtmZSE9bmUubGVuZ3RoOysrZmUpaWYobmVbZmVdKXtzd2l0Y2goTD0xLGZlPjMmJihYPSEwKSxuZVtmZV0uc2xpY2UobmVbZmVdLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9y''@;'; put 'put ''dGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIituZVtmZV0uc2xpY2UobmVbZmVdLmxlbmd0aC0xKSk7Y2FzZSJEIjpMKj0yNDtjYXNlIkgiOkwqPTYwO2Nhc2UiTSI6aWYoIVgpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE0iKTtMKj02MH1QKz1MKnBh''@;'; put 'put ''cnNlSW50KG5lW2ZlXSwxMCl9cmV0dXJuIFB9a2UoKTt2YXIgc3Q9bmV3IERhdGUoIjIwMTctMDItMTlUMTk6MDY6MDkuMDAwWiIpO2lzTmFOKHN0LmdldEZ1bGxZZWFyKCkpJiYoc3Q9bmV3IERhdGUoIjIvMTkvMTciKSk7dmFyIHh0PTIwMTc9PXN0LmdldEZ1bGxZZWFyKCk7ZnVuY3Rpb24g''@;'; put 'put ''RnQoeSxQKXt2YXIgTD1uZXcgRGF0ZSh5KTtpZih4dClyZXR1cm4gUD4wP0wuc2V0VGltZShMLmdldFRpbWUoKSs2MCpMLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKTpQPDAmJkwuc2V0VGltZShMLmdldFRpbWUoKS02MCpMLmdldFRpbWV6b25lT2Zmc2V0KCkqMWUzKSxMO2lmKHkgaW5zdGFu''@;'; put 'put ''Y2VvZiBEYXRlKXJldHVybiB5O2lmKDE5MTc9PXN0LmdldEZ1bGxZZWFyKCkmJiFpc05hTihMLmdldEZ1bGxZZWFyKCkpKXt2YXIgWD1MLmdldEZ1bGxZZWFyKCk7cmV0dXJuIHkuaW5kZXhPZigiIitYKT4tMXx8TC5zZXRGdWxsWWVhcihMLmdldEZ1bGxZZWFyKCkrMTAwKSxMfXZhciBuZT15''@;'; put 'put ''Lm1hdGNoKC9cZCsvZyl8fFsiMjAxNyIsIjIiLCIxOSIsIjAiLCIwIiwiMCJdLGZlPW5ldyBEYXRlKCtuZVswXSwrbmVbMV0tMSwrbmVbMl0sK25lWzNdfHwwLCtuZVs0XXx8MCwrbmVbNV18fDApO3JldHVybiB5LmluZGV4T2YoIloiKT4tMSYmKGZlPW5ldyBEYXRlKGZlLmdldFRpbWUoKS02''@;'; put 'put ''MCpmZS5nZXRUaW1lem9uZU9mZnNldCgpKjFlMykpLGZlfWZ1bmN0aW9uIE90KHkpe2Zvcih2YXIgUD0iIixMPTA7TCE9eS5sZW5ndGg7KytMKVArPVN0cmluZy5mcm9tQ2hhckNvZGUoeVtMXSk7cmV0dXJuIFB9ZnVuY3Rpb24gS3QoeSl7aWYoIm9iamVjdCIhPXR5cGVvZiB5fHxudWxsPT15''@;'; put 'put ''KXJldHVybiB5O2lmKHkgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZSh5LmdldFRpbWUoKSk7aWYoQXJyYXkuaXNBcnJheSh5KSlyZXR1cm4gZnVuY3Rpb24gYm4oeSl7Zm9yKHZhciBQPVtdLEw9MDtMPHkubGVuZ3RoOysrTCl7dmFyIFg9eVtMXTsib2JqZWN0Ij09dHlwZW9mIFg/''@;'; put 'put ''UFtMXT1LdChYKTpudWxsIT1YJiYoUFtMXT1YKX1yZXR1cm4gUH0oeSk7dmFyIFA9e307Zm9yKHZhciBMIGluIHkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHksTCkmJihQW0xdPUt0KHlbTF0pKTtyZXR1cm4gUH1mdW5jdGlvbiBCdCh5LFApe2lmKCJvYmplY3QiIT10''@;'; put 'put ''eXBlb2YgUHx8bnVsbD09UClyZXR1cm4geTtmb3IodmFyIEwgaW4gUClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUCxMKSYmKHlbTF09S3QoUFtMXSkpO3JldHVybiB5fWZ1bmN0aW9uIHluKHksUCl7Zm9yKHZhciBMPSIiO0wubGVuZ3RoPFA7KUwrPXk7cmV0dXJuIEx9''@;'; put 'put ''ZnVuY3Rpb24gTm4oeSl7dmFyIFA9TnVtYmVyKHkpO2lmKCFpc05hTihQKSlyZXR1cm4gaXNGaW5pdGUoUCk/UDpOYU47aWYoIS9cZC8udGVzdCh5KSlyZXR1cm4gUDt2YXIgTD0xLFg9eS5yZXBsYWNlKC8oW1xkXSksKFtcZF0pL2csIiQxJDIiKS5yZXBsYWNlKC9bJF0vZywiIikucmVwbGFj''@;'; put 'put ''ZSgvWyVdL2csZnVuY3Rpb24oKXtyZXR1cm4gTCo9MTAwLCIifSk7cmV0dXJuIGlzTmFOKFA9TnVtYmVyKFgpKSYmKFg9WC5yZXBsYWNlKC9bKF0oLiopWyldLyxmdW5jdGlvbihuZSxmZSl7cmV0dXJuIEw9LUwsZmV9KSxpc05hTihQPU51bWJlcihYKSkpP1A6UC9MfWZ1bmN0aW9uIG5uKHkp''@;'; put 'put ''e3ZhciBQPW5ldyBEYXRlKHkpLEw9bmV3IERhdGUoTmFOKSxYPVAuZ2V0WWVhcigpLG5lPVAuZ2V0TW9udGgoKSxmZT1QLmdldERhdGUoKTtyZXR1cm4gaXNOYU4oZmUpfHxYPDB8fFg+ODA5OT9MOihuZT4wfHxmZT4xKSYmMTAxIT1YfHx5LnRvTG93ZXJDYXNlKCkubWF0Y2goL2phbnxmZWJ8''@;'; put 'put ''bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLyk/UDp5Lm1hdGNoKC9bXi0wLTk6LFwvXFxdLyk/TDpQfWZ1bmN0aW9uIEduKHksUCl7aWYoUCYmUC5yYXcpcmV0dXJue3Q6InMiLHY6eX07aWYoIXkpcmV0dXJue3Q6InoifTtpZigiVFJVRSI9PT15KXJldHVybnt0OiJi''@;'; put 'put ''Iix2OiEwfTtpZigiRkFMU0UiPT09eSlyZXR1cm57dDoiYiIsdjohMX07dmFyIEw9IiIsWD1OdW1iZXIoeSk7aWYoaXNGaW5pdGUoWCkpcmV0dXJue3Q6Im4iLHY6WH07aWYoaXNOYU4oWCkmJi9cZC8udGVzdCh5KSl7dmFyIG5lPTEsZmU9eS5yZXBsYWNlKC8oW1xkXSksKFtcZF0pL2csZnVu''@;'; put 'put ''Y3Rpb24ocnQsbHQsQ3Qpe3JldHVybiBMfHwoTD0iIywjIzAiKSxsdCtDdH0pLnJlcGxhY2UoL1skXS9nLCIiKS5yZXBsYWNlKC9cLlxkKi8sZnVuY3Rpb24ocnQpe0x8fChMPSIwIiksTCs9Ii4iO2Zvcih2YXIgbHQ9MjtsdDw9cnQubGVuZ3RoOysrbHQpTCs9IjAiO3JldHVybiBydH0pLnJl''@;'; put 'put ''cGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIG5lKj0xMDAsTHx8KEw9IjAiKSxMKz0iJSIsIiJ9KTtpZighaXNOYU4oWD1OdW1iZXIoZmUpKSlyZXR1cm57dDoibiIsdjpYL25lLHo6TH07aWYoZmU9ZmUucmVwbGFjZSgvWyhdKC4qKVspXS8sZnVuY3Rpb24ocnQsbHQpe3JldHVybiBu''@;'; put 'put ''ZT0tbmUsbHR9KSwhaXNOYU4oWD1OdW1iZXIoZmUpKSlyZXR1cm57dDoibiIsdjpYL25lLHo6KEx8fCIwIikrIl8pOygiKyhMfHwiMCIpKyIpO0AifX1lOmlmKCFQfHwhUC5yYXdEYXRlcyl7dmFyIGJlPVAmJlAuY2VsbERhdGVzLHZlPW5ldyBEYXRlKHkpLFZlPXZlLmdldFllYXIoKSx6ZT12''@;'; put 'put ''ZS5nZXRNb250aCgpLFdlPXZlLmdldERhdGUoKTtpZihpc05hTihXZSl8fFZlPDB8fFZlPjgwOTkpYnJlYWsgZTtpZigoemU+MHx8V2U+MSkmJjEwMSE9VmUpcmV0dXJue3Q6YmU/ImQiOiJuIix2OmJlP3ZlOlplKHZlKSx6OlAuZGF0ZU5GfHx3Ll90YWJsZVsxNF19O2lmKHkudG9Mb3dlckNh''@;'; put 'put ''c2UoKS5tYXRjaCgvamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMvKSlyZXR1cm57dDpiZT8iZCI6Im4iLHY6YmU/dmU6WmUodmUpLHo6UC5kYXRlTkZ8fHcuX3RhYmxlWzE0XX07aWYoeS5tYXRjaCgvW14tMC05OixcL1xcXS8pKWJyZWFrIGU7cmV0dXJu''@;'; put 'put ''IHZlfXJldHVybnt0OiJzIix2Onl9fXZhciB6dCxZbj01PT0iYWJhY2FiYSIuc3BsaXQoLyg6P2IpL2kpLmxlbmd0aDtmdW5jdGlvbiBobih5KXtyZXR1cm4gbnVsbCE9eSYmIXl9ZnVuY3Rpb24gd3QoeSl7cmV0dXJuIHkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkreS5zbGljZSgxKX1mdW5j''@;'; put 'put ''dGlvbiBqdCh5KXtyZXR1cm4geT95LmRhdGE/VSh5LmRhdGEpOnkuYXNOb2RlQnVmZmVyJiZ1ZT9VKHkuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTp5LmFzQmluYXJ5P1UoeS5hc0JpbmFyeSgpKTp5Ll9kYXRhJiZ5Ll9kYXRhLmdldENvbnRlbnQ/VShPdChBcnJheS5wcm90''@;'; put 'put ''b3R5cGUuc2xpY2UuY2FsbCh5Ll9kYXRhLmdldENvbnRlbnQoKSwwKSkpOnkuY29udGVudCYmeS50eXBlP1UoT3QoeS5jb250ZW50KSk6bnVsbDpudWxsfWZ1bmN0aW9uIG10KHkpe2lmKCF5KXJldHVybiBudWxsO2lmKHkuZGF0YSlyZXR1cm4gQih5LmRhdGEpO2lmKHkuYXNOb2RlQnVmZmVy''@;'; put 'put ''JiZ1ZSlyZXR1cm4geS5hc05vZGVCdWZmZXIoKTtpZih5Ll9kYXRhJiZ5Ll9kYXRhLmdldENvbnRlbnQpe3ZhciBQPXkuX2RhdGEuZ2V0Q29udGVudCgpO3JldHVybiJzdHJpbmciPT10eXBlb2YgUD9CKFApOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFApfXJldHVybiB5LmNvbnRlbnQm''@;'; put 'put ''JnkudHlwZT95LmNvbnRlbnQ6bnVsbH1mdW5jdGlvbiBwbih5LFApe2Zvcih2YXIgTD15LkZ1bGxQYXRoc3x8b3QoeS5maWxlcyksWD1QLnRvTG93ZXJDYXNlKCksbmU9WC5yZXBsYWNlKC9cLy9nLCJcXCIpLGZlPTA7ZmU8TC5sZW5ndGg7KytmZSl7dmFyIGJlPUxbZmVdLnRvTG93ZXJDYXNl''@;'; put 'put ''KCk7aWYoWD09YmV8fG5lPT1iZSlyZXR1cm4geS5maWxlc1tMW2ZlXV19cmV0dXJuIG51bGx9ZnVuY3Rpb24gbnQoeSxQKXt2YXIgTD1wbih5LFApO2lmKG51bGw9PUwpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBmaWxlICIrUCsiIGluIHppcCIpO3JldHVybiBMfWZ1bmN0aW9uIEV0''@;'; put 'put ''KHksUCxMKXtpZighTClyZXR1cm4gZnVuY3Rpb24gSHQoeSl7cmV0dXJuIHkmJiIuYmluIj09PXkubmFtZS5zbGljZSgtNCk/bXQoeSk6anQoeSl9KG50KHksUCkpO2lmKCFQKXJldHVybiBudWxsO3RyeXtyZXR1cm4gRXQoeSxQKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZW4oeSxQ''@;'; put 'put ''LEwpe2lmKCFMKXJldHVybiBqdChudCh5LFApKTtpZighUClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGVuKHksUCl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFR0KHksUCxMKXtpZighTClyZXR1cm4gbXQobnQoeSxQKSk7aWYoIVApcmV0dXJuIG51bGw7dHJ5e3JldHVybiBUdCh5LFAp''@;'; put 'put ''fWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiAkdCh5LFAsTCl7eS5GdWxsUGF0aHM/RGUudXRpbHMuY2ZiX2FkZCh5LFAsTCk6eS5maWxlKFAsTCl9ZnVuY3Rpb24gX24oKXtyZXR1cm4genQ/bmV3IHp0OkRlLnV0aWxzLmNmYl9uZXcoKX1mdW5jdGlvbiBPbih5LFApe3ZhciBMO2lmKHp0''@;'; put 'put ''KXN3aXRjaChQLnR5cGUpe2Nhc2UiYmFzZTY0IjpMPW5ldyB6dCh5LHtiYXNlNjQ6ITB9KTticmVhaztjYXNlImJpbmFyeSI6Y2FzZSJhcnJheSI6TD1uZXcgenQoeSx7YmFzZTY0OiExfSk7YnJlYWs7Y2FzZSJidWZmZXIiOkw9bmV3IHp0KHkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK1AudHlwZSl9ZWxzZSBzd2l0Y2goUC50eXBlKXtjYXNlImJhc2U2NCI6TD1EZS5yZWFkKHkse3R5cGU6ImJhc2U2NCJ9KTticmVhaztjYXNlImJpbmFyeSI6TD1EZS5yZWFkKHkse3R5cGU6ImJpbmFyeSJ9KTticmVhaztjYXNlImJ1ZmZlciI6Y2Fz''@;'; put 'put ''ZSJhcnJheSI6TD1EZS5yZWFkKHkse3R5cGU6ImJ1ZmZlciJ9KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitQLnR5cGUpfXJldHVybiBMfWZ1bmN0aW9uIHJuKHksUCl7aWYoIi8iPT15LmNoYXJBdCgwKSlyZXR1cm4geS5zbGljZSgxKTt2YXIg''@;'; put 'put ''TD1QLnNwbGl0KCIvIik7Ii8iIT1QLnNsaWNlKC0xKSYmTC5wb3AoKTtmb3IodmFyIFg9eS5zcGxpdCgiLyIpOzAhPT1YLmxlbmd0aDspe3ZhciBuZT1YLnNoaWZ0KCk7Ii4uIj09PW5lP0wucG9wKCk6Ii4iIT09bmUmJkwucHVzaChuZSl9cmV0dXJuIEwuam9pbigiLyIpfXR5cGVvZiBKU1pp''@;'; put 'put ''cFN5bmM8InUiJiYoenQ9SlNaaXBTeW5jKSxRZS5leHBvcnRzJiZ0eXBlb2YgenQ+InUiJiYoenQ9UigzMTc5KSk7dmFyIFBuPSc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+XHJcbicsQ249Lyg/OlteIlxzPz5cL10rKVxzKj1ccyooKD86''@;'; put 'put ''IikoPzpbXiJdKj8pKD86Iil8KD86JykoPzpbXiddKj8pKD86Jyl8KD86W14nIj5cc10rKSkvZyxYdD0vPFtcL1w/XT9bYS16QS1aMC05Ol8tXSsoPzpccytbXiJccz8+XC9dK1xzKj1ccyooPzoiW14iXSoifCdbXiddKid8W14nIj5ccz1dKykpKlxzP1tcL1w/XT8+L2c7UG4ubWF0Y2goWHQp''@;'; put 'put ''fHwoWHQ9LzxbXj5dKj4vZyk7dmFyIEpuPS88XHcqOi8seGk9LzwoXC8/KVx3KzovO2Z1bmN0aW9uIGFuKHksUCxMKXtmb3IodmFyIFg9e30sbmU9MCxmZT0wO25lIT09eS5sZW5ndGgmJjMyIT09KGZlPXkuY2hhckNvZGVBdChuZSkpJiYxMCE9PWZlJiYxMyE9PWZlOysrbmUpO2lmKFB8fChY''@;'; put 'put ''WzBdPXkuc2xpY2UoMCxuZSkpLG5lPT09eS5sZW5ndGgpcmV0dXJuIFg7dmFyIGJlPXkubWF0Y2goQ24pLHZlPTAseWU9IiIsVmU9MCx6ZT0iIixXZT0iIixydD0xO2lmKGJlKWZvcihWZT0wO1ZlIT1iZS5sZW5ndGg7KytWZSl7Zm9yKFdlPWJlW1ZlXSxmZT0wO2ZlIT1XZS5sZW5ndGgmJjYx''@;'; put 'put ''IT09V2UuY2hhckNvZGVBdChmZSk7KytmZSk7Zm9yKHplPVdlLnNsaWNlKDAsZmUpLnRyaW0oKTszMj09V2UuY2hhckNvZGVBdChmZSsxKTspKytmZTtmb3IocnQ9MzQ9PShuZT1XZS5jaGFyQ29kZUF0KGZlKzEpKXx8Mzk9PW5lPzE6MCx5ZT1XZS5zbGljZShmZSsxK3J0LFdlLmxlbmd0aC1y''@;'; put 'put ''dCksdmU9MDt2ZSE9emUubGVuZ3RoJiY1OCE9PXplLmNoYXJDb2RlQXQodmUpOysrdmUpO2lmKHZlPT09emUubGVuZ3RoKXplLmluZGV4T2YoIl8iKT4wJiYoemU9emUuc2xpY2UoMCx6ZS5pbmRleE9mKCJfIikpKSxYW3plXT15ZSxMfHwoWFt6ZS50b0xvd2VyQ2FzZSgpXT15ZSk7ZWxzZXt2''@;'; put 'put ''YXIgbHQ9KDU9PT12ZSYmInhtbG5zIj09PXplLnNsaWNlKDAsNSk/InhtbG5zIjoiIikremUuc2xpY2UodmUrMSk7aWYoWFtsdF0mJiJleHQiPT16ZS5zbGljZSh2ZS0zLHZlKSljb250aW51ZTtYW2x0XT15ZSxMfHwoWFtsdC50b0xvd2VyQ2FzZSgpXT15ZSl9fXJldHVybiBYfWZ1bmN0aW9u''@;'; put 'put ''IHRuKHkpe3JldHVybiB5LnJlcGxhY2UoeGksIjwkMSIpfXZhciB1aT17IiZxdW90OyI6JyInLCImYXBvczsiOiInIiwiJmd0OyI6Ij4iLCImbHQ7IjoiPCIsIiZhbXA7IjoiJiJ9LEFyPXdlKHVpKSxocj1mdW5jdGlvbigpe3ZhciB5PS8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xk''@;'; put 'put ''YS1mQS1GXSspKTsvZ2ksUD0vX3goW1xkYS1mQS1GXXs0fSlfL2dpO3JldHVybiBmdW5jdGlvbiBMKFgpe3ZhciBuZT1YKyIiLGZlPW5lLmluZGV4T2YoIjwhW0NEQVRBWyIpO2lmKC0xPT1mZSlyZXR1cm4gbmUucmVwbGFjZSh5LGZ1bmN0aW9uKHZlLHllKXtyZXR1cm4gdWlbdmVdfHxTdHJp''@;'; put 'put ''bmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHllLHZlLmluZGV4T2YoIngiKT4tMT8xNjoxMCkpfHx2ZX0pLnJlcGxhY2UoUCxmdW5jdGlvbih2ZSx5ZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoeWUsMTYpKX0pO3ZhciBiZT1uZS5pbmRleE9mKCJdXT4iKTtyZXR1cm4g''@;'; put 'put ''TChuZS5zbGljZSgwLGZlKSkrbmUuc2xpY2UoZmUrOSxiZSkrTChuZS5zbGljZShiZSszKSl9fSgpLGRpPS9bJjw+JyJdL2csZmk9L1tcdTAwMDAtXHUwMDA4XHUwMDBiLVx1MDAxZl0vZyxobz0vX3hbMC05YS1mQS1GXXs0fV8vZztmdW5jdGlvbiBicih5KXtyZXR1cm4oeSsiIikucmVwbGFj''@;'; put 'put ''ZShobywiX3gwMDVGJCYiKS5yZXBsYWNlKGRpLGZ1bmN0aW9uKEwpe3JldHVybiBBcltMXX0pLnJlcGxhY2UoZmksZnVuY3Rpb24oTCl7cmV0dXJuIl94IisoIjAwMCIrTC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpKyJfIn0pfWZ1bmN0aW9uIExpKHkpe3JldHVybiBi''@;'; put 'put ''cih5KS5yZXBsYWNlKC9cbi9nLCJfeDAwMGFfIil9ZnVuY3Rpb24gbG8oeSl7cmV0dXJuIGJyKHkpLnJlcGxhY2UoLyAvZywiX3gwMDIwXyIpfXZhciBVbj0vW1x1MDAwMC1cdTAwMWZdL2c7ZnVuY3Rpb24gWGkoeSl7cmV0dXJuKHkrIiIpLnJlcGxhY2UoZGksZnVuY3Rpb24oTCl7cmV0dXJu''@;'; put 'put ''IEFyW0xdfSkucmVwbGFjZSgvXG4vZywiPGJyLz4iKS5yZXBsYWNlKFVuLGZ1bmN0aW9uKEwpe3JldHVybiImI3giKygiMDAwIitMLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIjsifSl9ZnVuY3Rpb24gUWkoeSl7cmV0dXJuKHkrIiIpLnJlcGxhY2UoZGksZnVuY3Rp''@;'; put 'put ''b24oTCl7cmV0dXJuIEFyW0xdfSkucmVwbGFjZShVbixmdW5jdGlvbihMKXtyZXR1cm4iJiN4IitMLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkrIjsifSl9dmFyIGZvPWZ1bmN0aW9uKCl7dmFyIHk9LyYjKFxkKyk7L2c7ZnVuY3Rpb24gUChMLFgpe3JldHVybiBT''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KFgsMTApKX1yZXR1cm4gZnVuY3Rpb24oWCl7cmV0dXJuIFgucmVwbGFjZSh5LFApfX0oKSx2bz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihQKXtyZXR1cm4gUC5yZXBsYWNlKC8oXHJcbnxbXHJcbl0pL2csIiYjMTA7Iil9fSgpO2Z1bmN0''@;'; put 'put ''aW9uIFJyKHkpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSEwOmNhc2UiMSI6Y2FzZSJ0cnVlIjpjYXNlIlRSVUUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBZaT1mdW5jdGlvbihQKXtmb3IodmFyIEw9IiIsWD0wLG5lPTAsZmU9MCxiZT0wLHZlPTAseWU9MDtYPFAubGVuZ3RoOyko''@;'; put 'put ''bmU9UC5jaGFyQ29kZUF0KFgrKykpPDEyOD9MKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5lKTooZmU9UC5jaGFyQ29kZUF0KFgrKyksbmU+MTkxJiZuZTwyMjQ/KHZlPSgzMSZuZSk8PDYsdmV8PTYzJmZlLEwrPVN0cmluZy5mcm9tQ2hhckNvZGUodmUpKTooYmU9UC5jaGFyQ29kZUF0KFgrKyks''@;'; put 'put ''bmU8MjQwP0wrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1Jm5lKTw8MTJ8KDYzJmZlKTw8Nnw2MyZiZSk6KHllPSgoNyZuZSk8PDE4fCg2MyZmZSk8PDEyfCg2MyZiZSk8PDZ8NjMmKHZlPVAuY2hhckNvZGVBdChYKyspKSktNjU1MzYsTCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NisoeWU+''@;'; put 'put ''Pj4xMCYxMDIzKSksTCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NjMyMCsoMTAyMyZ5ZSkpKSkpO3JldHVybiBMfSx6bz1mdW5jdGlvbih5KXtmb3IodmFyIFA9W10sTD0wLFg9MCxuZT0wO0w8eS5sZW5ndGg7KXN3aXRjaChYPXkuY2hhckNvZGVBdChMKyspLCEwKXtjYXNlIFg8MTI4OlAucHVz''@;'; put 'put ''aChTdHJpbmcuZnJvbUNoYXJDb2RlKFgpKTticmVhaztjYXNlIFg8MjA0ODpQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxOTIrKFg+PjYpKSksUC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyg2MyZYKSkpO2JyZWFrO2Nhc2UgWD49NTUyOTYmJlg8NTczNDQ6WC09NTUyOTYsbmU9''@;'; put 'put ''eS5jaGFyQ29kZUF0KEwrKyktNTYzMjArKFg8PDEwKSxQLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyNDArKG5lPj4xOCY3KSkpLFAucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE0NCsobmU+PjEyJjYzKSkpLFAucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsobmU+PjYmNjMpKSks''@;'; put 'put ''UC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4Kyg2MyZuZSkpKTticmVhaztkZWZhdWx0OlAucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDIyNCsoWD4+MTIpKSksUC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KyhYPj42JjYzKSkpLFAucHVzaChTdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KDEyOCsoNjMmWCkpKX1yZXR1cm4gUC5qb2luKCIiKX07aWYodWUpe3ZhciBpcz1mdW5jdGlvbihQKXt2YXIgWCxuZSx5ZSxMPUJ1ZmZlci5hbGxvYygyKlAubGVuZ3RoKSxmZT0xLGJlPTAsdmU9MDtmb3IobmU9MDtuZTxQLmxlbmd0aDtuZSs9ZmUpZmU9MSwoeWU9UC5jaGFyQ29kZUF0KG5l''@;'; put 'put ''KSk8MTI4P1g9eWU6eWU8MjI0PyhYPTY0KigzMSZ5ZSkrKDYzJlAuY2hhckNvZGVBdChuZSsxKSksZmU9Mik6eWU8MjQwPyhYPTQwOTYqKDE1JnllKSs2NCooNjMmUC5jaGFyQ29kZUF0KG5lKzEpKSsoNjMmUC5jaGFyQ29kZUF0KG5lKzIpKSxmZT0zKTooZmU9NCxYPTI2MjE0NCooNyZ5ZSkr''@;'; put 'put ''NDA5NiooNjMmUC5jaGFyQ29kZUF0KG5lKzEpKSs2NCooNjMmUC5jaGFyQ29kZUF0KG5lKzIpKSsoNjMmUC5jaGFyQ29kZUF0KG5lKzMpKSx2ZT01NTI5NisoKFgtPTY1NTM2KT4+PjEwJjEwMjMpLFg9NTYzMjArKDEwMjMmWCkpLDAhPT12ZSYmKExbYmUrK109MjU1JnZlLExbYmUrK109dmU+''@;'; put 'put ''Pj44LHZlPTApLExbYmUrK109WCUyNTYsTFtiZSsrXT1YPj4+ODtyZXR1cm4gTC5zbGljZSgwLGJlKS50b1N0cmluZygidWNzMiIpfSx1cz0iZm9vIGJhciBiYXpceGUyXHg5OFx4ODNceGYwXHg5Zlx4OGRceGEzIjtZaSh1cyk9PWlzKHVzKSYmKFlpPWlzKTt2YXIgT3U9ZnVuY3Rpb24oUCl7''@;'; put 'put ''cmV0dXJuIGxlKFAsImJpbmFyeSIpLnRvU3RyaW5nKCJ1dGY4Iil9O1lpKHVzKT09T3UodXMpJiYoWWk9T3UpLHpvPWZ1bmN0aW9uKHkpe3JldHVybiBsZSh5LCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfX12YXIgeSxQdT1mdW5jdGlvbigpe3ZhciB5PXt9O3JldHVybiBmdW5jdGlvbihM''@;'; put 'put ''LFgpe3ZhciBuZT1MKyJ8IisoWHx8IiIpO3JldHVybiB5W25lXT95W25lXTp5W25lXT1uZXcgUmVnRXhwKCI8KD86XFx3KzopPyIrTCsnKD86IHhtbDpzcGFjZT0icHJlc2VydmUiKT8oPzpbXj5dKik+KFtcXHNcXFNdKj8pPC8oPzpcXHcrOik/JytMKyI+IixYfHwiIil9fSgpLEZ1PSh5PVtb''@;'; put 'put ''Im5ic3AiLCIgIl0sWyJtaWRkb3QiLCJceGI3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQiLCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5jdGlvbihQKXtyZXR1cm5bbmV3IFJlZ0V4cCgiJiIrUFswXSsiOyIsImlnIiksUFsxXV19KSxmdW5jdGlvbihMKXtm''@;'; put 'put ''b3IodmFyIFg9TC5yZXBsYWNlKC9eW1x0XG5cciBdKy8sIiIpLnJlcGxhY2UoL1tcdFxuXHIgXSskLywiIikucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIikucmVwbGFjZSgvPFxzKltiQl1bclJdXHMqXC8/Pi9nLCJcbiIpLnJlcGxhY2UoLzxbXj5dKj4vZywiIiksbmU9MDtuZTx5Lmxlbmd0''@;'; put 'put ''aDsrK25lKVg9WC5yZXBsYWNlKHlbbmVdWzBdLHlbbmVdWzFdKTtyZXR1cm4gWH0pLCR1PWZ1bmN0aW9uKCl7dmFyIHk9e307cmV0dXJuIGZ1bmN0aW9uKEwpe3JldHVybiB2b2lkIDAhPT15W0xdP3lbTF06eVtMXT1uZXcgUmVnRXhwKCI8KD86dnQ6KT8iK0wrIj4oW1xcc1xcU10qPyk8Lyg/''@;'; put 'put ''OnZ0Oik/IitMKyI+IiwiZyIpfX0oKSxHZD0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxCcz0vPCg/OnZ0OikoW14+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uICRkKHksUCl7dmFyIEw9YW4oeSksWD15Lm1hdGNoKCR1KEwuYmFzZVR5cGUpKXx8W10sbmU9W107aWYoWC5sZW5ndGghPUwuc2l6''@;'; put 'put ''ZSl7aWYoUC5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIHZlY3RvciBsZW5ndGggIitYLmxlbmd0aCsiICE9ICIrTC5zaXplKTtyZXR1cm4gbmV9cmV0dXJuIFguZm9yRWFjaChmdW5jdGlvbihmZSl7dmFyIGJlPWZlLnJlcGxhY2UoR2QsIiIpLm1hdGNoKEJzKTtiZSYmbmUucHVz''@;'; put 'put ''aCh7djpZaShiZVsyXSksdDpiZVsxXX0pfSksbmV9dmFyIHFkPS8oXlxzfFxzJHxcbikvO2Z1bmN0aW9uIGNvKHksUCl7cmV0dXJuIjwiK3krKFAubWF0Y2gocWQpPycgeG1sOnNwYWNlPSJwcmVzZXJ2ZSInOiIiKSsiPiIrUCsiPC8iK3krIj4ifWZ1bmN0aW9uIGF1KHkpe3JldHVybiBvdCh5''@;'; put 'put ''KS5tYXAoZnVuY3Rpb24oUCl7cmV0dXJuIiAiK1ArJz0iJyt5W1BdKyciJ30pLmpvaW4oIiIpfWZ1bmN0aW9uIF9yKHksUCxMKXtyZXR1cm4iPCIreSsobnVsbCE9TD9hdShMKToiIikrKG51bGwhPVA/KFAubWF0Y2gocWQpPycgeG1sOnNwYWNlPSJwcmVzZXJ2ZSInOiIiKSsiPiIrUCsiPC8i''@;'; put 'put ''K3k6Ii8iKSsiPiJ9ZnVuY3Rpb24gXzEoeSxQKXt0cnl7cmV0dXJuIHkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLlxkKi8sIiIpfWNhdGNoKEwpe2lmKFApdGhyb3cgTH1yZXR1cm4iIn12YXIgSWYsbGcsa2k9e2RjOiJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIsZGN0ZXJt''@;'; put 'put ''czoiaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLyIsZGNtaXR5cGU6Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS8iLG14OiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9tYWMvZXhjZWwvMjAwOC9tYWluIixyOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5v''@;'; put 'put ''cmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIixzanM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvc2hlZXRqcy9jb3JlLXByb3BlcnRpZXMiLHZ0OiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1l''@;'; put 'put ''bnQvMjAwNi9kb2NQcm9wc1ZUeXBlcyIseHNpOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIseHNkOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIsbWFpbjpbImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1s''@;'; put 'put ''LzIwMDYvbWFpbiIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL3NwcmVhZHNoZWV0bWwvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvbWFpbiIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvMiJd''@;'; put 'put ''fSxDbD17bzoidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIix4OiJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCIsc3M6InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOnNwcmVhZHNoZWV0IixkdDoidXVpZDpDMkY0MTAxMC02NUIz''@;'; put 'put ''LTExZDEtQTI5Ri0wMEFBMDBDMTQ4ODIiLG12OiJodHRwOi8vbWFjVm1sU2NoZW1hVXJpIix2OiJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIsaHRtbDoiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCJ9LFUwPWZ1bmN0aW9uKHkpe2Zvcih2YXIgUD1bXSxYPTA7WDx5WzBd''@;'; put 'put ''Lmxlbmd0aDsrK1gpaWYoeVswXVtYXSlmb3IodmFyIG5lPTAsZmU9eVswXVtYXS5sZW5ndGg7bmU8ZmU7bmUrPTEwMjQwKVAucHVzaC5hcHBseShQLHlbMF1bWF0uc2xpY2UobmUsbmUrMTAyNDApKTtyZXR1cm4gUH0scWw9VTAsTWw9ZnVuY3Rpb24oeSxQLEwpe2Zvcih2YXIgWD1bXSxuZT1Q''@;'; put 'put ''O25lPEw7bmUrPTIpWC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoS3UoeSxuZSkpKTtyZXR1cm4gWC5qb2luKCIiKS5yZXBsYWNlKF8sIiIpfSxlOT1NbCxBZj1mdW5jdGlvbih5LFAsTCl7Zm9yKHZhciBYPVtdLG5lPVA7bmU8UCtMOysrbmUpWC5wdXNoKCgiMCIreVtuZV0udG9TdHJpbmco''@;'; put 'put ''MTYpKS5zbGljZSgtMikpO3JldHVybiBYLmpvaW4oIiIpfSxzZz1BZixiMT1mdW5jdGlvbih5LFAsTCl7Zm9yKHZhciBYPVtdLG5lPVA7bmU8TDtuZSsrKVgucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHF1KHksbmUpKSk7cmV0dXJuIFguam9pbigiIil9LGFnPWIxLGdwPWZ1bmN0aW9uKHks''@;'; put 'put ''UCl7dmFyIEw9amkoeSxQKTtyZXR1cm4gTD4wP2IxKHksUCs0LFArNCtMLTEpOiIifSxEZj1ncCxkMj1mdW5jdGlvbih5LFApe3ZhciBMPWppKHksUCk7cmV0dXJuIEw+MD9iMSh5LFArNCxQKzQrTC0xKToiIn0sbHU9ZDIsaW89ZnVuY3Rpb24oeSxQKXt2YXIgTD0yKmppKHksUCk7cmV0dXJu''@;'; put 'put ''IEw+MD9iMSh5LFArNCxQKzQrTC0xKToiIn0sbXA9aW87SWY9bGc9ZnVuY3Rpb24oUCxMKXt2YXIgWD1qaShQLEwpO3JldHVybiBYPjA/TWwoUCxMKzQsTCs0K1gpOiIifTt2YXIgaXIsT2YsUmY9ZnVuY3Rpb24oeSxQKXt2YXIgTD1qaSh5LFApO3JldHVybiBMPjA/YjEoeSxQKzQsUCs0K0wp''@;'; put 'put ''OiIifSxMZj1SZjtpcj1PZj1mdW5jdGlvbih5LFApe3JldHVybiBmdW5jdGlvbiBTbCh5LFApe2Zvcih2YXIgTD0xLTIqKHlbUCs3XT4+PjcpLFg9KCgxMjcmeVtQKzddKTw8NCkrKHlbUCs2XT4+PjQmMTUpLG5lPTE1JnlbUCs2XSxmZT01O2ZlPj0wOy0tZmUpbmU9MjU2Km5lK3lbUCtmZV07''@;'; put 'put ''cmV0dXJuIDIwNDc9PVg/MD09bmU/TCooMS8wKTpOYU46KDA9PVg/WD0tMTAyMjooWC09MTAyMyxuZSs9TWF0aC5wb3coMiw1MikpLEwqTWF0aC5wb3coMixYLTUyKSpuZSl9KHksUCl9O3ZhciBzaT1mdW5jdGlvbihQKXtyZXR1cm4gQXJyYXkuaXNBcnJheShQKX07dWUmJihNbD1mdW5jdGlv''@;'; put 'put ''bih5LFAsTCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih5KT95LnRvU3RyaW5nKCJ1dGYxNmxlIixQLEwpLnJlcGxhY2UoXywiIik6ZTkoeSxQLEwpfSxBZj1mdW5jdGlvbih5LFAsTCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcih5KT95LnRvU3RyaW5nKCJoZXgiLFAsUCtMKTpzZyh5LFAsTCl9''@;'; put 'put ''LGdwPWZ1bmN0aW9uKFAsTCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihQKSlyZXR1cm4gRGYoUCxMKTt2YXIgWD1QLnJlYWRVSW50MzJMRShMKTtyZXR1cm4gWD4wP1AudG9TdHJpbmcoInV0ZjgiLEwrNCxMKzQrWC0xKToiIn0sZDI9ZnVuY3Rpb24oUCxMKXtpZighQnVmZmVyLmlzQnVmZmVyKFAp''@;'; put 'put ''KXJldHVybiBsdShQLEwpO3ZhciBYPVAucmVhZFVJbnQzMkxFKEwpO3JldHVybiBYPjA/UC50b1N0cmluZygidXRmOCIsTCs0LEwrNCtYLTEpOiIifSxpbz1mdW5jdGlvbihQLEwpe2lmKCFCdWZmZXIuaXNCdWZmZXIoUCkpcmV0dXJuIG1wKFAsTCk7dmFyIFg9MipQLnJlYWRVSW50MzJMRShM''@;'; put 'put ''KTtyZXR1cm4gUC50b1N0cmluZygidXRmMTZsZSIsTCs0LEwrNCtYLTEpfSxJZj1mdW5jdGlvbihQLEwpe2lmKCFCdWZmZXIuaXNCdWZmZXIoUCkpcmV0dXJuIGxnKFAsTCk7dmFyIFg9UC5yZWFkVUludDMyTEUoTCk7cmV0dXJuIFAudG9TdHJpbmcoInV0ZjE2bGUiLEwrNCxMKzQrWCl9LFJm''@;'; put 'put ''PWZ1bmN0aW9uKFAsTCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcihQKSlyZXR1cm4gTGYoUCxMKTt2YXIgWD1QLnJlYWRVSW50MzJMRShMKTtyZXR1cm4gUC50b1N0cmluZygidXRmOCIsTCs0LEwrNCtYKX0sYjE9ZnVuY3Rpb24oUCxMLFgpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoUCk/UC50b1N0''@;'; put 'put ''cmluZygidXRmOCIsTCxYKTphZyhQLEwsWCl9LFUwPWZ1bmN0aW9uKHkpe3JldHVybiB5WzBdLmxlbmd0aD4wJiZCdWZmZXIuaXNCdWZmZXIoeVswXVswXSk/QnVmZmVyLmNvbmNhdCh5WzBdKTpxbCh5KX0saz1mdW5jdGlvbih5KXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHlbMF0pP0J1ZmZl''@;'; put 'put ''ci5jb25jYXQoeSk6W10uY29uY2F0LmFwcGx5KFtdLHkpfSxpcj1mdW5jdGlvbihQLEwpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoUCk/UC5yZWFkRG91YmxlTEUoTCk6T2YoUCxMKX0sc2k9ZnVuY3Rpb24oUCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihQKXx8QXJyYXkuaXNBcnJheShQKX0p''@;'; put 'put ''LHR5cGVvZiBjcHRhYmxlPCJ1IiYmKE1sPWZ1bmN0aW9uKHksUCxMKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCx5LnNsaWNlKFAsTCkpLnJlcGxhY2UoXywiIil9LGIxPWZ1bmN0aW9uKHksUCxMKXtyZXR1cm4gY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEseS5zbGljZShQ''@;'; put 'put ''LEwpKX0sZ3A9ZnVuY3Rpb24oeSxQKXt2YXIgTD1qaSh5LFApO3JldHVybiBMPjA/Y3B0YWJsZS51dGlscy5kZWNvZGUoSSx5LnNsaWNlKFArNCxQKzQrTC0xKSk6IiJ9LGQyPWZ1bmN0aW9uKHksUCl7dmFyIEw9amkoeSxQKTtyZXR1cm4gTD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKE8seS5z''@;'; put 'put ''bGljZShQKzQsUCs0K0wtMSkpOiIifSxpbz1mdW5jdGlvbih5LFApe3ZhciBMPTIqamkoeSxQKTtyZXR1cm4gTD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAseS5zbGljZShQKzQsUCs0K0wtMSkpOiIifSxJZj1mdW5jdGlvbih5LFApe3ZhciBMPWppKHksUCk7cmV0dXJuIEw+MD9jcHRh''@;'; put 'put ''YmxlLnV0aWxzLmRlY29kZSgxMjAwLHkuc2xpY2UoUCs0LFArNCtMKSk6IiJ9LFJmPWZ1bmN0aW9uKHksUCl7dmFyIEw9amkoeSxQKTtyZXR1cm4gTD4wP2NwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLHkuc2xpY2UoUCs0LFArNCtMKSk6IiJ9KTt2YXIgcXU9ZnVuY3Rpb24oeSxQKXtyZXR1''@;'; put 'put ''cm4geVtQXX0sS3U9ZnVuY3Rpb24oeSxQKXtyZXR1cm4gMjU2KnlbUCsxXSt5W1BdfSxjZz1mdW5jdGlvbih5LFApe3ZhciBMPTI1Nip5W1ArMV0reVtQXTtyZXR1cm4gTDwzMjc2OD9MOi0xKig2NTUzNS1MKzEpfSxqaT1mdW5jdGlvbih5LFApe3JldHVybiB5W1ArM10qKDE8PDI0KSsoeVtQ''@;'; put 'put ''KzJdPDwxNikrKHlbUCsxXTw8OCkreVtQXX0sWm49ZnVuY3Rpb24oeSxQKXtyZXR1cm4geVtQKzNdPDwyNHx5W1ArMl08PDE2fHlbUCsxXTw8OHx5W1BdfSx2aT1mdW5jdGlvbih5LFApe3JldHVybiB5W1BdPDwyNHx5W1ArMV08PDE2fHlbUCsyXTw8OHx5W1ArM119O2Z1bmN0aW9uIFJpKHks''@;'; put 'put ''UCl7dmFyIFgsbmUsYmUsdmUseWUsVmUsTD0iIixmZT1bXTtzd2l0Y2goUCl7Y2FzZSJkYmNzIjppZihWZT10aGlzLmwsdWUmJkJ1ZmZlci5pc0J1ZmZlcih0aGlzKSlMPXRoaXMuc2xpY2UodGhpcy5sLHRoaXMubCsyKnkpLnRvU3RyaW5nKCJ1dGYxNmxlIik7ZWxzZSBmb3IoeWU9MDt5ZTx5''@;'; put 'put ''OysreWUpTCs9U3RyaW5nLmZyb21DaGFyQ29kZShLdSh0aGlzLFZlKSksVmUrPTI7eSo9MjticmVhaztjYXNlInV0ZjgiOkw9YjEodGhpcyx0aGlzLmwsdGhpcy5sK3kpO2JyZWFrO2Nhc2UidXRmMTZsZSI6TD1NbCh0aGlzLHRoaXMubCx0aGlzLmwrKHkqPTIpKTticmVhaztjYXNlIndzdHIi''@;'; put 'put ''OmlmKCEodHlwZW9mIGNwdGFibGU8InUiKSlyZXR1cm4gUmkuY2FsbCh0aGlzLHksImRiY3MiKTtMPWNwdGFibGUudXRpbHMuZGVjb2RlKE8sdGhpcy5zbGljZSh0aGlzLmwsdGhpcy5sKzIqeSkpLHkqPTI7YnJlYWs7Y2FzZSJscHN0ci1hbnNpIjpMPWdwKHRoaXMsdGhpcy5sKSx5PTQramko''@;'; put 'put ''dGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBzdHItY3AiOkw9ZDIodGhpcyx0aGlzLmwpLHk9NCtqaSh0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHdzdHIiOkw9aW8odGhpcyx0aGlzLmwpLHk9NCsyKmppKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwcDQiOnk9NCtqaSh0aGlzLHRoaXMu''@;'; put 'put ''bCksTD1JZih0aGlzLHRoaXMubCksMiZ5JiYoeSs9Mik7YnJlYWs7Y2FzZSI4bHBwNCI6eT00K2ppKHRoaXMsdGhpcy5sKSxMPVJmKHRoaXMsdGhpcy5sKSwzJnkmJih5Kz00LSgzJnkpKTticmVhaztjYXNlImNzdHIiOmZvcih5PTAsTD0iIjswIT09KGJlPXF1KHRoaXMsdGhpcy5sK3krKykp''@;'; put 'put ''OylmZS5wdXNoKHEoYmUpKTtMPWZlLmpvaW4oIiIpO2JyZWFrO2Nhc2UiX3dzdHIiOmZvcih5PTAsTD0iIjswIT09KGJlPUt1KHRoaXMsdGhpcy5sK3kpKTspZmUucHVzaChxKGJlKSkseSs9Mjt5Kz0yLEw9ZmUuam9pbigiIik7YnJlYWs7Y2FzZSJkYmNzLWNvbnQiOmZvcihMPSIiLFZlPXRo''@;'; put 'put ''aXMubCx5ZT0wO3llPHk7Kyt5ZSl7aWYodGhpcy5sZW5zJiYtMSE9PXRoaXMubGVucy5pbmRleE9mKFZlKSlyZXR1cm4gYmU9cXUodGhpcyxWZSksdGhpcy5sPVZlKzEsdmU9UmkuY2FsbCh0aGlzLHkteWUsYmU/ImRiY3MtY29udCI6InNiY3MtY29udCIpLGZlLmpvaW4oIiIpK3ZlO2ZlLnB1''@;'; put 'put ''c2gocShLdSh0aGlzLFZlKSkpLFZlKz0yfUw9ZmUuam9pbigiIikseSo9MjticmVhaztjYXNlImNwc3RyIjppZih0eXBlb2YgY3B0YWJsZTwidSIpe0w9Y3B0YWJsZS51dGlscy5kZWNvZGUoTyx0aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwreSkpO2JyZWFrfWNhc2Uic2Jjcy1jb250Ijpmb3Io''@;'; put 'put ''TD0iIixWZT10aGlzLmwseWU9MDt5ZSE9eTsrK3llKXtpZih0aGlzLmxlbnMmJi0xIT09dGhpcy5sZW5zLmluZGV4T2YoVmUpKXJldHVybiBiZT1xdSh0aGlzLFZlKSx0aGlzLmw9VmUrMSx2ZT1SaS5jYWxsKHRoaXMseS15ZSxiZT8iZGJjcy1jb250Ijoic2Jjcy1jb250IiksZmUuam9pbigi''@;'; put 'put ''IikrdmU7ZmUucHVzaChxKHF1KHRoaXMsVmUpKSksVmUrPTF9TD1mZS5qb2luKCIiKTticmVhaztkZWZhdWx0OnN3aXRjaCh5KXtjYXNlIDE6cmV0dXJuIFg9cXUodGhpcyx0aGlzLmwpLHRoaXMubCsrLFg7Y2FzZSAyOnJldHVybiBYPSgiaSI9PT1QP2NnOkt1KSh0aGlzLHRoaXMubCksdGhp''@;'; put 'put ''cy5sKz0yLFg7Y2FzZSA0OmNhc2UtNDpyZXR1cm4iaSIhPT1QJiYxMjgmdGhpc1t0aGlzLmwrM10/KG5lPWppKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTQsbmUpOihYPSh5PjA/Wm46dmkpKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTQsWCk7Y2FzZSA4OmNhc2UtODppZigiZiI9PT1QKXJldHVybiBu''@;'; put 'put ''ZT04PT15P2lyKHRoaXMsdGhpcy5sKTppcihbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlzLmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLDApLHRoaXMubCs9OCxuZTt5''@;'; put 'put ''PTg7Y2FzZSAxNjpMPUFmKHRoaXMsdGhpcy5sLHkpfX1yZXR1cm4gdGhpcy5sKz15LEx9dmFyIHhvPWZ1bmN0aW9uKHksUCxMKXt5W0xdPTI1NSZQLHlbTCsxXT1QPj4+OCYyNTUseVtMKzJdPVA+Pj4xNiYyNTUseVtMKzNdPVA+Pj4yNCYyNTV9LFBsPWZ1bmN0aW9uKHksUCxMKXt5W0xdPTI1''@;'; put 'put ''NSZQLHlbTCsxXT1QPj44JjI1NSx5W0wrMl09UD4+MTYmMjU1LHlbTCszXT1QPj4yNCYyNTV9LCRyPWZ1bmN0aW9uKHksUCxMKXt5W0xdPTI1NSZQLHlbTCsxXT1QPj4+OCYyNTV9O2Z1bmN0aW9uIHhsKHksUCxMKXt2YXIgWD0wLG5lPTA7aWYoImRiY3MiPT09TCl7Zm9yKG5lPTA7bmUhPVAu''@;'; put 'put ''bGVuZ3RoOysrbmUpJHIodGhpcyxQLmNoYXJDb2RlQXQobmUpLHRoaXMubCsyKm5lKTtYPTIqUC5sZW5ndGh9ZWxzZSBpZigic2JjcyI9PT1MKXtpZih0eXBlb2YgY3B0YWJsZTwidSImJjg3ND09SSlmb3IobmU9MDtuZSE9UC5sZW5ndGg7KytuZSl7dmFyIGZlPWNwdGFibGUudXRpbHMuZW5j''@;'; put 'put ''b2RlKEksUC5jaGFyQXQobmUpKTt0aGlzW3RoaXMubCtuZV09ZmVbMF19ZWxzZSBmb3IoUD1QLnJlcGxhY2UoL1teXHgwMC1ceDdGXS9nLCJfIiksbmU9MDtuZSE9UC5sZW5ndGg7KytuZSl0aGlzW3RoaXMubCtuZV09MjU1JlAuY2hhckNvZGVBdChuZSk7WD1QLmxlbmd0aH1lbHNle2lmKCJo''@;'; put 'put ''ZXgiPT09TCl7Zm9yKDtuZTx5OysrbmUpdGhpc1t0aGlzLmwrK109cGFyc2VJbnQoUC5zbGljZSgyKm5lLDIqbmUrMiksMTYpfHwwO3JldHVybiB0aGlzfWlmKCJ1dGYxNmxlIj09PUwpe3ZhciBiZT1NYXRoLm1pbih0aGlzLmwreSx0aGlzLmxlbmd0aCk7Zm9yKG5lPTA7bmU8TWF0aC5taW4o''@;'; put 'put ''UC5sZW5ndGgseSk7KytuZSl7dmFyIHZlPVAuY2hhckNvZGVBdChuZSk7dGhpc1t0aGlzLmwrK109MjU1JnZlLHRoaXNbdGhpcy5sKytdPXZlPj44fWZvcig7dGhpcy5sPGJlOyl0aGlzW3RoaXMubCsrXT0wO3JldHVybiB0aGlzfXN3aXRjaCh5KXtjYXNlIDE6WD0xLHRoaXNbdGhpcy5sXT0y''@;'; put 'put ''NTUmUDticmVhaztjYXNlIDI6WD0yLHRoaXNbdGhpcy5sXT0yNTUmUCx0aGlzW3RoaXMubCsxXT0yNTUmKFA+Pj49OCk7YnJlYWs7Y2FzZSAzOlg9Myx0aGlzW3RoaXMubF09MjU1JlAsdGhpc1t0aGlzLmwrMV09MjU1JihQPj4+PTgpLHRoaXNbdGhpcy5sKzJdPTI1NSYoUD4+Pj04KTticmVh''@;'; put 'put ''aztjYXNlIDQ6WD00LHhvKHRoaXMsUCx0aGlzLmwpO2JyZWFrO2Nhc2UgODppZihYPTgsImYiPT09TCl7IWZ1bmN0aW9uIFE3KHksUCxMKXt2YXIgWD0oUDwwfHwxL1A9PS0xLzA/MTowKTw8NyxuZT0wLGZlPTAsYmU9WD8tUDpQO2lzRmluaXRlKGJlKT8wPT1iZT9uZT1mZT0wOihuZT1NYXRo''@;'; put 'put ''LmZsb29yKE1hdGgubG9nKGJlKS9NYXRoLkxOMiksZmU9YmUqTWF0aC5wb3coMiw1Mi1uZSksbmU8PS0xMDIzJiYoIWlzRmluaXRlKGZlKXx8ZmU8TWF0aC5wb3coMiw1MikpP25lPS0xMDIyOihmZS09TWF0aC5wb3coMiw1MiksbmUrPTEwMjMpKToobmU9MjA0NyxmZT1pc05hTihQKT8yNjk4''@;'; put 'put ''NTowKTtmb3IodmFyIHZlPTA7dmU8PTU7Kyt2ZSxmZS89MjU2KXlbTCt2ZV09MjU1JmZlO3lbTCs2XT0oMTUmbmUpPDw0fDE1JmZlLHlbTCs3XT1uZT4+NHxYfSh0aGlzLFAsdGhpcy5sKTticmVha31jYXNlIDE2OmJyZWFrO2Nhc2UtNDpYPTQsUGwodGhpcyxQLHRoaXMubCl9fXJldHVybiB0''@;'; put 'put ''aGlzLmwrPVgsdGhpc31mdW5jdGlvbiBYdSh5LFApe3ZhciBMPUFmKHRoaXMsdGhpcy5sLHkubGVuZ3RoPj4xKTtpZihMIT09eSl0aHJvdyBuZXcgRXJyb3IoUCsiRXhwZWN0ZWQgIit5KyIgc2F3ICIrTCk7dGhpcy5sKz15Lmxlbmd0aD4+MX1mdW5jdGlvbiBncyh5LFApe3kubD1QLHkucmVh''@;'; put 'put ''ZF9zaGlmdD1SaSx5LmNoaz1YdSx5LndyaXRlX3NoaWZ0PXhsfWZ1bmN0aW9uIHBsKHksUCl7eS5sKz1QfWZ1bmN0aW9uIHhyKHkpe3ZhciBQPVcoeSk7cmV0dXJuIGdzKFAsMCksUH1mdW5jdGlvbiBtYyh5LFAsTCl7aWYoeSl7dmFyIFgsbmUsZmU7Z3MoeSx5Lmx8fDApO2Zvcih2YXIgYmU9''@;'; put 'put ''eS5sZW5ndGgsdmU9MCx5ZT0wO3kubDxiZTspezEyOCYodmU9eS5yZWFkX3NoaWZ0KDEpKSYmKHZlPSgxMjcmdmUpKygoMTI3JnkucmVhZF9zaGlmdCgxKSk8PDcpKTt2YXIgVmU9TDZbdmVdfHxMNls2NTUzNV07Zm9yKGZlPTEyNyYoWD15LnJlYWRfc2hpZnQoMSkpLG5lPTE7bmU8NCYmMTI4''@;'; put 'put ''Jlg7KytuZSlmZSs9KDEyNyYoWD15LnJlYWRfc2hpZnQoMSkpKTw8NypuZTt5ZT15LmwrZmU7dmFyIHplPShWZS5mfHxwbCkoeSxmZSxMKTtpZih5Lmw9eWUsUCh6ZSxWZS5uLHZlKSlyZXR1cm59fX1mdW5jdGlvbiBjdSgpe3ZhciB5PVtdLFA9dWU/MjU2OjIwNDgsTD1mdW5jdGlvbihWZSl7''@;'; put 'put ''dmFyIHplPXhyKFZlKTtyZXR1cm4gZ3MoemUsMCksemV9LFg9TChQKSxuZT1mdW5jdGlvbigpe1gmJihYLmxlbmd0aD5YLmwmJigoWD1YLnNsaWNlKDAsWC5sKSkubD1YLmxlbmd0aCksWC5sZW5ndGg+MCYmeS5wdXNoKFgpLFg9bnVsbCl9LGZlPWZ1bmN0aW9uKFZlKXtyZXR1cm4gWCYmVmU8''@;'; put 'put ''WC5sZW5ndGgtWC5sP1g6KG5lKCksWD1MKE1hdGgubWF4KFZlKzEsUCkpKX07cmV0dXJue25leHQ6ZmUscHVzaDpmdW5jdGlvbihWZSl7bmUoKSxudWxsPT0oWD1WZSkubCYmKFgubD1YLmxlbmd0aCksZmUoUCl9LGVuZDpmdW5jdGlvbigpe3JldHVybiBuZSgpLFUwKFt5XSl9LF9idWZzOnl9''@;'; put 'put ''fWZ1bmN0aW9uIGhpKHksUCxMLFgpe3ZhciBmZSxuZT0rREJbUF07aWYoIWlzTmFOKG5lKSl7WHx8KFg9TDZbbmVdLnB8fChMfHxbXSkubGVuZ3RofHwwKSxmZT0xKyhuZT49MTI4PzE6MCkrMSxYPj0xMjgmJisrZmUsWD49MTYzODQmJisrZmUsWD49MjA5NzE1MiYmKytmZTt2YXIgYmU9eS5u''@;'; put 'put ''ZXh0KGZlKTtuZTw9MTI3P2JlLndyaXRlX3NoaWZ0KDEsbmUpOihiZS53cml0ZV9zaGlmdCgxLDEyOCsoMTI3Jm5lKSksYmUud3JpdGVfc2hpZnQoMSxuZT4+NykpO2Zvcih2YXIgdmU9MDs0IT12ZTsrK3ZlKXtpZighKFg+PTEyOCkpe2JlLndyaXRlX3NoaWZ0KDEsWCk7YnJlYWt9YmUud3Jp''@;'; put 'put ''dGVfc2hpZnQoMSwxMjgrKDEyNyZYKSksWD4+PTd9WD4wJiZzaShMKSYmeS5wdXNoKEwpfX1mdW5jdGlvbiBmMCh5LFAsTCl7dmFyIFg9S3QoeSk7aWYoUC5zPyhYLmNSZWwmJihYLmMrPVAucy5jKSxYLnJSZWwmJihYLnIrPVAucy5yKSk6KFguY1JlbCYmKFguYys9UC5jKSxYLnJSZWwmJihY''@;'; put 'put ''LnIrPVAucikpLCFMfHxMLmJpZmY8MTIpe2Zvcig7WC5jPj0yNTY7KVguYy09MjU2O2Zvcig7WC5yPj02NTUzNjspWC5yLT02NTUzNn1yZXR1cm4gWH1mdW5jdGlvbiB0OSh5LFAsTCl7dmFyIFg9S3QoeSk7cmV0dXJuIFgucz1mMChYLnMsUC5zLEwpLFguZT1mMChYLmUsUC5zLEwpLFh9ZnVu''@;'; put 'put ''Y3Rpb24gdGQoeSxQKXtpZih5LmNSZWwmJnkuYzwwKWZvcih5PUt0KHkpO3kuYzwwOyl5LmMrPVA+OD8xNjM4NDoyNTY7aWYoeS5yUmVsJiZ5LnI8MClmb3IoeT1LdCh5KTt5LnI8MDspeS5yKz1QPjg/MTA0ODU3NjpQPjU/NjU1MzY6MTYzODQ7aWYoeS5jUmVsJiZ5LmM+PShQPjg/MTYzODQ6''@;'; put 'put ''MjU2KSlmb3IoeT1LdCh5KTt5LmM+PShQPjg/MTYzODQ6MjU2KTspeS5jLT1QPjg/MTYzODQ6MjU2O2lmKHkuclJlbCYmeS5yPj0xMDQ4NTc2KWZvcih5PUt0KHkpO3kucj49MTA0ODU3NjspeS5yLT0xMDQ4NTc2O3ZhciBMPUFpKHkpO3JldHVybiF5LmNSZWwmJm51bGwhPXkuY1JlbCYmKEw9''@;'; put 'put ''ZnVuY3Rpb24gdlQoeSl7cmV0dXJuIHkucmVwbGFjZSgvXihbQS1aXSkvLCIkJCQxIil9KEwpKSwheS5yUmVsJiZudWxsIT15LnJSZWwmJihMPWZ1bmN0aW9uIHZwKHkpe3JldHVybiB5LnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfShMKSksTH1mdW5jdGlvbiBoMih5LFAp''@;'; put 'put ''e3JldHVybiAwIT15LnMucnx8eS5zLnJSZWx8fHkuZS5yIT0oUC5iaWZmPj0xMj8xMDQ4NTc1OlAuYmlmZj49OD82NTUzNjoxNjM4NCl8fHkuZS5yUmVsPzAhPXkucy5jfHx5LnMuY1JlbHx8eS5lLmMhPShQLmJpZmY+PTEyPzE2MzgzOjI1NSl8fHkuZS5jUmVsP3RkKHkucyxQLmJpZmYpKyI6''@;'; put 'put ''Iit0ZCh5LmUsUC5iaWZmKTooeS5zLnJSZWw/IiI6IiQiKSticyh5LnMucikrIjoiKyh5LmUuclJlbD8iIjoiJCIpK2JzKHkuZS5yKTooeS5zLmNSZWw/IiI6IiQiKSt5byh5LnMuYykrIjoiKyh5LmUuY1JlbD8iIjoiJCIpK3lvKHkuZS5jKX12YXIgUGY9e307ZnVuY3Rpb24gbmQoeSl7cmV0''@;'; put 'put ''dXJuIHBhcnNlSW50KGZ1bmN0aW9uIG45KHkpe3JldHVybiB5LnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX0oeSksMTApLTF9ZnVuY3Rpb24gYnMoeSl7cmV0dXJuIiIrKHkrMSl9ZnVuY3Rpb24gJG8oeSl7Zm9yKHZhciBQPWZ1bmN0aW9uIF95KHkpe3JldHVybiB5LnJlcGxhY2UoL15cJChb''@;'; put 'put ''QS1aXSkvLCIkMSIpfSh5KSxMPTAsWD0wO1ghPT1QLmxlbmd0aDsrK1gpTD0yNipMK1AuY2hhckNvZGVBdChYKS02NDtyZXR1cm4gTC0xfWZ1bmN0aW9uIHlvKHkpe2lmKHk8MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY29sdW1uICIreSk7dmFyIFA9IiI7Zm9yKCsreTt5O3k9TWF0aC5m''@;'; put 'put ''bG9vcigoeS0xKS8yNikpUD1TdHJpbmcuZnJvbUNoYXJDb2RlKCh5LTEpJTI2KzY1KStQO3JldHVybiBQfWZ1bmN0aW9uIGtzKHkpe2Zvcih2YXIgUD0wLEw9MCxYPTA7WDx5Lmxlbmd0aDsrK1gpe3ZhciBuZT15LmNoYXJDb2RlQXQoWCk7bmU+PTQ4JiZuZTw9NTc/UD0xMCpQKyhuZS00OCk6''@;'; put 'put ''bmU+PTY1JiZuZTw9OTAmJihMPTI2KkwrKG5lLTY0KSl9cmV0dXJue2M6TC0xLHI6UC0xfX1mdW5jdGlvbiBBaSh5KXtmb3IodmFyIFA9eS5jKzEsTD0iIjtQO1A9KFAtMSkvMjZ8MClMPVN0cmluZy5mcm9tQ2hhckNvZGUoKFAtMSklMjYrNjUpK0w7cmV0dXJuIEwrKHkucisxKX1mdW5jdGlv''@;'; put 'put ''biBhYSh5KXt2YXIgUD15LmluZGV4T2YoIjoiKTtyZXR1cm4tMT09UD97czprcyh5KSxlOmtzKHkpfTp7czprcyh5LnNsaWNlKDAsUCkpLGU6a3MoeS5zbGljZShQKzEpKX19ZnVuY3Rpb24gRGkoeSxQKXtyZXR1cm4gdHlwZW9mIFA+InUifHwibnVtYmVyIj09dHlwZW9mIFA/RGkoeS5zLHku''@;'; put 'put ''ZSk6KCJzdHJpbmciIT10eXBlb2YgeSYmKHk9QWkoeSkpLCJzdHJpbmciIT10eXBlb2YgUCYmKFA9QWkoUCkpLHk9PVA/eTp5KyI6IitQKX1mdW5jdGlvbiBSbyh5KXt2YXIgUD1KU09OLnBhcnNlKCd7InMiOnsiYyI6MCwiciI6MH0sImUiOnsiYyI6MCwiciI6MH19JyksTD0wLFg9MCxuZT0w''@;'; put 'put ''LGZlPXkubGVuZ3RoO2ZvcihMPTA7WDxmZSYmISgobmU9eS5jaGFyQ29kZUF0KFgpLTY0KTwxfHxuZT4yNik7KytYKUw9MjYqTCtuZTtmb3IoUC5zLmM9LS1MLEw9MDtYPGZlJiYhKChuZT15LmNoYXJDb2RlQXQoWCktNDgpPDB8fG5lPjkpOysrWClMPTEwKkwrbmU7aWYoUC5zLnI9LS1MLFg9''@;'; put 'put ''PT1mZXx8NTg9PT15LmNoYXJDb2RlQXQoKytYKSlyZXR1cm4gUC5lLmM9UC5zLmMsUC5lLnI9UC5zLnIsUDtmb3IoTD0wO1ghPWZlJiYhKChuZT15LmNoYXJDb2RlQXQoWCktNjQpPDF8fG5lPjI2KTsrK1gpTD0yNipMK25lO2ZvcihQLmUuYz0tLUwsTD0wO1ghPWZlJiYhKChuZT15LmNoYXJD''@;'; put 'put ''b2RlQXQoWCktNDgpPDB8fG5lPjkpOysrWClMPTEwKkwrbmU7cmV0dXJuIFAuZS5yPS0tTCxQfWZ1bmN0aW9uIHVnKHksUCl7dmFyIEw9ImQiPT15LnQmJlAgaW5zdGFuY2VvZiBEYXRlO2lmKG51bGwhPXkueil0cnl7cmV0dXJuIHkudz13LmZvcm1hdCh5LnosTD9aZShQKTpQKX1jYXRjaHt9''@;'; put 'put ''dHJ5e3JldHVybiB5Lnc9dy5mb3JtYXQoKHkuWEZ8fHt9KS5udW1GbXRJZHx8KEw/MTQ6MCksTD9aZShQKTpQKX1jYXRjaHtyZXR1cm4iIitQfX1mdW5jdGlvbiBJYSh5LFAsTCl7cmV0dXJuIG51bGw9PXl8fG51bGw9PXkudHx8InoiPT15LnQ/IiI6dm9pZCAwIT09eS53P3kudzooImQiPT15''@;'; put 'put ''LnQmJiF5LnomJkwmJkwuZGF0ZU5GJiYoeS56PUwuZGF0ZU5GKSwiZSI9PXkudD9GbFt5LnZdfHx5LnY6dWcoeSxudWxsPT1QP3kudjpQKSl9ZnVuY3Rpb24gcmQoeSxQKXt2YXIgTD1QJiZQLnNoZWV0P1Auc2hlZXQ6IlNoZWV0MSIsWD17fTtyZXR1cm4gWFtMXT15LHtTaGVldE5hbWVzOltM''@;'; put 'put ''XSxTaGVldHM6WH19ZnVuY3Rpb24gX3AoeSxQLEwpe3ZhciBYPUx8fHt9LG5lPXk/QXJyYXkuaXNBcnJheSh5KTpYLmRlbnNlO251bGwhPWVlJiZudWxsPT1uZSYmKG5lPWVlKTt2YXIgZmU9eXx8KG5lP1tdOnt9KSxiZT0wLHZlPTA7aWYoZmUmJm51bGwhPVgub3JpZ2luKXtpZigibnVtYmVy''@;'; put 'put ''Ij09dHlwZW9mIFgub3JpZ2luKWJlPVgub3JpZ2luO2Vsc2V7dmFyIHllPSJzdHJpbmciPT10eXBlb2YgWC5vcmlnaW4/a3MoWC5vcmlnaW4pOlgub3JpZ2luO2JlPXllLnIsdmU9eWUuY31mZVsiIXJlZiJdfHwoZmVbIiFyZWYiXT0iQTE6QTEiKX12YXIgVmU9e3M6e2M6MWU3LHI6MWU3fSxl''@;'; put 'put ''OntjOjAscjowfX07aWYoZmVbIiFyZWYiXSl7dmFyIHplPVJvKGZlWyIhcmVmIl0pO1ZlLnMuYz16ZS5zLmMsVmUucy5yPXplLnMucixWZS5lLmM9TWF0aC5tYXgoVmUuZS5jLHplLmUuYyksVmUuZS5yPU1hdGgubWF4KFZlLmUucix6ZS5lLnIpLC0xPT1iZSYmKFZlLmUucj1iZT16ZS5lLnIr''@;'; put 'put ''MSl9Zm9yKHZhciBXZT0wO1dlIT1QLmxlbmd0aDsrK1dlKWlmKFBbV2VdKXtpZighQXJyYXkuaXNBcnJheShQW1dlXSkpdGhyb3cgbmV3IEVycm9yKCJhb2FfdG9fc2hlZXQgZXhwZWN0cyBhbiBhcnJheSBvZiBhcnJheXMiKTtmb3IodmFyIHJ0PTA7cnQhPVBbV2VdLmxlbmd0aDsrK3J0KWlm''@;'; put 'put ''KCEodHlwZW9mIFBbV2VdW3J0XT4idSIpKXt2YXIgbHQ9e3Y6UFtXZV1bcnRdfSxDdD1iZStXZSxhdD12ZStydDtpZihWZS5zLnI+Q3QmJihWZS5zLnI9Q3QpLFZlLnMuYz5hdCYmKFZlLnMuYz1hdCksVmUuZS5yPEN0JiYoVmUuZS5yPUN0KSxWZS5lLmM8YXQmJihWZS5lLmM9YXQpLCFQW1dl''@;'; put 'put ''XVtydF18fCJvYmplY3QiIT10eXBlb2YgUFtXZV1bcnRdfHxBcnJheS5pc0FycmF5KFBbV2VdW3J0XSl8fFBbV2VdW3J0XWluc3RhbmNlb2YgRGF0ZSlpZihBcnJheS5pc0FycmF5KGx0LnYpJiYobHQuZj1QW1dlXVtydF1bMV0sbHQudj1sdC52WzBdKSxudWxsPT09bHQudilpZihsdC5mKWx0''@;'; put 'put ''LnQ9Im4iO2Vsc2UgaWYoWC5udWxsRXJyb3IpbHQudD0iZSIsbHQudj0wO2Vsc2V7aWYoIVguc2hlZXRTdHVicyljb250aW51ZTtsdC50PSJ6In1lbHNlIm51bWJlciI9PXR5cGVvZiBsdC52P2x0LnQ9Im4iOiJib29sZWFuIj09dHlwZW9mIGx0LnY/bHQudD0iYiI6bHQudiBpbnN0YW5jZW9m''@;'; put 'put ''IERhdGU/KGx0Lno9WC5kYXRlTkZ8fHcuX3RhYmxlWzE0XSxYLmNlbGxEYXRlcz8obHQudD0iZCIsbHQudz13LmZvcm1hdChsdC56LFplKGx0LnYpKSk6KGx0LnQ9Im4iLGx0LnY9WmUobHQudiksbHQudz13LmZvcm1hdChsdC56LGx0LnYpKSk6bHQudD0icyI7ZWxzZSBsdD1QW1dlXVtydF07''@;'; put 'put ''aWYobHQmJmx0LmgpdHJ5e2x0LlI9azEuaHRtbF90b19ycyhsdC5oKSxsdC52PSIiO2Zvcih2YXIgdnQ9MDt2dDxsdC5SLmxlbmd0aDsrK3Z0KWx0LnYrPWx0LlJbdnRdLnZ8fCIifWNhdGNoe31pZihuZSlmZVtDdF18fChmZVtDdF09W10pLGZlW0N0XVthdF0mJmZlW0N0XVthdF0ucyYmKGx0''@;'; put 'put ''LnM9ZmVbQ3RdW2F0XS5zKSxmZVtDdF1bYXRdJiZmZVtDdF1bYXRdLnomJihsdC56PWZlW0N0XVthdF0ueiksZmVbQ3RdW2F0XT1sdDtlbHNle3ZhciBQdD1BaSh7YzphdCxyOkN0fSk7ZmVbUHRdJiZmZVtQdF0ucyYmKGx0LnM9ZmVbUHRdLnMpLGZlW1B0XSYmZmVbUHRdLnomJihsdC56PWZl''@;'; put 'put ''W1B0XS56KSxmZVtQdF09bHR9fX1yZXR1cm4gVmUucy5jPDFlNyYmKGZlWyIhcmVmIl09RGkoVmUpKSxmZX1mdW5jdGlvbiBicCh5LFApe3JldHVybiBfcChudWxsLHksUCl9ZnVuY3Rpb24gcDAoeSxQKXtyZXR1cm4gUHx8KFA9eHIoNCkpLFAud3JpdGVfc2hpZnQoNCx5KSxQfWZ1bmN0aW9u''@;'; put 'put ''IGtjKHkpe3ZhciBQPXkucmVhZF9zaGlmdCg0KTtyZXR1cm4gMD09PVA/IiI6eS5yZWFkX3NoaWZ0KFAsImRiY3MiKX1mdW5jdGlvbiBLbCh5LFApe3ZhciBMPSExO3JldHVybiBudWxsPT1QJiYoTD0hMCxQPXhyKDQrMip5Lmxlbmd0aCkpLFAud3JpdGVfc2hpZnQoNCx5Lmxlbmd0aCkseS5s''@;'; put 'put ''ZW5ndGg+MCYmUC53cml0ZV9zaGlmdCgwLHksImRiY3MiKSxMP1Auc2xpY2UoMCxQLmwpOlB9ZnVuY3Rpb24geXkoeSl7cmV0dXJue2ljaDp5LnJlYWRfc2hpZnQoMiksaWZudDp5LnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIHlhKHksUCl7dmFyIEw9eS5sLFg9eS5yZWFkX3NoaWZ0KDEpLG5l''@;'; put 'put ''PWtjKHkpLGZlPVtdLGJlPXt0Om5lLGg6bmV9O2lmKDEmWCl7Zm9yKHZhciB2ZT15LnJlYWRfc2hpZnQoNCkseWU9MDt5ZSE9dmU7Kyt5ZSlmZS5wdXNoKHl5KHkpKTtiZS5yPWZlfWVsc2UgYmUucj1be2ljaDowLGlmbnQ6MH1dO3JldHVybiB5Lmw9TCtQLGJlfSFmdW5jdGlvbih5LFApe3Zh''@;'; put 'put ''ciBMO2lmKHR5cGVvZiBjcnlwdG9Ccm93c2VyaWZ5PCJ1IilMPWNyeXB0b0Jyb3dzZXJpZnk7ZWxzZSBpZih0eXBlb2YgUDwidSIpTD1QO2Vsc2UgdHJ5e0w9Uig5MTQyNil9Y2F0Y2h7TD1udWxsfXkucmM0PWZ1bmN0aW9uKFgsbmUpe3ZhciBmZT1uZXcgQXJyYXkoMjU2KSxiZT0wLHZlPTAs''@;'; put 'put ''eWU9MCxWZT0wO2Zvcih2ZT0wOzI1NiE9dmU7Kyt2ZSlmZVt2ZV09dmU7Zm9yKHZlPTA7MjU2IT12ZTsrK3ZlKXllPXllK2ZlW3ZlXStYW3ZlJVgubGVuZ3RoXS5jaGFyQ29kZUF0KDApJjI1NSxWZT1mZVt2ZV0sZmVbdmVdPWZlW3llXSxmZVt5ZV09VmU7dmU9eWU9MDt2YXIgemU9VyhuZS5s''@;'; put 'put ''ZW5ndGgpO2ZvcihiZT0wO2JlIT1uZS5sZW5ndGg7KytiZSlWZT1mZVt2ZT12ZSsxJjI1NV0sZmVbdmVdPWZlW3llPSh5ZStmZVt2ZV0pJTI1Nl0sZmVbeWVdPVZlLHplW2JlXT1uZVtiZV1eZmVbZmVbdmVdK2ZlW3llXSYyNTVdO3JldHVybiB6ZX0seS5tZDU9ZnVuY3Rpb24oWCl7aWYoIUwp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjcnlwdG8iKTtyZXR1cm4gTC5jcmVhdGVIYXNoKCJtZDUiKS51cGRhdGUoQnVmZmVyLmZyb20oWCkpLmRpZ2VzdCgiaGV4Iil9fShQZix0eXBlb2YgY3J5cHRvPCJ1Ij9jcnlwdG86dm9pZCAwKTt2YXIgd3k9eWE7ZnVuY3Rpb24gWjAoeSl7''@;'; put 'put ''dmFyIFA9eS5yZWFkX3NoaWZ0KDQpLEw9eS5yZWFkX3NoaWZ0KDIpO3JldHVybiBMKz15LnJlYWRfc2hpZnQoMSk8PDE2LHkubCsrLHtjOlAsaVN0eWxlUmVmOkx9fWZ1bmN0aW9uIGNyKHksUCl7cmV0dXJuIG51bGw9PVAmJihQPXhyKDgpKSxQLndyaXRlX3NoaWZ0KC00LHkuYyksUC53cml0''@;'; put 'put ''ZV9zaGlmdCgzLHkuaVN0eWxlUmVmfHx5LnMpLFAud3JpdGVfc2hpZnQoMSwwKSxQfWZ1bmN0aW9uIFhkKHkpe3ZhciBQPXkucmVhZF9zaGlmdCgyKTtyZXR1cm4gUCs9eS5yZWFkX3NoaWZ0KDEpPDwxNix5LmwrKyx7YzotMSxpU3R5bGVSZWY6UH19ZnVuY3Rpb24gWnIoeSxQKXtyZXR1cm4g''@;'; put 'put ''bnVsbD09UCYmKFA9eHIoNCkpLFAud3JpdGVfc2hpZnQoMyx5LmlTdHlsZVJlZnx8eS5zKSxQLndyaXRlX3NoaWZ0KDEsMCksUH12YXIgZGc9a2MsaGc9S2w7ZnVuY3Rpb24gdXUoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDQpO3JldHVybiAwPT09UHx8NDI5NDk2NzI5NT09PVA/IiI6eS5yZWFk''@;'; put 'put ''X3NoaWZ0KFAsImRiY3MiKX1mdW5jdGlvbiBmMih5LFApe3ZhciBMPSExO3JldHVybiBudWxsPT1QJiYoTD0hMCxQPXhyKDEyNykpLFAud3JpdGVfc2hpZnQoNCx5Lmxlbmd0aD4wP3kubGVuZ3RoOjQyOTQ5NjcyOTUpLHkubGVuZ3RoPjAmJlAud3JpdGVfc2hpZnQoMCx5LCJkYmNzIiksTD9Q''@;'; put 'put ''LnNsaWNlKDAsUC5sKTpQfXZhciBmZz1rYyx5cD11dSxwZz1mMjtmdW5jdGlvbiBZMCh5KXt2YXIgUD15LnNsaWNlKHkubCx5LmwrNCksTD0xJlBbMF0sWD0yJlBbMF07eS5sKz00LFBbMF0mPTI1Mjt2YXIgbmU9MD09PVg/aXIoWzAsMCwwLDAsUFswXSxQWzFdLFBbMl0sUFszXV0sMCk6Wm4o''@;'; put 'put ''UCwwKT4+MjtyZXR1cm4gTD9uZS8xMDA6bmV9ZnVuY3Rpb24gbzkoeSxQKXtudWxsPT1QJiYoUD14cig0KSk7dmFyIEw9MCxYPTAsbmU9MTAwKnk7aWYoeT09KDB8eSkmJnk+PS0oMTw8MjkpJiZ5PDE8PDI5P1g9MTpuZT09KDB8bmUpJiZuZT49LSgxPDwyOSkmJm5lPDE8PDI5JiYoWD0xLEw9''@;'; put 'put ''MSksIVgpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBSa051bWJlciAiK3kpO1Aud3JpdGVfc2hpZnQoLTQsKChMP25lOnkpPDwyKSsoTCsyKSl9ZnVuY3Rpb24geTEoeSl7dmFyIFA9e3M6e30sZTp7fX07cmV0dXJuIFAucy5yPXkucmVhZF9zaGlmdCg0KSxQLmUucj15LnJlYWRfc2hp''@;'; put 'put ''ZnQoNCksUC5zLmM9eS5yZWFkX3NoaWZ0KDQpLFAuZS5jPXkucmVhZF9zaGlmdCg0KSxQfXZhciBBYz15MSxwMj1mdW5jdGlvbiBUNSh5LFApe3JldHVybiBQfHwoUD14cigxNikpLFAud3JpdGVfc2hpZnQoNCx5LnMuciksUC53cml0ZV9zaGlmdCg0LHkuZS5yKSxQLndyaXRlX3NoaWZ0KDQs''@;'; put 'put ''eS5zLmMpLFAud3JpdGVfc2hpZnQoNCx5LmUuYyksUH07ZnVuY3Rpb24gZHUoeSl7Zm9yKHZhciBQPXkucmVhZF9zaGlmdCg0KSxMPVtdLFg9MDtYPFA7KytYKXt2YXIgbmU9QWMoeSk7TC5wdXNoKERpKG5lKSl9cmV0dXJuIEwuam9pbigiLCIpfWZ1bmN0aW9uIHphKHkpe2lmKHkubGVuZ3Ro''@;'; put 'put ''LXkubDw4KXRocm93IlhMUyBYbnVtIEJ1ZmZlciB1bmRlcmZsb3ciO3JldHVybiB5LnJlYWRfc2hpZnQoOCwiZiIpfWZ1bmN0aW9uIGpjKHksUCl7cmV0dXJuKFB8fHhyKDgpKS53cml0ZV9zaGlmdCg4LHksImYiKX1mdW5jdGlvbiBKZCh5KXt2YXIgUD17fSxYPXkucmVhZF9zaGlmdCgxKT4+''@;'; put 'put ''PjEsbmU9eS5yZWFkX3NoaWZ0KDEpLGZlPXkucmVhZF9zaGlmdCgyLCJpIiksYmU9eS5yZWFkX3NoaWZ0KDEpLHZlPXkucmVhZF9zaGlmdCgxKSx5ZT15LnJlYWRfc2hpZnQoMSk7c3dpdGNoKHkubCsrLFgpe2Nhc2UgMDpQLmF1dG89MTticmVhaztjYXNlIDE6UC5pbmRleD1uZTt2YXIgVmU9''@;'; put 'put ''aHVbbmVdO1ZlJiYoUC5yZ2I9TTEoVmUpKTticmVhaztjYXNlIDI6UC5yZ2I9TTEoW2JlLHZlLHllXSk7YnJlYWs7Y2FzZSAzOlAudGhlbWU9bmV9cmV0dXJuIDAhPWZlJiYoUC50aW50PWZlPjA/ZmUvMzI3Njc6ZmUvMzI3NjgpLFB9ZnVuY3Rpb24gZzIoeSxQKXtpZihQfHwoUD14cig4KSks''@;'; put 'put ''IXl8fHkuYXV0bylyZXR1cm4gUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKSxQO251bGwhPXkuaW5kZXg/KFAud3JpdGVfc2hpZnQoMSwyKSxQLndyaXRlX3NoaWZ0KDEseS5pbmRleCkpOm51bGwhPXkudGhlbWU/KFAud3JpdGVfc2hpZnQoMSw2KSxQLndyaXRlX3NoaWZ0''@;'; put 'put ''KDEseS50aGVtZSkpOihQLndyaXRlX3NoaWZ0KDEsNSksUC53cml0ZV9zaGlmdCgxLDApKTt2YXIgTD15LnRpbnR8fDA7aWYoTD4wP0wqPTMyNzY3Okw8MCYmKEwqPTMyNzY4KSxQLndyaXRlX3NoaWZ0KDIsTCkseS5yZ2ImJm51bGw9PXkudGhlbWUpe3ZhciBYPXkucmdifHwiRkZGRkZGIjsi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIFgmJihYPSgiMDAwMDAwIitYLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpKSxQLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQoWC5zbGljZSgwLDIpLDE2KSksUC53cml0ZV9zaGlmdCgxLHBhcnNlSW50KFguc2xpY2UoMiw0KSwxNikpLFAud3JpdGVfc2hpZnQoMSxwYXJz''@;'; put 'put ''ZUludChYLnNsaWNlKDQsNiksMTYpKSxQLndyaXRlX3NoaWZ0KDEsMjU1KX1lbHNlIFAud3JpdGVfc2hpZnQoMiwwKSxQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCgxLDApO3JldHVybiBQfWZ1bmN0aW9uIEN5KHkpe3ZhciBQPXkucmVhZF9zaGlmdCgxKTtyZXR1cm4geS5sKyss''@;'; put 'put ''e2ZCb2xkOjEmUCxmSXRhbGljOjImUCxmVW5kZXJsaW5lOjQmUCxmU3RyaWtlb3V0OjgmUCxmT3V0bGluZToxNiZQLGZTaGFkb3c6MzImUCxmQ29uZGVuc2U6NjQmUCxmRXh0ZW5kOjEyOCZQfX1mdW5jdGlvbiBTeSh5LFApe3ZhciBYPXkucmVhZF9zaGlmdCg0KTtzd2l0Y2goWCl7Y2FzZSAw''@;'; put 'put ''OnJldHVybiIiO2Nhc2UgNDI5NDk2NzI5NTpjYXNlIDQyOTQ5NjcyOTQ6cmV0dXJuezI6IkJJVE1BUCIsMzoiTUVUQUZJTEVQSUNUIiw4OiJESUIiLDE0OiJFTkhNRVRBRklMRSJ9W3kucmVhZF9zaGlmdCg0KV18fCIifWlmKFg+NDAwKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgQ2xp''@;'; put 'put ''cGJvYXJkOiAiK1gudG9TdHJpbmcoMTYpKTtyZXR1cm4geS5sLT00LHkucmVhZF9zaGlmdCgwLDE9PVA/Imxwc3RyIjoibHB3c3RyIil9dmFyIFFkPTIsYWw9MyxKdT0xMixqbj04MSxNeT1bODAsam5dLHdwPXsxOntuOiJDb2RlUGFnZSIsdDpRZH0sMjp7bjoiQ2F0ZWdvcnkiLHQ6ODB9LDM6''@;'; put 'put ''e246IlByZXNlbnRhdGlvbkZvcm1hdCIsdDo4MH0sNDp7bjoiQnl0ZUNvdW50Iix0OmFsfSw1OntuOiJMaW5lQ291bnQiLHQ6YWx9LDY6e246IlBhcmFncmFwaENvdW50Iix0OmFsfSw3OntuOiJTbGlkZUNvdW50Iix0OmFsfSw4OntuOiJOb3RlQ291bnQiLHQ6YWx9LDk6e246IkhpZGRlbkNv''@;'; put 'put ''dW50Iix0OmFsfSwxMDp7bjoiTXVsdGltZWRpYUNsaXBDb3VudCIsdDphbH0sMTE6e246IlNjYWxlQ3JvcCIsdDoxMX0sMTI6e246IkhlYWRpbmdQYWlycyIsdDo0MDk2fEp1fSwxMzp7bjoiVGl0bGVzT2ZQYXJ0cyIsdDo0MTI2fSwxNDp7bjoiTWFuYWdlciIsdDo4MH0sMTU6e246IkNvbXBh''@;'; put 'put ''bnkiLHQ6ODB9LDE2OntuOiJMaW5rc1VwVG9EYXRlIix0OjExfSwxNzp7bjoiQ2hhcmFjdGVyQ291bnQiLHQ6YWx9LDE5OntuOiJTaGFyZWREb2MiLHQ6MTF9LDIyOntuOiJIeXBlcmxpbmtzQ2hhbmdlZCIsdDoxMX0sMjM6e246IkFwcFZlcnNpb24iLHQ6YWwscDoidmVyc2lvbiJ9LDI0Ontu''@;'; put 'put ''OiJEaWdTaWciLHQ6NjV9LDI2OntuOiJDb250ZW50VHlwZSIsdDo4MH0sMjc6e246IkNvbnRlbnRTdGF0dXMiLHQ6ODB9LDI4OntuOiJMYW5ndWFnZSIsdDo4MH0sMjk6e246IlZlcnNpb24iLHQ6ODB9LDI1NTp7fSwyMTQ3NDgzNjQ4OntuOiJMb2NhbGUiLHQ6MTl9LDIxNDc0ODM2NTE6e246''@;'; put 'put ''IkJlaGF2aW9yIix0OjE5fSwxOTE5MDU0NDM0Ont9fSxtZz17MTp7bjoiQ29kZVBhZ2UiLHQ6UWR9LDI6e246IlRpdGxlIix0OjgwfSwzOntuOiJTdWJqZWN0Iix0OjgwfSw0OntuOiJBdXRob3IiLHQ6ODB9LDU6e246IktleXdvcmRzIix0OjgwfSw2OntuOiJDb21tZW50cyIsdDo4MH0sNzp7''@;'; put 'put ''bjoiVGVtcGxhdGUiLHQ6ODB9LDg6e246Ikxhc3RBdXRob3IiLHQ6ODB9LDk6e246IlJldk51bWJlciIsdDo4MH0sMTA6e246IkVkaXRUaW1lIix0OjY0fSwxMTp7bjoiTGFzdFByaW50ZWQiLHQ6NjR9LDEyOntuOiJDcmVhdGVkRGF0ZSIsdDo2NH0sMTM6e246Ik1vZGlmaWVkRGF0ZSIsdDo2''@;'; put 'put ''NH0sMTQ6e246IlBhZ2VDb3VudCIsdDphbH0sMTU6e246IldvcmRDb3VudCIsdDphbH0sMTY6e246IkNoYXJDb3VudCIsdDphbH0sMTc6e246IlRodW1ibmFpbCIsdDo3MX0sMTg6e246IkFwcGxpY2F0aW9uIix0OjgwfSwxOTp7bjoiRG9jU2VjdXJpdHkiLHQ6YWx9LDI1NTp7fSwyMTQ3NDgz''@;'; put 'put ''NjQ4OntuOiJMb2NhbGUiLHQ6MTl9LDIxNDc0ODM2NTE6e246IkJlaGF2aW9yIix0OjE5fSwxOTE5MDU0NDM0Ont9fSx2Zz1GZSh3cCwibiIpLG0yPUZlKG1nLCJuIiksRDU9ezE6IlVTIiwyOiJDQSIsMzoiIiw3OiJSVSIsMjA6IkVHIiwzMDoiR1IiLDMxOiJOTCIsMzI6IkJFIiwzMzoiRlIi''@;'; put 'put ''LDM0OiJFUyIsMzY6IkhVIiwzOToiSVQiLDQxOiJDSCIsNDM6IkFUIiw0NDoiR0IiLDQ1OiJESyIsNDY6IlNFIiw0NzoiTk8iLDQ4OiJQTCIsNDk6IkRFIiw1MjoiTVgiLDU1OiJCUiIsNjE6IkFVIiw2NDoiTloiLDY2OiJUSCIsODE6IkpQIiw4MjoiS1IiLDg0OiJWTiIsODY6IkNOIiw5MDoi''@;'; put 'put ''VFIiLDEwNToiSlMiLDIxMzoiRFoiLDIxNjoiTUEiLDIxODoiTFkiLDM1MToiUFQiLDM1NDoiSVMiLDM1ODoiRkkiLDQyMDoiQ1oiLDg4NjoiVFciLDk2MToiTEIiLDk2MjoiSk8iLDk2MzoiU1kiLDk2NDoiSVEiLDk2NToiS1ciLDk2NjoiU0EiLDk3MToiQUUiLDk3MjoiSUwiLDk3NDoiUUEi''@;'; put 'put ''LDk4MToiSVIiLDY1NTM1OiJVUyJ9LGE5PVtudWxsLCJzb2xpZCIsIm1lZGl1bUdyYXkiLCJkYXJrR3JheSIsImxpZ2h0R3JheSIsImRhcmtIb3Jpem9udGFsIiwiZGFya1ZlcnRpY2FsIiwiZGFya0Rvd24iLCJkYXJrVXAiLCJkYXJrR3JpZCIsImRhcmtUcmVsbGlzIiwibGlnaHRIb3Jpem9u''@;'; put 'put ''dGFsIiwibGlnaHRWZXJ0aWNhbCIsImxpZ2h0RG93biIsImxpZ2h0VXAiLCJsaWdodEdyaWQiLCJsaWdodFRyZWxsaXMiLCJncmF5MTI1IiwiZ3JheTA2MjUiXTtmdW5jdGlvbiBJNSh5KXtyZXR1cm4geS5tYXAoZnVuY3Rpb24oUCl7cmV0dXJuW1A+PjE2JjI1NSxQPj44JjI1NSwyNTUmUF19''@;'; put 'put ''KX12YXIgQ3A9STUoWzAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDAsMTY3NzcyMTUsMTY3MTE2ODAsNjUyODAsMjU1LDE2Nzc2OTYwLDE2NzExOTM1LDY1NTM1LDgzODg2MDgsMzI3NjgsMTI4LDg0MjEzNzYsODM4ODczNiwzMjg5NiwxMjYz''@;'; put 'put ''MjI1Niw4NDIxNTA0LDEwMDY2NDMxLDEwMDQwMTY2LDE2Nzc3MTY0LDEzNDM0ODc5LDY2ODQ3NzQsMTY3NDQ1NzYsMjYzMTYsMTM0MjE4MjMsMTI4LDE2NzExOTM1LDE2Nzc2OTYwLDY1NTM1LDgzODg3MzYsODM4ODYwOCwzMjg5NiwyNTUsNTI0NzksMTM0MzQ4NzksMTM0MzQ4MjgsMTY3Nzcx''@;'; put 'put ''MTMsMTAwNzk0ODcsMTY3NTEwNTIsMTM0MDg3NjcsMTY3NjQwNTcsMzM2ODcwMywzMzk0NzY0LDEwMDc5MjMyLDE2NzYzOTA0LDE2NzUwODQ4LDE2NzM3NzkyLDY3MTA5MzcsOTg2ODk1MCwxMzE1OCwzMzgxNjA2LDEzMDU2LDMzNTUzOTIsMTAwNDAwNjQsMTAwNDAxNjYsMzM1NTU0NSwzMzU1''@;'; put 'put ''NDQzLDAsMTY3NzcyMTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0pLGh1PUt0KENwKSx4eT1JNShbMTI2MzIyNTYsOTg2ODk1MCw4NDIxNTA0LDY3MTA4ODYsMzM1NTQ0MywxNjcxMTY4MCwzMjc2OCwxMzM2OTQ5NywxMjgsMzM5NDU2MCwyNjM2NywxMDAyNzIxMiwxMDA1MzE3''@;'; put 'put ''MSwxMjgsMzI3NjgsODM4ODYwOCwzMjg5Niw4Mzg4NzM2LDg0MjEzNzYsMTM2MzE0ODgsMTQ1Mzk5OTQsMTMwNjg4NTAsMTM5MjQzNTIsOTk2NzQ5Niw5MTc1MjY3LDkxOTUwMDgsMzY4MzUzNywxMDY5MjU4LDg4ODA4OTksNzQ5NDY0LDI4OTM0NzYsMTE3NDU3MzAsMzc1MDIwMSwxNTU1OTUw''@;'; put 'put ''MywxODM3OTQxLDEyMDg0MzU5LDc2MzIyNTAsNzM2MzMyOCw5NTE0NTg4LDgyODg2MTcsMzAzNjgxNCwxMTE4NDgxMF0pLEZsPXswOiIjTlVMTCEiLDc6IiNESVYvMCEiLDE1OiIjVkFMVUUhIiwyMzoiI1JFRiEiLDI5OiIjTkFNRT8iLDM2OiIjTlVNISIsNDI6IiNOL0EiLDQzOiIjR0VUVElO''@;'; put 'put ''R19EQVRBIiwyNTU6IiNXVEY/In0sQmY9RWUoRmwpLFNwPXsiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhXcyI6IlRP''@;'; put 'put ''RE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuaW50bG1hY3Jvc2hlZXQiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4TXMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbCI6ImNvcmVw''@;'; put 'put ''cm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWwiOiJjdXN0cHJvcHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZXh0ZW5kZWQtcHJvcGVydGllcyt4bWwiOiJleHRw''@;'; put 'put ''cm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b21YbWxQcm9wZXJ0aWVzK3htbCI6ImN1c3RvbXhtbHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY3VzdG9tUHJv''@;'; put 'put ''cGVydHkiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90VGFibGUiOiJwaXZvdHMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdFRhYmxlK3htbCI6InBpdm90cyIsImFwcGxpY2F0aW9uL3ZuZC5v''@;'; put 'put ''cGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sIjoiY2hhcnRvYmpzIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGNvbG9yc3R5bGUreG1sIjoiY2hhcnRjb2xvcnMiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1s''@;'; put 'put ''IjoiY2hhcnRzdHlsZXMiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0ZXgreG1sIjoiY2hhcnRleHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2FsY0NoYWluIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5z''@;'; put 'put ''cHJlYWRzaGVldG1sLmNhbGNDaGFpbit4bWwiOiJjYWxjY2hhaW5zIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucHJpbnRlclNldHRpbmdzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZlWCI6IlRP''@;'; put 'put ''RE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hdHRhY2hlZFRvb2xiYXJzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb25uZWN0aW9ucyI6ImNvbm5zIiwiYXBwbGljYXRpb24vdm5k''@;'; put 'put ''Lm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIjoiY29ubnMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZXh0ZXJuYWxMaW5rIjoibGlua3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQu''@;'; put 'put ''c3ByZWFkc2hlZXRtbC5leHRlcm5hbExpbmsreG1sIjoibGlua3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3ht''@;'; put 'put ''bCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZURlZmluaXRpb24iOiJwaXZvdGNhY2hlcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlUmVjb3JkcyI6InBpdm90cmVjb3JkcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1v''@;'; put 'put ''ZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVEZWZpbml0aW9uK3htbCI6InBpdm90Y2FjaGVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZVJlY29yZHMreG1sIjoicGl2b3RyZWNvcmRz''@;'; put 'put ''IiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnF1ZXJ5VGFibGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucXVlcnlUYWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnVzZXJOYW1l''@;'; put 'put ''cyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucmV2aXNpb25IZWFkZXJzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkxvZyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRt''@;'; put 'put ''bC5yZXZpc2lvbkhlYWRlcnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uTG9nK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3By''@;'; put 'put ''ZWFkc2hlZXRtbC51c2VyTmFtZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZVNpbmdsZUNlbGxzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlU2luZ2xlQ2VsbHMreG1s''@;'; put 'put ''IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXIiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXIreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNl''@;'; put 'put ''bC5zbGljZXJDYWNoZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndzU29ydE1hcCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGUiOiJ0YWJsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFk''@;'; put 'put ''c2hlZXRtbC50YWJsZSt4bWwiOiJ0YWJsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sIjoidGhlbWVzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lT3ZlcnJpZGUreG1sIjoiVE9E''@;'; put 'put ''TyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lQ2FjaGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UudmJhUHJvamVjdCI6InZiYSIsImFwcGxpY2F0aW9uL3ZuZC5t''@;'; put 'put ''cy1vZmZpY2UudmJhUHJvamVjdFNpZ25hdHVyZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZvbGF0aWxlRGVwZW5kZW5jaWVzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlRGVw''@;'; put 'put ''ZW5kZW5jaWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29udHJvbHByb3BlcnRpZXMreG1sIjoiY3RybHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGEiOiJkYXRhbW9kZWxzIiwiYXBwbGljYXRp''@;'; put 'put ''b24vdm5kLm1zLWV4Y2VsLlN1cnZleSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmcreG1sIjoiZHJhd2luZ3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNo''@;'; put 'put ''YXJ0c2hhcGVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1Db2xvcnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlh''@;'; put 'put ''Z3JhbURhdGEreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUxheW91dCt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFn''@;'; put 'put ''cmFtU3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxEcmF3aW5nIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sIjoicmVscyIsImFwcGxpY2F0aW9u''@;'; put 'put ''L3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5vbGVPYmplY3QiOiJUT0RPIiwiaW1hZ2UvcG5nIjoiVE9ETyIsc2hlZXQ6ImpzIn0sbDk9ZnVuY3Rpb24oKXt2YXIgeT17d29ya2Jvb2tzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1l''@;'; put 'put ''bnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIseGxzbToiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC5tYWluK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiIseGxhbToiYXBw''@;'; put 'put ''bGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbCIseGx0eDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWwifSxzdHJzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQu''@;'; put 'put ''b3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRTdHJpbmdzK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3MifSxjb21tZW50czp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRv''@;'; put 'put ''Y3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHMifSxzaGVldHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwi''@;'; put 'put ''LHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53b3Jrc2hlZXQifSxjaGFydHM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwu''@;'; put 'put ''Y2hhcnRzaGVldCJ9LGRpYWxvZ3M6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0In0sbWFjcm9zOnt4bHN4OiJh''@;'; put 'put ''cHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0In0sdGFibGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4''@;'; put 'put ''bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZSJ9LHBpdm90czp7eGxzeDoiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RUYWJsZSt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5w''@;'; put 'put ''aXZvdFRhYmxlIn0scGl2b3RjYWNoZXM6e3hsc3g6ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVEZWZpbml0aW9uK3htbCIseGxzYjoiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVEZWZpbml0''@;'; put 'put ''aW9uIn0scGl2b3RyZWNvcmRzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlUmVjb3Jkcyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlUmVjb3JkcyJ9LGNvbm5z''@;'; put 'put ''Ont4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWwiLHhsc2I6ImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jb25uZWN0aW9ucyJ9LGxpbmtzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3Blbnht''@;'; put 'put ''bGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbExpbmsreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZXh0ZXJuYWxMaW5rIn0sc3R5bGVzOnt4bHN4OiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3By''@;'; put 'put ''ZWFkc2hlZXRtbC5zdHlsZXMreG1sIix4bHNiOiJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc3R5bGVzIn19O3JldHVybiBvdCh5KS5mb3JFYWNoKGZ1bmN0aW9uKFApe1sieGxzbSIsInhsYW0iXS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3lbUF1bTF18fCh5W1BdW0xdPXlbUF0ueGxzeCl9KX0p''@;'; put 'put ''LG90KHkpLmZvckVhY2goZnVuY3Rpb24oUCl7b3QoeVtQXSkuZm9yRWFjaChmdW5jdGlvbihMKXtTcFt5W1BdW0xdXT1QfSl9KSx5fSgpLGM5PWZ1bmN0aW9uIEllKHkpe2Zvcih2YXIgUD1bXSxMPW90KHkpLFg9MDtYIT09TC5sZW5ndGg7KytYKW51bGw9PVBbeVtMW1hdXV0mJihQW3lbTFtY''@;'; put 'put ''XV1dPVtdKSxQW3lbTFtYXV1dLnB1c2goTFtYXSk7cmV0dXJuIFB9KFNwKTtraS5DVD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIjt2YXIgZDk9X3IoIlR5cGVzIixudWxsLHt4bWxuczpraS5DVCwieG1sbnM6eHNkIjpraS54''@;'; put 'put ''c2QsInhtbG5zOnhzaSI6a2kueHNpfSksVHk9W1sieG1sIiwiYXBwbGljYXRpb24veG1sIl0sWyJiaW4iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC5tYWluIl0sWyJ2bWwiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNl''@;'; put 'put ''ZG9jdW1lbnQudm1sRHJhd2luZyJdLFsiZGF0YSIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5tb2RlbCtkYXRhIl0sWyJibXAiLCJpbWFnZS9ibXAiXSxbInBuZyIsImltYWdlL3BuZyJdLFsiZ2lmIiwiaW1hZ2UvZ2lmIl0sWyJlbWYiLCJpbWFnZS94''@;'; put 'put ''LWVtZiJdLFsid21mIiwiaW1hZ2UveC13bWYiXSxbImpwZyIsImltYWdlL2pwZWciXSxbImpwZWciLCJpbWFnZS9qcGVnIl0sWyJ0aWYiLCJpbWFnZS90aWZmIl0sWyJ0aWZmIiwiaW1hZ2UvdGlmZiJdLFsicGRmIiwiYXBwbGljYXRpb24vcGRmIl0sWyJyZWxzIixjOS5yZWxzWzBdXV0ubWFw''@;'; put 'put ''KGZ1bmN0aW9uKHkpe3JldHVybiBfcigiRGVmYXVsdCIsbnVsbCx7RXh0ZW5zaW9uOnlbMF0sQ29udGVudFR5cGU6eVsxXX0pfSksU289e1dCOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50''@;'; put 'put ''IixTSEVFVDoiaHR0cDovL3NoZWV0anMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsSExJTks6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hp''@;'; put 'put ''cHMvaHlwZXJsaW5rIixWTUw6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdm1sRHJhd2luZyIsWFBBVEg6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0''@;'; put 'put ''aW9uc2hpcHMvZXh0ZXJuYWxMaW5rUGF0aCIsWE1JU1M6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bEV4dGVybmFsTGlua1BhdGgveGxQYXRoTWlzc2luZyIsWExJTks6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9v''@;'; put 'put ''ZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZXJuYWxMaW5rIixDWE1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbCIsQ1hNTFA6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3Jt''@;'; put 'put ''YXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sUHJvcHMiLFZCQToiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3ZiYVByb2plY3QifTtmdW5jdGlvbiBTcih5KXt2YXIgUD15Lmxhc3RJbmRleE9m''@;'; put 'put ''KCIvIik7cmV0dXJuIHkuc2xpY2UoMCxQKzEpKyJfcmVscy8iK3kuc2xpY2UoUCsxKSsiLnJlbHMifWZ1bmN0aW9uIHYyKHksUCl7dmFyIEw9eyIhaWQiOnt9fTtpZigheSlyZXR1cm4gTDsiLyIhPT1QLmNoYXJBdCgwKSYmKFA9Ii8iK1ApO3ZhciBYPXt9O3JldHVybih5Lm1hdGNoKFh0KXx8''@;'; put 'put ''W10pLmZvckVhY2goZnVuY3Rpb24obmUpe3ZhciBmZT1hbihuZSk7aWYoIjxSZWxhdGlvbnNoaXAiPT09ZmVbMF0pe3ZhciBiZT17fTtiZS5UeXBlPWZlLlR5cGUsYmUuVGFyZ2V0PWZlLlRhcmdldCxiZS5JZD1mZS5JZCxiZS5UYXJnZXRNb2RlPWZlLlRhcmdldE1vZGU7dmFyIHZlPSJFeHRl''@;'; put 'put ''cm5hbCI9PT1mZS5UYXJnZXRNb2RlP2ZlLlRhcmdldDpybihmZS5UYXJnZXQsUCk7TFt2ZV09YmUsWFtmZS5JZF09YmV9fSksTFsiIWlkIl09WCxMfWtpLlJFTFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI7dmFyIF9nPV9y''@;'; put 'put ''KCJSZWxhdGlvbnNoaXBzIixudWxsLHt4bWxuczpraS5SRUxTfSk7ZnVuY3Rpb24gZWkoeSl7dmFyIFA9W1BuLF9nXTtyZXR1cm4gb3QoeVsiIWlkIl0pLmZvckVhY2goZnVuY3Rpb24oTCl7UFtQLmxlbmd0aF09X3IoIlJlbGF0aW9uc2hpcCIsbnVsbCx5WyIhaWQiXVtMXSl9KSxQLmxlbmd0''@;'; put 'put ''aD4yJiYoUFtQLmxlbmd0aF09IjwvUmVsYXRpb25zaGlwcz4iLFBbMV09UFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksUC5qb2luKCIiKX12YXIgTXA9W1NvLkhMSU5LLFNvLlhQQVRILFNvLlhNSVNTXTtmdW5jdGlvbiBncih5LFAsTCxYLG5lLGZlKXtpZihuZXx8KG5lPXt9KSx5WyIhaWQiXXx8''@;'; put 'put ''KHlbIiFpZCJdPXt9KSxQPDApZm9yKFA9MTt5WyIhaWQiXVsicklkIitQXTsrK1ApO2lmKG5lLklkPSJySWQiK1AsbmUuVHlwZT1YLG5lLlRhcmdldD1MLGZlP25lLlRhcmdldE1vZGU9ZmU6TXAuaW5kZXhPZihuZS5UeXBlKT4tMSYmKG5lLlRhcmdldE1vZGU9IkV4dGVybmFsIikseVsiIWlk''@;'; put 'put ''Il1bbmUuSWRdKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJld3JpdGUgcklkICIrUCk7cmV0dXJuIHlbIiFpZCJdW25lLklkXT1uZSx5WygiLyIrbmUuVGFyZ2V0KS5yZXBsYWNlKCIvLyIsIi8iKV09bmUsUH12YXIgd2E9ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3By''@;'; put 'put ''ZWFkc2hlZXQiO2Z1bmN0aW9uIHZjKHksUCxMKXtyZXR1cm5bJyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IicreSsnIj5cbicsJyAgICA8cmRmOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvJysoTHx8Im9kZiIp''@;'; put 'put ''KyIjIitQKyciLz5cbicsIiAgPC9yZGY6RGVzY3JpcHRpb24+XG4iXS5qb2luKCIiKX1mdW5jdGlvbiB0aCh5LFApe3JldHVyblsnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iJyt5KyciPlxuJywnICAgIDxuczA6aGFzUGFydCB4bWxuczpuczA9Imh0dHA6Ly9kb2NzLm9hc2lzLW9w''@;'; put 'put ''ZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjIiByZGY6cmVzb3VyY2U9IicrUCsnIi8+XG4nLCIgIDwvcmRmOkRlc2NyaXB0aW9uPlxuIl0uam9pbigiIil9dmFyIFI1PWZ1bmN0aW9uKCl7dmFyIHk9JzxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9InVybjpvYXNpczpu''@;'; put 'put ''YW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6bWV0YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bGluaz0iaHR0cDovL3d3''@;'; put 'put ''dy53My5vcmcvMTk5OS94bGluayIgb2ZmaWNlOnZlcnNpb249IjEuMiI+PG9mZmljZTptZXRhPjxtZXRhOmdlbmVyYXRvcj5TaGVldEpTICcrTS52ZXJzaW9uKyI8L21ldGE6Z2VuZXJhdG9yPjwvb2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT4iO3JldHVybiBmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiB5fX0oKSxRdT1bWyJjcDpjYXRlZ29yeSIsIkNhdGVnb3J5Il0sWyJjcDpjb250ZW50U3RhdHVzIiwiQ29udGVudFN0YXR1cyJdLFsiY3A6a2V5d29yZHMiLCJLZXl3b3JkcyJdLFsiY3A6bGFzdE1vZGlmaWVkQnkiLCJMYXN0QXV0aG9yIl0sWyJjcDpsYXN0UHJpbnRlZCIsIkxh''@;'; put 'put ''c3RQcmludGVkIl0sWyJjcDpyZXZpc2lvbiIsIlJldk51bWJlciJdLFsiY3A6dmVyc2lvbiIsIlZlcnNpb24iXSxbImRjOmNyZWF0b3IiLCJBdXRob3IiXSxbImRjOmRlc2NyaXB0aW9uIiwiQ29tbWVudHMiXSxbImRjOmlkZW50aWZpZXIiLCJJZGVudGlmaWVyIl0sWyJkYzpsYW5ndWFnZSIs''@;'; put 'put ''Ikxhbmd1YWdlIl0sWyJkYzpzdWJqZWN0IiwiU3ViamVjdCJdLFsiZGM6dGl0bGUiLCJUaXRsZSJdLFsiZGN0ZXJtczpjcmVhdGVkIiwiQ3JlYXRlZERhdGUiLCJkYXRlIl0sWyJkY3Rlcm1zOm1vZGlmaWVkIiwiTW9kaWZpZWREYXRlIiwiZGF0ZSJdXTtraS5DT1JFX1BST1BTPSJodHRwOi8v''@;'; put 'put ''c2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L21ldGFkYXRhL2NvcmUtcHJvcGVydGllcyIsU28uQ09SRV9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGll''@;'; put 'put ''cyI7dmFyIGJnPWZ1bmN0aW9uKCl7Zm9yKHZhciB5PW5ldyBBcnJheShRdS5sZW5ndGgpLFA9MDtQPFF1Lmxlbmd0aDsrK1Ape3ZhciBMPVF1W1BdLFg9Iig/OiIrTFswXS5zbGljZSgwLExbMF0uaW5kZXhPZigiOiIpKSsiOikiK0xbMF0uc2xpY2UoTFswXS5pbmRleE9mKCI6IikrMSk7eVtQ''@;'; put 'put ''XT1uZXcgUmVnRXhwKCI8IitYKyJbXj5dKj4oW1xcc1xcU10qPyk8LyIrWCsiPiIpfXJldHVybiB5fSgpO2Z1bmN0aW9uIGg5KHkpe3ZhciBQPXt9O3k9WWkoeSk7Zm9yKHZhciBMPTA7TDxRdS5sZW5ndGg7KytMKXt2YXIgWD1RdVtMXSxuZT15Lm1hdGNoKGJnW0xdKTtudWxsIT1uZSYmbmUu''@;'; put 'put ''bGVuZ3RoPjAmJihQW1hbMV1dPWhyKG5lWzFdKSksImRhdGUiPT09WFsyXSYmUFtYWzFdXSYmKFBbWFsxXV09RnQoUFtYWzFdXSkpfXJldHVybiBQfXZhciBBeT1fcigiY3A6Y29yZVByb3BlcnRpZXMiLG51bGwseyJ4bWxuczpjcCI6a2kuQ09SRV9QUk9QUywieG1sbnM6ZGMiOmtpLmRjLCJ4''@;'; put 'put ''bWxuczpkY3Rlcm1zIjpraS5kY3Rlcm1zLCJ4bWxuczpkY21pdHlwZSI6a2kuZGNtaXR5cGUsInhtbG5zOnhzaSI6a2kueHNpfSk7ZnVuY3Rpb24gXzIoeSxQLEwsWCxuZSl7bnVsbCE9bmVbeV18fG51bGw9PVB8fCIiPT09UHx8KG5lW3ldPVAsUD1icihQKSxYW1gubGVuZ3RoXT1MP19yKHks''@;'; put 'put ''UCxMKTpjbyh5LFApKX12YXIgb2Q9W1siQXBwbGljYXRpb24iLCJBcHBsaWNhdGlvbiIsInN0cmluZyJdLFsiQXBwVmVyc2lvbiIsIkFwcFZlcnNpb24iLCJzdHJpbmciXSxbIkNvbXBhbnkiLCJDb21wYW55Iiwic3RyaW5nIl0sWyJEb2NTZWN1cml0eSIsIkRvY1NlY3VyaXR5Iiwic3RyaW5n''@;'; put 'put ''Il0sWyJNYW5hZ2VyIiwiTWFuYWdlciIsInN0cmluZyJdLFsiSHlwZXJsaW5rc0NoYW5nZWQiLCJIeXBlcmxpbmtzQ2hhbmdlZCIsImJvb2wiXSxbIlNoYXJlZERvYyIsIlNoYXJlZERvYyIsImJvb2wiXSxbIkxpbmtzVXBUb0RhdGUiLCJMaW5rc1VwVG9EYXRlIiwiYm9vbCJdLFsiU2NhbGVD''@;'; put 'put ''cm9wIiwiU2NhbGVDcm9wIiwiYm9vbCJdLFsiSGVhZGluZ1BhaXJzIiwiSGVhZGluZ1BhaXJzIiwicmF3Il0sWyJUaXRsZXNPZlBhcnRzIiwiVGl0bGVzT2ZQYXJ0cyIsInJhdyJdXTtmdW5jdGlvbiB4cCh5LFAsTCxYKXt2YXIgbmU9W107aWYoInN0cmluZyI9PXR5cGVvZiB5KW5lPSRkKHks''@;'; put 'put ''WCk7ZWxzZSBmb3IodmFyIGZlPTA7ZmU8eS5sZW5ndGg7KytmZSluZT1uZS5jb25jYXQoeVtmZV0ubWFwKGZ1bmN0aW9uKHplKXtyZXR1cm57djp6ZX19KSk7dmFyIGJlPSJzdHJpbmciPT10eXBlb2YgUD8kZChQLFgpLm1hcChmdW5jdGlvbih6ZSl7cmV0dXJuIHplLnZ9KTpQLHZlPTAseWU9''@;'; put 'put ''MDtpZihiZS5sZW5ndGg+MClmb3IodmFyIFZlPTA7VmUhPT1uZS5sZW5ndGg7VmUrPTIpe3N3aXRjaCh5ZT0rbmVbVmUrMV0udixuZVtWZV0udil7Y2FzZSJXb3Jrc2hlZXRzIjpjYXNlIlx1NWRlNVx1NGY1Y1x1ODg2OCI6Y2FzZSJcdTA0MWJcdTA0MzhcdTA0NDFcdTA0NDJcdTA0NGIiOmNh''@;'; put 'put ''c2UiXHUwNjIzXHUwNjQ4XHUwNjMxXHUwNjI3XHUwNjQyIFx1MDYyN1x1MDY0NFx1MDYzOVx1MDY0NVx1MDY0NCI6Y2FzZSJcdTMwZWZcdTMwZmNcdTMwYWZcdTMwYjdcdTMwZmNcdTMwYzgiOmNhc2UiXHUwNWQyXHUwNWRjXHUwNWQ5XHUwNWQ1XHUwNWUwXHUwNWQ1XHUwNWVhIFx1MDVlMlx1''@;'; put 'put ''MDVkMVx1MDVkNVx1MDVkM1x1MDVkNCI6Y2FzZSJBcmJlaXRzYmxceGU0dHRlciI6Y2FzZSJceGM3YWxcdTAxMzFcdTAxNWZtYSBTYXlmYWxhclx1MDEzMSI6Y2FzZSJGZXVpbGxlcyBkZSBjYWxjdWwiOmNhc2UiRm9nbGkgZGkgbGF2b3JvIjpjYXNlIkZvbGhhcyBkZSBjXHhlMWxjdWxvIjpj''@;'; put 'put ''YXNlIlBsYW5pbGhhcyI6Y2FzZSJSZWduZWFyayI6Y2FzZSJIb2phcyBkZSBjXHhlMWxjdWxvIjpjYXNlIldlcmtibGFkZW4iOkwuV29ya3NoZWV0cz15ZSxMLlNoZWV0TmFtZXM9YmUuc2xpY2UodmUsdmUreWUpO2JyZWFrO2Nhc2UiTmFtZWQgUmFuZ2VzIjpjYXNlIlJhbmdvcyBjb24gbm9t''@;'; put 'put ''YnJlIjpjYXNlIlx1NTQwZFx1NTI0ZFx1NGVkOFx1MzA0ZFx1NGUwMFx1ODlhNyI6Y2FzZSJCZW5hbm50ZSBCZXJlaWNoZSI6Y2FzZSJOYXZuZ2l2bmUgb21yXHhlNWRlciI6TC5OYW1lZFJhbmdlcz15ZSxMLkRlZmluZWROYW1lcz1iZS5zbGljZSh2ZSx2ZSt5ZSk7YnJlYWs7Y2FzZSJDaGFy''@;'; put 'put ''dHMiOmNhc2UiRGlhZ3JhbW1lIjpMLkNoYXJ0c2hlZXRzPXllLEwuQ2hhcnROYW1lcz1iZS5zbGljZSh2ZSx2ZSt5ZSl9dmUrPXllfX1raS5FWFRfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXMi''@;'; put 'put ''LFNvLkVYVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlbmRlZC1wcm9wZXJ0aWVzIjt2YXIgTDU9X3IoIlByb3BlcnRpZXMiLG51bGwse3htbG5zOmtpLkVYVF9QUk9QUywieG1sbnM6dnQiOmtp''@;'; put 'put ''LnZ0fSk7a2kuQ1VTVF9QUk9QUz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvY3VzdG9tLXByb3BlcnRpZXMiLFNvLkNVU1RfUFJPUFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3Jl''@;'; put 'put ''bGF0aW9uc2hpcHMvY3VzdG9tLXByb3BlcnRpZXMiO3ZhciBPNT0vPFtePl0rPltePF0qL2csZzk9X3IoIlByb3BlcnRpZXMiLG51bGwse3htbG5zOmtpLkNVU1RfUFJPUFMsInhtbG5zOnZ0IjpraS52dH0pO3ZhciBQNT17VGl0bGU6IlRpdGxlIixTdWJqZWN0OiJTdWJqZWN0IixBdXRob3I6''@;'; put 'put ''IkF1dGhvciIsS2V5d29yZHM6IktleXdvcmRzIixDb21tZW50czoiRGVzY3JpcHRpb24iLExhc3RBdXRob3I6Ikxhc3RBdXRob3IiLFJldk51bWJlcjoiUmV2aXNpb24iLEFwcGxpY2F0aW9uOiJBcHBOYW1lIixMYXN0UHJpbnRlZDoiTGFzdFByaW50ZWQiLENyZWF0ZWREYXRlOiJDcmVhdGVk''@;'; put 'put ''IixNb2RpZmllZERhdGU6Ikxhc3RTYXZlZCIsQ2F0ZWdvcnk6IkNhdGVnb3J5IixNYW5hZ2VyOiJNYW5hZ2VyIixDb21wYW55OiJDb21wYW55IixBcHBWZXJzaW9uOiJWZXJzaW9uIixDb250ZW50U3RhdHVzOiJDb250ZW50U3RhdHVzIixJZGVudGlmaWVyOiJJZGVudGlmaWVyIixMYW5ndWFn''@;'; put 'put ''ZToiTGFuZ3VhZ2UifSxGNT13ZShQNSk7ZnVuY3Rpb24gamYoeSxQLEwpe3lbUD1GNVtQXXx8UF09TH1mdW5jdGlvbiB6Zih5KXt2YXIgUD15LnJlYWRfc2hpZnQoNCksTD15LnJlYWRfc2hpZnQoNCk7cmV0dXJuIG5ldyBEYXRlKDFlMyooTC8xZTcqTWF0aC5wb3coMiwzMikrUC8xZTctMTE2''@;'; put 'put ''NDQ0NzM2MDApKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuMDAwLywiIil9ZnVuY3Rpb24gdzEoeSxQLEwpe3ZhciBYPXkubCxuZT15LnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihMKWZvcig7eS5sLVgmMzspKyt5Lmw7cmV0dXJuIG5lfWZ1bmN0aW9uIHlnKHksUCxMKXt2YXIgWD15''@;'; put 'put ''LnJlYWRfc2hpZnQoMCwibHB3c3RyIik7cmV0dXJuIEwmJih5LmwrPTQtKFgubGVuZ3RoKzEmMykmMyksWH1mdW5jdGlvbiBtOSh5LFAsTCl7cmV0dXJuIDMxPT09UD95Zyh5KTp3MSh5LDAsTCl9ZnVuY3Rpb24gSDUoeSxQLEwpe3JldHVybiBtOSh5LFAsITE9PT1MPzA6NCl9ZnVuY3Rpb24g''@;'; put 'put ''XzkoeSl7dmFyIFA9eS5sLEw9eTIoeSxqbik7cmV0dXJuIDA9PXlbeS5sXSYmMD09eVt5LmwrMV0mJnkubC1QJjImJih5LmwrPTIpLFtMLHkyKHksYWwpXX1mdW5jdGlvbiB3Zyh5LFApe2Zvcih2YXIgTD15LnJlYWRfc2hpZnQoNCksWD17fSxuZT0wO25lIT1MOysrbmUpe3ZhciBmZT15LnJl''@;'; put 'put ''YWRfc2hpZnQoNCksYmU9eS5yZWFkX3NoaWZ0KDQpO1hbZmVdPXkucmVhZF9zaGlmdChiZSwxMjAwPT09UD8idXRmMTZsZSI6InV0ZjgiKS5yZXBsYWNlKF8sIiIpLnJlcGxhY2UocCwiISIpLDEyMDA9PT1QJiZiZSUyJiYoeS5sKz0yKX1yZXR1cm4gMyZ5LmwmJih5Lmw9eS5sPj4zPDwyKSxY''@;'; put 'put ''fWZ1bmN0aW9uIGcwKHkpe3ZhciBQPXkucmVhZF9zaGlmdCg0KSxMPXkuc2xpY2UoeS5sLHkubCtQKTtyZXR1cm4geS5sKz1QLCgzJlApPjAmJih5LmwrPTQtKDMmUCkmMyksTH1mdW5jdGlvbiB5Mih5LFAsTCl7dmFyIG5lLFg9eS5yZWFkX3NoaWZ0KDIpLGZlPUx8fHt9O2lmKHkubCs9MixQ''@;'; put 'put ''IT09SnUmJlghPT1QJiYtMT09PU15LmluZGV4T2YoUCkmJig0MTI2IT0oNjU1MzQmUCl8fDQxMjYhPSg2NTUzNCZYKSkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0eXBlICIrUCsiIHNhdyAiK1gpO3N3aXRjaChQPT09SnU/WDpQKXtjYXNlIDI6cmV0dXJuIG5lPXkucmVhZF9zaGlmdCgy''@;'; put 'put ''LCJpIiksZmUucmF3fHwoeS5sKz0yKSxuZTtjYXNlIDM6cmV0dXJuIHkucmVhZF9zaGlmdCg0LCJpIik7Y2FzZSAxMTpyZXR1cm4gMCE9PXkucmVhZF9zaGlmdCg0KTtjYXNlIDE5OnJldHVybiB5LnJlYWRfc2hpZnQoNCk7Y2FzZSAzMDpyZXR1cm4gdzEoeSwwLDQpLnJlcGxhY2UoXywiIik7''@;'; put 'put ''Y2FzZSAzMTpyZXR1cm4geWcoeSk7Y2FzZSA2NDpyZXR1cm4gemYoeSk7Y2FzZSA2NTpyZXR1cm4gZzAoeSk7Y2FzZSA3MTpyZXR1cm4gZnVuY3Rpb24gYjkoeSl7dmFyIFA9e307cmV0dXJuIFAuU2l6ZT15LnJlYWRfc2hpZnQoNCkseS5sKz1QLlNpemUrMy0oUC5TaXplLTEpJTQsUH0oeSk7''@;'; put 'put ''Y2FzZSA4MDpyZXR1cm4gSDUoeSxYLCFmZS5yYXcpLnJlcGxhY2UoXywiIik7Y2FzZSA4MTpyZXR1cm4gZnVuY3Rpb24gdjkoeSxQKXtpZighUCl0aHJvdyBuZXcgRXJyb3IoIlZ0VW5hbGlnbmVkU3RyaW5nIG11c3QgaGF2ZSBwb3NpdGl2ZSBsZW5ndGgiKTtyZXR1cm4gbTkoeSxQLDApfSh5''@;'; put 'put ''LFgpLnJlcGxhY2UoXywiIik7Y2FzZSA0MTA4OnJldHVybiBmdW5jdGlvbiBPeSh5KXtmb3IodmFyIFA9eS5yZWFkX3NoaWZ0KDQpLEw9W10sWD0wO1g8UC8yOysrWClMLnB1c2goXzkoeSkpO3JldHVybiBMfSh5KTtjYXNlIDQxMjY6Y2FzZSA0MTI3OnJldHVybiA0MTI3PT1YP2Z1bmN0aW9u''@;'; put 'put ''IFVmKHkpe2Zvcih2YXIgUD15LnJlYWRfc2hpZnQoNCksTD1bXSxYPTA7WCE9UDsrK1gpe3ZhciBuZT15Lmw7TFtYXT15LnJlYWRfc2hpZnQoMCwibHB3c3RyIikucmVwbGFjZShfLCIiKSx5LmwtbmUmMiYmKHkubCs9Mil9cmV0dXJuIEx9KHkpOmZ1bmN0aW9uIEx5KHkpe2Zvcih2YXIgUD15''@;'; put 'put ''LnJlYWRfc2hpZnQoNCksTD1bXSxYPTA7WCE9UDsrK1gpTFtYXT15LnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKS5yZXBsYWNlKF8sIiIpO3JldHVybiBMfSh5KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZWRQcm9wZXJ0eVZhbHVlIHVucmVjb2duaXplZCB0eXBlICIrUCsiICIrWCl9''@;'; put 'put ''fWZ1bmN0aW9uIHcyKHksUCl7dmFyIEw9eHIoNCksWD14cig0KTtzd2l0Y2goTC53cml0ZV9zaGlmdCg0LDgwPT15PzMxOnkpLHkpe2Nhc2UgMzpYLndyaXRlX3NoaWZ0KC00LFApO2JyZWFrO2Nhc2UgNTooWD14cig4KSkud3JpdGVfc2hpZnQoOCxQLCJmIik7YnJlYWs7Y2FzZSAxMTpYLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsUD8xOjApO2JyZWFrO2Nhc2UgNjQ6WD1mdW5jdGlvbiBYbCh5KXt2YXIgTD0oInN0cmluZyI9PXR5cGVvZiB5P25ldyBEYXRlKERhdGUucGFyc2UoeSkpOnkpLmdldFRpbWUoKS8xZTMrMTE2NDQ0NzM2MDAsWD1MJU1hdGgucG93KDIsMzIpLG5lPShMLVgpL01hdGgucG93''@;'; put 'put ''KDIsMzIpO25lKj0xZTc7dmFyIGZlPShYKj0xZTcpL01hdGgucG93KDIsMzIpfDA7ZmU+MCYmKFglPU1hdGgucG93KDIsMzIpLG5lKz1mZSk7dmFyIGJlPXhyKDgpO3JldHVybiBiZS53cml0ZV9zaGlmdCg0LFgpLGJlLndyaXRlX3NoaWZ0KDQsbmUpLGJlfShQKTticmVhaztjYXNlIDMxOmNh''@;'; put 'put ''c2UgODA6Zm9yKChYPXhyKDQrMiooUC5sZW5ndGgrMSkrKFAubGVuZ3RoJTI/MDoyKSkpLndyaXRlX3NoaWZ0KDQsUC5sZW5ndGgrMSksWC53cml0ZV9zaGlmdCgwLFAsImRiY3MiKTtYLmwhPVgubGVuZ3RoOylYLndyaXRlX3NoaWZ0KDEsMCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIlR5cGVkUHJvcGVydHlWYWx1ZSB1bnJlY29nbml6ZWQgdHlwZSAiK3krIiAiK1ApfXJldHVybiBrKFtMLFhdKX1mdW5jdGlvbiBzZCh5LFApe3ZhciBMPXkubCxYPXkucmVhZF9zaGlmdCg0KSxuZT15LnJlYWRfc2hpZnQoNCksZmU9W10sYmU9MCx2ZT0wLHllPS0xLFZlPXt9O2Zvcihi''@;'; put 'put ''ZT0wO2JlIT1uZTsrK2JlKXt2YXIgemU9eS5yZWFkX3NoaWZ0KDQpLFdlPXkucmVhZF9zaGlmdCg0KTtmZVtiZV09W3plLFdlK0xdfWZlLnNvcnQoZnVuY3Rpb24oa3QsRHQpe3JldHVybiBrdFsxXS1EdFsxXX0pO3ZhciBydD17fTtmb3IoYmU9MDtiZSE9bmU7KytiZSl7aWYoeS5sIT09ZmVb''@;'; put 'put ''YmVdWzFdKXt2YXIgbHQ9ITA7aWYoYmU+MCYmUClzd2l0Y2goUFtmZVtiZS0xXVswXV0udCl7Y2FzZSAyOnkubCsyPT09ZmVbYmVdWzFdJiYoeS5sKz0yLGx0PSExKTticmVhaztjYXNlIDgwOmNhc2UgNDEwODp5Lmw8PWZlW2JlXVsxXSYmKHkubD1mZVtiZV1bMV0sbHQ9ITEpfWlmKCghUHx8''@;'; put 'put ''MD09YmUpJiZ5Lmw8PWZlW2JlXVsxXSYmKGx0PSExLHkubD1mZVtiZV1bMV0pLGx0KXRocm93IG5ldyBFcnJvcigiUmVhZCBFcnJvcjogRXhwZWN0ZWQgYWRkcmVzcyAiK2ZlW2JlXVsxXSsiIGF0ICIreS5sKyIgOiIrYmUpfWlmKFApe3ZhciBDdD1QW2ZlW2JlXVswXV07aWYocnRbQ3Qubl09''@;'; put 'put ''eTIoeSxDdC50LHtyYXc6ITB9KSwidmVyc2lvbiI9PT1DdC5wJiYocnRbQ3Qubl09U3RyaW5nKHJ0W0N0Lm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKDY1NTM1JnJ0W0N0Lm5dKSkuc2xpY2UoLTQpKSwiQ29kZVBhZ2UiPT1DdC5uKXN3aXRjaChydFtDdC5uXSl7Y2FzZSAwOnJ0W0N0Lm5d''@;'; put 'put ''PTEyNTI7Y2FzZSA4NzQ6Y2FzZSA5MzI6Y2FzZSA5MzY6Y2FzZSA5NDk6Y2FzZSA5NTA6Y2FzZSAxMjUwOmNhc2UgMTI1MTpjYXNlIDEyNTM6Y2FzZSAxMjU0OmNhc2UgMTI1NTpjYXNlIDEyNTY6Y2FzZSAxMjU3OmNhc2UgMTI1ODpjYXNlIDFlNDpjYXNlIDEyMDA6Y2FzZSAxMjAxOmNhc2Ug''@;'; put 'put ''MTI1MjpjYXNlIDY1ZTM6Y2FzZS01MzY6Y2FzZSA2NTAwMTpjYXNlLTUzNTp6KHZlPXJ0W0N0Lm5dPj4+MCY2NTUzNSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvZGVQYWdlOiAiK3J0W0N0Lm5dKX19ZWxzZSBpZigxPT09ZmVbYmVdWzBdKXtpZih2ZT1y''@;'; put 'put ''dC5Db2RlUGFnZT15Mih5LFFkKSx6KHZlKSwtMSE9PXllKXt2YXIgYXQ9eS5sO3kubD1mZVt5ZV1bMV0sVmU9d2coeSx2ZSkseS5sPWF0fX1lbHNlIGlmKDA9PT1mZVtiZV1bMF0pe2lmKDA9PT12ZSl7eWU9YmUseS5sPWZlW2JlKzFdWzFdO2NvbnRpbnVlfVZlPXdnKHksdmUpfWVsc2V7dmFy''@;'; put 'put ''IFB0LHZ0PVZlW2ZlW2JlXVswXV07c3dpdGNoKHlbeS5sXSl7Y2FzZSA2NTp5LmwrPTQsUHQ9ZzAoeSk7YnJlYWs7Y2FzZSAzMDpjYXNlIDMxOnkubCs9NCxQdD1INSh5LHlbeS5sLTRdKS5yZXBsYWNlKC9cdTAwMDArJC8sIiIpO2JyZWFrO2Nhc2UgMzp5LmwrPTQsUHQ9eS5yZWFkX3NoaWZ0''@;'; put 'put ''KDQsImkiKTticmVhaztjYXNlIDE5OnkubCs9NCxQdD15LnJlYWRfc2hpZnQoNCk7YnJlYWs7Y2FzZSA1OnkubCs9NCxQdD15LnJlYWRfc2hpZnQoOCwiZiIpO2JyZWFrO2Nhc2UgMTE6eS5sKz00LFB0PUZvKHksNCk7YnJlYWs7Y2FzZSA2NDp5LmwrPTQsUHQ9RnQoemYoeSkpO2JyZWFrO2Rl''@;'; put 'put ''ZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnBhcnNlZCB2YWx1ZTogIit5W3kubF0pfXJ0W3Z0XT1QdH19cmV0dXJuIHkubD1MK1gscnR9dmFyIFY1PVsiQ29kZVBhZ2UiLCJUaHVtYm5haWwiLCJfUElEX0xJTktCQVNFIiwiX1BJRF9ITElOS1MiLCJTeXN0ZW1JZGVudGlmaWVyIiwiRk1USUQi''@;'; put 'put ''XS5jb25jYXQoWyJXb3Jrc2hlZXRzIiwiU2hlZXROYW1lcyIsIk5hbWVkUmFuZ2VzIiwiRGVmaW5lZE5hbWVzIiwiQ2hhcnRzaGVldHMiLCJDaGFydE5hbWVzIl0pO2Z1bmN0aW9uIEpsKHkpe3N3aXRjaCh0eXBlb2YgeSl7Y2FzZSJib29sZWFuIjpyZXR1cm4gMTE7Y2FzZSJudW1iZXIiOnJl''@;'; put 'put ''dHVybigwfHkpPT15PzM6NTtjYXNlInN0cmluZyI6cmV0dXJuIDMxO2Nhc2Uib2JqZWN0IjppZih5IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gNjR9cmV0dXJuLTF9ZnVuY3Rpb24gQjUoeSxQLEwpe3ZhciBYPXhyKDgpLG5lPVtdLGZlPVtdLGJlPTgsdmU9MCx5ZT14cig4KSxWZT14cig4KTtp''@;'; put 'put ''Zih5ZS53cml0ZV9zaGlmdCg0LDIpLHllLndyaXRlX3NoaWZ0KDQsMTIwMCksVmUud3JpdGVfc2hpZnQoNCwxKSxmZS5wdXNoKHllKSxuZS5wdXNoKFZlKSxiZSs9OCt5ZS5sZW5ndGgsIVApeyhWZT14cig4KSkud3JpdGVfc2hpZnQoNCwwKSxuZS51bnNoaWZ0KFZlKTt2YXIgemU9W3hyKDQp''@;'; put 'put ''XTtmb3IoemVbMF0ud3JpdGVfc2hpZnQoNCx5Lmxlbmd0aCksdmU9MDt2ZTx5Lmxlbmd0aDsrK3ZlKXt2YXIgV2U9eVt2ZV1bMF07Zm9yKCh5ZT14cig4KzIqKFdlLmxlbmd0aCsxKSsoV2UubGVuZ3RoJTI/MDoyKSkpLndyaXRlX3NoaWZ0KDQsdmUrMikseWUud3JpdGVfc2hpZnQoNCxXZS5s''@;'; put 'put ''ZW5ndGgrMSkseWUud3JpdGVfc2hpZnQoMCxXZSwiZGJjcyIpO3llLmwhPXllLmxlbmd0aDspeWUud3JpdGVfc2hpZnQoMSwwKTt6ZS5wdXNoKHllKX15ZT1rKHplKSxmZS51bnNoaWZ0KHllKSxiZSs9OCt5ZS5sZW5ndGh9Zm9yKHZlPTA7dmU8eS5sZW5ndGg7Kyt2ZSlpZigoIVB8fFBbeVt2''@;'; put 'put ''ZV1bMF1dKSYmIShWNS5pbmRleE9mKHlbdmVdWzBdKT4tMSkmJm51bGwhPXlbdmVdWzFdKXt2YXIgcnQ9eVt2ZV1bMV0sbHQ9MDtpZihQKXt2YXIgQ3Q9TFtsdD0rUFt5W3ZlXVswXV1dO2lmKCJ2ZXJzaW9uIj09Q3QucCYmInN0cmluZyI9PXR5cGVvZiBydCl7dmFyIGF0PXJ0LnNwbGl0KCIu''@;'; put 'put ''Iik7cnQ9KCthdFswXTw8MTYpKygrYXRbMV18fDApfXllPXcyKEN0LnQscnQpfWVsc2V7dmFyIHZ0PUpsKHJ0KTstMT09dnQmJih2dD0zMSxydD1TdHJpbmcocnQpKSx5ZT13Mih2dCxydCl9ZmUucHVzaCh5ZSksKFZlPXhyKDgpKS53cml0ZV9zaGlmdCg0LFA/bHQ6Mit2ZSksbmUucHVzaChW''@;'; put 'put ''ZSksYmUrPTgreWUubGVuZ3RofXZhciBQdD04KihmZS5sZW5ndGgrMSk7Zm9yKHZlPTA7dmU8ZmUubGVuZ3RoOysrdmUpbmVbdmVdLndyaXRlX3NoaWZ0KDQsUHQpLFB0Kz1mZVt2ZV0ubGVuZ3RoO3JldHVybiBYLndyaXRlX3NoaWZ0KDQsYmUpLFgud3JpdGVfc2hpZnQoNCxmZS5sZW5ndGgp''@;'; put 'put ''LGsoW1hdLmNvbmNhdChuZSkuY29uY2F0KGZlKSl9ZnVuY3Rpb24gajUoeSxQLEwpe3ZhciBYPXkuY29udGVudDtpZighWClyZXR1cm57fTtncyhYLDApO3ZhciBuZSxmZSxiZSx2ZSx5ZT0wO1guY2hrKCJmZWZmIiwiQnl0ZSBPcmRlcjogIiksWC5yZWFkX3NoaWZ0KDIpO3ZhciBWZT1YLnJl''@;'; put 'put ''YWRfc2hpZnQoNCksemU9WC5yZWFkX3NoaWZ0KDE2KTtpZih6ZSE9PURlLnV0aWxzLmNvbnN0cy5IRUFERVJfQ0xTSUQmJnplIT09TCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBQcm9wZXJ0eVNldCBDTFNJRCAiK3plKTtpZigxIT09KG5lPVgucmVhZF9zaGlmdCg0KSkmJjIhPT1uZSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlVucmVjb2duaXplZCAjU2V0czogIituZSk7aWYoZmU9WC5yZWFkX3NoaWZ0KDE2KSx2ZT1YLnJlYWRfc2hpZnQoNCksMT09PW5lJiZ2ZSE9PVgubCl0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBtaXNtYXRjaDogIit2ZSsiICE9PSAiK1gubCk7Mj09PW5lJiYoYmU9WC5yZWFk''@;'; put 'put ''X3NoaWZ0KDE2KSx5ZT1YLnJlYWRfc2hpZnQoNCkpO3ZhciBDdCxXZT1zZChYLFApLHJ0PXtTeXN0ZW1JZGVudGlmaWVyOlZlfTtmb3IodmFyIGx0IGluIFdlKXJ0W2x0XT1XZVtsdF07aWYocnQuRk1USUQ9ZmUsMT09PW5lKXJldHVybiBydDtpZih5ZS1YLmw9PTImJihYLmwrPTIpLFgubCE9''@;'; put 'put ''PXllKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrWC5sKyIgIT09ICIreWUpO3RyeXtDdD1zZChYLG51bGwpfWNhdGNoe31mb3IobHQgaW4gQ3QpcnRbbHRdPUN0W2x0XTtyZXR1cm4gcnQuRk1USUQ9W2ZlLGJlXSxydH1mdW5jdGlvbiBwaSh5LFAsTCxYLG5lLGZlKXt2''@;'; put 'put ''YXIgYmU9eHIobmU/Njg6NDgpLHZlPVtiZV07YmUud3JpdGVfc2hpZnQoMiw2NTUzNCksYmUud3JpdGVfc2hpZnQoMiwwKSxiZS53cml0ZV9zaGlmdCg0LDg0MjQxMjU5OSksYmUud3JpdGVfc2hpZnQoMTYsRGUudXRpbHMuY29uc3RzLkhFQURFUl9DTFNJRCwiaGV4IiksYmUud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCxuZT8yOjEpLGJlLndyaXRlX3NoaWZ0KDE2LFAsImhleCIpLGJlLndyaXRlX3NoaWZ0KDQsbmU/Njg6NDgpO3ZhciB5ZT1CNSh5LEwsWCk7aWYodmUucHVzaCh5ZSksbmUpe3ZhciBWZT1CNShuZSxudWxsLG51bGwpO2JlLndyaXRlX3NoaWZ0KDE2LGZlLCJoZXgiKSxiZS53cml0ZV9z''@;'; put 'put ''aGlmdCg0LDY4K3llLmxlbmd0aCksdmUucHVzaChWZSl9cmV0dXJuIGsodmUpfWZ1bmN0aW9uIG5oKHksUCl7cmV0dXJuIHkucmVhZF9zaGlmdChQKSxudWxsfWZ1bmN0aW9uIEZvKHksUCl7cmV0dXJuIDE9PT15LnJlYWRfc2hpZnQoUCl9ZnVuY3Rpb24gX2MoeSxQKXtyZXR1cm4gUHx8KFA9''@;'; put 'put ''eHIoMikpLFAud3JpdGVfc2hpZnQoMiwrISF5KSxQfWZ1bmN0aW9uIEhsKHkpe3JldHVybiB5LnJlYWRfc2hpZnQoMiwidSIpfWZ1bmN0aW9uIGZ1KHksUCl7cmV0dXJuIFB8fChQPXhyKDIpKSxQLndyaXRlX3NoaWZ0KDIseSksUH1mdW5jdGlvbiBFcCh5LFApe3JldHVybiBmdW5jdGlvbiB5''@;'; put 'put ''OSh5LFAsTCl7Zm9yKHZhciBYPVtdLG5lPXkubCtQO3kubDxuZTspWC5wdXNoKEwoeSxuZS15LmwpKTtpZihuZSE9PXkubCl0aHJvdyBuZXcgRXJyb3IoIlNsdXJwIGVycm9yIik7cmV0dXJuIFh9KHksUCxIbCl9ZnVuY3Rpb24gd2koeSxQLEwpe3JldHVybiBMfHwoTD14cigyKSksTC53cml0''@;'; put 'put ''ZV9zaGlmdCgxLCJlIj09UD8reTorISF5KSxMLndyaXRlX3NoaWZ0KDEsImUiPT1QPzE6MCksTH1mdW5jdGlvbiBfbyh5LFAsTCl7dmFyIFg9eS5yZWFkX3NoaWZ0KEwmJkwuYmlmZj49MTI/MjoxKSxuZT0ic2Jjcy1jb250IixmZT1PO0wmJkwuYmlmZj49OCYmKE89MTIwMCksTCYmOCE9TC5i''@;'; put 'put ''aWZmPzEyPT1MLmJpZmYmJihuZT0id3N0ciIpOnkucmVhZF9zaGlmdCgxKSYmKG5lPSJkYmNzLWNvbnQiKSxMLmJpZmY+PTImJkwuYmlmZjw9NSYmKG5lPSJjcHN0ciIpO3ZhciB2ZT1YP3kucmVhZF9zaGlmdChYLG5lKToiIjtyZXR1cm4gTz1mZSx2ZX1mdW5jdGlvbiBFbCh5KXt2YXIgUD1P''@;'; put 'put ''O089MTIwMDt2YXIgeWUsTD15LnJlYWRfc2hpZnQoMiksWD15LnJlYWRfc2hpZnQoMSksbmU9NCZYLGZlPTgmWCxiZT0xKygxJlgpLHZlPTAsVmU9e307ZmUmJih2ZT15LnJlYWRfc2hpZnQoMikpLG5lJiYoeWU9eS5yZWFkX3NoaWZ0KDQpKTt2YXIgV2U9MD09PUw/IiI6eS5yZWFkX3NoaWZ0''@;'; put 'put ''KEwsMj09YmU/ImRiY3MtY29udCI6InNiY3MtY29udCIpO2lmKGZlKWZvcihWZS5fUj1bXTt2ZS0tID4wOylWZS5fUi5wdXNoKHtpZHg6eS5yZWFkX3NoaWZ0KDIpLGlmbnQ6eS5yZWFkX3NoaWZ0KDIpfSk7cmV0dXJuIG5lJiYoeS5sKz15ZSksVmUudD1XZSxmZXx8KFZlLnI9Ijx0PiIrVmUu''@;'; put 'put ''dCsiPC90PiIpLE89UCxWZX1mdW5jdGlvbiBRbCh5LFApe3ZhciBMPXkuUiYmeS5SLmxlbmd0aHx8eS5yO3kuciYmKHkuUj1FZyh5LnIpKTt2YXIgWD0iIixuZT0wO0w/eS5SLmZvckVhY2goZnVuY3Rpb24oQ3Qpe25lKyssWCs9Q3Qudnx8IiJ9KTooWD15LnR8fCIiLG5lPTEpO3ZhciBmZT14''@;'; put 'put ''cigzKyhuZT4xPzI6MCkpO2ZlLndyaXRlX3NoaWZ0KDIsWC5sZW5ndGgpLGZlLndyaXRlX3NoaWZ0KDEsMXwobmU+MT84OjApKSxuZT4xJiZmZS53cml0ZV9zaGlmdCgyLG5lKTt2YXIgYmU9eHIoMipYLmxlbmd0aCk7YmUud3JpdGVfc2hpZnQoMipYLmxlbmd0aCxYLCJ1dGYxNmxlIik7dmFy''@;'; put 'put ''IHZlPVtmZSxiZV07aWYoTCl7dmFyIHllPXhyKDQqeS5SLmxlbmd0aCksVmU9MDt2ZS5wdXNoKHllKTtmb3IodmFyIHplPTA7emU8eS5SLmxlbmd0aDsrK3plKXt2YXIgV2U9eS5SW3plXTt5ZS53cml0ZV9zaGlmdCgyLFZlKSxWZSs9KFdlLnZ8fCIiKS5sZW5ndGg7dmFyIHJ0PVdlLnM/bXUo''@;'; put 'put ''UC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpXZS5zfSxQKTowLGx0PVAuY2VsbFhmc1tydF0uZm9udElkO3llLndyaXRlX3NoaWZ0KDIsbHQ8ND9sdDpsdCsxKX19cmV0dXJuIGsodmUpfWZ1bmN0aW9uIGdsKHksUCxMKXtpZihMKXtpZihMLmJpZmY+PTImJkwuYmlmZjw9''@;'; put 'put ''NSlyZXR1cm4geS5yZWFkX3NoaWZ0KFAsImNwc3RyIik7aWYoTC5iaWZmPj0xMilyZXR1cm4geS5yZWFkX3NoaWZ0KFAsImRiY3MtY29udCIpfXZhciBuZT15LnJlYWRfc2hpZnQoMSk7cmV0dXJuIHkucmVhZF9zaGlmdChQLDA9PT1uZT8ic2Jjcy1jb250IjoiZGJjcy1jb250Iil9ZnVuY3Rp''@;'; put 'put ''b24gYmMoeSxQLEwpe3ZhciBYPXkucmVhZF9zaGlmdChMJiYyPT1MLmJpZmY/MToyKTtyZXR1cm4gMD09PVg/KHkubCsrLCIiKTpnbCh5LFgsTCl9ZnVuY3Rpb24gbTAoeSxQLEwpe2lmKEwuYmlmZj41KXJldHVybiBiYyh5LDAsTCk7dmFyIFg9eS5yZWFkX3NoaWZ0KDEpO3JldHVybiAwPT09''@;'; put 'put ''WD8oeS5sKyssIiIpOnkucmVhZF9zaGlmdChYLEwuYmlmZjw9NHx8IXkubGVucz8iY3BzdHIiOiJzYmNzLWNvbnQiKX1mdW5jdGlvbiBDYSh5LFAsTCl7cmV0dXJuIEx8fChMPXhyKDMrMip5Lmxlbmd0aCkpLEwud3JpdGVfc2hpZnQoMix5Lmxlbmd0aCksTC53cml0ZV9zaGlmdCgxLDEpLEwu''@;'; put 'put ''d3JpdGVfc2hpZnQoMzEseSwidXRmMTZsZSIpLEx9ZnVuY3Rpb24gVHAoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDQpO3JldHVybiBQPjA/eS5yZWFkX3NoaWZ0KFAsInV0ZjE2bGUiKS5yZXBsYWNlKF8sIiIpOiIifWZ1bmN0aW9uIHB1KHksUCl7UHx8KFA9eHIoNisyKnkubGVuZ3RoKSksUC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LDEreS5sZW5ndGgpO2Zvcih2YXIgTD0wO0w8eS5sZW5ndGg7KytMKVAud3JpdGVfc2hpZnQoMix5LmNoYXJDb2RlQXQoTCkpO3JldHVybiBQLndyaXRlX3NoaWZ0KDIsMCksUH1mdW5jdGlvbiBrcCh5KXt2YXIgUD14cig1MTIpLEw9MCxYPXkuVGFyZ2V0OyJmaWxlOi8v''@;'; put 'put ''Ij09WC5zbGljZSgwLDcpJiYoWD1YLnNsaWNlKDcpKTt2YXIgbmU9WC5pbmRleE9mKCIjIiksZmU9bmU+LTE/MzE6MjM7c3dpdGNoKFguY2hhckF0KDApKXtjYXNlIiMiOmZlPTI4O2JyZWFrO2Nhc2UiLiI6ZmUmPS0zfVAud3JpdGVfc2hpZnQoNCwyKSxQLndyaXRlX3NoaWZ0KDQsZmUpO3Zh''@;'; put 'put ''ciBiZT1bOCw2ODE1ODI3LDY2MTkyMzcsNDg0OTc4MCw4M107Zm9yKEw9MDtMPGJlLmxlbmd0aDsrK0wpUC53cml0ZV9zaGlmdCg0LGJlW0xdKTtpZigyOD09ZmUpcHUoWD1YLnNsaWNlKDEpLFApO2Vsc2UgaWYoMiZmZSl7Zm9yKGJlPSJlMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAw''@;'; put 'put ''MCBhYSAwMCA0YiBhOSAwYiIuc3BsaXQoIiAiKSxMPTA7TDxiZS5sZW5ndGg7KytMKVAud3JpdGVfc2hpZnQoMSxwYXJzZUludChiZVtMXSwxNikpO3ZhciB2ZT1uZT4tMT9YLnNsaWNlKDAsbmUpOlg7Zm9yKFAud3JpdGVfc2hpZnQoNCwyKih2ZS5sZW5ndGgrMSkpLEw9MDtMPHZlLmxlbmd0''@;'; put 'put ''aDsrK0wpUC53cml0ZV9zaGlmdCgyLHZlLmNoYXJDb2RlQXQoTCkpO1Aud3JpdGVfc2hpZnQoMiwwKSw4JmZlJiZwdShuZT4tMT9YLnNsaWNlKG5lKzEpOiIiLFApfWVsc2V7Zm9yKGJlPSIwMyAwMyAwMCAwMCAwMCAwMCAwMCAwMCBjMCAwMCAwMCAwMCAwMCAwMCAwMCA0NiIuc3BsaXQoIiAi''@;'; put 'put ''KSxMPTA7TDxiZS5sZW5ndGg7KytMKVAud3JpdGVfc2hpZnQoMSxwYXJzZUludChiZVtMXSwxNikpO2Zvcih2YXIgeWU9MDsiLi4vIj09WC5zbGljZSgzKnllLDMqeWUrMyl8fCIuLlxcIj09WC5zbGljZSgzKnllLDMqeWUrMyk7KSsreWU7Zm9yKFAud3JpdGVfc2hpZnQoMix5ZSksUC53cml0''@;'; put 'put ''ZV9zaGlmdCg0LFgubGVuZ3RoLTMqeWUrMSksTD0wO0w8WC5sZW5ndGgtMyp5ZTsrK0wpUC53cml0ZV9zaGlmdCgxLDI1NSZYLmNoYXJDb2RlQXQoTCszKnllKSk7Zm9yKFAud3JpdGVfc2hpZnQoMSwwKSxQLndyaXRlX3NoaWZ0KDIsNjU1MzUpLFAud3JpdGVfc2hpZnQoMiw1NzAwNSksTD0w''@;'; put 'put ''O0w8NjsrK0wpUC53cml0ZV9zaGlmdCg0LDApfXJldHVybiBQLnNsaWNlKDAsUC5sKX1mdW5jdGlvbiBTMih5KXtyZXR1cm5beS5yZWFkX3NoaWZ0KDEpLHkucmVhZF9zaGlmdCgxKSx5LnJlYWRfc2hpZnQoMSkseS5yZWFkX3NoaWZ0KDEpXX1mdW5jdGlvbiBDMSh5LFApe3ZhciBMPVMyKHkp''@;'; put 'put ''O3JldHVybiBMWzNdPTAsTH1mdW5jdGlvbiBIdSh5KXtyZXR1cm57cjp5LnJlYWRfc2hpZnQoMiksYzp5LnJlYWRfc2hpZnQoMiksaXhmZTp5LnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIHJoKHksUCxMLFgpe3JldHVybiBYfHwoWD14cig2KSksWC53cml0ZV9zaGlmdCgyLHkpLFgud3JpdGVf''@;'; put 'put ''c2hpZnQoMixQKSxYLndyaXRlX3NoaWZ0KDIsTHx8MCksWH1mdW5jdGlvbiBNMih5LFAsTCl7dmFyIFg9TC5iaWZmPjg/NDoyO3JldHVyblt5LnJlYWRfc2hpZnQoWCkseS5yZWFkX3NoaWZ0KFgsImkiKSx5LnJlYWRfc2hpZnQoWCwiaSIpXX1mdW5jdGlvbiBLbyh5KXtyZXR1cm5beS5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpLFkwKHkpXX1mdW5jdGlvbiBvaCh5KXt2YXIgUD15LnJlYWRfc2hpZnQoMiksTD15LnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6eS5yZWFkX3NoaWZ0KDIpLHI6UH0sZTp7Yzp5LnJlYWRfc2hpZnQoMikscjpMfX19ZnVuY3Rpb24gRGMoeSxQKXtyZXR1cm4gUHx8KFA9eHIo''@;'; put 'put ''OCkpLFAud3JpdGVfc2hpZnQoMix5LnMuciksUC53cml0ZV9zaGlmdCgyLHkuZS5yKSxQLndyaXRlX3NoaWZ0KDIseS5zLmMpLFAud3JpdGVfc2hpZnQoMix5LmUuYyksUH1mdW5jdGlvbiBBcCh5KXt2YXIgUD15LnJlYWRfc2hpZnQoMiksTD15LnJlYWRfc2hpZnQoMik7cmV0dXJue3M6e2M6''@;'; put 'put ''eS5yZWFkX3NoaWZ0KDEpLHI6UH0sZTp7Yzp5LnJlYWRfc2hpZnQoMSkscjpMfX19dmFyIGtsPUFwO2Z1bmN0aW9uIFNnKHkpe3kubCs9NDt2YXIgUD15LnJlYWRfc2hpZnQoMiksTD15LnJlYWRfc2hpZnQoMiksWD15LnJlYWRfc2hpZnQoMik7cmV0dXJuIHkubCs9MTIsW0wsUCxYXX1mdW5j''@;'; put 'put ''dGlvbiB5Yyh5KXt5LmwrPTIseS5sKz15LnJlYWRfc2hpZnQoMil9dmFyIHgyPXswOnljLDQ6eWMsNTp5Yyw2OnljLDc6ZnVuY3Rpb24gWmMoeSl7cmV0dXJuIHkubCs9NCx5LmNmPXkucmVhZF9zaGlmdCgyKSx7fX0sODp5Yyw5OnljLDEwOnljLDExOnljLDEyOnljLDEzOmZ1bmN0aW9uIFVj''@;'; put 'put ''KHkpe3ZhciBQPXt9O3JldHVybiB5LmwrPTQseS5sKz0xNixQLmZTaGFyZWROb3RlPXkucmVhZF9zaGlmdCgyKSx5LmwrPTQsUH0sMTQ6eWMsMTU6eWMsMTY6eWMsMTc6eWMsMTg6eWMsMTk6eWMsMjA6eWMsMjE6U2d9O2Z1bmN0aW9uIGVjKHksUCl7dmFyIEw9e0JJRkZWZXI6MCxkdDowfTtz''@;'; put 'put ''d2l0Y2goTC5CSUZGVmVyPXkucmVhZF9zaGlmdCgyKSwoUC09Mik+PTImJihMLmR0PXkucmVhZF9zaGlmdCgyKSx5LmwtPTIpLEwuQklGRlZlcil7Y2FzZSAxNTM2OmNhc2UgMTI4MDpjYXNlIDEwMjQ6Y2FzZSA3Njg6Y2FzZSA1MTI6Y2FzZSAyOmNhc2UgNzpicmVhaztkZWZhdWx0OmlmKFA+''@;'; put 'put ''Nil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgQklGRiBWZXIgIitMLkJJRkZWZXIpfXJldHVybiB5LnJlYWRfc2hpZnQoUCksTH1mdW5jdGlvbiBEcCh5LFAsTCl7dmFyIFg9MTUzNixuZT0xNjtzd2l0Y2goTC5ib29rVHlwZSl7Y2FzZSJiaWZmOCI6Y2FzZSJ4bGEiOmJyZWFrO2Nhc2Ui''@;'; put 'put ''YmlmZjUiOlg9MTI4MCxuZT04O2JyZWFrO2Nhc2UiYmlmZjQiOlg9NCxuZT02O2JyZWFrO2Nhc2UiYmlmZjMiOlg9MyxuZT02O2JyZWFrO2Nhc2UiYmlmZjIiOlg9MixuZT00O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBCSUZGIHZlcnNpb24iKX12YXIgZmU9''@;'; put 'put ''eHIobmUpO3JldHVybiBmZS53cml0ZV9zaGlmdCgyLFgpLGZlLndyaXRlX3NoaWZ0KDIsUCksbmU+NCYmZmUud3JpdGVfc2hpZnQoMiwyOTI4MiksbmU+NiYmZmUud3JpdGVfc2hpZnQoMiwxOTk3KSxuZT44JiYoZmUud3JpdGVfc2hpZnQoMiw0OTE2MSksZmUud3JpdGVfc2hpZnQoMiwxKSxm''@;'; put 'put ''ZS53cml0ZV9zaGlmdCgyLDE3OTgpLGZlLndyaXRlX3NoaWZ0KDIsMCkpLGZlfWZ1bmN0aW9uIHNoKHksUCl7dmFyIEw9IVB8fFAuYmlmZj49OD8yOjEsWD14cig4K0wqeS5uYW1lLmxlbmd0aCk7WC53cml0ZV9zaGlmdCg0LHkucG9zKSxYLndyaXRlX3NoaWZ0KDEseS5oc3x8MCksWC53cml0''@;'; put 'put ''ZV9zaGlmdCgxLHkuZHQpLFgud3JpdGVfc2hpZnQoMSx5Lm5hbWUubGVuZ3RoKSxQLmJpZmY+PTgmJlgud3JpdGVfc2hpZnQoMSwxKSxYLndyaXRlX3NoaWZ0KEwqeS5uYW1lLmxlbmd0aCx5Lm5hbWUsUC5iaWZmPDg/InNiY3MiOiJ1dGYxNmxlIik7dmFyIG5lPVguc2xpY2UoMCxYLmwpO3Jl''@;'; put 'put ''dHVybiBuZS5sPVgubCxuZX1mdW5jdGlvbiBQcih5KXtyZXR1cm4geS5yZWFkX3NoaWZ0KDQpLEFjKHkpfWZ1bmN0aW9uIEpvKHkpe3JldHVybiB5LnJlYWRfc2hpZnQoNCksZHUoeSl9ZnVuY3Rpb24gWWMoeSxQLEwpe3JldHVybiB5LnJlYWRfc2hpZnQoNCksWkgoeSwwLEwpfWZ1bmN0aW9u''@;'; put 'put ''IGFoKHksUCxMKXt2YXIgWD0wO0wmJjI9PUwuYmlmZnx8KFg9eS5yZWFkX3NoaWZ0KDIpKTt2YXIgbmU9eS5yZWFkX3NoaWZ0KDIpO3JldHVybiBMJiYyPT1MLmJpZmYmJihYPTEtKG5lPj4xNSksbmUmPTMyNzY3KSxbe1Vuc3luY2VkOjEmWCxEeVplcm86KDImWCk+PjEsRXhBc2M6KDQmWCk+''@;'; put 'put ''PjIsRXhEc2M6KDgmWCk+PjN9LG5lXX1mdW5jdGlvbiBKRih5LFAsTCxYKXt2YXIgbmU9TCYmNT09TC5iaWZmO1h8fChYPXhyKG5lPzMrUC5sZW5ndGg6NSsyKlAubGVuZ3RoKSksWC53cml0ZV9zaGlmdCgyLHkpLFgud3JpdGVfc2hpZnQobmU/MToyLFAubGVuZ3RoKSxuZXx8WC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDEpLFgud3JpdGVfc2hpZnQoKG5lPzE6MikqUC5sZW5ndGgsUCxuZT8ic2JjcyI6InV0ZjE2bGUiKTt2YXIgZmU9WC5sZW5ndGg+WC5sP1guc2xpY2UoMCxYLmwpOlg7cmV0dXJuIG51bGw9PWZlLmwmJihmZS5sPWZlLmxlbmd0aCksZmV9dmFyIGxoPW0wO2Z1bmN0aW9uIFZ5KHks''@;'; put 'put ''UCxMKXt2YXIgWD15LmwrUCxuZT04IT1MLmJpZmYmJkwuYmlmZj8yOjQsZmU9eS5yZWFkX3NoaWZ0KG5lKSxiZT15LnJlYWRfc2hpZnQobmUpLHZlPXkucmVhZF9zaGlmdCgyKSx5ZT15LnJlYWRfc2hpZnQoMik7cmV0dXJuIHkubD1YLHtzOntyOmZlLGM6dmV9LGU6e3I6YmUsYzp5ZX19fWZ1''@;'; put 'put ''bmN0aW9uIE1nKHksUCxMLFgpe3ZhciBmZT0hTHx8IUwuYmlmZnx8OD09TC5iaWZmO1h8fChYPXhyKEwmJjU9PUwuYmlmZj8xNjoyMCkpLFgud3JpdGVfc2hpZnQoMixmZSYmTC5jZWxsU3R5bGVzJiZ5LmZvbnRJZCYmKHkuZm9udElkPDQ/eS5mb250SWQ6eS5mb250SWQrMSl8fDApO3ZhciBi''@;'; put 'put ''ZT0xO3kucHJvdGVjdGlvbiYmKHkucHJvdGVjdGlvbi5lZGl0YWJsZSYmKGJlJj0tMikseS5wcm90ZWN0aW9uLmhpZGRlbiYmKGJlfD0yKSkseS5zdHlsZT8oWC53cml0ZV9zaGlmdCgyLHkubnVtRm10SWR8fDApLFgud3JpdGVfc2hpZnQoMiw2NTUyNHxiZSkpOihYLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''eS5udW1GbXRJZHx8MCksWC53cml0ZV9zaGlmdCgyLFA8PDR8YmUpKTt2YXIgdmU9eS5hbGlnbm1lbnR8fHt9O2lmKGZlKXt2YXIgeWU9MCxWZT0wO1BnLmluZGV4T2YodmUuaG9yaXpvbnRhbCk+LTEmJih5ZXw9UGcuaW5kZXhPZih2ZS5ob3Jpem9udGFsKSksdmUud3JhcFRleHQmJih5ZXw9''@;'; put 'put ''OCksdDYuaW5kZXhPZih2ZS52ZXJ0aWNhbCk+LTE/eWV8PXQ2LmluZGV4T2YodmUudmVydGljYWwpPDw0Om51bGw9PXZlLnZlcnRpY2FsJiYoeWV8PTMyKSxYLndyaXRlX3NoaWZ0KDEseWUpLFgud3JpdGVfc2hpZnQoMSwwKSx2ZS5zaHJpbmtUb0ZpdCYmKFZlfD0xNiksWC53cml0ZV9zaGlm''@;'; put 'put ''dCgyLFZlKTt2YXIgemU9bnVsbDtudWxsIT15LmJvcmRlcklkJiYoemU9TC5Cb3JkZXJzJiZMLkJvcmRlcnNbeS5ib3JkZXJJZHx8MF18fHt9KTt2YXIgV2U9MCxydD0wLGx0PTA7emUmJihudWxsIT16ZS5sZWZ0JiZ6ZS5sZWZ0LnN0eWxlJiYoV2V8PShsdD1FMS5pbmRleE9mKHplLmxlZnQu''@;'; put 'put ''c3R5bGUpKT4tMT9sdDowKSxudWxsIT16ZS5yaWdodCYmemUucmlnaHQuc3R5bGUmJihXZXw9KChsdD1FMS5pbmRleE9mKHplLnJpZ2h0LnN0eWxlKSk+LTE/bHQ6MCk8PDQpLG51bGwhPXplLnRvcCYmemUudG9wLnN0eWxlJiYocnR8PShsdD1FMS5pbmRleE9mKHplLnRvcC5zdHlsZSkpPi0x''@;'; put 'put ''P2x0OjApLG51bGwhPXplLmJvdHRvbSYmemUuYm90dG9tLnN0eWxlJiYocnR8PSgobHQ9RTEuaW5kZXhPZih6ZS5ib3R0b20uc3R5bGUpKT4tMT9sdDowKTw8NCkpLFgud3JpdGVfc2hpZnQoMSxXZSksWC53cml0ZV9zaGlmdCgxLHJ0KSxYLndyaXRlX3NoaWZ0KDIsMCksWC53cml0ZV9zaGlm''@;'; put 'put ''dCgyLDApLFgud3JpdGVfc2hpZnQoMSwwKTt2YXIgQ3Q9MCxhdD1MLkZpbGxzJiZMLkZpbGxzW3kuZmlsbElkfHwwXXx8e307KGF0LmZnQ29sb3J8fGF0LmJnQ29sb3IpJiYoQ3R8PTQpLFgud3JpdGVfc2hpZnQoMSxDdCk7dmFyIHZ0PTA7dnR8PUJwKGF0LmZnQ29sb3IsNjUpLHZ0fD1CcChh''@;'; put 'put ''dC5iZ0NvbG9yLDY1KTw8NyxYLndyaXRlX3NoaWZ0KDIsdnQpfWVsc2UgWC53cml0ZV9zaGlmdCg0LDApLFgud3JpdGVfc2hpZnQoNCwwKSxYLndyaXRlX3NoaWZ0KDIsMCk7cmV0dXJuIFh9ZnVuY3Rpb24gSXAoeSxQLEwpe3ZhciBYPUh1KHkpOygyPT1MLmJpZmZ8fDk9PVApJiYrK3kubDt2''@;'; put 'put ''YXIgbmU9ZnVuY3Rpb24gS2EoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDEpO3JldHVybiAxPT09eS5yZWFkX3NoaWZ0KDEpP1A6MT09PVB9KHkpO3JldHVybiBYLnZhbD1uZSxYLnQ9ITA9PT1uZXx8ITE9PT1uZT8iYiI6ImUiLFh9dmFyIHhUPWZ1bmN0aW9uIENnKHksUCxMKXtyZXR1cm4gMD09''@;'; put 'put ''PVA/IiI6bTAoeSwwLEwpfTtmdW5jdGlvbiB6eSh5LFAsTCl7dmFyIG5lLFg9eS5yZWFkX3NoaWZ0KDIpLGZlPXtmQnVpbHRJbjoxJlgsZldhbnRBZHZpc2U6WD4+PjEmMSxmV2FudFBpY3Q6WD4+PjImMSxmT2xlOlg+Pj4zJjEsZk9sZUxpbms6WD4+PjQmMSxjZjpYPj4+NSYxMDIzLGZJY29u''@;'; put 'put ''Olg+Pj4xNSYxfTtyZXR1cm4gMTQ4NDk9PT1MLnNiY2NoJiYobmU9ZnVuY3Rpb24gejUoeSxQLEwpe3kubCs9NDt2YXIgWD15LmwrKFAtPTQpLG5lPV9vKHksMCxMKSxmZT15LnJlYWRfc2hpZnQoMik7aWYoZmUhPT0oWC09eS5sKSl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBBZGRpblVk''@;'; put 'put ''ZjogcGFkZGluZyA9ICIrWCsiICE9ICIrZmUpO3JldHVybiB5LmwrPWZlLG5lfSh5LFAtMixMKSksZmUuYm9keT1uZXx8eS5yZWFkX3NoaWZ0KFAtMiksInN0cmluZyI9PXR5cGVvZiBuZSYmKGZlLk5hbWU9bmUpLGZlfXZhciBuTj1bIl94bG5tLkNvbnNvbGlkYXRlX0FyZWEiLCJfeGxubS5B''@;'; put 'put ''dXRvX09wZW4iLCJfeGxubS5BdXRvX0Nsb3NlIiwiX3hsbm0uRXh0cmFjdCIsIl94bG5tLkRhdGFiYXNlIiwiX3hsbm0uQ3JpdGVyaWEiLCJfeGxubS5QcmludF9BcmVhIiwiX3hsbm0uUHJpbnRfVGl0bGVzIiwiX3hsbm0uUmVjb3JkZXIiLCJfeGxubS5EYXRhX0Zvcm0iLCJfeGxubS5BdXRv''@;'; put 'put ''X0FjdGl2YXRlIiwiX3hsbm0uQXV0b19EZWFjdGl2YXRlIiwiX3hsbm0uU2hlZXRfVGl0bGUiLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiXTtmdW5jdGlvbiBVeSh5LFAsTCl7dmFyIFg9eS5sK1AsbmU9eS5yZWFkX3NoaWZ0KDIpLGZlPXkucmVhZF9zaGlmdCgxKSxiZT15LnJlYWRfc2hpZnQo''@;'; put 'put ''MSksdmU9eS5yZWFkX3NoaWZ0KEwmJjI9PUwuYmlmZj8xOjIpLHllPTA7KCFMfHxMLmJpZmY+PTUpJiYoNSE9TC5iaWZmJiYoeS5sKz0yKSx5ZT15LnJlYWRfc2hpZnQoMiksNT09TC5iaWZmJiYoeS5sKz0yKSx5LmwrPTQpO3ZhciBWZT1nbCh5LGJlLEwpOzMyJm5lJiYoVmU9bk5bVmUuY2hh''@;'; put 'put ''ckNvZGVBdCgwKV0pO3ZhciB6ZT1YLXkubDtMJiYyPT1MLmJpZmYmJi0temU7dmFyIFdlPVghPXkubCYmMCE9PXZlJiZ6ZT4wP2Z1bmN0aW9uIFBRKHksUCxMLFgpe3ZhciBiZSxuZT15LmwrUCxmZT11ZCh5LFgsTCk7cmV0dXJuIG5lIT09eS5sJiYoYmU9WXAoeSxuZS15LmwsZmUsTCkpLFtm''@;'; put 'put ''ZSxiZV19KHksemUsTCx2ZSk6W107cmV0dXJue2NoS2V5OmZlLE5hbWU6VmUsaXRhYjp5ZSxyZ2NlOldlfX1mdW5jdGlvbiBDOSh5LFAsTCl7aWYoTC5iaWZmPDgpcmV0dXJuIGZ1bmN0aW9uIFp5KHksUCxMKXszPT15W3kubCsxXSYmeVt5LmxdKys7dmFyIFg9X28oeSwwLEwpO3JldHVybiAz''@;'; put 'put ''PT1YLmNoYXJDb2RlQXQoMCk/WC5zbGljZSgxKTpYfSh5LDAsTCk7Zm9yKHZhciBYPVtdLG5lPXkubCtQLGZlPXkucmVhZF9zaGlmdChMLmJpZmY+OD80OjIpOzAhPWZlLS07KVgucHVzaChNMih5LDAsTCkpO2lmKHkubCE9bmUpdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIr''@;'; put 'put ''eS5sKyIgIT0gIituZSk7cmV0dXJuIFh9ZnVuY3Rpb24gTTkoeSxQLEwpe3ZhciBYPWtsKHksNik7c3dpdGNoKEwuYmlmZil7Y2FzZSAyOnkubCsrLFAtPTc7YnJlYWs7Y2FzZSAzOmNhc2UgNDp5LmwrPTIsUC09ODticmVhaztkZWZhdWx0OnkubCs9NixQLT0xMn1yZXR1cm5bWCxGayh5LFAs''@;'; put 'put ''TCldfXZhciBUVD1bXTtmdW5jdGlvbiBzTih5KXt2YXIgUD14cigyNCksTD1rcyh5WzBdKTtQLndyaXRlX3NoaWZ0KDIsTC5yKSxQLndyaXRlX3NoaWZ0KDIsTC5yKSxQLndyaXRlX3NoaWZ0KDIsTC5jKSxQLndyaXRlX3NoaWZ0KDIsTC5jKTtmb3IodmFyIFg9ImQwIGM5IGVhIDc5IGY5IGJh''@;'; put 'put ''IGNlIDExIDhjIDgyIDAwIGFhIDAwIDRiIGE5IDBiIi5zcGxpdCgiICIpLG5lPTA7bmU8MTY7KytuZSlQLndyaXRlX3NoaWZ0KDEscGFyc2VJbnQoWFtuZV0sMTYpKTtyZXR1cm4gayhbUCxrcCh5WzFdKV0pfWZ1bmN0aW9uIGxOKHkpe3ZhciBQPXlbMV0uVG9vbHRpcCxMPXhyKDEwKzIqKFAu''@;'; put 'put ''bGVuZ3RoKzEpKTtMLndyaXRlX3NoaWZ0KDIsMjA0OCk7dmFyIFg9a3MoeVswXSk7TC53cml0ZV9zaGlmdCgyLFguciksTC53cml0ZV9zaGlmdCgyLFguciksTC53cml0ZV9zaGlmdCgyLFguYyksTC53cml0ZV9zaGlmdCgyLFguYyk7Zm9yKHZhciBuZT0wO25lPFAubGVuZ3RoOysrbmUpTC53''@;'; put 'put ''cml0ZV9zaGlmdCgyLFAuY2hhckNvZGVBdChuZSkpO3JldHVybiBMLndyaXRlX3NoaWZ0KDIsMCksTH1mdW5jdGlvbiBZeSh5LFAsTCl7aWYoIUwuY2VsbFN0eWxlcylyZXR1cm4gcGwoeSxQKTt2YXIgWD1MJiZMLmJpZmY+PTEyPzQ6MixuZT15LnJlYWRfc2hpZnQoWCksZmU9eS5yZWFkX3No''@;'; put 'put ''aWZ0KFgpLGJlPXkucmVhZF9zaGlmdChYKSx2ZT15LnJlYWRfc2hpZnQoWCkseWU9eS5yZWFkX3NoaWZ0KDIpOzI9PVgmJih5LmwrPTIpO3ZhciBWZT17czpuZSxlOmZlLHc6YmUsaXhmZTp2ZSxmbGFnczp5ZX07cmV0dXJuKEwuYmlmZj49NXx8IUwuYmlmZikmJihWZS5sZXZlbD15ZT4+OCY3''@;'; put 'put ''KSxWZX1UVFs4XT1mdW5jdGlvbih5LFApe3ZhciBMPXkubCtQO3kubCs9MTA7dmFyIFg9eS5yZWFkX3NoaWZ0KDIpO3kubCs9NCx5LmwrPTIseS5sKz0yLHkubCs9Mix5LmwrPTQ7dmFyIG5lPXkucmVhZF9zaGlmdCgxKTtyZXR1cm4geS5sKz1uZSx5Lmw9TCx7Zm10Olh9fTt2YXIgc1E9SHUs''@;'; put 'put ''QVQ9RXAsdDA9YmM7dmFyIFlmPWZ1bmN0aW9uKCl7dmFyIHk9ezE6NDM3LDI6ODUwLDM6MTI1Miw0OjFlNCwxMDA6ODUyLDEwMTo4NjYsMTAyOjg2NSwxMDM6ODYxLDEwNDo4OTUsMTA1OjYyMCwxMDY6NzM3LDEwNzo4NTcsMTIwOjk1MCwxMjE6OTQ5LDEyMjo5MzYsMTIzOjkzMiwxMjQ6ODc0''@;'; put 'put ''LDEyNToxMjU1LDEyNjoxMjU2LDE1MDoxMDAwNywxNTE6MTAwMjksMTUyOjEwMDA2LDIwMDoxMjUwLDIwMToxMjUxLDIwMjoxMjU0LDIwMzoxMjUzLDA6MjAxMjcsODo4NjUsOTo0MzcsMTA6ODUwLDExOjQzNywxMzo0MzcsMTQ6ODUwLDE1OjQzNywxNjo4NTAsMTc6NDM3LDE4Ojg1MCwxOTo5''@;'; put 'put ''MzIsMjA6ODUwLDIxOjQzNywyMjo4NTAsMjM6ODY1LDI0OjQzNywyNTo0MzcsMjY6ODUwLDI3OjQzNywyODo4NjMsMjk6ODUwLDMxOjg1MiwzNDo4NTIsMzU6ODUyLDM2Ojg2MCwzNzo4NTAsMzg6ODY2LDU1Ojg1MCw2NDo4NTIsNzc6OTM2LDc4Ojk0OSw3OTo5NTAsODA6ODc0LDg3OjEyNTIs''@;'; put 'put ''ODg6MTI1Miw4OToxMjUyLDEwODo4NjMsMTM0OjczNywxMzU6ODUyLDEzNjo4NTcsMjA0OjEyNTcsMjU1OjE2OTY5fSxQPXdlKHsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEy''@;'; put 'put ''MDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3fSk7ZnVuY3Rpb24gbmUoeWUsVmUpe3ZhciB6ZT1WZXx8e307''@;'; put 'put ''cmV0dXJuIHplLmRhdGVORnx8KHplLmRhdGVORj0ieXl5eW1tZGQiKSxicChmdW5jdGlvbiBYKHllLFZlKXt2YXIgemU9W10sV2U9VygxKTtzd2l0Y2goVmUudHlwZSl7Y2FzZSJiYXNlNjQiOldlPUEoaWUuZGVjb2RlKHllKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOldlPUEoeWUpO2JyZWFrO2Nh''@;'; put 'put ''c2UiYnVmZmVyIjpjYXNlImFycmF5IjpXZT15ZX1ncyhXZSwwKTt2YXIgcnQ9V2UucmVhZF9zaGlmdCgxKSxsdD0hISgxMzYmcnQpLEN0PSExLGF0PSExO3N3aXRjaChydCl7Y2FzZSAyOmNhc2UgMzpjYXNlIDEzMTpjYXNlIDEzOTpjYXNlIDI0NTpicmVhaztjYXNlIDQ4OmNhc2UgNDk6Q3Q9''@;'; put 'put ''ITAsbHQ9ITA7YnJlYWs7Y2FzZSAxNDA6YXQ9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBWZXJzaW9uOiAiK3J0LnRvU3RyaW5nKDE2KSl9dmFyIHZ0PTAsUHQ9NTIxOzI9PXJ0JiYodnQ9V2UucmVhZF9zaGlmdCgyKSksV2UubCs9MywyIT1ydCYm''@;'; put 'put ''KHZ0PVdlLnJlYWRfc2hpZnQoNCkpLHZ0PjEwNDg1NzYmJih2dD0xZTYpLDIhPXJ0JiYoUHQ9V2UucmVhZF9zaGlmdCgyKSk7dmFyIGt0PVdlLnJlYWRfc2hpZnQoMiksRHQ9VmUuY29kZXBhZ2V8fDEyNTI7MiE9cnQmJihXZS5sKz0xNixXZS5yZWFkX3NoaWZ0KDEpLDAhPT1XZVtXZS5sXSYm''@;'; put 'put ''KER0PXlbV2VbV2UubF1dKSxXZS5sKz0xLFdlLmwrPTIpLGF0JiYoV2UubCs9MzYpO2Zvcih2YXIgWnQ9W10sZ249e30sJG49TWF0aC5taW4oV2UubGVuZ3RoLDI9PXJ0PzUyMTpQdC0xMC0oQ3Q/MjY0OjApKSxjbj1hdD8zMjoxMTtXZS5sPCRuJiYxMyE9V2VbV2UubF07KXN3aXRjaChnbj17''@;'; put 'put ''fSxnbi5uYW1lPWNwdGFibGUudXRpbHMuZGVjb2RlKER0LFdlLnNsaWNlKFdlLmwsV2UubCtjbikpLnJlcGxhY2UoL1tcdTAwMDBcclxuXS4qJC9nLCIiKSxXZS5sKz1jbixnbi50eXBlPVN0cmluZy5mcm9tQ2hhckNvZGUoV2UucmVhZF9zaGlmdCgxKSksMiE9cnQmJiFhdCYmKGduLm9mZnNl''@;'; put 'put ''dD1XZS5yZWFkX3NoaWZ0KDQpKSxnbi5sZW49V2UucmVhZF9zaGlmdCgxKSwyPT1ydCYmKGduLm9mZnNldD1XZS5yZWFkX3NoaWZ0KDIpKSxnbi5kZWM9V2UucmVhZF9zaGlmdCgxKSxnbi5uYW1lLmxlbmd0aCYmWnQucHVzaChnbiksMiE9cnQmJihXZS5sKz1hdD8xMzoxNCksZ24udHlwZSl7''@;'; put 'put ''Y2FzZSJCIjooIUN0fHw4IT1nbi5sZW4pJiZWZS5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK2duLm5hbWUrIjoiK2duLnR5cGUpO2JyZWFrO2Nhc2UiRyI6Y2FzZSJQIjpWZS5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK2duLm5hbWUrIjoiK2duLnR5cGUpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''KyI6Y2FzZSIwIjpjYXNlIkAiOmNhc2UiQyI6Y2FzZSJEIjpjYXNlIkYiOmNhc2UiSSI6Y2FzZSJMIjpjYXNlIk0iOmNhc2UiTiI6Y2FzZSJPIjpjYXNlIlQiOmNhc2UiWSI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gRmllbGQgVHlwZTogIitnbi50eXBlKX1pZigx''@;'; put 'put ''MyE9PVdlW1dlLmxdJiYoV2UubD1QdC0xKSwxMyE9PVdlLnJlYWRfc2hpZnQoMSkpdGhyb3cgbmV3IEVycm9yKCJEQkYgVGVybWluYXRvciBub3QgZm91bmQgIitXZS5sKyIgIitXZVtXZS5sXSk7V2UubD1QdDt2YXIgWG49MCxCbj0wO2Zvcih6ZVswXT1bXSxCbj0wO0JuIT1adC5sZW5ndGg7''@;'; put 'put ''KytCbil6ZVswXVtCbl09WnRbQm5dLm5hbWU7Zm9yKDt2dC0tID4wOylpZig0MiE9PVdlW1dlLmxdKWZvcigrK1dlLmwsemVbKytYbl09W10sQm49MCxCbj0wO0JuIT1adC5sZW5ndGg7KytCbil7dmFyIERuPVdlLnNsaWNlKFdlLmwsV2UubCtadFtCbl0ubGVuKTtXZS5sKz1adFtCbl0ubGVu''@;'; put 'put ''LGdzKERuLDApO3ZhciBRbj1jcHRhYmxlLnV0aWxzLmRlY29kZShEdCxEbik7c3dpdGNoKFp0W0JuXS50eXBlKXtjYXNlIkMiOlFuLnRyaW0oKS5sZW5ndGgmJih6ZVtYbl1bQm5dPVFuLnJlcGxhY2UoL1xzKyQvLCIiKSk7YnJlYWs7Y2FzZSJEIjp6ZVtYbl1bQm5dPTg9PT1Rbi5sZW5ndGg/''@;'; put 'put ''bmV3IERhdGUoK1FuLnNsaWNlKDAsNCksK1FuLnNsaWNlKDQsNiktMSwrUW4uc2xpY2UoNiw4KSk6UW47YnJlYWs7Y2FzZSJGIjp6ZVtYbl1bQm5dPXBhcnNlRmxvYXQoUW4udHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6emVbWG5dW0JuXT1hdD8yMTQ3NDgzNjQ4XkRuLnJlYWRfc2hp''@;'; put 'put ''ZnQoLTQsImkiKTpEbi5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChRbi50cmltKCkudG9VcHBlckNhc2UoKSl7Y2FzZSJZIjpjYXNlIlQiOnplW1huXVtCbl09ITA7YnJlYWs7Y2FzZSJOIjpjYXNlIkYiOnplW1huXVtCbl09ITE7YnJlYWs7Y2FzZSIiOmNhc2UiPyI6''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnJlY29nbml6ZWQgTDp8IitRbisifCIpfWJyZWFrO2Nhc2UiTSI6aWYoIWx0KXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK3J0LnRvU3RyaW5nKDE2KSk7emVbWG5dW0JuXT0iIyNNRU1P''@;'; put 'put ''IyMiKyhhdD9wYXJzZUludChRbi50cmltKCksMTApOkRuLnJlYWRfc2hpZnQoNCkpO2JyZWFrO2Nhc2UiTiI6KFFuPVFuLnJlcGxhY2UoL1x1MDAwMC9nLCIiKS50cmltKCkpJiYiLiIhPVFuJiYoemVbWG5dW0JuXT0rUW58fDApO2JyZWFrO2Nhc2UiQCI6emVbWG5dW0JuXT1uZXcgRGF0ZShE''@;'; put 'put ''bi5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6emVbWG5dW0JuXT1uZXcgRGF0ZSg4NjRlNSooRG4ucmVhZF9zaGlmdCg0KS0yNDQwNTg4KStEbi5yZWFkX3NoaWZ0KDQpKTticmVhaztjYXNlIlkiOnplW1huXVtCbl09RG4ucmVhZF9zaGlmdCg0LCJpIikv''@;'; put 'put ''MWU0O2JyZWFrO2Nhc2UiTyI6emVbWG5dW0JuXT0tRG4ucmVhZF9zaGlmdCgtOCwiZiIpO2JyZWFrO2Nhc2UiQiI6aWYoQ3QmJjg9PVp0W0JuXS5sZW4pe3plW1huXVtCbl09RG4ucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOkRuLmwrPVp0W0JuXS5sZW47YnJlYWs7''@;'; put 'put ''Y2FzZSIwIjppZigiX051bGxGbGFncyI9PT1adFtCbl0ubmFtZSlicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVuc3VwcG9ydGVkIGRhdGEgdHlwZSAiK1p0W0JuXS50eXBlKX19ZWxzZSBXZS5sKz1rdDtpZigyIT1ydCYmV2UubDxXZS5sZW5ndGgmJjI2IT1XZVtXZS5sKytd''@;'; put 'put ''KXRocm93IG5ldyBFcnJvcigiREJGIEVPRiBNYXJrZXIgbWlzc2luZyAiKyhXZS5sLTEpKyIgb2YgIitXZS5sZW5ndGgrIiAiK1dlW1dlLmwtMV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gVmUmJlZlLnNoZWV0Um93cyYmKHplPXplLnNsaWNlKDAsVmUuc2hlZXRSb3dzKSksemV9KHllLHplKSx6''@;'; put 'put ''ZSl9dmFyIGJlPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtyZXR1cm57dmVyc2lvbnM6WzIsMyw0OCw0OSwxMzEsMTM5LDE0MCwyNDVdLHRvX3dvcmtib29rOmZ1bmN0aW9uIGZlKHllLFZlKXt0cnl7cmV0dXJuIHJkKG5lKHllLFZlKSxWZSl9Y2F0Y2goemUpe2lmKFZlJiZWZS5X''@;'; put 'put ''VEYpdGhyb3cgemV9cmV0dXJue1NoZWV0TmFtZXM6W10sU2hlZXRzOnt9fX0sdG9fc2hlZXQ6bmUsZnJvbV9zaGVldDpmdW5jdGlvbiB2ZSh5ZSxWZSl7dmFyIHplPVZlfHx7fTtpZigremUuY29kZXBhZ2U+PTAmJnooK3plLmNvZGVwYWdlKSwic3RyaW5nIj09emUudHlwZSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIkNhbm5vdCB3cml0ZSBEQkYgdG8gSlMgc3RyaW5nIik7dmFyIFdlPWN1KCkscnQ9ZTQoeWUse2hlYWRlcjoxLHJhdzohMCxjZWxsRGF0ZXM6ITB9KSxsdD1ydFswXSxDdD1ydC5zbGljZSgxKSxhdD0wLHZ0PTAsUHQ9MCxrdD0xO2ZvcihhdD0wO2F0PGx0Lmxlbmd0aDsrK2F0KWlm''@;'; put 'put ''KG51bGwhPWF0KXtpZigrK1B0LCJudW1iZXIiPT10eXBlb2YgbHRbYXRdJiYobHRbYXRdPWx0W2F0XS50b1N0cmluZygxMCkpLCJzdHJpbmciIT10eXBlb2YgbHRbYXRdKXRocm93IG5ldyBFcnJvcigiREJGIEludmFsaWQgY29sdW1uIG5hbWUgIitsdFthdF0rIiB8Iit0eXBlb2YgbHRbYXRd''@;'; put 'put ''KyJ8Iik7aWYobHQuaW5kZXhPZihsdFthdF0pIT09YXQpZm9yKHZ0PTA7dnQ8MTAyNDsrK3Z0KWlmKC0xPT1sdC5pbmRleE9mKGx0W2F0XSsiXyIrdnQpKXtsdFthdF0rPSJfIit2dDticmVha319dmFyIER0PVJvKHllWyIhcmVmIl0pLFp0PVtdO2ZvcihhdD0wO2F0PD1EdC5lLmMtRHQucy5j''@;'; put 'put ''OysrYXQpe3ZhciBnbj1bXTtmb3IodnQ9MDt2dDxDdC5sZW5ndGg7Kyt2dCludWxsIT1DdFt2dF1bYXRdJiZnbi5wdXNoKEN0W3Z0XVthdF0pO2lmKDAhPWduLmxlbmd0aCYmbnVsbCE9bHRbYXRdKXt2YXIgJG49IiIsY249IiI7Zm9yKHZ0PTA7dnQ8Z24ubGVuZ3RoOysrdnQpe3N3aXRjaCh0''@;'; put 'put ''eXBlb2YgZ25bdnRdKXtjYXNlIm51bWJlciI6Y249IkIiO2JyZWFrO2Nhc2Uic3RyaW5nIjpkZWZhdWx0OmNuPSJDIjticmVhaztjYXNlImJvb2xlYW4iOmNuPSJMIjticmVhaztjYXNlIm9iamVjdCI6Y249Z25bdnRdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyJ9aWYoIkMiPT0oJG49JG4mJiRu''@;'; put 'put ''IT1jbj8iQyI6Y24pKWJyZWFrfWt0Kz1iZVskbl18fDAsWnRbYXRdPSRufWVsc2UgWnRbYXRdPSI/In12YXIgWG49V2UubmV4dCgzMik7Zm9yKFhuLndyaXRlX3NoaWZ0KDQsMzE4OTAyNTc2KSxYbi53cml0ZV9zaGlmdCg0LEN0Lmxlbmd0aCksWG4ud3JpdGVfc2hpZnQoMiwyOTYrMzIqUHQp''@;'; put 'put ''LFhuLndyaXRlX3NoaWZ0KDIsa3QpLGF0PTA7YXQ8NDsrK2F0KVhuLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKFhuLndyaXRlX3NoaWZ0KDQsKCtQW0ldfHwzKTw8OCksYXQ9MCx2dD0wO2F0PGx0Lmxlbmd0aDsrK2F0KWlmKG51bGwhPWx0W2F0XSl7dmFyIEJuPVdlLm5leHQoMzIpLERuPShsdFth''@;'; put 'put ''dF0uc2xpY2UoLTEwKSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIpLnNsaWNlKDAsMTEpO0JuLndyaXRlX3NoaWZ0KDEsRG4sInNiY3MiKSxCbi53cml0ZV9zaGlmdCgxLCI/Ij09WnRbYXRdPyJDIjpadFthdF0sInNiY3MiKSxCbi53cml0ZV9zaGlmdCg0LHZ0KSxCbi53cml0ZV9zaGlmdCgx''@;'; put 'put ''LGJlW1p0W2F0XV18fDApLEJuLndyaXRlX3NoaWZ0KDEsMCksQm4ud3JpdGVfc2hpZnQoMSwyKSxCbi53cml0ZV9zaGlmdCg0LDApLEJuLndyaXRlX3NoaWZ0KDEsMCksQm4ud3JpdGVfc2hpZnQoNCwwKSxCbi53cml0ZV9zaGlmdCg0LDApLHZ0Kz1iZVtadFthdF1dfHwwfXZhciBRbj1XZS5u''@;'; put 'put ''ZXh0KDI2NCk7Zm9yKFFuLndyaXRlX3NoaWZ0KDQsMTMpLGF0PTA7YXQ8NjU7KythdClRbi53cml0ZV9zaGlmdCg0LDApO2ZvcihhdD0wO2F0PEN0Lmxlbmd0aDsrK2F0KXt2YXIgZXI9V2UubmV4dChrdCk7Zm9yKGVyLndyaXRlX3NoaWZ0KDEsMCksdnQ9MDt2dDxsdC5sZW5ndGg7Kyt2dClp''@;'; put 'put ''ZihudWxsIT1sdFt2dF0pc3dpdGNoKFp0W3Z0XSl7Y2FzZSJMIjplci53cml0ZV9zaGlmdCgxLG51bGw9PUN0W2F0XVt2dF0/NjM6Q3RbYXRdW3Z0XT84NDo3MCk7YnJlYWs7Y2FzZSJCIjplci53cml0ZV9zaGlmdCg4LEN0W2F0XVt2dF18fDAsImYiKTticmVhaztjYXNlIkQiOkN0W2F0XVt2''@;'; put 'put ''dF0/KGVyLndyaXRlX3NoaWZ0KDQsKCIwMDAwIitDdFthdF1bdnRdLmdldEZ1bGxZZWFyKCkpLnNsaWNlKC00KSwic2JjcyIpLGVyLndyaXRlX3NoaWZ0KDIsKCIwMCIrKEN0W2F0XVt2dF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksZXIud3JpdGVfc2hpZnQoMiwoIjAwIitD''@;'; put 'put ''dFthdF1bdnRdLmdldERhdGUoKSkuc2xpY2UoLTIpLCJzYmNzIikpOmVyLndyaXRlX3NoaWZ0KDgsIjAwMDAwMDAwIiwic2JjcyIpO2JyZWFrO2Nhc2UiQyI6dmFyIHpuPVN0cmluZyhDdFthdF1bdnRdfHwiIik7Zm9yKGVyLndyaXRlX3NoaWZ0KDEsem4sInNiY3MiKSxQdD0wO1B0PDI1MC16''@;'; put 'put ''bi5sZW5ndGg7KytQdCllci53cml0ZV9zaGlmdCgxLDMyKX19cmV0dXJuIFdlLm5leHQoMSkud3JpdGVfc2hpZnQoMSwyNiksV2UuZW5kKCl9fX0oKSxYeT1mdW5jdGlvbigpe3ZhciB5PXtBQToiXHhjMCIsQkE6Ilx4YzEiLENBOiJceGMyIixEQToxOTUsSEE6Ilx4YzQiLEpBOjE5NyxBRToi''@;'; put 'put ''XHhjOCIsQkU6Ilx4YzkiLENFOiJceGNhIixIRToiXHhjYiIsQUk6Ilx4Y2MiLEJJOiJceGNkIixDSToiXHhjZSIsSEk6Ilx4Y2YiLEFPOiJceGQyIixCTzoiXHhkMyIsQ086Ilx4ZDQiLERPOjIxMyxITzoiXHhkNiIsQVU6Ilx4ZDkiLEJVOiJceGRhIixDVToiXHhkYiIsSFU6Ilx4ZGMiLEFh''@;'; put 'put ''OiJceGUwIixCYToiXHhlMSIsQ2E6Ilx4ZTIiLERhOjIyNyxIYToiXHhlNCIsSmE6MjI5LEFlOiJceGU4IixCZToiXHhlOSIsQ2U6Ilx4ZWEiLEhlOiJceGViIixBaToiXHhlYyIsQmk6Ilx4ZWQiLENpOiJceGVlIixIaToiXHhlZiIsQW86Ilx4ZjIiLEJvOiJceGYzIixDbzoiXHhmNCIsRG86''@;'; put 'put ''MjQ1LEhvOiJceGY2IixBdToiXHhmOSIsQnU6Ilx4ZmEiLEN1OiJceGZiIixIdToiXHhmYyIsS0M6Ilx4YzciLEtjOiJceGU3IixxOiJceGU2Iix6OiJcdTAxNTMiLGE6Ilx4YzYiLGo6Ilx1MDE1MiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDox''@;'; put 'put ''NzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0i''@;'; put 'put ''OjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sUD1uZXcgUmVnRXhwKCJceDFiTigiK290KHkpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpLEw9ZnVuY3Rpb24ocnQsbHQpe3ZhciBDdD15W2x0''@;'; put 'put ''XTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIEN0P0ooQ3QpOkN0fSxYPWZ1bmN0aW9uKHJ0LGx0LEN0KXt2YXIgYXQ9bHQuY2hhckNvZGVBdCgwKS0zMjw8NHxDdC5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiA1OT09YXQ/cnQ6SihhdCl9O2Z1bmN0aW9uIGZlKHJ0LGx0KXt2YXIgUW4sQ3Q9cnQu''@;'; put 'put ''c3BsaXQoL1tcblxyXSsvKSxhdD0tMSx2dD0tMSxQdD0wLGt0PTAsRHQ9W10sWnQ9W10sZ249bnVsbCwkbj17fSxjbj1bXSxYbj1bXSxCbj1bXSxEbj0wO2ZvcigrbHQuY29kZXBhZ2U+PTAmJnooK2x0LmNvZGVwYWdlKTtQdCE9PUN0Lmxlbmd0aDsrK1B0KXtEbj0wO3ZhciBpaSxlcj1DdFtQ''@;'; put 'put ''dF0udHJpbSgpLnJlcGxhY2UoL1x4MUIoW1x4MjAtXHgyRl0pKFtceDMwLVx4M0ZdKS9nLFgpLnJlcGxhY2UoUCxMKSx6bj1lci5yZXBsYWNlKC87Oy9nLCJcMCIpLnNwbGl0KCI7IikubWFwKGZ1bmN0aW9uKGJpKXtyZXR1cm4gYmkucmVwbGFjZSgvXHUwMDAwL2csIjsiKX0pO2lmKGVyLmxl''@;'; put 'put ''bmd0aD4wKXN3aXRjaCh6blswXSl7Y2FzZSJJRCI6Y2FzZSJFIjpjYXNlIkIiOmNhc2UiTyI6Y2FzZSJXIjpicmVhaztjYXNlIlAiOiJQIj09em5bMV0uY2hhckF0KDApJiZadC5wdXNoKGVyLnNsaWNlKDMpLnJlcGxhY2UoLzs7L2csIjsiKSk7YnJlYWs7Y2FzZSJDIjp2YXIgRWk9ITEsT2k9''@;'; put 'put ''ITEsdGk9ITEsZnI9ITEsQW49LTEsd3I9LTE7Zm9yKGt0PTE7a3Q8em4ubGVuZ3RoOysra3Qpc3dpdGNoKHpuW2t0XS5jaGFyQXQoMCkpe2Nhc2UiQSI6Y2FzZSJHIjpicmVhaztjYXNlIlgiOnZ0PXBhcnNlSW50KHpuW2t0XS5zbGljZSgxKSktMSxPaT0hMDticmVhaztjYXNlIlkiOmZvcihh''@;'; put 'put ''dD1wYXJzZUludCh6bltrdF0uc2xpY2UoMSkpLTEsT2l8fCh2dD0wKSxRbj1EdC5sZW5ndGg7UW48PWF0OysrUW4pRHRbUW5dPVtdO2JyZWFrO2Nhc2UiSyI6JyInPT09KGlpPXpuW2t0XS5zbGljZSgxKSkuY2hhckF0KDApP2lpPWlpLnNsaWNlKDEsaWkubGVuZ3RoLTEpOiJUUlVFIj09PWlp''@;'; put 'put ''P2lpPSEwOiJGQUxTRSI9PT1paT9paT0hMTppc05hTihObihpaSkpP2lzTmFOKG5uKGlpKS5nZXREYXRlKCkpfHwoaWk9RnQoaWkpKTooaWk9Tm4oaWkpLG51bGwhPT1nbiYmdy5pc19kYXRlKGduKSYmKGlpPWN0KGlpKSkpLHR5cGVvZiBjcHRhYmxlPCJ1IiYmInN0cmluZyI9PXR5cGVvZiBp''@;'; put 'put ''aSYmInN0cmluZyIhPShsdHx8e30pLnR5cGUmJihsdHx8e30pLmNvZGVwYWdlJiYoaWk9Y3B0YWJsZS51dGlscy5kZWNvZGUobHQuY29kZXBhZ2UsaWkpKSxFaT0hMDticmVhaztjYXNlIkUiOmZyPSEwO3ZhciBycj16Zyh6bltrdF0uc2xpY2UoMSkse3I6YXQsYzp2dH0pO0R0W2F0XVt2dF09''@;'; put 'put ''W0R0W2F0XVt2dF0scnJdO2JyZWFrO2Nhc2UiUyI6dGk9ITAsRHRbYXRdW3Z0XT1bRHRbYXRdW3Z0XSwiUzVTIl07YnJlYWs7Y2FzZSJSIjpBbj1wYXJzZUludCh6bltrdF0uc2xpY2UoMSkpLTE7YnJlYWs7Y2FzZSJDIjp3cj1wYXJzZUludCh6bltrdF0uc2xpY2UoMSkpLTE7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDppZihsdCYmbHQuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrZXIpfWlmKEVpJiYoRHRbYXRdW3Z0XSYmMj09RHRbYXRdW3Z0XS5sZW5ndGg/RHRbYXRdW3Z0XVswXT1paTpEdFthdF1bdnRdPWlpLGduPW51bGwpLHRpKXtpZihmcil0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''IlNZTEsgc2hhcmVkIGZvcm11bGEgY2Fubm90IGhhdmUgb3duIGZvcm11bGEiKTt2YXIgRW49QW4+LTEmJkR0W0FuXVt3cl07aWYoIUVufHwhRW5bMV0pdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBmaW5kIGJhc2UiKTtEdFthdF1bdnRdWzFdPXlrKEVuWzFd''@;'; put 'put ''LHtyOmF0LUFuLGM6dnQtd3J9KX1icmVhaztjYXNlIkYiOnZhciBDcj0wO2ZvcihrdD0xO2t0PHpuLmxlbmd0aDsrK2t0KXN3aXRjaCh6bltrdF0uY2hhckF0KDApKXtjYXNlIlgiOnZ0PXBhcnNlSW50KHpuW2t0XS5zbGljZSgxKSktMSwrK0NyO2JyZWFrO2Nhc2UiWSI6Zm9yKGF0PXBhcnNl''@;'; put 'put ''SW50KHpuW2t0XS5zbGljZSgxKSktMSxRbj1EdC5sZW5ndGg7UW48PWF0OysrUW4pRHRbUW5dPVtdO2JyZWFrO2Nhc2UiTSI6RG49cGFyc2VJbnQoem5ba3RdLnNsaWNlKDEpKS8yMDticmVhaztjYXNlIkYiOmNhc2UiRyI6Y2FzZSJTIjpjYXNlIkQiOmNhc2UiTiI6YnJlYWs7Y2FzZSJQIjpn''@;'; put 'put ''bj1adFtwYXJzZUludCh6bltrdF0uc2xpY2UoMSkpXTticmVhaztjYXNlIlciOmZvcihCbj16bltrdF0uc2xpY2UoMSkuc3BsaXQoIiAiKSxRbj1wYXJzZUludChCblswXSwxMCk7UW48PXBhcnNlSW50KEJuWzFdLDEwKTsrK1FuKURuPXBhcnNlSW50KEJuWzJdLDEwKSxYbltRbi0xXT0wPT09''@;'; put 'put ''RG4/e2hpZGRlbjohMH06e3djaDpEbn0sXzAoWG5bUW4tMV0pO2JyZWFrO2Nhc2UiQyI6WG5bdnQ9cGFyc2VJbnQoem5ba3RdLnNsaWNlKDEpKS0xXXx8KFhuW3Z0XT17fSk7YnJlYWs7Y2FzZSJSIjpjblthdD1wYXJzZUludCh6bltrdF0uc2xpY2UoMSkpLTFdfHwoY25bYXRdPXt9KSxEbj4w''@;'; put 'put ''PyhjblthdF0uaHB0PURuLGNuW2F0XS5ocHg9Y2QoRG4pKTowPT09RG4mJihjblthdF0uaGlkZGVuPSEwKTticmVhaztkZWZhdWx0OmlmKGx0JiZsdC5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIitlcil9Q3I8MSYmKGduPW51bGwpO2JyZWFrO2RlZmF1bHQ6aWYobHQm''@;'; put 'put ''Jmx0LldURil0aHJvdyBuZXcgRXJyb3IoIlNZTEsgYmFkIHJlY29yZCAiK2VyKX19cmV0dXJuIGNuLmxlbmd0aD4wJiYoJG5bIiFyb3dzIl09Y24pLFhuLmxlbmd0aD4wJiYoJG5bIiFjb2xzIl09WG4pLGx0JiZsdC5zaGVldFJvd3MmJihEdD1EdC5zbGljZSgwLGx0LnNoZWV0Um93cykpLFtE''@;'; put 'put ''dCwkbl19ZnVuY3Rpb24gYmUocnQsbHQpe3ZhciBDdD1mdW5jdGlvbiBuZShydCxsdCl7c3dpdGNoKGx0LnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gZmUoaWUuZGVjb2RlKHJ0KSxsdCk7Y2FzZSJiaW5hcnkiOnJldHVybiBmZShydCxsdCk7Y2FzZSJidWZmZXIiOnJldHVybiBmZShydC50''@;'; put 'put ''b1N0cmluZygiYmluYXJ5IiksbHQpO2Nhc2UiYXJyYXkiOnJldHVybiBmZShPdChydCksbHQpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitsdC50eXBlKX0ocnQsbHQpLHZ0PUN0WzFdLFB0PWJwKEN0WzBdLGx0KTtyZXR1cm4gb3QodnQpLmZvckVhY2goZnVuY3Rpb24o''@;'; put 'put ''a3Qpe1B0W2t0XT12dFtrdF19KSxQdH1mdW5jdGlvbiB5ZShydCxsdCxDdCxhdCl7dmFyIHZ0PSJDO1kiKyhDdCsxKSsiO1giKyhhdCsxKSsiO0siO3N3aXRjaChydC50KXtjYXNlIm4iOnZ0Kz1ydC52fHwwLHJ0LmYmJiFydC5GJiYodnQrPSI7RSIrenAocnQuZix7cjpDdCxjOmF0fSkpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiYiI6dnQrPXJ0LnY/IlRSVUUiOiJGQUxTRSI7YnJlYWs7Y2FzZSJlIjp2dCs9cnQud3x8cnQudjticmVhaztjYXNlImQiOnZ0Kz0nIicrKHJ0Lnd8fHJ0LnYpKyciJzticmVhaztjYXNlInMiOnZ0Kz0nIicrcnQudi5yZXBsYWNlKC8iL2csIiIpKyciJ31yZXR1cm4gdnR9cmV0''@;'; put 'put ''dXJuIHlbInwiXT0yNTQse3RvX3dvcmtib29rOmZ1bmN0aW9uIHZlKHJ0LGx0KXtyZXR1cm4gcmQoYmUocnQsbHQpLGx0KX0sdG9fc2hlZXQ6YmUsZnJvbV9zaGVldDpmdW5jdGlvbiBXZShydCxsdCl7dmFyIFB0LEN0PVsiSUQ7UFNoZWV0SlM7TjtFIl0sYXQ9W10sdnQ9Um8ocnRbIiFyZWYi''@;'; put 'put ''XSksa3Q9QXJyYXkuaXNBcnJheShydCksRHQ9IlxyXG4iO0N0LnB1c2goIlA7UEdlbmVyYWwiKSxDdC5wdXNoKCJGO1AwO0RHMEc4O00yNTUiKSxydFsiIWNvbHMiXSYmZnVuY3Rpb24gVmUocnQsbHQpe2x0LmZvckVhY2goZnVuY3Rpb24oQ3QsYXQpe3ZhciB2dD0iRjtXIisoYXQrMSkrIiAi''@;'; put 'put ''KyhhdCsxKSsiICI7Q3QuaGlkZGVuP3Z0Kz0iMCI6KCJudW1iZXIiPT10eXBlb2YgQ3Qud2lkdGgmJiFDdC53cHgmJihDdC53cHg9QWcoQ3Qud2lkdGgpKSwibnVtYmVyIj09dHlwZW9mIEN0LndweCYmIUN0LndjaCYmKEN0LndjaD1EZyhDdC53cHgpKSwibnVtYmVyIj09dHlwZW9mIEN0Lndj''@;'; put 'put ''aCYmKHZ0Kz1NYXRoLnJvdW5kKEN0LndjaCkpKSwiICIhPXZ0LmNoYXJBdCh2dC5sZW5ndGgtMSkmJnJ0LnB1c2godnQpfSl9KEN0LHJ0WyIhY29scyJdKSxydFsiIXJvd3MiXSYmZnVuY3Rpb24gemUocnQsbHQpe2x0LmZvckVhY2goZnVuY3Rpb24oQ3QsYXQpe3ZhciB2dD0iRjsiO0N0Lmhp''@;'; put 'put ''ZGRlbj92dCs9Ik0wOyI6Q3QuaHB0P3Z0Kz0iTSIrMjAqQ3QuaHB0KyI7IjpDdC5ocHgmJih2dCs9Ik0iKzIwKiRmKEN0LmhweCkrIjsiKSx2dC5sZW5ndGg+MiYmcnQucHVzaCh2dCsiUiIrKGF0KzEpKX0pfShDdCxydFsiIXJvd3MiXSksQ3QucHVzaCgiQjtZIisodnQuZS5yLXZ0LnMucisx''@;'; put 'put ''KSsiO1giKyh2dC5lLmMtdnQucy5jKzEpKyI7RCIrW3Z0LnMuYyx2dC5zLnIsdnQuZS5jLHZ0LmUucl0uam9pbigiICIpKTtmb3IodmFyIFp0PXZ0LnMucjtadDw9dnQuZS5yOysrWnQpZm9yKHZhciBnbj12dC5zLmM7Z248PXZ0LmUuYzsrK2duKXt2YXIgJG49QWkoe3I6WnQsYzpnbn0pOyhQ''@;'; put 'put ''dD1rdD8ocnRbWnRdfHxbXSlbZ25dOnJ0WyRuXSkmJihudWxsIT1QdC52fHxQdC5mJiYhUHQuRikmJmF0LnB1c2goeWUoUHQsMCxadCxnbikpfXJldHVybiBDdC5qb2luKER0KStEdCthdC5qb2luKER0KStEdCsiRSIrRHR9fX0oKSx4OT1mdW5jdGlvbigpe2Z1bmN0aW9uIFAoZmUsYmUpe2Zv''@;'; put 'put ''cih2YXIgdmU9ZmUuc3BsaXQoIlxuIikseWU9LTEsVmU9LTEsemU9MCxXZT1bXTt6ZSE9PXZlLmxlbmd0aDsrK3plKWlmKCJCT1QiIT09dmVbemVdLnRyaW0oKSl7aWYoISh5ZTwwKSl7Zm9yKHZhciBydD12ZVt6ZV0udHJpbSgpLnNwbGl0KCIsIiksbHQ9cnRbMF0sQ3Q9cnRbMV0sYXQ9dmVb''@;'; put 'put ''Kyt6ZV18fCIiOzEmKGF0Lm1hdGNoKC9bIl0vZyl8fFtdKS5sZW5ndGgmJnplPHZlLmxlbmd0aC0xOylhdCs9IlxuIit2ZVsrK3plXTtzd2l0Y2goYXQ9YXQudHJpbSgpLCtsdCl7Y2FzZS0xOmlmKCJCT1QiPT09YXQpe1dlWysreWVdPVtdLFZlPTA7Y29udGludWV9aWYoIkVPRCIhPT1hdCl0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBESUYgc3BlY2lhbCBjb21tYW5kICIrYXQpO2JyZWFrO2Nhc2UgMDpXZVt5ZV1bVmVdPSJUUlVFIj09PWF0fHwiRkFMU0UiIT09YXQmJihpc05hTihObihDdCkpP2lzTmFOKG5uKEN0KS5nZXREYXRlKCkpP0N0OkZ0KEN0KTpObihDdCkpLCsr''@;'; put 'put ''VmU7YnJlYWs7Y2FzZSAxOihhdD0oYXQ9YXQuc2xpY2UoMSxhdC5sZW5ndGgtMSkpLnJlcGxhY2UoLyIiL2csJyInKSkmJmF0Lm1hdGNoKC9ePSIuKiIkLykmJihhdD1hdC5zbGljZSgyLC0xKSksV2VbeWVdW1ZlKytdPSIiIT09YXQ/YXQ6bnVsbH1pZigiRU9EIj09PWF0KWJyZWFrfX1lbHNl''@;'; put 'put ''IFdlWysreWVdPVtdLFZlPTA7cmV0dXJuIGJlJiZiZS5zaGVldFJvd3MmJihXZT1XZS5zbGljZSgwLGJlLnNoZWV0Um93cykpLFdlfWZ1bmN0aW9uIEwoZmUsYmUpe3JldHVybiBicChmdW5jdGlvbiB5KGZlLGJlKXtzd2l0Y2goYmUudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBQKGllLmRl''@;'; put 'put ''Y29kZShmZSksYmUpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gUChmZSxiZSk7Y2FzZSJidWZmZXIiOnJldHVybiBQKGZlLnRvU3RyaW5nKCJiaW5hcnkiKSxiZSk7Y2FzZSJhcnJheSI6cmV0dXJuIFAoT3QoZmUpLGJlKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrYmUudHlw''@;'; put 'put ''ZSl9KGZlLGJlKSxiZSl9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIFgoZmUsYmUpe3JldHVybiByZChMKGZlLGJlKSxiZSl9LHRvX3NoZWV0OkwsZnJvbV9zaGVldDpmdW5jdGlvbigpe3ZhciBmZT1mdW5jdGlvbih5ZSxWZSx6ZSxXZSxydCl7eWUucHVzaChWZSkseWUucHVzaCh6ZSsi''@;'; put 'put ''LCIrV2UpLHllLnB1c2goJyInK3J0LnJlcGxhY2UoLyIvZywnIiInKSsnIicpfSxiZT1mdW5jdGlvbih5ZSxWZSx6ZSxXZSl7eWUucHVzaChWZSsiLCIremUpLHllLnB1c2goMT09VmU/JyInK1dlLnJlcGxhY2UoLyIvZywnIiInKSsnIic6V2UpfTtyZXR1cm4gZnVuY3Rpb24oeWUpe3ZhciBX''@;'; put 'put ''ZSxWZT1bXSx6ZT1Sbyh5ZVsiIXJlZiJdKSxydD1BcnJheS5pc0FycmF5KHllKTtmZShWZSwiVEFCTEUiLDAsMSwic2hlZXRqcyIpLGZlKFZlLCJWRUNUT1JTIiwwLHplLmUuci16ZS5zLnIrMSwiIiksZmUoVmUsIlRVUExFUyIsMCx6ZS5lLmMtemUucy5jKzEsIiIpLGZlKFZlLCJEQVRBIiww''@;'; put 'put ''LDAsIiIpO2Zvcih2YXIgbHQ9emUucy5yO2x0PD16ZS5lLnI7KytsdCl7YmUoVmUsLTEsMCwiQk9UIik7Zm9yKHZhciBDdD16ZS5zLmM7Q3Q8PXplLmUuYzsrK0N0KXt2YXIgYXQ9QWkoe3I6bHQsYzpDdH0pO2lmKFdlPXJ0Pyh5ZVtsdF18fFtdKVtDdF06eWVbYXRdKXN3aXRjaChXZS50KXtj''@;'; put 'put ''YXNlIm4iOnZhciB2dD1XZS53OyF2dCYmbnVsbCE9V2UudiYmKHZ0PVdlLnYpLG51bGw9PXZ0P2JlKFZlLDEsMCxXZS5mJiYhV2UuRj8iPSIrV2UuZjoiIik6YmUoVmUsMCx2dCwiViIpO2JyZWFrO2Nhc2UiYiI6YmUoVmUsMCxXZS52PzE6MCxXZS52PyJUUlVFIjoiRkFMU0UiKTticmVhaztj''@;'; put 'put ''YXNlInMiOmJlKFZlLDEsMCxpc05hTihXZS52KT9XZS52Oic9IicrV2UudisnIicpO2JyZWFrO2Nhc2UiZCI6V2Uud3x8KFdlLnc9dy5mb3JtYXQoV2Uuenx8dy5fdGFibGVbMTRdLFplKEZ0KFdlLnYpKSkpLGJlKFZlLDAsV2UudywiViIpO2JyZWFrO2RlZmF1bHQ6YmUoVmUsMSwwLCIiKX1l''@;'; put 'put ''bHNlIGJlKFZlLDEsMCwiIil9fXJldHVybiBiZShWZSwtMSwwLCJFT0QiKSxWZS5qb2luKCJcclxuIil9fSgpfX0oKSxxNT1mdW5jdGlvbigpe2Z1bmN0aW9uIHkoV2Upe3JldHVybiBXZS5yZXBsYWNlKC9cXGIvZywiXFwiKS5yZXBsYWNlKC9cXGMvZywiOiIpLnJlcGxhY2UoL1xcbi9nLCJc''@;'; put 'put ''biIpfWZ1bmN0aW9uIFAoV2Upe3JldHVybiBXZS5yZXBsYWNlKC9cXC9nLCJcXGIiKS5yZXBsYWNlKC86L2csIlxcYyIpLnJlcGxhY2UoL1xuL2csIlxcbiIpfWZ1bmN0aW9uIFgoV2UscnQpe3JldHVybiBicChmdW5jdGlvbiBMKFdlLHJ0KXtmb3IodmFyIGx0PVdlLnNwbGl0KCJcbiIpLEN0''@;'; put 'put ''PS0xLGF0PS0xLHZ0PTAsUHQ9W107dnQhPT1sdC5sZW5ndGg7Kyt2dCl7dmFyIGt0PWx0W3Z0XS50cmltKCkuc3BsaXQoIjoiKTtpZigiY2VsbCI9PT1rdFswXSl7dmFyIER0PWtzKGt0WzFdKTtpZihQdC5sZW5ndGg8PUR0LnIpZm9yKEN0PVB0Lmxlbmd0aDtDdDw9RHQucjsrK0N0KVB0W0N0''@;'; put 'put ''XXx8KFB0W0N0XT1bXSk7c3dpdGNoKEN0PUR0LnIsYXQ9RHQuYyxrdFsyXSl7Y2FzZSJ0IjpQdFtDdF1bYXRdPXkoa3RbM10pO2JyZWFrO2Nhc2UidiI6UHRbQ3RdW2F0XT0ra3RbM107YnJlYWs7Y2FzZSJ2dGYiOnZhciBadD1rdFtrdC5sZW5ndGgtMV07Y2FzZSJ2dGMiOlB0W0N0XVthdF09''@;'; put 'put ''Im5sIj09PWt0WzNdPyEhK2t0WzRdOitrdFs0XSwidnRmIj09a3RbMl0mJihQdFtDdF1bYXRdPVtQdFtDdF1bYXRdLFp0XSl9fX1yZXR1cm4gcnQmJnJ0LnNoZWV0Um93cyYmKFB0PVB0LnNsaWNlKDAscnQuc2hlZXRSb3dzKSksUHR9KFdlLHJ0KSxydCl9dmFyIGZlPVsic29jaWFsY2FsYzp2''@;'; put 'put ''ZXJzaW9uOjEuNSIsIk1JTUUtVmVyc2lvbjogMS4wIiwiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlIl0uam9pbigiXG4iKSxiZT1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250''@;'; put 'put ''ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKCJcbiIpKyJcbiIsdmU9WyIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlIiwicGFydDpzaGVldCJdLmpvaW4oIlxuIikseWU9Ii0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUtLSI7''@;'; put 'put ''ZnVuY3Rpb24gVmUoV2Upe2lmKCFXZXx8IVdlWyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZhciBDdCxydD1bXSxsdD1bXSxhdD0iIix2dD1hYShXZVsiIXJlZiJdKSxQdD1BcnJheS5pc0FycmF5KFdlKSxrdD12dC5zLnI7a3Q8PXZ0LmUucjsrK2t0KWZvcih2YXIgRHQ9dnQucy5jO0R0PD12dC5l''@;'; put 'put ''LmM7KytEdClpZihhdD1BaSh7cjprdCxjOkR0fSksKEN0PVB0PyhXZVtrdF18fFtdKVtEdF06V2VbYXRdKSYmbnVsbCE9Q3QudiYmInoiIT09Q3QudCl7c3dpdGNoKGx0PVsiY2VsbCIsYXQsInQiXSxDdC50KXtjYXNlInMiOmNhc2Uic3RyIjpsdC5wdXNoKFAoQ3QudikpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''biI6Q3QuZj8obHRbMl09InZ0ZiIsbHRbM109Im4iLGx0WzRdPUN0LnYsbHRbNV09UChDdC5mKSk6KGx0WzJdPSJ2IixsdFszXT1DdC52KTticmVhaztjYXNlImIiOmx0WzJdPSJ2dCIrKEN0LmY/ImYiOiJjIiksbHRbM109Im5sIixsdFs0XT1DdC52PyIxIjoiMCIsbHRbNV09UChDdC5mfHwo''@;'; put 'put ''Q3Qudj8iVFJVRSI6IkZBTFNFIikpO2JyZWFrO2Nhc2UiZCI6dmFyIFp0PVplKEZ0KEN0LnYpKTtsdFsyXT0idnRjIixsdFszXT0ibmQiLGx0WzRdPSIiK1p0LGx0WzVdPUN0Lnd8fHcuZm9ybWF0KEN0Lnp8fHcuX3RhYmxlWzE0XSxadCk7YnJlYWs7Y2FzZSJlIjpjb250aW51ZX1ydC5wdXNo''@;'; put 'put ''KGx0LmpvaW4oIjoiKSl9cmV0dXJuIHJ0LnB1c2goInNoZWV0OmM6IisodnQuZS5jLXZ0LnMuYysxKSsiOnI6IisodnQuZS5yLXZ0LnMucisxKSsiOnR2ZjoxIikscnQucHVzaCgidmFsdWVmb3JtYXQ6MTp0ZXh0LXdpa2kiKSxydC5qb2luKCJcbiIpfXJldHVybnt0b193b3JrYm9vazpmdW5j''@;'; put 'put ''dGlvbiBuZShXZSxydCl7cmV0dXJuIHJkKFgoV2UscnQpLHJ0KX0sdG9fc2hlZXQ6WCxmcm9tX3NoZWV0OmZ1bmN0aW9uIHplKFdlKXtyZXR1cm5bZmUsYmUsdmUsYmUsVmUoV2UpLHllXS5qb2luKCJcbiIpfX19KCksV2Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KHplLFdlLHJ0LGx0LEN0KXtD''@;'; put 'put ''dC5yYXc/V2VbcnRdW2x0XT16ZToiIj09PXplfHwoV2VbcnRdW2x0XT1Hbih6ZSxDdCk/R24oemUsQ3QpLnY6emUpfXZhciBMPXs0NDoiLCIsOToiXHQiLDU5OiI7In0sWD17NDQ6Myw5OjIsNTk6MX07ZnVuY3Rpb24gbmUoemUpe2Zvcih2YXIgV2U9e30scnQ9ITEsbHQ9MCxDdD0wO2x0PHpl''@;'; put 'put ''Lmxlbmd0aDsrK2x0KTM0PT0oQ3Q9emUuY2hhckNvZGVBdChsdCkpP3J0PSFydDohcnQmJkN0IGluIEwmJihXZVtDdF09KFdlW0N0XXx8MCkrMSk7Zm9yKGx0IGluIEN0PVtdLFdlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXZSxsdCkmJkN0LnB1c2goW1dlW2x0XSxs''@;'; put 'put ''dF0pO2lmKCFDdC5sZW5ndGgpZm9yKGx0IGluIFdlPVgpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFdlLGx0KSYmQ3QucHVzaChbV2VbbHRdLGx0XSk7cmV0dXJuIEN0LnNvcnQoZnVuY3Rpb24oYXQsdnQpe3JldHVybiBhdFswXS12dFswXXx8WFthdFsxXV0tWFt2dFsx''@;'; put 'put ''XV19KSxMW0N0LnBvcCgpWzFdXX1mdW5jdGlvbiBiZSh6ZSxXZSl7cmV0dXJuIVdlfHwhV2UuUFJOfHwic2VwPSI9PXplLnNsaWNlKDAsNCl8fHplLmluZGV4T2YoIlx0Iik+PTB8fHplLmluZGV4T2YoIiwiKT49MHx8emUuaW5kZXhPZigiOyIpPj0wP2Z1bmN0aW9uIGZlKHplLFdlKXt2YXIg''@;'; put 'put ''cnQ9V2V8fHt9LGx0PSIiO251bGwhPWVlJiZudWxsPT1ydC5kZW5zZSYmKHJ0LmRlbnNlPWVlKTt2YXIgQ3Q9cnQuZGVuc2U/W106e30sYXQ9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTsic2VwPSI9PXplLnNsaWNlKDAsNCk/MTM9PXplLmNoYXJDb2RlQXQoNSkmJjEwPT16ZS5jaGFyQ29k''@;'; put 'put ''ZUF0KDYpPyhsdD16ZS5jaGFyQXQoNCksemU9emUuc2xpY2UoNykpOjEzPT16ZS5jaGFyQ29kZUF0KDUpfHwxMD09emUuY2hhckNvZGVBdCg1KT8obHQ9emUuY2hhckF0KDQpLHplPXplLnNsaWNlKDYpKTpsdD1uZSh6ZS5zbGljZSgwLDEwMjQpKTpsdD1uZSh6ZS5zbGljZSgwLDEwMjQpKTt2''@;'; put 'put ''YXIgdnQ9MCxQdD0wLGt0PTAsRHQ9MCxadD0wLGduPWx0LmNoYXJDb2RlQXQoMCksJG49ITEsY249MCxYbj16ZS5jaGFyQ29kZUF0KDApO3plPXplLnJlcGxhY2UoL1xyXG4vZ20sIlxuIik7dmFyIEJuPW51bGwhPXJ0LmRhdGVORj9mdW5jdGlvbiBTZSh5KXt2YXIgUD0ibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIHk/dy5fdGFibGVbeV06eTtyZXR1cm4gUD1QLnJlcGxhY2UoaGUsIihcXGQrKSIpLG5ldyBSZWdFeHAoIl4iK1ArIiQiKX0ocnQuZGF0ZU5GKTpudWxsO2Z1bmN0aW9uIERuKCl7dmFyIFFuPXplLnNsaWNlKER0LFp0KSxlcj17fTtpZignIic9PVFuLmNoYXJBdCgwKSYmJyInPT1Rbi5j''@;'; put 'put ''aGFyQXQoUW4ubGVuZ3RoLTEpJiYoUW49UW4uc2xpY2UoMSwtMSkucmVwbGFjZSgvIiIvZywnIicpKSwwPT09UW4ubGVuZ3RoKWVyLnQ9InoiO2Vsc2UgaWYocnQucmF3KWVyLnQ9InMiLGVyLnY9UW47ZWxzZSBpZigwPT09UW4udHJpbSgpLmxlbmd0aCllci50PSJzIixlci52PVFuO2Vsc2Ug''@;'; put 'put ''aWYoNjE9PVFuLmNoYXJDb2RlQXQoMCkpMzQ9PVFuLmNoYXJDb2RlQXQoMSkmJjM0PT1Rbi5jaGFyQ29kZUF0KFFuLmxlbmd0aC0xKT8oZXIudD0icyIsZXIudj1Rbi5zbGljZSgyLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpOmZ1bmN0aW9uIGJRKHkpe3JldHVybiAxIT15Lmxlbmd0aH0oUW4p''@;'; put 'put ''Pyhlci50PSJuIixlci5mPVFuLnNsaWNlKDEpKTooZXIudD0icyIsZXIudj1Rbik7ZWxzZSBpZigiVFJVRSI9PVFuKWVyLnQ9ImIiLGVyLnY9ITA7ZWxzZSBpZigiRkFMU0UiPT1Rbillci50PSJiIixlci52PSExO2Vsc2UgaWYoaXNOYU4oa3Q9Tm4oUW4pKSlpZighaXNOYU4obm4oUW4pLmdl''@;'; put 'put ''dERhdGUoKSl8fEJuJiZRbi5tYXRjaChCbikpe2VyLno9cnQuZGF0ZU5GfHx3Ll90YWJsZVsxNF07dmFyIHpuPTA7Qm4mJlFuLm1hdGNoKEJuKSYmKFFuPWZ1bmN0aW9uIExlKHksUCxMKXt2YXIgWD0tMSxuZT0tMSxmZT0tMSxiZT0tMSx2ZT0tMSx5ZT0tMTsoUC5tYXRjaChoZSl8fFtdKS5m''@;'; put 'put ''b3JFYWNoKGZ1bmN0aW9uKFdlLHJ0KXt2YXIgbHQ9cGFyc2VJbnQoTFtydCsxXSwxMCk7c3dpdGNoKFdlLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKXtjYXNlInkiOlg9bHQ7YnJlYWs7Y2FzZSJkIjpmZT1sdDticmVhaztjYXNlImgiOmJlPWx0O2JyZWFrO2Nhc2UicyI6eWU9bHQ7YnJlYWs7''@;'; put 'put ''Y2FzZSJtIjpiZT49MD92ZT1sdDpuZT1sdH19KSx5ZT49MCYmLTE9PXZlJiZuZT49MCYmKHZlPW5lLG5lPS0xKTt2YXIgVmU9KCIiKyhYPj0wP1g6KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpKSkuc2xpY2UoLTQpKyItIisoIjAwIisobmU+PTE/bmU6MSkpLnNsaWNlKC0yKSsiLSIrKCIwMCIr''@;'; put 'put ''KGZlPj0xP2ZlOjEpKS5zbGljZSgtMik7Nz09VmUubGVuZ3RoJiYoVmU9IjAiK1ZlKSw4PT1WZS5sZW5ndGgmJihWZT0iMjAiK1ZlKTt2YXIgemU9KCIwMCIrKGJlPj0wP2JlOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyh2ZT49MD92ZTowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisoeWU+PTA/''@;'; put 'put ''eWU6MCkpLnNsaWNlKC0yKTtyZXR1cm4tMT09YmUmJi0xPT12ZSYmLTE9PXllP1ZlOi0xPT1YJiYtMT09bmUmJi0xPT1mZT96ZTpWZSsiVCIremV9KDAscnQuZGF0ZU5GLFFuLm1hdGNoKEJuKXx8W10pLHpuPTEpLHJ0LmNlbGxEYXRlcz8oZXIudD0iZCIsZXIudj1GdChRbix6bikpOihlci50''@;'; put 'put ''PSJuIixlci52PVplKEZ0KFFuLHpuKSkpLCExIT09cnQuY2VsbFRleHQmJihlci53PXcuZm9ybWF0KGVyLnosZXIudiBpbnN0YW5jZW9mIERhdGU/WmUoZXIudik6ZXIudikpLHJ0LmNlbGxORnx8ZGVsZXRlIGVyLnp9ZWxzZSBlci50PSJzIixlci52PVFuO2Vsc2UgZXIudD0ibiIsITEhPT1y''@;'; put 'put ''dC5jZWxsVGV4dCYmKGVyLnc9UW4pLGVyLnY9a3Q7aWYoInoiPT1lci50fHwocnQuZGVuc2U/KEN0W3Z0XXx8KEN0W3Z0XT1bXSksQ3RbdnRdW1B0XT1lcik6Q3RbQWkoe2M6UHQscjp2dH0pXT1lciksWG49emUuY2hhckNvZGVBdChEdD1adCsxKSxhdC5lLmM8UHQmJihhdC5lLmM9UHQpLGF0''@;'; put 'put ''LmUucjx2dCYmKGF0LmUucj12dCksY249PWduKSsrUHQ7ZWxzZSBpZihQdD0wLCsrdnQscnQuc2hlZXRSb3dzJiZydC5zaGVldFJvd3M8PXZ0KXJldHVybiEwfWU6Zm9yKDtadDx6ZS5sZW5ndGg7KytadClzd2l0Y2goY249emUuY2hhckNvZGVBdChadCkpe2Nhc2UgMzQ6MzQ9PT1YbiYmKCRu''@;'; put 'put ''PSEkbik7YnJlYWs7Y2FzZSBnbjpjYXNlIDEwOmNhc2UgMTM6aWYoISRuJiZEbigpKWJyZWFrIGV9cmV0dXJuIFp0LUR0PjAmJkRuKCksQ3RbIiFyZWYiXT1EaShhdCksQ3R9KHplLFdlKTpicChmdW5jdGlvbiBQKHplLFdlKXt2YXIgcnQ9V2V8fHt9LGx0PVtdO2lmKCF6ZXx8MD09PXplLmxl''@;'; put 'put ''bmd0aClyZXR1cm4gbHQ7Zm9yKHZhciBDdD16ZS5zcGxpdCgvW1xyXG5dLyksYXQ9Q3QubGVuZ3RoLTE7YXQ+PTAmJjA9PT1DdFthdF0ubGVuZ3RoOyktLWF0O2Zvcih2YXIgdnQ9MTAsUHQ9MCxrdD0wO2t0PD1hdDsrK2t0KS0xPT0oUHQ9Q3Rba3RdLmluZGV4T2YoIiAiKSk/UHQ9Q3Rba3Rd''@;'; put 'put ''Lmxlbmd0aDpQdCsrLHZ0PU1hdGgubWF4KHZ0LFB0KTtmb3Ioa3Q9MDtrdDw9YXQ7KytrdCl7bHRba3RdPVtdO3ZhciBEdD0wO2Zvcih5KEN0W2t0XS5zbGljZSgwLHZ0KS50cmltKCksbHQsa3QsRHQscnQpLER0PTE7RHQ8PShDdFtrdF0ubGVuZ3RoLXZ0KS8xMCsxOysrRHQpeShDdFtrdF0u''@;'; put 'put ''c2xpY2UodnQrMTAqKER0LTEpLHZ0KzEwKkR0KS50cmltKCksbHQsa3QsRHQscnQpfXJldHVybiBydC5zaGVldFJvd3MmJihsdD1sdC5zbGljZSgwLHJ0LnNoZWV0Um93cykpLGx0fSh6ZSxXZSksV2UpfWZ1bmN0aW9uIHZlKHplLFdlKXt2YXIgcnQ9IiIsbHQ9InN0cmluZyI9PVdlLnR5cGU/''@;'; put 'put ''WzAsMCwwLDBdOmpDKHplLFdlKTtzd2l0Y2goV2UudHlwZSl7Y2FzZSJiYXNlNjQiOnJ0PWllLmRlY29kZSh6ZSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmNhc2Uic3RyaW5nIjpydD16ZTticmVhaztjYXNlImJ1ZmZlciI6cnQ9NjUwMDE9PVdlLmNvZGVwYWdlP3plLnRvU3RyaW5nKCJ1dGY4Iik6''@;'; put 'put ''V2UuY29kZXBhZ2UmJnR5cGVvZiBjcHRhYmxlPCJ1Ij9jcHRhYmxlLnV0aWxzLmRlY29kZShXZS5jb2RlcGFnZSx6ZSk6emUudG9TdHJpbmcoImJpbmFyeSIpO2JyZWFrO2Nhc2UiYXJyYXkiOnJ0PU90KHplKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5''@;'; put 'put ''cGUgIitXZS50eXBlKX1yZXR1cm4gMjM5PT1sdFswXSYmMTg3PT1sdFsxXSYmMTkxPT1sdFsyXT9ydD1ZaShydC5zbGljZSgzKSk6ImJpbmFyeSI9PVdlLnR5cGUmJnR5cGVvZiBjcHRhYmxlPCJ1IiYmV2UuY29kZXBhZ2UmJihydD1jcHRhYmxlLnV0aWxzLmRlY29kZShXZS5jb2RlcGFnZSxj''@;'; put 'put ''cHRhYmxlLnV0aWxzLmVuY29kZSgyODU5MSxydCkpKSwic29jaWFsY2FsYzp2ZXJzaW9uOiI9PXJ0LnNsaWNlKDAsMTkpP3E1LnRvX3NoZWV0KCJzdHJpbmciPT1XZS50eXBlP3J0OllpKHJ0KSxXZSk6YmUocnQsV2UpfXJldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiB5ZSh6ZSxXZSl7cmV0''@;'; put 'put ''dXJuIHJkKHZlKHplLFdlKSxXZSl9LHRvX3NoZWV0OnZlLGZyb21fc2hlZXQ6ZnVuY3Rpb24gVmUoemUpe2Zvcih2YXIgbHQsV2U9W10scnQ9Um8oemVbIiFyZWYiXSksQ3Q9QXJyYXkuaXNBcnJheSh6ZSksYXQ9cnQucy5yO2F0PD1ydC5lLnI7KythdCl7Zm9yKHZhciB2dD1bXSxQdD1ydC5z''@;'; put 'put ''LmM7UHQ8PXJ0LmUuYzsrK1B0KXt2YXIga3Q9QWkoe3I6YXQsYzpQdH0pO2lmKChsdD1DdD8oemVbYXRdfHxbXSlbUHRdOnplW2t0XSkmJm51bGwhPWx0LnYpe2Zvcih2YXIgRHQ9KGx0Lnd8fChJYShsdCksbHQudyl8fCIiKS5zbGljZSgwLDEwKTtEdC5sZW5ndGg8MTA7KUR0Kz0iICI7dnQu''@;'; put 'put ''cHVzaChEdCsoMD09PVB0PyIgIjoiIikpfWVsc2UgdnQucHVzaCgiICAgICAgICAgICIpfVdlLnB1c2godnQuam9pbigiIikpfXJldHVybiBXZS5qb2luKCJcbiIpfX19KCksRTk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB5KEFuLHdyLHJyKXtpZihBbil7Z3MoQW4sQW4ubHx8MCk7Zm9yKHZhciBF''@;'; put 'put ''bj1yci5FbnVtfHx0aTtBbi5sPEFuLmxlbmd0aDspe3ZhciBDcj1Bbi5yZWFkX3NoaWZ0KDIpLGJpPUVuW0NyXXx8RW5bNjU1MzVdLHFyPUFuLnJlYWRfc2hpZnQoMiksVWk9QW4ubCtxcixMbz1iaS5mJiZiaS5mKEFuLHFyLHJyKTtpZihBbi5sPVVpLHdyKExvLGJpLENyKSlyZXR1cm59fX1m''@;'; put 'put ''dW5jdGlvbiBMKEFuLHdyKXtpZighQW4pcmV0dXJuIEFuO3ZhciBycj13cnx8e307bnVsbCE9ZWUmJm51bGw9PXJyLmRlbnNlJiYocnIuZGVuc2U9ZWUpO3ZhciBFbj1yci5kZW5zZT9bXTp7fSxDcj0iU2hlZXQxIixiaT0wLHFyPXt9LFVpPVtDcl0sTG89W10sSWk9e3M6e3I6MCxjOjB9LGU6''@;'; put 'put ''e3I6MCxjOjB9fSxzcz1yci5zaGVldFJvd3N8fDA7aWYoMj09QW5bMl0pcnIuRW51bT10aSx5KEFuLGZ1bmN0aW9uKGFpLEtzLE1uKXtzd2l0Y2goTW4pe2Nhc2UgMDpyci52ZXJzPWFpLGFpPj00MDk2JiYocnIucXBybz0hMCk7YnJlYWs7Y2FzZSA2OklpPWFpO2JyZWFrO2Nhc2UgMTU6Y2Fz''@;'; put 'put ''ZSA1MTpyci5xcHJvfHwoYWlbMV0udj1haVsxXS52LnNsaWNlKDEpKTtjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxNjoxND09TW4mJiEoMTEyJn5haVsyXSkmJigxNSZhaVsyXSk+MSYmKDE1JmFpWzJdKTwxNSYmKGFpWzFdLno9cnIuZGF0ZU5GfHx3Ll90YWJsZVsxNF0scnIuY2VsbERhdGVzJiYo''@;'; put 'put ''YWlbMV0udD0iZCIsYWlbMV0udj1jdChhaVsxXS52KSkpO3ZhciB5cz1yci5kZW5zZT8oRW5bYWlbMF0ucl18fFtdKVthaVswXS5jXTpFbltBaShhaVswXSldO2lmKHlzKXt5cy50PWFpWzFdLnQseXMudj1haVsxXS52LG51bGwhPWFpWzFdLnomJih5cy56PWFpWzFdLnopLG51bGwhPWFpWzFd''@;'; put 'put ''LmYmJih5cy5mPWFpWzFdLmYpO2JyZWFrfXJyLmRlbnNlPyhFblthaVswXS5yXXx8KEVuW2FpWzBdLnJdPVtdKSxFblthaVswXS5yXVthaVswXS5jXT1haVsxXSk6RW5bQWkoYWlbMF0pXT1haVsxXX19LHJyKTtlbHNle2lmKDI2IT1BblsyXSYmMTQhPUFuWzJdKXRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''VW5yZWNvZ25pemVkIExPVFVTIEJPRiAiK0FuWzJdKTtyci5FbnVtPWZyLDE0PT1BblsyXSYmKHJyLnFwcm89ITAsQW4ubD0wKSx5KEFuLGZ1bmN0aW9uKGFpLEtzLE1uKXtzd2l0Y2goTW4pe2Nhc2UgMjI6YWlbMV0udj1haVsxXS52LnNsaWNlKDEpO2Nhc2UgMjM6Y2FzZSAyNDpjYXNlIDI1''@;'; put 'put ''OmNhc2UgMzc6Y2FzZSAzOTpjYXNlIDQwOmlmKGFpWzNdPmJpJiYoRW5bIiFyZWYiXT1EaShJaSkscXJbQ3JdPUVuLEVuPXJyLmRlbnNlP1tdOnt9LElpPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sVWkucHVzaChDcj0iU2hlZXQiKygoYmk9YWlbM10pKzEpKSksc3M+MCYmYWlbMF0ucj49''@;'; put 'put ''c3MpYnJlYWs7cnIuZGVuc2U/KEVuW2FpWzBdLnJdfHwoRW5bYWlbMF0ucl09W10pLEVuW2FpWzBdLnJdW2FpWzBdLmNdPWFpWzFdKTpFbltBaShhaVswXSldPWFpWzFdLElpLmUuYzxhaVswXS5jJiYoSWkuZS5jPWFpWzBdLmMpLElpLmUucjxhaVswXS5yJiYoSWkuZS5yPWFpWzBdLnIpO2Jy''@;'; put 'put ''ZWFrO2Nhc2UgMjc6YWlbMTRlM10mJihMb1thaVsxNGUzXVswXV09YWlbMTRlM11bMV0pfX0scnIpfWlmKEVuWyIhcmVmIl09RGkoSWkpLHFyW0NyXT1FbiwhTG8ubGVuZ3RoKXJldHVybntTaGVldE5hbWVzOlVpLFNoZWV0czpxcn07Zm9yKHZhciB1bz17fSxObz1bXSxFbz0wO0VvPExvLmxl''@;'; put 'put ''bmd0aDsrK0VvKXFyW1VpW0VvXV0mJihOby5wdXNoKExvW0VvXSksdW9bTG9bRW9dXT1xcltVaVtFb11dKTtyZXR1cm57U2hlZXROYW1lczpObyxTaGVldHM6dW99fWZ1bmN0aW9uIFZlKEFuLHdyLHJyKXt2YXIgRW49W3tjOjAscjowfSx7dDoibiIsdjowfSwwXTtyZXR1cm4gcnIucXBybyYm''@;'; put 'put ''MjA3NjghPXJyLnZlcnM/KEVuWzBdLmM9QW4ucmVhZF9zaGlmdCgxKSxBbi5sKyssRW5bMF0ucj1Bbi5yZWFkX3NoaWZ0KDIpLEFuLmwrPTIpOihFblsyXT1Bbi5yZWFkX3NoaWZ0KDEpLEVuWzBdLmM9QW4ucmVhZF9zaGlmdCgyKSxFblswXS5yPUFuLnJlYWRfc2hpZnQoMikpLEVufWZ1bmN0''@;'; put 'put ''aW9uIHplKEFuLHdyLHJyKXt2YXIgRW49QW4ubCt3cixDcj1WZShBbiwwLHJyKTtpZihDclsxXS50PSJzIiwyMDc2OD09cnIudmVycyl7QW4ubCsrO3ZhciBiaT1Bbi5yZWFkX3NoaWZ0KDEpO3JldHVybiBDclsxXS52PUFuLnJlYWRfc2hpZnQoYmksInV0ZjgiKSxDcn1yZXR1cm4gcnIucXBy''@;'; put 'put ''byYmQW4ubCsrLENyWzFdLnY9QW4ucmVhZF9zaGlmdChFbi1Bbi5sLCJjc3RyIiksQ3J9ZnVuY3Rpb24gV2UoQW4sd3IscnIpe3ZhciBFbj14cig3K3JyLmxlbmd0aCk7RW4ud3JpdGVfc2hpZnQoMSwyNTUpLEVuLndyaXRlX3NoaWZ0KDIsd3IpLEVuLndyaXRlX3NoaWZ0KDIsQW4pLEVuLndy''@;'; put 'put ''aXRlX3NoaWZ0KDEsMzkpO2Zvcih2YXIgQ3I9MDtDcjxFbi5sZW5ndGg7KytDcil7dmFyIGJpPXJyLmNoYXJDb2RlQXQoQ3IpO0VuLndyaXRlX3NoaWZ0KDEsYmk+PTEyOD85NTpiaSl9cmV0dXJuIEVuLndyaXRlX3NoaWZ0KDEsMCksRW59ZnVuY3Rpb24gbHQoQW4sd3IscnIpe3ZhciBFbj14''@;'; put 'put ''cig3KTtyZXR1cm4gRW4ud3JpdGVfc2hpZnQoMSwyNTUpLEVuLndyaXRlX3NoaWZ0KDIsd3IpLEVuLndyaXRlX3NoaWZ0KDIsQW4pLEVuLndyaXRlX3NoaWZ0KDIscnIsImkiKSxFbn1mdW5jdGlvbiBhdChBbix3cixycil7dmFyIEVuPXhyKDEzKTtyZXR1cm4gRW4ud3JpdGVfc2hpZnQoMSwy''@;'; put 'put ''NTUpLEVuLndyaXRlX3NoaWZ0KDIsd3IpLEVuLndyaXRlX3NoaWZ0KDIsQW4pLEVuLndyaXRlX3NoaWZ0KDgscnIsImYiKSxFbn1mdW5jdGlvbiBQdChBbix3cixycil7dmFyIEVuPTMyNzY4JndyO3JldHVybiB3cj0oRW4/QW46MCkrKCh3ciY9LTMyNzY5KT49ODE5Mj93ci0xNjM4NDp3ciks''@;'; put 'put ''KEVuPyIiOiIkIikrKHJyP3lvKHdyKTpicyh3cikpfXZhciBEdD17NTE6WyJGQUxTRSIsMF0sNTI6WyJUUlVFIiwwXSw3MDpbIkxFTiIsMV0sODA6WyJTVU0iLDY5XSw4MTpbIkFWRVJBR0VBIiw2OV0sODI6WyJDT1VOVEEiLDY5XSw4MzpbIk1JTkEiLDY5XSw4NDpbIk1BWEEiLDY5XSwxMTE6''@;'; put 'put ''WyJUIiwxXX0sWnQ9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIrIiwiLSIsIioiLCIvIiwiXiIsIj0iLCI8PiIsIjw9IiwiPj0iLCI8IiwiPiIsIiIsIiIsIiIsIiIsIiYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiXTtmdW5jdGlvbiAkbihBbil7dmFyIHdyPVt7YzowLHI6MH0se3Q6Im4i''@;'; put 'put ''LHY6MH0sMF07cmV0dXJuIHdyWzBdLnI9QW4ucmVhZF9zaGlmdCgyKSx3clszXT1BbltBbi5sKytdLHdyWzBdLmM9QW5bQW4ubCsrXSx3cn1mdW5jdGlvbiBYbihBbix3cixycixFbil7dmFyIENyPXhyKDYrRW4ubGVuZ3RoKTtDci53cml0ZV9zaGlmdCgyLEFuKSxDci53cml0ZV9zaGlmdCgx''@;'; put 'put ''LHJyKSxDci53cml0ZV9zaGlmdCgxLHdyKSxDci53cml0ZV9zaGlmdCgxLDM5KTtmb3IodmFyIGJpPTA7Ymk8RW4ubGVuZ3RoOysrYmkpe3ZhciBxcj1Fbi5jaGFyQ29kZUF0KGJpKTtDci53cml0ZV9zaGlmdCgxLHFyPj0xMjg/OTU6cXIpfXJldHVybiBDci53cml0ZV9zaGlmdCgxLDApLENy''@;'; put 'put ''fWZ1bmN0aW9uIERuKEFuLHdyKXt2YXIgcnI9JG4oQW4pLEVuPUFuLnJlYWRfc2hpZnQoNCksQ3I9QW4ucmVhZF9zaGlmdCg0KSxiaT1Bbi5yZWFkX3NoaWZ0KDIpO2lmKDY1NTM1PT1iaSlyZXR1cm4gMD09PUVuJiYzMjIxMjI1NDcyPT09Q3I/KHJyWzFdLnQ9ImUiLHJyWzFdLnY9MTUpOjA9''@;'; put 'put ''PT1FbiYmMzQ4OTY2MDkyOD09PUNyPyhyclsxXS50PSJlIixyclsxXS52PTQyKTpyclsxXS52PTAscnI7dmFyIHFyPTMyNzY4JmJpO3JldHVybiBiaT0oMzI3NjcmYmkpLTE2NDQ2LHJyWzFdLnY9KDEtMipxcikqKENyKk1hdGgucG93KDIsYmkrMzIpK0VuKk1hdGgucG93KDIsYmkpKSxycn1m''@;'; put 'put ''dW5jdGlvbiBRbihBbix3cixycixFbil7dmFyIENyPXhyKDE0KTtpZihDci53cml0ZV9zaGlmdCgyLEFuKSxDci53cml0ZV9zaGlmdCgxLHJyKSxDci53cml0ZV9zaGlmdCgxLHdyKSwwPT1FbilyZXR1cm4gQ3Iud3JpdGVfc2hpZnQoNCwwKSxDci53cml0ZV9zaGlmdCg0LDApLENyLndyaXRl''@;'; put 'put ''X3NoaWZ0KDIsNjU1MzUpLENyO3ZhciBiaT0wLHFyPTAsTG89MDtyZXR1cm4gRW48MCYmKGJpPTEsRW49LUVuKSxxcj0wfE1hdGgubG9nMihFbiksMjE0NzQ4MzY0OCYoTG89KEVuLz1NYXRoLnBvdygyLHFyLTMxKSk+Pj4wKXx8KCsrcXIsTG89KEVuLz0yKT4+PjApLEVuLT1MbyxMb3w9MjE0''@;'; put 'put ''NzQ4MzY0OCxMbz4+Pj0wLEVuKj1NYXRoLnBvdygyLDMyKSxDci53cml0ZV9zaGlmdCg0LEVuPj4+MCksQ3Iud3JpdGVfc2hpZnQoNCxMbyksQ3Iud3JpdGVfc2hpZnQoMixxcis9MTYzODMrKGJpPzMyNzY4OjApKSxDcn1mdW5jdGlvbiBLcihBbix3cil7dmFyIHJyPSRuKEFuKSxFbj1Bbi5y''@;'; put 'put ''ZWFkX3NoaWZ0KDgsImYiKTtyZXR1cm4gcnJbMV0udj1Fbixycn1mdW5jdGlvbiBPaShBbix3cil7dmFyIHJyPXhyKDUrQW4ubGVuZ3RoKTtyci53cml0ZV9zaGlmdCgyLDE0ZTMpLHJyLndyaXRlX3NoaWZ0KDIsd3IpO2Zvcih2YXIgRW49MDtFbjxBbi5sZW5ndGg7KytFbil7dmFyIENyPUFu''@;'; put 'put ''LmNoYXJDb2RlQXQoRW4pO3JyW3JyLmwrK109Q3I+MTI3Pzk1OkNyfXJldHVybiBycltyci5sKytdPTAscnJ9dmFyIHRpPXswOntuOiJCT0YiLGY6SGx9LDE6e246IkVPRiJ9LDI6e246IkNBTENNT0RFIn0sMzp7bjoiQ0FMQ09SREVSIn0sNDp7bjoiU1BMSVQifSw1OntuOiJTWU5DIn0sNjp7''@;'; put 'put ''bjoiUkFOR0UiLGY6ZnVuY3Rpb24gdmUoQW4pe3ZhciB3cj17czp7YzowLHI6MH0sZTp7YzowLHI6MH19O3JldHVybiB3ci5zLmM9QW4ucmVhZF9zaGlmdCgyKSx3ci5zLnI9QW4ucmVhZF9zaGlmdCgyKSx3ci5lLmM9QW4ucmVhZF9zaGlmdCgyKSx3ci5lLnI9QW4ucmVhZF9zaGlmdCgyKSw2''@;'; put 'put ''NTUzNT09d3Iucy5jJiYod3Iucy5jPXdyLmUuYz13ci5zLnI9d3IuZS5yPTApLHdyfX0sNzp7bjoiV0lORE9XMSJ9LDg6e246IkNPTFcxIn0sOTp7bjoiV0lOVFdPIn0sMTA6e246IkNPTFcyIn0sMTE6e246Ik5BTUUifSwxMjp7bjoiQkxBTksifSwxMzp7bjoiSU5URUdFUiIsZjpmdW5jdGlv''@;'; put 'put ''biBydChBbix3cixycil7dmFyIEVuPVZlKEFuLDAscnIpO3JldHVybiBFblsxXS52PUFuLnJlYWRfc2hpZnQoMiwiaSIpLEVufX0sMTQ6e246Ik5VTUJFUiIsZjpmdW5jdGlvbiBDdChBbix3cixycil7dmFyIEVuPVZlKEFuLDAscnIpO3JldHVybiBFblsxXS52PUFuLnJlYWRfc2hpZnQoOCwi''@;'; put 'put ''ZiIpLEVufX0sMTU6e246IkxBQkVMIixmOnplfSwxNjp7bjoiRk9STVVMQSIsZjpmdW5jdGlvbiB2dChBbix3cixycil7dmFyIEVuPUFuLmwrd3IsQ3I9VmUoQW4sMCxycik7aWYoQ3JbMV0udj1Bbi5yZWFkX3NoaWZ0KDgsImYiKSxyci5xcHJvKUFuLmw9RW47ZWxzZXt2YXIgYmk9QW4ucmVh''@;'; put 'put ''ZF9zaGlmdCgyKTsoZnVuY3Rpb24gZ24oQW4sd3Ipe2dzKEFuLDApO2Zvcih2YXIgcnI9W10sRW49MCxDcj0iIixiaT0iIjtBbi5sPEFuLmxlbmd0aDspe3ZhciBxcj1BbltBbi5sKytdO3N3aXRjaChxcil7Y2FzZSAwOnJyLnB1c2goQW4ucmVhZF9zaGlmdCg4LCJmIikpO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTpiaT1QdCh3clswXS5jLEFuLnJlYWRfc2hpZnQoMiksITApLENyPVB0KHdyWzBdLnIsQW4ucmVhZF9zaGlmdCgyKSwhMSkscnIucHVzaChiaStDcik7YnJlYWs7Y2FzZSAyOnZhciBVaT1QdCh3clswXS5jLEFuLnJlYWRfc2hpZnQoMiksITApLExvPVB0KHdyWzBdLnIsQW4ucmVhZF9zaGlm''@;'; put 'put ''dCgyKSwhMSk7Ymk9UHQod3JbMF0uYyxBbi5yZWFkX3NoaWZ0KDIpLCEwKSxDcj1QdCh3clswXS5yLEFuLnJlYWRfc2hpZnQoMiksITEpLHJyLnB1c2goVWkrTG8rIjoiK2JpK0NyKTticmVhaztjYXNlIDM6aWYoQW4ubDxBbi5sZW5ndGgpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiV0sx''@;'; put 'put ''IHByZW1hdHVyZSBmb3JtdWxhIGVuZCIpO2JyZWFrO2Nhc2UgNDpyci5wdXNoKCIoIityci5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgNTpyci5wdXNoKEFuLnJlYWRfc2hpZnQoMikpO2JyZWFrO2Nhc2UgNjpmb3IodmFyIElpPSIiO3FyPUFuW0FuLmwrK107KUlpKz1TdHJpbmcuZnJvbUNoYXJD''@;'; put 'put ''b2RlKHFyKTtyci5wdXNoKCciJytJaS5yZXBsYWNlKC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIDg6cnIucHVzaCgiLSIrcnIucG9wKCkpO2JyZWFrO2Nhc2UgMjM6cnIucHVzaCgiKyIrcnIucG9wKCkpO2JyZWFrO2Nhc2UgMjI6cnIucHVzaCgiTk9UKCIrcnIucG9wKCkrIikiKTticmVh''@;'; put 'put ''aztjYXNlIDIwOmNhc2UgMjE6dmFyIHNzPXJyLnBvcCgpLHVvPXJyLnBvcCgpO3JyLnB1c2goWyJBTkQiLCJPUiJdW3FyLTIwXSsiKCIrdW8rIiwiK3NzKyIpIik7YnJlYWs7ZGVmYXVsdDppZihxcjwzMiYmWnRbcXJdKXNzPXJyLnBvcCgpLHVvPXJyLnBvcCgpLHJyLnB1c2godW8rWnRbcXJd''@;'; put 'put ''K3NzKTtlbHNle2lmKCFEdFtxcl0pcmV0dXJuIHFyPD03P2NvbnNvbGUuZXJyb3IoIldLMSBpbnZhbGlkIG9wY29kZSAiK3FyLnRvU3RyaW5nKDE2KSk6cXI8PTI0P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBvcCAiK3FyLnRvU3RyaW5nKDE2KSk6cXI8PTMwP2NvbnNvbGUuZXJy''@;'; put 'put ''b3IoIldLMSBpbnZhbGlkIG9wY29kZSAiK3FyLnRvU3RyaW5nKDE2KSk6cXI8PTExNT9jb25zb2xlLmVycm9yKCJXSzEgdW5zdXBwb3J0ZWQgZnVuY3Rpb24gb3Bjb2RlICIrcXIudG9TdHJpbmcoMTYpKTpjb25zb2xlLmVycm9yKCJXSzEgdW5yZWNvZ25pemVkIG9wY29kZSAiK3FyLnRvU3Ry''@;'; put 'put ''aW5nKDE2KSk7aWYoNjk9PShFbj1EdFtxcl1bMV0pJiYoRW49QW5bQW4ubCsrXSksRW4+cnIubGVuZ3RoKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweCIrcXIudG9TdHJpbmcoMTYpKyI6fCIrcnIuam9pbigifCIpKyJ8Iik7dmFyIE5vPXJyLnNs''@;'; put 'put ''aWNlKC1Fbik7cnIubGVuZ3RoLT1Fbixyci5wdXNoKER0W3FyXVswXSsiKCIrTm8uam9pbigiLCIpKyIpIil9fX0xPT1yci5sZW5ndGg/d3JbMV0uZj0iIityclswXTpjb25zb2xlLmVycm9yKCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgfCIrcnIuam9pbigifCIpKyJ8Iil9KShBbi5zbGljZShB''@;'; put 'put ''bi5sLEFuLmwrYmkpLENyKSxBbi5sKz1iaX1yZXR1cm4gQ3J9fSwyNDp7bjoiVEFCTEUifSwyNTp7bjoiT1JBTkdFIn0sMjY6e246IlBSQU5HRSJ9LDI3OntuOiJTUkFOR0UifSwyODp7bjoiRlJBTkdFIn0sMjk6e246IktSQU5HRTEifSwzMjp7bjoiSFJBTkdFIn0sMzU6e246IktSQU5HRTIi''@;'; put 'put ''fSwzNjp7bjoiUFJPVEVDIn0sMzc6e246IkZPT1RFUiJ9LDM4OntuOiJIRUFERVIifSwzOTp7bjoiU0VUVVAifSw0MDp7bjoiTUFSR0lOUyJ9LDQxOntuOiJMQUJFTEZNVCJ9LDQyOntuOiJUSVRMRVMifSw0Mzp7bjoiU0hFRVRKUyJ9LDQ1OntuOiJHUkFQSCJ9LDQ2OntuOiJOR1JBUEgifSw0''@;'; put 'put ''Nzp7bjoiQ0FMQ0NPVU5UIn0sNDg6e246IlVORk9STUFUVEVEIn0sNDk6e246IkNVUlNPUlcxMiJ9LDUwOntuOiJXSU5ET1cifSw1MTp7bjoiU1RSSU5HIixmOnplfSw1NTp7bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYy''@;'; put 'put ''OntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0sNjg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7''@;'; put 'put ''bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9LDEwNTp7bjoiTVJBTkdFUz8/In0sNjU1MzU6e246IiJ9fSxmcj17MDp7bjoiQk9GIn0sMTp7bjoiRU9GIn0sMjp7''@;'; put 'put ''bjoiUEFTU1dPUkQifSwzOntuOiJDQUxDU0VUIn0sNDp7bjoiV0lORE9XU0VUIn0sNTp7bjoiU0hFRVRDRUxMUFRSIn0sNjp7bjoiU0hFRVRMQVlPVVQifSw3OntuOiJDT0xVTU5XSURUSCJ9LDg6e246IkhJRERFTkNPTFVNTiJ9LDk6e246IlVTRVJSQU5HRSJ9LDEwOntuOiJTWVNURU1SQU5H''@;'; put 'put ''RSJ9LDExOntuOiJaRVJPRk9SQ0UifSwxMjp7bjoiU09SVEtFWURJUiJ9LDEzOntuOiJGSUxFU0VBTCJ9LDE0OntuOiJEQVRBRklMTE5VTVMifSwxNTp7bjoiUFJJTlRNQUlOIn0sMTY6e246IlBSSU5UU1RSSU5HIn0sMTc6e246IkdSQVBITUFJTiJ9LDE4OntuOiJHUkFQSFNUUklORyJ9LDE5''@;'; put 'put ''OntuOiI/PyJ9LDIwOntuOiJFUlJDRUxMIn0sMjE6e246Ik5BQ0VMTCJ9LDIyOntuOiJMQUJFTDE2IixmOmZ1bmN0aW9uIGNuKEFuLHdyKXt2YXIgcnI9JG4oQW4pO3JldHVybiByclsxXS50PSJzIixyclsxXS52PUFuLnJlYWRfc2hpZnQod3ItNCwiY3N0ciIpLHJyfX0sMjM6e246Ik5VTUJF''@;'; put 'put ''UjE3IixmOkRufSwyNDp7bjoiTlVNQkVSMTgiLGY6ZnVuY3Rpb24gQm4oQW4sd3Ipe3ZhciBycj0kbihBbik7cnJbMV0udj1Bbi5yZWFkX3NoaWZ0KDIpO3ZhciBFbj1yclsxXS52Pj4xO2lmKDEmcnJbMV0udilzd2l0Y2goNyZFbil7Y2FzZSAwOkVuPTVlMyooRW4+PjMpO2JyZWFrO2Nhc2Ug''@;'; put 'put ''MTpFbj01MDAqKEVuPj4zKTticmVhaztjYXNlIDI6RW49KEVuPj4zKS8yMDticmVhaztjYXNlIDM6RW49KEVuPj4zKS8yMDA7YnJlYWs7Y2FzZSA0OkVuPShFbj4+MykvMmUzO2JyZWFrO2Nhc2UgNTpFbj0oRW4+PjMpLzJlNDticmVhaztjYXNlIDY6RW49KEVuPj4zKS8xNjticmVhaztjYXNl''@;'; put 'put ''IDc6RW49KEVuPj4zKS82NH1yZXR1cm4gcnJbMV0udj1Fbixycn19LDI1OntuOiJGT1JNVUxBMTkiLGY6ZnVuY3Rpb24gZXIoQW4sd3Ipe3ZhciBycj1EbihBbik7cmV0dXJuIEFuLmwrPXdyLTE0LHJyfX0sMjY6e246IkZPUk1VTEExQSJ9LDI3OntuOiJYRk9STUFUIixmOmZ1bmN0aW9uIEVp''@;'; put 'put ''KEFuLHdyKXtmb3IodmFyIHJyPXt9LEVuPUFuLmwrd3I7QW4ubDxFbjspe3ZhciBDcj1Bbi5yZWFkX3NoaWZ0KDIpO2lmKDE0ZTM9PUNyKXtmb3IocnJbQ3JdPVswLCIiXSxycltDcl1bMF09QW4ucmVhZF9zaGlmdCgyKTtBbltBbi5sXTspcnJbQ3JdWzFdKz1TdHJpbmcuZnJvbUNoYXJDb2Rl''@;'; put 'put ''KEFuW0FuLmxdKSxBbi5sKys7QW4ubCsrfX1yZXR1cm4gcnJ9fSwyODp7bjoiRFRMQUJFTE1JU0MifSwyOTp7bjoiRFRMQUJFTENFTEwifSwzMDp7bjoiR1JBUEhXSU5ET1cifSwzMTp7bjoiQ1BBIn0sMzI6e246IkxQTEFVVE8ifSwzMzp7bjoiUVVFUlkifSwzNDp7bjoiSElEREVOU0hFRVQi''@;'; put 'put ''fSwzNTp7bjoiPz8ifSwzNzp7bjoiTlVNQkVSMjUiLGY6ZnVuY3Rpb24gem4oQW4sd3Ipe3ZhciBycj0kbihBbiksRW49QW4ucmVhZF9zaGlmdCg0KTtyZXR1cm4gcnJbMV0udj1Fbj4+Nixycn19LDM4OntuOiI/PyJ9LDM5OntuOiJOVU1CRVIyNyIsZjpLcn0sNDA6e246IkZPUk1VTEEyOCIs''@;'; put 'put ''ZjpmdW5jdGlvbiBpaShBbix3cil7dmFyIHJyPUtyKEFuKTtyZXR1cm4gQW4ubCs9d3ItMTAscnJ9fSwxNDI6e246Ij8/In0sMTQ3OntuOiI/PyJ9LDE1MDp7bjoiPz8ifSwxNTE6e246Ij8/In0sMTUyOntuOiI/PyJ9LDE1Mzp7bjoiPz8ifSwxNTQ6e246Ij8/In0sMTU1OntuOiI/PyJ9LDE1''@;'; put 'put ''Njp7bjoiPz8ifSwxNjM6e246Ij8/In0sMTc0OntuOiI/PyJ9LDE3NTp7bjoiPz8ifSwxNzY6e246Ij8/In0sMTc3OntuOiI/PyJ9LDE4NDp7bjoiPz8ifSwxODU6e246Ij8/In0sMTg2OntuOiI/PyJ9LDE4Nzp7bjoiPz8ifSwxODg6e246Ij8/In0sMTk1OntuOiI/PyJ9LDIwMTp7bjoiPz8i''@;'; put 'put ''fSwyMDU6e246Ij8/In0sMjA2OntuOiI/PyJ9LDIwNzp7bjoiPz8ifSwyMDg6e246Ij8/In0sMjU2OntuOiI/PyJ9LDI1OTp7bjoiPz8ifSwyNjA6e246Ij8/In0sMjYxOntuOiI/PyJ9LDI2Mjp7bjoiPz8ifSwyNjM6e246Ij8/In0sMjY1OntuOiI/PyJ9LDI2Njp7bjoiPz8ifSwyNjc6e246''@;'; put 'put ''Ij8/In0sMjY4OntuOiI/PyJ9LDI3MDp7bjoiPz8ifSwyNzE6e246Ij8/In0sMzg0OntuOiI/PyJ9LDM4OTp7bjoiPz8ifSwzOTA6e246Ij8/In0sMzkzOntuOiI/PyJ9LDM5Njp7bjoiPz8ifSw1MTI6e246Ij8/In0sNTE0OntuOiI/PyJ9LDUxMzp7bjoiPz8ifSw1MTY6e246Ij8/In0sNTE3''@;'; put 'put ''OntuOiI/PyJ9LDY0MDp7bjoiPz8ifSw2NDE6e246Ij8/In0sNjQyOntuOiI/PyJ9LDY0Mzp7bjoiPz8ifSw2NDQ6e246Ij8/In0sNjQ1OntuOiI/PyJ9LDY0Njp7bjoiPz8ifSw2NDc6e246Ij8/In0sNjQ4OntuOiI/PyJ9LDY1ODp7bjoiPz8ifSw2NTk6e246Ij8/In0sNjYwOntuOiI/PyJ9''@;'; put 'put ''LDY2MTp7bjoiPz8ifSw2NjI6e246Ij8/In0sNjY1OntuOiI/PyJ9LDY2Njp7bjoiPz8ifSw3Njg6e246Ij8/In0sNzcyOntuOiI/PyJ9LDE2MDA6e246Ij8/In0sMTYwMjp7bjoiPz8ifSwxNzkzOntuOiI/PyJ9LDE3OTQ6e246Ij8/In0sMTc5NTp7bjoiPz8ifSwxNzk2OntuOiI/PyJ9LDE5''@;'; put 'put ''MjA6e246Ij8/In0sMjA0ODp7bjoiPz8ifSwyMDQ5OntuOiI/PyJ9LDIwNTI6e246Ij8/In0sMjY4ODp7bjoiPz8ifSwxMDk5ODp7bjoiPz8ifSwxMjg0OTp7bjoiPz8ifSwyODIzMzp7bjoiPz8ifSwyODQ4NDp7bjoiPz8ifSw2NTUzNTp7bjoiIn19O3JldHVybntzaGVldF90b193azE6ZnVu''@;'; put 'put ''Y3Rpb24gWChBbix3cil7dmFyIHJyPXdyfHx7fTtpZigrcnIuY29kZXBhZ2U+PTAmJnooK3JyLmNvZGVwYWdlKSwic3RyaW5nIj09cnIudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzEgdG8gSlMgc3RyaW5nIik7dmFyIEVuPWN1KCksQ3I9Um8oQW5bIiFyZWYiXSksYmk9''@;'; put 'put ''QXJyYXkuaXNBcnJheShBbikscXI9W107eWkoRW4sMCxmdW5jdGlvbiBmZShBbil7dmFyIHdyPXhyKDIpO3JldHVybiB3ci53cml0ZV9zaGlmdCgyLEFuKSx3cn0oMTAzMCkpLHlpKEVuLDYsZnVuY3Rpb24geWUoQW4pe3ZhciB3cj14cig4KTtyZXR1cm4gd3Iud3JpdGVfc2hpZnQoMixBbi5z''@;'; put 'put ''LmMpLHdyLndyaXRlX3NoaWZ0KDIsQW4ucy5yKSx3ci53cml0ZV9zaGlmdCgyLEFuLmUuYyksd3Iud3JpdGVfc2hpZnQoMixBbi5lLnIpLHdyfShDcikpO2Zvcih2YXIgVWk9Q3Iucy5yO1VpPD1Dci5lLnI7KytVaSlmb3IodmFyIExvPWJzKFVpKSxJaT1Dci5zLmM7SWk8PUNyLmUuYzsrK0lp''@;'; put 'put ''KXtVaT09PUNyLnMuciYmKHFyW0lpXT15byhJaSkpO3ZhciB1bz1iaT8oQW5bVWldfHxbXSlbSWldOkFuW3FyW0lpXStMb107dW8mJiJ6IiE9dW8udCYmKCJuIj09dW8udD8oMHx1by52KT09dW8udiYmdW8udj49LTMyNzY4JiZ1by52PD0zMjc2Nz95aShFbiwxMyxsdChVaSxJaSx1by52KSk6''@;'; put 'put ''eWkoRW4sMTQsYXQoVWksSWksdW8udikpOnlpKEVuLDE1LFdlKFVpLElpLElhKHVvKS5zbGljZSgwLDIzOSkpKSl9cmV0dXJuIHlpKEVuLDEpLEVuLmVuZCgpfSxib29rX3RvX3drMzpmdW5jdGlvbiBuZShBbix3cil7dmFyIHJyPXdyfHx7fTtpZigrcnIuY29kZXBhZ2U+PTAmJnooK3JyLmNv''@;'; put 'put ''ZGVwYWdlKSwic3RyaW5nIj09cnIudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIEVuPWN1KCk7eWkoRW4sMCxmdW5jdGlvbiBiZShBbil7dmFyIHdyPXhyKDI2KTt3ci53cml0ZV9zaGlmdCgyLDQwOTYpLHdyLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''NCksd3Iud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIHJyPTAsRW49MCxDcj0wLGJpPTA7Ymk8QW4uU2hlZXROYW1lcy5sZW5ndGg7KytiaSl7dmFyIFVpPUFuLlNoZWV0c1tBbi5TaGVldE5hbWVzW2JpXV07aWYoVWkmJlVpWyIhcmVmIl0peysrQ3I7dmFyIExvPWFhKFVpWyIhcmVmIl0pO3Jy''@;'; put 'put ''PExvLmUuciYmKHJyPUxvLmUuciksRW48TG8uZS5jJiYoRW49TG8uZS5jKX19cmV0dXJuIHdyLndyaXRlX3NoaWZ0KDIscnIpLHdyLndyaXRlX3NoaWZ0KDEsQ3IpLHdyLndyaXRlX3NoaWZ0KDEsRW4pLHdyLndyaXRlX3NoaWZ0KDIsMCksd3Iud3JpdGVfc2hpZnQoMiwwKSx3ci53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDEpLHdyLndyaXRlX3NoaWZ0KDEsMiksd3Iud3JpdGVfc2hpZnQoNCwwKSx3ci53cml0ZV9zaGlmdCg0LDApLHdyfShBbikpO2Zvcih2YXIgQ3I9MCxiaT0wO0NyPEFuLlNoZWV0TmFtZXMubGVuZ3RoOysrQ3IpKEFuLlNoZWV0c1tBbi5TaGVldE5hbWVzW0NyXV18fHt9KVsiIXJl''@;'; put 'put ''ZiJdJiZ5aShFbiwyNyxPaShBbi5TaGVldE5hbWVzW0NyXSxiaSsrKSk7dmFyIHFyPTA7Zm9yKENyPTA7Q3I8QW4uU2hlZXROYW1lcy5sZW5ndGg7KytDcil7dmFyIFVpPUFuLlNoZWV0c1tBbi5TaGVldE5hbWVzW0NyXV07aWYoVWkmJlVpWyIhcmVmIl0pe2Zvcih2YXIgTG89Um8oVWlbIiFy''@;'; put 'put ''ZWYiXSksSWk9QXJyYXkuaXNBcnJheShVaSksc3M9W10sdW89TG8ucy5yO3VvPD1Mby5lLnI7Kyt1bylmb3IodmFyIE5vPWJzKHVvKSxFbz1Mby5zLmM7RW88PUxvLmUuYzsrK0VvKXt1bz09PUxvLnMuciYmKHNzW0VvXT15byhFbykpO3ZhciBLcz1JaT8oVWlbdW9dfHxbXSlbRW9dOlVpW3Nz''@;'; put 'put ''W0VvXStOb107S3MmJiJ6IiE9S3MudCYmKCJuIj09S3MudD95aShFbiwyMyxRbih1byxFbyxxcixLcy52KSk6eWkoRW4sMjIsWG4odW8sRW8scXIsSWEoS3MpLnNsaWNlKDAsMjM5KSkpKX0rK3FyfX1yZXR1cm4geWkoRW4sMSksRW4uZW5kKCl9LHRvX3dvcmtib29rOmZ1bmN0aW9uIFAoQW4s''@;'; put 'put ''d3Ipe3N3aXRjaCh3ci50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIEwoQShpZS5kZWNvZGUoQW4pKSx3cik7Y2FzZSJiaW5hcnkiOnJldHVybiBMKEEoQW4pLHdyKTtjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6cmV0dXJuIEwoQW4sd3IpfXRocm93IlVuc3VwcG9ydGVkIHR5cGUgIit3ci50''@;'; put 'put ''eXBlfX19KCksRWc9ZnVuY3Rpb24oKXt2YXIgeT1QdSgidCIpLFA9UHUoInJQciIpO2Z1bmN0aW9uIEwoZmUpe3ZhciBiZT1mZS5tYXRjaCh5KTtpZighYmUpcmV0dXJue3Q6InMiLHY6IiJ9O3ZhciB2ZT17dDoicyIsdjpocihiZVsxXSl9LHllPWZlLm1hdGNoKFApO3JldHVybiB5ZSYmKHZl''@;'; put 'put ''LnM9ZnVuY3Rpb24gTFQoeSl7dmFyIFA9e30sTD15Lm1hdGNoKFh0KSxYPTAsbmU9ITE7aWYoTClmb3IoO1ghPUwubGVuZ3RoOysrWCl7dmFyIGZlPWFuKExbWF0pO3N3aXRjaChmZVswXS5yZXBsYWNlKC9cdyo6L2csIiIpKXtjYXNlIjxjb25kZW5zZSI6Y2FzZSI8ZXh0ZW5kIjpicmVhaztj''@;'; put 'put ''YXNlIjxzaGFkb3ciOmlmKCFmZS52YWwpYnJlYWs7Y2FzZSI8c2hhZG93PiI6Y2FzZSI8c2hhZG93Lz4iOlAuc2hhZG93PTE7YnJlYWs7Y2FzZSI8L3NoYWRvdz4iOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKCIxIj09ZmUudmFsKWJyZWFrO1AuY3A9RFtwYXJzZUludChmZS52YWwsMTApXTti''@;'; put 'put ''cmVhaztjYXNlIjxvdXRsaW5lIjppZighZmUudmFsKWJyZWFrO2Nhc2UiPG91dGxpbmU+IjpjYXNlIjxvdXRsaW5lLz4iOlAub3V0bGluZT0xO2JyZWFrO2Nhc2UiPC9vdXRsaW5lPiI6YnJlYWs7Y2FzZSI8ckZvbnQiOlAubmFtZT1mZS52YWw7YnJlYWs7Y2FzZSI8c3oiOlAuc3o9ZmUudmFs''@;'; put 'put ''O2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIWZlLnZhbClicmVhaztjYXNlIjxzdHJpa2U+IjpjYXNlIjxzdHJpa2UvPiI6UC5zdHJpa2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8dSI6aWYoIWZlLnZhbClicmVhaztzd2l0Y2goZmUudmFsKXtjYXNlImRvdWJsZSI6UC51''@;'; put 'put ''bmRlcmxpbmU9MjticmVhaztjYXNlInNpbmdsZUFjY291bnRpbmciOlAudW5kZXJsaW5lPTMzO2JyZWFrO2Nhc2UiZG91YmxlQWNjb3VudGluZyI6UC51bmRlcmxpbmU9MzR9Y2FzZSI8dT4iOmNhc2UiPHUvPiI6UC51bmRlcmxpbmV8fChQLnVuZGVybGluZT0xKTticmVhaztjYXNlIjwvdT4i''@;'; put 'put ''OmJyZWFrO2Nhc2UiPGIiOmlmKCIwIj09ZmUudmFsKWJyZWFrO2Nhc2UiPGI+IjpjYXNlIjxiLz4iOlAuYm9sZD0xO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aWYoIjAiPT1mZS52YWwpYnJlYWs7Y2FzZSI8aT4iOmNhc2UiPGkvPiI6UC5pdGFsaWM9MTticmVhaztjYXNlIjwv''@;'; put 'put ''aT4iOmJyZWFrO2Nhc2UiPGNvbG9yIjpmZS5yZ2ImJihQLmNvbG9yPXtyZ2I6OD09ZmUucmdiLmxlbmd0aD9mZS5yZ2Iuc2xpY2UoMiw4KTooIjAwMDAwMCIrZmUucmdiKS5zbGljZSgtNil9KTticmVhaztjYXNlIjxmYW1pbHkiOlAuZmFtaWx5PWZlLnZhbDticmVhaztjYXNlIjx2ZXJ0QWxp''@;'; put 'put ''Z24iOiJub25lIiE9KGZlLnZhbHx8Im5vbmUiKSYmKFAudmFsaWduPWZlLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8c2NoZW1lIjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOm5lPSEwO2JyZWFrO2Nh''@;'; put 'put ''c2UiPC9leHQ+IjpuZT0hMTticmVhaztkZWZhdWx0OmlmKDQ3IT09ZmVbMF0uY2hhckNvZGVBdCgxKSYmIW5lKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHJpY2ggZm9ybWF0ICIrZmVbMF0pfX1yZXR1cm4gUH0oeWVbMV0pKSx2ZX12YXIgWD0vPCg/Olx3KzopP3I+L2csbmU9Lzxc''@;'; put 'put ''Lyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24oYmUpe3JldHVybiBiZS5yZXBsYWNlKFgsIiIpLnNwbGl0KG5lKS5tYXAoTCkuZmlsdGVyKGZ1bmN0aW9uKHZlKXtyZXR1cm4gdmUudn0pfX0oKSxwTj17MToic2luZ2xlIiwyOiJkb3VibGUiLDMzOiJzaW5nbGUtYWNjb3VudGluZyIsMzQ6''@;'; put 'put ''ImRvdWJsZS1hY2NvdW50aW5nIn0sV2M9ZnVuY3Rpb24oKXt2YXIgUD0vKFxyXG58XG4pL2c7ZnVuY3Rpb24gWChuZSl7dmFyIGZlPVtbXSxuZS52LFtdXTtyZXR1cm4gbmUudj8obmUucyYmZnVuY3Rpb24gTChuZSxmZSxiZSl7dmFyIHZlPVtdO25lLnVuZGVybGluZSYmdmUucHVzaCgidGV4''@;'; put 'put ''dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiksbmUudW5kZXJsaW5lPjEmJnZlLnB1c2goInRleHQtdW5kZXJsaW5lLXN0eWxlOiIrcE5bbmUudW5kZXJsaW5lXSsiOyIpLG5lLnN6JiZ2ZS5wdXNoKCJmb250LXNpemU6IituZS5zeisicHQ7IiksbmUub3V0bGluZSYmdmUucHVzaCgidGV4dC1l''@;'; put 'put ''ZmZlY3Q6IG91dGxpbmU7IiksbmUuc2hhZG93JiZ2ZS5wdXNoKCJ0ZXh0LXNoYWRvdzogYXV0bzsiKSxuZS5jb2xvciYmbmUuY29sb3IucmdiJiZ2ZS5wdXNoKCJjb2xvcjogIyIrbjAobmUuY29sb3IucmdiKSsiOyIpLGZlLnB1c2goJzxzcGFuIHN0eWxlPSInK3ZlLmpvaW4oIiIpKyciPicp''@;'; put 'put ''LG5lLmJvbGQmJihmZS5wdXNoKCI8Yj4iKSxiZS5wdXNoKCI8L2I+IikpLG5lLml0YWxpYyYmKGZlLnB1c2goIjxpPiIpLGJlLnB1c2goIjwvaT4iKSksbmUuc3RyaWtlJiYoZmUucHVzaCgiPHM+IiksYmUucHVzaCgiPC9zPiIpKTt2YXIgeWU9bmUudmFsaWdufHwiIjsic3VwZXJzY3JpcHQi''@;'; put 'put ''PT15ZXx8InN1cGVyIj09eWU/eWU9InN1cCI6InN1YnNjcmlwdCI9PXllJiYoeWU9InN1YiIpLCIiIT15ZSYmKGZlLnB1c2goIjwiK3llKyI+IiksYmUucHVzaCgiPC8iK3llKyI+IikpLGJlLnB1c2goIjwvc3Bhbj4iKX0obmUucyxmZVswXSxmZVsyXSksZmVbMF0uam9pbigiIikrZmVbMV0u''@;'; put 'put ''cmVwbGFjZShQLCI8YnIvPiIpK2ZlWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oZmUpe3JldHVybiBmZS5tYXAoWCkuam9pbigiIil9fSgpO2Z1bmN0aW9uIHBhKHkpe3JldHVybiB5Lm1hcChmdW5jdGlvbihMKXtyZXR1cm4gZnVuY3Rpb24gTHAoeSl7dmFyIFA9IiIsTD1bXTty''@;'; put 'put ''ZXR1cm4geS5zJiYoeS5zLmJvbGQmJkwucHVzaCgiPGIvPiIpLHkucy5pdGFsaWMmJkwucHVzaCgiPGkvPiIpLHkucy5zdHJpa2UmJkwucHVzaCgiPHN0cmlrZS8+IikseS5zLnVuZGVybGluZSYmTC5wdXNoKCc8dSB2YWw9IicrKExnW3kucy51bmRlcmxpbmVdfHwic2luZ2xlIikrJyIvPicp''@;'; put 'put ''LHkucy5jb2xvciYmTC5wdXNoKFQxKHkucy5jb2xvcikpLHkucy5zeiYmTC5wdXNoKCc8c3ogdmFsPSInK3kucy5zeisnIi8+JykseS5zLm5hbWUmJkwucHVzaCgnPHJGb250IHZhbD0iJyt5LnMubmFtZSsnIi8+JyksKCJzdXBlciI9PXkucy52YWxpZ258fCJzdWIiPT15LnMudmFsaWduKSYm''@;'; put 'put ''TC5wdXNoKCc8dmVydEFsaWduIHZhbD0iJyt5LnMudmFsaWduKydzY3JpcHQiLz4nKSksTC5sZW5ndGgmJihQKz0iPHJQcj4iK0wuam9pbigiIikrIjwvclByPiIpLCI8cj4iKyhQKz1fcigidCIsYnIoeS52KSxudWxsKSkrIjwvcj4ifShMKX0pLmpvaW4oIiIpfXZhciBnTj0vPCg/Olx3Kzop''@;'; put 'put ''P3RbXj5dKj4oW148XSopPFwvKD86XHcrOik/dD4vZyxtTj0vPCg/Olx3KzopP3JcYltePl0qPi8sdk49LzwoPzpcdys6KT9yUGguKj8+KFtcc1xTXSo/KTxcLyg/Olx3KzopP3JQaD4vZztmdW5jdGlvbiBKeSh5LFApe3ZhciBMPSFQfHxQLmNlbGxIVE1MLFg9e307cmV0dXJuIHk/KHkubWF0''@;'; put 'put ''Y2goL15ccyo8KD86XHcrOik/dFtePl0qPi8pPyhYLnQ9aHIoWWkoeS5zbGljZSh5LmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8IiIpKSxYLnI9WWkoeSksTCYmKFguaD1YaShYLnQpKSk6eS5tYXRjaChtTikmJihYLnI9WWkoeSksWC50PWhyKFlpKCh5LnJl''@;'; put 'put ''cGxhY2Uodk4sIiIpLm1hdGNoKGdOKXx8W10pLmpvaW4oIiIpLnJlcGxhY2UoWHQsIiIpKSksWC5SPUVnKFguciksTCYmKFguaD1XYyhYLlIpKSksWCk6e3Q6IiJ9fXZhciBPVD0vPCg/Olx3KzopP3NzdChbXj5dKik+KFtcc1xTXSopPFwvKD86XHcrOik/c3N0Pi8sUFQ9LzwoPzpcdys6KT8o''@;'; put 'put ''PzpzaXxzc3RJdGVtKT4vZyxLNT0vPFwvKD86XHcrOik/KD86c2l8c3N0SXRlbSk+LztTby5TU1Q9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc2hhcmVkU3RyaW5ncyI7dmFyIF9OPS9eXHN8XHMkfFtcdFxuXHJd''@;'; put 'put ''LztmdW5jdGlvbiBUOSh5LFApe2lmKCFQLmJvb2tTU1QpcmV0dXJuIiI7dmFyIEw9W1BuXTtMW0wubGVuZ3RoXT1fcigic3N0IixudWxsLHt4bWxuczpraS5tYWluWzBdLGNvdW50OnkuQ291bnQsdW5pcXVlQ291bnQ6eS5VbmlxdWV9KTtmb3IodmFyIFg9MDtYIT15Lmxlbmd0aDsrK1gpaWYo''@;'; put 'put ''bnVsbCE9eVtYXSl7dmFyIG5lPXlbWF0sZmU9IjxzaT4iO25lLnI/ZmUrPW5lLnI6KGZlKz0iPHQiLG5lLnR8fChuZS50PSIiKSxuZS50Lm1hdGNoKF9OKSYmKGZlKz0nIHhtbDpzcGFjZT0icHJlc2VydmUiJyksZmUrPSI+IiticihuZS50KSsiPC90PiIpLExbTC5sZW5ndGhdPWZlKz0iPC9z''@;'; put 'put ''aT4ifXJldHVybiBMLmxlbmd0aD4yJiYoTFtMLmxlbmd0aF09Ijwvc3N0PiIsTFsxXT1MWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxMLmpvaW4oIiIpfXZhciBGVD1mdW5jdGlvbiBGZih5LFAsTCl7dmFyIFg9MTMrNCp5LnQubGVuZ3RoLG5lPXkuUiYmeS5SLmxlbmd0aHx8eS5yO3kuciYmKHku''@;'; put 'put ''Uj1FZyh5LnIpKSxuZSYmKFgrPTQrNCp5LlIubGVuZ3RoKTt2YXIgZmU9ITE7aWYobnVsbD09TCYmKGZlPSEwLEw9eHIoWCkpLEwud3JpdGVfc2hpZnQoMSxuZT8xOjApLEtsKHkudCxMKSxuZSl7TC53cml0ZV9zaGlmdCg0LHkuUi5sZW5ndGgpO2Zvcih2YXIgYmU9MCx2ZT0wO3ZlPHkuUi5s''@;'; put 'put ''ZW5ndGg7Kyt2ZSl7dmFyIHllPXkuUlt2ZV07TC53cml0ZV9zaGlmdCgyLGJlKSxiZSs9KHllLnZ8fCIiKS5sZW5ndGg7dmFyIFZlPXllLnM/bXUoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczp5ZS5zfSxQKTowO0wud3JpdGVfc2hpZnQoMixQLmNlbGxYZnNbVmVdLmZv''@;'; put 'put ''bnRJZCl9fXJldHVybiBmZT9MLnNsaWNlKDAsTC5sKTpMfTtmdW5jdGlvbiBOVCh5LFApe3ZhciBMPWN1KCk7aGkoTCwiQnJ0QmVnaW5Tc3QiLGZ1bmN0aW9uIFF5KHksUCl7cmV0dXJuIFB8fChQPXhyKDgpKSxQLndyaXRlX3NoaWZ0KDQseS5Db3VudCksUC53cml0ZV9zaGlmdCg0LHkuVW5p''@;'; put 'put ''cXVlKSxQfSh5KSk7Zm9yKHZhciBYPTA7WDx5Lmxlbmd0aDsrK1gpaGkoTCwiQnJ0U1NUSXRlbSIsRlQoeVtYXSxQKSk7cmV0dXJuIGhpKEwsIkJydEVuZFNzdCIpLEwuZW5kKCl9ZnVuY3Rpb24gT3AoeSl7aWYodHlwZW9mIGNwdGFibGU8InUiKXJldHVybiBjcHRhYmxlLnV0aWxzLmVuY29k''@;'; put 'put ''ZShJLHkpO2Zvcih2YXIgUD1bXSxMPXkuc3BsaXQoIiIpLFg9MDtYPEwubGVuZ3RoOysrWClQW1hdPUxbWF0uY2hhckNvZGVBdCgwKTtyZXR1cm4gUH1mdW5jdGlvbiBxMCh5LFApe3ZhciBMPXt9O3JldHVybiBMLk1ham9yPXkucmVhZF9zaGlmdCgyKSxMLk1pbm9yPXkucmVhZF9zaGlmdCgy''@;'; put 'put ''KSxQPj00JiYoeS5sKz1QLTQpLEx9ZnVuY3Rpb24gZXcoeSl7Zm9yKHZhciBQPXkucmVhZF9zaGlmdCg0KSxMPXkubCtQLTQsWD17fSxuZT15LnJlYWRfc2hpZnQoNCksZmU9W107bmUtLSA+MDspZmUucHVzaCh7dDp5LnJlYWRfc2hpZnQoNCksdjp5LnJlYWRfc2hpZnQoMCwibHBwNCIpfSk7''@;'; put 'put ''aWYoWC5uYW1lPXkucmVhZF9zaGlmdCgwLCJscHA0IiksWC5jb21wcz1mZSx5LmwhPUwpdGhyb3cgbmV3IEVycm9yKCJCYWQgRGF0YVNwYWNlTWFwRW50cnk6ICIreS5sKyIgIT0gIitMKTtyZXR1cm4gWH1mdW5jdGlvbiBNTih5LFApe3ZhciBMPXkubCtQLFg9e307WC5GbGFncz02MyZ5LnJl''@;'; put 'put ''YWRfc2hpZnQoNCkseS5sKz00LFguQWxnSUQ9eS5yZWFkX3NoaWZ0KDQpO3ZhciBuZT0hMTtzd2l0Y2goWC5BbGdJRCl7Y2FzZSAyNjEyNjpjYXNlIDI2MTI3OmNhc2UgMjYxMjg6bmU9MzY9PVguRmxhZ3M7YnJlYWs7Y2FzZSAyNjYyNTpuZT00PT0oNTImWC5GbGFncyk7YnJlYWs7Y2FzZSAw''@;'; put 'put ''Om5lPTE2PT1YLkZsYWdzfHw0PT1YLkZsYWdzfHwzNj09WC5GbGFnczticmVhaztkZWZhdWx0OnRocm93IlVucmVjb2duaXplZCBlbmNyeXB0aW9uIGFsZ29yaXRobTogIitYLkFsZ0lEfWlmKCFuZSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gRmxhZ3MvQWxnSUQgbWlzbWF0Y2giKTty''@;'; put 'put ''ZXR1cm4gWC5BbGdJREhhc2g9eS5yZWFkX3NoaWZ0KDQpLFguS2V5U2l6ZT15LnJlYWRfc2hpZnQoNCksWC5Qcm92aWRlclR5cGU9eS5yZWFkX3NoaWZ0KDQpLHkubCs9OCxYLkNTUE5hbWU9eS5yZWFkX3NoaWZ0KEwteS5sPj4xLCJ1dGYxNmxlIikseS5sPUwsWH1mdW5jdGlvbiBEOSh5LFAp''@;'; put 'put ''e3ZhciBMPXt9LFg9eS5sK1A7cmV0dXJuIHkubCs9NCxMLlNhbHQ9eS5zbGljZSh5LmwseS5sKzE2KSx5LmwrPTE2LEwuVmVyaWZpZXI9eS5zbGljZSh5LmwseS5sKzE2KSx5LmwrPTE2LHkucmVhZF9zaGlmdCg0KSxMLlZlcmlmaWVySGFzaD15LnNsaWNlKHkubCxYKSx5Lmw9WCxMfWZ1bmN0''@;'; put 'put ''aW9uIHhOKHkpe2lmKDM2IT0oNjMmeS5yZWFkX3NoaWZ0KDQpKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb25JbmZvIG1pc21hdGNoIik7dmFyIEw9eS5yZWFkX3NoaWZ0KDQpO3JldHVybnt0OiJTdGQiLGg6TU4oeSxMKSx2OkQ5KHkseS5sZW5ndGgteS5sKX19ZnVuY3Rpb24gSjUoKXt0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkOiBFQ01BLTM3NiBFeHRlbnNpYmxlIil9ZnVuY3Rpb24gdHcoeSl7dmFyIFA9WyJzYWx0U2l6ZSIsImJsb2NrU2l6ZSIsImtleUJpdHMiLCJoYXNoU2l6ZSIsImNpcGhlckFsZ29yaXRobSIsImNpcGhlckNoYWluaW5n''@;'; put 'put ''IiwiaGFzaEFsZ29yaXRobSIsInNhbHRWYWx1ZSJdO3kubCs9NDt2YXIgTD15LnJlYWRfc2hpZnQoeS5sZW5ndGgteS5sLCJ1dGY4IiksWD17fTtyZXR1cm4gTC5yZXBsYWNlKFh0LGZ1bmN0aW9uKGZlKXt2YXIgYmU9YW4oZmUpO3N3aXRjaCh0bihiZVswXSkpe2Nhc2UiPD94bWwiOmNhc2Ui''@;'; put 'put ''PGVuY3J5cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6Y2FzZSI8L2tleUVuY3J5cHRvcnM+IjpjYXNlIjwva2V5RW5jcnlwdG9yPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6UC5mb3JFYWNoKGZ1bmN0aW9uKHZlKXtYW3ZlXT1iZVt2ZV19KTticmVhaztjYXNlIjxkYXRhSW50ZWdyaXR5IjpY''@;'; put 'put ''LmVuY3J5cHRlZEhtYWNLZXk9YmUuZW5jcnlwdGVkSG1hY0tleSxYLmVuY3J5cHRlZEhtYWNWYWx1ZT1iZS5lbmNyeXB0ZWRIbWFjVmFsdWU7YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9ycz4iOmNhc2UiPGtleUVuY3J5cHRvcnMiOlguZW5jcz1bXTticmVhaztjYXNlIjxrZXlFbmNyeXB0b3Ii''@;'; put 'put ''OlgudXJpPWJlLnVyaTticmVhaztjYXNlIjxlbmNyeXB0ZWRLZXkiOlguZW5jcy5wdXNoKGJlKTticmVhaztkZWZhdWx0OnRocm93IGJlWzBdfX0pLFh9ZnVuY3Rpb24gUjkoeSl7dmFyIEwsZmUsUD0wLFg9T3AoeSksbmU9WC5sZW5ndGgrMTtmb3IoKEw9VyhuZSkpWzBdPVgubGVuZ3RoLGZl''@;'; put 'put ''PTE7ZmUhPW5lOysrZmUpTFtmZV09WFtmZS0xXTtmb3IoZmU9bmUtMTtmZT49MDstLWZlKVA9KCgxNjM4NCZQPzE6MCl8UDw8MSYzMjc2NyleTFtmZV07cmV0dXJuIDUyODExXlB9dmFyIG53PWZ1bmN0aW9uKCl7dmFyIHk9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwxMjgsMCwxOTAs''@;'; put 'put ''MTUsMCwxOTEsMTUsMF0sUD1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10sTD1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3NjEsMzE1ODUsNjMxNzAsNjQ5''@;'; put 'put ''MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4NDg1LDU2OTcwLDQ0MzQxLDE5''@;'; put 'put ''MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwxNzgyNCwzNTY0OCwxNjk3LDMz''@;'; put 'put ''OTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2MjEwLDUyNDIwLDM1MjQxLDg4''@;'; put 'put ''MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0sbmU9ZnVuY3Rpb24oYmUsdmUpe3JldHVybiBmdW5jdGlvbihiZSl7cmV0dXJuIDI1NSYoYmU+PjF8YmU8PDcpfShiZV52ZSl9O3JldHVybiBmdW5jdGlvbih2ZSl7Zm9yKHZhciB5ZT1PcCh2ZSksVmU9''@;'; put 'put ''ZnVuY3Rpb24oYmUpe2Zvcih2YXIgdmU9UFtiZS5sZW5ndGgtMV0seWU9MTA0LFZlPWJlLmxlbmd0aC0xO1ZlPj0wOy0tVmUpZm9yKHZhciB6ZT1iZVtWZV0sV2U9MDs3IT1XZTsrK1dlKTY0JnplJiYodmVePUxbeWVdKSx6ZSo9MiwtLXllO3JldHVybiB2ZX0oeWUpLHplPXllLmxlbmd0aCxX''@;'; put 'put ''ZT1XKDE2KSxydD0wOzE2IT1ydDsrK3J0KVdlW3J0XT0wO3ZhciBhdDtmb3IoISgxJn56ZSkmJihXZVt6ZV09bmUoeVswXSxWZT4+OCksV2VbLS16ZV09bmUoeWVbeWUubGVuZ3RoLTFdLDI1NSZWZSkpO3plPjA7KVdlWy0temVdPW5lKHllW3plXSxWZT4+OCksV2VbLS16ZV09bmUoeWVbemVd''@;'; put 'put ''LDI1NSZWZSk7Zm9yKHplPTE1LGF0PTE1LXllLmxlbmd0aDthdD4wOylXZVt6ZV09bmUoeVthdF0sVmU+PjgpLC0tYXQsV2VbLS16ZV09bmUoeWVbemVdLDI1NSZWZSksLS16ZSwtLWF0O3JldHVybiBXZX19KCk7dmFyIE85PWZ1bmN0aW9uKCl7ZnVuY3Rpb24geShuZSxmZSl7c3dpdGNoKGZl''@;'; put 'put ''LnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gUChpZS5kZWNvZGUobmUpLGZlKTtjYXNlImJpbmFyeSI6cmV0dXJuIFAobmUsZmUpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gUChuZS50b1N0cmluZygiYmluYXJ5IiksZmUpO2Nhc2UiYXJyYXkiOnJldHVybiBQKE90KG5lKSxmZSl9dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2ZlLnR5cGUpfWZ1bmN0aW9uIFAobmUsZmUpe3ZhciB2ZT0oZmV8fHt9KS5kZW5zZT9bXTp7fTtpZighbmUubWF0Y2goL1xcdHJvd2QvKSl0aHJvdyBuZXcgRXJyb3IoIlJURiBtaXNzaW5nIHRhYmxlIik7cmV0dXJuIHZlWyIhcmVmIl09RGko''@;'; put 'put ''e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSksdmV9cmV0dXJue3RvX3dvcmtib29rOmZ1bmN0aW9uIEwobmUsZmUpe3JldHVybiByZCh5KG5lLGZlKSxmZSl9LHRvX3NoZWV0OnksZnJvbV9zaGVldDpmdW5jdGlvbiBYKG5lKXtmb3IodmFyIHZlLGZlPVsie1xccnRmMVxcYW5zaSJdLGJlPVJv''@;'; put 'put ''KG5lWyIhcmVmIl0pLHllPUFycmF5LmlzQXJyYXkobmUpLFZlPWJlLnMucjtWZTw9YmUuZS5yOysrVmUpe2ZlLnB1c2goIlxcdHJvd2RcXHRyYXV0b2ZpdDEiKTtmb3IodmFyIHplPWJlLnMuYzt6ZTw9YmUuZS5jOysremUpZmUucHVzaCgiXFxjZWxseCIrKHplKzEpKTtmb3IoZmUucHVzaCgi''@;'; put 'put ''XFxwYXJkXFxpbnRibCIpLHplPWJlLnMuYzt6ZTw9YmUuZS5jOysremUpe3ZhciBXZT1BaSh7cjpWZSxjOnplfSk7KHZlPXllPyhuZVtWZV18fFtdKVt6ZV06bmVbV2VdKSYmKG51bGwhPXZlLnZ8fHZlLmYmJiF2ZS5GKSYmKGZlLnB1c2goIiAiKyh2ZS53fHwoSWEodmUpLHZlLncpKSksZmUu''@;'; put 'put ''cHVzaCgiXFxjZWxsIikpfWZlLnB1c2goIlxccGFyZFxcaW50YmxcXHJvdyIpfXJldHVybiBmZS5qb2luKCIiKSsifSJ9fX0oKTtmdW5jdGlvbiBUZyh5KXt2YXIgUD15LnNsaWNlKCIjIj09PXlbMF0/MTowKS5zbGljZSgwLDYpO3JldHVybltwYXJzZUludChQLnNsaWNlKDAsMiksMTYpLHBh''@;'; put 'put ''cnNlSW50KFAuc2xpY2UoMiw0KSwxNikscGFyc2VJbnQoUC5zbGljZSg0LDYpLDE2KV19ZnVuY3Rpb24gTTEoeSl7Zm9yKHZhciBQPTAsTD0xOzMhPVA7KytQKUw9MjU2KkwrKHlbUF0+MjU1PzI1NTp5W1BdPDA/MDp5W1BdKTtyZXR1cm4gTC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5z''@;'; put 'put ''bGljZSgxKX1mdW5jdGlvbiBsZCh5LFApe2lmKG51bGw9PXkpcmV0dXJuIG51bGwhPVA7aWYobnVsbD09UClyZXR1cm4hMDtpZigxPT15LmF1dG8mJjE9PVAuYXV0bylyZXR1cm4hMTtpZighIXkuYXV0byE9ISFQLmF1dG98fG51bGw9PXkudGhlbWUhPShudWxsPT1QLnRoZW1lKSlyZXR1cm4h''@;'; put 'put ''MDtpZihudWxsIT15LnRoZW1lKXJldHVybiB5LnRoZW1lIT1QLnRoZW1lfHx5LnRpbnQhPVAudGludDtpZihudWxsPT15LnJnYiYmbnVsbD09UC5yZ2IpcmV0dXJuITE7dmFyIEw9eS5yZ2I7Im51bWJlciI9PXR5cGVvZiBMJiYoTD1MLnRvU3RyaW5nKDE2KSksTD1MLnNsaWNlKC02KTt2YXIg''@;'; put 'put ''WD1QLnJnYjtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIFgmJihYPVgudG9TdHJpbmcoMTYpKSxYPVguc2xpY2UoLTYpLEwudG9Mb3dlckNhc2UoKSE9WC50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFZUKHksUCl7cmV0dXJuIG51bGw9PXk/bnVsbCE9UDpudWxsPT1QP251bGwhPXk6eS5zdHlsZSE9''@;'; put 'put ''UC5zdHlsZXx8bGQoeS5jb2xvcixQLmNvbG9yKX1mdW5jdGlvbiBrZyh5LFApe2lmKDA9PT1QKXJldHVybiB5O3ZhciBMPWZ1bmN0aW9uIGtOKHkpe3ZhciBQPXlbMF0vMjU1LEw9eVsxXS8yNTUsWD15WzJdLzI1NSxuZT1NYXRoLm1heChQLEwsWCksZmU9TWF0aC5taW4oUCxMLFgpLGJlPW5l''@;'; put 'put ''LWZlO2lmKDA9PT1iZSlyZXR1cm5bMCwwLFBdO3ZhciB5ZSx2ZT0wLFZlPW5lK2ZlO3N3aXRjaCh5ZT1iZS8oVmU+MT8yLVZlOlZlKSxuZSl7Y2FzZSBQOnZlPSgoTC1YKS9iZSs2KSU2O2JyZWFrO2Nhc2UgTDp2ZT0oWC1QKS9iZSsyO2JyZWFrO2Nhc2UgWDp2ZT0oUC1MKS9iZSs0fXJldHVy''@;'; put 'put ''blt2ZS82LHllLFZlLzJdfShUZyh5KSk7cmV0dXJuIExbMl09UDwwP0xbMl0qKDErUCk6MS0oMS1MWzJdKSooMS1QKSxNMShmdW5jdGlvbiBIVCh5KXt2YXIgeWUsTD15WzFdLFg9eVsyXSxuZT0yKkwqKFg8LjU/WDoxLVgpLGZlPVgtbmUvMixiZT1bZmUsZmUsZmVdLHZlPTYqeVswXTtpZigw''@;'; put 'put ''IT09TClzd2l0Y2goMHx2ZSl7Y2FzZSAwOmNhc2UgNjp5ZT1uZSp2ZSxiZVswXSs9bmUsYmVbMV0rPXllO2JyZWFrO2Nhc2UgMTpiZVswXSs9eWU9bmUqKDItdmUpLGJlWzFdKz1uZTticmVhaztjYXNlIDI6eWU9bmUqKHZlLTIpLGJlWzFdKz1uZSxiZVsyXSs9eWU7YnJlYWs7Y2FzZSAzOmJl''@;'; put 'put ''WzFdKz15ZT1uZSooNC12ZSksYmVbMl0rPW5lO2JyZWFrO2Nhc2UgNDp5ZT1uZSoodmUtNCksYmVbMl0rPW5lLGJlWzBdKz15ZTticmVhaztjYXNlIDU6YmVbMl0rPXllPW5lKig2LXZlKSxiZVswXSs9bmV9Zm9yKHZhciBWZT0wOzMhPVZlOysrVmUpYmVbVmVdPU1hdGgucm91bmQoMjU1KmJl''@;'; put 'put ''W1ZlXSk7cmV0dXJuIGJlfShMKSl9dmFyIEJUPTYsVmw9QlQ7ZnVuY3Rpb24gQWcoeSl7cmV0dXJuIE1hdGguZmxvb3IoKHkrTWF0aC5yb3VuZCgxMjgvVmwpLzI1NikqVmwpfWZ1bmN0aW9uIERnKHkpe3JldHVybiBNYXRoLmZsb29yKCh5LTUpL1ZsKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIGsy''@;'; put 'put ''KHkpe3JldHVybiBNYXRoLnJvdW5kKCh5KlZsKzUpL1ZsKjI1NikvMjU2fWZ1bmN0aW9uIF8wKHkpe3kuYmVzdEZpdCYmZGVsZXRlIHkuYmVzdEZpdCx5LndpZHRoPyh5LndweD1BZyh5LndpZHRoKSx5LndjaD1EZyh5LndweCkseS5NRFc9VmwpOnkud3B4Pyh5LndjaD1EZyh5LndweCkseS53''@;'; put 'put ''aWR0aD1rMih5LndjaCkseS5NRFc9VmwpOiJudW1iZXIiPT10eXBlb2YgeS53Y2gmJih5LndpZHRoPWsyKHkud2NoKSx5LndweD1BZyh5LndpZHRoKSx5Lk1EVz1WbCkseS5jdXN0b21XaWR0aCYmZGVsZXRlIHkuY3VzdG9tV2lkdGh9dmFyIExhPTk2LEEyPUxhO2Z1bmN0aW9uICRmKHkpe3Jl''@;'; put 'put ''dHVybiA3Mip5L0EyfWZ1bmN0aW9uIGNkKHkpe3JldHVybiB5KkEyLzcyfWZ1bmN0aW9uIEQyKHkpe0EyPXk9e29zeDo3Mix3aW46OTYsd2luMTAwOjk2LHdpbjEyNToxMjAsd2luMTUwOjE0NH1beV18fHl8fExhLHN3PVJnW3ldfWZ1bmN0aW9uIEY5KHkpe3kuaHB4P3kuaHB0PSRmKHkuaHB4''@;'; put 'put ''KTp5LmhwdCYmKHkuaHB4PWNkKHkuaHB0KSl9dmFyIGl3PXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVy''@;'; put 'put ''dGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRp''@;'; put 'put ''Y2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn0sb3c9d2UoaXcpLFE1PXtvcmFuZ2U6MTY3NTM5MjAsYmxhY2s6MCxuYXZ5OjEyOCxibHVlOjI1NSxncmVlbjozMjc2OCx0ZWFsOjMyODk2LGxpbWU6NjUyODAsYXF1YTo2NTUz''@;'; put 'put ''NSxzaWx2ZXI6MTI2MzIyNTYsbWFyb29uOjgzODg2MDgscHVycGxlOjgzODg3MzYsb2xpdmU6ODQyMTM3NixncmF5Ojg0MjE1MDQscmVkOjE2NzExNjgwLGZ1Y2hzaWE6MTY3MTE5MzUseWVsbG93OjE2Nzc2OTYwLHdoaXRlOjE2Nzc3MjE1fTtmdW5jdGlvbiBJZyh5LFApe2lmKHkucmVwbGFj''@;'; put 'put ''ZSgiIyIsIiIpLm1hdGNoKC9eWzAtOWEtZkEtRl17Nn0kLykpcmV0dXJuIHBhcnNlSW50KHkucmVwbGFjZSgiIyIsIiIpLDE2KTtpZihRNVt5XSlyZXR1cm4gUTVbeV07dmFyIEw9eS5tYXRjaCgvcmdiXChccyooXGQqKVxzKixccyooXGQqKVxzKixccyooXGQqKVxzKlwpLyk7aWYoTClyZXR1''@;'; put 'put ''cm4oK0xbMV08PDE2KSsoK0xbMl08PDgpKyArTFszXTtpZihMPXkubWF0Y2goL3JnYmFcKFxzKihcZCopXHMqLFxzKihcZCopXHMqLFxzKihcZCopXHMqKFxkKikvKSlyZXR1cm4gMCE9KExbNF0mJkxbNF0ubGVuZ3RoPjAmJitMWzRdfHwwKXx8K0xbMV0+MHx8K0xbMl0+MHx8K0xbM10+MD8o''@;'; put 'put ''K0xbMV08PDE2KSsoK0xbMl08PDgpKyArTFszXTpQPy0xOjE2Nzc3MjE1O3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBIVE1MIGNvbG9yICIreSl9dmFyIFJnPXt9O2Z1bmN0aW9uIE45KHkpe3k9eXx8OTY7dmFyIFA9e0NhbGlicmk6W10sQXJpYWw6W10sIlNwYXJrYXNzZSBSZyI6W10sXHU1''@;'; put 'put ''YjhiXHU0ZjUzOltdLFx1NmUzOFx1MzBiNFx1MzBiN1x1MzBjM1x1MzBhZjpbXSwiQ2VudHVyeSBHb3RoaWMiOltdfTtyZXR1cm4gUC5DYWxpYnJpWzExXT03LFAuQ2FsaWJyaVsxMl09ezcyOjYsOTY6OCwxMjA6MTAsMTQ0OjEyfVt5XXx8OCxQLkNhbGlicmlbMTNdPTEwLFAuQ2FsaWJyaVsx''@;'; put 'put ''NF09MTEsUC5DYWxpYnJpWzE2XT0xMixQLkNhbGlicmlbMThdPTE0LFAuQ2FsaWJyaVsyMF09MTYsUC5cdTViOGJcdTRmNTNbMTFdPTgsUC5cdTZlMzhcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWZbMTFdPTgsUFsiU3Bhcmthc3NlIFJnIl1bMTFdPTcsUC5BcmlhbFsxMF09NyxQWyJDZW50dXJ5''@;'; put 'put ''IEdvdGhpYyJdWzEyXT05LFB9UmdbNzJdPU45KDcyKSxSZ1s5Nl09TjkoOTYpLFJnWzEyMF09TjkoMTIwKSxSZ1sxNDRdPU45KDE0NCk7dmFyIHN3PVJnWzk2XTtmdW5jdGlvbiBhdyh5KXtyZXR1cm4oc3dbeS5uYW1lfHx5LkZvbnROYW1lXXx8W10pW3kuc3p8fHkuU2l6ZV19ZnVuY3Rpb24g''@;'; put 'put ''RnAoeSl7aWYoeSl7dmFyIFA9YXcoeSk7aWYoUClyZXR1cm4gVmw9UH1yZXR1cm4gVmw9Nn1mdW5jdGlvbiBsdyh5LFAsTCl7cmV0dXJuIE0xKGZ1bmN0aW9uIGpUKHksUCxMKXtyZXR1cm5bTWF0aC5yb3VuZChQWzBdKkwreVswXSooMS1MKSksTWF0aC5yb3VuZChQWzFdKkwreVsxXSooMS1M''@;'; put 'put ''KSksTWF0aC5yb3VuZChQWzJdKkwreVsyXSooMS1MKSldfShUZygibnVtYmVyIj09dHlwZW9mIHkucmdiPygiMDAwMDAiK3kudG9TdHJpbmcoMTYpKS5zbGljZSgtNik6eS5yZ2IpLFRnKCJudW1iZXIiPT10eXBlb2YgUC5yZ2I/KCIwMDAwMCIrUC50b1N0cmluZygxNikpLnNsaWNlKC02KTpQ''@;'; put 'put ''LnJnYiksTCkpfWZ1bmN0aW9uIEg5KHksUCxMKXtpZihMKXN3aXRjaCgreSl7Y2FzZSA2NDp5PTY1O2JyZWFrO2Nhc2UgNjU6eT02NH12YXIgWD1QJiZQWyt5XXx8aHVbK3ldfHx4eVsreS0yMDBdO2lmKDgxPT0reSYmKFg9aHVbMV0pLFh8fChYPWh1WzFdKSwhWCl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''ImJhZCBJQ1YgaW5kZXggIit5KTtyZXR1cm4gTTEoWCl9ZnVuY3Rpb24gelQoeSxQLEwpe3ZhciBYPXt9O3JldHVybiBudWxsIT15LmluZGV4ZWQmJihYLmluZGV4PXBhcnNlSW50KHkuaW5kZXhlZCwxMCksWC5yZ2I9SDkoWC5pbmRleCxQLkluZGV4ZWQpKSxudWxsIT15LnRoZW1lJiYoWC50''@;'; put 'put ''aGVtZT1wYXJzZUludCh5LnRoZW1lLDEwKSksbnVsbCE9eS50aW50JiYoWC50aW50PXBhcnNlRmxvYXQoeS50aW50KSksbnVsbCE9eS5yZ2ImJihYLnJnYj15LnJnYi5zbGljZSgtNikpLG51bGwhPVgudGhlbWUmJiFYLnJnYiYmTC50aGVtZUVsZW1lbnRzJiYoWC5yZ2I9a2coTC50aGVtZUVs''@;'; put 'put ''ZW1lbnRzLmNsclNjaGVtZVtYLnRoZW1lXS5yZ2IsWC50aW50fHwwKSxYLnJhd19yZ2I9TC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtYLnRoZW1lXS5yZ2IpLFh9ZnVuY3Rpb24gY3coeSxQLEwsWCl7UC5Cb3JkZXJzPVtdO3ZhciBuZT17fSxmZT17fSxiZT0hMTsoeVswXS5tYXRjaChYdCl8''@;'; put 'put ''fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHZlKXt2YXIgeWU9YW4odmUpO3N3aXRjaCh0bih5ZVswXSkpe2Nhc2UiPGJvcmRlcnMiOmNhc2UiPGJvcmRlcnM+IjpjYXNlIjwvYm9yZGVycz4iOmNhc2UiPC9ib3JkZXI+IjpjYXNlIjxsZWZ0Lz4iOmNhc2UiPC9sZWZ0PiI6Y2FzZSI8cmlnaHQvPiI6''@;'; put 'put ''Y2FzZSI8L3JpZ2h0PiI6Y2FzZSI8dG9wLz4iOmNhc2UiPC90b3A+IjpjYXNlIjxib3R0b20vPiI6Y2FzZSI8L2JvdHRvbT4iOmNhc2UiPGRpYWdvbmFsIjpjYXNlIjxkaWFnb25hbD4iOmNhc2UiPGRpYWdvbmFsLz4iOmNhc2UiPGhvcml6b250YWwiOmNhc2UiPGhvcml6b250YWw+IjpjYXNl''@;'; put 'put ''Ijxob3Jpem9udGFsLz4iOmNhc2UiPHZlcnRpY2FsIjpjYXNlIjx2ZXJ0aWNhbD4iOmNhc2UiPHZlcnRpY2FsLz4iOmNhc2UiPHN0YXJ0IjpjYXNlIjxzdGFydD4iOmNhc2UiPHN0YXJ0Lz4iOmNhc2UiPC9zdGFydD4iOmNhc2UiPGVuZCI6Y2FzZSI8ZW5kPiI6Y2FzZSI8ZW5kLz4iOmNhc2Ui''@;'; put 'put ''PC9lbmQ+IjpjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxib3JkZXIiOmNhc2UiPGJvcmRlcj4iOmNhc2UiPGJvcmRlci8+IjpuZT17fSx5ZS5kaWFnb25hbFVwJiYobmUuZGlhZ29u''@;'; put 'put ''YWxVcD1Scih5ZS5kaWFnb25hbFVwKSkseWUuZGlhZ29uYWxEb3duJiYobmUuZGlhZ29uYWxEb3duPVJyKHllLmRpYWdvbmFsRG93bikpLFAuQm9yZGVycy5wdXNoKG5lKTticmVhaztjYXNlIjxsZWZ0IjpjYXNlIjxsZWZ0PiI6ZmU9bmUubGVmdD17fSx5ZS5zdHlsZSYmKGZlLnN0eWxlPXll''@;'; put 'put ''LnN0eWxlKTticmVhaztjYXNlIjxyaWdodCI6Y2FzZSI8cmlnaHQ+IjpmZT1uZS5yaWdodD17fSx5ZS5zdHlsZSYmKGZlLnN0eWxlPXllLnN0eWxlKTticmVhaztjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOmZlPW5lLnRvcD17fSx5ZS5zdHlsZSYmKGZlLnN0eWxlPXllLnN0eWxlKTticmVhaztj''@;'; put 'put ''YXNlIjxib3R0b20iOmNhc2UiPGJvdHRvbT4iOmZlPW5lLmJvdHRvbT17fSx5ZS5zdHlsZSYmKGZlLnN0eWxlPXllLnN0eWxlKTticmVhaztjYXNlIjwvZGlhZ29uYWw+IjpuZS5kaWFnb25hbD1mZSxmZT17fTticmVhaztjYXNlIjwvaG9yaXpvbnRhbD4iOm5lLmhvcml6b250YWw9ZmUsZmU9''@;'; put 'put ''e307YnJlYWs7Y2FzZSI8L3ZlcnRpY2FsPiI6bmUudmVydGljYWw9ZmUsZmU9e307YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6ZmUuY29sb3J8fChmZS5jb2xvcj17fSkseWUuYXV0byYmKGZlLmNvbG9yLmF1dG89UnIoeWUuYXV0bykpLG51bGwhPXllLnJnYj9mZS5jb2xvci5y''@;'; put 'put ''Z2I9eWUucmdiLnNsaWNlKC02KTp5ZS5pbmRleGVkPyhmZS5jb2xvci5pbmRleD1wYXJzZUludCh5ZS5pbmRleGVkLDEwKSxmZS5jb2xvci5yZ2I9SDkoZmUuY29sb3IuaW5kZXgsUC5JbmRleGVkLCExKSk6eWUudGhlbWUmJihmZS5jb2xvci50aGVtZT1wYXJzZUludCh5ZS50aGVtZSwxMCks''@;'; put 'put ''eWUudGludCYmKGZlLmNvbG9yLnRpbnQ9cGFyc2VGbG9hdCh5ZS50aW50KSkseWUudGhlbWUmJkwudGhlbWVFbGVtZW50cyYmTC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKGZlLmNvbG9yLnJnYj1rZyhMLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW2ZlLmNvbG9yLnRoZW1lXS5yZ2IsZmUu''@;'; put 'put ''Y29sb3IudGludHx8MCkpKSwheWUuYXV0byYmbnVsbD09eWUucmdiJiYheWUuaW5kZXhlZCYmZGVsZXRlIGZlLmNvbG9yO2JyZWFrO2Nhc2UiPGV4dCI6YmU9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmJlPSExO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYmJiFiZSl0aHJvdyBuZXcgRXJyb3Io''@;'; put 'put ''InVucmVjb2duaXplZCAiK3llWzBdKyIgaW4gYm9yZGVycyIpfX0pfWZ1bmN0aW9uIE5wKHksUCl7dmFyIEw9WyI8IitQXTtyZXR1cm4geSYmeS5zdHlsZT8oTC5wdXNoKCcgc3R5bGU9IicreS5zdHlsZSsnIicpLHkuY29sb3I/KEwucHVzaCgiPiIpLEwucHVzaChUMSh5LmNvbG9yLCEwKSks''@;'; put 'put ''TC5qb2luKCIiKSsiPC8iK1ArIj4iKTpMLmpvaW4oIiIpKyIvPiIpOkxbMF0rIi8+In1mdW5jdGlvbiBBTih5LFAsTCxYKXtQLkZpbGxzPVtdO3ZhciBuZT17fSxmZT17fSxiZT0hMSx2ZT0hMTsoeVswXS5tYXRjaChYdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHllKXt2YXIgVmU9YW4oeWUp''@;'; put 'put ''O3N3aXRjaCh0bihWZVswXSkpe2Nhc2UiPGZpbGxzIjpjYXNlIjxmaWxscz4iOmNhc2UiPC9maWxscz4iOmNhc2UiPC9maWxsPiI6Y2FzZSI8L2dyYWRpZW50RmlsbD4iOmNhc2UiPGJnQ29sb3IvPiI6Y2FzZSI8L2JnQ29sb3I+IjpjYXNlIjxmZ0NvbG9yLz4iOmNhc2UiPC9mZ0NvbG9yPiI6''@;'; put 'put ''Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6Y2FzZSI8c3RvcC8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxmaWxsPiI6Y2FzZSI8ZmlsbCI6Y2FzZSI8ZmlsbC8+IjpQLkZpbGxzLnB1c2gobmU9e30pO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGdyYWRpZW50RmlsbD4iOm5lLnN0b3BzPVtdO2JyZWFrO2Nhc2UiPGdyYWRpZW50RmlsbCI6bmUuc3RvcHM9W10sVmUuZGVncmVlJiYobmUuYW5nbGU9K1ZlLmRlZ3JlZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6VmUucGF0dGVyblR5cGUmJihuZS5w''@;'; put 'put ''YXR0ZXJuVHlwZT1WZS5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6aWYoYmUpdGhyb3cgbmV3IEVycm9yKCJiYWQgc3RvcCIpO2JyZWFrO2Nhc2UiPGNvbG9yIjpjYXNlIjxiZ0NvbG9yIjpjYXNlIjxmZ0NvbG9yIjp2YXIgemU9''@;'; put 'put ''dG4oVmVbMF0pLnNsaWNlKDEpOyJjb2xvciIhPXplJiYhbmVbemVdJiYobmVbemVdPXt9KTt2YXIgV2U9YmU/ZmU6bmVbemVdO251bGwhPVZlLmluZGV4ZWQmJihXZS5pbmRleD1wYXJzZUludChWZS5pbmRleGVkLDEwKSxXZS5yZ2I9SDkoV2UuaW5kZXgsUC5JbmRleGVkKSksbnVsbCE9VmUu''@;'; put 'put ''dGhlbWUmJihXZS50aGVtZT1wYXJzZUludChWZS50aGVtZSwxMCkpLG51bGwhPVZlLnRpbnQmJihXZS50aW50PXBhcnNlRmxvYXQoVmUudGludCkpLG51bGwhPVZlLnJnYiYmKFdlLnJnYj1WZS5yZ2Iuc2xpY2UoLTYpKSxudWxsIT1WZS5hdXRvJiZkZWxldGUgbmVbemVdLG51bGwhPVdlLnRo''@;'; put 'put ''ZW1lJiYhV2UucmdiJiZMLnRoZW1lRWxlbWVudHMmJihXZS5yZ2I9a2coTC50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtXZS50aGVtZV0ucmdiLFdlLnRpbnR8fDApLFguV1RGJiYoV2UucmF3X3JnYj1MLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW1dlLnRoZW1lXS5yZ2IpKTticmVhaztjYXNl''@;'; put 'put ''IjxzdG9wPiI6YmU9ITAsZmU9e307YnJlYWs7Y2FzZSI8c3RvcCI6YmU9ITAsZmU9e30sbnVsbCE9VmUucG9zaXRpb24mJihmZS52PXBhcnNlRmxvYXQoVmUucG9zaXRpb24pKTticmVhaztjYXNlIjwvc3RvcD4iOmJlPSExLG5lLnN0b3BzLnB1c2goZmUpO2JyZWFrO2Nhc2UiPGV4dCI6dmU9''@;'; put 'put ''ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnZlPSExO2JyZWFrO2RlZmF1bHQ6aWYoWCYmWC5XVEYmJiF2ZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1ZlWzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBETih5LFAsTCxYKXtQLkZvbnRzPVtdO3ZhciBuZT17fSxmZT0hMTsoeVsw''@;'; put 'put ''XS5tYXRjaChYdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXt2YXIgdmU9YW4oYmUpO3N3aXRjaCh0bih2ZVswXSkpe2Nhc2UiPGZvbnRzIjpjYXNlIjxmb250cz4iOmNhc2UiPC9mb250cz4iOmJyZWFrO2Nhc2UiPGZvbnQiOmNhc2UiPGZvbnQ+IjppZigiLz4iIT1iZS5zbGljZSgtMikp''@;'; put 'put ''YnJlYWs7Y2FzZSI8L2ZvbnQ+IjpjYXNlIjxmb250Lz4iOlAuRm9udHMucHVzaChuZSksbmU9e307YnJlYWs7Y2FzZSI8bmFtZSI6dmUudmFsJiYobmUubmFtZT1ZaSh2ZS52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6bmUuYm9sZD12ZS52''@;'; put 'put ''YWw/UnIodmUudmFsKToxO2JyZWFrO2Nhc2UiPGIvPiI6Y2FzZSI8Yj4iOm5lLmJvbGQ9MTticmVhaztjYXNlIjwvYj4iOmJyZWFrO2Nhc2UiPGkiOm5lLml0YWxpYz12ZS52YWw/UnIodmUudmFsKToxO2JyZWFrO2Nhc2UiPGkvPiI6Y2FzZSI8aT4iOm5lLml0YWxpYz0xO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PC9pPiI6YnJlYWs7Y2FzZSI8dSI6c3dpdGNoKHZlLnZhbCl7Y2FzZSJub25lIjpuZS51bmRlcmxpbmU9MDticmVhaztjYXNlInNpbmdsZSI6bmUudW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSJkb3VibGUiOm5lLnVuZGVybGluZT0yO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6bmUudW5k''@;'; put 'put ''ZXJsaW5lPTMzO2JyZWFrO2Nhc2UiZG91YmxlQWNjb3VudGluZyI6bmUudW5kZXJsaW5lPTM0fWJyZWFrO2Nhc2UiPHUvPiI6Y2FzZSI8dT4iOm5lLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiPC91PiI6YnJlYWs7Y2FzZSI8c3RyaWtlIjpuZS5zdHJpa2U9dmUudmFsP1JyKHZlLnZhbCk6MTti''@;'; put 'put ''cmVhaztjYXNlIjxzdHJpa2UvPiI6bmUuc3RyaWtlPTE7YnJlYWs7Y2FzZSI8b3V0bGluZSI6bmUub3V0bGluZT12ZS52YWw/UnIodmUudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6bmUub3V0bGluZT0xO2JyZWFrO2Nhc2UiPHNoYWRvdyI6bmUuc2hhZG93PXZlLnZhbD9Scih2ZS52''@;'; put 'put ''YWwpOjE7YnJlYWs7Y2FzZSI8c2hhZG93Lz4iOm5lLnNoYWRvdz0xO2JyZWFrO2Nhc2UiPGNvbmRlbnNlIjpuZS5jb25kZW5zZT12ZS52YWw/UnIodmUudmFsKToxO2JyZWFrO2Nhc2UiPGNvbmRlbnNlLz4iOm5lLmNvbmRlbnNlPTE7YnJlYWs7Y2FzZSI8ZXh0ZW5kIjpuZS5leHRlbmQ9dmUu''@;'; put 'put ''dmFsP1JyKHZlLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6bmUuZXh0ZW5kPTE7YnJlYWs7Y2FzZSI8c3oiOnZlLnZhbCYmKG5lLnN6PSt2ZS52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmJyZWFrO2Nhc2UiPHZlcnRBbGlnbiI6Im5vbmUiIT0odmUudmFsfHwibm9u''@;'; put 'put ''ZSIpJiYobmUudmFsaWduPXZlLnZhbC5yZXBsYWNlKCJzY3JpcHQiLCIiKSk7YnJlYWs7Y2FzZSI8dmVydEFsaWduLz4iOmNhc2UiPC92ZXJ0QWxpZ24+IjpicmVhaztjYXNlIjxmYW1pbHkiOnZlLnZhbCYmKG5lLmZhbWlseT1wYXJzZUludCh2ZS52YWwsMTApKTticmVhaztjYXNlIjxmYW1p''@;'; put 'put ''bHkvPiI6Y2FzZSI8L2ZhbWlseT4iOmJyZWFrO2Nhc2UiPHNjaGVtZSI6dmUudmFsJiYobmUuc2NoZW1lPXZlLnZhbCk7YnJlYWs7Y2FzZSI8c2NoZW1lLz4iOmNhc2UiPC9zY2hlbWU+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZigiMSI9PXZlLnZhbClicmVhazt2ZS5jb2RlcGFnZT1EW3Bh''@;'; put 'put ''cnNlSW50KHZlLnZhbCwxMCldO2JyZWFrO2Nhc2UiPGNvbG9yIjpuZS5jb2xvcnx8KG5lLmNvbG9yPXt9KSx2ZS5hdXRvJiYobmUuY29sb3IuYXV0bz1Scih2ZS5hdXRvKSksdmUucmdiP25lLmNvbG9yLnJnYj12ZS5yZ2Iuc2xpY2UoLTYpOnZlLmluZGV4ZWQ/KG5lLmNvbG9yLmluZGV4PXBh''@;'; put 'put ''cnNlSW50KHZlLmluZGV4ZWQsMTApLG5lLmNvbG9yLnJnYj1IOShuZS5jb2xvci5pbmRleCxQLkluZGV4ZWQpKTp2ZS50aGVtZSYmKG5lLmNvbG9yLnRoZW1lPXBhcnNlSW50KHZlLnRoZW1lLDEwKSx2ZS50aW50JiYobmUuY29sb3IudGludD1wYXJzZUZsb2F0KHZlLnRpbnQpKSx2ZS50aGVt''@;'; put 'put ''ZSYmTC50aGVtZUVsZW1lbnRzJiZMLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiYobmUuY29sb3IucmdiPWtnKEwudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbbmUuY29sb3IudGhlbWVdLnJnYixuZS5jb2xvci50aW50fHwwKSkpO2JyZWFrO2Nhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4i''@;'; put 'put ''OmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmZlPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6ZmU9ITE7YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpmZT0hMDticmVhaztjYXNlIjwvZXh0''@;'; put 'put ''PiI6ZmU9ITE7YnJlYWs7ZGVmYXVsdDppZihYJiZYLldURiYmIWZlKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrdmVbMF0rIiBpbiBmb250cyIpfX0pfXZhciBMZz17MDoibm9uZSIsMToic2luZ2xlIiwyOiJkb3VibGUiLDMzOiJzaW5nbGVBY2NvdW50aW5nIiwzNDoiZG91Ymxl''@;'; put 'put ''QWNjb3VudGluZyJ9LHFmPVsibnVtRm10SWQiLCJmaWxsSWQiLCJmb250SWQiLCJib3JkZXJJZCIsInhmSWQiXSxLZj1bImFwcGx5QWxpZ25tZW50IiwiYXBwbHlCb3JkZXIiLCJhcHBseUZpbGwiLCJhcHBseUZvbnQiLCJhcHBseU51bWJlckZvcm1hdCIsImFwcGx5UHJvdGVjdGlvbiIsInBp''@;'; put 'put ''dm90QnV0dG9uIiwicXVvdGVQcmVmaXgiXSxIcD1mdW5jdGlvbigpe3ZhciB5PS88KD86XHcrOik/Zm9udChbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9mb250Pi8sUD0vPCg/Olx3KzopP251bUZtdChbXj5dKilcLz4vLEw9LzwoPzpcdys6KT9maWxsKFtePl0qKT5bXFNcc10qPzxcLyg/''@;'; put 'put ''Olx3KzopP2ZpbGw+LyxuZT0vPCg/Olx3KzopP2JvcmRlcihbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9ib3JkZXI+LztyZXR1cm4gZnVuY3Rpb24odmUseWUsVmUsemUpe3ZhciBsdCxDdCxXZT17fSxydD17fTtyZXR1cm4obHQ9dmUubWF0Y2goeSkpJiYoRE4obHQsV2UsVmUsemUpLChX''@;'; put 'put ''ZS5Gb250c3x8W10pWzBdJiZCdChydCxXZS5Gb250c1swXSkpLChsdD12ZS5tYXRjaChQKSkmJihDdD1hbihZaShsdFswXSkpLHJ0Lno9Q3QuZm9ybWF0Q29kZT9ocihDdC5mb3JtYXRDb2RlKTooeWUuTnVtYmVyRm10fHxbXSlbK0N0Lm51bUZtdElkXXx8IkdlbmVyYWwiKSwobHQ9dmUubWF0''@;'; put 'put ''Y2goTCkpJiYoQU4obHQsV2UsVmUsemUpLChXZS5GaWxsc3x8W10pWzBdJiZCdChydCxXZS5GaWxsc1swXSkpLChsdD12ZS5tYXRjaChuZSkpJiYoY3cobHQsV2UsVmUsemUpLChXZS5Cb3JkZXJzfHxbXSlbMF0mJkJ0KHJ0LFdlLkJvcmRlcnNbMF0pKSxydH19KCksTmk9LzwoPzpcdys6KT9k''@;'; put 'put ''eGY+W1xTXHNdKj88XC8oPzpcdys6KT9keGY+L2csRHI9LzwoPzpcdys6KT90YWJsZVN0eWxlXGIuKj8+W1xTXHNdKj88XC8oPzpcdys6KT90YWJsZVN0eWxlPi9nO3ZhciBHVD1mdW5jdGlvbigpe3ZhciBQPS88KD86XHcrOik/bnVtRm10cyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9u''@;'; put 'put ''dW1GbXRzPi8sTD0vPCg/Olx3KzopP2NlbGxTdHlsZVhmcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsU3R5bGVYZnM+LyxYPS88KD86XHcrOik/Y2VsbFN0eWxlcyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9jZWxsU3R5bGVzPi8sbmU9LzwoPzpcdys6KT9jZWxsWGZzKFte''@;'; put 'put ''Pl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2NlbGxYZnM+LyxmZT0vPCg/Olx3KzopP2ZpbGxzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2ZpbGxzPi8sYmU9LzwoPzpcdys6KT9mb250cyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9mb250cz4vLHZlPS88KD86XHcrOik/Ym9yZGVy''@;'; put 'put ''cyhbXj5dKik+W1xTXHNdKj88XC8oPzpcdys6KT9ib3JkZXJzPi8seWU9LzwoPzpcdys6KT9pbmRleGVkQ29sb3JzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2luZGV4ZWRDb2xvcnM+LyxWZT0vPCg/Olx3KzopP3RhYmxlU3R5bGVzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP3Rh''@;'; put 'put ''YmxlU3R5bGVzPi8semU9LzwoPzpcdys6KT9keGZzKFtePl0qKT5bXFNcc10qPzxcLyg/Olx3KzopP2R4ZnM+LztyZXR1cm4gZnVuY3Rpb24ocnQsbHQsQ3Qpe3ZhciB2dCxhdD17fTtyZXR1cm4gcnQ/KCh2dD0ocnQ9cnQucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpLnJlcGxh''@;'; put 'put ''Y2UoLzwhRE9DVFlQRVteXFtdKlxbW15cXV0qXF0+L2dtLCIiKSkubWF0Y2goeWUpKSYmZnVuY3Rpb24gSU4oeSxQLEwpe1AuSW5kZXhlZHx8KFAuSW5kZXhlZD1bXSk7dmFyIFg9ITE7KHlbMF0ubWF0Y2goWHQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dmFyIGZlPWFuKG5lKTtzd2l0''@;'; put 'put ''Y2godG4oZmVbMF0pKXtjYXNlIjxpbmRleGVkQ29sb3JzPiI6Y2FzZSI8aW5kZXhlZENvbG9ycyI6Y2FzZSI8aW5kZXhlZENvbG9ycy8+IjpjYXNlIjwvaW5kZXhlZENvbG9ycz4iOmNhc2UiPC9yZ2JDb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4i''@;'; put 'put ''OmJyZWFrO2Nhc2UiPHJnYkNvbG9yIjpkZWxldGUgZmVbMF07dmFyIGJlPXBhcnNlSW50KGZlLnJnYi5zbGljZSgtNiksMTYpO1AuSW5kZXhlZC5wdXNoKFtiZT4+MTYmMjU1LGJlPj44JjI1NSwyNTUmYmVdKTticmVhaztjYXNlIjxleHQiOlg9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlg9ITE7''@;'; put 'put ''YnJlYWs7ZGVmYXVsdDppZihMJiZMLldURiYmIVgpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitmZVswXSsiIGluIGNlbGxTdHlsZXMiKX19KX0odnQsYXQsQ3QpLCh2dD1ydC5tYXRjaChQKSkmJmZ1bmN0aW9uIFpUKHksUCxMKXtQLk51bWJlckZtdD1bXTtmb3IodmFyIFg9b3Qo''@;'; put 'put ''dy5fdGFibGUpLG5lPTA7bmU8WC5sZW5ndGg7KytuZSlQLk51bWJlckZtdFtYW25lXV09dy5fdGFibGVbWFtuZV1dO3ZhciBmZT15WzBdLm1hdGNoKFh0KTtpZihmZSlmb3IobmU9MDtuZTxmZS5sZW5ndGg7KytuZSl7dmFyIGJlPWFuKGZlW25lXSk7c3dpdGNoKHRuKGJlWzBdKSl7Y2FzZSI8''@;'; put 'put ''bnVtRm10cyI6Y2FzZSI8L251bUZtdHM+IjpjYXNlIjxudW1GbXRzLz4iOmNhc2UiPG51bUZtdHM+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp2YXIgdmU9aHIoWWkoYmUuZm9ybWF0Q29kZSkpLHllPXBhcnNlSW50KGJlLm51bUZtdElkLDEwKTtpZihQLk51bWJlckZt''@;'; put 'put ''dFt5ZV09dmUseWU+MCl7aWYoeWU+MzkyKXtmb3IoeWU9MzkyO3llPjYwJiZudWxsIT1QLk51bWJlckZtdFt5ZV07LS15ZSk7UC5OdW1iZXJGbXRbeWVdPXZlfXcubG9hZCh2ZSx5ZSl9YnJlYWs7ZGVmYXVsdDppZihMLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2JlWzBd''@;'; put 'put ''KyIgaW4gbnVtRm10cyIpfX19KHZ0LGF0LEN0KSwodnQ9cnQubWF0Y2goYmUpKSYmRE4odnQsYXQsbHQsQ3QpLCh2dD1ydC5tYXRjaChmZSkpJiZBTih2dCxhdCxsdCxDdCksKHZ0PXJ0Lm1hdGNoKHZlKSkmJmN3KHZ0LGF0LGx0LEN0KSwodnQ9cnQubWF0Y2goTCkpJiZmdW5jdGlvbiB1USh5''@;'; put 'put ''LFAsTCl7UC5DZWxsU3R5bGVYZj1bXTt2YXIgWCxuZT0hMTsoeVswXS5tYXRjaChYdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGZlKXt2YXIgYmU9YW4oZmUpLHZlPTA7c3dpdGNoKHRuKGJlWzBdKSl7Y2FzZSI8Y2VsbFN0eWxlWGZzIjpjYXNlIjxjZWxsU3R5bGVYZnM+IjpjYXNlIjxjZWxs''@;'; put 'put ''U3R5bGVYZnMvPiI6Y2FzZSI8L2NlbGxTdHlsZVhmcz4iOmNhc2UiPC94Zj4iOmNhc2UiPC9hbGlnbm1lbnQ+IjpjYXNlIjwvcHJvdGVjdGlvbj4iOmNhc2UiPHByb3RlY3Rpb24vPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8eGYi''@;'; put 'put ''OmNhc2UiPHhmLz4iOmZvcihkZWxldGUoWD1iZSlbMF0sdmU9MDt2ZTxxZi5sZW5ndGg7Kyt2ZSlYW3FmW3ZlXV0mJihYW3FmW3ZlXV09cGFyc2VJbnQoWFtxZlt2ZV1dLDEwKSk7Zm9yKHZlPTA7dmU8S2YubGVuZ3RoOysrdmUpWFtLZlt2ZV1dJiYoWFtLZlt2ZV1dPVJyKFhbS2ZbdmVdXSkp''@;'; put 'put ''O2lmKFAuTnVtYmVyRm10JiZYLm51bUZtdElkPjM5Milmb3IodmU9MzkyO3ZlPjYwOy0tdmUpaWYoUC5OdW1iZXJGbXRbWC5udW1GbXRJZF09PVAuTnVtYmVyRm10W3ZlXSl7WC5udW1GbXRJZD12ZTticmVha31QLkNlbGxTdHlsZVhmLnB1c2goWCk7YnJlYWs7Y2FzZSI8YWxpZ25tZW50Ijpj''@;'; put 'put ''YXNlIjxhbGlnbm1lbnQvPiI6dmFyIHllPXt9O2JlLnZlcnRpY2FsJiYoeWUudmVydGljYWw9YmUudmVydGljYWwpLGJlLmhvcml6b250YWwmJih5ZS5ob3Jpem9udGFsPWJlLmhvcml6b250YWwpLG51bGwhPWJlLnRleHRSb3RhdGlvbiYmKHllLnRleHRSb3RhdGlvbj1iZS50ZXh0Um90YXRp''@;'; put 'put ''b24pLGJlLmluZGVudCYmKHllLmluZGVudD1iZS5pbmRlbnQpLGJlLndyYXBUZXh0JiYoeWUud3JhcFRleHQ9YmUud3JhcFRleHQpLGJlLnNocmlua1RvRml0JiYoeWUuc2hyaW5rVG9GaXQ9UnIoYmUuc2hyaW5rVG9GaXQpKSxYLmFsaWdubWVudD15ZTticmVhaztjYXNlIjxwcm90ZWN0aW9u''@;'; put 'put ''IjpYLnByb3RlY3Rpb249e30sUnIoYmUuaGlkZGVuKSYmKFgucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPWJlLmxvY2tlZCYmKFgucHJvdGVjdGlvbi5lZGl0YWJsZT0hUnIoYmUubG9ja2VkKSk7YnJlYWs7Y2FzZSI8ZXh0IjpuZT0hMDticmVhaztjYXNlIjwvZXh0PiI6bmU9ITE7YnJl''@;'; put 'put ''YWs7ZGVmYXVsdDppZihMJiZMLldURiYmIW5lKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrYmVbMF0rIiBpbiBjZWxsU3R5bGVYZnMiKX19KX0odnQsYXQsQ3QpLCh2dD1ydC5tYXRjaChYKSkmJmZ1bmN0aW9uIGhRKHksUCxMKXtQLkNlbGxTdHlsZVhmfHwoUC5DZWxsU3R5bGVY''@;'; put 'put ''Zj1bXSk7dmFyIFg9ITE7KHlbMF0ubWF0Y2goWHQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dmFyIGZlPWFuKG5lKTtzd2l0Y2godG4oZmVbMF0pKXtjYXNlIjxjZWxsU3R5bGVzIjpjYXNlIjxjZWxsU3R5bGVzPiI6Y2FzZSI8Y2VsbFN0eWxlcy8+IjpjYXNlIjwvY2VsbFN0eWxlcz4i''@;'; put 'put ''OmNhc2UiPC94Zj4iOmNhc2UiPC9jZWxsU3R5bGU+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxjZWxsU3R5bGUiOmNhc2UiPGNlbGxTdHlsZS8+IjpkZWxldGUgZmVbMF07dmFyIGJlPStmZS54ZklkO2lmKFAuQ2VsbFN0eWxlWGZb''@;'; put 'put ''YmVdKVAuQ2VsbFN0eWxlWGZbYmVdLnN0eWxlPVlpKGZlLm5hbWUpO2Vsc2UgaWYoIWZlLmJ1aWx0aW5JZCl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIENlbGxTdHlsZSAiK2JlKTticmVhaztjYXNlIjxleHQiOlg9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOlg9ITE7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDppZihMJiZMLldURiYmIVgpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitmZVswXSsiIGluIGNlbGxTdHlsZXMiKX19KX0odnQsYXQsQ3QpLCh2dD1ydC5tYXRjaChuZSkpJiZmdW5jdGlvbiBZVCh5LFAsTCl7UC5DZWxsWGY9W107dmFyIFgsbmU9ITE7KHlbMF0ubWF0Y2go''@;'; put 'put ''WHQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmZSl7dmFyIGJlPWFuKGZlKSx2ZT0wO3N3aXRjaCh0bihiZVswXSkpe2Nhc2UiPGNlbGxYZnMiOmNhc2UiPGNlbGxYZnM+IjpjYXNlIjxjZWxsWGZzLz4iOmNhc2UiPC9jZWxsWGZzPiI6Y2FzZSI8L3hmPiI6Y2FzZSI8L2FsaWdubWVudD4iOmNh''@;'; put 'put ''c2UiPC9wcm90ZWN0aW9uPiI6Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Zm9yKGRlbGV0ZShYPWJlKVswXSx2ZT0wO3ZlPHFmLmxlbmd0aDsrK3ZlKVhbcWZbdmVdXSYm''@;'; put 'put ''KFhbcWZbdmVdXT1wYXJzZUludChYW3FmW3ZlXV0sMTApKTtmb3IodmU9MDt2ZTxLZi5sZW5ndGg7Kyt2ZSlYW0tmW3ZlXV0mJihYW0tmW3ZlXV09UnIoWFtLZlt2ZV1dKSk7aWYoUC5OdW1iZXJGbXQmJlgubnVtRm10SWQ+MzkyKWZvcih2ZT0zOTI7dmU+NjA7LS12ZSlpZihQLk51bWJlckZt''@;'; put 'put ''dFtYLm51bUZtdElkXT09UC5OdW1iZXJGbXRbdmVdKXtYLm51bUZtdElkPXZlO2JyZWFrfVAuQ2VsbFN0eWxlWGYmJlgueGZJZCYmUC5DZWxsU3R5bGVYZltYLnhmSWRdJiZQLkNlbGxTdHlsZVhmW1gueGZJZF0uc3R5bGUmJihYLnN0eWxlPVAuQ2VsbFN0eWxlWGZbWC54ZklkXS5zdHlsZSks''@;'; put 'put ''UC5DZWxsWGYucHVzaChYKTticmVhaztjYXNlIjxhbGlnbm1lbnQiOmNhc2UiPGFsaWdubWVudC8+Ijp2YXIgeWU9e307YmUudmVydGljYWwmJih5ZS52ZXJ0aWNhbD1iZS52ZXJ0aWNhbCksYmUuaG9yaXpvbnRhbCYmKHllLmhvcml6b250YWw9YmUuaG9yaXpvbnRhbCksbnVsbCE9YmUudGV4''@;'; put 'put ''dFJvdGF0aW9uJiYoeWUudGV4dFJvdGF0aW9uPWJlLnRleHRSb3RhdGlvbiksYmUuaW5kZW50JiYoeWUuaW5kZW50PWJlLmluZGVudCksYmUud3JhcFRleHQmJih5ZS53cmFwVGV4dD1ScihiZS53cmFwVGV4dCkpLGJlLnNocmlua1RvRml0JiYoeWUuc2hyaW5rVG9GaXQ9UnIoYmUuc2hyaW5r''@;'; put 'put ''VG9GaXQpKSxYLmFsaWdubWVudD15ZTticmVhaztjYXNlIjxwcm90ZWN0aW9uIjpYLnByb3RlY3Rpb249e30sUnIoYmUuaGlkZGVuKSYmKFgucHJvdGVjdGlvbi5oaWRkZW49ITApLG51bGwhPWJlLmxvY2tlZCYmKFgucHJvdGVjdGlvbi5lZGl0YWJsZT0hUnIoYmUubG9ja2VkKSk7YnJlYWs7''@;'; put 'put ''Y2FzZSI8QWx0ZXJuYXRlQ29udGVudCI6Y2FzZSI8ZXh0IjpuZT0hMDticmVhaztjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOmNhc2UiPC9leHQ+IjpuZT0hMTticmVhaztkZWZhdWx0OmlmKEwmJkwuV1RGJiYhbmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitiZVswXSsiIGlu''@;'; put 'put ''IGNlbGxYZnMiKX19KX0odnQsYXQsQ3QpLCh2dD1ydC5tYXRjaCh6ZSkpJiZmdW5jdGlvbiBXVCh5LFAsTCxYKXtQLkRYRnx8KFAuRFhGPVtdKSwoeVswXS5tYXRjaChOaSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG5lKXtQLkRYRi5wdXNoKEhwKG5lLFAsTCxYKSl9KX0odnQsYXQsbHQsQ3Qp''@;'; put 'put ''LCh2dD1ydC5tYXRjaChWZSkpJiZmdW5jdGlvbiBMTih5LFAsTCxYKXtQLlRhYmxlfHwoUC5UYWJsZT1bXSksKHlbMF0ubWF0Y2goRHIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuZSl7UC5UYWJsZS5wdXNoKGZ1bmN0aW9uIFJOKHksUCxMLFgpe3ZhciBuZT0hMSxmZT17fTtyZXR1cm4oeS5t''@;'; put 'put ''YXRjaChYdCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXt2YXIgdmU9YW4oYmUpO3N3aXRjaCh0bih2ZVswXSkpe2Nhc2UiPHRhYmxlU3R5bGU+IjpjYXNlIjx0YWJsZVN0eWxlIjpmZS5uYW1lPXZlLm5hbWUucmVwbGFjZSgvXihUYWJsZXxQaXZvdClTdHlsZS8sIiIpLGZlLnJhd25hbWU9''@;'; put 'put ''dmUubmFtZSxmZS5waXZvdD0hdmUucGl2b3R8fFJyKHZlLnBpdm90KSxmZS50YWJsZT0hdmUudGFibGV8fFJyKHZlLnRhYmxlKTticmVhaztjYXNlIjx0YWJsZVN0eWxlLz4iOmNhc2UiPC90YWJsZVN0eWxlPiI6Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6''@;'; put 'put ''YnJlYWs7Y2FzZSI8dGFibGVTdHlsZUVsZW1lbnQiOmlmKHZlLnR5cGUmJnZlLmR4ZklkKXtpZighUC5EWEZ8fCFQLkRYRlsrdmUuZHhmSWRdKXRocm93IG5ldyBFcnJvcihiZSsiIGNhbm5vdCBmaW5kIERYRiIpO2ZlW3ZlLnR5cGVdPVAuRFhGWyt2ZS5keGZJZF19YnJlYWs7Y2FzZSI8ZXh0''@;'; put 'put ''IjpuZT0hMDticmVhaztjYXNlIjwvZXh0PiI6bmU9ITE7YnJlYWs7ZGVmYXVsdDppZihYJiZYLldURiYmIW5lKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrdmVbMF0rIiBpbiB0YWJsZVN0eWxlIil9fSksZmV9KG5lLFAsMCxYKSl9KX0odnQsYXQsMCxDdCksKGF0LkZvbnRzfHxb''@;'; put 'put ''XSlbMF0mJkZwKGF0LkZvbnRzWzBdKSxhdCk6YXR9fSgpLCRUPV9yKCJzdHlsZVNoZWV0IixudWxsLHt4bWxuczpraS5tYWluWzBdLCJ4bWxuczp2dCI6a2kudnR9KTtmdW5jdGlvbiBWOSh5LFApe3ZhciBYLEw9W1BuLCRUXTt5LlNTRiYmbnVsbCE9KFg9ZnVuY3Rpb24gT2coeSl7dmFyIFA9''@;'; put 'put ''WyI8bnVtRm10cz4iXTtyZXR1cm5bWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKEwpe2Zvcih2YXIgWD1MWzBdO1g8PUxbMV07KytYKW51bGwhPXlbWF0mJihQW1AubGVuZ3RoXT1fcigibnVtRm10IixudWxsLHtudW1GbXRJZDpYLGZvcm1hdENvZGU6''@;'; put 'put ''YnIoeVtYXSl9KSl9KSwxPT09UC5sZW5ndGg/IiI6KFBbUC5sZW5ndGhdPSI8L251bUZtdHM+IixQWzBdPV9yKCJudW1GbXRzIixudWxsLHtjb3VudDpQLmxlbmd0aC0yfSkucmVwbGFjZSgiLz4iLCI+IiksUC5qb2luKCIiKSl9KHkuU1NGKSkmJihMW0wubGVuZ3RoXT1YKSxMW0wubGVuZ3Ro''@;'; put 'put ''XT1mdW5jdGlvbiBmaCh5KXt2YXIgUD1bXTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3ZhciBYPVsiPGZvbnQ+Il07TC5ib2xkJiZYLnB1c2goIjxiLz4iKSxMLml0YWxpYyYmWC5wdXNoKCI8aS8+IiksTC5zdHJpa2UmJlgucHVzaCgiPHN0cmlrZS8+IiksTC5zaGFkb3cmJlgucHVz''@;'; put 'put ''aCgiPHNoYWRvdy8+IiksTGdbK0wudW5kZXJsaW5lXSYmWC5wdXNoKCc8dSB2YWw9IicrTGdbK0wudW5kZXJsaW5lXSsnIi8+JyksTC5zeiYmWC5wdXNoKCc8c3ogdmFsPSInK0wuc3orJyIvPicpLEwuY29sb3ImJlgucHVzaChUMShMLmNvbG9yLCEwKSksTC5uYW1lJiZYLnB1c2goJzxuYW1l''@;'; put 'put ''IHZhbD0iJytMLm5hbWUrJyIvPicpLEwuZmFtaWx5JiZYLnB1c2goJzxmYW1pbHkgdmFsPSInK0wuZmFtaWx5KyciLz4nKSxMLnNjaGVtZSYmWC5wdXNoKCc8c2NoZW1lIHZhbD0iJytMLnNjaGVtZSsnIi8+JyksTC52YWxpZ24mJlgucHVzaCgnPHZlcnRBbGlnbiB2YWw9IicrTC52YWxpZ24r''@;'; put 'put ''KCJzdWIiPT1MLnZhbGlnbnx8InN1cGVyIj09TC52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKSxQLnB1c2goWC5qb2luKCIiKSsiPC9mb250PiIpfSksJzxmb250cyBjb3VudD0iJytQLmxlbmd0aCsnIj4nK1Auam9pbigiIikrIjwvZm9udHM+In0oKHkuU3R5bGVzfHx7fSkuRm9udHN8fFtd''@;'; put 'put ''KSxMW0wubGVuZ3RoXT1mdW5jdGlvbiBVVCh5KXt2YXIgUD1bXTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3ZhciBYPW51bGw7aWYoTC5zdG9wcyYmTC5zdG9wcy5sZW5ndGgpe3ZhciBuZT17fTtMLmFuZ2xlJiYobmUuZGVncmVlPU1hdGgucm91bmQoTC5hbmdsZSkpLFg9TC5zdG9w''@;'; put 'put ''cy5tYXAoZnVuY3Rpb24oZmUpe3JldHVybiBfcigic3RvcCIsVDEoZmUsImNvbG9yIiwhMCksbnVsbCE9ZmUudj97cG9zaXRpb246ZmUudn06e30pfSksUC5wdXNoKCI8ZmlsbD4iK19yKCJncmFkaWVudEZpbGwiLFguam9pbigiIiksbmUpKyI8L2ZpbGw+Iil9ZWxzZXtpZihMLmZnQ29sb3Ip''@;'; put 'put ''e2lmKFg9KFh8fCIiKSsiPGZnQ29sb3IgIixMLmZnQ29sb3IudGhlbWUpWCs9J3RoZW1lPSInK0wuZmdDb2xvci50aGVtZSsnIicrKEwuZmdDb2xvci50aW50PycgdGludD0iJytMLmZnQ29sb3IudGludCsnIic6IiIpKyIvPiI7ZWxzZSBpZihudWxsIT1MLmZnQ29sb3IuaW5kZXgmJm51bGw9''@;'; put 'put ''PUwuZmdDb2xvci5yZ2IpWCs9J2luZGV4ZWQ9IicrTC5mZ0NvbG9yLmluZGV4KyciLz4nO2Vsc2UgaWYoTC5mZ0NvbG9yLmF1dG8pWCs9J2F1dG89IjEiLz4nO2Vsc2V7aWYobnVsbD09TC5mZ0NvbG9yLnJnYil0aHJvdyBuZXcgRXJyb3IoIkJhZCBjb2xvciAiK290KEwuZmdDb2xvcikuam9p''@;'; put 'put ''bigifCIpKTtYKz0ncmdiPSJGRicrbjAoTC5mZ0NvbG9yLnJnYikrJyIvPid9InNvbGlkIj09TC5wYXR0ZXJuVHlwZSYmIUwuYmdDb2xvciYmKEwuYmdDb2xvcj17aW5kZXg6NjR9KX1pZihMLmJnQ29sb3IpaWYoWD0oWHx8IiIpKyI8YmdDb2xvciAiLEwuYmdDb2xvci50aGVtZSlYKz0ndGhl''@;'; put 'put ''bWU9IicrTC5iZ0NvbG9yLnRoZW1lKyciLz4nO2Vsc2UgaWYobnVsbCE9TC5iZ0NvbG9yLmluZGV4JiZudWxsPT1MLmJnQ29sb3IucmdiKVgrPSdpbmRleGVkPSInK0wuYmdDb2xvci5pbmRleCsnIi8+JztlbHNlIGlmKEwuYmdDb2xvci5hdXRvKVgrPSdhdXRvPSIxIi8+JztlbHNle2lmKG51''@;'; put 'put ''bGw9PUwuYmdDb2xvci5yZ2IpdGhyb3cgbmV3IEVycm9yKCJCYWQgY29sb3IgIitvdChMLmJnQ29sb3IpLmpvaW4oInwiKSk7WCs9J3JnYj0iRkYnK24wKEwuYmdDb2xvci5yZ2IpKyciLz4nfVAucHVzaCgiPGZpbGw+IitfcigicGF0dGVybkZpbGwiLFgse3BhdHRlcm5UeXBlOkwucGF0dGVy''@;'; put 'put ''blR5cGV9KSsiPC9maWxsPiIpfX0pLCc8ZmlsbHMgY291bnQ9IicrUC5sZW5ndGgrJyI+JytQLmpvaW4oIiIpKyI8L2ZpbGxzPiJ9KCh5LlN0eWxlc3x8e30pLkZpbGxzfHxbXSksTFtMLmxlbmd0aF09ZnVuY3Rpb24gTWEoeSl7dmFyIFA9W107cmV0dXJuIHkuZm9yRWFjaChmdW5jdGlvbihM''@;'; put 'put ''KXt2YXIgWD1bXTtYLnB1c2goTnAoTC5sZWZ0LCJsZWZ0IikpLFgucHVzaChOcChMLnJpZ2h0LCJyaWdodCIpKSxYLnB1c2goTnAoTC50b3AsInRvcCIpKSxYLnB1c2goTnAoTC5ib3R0b20sImJvdHRvbSIpKSxYLnB1c2goTnAoTC5kaWFnb25hbCwiZGlhZ29uYWwiKSksUC5wdXNoKCI8Ym9y''@;'; put 'put ''ZGVyPiIrWC5qb2luKCIiKSsiPC9ib3JkZXI+Iil9KSwnPGJvcmRlcnMgY291bnQ9IicrUC5sZW5ndGgrJyI+JytQLmpvaW4oIiIpKyI8L2JvcmRlcnM+In0oKHkuU3R5bGVzfHx7fSkuQm9yZGVyc3x8W10pLExbTC5sZW5ndGhdPWZ1bmN0aW9uIGRRKHkpe3ZhciBQPVsnPHhmIG51bUZtdElk''@;'; put 'put ''PSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiLz4nXTtpZih5KWZvcih2YXIgTD0xO0w8eS5sZW5ndGg7KytMKVAucHVzaChfcigieGYiLG51bGwse251bUZtdElkOnlbTF0ubnVtRm10SWR8fDAsZm9udElkOnlbTF0uZm9udElkfHwwLGZpbGxJZDp5W0xdLmZpbGxJZHx8''@;'; put 'put ''MCxib3JkZXJJZDp5W0xdLmJvcmRlcklkfHwwfSkpO3JldHVybic8Y2VsbFN0eWxlWGZzIGNvdW50PSInK1AubGVuZ3RoKyciPicrUC5qb2luKCIiKSsiPC9jZWxsU3R5bGVYZnM+In0oUC5jZWxsU3R5bGVYZnMpLChYPWZ1bmN0aW9uIGNRKHkpe3ZhciBQPVtdO3JldHVybiBQW1AubGVuZ3Ro''@;'; put 'put ''XT1fcigiY2VsbFhmcyIsbnVsbCkseS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3ZhciBYPUwuYWxpZ25tZW50O2RlbGV0ZSBMLmFsaWdubWVudDt2YXIgbmU9TC5wcm90ZWN0aW9uO2RlbGV0ZSBMLnByb3RlY3Rpb247dmFyIGZlPVg/X3IoImFsaWdubWVudCIsbnVsbCxYKToiIjtmZSs9bmU/X3Io''@;'; put 'put ''InByb3RlY3Rpb24iLG51bGwse2hpZGRlbjpuZS5oaWRkZW4/MTowLGxvY2tlZDpuZS5lZGl0YWJsZT8wOjF9KToiIixQW1AubGVuZ3RoXT1fcigieGYiLGZlfHxudWxsLEwpLFgmJihMLmFsaWdubWVudD1YKSxuZSYmKEwucHJvdGVjdGlvbj1uZSl9KSxQW1AubGVuZ3RoXT0iPC9jZWxsWGZz''@;'; put 'put ''PiIsMj09PVAubGVuZ3RoPyIiOihQWzBdPV9yKCJjZWxsWGZzIixudWxsLHtjb3VudDpQLmxlbmd0aC0yfSkucmVwbGFjZSgiLz4iLCI+IiksUC5qb2luKCIiKSl9KFAuY2VsbFhmcykpJiYoTFtMLmxlbmd0aF09WCksTFtMLmxlbmd0aF09ZnVuY3Rpb24gZlEoeSl7dmFyIFA9Wyc8Y2VsbFN0''@;'; put 'put ''eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIi8+J107aWYoeSlmb3IodmFyIEw9MTtMPHkubGVuZ3RoOysrTClQLnB1c2goX3IoImNlbGxTdHlsZSIsbnVsbCx7bmFtZTp5W0xdLm5hbWUseGZJZDpMfSkpO3JldHVybic8Y2VsbFN0eWxlcyBjb3VudD0iJytQLmxlbmd0''@;'; put 'put ''aCsnIj4nK1Auam9pbigiIikrIjwvY2VsbFN0eWxlcz4ifShQLmNlbGxTdHlsZVhmcykseS5TdHlsZXMuRFhGfHwoeS5TdHlsZXMuRFhGPVtdKTt2YXIgbmU9ZnVuY3Rpb24geDEoeSxQLEwpe3ZhciBYPVsnPHRhYmxlU3R5bGVzIGNvdW50PSInKyh5fHxbXSkubGVuZ3RoKyciIGRlZmF1bHRU''@;'; put 'put ''YWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtOSIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVNZWRpdW00IiddO3JldHVybiB5JiZ5Lmxlbmd0aD8oWFswXSs9Ij4iLHkuZm9yRWFjaChmdW5jdGlvbihuZSl7WC5wdXNoKGZ1bmN0aW9uIHV3KHksUCxMKXt2YXIgWD1bXTtbIndob2xl''@;'; put 'put ''VGFibGUiLCJoZWFkZXJSb3ciLCJ0b3RhbFJvdyIsImZpcnN0Q29sdW1uIiwibGFzdENvbHVtbiIsImZpcnN0Um93U3RyaXBlIiwic2Vjb25kUm93U3RyaXBlIiwiZmlyc3RDb2x1bW5TdHJpcGUiLCJzZWNvbmRDb2x1bW5TdHJpcGUiLCJmaXJzdEhlYWRlckNlbGwiLCJsYXN0SGVhZGVyQ2Vs''@;'; put 'put ''bCIsImZpcnN0VG90YWxDZWxsIiwibGFzdFRvdGFsQ2VsbCIsImZpcnN0U3VidG90YWxDb2x1bW4iLCJzZWNvbmRTdWJ0b3RhbENvbHVtbiIsInRoaXJkU3VidG90YWxDb2x1bW4iLCJmaXJzdFN1YnRvdGFsUm93Iiwic2Vjb25kU3VidG90YWxSb3ciLCJ0aGlyZFN1YnRvdGFsUm93IiwiYmxh''@;'; put 'put ''bmtSb3ciLCJmaXJzdENvbHVtblN1YmhlYWRpbmciLCJzZWNvbmRDb2x1bW5TdWJoZWFkaW5nIiwidGhpcmRDb2x1bW5TdWJoZWFkaW5nIiwiZmlyc3RSb3dTdWJoZWFkaW5nIiwic2Vjb25kUm93U3ViaGVhZGluZyIsInRoaXJkUm93U3ViaGVhZGluZyIsInBhZ2VGaWVsZExhYmVscyIsInBh''@;'; put 'put ''Z2VGaWVsZFZhbHVlcyJdLmZvckVhY2goZnVuY3Rpb24oZmUpe2lmKHlbZmVdKXt2YXIgYmU9S3coUCx5W2ZlXSk7WC5wdXNoKCc8dGFibGVTdHlsZUVsZW1lbnQgZHhmSWQ9IicrYmUrJyIgdHlwZT0iJytmZSsnIi8+Jyl9fSk7dmFyIG5lPSc8dGFibGVTdHlsZSBjb3VudD0iJytYLmxlbmd0''@;'; put 'put ''aCsnIiBwaXZvdD0iJysgKyEheS5waXZvdCsnIiBuYW1lPSInK3kubmFtZSsnIic7cmV0dXJuIFgubGVuZ3RoP25lKyI+IitYLmpvaW4oIiIpKyI8L3RhYmxlU3R5bGU+IjpuZSsiLz4ifShuZSxQKSl9KSxYLmpvaW4oIiIpKyI8L3RhYmxlU3R5bGVzPiIpOlhbMF0rIi8+In0oKHkuU3R5bGVz''@;'; put 'put ''fHx7fSkuVGFibGV8fFtdLHkuU3R5bGVzLkRYRik7cmV0dXJuIExbTC5sZW5ndGhdPWZ1bmN0aW9uIE9OKHksUCl7aWYoIXkubGVuZ3RoKXJldHVybic8ZHhmcyBjb3VudD0iMCIvPic7dmFyIEw9Wyc8ZHhmcyBjb3VudD0iJyt5Lmxlbmd0aCsnIj4nXTtyZXR1cm4geS5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKFgpe0wucHVzaChmdW5jdGlvbiBlNih5LFApe3ZhciBMPXtib2xkOiJiIixpdGFsaWM6ImkiLHZhbGlnbjoidmVydEFsaWduIn0sWD1bIjxkeGY+Il0sbmU9W10sZmU9W10sYmU9W10seWU9W107cmV0dXJuIG90KHkpLmZvckVhY2goZnVuY3Rpb24oemUpe3N3aXRjaCh6ZSl7Y2FzZSJi''@;'; put 'put ''b2xkIjpjYXNlIml0YWxpYyI6Y2FzZSJzdHJpa2UiOmNhc2UidW5kZXJsaW5lIjpjYXNlImNvbG9yIjpjYXNlInZhbGlnbiI6Y2FzZSJzeiI6Y2FzZSJuYW1lIjpjYXNlIm91dGxpbmUiOmNhc2Uic2hhZG93IjpjYXNlImNoYXJzZXQiOmNhc2UiZmFtaWx5IjpjYXNlImNvbmRlbnNlIjpjYXNl''@;'; put 'put ''ImV4dGVuZCI6Y2FzZSJzY2hlbWUiOm5lLnB1c2goemUpO2JyZWFrO2Nhc2UiYmdDb2xvciI6Y2FzZSJmZ0NvbG9yIjpiZS5wdXNoKHplKTticmVhaztjYXNlInoiOmZlLnB1c2goemUpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImRp''@;'; put 'put ''YWdvbmFsIjpjYXNlInZlcnRpY2FsIjpjYXNlImhvcml6b250YWwiOnllLnB1c2goemUpO2JyZWFrO2Nhc2UicGF0dGVyblR5cGUiOmNhc2UiZGlhZ29uYWxEb3duIjpjYXNlImRpYWdvbmFsVXAiOmNhc2Uic3RvcHMiOmNhc2UiZGVncmVlIjpicmVhaztkZWZhdWx0OnRocm93IlVucmVjb2du''@;'; put 'put ''aXplZCAiK3plKyIgaW4gRFhGIn19KSxuZS5sZW5ndGg+MCYmKFgucHVzaCgiPGZvbnQ+IiksbmUuZm9yRWFjaChmdW5jdGlvbih6ZSl7c3dpdGNoKHplKXtjYXNlImJvbGQiOmNhc2UiaXRhbGljIjpjYXNlInN0cmlrZSI6Y2FzZSJvdXRsaW5lIjpjYXNlInNoYWRvdyI6Y2FzZSJjb25kZW5z''@;'; put 'put ''ZSI6Y2FzZSJleHRlbmQiOlgucHVzaCgiPCIrKExbemVdfHx6ZSkrJyB2YWw9IicrKHlbemVdPyIxIjoiMCIpKyciLz4nKTticmVhaztjYXNlImNvbG9yIjpYLnB1c2goVDEoeVt6ZV0semUsITApKTticmVhaztjYXNlImZhbWlseSI6Y2FzZSJuYW1lIjpjYXNlInN6IjpjYXNlInNjaGVtZSI6''@;'; put 'put ''WC5wdXNoKCI8IisoTFt6ZV18fHplKSsnIHZhbD0iJyt5W3plXSsnIi8+Jyk7YnJlYWs7Y2FzZSJ1bmRlcmxpbmUiOlgucHVzaCgnPHUgdmFsPSInK0xnW3lbemVdfHwwXSsnIi8+Jyk7YnJlYWs7Y2FzZSJ2YWxpZ24iOlgucHVzaCgnPHZlcnRBbGlnbiB2YWw9IicreS52YWxpZ24rKCJzdWIi''@;'; put 'put ''PT15LnZhbGlnbnx8InN1cGVyIj09eS52YWxpZ24/InNjcmlwdCI6IiIpKyciLz4nKTticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkICIremUrIiA6IGZvbnQgRFhGIn19KSxYLnB1c2goIjwvZm9udD4iKSksZmUubGVuZ3RoPjAmJlgucHVzaCgnPG51bUZtdCBmb3JtYXRDb2RlPSIn''@;'; put 'put ''K2JyKHkueikrJyIgbnVtRm10SWQ9IicrZnVuY3Rpb24gcXcoeSxQKXtpZigibnVtYmVyIj09dHlwZW9mIHkpcmV0dXJuIHk7dmFyIEw9UC5yZXZzc2ZbeT8/IkdlbmVyYWwiXSxYPTYwO2lmKG51bGw9PUwpZm9yKDtYPDM5MjsrK1gpaWYobnVsbD09UC5zc2ZbWF0pcmV0dXJuIHcubG9hZCh5''@;'; put 'put ''LFgpLFAuc3NmW1hdPXksUC5yZXZzc2ZbeV09WCxYO3JldHVybiBMfSh5LnosUCkrJyIvPicpLGJlLmxlbmd0aD4wJiYoWC5wdXNoKCI8ZmlsbD4iKSxYLnB1c2goIjxwYXR0ZXJuRmlsbCIrKHkucGF0dGVyblR5cGU/JyBwYXR0ZXJuVHlwZT0iJyt5LnBhdHRlcm5UeXBlKyciPic6Ij4iKSks''@;'; put 'put ''YmUuZm9yRWFjaChmdW5jdGlvbih6ZSl7c3dpdGNoKHplKXtjYXNlInBhdHRlcm5UeXBlIjpicmVhaztjYXNlImZnQ29sb3IiOmNhc2UiYmdDb2xvciI6WC5wdXNoKFQxKHlbemVdLHplLCEwKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnN1cHBvcnRlZCAiK3plKyIgOiBmaWxsIERYRiJ9fSks''@;'; put 'put ''WC5wdXNoKCI8L3BhdHRlcm5GaWxsPiIpLFgucHVzaCgiPC9maWxsPiIpKSx5ZS5sZW5ndGg+MD8oWC5wdXNoKFsiPGJvcmRlciIsbnVsbCE9eS5kaWFnb25hbERvd24/JyBkaWFnb25hbERvd249IicrICshIXkuZGlhZ29uYWxEb3duKyciJzoiIixudWxsIT15LmRpYWdvbmFsVXA/JyBkaWFn''@;'; put 'put ''b25hbFVwPSInKyArISF5LmRpYWdvbmFsVXArJyInOiIiLCI+Il0uam9pbigiIikpLHllLmZvckVhY2goZnVuY3Rpb24oemUpe1gucHVzaChOcCh5W3plXSx6ZSkpfSksWC5wdXNoKCI8L2JvcmRlcj4iKSk6KG51bGwhPXkuZGlhZ29uYWxEb3dufHxudWxsIT15LmRpYWdvbmFsVXApJiZYLnB1''@;'; put 'put ''c2goWyI8Ym9yZGVyIixudWxsIT15LmRpYWdvbmFsRG93bj8nIGRpYWdvbmFsRG93bj0iJysgKyEheS5kaWFnb25hbERvd24rJyInOiIiLG51bGwhPXkuZGlhZ29uYWxVcD8nIGRpYWdvbmFsVXA9IicrICshIXkuZGlhZ29uYWxVcCsnIic6IiIsIi8+Il0uam9pbigiIikpLDE9PVgubGVuZ3Ro''@;'; put 'put ''PyI8ZHhmLz4iOlguam9pbigiIikrIjwvZHhmPiJ9KFgsUCkpfSksTC5qb2luKCIiKSsiPC9keGZzPiJ9KHkuU3R5bGVzLkRYRixQKSxMW0wubGVuZ3RoXT1uZSxMLmxlbmd0aD4yJiYoTFtMLmxlbmd0aF09Ijwvc3R5bGVTaGVldD4iLExbMV09TFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksTC5q''@;'; put 'put ''b2luKCIiKX1mdW5jdGlvbiBkdyh5LFAsTCl7THx8KEw9eHIoNis0KlAubGVuZ3RoKSksTC53cml0ZV9zaGlmdCgyLHkpLEtsKFAsTCk7dmFyIFg9TC5sZW5ndGg+TC5sP0wuc2xpY2UoMCxMLmwpOkw7cmV0dXJuIG51bGw9PUwubCYmKEwubD1MLmxlbmd0aCksWH1mdW5jdGlvbiBOTih5KXty''@;'; put 'put ''ZXR1cm57Y29sb3I6SmQoeSkscG9zOnphKHkpfX1Tby5TVFk9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIjt2YXIgaHc9WyJub25lIiwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdo''@;'; put 'put ''dEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlz''@;'; put 'put ''IiwiZ3JheTEyNSIsImdyYXkwNjI1Il0sSE49d2UoaHcpLFBnPVsiZ2VuZXJhbCIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCIsImZpbGwiLCJqdXN0aWZ5IiwiY2VudGVyQ29udGludW91cyIsImRpc3RyaWJ1dGVkIl0sdDY9WyJ0b3AiLCJjZW50ZXIiLCJib3R0b20iLCJqdXN0aWZ5IiwiZGlz''@;'; put 'put ''dHJpYnV0ZWQiXTtmdW5jdGlvbiAkYyh5LFAsTCl7THx8KEw9eHIoMTYpKSxMLndyaXRlX3NoaWZ0KDIsUHx8MCksTC53cml0ZV9zaGlmdCgyLHkubnVtRm10SWR8fDApLEwud3JpdGVfc2hpZnQoMix5LmZvbnRJZHx8MCksTC53cml0ZV9zaGlmdCgyLHkuZmlsbElkfHwwKSxMLndyaXRlX3No''@;'; put 'put ''aWZ0KDIseS5ib3JkZXJJZHx8MCksTC53cml0ZV9zaGlmdCgxLHkuYWxpZ25tZW50JiZ5LmFsaWdubWVudC50ZXh0Um90YXRpb258fDApLEwud3JpdGVfc2hpZnQoMSx5LmFsaWdubWVudCYmeS5hbGlnbm1lbnQuaW5kZW50fHwwKTt2YXIgWD0wLG5lPTA7aWYoeS5hbGlnbm1lbnQpe2lmKHku''@;'; put 'put ''YWxpZ25tZW50Lmhvcml6b250YWwpe3ZhciBmZT1QZy5pbmRleE9mKHkuYWxpZ25tZW50Lmhvcml6b250YWwpO2ZlPDAmJihmZT0wKSxYfD1mZX1pZih5LmFsaWdubWVudC52ZXJ0aWNhbCl7dmFyIGJlPXQ2LmluZGV4T2YoeS5hbGlnbm1lbnQudmVydGljYWwpO2JlPDAmJihiZT0yKSxYfD1i''@;'; put 'put ''ZTw8M315LmFsaWdubWVudC53cmFwVGV4dCYmKFh8PTY0KSx5LmFsaWdubWVudC5zaHJpbmtUb0ZpdCYmKG5lfD0xKX1yZXR1cm4gTC53cml0ZV9zaGlmdCgxLFgpLEwud3JpdGVfc2hpZnQoMSxuZSksTC53cml0ZV9zaGlmdCgxLDApLEwud3JpdGVfc2hpZnQoMSwwKSxMfXZhciBFMT1bIm5v''@;'; put 'put ''bmUiLCJ0aGluIiwibWVkaXVtIiwiZGFzaGVkIiwiZG90dGVkIiwidGhpY2siLCJkb3VibGUiLCJoYWlyIiwibWVkaXVtRGFzaGVkIiwiZGFzaERvdCIsIm1lZGl1bURhc2hEb3QiLCJkYXNoRG90RG90IiwibWVkaXVtRGFzaERvdERvdCIsInNsYW50RGFzaERvdCJdO2Z1bmN0aW9uIEZnKHkp''@;'; put 'put ''e3ZhciBQPXkucmVhZF9zaGlmdCgxKTt5LmwrPTE7dmFyIEw9SmQoeSk7cmV0dXJue3N0eWxlOkUxW1BdLGNvbG9yOkx9fWZ1bmN0aW9uIE5nKHksUCl7cmV0dXJuIFB8fChQPXhyKDEwKSkseSYmeS5zdHlsZSYmIiIhPXkuc3R5bGUmJiJub25lIiE9eS5zdHlsZSYmLTEhPT1FMS5pbmRleE9m''@;'; put 'put ''KHkuc3R5bGUpPyhQLndyaXRlX3NoaWZ0KDEsRTEuaW5kZXhPZih5LnN0eWxlKSksUC53cml0ZV9zaGlmdCgxLDApLHkuY29sb3I/ZzIoeS5jb2xvcixQKTooUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKSkpOihQLndyaXRlX3NoaWZ0KDEsMCksUC53cml0ZV9zaGlmdCgx''@;'; put 'put ''LDApLFAud3JpdGVfc2hpZnQoNCwwKSxQLndyaXRlX3NoaWZ0KDQsMCkpLFB9ZnVuY3Rpb24gS1QoeSxQKXtyZXR1cm4gUHx8KFA9eHIoNTIpKSxQLndyaXRlX3NoaWZ0KDQseS54ZklkKSxQLndyaXRlX3NoaWZ0KDIsMSksUC53cml0ZV9zaGlmdCgxLCt5LmJ1aWx0aW5JZCksUC53cml0ZV9z''@;'; put 'put ''aGlmdCgxLDApLGYyKHkubmFtZXx8IiIsUCksUC5sZW5ndGg+UC5sP1Auc2xpY2UoMCxQLmwpOlB9ZnVuY3Rpb24gajkoeSxQKXshUHx8IVAudGhlbWVFbGVtZW50c3x8IVAudGhlbWVFbGVtZW50cy5jbHJTY2hlbWV8fG51bGwhPXkudGhlbWUmJih5LnJnYj1rZyhQLnRoZW1lRWxlbWVudHMu''@;'; put 'put ''Y2xyU2NoZW1lW3kudGhlbWVdLnJnYix5LnRpbnR8fDApKX1mdW5jdGlvbiByayh5LFApe3ZhciBMPWN1KCk7cmV0dXJuIGhpKEwsIkJydEJlZ2luU3R5bGVTaGVldCIpLGZ1bmN0aW9uIGpOKHksUCl7aWYoUCl7dmFyIEw9MDtbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKFgpe2Zvcih2YXIgbmU9WFswXTtuZTw9WFsxXTsrK25lKW51bGwhPVBbbmVdJiYrK0x9KSwwIT1MJiYoaGkoeSwiQnJ0QmVnaW5GbXRzIixwMChMKSksW1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbNTAsMzkyXV0uZm9yRWFjaChmdW5jdGlvbihYKXtmb3IodmFyIG5lPVhb''@;'; put 'put ''MF07bmU8PVhbMV07KytuZSludWxsIT1QW25lXSYmaGkoeSwiQnJ0Rm10IixkdyhuZSxQW25lXSkpfSksaGkoeSwiQnJ0RW5kRm10cyIpKX19KEwseS5TU0YpLGZ1bmN0aW9uIHpOKHksUCl7dmFyIEw9UC5sZW5ndGg7MCE9TCYmKGhpKHksIkJydEJlZ2luRm9udHMiLHAwKEwpKSxQLmZvckVh''@;'; put 'put ''Y2goZnVuY3Rpb24oWCl7aGkoeSwiQnJ0Rm9udCIsZnVuY3Rpb24gRk4oeSxQKXtQfHwoUD14cigxNTMpKSxQLndyaXRlX3NoaWZ0KDIsMjAqeS5zeiksZnVuY3Rpb24gczkoeSxQKXtQfHwoUD14cigyKSksUC53cml0ZV9zaGlmdCgxLCh5Lml0YWxpYz8yOjApfCh5LnN0cmlrZT84OjApfCh5''@;'; put 'put ''Lm91dGxpbmU/MTY6MCl8KHkuc2hhZG93PzMyOjApfCh5LmNvbmRlbnNlPzY0OjApfCh5LmV4dGVuZD8xMjg6MCkpLFAud3JpdGVfc2hpZnQoMSwwKX0oeSxQKSxQLndyaXRlX3NoaWZ0KDIseS5ib2xkPzcwMDo0MDApO3ZhciBMPTA7InN1cGVyIj09eS52YWxpZ24/TD0xOiJzdWIiPT15LnZh''@;'; put 'put ''bGlnbiYmKEw9MiksUC53cml0ZV9zaGlmdCgyLEwpLFAud3JpdGVfc2hpZnQoMSx5LnVuZGVybGluZXx8MCksUC53cml0ZV9zaGlmdCgxLHkuZmFtaWx5fHwwKSxQLndyaXRlX3NoaWZ0KDEseS5jaGFyc2V0fHwwKSxQLndyaXRlX3NoaWZ0KDEsMCksZzIoeS5jb2xvcixQKTt2YXIgWD0wO3Jl''@;'; put 'put ''dHVybiJtYWpvciI9PXkuc2NoZW1lJiYoWD0xKSwibWlub3IiPT15LnNjaGVtZSYmKFg9MiksUC53cml0ZV9zaGlmdCgxLFgpLEtsKHkubmFtZSxQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH0oWCkpfSksaGkoeSwiQnJ0RW5kRm9udHMiKSl9KEwsKHkuU3R5bGVzfHx7fSkuRm9u''@;'; put 'put ''dHN8fFtdKSxmdW5jdGlvbiBVTih5LFApe3ZhciBMPVAubGVuZ3RoOzAhPUwmJihoaSh5LCJCcnRCZWdpbkZpbGxzIixwMChMKSksUC5mb3JFYWNoKGZ1bmN0aW9uKFgpe2hpKHksIkJydEZpbGwiLGZ1bmN0aW9uIGIwKHksUCl7UHx8KFA9eHIoODQpKTt2YXIgTD1ITlt5LnBhdHRlcm5UeXBl''@;'; put 'put ''XTtudWxsPT1MJiYoTD00MCksUC53cml0ZV9zaGlmdCg0LEw9K0wpO3ZhciBYPTA7aWYoNDAhPUwpZm9yKGcyKHkuZmdDb2xvcnx8e2luZGV4OjY0fSxQKSxnMih5LmJnQ29sb3J8fHtpbmRleDo2NX0sUCk7WDwxMjsrK1gpUC53cml0ZV9zaGlmdCg0LDApO2Vsc2V7Zm9yKDtYPDQ7KytYKVAu''@;'; put 'put ''d3JpdGVfc2hpZnQoNCwwKTtmb3IoO1g8MTI7KytYKVAud3JpdGVfc2hpZnQoNCwwKX1yZXR1cm4gUC5sZW5ndGg+UC5sP1Auc2xpY2UoMCxQLmwpOlB9KFgpKX0pLGhpKHksIkJydEVuZEZpbGxzIikpfShMLCh5LlN0eWxlc3x8e30pLkZpbGxzfHxbXSksZnVuY3Rpb24gWk4oeSxQKXt2YXIg''@;'; put 'put ''TD1QLmxlbmd0aDswIT1MJiYoaGkoeSwiQnJ0QmVnaW5Cb3JkZXJzIixwMChMKSksUC5mb3JFYWNoKGZ1bmN0aW9uKFgpe2hpKHksIkJydEJvcmRlciIsZnVuY3Rpb24gcVQoeSxQKXtyZXR1cm4gUHx8KFA9eHIoNTEpKSxQLndyaXRlX3NoaWZ0KDEsMCksTmcoeS50b3AsUCksTmcoeS5ib3R0''@;'; put 'put ''b20sUCksTmcoeS5sZWZ0LFApLE5nKHkucmlnaHQsUCksTmcobnVsbCxQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH0oWCkpfSksaGkoeSwiQnJ0RW5kQm9yZGVycyIpKX0oTCwoeS5TdHlsZXN8fHt9KS5Cb3JkZXJzfHxbXSksZnVuY3Rpb24gUVQoeSxQKXt2YXIgTD0xO2lmKFAm''@;'; put 'put ''JihMPVAubGVuZ3RoKSxoaSh5LCJCcnRCZWdpbkNlbGxTdHlsZVhGcyIscDAoTCkpLGhpKHksIkJydFhGIiwkYyh7bnVtRm10SWQ6MCxmb250SWQ6MCxmaWxsSWQ6MCxib3JkZXJJZDowfSw2NTUzNSkpLFApZm9yKHZhciBYPTE7WDxQLmxlbmd0aDsrK1gpaGkoeSwiQnJ0WEYiLCRjKHtudW1G''@;'; put 'put ''bXRJZDpQW1hdLm51bUZtdElkfHwwLGZvbnRJZDpQW1hdLmZvbnRJZHx8MCxmaWxsSWQ6UFtYXS5maWxsSWR8fDAsYm9yZGVySWQ6UFtYXS5ib3JkZXJJZHx8MH0sNjU1MzUpKTtoaSh5LCJCcnRFbmRDZWxsU3R5bGVYRnMiKX0oTCxQLmNlbGxTdHlsZVhmcyksZnVuY3Rpb24gZWsoeSxQKXto''@;'; put 'put ''aSh5LCJCcnRCZWdpbkNlbGxYRnMiLHAwKFAubGVuZ3RoKSksUC5mb3JFYWNoKGZ1bmN0aW9uKEwpe2hpKHksIkJydFhGIiwkYyhMLDApKX0pLGhpKHksIkJydEVuZENlbGxYRnMiKX0oTCxQLmNlbGxYZnMpLGZ1bmN0aW9uIHRrKHksUCl7dmFyIEw9MTtpZihQJiYoTD1QLmxlbmd0aCksaGko''@;'; put 'put ''eSwiQnJ0QmVnaW5TdHlsZXMiLHAwKEwpKSxoaSh5LCJCcnRTdHlsZSIsS1Qoe3hmSWQ6MCxidWlsdGluSWQ6MCxuYW1lOiJOb3JtYWwifSkpLFApZm9yKHZhciBYPTE7WDxQLmxlbmd0aDsrK1gpaGkoeSwiQnJ0U3R5bGUiLEtUKHt4ZklkOlgsYnVpbHRpbklkOjAsbmFtZTpQW1hdLm5hbWV9''@;'; put 'put ''KSk7aGkoeSwiQnJ0RW5kU3R5bGVzIil9KEwsUC5jZWxsU3R5bGVYZnMpLGZ1bmN0aW9uIHo5KHkpe2hpKHksIkJydEJlZ2luRFhGcyIscDAoMCkpLGhpKHksIkJydEVuZERYRnMiKX0oTCksZnVuY3Rpb24gbmsoeSl7aGkoeSwiQnJ0QmVnaW5UYWJsZVN0eWxlcyIsZnVuY3Rpb24gWFQoeSxQ''@;'; put 'put ''LEwpe3ZhciBYPXhyKDIwNTIpO3JldHVybiBYLndyaXRlX3NoaWZ0KDQseSksZjIoUCxYKSxmMihMLFgpLFgubGVuZ3RoPlgubD9YLnNsaWNlKDAsWC5sKTpYfSgwLCJUYWJsZVN0eWxlTWVkaXVtOSIsIlBpdm90U3R5bGVNZWRpdW00IikpLGhpKHksIkJydEVuZFRhYmxlU3R5bGVzIil9KEwp''@;'; put 'put ''LGhpKEwsIkJydEVuZFN0eWxlU2hlZXQiKSxMLmVuZCgpfVNvLlRIRU1FPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIjt2YXIgaWs9WyI8L2E6bHQxPiIsIjwvYTpkazE+IiwiPC9hOmx0Mj4iLCI8L2E6''@;'; put 'put ''ZGsyPiIsIjwvYTphY2NlbnQxPiIsIjwvYTphY2NlbnQyPiIsIjwvYTphY2NlbnQzPiIsIjwvYTphY2NlbnQ0PiIsIjwvYTphY2NlbnQ1PiIsIjwvYTphY2NlbnQ2PiIsIjwvYTpobGluaz4iLCI8L2E6Zm9sSGxpbms+Il07ZnVuY3Rpb24gV04oeSxQLEwpe1AudGhlbWVFbGVtZW50cy5jbHJT''@;'; put 'put ''Y2hlbWU9W107dmFyIFg9e307KHlbMF0ubWF0Y2goWHQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dmFyIGZlPWFuKG5lKTtzd2l0Y2goZmVbMF0pe2Nhc2UiPGE6Y2xyU2NoZW1lIjpjYXNlIjwvYTpjbHJTY2hlbWU+IjpjYXNlIjwvYTpzcmdiQ2xyPiI6Y2FzZSI8L2E6c3lzQ2xyPiI6''@;'; put 'put ''YnJlYWs7Y2FzZSI8YTpzcmdiQ2xyIjpYLnJnYj1mZS52YWw7YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOlgucmdiPWZlLmxhc3RDbHI7YnJlYWs7Y2FzZSI8YTpkazE+IjpjYXNlIjwvYTpkazE+IjpjYXNlIjxhOmx0MT4iOmNhc2UiPC9hOmx0MT4iOmNhc2UiPGE6ZGsyPiI6Y2FzZSI8L2E6ZGsy''@;'; put 'put ''PiI6Y2FzZSI8YTpsdDI+IjpjYXNlIjwvYTpsdDI+IjpjYXNlIjxhOmFjY2VudDE+IjpjYXNlIjwvYTphY2NlbnQxPiI6Y2FzZSI8YTphY2NlbnQyPiI6Y2FzZSI8L2E6YWNjZW50Mj4iOmNhc2UiPGE6YWNjZW50Mz4iOmNhc2UiPC9hOmFjY2VudDM+IjpjYXNlIjxhOmFjY2VudDQ+IjpjYXNl''@;'; put 'put ''IjwvYTphY2NlbnQ0PiI6Y2FzZSI8YTphY2NlbnQ1PiI6Y2FzZSI8L2E6YWNjZW50NT4iOmNhc2UiPGE6YWNjZW50Nj4iOmNhc2UiPC9hOmFjY2VudDY+IjpjYXNlIjxhOmhsaW5rPiI6Y2FzZSI8L2E6aGxpbms+IjpjYXNlIjxhOmZvbEhsaW5rPiI6Y2FzZSI8L2E6Zm9sSGxpbms+IjoiLyI9''@;'; put 'put ''PT1mZVswXS5jaGFyQXQoMSk/KFAudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbaWsuaW5kZXhPZihmZVswXSldPVgsWD17fSk6WC5uYW1lPWZlWzBdLnNsaWNlKDMsZmVbMF0ubGVuZ3RoLTEpO2JyZWFrO2RlZmF1bHQ6aWYoTCYmTC5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQg''@;'; put 'put ''IitmZVswXSsiIGluIGNsclNjaGVtZSIpfX0pfWZ1bmN0aW9uIEdOKCl7fWZ1bmN0aW9uICROKCl7fXZhciBxTj0vPGE6Y2xyU2NoZW1lKFtePl0qKT5bXHNcU10qPFwvYTpjbHJTY2hlbWU+Lyxvaz0vPGE6Zm9udFNjaGVtZShbXj5dKik+W1xzXFNdKjxcL2E6Zm9udFNjaGVtZT4vLHBRPS88''@;'; put 'put ''YTpmbXRTY2hlbWUoW14+XSopPltcc1xTXSo8XC9hOmZtdFNjaGVtZT4vLEtOPS88YTp0aGVtZUVsZW1lbnRzKFtePl0qKT5bXHNcU10qPFwvYTp0aGVtZUVsZW1lbnRzPi87ZnVuY3Rpb24gcHcoeSxQKXtpZigheXx8MD09PXkubGVuZ3RoKXJldHVybiBwdyhYTigpKTt2YXIgTCxYPXt9O2lm''@;'; put 'put ''KCEoTD15Lm1hdGNoKEtOKSkpdGhyb3cgbmV3IEVycm9yKCJ0aGVtZUVsZW1lbnRzIG5vdCBmb3VuZCBpbiB0aGVtZSIpO3JldHVybiBmdW5jdGlvbiBzayh5LFAsTCl7dmFyIFg7UC50aGVtZUVsZW1lbnRzPXt9LFtbImNsclNjaGVtZSIscU4sV05dLFsiZm9udFNjaGVtZSIsb2ssR05dLFsi''@;'; put 'put ''Zm10U2NoZW1lIixwUSwkTl1dLmZvckVhY2goZnVuY3Rpb24obmUpe2lmKCEoWD15Lm1hdGNoKG5lWzFdKSkpdGhyb3cgbmV3IEVycm9yKG5lWzBdKyIgbm90IGZvdW5kIGluIHRoZW1lRWxlbWVudHMiKTtuZVsyXShYLFAsTCl9KX0oTFswXSxYLFApLFgucmF3PXksWH1mdW5jdGlvbiBYTih5''@;'; put 'put ''LFApe2lmKFAmJlAudGhlbWVYTFNYKXJldHVybiBQLnRoZW1lWExTWDtpZih5JiYic3RyaW5nIj09dHlwZW9mIHkucmF3KXJldHVybiB5LnJhdzt2YXIgTD1bUG5dO3JldHVybiBMW0wubGVuZ3RoXT0nPGE6dGhlbWUgeG1sbnM6YT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3Jn''@;'; put 'put ''L2RyYXdpbmdtbC8yMDA2L21haW4iIG5hbWU9Ik9mZmljZSBUaGVtZSI+JyxMW0wubGVuZ3RoXT0iPGE6dGhlbWVFbGVtZW50cz4iLExbTC5sZW5ndGhdPSc8YTpjbHJTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLExbTC5sZW5ndGhdPSc8YTpkazE+PGE6c3lzQ2xyIHZhbD0id2luZG93VGV4dCIg''@;'; put 'put ''bGFzdENscj0iMDAwMDAwIi8+PC9hOmRrMT4nLExbTC5sZW5ndGhdPSc8YTpsdDE+PGE6c3lzQ2xyIHZhbD0id2luZG93IiBsYXN0Q2xyPSJGRkZGRkYiLz48L2E6bHQxPicsTFtMLmxlbmd0aF09JzxhOmRrMj48YTpzcmdiQ2xyIHZhbD0iMUY0OTdEIi8+PC9hOmRrMj4nLExbTC5sZW5ndGhd''@;'; put 'put ''PSc8YTpsdDI+PGE6c3JnYkNsciB2YWw9IkVFRUNFMSIvPjwvYTpsdDI+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD0iNEY4MUJEIi8+PC9hOmFjY2VudDE+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD0iQzA1MDREIi8+PC9hOmFjY2Vu''@;'; put 'put ''dDI+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50Mz48YTpzcmdiQ2xyIHZhbD0iOUJCQjU5Ii8+PC9hOmFjY2VudDM+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD0iODA2NEEyIi8+PC9hOmFjY2VudDQ+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50NT48YTpzcmdiQ2xy''@;'; put 'put ''IHZhbD0iNEJBQ0M2Ii8+PC9hOmFjY2VudDU+JyxMW0wubGVuZ3RoXT0nPGE6YWNjZW50Nj48YTpzcmdiQ2xyIHZhbD0iRjc5NjQ2Ii8+PC9hOmFjY2VudDY+JyxMW0wubGVuZ3RoXT0nPGE6aGxpbms+PGE6c3JnYkNsciB2YWw9IjAwMDBGRiIvPjwvYTpobGluaz4nLExbTC5sZW5ndGhdPSc8''@;'; put 'put ''YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD0iODAwMDgwIi8+PC9hOmZvbEhsaW5rPicsTFtMLmxlbmd0aF09IjwvYTpjbHJTY2hlbWU+IixMW0wubGVuZ3RoXT0nPGE6Zm9udFNjaGVtZSBuYW1lPSJPZmZpY2UiPicsTFtMLmxlbmd0aF09IjxhOm1ham9yRm9udD4iLExbTC5sZW5ndGhdPSc8''@;'; put 'put ''YTpsYXRpbiB0eXBlZmFjZT0iQ2FtYnJpYSIvPicsTFtMLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLExbTC5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSJcdWZmMmRcdWZmMzMgXHVmZjMwXHUz''@;'; put 'put ''MGI0XHUzMGI3XHUzMGMzXHUzMGFmIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSJcdWI5ZDFcdWM3NDAgXHVhY2UwXHViNTE1Ii8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSJcdTViOGJcdTRmNTMiLz4nLExb''@;'; put 'put ''TC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9Ilx1NjViMFx1N2QzMFx1NjYwZVx1OWFkNCIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9''@;'; put 'put ''IkhlYnIiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJFdGhpIiB0eXBlZmFjZT0iTnlhbGEiLz4nLExbTC5sZW5ndGhdPSc8YTpm''@;'; put 'put ''b250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktobXIiIHR5cGVmYWNlPSJNb29sQm9yYW4iLz4nLExbTC5sZW5ndGhd''@;'; put 'put ''PSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLExbTC5sZW5n''@;'; put 'put ''dGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIg''@;'; put 'put ''dHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9u''@;'; put 'put ''dCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLExbTC5s''@;'; put 'put ''ZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIv''@;'; put 'put ''PicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIg''@;'; put 'put ''dHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJVaWdoIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFVpZ2h1ciIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHZW9yIiB0eXBlZmFjZT0iU3lsZmFlbiIvPicsTFtMLmxlbmd0aF09''@;'; put 'put ''IjwvYTptYWpvckZvbnQ+IixMW0wubGVuZ3RoXT0iPGE6bWlub3JGb250PiIsTFtMLmxlbmd0aF09JzxhOmxhdGluIHR5cGVmYWNlPSJDYWxpYnJpIi8+JyxMW0wubGVuZ3RoXT0nPGE6ZWEgdHlwZWZhY2U9IiIvPicsTFtMLmxlbmd0aF09JzxhOmNzIHR5cGVmYWNlPSIiLz4nLExbTC5sZW5n''@;'; put 'put ''dGhdPSc8YTpmb250IHNjcmlwdD0iSnBhbiIgdHlwZWZhY2U9Ilx1ZmYyZFx1ZmYzMyBcdWZmMzBcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWYiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFuZyIgdHlwZWZhY2U9Ilx1YjlkMVx1Yzc0MCBcdWFjZTBcdWI1MTUiLz4nLExbTC5s''@;'; put 'put ''ZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFucyIgdHlwZWZhY2U9Ilx1NWI4Ylx1NGY1MyIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW50IiB0eXBlZmFjZT0iXHU2NWIwXHU3ZDMwXHU2NjBlXHU5YWQ0Ii8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkFyYWIi''@;'; put 'put ''IHR5cGVmYWNlPSJBcmlhbCIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iQXJpYWwiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhaSIgdHlwZWZhY2U9IlRhaG9tYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJFdGhp''@;'; put 'put ''IiB0eXBlZmFjZT0iTnlhbGEiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQmVuZyIgdHlwZWZhY2U9IlZyaW5kYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdWpyIiB0eXBlZmFjZT0iU2hydXRpIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikto''@;'; put 'put ''bXIiIHR5cGVmYWNlPSJEYXVuUGVuaCIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLbmRhIiB0eXBlZmFjZT0iVHVuZ2EiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VydSIgdHlwZWZhY2U9IlJhYXZpIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9''@;'; put 'put ''IkNhbnMiIHR5cGVmYWNlPSJFdXBoZW1pYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDaGVyIiB0eXBlZmFjZT0iUGxhbnRhZ2VuZXQgQ2hlcm9rZWUiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iWWlpaSIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBZaSBCYWl0aSIv''@;'; put 'put ''PicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaWJ0IiB0eXBlZmFjZT0iTWljcm9zb2Z0IEhpbWFsYXlhIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWEiIHR5cGVmYWNlPSJNViBCb2xpIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkRldmEiIHR5''@;'; put 'put ''cGVmYWNlPSJNYW5nYWwiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGVsdSIgdHlwZWZhY2U9IkdhdXRhbWkiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGFtbCIgdHlwZWZhY2U9IkxhdGhhIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlN5cmMi''@;'; put 'put ''IHR5cGVmYWNlPSJFc3RyYW5nZWxvIEVkZXNzYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJPcnlhIiB0eXBlZmFjZT0iS2FsaW5nYSIvPicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNbHltIiB0eXBlZmFjZT0iS2FydGlrYSIvPicsTFtMLmxlbmd0aF09JzxhOmZv''@;'; put 'put ''bnQgc2NyaXB0PSJMYW9vIiB0eXBlZmFjZT0iRG9rQ2hhbXBhIi8+JyxMW0wubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlNpbmgiIHR5cGVmYWNlPSJJc2tvb2xhIFBvdGEiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTW9uZyIgdHlwZWZhY2U9Ik1vbmdvbGlhbiBCYWl0aSIv''@;'; put 'put ''PicsTFtMLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJWaWV0IiB0eXBlZmFjZT0iQXJpYWwiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLExbTC5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZh''@;'; put 'put ''Y2U9IlN5bGZhZW4iLz4nLExbTC5sZW5ndGhdPSI8L2E6bWlub3JGb250PiIsTFtMLmxlbmd0aF09IjwvYTpmb250U2NoZW1lPiIsTFtMLmxlbmd0aF09JzxhOmZtdFNjaGVtZSBuYW1lPSJPZmZpY2UiPicsTFtMLmxlbmd0aF09IjxhOmZpbGxTdHlsZUxzdD4iLExbTC5sZW5ndGhdPSc8YTpz''@;'; put 'put ''b2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPicsTFtMLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxMW0wubGVuZ3RoXT0iPGE6Z3NMc3Q+IixMW0wubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJw''@;'; put 'put ''aENsciI+PGE6dGludCB2YWw9IjUwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxMW0wubGVuZ3RoXT0nPGE6Z3MgcG9zPSIzNTAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIzNzAwMCIvPjxhOnNhdE1vZCB2YWw9''@;'; put 'put ''IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsTFtMLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjE1MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxMW0wubGVu''@;'; put 'put ''Z3RoXT0iPC9hOmdzTHN0PiIsTFtMLmxlbmd0aF09JzxhOmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjEiLz4nLExbTC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixMW0wubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLExbTC5sZW5ndGhdPSI8YTpnc0xzdD4iLExb''@;'; put 'put ''TC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMTAwMDAwIi8+PGE6c2hhZGUgdmFsPSIxMDAwMDAiLz48YTpzYXRNb2QgdmFsPSIxMzAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLExbTC5sZW5ndGhdPSc8YTpncyBwb3M9''@;'; put 'put ''IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxMW0wubGVuZ3RoXT0iPC9hOmdzTHN0PiIsTFtMLmxlbmd0aF09Jzxh''@;'; put 'put ''OmxpbiBhbmc9IjE2MjAwMDAwIiBzY2FsZWQ9IjAiLz4nLExbTC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixMW0wubGVuZ3RoXT0iPC9hOmZpbGxTdHlsZUxzdD4iLExbTC5sZW5ndGhdPSI8YTpsblN0eWxlTHN0PiIsTFtMLmxlbmd0aF09JzxhOmxuIHc9Ijk1MjUiIGNhcD0iZmxhdCIgY21w''@;'; put 'put ''ZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSI5NTAwMCIvPjxhOnNhdE1vZCB2YWw9IjEwNTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPics''@;'; put 'put ''TFtMLmxlbmd0aF09JzxhOmxuIHc9IjI1NDAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxMW0wubGVuZ3RoXT0nPGE6''@;'; put 'put ''bG4gdz0iMzgxMDAiIGNhcD0iZmxhdCIgY21wZD0ic25nIiBhbGduPSJjdHIiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLExbTC5sZW5ndGhdPSI8L2E6bG5TdHlsZUxzdD4iLExb''@;'; put 'put ''TC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZUxzdD4iLExbTC5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLExbTC5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixMW0wubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMDAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRo''@;'; put 'put ''U2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzgwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicsTFtMLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixMW0wubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIsTFtMLmxlbmd0aF09IjxhOmVmZmVj''@;'; put 'put ''dFN0eWxlPiIsTFtMLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLExbTC5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAw''@;'; put 'put ''MCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxMW0wubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLExbTC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixMW0wubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixMW0wubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIsTFtMLmxlbmd0aF09Jzxh''@;'; put 'put ''Om91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjMwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM1MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLExbTC5sZW5ndGhdPSI8L2E6ZWZm''@;'; put 'put ''ZWN0THN0PiIsTFtMLmxlbmd0aF09JzxhOnNjZW5lM2Q+PGE6Y2FtZXJhIHByc3Q9Im9ydGhvZ3JhcGhpY0Zyb250Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMCIvPjwvYTpjYW1lcmE+PGE6bGlnaHRSaWcgcmlnPSJ0aHJlZVB0IiBkaXI9InQiPjxhOnJvdCBsYXQ9IjAiIGxvbj0i''@;'; put 'put ''MCIgcmV2PSIxMjAwMDAwIi8+PC9hOmxpZ2h0UmlnPjwvYTpzY2VuZTNkPicsTFtMLmxlbmd0aF09JzxhOnNwM2Q+PGE6YmV2ZWxUIHc9IjYzNTAwIiBoPSIyNTQwMCIvPjwvYTpzcDNkPicsTFtMLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLExbTC5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5''@;'; put 'put ''bGVMc3Q+IixMW0wubGVuZ3RoXT0iPGE6YmdGaWxsU3R5bGVMc3Q+IixMW0wubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLExbTC5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicsTFtMLmxlbmd0aF09''@;'; put 'put ''IjxhOmdzTHN0PiIsTFtMLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI0MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicsTFtMLmxlbmd0aF09JzxhOmdzIHBvcz0iNDAwMDAiPjxh''@;'; put 'put ''OnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDUwMDAiLz48YTpzaGFkZSB2YWw9Ijk5MDAwIi8+PGE6c2F0TW9kIHZhbD0iMzUwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxMW0wubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBo''@;'; put 'put ''Q2xyIj48YTpzaGFkZSB2YWw9IjIwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjU1MDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxMW0wubGVuZ3RoXT0iPC9hOmdzTHN0PiIsTFtMLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSItODAw''@;'; put 'put ''MDAiIHI9IjUwMDAwIiBiPSIxODAwMDAiLz48L2E6cGF0aD4nLExbTC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixMW0wubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLExbTC5sZW5ndGhdPSI8YTpnc0xzdD4iLExbTC5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNj''@;'; put 'put ''aGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iODAwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLExbTC5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iMzAwMDAi''@;'; put 'put ''Lz48YTpzYXRNb2QgdmFsPSIyMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLExbTC5sZW5ndGhdPSI8L2E6Z3NMc3Q+IixMW0wubGVuZ3RoXT0nPGE6cGF0aCBwYXRoPSJjaXJjbGUiPjxhOmZpbGxUb1JlY3QgbD0iNTAwMDAiIHQ9IjUwMDAwIiByPSI1MDAwMCIgYj0iNTAwMDAiLz48''@;'; put 'put ''L2E6cGF0aD4nLExbTC5sZW5ndGhdPSI8L2E6Z3JhZEZpbGw+IixMW0wubGVuZ3RoXT0iPC9hOmJnRmlsbFN0eWxlTHN0PiIsTFtMLmxlbmd0aF09IjwvYTpmbXRTY2hlbWU+IixMW0wubGVuZ3RoXT0iPC9hOnRoZW1lRWxlbWVudHM+IixMW0wubGVuZ3RoXT0iPGE6b2JqZWN0RGVmYXVsdHM+''@;'; put 'put ''IixMW0wubGVuZ3RoXT0iPGE6c3BEZWY+IixMW0wubGVuZ3RoXT0nPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmxuUmVmPjxhOmZpbGxSZWYgaWR4PSIzIj48YTpzY2hlbWVD''@;'; put 'put ''bHIgdmFsPSJhY2NlbnQxIi8+PC9hOmZpbGxSZWY+PGE6ZWZmZWN0UmVmIGlkeD0iMiI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9Im1pbm9yIj48YTpzY2hlbWVDbHIgdmFsPSJsdDEiLz48L2E6Zm9udFJlZj48L2E6c3R5bGU+JyxM''@;'; put 'put ''W0wubGVuZ3RoXT0iPC9hOnNwRGVmPiIsTFtMLmxlbmd0aF09IjxhOmxuRGVmPiIsTFtMLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMiI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxs''@;'; put 'put ''UmVmIGlkeD0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjEiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0idHgxIi8+PC9h''@;'; put 'put ''OmZvbnRSZWY+PC9hOnN0eWxlPicsTFtMLmxlbmd0aF09IjwvYTpsbkRlZj4iLExbTC5sZW5ndGhdPSI8L2E6b2JqZWN0RGVmYXVsdHM+IixMW0wubGVuZ3RoXT0iPGE6ZXh0cmFDbHJTY2hlbWVMc3QvPiIsTFtMLmxlbmd0aF09IjwvYTp0aGVtZT4iLEwuam9pbigiIil9ZnVuY3Rpb24gVTko''@;'; put 'put ''eSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDIpLEw9eS5yZWFkX3NoaWZ0KDIpLTQsWD1bUF07c3dpdGNoKFApe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6WFsxXT1mdW5jdGlvbiBndyh5KXt2YXIgUD17fTtzd2l0Y2goUC54Y2xyVHlw''@;'; put 'put ''ZT15LnJlYWRfc2hpZnQoMiksUC5uVGludFNoYWRlPXkucmVhZF9zaGlmdCgyKSxQLnhjbHJUeXBlKXtjYXNlIDA6Y2FzZSA0OnkubCs9NDticmVhaztjYXNlIDE6UC54Y2xyVmFsdWU9ZnVuY3Rpb24gUU4oeSxQKXtyZXR1cm4gcGwoeSxQKX0oeSw0KTticmVhaztjYXNlIDI6UC54Y2xyVmFs''@;'; put 'put ''dWU9UzIoeSk7YnJlYWs7Y2FzZSAzOlAueGNsclZhbHVlPWZ1bmN0aW9uIGFrKHkpe3JldHVybiB5LnJlYWRfc2hpZnQoNCl9KHkpfXJldHVybiB5LmwrPTgsUH0oeSk7YnJlYWs7Y2FzZSA2OlhbMV09ZnVuY3Rpb24gWGYoeSxQKXtyZXR1cm4gcGwoeSxQKX0oeSxMKTticmVhaztjYXNlIDE0''@;'; put 'put ''OmNhc2UgMTU6WFsxXT15LnJlYWRfc2hpZnQoMT09PUw/MToyKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIEV4dFByb3AgdHlwZTogIitQKyIgIitMKX1yZXR1cm4gWH1mdW5jdGlvbiBsayh5LFApe1AuZm9yRWFjaChmdW5jdGlvbihMKXtzd2l0Y2goTFsw''@;'; put 'put ''XSl7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpicmVhaztjYXNlIDEzOnkuZm9udCYmeS5mb250LmNvbG9yJiZBcnJheS5pc0FycmF5KExbMV0ueGNsclZhbHVlKSYmKHkuZm9udC5jb2xvci5yZ2I9TTEo''@;'; put 'put ''TFsxXS54Y2xyVmFsdWUpKX19KX1mdW5jdGlvbiBJbyh5KXtyZXR1cm4geS85MTQ0MDAqQTJ9ZnVuY3Rpb24gY2soeSxQKXt2YXIgTD17fTtpZih5LnBvcylMLng9SW8oeS5wb3MueCksTC55PUlvKHkucG9zLnkpO2Vsc2V7aWYoIXkuZnJvbSl0aHJvdyJiYWQgYW5jaG9yIHN0YXJ0IjtMLnI9''@;'; put 'put ''eS5mcm9tLnJ8fDAsTC5jPXkuZnJvbS5jfHwwLHkuZnJvbS5jT2ZmJiYoTC54PUlvKHkuZnJvbS5jT2ZmKSkseS5mcm9tLnJPZmYmJihMLnk9SW8oeS5mcm9tLnJPZmYpKX1pZih5LmV4dClMLnc9SW8oeS5leHQueCksTC5oPUlvKHkuZXh0LnkpO2Vsc2V7aWYoIXkudG8pdGhyb3ciYmFkIGFu''@;'; put 'put ''Y2hvciBlbmQiO0wuQz15LnRvLmMsTC5SPXkudG8ucix5LnRvLmNPZmYmJihMLlg9SW8oeS50by5jT2ZmKSkseS50by5yT2ZmJiYoTC5ZPUlvKHkudG8uck9mZikpfXJldHVybiBMfWZ1bmN0aW9uIEhnKHksUCl7dmFyIEw9e3g6LTEseTotMSx3Oi0xLGg6LTF9O2lmKHkucG9zKUwueD1Jbyh5''@;'; put 'put ''LnBvcy54KSxMLnk9SW8oeS5wb3MueSk7ZWxzZXtpZigheS5mcm9tKXRocm93ImJhZCBhbmNob3Igc3RhcnQiO0wueD1WZyhQLHkuZnJvbS5jLCJDIikrSW8oeS5mcm9tLmNPZmYpLEwueT1WZyhQLHkuZnJvbS5yLCJSIikrSW8oeS5mcm9tLnJPZmYpfWlmKHkuZXh0KUwudz1Jbyh5LmV4dC54''@;'; put 'put ''KSxMLmg9SW8oeS5leHQueSk7ZWxzZXtpZigheS50byl0aHJvdyJiYWQgYW5jaG9yIGVuZCI7TC53PVZnKFAseS50by5jLCJDIikrSW8oeS50by5jT2ZmKS1MLngsTC5oPVZnKFAseS50by5yLCJSIikrSW8oeS50by5yT2ZmKS1MLnl9cmV0dXJuIEx9ZnVuY3Rpb24gbXcoeSxQKXt2YXIgTD17''@;'; put 'put ''cjotMSxjOi0xLHg6LTEseTotMSxSOi0xLEM6LTEsWDotMSxZOi0xfTtzd2l0Y2goeS50eXBlKXtjYXNlInR3b0NlbGxBbmNob3IiOkwucj15LmZyb20ucixMLnk9SW8oeS5mcm9tLnJPZmYpLEwuUj15LnRvLnIsTC5ZPUlvKHkudG8uck9mZiksTC5jPXkuZnJvbS5jLEwueD1Jbyh5LmZyb20u''@;'; put 'put ''Y09mZiksTC5DPXkudG8uYyxMLlg9SW8oeS50by5jT2ZmKTticmVhaztjYXNlIm9uZUNlbGxBbmNob3IiOkwucj15LmZyb20ucixMLnk9SW8oeS5mcm9tLnJPZmYpO3ZhciBYPUkyKFAsTC5yLEwueStJbyh5LmV4dC55KSk7TC5SPVhbMF0sTC5ZPVhbMV0sTC5jPXkuZnJvbS5jLEwueD1Jbyh5''@;'; put 'put ''LmZyb20uY09mZik7dmFyIG5lPUpmKFAsTC5jLEwueCtJbyh5LmV4dC54KSk7TC5DPW5lWzBdLEwuWD1uZVsxXTticmVhaztjYXNlImFic29sdXRlQW5jaG9yIjp2YXIgZmU9STIoUCwwLElvKHkucG9zLnkpKTtMLnI9ZmVbMF0sTC55PWZlWzFdO3ZhciBiZT1JMihQLEwucixMLnkrSW8oeS5l''@;'; put 'put ''eHQueSkpO0wuUj1iZVswXSxMLlk9YmVbMV07dmFyIHZlPUkyKFAsMCxJbyh5LnBvcy54KSk7TC5jPXZlWzBdLEwueD12ZVsxXTt2YXIgeWU9STIoUCxMLmMsTC54K0lvKHkuZXh0LngpKTtMLkM9eWVbMF0sTC5YPXllWzFdO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIGFuY2hvciB0eXBlICIr''@;'; put 'put ''eS50eXBlfXJldHVybiBMfWZ1bmN0aW9uIHVrKHksUCl7dmFyIEw9eS50cmltKCkuc3BsaXQoL1xzKixccyovKTtQWyIhcG9zIl09e2M6K0xbMF0seDorTFsxXSxyOitMWzJdLHk6K0xbM10sQzorTFs0XSxYOitMWzVdLFI6K0xbNl0sWTorTFs3XX19ZnVuY3Rpb24gdEgoeSxQLEwpe3ZhciBY''@;'; put 'put ''PS0xO2lmKG51bGwhPXkuUnx8bnVsbCE9eS5DKVg9MDtlbHNle2lmKG51bGw9PXkueHx8bnVsbD09eS55fHxudWxsPT15Lnd8fG51bGw9PXkuaCl0aHJvdyJjYW5ub3QgcGFyc2UgYW5jaG9yICIrSlNPTi5zdHJpbmdpZnkoeSk7WD0xKzIqISh5LmN8fHkucil9aWYoWCE9UCl7c3dpdGNoKFAp''@;'; put 'put ''e2Nhc2UgMDpjYXNlIDE6aWYoMyE9WClicmVhazt2YXIgbmU9SmYoTCx5LmN8fDAseS54fHwwKTt5LmM9bmVbMF0seS54PW5lWzFdO3ZhciBmZT1JMihMLHkucnx8MCx5Lnl8fDApO3kucj1mZVswXSx5Lnk9ZmVbMV07YnJlYWs7Y2FzZSAzOmlmKDM9PVgpYnJlYWs7dmFyIGJlPXkuY3x8MCx2''@;'; put 'put ''ZT15Lnh8fDA7ZGVsZXRlIHkuYyxkZWxldGUgeS54LHkueD0oYmU/WjkoTCxiZSk6MCkrdmU7dmFyIHllPXkucnx8MCxWZT15Lnl8fDA7ZGVsZXRlIHkucixkZWxldGUgeS55LHkueT0oeWU/VnAoTCx5ZSk6MCkrVmU7YnJlYWs7ZGVmYXVsdDp0aHJvdyJjb252ZXJ0X2FuY2hvciB1bnJlY29n''@;'; put 'put ''bml6ZWQgdHlwZSAiK1B9c3dpdGNoKFApe2Nhc2UgMDppZigwPT1YKWJyZWFrO3ZhciB6ZT1KZihMLHkuY3x8MCwoeS54fHwwKSt5LncpO2RlbGV0ZSB5LncseS5DPXplWzBdLHkuWD16ZVsxXTt2YXIgV2U9STIoTCx5LnJ8fDAsKHkueXx8MCkreS5oKTtkZWxldGUgeS5oLHkuUj1XZVswXSx5''@;'; put 'put ''Llk9V2VbMV07YnJlYWs7Y2FzZSAxOmNhc2UgMzppZigwIT1YKWJyZWFrO3ZhciBydD15LkN8fDAsbHQ9eS5YfHwwO2RlbGV0ZSB5LkMsZGVsZXRlIHkuWCx5Lnc9WjkoTCxydCkrbHQtKHkuYz9aOShMLHkuYyk6MCktKHkueHx8MCk7dmFyIEN0PXkuUnx8MCxhdD15Lll8fDA7ZGVsZXRlIHku''@;'; put 'put ''UixkZWxldGUgeS5ZLHkuaD1WcChMLEN0KSthdC0oeS5yP1ZwKEwseS5yKTowKS0oeS55fHwwKTticmVhaztkZWZhdWx0OnRocm93ImNvbnZlcnRfYW5jaG9yIHVucmVjb2duaXplZCB0eXBlICIrUH19fWZ1bmN0aW9uIG5IKHkpe3ZhciBQPVt5LmN8fDAsTWF0aC5yb3VuZCh5Lnh8fDApLHku''@;'; put 'put ''cnx8MCxNYXRoLnJvdW5kKHkueXx8MCldO3JldHVybihQPVAuY29uY2F0KHkuaCYmeS53P1tQWzBdLE1hdGgucm91bmQoUFsxXSt5LncpLFBbMl0sTWF0aC5yb3VuZChQWzNdK3kuaCldOlt5LkN8fDAsTWF0aC5yb3VuZCh5Llh8fDApLHkuUnx8MCxNYXRoLnJvdW5kKHkuWXx8MCldKSkuam9p''@;'; put 'put ''bigiLCAiKX1mdW5jdGlvbiBWcCh5LFApe2lmKCF5KXJldHVybiAwO2Zvcih2YXIgTD0wOy0tUD49MDspe3ZhciBYPSgoeVsiIXJvd3MiXXx8W10pW1BdfHx7fSkuaHB4O251bGw9PVgmJihYPSgoeVsiIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51bGw9PVgmJihYPTI0KSxM''@;'; put 'put ''Kz1YfXJldHVybiBMfWZ1bmN0aW9uIFo5KHksUCl7aWYoIXkpcmV0dXJuIDA7Zm9yKHZhciBMPTA7LS1QPj0wOyl7dmFyIFg9KCh5WyIhY29scyJdfHxbXSlbUF18fHt9KS53cHg7aWYobnVsbD09WCYmKFg9KCh5WyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCksbnVsbD09WCl7''@;'; put 'put ''dmFyIG5lPXt3Y2g6OC40M307XzAobmUpLHlbIiFjb2xzIl0mJih5WyIhY29scyJdW1BdPW5lKSxYPW5lLndweH1MKz1YfXJldHVybiBMfWZ1bmN0aW9uIFZnKHksUCxMKXtyZXR1cm4iQyI9PUw/WjkoeSxQKTpWcCh5LFApfWZ1bmN0aW9uIEkyKHksUCxMKXt2YXIgWD1bUCxMXTtpZigheSly''@;'; put 'put ''ZXR1cm4gWDtmb3IoOzspe3ZhciBuZT0oeVsiIXJvd3MiXXx8W10pW1hbMF1dfHx7fTtpZihuZS5oaWRkZW4pKytYWzBdO2Vsc2V7dmFyIGZlPW5lLmhweDtpZihudWxsPT1mZSYmKGZlPSgoeVsiIXNoZWV0Rm9ybWF0Il18fHt9KS5yb3d8fHt9KS5ocHgpLG51bGw9PWZlJiYoZmU9Y2QoMTUp''@;'; put 'put ''KSxYWzFdPGZlKWJyZWFrO1hbMF0rKyxYWzFdLT1mZX19cmV0dXJuIFh9ZnVuY3Rpb24gSmYoeSxQLEwpe3ZhciBYPVtQLExdO2lmKCF5KXJldHVybiBYO2Zvcig7Oyl7dmFyIG5lPSh5WyIhY29scyJdfHxbXSlbWFswXV18fHt9O2lmKG5lLmhpZGRlbnx8MD09PW5lLndweCkrK1hbMF07ZWxz''@;'; put 'put ''ZXt2YXIgZmU9bmUud3B4O2lmKG51bGw9PWZlJiYoZmU9KCh5WyIhc2hlZXRGb3JtYXQiXXx8e30pLmNvbHx8e30pLndweCksbnVsbD09ZmUpe3ZhciBiZT17d2NoOjguNDN9O18wKGJlKSx5WyIhY29scyJdJiYoeVsiIWNvbHMiXVtYWzBdXT1iZSksZmU9YmUud3B4fWlmKFhbMV08ZmUpYnJl''@;'; put 'put ''YWs7WFswXSsrLFhbMV0tPWZlfX1yZXR1cm4gWH1mdW5jdGlvbiBuMCh5KXtyZXR1cm4oIjAwMDAwMCIrKCJudW1iZXIiPT10eXBlb2YgeT95LnRvU3RyaW5nKDE2KTp5KSkuc2xpY2UoLTYpfWZ1bmN0aW9uIFQxKHksUCxMKXt2YXIgWD0ic3RyaW5nIj09dHlwZW9mIFA/ISFMOiEhUDsic3Ry''@;'; put 'put ''aW5nIiE9dHlwZW9mIFAmJihQPSJjb2xvciIpO3ZhciBuZT0iPCIrUCsiICI7cmV0dXJuIHkuYXV0bz9uZSsnYXV0bz0iMSIvPic6eS5pbmRleCYmbnVsbD09eS5yZ2I/bmUrJ2luZGV4ZWQ9IicreS5pbmRleCsnIi8+JzpudWxsIT15LnRoZW1lP25lKyd0aGVtZT0iJyt5LnRoZW1lKyciJyso''@;'; put 'put ''eS50aW50PycgdGludD0iJyt5LnRpbnQrJyInOiIiKSsiLz4iOm51bGwhPXkucmdiP25lKydyZ2I9IicrKFg/IkZGIjoiIikrbjAoeS5yZ2IpKyciLz4nOm5lKyIvPiJ9ZnVuY3Rpb24gQnAoeSxQKXtpZigheXx8bnVsbD09eS5yZ2IpcmV0dXJuIFA7Zm9yKHZhciBMPSgiMDAwMDAwIit5LnJn''@;'; put 'put ''Yi50b1N0cmluZygxNikpLnNsaWNlKC02KSxYPVtMLnNsaWNlKDAsMiksTC5zbGljZSgyLDQpLEwuc2xpY2UoNCw2KV0ubWFwKGZ1bmN0aW9uKGJlKXtyZXR1cm4gcGFyc2VJbnQoYmUsMTYpfSksbmU9MDtuZTxodS5sZW5ndGg7KytuZSl7dmFyIGZlPWh1W25lXTtpZihmZVswXT09WFswXSYm''@;'; put 'put ''ZmVbMV09PVhbMV0mJmZlWzJdPT1YWzJdKXJldHVybiBuZX1yZXR1cm4gaHUubGVuZ3RoPDY0PyhodS5wdXNoKFtYWzBdLFhbMV0sWFsyXV0pLGh1Lmxlbmd0aC0xKTpQfWZ1bmN0aW9uIHkwKHkpe3ZhciBQPVsiIiwiIiwiIl07aWYoIXkpcmV0dXJuW107dmFyIEw9IiIsWD15JiZ5LnM/ZnVu''@;'; put 'put ''Y3Rpb24gWTkoeSl7dmFyIFA9WyIiLCIiXTtpZigheSlyZXR1cm4gUDtpZih5LnN6JiYoUFswXSs9IiYiK3kuc3osUFsxXT0iJjEyIitQWzFdKSx5Lm5hbWUmJihQWzBdKz0nJiInK3kubmFtZSsnLFJlZ3VsYXIiJyxQWzFdPScmIi0sUmVndWxhciInK1BbMV0pLHkuYm9sZCYmKFBbMF0rPSIm''@;'; put 'put ''QiIsUFsxXT0iJkIiK1BbMV0pLHkudW5kZXJsaW5lKXt2YXIgTD0yPT15LnVuZGVybGluZT8iJkUiOiImVSI7UFswXSs9TCxQWzFdPUwrUFsxXX1yZXR1cm4geS5pdGFsaWMmJihQWzBdKz0iJkkiLFBbMV09IiZJIitQWzFdKSx5LmNvbG9yJiZudWxsIT15LmNvbG9yLnJnYiYmKFBbMF0rPSIm''@;'; put 'put ''SyIrbjAoeS5jb2xvci5yZ2IpLFBbMV0rPSImSzAwMDAwMCIpLHkuc3RyaWtlJiYoUFswXSs9IiZTIixQWzFdPSImUyIrUFsxXSksInN1cGVyIj09eS52YWxpZ24mJihQWzBdKz0iJlgiLFBbMV09IiZYIitQWzFdKSwic3ViIj09eS52YWxpZ24mJihQWzBdKz0iJlkiLFBbMV09IiZZIitQWzFd''@;'; put 'put ''KSxQfSh5LnMpOlsiIiwiIl07cmV0dXJuInN0cmluZyI9PXR5cGVvZiB5P1t5LHkseV06bnVsbCE9eS5maXJzdHx8bnVsbCE9eS5ldmVufHxudWxsIT15Lm9kZD8obnVsbCE9eS5vZGQmJihQWzBdPXkwKHkub2RkKVswXSksdm9pZCAwPT09eS5maXJzdCYmUFswXSYmKFBbMV09UFswXSksbnVs''@;'; put 'put ''bCE9eS5maXJzdCYmKFBbMV09eTAoeS5maXJzdClbMF0pLG51bGwhPXkuZXZlbiYmKFBbMl09eTAoeS5ldmVuKVswXSksUCk6eS5sZWZ0fHx5LmNlbnRlcnx8eS5yaWdodD8oeS5sZWZ0JiYoTCs9IiZMIit5MCh5LmxlZnQpWzBdKSx5LmNlbnRlciYmKEwrPSImQyIreTAoeS5jZW50ZXIpWzBd''@;'; put 'put ''KSx5LnJpZ2h0JiYoTCs9IiZSIit5MCh5LnJpZ2h0KVswXSksW0wsTCxMXSk6bnVsbCE9eS52P1tMPVhbMF0reS52LnJlcGxhY2UoLyYvZywiJiYiKStYWzFdLEwsTF06bnVsbCE9eS53P1tMPVhbMF0reS53K1hbMV0sTCxMXTpBcnJheS5pc0FycmF5KHkuUik/KHkuUi5mb3JFYWNoKGZ1bmN0''@;'; put 'put ''aW9uKG5lKXtMKz15MChuZSlbMF19KSxbTCxMLExdKTpbXX12YXIgbjY9ezE6IkxldHRlciIsMzoiVGFibG9pZCIsNToiTGVnYWwiLDc6IkV4ZWN1dGl2ZSIsODoiQTMiLDk6IkE0IiwxMToiQTUiLDEyOiJCNCIsMTM6IkI1IiwxNDoiRm9saW8iLDIwOiJFbnZlbG9wZSIsMzc6Ik1vbmFyY2gi''@;'; put 'put ''LDcwOiJBNiJ9LHJIPXdlKG42KTtTby5DT05OPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25zIjt2YXIgb0g9X3IoImV4dGVybmFsTGluayIsbnVsbCx7eG1sbnM6a2kubWFpblswXX0pO1NvLklN''@;'; put 'put ''Rz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9pbWFnZSIsU28uRFJBVz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kcmF3aW5nIjt2''@;'; put 'put ''YXIgYUg9e3Q6InRvcCIsY3RyOiJjZW50ZXIiLGI6ImJvdHRvbSIsanVzdDoidG9wIixkaXN0OiJ0b3AifSxCZz17Y3RyOiJjZW50ZXIiLGRpc3Q6ImNlbnRlciIsanVzdDoiY2VudGVyIixqdXN0TG93OiJjZW50ZXIiLGw6ImxlZnQiLHI6InJpZ2h0Iix0aGFpRGlzdDoiY2VudGVyIn07ZnVu''@;'; put 'put ''Y3Rpb24gY0goKXt2YXIgeT1bUG5dO3JldHVybiB5LnB1c2goJzx4ZHI6d3NEciB4bWxuczp4ZHI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9zcHJlYWRzaGVldERyYXdpbmciIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRz''@;'; put 'put ''Lm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIi8+JykseS5qb2luKCIiKX1mdW5jdGlvbiBtUSh5KXt2YXIgTCxQPXlbIiFkYXRhIl07cmV0dXJuImJhc2U2NCI9PT15WyIhZGF0YXR5cGUiXT8oKEw9UC5tYXRjaCgvXmRhdGE6LiosLykpJiYoUD1QLnNsaWNlKExbMF0ubGVuZ3RoKSksaWUuZGVj''@;'; put 'put ''b2RlKFApKTpQfVNvLlRBQkxFPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RhYmxlIjt2YXIgZEg9LzwoPzpcdys6KT9zaGFwZSg/OlteXHddW14+XSopPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/c2hhcGU+L2c7''@;'; put 'put ''ZnVuY3Rpb24gQ3coeSxQLEwsWCl7dmFyIG5lPVsyMTYwMCwyMTYwMF0sZmU9WyJtMCwwbDAiLG5lWzFdLG5lWzBdLG5lWzFdLG5lWzBdLCIweGUiXS5qb2luKCIsIiksYmU9W19yKCJ4bWwiLG51bGwseyJ4bWxuczp2IjpDbC52LCJ4bWxuczpvIjpDbC5vLCJ4bWxuczp4IjpDbC54LCJ4bWxu''@;'; put 'put ''czptdiI6Q2wubXZ9KS5yZXBsYWNlKC9cLz4vLCI+IiksX3IoIm86c2hhcGVsYXlvdXQiLF9yKCJvOmlkbWFwIixudWxsLHsidjpleHQiOiJlZGl0In0pLHsidjpleHQiOiJlZGl0In0pXSx2ZT0xMDI0KnkseWU9THx8W107eWUubGVuZ3RoPjAmJmJlLnB1c2goX3IoInY6c2hhcGV0eXBlIixb''@;'; put 'put ''X3IoInY6c3Ryb2tlIixudWxsLHtqb2luc3R5bGU6Im1pdGVyIn0pLF9yKCJ2OnBhdGgiLG51bGwse3NoYWRvd29rOiJmIixleHRydXNpb25vazoiZiIsc3Ryb2tlb2s6ImYiLGZpbGxvazoiZiIsIm86Y29ubmVjdHR5cGUiOiJyZWN0In0pLF9yKCJvOmxvY2siLG51bGwseyJ2OmV4dCI6ImVk''@;'; put 'put ''aXQiLHNoYXBldHlwZToidCJ9KV0uam9pbigiIikse2lkOiJfeDAwMDBfdDIwMSIsY29vcmRzaXplOm5lLmpvaW4oIiwiKSwibzpzcHQiOjIwMSxwYXRoOmZlfSkpLHllLmZvckVhY2goZnVuY3Rpb24oemUpeysrdmUsYmU9YmUuY29uY2F0KGZ1bmN0aW9uIGk2KHksUCl7dmFyIEw9e2lkOiJf''@;'; put 'put ''eDAwMDBfcyIrUCx0eXBlOiIjX3gwMDAwX3QyMDEiLHN0eWxlOiJtc28td3JhcC1zdHlsZTp0aWdodCJ9OygiUmFkaW8iPT15WyIhdHlwZSJdfHwiQ2hlY2tib3giPT15WyIhdHlwZSJdfHwiTGlzdCI9PXlbIiF0eXBlIl18fCJEcm9wIj09eVsiIXR5cGUiXSkmJihMLnN0cm9rZWQ9ImYiKSwi''@;'; put 'put ''TGFiZWwiPT15WyIhdHlwZSJdJiYoTC5maWxsZWQ9ImYiKTt2YXIgWD0iIjt5LnQmJlN3W3lbIiF0eXBlIl1dJiYoWD1Td1t5WyIhdHlwZSJdXS5yZXBsYWNlKC8jIyMjLyxicih5LnQpKSk7dmFyIG5lPVtdO3JldHVybiB5Lm1hY3JvJiZuZS5wdXNoKGNvKCJ4OkZtbGFNYWNybyIseS5tYWNy''@;'; put 'put ''bykpLHkubGluayYmbmUucHVzaChjbygieDpGbWxhTGluayIseS5saW5rKSkseS52YWwmJm5lLnB1c2goY28oIlJhZGlvIj09eVsiIXR5cGUiXXx8IkNoZWNrYm94Ij09eVsiIXR5cGUiXT8ieDpDaGVja2VkIjoieDpWYWwiLFN0cmluZyh5LnZhbCkpKSx5LnJlZiYmbmUucHVzaChjbygieDpG''@;'; put 'put ''bWxhUmFuZ2UiLHkucmVmKSkseS5zZWwmJiJMaXN0Ij09eVsiIXR5cGUiXSYmbmUucHVzaChjbygieDpTZWxUeXBlIix5LnNlbCkpLHkubWluJiZuZS5wdXNoKGNvKCJ4Ok1pbiIsU3RyaW5nKHkubWluKSkpLHkubWF4JiZuZS5wdXNoKGNvKCJ4Ok1heCIsU3RyaW5nKHkubWF4KSkpLHkuc3Rl''@;'; put 'put ''cCYmbmUucHVzaChjbygieDpJbmMiLFN0cmluZyh5LnN0ZXApKSkseS5wYWdlJiZuZS5wdXNoKGNvKCJ4OlBhZ2UiLFN0cmluZyh5LnBhZ2UpKSksW10uY29uY2F0KFsiPHY6c2hhcGUiK2F1KEwpKyI+Il0pLmNvbmNhdChNd1t5WyIhdHlwZSJdXXx8W10pLmNvbmNhdChbWF0pLmNvbmNhdChb''@;'; put 'put ''Jzx4OkNsaWVudERhdGEgT2JqZWN0VHlwZT0iJyt5WyIhdHlwZSJdKyciPicsY28oIng6QW5jaG9yIixuSCh5WyIhcG9zIl0pKSxjbygieDpQcmludE9iamVjdCIsIkZhbHNlIildKS5jb25jYXQobmUpLmNvbmNhdChoSFt5WyIhdHlwZSJdXXx8W10pLmNvbmNhdChbIjwveDpDbGllbnREYXRh''@;'; put 'put ''PiIsIjwvdjpzaGFwZT4iXSl9KHplLHZlKSl9KTt2YXIgVmU9UHx8W107cmV0dXJuIFZlLmxlbmd0aD4wJiZiZS5wdXNoKF9yKCJ2OnNoYXBldHlwZSIsW19yKCJ2OnN0cm9rZSIsbnVsbCx7am9pbnN0eWxlOiJtaXRlciJ9KSxfcigidjpwYXRoIixudWxsLHtncmFkaWVudHNoYXBlb2s6InQi''@;'; put 'put ''LCJvOmNvbm5lY3R0eXBlIjoicmVjdCJ9KV0uam9pbigiIikse2lkOiJfeDAwMDBfdDIwMiIsY29vcmRzaXplOm5lLmpvaW4oIiwiKSwibzpzcHQiOjIwMixwYXRoOmZlfSkpLFZlLmZvckVhY2goZnVuY3Rpb24oemUpeysrdmUsYmU9YmUuY29uY2F0KGZ1bmN0aW9uIEc5KHksUCxMKXt2YXIg''@;'; put 'put ''WD1rcyh5WzBdKSxuZT15WzFdLmZpbGx8fHt9O3lbMV0ucyYmKG5lPXt0eXBlOnlbMV0ucy5wYXR0ZXJuVHlwZXx8InNvbGlkIn0seVsxXS5zLmZnQ29sb3ImJihuZS5jb2xvcjI9bmUuY29sb3IxPSIjIituMCh5WzFdLnMuZmdDb2xvci5yZ2IpKSx5WzFdLnMuYmdDb2xvciYmKG5lLmNvbG9y''@;'; put 'put ''Mj0iIyIrbjAoeVsxXS5zLmJnQ29sb3IucmdiKSkpO3ZhciBmZT17Y29sb3IyOm5lLmNvbG9yMnx8IiNCRUZGODIiLHR5cGU6bmUudHlwZXx8ImdyYWRpZW50In07ImdyYWRpZW50Ij09ZmUudHlwZSYmKGZlLmFuZ2xlPSItMTgwIik7dmFyIGJlPSJncmFkaWVudCI9PWZlLnR5cGU/X3IoIm86''@;'; put 'put ''ZmlsbCIsbnVsbCx7dHlwZToiZ3JhZGllbnRVbnNjYWxlZCIsInY6ZXh0IjoidmlldyJ9KTpudWxsLHZlPV9yKCJ2OmZpbGwiLGJlLGZlKSx5ZT17fTt5WzFdLnNoYWRvdyYmKHlbMV0uc2hhZG93LmNvbG9yJiYoeWUuY29sb3I9eVsxXS5zaGFkb3cuY29sb3IpLHlbMV0uc2hhZG93Lm9uJiYo''@;'; put 'put ''eWUub249eVsxXS5zaGFkb3cub24pKSx5ZS5vYnNjdXJlZD0idCI7dmFyIFZlPSEwLHplPSEwLFdlPXlbMV1bIiFwb3MiXT9LdCh5WzFdWyIhcG9zIl0pOm51bGw7cmV0dXJuIFdlJiYoemU9bnVsbD09V2UuUiYmbnVsbD09V2UuQyYmbnVsbD09V2UuWCYmbnVsbD09V2UuWSxWZT0hV2UuciYm''@;'; put 'put ''IVdlLmMsdEgoV2UsMCxMKSksWyI8djpzaGFwZSIrYXUoe2lkOiJfeDAwMDBfcyIrUCx0eXBlOiIjX3gwMDAwX3QyMDIiLHN0eWxlOiJwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLWxlZnQ6ODBwdDttYXJnaW4tdG9wOjVwdDt3aWR0aDoxMDRwdDtoZWlnaHQ6NjRwdDt6LWluZGV4OjEwIiso''@;'; put 'put ''eVsxXS5oaWRkZW4/Ijt2aXNpYmlsaXR5OmhpZGRlbiI6IiIpLGZpbGxjb2xvcjpuZS5jb2xvcjF8fCIjRUNGQUQ0IixzdHJva2Vjb2xvcjooeVsxXS5zdHJva2V8fHt9KS5jb2xvcnx8IiNlZGVhYTEifSkrIj4iLHZlLF9yKCJ2OnNoYWRvdyIsbnVsbCx5ZSksX3IoInY6cGF0aCIsbnVsbCx7''@;'; put 'put ''Im86Y29ubmVjdHR5cGUiOiJub25lIn0pLCc8djp0ZXh0Ym94PjxkaXYgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+PC9kaXY+PC92OnRleHRib3g+JywnPHg6Q2xpZW50RGF0YSBPYmplY3RUeXBlPSJOb3RlIj4nLFZlPyI8eDpNb3ZlV2l0aENlbGxzLz4iOiIiLHplPyI8eDpTaXplV2l0aENl''@;'; put 'put ''bGxzLz4iOiIiLGNvKCJ4OkFuY2hvciIsV2U/bkgoV2UpOnlbMV0ucmF3YW5jaG9yfHxbWC5jKzEsMCxYLnIrMSwwLFguYyszLDIwLFgucis1LDIwXS5qb2luKCIsIikpLGNvKCJ4OkF1dG9GaWxsIiwiRmFsc2UiKSxjbygieDpSb3ciLFN0cmluZyhYLnIpKSxjbygieDpDb2x1bW4iLFN0cmlu''@;'; put 'put ''ZyhYLmMpKSx5WzFdLmhpZGRlbj8iIjoiPHg6VmlzaWJsZS8+IiwiPC94OkNsaWVudERhdGE+IiwiPC92OnNoYXBlPiJdfSh6ZSx2ZSxYKSl9KSxiZS5wdXNoKCI8L3htbD4iKSxiZS5qb2luKCIiKX12YXIgaEg9e0J1dHRvbjpbIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4''@;'; put 'put ''OlRleHRIQWxpZ24+Q2VudGVyPC94OlRleHRIQWxpZ24+IiwiPHg6VGV4dFZBbGlnbj5DZW50ZXI8L3g6VGV4dFZBbGlnbj4iXSxHQm94OlsiPHg6U2l6ZVdpdGhDZWxscy8+IiwiPHg6QXV0b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6Tm9UaHJlZUQvPiJdLExhYmVsOlsiPHg6QXV0''@;'; put 'put ''b0ZpbGw+RmFsc2U8L3g6QXV0b0ZpbGw+IiwiPHg6QXV0b0xpbmU+RmFsc2U8L3g6QXV0b0xpbmU+Il0sUmFkaW86WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvRmlsbD5GYWxzZTwveDpBdXRvRmlsbD4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpUZXh0VkFs''@;'; put 'put ''aWduPkNlbnRlcjwveDpUZXh0VkFsaWduPiIsIjx4Ok5vVGhyZWVELz4iXSxDaGVja2JveDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9GaWxsPkZhbHNlPC94OkF1dG9GaWxsPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4OlRleHRWQWxpZ24+Q2VudGVyPC94''@;'; put 'put ''OlRleHRWQWxpZ24+IiwiPHg6Tm9UaHJlZUQvPiJdLERyb3A6WyI8eDpTaXplV2l0aENlbGxzLz4iLCI8eDpBdXRvTGluZT5GYWxzZTwveDpBdXRvTGluZT4iLCI8eDpOb1RocmVlRDIvPiIsIjx4OlNlbFR5cGU+U2luZ2xlPC94OlNlbFR5cGU+IiwiPHg6RHJvcFN0eWxlPkNvbWJvPC94OkRy''@;'; put 'put ''b3BTdHlsZT4iLCI8eDpMQ1Q+Tm9ybWFsPC94OkxDVD4iLCI8eDpEcm9wTGluZXM+NDwveDpEcm9wTGluZXM+Il0sTGlzdDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4OkF1dG9MaW5lPkZhbHNlPC94OkF1dG9MaW5lPiIsIjx4Ok5vVGhyZWVEMi8+IiwiPHg6TENUPk5vcm1hbDwveDpMQ1Q+''@;'; put 'put ''IiwiPHg6VmFsPjA8L3g6VmFsPiIsIjx4Ok1pbj4wPC94Ok1pbj4iLCI8eDpNYXg+NTwveDpNYXg+IiwiPHg6SW5jPjE8L3g6SW5jPiIsIjx4OlBhZ2U+NDwveDpQYWdlPiIsIjx4OkR4PjE1PC94OkR4PiJdLFNjcm9sbDpbIjx4OlNpemVXaXRoQ2VsbHMvPiIsIjx4Okhvcml6Lz4iLCI8eDpE''@;'; put 'put ''eD4xNTwveDpEeD4iXSxTcGluOlsiPHg6RHg+MTU8L3g6RHg+Il19LFN3PXtCdXR0b246Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Zm9udCBmYWNlPSdDYWxpYnJpJyBz''@;'; put 'put ''aXplPScyNDAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsR0JveDoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGljaz0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdM''@;'; put 'put ''dWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsUmFkaW86Ijx2OnRleHRib3ggc3R5bGU9J21zby1kaXJlY3Rpb24tYWx0OmF1dG8nIG86c2luZ2xlY2xpY2s9J2YnPjxkaXYgc3R5bGU9J3RleHQtYWxpZ246bGVm''@;'; put 'put ''dCc+PGZvbnQgZmFjZT0nTHVjaWRhIEdyYW5kZScgc2l6ZT0nMjYwJyBjb2xvcj0nYXV0byc+IyMjIzwvZm9udD48L2Rpdj48L3Y6dGV4dGJveD4iLExhYmVsOiI8djp0ZXh0Ym94IHN0eWxlPSdtc28tZGlyZWN0aW9uLWFsdDphdXRvJyBvOnNpbmdsZWNsaWNrPSdmJz48ZGl2IHN0eWxlPSd0''@;'; put 'put ''ZXh0LWFsaWduOmxlZnQnPjxmb250IGZhY2U9J0x1Y2lkYSBHcmFuZGUnIHNpemU9JzI2MCcgY29sb3I9JyMwMDAwMDAnPiMjIyM8L2ZvbnQ+PC9kaXY+PC92OnRleHRib3g+IixDaGVja2JveDoiPHY6dGV4dGJveCBzdHlsZT0nbXNvLWRpcmVjdGlvbi1hbHQ6YXV0bycgbzpzaW5nbGVjbGlj''@;'; put 'put ''az0nZic+PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjpsZWZ0Jz48Zm9udCBmYWNlPSdMdWNpZGEgR3JhbmRlJyBzaXplPScyNjAnIGNvbG9yPScjMDAwMDAwJz4jIyMjPC9mb250PjwvZGl2Pjwvdjp0ZXh0Ym94PiIsc2hlZXRqczoiZGFmdXEifSxNdz17QnV0dG9uOlsnPHY6ZmlsbCBjb2xvcjI9''@;'; put 'put ''IiNmMGYwZjAgWzY3XSIgbzpkZXRlY3Rtb3VzZWNsaWNrPSJ0Ii8+JywnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxHQm94OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxEcm9wOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQi''@;'; put 'put ''IHRleHQ9InQiLz4nXSxMaXN0OlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxTcGluOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiIHRleHQ9InQiLz4nXSxTY3JvbGw6Wyc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIg''@;'; put 'put ''dGV4dD0idCIvPiddLExhYmVsOlsnPG86bG9jayB2OmV4dD0iZWRpdCIgcm90YXRpb249InQiLz4nXSxSYWRpbzpbJzx2OnBhdGggc2hhZG93b2s9InQiIHN0cm9rZW9rPSJ0IiBmaWxsb2s9InQiLz4nLCc8bzpsb2NrIHY6ZXh0PSJlZGl0IiByb3RhdGlvbj0idCIvPiddLENoZWNrYm94Olsn''@;'; put 'put ''PHY6cGF0aCBzaGFkb3dvaz0idCIgc3Ryb2tlb2s9InQiIGZpbGxvaz0idCIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10sc2hlZXRqczpbXX07ZnVuY3Rpb24gZmsoeSxQLEwsWCl7dmFyIG5lPXsiIWlkIjp7fX0sZmU9W19yKCJ4bWwiLG51bGwseyJ4bWxuczp2''@;'; put 'put ''IjpDbC52LCJ4bWxuczpvIjpDbC5vLCJ4bWxuczp4IjpDbC54fSkucmVwbGFjZSgvXC8+LywiPiIpLF9yKCJvOnNoYXBlbGF5b3V0IixfcigibzppZG1hcCIsbnVsbCx7InY6ZXh0IjoiZWRpdCIsZGF0YToxfSkseyJ2OmV4dCI6ImVkaXQifSksJzx2OnNoYXBldHlwZSBpZD0iX3gwMDAwX3Q3''@;'; put 'put ''NSIgY29vcmRzaXplPSIyMTYwMCwyMTYwMCIgbzpzcHQ9Ijc1IiBvOnByZWZlcnJlbGF0aXZlPSJ0IiBwYXRoPSJtQDRANWxANEAxMUA5QDExQDlANXhlIiBmaWxsZWQ9ImYiIHN0cm9rZWQ9ImYiPicsJzx2OnN0cm9rZSBqb2luc3R5bGU9Im1pdGVyIi8+JywiPHY6Zm9ybXVsYXM+IiwnPHY6''@;'; put 'put ''ZiBlcW49ImlmIGxpbmVEcmF3biBwaXhlbExpbmVXaWR0aCAwIi8+JywnPHY6ZiBlcW49InN1bSBAMCAxIDAiLz4nLCc8djpmIGVxbj0ic3VtIDAgMCBAMSIvPicsJzx2OmYgZXFuPSJwcm9kIEAyIDEgMiIvPicsJzx2OmYgZXFuPSJwcm9kIEAzIDIxNjAwIHBpeGVsV2lkdGgiLz4nLCc8djpm''@;'; put 'put ''IGVxbj0icHJvZCBAMyAyMTYwMCBwaXhlbEhlaWdodCIvPicsJzx2OmYgZXFuPSJzdW0gQDAgMCAxIi8+JywnPHY6ZiBlcW49InByb2QgQDYgMSAyIi8+JywnPHY6ZiBlcW49InByb2QgQDcgMjE2MDAgcGl4ZWxXaWR0aCIvPicsJzx2OmYgZXFuPSJzdW0gQDggMjE2MDAgMCIvPicsJzx2OmYg''@;'; put 'put ''ZXFuPSJwcm9kIEA3IDIxNjAwIHBpeGVsSGVpZ2h0Ii8+JywnPHY6ZiBlcW49InN1bSBAMTAgMjE2MDAgMCIvPicsIjwvdjpmb3JtdWxhcz4iLCc8djpwYXRoIG86ZXh0cnVzaW9ub2s9ImYiIGdyYWRpZW50c2hhcGVvaz0idCIgbzpjb25uZWN0dHlwZT0icmVjdCIvPicsJzxvOmxvY2sgdjpl''@;'; put 'put ''eHQ9ImVkaXQiIGFzcGVjdHJhdGlvPSJ0Ii8+JywiPC92OnNoYXBldHlwZT4iXSxiZT0xO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbih2ZSl7WFt2ZV0mJlsib2RkIiwiZXZlbiIsImZpcnN0Il0uZm9yRWFjaChmdW5jdGlvbih5ZSl7WFt2ZV1beWVdJiZbImxlZnQiLCJy''@;'; put 'put ''aWdodCIsImNlbnRlciJdLmZvckVhY2goZnVuY3Rpb24oVmUpe2lmKEFycmF5LmlzQXJyYXkoWFt2ZV1beWVdW1ZlXSkpZm9yKHZhciB6ZT0wO3plPFhbdmVdW3llXVtWZV0ubGVuZ3RoOysremUpaWYoWFt2ZV1beWVdW1ZlXVt6ZV0pe3ZhciBXZT1YW3ZlXVt5ZV1bVmVdW3plXTtpZigicmVt''@;'; put 'put ''b3RlIj09V2VbIiFkYXRhdHlwZSJdKXRocm93IkNhbm5vdCB1c2UgbGlua2VkIGltYWdlIGluIGhlYWRlciBvciBmb290ZXIiO2Zvcig7cG4oeSwieGwvbWVkaWEvaW1hZ2UiK2JlKyIuanBnIik7KSsrYmU7eS5maWxlKCJ4bC9tZWRpYS9pbWFnZSIrYmUrIi5qcGciLG1RKFdlKSx7YmluYXJ5''@;'; put 'put ''OiEwfSksZ3IobmUsLTEsIi4uL21lZGlhL2ltYWdlIitiZSsiLmpwZyIsU28uSU1HKTt2YXIgcnQ9Il94MDAwMF9zIisoMTAyNStXZS5fY250KSxsdD0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOjA7ei1pbmRleDoiKyhXZS5fY250KzEpKyI7IjtsdCs9Indp''@;'; put 'put ''ZHRoOiIrV2VbIiFwb3MiXS53KyJweDsiLGx0Kz0iaGVpZ2h0OiIrV2VbIiFwb3MiXS5oKyJweDsiO3ZhciBDdD1WZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt2ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsib2RkIiE9PXllJiYoQ3QrPXllLnRvVXBwZXJDYXNlKCkpLFhbdmVdW3llXVtW''@;'; put 'put ''ZV0ubGVuZ3RoPjEmJihDdCs9emUpLGZlLnB1c2goX3IoInY6c2hhcGUiLFsnPHY6aW1hZ2VkYXRhIG86cmVsaWQ9InJJZCcrKFdlLl9jbnQrMSkrJyIgbzp0aXRsZT0ic2hlZXRqcyIvPicsJzxvOmxvY2sgdjpleHQ9ImVkaXQiIHJvdGF0aW9uPSJ0Ii8+J10uam9pbigiIikse2lkOkN0LCJv''@;'; put 'put ''OnNwaWQiOnJ0LHR5cGU6IiNfeDAwMDBfdDc1IixzdHlsZTpsdH0pKX19KX0pfSksZmUucHVzaCgiPC94bWw+IikseS5maWxlKCJ4bC9kcmF3aW5ncy92bWxEcmF3aW5nIitMKyJIRi52bWwiLGZlLmpvaW4oIiIpKSx5LmZpbGUoInhsL2RyYXdpbmdzL19yZWxzL3ZtbERyYXdpbmciK0wrIkhG''@;'; put 'put ''LnZtbC5yZWxzIixlaShuZSkpfVNvLkNNTlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY29tbWVudHMiO3ZhciAkOT1fcigiY29tbWVudHMiLG51bGwse3htbG5zOmtpLm1haW5bMF19KTtmdW5jdGlvbiB4dyh5''@;'; put 'put ''KXt2YXIgUD1bUG4sJDldLEw9W107cmV0dXJuIFAucHVzaCgiPGF1dGhvcnM+IikseS5mb3JFYWNoKGZ1bmN0aW9uKFgpe1hbMV0uZm9yRWFjaChmdW5jdGlvbihuZSl7dmFyIGZlPWJyKG5lLmEpO0wuaW5kZXhPZihmZSk+LTF8fChMLnB1c2goZmUpLFAucHVzaCgiPGF1dGhvcj4iK2ZlKyI8''@;'; put 'put ''L2F1dGhvcj4iKSl9KX0pLFAucHVzaCgiPC9hdXRob3JzPiIpLFAucHVzaCgiPGNvbW1lbnRMaXN0PiIpLHkuZm9yRWFjaChmdW5jdGlvbihYKXtYWzFdLmZvckVhY2goZnVuY3Rpb24obmUpe1AucHVzaCgnPGNvbW1lbnQgcmVmPSInK1hbMF0rJyIgYXV0aG9ySWQ9IicrTC5pbmRleE9mKGJy''@;'; put 'put ''KG5lLmEpKSsnIj48dGV4dD4nKSxQLnB1c2gobmUuUj9wYShuZS5SKTpjbygidCIsbnVsbD09bmUudD8iIjpicihuZS50KSkpLFAucHVzaCgiPC90ZXh0PjwvY29tbWVudD4iKX0pfSksUC5wdXNoKCI8L2NvbW1lbnRMaXN0PiIpLFAubGVuZ3RoPjImJihQW1AubGVuZ3RoXT0iPC9jb21tZW50''@;'; put 'put ''cz4iLFBbMV09UFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksUC5qb2luKCIiKX12YXIgcEg9a2M7ZnVuY3Rpb24gRXcoeSl7dmFyIFA9Y3UoKSxMPVtdO3JldHVybiBoaShQLCJCcnRCZWdpbkNvbW1lbnRzIiksaGkoUCwiQnJ0QmVnaW5Db21tZW50QXV0aG9ycyIpLHkuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bihYKXtYWzFdLmZvckVhY2goZnVuY3Rpb24obmUpe0wuaW5kZXhPZihuZS5hKT4tMXx8KEwucHVzaChuZS5hLnNsaWNlKDAsNTQpKSxoaShQLCJCcnRDb21tZW50QXV0aG9yIixmdW5jdGlvbiB2USh5KXtyZXR1cm4gS2woeS5zbGljZSgwLDU0KSl9KG5lLmEpKSl9KX0pLGhpKFAsIkJydEVu''@;'; put 'put ''ZENvbW1lbnRBdXRob3JzIiksaGkoUCwiQnJ0QmVnaW5Db21tZW50TGlzdCIpLHkuZm9yRWFjaChmdW5jdGlvbihYKXtYWzFdLmZvckVhY2goZnVuY3Rpb24obmUpe25lLmlhdXRob3I9TC5pbmRleE9mKG5lLmEpO3ZhciBmZT17czprcyhYWzBdKSxlOmtzKFhbMF0pfTtoaShQLCJCcnRCZWdp''@;'; put 'put ''bkNvbW1lbnQiLGZ1bmN0aW9uIGZIKHksUCl7cmV0dXJuIG51bGw9PVAmJihQPXhyKDM2KSksUC53cml0ZV9zaGlmdCg0LHlbMV0uaWF1dGhvcikscDIoeVswXSxQKSxQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKSxQLndyaXRlX3NoaWZ0''@;'; put 'put ''KDQsMCksUH0oW2ZlLG5lXSkpLG5lLnQmJm5lLnQubGVuZ3RoPjAmJmhpKFAsIkJydENvbW1lbnRUZXh0IixmdW5jdGlvbiBpZCh5LFApe3ZhciBMPSExO3JldHVybiBudWxsPT1QJiYoTD0hMCxQPXhyKDIzKzQqeS50Lmxlbmd0aCkpLFAud3JpdGVfc2hpZnQoMSwxKSxLbCh5LnQsUCksUC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LDEpLGZ1bmN0aW9uIGk5KHksUCl7UHx8KFA9eHIoNCkpLFAud3JpdGVfc2hpZnQoMix5LmljaHx8MCksUC53cml0ZV9zaGlmdCgyLHkuaWZudHx8MCl9KHtpY2g6MCxpZm50OjB9LFApLEw/UC5zbGljZSgwLFAubCk6UH0obmUpKSxoaShQLCJCcnRFbmRDb21tZW50Iiks''@;'; put 'put ''ZGVsZXRlIG5lLmlhdXRob3J9KX0pLGhpKFAsIkJydEVuZENvbW1lbnRMaXN0IiksaGkoUCwiQnJ0RW5kQ29tbWVudHMiKSxQLmVuZCgpfXZhciBtaz0iYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52YmFQcm9qZWN0Iixiaz1bInhsc2IiLCJ4bHNtIiwieGxhbSIsImJpZmY4IiwieGxhIl07''@;'; put 'put ''U28uRFM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZGlhbG9nc2hlZXQiLFNvLk1TPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxNYWNyb3NoZWV0Ijt2''@;'; put 'put ''YXIgemc9ZnVuY3Rpb24oKXt2YXIgeT0vKF58W15BLVphLXpfXSlSKFxbPy0/XGQrXF18WzEtOV1cZCp8KUMoXFs/LT9cZCtcXXxbMS05XVxkKnwpKD8hW0EtWmEtejAtOV9dKS9nLFA9e3I6MCxjOjB9O2Z1bmN0aW9uIEwoWCxuZSxmZSxiZSl7dmFyIHZlPSExLHllPSExOzA9PWZlLmxlbmd0''@;'; put 'put ''aD95ZT0hMDoiWyI9PWZlLmNoYXJBdCgwKSYmKHllPSEwLGZlPWZlLnNsaWNlKDEsLTEpKSwwPT1iZS5sZW5ndGg/dmU9ITA6IlsiPT1iZS5jaGFyQXQoMCkmJih2ZT0hMCxiZT1iZS5zbGljZSgxLC0xKSk7dmFyIFZlPWZlLmxlbmd0aD4wPzB8cGFyc2VJbnQoZmUsMTApOjAsemU9YmUubGVu''@;'; put 'put ''Z3RoPjA/MHxwYXJzZUludChiZSwxMCk6MDtyZXR1cm4gdmU/emUrPVAuYzotLXplLHllP1ZlKz1QLnI6LS1WZSxuZSsodmU/IiI6IiQiKSt5byh6ZSkrKHllPyIiOiIkIikrYnMoVmUpfXJldHVybiBmdW5jdGlvbihuZSxmZSl7cmV0dXJuIFA9ZmUsbmUucmVwbGFjZSh5LEwpfX0oKSxwaD0v''@;'; put 'put ''KF58W14uX0EtWjAtOV0pKFskXT8pKFtBLVpdezEsMn18W0EtV11bQS1aXXsyfXxYW0EtRV1bQS1aXXxYRltBLURdKShbJF0/KSgxMFswLTNdXGR7NH18MTA0WzAtN11cZHszfXwxMDQ4WzAtNF1cZHsyfXwxMDQ4NVswLTZdXGR8MTA0ODU3WzAtNl18WzEtOV1cZHswLDV9KSg/IVtfLlwoQS1a''@;'; put 'put ''YS16MC05XSkvZyx6cD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihQLEwpe3JldHVybiBQLnJlcGxhY2UocGgsZnVuY3Rpb24oWCxuZSxmZSxiZSx2ZSx5ZSl7dmFyIFZlPSRvKGJlKS0oZmU/MDpMLmMpLHplPW5kKHllKS0odmU/MDpMLnIpO3JldHVybiBuZSsiUiIrKDA9PXplPyIiOnZl''@;'; put 'put ''P3plKzE6IlsiK3plKyJdIikrIkMiKygwPT1WZT8iIjpmZT9WZSsxOiJbIitWZSsiXSIpfSl9fSgpO2Z1bmN0aW9uIHlrKHksUCl7cmV0dXJuIHkucmVwbGFjZShwaCxmdW5jdGlvbihMLFgsbmUsZmUsYmUsdmUpe3JldHVybiBYKygiJCI9PW5lP25lK2ZlOnlvKCRvKGZlKStQLmMpKSsoIiQi''@;'; put 'put ''PT1iZT9iZSt2ZTpicyhuZCh2ZSkrUC5yKSl9KS5yZXBsYWNlKC8oXGQrKTooXGQrKS9nLGZ1bmN0aW9uKEwsWCxuZSl7cmV0dXJuIGJzKG5kKFgpK1AucikrIjoiK2JzKG5kKG5lKStQLnIpfSl9ZnVuY3Rpb24gX1EoeSxQLEwpe3ZhciBuZT1hYShQKS5zLGZlPWtzKEwpO3JldHVybiB5ayh5''@;'; put 'put ''LHtyOmZlLnItbmUucixjOmZlLmMtbmUuY30pfWZ1bmN0aW9uIGJIKHkpe3JldHVybiB5LnJlcGxhY2UoL194bGZuXC4vZywiIil9ZnVuY3Rpb24gSWMoeSl7eS5sKz0xfWZ1bmN0aW9uIFVwKHksUCl7dmFyIEw9eS5yZWFkX3NoaWZ0KDE9PVA/MToyKTtyZXR1cm5bMTYzODMmTCxMPj4xNCYx''@;'; put 'put ''LEw+PjE1JjFdfWZ1bmN0aW9uIFR3KHksUCxMKXt2YXIgWD0yO2lmKEwpe2lmKEwuYmlmZj49MiYmTC5iaWZmPD01KXJldHVybiB3ayh5KTsxMj09TC5iaWZmJiYoWD00KX12YXIgbmU9eS5yZWFkX3NoaWZ0KFgpLGZlPXkucmVhZF9zaGlmdChYKSxiZT1VcCh5LDIpLHZlPVVwKHksMik7cmV0''@;'; put 'put ''dXJue3M6e3I6bmUsYzpiZVswXSxjUmVsOmJlWzFdLHJSZWw6YmVbMl19LGU6e3I6ZmUsYzp2ZVswXSxjUmVsOnZlWzFdLHJSZWw6dmVbMl19fX1mdW5jdGlvbiB3ayh5KXt2YXIgUD1VcCh5LDIpLEw9VXAoeSwyKSxYPXkucmVhZF9zaGlmdCgxKSxuZT15LnJlYWRfc2hpZnQoMSk7cmV0dXJu''@;'; put 'put ''e3M6e3I6UFswXSxjOlgsY1JlbDpQWzFdLHJSZWw6UFsyXX0sZTp7cjpMWzBdLGM6bmUsY1JlbDpMWzFdLHJSZWw6TFsyXX19fWZ1bmN0aW9uIENrKHksUCxMKXtpZihMJiZMLmJpZmY+PTImJkwuYmlmZjw9NSlyZXR1cm4gZnVuY3Rpb24gd0goeSl7dmFyIFA9VXAoeSwyKSxMPXkucmVhZF9z''@;'; put 'put ''aGlmdCgxKTtyZXR1cm57cjpQWzBdLGM6TCxjUmVsOlBbMV0sclJlbDpQWzJdfX0oeSk7dmFyIFg9eS5yZWFkX3NoaWZ0KEwmJjEyPT1MLmJpZmY/NDoyKSxuZT1VcCh5LDIpO3JldHVybntyOlgsYzpuZVswXSxjUmVsOm5lWzFdLHJSZWw6bmVbMl19fWZ1bmN0aW9uIGt3KHkpe3ZhciBQPXku''@;'; put 'put ''cmVhZF9zaGlmdCgyKSxMPXkucmVhZF9zaGlmdCgyKTtyZXR1cm57cjpQLGM6MjU1JkwsZlF1b3RlZDohISgxNjM4NCZMKSxjUmVsOkw+PjE1LHJSZWw6TD4+MTV9fWZ1bmN0aW9uIFRrKHkpe3JldHVyblt5LnJlYWRfc2hpZnQoMSkseS5yZWFkX3NoaWZ0KDEpXX1mdW5jdGlvbiBSdyh5LFAp''@;'; put 'put ''e3ZhciBMPVt5LnJlYWRfc2hpZnQoMSldO2lmKDEyPT1QKXN3aXRjaChMWzBdKXtjYXNlIDI6TFswXT00O2JyZWFrO2Nhc2UgNDpMWzBdPTE2O2JyZWFrO2Nhc2UgMDpMWzBdPTE7YnJlYWs7Y2FzZSAxOkxbMF09Mn1zd2l0Y2goTFswXSl7Y2FzZSA0OkxbMV09Rm8oeSwxKT8iVFJVRSI6IkZB''@;'; put 'put ''TFNFIiwxMiE9UCYmKHkubCs9Nyk7YnJlYWs7Y2FzZSAzNzpjYXNlIDE2OkxbMV09RmxbeVt5LmxdXSx5LmwrPTEyPT1QPzQ6ODticmVhaztjYXNlIDA6eS5sKz04O2JyZWFrO2Nhc2UgMTpMWzFdPXphKHkpO2JyZWFrO2Nhc2UgMjpMWzFdPW0wKHksMCx7YmlmZjpQPjAmJlA8OD8yOlB9KTti''@;'; put 'put ''cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK0xbMF0pfXJldHVybiBMfWZ1bmN0aW9uIElrKHksUCxMKXtmb3IodmFyIFg9eS5yZWFkX3NoaWZ0KDEyPT1MLmJpZmY/NDoyKSxuZT1bXSxmZT0wO2ZlIT1YOysrZmUpbmUucHVzaCgoMTI9PUwuYmlmZj9BYzpvaCko''@;'; put 'put ''eSw4KSk7cmV0dXJuIG5lfWZ1bmN0aW9uIElIKHksUCxMKXt2YXIgWD0wLG5lPTA7MTI9PUwuYmlmZj8oWD15LnJlYWRfc2hpZnQoNCksbmU9eS5yZWFkX3NoaWZ0KDQpKToobmU9MSt5LnJlYWRfc2hpZnQoMSksWD0xK3kucmVhZF9zaGlmdCgyKSksTC5iaWZmPj0yJiZMLmJpZmY8OCYmKC0t''@;'; put 'put ''WCwwPT0tLW5lJiYobmU9MjU2KSk7Zm9yKHZhciBmZT0wLGJlPVtdO2ZlIT1YJiYoYmVbZmVdPVtdKTsrK2ZlKWZvcih2YXIgdmU9MDt2ZSE9bmU7Kyt2ZSliZVtmZV1bdmVdPVJ3KHksTC5iaWZmKTtyZXR1cm4gYmV9ZnVuY3Rpb24gWmcoeSxQLEwpe3JldHVybiB5LmwrPTIsW2t3KHkpXX1m''@;'; put 'put ''dW5jdGlvbiBMdyh5KXtyZXR1cm4geS5sKz02LFtdfXZhciBISD1aZyxWSD1MdyxCSD1MdyxqSD1aZztmdW5jdGlvbiBMayh5KXtyZXR1cm4geS5sKz0yLFtIbCh5KSwxJnkucmVhZF9zaGlmdCgyKV19dmFyIE93PVpnLFRRPUxrLGtRPUx3LFB3PVpnLEFRPVpnLERRPVsiRGF0YSIsIkFsbCIs''@;'; put 'put ''IkhlYWRlcnMiLCI/PyIsIj9EYXRhMiIsIj8/IiwiP0RhdGFIZWFkZXJzIiwiPz8iLCJUb3RhbHMiLCI/PyIsIj8/IiwiPz8iLCI/RGF0YVRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9DdXJyZW50Il0sUTk9ezE6e246IlB0Z0V4cCIsZjpmdW5jdGlvbiBrSCh5LFAsTCl7cmV0dXJuIHkubCsr''@;'; put 'put ''LEwmJjEyPT1MLmJpZmY/W3kucmVhZF9zaGlmdCg0LCJpIiksMF06W3kucmVhZF9zaGlmdCgyKSx5LnJlYWRfc2hpZnQoTCYmMj09TC5iaWZmPzE6MildfX0sMjp7bjoiUHRnVGJsIixmOnBsfSwzOntuOiJQdGdBZGQiLGY6SWN9LDQ6e246IlB0Z1N1YiIsZjpJY30sNTp7bjoiUHRnTXVsIixm''@;'; put 'put ''OkljfSw2OntuOiJQdGdEaXYiLGY6SWN9LDc6e246IlB0Z1Bvd2VyIixmOkljfSw4OntuOiJQdGdDb25jYXQiLGY6SWN9LDk6e246IlB0Z0x0IixmOkljfSwxMDp7bjoiUHRnTGUiLGY6SWN9LDExOntuOiJQdGdFcSIsZjpJY30sMTI6e246IlB0Z0dlIixmOkljfSwxMzp7bjoiUHRnR3QiLGY6''@;'; put 'put ''SWN9LDE0OntuOiJQdGdOZSIsZjpJY30sMTU6e246IlB0Z0lzZWN0IixmOkljfSwxNjp7bjoiUHRnVW5pb24iLGY6SWN9LDE3OntuOiJQdGdSYW5nZSIsZjpJY30sMTg6e246IlB0Z1VwbHVzIixmOkljfSwxOTp7bjoiUHRnVW1pbnVzIixmOkljfSwyMDp7bjoiUHRnUGVyY2VudCIsZjpJY30s''@;'; put 'put ''MjE6e246IlB0Z1BhcmVuIixmOkljfSwyMjp7bjoiUHRnTWlzc0FyZyIsZjpJY30sMjM6e246IlB0Z1N0ciIsZjpmdW5jdGlvbiBESCh5LFAsTCl7cmV0dXJuIHkubCsrLF9vKHksMCxMKX19LDI2OntuOiJQdGdTaGVldCIsZjpmdW5jdGlvbiBMUSh5LFAsTCl7cmV0dXJuIHkubCs9NSx5Lmwr''@;'; put 'put ''PTIseS5sKz0yPT1MLmJpZmY/MTo0LFsiUFRHU0hFRVQiXX19LDI3OntuOiJQdGdFbmRTaGVldCIsZjpmdW5jdGlvbiB6SCh5LFAsTCl7cmV0dXJuIHkubCs9Mj09TC5iaWZmPzQ6NSxbIlBUR0VORFNIRUVUIl19fSwyODp7bjoiUHRnRXJyIixmOmZ1bmN0aW9uIEl3KHkpe3JldHVybiB5Lmwr''@;'; put 'put ''KyxGbFt5LnJlYWRfc2hpZnQoMSldfX0sMjk6e246IlB0Z0Jvb2wiLGY6ZnVuY3Rpb24gVWcoeSl7cmV0dXJuIHkubCsrLDAhPT15LnJlYWRfc2hpZnQoMSl9fSwzMDp7bjoiUHRnSW50IixmOmZ1bmN0aW9uIEFIKHkpe3JldHVybiB5LmwrKyx5LnJlYWRfc2hpZnQoMil9fSwzMTp7bjoiUHRn''@;'; put 'put ''TnVtIixmOmZ1bmN0aW9uIFpwKHkpe3JldHVybiB5LmwrKyx6YSh5KX19LDMyOntuOiJQdGdBcnJheSIsZjpmdW5jdGlvbiBDUSh5LFAsTCl7dmFyIFg9KDk2JnlbeS5sKytdKT4+NTtyZXR1cm4geS5sKz0yPT1MLmJpZmY/NjoxMj09TC5iaWZmPzE0OjcsW1hdfX0sMzM6e246IlB0Z0Z1bmMi''@;'; put 'put ''LGY6ZnVuY3Rpb24gRUgoeSxQLEwpe3ZhciBYPSg5NiZ5W3kubF0pPj41O3kubCs9MTt2YXIgbmU9eS5yZWFkX3NoaWZ0KEwmJkwuYmlmZjw9Mz8xOjIpO3JldHVybltHSFtuZV0samtbbmVdLFhdfX0sMzQ6e246IlB0Z0Z1bmNWYXIiLGY6ZnVuY3Rpb24gVEgoeSxQLEwpe3ZhciBYPXlbeS5s''@;'; put 'put ''KytdLG5lPXkucmVhZF9zaGlmdCgxKSxmZT1MJiZMLmJpZmY8PTM/Wzg4PT1YPy0xOjAseS5yZWFkX3NoaWZ0KDEpXTpmdW5jdGlvbiBEayh5KXtyZXR1cm5beVt5LmwrMV0+PjcsMzI3NjcmeS5yZWFkX3NoaWZ0KDIpXX0oeSk7cmV0dXJuW25lLCgwPT09ZmVbMF0/ams6WXcpW2ZlWzFdXV19''@;'; put 'put ''fSwzNTp7bjoiUHRnTmFtZSIsZjpmdW5jdGlvbiBSSCh5LFAsTCl7dmFyIFg9eS5yZWFkX3NoaWZ0KDEpPj4+NSYzLGZlPXkucmVhZF9zaGlmdCghTHx8TC5iaWZmPj04PzQ6Mik7c3dpdGNoKEwuYmlmZil7Y2FzZSAyOnkubCs9NTticmVhaztjYXNlIDM6Y2FzZSA0OnkubCs9ODticmVhaztj''@;'; put 'put ''YXNlIDU6eS5sKz0xMn1yZXR1cm5bWCwwLGZlXX19LDM2OntuOiJQdGdSZWYiLGY6ZnVuY3Rpb24geEgoeSxQLEwpe3ZhciBYPSg5NiZ5W3kubF0pPj41O3JldHVybiB5LmwrPTEsW1gsQ2soeSwwLEwpXX19LDM3OntuOiJQdGdBcmVhIixmOmZ1bmN0aW9uIFNrKHksUCxMKXtyZXR1cm5bKDk2''@;'; put 'put ''JnlbeS5sKytdKT4+NSxUdyh5LDAsTCldfX0sMzg6e246IlB0Z01lbUFyZWEiLGY6ZnVuY3Rpb24gUmsoeSxQLEwpe3ZhciBYPXkucmVhZF9zaGlmdCgxKT4+PjUmMztyZXR1cm4geS5sKz1MJiYyPT1MLmJpZmY/Mzo0LFtYLHkucmVhZF9zaGlmdChMJiYyPT1MLmJpZmY/MToyKV19fSwzOTp7''@;'; put 'put ''bjoiUHRnTWVtRXJyIixmOnBsfSw0MDp7bjoiUHRnTWVtTm9NZW0iLGY6cGx9LDQxOntuOiJQdGdNZW1GdW5jIixmOmZ1bmN0aW9uIHhRKHksUCxMKXtyZXR1cm5beS5yZWFkX3NoaWZ0KDEpPj4+NSYzLHkucmVhZF9zaGlmdChMJiYyPT1MLmJpZmY/MToyKV19fSw0Mjp7bjoiUHRnUmVmRXJy''@;'; put 'put ''IixmOmZ1bmN0aW9uIEVRKHksUCxMKXt2YXIgWD15LnJlYWRfc2hpZnQoMSk+Pj41JjM7cmV0dXJuIHkubCs9NCxMLmJpZmY8OCYmeS5sLS0sMTI9PUwuYmlmZiYmKHkubCs9MiksW1hdfX0sNDM6e246IlB0Z0FyZWFFcnIiLGY6ZnVuY3Rpb24geGsoeSxQLEwpe3ZhciBYPSg5NiZ5W3kubCsr''@;'; put 'put ''XSk+PjU7cmV0dXJuIHkubCs9TCYmTC5iaWZmPjg/MTI6TC5iaWZmPDg/Njo4LFtYXX19LDQ0OntuOiJQdGdSZWZOIixmOmZ1bmN0aW9uIGtrKHksUCxMKXt2YXIgWD0oOTYmeVt5LmxdKT4+NTt5LmwrPTE7dmFyIG5lPWZ1bmN0aW9uIFIyKHksUCxMKXt2YXIgWD1MJiZMLmJpZmY/TC5iaWZm''@;'; put 'put ''Ojg7aWYoWD49MiYmWDw9NSlyZXR1cm4gZnVuY3Rpb24gbzYoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDIpLEw9eS5yZWFkX3NoaWZ0KDEpLFg9KDMyNzY4JlApPj4xNSxuZT0oMTYzODQmUCk+PjE0O3JldHVybiBQJj0xNjM4MywxPT1YJiZQPj04MTkyJiYoUC09MTYzODQpLDE9PW5lJiZMPj0x''@;'; put 'put ''MjgmJihMLT0yNTYpLHtyOlAsYzpMLGNSZWw6bmUsclJlbDpYfX0oeSk7dmFyIG5lPXkucmVhZF9zaGlmdChYPj0xMj80OjIpLGZlPXkucmVhZF9zaGlmdCgyKSxiZT0oMTYzODQmZmUpPj4xNCx2ZT0oMzI3NjgmZmUpPj4xNTtpZihmZSY9MTYzODMsMT09dmUpZm9yKDtuZT41MjQyODc7KW5l''@;'; put 'put ''LT0xMDQ4NTc2O2lmKDE9PWJlKWZvcig7ZmU+ODE5MTspZmUtPTE2Mzg0O3JldHVybntyOm5lLGM6ZmUsY1JlbDpiZSxyUmVsOnZlfX0oeSwwLEwpO3JldHVybltYLG5lXX19LDQ1OntuOiJQdGdBcmVhTiIsZjpmdW5jdGlvbiB3USh5LFAsTCl7dmFyIFg9KDk2JnlbeS5sKytdKT4+NSxuZT1m''@;'; put 'put ''dW5jdGlvbiB5SCh5LFAsTCl7aWYoTC5iaWZmPDgpcmV0dXJuIHdrKHkpO3ZhciBYPXkucmVhZF9zaGlmdCgxMj09TC5iaWZmPzQ6MiksbmU9eS5yZWFkX3NoaWZ0KDEyPT1MLmJpZmY/NDoyKSxmZT1VcCh5LDIpLGJlPVVwKHksMik7cmV0dXJue3M6e3I6WCxjOmZlWzBdLGNSZWw6ZmVbMV0s''@;'; put 'put ''clJlbDpmZVsyXX0sZTp7cjpuZSxjOmJlWzBdLGNSZWw6YmVbMV0sclJlbDpiZVsyXX19fSh5LDAsTCk7cmV0dXJuW1gsbmVdfX0sNDY6e246IlB0Z01lbUFyZWFOIixmOmZ1bmN0aW9uIFg5KHkpe3JldHVyblt5LnJlYWRfc2hpZnQoMSk+Pj41JjMseS5yZWFkX3NoaWZ0KDIpXX19LDQ3Ontu''@;'; put 'put ''OiJQdGdNZW1Ob01lbU4iLGY6ZnVuY3Rpb24gSjkoeSl7cmV0dXJuW3kucmVhZF9zaGlmdCgxKT4+PjUmMyx5LnJlYWRfc2hpZnQoMildfX0sNTc6e246IlB0Z05hbWVYIixmOmZ1bmN0aW9uIExIKHksUCxMKXtyZXR1cm4gNT09TC5iaWZmP2Z1bmN0aW9uIE9IKHkpe3ZhciBQPXkucmVhZF9z''@;'; put 'put ''aGlmdCgxKT4+PjUmMyxMPXkucmVhZF9zaGlmdCgyLCJpIik7eS5sKz04O3ZhciBYPXkucmVhZF9zaGlmdCgyKTtyZXR1cm4geS5sKz0xMixbUCxMLFhdfSh5KTpbeS5yZWFkX3NoaWZ0KDEpPj4+NSYzLHkucmVhZF9zaGlmdCgyKSx5LnJlYWRfc2hpZnQoNCldfX0sNTg6e246IlB0Z1JlZjNk''@;'; put 'put ''IixmOmZ1bmN0aW9uIEFrKHksUCxMKXt2YXIgWD0oOTYmeVt5LmxdKT4+NTt5LmwrPTE7dmFyIG5lPXkucmVhZF9zaGlmdCgyKTtyZXR1cm4gTCYmNT09TC5iaWZmJiYoeS5sKz0xMiksW1gsbmUsQ2soeSwwLEwpXX19LDU5OntuOiJQdGdBcmVhM2QiLGY6ZnVuY3Rpb24gTWsoeSxQLEwpe3Zh''@;'; put 'put ''ciBYPSg5NiZ5W3kubCsrXSk+PjUsbmU9eS5yZWFkX3NoaWZ0KDIsImkiKTtpZihMJiY1PT09TC5iaWZmKXkubCs9MTI7cmV0dXJuW1gsbmUsVHcoeSwwLEwpXX19LDYwOntuOiJQdGdSZWZFcnIzZCIsZjpmdW5jdGlvbiBzNih5LFAsTCl7dmFyIFg9KDk2JnlbeS5sKytdKT4+NSxuZT15LnJl''@;'; put 'put ''YWRfc2hpZnQoMiksZmU9NDtpZihMKXN3aXRjaChMLmJpZmYpe2Nhc2UgNTpmZT0xNTticmVhaztjYXNlIDEyOmZlPTZ9cmV0dXJuIHkubCs9ZmUsW1gsbmVdfX0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpmdW5jdGlvbiB5USh5LFAsTCl7dmFyIFg9KDk2JnlbeS5sKytdKT4+NSxuZT15LnJl''@;'; put 'put ''YWRfc2hpZnQoMiksZmU9ODtpZihMKXN3aXRjaChMLmJpZmYpe2Nhc2UgNTp5LmwrPTEyLGZlPTY7YnJlYWs7Y2FzZSAxMjpmZT0xMn1yZXR1cm4geS5sKz1mZSxbWCxuZV19fSwyNTU6e319LE53PXs2NDozMiw5NjozMiw2NTozMyw5NzozMyw2NjozNCw5ODozNCw2NzozNSw5OTozNSw2ODoz''@;'; put 'put ''NiwxMDA6MzYsNjk6MzcsMTAxOjM3LDcwOjM4LDEwMjozOCw3MTozOSwxMDM6MzksNzI6NDAsMTA0OjQwLDczOjQxLDEwNTo0MSw3NDo0MiwxMDY6NDIsNzU6NDMsMTA3OjQzLDc2OjQ0LDEwODo0NCw3Nzo0NSwxMDk6NDUsNzg6NDYsMTEwOjQ2LDc5OjQ3LDExMTo0Nyw4ODozNCwxMjA6MzQs''@;'; put 'put ''ODk6NTcsMTIxOjU3LDkwOjU4LDEyMjo1OCw5MTo1OSwxMjM6NTksOTI6NjAsMTI0OjYwLDkzOjYxLDEyNTo2MX07IWZ1bmN0aW9uKCl7Zm9yKHZhciB5IGluIE53KVE5W3ldPVE5W053W3ldXX0oKTt2YXIgSHc9ezE6e246IlB0Z0VsZkxlbCIsZjpMa30sMjp7bjoiUHRnRWxmUnciLGY6UHd9''@;'; put 'put ''LDM6e246IlB0Z0VsZkNvbCIsZjpISH0sNjp7bjoiUHRnRWxmUndWIixmOkFRfSw3OntuOiJQdGdFbGZDb2xWIixmOmpIfSwxMDp7bjoiUHRnRWxmUmFkaWNhbCIsZjpPd30sMTE6e246IlB0Z0VsZlJhZGljYWxTIixmOmtRfSwxMzp7bjoiUHRnRWxmQ29sUyIsZjpWSH0sMTU6e246IlB0Z0Vs''@;'; put 'put ''ZkNvbFNWIixmOkJIfSwxNjp7bjoiUHRnRWxmUmFkaWNhbExlbCIsZjpUUX0sMjU6e246IlB0Z0xpc3QiLGY6ZnVuY3Rpb24gSVEoeSl7eS5sKz0yO3ZhciBQPXkucmVhZF9zaGlmdCgyKSxMPXkucmVhZF9zaGlmdCgyKSxYPXkucmVhZF9zaGlmdCg0KSxuZT15LnJlYWRfc2hpZnQoMiksZmU9''@;'; put 'put ''eS5yZWFkX3NoaWZ0KDIpO3JldHVybntpeHRpOlAsY29sdHlwZTozJkwscnQ6RFFbTD4+MiYzMV0saWR4OlgsYzpuZSxDOmZlfX19LDI5OntuOiJQdGdTeE5hbWUiLGY6ZnVuY3Rpb24gUlEoeSl7cmV0dXJuIHkubCs9MixbeS5yZWFkX3NoaWZ0KDQpXX19LDI1NTp7fX0sUWY9ezA6e246IlB0''@;'; put 'put ''Z0F0dHJOb29wIixmOmZ1bmN0aW9uIEZ3KHkpe3JldHVybiB5LmwrPTQsWzAsMF19fSwxOntuOiJQdGdBdHRyU2VtaSIsZjpmdW5jdGlvbiBDSCh5LFAsTCl7dmFyIFg9MjU1JnlbeS5sKzFdPzE6MDtyZXR1cm4geS5sKz1MJiYyPT1MLmJpZmY/Mzo0LFtYXX19LDI6e246IlB0Z0F0dHJJZiIs''@;'; put 'put ''ZjpmdW5jdGlvbiBNUSh5LFAsTCl7dmFyIFg9MjU1JnlbeS5sKzFdPzE6MDtyZXR1cm4geS5sKz0yLFtYLHkucmVhZF9zaGlmdChMJiYyPT1MLmJpZmY/MToyKV19fSw0OntuOiJQdGdBdHRyQ2hvb3NlIixmOmZ1bmN0aW9uIER3KHksUCxMKXt5LmwrPTI7Zm9yKHZhciBYPXkucmVhZF9zaGlm''@;'; put 'put ''dChMJiYyPT1MLmJpZmY/MToyKSxuZT1bXSxmZT0wO2ZlPD1YOysrZmUpbmUucHVzaCh5LnJlYWRfc2hpZnQoTCYmMj09TC5iaWZmPzE6MikpO3JldHVybiBuZX19LDg6e246IlB0Z0F0dHJHb3RvIixmOmZ1bmN0aW9uIFNRKHksUCxMKXt2YXIgWD0yNTUmeVt5LmwrMV0/MTowO3JldHVybiB5''@;'; put 'put ''LmwrPTIsW1gseS5yZWFkX3NoaWZ0KEwmJjI9PUwuYmlmZj8xOjIpXX19LDE2OntuOiJQdGdBdHRyU3VtIixmOmZ1bmN0aW9uIEs5KHksUCxMKXt5LmwrPUwmJjI9PUwuYmlmZj8zOjR9fSwzMjp7bjoiUHRnQXR0ckJheGNlbCIsZjpmdW5jdGlvbiBBdyh5KXt2YXIgUD0xJnlbeS5sKzFdO3Jl''@;'; put 'put ''dHVybiB5LmwrPTQsW1AsMV19fSw2NDp7bjoiUHRnQXR0clNwYWNlIixmOmZ1bmN0aW9uIFNIKHkpe3JldHVybiB5LnJlYWRfc2hpZnQoMiksVGsoeSl9fSw2NTp7bjoiUHRnQXR0clNwYWNlU2VtaSIsZjpmdW5jdGlvbiBNSCh5KXtyZXR1cm4geS5yZWFkX3NoaWZ0KDIpLFRrKHkpfX0sMTI4''@;'; put 'put ''OntuOiJQdGdBdHRySWZFcnJvciIsZjpmdW5jdGlvbiBFayh5KXt2YXIgUD0yNTUmeVt5LmwrMV0/MTowO3JldHVybiB5LmwrPTIsW1AseS5yZWFkX3NoaWZ0KDIpXX19LDI1NTp7fX07ZnVuY3Rpb24gWXAoeSxQLEwsWCxuZSl7aWYoWC5iaWZmPDgpcmV0dXJuIHBsKHksUCk7Zm9yKHZhciBm''@;'; put 'put ''ZT15LmwrUCxiZT1bXSx2ZT0wO3ZlIT09TC5sZW5ndGg7Kyt2ZSlzd2l0Y2goTFt2ZV1bMF0pe2Nhc2UiUHRnQXJyYXkiOkxbdmVdWzFdPUlIKHksMCxYKSxiZS5wdXNoKExbdmVdWzFdKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOkxbdmVdWzJdPUlrKHksMCxYKSxiZS5wdXNoKExbdmVdWzJd''@;'; put 'put ''KTticmVhaztjYXNlIlB0Z0V4cCI6WCYmMTI9PVguYmlmZiYmKExbdmVdWzFdWzFdPXkucmVhZF9zaGlmdCg0KSxiZS5wdXNoKExbdmVdWzFdKSk7YnJlYWs7Y2FzZSJQdGdMaXN0IjpjYXNlIlB0Z0VsZlJhZGljYWxTIjpjYXNlIlB0Z0VsZkNvbFMiOmNhc2UiUHRnRWxmQ29sU1YiOnRocm93''@;'; put 'put ''IlVuc3VwcG9ydGVkICIrTFt2ZV1bMF19cmV0dXJuIFA9ZmUteS5sLCFuZSYmMCE9PVAmJmJlLnB1c2gocGwoeSxQKSksYmV9ZnVuY3Rpb24gdWQoeSxQLEwpe2Zvcih2YXIgbmUsZmUsWD15LmwrUCxiZT1bXTtYIT15Lmw7KVA9WC15LmwsbmU9UTlbZmU9eVt5LmxdXSwoMjQ9PT1mZXx8MjU9''@;'; put 'put ''PT1mZSkmJihuZT0oMjQ9PT1mZT9IdzpRZilbeVt5LmwrMV1dKSxuZSYmbmUuZj9iZS5wdXNoKFtuZS5uLG5lLmYoeSxQLEwpXSk6cGwoeSxQKTtyZXR1cm4gYmV9ZnVuY3Rpb24gSzAoeSl7Zm9yKHZhciBQPVtdLEw9MDtMPHkubGVuZ3RoOysrTCl7Zm9yKHZhciBYPXlbTF0sbmU9W10sZmU9''@;'; put 'put ''MDtmZTxYLmxlbmd0aDsrK2ZlKXt2YXIgYmU9WFtmZV07bmUucHVzaChiZT8yPT09YmVbMF0/JyInK2JlWzFdLnJlcGxhY2UoLyIvZywnIiInKSsnIic6YmVbMV06IiIpfVAucHVzaChuZS5qb2luKCIsIikpfXJldHVybiBQLmpvaW4oIjsiKX1RZlszM109UWZbMzJdO3ZhciBkZD17UHRnQWRk''@;'; put 'put ''OiIrIixQdGdDb25jYXQ6IiYiLFB0Z0RpdjoiLyIsUHRnRXE6Ij0iLFB0Z0dlOiI+PSIsUHRnR3Q6Ij4iLFB0Z0xlOiI8PSIsUHRnTHQ6IjwiLFB0Z011bDoiKiIsUHRnTmU6Ijw+IixQdGdQb3dlcjoiXiIsUHRnU3ViOiItIn0sT2s9bmV3IFJlZ0V4cCgvW15cd1x1NEUwMC1cdTlGRkZcdTMw''@;'; put 'put ''NDAtXHUzMEZGXS8pO2Z1bmN0aW9uIFBrKHksUCxMKXtpZigheSlyZXR1cm4iU0gzM1RKU0VSUjAiO2lmKEwuYmlmZj44JiYoIXkuWFRJfHwheS5YVElbUF0pKXJldHVybiB5LlNoZWV0TmFtZXNbUF07aWYoIXkuWFRJKXJldHVybiJTSDMzVEpTRVJSNiI7dmFyIFg9eS5YVElbUF07aWYoTC5i''@;'; put 'put ''aWZmPDgpcmV0dXJuIFA+MWU0JiYoUC09NjU1MzYpLFA8MCYmKFA9LVApLDA9PVA/IiI6eS5YVElbUC0xXTtpZighWClyZXR1cm4iU0gzM1RKU0VSUjEiO3ZhciBuZT0iIjtpZihMLmJpZmY+OClzd2l0Y2goeVtYWzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIG5lPS0xPT1YWzFdPyIjUkVGIjp5''@;'; put 'put ''LlNoZWV0TmFtZXNbWFsxXV0sWFsxXT09WFsyXT9uZTpuZSsiOiIreS5TaGVldE5hbWVzW1hbMl1dO2Nhc2UgMzU4OnJldHVybiBudWxsIT1MLlNJRD95LlNoZWV0TmFtZXNbTC5TSURdOiJTSDMzVEpTU0FNRSIreVtYWzBdXVswXTtkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIit5W1hbMF1d''@;'; put 'put ''WzBdfXN3aXRjaCh5W1hbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIG5lPS0xPT1YWzFdPyIjUkVGIjp5LlNoZWV0TmFtZXNbWFsxXV18fCJTSDMzVEpTRVJSMyIsWFsxXT09WFsyXT9uZTpuZSsiOiIreS5TaGVldE5hbWVzW1hbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIHlbWFswXV0uc2xp''@;'; put 'put ''Y2UoMSkubWFwKGZ1bmN0aW9uKGZlKXtyZXR1cm4gZmUuTmFtZX0pLmpvaW4oIjs7Iik7ZGVmYXVsdDpyZXR1cm4geVtYWzBdXVswXVszXT8obmU9LTE9PVhbMV0/IiNSRUYiOnlbWFswXV1bMF1bM11bWFsxXV18fCJTSDMzVEpTRVJSNCIsWFsxXT09WFsyXT9uZTpuZSsiOiIreVtYWzBdXVsw''@;'; put 'put ''XVszXVtYWzJdXSk6IlNIMzNUSlNFUlIyIn19ZnVuY3Rpb24gVUgoeSxQLEwpe3JldHVybiBmdW5jdGlvbiBPUSh5LFApe2lmKCEoeXx8UCYmUC5iaWZmPD01JiZQLmJpZmY+PTIpKXRocm93IG5ldyBFcnJvcigiZW1wdHkgc2hlZXQgbmFtZSIpO3JldHVybi8jUkVGLy50ZXN0KHkpP3k6T2su''@;'; put 'put ''dGVzdCh5KT8iJyIreSsiJyI6eX0oUGsoeSxQLEwpLEwpfWZ1bmN0aW9uIGd1KHksUCxMLFgsbmUsZmUpe3ZhciBWZSx6ZSxXZSxDdCxiZT1uZSYmbmUuYmlmZnx8OCx2ZT1mZSYmbnVsbCE9UD9QOntzOntjOjAscjowfSxlOntjOjAscjowfX0seWU9W10scnQ9MCxsdD0wLGF0PSIiO2lmKCF5''@;'; put 'put ''WzBdfHwheVswXVswXSlyZXR1cm4iIjtmb3IodmFyIHZ0PS0xLFB0PSIiLGt0PTAsRHQ9eVswXS5sZW5ndGg7a3Q8RHQ7KytrdCl7dmFyIFp0PXlbMF1ba3RdO3N3aXRjaChadFswXSl7Y2FzZSJQdGdVbWludXMiOnllLnB1c2goIi0iK3llLnBvcCgpKTticmVhaztjYXNlIlB0Z1VwbHVzIjp5''@;'; put 'put ''ZS5wdXNoKCIrIit5ZS5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50Ijp5ZS5wdXNoKHllLnBvcCgpKyIlIik7YnJlYWs7Y2FzZSJQdGdBZGQiOmNhc2UiUHRnQ29uY2F0IjpjYXNlIlB0Z0RpdiI6Y2FzZSJQdGdFcSI6Y2FzZSJQdGdHZSI6Y2FzZSJQdGdHdCI6Y2FzZSJQdGdMZSI6Y2Fz''@;'; put 'put ''ZSJQdGdMdCI6Y2FzZSJQdGdNdWwiOmNhc2UiUHRnTmUiOmNhc2UiUHRnUG93ZXIiOmNhc2UiUHRnU3ViIjppZihWZT15ZS5wb3AoKSx6ZT15ZS5wb3AoKSx2dD49MCl7c3dpdGNoKHlbMF1bdnRdWzFdWzBdKXtjYXNlIDA6UHQ9eW4oIiAiLHlbMF1bdnRdWzFdWzFdKTticmVhaztjYXNlIDE6''@;'; put 'put ''UHQ9eW4oIlxyIix5WzBdW3Z0XVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihQdD0iIixuZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgIit5WzBdW3Z0XVsxXVswXSl9emUrPVB0LHZ0PS0xfXllLnB1c2goemUrZGRbWnRbMF1dK1ZlKTticmVhaztj''@;'; put 'put ''YXNlIlB0Z0lzZWN0IjpWZT15ZS5wb3AoKSx6ZT15ZS5wb3AoKSx5ZS5wdXNoKHplKyIgIitWZSk7YnJlYWs7Y2FzZSJQdGdVbmlvbiI6VmU9eWUucG9wKCksemU9eWUucG9wKCkseWUucHVzaCh6ZSsiLCIrVmUpO2JyZWFrO2Nhc2UiUHRnUmFuZ2UiOlZlPXllLnBvcCgpLHplPXllLnBvcCgp''@;'; put 'put ''LHllLnB1c2goemUrIjoiK1ZlKTticmVhaztjYXNlIlB0Z0F0dHJDaG9vc2UiOmNhc2UiUHRnQXR0ckdvdG8iOmNhc2UiUHRnQXR0cklmIjpjYXNlIlB0Z0F0dHJJZkVycm9yIjpjYXNlIlB0Z0F0dHJCYXhjZWwiOmNhc2UiUHRnQXR0clNlbWkiOmNhc2UiUHRnTWVtQXJlYSI6Y2FzZSJQdGdU''@;'; put 'put ''YmwiOmNhc2UiUHRnTWVtRXJyIjpjYXNlIlB0Z01lbUFyZWFOIjpjYXNlIlB0Z01lbU5vTWVtTiI6Y2FzZSJQdGdBdHRyTm9vcCI6Y2FzZSJQdGdTaGVldCI6Y2FzZSJQdGdFbmRTaGVldCI6Y2FzZSJQdGdNZW1GdW5jIjpjYXNlIlB0Z01lbU5vTWVtIjpicmVhaztjYXNlIlB0Z1JlZiI6V2U9''@;'; put 'put ''ZjAoWnRbMV1bMV0sdmUsbmUpLHllLnB1c2godGQoV2UsYmUpKTticmVhaztjYXNlIlB0Z1JlZk4iOldlPUw/ZjAoWnRbMV1bMV0sTCxuZSk6WnRbMV1bMV0seWUucHVzaCh0ZChXZSxiZSkpO2JyZWFrO2Nhc2UiUHRnUmVmM2QiOnJ0PVp0WzFdWzFdLFdlPWYwKFp0WzFdWzJdLHZlLG5lKSxh''@;'; put 'put ''dD1VSChYLHJ0LG5lKSx5ZS5wdXNoKGF0KyIhIit0ZChXZSxiZSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgJG49WnRbMV1bMF0sY249WnRbMV1bMV07JG58fCgkbj0wKTt2YXIgWG49MD09KCRuJj0xMjcpP1tdOnllLnNsaWNlKC0kbik7eWUubGVuZ3RoLT0k''@;'; put 'put ''biwiVXNlciI9PT1jbiYmKGNuPVhuLnNoaWZ0KCkpLHllLnB1c2goY24rIigiK1huLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6eWUucHVzaChadFsxXT8iVFJVRSI6IkZBTFNFIik7YnJlYWs7Y2FzZSJQdGdJbnQiOmNhc2UiUHRnTnVtIjp5ZS5wdXNoKFN0cmluZyhadFsx''@;'; put 'put ''XSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjp5ZS5wdXNoKCciJytadFsxXS5yZXBsYWNlKC8iL2csJyIiJykrJyInKTticmVhaztjYXNlIlB0Z0VyciI6eWUucHVzaChadFsxXSk7YnJlYWs7Y2FzZSJQdGdBcmVhTiI6Q3Q9dDkoWnRbMV1bMV0sTD97czpMfTp2ZSxuZSkseWUucHVzaChoMihDdCxu''@;'; put 'put ''ZSkpO2JyZWFrO2Nhc2UiUHRnQXJlYSI6Q3Q9dDkoWnRbMV1bMV0sdmUsbmUpLHllLnB1c2goaDIoQ3QsbmUpKTticmVhaztjYXNlIlB0Z0FyZWEzZCI6cnQ9WnRbMV1bMV0sQ3Q9dDkoWnRbMV1bMl0sdmUsbmUpLGF0PVVIKFgscnQsbmUpLHllLnB1c2goYXQrIiEiK2gyKEN0LG5lKSk7YnJl''@;'; put 'put ''YWs7Y2FzZSJQdGdBdHRyU3VtIjp5ZS5wdXNoKCJTVU0oIit5ZS5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UiUHRnTmFtZSI6dmFyIEJuPShYLm5hbWVzfHxbXSlbKGx0PVp0WzFdWzJdKS0xXXx8KFhbMF18fFtdKVtsdF0sRG49Qm4/Qm4uTmFtZToiU0gzM1RKU05BTUUiK1N0cmluZyhsdCk7RG4g''@;'; put 'put ''aW4gZXYmJihEbj1ldltEbl0pLHllLnB1c2goRG4pO2JyZWFrO2Nhc2UiUHRnTmFtZVgiOnZhciBlcixRbj1adFsxXVsxXTtpZihsdD1adFsxXVsyXSwhKG5lLmJpZmY8PTUpKXt2YXIgem49IiI7aWYoMTQ4NDk9PSgoWFtRbl18fFtdKVswXXx8W10pWzBdfHwoMTAyNT09KChYW1FuXXx8W10p''@;'; put 'put ''WzBdfHxbXSlbMF0/WFtRbl1bbHRdJiZYW1FuXVtsdF0uaXRhYj4wJiYoem49WC5TaGVldE5hbWVzW1hbUW5dW2x0XS5pdGFiLTFdKyIhIik6em49WC5TaGVldE5hbWVzW2x0LTFdKyIhIiksWFtRbl0mJlhbUW5dW2x0XSl6bis9WFtRbl1bbHRdLk5hbWU7ZWxzZSBpZihYWzBdJiZYWzBdW2x0''@;'; put 'put ''XSl6bis9WFswXVtsdF0uTmFtZTtlbHNle3ZhciBpaT0oUGsoWCxRbixuZSl8fCIiKS5zcGxpdCgiOzsiKTtpaVtsdC0xXT96bj1paVtsdC0xXTp6bis9IlNIMzNUSlNFUlJYIn15ZS5wdXNoKHpuKTticmVha31RbjwwJiYoUW49LVFuKSxYW1FuXSYmKGVyPVhbUW5dW2x0XSksZXJ8fChlcj17''@;'; put 'put ''TmFtZToiU0gzM1RKU0VSUlkifSkseWUucHVzaChlci5OYW1lKTticmVhaztjYXNlIlB0Z1BhcmVuIjp2YXIgRWk9IigiLE9pPSIpIjtpZih2dD49MCl7c3dpdGNoKFB0PSIiLHlbMF1bdnRdWzFdWzBdKXtjYXNlIDI6RWk9eW4oIiAiLHlbMF1bdnRdWzFdWzFdKStFaTticmVhaztjYXNlIDM6''@;'; put 'put ''RWk9eW4oIlxyIix5WzBdW3Z0XVsxXVsxXSkrRWk7YnJlYWs7Y2FzZSA0Ok9pPXluKCIgIix5WzBdW3Z0XVsxXVsxXSkrT2k7YnJlYWs7Y2FzZSA1Ok9pPXluKCJcciIseVswXVt2dF1bMV1bMV0pK09pO2JyZWFrO2RlZmF1bHQ6aWYobmUuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3Rl''@;'; put 'put ''ZCBQdGdBdHRyU3BhY2VUeXBlICIreVswXVt2dF1bMV1bMF0pfXZ0PS0xfXllLnB1c2goRWkreWUucG9wKCkrT2kpO2JyZWFrO2Nhc2UiUHRnUmVmRXJyIjpjYXNlIlB0Z0FyZWFFcnIiOmNhc2UiUHRnQXJlYUVycjNkIjpjYXNlIlB0Z1JlZkVycjNkIjp5ZS5wdXNoKCIjUkVGISIpO2JyZWFr''@;'; put 'put ''O2Nhc2UiUHRnRXhwIjp2YXIgZnI9e2M6TC5jLHI6TC5yfTtpZihYLnNoYXJlZGZbQWkoV2U9e2M6WnRbMV1bMV0scjpadFsxXVswXX0pXSl7dmFyIEFuPVguc2hhcmVkZltBaShXZSldO3llLnB1c2goZ3UoQW4sdmUsZnIsWCxuZSkpfWVsc2V7dmFyIHdyPSExO2ZvcihWZT0wO1ZlIT1YLmFy''@;'; put 'put ''cmF5Zi5sZW5ndGg7KytWZSlpZighKFdlLmM8KHplPVguYXJyYXlmW1ZlXSlbMF0ucy5jfHxXZS5jPnplWzBdLmUuY3x8V2Uucjx6ZVswXS5zLnJ8fFdlLnI+emVbMF0uZS5yKSl7eWUucHVzaChndSh6ZVsxXSx2ZSxmcixYLG5lKSksd3I9ITA7YnJlYWt9d3J8fHllLnB1c2goWnRbMV0pfWJy''@;'; put 'put ''ZWFrO2Nhc2UiUHRnQXJyYXkiOnllLnB1c2goInsiK0swKFp0WzFdKSsifSIpO2JyZWFrO2Nhc2UiUHRnQXR0clNwYWNlIjpjYXNlIlB0Z0F0dHJTcGFjZVNlbWkiOnZ0PWt0O2JyZWFrO2Nhc2UiUHRnTWlzc0FyZyI6eWUucHVzaCgiIik7YnJlYWs7Y2FzZSJQdGdMaXN0Ijp5ZS5wdXNoKCJU''@;'; put 'put ''YWJsZSIrWnRbMV0uaWR4KyJbIyIrWnRbMV0ucnQrIl0iKTticmVhaztjYXNlIlB0Z0VsZkNvbCI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjpjYXNlIlB0Z0VsZkNvbFYiOmNhc2UiUHRnRWxmTGVsIjpjYXNlIlB0Z0VsZlJhZGljYWwiOmNhc2UiUHRnRWxmUmFkaWNhbExl''@;'; put 'put ''bCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZSdyI6Y2FzZSJQdGdFbGZSd1YiOnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgRUxGcyIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoWnQpKX1pZigzIT1u''@;'; put 'put ''ZS5iaWZmJiZ2dD49MCYmLTE9PVsiUHRnQXR0clNwYWNlIiwiUHRnQXR0clNwYWNlU2VtaSIsIlB0Z0F0dHJHb3RvIl0uaW5kZXhPZih5WzBdW2t0XVswXSkpe3ZhciBFbj0hMDtzd2l0Y2goKFp0PXlbMF1bdnRdKVsxXVswXSl7Y2FzZSA0OkVuPSExO2Nhc2UgMDpQdD15bigiICIsWnRbMV1b''@;'; put 'put ''MV0pO2JyZWFrO2Nhc2UgNTpFbj0hMTtjYXNlIDE6UHQ9eW4oIlxyIixadFsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihQdD0iIixuZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgIitadFsxXVswXSl9eWUucHVzaCgoRW4/UHQ6IiIpK3llLnBvcCgp''@;'; put 'put ''KyhFbj8iIjpQdCkpLHZ0PS0xfX1pZih5ZS5sZW5ndGg+MSYmbmUuV1RGKXRocm93IG5ldyBFcnJvcigiYmFkIGZvcm11bGEgc3RhY2siKTtyZXR1cm4geWVbMF19ZnVuY3Rpb24gRmsoeSxQLEwpe3ZhciBmZSxYPXkubCtQLG5lPTI9PUwuYmlmZj8xOjIsYmU9eS5yZWFkX3NoaWZ0KG5lKTtp''@;'; put 'put ''Zig2NTUzNT09YmUpcmV0dXJuW1tdLHBsKHksUC0yKV07dmFyIHZlPXVkKHksYmUsTCk7cmV0dXJuIFAhPT1iZStuZSYmKGZlPVlwKHksUC1iZS1uZSx2ZSxMKSkseS5sPVgsW3ZlLGZlXX1mdW5jdGlvbiBlMyh5LFAsTCl7dmFyIG5lLFg9eS5sK1AsZmU9eS5yZWFkX3NoaWZ0KDIpLGJlPXVk''@;'; put 'put ''KHksZmUsTCk7cmV0dXJuIDY1NTM1PT1mZT9bW10scGwoeSxQLTIpXTooUCE9PWZlKzImJihuZT1ZcCh5LFgtZmUtMixiZSxMKSksW2JlLG5lXSl9ZnVuY3Rpb24gancoeSxQLEwpe3ZhciBYPXkubCtQLG5lPUh1KHkpOzI9PUwuYmlmZiYmKyt5Lmw7dmFyIGZlPWZ1bmN0aW9uIFZ3KHkpe3Zh''@;'; put 'put ''ciBQO2lmKDY1NTM1IT09S3UoeSx5LmwrNikpcmV0dXJuW3phKHkpLCJuIl07c3dpdGNoKHlbeS5sXSl7Y2FzZSAwOnJldHVybiB5LmwrPTgsWyJTdHJpbmciLCJzIl07Y2FzZSAxOnJldHVybiBQPTE9PT15W3kubCsyXSx5LmwrPTgsW1AsImIiXTtjYXNlIDI6cmV0dXJuIFA9eVt5LmwrMl0s''@;'; put 'put ''eS5sKz04LFtQLCJlIl07Y2FzZSAzOnJldHVybiB5LmwrPTgsWyIiLCJzIl19cmV0dXJuW119KHkpLGJlPXkucmVhZF9zaGlmdCgxKTsyIT1MLmJpZmYmJih5LnJlYWRfc2hpZnQoMSksTC5iaWZmPj01JiZ5LnJlYWRfc2hpZnQoNCkpO3ZhciB2ZT1mdW5jdGlvbiBOayh5LFAsTCl7dmFyIGZl''@;'; put 'put ''LFg9eS5sK1AsbmU9Mj09TC5iaWZmPzE6MixiZT15LnJlYWRfc2hpZnQobmUpO2lmKDY1NTM1PT1iZSlyZXR1cm5bW10scGwoeSxQLTIpXTt2YXIgdmU9dWQoeSxiZSxMKTtyZXR1cm4gUCE9PWJlK25lJiYoZmU9WXAoeSxQLWJlLW5lLHZlLEwpKSx5Lmw9WCxbdmUsZmVdfSh5LFgteS5sLEwp''@;'; put 'put ''O3JldHVybntjZWxsOm5lLHZhbDpmZVswXSxmb3JtdWxhOnZlLHNoYXJlZDpiZT4+MyYxLHR0OmZlWzFdfX1mdW5jdGlvbiBXcCh5LFAsTCl7dmFyIFg9eS5yZWFkX3NoaWZ0KDQpLG5lPXVkKHksWCxMKSxmZT15LnJlYWRfc2hpZnQoNCk7cmV0dXJuW25lLGZlPjA/WXAoeSxmZSxuZSxMLCEw''@;'; put 'put ''KTpudWxsXX12YXIgenc9V3AsR3A9V3AsVms9V3AsWkg9ZnVuY3Rpb24gSGsoeSxQLEwpe3ZhciBYPXkucmVhZF9zaGlmdCg0KSxuZT15LnJlYWRfc2hpZnQoNCksZmU9dWQoeSxYLEwpO3JldHVybltmZSxuZT4wP1lwKHksbmUsZmUsTCwhMCk6bnVsbF19LEJrPVdwLFlIPVdwO2Z1bmN0aW9u''@;'; put 'put ''IFV3KHkpe2lmKCgwfHkpPT15JiZ5PE1hdGgucG93KDIsMTYpJiZ5Pj0wKXt2YXIgUD14cigxMSk7cmV0dXJuIFAud3JpdGVfc2hpZnQoNCwzKSxQLndyaXRlX3NoaWZ0KDEsMzApLFAud3JpdGVfc2hpZnQoMix5KSxQLndyaXRlX3NoaWZ0KDQsMCksUH12YXIgTD14cigxNyk7cmV0dXJuIEwu''@;'; put 'put ''d3JpdGVfc2hpZnQoNCwxMSksTC53cml0ZV9zaGlmdCgxLDMxKSxMLndyaXRlX3NoaWZ0KDgseSksTC53cml0ZV9zaGlmdCg0LDApLEx9ZnVuY3Rpb24gWncoeSl7dmFyIFA9eHIoNyk7UC53cml0ZV9zaGlmdCg0LDMrMip5Lmxlbmd0aCksUC53cml0ZV9zaGlmdCgxLDIzKSxQLndyaXRlX3No''@;'; put 'put ''aWZ0KDIseS5sZW5ndGgpO3ZhciBMPXhyKDIqeS5sZW5ndGgpO0wud3JpdGVfc2hpZnQoMip5Lmxlbmd0aCx5LCJ1dGYxNmxlIik7dmFyIFg9eHIoNCk7cmV0dXJuIFgud3JpdGVfc2hpZnQoNCwwKSxrKFtQLEwsWF0pfWZ1bmN0aW9uICRwKHkpe2lmKHkubWF0Y2goL14jKERJVlwvMCF8R0VU''@;'; put 'put ''VElOR19EQVRBfE5cL0F8TkFNRVw/fE5VTEwhfE5VTSF8UkVGIXxWQUxVRSEpJC8pKXJldHVybiBmdW5jdGlvbiBXSCh5KXt2YXIgUD14cigxMCk7cmV0dXJuIFAud3JpdGVfc2hpZnQoNCwyKSxQLndyaXRlX3NoaWZ0KDEsMjgpLFAud3JpdGVfc2hpZnQoMSx5KSxQLndyaXRlX3NoaWZ0KDQs''@;'; put 'put ''MCksUH0oK0JmW3ldKTtpZih5Lm1hdGNoKC9eXCQ/KD86W0EtV11bQS1aXXsyfXxYW0EtRV1bQS1aXXxYRltBLURdfFtBLVpdezEsMn0pXCQ/KD86MTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkk''@;'; put 'put ''LykpcmV0dXJuIGZ1bmN0aW9uIGE2KHkpe3ZhciBQPWtzKHkpLEw9eHIoMTUpO3JldHVybiBMLndyaXRlX3NoaWZ0KDQsNyksTC53cml0ZV9zaGlmdCgxLDM2KSxMLndyaXRlX3NoaWZ0KDQsUC5yKSxMLndyaXRlX3NoaWZ0KDIsUC5jfCgiJCI9PXkuY2hhckF0KDApPzA6MSk8PDE0fCh5Lm1h''@;'; put 'put ''dGNoKC9cJFxkLyk/MDoxKTw8MTUpLEwud3JpdGVfc2hpZnQoNCwwKSxMfSh5KTtpZih5Lm1hdGNoKC9eIi4qIiQvKSlyZXR1cm4gWncoeSk7dGhyb3ciRm9ybXVsYSB8Iit5KyJ8IG5vdCBzdXBwb3J0ZWQgZm9yIFhMU0IifXZhciBZdz17MDoiQkVFUCIsMToiT1BFTiIsMjoiT1BFTi5MSU5L''@;'; put 'put ''UyIsMzoiQ0xPU0UuQUxMIiw0OiJTQVZFIiw1OiJTQVZFLkFTIiw2OiJGSUxFLkRFTEVURSIsNzoiUEFHRS5TRVRVUCIsODoiUFJJTlQiLDk6IlBSSU5URVIuU0VUVVAiLDEwOiJRVUlUIiwxMToiTkVXLldJTkRPVyIsMTI6IkFSUkFOR0UuQUxMIiwxMzoiV0lORE9XLlNJWkUiLDE0OiJXSU5E''@;'; put 'put ''T1cuTU9WRSIsMTU6IkZVTEwiLDE2OiJDTE9TRSIsMTc6IlJVTiIsMjI6IlNFVC5QUklOVC5BUkVBIiwyMzoiU0VULlBSSU5ULlRJVExFUyIsMjQ6IlNFVC5QQUdFLkJSRUFLIiwyNToiUkVNT1ZFLlBBR0UuQlJFQUsiLDI2OiJGT05UIiwyNzoiRElTUExBWSIsMjg6IlBST1RFQ1QuRE9DVU1F''@;'; put 'put ''TlQiLDI5OiJQUkVDSVNJT04iLDMwOiJBMS5SMUMxIiwzMToiQ0FMQ1VMQVRFLk5PVyIsMzI6IkNBTENVTEFUSU9OIiwzNDoiREFUQS5GSU5EIiwzNToiRVhUUkFDVCIsMzY6IkRBVEEuREVMRVRFIiwzNzoiU0VULkRBVEFCQVNFIiwzODoiU0VULkNSSVRFUklBIiwzOToiU09SVCIsNDA6IkRB''@;'; put 'put ''VEEuU0VSSUVTIiw0MToiVEFCTEUiLDQyOiJGT1JNQVQuTlVNQkVSIiw0MzoiQUxJR05NRU5UIiw0NDoiU1RZTEUiLDQ1OiJCT1JERVIiLDQ2OiJDRUxMLlBST1RFQ1RJT04iLDQ3OiJDT0xVTU4uV0lEVEgiLDQ4OiJVTkRPIiw0OToiQ1VUIiw1MDoiQ09QWSIsNTE6IlBBU1RFIiw1MjoiQ0xF''@;'; put 'put ''QVIiLDUzOiJQQVNURS5TUEVDSUFMIiw1NDoiRURJVC5ERUxFVEUiLDU1OiJJTlNFUlQiLDU2OiJGSUxMLlJJR0hUIiw1NzoiRklMTC5ET1dOIiw2MToiREVGSU5FLk5BTUUiLDYyOiJDUkVBVEUuTkFNRVMiLDYzOiJGT1JNVUxBLkdPVE8iLDY0OiJGT1JNVUxBLkZJTkQiLDY1OiJTRUxFQ1Qu''@;'; put 'put ''TEFTVC5DRUxMIiw2NjoiU0hPVy5BQ1RJVkUuQ0VMTCIsNjc6IkdBTExFUlkuQVJFQSIsNjg6IkdBTExFUlkuQkFSIiw2OToiR0FMTEVSWS5DT0xVTU4iLDcwOiJHQUxMRVJZLkxJTkUiLDcxOiJHQUxMRVJZLlBJRSIsNzI6IkdBTExFUlkuU0NBVFRFUiIsNzM6IkNPTUJJTkFUSU9OIiw3NDoi''@;'; put 'put ''UFJFRkVSUkVEIiw3NToiQURELk9WRVJMQVkiLDc2OiJHUklETElORVMiLDc3OiJTRVQuUFJFRkVSUkVEIiw3ODoiQVhFUyIsNzk6IkxFR0VORCIsODA6IkFUVEFDSC5URVhUIiw4MToiQURELkFSUk9XIiw4MjoiU0VMRUNULkNIQVJUIiw4MzoiU0VMRUNULlBMT1QuQVJFQSIsODQ6IlBBVFRF''@;'; put 'put ''Uk5TIiw4NToiTUFJTi5DSEFSVCIsODY6Ik9WRVJMQVkiLDg3OiJTQ0FMRSIsODg6IkZPUk1BVC5MRUdFTkQiLDg5OiJGT1JNQVQuVEVYVCIsOTA6IkVESVQuUkVQRUFUIiw5MToiUEFSU0UiLDkyOiJKVVNUSUZZIiw5MzoiSElERSIsOTQ6IlVOSElERSIsOTU6IldPUktTUEFDRSIsOTY6IkZP''@;'; put 'put ''Uk1VTEEiLDk3OiJGT1JNVUxBLkZJTEwiLDk4OiJGT1JNVUxBLkFSUkFZIiw5OToiREFUQS5GSU5ELk5FWFQiLDEwMDoiREFUQS5GSU5ELlBSRVYiLDEwMToiRk9STVVMQS5GSU5ELk5FWFQiLDEwMjoiRk9STVVMQS5GSU5ELlBSRVYiLDEwMzoiQUNUSVZBVEUiLDEwNDoiQUNUSVZBVEUuTkVY''@;'; put 'put ''VCIsMTA1OiJBQ1RJVkFURS5QUkVWIiwxMDY6IlVOTE9DS0VELk5FWFQiLDEwNzoiVU5MT0NLRUQuUFJFViIsMTA4OiJDT1BZLlBJQ1RVUkUiLDEwOToiU0VMRUNUIiwxMTA6IkRFTEVURS5OQU1FIiwxMTE6IkRFTEVURS5GT1JNQVQiLDExMjoiVkxJTkUiLDExMzoiSExJTkUiLDExNDoiVlBB''@;'; put 'put ''R0UiLDExNToiSFBBR0UiLDExNjoiVlNDUk9MTCIsMTE3OiJIU0NST0xMIiwxMTg6IkFMRVJUIiwxMTk6Ik5FVyIsMTIwOiJDQU5DRUwuQ09QWSIsMTIxOiJTSE9XLkNMSVBCT0FSRCIsMTIyOiJNRVNTQUdFIiwxMjQ6IlBBU1RFLkxJTksiLDEyNToiQVBQLkFDVElWQVRFIiwxMjY6IkRFTEVU''@;'; put 'put ''RS5BUlJPVyIsMTI3OiJST1cuSEVJR0hUIiwxMjg6IkZPUk1BVC5NT1ZFIiwxMjk6IkZPUk1BVC5TSVpFIiwxMzA6IkZPUk1VTEEuUkVQTEFDRSIsMTMxOiJTRU5ELktFWVMiLDEzMjoiU0VMRUNULlNQRUNJQUwiLDEzMzoiQVBQTFkuTkFNRVMiLDEzNDoiUkVQTEFDRS5GT05UIiwxMzU6IkZS''@;'; put 'put ''RUVaRS5QQU5FUyIsMTM2OiJTSE9XLklORk8iLDEzNzoiU1BMSVQiLDEzODoiT04uV0lORE9XIiwxMzk6Ik9OLkRBVEEiLDE0MDoiRElTQUJMRS5JTlBVVCIsMTQyOiJPVVRMSU5FIiwxNDM6IkxJU1QuTkFNRVMiLDE0NDoiRklMRS5DTE9TRSIsMTQ1OiJTQVZFLldPUktCT09LIiwxNDY6IkRB''@;'; put 'put ''VEEuRk9STSIsMTQ3OiJDT1BZLkNIQVJUIiwxNDg6Ik9OLlRJTUUiLDE0OToiV0FJVCIsMTUwOiJGT1JNQVQuRk9OVCIsMTUxOiJGSUxMLlVQIiwxNTI6IkZJTEwuTEVGVCIsMTUzOiJERUxFVEUuT1ZFUkxBWSIsMTU1OiJTSE9SVC5NRU5VUyIsMTU5OiJTRVQuVVBEQVRFLlNUQVRVUyIsMTYx''@;'; put 'put ''OiJDT0xPUi5QQUxFVFRFIiwxNjI6IkRFTEVURS5TVFlMRSIsMTYzOiJXSU5ET1cuUkVTVE9SRSIsMTY0OiJXSU5ET1cuTUFYSU1JWkUiLDE2NjoiQ0hBTkdFLkxJTksiLDE2NzoiQ0FMQ1VMQVRFLkRPQ1VNRU5UIiwxNjg6Ik9OLktFWSIsMTY5OiJBUFAuUkVTVE9SRSIsMTcwOiJBUFAuTU9W''@;'; put 'put ''RSIsMTcxOiJBUFAuU0laRSIsMTcyOiJBUFAuTUlOSU1JWkUiLDE3MzoiQVBQLk1BWElNSVpFIiwxNzQ6IkJSSU5HLlRPLkZST05UIiwxNzU6IlNFTkQuVE8uQkFDSyIsMTg1OiJNQUlOLkNIQVJULlRZUEUiLDE4NjoiT1ZFUkxBWS5DSEFSVC5UWVBFIiwxODc6IlNFTEVDVC5FTkQiLDE4ODoi''@;'; put 'put ''T1BFTi5NQUlMIiwxODk6IlNFTkQuTUFJTCIsMTkwOiJTVEFOREFSRC5GT05UIiwxOTE6IkNPTlNPTElEQVRFIiwxOTI6IlNPUlQuU1BFQ0lBTCIsMTkzOiJHQUxMRVJZLjNELkFSRUEiLDE5NDoiR0FMTEVSWS4zRC5DT0xVTU4iLDE5NToiR0FMTEVSWS4zRC5MSU5FIiwxOTY6IkdBTExFUlku''@;'; put 'put ''M0QuUElFIiwxOTc6IlZJRVcuM0QiLDE5ODoiR09BTC5TRUVLIiwxOTk6IldPUktHUk9VUCIsMjAwOiJGSUxMLkdST1VQIiwyMDE6IlVQREFURS5MSU5LIiwyMDI6IlBST01PVEUiLDIwMzoiREVNT1RFIiwyMDQ6IlNIT1cuREVUQUlMIiwyMDY6IlVOR1JPVVAiLDIwNzoiT0JKRUNULlBST1BF''@;'; put 'put ''UlRJRVMiLDIwODoiU0FWRS5ORVcuT0JKRUNUIiwyMDk6IlNIQVJFIiwyMTA6IlNIQVJFLk5BTUUiLDIxMToiRFVQTElDQVRFIiwyMTI6IkFQUExZLlNUWUxFIiwyMTM6IkFTU0lHTi5UTy5PQkpFQ1QiLDIxNDoiT0JKRUNULlBST1RFQ1RJT04iLDIxNToiSElERS5PQkpFQ1QiLDIxNjoiU0VU''@;'; put 'put ''LkVYVFJBQ1QiLDIxNzoiQ1JFQVRFLlBVQkxJU0hFUiIsMjE4OiJTVUJTQ1JJQkUuVE8iLDIxOToiQVRUUklCVVRFUyIsMjIwOiJTSE9XLlRPT0xCQVIiLDIyMjoiUFJJTlQuUFJFVklFVyIsMjIzOiJFRElULkNPTE9SIiwyMjQ6IlNIT1cuTEVWRUxTIiwyMjU6IkZPUk1BVC5NQUlOIiwyMjY6''@;'; put 'put ''IkZPUk1BVC5PVkVSTEFZIiwyMjc6Ik9OLlJFQ0FMQyIsMjI4OiJFRElULlNFUklFUyIsMjI5OiJERUZJTkUuU1RZTEUiLDI0MDoiTElORS5QUklOVCIsMjQzOiJFTlRFUi5EQVRBIiwyNDk6IkdBTExFUlkuUkFEQVIiLDI1MDoiTUVSR0UuU1RZTEVTIiwyNTE6IkVESVRJT04uT1BUSU9OUyIs''@;'; put 'put ''MjUyOiJQQVNURS5QSUNUVVJFIiwyNTM6IlBBU1RFLlBJQ1RVUkUuTElOSyIsMjU0OiJTUEVMTElORyIsMjU2OiJaT09NIiwyNTk6IklOU0VSVC5PQkpFQ1QiLDI2MDoiV0lORE9XLk1JTklNSVpFIiwyNjU6IlNPVU5ELk5PVEUiLDI2NjoiU09VTkQuUExBWSIsMjY3OiJGT1JNQVQuU0hBUEUi''@;'; put 'put ''LDI2ODoiRVhURU5ELlBPTFlHT04iLDI2OToiRk9STUFULkFVVE8iLDI3MjoiR0FMTEVSWS4zRC5CQVIiLDI3MzoiR0FMTEVSWS4zRC5TVVJGQUNFIiwyNzQ6IkZJTEwuQVVUTyIsMjc2OiJDVVNUT01JWkUuVE9PTEJBUiIsMjc3OiJBREQuVE9PTCIsMjc4OiJFRElULk9CSkVDVCIsMjc5OiJP''@;'; put 'put ''Ti5ET1VCTEVDTElDSyIsMjgwOiJPTi5FTlRSWSIsMjgxOiJXT1JLQk9PSy5BREQiLDI4MjoiV09SS0JPT0suTU9WRSIsMjgzOiJXT1JLQk9PSy5DT1BZIiwyODQ6IldPUktCT09LLk9QVElPTlMiLDI4NToiU0FWRS5XT1JLU1BBQ0UiLDI4ODoiQ0hBUlQuV0laQVJEIiwyODk6IkRFTEVURS5U''@;'; put 'put ''T09MIiwyOTA6Ik1PVkUuVE9PTCIsMjkxOiJXT1JLQk9PSy5TRUxFQ1QiLDI5MjoiV09SS0JPT0suQUNUSVZBVEUiLDI5MzoiQVNTSUdOLlRPLlRPT0wiLDI5NToiQ09QWS5UT09MIiwyOTY6IlJFU0VULlRPT0wiLDI5NzoiQ09OU1RSQUlOLk5VTUVSSUMiLDI5ODoiUEFTVEUuVE9PTCIsMzAy''@;'; put 'put ''OiJXT1JLQk9PSy5ORVciLDMwNToiU0NFTkFSSU8uQ0VMTFMiLDMwNjoiU0NFTkFSSU8uREVMRVRFIiwzMDc6IlNDRU5BUklPLkFERCIsMzA4OiJTQ0VOQVJJTy5FRElUIiwzMDk6IlNDRU5BUklPLlNIT1ciLDMxMDoiU0NFTkFSSU8uU0hPVy5ORVhUIiwzMTE6IlNDRU5BUklPLlNVTU1BUlki''@;'; put 'put ''LDMxMjoiUElWT1QuVEFCTEUuV0laQVJEIiwzMTM6IlBJVk9ULkZJRUxELlBST1BFUlRJRVMiLDMxNDoiUElWT1QuRklFTEQiLDMxNToiUElWT1QuSVRFTSIsMzE2OiJQSVZPVC5BREQuRklFTERTIiwzMTg6Ik9QVElPTlMuQ0FMQ1VMQVRJT04iLDMxOToiT1BUSU9OUy5FRElUIiwzMjA6Ik9Q''@;'; put 'put ''VElPTlMuVklFVyIsMzIxOiJBRERJTi5NQU5BR0VSIiwzMjI6Ik1FTlUuRURJVE9SIiwzMjM6IkFUVEFDSC5UT09MQkFSUyIsMzI0OiJWQkFBY3RpdmF0ZSIsMzI1OiJPUFRJT05TLkNIQVJUIiwzMjg6IlZCQS5JTlNFUlQuRklMRSIsMzMwOiJWQkEuUFJPQ0VEVVJFLkRFRklOSVRJT04iLDMz''@;'; put 'put ''NjoiUk9VVElORy5TTElQIiwzMzg6IlJPVVRFLkRPQ1VNRU5UIiwzMzk6Ik1BSUwuTE9HT04iLDM0MjoiSU5TRVJULlBJQ1RVUkUiLDM0MzoiRURJVC5UT09MIiwzNDQ6IkdBTExFUlkuRE9VR0hOVVQiLDM1MDoiQ0hBUlQuVFJFTkQiLDM1MjoiUElWT1QuSVRFTS5QUk9QRVJUSUVTIiwzNTQ6''@;'; put 'put ''IldPUktCT09LLklOU0VSVCIsMzU1OiJPUFRJT05TLlRSQU5TSVRJT04iLDM1NjoiT1BUSU9OUy5HRU5FUkFMIiwzNzA6IkZJTFRFUi5BRFZBTkNFRCIsMzczOiJNQUlMLkFERC5NQUlMRVIiLDM3NDoiTUFJTC5ERUxFVEUuTUFJTEVSIiwzNzU6Ik1BSUwuUkVQTFkiLDM3NjoiTUFJTC5SRVBM''@;'; put 'put ''WS5BTEwiLDM3NzoiTUFJTC5GT1JXQVJEIiwzNzg6Ik1BSUwuTkVYVC5MRVRURVIiLDM3OToiREFUQS5MQUJFTCIsMzgwOiJJTlNFUlQuVElUTEUiLDM4MToiRk9OVC5QUk9QRVJUSUVTIiwzODI6Ik1BQ1JPLk9QVElPTlMiLDM4MzoiV09SS0JPT0suSElERSIsMzg0OiJXT1JLQk9PSy5VTkhJ''@;'; put 'put ''REUiLDM4NToiV09SS0JPT0suREVMRVRFIiwzODY6IldPUktCT09LLk5BTUUiLDM4ODoiR0FMTEVSWS5DVVNUT00iLDM5MDoiQURELkNIQVJULkFVVE9GT1JNQVQiLDM5MToiREVMRVRFLkNIQVJULkFVVE9GT1JNQVQiLDM5MjoiQ0hBUlQuQURELkRBVEEiLDM5MzoiQVVUTy5PVVRMSU5FIiwz''@;'; put 'put ''OTQ6IlRBQi5PUkRFUiIsMzk1OiJTSE9XLkRJQUxPRyIsMzk2OiJTRUxFQ1QuQUxMIiwzOTc6IlVOR1JPVVAuU0hFRVRTIiwzOTg6IlNVQlRPVEFMLkNSRUFURSIsMzk5OiJTVUJUT1RBTC5SRU1PVkUiLDQwMDoiUkVOQU1FLk9CSkVDVCIsNDEyOiJXT1JLQk9PSy5TQ1JPTEwiLDQxMzoiV09S''@;'; put 'put ''S0JPT0suTkVYVCIsNDE0OiJXT1JLQk9PSy5QUkVWIiw0MTU6IldPUktCT09LLlRBQi5TUExJVCIsNDE2OiJGVUxMLlNDUkVFTiIsNDE3OiJXT1JLQk9PSy5QUk9URUNUIiw0MjA6IlNDUk9MTEJBUi5QUk9QRVJUSUVTIiw0MjE6IlBJVk9ULlNIT1cuUEFHRVMiLDQyMjoiVEVYVC5UTy5DT0xV''@;'; put 'put ''TU5TIiw0MjM6IkZPUk1BVC5DSEFSVFRZUEUiLDQyNDoiTElOSy5GT1JNQVQiLDQyNToiVFJBQ0VSLkRJU1BMQVkiLDQzMDoiVFJBQ0VSLk5BVklHQVRFIiw0MzE6IlRSQUNFUi5DTEVBUiIsNDMyOiJUUkFDRVIuRVJST1IiLDQzMzoiUElWT1QuRklFTEQuR1JPVVAiLDQzNDoiUElWT1QuRklF''@;'; put 'put ''TEQuVU5HUk9VUCIsNDM1OiJDSEVDS0JPWC5QUk9QRVJUSUVTIiw0MzY6IkxBQkVMLlBST1BFUlRJRVMiLDQzNzoiTElTVEJPWC5QUk9QRVJUSUVTIiw0Mzg6IkVESVRCT1guUFJPUEVSVElFUyIsNDM5OiJQSVZPVC5SRUZSRVNIIiw0NDA6IkxJTksuQ09NQk8iLDQ0MToiT1BFTi5URVhUIiw0''@;'; put 'put ''NDI6IkhJREUuRElBTE9HIiw0NDM6IlNFVC5ESUFMT0cuRk9DVVMiLDQ0NDoiRU5BQkxFLk9CSkVDVCIsNDQ1OiJQVVNIQlVUVE9OLlBST1BFUlRJRVMiLDQ0NjoiU0VULkRJQUxPRy5ERUZBVUxUIiw0NDc6IkZJTFRFUiIsNDQ4OiJGSUxURVIuU0hPVy5BTEwiLDQ0OToiQ0xFQVIuT1VUTElO''@;'; put 'put ''RSIsNDUwOiJGVU5DVElPTi5XSVpBUkQiLDQ1MToiQURELkxJU1QuSVRFTSIsNDUyOiJTRVQuTElTVC5JVEVNIiw0NTM6IlJFTU9WRS5MSVNULklURU0iLDQ1NDoiU0VMRUNULkxJU1QuSVRFTSIsNDU1OiJTRVQuQ09OVFJPTC5WQUxVRSIsNDU2OiJTQVZFLkNPUFkuQVMiLDQ1ODoiT1BUSU9O''@;'; put 'put ''Uy5MSVNUUy5BREQiLDQ1OToiT1BUSU9OUy5MSVNUUy5ERUxFVEUiLDQ2MDoiU0VSSUVTLkFYRVMiLDQ2MToiU0VSSUVTLlgiLDQ2MjoiU0VSSUVTLlkiLDQ2MzoiRVJST1JCQVIuWCIsNDY0OiJFUlJPUkJBUi5ZIiw0NjU6IkZPUk1BVC5DSEFSVCIsNDY2OiJTRVJJRVMuT1JERVIiLDQ2Nzoi''@;'; put 'put ''TUFJTC5MT0dPRkYiLDQ2ODoiQ0xFQVIuUk9VVElORy5TTElQIiw0Njk6IkFQUC5BQ1RJVkFURS5NSUNST1NPRlQiLDQ3MDoiTUFJTC5FRElULk1BSUxFUiIsNDcxOiJPTi5TSEVFVCIsNDcyOiJTVEFOREFSRC5XSURUSCIsNDczOiJTQ0VOQVJJTy5NRVJHRSIsNDc0OiJTVU1NQVJZLklORk8i''@;'; put 'put ''LDQ3NToiRklORC5GSUxFIiw0NzY6IkFDVElWRS5DRUxMLkZPTlQiLDQ3NzoiRU5BQkxFLlRJUFdJWkFSRCIsNDc4OiJWQkEuTUFLRS5BRERJTiIsNDgwOiJJTlNFUlREQVRBVEFCTEUiLDQ4MToiV09SS0dST1VQLk9QVElPTlMiLDQ4MjoiTUFJTC5TRU5ELk1BSUxFUiIsNDg1OiJBVVRPQ09S''@;'; put 'put ''UkVDVCIsNDg5OiJQT1NULkRPQ1VNRU5UIiw0OTE6IlBJQ0tMSVNUIiw0OTM6IlZJRVcuU0hPVyIsNDk0OiJWSUVXLkRFRklORSIsNDk1OiJWSUVXLkRFTEVURSIsNTA5OiJTSEVFVC5CQUNLR1JPVU5EIiw1MTA6IklOU0VSVC5NQVAuT0JKRUNUIiw1MTE6Ik9QVElPTlMuTUVOT05PIiw1MTc6''@;'; put 'put ''Ik1TT0NIRUNLUyIsNTE4OiJOT1JNQUwiLDUxOToiTEFZT1VUIiw1MjA6IlJNLlBSSU5ULkFSRUEiLDUyMToiQ0xFQVIuUFJJTlQuQVJFQSIsNTIyOiJBREQuUFJJTlQuQVJFQSIsNTIzOiJNT1ZFLkJSSyIsNTQ1OiJISURFQ1VSUi5OT1RFIiw1NDY6IkhJREVBTEwuTk9URVMiLDU0NzoiREVM''@;'; put 'put ''RVRFLk5PVEUiLDU0ODoiVFJBVkVSU0UuTk9URVMiLDU0OToiQUNUSVZBVEUuTk9URVMiLDYyMDoiUFJPVEVDVC5SRVZJU0lPTlMiLDYyMToiVU5QUk9URUNULlJFVklTSU9OUyIsNjQ3OiJPUFRJT05TLk1FIiw2NTM6IldFQi5QVUJMSVNIIiw2Njc6Ik5FV1dFQlFVRVJZIiw2NzM6IlBJVk9U''@;'; put 'put ''LlRBQkxFLkNIQVJUIiw3NTM6Ik9QVElPTlMuU0FWRSIsNzU1OiJPUFRJT05TLlNQRUxMIiw4MDg6IkhJREVBTEwuSU5LQU5OT1RTIn0sams9ezA6IkNPVU5UIiwxOiJJRiIsMjoiSVNOQSIsMzoiSVNFUlJPUiIsNDoiU1VNIiw1OiJBVkVSQUdFIiw2OiJNSU4iLDc6Ik1BWCIsODoiUk9XIiw5''@;'; put 'put ''OiJDT0xVTU4iLDEwOiJOQSIsMTE6Ik5QViIsMTI6IlNUREVWIiwxMzoiRE9MTEFSIiwxNDoiRklYRUQiLDE1OiJTSU4iLDE2OiJDT1MiLDE3OiJUQU4iLDE4OiJBVEFOIiwxOToiUEkiLDIwOiJTUVJUIiwyMToiRVhQIiwyMjoiTE4iLDIzOiJMT0cxMCIsMjQ6IkFCUyIsMjU6IklOVCIsMjY6''@;'; put 'put ''IlNJR04iLDI3OiJST1VORCIsMjg6IkxPT0tVUCIsMjk6IklOREVYIiwzMDoiUkVQVCIsMzE6Ik1JRCIsMzI6IkxFTiIsMzM6IlZBTFVFIiwzNDoiVFJVRSIsMzU6IkZBTFNFIiwzNjoiQU5EIiwzNzoiT1IiLDM4OiJOT1QiLDM5OiJNT0QiLDQwOiJEQ09VTlQiLDQxOiJEU1VNIiw0MjoiREFW''@;'; put 'put ''RVJBR0UiLDQzOiJETUlOIiw0NDoiRE1BWCIsNDU6IkRTVERFViIsNDY6IlZBUiIsNDc6IkRWQVIiLDQ4OiJURVhUIiw0OToiTElORVNUIiw1MDoiVFJFTkQiLDUxOiJMT0dFU1QiLDUyOiJHUk9XVEgiLDUzOiJHT1RPIiw1NDoiSEFMVCIsNTU6IlJFVFVSTiIsNTY6IlBWIiw1NzoiRlYiLDU4''@;'; put 'put ''OiJOUEVSIiw1OToiUE1UIiw2MDoiUkFURSIsNjE6Ik1JUlIiLDYyOiJJUlIiLDYzOiJSQU5EIiw2NDoiTUFUQ0giLDY1OiJEQVRFIiw2NjoiVElNRSIsNjc6IkRBWSIsNjg6Ik1PTlRIIiw2OToiWUVBUiIsNzA6IldFRUtEQVkiLDcxOiJIT1VSIiw3MjoiTUlOVVRFIiw3MzoiU0VDT05EIiw3''@;'; put 'put ''NDoiTk9XIiw3NToiQVJFQVMiLDc2OiJST1dTIiw3NzoiQ09MVU1OUyIsNzg6Ik9GRlNFVCIsNzk6IkFCU1JFRiIsODA6IlJFTFJFRiIsODE6IkFSR1VNRU5UIiw4MjoiU0VBUkNIIiw4MzoiVFJBTlNQT1NFIiw4NDoiRVJST1IiLDg1OiJTVEVQIiw4NjoiVFlQRSIsODc6IkVDSE8iLDg4OiJT''@;'; put 'put ''RVQuTkFNRSIsODk6IkNBTExFUiIsOTA6IkRFUkVGIiw5MToiV0lORE9XUyIsOTI6IlNFUklFUyIsOTM6IkRPQ1VNRU5UUyIsOTQ6IkFDVElWRS5DRUxMIiw5NToiU0VMRUNUSU9OIiw5NjoiUkVTVUxUIiw5NzoiQVRBTjIiLDk4OiJBU0lOIiw5OToiQUNPUyIsMTAwOiJDSE9PU0UiLDEwMToi''@;'; put 'put ''SExPT0tVUCIsMTAyOiJWTE9PS1VQIiwxMDM6IkxJTktTIiwxMDQ6IklOUFVUIiwxMDU6IklTUkVGIiwxMDY6IkdFVC5GT1JNVUxBIiwxMDc6IkdFVC5OQU1FIiwxMDg6IlNFVC5WQUxVRSIsMTA5OiJMT0ciLDExMDoiRVhFQyIsMTExOiJDSEFSIiwxMTI6IkxPV0VSIiwxMTM6IlVQUEVSIiwx''@;'; put 'put ''MTQ6IlBST1BFUiIsMTE1OiJMRUZUIiwxMTY6IlJJR0hUIiwxMTc6IkVYQUNUIiwxMTg6IlRSSU0iLDExOToiUkVQTEFDRSIsMTIwOiJTVUJTVElUVVRFIiwxMjE6IkNPREUiLDEyMjoiTkFNRVMiLDEyMzoiRElSRUNUT1JZIiwxMjQ6IkZJTkQiLDEyNToiQ0VMTCIsMTI2OiJJU0VSUiIsMTI3''@;'; put 'put ''OiJJU1RFWFQiLDEyODoiSVNOVU1CRVIiLDEyOToiSVNCTEFOSyIsMTMwOiJUIiwxMzE6Ik4iLDEzMjoiRk9QRU4iLDEzMzoiRkNMT1NFIiwxMzQ6IkZTSVpFIiwxMzU6IkZSRUFETE4iLDEzNjoiRlJFQUQiLDEzNzoiRldSSVRFTE4iLDEzODoiRldSSVRFIiwxMzk6IkZQT1MiLDE0MDoiREFU''@;'; put 'put ''RVZBTFVFIiwxNDE6IlRJTUVWQUxVRSIsMTQyOiJTTE4iLDE0MzoiU1lEIiwxNDQ6IkREQiIsMTQ1OiJHRVQuREVGIiwxNDY6IlJFRlRFWFQiLDE0NzoiVEVYVFJFRiIsMTQ4OiJJTkRJUkVDVCIsMTQ5OiJSRUdJU1RFUiIsMTUwOiJDQUxMIiwxNTE6IkFERC5CQVIiLDE1MjoiQURELk1FTlUi''@;'; put 'put ''LDE1MzoiQURELkNPTU1BTkQiLDE1NDoiRU5BQkxFLkNPTU1BTkQiLDE1NToiQ0hFQ0suQ09NTUFORCIsMTU2OiJSRU5BTUUuQ09NTUFORCIsMTU3OiJTSE9XLkJBUiIsMTU4OiJERUxFVEUuTUVOVSIsMTU5OiJERUxFVEUuQ09NTUFORCIsMTYwOiJHRVQuQ0hBUlQuSVRFTSIsMTYxOiJESUFM''@;'; put 'put ''T0cuQk9YIiwxNjI6IkNMRUFOIiwxNjM6Ik1ERVRFUk0iLDE2NDoiTUlOVkVSU0UiLDE2NToiTU1VTFQiLDE2NjoiRklMRVMiLDE2NzoiSVBNVCIsMTY4OiJQUE1UIiwxNjk6IkNPVU5UQSIsMTcwOiJDQU5DRUwuS0VZIiwxNzE6IkZPUiIsMTcyOiJXSElMRSIsMTczOiJCUkVBSyIsMTc0OiJO''@;'; put 'put ''RVhUIiwxNzU6IklOSVRJQVRFIiwxNzY6IlJFUVVFU1QiLDE3NzoiUE9LRSIsMTc4OiJFWEVDVVRFIiwxNzk6IlRFUk1JTkFURSIsMTgwOiJSRVNUQVJUIiwxODE6IkhFTFAiLDE4MjoiR0VULkJBUiIsMTgzOiJQUk9EVUNUIiwxODQ6IkZBQ1QiLDE4NToiR0VULkNFTEwiLDE4NjoiR0VULldP''@;'; put 'put ''UktTUEFDRSIsMTg3OiJHRVQuV0lORE9XIiwxODg6IkdFVC5ET0NVTUVOVCIsMTg5OiJEUFJPRFVDVCIsMTkwOiJJU05PTlRFWFQiLDE5MToiR0VULk5PVEUiLDE5MjoiTk9URSIsMTkzOiJTVERFVlAiLDE5NDoiVkFSUCIsMTk1OiJEU1RERVZQIiwxOTY6IkRWQVJQIiwxOTc6IlRSVU5DIiwx''@;'; put 'put ''OTg6IklTTE9HSUNBTCIsMTk5OiJEQ09VTlRBIiwyMDA6IkRFTEVURS5CQVIiLDIwMToiVU5SRUdJU1RFUiIsMjA0OiJVU0RPTExBUiIsMjA1OiJGSU5EQiIsMjA2OiJTRUFSQ0hCIiwyMDc6IlJFUExBQ0VCIiwyMDg6IkxFRlRCIiwyMDk6IlJJR0hUQiIsMjEwOiJNSURCIiwyMTE6IkxFTkIi''@;'; put 'put ''LDIxMjoiUk9VTkRVUCIsMjEzOiJST1VORERPV04iLDIxNDoiQVNDIiwyMTU6IkRCQ1MiLDIxNjoiUkFOSyIsMjE5OiJBRERSRVNTIiwyMjA6IkRBWVMzNjAiLDIyMToiVE9EQVkiLDIyMjoiVkRCIiwyMjM6IkVMU0UiLDIyNDoiRUxTRS5JRiIsMjI1OiJFTkQuSUYiLDIyNjoiRk9SLkNFTEwi''@;'; put 'put ''LDIyNzoiTUVESUFOIiwyMjg6IlNVTVBST0RVQ1QiLDIyOToiU0lOSCIsMjMwOiJDT1NIIiwyMzE6IlRBTkgiLDIzMjoiQVNJTkgiLDIzMzoiQUNPU0giLDIzNDoiQVRBTkgiLDIzNToiREdFVCIsMjM2OiJDUkVBVEUuT0JKRUNUIiwyMzc6IlZPTEFUSUxFIiwyMzg6IkxBU1QuRVJST1IiLDIz''@;'; put 'put ''OToiQ1VTVE9NLlVORE8iLDI0MDoiQ1VTVE9NLlJFUEVBVCIsMjQxOiJGT1JNVUxBLkNPTlZFUlQiLDI0MjoiR0VULkxJTksuSU5GTyIsMjQzOiJURVhULkJPWCIsMjQ0OiJJTkZPIiwyNDU6IkdST1VQIiwyNDY6IkdFVC5PQkpFQ1QiLDI0NzoiREIiLDI0ODoiUEFVU0UiLDI1MToiUkVTVU1F''@;'; put 'put ''IiwyNTI6IkZSRVFVRU5DWSIsMjUzOiJBREQuVE9PTEJBUiIsMjU0OiJERUxFVEUuVE9PTEJBUiIsMjU1OiJVc2VyIiwyNTY6IlJFU0VULlRPT0xCQVIiLDI1NzoiRVZBTFVBVEUiLDI1ODoiR0VULlRPT0xCQVIiLDI1OToiR0VULlRPT0wiLDI2MDoiU1BFTExJTkcuQ0hFQ0siLDI2MToiRVJS''@;'; put 'put ''T1IuVFlQRSIsMjYyOiJBUFAuVElUTEUiLDI2MzoiV0lORE9XLlRJVExFIiwyNjQ6IlNBVkUuVE9PTEJBUiIsMjY1OiJFTkFCTEUuVE9PTCIsMjY2OiJQUkVTUy5UT09MIiwyNjc6IlJFR0lTVEVSLklEIiwyNjg6IkdFVC5XT1JLQk9PSyIsMjY5OiJBVkVERVYiLDI3MDoiQkVUQURJU1QiLDI3''@;'; put 'put ''MToiR0FNTUFMTiIsMjcyOiJCRVRBSU5WIiwyNzM6IkJJTk9NRElTVCIsMjc0OiJDSElESVNUIiwyNzU6IkNISUlOViIsMjc2OiJDT01CSU4iLDI3NzoiQ09ORklERU5DRSIsMjc4OiJDUklUQklOT00iLDI3OToiRVZFTiIsMjgwOiJFWFBPTkRJU1QiLDI4MToiRkRJU1QiLDI4MjoiRklOViIs''@;'; put 'put ''MjgzOiJGSVNIRVIiLDI4NDoiRklTSEVSSU5WIiwyODU6IkZMT09SIiwyODY6IkdBTU1BRElTVCIsMjg3OiJHQU1NQUlOViIsMjg4OiJDRUlMSU5HIiwyODk6IkhZUEdFT01ESVNUIiwyOTA6IkxPR05PUk1ESVNUIiwyOTE6IkxPR0lOViIsMjkyOiJORUdCSU5PTURJU1QiLDI5MzoiTk9STURJ''@;'; put 'put ''U1QiLDI5NDoiTk9STVNESVNUIiwyOTU6Ik5PUk1JTlYiLDI5NjoiTk9STVNJTlYiLDI5NzoiU1RBTkRBUkRJWkUiLDI5ODoiT0REIiwyOTk6IlBFUk1VVCIsMzAwOiJQT0lTU09OIiwzMDE6IlRESVNUIiwzMDI6IldFSUJVTEwiLDMwMzoiU1VNWE1ZMiIsMzA0OiJTVU1YMk1ZMiIsMzA1OiJT''@;'; put 'put ''VU1YMlBZMiIsMzA2OiJDSElURVNUIiwzMDc6IkNPUlJFTCIsMzA4OiJDT1ZBUiIsMzA5OiJGT1JFQ0FTVCIsMzEwOiJGVEVTVCIsMzExOiJJTlRFUkNFUFQiLDMxMjoiUEVBUlNPTiIsMzEzOiJSU1EiLDMxNDoiU1RFWVgiLDMxNToiU0xPUEUiLDMxNjoiVFRFU1QiLDMxNzoiUFJPQiIsMzE4''@;'; put 'put ''OiJERVZTUSIsMzE5OiJHRU9NRUFOIiwzMjA6IkhBUk1FQU4iLDMyMToiU1VNU1EiLDMyMjoiS1VSVCIsMzIzOiJTS0VXIiwzMjQ6IlpURVNUIiwzMjU6IkxBUkdFIiwzMjY6IlNNQUxMIiwzMjc6IlFVQVJUSUxFIiwzMjg6IlBFUkNFTlRJTEUiLDMyOToiUEVSQ0VOVFJBTksiLDMzMDoiTU9E''@;'; put 'put ''RSIsMzMxOiJUUklNTUVBTiIsMzMyOiJUSU5WIiwzMzQ6Ik1PVklFLkNPTU1BTkQiLDMzNToiR0VULk1PVklFIiwzMzY6IkNPTkNBVEVOQVRFIiwzMzc6IlBPV0VSIiwzMzg6IlBJVk9ULkFERC5EQVRBIiwzMzk6IkdFVC5QSVZPVC5UQUJMRSIsMzQwOiJHRVQuUElWT1QuRklFTEQiLDM0MToi''@;'; put 'put ''R0VULlBJVk9ULklURU0iLDM0MjoiUkFESUFOUyIsMzQzOiJERUdSRUVTIiwzNDQ6IlNVQlRPVEFMIiwzNDU6IlNVTUlGIiwzNDY6IkNPVU5USUYiLDM0NzoiQ09VTlRCTEFOSyIsMzQ4OiJTQ0VOQVJJTy5HRVQiLDM0OToiT1BUSU9OUy5MSVNUUy5HRVQiLDM1MDoiSVNQTVQiLDM1MToiREFU''@;'; put 'put ''RURJRiIsMzUyOiJEQVRFU1RSSU5HIiwzNTM6Ik5VTUJFUlNUUklORyIsMzU0OiJST01BTiIsMzU1OiJPUEVOLkRJQUxPRyIsMzU2OiJTQVZFLkRJQUxPRyIsMzU3OiJWSUVXLkdFVCIsMzU4OiJHRVRQSVZPVERBVEEiLDM1OToiSFlQRVJMSU5LIiwzNjA6IlBIT05FVElDIiwzNjE6IkFWRVJB''@;'; put 'put ''R0VBIiwzNjI6Ik1BWEEiLDM2MzoiTUlOQSIsMzY0OiJTVERFVlBBIiwzNjU6IlZBUlBBIiwzNjY6IlNUREVWQSIsMzY3OiJWQVJBIiwzNjg6IkJBSFRURVhUIiwzNjk6IlRIQUlEQVlPRldFRUsiLDM3MDoiVEhBSURJR0lUIiwzNzE6IlRIQUlNT05USE9GWUVBUiIsMzcyOiJUSEFJTlVNU09V''@;'; put 'put ''TkQiLDM3MzoiVEhBSU5VTVNUUklORyIsMzc0OiJUSEFJU1RSSU5HTEVOR1RIIiwzNzU6IklTVEhBSURJR0lUIiwzNzY6IlJPVU5EQkFIVERPV04iLDM3NzoiUk9VTkRCQUhUVVAiLDM3ODoiVEhBSVlFQVIiLDM3OToiUlREIiwzODA6IkNVQkVWQUxVRSIsMzgxOiJDVUJFTUVNQkVSIiwzODI6''@;'; put 'put ''IkNVQkVNRU1CRVJQUk9QRVJUWSIsMzgzOiJDVUJFUkFOS0VETUVNQkVSIiwzODQ6IkhFWDJCSU4iLDM4NToiSEVYMkRFQyIsMzg2OiJIRVgyT0NUIiwzODc6IkRFQzJCSU4iLDM4ODoiREVDMkhFWCIsMzg5OiJERUMyT0NUIiwzOTA6Ik9DVDJCSU4iLDM5MToiT0NUMkhFWCIsMzkyOiJPQ1Qy''@;'; put 'put ''REVDIiwzOTM6IkJJTjJERUMiLDM5NDoiQklOMk9DVCIsMzk1OiJCSU4ySEVYIiwzOTY6IklNU1VCIiwzOTc6IklNRElWIiwzOTg6IklNUE9XRVIiLDM5OToiSU1BQlMiLDQwMDoiSU1TUVJUIiw0MDE6IklNTE4iLDQwMjoiSU1MT0cyIiw0MDM6IklNTE9HMTAiLDQwNDoiSU1TSU4iLDQwNToi''@;'; put 'put ''SU1DT1MiLDQwNjoiSU1FWFAiLDQwNzoiSU1BUkdVTUVOVCIsNDA4OiJJTUNPTkpVR0FURSIsNDA5OiJJTUFHSU5BUlkiLDQxMDoiSU1SRUFMIiw0MTE6IkNPTVBMRVgiLDQxMjoiSU1TVU0iLDQxMzoiSU1QUk9EVUNUIiw0MTQ6IlNFUklFU1NVTSIsNDE1OiJGQUNURE9VQkxFIiw0MTY6IlNR''@;'; put 'put ''UlRQSSIsNDE3OiJRVU9USUVOVCIsNDE4OiJERUxUQSIsNDE5OiJHRVNURVAiLDQyMDoiSVNFVkVOIiw0MjE6IklTT0REIiw0MjI6Ik1ST1VORCIsNDIzOiJFUkYiLDQyNDoiRVJGQyIsNDI1OiJCRVNTRUxKIiw0MjY6IkJFU1NFTEsiLDQyNzoiQkVTU0VMWSIsNDI4OiJCRVNTRUxJIiw0Mjk6''@;'; put 'put ''IlhJUlIiLDQzMDoiWE5QViIsNDMxOiJQUklDRU1BVCIsNDMyOiJZSUVMRE1BVCIsNDMzOiJJTlRSQVRFIiw0MzQ6IlJFQ0VJVkVEIiw0MzU6IkRJU0MiLDQzNjoiUFJJQ0VESVNDIiw0Mzc6IllJRUxERElTQyIsNDM4OiJUQklMTEVRIiw0Mzk6IlRCSUxMUFJJQ0UiLDQ0MDoiVEJJTExZSUVM''@;'; put 'put ''RCIsNDQxOiJQUklDRSIsNDQyOiJZSUVMRCIsNDQzOiJET0xMQVJERSIsNDQ0OiJET0xMQVJGUiIsNDQ1OiJOT01JTkFMIiw0NDY6IkVGRkVDVCIsNDQ3OiJDVU1QUklOQyIsNDQ4OiJDVU1JUE1UIiw0NDk6IkVEQVRFIiw0NTA6IkVPTU9OVEgiLDQ1MToiWUVBUkZSQUMiLDQ1MjoiQ09VUERB''@;'; put 'put ''WUJTIiw0NTM6IkNPVVBEQVlTIiw0NTQ6IkNPVVBEQVlTTkMiLDQ1NToiQ09VUE5DRCIsNDU2OiJDT1VQTlVNIiw0NTc6IkNPVVBQQ0QiLDQ1ODoiRFVSQVRJT04iLDQ1OToiTURVUkFUSU9OIiw0NjA6Ik9ERExQUklDRSIsNDYxOiJPRERMWUlFTEQiLDQ2MjoiT0RERlBSSUNFIiw0NjM6Ik9E''@;'; put 'put ''REZZSUVMRCIsNDY0OiJSQU5EQkVUV0VFTiIsNDY1OiJXRUVLTlVNIiw0NjY6IkFNT1JERUdSQyIsNDY3OiJBTU9STElOQyIsNDY4OiJDT05WRVJUIiw3MjQ6IlNIRUVUSlMiLDQ2OToiQUNDUklOVCIsNDcwOiJBQ0NSSU5UTSIsNDcxOiJXT1JLREFZIiw0NzI6Ik5FVFdPUktEQVlTIiw0NzM6''@;'; put 'put ''IkdDRCIsNDc0OiJNVUxUSU5PTUlBTCIsNDc1OiJMQ00iLDQ3NjoiRlZTQ0hFRFVMRSIsNDc3OiJDVUJFS1BJTUVNQkVSIiw0Nzg6IkNVQkVTRVQiLDQ3OToiQ1VCRVNFVENPVU5UIiw0ODA6IklGRVJST1IiLDQ4MToiQ09VTlRJRlMiLDQ4MjoiU1VNSUZTIiw0ODM6IkFWRVJBR0VJRiIsNDg0''@;'; put 'put ''OiJBVkVSQUdFSUZTIn0sR0g9ezI6MSwzOjEsMTA6MCwxNToxLDE2OjEsMTc6MSwxODoxLDE5OjAsMjA6MSwyMToxLDIyOjEsMjM6MSwyNDoxLDI1OjEsMjY6MSwyNzoyLDMwOjIsMzE6MywzMjoxLDMzOjEsMzQ6MCwzNTowLDM4OjEsMzk6Miw0MDozLDQxOjMsNDI6Myw0MzozLDQ0OjMsNDU6''@;'; put 'put ''Myw0NzozLDQ4OjIsNTM6MSw2MTozLDYzOjAsNjU6Myw2NjozLDY3OjEsNjg6MSw2OToxLDcwOjEsNzE6MSw3MjoxLDczOjEsNzQ6MCw3NToxLDc2OjEsNzc6MSw3OToyLDgwOjIsODM6MSw4NTowLDg2OjEsODk6MCw5MDoxLDk0OjAsOTU6MCw5NzoyLDk4OjEsOTk6MSwxMDE6MywxMDI6Mywx''@;'; put 'put ''MDU6MSwxMDY6MSwxMDg6MiwxMTE6MSwxMTI6MSwxMTM6MSwxMTQ6MSwxMTc6MiwxMTg6MSwxMTk6NCwxMjE6MSwxMjY6MSwxMjc6MSwxMjg6MSwxMjk6MSwxMzA6MSwxMzE6MSwxMzM6MSwxMzQ6MSwxMzU6MSwxMzY6MiwxMzc6MiwxMzg6MiwxNDA6MSwxNDE6MSwxNDI6MywxNDM6NCwxNDQ6''@;'; put 'put ''NCwxNjE6MSwxNjI6MSwxNjM6MSwxNjQ6MSwxNjU6MiwxNzI6MSwxNzU6MiwxNzY6MiwxNzc6MywxNzg6MiwxNzk6MSwxODQ6MSwxODY6MSwxODk6MywxOTA6MSwxOTU6MywxOTY6MywxOTc6MSwxOTg6MSwxOTk6MywyMDE6MSwyMDc6NCwyMTA6MywyMTE6MSwyMTI6MiwyMTM6MiwyMTQ6MSwy''@;'; put 'put ''MTU6MSwyMjU6MCwyMjk6MSwyMzA6MSwyMzE6MSwyMzI6MSwyMzM6MSwyMzQ6MSwyMzU6MywyNDQ6MSwyNDc6NCwyNTI6MiwyNTc6MSwyNjE6MSwyNzE6MSwyNzM6NCwyNzQ6MiwyNzU6MiwyNzY6MiwyNzc6MywyNzg6MywyNzk6MSwyODA6MywyODE6MywyODI6MywyODM6MSwyODQ6MSwyODU6''@;'; put 'put ''MiwyODY6NCwyODc6MywyODg6MiwyODk6NCwyOTA6MywyOTE6MywyOTI6MywyOTM6NCwyOTQ6MSwyOTU6MywyOTY6MSwyOTc6MywyOTg6MSwyOTk6MiwzMDA6MywzMDE6MywzMDI6NCwzMDM6MiwzMDQ6MiwzMDU6MiwzMDY6MiwzMDc6MiwzMDg6MiwzMDk6MywzMTA6MiwzMTE6MiwzMTI6Miwz''@;'; put 'put ''MTM6MiwzMTQ6MiwzMTU6MiwzMTY6NCwzMjU6MiwzMjY6MiwzMjc6MiwzMjg6MiwzMzE6MiwzMzI6MiwzMzc6MiwzNDI6MSwzNDM6MSwzNDY6MiwzNDc6MSwzNTA6NCwzNTE6MywzNTI6MSwzNTM6MiwzNjA6MSwzNjg6MSwzNjk6MSwzNzA6MSwzNzE6MSwzNzI6MSwzNzM6MSwzNzQ6MSwzNzU6''@;'; put 'put ''MSwzNzY6MSwzNzc6MSwzNzg6MSwzODI6MywzODU6MSwzOTI6MSwzOTM6MSwzOTY6MiwzOTc6MiwzOTg6MiwzOTk6MSw0MDA6MSw0MDE6MSw0MDI6MSw0MDM6MSw0MDQ6MSw0MDU6MSw0MDY6MSw0MDc6MSw0MDg6MSw0MDk6MSw0MTA6MSw0MTQ6NCw0MTU6MSw0MTY6MSw0MTc6Miw0MjA6MSw0''@;'; put 'put ''MjE6MSw0MjI6Miw0MjQ6MSw0MjU6Miw0MjY6Miw0Mjc6Miw0Mjg6Miw0MzA6Myw0Mzg6Myw0Mzk6Myw0NDA6Myw0NDM6Miw0NDQ6Miw0NDU6Miw0NDY6Miw0NDc6Niw0NDg6Niw0NDk6Miw0NTA6Miw0NjQ6Miw0Njg6Myw0NzY6Miw0Nzk6MSw0ODA6Miw2NTUzNTowfSxldj17Il94bGZuLkFD''@;'; put 'put ''T1QiOiJBQ09UIiwiX3hsZm4uQUNPVEgiOiJBQ09USCIsIl94bGZuLkFHR1JFR0FURSI6IkFHR1JFR0FURSIsIl94bGZuLkFSQUJJQyI6IkFSQUJJQyIsIl94bGZuLkFWRVJBR0VJRiI6IkFWRVJBR0VJRiIsIl94bGZuLkFWRVJBR0VJRlMiOiJBVkVSQUdFSUZTIiwiX3hsZm4uQkFTRSI6IkJB''@;'; put 'put ''U0UiLCJfeGxmbi5CRVRBLkRJU1QiOiJCRVRBLkRJU1QiLCJfeGxmbi5CRVRBLklOViI6IkJFVEEuSU5WIiwiX3hsZm4uQklOT00uRElTVCI6IkJJTk9NLkRJU1QiLCJfeGxmbi5CSU5PTS5ESVNULlJBTkdFIjoiQklOT00uRElTVC5SQU5HRSIsIl94bGZuLkJJTk9NLklOViI6IkJJTk9NLklO''@;'; put 'put ''ViIsIl94bGZuLkJJVEFORCI6IkJJVEFORCIsIl94bGZuLkJJVExTSElGVCI6IkJJVExTSElGVCIsIl94bGZuLkJJVE9SIjoiQklUT1IiLCJfeGxmbi5CSVRSU0hJRlQiOiJCSVRSU0hJRlQiLCJfeGxmbi5CSVRYT1IiOiJCSVRYT1IiLCJfeGxmbi5DRUlMSU5HLk1BVEgiOiJDRUlMSU5HLk1B''@;'; put 'put ''VEgiLCJfeGxmbi5DRUlMSU5HLlBSRUNJU0UiOiJDRUlMSU5HLlBSRUNJU0UiLCJfeGxmbi5DSElTUS5ESVNUIjoiQ0hJU1EuRElTVCIsIl94bGZuLkNISVNRLkRJU1QuUlQiOiJDSElTUS5ESVNULlJUIiwiX3hsZm4uQ0hJU1EuSU5WIjoiQ0hJU1EuSU5WIiwiX3hsZm4uQ0hJU1EuSU5WLlJU''@;'; put 'put ''IjoiQ0hJU1EuSU5WLlJUIiwiX3hsZm4uQ0hJU1EuVEVTVCI6IkNISVNRLlRFU1QiLCJfeGxmbi5DT01CSU5BIjoiQ09NQklOQSIsIl94bGZuLkNPTkNBVCI6IkNPTkNBVCIsIl94bGZuLkNPTkZJREVOQ0UuTk9STSI6IkNPTkZJREVOQ0UuTk9STSIsIl94bGZuLkNPTkZJREVOQ0UuVCI6IkNP''@;'; put 'put ''TkZJREVOQ0UuVCIsIl94bGZuLkNPVCI6IkNPVCIsIl94bGZuLkNPVEgiOiJDT1RIIiwiX3hsZm4uQ09VTlRJRlMiOiJDT1VOVElGUyIsIl94bGZuLkNPVkFSSUFOQ0UuUCI6IkNPVkFSSUFOQ0UuUCIsIl94bGZuLkNPVkFSSUFOQ0UuUyI6IkNPVkFSSUFOQ0UuUyIsIl94bGZuLkNTQyI6IkNT''@;'; put 'put ''QyIsIl94bGZuLkNTQ0giOiJDU0NIIiwiX3hsZm4uREFZUyI6IkRBWVMiLCJfeGxmbi5ERUNJTUFMIjoiREVDSU1BTCIsIl94bGZuLkVDTUEuQ0VJTElORyI6IkVDTUEuQ0VJTElORyIsIl94bGZuLkVSRi5QUkVDSVNFIjoiRVJGLlBSRUNJU0UiLCJfeGxmbi5FUkZDLlBSRUNJU0UiOiJFUkZD''@;'; put 'put ''LlBSRUNJU0UiLCJfeGxmbi5FWFBPTi5ESVNUIjoiRVhQT04uRElTVCIsIl94bGZuLkYuRElTVCI6IkYuRElTVCIsIl94bGZuLkYuRElTVC5SVCI6IkYuRElTVC5SVCIsIl94bGZuLkYuSU5WIjoiRi5JTlYiLCJfeGxmbi5GLklOVi5SVCI6IkYuSU5WLlJUIiwiX3hsZm4uRi5URVNUIjoiRi5U''@;'; put 'put ''RVNUIiwiX3hsZm4uRklMVEVSWE1MIjoiRklMVEVSWE1MIiwiX3hsZm4uRkxPT1IuTUFUSCI6IkZMT09SLk1BVEgiLCJfeGxmbi5GTE9PUi5QUkVDSVNFIjoiRkxPT1IuUFJFQ0lTRSIsIl94bGZuLkZPUkVDQVNULkVUUyI6IkZPUkVDQVNULkVUUyIsIl94bGZuLkZPUkVDQVNULkVUUy5DT05G''@;'; put 'put ''SU5UIjoiRk9SRUNBU1QuRVRTLkNPTkZJTlQiLCJfeGxmbi5GT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkiOiJGT1JFQ0FTVC5FVFMuU0VBU09OQUxJVFkiLCJfeGxmbi5GT1JFQ0FTVC5FVFMuU1RBVCI6IkZPUkVDQVNULkVUUy5TVEFUIiwiX3hsZm4uRk9SRUNBU1QuTElORUFSIjoiRk9SRUNB''@;'; put 'put ''U1QuTElORUFSIiwiX3hsZm4uRk9STVVMQVRFWFQiOiJGT1JNVUxBVEVYVCIsIl94bGZuLkdBTU1BIjoiR0FNTUEiLCJfeGxmbi5HQU1NQS5ESVNUIjoiR0FNTUEuRElTVCIsIl94bGZuLkdBTU1BLklOViI6IkdBTU1BLklOViIsIl94bGZuLkdBTU1BTE4uUFJFQ0lTRSI6IkdBTU1BTE4uUFJF''@;'; put 'put ''Q0lTRSIsIl94bGZuLkdBVVNTIjoiR0FVU1MiLCJfeGxmbi5IWVBHRU9NLkRJU1QiOiJIWVBHRU9NLkRJU1QiLCJfeGxmbi5JRkVSUk9SIjoiSUZFUlJPUiIsIl94bGZuLklGTkEiOiJJRk5BIiwiX3hsZm4uSUZTIjoiSUZTIiwiX3hsZm4uSU1DT1NIIjoiSU1DT1NIIiwiX3hsZm4uSU1DT1Qi''@;'; put 'put ''OiJJTUNPVCIsIl94bGZuLklNQ1NDIjoiSU1DU0MiLCJfeGxmbi5JTUNTQ0giOiJJTUNTQ0giLCJfeGxmbi5JTVNFQyI6IklNU0VDIiwiX3hsZm4uSU1TRUNIIjoiSU1TRUNIIiwiX3hsZm4uSU1TSU5IIjoiSU1TSU5IIiwiX3hsZm4uSU1UQU4iOiJJTVRBTiIsIl94bGZuLklTRk9STVVMQSI6''@;'; put 'put ''IklTRk9STVVMQSIsIl94bGZuLklTTy5DRUlMSU5HIjoiSVNPLkNFSUxJTkciLCJfeGxmbi5JU09XRUVLTlVNIjoiSVNPV0VFS05VTSIsIl94bGZuLkxPR05PUk0uRElTVCI6IkxPR05PUk0uRElTVCIsIl94bGZuLkxPR05PUk0uSU5WIjoiTE9HTk9STS5JTlYiLCJfeGxmbi5NQVhJRlMiOiJN''@;'; put 'put ''QVhJRlMiLCJfeGxmbi5NSU5JRlMiOiJNSU5JRlMiLCJfeGxmbi5NT0RFLk1VTFQiOiJNT0RFLk1VTFQiLCJfeGxmbi5NT0RFLlNOR0wiOiJNT0RFLlNOR0wiLCJfeGxmbi5NVU5JVCI6Ik1VTklUIiwiX3hsZm4uTkVHQklOT00uRElTVCI6Ik5FR0JJTk9NLkRJU1QiLCJfeGxmbi5ORVRXT1JL''@;'; put 'put ''REFZUy5JTlRMIjoiTkVUV09SS0RBWVMuSU5UTCIsIl94bGZuLk5JR0JJTk9NIjoiTklHQklOT00iLCJfeGxmbi5OT1JNLkRJU1QiOiJOT1JNLkRJU1QiLCJfeGxmbi5OT1JNLklOViI6Ik5PUk0uSU5WIiwiX3hsZm4uTk9STS5TLkRJU1QiOiJOT1JNLlMuRElTVCIsIl94bGZuLk5PUk0uUy5J''@;'; put 'put ''TlYiOiJOT1JNLlMuSU5WIiwiX3hsZm4uTlVNQkVSVkFMVUUiOiJOVU1CRVJWQUxVRSIsIl94bGZuLlBEVVJBVElPTiI6IlBEVVJBVElPTiIsIl94bGZuLlBFUkNFTlRJTEUuRVhDIjoiUEVSQ0VOVElMRS5FWEMiLCJfeGxmbi5QRVJDRU5USUxFLklOQyI6IlBFUkNFTlRJTEUuSU5DIiwiX3hs''@;'; put 'put ''Zm4uUEVSQ0VOVFJBTksuRVhDIjoiUEVSQ0VOVFJBTksuRVhDIiwiX3hsZm4uUEVSQ0VOVFJBTksuSU5DIjoiUEVSQ0VOVFJBTksuSU5DIiwiX3hsZm4uUEVSTVVUQVRJT05BIjoiUEVSTVVUQVRJT05BIiwiX3hsZm4uUEhJIjoiUEhJIiwiX3hsZm4uUE9JU1NPTi5ESVNUIjoiUE9JU1NPTi5E''@;'; put 'put ''SVNUIiwiX3hsZm4uUVVBUlRJTEUuRVhDIjoiUVVBUlRJTEUuRVhDIiwiX3hsZm4uUVVBUlRJTEUuSU5DIjoiUVVBUlRJTEUuSU5DIiwiX3hsZm4uUVVFUllTVFJJTkciOiJRVUVSWVNUUklORyIsIl94bGZuLlJBTksuQVZHIjoiUkFOSy5BVkciLCJfeGxmbi5SQU5LLkVRIjoiUkFOSy5FUSIs''@;'; put 'put ''Il94bGZuLlJSSSI6IlJSSSIsIl94bGZuLlNFQyI6IlNFQyIsIl94bGZuLlNFQ0giOiJTRUNIIiwiX3hsZm4uU0hFRVQiOiJTSEVFVCIsIl94bGZuLlNIRUVUUyI6IlNIRUVUUyIsIl94bGZuLlNLRVcuUCI6IlNLRVcuUCIsIl94bGZuLlNUREVWLlAiOiJTVERFVi5QIiwiX3hsZm4uU1RERVYu''@;'; put 'put ''UyI6IlNUREVWLlMiLCJfeGxmbi5TVU1JRlMiOiJTVU1JRlMiLCJfeGxmbi5TV0lUQ0giOiJTV0lUQ0giLCJfeGxmbi5ULkRJU1QiOiJULkRJU1QiLCJfeGxmbi5ULkRJU1QuMlQiOiJULkRJU1QuMlQiLCJfeGxmbi5ULkRJU1QuUlQiOiJULkRJU1QuUlQiLCJfeGxmbi5ULklOViI6IlQuSU5W''@;'; put 'put ''IiwiX3hsZm4uVC5JTlYuMlQiOiJULklOVi4yVCIsIl94bGZuLlQuVEVTVCI6IlQuVEVTVCIsIl94bGZuLlRFWFRKT0lOIjoiVEVYVEpPSU4iLCJfeGxmbi5VTklDSEFSIjoiVU5JQ0hBUiIsIl94bGZuLlVOSUNPREUiOiJVTklDT0RFIiwiX3hsZm4uVkFSLlAiOiJWQVIuUCIsIl94bGZuLlZB''@;'; put 'put ''Ui5TIjoiVkFSLlMiLCJfeGxmbi5XRUJTRVJWSUNFIjoiV0VCU0VSVklDRSIsIl94bGZuLldFSUJVTEwuRElTVCI6IldFSUJVTEwuRElTVCIsIl94bGZuLldPUktEQVkuSU5UTCI6IldPUktEQVkuSU5UTCIsIl94bGZuLlhPUiI6IlhPUiIsIl94bGZuLlouVEVTVCI6IlouVEVTVCJ9O2Z1bmN0''@;'; put 'put ''aW9uIFd3KHkpe3JldHVybiJvZjoiPT15LnNsaWNlKDAsMykmJih5PXkuc2xpY2UoMykpLDYxPT15LmNoYXJDb2RlQXQoMCkmJjYxPT0oeT15LnNsaWNlKDEpKS5jaGFyQ29kZUF0KDApJiYoeT15LnNsaWNlKDEpKSwoeT0oeT0oeT15LnJlcGxhY2UoL0NPTVwuTUlDUk9TT0ZUXC4vZywiIikp''@;'; put 'put ''LnJlcGxhY2UoL1xbKCg/OlwuW0EtWl0rWzAtOV0rKSg/OjpcLltBLVpdK1swLTldKyk/KVxdL2csZnVuY3Rpb24oUCxMKXtyZXR1cm4gTC5yZXBsYWNlKC9cLi9nLCIiKX0pKS5yZXBsYWNlKC9cWy4oI1tBLVpdKls/IV0pXF0vZywiJDEiKSkucmVwbGFjZSgvWzt+XS9nLCIsIikucmVwbGFj''@;'; put 'put ''ZSgvXHwvZywiOyIpfWZ1bmN0aW9uIHFwKHkpe3JldHVybigib2Y6PSIreS5yZXBsYWNlKHBoLCIkMVsuJDIkMyQ0JDVdIikucmVwbGFjZSgvXF06XFsvZywiOiIpKS5yZXBsYWNlKC87L2csInwiKS5yZXBsYWNlKC8sL2csIjsiKX1mdW5jdGlvbiB0dih5KXt2YXIgUD15LnNwbGl0KCI6Iik7''@;'; put 'put ''cmV0dXJuW1BbMF0uc3BsaXQoIi4iKVswXSxQWzBdLnNwbGl0KCIuIilbMV0rKFAubGVuZ3RoPjE/IjoiKyhQWzFdLnNwbGl0KCIuIilbMV18fFBbMV0uc3BsaXQoIi4iKVswXSk6IiIpXX1mdW5jdGlvbiB6ayh5KXtyZXR1cm4geS5yZXBsYWNlKC9cLi8sIiEiKX12YXIgbDY9e30sYzY9e307''@;'; put 'put ''U28uV1M9WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIsImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL29mZmljZURvY3VtZW50L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0Il07dmFyIHQzPXR5''@;'; put 'put ''cGVvZiBNYXA8InUiO2Z1bmN0aW9uIEd3KHksUCxMLFgpe3ZhciBuZT0wLGZlPXkubGVuZ3RoO2lmKFgpe2lmKHQzP1guaGFzKFApOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChYLFApKWZvcih2YXIgYmU9dDM/WC5nZXQoUCk6WFtQXTtuZTxiZS5sZW5ndGg7KytuZSlp''@;'; put 'put ''Zih5W2JlW25lXV0udD09PVAmJigheVtiZVtuZV1dLnImJiFMfHx5W2JlW25lXV0ucj09TCkpcmV0dXJuIHkuQ291bnQrKyxiZVtuZV19ZWxzZSBmb3IoO25lPGZlOysrbmUpaWYoeVtuZV0udD09PVAmJigheVtuZV0uciYmIUx8fHlbbmVdLnI9PUwpKXJldHVybiB5LkNvdW50KyssbmU7cmV0''@;'; put 'put ''dXJuIHlbZmVdPXt0OlAscjpMfSx5LkNvdW50KysseS5VbmlxdWUrKyxYJiYodDM/KFguaGFzKFApfHxYLnNldChQLFtdKSxYLmdldChQKS5wdXNoKGZlKSk6KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChYLFApfHwoWFtQXT1bXSksWFtQXS5wdXNoKGZlKSkpLGZlfWZ1''@;'; put 'put ''bmN0aW9uIHU2KHksUCl7dmFyIEw9e21pbjp5KzEsbWF4OnkrMX0sWD1WbDtpZighUClyZXR1cm4gUDt2YXIgbmU9LTE7cmV0dXJuIFAuYXV0byYmKEwuYmVzdEZpdD0xLFAuYmVzdHdpZHRoJiYobmU9UC5iZXN0d2lkdGgpLGRlbGV0ZSBQLmJlc3R3aWR0aCksbnVsbCE9UC53cHg/bmU9RGco''@;'; put 'put ''UC53cHgpOm51bGwhPVAud2NoP25lPVAud2NoOm51bGwhPVAud2lkdGgmJihMLmN1c3RvbVdpZHRoPTEpLG5lPi0xPyhMLndpZHRoPWsyKG5lKSxMLmN1c3RvbVdpZHRoPTEpOm51bGwhPVAud2lkdGgmJihMLndpZHRoPVAud2lkdGgpLFAuaGlkZGVuJiYoTC5oaWRkZW49ITApLEwuYmVzdEZp''@;'; put 'put ''dCYmZGVsZXRlIEwuY3VzdG9tV2lkdGgsVmw9WCxudWxsIT1QLmxldmVsJiYoTC5vdXRsaW5lTGV2ZWw9TC5sZXZlbD1QLmxldmVsKSxudWxsIT1QLnN0eWxlJiYoTC5zdHlsZT1QLnN0eWxlKSxMfWZ1bmN0aW9uICR3KHksUCxMKXt2YXIgWD1hYSh5WyIhcmVmIl0pLG5lPTAsZmU9eVsiIW1l''@;'; put 'put ''cmdlcyJdfHxbXSxiZT1BcnJheS5pc0FycmF5KHkpO2U6Zm9yKHZhciB2ZT0wO3ZlPD1YLmUucjsrK3ZlKXtmb3IodmFyIHllPTA7eWU8ZmUubGVuZ3RoOysreWUpaWYoZmVbeWVdLnMucjw9dmUmJnZlPD1mZVt5ZV0uZS5yJiZmZVt5ZV0ucy5jPD1MJiZMPD1mZVt5ZV0uZS5jKWNvbnRpbnVl''@;'; put 'put ''IGU7dmFyIFZlPWJlPyh5W3ZlXXx8W10pW0xdOnlbQWkoe3I6dmUsYzpMfSldO2lmKFZlKXt2YXIgemU9MTtpZihWZS5zJiYoemU9YXcoVmUucykvc3cuQ2FsaWJyaVsxMl18fDEpLFZlLncpbmU9TWF0aC5tYXgobmUsVmUudy5sZW5ndGgqemUpO2Vsc2Ugc3dpdGNoKFZlLnQpe2Nhc2UiYiI6''@;'; put 'put ''Y2FzZSJlIjpuZT1NYXRoLm1heChuZSw1KnplKTticmVhaztjYXNlInMiOm5lPU1hdGgubWF4KG5lLFZlLnYubGVuZ3RoKnplKjEuMnwwKTticmVhaztjYXNlIm4iOnVnKFZlLFZlLnYpLG5lPU1hdGgubWF4KG5lLFN0cmluZyhWZS53fHxWZS52KS5sZW5ndGgqemUpO2JyZWFrO2Nhc2UiZCI6''@;'; put 'put ''bmU9TWF0aC5tYXgobmUsOCp6ZSl9fX1uZTwxJiYobmU9MSksUC5iZXN0d2lkdGg9bmV9ZnVuY3Rpb24gbjMoeSxQKXtpZih5KXt2YXIgTD1bLjcsLjcsLjc1LC43NSwuMywuM107InhsbWwiPT1QJiYoTD1bMSwxLDEsMSwuNSwuNV0pLG51bGw9PXkubGVmdCYmKHkubGVmdD1MWzBdKSxudWxs''@;'; put 'put ''PT15LnJpZ2h0JiYoeS5yaWdodD1MWzFdKSxudWxsPT15LnRvcCYmKHkudG9wPUxbMl0pLG51bGw9PXkuYm90dG9tJiYoeS5ib3R0b209TFszXSksbnVsbD09eS5oZWFkZXImJih5LmhlYWRlcj1MWzRdKSxudWxsPT15LmZvb3RlciYmKHkuZm9vdGVyPUxbNV0pfX1mdW5jdGlvbiBLdyh5LFAp''@;'; put 'put ''e2Zvcih2YXIgTD1vdChQKSxYPTA7WDx5Lmxlbmd0aDsrK1gpe3ZhciBuZT0hMCxmZT15W1hdO2lmKGZlJiZMLmxlbmd0aD09b3QoZmUpLmxlbmd0aCYmKEwuZm9yRWFjaChmdW5jdGlvbihiZSl7aWYobmUpe2lmKG51bGw9PT1QW2JlXSE9KG51bGw9PT1mZVtiZV0pKXJldHVybiB2b2lkKG5l''@;'; put 'put ''PSExKTtpZigib2JqZWN0Ij09dHlwZW9mIFBbYmVdKWlmKFsiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmluZGV4T2YoYmUpPi0xKXtpZihsZChQW2JlXSxmZVtiZV0pKXJldHVybiB2b2lkKG5lPSExKX1lbHNle2lmKCEoWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXS5pbmRl''@;'; put 'put ''eE9mKGJlKT4tMSkpcmV0dXJuIHZvaWQobmU9ITEpO2lmKFZUKFBbYmVdLGZlW2JlXSkpcmV0dXJuIHZvaWQobmU9ITEpfWlmKFBbYmVdIT1mZVtiZV0pcmV0dXJuIHZvaWQobmU9ITEpfX0pLG5lKSlyZXR1cm4gWH1yZXR1cm4geVt5Lmxlbmd0aF09S3QoUCkseS5sZW5ndGgtMX1mdW5jdGlv''@;'; put 'put ''biBtdSh5LFAsTCxYKXt2YXIgbmU9WC5yZXZzc2ZbbnVsbCE9TC56P0wuejoiR2VuZXJhbCJdLGZlPTYwLGJlPXkubGVuZ3RoO2lmKG51bGw9PW5lJiZYLnNzZilmb3IoO2ZlPDM5MjsrK2ZlKWlmKG51bGw9PVguc3NmW2ZlXSl7dy5sb2FkKEwueixmZSksWC5zc2ZbZmVdPUwueixYLnJldnNz''@;'; put 'put ''ZltMLnpdPW5lPWZlO2JyZWFrfXZhciB2ZT0wLHllPTAsVmU9MCx6ZT0wO2lmKFguY2VsbFN0eWxlcyl7aWYoTC5zKXtpZihYLkZvbnRzKXtMLnMuY29sb3J8fChMLnMuY29sb3I9e3RoZW1lOjEscmdiOiIwMDAwMDAifSk7Zm9yKHZhciBXZT0oTC5zLmJvbGQ/MTowKXwoTC5zLml0YWxpYz8y''@;'; put 'put ''OjApfChMLnMuc3RyaWtlPzQ6MCl8KEwucy5zaGFkb3c/ODowKTt2ZTxYLkZvbnRzLmxlbmd0aDsrK3ZlKXt2YXIgcnQ9WC5Gb250c1t2ZV07aWYobnVsbD09cnQuZm9udGhhc2gmJihydC5mb250aGFzaD0ocnQuYm9sZD8xOjApfChydC5pdGFsaWM/MjowKXwocnQuc3RyaWtlPzQ6MCl8KHJ0''@;'; put 'put ''LnNoYWRvdz84OjApKSwhKFdlIT1ydC5mb250aGFzaHx8ISFMLnMuY29sb3IhPSEhcnQuY29sb3J8fEwucy52YWxpZ24hPXJ0LnZhbGlnbnx8KEwucy5zenx8cnQuc3opJiYoTC5zLnN6fHwxMikhPShydC5zenx8MTIpfHxMLnMubmFtZSYmTC5zLm5hbWUhPXJ0Lm5hbWV8fChMLnMudW5kZXJs''@;'; put 'put ''aW5lfHwwKSE9KHJ0LnVuZGVybGluZXx8MCl8fEwucy5jb2xvciYmbGQoTC5zLmNvbG9yLHJ0LmNvbG9yKSkpYnJlYWt9dmU9PVguRm9udHMubGVuZ3RoJiYoWC5Gb250cy5wdXNoKHtzejpMLnMuc3p8fDEyLGNvbG9yOkwucy5jb2xvcnx8e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOkwu''@;'; put 'put ''cy5uYW1lfHwiQ2FsaWJyaSIsZmFtaWx5Okwucy5mYW1pbHl8fDIsc2NoZW1lOkwucy5zY2hlbWUsYm9sZDpMLnMuYm9sZCxpdGFsaWM6TC5zLml0YWxpYyxzdHJpa2U6TC5zLnN0cmlrZSxzaGFkb3c6TC5zLnNoYWRvdyx2YWxpZ246TC5zLnZhbGlnbix1bmRlcmxpbmU6TC5zLnVuZGVybGlu''@;'; put 'put ''ZX0pLDE9PVguRm9udHMubGVuZ3RoJiZGcChYLkZvbnRzWzBdKSl9aWYoWC5GaWxscyl7Zm9yKDt5ZTxYLkZpbGxzLmxlbmd0aDsrK3llKXt2YXIgbHQ9WC5GaWxsc1t5ZV07aWYoISFMLnMuc3RvcHM9PSEhbHQuc3RvcHMpe2lmKEwucy5zdG9wcyl7aWYoTC5zLmFuZ2xlIT1sdC5hbmdsZSlj''@;'; put 'put ''b250aW51ZTt2YXIgQ3Q9ITA7aWYoTC5zLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oa3QsRHQpe2xkKGt0LGx0LnN0b3BzW0R0XSkmJihDdD0hMSksa3QudiE9bHQuc3RvcHNbRHRdLnYmJihDdD0hMSl9KSwhQ3QpY29udGludWV9ZWxzZXtpZihudWxsPT1MLnMucGF0dGVyblR5cGUmJkwucy5m''@;'; put 'put ''Z0NvbG9yJiYoTC5zLnBhdHRlcm5UeXBlPSJzb2xpZCIpLG51bGw9PUwucy5wYXR0ZXJuVHlwZSlicmVhaztpZihMLnMucGF0dGVyblR5cGUhPWx0LnBhdHRlcm5UeXBlfHxsZChMLnMuZmdDb2xvcixsdC5mZ0NvbG9yKXx8bGQoTC5zLmJnQ29sb3IsbHQuYmdDb2xvcikpY29udGludWV9YnJl''@;'; put 'put ''YWt9fWlmKHllPT1YLkZpbGxzLmxlbmd0aCl7dmFyIGF0PXt9O0wucy5zdG9wcz8obnVsbCE9TC5zLmFuZ2xlJiYoYXQuYW5nbGU9TC5zLmFuZ2xlKSxhdC5zdG9wcz1bXSxMLnMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihrdCl7YXQuc3RvcHMucHVzaChLdChrdCkpfSkpOmF0PXtwYXR0ZXJu''@;'; put 'put ''VHlwZTpMLnMucGF0dGVyblR5cGUsZmdDb2xvcjpMLnMuZmdDb2xvcixiZ0NvbG9yOkwucy5iZ0NvbG9yfSxYLkZpbGxzLnB1c2goYXQpfX1pZihYLkJvcmRlcnMpe2Zvcig7VmU8WC5Cb3JkZXJzLmxlbmd0aDsrK1ZlKXt2YXIgdnQ9WC5Cb3JkZXJzW1ZlXSxQdD0idG9wIjtpZihMLnNbUHRd''@;'; put 'put ''KXtpZighdnRbUHRdfHxMLnNbUHRdLnN0eWxlIT12dFtQdF0uc3R5bGV8fGxkKEwuc1tQdF0uY29sb3IsdnRbUHRdLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPXZ0W1B0XSljb250aW51ZTtpZihMLnNbUHQ9ImJvdHRvbSJdKXtpZighdnRbUHRdfHxMLnNbUHRdLnN0eWxlIT12dFtQ''@;'; put 'put ''dF0uc3R5bGV8fGxkKEwuc1tQdF0uY29sb3IsdnRbUHRdLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPXZ0W1B0XSljb250aW51ZTtpZihMLnNbUHQ9ImxlZnQiXSl7aWYoIXZ0W1B0XXx8TC5zW1B0XS5zdHlsZSE9dnRbUHRdLnN0eWxlfHxsZChMLnNbUHRdLmNvbG9yLHZ0W1B0XS5j''@;'; put 'put ''b2xvcikpY29udGludWV9ZWxzZSBpZihudWxsIT12dFtQdF0pY29udGludWU7aWYoTC5zW1B0PSJyaWdodCJdKXtpZighdnRbUHRdfHxMLnNbUHRdLnN0eWxlIT12dFtQdF0uc3R5bGV8fGxkKEwuc1tQdF0uY29sb3IsdnRbUHRdLmNvbG9yKSljb250aW51ZX1lbHNlIGlmKG51bGwhPXZ0W1B0''@;'; put 'put ''XSljb250aW51ZTticmVha31WZT09WC5Cb3JkZXJzLmxlbmd0aCYmWC5Cb3JkZXJzLnB1c2goe3RvcDpMLnMudG9wJiZLdChMLnMudG9wKXx8dm9pZCAwLGJvdHRvbTpMLnMuYm90dG9tJiZLdChMLnMuYm90dG9tKXx8dm9pZCAwLGxlZnQ6TC5zLmxlZnQmJkt0KEwucy5sZWZ0KXx8dm9pZCAw''@;'; put 'put ''LHJpZ2h0Okwucy5yaWdodCYmS3QoTC5zLnJpZ2h0KXx8dm9pZCAwfSl9aWYoUCYmTC5zLnN0eWxlJiYiTm9ybWFsIiE9PUwucy5zdHlsZSl7Zm9yKHplPTE7emU8UC5sZW5ndGgmJlBbemVdLm5hbWUhPUwucy5zdHlsZTsrK3plKTt6ZT09UC5sZW5ndGgmJlAucHVzaCh7bmFtZTpMLnMuc3R5''@;'; put 'put ''bGUsbnVtRm10SWQ6bmUsZm9udElkOnZlLGZpbGxJZDp5ZSxib3JkZXJJZDpWZX0pfX1mb3IoZmU9MDtmZSE9YmU7KytmZSlpZih5W2ZlXS5udW1GbXRJZD09bmUmJnlbZmVdLmZvbnRJZD09dmUmJnlbZmVdLmZpbGxJZD09eWUmJnlbZmVdLmJvcmRlcklkPT1WZSYmeVtmZV0ueGZJZD09emUp''@;'; put 'put ''e2lmKEwucyYmTC5zLmFsaWdubWVudCl7aWYoIXlbZmVdLmFsaWdubWVudCljb250aW51ZTtpZihMLnMuYWxpZ25tZW50Lmhvcml6b250YWwhPXlbZmVdLmFsaWdubWVudC5ob3Jpem9udGFsfHxMLnMuYWxpZ25tZW50LnZlcnRpY2FsIT15W2ZlXS5hbGlnbm1lbnQudmVydGljYWx8fEwucy5h''@;'; put 'put ''bGlnbm1lbnQud3JhcFRleHQhPXlbZmVdLmFsaWdubWVudC53cmFwVGV4dHx8TC5zLmFsaWdubWVudC5zaHJpbmtUb0ZpdCE9eVtmZV0uYWxpZ25tZW50LnNocmlua1RvRml0fHxMLnMuYWxpZ25tZW50LnRleHRSb3RhdGlvbiE9eVtmZV0uYWxpZ25tZW50LnRleHRSb3RhdGlvbnx8TC5zLmFs''@;'; put 'put ''aWdubWVudC5pbmRlbnQhPXlbZmVdLmFsaWdubWVudC5pbmRlbnQpY29udGludWV9ZWxzZSBpZih5W2ZlXS5hbGlnbm1lbnQpY29udGludWU7aWYoTC5zKXtpZighIUwucy5oaWRkZW49PSgheVtmZV0ucHJvdGVjdGlvbnx8IXlbZmVdLnByb3RlY3Rpb24uaGlkZGVuKXx8ISFMLnMuZWRpdGFi''@;'; put 'put ''bGU9PSgheVtmZV0ucHJvdGVjdGlvbnx8IXlbZmVdLnByb3RlY3Rpb24uZWRpdGFibGUpKWNvbnRpbnVlfWVsc2UgaWYoeVtmZV0ucHJvdGVjdGlvbiljb250aW51ZTtyZXR1cm4gZmV9fWVsc2UgZm9yKGZlPTA7ZmUhPWJlOysrZmUpaWYoeVtmZV0ubnVtRm10SWQ9PT1uZSlyZXR1cm4gZmU7''@;'; put 'put ''cmV0dXJuIHlbYmVdPXtudW1GbXRJZDpuZSxmb250SWQ6dmUsZmlsbElkOnllLGJvcmRlcklkOlZlLHhmSWQ6emUsYXBwbHlOdW1iZXJGb3JtYXQ6MX0sdmU+MCYmKHlbYmVdLmFwcGx5Rm9udD0xKSx5ZT4wJiYoeVtiZV0uYXBwbHlGaWxsPTEpLFZlPjAmJih5W2JlXS5hcHBseUJvcmRlcj0x''@;'; put 'put ''KSwhUCYmTC5zJiZMLnMuc3R5bGUmJiJOb3JtYWwiIT1MLnMuc3R5bGUmJih5W2JlXS5zdHlsZT1MLnMuc3R5bGUpLEwucyYmTC5zLmFsaWdubWVudCYmKHlbYmVdLmFsaWdubWVudD17fSxbImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIndyYXBUZXh0Iiwic2hyaW5rVG9GaXQiLCJpbmRlbnQi''@;'; put 'put ''LCJ0ZXh0Um90YXRpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKGt0KXtudWxsIT1MLnMuYWxpZ25tZW50W2t0XSYmKHlbYmVdLmFsaWdubWVudFtrdF09TC5zLmFsaWdubWVudFtrdF0pfSkpLEwucyYmTC5zLmhpZGRlbiYmKHlbYmVdLnByb3RlY3Rpb258fCh5W2JlXS5wcm90ZWN0aW9uPXt9KSx5''@;'; put 'put ''W2JlXS5wcm90ZWN0aW9uLmhpZGRlbj0hMCksTC5zJiZMLnMuZWRpdGFibGUmJih5W2JlXS5wcm90ZWN0aW9ufHwoeVtiZV0ucHJvdGVjdGlvbj17fSkseVtiZV0ucHJvdGVjdGlvbi5lZGl0YWJsZT0hMCksYmV9ZnVuY3Rpb24gcjMoeSxQLEwsWCxuZSxmZSxiZSx2ZSl7ImQiPT09eS50JiYi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mIHkudiYmKHkudj1GdCh5LnYpKTt0cnl7ZmUuY2VsbE5GJiYoeS56PXcuX3RhYmxlW1BdKX1jYXRjaChWZSl7aWYoZmUuV1RGKXRocm93IFZlfWlmKCghZmV8fCExIT09ZmUuY2VsbFRleHQpJiYieiIhPXkudCl0cnl7aWYobnVsbD09dy5fdGFibGVbUF0mJncubG9h''@;'; put 'put ''ZChjZVtQXXx8IkdlbmVyYWwiLFApLCJlIj09PXkudCl5Lnc9eS53fHxGbFt5LnZdO2Vsc2UgaWYoMD09PVApaWYoIm4iPT09eS50KXkudz0oMHx5LnYpPT09eS52P3cuX2dlbmVyYWxfaW50KHkudik6dy5fZ2VuZXJhbF9udW0oeS52KTtlbHNlIGlmKCJkIj09PXkudCl7dmFyIHllPVplKHku''@;'; put 'put ''dik7eS53PSgwfHllKT09PXllP3cuX2dlbmVyYWxfaW50KHllKTp3Ll9nZW5lcmFsX251bSh5ZSl9ZWxzZXtpZih2b2lkIDA9PT15LnYpcmV0dXJuIiI7eS53PXcuX2dlbmVyYWwoeS52LGM2KX1lbHNlIHkudz13LmZvcm1hdChQLCJkIj09PXkudD9aZSh5LnYpOnkudixjNil9Y2F0Y2goVmUp''@;'; put 'put ''e2lmKGZlLldURil0aHJvdyBWZX1pZihmZS5jZWxsU3R5bGVzJiZ2ZSl7aWYoeS5zPXt9LG51bGwhPUwmJnZlLkZpbGxzKXRyeXtCdCh5LnMsdmUuRmlsbHNbTF0pfWNhdGNoKFZlKXtpZihmZS5XVEYpdGhyb3cgVmV9aWYobnVsbCE9WCYmdmUuRm9udHMpdHJ5e0J0KHkucyx2ZS5Gb250c1tY''@;'; put 'put ''XSl9Y2F0Y2goVmUpe2lmKGZlLldURil0aHJvdyBWZX1pZihudWxsIT1uZSYmdmUuQm9yZGVycyl0cnl7QnQoeS5zLHZlLkJvcmRlcnNbbmVdKX1jYXRjaChWZSl7aWYoZmUuV1RGKXRocm93IFZlfX19ZnVuY3Rpb24gVWsoeSxQLEwpe2lmKHkmJnlbIiFyZWYiXSl7dmFyIFg9Um8oeVsiIXJl''@;'; put 'put ''ZiJdKTtpZihYLmUuYzxYLnMuY3x8WC5lLnI8WC5zLnIpdGhyb3cgbmV3IEVycm9yKCJCYWQgcmFuZ2UgKCIrTCsiKTogIit5WyIhcmVmIl0pfX12YXIgZDY9LzwoPzpcdzopP21lcmdlQ2VsbCByZWY9IltBLVowLTk6XSsiXHMqW1wvXT8+L2csWms9LzwoPzpcdys6KT9zaGVldERhdGFbXj5d''@;'; put 'put ''Kj4oW1xzXFNdKik8XC8oPzpcdys6KT9zaGVldERhdGE+LyxKdz0vPCg/Olx3Oik/aHlwZXJsaW5rIFtePl0qPi9nbSxudj0vIihcdyo6XHcqKSIvLCRIPS88KD86XHc6KT9jb2xcYltePl0qW1wvXT8+L2csWWs9LzwoPzpcdzopP2NvbnRyb2xcYltePl0qW1wvXT8+L2cscUg9LzwoPzpcdzop''@;'; put 'put ''P2F1dG9GaWx0ZXJbXj5dKihbXC9dfD4oW1xzXFNdKik8XC8oPzpcdzopP2F1dG9GaWx0ZXIpPi9nLFdrPS88KD86XHc6KT9wYWdlTWFyZ2luc1tePl0qXC8+L2csR2s9LzwoPzpcdzopP3NoZWV0UHJcYig/OltePmEtel1bXj5dKik/XC8+Lywkaz0vPCg/Olx3Oik/c2hlZXRQcm90ZWN0aW9u''@;'; put 'put ''XGIoPzpbXj5hLXpdW14+XSopP1wvPi8scWs9LzwoPzpcdzopP3NoZWV0UHJbXj5dKig/OltcL118PihbXHNcU10qKTxcLyg/Olx3Oik/c2hlZXRQcik+Lyxvcz0vPCg/Olx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9zaGVldFZpZXdzKT4vLF9lPS88''@;'; put 'put ''KD86XHcrOik/ZGF0YVZhbGlkYXRpb25zW14+XSooPzpbXC9dfD4oW1xzXFNdKj8pPFwvKD86XHcrOik/ZGF0YVZhbGlkYXRpb25zKT4vLFF3PS88KD86XHcrOik/Y29uZGl0aW9uYWxGb3JtYXR0aW5nXGJbXj5dKig/OltcL118PihbXHNcU10qPyk8XC8oPzpcdys6KT9jb25kaXRpb25hbEZv''@;'; put 'put ''cm1hdHRpbmcpPi9nLEplPS88KD86XHc6KT9zaGVldEZvcm1hdFByW14+XSpcLz4vLEtrPS88KD86XHcrOik/dGFibGVQYXJ0cy4qPz4oW1xzXFNdKj8pPFwvKD86XHcrOik/dGFibGVQYXJ0cz4vLFhrPS88KD86XHc6KT9wYWdlU2V0dXBbXj5dKlwvPi8sS0g9LzwoPzpcdzopP3Jvd0JyZWFr''@;'; put 'put ''c1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9yb3dCcmVha3MpPi8scnY9LzwoPzpcdzopP2NvbEJyZWFrc1tePl0qKD86W1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9jb2xCcmVha3MpPi8sV2c9LzwoPzpcdzopP2hlYWRlckZvb3RlcltePl0qKD86W1wvXXw+KFtcc1xTXSop''@;'; put 'put ''PFwvKD86XHc6KT9oZWFkZXJGb290ZXIpPi8sZUM9LzwoPzpcdzopP3ByaW50T3B0aW9uc1xiW14+XC9dKlwvPi87dmFyIHRDPS88KD86XHc6KT90YWJsZVBhcnRcYlteXC8+XSpbXC9dPz4vZztmdW5jdGlvbiBpdih5LFAsTCxYKXt2YXIgbmU9YW4oeSk7TC5TaGVldHNbWF18fChMLlNoZWV0''@;'; put 'put ''c1tYXT17fSksbmUuY29kZU5hbWUmJihMLlNoZWV0c1tYXS5Db2RlTmFtZT1uZS5jb2RlTmFtZSl9dmFyIGlDPS88KD86XHc6KT90YWJDb2xvcltePl0qW1wvXT8+LyxYSD0vPCg/Olx3Oik/cGFnZVNldFVwUHJbXj5dKltcL10/Pi8sSkg9LzwoPzpcdzopP291dGxpbmVQcltePl0qW1wvXT8+''@;'; put 'put ''LyxlQT17ZGlzcGxheWVkOiJhc0Rpc3BsYXllZCIsZW5kOiJhdEVuZCIsbm9uZToibm9uZSJ9LHRBPXdlKGVBKSxuQT17ZGlzcGxheWVkOiJkaXNwbGF5ZWQiLG5vbmU6ImJsYW5rIixkYXNoOiJkYXNoIiwibi9hIjoiTkEifSxyQT13ZShuQSkscjA9LzwoPzpcdzopP2Jya1tePl0qXC8+L2cs''@;'; put 'put ''c0M9WyJvYmplY3RzIiwic2NlbmFyaW9zIiwic2VsZWN0TG9ja2VkQ2VsbHMiLCJzZWxlY3RVbmxvY2tlZENlbGxzIl0sc0E9WyJmb3JtYXRDb2x1bW5zIiwiZm9ybWF0Um93cyIsImZvcm1hdENlbGxzIiwiaW5zZXJ0Q29sdW1ucyIsImluc2VydFJvd3MiLCJpbnNlcnRIeXBlcmxpbmtzIiwi''@;'; put 'put ''ZGVsZXRlQ29sdW1ucyIsImRlbGV0ZVJvd3MiLCJzb3J0IiwiYXV0b0ZpbHRlciIsInBpdm90VGFibGVzIl07ZnVuY3Rpb24gbEEoeSl7dmFyIFA9e307cmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3lb''@;'; put 'put ''TF0mJihQW0xdPXBhcnNlRmxvYXQoeVtMXSkpfSksUH12YXIgaGQ9e0N1c3RvbToiY3VzdG9tIixEYXRlOiJkYXRlIixUaW1lOiJ0aW1lIixMZW5ndGg6InRleHRMZW5ndGgiLExpc3Q6Imxpc3QiLERlY2ltYWw6ImRlY2ltYWwiLFdob2xlOiJ3aG9sZSIsQW55OiJub25lIn0sbEM9d2UoaGQp''@;'; put 'put ''LG92PXtJTjoiYmV0d2VlbiIsT1Q6Im5vdEJldHdlZW4iLEVROiJlcXVhbCIsTkU6Im5vdEVxdWFsIixHVDoiZ3JlYXRlclRoYW4iLExUOiJsZXNzVGhhbiIsR0U6ImdyZWF0ZXJUaGFuT3JFcXVhbCIsTEU6Imxlc3NUaGFuT3JFcXVhbCJ9LGNBPXdlKG92KTtmdW5jdGlvbiBjQyh5LFAsTCl7''@;'; put 'put ''dmFyIFg9W10sbmU9e30sZmU9IiIsYmU9ITEsdmU9MCx5ZT0wO3JldHVybiB5LnJlcGxhY2UoWHQsZnVuY3Rpb24oVmUsemUpe3ZhciBXZT1hbihWZSk7c3dpdGNoKHRuKFdlWzBdKSl7Y2FzZSI8ZGF0YVZhbGlkYXRpb25zIjpjYXNlIjxkYXRhVmFsaWRhdGlvbnM+IjpjYXNlIjwvZGF0YVZh''@;'; put 'put ''bGlkYXRpb25zPiI6YnJlYWs7Y2FzZSI8ZGF0YVZhbGlkYXRpb24iOm5lPXt0OmxDW1dlLnR5cGV8fCJub25lIl0scmVmOihmZT1XZS5zcXJlZik/ZmUuaW5kZXhPZigiICIpPi0xP2ZlOlJvKGZlKToiIn0sV2Uub3BlcmF0b3ImJihuZS5vcD1jQVtXZS5vcGVyYXRvcl0pLG5lLmJsYW5rPSEh''@;'; put 'put ''V2UuYWxsb3dCbGFuayYmUnIoV2UuYWxsb3dCbGFuayksKCFXZS5zaG93SW5wdXRNZXNzYWdlfHwhUnIoV2Uuc2hvd0lucHV0TWVzc2FnZSkpJiYobmUuaW5wdXQ9ITEpLFdlLnByb21wdFRpdGxlJiYoKG5lLmlucHV0fHwobmUuaW5wdXQ9e30pKS50aXRsZT1ocihXZS5wcm9tcHRUaXRsZSkp''@;'; put 'put ''LFdlLnByb21wdCYmKChuZS5pbnB1dHx8KG5lLmlucHV0PXt9KSkubWVzc2FnZT1ocihXZS5wcm9tcHQpKSwoIVdlLnNob3dFcnJvck1lc3NhZ2V8fCFScihXZS5zaG93RXJyb3JNZXNzYWdlKSkmJihuZS5lcnJvcj0hMSksV2UuZXJyb3JUaXRsZSYmKChuZS5lcnJvcnx8KG5lLmVycm9yPXt9''@;'; put 'put ''KSkudGl0bGU9aHIoV2UuZXJyb3JUaXRsZSkpLFdlLmVycm9yJiYoKG5lLmVycm9yfHwobmUuZXJyb3I9e30pKS5tZXNzYWdlPWhyKFdlLmVycm9yKSksbmUuZXJyb3I/bmUuZXJyb3Iuc3R5bGU9V2UuZXJyb3JTdHlsZXx8InN0b3AiOldlLmVycm9yU3R5bGUmJihuZS5lcnJvcj17c3R5bGU6''@;'; put 'put ''V2UuZXJyb3JTdHlsZX0pLG5lLnQmJlgucHVzaChuZSk7YnJlYWs7Y2FzZSI8ZGF0YVZhbGlkYXRpb24vPiI6Y2FzZSI8L2RhdGFWYWxpZGF0aW9uPiI6YnJlYWs7Y2FzZSI8c3FyZWY+Ijp5ZT16ZStWZS5sZW5ndGg7YnJlYWs7Y2FzZSI8L3NxcmVmPiI6ZmU9eS5zbGljZSh5ZSx6ZSksbmUu''@;'; put 'put ''cmVmPWZlP2ZlLmluZGV4T2YoIiAiKT4tMT9mZTpSbyhmZSk6IiI7YnJlYWs7Y2FzZSI8Zj4iOmNhc2UiPGZvcm11bGExIjpjYXNlIjxmb3JtdWxhMT4iOmNhc2UiPGZvcm11bGEyIjpjYXNlIjxmb3JtdWxhMj4iOnZlPXplK1ZlLmxlbmd0aDticmVhaztjYXNlIjwvZm9ybXVsYTE+IjpjYXNl''@;'; put 'put ''IjwvZm9ybXVsYTI+IjppZihMKWJyZWFrO2Nhc2UiPC9mPiI6dmFyIHJ0PWhyKFlpKHkuc2xpY2UodmUsemUpKSk7c3dpdGNoKG5lLnQpe2Nhc2UiTGlzdCI6aWYobmUubHx8bmUuZilicmVhaztpZigzND09cnQuY2hhckNvZGVBdCgwKSl7bmUubD1ydC5zbGljZSgxLC0xKS5zcGxpdCgiLCIp''@;'; put 'put ''O2JyZWFrfWNhc2UiQ3VzdG9tIjpudWxsPT1uZS5mJiYobmUuZj1ydCk7YnJlYWs7Y2FzZSJEYXRlIjpjYXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3RoIjpjYXNlIlRpbWUiOmNhc2UiV2hvbGUiOm5lLm9wfHwobmUub3A9IklOIiksbnVsbD09bmUudj9uZS52PWlzTmFOKCtydCk/cnQ6K3J0Oihu''@;'; put 'put ''ZS5taW49bmUudixuZS5tYXg9aXNOYU4oK3J0KT9ydDorcnQsZGVsZXRlIG5lLnYpfWJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6YmU9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmJlPSExO2JyZWFrO2RlZmF1bHQ6aWYo''@;'; put 'put ''UCYmUC5XVEYmJiFiZSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK1dlWzBdKyIgaW4gZGF0YSB2YWxpZGF0aW9uIil9cmV0dXJuIFZlfSksWH12YXIgZjY9e0lOOiJjb250YWluc1RleHQiLE9UOiJub3RDb250YWluc1RleHQiLFNUOiJiZWdpbnNXaXRoIixORDoiZW5kc1dpdGgi''@;'; put 'put ''fSxzdj13ZShmNiksaFY9e0xNOiJsYXN0TW9udGgiLExTOiJsYXN0N0RheXMiLExXOiJsYXN0V2VlayIsTk06Im5leHRNb250aCIsTlc6Im5leHRXZWVrIixUTToidGhpc01vbnRoIixUVzoidGhpc1dlZWsiLFREOiJ0b2RheSIsVE86InRvbW9ycm93IixZUzoieWVzdGVyZGF5In0sZEE9d2Uo''@;'; put 'put ''aFYpO2Z1bmN0aW9uIHA2KHkpe3ZhciBQPXt9O3JldHVybiBudWxsIT15LnZhbCYmKGlzTmFOKCt5LnZhbCk/UC5mPXkudmFsOlAudj0reS52YWwpLFAudD15LnR5cGUsUH1mdW5jdGlvbiBLcCh5KXtyZXR1cm4gX3IoImNmdm8iLG51bGwse3R5cGU6eS50LHZhbDpudWxsIT15LnY/eS52OmJy''@;'; put 'put ''KHkuZil9KX1mdW5jdGlvbiBHZyh5LFAsTCxYKXt2YXIgbmU9cDYoeSk7cmV0dXJuIG5lLmNvbG9yPXpUKFAsTCxYKSxuZX1mdW5jdGlvbiBnaCh5LFAsTCxYLG5lKXt2YXIgZmU9KHkubWF0Y2goL3NxcmVmPSIoW1x3OiQgXSopIi8pfHxbXSlbMV07cmV0dXJuIGZ1bmN0aW9uIHVDKHksUCxM''@;'; put 'put ''LFgsbmUsZmUpe3ZhciBiZT0hMSx2ZT1bXSx5ZT17ZjpbXX0sVmU9MCx6ZT0wLFdlPXtjZnZvczpbXSxjb2xvcnM6W119LHJ0PXt9LGx0PS0xLEN0PTAsYXQ9IiI7cmV0dXJuIHkucmVwbGFjZShYdCxmdW5jdGlvbih2dCxQdCl7dmFyIGt0PWFuKHZ0KTtzd2l0Y2godG4oa3RbMF0pKXtjYXNl''@;'; put 'put ''Ijxjb25kaXRpb25hbEZvcm1hdHRpbmciOmNhc2UiPC9jb25kaXRpb25hbEZvcm1hdHRpbmc+IjpicmVhaztjYXNlIjxjZlJ1bGUiOmNhc2UiPGNmUnVsZT4iOmlmKHplPVB0LHJ0PWt0LHllPXtyZWY6UCxmOltdfSwhdnQubWF0Y2goL1wvPi8pKWJyZWFrO2Nhc2UiPC9jZlJ1bGU+Ijpzd2l0''@;'; put 'put ''Y2gocnQuZHhmSWQmJm5lJiZuZS5EWEYmJih5ZS5zPW5lLkRYRlsrcnQuZHhmSWRdKSxydC50eXBlKXtjYXNlImR1cGxpY2F0ZVZhbHVlcyI6eWUudD0iZHVwIjticmVhaztjYXNlInVuaXF1ZVZhbHVlcyI6eWUudD0idW5pcXVlIjticmVhaztjYXNlImNvbnRhaW5zQmxhbmtzIjp5ZS50PSJi''@;'; put 'put ''bGFuayIseWUudj0hMDticmVhaztjYXNlIm5vdENvbnRhaW5zQmxhbmtzIjp5ZS50PSJibGFuayIseWUudj0hMTticmVhaztjYXNlImNvbnRhaW5zRXJyb3JzIjp5ZS50PSJlcnJvciIseWUudj0hMDticmVhaztjYXNlIm5vdENvbnRhaW5zRXJyb3JzIjp5ZS50PSJlcnJvciIseWUudj0hMTti''@;'; put 'put ''cmVhaztjYXNlImNlbGxJcyI6c3dpdGNoKHJ0Lm9wZXJhdG9yKXtjYXNlImNvbnRhaW5zVGV4dCI6Y2FzZSJub3RDb250YWlucyI6Y2FzZSJiZWdpbnNXaXRoIjpjYXNlImVuZHNXaXRoIjppZih5ZS50PSJ0ZXh0Iix5ZS5vcD1zdltydC5vcGVyYXRvcl0sbnVsbD09cnQudGV4dCl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkNGIFRleHQgUnVsZSAiK3llLm9wKyIgbWlzc2luZyB0ZXh0Iik7eWUudj1ydC50ZXh0LHllLmY9eWUuZlswXSxudWxsPT15ZS5mJiZkZWxldGUgeWUuZjticmVhaztkZWZhdWx0OnllLnQ9InZhbCIseWUub3A9Y0FbcnQub3BlcmF0b3JdLDE9PXllLmYubGVuZ3RoP2lzTmFO''@;'; put 'put ''KCt5ZS5mWzBdKT95ZS5mPXllLmZbMF06KHllLnY9K3llLmZbMF0sZGVsZXRlIHllLmYpOih5ZS5taW49aXNOYU4oK3llLmZbMF0pP3llLmZbMF06K3llLmZbMF0seWUubWF4PWlzTmFOKCt5ZS5mWzFdKT95ZS5mWzFdOit5ZS5mWzFdLGRlbGV0ZSB5ZS5mKX1icmVhaztjYXNlImV4cHJlc3Np''@;'; put 'put ''b24iOnllLnQ9ImZvcm11bGEiLHllLmY9eWUuZlswXTticmVhaztjYXNlImNvbnRhaW5zVGV4dCI6Y2FzZSJub3RDb250YWluc1RleHQiOmNhc2UiYmVnaW5zV2l0aCI6Y2FzZSJlbmRzV2l0aCI6aWYoeWUudD0idGV4dCIseWUub3A9c3ZbcnQudHlwZV0sbnVsbD09cnQudGV4dCYmeWUuZi5s''@;'; put 'put ''ZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIkNGIFRleHQgUnVsZSAiK3llLm9wKyIgbWlzc2luZyB0ZXh0Iik7eWUudj1udWxsIT1ydC50ZXh0P3J0LnRleHQ6eWUuZlsxXS5tYXRjaCgvIi4qIi8pP3llLmZbMV0uc2xpY2UoMSwtMSk6eWUuZlsxXSx5ZS5mPXllLmZbMF0sbnVsbD09eWUuZiYm''@;'; put 'put ''ZGVsZXRlIHllLmY7YnJlYWs7Y2FzZSJjb2xvclNjYWxlIjppZih5ZS50PSJzY2FsZSIsIXllLmNvbG9yU2NhbGUpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGNvbG9yU2NhbGUiKTt5ZS5jbWluPUdnKChXZT15ZS5jb2xvclNjYWxlKS5jZnZvc1swXSxXZS5jb2xvcnNbMF0sbmUsWCksMz09''@;'; put 'put ''V2UuY2Z2b3MubGVuZ3RoJiYoeWUuY21pZD1HZyhXZS5jZnZvc1sxXSxXZS5jb2xvcnNbMV0sbmUsWCkpLHllLmNtYXg9R2coV2UuY2Z2b3NbV2UuY2Z2b3MubGVuZ3RoLTFdLFdlLmNvbG9yc1tXZS5jZnZvcy5sZW5ndGgtMV0sbmUsWCk7YnJlYWs7Y2FzZSJkYXRhQmFyIjppZih5ZS50PSJi''@;'; put 'put ''YXIiLCF5ZS5kYXRhQmFyKXRocm93IG5ldyBFcnJvcigibWlzc2luZyBkYXRhQmFyIik7KFdlPXllLmRhdGFCYXIpLmNvbG9yc1swXSYmKHllLmNvbG9yPXpUKFdlLmNvbG9yc1swXSxuZSxYKSkseWUuY21pbj1wNihXZS5jZnZvc1swXSkseWUuY21heD1wNihXZS5jZnZvc1sxXSk7YnJlYWs7''@;'; put 'put ''Y2FzZSJpY29uU2V0IjppZih5ZS50PSJpY29uIiwheWUuaWNvblNldCl0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgaWNvblNldCIpO3llLnRocmVzaD0oV2U9eWUuaWNvblNldCkuY2Z2b3MubWFwKGZ1bmN0aW9uKER0KXtyZXR1cm4gcDYoRHQpfSkseWUudj1XZS50YWcmJldlLnRhZy5pY29u''@;'; put 'put ''U2V0fHwiM1RyYWZmaWNMaWdodHMxIix5ZS5yZXY9UnIoV2UudGFnLnJldmVyc2V8fCJmYWxzZSIpLHllLnBjdD1ScihXZS50YWcucGVyY2VudHx8InRydWUiKSx5ZS5oaWRkZW49IVJyKFdlLnRhZy5zaG93VmFsdWV8fCJ0cnVlIik7YnJlYWs7Y2FzZSJ0aW1lUGVyaW9kIjp5ZS50PSJkYXRl''@;'; put 'put ''Iix5ZS5vcD1kQVtydC50aW1lUGVyaW9kXTticmVhaztjYXNlImFib3ZlQXZlcmFnZSI6eWUudD0iYXZnIix5ZS5vcD0iMCI9PXJ0LmFib3ZlQXZlcmFnZT8iTCI6IkciLHllLm9wKz1ydC5zdGREZXY/cnQuc3RkRGV2OlJyKHJ0LmVxdWFsQXZlcmFnZXx8IjAiKT8iRSI6IlQiO2JyZWFrO2Nh''@;'; put 'put ''c2UidG9wMTAiOnllLnQ9InJhbmsiLHllLm9wPShScihydC5ib3R0b218fCIwIik/IkIiOiJUIikrKFJyKHJ0LnBlcmNlbnR8fCIwIik/IlAiOiJWIikseWUudj0rcnQucmFuazticmVhaztkZWZhdWx0OnRocm93IlVuc3VwcG9ydGVkIENGIFR5cGUgIitydC50eXBlfWlmKGRlbGV0ZSB5ZS5j''@;'; put 'put ''b2xvclNjYWxlLGRlbGV0ZSB5ZS5kYXRhQmFyLGRlbGV0ZSB5ZS5pY29uU2V0LCF5ZS50KXRocm93IGNvbnNvbGUubG9nKHkuc2xpY2UoemUsUHQrdnQubGVuZ3RoKSksImJhZCBDRiBydWxlIjtudWxsIT15ZS5mJiYheWUuZi5sZW5ndGgmJmRlbGV0ZSB5ZS5mLHllLmRlbHx8dmUucHVzaCh5''@;'; put 'put ''ZSk7YnJlYWs7Y2FzZSI8Zm9ybXVsYSI6Y2FzZSI8Zm9ybXVsYT4iOlZlPVB0K3Z0Lmxlbmd0aDticmVhaztjYXNlIjwvZm9ybXVsYT4iOnllLmYucHVzaChocih5LnNsaWNlKFZlLFB0KSkpO2JyZWFrO2Nhc2UiPGYiOmNhc2UiPGY+IjpWZT1QdCt2dC5sZW5ndGg7YnJlYWs7Y2FzZSI8L2Y+''@;'; put 'put ''Ijp5ZS5mLnB1c2goaHIoeS5zbGljZShWZSxQdCkpKTticmVhaztjYXNlIjxzcXJlZj4iOkN0PVB0K3Z0Lmxlbmd0aDticmVhaztjYXNlIjwvc3FyZWY+IjphdD15LnNsaWNlKEN0LFB0KSxQPWF0P2F0LmluZGV4T2YoIiAiKT4tMT9hdDpSbyhhdCk6IiIseWUucmVmPVAsdmUuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihEdCl7RHQucmVmPVB9KTticmVhaztjYXNlIjxjb2xvclNjYWxlIjpjYXNlIjxjb2xvclNjYWxlPiI6Y2FzZSI8ZGF0YUJhciI6Y2FzZSI8ZGF0YUJhcj4iOmNhc2UiPGljb25TZXQiOmNhc2UiPGljb25TZXQ+IjpXZT17Y2Z2b3M6W10sY29sb3JzOltdLHRhZzprdH0sVmU9UHQr''@;'; put 'put ''dnQubGVuZ3RoO2JyZWFrO2Nhc2UiPC9jb2xvclNjYWxlPiI6eWUuY29sb3JTY2FsZT1XZTticmVhaztjYXNlIjwvZGF0YUJhcj4iOnllLmRhdGFCYXI9V2U7YnJlYWs7Y2FzZSI8L2ljb25TZXQ+Ijp5ZS5pY29uU2V0PVdlO2JyZWFrO2Nhc2UiPGNmdm8iOmNhc2UiPGNmdm8vPiI6V2UuY2Z2''@;'; put 'put ''b3MucHVzaChrdCk7YnJlYWs7Y2FzZSI8L2Nmdm8+IjpicmVhaztjYXNlIjxjb2xvciI6V2UuY29sb3JzLnB1c2goa3QpO2JyZWFrO2Nhc2UiPC9jb2xvcj4iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6YmU9ITA7YnJlYWs7''@;'; put 'put ''Y2FzZSI8L2V4dD4iOmJlPSExO2JyZWFrO2Nhc2UiPG5lZ2F0aXZlRmlsbENvbG9yIjpjYXNlIjxheGlzQ29sb3IiOmNhc2UiPGJvcmRlckNvbG9yIjpjYXNlIjxuZWdhdGl2ZUJvcmRlckNvbG9yIjpjYXNlIjxjZkljb24iOnllLmRlbD0hMDticmVhaztjYXNlIjxkeGY+IjpiZT0hMCxsdD1Q''@;'; put 'put ''dDticmVhaztjYXNlIjwvZHhmPiI6YmU9ITEseWUucz1IcCh5LnNsaWNlKGx0LFB0K3Z0Lmxlbmd0aCksbmUsWCxMKTticmVhaztkZWZhdWx0OmlmKEwmJkwuV1RGKXtpZihmZSlicmVhaztpZighYmUpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitrdFswXSsiIGluIGNvbmRmbXQi''@;'; put 'put ''KX19cmV0dXJuIHZ0fSksdmV9KHksZmUsUCxMLFgsbmUpfXZhciBkQz0vPCg/Olx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cLz8+L2c7ZnVuY3Rpb24gbTYoeSxQKXt2YXIgTD0wLFg9MCxuZT0wLGZlPTA7aWYoIVB8fCFQLkNlbGxYZilyZXR1cm4gbnVsbDt2YXIgYmU9UC5DZWxs''@;'; put 'put ''WGZbeV07bnVsbCE9YmUmJihudWxsIT1iZS5udW1GbXRJZCYmKEw9YmUubnVtRm10SWQpLG51bGwhPWJlLmZpbGxJZCYmKFg9YmUuZmlsbElkKSxudWxsIT1iZS5mb250SWQmJihuZT1iZS5mb250SWQpLG51bGwhPWJlLmJvcmRlcklkJiYoZmU9YmUuYm9yZGVySWQpKTt2YXIgdmU9e3Q6Inoi''@;'; put 'put ''fTt0cnl7cjModmUsTCxYLG5lLGZlLHtXVEY6MSxjZWxsU3R5bGVzOiEwfSwwLFApfWNhdGNoe31yZXR1cm4gdmUuc31mdW5jdGlvbiAkZyh5LFAsTCxYKXtpZih2b2lkIDA9PT15LnYmJnZvaWQgMD09PXkuZiYmbnVsbD09eS5zJiYheS5jfHwieiI9PT15LnQmJiF5LmMmJiFYLnNoZWV0U3R1''@;'; put 'put ''YnMpcmV0dXJuIiI7dmFyIG5lPSIiLGZlPXkudCxiZT15LnY7aWYoInoiIT09eS50KXN3aXRjaCh5LnQpe2Nhc2UiYiI6bmU9eS52PyIxIjoiMCI7YnJlYWs7Y2FzZSJuIjpuZT0iIit5LnY7YnJlYWs7Y2FzZSJlIjpuZT1GbFt5LnZdO2JyZWFrO2Nhc2UiZCI6WCYmWC5jZWxsRGF0ZXM/bmU9''@;'; put 'put ''RnQoeS52LC0xKS50b0lTT1N0cmluZygpOigoeT1LdCh5KSkudD0ibiIsbmU9IiIrKHkudj1aZShGdCh5LnYpKSkpLHR5cGVvZiB5Lno+InUiJiYoeS56PXcuX3RhYmxlWzE0XSk7YnJlYWs7ZGVmYXVsdDpuZT15LnZ9dmFyIHZlPSJ6Ij09eS50PyIiOmNvKCJ2IixicihuZSkpLHllPXtyOlB9''@;'; put 'put ''LFZlPVg/bXUoWC5jZWxsWGZzLFguY2VsbFN0eWxlWGZzLHksWCk6MDtzd2l0Y2goMCE9PVZlJiYoeWUucz1WZSkseS50KXtjYXNlIm4iOmNhc2UieiI6YnJlYWs7Y2FzZSJkIjp5ZS50PSJkIjticmVhaztjYXNlImIiOnllLnQ9ImIiO2JyZWFrO2Nhc2UiZSI6eWUudD0iZSI7YnJlYWs7ZGVm''@;'; put 'put ''YXVsdDppZihudWxsPT15LnYpe2RlbGV0ZSB5LnQ7YnJlYWt9aWYoWCYmWC5ib29rU1NUKXt2ZT1jbygidiIsIiIrR3coWC5TdHJpbmdzLHkudix5LlI/eS5yPXBhKHkuUik6bnVsbCxYLnJldlN0cmluZ3MpKSx5ZS50PSJzIjticmVha31BcnJheS5pc0FycmF5KHkuUik/KHZlPSI8aXM+Iitw''@;'; put 'put ''YSh5LlIpKyI8L2lzPiIseWUudD0iaW5saW5lU3RyIik6eWUudD0ic3RyIn1pZih5LnQhPWZlJiYoeS50PWZlLHkudj1iZSkseS5mKXt2YXIgemU9eS5GJiZ5LkYuc2xpY2UoMCxQLmxlbmd0aCk9PVA/e3Q6ImFycmF5IixyZWY6eS5GfTpudWxsO3ZlPV9yKCJmIixicih5LmYpLHplKSsobnVs''@;'; put 'put ''bCE9eS52P3ZlOiIiKX1yZXR1cm4geS5sJiZMWyIhbGlua3MiXS5wdXNoKFtQLHkubF0pLHkuYyYmTFsiIWNvbW1lbnRzIl0ucHVzaChbUCx5LmNdKSxfcigiYyIsdmUseWUpfXZhciB2Nj1mdW5jdGlvbigpe3ZhciB5PS88KD86XHcrOik/Y1sgXC8+XS8sUD0vPFwvKD86XHcrOik/cm93Pi8s''@;'; put 'put ''TD0vcj1bIiddKFteIiddKilbIiddLyxYPS88KD86XHcrOik/aXM+KFtcU1xzXSo/KTxcLyg/Olx3KzopP2lzPi8sbmU9L3JlZj1bIiddKFteIiddKilbIiddLyxmZT1QdSgidiIpLGJlPVB1KCJmIik7cmV0dXJuIGZ1bmN0aW9uKHllLFZlLHplLFdlLHJ0LGx0LEN0KXtmb3IodmFyIGNuLFhu''@;'; put 'put ''LFFuLGVyLHRpLGF0PTAsdnQ9IiIsUHQ9W10sa3Q9W10sRHQ9MCxadD0wLGduPTAsJG49IiIsQm49MCxEbj0wLHpuPTAsS3I9MCxpaT0wLEVpPTAsT2k9QXJyYXkuaXNBcnJheShDdC5DZWxsWGYpLGZyPVtdLEFuPVtdLHdyPUFycmF5LmlzQXJyYXkoemUpLHJyPVtdLEVuPXt9LENyPSExLGJp''@;'; put 'put ''PXllLnNwbGl0KFApLHFyPSEhV2Uuc2hlZXRTdHVicyxVaT0hIVdlLmNlbGxIVE1MLExvPSEoITE9PT1XZS5jZWxsVGV4dCYmIVdlLmNlbGxORiYmIVdlLmNlbGxTdHlsZXMpLElpPTAsc3M9YmkubGVuZ3RoO0lpIT1zczsrK0lpKXt2YXIgdW89KHZ0PWJpW0lpXS50cmltKCkpLmxlbmd0aDtp''@;'; put 'put ''ZigwIT09dW8pe3ZhciBObz0wO2U6Zm9yKGF0PTA7YXQ8dW87KythdClzd2l0Y2godnRbYXRdKXtjYXNlIj4iOmlmKCIvIiE9dnRbYXQtMV0peysrYXQ7YnJlYWsgZX1XZS5jZWxsU3R5bGVzJiZudWxsIT0oWG49YW4odnQuc2xpY2UoTm8sYXQpLCEwKSkuciYmcGFyc2VJbnQoWG4uciwxMCkm''@;'; put 'put ''JihCbj1wYXJzZUludChYbi5yLDEwKSxFbj17fSxDcj0hMSxYbi5odCYmKENyPSEwLEVuLmhwdD1wYXJzZUZsb2F0KFhuLmh0KSxFbi5ocHg9Y2QoRW4uaHB0KSksWG4uZHlEZXNjZW50JiYoQ3I9ITAsRW4uZHlEZXNjZW50PVhuLmR5RGVzY2VudCksIjEiPT1Ybi5oaWRkZW4mJihDcj0hMCxF''@;'; put 'put ''bi5oaWRkZW49ITApLG51bGwhPVhuLm91dGxpbmVMZXZlbCYmKENyPSEwLEVuLmxldmVsPStYbi5vdXRsaW5lTGV2ZWwpLFhuLnMmJkN0JiZDdC5DZWxsWGYmJihDcj0hMCxFbi5zPW02KFhuLnMsQ3QpKSxDciYmKHJyW0JuLTFdPUVuKSk7YnJlYWs7Y2FzZSI8IjpObz1hdH1pZihObz49YXQp''@;'; put 'put ''YnJlYWs7aWYoQm49bnVsbCE9KFhuPWFuKHZ0LnNsaWNlKE5vLGF0KSwhMCkpLnI/cGFyc2VJbnQoWG4uciwxMCk6Qm4rMSxEbj0tMSwhKFdlLnNoZWV0Um93cyYmV2Uuc2hlZXRSb3dzPEJuKSl7V2Uubm9kaW18fChydC5zLnI+Qm4tMSYmKHJ0LnMucj1Cbi0xKSxydC5lLnI8Qm4tMSYmKHJ0''@;'; put 'put ''LmUucj1Cbi0xKSk7dmFyIEVvPXt0OiJyb3ciLHJvdzpbXSxSOkJuLTEsaWR4OlZlfTtXZS5jZWxsU3R5bGVzJiYoRW49e30sQ3I9ITEsWG4uaHQmJihDcj0hMCxFbi5ocHQ9cGFyc2VGbG9hdChYbi5odCksRW4uaHB4PWNkKEVuLmhwdCkpLFhuLmR5RGVzY2VudCYmKENyPSEwLEVuLmR5RGVz''@;'; put 'put ''Y2VudD1Ybi5keURlc2NlbnQpLCIxIj09WG4uaGlkZGVuJiYoQ3I9ITAsRW4uaGlkZGVuPSEwKSxudWxsIT1Ybi5vdXRsaW5lTGV2ZWwmJihDcj0hMCxFbi5sZXZlbD0rWG4ub3V0bGluZUxldmVsKSxYbi5zJiYoQ3I9ITAsRW4ucz1tNihYbi5zLEN0KSksQ3ImJihXZS5jYWxsYmFjaz9Fby5w''@;'; put 'put ''cm9wcz1FbjpycltCbi0xXT1FbikpLFB0PXZ0LnNsaWNlKGF0KS5zcGxpdCh5KTtmb3IodmFyIGFpPTA7YWkhPVB0Lmxlbmd0aCYmIjwiPT1QdFthaV0udHJpbSgpLmNoYXJBdCgwKTsrK2FpKTtmb3IoUHQ9UHQuc2xpY2UoYWkpLGF0PTA7YXQhPVB0Lmxlbmd0aDsrK2F0KWlmKDAhPT0odnQ9''@;'; put 'put ''UHRbYXRdLnRyaW0oKSkubGVuZ3RoKXtpZihrdD12dC5tYXRjaChMKSxEdD1hdCxadD0wLGduPTAsdnQ9IjxjICIrKCI8Ij09dnQuc2xpY2UoMCwxKT8iPiI6IiIpK3Z0LG51bGwhPWt0JiYyPT09a3QubGVuZ3RoKXtmb3IoRHQ9MCwkbj1rdFsxXSxadD0wO1p0IT0kbi5sZW5ndGgmJiEoKGdu''@;'; put 'put ''PSRuLmNoYXJDb2RlQXQoWnQpLTY0KTwxfHxnbj4yNik7KytadClEdD0yNipEdCtnbjtEbj0tLUR0fWVsc2UrK0RuO2ZvcihadD0wO1p0IT12dC5sZW5ndGgmJjYyIT09dnQuY2hhckNvZGVBdChadCk7KytadCk7aWYoKytadCwoWG49YW4odnQuc2xpY2UoMCxadCksITApKS5yfHwoWG4ucj1B''@;'; put 'put ''aSh7cjpCbi0xLGM6RG59KSksY249e3Q6IiJ9LG51bGwhPShrdD0oJG49dnQuc2xpY2UoWnQpKS5tYXRjaChmZSkpJiYiIiE9PWt0WzFdJiYoY24udj1ocihrdFsxXSkpLFdlLmNlbGxGb3JtdWxhKXtpZihudWxsIT0oa3Q9JG4ubWF0Y2goYmUpKSYmIiIhPT1rdFsxXSl7aWYoY24uZj1ocihZ''@;'; put 'put ''aShrdFsxXSkpLnJlcGxhY2UoL1xyXG4vZywiXG4iKSxXZS54bGZufHwoY24uZj1iSChjbi5mKSksa3RbMF0uaW5kZXhPZigndD0iYXJyYXkiJyk+LTEpY24uRj0oJG4ubWF0Y2gobmUpfHxbXSlbMV0sY24uRi5pbmRleE9mKCI6Iik+LTEmJmZyLnB1c2goW1JvKGNuLkYpLGNuLkZdKTtlbHNl''@;'; put 'put ''IGlmKGt0WzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7ZXI9YW4oa3RbMF0pO3ZhciBLcz1ocihZaShrdFsxXSkpO1dlLnhsZm58fChLcz1iSChLcykpLEFuW3BhcnNlSW50KGVyLnNpLDEwKV09W2VyLEtzLFhuLnJdfX1lbHNlKGt0PSRuLm1hdGNoKC88ZltePl0qXC8+LykpJiZBblso''@;'; put 'put ''ZXI9YW4oa3RbMF0pKS5zaV0mJihjbi5mPV9RKEFuW2VyLnNpXVsxXSxBbltlci5zaV1bMl0sWG4ucikpO3ZhciBNbj1rcyhYbi5yKTtmb3IoWnQ9MDtadDxmci5sZW5ndGg7KytadClNbi5yPj1mcltadF1bMF0ucy5yJiZNbi5yPD1mcltadF1bMF0uZS5yJiZNbi5jPj1mcltadF1bMF0ucy5j''@;'; put 'put ''JiZNbi5jPD1mcltadF1bMF0uZS5jJiYoY24uRj1mcltadF1bMV0pfWlmKG51bGw9PVhuLnQmJnZvaWQgMD09PWNuLnYpaWYoY24uZnx8Y24uRiljbi52PTAsY24udD0ibiI7ZWxzZXtpZighcXIpY29udGludWU7Y24udD0ieiJ9ZWxzZSBjbi50PVhuLnR8fCJuIjtzd2l0Y2gocnQucy5jPkRu''@;'; put 'put ''JiYocnQucy5jPURuKSxydC5lLmM8RG4mJihydC5lLmM9RG4pLGNuLnQpe2Nhc2UibiI6aWYoIiI9PWNuLnZ8fG51bGw9PWNuLnYpe2lmKCFxciljb250aW51ZTtjbi50PSJ6In1lbHNlIGNuLnY9cGFyc2VGbG9hdChjbi52KTticmVhaztjYXNlInMiOmlmKHR5cGVvZiBjbi52PiJ1Iil7aWYo''@;'; put 'put ''IXFyKWNvbnRpbnVlO2NuLnQ9InoifWVsc2UgUW49bDZbcGFyc2VJbnQoY24udiwxMCldLGNuLnY9UW4udCxjbi5yPVFuLnIsUW4uUiYmKGNuLlI9UW4uUiksVWkmJihjbi5oPVFuLmgpO2JyZWFrO2Nhc2Uic3RyIjpjbi50PSJzIixjbi52PW51bGwhPWNuLnY/WWkoY24udik6IiIsVWkmJihj''@;'; put 'put ''bi5oPVhpKGNuLnYpKTticmVhaztjYXNlImlubGluZVN0ciI6a3Q9JG4ubWF0Y2goWCksY24udD0icyIsbnVsbCE9a3QmJihRbj1KeShrdFsxXSkpPyhjbi52PVFuLnQsUW4uUiYmKGNuLlI9UW4uUiksVWkmJihjbi5oPVFuLmgpKTpjbi52PSIiO2JyZWFrO2Nhc2UiYiI6Y24udj1Scihjbi52''@;'; put 'put ''KTticmVhaztjYXNlImQiOldlLmNlbGxEYXRlcz9jbi52PUZ0KGNuLnYsMSk6KGNuLnY9WmUoRnQoY24udiwxKSksY24udD0ibiIpO2JyZWFrO2Nhc2UiZSI6ITEhPT1XZS5jZWxsVGV4dCYmKGNuLnc9Y24udiksY24udj1CZltjbi52XX1pZihMbyl7em49S3I9aWk9RWk9MCx0aT1udWxsLE9p''@;'; put 'put ''JiZ2b2lkIDAhPT1Ybi5zJiZudWxsIT0odGk9Q3QuQ2VsbFhmW1huLnNdKSYmKG51bGwhPXRpLm51bUZtdElkJiYoem49dGkubnVtRm10SWQpLFdlLmNlbGxTdHlsZXMmJihudWxsIT10aS5maWxsSWQmJihLcj10aS5maWxsSWQpLG51bGwhPXRpLmZvbnRJZCYmKGlpPXRpLmZvbnRJZCksbnVs''@;'; put 'put ''bCE9dGkuYm9yZGVySWQmJihFaT10aS5ib3JkZXJJZCkpKTt0cnl7cjMoY24sem4sS3IsaWksRWksV2UsMCxDdCl9Y2F0Y2h7fVdlLmNlbGxTdHlsZXMmJmNuLnMmJih0aSYmdGkuYWxpZ25tZW50JiYoY24ucy5hbGlnbm1lbnQ9S3QodGkuYWxpZ25tZW50KSksdGkmJnRpLnByb3RlY3Rpb24m''@;'; put 'put ''JihudWxsIT10aS5wcm90ZWN0aW9uLmhpZGRlbiYmKGNuLnMuaGlkZGVuPXRpLnByb3RlY3Rpb24uaGlkZGVuKSxudWxsIT10aS5wcm90ZWN0aW9uLmVkaXRhYmxlJiYoY24ucy5lZGl0YWJsZT10aS5wcm90ZWN0aW9uLmVkaXRhYmxlKSksdGkmJnRpLnN0eWxlJiYoY24ucy5zdHlsZT10aS5z''@;'; put 'put ''dHlsZSkpLFdlLmNlbGxEYXRlcyYmT2kmJiJuIj09Y24udCYmdy5pc19kYXRlKHcuX3RhYmxlW3puXSkmJihjbi50PSJkIixjbi52PWN0KGNuLnYpKX12YXIgeXM7V2Uubm9kaW0mJih5cz1rcyhYbi5yKSxydC5zLnI+eXMuciYmKHJ0LnMucj15cy5yKSxydC5lLnI8eXMuciYmKHJ0LmUucj15''@;'; put 'put ''cy5yKSksV2UuY2FsbGJhY2s/KHlzPWtzKFhuLnIpLEVvLnJvd1t5cy5jXT1jbik6d3I/KHplWyh5cz1rcyhYbi5yKSkucl18fCh6ZVt5cy5yXT1bXSksemVbeXMucl1beXMuY109Y24pOnplW1huLnJdPWNufVdlLmNhbGxiYWNrJiZXZS5jYWxsYmFjayhFbyl9fX1xciYmIVdlLmNhbGxiYWNr''@;'; put 'put ''JiZtNigwLEN0KSxyci5sZW5ndGg+MCYmKHplWyIhcm93cyJdPXJyKX19KCksXzY9X3IoIndvcmtzaGVldCIsbnVsbCx7eG1sbnM6a2kubWFpblswXSwieG1sbnM6ciI6a2kuciwieG1sbnM6eDE0YWMiOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1s''@;'; put 'put ''LzIwMDkvOS9hYyIsInhtbG5zOm1jIjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiLCJtYzpJZ25vcmFibGUiOiJ4MTRhYyJ9KTtmdW5jdGlvbiBoQSh5LFAsTCxYKXt2YXIgYmUsbmU9W1BuLF82XSx2ZT0iIix5ZT1MLlNoZWV0''@;'; put 'put ''c1tMLlNoZWV0TmFtZXNbeV1dO251bGw9PXllJiYoeWU9e30pO3ZhciBWZT15ZVsiIXJlZiJdfHwiQTEiLHplPVJvKFZlKTtpZih6ZS5lLmM+MTYzODN8fHplLmUucj4xMDQ4NTc1KXtpZihQLldURil0aHJvdyBuZXcgRXJyb3IoIlJhbmdlICIrVmUrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBB''@;'; put 'put ''MTpYRkQxMDQ4NTc2Iik7emUuZS5jPU1hdGgubWluKHplLmUuYywxNjM4MyksemUuZS5yPU1hdGgubWluKHplLmUuYywxMDQ4NTc1KSxWZT1EaSh6ZSl9WHx8KFg9e30pLHllWyIhY29tbWVudHMiXT1bXTt2YXIgV2U9W10scnQ9eWVbIiFwcmludCJdO2lmKGZ1bmN0aW9uIFFrKHksUCxMLFgs''@;'; put 'put ''bmUpe3ZhciBmZT0hMSxiZT17fSx2ZT1udWxsO2lmKCJ4bHN4IiE9PVguYm9va1R5cGUmJlAudmJhcmF3KXt2YXIgeWU9UC5TaGVldE5hbWVzW0xdO3RyeXtQLldvcmtib29rJiYoeWU9UC5Xb3JrYm9vay5TaGVldHNbTF0uQ29kZU5hbWV8fHllKX1jYXRjaHt9ZmU9ITAsYmUuY29kZU5hbWU9''@;'; put 'put ''YnIoeWUpfXkmJnlbIiFjb25kZm10Il0mJihiZS5lbmFibGVGb3JtYXRDb25kaXRpb25zQ2FsY3VsYXRpb249IjEiKSx5JiZ5WyIhdGFiY29sb3IiXSYmKHZlPSh2ZXx8IiIpKyc8dGFiQ29sb3IgcmdiPSJGRicrbjAoeVsiIXRhYmNvbG9yIl0ucmdiKSsnIi8+Jyk7dmFyIFZlPSExLHplPXt9''@;'; put 'put ''O2lmKCgoKHl8fHt9KVsiIXByaW50Il18fHt9KS5wcm9wc3x8e30pLmZpdCYmKFZlPSEwLHplLmZpdFRvUGFnZT0xKSxWZSYmKHZlPSh2ZXx8IiIpK19yKCJwYWdlU2V0VXBQciIsbnVsbCx6ZSkpLHkmJnlbIiFvdXRsaW5lIl0pe3ZhciBXZT17c3VtbWFyeUJlbG93OjEsc3VtbWFyeVJpZ2h0''@;'; put 'put ''OjF9O3lbIiFvdXRsaW5lIl0uYWJvdmUmJihXZS5zdW1tYXJ5QmVsb3c9MCkseVsiIW91dGxpbmUiXS5sZWZ0JiYoV2Uuc3VtbWFyeVJpZ2h0PTApLHZlPSh2ZXx8IiIpK19yKCJvdXRsaW5lUHIiLG51bGwsV2UpfSFmZSYmIXZlfHwobmVbbmUubGVuZ3RoXT1fcigic2hlZXRQciIsdmUsYmUp''@;'; put 'put ''KX0oeWUsTCx5LFAsbmUpLG5lW25lLmxlbmd0aF09X3IoImRpbWVuc2lvbiIsbnVsbCx7cmVmOlZlfSksbmVbbmUubGVuZ3RoXT1mdW5jdGlvbiBnNih5LFAsTCxYKXt2YXIgbmU9e3dvcmtib29rVmlld0lkOiIwIn07aWYoKCgoWHx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKS5sZW5n''@;'; put 'put ''dGgpe3ZhciBmZT1YLldvcmtib29rLlZpZXdzLGJlPWZlW0xdfHxmZVswXTtuZS5yaWdodFRvTGVmdD1iZS5SVEw/IjEiOiIwIixiZS56b29tJiYobmUuem9vbVNjYWxlPWJlLnpvb20pLG51bGwhPWJlLmdyaWQmJihuZS5zaG93R3JpZExpbmVzPWJlLmdyaWQpLGJlLnZpZXcmJihuZS52aWV3''@;'; put 'put ''PWJlLnZpZXcpfW51bGwhPXlbIiFncmlkbGluZXMiXSYmKG5lLnNob3dHcmlkTGluZXM9ISF5WyIhZ3JpZGxpbmVzIl0pO3ZhciB2ZT0iIix5ZT17cjowLGM6MH07aWYoeVsiIXNlbCJdKXtpZighKHllPXlbIiFzZWwiXS5jZWxsKSl7aWYoIXlbIiFzZWwiXS5yYW5nZSl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7eWU9YWEoeVsiIXNlbCJdLnJhbmdlLnJlcGxhY2UoL1xzLiokLywiIikpLnN9InN0cmluZyI9PXR5cGVvZiB5ZSYmKHllPWtzKHllKSl9dmFyIHplPXlbIiFmcmVlemUiXT8ic3RyaW5nIj09dHlwZW9mIHlbIiFm''@;'; put 'put ''cmVlemUiXT9rcyh5WyIhZnJlZXplIl0pOnlbIiFmcmVlemUiXTp7YzowLHI6MH07aWYoeVsiIWZyZWV6ZSJdKXt2YXIgV2U9QWkoemUpLHJ0PXtzdGF0ZToiZnJvemVuIix4U3BsaXQ6emUuYyx5U3BsaXQ6emUucix0b3BMZWZ0Q2VsbDpXZX07eVsiIXNlbCJdJiYocnQuYWN0aXZlUGFuZT0o''@;'; put 'put ''eWUucj49emUuciYmemUucj4wPyJib3R0b20iOiJ0b3AiKSsoeWUuYz49emUuYyYmemUuYz4wPyJSaWdodCI6IkxlZnQiKSksdmU9X3IoInBhbmUiLG51bGwscnQpfWlmKHlbIiFzZWwiXSl7dmFyIGx0PXthY3RpdmVDZWxsOiJzdHJpbmciPT10eXBlb2YgeWU/eWU6QWkoeWUpfTtsdC5zcXJl''@;'; put 'put ''Zj15WyIhc2VsIl0ucmFuZ2U/eVsiIXNlbCJdLnJhbmdlOmx0LmFjdGl2ZUNlbGwrIjoiK2x0LmFjdGl2ZUNlbGwsdmUrPV9yKCJzZWxlY3Rpb24iLG51bGwsbHQpLHlbIiFmcmVlemUiXSYmKHplLmM+MCYmKGx0LnBhbmU9InRvcFJpZ2h0Iix2ZSs9X3IoInNlbGVjdGlvbiIsbnVsbCxsdCkp''@;'; put 'put ''LHplLnI+MCYmKGx0LnBhbmU9ImJvdHRvbUxlZnQiLHZlKz1fcigic2VsZWN0aW9uIixudWxsLGx0KSksemUuYz4wJiZ6ZS5yPjAmJihsdC5wYW5lPSJib3R0b21SaWdodCIsdmUrPV9yKCJzZWxlY3Rpb24iLG51bGwsbHQpKSl9cmV0dXJuIF9yKCJzaGVldFZpZXdzIixfcigic2hlZXRWaWV3''@;'; put 'put ''Iix2ZXx8bnVsbCxuZSkse30pfSh5ZSwwLHksTCksUC5zaGVldEZvcm1hdCl7dmFyIGx0PXtkZWZhdWx0Um93SGVpZ2h0OlAuc2hlZXRGb3JtYXQuZGVmYXVsdFJvd0hlaWdodHx8IjE2IixiYXNlQ29sV2lkdGg6UC5zaGVldEZvcm1hdC5iYXNlQ29sV2lkdGh8fCIxMCJ9O251bGwhPVAuc2hl''@;'; put 'put ''ZXRGb3JtYXQub3V0bGluZUxldmVsUm93JiYobHQub3V0bGluZUxldmVsUm93PVAuc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93KSxuZVtuZS5sZW5ndGhdPV9yKCJzaGVldEZvcm1hdFByIixudWxsLGx0KX1lbHNlIGlmKHllWyIhc2hlZXRGb3JtYXQiXSl7dmFyIEN0PXt9LGF0PSExO3ll''@;'; put 'put ''WyIhc2hlZXRGb3JtYXQiXS5yb3cmJih5ZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdD8oYXQ9ITAsQ3QuZGVmYXVsdFJvd0hlaWdodD15ZVsiIXNoZWV0Rm9ybWF0Il0ucm93LmhwdCxDdC5jdXN0b21IZWlnaHQ9MSk6eWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHg/KGF0PSEwLEN0LmRlZmF1''@;'; put 'put ''bHRSb3dIZWlnaHQ9JGYoeWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHgpLEN0LmN1c3RvbUhlaWdodD0xKTooMD09PXllWyIhc2hlZXRGb3JtYXQiXS5yb3cuaHB0fHwwPT09eWVbIiFzaGVldEZvcm1hdCJdLnJvdy5ocHh8fHllWyIhc2hlZXRGb3JtYXQiXS5yb3cuaGlkZGVuKSYmKGF0PSEw''@;'; put 'put ''LEN0LmRlZmF1bHRSb3dIZWlnaHQ9Q3QuZGVmYXVsdFJvd0hlaWdodHx8MTYsQ3QuY3VzdG9tSGVpZ2h0PTEsQ3QuemVyb0hlaWdodD0xKSx5ZVsiIXNoZWV0Rm9ybWF0Il0uZHlEZXNjZW50JiYoQ3RbIngxNGFjOmR5RGVzY2VudCJdPXllWyIhc2hlZXRGb3JtYXQiXS5keURlc2NlbnQpKSx5''@;'; put 'put ''ZVsiIXNoZWV0Rm9ybWF0Il0uY29sJiYoeWVbIiFzaGVldEZvcm1hdCJdLmNvbC53Y2h8fF8wKHllWyIhc2hlZXRGb3JtYXQiXS5jb2wpLEN0LmRlZmF1bHRDb2xXaWR0aD15ZVsiIXNoZWV0Rm9ybWF0Il0uY29sLndjaCs1L1ZsfHwwLGF0PSEwKSxudWxsPT1DdC5kZWZhdWx0Um93SGVpZ2h0''@;'; put 'put ''JiYoQ3QuZGVmYXVsdFJvd0hlaWdodD0xNiksbnVsbD09Q3QuZGVmYXVsdENvbFdpZHRoJiYoQ3QuZGVmYXVsdENvbFdpZHRoPTEwKSxDdC5vdXRsaW5lTGV2ZWxSb3c9Q3Qub3V0bGluZUxldmVsUm93fHw3LGF0JiYobmVbbmUubGVuZ3RoXT1fcigic2hlZXRGb3JtYXRQciIsbnVsbCxDdCkp''@;'; put 'put ''fW51bGwhPXllWyIhY29scyJdJiZ5ZVsiIWNvbHMiXS5sZW5ndGg+MCYmKG5lW25lLmxlbmd0aF09ZnVuY3Rpb24gYVYoeSxQLEwpe2Zvcih2YXIgbmUsWD1bIjxjb2xzPiJdLGZlPTA7ZmUhPVAubGVuZ3RoOysrZmUpaWYobmU9UFtmZV0pe2lmKG5lLmF1dG8mJiR3KHksbmUsZmUpLG5lLnN8''@;'; put 'put ''fG5lLnope3ZhciBiZT17dDoieiJ9O251bGwhPW5lLnMmJihiZS5zPW5lLnMpLG51bGwhPW5lLnomJihiZS56PW5lLnopLG5lLnN0eWxlPW11KEwuY2VsbFhmcyxMLmNlbGxTdHlsZVhmcyxiZSxMKX1YW1gubGVuZ3RoXT1fcigiY29sIixudWxsLHU2KGZlLG5lKSl9cmV0dXJuIFhbWC5sZW5n''@;'; put 'put ''dGhdPSI8L2NvbHM+IixYLmpvaW4oIiIpfSh5ZSx5ZVsiIWNvbHMiXSxQKSksbmVbYmU9bmUubGVuZ3RoXT0iPHNoZWV0RGF0YS8+Iix5ZVsiIWxpbmtzIl09W10sbnVsbCE9eWVbIiFyZWYiXSYmKHZlPWZ1bmN0aW9uIGhDKHksUCxMLFgpe3ZhciB5ZSx2dCxuZT1bXSxmZT1bXSxiZT1Sbyh5''@;'; put 'put ''WyIhcmVmIl0pLHZlPSIiLFZlPSIiLHplPVtdLFdlPTAscnQ9MCxsdD15WyIhcm93cyJdLEN0PUFycmF5LmlzQXJyYXkoeSksYXQ9e3I6VmV9LFB0PS0xO2ZvcihydD1iZS5zLmM7cnQ8PWJlLmUuYzsrK3J0KXplW3J0XT15byhydCk7Zm9yKFdlPWJlLnMucjtXZTw9YmUuZS5yOysrV2Upe2Zv''@;'; put 'put ''cihmZT1bXSxWZT1icyhXZSkscnQ9YmUucy5jO3J0PD1iZS5lLmM7KytydCl7eWU9emVbcnRdK1ZlO3ZhciBrdD1DdD8oeVtXZV18fFtdKVtydF06eVt5ZV07dm9pZCAwIT09a3QmJm51bGwhPSh2ZT0kZyhrdCx5ZSx5LFApKSYmZmUucHVzaCh2ZSl9KGZlLmxlbmd0aD4wfHxsdCYmbHRbV2Vd''@;'; put 'put ''KSYmKGF0PXtyOlZlfSxsdCYmbHRbV2VdJiYoKHZ0PWx0W1dlXSkuaGlkZGVuJiYoYXQuaGlkZGVuPTEpLFB0PS0xLHZ0LmhweD9QdD0kZih2dC5ocHgpOnZ0LmhwdCYmKFB0PXZ0LmhwdCksUHQ+LTEmJihhdC5odD1QdCxhdC5jdXN0b21IZWlnaHQ9MSksdnQubGV2ZWwmJihhdC5vdXRsaW5l''@;'; put 'put ''TGV2ZWw9dnQubGV2ZWwpLHZ0LmR5RGVzY2VudCYmKGF0WyJ4MTRhYzpkeURlc2NlbnQiXT12dC5keURlc2NlbnQpLHZ0LnMmJihhdC5zPW11KFAuY2VsbFhmcyxQLmNlbGxTdHlsZVhmcyx7dDoieiIsczp2dC5zfSxQKSxhdC5jdXN0b21Gb3JtYXQ9MSkpLG5lW25lLmxlbmd0aF09X3IoInJv''@;'; put 'put ''dyIsZmUuam9pbigiIiksYXQpKX1pZihsdClmb3IoO1dlPGx0Lmxlbmd0aDsrK1dlKWx0JiZsdFtXZV0mJihhdD17cjpXZSsxfSwodnQ9bHRbV2VdKS5oaWRkZW4mJihhdC5oaWRkZW49MSksUHQ9LTEsdnQuaHB4P1B0PSRmKHZ0LmhweCk6dnQuaHB0JiYoUHQ9dnQuaHB0KSxQdD4tMSYmKGF0''@;'; put 'put ''Lmh0PVB0LGF0LmN1c3RvbUhlaWdodD0xKSx2dC5sZXZlbCYmKGF0Lm91dGxpbmVMZXZlbD12dC5sZXZlbCksbmVbbmUubGVuZ3RoXT1fcigicm93IiwiIixhdCkpO3JldHVybiBuZS5qb2luKCIiKX0oeWUsUCksdmUubGVuZ3RoPjAmJihuZVtuZS5sZW5ndGhdPXZlKSksbmUubGVuZ3RoPmJl''@;'; put 'put ''KzEmJihuZVtuZS5sZW5ndGhdPSI8L3NoZWV0RGF0YT4iLG5lW2JlXT1uZVtiZV0ucmVwbGFjZSgiLz4iLCI+IikpLHllWyIhcHJvdGVjdCJdJiYobmVbbmUubGVuZ3RoXT1mdW5jdGlvbiBpVih5KXt2YXIgUD17c2hlZXQ6MX07cmV0dXJuIHNDLmZvckVhY2goZnVuY3Rpb24oTCl7bnVsbCE9''@;'; put 'put ''eVtMXSYmeVtMXSYmKFBbTF09IjEiKX0pLHNBLmZvckVhY2goZnVuY3Rpb24oTCl7bnVsbCE9eVtMXSYmIXlbTF0mJihQW0xdPSIwIil9KSx5LnBhc3N3b3JkP1AucGFzc3dvcmQ9UjkoeS5wYXNzd29yZCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk6eS5lbmNyeXB0aW9uJiYoUC5hbGdv''@;'; put 'put ''cml0aG1OYW1lPXkuZW5jcnlwdGlvbi5hbGdvLFAuaGFzaFZhbHVlPXkuZW5jcnlwdGlvbi5oYXNoLFAuc2FsdFZhbHVlPXkuZW5jcnlwdGlvbi5zYWx0LFAuc3BpbkNvdW50PXkuZW5jcnlwdGlvbi5zcGluKSxfcigic2hlZXRQcm90ZWN0aW9uIixudWxsLFApfSh5ZVsiIXByb3RlY3QiXSkp''@;'; put 'put ''LG51bGwhPXllWyIhYXV0b2ZpbHRlciJdJiYobmVbbmUubGVuZ3RoXT1mdW5jdGlvbiBjVih5LFAsTCxYKXt2YXIgbmU9InN0cmluZyI9PXR5cGVvZiB5LnJlZj95LnJlZjpEaSh5LnJlZik7TC5Xb3JrYm9va3x8KEwuV29ya2Jvb2s9e1NoZWV0czpbXX0pLEwuV29ya2Jvb2suTmFtZXN8fChM''@;'; put 'put ''Lldvcmtib29rLk5hbWVzPVtdKTt2YXIgZmU9TC5Xb3JrYm9vay5OYW1lcyxiZT1hYShuZSk7YmUucy5yPT1iZS5lLnImJihiZS5lLnI9YWEoUFsiIXJlZiJdKS5lLnIsbmU9RGkoYmUpKTtmb3IodmFyIHZlPTA7dmU8ZmUubGVuZ3RoOysrdmUpe3ZhciB5ZT1mZVt2ZV07aWYoIl94bG5tLl9G''@;'; put 'put ''aWx0ZXJEYXRhYmFzZSI9PXllLk5hbWUmJnllLlNoZWV0PT1YKXt5ZS5SZWY9IiciK0wuU2hlZXROYW1lc1tYXSsiJyEiK25lO2JyZWFrfX1yZXR1cm4gdmU9PWZlLmxlbmd0aCYmZmUucHVzaCh7TmFtZToiX3hsbm0uX0ZpbHRlckRhdGFiYXNlIixTaGVldDpYLFJlZjoiJyIrTC5TaGVldE5h''@;'; put 'put ''bWVzW1hdKyInISIrbmV9KSxfcigiYXV0b0ZpbHRlciIsbnVsbCx7cmVmOm5lfSl9KHllWyIhYXV0b2ZpbHRlciJdLHllLEwseSkpLG51bGwhPXllWyIhbWVyZ2VzIl0mJnllWyIhbWVyZ2VzIl0ubGVuZ3RoPjAmJihuZVtuZS5sZW5ndGhdPWZ1bmN0aW9uIHJDKHkpe2lmKDA9PT15Lmxlbmd0''@;'; put 'put ''aClyZXR1cm4iIjtmb3IodmFyIFA9JzxtZXJnZUNlbGxzIGNvdW50PSInK3kubGVuZ3RoKyciPicsTD0wO0whPXkubGVuZ3RoOysrTClQKz0nPG1lcmdlQ2VsbCByZWY9IicrRGkoeVtMXSkrJyIvPic7cmV0dXJuIFArIjwvbWVyZ2VDZWxscz4ifSh5ZVsiIW1lcmdlcyJdKSkseWVbIiFjb25k''@;'; put 'put ''Zm10Il0mJihuZVtuZS5sZW5ndGhdPWZ1bmN0aW9uIHBWKHksUCl7cmV0dXJuIHkubWFwKGZ1bmN0aW9uKEwsWCl7cmV0dXJuIGZ1bmN0aW9uIGZWKHksUCxMKXt2YXIgWD15LnM/S3coTC5EWEYseS5zKTotMSxuZT0ic3RyaW5nIj09dHlwZW9mIHkucmVmP3kucmVmOkRpKHkucmVmKSxiZT1S''@;'; put 'put ''byhuZS5yZXBsYWNlKC9ccy4qJC8sIiIpKS5zO2JlLnI8MCYmKGJlLnI9MCksYmUuYzwwJiYoYmUuYz0wKTt2YXIgdmU9IiIseWU9e3ByaW9yaXR5OlArMX07c3dpdGNoKFg+LTEmJih5ZS5keGZJZD1YKSx5LnQpe2Nhc2UidW5pcXVlIjp5ZS50eXBlPSJ1bmlxdWVWYWx1ZXMiO2JyZWFrO2Nh''@;'; put 'put ''c2UiZHVwIjp5ZS50eXBlPSJkdXBsaWNhdGVWYWx1ZXMiO2JyZWFrO2Nhc2UiYmxhbmsiOnllLnR5cGU9KHkudj8iYyI6Im5vdEMiKSsib250YWluc0JsYW5rcyIsdmU9Ijxmb3JtdWxhPkxFTihUUklNKCIrQWkoYmUpKyIpKSIrKHkudj8iPSI6IiZndDsiKSsiMDwvZm9ybXVsYT4iO2JyZWFr''@;'; put 'put ''O2Nhc2UiZXJyb3IiOnllLnR5cGU9KHkudj8iYyI6Im5vdEMiKSsib250YWluc0Vycm9ycyI7YnJlYWs7Y2FzZSJmb3JtdWxhIjp5ZS50eXBlPSJleHByZXNzaW9uIix2ZT1fcigiZm9ybXVsYSIsYnIoeS5mKSx7fSk7YnJlYWs7Y2FzZSJkYXRlIjp5ZS50eXBlPSJ0aW1lUGVyaW9kIix5ZS50''@;'; put 'put ''aW1lUGVyaW9kPWhWW3kub3BdO2JyZWFrO2Nhc2UidGV4dCI6c3dpdGNoKHllLnR5cGU9eWUub3BlcmF0b3I9ZjZbeS5vcF0seWUudGV4dD15LnYseS5vcCl7Y2FzZSJJTiI6dmU9Jzxmb3JtdWxhPk5PVChJU0VSUk9SKFNFQVJDSCgiJyticih5LnYpKyciLCcrQWkoYmUpKyIpKSk8L2Zvcm11''@;'; put 'put ''bGE+IjticmVhaztjYXNlIk9UIjp2ZT0nPGZvcm11bGE+SVNFUlJPUihTRUFSQ0goIicrYnIoeS52KSsnIiwnK0FpKGJlKSsiKSk8L2Zvcm11bGE+IjticmVhaztjYXNlIlNUIjp2ZT0iPGZvcm11bGE+TEVGVCgiK0FpKGJlKSsnLExFTigiJyticih5LnYpKyciKSk9IicrYnIoeS52KSsnIjwv''@;'; put 'put ''Zm9ybXVsYT4nO2JyZWFrO2Nhc2UiTkQiOnZlPSI8Zm9ybXVsYT5SSUdIVCgiK0FpKGJlKSsnLExFTigiJyticih5LnYpKyciKSk9IicrYnIoeS52KSsnIjwvZm9ybXVsYT4nfWJyZWFrO2Nhc2UidmFsIjp5ZS50eXBlPSJjZWxsSXMiLHllLm9wZXJhdG9yPW92W3kub3BdLHZlPW51bGwhPXku''@;'; put 'put ''bWluP19yKCJmb3JtdWxhIixicihTdHJpbmcoeS5taW4pKSx7fSkrX3IoImZvcm11bGEiLGJyKFN0cmluZyh5Lm1heCkpLHt9KTpfcigiZm9ybXVsYSIsYnIobnVsbCE9eS52P1N0cmluZygic3RyaW5nIj09dHlwZW9mIHkudj8nIicreS52LnJlcGxhY2UoLyIvZywnIiInKSsnIic6eS52KTp5''@;'; put 'put ''LmYpLHt9KTticmVhaztjYXNlImF2ZyI6c3dpdGNoKHllLnR5cGU9ImFib3ZlQXZlcmFnZSIseWUuYWJvdmVBdmVyYWdlPSJMIj09eS5vcC5jaGFyQXQoMCk/IjAiOiIxIix5Lm9wLmNoYXJBdCgxKSl7Y2FzZSJUIjp5ZS5lcXVhbEF2ZXJhZ2U9IjAiO2JyZWFrO2Nhc2UiRSI6eWUuZXF1YWxB''@;'; put 'put ''dmVyYWdlPSIxIjticmVhaztkZWZhdWx0OnllLnN0ZERldj15Lm9wLmNoYXJBdCgxKX1icmVhaztjYXNlInJhbmsiOnllLnR5cGU9InRvcDEwIix5ZS5ib3R0b209IkIiPT15Lm9wLmNoYXJBdCgwKT8iMSI6IjAiLHllLnBlcmNlbnQ9IlAiPT15Lm9wLmNoYXJBdCgxKT8iMSI6IjAiLHllLnJh''@;'; put 'put ''bms9eS52O2JyZWFrO2Nhc2UiaWNvbiI6eWUudHlwZT0iaWNvblNldCI7dmFyIFZlPXtpY29uU2V0OnkudixwZXJjZW50OnkucGN0PyJ0cnVlIjoiZmFsc2UifTt5LnJldiYmKFZlLnJldmVyc2U9InRydWUiKSx5LmhpZGRlbiYmKFZlLnNob3dWYWx1ZT0iZmFsc2UiKSx2ZT1fcigiaWNvblNl''@;'; put 'put ''dCIseS50aHJlc2gubWFwKEtwKS5qb2luKCIiKSxWZSk7YnJlYWs7Y2FzZSJzY2FsZSI6eWUudHlwZT0iY29sb3JTY2FsZSIsdmUrPUtwKHkuY21pbikseS5jbWlkJiYodmUrPUtwKHkuY21pZCkpLHZlKz1LcCh5LmNtYXgpLHZlKz1UMSh5LmNtaW4uY29sb3IpLHkuY21pZCYmKHZlKz1UMSh5''@;'; put 'put ''LmNtaWQuY29sb3IpKSx2ZT1fcigiY29sb3JTY2FsZSIsdmUrPVQxKHkuY21heC5jb2xvcikse30pO2JyZWFrO2Nhc2UiYmFyIjp5ZS50eXBlPSJkYXRhQmFyIix2ZSs9S3AoeS5jbWluKSx2ZSs9S3AoeS5jbWF4KSx2ZT1fcigiZGF0YUJhciIsdmUrPVQxKHkuY29sb3IpLHt9KTticmVhaztk''@;'; put 'put ''ZWZhdWx0OnRocm93IGNvbnNvbGUubG9nKHkpLCJDRiBtaXNzaW5nIHR5cGUgIit5LnR9cmV0dXJuJzxjb25kaXRpb25hbEZvcm1hdHRpbmcgc3FyZWY9IicrbmUrJyI+JytfcigiY2ZSdWxlIiwiIj09dmU/bnVsbDp2ZSx5ZSkrIjwvY29uZGl0aW9uYWxGb3JtYXR0aW5nPiJ9KEwsWCxQKX0p''@;'; put 'put ''LmpvaW4oIiIpfSh5ZVsiIWNvbmRmbXQiXSxQKSkseWVbIiF2YWxpZGF0aW9ucyJdJiYobmVbbmUubGVuZ3RoXT1mdW5jdGlvbiB1QSh5KXtpZigheXx8MD09eS5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBQPVtdLEw9MCxYPTA7WDx5Lmxlbmd0aDsrK1gpe3ZhciBuZT15W1hdLGZlPWhkW25l''@;'; put 'put ''LnRdO2lmKG5lLnJlZiYmKCJzdHJpbmciIT10eXBlb2YgbmUucmVmfHwtMSE9bmUucmVmLmluZGV4T2YoIiAiKXx8KG5lLnJlZj1SbyhuZS5yZWYpLG5lLnJlZi5zJiYhKG5lLnJlZi5zLmM8MCkpKSl7KytMO3ZhciBiZT17dHlwZTpmZSxhbGxvd0JsYW5rOisoMCE9bmUuYmxhbmspLHNob3dJ''@;'; put 'put ''bnB1dE1lc3NhZ2U6KygwIT1uZS5pbnB1dCksc2hvd0Vycm9yTWVzc2FnZTorKDAhPW5lLmVycm9yKSxzcXJlZjoic3RyaW5nIj09dHlwZW9mIG5lLnJlZj9uZS5yZWY6RGkobmUucmVmKX07aWYobmUuaW5wdXQmJihuZS5pbnB1dC50aXRsZSYmKGJlLnByb21wdFRpdGxlPUxpKG5lLmlucHV0''@;'; put 'put ''LnRpdGxlKSksbmUuaW5wdXQubWVzc2FnZSYmKGJlLnByb21wdD1MaShuZS5pbnB1dC5tZXNzYWdlKSkpLG5lLmVycm9yJiYobmUuZXJyb3IudGl0bGUmJihiZS5lcnJvclRpdGxlPUxpKG5lLmVycm9yLnRpdGxlKSksbmUuZXJyb3IubWVzc2FnZSYmKGJlLmVycm9yPUxpKG5lLmVycm9yLm1l''@;'; put 'put ''c3NhZ2UpKSxuZS5lcnJvci5zdHlsZSYmKGJlLmVycm9yU3R5bGU9bmUuZXJyb3Iuc3R5bGUpKSwhZmUpdGhyb3cgbmV3IEVycm9yKCJCYWQgdmFsaWRhdGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIituZS50KTt2YXIgdmU9IiI7c3dpdGNoKG5lLnQpe2Nhc2UiQW55IjpicmVhaztjYXNlIkxp''@;'; put 'put ''c3QiOmNhc2UiQ3VzdG9tIjppZihuZS5sKXtpZihuZS5sLmpvaW4oIiwiKS5sZW5ndGg+MjUwKXRocm93IG5ldyBFcnJvcigiRFYgbGVuZ3RoID4gMjUwIHRyaWdnZXJzIGNvcnJ1cHRpb24gZXJyb3JzIGluIEV4Y2VsLiAgVXNlIGEgbG9va3VwIHRhYmxlIik7dmU9Jzxmb3JtdWxhMT4iJyti''@;'; put 'put ''cihuZS5sLmpvaW4oIiwiKSkrJyI8L2Zvcm11bGExPid9ZWxzZSB2ZT0iPGZvcm11bGExPiIrYnIobmUuZikrIjwvZm9ybXVsYTE+IjticmVhaztjYXNlIkRhdGUiOmNhc2UiVGltZSI6Y2FzZSJEZWNpbWFsIjpjYXNlIkxlbmd0aCI6Y2FzZSJXaG9sZSI6aWYoIW92W25lLm9wXSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkJhZCBEYXRhIFZhbGlkYXRpb24gdHlwZSAiK25lLm9wKyIgZm9yICIrbmUudCk7aWYoYmUub3BlcmF0b3I9b3ZbbmUub3BdLG51bGwhPW5lLnYpdmU9Ijxmb3JtdWxhMT4iK2JyKFN0cmluZyhuZS52IGluc3RhbmNlb2YgRGF0ZT9aZShuZS52KTpuZS52KSkrIjwvZm9ybXVs''@;'; put 'put ''YTE+IjtlbHNle2lmKG51bGw9PW5lLm1pbnx8bnVsbD09bmUubWF4KXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbjogYHZgIG9yIGBtaW5gK2BtYXhgIHJlcXVpcmVkIGZvciBUeXBlICIrbmUudCk7dmU9Ijxmb3JtdWxhMT4iK2JyKFN0cmluZyhuZS5taW4gaW5zdGFuY2Vv''@;'; put 'put ''ZiBEYXRlP1plKG5lLm1pbik6bmUubWluKSkrIjwvZm9ybXVsYTE+PGZvcm11bGEyPiIrYnIoU3RyaW5nKG5lLm1heCBpbnN0YW5jZW9mIERhdGU/WmUobmUubWF4KTpuZS5tYXgpKSsiPC9mb3JtdWxhMj4ifX1QLnB1c2goX3IoImRhdGFWYWxpZGF0aW9uIix2ZXx8bnVsbCxiZSkpfX1yZXR1''@;'; put 'put ''cm4gTD4wPyc8ZGF0YVZhbGlkYXRpb25zIGNvdW50PSInK0wrJyI+JytQLmpvaW4oIiIpKyI8L2RhdGFWYWxpZGF0aW9ucz4iOiIifSh5ZVsiIXZhbGlkYXRpb25zIl0pKTt2YXIgUHQsdnQ9LTEsa3Q9LTE7aWYoeWVbIiFsaW5rcyJdLmxlbmd0aD4wJiYobmVbbmUubGVuZ3RoXT0iPGh5cGVy''@;'; put 'put ''bGlua3M+Iix5ZVsiIWxpbmtzIl0uZm9yRWFjaChmdW5jdGlvbihjbil7Y25bMV0uVGFyZ2V0JiYoUHQ9e3JlZjpjblswXX0sIiMiIT1jblsxXS5UYXJnZXQuY2hhckF0KDApJiYoa3Q9Z3IoWCwtMSxicihjblsxXS5UYXJnZXQpLnJlcGxhY2UoLyMuKiQvLCIiKSxTby5ITElOSyksUHRbInI6''@;'; put 'put ''aWQiXT0icklkIitrdCksKHZ0PWNuWzFdLlRhcmdldC5pbmRleE9mKCIjIikpPi0xJiYoUHQubG9jYXRpb249YnIoY25bMV0uVGFyZ2V0LnNsaWNlKHZ0KzEpKSksY25bMV0uVG9vbHRpcCYmKFB0LnRvb2x0aXA9YnIoY25bMV0uVG9vbHRpcCkpLG5lW25lLmxlbmd0aF09X3IoImh5cGVybGlu''@;'; put 'put ''ayIsbnVsbCxQdCkpfSksbmVbbmUubGVuZ3RoXT0iPC9oeXBlcmxpbmtzPiIpLGRlbGV0ZSB5ZVsiIWxpbmtzIl0scnQpe3ZhciBEdD1mdW5jdGlvbiB0Vih5KXtpZih5LnByb3BzKXt2YXIgUD17fSxMPXkucHJvcHM7cmV0dXJuIEwuZ3JpZGxpbmVzJiYoUC5ncmlkTGluZXM9UC5ncmlkTGlu''@;'; put 'put ''ZXNTZXQ9MSksTC5oZWFkaW5ncyYmKFAuaGVhZGluZ3M9MSksTC5jZW50ZXJYJiYoUC5ob3Jpem9udGFsQ2VudGVyZWQ9MSksTC5jZW50ZXJZJiYoUC52ZXJ0aWNhbENlbnRlcmVkPTEpLF9yKCJwcmludE9wdGlvbnMiLG51bGwsUCl9cmV0dXJuIiJ9KHJ0KTtEdC5sZW5ndGgmJihuZVtuZS5s''@;'; put 'put ''ZW5ndGhdPUR0KX1pZigobnVsbCE9eWVbIiFtYXJnaW5zIl18fHJ0JiZydC5tYXJnaW5zKSYmKG5lW25lLmxlbmd0aF09ZnVuY3Rpb24gc1YoeSl7cmV0dXJuIG4zKHkpLF9yKCJwYWdlTWFyZ2lucyIsbnVsbCx5KX0oeWVbIiFtYXJnaW5zIl18fHJ0Lm1hcmdpbnMpKSxydCl7dmFyIFp0PWZ1''@;'; put 'put ''bmN0aW9uIG9BKHkpe2lmKHkucHJvcHMpe3ZhciBQPXt9LEw9eS5wcm9wcztpZihMLm9yaWVudGF0aW9uJiYoUC5vcmllbnRhdGlvbj1MLm9yaWVudGF0aW9uKSxMLnNjYWxlJiYoUC5zY2FsZT1MLnNjYWxlKSxMLmZpdCYmKG51bGwhPUwuZml0LmhlaWdodCYmKFAuZml0VG9IZWlnaHQ9TC5m''@;'; put 'put ''aXQuaGVpZ2h0KSxudWxsIT1MLmZpdC53aWR0aCYmKFAuZml0VG9XaWR0aD1MLmZpdC53aWR0aCkpLEwuZHBpJiYoUC5ob3Jpem9udGFsRHBpPVAudmVydGljYWxEcGk9TC5kcGkpLG51bGwhPUwuZmlyc3QmJihQLmZpcnN0UGFnZU51bWJlcj1MLmZpcnN0LFAudXNlRmlyc3RQYWdlTnVtYmVy''@;'; put 'put ''PTEpLEwuYncmJihQLmJsYWNrQW5kV2hpdGU9MSksTC5kcmFmdCYmKFAuZHJhZnQ9MSksTC5jb21tZW50cyYmKFAuY2VsbENvbW1lbnRzPWVBW0wuY29tbWVudHNdfHwibm9uZSIpLEwuZXJyb3JzJiYoUC5lcnJvcnM9bkFbTC5lcnJvcnNdfHwibm9uZSIpLEwucGFwZXIpc3dpdGNoKHR5cGVv''@;'; put 'put ''ZiBMLnBhcGVyKXtjYXNlIm51bWJlciI6UC5wYXBlclNpemU9TC5wYXBlcjticmVhaztjYXNlInN0cmluZyI6ckhbTC5wYXBlcl0/UC5wYXBlclNpemU9ckhbTC5wYXBlcl06K0wucGFwZXImJihQLnBhcGVyU2l6ZT0rTC5wYXBlcik7YnJlYWs7Y2FzZSJvYmplY3QiOmlmKCFMLnBhcGVyLmhl''@;'; put 'put ''aWdodHx8IUwucGFwZXIud2lkdGgpdGhyb3ciQ3VzdG9tIFBhcGVyIFNpemUgbXVzdCBpbmNsdWRlIHdpZHRoIGFuZCBoZWlnaHQhIjtQLnBhcGVySGVpZ2h0PUwucGFwZXIuaGVpZ2h0LFAucGFwZXJXaWR0aD1MLnBhcGVyLndpZHRofXJldHVyblsxLCEwLCJ0cnVlIiwib3ZlciJdLmluZGV4''@;'; put 'put ''T2YoTC5vcmRlcik+LTEmJihQLnBhZ2VPcmRlcj0ib3ZlclRoZW5Eb3duIiksX3IoInBhZ2VTZXR1cCIsbnVsbCxQKX1yZXR1cm4iIn0ocnQpO1p0Lmxlbmd0aCYmKG5lW25lLmxlbmd0aF09WnQpLFp0PWZ1bmN0aW9uIGRWKHkpe3ZhciBQPVtdLEw9IiIsWD0iIixuZT0iIixmZT0iIixiZT0i''@;'; put 'put ''Iix2ZT0iIix5ZT0iIixWZT15MCh5LmhlYWRlcik7VmUubGVuZ3RoJiYoWD1WZVswXSx2ZT1WZVsxXSxmZT1WZVsyXSk7dmFyIHplPXkwKHkuZm9vdGVyKTtyZXR1cm4gemUubGVuZ3RoJiYobmU9emVbMF0seWU9emVbMV0sYmU9emVbMl0pLFgmJlAucHVzaCgiPG9kZEhlYWRlcj4iK2JyKFgp''@;'; put 'put ''KyI8L29kZEhlYWRlcj4iKSxuZSYmUC5wdXNoKCI8b2RkRm9vdGVyPiIrYnIobmUpKyI8L29kZEZvb3Rlcj4iKSwoYmUhPW5lfHxmZSE9WCkmJihMKz0nIGRpZmZlcmVudE9kZEV2ZW49IjEiJyxQLnB1c2goIjxldmVuSGVhZGVyPiIrYnIoZmUpKyI8L2V2ZW5IZWFkZXI+IiksUC5wdXNoKCI8''@;'; put 'put ''ZXZlbkZvb3Rlcj4iK2JyKGJlKSsiPC9ldmVuRm9vdGVyPiIpKSwoeWUhPW5lfHx2ZSE9WCkmJihMKz0nIGRpZmZlcmVudEZpcnN0PSIxIicsUC5wdXNoKCI8Zmlyc3RIZWFkZXI+Iiticih2ZSkrIjwvZmlyc3RIZWFkZXI+IiksUC5wdXNoKCI8Zmlyc3RGb290ZXI+Iiticih5ZSkrIjwvZmly''@;'; put 'put ''c3RGb290ZXI+IikpLFAubGVuZ3RoPyI8aGVhZGVyRm9vdGVyIitMKyI+IitQLmpvaW4oIiIpKyI8L2hlYWRlckZvb3Rlcj4iOiIifShydCksWnQubGVuZ3RoJiYobmVbbmUubGVuZ3RoXT1adCl9aWYoKG51bGwhPXllWyIhcm93QnJlYWtzIl18fHJ0JiZydC5yb3dCcmVha3MpJiYobmVbbmUu''@;'; put 'put ''bGVuZ3RoXT1mdW5jdGlvbiByVih5KXtpZigwPT15Lmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIFA9Wyc8cm93QnJlYWtzIGNvdW50PSInK3kubGVuZ3RoKyciIG1hbnVhbEJyZWFrQ291bnQ9IicreS5sZW5ndGgrJyI+J10sTD0wO0w8eS5sZW5ndGg7KytMKVAucHVzaCgnPGJyayBpZD0iJyt5''@;'; put 'put ''W0xdLlIrJyIgbWFuPSIxIi8+Jyk7cmV0dXJuIFAuam9pbigiIikrIjwvcm93QnJlYWtzPiJ9KHllWyIhcm93QnJlYWtzIl18fHJ0LnJvd0JyZWFrcykpLChudWxsIT15ZVsiIWNvbEJyZWFrcyJdfHxydCYmcnQuY29sQnJlYWtzKSYmKG5lW25lLmxlbmd0aF09ZnVuY3Rpb24gb0MoeSl7aWYo''@;'; put 'put ''MD09eS5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBQPVsnPGNvbEJyZWFrcyBjb3VudD0iJyt5Lmxlbmd0aCsnIiBtYW51YWxCcmVha0NvdW50PSInK3kubGVuZ3RoKyciPiddLEw9MDtMPHkubGVuZ3RoOysrTClQLnB1c2goJzxicmsgaWQ9IicreVtMXS5DKyciIG1hbj0iMSIvPicpO3JldHVy''@;'; put 'put ''biBQLmpvaW4oIiIpKyI8L2NvbEJyZWFrcz4ifSh5ZVsiIWNvbEJyZWFrcyJdfHxydC5jb2xCcmVha3MpKSwoIVB8fFAuaWdub3JlRUN8fG51bGw9PVAuaWdub3JlRUMpJiYobmVbbmUubGVuZ3RoXT1jbygiaWdub3JlZEVycm9ycyIsX3IoImlnbm9yZWRFcnJvciIsbnVsbCx7bnVtYmVyU3Rv''@;'; put 'put ''cmVkQXNUZXh0OjEsc3FyZWY6VmV9KSkpLHllWyIhY2hhcnRzIl0mJldlLnB1c2guYXBwbHkoV2UseWVbIiFjaGFydHMiXSkseWVbIiFpbWFnZXMiXSYmV2UucHVzaC5hcHBseShXZSx5ZVsiIWltYWdlcyJdKSx5ZVsiIXNoYXBlcyJdJiZXZS5wdXNoLmFwcGx5KFdlLHllWyIhc2hhcGVzIl0p''@;'; put 'put ''LFdlLmxlbmd0aD4wJiYoa3Q9Z3IoWCwtMSwiLi4vZHJhd2luZ3MvZHJhd2luZyIrKHkrMSkrIi54bWwiLFNvLkRSQVcpLG5lW25lLmxlbmd0aF09X3IoImRyYXdpbmciLG51bGwseyJyOmlkIjoicklkIitrdH0pLHllWyIhZHJhd2luZyJdPVdlKSwoeWVbIiFjb21tZW50cyJdLmxlbmd0aD4w''@;'; put 'put ''fHwoeWVbIiFjb250cm9scyJdfHxbXSkubGVuZ3RoPjApJiYoa3Q9Z3IoWCwtMSwiLi4vZHJhd2luZ3Mvdm1sRHJhd2luZyIrKHkrMSkrIi52bWwiLFNvLlZNTCksbmVbbmUubGVuZ3RoXT1fcigibGVnYWN5RHJhd2luZyIsbnVsbCx7InI6aWQiOiJySWQiK2t0fSkseWVbIiFsZWdhY3kiXT1r''@;'; put 'put ''dCkseWVbIiFwcmludCJdJiZ5ZVsiIXByaW50Il0uaW1hZ2VzKXt2YXIgZ249eWVbIiFwcmludCJdLmltYWdlcywkbj0wO1siaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbihjbil7Z25bY25dJiZbIm9kZCIsImV2ZW4iLCJmaXJzdCJdLmZvckVhY2goZnVuY3Rpb24oWG4pe2du''@;'; put 'put ''W2NuXVtYbl0mJlsibGVmdCIsInJpZ2h0IiwiY2VudGVyIl0uZm9yRWFjaChmdW5jdGlvbihCbil7aWYoQXJyYXkuaXNBcnJheShnbltjbl1bWG5dW0JuXSkpZm9yKHZhciBEbj0wO0RuPGduW2NuXVtYbl1bQm5dLmxlbmd0aDsrK0RuKWduW2NuXVtYbl1bQm5dW0RuXSYmKGduW2NuXVtYbl1b''@;'; put 'put ''Qm5dW0RuXS5fY250PSRuKyspfSl9KX0pLCRuPjAmJihrdD1ncihYLC0xLCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nIisoeSsxKSsiSEYudm1sIixTby5WTUwpLG5lW25lLmxlbmd0aF09X3IoImxlZ2FjeURyYXdpbmdIRiIsbnVsbCx7InI6aWQiOiJySWQiK2t0fSkseWVbIiFsZWdhY3lIRiJd''@;'; put 'put ''PWt0KX1yZXR1cm4oeWVbIiF0YWJsZXMiXXx8W10pLmxlbmd0aD4wJiYobmVbbmUubGVuZ3RoXT0nPHRhYmxlUGFydHMgY291bnQ9IicreWVbIiF0YWJsZXMiXS5sZW5ndGgrJyI+Jyx5ZVsiIXRhYmxlcyJdLmZvckVhY2goZnVuY3Rpb24oY24sWG4pe2t0PWdyKFgsLTEsIi4uL3RhYmxlcy90''@;'; put 'put ''YWJsZSIrKHkrMSkrIl8iK1huKyIueG1sIixTby5UQUJMRSksbmVbbmUubGVuZ3RoXT0nPHRhYmxlUGFydCByOmlkPSJySWQnK2t0KyciLz4nfSksbmVbbmUubGVuZ3RoXT0iPC90YWJsZVBhcnRzPiIpLG5lLmxlbmd0aD4xJiYobmVbbmUubGVuZ3RoXT0iPC93b3Jrc2hlZXQ+IixuZVsxXT1u''@;'; put 'put ''ZVsxXS5yZXBsYWNlKCIvPiIsIj4iKSksbmUuam9pbigiIil9ZnVuY3Rpb24gdlYoeSxQLEwsWCl7dmFyIG5lPWZ1bmN0aW9uIG1WKHksUCxMKXt2YXIgWD14cigxNDUpLG5lPShMWyIhcm93cyJdfHxbXSlbeV18fHt9O1gud3JpdGVfc2hpZnQoNCx5KSxYLndyaXRlX3NoaWZ0KDQsMCk7dmFy''@;'; put 'put ''IGZlPTMyMDtuZS5ocHg/ZmU9MjAqJGYobmUuaHB4KTpuZS5ocHQmJihmZT0yMCpuZS5ocHQpLFgud3JpdGVfc2hpZnQoMixmZSksWC53cml0ZV9zaGlmdCgxLDApO3ZhciBiZT0wO25lLmxldmVsJiYoYmV8PW5lLmxldmVsKSxuZS5oaWRkZW4mJihiZXw9MTYpLChuZS5ocHh8fG5lLmhwdCkm''@;'; put 'put ''JihiZXw9MzIpLFgud3JpdGVfc2hpZnQoMSxiZSksWC53cml0ZV9zaGlmdCgxLDApO3ZhciB2ZT0wLHllPVgubDtYLmwrPTQ7Zm9yKHZhciBWZT17cjp5LGM6MH0semU9MDt6ZTwxNjsrK3plKWlmKCEoUC5zLmM+emUrMTw8MTB8fFAuZS5jPHplPDwxMCkpe2Zvcih2YXIgV2U9LTEscnQ9LTEs''@;'; put 'put ''bHQ9emU8PDEwO2x0PHplKzE8PDEwOysrbHQpVmUuYz1sdCwoQXJyYXkuaXNBcnJheShMKT8oTFtWZS5yXXx8W10pW1ZlLmNdOkxbQWkoVmUpXSkmJihXZTwwJiYoV2U9bHQpLHJ0PWx0KTtXZTwwfHwoKyt2ZSxYLndyaXRlX3NoaWZ0KDQsV2UpLFgud3JpdGVfc2hpZnQoNCxydCkpfXZhciBh''@;'; put 'put ''dD1YLmw7cmV0dXJuIFgubD15ZSxYLndyaXRlX3NoaWZ0KDQsdmUpLFgubD1hdCxYLmxlbmd0aD5YLmw/WC5zbGljZSgwLFgubCk6WH0oWCxMLFApOyhuZS5sZW5ndGg+MTd8fChQWyIhcm93cyJdfHxbXSlbWF0pJiZoaSh5LCJCcnRSb3dIZHIiLG5lKX12YXIgX1Y9QWMsYlY9cDI7ZnVuY3Rp''@;'; put 'put ''b24gQVYoeSl7cmV0dXJuW1hkKHkpLHphKHkpLCJuIl19dmFyIF9BPUFjLEM2PXAyLENBPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl0sU0E9WyJBbnkiLCJXaG9sZSIsIkRlY2ltYWwiLCJMaXN0IiwiRGF0ZSIsIlRpbWUiLCJMZW5ndGgiLCJDdXN0''@;'; put 'put ''b20iXSxfQz1bIklOIiwiT1QiLCJFUSIsIk5FIiwiR1QiLCJMVCIsIkdFIiwiTEUiXTtmdW5jdGlvbiBNQSh5KXt2YXIgUD14cig0KSxMPVtQXSxYPVNBLmluZGV4T2YoeS50KTtpZihYPDApdGhyb3cgbmV3IEVycm9yKCJCYWQgdmFsaWRhdGlvbjogdW5yZWNvZ25pemVkIHR5cGUgIit5LnQp''@;'; put 'put ''O3ZhciBmZT1fQy5pbmRleE9mKHkub3ApO3N3aXRjaChYKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNzpmZT0wO2JyZWFrO2RlZmF1bHQ6aWYoLTE9PWZlKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGEgVmFsaWRhdGlvbiB0eXBlICIreS5vcCsiIGZvciAiK3kudCl9UC53cml0ZV9zaGlmdCgxLDB8''@;'; put 'put ''WCksUC53cml0ZV9zaGlmdCgxLDEpLFAud3JpdGVfc2hpZnQoMSwxMnxmZTw8NCksUC53cml0ZV9zaGlmdCgxLDApLEwucHVzaChmdW5jdGlvbiBOZih5KXt2YXIgUD15LnNwbGl0KC9ccyosXHMqLyksTD14cig0KTtMLndyaXRlX3NoaWZ0KDQsUC5sZW5ndGgpO3ZhciBYPVtMXTtyZXR1cm4g''@;'; put 'put ''UC5mb3JFYWNoKGZ1bmN0aW9uKG5lKXtYLnB1c2gocDIoUm8obmUpKSl9KSxrKFgpfSgic3RyaW5nIj09dHlwZW9mIHkucmVmP3kucmVmOkRpKHkucmVmKSkpO3ZhciBiZT14cigxNik7YmUud3JpdGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxiZS53cml0ZV9zaGlmdCg0LDQyOTQ5NjcyOTUpLGJl''@;'; put 'put ''LndyaXRlX3NoaWZ0KDQsNDI5NDk2NzI5NSksYmUud3JpdGVfc2hpZnQoNCw0Mjk0OTY3Mjk1KSxMLnB1c2goYmUpO3ZhciB2ZT14cig4KTt2ZS53cml0ZV9zaGlmdCg0LDApLHZlLndyaXRlX3NoaWZ0KDQsMCk7dmFyIHllPTE7c3dpdGNoKHkudCl7Y2FzZSJBbnkiOkwucHVzaCh2ZSksTC5w''@;'; put 'put ''dXNoKHZlKTticmVhaztjYXNlIkRlY2ltYWwiOmNhc2UiTGVuZ3RoIjpjYXNlIldob2xlIjppZihudWxsIT15LnZ8fG51bGwhPXkuZilMLnB1c2goIm51bWJlciI9PXR5cGVvZiB5LnY/VXcoeS52KTokcChudWxsPT15LnY/eS5mOnkudikpO2Vsc2V7aWYobnVsbD09eS5taW58fG51bGw9PXku''@;'; put 'put ''bWF4KXRocm93IlVuc3VwcG9ydGVkIERhdGEgVmFsaWRhdGlvbjogYHZgIG9yIGBtaW5gK2BtYXhgIHJlcXVpcmVkIGZvciBUeXBlICIreS50O0wucHVzaCgibnVtYmVyIj09dHlwZW9mIHkubWluP1V3KHkubWluKTokcCh5Lm1pbikpLEwucHVzaCgibnVtYmVyIj09dHlwZW9mIHkubWF4P1V3''@;'; put 'put ''KHkubWF4KTokcCh5Lm1heCkpLHllPTJ9YnJlYWs7Y2FzZSJMaXN0IjppZihudWxsIT15Lmwpe0wucHVzaChadyh5Lmwuam9pbigiLCIpKSk7YnJlYWt9Y2FzZSJDdXN0b20iOmlmKCJudWxsIiE9eS5mKXtMLnB1c2goJHAoeS5mKSk7YnJlYWt9dGhyb3ciVW5zdXBwb3J0ZWQgRGF0YSBWYWxp''@;'; put 'put ''ZGF0aW9uOiBgZmAiKygiTGlzdCI9PXkudD8iIG9yIGBsYCI6IiIpKyIgcmVxdWlyZWQgZm9yIFR5cGUgIit5LnQ7ZGVmYXVsdDp0aHJvdyJYTFNCIGRvZXMgbm90IHN1cHBvcnQgRGF0YSBWYWxpZGF0aW9uIHR5cGUgIit5LnR9cmV0dXJuIDE9PXllJiZMLnB1c2godmUpLGsoTCl9ZnVuY3Rp''@;'; put 'put ''b24gR1YoeSxQLEwsWCxuZSxmZSxiZSl7aWYodm9pZCAwPT09UC52JiZudWxsPT1QLnN8fCJ6Ij09PVAudCYmIW5lLnNoZWV0U3R1YnMpcmV0dXJuITE7dmFyIHZlPSIiO3N3aXRjaChQLnQpe2Nhc2UiYiI6dmU9UC52PyIxIjoiMCI7YnJlYWs7Y2FzZSJkIjooUD1LdChQKSkuej1QLnp8fHcu''@;'; put 'put ''X3RhYmxlWzE0XSxQLnY9WmUoRnQoUC52KSksUC50PSJuIjticmVhaztjYXNlIm4iOmNhc2UiZSI6dmU9IiIrUC52O2JyZWFrO2RlZmF1bHQ6dmU9UC52fXZhciB5ZT17cjpMLGM6WH07c3dpdGNoKHllLnM9bXUobmUuY2VsbFhmcyxuZS5jZWxsU3R5bGVYZnMsUCxuZSksUC5sJiZmZVsiIWxp''@;'; put 'put ''bmtzIl0ucHVzaChbQWkoeWUpLFAubF0pLFAuYyYmZmVbIiFjb21tZW50cyJdLnB1c2goW0FpKHllKSxQLmNdKSxQLnQpe2Nhc2UicyI6Y2FzZSJzdHIiOmlmKG5lLmJvb2tTU1Qpe2lmKHZlPUd3KG5lLlN0cmluZ3MsUC52LFAuUj9QLnI9cGEoUC5SKTpudWxsLG5lLnJldlN0cmluZ3MpLFAu''@;'; put 'put ''Uilmb3IodmFyIFZlPTA7VmU8UC5SLmxlbmd0aDsrK1ZlKVAuUltWZV0ucyYmbXUobmUuY2VsbFhmcyxuZS5jZWxsU3R5bGVYZnMse3Q6Im4iLHY6MCxzOlAuUltWZV0uc30sbmUpO3llLnQ9InMiLHllLnY9dmUsYmU/aGkoeSwiQnJ0U2hvcnRJc3N0IixmdW5jdGlvbiBsdih5LFAsTCl7cmV0''@;'; put 'put ''dXJuIG51bGw9PUwmJihMPXhyKDgpKSxacihQLEwpLEwud3JpdGVfc2hpZnQoNCxQLnYpLEx9KDAseWUpKTpoaSh5LCJCcnRDZWxsSXNzdCIsZnVuY3Rpb24gRVYoeSxQLEwpe3JldHVybiBudWxsPT1MJiYoTD14cigxMikpLGNyKFAsTCksTC53cml0ZV9zaGlmdCg0LFAudiksTH0oMCx5ZSkp''@;'; put 'put ''fWVsc2UgeWUudD0ic3RyIixiZT9oaSh5LCJCcnRTaG9ydFN0IixmdW5jdGlvbiBQVih5LFAsTCl7cmV0dXJuIG51bGw9PUwmJihMPXhyKDgrNCp5LnYubGVuZ3RoKSksWnIoUCxMKSxLbCh5LnYsTCksTC5sZW5ndGg+TC5sP0wuc2xpY2UoMCxMLmwpOkx9KFAseWUpKTpoaSh5LCJCcnRDZWxs''@;'; put 'put ''U3QiLGZ1bmN0aW9uIExWKHksUCxMKXtyZXR1cm4gbnVsbD09TCYmKEw9eHIoMTIrNCp5LnYubGVuZ3RoKSksY3IoUCxMKSxLbCh5LnYsTCksTC5sZW5ndGg+TC5sP0wuc2xpY2UoMCxMLmwpOkx9KFAseWUpKTtyZXR1cm4hMDtjYXNlIm4iOnJldHVybiBQLnY9PSgwfFAudikmJlAudj4tMWUz''@;'; put 'put ''JiZQLnY8MWUzP2JlP2hpKHksIkJydFNob3J0UmsiLGZ1bmN0aW9uIFJWKHksUCxMKXtyZXR1cm4gbnVsbD09TCYmKEw9eHIoOCkpLFpyKFAsTCksbzkoeS52LEwpLEx9KFAseWUpKTpoaSh5LCJCcnRDZWxsUmsiLGZ1bmN0aW9uIElWKHksUCxMKXtyZXR1cm4gbnVsbD09TCYmKEw9eHIoMTIp''@;'; put 'put ''KSxjcihQLEwpLG85KHkudixMKSxMfShQLHllKSk6YmU/aGkoeSwiQnJ0U2hvcnRSZWFsIixmdW5jdGlvbiBIUSh5LFAsTCl7cmV0dXJuIG51bGw9PUwmJihMPXhyKDEyKSksWnIoUCxMKSxqYyh5LnYsTCksTH0oUCx5ZSkpOmhpKHksIkJydENlbGxSZWFsIixmdW5jdGlvbiBrVih5LFAsTCl7''@;'; put 'put ''cmV0dXJuIG51bGw9PUwmJihMPXhyKDE2KSksY3IoUCxMKSxqYyh5LnYsTCksTH0oUCx5ZSkpLCEwO2Nhc2UiYiI6cmV0dXJuIHllLnQ9ImIiLGJlP2hpKHksIkJydFNob3J0Qm9vbCIsZnVuY3Rpb24gZkMoeSxQLEwpe3JldHVybiBudWxsPT1MJiYoTD14cig1KSksWnIoUCxMKSxMLndyaXRl''@;'; put 'put ''X3NoaWZ0KDEseS52PzE6MCksTH0oUCx5ZSkpOmhpKHksIkJydENlbGxCb29sIixmdW5jdGlvbiBNVih5LFAsTCl7cmV0dXJuIG51bGw9PUwmJihMPXhyKDkpKSxjcihQLEwpLEwud3JpdGVfc2hpZnQoMSx5LnY/MTowKSxMfShQLHllKSksITA7Y2FzZSJlIjpyZXR1cm4geWUudD0iZSIsYmU/''@;'; put 'put ''aGkoeSwiQnJ0U2hvcnRFcnJvciIsZnVuY3Rpb24gVWEoeSxQLEwpe3JldHVybiBudWxsPT1MJiYoTD14cig4KSksWnIoUCxMKSxMLndyaXRlX3NoaWZ0KDEseS52KSxMLndyaXRlX3NoaWZ0KDIsMCksTC53cml0ZV9zaGlmdCgxLDApLEx9KFAseWUpKTpoaSh5LCJCcnRDZWxsRXJyb3IiLGZ1''@;'; put 'put ''bmN0aW9uIGI2KHksUCxMKXtyZXR1cm4gbnVsbD09TCYmKEw9eHIoOSkpLGNyKFAsTCksTC53cml0ZV9zaGlmdCgxLHkudiksTH0oUCx5ZSkpLCEwfXJldHVybiBiZT9oaSh5LCJCcnRTaG9ydEJsYW5rIixmdW5jdGlvbiBnQSh5LFAsTCl7cmV0dXJuIG51bGw9PUwmJihMPXhyKDQpKSxacihQ''@;'; put 'put ''LEwpfSgwLHllKSk6aGkoeSwiQnJ0Q2VsbEJsYW5rIixmdW5jdGlvbiB3Vih5LFAsTCl7cmV0dXJuIG51bGw9PUwmJihMPXhyKDgpKSxjcihQLEwpfSgwLHllKSksITB9ZnVuY3Rpb24gS2coeSxQLEwsWCl7dmFyIG5lPWN1KCksZmU9TC5TaGVldE5hbWVzW3ldLGJlPUwuU2hlZXRzW2ZlXXx8''@;'; put 'put ''e30sdmU9ZmU7dHJ5e0wmJkwuV29ya2Jvb2smJih2ZT1MLldvcmtib29rLlNoZWV0c1t5XS5Db2RlTmFtZXx8dmUpfWNhdGNoe312YXIgeWU9Um8oYmVbIiFyZWYiXXx8IkExIik7aWYoeWUuZS5jPjE2MzgzfHx5ZS5lLnI+MTA0ODU3NSl7aWYoUC5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5n''@;'; put 'put ''ZSAiKyhiZVsiIXJlZiJdfHwiQTEiKSsiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOlhGRDEwNDg1NzYiKTt5ZS5lLmM9TWF0aC5taW4oeWUuZS5jLDE2MzgzKSx5ZS5lLnI9TWF0aC5taW4oeWUuZS5jLDEwNDg1NzUpfXJldHVybiBiZVsiIWxpbmtzIl09W10sYmVbIiFjb21tZW50cyJdPVtd''@;'; put 'put ''LGhpKG5lLCJCcnRCZWdpblNoZWV0IiksKEwudmJhcmF3fHxiZVsiIW91dGxpbmUiXSkmJmhpKG5lLCJCcnRXc1Byb3AiLGZ1bmN0aW9uIHlWKHksUCxMKXtudWxsPT1MJiYoTD14cig4NCs0KnkubGVuZ3RoKSk7dmFyIFg9MTkyO1AmJihQLmFib3ZlJiYoWCY9LTY1KSxQLmxlZnQmJihYJj0t''@;'; put 'put ''MTI5KSksTC53cml0ZV9zaGlmdCgxLFgpO2Zvcih2YXIgbmU9MTtuZTwzOysrbmUpTC53cml0ZV9zaGlmdCgxLDApO3JldHVybiBnMih7YXV0bzoxfSxMKSxMLndyaXRlX3NoaWZ0KC00LC0xKSxMLndyaXRlX3NoaWZ0KC00LC0xKSxoZyh5LEwpLEwuc2xpY2UoMCxMLmwpfSh2ZSxiZVsiIW91''@;'; put 'put ''dGxpbmUiXSkpLGhpKG5lLCJCcnRXc0RpbSIsYlYoeWUpKSxmdW5jdGlvbiBYVih5LFAsTCl7aGkoeSwiQnJ0QmVnaW5Xc1ZpZXdzIiksaGkoeSwiQnJ0QmVnaW5Xc1ZpZXciLGZ1bmN0aW9uIE02KHksUCxMKXtudWxsPT1MJiYoTD14cigzMCkpO3ZhciBYPTkyNDtyZXR1cm4oKChQfHx7fSku''@;'; put 'put ''Vmlld3N8fFtdKVswXXx8e30pLlJUTCYmKFh8PTMyKSxobih5WyIhZ3JpZGxpbmVzIl0pJiYoWCY9LTUpLGhuKCgoKFB8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuZ3JpZCkmJihYJj0tNSksTC53cml0ZV9zaGlmdCgyLFgpLEwud3JpdGVfc2hpZnQoNCwwKSxMLndyaXRlX3NoaWZ0KDQsMCks''@;'; put 'put ''TC53cml0ZV9zaGlmdCg0LDApLEwud3JpdGVfc2hpZnQoMSwwKSxMLndyaXRlX3NoaWZ0KDEsMCksTC53cml0ZV9zaGlmdCgyLDApLEwud3JpdGVfc2hpZnQoMiwxMDApLEwud3JpdGVfc2hpZnQoMiwwKSxMLndyaXRlX3NoaWZ0KDIsMCksTC53cml0ZV9zaGlmdCgyLDApLEwud3JpdGVfc2hp''@;'; put 'put ''ZnQoNCwwKSxMfShQLEwpKSxQWyIhZnJlZXplIl0mJmhpKHksIkJydFBhbmUiLGZ1bmN0aW9uIE5WKHkpe3ZhciBQPWtzKHlbIiFmcmVlemUiXSksTD14cigyOSk7cmV0dXJuIEwud3JpdGVfc2hpZnQoOCxQLmMsImYiKSxMLndyaXRlX3NoaWZ0KDgsUC5yLCJmIiksTC53cml0ZV9zaGlmdCg0''@;'; put 'put ''LFAuciksTC53cml0ZV9zaGlmdCg0LFAuYyksTC53cml0ZV9zaGlmdCg0LDApLEwud3JpdGVfc2hpZnQoMSwzKSxMfShQKSksUFsiIXNlbCJdJiZoaSh5LCJCcnRTZWwiLGZ1bmN0aW9uIEhWKHksUCl7dmFyIEw9eHIoMzYpLFg9eS5jZWxsO2lmKCFYKXtpZigheS5yYW5nZSl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIk11c3Qgc3BlY2lmeSBhIHNlbGVjdGlvbiBjZWxsIG9yIHJhbmdlIik7WD1BaShhYSh5LnJhbmdlLnJlcGxhY2UoL1xzLiokLywiIikpLnMpfXZhciBuZT0ic3RyaW5nIj09dHlwZW9mIFg/a3MoWCk6WDtpZihQKXt2YXIgZmU9InN0cmluZyI9PXR5cGVvZiBQP2tzKFApOlA7TC53''@;'; put 'put ''cml0ZV9zaGlmdCg0LG5lLnI+PWZlLnImJm5lLmM+PWZlLmM/MDpuZS5yPj1mZS5yJiZuZS5jPGZlLmM/MjpuZS5yPGZlLnImJm5lLmM+PWZlLmM/MTozKX1lbHNlIEwud3JpdGVfc2hpZnQoNCwzKTtyZXR1cm4gTC53cml0ZV9zaGlmdCg0LG5lLnIpLEwud3JpdGVfc2hpZnQoNCxuZS5jKSxM''@;'; put 'put ''LndyaXRlX3NoaWZ0KDQsMCksTC53cml0ZV9zaGlmdCg0LDEpLEwud3JpdGVfc2hpZnQoNCxuZS5yKSxMLndyaXRlX3NoaWZ0KDQsbmUuciksTC53cml0ZV9zaGlmdCg0LG5lLmMpLEwud3JpdGVfc2hpZnQoNCxuZS5jKSxMfShQWyIhc2VsIl0sUFsiIWZyZWV6ZSJdKSksaGkoeSwiQnJ0RW5k''@;'; put 'put ''V3NWaWV3IiksaGkoeSwiQnJ0RW5kV3NWaWV3cyIpfShuZSxiZSxMLldvcmtib29rKSxmdW5jdGlvbiBxVih5LFApeyFQfHwhUFsiIWNvbHMiXXx8KGhpKHksIkJydEJlZ2luQ29sSW5mb3MiKSxQWyIhY29scyJdLmZvckVhY2goZnVuY3Rpb24oTCxYKXtMJiZoaSh5LCJCcnRDb2xJbmZvIixm''@;'; put 'put ''dW5jdGlvbiBCVih5LFAsTCl7bnVsbD09TCYmKEw9eHIoMTgpKTt2YXIgWD11Nih5LFApO0wud3JpdGVfc2hpZnQoLTQseSksTC53cml0ZV9zaGlmdCgtNCx5KSxMLndyaXRlX3NoaWZ0KDQsMjU2KihYLndpZHRofHwxMCkpLEwud3JpdGVfc2hpZnQoNCwwKTt2YXIgbmU9MDtyZXR1cm4gUC5o''@;'; put 'put ''aWRkZW4mJihuZXw9MSksIm51bWJlciI9PXR5cGVvZiBYLndpZHRoJiYobmV8PTIpLFAubGV2ZWwmJihuZXw9UC5sZXZlbDw8OCksTC53cml0ZV9zaGlmdCgyLG5lKSxMfShYLEwpKX0pLGhpKHksIkJydEVuZENvbEluZm9zIikpfShuZSxiZSksZnVuY3Rpb24geEEoeSxQLEwsWCl7dmFyIG5l''@;'; put 'put ''PVJvKFBbIiFyZWYiXXx8IkExIiksYmU9IiIsdmU9W107aGkoeSwiQnJ0QmVnaW5TaGVldERhdGEiKTt2YXIgeWU9QXJyYXkuaXNBcnJheShQKSxWZT1uZS5lLnI7UFsiIXJvd3MiXSYmKFZlPU1hdGgubWF4KG5lLmUucixQWyIhcm93cyJdLmxlbmd0aC0xKSk7Zm9yKHZhciB6ZT1uZS5zLnI7''@;'; put 'put ''emU8PVZlOysremUpe2JlPWJzKHplKSx2Vih5LFAsbmUsemUpO3ZhciBXZT0hMTtpZih6ZTw9bmUuZS5yKWZvcih2YXIgcnQ9bmUucy5jO3J0PD1uZS5lLmM7KytydCl7emU9PT1uZS5zLnImJih2ZVtydF09eW8ocnQpKTt2YXIgbHQ9eWU/KFBbemVdfHxbXSlbcnRdOlBbdmVbcnRdK2JlXTtX''@;'; put 'put ''ZT0hIWx0JiZHVih5LGx0LHplLHJ0LFgsUCxXZSl9fWhpKHksIkJydEVuZFNoZWV0RGF0YSIpfShuZSxiZSwwLFApLGZ1bmN0aW9uIGpRKHksUCl7UFsiIXByb3RlY3QiXSYmaGkoeSwiQnJ0U2hlZXRQcm90ZWN0aW9uIixmdW5jdGlvbiBkdih5LFApe3JldHVybiBudWxsPT1QJiYoUD14cig2''@;'; put 'put ''NikpLFAud3JpdGVfc2hpZnQoMix5LnBhc3N3b3JkP1I5KHkucGFzc3dvcmQpOjApLFAud3JpdGVfc2hpZnQoNCwxKSxbWyJvYmplY3RzIiwhMV0sWyJzY2VuYXJpb3MiLCExXSxbImZvcm1hdENlbGxzIiwhMF0sWyJmb3JtYXRDb2x1bW5zIiwhMF0sWyJmb3JtYXRSb3dzIiwhMF0sWyJpbnNl''@;'; put 'put ''cnRDb2x1bW5zIiwhMF0sWyJpbnNlcnRSb3dzIiwhMF0sWyJpbnNlcnRIeXBlcmxpbmtzIiwhMF0sWyJkZWxldGVDb2x1bW5zIiwhMF0sWyJkZWxldGVSb3dzIiwhMF0sWyJzZWxlY3RMb2NrZWRDZWxscyIsITFdLFsic29ydCIsITBdLFsiYXV0b0ZpbHRlciIsITBdLFsicGl2b3RUYWJsZXMi''@;'; put 'put ''LCEwXSxbInNlbGVjdFVubG9ja2VkQ2VsbHMiLCExXV0uZm9yRWFjaChmdW5jdGlvbihMKXtQLndyaXRlX3NoaWZ0KDQsTFsxXT9udWxsPT15W0xbMF1dfHx5W0xbMF1dPzA6MTpudWxsIT15W0xbMF1dJiZ5W0xbMF1dPzA6MSl9KSxQfShQWyIhcHJvdGVjdCJdKSl9KG5lLGJlKSxmdW5jdGlv''@;'; put 'put ''biBFQSh5LFAsTCxYKXtpZihQWyIhYXV0b2ZpbHRlciJdKXt2YXIgbmU9UFsiIWF1dG9maWx0ZXIiXSxmZT0ic3RyaW5nIj09dHlwZW9mIG5lLnJlZj9uZS5yZWY6RGkobmUucmVmKTtMLldvcmtib29rfHwoTC5Xb3JrYm9vaz17U2hlZXRzOltdfSksTC5Xb3JrYm9vay5OYW1lc3x8KEwuV29y''@;'; put 'put ''a2Jvb2suTmFtZXM9W10pO3ZhciBiZT1MLldvcmtib29rLk5hbWVzLHZlPWFhKGZlKTt2ZS5zLnI9PXZlLmUuciYmKHZlLmUucj1hYShQWyIhcmVmIl0pLmUucixmZT1EaSh2ZSkpO2Zvcih2YXIgeWU9MDt5ZTxiZS5sZW5ndGg7Kyt5ZSl7dmFyIFZlPWJlW3llXTtpZigiX3hsbm0uX0ZpbHRl''@;'; put 'put ''ckRhdGFiYXNlIj09VmUuTmFtZSYmVmUuU2hlZXQ9PVgpe1ZlLlJlZj0iJyIrTC5TaGVldE5hbWVzW1hdKyInISIrZmU7YnJlYWt9fXllPT1iZS5sZW5ndGgmJmJlLnB1c2goe05hbWU6Il94bG5tLl9GaWx0ZXJEYXRhYmFzZSIsU2hlZXQ6WCxSZWY6IiciK0wuU2hlZXROYW1lc1tYXSsiJyEi''@;'; put 'put ''K2ZlfSksaGkoeSwiQnJ0QmVnaW5BRmlsdGVyIixwMihSbyhmZSkpKSxoaSh5LCJCcnRFbmRBRmlsdGVyIil9fShuZSxiZSxMLHkpLGZ1bmN0aW9uICRWKHksUCl7IVB8fCFQWyIhbWVyZ2VzIl18fChoaSh5LCJCcnRCZWdpbk1lcmdlQ2VsbHMiLGZ1bmN0aW9uIGJBKHksUCl7cmV0dXJuIG51''@;'; put 'put ''bGw9PVAmJihQPXhyKDQpKSxQLndyaXRlX3NoaWZ0KDQseSksUH0oUFsiIW1lcmdlcyJdLmxlbmd0aCkpLFBbIiFtZXJnZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKEwpe2hpKHksIkJydE1lcmdlQ2VsbCIsQzYoTCkpfSksaGkoeSwiQnJ0RW5kTWVyZ2VDZWxscyIpKX0obmUsYmUpLGZ1bmN0aW9u''@;'; put 'put ''IFFWKHksUCl7aWYoUCl7aGkoeSwiQnJ0QmVnaW5EVmFscyIsZnVuY3Rpb24gaHYoeSxQKXtudWxsPT1QJiYoUD14cigxOCkpLFAud3JpdGVfc2hpZnQoMiwwKSxQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCg0LDApLFAud3JpdGVfc2hpZnQoNCwwKTtmb3IodmFyIEw9MCxYPTA7''@;'; put 'put ''WDx5Lmxlbmd0aDsrK1gpKCh5W1hdfHx7fSkucmVmfHx7fSkucyYmeVtYXS5yZWYucy5jPDB8fCsrTDtyZXR1cm4gUC53cml0ZV9zaGlmdCg0LEwpLFB9KFApKTtmb3IodmFyIEw9MDtMPFAubGVuZ3RoOysrTCkoKFBbTF18fHt9KS5yZWZ8fHt9KS5zJiZQW0xdLnJlZi5zLmM8MHx8aGkoeSwi''@;'; put 'put ''QnJ0RFZhbCIsTUEoUFtMXSkpO2hpKHksIkJydEVuZERWYWxzIil9fShuZSxiZVsiIXZhbGlkYXRpb25zIl0pLGZ1bmN0aW9uIGZ2KHksUCxMKXtQWyIhbGlua3MiXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe2lmKFhbMV0uVGFyZ2V0KXt2YXIgbmU9Z3IoTCwtMSxYWzFdLlRhcmdldC5yZXBsYWNl''@;'; put 'put ''KC8jLiokLywiIiksU28uSExJTkspO2hpKHksIkJydEhMaW5rIixmdW5jdGlvbiBTNih5LFApe3ZhciBMPXhyKDUwKzQqKHlbMV0uVGFyZ2V0Lmxlbmd0aCsoeVsxXS5Ub29sdGlwfHwiIikubGVuZ3RoKSk7cDIoe3M6a3MoeVswXSksZTprcyh5WzBdKX0sTCkscGcoInJJZCIrUCxMKTt2YXIg''@;'; put 'put ''WD15WzFdLlRhcmdldC5pbmRleE9mKCIjIik7cmV0dXJuIEtsKCgtMT09WD8iIjp5WzFdLlRhcmdldC5zbGljZShYKzEpKXx8IiIsTCksS2woeVsxXS5Ub29sdGlwfHwiIixMKSxLbCgiIixMKSxMLnNsaWNlKDAsTC5sKX0oWCxuZSkpfX0pLGRlbGV0ZSBQWyIhbGlua3MiXX0obmUsYmUsWCks''@;'; put 'put ''YmVbIiFtYXJnaW5zIl0mJmhpKG5lLCJCcnRNYXJnaW5zIixmdW5jdGlvbiB6Vih5LFApe3JldHVybiBudWxsPT1QJiYoUD14cig0OCkpLG4zKHkpLENBLmZvckVhY2goZnVuY3Rpb24oTCl7amMoeVtMXSxQKX0pLFB9KGJlWyIhbWFyZ2lucyJdKSksKCFQfHxQLmlnbm9yZUVDfHxudWxsPT1Q''@;'; put 'put ''Lmlnbm9yZUVDKSYmZnVuY3Rpb24gcWcoeSxQKXshUHx8IVBbIiFyZWYiXXx8KGhpKHksIkJydEJlZ2luQ2VsbElnbm9yZUVDcyIpLGhpKHksIkJydENlbGxJZ25vcmVFQyIsZnVuY3Rpb24gVVYoeSl7dmFyIFA9eHIoMjQpO3JldHVybiBQLndyaXRlX3NoaWZ0KDQsNCksUC53cml0ZV9zaGlm''@;'; put 'put ''dCg0LDEpLHAyKHksUCksUH0oUm8oUFsiIXJlZiJdKSkpLGhpKHksIkJydEVuZENlbGxJZ25vcmVFQ3MiKSl9KG5lLGJlKSxmdW5jdGlvbiBLVih5LFAsTCxYKXtpZihQWyIhY29tbWVudHMiXS5sZW5ndGg+MCl7dmFyIG5lPWdyKFgsLTEsIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmciKyhMKzEp''@;'; put 'put ''KyIudm1sIixTby5WTUwpO2hpKHksIkJydExlZ2FjeURyYXdpbmciLHBnKCJySWQiK25lKSksUFsiIWxlZ2FjeSJdPW5lfX0obmUsYmUseSxYKSxoaShuZSwiQnJ0RW5kU2hlZXQiKSxuZS5lbmQoKX1mdW5jdGlvbiB4Nih5KXt2YXIgWCxQPVtdLEw9eS5tYXRjaCgvXjxjOm51bUNhY2hlPi8p''@;'; put 'put ''Oyh5Lm1hdGNoKC88YzpwdCBpZHg9IihcZCopIj4oLio/KTxcL2M6cHQ+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24oZmUpe3ZhciBiZT1mZS5tYXRjaCgvPGM6cHQgaWR4PSIoXGQqPykiPjxjOnY+KC4qKTxcL2M6dj48XC9jOnB0Pi8pO2JlJiYoUFsrYmVbMV1dPUw/K2JlWzJdOmJlWzJd''@;'; put 'put ''KX0pO3ZhciBuZT1ocigoeS5tYXRjaCgvPGM6Zm9ybWF0Q29kZT4oW1xzXFNdKj8pPFwvYzpmb3JtYXRDb2RlPi8pfHxbIiIsIkdlbmVyYWwiXSlbMV0pO3JldHVybih5Lm1hdGNoKC88YzpmPiguKj8pPFwvYzpmPi9nbSl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGZlKXtYPWZlLnJlcGxhY2Uo''@;'; put 'put ''LzwuKj8+L2csIiIpfSksW1AsbmUsWF19U28uQ0hBUlQ9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnQiLFNvLkNIQVJURVg9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTQvcmVs''@;'; put 'put ''YXRpb25zaGlwcy9jaGFydEV4Ijt2YXIgdEI9LzwoPzpcdys6KT9jaGFydD4oW1xzXFNdKj8pPFwvKD86XHcrOik/Y2hhcnQ+Lyx5Qz0vPCg/Olx3KzopP3Bsb3RBcmVhPihbXHNcU10qPyk8XC8oPzpcdys6KT9wbG90QXJlYT4vLHpRPS88KD86XHcrOik/bGVnZW5kPihbXHNcU10qPyk8XC8o''@;'; put 'put ''Pzpcdys6KT9sZWdlbmQ+LyxUQT0vPCg/Olx3KzopP3RpdGxlPihbXHNcU10qPyk8XC8oPzpcdys6KT90aXRsZT4vO2Z1bmN0aW9uIG1oKHksUCxMLFgsbmUsZmUsYmUsdmUpe3ZhciB5ZT1mZXx8eyIhdHlwZSI6ImNoYXJ0In07aWYoIXkpcmV0dXJuIGZlO2JlJiZiZS5BbmNob3ImJih5ZVsi''@;'; put 'put ''IXBvcyJdPUhnKGJlLkFuY2hvcix2ZSkseWVbIiFwb3NUeXBlIl09YmUuQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9yLywiIikseWVbIiFhYnNwb3MiXT1IZyhiZS5BbmNob3IsdmUpLHllWyIhcmVscG9zIl09bXcoYmUuQW5jaG9yLHZlKSkseWVbIiFwbG90Il09W107dmFyIFZlPSIiLHpl''@;'; put 'put ''PSIiLFdlPXkubWF0Y2godEIpO1dlPyhWZT15LnNsaWNlKDAsV2UuaW5kZXgpLHplPXkuc2xpY2UoV2UuaW5kZXgrV2VbMF0ubGVuZ3RoKSk6VmU9emU9eTt2YXIgcnQ9W10sbHQ9VmUubWF0Y2goLzxjOmxhbmcuKj8+Lyl8fHkubWF0Y2goLzxjOmxhbmcuKj8+Lyl8fHplLm1hdGNoKC88Yzps''@;'; put 'put ''YW5nLio/Pi8pO3JldHVybiBsdCYmKHllWyIhbGFuZyJdPShhbihsdFswXSl8fHt9KS52YWx8fCJlbi1VUyIpLFdlJiYoKHJ0PVdlWzFdLm1hdGNoKFRBKSkmJmZ1bmN0aW9uIGVCKHksUCl7dmFyIEw9IiI7eS5tYXRjaCgvPGM6cmljaD4vKSYmeS5yZXBsYWNlKC88YTp0PihbXHNcU10qPyk8''@;'; put 'put ''XC9hOnQ+L2csZnVuY3Rpb24oWCxuZSl7TCs9bmV9KSxQWyIhdGl0bGUiXT1MfHwiQ2hhcnQgVGl0bGUifShydFsxXSx5ZSksZnVuY3Rpb24gVVEoeSxQKXtpZih5KXt2YXIgTD0wLFg9MCxuZT0iQSIsZmU9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX07eS5yZXBsYWNlKGtBLGZ1bmN0''@;'; put 'put ''aW9uKGJlLHZlKXt2YXIgeWU9e3Q6dmUsYzpMLHc6MCxzZXI6W119LFZlPVtdLHplPShiZS5tYXRjaCgvPGM6c2VyLyl8fFtdKS5pbmRleCxXZT16ZT9iZS5zbGljZSgwLHplKTpiZTsic2NhdHRlciI9PXZlJiYoVmU9YmUubWF0Y2goLzxjOnNjYXR0ZXJTdHlsZShbXlwvPl0qKVwvPi9tKSkm''@;'; put 'put ''JmFuKFZlWzBdKSwiYmFyIj09dmUmJihWZT1iZS5tYXRjaCgvPGM6YmFyRGlyKFteXC8+XSopXC8+L20pKSYmKHllLmJhckRpcj0iYmFyIj09YW4oVmVbMF0pLnZhbD8iaCI6InYiKSwoVmU9V2UubWF0Y2goLzxjOmdyb3VwaW5nKFteXC8+XSopXC8+L20pKSYmKHllLmdyb3VwaW5nPWFuKFZl''@;'; put 'put ''WzBdKS52YWx8fCJzdGFuZGFyZCIpLChiZS5tYXRjaChuQil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGx0KXt2YXIgQ3Q9W10sYXQ9e30sdnQ9W107aWYobHQubWF0Y2goLzxjOnR4Pi8pKXt2YXIgUHQ9eDYoKGx0Lm1hdGNoKC88Yzp0eD4oW1xzXFNdKj8pPFwvYzp0eD4vKXx8W10pWzFdfHwi''@;'; put 'put ''Iil8fFtdO1B0WzBdJiZQdFswXVswXSYmKGF0Lm5hbWU9UHRbMF1bMF0pLFB0WzJdJiYoYXQubmFtZXJlZj1QdFsyXSl9WyJ4VmFsIiwieVZhbCIsImNhdCIsInZhbCIsImJ1YmJsZVNpemUiXS5mb3JFYWNoKGZ1bmN0aW9uKGt0KXt2YXIgWnQsRHQ9bHQubWF0Y2gobmV3IFJlZ0V4cCgiPGM6''@;'; put 'put ''IitrdCsiPltcXHNcXFNdKj88XFwvYzoiK2t0KyI+IiwiZ20iKSk7RHQmJigoRHRbMF0ubWF0Y2goLzxjOmY+KC4qPyk8XC9jOmY+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24oZ24pe1p0PWduLnJlcGxhY2UoLzwuKj8+L2csIiIpfSksKER0WzBdLm1hdGNoKC88YzooPzpcdyopQ2FjaGU+''@;'; put 'put ''W1xzXFNdKj88XC9jOig/Olx3KilDYWNoZT4vZ20pfHxbXSkuZm9yRWFjaChmdW5jdGlvbihnbil7dmFyICRuPXg2KGduKTtmZS5zLnI9ZmUucy5jPTAsZmUuZS5jPUwsbmU9eW8oTCksJG5bMF0uZm9yRWFjaChmdW5jdGlvbihjbixYbil7UFtuZSticyhYbildPXt0OiJudW1iZXIiPT10eXBl''@;'; put 'put ''b2YgY24/Im4iOiJzIix2OmNuLHo6JG5bMV19LFg9WG59KSxmZS5lLnI8WCYmKGZlLmUucj1YKSwrK0wseWUudysrLEN0LnB1c2goa3QpLCgkblsyXXx8WnQpJiZ2dC5wdXNoKCRuWzJdfHxadCksInZhbCI9PWt0JiYoYXQuej0kblsxXXx8IkdlbmVyYWwiKX0pKX0pLChWZT1iZS5tYXRjaCgv''@;'; put 'put ''PGM6c21vb3RoKFteXC8+XSopXC8+L20pKSYmKGF0LnNtb290aD1udWxsPT1hbihWZVswXSkudmFsfHxScihhbihWZVswXSkudmFsKSksYXQuY29scz1DdCxhdC5yYW5nZXM9dnQseWUuc2VyLnB1c2goYXQpfSksImRvdWdobnV0Ij09dmUmJihWZT1iZS5tYXRjaCgvPGM6aG9sZVNpemUoW15c''@;'; put 'put ''Lz5dKilcLz4vbSkpJiYoeWUuaG9sZT0oYW4oVmVbMF0pLnZhbHx8MTApLzEwMCksUFsiIXBsb3QiXS5wdXNoKHllKX0pLEw+MCYmKFBbIiFyZWYiXT1EaShmZSkpfX0oKFdlWzFdLm1hdGNoKHlDKXx8W10pWzFdLHllKSxudWxsIT0ocnQ9V2VbMV0ubWF0Y2goelEpKSYmZnVuY3Rpb24gZHMo''@;'; put 'put ''eSxQKXt2YXIgTDtQWyIhbGVnZW5kIl09e3BvczoiciJ9LChMPXkubWF0Y2goLzxjOmxlZ2VuZFBvcyhbXlwvPl0qKVwvPi9tKSkmJihQWyIhbGVnZW5kIl0ucG9zPWFuKExbMF0pLnZhbHx8InIiKX0ocnRbMF0seWUpKSx5ZX12YXIga0E9LzxjOigoPzphcmVhfGxpbmV8c3RvY2t8cmFkYXJ8''@;'; put 'put ''c2NhdHRlcnxwaWV8ZG91Z2hudXR8YmFyfG9mUGllfHN1cmZhY2V8YnViYmxlKSg/OjNEKT8pQ2hhcnRbXj5dKj4oW1xzXFNdKj8pPFwvYzooPzphcmVhfGxpbmV8c3RvY2t8cmFkYXJ8c2NhdHRlcnxwaWV8ZG91Z2hudXR8YmFyfG9mUGllfHN1cmZhY2V8YnViYmxlKSg/OjNEKT9DaGFydD4v''@;'; put 'put ''Z20sbkI9LzxjOnNlcj4oW1xzXFNdKj8pPFwvYzpzZXI+L2dtO1NvLkNTPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXQiO3ZhciBNbz1fcigiY2hhcnRzaGVldCIsbnVsbCx7eG1sbnM6a2kubWFp''@;'; put 'put ''blswXSwieG1sbnM6ciI6a2kucn0pO2Z1bmN0aW9uIHdDKHksUCxMLFgpe3ZhciBuZT1bUG4sTW9dO3JldHVybiBuZS5wdXNoKCI8c2hlZXRQci8+IiksbmUucHVzaCgnPHNoZWV0Vmlld3M+PHNoZWV0VmlldyB6b29tU2NhbGU9IjEwMCIgd29ya2Jvb2tWaWV3SWQ9IjAiIHpvb21Ub0ZpdD0i''@;'; put 'put ''MSIvPjwvc2hlZXRWaWV3cz4nKSxuZVtuZS5sZW5ndGhdPV9yKCJkcmF3aW5nIixudWxsLHsicjppZCI6InJJZDEifSksZ3IoWCwtMSwiLi4vZHJhd2luZ3MvZHJhd2luZyIrKHkrMSkrIi54bWwiLFNvLkRSQVcpLG5lLmxlbmd0aD4yJiYobmVbbmUubGVuZ3RoXT0iPC9jaGFydHNoZWV0PiIs''@;'; put 'put ''bmVbMV09bmVbMV0ucmVwbGFjZSgiLz4iLCI+IikpLG5lLmpvaW4oIiIpfWZ1bmN0aW9uIENDKCl7dmFyIHk9Y3UoKTtyZXR1cm4gaGkoeSwiQnJ0QmVnaW5TaGVldCIpLGhpKHksIkJydEVuZFNoZWV0IikseS5lbmQoKX12YXIgcHY9W1siYWxsb3dSZWZyZXNoUXVlcnkiLCExLCJib29sIl0s''@;'; put 'put ''WyJhdXRvQ29tcHJlc3NQaWN0dXJlcyIsITAsImJvb2wiXSxbImJhY2t1cEZpbGUiLCExLCJib29sIl0sWyJjaGVja0NvbXBhdGliaWxpdHkiLCExLCJib29sIl0sWyJDb2RlTmFtZSIsIiJdLFsiZGF0ZTE5MDQiLCExLCJib29sIl0sWyJkZWZhdWx0VGhlbWVWZXJzaW9uIiwwLCJpbnQiXSxb''@;'; put 'put ''ImZpbHRlclByaXZhY3kiLCExLCJib29sIl0sWyJoaWRlUGl2b3RGaWVsZExpc3QiLCExLCJib29sIl0sWyJwcm9tcHRlZFNvbHV0aW9ucyIsITEsImJvb2wiXSxbInB1Ymxpc2hJdGVtcyIsITEsImJvb2wiXSxbInJlZnJlc2hBbGxDb25uZWN0aW9ucyIsITEsImJvb2wiXSxbInNhdmVFeHRl''@;'; put 'put ''cm5hbExpbmtWYWx1ZXMiLCEwLCJib29sIl0sWyJzaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcyIsITAsImJvb2wiXSxbInNob3dJbmtBbm5vdGF0aW9uIiwhMCwiYm9vbCJdLFsic2hvd09iamVjdHMiLCJhbGwiXSxbInNob3dQaXZvdENoYXJ0RmlsdGVyIiwhMSwiYm9vbCJdLFsidXBkYXRl''@;'; put 'put ''TGlua3MiLCJ1c2VyU2V0Il1dLEFBPVtbImFjdGl2ZVRhYiIsMCwiaW50Il0sWyJhdXRvRmlsdGVyRGF0ZUdyb3VwaW5nIiwhMCwiYm9vbCJdLFsiZmlyc3RTaGVldCIsMCwiaW50Il0sWyJtaW5pbWl6ZWQiLCExLCJib29sIl0sWyJzaG93SG9yaXpvbnRhbFNjcm9sbCIsITAsImJvb2wiXSxb''@;'; put 'put ''InNob3dTaGVldFRhYnMiLCEwLCJib29sIl0sWyJzaG93VmVydGljYWxTY3JvbGwiLCEwLCJib29sIl0sWyJ0YWJSYXRpbyIsNjAwLCJpbnQiXSxbInZpc2liaWxpdHkiLCJ2aXNpYmxlIl1dLERBPVtdLHNCPVtbImNhbGNDb21wbGV0ZWQiLCJ0cnVlIl0sWyJjYWxjTW9kZSIsImF1dG8iXSxb''@;'; put 'put ''ImNhbGNPblNhdmUiLCJ0cnVlIl0sWyJjb25jdXJyZW50Q2FsYyIsInRydWUiXSxbImZ1bGxDYWxjT25Mb2FkIiwiZmFsc2UiXSxbImZ1bGxQcmVjaXNpb24iLCJ0cnVlIl0sWyJpdGVyYXRlIiwiZmFsc2UiXSxbIml0ZXJhdGVDb3VudCIsIjEwMCJdLFsiaXRlcmF0ZURlbHRhIiwiMC4wMDEi''@;'; put 'put ''XSxbInJlZk1vZGUiLCJBMSJdXTtmdW5jdGlvbiBJQSh5LFApe2Zvcih2YXIgTD0wO0whPXkubGVuZ3RoOysrTClmb3IodmFyIFg9eVtMXSxuZT0wO25lIT1QLmxlbmd0aDsrK25lKXt2YXIgZmU9UFtuZV07aWYobnVsbD09WFtmZVswXV0pWFtmZVswXV09ZmVbMV07ZWxzZSBzd2l0Y2goZmVb''@;'; put 'put ''Ml0pe2Nhc2UiYm9vbCI6InN0cmluZyI9PXR5cGVvZiBYW2ZlWzBdXSYmKFhbZmVbMF1dPVJyKFhbZmVbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOiJzdHJpbmciPT10eXBlb2YgWFtmZVswXV0mJihYW2ZlWzBdXT1wYXJzZUludChYW2ZlWzBdXSwxMCkpfX19ZnVuY3Rpb24gaTMoeSxQKXtmb3Io''@;'; put 'put ''dmFyIEw9MDtMIT1QLmxlbmd0aDsrK0wpe3ZhciBYPVBbTF07aWYobnVsbD09eVtYWzBdXSl5W1hbMF1dPVhbMV07ZWxzZSBzd2l0Y2goWFsyXSl7Y2FzZSJib29sIjoic3RyaW5nIj09dHlwZW9mIHlbWFswXV0mJih5W1hbMF1dPVJyKHlbWFswXV0pKTticmVhaztjYXNlImludCI6InN0cmlu''@;'; put 'put ''ZyI9PXR5cGVvZiB5W1hbMF1dJiYoeVtYWzBdXT1wYXJzZUludCh5W1hbMF1dLDEwKSl9fX1mdW5jdGlvbiBTQyh5KXtpMyh5LldCUHJvcHMscHYpLGkzKHkuQ2FsY1ByLHNCKSxJQSh5LldCVmlldyxBQSksSUEoeS5TaGVldHMsREEpLGM2LmRhdGUxOTA0PVJyKHkuV0JQcm9wcy5kYXRlMTkw''@;'; put 'put ''NCl9dmFyIGFCPSJdWyo/L1xcIi5zcGxpdCgiIik7ZnVuY3Rpb24gZ3YoeSxQKXtpZih5Lmxlbmd0aD4zMSl7aWYoUClyZXR1cm4hMTt0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWVzIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKX12YXIgTD0hMDtyZXR1cm4gYUIuZm9yRWFjaChmdW5jdGlv''@;'; put 'put ''bihYKXtpZigtMSE9eS5pbmRleE9mKFgpKXtpZighUCl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKTtMPSExfX0pLEx9dmFyIEU2PS88XHcrOndvcmtib29rLyxPQT1fcigid29ya2Jvb2siLG51bGwse3htbG5zOmtpLm1haW5bMF0s''@;'; put 'put ''InhtbG5zOnIiOmtpLnJ9KTtmdW5jdGlvbiBUNih5LFApe3ZhciBMPVB8fHt9LFg9W1BuXTtYW1gubGVuZ3RoXT1PQTt2YXIgbmU9eS5Xb3JrYm9vayYmKHkuV29ya2Jvb2suTmFtZXN8fFtdKS5sZW5ndGg+MDt5Lldvcmtib29rJiZ5Lldvcmtib29rLk1vZGlmeSYmKFhbWC5sZW5ndGhdPWZ1''@;'; put 'put ''bmN0aW9uIG8zKHkpe3ZhciBQPXt9O3JldHVybiB5Lndhcm4mJihQLnJlYWRPbmx5UmVjb21tZW5kZWQ9MSksUC51c2VyTmFtZT15LnVzZXJ8fCJTaGVldCBKUyIseS5lbmNyeXB0aW9uJiYoeS5lbmNyeXB0aW9uLmFsZ28mJihQLmFsZ29yaXRobU5hbWU9eS5lbmNyeXB0aW9uLmFsZ28pLHku''@;'; put 'put ''ZW5jcnlwdGlvbi5oYXNoJiYoUC5oYXNoVmFsdWU9eS5lbmNyeXB0aW9uLmhhc2gpLHkuZW5jcnlwdGlvbi5zYWx0JiYoUC5zYWx0VmFsdWU9eS5lbmNyeXB0aW9uLnNhbHQpLHkuZW5jcnlwdGlvbi5zcGluJiYoUC5zcGluQ291bnQ9eS5lbmNyeXB0aW9uLnNwaW4pKSxfcigiZmlsZVNoYXJp''@;'; put 'put ''bmciLG51bGwsUCl9KHkuV29ya2Jvb2suTW9kaWZ5KSk7dmFyIGZlPXtjb2RlTmFtZToiVGhpc1dvcmtib29rIn07eS5Xb3JrYm9vayYmeS5Xb3JrYm9vay5XQlByb3BzJiYocHYuZm9yRWFjaChmdW5jdGlvbihWZSl7bnVsbCE9eS5Xb3JrYm9vay5XQlByb3BzW1ZlWzBdXSYmeS5Xb3JrYm9v''@;'; put 'put ''ay5XQlByb3BzW1ZlWzBdXSE9VmVbMV0mJihmZVtWZVswXV09eS5Xb3JrYm9vay5XQlByb3BzW1ZlWzBdXSl9KSx5Lldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUmJihmZS5jb2RlTmFtZT15Lldvcmtib29rLldCUHJvcHMuQ29kZU5hbWUsZGVsZXRlIGZlLkNvZGVOYW1lKSksWFtYLmxlbmd0''@;'; put 'put ''aF09X3IoIndvcmtib29rUHIiLG51bGwsZmUpLHkuV29ya2Jvb2smJnkuV29ya2Jvb2suUHJvdGVjdGlvbiYmKFhbWC5sZW5ndGhdPWZ1bmN0aW9uIG12KHkpe3ZhciBQPXt9O3JldHVybiB5LmxvY2tTdHJ1Y3R1cmUmJihQLmxvY2tTdHJ1Y3R1cmU9MSkseS5sb2NrV2luZG93cyYmKFAubG9j''@;'; put 'put ''a1dpbmRvd3M9MSkseS5lbmNyeXB0aW9uJiYoeS5lbmNyeXB0aW9uLmFsZ28mJihQLndvcmtib29rQWxnb3JpdGhtTmFtZT15LmVuY3J5cHRpb24uYWxnbykseS5lbmNyeXB0aW9uLmhhc2gmJihQLndvcmtib29rSGFzaFZhbHVlPXkuZW5jcnlwdGlvbi5oYXNoKSx5LmVuY3J5cHRpb24uc2Fs''@;'; put 'put ''dCYmKFAud29ya2Jvb2tTYWx0VmFsdWU9eS5lbmNyeXB0aW9uLnNhbHQpLHkuZW5jcnlwdGlvbi5zcGluJiYoUC53b3JrYm9va1NwaW5Db3VudD15LmVuY3J5cHRpb24uc3BpbikpLF9yKCJ3b3JrYm9va1Byb3RlY3Rpb24iLG51bGwsUCl9KHkuV29ya2Jvb2suUHJvdGVjdGlvbikpO3ZhciBi''@;'; put 'put ''ZT15Lldvcmtib29rJiZ5Lldvcmtib29rLlNoZWV0c3x8W10sdmU9MDtpZihiZSYmYmVbMF0mJmJlWzBdLkhpZGRlbil7Zm9yKFhbWC5sZW5ndGhdPSI8Ym9va1ZpZXdzPiIsdmU9MDt2ZSE9eS5TaGVldE5hbWVzLmxlbmd0aCYmYmVbdmVdJiZiZVt2ZV0uSGlkZGVuOysrdmUpO3ZlPT15LlNo''@;'; put 'put ''ZWV0TmFtZXMubGVuZ3RoJiYodmU9MCksWFtYLmxlbmd0aF09Jzx3b3JrYm9va1ZpZXcgZmlyc3RTaGVldD0iJyt2ZSsnIiBhY3RpdmVUYWI9IicrdmUrJyIvPicsWFtYLmxlbmd0aF09IjwvYm9va1ZpZXdzPiJ9Zm9yKFhbWC5sZW5ndGhdPSI8c2hlZXRzPiIsdmU9MDt2ZSE9eS5TaGVldE5h''@;'; put 'put ''bWVzLmxlbmd0aDsrK3ZlKXt2YXIgeWU9e25hbWU6YnIoeS5TaGVldE5hbWVzW3ZlXS5zbGljZSgwLDMxKSl9O2lmKHllLnNoZWV0SWQ9IiIrKHZlKzEpLHllWyJyOmlkIl09InJJZCIrKHZlKzEpLGJlW3ZlXSlzd2l0Y2goYmVbdmVdLkhpZGRlbil7Y2FzZSAxOnllLnN0YXRlPSJoaWRkZW4i''@;'; put 'put ''O2JyZWFrO2Nhc2UgMjp5ZS5zdGF0ZT0idmVyeUhpZGRlbiJ9WFtYLmxlbmd0aF09X3IoInNoZWV0IixudWxsLHllKX1yZXR1cm4gWFtYLmxlbmd0aF09Ijwvc2hlZXRzPiIseS5FeHRlcm5hbFdCJiZ5LkV4dGVybmFsV0IubGVuZ3RoJiYoWFtYLmxlbmd0aF09IjxleHRlcm5hbFJlZmVyZW5j''@;'; put 'put ''ZXM+IiwoeS5FeHRlcm5hbFdCfHxbXSkuZm9yRWFjaChmdW5jdGlvbihWZSx6ZSl7dmFyIFdlPWdyKEwud2JyZWxzLC0xLCJleHRlcm5hbExpbmtzL2V4dGVybmFsTGluayIrKHplKzEpKyIueG1sIixTby5YTElOSyk7WFtYLmxlbmd0aF09JzxleHRlcm5hbFJlZmVyZW5jZSByOmlkPSJySWQn''@;'; put 'put ''K1dlKyciLz4nfSksWFtYLmxlbmd0aF09IjwvZXh0ZXJuYWxSZWZlcmVuY2VzPiIpLG5lJiYoWFtYLmxlbmd0aF09IjxkZWZpbmVkTmFtZXM+Iix5Lldvcmtib29rJiZ5Lldvcmtib29rLk5hbWVzJiZ5Lldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24oVmUpe3ZhciB6ZT17bmFtZTpW''@;'; put 'put ''ZS5OYW1lfTtWZS5Db21tZW50JiYoemUuY29tbWVudD1WZS5Db21tZW50KSxudWxsIT1WZS5TaGVldCYmKHplLmxvY2FsU2hlZXRJZD0iIitWZS5TaGVldCksVmUuSGlkZGVuJiYoemUuaGlkZGVuPSIxIiksVmUuUmVmJiYoWFtYLmxlbmd0aF09X3IoImRlZmluZWROYW1lIixicihWZS5SZWYp''@;'; put 'put ''LHplKSl9KSxYW1gubGVuZ3RoXT0iPC9kZWZpbmVkTmFtZXM+IiksTCYmTC5waXZvdHMmJkwucGl2b3RzLmxlbmd0aD4wJiYoWC5wdXNoKCI8cGl2b3RDYWNoZXM+IiksTC5waXZvdHMuZm9yRWFjaChmdW5jdGlvbihWZSx6ZSl7WC5wdXNoKCc8cGl2b3RDYWNoZSBjYWNoZUlkPSInKyh6ZSsx''@;'; put 'put ''KSsnIiByOmlkPSJySWQnK1ZlWzJdKyciLz4nKX0pLFgucHVzaCgiPC9waXZvdENhY2hlcz4iKSksWC5sZW5ndGg+MiYmKFhbWC5sZW5ndGhdPSI8L3dvcmtib29rPiIsWFsxXT1YWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxYLmpvaW4oIiIpfWZ1bmN0aW9uIGNCKHksUCl7cmV0dXJuIFB8fChQ''@;'; put 'put ''PXhyKDEyNykpLFAud3JpdGVfc2hpZnQoNCx5LkhpZGRlbiksUC53cml0ZV9zaGlmdCg0LHkuaVRhYklEKSxwZyh5LnN0clJlbElELFApLEtsKHkubmFtZS5zbGljZSgwLDMxKSxQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH1mdW5jdGlvbiBzMyh5LFApe3ZhciBMPXt9O3JldHVy''@;'; put 'put ''biB5LnJlYWRfc2hpZnQoNCksTC5BcmNoSUQ9eS5yZWFkX3NoaWZ0KDQpLHkubCs9UC04LEx9ZnVuY3Rpb24gX3YoeSxQKXt2YXIgTD1jdSgpO3JldHVybiBoaShMLCJCcnRCZWdpbkJvb2siKSxoaShMLCJCcnRGaWxlVmVyc2lvbiIsZnVuY3Rpb24gRkEoeSxQKXtQfHwoUD14cigxMjcpKTtm''@;'; put 'put ''b3IodmFyIEw9MDs0IT1MOysrTClQLndyaXRlX3NoaWZ0KDQsMCk7cmV0dXJuIEtsKCJTaGVldEpTIixQKSxLbChNLnZlcnNpb24sUCksS2woTS52ZXJzaW9uLFApLEtsKCI3MjYyIixQKSxQLmxlbmd0aD5QLmw/UC5zbGljZSgwLFAubCk6UH0oKSksaGkoTCwiQnJ0V2JQcm9wIixmdW5jdGlv''@;'; put 'put ''biBQQSh5LFApe1B8fChQPXhyKDcyKSk7dmFyIEw9MDtyZXR1cm4geSYmeS5maWx0ZXJQcml2YWN5JiYoTHw9OCksUC53cml0ZV9zaGlmdCg0LEwpLFAud3JpdGVfc2hpZnQoNCwwKSxoZyh5JiZ5LkNvZGVOYW1lfHwiVGhpc1dvcmtib29rIixQKSxQLnNsaWNlKDAsUC5sKX0oeS5Xb3JrYm9v''@;'; put 'put ''ayYmeS5Xb3JrYm9vay5XQlByb3BzfHxudWxsKSksZnVuY3Rpb24gdUIoeSxQKXtpZihQLldvcmtib29rJiZQLldvcmtib29rLlNoZWV0cyl7Zm9yKHZhciBMPVAuV29ya2Jvb2suU2hlZXRzLFg9MCxuZT0tMSxmZT0tMTtYPEwubGVuZ3RoOysrWCkhTFtYXXx8IUxbWF0uSGlkZGVuJiYtMT09''@;'; put 'put ''bmU/bmU9WDoxPT1MW1hdLkhpZGRlbiYmLTE9PWZlJiYoZmU9WCk7ZmU+bmV8fChoaSh5LCJCcnRCZWdpbkJvb2tWaWV3cyIpLGhpKHksIkJydEJvb2tWaWV3IixmdW5jdGlvbiBOQSh5LFApe3JldHVybiBQfHwoUD14cigyOSkpLFAud3JpdGVfc2hpZnQoLTQsMCksUC53cml0ZV9zaGlmdCgt''@;'; put 'put ''NCw0NjApLFAud3JpdGVfc2hpZnQoNCwyODgwMCksUC53cml0ZV9zaGlmdCg0LDE3NjAwKSxQLndyaXRlX3NoaWZ0KDQsNTAwKSxQLndyaXRlX3NoaWZ0KDQseSksUC53cml0ZV9zaGlmdCg0LHkpLFAud3JpdGVfc2hpZnQoMSwxMjApLFAubGVuZ3RoPlAubD9QLnNsaWNlKDAsUC5sKTpQfShu''@;'; put 'put ''ZSkpLGhpKHksIkJydEVuZEJvb2tWaWV3cyIpKX19KEwseSksZnVuY3Rpb24gdnYoeSxQKXtoaSh5LCJCcnRCZWdpbkJ1bmRsZVNocyIpO2Zvcih2YXIgTD0wO0whPVAuU2hlZXROYW1lcy5sZW5ndGg7KytMKWhpKHksIkJydEJ1bmRsZVNoIixjQih7SGlkZGVuOlAuV29ya2Jvb2smJlAuV29y''@;'; put 'put ''a2Jvb2suU2hlZXRzJiZQLldvcmtib29rLlNoZWV0c1tMXSYmUC5Xb3JrYm9vay5TaGVldHNbTF0uSGlkZGVufHwwLGlUYWJJRDpMKzEsc3RyUmVsSUQ6InJJZCIrKEwrMSksbmFtZTpQLlNoZWV0TmFtZXNbTF19KSk7aGkoeSwiQnJ0RW5kQnVuZGxlU2hzIil9KEwseSksaGkoTCwiQnJ0RW5k''@;'; put 'put ''Qm9vayIpLEwuZW5kKCl9ZnVuY3Rpb24gSEEoeSxQLEwsWCxuZSl7cmV0dXJuKCIuYmluIj09PVAuc2xpY2UoLTQpP0tnOmhBKSh5LEwsWCxuZSl9ZnVuY3Rpb24gVkEoeSxQLEwsWCxuZSl7cmV0dXJuKCIuYmluIj09PVAuc2xpY2UoLTQpP0NDOndDKSh5LEwsWCxuZSl9ZnVuY3Rpb24gQkEo''@;'; put 'put ''eSxQLEwpe3JldHVybigiLmJpbiI9PT1QLnNsaWNlKC00KT9OVDpUOSkoeSxMKX1mdW5jdGlvbiB3Qih5LFAsTCl7cmV0dXJuKCIuYmluIj09PVAuc2xpY2UoLTQpP0V3Onh3KSh5LEwpfXZhciBrQz0vKFtcdzpdKyk9KCg/OiIpKFteIl0qKSg/OiIpfCg/OicpKFteJ10qKSg/OicpKS9nLGJ2''@;'; put 'put ''PS8oW1x3Ol0rKT0oKD86IikoPzpbXiJdKikoPzoiKXwoPzonKSg/OlteJ10qKSg/OicpKS87ZnVuY3Rpb24gbzAoeSxQKXt2YXIgTD15LnNwbGl0KC9ccysvKSxYPVtdO2lmKFB8fChYWzBdPUxbMF0pLDE9PT1MLmxlbmd0aClyZXR1cm4gWDt2YXIgZmUsYmUseWUsbmU9eS5tYXRjaChrQyk7''@;'; put 'put ''aWYobmUpZm9yKHllPTA7eWUhPW5lLmxlbmd0aDsrK3llKS0xPT09KGJlPShmZT1uZVt5ZV0ubWF0Y2goYnYpKVsxXS5pbmRleE9mKCI6IikpP1hbZmVbMV1dPWZlWzJdLnNsaWNlKDEsZmVbMl0ubGVuZ3RoLTEpOlhbInhtbG5zOiI9PT1mZVsxXS5zbGljZSgwLDYpPyJ4bWxucyIrZmVbMV0u''@;'; put 'put ''c2xpY2UoNik6ZmVbMV0uc2xpY2UoYmUrMSldPWZlWzJdLnNsaWNlKDEsZmVbMl0ubGVuZ3RoLTEpO3JldHVybiBYfWZ1bmN0aW9uIEFDKHkpe3ZhciBMPXt9O2lmKDE9PT15LnNwbGl0KC9ccysvKS5sZW5ndGgpcmV0dXJuIEw7dmFyIG5lLGZlLHZlLFg9eS5tYXRjaChrQyk7aWYoWClmb3Io''@;'; put 'put ''dmU9MDt2ZSE9WC5sZW5ndGg7Kyt2ZSktMT09PShmZT0obmU9WFt2ZV0ubWF0Y2goYnYpKVsxXS5pbmRleE9mKCI6IikpP0xbbmVbMV1dPW5lWzJdLnNsaWNlKDEsbmVbMl0ubGVuZ3RoLTEpOkxbInhtbG5zOiI9PT1uZVsxXS5zbGljZSgwLDYpPyJ4bWxucyIrbmVbMV0uc2xpY2UoNik6bmVb''@;'; put 'put ''MV0uc2xpY2UoZmUrMSldPW5lWzJdLnNsaWNlKDEsbmVbMl0ubGVuZ3RoLTEpO3JldHVybiBMfWZ1bmN0aW9uIENCKHkpe3ZhciBQPXt9O2lmKHkuRGVmYXVsdFJvd0hlaWdodCl7dmFyIEw9e2hweDo0KnBhcnNlSW50KHkuRGVmYXVsdFJvd0hlaWdodCkvM307RjkoTCksUC5yb3c9TH1pZih5''@;'; put 'put ''LkRlZmF1bHRDb2xXaWR0aCl7dmFyIFg9e3dweDo0KnBhcnNlSW50KHkuRGVmYXVsdENvbFdpZHRoKS8zfTtfMChYKSxQLmNvbD1YfXJldHVybiBQfWZ1bmN0aW9uIE1CKHksUCxMLFgpe3ZhciBuZT1YO3N3aXRjaCgoTFswXS5tYXRjaCgvZHQ6ZHQ9IihbXHcuXSspIi8pfHxbIiIsIiJdKVsx''@;'; put 'put ''XSl7Y2FzZSJib29sZWFuIjpuZT1ScihYKTticmVhaztjYXNlImkyIjpjYXNlImludCI6bmU9cGFyc2VJbnQoWCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6bmU9cGFyc2VGbG9hdChYKTticmVhaztjYXNlImRhdGUiOmNhc2UiZGF0ZVRpbWUudHoiOm5lPUZ0KFgpO2JyZWFrO2Nh''@;'; put 'put ''c2UiaTgiOmNhc2Uic3RyaW5nIjpjYXNlImZpeGVkIjpjYXNlInV1aWQiOmNhc2UiYmluLmJhc2U2NCI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImJhZCBjdXN0cHJvcDoiK0xbMF0pfXlbaHIoUCldPW5lfXZhciB5dj17MDoiTm9uZSIsMToiU2luZ2xlIiwyOiJEb3VibGUiLDMz''@;'; put 'put ''OiJTaW5nbGVBY2NvdW50aW5nIiwzNDoiRG91YmxlQWNjb3VudGluZyJ9LGpBPUVlKHl2KTtmdW5jdGlvbiBJQyh5LFAsTCxYKXtpZihYLmNlbGxTdHlsZXMpe2lmKEw9TC5yZXBsYWNlKC9ccysvZywiICIpLFAuSW50ZXJpb3Ipe3ZhciBuZT1QLkludGVyaW9yO25lLlBhdHRlcm4mJihuZS5w''@;'; put 'put ''YXR0ZXJuVHlwZT1pd1tuZS5QYXR0ZXJuXXx8bmUuUGF0dGVybiksbmUuQ29sb3ImJm5lLkNvbG9yLm1hdGNoKC8jWzAtOUEtRmEtZl0qLykmJihuZS5mZ0NvbG9yPXtyZ2I6bmUuQ29sb3Iuc2xpY2UoMSl9KX0hZnVuY3Rpb24geEIoeSl7eS5Cb3JkZXJzJiYoeS5Cb3JkZXJzLmZvckVhY2go''@;'; put 'put ''ZnVuY3Rpb24oUCl7dmFyIEw9UC5Qb3NpdGlvbi50b0xvd2VyQ2FzZSgpO3lbTF09e3N0eWxlOlJDKFAuTGluZVN0eWxlLCtQLldlaWdodCksY29sb3I6e3JnYjooUC5Db2xvcnx8IiMwMDAwMDAiKS5zbGljZSgxKX19fSksZGVsZXRlIHkuQm9yZGVycyl9KFApO3ZhciBiZSxmZT1MLm1hdGNo''@;'; put 'put ''KC88KD86XHcrOik/Rm9udFxzW14+XSo+Lyk7ZmUmJihScigoYmU9YW4oZmVbMF0pKS5Cb2xkKSYmKFAuQm9sZD0hMCksUnIoYmUuSXRhbGljKSYmKFAuSXRhbGljPSEwKSxScihiZS5TdHJpa2VUaHJvdWdoKSYmKFAuU3RyaWtlPSEwKSxiZS5TaXplJiYoUC5TaXplPStiZS5TaXplKSxQLkZv''@;'; put 'put ''bnROYW1lPWJlLkZvbnROYW1lP2JlLkZvbnROYW1lOiJBcmlhbCIsYmUuVW5kZXJsaW5lJiYoUC5VbmRlcmxpbmU9akFbYmUuVW5kZXJsaW5lXSksYmUuQ29sb3ImJihQLlJHQj1iZS5Db2xvci5zbGljZSgtNikpKSxQLkFsaWdubWVudCYmKFAuYWxpZ25tZW50PXt9LFAuQWxpZ25tZW50LlZl''@;'; put 'put ''cnRpY2FsJiYoUC5hbGlnbm1lbnQudmVydGljYWw9UC5BbGlnbm1lbnQuVmVydGljYWwudG9Mb3dlckNhc2UoKSksUC5BbGlnbm1lbnQuSG9yaXpvbnRhbCYmKFAuYWxpZ25tZW50Lmhvcml6b250YWw9UC5BbGlnbm1lbnQuSG9yaXpvbnRhbC50b0xvd2VyQ2FzZSgpKSxScihQLkFsaWdubWVu''@;'; put 'put ''dC5XcmFwVGV4dHx8IjAiKT9QLmFsaWdubWVudC53cmFwVGV4dD0hMDpudWxsPT1QLkFsaWdubWVudC5XcmFwVGV4dCYmZGVsZXRlIFAuYWxpZ25tZW50LndyYXBUZXh0LFJyKFAuQWxpZ25tZW50LlNocmlua1RvRml0fHwiMCIpJiYoUC5hbGlnbm1lbnQuc2hyaW5rVG9GaXQ9ITApLCtQLkFs''@;'; put 'put ''aWdubWVudC5JbmRlbnQmJihQLmFsaWdubWVudC5pbmRlbnQ9K1AuQWxpZ25tZW50LkluZGVudHx8MCksK1AuQWxpZ25tZW50LlJvdGF0ZSYmKFAuYWxpZ25tZW50LnRleHRSb3RhdGlvbj0rUC5BbGlnbm1lbnQuUm90YXRlfHwwKSl9eVtQLklEXT1QLCgiRGVmYXVsdCI9PVAuSUR8fCJOb3Jt''@;'; put 'put ''YWwiPT1QLk5hbWUpJiZGcChQKX1mdW5jdGlvbiBSQyh5LFApe3N3aXRjaCh5KXtjYXNlIk5vbmUiOnJldHVybiJub25lIjtjYXNlIkRhc2giOnJldHVybiJkYXNoZWQiO2Nhc2UiRG90IjpyZXR1cm4iZG90dGVkIjtjYXNlIkRhc2hEb3QiOnJldHVybiJkYXNoRG90IjtjYXNlIkRhc2hEb3RE''@;'; put 'put ''b3QiOnJldHVybiJkYXNoRG90RG90IjtjYXNlIlNsYW50RGFzaERvdCI6cmV0dXJuInNsYW50RGFzaERvdCI7Y2FzZSJEb3VibGUiOnJldHVybiJkb3VibGUiO2Nhc2UiQ29udGludW91cyI6c3dpdGNoKCtQfHwwKXtjYXNlIDA6cmV0dXJuImhhaXIiO2Nhc2UgMTpyZXR1cm4idGhpbiI7Y2Fz''@;'; put 'put ''ZSAyOnJldHVybiJtZWRpdW0iO2Nhc2UgMzpyZXR1cm4idGhpY2sifXJldHVybiJ0aGluIn1yZXR1cm4geX1mdW5jdGlvbiB6QSh5LFAsTCxYLG5lLGZlLGJlLHZlLHllLFZlKXt2YXIgemU9IkdlbmVyYWwiLFdlPVguU3R5bGVJRCxydD17fTtWZT1WZXx8e307dmFyIGx0PVtdLEN0PTA7Zm9y''@;'; put 'put ''KHZvaWQgMD09PVdlJiZ2ZSYmKFdlPXZlLlN0eWxlSUQpLHZvaWQgMD09PVdlJiZiZSYmKFdlPWJlLlN0eWxlSUQpO3ZvaWQgMCE9PWZlW1dlXTspe3ZhciBhdD1mZVtXZV07aWYoIkdlbmVyYWwiPT16ZSYmYXQubmYmJih6ZT1mZVtXZV0ubmYpLGF0LkludGVyaW9yJiZsdC5wdXNoKGZlW1dl''@;'; put 'put ''XS5JbnRlcmlvciksYXQuYWxpZ25tZW50JiYocnQuYWxpZ25tZW50fHwocnQuYWxpZ25tZW50PUt0KGF0LmFsaWdubWVudCkpKSxudWxsPT1ydC5ib2xkJiZhdC5Cb2xkJiYocnQuYm9sZD0hMCksbnVsbD09cnQuaXRhbGljJiZhdC5JdGFsaWMmJihydC5pdGFsaWM9ITApLG51bGw9PXJ0LnN0''@;'; put 'put ''cmlrZSYmYXQuU3RyaWtlJiYocnQuc3RyaWtlPSEwKSxudWxsPT1ydC5zeiYmYXQuU2l6ZSYmKHJ0LnN6PWF0LlNpemUpLG51bGw9PXJ0Lm5hbWUmJmF0LkZvbnROYW1lJiYocnQubmFtZT1hdC5Gb250TmFtZSksbnVsbD09cnQudW5kZXJsaW5lJiZhdC5VbmRlcmxpbmUmJihydC51bmRlcmxp''@;'; put 'put ''bmU9YXQuVW5kZXJsaW5lKSxudWxsPT1ydC5jb2xvciYmYXQuUkdCJiYocnQuY29sb3I9e3JnYjphdC5SR0J9KSxbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLmZvckVhY2goZnVuY3Rpb24oRHQpe251bGw9PXJ0W0R0XSYmYXRbRHRdJiYocnRbRHRdPUt0KGF0W0R0XSkpfSksIkRl''@;'; put 'put ''ZmF1bHQiPT1XZSlicmVhaztXZT1hdC5QYXJlbnR8fCJEZWZhdWx0In1ydC5uYW1lfHwocnQubmFtZT1mZS5EZWZhdWx0JiZmZS5EZWZhdWx0LkZvbnROYW1lfHwiQXJpYWwiKSxydC5zenx8KHJ0LnN6PWZlLkRlZmF1bHQmJmZlLkRlZmF1bHQuU2l6ZXx8MTIpO3ZhciB2dD0iIjtpZih5fHxY''@;'; put 'put ''LkZvcm11bGF8fCJTdHJpbmciPT1MLlR5cGV8fCJOdW1iZXIiPT1MLlR5cGUpc3dpdGNoKEwuVHlwZSl7Y2FzZSJCb29sZWFuIjpYLnQ9ImIiLFgudj1Scih5KTticmVhaztjYXNlIlN0cmluZyI6WC50PSJzIix2dD1mbyhocih5KSksWC52PXkuaW5kZXhPZigiPCIpPi0xP2hyKFB8fHkpLnJl''@;'; put 'put ''cGxhY2UoLzxbXl0qPz4vZywiIik6dnQseS5pbmRleE9mKCI8Iik+LTEmJihYLlI9azEuaHRtbF90b19ycyhocih5KSkpO2JyZWFrO2Nhc2UiRGF0ZVRpbWUiOiJaIiE9eS5zbGljZSgtMSkmJih5Kz0iWiIpLFgudj0oRnQoeSktbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMCkpKS84NjRl''@;'; put 'put ''NSxYLnYhPVgudj9YLnY9aHIoeSk6WC52PDYwJiYoWC52PVgudi0xKSwoIXplfHwiR2VuZXJhbCI9PXplKSYmKHplPSJ5eXl5LW1tLWRkIik7Y2FzZSJOdW1iZXIiOnZvaWQgMD09PVgudiYmKFgudj0reSksWC50fHwoWC50PSJuIik7YnJlYWs7Y2FzZSJFcnJvciI6WC50PSJlIixYLnY9QmZb''@;'; put 'put ''eV0sITEhPT1WZS5jZWxsVGV4dCYmKFgudz15KTticmVhaztkZWZhdWx0OiIiPT15JiYiIj09UD9YLnQ9InoiOihYLnQ9InMiLHZ0PWZvKGhyKHkpKSxYLnY9eS5pbmRleE9mKCI8Iik+LTE/aHIoUHx8eSkucmVwbGFjZSgvPFteXSo/Pi9nLCIiKTp2dCx5LmluZGV4T2YoIjwiKT4tMSYmKFgu''@;'; put 'put ''Uj1rMS5odG1sX3RvX3JzKGhyKHkpKSkpfWVsc2UgWC50PSJ6IixkZWxldGUgWC52O2lmKGZ1bmN0aW9uIERDKHksUCxMKXtpZigieiIhPT15LnQpe2lmKCFMfHwhMSE9PUwuY2VsbFRleHQpdHJ5e3kudz0iZSI9PT15LnQ/eS53fHxGbFt5LnZdOiJHZW5lcmFsIj09PVA/Im4iPT09eS50Pygw''@;'; put 'put ''fHkudik9PT15LnY/dy5fZ2VuZXJhbF9pbnQoeS52KTp3Ll9nZW5lcmFsX251bSh5LnYpOncuX2dlbmVyYWwoeS52KTpmdW5jdGlvbiBTQih5LFApe3ZhciBMPXRlW3ldfHxocih5KTtyZXR1cm4iR2VuZXJhbCI9PT1MP3cuX2dlbmVyYWwoUCk6dy5mb3JtYXQoTCxQKX0oUHx8IkdlbmVyYWwi''@;'; put 'put ''LHkudil9Y2F0Y2goZmUpe2lmKEwuV1RGKXRocm93IGZlfXRyeXt2YXIgWD10ZVtQXXx8UHx8IkdlbmVyYWwiO2lmKEwuY2VsbE5GJiYoeS56PVgpLEwuY2VsbERhdGVzJiYibiI9PXkudCYmdy5pc19kYXRlKFgpKXt2YXIgbmU9dy5wYXJzZV9kYXRlX2NvZGUoeS52KTtuZSYmKHkudD0iZCIs''@;'; put 'put ''eS52PW5ldyBEYXRlKG5lLnksbmUubS0xLG5lLmQsbmUuSCxuZS5NLG5lLlMsbmUudSkpfX1jYXRjaChmZSl7aWYoTC5XVEYpdGhyb3cgZmV9fX0oWCx6ZSxWZSksITEhPT1WZS5jZWxsRm9ybXVsYSlpZihYLkZvcm11bGEpe3ZhciBQdD1ocihYLkZvcm11bGEpOzYxPT1QdC5jaGFyQ29kZUF0''@;'; put 'put ''KDApJiYoUHQ9UHQuc2xpY2UoMSkpLFguZj16ZyhQdCxuZSksZGVsZXRlIFguRm9ybXVsYSwiUkMiPT1YLkFycmF5UmFuZ2U/WC5GPXpnKCJSQzpSQyIsbmUpOlguQXJyYXlSYW5nZSYmKFguRj16ZyhYLkFycmF5UmFuZ2UsbmUpLHllLnB1c2goW1JvKFguRiksWC5GXSkpfWVsc2UgZm9yKEN0''@;'; put 'put ''PTA7Q3Q8eWUubGVuZ3RoOysrQ3QpbmUucj49eWVbQ3RdWzBdLnMuciYmbmUucjw9eWVbQ3RdWzBdLmUuciYmbmUuYz49eWVbQ3RdWzBdLnMuYyYmbmUuYzw9eWVbQ3RdWzBdLmUuYyYmKFguRj15ZVtDdF1bMV0pO2lmKFZlLmNlbGxTdHlsZXMmJihsdC5mb3JFYWNoKGZ1bmN0aW9uKER0KXsh''@;'; put 'put ''cnQucGF0dGVyblR5cGUmJkR0LnBhdHRlcm5UeXBlJiYocnQucGF0dGVyblR5cGU9RHQucGF0dGVyblR5cGUpLCFydC5mZ0NvbG9yJiZEdC5mZ0NvbG9yJiYocnQuZmdDb2xvcj1EdC5mZ0NvbG9yKX0pLFgucz1ydCksdm9pZCAwIT09WC5TdHlsZUlEJiYoWC5peGZlPVguU3R5bGVJRCksWC5S''@;'; put 'put ''JiZYLnMpe3ZhciBrdD1LdChYLnMpO2RlbGV0ZSBrdC5ib2xkLGRlbGV0ZSBrdC5pdGFsaWMsZGVsZXRlIGt0LnVuZGVybGluZSxkZWxldGUga3Quc3RyaWtlLFguUi5mb3JFYWNoKGZ1bmN0aW9uKER0KXtEdC5zPUJ0KEt0KGt0KSxEdC5zKX0pfX1mdW5jdGlvbiBFQih5KXt5LnQ9eS52fHwi''@;'; put 'put ''Iix5LnQ9eS50LnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLHkudj15Lnc9eS5peGZlPXZvaWQgMH1mdW5jdGlvbiBMQyh5KXtpZih1ZSYmQnVmZmVyLmlzQnVmZmVyKHkpKXJldHVybiB5LnRvU3RyaW5nKCJ1dGY4Iik7aWYoInN0cmluZyI9PXR5cGVvZiB5KXJl''@;'; put 'put ''dHVybiB5O2lmKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmeSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIFlpKEgoQyh5KSkpO3Rocm93IG5ldyBFcnJvcigiQmFkIGlucHV0IGZvcm1hdDogZXhwZWN0ZWQgQnVmZmVyIG9yIHN0cmluZyIpfXZhciBYZz0vPChcLz8pKFteXHM/PjwhXC86''@;'; put 'put ''XSo6fCkoW15ccz88PjpcL1xbXSspKD86W1xzPzo8XC9dW14+XSopPz4vZ207ZnVuY3Rpb24gRDYoeSxQKXt2YXIgTD1QfHx7fSxYPVUoTEMoeSkpOygiYmluYXJ5Ij09TC50eXBlfHwiYXJyYXkiPT1MLnR5cGV8fCJiYXNlNjQiPT1MLnR5cGUpJiYoWD10eXBlb2YgY3B0YWJsZTwidSI/Y3B0''@;'; put 'put ''YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsQihYKSk6WWkoWCkpO3ZhciBuZT1YLnNsaWNlKDAsMTAyNCkudG9Mb3dlckNhc2UoKSxmZT0hMTtpZigoMTAyMyZuZS5pbmRleE9mKCI+IikpPk1hdGgubWluKDEwMjMmbmUuaW5kZXhPZigiLCIpLDEwMjMmbmUuaW5kZXhPZigiOyIpKSl7dmFyIGJl''@;'; put 'put ''PUt0KEwpO3JldHVybiBiZS50eXBlPSJzdHJpbmciLFdmLnRvX3dvcmtib29rKFgsYmUpfWlmKC0xPT1uZS5pbmRleE9mKCI8P3htbCIpJiZbImh0bWwiLCJ0YWJsZSIsImhlYWQiLCJtZXRhIiwic2NyaXB0Iiwic3R5bGUiLCJkaXYiXS5mb3JFYWNoKGZ1bmN0aW9uKFJjKXtuZS5pbmRleE9m''@;'; put 'put ''KCI8IitSYyk+PTAmJihmZT0hMCl9KSxmZSlyZXR1cm4gazEudG9fd29ya2Jvb2soWCxMKTt2YXIgdmUsVmUseWU9W107bnVsbCE9ZWUmJm51bGw9PUwuZGVuc2UmJihMLmRlbnNlPWVlKTt2YXIgZnIsemU9e30sV2U9W10scnQ9TC5kZW5zZT9bXTp7fSxsdD0iIixDdD17fSxhdD17fSx2dD17''@;'; put 'put ''fSxQdD1vMCgnPERhdGEgc3M6VHlwZT0iU3RyaW5nIj4nKSxrdD0wLER0PTAsWnQ9MCxnbj17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSwkbj17fSxjbj17fSxYbj0iIixCbj0wLERuPVtdLFFuPXt9LGVyPXt9LHpuPTAsS3I9W10saWk9e30sRWk9W10sT2k9e30sdGk9W10sQW49ITEs''@;'; put 'put ''d3I9W10scnI9W10sRW49e30sQ3I9MCxiaT0wLHFyPXtTaGVldHM6W10sV0JQcm9wczp7ZGF0ZTE5MDQ6ITF9fSxVaT17fTtYZy5sYXN0SW5kZXg9MCxYPVgucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpO2Zvcih2YXIgTG89IiI7dmU9WGcuZXhlYyhYKTspc3dpdGNoKHZlWzNd''@;'; put 'put ''PShMbz12ZVszXSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJkYXRhIjppZigiZGF0YSI9PUxvKXtpZigiLyI9PT12ZVsxXSl7aWYoKFZlPXllLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK1ZlLmpvaW4oInwiKSl9ZWxzZSIvIiE9PXZlWzBdLmNoYXJBdCh2''@;'; put 'put ''ZVswXS5sZW5ndGgtMikmJnllLnB1c2goW3ZlWzNdLCEwXSk7YnJlYWt9aWYoeWVbeWUubGVuZ3RoLTFdWzFdKWJyZWFrOyIvIj09PXZlWzFdP3pBKFguc2xpY2Uoa3QsdmUuaW5kZXgpLFhuLFB0LCJjb21tZW50Ij09eWVbeWUubGVuZ3RoLTFdWzBdP09pOmF0LHtjOkR0LHI6WnR9LCRuLHRp''@;'; put 'put ''W0R0XSx2dCx3cixMKTooWG49IiIsUHQ9bzAodmVbMF0pLGt0PXZlLmluZGV4K3ZlWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjppZigiLyI9PT12ZVsxXXx8Ii8+Ij09PXZlWzBdLnNsaWNlKC0yKSl7aWYoIi8+Ij09PXZlWzBdLnNsaWNlKC0yKSl7aWYoKGF0PUFDKHZlWzBdKSkuSW5k''@;'; put 'put ''ZXgmJihEdD0rYXQuSW5kZXgtMSksRHQ8Z24ucy5jJiYoZ24ucy5jPUR0KSxEdD5nbi5lLmMmJihnbi5lLmM9RHQpLEVpPVtdLCFMLnNoZWV0U3R1YnMpeysrRHQ7YnJlYWt9ekEoIiIsIiIse30sImNvbW1lbnQiPT15ZVt5ZS5sZW5ndGgtMV1bMF0/T2k6YXQse2M6RHQscjpadH0sJG4sdGlb''@;'; put 'put ''RHRdLHZ0LHdyLEwpfWlmKEVpLmxlbmd0aD4wJiYoYXQuYz1FaSksKCFMLnNoZWV0Um93c3x8TC5zaGVldFJvd3M+WnQpJiYodm9pZCAwIT09YXQudnx8TC5zaGVldFN0dWJzKSYmKEwuZGVuc2U/KHJ0W1p0XXx8KHJ0W1p0XT1bXSkscnRbWnRdW0R0XT1hdCk6cnRbeW8oRHQpK2JzKFp0KV09''@;'; put 'put ''YXQpLGF0LkhSZWYmJihhdC5sPXtUYXJnZXQ6aHIoYXQuSFJlZil9LGF0LkhSZWZTY3JlZW5UaXAmJihhdC5sLlRvb2x0aXA9YXQuSFJlZlNjcmVlblRpcCksZGVsZXRlIGF0LkhSZWYsZGVsZXRlIGF0LkhSZWZTY3JlZW5UaXApLChhdC5NZXJnZUFjcm9zc3x8YXQuTWVyZ2VEb3duKSYmKENy''@;'; put 'put ''PUR0KygwfHBhcnNlSW50KGF0Lk1lcmdlQWNyb3NzLDEwKSksYmk9WnQrKDB8cGFyc2VJbnQoYXQuTWVyZ2VEb3duLDEwKSksKENyPkR0fHxiaT5adCkmJkRuLnB1c2goe3M6e2M6RHQscjpadH0sZTp7YzpDcixyOmJpfX0pKSxMLnNoZWV0U3R1YnMpaWYoYXQuTWVyZ2VBY3Jvc3N8fGF0Lk1l''@;'; put 'put ''cmdlRG93bil7Zm9yKHZhciBJaT1EdDtJaTw9Q3I7KytJaSlmb3IodmFyIHNzPVp0O3NzPD1iaTsrK3NzKShJaT5EdHx8c3M+WnQpJiYoTC5kZW5zZT8ocnRbc3NdfHwocnRbc3NdPVtdKSxydFtzc11bSWldPXt0OiJ6In0pOnJ0W3lvKElpKSticyhzcyldPXt0OiJ6In0pO0R0PUNyKzF9ZWxz''@;'; put 'put ''ZSsrRHQ7ZWxzZSBhdC5NZXJnZUFjcm9zcz9EdD1DcisxOisrRHR9ZWxzZShhdD1BQyh2ZVswXSkpLkluZGV4JiYoRHQ9K2F0LkluZGV4LTEpLER0PGduLnMuYyYmKGduLnMuYz1EdCksRHQ+Z24uZS5jJiYoZ24uZS5jPUR0KSwiLz4iPT09dmVbMF0uc2xpY2UoLTIpJiYrK0R0LEVpPVtdO2Jy''@;'; put 'put ''ZWFrO2Nhc2Uicm93IjoiLyI9PT12ZVsxXXx8Ii8+Ij09PXZlWzBdLnNsaWNlKC0yKT8oWnQ8Z24ucy5yJiYoZ24ucy5yPVp0KSxadD5nbi5lLnImJihnbi5lLnI9WnQpLCIvPiI9PT12ZVswXS5zbGljZSgtMikmJih2dD1vMCh2ZVswXSkpLkluZGV4JiYoWnQ9K3Z0LkluZGV4LTEpLER0PTAs''@;'; put 'put ''KytadCk6KCh2dD1vMCh2ZVswXSkpLkluZGV4JiYoWnQ9K3Z0LkluZGV4LTEpLEVuPXt9LCgiMCI9PXZ0LkF1dG9GaXRIZWlnaHR8fHZ0LkhlaWdodCkmJihFbi5ocHQ9cGFyc2VGbG9hdCh2dC5IZWlnaHQpLEVuLmhweD1jZChFbi5ocHQpLHJyW1p0XT1FbiksIjEiPT12dC5IaWRkZW4mJihF''@;'; put 'put ''bi5oaWRkZW49ITAscnJbWnRdPUVuKSk7YnJlYWs7Y2FzZSJ3b3Jrc2hlZXQiOmlmKCIvIj09PXZlWzFdKXtpZigoVmU9eWUucG9wKCkpWzBdIT09dmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrVmUuam9pbigifCIpKTtXZS5wdXNoKGx0KSxnbi5zLnI8PWduLmUuciYmZ24u''@;'; put 'put ''cy5jPD1nbi5lLmMmJihydFsiIXJlZiJdPURpKGduKSxMLnNoZWV0Um93cyYmTC5zaGVldFJvd3M8PWduLmUuciYmKHJ0WyIhZnVsbHJlZiJdPXJ0WyIhcmVmIl0sZ24uZS5yPUwuc2hlZXRSb3dzLTEscnRbIiFyZWYiXT1EaShnbikpKSxEbi5sZW5ndGgmJihydFsiIW1lcmdlcyJdPURuKSx0''@;'; put 'put ''aS5sZW5ndGg+MCYmKHJ0WyIhY29scyJdPXRpKSxyci5sZW5ndGg+MCYmKHJ0WyIhcm93cyJdPXJyKSxDdCYmKHJ0WyIhc2hlZXRGb3JtYXQiXT1DQihDdCkpLHplW2x0XT1ydH1lbHNlIGduPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LFp0PUR0PTAseWUucHVzaChbdmVbM10sITFd''@;'; put 'put ''KSxWZT1vMCh2ZVswXSksbHQ9aHIoVmUuTmFtZSkscnQ9TC5kZW5zZT9bXTp7fSxEbj1bXSx3cj1bXSxycj1bXSxxci5TaGVldHMucHVzaChVaT17bmFtZTpsdCxIaWRkZW46MH0pO2JyZWFrO2Nhc2UidGFibGUiOmlmKCIvIj09PXZlWzFdKXtpZigoVmU9eWUucG9wKCkpWzBdIT09dmVbM10p''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrVmUuam9pbigifCIpKX1lbHNle2lmKCIvPiI9PXZlWzBdLnNsaWNlKC0yKSlicmVhaztDdD1vMCh2ZVswXSkseWUucHVzaChbdmVbM10sITFdKSx0aT1bXSxBbj0hMX1icmVhaztjYXNlInN0eWxlIjoiLyI9PT12ZVsxXT9JQygkbixjbixY''@;'; put 'put ''bixMKTooY249bzAodmVbMF0pLFhuPSIiKTticmVhaztjYXNlIm51bWJlcmZvcm1hdCI6Y24ubmY9aHIobzAodmVbMF0pLkZvcm1hdHx8IkdlbmVyYWwiKSx0ZVtjbi5uZl0mJihjbi5uZj10ZVtjbi5uZl0pO2Zvcih2YXIgdW89MDszOTIhPXVvJiZ3Ll90YWJsZVt1b10hPWNuLm5mOysrdW8p''@;'; put 'put ''O2lmKDM5Mj09dW8pZm9yKHVvPTU3OzM5MiE9dW87Kyt1bylpZihudWxsPT13Ll90YWJsZVt1b10pe3cubG9hZChjbi5uZix1byk7YnJlYWt9YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKCJ0YWJsZSIhPT15ZVt5ZS5sZW5ndGgtMV1bMF18fCIvIj09PXZlWzFdKWJyZWFrO2lmKChmcj1vMCh2ZVsw''@;'; put 'put ''XSkpLkhpZGRlbiYmKGZyLmhpZGRlbj0hMCxkZWxldGUgZnIuSGlkZGVuKSxmci5XaWR0aD9mci53cHg9NCpwYXJzZUludChmci5XaWR0aCwxMCkvMzorZnIuQXV0b0ZpdFdpZHRoJiYoZnIuYXV0bz0xKSwhQW4mJmZyLndweD4xMCl7QW49ITAsVmw9QlQ7Zm9yKHZhciBObz0wO05vPHRpLmxl''@;'; put 'put ''bmd0aDsrK05vKXRpW05vXSYmXzAodGlbTm9dKX1BbiYmXzAoZnIpLHRpW2ZyLkluZGV4LTF8fHRpLmxlbmd0aF09ZnI7Zm9yKHZhciBFbz0wO0VvPCtmci5TcGFuOysrRW8pdGlbdGkubGVuZ3RoXT1LdChmcik7YnJlYWs7Y2FzZSJuYW1lZHJhbmdlIjppZigiLyI9PT12ZVsxXSlicmVhaztx''@;'; put 'put ''ci5OYW1lc3x8KHFyLk5hbWVzPVtdKTt2YXIgYWk9YW4odmVbMF0pLEtzPXtOYW1lOmFpLk5hbWUsUmVmOnpnKGFpLlJlZmVyc1RvLnNsaWNlKDEpLHtyOjAsYzowfSl9O3FyLlNoZWV0cy5sZW5ndGg+MCYmKEtzLlNoZWV0PXFyLlNoZWV0cy5sZW5ndGgtMSkscXIuTmFtZXMucHVzaChLcyk7''@;'; put 'put ''YnJlYWs7Y2FzZSJuYW1lZGNlbGwiOmNhc2UiYiI6Y2FzZSJpIjpjYXNlInUiOmNhc2UicyI6Y2FzZSJlbSI6Y2FzZSJoMiI6Y2FzZSJoMyI6Y2FzZSJzdWIiOmNhc2Uic3VwIjpjYXNlInNwYW4iOmNhc2UicHJvdGVjdGlvbiI6Y2FzZSJwYXJhZ3JhcGhzIjpjYXNlIm5hbWUiOmJyZWFrO2Nh''@;'; put 'put ''c2UiYWxpZ25tZW50IjppZighTC5jZWxsU3R5bGVzfHwiLyI9PT12ZVsxXSlicmVhaztjbi5BbGlnbm1lbnQ9bzAodmVbMF0pO2JyZWFrO2Nhc2UiYm9yZGVycyI6Ii8iIT09dmVbMV0mJihjbi5Cb3JkZXJzPVtdKTticmVhaztjYXNlImJvcmRlciI6aWYoIi8iPT09dmVbMV0pYnJlYWs7Y24u''@;'; put 'put ''Qm9yZGVyc3x8KGNuLkJvcmRlcnM9W10pLGNuLkJvcmRlcnMucHVzaChvMCh2ZVswXSkpO2JyZWFrO2Nhc2UiZm9udCI6aWYoIi8+Ij09PXZlWzBdLnNsaWNlKC0yKSl7WG4rPXZlWzBdO2JyZWFrfSIvIj09PXZlWzFdP1huKz1YLnNsaWNlKEJuLHZlLmluZGV4K3ZlWzBdLmxlbmd0aCk6Qm49''@;'; put 'put ''dmUuaW5kZXg7YnJlYWs7Y2FzZSJpbnRlcmlvciI6aWYoIUwuY2VsbFN0eWxlc3x8Ii8iPT09dmVbMV0pYnJlYWs7Y24uSW50ZXJpb3I9bzAodmVbMF0pO2JyZWFrO2Nhc2UiYXV0aG9yIjpjYXNlInRpdGxlIjpjYXNlImRlc2NyaXB0aW9uIjpjYXNlImNyZWF0ZWQiOmNhc2Uia2V5d29yZHMi''@;'; put 'put ''OmNhc2Uic3ViamVjdCI6Y2FzZSJjYXRlZ29yeSI6Y2FzZSJjb21wYW55IjpjYXNlImxhc3RhdXRob3IiOmNhc2UibGFzdHNhdmVkIjpjYXNlImxhc3RwcmludGVkIjpjYXNlInZlcnNpb24iOmNhc2UicmV2aXNpb24iOmNhc2UidG90YWx0aW1lIjpjYXNlImh5cGVybGlua2Jhc2UiOmNhc2Ui''@;'; put 'put ''bWFuYWdlciI6Y2FzZSJjb250ZW50c3RhdHVzIjpjYXNlImlkZW50aWZpZXIiOmNhc2UibGFuZ3VhZ2UiOmNhc2UiYXBwbmFtZSI6aWYoIi8+Ij09PXZlWzBdLnNsaWNlKC0yKSlicmVhazsiLyI9PT12ZVsxXT9qZihRbixMbyxYLnNsaWNlKHpuLHZlLmluZGV4KSk6em49dmUuaW5kZXgrdmVb''@;'; put 'put ''MF0ubGVuZ3RoO2JyZWFrO2Nhc2Uic3R5bGVzIjpjYXNlIndvcmtib29rIjppZigiLyI9PT12ZVsxXSl7aWYoKFZlPXllLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK1ZlLmpvaW4oInwiKSl9ZWxzZSB5ZS5wdXNoKFt2ZVszXSwhMV0pO2JyZWFrO2Nh''@;'; put 'put ''c2UiY29tbWVudCI6aWYoIi8iPT09dmVbMV0pe2lmKChWZT15ZS5wb3AoKSlbMF0hPT12ZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitWZS5qb2luKCJ8IikpO0VCKE9pKSxFaS5wdXNoKE9pKX1lbHNlIHllLnB1c2goW3ZlWzNdLCExXSksT2k9e2E6KFZlPW8wKHZlWzBdKSku''@;'; put 'put ''QXV0aG9yfTticmVhaztjYXNlImF1dG9maWx0ZXIiOmlmKCIvIj09PXZlWzFdKXtpZigoVmU9eWUucG9wKCkpWzBdIT09dmVbM10pdGhyb3cgbmV3IEVycm9yKCJCYWQgc3RhdGU6ICIrVmUuam9pbigifCIpKX1lbHNlIGlmKCIvIiE9PXZlWzBdLmNoYXJBdCh2ZVswXS5sZW5ndGgtMikpe3Zh''@;'; put 'put ''ciBNbj1vMCh2ZVswXSk7cnRbIiFhdXRvZmlsdGVyIl09e3JlZjp6ZyhNbi5SYW5nZSkucmVwbGFjZSgvXCQvZywiIil9LHllLnB1c2goW3ZlWzNdLCEwXSl9YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYocnRbIiF2YWxpZGF0aW9ucyJdfHwocnRbIiF2YWxpZGF0aW9ucyJdPVtdKSwi''@;'; put 'put ''LyI9PT12ZVsxXSl7aWYoKFZlPXllLnBvcCgpKVswXSE9PXZlWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK1ZlLmpvaW4oInwiKSl9ZWxzZSIvIiE9PXZlWzBdLmNoYXJBdCh2ZVswXS5sZW5ndGgtMikmJnllLnB1c2goW3ZlWzNdLCEwXSksaWk9e307YnJlYWs7Y2FzZSJwaXhl''@;'; put 'put ''bHNwZXJpbmNoIjppZigiLyI9PT12ZVsxXSl7dmFyIHlzPStYLnNsaWNlKGt0LHZlLmluZGV4KTsoNzI9PXlzfHw5Nj09eXMpJiZEMih5cyl9ZWxzZSBrdD12ZS5pbmRleCt2ZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJjb21wb25lbnRvcHRpb25zIjpjYXNlImRvY3VtZW50cHJvcGVydGllcyI6''@;'; put 'put ''Y2FzZSJjdXN0b21kb2N1bWVudHByb3BlcnRpZXMiOmNhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6Y2FzZSJwaXZvdHRhYmxlIjpjYXNlInBpdm90Y2FjaGUiOmNhc2UibmFtZXMiOmNhc2UibWFwaW5mbyI6Y2FzZSJwYWdlYnJlYWtzIjpjYXNlInF1ZXJ5dGFibGUiOmNhc2Uic29ydGlu''@;'; put 'put ''ZyI6Y2FzZSJzY2hlbWEiOmNhc2UiY29uZGl0aW9uYWxmb3JtYXR0aW5nIjpjYXNlInNtYXJ0dGFndHlwZSI6Y2FzZSJzbWFydHRhZ3MiOmNhc2UiZXhjZWx3b3JrYm9vayI6Y2FzZSJ3b3JrYm9va29wdGlvbnMiOmNhc2Uid29ya3NoZWV0b3B0aW9ucyI6aWYoIi8iPT09dmVbMV0pe2lmKChW''@;'; put 'put ''ZT15ZS5wb3AoKSlbMF0hPT12ZVszXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitWZS5qb2luKCJ8IikpfWVsc2UiLyIhPT12ZVswXS5jaGFyQXQodmVbMF0ubGVuZ3RoLTIpJiZ5ZS5wdXNoKFt2ZVszXSwhMF0pO2JyZWFrO2RlZmF1bHQ6aWYoMD09eWUubGVuZ3RoJiYiZG9jdW1l''@;'; put 'put ''bnQiPT12ZVszXXx8MD09eWUubGVuZ3RoJiYidW9mIj09dmVbM10pcmV0dXJuIGlEKFgsTCk7dmFyIHVyPSEwO3N3aXRjaCh5ZVt5ZS5sZW5ndGgtMV1bMF0pe2Nhc2Uib2ZmaWNlZG9jdW1lbnRzZXR0aW5ncyI6c3dpdGNoKHZlWzNdKXtjYXNlImFsbG93cG5nIjpjYXNlInJlbW92ZXBlcnNv''@;'; put 'put ''bmFsaW5mb3JtYXRpb24iOmNhc2UiZG93bmxvYWRjb21wb25lbnRzIjpjYXNlImxvY2F0aW9ub2Zjb21wb25lbnRzIjpjYXNlImNvbG9ycyI6Y2FzZSJjb2xvciI6Y2FzZSJpbmRleCI6Y2FzZSJyZ2IiOmNhc2UidGFyZ2V0c2NyZWVuc2l6ZSI6Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpi''@;'; put 'put ''cmVhaztkZWZhdWx0OnVyPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNoKHZlWzNdKXtjYXNlInRvb2xiYXIiOmNhc2UiaGlkZW9mZmljZWxvZ28iOmNhc2Uic3ByZWFkc2hlZXRhdXRvZml0IjpjYXNlImxhYmVsIjpjYXNlImNhcHRpb24iOmNhc2UibWF4aGVpZ2h0Ijpj''@;'; put 'put ''YXNlIm1heHdpZHRoIjpjYXNlIm5leHRzaGVldG51bWJlciI6YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlImV4Y2Vsd29ya2Jvb2siOnN3aXRjaCh2ZVszXSl7Y2FzZSJkYXRlMTkwNCI6cXIuV0JQcm9wcy5kYXRlMTkwND0hMDticmVhaztjYXNlIndpbmRvd2hlaWdodCI6Y2FzZSJ3''@;'; put 'put ''aW5kb3d3aWR0aCI6Y2FzZSJ3aW5kb3d0b3B4IjpjYXNlIndpbmRvd3RvcHkiOmNhc2UidGFicmF0aW8iOmNhc2UicHJvdGVjdHN0cnVjdHVyZSI6Y2FzZSJwcm90ZWN0d2luZG93IjpjYXNlInByb3RlY3R3aW5kb3dzIjpjYXNlImFjdGl2ZXNoZWV0IjpjYXNlImRpc3BsYXlpbmtub3RlcyI6''@;'; put 'put ''Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6Y2FzZSJzdXBib29rIjpjYXNlInNoZWV0bmFtZSI6Y2FzZSJzaGVldGluZGV4IjpjYXNlInNoZWV0aW5kZXhmaXJzdCI6Y2FzZSJzaGVldGluZGV4bGFzdCI6Y2FzZSJkbGwiOmNhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6Y2FzZSJkb25vdHNh''@;'; put 'put ''dmVsaW5rdmFsdWVzIjpjYXNlIml0ZXJhdGlvbiI6Y2FzZSJtYXhpdGVyYXRpb25zIjpjYXNlIm1heGNoYW5nZSI6Y2FzZSJwYXRoIjpjYXNlInhjdCI6Y2FzZSJjb3VudCI6Y2FzZSJzZWxlY3RlZHNoZWV0cyI6Y2FzZSJjYWxjdWxhdGlvbiI6Y2FzZSJ1bmNhbGNlZCI6Y2FzZSJzdGFydHVw''@;'; put 'put ''cHJvbXB0IjpjYXNlImNybiI6Y2FzZSJleHRlcm5uYW1lIjpjYXNlImZvcm11bGEiOmNhc2UiY29sZmlyc3QiOmNhc2UiY29sbGFzdCI6Y2FzZSJ3YW50YWR2aXNlIjpjYXNlImJvb2xlYW4iOmNhc2UiZXJyb3IiOmNhc2UidGV4dCI6Y2FzZSJvbGUiOmNhc2Uibm9hdXRvcmVjb3ZlciI6Y2Fz''@;'; put 'put ''ZSJwdWJsaXNob2JqZWN0cyI6Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmNhc2UibnVtYmVyIjpjYXNlInJlZm1vZGVyMWMxIjpjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKHZlWzNd''@;'; put 'put ''KXtjYXNlIm93Y3ZlcnNpb24iOmNhc2UiaGVpZ2h0IjpjYXNlIndpZHRoIjpicmVhaztkZWZhdWx0OnVyPSExfWJyZWFrO2Nhc2Uid29ya3NoZWV0b3B0aW9ucyI6c3dpdGNoKHZlWzNdKXtjYXNlInZpc2libGUiOmlmKCIvPiIhPT12ZVswXS5zbGljZSgtMikpaWYoIi8iPT09dmVbMV0pc3dp''@;'; put 'put ''dGNoKFguc2xpY2Uoem4sdmUuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjpVaS5IaWRkZW49MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6VWkuSGlkZGVuPTJ9ZWxzZSB6bj12ZS5pbmRleCt2ZVswXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOnJ0WyIhbWFyZ2lucyJdfHxuMyhy''@;'; put 'put ''dFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLHJ0WyIhbWFyZ2lucyJdLmhlYWRlcj1hbih2ZVswXSkuTWFyZ2luO2JyZWFrO2Nhc2UiZm9vdGVyIjpydFsiIW1hcmdpbnMiXXx8bjMocnRbIiFtYXJnaW5zIl09e30sInhsbWwiKSxydFsiIW1hcmdpbnMiXS5mb290ZXI9YW4odmVbMF0pLk1hcmdp''@;'; put 'put ''bjticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgbGw9YW4odmVbMF0pO3J0WyIhbWFyZ2lucyJdfHxuMyhydFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGxsLlRvcCYmKHJ0WyIhbWFyZ2lucyJdLnRvcD1sbC5Ub3ApLGxsLkxlZnQmJihydFsiIW1hcmdpbnMiXS5sZWZ0PWxsLkxlZnQpLGxs''@;'; put 'put ''LlJpZ2h0JiYocnRbIiFtYXJnaW5zIl0ucmlnaHQ9bGwuUmlnaHQpLGxsLkJvdHRvbSYmKHJ0WyIhbWFyZ2lucyJdLmJvdHRvbT1sbC5Cb3R0b20pO2JyZWFrO2Nhc2UiZGlzcGxheXJpZ2h0dG9sZWZ0Ijpxci5WaWV3c3x8KHFyLlZpZXdzPVtdKSxxci5WaWV3c1swXXx8KHFyLlZpZXdzWzBd''@;'; put 'put ''PXt9KSxxci5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6Y2FzZSJmcm96ZW5ub3NwbGl0IjpjYXNlImFjdGl2ZXJvdyI6Y2FzZSJhY3RpdmVjb2wiOmNhc2UidG9wcm93Ym90dG9tcGFuZSI6Y2FzZSJsZWZ0Y29sdW1ucmlnaHRwYW5lIjpjYXNlInVuc3luY2VkIjpj''@;'; put 'put ''YXNlInByaW50IjpjYXNlInByaW50ZXJyb3JzIjpjYXNlInBhbmVzIjpjYXNlInNjYWxlIjpjYXNlInBhbmUiOmNhc2UibnVtYmVyIjpjYXNlImxheW91dCI6Y2FzZSJwYWdlc2V0dXAiOmNhc2Uic2VsZWN0ZWQiOmNhc2UicHJvdGVjdG9iamVjdHMiOmNhc2UiZW5hYmxlc2VsZWN0aW9uIjpj''@;'; put 'put ''YXNlInByb3RlY3RzY2VuYXJpb3MiOmNhc2UidmFsaWRwcmludGVyaW5mbyI6Y2FzZSJob3Jpem9udGFscmVzb2x1dGlvbiI6Y2FzZSJ2ZXJ0aWNhbHJlc29sdXRpb24iOmNhc2UibnVtYmVyb2Zjb3BpZXMiOmNhc2UiYWN0aXZlcGFuZSI6Y2FzZSJ0b3Byb3d2aXNpYmxlIjpjYXNlImxlZnRj''@;'; put 'put ''b2x1bW52aXNpYmxlIjpjYXNlImZpdHRvcGFnZSI6Y2FzZSJyYW5nZXNlbGVjdGlvbiI6Y2FzZSJwYXBlcnNpemVpbmRleCI6Y2FzZSJwYWdlbGF5b3V0em9vbSI6Y2FzZSJwYWdlYnJlYWt6b29tIjpjYXNlImZpbHRlcm9uIjpjYXNlImZpdHdpZHRoIjpjYXNlImZpdGhlaWdodCI6Y2FzZSJj''@;'; put 'put ''b21tZW50c2xheW91dCI6Y2FzZSJ6b29tIjpjYXNlImxlZnR0b3JpZ2h0IjpjYXNlImdyaWRsaW5lcyI6Y2FzZSJhbGxvd3NvcnQiOmNhc2UiYWxsb3dmaWx0ZXIiOmNhc2UiYWxsb3dpbnNlcnRyb3dzIjpjYXNlImFsbG93ZGVsZXRlcm93cyI6Y2FzZSJhbGxvd2luc2VydGNvbHMiOmNhc2Ui''@;'; put 'put ''YWxsb3dkZWxldGVjb2xzIjpjYXNlImFsbG93aW5zZXJ0aHlwZXJsaW5rcyI6Y2FzZSJhbGxvd2Zvcm1hdGNlbGxzIjpjYXNlImFsbG93c2l6ZWNvbHMiOmNhc2UiYWxsb3dzaXplcm93cyI6Y2FzZSJ0YWJjb2xvcmluZGV4IjpjYXNlImRvbm90ZGlzcGxheWhlYWRpbmdzIjpjYXNlInNob3dw''@;'; put 'put ''YWdlbGF5b3V0em9vbSI6Y2FzZSJibGFja2FuZHdoaXRlIjpjYXNlImRvbm90ZGlzcGxheXplcm9zIjpjYXNlImRpc3BsYXlwYWdlYnJlYWsiOmNhc2Uicm93Y29saGVhZGluZ3MiOmNhc2UiZG9ub3RkaXNwbGF5b3V0bGluZSI6Y2FzZSJub29yaWVudGF0aW9uIjpjYXNlImFsbG93dXNlcGl2''@;'; put 'put ''b3R0YWJsZXMiOmNhc2UiemVyb2hlaWdodCI6Y2FzZSJ2aWV3YWJsZXJhbmdlIjpjYXNlInNlbGVjdGlvbiI6Y2FzZSJwcm90ZWN0Y29udGVudHMiOmJyZWFrO2Nhc2Uic3BsaXRob3Jpem9udGFsIjpjYXNlInNwbGl0dmVydGljYWwiOmlmKCIvPiIhPT12ZVswXS5zbGljZSgtMikpaWYoIi8i''@;'; put 'put ''PT12ZVsxXSl7cnRbIiFmcmVlemUiXXx8KHJ0WyIhZnJlZXplIl09IkExIik7dmFyIGVsPWtzKHJ0WyIhZnJlZXplIl0pOyJzcGxpdGhvcml6b250YWwiPT12ZVszXT9lbC5yPStYLnNsaWNlKHpuLHZlLmluZGV4KTplbC5jPStYLnNsaWNlKHpuLHZlLmluZGV4KSxydFsiIWZyZWV6ZSJdPUFp''@;'; put 'put ''KGVsKX1lbHNlIHpuPXZlLmluZGV4K3ZlWzBdLmxlbmd0aDticmVhaztjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6cnRbIiFncmlkbGluZXMiXT0hMTticmVhaztjYXNlIm5vc3VtbWFyeXJvd3NiZWxvd2RldGFpbCI6cnRbIiFvdXRsaW5lIl18fChydFsiIW91dGxpbmUiXT17fSkscnRb''@;'; put 'put ''IiFvdXRsaW5lIl0uYWJvdmU9ITA7YnJlYWs7Y2FzZSJub3N1bW1hcnljb2x1bW5zcmlnaHRkZXRhaWwiOnJ0WyIhb3V0bGluZSJdfHwocnRbIiFvdXRsaW5lIl09e30pLHJ0WyIhb3V0bGluZSJdLmxlZnQ9ITA7YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNh''@;'; put 'put ''c2UicGl2b3RjYWNoZSI6c3dpdGNoKHZlWzNdKXtjYXNlImltbWVkaWF0ZWl0ZW1zb25kcm9wIjpjYXNlInNob3dwYWdlbXVsdGlwbGVpdGVtbGFiZWwiOmNhc2UiY29tcGFjdHJvd2luZGVudCI6Y2FzZSJsb2NhdGlvbiI6Y2FzZSJwaXZvdGZpZWxkIjpjYXNlIm9yaWVudGF0aW9uIjpjYXNl''@;'; put 'put ''ImxheW91dGZvcm0iOmNhc2UibGF5b3V0c3VidG90YWxsb2NhdGlvbiI6Y2FzZSJsYXlvdXRjb21wYWN0cm93IjpjYXNlInBvc2l0aW9uIjpjYXNlInBpdm90aXRlbSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJkYXRhZmllbGQiOmNhc2Uic291cmNlbmFtZSI6Y2FzZSJwYXJlbnRmaWVsZCI6Y2Fz''@;'; put 'put ''ZSJwdGxpbmVpdGVtcyI6Y2FzZSJwdGxpbmVpdGVtIjpjYXNlImNvdW50b2ZzYW1laXRlbXMiOmNhc2UiaXRlbSI6Y2FzZSJpdGVtdHlwZSI6Y2FzZSJwdHNvdXJjZSI6Y2FzZSJjYWNoZWluZGV4IjpjYXNlImNvbnNvbGlkYXRpb25yZWZlcmVuY2UiOmNhc2UiZmlsZW5hbWUiOmNhc2UicmVm''@;'; put 'put ''ZXJlbmNlIjpjYXNlIm5vY29sdW1uZ3JhbmQiOmNhc2Uibm9yb3dncmFuZCI6Y2FzZSJibGFua2xpbmVhZnRlcml0ZW1zIjpjYXNlImhpZGRlbiI6Y2FzZSJzdWJ0b3RhbCI6Y2FzZSJiYXNlZmllbGQiOmNhc2UibWFwY2hpbGRpdGVtcyI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJyZWZyZXNob25m''@;'; put 'put ''aWxlb3BlbiI6Y2FzZSJwcmludHNldHRpdGxlcyI6Y2FzZSJtZXJnZWxhYmVscyI6Y2FzZSJkZWZhdWx0dmVyc2lvbiI6Y2FzZSJyZWZyZXNobmFtZSI6Y2FzZSJyZWZyZXNoZGF0ZSI6Y2FzZSJyZWZyZXNoZGF0ZWNvcHkiOmNhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpjYXNlInZlcnNpb25s''@;'; put 'put ''YXN0dXBkYXRlIjpjYXNlInZlcnNpb251cGRhdGVhYmxlbWluIjpjYXNlInZlcnNpb25yZWZyZXNoYWJsZW1pbiI6Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlInBhZ2VicmVha3MiOnN3aXRjaCh2ZVszXSl7Y2FzZSJjb2xicmVha3MiOmNhc2UiY29s''@;'; put 'put ''YnJlYWsiOmNhc2Uicm93YnJlYWtzIjpjYXNlInJvd2JyZWFrIjpjYXNlImNvbHN0YXJ0IjpjYXNlImNvbGVuZCI6Y2FzZSJyb3dlbmQiOmJyZWFrO2RlZmF1bHQ6dXI9ITF9YnJlYWs7Y2FzZSJhdXRvZmlsdGVyIjpzd2l0Y2godmVbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6Y2FzZSJh''@;'; put 'put ''dXRvZmlsdGVyY29uZGl0aW9uIjpjYXNlImF1dG9maWx0ZXJhbmQiOmNhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OnVyPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKHZlWzNdKXtjYXNlImlkIjpjYXNlImF1dG9mb3JtYXRmb250IjpjYXNlImF1dG9mb3JtYXRwYXR0''@;'; put 'put ''ZXJuIjpjYXNlInF1ZXJ5c291cmNlIjpjYXNlInF1ZXJ5dHlwZSI6Y2FzZSJlbmFibGVyZWRpcmVjdGlvbnMiOmNhc2UicmVmcmVzaGVkaW54bDkiOmNhc2UidXJsc3RyaW5nIjpjYXNlImh0bWx0YWJsZXMiOmNhc2UiY29ubmVjdGlvbiI6Y2FzZSJjb21tYW5kdGV4dCI6Y2FzZSJyZWZyZXNo''@;'; put 'put ''aW5mbyI6Y2FzZSJub3RpdGxlcyI6Y2FzZSJuZXh0aWQiOmNhc2UiY29sdW1uaW5mbyI6Y2FzZSJvdmVyd3JpdGVjZWxscyI6Y2FzZSJkb25vdHByb21wdGZvcmZpbGUiOmNhc2UidGV4dHdpemFyZHNldHRpbmdzIjpjYXNlInNvdXJjZSI6Y2FzZSJudW1iZXIiOmNhc2UiZGVjaW1hbCI6Y2Fz''@;'; put 'put ''ZSJ0aG91c2FuZHNlcGFyYXRvciI6Y2FzZSJ0cmFpbGluZ21pbnVzbnVtYmVycyI6Y2FzZSJmb3JtYXRzZXR0aW5ncyI6Y2FzZSJmaWVsZHR5cGUiOmNhc2UiZGVsaW1pdGVycyI6Y2FzZSJ0YWIiOmNhc2UiY29tbWEiOmNhc2UiYXV0b2Zvcm1hdG5hbWUiOmNhc2UidmVyc2lvbmxhc3RlZGl0''@;'; put 'put ''IjpjYXNlInZlcnNpb25sYXN0cmVmcmVzaCI6YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlImRhdGF2YWxpZGF0aW9uIjpzd2l0Y2godmVbM10pe2Nhc2UicmFuZ2UiOmlpLnJlZj12ZTticmVhaztjYXNlInR5cGUiOmNhc2UibWluIjpjYXNlIm1heCI6Y2FzZSJzb3J0IjpjYXNlImRl''@;'; put 'put ''c2NlbmRpbmciOmNhc2Uib3JkZXIiOmNhc2UiY2FzZXNlbnNpdGl2ZSI6Y2FzZSJ2YWx1ZSI6Y2FzZSJlcnJvcnN0eWxlIjpjYXNlImVycm9ybWVzc2FnZSI6Y2FzZSJlcnJvcnRpdGxlIjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJp''@;'; put 'put ''bnB1dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2VibGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OnVyPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25k''@;'; put 'put ''aXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaCh2ZVszXSl7Y2FzZSJyYW5nZSI6Y2FzZSJ0eXBlIjpjYXNlIm1pbiI6Y2FzZSJtYXgiOmNhc2Uic29ydCI6Y2FzZSJkZXNjZW5kaW5nIjpjYXNlIm9yZGVyIjpjYXNlImNhc2VzZW5zaXRpdmUiOmNhc2UidmFsdWUiOmNhc2UiZXJyb3JzdHlsZSI6''@;'; put 'put ''Y2FzZSJlcnJvcm1lc3NhZ2UiOmNhc2UiZXJyb3J0aXRsZSI6Y2FzZSJjZWxscmFuZ2VsaXN0IjpjYXNlImlucHV0bWVzc2FnZSI6Y2FzZSJpbnB1dHRpdGxlIjpjYXNlImNvbWJvaGlkZSI6Y2FzZSJpbnB1dGhpZGUiOmNhc2UiY29uZGl0aW9uIjpjYXNlInF1YWxpZmllciI6Y2FzZSJ1c2Vi''@;'; put 'put ''bGFuayI6Y2FzZSJ2YWx1ZTEiOmNhc2UidmFsdWUyIjpjYXNlImZvcm1hdCI6YnJlYWs7ZGVmYXVsdDp1cj0hMX1icmVhaztjYXNlIm1hcGluZm8iOmNhc2Uic2NoZW1hIjpjYXNlImRhdGEiOnN3aXRjaCh2ZVszXSl7Y2FzZSJtYXAiOmNhc2UiZW50cnkiOmNhc2UicmFuZ2UiOmNhc2UieHBh''@;'; put 'put ''dGgiOmNhc2UiZmllbGQiOmNhc2UieHNkdHlwZSI6Y2FzZSJmaWx0ZXJvbiI6Y2FzZSJhZ2dyZWdhdGUiOmNhc2UiZWxlbWVudHR5cGUiOmNhc2UiYXR0cmlidXRldHlwZSI6Y2FzZSJzY2hlbWEiOmNhc2UiZWxlbWVudCI6Y2FzZSJjb21wbGV4dHlwZSI6Y2FzZSJkYXRhdHlwZSI6Y2FzZSJh''@;'; put 'put ''bGwiOmNhc2UiYXR0cmlidXRlIjpjYXNlImV4dGVuZHMiOmNhc2Uicm93IjpicmVhaztkZWZhdWx0OnVyPSExfWJyZWFrO2Nhc2Uic21hcnR0YWdzIjpicmVhaztkZWZhdWx0OnVyPSExfWlmKHVyfHx2ZVszXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZigheWVbeWUubGVuZ3RoLTFdWzFd''@;'; put 'put ''KXRocm93IlVucmVjb2duaXplZCB0YWc6ICIrdmVbM10rInwiK3llLmpvaW4oInwiKTtpZigiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIj09PXllW3llLmxlbmd0aC0xXVswXSl7aWYoIi8+Ij09PXZlWzBdLnNsaWNlKC0yKSlicmVhazsiLyI9PT12ZVsxXT9NQihlcixMbyxLcixYLnNsaWNl''@;'; put 'put ''KHpuLHZlLmluZGV4KSk6KEtyPXZlLHpuPXZlLmluZGV4K3ZlWzBdLmxlbmd0aCk7YnJlYWt9aWYoTC5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIit2ZVszXSsifCIreWUuam9pbigifCIpfXZhciB0bD17fTtyZXR1cm4hTC5ib29rU2hlZXRzJiYhTC5ib29rUHJvcHMmJih0bC5TaGVl''@;'; put 'put ''dHM9emUpLHRsLlNoZWV0TmFtZXM9V2UsdGwuV29ya2Jvb2s9cXIsdGwuU1NGPXcuZ2V0X3RhYmxlKCksdGwuUHJvcHM9UW4sdGwuQ3VzdHByb3BzPWVyLHRsLlNoZWV0cyYmdGwuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKFJjKXt2YXIgT2E9dGwuU2hlZXRzW1JjXTtPYVsiIW1lcmdl''@;'; put 'put ''cyJdJiZPYVsiIW1lcmdlcyJdLmZvckVhY2goZnVuY3Rpb24ocXQpeyJzdHJpbmciPT10eXBlb2YgcXQmJihxdD1NLnV0aWxzLmRlY29kZV9yYW5nZShxdCkpO3ZhciBmbj1NLnV0aWxzLmVuY29kZV9jZWxsKHF0LnMpLExuPUFycmF5LmlzQXJyYXkoT2EpPyhPYVtxdC5zLnJdfHxbXSlbcXQu''@;'; put 'put ''cy5jXTpPYVtmbl07TG4mJkxuLnMmJihudWxsIT1Mbi5zLnRvcCYmcWMuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKE9hLHF0LHt0b3A6TG4ucy50b3B9KSxudWxsIT1Mbi5zLmJvdHRvbSYmcWMuc2hlZXRfc2V0X3JhbmdlX3N0eWxlKE9hLHF0LHtib3R0b206TG4ucy5ib3R0b219KSxudWxsIT1M''@;'; put 'put ''bi5zLmxlZnQmJnFjLnNoZWV0X3NldF9yYW5nZV9zdHlsZShPYSxxdCx7bGVmdDpMbi5zLmxlZnR9KSxudWxsIT1Mbi5zLnJpZ2h0JiZxYy5zaGVldF9zZXRfcmFuZ2Vfc3R5bGUoT2EscXQse3JpZ2h0OkxuLnMucmlnaHR9KSl9KX0pLHRsfWZ1bmN0aW9uIEk2KHksUCl7c3dpdGNoKGREKFA9''@;'; put 'put ''UHx8e30pLFAudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gRDYoaWUuZGVjb2RlKHkpLFApO2Nhc2UiYmluYXJ5IjpjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpyZXR1cm4gRDYoeSxQKTtjYXNlImFycmF5IjpyZXR1cm4gRDYoSCh5KSxQKX19ZnVuY3Rpb24gV0EoeSl7cmV0''@;'; put 'put ''dXJuIF9yKCJOYW1lZFJhbmdlIixudWxsLHsic3M6TmFtZSI6eS5OYW1lLCJzczpSZWZlcnNUbyI6Ij0iK3pwKHkuUmVmLHtyOjAsYzowfSl9KX1mdW5jdGlvbiBZUSh5LFAsTCxYLG5lLGZlLGJlKXtpZigheXx8bnVsbD09eS52JiZudWxsPT15LmYmJiFYLnNoZWV0U3R1YnMpcmV0dXJuIiI7''@;'; put 'put ''dmFyIHZlPXt9O2lmKHkuZiYmKHZlWyJzczpGb3JtdWxhIl09Ij0iK2JyKHpwKHkuZixiZSkpKSx5LkYmJnkuRi5zbGljZSgwLFAubGVuZ3RoKT09UCl7dmFyIHllPWtzKHkuRi5zbGljZShQLmxlbmd0aCsxKSk7dmVbInNzOkFycmF5UmFuZ2UiXT0iUkM6UiIrKHllLnI9PWJlLnI/IiI6Ilsi''@;'; put 'put ''Kyh5ZS5yLWJlLnIpKyJdIikrIkMiKyh5ZS5jPT1iZS5jPyIiOiJbIisoeWUuYy1iZS5jKSsiXSIpfWlmKHkubCYmeS5sLlRhcmdldCYmKHZlWyJzczpIUmVmIl09YnIoeS5sLlRhcmdldCkseS5sLlRvb2x0aXAmJih2ZVsieDpIUmVmU2NyZWVuVGlwIl09YnIoeS5sLlRvb2x0aXApKSksTFsi''@;'; put 'put ''IW1lcmdlcyJdKWZvcih2YXIgVmU9TFsiIW1lcmdlcyJdLHplPTA7emUhPVZlLmxlbmd0aDsrK3plKVZlW3plXS5zLmMhPWJlLmN8fFZlW3plXS5zLnIhPWJlLnJ8fChWZVt6ZV0uZS5jPlZlW3plXS5zLmMmJih2ZVsic3M6TWVyZ2VBY3Jvc3MiXT1WZVt6ZV0uZS5jLVZlW3plXS5zLmMpLFZl''@;'; put 'put ''W3plXS5lLnI+VmVbemVdLnMuciYmKHZlWyJzczpNZXJnZURvd24iXT1WZVt6ZV0uZS5yLVZlW3plXS5zLnIpKTt2YXIgV2U9IiIscnQ9IiI7c3dpdGNoKHkudCl7Y2FzZSJ6IjppZighWC5zaGVldFN0dWJzKXJldHVybiIiO2JyZWFrO2Nhc2UibiI6V2U9Ik51bWJlciIscnQ9U3RyaW5nKHku''@;'; put 'put ''dik7YnJlYWs7Y2FzZSJiIjpXZT0iQm9vbGVhbiIscnQ9eS52PyIxIjoiMCI7YnJlYWs7Y2FzZSJlIjpXZT0iRXJyb3IiLHJ0PUZsW3kudl07YnJlYWs7Y2FzZSJkIjpXZT0iRGF0ZVRpbWUiLHJ0PW5ldyBEYXRlKHkudikudG9JU09TdHJpbmcoKSxudWxsPT15LnomJih5Lno9eS56fHx3Ll90''@;'; put 'put ''YWJsZVsxNF0pO2JyZWFrO2Nhc2UicyI6V2U9IlN0cmluZyIscnQ9UWkoeS52fHwiIil9dmFyIGx0PW11KFguY2VsbFhmcyxudWxsLHksWCk7dmVbInNzOlN0eWxlSUQiXT0icyIrKDIxK2x0KSx2ZVsic3M6SW5kZXgiXT1iZS5jKzE7dmFyIEN0PW51bGwhPXkudj9ydDoiIixhdD0ieiI9PXku''@;'; put 'put ''dD8iIjp5LlI/ZnVuY3Rpb24gd3YoeSl7cmV0dXJuJzxzczpEYXRhIHNzOlR5cGU9IlN0cmluZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPicreS5tYXAoZnVuY3Rpb24oTCl7dmFyIFg9UWkoTC52KTtyZXR1cm4gTC5zJiYoTC5zLmJvbGQmJihYPSI8Qj4iK1gr''@;'; put 'put ''IjwvQj4iKSxMLnMuaXRhbGljJiYoWD0iPEk+IitYKyI8L0k+IiksTC5zLnN0cmlrZSYmKFg9IjxTPiIrWCsiPC9TPiIpLEwucy51bmRlcmxpbmUmJihYPSI8VT4iK1grIjwvVT4iKSwic3VwZXIiPT1MLnMudmFsaWduJiYoWD0iPFN1cD4iK1grIjwvU3VwPiIpLCJzdWIiPT1MLnMudmFsaWdu''@;'; put 'put ''JiYoWD0iPFN1Yj4iK1grIjwvU3ViPiIpLChMLnMubmFtZXx8TC5zLnN6fHxMLnMuY29sb3ImJm51bGwhPUwucy5jb2xvci5yZ2IpJiYoWD1bIjxGb250IixMLnMubmFtZT8nIGh0bWw6RmFjZT0iJytMLnMubmFtZSsnIic6IiIsTC5zLnN6PycgaHRtbDpTaXplPSInK0wucy5zeisnIic6IiIs''@;'; put 'put ''TC5zLmNvbG9yPycgaHRtbDpDb2xvcj0iIycrKCIwMDAwMDAiKygibnVtYmVyIj09dHlwZW9mIEwucy5jb2xvci5yZ2I/TC5zLmNvbG9yLnJnYi50b1N0cmluZygxNik6TC5zLmNvbG9yLnJnYikpLnNsaWNlKC02KSsnIic6IiIsIj4iLFgsIjwvRm9udD4iXS5qb2luKCIiKSkpLFh9KS5qb2lu''@;'; put 'put ''KCIiKSsiPC9EYXRhPiJ9KHkuUik6JzxEYXRhIHNzOlR5cGU9IicrV2UrJyI+JytDdCsiPC9EYXRhPiI7cmV0dXJuKHkuY3x8W10pLmxlbmd0aD4wJiYoYXQrPWZ1bmN0aW9uICRBKHkpe3JldHVybiB5Lm1hcChmdW5jdGlvbihQKXt2YXIgWD1fcigic3M6RGF0YSIsdm8oUC50fHwiIikse3ht''@;'; put 'put ''bG5zOiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIn0pO3JldHVybiBfcigiQ29tbWVudCIsWCx7InNzOkF1dGhvciI6UC5hfSl9KS5qb2luKCIiKX0oeS5jKSksX3IoIkNlbGwiLGF0LHZlKX1mdW5jdGlvbiBXUSh5LFApe3ZhciBMPSc8Um93IHNzOkluZGV4PSInKyh5KzEpKyci''@;'; put 'put ''JztyZXR1cm4gUCYmKFAuaHB4JiYhUC5ocHQmJihQLmhwdD0kZihQLmhweCkpLFAuaHB0JiYoTCs9JyBzczpBdXRvRml0SGVpZ2h0PSIwIiBzczpIZWlnaHQ9IicrUC5ocHQrJyInKSxQLmhpZGRlbiYmKEwrPScgc3M6SGlkZGVuPSIxIicpKSxMKyI+In1mdW5jdGlvbiBxQSh5LFAsTCl7dmFy''@;'; put 'put ''IFg9W10sZmU9TC5TaGVldHNbTC5TaGVldE5hbWVzW3ldXSxiZT1mZT9mdW5jdGlvbiBUQih5LFAsTCxYKXtpZigheXx8ISgoWHx8e30pLldvcmtib29rfHx7fSkuTmFtZXMpcmV0dXJuIiI7Zm9yKHZhciBuZT1YLldvcmtib29rLk5hbWVzLGZlPVtdLGJlPTA7YmU8bmUubGVuZ3RoOysrYmUp''@;'; put 'put ''e3ZhciB2ZT1uZVtiZV07dmUuU2hlZXQ9PUwmJih2ZS5OYW1lLm1hdGNoKC9eX3hsZm5cLi8pfHxmZS5wdXNoKFdBKHZlKSkpfXJldHVybiBmZS5qb2luKCIiKX0oZmUsMCx5LEwpOiIiO3JldHVybiBiZS5sZW5ndGg+MCYmWC5wdXNoKCI8TmFtZXM+IitiZSsiPC9OYW1lcz4iKSxiZT1mZT9m''@;'; put 'put ''dW5jdGlvbiBrQih5LFAsTCxYKXtpZigheVsiIXJlZiJdKXJldHVybiIiO3ZhciBuZT1Sbyh5WyIhcmVmIl0pLGZlPXlbIiFtZXJnZXMiXXx8W10sYmU9MCx2ZT1bXTt5WyIhY29scyJdJiZ5WyIhY29scyJdLmZvckVhY2goZnVuY3Rpb24odnQsUHQpe18wKHZ0KTt2YXIga3Q9ISF2dC53aWR0''@;'; put 'put ''aCxEdD11NihQdCx2dCksWnQ9eyJzczpJbmRleCI6UHQrMX07a3QmJihadFsic3M6V2lkdGgiXT1BZyhEdC53aWR0aCkpLHZ0LmhpZGRlbiYmKFp0WyJzczpIaWRkZW4iXT0iMSIpLHZlLnB1c2goX3IoIkNvbHVtbiIsbnVsbCxadCkpfSk7Zm9yKHZhciB5ZT1BcnJheS5pc0FycmF5KHkpLFZl''@;'; put 'put ''PW5lLnMucjtWZTw9bmUuZS5yOysrVmUpe2Zvcih2YXIgemU9W1dRKFZlLCh5WyIhcm93cyJdfHxbXSlbVmVdKV0sV2U9bmUucy5jO1dlPD1uZS5lLmM7KytXZSl7dmFyIHJ0PSExO2ZvcihiZT0wO2JlIT1mZS5sZW5ndGg7KytiZSlpZighKGZlW2JlXS5zLmM+V2V8fGZlW2JlXS5zLnI+VmV8''@;'; put 'put ''fGZlW2JlXS5lLmM8V2V8fGZlW2JlXS5lLnI8VmUpKXsoZmVbYmVdLnMuYyE9V2V8fGZlW2JlXS5zLnIhPVZlKSYmKHJ0PSEwKTticmVha31pZighcnQpe3ZhciBsdD17cjpWZSxjOldlfSxDdD1BaShsdCk7emUucHVzaChZUSh5ZT8oeVtWZV18fFtdKVtXZV06eVtDdF0sQ3QseSxQLDAsMCxs''@;'; put 'put ''dCkpfX16ZS5wdXNoKCI8L1Jvdz4iKSx6ZS5sZW5ndGg+MiYmdmUucHVzaCh6ZS5qb2luKCIiKSl9cmV0dXJuIHZlLmpvaW4oIiIpfShmZSxQKToiIixiZS5sZW5ndGg+MCYmWC5wdXNoKCI8VGFibGU+IitiZSsiPC9UYWJsZT4iKSxYLnB1c2goZnVuY3Rpb24gT0MoeSxQLEwsWCl7aWYoIXkp''@;'; put 'put ''cmV0dXJuIiI7dmFyIG5lPVtdO2lmKHlbIiFtYXJnaW5zIl0mJihuZS5wdXNoKCI8UGFnZVNldHVwPiIpLHlbIiFtYXJnaW5zIl0uaGVhZGVyJiZuZS5wdXNoKF9yKCJIZWFkZXIiLG51bGwseyJ4Ok1hcmdpbiI6eVsiIW1hcmdpbnMiXS5oZWFkZXJ9KSkseVsiIW1hcmdpbnMiXS5mb290ZXIm''@;'; put 'put ''Jm5lLnB1c2goX3IoIkZvb3RlciIsbnVsbCx7Ing6TWFyZ2luIjp5WyIhbWFyZ2lucyJdLmZvb3Rlcn0pKSxuZS5wdXNoKF9yKCJQYWdlTWFyZ2lucyIsbnVsbCx7Ing6Qm90dG9tIjp5WyIhbWFyZ2lucyJdLmJvdHRvbXx8IjAuNzUiLCJ4OkxlZnQiOnlbIiFtYXJnaW5zIl0ubGVmdHx8IjAu''@;'; put 'put ''NyIsIng6UmlnaHQiOnlbIiFtYXJnaW5zIl0ucmlnaHR8fCIwLjciLCJ4OlRvcCI6eVsiIW1hcmdpbnMiXS50b3B8fCIwLjc1In0pKSxuZS5wdXNoKCI8L1BhZ2VTZXR1cD4iKSksWCYmWC5Xb3JrYm9vayYmWC5Xb3JrYm9vay5TaGVldHMmJlguV29ya2Jvb2suU2hlZXRzW0xdKWlmKFguV29y''@;'; put 'put ''a2Jvb2suU2hlZXRzW0xdLkhpZGRlbiluZS5wdXNoKF9yKCJWaXNpYmxlIiwxPT1YLldvcmtib29rLlNoZWV0c1tMXS5IaWRkZW4/IlNoZWV0SGlkZGVuIjoiU2hlZXRWZXJ5SGlkZGVuIix7fSkpO2Vsc2V7Zm9yKHZhciBmZT0wO2ZlPEwmJighWC5Xb3JrYm9vay5TaGVldHNbZmVdfHxYLldv''@;'; put 'put ''cmtib29rLlNoZWV0c1tmZV0uSGlkZGVuKTsrK2ZlKTtmZT09TCYmbmUucHVzaCgiPFNlbGVjdGVkLz4iKX1pZigoKCgoWHx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCYmbmUucHVzaCgiPERpc3BsYXlSaWdodFRvTGVmdC8+IiksaG4oeVsiIWdyaWRsaW5lcyJd''@;'; put 'put ''KSYmbmUucHVzaCgiPERvTm90RGlzcGxheUdyaWRsaW5lcy8+IikseVsiIWZyZWV6ZSJdKXtuZS5wdXNoKCI8RnJlZXplUGFuZXMvPiIpLG5lLnB1c2goIjxGcm96ZW5Ob1NwbGl0Lz4iKTt2YXIgYmU9a3MoeVsiIWZyZWV6ZSJdKTtiZS5yPjAmJihuZS5wdXNoKGNvKCJTcGxpdEhvcml6b250''@;'; put 'put ''YWwiLCIiK2JlLnIpKSxuZS5wdXNoKGNvKCJUb3BSb3dCb3R0b21QYW5lIiwiIitiZS5yKSkpLGJlLmM+MCYmKG5lLnB1c2goY28oIlNwbGl0VmVydGljYWwiLCIiK2JlLmMpKSxuZS5wdXNoKGNvKCJMZWZ0Q29sdW1uUmlnaHRQYW5lIiwiIitiZS5jKSkpfXJldHVybiB5WyIhcHJvdGVjdCJd''@;'; put 'put ''JiYobmUucHVzaChjbygiUHJvdGVjdENvbnRlbnRzIiwiVHJ1ZSIpKSx5WyIhcHJvdGVjdCJdLm9iamVjdHMmJm5lLnB1c2goY28oIlByb3RlY3RPYmplY3RzIiwiVHJ1ZSIpKSx5WyIhcHJvdGVjdCJdLnNjZW5hcmlvcyYmbmUucHVzaChjbygiUHJvdGVjdFNjZW5hcmlvcyIsIlRydWUiKSks''@;'; put 'put ''bnVsbD09eVsiIXByb3RlY3QiXS5zZWxlY3RMb2NrZWRDZWxsc3x8eVsiIXByb3RlY3QiXS5zZWxlY3RMb2NrZWRDZWxscz9udWxsIT15WyIhcHJvdGVjdCJdLnNlbGVjdFVubG9ja2VkQ2VsbHMmJiF5WyIhcHJvdGVjdCJdLnNlbGVjdFVubG9ja2VkQ2VsbHMmJm5lLnB1c2goY28oIkVuYWJs''@;'; put 'put ''ZVNlbGVjdGlvbiIsIlVubG9ja2VkQ2VsbHMiKSk6bmUucHVzaChjbygiRW5hYmxlU2VsZWN0aW9uIiwiTm9TZWxlY3Rpb24iKSksW1siZm9ybWF0Q2VsbHMiLCJBbGxvd0Zvcm1hdENlbGxzIl0sWyJmb3JtYXRDb2x1bW5zIiwiQWxsb3dTaXplQ29scyJdLFsiZm9ybWF0Um93cyIsIkFsbG93''@;'; put 'put ''U2l6ZVJvd3MiXSxbImluc2VydENvbHVtbnMiLCJBbGxvd0luc2VydENvbHMiXSxbImluc2VydFJvd3MiLCJBbGxvd0luc2VydFJvd3MiXSxbImluc2VydEh5cGVybGlua3MiLCJBbGxvd0luc2VydEh5cGVybGlua3MiXSxbImRlbGV0ZUNvbHVtbnMiLCJBbGxvd0RlbGV0ZUNvbHMiXSxbImRl''@;'; put 'put ''bGV0ZVJvd3MiLCJBbGxvd0RlbGV0ZVJvd3MiXSxbInNvcnQiLCJBbGxvd1NvcnQiXSxbImF1dG9GaWx0ZXIiLCJBbGxvd0ZpbHRlciJdLFsicGl2b3RUYWJsZXMiLCJBbGxvd1VzZVBpdm90VGFibGVzIl1dLmZvckVhY2goZnVuY3Rpb24odmUpe3lbIiFwcm90ZWN0Il1bdmVbMF1dJiZuZS5w''@;'; put 'put ''dXNoKCI8Iit2ZVsxXSsiLz4iKX0pKSwwPT1uZS5sZW5ndGg/IiI6X3IoIldvcmtzaGVldE9wdGlvbnMiLG5lLmpvaW4oIiIpLHt4bWxuczpDbC54fSl9KGZlLDAseSxMKSksWC5qb2luKCIiKX1mdW5jdGlvbiBLQSh5LFApe1B8fChQPXt9KSx5LlNTRnx8KHkuU1NGPXcuZ2V0X3RhYmxlKCkp''@;'; put 'put ''LHkuU1NGJiYoSyh3KSx3LmxvYWRfdGFibGUoeS5TU0YpLFAucmV2c3NmPUVlKHkuU1NGKSxQLnJldnNzZlt5LlNTRls2NTUzNV1dPTAsUC5zc2Y9eS5TU0YseS5TdHlsZXM9e0ZvbnRzOlAuRm9udHM9W3tzejoxMixjb2xvcjp7dGhlbWU6MSxyZ2I6IjAwMDAwMCJ9LG5hbWU6IkNhbGlicmki''@;'; put 'put ''LGZhbWlseToyLHNjaGVtZToibWlub3IifV0sRmlsbHM6UC5GaWxscz1be3BhdHRlcm5UeXBlOiJub25lIn0se3BhdHRlcm5UeXBlOiJncmF5MTI1In1dLEJvcmRlcnM6UC5Cb3JkZXJzPVt7fV19LFAuY2VsbFhmcz1bXSxQLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxtdShQLmNl''@;'; put 'put ''bGxYZnMsbnVsbCx7fSx7cmV2c3NmOntHZW5lcmFsOjB9fSkpO3ZhciBMPVtdO0wucHVzaChmdW5jdGlvbiBVQSh5LFApe3ZhciBMPVtdO3JldHVybiB5LlByb3BzJiZMLnB1c2goZnVuY3Rpb24gUnkoeSxQKXt2YXIgTD1bXTtyZXR1cm4gb3QoUDUpLm1hcChmdW5jdGlvbihYKXtmb3IodmFy''@;'; put 'put ''IG5lPTA7bmU8UXUubGVuZ3RoOysrbmUpaWYoUXVbbmVdWzFdPT1YKXJldHVybiBRdVtuZV07Zm9yKG5lPTA7bmU8b2QubGVuZ3RoOysrbmUpaWYob2RbbmVdWzFdPT1YKXJldHVybiBvZFtuZV07dGhyb3cgWH0pLmZvckVhY2goZnVuY3Rpb24oWCl7aWYobnVsbCE9eVtYWzFdXSl7dmFyIG5l''@;'; put 'put ''PVAmJlAuUHJvcHMmJm51bGwhPVAuUHJvcHNbWFsxXV0/UC5Qcm9wc1tYWzFdXTp5W1hbMV1dOyJkYXRlIj09PVhbMl0mJihuZT1uZXcgRGF0ZShuZSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLlxkKlovLCJaIikpLCJudW1iZXIiPT10eXBlb2YgbmU/bmU9U3RyaW5nKG5lKTohMD09PW5l''@;'; put 'put ''fHwhMT09PW5lP25lPW5lPyIxIjoiMCI6bmUgaW5zdGFuY2VvZiBEYXRlJiYobmU9bmV3IERhdGUobmUpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCpaLywiIikpLEwucHVzaChjbyhQNVtYWzFdXXx8WFsxXSxuZSkpfX0pLF9yKCJEb2N1bWVudFByb3BlcnRpZXMiLEwuam9pbigiIiks''@;'; put 'put ''e3htbG5zOkNsLm99KX0oeS5Qcm9wcyxQKSkseS5DdXN0cHJvcHMmJkwucHVzaChmdW5jdGlvbiBONSh5LFApe3ZhciBMPVsiV29ya3NoZWV0cyIsIlNoZWV0TmFtZXMiXSxYPSJDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMiLG5lPVtdO3JldHVybiB5JiZvdCh5KS5mb3JFYWNoKGZ1bmN0aW9u''@;'; put 'put ''KGZlKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeSxmZSkpe2Zvcih2YXIgYmU9MDtiZTxRdS5sZW5ndGg7KytiZSlpZihmZT09UXVbYmVdWzFdKXJldHVybjtmb3IoYmU9MDtiZTxvZC5sZW5ndGg7KytiZSlpZihmZT09b2RbYmVdWzFdKXJldHVybjtmb3IoYmU9''@;'; put 'put ''MDtiZTxMLmxlbmd0aDsrK2JlKWlmKGZlPT1MW2JlXSlyZXR1cm47dmFyIHZlPXlbZmVdLHllPSJzdHJpbmciOyJudW1iZXIiPT10eXBlb2YgdmU/KHllPSJmbG9hdCIsdmU9U3RyaW5nKHZlKSk6ITA9PT12ZXx8ITE9PT12ZT8oeWU9ImJvb2xlYW4iLHZlPXZlPyIxIjoiMCIpOnZlPVN0cmlu''@;'; put 'put ''Zyh2ZSksbmUucHVzaChfcihsbyhmZSksdmUseyJkdDpkdCI6eWV9KSl9fSksUCYmb3QoUCkuZm9yRWFjaChmdW5jdGlvbihmZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFAsZmUpJiYoIXl8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo''@;'; put 'put ''eSxmZSkpKXt2YXIgYmU9UFtmZV0sdmU9InN0cmluZyI7Im51bWJlciI9PXR5cGVvZiBiZT8odmU9ImZsb2F0IixiZT1TdHJpbmcoYmUpKTohMD09PWJlfHwhMT09PWJlPyh2ZT0iYm9vbGVhbiIsYmU9YmU/IjEiOiIwIik6YmUgaW5zdGFuY2VvZiBEYXRlPyh2ZT0iZGF0ZVRpbWUudHoiLGJl''@;'; put 'put ''PWJlLnRvSVNPU3RyaW5nKCkpOmJlPVN0cmluZyhiZSksbmUucHVzaChfcihsbyhmZSksYmUseyJkdDpkdCI6dmV9KSl9fSksIjwiK1grJyB4bWxucz0iJytDbC5vKyciPicrbmUuam9pbigiIikrIjwvIitYKyI+In0oeS5Qcm9wcyx5LkN1c3Rwcm9wcykpLEwuam9pbigiIil9KHksUCkpLEwu''@;'; put 'put ''cHVzaCgiIiksTC5wdXNoKCIiKSxMLnB1c2goIiIpO2Zvcih2YXIgWD0wO1g8eS5TaGVldE5hbWVzLmxlbmd0aDsrK1gpTC5wdXNoKF9yKCJXb3Jrc2hlZXQiLHFBKFgsUCx5KSx7InNzOk5hbWUiOmJyKHkuU2hlZXROYW1lc1tYXSl9KSk7cmV0dXJuIExbMl09ZnVuY3Rpb24gWUEoeSxQKXt2''@;'; put 'put ''YXIgWD1bWyc8U3R5bGUgc3M6SUQ9IkRlZmF1bHQiIHNzOk5hbWU9Ik5vcm1hbCI+JywnPEFsaWdubWVudCBzczpWZXJ0aWNhbD0iQm90dG9tIi8+JywiPEJvcmRlcnMvPiIsJzxGb250IHNzOkZvbnROYW1lPSJDYWxpYnJpIiB4OkZhbWlseT0iU3dpc3MiIHNzOlNpemU9IjEyIiBzczpDb2xv''@;'; put 'put ''cj0iIzAwMDAwMCIvPicsIjxJbnRlcmlvci8+IiwiPE51bWJlckZvcm1hdC8+IiwiPFByb3RlY3Rpb24vPiIsIjwvU3R5bGU+Il0uam9pbigiIildO3JldHVybiBQLmNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbihuZSxmZSl7dmFyIGJlPVtdO2lmKG5lLmFsaWdubWVudCl7dmFyIHZlPXt9O25l''@;'; put 'put ''LmFsaWdubWVudC5zaHJpbmtUb0ZpdCYmKHZlWyJzczpTaHJpbmtUb0ZpdCJdPSIxIiksbmUuYWxpZ25tZW50LndyYXBUZXh0JiYodmVbInNzOldyYXBUZXh0Il09IjEiKSxuZS5hbGlnbm1lbnQudmVydGljYWwmJih2ZVsic3M6VmVydGljYWwiXT13dChuZS5hbGlnbm1lbnQudmVydGljYWwp''@;'; put 'put ''KSxuZS5hbGlnbm1lbnQuaG9yaXpvbnRhbCYmKHZlWyJzczpIb3Jpem9udGFsIl09d3QobmUuYWxpZ25tZW50Lmhvcml6b250YWwpKSxuZS5hbGlnbm1lbnQuaW5kZW50JiYodmVbInNzOkluZGVudCJdPW5lLmFsaWdubWVudC5pbmRlbnQpLG5lLmFsaWdubWVudC50ZXh0Um90YXRpb24mJih2''@;'; put 'put ''ZVsic3M6Um90YXRlIl09bmUuYWxpZ25tZW50LnRleHRSb3RhdGlvbiksYmUucHVzaChfcigiQWxpZ25tZW50IixudWxsLHZlKSl9ZTppZihudWxsIT1uZS5mb250SWQpe3ZhciB5ZT1QLkZvbnRzW25lLmZvbnRJZF07aWYoIXllKWJyZWFrIGU7dmFyIFZlPXsic3M6Rm9udE5hbWUiOiJDYWxp''@;'; put 'put ''YnJpIiwic3M6U2l6ZSI6IjEyIn0semU9ITE7eWUuYm9sZCYmKHplPSEwLFZlWyJzczpCb2xkIl09IjEiKSx5ZS5pdGFsaWMmJih6ZT0hMCxWZVsic3M6SXRhbGljIl09IjEiKSx5ZS5zdHJpa2UmJih6ZT0hMCxWZVsic3M6U3RyaWtlVGhyb3VnaCJdPSIxIiksbnVsbCE9eWUudW5kZXJsaW5l''@;'; put 'put ''JiYoemU9ITAsVmVbInNzOlVuZGVybGluZSJdPXl2W3llLnVuZGVybGluZV18fCh5ZS51bmRlcmxpbmU/IlNpbmdsZSI6Ik5vbmUiKSksbnVsbCE9eWUuc3omJih6ZT0hMCxWZVsic3M6U2l6ZSJdPXllLnN6KSxudWxsIT15ZS5uYW1lJiYoemU9ITAsVmVbInNzOkZvbnROYW1lIl09eWUubmFt''@;'; put 'put ''ZSkseWUuY29sb3ImJm51bGwhPXllLmNvbG9yLnJnYiYmKHplPSEwLFZlWyJzczpDb2xvciJdPSIjIisoIm51bWJlciI9PXR5cGVvZiB5ZS5jb2xvci5yZ2I/IjAwMDAwMCIreWUuY29sb3IucmdiLnRvU3RyaW5nKDE2KTp5ZS5jb2xvci5yZ2IpLnNsaWNlKC02KSksWyJzdWIiLCJzdXBlciJd''@;'; put 'put ''LmluZGV4T2YoeWUudmFsaWduKT4tMSYmKFZlWyJzczpWZXJ0aWNhbEFsaWduIl09d3QoeWUudmFsaWduKSsic2NyaXB0IiksemUmJmJlLnB1c2goX3IoIkZvbnQiLG51bGwsVmUpKX1lOmlmKG5lLmZpbGxJZD4wKXt2YXIgV2U9UC5GaWxsc1tuZS5maWxsSWRdO2lmKCFXZXx8IVdlLmZnQ29s''@;'; put 'put ''b3J8fG51bGw9PVdlLmZnQ29sb3IucmdiKWJyZWFrIGU7YmUucHVzaChfcigiSW50ZXJpb3IiLG51bGwseyJzczpQYXR0ZXJuIjpvd1tXZS5wYXR0ZXJuVHlwZV18fCJTb2xpZCIsInNzOkNvbG9yIjoiIyIrKCJudW1iZXIiPT10eXBlb2YgV2UuZmdDb2xvci5yZ2I/IjAwIitXZS5mZ0NvbG9y''@;'; put 'put ''LnJnYi50b1N0cmluZygxNik6V2UuZmdDb2xvci5yZ2IpLnNsaWNlKC02KX0pKX1iZS5wdXNoKF9yKCJOdW1iZXJGb3JtYXQiLG51bGwseyJzczpGb3JtYXQiOmJyKHcuX3RhYmxlW25lLm51bUZtdElkXSl9KSk7dmFyIHJ0PXsic3M6SUQiOiJzIisoMjErZmUpfTtuZS5zdHlsZSYmKHJ0WyJz''@;'; put 'put ''czpOYW1lIl09bmUuc3R5bGUpLFgucHVzaChfcigiU3R5bGUiLGJlLmpvaW4oIiIpLHJ0KSl9KSxfcigiU3R5bGVzIixYLmpvaW4oIiIpKX0oMCxQKSxMWzNdPWZ1bmN0aW9uIEdBKHkpe2lmKCEoKHl8fHt9KS5Xb3JrYm9va3x8e30pLk5hbWVzKXJldHVybiIiO2Zvcih2YXIgUD15Lldvcmti''@;'; put 'put ''b29rLk5hbWVzLEw9W10sWD0wO1g8UC5sZW5ndGg7KytYKXt2YXIgbmU9UFtYXTtudWxsPT1uZS5TaGVldCYmKG5lLk5hbWUubWF0Y2goL15feGxmblwuLyl8fEwucHVzaChXQShuZSkpKX1yZXR1cm4gX3IoIk5hbWVzIixMLmpvaW4oIiIpKX0oeSksUG4rX3IoIldvcmtib29rIixMLmpvaW4o''@;'; put 'put ''IiIpLHt4bWxuczpDbC5zcywieG1sbnM6byI6Q2wubywieG1sbnM6eCI6Q2wueCwieG1sbnM6c3MiOkNsLnNzLCJ4bWxuczpkdCI6Q2wuZHQsInhtbG5zOmh0bWwiOkNsLmh0bWx9KX1mdW5jdGlvbiBYQSh5LFAsTCxYKXt2YXIgbmU9TCxmZT1bXSxiZT1QLnNsaWNlKFAubCxQLmwrbmUpO2lm''@;'; put 'put ''KFgmJlguZW5jJiZYLmVuYy5pbnNpdHUmJmJlLmxlbmd0aD4wKXN3aXRjaCh5Lm4pe2Nhc2UiQk9GIjpjYXNlIkZpbGVQYXNzIjpjYXNlIkZpbGVMb2NrIjpjYXNlIkludGVyZmFjZUhkciI6Y2FzZSJSUkRJbmZvIjpjYXNlIlJSREhlYWQiOmNhc2UiVXNyRXhjbCI6Y2FzZSJFT0YiOlguZW5j''@;'; put 'put ''Lmluc2l0dShsZSh7bGVuZ3RoOmJlLmxlbmd0aH0pLCJza2lwIik7YnJlYWs7Y2FzZSJCb3VuZFNoZWV0OCI6WC5lbmMuaW5zaXR1KGxlKHtsZW5ndGg6NH0pLCJza2lwIiksYmU9QnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oYmUuc2xpY2UoMCw0KSksQnVmZmVyLmZyb20oWC5lbmMuaW5z''@;'; put 'put ''aXR1KGJlLnNsaWNlKDQpKSldKTticmVhaztkZWZhdWx0OmJlPVguZW5jLmluc2l0dShiZSl9QXJyYXkuaXNBcnJheShQKSYmIUFycmF5LmlzQXJyYXkoYmUpJiYoYmU9QXJyYXkuZnJvbShiZSkpLGZlLnB1c2goYmUpLFAubCs9bmU7Zm9yKHZhciB2ZT1OQ1tLdShQLFAubCldLHllPTA7bnVs''@;'; put 'put ''bCE9dmUmJiJDb250aW51ZSI9PT12ZS5uLnNsaWNlKDAsOCk7KW5lPUt1KFAsUC5sKzIpLHllPVAubCs0LFgmJlguZW5jJiZYLmVuYy5pbnNpdHUmJlguZW5jLmluc2l0dShsZSh7bGVuZ3RoOjR9KSwic2tpcCIpLCJDb250aW51ZUZydCI9PXZlLm4/eWUrPTQ6IkNvbnRpbnVlRnJ0Ij09dmUu''@;'; put 'put ''bi5zbGljZSgwLDExKSYmKHllKz0xMixYJiZYLmVuYyYmWC5lbmMuaW5zaXR1JiZYLmVuYy5pbnNpdHUobGUoe2xlbmd0aDo4fSksInNraXAiKSksYmU9UC5zbGljZSh5ZSxQLmwrNCtuZSksWCYmWC5lbmMmJlguZW5jLmluc2l0dSYmYmUubGVuZ3RoPjAmJihiZT1YLmVuYy5pbnNpdHUoYmUp''@;'; put 'put ''KSxmZS5wdXNoKGJlKSxQLmwrPTQrbmUsdmU9TkNbS3UoUCxQLmwpXTt2YXIgVmU9ayhmZSk7Z3MoVmUsMCk7dmFyIHplPTA7VmUubGVucz1bXTtmb3IodmFyIFdlPTA7V2U8ZmUubGVuZ3RoOysrV2UpVmUubGVucy5wdXNoKHplKSx6ZSs9ZmVbV2VdLmxlbmd0aDtpZihWZS5sZW5ndGg8TCl0''@;'; put 'put ''aHJvdyJYTFMgUmVjb3JkICIrKHkmJnkubnx8Ij8/IikrIiBUcnVuY2F0ZWQ6ICIrVmUubGVuZ3RoKyIgPCAiK0w7cmV0dXJuIHkuZihWZSxWZS5sZW5ndGgsWCl9ZnVuY3Rpb24gZmQoeSxQLEwpe2lmKCJ6IiE9PXkudCYmeS5YRil7dmFyIFg9MDt0cnl7WD15Lnp8fHkuWEYubnVtRm10SWR8''@;'; put 'put ''fDAsUC5jZWxsTkYmJih5Lno9dy5fdGFibGVbWF0pfWNhdGNoKGZlKXtpZihQLldURil0aHJvdyBmZX1pZighUHx8ITEhPT1QLmNlbGxUZXh0KXRyeXt5Lnc9ImUiPT09eS50P3kud3x8RmxbeS52XTowPT09WHx8IkdlbmVyYWwiPT1YPyJuIj09PXkudD8oMHx5LnYpPT09eS52P3cuX2dlbmVy''@;'; put 'put ''YWxfaW50KHkudik6dy5fZ2VuZXJhbF9udW0oeS52KTp3Ll9nZW5lcmFsKHkudik6dy5mb3JtYXQoWCx5LnYse2RhdGUxOTA0OiEhTCxkYXRlTkY6UCYmUC5kYXRlTkZ9KX1jYXRjaChmZSl7aWYoUC5XVEYpdGhyb3cgZmV9aWYoUC5jZWxsRGF0ZXMmJlgmJiJuIj09eS50JiZ3LmlzX2RhdGUo''@;'; put 'put ''dy5fdGFibGVbWF18fFN0cmluZyhYKSkpe3ZhciBuZT13LnBhcnNlX2RhdGVfY29kZSh5LnYpO25lJiYoeS50PSJkIix5LnY9bmV3IERhdGUobmUueSxuZS5tLTEsbmUuZCxuZS5ILG5lLk0sbmUuUyxuZS51KSl9fX1mdW5jdGlvbiBSNih5LFAsTCl7cmV0dXJue3Y6eSxpeGZlOlAsdDpMfX12''@;'; put 'put ''YXIgSkE9ZnVuY3Rpb24oeSxQLEwpe1BbIiFvYmplY3RzIl09eX0sQ3Y9e1NJOiJlMDg1OWZmMmY5NGY2ODEwYWI5MTA4MDAyYjI3YjNkOSIsRFNJOiIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZSIsVURJOiIwNWQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZSJ9O2Z1bmN0''@;'; put 'put ''aW9uIEZDKHksUCl7dmFyIEwsWCxuZSxmZTtpZihQfHwoUD17fSksZEQoUCksTigpLFAuY29kZXBhZ2UmJlQoUC5jb2RlcGFnZSkseS5GdWxsUGF0aHMpe2lmKERlLmZpbmQoeSwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7TD1E''@;'; put 'put ''ZS5maW5kKHksIiFDb21wT2JqIiksWD1EZS5maW5kKHksIi9Xb3JrYm9vayIpfHxEZS5maW5kKHksIi9Cb29rIil9ZWxzZXtzd2l0Y2goUC50eXBlKXtjYXNlImJhc2U2NCI6eT1BKGllLmRlY29kZSh5KSk7YnJlYWs7Y2FzZSJiaW5hcnkiOnk9QSh5KTticmVhaztjYXNlImJ1ZmZlciI6YnJl''@;'; put 'put ''YWs7Y2FzZSJhcnJheSI6QXJyYXkuaXNBcnJheSh5KXx8KHk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoeSkpfWdzKHksMCksWD17Y29udGVudDp5fX1pZihMJiZmdW5jdGlvbiBQQyh5KXt2YXIgUD17fSxMPXkuY29udGVudDtpZihMLmw9MjgsUC5BbnNpVXNlclR5cGU9TC5yZWFkX3No''@;'; put 'put ''aWZ0KDAsImxwc3RyLWFuc2kiKSxQLkFuc2lDbGlwYm9hcmRGb3JtYXQ9ZnVuY3Rpb24gTnUoeSl7cmV0dXJuIFN5KHksMSl9KEwpLEwubGVuZ3RoLUwubDw9NClyZXR1cm4gUDt2YXIgWD1MLnJlYWRfc2hpZnQoNCk7aWYoMD09WHx8WD40MHx8KEwubC09NCxQLlJlc2VydmVkMT1MLnJlYWRf''@;'; put 'put ''c2hpZnQoMCwibHBzdHItYW5zaSIpLEwubGVuZ3RoLUwubDw9NCl8fDE5MDc1MDU2NTIhPT0oWD1MLnJlYWRfc2hpZnQoNCkpfHwoUC5Vbmljb2RlQ2xpcGJvYXJkRm9ybWF0PWZ1bmN0aW9uIGs1KHkpe3JldHVybiBTeSh5LDIpfShMKSwwPT0oWD1MLnJlYWRfc2hpZnQoNCkpfHxYPjQwKSly''@;'; put 'put ''ZXR1cm4gUDtMLmwtPTQsUC5SZXNlcnZlZDI9TC5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfShMKSxQLmJvb2tQcm9wcyYmIVAuYm9va1NoZWV0cyluZT17fTtlbHNle3ZhciBiZT11ZT8iYnVmZmVyIjoiYXJyYXkiO2lmKFgmJlguY29udGVudCluZT1mdW5jdGlvbiBBQih5LFApe3ZhciBMPXtv''@;'; put 'put ''cHRzOnt9fSxYPXt9O251bGwhPWVlJiZudWxsPT1QLmRlbnNlJiYoUC5kZW5zZT1lZSk7dmFyIFdlLGx0LGF0LHZ0LER0LFp0LG5lPVAuZGVuc2U/W106e30sZmU9e30sYmU9e30sdmU9bnVsbCx5ZT1bXSxWZT0iIix6ZT17fSxydD0iIixQdD17fSxrdD1bXSxnbj1bXSwkbj1bXSxjbj17U2hl''@;'; put 'put ''ZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxYbj17fSxCbj17Rm9udHM6W119LERuPWZ1bmN0aW9uKFFyKXtyZXR1cm4gUXI8OD9odVtRcl06UXI8NjQmJiRuW1FyLThdfHxodVtRcl19LFFuPWZ1bmN0aW9uKFFyLFBzKXt2YXIgUGEsd3M9UXIuWEYuZGF0YTt3cyYm''@;'; put 'put ''KHdzLnBhdHRlcm5UeXBlfHxudWxsIT13cy5pY3ZGb3JlKSYmUHMmJlBzLmNlbGxTdHlsZXMmJihRci5zPXt9LFFyLnMucGF0dGVyblR5cGU9d3MucGF0dGVyblR5cGUsUXIuWEYuZm9udCYmQnQoUXIucyxRci5YRi5mb250KSx3cy5mV3JhcCYmKChRci5zLmFsaWdubWVudHx8KFFyLnMuYWxp''@;'; put 'put ''Z25tZW50PXt9KSkud3JhcFRleHQ9ITApLHdzLmZTaHJpbmtUb0ZpdCYmKChRci5zLmFsaWdubWVudHx8KFFyLnMuYWxpZ25tZW50PXt9KSkuc2hyaW5rVG9GaXQ9ITApLHdzLmhhbGlnbiYmKChRci5zLmFsaWdubWVudHx8KFFyLnMuYWxpZ25tZW50PXt9KSkuaG9yaXpvbnRhbD13cy5oYWxp''@;'; put 'put ''Z24pLHdzLnZhbGlnbiYmKChRci5zLmFsaWdubWVudHx8KFFyLnMuYWxpZ25tZW50PXt9KSkudmVydGljYWw9d3MudmFsaWduKSx3cy5jSW5kZW50JiYoKFFyLnMuYWxpZ25tZW50fHwoUXIucy5hbGlnbm1lbnQ9e30pKS5pbmRlbnQ9d3MuY0luZGVudCksNjQhPXdzLmljdkZvcmUmJjY1IT13''@;'; put 'put ''cy5pY3ZCYWNrJiYoKFBhPU0xKERuKHdzLmljdkZvcmUpKSkmJihRci5zLmZnQ29sb3I9e3JnYjpQYX0pLChQYT1NMShEbih3cy5pY3ZCYWNrKSkpJiYoUXIucy5iZ0NvbG9yPXtyZ2I6UGF9KSksWyJMZWZ0IiwiUmlnaHQiLCJUb3AiLCJCb3R0b20iXS5mb3JFYWNoKGZ1bmN0aW9uKExjKXt3''@;'; put 'put ''c1siZGciK0xjXSYmKFFyLnNbTGMudG9Mb3dlckNhc2UoKV09e3N0eWxlOkUxW3dzWyJkZyIrTGNdXSxjb2xvcjp7cmdiOk0xKERuKHdzWyJpY3YiK0xjXSkpfX0pfSkpfSxlcj1mdW5jdGlvbihRcixQcyx3cyl7aWYoIShiaT4xfHx3cy5zaGVldFJvd3MmJlFyLnI+PXdzLnNoZWV0Um93cykp''@;'; put 'put ''e2lmKHdzLmNlbGxTdHlsZXMmJlBzLlhGJiZQcy5YRi5kYXRhJiZRbihQcyx3cyksZGVsZXRlIFBzLml4ZmUsZGVsZXRlIFBzLlhGLFdlPVFyLHJ0PUFpKFFyKSwoIWJlfHwhYmUuc3x8IWJlLmUpJiYoYmU9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSksUXIucjxiZS5zLnImJihiZS5zLnI9''@;'; put 'put ''UXIuciksUXIuYzxiZS5zLmMmJihiZS5zLmM9UXIuYyksUXIucisxPmJlLmUuciYmKGJlLmUucj1Rci5yKzEpLFFyLmMrMT5iZS5lLmMmJihiZS5lLmM9UXIuYysxKSx3cy5jZWxsRm9ybXVsYSYmUHMuZilmb3IodmFyIFBhPTA7UGE8a3QubGVuZ3RoOysrUGEpaWYoIShrdFtQYV1bMF0ucy5j''@;'; put 'put ''PlFyLmN8fGt0W1BhXVswXS5zLnI+UXIucnx8a3RbUGFdWzBdLmUuYzxRci5jfHxrdFtQYV1bMF0uZS5yPFFyLnIpKXtQcy5GPURpKGt0W1BhXVswXSksKGt0W1BhXVswXS5zLmMhPVFyLmN8fGt0W1BhXVswXS5zLnIhPVFyLnIpJiZkZWxldGUgUHMuZixQcy5mJiYoUHMuZj0iIitndShrdFtQ''@;'; put 'put ''YV1bMV0sYmUsUXIsRW4sem4pKTticmVha313cy5kZW5zZT8obmVbUXIucl18fChuZVtRci5yXT1bXSksbmVbUXIucl1bUXIuY109UHMpOm5lW3J0XT1Qc319LHpuPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpQdCxhcnJheWY6a3QscnJ0YWJpZDpbXSxsYXN0dXNlcjoiIixi''@;'; put 'put ''aWZmOjgsY29kZXBhZ2U6MCx3aW5sb2NrZWQ6MCxjZWxsU3R5bGVzOiEhUCYmISFQLmNlbGxTdHlsZXMsV1RGOiEhUCYmISFQLnd0Zn07em4ucGFzc3dvcmQ9UC5wYXNzd29yZD9QLnBhc3N3b3JkOiJWZWx2ZXRTd2VhdHNob3AiO3ZhciBpaSxLcj1udWxsLEVpPVtdLE9pPVtdLHRpPVtdLGZy''@;'; put 'put ''PVtdLHJyPSExLEVuPVtdO0VuLlNoZWV0TmFtZXM9em4uc25hbWVzLEVuLnNoYXJlZGY9em4uc2hhcmVkZixFbi5hcnJheWY9em4uYXJyYXlmLEVuLm5hbWVzPVtdLEVuLlhUST1bXTt2YXIgSWksQ3I9IiIsYmk9MCxxcj0wLFVpPVtdLExvPVtdO3puLmNvZGVwYWdlPTEyMDAseigxMjAwKTtm''@;'; put 'put ''b3IodmFyIHNzPSExO3kubDx5Lmxlbmd0aC0xOyl7dmFyIHVvPXkubCxObz15LnJlYWRfc2hpZnQoMik7aWYoem4mJnpuLmVuYyYmem4uZW5jLmluc2l0dSYmem4uZW5jLmluc2l0dShsZShbMCwwXSksImhlYWRlci0wIiksMD09PU5vJiYiRU9GIj09PUNyKWJyZWFrO3ZhciBFbz15Lmw9PT15''@;'; put 'put ''Lmxlbmd0aD8wOnkucmVhZF9zaGlmdCgyKTt6biYmem4uZW5jJiZ6bi5lbmMuaW5zaXR1JiZ6bi5lbmMuaW5zaXR1KGxlKFswLDBdKSwibGVuZ3RoLTAiKTt2YXIgYWk9TkNbTm9dO2lmKGFpJiZhaS5mKXtpZihQLmJvb2tTaGVldHMmJiJCb3VuZFNoZWV0OCI9PT1DciYmIkJvdW5kU2hlZXQ4''@;'; put 'put ''IiE9PWFpLm4pYnJlYWs7aWYoQ3I9YWkubiwyPT09YWkucnx8MTI9PWFpLnIpe3ZhciBLcz15LnJlYWRfc2hpZnQoMik7aWYoRW8tPTIsem4mJnpuLmVuYyYmem4uZW5jLmluc2l0dSYmem4uZW5jLmluc2l0dShsZShbMCwwXSkpLCF6bi5lbmMmJktzIT09Tm8mJigoMjU1JktzKTw8OHxLcz4+''@;'; put 'put ''OCkhPT1Obyl0aHJvdyBuZXcgRXJyb3IoInJ0IG1pc21hdGNoOiAiK0tzKyIhPSIrTm8pOzEyPT1haS5yJiYoeS5sKz0xMCxFby09MTAsem4mJnpuLmVuYyYmem4uZW5jLmluc2l0dSYmem4uZW5jLmluc2l0dShsZShbMCwwLDAsMCwwLDAsMCwwLDAsMF0pKSl9dmFyIE1uPVhBKGFpLHksRW8s''@;'; put 'put ''em4pLHlzPWFpLm47aWYoMD09YmkmJiJCT0YiIT15cyljb250aW51ZTtzd2l0Y2goeXMpe2Nhc2UiRGF0ZTE5MDQiOkwub3B0cy5EYXRlMTkwND1jbi5XQlByb3BzLmRhdGUxOTA0PU1uO2JyZWFrO2Nhc2UiV3JpdGVQcm90ZWN0IjpMLm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2Ui''@;'; put 'put ''RmlsZVBhc3MiOmlmKHpuLmVuY3x8KHkubD0wLGJpPTApLHpuLmVuYz1NbiwhUC5wYXNzd29yZCYmbnVsbD09TW4udmFsaWQpdGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpO2lmKG51bGw9PU1uLnZhbGlkKXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbiBz''@;'; put 'put ''Y2hlbWUgdW5zdXBwb3J0ZWQiKTtpZighTW4udmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIldyaXRlQWNjZXNzIjp6bi5sYXN0dXNlcj1NbjticmVhaztjYXNlIkZpbGVTaGFyaW5nIjpjYXNlIlRlbXBsYXRlIjpjYXNlIkJvb2tCb29s''@;'; put 'put ''IjpjYXNlIlVzZXNFTEZzIjpjYXNlIk1UUlNldHRpbmdzIjpjYXNlIlVuY2FsY2VkIjpjYXNlIkV4dFNTVCI6Y2FzZSJCb29rRXh0IjpjYXNlIlJpY2hUZXh0U3RyZWFtIjpjYXNlIkJrSGltIjpjYXNlIkluZGV4IjpjYXNlIlByb3Q0UmV2IjpjYXNlIlByb3Q0UmV2UGFzcyI6YnJlYWs7Y2Fz''@;'; put 'put ''ZSJDb2RlUGFnZSI6dmFyIHVyPU51bWJlcihNbik7c3dpdGNoKHVyKXtjYXNlIDIxMDEwOnVyPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODp1cj0xZTQ7YnJlYWs7Y2FzZSAzMjc2OTp1cj0xMjUyfXooem4uY29kZXBhZ2U9dXIpLHNzPSEwO2JyZWFrO2Nhc2UiUlJUYWJJZCI6em4ucnJ0YWJpZD1N''@;'; put 'put ''bjticmVhaztjYXNlIldpblByb3RlY3QiOnpuLndpbmxvY2tlZD1NbjticmVhaztjYXNlIlJlZnJlc2hBbGwiOmNhc2UiQ2FsY0NvdW50IjpjYXNlIkNhbGNEZWx0YSI6Y2FzZSJDYWxjSXRlciI6Y2FzZSJDYWxjTW9kZSI6Y2FzZSJDYWxjUHJlY2lzaW9uIjpjYXNlIkNhbGNTYXZlUmVjYWxj''@;'; put 'put ''IjpMLm9wdHNbeXNdPU1uO2JyZWFrO2Nhc2UiQ2FsY1JlZk1vZGUiOnpuLkNhbGNSZWZNb2RlPU1uO2JyZWFrO2Nhc2UiRm9yY2VGdWxsQ2FsY3VsYXRpb24iOkwub3B0cy5GdWxsQ2FsYz1NbjticmVhaztjYXNlIldzQm9vbCI6TW4uZkRpYWxvZyYmKG5lWyIhdHlwZSJdPSJkaWFsb2ciKSxN''@;'; put 'put ''bi5mQmVsb3d8fCgobmVbIiFvdXRsaW5lIl18fChuZVsiIW91dGxpbmUiXT17fSkpLmFib3ZlPSEwKSxNbi5mUmlnaHR8fCgobmVbIiFvdXRsaW5lIl18fChuZVsiIW91dGxpbmUiXT17fSkpLmxlZnQ9ITApO2JyZWFrO2Nhc2UiWEYiOk1uLmZvbnQ9Qm4uRm9udHNbTW4uaWZudDw0P01uLmlm''@;'; put 'put ''bnQ6TW4uaWZudC0xXSxnbi5wdXNoKE1uKTticmVhaztjYXNlIlN1cEJvb2siOkVuLnB1c2goW01uXSksRW5bRW4ubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIkV4dGVybk5hbWUiOkVuW0VuLmxlbmd0aC0xXS5wdXNoKE1uKTticmVhaztjYXNlIkxibCI6SWk9e05hbWU6TW4uTmFtZSxS''@;'; put 'put ''ZWY6Z3UoTW4ucmdjZSxiZSxudWxsLEVuLHpuKX0sTW4uaXRhYj4wJiYoSWkuU2hlZXQ9TW4uaXRhYi0xKSxFbi5uYW1lcy5wdXNoKElpKSxFblswXXx8KEVuWzBdPVtdLEVuWzBdLlhUST1bXSksRW5bRW4ubGVuZ3RoLTFdLnB1c2goTW4pLCJfeGxubS5fRmlsdGVyRGF0YWJhc2UiPT1Nbi5O''@;'; put 'put ''YW1lJiZNbi5pdGFiPjAmJk1uLnJnY2UmJk1uLnJnY2VbMF0mJk1uLnJnY2VbMF1bMF0mJiJQdGdBcmVhM2QiPT1Nbi5yZ2NlWzBdWzBdWzBdJiYoTG9bTW4uaXRhYi0xXT17cmVmOkRpKE1uLnJnY2VbMF1bMF1bMV1bMl0pfSk7YnJlYWs7Y2FzZSJFeHRlcm5Db3VudCI6em4uRXh0ZXJuQ291''@;'; put 'put ''bnQ9TW47YnJlYWs7Y2FzZSJFeHRlcm5TaGVldCI6MD09RW4ubGVuZ3RoJiYoRW5bMF09W10sRW5bMF0uWFRJPVtdKSxFbltFbi5sZW5ndGgtMV0uWFRJPUVuW0VuLmxlbmd0aC0xXS5YVEkuY29uY2F0KE1uKSxFbi5YVEk9RW4uWFRJLmNvbmNhdChNbik7YnJlYWs7Y2FzZSJOYW1lQ210Ijpp''@;'; put 'put ''Zih6bi5iaWZmPDgpYnJlYWs7bnVsbCE9SWkmJihJaS5Db21tZW50PU1uWzFdKTticmVhaztjYXNlIlByb3RlY3QiOm5lWyIhcHJvdGVjdCJdPU1uO2JyZWFrO2Nhc2UiUGFzc3dvcmQiOjAhPT1NbiYmem4uV1RGJiZjb25zb2xlLmVycm9yKCJQYXNzd29yZCB2ZXJpZmllcjogIitNbik7YnJl''@;'; put 'put ''YWs7Y2FzZSJCb3VuZFNoZWV0OCI6ZmVbTW4ucG9zXT1Nbix6bi5zbmFtZXMucHVzaChNbi5uYW1lKTticmVhaztjYXNlIkVPRiI6aWYobmVbIiFncmlkbGluZXMiXT0hS3J8fEtyLmdyaWQsS3I9bnVsbCwtLWJpKWJyZWFrO2lmKGJlLmUpe2lmKGJlLmUucj4wJiZiZS5lLmM+MCl7aWYoYmUu''@;'; put 'put ''ZS5yLS0sYmUuZS5jLS0sbmVbIiFyZWYiXT1EaShiZSksUC5zaGVldFJvd3MmJlAuc2hlZXRSb3dzPD1iZS5lLnIpe3ZhciBsbD1iZS5lLnI7YmUuZS5yPVAuc2hlZXRSb3dzLTEsbmVbIiFmdWxscmVmIl09bmVbIiFyZWYiXSxuZVsiIXJlZiJdPURpKGJlKSxiZS5lLnI9bGx9YmUuZS5yKyss''@;'; put 'put ''YmUuZS5jKyt9RWkubGVuZ3RoPjAmJihuZVsiIW1lcmdlcyJdPUVpKSxPaS5sZW5ndGg+MCYmSkEoT2ksbmUsQm4pLHRpLmxlbmd0aD4wJiYobmVbIiFjb2xzIl09dGkpLGZyLmxlbmd0aD4wJiYobmVbIiFyb3dzIl09ZnIpLGNuLlNoZWV0cy5wdXNoKFhuKX0iIj09PVZlP3plPW5lOlhbVmVd''@;'; put 'put ''PW5lLG5lPVAuZGVuc2U/W106e307YnJlYWs7Y2FzZSJCT0YiOmlmKDg9PT16bi5iaWZmJiYoem4uYmlmZj17OToyLDUyMTozLDEwMzM6NH1bTm9dfHx7NTEyOjIsNzY4OjMsMTAyNDo0LDEyODA6NSwxNTM2OjgsMjoyLDc6Mn1bTW4uQklGRlZlcl18fDgpLHpuLmJpZmZndWVzcz0wPT1Nbi5C''@;'; put 'put ''SUZGVmVyLDA9PU1uLkJJRkZWZXImJjQwOTY9PU1uLmR0JiYoem4uYmlmZj01LHNzPSEwLHooem4uY29kZXBhZ2U9Mjg1OTEpKSw4PT16bi5iaWZmJiYwPT1Nbi5CSUZGVmVyJiYxNj09TW4uZHQmJih6bi5iaWZmPTIpLGJpKyspYnJlYWs7aWYobmU9UC5kZW5zZT9bXTp7fSx6bi5iaWZmPDgm''@;'; put 'put ''JiFzcyYmKHNzPSEwLHooem4uY29kZXBhZ2U9UC5jb2RlcGFnZXx8MTI1MikpLHpuLmJpZmY8NXx8MD09TW4uQklGRlZlciYmNDA5Nj09TW4uZHQpeyIiPT09VmUmJihWZT0iU2hlZXQxIiksYmU9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTt2YXIgZWw9e3Bvczp5LmwtRW8sbmFtZTpWZX07''@;'; put 'put ''ZmVbZWwucG9zXT1lbCx6bi5zbmFtZXMucHVzaChWZSl9ZWxzZSBWZT0oZmVbdW9dfHx7bmFtZToiIn0pLm5hbWU7MzI9PU1uLmR0JiYobmVbIiF0eXBlIl09ImNoYXJ0IiksNjQ9PU1uLmR0JiYobmVbIiF0eXBlIl09Im1hY3JvIiksRWk9W10sT2k9W10sem4uYXJyYXlmPWt0PVtdLHRpPVtd''@;'; put 'put ''LGZyPVtdLHJyPSExLFhuPXtIaWRkZW46KGZlW3VvXXx8e2hzOjB9KS5ocyxuYW1lOlZlfTticmVhaztjYXNlIk51bWJlciI6Y2FzZSJCSUZGMk5VTSI6Y2FzZSJCSUZGMklOVCI6ImNoYXJ0Ij09bmVbIiF0eXBlIl0mJihQLmRlbnNlPyhuZVtNbi5yXXx8W10pW01uLmNdOm5lW0FpKHtjOk1u''@;'; put 'put ''LmMscjpNbi5yfSldKSYmKytNbi5jLER0PXtpeGZlOk1uLml4ZmUsWEY6Z25bTW4uaXhmZV18fHt9LHY6TW4udmFsLHQ6Im4ifSxxcj4wJiYoRHQuej1VaVtEdC5peGZlPj44JjYzXSksZmQoRHQsUCxMLm9wdHMuRGF0ZTE5MDQpLGVyKHtjOk1uLmMscjpNbi5yfSxEdCxQKTticmVhaztjYXNl''@;'; put 'put ''IkJvb2xFcnIiOkR0PXtpeGZlOk1uLml4ZmUsWEY6Z25bTW4uaXhmZV0sdjpNbi52YWwsdDpNbi50fSxxcj4wJiYoRHQuej1VaVtEdC5peGZlPj44JjYzXSksZmQoRHQsUCxMLm9wdHMuRGF0ZTE5MDQpLGVyKHtjOk1uLmMscjpNbi5yfSxEdCxQKTticmVhaztjYXNlIlJLIjpEdD17aXhmZTpN''@;'; put 'put ''bi5peGZlLFhGOmduW01uLml4ZmVdLHY6TW4ucmtudW0sdDoibiJ9LHFyPjAmJihEdC56PVVpW0R0Lml4ZmU+PjgmNjNdKSxmZChEdCxQLEwub3B0cy5EYXRlMTkwNCksZXIoe2M6TW4uYyxyOk1uLnJ9LER0LFApO2JyZWFrO2Nhc2UiTXVsUmsiOmZvcih2YXIgdGw9TW4uYzt0bDw9TW4uQzsr''@;'; put 'put ''K3RsKXt2YXIgUmM9TW4ucmtyZWNbdGwtTW4uY11bMF07RHQ9e2l4ZmU6UmMsWEY6Z25bUmNdLHY6TW4ucmtyZWNbdGwtTW4uY11bMV0sdDoibiJ9LHFyPjAmJihEdC56PVVpW0R0Lml4ZmU+PjgmNjNdKSxmZChEdCxQLEwub3B0cy5EYXRlMTkwNCksZXIoe2M6dGwscjpNbi5yfSxEdCxQKX1i''@;'; put 'put ''cmVhaztjYXNlIkZvcm11bGEiOmlmKCJTdHJpbmciPT1Nbi52YWwpe3ZlPU1uO2JyZWFrfWlmKChEdD1SNihNbi52YWwsTW4uY2VsbC5peGZlLE1uLnR0KSkuWEY9Z25bRHQuaXhmZV0sUC5jZWxsRm9ybXVsYSl7dmFyIE9hPU1uLmZvcm11bGE7aWYoT2EmJk9hWzBdJiZPYVswXVswXSYmIlB0''@;'; put 'put ''Z0V4cCI9PU9hWzBdWzBdWzBdKXt2YXIgcXQ9T2FbMF1bMF1bMV1bMF0sZm49T2FbMF1bMF1bMV1bMV0sTG49QWkoe3I6cXQsYzpmbn0pO1B0W0xuXT9EdC5mPSIiK2d1KE1uLmZvcm11bGEsYmUsTW4uY2VsbCxFbix6bik6RHQuRj0oKFAuZGVuc2U/KG5lW3F0XXx8W10pW2ZuXTpuZVtMbl0p''@;'; put 'put ''fHx7fSkuRn1lbHNlIER0LmY9IiIrZ3UoTW4uZm9ybXVsYSxiZSxNbi5jZWxsLEVuLHpuKX1xcj4wJiYoRHQuej1VaVtEdC5peGZlPj44JjYzXSksZmQoRHQsUCxMLm9wdHMuRGF0ZTE5MDQpLGVyKE1uLmNlbGwsRHQsUCksdmU9TW47YnJlYWs7Y2FzZSJTdHJpbmciOmlmKCF2ZSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7dmUudmFsPU1uLChEdD1SNihNbix2ZS5jZWxsLml4ZmUsInMiKSkuWEY9Z25bRHQuaXhmZV0sUC5jZWxsRm9ybXVsYSYmKER0LmY9IiIrZ3UodmUuZm9ybXVsYSxiZSx2ZS5jZWxsLEVuLHpuKSkscXI+MCYmKER0Lno9''@;'; put 'put ''VWlbRHQuaXhmZT4+OCY2M10pLGZkKER0LFAsTC5vcHRzLkRhdGUxOTA0KSxlcih2ZS5jZWxsLER0LFApLHZlPW51bGw7YnJlYWs7Y2FzZSJBcnJheSI6a3QucHVzaChNbik7dmFyIFhyPUFpKE1uWzBdLnMpO2lmKGx0PVAuZGVuc2U/KG5lW01uWzBdLnMucl18fFtdKVtNblswXS5zLmNdOm5l''@;'; put 'put ''W1hyXSxQLmNlbGxGb3JtdWxhJiZsdCl7aWYoIXZlfHwhWHJ8fCFsdClicmVhaztsdC5mPSIiK2d1KE1uWzFdLGJlLE1uWzBdLEVuLHpuKSxsdC5GPURpKE1uWzBdKX1icmVhaztjYXNlIlNockZtbGEiOmlmKCFQLmNlbGxGb3JtdWxhKWJyZWFrO2lmKHJ0KXtpZighdmUpYnJlYWs7UHRbQWko''@;'; put 'put ''dmUuY2VsbCldPU1uWzBdLCgobHQ9UC5kZW5zZT8obmVbdmUuY2VsbC5yXXx8W10pW3ZlLmNlbGwuY106bmVbQWkodmUuY2VsbCldKXx8e30pLmY9IiIrZ3UoTW5bMF0sYmUsV2UsRW4sem4pfWJyZWFrO2Nhc2UiTGFiZWxTc3QiOkR0PVI2KHllW01uLmlzc3RdLnQsTW4uaXhmZSwicyIpLHll''@;'; put 'put ''W01uLmlzc3RdLmgmJihEdC5oPXllW01uLmlzc3RdLmgpLER0LlhGPWduW0R0Lml4ZmVdLHFyPjAmJihEdC56PVVpW0R0Lml4ZmU+PjgmNjNdKSxmZChEdCxQLEwub3B0cy5EYXRlMTkwNCksZXIoe2M6TW4uYyxyOk1uLnJ9LER0LFApLHllW01uLmlzc3RdLlImJihEdC5SPXllW01uLmlzc3Rd''@;'; put 'put ''LlIubWFwKGZ1bmN0aW9uKFZpKXt2YXIgUXI9S3QoVmkpO3JldHVybiBWaS5zPT1Cbi5Gb250c1swXSYmKFFyLnM9RHQucyksUXJ9KSk7YnJlYWs7Y2FzZSJCbGFuayI6UC5zaGVldFN0dWJzJiYoRHQ9e2l4ZmU6TW4uaXhmZSxYRjpnbltNbi5peGZlXSx0OiJ6In0scXI+MCYmKER0Lno9VWlb''@;'; put 'put ''RHQuaXhmZT4+OCY2M10pLGZkKER0LFAsTC5vcHRzLkRhdGUxOTA0KSxlcih7YzpNbi5jLHI6TW4ucn0sRHQsUCkpO2JyZWFrO2Nhc2UiTXVsQmxhbmsiOmlmKFAuc2hlZXRTdHVicylmb3IodmFyIHFuPU1uLmM7cW48PU1uLkM7Kytxbil7dmFyIG5pPU1uLml4ZmVbcW4tTW4uY107RHQ9e2l4''@;'; put 'put ''ZmU6bmksWEY6Z25bbmldLHQ6InoifSxxcj4wJiYoRHQuej1VaVtEdC5peGZlPj44JjYzXSksZmQoRHQsUCxMLm9wdHMuRGF0ZTE5MDQpLGVyKHtjOnFuLHI6TW4ucn0sRHQsUCl9YnJlYWs7Y2FzZSJSU3RyaW5nIjpjYXNlIkxhYmVsIjpjYXNlIkJJRkYyU1RSIjooRHQ9UjYoTW4udmFsLE1u''@;'; put 'put ''Lml4ZmUsInMiKSkuWEY9Z25bRHQuaXhmZV0scXI+MCYmKER0Lno9VWlbRHQuaXhmZT4+OCY2M10pLGZkKER0LFAsTC5vcHRzLkRhdGUxOTA0KSxlcih7YzpNbi5jLHI6TW4ucn0sRHQsUCk7YnJlYWs7Y2FzZSJEaW1lbnNpb25zIjoxPT09YmkmJihiZT1Nbik7YnJlYWs7Y2FzZSJTU1QiOih5''@;'; put 'put ''ZT1NbikuZm9yRWFjaChmdW5jdGlvbihWaSl7VmkuX1I/KFZpLl9SWzBdJiZWaS5fUlswXS5pZHg+MCYmVmkuX1IudW5zaGlmdCh7aWR4OjAsaWZudDowfSksVmkuUj1WaS5fUi5tYXAoZnVuY3Rpb24oUXIsUHMpe3JldHVybnt0OiJzIix2OlZpLnQuc2xpY2UoUXIuaWR4LChWaS5fUltQcysx''@;'; put 'put ''XXx8e30pLmlkeCksczpCbi5Gb250c1tRci5pZm50PDQ/UXIuaWZudDpRci5pZm50LTFdfX0pLFAuY2VsbEhUTUwmJihWaS5oPVdjKFZpLlIpKSk6UC5jZWxsSFRNTCYmKFZpLmg9WGkoVmkudCkpLGRlbGV0ZSBWaS5fUn0pO2JyZWFrO2Nhc2UiRm9ybWF0IjppZig0PT16bi5iaWZmKXtVaVtx''@;'; put 'put ''cisrXT1NblsxXTtmb3IodmFyIGFyPTA7YXI8cXIrMTYzJiZ3Ll90YWJsZVthcl0hPU1uWzFdOysrYXIpO2FyPj0xNjMmJncubG9hZChNblsxXSxxcisxNjMpfWVsc2Ugdy5sb2FkKE1uWzFdLE1uWzBdKTticmVhaztjYXNlIkJJRkYyRk9STUFUIjpVaVtxcisrXT1Nbjtmb3IodmFyIHJpPTA7''@;'; put 'put ''cmk8cXIrMTYzJiZ3Ll90YWJsZVtyaV0hPU1uOysrcmkpO3JpPj0xNjMmJncubG9hZChNbixxcisxNjMpO2JyZWFrO2Nhc2UiTWVyZ2VDZWxscyI6RWk9RWkuY29uY2F0KE1uKTticmVhaztjYXNlIk9iaiI6T2lbTW4uY21vWzBdXT16bi5sYXN0b2JqPU1uO2JyZWFrO2Nhc2UiVHhPIjp6bi5s''@;'; put 'put ''YXN0b2JqLlR4Tz1NbjticmVhaztjYXNlIkltRGF0YSI6em4ubGFzdG9iai5JbURhdGE9TW47YnJlYWs7Y2FzZSJITGluayI6Zm9yKHZ0PU1uWzBdLnMucjt2dDw9TW5bMF0uZS5yOysrdnQpZm9yKGF0PU1uWzBdLnMuYzthdDw9TW5bMF0uZS5jOysrYXQpKGx0PVAuZGVuc2U/KG5lW3Z0XXx8''@;'; put 'put ''W10pW2F0XTpuZVtBaSh7YzphdCxyOnZ0fSldKSYmKGx0Lmw9TW5bMV0pO2JyZWFrO2Nhc2UiSExpbmtUb29sdGlwIjpmb3IodnQ9TW5bMF0ucy5yO3Z0PD1NblswXS5lLnI7Kyt2dClmb3IoYXQ9TW5bMF0ucy5jO2F0PD1NblswXS5lLmM7KythdCkobHQ9UC5kZW5zZT8obmVbdnRdfHxbXSlb''@;'; put 'put ''YXRdOm5lW0FpKHtjOmF0LHI6dnR9KV0pJiZsdC5sJiYobHQubC5Ub29sdGlwPU1uWzFdKTticmVhaztjYXNlIk5vdGUiOmlmKHpuLmJpZmY8PTUmJnpuLmJpZmY+PTIpYnJlYWs7bHQ9UC5kZW5zZT8obmVbTW5bMF0ucl18fFtdKVtNblswXS5jXTpuZVtBaShNblswXSldO3ZhciBibz1PaVtN''@;'; put 'put ''blsyXV07bHR8fChQLmRlbnNlPyhuZVtNblswXS5yXXx8KG5lW01uWzBdLnJdPVtdKSxsdD1uZVtNblswXS5yXVtNblswXS5jXT17dDoieiJ9KTpsdD1uZVtBaShNblswXSldPXt0OiJ6In0sYmUuZS5yPU1hdGgubWF4KGJlLmUucixNblswXS5yKSxiZS5zLnI9TWF0aC5taW4oYmUucy5yLE1u''@;'; put 'put ''WzBdLnIpLGJlLmUuYz1NYXRoLm1heChiZS5lLmMsTW5bMF0uYyksYmUucy5jPU1hdGgubWluKGJlLnMuYyxNblswXS5jKSksbHQuY3x8KGx0LmM9W10pLGx0LmMucHVzaCh7YTpNblsxXSx0OmJvLlR4Ty50fSk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2goYWkubil7Y2FzZSJDbHJ0Q2xpZW50Ijpj''@;'; put 'put ''YXNlIkhlYWRlciI6Y2FzZSJGb290ZXIiOmNhc2UiSENlbnRlciI6Y2FzZSJWQ2VudGVyIjpjYXNlIlBscyI6Y2FzZSJHQ1ciOmNhc2UiTEhSZWNvcmQiOmNhc2UiREJDZWxsIjpjYXNlIkVudEV4VTIiOmNhc2UiU3hWaWV3IjpjYXNlIlN4dmQiOmNhc2UiU1hWSSI6Y2FzZSJTWFZERXgiOmNh''@;'; put 'put ''c2UiU3hJdmQiOmNhc2UiU1hTdHJpbmciOmNhc2UiU3luYyI6Y2FzZSJBZGRpbiI6Y2FzZSJTWERJIjpjYXNlIlNYTEkiOmNhc2UiU1hFeCI6Y2FzZSJRc2lTWFRhZyI6Y2FzZSJGZWF0IjpjYXNlIkZlYXRIZHIiOmNhc2UiRmVhdEhkcjExIjpjYXNlIkZlYXR1cmUxMSI6Y2FzZSJGZWF0dXJl''@;'; put 'put ''MTIiOmNhc2UiTGlzdDEyIjpjYXNlIlJlY2FsY0lkIjpjYXNlIkR4R0NvbCI6Y2FzZSJGYmkiOmNhc2UiRmJpMiI6Y2FzZSJHZWxGcmFtZSI6Y2FzZSJYRkNSQyI6Y2FzZSJTdHlsZSI6Y2FzZSJTdHlsZUV4dCI6Y2FzZSJTY2VuYXJpb1Byb3RlY3QiOmNhc2UiT2JqUHJvdGVjdCI6Y2FzZSJD''@;'; put 'put ''b25kRm10MTIiOmNhc2UiVGFibGUiOmNhc2UiVGFibGVTdHlsZXMiOmNhc2UiVGFibGVTdHlsZSI6Y2FzZSJUYWJsZVN0eWxlRWxlbWVudCI6Y2FzZSJTWFN0cmVhbUlEIjpjYXNlIlNYVlMiOmNhc2UiRENvblJlZiI6Y2FzZSJTWEFkZGwiOmNhc2UiRENvbkJpbiI6Y2FzZSJEQ29uTmFtZSI6''@;'; put 'put ''Y2FzZSJTWFBJIjpjYXNlIlN4Rm9ybWF0IjpjYXNlIlN4U2VsZWN0IjpjYXNlIlN4UnVsZSI6Y2FzZSJTeEZpbHQiOmNhc2UiU3hJdG0iOmNhc2UiU3hEWEYiOmNhc2UiU2Nlbk1hbiI6Y2FzZSJEQ29uIjpjYXNlIkNlbGxXYXRjaCI6Y2FzZSJQcmludFJvd0NvbCI6Y2FzZSJQcmludEdyaWQi''@;'; put 'put ''OmNhc2UiUHJpbnRTaXplIjpjYXNlIlhDVCI6Y2FzZSJDUk4iOmNhc2UiU2NsIjpjYXNlIlNoZWV0RXh0IjpjYXNlIlNoZWV0RXh0T3B0aW9uYWwiOmNhc2UiT2JOb01hY3JvcyI6Y2FzZSJPYlByb2oiOmNhc2UiR1VJRFR5cGVMaWIiOmNhc2UiV09wdCI6Y2FzZSJQaG9uZXRpY0luZm8iOmNh''@;'; put 'put ''c2UiT2xlT2JqZWN0U2l6ZSI6Y2FzZSJEWEYiOmNhc2UiRFhGTiI6Y2FzZSJEWEZOMTIiOmNhc2UiRFhGTjEyTGlzdCI6Y2FzZSJEWEZOMTJOb0NCIjpjYXNlIkR2IjpjYXNlIkRWYWwiOmNhc2UiQlJBSSI6Y2FzZSJTZXJpZXMiOmNhc2UiU2VyaWVzVGV4dCI6Y2FzZSJEQ29ubiI6Y2FzZSJE''@;'; put 'put ''Yk9yUGFyYW1RcnkiOmNhc2UiREJRdWVyeUV4dCI6Y2FzZSJPbGVEYkNvbm4iOmNhc2UiRXh0U3RyaW5nIjpjYXNlIklGbXRSZWNvcmQiOmNhc2UiQ29uZEZtdCI6Y2FzZSJDRiI6Y2FzZSJDRjEyIjpjYXNlIkNGRXgiOmNhc2UiRXhjZWw5RmlsZSI6Y2FzZSJVbml0cyI6Y2FzZSJJbnRlcmZh''@;'; put 'put ''Y2VIZHIiOmNhc2UiTW1zIjpjYXNlIkludGVyZmFjZUVuZCI6Y2FzZSJEU0YiOmNhc2UiQnVpbHRJbkZuR3JvdXBDb3VudCI6Y2FzZSJXaW5kb3cxIjpjYXNlIkhpZGVPYmoiOmNhc2UiR3JpZFNldCI6Y2FzZSJHdXRzIjpjYXNlIlVzZXJCVmlldyI6Y2FzZSJVc2VyU1ZpZXdCZWdpbiI6Y2Fz''@;'; put 'put ''ZSJVc2VyU1ZpZXdFbmQiOmNhc2UiRGVmQ29sV2lkdGgiOmNhc2UiRGVmYXVsdFJvd0hlaWdodCI6YnJlYWs7Y2FzZSJYRkV4dCI6bGsoZ25bTW4uaXhmZV0sTW4uZXh0KTticmVhaztjYXNlIkNvbEluZm8iOmlmKCF6bi5jZWxsU3R5bGVzKWJyZWFrO2Zvcig7TW4uZT49TW4uczspdGlbTW4u''@;'; put 'put ''ZS0tXT17d2lkdGg6TW4udy8yNTYsbGV2ZWw6TW4ubGV2ZWx8fDAsaGlkZGVuOiEhKDEmTW4uZmxhZ3MpfSxycnx8KHJyPSEwKSxfMCh0aVtNbi5lKzFdKTticmVhaztjYXNlIlJvdyI6dmFyIG9pPXt9O251bGwhPU1uLmxldmVsJiYoZnJbTW4ucl09b2ksb2kubGV2ZWw9TW4ubGV2ZWwpLE1u''@;'; put 'put ''LmhpZGRlbiYmKGZyW01uLnJdPW9pLG9pLmhpZGRlbj0hMCksTW4uaHB0JiYoZnJbTW4ucl09b2ksb2kuaHB0PU1uLmhwdCxvaS5ocHg9Y2QoTW4uaHB0KSksTW4uaXhmZSYmKGZyW01uLnJdPW9pLFFuKER0PXtpeGZlOk1uLml4ZmUsWEY6Z25bTW4uaXhmZV18fHt9LHY6MCx0OiJuIn0sUCks''@;'; put 'put ''b2kucz1EdC5zKTticmVhaztjYXNlIkxlZnRNYXJnaW4iOmNhc2UiUmlnaHRNYXJnaW4iOmNhc2UiVG9wTWFyZ2luIjpjYXNlIkJvdHRvbU1hcmdpbiI6bmVbIiFtYXJnaW5zIl18fG4zKG5lWyIhbWFyZ2lucyJdPXt9KSxuZVsiIW1hcmdpbnMiXVt5cy5zbGljZSgwLC02KS50b0xvd2VyQ2Fz''@;'; put 'put ''ZSgpXT1NbjticmVhaztjYXNlIlNlbGVjdGlvbiI6bmVbIiFzZWwiXT1NbjticmVhaztjYXNlIlNldHVwIjpuZVsiIW1hcmdpbnMiXXx8bjMobmVbIiFtYXJnaW5zIl09e30pLG5lWyIhbWFyZ2lucyJdLmhlYWRlcj1Nbi5oZWFkZXIsbmVbIiFtYXJnaW5zIl0uZm9vdGVyPU1uLmZvb3Rlcjti''@;'; put 'put ''cmVhaztjYXNlIldpbmRvdzIiOk1uLlJUTCYmKGNuLlZpZXdzWzBdLlJUTD0hMCksS3I9TW47YnJlYWs7Y2FzZSJDb3VudHJ5IjpadD1NbjticmVhaztjYXNlIkZvbnQiOk1uLmljdiYmRG4oTW4uaWN2KSYmKE1uLmNvbG9yPXtyZ2I6TTEoRG4oTW4uaWN2KSl9KSxkZWxldGUgTW4uaWN2LDA9''@;'; put 'put ''PUJuLkZvbnRzLmxlbmd0aCYmRnAoTW4pLEJuLkZvbnRzLnB1c2goTW4pO2JyZWFrO2Nhc2UiUGFsZXR0ZSI6JG49TW47YnJlYWs7Y2FzZSJUaGVtZSI6aWk9TW47YnJlYWs7Y2FzZSJDb2RlTmFtZSI6VmU/WG4uQ29kZU5hbWU9TW58fFhuLm5hbWU6Y24uV0JQcm9wcy5Db2RlTmFtZT1Nbnx8''@;'; put 'put ''IlRoaXNXb3JrYm9vayI7YnJlYWs7Y2FzZSJQYW5lIjooS3J8fHt9KS5mcm96ZW4mJihuZVsiIWZyZWV6ZSJdPUFpKHtyOk1uLnl8fDAsYzpNbi54fHwwfSkpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGFpLm4pe2Nhc2UiRGF0IjpjYXNlIkJlZ2luIjpjYXNlIkVuZCI6Y2FzZSJTdGFydEJsb2Nr''@;'; put 'put ''IjpjYXNlIkVuZEJsb2NrIjpjYXNlIkZyYW1lIjpjYXNlIkFyZWEiOmNhc2UiQXhpcyI6Y2FzZSJBeGlzTGluZSI6Y2FzZSJUaWNrIjpjYXNlIkF4ZXNVc2VkIjpjYXNlIkNydExheW91dDEyIjpjYXNlIkNydExheW91dDEyQSI6Y2FzZSJDcnRMaW5rIjpjYXNlIkNydExpbmUiOmNhc2UiQ3J0''@;'; put 'put ''TWxGcnQiOmNhc2UiQ3J0TWxGcnRDb250aW51ZSI6Y2FzZSJMaW5lRm9ybWF0IjpjYXNlIkFyZWFGb3JtYXQiOmNhc2UiQ2hhcnQiOmNhc2UiQ2hhcnQzZCI6Y2FzZSJDaGFydDNEQmFyU2hhcGUiOmNhc2UiQ2hhcnRGb3JtYXQiOmNhc2UiQ2hhcnRGcnRJbmZvIjpjYXNlIlBsb3RBcmVhIjpj''@;'; put 'put ''YXNlIlBsb3RHcm93dGgiOmNhc2UiU2VyaWVzTGlzdCI6Y2FzZSJTZXJQYXJlbnQiOmNhc2UiU2VyQXV4VHJlbmQiOmNhc2UiRGF0YUZvcm1hdCI6Y2FzZSJTZXJUb0NydCI6Y2FzZSJGb250WCI6Y2FzZSJDYXRTZXJSYW5nZSI6Y2FzZSJBeGNFeHQiOmNhc2UiU2VyRm10IjpjYXNlIlNodFBy''@;'; put 'put ''b3BzIjpjYXNlIkRlZmF1bHRUZXh0IjpjYXNlIlRleHQiOmNhc2UiQ2F0TGFiIjpjYXNlIkRhdGFMYWJFeHRDb250ZW50cyI6Y2FzZSJMZWdlbmQiOmNhc2UiTGVnZW5kRXhjZXB0aW9uIjpjYXNlIlBpZSI6Y2FzZSJTY2F0dGVyIjpjYXNlIlBpZUZvcm1hdCI6Y2FzZSJNYXJrZXJGb3JtYXQi''@;'; put 'put ''OmNhc2UiU3RhcnRPYmplY3QiOmNhc2UiRW5kT2JqZWN0IjpjYXNlIkFsUnVucyI6Y2FzZSJPYmplY3RMaW5rIjpjYXNlIlNJSW5kZXgiOmNhc2UiQXR0YWNoZWRMYWJlbCI6Y2FzZSJZTXVsdCI6Y2FzZSJMaW5lIjpjYXNlIkJhciI6Y2FzZSJTdXJmIjpjYXNlIkF4aXNQYXJlbnQiOmNhc2Ui''@;'; put 'put ''UG9zIjpjYXNlIlZhbHVlUmFuZ2UiOmNhc2UiU1hWaWV3RXg5IjpjYXNlIlNYVmlld0xpbmsiOmNhc2UiUGl2b3RDaGFydEJpdHMiOmNhc2UiU0Jhc2VSZWYiOmNhc2UiVGV4dFByb3BzU3RyZWFtIjpjYXNlIkxuRXh0IjpjYXNlIk1rckV4dCI6Y2FzZSJDcnRDb29wdCI6Y2FzZSJRc2kiOmNh''@;'; put 'put ''c2UiUXNpZiI6Y2FzZSJRc2lyIjpjYXNlIlFzaVNYVGFnIjpjYXNlIlR4dFFyeSI6Y2FzZSJGaWx0ZXJNb2RlIjpjYXNlIkF1dG9GaWx0ZXIiOmNhc2UiQXV0b0ZpbHRlckluZm8iOmNhc2UiQXV0b0ZpbHRlcjEyIjpjYXNlIkRyb3BEb3duT2JqSWRzIjpjYXNlIlNvcnQiOmNhc2UiU29ydERh''@;'; put 'put ''dGEiOmNhc2UiU2hhcGVQcm9wc1N0cmVhbSI6Y2FzZSJNc29EcmF3aW5nIjpjYXNlIk1zb0RyYXdpbmdHcm91cCI6Y2FzZSJNc29EcmF3aW5nU2VsZWN0aW9uIjpjYXNlIldlYlB1YiI6Y2FzZSJBdXRvV2ViUHViIjpjYXNlIkhlYWRlckZvb3RlciI6Y2FzZSJIRlBpY3R1cmUiOmNhc2UiUExW''@;'; put 'put ''IjpjYXNlIkhvcml6b250YWxQYWdlQnJlYWtzIjpjYXNlIlZlcnRpY2FsUGFnZUJyZWFrcyI6Y2FzZSJCYWNrdXAiOmNhc2UiQ29tcHJlc3NQaWN0dXJlcyI6Y2FzZSJDb21wYXQxMiI6Y2FzZSJDb250aW51ZSI6Y2FzZSJDb250aW51ZUZydDEyIjpjYXNlIkZydEZvbnRMaXN0IjpjYXNlIkZy''@;'; put 'put ''dFdyYXBwZXIiOmJyZWFrO2RlZmF1bHQ6c3dpdGNoKGFpLm4pe2Nhc2UiVGFiSWRDb25mIjpjYXNlIlJhZGFyIjpjYXNlIlJhZGFyQXJlYSI6Y2FzZSJEcm9wQmFyIjpjYXNlIkludGwiOmNhc2UiQ29vcmRMaXN0IjpjYXNlIlNlckF1eEVyckJhciI6Y2FzZSJCSUZGMkZPTlRDTFIiOmNhc2Ui''@;'; put 'put ''QklGRjJGTVRDTlQiOmNhc2UiQklGRjJGT05UWFRSQSI6Y2FzZSJCSUZGMlhGIjpjYXNlIkJJRkYzWEYiOmNhc2UiQklGRjRYRiI6Y2FzZSJCSUZGMlhGSU5ERVgiOmNhc2UiQklGRjRGTVRDTlQiOmNhc2UiQklGRjJST1ciOmNhc2UiQklGRjJXSU5ET1cyIjpjYXNlIlNDRU5BUklPIjpjYXNl''@;'; put 'put ''IkRDb25CaW4iOmNhc2UiUGljRiI6Y2FzZSJEYXRhTGFiRXh0IjpjYXNlIkxlbCI6Y2FzZSJCb3BQb3AiOmNhc2UiQm9wUG9wQ3VzdG9tIjpjYXNlIlJlYWxUaW1lRGF0YSI6Y2FzZSJOYW1lIjpjYXNlIkxITkdyYXBoIjpjYXNlIkZuR3JvdXBOYW1lIjpjYXNlIkFkZE1lbnUiOmNhc2UiTFBy''@;'; put 'put ''IjpjYXNlIkxpc3RPYmoiOmNhc2UiTGlzdEZpZWxkIjpjYXNlIlJSU29ydCI6Y2FzZSJCaWdOYW1lIjpjYXNlIlRvb2xiYXJIZHIiOmNhc2UiVG9vbGJhckVuZCI6Y2FzZSJEREVPYmpOYW1lIjpjYXNlIkZSVEFyY2hJZCQiOmJyZWFrO2RlZmF1bHQ6aWYoUC5XVEYpdGhyb3ciVW5yZWNvZ25p''@;'; put 'put ''emVkIFJlY29yZCAiK2FpLm59fX19fWVsc2UgeS5sKz1Fbyx6biYmem4uZW5jJiZ6bi5lbmMuaW5zaXR1JiZ6bi5lbmMuaW5zaXR1KGxlKHtsZW5ndGg6RW99KSl9cmV0dXJuIEwuU2hlZXROYW1lcz1vdChmZSkuc29ydChmdW5jdGlvbihWaSxRcil7cmV0dXJuIE51bWJlcihWaSktTnVtYmVy''@;'; put 'put ''KFFyKX0pLm1hcChmdW5jdGlvbihWaSl7cmV0dXJuIGZlW1ZpXS5uYW1lfSksUC5ib29rU2hlZXRzfHwoTC5TaGVldHM9WCksIUwuU2hlZXROYW1lcy5sZW5ndGgmJnplWyIhcmVmIl0/KEwuU2hlZXROYW1lcy5wdXNoKCJTaGVldDEiKSxMLlNoZWV0cyYmKEwuU2hlZXRzLlNoZWV0MT16ZSkp''@;'; put 'put ''OkwuUHJlYW1ibGU9emUsTC5TaGVldHMmJkxvLmZvckVhY2goZnVuY3Rpb24oVmksUXIpe0wuU2hlZXRzW0wuU2hlZXROYW1lc1tRcl1dWyIhYXV0b2ZpbHRlciJdPVZpfSksTC5TdHJpbmdzPXllLEwuU1NGPXcuZ2V0X3RhYmxlKCksem4uZW5jJiYoTC5FbmNyeXB0aW9uPXpuLmVuYyksaWkm''@;'; put 'put ''JihMLlRoZW1lcz1paSksTC5NZXRhZGF0YT17fSx2b2lkIDAhPT1adCYmKEwuTWV0YWRhdGEuQ291bnRyeT1adCksRW4ubmFtZXMubGVuZ3RoPjAmJihjbi5OYW1lcz1Fbi5uYW1lcyksTC5Xb3JrYm9vaz1jbixMfShYLmNvbnRlbnQsUCk7ZWxzZSBpZigoZmU9RGUuZmluZCh5LCJQZXJmZWN0''@;'; put 'put ''T2ZmaWNlX01BSU4iKSkmJmZlLmNvbnRlbnQpbmU9RTkudG9fd29ya2Jvb2soZmUuY29udGVudCwoUC50eXBlPWJlLFApKTtlbHNle2lmKCEoZmU9RGUuZmluZCh5LCJOYXRpdmVDb250ZW50X01BSU4iKSl8fCFmZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jv''@;'; put 'put ''b2sgc3RyZWFtIik7bmU9RTkudG9fd29ya2Jvb2soZmUuY29udGVudCwoUC50eXBlPWJlLFApKX1QLmJvb2tWQkEmJnkuRnVsbFBhdGhzJiZEZS5maW5kKHksIi9fVkJBX1BST0pFQ1RfQ1VSL1ZCQS9kaXIiKSYmKG5lLnZiYXJhdz1mdW5jdGlvbiB2ayh5KXt2YXIgUD1EZS51dGlscy5jZmJf''@;'; put 'put ''bmV3KHtyb290OiJSIn0pO3JldHVybiB5LkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKEwsWCl7aWYoIi8iIT09TC5zbGljZSgtMSkmJkwubWF0Y2goL19WQkFfUFJPSkVDVF9DVVIvKSl7dmFyIG5lPUwucmVwbGFjZSgvXlteXC9dKi8sIlIiKS5yZXBsYWNlKC9cL19WQkFfUFJPSkVDVF9D''@;'; put 'put ''VVJcdTAwMDAqLywiIik7RGUudXRpbHMuY2ZiX2FkZChQLG5lLHkuRmlsZUluZGV4W1hdLmNvbnRlbnQpfX0pLERlLndyaXRlKFApfSh5KSl9dmFyIHZlPXt9O3JldHVybiB5LkZ1bGxQYXRocyYmZnVuY3Rpb24gR1EoeSxQLEwpe3ZhciBYPURlLmZpbmQoeSwiIURvY3VtZW50U3VtbWFyeUlu''@;'; put 'put ''Zm9ybWF0aW9uIik7aWYoWCYmWC5zaXplPjApdHJ5e3ZhciBuZT1qNShYLHdwLEN2LkRTSSk7Zm9yKHZhciBmZSBpbiBuZSlQW2ZlXT1uZVtmZV19Y2F0Y2goVmUpe2lmKEwuV1RGKXRocm93IFZlfXZhciBiZT1EZS5maW5kKHksIiFTdW1tYXJ5SW5mb3JtYXRpb24iKTtpZihiZSYmYmUuc2l6''@;'; put 'put ''ZT4wKXRyeXt2YXIgdmU9ajUoYmUsbWcsQ3YuU0kpO2Zvcih2YXIgeWUgaW4gdmUpbnVsbD09UFt5ZV0mJihQW3llXT12ZVt5ZV0pfWNhdGNoKFZlKXtpZihMLldURil0aHJvdyBWZX1QLkhlYWRpbmdQYWlycyYmUC5UaXRsZXNPZlBhcnRzJiYoeHAoUC5IZWFkaW5nUGFpcnMsUC5UaXRsZXNP''@;'; put 'put ''ZlBhcnRzLFAsTCksZGVsZXRlIFAuSGVhZGluZ1BhaXJzLGRlbGV0ZSBQLlRpdGxlc09mUGFydHMpfSh5LHZlLFApLG5lLlByb3BzPW5lLkN1c3Rwcm9wcz12ZSxQLmJvb2tGaWxlcyYmKG5lLmNmYj15KSxuZX12YXIgTDY9ezA6e246IkJydFJvd0hkciIsZjpmdW5jdGlvbiBmQSh5LFApe3Zh''@;'; put 'put ''ciBMPXt9LFg9eS5sK1A7TC5yPXkucmVhZF9zaGlmdCg0KSx5LmwrPTQ7dmFyIG5lPXkucmVhZF9zaGlmdCgyKTt5LmwrPTE7dmFyIGZlPXkucmVhZF9zaGlmdCgxKTtyZXR1cm4geS5sPVgsNyZmZSYmKEwubGV2ZWw9NyZmZSksMTYmZmUmJihMLmhpZGRlbj0hMCksMzImZmUmJihMLmhwdD1u''@;'; put 'put ''ZS8yMCksTH19LDE6e246IkJydENlbGxCbGFuayIsZjpmdW5jdGlvbiBOUSh5KXtyZXR1cm5bWjAoeSldfX0sMjp7bjoiQnJ0Q2VsbFJrIixmOmZ1bmN0aW9uIERWKHkpe3JldHVybltaMCh5KSxZMCh5KSwibiJdfX0sMzp7bjoiQnJ0Q2VsbEVycm9yIixmOmZ1bmN0aW9uIHZBKHkpe3JldHVy''@;'; put 'put ''bltaMCh5KSx5LnJlYWRfc2hpZnQoMSksImUiXX19LDQ6e246IkJydENlbGxCb29sIixmOmZ1bmN0aW9uIFNWKHkpe3JldHVybltaMCh5KSx5LnJlYWRfc2hpZnQoMSksImIiXX19LDU6e246IkJydENlbGxSZWFsIixmOmZ1bmN0aW9uIHBDKHkpe3JldHVybltaMCh5KSx6YSh5KSwibiJdfX0s''@;'; put 'put ''Njp7bjoiQnJ0Q2VsbFN0IixmOmZ1bmN0aW9uIEJRKHkpe3JldHVybltaMCh5KSxrYyh5KSwic3RyIl19fSw3OntuOiJCcnRDZWxsSXNzdCIsZjpmdW5jdGlvbiB4Vih5KXtyZXR1cm5bWjAoeSkseS5yZWFkX3NoaWZ0KDQpLCJzIl19fSw4OntuOiJCcnRGbWxhU3RyaW5nIixmOmZ1bmN0aW9u''@;'; put 'put ''IGN2KHksUCxMKXt2YXIgWD15LmwrUCxuZT1aMCh5KTtuZS5yPUxbIiFyb3ciXTt2YXIgYmU9W25lLGtjKHkpLCJzdHIiXTtpZihMLmNlbGxGb3JtdWxhKXt5LmwrPTI7dmFyIHZlPUdwKHksWC15LmwsTCk7YmVbM109Z3UodmUsbnVsbCxuZSxMLnN1cGJvb2tzLEwpfWVsc2UgeS5sPVg7cmV0''@;'; put 'put ''dXJuIGJlfX0sOTp7bjoiQnJ0Rm1sYU51bSIsZjpmdW5jdGlvbiBtQyh5LFAsTCl7dmFyIFg9eS5sK1AsbmU9WjAoeSk7bmUucj1MWyIhcm93Il07dmFyIGJlPVtuZSx6YSh5KSwibiJdO2lmKEwuY2VsbEZvcm11bGEpe3kubCs9Mjt2YXIgdmU9R3AoeSxYLXkubCxMKTtiZVszXT1ndSh2ZSxu''@;'; put 'put ''dWxsLG5lLEwuc3VwYm9va3MsTCl9ZWxzZSB5Lmw9WDtyZXR1cm4gYmV9fSwxMDp7bjoiQnJ0Rm1sYUJvb2wiLGY6ZnVuY3Rpb24gZ0MoeSxQLEwpe3ZhciBYPXkubCtQLG5lPVowKHkpO25lLnI9TFsiIXJvdyJdO3ZhciBiZT1bbmUseS5yZWFkX3NoaWZ0KDEpLCJiIl07aWYoTC5jZWxsRm9y''@;'; put 'put ''bXVsYSl7eS5sKz0yO3ZhciB2ZT1HcCh5LFgteS5sLEwpO2JlWzNdPWd1KHZlLG51bGwsbmUsTC5zdXBib29rcyxMKX1lbHNlIHkubD1YO3JldHVybiBiZX19LDExOntuOiJCcnRGbWxhRXJyb3IiLGY6ZnVuY3Rpb24gdzYoeSxQLEwpe3ZhciBYPXkubCtQLG5lPVowKHkpO25lLnI9TFsiIXJv''@;'; put 'put ''dyJdO3ZhciBiZT1bbmUseS5yZWFkX3NoaWZ0KDEpLCJlIl07aWYoTC5jZWxsRm9ybXVsYSl7eS5sKz0yO3ZhciB2ZT1HcCh5LFgteS5sLEwpO2JlWzNdPWd1KHZlLG51bGwsbmUsTC5zdXBib29rcyxMKX1lbHNlIHkubD1YO3JldHVybiBiZX19LDEyOntuOiJCcnRTaG9ydEJsYW5rIixmOmZ1''@;'; put 'put ''bmN0aW9uIENWKHkpe3JldHVybltYZCh5KV19fSwxMzp7bjoiQnJ0U2hvcnRSayIsZjpmdW5jdGlvbiBWUSh5KXtyZXR1cm5bWGQoeSksWTAoeSksIm4iXX19LDE0OntuOiJCcnRTaG9ydEVycm9yIixmOmZ1bmN0aW9uIHk2KHkpe3JldHVybltYZCh5KSx5LnJlYWRfc2hpZnQoMSksImUiXX19''@;'; put 'put ''LDE1OntuOiJCcnRTaG9ydEJvb2wiLGY6ZnVuY3Rpb24gbUEoeSl7cmV0dXJuW1hkKHkpLHkucmVhZF9zaGlmdCgxKSwiYiJdfX0sMTY6e246IkJydFNob3J0UmVhbCIsZjpBVn0sMTc6e246IkJydFNob3J0U3QiLGY6ZnVuY3Rpb24gT1YoeSl7cmV0dXJuW1hkKHkpLGtjKHkpLCJzdHIiXX19''@;'; put 'put ''LDE4OntuOiJCcnRTaG9ydElzc3QiLGY6ZnVuY3Rpb24gVFYoeSl7cmV0dXJuW1hkKHkpLHkucmVhZF9zaGlmdCg0KSwicyJdfX0sMTk6e246IkJydFNTVEl0ZW0iLGY6eWF9LDIwOntuOiJCcnRQQ0RJTWlzc2luZyJ9LDIxOntuOiJCcnRQQ0RJTnVtYmVyIn0sMjI6e246IkJydFBDRElCb29s''@;'; put 'put ''ZWFuIn0sMjM6e246IkJydFBDRElFcnJvciJ9LDI0OntuOiJCcnRQQ0RJU3RyaW5nIn0sMjU6e246IkJydFBDRElEYXRldGltZSJ9LDI2OntuOiJCcnRQQ0RJSW5kZXgifSwyNzp7bjoiQnJ0UENESUFNaXNzaW5nIn0sMjg6e246IkJydFBDRElBTnVtYmVyIn0sMjk6e246IkJydFBDRElBQm9v''@;'; put 'put ''bGVhbiJ9LDMwOntuOiJCcnRQQ0RJQUVycm9yIn0sMzE6e246IkJydFBDRElBU3RyaW5nIn0sMzI6e246IkJydFBDRElBRGF0ZXRpbWUifSwzMzp7bjoiQnJ0UENSUmVjb3JkIn0sMzQ6e246IkJydFBDUlJlY29yZER0In0sMzU6e246IkJydEZSVEJlZ2luIn0sMzY6e246IkJydEZSVEVuZCJ9''@;'; put 'put ''LDM3OntuOiJCcnRBQ0JlZ2luIn0sMzg6e246IkJydEFDRW5kIn0sMzk6e246IkJydE5hbWUiLGY6ZnVuY3Rpb24gazYoeSxQLEwpe3ZhciBYPXkubCtQO3kubCs9NCx5LmwrPTE7dmFyIG5lPXkucmVhZF9zaGlmdCg0KSxmZT1mZyh5KSxiZT1Cayh5LDAsTCksdmU9dXUoeSk7eS5sPVg7dmFy''@;'; put 'put ''IHllPXtOYW1lOmZlLFB0ZzpiZX07cmV0dXJuIG5lPDI2ODQzNTQ1NSYmKHllLlNoZWV0PW5lKSx2ZSYmKHllLkNvbW1lbnQ9dmUpLHllfX0sNDA6e246IkJydEluZGV4Um93QmxvY2sifSw0Mjp7bjoiQnJ0SW5kZXhCbG9jayJ9LDQzOntuOiJCcnRGb250IixmOmZ1bmN0aW9uIFBOKHksUCxM''@;'; put 'put ''KXt2YXIgWD17fTtYLnN6PXkucmVhZF9zaGlmdCgyKS8yMDt2YXIgbmU9Q3koeSk7c3dpdGNoKG5lLmZCb2xkJiYoWC5ib2xkPTEpLG5lLmZJdGFsaWMmJihYLml0YWxpYz0xKSxuZS5mVW5kZXJsaW5lJiYoWC51bmRlcmxpbmU9MSksbmUuZkNvbmRlbnNlJiYoWC5jb25kZW5zZT0xKSxuZS5m''@;'; put 'put ''RXh0ZW5kJiYoWC5leHRlbmQ9MSksbmUuZlNoYWRvdyYmKFguc2hhZG93PTEpLG5lLmZPdXRsaW5lJiYoWC5vdXRsaW5lPTEpLG5lLmZTdHJpa2VvdXQmJihYLnN0cmlrZT0xKSw3MDA9PT15LnJlYWRfc2hpZnQoMikmJihYLmJvbGQ9MSkseS5yZWFkX3NoaWZ0KDIpKXtjYXNlIDE6WC52YWxp''@;'; put 'put ''Z249InN1cGVyIjticmVhaztjYXNlIDI6WC52YWxpZ249InN1YiJ9dmFyIGJlPXkucmVhZF9zaGlmdCgxKTswIT1iZSYmKFgudW5kZXJsaW5lPWJlKTt2YXIgdmU9eS5yZWFkX3NoaWZ0KDEpO3ZlPjAmJihYLmZhbWlseT12ZSk7dmFyIHllPXkucmVhZF9zaGlmdCgxKTtzd2l0Y2goeWU+MCYm''@;'; put 'put ''KFguY2hhcnNldD15ZSkseS5sKyssWC5jb2xvcj1KZCh5KSx5LnJlYWRfc2hpZnQoMSkpe2Nhc2UgMTpYLnNjaGVtZT0ibWFqb3IiO2JyZWFrO2Nhc2UgMjpYLnNjaGVtZT0ibWlub3IifXJldHVybiBYLm5hbWU9a2MoeSksWH19LDQ0OntuOiJCcnRGbXQiLGY6ZnVuY3Rpb24gQjkoeSxQKXty''@;'; put 'put ''ZXR1cm5beS5yZWFkX3NoaWZ0KDIpLGtjKHkpXX19LDQ1OntuOiJCcnRGaWxsIixmOmZ1bmN0aW9uIFZOKHksUCl7dmFyIEw9eS5sK1AsWD17fSxuZT15LnJlYWRfc2hpZnQoNCk7aWYoNDAhPW5lKXtYLnBhdHRlcm5UeXBlPWh3W25lXTt2YXIgZmU9SmQoeSk7NjQhPWZlLmluZGV4JiYoWC5m''@;'; put 'put ''Z0NvbG9yPWZlKTt2YXIgYmU9SmQoeSk7NjUhPWJlLmluZGV4JiYoWC5iZ0NvbG9yPWJlKX1lbHNle3kubCs9MTYseS5yZWFkX3NoaWZ0KDQpLHphKHkpLHphKHkpLHphKHkpLHphKHkpLHphKHkpO2Zvcih2YXIgdmU9eS5yZWFkX3NoaWZ0KDQpLHllPVtdLFZlPTA7VmU8dmU7KytWZSl5ZS5w''@;'; put 'put ''dXNoKE5OKHkpKX1yZXR1cm4geS5sPUwsWH19LDQ2OntuOiJCcnRCb3JkZXIiLGY6ZnVuY3Rpb24gQk4oeSl7dmFyIFA9e307eS5yZWFkX3NoaWZ0KDEpO3ZhciBMPUZnKHkpOyJub25lIiE9TC5zdHlsZSYmKFAudG9wPUwpO3ZhciBYPUZnKHkpOyJub25lIiE9WC5zdHlsZSYmKFAuYm90dG9t''@;'; put 'put ''PVgpO3ZhciBuZT1GZyh5KTsibm9uZSIhPW5lLnN0eWxlJiYoUC5sZWZ0PW5lKTt2YXIgZmU9RmcoeSk7Im5vbmUiIT1mZS5zdHlsZSYmKFAucmlnaHQ9ZmUpO3ZhciBiZT1GZyh5KTtyZXR1cm4ibm9uZSIhPWJlLnN0eWxlJiYoUC5kaWFnPWJlKSxQfX0sNDc6e246IkJydFhGIixmOmZ1bmN0''@;'; put 'put ''aW9uIGZ3KHksUCl7dmFyIEw9eS5sK1AsWD17fSxuZT15LnJlYWRfc2hpZnQoMiksZmU9eS5yZWFkX3NoaWZ0KDIpLGJlPXkucmVhZF9zaGlmdCgyKSx2ZT15LnJlYWRfc2hpZnQoMikseWU9eS5yZWFkX3NoaWZ0KDIpLFZlPXkucmVhZF9zaGlmdCgxKTt5LnJlYWRfc2hpZnQoMSk7dmFyIHpl''@;'; put 'put ''PXkucmVhZF9zaGlmdCgyKSxXZT15LnJlYWRfc2hpZnQoMSk7eS5sPUwsWC54ZklkPW5lLFgubnVtRm10SWQ9ZmUsWC5mb250SWQ9YmUsWC5maWxsSWQ9dmUsWC5ib3JkZXJJZD15ZSwxJldlJiYwIT1YLm51bUZtdElkJiYoWC5hcHBseU51bWJlckZvcm1hdD0hMCksWC5hbGlnbm1lbnQ9e30s''@;'; put 'put ''VmU+MCYmKFguYWxpZ25tZW50LnRleHRSb3RhdGlvbj1WZSk7dmFyIHJ0PSExO3JldHVybiA3JnplJiYocnQ9ITAsWC5hbGlnbm1lbnQuaG9yaXpvbnRhbD1QZ1s3JnplXSksWC5hbGlnbm1lbnQudmVydGljYWw9dDZbemU+Pj4zJjddLFguYWxpZ25tZW50LnZlcnRpY2FsJiYocnQ9ITApLHpl''@;'; put 'put ''Pj4+NiYxJiYoWC5hbGlnbm1lbnQud3JhcFRleHQ9ITApLHplPj4+OCYxJiYoWC5hbGlnbm1lbnQuc2hyaW5rVG9GaXQ9ITApLHJ0fHxkZWxldGUgWC5hbGlnbm1lbnQsNCZXZSYmcnQmJihYLmFwcGx5QWxpZ25tZW50PSEwKSxYfX0sNDg6e246IkJydFN0eWxlIn0sNDk6e246IkJydENlbGxN''@;'; put 'put ''ZXRhIn0sNTA6e246IkJydFZhbHVlTWV0YSJ9LDUxOntuOiJCcnRNZGIifSw1Mjp7bjoiQnJ0QmVnaW5GbWQifSw1Mzp7bjoiQnJ0RW5kRm1kIn0sNTQ6e246IkJydEJlZ2luTWR4In0sNTU6e246IkJydEVuZE1keCJ9LDU2OntuOiJCcnRCZWdpbk1keFR1cGxlIn0sNTc6e246IkJydEVuZE1k''@;'; put 'put ''eFR1cGxlIn0sNTg6e246IkJydE1keE1icklzdHIifSw1OTp7bjoiQnJ0U3RyIn0sNjA6e246IkJydENvbEluZm8iLGY6WXl9LDYyOntuOiJCcnRDZWxsUlN0cmluZyJ9LDYzOntuOiJCcnRDYWxjQ2hhaW5JdGVtJCIsZjpmdW5jdGlvbiByNih5KXt2YXIgUD17fTtQLmk9eS5yZWFkX3NoaWZ0''@;'; put 'put ''KDQpO3ZhciBMPXt9O0wucj15LnJlYWRfc2hpZnQoNCksTC5jPXkucmVhZF9zaGlmdCg0KSxQLnI9QWkoTCk7dmFyIFg9eS5yZWFkX3NoaWZ0KDEpO3JldHVybiAyJlgmJihQLmw9IjEiKSw4JlgmJihQLmE9IjEiKSxQfX0sNjQ6e246IkJydERWYWwiLGY6ZnVuY3Rpb24gWlYoeSxQLEwpe3Zh''@;'; put 'put ''ciBYPXkubCtQLG5lPXkucmVhZF9zaGlmdCg0KSxmZT1kdSh5KSxiZT11dSh5KSx2ZT11dSh5KSx5ZT11dSh5KSxWZT11dSh5KSx6ZT1Wayh5LFAsTCksV2U9eS5sPFg/VmsoeSxQLEwpOm51bGwscnQ9MTUmbmUsbHQ9e3Q6U0FbcnRdLHNxcmZ4OmZlLHM6W2JlLHZlLHllLFZlXX07cmV0dXJu''@;'; put 'put ''IHplJiYobHQuZjE9emUpLFdlJiYobHQuZjI9V2UpLDA9PXJ0fHwzPT1ydHx8Nz09cnR8fChsdC5vcD1fQ1tuZT4+MjAmMTVdKSxsdH19LDY1OntuOiJCcnRTeHZjZWxsTnVtIn0sNjY6e246IkJydFN4dmNlbGxTdHIifSw2Nzp7bjoiQnJ0U3h2Y2VsbEJvb2wifSw2ODp7bjoiQnJ0U3h2Y2Vs''@;'; put 'put ''bEVyciJ9LDY5OntuOiJCcnRTeHZjZWxsRGF0ZSJ9LDcwOntuOiJCcnRTeHZjZWxsTmlsIn0sMTI4OntuOiJCcnRGaWxlVmVyc2lvbiJ9LDEyOTp7bjoiQnJ0QmVnaW5TaGVldCJ9LDEzMDp7bjoiQnJ0RW5kU2hlZXQifSwxMzE6e246IkJydEJlZ2luQm9vayIsZjpwbCxwOjB9LDEzMjp7bjoi''@;'; put 'put ''QnJ0RW5kQm9vayJ9LDEzMzp7bjoiQnJ0QmVnaW5Xc1ZpZXdzIn0sMTM0OntuOiJCcnRFbmRXc1ZpZXdzIn0sMTM1OntuOiJCcnRCZWdpbkJvb2tWaWV3cyJ9LDEzNjp7bjoiQnJ0RW5kQm9va1ZpZXdzIn0sMTM3OntuOiJCcnRCZWdpbldzVmlldyIsZjpmdW5jdGlvbiB2Qyh5KXt2YXIgUD15''@;'; put 'put ''LnJlYWRfc2hpZnQoMik7cmV0dXJuIHkubCs9Mjgse1JUTDozMiZQLGdyaWQ6ISEoNCZQKX19fSwxMzg6e246IkJydEVuZFdzVmlldyJ9LDEzOTp7bjoiQnJ0QmVnaW5Dc1ZpZXdzIn0sMTQwOntuOiJCcnRFbmRDc1ZpZXdzIn0sMTQxOntuOiJCcnRCZWdpbkNzVmlldyJ9LDE0Mjp7bjoiQnJ0''@;'; put 'put ''RW5kQ3NWaWV3In0sMTQzOntuOiJCcnRCZWdpbkJ1bmRsZVNocyJ9LDE0NDp7bjoiQnJ0RW5kQnVuZGxlU2hzIn0sMTQ1OntuOiJCcnRCZWdpblNoZWV0RGF0YSJ9LDE0Njp7bjoiQnJ0RW5kU2hlZXREYXRhIn0sMTQ3OntuOiJCcnRXc1Byb3AiLGY6ZnVuY3Rpb24gYXYoeSxQKXt2YXIgTD17''@;'; put 'put ''fSxYPXlbeS5sXTtyZXR1cm4rK3kubCxMLmFib3ZlPSEoNjQmWCksTC5sZWZ0PSEoMTI4JlgpLHkubCs9MTgsTC5uYW1lPWRnKHksUC0xOSksTH19LDE0ODp7bjoiQnJ0V3NEaW0iLGY6X1YscDoxNn0sMTUxOntuOiJCcnRQYW5lIixmOmZ1bmN0aW9uIHlBKHksUCl7dmFyIEw9eS5sK1A7emEo''@;'; put 'put ''eSksemEoeSk7dmFyIFg9eS5yZWFkX3NoaWZ0KDQsImkiKSxuZT15LnJlYWRfc2hpZnQoNCwiaSIpO2lmKHkucmVhZF9zaGlmdCg0KSx5LnJlYWRfc2hpZnQoMSksTCE9eS5sKXRocm93IG5ldyBFcnJvcigiQmFkIEJydFBhbmU6ICIrTCsiICE9ICIreS5sKTtyZXR1cm5bQWkoe3I6WCxjOm5l''@;'; put 'put ''fSldfX0sMTUyOntuOiJCcnRTZWwiLGY6ZnVuY3Rpb24gd0EoeSxQKXtyZXR1cm4geS5yZWFkX3NoaWZ0KDQpLHtjZWxsOkFpKHtyOnkucmVhZF9zaGlmdCg0KSxjOnkucmVhZF9zaGlmdCg0KX0pfX19LDE1Mzp7bjoiQnJ0V2JQcm9wIixmOmZ1bmN0aW9uIEVDKHksUCl7dmFyIEw9e30sWD15''@;'; put 'put ''LnJlYWRfc2hpZnQoNCk7TC5kZWZhdWx0VGhlbWVWZXJzaW9uPXkucmVhZF9zaGlmdCg0KTt2YXIgbmU9UD44P2tjKHkpOiIiO3JldHVybiBuZS5sZW5ndGg+MCYmKEwuQ29kZU5hbWU9bmUpLEwuYXV0b0NvbXByZXNzUGljdHVyZXM9ISEoNjU1MzYmWCksTC5iYWNrdXBGaWxlPSEhKDY0Jlgp''@;'; put 'put ''LEwuY2hlY2tDb21wYXRpYmlsaXR5PSEhKDQwOTYmWCksTC5kYXRlMTkwND0hISgxJlgpLEwuZmlsdGVyUHJpdmFjeT0hISg4JlgpLEwuaGlkZVBpdm90RmllbGRMaXN0PSEhKDEwMjQmWCksTC5wcm9tcHRlZFNvbHV0aW9ucz0hISgxNiZYKSxMLnB1Ymxpc2hJdGVtcz0hISgyMDQ4JlgpLEwu''@;'; put 'put ''cmVmcmVzaEFsbENvbm5lY3Rpb25zPSEhKDI2MjE0NCZYKSxMLnNhdmVFeHRlcm5hbExpbmtWYWx1ZXM9ISEoMTI4JlgpLEwuc2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXM9ISEoNCZYKSxMLnNob3dJbmtBbm5vdGF0aW9uPSEhKDMyJlgpLEwuc2hvd09iamVjdHM9WyJhbGwiLCJwbGFjZWhv''@;'; put 'put ''bGRlcnMiLCJub25lIl1bWD4+MTMmM10sTC5zaG93UGl2b3RDaGFydEZpbHRlcj0hISgzMjc2OCZYKSxMLnVwZGF0ZUxpbmtzPVsidXNlclNldCIsIm5ldmVyIiwiYWx3YXlzIl1bWD4+OCYzXSxMfX0sMTU0OntuOiJCcnRXYkZhY3RvaWQifSwxNTU6e246IkJydEZpbGVSZWNvdmVyIn0sMTU2''@;'; put 'put ''OntuOiJCcnRCdW5kbGVTaCIsZjpmdW5jdGlvbiBsQih5LFApe3ZhciBMPXt9O3JldHVybiBMLkhpZGRlbj15LnJlYWRfc2hpZnQoNCksTC5pVGFiSUQ9eS5yZWFkX3NoaWZ0KDQpLEwuc3RyUmVsSUQ9eXAoeSxQLTgpLEwubmFtZT1rYyh5KSxMfX0sMTU3OntuOiJCcnRDYWxjUHJvcCJ9LDE1''@;'; put 'put ''ODp7bjoiQnJ0Qm9va1ZpZXcifSwxNTk6e246IkJydEJlZ2luU3N0IixmOmZ1bmN0aW9uIGs5KHkpe3JldHVyblt5LnJlYWRfc2hpZnQoNCkseS5yZWFkX3NoaWZ0KDQpXX19LDE2MDp7bjoiQnJ0RW5kU3N0In0sMTYxOntuOiJCcnRCZWdpbkFGaWx0ZXIiLGY6QWN9LDE2Mjp7bjoiQnJ0RW5k''@;'; put 'put ''QUZpbHRlciJ9LDE2Mzp7bjoiQnJ0QmVnaW5GaWx0ZXJDb2x1bW4ifSwxNjQ6e246IkJydEVuZEZpbHRlckNvbHVtbiJ9LDE2NTp7bjoiQnJ0QmVnaW5GaWx0ZXJzIn0sMTY2OntuOiJCcnRFbmRGaWx0ZXJzIn0sMTY3OntuOiJCcnRGaWx0ZXIifSwxNjg6e246IkJydENvbG9yRmlsdGVyIn0s''@;'; put 'put ''MTY5OntuOiJCcnRJY29uRmlsdGVyIn0sMTcwOntuOiJCcnRUb3AxMEZpbHRlciJ9LDE3MTp7bjoiQnJ0RHluYW1pY0ZpbHRlciJ9LDE3Mjp7bjoiQnJ0QmVnaW5DdXN0b21GaWx0ZXJzIn0sMTczOntuOiJCcnRFbmRDdXN0b21GaWx0ZXJzIn0sMTc0OntuOiJCcnRDdXN0b21GaWx0ZXIifSwx''@;'; put 'put ''NzU6e246IkJydEFGaWx0ZXJEYXRlR3JvdXBJdGVtIn0sMTc2OntuOiJCcnRNZXJnZUNlbGwiLGY6X0F9LDE3Nzp7bjoiQnJ0QmVnaW5NZXJnZUNlbGxzIn0sMTc4OntuOiJCcnRFbmRNZXJnZUNlbGxzIn0sMTc5OntuOiJCcnRCZWdpblBpdm90Q2FjaGVEZWYifSwxODA6e246IkJydEVuZFBp''@;'; put 'put ''dm90Q2FjaGVEZWYifSwxODE6e246IkJydEJlZ2luUENERmllbGRzIn0sMTgyOntuOiJCcnRFbmRQQ0RGaWVsZHMifSwxODM6e246IkJydEJlZ2luUENERmllbGQifSwxODQ6e246IkJydEVuZFBDREZpZWxkIn0sMTg1OntuOiJCcnRCZWdpblBDRFNvdXJjZSJ9LDE4Njp7bjoiQnJ0RW5kUENE''@;'; put 'put ''U291cmNlIn0sMTg3OntuOiJCcnRCZWdpblBDRFNSYW5nZSJ9LDE4ODp7bjoiQnJ0RW5kUENEU1JhbmdlIn0sMTg5OntuOiJCcnRCZWdpblBDREZBdGJsIn0sMTkwOntuOiJCcnRFbmRQQ0RGQXRibCJ9LDE5MTp7bjoiQnJ0QmVnaW5QQ0RJUnVuIn0sMTkyOntuOiJCcnRFbmRQQ0RJUnVuIn0s''@;'; put 'put ''MTkzOntuOiJCcnRCZWdpblBpdm90Q2FjaGVSZWNvcmRzIn0sMTk0OntuOiJCcnRFbmRQaXZvdENhY2hlUmVjb3JkcyJ9LDE5NTp7bjoiQnJ0QmVnaW5QQ0RIaWVyYXJjaGllcyJ9LDE5Njp7bjoiQnJ0RW5kUENESGllcmFyY2hpZXMifSwxOTc6e246IkJydEJlZ2luUENESGllcmFyY2h5In0s''@;'; put 'put ''MTk4OntuOiJCcnRFbmRQQ0RIaWVyYXJjaHkifSwxOTk6e246IkJydEJlZ2luUENESEZpZWxkc1VzYWdlIn0sMjAwOntuOiJCcnRFbmRQQ0RIRmllbGRzVXNhZ2UifSwyMDE6e246IkJydEJlZ2luRXh0Q29ubmVjdGlvbiJ9LDIwMjp7bjoiQnJ0RW5kRXh0Q29ubmVjdGlvbiJ9LDIwMzp7bjoi''@;'; put 'put ''QnJ0QmVnaW5FQ0RiUHJvcHMifSwyMDQ6e246IkJydEVuZEVDRGJQcm9wcyJ9LDIwNTp7bjoiQnJ0QmVnaW5FQ09sYXBQcm9wcyJ9LDIwNjp7bjoiQnJ0RW5kRUNPbGFwUHJvcHMifSwyMDc6e246IkJydEJlZ2luUENEU0NvbnNvbCJ9LDIwODp7bjoiQnJ0RW5kUENEU0NvbnNvbCJ9LDIwOTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5QQ0RTQ1BhZ2VzIn0sMjEwOntuOiJCcnRFbmRQQ0RTQ1BhZ2VzIn0sMjExOntuOiJCcnRCZWdpblBDRFNDUGFnZSJ9LDIxMjp7bjoiQnJ0RW5kUENEU0NQYWdlIn0sMjEzOntuOiJCcnRCZWdpblBDRFNDUEl0ZW0ifSwyMTQ6e246IkJydEVuZFBDRFNDUEl0ZW0ifSwyMTU6''@;'; put 'put ''e246IkJydEJlZ2luUENEU0NTZXRzIn0sMjE2OntuOiJCcnRFbmRQQ0RTQ1NldHMifSwyMTc6e246IkJydEJlZ2luUENEU0NTZXQifSwyMTg6e246IkJydEVuZFBDRFNDU2V0In0sMjE5OntuOiJCcnRCZWdpblBDREZHcm91cCJ9LDIyMDp7bjoiQnJ0RW5kUENERkdyb3VwIn0sMjIxOntuOiJC''@;'; put 'put ''cnRCZWdpblBDREZHSXRlbXMifSwyMjI6e246IkJydEVuZFBDREZHSXRlbXMifSwyMjM6e246IkJydEJlZ2luUENERkdSYW5nZSJ9LDIyNDp7bjoiQnJ0RW5kUENERkdSYW5nZSJ9LDIyNTp7bjoiQnJ0QmVnaW5QQ0RGR0Rpc2NyZXRlIn0sMjI2OntuOiJCcnRFbmRQQ0RGR0Rpc2NyZXRlIn0s''@;'; put 'put ''MjI3OntuOiJCcnRCZWdpblBDRFNEVHVwbGVDYWNoZSJ9LDIyODp7bjoiQnJ0RW5kUENEU0RUdXBsZUNhY2hlIn0sMjI5OntuOiJCcnRCZWdpblBDRFNEVENFbnRyaWVzIn0sMjMwOntuOiJCcnRFbmRQQ0RTRFRDRW50cmllcyJ9LDIzMTp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnMifSwy''@;'; put 'put ''MzI6e246IkJydEVuZFBDRFNEVENFTWVtYmVycyJ9LDIzMzp7bjoiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlciJ9LDIzNDp7bjoiQnJ0RW5kUENEU0RUQ0VNZW1iZXIifSwyMzU6e246IkJydEJlZ2luUENEU0RUQ1F1ZXJpZXMifSwyMzY6e246IkJydEVuZFBDRFNEVENRdWVyaWVzIn0sMjM3Ontu''@;'; put 'put ''OiJCcnRCZWdpblBDRFNEVENRdWVyeSJ9LDIzODp7bjoiQnJ0RW5kUENEU0RUQ1F1ZXJ5In0sMjM5OntuOiJCcnRCZWdpblBDRFNEVENTZXRzIn0sMjQwOntuOiJCcnRFbmRQQ0RTRFRDU2V0cyJ9LDI0MTp7bjoiQnJ0QmVnaW5QQ0RTRFRDU2V0In0sMjQyOntuOiJCcnRFbmRQQ0RTRFRDU2V0''@;'; put 'put ''In0sMjQzOntuOiJCcnRCZWdpblBDRENhbGNJdGVtcyJ9LDI0NDp7bjoiQnJ0RW5kUENEQ2FsY0l0ZW1zIn0sMjQ1OntuOiJCcnRCZWdpblBDRENhbGNJdGVtIn0sMjQ2OntuOiJCcnRFbmRQQ0RDYWxjSXRlbSJ9LDI0Nzp7bjoiQnJ0QmVnaW5QUnVsZSJ9LDI0ODp7bjoiQnJ0RW5kUFJ1bGUi''@;'; put 'put ''fSwyNDk6e246IkJydEJlZ2luUFJGaWx0ZXJzIn0sMjUwOntuOiJCcnRFbmRQUkZpbHRlcnMifSwyNTE6e246IkJydEJlZ2luUFJGaWx0ZXIifSwyNTI6e246IkJydEVuZFBSRmlsdGVyIn0sMjUzOntuOiJCcnRCZWdpblBOYW1lcyJ9LDI1NDp7bjoiQnJ0RW5kUE5hbWVzIn0sMjU1OntuOiJC''@;'; put 'put ''cnRCZWdpblBOYW1lIn0sMjU2OntuOiJCcnRFbmRQTmFtZSJ9LDI1Nzp7bjoiQnJ0QmVnaW5QTlBhaXJzIn0sMjU4OntuOiJCcnRFbmRQTlBhaXJzIn0sMjU5OntuOiJCcnRCZWdpblBOUGFpciJ9LDI2MDp7bjoiQnJ0RW5kUE5QYWlyIn0sMjYxOntuOiJCcnRCZWdpbkVDV2ViUHJvcHMifSwy''@;'; put 'put ''NjI6e246IkJydEVuZEVDV2ViUHJvcHMifSwyNjM6e246IkJydEJlZ2luRWNXcFRhYmxlcyJ9LDI2NDp7bjoiQnJ0RW5kRUNXUFRhYmxlcyJ9LDI2NTp7bjoiQnJ0QmVnaW5FQ1BhcmFtcyJ9LDI2Njp7bjoiQnJ0RW5kRUNQYXJhbXMifSwyNjc6e246IkJydEJlZ2luRUNQYXJhbSJ9LDI2ODp7''@;'; put 'put ''bjoiQnJ0RW5kRUNQYXJhbSJ9LDI2OTp7bjoiQnJ0QmVnaW5QQ0RLUElzIn0sMjcwOntuOiJCcnRFbmRQQ0RLUElzIn0sMjcxOntuOiJCcnRCZWdpblBDREtQSSJ9LDI3Mjp7bjoiQnJ0RW5kUENES1BJIn0sMjczOntuOiJCcnRCZWdpbkRpbXMifSwyNzQ6e246IkJydEVuZERpbXMifSwyNzU6''@;'; put 'put ''e246IkJydEJlZ2luRGltIn0sMjc2OntuOiJCcnRFbmREaW0ifSwyNzc6e246IkJydEluZGV4UGFydEVuZCJ9LDI3ODp7bjoiQnJ0QmVnaW5TdHlsZVNoZWV0In0sMjc5OntuOiJCcnRFbmRTdHlsZVNoZWV0In0sMjgwOntuOiJCcnRCZWdpblNYVmlldyJ9LDI4MTp7bjoiQnJ0RW5kU1hWSSJ9''@;'; put 'put ''LDI4Mjp7bjoiQnJ0QmVnaW5TWFZJIn0sMjgzOntuOiJCcnRCZWdpblNYVklzIn0sMjg0OntuOiJCcnRFbmRTWFZJcyJ9LDI4NTp7bjoiQnJ0QmVnaW5TWFZEIn0sMjg2OntuOiJCcnRFbmRTWFZEIn0sMjg3OntuOiJCcnRCZWdpblNYVkRzIn0sMjg4OntuOiJCcnRFbmRTWFZEcyJ9LDI4OTp7''@;'; put 'put ''bjoiQnJ0QmVnaW5TWFBJIn0sMjkwOntuOiJCcnRFbmRTWFBJIn0sMjkxOntuOiJCcnRCZWdpblNYUElzIn0sMjkyOntuOiJCcnRFbmRTWFBJcyJ9LDI5Mzp7bjoiQnJ0QmVnaW5TWERJIn0sMjk0OntuOiJCcnRFbmRTWERJIn0sMjk1OntuOiJCcnRCZWdpblNYRElzIn0sMjk2OntuOiJCcnRF''@;'; put 'put ''bmRTWERJcyJ9LDI5Nzp7bjoiQnJ0QmVnaW5TWExJIn0sMjk4OntuOiJCcnRFbmRTWExJIn0sMjk5OntuOiJCcnRCZWdpblNYTElSd3MifSwzMDA6e246IkJydEVuZFNYTElSd3MifSwzMDE6e246IkJydEJlZ2luU1hMSUNvbHMifSwzMDI6e246IkJydEVuZFNYTElDb2xzIn0sMzAzOntuOiJC''@;'; put 'put ''cnRCZWdpblNYRm9ybWF0In0sMzA0OntuOiJCcnRFbmRTWEZvcm1hdCJ9LDMwNTp7bjoiQnJ0QmVnaW5TWEZvcm1hdHMifSwzMDY6e246IkJydEVuZFN4Rm9ybWF0cyJ9LDMwNzp7bjoiQnJ0QmVnaW5TeFNlbGVjdCJ9LDMwODp7bjoiQnJ0RW5kU3hTZWxlY3QifSwzMDk6e246IkJydEJlZ2lu''@;'; put 'put ''SVNYVkRSd3MifSwzMTA6e246IkJydEVuZElTWFZEUndzIn0sMzExOntuOiJCcnRCZWdpbklTWFZEQ29scyJ9LDMxMjp7bjoiQnJ0RW5kSVNYVkRDb2xzIn0sMzEzOntuOiJCcnRFbmRTWExvY2F0aW9uIn0sMzE0OntuOiJCcnRCZWdpblNYTG9jYXRpb24ifSwzMTU6e246IkJydEVuZFNYVmll''@;'; put 'put ''dyJ9LDMxNjp7bjoiQnJ0QmVnaW5TWFRIcyJ9LDMxNzp7bjoiQnJ0RW5kU1hUSHMifSwzMTg6e246IkJydEJlZ2luU1hUSCJ9LDMxOTp7bjoiQnJ0RW5kU1hUSCJ9LDMyMDp7bjoiQnJ0QmVnaW5JU1hUSFJ3cyJ9LDMyMTp7bjoiQnJ0RW5kSVNYVEhSd3MifSwzMjI6e246IkJydEJlZ2luSVNY''@;'; put 'put ''VEhDb2xzIn0sMzIzOntuOiJCcnRFbmRJU1hUSENvbHMifSwzMjQ6e246IkJydEJlZ2luU1hURE1QUyJ9LDMyNTp7bjoiQnJ0RW5kU1hURE1QcyJ9LDMyNjp7bjoiQnJ0QmVnaW5TWFRETVAifSwzMjc6e246IkJydEVuZFNYVERNUCJ9LDMyODp7bjoiQnJ0QmVnaW5TWFRISXRlbXMifSwzMjk6''@;'; put 'put ''e246IkJydEVuZFNYVEhJdGVtcyJ9LDMzMDp7bjoiQnJ0QmVnaW5TWFRISXRlbSJ9LDMzMTp7bjoiQnJ0RW5kU1hUSEl0ZW0ifSwzMzI6e246IkJydEJlZ2luTWV0YWRhdGEifSwzMzM6e246IkJydEVuZE1ldGFkYXRhIn0sMzM0OntuOiJCcnRCZWdpbkVzbWR0aW5mbyJ9LDMzNTp7bjoiQnJ0''@;'; put 'put ''TWR0aW5mbyJ9LDMzNjp7bjoiQnJ0RW5kRXNtZHRpbmZvIn0sMzM3OntuOiJCcnRCZWdpbkVzbWRiIn0sMzM4OntuOiJCcnRFbmRFc21kYiJ9LDMzOTp7bjoiQnJ0QmVnaW5Fc2ZtZCJ9LDM0MDp7bjoiQnJ0RW5kRXNmbWQifSwzNDE6e246IkJydEJlZ2luU2luZ2xlQ2VsbHMifSwzNDI6e246''@;'; put 'put ''IkJydEVuZFNpbmdsZUNlbGxzIn0sMzQzOntuOiJCcnRCZWdpbkxpc3QifSwzNDQ6e246IkJydEVuZExpc3QifSwzNDU6e246IkJydEJlZ2luTGlzdENvbHMifSwzNDY6e246IkJydEVuZExpc3RDb2xzIn0sMzQ3OntuOiJCcnRCZWdpbkxpc3RDb2wifSwzNDg6e246IkJydEVuZExpc3RDb2wi''@;'; put 'put ''fSwzNDk6e246IkJydEJlZ2luTGlzdFhtbENQciJ9LDM1MDp7bjoiQnJ0RW5kTGlzdFhtbENQciJ9LDM1MTp7bjoiQnJ0TGlzdENDRm1sYSJ9LDM1Mjp7bjoiQnJ0TGlzdFRyRm1sYSJ9LDM1Mzp7bjoiQnJ0QmVnaW5FeHRlcm5hbHMifSwzNTQ6e246IkJydEVuZEV4dGVybmFscyJ9LDM1NTp7''@;'; put 'put ''bjoiQnJ0U3VwQm9va1NyYyIsZjp5cH0sMzU3OntuOiJCcnRTdXBTZWxmIn0sMzU4OntuOiJCcnRTdXBTYW1lIn0sMzU5OntuOiJCcnRTdXBUYWJzIn0sMzYwOntuOiJCcnRCZWdpblN1cEJvb2sifSwzNjE6e246IkJydFBsYWNlaG9sZGVyTmFtZSJ9LDM2Mjp7bjoiQnJ0RXh0ZXJuU2hlZXQi''@;'; put 'put ''LGY6Qzl9LDM2Mzp7bjoiQnJ0RXh0ZXJuVGFibGVTdGFydCJ9LDM2NDp7bjoiQnJ0RXh0ZXJuVGFibGVFbmQifSwzNjY6e246IkJydEV4dGVyblJvd0hkciJ9LDM2Nzp7bjoiQnJ0RXh0ZXJuQ2VsbEJsYW5rIn0sMzY4OntuOiJCcnRFeHRlcm5DZWxsUmVhbCJ9LDM2OTp7bjoiQnJ0RXh0ZXJu''@;'; put 'put ''Q2VsbEJvb2wifSwzNzA6e246IkJydEV4dGVybkNlbGxFcnJvciJ9LDM3MTp7bjoiQnJ0RXh0ZXJuQ2VsbFN0cmluZyJ9LDM3Mjp7bjoiQnJ0QmVnaW5Fc21keCJ9LDM3Mzp7bjoiQnJ0RW5kRXNtZHgifSwzNzQ6e246IkJydEJlZ2luTWR4U2V0In0sMzc1OntuOiJCcnRFbmRNZHhTZXQifSwz''@;'; put 'put ''NzY6e246IkJydEJlZ2luTWR4TWJyUHJvcCJ9LDM3Nzp7bjoiQnJ0RW5kTWR4TWJyUHJvcCJ9LDM3ODp7bjoiQnJ0QmVnaW5NZHhLUEkifSwzNzk6e246IkJydEVuZE1keEtQSSJ9LDM4MDp7bjoiQnJ0QmVnaW5Fc3N0ciJ9LDM4MTp7bjoiQnJ0RW5kRXNzdHIifSwzODI6e246IkJydEJlZ2lu''@;'; put 'put ''UFJGSXRlbSJ9LDM4Mzp7bjoiQnJ0RW5kUFJGSXRlbSJ9LDM4NDp7bjoiQnJ0QmVnaW5QaXZvdENhY2hlSURzIn0sMzg1OntuOiJCcnRFbmRQaXZvdENhY2hlSURzIn0sMzg2OntuOiJCcnRCZWdpblBpdm90Q2FjaGVJRCJ9LDM4Nzp7bjoiQnJ0RW5kUGl2b3RDYWNoZUlEIn0sMzg4OntuOiJC''@;'; put 'put ''cnRCZWdpbklTWFZJcyJ9LDM4OTp7bjoiQnJ0RW5kSVNYVklzIn0sMzkwOntuOiJCcnRCZWdpbkNvbEluZm9zIn0sMzkxOntuOiJCcnRFbmRDb2xJbmZvcyJ9LDM5Mjp7bjoiQnJ0QmVnaW5Sd0JyayJ9LDM5Mzp7bjoiQnJ0RW5kUndCcmsifSwzOTQ6e246IkJydEJlZ2luQ29sQnJrIn0sMzk1''@;'; put 'put ''OntuOiJCcnRFbmRDb2xCcmsifSwzOTY6e246IkJydEJyayJ9LDM5Nzp7bjoiQnJ0VXNlckJvb2tWaWV3In0sMzk4OntuOiJCcnRJbmZvIn0sMzk5OntuOiJCcnRDVXNyIn0sNDAwOntuOiJCcnRVc3IifSw0MDE6e246IkJydEJlZ2luVXNlcnMifSw0MDM6e246IkJydEVPRiJ9LDQwNDp7bjoi''@;'; put 'put ''QnJ0VUNSIn0sNDA1OntuOiJCcnRSUkluc0RlbCJ9LDQwNjp7bjoiQnJ0UlJFbmRJbnNEZWwifSw0MDc6e246IkJydFJSTW92ZSJ9LDQwODp7bjoiQnJ0UlJFbmRNb3ZlIn0sNDA5OntuOiJCcnRSUkNoZ0NlbGwifSw0MTA6e246IkJydFJSRW5kQ2hnQ2VsbCJ9LDQxMTp7bjoiQnJ0UlJIZWFk''@;'; put 'put ''ZXIifSw0MTI6e246IkJydFJSVXNlclZpZXcifSw0MTM6e246IkJydFJSUmVuU2hlZXQifSw0MTQ6e246IkJydFJSSW5zZXJ0U2gifSw0MTU6e246IkJydFJSRGVmTmFtZSJ9LDQxNjp7bjoiQnJ0UlJOb3RlIn0sNDE3OntuOiJCcnRSUkNvbmZsaWN0In0sNDE4OntuOiJCcnRSUlRRU0lGIn0s''@;'; put 'put ''NDE5OntuOiJCcnRSUkZvcm1hdCJ9LDQyMDp7bjoiQnJ0UlJFbmRGb3JtYXQifSw0MjE6e246IkJydFJSQXV0b0ZtdCJ9LDQyMjp7bjoiQnJ0QmVnaW5Vc2VyU2hWaWV3cyJ9LDQyMzp7bjoiQnJ0QmVnaW5Vc2VyU2hWaWV3In0sNDI0OntuOiJCcnRFbmRVc2VyU2hWaWV3In0sNDI1OntuOiJC''@;'; put 'put ''cnRFbmRVc2VyU2hWaWV3cyJ9LDQyNjp7bjoiQnJ0QXJyRm1sYSIsZjpmdW5jdGlvbiB1dih5LFAsTCl7dmFyIFg9eS5sK1AsbmU9eTEoeSksZmU9eS5yZWFkX3NoaWZ0KDEpLGJlPVtuZV07aWYoYmVbMl09ZmUsTC5jZWxsRm9ybXVsYSl7dmFyIHZlPXp3KHksWC15LmwsTCk7YmVbMV09dmV9''@;'; put 'put ''ZWxzZSB5Lmw9WDtyZXR1cm4gYmV9fSw0Mjc6e246IkJydFNockZtbGEiLGY6ZnVuY3Rpb24gVlYoeSxQLEwpe3ZhciBYPXkubCtQLGZlPVtBYyh5LDE2KV07aWYoTC5jZWxsRm9ybXVsYSl7dmFyIGJlPVlIKHksWC15LmwsTCk7ZmVbMV09YmUseS5sPVh9ZWxzZSB5Lmw9WDtyZXR1cm4gZmV9''@;'; put 'put ''fSw0Mjg6e246IkJydFRhYmxlIn0sNDI5OntuOiJCcnRCZWdpbkV4dENvbm5lY3Rpb25zIn0sNDMwOntuOiJCcnRFbmRFeHRDb25uZWN0aW9ucyJ9LDQzMTp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtcyJ9LDQzMjp7bjoiQnJ0RW5kUENEQ2FsY01lbXMifSw0MzM6e246IkJydEJlZ2luUENEQ2Fs''@;'; put 'put ''Y01lbSJ9LDQzNDp7bjoiQnJ0RW5kUENEQ2FsY01lbSJ9LDQzNTp7bjoiQnJ0QmVnaW5QQ0RIR0xldmVscyJ9LDQzNjp7bjoiQnJ0RW5kUENESEdMZXZlbHMifSw0Mzc6e246IkJydEJlZ2luUENESEdMZXZlbCJ9LDQzODp7bjoiQnJ0RW5kUENESEdMZXZlbCJ9LDQzOTp7bjoiQnJ0QmVnaW5Q''@;'; put 'put ''Q0RIR0xHcm91cHMifSw0NDA6e246IkJydEVuZFBDREhHTEdyb3VwcyJ9LDQ0MTp7bjoiQnJ0QmVnaW5QQ0RIR0xHcm91cCJ9LDQ0Mjp7bjoiQnJ0RW5kUENESEdMR3JvdXAifSw0NDM6e246IkJydEJlZ2luUENESEdMR01lbWJlcnMifSw0NDQ6e246IkJydEVuZFBDREhHTEdNZW1iZXJzIn0s''@;'; put 'put ''NDQ1OntuOiJCcnRCZWdpblBDREhHTEdNZW1iZXIifSw0NDY6e246IkJydEVuZFBDREhHTEdNZW1iZXIifSw0NDc6e246IkJydEJlZ2luUVNJIn0sNDQ4OntuOiJCcnRFbmRRU0kifSw0NDk6e246IkJydEJlZ2luUVNJUiJ9LDQ1MDp7bjoiQnJ0RW5kUVNJUiJ9LDQ1MTp7bjoiQnJ0QmVnaW5E''@;'; put 'put ''ZWxldGVkTmFtZXMifSw0NTI6e246IkJydEVuZERlbGV0ZWROYW1lcyJ9LDQ1Mzp7bjoiQnJ0QmVnaW5EZWxldGVkTmFtZSJ9LDQ1NDp7bjoiQnJ0RW5kRGVsZXRlZE5hbWUifSw0NTU6e246IkJydEJlZ2luUVNJRnMifSw0NTY6e246IkJydEVuZFFTSUZzIn0sNDU3OntuOiJCcnRCZWdpblFT''@;'; put 'put ''SUYifSw0NTg6e246IkJydEVuZFFTSUYifSw0NTk6e246IkJydEJlZ2luQXV0b1NvcnRTY29wZSJ9LDQ2MDp7bjoiQnJ0RW5kQXV0b1NvcnRTY29wZSJ9LDQ2MTp7bjoiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmcifSw0NjI6e246IkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZyJ9''@;'; put 'put ''LDQ2Mzp7bjoiQnJ0QmVnaW5DRlJ1bGUifSw0NjQ6e246IkJydEVuZENGUnVsZSJ9LDQ2NTp7bjoiQnJ0QmVnaW5JY29uU2V0In0sNDY2OntuOiJCcnRFbmRJY29uU2V0In0sNDY3OntuOiJCcnRCZWdpbkRhdGFiYXIifSw0Njg6e246IkJydEVuZERhdGFiYXIifSw0Njk6e246IkJydEJlZ2lu''@;'; put 'put ''Q29sb3JTY2FsZSJ9LDQ3MDp7bjoiQnJ0RW5kQ29sb3JTY2FsZSJ9LDQ3MTp7bjoiQnJ0Q0ZWTyJ9LDQ3Mjp7bjoiQnJ0RXh0ZXJuVmFsdWVNZXRhIn0sNDczOntuOiJCcnRCZWdpbkNvbG9yUGFsZXR0ZSJ9LDQ3NDp7bjoiQnJ0RW5kQ29sb3JQYWxldHRlIn0sNDc1OntuOiJCcnRJbmRleGVk''@;'; put 'put ''Q29sb3IifSw0NzY6e246IkJydE1hcmdpbnMiLGY6ZnVuY3Rpb24galYoeSl7dmFyIFA9e307cmV0dXJuIENBLmZvckVhY2goZnVuY3Rpb24oTCl7UFtMXT16YSh5KX0pLFB9fSw0Nzc6e246IkJydFByaW50T3B0aW9ucyJ9LDQ3ODp7bjoiQnJ0UGFnZVNldHVwIn0sNDc5OntuOiJCcnRCZWdp''@;'; put 'put ''bkhlYWRlckZvb3RlciJ9LDQ4MDp7bjoiQnJ0RW5kSGVhZGVyRm9vdGVyIn0sNDgxOntuOiJCcnRCZWdpblNYQ3J0Rm9ybWF0In0sNDgyOntuOiJCcnRFbmRTWENydEZvcm1hdCJ9LDQ4Mzp7bjoiQnJ0QmVnaW5TWENydEZvcm1hdHMifSw0ODQ6e246IkJydEVuZFNYQ3J0Rm9ybWF0cyJ9LDQ4''@;'; put 'put ''NTp7bjoiQnJ0V3NGbXRJbmZvIixmOmZ1bmN0aW9uIHBBKHkpe3ZhciBQPXt9LEw9e30sWD17fSxuZT15LnJlYWRfc2hpZnQoNCksZmU9eS5yZWFkX3NoaWZ0KDIpO1gud2NoPW5lPD02NTUzNj9uZS8yNTY6ZmU7dmFyIGJlPXkucmVhZF9zaGlmdCgyKTtMLmhwdD1iZS8yMDt2YXIgdmU9eS5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpO3JldHVybiAyJnZlJiYoTC5oaWRkZW49ITApLDQmdmUmJihQLnRvcHRoaWNrPSEwKSw4JnZlJiYoUC5ib3R0aGljaz0hMCksUC5yb3dvdXRsaW5lPXkucmVhZF9zaGlmdCgxKSxQLmNvbG91dGxpbmU9eS5yZWFkX3NoaWZ0KDEpLEY5KEwpLFAucm93PUwsXzAoWCksUC5j''@;'; put 'put ''b2w9WCxQfX0sNDg2OntuOiJCcnRCZWdpbk1ncyJ9LDQ4Nzp7bjoiQnJ0RW5kTUdzIn0sNDg4OntuOiJCcnRCZWdpbk1HTWFwcyJ9LDQ4OTp7bjoiQnJ0RW5kTUdNYXBzIn0sNDkwOntuOiJCcnRCZWdpbk1HIn0sNDkxOntuOiJCcnRFbmRNRyJ9LDQ5Mjp7bjoiQnJ0QmVnaW5NYXAifSw0OTM6''@;'; put 'put ''e246IkJydEVuZE1hcCJ9LDQ5NDp7bjoiQnJ0SExpbmsiLGY6ZnVuY3Rpb24gRlYoeSxQKXt2YXIgTD15LmwrUCxYPUFjKHksMTYpLG5lPXV1KHkpLGZlPWtjKHkpLGJlPWtjKHkpLHZlPWtjKHkpO3kubD1MO3ZhciB5ZT17cmZ4OlgscmVsSWQ6bmUsbG9jOmZlLGRpc3BsYXk6dmV9O3JldHVy''@;'; put 'put ''biBiZSYmKHllLlRvb2x0aXA9YmUpLHllfX0sNDk1OntuOiJCcnRCZWdpbkRDb24ifSw0OTY6e246IkJydEVuZERDb24ifSw0OTc6e246IkJydEJlZ2luRFJlZnMifSw0OTg6e246IkJydEVuZERSZWZzIn0sNDk5OntuOiJCcnREUmVmIn0sNTAwOntuOiJCcnRCZWdpblNjZW5NYW4ifSw1MDE6''@;'; put 'put ''e246IkJydEVuZFNjZW5NYW4ifSw1MDI6e246IkJydEJlZ2luU2N0In0sNTAzOntuOiJCcnRFbmRTY3QifSw1MDQ6e246IkJydFNsYyJ9LDUwNTp7bjoiQnJ0QmVnaW5EWEZzIn0sNTA2OntuOiJCcnRFbmREWEZzIn0sNTA3OntuOiJCcnREWEYifSw1MDg6e246IkJydEJlZ2luVGFibGVTdHls''@;'; put 'put ''ZXMifSw1MDk6e246IkJydEVuZFRhYmxlU3R5bGVzIn0sNTEwOntuOiJCcnRCZWdpblRhYmxlU3R5bGUifSw1MTE6e246IkJydEVuZFRhYmxlU3R5bGUifSw1MTI6e246IkJydFRhYmxlU3R5bGVFbGVtZW50In0sNTEzOntuOiJCcnRUYWJsZVN0eWxlQ2xpZW50In0sNTE0OntuOiJCcnRCZWdp''@;'; put 'put ''blZvbERlcHMifSw1MTU6e246IkJydEVuZFZvbERlcHMifSw1MTY6e246IkJydEJlZ2luVm9sVHlwZSJ9LDUxNzp7bjoiQnJ0RW5kVm9sVHlwZSJ9LDUxODp7bjoiQnJ0QmVnaW5Wb2xNYWluIn0sNTE5OntuOiJCcnRFbmRWb2xNYWluIn0sNTIwOntuOiJCcnRCZWdpblZvbFRvcGljIn0sNTIx''@;'; put 'put ''OntuOiJCcnRFbmRWb2xUb3BpYyJ9LDUyMjp7bjoiQnJ0Vm9sU3VidG9waWMifSw1MjM6e246IkJydFZvbFJlZiJ9LDUyNDp7bjoiQnJ0Vm9sTnVtIn0sNTI1OntuOiJCcnRWb2xFcnIifSw1MjY6e246IkJydFZvbFN0ciJ9LDUyNzp7bjoiQnJ0Vm9sQm9vbCJ9LDUyODp7bjoiQnJ0QmVnaW5D''@;'; put 'put ''YWxjQ2hhaW4kIn0sNTI5OntuOiJCcnRFbmRDYWxjQ2hhaW4kIn0sNTMwOntuOiJCcnRCZWdpblNvcnRTdGF0ZSJ9LDUzMTp7bjoiQnJ0RW5kU29ydFN0YXRlIn0sNTMyOntuOiJCcnRCZWdpblNvcnRDb25kIn0sNTMzOntuOiJCcnRFbmRTb3J0Q29uZCJ9LDUzNDp7bjoiQnJ0Qm9va1Byb3Rl''@;'; put 'put ''Y3Rpb24ifSw1MzU6e246IkJydFNoZWV0UHJvdGVjdGlvbiJ9LDUzNjp7bjoiQnJ0UmFuZ2VQcm90ZWN0aW9uIn0sNTM3OntuOiJCcnRQaG9uZXRpY0luZm8ifSw1Mzg6e246IkJydEJlZ2luRUNUeHRXaXoifSw1Mzk6e246IkJydEVuZEVDVHh0V2l6In0sNTQwOntuOiJCcnRCZWdpbkVDVFdG''@;'; put 'put ''bGRJbmZvTHN0In0sNTQxOntuOiJCcnRFbmRFQ1RXRmxkSW5mb0xzdCJ9LDU0Mjp7bjoiQnJ0QmVnaW5FQ1R3RmxkSW5mbyJ9LDU0ODp7bjoiQnJ0RmlsZVNoYXJpbmcifSw1NDk6e246IkJydE9sZVNpemUifSw1NTA6e246IkJydERyYXdpbmciLGY6eXB9LDU1MTp7bjoiQnJ0TGVnYWN5RHJh''@;'; put 'put ''d2luZyJ9LDU1Mjp7bjoiQnJ0TGVnYWN5RHJhd2luZ0hGIn0sNTUzOntuOiJCcnRXZWJPcHQifSw1NTQ6e246IkJydEJlZ2luV2ViUHViSXRlbXMifSw1NTU6e246IkJydEVuZFdlYlB1Ykl0ZW1zIn0sNTU2OntuOiJCcnRCZWdpbldlYlB1Ykl0ZW0ifSw1NTc6e246IkJydEVuZFdlYlB1Ykl0''@;'; put 'put ''ZW0ifSw1NTg6e246IkJydEJlZ2luU1hDb25kRm10In0sNTU5OntuOiJCcnRFbmRTWENvbmRGbXQifSw1NjA6e246IkJydEJlZ2luU1hDb25kRm10cyJ9LDU2MTp7bjoiQnJ0RW5kU1hDb25kRm10cyJ9LDU2Mjp7bjoiQnJ0QmtIaW0ifSw1NjQ6e246IkJydENvbG9yIn0sNTY1OntuOiJCcnRC''@;'; put 'put ''ZWdpbkluZGV4ZWRDb2xvcnMifSw1NjY6e246IkJydEVuZEluZGV4ZWRDb2xvcnMifSw1Njk6e246IkJydEJlZ2luTVJVQ29sb3JzIn0sNTcwOntuOiJCcnRFbmRNUlVDb2xvcnMifSw1NzI6e246IkJydE1SVUNvbG9yIn0sNTczOntuOiJCcnRCZWdpbkRWYWxzIn0sNTc0OntuOiJCcnRFbmRE''@;'; put 'put ''VmFscyJ9LDU3Nzp7bjoiQnJ0U3VwTmFtZVN0YXJ0In0sNTc4OntuOiJCcnRTdXBOYW1lVmFsdWVTdGFydCJ9LDU3OTp7bjoiQnJ0U3VwTmFtZVZhbHVlRW5kIn0sNTgwOntuOiJCcnRTdXBOYW1lTnVtIn0sNTgxOntuOiJCcnRTdXBOYW1lRXJyIn0sNTgyOntuOiJCcnRTdXBOYW1lU3QifSw1''@;'; put 'put ''ODM6e246IkJydFN1cE5hbWVOaWwifSw1ODQ6e246IkJydFN1cE5hbWVCb29sIn0sNTg1OntuOiJCcnRTdXBOYW1lRm1sYSJ9LDU4Njp7bjoiQnJ0U3VwTmFtZUJpdHMifSw1ODc6e246IkJydFN1cE5hbWVFbmQifSw1ODg6e246IkJydEVuZFN1cEJvb2sifSw1ODk6e246IkJydENlbGxTbWFy''@;'; put 'put ''dFRhZ1Byb3BlcnR5In0sNTkwOntuOiJCcnRCZWdpbkNlbGxTbWFydFRhZyJ9LDU5MTp7bjoiQnJ0RW5kQ2VsbFNtYXJ0VGFnIn0sNTkyOntuOiJCcnRCZWdpbkNlbGxTbWFydFRhZ3MifSw1OTM6e246IkJydEVuZENlbGxTbWFydFRhZ3MifSw1OTQ6e246IkJydEJlZ2luU21hcnRUYWdzIn0s''@;'; put 'put ''NTk1OntuOiJCcnRFbmRTbWFydFRhZ3MifSw1OTY6e246IkJydFNtYXJ0VGFnVHlwZSJ9LDU5Nzp7bjoiQnJ0QmVnaW5TbWFydFRhZ1R5cGVzIn0sNTk4OntuOiJCcnRFbmRTbWFydFRhZ1R5cGVzIn0sNTk5OntuOiJCcnRCZWdpblNYRmlsdGVycyJ9LDYwMDp7bjoiQnJ0RW5kU1hGaWx0ZXJz''@;'; put 'put ''In0sNjAxOntuOiJCcnRCZWdpblNYRklMVEVSIn0sNjAyOntuOiJCcnRFbmRTWEZpbHRlciJ9LDYwMzp7bjoiQnJ0QmVnaW5GaWxscyJ9LDYwNDp7bjoiQnJ0RW5kRmlsbHMifSw2MDU6e246IkJydEJlZ2luQ2VsbFdhdGNoZXMifSw2MDY6e246IkJydEVuZENlbGxXYXRjaGVzIn0sNjA3Ontu''@;'; put 'put ''OiJCcnRDZWxsV2F0Y2gifSw2MDg6e246IkJydEJlZ2luQ1JFcnJzIn0sNjA5OntuOiJCcnRFbmRDUkVycnMifSw2MTA6e246IkJydENyYXNoUmVjRXJyIn0sNjExOntuOiJCcnRCZWdpbkZvbnRzIn0sNjEyOntuOiJCcnRFbmRGb250cyJ9LDYxMzp7bjoiQnJ0QmVnaW5Cb3JkZXJzIn0sNjE0''@;'; put 'put ''OntuOiJCcnRFbmRCb3JkZXJzIn0sNjE1OntuOiJCcnRCZWdpbkZtdHMifSw2MTY6e246IkJydEVuZEZtdHMifSw2MTc6e246IkJydEJlZ2luQ2VsbFhGcyJ9LDYxODp7bjoiQnJ0RW5kQ2VsbFhGcyJ9LDYxOTp7bjoiQnJ0QmVnaW5TdHlsZXMifSw2MjA6e246IkJydEVuZFN0eWxlcyJ9LDYy''@;'; put 'put ''NTp7bjoiQnJ0QmlnTmFtZSJ9LDYyNjp7bjoiQnJ0QmVnaW5DZWxsU3R5bGVYRnMifSw2Mjc6e246IkJydEVuZENlbGxTdHlsZVhGcyJ9LDYyODp7bjoiQnJ0QmVnaW5Db21tZW50cyJ9LDYyOTp7bjoiQnJ0RW5kQ29tbWVudHMifSw2MzA6e246IkJydEJlZ2luQ29tbWVudEF1dGhvcnMifSw2''@;'; put 'put ''MzE6e246IkJydEVuZENvbW1lbnRBdXRob3JzIn0sNjMyOntuOiJCcnRDb21tZW50QXV0aG9yIixmOnBIfSw2MzM6e246IkJydEJlZ2luQ29tbWVudExpc3QifSw2MzQ6e246IkJydEVuZENvbW1lbnRMaXN0In0sNjM1OntuOiJCcnRCZWdpbkNvbW1lbnQiLGY6ZnVuY3Rpb24gamcoeSl7dmFy''@;'; put 'put ''IFA9e307UC5pYXV0aG9yPXkucmVhZF9zaGlmdCg0KTt2YXIgTD1BYyh5LDE2KTtyZXR1cm4gUC5yZng9TC5zLFAucmVmPUFpKEwucykseS5sKz0xNixQfX0sNjM2OntuOiJCcnRFbmRDb21tZW50In0sNjM3OntuOiJCcnRDb21tZW50VGV4dCIsZjp3eX0sNjM4OntuOiJCcnRCZWdpbk9sZU9i''@;'; put 'put ''amVjdHMifSw2Mzk6e246IkJydE9sZU9iamVjdCJ9LDY0MDp7bjoiQnJ0RW5kT2xlT2JqZWN0cyJ9LDY0MTp7bjoiQnJ0QmVnaW5TeHJ1bGVzIn0sNjQyOntuOiJCcnRFbmRTeFJ1bGVzIn0sNjQzOntuOiJCcnRCZWdpbkFjdGl2ZVhDb250cm9scyJ9LDY0NDp7bjoiQnJ0QWN0aXZlWCJ9LDY0''@;'; put 'put ''NTp7bjoiQnJ0RW5kQWN0aXZlWENvbnRyb2xzIn0sNjQ2OntuOiJCcnRCZWdpblBDRFNEVENFTWVtYmVyc1NvcnRCeSJ9LDY0ODp7bjoiQnJ0QmVnaW5DZWxsSWdub3JlRUNzIn0sNjQ5OntuOiJCcnRDZWxsSWdub3JlRUMifSw2NTA6e246IkJydEVuZENlbGxJZ25vcmVFQ3MifSw2NTE6e246''@;'; put 'put ''IkJydENzUHJvcCIsZjpmdW5jdGlvbiBpQih5LFApe3JldHVybiB5LmwrPTEwLHtuYW1lOmtjKHkpfX19LDY1Mjp7bjoiQnJ0Q3NQYWdlU2V0dXAifSw2NTM6e246IkJydEJlZ2luVXNlckNzVmlld3MifSw2NTQ6e246IkJydEVuZFVzZXJDc1ZpZXdzIn0sNjU1OntuOiJCcnRCZWdpblVzZXJD''@;'; put 'put ''c1ZpZXcifSw2NTY6e246IkJydEVuZFVzZXJDc1ZpZXcifSw2NTc6e246IkJydEJlZ2luUGNkU0ZDSUVudHJpZXMifSw2NTg6e246IkJydEVuZFBDRFNGQ0lFbnRyaWVzIn0sNjU5OntuOiJCcnRQQ0RTRkNJRW50cnkifSw2NjA6e246IkJydEJlZ2luTGlzdFBhcnRzIn0sNjYxOntuOiJCcnRM''@;'; put 'put ''aXN0UGFydCJ9LDY2Mjp7bjoiQnJ0RW5kTGlzdFBhcnRzIn0sNjYzOntuOiJCcnRTaGVldENhbGNQcm9wIn0sNjY0OntuOiJCcnRCZWdpbkZuR3JvdXAifSw2NjU6e246IkJydEZuR3JvdXAifSw2NjY6e246IkJydEVuZEZuR3JvdXAifSw2Njc6e246IkJydFN1cEFkZGluIn0sNjY4OntuOiJC''@;'; put 'put ''cnRTWFRETVBPcmRlciJ9LDY2OTp7bjoiQnJ0Q3NQcm90ZWN0aW9uIn0sNjcxOntuOiJCcnRCZWdpbldzU29ydE1hcCJ9LDY3Mjp7bjoiQnJ0RW5kV3NTb3J0TWFwIn0sNjczOntuOiJCcnRCZWdpblJSU29ydCJ9LDY3NDp7bjoiQnJ0RW5kUlJTb3J0In0sNjc1OntuOiJCcnRSUlNvcnRJdGVt''@;'; put 'put ''In0sNjc2OntuOiJCcnRGaWxlU2hhcmluZ0lzbyJ9LDY3Nzp7bjoiQnJ0Qm9va1Byb3RlY3Rpb25Jc28ifSw2Nzg6e246IkJydFNoZWV0UHJvdGVjdGlvbklzbyJ9LDY3OTp7bjoiQnJ0Q3NQcm90ZWN0aW9uSXNvIn0sNjgwOntuOiJCcnRSYW5nZVByb3RlY3Rpb25Jc28ifSw2ODE6e246IkJy''@;'; put 'put ''dERWYWxMaXN0In0sMTAyNDp7bjoiQnJ0UndEZXNjZW50In0sMTAyNTp7bjoiQnJ0S25vd25Gb250cyJ9LDEwMjY6e246IkJydEJlZ2luU1hUdXBsZVNldCJ9LDEwMjc6e246IkJydEVuZFNYVHVwbGVTZXQifSwxMDI4OntuOiJCcnRCZWdpblNYVHVwbGVTZXRIZWFkZXIifSwxMDI5OntuOiJC''@;'; put 'put ''cnRFbmRTWFR1cGxlU2V0SGVhZGVyIn0sMTAzMDp7bjoiQnJ0U1hUdXBsZVNldEhlYWRlckl0ZW0ifSwxMDMxOntuOiJCcnRCZWdpblNYVHVwbGVTZXREYXRhIn0sMTAzMjp7bjoiQnJ0RW5kU1hUdXBsZVNldERhdGEifSwxMDMzOntuOiJCcnRCZWdpblNYVHVwbGVTZXRSb3cifSwxMDM0Ontu''@;'; put 'put ''OiJCcnRFbmRTWFR1cGxlU2V0Um93In0sMTAzNTp7bjoiQnJ0U1hUdXBsZVNldFJvd0l0ZW0ifSwxMDM2OntuOiJCcnROYW1lRXh0In0sMTAzNzp7bjoiQnJ0UENESDE0In0sMTAzODp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtMTQifSwxMDM5OntuOiJCcnRFbmRQQ0RDYWxjTWVtMTQifSwxMDQw''@;'; put 'put ''OntuOiJCcnRTWFRIMTQifSwxMDQxOntuOiJCcnRCZWdpblNwYXJrbGluZUdyb3VwIn0sMTA0Mjp7bjoiQnJ0RW5kU3BhcmtsaW5lR3JvdXAifSwxMDQzOntuOiJCcnRTcGFya2xpbmUifSwxMDQ0OntuOiJCcnRTWERJMTQifSwxMDQ1OntuOiJCcnRXc0ZtdEluZm9FeDE0In0sMTA0Njp7bjoi''@;'; put 'put ''QnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmcxNCJ9LDEwNDc6e246IkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZzE0In0sMTA0ODp7bjoiQnJ0QmVnaW5DRlJ1bGUxNCJ9LDEwNDk6e246IkJydEVuZENGUnVsZTE0In0sMTA1MDp7bjoiQnJ0Q0ZWTzE0In0sMTA1MTp7bjoiQnJ0QmVn''@;'; put 'put ''aW5EYXRhYmFyMTQifSwxMDUyOntuOiJCcnRCZWdpbkljb25TZXQxNCJ9LDEwNTM6e246IkJydERWYWwxNCIsZjpmdW5jdGlvbiBiQyh5LFAsTCl7dmFyIFg9ZnVuY3Rpb24gSnQoeSxQLEwpe3ZhciBYPXkucmVhZF9zaGlmdCg0KSxuZT17fTtyZXR1cm4gMSZYJiYobmUucmVmcz1mdW5jdGlv''@;'; put 'put ''biBWbih5KXtmb3IodmFyIFA9eS5yZWFkX3NoaWZ0KDQpLEw9W107UC0tID4wOylMLnB1c2goUHIoeSkpO3JldHVybiBMfSh5KSksMiZYJiYobmUuc3FyZWZzPWZ1bmN0aW9uIHJvKHkpe2Zvcih2YXIgUD15LnJlYWRfc2hpZnQoNCksTD1bXTtQLS0gPjA7KUwucHVzaChKbyh5KSk7cmV0dXJu''@;'; put 'put ''IEx9KHkpKSw0JlgmJihuZS5mb3JtdWxhcz1mdW5jdGlvbiBIcyh5LFAsTCl7Zm9yKHZhciBYPXkucmVhZF9zaGlmdCg0KSxuZT1bXTtYLS0gPjA7KW5lLnB1c2goWWMoeSwwLEwpKTtyZXR1cm4gbmV9KHksMCxMKSksOCZYJiYobmUucmVsSUQ9ZnVuY3Rpb24gcjkoeSl7dmFyIFA9eS5yZWFk''@;'; put 'put ''X3NoaWZ0KDIpO3JldHVybiAwPT09UD8iIjp5LnJlYWRfc2hpZnQoUCwidXRmMTZsZSIpfSh5KSksbmV9KHksMCxMKSxuZT15LnJlYWRfc2hpZnQoNCksZmU9dXUoeSksYmU9dXUoeSksdmU9dXUoeSkseWU9dXUoeSksVmU9KFguZm9ybXVsYXN8fFtdKVswXSx6ZT0oWC5mb3JtdWxhc3x8W10p''@;'; put 'put ''WzFdLFdlPTE1Jm5lLHJ0PXt0OlNBW1dlXSxzcXJmeDpYLnNxcmVmc1swXSxzOltmZSxiZSx2ZSx5ZV19O3JldHVybiBWZSYmKHJ0LmYxPVZlKSx6ZSYmKHJ0LmYyPXplKSwwPT1XZXx8Mz09V2V8fDc9PVdlfHwocnQub3A9X0NbbmU+PjIwJjE1XSkscnR9fSwxMDU0OntuOiJCcnRCZWdpbkRW''@;'; put 'put ''YWxzMTQifSwxMDU1OntuOiJCcnRDb2xvcjE0In0sMTA1Njp7bjoiQnJ0QmVnaW5TcGFya2xpbmVzIn0sMTA1Nzp7bjoiQnJ0RW5kU3BhcmtsaW5lcyJ9LDEwNTg6e246IkJydEJlZ2luU3BhcmtsaW5lR3JvdXBzIn0sMTA1OTp7bjoiQnJ0RW5kU3BhcmtsaW5lR3JvdXBzIn0sMTA2MTp7bjoi''@;'; put 'put ''QnJ0U1hWRDE0In0sMTA2Mjp7bjoiQnJ0QmVnaW5TWFZpZXcxNCJ9LDEwNjM6e246IkJydEVuZFNYVmlldzE0In0sMTA2NDp7bjoiQnJ0QmVnaW5TWFZpZXcxNiJ9LDEwNjU6e246IkJydEVuZFNYVmlldzE2In0sMTA2Njp7bjoiQnJ0QmVnaW5QQ0QxNCJ9LDEwNjc6e246IkJydEVuZFBDRDE0''@;'; put 'put ''In0sMTA2ODp7bjoiQnJ0QmVnaW5FeHRDb25uMTQifSwxMDY5OntuOiJCcnRFbmRFeHRDb25uMTQifSwxMDcwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSURzIn0sMTA3MTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVJRHMifSwxMDcyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlSUQifSwxMDczOntu''@;'; put 'put ''OiJCcnRFbmRTbGljZXJDYWNoZUlEIn0sMTA3NTp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZSJ9LDEwNzY6e246IkJydEVuZFNsaWNlckNhY2hlIn0sMTA3Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZURlZiJ9LDEwNzg6e246IkJydEVuZFNsaWNlckNhY2hlRGVmIn0sMTA3OTp7bjoiQnJ0QmVn''@;'; put 'put ''aW5TbGljZXJzRXgifSwxMDgwOntuOiJCcnRFbmRTbGljZXJzRXgifSwxMDgxOntuOiJCcnRCZWdpblNsaWNlckV4In0sMTA4Mjp7bjoiQnJ0RW5kU2xpY2VyRXgifSwxMDgzOntuOiJCcnRCZWdpblNsaWNlciJ9LDEwODQ6e246IkJydEVuZFNsaWNlciJ9LDEwODU6e246IkJydFNsaWNlckNh''@;'; put 'put ''Y2hlUGl2b3RUYWJsZXMifSwxMDg2OntuOiJCcnRCZWdpblNsaWNlckNhY2hlT2xhcEltcGwifSwxMDg3OntuOiJCcnRFbmRTbGljZXJDYWNoZU9sYXBJbXBsIn0sMTA4ODp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZUxldmVsc0RhdGEifSwxMDg5OntuOiJCcnRFbmRTbGljZXJDYWNoZUxldmVs''@;'; put 'put ''c0RhdGEifSwxMDkwOntuOiJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxEYXRhIn0sMTA5MTp7bjoiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbERhdGEifSwxMDkyOntuOiJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZXMifSwxMDkzOntuOiJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2VzIn0sMTA5''@;'; put 'put ''NDp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2UifSwxMDk1OntuOiJCcnRFbmRTbGljZXJDYWNoZVNpUmFuZ2UifSwxMDk2OntuOiJCcnRTbGljZXJDYWNoZU9sYXBJdGVtIn0sMTA5Nzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZVNlbGVjdGlvbnMifSwxMDk4OntuOiJCcnRTbGljZXJD''@;'; put 'put ''YWNoZVNlbGVjdGlvbiJ9LDEwOTk6e246IkJydEVuZFNsaWNlckNhY2hlU2VsZWN0aW9ucyJ9LDExMDA6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVOYXRpdmUifSwxMTAxOntuOiJCcnRFbmRTbGljZXJDYWNoZU5hdGl2ZSJ9LDExMDI6e246IkJydFNsaWNlckNhY2hlTmF0aXZlSXRlbSJ9LDEx''@;'; put 'put ''MDM6e246IkJydFJhbmdlUHJvdGVjdGlvbjE0In0sMTEwNDp7bjoiQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvMTQifSwxMTA1OntuOiJCcnRDZWxsSWdub3JlRUMxNCJ9LDExMTE6e246IkJydExpc3QxNCJ9LDExMTI6e246IkJydENGSWNvbiJ9LDExMTM6e246IkJydEJlZ2luU2xpY2VyQ2FjaGVz''@;'; put 'put ''UGl2b3RDYWNoZUlEcyJ9LDExMTQ6e246IkJydEVuZFNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHMifSwxMTE1OntuOiJCcnRCZWdpblNsaWNlcnMifSwxMTE2OntuOiJCcnRFbmRTbGljZXJzIn0sMTExNzp7bjoiQnJ0V2JQcm9wMTQifSwxMTE4OntuOiJCcnRCZWdpblNYRWRpdCJ9LDExMTk6''@;'; put 'put ''e246IkJydEVuZFNYRWRpdCJ9LDExMjA6e246IkJydEJlZ2luU1hFZGl0cyJ9LDExMjE6e246IkJydEVuZFNYRWRpdHMifSwxMTIyOntuOiJCcnRCZWdpblNYQ2hhbmdlIn0sMTEyMzp7bjoiQnJ0RW5kU1hDaGFuZ2UifSwxMTI0OntuOiJCcnRCZWdpblNYQ2hhbmdlcyJ9LDExMjU6e246IkJy''@;'; put 'put ''dEVuZFNYQ2hhbmdlcyJ9LDExMjY6e246IkJydFNYVHVwbGVJdGVtcyJ9LDExMjg6e246IkJydEJlZ2luU2xpY2VyU3R5bGUifSwxMTI5OntuOiJCcnRFbmRTbGljZXJTdHlsZSJ9LDExMzA6e246IkJydFNsaWNlclN0eWxlRWxlbWVudCJ9LDExMzE6e246IkJydEJlZ2luU3R5bGVTaGVldEV4''@;'; put 'put ''dDE0In0sMTEzMjp7bjoiQnJ0RW5kU3R5bGVTaGVldEV4dDE0In0sMTEzMzp7bjoiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM0OntuOiJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSUQifSwxMTM1OntuOiJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ3Mi''@;'; put 'put ''fSwxMTM2OntuOiJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmdzIn0sMTEzNzp7bjoiQnJ0QmVnaW5QQ0RDYWxjTWVtRXh0In0sMTEzODp7bjoiQnJ0RW5kUENEQ2FsY01lbUV4dCJ9LDExMzk6e246IkJydEJlZ2luUENEQ2FsY01lbXNFeHQifSwxMTQwOntuOiJCcnRFbmRQQ0RDYWxjTWVt''@;'; put 'put ''c0V4dCJ9LDExNDE6e246IkJydFBDREZpZWxkMTQifSwxMTQyOntuOiJCcnRCZWdpblNsaWNlclN0eWxlcyJ9LDExNDM6e246IkJydEVuZFNsaWNlclN0eWxlcyJ9LDExNDQ6e246IkJydEJlZ2luU2xpY2VyU3R5bGVFbGVtZW50cyJ9LDExNDU6e246IkJydEVuZFNsaWNlclN0eWxlRWxlbWVu''@;'; put 'put ''dHMifSwxMTQ2OntuOiJCcnRDRlJ1bGVFeHQifSwxMTQ3OntuOiJCcnRCZWdpblNYQ29uZEZtdDE0In0sMTE0ODp7bjoiQnJ0RW5kU1hDb25kRm10MTQifSwxMTQ5OntuOiJCcnRCZWdpblNYQ29uZEZtdHMxNCJ9LDExNTA6e246IkJydEVuZFNYQ29uZEZtdHMxNCJ9LDExNTI6e246IkJydEJl''@;'; put 'put ''Z2luU29ydENvbmQxNCJ9LDExNTM6e246IkJydEVuZFNvcnRDb25kMTQifSwxMTU0OntuOiJCcnRFbmREVmFsczE0In0sMTE1NTp7bjoiQnJ0RW5kSWNvblNldDE0In0sMTE1Njp7bjoiQnJ0RW5kRGF0YWJhcjE0In0sMTE1Nzp7bjoiQnJ0QmVnaW5Db2xvclNjYWxlMTQifSwxMTU4OntuOiJC''@;'; put 'put ''cnRFbmRDb2xvclNjYWxlMTQifSwxMTU5OntuOiJCcnRCZWdpblN4cnVsZXMxNCJ9LDExNjA6e246IkJydEVuZFN4cnVsZXMxNCJ9LDExNjE6e246IkJydEJlZ2luUFJ1bGUxNCJ9LDExNjI6e246IkJydEVuZFBSdWxlMTQifSwxMTYzOntuOiJCcnRCZWdpblBSRmlsdGVyczE0In0sMTE2NDp7''@;'; put 'put ''bjoiQnJ0RW5kUFJGaWx0ZXJzMTQifSwxMTY1OntuOiJCcnRCZWdpblBSRmlsdGVyMTQifSwxMTY2OntuOiJCcnRFbmRQUkZpbHRlcjE0In0sMTE2Nzp7bjoiQnJ0QmVnaW5QUkZJdGVtMTQifSwxMTY4OntuOiJCcnRFbmRQUkZJdGVtMTQifSwxMTY5OntuOiJCcnRCZWdpbkNlbGxJZ25vcmVF''@;'; put 'put ''Q3MxNCJ9LDExNzA6e246IkJydEVuZENlbGxJZ25vcmVFQ3MxNCJ9LDExNzE6e246IkJydER4ZjE0In0sMTE3Mjp7bjoiQnJ0QmVnaW5EeEYxNHMifSwxMTczOntuOiJCcnRFbmREeGYxNHMifSwxMTc3OntuOiJCcnRGaWx0ZXIxNCJ9LDExNzg6e246IkJydEJlZ2luQ3VzdG9tRmlsdGVyczE0''@;'; put 'put ''In0sMTE4MDp7bjoiQnJ0Q3VzdG9tRmlsdGVyMTQifSwxMTgxOntuOiJCcnRJY29uRmlsdGVyMTQifSwxMTgyOntuOiJCcnRQaXZvdENhY2hlQ29ubmVjdGlvbk5hbWUifSwyMDQ4OntuOiJCcnRCZWdpbkRlY291cGxlZFBpdm90Q2FjaGVJRHMifSwyMDQ5OntuOiJCcnRFbmREZWNvdXBsZWRQ''@;'; put 'put ''aXZvdENhY2hlSURzIn0sMjA1MDp7bjoiQnJ0RGVjb3VwbGVkUGl2b3RDYWNoZUlEIn0sMjA1MTp7bjoiQnJ0QmVnaW5QaXZvdFRhYmxlUmVmcyJ9LDIwNTI6e246IkJydEVuZFBpdm90VGFibGVSZWZzIn0sMjA1Mzp7bjoiQnJ0UGl2b3RUYWJsZVJlZiJ9LDIwNTQ6e246IkJydFNsaWNlckNh''@;'; put 'put ''Y2hlQm9va1Bpdm90VGFibGVzIn0sMjA1NTp7bjoiQnJ0QmVnaW5TeHZjZWxscyJ9LDIwNTY6e246IkJydEVuZFN4dmNlbGxzIn0sMjA1Nzp7bjoiQnJ0QmVnaW5TeFJvdyJ9LDIwNTg6e246IkJydEVuZFN4Um93In0sMjA2MDp7bjoiQnJ0UGNkQ2FsY01lbTE1In0sMjA2Nzp7bjoiQnJ0UXNp''@;'; put 'put ''MTUifSwyMDY4OntuOiJCcnRCZWdpbldlYkV4dGVuc2lvbnMifSwyMDY5OntuOiJCcnRFbmRXZWJFeHRlbnNpb25zIn0sMjA3MDp7bjoiQnJ0V2ViRXh0ZW5zaW9uIn0sMjA3MTp7bjoiQnJ0QWJzUGF0aDE1In0sMjA3Mjp7bjoiQnJ0QmVnaW5QaXZvdFRhYmxlVUlTZXR0aW5ncyJ9LDIwNzM6''@;'; put 'put ''e246IkJydEVuZFBpdm90VGFibGVVSVNldHRpbmdzIn0sMjA3NTp7bjoiQnJ0VGFibGVTbGljZXJDYWNoZUlEcyJ9LDIwNzY6e246IkJydFRhYmxlU2xpY2VyQ2FjaGVJRCJ9LDIwNzc6e246IkJydEJlZ2luVGFibGVTbGljZXJDYWNoZSJ9LDIwNzg6e246IkJydEVuZFRhYmxlU2xpY2VyQ2Fj''@;'; put 'put ''aGUifSwyMDc5OntuOiJCcnRTeEZpbHRlcjE1In0sMjA4MDp7bjoiQnJ0QmVnaW5UaW1lbGluZUNhY2hlUGl2b3RDYWNoZUlEcyJ9LDIwODE6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzIn0sMjA4Mjp7bjoiQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRCJ9LDIwODM6''@;'; put 'put ''e246IkJydEJlZ2luVGltZWxpbmVDYWNoZUlEcyJ9LDIwODQ6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVJRHMifSwyMDg1OntuOiJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRCJ9LDIwODY6e246IkJydEVuZFRpbWVsaW5lQ2FjaGVJRCJ9LDIwODc6e246IkJydEJlZ2luVGltZWxpbmVzRXgifSwy''@;'; put 'put ''MDg4OntuOiJCcnRFbmRUaW1lbGluZXNFeCJ9LDIwODk6e246IkJydEJlZ2luVGltZWxpbmVFeCJ9LDIwOTA6e246IkJydEVuZFRpbWVsaW5lRXgifSwyMDkxOntuOiJCcnRXb3JrQm9va1ByMTUifSwyMDkyOntuOiJCcnRQQ0RIMTUifSwyMDkzOntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGUi''@;'; put 'put ''fSwyMDk0OntuOiJCcnRFbmRUaW1lbGluZVN0eWxlIn0sMjA5NTp7bjoiQnJ0VGltZWxpbmVTdHlsZUVsZW1lbnQifSwyMDk2OntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVzaGVldEV4dDE1In0sMjA5Nzp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXNoZWV0RXh0MTUifSwyMDk4OntuOiJCcnRC''@;'; put 'put ''ZWdpblRpbWVsaW5lU3R5bGVzIn0sMjA5OTp7bjoiQnJ0RW5kVGltZWxpbmVTdHlsZXMifSwyMTAwOntuOiJCcnRCZWdpblRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDE6e246IkJydEVuZFRpbWVsaW5lU3R5bGVFbGVtZW50cyJ9LDIxMDI6e246IkJydER4ZjE1In0sMjEwMzp7bjoiQnJ0''@;'; put 'put ''QmVnaW5EeGZzMTUifSwyMTA0OntuOiJicnRFbmREeGZzMTUifSwyMTA1OntuOiJCcnRTbGljZXJDYWNoZUhpZGVJdGVtc1dpdGhOb0RhdGEifSwyMTA2OntuOiJCcnRCZWdpbkl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDc6e246IkJydEVuZEl0ZW1VbmlxdWVOYW1lcyJ9LDIxMDg6e246IkJydEl0''@;'; put 'put ''ZW1VbmlxdWVOYW1lIn0sMjEwOTp7bjoiQnJ0QmVnaW5FeHRDb25uMTUifSwyMTEwOntuOiJCcnRFbmRFeHRDb25uMTUifSwyMTExOntuOiJCcnRCZWdpbk9sZWRiUHIxNSJ9LDIxMTI6e246IkJydEVuZE9sZWRiUHIxNSJ9LDIxMTM6e246IkJydEJlZ2luRGF0YUZlZWRQcjE1In0sMjExNDp7''@;'; put 'put ''bjoiQnJ0RW5kRGF0YUZlZWRQcjE1In0sMjExNTp7bjoiQnJ0VGV4dFByMTUifSwyMTE2OntuOiJCcnRSYW5nZVByMTUifSwyMTE3OntuOiJCcnREYkNvbW1hbmQxNSJ9LDIxMTg6e246IkJydEJlZ2luRGJUYWJsZXMxNSJ9LDIxMTk6e246IkJydEVuZERiVGFibGVzMTUifSwyMTIwOntuOiJC''@;'; put 'put ''cnREYlRhYmxlMTUifSwyMTIxOntuOiJCcnRCZWdpbkRhdGFNb2RlbCJ9LDIxMjI6e246IkJydEVuZERhdGFNb2RlbCJ9LDIxMjM6e246IkJydEJlZ2luTW9kZWxUYWJsZXMifSwyMTI0OntuOiJCcnRFbmRNb2RlbFRhYmxlcyJ9LDIxMjU6e246IkJydE1vZGVsVGFibGUifSwyMTI2OntuOiJC''@;'; put 'put ''cnRCZWdpbk1vZGVsUmVsYXRpb25zaGlwcyJ9LDIxMjc6e246IkJydEVuZE1vZGVsUmVsYXRpb25zaGlwcyJ9LDIxMjg6e246IkJydE1vZGVsUmVsYXRpb25zaGlwIn0sMjEyOTp7bjoiQnJ0QmVnaW5FQ1R4dFdpejE1In0sMjEzMDp7bjoiQnJ0RW5kRUNUeHRXaXoxNSJ9LDIxMzE6e246IkJy''@;'; put 'put ''dEJlZ2luRUNUV0ZsZEluZm9Mc3QxNSJ9LDIxMzI6e246IkJydEVuZEVDVFdGbGRJbmZvTHN0MTUifSwyMTMzOntuOiJCcnRCZWdpbkVDVFdGbGRJbmZvMTUifSwyMTM0OntuOiJCcnRGaWVsZExpc3RBY3RpdmVJdGVtIn0sMjEzNTp7bjoiQnJ0UGl2b3RDYWNoZUlkVmVyc2lvbiJ9LDIxMzY6''@;'; put 'put ''e246IkJydFNYREkxNSJ9LDIxMzc6e246IkJydEJlZ2luTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEzODp7bjoiQnJ0RW5kTW9kZWxUaW1lR3JvdXBpbmdzIn0sMjEzOTp7bjoiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZyJ9LDIxNDA6e246IkJydEVuZE1vZGVsVGltZUdyb3VwaW5nIn0sMjE0''@;'; put 'put ''MTp7bjoiQnJ0TW9kZWxUaW1lR3JvdXBpbmdDYWxjQ29sIn0sMzA3Mjp7bjoiQnJ0VWlkIn0sMzA3Mzp7bjoiQnJ0UmV2aXNpb25QdHIifSw1MDk1OntuOiJCcnRCZWdpbkNhbGNGZWF0dXJlcyJ9LDUwOTY6e246IkJydEVuZENhbGNGZWF0dXJlcyJ9LDUwOTc6e246IkJydENhbGNGZWF0dXJl''@;'; put 'put ''In0sNjU1MzU6e246IiJ9fSxEQj1GZShMNiwibiIpO0RCLkJydEZSVEFyY2hJRCQ9MTY7dmFyIE5DPXs2OntuOiJGb3JtdWxhIixmOmp3fSwxMDp7bjoiRU9GIixmOm5ofSwxMjp7bjoiQ2FsY0NvdW50IixmOkhsfSwxMzp7bjoiQ2FsY01vZGUiLGY6SGx9LDE0OntuOiJDYWxjUHJlY2lzaW9u''@;'; put 'put ''IixmOkZvfSwxNTp7bjoiQ2FsY1JlZk1vZGUiLGY6Rm99LDE2OntuOiJDYWxjRGVsdGEiLGY6emF9LDE3OntuOiJDYWxjSXRlciIsZjpGb30sMTg6e246IlByb3RlY3QiLGY6Rm99LDE5OntuOiJQYXNzd29yZCIsZjpIbH0sMjA6e246IkhlYWRlciIsZjp4VH0sMjE6e246IkZvb3RlciIsZjp4''@;'; put 'put ''VH0sMjM6e246IkV4dGVyblNoZWV0IixmOkM5fSwyNDp7bjoiTGJsIixmOlV5fSwyNTp7bjoiV2luUHJvdGVjdCIsZjpGb30sMjY6e246IlZlcnRpY2FsUGFnZUJyZWFrcyJ9LDI3OntuOiJIb3Jpem9udGFsUGFnZUJyZWFrcyJ9LDI4OntuOiJOb3RlIixmOmZ1bmN0aW9uIEVUKHksUCxMKXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24gWG8oeSxQLEwpe2lmKCEoTC5iaWZmPDgpKXt2YXIgWD15LnJlYWRfc2hpZnQoMiksbmU9eS5yZWFkX3NoaWZ0KDIpLGZlPXkucmVhZF9zaGlmdCgyKSxiZT15LnJlYWRfc2hpZnQoMiksdmU9bTAoeSwwLEwpO3JldHVybiBMLmJpZmY8OCYmeS5yZWFkX3NoaWZ0KDEp''@;'; put 'put ''LFt7cjpYLGM6bmV9LHZlLGJlLGZlXX19KHksMCxMKX19LDI5OntuOiJTZWxlY3Rpb24iLGY6ZnVuY3Rpb24gRTIoeSxQLEwpe3JldHVybiBMJiZMLmJpZmY8NT8oeS5sKz1QLHtjZWxsOntyOjAsYzowfX0pOih5LnJlYWRfc2hpZnQoMSkse2NlbGw6QWkoe3I6eS5yZWFkX3NoaWZ0KDIpLGM6''@;'; put 'put ''eS5yZWFkX3NoaWZ0KDIpfSl9KX19LDM0OntuOiJEYXRlMTkwNCIsZjpGb30sMzU6e246IkV4dGVybk5hbWUiLGY6enl9LDM4OntuOiJMZWZ0TWFyZ2luIixmOnphfSwzOTp7bjoiUmlnaHRNYXJnaW4iLGY6emF9LDQwOntuOiJUb3BNYXJnaW4iLGY6emF9LDQxOntuOiJCb3R0b21NYXJnaW4i''@;'; put 'put ''LGY6emF9LDQyOntuOiJQcmludFJvd0NvbCIsZjpGb30sNDM6e246IlByaW50R3JpZCIsZjpGb30sNDc6e246IkZpbGVQYXNzIixmOmZ1bmN0aW9uIHJ3KHksUCxMKXtpZihMLmVuYylyZXR1cm4gTC5lbmM7dmFyIFg9e1R5cGU6TC5iaWZmPj04P3kucmVhZF9zaGlmdCgyKTowfTtyZXR1cm4g''@;'; put 'put ''WC5UeXBlP2Z1bmN0aW9uIEw5KHksUCxMLFgpe3ZhciBuZT1YfHx7fTtpZihuZS5JbmZvPXkucmVhZF9zaGlmdCgyKSx5LmwtPTIsMT09PW5lLkluZm8pe2lmKG5lLkRhdGE9ZnVuY3Rpb24gbFEoeSl7dmFyIFA9e30sTD1QLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1xMCh5LDQpO2lmKDEhPUwu''@;'; put 'put ''TWFqb3J8fDEhPUwuTWlub3IpdGhyb3cidW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAiK0wuTWFqb3IrIiA6ICIrTC5NaW5vcjtyZXR1cm4gUC5TYWx0PXkucmVhZF9zaGlmdCgxNiksUC5FbmNyeXB0ZWRWZXJpZmllcj15LnJlYWRfc2hpZnQoMTYpLFAuRW5jcnlwdGVkVmVyaWZpZXJIYXNo''@;'; put 'put ''PXkucmVhZF9zaGlmdCgxNiksUH0oeSksTC5wYXNzd29yZCYmdHlwZW9mIEpwPCJ1Iil7dmFyIGZlPUpwKEwucGFzc3dvcmQsbmUuRGF0YS5TYWx0LCIwMDAwMDAwMCIpLGJlPWxlKG5lLkRhdGEuRW5jcnlwdGVkVmVyaWZpZXIrbmUuRGF0YS5FbmNyeXB0ZWRWZXJpZmllckhhc2gsImhleCIp''@;'; put 'put ''LHZlPVBmLnJjNChsZShmZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpLGJlKTtYLnZhbGlkPVBmLm1kNSh2ZS5zbGljZSgwLDE2KSk9PUJ1ZmZlci5mcm9tKHZlLnNsaWNlKDE2KSkudG9TdHJpbmcoImhleCIpLG5lLkRhdGEuS2V5PWZlLFguaW5zaXR1PWZ1bmN0aW9uIFVCKHksUCl7dmFy''@;'; put 'put ''IEw9bmV3IEFycmF5KDI1NiksWD0wLG5lPTAsZmU9MCxiZT0wO2Z1bmN0aW9uIHZlKHJ0KXtmb3IoWD0wLG5lPTAsZmU9MCxiZT0wLG5lPTA7MjU2IT1uZTsrK25lKUxbbmVdPW5lO2ZvcihmZT0wLG5lPTA7MjU2IT1uZTsrK25lKXt0cnl7ZmU9ZmUrTFtuZV0rcnRbbmUlcnQubGVuZ3RoXS5j''@;'; put 'put ''aGFyQ29kZUF0KDApJjI1NX1jYXRjaChsdCl7dGhyb3cgY29uc29sZS5sb2cobmUscnRbbmUlcnQubGVuZ3RoXSksbHR9YmU9TFtuZV0sTFtuZV09TFtmZV0sTFtmZV09YmV9bmU9ZmU9MH1mdW5jdGlvbiB5ZShydCl7dmFyIGx0PVcocnQubGVuZ3RoKTtmb3IoWD0wO1ghPXJ0Lmxlbmd0aDsr''@;'; put 'put ''K1gpYmU9TFtuZT1uZSsxJjI1NV0sTFtuZV09TFtmZT0oZmUrTFtuZV0pJTI1Nl0sTFtmZV09YmUsbHRbWF09cnRbWF1eTFtMW25lXStMW2ZlXSYyNTVdO3JldHVybiBCdWZmZXIuZnJvbShsdCl9dmFyIFZlPXkuS2V5LHplPTA7dmUobGUoVmUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSk7''@;'; put 'put ''dmFyIFdlPTA7cmV0dXJuIGZ1bmN0aW9uKHJ0KXtpZihXZStydC5sZW5ndGg8MTAyNClyZXR1cm4gV2UrPXJ0Lmxlbmd0aCx5ZShydCk7dmFyIGF0PTAsdnQ9bGUocnQuc2xpY2UoYXQsYXQrKEN0PTEwMjQtV2UpKSk7YXQrPUN0LFdlPTA7dmFyIFB0PXllKHZ0KTtmb3IoYXQ9PXJ0Lmxlbmd0''@;'; put 'put ''aCYmKCsremUsVmU9SnAoUCx5LlNhbHQsRjYoemUpKSx2ZShsZShWZSwiaGV4IikudG9TdHJpbmcoImJpbmFyeSIpKSk7YXQ8cnQubGVuZ3RoOyl7Kyt6ZSxWZT1KcChQLHkuU2FsdCxGNih6ZSkpLHZlKEJ1ZmZlci5mcm9tKFZlLCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpO3ZhciBDdD1N''@;'; put 'put ''YXRoLm1pbigxMDI0LHJ0Lmxlbmd0aC1hdCk7dnQ9bGUocnQuc2xpY2UoYXQsYXQrQ3QpKSxhdCs9Q3QsV2U9Q3QsUHQ9QnVmZmVyLmNvbmNhdChbUHQseWUodnQpXSl9cmV0dXJuIFB0fX0obmUuRGF0YSxMLnBhc3N3b3JkKX19ZWxzZSBpZihuZS5EYXRhPWZ1bmN0aW9uIEk5KHksUCl7dmFy''@;'; put 'put ''IEw9e30sWD1MLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1xMCh5LDQpO2lmKFAtPTQsMiE9WC5NaW5vcil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtaW5vciB2ZXJzaW9uIGNvZGU6ICIrWC5NaW5vcik7aWYoWC5NYWpvcj40fHxYLk1ham9yPDIpdGhyb3cgbmV3IEVycm9yKCJ1bnJl''@;'; put 'put ''Y29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAiK1guTWFqb3IpO0wuRmxhZ3M9eS5yZWFkX3NoaWZ0KDQpLFAtPTQ7dmFyIG5lPXkucmVhZF9zaGlmdCg0KTtyZXR1cm4gUC09NCxMLkVuY3J5cHRpb25IZWFkZXI9TU4oeSxuZSksTC5FbmNyeXB0aW9uVmVyaWZpZXI9RDkoeSxQLT1uZSks''@;'; put 'put ''TH0oeSxQKSxuZS5EYXRhJiZuZS5EYXRhLkVuY3J5cHRpb25IZWFkZXImJjI2NjI1PT09bmUuRGF0YS5FbmNyeXB0aW9uSGVhZGVyLkFsZ0lEJiZMLnBhc3N3b3JkJiZ0eXBlb2YgUXA8InUiKXt2YXIgeWU9UXAoTC5wYXNzd29yZCxuZS5EYXRhLkVuY3J5cHRpb25WZXJpZmllci5TYWx0LnRv''@;'; put 'put ''U3RyaW5nKCJoZXgiKSwiMDAwMDAwMDAiKSxWZT1uZS5EYXRhLkVuY3J5cHRpb25IZWFkZXIuS2V5U2l6ZT4+PjM7NT09VmV8fFZlPHllLmxlbmd0aCYmKHllPXllLnNsaWNlKDAsVmUpKTt2YXIgemU9bGUobmUuRGF0YS5FbmNyeXB0aW9uVmVyaWZpZXIuVmVyaWZpZXIudG9TdHJpbmcoImhl''@;'; put 'put ''eCIpK25lLkRhdGEuRW5jcnlwdGlvblZlcmlmaWVyLlZlcmlmaWVySGFzaC50b1N0cmluZygiaGV4IiksImhleCIpLFdlPVBmLnJjNCh5ZS50b1N0cmluZygiYmluYXJ5IiksemUpO1gudmFsaWQ9QWwoV2Uuc2xpY2UoMCxWZSksIlNIQTEiKS50b1N0cmluZygiaGV4Iik9PVdlLnNsaWNlKFZl''@;'; put 'put ''KS50b1N0cmluZygiaGV4IiksbmUuRGF0YS5LZXk9eWUsWC52YWxpZCYmKFguaW5zaXR1PWZ1bmN0aW9uIGxlZSh5LFApe3ZhciBMPW5ldyBBcnJheSgyNTYpLFg9MCxuZT0wLGZlPTAsYmU9MCx2ZT15LkVuY3J5cHRpb25IZWFkZXIuS2V5U2l6ZT4+PjM7ZnVuY3Rpb24geWUobHQpe2Zvcihs''@;'; put 'put ''dD1CdWZmZXIuZnJvbShsdC5zbGljZSgwLHZlKSksWD0wLG5lPTAsZmU9MCxiZT0wLG5lPTA7MjU2IT1uZTsrK25lKUxbbmVdPW5lO2ZvcihmZT0wLG5lPTA7MjU2IT1uZTsrK25lKXt2YXIgQ3Q9bHRbbmUlbHQubGVuZ3RoXTtmZT1mZStMW25lXSsoInN0cmluZyI9PXR5cGVvZiBDdD9DdC5j''@;'; put 'put ''aGFyQ29kZUF0KDApOkN0KSYyNTUsYmU9TFtuZV0sTFtuZV09TFtmZV0sTFtmZV09YmV9bmU9ZmU9MH1mdW5jdGlvbiBWZShsdCl7dmFyIEN0PVcobHQubGVuZ3RoKTtmb3IoWD0wO1ghPWx0Lmxlbmd0aDsrK1gpYmU9TFtuZT1uZSsxJjI1NV0sTFtuZV09TFtmZT0oZmUrTFtuZV0pJTI1Nl0s''@;'; put 'put ''TFtmZV09YmUsQ3RbWF09bHRbWF1eTFtMW25lXStMW2ZlXSYyNTVdO3JldHVybiBCdWZmZXIuZnJvbShDdCl9dmFyIHplPXkuS2V5LFdlPTA7eWUobGUoemUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSk7dmFyIHJ0PTA7cmV0dXJuIGZ1bmN0aW9uKGx0KXtpZihydCtsdC5sZW5ndGg8MTAy''@;'; put 'put ''NClyZXR1cm4gcnQrPWx0Lmxlbmd0aCxWZShsdCk7dmFyIGF0PTEwMjQtcnQsdnQ9MCxQdD1CdWZmZXIuZnJvbShsdC5zbGljZSh2dCx2dCthdCkpO3Z0Kz1hdCxydD0wO3ZhciBrdD1WZShQdCk7Zm9yKHZ0PT1sdC5sZW5ndGgmJigrK1dlLHplPVFwKFAseS5FbmNyeXB0aW9uVmVyaWZpZXIu''@;'; put 'put ''U2FsdCxGNihXZSkpLHllKEJ1ZmZlci5mcm9tKHplLCJoZXgiKS50b1N0cmluZygiYmluYXJ5IikpKTt2dDxsdC5sZW5ndGg7KSsrV2UsemU9UXAoUCx5LkVuY3J5cHRpb25WZXJpZmllci5TYWx0LEY2KFdlKSkseWUoQnVmZmVyLmZyb20oemUsImhleCIpLnRvU3RyaW5nKCJiaW5hcnkiKSks''@;'; put 'put ''YXQ9TWF0aC5taW4oMTAyNCxsdC5sZW5ndGgtdnQpLFB0PUJ1ZmZlci5mcm9tKGx0LnNsaWNlKHZ0LHZ0K2F0KSksdnQrPWF0LGF0PDEwMjQmJihydD1hdCksa3Q9QnVmZmVyLmNvbmNhdChba3QsVmUoUHQpXSk7cmV0dXJuIGt0fX0obmUuRGF0YSxMLnBhc3N3b3JkKSl9cmV0dXJuIG5lfSh5''@;'; put 'put ''LFAtMixMLFgpOmZ1bmN0aW9uIFROKHksUCxMLFgpe3ZhciBuZT17a2V5OkhsKHkpLHZlcmlmaWNhdGlvbkJ5dGVzOkhsKHkpfTtMLnBhc3N3b3JkJiYobmUudmVyaWZpZXI9UjkoTC5wYXNzd29yZCkpLFgudmFsaWQ9bmUudmVyaWZpY2F0aW9uQnl0ZXM9PT1uZS52ZXJpZmllcixYLnZhbGlk''@;'; put 'put ''JiYoWC5pbnNpdHU9ZnVuY3Rpb24oeSxQKXt2YXIgTD1QfHwwLFg9bncoeSk7cmV0dXJuIGZ1bmN0aW9uKG5lKXt2YXIgZmU9ZnVuY3Rpb24oeSxQLEwsWCxuZSl7dmFyIGZlLGJlO2ZvcihuZXx8KG5lPVApLFh8fChYPW53KCIiKSksZmU9MDtmZSE9UC5sZW5ndGg7KytmZSliZT0yNTUmKChi''@;'; put 'put ''ZT1QW2ZlXSk+PjV8YmU8PDMpLG5lW2ZlXT1iZV49WFtMXSxMPUwrMSYxNTtyZXR1cm5bbmUsTCxYXX0oMCxuZSxMLFgpO3JldHVybiBMPWZlWzFdLGZlWzBdfX0oTC5wYXNzd29yZCwwKSl9KHksMCxMLFgpLFh9fSw0OTp7bjoiRm9udCIsZjpmdW5jdGlvbiB5VCh5LFAsTCl7dmFyIFg9e3N6''@;'; put 'put ''OnkucmVhZF9zaGlmdCgyKS8yMH0sbmU9Q3koeSk7bmUuZkJvbGQmJihYLmJvbGQ9MSksbmUuZkl0YWxpYyYmKFguaXRhbGljPTEpLG5lLmZVbmRlcmxpbmUmJihYLnVuZGVybGluZT0xKSxuZS5mQ29uZGVuc2UmJihYLmNvbmRlbnNlPTEpLG5lLmZFeHRlbmQmJihYLmV4dGVuZD0xKSxuZS5m''@;'; put 'put ''U2hhZG93JiYoWC5zaGFkb3c9MSksbmUuZk91dGxpbmUmJihYLm91dGxpbmU9MSksbmUuZlN0cmlrZW91dCYmKFguc3RyaWtlPTEpO3ZhciBmZT1MJiZMLmJpZmZ8fDg7aWYoMiE9ZmUmJihYLmljdj15LnJlYWRfc2hpZnQoMiksMyE9ZmUmJjQhPWZlKSl7c3dpdGNoKDcwMD09PXkucmVhZF9z''@;'; put 'put ''aGlmdCgyKSYmKFguYm9sZD0xKSx5LnJlYWRfc2hpZnQoMikpe2Nhc2UgMTpYLnZhbGlnbj0ic3VwZXIiO2JyZWFrO2Nhc2UgMjpYLnZhbGlnbj0ic3ViIn12YXIgdmU9eS5yZWFkX3NoaWZ0KDEpOzAhPXZlJiYoWC51bmRlcmxpbmU9dmUpO3ZhciB5ZT15LnJlYWRfc2hpZnQoMSk7eWU+MCYm''@;'; put 'put ''KFguZmFtaWx5PXllKTt2YXIgVmU9eS5yZWFkX3NoaWZ0KDEpO1ZlPjAmJihYLmNoYXJzZXQ9VmUpLHkubCs9MX1yZXR1cm4gWC5uYW1lPV9vKHksMCxMKSxYfX0sNTE6e246IlByaW50U2l6ZSIsZjpIbH0sNjA6e246IkNvbnRpbnVlIn0sNjE6e246IldpbmRvdzEiLGY6ZnVuY3Rpb24gdFEo''@;'; put 'put ''eSl7cmV0dXJue1BvczpbeS5yZWFkX3NoaWZ0KDIpLHkucmVhZF9zaGlmdCgyKV0sRGltOlt5LnJlYWRfc2hpZnQoMikseS5yZWFkX3NoaWZ0KDIpXSxGbGFnczp5LnJlYWRfc2hpZnQoMiksQ3VyVGFiOnkucmVhZF9zaGlmdCgyKSxGaXJzdFRhYjp5LnJlYWRfc2hpZnQoMiksU2VsZWN0ZWQ6''@;'; put 'put ''eS5yZWFkX3NoaWZ0KDIpLFRhYlJhdGlvOnkucmVhZF9zaGlmdCgyKX19fSw2NDp7bjoiQmFja3VwIixmOkZvfSw2NTp7bjoiUGFuZSIsZjpmdW5jdGlvbiBiVCh5LFAsTCl7aWYoTCYmTC5iaWZmPDUpcmV0dXJue307dmFyIFg9e307cmV0dXJuIFgueD15LnJlYWRfc2hpZnQoMiksWC55PXku''@;'; put 'put ''cmVhZF9zaGlmdCgyKSxYLnJ3VG9wPXkucmVhZF9zaGlmdCgyKSxYLmNvbExlZnQ9eS5yZWFkX3NoaWZ0KDIpLFgucG5uQWNjdD15LnJlYWRfc2hpZnQoMSkseS5yZWFkX3NoaWZ0KDEpLFh9fSw2Njp7bjoiQ29kZVBhZ2UiLGY6SGx9LDc3OntuOiJQbHMiLGY6cGx9LDgwOntuOiJEQ29uIn0s''@;'; put 'put ''ODE6e246IkRDb25SZWYifSw4Mjp7bjoiRENvbk5hbWUifSw4NTp7bjoiRGVmQ29sV2lkdGgiLGY6SGx9LDg5OntuOiJYQ1QifSw5MDp7bjoiQ1JOIn0sOTE6e246IkZpbGVTaGFyaW5nIn0sOTI6e246IldyaXRlQWNjZXNzIixmOmZ1bmN0aW9uIE55KHksUCxMKXtpZihMLmVuYylyZXR1cm4g''@;'; put 'put ''eS5sKz1QLCIiO3ZhciBYPXkubCxuZT1tMCh5LDAsTCk7cmV0dXJuIHkucmVhZF9zaGlmdChQK1gteS5sKSxuZX19LDkzOntuOiJPYmoiLGY6ZnVuY3Rpb24gaU4oeSxQLEwpe2lmKEwmJkwuYmlmZjw4KXJldHVybiBmdW5jdGlvbiBrVCh5LFAsTCl7eS5sKz00O3ZhciBYPXkucmVhZF9zaGlm''@;'; put 'put ''dCgyKSxuZT15LnJlYWRfc2hpZnQoMiksZmU9eS5yZWFkX3NoaWZ0KDIpO3kubCs9Mix5LmwrPTIseS5sKz0yLHkubCs9Mix5LmwrPTIseS5sKz0yLHkubCs9Mix5LmwrPTIseS5sKz0yLHkubCs9Njt2YXIgYmU9W107cmV0dXJuIGJlLnB1c2goKFRUW1hdfHxwbCkoeSxQLT0zNixMKSkse2Nt''@;'; put 'put ''bzpbbmUsWCxmZV0sZnQ6YmV9fSh5LFAsTCk7dmFyIFg9U2coeSksbmU9ZnVuY3Rpb24gdjAoeSxQLEwpe2Zvcih2YXIgWD15LmwrUCxuZT1bXTt5Lmw8WDspe3ZhciBmZT15LnJlYWRfc2hpZnQoMik7eS5sLT0yO3RyeXtuZVtmZV09eDJbZmVdKHksWC15LmwpfWNhdGNoe3JldHVybiB5Lmw9''@;'; put 'put ''WCxuZX19cmV0dXJuIHkubCE9WCYmKHkubD1YKSxuZX0oeSxQLTIyKTtyZXR1cm57Y21vOlgsZnQ6bmV9fX0sOTQ6e246IlVuY2FsY2VkIn0sOTU6e246IkNhbGNTYXZlUmVjYWxjIixmOkZvfSw5Njp7bjoiVGVtcGxhdGUifSw5Nzp7bjoiSW50bCJ9LDk5OntuOiJPYmpQcm90ZWN0IixmOkZv''@;'; put 'put ''fSwxMjU6e246IkNvbEluZm8iLGY6WXl9LDEyODp7bjoiR3V0cyIsZjpmdW5jdGlvbiBlTih5KXt5LmwrPTQ7dmFyIFA9W3kucmVhZF9zaGlmdCgyKSx5LnJlYWRfc2hpZnQoMildO2lmKDAhPT1QWzBdJiZQWzBdLS0sMCE9PVBbMV0mJlBbMV0tLSxQWzBdPjd8fFBbMV0+Nyl0aHJvdyBuZXcg''@;'; put 'put ''RXJyb3IoIkJhZCBHdXR0ZXJzOiAiK1Auam9pbigifCIpKTtyZXR1cm4gUH19LDEyOTp7bjoiV3NCb29sIixmOmZ1bmN0aW9uIHc5KHksUCxMKXt2YXIgWD1MJiY4PT1MLmJpZmZ8fDI9PVA/eS5yZWFkX3NoaWZ0KDIpOih5LmwrPVAsMCk7cmV0dXJue2ZEaWFsb2c6MTYmWCxmQmVsb3c6NjQm''@;'; put 'put ''WCxmUmlnaHQ6MTI4Jlh9fX0sMTMwOntuOiJHcmlkU2V0IixmOkhsfSwxMzE6e246IkhDZW50ZXIiLGY6Rm99LDEzMjp7bjoiVkNlbnRlciIsZjpGb30sMTMzOntuOiJCb3VuZFNoZWV0OCIsZjpmdW5jdGlvbiBaNSh5LFAsTCl7dmFyIFg9eS5yZWFkX3NoaWZ0KDQpLG5lPTMmeS5yZWFkX3No''@;'; put 'put ''aWZ0KDEpLGZlPXkucmVhZF9zaGlmdCgxKTtzd2l0Y2goZmUpe2Nhc2UgMDpmZT0iV29ya3NoZWV0IjticmVhaztjYXNlIDE6ZmU9Ik1hY3Jvc2hlZXQiO2JyZWFrO2Nhc2UgMjpmZT0iQ2hhcnRzaGVldCI7YnJlYWs7Y2FzZSA2OmZlPSJWQkFNb2R1bGUifXZhciBiZT1fbyh5LDAsTCk7cmV0''@;'; put 'put ''dXJuIDA9PT1iZS5sZW5ndGgmJihiZT0iU2hlZXQxIikse3BvczpYLGhzOm5lLGR0OmZlLG5hbWU6YmV9fX0sMTM0OntuOiJXcml0ZVByb3RlY3QifSwxNDA6e246IkNvdW50cnkiLGY6ZnVuY3Rpb24gY04oeSl7dmFyIEwsUD1bMCwwXTtyZXR1cm4gTD15LnJlYWRfc2hpZnQoMiksUFswXT1E''@;'; put 'put ''NVtMXXx8TCxMPXkucmVhZF9zaGlmdCgyKSxQWzFdPUQ1W0xdfHxMLFB9fSwxNDE6e246IkhpZGVPYmoiLGY6SGx9LDE0NDp7bjoiU29ydCJ9LDE0Njp7bjoiUGFsZXR0ZSIsZjpmdW5jdGlvbiBfdCh5KXtmb3IodmFyIFA9eS5yZWFkX3NoaWZ0KDIpLEw9W107UC0tID4wOylMLnB1c2goQzEo''@;'; put 'put ''eSkpO3JldHVybiBMfX0sMTUxOntuOiJTeW5jIn0sMTUyOntuOiJMUHIifSwxNTM6e246IkR4R0NvbCJ9LDE1NDp7bjoiRm5Hcm91cE5hbWUifSwxNTU6e246IkZpbHRlck1vZGUifSwxNTY6e246IkJ1aWx0SW5Gbkdyb3VwQ291bnQiLGY6SGx9LDE1Nzp7bjoiQXV0b0ZpbHRlckluZm8ifSwx''@;'; put 'put ''NTg6e246IkF1dG9GaWx0ZXIifSwxNjA6e246IlNjbCIsZjpBVH0sMTYxOntuOiJTZXR1cCIsZjpmdW5jdGlvbiB1aCh5LFApe3ZhciBMPXt9O3JldHVybiBQPDMyfHwoeS5sKz0xNixMLmhlYWRlcj16YSh5KSxMLmZvb3Rlcj16YSh5KSx5LmwrPTIpLEx9fSwxNzQ6e246IlNjZW5NYW4ifSwx''@;'; put 'put ''NzU6e246IlNDRU5BUklPIn0sMTc2OntuOiJTeFZpZXcifSwxNzc6e246IlN4dmQifSwxNzg6e246IlNYVkkifSwxODA6e246IlN4SXZkIn0sMTgxOntuOiJTWExJIn0sMTgyOntuOiJTWFBJIn0sMTg0OntuOiJEb2NSb3V0ZSJ9LDE4NTp7bjoiUmVjaXBOYW1lIn0sMTg5OntuOiJNdWxSayIs''@;'; put 'put ''ZjpmdW5jdGlvbiBRRih5LFApe2Zvcih2YXIgTD15LmwrUC0yLFg9eS5yZWFkX3NoaWZ0KDIpLG5lPXkucmVhZF9zaGlmdCgyKSxmZT1bXTt5Lmw8TDspZmUucHVzaChLbyh5KSk7aWYoeS5sIT09TCl0aHJvdyBuZXcgRXJyb3IoIk11bFJLIHJlYWQgZXJyb3IiKTt2YXIgYmU9eS5yZWFkX3No''@;'; put 'put ''aWZ0KDIpO2lmKGZlLmxlbmd0aCE9YmUtbmUrMSl0aHJvdyBuZXcgRXJyb3IoIk11bFJLIGxlbmd0aCBtaXNtYXRjaCIpO3JldHVybntyOlgsYzpuZSxDOmJlLHJrcmVjOmZlfX19LDE5MDp7bjoiTXVsQmxhbmsiLGY6ZnVuY3Rpb24gaVEoeSxQKXtmb3IodmFyIEw9eS5sK1AtMixYPXkucmVh''@;'; put 'put ''ZF9zaGlmdCgyKSxuZT15LnJlYWRfc2hpZnQoMiksZmU9W107eS5sPEw7KWZlLnB1c2goeS5yZWFkX3NoaWZ0KDIpKTtpZih5LmwhPT1MKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgcmVhZCBlcnJvciIpO3ZhciBiZT15LnJlYWRfc2hpZnQoMik7aWYoZmUubGVuZ3RoIT1iZS1uZSsxKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiTXVsQmxhbmsgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6WCxjOm5lLEM6YmUsaXhmZTpmZX19fSwxOTM6e246Ik1tcyIsZjpuaH0sMTk3OntuOiJTWERJIn0sMTk4OntuOiJTWERCIn0sMTk5OntuOiJTWEZEQiJ9LDIwMDp7bjoiU1hEQkIifSwyMDE6e246IlNY''@;'; put 'put ''TnVtIn0sMjAyOntuOiJTeEJvb2wiLGY6Rm99LDIwMzp7bjoiU3hFcnIifSwyMDQ6e246IlNYSW50In0sMjA1OntuOiJTWFN0cmluZyJ9LDIwNjp7bjoiU1hEdHIifSwyMDc6e246IlN4TmlsIn0sMjA4OntuOiJTWFRibCJ9LDIwOTp7bjoiU1hUQlJHSUlUTSJ9LDIxMDp7bjoiU3hUYnBnIn0s''@;'; put 'put ''MjExOntuOiJPYlByb2oifSwyMTM6e246IlNYU3RyZWFtSUQifSwyMTU6e246IkRCQ2VsbCJ9LDIxNjp7bjoiU1hSbmcifSwyMTc6e246IlN4SXN4b3BlciJ9LDIxODp7bjoiQm9va0Jvb2wiLGY6SGx9LDIyMDp7bjoiRGJPclBhcmFtUXJ5In0sMjIxOntuOiJTY2VuYXJpb1Byb3RlY3QiLGY6''@;'; put 'put ''Rm99LDIyMjp7bjoiT2xlT2JqZWN0U2l6ZSJ9LDIyNDp7bjoiWEYiLGY6ZnVuY3Rpb24gQnkoeSxQLEwpe3ZhciBYPXt9O3JldHVybiBYLmlmbnQ9eS5yZWFkX3NoaWZ0KDIpLFgubnVtRm10SWQ9eS5yZWFkX3NoaWZ0KDIpLFguZmxhZ3M9eS5yZWFkX3NoaWZ0KDIpLFguZlN0eWxlPVguZmxh''@;'; put 'put ''Z3M+PjImMSxYLmRhdGE9ZnVuY3Rpb24gUmEoeSxQLEwsWCl7dmFyIG5lPXt9LGZlPXkucmVhZF9zaGlmdCg0KSxiZT15LnJlYWRfc2hpZnQoNCksdmU9eS5yZWFkX3NoaWZ0KDQpLHllPXkucmVhZF9zaGlmdCgyKTtpZihuZS5wYXR0ZXJuVHlwZT1hOVt2ZT4+MjZdLCFYLmNlbGxTdHlsZXMp''@;'; put 'put ''cmV0dXJuIG5lO3ZhciBWZT03JmZlO3N3aXRjaChWZSl7Y2FzZSAxOm5lLmhhbGlnbj0ibGVmdCI7YnJlYWs7Y2FzZSAyOm5lLmhhbGlnbj0iY2VudGVyIjticmVhaztjYXNlIDM6bmUuaGFsaWduPSJyaWdodCJ9c3dpdGNoKG5lLmZXcmFwPWZlPj4zJjEsVmU9ZmU+PjQmNyl7Y2FzZSAwOm5l''@;'; put 'put ''LnZhbGlnbj0idG9wIjticmVhaztjYXNlIDE6bmUudmFsaWduPSJjZW50ZXIiO2JyZWFrO2Nhc2UgMjpuZS52YWxpZ249ImJvdHRvbSJ9cmV0dXJuIG5lLmZKdXN0TGFzdD1mZT4+NyYxLG5lLnRyb3Q9ZmU+PjgmMjU1LG5lLmNJbmRlbnQ9ZmU+PjE2JjE1LG5lLmZTaHJpbmtUb0ZpdD1mZT4+''@;'; put 'put ''MjAmMSxuZS5pUmVhZE9yZGVyPWZlPj4yMiYyLG5lLmZBdHJOdW09ZmU+PjI2JjEsbmUuZkF0ckZudD1mZT4+MjcmMSxuZS5mQXRyQWxjPWZlPj4yOCYxLG5lLmZBdHJCZHI9ZmU+PjI5JjEsbmUuZkF0clBhdD1mZT4+MzAmMSxuZS5mQXRyUHJvdD1mZT4+MzEmMSxuZS5kZ0xlZnQ9MTUmYmUs''@;'; put 'put ''bmUuZGdSaWdodD1iZT4+NCYxNSxuZS5kZ1RvcD1iZT4+OCYxNSxuZS5kZ0JvdHRvbT1iZT4+MTImMTUsbmUuaWN2TGVmdD1iZT4+MTYmMTI3LG5lLmljdlJpZ2h0PWJlPj4yMyYxMjcsbmUuZ3JiaXREaWFnPWJlPj4zMCYzLG5lLmljdlRvcD0xMjcmdmUsbmUuaWN2Qm90dG9tPXZlPj43JjEy''@;'; put 'put ''NyxuZS5pY3ZEaWFnPXZlPj4xNCYxMjcsbmUuZGdEaWFnPXZlPj4yMSYxNSxuZS5pY3ZGb3JlPTEyNyZ5ZSxuZS5pY3ZCYWNrPXllPj43JjEyNyxuZS5mc3hCdXR0b249eWU+PjE0JjEsbmV9KHksMCwwLEwpLFh9fSwyMjU6e246IkludGVyZmFjZUhkciIsZjpmdW5jdGlvbiBGeSh5LFApe3Jl''@;'; put 'put ''dHVybiAwPT09UHx8eS5yZWFkX3NoaWZ0KDIpLDEyMDB9fSwyMjY6e246IkludGVyZmFjZUVuZCIsZjpuaH0sMjI3OntuOiJTWFZTIn0sMjI5OntuOiJNZXJnZUNlbGxzIixmOmZ1bmN0aW9uIG9RKHksUCl7Zm9yKHZhciBMPVtdLFg9eS5yZWFkX3NoaWZ0KDIpO1gtLTspTC5wdXNoKG9oKHkp''@;'; put 'put ''KTtyZXR1cm4gTH19LDIzMzp7bjoiQmtIaW0ifSwyMzU6e246Ik1zb0RyYXdpbmdHcm91cCJ9LDIzNjp7bjoiTXNvRHJhd2luZyJ9LDIzNzp7bjoiTXNvRHJhd2luZ1NlbGVjdGlvbiJ9LDIzOTp7bjoiUGhvbmV0aWNJbmZvIn0sMjQwOntuOiJTeFJ1bGUifSwyNDE6e246IlNYRXgifSwyNDI6''@;'; put 'put ''e246IlN4RmlsdCJ9LDI0NDp7bjoiU3hEWEYifSwyNDU6e246IlN4SXRtIn0sMjQ2OntuOiJTeE5hbWUifSwyNDc6e246IlN4U2VsZWN0In0sMjQ4OntuOiJTWFBhaXIifSwyNDk6e246IlN4Rm1sYSJ9LDI1MTp7bjoiU3hGb3JtYXQifSwyNTI6e246IlNTVCIsZjpmdW5jdGlvbiBZNSh5LFAp''@;'; put 'put ''e2Zvcih2YXIgTD15LmwrUCxYPXkucmVhZF9zaGlmdCg0KSxuZT15LnJlYWRfc2hpZnQoNCksZmU9W10sYmU9MDtiZSE9bmUmJnkubDxMOysrYmUpZmUucHVzaChFbCh5KSk7cmV0dXJuIGZlLkNvdW50PVgsZmUuVW5pcXVlPW5lLGZlfX0sMjUzOntuOiJMYWJlbFNzdCIsZjpmdW5jdGlvbiBL''@;'; put 'put ''Rih5KXt2YXIgUD1IdSh5KTtyZXR1cm4gUC5pc3N0PXkucmVhZF9zaGlmdCg0KSxQfX0sMjU1OntuOiJFeHRTU1QiLGY6ZnVuY3Rpb24gVGUoeSxQKXt2YXIgTD17fTtyZXR1cm4gTC5kc3N0PXkucmVhZF9zaGlmdCgyKSx5LmwrPVAtMixMfX0sMjU2OntuOiJTWFZERXgifSwyNTk6e246IlNY''@;'; put 'put ''Rm9ybXVsYSJ9LDI5MDp7bjoiU1hEQkV4In0sMzExOntuOiJSUkRJbnNEZWwifSwzMTI6e246IlJSREhlYWQifSwzMTU6e246IlJSRENoZ0NlbGwifSwzMTc6e246IlJSVGFiSWQiLGY6RXB9LDMxODp7bjoiUlJEUmVuU2hlZXQifSwzMTk6e246IlJSU29ydCJ9LDMyMDp7bjoiUlJETW92ZSJ9''@;'; put 'put ''LDMzMDp7bjoiUlJGb3JtYXQifSwzMzE6e246IlJSQXV0b0ZtdCJ9LDMzMzp7bjoiUlJJbnNlcnRTaCJ9LDMzNDp7bjoiUlJETW92ZUJlZ2luIn0sMzM1OntuOiJSUkRNb3ZlRW5kIn0sMzM2OntuOiJSUkRJbnNEZWxCZWdpbiJ9LDMzNzp7bjoiUlJESW5zRGVsRW5kIn0sMzM4OntuOiJSUkRD''@;'; put 'put ''b25mbGljdCJ9LDMzOTp7bjoiUlJERGVmTmFtZSJ9LDM0MDp7bjoiUlJEUnN0RXR4cCJ9LDM1MTp7bjoiTFJuZyJ9LDM1Mjp7bjoiVXNlc0VMRnMiLGY6Rm99LDM1Mzp7bjoiRFNGIixmOm5ofSw0MDE6e246IkNVc3IifSw0MDI6e246IkNiVXNyIn0sNDAzOntuOiJVc3JJbmZvIn0sNDA0Ontu''@;'; put 'put ''OiJVc3JFeGNsIn0sNDA1OntuOiJGaWxlTG9jayJ9LDQwNjp7bjoiUlJESW5mbyJ9LDQwNzp7bjoiQkNVc3JzIn0sNDA4OntuOiJVc3JDaGsifSw0MjU6e246IlVzZXJCVmlldyJ9LDQyNjp7bjoiVXNlclNWaWV3QmVnaW4ifSw0Mjc6e246IlVzZXJTVmlld0VuZCJ9LDQyODp7bjoiUlJEVXNl''@;'; put 'put ''clZpZXcifSw0Mjk6e246IlFzaSJ9LDQzMDp7bjoiU3VwQm9vayIsZjpmdW5jdGlvbiBjaCh5LFAsTCl7dmFyIFg9eS5sK1AsbmU9eS5yZWFkX3NoaWZ0KDIpLGZlPXkucmVhZF9zaGlmdCgyKTtpZihMLnNiY2NoPWZlLDEwMjU9PWZlfHwxNDg0OT09ZmUpcmV0dXJuW2ZlLG5lXTtpZihmZTwx''@;'; put 'put ''fHxmZT4yNTUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFN1cEJvb2sgdHlwZTogIitmZSk7Zm9yKHZhciBiZT1nbCh5LGZlKSx2ZT1bXTtYPnkubDspdmUucHVzaChiYyh5KSk7cmV0dXJuW2ZlLG5lLGJlLHZlXX19LDQzMTp7bjoiUHJvdDRSZXYiLGY6Rm99LDQzMjp7bjoiQ29uZEZt''@;'; put 'put ''dCJ9LDQzMzp7bjoiQ0YifSw0MzQ6e246IkRWYWwifSw0Mzc6e246IkRDb25CaW4ifSw0Mzg6e246IlR4TyIsZjpmdW5jdGlvbiB4Zyh5LFAsTCl7dmFyIFg9eS5sLG5lPSIiLGZlPS0xO3RyeXt5LmwrPTQsLTE9PVswLDUsNywxMSwxMiwxNF0uaW5kZXhPZigoTC5sYXN0b2JqfHx7Y21vOlsw''@;'; put 'put ''LDBdfSkuY21vWzFdKT95LmwrPTY6ZnVuY3Rpb24gVGwoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDEpO3kubCsrO3ZhciBMPXkucmVhZF9zaGlmdCgyKTt5LmwrPTJ9KHkpO3ZhciB5ZT15LnJlYWRfc2hpZnQoMik7eS5yZWFkX3NoaWZ0KDIpLGZlPXkucmVhZF9zaGlmdCgyKTt2YXIgemU9eS5y''@;'; put 'put ''ZWFkX3NoaWZ0KDIpO3kubCs9emU7Zm9yKHZhciBXZT0xO1dlPHkubGVucy5sZW5ndGgtMTsrK1dlKXtpZih5LmwtWCE9eS5sZW5zW1dlXSl0aHJvdyBuZXcgRXJyb3IoIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZCIpO3ZhciBydD15W3kubF07aWYoKG5lKz1nbCh5LHkubGVuc1tXZSsxXS15''@;'; put 'put ''LmxlbnNbV2VdLTEpKS5sZW5ndGg+PShydD95ZToyKnllKSlicmVha31pZihuZS5sZW5ndGghPT15ZSYmbmUubGVuZ3RoIT09Mip5ZSl0aHJvdyBuZXcgRXJyb3IoImNjaFRleHQ6ICIreWUrIiAhPSAiK25lLmxlbmd0aCk7cmV0dXJuIHkubD1YK1Ase3Q6bmUsaWZudDpmZX19Y2F0Y2h7cmV0''@;'; put 'put ''dXJuIHkubD1YK1Ase3Q6bmUsaWZudDpmZX19fX0sNDM5OntuOiJSZWZyZXNoQWxsIixmOkZvfSw0NDA6e246IkhMaW5rIixmOmZ1bmN0aW9uIG9OKHksUCl7dmFyIEw9b2goeSk7eS5sKz0xNjt2YXIgWD1mdW5jdGlvbiBYYSh5LFApe3ZhciBMPXkubCtQLFg9eS5yZWFkX3NoaWZ0KDQpO2lm''@;'; put 'put ''KDIhPT1YKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrWCk7dmFyIG5lPXkucmVhZF9zaGlmdCgyKTt5LmwrPTI7dmFyIGZlLGJlLHZlLHllLHplLFdlLFZlPSIiOzE2Jm5lJiYoZmU9VHAoeSkpLDEyOCZuZSYmKGJlPVRwKHkpKSwhKDI1NyZ+bmUpJiYo''@;'; put 'put ''dmU9VHAoeSkpLDE9PSgyNTcmbmUpJiYoeWU9ZnVuY3Rpb24gQzIoeSxQKXt2YXIgTD15LnJlYWRfc2hpZnQoMTYpO3N3aXRjaChMKXtjYXNlImUwYzllYTc5ZjliYWNlMTE4YzgyMDBhYTAwNGJhOTBiIjpyZXR1cm4gZnVuY3Rpb24gRzAoeSl7dmFyIFA9eS5yZWFkX3NoaWZ0KDQpLEw9eS5s''@;'; put 'put ''LFg9ITE7UD4yNCYmKHkubCs9UC0yNCwiNzk1ODgxZjQzYjFkN2Y0OGFmMmM4MjVkYzQ4NTI3NjMiPT09eS5yZWFkX3NoaWZ0KDE2KSYmKFg9ITApLHkubD1MKTt2YXIgbmU9eS5yZWFkX3NoaWZ0KChYP1AtMjQ6UCk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKF8sIiIpO3JldHVybiBYJiYoeS5s''@;'; put 'put ''Kz0yNCksbmV9KHkpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiBmdW5jdGlvbiBVbyh5KXtmb3IodmFyIFA9eS5yZWFkX3NoaWZ0KDIpLEw9IiI7UC0tID4wOylMKz0iLi4vIjt2YXIgWD15LnJlYWRfc2hpZnQoMCwibHBzdHItYW5zaSIpO2lmKHkubCs9''@;'; put 'put ''Miw1NzAwNSE9eS5yZWFkX3NoaWZ0KDIpKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7aWYoMD09PXkucmVhZF9zaGlmdCg0KSlyZXR1cm4gTCtYLnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgZmU9eS5yZWFkX3NoaWZ0KDQpO2lmKDMhPXkucmVhZF9zaGlmdCgyKSl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIkJhZCBGaWxlTW9uaWtlciIpO3JldHVybiBMK3kucmVhZF9zaGlmdChmZT4+MSwidXRmMTZsZSIpLnJlcGxhY2UoXywiIil9KHkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNb25pa2VyICIrTCl9fSh5KSksOCZuZSYmKFZlPVRwKHkpKSwzMiZuZSYm''@;'; put 'put ''KHplPXkucmVhZF9zaGlmdCgxNikpLDY0Jm5lJiYoV2U9emYoeSkpLHkubD1MO3ZhciBydD1iZXx8dmV8fHllfHwiIjtydCYmVmUmJihydCs9IiMiK1ZlKSxydHx8KHJ0PSIjIitWZSksMiZuZSYmIi8iPT1ydC5jaGFyQXQoMCkmJiIvIiE9cnQuY2hhckF0KDEpJiYocnQ9ImZpbGU6Ly8iK3J0''@;'; put 'put ''KTt2YXIgbHQ9e1RhcmdldDpydH07cmV0dXJuIHplJiYobHQuZ3VpZD16ZSksV2UmJihsdC50aW1lPVdlKSxmZSYmKGx0LlRvb2x0aXA9ZmUpLGx0fSh5LFAtMjQpO3JldHVybltMLFhdfX0sNDQxOntuOiJMZWwifSw0NDI6e246IkNvZGVOYW1lIixmOmJjfSw0NDM6e246IlNYRkRCVHlwZSJ9''@;'; put 'put ''LDQ0NDp7bjoiUHJvdDRSZXZQYXNzIixmOkhsfSw0NDU6e246Ik9iTm9NYWNyb3MifSw0NDY6e246IkR2In0sNDQ4OntuOiJFeGNlbDlGaWxlIixmOm5ofSw0NDk6e246IlJlY2FsY0lkIixmOmZ1bmN0aW9uIFMxKHkpe3JldHVybiB5LnJlYWRfc2hpZnQoMikseS5yZWFkX3NoaWZ0KDQpfSxy''@;'; put 'put ''OjJ9LDQ1MDp7bjoiRW50RXhVMiIsZjpuaH0sNTEyOntuOiJEaW1lbnNpb25zIixmOlZ5fSw1MTM6e246IkJsYW5rIixmOnNRfSw1MTU6e246Ik51bWJlciIsZjpmdW5jdGlvbiB0Tih5LFAsTCl7TC5iaWZmZ3Vlc3MmJjI9PUwuYmlmZiYmKEwuYmlmZj01KTt2YXIgWD1IdSh5KSxuZT16YSh5''@;'; put 'put ''KTtyZXR1cm4gWC52YWw9bmUsWH19LDUxNjp7bjoiTGFiZWwiLGY6ZnVuY3Rpb24gQ1QoeSxQLEwpe0wuYmlmZmd1ZXNzJiYyPT1MLmJpZmYmJihMLmJpZmY9NSk7dmFyIG5lPUh1KHkpOzI9PUwuYmlmZiYmeS5sKys7dmFyIGZlPWJjKHksMCxMKTtyZXR1cm4gbmUudmFsPWZlLG5lfX0sNTE3''@;'; put 'put ''OntuOiJCb29sRXJyIixmOklwfSw1MTk6e246IlN0cmluZyIsZjp0MH0sNTIwOntuOiJSb3ciLGY6ZnVuY3Rpb24gS2UoeSl7dmFyIFA9e307UC5yPXkucmVhZF9zaGlmdCgyKSxQLmM9eS5yZWFkX3NoaWZ0KDIpLFAuY250PXkucmVhZF9zaGlmdCgyKS1QLmM7dmFyIEw9eS5yZWFkX3NoaWZ0''@;'; put 'put ''KDIpO3kubCs9NDt2YXIgWD15LnJlYWRfc2hpZnQoMSk7eS5sKz0xO3ZhciBuZT15LnJlYWRfc2hpZnQoMik7cmV0dXJuIFAuaXhmZT00MDk1Jm5lLDcmWCYmKFAubGV2ZWw9NyZYKSwzMiZYJiYoUC5oaWRkZW49ITApLDY0JlgmJihQLmhwdD1MLzIwKSxQfX0sNTIzOntuOiJJbmRleCJ9LDU0''@;'; put 'put ''NTp7bjoiQXJyYXkiLGY6TTl9LDU0OTp7bjoiRGVmYXVsdFJvd0hlaWdodCIsZjphaH0sNTY2OntuOiJUYWJsZSJ9LDU3NDp7bjoiV2luZG93MiIsZjpmdW5jdGlvbiByUSh5LFAsTCl7aWYoTCYmTC5iaWZmPj0yJiZMLmJpZmY8NSlyZXR1cm57fTt2YXIgWD15LnJlYWRfc2hpZnQoMik7cmV0''@;'; put 'put ''dXJue1JUTDo2NCZYLGdyaWQ6ISEoMiZYKSxmcm96ZW46ISEoOCZYKX19fSw2Mzg6e246IlJLIixmOmZ1bmN0aW9uIE1UKHkpe3ZhciBQPXkucmVhZF9zaGlmdCgyKSxMPXkucmVhZF9zaGlmdCgyKSxYPUtvKHkpO3JldHVybntyOlAsYzpMLGl4ZmU6WFswXSxya251bTpYWzFdfX19LDY1OTp7''@;'; put 'put ''bjoiU3R5bGUiLGY6ZnVuY3Rpb24gZTAoeSxQLEwpe3JldHVybiB5LmwrPVAse319fSwxMDQ4OntuOiJCaWdOYW1lIn0sMTA1NDp7bjoiRm9ybWF0IixmOmZ1bmN0aW9uIEh5KHksUCxMKXtyZXR1cm5beS5yZWFkX3NoaWZ0KDIpLG0wKHksMCxMKV19fSwxMDg0OntuOiJDb250aW51ZUJpZ05h''@;'; put 'put ''bWUifSwxMjEyOntuOiJTaHJGbWxhIixmOmZ1bmN0aW9uIFM5KHksUCxMKXt2YXIgWD1BcCh5KTt5LmwrKzt2YXIgbmU9eS5yZWFkX3NoaWZ0KDEpO3JldHVybltlMyh5LFAtPTgsTCksbmUsWF19fSwyMDQ4OntuOiJITGlua1Rvb2x0aXAiLGY6ZnVuY3Rpb24gYU4oeSxQKXt5LnJlYWRfc2hp''@;'; put 'put ''ZnQoMik7dmFyIEw9b2goeSksWD15LnJlYWRfc2hpZnQoKFAtMTApLzIsImRiY3MtY29udCIpO3JldHVybltMLFg9WC5yZXBsYWNlKF8sIiIpXX19LDIwNDk6e246IldlYlB1YiJ9LDIwNTA6e246IlFzaVNYVGFnIn0sMjA1MTp7bjoiREJRdWVyeUV4dCJ9LDIwNTI6e246IkV4dFN0cmluZyJ9''@;'; put 'put ''LDIwNTM6e246IlR4dFFyeSJ9LDIwNTQ6e246IlFzaXIifSwyMDU1OntuOiJRc2lmIn0sMjA1Njp7bjoiUlJEVFFTSUYifSwyMDU3OntuOiJCT0YiLGY6ZWN9LDIwNTg6e246Ik9sZURiQ29ubiJ9LDIwNTk6e246IldPcHQifSwyMDYwOntuOiJTWFZpZXdFeCJ9LDIwNjE6e246IlNYVEgifSwy''@;'; put 'put ''MDYyOntuOiJTWFBJRXgifSwyMDYzOntuOiJTWFZEVEV4In0sMjA2NDp7bjoiU1hWaWV3RXg5In0sMjA2Njp7bjoiQ29udGludWVGcnQifSwyMDY3OntuOiJSZWFsVGltZURhdGEifSwyMTI4OntuOiJDaGFydEZydEluZm8ifSwyMTI5OntuOiJGcnRXcmFwcGVyIn0sMjEzMDp7bjoiU3RhcnRC''@;'; put 'put ''bG9jayJ9LDIxMzE6e246IkVuZEJsb2NrIn0sMjEzMjp7bjoiU3RhcnRPYmplY3QifSwyMTMzOntuOiJFbmRPYmplY3QifSwyMTM0OntuOiJDYXRMYWIifSwyMTM1OntuOiJZTXVsdCJ9LDIxMzY6e246IlNYVmlld0xpbmsifSwyMTM3OntuOiJQaXZvdENoYXJ0Qml0cyJ9LDIxMzg6e246IkZy''@;'; put 'put ''dEZvbnRMaXN0In0sMjE0Njp7bjoiU2hlZXRFeHQifSwyMTQ3OntuOiJCb29rRXh0IixyOjEyfSwyMTQ4OntuOiJTWEFkZGwifSwyMTQ5OntuOiJDckVyciJ9LDIxNTA6e246IkhGUGljdHVyZSJ9LDIxNTE6e246IkZlYXRIZHIiLGY6bmh9LDIxNTI6e246IkZlYXQifSwyMTU0OntuOiJEYXRh''@;'; put 'put ''TGFiRXh0In0sMjE1NTp7bjoiRGF0YUxhYkV4dENvbnRlbnRzIn0sMjE1Njp7bjoiQ2VsbFdhdGNoIn0sMjE2MTp7bjoiRmVhdEhkcjExIn0sMjE2Mjp7bjoiRmVhdHVyZTExIn0sMjE2NDp7bjoiRHJvcERvd25PYmpJZHMifSwyMTY1OntuOiJDb250aW51ZUZydDExIn0sMjE2Njp7bjoiRENv''@;'; put 'put ''bm4ifSwyMTY3OntuOiJMaXN0MTIifSwyMTY4OntuOiJGZWF0dXJlMTIifSwyMTY5OntuOiJDb25kRm10MTIifSwyMTcwOntuOiJDRjEyIn0sMjE3MTp7bjoiQ0ZFeCJ9LDIxNzI6e246IlhGQ1JDIixmOmZ1bmN0aW9uIFNhKHkpe3kubCs9Mjt2YXIgUD17Y3hmczowLGNyYzowfTtyZXR1cm4g''@;'; put 'put ''UC5jeGZzPXkucmVhZF9zaGlmdCgyKSxQLmNyYz15LnJlYWRfc2hpZnQoNCksUH0scjoxMn0sMjE3Mzp7bjoiWEZFeHQiLGY6ZnVuY3Rpb24gZUgoeSxQKXt5LmwrPTI7dmFyIFg9eS5yZWFkX3NoaWZ0KDIpO3kubCs9Mjtmb3IodmFyIG5lPXkucmVhZF9zaGlmdCgyKSxmZT1bXTtuZS0tID4w''@;'; put 'put ''OylmZS5wdXNoKFU5KHkpKTtyZXR1cm57aXhmZTpYLGV4dDpmZX19LHI6MTJ9LDIxNzQ6e246IkF1dG9GaWx0ZXIxMiJ9LDIxNzU6e246IkNvbnRpbnVlRnJ0MTIifSwyMTgwOntuOiJNRFRJbmZvIn0sMjE4MTp7bjoiTURYU3RyIn0sMjE4Mjp7bjoiTURYVHVwbGUifSwyMTgzOntuOiJNRFhT''@;'; put 'put ''ZXQifSwyMTg0OntuOiJNRFhQcm9wIn0sMjE4NTp7bjoiTURYS1BJIn0sMjE4Njp7bjoiTURCIn0sMjE4Nzp7bjoiUExWIn0sMjE4ODp7bjoiQ29tcGF0MTIiLGY6Rm8scjoxMn0sMjE4OTp7bjoiRFhGIn0sMjE5MDp7bjoiVGFibGVTdHlsZXMiLHI6MTJ9LDIxOTE6e246IlRhYmxlU3R5bGUi''@;'; put 'put ''fSwyMTkyOntuOiJUYWJsZVN0eWxlRWxlbWVudCJ9LDIxOTQ6e246IlN0eWxlRXh0In0sMjE5NTp7bjoiTmFtZVB1Ymxpc2gifSwyMTk2OntuOiJOYW1lQ210IixmOmZ1bmN0aW9uIEc1KHksUCxMKXtpZighKEwuYmlmZjw4KSl7dmFyIFg9eS5yZWFkX3NoaWZ0KDIpLG5lPXkucmVhZF9zaGlm''@;'; put 'put ''dCgyKTtyZXR1cm5bZ2woeSxYLEwpLGdsKHksbmUsTCldfXkubCs9UH0scjoxMn0sMjE5Nzp7bjoiU29ydERhdGEifSwyMTk4OntuOiJUaGVtZSIsZjpmdW5jdGlvbiBKTih5LFAsTCl7dmFyIFg9eS5sK1A7aWYoMTI0MjI2IT09eS5yZWFkX3NoaWZ0KDQpKXtpZighTC5jZWxsU3R5bGVzKXJl''@;'; put 'put ''dHVybiB2b2lkKHkubD1YKTt2YXIgYmUsZmU9eS5zbGljZSh5LmwpO3kubD1YO3RyeXtiZT1PbihmZSx7dHlwZToiYXJyYXkifSl9Y2F0Y2h7cmV0dXJufXZhciB2ZT1lbihiZSwidGhlbWUvdGhlbWUvdGhlbWUxLnhtbCIsITApO2lmKHZlKXJldHVybiBwdyh2ZSxMKX19LHI6MTJ9LDIxOTk6''@;'; put 'put ''e246IkdVSURUeXBlTGliIn0sMjIwMDp7bjoiRm5HcnAxMiJ9LDIyMDE6e246Ik5hbWVGbkdycDEyIn0sMjIwMjp7bjoiTVRSU2V0dGluZ3MiLGY6ZnVuY3Rpb24gUnAoeSl7cmV0dXJuWzAhPT15LnJlYWRfc2hpZnQoNCksMCE9PXkucmVhZF9zaGlmdCg0KSx5LnJlYWRfc2hpZnQoNCldfSxy''@;'; put 'put ''OjEyfSwyMjAzOntuOiJDb21wcmVzc1BpY3R1cmVzIixmOm5ofSwyMjA0OntuOiJIZWFkZXJGb290ZXIifSwyMjA1OntuOiJDcnRMYXlvdXQxMiJ9LDIyMDY6e246IkNydE1sRnJ0In0sMjIwNzp7bjoiQ3J0TWxGcnRDb250aW51ZSJ9LDIyMTE6e246IkZvcmNlRnVsbENhbGN1bGF0aW9uIixm''@;'; put 'put ''OmZ1bmN0aW9uIEF0KHkpe3ZhciBQPWZ1bmN0aW9uIGloKHkpe3ZhciBQPXkucmVhZF9zaGlmdCgyKSxMPXkucmVhZF9zaGlmdCgyKTtyZXR1cm4geS5sKz04LHt0eXBlOlAsZmxhZ3M6TH19KHkpO2lmKDIyMTEhPVAudHlwZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29y''@;'; put 'put ''ZCAiK1AudHlwZSk7cmV0dXJuIDAhPT15LnJlYWRfc2hpZnQoNCl9fSwyMjEyOntuOiJTaGFwZVByb3BzU3RyZWFtIn0sMjIxMzp7bjoiVGV4dFByb3BzU3RyZWFtIn0sMjIxNDp7bjoiUmljaFRleHRTdHJlYW0ifSwyMjE1OntuOiJDcnRMYXlvdXQxMkEifSw0MDk3OntuOiJVbml0cyJ9LDQw''@;'; put 'put ''OTg6e246IkNoYXJ0In0sNDA5OTp7bjoiU2VyaWVzIn0sNDEwMjp7bjoiRGF0YUZvcm1hdCJ9LDQxMDM6e246IkxpbmVGb3JtYXQifSw0MTA1OntuOiJNYXJrZXJGb3JtYXQifSw0MTA2OntuOiJBcmVhRm9ybWF0In0sNDEwNzp7bjoiUGllRm9ybWF0In0sNDEwODp7bjoiQXR0YWNoZWRMYWJl''@;'; put 'put ''bCJ9LDQxMDk6e246IlNlcmllc1RleHQifSw0MTE2OntuOiJDaGFydEZvcm1hdCJ9LDQxMTc6e246IkxlZ2VuZCJ9LDQxMTg6e246IlNlcmllc0xpc3QifSw0MTE5OntuOiJCYXIifSw0MTIwOntuOiJMaW5lIn0sNDEyMTp7bjoiUGllIn0sNDEyMjp7bjoiQXJlYSJ9LDQxMjM6e246IlNjYXR0''@;'; put 'put ''ZXIifSw0MTI0OntuOiJDcnRMaW5lIn0sNDEyNTp7bjoiQXhpcyJ9LDQxMjY6e246IlRpY2sifSw0MTI3OntuOiJWYWx1ZVJhbmdlIn0sNDEyODp7bjoiQ2F0U2VyUmFuZ2UifSw0MTI5OntuOiJBeGlzTGluZSJ9LDQxMzA6e246IkNydExpbmsifSw0MTMyOntuOiJEZWZhdWx0VGV4dCJ9LDQx''@;'; put 'put ''MzM6e246IlRleHQifSw0MTM0OntuOiJGb250WCIsZjpIbH0sNDEzNTp7bjoiT2JqZWN0TGluayJ9LDQxNDY6e246IkZyYW1lIn0sNDE0Nzp7bjoiQmVnaW4ifSw0MTQ4OntuOiJFbmQifSw0MTQ5OntuOiJQbG90QXJlYSJ9LDQxNTQ6e246IkNoYXJ0M2QifSw0MTU2OntuOiJQaWNGIn0sNDE1''@;'; put 'put ''Nzp7bjoiRHJvcEJhciJ9LDQxNTg6e246IlJhZGFyIn0sNDE1OTp7bjoiU3VyZiJ9LDQxNjA6e246IlJhZGFyQXJlYSJ9LDQxNjE6e246IkF4aXNQYXJlbnQifSw0MTYzOntuOiJMZWdlbmRFeGNlcHRpb24ifSw0MTY0OntuOiJTaHRQcm9wcyIsZjpmdW5jdGlvbiBHeSh5LFAsTCl7dmFyIFg9''@;'; put 'put ''e2FyZWE6ITF9O2lmKDUhPUwuYmlmZilyZXR1cm4geS5sKz1QLFg7dmFyIG5lPXkucmVhZF9zaGlmdCgxKTtyZXR1cm4geS5sKz0zLDE2Jm5lJiYoWC5hcmVhPSEwKSxYfX0sNDE2NTp7bjoiU2VyVG9DcnQifSw0MTY2OntuOiJBeGVzVXNlZCJ9LDQxNjg6e246IlNCYXNlUmVmIn0sNDE3MDp7''@;'; put 'put ''bjoiU2VyUGFyZW50In0sNDE3MTp7bjoiU2VyQXV4VHJlbmQifSw0MTc0OntuOiJJRm10UmVjb3JkIn0sNDE3NTp7bjoiUG9zIn0sNDE3Njp7bjoiQWxSdW5zIn0sNDE3Nzp7bjoiQlJBSSJ9LDQxODc6e246IlNlckF1eEVyckJhciJ9LDQxODg6e246IkNscnRDbGllbnQiLGY6ZnVuY3Rpb24g''@;'; put 'put ''T3MoeSl7Zm9yKHZhciBQPXkucmVhZF9zaGlmdCgyKSxMPVtdO1AtLSA+MDspTC5wdXNoKEMxKHkpKTtyZXR1cm4gTH19LDQxODk6e246IlNlckZtdCJ9LDQxOTE6e246IkNoYXJ0M0RCYXJTaGFwZSJ9LDQxOTI6e246IkZiaSJ9LDQxOTM6e246IkJvcFBvcCJ9LDQxOTQ6e246IkF4Y0V4dCJ9''@;'; put 'put ''LDQxOTU6e246IkRhdCJ9LDQxOTY6e246IlBsb3RHcm93dGgifSw0MTk3OntuOiJTSUluZGV4In0sNDE5ODp7bjoiR2VsRnJhbWUifSw0MTk5OntuOiJCb3BQb3BDdXN0b20ifSw0MjAwOntuOiJGYmkyIn0sMDp7bjoiRGltZW5zaW9ucyIsZjpWeX0sMTp7bjoiQklGRjJCTEFOSyJ9LDI6e246''@;'; put 'put ''IkJJRkYySU5UIixmOmZ1bmN0aW9uIGhOKHkpe3ZhciBQPUh1KHkpOysreS5sO3ZhciBMPXkucmVhZF9zaGlmdCgyKTtyZXR1cm4gUC50PSJuIixQLnZhbD1MLFB9fSwzOntuOiJCSUZGMk5VTSIsZjpmdW5jdGlvbiBkTih5KXt2YXIgUD1IdSh5KTsrK3kubDt2YXIgTD16YSh5KTtyZXR1cm4g''@;'; put 'put ''UC50PSJuIixQLnZhbD1MLFB9fSw0OntuOiJCSUZGMlNUUiIsZjpmdW5jdGlvbiBUMih5LFAsTCl7TC5iaWZmZ3Vlc3MmJjU9PUwuYmlmZiYmKEwuYmlmZj0yKTt2YXIgWD1IdSh5KTsrK3kubDt2YXIgbmU9bTAoeSwwLEwpO3JldHVybiBYLnQ9InN0ciIsWC52YWw9bmUsWH19LDU6e246IkJv''@;'; put 'put ''b2xFcnIiLGY6SXB9LDc6e246IlN0cmluZyIsZjpmdW5jdGlvbiAkeSh5KXt2YXIgUD15LnJlYWRfc2hpZnQoMSk7cmV0dXJuIDA9PT1QPyh5LmwrKywiIik6eS5yZWFkX3NoaWZ0KFAsInNiY3MtY29udCIpfX0sODp7bjoiQklGRjJST1cifSw5OntuOiJCT0YiLGY6ZWN9LDExOntuOiJJbmRl''@;'; put 'put ''eCJ9LDIyOntuOiJFeHRlcm5Db3VudCIsZjpIbH0sMzA6e246IkJJRkYyRk9STUFUIixmOmxofSwzMTp7bjoiQklGRjJGTVRDTlQifSwzMjp7bjoiQklGRjJDT0xJTkZPIn0sMzM6e246IkFycmF5IixmOk05fSwzNjp7bjoiQ09MV0lEVEgifSwzNzp7bjoiRGVmYXVsdFJvd0hlaWdodCIsZjph''@;'; put 'put ''aH0sNTA6e246IkJJRkYyRk9OVFhUUkEiLGY6ZnVuY3Rpb24gcXkoeSxQKXt5LmwrPTYseS5sKz0yLHkubCs9MSx5LmwrPTMseS5sKz0xLHkubCs9UC0xM319LDYyOntuOiJCSUZGMldJTkRPVzIifSw1Mjp7bjoiRERFT2JqTmFtZSJ9LDY3OntuOiJCSUZGMlhGIn0sNjg6e246IkJJRkYyWEZJ''@;'; put 'put ''TkRFWCIsZjpIbH0sNjk6e246IkJJRkYyRk9OVENMUiJ9LDg2OntuOiJCSUZGNEZNVENOVCJ9LDEyNjp7bjoiUksifSwxMjc6e246IkltRGF0YSIsZjpmdW5jdGlvbiBhZCh5KXt2YXIgUD15LnJlYWRfc2hpZnQoMiksTD15LnJlYWRfc2hpZnQoMiksWD15LnJlYWRfc2hpZnQoNCksbmU9e2Zt''@;'; put 'put ''dDpQLGVudjpMLGxlbjpYLGRhdGE6eS5zbGljZSh5LmwseS5sK1gpfTtyZXR1cm4geS5sKz1YLG5lfX0sMTM1OntuOiJBZGRpbiJ9LDEzNjp7bjoiRWRnIn0sMTM3OntuOiJQdWIifSwxNDU6e246IlN1YiJ9LDE0ODp7bjoiTEhSZWNvcmQifSwxNDk6e246IkxITkdyYXBoIn0sMTUwOntuOiJT''@;'; put 'put ''b3VuZCJ9LDE2OTp7bjoiQ29vcmRMaXN0In0sMTcxOntuOiJHQ1cifSwxODg6e246IlNockZtbGEifSwxOTE6e246IlRvb2xiYXJIZHIifSwxOTI6e246IlRvb2xiYXJFbmQifSwxOTQ6e246IkFkZE1lbnUifSwxOTU6e246IkRlbE1lbnUifSwyMTQ6e246IlJTdHJpbmciLGY6ZnVuY3Rpb24g''@;'; put 'put ''S3koeSxQLEwpe3ZhciBYPXkubCtQLG5lPUh1KHkpLGZlPXkucmVhZF9zaGlmdCgyKSxiZT1nbCh5LGZlLEwpO3JldHVybiB5Lmw9WCxuZS50PSJzdHIiLG5lLnZhbD1iZSxuZX19LDIyMzp7bjoiVUREZXNjIn0sMjM0OntuOiJUYWJJZENvbmYifSwzNTQ6e246IlhMNU1vZGlmeSJ9LDQyMTp7''@;'; put 'put ''bjoiRmlsZVNoYXJpbmcyIn0sNTE4OntuOiJGb3JtdWxhIixmOmp3fSw1MjE6e246IkJPRiIsZjplY30sNTM2OntuOiJMYmwiLGY6VXl9LDU0Nzp7bjoiRXh0ZXJuTmFtZSIsZjp6eX0sNTYxOntuOiJGb250In0sNTc5OntuOiJCSUZGM1hGIn0sMTAzMDp7bjoiRm9ybXVsYSIsZjpqd30sMTAz''@;'; put 'put ''Mzp7bjoiQk9GIixmOmVjfSwxMDkxOntuOiJCSUZGNFhGIn0sMjE1Nzp7bjoiRmVhdEluZm8ifSwyMTYzOntuOiJGZWF0SW5mbzExIn0sMjE3Nzp7bjoiU1hBZGRsMTIifSwyMjQwOntuOiJBdXRvV2ViUHViIn0sMjI0MTp7bjoiTGlzdE9iaiJ9LDIyNDI6e246Ikxpc3RGaWVsZCJ9LDIyNDM6''@;'; put 'put ''e246Ikxpc3REViJ9LDIyNDQ6e246Ikxpc3RDb25kRm10In0sMjI0NTp7bjoiTGlzdENGIn0sMjI0Njp7bjoiRk1RcnkifSwyMjQ3OntuOiJGTVNRcnkifSwyMjQ4OntuOiJQTFYifSwyMjQ5OntuOiJMbkV4dCJ9LDIyNTA6e246Ik1rckV4dCJ9LDIyNTE6e246IkNydENvb3B0In0sMjI2Mjp7''@;'; put 'put ''bjoiRlJUQXJjaElkJCIscjoxMn0sMjkyODI6e319LEhDPUZlKE5DLCJuIik7ZnVuY3Rpb24geWkoeSxQLEwsWCl7dmFyIG5lPStQfHwrSENbUF07aWYoIWlzTmFOKG5lKSl7dmFyIGZlPVh8fChMfHxbXSkubGVuZ3RofHwwLGJlPXkubmV4dCg0KTtiZS53cml0ZV9zaGlmdCgyLG5lKSxiZS53''@;'; put 'put ''cml0ZV9zaGlmdCgyLGZlKSxmZT4wJiZzaShMKSYmeS5wdXNoKEwpfX1mdW5jdGlvbiBTdih5LFAsTCl7cmV0dXJuIHl8fCh5PXhyKDcpKSx5LndyaXRlX3NoaWZ0KDIsUCkseS53cml0ZV9zaGlmdCgyLEwpLHkud3JpdGVfc2hpZnQoMiwwKSx5LndyaXRlX3NoaWZ0KDEsMCkseX1mdW5jdGlv''@;'; put 'put ''biBRUSh5LFAsTCxYKXtpZihudWxsIT1QLnYpc3dpdGNoKFAudCl7Y2FzZSJkIjpjYXNlIm4iOnZhciBuZT0iZCI9PVAudD9aZShGdChQLnYpKTpQLnY7cmV0dXJuIHZvaWQobmU9PSgwfG5lKSYmbmU+PTAmJm5lPDY1NTM2P3lpKHksMixmdW5jdGlvbiBmTih5LFAsTCl7dmFyIFg9eHIoOSk7''@;'; put 'put ''cmV0dXJuIFN2KFgseSxQKSxYLndyaXRlX3NoaWZ0KDIsTCksWH0oTCxYLG5lKSk6eWkoeSwzLGZ1bmN0aW9uIElUKHksUCxMKXt2YXIgWD14cigxNSk7cmV0dXJuIFN2KFgseSxQKSxYLndyaXRlX3NoaWZ0KDgsTCwiZiIpLFh9KEwsWCxuZSkpKTtjYXNlImIiOmNhc2UiZSI6cmV0dXJuIHZv''@;'; put 'put ''aWQgeWkoeSw1LGZ1bmN0aW9uIFhRKHksUCxMLFgpe3ZhciBuZT14cig5KTtyZXR1cm4gU3YobmUseSxQKSx3aShMLFh8fCJiIixuZSksbmV9KEwsWCxQLnYsUC50KSk7Y2FzZSJzIjpjYXNlInN0ciI6cmV0dXJuIHZvaWQgeWkoeSw0LGZ1bmN0aW9uIEpRKHksUCxMKXt2YXIgWD14cig4KzIq''@;'; put 'put ''TC5sZW5ndGgpO3JldHVybiBTdihYLHksUCksWC53cml0ZV9zaGlmdCgxLEwubGVuZ3RoKSxYLndyaXRlX3NoaWZ0KEwubGVuZ3RoLEwsInNiY3MiKSxYLmw8WC5sZW5ndGg/WC5zbGljZSgwLFgubCk6WH0oTCxYLChQLnZ8fCIiKS5zbGljZSgwLDI1NSkpKX15aSh5LDEsU3YobnVsbCxMLFgp''@;'; put 'put ''KX1mdW5jdGlvbiBpZWUoeSxQLEwsWCxuZSl7dmFyIGZlPTE2K211KG5lLmNlbGxYZnMsbmUuY2VsbFN0eWxlWGZzLFAsbmUpO2lmKG51bGwhPVAudnx8UC5iZilpZihQLmJmKXlpKHksIkZvcm11bGEiLGZ1bmN0aW9uIFlnKHksUCxMLFgsbmUpe3ZhciBmZT1yaChQLEwsbmUpLGJlPWZ1bmN0''@;'; put 'put ''aW9uIEJ3KHkpe2lmKG51bGw9PXkpe3ZhciBQPXhyKDgpO3JldHVybiBQLndyaXRlX3NoaWZ0KDEsMyksUC53cml0ZV9zaGlmdCgxLDApLFAud3JpdGVfc2hpZnQoMiwwKSxQLndyaXRlX3NoaWZ0KDIsMCksUC53cml0ZV9zaGlmdCgyLDY1NTM1KSxQfXJldHVybiBqYygibnVtYmVyIj09dHlw''@;'; put 'put ''ZW9mIHk/eTowKX0oeS52KSx2ZT14cig2KTt2ZS53cml0ZV9zaGlmdCgyLDMzKSx2ZS53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgVmU9eHIoeS5iZi5sZW5ndGgpLHplPTA7emU8eS5iZi5sZW5ndGg7Kyt6ZSlWZVt6ZV09eS5iZlt6ZV07cmV0dXJuIGsoW2ZlLGJlLHZlLFZlXSl9KFAsTCxY''@;'; put 'put ''LDAsZmUpKTtlbHNlIHN3aXRjaChQLnQpe2Nhc2UiZCI6Y2FzZSJuIjp5aSh5LCJOdW1iZXIiLGZ1bmN0aW9uIGp5KHksUCxMLFgpe3ZhciBuZT14cigxNCk7cmV0dXJuIHJoKHksUCxYLG5lKSxqYyhMLG5lKSxuZX0oTCxYLCJkIj09UC50P1plKEZ0KFAudikpOlAudixmZSkpO2JyZWFrO2Nh''@;'; put 'put ''c2UiYiI6Y2FzZSJlIjp5aSh5LDUxNyxmdW5jdGlvbiAkMCh5LFAsTCxYLG5lLGZlKXt2YXIgYmU9eHIoOCk7cmV0dXJuIHJoKHksUCxYLGJlKSx3aShMLGZlLGJlKSxiZX0oTCxYLFAudixmZSwwLFAudCkpO2JyZWFrO2Nhc2UicyI6Y2FzZSJzdHIiOmlmKG5lLmJvb2tTU1Qpe3ZhciB2ZT1H''@;'; put 'put ''dyhuZS5TdHJpbmdzLFAudixQLlI/UC5yPXBhKFAuUik6bnVsbCxuZS5yZXZTdHJpbmdzKTtpZihQLlIpZm9yKHZhciB5ZT0wO3llPFAuUi5sZW5ndGg7Kyt5ZSlQLlJbeWVdLnMmJm11KG5lLmNlbGxYZnMsbmUuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpQLlJbeWVdLnN9LG5lKTt5aSh5''@;'; put 'put ''LCJMYWJlbFNzdCIsZnVuY3Rpb24gd1QoeSxQLEwsWCl7dmFyIG5lPXhyKDEwKTtyZXR1cm4gcmgoeSxQLFgsbmUpLG5lLndyaXRlX3NoaWZ0KDQsTCksbmV9KEwsWCx2ZSxmZSkpfWVsc2UgeWkoeSwiTGFiZWwiLGZ1bmN0aW9uIFhGKHksUCxMLFgsbmUpe3ZhciBmZT0hbmV8fDg9PW5lLmJp''@;'; put 'put ''ZmYsYmU9eHIoK2ZlKzgrKDErZmUpKkwubGVuZ3RoKTtyZXR1cm4gcmgoeSxQLFgsYmUpLGJlLndyaXRlX3NoaWZ0KDIsTC5sZW5ndGgpLGZlJiZiZS53cml0ZV9zaGlmdCgxLDEpLGJlLndyaXRlX3NoaWZ0KCgxK2ZlKSpMLmxlbmd0aCxMLGZlPyJ1dGYxNmxlIjoic2JjcyIpLGJlfShMLFgs''@;'; put 'put ''KFAudnx8IiIpLnNsaWNlKDAsMjU1KSxmZSxuZSkpO2JyZWFrO2RlZmF1bHQ6eWkoeSwiQmxhbmsiLHJoKEwsWCxmZSkpfWVsc2UgeWkoeSwiQmxhbmsiLHJoKEwsWCxmZSkpfWZ1bmN0aW9uIFFBKHksUCxMKXt2YXIgemUsWD1jdSgpLG5lPUwuU2hlZXROYW1lc1t5XSxmZT1MLlNoZWV0c1tu''@;'; put 'put ''ZV18fHt9LGJlPShMfHx7fSkuV29ya2Jvb2t8fHt9LHZlPShiZS5TaGVldHN8fFtdKVt5XXx8e30seWU9QXJyYXkuaXNBcnJheShmZSksVmU9OD09UC5iaWZmLFdlPSIiLHJ0PVtdLGx0PVJvKGZlWyIhcmVmIl18fCJBMSIpLEN0PVZlPzY1NTM2OjE2Mzg0O2lmKGx0LmUuYz4yNTV8fGx0LmUu''@;'; put 'put ''cj49Q3Qpe2lmKFAuV1RGKXRocm93IG5ldyBFcnJvcigiUmFuZ2UgIisoZmVbIiFyZWYiXXx8IkExIikrIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0Iik7bHQuZS5jPU1hdGgubWluKGx0LmUuYywyNTUpLGx0LmUucj1NYXRoLm1pbihsdC5lLmMsQ3QtMSl9eWkoWCwyMDU3LERw''@;'; put 'put ''KDAsMTYsUCkpLHlpKFgsIkNhbGNNb2RlIixmdSgxKSkseWkoWCwiQ2FsY0NvdW50IixmdSgxMDApKSx5aShYLCJDYWxjUmVmTW9kZSIsX2MoITApKSx5aShYLCJDYWxjSXRlciIsX2MoITEpKSx5aShYLCJDYWxjRGVsdGEiLGpjKC4wMDEpKSx5aShYLCJDYWxjU2F2ZVJlY2FsYyIsX2MoITAp''@;'; put 'put ''KSx5aShYLCJQcmludFJvd0NvbCIsX2MoITEpKSx5aShYLCJQcmludEdyaWQiLF9jKCExKSkseWkoWCwiR3JpZFNldCIsZnUoMSkpLHlpKFgsIkd1dHMiLGZ1bmN0aW9uIFc1KHkpe3ZhciBQPXhyKDgpO3JldHVybiBQLndyaXRlX3NoaWZ0KDQsMCksUC53cml0ZV9zaGlmdCgyLHlbMF0/eVsw''@;'; put 'put ''XSsxOjApLFAud3JpdGVfc2hpZnQoMix5WzFdP3lbMV0rMTowKSxQfShbMCwwXSkpLHlpKFgsIkhDZW50ZXIiLF9jKCExKSkseWkoWCwiVkNlbnRlciIsX2MoITEpKTt2YXIgYXQ9ZmVbIiFwcmludCJdJiZmZVsiIXByaW50Il0ubWFyZ2luc3x8ZmVbIiFtYXJnaW5zIl07YXQmJihudWxsIT1h''@;'; put 'put ''dC5sZWZ0JiZ5aShYLCJMZWZ0TWFyZ2luIixqYyhhdC5sZWZ0KSksbnVsbCE9YXQucmlnaHQmJnlpKFgsIlJpZ2h0TWFyZ2luIixqYyhhdC5yaWdodCkpLG51bGwhPWF0LnRvcCYmeWkoWCwiVG9wTWFyZ2luIixqYyhhdC50b3ApKSxudWxsIT1hdC5ib3R0b20mJnlpKFgsIkJvdHRvbU1hcmdp''@;'; put 'put ''biIsamMoYXQuYm90dG9tKSksKG51bGwhPWF0LmhlYWRlcnx8bnVsbCE9YXQuZm9vdGVyKSYmeWkoWCwiU2V0dXAiLGZ1bmN0aW9uIFd5KHksUCl7dmFyIEw9eHIoMzQpLFg9ITEsbmU9NzA7cmV0dXJuImxhbmRzY2FwZSI9PShQLnByb3BzfHx7fSkub3JpZW50YXRpb24mJihYPSEwLG5lJj0t''@;'; put 'put ''NjcpLFgmJihuZSY9LTUpLEwud3JpdGVfc2hpZnQoMiwxKSxMLndyaXRlX3NoaWZ0KDIsMTAwKSxMLndyaXRlX3NoaWZ0KDIsMCksTC53cml0ZV9zaGlmdCgyLDApLEwud3JpdGVfc2hpZnQoMiwwKSxMLndyaXRlX3NoaWZ0KDEsbmUpLEwud3JpdGVfc2hpZnQoMSwwKSxMLndyaXRlX3NoaWZ0''@;'; put 'put ''KDIsNjAwKSxMLndyaXRlX3NoaWZ0KDIsNjAwKSxqYyhudWxsPT15LmhlYWRlcj8uNTp5LmhlYWRlcixMKSxqYyhudWxsPT15LmZvb3Rlcj8uNTp5LmZvb3RlcixMKSxMLndyaXRlX3NoaWZ0KDIsMSksTH0oYXQsZmVbIiFwcmludCJdfHx7fSkpKSxWZSYmZnVuY3Rpb24gUkIoeSxQLEwpe2lm''@;'; put 'put ''KFApe3ZhciBYPTA7UC5mb3JFYWNoKGZ1bmN0aW9uKG5lLGZlKXsrK1g8PTI1NiYmbmUmJihuZS5hdXRvJiYkdyhMLG5lLGZlKSx5aSh5LCJDb2xJbmZvIixmdW5jdGlvbiAkNSh5LFApe3ZhciBMPXhyKDEyKTtMLndyaXRlX3NoaWZ0KDIsUCksTC53cml0ZV9zaGlmdCgyLFApLEwud3JpdGVf''@;'; put 'put ''c2hpZnQoMiwyNTYqeS53aWR0aCksTC53cml0ZV9zaGlmdCgyLDApO3ZhciBYPTA7cmV0dXJuIHkuaGlkZGVuJiYoWHw9MSksTC53cml0ZV9zaGlmdCgxLFgpLEwud3JpdGVfc2hpZnQoMSxYPXkubGV2ZWx8fDApLEwud3JpdGVfc2hpZnQoMiwwKSxMfSh1NihmZSxuZSksZmUpKSl9KX19KFgs''@;'; put 'put ''ZmVbIiFjb2xzIl0sZmUpLHlpKFgsIkRpbWVuc2lvbnMiLGZ1bmN0aW9uIFNUKHksUCl7dmFyIEw9OCE9UC5iaWZmJiZQLmJpZmY/Mjo0LFg9eHIoMipMKzYpO3JldHVybiBYLndyaXRlX3NoaWZ0KEwseS5zLnIpLFgud3JpdGVfc2hpZnQoTCx5LmUucisxKSxYLndyaXRlX3NoaWZ0KDIseS5z''@;'; put 'put ''LmMpLFgud3JpdGVfc2hpZnQoMix5LmUuYysxKSxYLndyaXRlX3NoaWZ0KDIsMCksWH0obHQsUCkpLFZlJiYoZmVbIiFsaW5rcyJdPVtdKSxmZVsiIXJvd3MiXSYmVmUmJmZlWyIhcm93cyJdLmZvckVhY2goZnVuY3Rpb24oWnQsZ24pe2Zvcih2YXIgJG49YnMoZ24pLGNuPTI1NixYbj0wLEJu''@;'; put 'put ''PVp0LnM/MTYrbXUoUC5jZWxsWGZzLFAuY2VsbFN0eWxlWGZzLHt0OiJuIix2OjAsczpadC5zfSxQKTowLERuPWx0LnMuYztEbjw9bHQuZS5jOysrRG4pKHllPyhmZVtnbl18fFtdKVtEbl06ZmVbcnRbRG5dKyRuXSkmJihEbjxjbiYmKGNuPURuKSxEbj5YbiYmKFhuPURuKSk7WG48Y24mJihj''@;'; put 'put ''bj1Ybj0wKSx5aShYLCJSb3ciLGZ1bmN0aW9uIHB0KHksUCxMKXt2YXIgWD14cigxNik7WC53cml0ZV9zaGlmdCgyLFApLFgud3JpdGVfc2hpZnQoMixMWzBdKSxYLndyaXRlX3NoaWZ0KDIsTFsxXSsxKSxYLndyaXRlX3NoaWZ0KDIsMjAqeS5ocHR8fDIwKiRmKHkuaHB4KXx8MzMwKSxYLndy''@;'; put 'put ''aXRlX3NoaWZ0KDQsMCk7dmFyIG5lPTA7cmV0dXJuIG5lfD0wfHkubGV2ZWwseS5oaWRkZW4mJihuZXw9MzIpLG5lfD02NCxMWzJdJiYobmV8PTEyOCksWC53cml0ZV9zaGlmdCgxLG5lKSxYLndyaXRlX3NoaWZ0KDEsMSksWC53cml0ZV9zaGlmdCgyLExbMl18fDApLFh9KFp0LGduLFtjbixY''@;'; put 'put ''bixCbl0pKX0pO2Zvcih2YXIgdnQ9bHQucy5yO3Z0PD1sdC5lLnI7Kyt2dCl7V2U9YnModnQpO2Zvcih2YXIgUHQ9bHQucy5jO1B0PD1sdC5lLmM7KytQdCl7dnQ9PT1sdC5zLnImJihydFtQdF09eW8oUHQpKSx6ZT1ydFtQdF0rV2U7dmFyIGt0PXllPyhmZVt2dF18fFtdKVtQdF06ZmVbemVd''@;'; put 'put ''O2t0JiYoaWVlKFgsa3QsdnQsUHQsUCksVmUmJmt0LmwmJmZlWyIhbGlua3MiXS5wdXNoKFt6ZSxrdC5sXSkpfX12YXIgRHQ9dmUuQ29kZU5hbWV8fHZlLm5hbWV8fG5lO3JldHVybihWZXx8NT09UC5iaWZmJiZmZVsiIWZyZWV6ZSJdKSYmeWkoWCwiV2luZG93MiIsZnVuY3Rpb24gJEYoeSxQ''@;'; put 'put ''LEwsWCl7dmFyIG5lPVgmJlguYmlmZnx8OCxmZT14cig4PT1uZT8xODoxMCksYmU9MTcxODtyZXR1cm4gTD4wJiYoYmUmPS01MTMpLGhuKFBbIiFncmlkbGluZXMiXSkmJihiZSY9LTMpLFBbIiFmcmVlemUiXSYmKGJlfD04KSx5JiZ5LlJUTCYmKGJlfD02NCksNT09bmUmJihiZT00NDYpLGZl''@;'; put 'put ''LndyaXRlX3NoaWZ0KDIsYmUpLDg9PW5lPyhmZS53cml0ZV9zaGlmdCg0LDApLGZlLndyaXRlX3NoaWZ0KDQsNjQpLGZlLndyaXRlX3NoaWZ0KDQsMCksZmUud3JpdGVfc2hpZnQoNCwwKSk6KGZlLndyaXRlX3NoaWZ0KDQsMCksZmUud3JpdGVfc2hpZnQoNCwwKSksZmV9KChiZS5WaWV3c3x8''@;'; put 'put ''W10pWzBdLGZlLHkpKSwoVmV8fDU9PVAuYmlmZikmJmZlWyIhZnJlZXplIl0mJnlpKFgsIlBhbmUiLGZ1bmN0aW9uIEphKHkpeyJzdHJpbmciPT10eXBlb2YgeSYmKHk9a3MoeSkpO3ZhciBQPXhyKDEwKTtyZXR1cm4gUC53cml0ZV9zaGlmdCgyLHkuYyksUC53cml0ZV9zaGlmdCgyLHkuciks''@;'; put 'put ''UC53cml0ZV9zaGlmdCgyLHkuciksUC53cml0ZV9zaGlmdCgyLHkuYyksUC53cml0ZV9zaGlmdCgxLDMpLFAud3JpdGVfc2hpZnQoMSwwKSxQfShmZVsiIWZyZWV6ZSJdKSksVmUmJmZlWyIhc2VsIl0mJnlpKFgsIlNlbGVjdGlvbiIsZnVuY3Rpb24gRFQoeSxQKXt2YXIgTD14cigxNSksWD15''@;'; put 'put ''LmNlbGw7aWYoIVgpe2lmKCF5LnJhbmdlKXRocm93IG5ldyBFcnJvcigiTXVzdCBzcGVjaWZ5IGEgc2VsZWN0aW9uIGNlbGwgb3IgcmFuZ2UiKTtYPUFpKGFhKHkucmFuZ2UucmVwbGFjZSgvXHMuKiQvLCIiKSkucyl9dmFyIG5lPSJzdHJpbmciPT10eXBlb2YgWD9rcyhYKTpYO2lmKFApe3Zh''@;'; put 'put ''ciBmZT0ic3RyaW5nIj09dHlwZW9mIFA/a3MoUCk6UDtMLndyaXRlX3NoaWZ0KDEsbmUucj49ZmUuciYmbmUuYz49ZmUuYz8wOm5lLnI+PWZlLnImJm5lLmM8ZmUuYz8yOm5lLnI8ZmUuciYmbmUuYz49ZmUuYz8xOjMpfWVsc2UgTC53cml0ZV9zaGlmdCgxLDMpO3JldHVybiBMLndyaXRlX3No''@;'; put 'put ''aWZ0KDIsbmUuciksTC53cml0ZV9zaGlmdCgyLG5lLmMpLEwud3JpdGVfc2hpZnQoMiwwKSxMLndyaXRlX3NoaWZ0KDIsMSksZnVuY3Rpb24gWmYoeSxQKXtQfHwoUD14cig2KSksUC53cml0ZV9zaGlmdCgyLHkucz95LnMucjp5LnIpLFAud3JpdGVfc2hpZnQoMix5LmU/eS5lLnI6eS5yKSxQ''@;'; put 'put ''LndyaXRlX3NoaWZ0KDEseS5zP3kucy5jOnkuYyksUC53cml0ZV9zaGlmdCgxLHkuZT95LmUuYzp5LmMpfSh7czpuZSxlOm5lfSxMKSxMfShmZVsiIXNlbCJdLGZlWyIhZnJlZXplIl0pKSxWZSYmKGZlWyIhbWVyZ2VzIl18fFtdKS5sZW5ndGgmJnlpKFgsIk1lcmdlQ2VsbHMiLGZ1bmN0aW9u''@;'; put 'put ''IHJOKHkpe3ZhciBQPXhyKDIrOCp5Lmxlbmd0aCk7UC53cml0ZV9zaGlmdCgyLHkubGVuZ3RoKTtmb3IodmFyIEw9MDtMPHkubGVuZ3RoOysrTClEYyh5W0xdLFApO3JldHVybiBQfShmZVsiIW1lcmdlcyJdKSksVmUmJmZ1bmN0aW9uIE82KHksUCl7Zm9yKHZhciBMPTA7TDxQWyIhbGlua3Mi''@;'; put 'put ''XS5sZW5ndGg7KytMKXt2YXIgWD1QWyIhbGlua3MiXVtMXTt5aSh5LCJITGluayIsc04oWCkpLFhbMV0uVG9vbHRpcCYmeWkoeSwiSExpbmtUb29sdGlwIixsTihYKSl9ZGVsZXRlIFBbIiFsaW5rcyJdfShYLGZlKSx5aShYLCJDb2RlTmFtZSIsQ2EoRHQpKSxWZSYmZnVuY3Rpb24gSUIoeSxQ''@;'; put 'put ''KXt2YXIgTD14cigxOSk7TC53cml0ZV9zaGlmdCg0LDIxNTEpLEwud3JpdGVfc2hpZnQoNCwwKSxMLndyaXRlX3NoaWZ0KDQsMCksTC53cml0ZV9zaGlmdCgyLDMpLEwud3JpdGVfc2hpZnQoMSwxKSxMLndyaXRlX3NoaWZ0KDQsMCkseWkoeSwiRmVhdEhkciIsTCksKEw9eHIoMzkpKS53cml0''@;'; put 'put ''ZV9zaGlmdCg0LDIxNTIpLEwud3JpdGVfc2hpZnQoNCwwKSxMLndyaXRlX3NoaWZ0KDQsMCksTC53cml0ZV9zaGlmdCgyLDMpLEwud3JpdGVfc2hpZnQoMSwwKSxMLndyaXRlX3NoaWZ0KDQsMCksTC53cml0ZV9zaGlmdCgyLDEpLEwud3JpdGVfc2hpZnQoNCw0KSxMLndyaXRlX3NoaWZ0KDIs''@;'; put 'put ''MCksRGMoUm8oUFsiIXJlZiJdfHwiQTEiKSxMKSxMLndyaXRlX3NoaWZ0KDQsNCkseWkoeSwiRmVhdCIsTCl9KFgsZmUpLHlpKFgsIkVPRiIpLFguZW5kKCl9ZnVuY3Rpb24gTEIoeSxQLEwpe3ZhciBYPWN1KCksbmU9KHl8fHt9KS5Xb3JrYm9va3x8e30sZmU9bmUuU2hlZXRzfHxbXSxiZT1u''@;'; put 'put ''ZS5XQlByb3BzfHx7fSx2ZT04PT1MLmJpZmYseWU9NT09TC5iaWZmO3lpKFgsMjA1NyxEcCgwLDUsTCkpLCJ4bGEiPT1MLmJvb2tUeXBlJiZ5aShYLCJBZGRpbiIpLHlpKFgsIkludGVyZmFjZUhkciIsdmU/ZnUoMTIwMCk6bnVsbCkseWkoWCwiTW1zIixmdW5jdGlvbiBQeSh5LFApe1B8fChQ''@;'; put 'put ''PXhyKHkpKTtmb3IodmFyIEw9MDtMPHk7KytMKVAud3JpdGVfc2hpZnQoMSwwKTtyZXR1cm4gUH0oMikpLHllJiZ5aShYLCJUb29sYmFySGRyIikseWUmJnlpKFgsIlRvb2xiYXJFbmQiKSx5aShYLCJJbnRlcmZhY2VFbmQiKSx5aShYLCJXcml0ZUFjY2VzcyIsZnVuY3Rpb24gVTUoeSxQKXt2''@;'; put 'put ''YXIgTD0hUHx8OD09UC5iaWZmLFg9eHIoTD8xMTI6NTQpO2ZvcihYLndyaXRlX3NoaWZ0KDg9PVAuYmlmZj8yOjEsNyksTCYmWC53cml0ZV9zaGlmdCgxLDApLFgud3JpdGVfc2hpZnQoNCw4NTkwMDcwNTkpLFgud3JpdGVfc2hpZnQoNCw1NDU4NTQ4fChMPzA6NTM2ODcwOTEyKSk7WC5sPFgu''@;'; put 'put ''bGVuZ3RoOylYLndyaXRlX3NoaWZ0KDEsTD8wOjMyKTtyZXR1cm4gWH0oMCxMKSkseWkoWCwiQ29kZVBhZ2UiLGZ1KHZlPzEyMDA6MTI1MikpLHZlJiZ5aShYLCJEU0YiLGZ1KDApKSx2ZSYmeWkoWCwiRXhjZWw5RmlsZSIpLHlpKFgsIlJSVGFiSWQiLGZ1bmN0aW9uIHVOKHkpe2Zvcih2YXIg''@;'; put 'put ''UD14cigyKnkpLEw9MDtMPHk7KytMKVAud3JpdGVfc2hpZnQoMixMKzEpO3JldHVybiBQfSh5LlNoZWV0TmFtZXMubGVuZ3RoKSksdmUmJnkudmJhcmF3JiZ5aShYLCJPYlByb2oiKSx2ZSYmeS52YmFyYXcmJnlpKFgsIkNvZGVOYW1lIixDYShiZS5Db2RlTmFtZXx8IlRoaXNXb3JrYm9vayIp''@;'; put 'put ''KSx5aShYLCJCdWlsdEluRm5Hcm91cENvdW50IixmdSgxNykpLHlpKFgsIldpblByb3RlY3QiLF9jKCExKSkseWkoWCwiUHJvdGVjdCIsX2MoITEpKSx5aShYLCJQYXNzd29yZCIsZnUoMCkpLHZlJiZ5aShYLCJQcm90NFJldiIsX2MoITEpKSx2ZSYmeWkoWCwiUHJvdDRSZXZQYXNzIixmdSgw''@;'; put 'put ''KSkseWkoWCwiV2luZG93MSIsZnVuY3Rpb24gblEoKXt2YXIgeT14cigxOCk7cmV0dXJuIHkud3JpdGVfc2hpZnQoMiwwKSx5LndyaXRlX3NoaWZ0KDIsMCkseS53cml0ZV9zaGlmdCgyLDI5MjgwKSx5LndyaXRlX3NoaWZ0KDIsMTc2MDApLHkud3JpdGVfc2hpZnQoMiw1NikseS53cml0ZV9z''@;'; put 'put ''aGlmdCgyLDApLHkud3JpdGVfc2hpZnQoMiwwKSx5LndyaXRlX3NoaWZ0KDIsMSkseS53cml0ZV9zaGlmdCgyLDUwMCkseX0oKSkseWkoWCwiQmFja3VwIixfYyghMSkpLHlpKFgsIkhpZGVPYmoiLGZ1KDApKSx5aShYLCJEYXRlMTkwNCIsX2MoInRydWUiPT1mdW5jdGlvbiBNQyh5KXtyZXR1''@;'; put 'put ''cm4geS5Xb3JrYm9vayYmeS5Xb3JrYm9vay5XQlByb3BzJiZScih5Lldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQpPyJ0cnVlIjoiZmFsc2UifSh5KSkpLHlpKFgsIkNhbGNQcmVjaXNpb24iLF9jKCEwKSksdmUmJnlpKFgsIlJlZnJlc2hBbGwiLF9jKCExKSkseWkoWCwiQm9va0Jvb2wiLGZ1''@;'; put 'put ''KDApKSxodT1JNShbMCwxNjc3NzIxNSwxNjcxMTY4MCw2NTI4MCwyNTUsMTY3NzY5NjAsMTY3MTE5MzUsNjU1MzUsMCwxNjc3NzIxNSwxNjcxMTY4MCw2NTI4MCwyNTUsMTY3NzY5NjAsMTY3MTE5MzUsNjU1MzVdKSxmdW5jdGlvbiBuZWUoeSxQLEwpeygoKFB8fHt9KS5TdHlsZXN8fHt9KS5G''@;'; put 'put ''b250c3x8W3tzejoxMixjb2xvcjp7dGhlbWU6MX0sbmFtZToiQXJpYWwiLGZhbWlseToyLHNjaGVtZToibWlub3IifV0pLmZvckVhY2goZnVuY3Rpb24oWCl7eWkoeSwiRm9udCIsZnVuY3Rpb24gcUYoeSxQKXt2YXIgTD15Lm5hbWV8fCJBcmlhbCIsWD1QJiY1PT1QLmJpZmYsZmU9eHIoWD8x''@;'; put 'put ''NStMLmxlbmd0aDoxNisyKkwubGVuZ3RoKTtmZS53cml0ZV9zaGlmdCgyLDIwKih5LnN6fHwxMikpO3ZhciBiZT0wO3JldHVybiB5LmJvbGQmJihiZXw9MSkseS5pdGFsaWMmJihiZXw9MikseS5zdHJpa2UmJihiZXw9OCkseS5zaGFkb3cmJihiZXw9MzIpLGZlLndyaXRlX3NoaWZ0KDEsYmUp''@;'; put 'put ''LGZlLndyaXRlX3NoaWZ0KDEsMCksZmUud3JpdGVfc2hpZnQoMix5LmNvbG9yP0JwKHkuY29sb3IsNjQpOjY0KSxmZS53cml0ZV9zaGlmdCgyLHkuYm9sZD83MDA6NDAwKSxmZS53cml0ZV9zaGlmdCgyLCJzdXBlciI9PXkudmFsaWduPzE6InN1YiI9PXkudmFsaWduPzI6MCksZmUud3JpdGVf''@;'; put 'put ''c2hpZnQoMSx5LnVuZGVybGluZXx8MCksZmUud3JpdGVfc2hpZnQoMSxmZS5mYW1pbHl8fDApLGZlLndyaXRlX3NoaWZ0KDEsZmUuY2hhcnNldHx8MCksZmUud3JpdGVfc2hpZnQoMSwwKSxmZS53cml0ZV9zaGlmdCgxLEwubGVuZ3RoKSxYfHxmZS53cml0ZV9zaGlmdCgxLDEpLGZlLndyaXRl''@;'; put 'put ''X3NoaWZ0KChYPzE6MikqTC5sZW5ndGgsTCxYPyJzYmNzIjoidXRmMTZsZSIpLGZlfShYLEwpKX0pfShYLHksTCksZnVuY3Rpb24gcmVlKHksUCxMKXtQJiZbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFs1MCwzOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKFgpe2Zvcih2YXIgbmU9WFswXTtuZTw9WFsx''@;'; put 'put ''XTsrK25lKW51bGwhPVBbbmVdJiZ5aSh5LCJGb3JtYXQiLEpGKG5lLFBbbmVdLEwpKX0pfShYLHkuU1NGLEwpLGZ1bmN0aW9uIEpnKHksUCl7Zm9yKHZhciBMPTA7TDwxNjsrK0wpeWkoeSwiWEYiLE1nKHtudW1GbXRJZDowLHN0eWxlOiEwfSwwLFApKTtQLmNlbGxYZnMuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihYKXt5aSh5LCJYRiIsTWcoWCwwLFApKX0pfShYLEwpLHlpKFgsIlBhbGV0dGUiLGZ1bmN0aW9uIGJ0KHkpe3ZhciBQPXhyKDIyNik7UC53cml0ZV9zaGlmdCgyLDU2KTtmb3IodmFyIEw9MDtMPDU2OysrTCl7dmFyIFg9eVtMKzhdfHxDcFtMKzhdO1Aud3JpdGVfc2hpZnQoMSxYWzBd''@;'; put 'put ''KSxQLndyaXRlX3NoaWZ0KDEsWFsxXSksUC53cml0ZV9zaGlmdCgxLFhbMl0pLFAud3JpdGVfc2hpZnQoMSwwKX1yZXR1cm4gUH0oaHUpKSxodT1LdChDcCksdmUmJnlpKFgsIlVzZXNFTEZzIixfYyghMSkpO3ZhciB6ZT1YLmVuZCgpLFdlPWN1KCk7dmUmJnlpKFdlLCJDb3VudHJ5IixmdW5j''@;'; put 'put ''dGlvbiBIcih5KXtyZXR1cm4geXx8KHk9eHIoNCkpLHkud3JpdGVfc2hpZnQoMiwxKSx5LndyaXRlX3NoaWZ0KDIsMSkseX0oKSksdmUmJkwuU3RyaW5ncyYmZnVuY3Rpb24gS1EoeSxQLEwsWCl7dmFyIG5lPVh8fChMfHxbXSkubGVuZ3RofHwwO2lmKG5lPD04MjI0KXJldHVybiB5aSh5LFAs''@;'; put 'put ''TCxuZSk7dmFyIGZlPStQfHwrSENbUF07aWYoIWlzTmFOKGZlKSl7Zm9yKHZhciBiZT1MLnBhcnRzfHxbXSx2ZT0wLHllPTAsVmU9MDtWZSsoYmVbdmVdfHw4MjI0KTw9ODIyNDspVmUrPWJlW3ZlXXx8ODIyNCx2ZSsrO3ZhciB6ZT15Lm5leHQoNCk7Zm9yKHplLndyaXRlX3NoaWZ0KDIsZmUp''@;'; put 'put ''LHplLndyaXRlX3NoaWZ0KDIsVmUpLHkucHVzaChMLnNsaWNlKHllLHllK1ZlKSkseWUrPVZlO3llPG5lOyl7Zm9yKCh6ZT15Lm5leHQoNCkpLndyaXRlX3NoaWZ0KDIsNjApLFZlPTA7VmUrKGJlW3ZlXXx8ODIyNCk8PTgyMjQ7KVZlKz1iZVt2ZV18fDgyMjQsdmUrKzt6ZS53cml0ZV9zaGlm''@;'; put 'put ''dCgyLFZlKSx5LnB1c2goTC5zbGljZSh5ZSx5ZStWZSkpLHllKz1WZX19fShXZSwiU1NUIixmdW5jdGlvbiBqcyh5LFApe3ZhciBMPXhyKDgpO0wud3JpdGVfc2hpZnQoNCx5LkNvdW50KSxMLndyaXRlX3NoaWZ0KDQseS5VbmlxdWUpO2Zvcih2YXIgWD1bXSxuZT0wO25lPHkubGVuZ3RoOysr''@;'; put 'put ''bmUpWFtuZV09UWwoeVtuZV0sUCk7dmFyIGZlPWsoW0xdLmNvbmNhdChYKSk7cmV0dXJuIGZlLnBhcnRzPVtMLmxlbmd0aF0uY29uY2F0KFgubWFwKGZ1bmN0aW9uKGJlKXtyZXR1cm4gYmUubGVuZ3RofSkpLGZlfShMLlN0cmluZ3MsTCkpLHlpKFdlLCJFT0YiKTt2YXIgcnQ9V2UuZW5kKCks''@;'; put 'put ''bHQ9Y3UoKSxDdD0wLGF0PTA7Zm9yKGF0PTA7YXQ8eS5TaGVldE5hbWVzLmxlbmd0aDsrK2F0KUN0Kz0odmU/MTI6MTEpKyh2ZT8yOjEpKnkuU2hlZXROYW1lc1thdF0ubGVuZ3RoO3ZhciB2dD16ZS5sZW5ndGgrQ3QrcnQubGVuZ3RoO2ZvcihhdD0wO2F0PHkuU2hlZXROYW1lcy5sZW5ndGg7''@;'; put 'put ''KythdCl5aShsdCwiQm91bmRTaGVldDgiLHNoKHtwb3M6dnQsaHM6KGZlW2F0XXx8e30pLkhpZGRlbnx8MCxkdDowLG5hbWU6eS5TaGVldE5hbWVzW2F0XX0sTCkpLHZ0Kz1QW2F0XS5sZW5ndGg7dmFyIGt0PWx0LmVuZCgpO2lmKEN0IT1rdC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJCUzgg''@;'; put 'put ''IitDdCsiICE9ICIra3QubGVuZ3RoKTt2YXIgRHQ9W107cmV0dXJuIHplLmxlbmd0aCYmRHQucHVzaCh6ZSksa3QubGVuZ3RoJiZEdC5wdXNoKGt0KSxydC5sZW5ndGgmJkR0LnB1c2gocnQpLFUwKFtEdF0pfWZ1bmN0aW9uIGVEKHksUCl7dmFyIEw9UHx8e307c3dpdGNoKEwuYmlmZnx8Mil7''@;'; put 'put ''Y2FzZSA4OmNhc2UgNTpyZXR1cm4gZnVuY3Rpb24gb2VlKHksUCl7dmFyIEw9UHx8e30sWD1bXTtEMihQJiZQLlBQSXx8OTYpLHkmJiF5LlNTRiYmKHkuU1NGPXcuZ2V0X3RhYmxlKCkpLHkmJnkuU1NGJiYoSyh3KSx3LmxvYWRfdGFibGUoeS5TU0YpLEwucmV2c3NmPUVlKHkuU1NGKSxMLnJl''@;'; put 'put ''dnNzZlt5LlNTRls2NTUzNV1dPTAsTC5zc2Y9eS5TU0YpLHkuU3R5bGVzPXtGb250czpMLkZvbnRzPVt7c3o6MTIsY29sb3I6e3RoZW1lOjEscmdiOiIwMDAwMDAifSxuYW1lOiJDYWxpYnJpIixmYW1pbHk6MixzY2hlbWU6Im1pbm9yIn1dLEZpbGxzOkwuRmlsbHM9W3twYXR0ZXJuVHlwZToi''@;'; put 'put ''bm9uZSJ9LHtwYXR0ZXJuVHlwZToiZ3JheTEyNSJ9XSxCb3JkZXJzOkwuQm9yZGVycz1be31dLERYRjpMLkRYRj15LlN0eWxlcyYmeS5TdHlsZXMuRFhGfHxbXX0sRnAoTC5Gb250c1swXSksTC5TdHJpbmdzPVtdLEwuU3RyaW5ncy5Db3VudD0wLEwuU3RyaW5ncy5VbmlxdWU9MCx0Mz9MLnJl''@;'; put 'put ''dlN0cmluZ3M9bmV3IE1hcDooTC5yZXZTdHJpbmdzPXt9LEwucmV2U3RyaW5ncy5mb289W10sZGVsZXRlIEwucmV2U3RyaW5ncy5mb28pLE8yKEwpLEwuY2VsbFhmcz1bXSxMLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxtdShMLmNlbGxYZnMsTC5jZWxsU3R5bGVYZnMse30se3Jl''@;'; put 'put ''dnNzZjp7R2VuZXJhbDowfX0pLHkuUHJvcHN8fCh5LlByb3BzPXt9KTtmb3IodmFyIG5lPTA7bmU8eS5TaGVldE5hbWVzLmxlbmd0aDsrK25lKVhbWC5sZW5ndGhdPVFBKG5lLEwseSk7cmV0dXJuIFgudW5zaGlmdChMQih5LFgsTCkpLFUwKFtYXSl9KHksUCk7Y2FzZSA0OmNhc2UgMzpjYXNl''@;'; put 'put ''IDI6cmV0dXJuIGZ1bmN0aW9uIHRlZSh5LFApe3ZhciBMPVB8fHt9O251bGwhPWVlJiZudWxsPT1MLmRlbnNlJiYoTC5kZW5zZT1lZSk7Zm9yKHZhciBYPWN1KCksbmU9MCxmZT0wO2ZlPHkuU2hlZXROYW1lcy5sZW5ndGg7KytmZSl5LlNoZWV0TmFtZXNbZmVdPT1MLnNoZWV0JiYobmU9ZmUp''@;'; put 'put ''O2lmKDA9PW5lJiZMLnNoZWV0JiZ5LlNoZWV0TmFtZXNbMF0hPUwuc2hlZXQpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrTC5zaGVldCk7cmV0dXJuIHlpKFgsND09TC5iaWZmPzEwMzM6Mz09TC5iaWZmPzUyMTo5LERwKDAsMTYsTCkpLGZ1bmN0aW9uIGVlZSh5LFAsTCxY''@;'; put 'put ''KXt2YXIgYmUsbmU9QXJyYXkuaXNBcnJheShQKSxmZT1SbyhQWyIhcmVmIl18fCJBMSIpLHZlPSIiLHllPVtdO2lmKGZlLmUuYz4yNTV8fGZlLmUucj4xNjM4Myl7aWYoWC5XVEYpdGhyb3cgbmV3IEVycm9yKCJSYW5nZSAiKyhQWyIhcmVmIl18fCJBMSIpKyIgZXhjZWVkcyBmb3JtYXQgbGlt''@;'; put 'put ''aXQgQTE6SVYxNjM4NCIpO2ZlLmUuYz1NYXRoLm1pbihmZS5lLmMsMjU1KSxmZS5lLnI9TWF0aC5taW4oZmUuZS5jLDE2MzgzKSxiZT1EaShmZSl9Zm9yKHZhciBWZT1mZS5zLnI7VmU8PWZlLmUucjsrK1ZlKXt2ZT1icyhWZSk7Zm9yKHZhciB6ZT1mZS5zLmM7emU8PWZlLmUuYzsrK3plKXtW''@;'; put 'put ''ZT09PWZlLnMuciYmKHllW3plXT15byh6ZSkpLGJlPXllW3plXSt2ZTt2YXIgV2U9bmU/KFBbVmVdfHxbXSlbemVdOlBbYmVdO1dlJiZRUSh5LFdlLFZlLHplKX19fShYLHkuU2hlZXRzW3kuU2hlZXROYW1lc1tuZV1dLDAsTCkseWkoWCwxMCksWC5lbmQoKX0oeSxQKX10aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoImludmFsaWQgdHlwZSAiK0wuYm9va1R5cGUrIiBmb3IgQklGRiIpfXZhciBrMT1mdW5jdGlvbigpe3ZhciB5PXtjZW50ZXJDb250aW51b3VzOiJjZW50ZXIiLGp1c3RpZnk6ImxlZnQifTtmdW5jdGlvbiBMKFdlLHJ0KXt2YXIgbHQ9cnR8fHt9O251bGwhPWVlJiZudWxsPT1sdC5kZW5z''@;'; put 'put ''ZSYmKGx0LmRlbnNlPWVlKTt2YXIgQ3Q9bHQuZGVuc2U/W106e30sYXQ9KFdlPVdlLnJlcGxhY2UoLzwhLS0uKj8tLT4vZywiIikpLm1hdGNoKC88dGFibGUvaSk7aWYoIWF0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+Iik7dmFyIHZ0PVdl''@;'; put 'put ''Lm1hdGNoKC88XC90YWJsZS9pKSxQdD1hdC5pbmRleCxrdD12dCYmdnQuaW5kZXh8fFdlLmxlbmd0aCxEdD1mdW5jdGlvbiBmdCh5LFAsTCl7aWYoWW58fCJzdHJpbmciPT10eXBlb2YgUClyZXR1cm4geS5zcGxpdChQKTtmb3IodmFyIFg9eS5zcGxpdChQKSxuZT1bWFswXV0sZmU9MTtmZTxY''@;'; put 'put ''Lmxlbmd0aDsrK2ZlKW5lLnB1c2goTCksbmUucHVzaChYW2ZlXSk7cmV0dXJuIG5lfShXZS5zbGljZShQdCxrdCksLyg6Pzx0cltePl0qPikvaSwiPHRyPiIpLFp0PS0xLGduPTAsJG49MCxjbj0wLFhuPXtzOntyOjFlNyxjOjFlN30sZTp7cjowLGM6MH19LEJuPVtdO2ZvcihQdD0wO1B0PER0''@;'; put 'put ''Lmxlbmd0aDsrK1B0KXt2YXIgRG49RHRbUHRdLnRyaW0oKSxRbj1Ebi5zbGljZSgwLDMpLnRvTG93ZXJDYXNlKCk7aWYoIjx0ciIhPVFuKXtpZigiPHRkIj09UW58fCI8dGgiPT1Rbil7dmFyIGVyPURuLnNwbGl0KC88XC90W2RoXT4vaSk7Zm9yKGt0PTA7a3Q8ZXIubGVuZ3RoOysra3Qpe3Zh''@;'; put 'put ''ciB6bj1lcltrdF0udHJpbSgpO2lmKHpuLm1hdGNoKC88dFtkaF0vaSkpe2Zvcih2YXIgS3I9em4saWk9MDsiPCI9PUtyLmNoYXJBdCgwKSYmKGlpPUtyLmluZGV4T2YoIj4iKSk+LTE7KUtyPUtyLnNsaWNlKGlpKzEpO2Zvcih2YXIgRWk9MDtFaTxCbi5sZW5ndGg7KytFaSl7dmFyIE9pPUJu''@;'; put 'put ''W0VpXTtPaS5zLmM9PWduJiZPaS5zLnI8WnQmJlp0PD1PaS5lLnImJihnbj1PaS5lLmMrMSxFaT0tMSl9dmFyIHRpPWFuKHpuLnNsaWNlKDAsem4uaW5kZXhPZigiPiIpKSk7Y249dGkuY29sc3Bhbj8rdGkuY29sc3BhbjoxLCgoJG49K3RpLnJvd3NwYW4pPjF8fGNuPjEpJiZCbi5wdXNoKHtz''@;'; put 'put ''OntyOlp0LGM6Z259LGU6e3I6WnQrKCRufHwxKS0xLGM6Z24rY24tMX19KTt2YXIgZnI9dGkudHx8dGlbImRhdGEtdCJdfHwiIjtpZighS3IubGVuZ3RoKXtnbis9Y247Y29udGludWV9aWYoS3I9RnUoS3IpLFhuLnMucj5adCYmKFhuLnMucj1adCksWG4uZS5yPFp0JiYoWG4uZS5yPVp0KSxY''@;'; put 'put ''bi5zLmM+Z24mJihYbi5zLmM9Z24pLFhuLmUuYzxnbiYmKFhuLmUuYz1nbiksS3IubGVuZ3RoKXt2YXIgQW49e3Q6InMiLHY6S3J9O2x0LnJhd3x8IUtyLnRyaW0oKS5sZW5ndGh8fCJzIj09ZnJ8fChBbj1HbihLcixsdCkpLGx0LmRlbnNlPyhDdFtadF18fChDdFtadF09W10pLEN0W1p0XVtn''@;'; put 'put ''bl09QW4pOkN0W0FpKHtyOlp0LGM6Z259KV09QW4sZ24rPWNufX19fX1lbHNle2lmKCsrWnQsbHQuc2hlZXRSb3dzJiZsdC5zaGVldFJvd3M8PVp0KXstLVp0O2JyZWFrfWduPTB9fXJldHVybiBDdFsiIXJlZiJdPURpKFhuKSxCbi5sZW5ndGgmJihDdFsiIW1lcmdlcyJdPUJuKSxDdH1mdW5j''@;'; put 'put ''dGlvbiBuZShXZSxydCxsdCxDdCxhdCx2dCl7dmFyIER0LFB0PVdlWyIhbWVyZ2VzIl18fFtdLGt0PVtdLFp0PXtzdHlsZTpbXX0sZ249ITE7ZnVuY3Rpb24gJG4oSWksc3MsdW8pe3ZhciBObz0iIixFbz0wO2lmKER0W0lpXSlzd2l0Y2goRHRbSWldLnN0eWxlKXtjYXNlInRoaW4iOmNhc2Ui''@;'; put 'put ''aGFpciI6Tm89InNvbGlkIixFbz0xO2JyZWFrO2Nhc2UibWVkaXVtIjpObz0ic29saWQiLEVvPTI7YnJlYWs7Y2FzZSJ0aGljayI6Tm89InNvbGlkIixFbz0zO2JyZWFrO2Nhc2UiZG91YmxlIjpObz0iZG91YmxlIixFbz0zO2JyZWFrO2Nhc2UiZG90dGVkIjpjYXNlImRhc2hEb3REb3QiOk5v''@;'; put 'put ''PSJkb3R0ZWQiLEVvPTE7YnJlYWs7Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpObz0iZG90dGVkIixFbz0yO2JyZWFrO2Nhc2UiZGFzaGVkIjpjYXNlImRhc2hEb3QiOmNhc2Uic2xhbnREYXNoRG90IjpObz0iZGFzaGVkIixFbz0xO2JyZWFrO2Nhc2UibWVkaXVtRGFzaGVkIjpjYXNlIm1lZGl1''@;'; put 'put ''bURhc2hEb3QiOk5vPSJkYXNoZWQiLEVvPTJ9ZTppZigwPT1Fbyl7c3dpdGNoKElpKXtjYXNlInRvcCI6LS1zczticmVhaztjYXNlImxlZnQiOi0tdW87YnJlYWs7Y2FzZSJib3R0b20iOisrc3M7YnJlYWs7Y2FzZSJyaWdodCI6Kyt1b312YXIgYWk9c3M+PTAmJnVvPj0wP0N0LmRlbnNlPyhX''@;'; put 'put ''ZVtzc118fFtdKVt1b106V2VbQWkoe3I6c3MsYzp1b30pXTpudWxsO2lmKGFpKXtpZihhaS5zJiZhaS5zW3t0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AiLGxlZnQ6InJpZ2h0IixyaWdodDoibGVmdCJ9W0lpXV0pYnJlYWsgZTthaS5zJiZhaS5zLmZnQ29sb3ImJihFbz0xKX1EdC5mZ0NvbG9y''@;'; put 'put ''JiYoRW89MSksIWFpJiZnbiYmMD09RW8mJihFbz0xKX0wIT1FbyYmRW8mJihadC5zdHlsZS5wdXNoKCJib3JkZXItIitJaSsiLXN0eWxlOiIrKE5vfHwidHJhbnNwYXJlbnQiKSksWnQuc3R5bGUucHVzaCgiYm9yZGVyLSIrSWkrIi13aWR0aDoiK0VvKyJweCIpLCIiPT1Obz9adC5zdHlsZS5w''@;'; put 'put ''dXNoKCJib3JkZXItIitJaSsiLWNvbG9yOiB0cmFuc3BhcmVudCIpOkR0W0lpXS5jb2xvciYmRHRbSWldLmNvbG9yLnJnYiYmWnQuc3R5bGUucHVzaCgiYm9yZGVyLSIrSWkrIi1jb2xvcjojIituMChEdFtJaV0uY29sb3IucmdiKSkpfWZvcih2YXIgY249cnQucy5jO2NuPD1ydC5lLmM7Kytj''@;'; put 'put ''bil7Zm9yKHZhciBYbj0wLEJuPTAsRG49MDtEbjxQdC5sZW5ndGg7KytEbilpZighKFB0W0RuXS5zLnI+bHR8fFB0W0RuXS5zLmM+Y258fFB0W0RuXS5lLnI8bHR8fFB0W0RuXS5lLmM8Y24pKXtpZihQdFtEbl0ucy5yPGx0fHxQdFtEbl0ucy5jPGNuKXtYbj0tMTticmVha31Ybj1QdFtEbl0u''@;'; put 'put ''ZS5yLVB0W0RuXS5zLnIrMSxCbj1QdFtEbl0uZS5jLVB0W0RuXS5zLmMrMTticmVha31pZighKFhuPDApKXt2YXIgUW49QWkoe3I6bHQsYzpjbn0pLGVyPUN0LmRlbnNlPyhXZVtsdF18fFtdKVtjbl06V2VbUW5dO2VyP2duPSExOihnbj0hMCxlcj17dDoieiIsczp7fX0pO3ZhciB6bj0ieiI9''@;'; put 'put ''PWVyLnQ/IiI6ZXIuaHx8WGkoZXIud3x8KElhKGVyKSxlci53KXx8IiIpO2lmKFp0PXtzdHlsZTpbXX0sRHQ9ZXIucyl7dmFyIEtyPTE7aWYoKCJzdXBlciI9PUR0LnZhbGlnbnx8InN1YiI9PUR0LnZhbGlnbikmJihLcj0uODMsem49X3IoInNwYW4iLHpuLHtzdHlsZToidmVydGljYWwtYWxp''@;'; put 'put ''Z246ICIrRHQudmFsaWdufSkpLFp0LnN0eWxlLnB1c2goImZvbnQtd2VpZ2h0OiIrKER0LmJvbGQ/NzAwOjQwMCkpLER0Lml0YWxpYyYmWnQuc3R5bGUucHVzaCgiZm9udC1zdHlsZTogaXRhbGljIiksKER0LnVuZGVybGluZXx8RHQuc3RyaWtlKSYmWnQuc3R5bGUucHVzaCgidGV4dC1kZWNv''@;'; put 'put ''cmF0aW9uOiIrKER0LnVuZGVybGluZT8iIHVuZGVybGluZSI6IiIpKyhEdC5zdHJpa2U/IiBsaW5lLXRocm91Z2giOiIiKSksRHQuY29sb3ImJkR0LmNvbG9yLnJnYiYmWnQuc3R5bGUucHVzaCgiY29sb3I6ICMiK24wKER0LmNvbG9yLnJnYikpLER0Lm5hbWUmJlp0LnN0eWxlLnB1c2goImZv''@;'; put 'put ''bnQtZmFtaWx5OiIrRHQubmFtZSsiLCBzYW5zLXNlcmlmIiksRHQuc3omJlp0LnN0eWxlLnB1c2goImZvbnQtc2l6ZToiK0R0LnN6KktyKyJwdCIpLG51bGwhPT1EdC5wYXR0ZXJuVHlwZSYmRHQuZmdDb2xvciYmRHQuZmdDb2xvci5yZ2ImJlp0LnN0eWxlLnB1c2goImJhY2tncm91bmQtY29s''@;'; put 'put ''b3I6ICMiK24wKER0LmZnQ29sb3IucmdiKSksWyJ0b3AiLCJsZWZ0Il0uZm9yRWFjaChmdW5jdGlvbihJaSl7JG4oSWksbHQsY24pfSksWG4+MXx8Qm4+MSl7dmFyIGlpPUFpKHtyOmx0K1huLTEsYzpjbitCbi0xfSksRWk9Q3QuZGVuc2U/KFdlW2x0K1huLTFdfHxbXSlbY24rQm4tMV06V2Vb''@;'; put 'put ''aWldLHRpPUR0O0R0PUVpJiZFaS5zfHxEdCxbImJvdHRvbSIsInJpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihJaSl7JG4oSWksbHQsY24pfSksRHQ9dGl9ZWxzZVsiYm90dG9tIiwicmlnaHQiXS5mb3JFYWNoKGZ1bmN0aW9uKElpKXskbihJaSxsdCxjbil9KTtpZihEdC5hbGlnbm1lbnQpe2lm''@;'; put 'put ''KER0LmFsaWdubWVudC5ob3Jpem9udGFsP1p0LnN0eWxlLnB1c2goInRleHQtYWxpZ246ICIrKHlbRHQuYWxpZ25tZW50Lmhvcml6b250YWxdfHxEdC5hbGlnbm1lbnQuaG9yaXpvbnRhbCkpOiJuIj09ZXIudCYmWnQuc3R5bGUucHVzaCgidGV4dC1hbGlnbjogcmlnaHQiKSxEdC5hbGlnbm1l''@;'; put 'put ''bnQudmVydGljYWwpe3ZhciBmcj1EdC5hbGlnbm1lbnQudmVydGljYWw7WnQuc3R5bGUucHVzaCgidmVydGljYWwtYWxpZ246ICIrKCJjZW50ZXIiPT1mcj8ibWlkZGxlIjpmcikpfWlmKER0LmFsaWdubWVudC53cmFwVGV4dCladC5zdHlsZS5wdXNoKCJ3aGl0ZS1zcGFjZTogcHJlLXdyYXAi''@;'; put 'put ''KTtlbHNle3ZhciBBbj1DdC5kZW5zZT8oV2VbbHRdfHxbXSlbY24rMV06V2VbQWkoe3I6bHQsYzpjbisxfSldO0FuJiYieiIhPUFuLnQmJlp0LnN0eWxlLnB1c2goIndoaXRlLXNwYWNlOiBwcmUtd3JhcCIpfX1lbHNlIm4iPT1lci50JiZadC5zdHlsZS5wdXNoKCJ0ZXh0LWFsaWduOiByaWdo''@;'; put 'put ''dCIpO3ZhciB3cj0oKFdlWyIhY29scyJdfHxbXSlbY25dfHx7fSkud3B4O251bGw9PXdyJiYod3I9KChXZVsiIXNoZWV0Rm9ybWF0Il18fHt9KS5jb2x8fHt9KS53cHgpfXZhciBycj0wO2lmKEJuPD0xJiZYbjw9MSYmKHJyPSgoV2VbIiFjb2xzIl18fFtdKVtjbl18fHt9KS53cHgpJiZadC5z''@;'; put 'put ''dHlsZS5wdXNoKCJ3aWR0aDogIitycisicHgiKSxXZVsiIWNvbmRmbXQiXSYmZmUoZXIsbHQsY24sV2VbIiFjb25kZm10Il0sWnQuc3R5bGUsV2UpLDA9PVp0LnN0eWxlLmxlbmd0aD9kZWxldGUgWnQuc3R5bGU6WnQuc3R5bGU9WnQuc3R5bGUuam9pbigiOyIpLEN0LmNzcyl7dmFyIEVuPWF0''@;'; put 'put ''LmluZGV4T2YoWnQuc3R5bGUpOy0xPT1FbiYmKGF0LnB1c2goWnQuc3R5bGUpLEVuPWF0Lmxlbmd0aC0xKSxkZWxldGUgWnQuc3R5bGUsWnQuY2xhc3M9InNqcyIrKHZ0fHwiIikrIi0iK0VufVhuPjEmJihadC5yb3dzcGFuPVhuKSxCbj4xJiYoWnQuY29sc3Bhbj1CbiksQ3QuZWRpdGFibGU/''@;'; put 'put ''em49JzxzcGFuIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Jyt6bisiPC9zcGFuPiI6ZXImJihadFsiZGF0YS10Il09ZXImJmVyLnR8fCJ6IixudWxsIT1lci52JiYoWnRbImRhdGEtdiJdPWVyLnYpLG51bGwhPWVyLnomJihadFsiZGF0YS16Il09ZXIueikpLFp0LmlkPShDdC5pZHx8InNqcyIp''@;'; put 'put ''KyItIitRbixrdC5wdXNoKF9yKCJ0ZCIsem4sWnQpKX19dmFyIGJpLENyPXtzdHlsZTpbXX07KGJpPVdlWyIhc2hlZXRGb3JtYXQiXSkmJmJpLnJvdyYmKEY5KGJpLnJvdyksYmkucm93LmhweCYmKENyLnN0eWxlLnB1c2goWyJoZWlnaHQiLGJpLnJvdy5ocHgrInB4Il0pLENyLmhlaWdodD1N''@;'; put 'put ''YXRoLnJvdW5kKGJpLnJvdy5ocHgpKSk7dmFyIHFyPVdlWyIhcm93cyJdO2lmKHFyJiZxcltsdF0pe3ZhciBVaT1xcltsdF07VWkuaHB4JiYoQ3Iuc3R5bGUucHVzaChbImhlaWdodCIsK1VpLmhweCsicHgiXSksQ3IuaGVpZ2h0PU1hdGgucm91bmQoVWkuaHB4KSksVWkuaGlkZGVuJiZDci5z''@;'; put 'put ''dHlsZS5wdXNoKFsiZGlzcGxheSIsIm5vbmUiXSl9dmFyIExvPVtdO3JldHVybiBDci5zdHlsZT1Dci5zdHlsZS5yZXZlcnNlKCkuZmlsdGVyKGZ1bmN0aW9uKElpKXtyZXR1cm4hKExvLmluZGV4T2YoSWlbMF0pPi0xfHwoTG8ucHVzaChJaVswXSksMCkpfSkubWFwKGZ1bmN0aW9uKElpKXty''@;'; put 'put ''ZXR1cm4gSWlbMF0rIjoiK0lpWzFdfSksMD09Q3Iuc3R5bGUubGVuZ3RoP2RlbGV0ZSBDci5zdHlsZTpDci5zdHlsZT1Dci5zdHlsZS5qb2luKCI7IiksX3IoInRyIixrdC5qb2luKCIiKSxDcil9ZnVuY3Rpb24gZmUoV2UscnQsbHQsQ3QsYXQsdnQpe0N0LmZvckVhY2goZnVuY3Rpb24oUHQp''@;'; put 'put ''e2lmKFB0Ll9yZWZ8fChQdC5fcmVmPSJzdHJpbmciPT10eXBlb2YgUHQucmVmP2FhKFB0LnJlZik6UHQucmVmKSwhKFB0Ll9yZWYucy5jPmx0fHxQdC5fcmVmLmUuYzxsdHx8UHQuX3JlZi5zLnI+cnR8fFB0Ll9yZWYuZS5yPHJ0fHwic2NhbGUiIT09UHQudCkpe2lmKCJuIiE9V2UudClyZXR1''@;'; put 'put ''cm47dmFyIGt0O2lmKG51bGw9PVB0Ll9taW4pe1B0Ll92YWx1ZXM9W107Zm9yKHZhciBEdD1QdC5fcmVmLnMucjtEdDw9UHQuX3JlZi5lLnI7KytEdClmb3IodmFyIFp0PVB0Ll9yZWYucy5jO1p0PD1QdC5fcmVmLmUuYzsrK1p0KXt2YXIgZ249QXJyYXkuaXNBcnJheSh2dCk/KHZ0W0R0XXx8''@;'; put 'put ''W10pW1p0XTp2dFtBaSh7cjpEdCxjOlp0fSldO2duJiYibiI9PWduLnQmJlB0Ll92YWx1ZXMucHVzaChnbi52KX1pZihQdC5fdmFsdWVzLnNvcnQoZnVuY3Rpb24oJG4sY24pe3JldHVybiAkbi1jbn0pLFB0Ll9taW49UHQuX3ZhbHVlc1swXSxQdC5fbWF4PVB0Ll92YWx1ZXMuc2xpY2UoLTEp''@;'; put 'put ''WzBdLFB0Ll9iYW5kPVB0Ll9tYXgtUHQuX21pbixQdC5jbWlkKXtzd2l0Y2goUHQuY21pZC50KXtjYXNlIm51bSI6UHQuX21pZD1QdC5jbWlkLnY7YnJlYWs7Y2FzZSJwZXJjZW50IjpQdC5fbWlkPVB0LmNtaWQudi8xMDAqUHQuX2JhbmQrUHQuX21pbjticmVhaztjYXNlInBlcmNlbnRpbGUi''@;'; put 'put ''OlB0Ll9taWQ9ZnVuY3Rpb24gZG4oeSxQKXtpZigwPT1QKXJldHVybiB5WzBdO2lmKDEwMD09UClyZXR1cm4geVt5Lmxlbmd0aC0xXTt2YXIgWD1QLzEwMCooeS5sZW5ndGgtMSksbmU9WC1NYXRoLmZsb29yKFgpO3JldHVybiBuZSp5W01hdGguY2VpbChYKV0rKDEtbmUpKnlbTWF0aC5mbG9v''@;'; put 'put ''cihYKV19KFB0Ll92YWx1ZXMsUHQuY21pZC52KX1QdC5fYmFuZGg9UHQuX21heC1QdC5fbWlkLFB0Ll9iYW5kbD1QdC5fbWlkLVB0Ll9taW59fShrdD1QdC5jbWlkP1dlLnY+PVB0Ll9taWQ/bHcoUHQuY21pZC5jb2xvcixQdC5jbWF4LmNvbG9yLChXZS52LVB0Ll9taWQpL1B0Ll9iYW5kaCk6''@;'; put 'put ''bHcoUHQuY21pbi5jb2xvcixQdC5jbWlkLmNvbG9yLChXZS52LVB0Ll9taW4pL1B0Ll9iYW5kbCk6bHcoUHQuY21pbi5jb2xvcixQdC5jbWF4LmNvbG9yLChXZS52LVB0Ll9taW4pL1B0Ll9iYW5kKSkmJmF0LnB1c2goImJhY2tncm91bmQtY29sb3I6ICMiK2t0KX19KX1mdW5jdGlvbiBiZShX''@;'; put 'put ''ZSxydCl7dmFyIGx0PXtzcGFuOnJ0fHwxLHN0eWxlOiIifSxDdD1bXTtyZXR1cm4gV2UmJldlLndweCYmKGx0LndpZHRoPU1hdGgucm91bmQoNCpXZS53cHgvMyksQ3QucHVzaCgid2lkdGg6IisoV2Uud3B4fHwwKSsicHgiKSksQ3QubGVuZ3RoPjAmJihsdC5zdHlsZT1DdC5qb2luKCI7Iikp''@;'; put 'put ''LF9yKCJjb2wiLG51bGwsbHQpfWZ1bmN0aW9uIHZlKFdlLHJ0LGx0KXt2YXIgQ3Q9e2JvcmRlcjowLGNlbGxwYWRkaW5nOjAsY2VsbHNwYWNpbmc6MCxzdHlsZTpbImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZSIsInRhYmxlLWxheW91dDpmaXhlZCJdLmpvaW4oIjsiKX07bHQmJmx0LmlkJiYo''@;'; put 'put ''Q3QuaWQ9bHQuaWQpO3ZhciBhdD1XZVsiIWNvbHMiXSx2dD1XZVsiIXNoZWV0Rm9ybWF0Il07aWYoV2UmJmF0KXtmb3IodmFyIFB0PTAsRHQ9cnQucy5jO0R0PD1ydC5lLmM7KytEdCl7dmFyIFp0PWF0W0R0XTtQdCs9WnQmJlp0LndweD9adC53cHg6dnQmJnZ0LmNvbCYmdnQuY29sLndweD92''@;'; put 'put ''dC5jb2wud3B4OjUzfUN0LnN0eWxlKz0iO3dpZHRoOiIrUHQrInB4In12YXIgJG4sZ249WyI8dGFibGUiK2F1KEN0KSsiPiJdO2lmKGduLnB1c2goIjxzdHlsZT50ZCB7IHBhZGRpbmctdG9wOiAxcHg7IHBhZGRpbmctcmlnaHQ6MXB4OyBwYWRkaW5nLWxlZnQ6MXB4OyB0ZXh0LWFsaWduOmdl''@;'; put 'put ''bmVyYWw7IHZlcnRpY2FsLWFsaWduOmJvdHRvbTsgYm9yZGVyOjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiIrKGx0JiZsdC5ncmlkY29sb3I/bHQuZ3JpZGNvbG9yOmhuKFdlWyIhZ3JpZGxpbmVzIl0pPyJ0cmFuc3BhcmVudCI6ImJsYWNrIikrIjsgd2hpdGUtc3BhY2U6bm93cmFwOyB0ZXh0''@;'; put 'put ''LW92ZXJmbG93OmVsbGlwc2lzfTwvc3R5bGU+IiksZ24ucHVzaCgnPGNvbGdyb3VwIHNwYW49IicrKHJ0LmUuYy1ydC5zLmMrMSkrJyI+JyksYXQpe2Zvcih2YXIgY249cnQucy5jO2NuPE1hdGgubWluKGF0Lmxlbmd0aCxydC5lLmMrMSk7KytjbikhKCRuPWF0W2NuXSkmJnZ0JiZ2dC5jb2wm''@;'; put 'put ''Jigkbj12dC5jb2wpLCRufHwoJG49e3dweDo1M30pLGduLnB1c2goYmUoJG4sMSkpO3J0LmUuYy1ydC5zLmMrMT5hdC5sZW5ndGgmJigkbj1udWxsLHZ0JiZ2dC5jb2wmJigkbj12dC5jb2wpLCRufHwoJG49e3dweDo1M30pLGduLnB1c2goYmUoJG4scnQuZS5jLXJ0LnMuYysxLWF0Lmxlbmd0''@;'; put 'put ''aCkpKX1lbHNlICRuPW51bGwsdnQmJnZ0LmNvbCYmKCRuPXZ0LmNvbCksJG58fCgkbj17d3B4OjUzfSksZ24ucHVzaChiZSgkbixydC5lLmMtcnQucy5jKzEpKTtyZXR1cm4gZ24ucHVzaCgiPC9jb2xncm91cD4iKSxnbi5qb2luKCIiKX12YXIgeWU9JzxodG1sPjxoZWFkPjxtZXRhIGNoYXJz''@;'; put 'put ''ZXQ9InV0Zi04Ii8+PHRpdGxlPlNoZWV0SlMgVGFibGUgRXhwb3J0PC90aXRsZT48L2hlYWQ+PGJvZHk+JyxWZT0iPC9ib2R5PjwvaHRtbD4iO3JldHVybnt0b193b3JrYm9vazpmdW5jdGlvbiBYKFdlLHJ0KXtyZXR1cm4gcmQoTChXZSxydCkscnQpfSx0b19zaGVldDpMLF9yb3c6bmUsQkVH''@;'; put 'put ''SU46eWUsRU5EOlZlLF9wcmVhbWJsZTp2ZSxodG1sX3RvX3JzOmZ1bmN0aW9uIFAoV2Upe3ZhciBydD1bXSxsdD17fSxDdD0wO3JldHVybiBXZS5yZXBsYWNlKC88KFwvPykoW15ccz8+IVwvOl0qOnwpKFteXHM/PjpcL10rKVtePl0qPi9nbSxmdW5jdGlvbihhdCx2dCxQdCxrdCxEdCl7dmFy''@;'; put 'put ''IGduPXRuKGFuKGF0KVswXSkucmVwbGFjZSgvWzxcLz5dL2csIiIpLCRuPVdlLnNsaWNlKEN0LER0KS5yZXBsYWNlKC9ccy9nLCIgIik7c3dpdGNoKCRuLmxlbmd0aD4wJiYocnQucHVzaCh7dDoicyIsdjokbixzOmx0fSksbHQ9S3QobHQpKSxnbi50b0xvd2VyQ2FzZSgpKXtjYXNlImIiOiIv''@;'; put 'put ''IiE9dnQ/bHQuYm9sZD0hMDpkZWxldGUgbHQuYm9sZDticmVhaztjYXNlImkiOiIvIiE9dnQ/bHQuaXRhbGljPSEwOmRlbGV0ZSBsdC5pdGFsaWM7YnJlYWs7Y2FzZSJ1IjoiLyIhPXZ0P2x0LnVuZGVybGluZT0xOmRlbGV0ZSBsdC51bmRlcmxpbmU7YnJlYWs7Y2FzZSJzIjoiLyIhPXZ0P2x0''@;'; put 'put ''LnN0cmlrZT0hMDpkZWxldGUgbHQuc3RyaWtlfXJldHVybiBDdD1EdCthdC5sZW5ndGgsYXR9KSxydH0sZnJvbV9zaGVldDpmdW5jdGlvbiB6ZShXZSxydCl7dmFyIGx0PXJ0fHx7fSxhdD1udWxsIT1sdC5mb290ZXI/bHQuZm9vdGVyOlZlLHZ0PVtudWxsIT1sdC5oZWFkZXI/bHQuaGVhZGVy''@;'; put 'put ''OnllLCIiXSxQdD1bXSxrdD0obmV3IERhdGUpLnZhbHVlT2YoKTtXZXx8KFdlPXt9KSxXZVsiIXJlZiJdfHwoV2VbIiFyZWYiXT0iQTE6QTEiKTt2YXIgRHQ9YWEoV2VbIiFyZWYiXSk7aWYobHQuZGVuc2U9QXJyYXkuaXNBcnJheShXZSksbHQuc2tpcGVuZCl7dmFyIFp0PUR0LmUucjtlOmZv''@;'; put 'put ''cig7WnQ+PUR0LnMucjstLVp0KWZvcih2YXIgZ249RHQuZS5jO2duPj1EdC5zLmM7LS1nbilpZihudWxsIT0oKGx0LmRlbnNlPyhXZVtadF18fFtdKVtnbl06V2VbQWkoe3I6WnQsYzpnbn0pXSl8fHt9KS52KWJyZWFrIGU7RHQuZS5yPVp0O3ZhciAkbj1EdC5lLmM7ZTpmb3IoOyRuPj1EdC5z''@;'; put 'put ''LmM7LS0kbilmb3IodmFyIGNuPUR0LmUucjtjbj49RHQucy5yOy0tY24paWYobnVsbCE9KChsdC5kZW5zZT8oV2VbY25dfHxbXSlbJG5dOldlW0FpKHtyOmNuLGM6JG59KV0pfHx7fSkudilicmVhayBlO0R0LmUuYz0kbn12dC5wdXNoKHZlKFdlLER0LGx0KSk7Zm9yKHZhciBYbj1EdC5zLnI7''@;'; put 'put ''WG48PUR0LmUucjsrK1huKXZ0LnB1c2gobmUoV2UsRHQsWG4sbHQsUHQsa3QpKTtyZXR1cm4gdnQucHVzaCgiPC90YWJsZT4iK2F0KSxsdC5jc3MmJih2dFsxXT0iPHN0eWxlPlxuIitQdC5tYXAoZnVuY3Rpb24oQm4sRG4pe3JldHVybiIuc2pzIitrdCsiLSIrRG4rIiB7IitCbisifSJ9KS5q''@;'; put 'put ''b2luKCJcbiIpKyI8L3N0eWxlPiIpLHZ0LmpvaW4oIiIpfX19KCk7ZnVuY3Rpb24gdEQoeSxQLEwpe3ZhciBYPXt9O2lmKHR5cGVvZiBnZXRDb21wdXRlZFN0eWxlPiJ1IilyZXR1cm4gWDt2YXIgbmU9Z2V0Q29tcHV0ZWRTdHlsZSh5KTtpZigoNzAwPT1uZVsiZm9udC13ZWlnaHQiXXx8ImJv''@;'; put 'put ''bGQiPT1uZVsiZm9udC13ZWlnaHQiXSkmJihYLmJvbGQ9ITApLChuZVsiZm9udC1zdHlsZSJdfHwiIikubWF0Y2goL2l0YWxpYy8pJiYoWC5pdGFsaWM9ITApLChuZVsidGV4dC1kZWNvcmF0aW9uIl18fCIiKS5tYXRjaCgvdW5kZXJsaW5lLykmJihYLnVuZGVybGluZT0xKSwobmVbInRleHQt''@;'; put 'put ''ZGVjb3JhdGlvbiJdfHwiIikubWF0Y2goL2xpbmUtdGhyb3VnaC8pJiYoWC5zdHJpa2U9MSkscGFyc2VJbnQobmVbImZvbnQtc2l6ZSJdKSYmKFguc3o9cGFyc2VGbG9hdChuZVsiZm9udC1zaXplIl0pKihuZVsiZm9udC1zaXplIl0ubWF0Y2goL3B4Lyk/My80OjEpKSxuZVsiZm9udC1mYW1p''@;'; put 'put ''bHkiXSYmKFgubmFtZT1uZVsiZm9udC1mYW1pbHkiXS5zcGxpdCgiLCIpWzBdLnJlcGxhY2UoL1xzKiJccyovZywiIikpLG5lLmNvbG9yKXt2YXIgZmU9SWcobmUuY29sb3IudG9Mb3dlckNhc2UoKSwhMCk7ZmU+PTAmJihYLmNvbG9yPXtyZ2I6ZmV9KX1zd2l0Y2gobmVbInRleHQtdHJhbnNm''@;'; put 'put ''b3JtIl0mJihYLnRleHRfdHJhbnNmb3JtPW5lWyJ0ZXh0LXRyYW5zZm9ybSJdLnRvTG93ZXJDYXNlKCkpLCJub25lIiE9KG5lWyJ0ZXh0LXNoYWRvdyJdfHwibm9uZSIpJiYoWC5zaGFkb3c9ITApLG5lWyJ0ZXh0LWFsaWduIl0pe2Nhc2UiY2VudGVyIjpYLmFsaWdubWVudD17aG9yaXpvbnRh''@;'; put 'put ''bDoiY2VudGVyIn07YnJlYWs7Y2FzZSJyaWdodCI6WC5hbGlnbm1lbnQ9e2hvcml6b250YWw6InJpZ2h0In07YnJlYWs7Y2FzZSJsZWZ0IjpYLmFsaWdubWVudD17aG9yaXpvbnRhbDoibGVmdCJ9O2JyZWFrO2Nhc2UianVzdGlmeSI6WC5hbGlnbm1lbnQ9e2hvcml6b250YWw6Imp1c3RpZnki''@;'; put 'put ''fX1zd2l0Y2gobmVbInZlcnRpY2FsLWFsaWduIl0pe2Nhc2UidG9wIjpjYXNlIm1pZGRsZSI6Y2FzZSJib3R0b20iOlguYWxpZ25tZW50fHwoWC5hbGlnbm1lbnQ9e30pLFguYWxpZ25tZW50LnZlcnRpY2FsPW5lWyJ2ZXJ0aWNhbC1hbGlnbiJdLCJtaWRkbGUiPT1YLmFsaWdubWVudC52ZXJ0''@;'; put 'put ''aWNhbCYmKFguYWxpZ25tZW50LnZlcnRpY2FsPSJjZW50ZXIiKTticmVhaztjYXNlInN1YiI6Y2FzZSJzdXBlciI6WC52YWxpZ249bmVbInZlcnRpY2FsLWFsaWduIl0sWC5zeiYmKFguc3ovPS44Myl9dmFyIGJlPVAmJmdldENvbXB1dGVkU3R5bGUoUCk7cmV0dXJuIGJlJiZMJiZQJiZbImxl''@;'; put 'put ''ZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24odmUpe3ZhciB5ZT12ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt2ZS5zbGljZSgxKSxWZT1iZVsiYm9yZGVyLSIrdmUrIi1zdHlsZSJdO2lmKCgibm9uZSI9PVZlfHwhVmUpJiYoVmU9YmVbImJvcmRlciIreWUr''@;'; put 'put ''IlN0eWxlIl0pLCJub25lIiE9VmUmJlZlKXt2YXIgemU9cGFyc2VJbnQoYmVbImJvcmRlci0iK3ZlKyItd2lkdGgiXXx8YmVbImJvcmRlciIreWUrIldpZHRoIl0sMTApLFdlPSJ0aGluIjtpZih6ZT4wKXtzd2l0Y2goVmUpe2Nhc2UiZG91YmxlIjpXZT0iZG91YmxlIjticmVhaztjYXNlImRh''@;'; put 'put ''c2hlZCI6V2U9emU+PTI/Im1lZGl1bURhc2hlZCI6ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOldlPXplPj0yPyJtZWRpdW1EYXNoRG90RG90IjoiZG90dGVkIjticmVhaztjYXNlInNvbGlkIjpXZT16ZT49Mz8idGhpY2siOnplPj0yPyJtZWRpdW0iOiJ0aGluIn1pZihYW3ZlXT17c3R5''@;'; put 'put ''bGU6V2V9LGJlWyJib3JkZXItIit2ZSsiLWNvbG9yIl18fGJlWyJib3JkZXIiK3llKyJDb2xvciJdKXt2YXIgcnQ9SWcoKGJlWyJib3JkZXItIit2ZSsiLWNvbG9yIl18fGJlWyJib3JkZXIiK3llKyJDb2xvciJdKS50b0xvd2VyQ2FzZSgpLCEwKTtydD49MCYmKFhbdmVdLmNvbG9yPXtyZ2I6''@;'; put 'put ''cnR9KX19fX0pLFh9ZnVuY3Rpb24gckQoeSxQLEwpe3ZhciBYPXkuY2hpbGROb2RlcztpZigxPT15Lm5vZGVUeXBlKXN3aXRjaCh5LnRhZ05hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSJwIjpQLmxlbmd0aD4wJiZQLnB1c2goe3Q6InQiLHY6IlxuIixzOkx9KTticmVhaztjYXNlInNlbGVjdCI6''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIG5EKHksUCxMKXtQLnB1c2goe3Q6InQiLHY6eS5jaGlsZHJlblt5LnNlbGVjdGVkSW5kZXhdLmlubmVyVGV4dCxzOkx9KX0oeSxQLEwpfWlmKFgubGVuZ3RoPjApe3ZhciBuZT10RCh5LG51bGwsITEpO0wmJihMLnVuZGVybGluZSYmKG5lLnVuZGVybGluZT1MLnVu''@;'; put 'put ''ZGVybGluZSksTC5zdHJpa2UmJihuZS5zdHJpa2U9TC5zdHJpa2UpKTtmb3IodmFyIGZlPTA7ZmU8WC5sZW5ndGg7KytmZSl7dHJ5e2lmKFhbZmVdLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSljb250aW51ZX1jYXRjaHt9ckQoWFtmZV0sUCxuZSl9ZGVsZXRlIG5lLnRleHRfdHJhbnNm''@;'; put 'put ''b3JtfWVsc2UgaWYoMz09eS5ub2RlVHlwZSl7dmFyIGJlPXt0OiJ0Iix2Onkubm9kZVZhbHVlLnJlcGxhY2UoL15bXG4gXSsvLCIgIikucmVwbGFjZSgvW1xuIF0rJC8sIiAiKSxzOkx9O3N3aXRjaChMLnRleHRfdHJhbnNmb3JtKXtjYXNlInVwcGVyY2FzZSI6YmUudj1iZS52LnRvVXBwZXJD''@;'; put 'put ''YXNlKCk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOmJlLnY9YmUudi50b0xvd2VyQ2FzZSgpfShQLmxlbmd0aD4wfHxiZS52JiYiICIhPWJlLnYpJiZQLnB1c2goYmUpfWVsc2UgMT09eS5ub2RlVHlwZSYmImJyIj09PXkudGFnTmFtZS50b0xvd2VyQ2FzZSgpJiZQLnB1c2goe3Q6InQiLHY6Ilxu''@;'; put 'put ''IixzOkx9KX1mdW5jdGlvbiB4dih5LFAsTCxYLG5lKXt2YXIgYmUsZmU9eS5pbm5lckhUTUw7aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGU8InUiKXN3aXRjaChiZT1nZXRDb21wdXRlZFN0eWxlKHkpLChiZVsid2hpdGUtc3BhY2UiXXx8IiIpLm1hdGNoKC9wcmUvKSYmKGZlPWZlLnJlcGxh''@;'; put 'put ''Y2UoL1xuL2csIjxici8+IikpLChiZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXBwZXJjYXNlIjpmZT1mZS50b1VwcGVyQ2FzZSgpO2JyZWFrO2Nhc2UibG93ZXJjYXNlIjpmZT1mZS50b0xvd2VyQ2FzZSgpfXZhciB2ZT1mdW5jdGlvbiBNdih5LFAsTCxY''@;'; put 'put ''KXt2YXIgbmU9e3Q6InMiLHY6UH0sZmU9IiI7aWYoeSl7TD15LmdldEF0dHJpYnV0ZSgiZGF0YS10Iil8fHkuZ2V0QXR0cmlidXRlKCJ0Iik7dmFyIGJlPXkuZ2V0QXR0cmlidXRlKCJkYXRhLXYiKXx8eS5nZXRBdHRyaWJ1dGUoInYiKTtpZihudWxsIT0oZmU9eS5nZXRBdHRyaWJ1dGUoImRh''@;'; put 'put ''dGEteiIpfHx5LmdldEF0dHJpYnV0ZSgieiIpKSYmKG5lLno9ZmUpLG51bGwhPUwmJm51bGwhPWJlKXJldHVybiBuZS50PUwsbmUudj1iZSxuZX1yZXR1cm4gbnVsbCE9UCYmKDA9PVAubGVuZ3RoP25lLnQ9THx8InoiOlgucmF3fHwhUC50cmltKCkubGVuZ3RofHwicyI9PUx8fChuZT1HbihQ''@;'; put 'put ''LFgpKSksZmUmJihuZS56PWZlKSxuZX0oeSxGdShmZSksTCxuZSk7aWYodHlwZW9mIGdldENvbXB1dGVkU3R5bGU8InUiJiYodmUucz10RCh5LFAsbmUuYm9yZGVycyksZGVsZXRlIHZlLnMudGV4dF90cmFuc2Zvcm0seS5jaGlsZE5vZGVzLmxlbmd0aD4xfHwxPT15LmNoaWxkTm9kZXMubGVu''@;'; put 'put ''Z3RoJiYzIT15LmNoaWxkTm9kZXNbMF0ubm9kZVR5cGUpKXN3aXRjaChyRCh5LHZlLlI9W10sbnVsbCksdmUuUiYmdmUuUlt2ZS5SLmxlbmd0aC0xXSYmIlxuIj09dmUuUlt2ZS5SLmxlbmd0aC0xXS52JiZ2ZS5SLmxlbmd0aC0tLChiZVsidGV4dC10cmFuc2Zvcm0iXXx8IiIpLnRvTG93ZXJD''@;'; put 'put ''YXNlKCkpe2Nhc2UidXBwZXJjYXNlIjp2ZS5SLmZvckVhY2goZnVuY3Rpb24ocnQpe3J0LnY9cnQudi50b1VwcGVyQ2FzZSgpfSk7YnJlYWs7Y2FzZSJsb3dlcmNhc2UiOnZlLlIuZm9yRWFjaChmdW5jdGlvbihydCl7cnQudj1ydC52LnRvTG93ZXJDYXNlKCl9KX1pZigicyI9PXZlLnQpe3Zh''@;'; put 'put ''ciB5ZT12ZS52Lm1hdGNoKC9cbi8pOyF5ZSYmdmUuUiYmdmUuUi5mb3JFYWNoKGZ1bmN0aW9uKHJ0KXsic3RyaW5nIj09dHlwZW9mIHJ0LnYmJnJ0LnYubWF0Y2goL1xuLykmJih5ZT0hMCl9KSwicyI9PXZlLnQmJnllJiYodmUuc3x8KHZlLnM9e30pLHZlLnMuYWxpZ25tZW50fHwodmUucy5h''@;'; put 'put ''bGlnbm1lbnQ9e30pLHZlLnMuYWxpZ25tZW50LndyYXBUZXh0PSEwKX1pZihQKXt2YXIgVmU9IiIsemU9UC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKHplJiZ6ZS5sZW5ndGgpZm9yKHZhciBXZT0wO1dlPHplLmxlbmd0aCYmKCF6ZVtXZV0uaGFzQXR0cmlidXRlKCJocmVmIil8fCIj''@;'; put 'put ''Ij09KFZlPXplW1dlXS5nZXRBdHRyaWJ1dGUoImhyZWYiKSkuY2hhckF0KDApKTsrK1dlKTtWZSYmIiMiIT1WZS5jaGFyQXQoMCkmJih2ZS5sPXtUYXJnZXQ6VmV9KX1yZXR1cm4gdmV9ZnVuY3Rpb24gRXYoeSxQLEwpe3ZhciBuZSxYPVAucm93cztpZighWCl7aWYoTCYmbnVsbCE9TC5vcmln''@;'; put 'put ''aW4pdGhyb3ciVW5zdXBwb3J0ZWQgb3JpZ2luIHdoZW4gIitQLnRhZ05hbWUrIiBpcyBub3QgYSBUQUJMRSI7cmV0dXJuIGZ1bmN0aW9uIHNlZSh5LFAsTCl7TD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KEx8fHt9KSk7dmFyIGZlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX07eVsiIW1l''@;'; put 'put ''cmdlcyJdfHwoeVsiIW1lcmdlcyJdPVtdKTtmb3IodmFyIHZlLGJlPVAuY2hpbGRyZW4seWU9MCxWZT0wO1ZlPGJlLmxlbmd0aDsrK1ZlKXt2YXIgcnQsemU9YmVbVmVdLFdlPSIiO3RyeXt0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZTwidSI/cnQ9Z2V0Q29tcHV0ZWRTdHlsZTp6ZS5vd25lckRv''@;'; put 'put ''Y3VtZW50LmRlZmF1bHRWaWV3JiYiZnVuY3Rpb24iPT10eXBlb2YgemUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYocnQ9emUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKX1jYXRjaHt9aWYoIXJ0fHwibm9uZSIhPXJ0KHpl''@;'; put 'put ''KS5kaXNwbGF5KXN3aXRjaCh6ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpe2Nhc2UiVEFCTEUiOnllPS0xLHlbIiFyZWYiXSYmKEwub3JpZ2luPS0xKSxFdih5LHplLEwpO2JyZWFrO2Nhc2UiQlIiOmNhc2UiSFIiOnllPS0xLHlbIiFyZWYiXT8oKysoZmU9YWEoeVsiIXJlZiJdKSkuZS5yLHlb''@;'; put 'put ''IiFyZWYiXT1EaShmZSkpOnlbIiFyZWYiXT0iQTE6QTEiO2JyZWFrO2Nhc2UiRElWIjpjYXNlIlAiOmNhc2UiSDEiOmNhc2UiSDIiOmNhc2UiSDMiOmNhc2UiSDQiOmNhc2UiSDUiOmNhc2UiSDYiOnllPS0xLHZlPXh2KHplLG51bGwsIiIsMCxMKSx5WyIhcmVmIl0/KEwub3JpZ2luPS0xLF9w''@;'; put 'put ''KHksW1t2ZV1dLEwpKTooeVsiIXJlZiJdPSJBMSIsQXJyYXkuaXNBcnJheSh5KT8oeVswXXx8KHlbMF09W10pLHlbMF1bMF09dmUpOnkuQTE9dmUpLHlbIiFyb3dzIl18fCh5WyIhcm93cyJdPVtdKSxydCYmKGZlPWFhKHlbIiFyZWYiXSksKFdlPXJ0KHplKS5oZWlnaHQpJiYiYXV0byIhPVdl''@;'; put 'put ''JiYoeVsiIXJvd3MiXVtmZS5lLnJdPXtocHQ6cGFyc2VJbnQoV2UsMTApfSkpO2JyZWFrO2Nhc2UiU1BBTiI6Y2FzZSJBIjpjYXNlIkIiOmNhc2UiRU0iOmNhc2UiSSI6Y2FzZSJGT05UIjpjYXNlIlMiOmNhc2UiU1VCIjpjYXNlIlNVUCI6Y2FzZSJVIjp2ZT14dih6ZSxudWxsLCIiLDAsTCks''@;'; put 'put ''eVsiIXJlZiJdfHwoeVsiIXJlZiJdPSJBMTpBMSIpLF9wKHksW1t2ZV1dLHtvcmlnaW46QWkoe3I6KHllPDA/MTowKSsoZmU9YWEoeVsiIXJlZiJdKSkuZS5yLGM6Kyt5ZX0pfSk7YnJlYWs7Y2FzZSJETCI6Y2FzZSJVTCI6Y2FzZSJPTCI6eWU9LTEsY29uc29sZS5lcnJvcigiSFRNTCBDb252''@;'; put 'put ''ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgbGlzdCBlbGVtZW50ICIremUudGFnTmFtZS50b1VwcGVyQ2FzZSgpKTticmVhaztkZWZhdWx0OnllPS0xLGNvbnNvbGUuZXJyb3IoIlNraXBwaW5nICIremUudGFnTmFtZS50b1VwcGVyQ2FzZSgpKX19cmV0dXJuIHl9KHksUCxMKX10cnl7dHlwZW9m''@;'; put 'put ''IGdldENvbXB1dGVkU3R5bGU8InUiP25lPWdldENvbXB1dGVkU3R5bGU6UC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3JiYiZnVuY3Rpb24iPT10eXBlb2YgUC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihuZT1QLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZp''@;'; put 'put ''ZXcuZ2V0Q29tcHV0ZWRTdHlsZSl9Y2F0Y2h7fXZhciBmZT1MfHx7fTtudWxsIT1lZSYmKGZlLmRlbnNlPWVlKTt2YXIgYmU9MCx2ZT0wO2lmKG51bGwhPWZlLm9yaWdpbilpZigibnVtYmVyIj09dHlwZW9mIGZlLm9yaWdpbiliZT1mZS5vcmlnaW47ZWxzZXt2YXIgeWU9InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBmZS5vcmlnaW4/a3MoZmUub3JpZ2luKTpmZS5vcmlnaW47YmU9eWUucix2ZT15ZS5jfXZhciBWZT1NYXRoLm1pbihmZS5zaGVldFJvd3N8fDFlNyxYLmxlbmd0aCksemU9e3M6e3I6MCxjOjB9LGU6e3I6YmUsYzp2ZX19O2lmKHlbIiFyZWYiXSl7dmFyIFdlPWFhKHlbIiFyZWYiXSk7''@;'; put 'put ''emUucy5yPU1hdGgubWluKHplLnMucixXZS5zLnIpLHplLnMuYz1NYXRoLm1pbih6ZS5zLmMsV2Uucy5jKSx6ZS5lLnI9TWF0aC5tYXgoemUuZS5yLFdlLmUuciksemUuZS5jPU1hdGgubWF4KHplLmUuYyxXZS5lLmMpLC0xPT1iZSYmKHplLmUucj1iZT1XZS5lLnIrMSl9dmFyIHJ0PVtdLGx0''@;'; put 'put ''PTAsQ3Q9eVsiIXJvd3MiXXx8KHlbIiFyb3dzIl09W10pLGF0PTAsdnQ9MCxQdD0wLGt0PTAsRHQ9MCxadD0wO2Zvcih5WyIhY29scyJdfHwoeVsiIWNvbHMiXT1bXSk7YXQ8WC5sZW5ndGgmJnZ0PFZlOysrYXQpe2Zvcih2YXIgZ249WFthdF0sJG49Z24ucGFyZW50RWxlbWVudDsiVEFCTEUi''@;'; put 'put ''IT0kbi50YWdOYW1lLnRvVXBwZXJDYXNlKCk7KSRuPSRuLnBhcmVudEVsZW1lbnQ7aWYoJG49PVApe2U6aWYodHlwZW9mIG5lPCJ1Iil7dmFyIGNuPW5lKGduKTtpZihudWxsPT1jbilicmVhayBlO2lmKGNuLnN0eWxlfHwoY24uc3R5bGU9e30pLGZlLmRpc3BsYXkmJiJub25lIj09KGNuLmRp''@;'; put 'put ''c3BsYXl8fGNuLnN0eWxlLmRpc3BsYXkpKWNvbnRpbnVlOyJub25lIj09KGNuLmRpc3BsYXl8fGNuLnN0eWxlLmRpc3BsYXkpJiYoKEN0W3Z0XXx8KEN0W3Z0XT17fSkpLmhpZGRlbj0hMCl9dmFyIFhuPWduLmNlbGxzO2ZvcihQdD1rdD0wO1B0PFhuLmxlbmd0aDsrK1B0KXt2YXIgQm49WG5b''@;'; put 'put ''UHRdLERuPW51bGw7aWYoISh0eXBlb2YgbmU8InUiJiYobnVsbD09RG4mJihEbj1uZShCbikpLERuLnN0eWxlfHwoRG4uc3R5bGU9e30pLGZlLmRpc3BsYXkmJm51bGwhPURuJiYibm9uZSI9PShEbi5kaXNwbGF5fHxEbi5zdHlsZS5kaXNwbGF5KSkpKXtmb3IoWnQ9K0JuLmdldEF0dHJpYnV0''@;'; put 'put ''ZSgiY29sc3BhbiIpfHwxLGx0PTA7bHQ8cnQubGVuZ3RoOysrbHQpe3ZhciBRbj1ydFtsdF07UW4ucy5jPT1rdCt2ZSYmUW4ucy5yPHZ0K2JlJiZ2dCtiZTw9UW4uZS5yJiYoa3Q9UW4uZS5jKzEtdmUsbHQ9LTEpfSgoRHQ9K0JuLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpfHwxKT4xfHxadD4x''@;'; put 'put ''KSYmcnQucHVzaCh7czp7cjp2dCtiZSxjOmt0K3ZlfSxlOntyOnZ0K2JlKyhEdHx8MSktMSxjOmt0K3ZlKyhadHx8MSktMX19KTt2YXIgZXI9Qm4uZ2V0QXR0cmlidXRlKCJ0Iil8fCIiLHpuPUJuLmdldEF0dHJpYnV0ZSgiYmdjb2xvciIpO2U6aWYodHlwZW9mIG5lPCJ1Iil7aWYobnVsbD09''@;'; put 'put ''RG4mJihEbj1uZShCbikpLG51bGw9PURuKWJyZWFrIGU7aWYoRG4uc3R5bGV8fChEbi5zdHlsZT17fSksMT09WnQmJkRuLndpZHRoJiYoeVsiIWNvbHMiXVtrdCt2ZV09eVsiIWNvbHMiXVtrdCt2ZV18fHt9LERuLndpZHRoLm1hdGNoKC9weC8pP3lbIiFjb2xzIl1ba3QrdmVdLndweD1NYXRo''@;'; put 'put ''Lm1heChwYXJzZUludChEbi53aWR0aCwxMCkrNSx5WyIhY29scyJdW2t0K3ZlXS53cHh8fDApOkRuLndpZHRoLm1hdGNoKC9wdC8pJiYoeVsiIWNvbHMiXVtrdCt2ZV0ud3B4PU1hdGgubWF4KDQqcGFyc2VJbnQoRG4ud2lkdGgsMTApLzMrNSx5WyIhY29scyJdW2t0K3ZlXS53cHh8fDApKSks''@;'; put 'put ''RHQ8PTEpe0N0W3Z0K2JlXXx8KEN0W3Z0K2JlXT17fSk7dmFyIEtyPURuLmhlaWdodDsoS3I9S3IubWF0Y2goL3B0Lyk/Y2QocGFyc2VJbnQoS3IsMTApKTpwYXJzZUludChLciwxMCkpPihDdFt2dCtiZV0uaHB4fHxjZChDdFt2dCtiZV0uaHB0KXx8MCkmJihkZWxldGUgQ3RbdnQrYmVdLmhw''@;'; put 'put ''dCxDdFt2dCtiZV0uaHB4PUtyKX19dmFyIGlpPUJuO2lmKEJuLmZpcnN0RWxlbWVudENoaWxkJiYxPT1Cbi5jaGlsZHJlbi5sZW5ndGgmJiJzcGFuIj09Qm4uZmlyc3RFbGVtZW50Q2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Zm9yKHZhciBFaT0wLE9pPUJuLmNoaWxkTm9kZXMsdGk9''@;'; put 'put ''MDt0aTxPaS5sZW5ndGg7Kyt0aSkzPT1PaVt0aV0ubm9kZVR5cGUmJisrRWk7MD09RWkmJihCbj1Cbi5maXJzdEVsZW1lbnRDaGlsZCl9dmFyIGZyPXh2KEJuLGlpLGVyLDAsZmUpO2lmKERuKXt2YXIgQW49bmUoQm4pO2lmKEFuJiYhQW4uc3R5bGUmJihBbi5zdHlsZT17fSksKEFuJiZBblsi''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvciJdfHxEblsiYmFja2dyb3VuZC1jb2xvciJdKSYmKGZyLnN8fChmci5zPXt9KSwhZnIucy5mZ0NvbG9yKSl0cnl7dmFyIHdyPUFuJiZBblsiYmFja2dyb3VuZC1jb2xvciJdfHxEblsiYmFja2dyb3VuZC1jb2xvciJdO3dyLm1hdGNoKC9yZ2JhWyhdXHMqMC4qWyld''@;'; put 'put ''L2kpJiYod3I9RG5bImJhY2tncm91bmQtY29sb3IiXSk7dmFyIHJyPUlnKHdyLnRvTG93ZXJDYXNlKCksITApO3JyPj0wJiYoZnIucy5mZ0NvbG9yPXtyZ2I6cnJ9KX1jYXRjaHt9c3dpdGNoKERuWyJ2ZXJ0aWNhbC1hbGlnbiJdKXtjYXNlIm1pZGRsZSI6Y2FzZSJiYXNlbGluZSI6ZnIuc3x8''@;'; put 'put ''KGZyLnM9e30pLGZyLnMuYWxpZ25tZW50fHwoZnIucy5hbGlnbm1lbnQ9e30pLGZyLnMuYWxpZ25tZW50LnZlcnRpY2FsPSJjZW50ZXIifX1pZih6biYmKGZyLnN8fChmci5zPXt9KSwhZnIucy5mZ0NvbG9yKSl0cnl7dmFyIEVuPUlnKHpuLnRvTG93ZXJDYXNlKCksITApO0VuPj0wJiYoZnIu''@;'; put 'put ''cy5mZ0NvbG9yPXtyZ2I6RW59KX1jYXRjaHt9aWYoZmUuZGVuc2U/KHlbdnQrYmVdfHwoeVt2dCtiZV09W10pLHlbdnQrYmVdW2t0K3ZlXT1mcik6eVtBaSh7YzprdCt2ZSxyOnZ0K2JlfSldPWZyLER0PjF8fFp0PjEpZm9yKHZhciBDcj12dDtDcjx2dCtEdDsrK0NyKWZvcih2YXIgYmk9a3Q7''@;'; put 'put ''Ymk8a3QrWnQ7KytiaSl2dD09Q3ImJmt0PT1iaXx8KGZlLmRlbnNlPyh5W0NyK2JlXXx8KHlbQ3IrYmVdPVtdKSx5W0NyK2JlXVtiaSt2ZV09e3Q6InoiLHM6S3QoZnIuc3x8e30pfSk6eVtBaSh7YzpiaSt2ZSxyOkNyK2JlfSldPXt0OiJ6IixzOkt0KGZyLnN8fHt9KX0pO3plLmUuYzxrdCt2''@;'; put 'put ''ZSYmKHplLmUuYz1rdCt2ZSksa3QrPVp0fX0rK3Z0fX1pZihydC5sZW5ndGgmJih5WyIhbWVyZ2VzIl09KHlbIiFtZXJnZXMiXXx8W10pLmNvbmNhdChydCkpLHplLmUucj1NYXRoLm1heCh6ZS5lLnIsdnQtMStiZSkseVsiIXJlZiJdPURpKHplKSx2dD49VmUmJih5WyIhZnVsbHJlZiJdPURp''@;'; put 'put ''KCh6ZS5lLnI9WC5sZW5ndGgtYXQrdnQtMStiZSx6ZSkpKSxmZS5ib3JkZXJzKWZvcih2dD16ZS5zLnI7dnQ8PXplLmUucjsrK3Z0KWZvcihrdD16ZS5zLmM7a3Q8PXplLmUuYzsrK2t0KWlmKCFmZS5kZW5zZSl7dmFyIHFyPXlbQWkoe3I6dnQsYzprdH0pXTtpZighcXJ8fCFxci5zKWNvbnRp''@;'; put 'put ''bnVlO2lmKHZ0PjApe3ZhciBVaT15W0FpKHtyOnZ0LTEsYzprdH0pXTtVaSYmVWkucyYmVWkucy5ib3R0b20mJmRlbGV0ZSBxci5zLnRvcH1pZihrdD4wKXt2YXIgTG89eVtBaSh7cjp2dCxjOmt0LTF9KV07TG8mJkxvLnMmJkxvLnMuYm90dG9tJiZkZWxldGUgcXIucy5sZWZ0fX1yZXR1cm4g''@;'; put 'put ''eX1mdW5jdGlvbiBPQih5LFApe3JldHVybiBFdigoUHx8e30pLmRlbnNlP1tdOnt9LHksUCl9dmFyIFZDPWZ1bmN0aW9uKCl7dmFyIHk9ZnVuY3Rpb24oWCxuZSxmZSl7dmFyIGJlPVgucmVwbGFjZSgvW1x0XHJcbl0vZywiICIpLnRyaW0oKS5yZXBsYWNlKC8gKy9nLCIgIikucmVwbGFjZSgv''@;'; put 'put ''PHRleHQ6c1wvPi9nLCIgIikucmVwbGFjZSgvPHRleHQ6cyB0ZXh0OmM9IihcZCspIlwvPi9nLGZ1bmN0aW9uKHplLFdlKXtyZXR1cm4gQXJyYXkocGFyc2VJbnQoV2UsMTApKzEpLmpvaW4oIiAiKX0pLnJlcGxhY2UoLzx0ZXh0OnRhYltePl0qXC8+L2csIlx0IikucmVwbGFjZSgvPHRleHQ6''@;'; put 'put ''bGluZS1icmVha1wvPi9nLCJcbiIpLHZlPWhyKGJlLnJlcGxhY2UoLzxbXj5dKj4vZywiIikpLHllPVtdLFZlPTA7cmV0dXJuIGJlLnJlcGxhY2UoLyg8dGV4dDpzcGFuLio/PikoLio/KTxbXC9ddGV4dDpzcGFuPi9nLGZ1bmN0aW9uKHplLFdlLHJ0LGx0KXtsdCE9VmUmJnllLnB1c2goe3Q6''@;'; put 'put ''InMiLHY6aHIoYmUuc2xpY2UoVmUsbHQpKX0pO3ZhciBDdD17dDoicyIsdjpocihydCl9LGF0PWFuKFdlKVsic3R5bGUtbmFtZSJdO3JldHVybiBhdCYmZmVbYXRdJiYoQ3Qucz1LdChmZVthdF0pKSx5ZS5wdXNoKEN0KSxWZT1sdCt6ZS5sZW5ndGgsIiJ9KSxWZTxiZS5sZW5ndGgmJnllLnB1''@;'; put 'put ''c2goe3Q6InMiLHY6aHIoYmUuc2xpY2UoVmUpKX0pLFt2ZSx5ZV19LFA9e2RheTpbImQiLCJkZCJdLG1vbnRoOlsibSIsIm1tIl0seWVhcjpbInkiLCJ5eSJdLGhvdXJzOlsiaCIsImhoIl0sbWludXRlczpbIm0iLCJtbSJdLHNlY29uZHM6WyJzIiwic3MiXSwiYW0tcG0iOlsiQS9QIiwiQU0v''@;'; put 'put ''UE0iXSwiZGF5LW9mLXdlZWsiOlsiZGRkIiwiZGRkZCJdLGVyYTpbImUiLCJlZSJdLHF1YXJ0ZXI6WyJcXFFtIiwnbVxcInRoIHF1YXJ0ZXIiJ119LEw9ZnVuY3Rpb24oWCxuZSl7dmFyIGZlPWFuKFguc2xpY2UoMCxYLmluZGV4T2YoIj4iKSkpLGJlPVguc2xpY2UoWC5pbmRleE9mKCI+Iikr''@;'; put 'put ''MSksdmU9e25hbWU6ZmUubmFtZSxmYW1pbHk6ZmUuZmFtaWx5fTtbWyJwYXJlbnQiLCJwYXJlbnQtc3R5bGUtbmFtZSJdLFsiZGF0YW5hbWUiLCJkYXRhLXN0eWxlLW5hbWUiXSxbIm1wbmFtZSIsIm1hc3Rlci1wYWdlLW5hbWUiXV0uZm9yRWFjaChmdW5jdGlvbihWZSl7ZmVbVmVbMV1dJiYo''@;'; put 'put ''dmVbVmVbMF1dPWZlW1ZlWzFdXSl9KTt2YXIgeWU9e307YmUucmVwbGFjZShYdCxmdW5jdGlvbihWZSl7dmFyIHplPWFuKFZlKTtpZigiPHN0eWxlOnRleHQtcHJvcGVydGllcyI9PT16ZVswXSl7aWYoemVbImZvbnQtd2VpZ2h0Il0mJih5ZS5ib2xkPSsoImJvbGQiPT16ZVsiZm9udC13ZWln''@;'; put 'put ''aHQiXXx8IjcwMCI9PXplWyJmb250LXdlaWdodCJdKSksKCJpdGFsaWMiPT16ZVsiZm9udC1zdHlsZSJdfHwib2JsaXF1ZSI9PXplWyJmb250LXN0eWxlIl0pJiYoeWUuaXRhbGljPTEpLCJub25lIiE9KHplWyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSIpP3llLnVuZGVybGluZT0i''@;'; put 'put ''ZG91YmxlIj09emVbInRleHQtdW5kZXJsaW5lLXR5cGUiXT8yOjE6KHplWyJ0ZXh0LXVuZGVybGluZS1zdHlsZSJdfHwibm9uZSI9PXplWyJ0ZXh0LXVuZGVybGluZS10eXBlIl0pJiYoeWUudW5kZXJsaW5lPTApLCh6ZVsiZm9udC1zaXplIl18fCIiKS5tYXRjaCgvcHQkLykmJih5ZS5zej0r''@;'; put 'put ''emVbImZvbnQtc2l6ZSJdLnJlcGxhY2UoInB0IiwiIikpLCJub25lIiE9KHplWyJ0ZXh0LWxpbmUtdGhyb3VnaC1zdHlsZSJdfHwibm9uZSIpJiYoeWUuc3RyaWtlPTEpLHplWyJmb250LW5hbWUiXSYmKHllLm5hbWU9emVbImZvbnQtbmFtZSJdKSx6ZS5jb2xvcil7dmFyIFdlPUlnKHplLmNv''@;'; put 'put ''bG9yLCEwKTtXZT49MCYmKHllLmNvbG9yPVdlKX1zd2l0Y2goemVbInRleHQtcG9zaXRpb24iXSl7Y2FzZSJzdXBlciI6eWUudmFsaWduPSJzdXBlciI7YnJlYWs7Y2FzZSJzdWIiOnllLnZhbGlnbj0ic3ViIjticmVhaztkZWZhdWx0Oih6ZVsidGV4dC1wb3NpdGlvbiJdfHwiIikubWF0Y2go''@;'; put 'put ''LyUvKSYmKHllLnZhbGlnbj0iLSI9PXplWyJ0ZXh0LXBvc2l0aW9uIl0uY2hhckF0KDApPyJzdWIiOiJzdXBlciIpfSJub25lIiE9KHplWyJ0ZXh0LXNoYWRvdyJdfHwibm9uZSIpJiYoeWUuc2hhZG93PTEpfXJldHVybiIifSksbmVbZmUubmFtZV09eWV9O3JldHVybiBmdW5jdGlvbihuZSxm''@;'; put 'put ''ZSl7dmFyIGJlPWZlfHx7fTtudWxsIT1lZSYmbnVsbD09YmUuZGVuc2UmJihiZS5kZW5zZT1lZSk7dmFyIFZlLHplLEN0LGF0LER0LFp0LHZlPUxDKG5lKSx5ZT1bXSxXZT17bmFtZToiIn0scnQ9IiIsbHQ9MCx2dD17fSxQdD1bXSxrdD1iZS5kZW5zZT9bXTp7fSxnbj17dmFsdWU6IiJ9LCRu''@;'; put 'put ''PSIiLGNuPTAsQm49W10sRG49LTEsUW49LTEsZXI9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAsYzowfX0sem49MCxLcj17fSxpaT1bXSxFaT17fSxPaT0wLHRpPTAsZnI9W10sQW49MSx3cj0xLHJyPVtdLEVuPXtOYW1lczpbXX0sQ3I9e30sYmk9WyIiLCIiXSxxcj1bXSxVaT17fSxMbz17fSxJ''@;'; put 'put ''aT0wLHNzPSIiLHVvPTAsTm89ITEsRW89ITEsYWk9MDtmb3IoWGcubGFzdEluZGV4PTAsdmU9dmUucmVwbGFjZSgvPCEtLShbXHNcU10qPyktLT4vZ20sIiIpLnJlcGxhY2UoLzwhRE9DVFlQRVteXFtdKlxbW15cXV0qXF0+L2dtLCIiKTtEdD1YZy5leGVjKHZlKTspc3dpdGNoKER0WzNdPUR0''@;'; put 'put ''WzNdLnJlcGxhY2UoL18uKiQvLCIiKSl7Y2FzZSJ0YWJsZSI6Y2FzZSJcdTVkZTVcdTRmNWNcdTg4NjgiOiIvIj09PUR0WzFdPyhrdFsiIXJlZiJdPWVyLmUuYz49ZXIucy5jJiZlci5lLnI+PWVyLnMucj9EaShlcik6IkExOkExIixiZS5zaGVldFJvd3M+MCYmYmUuc2hlZXRSb3dzPD1lci5l''@;'; put 'put ''LnImJihrdFsiIWZ1bGxyZWYiXT1rdFsiIXJlZiJdLGVyLmUucj1iZS5zaGVldFJvd3MtMSxrdFsiIXJlZiJdPURpKGVyKSksaWkubGVuZ3RoJiYoa3RbIiFtZXJnZXMiXT1paSksZnIubGVuZ3RoJiYoa3RbIiFyb3dzIl09ZnIpLEN0Lm5hbWU9Q3QuXHU1NDBkXHU3OWYwfHxDdC5uYW1lLHR5''@;'; put 'put ''cGVvZiBKU09OPCJ1IiYmSlNPTi5zdHJpbmdpZnkoQ3QpLFB0LnB1c2goQ3QubmFtZSksdnRbQ3QubmFtZV09a3QsRW89ITEpOiIvIiE9PUR0WzBdLmNoYXJBdChEdFswXS5sZW5ndGgtMikmJihDdD1hbihEdFswXSwhMSksRG49UW49LTEsZXIucy5yPWVyLnMuYz0xZTcsZXIuZS5yPWVyLmUu''@;'; put 'put ''Yz0wLGt0PWJlLmRlbnNlP1tdOnt9LGlpPVtdLGZyPVtdLEVvPSEwKTticmVhaztjYXNlInRhYmxlLXJvdy1ncm91cCI6Ii8iPT09RHRbMV0/LS16bjorK3puO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIlx1ODg0YyI6aWYoIi8iPT09RHRbMV0pe0RuKz1BbixBbj0xO2JyZWFrfWlmKChh''@;'; put 'put ''dD1hbihEdFswXSwhMSkpLlx1ODg0Y1x1NTNmNz9Ebj1hdC5cdTg4NGNcdTUzZjctMTotMT09RG4mJihEbj0wKSwoQW49K2F0WyJudW1iZXItcm93cy1yZXBlYXRlZCJdfHwxKTwxMClmb3IoYWk9MDthaTxBbjsrK2FpKXpuPjAmJihmcltEbithaV09e2xldmVsOnpufSk7UW49LTE7YnJlYWs7''@;'; put 'put ''Y2FzZSJjb3ZlcmVkLXRhYmxlLWNlbGwiOiIvIiE9PUR0WzFdJiYrK1FuLGJlLnNoZWV0U3R1YnMmJihiZS5kZW5zZT8oa3RbRG5dfHwoa3RbRG5dPVtdKSxrdFtEbl1bUW5dPXt0OiJ6In0pOmt0W0FpKHtyOkRuLGM6UW59KV09e3Q6InoifSksJG49IiIsQm49W107YnJlYWs7Y2FzZSJ0YWJs''@;'; put 'put ''ZS1jZWxsIjpjYXNlIlx1NjU3MFx1NjM2ZSI6aWYoIi8iPT09RHRbMF0uY2hhckF0KER0WzBdLmxlbmd0aC0yKSkrK1FuLGduPWFuKER0WzBdLCExKSx3cj1wYXJzZUludChnblsibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxadD17dDoieiIsdjpudWxsfSxnbi5mb3JtdWxh''@;'; put 'put ''JiYwIT1iZS5jZWxsRm9ybXVsYSYmKFp0LmY9V3coaHIoZ24uZm9ybXVsYSkpKSwic3RyaW5nIj09KGduLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8Z25bInZhbHVlLXR5cGUiXSkmJihadC50PSJzIixadC52PWhyKGduWyJzdHJpbmctdmFsdWUiXXx8IiIpLGJlLmRlbnNlPyhrdFtEbl18''@;'; put 'put ''fChrdFtEbl09W10pLGt0W0RuXVtRbl09WnQpOmt0W0FpKHtyOkRuLGM6UW59KV09WnQpLFFuKz13ci0xO2Vsc2UgaWYoIi8iIT09RHRbMV0pe3dyPTE7dmFyIEtzPUFuP0RuK0FuLTE6RG47aWYoKytRbj5lci5lLmMmJihlci5lLmM9UW4pLFFuPGVyLnMuYyYmKGVyLnMuYz1RbiksRG48ZXIu''@;'; put 'put ''cy5yJiYoZXIucy5yPURuKSxLcz5lci5lLnImJihlci5lLnI9S3MpLHFyPVtdLFVpPXt9LFp0PXt0Oihnbj1hbihEdFswXSwhMSkpLlx1NjU3MFx1NjM2ZVx1N2M3Ylx1NTc4Ynx8Z25bInZhbHVlLXR5cGUiXSx2Om51bGx9LGJlLmNlbGxGb3JtdWxhKWlmKGduLmZvcm11bGEmJihnbi5mb3Jt''@;'; put 'put ''dWxhPWhyKGduLmZvcm11bGEpKSxnblsibnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQiXSYmZ25bIm51bWJlci1tYXRyaXgtcm93cy1zcGFubmVkIl0mJihPaT1wYXJzZUludChnblsibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsdGk9cGFyc2VJbnQoZ25bIm51bWJl''@;'; put 'put ''ci1tYXRyaXgtY29sdW1ucy1zcGFubmVkIl0sMTApfHwwLFp0LkY9RGkoRWk9e3M6e3I6RG4sYzpRbn0sZTp7cjpEbitPaS0xLGM6UW4rdGktMX19KSxyci5wdXNoKFtFaSxadC5GXSkpLGduLmZvcm11bGEpWnQuZj1Xdyhnbi5mb3JtdWxhKTtlbHNlIGZvcihhaT0wO2FpPHJyLmxlbmd0aDsr''@;'; put 'put ''K2FpKURuPj1yclthaV1bMF0ucy5yJiZEbjw9cnJbYWldWzBdLmUuciYmUW4+PXJyW2FpXVswXS5zLmMmJlFuPD1yclthaV1bMF0uZS5jJiYoWnQuRj1yclthaV1bMV0pO3N3aXRjaCgoZ25bIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8Z25bIm51bWJlci1yb3dzLXNwYW5uZWQiXSkmJihP''@;'; put 'put ''aT1wYXJzZUludChnblsibnVtYmVyLXJvd3Mtc3Bhbm5lZCJdLDEwKXx8MCx0aT1wYXJzZUludChnblsibnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxpaS5wdXNoKEVpPXtzOntyOkRuLGM6UW59LGU6e3I6RG4rT2ktMSxjOlFuK3RpLTF9fSkpLGduWyJudW1iZXItY29sdW1ucy1y''@;'; put 'put ''ZXBlYXRlZCJdJiYod3I9cGFyc2VJbnQoZ25bIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl0sMTApKSxadC50KXtjYXNlImJvb2xlYW4iOlp0LnQ9ImIiLFp0LnY9UnIoZ25bImJvb2xlYW4tdmFsdWUiXSk7YnJlYWs7Y2FzZSJmbG9hdCI6Y2FzZSJwZXJjZW50YWdlIjpjYXNlImN1cnJlbmN5''@;'; put 'put ''IjpadC50PSJuIixadC52PXBhcnNlRmxvYXQoZ24udmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6WnQudD0iZCIsWnQudj1GdChnblsiZGF0ZS12YWx1ZSJdKSxiZS5jZWxsRGF0ZXN8fChadC50PSJuIixadC52PVplKFp0LnYpKSxadC56PSJtL2QveXkiO2JyZWFrO2Nhc2UidGltZSI6WnQudD0i''@;'; put 'put ''biIsWnQudj1pdChnblsidGltZS12YWx1ZSJdKS84NjQwMCxiZS5jZWxsRGF0ZXMmJihadC50PSJkIixadC52PWN0KFp0LnYpKSxadC56PSJISDpNTTpTUyI7YnJlYWs7Y2FzZSJudW1iZXIiOlp0LnQ9Im4iLFp0LnY9cGFyc2VGbG9hdChnbi5cdTY1NzBcdTYzNmVcdTY1NzBcdTUwM2MpO2Jy''@;'; put 'put ''ZWFrO2RlZmF1bHQ6aWYoInN0cmluZyIhPT1adC50JiYidGV4dCIhPT1adC50JiZadC50KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSAiK1p0LnQpO1p0LnQ9InMiLG51bGwhPWduWyJzdHJpbmctdmFsdWUiXSYmKCRuPWhyKGduWyJzdHJpbmctdmFsdWUiXSksQm49''@;'; put 'put ''W10pfX1lbHNle2lmKE5vPSExLCJzIj09PVp0LnQmJihadC52PSRufHwiIixCbi5sZW5ndGgmJihadC5SPUJuKSxObz0wPT1jbiksQ3IuVGFyZ2V0JiYoWnQubD1DcikscXIubGVuZ3RoPjAmJihadC5jPXFyLHFyPVtdKSwkbiYmITEhPT1iZS5jZWxsVGV4dCYmKFp0Lnc9JG4pLE5vJiYoWnQu''@;'; put 'put ''dD0ieiIsZGVsZXRlIFp0LnYpLGJlLmNlbGxIVE1MJiYoWnQuaD1adC5SP1djKFp0LlIpOlhpKCIiK1p0LnYpKSwoIU5vfHxiZS5zaGVldFN0dWJzKSYmIShiZS5zaGVldFJvd3MmJmJlLnNoZWV0Um93czw9RG4pKWZvcih2YXIgTW49MDtNbjxBbjsrK01uKXtpZih3cj1wYXJzZUludChnblsi''@;'; put 'put ''bnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxiZS5kZW5zZSlmb3Ioa3RbRG4rTW5dfHwoa3RbRG4rTW5dPVtdKSxrdFtEbitNbl1bUW5dPTA9PU1uP1p0Okt0KFp0KTstLXdyPjA7KWt0W0RuK01uXVtRbit3cl09S3QoWnQpO2Vsc2UgZm9yKGt0W0FpKHtyOkRuK01uLGM6UW59''@;'; put 'put ''KV09WnQ7LS13cj4wOylrdFtBaSh7cjpEbitNbixjOlFuK3dyfSldPUt0KFp0KTtlci5lLmM8PVFuJiYoZXIuZS5jPVFuKX1Rbis9KHdyPXBhcnNlSW50KGduWyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdfHwiMSIsMTApKS0xLHdyPTAsWnQ9e30sJG49IiIsQm49W119Q3I9e307YnJlYWs7''@;'; put 'put ''Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIlx1NzUzNVx1NWI1MFx1ODg2OFx1NjgzY1x1NjU4N1x1Njg2MyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSJcdTRlM2JcdTRmNTMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xz''@;'; put 'put ''IjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKCIvIj09PUR0WzFdKXtpZigoVmU9eWUucG9wKCkpWzBdIT09RHRbM10pdGhyb3ciQmFkIHN0YXRlOiAiK1ZlfWVsc2UiLyIhPT1EdFswXS5jaGFyQXQoRHRbMF0ubGVuZ3RoLTIpJiZ5ZS5wdXNoKFtEdFszXSwhMF0pO2JyZWFrO2Nhc2UiYW5ub3Rh''@;'; put 'put ''dGlvbiI6aWYoIi8iPT09RHRbMV0pe2lmKChWZT15ZS5wb3AoKSlbMF0hPT1EdFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrVmU7VWkudD0kbixCbi5sZW5ndGgmJihVaS5SPUJuKSxVaS5hPXNzLHFyLnB1c2goVWkpfWVsc2UiLyIhPT1EdFswXS5jaGFyQXQoRHRbMF0ubGVuZ3RoLTIpJiZ5ZS5w''@;'; put 'put ''dXNoKFtEdFszXSwhMV0pO3NzPSIiLHVvPTAsJG49IiIsY249MCxCbj1bXTticmVhaztjYXNlImNyZWF0b3IiOiIvIj09PUR0WzFdP3NzPXZlLnNsaWNlKHVvLER0LmluZGV4KTp1bz1EdC5pbmRleCtEdFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJtZXRhIjpjYXNlIlx1NTE0M1x1NjU3MFx1NjM2''@;'; put 'put ''ZSI6Y2FzZSJzZXR0aW5ncyI6Y2FzZSJjb25maWctaXRlbS1zZXQiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLWluZGV4ZWQiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLWVudHJ5IjpjYXNlImNvbmZpZy1pdGVtLW1hcC1uYW1lZCI6Y2FzZSJzaGFwZXMiOmNhc2UiZnJhbWUiOmNhc2UidGV4dC1ib3gi''@;'; put 'put ''OmNhc2UiaW1hZ2UiOmNhc2UiZGF0YS1waWxvdC10YWJsZXMiOmNhc2UibGlzdC1zdHlsZSI6Y2FzZSJmb3JtIjpjYXNlImRkZS1saW5rcyI6Y2FzZSJldmVudC1saXN0ZW5lcnMiOmNhc2UiY2hhcnQiOmlmKCIvIj09PUR0WzFdKXtpZigoVmU9eWUucG9wKCkpWzBdIT09RHRbM10pdGhyb3ci''@;'; put 'put ''QmFkIHN0YXRlOiAiK1ZlfWVsc2UiLyIhPT1EdFswXS5jaGFyQXQoRHRbMF0ubGVuZ3RoLTIpJiZ5ZS5wdXNoKFtEdFszXSwhMV0pOyRuPSIiLGNuPTAsQm49W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiY3VycmVuY3ktc3R5bGUi''@;'; put 'put ''OmNhc2Uic2NyaXB0IjpjYXNlImxpYnJhcmllcyI6Y2FzZSJhdXRvbWF0aWMtc3R5bGVzIjpjYXNlImRlZmF1bHQtc3R5bGUiOmNhc2UicGFnZS1sYXlvdXQiOmNhc2UibWFwIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJwYXJhZ3JhcGgtcHJvcGVydGllcyI6Y2FzZSJ0YWJsZS1wcm9wZXJ0aWVz''@;'; put 'put ''IjpjYXNlInRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLXJvdy1wcm9wZXJ0aWVzIjpjYXNlInRhYmxlLWNlbGwtcHJvcGVydGllcyI6Y2FzZSJmcmFjdGlvbiI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlImJvb2xlYW4iOmNhc2UidGV4dC1zdHlsZSI6Y2FzZSJ0ZXh0LWNv''@;'; put 'put ''bnRlbnQiOmNhc2UidGV4dC1wcm9wZXJ0aWVzIjpjYXNlImVtYmVkZGVkLXRleHQiOmNhc2UiYm9keSI6Y2FzZSJcdTc1MzVcdTViNTBcdTg4NjhcdTY4M2MiOmNhc2UiZm9ybXMiOmNhc2UidGFibGUtY29sdW1uIjpjYXNlInRhYmxlLWhlYWRlci1yb3dzIjpjYXNlInRhYmxlLXJvd3MiOmNh''@;'; put 'put ''c2UidGFibGUtY29sdW1uLWdyb3VwIjpjYXNlInRhYmxlLWhlYWRlci1jb2x1bW5zIjpjYXNlInRhYmxlLWNvbHVtbnMiOmNhc2UibnVsbC1kYXRlIjpjYXNlImdyYXBoaWMtcHJvcGVydGllcyI6Y2FzZSJjYWxjdWxhdGlvbi1zZXR0aW5ncyI6Y2FzZSJuYW1lZC1leHByZXNzaW9ucyI6Y2Fz''@;'; put 'put ''ZSJsYWJlbC1yYW5nZSI6Y2FzZSJsYWJlbC1yYW5nZXMiOmNhc2UibmFtZWQtZXhwcmVzc2lvbiI6Y2FzZSJzb3J0IjpjYXNlInNvcnQtYnkiOmNhc2Uic29ydC1ncm91cHMiOmNhc2UidGFiIjpjYXNlImxpbmUtYnJlYWsiOmNhc2Uic3BhbiI6Y2FzZSJzIjpjYXNlImRhdGUiOmNhc2Uib2Jq''@;'; put 'put ''ZWN0IjpjYXNlInRpdGxlIjpjYXNlIlx1NjgwN1x1OTg5OCI6Y2FzZSJkZXNjIjpjYXNlImJpbmFyeS1kYXRhIjpjYXNlInRhYmxlLXNvdXJjZSI6Y2FzZSJzY2VuYXJpbyI6Y2FzZSJpdGVyYXRpb24iOmNhc2UiY29udGVudC12YWxpZGF0aW9ucyI6Y2FzZSJjb250ZW50LXZhbGlkYXRpb24i''@;'; put 'put ''OmNhc2UiaGVscC1tZXNzYWdlIjpjYXNlImVycm9yLW1lc3NhZ2UiOmNhc2UiZGF0YWJhc2UtcmFuZ2VzIjpjYXNlImZpbHRlciI6Y2FzZSJmaWx0ZXItYW5kIjpjYXNlImZpbHRlci1vciI6Y2FzZSJmaWx0ZXItY29uZGl0aW9uIjpjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpjYXNl''@;'; put 'put ''Imxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIjpjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2Fz''@;'; put 'put ''ZSJzZW5kZXItZW1haWwiOmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVyLWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29k''@;'; put 'put ''ZSI6Y2FzZSJzZW5kZXItY291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UiOmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6Y2Fz''@;'; put 'put ''ZSJldmVudC1saXN0ZW5lciI6Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24tZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2Ui''@;'; put 'put ''ZWRpdGluZy1jeWNsZXMiOmNhc2UiY29uZmlnLWl0ZW0iOmNhc2UicGFnZS1udW1iZXIiOmNhc2UicGFnZS1jb3VudCI6Y2FzZSJ0aW1lIjpjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpjYXNlImRldGVjdGl2ZSI6Y2FzZSJvcGVyYXRpb24iOmNhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmNhc2Ui''@;'; put 'put ''ZGF0YS1waWxvdC10YWJsZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Utc2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2Fz''@;'; put 'put ''ZSJkYXRhLXBpbG90LW1lbWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6''@;'; put 'put ''Y2FzZSJkYXRhLXBpbG90LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpjYXNlInJlY3QiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUt''@;'; put 'put ''c291cmNlIjpjYXNlInByb3BlcnRpZXMiOmNhc2UicHJvcGVydHkiOmNhc2UidGFibGUtcHJvdGVjdGlvbiI6Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlInBlcmNlbnRh''@;'; put 'put ''Z2Utc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjppZigiLyI9PT1EdFsxXSl7aWYoS3JbV2UubmFtZV09cnQsKFZlPXllLnBvcCgpKVswXSE9PUR0WzNdKXRocm93IkJhZCBzdGF0ZTogIitWZX1lbHNlIi8iIT09RHRbMF0uY2hhckF0KER0WzBdLmxlbmd0aC0yKSYm''@;'; put 'put ''KHJ0PSIiLFdlPWFuKER0WzBdLCExKSx5ZS5wdXNoKFtEdFszXSwhMF0pKTticmVhaztjYXNlInN0eWxlIjoiLz4iPT09RHRbMF0uc2xpY2UoLTIpP0woRHRbMF0sTG8pOiIvIj09RHRbMV0/TCh2ZS5zbGljZShJaSxEdC5pbmRleCtEdFswXS5sZW5ndGgpLExvKTpJaT1EdC5pbmRleDticmVh''@;'; put 'put ''aztjYXNlIm51bWJlciI6Y2FzZSJkYXkiOmNhc2UibW9udGgiOmNhc2UieWVhciI6Y2FzZSJlcmEiOmNhc2UiZGF5LW9mLXdlZWsiOmNhc2Uid2Vlay1vZi15ZWFyIjpjYXNlInF1YXJ0ZXIiOmNhc2UiaG91cnMiOmNhc2UibWludXRlcyI6Y2FzZSJzZWNvbmRzIjpjYXNlImFtLXBtIjpzd2l0''@;'; put 'put ''Y2goeWVbeWUubGVuZ3RoLTFdWzBdKXtjYXNlInRpbWUtc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6emU9YW4oRHRbMF0sITEpLHJ0Kz1QW0R0WzNdXVsibG9uZyI9PT16ZS5zdHlsZT8xOjBdfWJyZWFrO2Nhc2UidGV4dCI6aWYoIi8+Ij09PUR0WzBdLnNsaWNlKC0yKSlicmVhaztpZigiLyI9''@;'; put 'put ''PT1EdFsxXSlzd2l0Y2goeWVbeWUubGVuZ3RoLTFdWzBdKXtjYXNlIm51bWJlci1zdHlsZSI6Y2FzZSJkYXRlLXN0eWxlIjpjYXNlInRpbWUtc3R5bGUiOnJ0Kz12ZS5zbGljZShsdCxEdC5pbmRleCl9ZWxzZSBsdD1EdC5pbmRleCtEdFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5n''@;'; put 'put ''ZSI6Ymk9dHYoKHplPWFuKER0WzBdLCExKSlbImNlbGwtcmFuZ2UtYWRkcmVzcyJdKTt2YXIgeXM9e05hbWU6emUubmFtZSxSZWY6YmlbMF0rIiEiK2JpWzFdfTtFbyYmKHlzLlNoZWV0PVB0Lmxlbmd0aCksRW4uTmFtZXMucHVzaCh5cyk7YnJlYWs7Y2FzZSJwIjpjYXNlIlx1NjU4N1x1Njcy''@;'; put 'put ''Y1x1NGUzMiI6aWYoWyJtYXN0ZXItc3R5bGVzIl0uaW5kZXhPZih5ZVt5ZS5sZW5ndGgtMV1bMF0pPi0xKWJyZWFrO2lmKCIvIiE9PUR0WzFdfHxnbiYmZ25bInN0cmluZy12YWx1ZSJdKWFuKER0WzBdLCExKSxjbj1EdC5pbmRleCtEdFswXS5sZW5ndGg7ZWxzZXt2YXIgdXI9eSh2ZS5zbGlj''@;'; put 'put ''ZShjbixEdC5pbmRleCksMCxMbyk7JG49KCRuLmxlbmd0aD4wPyRuKyJcbiI6IiIpK3VyWzBdLEJuPXVyWzFdfWJyZWFrO2Nhc2UiZGF0YWJhc2UtcmFuZ2UiOmlmKCIvIj09PUR0WzFdKWJyZWFrO3RyeXt2dFsoYmk9dHYoYW4oRHRbMF0pWyJ0YXJnZXQtcmFuZ2UtYWRkcmVzcyJdKSlbMF1d''@;'; put 'put ''WyIhYXV0b2ZpbHRlciJdPXtyZWY6YmlbMV19fWNhdGNoe31icmVhaztjYXNlImEiOmlmKCIvIiE9PUR0WzFdKXtpZighKENyPWFuKER0WzBdLCExKSkuaHJlZilicmVhaztDci5UYXJnZXQ9aHIoQ3IuaHJlZiksZGVsZXRlIENyLmhyZWYsIiMiPT1Dci5UYXJnZXQuY2hhckF0KDApJiZDci5U''@;'; put 'put ''YXJnZXQuaW5kZXhPZigiLiIpPi0xPyhiaT10dihDci5UYXJnZXQuc2xpY2UoMSkpLENyLlRhcmdldD0iIyIrYmlbMF0rIiEiK2JpWzFdKTpDci5UYXJnZXQubWF0Y2goL15cLlwuW1xcXC9dLykmJihDci5UYXJnZXQ9Q3IuVGFyZ2V0LnNsaWNlKDMpKX1icmVhaztkZWZhdWx0OnN3aXRjaChE''@;'; put 'put ''dFsyXSl7Y2FzZSJkYzoiOmNhc2UiY2FsY2V4dDoiOmNhc2UibG9leHQ6IjpjYXNlIm9vbzoiOmNhc2UiY2hhcnRvb286IjpjYXNlImRyYXc6IjpjYXNlInN0eWxlOiI6Y2FzZSJjaGFydDoiOmNhc2UiZm9ybToiOmNhc2UidW9mOiI6Y2FzZSJcdTg4Njg6IjpjYXNlIlx1NWI1NzoiOmJyZWFr''@;'; put 'put ''O2RlZmF1bHQ6aWYoYmUuV1RGKXRocm93IG5ldyBFcnJvcihEdCl9fXZhciBsbD17U2hlZXRzOnZ0LFNoZWV0TmFtZXM6UHQsV29ya2Jvb2s6RW59O3JldHVybiBiZS5ib29rU2hlZXRzJiZkZWxldGUgbGwuU2hlZXRzLGxsfX0oKTtmdW5jdGlvbiBpRCh5LFApe3JldHVybiBWQyh5LFApfXZh''@;'; put 'put ''ciBGQj1mdW5jdGlvbigpe3ZhciB5PVsiICA8b2ZmaWNlOm1hc3Rlci1zdHlsZXM+IiwnICAgIDxzdHlsZTptYXN0ZXItcGFnZSBzdHlsZTpuYW1lPSJtcDEiIHN0eWxlOnBhZ2UtbGF5b3V0LW5hbWU9Im1wMSI+JywiICAgICAgPHN0eWxlOmhlYWRlci8+IiwnICAgICAgPHN0eWxlOmhlYWRl''@;'; put 'put ''ci1sZWZ0IHN0eWxlOmRpc3BsYXk9ImZhbHNlIi8+JywiICAgICAgPHN0eWxlOmZvb3Rlci8+IiwnICAgICAgPHN0eWxlOmZvb3Rlci1sZWZ0IHN0eWxlOmRpc3BsYXk9ImZhbHNlIi8+JywiICAgIDwvc3R5bGU6bWFzdGVyLXBhZ2U+IiwiICA8L29mZmljZTptYXN0ZXItc3R5bGVzPiJdLmpv''@;'; put 'put ''aW4oIlxuIiksUD0iPG9mZmljZTpkb2N1bWVudC1zdHlsZXMgIithdSh7InhtbG5zOm9mZmljZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInhtbG5zOnRhYmxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJs''@;'; put 'put ''ZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ4bWxuczpkcmF3IjoidXJuOm9hc2lzOm5hbWVzOnRj''@;'; put 'put ''Om9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIsInhtbG5zOmZvIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAiLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bWxuczpkYyI6Imh0''@;'; put 'put ''dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6bnVtYmVyIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIiwieG1sbnM6c3ZnIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJs''@;'; put 'put ''ZToxLjAiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiwib2ZmaWNlOnZlcnNpb24iOiIxLjIifSkrIj5cbiIreSsiXG48L29mZmljZTpkb2N1bWVudC1zdHlsZXM+IjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUG4rUH19KCksUDY9''@;'; put 'put ''ZnVuY3Rpb24oKXt2YXIgeT1mdW5jdGlvbih2ZSx5ZSl7cmV0dXJuIGJyKHZlKS5yZXBsYWNlKC8gICsvZyxmdW5jdGlvbihWZSl7cmV0dXJuJzx0ZXh0OnMgdGV4dDpjPSInK1ZlLmxlbmd0aCsnIi8+J30pLnJlcGxhY2UoL1x0L2csIjx0ZXh0OnRhYi8+IikucmVwbGFjZSgvXG4vZyx5ZT8i''@;'; put 'put ''PHRleHQ6bGluZS1icmVhay8+IjoiPC90ZXh0OnA+PHRleHQ6cD4iKS5yZXBsYWNlKC9eIC8sIjx0ZXh0OnMvPiIpLnJlcGxhY2UoLyAkLywiPHRleHQ6cy8+Iil9LFA9ZnVuY3Rpb24odmUpe3JldHVybiB2ZS5tYXAoZnVuY3Rpb24oeWUpe3ZhciBWZT0iIjtyZXR1cm4gbnVsbCE9eWUub2Rz''@;'; put 'put ''JiYoVmUrPScgdGV4dDpzdHlsZS1uYW1lPSJUJyt5ZS5vZHMrJyInKSx5ZS52PyI8dGV4dDpzcGFuIitWZSsiPiIreSh5ZS52LCEwKSsiPC90ZXh0OnNwYW4+IjoiIn0pLmpvaW4oIiIpfSxMPSIgICAgICAgICAgPHRhYmxlOnRhYmxlLWNlbGwgLz5cbiIsbmU9ZnVuY3Rpb24odmUseWUsVmUp''@;'; put 'put ''e3ZhciB6ZT1bXTt6ZS5wdXNoKCcgICAgICA8dGFibGU6dGFibGUgdGFibGU6bmFtZT0iJyticih5ZS5TaGVldE5hbWVzW1ZlXSkrJyIgdGFibGU6c3R5bGUtbmFtZT0idGExIj5cbicpO3ZhciBXZT0wLHJ0PTAsbHQ9YWEodmVbIiFyZWYiXXx8IkExIiksQ3Q9dmVbIiFtZXJnZXMiXXx8W10s''@;'; put 'put ''YXQ9MCx2dD1BcnJheS5pc0FycmF5KHZlKTtpZih2ZVsiIWNvbHMiXSlmb3IocnQ9MDtydDw9bHQuZS5jOysrcnQpemUucHVzaCgiICAgICAgICA8dGFibGU6dGFibGUtY29sdW1uIisodmVbIiFjb2xzIl1bcnRdPycgdGFibGU6c3R5bGUtbmFtZT0iY28nK3ZlWyIhY29scyJdW3J0XS5vZHMr''@;'; put 'put ''JyInOiIiKSsiPjwvdGFibGU6dGFibGUtY29sdW1uPlxuIik7dmFyIGt0PXZlWyIhcm93cyJdfHxbXTtmb3IoV2U9MDtXZTxsdC5zLnI7KytXZSl6ZS5wdXNoKCIgICAgICAgIDx0YWJsZTp0YWJsZS1yb3ciKyhrdFtXZV0/JyB0YWJsZTpzdHlsZS1uYW1lPSJybycra3RbV2VdLm9kcysnIic6''@;'; put 'put ''IiIpKyI+PC90YWJsZTp0YWJsZS1yb3c+XG4iKTtmb3IoO1dlPD1sdC5lLnI7KytXZSl7Zm9yKHplLnB1c2goIiAgICAgICAgPHRhYmxlOnRhYmxlLXJvdyIrKGt0W1dlXT8nIHRhYmxlOnN0eWxlLW5hbWU9InJvJytrdFtXZV0ub2RzKyciJzoiIikrIj5cbiIpLHJ0PTA7cnQ8bHQucy5jOysr''@;'; put 'put ''cnQpemUucHVzaChMKTtmb3IoO3J0PD1sdC5lLmM7KytydCl7dmFyIER0PSExLFp0PXt9LGduPSIiO2ZvcihhdD0wO2F0IT1DdC5sZW5ndGg7KythdClpZighKEN0W2F0XS5zLmM+cnR8fEN0W2F0XS5zLnI+V2V8fEN0W2F0XS5lLmM8cnR8fEN0W2F0XS5lLnI8V2UpKXsoQ3RbYXRdLnMuYyE9''@;'; put 'put ''cnR8fEN0W2F0XS5zLnIhPVdlKSYmKER0PSEwKSxadFsidGFibGU6bnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCJdPUN0W2F0XS5lLmMtQ3RbYXRdLnMuYysxLFp0WyJ0YWJsZTpudW1iZXItcm93cy1zcGFubmVkIl09Q3RbYXRdLmUuci1DdFthdF0ucy5yKzE7YnJlYWt9aWYoRHQpemUucHVzaCgi''@;'; put 'put ''ICAgICAgICAgIDx0YWJsZTpjb3ZlcmVkLXRhYmxlLWNlbGwvPlxuIik7ZWxzZXt2YXIgJG49QWkoe3I6V2UsYzpydH0pLGNuPXZ0Pyh2ZVtXZV18fFtdKVtydF06dmVbJG5dO2lmKGNuJiZjbi5mJiYoWnRbInRhYmxlOmZvcm11bGEiXT1icihxcChjbi5mKSksY24uRiYmY24uRi5zbGljZSgw''@;'; put 'put ''LCRuLmxlbmd0aCk9PSRuKSl7dmFyIFhuPWFhKGNuLkYpO1p0WyJ0YWJsZTpudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdPVhuLmUuYy1Ybi5zLmMrMSxadFsidGFibGU6bnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXT1Ybi5lLnItWG4ucy5yKzF9aWYoY24pe3N3aXRjaChjbi50''@;'; put 'put ''KXtjYXNlImIiOmduPWNuLnY/IlRSVUUiOiJGQUxTRSIsWnRbIm9mZmljZTp2YWx1ZS10eXBlIl09ImJvb2xlYW4iLFp0WyJvZmZpY2U6Ym9vbGVhbi12YWx1ZSJdPWNuLnY/InRydWUiOiJmYWxzZSI7YnJlYWs7Y2FzZSJuIjpnbj1jbi53fHxTdHJpbmcoY24udnx8MCksWnRbIm9mZmljZTp2''@;'; put 'put ''YWx1ZS10eXBlIl09ImZsb2F0IixadFsib2ZmaWNlOnZhbHVlIl09Y24udnx8MDticmVhaztjYXNlInMiOmNhc2Uic3RyIjpnbj1jbi52LFp0WyJvZmZpY2U6dmFsdWUtdHlwZSJdPSJzdHJpbmciO2JyZWFrO2Nhc2UiZCI6Z249Y24ud3x8RnQoY24udikudG9JU09TdHJpbmcoKSxadFsib2Zm''@;'; put 'put ''aWNlOnZhbHVlLXR5cGUiXT0iZGF0ZSIsWnRbIm9mZmljZTpkYXRlLXZhbHVlIl09RnQoY24udikudG9JU09TdHJpbmcoKSxadFsidGFibGU6c3R5bGUtbmFtZSJdPSJjZTEiO2JyZWFrO2RlZmF1bHQ6emUucHVzaChMKTtjb250aW51ZX1udWxsIT1jbi5vZHMmJiFadFsidGFibGU6c3R5bGUt''@;'; put 'put ''bmFtZSJdJiYoWnRbInRhYmxlOnN0eWxlLW5hbWUiXT0iY2UiK2NuLm9kcyk7dmFyIEJuPSFjbi5SfHxjbi5sJiZjbi5sLlRhcmdldD95KGduKTpQKGNuLlIpO2lmKGNuLmwmJmNuLmwuVGFyZ2V0KXt2YXIgRG49Y24ubC5UYXJnZXQ7IiMiIT0oRG49IiMiPT1Ebi5jaGFyQXQoMCk/IiMiK3pr''@;'; put 'put ''KERuLnNsaWNlKDEpKTpEbikuY2hhckF0KDApJiYhRG4ubWF0Y2goL15cdys6LykmJihEbj0iLi4vIitEbiksQm49X3IoInRleHQ6YSIsQm4seyJ4bGluazpocmVmIjpEbi5yZXBsYWNlKC8mL2csIiZhbXA7Iil9KX16ZS5wdXNoKCIgICAgICAgICAgIitfcigidGFibGU6dGFibGUtY2VsbCIs''@;'; put 'put ''X3IoInRleHQ6cCIsQm4se30pLFp0KSsiXG4iKX1lbHNlIHplLnB1c2goTCl9fXplLnB1c2goIiAgICAgICAgPC90YWJsZTp0YWJsZS1yb3c+XG4iKX1yZXR1cm4gemUucHVzaCgiICAgICAgPC90YWJsZTp0YWJsZT5cbiIpLHplLmpvaW4oIiIpfSxmZT17Y2VudGVyOiJjZW50ZXIiLGxlZnQ6''@;'; put 'put ''InN0YXJ0IixyaWdodDoiZW5kIn07cmV0dXJuIGZ1bmN0aW9uKHllLFZlKXt2YXIgemU9W1BuXSxXZT1hdSh7InhtbG5zOm9mZmljZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInhtbG5zOnRhYmxlIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9w''@;'; put 'put ''ZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ4bWxuczpzdHlsZSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiwieG1sbnM6dGV4dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ4bWxuczpkcmF3''@;'; put 'put ''IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIsInhtbG5zOmZvIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjAiLCJ4bWxuczp4bGluayI6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv''@;'; put 'put ''eGxpbmsiLCJ4bWxuczpkYyI6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiwieG1sbnM6bWV0YSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiLCJ4bWxuczpudW1iZXIiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50Onht''@;'; put 'put ''bG5zOmRhdGFzdHlsZToxLjAiLCJ4bWxuczpwcmVzZW50YXRpb24iOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjAiLCJ4bWxuczpzdmciOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEu''@;'; put 'put ''MCIsInhtbG5zOmNoYXJ0IjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjAiLCJ4bWxuczpkcjNkIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcjNkOjEuMCIsInhtbG5zOm1hdGgiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4''@;'; put 'put ''L01hdGgvTWF0aE1MIiwieG1sbnM6Zm9ybSI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Zm9ybToxLjAiLCJ4bWxuczpzY3JpcHQiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnNjcmlwdDoxLjAiLCJ4bWxuczpvb28iOiJodHRwOi8vb3Bl''@;'; put 'put ''bm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiLCJ4bWxuczpvb293IjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvd3JpdGVyIiwieG1sbnM6b29vYyI6Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGMiLCJ4bWxuczpkb20iOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVu''@;'; put 'put ''dHMiLCJ4bWxuczp4Zm9ybXMiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAyL3hmb3JtcyIsInhtbG5zOnhzZCI6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiwieG1sbnM6eHNpIjoiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLCJ4bWxuczpzaGVl''@;'; put 'put ''dCI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6c2gzM3RqczoxLjAiLCJ4bWxuczpycHQiOiJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNS9yZXBvcnQiLCJ4bWxuczpvZiI6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiwieG1sbnM6eGh0''@;'; put 'put ''bWwiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwieG1sbnM6Z3JkZGwiOiJodHRwOi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3IyIsInhtbG5zOnRhYmxlb29vIjoiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDkvdGFibGUiLCJ4bWxuczpkcmF3b29vIjoiaHR0cDovL29w''@;'; put 'put ''ZW5vZmZpY2Uub3JnLzIwMTAvZHJhdyIsInhtbG5zOmNhbGNleHQiOiJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMCIsInhtbG5zOmxvZXh0IjoidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJp''@;'; put 'put ''bWVudGFsOm9mZmljZTp4bWxuczpsb2V4dDoxLjAiLCJ4bWxuczpmaWVsZCI6InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb28tbXMtaW50ZXJvcDp4bWxuczpmaWVsZDoxLjAiLCJ4bWxuczpmb3JteCI6InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3ht''@;'; put 'put ''bC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMCIsInhtbG5zOmNzczN0IjoiaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy10ZXh0LyIsIm9mZmljZTp2ZXJzaW9uIjoiMS4yIn0pLHJ0PWF1KHsieG1sbnM6Y29uZmlnIjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpj''@;'; put 'put ''b25maWc6MS4wIiwib2ZmaWNlOm1pbWV0eXBlIjoiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCJ9KTsiZm9kcyI9PVZlLmJvb2tUeXBlPyh6ZS5wdXNoKCI8b2ZmaWNlOmRvY3VtZW50IitXZStydCsiPlxuIiksemUucHVzaChSNSgpLnJlcGxhY2UoL29m''@;'; put 'put ''ZmljZTpkb2N1bWVudC1tZXRhL2csIm9mZmljZTptZXRhIikpKTp6ZS5wdXNoKCI8b2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQiK1dlKyI+XG4iKSxmdW5jdGlvbih2ZSx5ZSl7dmFyIFZlPVtdLHplPXt9O1ZlLnB1c2goIiA8b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKSxWZS5wdXNoKCcg''@;'; put 'put ''IDxudW1iZXI6ZGF0ZS1zdHlsZSBzdHlsZTpuYW1lPSJOMzciIG51bWJlcjphdXRvbWF0aWMtb3JkZXI9InRydWUiPlxuJyksVmUucHVzaCgnICAgPG51bWJlcjptb250aCBudW1iZXI6c3R5bGU9ImxvbmciLz5cbicpLFZlLnB1c2goIiAgIDxudW1iZXI6dGV4dD4vPC9udW1iZXI6dGV4dD5c''@;'; put 'put ''biIpLFZlLnB1c2goJyAgIDxudW1iZXI6ZGF5IG51bWJlcjpzdHlsZT0ibG9uZyIvPlxuJyksVmUucHVzaCgiICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxuIiksVmUucHVzaCgiICAgPG51bWJlcjp5ZWFyLz5cbiIpLFZlLnB1c2goIiAgPC9udW1iZXI6ZGF0ZS1zdHlsZT5cbiIp''@;'; put 'put ''O3ZhciBXZT0wO3llLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKGF0KXtyZXR1cm4geWUuU2hlZXRzW2F0XX0pLmZvckVhY2goZnVuY3Rpb24oYXQpe2lmKGF0JiZhdFsiIWNvbHMiXSlmb3IodmFyIHZ0PTA7dnQ8YXRbIiFjb2xzIl0ubGVuZ3RoOysrdnQpaWYoYXRbIiFjb2xzIl1bdnRdKXt2''@;'; put 'put ''YXIgUHQ9YXRbIiFjb2xzIl1bdnRdO2lmKG51bGw9PVB0LndpZHRoJiZudWxsPT1QdC53cHgmJm51bGw9PVB0LndjaCljb250aW51ZTtfMChQdCksUHQub2RzPVdlO3ZhciBrdD1hdFsiIWNvbHMiXVt2dF0ud3B4KyJweCI7VmUucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iY28n''@;'; put 'put ''K1dlKyciIHN0eWxlOmZhbWlseT0idGFibGUtY29sdW1uIj5cbicpLFZlLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOmNvbHVtbi13aWR0aD0iJytrdCsnIi8+XG4nKSxWZS5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+''@;'; put 'put ''XG4iKSwrK1dlfX0pO3ZhciBydD0wO3llLlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9uKGF0KXtyZXR1cm4geWUuU2hlZXRzW2F0XX0pLmZvckVhY2goZnVuY3Rpb24oYXQpe2lmKGF0JiZhdFsiIXJvd3MiXSlmb3IodmFyIHZ0PTA7dnQ8YXRbIiFyb3dzIl0ubGVuZ3RoOysrdnQpaWYoYXRbIiFy''@;'; put 'put ''b3dzIl1bdnRdKXthdFsiIXJvd3MiXVt2dF0ub2RzPXJ0O3ZhciBQdD1hdFsiIXJvd3MiXVt2dF0uaHB4KyJweCI7VmUucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0icm8nK3J0KyciIHN0eWxlOmZhbWlseT0idGFibGUtcm93Ij5cbicpLFZlLnB1c2goJyAgIDxzdHlsZTp0YWJs''@;'; put 'put ''ZS1yb3ctcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9ImF1dG8iIHN0eWxlOnJvdy1oZWlnaHQ9IicrUHQrJyIvPlxuJyksVmUucHVzaCgiICA8L3N0eWxlOnN0eWxlPlxuIiksKytydH19KSxWZS5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJ0YTEiIHN0eWxlOmZhbWlseT0i''@;'; put 'put ''dGFibGUiIHN0eWxlOm1hc3Rlci1wYWdlLW5hbWU9Im1wMSI+XG4nKSxWZS5wdXNoKCcgICA8c3R5bGU6dGFibGUtcHJvcGVydGllcyB0YWJsZTpkaXNwbGF5PSJ0cnVlIiBzdHlsZTp3cml0aW5nLW1vZGU9ImxyLXRiIi8+XG4nKSxWZS5wdXNoKCIgIDwvc3R5bGU6c3R5bGU+XG4iKSxWZS5w''@;'; put 'put ''dXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPSJjZTEiIHN0eWxlOmZhbWlseT0idGFibGUtY2VsbCIgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9IkRlZmF1bHQiIHN0eWxlOmRhdGEtc3R5bGUtbmFtZT0iTjM3Ii8+XG4nKTt2YXIgbHQ9MjtydD0wLHllLlNoZWV0TmFtZXMubWFwKGZ1''@;'; put 'put ''bmN0aW9uKGF0KXtyZXR1cm4geWUuU2hlZXRzW2F0XX0pLmZvckVhY2goZnVuY3Rpb24oYXQpe2lmKGF0KWZvcih2YXIgdnQ9MCxQdD0wLGt0PWFhKGF0WyIhcmVmIl0pLER0PUFycmF5LmlzQXJyYXkoYXQpO3Z0PD1rdC5lLnI7Kyt2dClmb3IoUHQ9MDtQdDw9a3QuZS5jOysrUHQpe3ZhciBa''@;'; put 'put ''dD1BaSh7cjp2dCxjOlB0fSksZ249RHQ/KGF0W3Z0XXx8W10pW1B0XTphdFtadF07aWYoZ24mJihnbi5zfHxnbi5SKSl7dmFyICRuPVtdO2duLnMmJiRuLnB1c2goW2duLCEwXSksZ24uUiYmZ24uUi5mb3JFYWNoKGZ1bmN0aW9uKGNuKXtjbiYmY24ucyYmJG4ucHVzaChbY24sITFdKX0pLCRu''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oY24pe3ZhciBYbj1jblswXSxCbj1Ybi5zLERuPSIiLFFuPXsic3R5bGU6bmFtZSI6KGNuWzFdPyJjZSI6IlQiKStsdCwic3R5bGU6ZmFtaWx5IjpjblsxXT8idGFibGUtY2VsbCI6InRleHQifTtjblsxXSYmKFFuWyJzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZSJd''@;'; put 'put ''PSJEZWZhdWx0IixRblsic3R5bGU6ZGF0YS1zdHlsZS1uYW1lIl09Ik4wIik7dmFyIGVyPXt9LHpuPSExLEtyPXt9LGlpPSExLEVpPXt9LE9pPSExO2lmKEJuLmNvbG9yJiYoS3JbImZvOmNvbG9yIl09IiMiK24wKEJuLmNvbG9yLnJnYiksaWk9ITApLEJuLnN6JiYoS3JbImZvOmZvbnQtc2l6''@;'; put 'put ''ZSJdPUJuLnN6KyJwdCIsaWk9ITApLEJuLmJvbGQmJihLclsiZm86Zm9udC13ZWlnaHQiXT0iYm9sZCIsaWk9ITApLEJuLml0YWxpYyYmKEtyWyJmbzpmb250LXN0eWxlIl09Iml0YWxpYyIsaWk9ITApLEJuLm5hbWUmJih6ZVtCbi5uYW1lXXx8KHplW0JuLm5hbWVdPUJuLm5hbWUubWF0Y2go''@;'; put 'put ''LyAvKT8iJmFwb3M7IitCbi5uYW1lKyImYXBvczsiOkJuLm5hbWUpLEtyWyJzdHlsZTpmb250LW5hbWUiXT1Cbi5uYW1lLGlpPSEwKSxCbi5zdHJpa2UmJihLclsic3R5bGU6dGV4dC1saW5lLXRocm91Z2gtc3R5bGUiXT0ic29saWQiLEtyWyJzdHlsZTp0ZXh0LWxpbmUtdGhyb3VnaC10eXBl''@;'; put 'put ''Il09InNpbmdsZSIsaWk9ITApLEJuLnVuZGVybGluZSYmKEtyWyJzdHlsZTp0ZXh0LXVuZGVybGluZS1zdHlsZSJdPSJzb2xpZCIsS3JbInN0eWxlOnRleHQtdW5kZXJsaW5lLXdpZHRoIl09ImF1dG8iLEtyWyJzdHlsZTp0ZXh0LXVuZGVybGluZS1jb2xvciJdPSJmb250LWNvbG9yIixpaT0h''@;'; put 'put ''MCksY25bMV0pe2lmKEJuLmFsaWdubWVudCl7dmFyIHRpPUJuLmFsaWdubWVudDt0aS53cmFwVGV4dCYmKGVyWyJmbzp3cmFwLW9wdGlvbiJdPSJ3cmFwIix6bj0hMCksdGkudmVydGljYWwmJihlclsic3R5bGU6dmVydGljYWwtYWxpZ24iXT0iY2VudGVyIj09dGkudmVydGljYWw/Im1pZGRs''@;'; put 'put ''ZSI6dGkudmVydGljYWwsem49ITApLGZlW3RpLmhvcml6b250YWxdJiYoRWlbImZvOnRleHQtYWxpZ24iXT1mZVt0aS5ob3Jpem9udGFsXSxPaT0hMCl9Qm4uZmdDb2xvciYmKGVyWyJmbzpiYWNrZ3JvdW5kLWNvbG9yIl09IiMiK24wKEJuLmZnQ29sb3IucmdiKSx6bj0hMCl9em4mJihEbis9''@;'; put 'put ''X3IoInN0eWxlOnRhYmxlLWNlbGwtcHJvcGVydGllcyIsbnVsbCxlcikpLGlpJiYoRG4rPV9yKCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiLG51bGwsS3IpKSxPaSYmKERuKz1fcigic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiLG51bGwsRWkpKSxWZS5wdXNoKCIgICIrX3IoInN0eWxlOnN0''@;'; put 'put ''eWxlIixEbixRbikrIlxuIiksWG4ub2RzPWx0LCsrbHR9KX19fSksVmUucHVzaCgiIDwvb2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+XG4iKTt2YXIgQ3Q9IiA8b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz5cbiIrb3QoemUpLm1hcChmdW5jdGlvbihhdCl7cmV0dXJuJyAgPHN0eWxlOmZvbnQtZmFj''@;'; put 'put ''ZSBzdHlsZTpuYW1lPSInK2F0KyciIHN2Zzpmb250LWZhbWlseT0iJyt6ZVthdF0rJyIvPlxuJ30pLmpvaW4oIiIpKyIgPC9vZmZpY2U6Zm9udC1mYWNlLWRlY2xzPlxuIjt2ZS5wdXNoKEN0KSx2ZS5wdXNoKFZlLmpvaW4oIiIpKX0oemUseWUpLHplLnB1c2goIiAgPG9mZmljZTpib2R5Plxu''@;'; put 'put ''IiksemUucHVzaCgiICAgIDxvZmZpY2U6c3ByZWFkc2hlZXQ+XG4iKTtmb3IodmFyIGx0PTA7bHQhPXllLlNoZWV0TmFtZXMubGVuZ3RoOysrbHQpemUucHVzaChuZSh5ZS5TaGVldHNbeWUuU2hlZXROYW1lc1tsdF1dLHllLGx0KSk7cmV0dXJuIHplLnB1c2goIiAgICA8L29mZmljZTpzcHJl''@;'; put 'put ''YWRzaGVldD5cbiIpLHplLnB1c2goIiAgPC9vZmZpY2U6Ym9keT5cbiIpLHplLnB1c2goImZvZHMiPT1WZS5ib29rVHlwZT8iPC9vZmZpY2U6ZG9jdW1lbnQ+IjoiPC9vZmZpY2U6ZG9jdW1lbnQtY29udGVudD4iKSx6ZS5qb2luKCIiKX19KCk7ZnVuY3Rpb24gb0QoeSxQKXtpZigiZm9kcyI9''@;'; put 'put ''PVAuYm9va1R5cGUpcmV0dXJuIFA2KHksUCk7dmFyIEw9X24oKSxYPSIiLG5lPVtdLGZlPVtdO3JldHVybiAkdChMLFg9Im1pbWV0eXBlIiwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCIpLCR0KEwsWD0iY29udGVudC54bWwiLFA2KHksUCkpLG5lLnB1''@;'; put 'put ''c2goW1gsInRleHQveG1sIl0pLGZlLnB1c2goW1gsIkNvbnRlbnRGaWxlIl0pLCR0KEwsWD0ic3R5bGVzLnhtbCIsRkIoeSxQKSksbmUucHVzaChbWCwidGV4dC94bWwiXSksZmUucHVzaChbWCwiU3R5bGVzRmlsZSJdKSwkdChMLFg9Im1ldGEueG1sIixQbitSNSgpKSxuZS5wdXNoKFtYLCJ0''@;'; put 'put ''ZXh0L3htbCJdKSxmZS5wdXNoKFtYLCJNZXRhZGF0YUZpbGUiXSksJHQoTCxYPSJtYW5pZmVzdC5yZGYiLGZ1bmN0aW9uIHpjKHkpe3ZhciBQPVtQbl07UC5wdXNoKCc8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPlxuJyk7''@;'; put 'put ''Zm9yKHZhciBMPTA7TCE9eS5sZW5ndGg7KytMKVAucHVzaCh2Yyh5W0xdWzBdLHlbTF1bMV0pKSxQLnB1c2godGgoIiIseVtMXVswXSkpO3JldHVybiBQLnB1c2godmMoIiIsIkRvY3VtZW50IiwicGtnIikpLFAucHVzaCgiPC9yZGY6UkRGPiIpLFAuam9pbigiIil9KGZlKSksbmUucHVzaChb''@;'; put 'put ''WCwiYXBwbGljYXRpb24vcmRmK3htbCJdKSwkdChMLFg9Ik1FVEEtSU5GL21hbmlmZXN0LnhtbCIsZnVuY3Rpb24gTmwoeSl7dmFyIFA9W1BuXTtQLnB1c2goJzxtYW5pZmVzdDptYW5pZmVzdCB4bWxuczptYW5pZmVzdD0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpt''@;'; put 'put ''YW5pZmVzdDoxLjAiIG1hbmlmZXN0OnZlcnNpb249IjEuMiI+XG4nKSxQLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPSIvIiBtYW5pZmVzdDp2ZXJzaW9uPSIxLjIiIG1hbmlmZXN0Om1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVu''@;'; put 'put ''ZG9jdW1lbnQuc3ByZWFkc2hlZXQiLz5cbicpO2Zvcih2YXIgTD0wO0w8eS5sZW5ndGg7KytMKVAucHVzaCgnICA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDpmdWxsLXBhdGg9IicreVtMXVswXSsnIiBtYW5pZmVzdDptZWRpYS10eXBlPSInK3lbTF1bMV0rJyIvPlxuJyk7cmV0dXJu''@;'; put 'put ''IFAucHVzaCgiPC9tYW5pZmVzdDptYW5pZmVzdD4iKSxQLmpvaW4oIiIpfShuZSkpLEx9ZnVuY3Rpb24gTDIoeSl7cmV0dXJuIGZ1bmN0aW9uKEwsWCl7dmFyIG5lPWZ1bmN0aW9uIE5CKHksUCl7aWYoIVApcmV0dXJuIDA7dmFyIEw9eS5TaGVldE5hbWVzLmluZGV4T2YoUCk7aWYoLTE9PUwp''@;'; put 'put ''dGhyb3cgbmV3IEVycm9yKCJTaGVldCBub3QgZm91bmQ6ICIrUCk7cmV0dXJuIEx9KEwsWC5zaGVldCk7cmV0dXJuIHkuZnJvbV9zaGVldChMLlNoZWV0c1tMLlNoZWV0TmFtZXNbbmVdXSxYLEwpfX12YXIgSEI9TDIoazEpLFZCPUwyKHtmcm9tX3NoZWV0OlZ1fSksQkI9TDIodHlwZW9mIFh5''@;'; put 'put ''PCJ1Ij9YeTp7fSksQTE9TDIodHlwZW9mIHg5PCJ1Ij94OTp7fSksc0Q9TDIodHlwZW9mIFdmPCJ1Ij9XZjp7fSksYUQ9TDIodHlwZW9mIE85PCJ1Ij9POTp7fSksakI9TDIoe2Zyb21fc2hlZXQ6cER9KSxhZWU9TDIodHlwZW9mIFlmPCJ1Ij9ZZjp7fSksbEQ9TDIodHlwZW9mIHE1PCJ1Ij9x''@;'; put 'put ''NTp7fSksUWE9Uig5MTQyNil8fHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuY3J5cHRvQnJvd3NlcmlmeTtpZighUWEpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBjcnlwdG8gZXh0ZW5zaW9ucyEiKTt2YXIgYTM9e1NIQTUxMjoic2hhNTEyIixTSEEyNTY6InNoYTI1NiIsU0hBMzg0''@;'; put 'put ''OiJzaGEzODQiLFNIQTE6InNoYTEiLE1ENToibWQ1IixNRDQ6Im1kNCIsTUQyOiJtZDIifTtmdW5jdGlvbiBBbCh5LFApe3N3aXRjaChQPShQfHwiIikucmVwbGFjZSgvLS9nLCIiKSl7Y2FzZSJTSEEtNTEyIjpjYXNlIlNIQTUxMiI6cmV0dXJuIG5ldyBRYS5jcmVhdGVIYXNoKCJzaGE1MTIi''@;'; put 'put ''KS51cGRhdGUoeSkuZGlnZXN0KCk7Y2FzZSJTSEEtMSI6Y2FzZSJTSEExIjpyZXR1cm4gbmV3IFFhLmNyZWF0ZUhhc2goInNoYTEiKS51cGRhdGUoeSkuZGlnZXN0KCk7Y2FzZSJNRDIiOnJldHVybiBuZXcgUWEuY3JlYXRlSGFzaCgibWQyIikudXBkYXRlKHkpLmRpZ2VzdCgpO2RlZmF1bHQ6''@;'; put 'put ''aWYoYTNbUF0pcmV0dXJuIG5ldyBRYS5jcmVhdGVIYXNoKGEzW1BdKS51cGRhdGUoeSkuZGlnZXN0KCk7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobSAiK1ApfX1mdW5jdGlvbiBYcCh5LFAsTCl7aWYoInJjMiI9PUwpdGhyb3ciVW5zdXBwb3J0ZWQgUkMyIjt2''@;'; put 'put ''YXIgWD1RYS5jcmVhdGVEZWNpcGhlcml2KEx8fCJhZXMtMjU2LWNiYyIseSxQKTtyZXR1cm4gWC5zZXRBdXRvUGFkZGluZyghMSksWH1mdW5jdGlvbiBGNih5KXtyZXR1cm5bKCIwMCIrKDI1NSZ5KS50b1N0cmluZygxNikpLnNsaWNlKC0yKSwoIjAwIisoeT4+PjgmMjU1KS50b1N0cmluZygx''@;'; put 'put ''NikpLnNsaWNlKC0yKSwoIjAwIisoeT4+PjE2JjI1NSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMiksKCIwMCIrKHk+Pj4yNCYyNTUpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpXS5qb2luKCIiKX12YXIgSnA9ZnVuY3Rpb24oeSxQLEwpe2Zvcih2YXIgWD0ic3RyaW5nIj09dHlwZW9mIFA/QnVm''@;'; put 'put ''ZmVyLmZyb20oUCwiaGV4Iik6UCxuZT0ic3RyaW5nIj09dHlwZW9mIHk/QnVmZmVyLmZyb20oY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCx5KSk6eSxmZT0ic3RyaW5nIj09dHlwZW9mIEw/QnVmZmVyLmZyb20oTCwiaGV4Iik6TCxiZT1BbChuZSwiTUQ1IiksdmU9QnVmZmVyLmNvbmNhdChb''@;'; put 'put ''YmUuc2xpY2UoMCw1KSxYXSkseWU9MDt5ZTw0OysreWUpdmU9QnVmZmVyLmNvbmNhdChbdmUsdmVdKTt2YXIgVmU9QWwodmUsIk1ENSIpO3JldHVybihBbChCdWZmZXIuY29uY2F0KFtWZS5zbGljZSgwLDUpLGZlXSksIk1ENSIpLnRvU3RyaW5nKCJoZXgiKSsiMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAiKS5zbGljZSgwLDMyKX0sUXA9ZnVuY3Rpb24oeSxQLEwpe3ZhciBYPSJzdHJpbmciPT10eXBlb2YgUD9CdWZmZXIuZnJvbShQLCJoZXgiKTpQLG5lPSJzdHJpbmciPT10eXBlb2YgeT9CdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLHkpKTp5LGZl''@;'; put 'put ''PSJzdHJpbmciPT10eXBlb2YgTD9CdWZmZXIuZnJvbShMLCJoZXgiKTpMLGJlPUFsKEJ1ZmZlci5jb25jYXQoW1gsbmVdKSwiU0hBMSIpO3JldHVybiBBbChCdWZmZXIuY29uY2F0KFtiZSxmZV0pLCJTSEExIil9LFpCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUCgpe31QLnByb3RvdHlwZS5idWls''@;'; put 'put ''ZD1mdW5jdGlvbihhdCl7dGhpcy5faT0wO3ZhciB2dD10aGlzLl9idWlsZChhdCwiIik7cmV0dXJuIiI9PT12dD8iIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PicrdnR9LFAucHJvdG90eXBlLl9idWlsZD1mdW5jdGlvbihhdCx2dCl7''@;'; put 'put ''aWYodGhpcy5faSsrJTFlNj09MCYmKHRoaXMuX2M9dnRbMF0pLG51bGw9PWF0fHwib2JqZWN0IiE9dHlwZW9mIGF0JiYiZnVuY3Rpb24iIT10eXBlb2YgYXQpbnVsbCE9YXQmJih2dCs9ZnVuY3Rpb24geShhdCx2dCl7cmV0dXJuIG51bGw9PWF0fHwoYXQ9YXQudG9TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IiksdnQmJihhdD1hdC5yZXBsYWNlKC8iL2csIiZxdW90OyIpKSksYXR9KGF0KSk7ZWxzZXtpZighYXQubmFtZSl0aHJvdyBuZXcgRXJyb3IoIlhNTCBub2RlIGRvZXMgbm90IGhhdmUgbmFtZTog''@;'; put 'put ''IitKU09OLnN0cmluZ2lmeShhdCkpO3Z0Kz0iPCIrYXQubmFtZTt2YXIgUHQ9dGhpczt2dCs9YXQuYXR0cmlidXRlcyYmYXUoYXQuYXR0cmlidXRlcyl8fCIiLEFycmF5LmlzQXJyYXkoYXQuY2hpbGRyZW4pJiYwIT1hdC5jaGlsZHJlbi5sZW5ndGg/KHZ0Kz0iPiIsYXQuY2hpbGRyZW4uZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbihrdCl7dnQ9UHQuX2J1aWxkKGt0LHZ0KX0pLHZ0Kz0iPC8iK2F0Lm5hbWUrIj4iKTp2dCs9Ii8+In1yZXR1cm4gdnR9O3ZhciBMPUJ1ZmZlci5mcm9tKFs0LDAsNCwwLDY0LDAsMCwwXSksZmU9e2RhdGFJbnRlZ3JpdHk6e2htYWNLZXk6QnVmZmVyLmZyb20oWzk1LDE3''@;'; put 'put ''OCwxNzMsMSwxMiwxODUsMjI1LDI0Nl0pLGhtYWNWYWx1ZTpCdWZmZXIuZnJvbShbMTYwLDEwMywxMjcsMiwxNzgsNDQsMTMyLDUxXSl9LGtleTpCdWZmZXIuZnJvbShbMjAsMTEwLDExLDIzMSwxNzEsMTcyLDIwOCwyMTRdKSx2ZXJpZmllckhhc2g6e2lucHV0OkJ1ZmZlci5mcm9tKFsyNTQs''@;'; put 'put ''MTY3LDIxMCwxMTgsNTksNzUsMTU4LDEyMV0pLHZhbHVlOkJ1ZmZlci5mcm9tKFsyMTUsMTcwLDE1LDEwOSw0OCw5Nyw1Miw3OF0pfX07ZnVuY3Rpb24gYmUoYXQsdnQsUHQsa3QsRHQsWnQpe3ZhciBnbj12dC50b0xvd2VyQ2FzZSgpKyItIis4Kmt0Lmxlbmd0aDtpZigiQ2hhaW5pbmdNb2Rl''@;'; put 'put ''Q0JDIiE9PVB0KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaXBoZXIgY2hhaW5pbmc6ICIrUHQpO3ZhciAkbj1RYVthdD8iY3JlYXRlQ2lwaGVyaXYiOiJjcmVhdGVEZWNpcGhlcml2Il0oZ24rPSItY2JjIixrdCxEdCk7JG4uc2V0QXV0b1BhZGRpbmcoITEpO3ZhciBjbj0kbi51cGRhdGUo''@;'; put 'put ''WnQpLFhuPVtjbl07dHJ5e3ZhciBCbj0kbi5maW5hbCgpO1huLnB1c2goQm4pfWNhdGNoe31yZXR1cm4gQnVmZmVyLmNvbmNhdChYbil9ZnVuY3Rpb24gdmUoYXQpe2F0PWF0LnRvTG93ZXJDYXNlKCk7dmFyIHZ0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKFFhLmdldEhhc2hlcygp''@;'; put 'put ''LmluZGV4T2YoYXQpPDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobSAiK2F0KTt2YXIga3Q9UWEuY3JlYXRlSGFzaChhdCk7cmV0dXJuIGt0LnVwZGF0ZShCdWZmZXIuY29uY2F0KHZ0KSksa3QuZGlnZXN0KCl9ZnVuY3Rpb24geWUoYXQsdnQsUHQsa3QpeyJu''@;'; put 'put ''dW1iZXIiPT10eXBlb2Yga3QmJihrdD1WZShrdCkpO3ZhciBEdD12ZShhdCx2dCxrdCk7aWYoRHQubGVuZ3RoPFB0KXt2YXIgWnQ9QnVmZmVyLmFsbG9jKFB0LDU0KTtEdC5jb3B5KFp0KSxEdD1adH1lbHNlIER0Lmxlbmd0aD5QdCYmKER0PUR0LnNsaWNlKDAsUHQpKTtyZXR1cm4gRHR9ZnVu''@;'; put 'put ''Y3Rpb24gVmUoYXQsdnQpe3ZhciBQdD1CdWZmZXIuYWxsb2ModnR8fDQpO3JldHVybiBQdC53cml0ZVVJbnQzMkxFKGF0LDApLFB0fWZ1bmN0aW9uIHplKGF0LHZ0LFB0LGt0LER0LFp0KXtmb3IodmFyICRuPXZlKHZ0LFB0LEJ1ZmZlci5mcm9tKGF0LCJ1dGYxNmxlIikpLGNuPTA7Y248a3Q7''@;'; put 'put ''Y24rKykkbj12ZSh2dCxWZShjbiksJG4pO3ZhciBCbj1EdC84O2lmKCgkbj12ZSh2dCwkbixadCkpLmxlbmd0aDxCbil7dmFyIERuPUJ1ZmZlci5hbGxvYyhCbiw1NCk7JG4uY29weShEbiksJG49RG59ZWxzZSAkbi5sZW5ndGg+Qm4mJigkbj0kbi5zbGljZSgwLEJuKSk7cmV0dXJuICRufXJl''@;'; put 'put ''dHVybiBRYS5yYW5kb21CeXRlc3x8KFFhLnJhbmRvbUJ5dGVzPWZ1bmN0aW9uKGF0KXtmb3IodmFyIHZ0PUJ1ZmZlci5hbGxvYyhhdCksUHQ9MDtQdDxhdDsrK1B0KXZ0W1B0XT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtyZXR1cm4gdnR9KSxmdW5jdGlvbiBDdChhdCx2dCl7aWYo''@;'; put 'put ''InN0cmluZyI9PXR5cGVvZiBhdClyZXR1cm4gQ3QoQnVmZmVyLmZyb20oYXQsImJpbmFyeSIpLHZ0KTt2YXIgUHQ9UWEucmFuZG9tQnl0ZXMoMzIpLGt0PXtwYWNrYWdlOntjaXBoZXJBbGdvcml0aG06IkFFUyIsY2lwaGVyQ2hhaW5pbmc6IkNoYWluaW5nTW9kZUNCQyIsc2FsdFZhbHVlOlFh''@;'; put 'put ''LnJhbmRvbUJ5dGVzKDE2KSxoYXNoQWxnb3JpdGhtOiJTSEE1MTIiLGhhc2hTaXplOjY0LGJsb2NrU2l6ZToxNixrZXlCaXRzOjgqUHQubGVuZ3RofSxrZXk6e2NpcGhlckFsZ29yaXRobToiQUVTIixjaXBoZXJDaGFpbmluZzoiQ2hhaW5pbmdNb2RlQ0JDIixzYWx0VmFsdWU6UWEucmFuZG9t''@;'; put 'put ''Qnl0ZXMoMTYpLGhhc2hBbGdvcml0aG06IlNIQTUxMiIsaGFzaFNpemU6NjQsYmxvY2tTaXplOjE2LHNwaW5Db3VudDoxLGtleUJpdHM6MjU2fX0sRHQ9ZnVuY3Rpb24gV2UoYXQsdnQsUHQsa3QsRHQsWnQsZ24sJG4pe2Zvcih2YXIgY249W10sWG49YXQ/MDo4LEJuPTAsRG49MCxRbj0wO1Fu''@;'; put 'put ''PCRuLmxlbmd0aDspeyhRbj0oRG49UW4pKzQwOTYpPiRuLmxlbmd0aCYmKFFuPSRuLmxlbmd0aCk7dmFyIGVyPSRuLnNsaWNlKERuK1huLFFuK1huKSx6bj1lci5sZW5ndGglRHQ7em4mJihlcj1CdWZmZXIuY29uY2F0KFtlcixCdWZmZXIuYWxsb2MoRHQtem4pXSkpO3ZhciBpaT1iZShhdCx2''@;'; put 'put ''dCxQdCxnbix5ZShrdCxadCxEdCxCbiksZXIpO2NuLnB1c2goaWkpLEJuKyt9dmFyIEVpPUJ1ZmZlci5jb25jYXQoY24pO2lmKGF0KUVpPUJ1ZmZlci5jb25jYXQoW1ZlKCRuLmxlbmd0aCw4KSxFaV0pO2Vsc2V7dmFyIE9pPSRuLnJlYWRVSW50MzJMRSgwKTtFaT1FaS5zbGljZSgwLE9pKX1y''@;'; put 'put ''ZXR1cm4gRWl9KCEwLGt0LnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGt0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsa3QucGFja2FnZS5oYXNoQWxnb3JpdGhtLGt0LnBhY2thZ2UuYmxvY2tTaXplLGt0LnBhY2thZ2Uuc2FsdFZhbHVlLFB0LGF0KSxadD1RYS5yYW5kb21CeXRlcyg2NCksZ249''@;'; put 'put ''eWUoa3QucGFja2FnZS5oYXNoQWxnb3JpdGhtLGt0LnBhY2thZ2Uuc2FsdFZhbHVlLGt0LnBhY2thZ2UuYmxvY2tTaXplLGZlLmRhdGFJbnRlZ3JpdHkuaG1hY0tleSksJG49YmUoITAsa3QucGFja2FnZS5jaXBoZXJBbGdvcml0aG0sa3QucGFja2FnZS5jaXBoZXJDaGFpbmluZyxQdCxnbixa''@;'; put 'put ''dCksY249ZnVuY3Rpb24gcnQoYXQsdnQpe2F0PWF0LnRvTG93ZXJDYXNlKCk7dmFyIFB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO2lmKFFhLmdldEhhc2hlcygpLmluZGV4T2YoYXQpPDApdGhyb3cgbmV3IEVycm9yKCJITUFDIGFsZ29yaXRobSAnIithdCsiJyBub3Qgc3VwcG9ydGVk''@;'; put 'put ''ISIpO3ZhciBEdD1RYS5jcmVhdGVIbWFjKGF0LHZ0KTtyZXR1cm4gRHQudXBkYXRlKEJ1ZmZlci5jb25jYXQoUHQpKSxEdC5kaWdlc3QoKX0oa3QucGFja2FnZS5oYXNoQWxnb3JpdGhtLFp0LER0KSxYbj15ZShrdC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sa3QucGFja2FnZS5zYWx0VmFsdWUs''@;'; put 'put ''a3QucGFja2FnZS5ibG9ja1NpemUsZmUuZGF0YUludGVncml0eS5obWFjVmFsdWUpLEJuPWJlKCEwLGt0LnBhY2thZ2UuY2lwaGVyQWxnb3JpdGhtLGt0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsUHQsWG4sY24pO2t0LmRhdGFJbnRlZ3JpdHk9e2VuY3J5cHRlZEhtYWNLZXk6JG4sZW5jcnlw''@;'; put 'put ''dGVkSG1hY1ZhbHVlOkJufTt2YXIgRG49emUodnQsa3Qua2V5Lmhhc2hBbGdvcml0aG0sa3Qua2V5LnNhbHRWYWx1ZSxrdC5rZXkuc3BpbkNvdW50LGt0LmtleS5rZXlCaXRzLGZlLmtleSk7a3Qua2V5LmVuY3J5cHRlZEtleVZhbHVlPWJlKCEwLGt0LmtleS5jaXBoZXJBbGdvcml0aG0sa3Qu''@;'; put 'put ''a2V5LmNpcGhlckNoYWluaW5nLERuLGt0LmtleS5zYWx0VmFsdWUsUHQpO3ZhciBRbj1RYS5yYW5kb21CeXRlcygxNiksZXI9emUodnQsa3Qua2V5Lmhhc2hBbGdvcml0aG0sa3Qua2V5LnNhbHRWYWx1ZSxrdC5rZXkuc3BpbkNvdW50LGt0LmtleS5rZXlCaXRzLGZlLnZlcmlmaWVySGFzaC5p''@;'; put 'put ''bnB1dCk7a3Qua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0PWJlKCEwLGt0LmtleS5jaXBoZXJBbGdvcml0aG0sa3Qua2V5LmNpcGhlckNoYWluaW5nLGVyLGt0LmtleS5zYWx0VmFsdWUsUW4pO3ZhciB6bj12ZShrdC5rZXkuaGFzaEFsZ29yaXRobSxRbiksS3I9emUodnQsa3Qua2V5''@;'; put 'put ''Lmhhc2hBbGdvcml0aG0sa3Qua2V5LnNhbHRWYWx1ZSxrdC5rZXkuc3BpbkNvdW50LGt0LmtleS5rZXlCaXRzLGZlLnZlcmlmaWVySGFzaC52YWx1ZSk7a3Qua2V5LmVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlPWJlKCEwLGt0LmtleS5jaXBoZXJBbGdvcml0aG0sa3Qua2V5LmNpcGhlckNo''@;'; put 'put ''YWluaW5nLEtyLGt0LmtleS5zYWx0VmFsdWUsem4pO3ZhciBpaT1mdW5jdGlvbiBsdChhdCl7dmFyIHZ0PXtuYW1lOiJlbmNyeXB0aW9uIixhdHRyaWJ1dGVzOnt4bWxuczoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9lbmNyeXB0aW9uIiwieG1sbnM6cCI6Imh0''@;'; put 'put ''dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL3Bhc3N3b3JkIiwieG1sbnM6YyI6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYva2V5RW5jcnlwdG9yL2NlcnRpZmljYXRlIn0sY2hpbGRyZW46W3tuYW1lOiJrZXlEYXRh''@;'; put 'put ''IixhdHRyaWJ1dGVzOntzYWx0U2l6ZTphdC5wYWNrYWdlLnNhbHRWYWx1ZS5sZW5ndGgsYmxvY2tTaXplOmF0LnBhY2thZ2UuYmxvY2tTaXplLGtleUJpdHM6YXQucGFja2FnZS5rZXlCaXRzLGhhc2hTaXplOmF0LnBhY2thZ2UuaGFzaFNpemUsY2lwaGVyQWxnb3JpdGhtOmF0LnBhY2thZ2Uu''@;'; put 'put ''Y2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5nOmF0LnBhY2thZ2UuY2lwaGVyQ2hhaW5pbmcsaGFzaEFsZ29yaXRobTphdC5wYWNrYWdlLmhhc2hBbGdvcml0aG0sc2FsdFZhbHVlOmF0LnBhY2thZ2Uuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtuYW1lOiJkYXRhSW50ZWdy''@;'; put 'put ''aXR5IixhdHRyaWJ1dGVzOntlbmNyeXB0ZWRIbWFjS2V5OmF0LmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY0tleS50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkSG1hY1ZhbHVlOmF0LmRhdGFJbnRlZ3JpdHkuZW5jcnlwdGVkSG1hY1ZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19LHtu''@;'; put 'put ''YW1lOiJrZXlFbmNyeXB0b3JzIixjaGlsZHJlbjpbe25hbWU6ImtleUVuY3J5cHRvciIsYXR0cmlidXRlczp7dXJpOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L2tleUVuY3J5cHRvci9wYXNzd29yZCJ9LGNoaWxkcmVuOlt7bmFtZToicDplbmNyeXB0ZWRLZXki''@;'; put 'put ''LGF0dHJpYnV0ZXM6e3NwaW5Db3VudDphdC5rZXkuc3BpbkNvdW50LHNhbHRTaXplOmF0LmtleS5zYWx0VmFsdWUubGVuZ3RoLGJsb2NrU2l6ZTphdC5rZXkuYmxvY2tTaXplLGtleUJpdHM6YXQua2V5LmtleUJpdHMsaGFzaFNpemU6YXQua2V5Lmhhc2hTaXplLGNpcGhlckFsZ29yaXRobTph''@;'; put 'put ''dC5rZXkuY2lwaGVyQWxnb3JpdGhtLGNpcGhlckNoYWluaW5nOmF0LmtleS5jaXBoZXJDaGFpbmluZyxoYXNoQWxnb3JpdGhtOmF0LmtleS5oYXNoQWxnb3JpdGhtLHNhbHRWYWx1ZTphdC5rZXkuc2FsdFZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKSxlbmNyeXB0ZWRWZXJpZmllckhhc2hJbnB1''@;'; put 'put ''dDphdC5rZXkuZW5jcnlwdGVkVmVyaWZpZXJIYXNoSW5wdXQudG9TdHJpbmcoImJhc2U2NCIpLGVuY3J5cHRlZFZlcmlmaWVySGFzaFZhbHVlOmF0LmtleS5lbmNyeXB0ZWRWZXJpZmllckhhc2hWYWx1ZS50b1N0cmluZygiYmFzZTY0IiksZW5jcnlwdGVkS2V5VmFsdWU6YXQua2V5LmVuY3J5''@;'; put 'put ''cHRlZEtleVZhbHVlLnRvU3RyaW5nKCJiYXNlNjQiKX19XX1dfV19LGt0PShuZXcgUCkuYnVpbGQodnQpO3JldHVybiBCdWZmZXIuY29uY2F0KFtMLEJ1ZmZlci5mcm9tKGt0LCJ1dGY4IildKX0oa3QpLEVpPURlLnV0aWxzLmNmYl9uZXcoKTtyZXR1cm4gRGUudXRpbHMuY2ZiX2FkZChFaSwi''@;'; put 'put ''RW5jcnlwdGlvbkluZm8iLGlpKSxEZS51dGlscy5jZmJfYWRkKEVpLCJFbmNyeXB0ZWRQYWNrYWdlIixEdCksRWl9fSgpO2Z1bmN0aW9uIHVEKHkpe3JldHVybiBmdW5jdGlvbihMKXtmb3IodmFyIFg9MDtYIT15Lmxlbmd0aDsrK1gpe3ZhciBuZT15W1hdO3ZvaWQgMD09PUxbbmVbMF1dJiYo''@;'; put 'put ''TFtuZVswXV09bmVbMV0pLCJuIj09PW5lWzJdJiYoTFtuZVswXV09TnVtYmVyKExbbmVbMF1dKSl9fX12YXIgZEQ9ZnVuY3Rpb24oeSl7dUQoW1siY2VsbE5GIiwhMV0sWyJjZWxsSFRNTCIsITBdLFsiY2VsbEZvcm11bGEiLCEwXSxbImNlbGxTdHlsZXMiLCExXSxbImNlbGxUZXh0IiwhMF0s''@;'; put 'put ''WyJjZWxsRGF0ZXMiLCExXSxbInNoZWV0U3R1YnMiLCExXSxbInNoZWV0Um93cyIsMCwibiJdLFsiYm9va0RlcHMiLCExXSxbImJvb2tTaGVldHMiLCExXSxbImJvb2tQcm9wcyIsITFdLFsiYm9va0ZpbGVzIiwhMV0sWyJib29rVkJBIiwhMV0sWyJwYXNzd29yZCIsIiJdLFsiV1RGIiwhMV1d''@;'; put 'put ''KSh5KSx5LmJvb2tJbWFnZXMmJih5LmNlbGxTdHlsZXM9ITApfSxPMj11RChbWyJjZWxsRGF0ZXMiLCExXSxbImJvb2tTU1QiLCExXSxbImJvb2tUeXBlIiwieGxzeCJdLFsiY29tcHJlc3Npb24iLCExXSxbIldURiIsITFdXSk7ZnVuY3Rpb24gY2VlKHkpe3JldHVybiBTby5XUy5pbmRleE9m''@;'; put 'put ''KHkpPi0xPyJzaGVldCI6U28uQ1MmJnk9PVNvLkNTPyJjaGFydCI6U28uRFMmJnk9PVNvLkRTPyJkaWFsb2ciOlNvLk1TJiZ5PT1Tby5NUz8ibWFjcm8iOnkmJnkubGVuZ3RoP3k6InNoZWV0In12YXIgRHY9W107ZnVuY3Rpb24gdmgoeSxQLEwsWCxuZSxmZSxiZSx2ZSx5ZSxWZSx6ZSxXZSl7''@;'; put 'put ''dHJ5e2ZlW1hdPXYyKGVuKHksTCwhMCksUCk7dmFyIGx0LHJ0PUV0KHksUCk7c3dpdGNoKHZlKXtjYXNlInNoZWV0IjpsdD1mdW5jdGlvbiBkQih5LFAsTCxYLG5lLGZlLGJlLHZlKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBXVih5LFAsTCxYLG5lLGZlLGJlKXtpZigh''@;'; put 'put ''eSlyZXR1cm4geTt2YXIgdmU9UHx8e307WHx8KFg9eyIhaWQiOnt9fSksbnVsbCE9ZWUmJm51bGw9PXZlLmRlbnNlJiYodmUuZGVuc2U9ZWUpO3ZhciBWZSxDdCxhdCx2dCxQdCxrdCxEdCxadCxnbiwkbix5ZT12ZS5kZW5zZT9bXTp7fSx6ZT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9''@;'; put 'put ''fSxXZT1bXSxydD0hMSxsdD0hMSxjbj1bXTt2ZS5iaWZmPTEyLHZlWyIhcm93Il09MDt2YXIgWG49MCxCbj0hMSxEbj1bXSxRbj17fSxlcj12ZS5zdXBib29rc3x8bmUuc3VwYm9va3N8fFtbXV07aWYoZXIuc2hhcmVkZj1Rbixlci5hcnJheWY9RG4sZXIuU2hlZXROYW1lcz1uZS5TaGVldE5h''@;'; put 'put ''bWVzfHxuZS5TaGVldHMubWFwKGZ1bmN0aW9uKHRpKXtyZXR1cm4gdGkubmFtZX0pLCF2ZS5zdXBib29rcyYmKHZlLnN1cGJvb2tzPWVyLG5lLk5hbWVzKSlmb3IodmFyIHpuPTA7em48bmUuTmFtZXMubGVuZ3RoOysrem4pZXJbMF1bem4rMV09bmUuTmFtZXNbem5dO3ZhciBLcj1bXSxpaT1b''@;'; put 'put ''XSxFaT0hMTtpZihMNlsxNl09e246IkJydFNob3J0UmVhbCIsZjpBVn0sbWMoeSxmdW5jdGlvbihmcixBbix3cil7aWYoIWx0KXN3aXRjaCh3cil7Y2FzZSAxNDg6VmU9ZnI7YnJlYWs7Y2FzZSAwOkN0PWZyLHZlLnNoZWV0Um93cyYmdmUuc2hlZXRSb3dzPD1DdC5yJiYobHQ9ITApLGduPWJz''@;'; put 'put ''KFB0PUN0LnIpLHZlWyIhcm93Il09Q3QuciwoZnIuaGlkZGVufHxmci5ocHR8fG51bGwhPWZyLmxldmVsKSYmKGZyLmhwdCYmKGZyLmhweD1jZChmci5ocHQpKSxpaVtmci5yXT1mcik7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2Ug''@;'; put 'put ''OTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6c3dpdGNoKGF0PXt0OmZyWzJdfSxmclsyXSl7Y2FzZSJuIjphdC52PWZyWzFdO2JyZWFrO2Nhc2UicyI6YXQudj0oWnQ9bDZbZnJbMV1dKS50LHZlLmNlbGxTdHlsZXMmJihh''@;'; put 'put ''dC5SPWZ1bmN0aW9uIGJOKHksUCl7aWYoeS5SKXJldHVybiB5LlI7aWYoUCYmUC5Gb250cyYmKDEhPXkuci5sZW5ndGh8fDAhPXkuclswXS5pY2gpKXt5LlI9W107dmFyIEw9MCxYPXkucltMXSxuZT15LnJbTCsxXTtmb3IoWC5pY2g+MCYmeS5SLnB1c2goe3Q6InMiLHY6eS50LnNsaWNlKDAs''@;'; put 'put ''WC5pY2gpfSk7TDx5LnIubGVuZ3RoLTE7KytMKXkuUi5wdXNoKHt0OiJzIix2OnkudC5zbGljZSgoWD15LnJbTF0pLmljaCwobmU9eS5yW0wrMV0pLmljaCksczpQLkZvbnRzW1guaWZudF19KTtyZXR1cm4geS5SLnB1c2goe3Q6InMiLHY6eS50LnNsaWNlKChuZXx8WCkuaWNoKSxzOlAuRm9u''@;'; put 'put ''dHNbKG5lfHxYKS5pZm50XX0pLHkuUn19KFp0LGJlKSk7YnJlYWs7Y2FzZSJiIjphdC52PSEhZnJbMV07YnJlYWs7Y2FzZSJlIjphdC52PWZyWzFdLCExIT09dmUuY2VsbFRleHQmJihhdC53PUZsW2F0LnZdKTticmVhaztjYXNlInN0ciI6YXQudD0icyIsYXQudj1mclsxXX1pZigodnQ9YmUu''@;'; put 'put ''Q2VsbFhmW2ZyWzBdLmlTdHlsZVJlZl0pJiZyMyhhdCx2dC5udW1GbXRJZCx2dC5maWxsSWQsdnQuZm9udElkLHZ0LmJvcmRlcklkLHZlLDAsYmUpLHZlLmNlbGxTdHlsZXMmJmF0LnMmJnZ0LmFsaWdubWVudCYmKGF0LnMuYWxpZ25tZW50PUt0KHZ0LmFsaWdubWVudCkpLGt0PS0xPT1mclsw''@;'; put 'put ''XS5jP2t0KzE6ZnJbMF0uYyx2ZS5kZW5zZT8oeWVbUHRdfHwoeWVbUHRdPVtdKSx5ZVtQdF1ba3RdPWF0KTp5ZVt5byhrdCkrZ25dPWF0LHZlLmNlbGxGb3JtdWxhKXtmb3IoQm49ITEsWG49MDtYbjxEbi5sZW5ndGg7KytYbil7dmFyIHJyPURuW1huXTtDdC5yPj1yclswXS5zLnImJkN0LnI8''@;'; put 'put ''PXJyWzBdLmUuciYma3Q+PXJyWzBdLnMuYyYma3Q8PXJyWzBdLmUuYyYmKGF0LkY9RGkocnJbMF0pLEJuPSEwKX0hQm4mJmZyLmxlbmd0aD4zJiYoYXQuZj1mclszXSl9aWYoemUucy5yPkN0LnImJih6ZS5zLnI9Q3QuciksemUucy5jPmt0JiYoemUucy5jPWt0KSx6ZS5lLnI8Q3QuciYmKHpl''@;'; put 'put ''LmUucj1DdC5yKSx6ZS5lLmM8a3QmJih6ZS5lLmM9a3QpLHZlLmNlbGxEYXRlcyYmdnQmJiJuIj09YXQudCYmdy5pc19kYXRlKHcuX3RhYmxlW3Z0Lm51bUZtdElkXSkpe3ZhciBFbj13LnBhcnNlX2RhdGVfY29kZShhdC52KTtFbiYmKGF0LnQ9ImQiLGF0LnY9bmV3IERhdGUoRW4ueSxFbi5t''@;'; put 'put ''LTEsRW4uZCxFbi5ILEVuLk0sRW4uUyxFbi51KSl9YnJlYWs7Y2FzZSAxOmNhc2UgMTI6aWYoIXZlLnNoZWV0U3R1YnN8fHJ0KWJyZWFrO2F0PXt0OiJ6Iix2OnZvaWQgMH0sa3Q9LTE9PWZyWzBdLmM/a3QrMTpmclswXS5jLCh2dD1iZS5DZWxsWGZbZnJbMF0uaVN0eWxlUmVmXSkmJnIzKGF0''@;'; put 'put ''LHZ0Lm51bUZtdElkLHZ0LmZpbGxJZCx2dC5mb250SWQsdnQuYm9yZGVySWQsdmUsMCxiZSksdmUuY2VsbFN0eWxlcyYmYXQucyYmdnQuYWxpZ25tZW50JiYoYXQucy5hbGlnbm1lbnQ9S3QodnQuYWxpZ25tZW50KSksdmUuZGVuc2U/KHllW1B0XXx8KHllW1B0XT1bXSkseWVbUHRdW2t0XT1h''@;'; put 'put ''dCk6eWVbeW8oa3QpK2duXT1hdCx6ZS5zLnI+Q3QuciYmKHplLnMucj1DdC5yKSx6ZS5zLmM+a3QmJih6ZS5zLmM9a3QpLHplLmUucjxDdC5yJiYoemUuZS5yPUN0LnIpLHplLmUuYzxrdCYmKHplLmUuYz1rdCk7YnJlYWs7Y2FzZSAxNzY6Y24ucHVzaChmcik7YnJlYWs7Y2FzZSA0OTQ6dmFy''@;'; put 'put ''IENyPVhbIiFpZCJdW2ZyLnJlbElkXTtmb3IoQ3I/KGZyLlRhcmdldD1Dci5UYXJnZXQsZnIubG9jJiYoZnIuVGFyZ2V0Kz0iIyIrZnIubG9jKSxmci5SZWw9Q3IpOiIiPT1mci5yZWxJZCYmKGZyLlRhcmdldD0iIyIrZnIubG9jKSxQdD1mci5yZngucy5yO1B0PD1mci5yZnguZS5yOysrUHQp''@;'; put 'put ''Zm9yKGt0PWZyLnJmeC5zLmM7a3Q8PWZyLnJmeC5lLmM7KytrdCl2ZS5kZW5zZT8oeWVbUHRdfHwoeWVbUHRdPVtdKSx5ZVtQdF1ba3RdfHwoeWVbUHRdW2t0XT17dDoieiIsdjp2b2lkIDB9KSx5ZVtQdF1ba3RdLmw9ZnIpOihEdD1BaSh7YzprdCxyOlB0fSkseWVbRHRdfHwoeWVbRHRdPXt0''@;'; put 'put ''OiJ6Iix2OnZvaWQgMH0pLHllW0R0XS5sPWZyKTticmVhaztjYXNlIDQyNjppZighdmUuY2VsbEZvcm11bGEpYnJlYWs7RG4ucHVzaChmciksKCRuPXZlLmRlbnNlP3llW1B0XVtrdF06eWVbeW8oa3QpK2duXSkuZj1ndShmclsxXSx6ZSx7cjpDdC5yLGM6a3R9LGVyLHZlKSwkbi5GPURpKGZy''@;'; put 'put ''WzBdKTticmVhaztjYXNlIDQyNzppZighdmUuY2VsbEZvcm11bGEpYnJlYWs7UW5bQWkoZnJbMF0ucyldPWZyWzFdLCgkbj12ZS5kZW5zZT95ZVtQdF1ba3RdOnllW3lvKGt0KStnbl0pLmY9Z3UoZnJbMV0semUse3I6Q3QucixjOmt0fSxlcix2ZSk7YnJlYWs7Y2FzZSA2MDppZighdmUuY2Vs''@;'; put 'put ''bFN0eWxlcylicmVhaztmb3IoO2ZyLmU+PWZyLnM7KUtyW2ZyLmUtLV09e3dpZHRoOmZyLncvMjU2LGhpZGRlbjohISgxJmZyLmZsYWdzKSxsZXZlbDpmci5sZXZlbH0sRWl8fChFaT0hMCksXzAoS3JbZnIuZSsxXSk7YnJlYWs7Y2FzZSAxNjE6eWVbIiFhdXRvZmlsdGVyIl09e3JlZjpEaShm''@;'; put 'put ''cil9O2JyZWFrO2Nhc2UgNDc2OnllWyIhbWFyZ2lucyJdPWZyO2JyZWFrO2Nhc2UgMTQ3Om5lLlNoZWV0c1tMXXx8KG5lLlNoZWV0c1tMXT17fSksZnIubmFtZSYmKG5lLlNoZWV0c1tMXS5Db2RlTmFtZT1mci5uYW1lKSwoZnIuYWJvdmV8fGZyLmxlZnQpJiYoeWVbIiFvdXRsaW5lIl09e2Fi''@;'; put 'put ''b3ZlOmZyLmFib3ZlLGxlZnQ6ZnIubGVmdH0pO2JyZWFrO2Nhc2UgMTM3Om5lLlZpZXdzfHwobmUuVmlld3M9W3t9XSksbmUuVmlld3NbMF18fChuZS5WaWV3c1swXT17fSksZnIuUlRMJiYobmUuVmlld3NbMF0uUlRMPSEwKSxmci5ncmlkfHwobmUuVmlld3NbMF0uZ3JpZD0hMSx5ZVsiIWdy''@;'; put 'put ''aWRsaW5lcyJdPSExKTticmVhaztjYXNlIDQ4NTp5ZVsiIXNoZWV0Rm9ybWF0Il09ZnI7YnJlYWs7Y2FzZSA2NDpjYXNlIDEwNTM6IWZ1bmN0aW9uIFlWKHksUCxMLFgpe2lmKFApe3ZhciBuZT17cmVmOlAuc3FyZngsdDpQLnR9O1Aub3AmJihuZS5vcD1QLm9wKTt2YXIgZmU9IiIsYmU9IiIs''@;'; put 'put ''dmU9UC5zcXJmeD8ic3RyaW5nIj09dHlwZW9mIFAuc3FyZng/Um8oUC5zcXJmeC5zcGxpdCgiLCIpWzBdKTpQLnNxcmZ4Om51bGw7aWYoUC5mMSYmKGZlPWd1KFAuZjEsdmUsbnVsbCxMLFgsITApKSxQLmYyJiYoYmU9Z3UoUC5mMix2ZSxudWxsLEwsWCwhMCkpLFAub3AmJlsiSU4iLCJPVCJd''@;'; put 'put ''LmluZGV4T2YoUC5vcCk+PS0xKW5lLm1pbj1mZSxuZS5tYXg9YmU7ZWxzZSBpZihQLm9wKW5lLnY9ZmU7ZWxzZSB0cnl7c3dpdGNoKFAudCl7Y2FzZSJMaXN0IjppZigiUHRnU3RyIj09PVAuZjFbMF1bMF1bMF0mJjE9PVAuZjFbMF0ubGVuZ3RoKXtuZS5sPVAuZjFbMF1bMF1bMV0uc3BsaXQo''@;'; put 'put ''IiwiKTticmVha31jYXNlIkN1c3RvbSI6bmUuZj1mZX19Y2F0Y2h7fXlbIiF2YWxpZGF0aW9ucyJdfHwoeVsiIXZhbGlkYXRpb25zIl09W10pLHlbIiF2YWxpZGF0aW9ucyJdLnB1c2gobmUpfX0oeWUsZnIsZXIsdmUpO2JyZWFrO2Nhc2UgMTUxOnllWyIhZnJlZXplIl09ZnJbMF07YnJlYWs7''@;'; put 'put ''Y2FzZSAxNTI6eWVbIiFzZWwiXT1mcjticmVhaztjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNlIDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0OTpjYXNlIDExMDU6Y2FzZSA0OTpjYXNlIDU4OTpjYXNlIDYwNzpjYXNlIDU2''@;'; put 'put ''NDpjYXNlIDEwNTU6Y2FzZSAxNjg6Y2FzZSAxNzQ6Y2FzZSAxMTgwOmNhc2UgNDk5OmNhc2UgNTA3OmNhc2UgNTUwOmNhc2UgMTcxOmNhc2UgMTY3OmNhc2UgMTE3NzpjYXNlIDE2OTpjYXNlIDExODE6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA2NjE6Y2FzZSA2Mzk6Y2FzZSA0Nzg6Y2FzZSA1''@;'; put 'put ''Mzc6Y2FzZSA0Nzc6Y2FzZSA1MzY6Y2FzZSAxMTAzOmNhc2UgNjgwOmNhc2UgMTEwNDpjYXNlIDEwMjQ6Y2FzZSA2NjM6Y2FzZSA1MzU6Y2FzZSA2Nzg6Y2FzZSA1MDQ6Y2FzZSAxMDQzOmNhc2UgNDI4OmNhc2UgMTcwOmNhc2UgMzA3MjpjYXNlIDUwOmNhc2UgMjA3MDpjYXNlIDEwNDU6YnJl''@;'; put 'put ''YWs7Y2FzZSAzNTpydD0hMDticmVhaztjYXNlIDM2OnJ0PSExO2JyZWFrO2Nhc2UgMzc6V2UucHVzaChBbikscnQ9ITA7YnJlYWs7Y2FzZSAzODpXZS5wb3AoKSxydD0hMTticmVhaztkZWZhdWx0OmlmKCEoKEFufHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoQW58fCIiKS5pbmRleE9m''@;'; put 'put ''KCJFbmQiKT4wKSYmKCFydHx8dmUuV1RGJiYiQnJ0QUNCZWdpbiIhPVdlW1dlLmxlbmd0aC0xXSkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAiK3dyKyIgIitBbil9fSx2ZSksZGVsZXRlIHZlLnN1cGJvb2tzLGRlbGV0ZSB2ZVsiIXJvdyJdLCF5ZVsiIXJlZiJdJiYoemUu''@;'; put 'put ''cy5yPDJlNnx8VmUmJihWZS5lLnI+MHx8VmUuZS5jPjB8fFZlLnMucj4wfHxWZS5zLmM+MCkpJiYoeWVbIiFyZWYiXT1EaShWZXx8emUpKSx2ZS5zaGVldFJvd3MmJnllWyIhcmVmIl0pe3ZhciBPaT1Sbyh5ZVsiIXJlZiJdKTt2ZS5zaGVldFJvd3M8PStPaS5lLnImJihPaS5lLnI9dmUuc2hl''@;'; put 'put ''ZXRSb3dzLTEsT2kuZS5yPnplLmUuciYmKE9pLmUucj16ZS5lLnIpLE9pLmUucjxPaS5zLnImJihPaS5zLnI9T2kuZS5yKSxPaS5lLmM+emUuZS5jJiYoT2kuZS5jPXplLmUuYyksT2kuZS5jPE9pLnMuYyYmKE9pLnMuYz1PaS5lLmMpLHllWyIhZnVsbHJlZiJdPXllWyIhcmVmIl0seWVbIiFy''@;'; put 'put ''ZWYiXT1EaShPaSkpfXJldHVybiBjbi5sZW5ndGg+MCYmKHllWyIhbWVyZ2VzIl09Y24pLEtyLmxlbmd0aD4wJiYoeWVbIiFjb2xzIl09S3IpLGlpLmxlbmd0aD4wJiYoeWVbIiFyb3dzIl09aWkpLHllfSh5LFgsTCxuZSxmZSwwLHZlKTpmdW5jdGlvbiBoNih5LFAsTCxYLG5lLGZlLGJlKXtp''@;'; put 'put ''ZigheSlyZXR1cm4geTtYfHwoWD17IiFpZCI6e319KSxudWxsIT1lZSYmbnVsbD09UC5kZW5zZSYmKFAuZGVuc2U9ZWUpO3ZhciB2ZT1QLmRlbnNlP1tdOnt9LHllPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19LFZlPSIiLHplPSIiLFdlPXkubWF0Y2goWmspO1dlPyhWZT15LnNsaWNl''@;'; put 'put ''KDAsV2UuaW5kZXgpLHplPXkuc2xpY2UoV2UuaW5kZXgrV2VbMF0ubGVuZ3RoKSk6VmU9emU9eTt2YXIgcnQ9emUubGFzdEluZGV4T2YoImV4dExzdCIpLEN0PSgtMT09cnR8fHplLnNsaWNlKHJ0KSxWZS5tYXRjaChHaykpO0N0P2l2KEN0WzBdLDAsbmUsTCk6KEN0PVZlLm1hdGNoKHFrKSkm''@;'; put 'put ''JmZ1bmN0aW9uIFFIKHksUCxMLFgsbmUsZmUsYmUpe2l2KHkuc2xpY2UoMCx5LmluZGV4T2YoIj4iKSksMCxYLG5lKTt2YXIgdmU9UC5tYXRjaChpQyk7aWYodmUpe3ZhciBWZT16VChhbih2ZVswXSksZmUsYmUpO0xbIiF0YWJjb2xvciJdPVZlfWlmKCh2ZT1QLm1hdGNoKFhIKSkmJmFuKHZl''@;'; put 'put ''WzBdKS5maXRUb1BhZ2UmJihMWyIhcHJpbnQiXXx8KExbIiFwcmludCJdPXt9KSxMWyIhcHJpbnQiXS5wcm9wc3x8KExbIiFwcmludCJdLnByb3BzPXt9KSxMWyIhcHJpbnQiXS5wcm9wcy5maXR8fChMWyIhcHJpbnQiXS5wcm9wcy5maXQ9e30pLG51bGw9PUxbIiFwcmludCJdLnByb3BzLmZp''@;'; put 'put ''dC5oZWlnaHQmJihMWyIhcHJpbnQiXS5wcm9wcy5maXQuaGVpZ2h0PTEpLG51bGw9PUxbIiFwcmludCJdLnByb3BzLmZpdC53aWR0aCYmKExbIiFwcmludCJdLnByb3BzLmZpdC53aWR0aD0xKSksdmU9UC5tYXRjaChKSCkpe0xbIiFvdXRsaW5lIl09e307dmFyIFdlPWFuKHZlWzBdKTtXZS5z''@;'; put 'put ''dW1tYXJ5QmVsb3cmJihMWyIhb3V0bGluZSJdLmFib3ZlPSFScihXZS5zdW1tYXJ5QmVsb3cpKSxXZS5zdW1tYXJ5UmlnaHQmJihMWyIhb3V0bGluZSJdLmxlZnQ9IVJyKFdlLnN1bW1hcnlSaWdodCkpfX0oQ3RbMF0sQ3RbMV18fCIiLHZlLG5lLEwsYmUsZmUpO3ZhciBhdD0oVmUubWF0Y2go''@;'; put 'put ''LzwoPzpcdyo6KT9kaW1lbnNpb24vKXx8e2luZGV4Oi0xfSkuaW5kZXg7aWYoYXQ+MCl7dmFyIHZ0PVZlLnNsaWNlKGF0LGF0KzUwKS5tYXRjaChudik7dnQmJighUHx8IVAubm9kaW0pJiZmdW5jdGlvbiBYdyh5LFApe3ZhciBMPVJvKFApO0wucy5yPD1MLmUuciYmTC5zLmM8PUwuZS5jJiZM''@;'; put 'put ''LnMucj49MCYmTC5zLmM+PTAmJih5WyIhcmVmIl09RGkoTCkpfSh2ZSx2dFsxXSl9dmFyIFB0PVZlLm1hdGNoKG9zKTtQdCYmUHRbMV0mJmZ1bmN0aW9uIGdWKHksUCxMLFgpe0wuVmlld3N8fChMLlZpZXdzPVt7fV0pO3ZhciBuZT0wO3kucmVwbGFjZShkQyxmdW5jdGlvbihmZSxiZSl7dmFy''@;'; put 'put ''IHZlPWFuKGZlKTtpZihMLlZpZXdzW1hdfHwoTC5WaWV3c1tYXT17fSksUnIodmUucmlnaHRUb0xlZnQpJiYoTC5WaWV3c1tYXS5SVEw9ITApLHZlLnNob3dHcmlkTGluZXMmJihMLlZpZXdzW1hdLmdyaWQ9UnIodmUuc2hvd0dyaWRMaW5lcyksbnVsbD09UFsiIWdyaWRsaW5lcyJdJiYoUFsi''@;'; put 'put ''IWdyaWRsaW5lcyJdPVJyKHZlLnNob3dHcmlkTGluZXMpKSksK3ZlLnpvb21TY2FsZSYmKEwuVmlld3NbWF0uem9vbT0rdmUuem9vbVNjYWxlKSx2ZS52aWV3JiYoTC5WaWV3c1tYXS52aWV3PXZlLnZpZXcpLDE9PSsrbmUmJiIvPiIhPWZlLnNsaWNlKC0yKSl7dmFyIHllPXkuc2xpY2UoYmUr''@;'; put 'put ''ZmUubGVuZ3RoKSxWZT15ZS5tYXRjaCgvPFwvKD86XHc6KT9zaGVldFZpZXcoPzpbXj5hLXpdW14+XSopP1wvPz4vKTtpZighVmUpcmV0dXJuIiI7dmFyIHplPSh5ZT15ZS5zbGljZSgwLFZlLmluZGV4KSkubWF0Y2goLzwoPzpcdzopP3BhbmUoPzpbXj5hLXpdW14+XSopP1wvPz4vKTtpZih6''@;'; put 'put ''ZSl7dmFyIFdlPWFuKHplWzBdKTsiZnJvemVuIj09V2Uuc3RhdGU/UFsiIWZyZWV6ZSJdPXlvKCtXZS54U3BsaXR8fDApK2JzKCtXZS55U3BsaXR8fDApOldlLnRvcExlZnRDZWxsJiYoUFsiIWZyZWV6ZSJdPVdlLnRvcExlZnRDZWxsKX12YXIgcnQ9eWUubWF0Y2goLzwoPzpcdzopP3NlbGVj''@;'; put 'put ''dGlvbig/OltePmEtel1bXj5dKik/XC8/Pi8pO2lmKHJ0KXt2YXIgbHQ9YW4ocnRbMF0pO2lmKGx0LmFjdGl2ZUNlbGwmJihQWyIhc2VsIl09e2NlbGw6bHQuYWN0aXZlQ2VsbH0pLGx0LnNxcmVmKXt2YXIgQ3Q9bHQuc3FyZWYucmVwbGFjZSgvXHMuKiQvLCIiKTtQWyIhc2VsIl18fChQWyIh''@;'; put 'put ''c2VsIl09e2NlbGw6QWkoYWEoQ3QpLnMpfSksUFsiIXNlbCJdLnJhbmdlPWx0LnNxcmVmfX19cmV0dXJuIiJ9KX0oUHRbMV0sdmUsbmUsTCk7dmFyIGt0PVZlLm1hdGNoKEplKSxEdD1bXTtpZihQLmNlbGxTdHlsZXMpe3ZhciBadD1WZS5tYXRjaCgkSCk7WnQmJmZ1bmN0aW9uIGFDKHksUCxM''@;'; put 'put ''KXtmb3IodmFyIFg9ITEsbmU9MDtuZSE9UC5sZW5ndGg7KytuZSl7dmFyIGZlPWFuKFBbbmVdLCEwKTtmZS5oaWRkZW4mJihmZS5oaWRkZW49UnIoZmUuaGlkZGVuKSk7dmFyIGJlPXBhcnNlSW50KGZlLm1pbiwxMCktMSx2ZT1wYXJzZUludChmZS5tYXgsMTApLTE7Zm9yKGZlLm91dGxpbmVM''@;'; put 'put ''ZXZlbCYmKGZlLmxldmVsPStmZS5vdXRsaW5lTGV2ZWx8fDApLGRlbGV0ZSBmZS5taW4sZGVsZXRlIGZlLm1heCxmZS53aWR0aD0rZmUud2lkdGgsIVgmJmZlLndpZHRoJiYoWD0hMCksXzAoZmUpLGZlLnN0eWxlJiYoZmUucz1tNihmZS5zdHlsZSxMKSk7YmU8PXZlOyl5W2JlKytdPUt0KGZl''@;'; put 'put ''KX19KER0LFp0LGJlKX1pZihXZSYmdjYoV2VbMV0sTCx2ZSxQLHllLGZlLGJlKSxQLmNhbGxiYWNrKXJldHVybiB2ZTt2YXIgZ249emUubWF0Y2goJGspO2duJiYodmVbIiFwcm90ZWN0Il09ZnVuY3Rpb24gb1YoeSl7dmFyIFA9YW4oeSwhMCwhMCksTD17fTtpZihScihQLnNoZWV0KSlyZXR1''@;'; put 'put ''cm4gc0MuZm9yRWFjaChmdW5jdGlvbihYKXtMW1hdPW51bGwhPVBbWF0mJlJyKFBbWF0pfSksc0EuZm9yRWFjaChmdW5jdGlvbihYKXtMW1hdPW51bGw9PVBbWF18fFJyKFBbWF0pfSksUC5hbGdvcml0aG1OYW1lJiYoTC5lbmNyeXB0aW9uPXthbGdvOlAuYWxnb3JpdGhtTmFtZSxoYXNoOlAu''@;'; put 'put ''aGFzaFZhbHVlLHNhbHQ6UC5zYWx0VmFsdWUsc3BpbjorUC5zcGluQ291bnR8fDFlNX0pLEx9KGduWzBdKSk7dmFyICRuPXplLm1hdGNoKHFIKTskbiYmKHZlWyIhYXV0b2ZpbHRlciJdPWZ1bmN0aW9uIGxWKHkpe3JldHVybntyZWY6KHkubWF0Y2goL3JlZj0iKFteIl0qKSIvKXx8W10pWzFd''@;'; put 'put ''fX0oJG5bMF0pKTt2YXIgY249W10sWG49emUubWF0Y2goZDYpO2lmKFhuKWZvcihhdD0wO2F0IT1Ybi5sZW5ndGg7KythdCljblthdF09Um8oWG5bYXRdLnNsaWNlKFhuW2F0XS5pbmRleE9mKCciJykrMSkpO3ZhciBCbj0oLTE9PXJ0P3plOnplLnNsaWNlKDAscnQpKS5tYXRjaChRdyk7Qm4m''@;'; put 'put ''Jih2ZVsiIWNvbmRmbXQiXT1bXS5jb25jYXQuYXBwbHkoW10sQm4ubWFwKGZ1bmN0aW9uKEFuKXtyZXR1cm4gZ2goQW4sUCxmZSxiZSl9KSkpLHJ0Pi0xJiYoQm49emUuc2xpY2UocnQpLm1hdGNoKFF3KSkmJih2ZVsiIWNvbmRmbXQiXXx8KHZlWyIhY29uZGZtdCJdPVtdKSx2ZVsiIWNvbmRm''@;'; put 'put ''bXQiXT12ZVsiIWNvbmRmbXQiXS5jb25jYXQuYXBwbHkodmVbIiFjb25kZm10Il0sQm4ubWFwKGZ1bmN0aW9uKEFuKXtyZXR1cm4gZ2goQW4sUCxmZSxiZSwhMCl9KSkpO3ZhciBEbj0oLTE9PXJ0P3plOnplLnNsaWNlKDAscnQpKS5tYXRjaChfZSk7RG4mJih2ZVsiIXZhbGlkYXRpb25zIl09''@;'; put 'put ''Y0MoRG5bMF0sUCkpLHJ0Pi0xJiYoRG49emUuc2xpY2UocnQpLm1hdGNoKF9lKSkmJih2ZVsiIXZhbGlkYXRpb25zIl18fCh2ZVsiIXZhbGlkYXRpb25zIl09W10pLHZlWyIhdmFsaWRhdGlvbnMiXT12ZVsiIXZhbGlkYXRpb25zIl0uY29uY2F0KGNDKERuWzBdLFAsITApKSk7dmFyIFFuPXpl''@;'; put 'put ''Lm1hdGNoKEp3KTtRbiYmZnVuY3Rpb24gYUEoeSxQLEwpe2Zvcih2YXIgWD1BcnJheS5pc0FycmF5KHkpLG5lPTA7bmUhPVAubGVuZ3RoOysrbmUpe3ZhciBmZT1hbihZaShQW25lXSksITApO2lmKCFmZS5yZWYpcmV0dXJuO3ZhciBiZT0oKEx8fHt9KVsiIWlkIl18fFtdKVtmZS5pZF07YmU/''@;'; put 'put ''KGZlLlRhcmdldD1iZS5UYXJnZXQsZmUubG9jYXRpb24mJihmZS5UYXJnZXQrPSIjIitocihmZS5sb2NhdGlvbikpKTooZmUuVGFyZ2V0PSIjIitocihmZS5sb2NhdGlvbiksYmU9e1RhcmdldDpmZS5UYXJnZXQsVGFyZ2V0TW9kZToiSW50ZXJuYWwifSksZmUuUmVsPWJlLGZlLnRvb2x0aXAm''@;'; put 'put ''JihmZS5Ub29sdGlwPWZlLnRvb2x0aXAsZGVsZXRlIGZlLnRvb2x0aXApO2Zvcih2YXIgdmU9Um8oZmUucmVmKSx5ZT12ZS5zLnI7eWU8PXZlLmUucjsrK3llKWZvcih2YXIgVmU9dmUucy5jO1ZlPD12ZS5lLmM7KytWZSl7dmFyIHplPUFpKHtjOlZlLHI6eWV9KTtYPyh5W3llXXx8KHlbeWVd''@;'; put 'put ''PVtdKSx5W3llXVtWZV18fCh5W3llXVtWZV09e3Q6InoiLHY6dm9pZCAwfSkseVt5ZV1bVmVdLmw9ZmUpOih5W3plXXx8KHlbemVdPXt0OiJ6Iix2OnZvaWQgMH0pLHlbemVdLmw9ZmUpfX19KHZlLFFuLFgpO3ZhciBlcj16ZS5tYXRjaChlQyk7ZXImJmZ1bmN0aW9uIGVWKHksUCl7dmFyIEw9''@;'; put 'put ''YW4oeSwhMSwhMCk7UFsiIXByaW50Il18fChQWyIhcHJpbnQiXT17fSksUFsiIXByaW50Il0ucHJvcHN8fChQWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIFg9UFsiIXByaW50Il0ucHJvcHM7TC5ncmlkTGluZXMmJihYLmdyaWRsaW5lcz1ScihMLmdyaWRMaW5lcykpLG51bGwhPUwuaG9yaXpv''@;'; put 'put ''bnRhbENlbnRlcmVkJiYoWC5jZW50ZXJYPVJyKEwuaG9yaXpvbnRhbENlbnRlcmVkKSksbnVsbCE9TC52ZXJ0aWNhbENlbnRlcmVkJiYoWC5jZW50ZXJZPVJyKEwudmVydGljYWxDZW50ZXJlZCkpfShlclswXSx2ZSk7dmFyIHpuPXplLm1hdGNoKFdrKTt6biYmKCh2ZVsiIXByaW50Il18fCh2''@;'; put 'put ''ZVsiIXByaW50Il09e30pKS5tYXJnaW5zPXZlWyIhbWFyZ2lucyJdPWxBKGFuKHpuWzBdKSkpO3ZhciBLcj16ZS5tYXRjaChYayk7S3ImJmZ1bmN0aW9uIGlBKHksUCl7dmFyIEw9YW4oeSwhMSwhMCk7ZGVsZXRlIEwuaWQsZGVsZXRlIExbMF0sUFsiIXByaW50Il18fChQWyIhcHJpbnQiXT17''@;'; put 'put ''fSksUFsiIXByaW50Il0ucHJvcHN8fChQWyIhcHJpbnQiXS5wcm9wcz17fSk7dmFyIFg9UFsiIXByaW50Il0ucHJvcHM7TC5vcmllbnRhdGlvbiYmKFgub3JpZW50YXRpb249TC5vcmllbnRhdGlvbiksTC5zY2FsZSYmKFguc2NhbGU9K0wuc2NhbGUpLCtMLmZpdFRvSGVpZ2h0Pj0wJiYoKFgu''@;'; put 'put ''Zml0fHwoWC5maXQ9e30pKS5oZWlnaHQ9K0wuZml0VG9IZWlnaHQpLCtMLmZpdFRvV2lkdGg+PTAmJigoWC5maXR8fChYLmZpdD17fSkpLndpZHRoPStMLmZpdFRvV2lkdGgpLEwucGFwZXJIZWlnaHQmJkwucGFwZXJXaWR0aD9YLnBhcGVyPXt3aWR0aDpMLnBhcGVyV2lkdGgsaGVpZ2h0Okwu''@;'; put 'put ''cGFwZXJIZWlnaHR9OkwucGFwZXJTaXplJiYoWC5wYXBlcj1uNltYLnBhcGVyPStMLnBhcGVyU2l6ZV18fFgucGFwZXIpLEwuaG9yaXpvbnRhbERwaT9YLmRwaT0rTC5ob3Jpem9udGFsRHBpOkwudmVydGljYWxEcGkmJihYLmRwaT0rTC52ZXJ0aWNhbERwaSksImF1dG9tYXRpYyIhPShMLmZp''@;'; put 'put ''cnN0UGFnZU51bWJlcnx8ImF1dG9tYXRpYyIpJiYoWC5maXJzdD0rTC5maXJzdFBhZ2VOdW1iZXIpLFJyKEwuYmxhY2tBbmRXaGl0ZSkmJihYLmJ3PSEwKSxScihMLmRyYWZ0KSYmKFguZHJhZnQ9ITApLCJvdmVyVGhlbkRvd24iPT1MLnBhZ2VPcmRlciYmKFgub3JkZXI9Im92ZXIiKSx0QVtM''@;'; put 'put ''LmNlbGxDb21tZW50c10mJihYLmNvbW1lbnRzPXRBW0wuY2VsbENvbW1lbnRzXSksckFbTC5lcnJvcnNdJiYoWC5lcnJvcnM9ckFbTC5lcnJvcnNdKX0oS3JbMF0sdmUpO3ZhciBpaT16ZS5tYXRjaChXZyk7aWkmJmZ1bmN0aW9uIHVWKHksUCl7aWYoUFsiIXByaW50Il18fChQWyIhcHJpbnQi''@;'; put 'put ''XT17fSkseVsxXSl7dmFyIEw9IiIsWD0wO3lbMV0ucmVwbGFjZShYdCxmdW5jdGlvbihuZSxmZSl7aWYoIi8iIT1uZS5jaGFyQXQoMSkpTD1uZS5zbGljZSgxLC0xKSxYPWZlK25lLmxlbmd0aDtlbHNlIGlmKEwpe3ZhciBiZT1MLm1hdGNoKC9IZWFkZXIvKT8iaGVhZGVyIjoiZm9vdGVyIix2''@;'; put 'put ''ZT1MLnJlcGxhY2UoL0hlYWRlcnxGb290ZXIvLCIiKTtMPSIiLFBbIiFwcmludCJdW2JlXXx8KFBbIiFwcmludCJdW2JlXT17fSksUFsiIXByaW50Il1bYmVdW3ZlXT1ocihZaSh5WzFdLnNsaWNlKFgsZmUpKSl9fSl9fShpaSx2ZSk7dmFyIEVpPXplLm1hdGNoKEtIKTtFaSYmKCh2ZVsiIXBy''@;'; put 'put ''aW50Il18fCh2ZVsiIXByaW50Il09e30pKS5yb3dCcmVha3M9dmVbIiFyb3dCcmVha3MiXT1mdW5jdGlvbiBuVih5KXt2YXIgUD1bXTtyZXR1cm4oeS5tYXRjaChyMCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3ZhciBYPWFuKEwpO1AucHVzaCh7UjorWC5pZH0pfSksUH0oRWlbMF0pKTt2''@;'; put 'put ''YXIgT2k9emUubWF0Y2gocnYpO09pJiYoKHZlWyIhcHJpbnQiXXx8KHZlWyIhcHJpbnQiXT17fSkpLmNvbEJyZWFrcz12ZVsiIWNvbEJyZWFrcyJdPWZ1bmN0aW9uIEZRKHkpe3ZhciBQPVtdO3JldHVybih5Lm1hdGNoKHIwKXx8W10pLmZvckVhY2goZnVuY3Rpb24oTCl7dmFyIFg9YW4oTCk7''@;'; put 'put ''UC5wdXNoKHtDOitYLmlkfSl9KSxQfShPaVswXSkpO3ZhciB0aT1bXTtpZigodGk9emUubWF0Y2goL2RyYXdpbmcgcjppZD0iKC4qPykiLykpJiYodmVbIiFyZWwiXT10aVsxXSksKHRpPXplLm1hdGNoKC9sZWdhY3lEcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKHZlWyIhbGVncmVsIl09dGlb''@;'; put 'put ''MV0pLCh0aT16ZS5tYXRjaChZaykpJiYodmVbIiFjdHJsaWQiXT10aS5tYXAoZnVuY3Rpb24oQW4pe3JldHVybiBhbihBbil9KSksKHRpPXplLm1hdGNoKEtrKSkmJmZ1bmN0aW9uIG5DKHksUCl7eVsiIXRhYmxlcmVmcyJdfHwoeVsiIXRhYmxlcmVmcyJdPVtdKSwoUC5tYXRjaCh0Qyl8fFtd''@;'; put 'put ''KS5mb3JFYWNoKGZ1bmN0aW9uKEwpe3lbIiF0YWJsZXJlZnMiXS5wdXNoKGFuKEwpLmlkKX0pfSh2ZSx0aVsxXSksUCYmUC5ub2RpbSYmKHllLnMuYz15ZS5zLnI9MCksIXZlWyIhcmVmIl0mJnllLmUuYz49eWUucy5jJiZ5ZS5lLnI+PXllLnMuciYmKHZlWyIhcmVmIl09RGkoeWUpKSxQLnNo''@;'; put 'put ''ZWV0Um93cz4wJiZ2ZVsiIXJlZiJdKXt2YXIgZnI9Um8odmVbIiFyZWYiXSk7UC5zaGVldFJvd3M8PStmci5lLnImJihmci5lLnI9UC5zaGVldFJvd3MtMSxmci5lLnI+eWUuZS5yJiYoZnIuZS5yPXllLmUuciksZnIuZS5yPGZyLnMuciYmKGZyLnMucj1mci5lLnIpLGZyLmUuYz55ZS5lLmMm''@;'; put 'put ''Jihmci5lLmM9eWUuZS5jKSxmci5lLmM8ZnIucy5jJiYoZnIucy5jPWZyLmUuYyksdmVbIiFmdWxscmVmIl09dmVbIiFyZWYiXSx2ZVsiIXJlZiJdPURpKGZyKSl9cmV0dXJuIGt0JiYodmVbIiFzaGVldEZvcm1hdCJdPWZ1bmN0aW9uIEprKHkpe3ZhciBQPXt9LEw9e30sWD0hMSxuZT17fSxm''@;'; put 'put ''ZT0hMTtyZXR1cm4geS5kZWZhdWx0Um93SGVpZ2h0JiYoWD0hMCxMLmhwdD1wYXJzZUZsb2F0KHkuZGVmYXVsdFJvd0hlaWdodCkpLHkuemVyb0hlaWdodCYmKFg9ITAsTC5oaWRkZW49UnIoeS56ZXJvSGVpZ2h0KSkseS5iYXNlQ29sV2lkdGg/KGZlPSEwLG5lLndjaD1wYXJzZUZsb2F0KHku''@;'; put 'put ''YmFzZUNvbFdpZHRoKSk6eS5kZWZhdWx0Q29sV2lkdGgmJihmZT0hMCxuZS53Y2g9cGFyc2VGbG9hdCh5LmRlZmF1bHRDb2xXaWR0aCktNS9WbCkseS5vdXRsaW5lTGV2ZWxDb2wmJihQLmNvbG91dGxpbmU9cGFyc2VJbnQoeS5vdXRsaW5lTGV2ZWxDb2wpKSx5Lm91dGxpbmVMZXZlbFJvdyYm''@;'; put 'put ''KFAucm93b3V0bGluZT1wYXJzZUludCh5Lm91dGxpbmVMZXZlbFJvdykpLHkudGhpY2tCb3R0b20mJihQLmJvdHRoaWNrPVJyKHkudGhpY2tCb3R0b20pKSx5LnRoaWNrVG9wJiYoUC50b3B0aGljaz1Scih5LnRoaWNrVG9wKSkseS5keURlc2NlbnQmJihQLmR5RGVzY2VudD1wYXJzZUZsb2F0''@;'; put 'put ''KHkuZHlEZXNjZW50KSksWCYmKEY5KEwpLFAucm93PUwpLGZlJiYoXzAobmUpLFAuY29sPW5lKSxQfShhbihrdFswXSkpKSxEdC5sZW5ndGg+MCYmKHZlWyIhY29scyJdPUR0KSxjbi5sZW5ndGg+MCYmKHZlWyIhbWVyZ2VzIl09Y24pLFhbIiFpZCJdW3ZlWyIhcmVsIl1dJiYodmVbIiFkcmF3''@;'; put 'put ''ZWwiXT1YWyIhaWQiXVt2ZVsiIXJlbCJdXSksWFsiIWlkIl1bdmVbIiFsZWdyZWwiXV0mJih2ZVsiIWxlZ2RyYXdlbCJdPVhbIiFpZCJdW3ZlWyIhbGVncmVsIl1dKSwodmVbIiFjdHJsaWQiXXx8W10pLmZvckVhY2goZnVuY3Rpb24oQW4pe0FuLnJlbD1YWyIhaWQiXVtBbi5pZF19KSxudWxs''@;'; put 'put ''PT12ZVsiIWdyaWRsaW5lcyJdJiYodmVbIiFncmlkbGluZXMiXT0hMCksdmV9KHksWCxMLG5lLGZlLGJlLHZlKX0ocnQsUCxuZSx5ZSxmZVtYXSxWZSx6ZSxXZSk7YnJlYWs7Y2FzZSJjaGFydCI6bHQ9ZnVuY3Rpb24gaEIoeSxQLEwsWCxuZSxmZSxiZSx2ZSl7cmV0dXJuIi5iaW4iPT09UC5z''@;'; put 'put ''bGljZSgtNCk/ZnVuY3Rpb24gb0IoeSxQLEwsWCxuZSl7aWYoIXkpcmV0dXJuIHk7WHx8KFg9eyIhaWQiOnt9fSk7dmFyIGZlPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxiZT1bXSx2ZT0hMTtyZXR1cm4gbWMoeSxmdW5jdGlvbihWZSx6ZSxXZSl7c3dpdGNo''@;'; put 'put ''KFdlKXtjYXNlIDU1MDpmZVsiIXJlbCJdPVZlO2JyZWFrO2Nhc2UgNjUxOm5lLlNoZWV0c1tMXXx8KG5lLlNoZWV0c1tMXT17fSksVmUubmFtZSYmKG5lLlNoZWV0c1tMXS5Db2RlTmFtZT1WZS5uYW1lKTticmVhaztjYXNlIDU2MjpjYXNlIDY1MjpjYXNlIDY2OTpjYXNlIDY3OTpjYXNlIDU1''@;'; put 'put ''MTpjYXNlIDU1MjpjYXNlIDQ3NjpjYXNlIDMwNzI6YnJlYWs7Y2FzZSAzNTp2ZT0hMDticmVhaztjYXNlIDM2OnZlPSExO2JyZWFrO2Nhc2UgMzc6YmUucHVzaCh6ZSk7YnJlYWs7Y2FzZSAzODpiZS5wb3AoKTticmVhaztkZWZhdWx0OmlmKCh6ZXx8IiIpLmluZGV4T2YoIkJlZ2luIik+MCli''@;'; put 'put ''ZS5wdXNoKHplKTtlbHNlIGlmKCh6ZXx8IiIpLmluZGV4T2YoIkVuZCIpPjApYmUucG9wKCk7ZWxzZSBpZighdmV8fFAuV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitXZSsiICIremUpfX0sUCksWFsiIWlkIl1bZmVbIiFyZWwiXV0mJihmZVsiIWRyYXdlbCJdPVhb''@;'; put 'put ''IiFpZCJdW2ZlWyIhcmVsIl1dKSxmZX0oeSxYLEwsbmUsZmUpOmZ1bmN0aW9uIHJCKHksUCxMLFgsbmUpe2lmKCF5KXJldHVybiB5O1h8fChYPXsiIWlkIjp7fX0pO3ZhciBiZSxmZT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sdmU9eS5tYXRjaChHayk7dmUm''@;'; put 'put ''Jml2KHZlWzBdLDAsbmUsTCk7dmFyIHllPXkubWF0Y2goV2spO3JldHVybiB5ZSYmKGZlWyIhbWFyZ2lucyJdPWxBKGFuKHllWzBdKSkpLChiZT15Lm1hdGNoKC9kcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKGZlWyIhcmVsIl09YmVbMV0pLFhbIiFpZCJdW2ZlWyIhcmVsIl1dJiYoZmVbIiFk''@;'; put 'put ''cmF3ZWwiXT1YWyIhaWQiXVtmZVsiIXJlbCJdXSksZmV9KHksMCxMLG5lLGZlKX0ocnQsUCxuZSx5ZSxmZVtYXSxWZSk7YnJlYWs7Y2FzZSJtYWNybyI6bHQ9ZnVuY3Rpb24gZkIoeSxQLEwsWCxuZSxmZSxiZSx2ZSl7cmV0dXJuIFAuc2xpY2UoLTQpLHsiIXR5cGUiOiJtYWNybyJ9fSgwLFAp''@;'; put 'put ''O2JyZWFrO2Nhc2UiZGlhbG9nIjpsdD1mdW5jdGlvbiBwQih5LFAsTCxYLG5lLGZlLGJlLHZlKXtyZXR1cm4gUC5zbGljZSgtNCkseyIhdHlwZSI6ImRpYWxvZyJ9fSgwLFApO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgc2hlZXQgdHlwZSAiK3ZlKX1pZih5''@;'; put 'put ''ZS5jYWxsYmFjaylyZXR1cm47YmVbWF09bHQsZnVuY3Rpb24gWUIoeSxQLEwsWCxuZSxmZSxiZSx2ZSl7aWYoeSYmeVsiIWRyYXdlbCJdKXt2YXIgeWU9cm4oeVsiIWRyYXdlbCJdLlRhcmdldCxYKSxWZT1Tcih5ZSksemU9ZnVuY3Rpb24gd3coeSxQLEwsWCxuZSl7dmFyIGZlPXtjaGFydHM6''@;'; put 'put ''W10saW1hZ2VzOltdLHNoYXBlczpbXX07aWYoIXkpcmV0dXJuIGZlO3ZhciBiZT1uZXx8e307cmV0dXJuKHkubWF0Y2goLzxbXjxdKj8oYWJzb2x1dGVBbmNob3J8b25lQ2VsbEFuY2hvcnx0d29DZWxsQW5jaG9yKS4qPyhhYnNvbHV0ZUFuY2hvcnxvbmVDZWxsQW5jaG9yfHR3b0NlbGxBbmNo''@;'; put 'put ''b3IpLio/Pi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24odmUpe3ZhciB5ZT0iIixWZT17dHlwZToiIn0semU9e30sV2U9ITAscnQ9ITEsbHQ9ITEsQ3Q9ITEsYXQ9e3M6e319LHZ0PS0xLFB0PVtdLGt0PVtdLER0PXtzOnthbGlnbm1lbnQ6e2hvcml6b250YWw6ImNlbnRlciIsdmVydGljYWw6''@;'; put 'put ''ImNlbnRlciJ9fX0sWnQ9IiIsZ249LTEsY249e307dmUucmVwbGFjZShYdCxmdW5jdGlvbihYbixCbil7UHQ9bnVsbDt2YXIgRG49YW4oWG4pLFFuPXRuKERuWzBdKS5yZXBsYWNlKC9bXC9dPz4kLywiIik7c3dpdGNoKFFuKXtjYXNlIjxjbGllbnREYXRhIjpicmVhaztjYXNlIjxhYnNvbHV0''@;'; put 'put ''ZUFuY2hvciI6Y2FzZSI8b25lQ2VsbEFuY2hvciI6Y2FzZSI8dHdvQ2VsbEFuY2hvciI6VmUudHlwZT10bihEblswXSkucmVwbGFjZSgvWzw+XS9nLCIiKTticmVhaztjYXNlIjwvYWJzb2x1dGVBbmNob3IiOmNhc2UiPC9vbmVDZWxsQW5jaG9yIjpjYXNlIjwvdHdvQ2VsbEFuY2hvciI6YnJl''@;'; put 'put ''YWs7Y2FzZSI8cG9zIjpWZS5wb3M9e3g6K0RuLngseTorRG4ueX07YnJlYWs7Y2FzZSI8ZXh0IjpXZSYmKFZlLmV4dD17eDorRG4uY3gseTorRG4uY3l9KTticmVhaztjYXNlIjxmcm9tIjpjYXNlIjx0byI6emU9e307YnJlYWs7Y2FzZSI8L2Zyb20iOldlJiYoVmUuZnJvbT16ZSk7YnJlYWs7''@;'; put 'put ''Y2FzZSI8L3RvIjpXZSYmKFZlLnRvPXplKTticmVhaztjYXNlIjxjb2wiOmNhc2UiPGNvbE9mZiI6Y2FzZSI8cm93IjpjYXNlIjxyb3dPZmYiOnZ0PUJuK1huLmxlbmd0aDticmVhaztjYXNlIjwvY29sIjp6ZS5jPSt2ZS5zbGljZSh2dCxCbik7YnJlYWs7Y2FzZSI8L2NvbE9mZiI6emUuY09m''@;'; put 'put ''Zj0rdmUuc2xpY2UodnQsQm4pO2JyZWFrO2Nhc2UiPC9yb3ciOnplLnI9K3ZlLnNsaWNlKHZ0LEJuKTticmVhaztjYXNlIjwvcm93T2ZmIjp6ZS5yT2ZmPSt2ZS5zbGljZSh2dCxCbik7YnJlYWs7Y2FzZSI8c3AiOnllPSJzaGFwZSIsRHQuQW5jaG9yPVZlLGZlLnNoYXBlcy5wdXNoKER0KSxX''@;'; put 'put ''ZT0hMTticmVhaztjYXNlIjwvc3AiOldlPSEwO2JyZWFrO2Nhc2UiPGdyYXBoaWNGcmFtZSI6eWU9ImdyYXBoaWMiLFdlPSExO2JyZWFrO2Nhc2UiPC9ncmFwaGljRnJhbWUiOldlPSEwO2JyZWFrO2Nhc2UiPHBpYyI6eWU9InBpY3R1cmUiLFdlPSExO2JyZWFrO2Nhc2UiPC9waWMiOldlPSEw''@;'; put 'put ''O2JyZWFrO2Nhc2UiPGdycFNwIjp5ZT0iZ3JvdXBzaGFwZSIsV2U9ITE7YnJlYWs7Y2FzZSI8L2dycFNwIjpXZT0hMDticmVhaztjYXNlIjxncmFwaGljIjpjYXNlIjwvZ3JhcGhpYyI6Y2FzZSI8eGZybSI6Y2FzZSI8L3hmcm0iOmNhc2UiPG9mZiI6YnJlYWs7Y2FzZSI8Z3JhcGhpY0RhdGEi''@;'; put 'put ''OnJ0PSEwO2JyZWFrO2Nhc2UiPC9ncmFwaGljRGF0YSI6cnQ9ITE7YnJlYWs7Y2FzZSI8YmxpcEZpbGwiOnJ0PSEwO2JyZWFrO2Nhc2UiPC9ibGlwRmlsbCI6cnQ9ITE7YnJlYWs7Y2FzZSI8L2JsaXAiOmJyZWFrO2Nhc2UiPHNyY1JlY3QiOnJ0PSEwO2JyZWFrO2Nhc2UiPC9zcmNSZWN0Ijpy''@;'; put 'put ''dD0hMTticmVhaztjYXNlIjxub0ZpbGwiOmlmKGx0KWJyZWFrOyI8c3BQciI9PWt0LnNsaWNlKC0xKVswXSYmKER0LnMuZmdDb2xvcj1udWxsKTticmVhaztjYXNlIjwvc29saWRGaWxsIjppZihsdHx8Q3QpYnJlYWs7IjxzcFByIj09a3Quc2xpY2UoLTIpWzBdP0R0LnMuZmdDb2xvcj1jbjoi''@;'; put 'put ''PHJQciI9PWt0LnNsaWNlKC0yKVswXSYma3QuaW5kZXhPZigiPHR4Qm9keSIpPi0xJiYoYXQucy5jb2xvcj1jbiksY249e30sQ3Q9ITE7YnJlYWs7Y2FzZSI8cHJzdEdlb20iOiJzaGFwZSI9PXllJiYoRHRbIiFzaGFwZSJdPURuLnByc3QpO2JyZWFrO2Nhc2UiPC9wcnN0R2VvbSI6Y2FzZSI8''@;'; put 'put ''YXZMc3QiOmJyZWFrO2Nhc2UiPHR4Qm9keSI6cnQ9ITAsRHQuUj1bXTticmVhaztjYXNlIjwvdHhCb2R5IjpydD0hMTticmVhaztjYXNlIjxib2R5UHIiOkR0LnMuYWxpZ25tZW50LnZlcnRpY2FsPWFIW0RuLmFuY2hvcnx8InQiXXx8InRvcCI7YnJlYWs7Y2FzZSI8bHN0U3R5bGUiOmJyZWFr''@;'; put 'put ''O2Nhc2UiPHQiOmduPUJuK1huLmxlbmd0aDticmVhaztjYXNlIjxiciI6Y2FzZSI8YnIvPiI6WnQrPSJcbiI7YnJlYWs7Y2FzZSI8L3QiOlp0Kz12ZS5zbGljZShnbixCbik7YnJlYWs7Y2FzZSI8cFByIjpEdC5zLmFsaWdubWVudC5ob3Jpem9udGFsfHwoRHQucy5hbGlnbm1lbnQuaG9yaXpv''@;'; put 'put ''bnRhbD1CZ1tEbi5hbGdufHwibCJdfHwibGVmdCIpLGt0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKGF0LnMuYWxpZ25tZW50Lmhvcml6b250YWw9QmdbRG4uYWxnbnx8ImwiXXx8ImxlZnQiKTticmVhaztjYXNlIjxyUHIiOkRuLnN6JiZrdC5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihEdC5z''@;'; put 'put ''LnN6PWF0LnMuc3o9K0RuLnN6LzEwMCk7YnJlYWs7Y2FzZSI8cCI6WnQ9IiIsYXQ9e3Q6InMiLHY6IiIsczp7YWxpZ25tZW50Ont9fX07YnJlYWs7Y2FzZSI8L3AiOiJzaGFwZSI9PXllJiZrdC5pbmRleE9mKCI8dHhCb2R5Iik+LTEmJihEdC52PShEdC52fHwiIikrWnQsYXQudj1adCxEdC5S''@;'; put 'put ''LnB1c2goYXQpKTticmVhaztjYXNlIjxsYXRpbiI6RG4udHlwZWZhY2UmJmt0LmluZGV4T2YoIjx0eEJvZHkiKT4tMSYmKGF0LnMubmFtZT1Ebi50eXBlZmFjZSk7YnJlYWs7Y2FzZSI8c3R5bGUiOnJ0PSEwLGx0PSEwO2JyZWFrO2Nhc2UiPC9zdHlsZSI6cnQ9ITEsbHQ9ITE7YnJlYWs7Y2Fz''@;'; put 'put ''ZSI8bG5SZWYiOmNhc2UiPGZpbGxSZWYiOmNhc2UiPGVmZmVjdFJlZiI6Y2FzZSI8Zm9udFJlZiI6YnJlYWs7Y2FzZSI8L2ZpbGxSZWYiOiFsdCYmInNoYXBlIj09eWUmJihEdC5zLmZnQ29sb3I9Y24pLGNuPXt9O2JyZWFrO2Nhc2UiPC9mb250UmVmIjohbHQmJiJzaGFwZSI9PXllJiYoRHQu''@;'; put 'put ''cy5jb2xvcj1jbiksY249e307YnJlYWs7Y2FzZSI8c2NoZW1lQ2xyIjp2YXIgZXI9e2JnMToibHQxIixiZzI6Imx0MiIsdHgxOiJkazEiLHR4MjoiZGsyIn1bRG4udmFsXXx8RG4udmFsLHpuPSgoWC50aGVtZUVsZW1lbnRzfHx7fSkuY2xyU2NoZW1lfHxbXSkuZmluZChmdW5jdGlvbihpaSl7''@;'; put 'put ''cmV0dXJuIGlpLm5hbWU9PWVyfSk7em4/Y24ucmdiPXpuLnJnYjpDdD0hMDticmVhaztjYXNlIjxzY3JnYkNsciI6Q3Q9ITA7YnJlYWs7Y2FzZSI8c3JnYkNsciI6Y24ucmdiPURuLnZhbC5zbGljZSgtNik7YnJlYWs7Y2FzZSI8aHNsQ2xyIjpjYXNlIjxzeXNDbHIiOmNhc2UiPHByc3RDbHIi''@;'; put 'put ''OkN0PSEwO2JyZWFrO2Nhc2UiPGNoYXJ0IjpQdD1mZS5jaGFydHM7dmFyIEtyPURuLmlkO2Nhc2UiPGJsaXAiOlB0fHwoUHQ9ZmUuaW1hZ2VzLEtyPURuLmVtYmVkKSxQdC5wdXNoKHtBbmNob3I6VmUsVGFyZ2V0OihQWyIhaWQiXVtLcl18fHt9KS5UYXJnZXR9KSxEbi5saW5rJiYoUHRbUHQu''@;'; put 'put ''bGVuZ3RoLTFdLkxpbms9KFBbIiFpZCJdW0RuLmxpbmtdfHx7fSkuVGFyZ2V0KTticmVhaztjYXNlIjxncnBTcFByIjpydD0hMDticmVhaztjYXNlIjwvZ3JwU3BQciI6cnQ9ITE7YnJlYWs7Y2FzZSI8bnZHcnBTcFByIjpydD0hMDticmVhaztjYXNlIjwvbnZHcnBTcFByIjpydD0hMTticmVh''@;'; put 'put ''aztjYXNlIjxzcFByIjpydD0hMDticmVhaztjYXNlIjwvc3BQciI6cnQ9ITE7YnJlYWs7Y2FzZSI8c3RyZXRjaCI6Y2FzZSI8L3N0cmV0Y2giOmNhc2UiPGZpbGxSZWN0IjpjYXNlIjxudkdyYXBoaWNGcmFtZVByIjpjYXNlIjwvbnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8Y052R3JhcGhpY0Zy''@;'; put 'put ''YW1lUHIiOmNhc2UiPC9jTnZHcmFwaGljRnJhbWVQciI6Y2FzZSI8Z3JhcGhpY0ZyYW1lTG9ja3MiOmNhc2UiPG52UGljUHIiOmNhc2UiPC9udlBpY1ByIjpjYXNlIjxjTnZQaWNQciI6Y2FzZSI8L2NOdlBpY1ByIjpjYXNlIjxwaWNMb2NrcyI6Y2FzZSI8Y052R3JwU3BQciI6Y2FzZSI8L2NO''@;'; put 'put ''dkdycFNwUHIiOmNhc2UiPGdycFNwTG9ja3MiOmNhc2UiPG52U3BQciI6Y2FzZSI8L252U3BQciI6Y2FzZSI8Y052U3BQciI6Y2FzZSI8L2NOdlNwUHIiOmNhc2UiPHNwTG9ja3MiOmJyZWFrO2Nhc2UiPGNOdlByIjpydD0hMDticmVhaztjYXNlIjwvY052UHIiOnJ0PSExO2JyZWFrO2Nhc2Ui''@;'; put 'put ''PGN4blNwIjpydD0hMDticmVhaztjYXNlIjwvY3huU3AiOnJ0PSExO2JyZWFrO2Nhc2UiPGNOdkN4blNwUHIiOnJ0PSEwO2JyZWFrO2Nhc2UiPC9jTnZDeG5TcFByIjpydD0hMTticmVhaztjYXNlIjxudkN4blNwUHIiOmNhc2UiPC9udkN4blNwUHIiOmJyZWFrO2Nhc2UiPGV4dExzdCI6cnQ9''@;'; put 'put ''ITAsbHQ9ITA7YnJlYWs7Y2FzZSI8L2V4dExzdCI6cnQ9ITEsbHQ9ITE7YnJlYWs7Y2FzZSI8L2V4dCI6YnJlYWs7ZGVmYXVsdDppZihiZSYmYmUuV1RGJiYhcnQpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitEblswXSsiIGluIGRyYXdpbmciKX1yZXR1cm4iPC8iPT1Rbi5zbGlj''@;'; put 'put ''ZSgwLDIpP2t0LnBvcCgpOiIvPiIhPVhuLnNsaWNlKFhuLmxlbmd0aC0yKSYma3QucHVzaChRbiksIiJ9KX0pLGZlfShlbihMLHllLCEwKSx2MihlbihMLFZlLCEwKSx5ZSksMCx2ZSxuZSk7aWYoemUpe2lmKHplLmNoYXJ0cylmb3IodmFyIFdlPTA7V2U8emUuY2hhcnRzLmxlbmd0aDsrK1dl''@;'; put 'put ''KXt2YXIgcnQ9emUuY2hhcnRzW1dlXSxsdD1ybihydC5UYXJnZXQseWUpLEN0PVNyKGx0KSxhdD0iY2hhcnQiPT1QJiYwPT1XZSx2dD1taChlbihMLGx0LCEwKSwwLDAsdjIoZW4oTCxDdCwhMCksbHQpLDAsYXQ/eTpudWxsLHJ0LGF0P251bGw6eSk7YXR8fCh5WyIhY2hhcnRzIl18fCh5WyIh''@;'; put 'put ''Y2hhcnRzIl09W10pLHlbIiFjaGFydHMiXS5wdXNoKHZ0KSl9aWYobmUuYm9va0ltYWdlcyYmemUuaW1hZ2VzKWZvcih2YXIgUHQ9MDtQdDx6ZS5pbWFnZXMubGVuZ3RoOysrUHQpe3ZhciBrdD16ZS5pbWFnZXNbUHRdLER0PXsiIXR5cGUiOiJpbWFnZSIsIiFwb3MiOmNrKGt0LkFuY2hvciks''@;'; put 'put ''IiFwb3NUeXBlIjprdC5BbmNob3IudHlwZS5yZXBsYWNlKC9BbmNob3IvLCIiKSwiIWFic3BvcyI6SGcoa3QuQW5jaG9yLHkpLCIhcmVscG9zIjptdyhrdC5BbmNob3IseSl9O2lmKGt0LlRhcmdldCYmKER0WyIhcGF0aCJdPXJuKGt0LlRhcmdldCx5ZSksRHRbIiFkYXRhIl09RXQoTCxEdFsi''@;'; put 'put ''IXBhdGgiXSksRHRbIiFkYXRhdHlwZSJdPSJzdHJpbmciPT10eXBlb2YgRHRbIiFkYXRhIl0/ImJpbmFyeSI6ImJ1ZmZlciIpLGt0LkxpbmsmJihEdFsiIWRhdGF0eXBlIl18fChEdFsiIWRhdGF0eXBlIl09InJlbW90ZSIpLER0WyIhbGluayJdPWt0LkxpbmspLCFEdFsiIWRhdGF0eXBlIl0p''@;'; put 'put ''dGhyb3ciSW1hZ2UgZGF0YSBjYW5ub3QgYmUgZm91bmQiO3lbIiFpbWFnZXMiXXx8KHlbIiFpbWFnZXMiXT1bXSkseVsiIWltYWdlcyJdLnB1c2goRHQpfXZhciBadCxnbjtpZih6ZS5zaGFwZXMpZm9yKHZhciBjbj0wO2NuPHplLnNoYXBlcy5sZW5ndGg7Kytjbilnbj17IiF0eXBlIjoic2hh''@;'; put 'put ''cGUiLCIhcG9zIjpIZygoWnQ9emUuc2hhcGVzW2NuXSkuQW5jaG9yLHkpLCIhcG9zVHlwZSI6WnQuQW5jaG9yLnR5cGUucmVwbGFjZSgvQW5jaG9yLywiIiksIiFhYnNwb3MiOkhnKFp0LkFuY2hvcix5KSwiIXJlbHBvcyI6bXcoWnQuQW5jaG9yLHkpfSxbInYiLCIhc2hhcGUiLCJzIiwiUiJd''@;'; put 'put ''LmZvckVhY2goJG4pLHlbIiFzaGFwZXMiXXx8KHlbIiFzaGFwZXMiXT1bXSkseVsiIXNoYXBlcyJdLnB1c2goZ24pfX1mdW5jdGlvbiAkbihYbil7WnRbWG5dJiYoZ25bWG5dPVp0W1huXSl9fShsdCx2ZSx5LFAseWUsMCwwLHplKTt2YXIgQ3Q9W107cmV0dXJuIGZlJiZmZVtYXSYmb3QoZmVb''@;'; put 'put ''WF0pLmZvckVhY2goZnVuY3Rpb24oYXQpe2lmKGZlW1hdW2F0XS5UeXBlPT1Tby5DTU5UKXt2YXIgdnQ9cm4oZmVbWF1bYXRdLlRhcmdldCxQKTtpZighKEN0PWZ1bmN0aW9uIF9CKHksUCxMKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBxOSh5LFApe3ZhciBMPVtdLFg9''@;'; put 'put ''W10sbmU9e30sZmU9ITE7cmV0dXJuIG1jKHksZnVuY3Rpb24odmUseWUsVmUpe3N3aXRjaChWZSl7Y2FzZSA2MzI6WC5wdXNoKHZlKTticmVhaztjYXNlIDYzNTpuZT12ZTticmVhaztjYXNlIDYzNzpuZS50PXZlLnQsbmUuaD12ZS5oLG5lLnI9dmUucjticmVhaztjYXNlIDYzNjppZihuZS5h''@;'; put 'put ''dXRob3I9WFtuZS5pYXV0aG9yXSxkZWxldGUgbmUuaWF1dGhvcixQLnNoZWV0Um93cyYmbmUucmZ4JiZQLnNoZWV0Um93czw9bmUucmZ4LnIpYnJlYWs7bmUudHx8KG5lLnQ9IiIpLGRlbGV0ZSBuZS5yZngsTC5wdXNoKG5lKTticmVhaztjYXNlIDMwNzI6Y2FzZSAzNzpjYXNlIDM4OmJyZWFr''@;'; put 'put ''O2Nhc2UgMzU6ZmU9ITA7YnJlYWs7Y2FzZSAzNjpmZT0hMTticmVhaztkZWZhdWx0OmlmKCEoKHllfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKSYmISgoeWV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSYmKCFmZXx8UC5XVEYpKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIitW''@;'; put 'put ''ZSsiICIreWUpfX0pLEx9KHksTCk6ZnVuY3Rpb24gZ2soeSxQKXtpZih5Lm1hdGNoKC88KD86XHcrOik/Y29tbWVudHMgKlwvPi8pKXJldHVybltdO3ZhciBMPVtdLFg9W10sbmU9eS5tYXRjaCgvPCg/Olx3KzopP2F1dGhvcnM+KFtcc1xTXSopPFwvKD86XHcrOik/YXV0aG9ycz4vKTtuZSYm''@;'; put 'put ''bmVbMV0mJm5lWzFdLnNwbGl0KC88XC9cdyo6P2F1dGhvcj4vKS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXtpZigiIiE9PWJlJiYiIiE9PWJlLnRyaW0oKSl7dmFyIHZlPWJlLm1hdGNoKC88KD86XHcrOik/YXV0aG9yW14+XSo+KC4qKS8pO3ZlJiZMLnB1c2godmVbMV0pfX0pO3ZhciBmZT15Lm1h''@;'; put 'put ''dGNoKC88KD86XHcrOik/Y29tbWVudExpc3Q+KFtcc1xTXSopPFwvKD86XHcrOik/Y29tbWVudExpc3Q+Lyk7cmV0dXJuIGZlJiZmZVsxXSYmZmVbMV0uc3BsaXQoLzxcL1x3Kjo/Y29tbWVudD4vKS5mb3JFYWNoKGZ1bmN0aW9uKGJlKXtpZigiIiE9PWJlJiYiIiE9PWJlLnRyaW0oKSl7dmFy''@;'; put 'put ''IHZlPWJlLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePl0qPi8pO2lmKHZlKXt2YXIgeWU9YW4odmVbMF0pLFZlPXthdXRob3I6eWUuYXV0aG9ySWQmJkxbeWUuYXV0aG9ySWRdfHwic2hlZXRqc2dob3N0IixyZWY6eWUucmVmLGd1aWQ6eWUuZ3VpZH0semU9a3MoeWUucmVmKTtpZighKFAu''@;'; put 'put ''c2hlZXRSb3dzJiZQLnNoZWV0Um93czw9emUucikpe3ZhciBXZT1iZS5tYXRjaCgvPCg/Olx3KzopP3RleHQ+KFtcc1xTXSopPFwvKD86XHcrOik/dGV4dD4vKSxydD0hIVdlJiYhIVdlWzFdJiZKeShXZVsxXSl8fHtyOiIiLHQ6IiIsaDoiIn07VmUucj1ydC5yLCI8dD48L3Q+Ij09cnQuciYm''@;'; put 'put ''KHJ0LnQ9cnQuaD0iIiksVmUudD0ocnQudHx8IiIpLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLFAuY2VsbEhUTUwmJihWZS5oPXJ0LmgpLFgucHVzaChWZSl9fX19KSxYfSh5LEwpfShFdCh5LHZ0LCEwKSx2dCx5ZSkpfHwhQ3QubGVuZ3RoKXJldHVybjshZnVu''@;'; put 'put ''Y3Rpb24gcGsoeSxQKXt2YXIgWCxMPUFycmF5LmlzQXJyYXkoeSk7UC5mb3JFYWNoKGZ1bmN0aW9uKG5lKXt2YXIgZmU9a3MobmUucmVmKTtpZihMPyh5W2ZlLnJdfHwoeVtmZS5yXT1bXSksWD15W2ZlLnJdW2ZlLmNdKTpYPXlbbmUucmVmXSwhWCl7WD17dDoieiJ9LEw/eVtmZS5yXVtmZS5j''@;'; put 'put ''XT1YOnlbbmUucmVmXT1YO3ZhciBiZT1Sbyh5WyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6QTEiKTtiZS5zLnI+ZmUuciYmKGJlLnMucj1mZS5yKSxiZS5lLnI8ZmUuciYmKGJlLmUucj1mZS5yKSxiZS5zLmM+ZmUuYyYmKGJlLnMuYz1mZS5jKSxiZS5lLmM8ZmUuYyYmKGJlLmUuYz1mZS5jKTt2''@;'; put 'put ''YXIgdmU9RGkoYmUpO3ZlIT09eVsiIXJlZiJdJiYoeVsiIXJlZiJdPXZlKX1YLmN8fChYLmM9W10pO3ZhciB5ZT17YTpuZS5hdXRob3IsdDpuZS50LHI6bmUucn07eWUuciYmInN0cmluZyI9PXR5cGVvZiB5ZS5yJiYoeWUuUj1FZyh5ZS5yKSksbmUuaCYmKHllLmg9bmUuaCksWC5jLnB1c2go''@;'; put 'put ''eWUpfSl9KGx0LEN0KX19KSxmdW5jdGlvbiBCQyh5LFAsTCxYLG5lLGZlLGJlKXsheXx8IXlbIiF0YWJsZXJlZnMiXXx8IUx8fCFMWyIhaWQiXXx8KHlbIiF0YWJsZXMiXT1bXSx5WyIhdGFibGVyZWZzIl0uZm9yRWFjaChmdW5jdGlvbih2ZSl7dmFyIHllPUxbIiFpZCJdW3ZlXTtpZih5ZSYm''@;'; put 'put ''eWUuVGFyZ2V0KXt2YXIgVmU9cm4oeWUuVGFyZ2V0LFgpOyFmdW5jdGlvbiB1SCh5LFAsTCxYLG5lKXt2YXIgZmU9e3N0eWxlOnt9LGhlYWRlcjowfSxiZT0hMTt5LnJlcGxhY2UoWHQsZnVuY3Rpb24odmUpe3ZhciB5ZT1hbih2ZSk7c3dpdGNoKHRuKHllWzBdKSl7Y2FzZSI8P3htbCI6Y2Fz''@;'; put 'put ''ZSI8L3RhYmxlPiI6Y2FzZSI8L2F1dG9GaWx0ZXI+IjpjYXNlIjxzb3J0U3RhdGUiOmNhc2UiPHNvcnRTdGF0ZT4iOmNhc2UiPC9zb3J0U3RhdGU+IjpjYXNlIjwvdGFibGVDb2x1bW5zIjpjYXNlIjwvdGFibGVDb2x1bW5zPiI6Y2FzZSI8L3RhYmxlQ29sdW1uPiI6Y2FzZSI8Y2FsY3VsYXRl''@;'; put 'put ''ZENvbHVtbkZvcm11bGE+IjpjYXNlIjxjYWxjdWxhdGVkQ29sdW1uRm9ybXVsYSI6Y2FzZSI8L2NhbGN1bGF0ZWRDb2x1bW5Gb3JtdWxhPiI6Y2FzZSI8dG90YWxzUm93Rm9ybXVsYT4iOmNhc2UiPHRvdGFsc1Jvd0Zvcm11bGEiOmNhc2UiPC90b3RhbHNSb3dGb3JtdWxhPiI6Y2FzZSI8eG1s''@;'; put 'put ''Q29sdW1uUHI+IjpjYXNlIjx4bWxDb2x1bW5QciI6Y2FzZSI8L3htbENvbHVtblByPiI6Y2FzZSI8c29ydENvbmRpdGlvbj4iOmNhc2UiPHNvcnRDb25kaXRpb24iOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpicmVhaztjYXNl''@;'; put 'put ''Ijx0YWJsZSI6eWUucmVmJiYoZmUucmVmPXllLnJlZikseWUubmFtZT9mZS5uYW1lPXllLm5hbWU6eWUuZGlzcGxheU5hbWUmJihmZS5uYW1lPXllLmRpc3BsYXlOYW1lKSxudWxsIT15ZS5oZWFkZXJyb3djb3VudCYmMSE9K3llLmhlYWRlcnJvd2NvdW50P2ZlLmhlYWRlcj0reWUuaGVhZGVy''@;'; put 'put ''cm93Y291bnQ6bnVsbD09eWUuaGVhZGVycm93Y291bnQmJihmZS5oZWFkZXI9MSk7YnJlYWs7Y2FzZSI8YXV0b0ZpbHRlciI6Y2FzZSI8YXV0b0ZpbHRlcj4iOmZlLmZpbHRlcj0hMDticmVhaztjYXNlIjx0YWJsZUNvbHVtbnMiOmNhc2UiPHRhYmxlQ29sdW1ucz4iOmZlLmNvbHM9W107YnJl''@;'; put 'put ''YWs7Y2FzZSI8dGFibGVTdHlsZUluZm8iOnllLnNob3dSb3dTdHJpcGVzJiYoZmUuc3R5bGUucm93c3RyaXBlPVJyKHllLnNob3dSb3dTdHJpcGVzKSkseWUuc2hvd0NvbHVtblN0cmlwZXMmJihmZS5zdHlsZS5jb2xzdHJpcGU9UnIoeWUuc2hvd0NvbHVtblN0cmlwZXMpKSx5ZS5zaG93Rmly''@;'; put 'put ''c3RDb2x1bW4mJihmZS5zdHlsZS5jb2xmaXJzdD1Scih5ZS5zaG93Rmlyc3RDb2x1bW4pKSx5ZS5zaG93TGFzdENvbHVtbiYmKGZlLnN0eWxlLmNvbGxhc3Q9UnIoeWUuc2hvd0xhc3RDb2x1bW4pKSx5ZS5uYW1lJiYoZmUuc3R5bGUubmFtZT15ZS5uYW1lLnJlcGxhY2UoL15UYWJsZVN0eWxl''@;'; put 'put ''LywiIikpO2JyZWFrO2Nhc2UiPHRhYmxlQ29sdW1uIjpjYXNlIjx0YWJsZUNvbHVtbj4iOmZlLmNvbHMucHVzaCh7aWQ6K3llLmlkLG5hbWU6eWUubmFtZX0pO2JyZWFrO2Nhc2UiPGZpbHRlckNvbHVtbj4iOmNhc2UiPGZpbHRlckNvbHVtbiI6Y2FzZSI8Y3VzdG9tRmlsdGVycyI6Y2FzZSI8''@;'; put 'put ''Y3VzdG9tRmlsdGVycz4iOmNhc2UiPGV4dCI6YmU9ITA7YnJlYWs7Y2FzZSI8L2ZpbHRlckNvbHVtbj4iOmNhc2UiPC9jdXN0b21GaWx0ZXJzPiI6Y2FzZSI8L2V4dD4iOmJlPSExO2JyZWFrO2RlZmF1bHQ6aWYoIWJlJiZuZS5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIit5''@;'; put 'put ''ZVswXSsiIGluIHRhYmxlIil9cmV0dXJuIHZlfSksZmUuZmlsdGVyfHwoZmUuZmlsdGVyPSExKSxmZS5zdHlsZS5uYW1lJiYhZmUuc3R5bGUubmFtZS5tYXRjaCgvXihMaWdodHxNZWRpdW18RGFyaylcZCskLykmJkwuVGFibGUmJkwuVGFibGUuZm9yRWFjaChmdW5jdGlvbih2ZSl7KHZlLm5h''@;'; put 'put ''bWU9PWZlLnN0eWxlLm5hbWV8fHZlLnJhd25hbWU9PWZlLnN0eWxlLm5hbWUpJiYoZmUuc3R5bGUucmF3PUt0KHZlKSl9KSxQWyIhdGFibGVzIl0ucHVzaChmZSl9KEV0KFAsVmUsITApLHksbmUsMCxiZSl9fSksZGVsZXRlIHlbIiF0YWJsZXJlZnMiXSl9KGx0LHksZmVbWF0sUCxXZSwwLHll''@;'; put 'put ''KSx0eXBlb2YgcGFyc2Vfc2hlZXRfcGl2b3Q8InUiJiZEdi5wdXNoKFtsdCx5LGZlW1hdLFAse1NoZWV0czpiZX0sV2UseWVdKSxmdW5jdGlvbiBXQih5LFAsTCxYLG5lLGZlLGJlLHZlKXtpZih5JiZ5WyIhbGVnZHJhd2VsIl0pe3ZhciB5ZT1ybih5WyIhbGVnZHJhd2VsIl0uVGFyZ2V0LFgp''@;'; put 'put ''LFZlPWVuKEwseWUsITApO1ZlJiZmdW5jdGlvbiBXOSh5LFAsTCl7dmFyIFg9MDsoeS5tYXRjaChkSCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG5lKXt2YXIgUHQsa3QsRHQsWnQsZ24sJG4sY24sWG4sZmU9IiIsYmU9ITAsdmU9IiIseWU9LTEsVmU9e30semU9e30sV2U9e30scnQ9LTEsbHQ9''@;'; put 'put ''LTEsQ3Q9IiIsYXQ9IiIsdnQ9IiIsQm49ITEsRG49ITE7c3dpdGNoKG5lLnJlcGxhY2UoWHQsZnVuY3Rpb24oem4sS3Ipe3ZhciBpaT1hbih6bik7c3dpdGNoKHRuKGlpWzBdKSl7Y2FzZSI8c2hhcGUiOmlpLmZpbGxjb2xvciYmKFZlLmNvbG9yMT1paS5maWxsY29sb3IpLGlpLnN0cm9rZWNv''@;'; put 'put ''bG9yJiYoV2UuY29sb3I9aWkuc3Ryb2tlY29sb3IpO2JyZWFrO2Nhc2UiPGZpbGwiOmNhc2UiPGZpbGw+IjoiPHY6ZmlsbCI9PWlpWzBdJiYoaWkuY29sb3IyJiYoVmUuY29sb3IyPWlpLmNvbG9yMiksaWkudHlwZSYmKFZlLnR5cGU9aWkudHlwZSkpO2JyZWFrO2Nhc2UiPC9maWxsPiI6Y2Fz''@;'; put 'put ''ZSI8bG9jayI6Y2FzZSI8bG9jay8+IjpicmVhaztjYXNlIjxzaGFkb3ciOmlpLmNvbG9yJiYoemUuY29sb3I9aWkuY29sb3IpLGlpLm9uJiYoemUub249aWkub24pO2JyZWFrO2Nhc2UiPENsaWVudERhdGEiOmlpLk9iamVjdFR5cGUmJihmZT1paS5PYmplY3RUeXBlKTticmVhaztjYXNlIjxW''@;'; put 'put ''aXNpYmxlIjpjYXNlIjxWaXNpYmxlLz4iOmJlPSExO2JyZWFrO2Nhc2UiPEFuY2hvciI6Y2FzZSI8QW5jaG9yPiI6Y2FzZSI8Um93IjpjYXNlIjxSb3c+IjpjYXNlIjxDb2x1bW4iOmNhc2UiPENvbHVtbj4iOmNhc2UiPEZtbGFNYWNybyI6Y2FzZSI8Rm1sYU1hY3JvPiI6Y2FzZSI8Rm1sYUxp''@;'; put 'put ''bmsiOmNhc2UiPEZtbGFMaW5rPiI6Y2FzZSI8Rm1sYVJhbmdlIjpjYXNlIjxGbWxhUmFuZ2U+IjpjYXNlIjxTZWxUeXBlIjpjYXNlIjxTZWxUeXBlPiI6Y2FzZSI8VmFsIjpjYXNlIjxWYWw+IjpjYXNlIjxNaW4iOmNhc2UiPE1pbj4iOmNhc2UiPE1heCI6Y2FzZSI8TWF4PiI6Y2FzZSI8SW5j''@;'; put 'put ''IjpjYXNlIjxJbmM+IjpjYXNlIjxQYWdlIjpjYXNlIjxQYWdlPiI6Y2FzZSI8Q2hlY2tlZCI6Y2FzZSI8Q2hlY2tlZD4iOmNhc2UiPHRleHRib3giOmNhc2UiPHRleHRib3g+Ijp5ZT1Lcit6bi5sZW5ndGg7YnJlYWs7Y2FzZSI8L0FuY2hvcj4iOnZlPW5lLnNsaWNlKHllLEtyKS50cmltKCk7''@;'; put 'put ''YnJlYWs7Y2FzZSI8L1Jvdz4iOnJ0PStuZS5zbGljZSh5ZSxLcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9Db2x1bW4+IjpsdD0rbmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjwvRm1sYU1hY3JvPiI6Q3Q9bmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjwvRm1sYUxp''@;'; put 'put ''bms+IjphdD1uZS5zbGljZSh5ZSxLcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9GbWxhUmFuZ2U+Ijpjbj1uZS5zbGljZSh5ZSxLcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9TZWxUeXBlPiI6WG49bmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjwvVmFsPiI6UHQ9K25lLnNsaWNlKHll''@;'; put 'put ''LEtyKS50cmltKCk7YnJlYWs7Y2FzZSI8L01pbj4iOmt0PStuZS5zbGljZSh5ZSxLcikudHJpbSgpO2JyZWFrO2Nhc2UiPC9NYXg+IjpEdD0rbmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjwvSW5jPiI6WnQ9K25lLnNsaWNlKHllLEtyKS50cmltKCk7YnJlYWs7Y2FzZSI8L1Bh''@;'; put 'put ''Z2U+Ijpnbj0rbmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjwvQ2hlY2tlZD4iOiRuPStuZS5zbGljZSh5ZSxLcikudHJpbSgpO2JyZWFrO2Nhc2UiPC90ZXh0Ym94PiI6dnQ9bmUuc2xpY2UoeWUsS3IpLnRyaW0oKTticmVhaztjYXNlIjxNb3ZlV2l0aENlbGxzLz4iOmNhc2Ui''@;'; put 'put ''PE1vdmVXaXRoQ2VsbHM+IjpCbj0hMDticmVhaztjYXNlIjxTaXplV2l0aENlbGxzLz4iOmNhc2UiPFNpemVXaXRoQ2VsbHM+IjpEbj0hMH1yZXR1cm4iIn0pLGZlKXtjYXNlIk5vdGUiOnZhciBRbj1xYy5zaGVldF9nZXRfY2VsbChQLHJ0Pj0wJiZsdD49MD9BaSh7cjpydCxjOmx0fSk6TFtY''@;'; put 'put ''XS5yZWYpO1FuLmMmJihRbi5jLmhpZGRlbj1iZSx2ZSYmKFFuLmMucmF3YW5jaG9yPXZlLHVrKHZlLFFuLmMpLHRIKFFuLmNbIiFwb3MiXSwyKiEhQm4rISFEbixQKSksVmUuY29sb3IxJiYoUW4uYy5maWxsPVZlKSx6ZS5jb2xvciYmKFFuLmMuc2hhZG93PXplKSxXZS5jb2xvciYmKFFuLmMu''@;'; put 'put ''c3Ryb2tlPVdlKSksKytYO2JyZWFrO2Nhc2UiQnV0dG9uIjpjYXNlIkdCb3giOmNhc2UiRHJvcCI6Y2FzZSJMYWJlbCI6Y2FzZSJDaGVja2JveCI6Y2FzZSJTY3JvbGwiOmNhc2UiTGlzdCI6Y2FzZSJSYWRpbyI6Y2FzZSJTcGluIjpjYXNlIkVkaXQiOlBbIiFjb250cm9scyJdfHwoUFsiIWNv''@;'; put 'put ''bnRyb2xzIl09W10pO3ZhciBlcj17IiF0eXBlIjpmZX07dmUmJnVrKHZlLGVyKSxDdCYmKGVyLm1hY3JvPUN0LnJlcGxhY2UoIlswXSEiLCIiKSksYXQmJihlci5saW5rPWF0KSwiU2Nyb2xsIj09ZmV8fCJTcGluIj09ZmU/KG51bGw9PVB0JiYoUHQ9MCksbnVsbD09a3QmJihrdD0wKSxudWxs''@;'; put 'put ''PT1EdCYmKER0PTNlNCksbnVsbD09WnQmJihadD0xKSwiU2Nyb2xsIj09ZmUmJm51bGw9PWduJiYoZ249MTApKToiUmFkaW8iPT1mZXx8IkNoZWNrYm94Ij09ZmU/KG51bGw9PSRuJiYoJG49MCksUHQ9JG4pOigiTGlzdCI9PWZlfHwiRHJvcCI9PWZlKSYmKG51bGwhPWNuJiYoZXIucmVmPWNu''@;'; put 'put ''KSxudWxsPT1YbiYmKFhuPSJTaW5nbGUiKSwiTGlzdCI9PWZlJiYoZXIuc2VsPVhuKSksbnVsbCE9UHQmJihlci52YWw9UHQpLG51bGwhPWt0JiYoZXIubWluPWt0KSxudWxsIT1EdCYmKGVyLm1heD1EdCksbnVsbCE9WnQmJihlci5zdGVwPVp0KSxudWxsIT1nbiYmKGVyLnBhZ2U9Z24pLHZ0''@;'; put 'put ''JiYoZXIudD12dC5yZXBsYWNlKC9ccyo8W1xzXFNdKj8+XHMqL2csIiIpKSxQWyIhY29udHJvbHMiXS5wdXNoKGVyKX19KX0oWWkoVmUpLHksdmV8fFtdKSx5WyIhTERQIl09eWUseVsiIWN0cmxpZCJdJiZ5WyIhY3RybGlkIl0uZm9yRWFjaChmdW5jdGlvbih6ZSl7aWYoemUucmVsJiZ6ZS5y''@;'; put 'put ''ZWwuVGFyZ2V0KXt2YXIgV2U9cm4oemUucmVsLlRhcmdldCxYKTt6ZS5wYXRoPVdlLGRlbGV0ZSB6ZS5yZWx9fSl9fShsdCwwLHksUCwwLDAsMCxDdCksbHR9Y2F0Y2goYXQpe2lmKHllLldURil0aHJvdyBhdH19ZnVuY3Rpb24gQmwoeSl7cmV0dXJuIi8iPT15LmNoYXJBdCgwKT95LnNsaWNl''@;'; put 'put ''KDEpOnl9dmFyIHRjPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBsMyh5LFApe2lmKER2PVtdLGREKFA9UHx8e30pLHBuKHksIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpfHxwbih5LCJvYmplY3RkYXRhLnhtbCIpKXJldHVybiBmdW5jdGlvbiBlbyh5LFApe1A9UHx8e30scG4oeSwiTUVUQS1JTkYv''@;'; put 'put ''bWFuaWZlc3QueG1sIikmJmZ1bmN0aW9uIG1zKHksUCl7Zm9yKHZhciBYLG5lLEw9TEMoeSk7WD1YZy5leGVjKEwpOylzd2l0Y2goWFszXSl7Y2FzZSJtYW5pZmVzdCI6YnJlYWs7Y2FzZSJmaWxlLWVudHJ5IjppZigiLyI9PShuZT1hbihYWzBdLCExKSkucGF0aCYmbmUudHlwZSE9PXdhKXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVGhpcyBPcGVuRG9jdW1lbnQgaXMgbm90IGEgc3ByZWFkc2hlZXQiKTticmVhaztjYXNlImVuY3J5cHRpb24tZGF0YSI6Y2FzZSJhbGdvcml0aG0iOmNhc2Uic3RhcnQta2V5LWdlbmVyYXRpb24iOmNhc2Uia2V5LWRlcml2YXRpb24iOnRocm93IG5ldyBFcnJvcigi''@;'; put 'put ''VW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRpb24iKTtkZWZhdWx0OmlmKFAmJlAuV1RGKXRocm93IFh9fShFdCh5LCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxQKTt2YXIgTD1lbih5LCJjb250ZW50LnhtbCIpO2lmKCFMKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBjb250ZW50LnhtbCBpbiBP''@;'; put 'put ''RFMgLyBVT0YgZmlsZSIpO3ZhciBYPVZDKFlpKEwpLFApO3JldHVybiBwbih5LCJtZXRhLnhtbCIpJiYoWC5Qcm9wcz1oOShFdCh5LCJtZXRhLnhtbCIpKSksWH0oeSxQKTtpZihwbih5LCJJbmRleC9Eb2N1bWVudC5pd2EiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMg''@;'; put 'put ''ZmlsZSIpO3ZhciBmZSxiZSxMPWZ1bmN0aW9uIHl0KHkpe2Zvcih2YXIgUD15LkZ1bGxQYXRoc3x8b3QoeS5maWxlcyksTD1bXSxYPTA7WDxQLmxlbmd0aDsrK1gpIi8iIT1QW1hdLnNsaWNlKC0xKSYmTC5wdXNoKFBbWF0pO3JldHVybiBMLnNvcnQoKX0oeSksWD1mdW5jdGlvbiBFeSh5KXt2''@;'; put 'put ''YXIgUD17d29ya2Jvb2tzOltdLHNoZWV0czpbXSxjaGFydHM6W10sZGlhbG9nczpbXSxtYWNyb3M6W10scmVsczpbXSxzdHJzOltdLGNvbW1lbnRzOltdLGxpbmtzOltdLGNvcmVwcm9wczpbXSxleHRwcm9wczpbXSxjdXN0cHJvcHM6W10sdGhlbWVzOltdLHN0eWxlczpbXSxjYWxjY2hhaW5z''@;'; put 'put ''OltdLHZiYTpbXSxkcmF3aW5nczpbXSxwaXZvdHM6W10scGl2b3RjYWNoZXM6W10scGl2b3RyZWNvcmRzOltdLGRhdGFtb2RlbHM6W10sY2hhcnRvYmpzOltdLGNoYXJ0c3R5bGVzOltdLGNoYXJ0Y29sb3JzOltdLGNoYXJ0ZXhzOltdLHRhYmxlczpbXSxjb25uczpbXSxjdHJscHJvcHM6W10s''@;'; put 'put ''Y3VzdG9teG1scHJvcHM6W10sVE9ETzpbXSx4bWxuczoiIn07aWYoIXl8fCF5Lm1hdGNoKXJldHVybiBQO3ZhciBMPXt9O2lmKCh5Lm1hdGNoKFh0KXx8W10pLmZvckVhY2goZnVuY3Rpb24oWCl7dmFyIG5lPWFuKFgpO3N3aXRjaChuZVswXS5yZXBsYWNlKEpuLCI8Iikpe2Nhc2UiPD94bWwi''@;'; put 'put ''OmJyZWFrO2Nhc2UiPFR5cGVzIjpQLnhtbG5zPW5lWyJ4bWxucyIrKG5lWzBdLm1hdGNoKC88KFx3Kyk6Lyl8fFsiIiwiIl0pWzFdXTticmVhaztjYXNlIjxEZWZhdWx0IjpMW25lLkV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpXT1uZS5Db250ZW50VHlwZTticmVhaztjYXNlIjxPdmVycmlkZSI6''@;'; put 'put ''dm9pZCAwIT09UFtTcFtuZS5Db250ZW50VHlwZV1dJiZQW1NwW25lLkNvbnRlbnRUeXBlXV0ucHVzaChuZS5QYXJ0TmFtZSl9fSksUC54bWxucyE9PWtpLkNUKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrUC54bWxucyk7cmV0dXJuIFAuY2FsY2NoYWluPVAuY2FsY2No''@;'; put 'put ''YWlucy5sZW5ndGg+MD9QLmNhbGNjaGFpbnNbMF06IiIsUC5zc3Q9UC5zdHJzLmxlbmd0aD4wP1Auc3Ryc1swXToiIixQLnN0eWxlPVAuc3R5bGVzLmxlbmd0aD4wP1Auc3R5bGVzWzBdOiIiLFAuY29ubj1QLmNvbm5zLmxlbmd0aD4wP1AuY29ubnNbMF06IiIsUC5kZWZhdWx0cz1MLGRlbGV0''@;'; put 'put ''ZSBQLmNhbGNjaGFpbnMsUH0oZW4oeSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIpKSxuZT0hMTtpZigwPT09WC53b3JrYm9va3MubGVuZ3RoJiZFdCh5LGJlPSJ4bC93b3JrYm9vay54bWwiLCEwKSYmWC53b3JrYm9va3MucHVzaChiZSksMD09PVgud29ya2Jvb2tzLmxlbmd0aCl7aWYoIUV0KHks''@;'; put 'put ''YmU9InhsL3dvcmtib29rLmJpbiIsITApKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgd29ya2Jvb2siKTtYLndvcmtib29rcy5wdXNoKGJlKSxuZT0hMH0iYmluIj09WC53b3JrYm9va3NbMF0uc2xpY2UoLTMpJiYobmU9ITApO3ZhciB2ZT17fSx5ZT17fTtpZighUC5ib29rU2hl''@;'; put 'put ''ZXRzJiYhUC5ib29rUHJvcHMpe2lmKGw2PVtdLFguc3N0KXRyeXtsNj1mdW5jdGlvbiB2Qih5LFAsTCl7cmV0dXJuIi5iaW4iPT09UC5zbGljZSgtNCk/ZnVuY3Rpb24gQTkoeSxQKXt2YXIgTD1bXSxYPSExO3JldHVybiBtYyh5LGZ1bmN0aW9uKGZlLGJlLHZlKXtzd2l0Y2godmUpe2Nhc2Ug''@;'; put 'put ''MTU5OkwuQ291bnQ9ZmVbMF0sTC5VbmlxdWU9ZmVbMV07YnJlYWs7Y2FzZSAxOTpMLnB1c2goZmUpO2JyZWFrO2Nhc2UgMTYwOnJldHVybiEwO2Nhc2UgMzU6WD0hMDticmVhaztjYXNlIDM2Olg9ITE7YnJlYWs7ZGVmYXVsdDppZihiZS5pbmRleE9mKCJCZWdpbiIpPjB8fGJlLmluZGV4T2Yo''@;'; put 'put ''IkVuZCIpLCFYfHxQLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIrdmUrIiAiK2JlKX19KSxMfSh5LEwpOmZ1bmN0aW9uIGRoKHksUCl7dmFyIEw9W10sWD0iIjtpZigheSlyZXR1cm4gTDt2YXIgbmU9eS5tYXRjaChPVCk7aWYobmUpe1g9bmVbMl0ucmVwbGFjZShQ''@;'; put 'put ''VCwiIikuc3BsaXQoSzUpO2Zvcih2YXIgZmU9MDtmZSE9WC5sZW5ndGg7KytmZSl7dmFyIGJlPUp5KFhbZmVdLnRyaW0oKSxQKTtudWxsIT1iZSYmKExbTC5sZW5ndGhdPWJlKX1uZT1hbihuZVsxXSksTC5Db3VudD1uZS5jb3VudCxMLlVuaXF1ZT1uZS51bmlxdWVDb3VudH1yZXR1cm4gTH0o''@;'; put 'put ''eSxMKX0oRXQoeSxCbChYLnNzdCkpLFguc3N0LFApfWNhdGNoKHJyKXtpZihQLldURil0aHJvdyBycn1QLmNlbGxTdHlsZXMmJlgudGhlbWVzLmxlbmd0aCYmKHZlPWZ1bmN0aW9uIG1CKHksUCxMKXtyZXR1cm4gcHcoeSxMKX0oZW4oeSxYLnRoZW1lc1swXS5yZXBsYWNlKC9eXC8vLCIiKSwh''@;'; put 'put ''MCl8fCIiLDAsUCkpLFguc3R5bGUmJih5ZT1mdW5jdGlvbiBnQih5LFAsTCxYKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBKVCh5LFAsTCl7dmFyIFg9e051bWJlckZtdDpbXX07Zm9yKHZhciBuZSBpbiB3Ll90YWJsZSlYLk51bWJlckZtdFtuZV09dy5fdGFibGVbbmVd''@;'; put 'put ''O1guQ2VsbFhmPVtdLFguRm9udHM9W10sWC5GaWxscz1bXSxYLkJvcmRlcnM9W107dmFyIGZlPVtdLGJlPSExO3JldHVybiBtYyh5LGZ1bmN0aW9uKHllLFZlLHplKXtzd2l0Y2goemUpe2Nhc2UgNDQ6WC5OdW1iZXJGbXRbeWVbMF1dPXllWzFdLHcubG9hZCh5ZVsxXSx5ZVswXSk7YnJlYWs7''@;'; put 'put ''Y2FzZSA0MzpqOSh5ZS5jb2xvcixQKSxYLkZvbnRzLnB1c2goeWUpO2JyZWFrO2Nhc2UgMTAyNTpjYXNlIDQ4OmNhc2UgNTA3OmNhc2UgNTcyOmNhc2UgNDc1OmNhc2UgMTE3MTpjYXNlIDIxMDI6Y2FzZSAxMTMwOmNhc2UgNTEyOmNhc2UgMjA5NTpjYXNlIDMwNzI6YnJlYWs7Y2FzZSA0NTp5''@;'; put 'put ''ZS5mZ0NvbG9yJiZqOSh5ZS5mZ0NvbG9yLFApLHllLmJnQ29sb3ImJmo5KHllLmJnQ29sb3IsUCksWC5GaWxscy5wdXNoKHllKTticmVhaztjYXNlIDQ2OlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiZGlhZyJdLmZvckVhY2goZnVuY3Rpb24oV2Upe3llW1dlXSYmeWVbV2VdLmNv''@;'; put 'put ''bG9yJiZqOSh5ZVtXZV0uY29sb3IsUCl9KSxYLkJvcmRlcnMucHVzaCh5ZSk7YnJlYWs7Y2FzZSA0NzoiQnJ0QmVnaW5DZWxsWEZzIj09ZmVbZmUubGVuZ3RoLTFdJiZYLkNlbGxYZi5wdXNoKHllKTticmVhaztjYXNlIDM1OmJlPSEwO2JyZWFrO2Nhc2UgMzY6YmU9ITE7YnJlYWs7Y2FzZSAz''@;'; put 'put ''NzpmZS5wdXNoKFZlKSxiZT0hMDticmVhaztjYXNlIDM4OmZlLnBvcCgpLGJlPSExO2JyZWFrO2RlZmF1bHQ6aWYoKFZlfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wKWZlLnB1c2goVmUpO2Vsc2UgaWYoKFZlfHwiIikuaW5kZXhPZigiRW5kIik+MClmZS5wb3AoKTtlbHNlIGlmKCFiZXx8TC5X''@;'; put 'put ''VEYmJiJCcnRBQ0JlZ2luIiE9ZmVbZmUubGVuZ3RoLTFdKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIit6ZSsiICIrVmUpfX0pLChYLkZvbnRzfHxbXSlbMF0mJkZwKFguRm9udHNbMF0pLFh9KHksTCxYKTpHVCh5LEwsWCl9KEV0KHksQmwoWC5zdHlsZSkpLFguc3R5bGUs''@;'; put 'put ''dmUsUCkpfXZhciBWZT1YLmxpbmtzLm1hcChmdW5jdGlvbihycil7dHJ5e3ZhciBFbj12Mihlbih5LFNyKEJsKHJyKSkpLHJyKTtyZXR1cm4gZnVuY3Rpb24gYkIoeSxQLEwsWCl7cmV0dXJuIi5iaW4iPT09TC5zbGljZSgtNCk/ZnVuY3Rpb24gaGsoeSxQLEwsWCl7aWYoIXkpcmV0dXJuIHk7''@;'; put 'put ''dmFyIG5lPVh8fHt9LGZlPSExO21jKHksZnVuY3Rpb24oeWUsVmUsemUpe3N3aXRjaCh6ZSl7Y2FzZSAzNTk6Y2FzZSAzNjM6Y2FzZSAzNjQ6Y2FzZSAzNjY6Y2FzZSAzNjc6Y2FzZSAzNjg6Y2FzZSAzNjk6Y2FzZSAzNzA6Y2FzZSAzNzE6Y2FzZSA0NzI6Y2FzZSA1Nzc6Y2FzZSA1Nzg6Y2Fz''@;'; put 'put ''ZSA1Nzk6Y2FzZSA1ODA6Y2FzZSA1ODE6Y2FzZSA1ODI6Y2FzZSA1ODM6Y2FzZSA1ODQ6Y2FzZSA1ODU6Y2FzZSA1ODY6Y2FzZSA1ODc6YnJlYWs7Y2FzZSAzNTpmZT0hMDticmVhaztjYXNlIDM2OmZlPSExO2JyZWFrO2RlZmF1bHQ6aWYoISgoVmV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjAp''@;'; put 'put ''JiYhKChWZXx8IiIpLmluZGV4T2YoIkVuZCIpPjApJiYoIWZlfHxuZS5XVEYpKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgIit6ZS50b1N0cmluZygxNikrIiAiK1ZlKX19LG5lKX0oeSwwLDAsWCk6ZnVuY3Rpb24gZGsoeSxQLEwsWCl7dmFyIG5lPVh8fHt9LGZlPXtTaGVl''@;'; put 'put ''dE5hbWVzOltdLFNoZWV0czp7fX0sdmU9ITEseWU9e30sVmU9LTEsemU9LTEsV2U9e3M6e3I6MCxjOjB9LGU6e3I6LTEsYzotMX19LHJ0PXt9LGx0PTA7cmV0dXJuKHl8fCIiKS5yZXBsYWNlKFh0LGZ1bmN0aW9uKEN0LGF0KXt2YXIgdnQ9YW4oQ3QpO3N3aXRjaCh0bih2dFswXSkpe2Nhc2Ui''@;'; put 'put ''PD94bWwiOmNhc2UiPGV4dGVybmFsTGluayI6Y2FzZSI8L2V4dGVybmFsTGluaz4iOmNhc2UiPC9leHRlcm5hbEJvb2s+IjpjYXNlIjxzaGVldE5hbWVzIjpjYXNlIjxzaGVldE5hbWVzPiI6Y2FzZSI8L3NoZWV0TmFtZXM+IjpjYXNlIjxzaGVldERhdGFTZXQ+IjpjYXNlIjxzaGVldERhdGFT''@;'; put 'put ''ZXQvPiI6Y2FzZSI8L3NoZWV0RGF0YVNldD4iOmNhc2UiPC9yb3c+IjpicmVhaztjYXNlIjxleHRlcm5hbEJvb2siOmNhc2UiPGV4dGVybmFsQm9vaz4iOmZlLlRhcmdldD1QWyIhaWQiXVt2dC5pZF0uVGFyZ2V0LGZlLk1pc3Npbmc9UFsiIWlkIl1bdnQuaWRdLlR5cGU9PVNvLlhNSVNTO2Jy''@;'; put 'put ''ZWFrO2Nhc2UiPHNoZWV0TmFtZSI6ZmUuU2hlZXROYW1lcy5wdXNoKGhyKFlpKHZ0LnZhbCkpKTticmVhaztjYXNlIjxzaGVldERhdGEiOnllPXt9LGZlLlNoZWV0c1tmZS5TaGVldE5hbWVzW3Z0LnNoZWV0SWRdXT1Scih2dC5yZWZyZXNoRXJyb3J8fCIwIik/bnVsbDp5ZTticmVhaztjYXNl''@;'; put 'put ''Ijwvc2hlZXREYXRhPiI6V2UuZS5jPj0wJiYoeWVbIiFyZWYiXT1EaShXZSkpO2JyZWFrO2Nhc2UiPHJvdyI6Y2FzZSI8cm93PiI6dnQucj9WZT1wYXJzZUludCh2dC5yLDEwKS0xOlZlKyssemU9LTE7YnJlYWs7Y2FzZSI8Y2VsbCI6Y2FzZSI8Y2VsbD4iOnZ0LnI/emU9a3ModnQucikuYzor''@;'; put 'put ''K3plLHJ0LnQ9dnQudHx8Im4iLCJzdHIiPT1ydC50JiYocnQudD0icyIpO2JyZWFrO2Nhc2UiPC9jZWxsPiI6V2UuZS5yPFZlJiYoV2UuZS5yPVZlKSxXZS5lLmM8emUmJihXZS5lLmM9emUpLHllW0FpKHtyOlZlLGM6emV9KV09cnQscnQ9e307YnJlYWs7Y2FzZSI8diI6Y2FzZSI8dj4iOmx0''@;'; put 'put ''PUN0Lmxlbmd0aCthdDticmVhaztjYXNlIjwvdj4iOnZhciBQdD1ocih5LnNsaWNlKGx0LGF0KSk7cnQudj0ibiI9PXJ0LnQ/cGFyc2VGbG9hdChQdCk6UHQ7YnJlYWs7Y2FzZSI8di8+IjpydC52PSIiO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOnZlPSEwO2JyZWFrO2Nhc2UiPC9kZWZp''@;'; put 'put ''bmVkTmFtZXM+Ijp2ZT0hMTticmVhaztkZWZhdWx0OmlmKCF2ZSYmbmUuV1RGKXRocm93InVucmVjb2duaXplZCAiK3Z0WzBdKyIgaW4gZXh0ZXJuYWwgbGluayJ9fSksZmV9KHksUCwwLFgpfShFdCh5LEJsKHJyKSksRW4scnIsUCl9Y2F0Y2h7fX0pLHplPWZ1bmN0aW9uIEE2KHksUCxMKXty''@;'; put 'put ''ZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlvbiBaUSh5LFApe3ZhciBMPXtBcHBWZXJzaW9uOnt9LFdCUHJvcHM6e30sV0JWaWV3OltdLFNoZWV0czpbXSxDYWxjUHI6e30seG1sbnM6IiJ9LFg9W10sbmU9ITE7UHx8KFA9e30pLFAuYmlmZj0xMjt2YXIgZmU9W10sYmU9W1tdXTty''@;'; put 'put ''ZXR1cm4gYmUuU2hlZXROYW1lcz1bXSxiZS5YVEk9W10sTDZbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOnMzfSxtYyh5LGZ1bmN0aW9uKHllLFZlLHplKXtzd2l0Y2goemUpe2Nhc2UgMTU2OmJlLlNoZWV0TmFtZXMucHVzaCh5ZS5uYW1lKSxMLlNoZWV0cy5wdXNoKHllKTticmVhaztjYXNl''@;'; put 'put ''IDE1MzpMLldCUHJvcHM9eWU7YnJlYWs7Y2FzZSAzOTpudWxsIT15ZS5TaGVldCYmKFAuU0lEPXllLlNoZWV0KSx5ZS5SZWY9Z3UoeWUuUHRnLG51bGwsbnVsbCxiZSxQKSxkZWxldGUgUC5TSUQsZGVsZXRlIHllLlB0ZyxmZS5wdXNoKHllKTticmVhaztjYXNlIDEwMzY6Y2FzZSAzNjE6Y2Fz''@;'; put 'put ''ZSAyMDcxOmNhc2UgMTU4OmNhc2UgMTQzOmNhc2UgNjY0OmNhc2UgMzUzOmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSA1MzQ6Y2FzZSA2Nzc6Y2FzZSAxNTc6Y2FzZSA2MTA6Y2FzZSAyMDUwOmNhc2UgMTU1OmNhc2UgNTQ4OmNhc2UgNjc2OmNhc2UgMTI4OmNhc2UgNjY1OmNhc2UgMjEyODpj''@;'; put 'put ''YXNlIDIxMjU6Y2FzZSA1NDk6Y2FzZSAyMDUzOmNhc2UgNTk2OmNhc2UgMjA3NjpjYXNlIDIwNzU6Y2FzZSAyMDgyOmNhc2UgMzk3OmNhc2UgMTU0OmNhc2UgMTExNzpjYXNlIDU1MzpjYXNlIDIwOTE6Y2FzZSAxNjpicmVhaztjYXNlIDM1NzpjYXNlIDM1ODpjYXNlIDM1NTpjYXNlIDY2Nzpi''@;'; put 'put ''ZVswXS5sZW5ndGg/YmUucHVzaChbemUseWVdKTpiZVswXT1bemUseWVdLGJlW2JlLmxlbmd0aC0xXS5YVEk9W107YnJlYWs7Y2FzZSAzNjI6MD09PWJlLmxlbmd0aCYmKGJlWzBdPVtdLGJlWzBdLlhUST1bXSksYmVbYmUubGVuZ3RoLTFdLlhUST1iZVtiZS5sZW5ndGgtMV0uWFRJLmNvbmNh''@;'; put 'put ''dCh5ZSksYmUuWFRJPWJlLlhUSS5jb25jYXQoeWUpO2JyZWFrO2Nhc2UgMzU6Y2FzZSAzNzpYLnB1c2goVmUpLG5lPSEwO2JyZWFrO2Nhc2UgMzY6Y2FzZSAzODpYLnBvcCgpLG5lPSExO2JyZWFrO2RlZmF1bHQ6aWYoISgoVmV8fCIiKS5pbmRleE9mKCJCZWdpbiIpPjApJiYhKChWZXx8IiIp''@;'; put 'put ''LmluZGV4T2YoIkVuZCIpPjApJiYoIW5lfHxQLldURiYmIkJydEFDQmVnaW4iIT1YW1gubGVuZ3RoLTFdJiYiQnJ0RlJUQmVnaW4iIT1YW1gubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkICIremUrIiAiK1ZlKX19LFApLFNDKEwpLEwuTmFtZXM9ZmUsTC5z''@;'; put 'put ''dXBib29rcz1iZSxMfSh5LEwpOmZ1bmN0aW9uIHhDKHksUCl7aWYoIXkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBmaWxlIik7dmFyIEw9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSxOYW1lczpbXSxFeHRlcm46W10seG1s''@;'; put 'put ''bnM6IiJ9LFg9ITEsbmU9InhtbG5zIixmZT17fSxiZT0wO2lmKHkucmVwbGFjZShYdCxmdW5jdGlvbih5ZSxWZSl7dmFyIHplPWFuKHllKTtzd2l0Y2godG4oemVbMF0pKXtjYXNlIjw/eG1sIjpjYXNlIjwvd29ya2Jvb2s+IjpjYXNlIjxmaWxlVmVyc2lvbi8+IjpjYXNlIjwvZmlsZVZlcnNp''@;'; put 'put ''b24+IjpjYXNlIjxmaWxlU2hhcmluZy8+IjpjYXNlIjwvd29ya2Jvb2tQcj4iOmNhc2UiPHdvcmtib29rUHJvdGVjdGlvbi8+IjpjYXNlIjxib29rVmlld3MiOmNhc2UiPGJvb2tWaWV3cz4iOmNhc2UiPC9ib29rVmlld3M+IjpjYXNlIjwvd29ya2Jvb2tWaWV3PiI6Y2FzZSI8c2hlZXRzIjpj''@;'; put 'put ''YXNlIjxzaGVldHM+IjpjYXNlIjwvc2hlZXRzPiI6Y2FzZSI8L3NoZWV0PiI6Y2FzZSI8ZnVuY3Rpb25Hcm91cHMiOmNhc2UiPGZ1bmN0aW9uR3JvdXBzLz4iOmNhc2UiPGZ1bmN0aW9uR3JvdXAiOmNhc2UiPGV4dGVybmFsUmVmZXJlbmNlcyI6Y2FzZSI8L2V4dGVybmFsUmVmZXJlbmNlcz4i''@;'; put 'put ''OmNhc2UiPGV4dGVybmFsUmVmZXJlbmNlcz4iOmNhc2UiPGRlZmluZWROYW1lcy8+IjpjYXNlIjxkZWZpbmVkTmFtZS8+IjpjYXNlIjwvY2FsY1ByPiI6Y2FzZSI8b2xlU2l6ZSI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8''@;'; put 'put ''Y3VzdG9tV29ya2Jvb2tWaWV3cyI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3IjpjYXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3PiI6Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6Y2FzZSI8cGl2b3RDYWNoZSI6Y2FzZSI8c21hcnRU''@;'; put 'put ''YWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpjYXNlIjxzbWFydFRhZ1R5cGVzIjpjYXNlIjxzbWFydFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpjYXNlIjxzbWFydFRhZ1R5cGUiOmNhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6Y2FzZSI8Zmls''@;'; put 'put ''ZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmNhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmNhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0''@;'; put 'put ''PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpjYXNlIjxBcmNoSUQiOmNhc2UiPHJldmlzaW9uUHRyIjpicmVhaztjYXNlIjx3b3JrYm9vayI6eWUubWF0Y2goRTYpJiYobmU9InhtbG5zIit5ZS5tYXRjaCgvPChcdyspOi8pWzFdKSxMLnhtbG5zPXplW25lXTticmVhaztjYXNl''@;'; put 'put ''IjxmaWxlVmVyc2lvbiI6ZGVsZXRlIHplWzBdLEwuQXBwVmVyc2lvbj16ZTticmVhaztjYXNlIjxmaWxlU2hhcmluZyI6TC5Nb2RpZnk9e3VzZXI6emUudXNlck5hbWUsd2FybjpScih6ZS5yZWFkT25seVJlY29tbWVuZGVkfHwiZmFsc2UiKX0sKHplLmFsZ29yaXRobU5hbWV8fHplLmhhc2hW''@;'; put 'put ''YWx1ZXx8emUuc2FsdFZhbHVlfHx6ZS5zcGluQ291bnQpJiYoTC5Nb2RpZnkuZW5jcnlwdGlvbj17YWxnbzp6ZS5hbGdvcml0aG1OYW1lLGhhc2g6emUuaGFzaFZhbHVlLHNhbHQ6emUuc2FsdFZhbHVlLHNwaW46K3plLnNwaW5Db3VudHx8MWU1fSk7YnJlYWs7Y2FzZSI8d29ya2Jvb2tQciI6''@;'; put 'put ''Y2FzZSI8d29ya2Jvb2tQci8+Ijpwdi5mb3JFYWNoKGZ1bmN0aW9uKHJ0KXtpZihudWxsIT16ZVtydFswXV0pc3dpdGNoKHJ0WzJdKXtjYXNlImJvb2wiOkwuV0JQcm9wc1tydFswXV09UnIoemVbcnRbMF1dKTticmVhaztjYXNlImludCI6TC5XQlByb3BzW3J0WzBdXT1wYXJzZUludCh6ZVty''@;'; put 'put ''dFswXV0sMTApO2JyZWFrO2RlZmF1bHQ6TC5XQlByb3BzW3J0WzBdXT16ZVtydFswXV19fSksemUuY29kZU5hbWUmJihMLldCUHJvcHMuQ29kZU5hbWU9WWkoemUuY29kZU5hbWUpKTticmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24iOnZhciBXZT1MLlByb3RlY3Rpb258fHt9O1dlLmxv''@;'; put 'put ''Y2tTdHJ1Y3R1cmU9UnIoemUubG9ja1N0cnVjdHVyZXx8ImZhbHNlIiksV2UubG9ja1dpbmRvd3M9UnIoemUubG9ja1dpbmRvd3N8fCJmYWxzZSIpLHplLndvcmtib29rQWxnb3JpdGhtTmFtZSYmKFdlLmVuY3J5cHRpb249e2FsZ286emUud29ya2Jvb2tBbGdvcml0aG1OYW1lLGhhc2g6emUu''@;'; put 'put ''d29ya2Jvb2tIYXNoVmFsdWUsc2FsdDp6ZS53b3JrYm9va1NhbHRWYWx1ZSxzcGluOit6ZS53b3JrYm9va1NwaW5Db3VudHx8MWU1fSksTC5Qcm90ZWN0aW9uPVdlO2JyZWFrO2Nhc2UiPHdvcmtib29rVmlldyI6Y2FzZSI8d29ya2Jvb2tWaWV3Lz4iOmRlbGV0ZSB6ZVswXSxMLldCVmlldy5w''@;'; put 'put ''dXNoKHplKTticmVhaztjYXNlIjxzaGVldCI6c3dpdGNoKHplLnN0YXRlKXtjYXNlImhpZGRlbiI6emUuSGlkZGVuPTE7YnJlYWs7Y2FzZSJ2ZXJ5SGlkZGVuIjp6ZS5IaWRkZW49MjticmVhaztkZWZhdWx0OnplLkhpZGRlbj0wfWRlbGV0ZSB6ZS5zdGF0ZSx6ZS5uYW1lPWhyKFlpKHplLm5h''@;'; put 'put ''bWUpKSxkZWxldGUgemVbMF0sTC5TaGVldHMucHVzaCh6ZSk7YnJlYWs7Y2FzZSI8ZXh0ZXJuYWxSZWZlcmVuY2UiOkwuRXh0ZXJuLnB1c2goemUuaWQpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6Y2FzZSI8ZXh0IjpjYXNlIjxBbHRlcm5hdGVDb250''@;'; put 'put ''ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6WD0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6Y2FzZSI8L2V4dD4iOmNhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6WD0hMTticmVhaztjYXNlIjxkZWZpbmVkTmFtZSI6KGZlPXt9KS5OYW1lPVlpKHplLm5hbWUpLHplLmNvbW1l''@;'; put 'put ''bnQmJihmZS5Db21tZW50PXplLmNvbW1lbnQpLHplLmxvY2FsU2hlZXRJZCYmKGZlLlNoZWV0PSt6ZS5sb2NhbFNoZWV0SWQpLFJyKHplLmhpZGRlbnx8IjAiKSYmKGZlLkhpZGRlbj0hMCksYmU9VmUreWUubGVuZ3RoO2JyZWFrO2Nhc2UiPC9kZWZpbmVkTmFtZT4iOmZlLlJlZj1ocihZaSh5''@;'; put 'put ''LnNsaWNlKGJlLFZlKSkpLEwuTmFtZXMucHVzaChmZSk7YnJlYWs7Y2FzZSI8Y2FsY1ByIjpjYXNlIjxjYWxjUHIvPiI6ZGVsZXRlIHplWzBdLEwuQ2FsY1ByPXplO2JyZWFrO2RlZmF1bHQ6aWYoIVgmJlAuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIremVbMF0rIiBpbiB3''@;'; put 'put ''b3JrYm9vayIpfXJldHVybiB5ZX0pLC0xPT09a2kubWFpbi5pbmRleE9mKEwueG1sbnMpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrTC54bWxucyk7cmV0dXJuIFNDKEwpLEx9KHksTCl9KEV0KHksQmwoWC53b3JrYm9va3NbMF0pKSxYLndvcmtib29rc1swXSxQKSxX''@;'; put 'put ''ZT17fSxydD0iIjtYLmNvcmVwcm9wcy5sZW5ndGgmJigocnQ9RXQoeSxCbChYLmNvcmVwcm9wc1swXSksITApKSYmKFdlPWg5KHJ0KSksMCE9PVguZXh0cHJvcHMubGVuZ3RoJiYocnQ9RXQoeSxCbChYLmV4dHByb3BzWzBdKSwhMCkpJiZmdW5jdGlvbiBfVCh5LFAsTCl7dmFyIFg9e307UHx8''@;'; put 'put ''KFA9e30pLHk9WWkoeSksb2QuZm9yRWFjaChmdW5jdGlvbihuZSl7dmFyIGZlPSh5Lm1hdGNoKFB1KG5lWzBdKSl8fFtdKVsxXTtzd2l0Y2gobmVbMl0pe2Nhc2Uic3RyaW5nIjpmZSYmKFBbbmVbMV1dPWhyKGZlKSk7YnJlYWs7Y2FzZSJib29sIjpQW25lWzFdXT0idHJ1ZSI9PT1mZTticmVh''@;'; put 'put ''aztjYXNlInJhdyI6dmFyIGJlPXkubWF0Y2gobmV3IFJlZ0V4cCgiPCIrbmVbMF0rIltePl0qPihbXFxzXFxTXSo/KTwvIituZVswXSsiPiIpKTtiZSYmYmUubGVuZ3RoPjAmJihYW25lWzFdXT1iZVsxXSl9fSksWC5IZWFkaW5nUGFpcnMmJlguVGl0bGVzT2ZQYXJ0cyYmeHAoWC5IZWFkaW5n''@;'; put 'put ''UGFpcnMsWC5UaXRsZXNPZlBhcnRzLFAsTCl9KHJ0LFdlLFApKTt2YXIgbHQ9e307KCFQLmJvb2tTaGVldHN8fFAuYm9va1Byb3BzKSYmMCE9PVguY3VzdHByb3BzLmxlbmd0aCYmKHJ0PWVuKHksQmwoWC5jdXN0cHJvcHNbMF0pLCEwKSkmJihsdD1mdW5jdGlvbiBwOSh5LFApe3ZhciBMPXt9''@;'; put 'put ''LFg9IiIsbmU9eS5tYXRjaChPNSk7aWYobmUpZm9yKHZhciBmZT0wO2ZlIT1uZS5sZW5ndGg7KytmZSl7dmFyIGJlPW5lW2ZlXSx2ZT1hbihiZSk7c3dpdGNoKHZlWzBdKXtjYXNlIjw/eG1sIjpjYXNlIjxQcm9wZXJ0aWVzIjpicmVhaztjYXNlIjxwcm9wZXJ0eSI6WD1ocih2ZS5uYW1lKTti''@;'; put 'put ''cmVhaztjYXNlIjwvcHJvcGVydHk+IjpYPW51bGw7YnJlYWs7ZGVmYXVsdDppZigwPT09YmUuaW5kZXhPZigiPHZ0OiIpKXt2YXIgeWU9YmUuc3BsaXQoIj4iKSxWZT15ZVswXS5zbGljZSg0KSx6ZT15ZVsxXTtzd2l0Y2goVmUpe2Nhc2UibHBzdHIiOmNhc2UiYnN0ciI6Y2FzZSJscHdzdHIi''@;'; put 'put ''OmNhc2UiY3kiOmNhc2UiZXJyb3IiOkxbWF09aHIoemUpO2JyZWFrO2Nhc2UiYm9vbCI6TFtYXT1Scih6ZSk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6TFtYXT1wYXJzZUludCh6ZSwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2Fz''@;'; put 'put ''ZSJyOCI6Y2FzZSJkZWNpbWFsIjpMW1hdPXBhcnNlRmxvYXQoemUpO2JyZWFrO2Nhc2UiZmlsZXRpbWUiOmNhc2UiZGF0ZSI6TFtYXT1GdCh6ZSk7YnJlYWs7ZGVmYXVsdDppZigiLyI9PVZlLnNsaWNlKC0xKSlicmVhaztQLldURiYmdHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlLndhcm4o''@;'; put 'put ''IlVuZXhwZWN0ZWQiLGJlLFZlLHllKX19ZWxzZSBpZigiPC8iIT09YmUuc2xpY2UoMCwyKSYmUC5XVEYpdGhyb3cgbmV3IEVycm9yKGJlKX19cmV0dXJuIEx9KHJ0LFApKTt2YXIgQ3Q9e307aWYoKFAuYm9va1NoZWV0c3x8UC5ib29rUHJvcHMpJiYoemUuU2hlZXRzP2ZlPXplLlNoZWV0cy5t''@;'; put 'put ''YXAoZnVuY3Rpb24oRW4pe3JldHVybiBFbi5uYW1lfSk6V2UuV29ya3NoZWV0cyYmV2UuU2hlZXROYW1lcy5sZW5ndGg+MCYmKGZlPVdlLlNoZWV0TmFtZXMpLFAuYm9va1Byb3BzJiYoQ3QuUHJvcHM9V2UsQ3QuQ3VzdHByb3BzPWx0KSxQLmJvb2tTaGVldHMmJnR5cGVvZiBmZTwidSImJihD''@;'; put 'put ''dC5TaGVldE5hbWVzPWZlKSxQLmJvb2tTaGVldHM/Q3QuU2hlZXROYW1lczpQLmJvb2tQcm9wcykpcmV0dXJuIEN0O2ZlPXt9O3ZhciBhdD17fTtQLmJvb2tEZXBzJiZYLmNhbGNjaGFpbiYmKGF0PWZ1bmN0aW9uIGhzKHksUCxMKXtyZXR1cm4iLmJpbiI9PT1QLnNsaWNlKC00KT9mdW5jdGlv''@;'; put 'put ''biBpSCh5LFAsTCl7dmFyIFg9W107cmV0dXJuIG1jKHksZnVuY3Rpb24oYmUsdmUseWUpe2lmKDYzPT09eWUpWC5wdXNoKGJlKTtlbHNlIGlmKCEoKHZlfHwiIikuaW5kZXhPZigiQmVnaW4iKT4wfHwodmV8fCIiKS5pbmRleE9mKCJFbmQiKT4wKSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0''@;'; put 'put ''ZWQgcmVjb3JkICIreWUrIiAiK3ZlKX0pLFh9KHkpOmZ1bmN0aW9uIGJ3KHkpe3ZhciBQPVtdO2lmKCF5KXJldHVybiBQO3ZhciBMPTE7cmV0dXJuKHkubWF0Y2goWHQpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihYKXt2YXIgbmU9YW4oWCk7c3dpdGNoKG5lWzBdKXtjYXNlIjw/eG1sIjpjYXNl''@;'; put 'put ''IjxjYWxjQ2hhaW4iOmNhc2UiPGNhbGNDaGFpbj4iOmNhc2UiPC9jYWxjQ2hhaW4+IjpicmVhaztjYXNlIjxjIjpkZWxldGUgbmVbMF0sbmUuaT9MPW5lLmk6bmUuaT1MLFAucHVzaChuZSl9fSksUH0oeSl9KEV0KHksQmwoWC5jYWxjY2hhaW4pKSxYLmNhbGNjaGFpbikpO3ZhciBrdCxEdCx2''@;'; put 'put ''dD0wLFB0PXt9LFp0PXplLlNoZWV0cztXZS5Xb3Jrc2hlZXRzPVp0Lmxlbmd0aCxXZS5TaGVldE5hbWVzPVtdO2Zvcih2YXIgZ249MDtnbiE9WnQubGVuZ3RoOysrZ24pV2UuU2hlZXROYW1lc1tnbl09WnRbZ25dLm5hbWU7dmFyICRuPW5lPyJiaW4iOiJ4bWwiLGNuPVgud29ya2Jvb2tzWzBd''@;'; put 'put ''Lmxhc3RJbmRleE9mKCIvIiksWG49KFgud29ya2Jvb2tzWzBdLnNsaWNlKDAsY24rMSkrIl9yZWxzLyIrWC53b3JrYm9va3NbMF0uc2xpY2UoY24rMSkrIi5yZWxzIikucmVwbGFjZSgvXlwvLywiIik7cG4oeSxYbil8fChYbj0ieGwvX3JlbHMvd29ya2Jvb2suIiskbisiLnJlbHMiKTt2YXIg''@;'; put 'put ''Qm49djIoZW4oeSxYbiwhMCksWG4pLERuPUJuLFFuPVtdO0JuJiYoemUmJnplLkV4dGVybiYmemUuRXh0ZXJuLmxlbmd0aCYmemUuRXh0ZXJuLmZvckVhY2goZnVuY3Rpb24ocnIsRW4pe3ZhciBiaT0oIi94bC8iK0JuWyIhaWQiXVtycl0uVGFyZ2V0KS5yZXBsYWNlKC9bXC9dW1wvXS9nLCIv''@;'; put 'put ''IikscXI9WC5saW5rcy5pbmRleE9mKGJpKTtxcj4tMSYmKFFuW0VuXT1WZVtxcl0pfSksemUmJmRlbGV0ZSB6ZS5FeHRlcm4pLEJuJiYoQm49ZnVuY3Rpb24gQXYoeSxQKXtpZigheSlyZXR1cm4gMDt0cnl7eT1QLm1hcChmdW5jdGlvbihYKXtyZXR1cm4gWC5pZHx8KFguaWQ9WC5zdHJSZWxJ''@;'; put 'put ''RCksW1gubmFtZSx5WyIhaWQiXVtYLmlkXS5UYXJnZXQsY2VlKHlbIiFpZCJdW1guaWRdLlR5cGUpXX0pfWNhdGNoe3JldHVybiBudWxsfXJldHVybiB5JiYwIT09eS5sZW5ndGg/eTpudWxsfShCbix6ZS5TaGVldHMpKTt2YXIgZXI9cG4oeSwieGwvd29ya3NoZWV0cy9zaGVldC54bWwiKT8x''@;'; put 'put ''OjAsem49W10sS3I9W107ZTpmb3IodnQ9MDt2dCE9V2UuV29ya3NoZWV0czsrK3Z0KXt2YXIgaWk9InNoZWV0IjtpZihCbiYmQm5bdnRdPyhrdD0ieGwvIitCblt2dF1bMV0ucmVwbGFjZSgvW1wvXT94bFwvLywiIikscG4oeSxrdCl8fChrdD1Cblt2dF1bMV0pLHBuKHksa3QpfHwoa3Q9WG4u''@;'; put 'put ''cmVwbGFjZSgvX3JlbHNcLy4qJC8sIiIpK0JuW3Z0XVsxXSksaWk9Qm5bdnRdWzJdKTprdD0oa3Q9InhsL3dvcmtzaGVldHMvc2hlZXQiKyh2dCsxLWVyKSsiLiIrJG4pLnJlcGxhY2UoL3NoZWV0MFwuLywic2hlZXQuIiksRHQ9a3QucmVwbGFjZSgvXiguKikoXC8pKFteXC9dKikkLywiJDEv''@;'; put 'put ''X3JlbHMvJDMucmVscyIpLHpuLnB1c2goa3QpLFAmJm51bGwhPVAuc2hlZXRzKXN3aXRjaCh0eXBlb2YgUC5zaGVldHMpe2Nhc2UibnVtYmVyIjppZih2dCE9UC5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoV2UuU2hlZXROYW1lc1t2dF0udG9Mb3dlckNhc2UoKSE9''@;'; put 'put ''UC5zaGVldHMudG9Mb3dlckNhc2UoKSljb250aW51ZSBlO2JyZWFrO2RlZmF1bHQ6aWYoQXJyYXkuaXNBcnJheSYmQXJyYXkuaXNBcnJheShQLnNoZWV0cykpe2Zvcih2YXIgRWk9MCxPaT0wO09pIT1QLnNoZWV0cy5sZW5ndGg7KytPaSkibnVtYmVyIj09dHlwZW9mIFAuc2hlZXRzW09pXSYm''@;'; put 'put ''UC5zaGVldHNbT2ldPT12dCYmKEVpPTEpLCJzdHJpbmciPT10eXBlb2YgUC5zaGVldHNbT2ldJiZQLnNoZWV0c1tPaV0udG9Mb3dlckNhc2UoKT09V2UuU2hlZXROYW1lc1t2dF0udG9Mb3dlckNhc2UoKSYmKEVpPTEpO2lmKCFFaSljb250aW51ZSBlfX1pZighUC5za2lwUGFyc2Upe3ZhciB0''@;'; put 'put ''aT12aCh5LGt0LER0LFdlLlNoZWV0TmFtZXNbdnRdLHZ0LFB0LGZlLGlpLFAsemUsdmUseWUpO3RpJiZ0aVsiIUxEUCJdJiYoS3JbdnRdPXRpWyIhTERQIl0sZGVsZXRlIHRpWyIhTERQIl0pfX1pZih0eXBlb2YgcGFyc2Vfc2hlZXRfcGl2b3Q8InUiKWZvcih2dD0wO3Z0PER2Lmxlbmd0aDsr''@;'; put 'put ''K3Z0KXBhcnNlX3NoZWV0X3Bpdm90LmFwcGx5KG51bGwsRHZbdnRdKTtpZihDdD17RGlyZWN0b3J5OlgsV29ya2Jvb2s6emUsUHJvcHM6V2UsQ3VzdHByb3BzOmx0LERlcHM6YXQsU2hlZXRzOmZlLFNoZWV0TmFtZXM6V2UuU2hlZXROYW1lcyxTdHJpbmdzOmw2LFN0eWxlczp5ZSxUaGVtZXM6''@;'; put 'put ''dmUsU1NGOncuZ2V0X3RhYmxlKCl9LCFQLnNraXBQYXJzZSl7aWYoZnVuY3Rpb24gdncoeSl7IXl8fCF5Lldvcmtib29rfHwheS5Xb3JrYm9vay5OYW1lc3x8eS5Xb3JrYm9vay5OYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKFApe2lmKFAuTmFtZSYmIl94bG5tLiI9PVAuTmFtZS5zbGljZSgwLDYp''@;'; put 'put ''JiYoIl94bG5tLlByaW50X0FyZWEiPT1QLk5hbWV8fCJfeGxubS5QcmludF9UaXRsZXMiPT1QLk5hbWUpKXt2YXIgTD15LlNoZWV0c1t5LlNoZWV0TmFtZXNbUC5TaGVldF1dO2lmKEwpe0xbIiFwcmludCJdfHwoTFsiIXByaW50Il09e30pLExbIiFwcmludCJdLnByb3BzfHwoTFsiIXByaW50''@;'; put 'put ''Il0ucHJvcHM9e30pO3ZhciBYPUxbIiFwcmludCJdLG5lPVAuUmVmO2lmKCJfeGxubS5QcmludF9BcmVhIj09UC5OYW1lKXtuZS5pbmRleE9mKCIhIik+LTEmJihuZT1uZS5zbGljZShuZS5pbmRleE9mKCIhIikrMSkpO3ZhciBmZT1SbyhuZT1uZS5yZXBsYWNlKC9bJF0vZywiIikpO1guYXJl''@;'; put 'put ''YT1mZX1lbHNlIl94bG5tLlByaW50X1RpdGxlcyI9PVAuTmFtZSYmKFgudGl0bGVzPXtzOntyOi0xLGM6LTF9LGU6e3I6LTEsYzotMX19LG5lLnNwbGl0KCIsIikuZm9yRWFjaChmdW5jdGlvbihiZSl7dmFyIHllPWFhKGJlLnNsaWNlKGJlLmluZGV4T2YoIiEiKSsxKS5yZXBsYWNlKC9bJF0v''@;'; put 'put ''ZywiIikpO3llLnMuYz4tMSYmKFgudGl0bGVzLnMuYz15ZS5zLmMpLHllLmUuYz4tMSYmKFgudGl0bGVzLmUuYz15ZS5lLmMpLHllLnMucj4tMSYmKFgudGl0bGVzLnMucj15ZS5zLnIpLHllLmUucj4tMSYmKFgudGl0bGVzLmUucj15ZS5lLnIpfSkpfX19KX0oQ3QpLFAmJlAuYm9va0ZpbGVz''@;'; put 'put ''JiYoQ3Qua2V5cz1MLEN0LmZpbGVzPXkuZmlsZXMpLFAmJlAuYm9va1ZCQSYmKFgudmJhLmxlbmd0aD4wP0N0LnZiYXJhdz1FdCh5LEJsKFgudmJhWzBdKSwhMCk6WC5kZWZhdWx0cyYmWC5kZWZhdWx0cy5iaW49PT1tayYmKEN0LnZiYXJhdz1FdCh5LCJ4bC92YmFQcm9qZWN0LmJpbiIsITAp''@;'; put 'put ''KSksRG4mJkRuWyIhaWQiXSl7Zm9yKHZhciBmcj1bXSxBbj0xO0FuPD0xMDI0OysrQW4pRG5bIiFpZCJdWyJySWQiK0FuXSYmRG5bIiFpZCJdWyJySWQiK0FuXS5UeXBlJiYvY3VzdG9tWG1sJC8udGVzdChEblsiIWlkIl1bInJJZCIrQW5dLlR5cGUpJiZmci5wdXNoKHJuKERuWyIhaWQiXVsi''@;'; put 'put ''cklkIitBbl0uVGFyZ2V0LFgud29ya2Jvb2tzWzBdKSk7ZnIubGVuZ3RoPjAmJihDdC5DdXN0b21YTUw9W10sZnIuZm9yRWFjaChmdW5jdGlvbihycil7dmFyIEVuPXtkYXRhOmVuKHksQmwocnIpKX0sQ3I9U3IocnIpO3RyeXt2YXIgYmk9djIoZW4oeSxCbChDciksITApLENyKTtpZihiaSlm''@;'; put 'put ''b3IodmFyIHFyPTE7cXI8PTEwMjQ7KytxciliaVsiIWlkIl1bInJJZCIrcXJdJiZiaVsiIWlkIl1bInJJZCIrcXJdLlR5cGUmJi9jdXN0b21YbWxQcm9wcyQvLnRlc3QoYmlbIiFpZCJdWyJySWQiK3FyXS5UeXBlKSYmKEVuLnByb3BzPWVuKHksQmwocm4oYmlbIiFpZCJdWyJySWQiK3FyXS5U''@;'; put 'put ''YXJnZXQscnIpKSkpfWNhdGNoe31DdC5DdXN0b21YTUwucHVzaChFbil9KSl9dmFyIHdyPVR0KHksInhsL21vZGVsL2l0ZW0uZGF0YSIsITApO3dyJiYoQ3QubW9kZWw9d3IpLFguY29ubiYmKEN0LmNvbm49RXQoeSxCbChYLmNvbm4pLCEwKSksUW4ubGVuZ3RoJiYoQ3QuRXh0ZXJuYWxXQj1R''@;'; put 'put ''biksemUmJih6ZS5QUEk9QTIpfXJldHVybiBQLnRlbXBsYXRlJiYoQ3QuX3dzcGF0aHM9em4sQ3QuX3N0eXBhdGg9QmwoWC5zdHlsZXx8IiIpLEN0Ll93YnBhdGg9QmwoWC53b3JrYm9va3NbMF18fCJ4bC93b3JrYm9vay54bWwiKSxDdC5fdm1scGF0aHM9S3IsQ3QuX3dicmVsc3BhdGg9WG4s''@;'; put 'put ''Q3QuX2N0PWVuKHksIltDb250ZW50X1R5cGVzXS54bWwiKSxDdC5maWxlcz15LmZpbGVzLHRjKEN0LHksUCkpLEN0fWZ1bmN0aW9uIEl2KHksUCl7dmFyIEw9UHx8e307TC5wYXNzd29yZHx8KEwucGFzc3dvcmQ9IlZlbHZldFN3ZWF0c2hvcCIpO3ZhciBYPSJXb3JrYm9vayIsbmU9RGUuZmlu''@;'; put 'put ''ZCh5LFgpO3RyeXtpZighKG5lPURlLmZpbmQoeSxYPSIvIURhdGFTcGFjZXMvVmVyc2lvbiIpKXx8IW5lLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrWCk7aWYoZnVuY3Rpb24geU4oeSl7dmFyIFA9e307UC5pZD15LnJlYWRfc2hp''@;'; put 'put ''ZnQoMCwibHBwNCIpLFAuUj1xMCh5LDQpLFAuVT1xMCh5LDQpLFAuVz1xMCh5LDQpfShuZS5jb250ZW50KSwhKG5lPURlLmZpbmQoeSxYPSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlTWFwIikpfHwhbmUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1p''@;'; put 'put ''c3NpbmcgIitYKTt2YXIgZmU9ZnVuY3Rpb24gd04oeSl7dmFyIFA9W107eS5sKz00O2Zvcih2YXIgTD15LnJlYWRfc2hpZnQoNCk7TC0tID4wOylQLnB1c2goZXcoeSkpO3JldHVybiBQfShuZS5jb250ZW50KTtpZigxIT09ZmUubGVuZ3RofHwxIT09ZmVbMF0uY29tcHMubGVuZ3RofHwwIT09''@;'; put 'put ''ZmVbMF0uY29tcHNbMF0udHx8IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UiIT09ZmVbMF0ubmFtZXx8IkVuY3J5cHRlZFBhY2thZ2UiIT09ZmVbMF0uY29tcHNbMF0udil0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCAiK1gpO2lmKCEobmU9RGUuZmluZCh5''@;'; put 'put ''LFg9Ii8hRGF0YVNwYWNlcy9EYXRhU3BhY2VJbmZvL1N0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UiKSl8fCFuZS5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK1gpO3ZhciBiZT1mdW5jdGlvbiBDTih5KXt2YXIgUD1bXTt5LmwrPTQ7''@;'; put 'put ''Zm9yKHZhciBMPXkucmVhZF9zaGlmdCg0KTtMLS0gPjA7KVAucHVzaCh5LnJlYWRfc2hpZnQoMCwibHBwNCIpKTtyZXR1cm4gUH0obmUuY29udGVudCk7aWYoMSE9YmUubGVuZ3RofHwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIhPWJlWzBdKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYg''@;'; put 'put ''RW5jcnlwdGVkIGZpbGUgYmFkICIrWCk7aWYoIShuZT1EZS5maW5kKHksWD0iLyFEYXRhU3BhY2VzL1RyYW5zZm9ybUluZm8vU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybS8hUHJpbWFyeSIpKXx8IW5lLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBt''@;'; put 'put ''aXNzaW5nICIrWCk7IWZ1bmN0aW9uIGFRKHkpe3ZhciBQPWZ1bmN0aW9uIFNOKHkpe3ZhciBQPXt9O3JldHVybiB5LnJlYWRfc2hpZnQoNCkseS5sKz00LFAuaWQ9eS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxQLm5hbWU9eS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxQLlI9cTAoeSw0KSxQLlU9cTAo''@;'; put 'put ''eSw0KSxQLlc9cTAoeSw0KSxQfSh5KTtpZihQLmVuYW1lPXkucmVhZF9zaGlmdCgwLCI4bHBwNCIpLFAuYmxrc3o9eS5yZWFkX3NoaWZ0KDQpLFAuY21vZGU9eS5yZWFkX3NoaWZ0KDQpLDQhPXkucmVhZF9zaGlmdCg0KSl0aHJvdyBuZXcgRXJyb3IoIkJhZCAhUHJpbWFyeSByZWNvcmQiKTty''@;'; put 'put ''ZXR1cm4gUH0obmUuY29udGVudCl9Y2F0Y2h7fWlmKCEobmU9RGUuZmluZCh5LFg9Ii9FbmNyeXB0aW9uSW5mbyIpKXx8IW5lLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrWCk7dmFyIHZlPWZ1bmN0aW9uIFg1KHkpe3ZhciBQPXEw''@;'; put 'put ''KHkpO3N3aXRjaChQLk1pbm9yKXtjYXNlIDI6cmV0dXJuW1AuTWlub3IseE4oeSldO2Nhc2UgMzpyZXR1cm5bUC5NaW5vcixKNSgpXTtjYXNlIDQ6cmV0dXJuW1AuTWlub3IsdHcoeSldfXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgdW5yZWNvZ25pemVkIFZlcnNp''@;'; put 'put ''b246ICIrUC5NaW5vcil9KG5lLmNvbnRlbnQpO2lmKCEobmU9RGUuZmluZCh5LFg9Ii9FbmNyeXB0ZWRQYWNrYWdlIikpfHwhbmUuY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIitYKTtpZig0PT12ZVswXSlyZXR1cm4gZnVuY3Rpb24g''@;'; put 'put ''a3YoeSxQLEwsWCl7dmFyIG5lPURlLnV0aWxzLnByZXBfYmxvYjtpZigiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9rZXlFbmNyeXB0b3IvcGFzc3dvcmQiIT15LnVyaSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVDTUEtMzc2IEFnaWxlIFVSSSAiK3ku''@;'; put 'put ''dXJpKTt2YXIgZmU9eS5lbmNzWzBdLGJlPWZlLmhhc2hBbGdvcml0aG0sdmU9ImFlcy0yNTYtY2JjIix5ZT1CdWZmZXIuZnJvbShmZS5zYWx0VmFsdWUsImJhc2U2NCIpLFZlPUJ1ZmZlci5mcm9tKHkuc2FsdFZhbHVlLCJiYXNlNjQiKSx6ZT0rZmUuYmxvY2tTaXplLFdlPStmZS5rZXlCaXRz''@;'; put 'put ''Pj4zLHJ0PUFsKEJ1ZmZlci5jb25jYXQoW3llLEJ1ZmZlci5mcm9tKGNwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsTCkpXSksYmUpLGx0PUJ1ZmZlci5hbGxvYyg0KTtuZShsdCwwKTtmb3IodmFyIEN0PTA7Q3Q8ZmUuc3BpbkNvdW50OysrQ3QpbHQubD0wLGx0LndyaXRlX3NoaWZ0KDQsQ3Qp''@;'; put 'put ''LHJ0PUFsKEJ1ZmZlci5jb25jYXQoW2x0LHJ0XSksYmUpO3ZhciBhdD1mdW5jdGlvbihlcix6bixLcixpaSl7dmFyIEVpPUFsKEJ1ZmZlci5jb25jYXQoW2VyLEJ1ZmZlci5mcm9tKFsyMCwxMTAsMTEsMjMxLDE3MSwxNzIsMjA4LDIxNF0pXSksaWkpLE9pPUVpLmxlbmd0aD49S3I/RWkuc2xp''@;'; put 'put ''Y2UoMCxLcik6QnVmZmVyLmFsbG9jKEtyKTtpZihFaS5sZW5ndGg8S3Ipe2Zvcih2YXIgdGk9MDt0aTxFaS5sZW5ndGg7Kyt0aSlPaVt0aV09RWlbdGldO2Zvcig7dGk8S3I7Kyt0aSlPaVt0aV09NTR9cmV0dXJuIE9pfShydCwwLFdlLGJlKTtzd2l0Y2goZmUuY2lwaGVyQWxnb3JpdGhtKXtj''@;'; put 'put ''YXNlIkFFUyI6aWYoIkNoYWluaW5nTW9kZUNCQyIhPWZlLmNpcGhlckNoYWluaW5nKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY2lwaGVyIGNoYWluaW5nICIrZmUuY2lwaGVyQ2hhaW5pbmcpO3ZlPSJhZXMtIitmZS5rZXlCaXRzKyItY2JjIjticmVhaztjYXNlIlJDMiI6dmU9InJj''@;'; put 'put ''MiI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNpcGhlciBhbGdvICIrZmUuY2lwaGVyQWxnb3JpdGhtKX15ZT1mdW5jdGlvbihRbil7Zm9yKHZhciBlcj1CdWZmZXIuYWxsb2MoemUpLHpuPTA7em48emU7Kyt6billclt6bl09em48UW4ubGVuZ3RoP1FuW3pu''@;'; put 'put ''XTo1NDtyZXR1cm4gZXJ9KHllKTt2YXIgdnQ9QnVmZmVyLmZyb20oZmUuZW5jcnlwdGVkS2V5VmFsdWUsImJhc2U2NCIpLFB0PVhwKGF0LHllLHZlKS51cGRhdGUodnQpLGt0PVhwKEFsKEJ1ZmZlci5jb25jYXQoW3J0LEJ1ZmZlci5mcm9tKFsyMTUsMTcwLDE1LDEwOSw0OCw5Nyw1Miw3OF0p''@;'; put 'put ''XSksYmUpLnNsaWNlKDAsV2UpLHllLHZlKS51cGRhdGUoQnVmZmVyLmZyb20oZmUuZW5jcnlwdGVkVmVyaWZpZXJIYXNoVmFsdWUsImJhc2U2NCIpKSxEdD1BbChYcChBbChCdWZmZXIuY29uY2F0KFtydCxCdWZmZXIuZnJvbShbMjU0LDE2NywyMTAsMTE4LDU5LDc1LDE1OCwxMjFdKV0pLGJl''@;'; put 'put ''KS5zbGljZSgwLFdlKSx5ZSx2ZSkudXBkYXRlKEJ1ZmZlci5mcm9tKGZlLmVuY3J5cHRlZFZlcmlmaWVySGFzaElucHV0LCJiYXNlNjQiKSksYmUpLFp0PStmZS5oYXNoU2l6ZXx8TWF0aC5taW4oa3QubGVuZ3RoLER0Lmxlbmd0aCk7aWYoMCE9a3Quc2xpY2UoMCxadCkuY29tcGFyZShEdC5z''@;'; put 'put ''bGljZSgwLFp0KSkpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgUGFzc3dvcmQiKTtuZShQLDApO3ZhciBnbj1QLnJlYWRfc2hpZnQoNCk7UC5sKz00O3ZhciAkbj1bXSxjbj1CdWZmZXIuY29uY2F0KFtWZSxCdWZmZXIuYWxsb2MoNCldKTtmb3IobmUoY24pLEN0PTA7UC5sPFAubGVuZ3Ro''@;'; put 'put ''Oyljbi5sPXllLmxlbmd0aCxjbi53cml0ZV9zaGlmdCg0LEN0KSwkbi5wdXNoKFhwKFB0LEFsKEJ1ZmZlci5mcm9tKGNuKSxiZSkuc2xpY2UoMCwxNiksdmUpLnVwZGF0ZShCdWZmZXIuZnJvbShQLnNsaWNlKFAubCxQLmwrNDA5NikpKSksUC5sKz00MDk2LCsrQ3Q7dmFyIEJuPUJ1ZmZlci5j''@;'; put 'put ''b25jYXQoJG4pLnNsaWNlKDAsZ24pLERuPUt0KFgpO3JldHVybiBEbi50eXBlPSJidWZmZXIiLFFnKEJuLERuKX0odmVbMV0sbmUuY29udGVudCxMLnBhc3N3b3JkfHwiIixMKTtpZigyPT12ZVswXSlyZXR1cm4gZnVuY3Rpb24gY0QoeSxQLEwsWCl7dmFyIG5lPURlLnV0aWxzLnByZXBfYmxv''@;'; put 'put ''YjtpZigiU3RkIiE9PXkudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEJhZCBTdGFuZGFyZCBFbmNyeXB0aW9uIik7dmFyIGZlPXkudi5TYWx0LGJlPXkudi5WZXJpZmllcix2ZT15LnYuVmVyaWZpZXJIYXNoO2lmKDM2IT15LmguRmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBT''@;'; put 'put ''dGFuZGFyZCBFbmNyeXB0aW9uIGJhZCBGbGFncyIpO3ZhciB5ZT0wLFZlPSIiO3N3aXRjaCh5LmguQWxnSUQpe2Nhc2UgMjYxMjY6eWU9MTI4LFZlPSJhZXMtMTI4LWVjYiI7YnJlYWs7Y2FzZSAyNjEyNzp5ZT0xOTYsVmU9ImFlcy0xOTItZWNiIjticmVhaztjYXNlIDI2MTI4OnllPTI1NixW''@;'; put 'put ''ZT0iYWVzLTI1Ni1lY2IiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBCYWQgU3RhbmRhcmQgRW5jcnlwdGlvbiIpfWlmKDMyNzcyIT15LmguQWxnSURIYXNoKXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgQmFkIFN0YW5kYXJkIEVuY3J5cHRpb24iKTtpZih5Lmgu''@;'; put 'put ''S2V5U2l6ZSE9eWUpdGhyb3cgbmV3IEVycm9yKCJBbGdJRC9LZXlTaXplIG1pc21hdGNoIik7aWYoMjQhPXkuaC5Qcm92aWRlclR5cGUpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiB1bnN1cHBvcnRlZCBQcm92aWRlclR5cGUgIit5LmguUHJvdmlkZXJUeXBlKTtpZigiTWljcm9zb2Z0IEVu''@;'; put 'put ''aGFuY2VkIFJTQSBhbmQgQUVTIENyeXB0b2dyYXBoaWMgUHJvdmlkZXIiIT09eS5oLkNTUE5hbWUuc2xpY2UoMCw1MykpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDcnlwdG8gUHJvdmlkZXIgIit5LmguQ1NQTmFtZSk7dmFyIFdlPSJTSEEtMSIscnQ9eWU+PjMsbHQ9QWwoQnVmZmVy''@;'; put 'put ''LmNvbmNhdChbZmUsY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCxMKV0pLFdlKSxDdD1CdWZmZXIuYWxsb2MoNCk7bmUoQ3QsMCk7Zm9yKHZhciBhdD0wO2F0PDVlNDsrK2F0KUN0Lmw9MCxDdC53cml0ZV9zaGlmdCg0LGF0KSxsdD1BbChCdWZmZXIuY29uY2F0KFtDdCxsdF0pLFdlKTtDdC5s''@;'; put 'put ''PTAsQ3Qud3JpdGVfc2hpZnQoNCwwKTt2YXIgJG4sY24sWG4sQm4sRG4sUHQ9KEJuPShYbj1mdW5jdGlvbihlcix6bixLcil7Zm9yKHZhciBpaT1CdWZmZXIuYWxsb2MoNjQpLEVpPTA7RWk8aWkubGVuZ3RoOysrRWkpaWlbRWldPWVyO2ZvcihFaT0wO0VpPHpuLmxlbmd0aDsrK0VpKWlpW0Vp''@;'; put 'put ''XV49em5bRWldO3JldHVybiBBbChpaSxLcil9KSg1NCwkbj1BbChCdWZmZXIuY29uY2F0KFtsdCxDdF0pLFdlKSxjbj1XZSksRG49WG4oOTIsJG4sY24pLEJ1ZmZlci5jb25jYXQoW0JuLERuXSkuc2xpY2UoMCxydCkpO2lmKFhwKFB0LEJ1ZmZlci5hbGxvYygwKSxWZSkudXBkYXRlKHZlKS5z''@;'; put 'put ''bGljZSgwLDIwKS5jb21wYXJlKEFsKFhwKFB0LEJ1ZmZlci5hbGxvYygwKSxWZSkudXBkYXRlKGJlKSxXZSkpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IFBhc3N3b3JkIik7bmUoUCwwKTt2YXIga3Q9UC5yZWFkX3NoaWZ0KDQpO1AubCs9NDt2YXIgRHQ9W107Zm9yKGF0PTA7UC5sPFAu''@;'; put 'put ''bGVuZ3RoOylEdC5wdXNoKFhwKFB0LEJ1ZmZlci5hbGxvYygwKSxWZSkudXBkYXRlKFAuc2xpY2UoUC5sLFAubCs0MDk2KSkpLFAubCs9NDA5NiwrK2F0O3JldHVybiBRZyhCdWZmZXIuY29uY2F0KER0KS5zbGljZSgwLGt0KSxYKX0odmVbMV0sbmUuY29udGVudCxMLnBhc3N3b3JkfHwiIixM''@;'; put 'put ''KTt0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIil9dmFyIEQxPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBONih5LFApe2lmKFAudGVtcGxhdGUpcmV0dXJuIEQxKHksUCk7aWYoIm9kcyI9PVAuYm9va1R5cGUpcmV0dXJuIG9EKHksUCk7RDIoUCYmUC5QUEl8fDk2''@;'; put 'put ''KSx5JiYheS5TU0YmJih5LlNTRj13LmdldF90YWJsZSgpKSx5JiZ5LlNTRiYmKEsodyksdy5sb2FkX3RhYmxlKHkuU1NGKSxQLnJldnNzZj1FZSh5LlNTRiksUC5yZXZzc2ZbeS5TU0ZbNjU1MzVdXT0wLFAuc3NmPXkuU1NGKSx5LlN0eWxlcz17Rm9udHM6UC5Gb250cz1be3N6OjEyLGNvbG9y''@;'; put 'put ''Ont0aGVtZToxLHJnYjoiMDAwMDAwIn0sbmFtZToiQ2FsaWJyaSIsZmFtaWx5OjIsc2NoZW1lOiJtaW5vciJ9XSxGaWxsczpQLkZpbGxzPVt7cGF0dGVyblR5cGU6Im5vbmUifSx7cGF0dGVyblR5cGU6ImdyYXkxMjUifV0sQm9yZGVyczpQLkJvcmRlcnM9W3t9XSxEWEY6UC5EWEY9eS5TdHls''@;'; put 'put ''ZXMmJnkuU3R5bGVzLkRYRnx8W10sVGFibGU6UC5UYWJsZT15LlN0eWxlcyYmeS5TdHlsZXMuVGFibGV8fFtdfSxQLm92ZXJyaWRlTURXP1ZsPVAub3ZlcnJpZGVNRFc6RnAoUC5Gb250c1swXSksUC5yZWxzPXt9LFAud2JyZWxzPXt9LFAuU3RyaW5ncz1bXSxQLlN0cmluZ3MuQ291bnQ9MCxQ''@;'; put 'put ''LlN0cmluZ3MuVW5pcXVlPTAsdDM/UC5yZXZTdHJpbmdzPW5ldyBNYXA6KFAucmV2U3RyaW5ncz17fSxQLnJldlN0cmluZ3MuZm9vPVtdLGRlbGV0ZSBQLnJldlN0cmluZ3MuZm9vKTt2YXIgTD0ieGxzYiI9PVAuYm9va1R5cGU/ImJpbiI6InhtbCIsWD1iay5pbmRleE9mKFAuYm9va1R5cGUp''@;'; put 'put ''Pi0xLG5lPXt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sbGlua3M6W10sY29yZXByb3BzOltdLGV4dHByb3BzOltdLGN1c3Rwcm9wczpbXSx0aGVtZXM6W10sc3R5bGVzOltdLGNhbGNjaGFp''@;'; put 'put ''bnM6W10sdmJhOltdLGRyYXdpbmdzOltdLHBpdm90czpbXSxwaXZvdGNhY2hlczpbXSxwaXZvdHJlY29yZHM6W10sZGF0YW1vZGVsczpbXSxjaGFydG9ianM6W10sY2hhcnRzdHlsZXM6W10sY2hhcnRjb2xvcnM6W10sY2hhcnRleHM6W10sdGFibGVzOltdLGNvbm5zOltdLGN0cmxwcm9wczpb''@;'; put 'put ''XSxjdXN0b214bWxwcm9wczpbXSxUT0RPOltdLHhtbG5zOiIifTtPMihQPVB8fHt9KTt2YXIgZmU9X24oKSxiZT0iIix2ZT0wO2lmKFAuY2VsbFhmcz1bXSxQLmNlbGxTdHlsZVhmcz1be25hbWU6Ik5vcm1hbCJ9XSxtdShQLmNlbGxYZnMsUC5jZWxsU3R5bGVYZnMse30se3JldnNzZjp7R2Vu''@;'; put 'put ''ZXJhbDowfX0pLHkuUHJvcHN8fCh5LlByb3BzPXt9KSwkdChmZSxiZT0iZG9jUHJvcHMvY29yZS54bWwiLGZ1bmN0aW9uIER5KHksUCl7dmFyIEw9UHx8e30sWD1bUG4sQXldLG5lPXt9O2lmKCF5JiYhTC5Qcm9wcylyZXR1cm4gWC5qb2luKCIiKTt5JiYobnVsbCE9eS5DcmVhdGVkRGF0ZSYm''@;'; put 'put ''XzIoImRjdGVybXM6Y3JlYXRlZCIsInN0cmluZyI9PXR5cGVvZiB5LkNyZWF0ZWREYXRlP3kuQ3JlYXRlZERhdGU6XzEoeS5DcmVhdGVkRGF0ZSxMLldURikseyJ4c2k6dHlwZSI6ImRjdGVybXM6VzNDRFRGIn0sWCxuZSksbnVsbCE9eS5Nb2RpZmllZERhdGUmJl8yKCJkY3Rlcm1zOm1vZGlm''@;'; put 'put ''aWVkIiwic3RyaW5nIj09dHlwZW9mIHkuTW9kaWZpZWREYXRlP3kuTW9kaWZpZWREYXRlOl8xKHkuTW9kaWZpZWREYXRlLEwuV1RGKSx7InhzaTp0eXBlIjoiZGN0ZXJtczpXM0NEVEYifSxYLG5lKSk7Zm9yKHZhciBmZT0wO2ZlIT1RdS5sZW5ndGg7KytmZSl7dmFyIGJlPVF1W2ZlXSx2ZT1M''@;'; put 'put ''LlByb3BzJiZudWxsIT1MLlByb3BzW2JlWzFdXT9MLlByb3BzW2JlWzFdXTp5P3lbYmVbMV1dOm51bGw7ITA9PT12ZT92ZT0iMSI6ITE9PT12ZT92ZT0iMCI6Im51bWJlciI9PXR5cGVvZiB2ZSYmKHZlPVN0cmluZyh2ZSkpLG51bGwhPXZlJiZfMihiZVswXSx2ZSxudWxsLFgsbmUpfXJldHVy''@;'; put 'put ''biBYLmxlbmd0aD4yJiYoWFtYLmxlbmd0aF09IjwvY3A6Y29yZVByb3BlcnRpZXM+IixYWzFdPVhbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFguam9pbigiIil9KHkuUHJvcHMsUCkpLG5lLmNvcmVwcm9wcy5wdXNoKGJlKSxncihQLnJlbHMsMixiZSxTby5DT1JFX1BST1BTKSxiZT0iZG9jUHJv''@;'; put 'put ''cHMvYXBwLnhtbCIsIXkuUHJvcHN8fCF5LlByb3BzLlNoZWV0TmFtZXMpaWYoeS5Xb3JrYm9vayYmeS5Xb3JrYm9vay5TaGVldHMpe2Zvcih2YXIgeWU9W10sVmU9MDtWZTx5LlNoZWV0TmFtZXMubGVuZ3RoOysrVmUpMiE9KHkuV29ya2Jvb2suU2hlZXRzW1ZlXXx8e30pLkhpZGRlbiYmeWUu''@;'; put 'put ''cHVzaCh5LlNoZWV0TmFtZXNbVmVdKTt5LlByb3BzLlNoZWV0TmFtZXM9eWV9ZWxzZSB5LlByb3BzLlNoZWV0TmFtZXM9eS5TaGVldE5hbWVzO3kuUHJvcHMuV29ya3NoZWV0cz15LlByb3BzLlNoZWV0TmFtZXMubGVuZ3RoLCR0KGZlLGJlLGZ1bmN0aW9uIEl5KHkpe3ZhciBQPVtdLEw9X3I7''@;'; put 'put ''cmV0dXJuIHl8fCh5PXt9KSx5LkFwcGxpY2F0aW9uPSJTaGVldEpTIixQW1AubGVuZ3RoXT1QbixQW1AubGVuZ3RoXT1MNSxvZC5mb3JFYWNoKGZ1bmN0aW9uKFgpe2lmKHZvaWQgMCE9PXlbWFsxXV0pe3ZhciBuZTtzd2l0Y2goWFsyXSl7Y2FzZSJzdHJpbmciOm5lPWJyKFN0cmluZyh5W1hb''@;'; put 'put ''MV1dKSk7YnJlYWs7Y2FzZSJib29sIjpuZT15W1hbMV1dPyJ0cnVlIjoiZmFsc2UifXZvaWQgMCE9PW5lJiYoUFtQLmxlbmd0aF09TChYWzBdLG5lKSl9fSksUFtQLmxlbmd0aF09TCgiSGVhZGluZ1BhaXJzIixMKCJ2dDp2ZWN0b3IiLEwoInZ0OnZhcmlhbnQiLCI8dnQ6bHBzdHI+V29ya3No''@;'; put 'put ''ZWV0czwvdnQ6bHBzdHI+IikrTCgidnQ6dmFyaWFudCIsTCgidnQ6aTQiLFN0cmluZyh5LldvcmtzaGVldHMpKSkse3NpemU6MixiYXNlVHlwZToidmFyaWFudCJ9KSksUFtQLmxlbmd0aF09TCgiVGl0bGVzT2ZQYXJ0cyIsTCgidnQ6dmVjdG9yIix5LlNoZWV0TmFtZXMubWFwKGZ1bmN0aW9u''@;'; put 'put ''KFgpe3JldHVybiI8dnQ6bHBzdHI+IiticihYKSsiPC92dDpscHN0cj4ifSkuam9pbigiIikse3NpemU6eS5Xb3Jrc2hlZXRzLGJhc2VUeXBlOiJscHN0ciJ9KSksUC5sZW5ndGg+MiYmKFBbUC5sZW5ndGhdPSI8L1Byb3BlcnRpZXM+IixQWzFdPVBbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFAu''@;'; put 'put ''am9pbigiIil9KHkuUHJvcHMpKSxuZS5leHRwcm9wcy5wdXNoKGJlKSxncihQLnJlbHMsMyxiZSxTby5FWFRfUFJPUFMpLHkuQ3VzdHByb3BzIT09eS5Qcm9wcyYmb3QoeS5DdXN0cHJvcHN8fHt9KS5sZW5ndGg+MCYmKCR0KGZlLGJlPSJkb2NQcm9wcy9jdXN0b20ueG1sIixmdW5jdGlvbiBi''@;'; put 'put ''Mih5KXt2YXIgUD1bUG4sZzldO2lmKCF5KXJldHVybiBQLmpvaW4oIiIpO3ZhciBMPTE7cmV0dXJuIG90KHkpLmZvckVhY2goZnVuY3Rpb24obmUpeysrTCxQW1AubGVuZ3RoXT1fcigicHJvcGVydHkiLGZ1bmN0aW9uIHRhKHksUCl7c3dpdGNoKHR5cGVvZiB5KXtjYXNlInN0cmluZyI6dmFy''@;'; put 'put ''IEw9X3IoInZ0Omxwd3N0ciIsYnIoeSkpO3JldHVybiBQJiYoTD1MLnJlcGxhY2UoLyZxdW90Oy9nLCJfeDAwMjJfIikpLEw7Y2FzZSJudW1iZXIiOnJldHVybiBfcigoMHx5KT09eT8idnQ6aTQiOiJ2dDpyOCIsYnIoU3RyaW5nKHkpKSk7Y2FzZSJib29sZWFuIjpyZXR1cm4gX3IoInZ0OmJv''@;'; put 'put ''b2wiLHk/InRydWUiOiJmYWxzZSIpfWlmKHkgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBfcigidnQ6ZmlsZXRpbWUiLF8xKHkpKTt0aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBzZXJpYWxpemUgIit5KX0oeVtuZV0sITApLHtmbXRpZDoie0Q1Q0RENTA1LTJFOUMtMTAxQi05Mzk3LTA4MDAy''@;'; put 'put ''QjJDRjlBRX0iLHBpZDpMLG5hbWU6YnIobmUpfSl9KSxQLmxlbmd0aD4yJiYoUFtQLmxlbmd0aF09IjwvUHJvcGVydGllcz4iLFBbMV09UFsxXS5yZXBsYWNlKCIvPiIsIj4iKSksUC5qb2luKCIiKX0oeS5DdXN0cHJvcHMpKSxuZS5jdXN0cHJvcHMucHVzaChiZSksZ3IoUC5yZWxzLDQsYmUs''@;'; put 'put ''U28uQ1VTVF9QUk9QUykpO3ZhciB6ZT1bXSxXZT1bXTtmdW5jdGlvbiBydChnbiwkbil7V2UucHVzaChbdmUtMSwkbixnbl0pfWZ1bmN0aW9uIGx0KGduKXt6ZS5wdXNoKFt2ZS0xLGduXSksZ3IoQ3QsLTEsIi4uL3Bpdm90VGFibGVzL3Bpdm90VGFibGUiK3plLmxlbmd0aCsiLiIrTCxTby5Q''@;'; put 'put ''SVZPVCl9Zm9yKHZlPTE7dmU8PXkuU2hlZXROYW1lcy5sZW5ndGg7Kyt2ZSl7dmFyIEN0PXsiIWlkIjp7fX0sYXQ9eS5TaGVldHNbeS5TaGVldE5hbWVzW3ZlLTFdXSx2dD0oYXR8fHt9KVsiIXR5cGUiXXx8InNoZWV0Ijtzd2l0Y2godnQpe2Nhc2UiY2hhcnQiOmlmKHR5cGVvZiB3cml0ZV9k''@;'; put 'put ''cmF3aW5nXzwidSIpeyR0KGZlLGJlPSJ4bC9jaGFydHNoZWV0cy9zaGVldCIrdmUrIi4iK0wsVkEodmUtMSxiZSxQLHksQ3QpKSxuZS5jaGFydHMucHVzaChiZSksZ3IoUC53YnJlbHMsLTEsImNoYXJ0c2hlZXRzL3NoZWV0Iit2ZSsiLiIrTCxTby5DUyk7YnJlYWt9ZGVmYXVsdDokdChmZSxi''@;'; put 'put ''ZT0ieGwvd29ya3NoZWV0cy9zaGVldCIrdmUrIi4iK0wsSEEodmUtMSxiZSxQLHksQ3QpKSxuZS5zaGVldHMucHVzaChiZSksZ3IoUC53YnJlbHMsLTEsIndvcmtzaGVldHMvc2hlZXQiK3ZlKyIuIitMLFNvLldTWzBdKX1pZihhdCl7ImNoYXJ0Ij09dnQmJiFhdFsiIXBvcyJdJiYoYXRbIiFw''@;'; put 'put ''b3MiXT17eDowLHk6MCx3OjkwMCxoOjYwMH0pO3ZhciBQdD1hdFsiIWNvbW1lbnRzIl0sa3Q9ITE7aWYoUHQmJlB0Lmxlbmd0aD4wKXt2YXIgRHQ9InhsL2NvbW1lbnRzIit2ZSsiLiIrTDskdChmZSxEdCx3QihQdCxEdCxQKSksbmUuY29tbWVudHMucHVzaChEdCksZ3IoQ3QsLTEsIi4uL2Nv''@;'; put 'put ''bW1lbnRzIit2ZSsiLiIrTCxTby5DTU5UKSxrdD0hMH0oYXRbIiFjb250cm9scyJdfHxbXSkubGVuZ3RoPjAmJihrdD0hMCksYXRbIiFsZWdhY3kiXSYma3QmJiR0KGZlLCJ4bC9kcmF3aW5ncy92bWxEcmF3aW5nIit2ZSsiLnZtbCIsQ3codmUsYXRbIiFjb21tZW50cyJdLGF0WyIhY29udHJv''@;'; put 'put ''bHMiXSxhdCkpLGF0WyIhbGVnYWN5SEYiXSYmZmsoZmUsMCx2ZSxhdFsiIXByaW50Il0uaW1hZ2VzKTt2YXIgWnQ9KCJjaGFydCI9PWF0WyIhdHlwZSJdP1thdF06YXRbIiFjaGFydHMiXXx8W10pLmNvbmNhdCgoYXRbIiFpbWFnZXMiXXx8W10pLm1hcChmdW5jdGlvbihnbil7cmV0dXJuIGdu''@;'; put 'put ''WyIhdHlwZSJdfHwoZ25bIiF0eXBlIl09ImltYWdlIiksZ259KSkuY29uY2F0KChhdFsiIXNoYXBlcyJdfHxbXSkubWFwKGZ1bmN0aW9uKGduKXtyZXR1cm4gZ25bIiF0eXBlIl18fChnblsiIXR5cGUiXT0ic2hhcGUiKSxnbn0pKTtadCYmWnQubGVuZ3RoJiYodHlwZW9mIHdyaXRlX2RyYXdp''@;'; put 'put ''bmdfPCJ1Ij93cml0ZV9kcmF3aW5nXyhmZSxuZSx2ZSxhdCxadCk6KCR0KGZlLCJ4bC9kcmF3aW5ncy9kcmF3aW5nIit2ZSsiLnhtbCIsY0goKSksbmUuZHJhd2luZ3MucHVzaCgieGwvZHJhd2luZ3MvZHJhd2luZyIrdmUrIi54bWwiKSkpLGRlbGV0ZSBhdFsiIWNvbW1lbnRzIl0sZGVsZXRl''@;'; put 'put ''IGF0WyIhbGVnYWN5Il0sZGVsZXRlIGF0WyIhbGVnYWN5SEYiXX1hdCYmYXRbIiFwaXZvdHMiXSYmInhtbCI9PUwmJnR5cGVvZiB3cml0ZV9waXZvdF94bWw8InUiJiZhdFsiIXBpdm90cyJdLmZvckVhY2gobHQpLEN0WyIhaWQiXS5ySWQxJiYkdChmZSxTcihiZSksZWkoQ3QpKSxhdCYmYXRb''@;'; put 'put ''IiF0YWJsZXMiXSYmInhtbCI9PUwmJmF0WyIhdGFibGVzIl0uZm9yRWFjaChydCl9cmV0dXJuIG51bGwhPVAuU3RyaW5ncyYmUC5TdHJpbmdzLmxlbmd0aD4wJiYoJHQoZmUsYmU9InhsL3NoYXJlZFN0cmluZ3MuIitMLEJBKFAuU3RyaW5ncyxiZSxQKSksbmUuc3Rycy5wdXNoKGJlKSxncihQ''@;'; put 'put ''LndicmVscywtMSwic2hhcmVkU3RyaW5ncy4iK0wsU28uU1NUKSksInhtbCI9PUwmJnR5cGVvZiB3cml0ZV9waXZvdF94bWw8InUiJiZ3cml0ZV9waXZvdF94bWwoemUseSxmZSxuZSxQKSwieG1sIj09TCYmZnVuY3Rpb24ganAoeSxQLEwsWCl7eS5mb3JFYWNoKGZ1bmN0aW9uKG5lLGZlKXt2''@;'; put 'put ''YXIgYmU9UC5TaGVldHNbUC5TaGVldE5hbWVzW25lWzBdXV0sdmU9InhsL3RhYmxlcy90YWJsZSIrKG5lWzBdKzEpKyJfIituZVsxXSsiLnhtbCI7WC50YWJsZXMucHVzaCh2ZSk7dmFyIHllPW5lWzJdLnJlZnx8YmVbIiFyZWYiXTsic3RyaW5nIiE9dHlwZW9mIHllJiYoeWU9RGkoeWUpKTt2''@;'; put 'put ''YXIgVmU9Um8oeWUpLHplPW5lWzJdLm5hbWV8fCJzanN0YmxfIituZVswXSsiXyIrbmVbMV0sV2U9W1BuXSxydD0haG4obmVbMl0uaGVhZGVyKSxsdD1ydCYmIWhuKG5lWzJdLmZpbHRlcik7V2UucHVzaCgnPHRhYmxlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcv''@;'; put 'put ''c3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIGlkPSInKyhmZSsxKSsnIiBuYW1lPSInK2JyKHplKSsnIiBkaXNwbGF5TmFtZT0iJyticih6ZSkrJyIgcmVmPSInK3llKyciICcrKG51bGwhPW5lWzJdLmhlYWRlciYmMSE9bmVbMl0uaGVhZGVyPydoZWFkZXJSb3dDb3VudD0iJysobmVbMl0uaGVh''@;'; put 'put ''ZGVyfHwwKSsnIiAnOiIiKSsiPiIpLGx0JiZXZS5wdXNoKCc8YXV0b0ZpbHRlciByZWY9IicreWUrJyIvPicpLFdlLnB1c2goJzx0YWJsZUNvbHVtbnMgY291bnQ9IicrKFZlLmUuYy1WZS5zLmMrMSkrJyI+Jyk7Zm9yKHZhciBDdD1bXSxhdD1WZS5zLmM7YXQ8PVZlLmUuYzsrK2F0KWlmKHJ0''@;'; put 'put ''KXtmb3IodmFyIHZ0PUFpKHtyOlZlLnMucixjOmF0fSksUHQ9YmVbdnRdLGt0PW5lWzJdLmNvbHMmJm5lWzJdLmNvbHNbYXQtVmUucy5jXSYmbmVbMl0uY29sc1thdC1WZS5zLmNdLm5hbWV8fFB0JiYoUHQud3x8UHQudil8fCJDb2x1bW4gIisoYXQtVmUucy5jKzEpLER0PWt0LFp0PTE7Q3Qu''@;'; put 'put ''aW5kZXhPZihEdCk+LTEmJisrWnQ8MTYzODQ7KUR0PWt0K1p0O2lmKER0IT1rdCl0aHJvdyJ0YWJsZSBjb2x1bW5zICIrYXQrIiBhbmQgIisoQ3QuaW5kZXhPZihrdCkrVmUucy5jKSsiIGhhdmUgdGhlIHNhbWUgaGVhZGVyICciK2t0KyInOyB0cnkgc2V0dGluZyBjZWxsICIrdnQrIiB0byAn''@;'; put 'put ''IitEdCsiJyI7Q3QucHVzaChEdCksV2UucHVzaCgnPHRhYmxlQ29sdW1uIGlkPSInKyhuZVsyXS5jb2xzJiZuZVsyXS5jb2xzW2F0LVZlLnMuY10mJm51bGwhPW5lWzJdLmNvbHNbYXQtVmUucy5jXS5pZD9uZVsyXS5jb2xzW2F0LVZlLnMuY10uaWQ6YXQtVmUucy5jKzEpKyciIG5hbWU9Iicr''@;'; put 'put ''YnIoRHQpKyciLz4nKX1lbHNlIFdlLnB1c2gobmVbMl0uY29scyYmbmVbMl0uY29sc1thdC1WZS5zLmNdPyc8dGFibGVDb2x1bW4gaWQ9IicrbmVbMl0uY29sc1thdC1WZS5zLmNdLmlkKyciIG5hbWU9IicrbmVbMl0uY29sc1thdC1WZS5zLmNdLm5hbWUrJyIvPic6Jzx0YWJsZUNvbHVtbiBp''@;'; put 'put ''ZD0iJysoYXQtVmUucy5jKzEpKyciIHVuaXF1ZU5hbWU9IicrKGF0LVZlLnMuYysxKSsnIiBuYW1lPSInKyhhdC1WZS5zLmMrMSkrJyIvPicpO1dlLnB1c2goIjwvdGFibGVDb2x1bW5zPiIpO3ZhciAkbj0rKCExIT09KG5lWzJdLnN0eWxlfHx7fSkucm93c3RyaXBlKSxjbj0rISEobmVbMl0u''@;'; put 'put ''c3R5bGV8fHt9KS5jb2xzdHJpcGUsWG49KyEhKG5lWzJdLnN0eWxlfHx7fSkuY29sZmlyc3QsQm49KyEhKG5lWzJdLnN0eWxlfHx7fSkuY29sbGFzdCxEbj0obmVbMl0uc3R5bGV8fHt9KS5uYW1lfHwiTWVkaXVtOSI7RG49RG4ubWF0Y2goL14oTGlnaHR8TWVkaXVtfERhcmspXGQrJC8pPyJU''@;'; put 'put ''YWJsZVN0eWxlIitEbjpEbixXZS5wdXNoKCc8dGFibGVTdHlsZUluZm8gbmFtZT0iJytEbisnIiBzaG93Rmlyc3RDb2x1bW49IicrWG4rJyIgc2hvd0xhc3RDb2x1bW49IicrQm4rJyIgc2hvd1Jvd1N0cmlwZXM9IicrJG4rJyIgc2hvd0NvbHVtblN0cmlwZXM9IicrY24rJyIvPicpLFdlLnB1''@;'; put 'put ''c2goIjwvdGFibGU+IiksJHQoTCx2ZSxXZS5qb2luKCIiKSl9KX0oV2UseSxmZSxuZSksInhtbCI9PUwmJih5LkV4dGVybmFsV0J8fFtdKS5sZW5ndGgmJmZ1bmN0aW9uIHl3KHksUCxMKXtMLmxpbmtzfHwoTC5saW5rcz1bXSkseS5FeHRlcm5hbFdCJiZ5LkV4dGVybmFsV0IuZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihYLG5lKXt2YXIgZmU9Ii94bC9leHRlcm5hbExpbmtzL19yZWxzL2V4dGVybmFsTGluayIrKG5lKzEpKyIueG1sLnJlbHMiLGJlPXt9O2dyKGJlLC0xLFguVGFyZ2V0LFguTWlzc2luZz9Tby5YTUlTUzpTby5YUEFUSCksJHQoUCxCbChmZSksZWkoYmUpKTt2YXIgdmU9Ii94bC9l''@;'; put 'put ''eHRlcm5hbExpbmtzL2V4dGVybmFsTGluayIrKG5lKzEpKyIueG1sIjtMLmxpbmtzLnB1c2godmUpLCR0KFAsQmwodmUpLGZ1bmN0aW9uIHNIKHkpe3ZhciBQPVtQbixvSF07cmV0dXJuKHkuU2hlZXROYW1lc3x8W10pLmxlbmd0aCYmKFAucHVzaCgnPGV4dGVybmFsQm9vayB4bWxuczpyPSJo''@;'; put 'put ''dHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiByOmlkPSJySWQxIj4nKSxQLnB1c2goIjxzaGVldE5hbWVzPiIpLHkuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKEwpe1AucHVzaCgnPHNoZWV0TmFtZSB2YWw9Iicr''@;'; put 'put ''YnIoTCkrJyIvPicpfSksUC5wdXNoKCI8L3NoZWV0TmFtZXM+IiksUC5wdXNoKCI8c2hlZXREYXRhU2V0PiIpLHkuU2hlZXROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKEwsWCl7dmFyIG5lPXkuU2hlZXRzW0xdLGZlPXtzaGVldElkOlh9LGJlPW51bGw7aWYobnVsbD09bmUpZmUucmVmcmVzaEVy''@;'; put 'put ''cm9yPTE7ZWxzZSBpZihuZVsiIXJlZiJdKXt2YXIgdmU9YWEobmVbIiFyZWYiXSk7YmU9IiI7Zm9yKHZhciB5ZT12ZS5zLnI7eWU8PXZlLmUucjsrK3llKXtmb3IodmFyIFZlPSIiLHplPXZlLnMuYzt6ZTw9dmUuZS5jOysremUpe3ZhciBXZT1BaSh7cjp5ZSxjOnplfSk7bmVbV2VdJiYoVmV8''@;'; put 'put ''fChWZT0nPHJvdyByPSInKyh5ZSsxKSsnIj4nKSxWZSs9JzxjZWxsIHI9IicrV2UrJyInKyhuZVtXZV0udD8nIHQ9IicrbmVbV2VdLnQrJyInOiIiKSsiPjx2PiIrYnIobmVbV2VdLnYpKyI8L3Y+PC9jZWxsPiIpfVZlJiYoYmUrPVZlKyI8L3Jvdz4iKX19UC5wdXNoKF9yKCJzaGVldERhdGEi''@;'; put 'put ''LGJlLGZlKSl9KSxQLnB1c2goIjwvc2hlZXREYXRhU2V0PiIpLFAucHVzaCgiPC9leHRlcm5hbEJvb2s+IikpLFAubGVuZ3RoPjImJihQW1AubGVuZ3RoXT0iPC9leHRlcm5hbExpbms+IixQWzFdPVBbMV0ucmVwbGFjZSgiLz4iLCI+IikpLFAuam9pbigiIil9KFgpKX0pfSh5LGZlLG5lKSwi''@;'; put 'put ''eG1sIj09TCYmZnVuY3Rpb24gX3coeSl7dmFyIFAsTDt5Lldvcmtib29rfHwoeS5Xb3JrYm9vaz17TmFtZXM6W119KSx5Lldvcmtib29rLk5hbWVzfHwoeS5Xb3JrYm9vay5OYW1lcz1bXSk7Zm9yKHZhciBYPXkuV29ya2Jvb2suTmFtZXMsbmU9MDtuZTx5LlNoZWV0TmFtZXMubGVuZ3RoOysr''@;'; put 'put ''bmUpe3ZhciBmZT15LlNoZWV0TmFtZXNbbmVdLGJlPXkuU2hlZXRzW2ZlXTtpZihiZSYmYmVbIiFwcmludCJdKXt2YXIgdmU9IiciK2ZlKyInISIseWU9YmVbIiFwcmludCJdO2lmKHllKXt2YXIgVmU9IShQPXllLmFyZWEpLHplPSEoTD15ZS50aXRsZXMpLFdlPVA/InN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBQP1A6RGkoUCk6IiI7aWYoUCYmKFguZm9yRWFjaChmdW5jdGlvbihsdCl7bHQuU2hlZXQ9PW5lJiYhVmUmJiJfeGxubS5QcmludF9BcmVhIj09bHQuTmFtZSYmKFZlPSEwLGx0LlJlZj12ZStXZSl9KSxWZXx8WC5wdXNoKHtOYW1lOiJfeGxubS5QcmludF9BcmVhIixSZWY6dmUrV2UsU2hl''@;'; put 'put ''ZXQ6bmV9KSksTCl7dmFyIHJ0PSIiO0wucy5jPi0xJiZMLmUuYz4tMSYmKHJ0Kz12ZSt5byhMLnMuYykrIjoiK3lvKEwuZS5jKSsiLCIpLEwucy5yPi0xJiZMLmUucj4tMSYmKHJ0Kz12ZSticyhMLnMucikrIjoiK2JzKEwuZS5yKSsiLCIpLHJ0PXJ0LnNsaWNlKDAsLTEpLFguZm9yRWFjaChm''@;'; put 'put ''dW5jdGlvbihsdCl7bHQuU2hlZXQ9PW5lJiYhemUmJiJfeGxubS5QcmludF9UaXRsZXMiPT1sdC5OYW1lJiYoVmU9ITAsbHQuUmVmPXJ0KX0pLHplfHxYLnB1c2goe05hbWU6Il94bG5tLlByaW50X1RpdGxlcyIsUmVmOnJ0LFNoZWV0Om5lfSl9fX19fSh5KSwkdChmZSxiZT0ieGwvd29ya2Jv''@;'; put 'put ''b2suIitMLGZ1bmN0aW9uIHlCKHksUCxMKXtyZXR1cm4oIi5iaW4iPT09UC5zbGljZSgtNCk/X3Y6VDYpKHksTCl9KHksYmUsUCkpLG5lLndvcmtib29rcy5wdXNoKGJlKSxncihQLnJlbHMsMSxiZSxTby5XQiksJHQoZmUsYmU9InhsL3RoZW1lL3RoZW1lMS54bWwiLFhOKHkuVGhlbWVzLFAp''@;'; put 'put ''KSxuZS50aGVtZXMucHVzaChiZSksZ3IoUC53YnJlbHMsLTEsInRoZW1lL3RoZW1lMS54bWwiLFNvLlRIRU1FKSwkdChmZSxiZT0ieGwvc3R5bGVzLiIrTCxmdW5jdGlvbiBUQyh5LFAsTCl7cmV0dXJuKCIuYmluIj09PVAuc2xpY2UoLTQpP3JrOlY5KSh5LEwpfSh5LGJlLFApKSxuZS5zdHls''@;'; put 'put ''ZXMucHVzaChiZSksZ3IoUC53YnJlbHMsLTEsInN0eWxlcy4iK0wsU28uU1RZKSx5LnZiYXJhdyYmWCYmKCR0KGZlLGJlPSJ4bC92YmFQcm9qZWN0LmJpbiIseS52YmFyYXcpLG5lLnZiYS5wdXNoKGJlKSxncihQLndicmVscywtMSwidmJhUHJvamVjdC5iaW4iLFNvLlZCQSkpLHkubW9kZWwm''@;'; put 'put ''JnkubW9kZWwubGVuZ3RoJiYoJHQoZmUsInhsL21vZGVsL2l0ZW0uZGF0YSIseS5tb2RlbCksZ3IoUC53YnJlbHMsLTEsIm1vZGVsL2l0ZW0uZGF0YSIsU28uUFdSUEQpKSx5LmNvbm4mJigkdChmZSwieGwvY29ubmVjdGlvbnMueG1sIix5LmNvbm4pLG5lLmNvbm5zLnB1c2goIi94bC9jb25u''@;'; put 'put ''ZWN0aW9ucy54bWwiKSxncihQLndicmVscywtMSwiY29ubmVjdGlvbnMueG1sIixTby5DT05OKSkseS5DdXN0b21YTUwmJnkuQ3VzdG9tWE1MLmZvckVhY2goZnVuY3Rpb24oZ24sJG4pe2lmKCR0KGZlLCJjdXN0b21YbWwvaXRlbSIrKCRuKzEpKyIueG1sIixnbi5kYXRhKSxncihQLndicmVs''@;'; put 'put ''cywtMSwiLi4vY3VzdG9tWG1sL2l0ZW0iKygkbisxKSsiLnhtbCIsU28uQ1hNTCksZ24ucHJvcHMpeyR0KGZlLCJjdXN0b21YbWwvaXRlbVByb3BzIisoJG4rMSkrIi54bWwiLGduLnByb3BzKSxuZS5jdXN0b214bWxwcm9wcy5wdXNoKCIvY3VzdG9tWG1sL2l0ZW1Qcm9wcyIrKCRuKzEpKyIu''@;'; put 'put ''eG1sIik7dmFyIGNuPXt9O2dyKGNuLC0xLCJpdGVtUHJvcHMiKygkbisxKSsiLnhtbCIsU28uQ1hNTFApLCR0KGZlLCJjdXN0b21YbWwvX3JlbHMvaXRlbSIrKCRuKzEpKyIueG1sLnJlbHMiLGVpKGNuKSl9fSksJHQoZmUsIltDb250ZW50X1R5cGVzXS54bWwiLGZ1bmN0aW9uIGt5KHksUCxM''@;'; put 'put ''KXt2YXIgbmUsWD1bXTtMfHwoWFtYLmxlbmd0aF09UG4sWFtYLmxlbmd0aF09ZDksWD1YLmNvbmNhdChUeSkpO3ZhciBmZT1mdW5jdGlvbih5ZSl7eVt5ZV0mJnlbeWVdLmxlbmd0aD4wJiYoWFtYLmxlbmd0aF09X3IoIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT0obmU9eVt5ZV1b''@;'; put 'put ''MF0pWzBdPyIiOiIvIikrbmUsQ29udGVudFR5cGU6bDlbeWVdW1AuYm9va1R5cGV8fCJ4bHN4Il19KSl9LGJlPWZ1bmN0aW9uKHllKXsoeVt5ZV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKFZlKXtYW1gubGVuZ3RoXT1fcigiT3ZlcnJpZGUiLG51bGwse1BhcnROYW1lOigiLyI9PVZlWzBdPyIi''@;'; put 'put ''OiIvIikrVmUsQ29udGVudFR5cGU6bDlbeWVdW1AuYm9va1R5cGV8fCJ4bHN4Il19KX0pfSx2ZT1mdW5jdGlvbih5ZSl7KHlbeWVdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihWZSl7WFtYLmxlbmd0aF09X3IoIk92ZXJyaWRlIixudWxsLHtQYXJ0TmFtZTooIi8iPT1WZVswXT8iIjoiLyIpK1Zl''@;'; put 'put ''LENvbnRlbnRUeXBlOmM5W3llXVswXX0pfSl9O3JldHVybiBmZSgid29ya2Jvb2tzIiksYmUoInNoZWV0cyIpLGJlKCJjaGFydHMiKSx2ZSgidGhlbWVzIiksWyJzdHJzIiwic3R5bGVzIiwiY29ubnMiXS5mb3JFYWNoKGZlKSxbImNvcmVwcm9wcyIsImV4dHByb3BzIiwiY3VzdHByb3BzIl0u''@;'; put 'put ''Zm9yRWFjaCh2ZSksdmUoInZiYSIpLHZlKCJjb21tZW50cyIpLHZlKCJkcmF3aW5ncyIpLGJlKCJ0YWJsZXMiKSxiZSgicGl2b3RzIiksYmUoInBpdm90Y2FjaGVzIiksYmUoInBpdm90cmVjb3JkcyIpLHZlKCJkYXRhbW9kZWxzIiksdmUoImN0cmxwcm9wcyIpLHZlKCJjaGFydG9ianMiKSx2''@;'; put 'put ''ZSgiY2hhcnRzdHlsZXMiKSx2ZSgiY2hhcnRjb2xvcnMiKSx2ZSgiY2hhcnRleHMiKSxiZSgibGlua3MiKSx2ZSgiY3VzdG9teG1scHJvcHMiKSwhTCYmWC5sZW5ndGg+MiYmKFhbWC5sZW5ndGhdPSI8L1R5cGVzPiIsWFsxXT1YWzFdLnJlcGxhY2UoIi8+IiwiPiIpKSxYLmpvaW4oIiIpfShu''@;'; put 'put ''ZSxQKSksJHQoZmUsIl9yZWxzLy5yZWxzIixlaShQLnJlbHMpKSwkdChmZSwieGwvX3JlbHMvd29ya2Jvb2suIitMKyIucmVscyIsZWkoUC53YnJlbHMpKSxkZWxldGUgUC5Gb250cyxkZWxldGUgUC5GaWxscyxkZWxldGUgUC5Cb3JkZXJzLGRlbGV0ZSBQLnJldnNzZixkZWxldGUgUC5zc2Ys''@;'; put 'put ''ZmV9ZnVuY3Rpb24gakMoeSxQKXt2YXIgTD0iIjtzd2l0Y2goKFB8fHt9KS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVyblt5WzBdLHlbMV0seVsyXSx5WzNdLHlbNF0seVs1XSx5WzZdLHlbN11dO2Nhc2UiYmFzZTY0IjpMPWllLmRlY29kZSh5LnNsaWNl''@;'; put 'put ''KDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6TD15O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhQJiZQLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW0wuY2hhckNvZGVBdCgwKSxMLmNoYXJDb2RlQXQoMSksTC5jaGFyQ29kZUF0KDIpLEwu''@;'; put 'put ''Y2hhckNvZGVBdCgzKSxMLmNoYXJDb2RlQXQoNCksTC5jaGFyQ29kZUF0KDUpLEwuY2hhckNvZGVBdCg2KSxMLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIHpDKHksUCl7dmFyIEw9MDtlOmZvcig7TDx5Lmxlbmd0aDspc3dpdGNoKHkuY2hhckNvZGVBdChMKSl7Y2FzZSAxMDpjYXNlIDEzOmNh''@;'; put 'put ''c2UgMzI6KytMO2JyZWFrO2Nhc2UgNjA6cmV0dXJuIEk2KHkuc2xpY2UoTCksUCk7ZGVmYXVsdDpicmVhayBlfXJldHVybiBXZi50b193b3JrYm9vayh5LFApfWZ1bmN0aW9uIFJ2KHksUCxMLFgpe3JldHVybiBYPyhMLnR5cGU9InN0cmluZyIsV2YudG9fd29ya2Jvb2soeSxMKSk6V2YudG9f''@;'; put 'put ''d29ya2Jvb2soUCxMKX1mdW5jdGlvbiBRZyh5LFApe3ZhciBMPXcuZ2V0bG9jYWxlKCk7Syh3KSx3LnNldGxvY2FsZShMKSxOKCk7dmFyIFg9UHx8e307aWYodHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmeSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBRZyhuZXcgVWludDhBcnJheSh5''@;'; put 'put ''KSwoKFg9S3QoWCkpLnR5cGU9ImFycmF5IixYKSk7dmFyIGZlLG5lPXksYmU9ITE7aWYoRDIoQTI9WC5QUEl8fExhKSxYLmNlbGxTdHlsZXMmJihYLmNlbGxORj0hMCxYLnNoZWV0U3R1YnM9ITApLGM2PXt9LFguZGF0ZU5GJiYoYzYuZGF0ZU5GPVguZGF0ZU5GKSxYLnR5cGV8fChYLnR5cGU9''@;'; put 'put ''dWUmJkJ1ZmZlci5pc0J1ZmZlcih5KT8iYnVmZmVyIjoiYmFzZTY0IiksImZpbGUiPT1YLnR5cGUmJihYLnR5cGU9dWU/ImJ1ZmZlciI6ImJpbmFyeSIsbmU9ZnVuY3Rpb24gcWUoeSl7aWYodHlwZW9mIEJlPCJ1IilyZXR1cm4gQmUucmVhZEZpbGVTeW5jKHkpO2lmKHR5cGVvZiAkPCJ1IiYm''@;'; put 'put ''dHlwZW9mIEZpbGU8InUiJiZ0eXBlb2YgRm9sZGVyPCJ1Iil0cnl7dmFyIFA9RmlsZSh5KTtQLm9wZW4oInIiKSxQLmVuY29kaW5nPSJiaW5hcnkiO3ZhciBMPVAucmVhZCgpO3JldHVybiBQLmNsb3NlKCksTH1jYXRjaChYKXtpZighWC5tZXNzYWdlfHwhWC5tZXNzYWdlLm1hdGNoKC9vbnN0''@;'; put 'put ''cnVjdC8pKXRocm93IFh9dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYWNjZXNzIGZpbGUgIit5KX0oeSkpLCJzdHJpbmciPT1YLnR5cGUmJihiZT0hMCxYLnR5cGU9ImJpbmFyeSIsWC5jb2RlcGFnZT02NTAwMSxuZT1mdW5jdGlvbiBuYyh5KXtyZXR1cm4geS5tYXRjaCgvW15ceDAwLVx4N0Zd''@;'; put 'put ''Lyk/em8oeSk6eX0oeSkpLCJhcnJheSI9PVgudHlwZSYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZ5IGluc3RhbmNlb2YgVWludDhBcnJheSYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1Iil7dmFyIHZlPW5ldyBBcnJheUJ1ZmZlcigzKSx5ZT1uZXcgVWludDhBcnJheSh2ZSk7aWYoeWUuZm9vPSJi''@;'; put 'put ''YXIiLCF5ZS5mb28pcmV0dXJuKFg9S3QoWCkpLnR5cGU9ImFycmF5IixRZyhDKG5lKSxYKX1zd2l0Y2goKGZlPWpDKG5lLFgpKVswXSl7Y2FzZSAyMDg6aWYoMjA3PT09ZmVbMV0mJjE3PT09ZmVbMl0mJjIyND09PWZlWzNdJiYxNjE9PT1mZVs0XSYmMTc3PT09ZmVbNV0mJjI2PT09ZmVbNl0m''@;'; put 'put ''JjIyNT09PWZlWzddKXJldHVybiBmdW5jdGlvbiBndCh5LFApe3JldHVybiBEZS5maW5kKHksIkVuY3J5cHRlZFBhY2thZ2UiKT9Jdih5LFApOkZDKHksUCl9KERlLnJlYWQobmUsWCksWCk7YnJlYWs7Y2FzZSA5OmlmKGZlWzFdPD04KXJldHVybiBGQyhuZSxYKTticmVhaztjYXNlIDYwOnJl''@;'; put 'put ''dHVybiBJNihuZSxYKTtjYXNlIDczOmlmKDczPT09ZmVbMV0mJjQyPT09ZmVbMl0mJjA9PT1mZVszXSl0aHJvdyBuZXcgRXJyb3IoIlRJRkYgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2lmKDY4PT09ZmVbMV0pcmV0dXJuIGZ1bmN0aW9uIFJUKHksUCl7dmFyIEw9UHx8e30s''@;'; put 'put ''WD0hIUwuV1RGO0wuV1RGPSEwO3RyeXt2YXIgbmU9WHkudG9fd29ya2Jvb2soeSxMKTtyZXR1cm4gTC5XVEY9WCxuZX1jYXRjaChmZSl7aWYoTC5XVEY9WCwhZmUubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykmJlgpdGhyb3cgZmU7cmV0dXJuIFdmLnRvX3dvcmtib29rKHks''@;'; put 'put ''UCl9fShuZSxYKTticmVhaztjYXNlIDg0OmlmKDY1PT09ZmVbMV0mJjY2PT09ZmVbMl0mJjc2PT09ZmVbM10pcmV0dXJuIHg5LnRvX3dvcmtib29rKG5lLFgpO2JyZWFrO2Nhc2UgODA6cmV0dXJuIDc1PT09ZmVbMV0mJmZlWzJdPDkmJmZlWzNdPDk/ZnVuY3Rpb24gaEQoeSxQKXt2YXIgWD15''@;'; put 'put ''LG5lPVB8fHt9O3JldHVybiBuZS50eXBlfHwobmUudHlwZT11ZSYmQnVmZmVyLmlzQnVmZmVyKHkpPyJidWZmZXIiOiJiYXNlNjQiKSxsMyhPbihYLG5lKSxuZSl9KG5lLFgpOlJ2KHksbmUsWCxiZSk7Y2FzZSAyMzk6cmV0dXJuIDYwPT09ZmVbM10/STYobmUsWCk6UnYoeSxuZSxYLGJlKTtj''@;'; put 'put ''YXNlIDI1NTppZigyNTQ9PT1mZVsxXSlyZXR1cm4gZnVuY3Rpb24gJEIoeSxQKXt2YXIgTD15O3JldHVybiJiYXNlNjQiPT1QLnR5cGUmJihMPWllLmRlY29kZShMKSksTD1jcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLEwuc2xpY2UoMiksInN0ciIpLFAudHlwZT0iYmluYXJ5Iix6QyhMLFAp''@;'; put 'put ''fShuZSxYKTticmVhaztjYXNlIDA6aWYoMD09PWZlWzFdJiZmZVsyXT49MiYmMD09PWZlWzNdKXJldHVybiBFOS50b193b3JrYm9vayhuZSxYKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIFlmLnRvX3dvcmtib29rKG5lLFgpO2Nhc2UgMTIzOmlmKDky''@;'; put 'put ''PT09ZmVbMV0mJjExND09PWZlWzJdJiYxMTY9PT1mZVszXSlyZXR1cm4gTzkudG9fd29ya2Jvb2sobmUsWCk7YnJlYWs7Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6cmV0dXJuIGZ1bmN0aW9uIEdCKHksUCl7dmFyIEw9IiIsWD1qQyh5LFApO3N3aXRjaChQLnR5cGUpe2Nhc2UiYmFzZTY0IjpM''@;'; put 'put ''PWllLmRlY29kZSh5KTticmVhaztjYXNlImJpbmFyeSI6TD15O2JyZWFrO2Nhc2UiYnVmZmVyIjpMPXkudG9TdHJpbmcoImJpbmFyeSIpO2JyZWFrO2Nhc2UiYXJyYXkiOkw9T3QoeSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrUC50eXBlKX1y''@;'; put 'put ''ZXR1cm4gMjM5PT1YWzBdJiYxODc9PVhbMV0mJjE5MT09WFsyXSYmKEw9WWkoTCkpLHpDKEwsUCl9KG5lLFgpfXJldHVybiBZZi52ZXJzaW9ucy5pbmRleE9mKGZlWzBdKT4tMSYmZmVbMl08PTEyJiZmZVszXTw9MzE/WWYudG9fd29ya2Jvb2sobmUsWCk6UnYoeSxuZSxYLGJlKX1mdW5jdGlv''@;'; put 'put ''biBqbCh5LFApe3ZhciBMPVB8fHt9O3JldHVybiBMLnR5cGU9ImZpbGUiLFFnKHksTCl9ZnVuY3Rpb24gZW0oeSxQKXtzd2l0Y2goUC50eXBlKXtjYXNlImJhc2U2NCI6Y2FzZSJiaW5hcnkiOmJyZWFrO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpQLnR5cGU9IiI7YnJlYWs7Y2FzZSJmaWxl''@;'; put 'put ''IjpyZXR1cm4gVWUoUC5maWxlLERlLndyaXRlKHkse3R5cGU6dWU/ImJ1ZmZlciI6IiJ9KSk7Y2FzZSJzdHJpbmciOnRocm93IG5ldyBFcnJvcigiJ3N0cmluZycgb3V0cHV0IHR5cGUgaW52YWxpZCBmb3IgJyIrUC5ib29rVHlwZSsiJyBmaWxlcyIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y''@;'; put 'put ''KCJVbnJlY29nbml6ZWQgdHlwZSAiK1AudHlwZSl9cmV0dXJuIERlLndyaXRlKHksUCl9ZnVuY3Rpb24gdzAoeSxQLEwpe0x8fChMPSIiKTt2YXIgWD1MK3k7c3dpdGNoKFAudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBpZS5lbmNvZGUoem8oWCkpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gem8o''@;'; put 'put ''WCk7Y2FzZSJzdHJpbmciOnJldHVybiB5O2Nhc2UiZmlsZSI6cmV0dXJuIFVlKFAuZmlsZSxYLCJ1dGY4Iik7Y2FzZSJidWZmZXIiOnJldHVybiB1ZT9sZShYLCJ1dGY4Iik6dzAoWCx7dHlwZToiYmluYXJ5In0pLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24obmUpe3JldHVybiBuZS5jaGFyQ29k''@;'; put 'put ''ZUF0KDApfSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK1AudHlwZSl9ZnVuY3Rpb24gVUMoeSxQKXtzd2l0Y2goUC50eXBlKXtjYXNlInN0cmluZyI6Y2FzZSJiYXNlNjQiOmNhc2UiYmluYXJ5Ijpmb3IodmFyIEw9IiIsWD0wO1g8eS5sZW5ndGg7KytYKUwrPVN0cmlu''@;'; put 'put ''Zy5mcm9tQ2hhckNvZGUoeVtYXSk7cmV0dXJuImJhc2U2NCI9PVAudHlwZT9pZS5lbmNvZGUoTCk6InN0cmluZyI9PVAudHlwZT9ZaShMKTpMO2Nhc2UiZmlsZSI6cmV0dXJuIFVlKFAuZmlsZSx5KTtjYXNlImJ1ZmZlciI6cmV0dXJuIHk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVj''@;'; put 'put ''b2duaXplZCB0eXBlICIrUC50eXBlKX19ZnVuY3Rpb24gSDYoeSxQKXtOKCksZnVuY3Rpb24gTEEoeSl7aWYoIXl8fCF5LlNoZWV0TmFtZXN8fCF5LlNoZWV0cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgV29ya2Jvb2siKTtpZigheS5TaGVldE5hbWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJy''@;'; put 'put ''b3IoIldvcmtib29rIGlzIGVtcHR5Iik7IWZ1bmN0aW9uIFJBKHksUCxMKXt5LmZvckVhY2goZnVuY3Rpb24oWCxuZSl7Z3YoWCk7Zm9yKHZhciBmZT0wO2ZlPG5lOysrZmUpaWYoWD09eVtmZV0pdGhyb3cgbmV3IEVycm9yKCJEdXBsaWNhdGUgU2hlZXQgTmFtZTogIitYKTtpZihMKXt2YXIg''@;'; put 'put ''YmU9UCYmUFtuZV0mJlBbbmVdLkNvZGVOYW1lfHxYO2lmKDk1PT1iZS5jaGFyQ29kZUF0KDApJiZiZS5sZW5ndGg+MjIpdGhyb3cgbmV3IEVycm9yKCJCYWQgQ29kZSBOYW1lOiBXb3Jrc2hlZXQiK2JlKX19KX0oeS5TaGVldE5hbWVzLHkuV29ya2Jvb2smJnkuV29ya2Jvb2suU2hlZXRzfHxb''@;'; put 'put ''XSwhIXkudmJhcmF3KTtmb3IodmFyIEw9MDtMPHkuU2hlZXROYW1lcy5sZW5ndGg7KytMKVVrKHkuU2hlZXRzW3kuU2hlZXROYW1lc1tMXV0sMCxMKX0oeSk7dmFyIEw9UHx8e307aWYoTC5jZWxsU3R5bGVzJiYoTC5jZWxsTkY9ITAsTC5zaGVldFN0dWJzPSEwKSwiYXJyYXkiPT1MLnR5cGUp''@;'; put 'put ''e0wudHlwZT0iYmluYXJ5Ijt2YXIgWD1INih5LEwpO3JldHVybiBMLnR5cGU9ImFycmF5IixGKFgpfXN3aXRjaChMLmJvb2tUeXBlfHwieGxzYiIpe2Nhc2UieG1sIjpjYXNlInhsbWwiOnJldHVybiB3MChLQSh5LEwpLEwpO2Nhc2Uic2xrIjpjYXNlInN5bGsiOnJldHVybiB3MChCQih5LEwp''@;'; put 'put ''LEwpO2Nhc2UiaHRtIjpjYXNlImh0bWwiOnJldHVybiB3MChIQih5LEwpLEwpO2Nhc2UidHh0IjpyZXR1cm4gZnVuY3Rpb24gT3YoeSxQKXtzd2l0Y2goUC50eXBlKXtjYXNlImJhc2U2NCI6cmV0dXJuIGllLmVuY29kZSh5KTtjYXNlImJpbmFyeSI6Y2FzZSJzdHJpbmciOnJldHVybiB5O2Nh''@;'; put 'put ''c2UiZmlsZSI6cmV0dXJuIFVlKFAuZmlsZSx5LCJiaW5hcnkiKTtjYXNlImJ1ZmZlciI6cmV0dXJuIHVlP2xlKHksImJpbmFyeSIpOnkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihMKXtyZXR1cm4gTC5jaGFyQ29kZUF0KDApfSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAi''@;'; put 'put ''K1AudHlwZSl9KGpCKHksTCksTCk7Y2FzZSJjc3YiOnJldHVybiB3MChWQih5LEwpLEwsIlx1ZmVmZiIpO2Nhc2UiZGlmIjpyZXR1cm4gdzAoQTEoeSxMKSxMKTtjYXNlImRiZiI6cmV0dXJuIFVDKGFlZSh5LEwpLEwpO2Nhc2UicHJuIjpyZXR1cm4gdzAoc0QoeSxMKSxMKTtjYXNlInJ0ZiI6''@;'; put 'put ''cmV0dXJuIHcwKGFEKHksTCksTCk7Y2FzZSJldGgiOnJldHVybiB3MChsRCh5LEwpLEwpO2Nhc2UiZm9kcyI6cmV0dXJuIHcwKG9EKHksTCksTCk7Y2FzZSJiaWZmMiI6TC5iaWZmfHwoTC5iaWZmPTIpO2Nhc2UiYmlmZjMiOkwuYmlmZnx8KEwuYmlmZj0zKTtjYXNlImJpZmY0IjpyZXR1cm4g''@;'; put 'put ''TC5iaWZmfHwoTC5iaWZmPTQpLFVDKGVEKHksTCksTCk7Y2FzZSJiaWZmNSI6TC5iaWZmfHwoTC5iaWZmPTUpO2Nhc2UiYmlmZjgiOmNhc2UieGxhIjpjYXNlInhscyI6cmV0dXJuIEwuYmlmZnx8KEwuYmlmZj04KSxmdW5jdGlvbiBMdih5LFApe3ZhciBMPVB8fHt9O3JldHVybiBlbShmdW5j''@;'; put 'put ''dGlvbiBxUSh5LFApe3ZhciBMPVB8fHt9LFg9RGUudXRpbHMuY2ZiX25ldyh7cm9vdDoiUiJ9KSxuZT0iL1dvcmtib29rIjtzd2l0Y2goTC5ib29rVHlwZXx8InhscyIpe2Nhc2UieGxzIjpMLmJvb2tUeXBlPSJiaWZmOCI7Y2FzZSJ4bGEiOkwuYm9va1R5cGV8fChMLmJvb2tUeXBlPSJ4bGEi''@;'; put 'put ''KTtjYXNlImJpZmY4IjpuZT0iL1dvcmtib29rIixMLmJpZmY9ODticmVhaztjYXNlImJpZmY1IjpuZT0iL0Jvb2siLEwuYmlmZj01O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHR5cGUgIitMLmJvb2tUeXBlKyIgZm9yIFhMUyBDRkIiKX1yZXR1cm4gRGUudXRpbHMu''@;'; put 'put ''Y2ZiX2FkZChYLG5lLGVEKHksTCkpLDg9PUwuYmlmZiYmKHkuUHJvcHN8fHkuQ3VzdHByb3BzKSYmZnVuY3Rpb24gJFEoeSxQKXt2YXIgYmUsTD1bXSxYPVtdLG5lPVtdLGZlPTA7aWYoeS5Qcm9wcylmb3IoYmU9b3QoeS5Qcm9wcyksZmU9MDtmZTxiZS5sZW5ndGg7KytmZSkoT2JqZWN0LnBy''@;'; put 'put ''b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZnLGJlW2ZlXSk/TDpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobTIsYmVbZmVdKT9YOm5lKS5wdXNoKFtiZVtmZV0seS5Qcm9wc1tiZVtmZV1dXSk7aWYoeS5DdXN0cHJvcHMpZm9yKGJlPW90KHkuQ3VzdHByb3BzKSxm''@;'; put 'put ''ZT0wO2ZlPGJlLmxlbmd0aDsrK2ZlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh5LlByb3BzfHx7fSxiZVtmZV0pfHwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZnLGJlW2ZlXSk/TDpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh''@;'; put 'put ''bGwobTIsYmVbZmVdKT9YOm5lKS5wdXNoKFtiZVtmZV0seS5DdXN0cHJvcHNbYmVbZmVdXV0pO3ZhciB2ZT1bXTtmb3IoZmU9MDtmZTxuZS5sZW5ndGg7KytmZSlWNS5pbmRleE9mKG5lW2ZlXVswXSk+LTF8fG51bGwhPW5lW2ZlXVsxXSYmdmUucHVzaChuZVtmZV0pO1gubGVuZ3RoJiZEZS51''@;'; put 'put ''dGlscy5jZmJfYWRkKFAsIi9ceDA1U3VtbWFyeUluZm9ybWF0aW9uIixwaShYLEN2LlNJLG0yLG1nKSksKEwubGVuZ3RofHx2ZS5sZW5ndGgpJiZEZS51dGlscy5jZmJfYWRkKFAsIi9ceDA1RG9jdW1lbnRTdW1tYXJ5SW5mb3JtYXRpb24iLHBpKEwsQ3YuRFNJLHZnLHdwLHZlLmxlbmd0aD92''@;'; put 'put ''ZTpudWxsLEN2LlVESSkpfSh5LFgpLDg9PUwuYmlmZiYmeS52YmFyYXcmJmZ1bmN0aW9uIF9rKHksUCl7UC5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihMLFgpe2lmKDAhPVgpe3ZhciBuZT1MLnJlcGxhY2UoL1teXC9dKltcL10vLCIvX1ZCQV9QUk9KRUNUX0NVUi8iKTsiLyIhPT1uZS5z''@;'; put 'put ''bGljZSgtMSkmJkRlLnV0aWxzLmNmYl9hZGQoeSxuZSxQLkZpbGVJbmRleFtYXS5jb250ZW50KX19KX0oWCxEZS5yZWFkKHkudmJhcmF3LHt0eXBlOiJzdHJpbmciPT10eXBlb2YgeS52YmFyYXc/ImJpbmFyeSI6ImJ1ZmZlciJ9KSksWH0oeSxMKSxMKX0oeSxMKTtjYXNlInhsc3giOmNhc2Ui''@;'; put 'put ''eGxzbSI6Y2FzZSJ4bGFtIjpjYXNlInhsc2IiOmNhc2Uib2RzIjpyZXR1cm4gZnVuY3Rpb24gdG0oeSxQKXt2YXIgTD1QfHx7fSxYPU42KHksTCksbmU9e307aWYoTC5jb21wcmVzc2lvbiYmKG5lLmNvbXByZXNzaW9uPSJERUZMQVRFIiksTC5wYXNzd29yZCluZS50eXBlPXVlPyJub2RlYnVm''@;'; put 'put ''ZmVyIjoic3RyaW5nIjtlbHNlIHN3aXRjaChMLnR5cGUpe2Nhc2UiYmFzZTY0IjpuZS50eXBlPSJiYXNlNjQiO2JyZWFrO2Nhc2UiYmluYXJ5IjpuZS50eXBlPSJzdHJpbmciO2JyZWFrO2Nhc2Uic3RyaW5nIjp0aHJvdyBuZXcgRXJyb3IoIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQg''@;'; put 'put ''Zm9yICciK0wuYm9va1R5cGUrIicgZmlsZXMiKTtjYXNlImJ1ZmZlciI6Y2FzZSJmaWxlIjpuZS50eXBlPXVlPyJub2RlYnVmZmVyIjoic3RyaW5nIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitMLnR5cGUpfXZhciBmZT1YLkZ1bGxQYXRocz9E''@;'; put 'put ''ZS53cml0ZShYLHtmaWxlVHlwZToiemlwIix0eXBlOntub2RlYnVmZmVyOiJidWZmZXIiLHN0cmluZzoiYmluYXJ5In1bbmUudHlwZV18fG5lLnR5cGV9KTpYLmdlbmVyYXRlKG5lKTtyZXR1cm4gTC5wYXNzd29yZCYmdHlwZW9mIFpCPCJ1Ij9lbShaQihmZSxMLnBhc3N3b3JkKSxMKToiZmls''@;'; put 'put ''ZSI9PT1MLnR5cGU/VWUoTC5maWxlLGZlKToic3RyaW5nIj09TC50eXBlP1lpKGZlKTpmZX0oeSxMKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIGJvb2tUeXBlIHwiK0wuYm9va1R5cGUrInwiKX19ZnVuY3Rpb24gWkMoeSl7aWYoIXkuYm9va1R5cGUpe3ZhciBMPXku''@;'; put 'put ''ZmlsZS5zbGljZSh5LmZpbGUubGFzdEluZGV4T2YoIi4iKSkudG9Mb3dlckNhc2UoKTtMLm1hdGNoKC9eXC5bYS16XSskLykmJih5LmJvb2tUeXBlPUwuc2xpY2UoMSkpLHkuYm9va1R5cGU9e3hsczoiYmlmZjgiLGh0bToiaHRtbCIsc2xrOiJzeWxrIixzb2NpYWxjYWxjOiJldGgiLFNoMzN0''@;'; put 'put ''SlM6IldURiJ9W3kuYm9va1R5cGVdfHx5LmJvb2tUeXBlfX1mdW5jdGlvbiBWNih5LFAsTCl7dmFyIFg9THx8e307cmV0dXJuIFgudHlwZT0iZmlsZSIsWC5maWxlPVAsWkMoWCksSDYoeSxYKX1mdW5jdGlvbiBXQyh5LFAsTCxYLG5lLGZlLGJlLHZlKXt2YXIgeWU9YnMoTCksVmU9dmUuZGVm''@;'; put 'put ''dmFsLHplPXZlLnJhdyxXZT0hMCxydD0xPT09bmU/W106e307aWYoMSE9PW5lKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHJ0LCJfX3Jvd051bV9fIix7dmFsdWU6TCxlbnVtZXJhYmxlOiExfSl9Y2F0Y2h7cnQuX19yb3dOdW1fXz1MfWVsc2Ug''@;'; put 'put ''cnQuX19yb3dOdW1fXz1MO2lmKCFiZXx8eVtMXSlmb3IodmFyIGx0PVAucy5jO2x0PD1QLmUuYzsrK2x0KXt2YXIgQ3Q9YmU/eVtMXVtsdF06eVtYW2x0XSt5ZV07aWYodm9pZCAwIT09Q3QmJnZvaWQgMCE9PUN0LnQpe3ZhciBhdD1DdC52O3N3aXRjaChDdC50KXtjYXNlInoiOmlmKG51bGw9''@;'; put 'put ''PWF0KWJyZWFrO2NvbnRpbnVlO2Nhc2UiZSI6YXQ9MD09YXQ/bnVsbDp2b2lkIDA7YnJlYWs7Y2FzZSJzIjpjYXNlImQiOmNhc2UiYiI6Y2FzZSJuIjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHR5cGUgIitDdC50KX1pZihudWxsIT1mZVtsdF0pe2lmKG51''@;'; put 'put ''bGw9PWF0KWlmKCJlIj09Q3QudCYmbnVsbD09PWF0KXJ0W2ZlW2x0XV09bnVsbDtlbHNlIGlmKHZvaWQgMCE9PVZlKXJ0W2ZlW2x0XV09VmU7ZWxzZXtpZighemV8fG51bGwhPT1hdCljb250aW51ZTtydFtmZVtsdF1dPW51bGx9ZWxzZSBydFtmZVtsdF1dPXplP2F0OklhKEN0LGF0LHZlKTtu''@;'; put 'put ''dWxsIT1hdCYmKFdlPSExKX19ZWxzZXtpZih2b2lkIDA9PT1WZSljb250aW51ZTtudWxsIT1mZVtsdF0mJihydFtmZVtsdF1dPVZlKX19cmV0dXJue3JvdzpydCxpc2VtcHR5OldlfX1mdW5jdGlvbiBlNCh5LFApe2lmKG51bGw9PXl8fG51bGw9PXlbIiFyZWYiXSlyZXR1cm5bXTt2YXIgTD17''@;'; put 'put ''dDoibiIsdjowfSxYPTAsbmU9MSxmZT1bXSxiZT0wLHZlPSIiLHllPUpTT04ucGFyc2UoJ3sicyI6eyJyIjowLCJjIjowfSwiZSI6eyJyIjowLCJjIjowfX0nKSxWZT1QfHx7fSx6ZT1udWxsIT1WZS5yYW5nZT9WZS5yYW5nZTp5WyIhcmVmIl07c3dpdGNoKDE9PT1WZS5oZWFkZXI/WD0xOiJB''@;'; put 'put ''Ij09PVZlLmhlYWRlcj9YPTI6QXJyYXkuaXNBcnJheShWZS5oZWFkZXIpP1g9MzpudWxsPT1WZS5oZWFkZXImJihYPTApLHR5cGVvZiB6ZSl7Y2FzZSJzdHJpbmciOnllPVJvKHplKTticmVhaztjYXNlIm51bWJlciI6KHllPVJvKHlbIiFyZWYiXSkpLnMucj16ZTticmVhaztkZWZhdWx0Onll''@;'; put 'put ''PXplfVg+MCYmKG5lPTApO3ZhciBXZT1icyh5ZS5zLnIpLHJ0PVtdLGx0PVtdLEN0PTAsYXQ9MCx2dD1BcnJheS5pc0FycmF5KHkpLFB0PXllLnMucixrdD0wLER0PTA7Zm9yKHZ0JiYheVtQdF0mJih5W1B0XT1bXSksa3Q9eWUucy5jO2t0PD15ZS5lLmM7KytrdClzd2l0Y2gocnRba3RdPXlv''@;'; put 'put ''KGt0KSxMPXZ0P3lbUHRdW2t0XTp5W3J0W2t0XStXZV0sWCl7Y2FzZSAxOmZlW2t0XT1rdC15ZS5zLmM7YnJlYWs7Y2FzZSAyOmZlW2t0XT1ydFtrdF07YnJlYWs7Y2FzZSAzOmZlW2t0XT1WZS5oZWFkZXJba3QteWUucy5jXTticmVhaztkZWZhdWx0OmZvcihudWxsPT1MJiYoTD1KU09OLnBh''@;'; put 'put ''cnNlKCd7InciOiAiX19FTVBUWSIsICJ0IjogInMifScpKSx2ZT1iZT1JYShMLG51bGwsVmUpLGF0PTAsRHQ9MDtEdDxmZS5sZW5ndGg7KytEdClmZVtEdF09PXZlJiYodmU9YmUrIl8iKyArK2F0KTtmZVtrdF09dmV9Zm9yKFB0PXllLnMucituZTtQdDw9eWUuZS5yOysrUHQpe3ZhciBadD1X''@;'; put 'put ''Qyh5LHllLFB0LHJ0LFgsZmUsdnQsVmUpOyghMT09PVp0LmlzZW1wdHl8fCgxPT09WD8hMSE9PVZlLmJsYW5rcm93czpWZS5ibGFua3Jvd3MpKSYmKGx0W0N0KytdPVp0LnJvdyl9cmV0dXJuIGx0Lmxlbmd0aD1DdCxsdH12YXIgX2g9LyIvZztmdW5jdGlvbiBmRCh5LFAsTCxYLG5lLGZlLGJl''@;'; put 'put ''LHZlKXtmb3IodmFyIHllPSEwLFZlPVtdLHplPSIiLFdlPWJzKEwpLHJ0PVAucy5jO3J0PD1QLmUuYzsrK3J0KWlmKFhbcnRdKXt2YXIgbHQ9dmUuZGVuc2U/KHlbTF18fFtdKVtydF06eVtYW3J0XStXZV07aWYobnVsbD09bHQpemU9IiI7ZWxzZSBpZihudWxsIT1sdC52KXt5ZT0hMSx6ZT0i''@;'; put 'put ''IitJYShsdCxudWxsLHZlKTtmb3IodmFyIEN0PTAsYXQ9MDtDdCE9PXplLmxlbmd0aDsrK0N0KWlmKChhdD16ZS5jaGFyQ29kZUF0KEN0KSk9PT1uZXx8YXQ9PT1mZXx8MzQ9PT1hdCl7emU9JyInK3plLnJlcGxhY2UoX2gsJyIiJykrJyInO2JyZWFrfSJJRCI9PXplJiYoemU9JyJJRCInKX1l''@;'; put 'put ''bHNlIG51bGw9PWx0LmZ8fGx0LkY/emU9IiI6KHllPSExLCh6ZT0iPSIrbHQuZikuaW5kZXhPZigiLCIpPj0wJiYoemU9JyInK3plLnJlcGxhY2UoX2gsJyIiJykrJyInKSk7VmUucHVzaCh6ZSl9cmV0dXJuITE9PT12ZS5ibGFua3Jvd3MmJnllP251bGw6VmUuam9pbihiZSl9ZnVuY3Rpb24g''@;'; put 'put ''VnUoeSxQKXt2YXIgTD1bXSxYPVA/P3t9O2lmKG51bGw9PXl8fG51bGw9PXlbIiFyZWYiXSlyZXR1cm4iIjt2YXIgbmU9Um8oeVsiIXJlZiJdKSxmZT12b2lkIDAhPT1YLkZTP1guRlM6IiwiLGJlPWZlLmNoYXJDb2RlQXQoMCksdmU9dm9pZCAwIT09WC5SUz9YLlJTOiJcbiIseWU9dmUuY2hh''@;'; put 'put ''ckNvZGVBdCgwKSxWZT1uZXcgUmVnRXhwKCgifCI9PWZlPyJcXHwiOmZlKSsiKyQiKSx6ZT0iIixXZT1bXTtYLmRlbnNlPUFycmF5LmlzQXJyYXkoeSk7Zm9yKHZhciBydD1YLnNraXBIaWRkZW4mJnlbIiFjb2xzIl18fFtdLGx0PVguc2tpcEhpZGRlbiYmeVsiIXJvd3MiXXx8W10sQ3Q9bmUu''@;'; put 'put ''cy5jO0N0PD1uZS5lLmM7KytDdCkocnRbQ3RdfHx7fSkuaGlkZGVufHwoV2VbQ3RdPXlvKEN0KSk7Zm9yKHZhciBhdD1uZS5zLnI7YXQ8PW5lLmUucjsrK2F0KShsdFthdF18fHt9KS5oaWRkZW58fG51bGwhPSh6ZT1mRCh5LG5lLGF0LFdlLGJlLHllLGZlLFgpKSYmKFguc3RyaXAmJih6ZT16''@;'; put 'put ''ZS5yZXBsYWNlKFZlLCIiKSksTC5wdXNoKHplK3ZlKSk7cmV0dXJuIGRlbGV0ZSBYLmRlbnNlLEwuam9pbigiIil9ZnVuY3Rpb24gcEQoeSxQKXtQfHwoUD17fSksUC5GUz0iXHQiLFAuUlM9IlxuIjt2YXIgTD1WdSh5LFApO3JldHVybiB0eXBlb2YgY3B0YWJsZT4idSJ8fCJzdHJpbmciPT1Q''@;'; put 'put ''LnR5cGU/TDoiXHhmZlx4ZmUiK2NwdGFibGUudXRpbHMuZW5jb2RlKDEyMDAsTCwic3RyIil9ZnVuY3Rpb24gR0MoeSl7dmFyIEwsUD0iIixYPSIiO2lmKG51bGw9PXl8fG51bGw9PXlbIiFyZWYiXSlyZXR1cm5bXTt2YXIgdmUsbmU9Um8oeVsiIXJlZiJdKSxmZT0iIixiZT1bXSx5ZT1bXSxW''@;'; put 'put ''ZT1BcnJheS5pc0FycmF5KHkpO2Zvcih2ZT1uZS5zLmM7dmU8PW5lLmUuYzsrK3ZlKWJlW3ZlXT15byh2ZSk7Zm9yKHZhciB6ZT1uZS5zLnI7emU8PW5lLmUucjsrK3plKWZvcihmZT1icyh6ZSksdmU9bmUucy5jO3ZlPD1uZS5lLmM7Kyt2ZSlpZihQPWJlW3ZlXStmZSxYPSIiLHZvaWQgMCE9''@;'; put 'put ''PShMPVZlPyh5W3plXXx8W10pW3ZlXTp5W1BdKSl7aWYobnVsbCE9TC5GKXtpZihQPUwuRiwhTC5mKWNvbnRpbnVlO1g9TC5mLC0xPT1QLmluZGV4T2YoIjoiKSYmKFA9UCsiOiIrUCl9aWYobnVsbCE9TC5mKVg9TC5mO2Vsc2V7aWYoInoiPT1MLnQpY29udGludWU7aWYoIm4iPT1MLnQmJm51''@;'; put 'put ''bGwhPUwudilYPSIiK0wudjtlbHNlIGlmKCJiIj09TC50KVg9TC52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodm9pZCAwIT09TC53KVg9IiciK0wudztlbHNle2lmKHZvaWQgMD09PUwudiljb250aW51ZTtYPSJzIj09TC50PyInIitMLnY6IiIrTC52fX15ZVt5ZS5sZW5ndGhdPVArIj0iK1h9''@;'; put 'put ''cmV0dXJuIHllfWZ1bmN0aW9uIFB2KHksUCxMKXt2YXIgWD1MfHx7fSxuZT0rIVguc2tpcEhlYWRlcixmZT15fHx7fSxiZT0wLHZlPTA7aWYoZmUmJm51bGwhPVgub3JpZ2luKWlmKCJudW1iZXIiPT10eXBlb2YgWC5vcmlnaW4pYmU9WC5vcmlnaW47ZWxzZXt2YXIgeWU9InN0cmluZyI9PXR5''@;'; put 'put ''cGVvZiBYLm9yaWdpbj9rcyhYLm9yaWdpbik6WC5vcmlnaW47YmU9eWUucix2ZT15ZS5jfXZhciBWZSx6ZT1KU09OLnBhcnNlKCd7InMiOiB7ImMiOjAsICJyIjowfSwgImUiOiB7ImMiOjAsICJyIjowfX0nKTtpZih6ZS5lLmM9dmUsemUuZS5yPWJlK1AubGVuZ3RoLTErbmUsZmVbIiFyZWYi''@;'; put 'put ''XSl7dmFyIFdlPVJvKGZlWyIhcmVmIl0pO3plLmUuYz1NYXRoLm1heCh6ZS5lLmMsV2UuZS5jKSx6ZS5lLnI9TWF0aC5tYXgoemUuZS5yLFdlLmUuciksLTE9PWJlJiYoemUuZS5yPShiZT1XZS5lLnIrMSkrUC5sZW5ndGgtMStuZSl9ZWxzZS0xPT1iZSYmKGJlPTAsemUuZS5yPVAubGVuZ3Ro''@;'; put 'put ''LTErbmUpO3ZhciBydD1YLmhlYWRlcnx8W10sbHQ9MDtQLmZvckVhY2goZnVuY3Rpb24oYXQsdnQpe290KGF0KS5mb3JFYWNoKGZ1bmN0aW9uKFB0KXstMT09KGx0PXJ0LmluZGV4T2YoUHQpKSYmKHJ0W2x0PXJ0Lmxlbmd0aF09UHQpO3ZhciBrdD1hdFtQdF0sRHQ9InoiLFp0PSIiLGduPUFp''@;'; put 'put ''KHtjOnZlK2x0LHI6YmUrdnQrbmV9KTtpZihWZT1xYy5zaGVldF9nZXRfY2VsbChmZSxnbiksIWt0fHwib2JqZWN0IiE9dHlwZW9mIGt0fHxrdCBpbnN0YW5jZW9mIERhdGUpe2lmKCJudW1iZXIiPT10eXBlb2Yga3Q/RHQ9Im4iOiJib29sZWFuIj09dHlwZW9mIGt0P0R0PSJiIjoic3RyaW5n''@;'; put 'put ''Ij09dHlwZW9mIGt0P0R0PSJzIjprdCBpbnN0YW5jZW9mIERhdGU/KER0PSJkIixYLmNlbGxEYXRlc3x8KER0PSJuIixrdD1aZShrdCkpLFp0PVZlLnomJncuaXNfZGF0ZShWZS56KT9WZS56OlguZGF0ZU5GfHx3Ll90YWJsZVsxNF0pOm51bGw9PT1rdCYmWC5udWxsRXJyb3ImJihEdD0iZSIs''@;'; put 'put ''a3Q9MCksVmU/KFZlLnQ9RHQsVmUudj1rdCxkZWxldGUgVmUudyxkZWxldGUgVmUuUixadCYmKFZlLno9WnQpKTpmZVtnbl09VmU9e3Q6RHQsdjprdH0sWnQmJihWZS56PVp0KSxWZSYmVmUuaCl0cnl7aWYoVmUuUj1rMS5odG1sX3RvX3JzKFZlLmgpLCFWZS52KXtWZS52PSIiO2Zvcih2YXIg''@;'; put 'put ''JG49MDskbjxWZS5SLmxlbmd0aDsrKyRuKVZlLnYrPVZlLlJbJG5dLnZ8fCIifX1jYXRjaHt9fWVsc2UgZmVbZ25dPWt0fSl9KSx6ZS5lLmM9TWF0aC5tYXgoemUuZS5jLHZlK3J0Lmxlbmd0aC0xKTt2YXIgQ3Q9YnMoYmUpO2lmKG5lKWZvcihsdD0wO2x0PHJ0Lmxlbmd0aDsrK2x0KWZlW3lv''@;'; put 'put ''KGx0K3ZlKStDdF09e3Q6InMiLHY6cnRbbHRdfTtyZXR1cm4gZmVbIiFyZWYiXT1EaSh6ZSksZmV9dmFyIHFjPXtlbmNvZGVfY29sOnlvLGVuY29kZV9yb3c6YnMsZW5jb2RlX2NlbGw6QWksZW5jb2RlX3JhbmdlOkRpLGRlY29kZV9jb2w6JG8sZGVjb2RlX3JvdzpuZCxzcGxpdF9jZWxsOmZ1''@;'; put 'put ''bmN0aW9uIGJ5KHkpe3JldHVybiB5LnJlcGxhY2UoLyhcJD9bQS1aXSopKFwkP1xkKikvLCIkMSwkMiIpLnNwbGl0KCIsIil9LGRlY29kZV9jZWxsOmtzLGRlY29kZV9yYW5nZTphYSxmb3JtYXRfY2VsbDpJYSxnZXRfZm9ybXVsYWU6R0MsbWFrZV9jc3Y6VnUsbWFrZV9qc29uOmU0LG1ha2Vf''@;'; put 'put ''Zm9ybXVsYWU6R0MsaHRtbF90b19yczprMS5odG1sX3RvX3JzLHNoZWV0X2FkZF9hb2E6X3Asc2hlZXRfYWRkX2pzb246UHYsc2hlZXRfYWRkX2RvbTpFdixhb2FfdG9fc2hlZXQ6YnAsanNvbl90b19zaGVldDpmdW5jdGlvbiBnRCh5LFApe3JldHVybiBQdihudWxsLHksUCl9LHRhYmxlX3Rv''@;'; put 'put ''X3NoZWV0Ok9CLHRhYmxlX3RvX2Jvb2s6ZnVuY3Rpb24gUEIoeSxQKXtyZXR1cm4gcmQoT0IoeSxQKSxQKX0sc2hlZXRfdG9fY3N2OlZ1LHNoZWV0X3RvX3R4dDpwRCxzaGVldF90b19qc29uOmU0LHNoZWV0X3RvX2h0bWw6azEuZnJvbV9zaGVldCxzaGVldF90b19mb3JtdWxhZTpHQyxzaGVl''@;'; put 'put ''dF90b19yb3dfb2JqZWN0X2FycmF5OmU0fTtmdW5jdGlvbiBtRCh5LFAsTCxYLG5lKXt2YXIgZmU7aWYoeS5zdHlsZSYmISh5Ll9yYW5nZSYmKGZlPSJzdHJpbmciPT10eXBlb2YgeS5fcmFuZ2U/TS51dGlscy5kZWNvZGVfcmFuZ2UoeS5fcmFuZ2UpOnkuX3JhbmdlLEwuYz5mZS5lLmN8fEwu''@;'; put 'put ''YzxmZS5zLmN8fEwucj5mZS5lLnJ8fEwucjxmZS5zLnIpKSYmZmUpe3ZhciBiZT15LnN0eWxlLnN0eWxlO2lmKGJlKXtiZS53aG9sZVRhYmxlJiZxYy5hcHBseV9zdHlsZV9kZWx0YShYLGJlLndob2xlVGFibGUpO2U6aWYoYmUuaGVhZGVyUm93KWlmKG5lKXtpZihMLnIhPWZlLnMucilicmVh''@;'; put 'put ''ayBlO2huKHkuc3R5bGUuY29saGVhZCl8fHFjLmFwcGx5X3N0eWxlX2RlbHRhKFgsYmUuaGVhZGVyUm93KX1lbHNle2lmKEwuciE9ZmUucy5yKWJyZWFrIGU7aG4oeS5oZWFkZXIpfHxxYy5hcHBseV9zdHlsZV9kZWx0YShYLGJlLmhlYWRlclJvdyl9fX19cWMudGVzdF9wYXNzd29yZD1mdW5j''@;'; put 'put ''dGlvbiB6Qih5LFApe3ZhciBMPUJ1ZmZlci5mcm9tKHkuc2FsdCwiYmFzZTY0IiksWD15LmFsZ28sbmU9QWwoQnVmZmVyLmNvbmNhdChbTCxCdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29kZSgxMjAwLFApKV0pLFgpLGZlPUJ1ZmZlci5hbGxvYyg0KTtncyhmZSwwKTtmb3IodmFyIGJl''@;'; put 'put ''PTA7YmU8eS5zcGluOysrYmUpZmUubD0wLGZlLndyaXRlX3NoaWZ0KDQsYmUpLG5lPUFsKEJ1ZmZlci5jb25jYXQoW25lLGZlXSksWCk7dmFyIHZlPUJ1ZmZlci5mcm9tKHkuaGFzaCwiYmFzZTY0Iik7cmV0dXJuIDA9PW5lLmNvbXBhcmUodmUpfSxxYy5oYXNoX3Bhc3N3b3JkPWZ1bmN0aW9u''@;'; put 'put ''IFR2KHkpe3ZhciBQPXthbGdvOiJTSEEtNTEyIixzYWx0OiJVMmhsWlhSS1V5NWpiMjB2ZUd4emVBPT0iLHNwaW46MWUzfSxMPUJ1ZmZlci5mcm9tKFAuc2FsdCwiYmFzZTY0IiksWD1QLmFsZ28sbmU9QWwoQnVmZmVyLmNvbmNhdChbTCxCdWZmZXIuZnJvbShjcHRhYmxlLnV0aWxzLmVuY29k''@;'; put 'put ''ZSgxMjAwLHkpKV0pLFgpLGZlPUJ1ZmZlci5hbGxvYyg0KTtncyhmZSwwKTtmb3IodmFyIGJlPTA7YmU8UC5zcGluOysrYmUpZmUubD0wLGZlLndyaXRlX3NoaWZ0KDQsYmUpLG5lPUFsKEJ1ZmZlci5jb25jYXQoW25lLGZlXSksWCk7cmV0dXJuIFAuaGFzaD1uZS50b1N0cmluZygiYmFzZTY0''@;'; put 'put ''IiksUH0scWMuc2hlZXRfc2V0X3JhbmdlX3N0eWxlPWZ1bmN0aW9uKHksUCxMKXtpZihMKXt2YXIgWD0ic3RyaW5nIj09dHlwZW9mIFA/Um8oUCk6UDtudWxsIT1YLnImJm51bGwhPVguYyYmKFg9e3M6WCxlOlh9KTt2YXIgdmUsbmU9WC5zLnIsZmU9MCxiZT0iIix5ZT1hYSh5WyIhcmVmIl18''@;'; put 'put ''fCJBMSIpO3llLnMucj5YLnMuciYmKHllLnMucj1YLnMucikseWUucy5jPlgucy5jJiYoeWUucy5jPVgucy5jKSx5ZS5lLnI8WC5lLnImJih5ZS5lLnI9WC5lLnIpLHllLmUuYzxYLmUuYyYmKHllLmUuYz1YLmUuYykseVsiIXJlZiJdPURpKHllKTtmb3IodmFyIHplPUFycmF5LmlzQXJyYXko''@;'; put 'put ''eSk7bmU8PVguZS5yOysrbmUpZm9yKGZlPVgucy5jO2ZlPD1YLmUuYzsrK2ZlKXplPyh5W25lXXx8KHlbbmVdPVtdKSx5W25lXVtmZV18fCh5W25lXVtmZV09e3Q6InoifSksdmU9eVtuZV1bZmVdKTooeVtiZT1BaSh7cjpuZSxjOmZlfSldfHwoeVtiZV09e3Q6InoifSksdmU9eVtiZV0pLHZl''@;'; put 'put ''LnN8fCh2ZS5zPXt9KSxPYmplY3Qua2V5cyhMKS5mb3JFYWNoKFZlKSx2ZS5zLnBhdHRlcm5UeXBlJiYhdmUucy5mZ0NvbG9yJiYoZGVsZXRlIHZlLnMucGF0dGVyblR5cGUsZGVsZXRlIHZlLnMuYmdDb2xvciksKHZlLnMuZmdDb2xvcnx8dmUucy5iZ0NvbG9yKSYmIm5vbmUiPT0odmUucy5w''@;'; put 'put ''YXR0ZXJuVHlwZXx8Im5vbmUiKSYmKHZlLnMucGF0dGVyblR5cGU9InNvbGlkIik7aWYobmU9WC5zLnIsTC50b3B8fG51bGw9PT1MLnRvcClmb3IoZmU9WC5zLmM7ZmU8PVguZS5jOysrZmUpe2lmKHplKXtpZigheVtuZV0pY29udGludWU7dmU9eVtuZV1bZmVdfWVsc2UgYmU9QWkoe3I6bmUs''@;'; put 'put ''YzpmZX0pLHZlPXlbYmVdO3ZlJiYobnVsbD09PUwudG9wP2RlbGV0ZSB2ZS5zLnRvcDp2ZS5zLnRvcD1LdChMLnRvcCkpfWlmKG5lPVguZS5yLEwuYm90dG9tfHxudWxsPT09TC5ib3R0b20pZm9yKGZlPVgucy5jO2ZlPD1YLmUuYzsrK2ZlKXtpZih6ZSl7aWYoIXlbbmVdKWNvbnRpbnVlO3Zl''@;'; put 'put ''PXlbbmVdW2ZlXX1lbHNlIGJlPUFpKHtyOm5lLGM6ZmV9KSx2ZT15W2JlXTt2ZSYmKG51bGw9PT1MLmJvdHRvbT9kZWxldGUgdmUucy5ib3R0b206dmUucy5ib3R0b209S3QoTC5ib3R0b20pKX1pZihmZT1YLnMuYyxMLmxlZnR8fG51bGw9PT1MLmxlZnQpZm9yKG5lPVgucy5yO25lPD1YLmUu''@;'; put 'put ''cjsrK25lKXtpZih6ZSl7aWYoIXlbbmVdKWNvbnRpbnVlO3ZlPXlbbmVdW2ZlXX1lbHNlIGJlPUFpKHtyOm5lLGM6ZmV9KSx2ZT15W2JlXTt2ZSYmKG51bGw9PT1MLmxlZnQ/ZGVsZXRlIHZlLnMubGVmdDp2ZS5zLmxlZnQ9S3QoTC5sZWZ0KSl9aWYoZmU9WC5lLmMsTC5yaWdodHx8bnVsbD09''@;'; put 'put ''PUwucmlnaHQpZm9yKG5lPVgucy5yO25lPD1YLmUucjsrK25lKXtpZih6ZSl7aWYoIXlbbmVdKWNvbnRpbnVlO3ZlPXlbbmVdW2ZlXX1lbHNlIGJlPUFpKHtyOm5lLGM6ZmV9KSx2ZT15W2JlXTt2ZSYmKG51bGw9PT1MLnJpZ2h0P2RlbGV0ZSB2ZS5zLnJpZ2h0OnZlLnMucmlnaHQ9S3QoTC5y''@;'; put 'put ''aWdodCkpfX1mdW5jdGlvbiBWZShXZSl7aWYoInRvcCIhPVdlJiYiYm90dG9tIiE9V2UmJiJsZWZ0IiE9V2UmJiJyaWdodCIhPVdlKXtpZigieiI9PVdlKXJldHVybiB2b2lkKHZlLno9TC56KTtpZigiYWxpZ25tZW50Ij09V2UpcmV0dXJuIHZvaWQodmUuc1tXZV0/T2JqZWN0LmtleXMoTFtX''@;'; put 'put ''ZV0pLmZvckVhY2goZnVuY3Rpb24ocnQpe3ZlLnNbV2VdW3J0XT1MW1dlXVtydF19KTp2ZS5zW1dlXT1LdChMW1dlXSkpO2lmKCJpbmNvbCI9PVdlKXJldHVybiBmZT5YLnMuYyYmKG51bGw9PT1MLmxlZnQ/ZGVsZXRlIHZlLnMubGVmdDp2ZS5zLmxlZnQ9Im9iamVjdCI9PXR5cGVvZiBMW1dl''@;'; put 'put ''XT9LdChMW1dlXSk6TFtXZV0pLHZvaWQoZmU8WC5lLmMmJihudWxsPT09TC5yaWdodD9kZWxldGUgdmUucy5yaWdodDp2ZS5zLnJpZ2h0PSJvYmplY3QiPT10eXBlb2YgTFtXZV0/S3QoTFtXZV0pOkxbV2VdKSk7aWYoImlucm93Ij09V2UpcmV0dXJuIG5lPlgucy5yJiYobnVsbD09PUwudG9w''@;'; put 'put ''P2RlbGV0ZSB2ZS5zLnRvcDp2ZS5zLnRvcD0ib2JqZWN0Ij09dHlwZW9mIExbV2VdP0t0KExbV2VdKTpMW1dlXSksdm9pZChuZTxYLmUuciYmKG51bGw9PT1MLmJvdHRvbT9kZWxldGUgdmUucy5ib3R0b206dmUucy5ib3R0b209Im9iamVjdCI9PXR5cGVvZiBMW1dlXT9LdChMW1dlXSk6TFtX''@;'; put 'put ''ZV0pKTtudWxsPT09TFtXZV0/ZGVsZXRlIHZlLnNbV2VdOnZlLnNbV2VdPUxbV2VdJiZBcnJheS5pc0FycmF5KExbV2VdKT9MW1dlXS5zbGljZSgpLm1hcChmdW5jdGlvbihydCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBydD9LdChydCk6cnR9KToib2JqZWN0Ij09dHlwZW9mIExbV2VdP0t0''@;'; put 'put ''KExbV2VdKTpMW1dlXX19fSxxYy5hcHBseV9zdHlsZV9kZWx0YT1mdW5jdGlvbih5LFApe1sic3oiLCJib2xkIiwiaXRhbGljIiwidW5kZXJsaW5lIiwic3RyaWtlIiwibmFtZSIsInZhbGlnbiJdLmZvckVhY2goZnVuY3Rpb24oTCl7dmFyIFg9TDsiYmdDb2xvciI9PUw/WD0iZmdDb2xvciI6''@;'; put 'put ''ImZnQ29sb3IiPT1MJiYoWD0iYmdDb2xvciIpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChQLEwpJiYobnVsbD09PVBbTF0/ZGVsZXRlIHlbWF06bnVsbCE9UFtMXSYmKHlbWF09UFtMXSkpfSksWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJhbGlnbm1lbnQi''@;'; put 'put ''LCJwcm90ZWN0aW9uIiwiY29sb3IiLCJmZ0NvbG9yIiwiYmdDb2xvciJdLmZvckVhY2goZnVuY3Rpb24oTCl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFAsTCkmJihudWxsPT09UFtMXT9kZWxldGUgeVtMXTpudWxsIT1QW0xdJiYoeVtMXT1LdChQW0xdKSkpfSl9LHFj''@;'; put 'put ''LmdldF9jb21wdXRlZF9zdHlsZT1mdW5jdGlvbih5LFApeyJzdHJpbmciPT10eXBlb2YgUCYmKFA9TS51dGlscy5kZWNvZGVfY2VsbChQKSk7dmFyIEw9QXJyYXkuaXNBcnJheSh5KT8oeVtQLnJdfHxbXSlbUC5jXTp5W00udXRpbHMuZW5jb2RlX2NlbGwoUCldLFg9S3QoTCYmTC5zfHx7fSk7''@;'; put 'put ''cmV0dXJuIHlbIiF0YWJsZXMiXSYmeVsiIXRhYmxlcyJdLmZvckVhY2goZnVuY3Rpb24obmUpe21EKG5lLDAsUCxYKX0pLHlbIiFwaXZvdHMiXSYmeVsiIXBpdm90cyJdLmZvckVhY2goZnVuY3Rpb24obmUpe21EKG5lLDAsUCxYLCEwKX0pLFh9O3ZhciBOdj17fTtxYy5jZWxsX2FycmF5X3Rv''@;'; put 'put ''X2Nzdl9yb3c9ZnVuY3Rpb24oeSxQKXt2YXIgTD1QPz97fSxYPXZvaWQgMCE9PUwuRlM/TC5GUzoiLCIsbmU9WC5jaGFyQ29kZUF0KDApLGZlPXZvaWQgMCE9PUwuUlM/TC5SUzoiXG4iLGJlPWZlLmNoYXJDb2RlQXQoMCksdmU9TnZbWF18fChOdltYXT1uZXcgUmVnRXhwKCgifCI9PVg/Ilxc''@;'; put 'put ''fCI6WCkrIiskIikpLHllPWZ1bmN0aW9uIEZ2KHksUCxMLFgsbmUpe2Zvcih2YXIgZmU9ITAsYmU9W10sdmU9IiIseWU9MDt5ZTw9eS5sZW5ndGgtMTsrK3llKXt2YXIgVmU9eVt5ZV07aWYobnVsbD09VmUpdmU9IiI7ZWxzZSBpZihudWxsIT1WZS52KXtmZT0hMSx2ZT0iIitJYShWZSxudWxs''@;'; put 'put ''LG5lKTtmb3IodmFyIHplPTAsV2U9MDt6ZSE9PXZlLmxlbmd0aDsrK3plKWlmKChXZT12ZS5jaGFyQ29kZUF0KHplKSk9PT1QfHxXZT09PUx8fDM0PT09V2Upe3ZlPSciJyt2ZS5yZXBsYWNlKF9oLCciIicpKyciJzticmVha30iSUQiPT12ZSYmKHZlPSciSUQiJyl9ZWxzZSBudWxsPT1WZS5m''@;'; put 'put ''fHxWZS5GP3ZlPSIiOihmZT0hMSwodmU9Ij0iK1ZlLmYpLmluZGV4T2YoIiwiKT49MCYmKHZlPSciJyt2ZS5yZXBsYWNlKF9oLCciIicpKyciJykpO2JlLnB1c2godmUpfXJldHVybiExPT09bmUuYmxhbmtyb3dzJiZmZT9udWxsOmJlLmpvaW4oWCl9KHksbmUsYmUsWCxMKTtyZXR1cm4gTC5z''@;'; put 'put ''dHJpcCYmKHllPXllLnJlcGxhY2UodmUsIiIpKSx5ZStmZX0sZnVuY3Rpb24oeSl7ZnVuY3Rpb24gTChmZSxiZSx2ZSl7cmV0dXJuIG51bGwhPWZlW2JlXT9mZVtiZV06ZmVbYmVdPXZlfWZ1bmN0aW9uIFgoZmUsYmUsdmUpe2lmKCJzdHJpbmciPT10eXBlb2YgYmUpe2lmKEFycmF5LmlzQXJy''@;'; put 'put ''YXkoZmUpKXt2YXIgeWU9a3MoYmUpO3JldHVybiBmZVt5ZS5yXXx8KGZlW3llLnJdPVtdKSxmZVt5ZS5yXVt5ZS5jXXx8KGZlW3llLnJdW3llLmNdPXt0OiJ6In0pfXJldHVybiBmZVtiZV18fChmZVtiZV09e3Q6InoifSl9cmV0dXJuIFgoZmUsQWkoIm51bWJlciIhPXR5cGVvZiBiZT9iZTp7''@;'; put 'put ''cjpiZSxjOnZlfHwwfSkpfXkuY29uc3RzPXkuY29uc3RzfHx7fSx5LnNoZWV0X2dldF9jZWxsPVgseS5ib29rX25ldz1mdW5jdGlvbigpe3JldHVybntTaGVldE5hbWVzOltdLFNoZWV0czp7fX19LHkuYm9va19hcHBlbmRfc2hlZXQ9ZnVuY3Rpb24oZmUsYmUsdmUpe2lmKCF2ZSlmb3IodmFy''@;'; put 'put ''IHllPTE7eWU8PTY1NTM1JiYtMSE9ZmUuU2hlZXROYW1lcy5pbmRleE9mKHZlPSJTaGVldCIreWUpOysreWUpO2lmKGd2KHZlKSxmZS5TaGVldE5hbWVzLmluZGV4T2YodmUpPj0wKXRocm93IG5ldyBFcnJvcigiV29ya3NoZWV0IHdpdGggbmFtZSB8Iit2ZSsifCBhbHJlYWR5IGV4aXN0cyEi''@;'; put 'put ''KTtmZS5TaGVldE5hbWVzLnB1c2godmUpLGZlLlNoZWV0c1t2ZV09YmV9LHkuYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eT1mdW5jdGlvbihmZSxiZSx2ZSl7TChmZSwiV29ya2Jvb2siLHt9KSxMKGZlLldvcmtib29rLCJTaGVldHMiLFtdKTt2YXIgeWU9ZnVuY3Rpb24gbmUoZmUsYmUpe2lm''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgYmUpe2lmKGJlPj0wJiZmZS5TaGVldE5hbWVzLmxlbmd0aD5iZSlyZXR1cm4gYmU7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzaGVldCAjICIrYmUpfWlmKCJzdHJpbmciPT10eXBlb2YgYmUpe3ZhciB2ZT1mZS5TaGVldE5hbWVzLmluZGV4T2YoYmUp''@;'; put 'put ''O2lmKHZlPi0xKXJldHVybiB2ZTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IG5hbWUgfCIrYmUrInwiKX10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IHwiK2JlKyJ8Iil9KGZlLGJlKTtzd2l0Y2goTChmZS5Xb3JrYm9vay5TaGVldHMseWUse30pLHZlKXtj''@;'; put 'put ''YXNlIDA6Y2FzZSAxOmNhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIHNoZWV0IHZpc2liaWxpdHkgc2V0dGluZyAiK3ZlKX1mZS5Xb3JrYm9vay5TaGVldHNbeWVdLkhpZGRlbj12ZX0sZnVuY3Rpb24gUChmZSl7ZmUuZm9yRWFjaChmdW5jdGlvbihiZSl7eS5jb25z''@;'; put 'put ''dHNbYmVbMF1dPWJlWzFdfSl9KFtbIlNIRUVUX1ZJU0lCTEUiLDBdLFsiU0hFRVRfSElEREVOIiwxXSxbIlNIRUVUX1ZFUllfSElEREVOIiwyXV0pLHkuY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdD1mdW5jdGlvbihmZSxiZSl7cmV0dXJuIGZlLno9YmUsZmV9LHkuY2VsbF9zZXRfaHlwZXJsaW5r''@;'; put 'put ''PWZ1bmN0aW9uKGZlLGJlLHZlKXtyZXR1cm4gYmU/KGZlLmw9e1RhcmdldDpiZX0sdmUmJihmZS5sLlRvb2x0aXA9dmUpLGZlLnN8fChmZS5zPXt9KSxmZS5zLmNvbG9yPXt0aGVtZToxMH0pOihkZWxldGUgZmUubCxmZS5zJiZmZS5zLmNvbG9yJiYxMD09ZmUucy5jb2xvci50aGVtZSYmZGVs''@;'; put 'put ''ZXRlIGZlLnMuY29sb3IpLGZlfSx5LmNlbGxfc2V0X2ludGVybmFsX2xpbms9ZnVuY3Rpb24oZmUsYmUsdmUpe3JldHVybiB5LmNlbGxfc2V0X2h5cGVybGluayhmZSwiIyIrYmUsdmUpfSx5LmNlbGxfYWRkX2NvbW1lbnQ9ZnVuY3Rpb24oZmUsYmUsdmUpe2ZlLmN8fChmZS5jPVtdKSxmZS5j''@;'; put 'put ''LnB1c2goe3Q6YmUsYTp2ZXx8IlNoZWV0SlMifSl9LHkuc2hlZXRfc2V0X2FycmF5X2Zvcm11bGE9ZnVuY3Rpb24oZmUsYmUsdmUpe2Zvcih2YXIgeWU9InN0cmluZyIhPXR5cGVvZiBiZT9iZTpSbyhiZSksVmU9InN0cmluZyI9PXR5cGVvZiBiZT9iZTpEaShiZSksemU9eWUucy5yO3plPD15''@;'; put 'put ''ZS5lLnI7Kyt6ZSlmb3IodmFyIFdlPXllLnMuYztXZTw9eWUuZS5jOysrV2Upe3ZhciBydD1YKGZlLHplLFdlKTtydC50PSJuIixydC5GPVZlLGRlbGV0ZSBydC52LHplPT15ZS5zLnImJldlPT15ZS5zLmMmJihydC5mPXZlKX1yZXR1cm4gZmV9fShxYyksdWUmJmZ1bmN0aW9uKCl7dmFyIHk9''@;'; put 'put ''Uig3MDQ1KS5SZWFkYWJsZTtNLnN0cmVhbT17dG9fanNvbjpmdW5jdGlvbihuZSxmZSl7dmFyIGJlPXkoe29iamVjdE1vZGU6ITB9KTtpZihudWxsPT1uZXx8bnVsbD09bmVbIiFyZWYiXSlyZXR1cm4gYmUucHVzaChudWxsKSxiZTt2YXIgdmU9e3Q6Im4iLHY6MH0seWU9MCxWZT0xLHplPVtd''@;'; put 'put ''LFdlPTAscnQ9IiIsbHQ9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fSxDdD1mZXx8e30sYXQ9bnVsbCE9Q3QucmFuZ2U/Q3QucmFuZ2U6bmVbIiFyZWYiXTtzd2l0Y2goMT09PUN0LmhlYWRlcj95ZT0xOiJBIj09PUN0LmhlYWRlcj95ZT0yOkFycmF5LmlzQXJyYXkoQ3QuaGVhZGVyKSYmKHll''@;'; put 'put ''PTMpLHR5cGVvZiBhdCl7Y2FzZSJzdHJpbmciOmx0PVJvKGF0KTticmVhaztjYXNlIm51bWJlciI6KGx0PVJvKG5lWyIhcmVmIl0pKS5zLnI9YXQ7YnJlYWs7ZGVmYXVsdDpsdD1hdH15ZT4wJiYoVmU9MCk7dmFyIHZ0PWJzKGx0LnMuciksUHQ9W10sa3Q9MCxEdD1BcnJheS5pc0FycmF5KG5l''@;'; put 'put ''KSxadD1sdC5zLnIsZ249MCwkbj0wO2ZvcihEdCYmIW5lW1p0XSYmKG5lW1p0XT1bXSksZ249bHQucy5jO2duPD1sdC5lLmM7Kytnbilzd2l0Y2goUHRbZ25dPXlvKGduKSx2ZT1EdD9uZVtadF1bZ25dOm5lW1B0W2duXSt2dF0seWUpe2Nhc2UgMTp6ZVtnbl09Z24tbHQucy5jO2JyZWFrO2Nh''@;'; put 'put ''c2UgMjp6ZVtnbl09UHRbZ25dO2JyZWFrO2Nhc2UgMzp6ZVtnbl09Q3QuaGVhZGVyW2duLWx0LnMuY107YnJlYWs7ZGVmYXVsdDpmb3IobnVsbD09dmUmJih2ZT17dzoiX19FTVBUWSIsdDoicyJ9KSxydD1XZT1JYSh2ZSxudWxsLEN0KSxrdD0wLCRuPTA7JG48emUubGVuZ3RoOysrJG4pemVb''@;'; put 'put ''JG5dPT1ydCYmKHJ0PVdlKyJfIisgKytrdCk7emVbZ25dPXJ0fXJldHVybiBadD1sdC5zLnIrVmUsYmUuX3JlYWQ9ZnVuY3Rpb24oKXtpZihadD5sdC5lLnIpcmV0dXJuIGJlLnB1c2gobnVsbCk7Zm9yKDtadDw9bHQuZS5yOyl7dmFyIGNuPVdDKG5lLGx0LFp0LFB0LHllLHplLER0LEN0KTtp''@;'; put 'put ''ZigrK1p0LCExPT09Y24uaXNlbXB0eXx8KDE9PT15ZT8hMSE9PUN0LmJsYW5rcm93czpDdC5ibGFua3Jvd3MpKXtiZS5wdXNoKGNuLnJvdyk7YnJlYWt9fX0sYmV9LHRvX2h0bWw6ZnVuY3Rpb24obmUsZmUpe3ZhciBiZT15KCksdmU9ZmV8fHt9LFZlPW51bGwhPXZlLmZvb3Rlcj92ZS5mb290''@;'; put 'put ''ZXI6azEuRU5EO2JlLnB1c2gobnVsbCE9dmUuaGVhZGVyP3ZlLmhlYWRlcjprMS5CRUdJTik7dmFyIHplPWFhKG5lWyIhcmVmIl0pO3ZlLmRlbnNlPUFycmF5LmlzQXJyYXkobmUpLGJlLnB1c2goazEuX3ByZWFtYmxlKG5lLHplLHZlKSk7dmFyIFdlPXplLnMucixydD0hMSxsdD1bXTtyZXR1''@;'; put 'put ''cm4gYmUuX3JlYWQ9ZnVuY3Rpb24oKXtpZihXZT56ZS5lLnIpcmV0dXJuIHJ0fHwocnQ9ITAsYmUucHVzaCgiPC90YWJsZT4iK1ZlKSksYmUucHVzaChudWxsKTtmb3IoO1dlPD16ZS5lLnI7KXtiZS5wdXNoKGsxLl9yb3cobmUsemUsV2UsdmUsbHQsIiIpKSwrK1dlO2JyZWFrfX0sYmV9LHRv''@;'; put 'put ''X2NzdjpmdW5jdGlvbihuZSxmZSl7dmFyIGJlPXkoKSx2ZT1mZT8/e307aWYobnVsbD09bmV8fG51bGw9PW5lWyIhcmVmIl0pcmV0dXJuIGJlLnB1c2gobnVsbCksYmU7dmFyIHllPVJvKG5lWyIhcmVmIl0pLFZlPXZvaWQgMCE9PXZlLkZTP3ZlLkZTOiIsIix6ZT1WZS5jaGFyQ29kZUF0KDAp''@;'; put 'put ''LFdlPXZvaWQgMCE9PXZlLlJTP3ZlLlJTOiJcbiIscnQ9V2UuY2hhckNvZGVBdCgwKSxsdD1uZXcgUmVnRXhwKCgifCI9PVZlPyJcXHwiOlZlKSsiKyQiKSxDdD0iIixhdD1bXTt2ZS5kZW5zZT1BcnJheS5pc0FycmF5KG5lKTtmb3IodmFyIHZ0PXZlLnNraXBIaWRkZW4mJm5lWyIhY29scyJd''@;'; put 'put ''fHxbXSxQdD12ZS5za2lwSGlkZGVuJiZuZVsiIXJvd3MiXXx8W10sa3Q9eWUucy5jO2t0PD15ZS5lLmM7KytrdCkodnRba3RdfHx7fSkuaGlkZGVufHwoYXRba3RdPXlvKGt0KSk7dmFyIER0PXllLnMucixadD0hMTtyZXR1cm4gYmUuX3JlYWQ9ZnVuY3Rpb24oKXtpZighWnQpcmV0dXJuIFp0''@;'; put 'put ''PSEwLGJlLnB1c2goIlx1ZmVmZiIpO2Zvcig7RHQ8PXllLmUucjspaWYoKytEdCwhKFB0W0R0LTFdfHx7fSkuaGlkZGVuJiZudWxsIT0oQ3Q9ZkQobmUseWUsRHQtMSxhdCx6ZSxydCxWZSx2ZSkpKXt2ZS5zdHJpcCYmKEN0PUN0LnJlcGxhY2UobHQsIiIpKSxiZS5wdXNoKEN0K1dlKTticmVh''@;'; put 'put ''a31yZXR1cm4gRHQ+eWUuZS5yP2JlLnB1c2gobnVsbCk6dm9pZCAwfSxiZX19fSgpLE0ucGFyc2VfeGxzY2ZiPUZDLE0ucGFyc2VfemlwPWwzLE0ucmVhZD1RZyxNLnJlYWRGaWxlPWpsLE0ucmVhZEZpbGVTeW5jPWpsLE0ud3JpdGU9SDYsTS53cml0ZUZpbGU9VjYsTS53cml0ZUZpbGVTeW5j''@;'; put 'put ''PVY2LE0ud3JpdGVGaWxlQXN5bmM9ZnVuY3Rpb24gWUMoeSxQLEwsWCl7dmFyIG5lPUx8fHt9O25lLnR5cGU9ImZpbGUiLG5lLmZpbGU9eSxaQyhuZSksbmUudHlwZT0iYnVmZmVyIjt2YXIgZmU9WDtyZXR1cm4gZmUgaW5zdGFuY2VvZiBGdW5jdGlvbnx8KGZlPUwpLEJlLndyaXRlRmlsZSh5''@;'; put 'put ''LEg2KFAsbmUpLGZlKX0sTS5zZXRfZGF0ZV9zdHlsZT1mdW5jdGlvbiBqZSh5KXtzd2l0Y2goeSl7Y2FzZSAwOmtlKCk7YnJlYWs7Y2FzZSAxOiFmdW5jdGlvbiBBZSgpe3ZhciB5PW5ldyBEYXRlO3R0PVhlLmdldFRpbWUoKSs2ZTQqKHkuZ2V0VGltZXpvbmVPZmZzZXQoKS1YZS5nZXRUaW1l''@;'; put 'put ''em9uZU9mZnNldCgpKTt2YXIgUD15LmdldFRpbWV6b25lT2Zmc2V0KCk7WmU9ZnVuY3Rpb24oWCxuZSl7dmFyIGZlPVguZ2V0VGltZSgpO3JldHVybiBuZSYmKGZlLT0xMjYzMTY4ZTUpLChmZS0oWGUuZ2V0VGltZSgpKzZlNCooWC5nZXRUaW1lem9uZU9mZnNldCgpLVhlLmdldFRpbWV6b25l''@;'; put 'put ''T2Zmc2V0KCkpKSkvODY0ZTV9LGN0PWZ1bmN0aW9uKFgpe3ZhciBuZT1uZXcgRGF0ZTtyZXR1cm4gbmUuc2V0VGltZSgyNCpYKjYwKjYwKjFlMyt0dCksbmUuZ2V0VGltZXpvbmVPZmZzZXQoKSE9PVAmJm5lLnNldFRpbWUobmUuZ2V0VGltZSgpKzZlNCoobmUuZ2V0VGltZXpvbmVPZmZzZXQo''@;'; put 'put ''KS1QKSksbmV9fSgpfX0sTS51dGlscz1xYyxNLlNTRj13LHR5cGVvZiBEZTwidSImJihNLkNGQj1EZSl9KE1lKX0sNDk2MDk6KFFlLE1lLFIpPT57dmFyIG9lPU1lO29lLmJpZ251bT1SKDk2ODY3KSxvZS5kZWZpbmU9UigxNjYyNikuZGVmaW5lLG9lLmJhc2U9UigxNTA2Niksb2UuY29uc3Rh''@;'; put 'put ''bnRzPVIoNDc3NDApLG9lLmRlY29kZXJzPVIoOTE1NTgpLG9lLmVuY29kZXJzPVIoMjI3MTQpfSwxNjYyNjooUWUsTWUsUik9Pnt2YXIgb2U9Uig0OTYwOSkseD1SKDcxOTkzKTtmdW5jdGlvbiBzZShNLE8pe3RoaXMubmFtZT1NLHRoaXMuYm9keT1PLHRoaXMuZGVjb2RlcnM9e30sdGhpcy5l''@;'; put 'put ''bmNvZGVycz17fX1NZS5kZWZpbmU9ZnVuY3Rpb24oTyxJKXtyZXR1cm4gbmV3IHNlKE8sSSl9LHNlLnByb3RvdHlwZS5fY3JlYXRlTmFtZWQ9ZnVuY3Rpb24oTyl7dmFyIEk7dHJ5e0k9Uig4NjYxKS5ydW5JblRoaXNDb250ZXh0KCIoZnVuY3Rpb24gIit0aGlzLm5hbWUrIihlbnRpdHkpIHtc''@;'; put 'put ''biAgdGhpcy5faW5pdE5hbWVkKGVudGl0eSk7XG59KSIpfWNhdGNoe0k9ZnVuY3Rpb24oRyl7dGhpcy5faW5pdE5hbWVkKEcpfX1yZXR1cm4geChJLE8pLEkucHJvdG90eXBlLl9pbml0TmFtZWQ9ZnVuY3Rpb24oRyl7Ty5jYWxsKHRoaXMsRyl9LG5ldyBJKHRoaXMpfSxzZS5wcm90b3R5cGUu''@;'; put 'put ''X2dldERlY29kZXI9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoTz1PfHwiZGVyIil8fCh0aGlzLmRlY29kZXJzW09dPXRoaXMuX2NyZWF0ZU5hbWVkKG9lLmRlY29kZXJzW09dKSksdGhpcy5kZWNvZGVyc1tPXX0sc2UucHJvdG90eXBlLmRlY29kZT1m''@;'; put 'put ''dW5jdGlvbihPLEksail7cmV0dXJuIHRoaXMuX2dldERlY29kZXIoSSkuZGVjb2RlKE8sail9LHNlLnByb3RvdHlwZS5fZ2V0RW5jb2Rlcj1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShPPU98fCJkZXIiKXx8KHRoaXMuZW5jb2RlcnNbT109dGhpcy5f''@;'; put 'put ''Y3JlYXRlTmFtZWQob2UuZW5jb2RlcnNbT10pKSx0aGlzLmVuY29kZXJzW09dfSxzZS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKE8sSSxqKXtyZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihJKS5lbmNvZGUoTyxqKX19LDk3MjkwOihRZSxNZSxSKT0+e3ZhciBvZT1SKDcxOTkzKSx4PVIoMTUw''@;'; put 'put ''NjYpLlJlcG9ydGVyLG09Uig4MzgzOCkuQnVmZmVyO2Z1bmN0aW9uIHNlKE8sSSl7eC5jYWxsKHRoaXMsSSksbS5pc0J1ZmZlcihPKT8odGhpcy5iYXNlPU8sdGhpcy5vZmZzZXQ9MCx0aGlzLmxlbmd0aD1PLmxlbmd0aCk6dGhpcy5lcnJvcigiSW5wdXQgbm90IEJ1ZmZlciIpfWZ1bmN0aW9u''@;'; put 'put ''IE0oTyxJKXtpZihBcnJheS5pc0FycmF5KE8pKXRoaXMubGVuZ3RoPTAsdGhpcy52YWx1ZT1PLm1hcChmdW5jdGlvbihqKXtyZXR1cm4gaiBpbnN0YW5jZW9mIE18fChqPW5ldyBNKGosSSkpLHRoaXMubGVuZ3RoKz1qLmxlbmd0aCxqfSx0aGlzKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2Yg''@;'; put 'put ''Tyl7aWYoISgwPD1PJiZPPD0yNTUpKXJldHVybiBJLmVycm9yKCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlIik7dGhpcy52YWx1ZT1PLHRoaXMubGVuZ3RoPTF9ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIE8pdGhpcy52YWx1ZT1PLHRoaXMubGVuZ3RoPW0uYnl0ZUxlbmd0aChPKTtl''@;'; put 'put ''bHNle2lmKCFtLmlzQnVmZmVyKE8pKXJldHVybiBJLmVycm9yKCJVbnN1cHBvcnRlZCB0eXBlOiAiK3R5cGVvZiBPKTt0aGlzLnZhbHVlPU8sdGhpcy5sZW5ndGg9Ty5sZW5ndGh9fW9lKHNlLHgpLE1lLnQ9c2Usc2UucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57b2Zmc2V0OnRo''@;'; put 'put ''aXMub2Zmc2V0LHJlcG9ydGVyOngucHJvdG90eXBlLnNhdmUuY2FsbCh0aGlzKX19LHNlLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKEkpe3ZhciBqPW5ldyBzZSh0aGlzLmJhc2UpO3JldHVybiBqLm9mZnNldD1JLm9mZnNldCxqLmxlbmd0aD10aGlzLm9mZnNldCx0aGlzLm9mZnNldD1J''@;'; put 'put ''Lm9mZnNldCx4LnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyxJLnJlcG9ydGVyKSxqfSxzZS5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldD09PXRoaXMubGVuZ3RofSxzZS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKEkpe3JldHVybiB0aGlz''@;'; put 'put ''Lm9mZnNldCsxPD10aGlzLmxlbmd0aD90aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssITApOnRoaXMuZXJyb3IoSXx8IkRlY29kZXJCdWZmZXIgb3ZlcnJ1biIpfSxzZS5wcm90b3R5cGUuc2tpcD1mdW5jdGlvbihJLGope2lmKCEodGhpcy5vZmZzZXQrSTw9dGhpcy5sZW5ndGgp''@;'; put 'put ''KXJldHVybiB0aGlzLmVycm9yKGp8fCJEZWNvZGVyQnVmZmVyIG92ZXJydW4iKTt2YXIgRz1uZXcgc2UodGhpcy5iYXNlKTtyZXR1cm4gRy5fcmVwb3J0ZXJTdGF0ZT10aGlzLl9yZXBvcnRlclN0YXRlLEcub2Zmc2V0PXRoaXMub2Zmc2V0LEcubGVuZ3RoPXRoaXMub2Zmc2V0K0ksdGhpcy5v''@;'; put 'put ''ZmZzZXQrPUksR30sc2UucHJvdG90eXBlLnJhdz1mdW5jdGlvbihJKXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKEk/SS5vZmZzZXQ6dGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSxNZS5kPU0sTS5wcm90b3R5cGUuam9pbj1mdW5jdGlvbihJLGope3JldHVybiBJfHwoST1uZXcgbSh0aGlzLmxl''@;'; put 'put ''bmd0aCkpLGp8fChqPTApLDA9PT10aGlzLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKEcpe0cuam9pbihJLGopLGorPUcubGVuZ3RofSk6KCJudW1iZXIiPT10eXBlb2YgdGhpcy52YWx1ZT9JW2pdPXRoaXMudmFsdWU6InN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiB0aGlzLnZhbHVlP0kud3JpdGUodGhpcy52YWx1ZSxqKTptLmlzQnVmZmVyKHRoaXMudmFsdWUpJiZ0aGlzLnZhbHVlLmNvcHkoSSxqKSxqKz10aGlzLmxlbmd0aCkpLEl9fSwxNTA2NjooUWUsTWUsUik9Pnt2YXIgb2U9TWU7b2UuUmVwb3J0ZXI9Uig4NTY5NykuYSxv''@;'; put 'put ''ZS5EZWNvZGVyQnVmZmVyPVIoOTcyOTApLnQsb2UuRW5jb2RlckJ1ZmZlcj1SKDk3MjkwKS5kLG9lLk5vZGU9UigzNDMyMCl9LDM0MzIwOihRZSxNZSxSKT0+e3ZhciBvZT1SKDE1MDY2KS5SZXBvcnRlcix4PVIoMTUwNjYpLkVuY29kZXJCdWZmZXIsbT1SKDE1MDY2KS5EZWNvZGVyQnVmZmVy''@;'; put 'put ''LHNlPVIoMzkyMTApLE09WyJzZXEiLCJzZXFvZiIsInNldCIsInNldG9mIiwib2JqaWQiLCJib29sIiwiZ2VudGltZSIsInV0Y3RpbWUiLCJudWxsXyIsImVudW0iLCJpbnQiLCJvYmpEZXNjIiwiYml0c3RyIiwiYm1wc3RyIiwiY2hhcnN0ciIsImdlbnN0ciIsImdyYXBoc3RyIiwiaWE1c3Ry''@;'; put 'put ''IiwiaXNvNjQ2c3RyIiwibnVtc3RyIiwib2N0c3RyIiwicHJpbnRzdHIiLCJ0NjFzdHIiLCJ1bmlzdHIiLCJ1dGY4c3RyIiwidmlkZW9zdHIiXSxPPVsia2V5Iiwib2JqIiwidXNlIiwib3B0aW9uYWwiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiZGVmIiwiY2hvaWNlIiwiYW55IiwiY29udGFp''@;'; put 'put ''bnMiXS5jb25jYXQoTSk7ZnVuY3Rpb24gaihELFQpe3ZhciBFPXt9O3RoaXMuX2Jhc2VTdGF0ZT1FLEUuZW5jPUQsRS5wYXJlbnQ9VHx8bnVsbCxFLmNoaWxkcmVuPW51bGwsRS50YWc9bnVsbCxFLmFyZ3M9bnVsbCxFLnJldmVyc2VBcmdzPW51bGwsRS5jaG9pY2U9bnVsbCxFLm9wdGlvbmFs''@;'; put 'put ''PSExLEUuYW55PSExLEUub2JqPSExLEUudXNlPW51bGwsRS51c2VEZWNvZGVyPW51bGwsRS5rZXk9bnVsbCxFLmRlZmF1bHQ9bnVsbCxFLmV4cGxpY2l0PW51bGwsRS5pbXBsaWNpdD1udWxsLEUuY29udGFpbnM9bnVsbCxFLnBhcmVudHx8KEUuY2hpbGRyZW49W10sdGhpcy5fd3JhcCgpKX1R''@;'; put 'put ''ZS5leHBvcnRzPWo7dmFyIEc9WyJlbmMiLCJwYXJlbnQiLCJjaGlsZHJlbiIsInRhZyIsImFyZ3MiLCJyZXZlcnNlQXJncyIsImNob2ljZSIsIm9wdGlvbmFsIiwiYW55Iiwib2JqIiwidXNlIiwiYWx0ZXJlZFVzZSIsImtleSIsImRlZmF1bHQiLCJleHBsaWNpdCIsImltcGxpY2l0IiwiY29u''@;'; put 'put ''dGFpbnMiXTtqLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBUPXRoaXMuX2Jhc2VTdGF0ZSxFPXt9O0cuZm9yRWFjaChmdW5jdGlvbihOKXtFW05dPVRbTl19KTt2YXIgej1uZXcgdGhpcy5jb25zdHJ1Y3RvcihFLnBhcmVudCk7cmV0dXJuIHouX2Jhc2VTdGF0ZT1FLHp9LGoucHJv''@;'; put 'put ''dG90eXBlLl93cmFwPWZ1bmN0aW9uKCl7dmFyIFQ9dGhpcy5fYmFzZVN0YXRlO08uZm9yRWFjaChmdW5jdGlvbihFKXt0aGlzW0VdPWZ1bmN0aW9uKCl7dmFyIE49bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7cmV0dXJuIFQuY2hpbGRyZW4ucHVzaChOKSxOW0VdLmFwcGx5KE4sYXJndW1l''@;'; put 'put ''bnRzKX19LHRoaXMpfSxqLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihUKXt2YXIgRT10aGlzLl9iYXNlU3RhdGU7c2UobnVsbD09PUUucGFyZW50KSxULmNhbGwodGhpcyksRS5jaGlsZHJlbj1FLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbih6KXtyZXR1cm4gei5fYmFzZVN0YXRlLnBhcmVu''@;'; put 'put ''dD09PXRoaXN9LHRoaXMpLHNlLmVxdWFsKEUuY2hpbGRyZW4ubGVuZ3RoLDEsIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCIpfSxqLnByb3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbihUKXt2YXIgRT10aGlzLl9iYXNlU3RhdGUsej1ULmZpbHRlcihmdW5jdGlvbihOKXtyZXR1''@;'; put 'put ''cm4gTiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3J9LHRoaXMpO1Q9VC5maWx0ZXIoZnVuY3Rpb24oTil7cmV0dXJuIShOIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcil9LHRoaXMpLDAhPT16Lmxlbmd0aCYmKHNlKG51bGw9PT1FLmNoaWxkcmVuKSxFLmNoaWxkcmVuPXosei5mb3JF''@;'; put 'put ''YWNoKGZ1bmN0aW9uKE4pe04uX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT1ULmxlbmd0aCYmKHNlKG51bGw9PT1FLmFyZ3MpLEUuYXJncz1ULEUucmV2ZXJzZUFyZ3M9VC5tYXAoZnVuY3Rpb24oTil7aWYoIm9iamVjdCIhPXR5cGVvZiBOfHxOLmNvbnN0cnVjdG9yIT09T2Jq''@;'; put 'put ''ZWN0KXJldHVybiBOO3ZhciBCPXt9O3JldHVybiBPYmplY3Qua2V5cyhOKS5mb3JFYWNoKGZ1bmN0aW9uKFope1o9PSgwfFopJiYoWnw9MCksQltOW1pdXT1afSksQn0pKX0sWyJfcGVla1RhZyIsIl9kZWNvZGVUYWciLCJfdXNlIiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNv''@;'; put 'put ''ZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlSW50IiwiX2RlY29kZUJvb2wiLCJfZGVjb2RlTGlzdCIsIl9lbmNvZGVDb21wb3NpdGUiLCJfZW5jb2RlU3RyIiwiX2VuY29kZU9iamlkIiwiX2VuY29kZVRpbWUiLCJfZW5jb2RlTnVsbCIsIl9lbmNvZGVJbnQiLCJfZW5jb2RlQm9vbCJd''@;'; put 'put ''LmZvckVhY2goZnVuY3Rpb24oRCl7ai5wcm90b3R5cGVbRF09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoRCsiIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICIrdGhpcy5fYmFzZVN0YXRlLmVuYyl9fSksTS5mb3JFYWNoKGZ1bmN0aW9uKEQpe2oucHJvdG90eXBlW0RdPWZ1bmN0''@;'; put 'put ''aW9uKCl7dmFyIEU9dGhpcy5fYmFzZVN0YXRlLHo9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gc2UobnVsbD09PUUudGFnKSxFLnRhZz1ELHRoaXMuX3VzZUFyZ3MoeiksdGhpc319KSxqLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oVCl7c2UoVCk7dmFyIEU9''@;'; put 'put ''dGhpcy5fYmFzZVN0YXRlO3JldHVybiBzZShudWxsPT09RS51c2UpLEUudXNlPVQsdGhpc30sai5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFzZVN0YXRlLm9wdGlvbmFsPSEwLHRoaXN9LGoucHJvdG90eXBlLmRlZj1mdW5jdGlvbihUKXt2YXIgRT10aGlz''@;'; put 'put ''Ll9iYXNlU3RhdGU7cmV0dXJuIHNlKG51bGw9PT1FLmRlZmF1bHQpLEUuZGVmYXVsdD1ULEUub3B0aW9uYWw9ITAsdGhpc30sai5wcm90b3R5cGUuZXhwbGljaXQ9ZnVuY3Rpb24oVCl7dmFyIEU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBzZShudWxsPT09RS5leHBsaWNpdCYmbnVsbD09PUUu''@;'; put 'put ''aW1wbGljaXQpLEUuZXhwbGljaXQ9VCx0aGlzfSxqLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbihUKXt2YXIgRT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIHNlKG51bGw9PT1FLmV4cGxpY2l0JiZudWxsPT09RS5pbXBsaWNpdCksRS5pbXBsaWNpdD1ULHRoaXN9LGoucHJvdG90eXBlLm9i''@;'; put 'put ''aj1mdW5jdGlvbigpe3ZhciBUPXRoaXMuX2Jhc2VTdGF0ZSxFPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFQub2JqPSEwLDAhPT1FLmxlbmd0aCYmdGhpcy5fdXNlQXJncyhFKSx0aGlzfSxqLnByb3RvdHlwZS5rZXk9ZnVuY3Rpb24oVCl7dmFyIEU9dGhp''@;'; put 'put ''cy5fYmFzZVN0YXRlO3JldHVybiBzZShudWxsPT09RS5rZXkpLEUua2V5PVQsdGhpc30sai5wcm90b3R5cGUuYW55PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VTdGF0ZS5hbnk9ITAsdGhpc30sai5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKFQpe3ZhciBFPXRoaXMuX2Jhc2VTdGF0''@;'; put 'put ''ZTtyZXR1cm4gc2UobnVsbD09PUUuY2hvaWNlKSxFLmNob2ljZT1ULHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMoVCkubWFwKGZ1bmN0aW9uKHope3JldHVybiBUW3pdfSkpLHRoaXN9LGoucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKFQpe3ZhciBFPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1''@;'; put 'put ''cm4gc2UobnVsbD09PUUudXNlKSxFLmNvbnRhaW5zPVQsdGhpc30sai5wcm90b3R5cGUuX2RlY29kZT1mdW5jdGlvbihULEUpe3ZhciB6PXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09ei5wYXJlbnQpcmV0dXJuIFQud3JhcFJlc3VsdCh6LmNoaWxkcmVuWzBdLl9kZWNvZGUoVCxFKSk7dmFy''@;'; put 'put ''IHEsTj16LmRlZmF1bHQsQj0hMCxaPW51bGw7aWYobnVsbCE9PXoua2V5JiYoWj1ULmVudGVyS2V5KHoua2V5KSksei5vcHRpb25hbCl7dmFyIFk9bnVsbDtpZihudWxsIT09ei5leHBsaWNpdD9ZPXouZXhwbGljaXQ6bnVsbCE9PXouaW1wbGljaXQ/WT16LmltcGxpY2l0Om51bGwhPT16LnRh''@;'; put 'put ''ZyYmKFk9ei50YWcpLG51bGwhPT1ZfHx6LmFueSl7aWYoQj10aGlzLl9wZWVrVGFnKFQsWSx6LmFueSksVC5pc0Vycm9yKEIpKXJldHVybiBCfWVsc2V7dmFyIFU9VC5zYXZlKCk7dHJ5e251bGw9PT16LmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKHoudGFnLFQsRSk6dGhpcy5fZGVjb2Rl''@;'; put 'put ''Q2hvaWNlKFQsRSksQj0hMH1jYXRjaHtCPSExfVQucmVzdG9yZShVKX19aWYoei5vYmomJkImJihxPVQuZW50ZXJPYmplY3QoKSksQil7aWYobnVsbCE9PXouZXhwbGljaXQpe3ZhciBKPXRoaXMuX2RlY29kZVRhZyhULHouZXhwbGljaXQpO2lmKFQuaXNFcnJvcihKKSlyZXR1cm4gSjtUPUp9''@;'; put 'put ''dmFyIGVlPVQub2Zmc2V0O2lmKG51bGw9PT16LnVzZSYmbnVsbD09PXouY2hvaWNlKXt6LmFueSYmKFU9VC5zYXZlKCkpO3ZhciByZT10aGlzLl9kZWNvZGVUYWcoVCxudWxsIT09ei5pbXBsaWNpdD96LmltcGxpY2l0OnoudGFnLHouYW55KTtpZihULmlzRXJyb3IocmUpKXJldHVybiByZTt6''@;'; put 'put ''LmFueT9OPVQucmF3KFUpOlQ9cmV9aWYoRSYmRS50cmFjayYmbnVsbCE9PXoudGFnJiZFLnRyYWNrKFQucGF0aCgpLGVlLFQubGVuZ3RoLCJ0YWdnZWQiKSxFJiZFLnRyYWNrJiZudWxsIT09ei50YWcmJkUudHJhY2soVC5wYXRoKCksVC5vZmZzZXQsVC5sZW5ndGgsImNvbnRlbnQiKSx6LmFu''@;'; put 'put ''eXx8KE49bnVsbD09PXouY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoei50YWcsVCxFKTp0aGlzLl9kZWNvZGVDaG9pY2UoVCxFKSksVC5pc0Vycm9yKE4pKXJldHVybiBOO2lmKCF6LmFueSYmbnVsbD09PXouY2hvaWNlJiZudWxsIT09ei5jaGlsZHJlbiYmei5jaGlsZHJlbi5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKGxlKXtsZS5fZGVjb2RlKFQsRSl9KSx6LmNvbnRhaW5zJiYoIm9jdHN0ciI9PT16LnRhZ3x8ImJpdHN0ciI9PT16LnRhZykpe3ZhciBpZT1uZXcgbShOKTtOPXRoaXMuX2dldFVzZSh6LmNvbnRhaW5zLFQuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKGllLEUpfX1yZXR1''@;'; put 'put ''cm4gei5vYmomJkImJihOPVQubGVhdmVPYmplY3QocSkpLG51bGw9PT16LmtleXx8bnVsbD09PU4mJiEwIT09Qj9udWxsIT09WiYmVC5leGl0S2V5KFopOlQubGVhdmVLZXkoWix6LmtleSxOKSxOfSxqLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYz1mdW5jdGlvbihULEUseil7dmFyIE49dGhp''@;'; put 'put ''cy5fYmFzZVN0YXRlO3JldHVybiJzZXEiPT09VHx8InNldCI9PT1UP251bGw6InNlcW9mIj09PVR8fCJzZXRvZiI9PT1UP3RoaXMuX2RlY29kZUxpc3QoRSxULE4uYXJnc1swXSx6KTovc3RyJC8udGVzdChUKT90aGlzLl9kZWNvZGVTdHIoRSxULHopOiJvYmppZCI9PT1UJiZOLmFyZ3M/dGhp''@;'; put 'put ''cy5fZGVjb2RlT2JqaWQoRSxOLmFyZ3NbMF0sTi5hcmdzWzFdLHopOiJvYmppZCI9PT1UP3RoaXMuX2RlY29kZU9iamlkKEUsbnVsbCxudWxsLHopOiJnZW50aW1lIj09PVR8fCJ1dGN0aW1lIj09PVQ/dGhpcy5fZGVjb2RlVGltZShFLFQseik6Im51bGxfIj09PVQ/dGhpcy5fZGVjb2RlTnVs''@;'; put 'put ''bChFLHopOiJib29sIj09PVQ/dGhpcy5fZGVjb2RlQm9vbChFLHopOiJvYmpEZXNjIj09PVQ/dGhpcy5fZGVjb2RlU3RyKEUsVCx6KToiaW50Ij09PVR8fCJlbnVtIj09PVQ/dGhpcy5fZGVjb2RlSW50KEUsTi5hcmdzJiZOLmFyZ3NbMF0seik6bnVsbCE9PU4udXNlP3RoaXMuX2dldFVzZShO''@;'; put 'put ''LnVzZSxFLl9yZXBvcnRlclN0YXRlLm9iaikuX2RlY29kZShFLHopOkUuZXJyb3IoInVua25vd24gdGFnOiAiK1QpfSxqLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKFQsRSl7dmFyIHo9dGhpcy5fYmFzZVN0YXRlO3JldHVybiB6LnVzZURlY29kZXI9dGhpcy5fdXNlKFQsRSksc2UobnVs''@;'; put 'put ''bD09PXoudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCksei51c2VEZWNvZGVyPXoudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmNoaWxkcmVuWzBdLHouaW1wbGljaXQhPT16LnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCYmKHoudXNlRGVjb2Rlcj16LnVzZURlY29kZXIuY2xvbmUo''@;'; put 'put ''KSx6LnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdD16LmltcGxpY2l0KSx6LnVzZURlY29kZXJ9LGoucHJvdG90eXBlLl9kZWNvZGVDaG9pY2U9ZnVuY3Rpb24oVCxFKXt2YXIgej10aGlzLl9iYXNlU3RhdGUsTj1udWxsLEI9ITE7cmV0dXJuIE9iamVjdC5rZXlzKHouY2hvaWNlKS5z''@;'; put 'put ''b21lKGZ1bmN0aW9uKFope3ZhciBZPVQuc2F2ZSgpLFU9ei5jaG9pY2VbWl07dHJ5e3ZhciBxPVUuX2RlY29kZShULEUpO2lmKFQuaXNFcnJvcihxKSlyZXR1cm4hMTtOPXt0eXBlOlosdmFsdWU6cX0sQj0hMH1jYXRjaHtyZXR1cm4gVC5yZXN0b3JlKFkpLCExfXJldHVybiEwfSx0aGlzKSxC''@;'; put 'put ''P046VC5lcnJvcigiQ2hvaWNlIG5vdCBtYXRjaGVkIil9LGoucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyPWZ1bmN0aW9uKFQpe3JldHVybiBuZXcgeChULHRoaXMucmVwb3J0ZXIpfSxqLnByb3RvdHlwZS5fZW5jb2RlPWZ1bmN0aW9uKFQsRSx6KXt2YXIgTj10aGlzLl9iYXNlU3Rh''@;'; put 'put ''dGU7aWYobnVsbD09PU4uZGVmYXVsdHx8Ti5kZWZhdWx0IT09VCl7dmFyIEI9dGhpcy5fZW5jb2RlVmFsdWUoVCxFLHopO2lmKHZvaWQgMCE9PUImJiF0aGlzLl9za2lwRGVmYXVsdChCLEUseikpcmV0dXJuIEJ9fSxqLnByb3RvdHlwZS5fZW5jb2RlVmFsdWU9ZnVuY3Rpb24oVCxFLHope3Zh''@;'; put 'put ''ciBOPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09Ti5wYXJlbnQpcmV0dXJuIE4uY2hpbGRyZW5bMF0uX2VuY29kZShULEV8fG5ldyBvZSk7dmFyIFU9bnVsbDtpZih0aGlzLnJlcG9ydGVyPUUsTi5vcHRpb25hbCYmdm9pZCAwPT09VCl7aWYobnVsbD09PU4uZGVmYXVsdClyZXR1cm47VD1O''@;'; put 'put ''LmRlZmF1bHR9dmFyIEI9bnVsbCxaPSExO2lmKE4uYW55KVU9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihUKTtlbHNlIGlmKE4uY2hvaWNlKVU9dGhpcy5fZW5jb2RlQ2hvaWNlKFQsRSk7ZWxzZSBpZihOLmNvbnRhaW5zKUI9dGhpcy5fZ2V0VXNlKE4uY29udGFpbnMseikuX2VuY29kZShU''@;'; put 'put ''LEUpLFo9ITA7ZWxzZSBpZihOLmNoaWxkcmVuKUI9Ti5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oZWUpe2lmKCJudWxsXyI9PT1lZS5fYmFzZVN0YXRlLnRhZylyZXR1cm4gZWUuX2VuY29kZShudWxsLEUsVCk7aWYobnVsbD09PWVlLl9iYXNlU3RhdGUua2V5KXJldHVybiBFLmVycm9yKCJDaGls''@;'; put 'put ''ZCBzaG91bGQgaGF2ZSBhIGtleSIpO3ZhciByZT1FLmVudGVyS2V5KGVlLl9iYXNlU3RhdGUua2V5KTtpZigib2JqZWN0IiE9dHlwZW9mIFQpcmV0dXJuIEUuZXJyb3IoIkNoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCIpO3ZhciBpZT1lZS5fZW5jb2RlKFRbZWUuX2Jh''@;'; put 'put ''c2VTdGF0ZS5rZXldLEUsVCk7cmV0dXJuIEUubGVhdmVLZXkocmUpLGllfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24oZWUpe3JldHVybiBlZX0pLEI9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihCKTtlbHNlIGlmKCJzZXFvZiI9PT1OLnRhZ3x8InNldG9mIj09PU4udGFnKXtpZighTi5hcmdz''@;'; put 'put ''fHwxIT09Ti5hcmdzLmxlbmd0aClyZXR1cm4gRS5lcnJvcigiVG9vIG1hbnkgYXJncyBmb3IgOiAiK04udGFnKTtpZighQXJyYXkuaXNBcnJheShUKSlyZXR1cm4gRS5lcnJvcigic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheSIpO3ZhciBZPXRoaXMuY2xvbmUoKTtZLl9iYXNl''@;'; put 'put ''U3RhdGUuaW1wbGljaXQ9bnVsbCxCPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVC5tYXAoZnVuY3Rpb24oZWUpe3JldHVybiB0aGlzLl9nZXRVc2UodGhpcy5fYmFzZVN0YXRlLmFyZ3NbMF0sVCkuX2VuY29kZShlZSxFKX0sWSkpfWVsc2UgbnVsbCE9PU4udXNlP1U9dGhpcy5fZ2V0VXNl''@;'; put 'put ''KE4udXNlLHopLl9lbmNvZGUoVCxFKTooQj10aGlzLl9lbmNvZGVQcmltaXRpdmUoTi50YWcsVCksWj0hMCk7aWYoIU4uYW55JiZudWxsPT09Ti5jaG9pY2Upe3ZhciBxPW51bGwhPT1OLmltcGxpY2l0P04uaW1wbGljaXQ6Ti50YWcsSj1udWxsPT09Ti5pbXBsaWNpdD8idW5pdmVyc2FsIjoi''@;'; put 'put ''Y29udGV4dCI7bnVsbD09PXE/bnVsbD09PU4udXNlJiZFLmVycm9yKCJUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAudXNlKCkiKTpudWxsPT09Ti51c2UmJihVPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShxLFosSixCKSl9cmV0dXJuIG51bGwhPT1OLmV4cGxpY2l0JiYoVT10aGlzLl9l''@;'; put 'put ''bmNvZGVDb21wb3NpdGUoTi5leHBsaWNpdCwhMSwiY29udGV4dCIsVSkpLFV9LGoucHJvdG90eXBlLl9lbmNvZGVDaG9pY2U9ZnVuY3Rpb24oVCxFKXt2YXIgej10aGlzLl9iYXNlU3RhdGUsTj16LmNob2ljZVtULnR5cGVdO3JldHVybiBOfHxzZSghMSxULnR5cGUrIiBub3QgZm91bmQgaW4g''@;'; put 'put ''IitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh6LmNob2ljZSkpKSxOLl9lbmNvZGUoVC52YWx1ZSxFKX0sai5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZT1mdW5jdGlvbihULEUpe3ZhciB6PXRoaXMuX2Jhc2VTdGF0ZTtpZigvc3RyJC8udGVzdChUKSlyZXR1cm4gdGhpcy5fZW5jb2Rl''@;'; put 'put ''U3RyKEUsVCk7aWYoIm9iamlkIj09PVQmJnouYXJncylyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoRSx6LnJldmVyc2VBcmdzWzBdLHouYXJnc1sxXSk7aWYoIm9iamlkIj09PVQpcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKEUsbnVsbCxudWxsKTtpZigiZ2VudGltZSI9PT1UfHwidXRjdGlt''@;'; put 'put ''ZSI9PT1UKXJldHVybiB0aGlzLl9lbmNvZGVUaW1lKEUsVCk7aWYoIm51bGxfIj09PVQpcmV0dXJuIHRoaXMuX2VuY29kZU51bGwoKTtpZigiaW50Ij09PVR8fCJlbnVtIj09PVQpcmV0dXJuIHRoaXMuX2VuY29kZUludChFLHouYXJncyYmei5yZXZlcnNlQXJnc1swXSk7aWYoImJvb2wiPT09''@;'; put 'put ''VClyZXR1cm4gdGhpcy5fZW5jb2RlQm9vbChFKTtpZigib2JqRGVzYyI9PT1UKXJldHVybiB0aGlzLl9lbmNvZGVTdHIoRSxUKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHRhZzogIitUKX0sai5wcm90b3R5cGUuX2lzTnVtc3RyPWZ1bmN0aW9uKFQpe3JldHVybi9eWzAtOSBdKiQv''@;'; put 'put ''LnRlc3QoVCl9LGoucHJvdG90eXBlLl9pc1ByaW50c3RyPWZ1bmN0aW9uKFQpe3JldHVybi9eW0EtWmEtejAtOSAnXChcKVwrLFwtXC5cLzo9XD9dKiQvLnRlc3QoVCl9fSw4NTY5NzooUWUsTWUsUik9Pnt2YXIgb2U9Uig3MTk5Myk7ZnVuY3Rpb24geChzZSl7dGhpcy5fcmVwb3J0ZXJTdGF0''@;'; put 'put ''ZT17b2JqOm51bGwscGF0aDpbXSxvcHRpb25zOnNlfHx7fSxlcnJvcnM6W119fWZ1bmN0aW9uIG0oc2UsTSl7dGhpcy5wYXRoPXNlLHRoaXMucmV0aHJvdyhNKX1NZS5hPXgseC5wcm90b3R5cGUuaXNFcnJvcj1mdW5jdGlvbihNKXtyZXR1cm4gTSBpbnN0YW5jZW9mIG19LHgucHJvdG90eXBl''@;'; put 'put ''LnNhdmU9ZnVuY3Rpb24oKXt2YXIgTT10aGlzLl9yZXBvcnRlclN0YXRlO3JldHVybntvYmo6TS5vYmoscGF0aExlbjpNLnBhdGgubGVuZ3RofX0seC5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbihNKXt2YXIgTz10aGlzLl9yZXBvcnRlclN0YXRlO08ub2JqPU0ub2JqLE8ucGF0aD1PLnBh''@;'; put 'put ''dGguc2xpY2UoMCxNLnBhdGhMZW4pfSx4LnByb3RvdHlwZS5lbnRlcktleT1mdW5jdGlvbihNKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLnB1c2goTSl9LHgucHJvdG90eXBlLmV4aXRLZXk9ZnVuY3Rpb24oTSl7dmFyIE89dGhpcy5fcmVwb3J0ZXJTdGF0ZTtPLnBhdGg9Ty5w''@;'; put 'put ''YXRoLnNsaWNlKDAsTS0xKX0seC5wcm90b3R5cGUubGVhdmVLZXk9ZnVuY3Rpb24oTSxPLEkpe3ZhciBqPXRoaXMuX3JlcG9ydGVyU3RhdGU7dGhpcy5leGl0S2V5KE0pLG51bGwhPT1qLm9iaiYmKGoub2JqW09dPUkpfSx4LnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''X3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCIvIil9LHgucHJvdG90eXBlLmVudGVyT2JqZWN0PWZ1bmN0aW9uKCl7dmFyIE09dGhpcy5fcmVwb3J0ZXJTdGF0ZSxPPU0ub2JqO3JldHVybiBNLm9iaj17fSxPfSx4LnByb3RvdHlwZS5sZWF2ZU9iamVjdD1mdW5jdGlvbihNKXt2YXIgTz10aGlz''@;'; put 'put ''Ll9yZXBvcnRlclN0YXRlLEk9Ty5vYmo7cmV0dXJuIE8ub2JqPU0sSX0seC5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oTSl7dmFyIE8sST10aGlzLl9yZXBvcnRlclN0YXRlLGo9TSBpbnN0YW5jZW9mIG07aWYoTz1qP006bmV3IG0oSS5wYXRoLm1hcChmdW5jdGlvbihHKXtyZXR1cm4iWyIr''@;'; put 'put ''SlNPTi5zdHJpbmdpZnkoRykrIl0ifSkuam9pbigiIiksTS5tZXNzYWdlfHxNLE0uc3RhY2spLCFJLm9wdGlvbnMucGFydGlhbCl0aHJvdyBPO3JldHVybiBqfHxJLmVycm9ycy5wdXNoKE8pLE99LHgucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24oTSl7dmFyIE89dGhpcy5fcmVwb3J0''@;'; put 'put ''ZXJTdGF0ZTtyZXR1cm4gTy5vcHRpb25zLnBhcnRpYWw/e3Jlc3VsdDp0aGlzLmlzRXJyb3IoTSk/bnVsbDpNLGVycm9yczpPLmVycm9yc306TX0sb2UobSxFcnJvciksbS5wcm90b3R5cGUucmV0aHJvdz1mdW5jdGlvbihNKXtpZih0aGlzLm1lc3NhZ2U9TSsiIGF0OiAiKyh0aGlzLnBhdGh8''@;'; put 'put ''fCIoc2hhbGxvdykiKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxtKSwhdGhpcy5zdGFjayl0cnl7dGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSl9Y2F0Y2goTyl7dGhpcy5zdGFjaz1PLnN0YWNrfXJldHVybiB0aGlzfX0sMzYyODM6''@;'; put 'put ''KFFlLE1lLFIpPT57dmFyIG9lPVIoNDc3NDApO01lLnRhZ0NsYXNzPXswOiJ1bml2ZXJzYWwiLDE6ImFwcGxpY2F0aW9uIiwyOiJjb250ZXh0IiwzOiJwcml2YXRlIn0sTWUudGFnQ2xhc3NCeU5hbWU9b2UuX3JldmVyc2UoTWUudGFnQ2xhc3MpLE1lLnRhZz17MDoiZW5kIiwxOiJib29sIiwy''@;'; put 'put ''OiJpbnQiLDM6ImJpdHN0ciIsNDoib2N0c3RyIiw1OiJudWxsXyIsNjoib2JqaWQiLDc6Im9iakRlc2MiLDg6ImV4dGVybmFsIiw5OiJyZWFsIiwxMDoiZW51bSIsMTE6ImVtYmVkIiwxMjoidXRmOHN0ciIsMTM6InJlbGF0aXZlT2lkIiwxNjoic2VxIiwxNzoic2V0IiwxODoibnVtc3RyIiwx''@;'; put 'put ''OToicHJpbnRzdHIiLDIwOiJ0NjFzdHIiLDIxOiJ2aWRlb3N0ciIsMjI6ImlhNXN0ciIsMjM6InV0Y3RpbWUiLDI0OiJnZW50aW1lIiwyNToiZ3JhcGhzdHIiLDI2OiJpc282NDZzdHIiLDI3OiJnZW5zdHIiLDI4OiJ1bmlzdHIiLDI5OiJjaGFyc3RyIiwzMDoiYm1wc3RyIn0sTWUudGFnQnlO''@;'; put 'put ''YW1lPW9lLl9yZXZlcnNlKE1lLnRhZyl9LDQ3NzQwOihRZSxNZSxSKT0+e3ZhciBvZT1NZTtvZS5fcmV2ZXJzZT1mdW5jdGlvbihtKXt2YXIgc2U9e307cmV0dXJuIE9iamVjdC5rZXlzKG0pLmZvckVhY2goZnVuY3Rpb24oTSl7KDB8TSk9PU0mJihNfD0wKSxzZVttW01dXT1NfSksc2V9LG9l''@;'; put 'put ''LmRlcj1SKDM2MjgzKX0sNTU5NDE6KFFlLE1lLFIpPT57dmFyIG9lPVIoNzE5OTMpLHg9Uig0OTYwOSksbT14LmJhc2Usc2U9eC5iaWdudW0sTT14LmNvbnN0YW50cy5kZXI7ZnVuY3Rpb24gTyhEKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9RC5uYW1lLHRoaXMuZW50aXR5PUQsdGhpcy50''@;'; put 'put ''cmVlPW5ldyBJLHRoaXMudHJlZS5faW5pdChELmJvZHkpfWZ1bmN0aW9uIEkoRCl7bS5Ob2RlLmNhbGwodGhpcywiZGVyIixEKX1mdW5jdGlvbiBqKEQsVCl7dmFyIEU9RC5yZWFkVUludDgoVCk7aWYoRC5pc0Vycm9yKEUpKXJldHVybiBFO3ZhciB6PU0udGFnQ2xhc3NbRT4+Nl0sTj0hKDMy''@;'; put 'put ''JkUpO2lmKDMxJn5FKUUmPTMxO2Vsc2V7dmFyIEI9RTtmb3IoRT0wOyEoMTI4Jn5CKTspe2lmKEI9RC5yZWFkVUludDgoVCksRC5pc0Vycm9yKEIpKXJldHVybiBCO0U8PD03LEV8PTEyNyZCfX1yZXR1cm57Y2xzOnoscHJpbWl0aXZlOk4sdGFnOkUsdGFnU3RyOk0udGFnW0VdfX1mdW5jdGlv''@;'; put 'put ''biBHKEQsVCxFKXt2YXIgej1ELnJlYWRVSW50OChFKTtpZihELmlzRXJyb3IoeikpcmV0dXJuIHo7aWYoIVQmJjEyOD09PXopcmV0dXJuIG51bGw7aWYoISgxMjgmeikpcmV0dXJuIHo7dmFyIE49MTI3Jno7aWYoTj40KXJldHVybiBELmVycm9yKCJsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25n''@;'; put 'put ''Iik7ej0wO2Zvcih2YXIgQj0wO0I8TjtCKyspe3o8PD04O3ZhciBaPUQucmVhZFVJbnQ4KEUpO2lmKEQuaXNFcnJvcihaKSlyZXR1cm4gWjt6fD1afXJldHVybiB6fVFlLmV4cG9ydHM9TyxPLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gVCBpbnN0YW5jZW9mIG0uRGVj''@;'; put 'put ''b2RlckJ1ZmZlcnx8KFQ9bmV3IG0uRGVjb2RlckJ1ZmZlcihULEUpKSx0aGlzLnRyZWUuX2RlY29kZShULEUpfSxvZShJLG0uTm9kZSksSS5wcm90b3R5cGUuX3BlZWtUYWc9ZnVuY3Rpb24oVCxFLHope2lmKFQuaXNFbXB0eSgpKXJldHVybiExO3ZhciBOPVQuc2F2ZSgpLEI9aihULCdGYWls''@;'; put 'put ''ZWQgdG8gcGVlayB0YWc6ICInK0UrJyInKTtyZXR1cm4gVC5pc0Vycm9yKEIpP0I6KFQucmVzdG9yZShOKSxCLnRhZz09PUV8fEIudGFnU3RyPT09RXx8Qi50YWdTdHIrIm9mIj09PUV8fHopfSxJLnByb3RvdHlwZS5fZGVjb2RlVGFnPWZ1bmN0aW9uKFQsRSx6KXt2YXIgTj1qKFQsJ0ZhaWxl''@;'; put 'put ''ZCB0byBkZWNvZGUgdGFnIG9mICInK0UrJyInKTtpZihULmlzRXJyb3IoTikpcmV0dXJuIE47dmFyIEI9RyhULE4ucHJpbWl0aXZlLCdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiAiJytFKyciJyk7aWYoVC5pc0Vycm9yKEIpKXJldHVybiBCO2lmKCF6JiZOLnRhZyE9PUUmJk4udGFnU3RyIT09''@;'; put 'put ''RSYmTi50YWdTdHIrIm9mIiE9PUUpcmV0dXJuIFQuZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6ICInK0UrJyInKTtpZihOLnByaW1pdGl2ZXx8bnVsbCE9PUIpcmV0dXJuIFQuc2tpcChCLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogIicrRSsnIicpO3ZhciBaPVQuc2F2ZSgpLFk9dGhp''@;'; put 'put ''cy5fc2tpcFVudGlsRW5kKFQsJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6ICInK3RoaXMudGFnKyciJyk7cmV0dXJuIFQuaXNFcnJvcihZKT9ZOihCPVQub2Zmc2V0LVoub2Zmc2V0LFQucmVzdG9yZShaKSxULnNraXAoQiwnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6''@;'; put 'put ''ICInK0UrJyInKSl9LEkucHJvdG90eXBlLl9za2lwVW50aWxFbmQ9ZnVuY3Rpb24oVCxFKXtmb3IoOzspe3ZhciB6PWooVCxFKTtpZihULmlzRXJyb3IoeikpcmV0dXJuIHo7dmFyIEIsTj1HKFQsei5wcmltaXRpdmUsRSk7aWYoVC5pc0Vycm9yKE4pKXJldHVybiBOO2lmKEI9ei5wcmltaXRp''@;'; put 'put ''dmV8fG51bGwhPT1OP1Quc2tpcChOKTp0aGlzLl9za2lwVW50aWxFbmQoVCxFKSxULmlzRXJyb3IoQikpcmV0dXJuIEI7aWYoImVuZCI9PT16LnRhZ1N0cilicmVha319LEkucHJvdG90eXBlLl9kZWNvZGVMaXN0PWZ1bmN0aW9uKFQsRSx6LE4pe2Zvcih2YXIgQj1bXTshVC5pc0VtcHR5KCk7''@;'; put 'put ''KXt2YXIgWj10aGlzLl9wZWVrVGFnKFQsImVuZCIpO2lmKFQuaXNFcnJvcihaKSlyZXR1cm4gWjt2YXIgWT16LmRlY29kZShULCJkZXIiLE4pO2lmKFQuaXNFcnJvcihZKSYmWilicmVhaztCLnB1c2goWSl9cmV0dXJuIEJ9LEkucHJvdG90eXBlLl9kZWNvZGVTdHI9ZnVuY3Rpb24oVCxFKXtp''@;'; put 'put ''ZigiYml0c3RyIj09PUUpe3ZhciB6PVQucmVhZFVJbnQ4KCk7cmV0dXJuIFQuaXNFcnJvcih6KT96Ont1bnVzZWQ6eixkYXRhOlQucmF3KCl9fWlmKCJibXBzdHIiPT09RSl7dmFyIE49VC5yYXcoKTtpZihOLmxlbmd0aCUyPT0xKXJldHVybiBULmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcg''@;'; put 'put ''dHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCIpO2Zvcih2YXIgQj0iIixaPTA7WjxOLmxlbmd0aC8yO1orKylCKz1TdHJpbmcuZnJvbUNoYXJDb2RlKE4ucmVhZFVJbnQxNkJFKDIqWikpO3JldHVybiBCfWlmKCJudW1zdHIiPT09RSl7dmFyIFk9VC5yYXcoKS50b1N0cmluZygiYXNjaWki''@;'; put 'put ''KTtyZXR1cm4gdGhpcy5faXNOdW1zdHIoWSk/WTpULmVycm9yKCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMiKX1pZigib2N0c3RyIj09PUUpcmV0dXJuIFQucmF3KCk7aWYoIm9iakRlc2MiPT09RSlyZXR1cm4gVC5yYXcoKTtpZigicHJp''@;'; put 'put ''bnRzdHIiPT09RSl7dmFyIFU9VC5yYXcoKS50b1N0cmluZygiYXNjaWkiKTtyZXR1cm4gdGhpcy5faXNQcmludHN0cihVKT9VOlQuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIil9cmV0dXJuL3N0ciQvLnRlc3QoRSk/VC5y''@;'; put 'put ''YXcoKS50b1N0cmluZygpOlQuZXJyb3IoIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAiK0UrIiB1bnN1cHBvcnRlZCIpfSxJLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQ9ZnVuY3Rpb24oVCxFLHope2Zvcih2YXIgTixCPVtdLFo9MDshVC5pc0VtcHR5KCk7KXt2YXIgWT1ULnJlYWRVSW50OCgp''@;'; put 'put ''O1o8PD03LFp8PTEyNyZZLDEyOCZZfHwoQi5wdXNoKFopLFo9MCl9aWYoMTI4JlkmJkIucHVzaChaKSxOPXo/QjpbQlswXS80MHwwLEJbMF0lNDBdLmNvbmNhdChCLnNsaWNlKDEpKSxFKXt2YXIgSj1FW04uam9pbigiICIpXTt2b2lkIDA9PT1KJiYoSj1FW04uam9pbigiLiIpXSksdm9pZCAw''@;'; put 'put ''IT09SiYmKE49Sil9cmV0dXJuIE59LEkucHJvdG90eXBlLl9kZWNvZGVUaW1lPWZ1bmN0aW9uKFQsRSl7dmFyIHo9VC5yYXcoKS50b1N0cmluZygpO2lmKCJnZW50aW1lIj09PUUpdmFyIE49MHx6LnNsaWNlKDAsNCksQj0wfHouc2xpY2UoNCw2KSxaPTB8ei5zbGljZSg2LDgpLFk9MHx6LnNs''@;'; put 'put ''aWNlKDgsMTApLFU9MHx6LnNsaWNlKDEwLDEyKSxxPTB8ei5zbGljZSgxMiwxNCk7ZWxzZXtpZigidXRjdGltZSIhPT1FKXJldHVybiBULmVycm9yKCJEZWNvZGluZyAiK0UrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7Tj0wfHouc2xpY2UoMCwyKSxCPTB8ei5zbGljZSgyLDQpLFo9''@;'; put 'put ''MHx6LnNsaWNlKDQsNiksWT0wfHouc2xpY2UoNiw4KSxVPTB8ei5zbGljZSg4LDEwKSxxPTB8ei5zbGljZSgxMCwxMiksTj1OPDcwPzJlMytOOjE5MDArTn1yZXR1cm4gRGF0ZS5VVEMoTixCLTEsWixZLFUscSwwKX0sSS5wcm90b3R5cGUuX2RlY29kZU51bGw9ZnVuY3Rpb24oVCl7cmV0dXJu''@;'; put 'put ''IG51bGx9LEkucHJvdG90eXBlLl9kZWNvZGVCb29sPWZ1bmN0aW9uKFQpe3ZhciBFPVQucmVhZFVJbnQ4KCk7cmV0dXJuIFQuaXNFcnJvcihFKT9FOjAhPT1FfSxJLnByb3RvdHlwZS5fZGVjb2RlSW50PWZ1bmN0aW9uKFQsRSl7dmFyIHo9VC5yYXcoKSxOPW5ldyBzZSh6KTtyZXR1cm4gRSYm''@;'; put 'put ''KE49RVtOLnRvU3RyaW5nKDEwKV18fE4pLE59LEkucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oVCxFKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgVCYmKFQ9VChFKSksVC5fZ2V0RGVjb2RlcigiZGVyIikudHJlZX19LDkxNTU4OihRZSxNZSxSKT0+e3ZhciBvZT1NZTtvZS5kZXI9Uig1NTk0''@;'; put 'put ''MSksb2UucGVtPVIoNTkzMTYpfSw1OTMxNjooUWUsTWUsUik9Pnt2YXIgb2U9Uig3MTk5MykseD1SKDgzODM4KS5CdWZmZXIsbT1SKDU1OTQxKTtmdW5jdGlvbiBzZShNKXttLmNhbGwodGhpcyxNKSx0aGlzLmVuYz0icGVtIn1vZShzZSxtKSxRZS5leHBvcnRzPXNlLHNlLnByb3RvdHlwZS5k''@;'; put 'put ''ZWNvZGU9ZnVuY3Rpb24oTyxJKXtmb3IodmFyIGo9Ty50b1N0cmluZygpLnNwbGl0KC9bXHJcbl0rL2cpLEc9SS5sYWJlbC50b1VwcGVyQ2FzZSgpLEQ9L14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvLFQ9LTEsRT0tMSx6PTA7ejxqLmxlbmd0aDt6Kyspe3ZhciBOPWpbel0ubWF0''@;'; put 'put ''Y2goRCk7aWYobnVsbCE9PU4mJk5bMl09PT1HKXtpZigtMSE9PVQpe2lmKCJFTkQiIT09TlsxXSlicmVhaztFPXo7YnJlYWt9aWYoIkJFR0lOIiE9PU5bMV0pYnJlYWs7VD16fX1pZigtMT09PVR8fC0xPT09RSl0aHJvdyBuZXcgRXJyb3IoIlBFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICIr''@;'; put 'put ''Ryk7dmFyIEI9ai5zbGljZShUKzEsRSkuam9pbigiIik7Qi5yZXBsYWNlKC9bXmEtejAtOVwrXC89XSsvZ2ksIiIpO3ZhciBaPW5ldyB4KEIsImJhc2U2NCIpO3JldHVybiBtLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLFosSSl9fSw3MjE5MzooUWUsTWUsUik9Pnt2YXIgb2U9Uig3MTk5''@;'; put 'put ''MykseD1SKDgzODM4KS5CdWZmZXIsbT1SKDQ5NjA5KSxzZT1tLmJhc2UsTT1tLmNvbnN0YW50cy5kZXI7ZnVuY3Rpb24gTyhEKXt0aGlzLmVuYz0iZGVyIix0aGlzLm5hbWU9RC5uYW1lLHRoaXMuZW50aXR5PUQsdGhpcy50cmVlPW5ldyBJLHRoaXMudHJlZS5faW5pdChELmJvZHkpfWZ1bmN0''@;'; put 'put ''aW9uIEkoRCl7c2UuTm9kZS5jYWxsKHRoaXMsImRlciIsRCl9ZnVuY3Rpb24gaihEKXtyZXR1cm4gRDwxMD8iMCIrRDpEfVFlLmV4cG9ydHM9TyxPLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoVCxFKS5qb2luKCl9LG9lKEksc2UuTm9k''@;'; put 'put ''ZSksSS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZT1mdW5jdGlvbihULEUseixOKXt2YXIgVSxCPWZ1bmN0aW9uIEcoRCxULEUseil7dmFyIE47aWYoInNlcW9mIj09PUQ/RD0ic2VxIjoic2V0b2YiPT09RCYmKEQ9InNldCIpLE0udGFnQnlOYW1lLmhhc093blByb3BlcnR5KEQpKU49TS50''@;'; put 'put ''YWdCeU5hbWVbRF07ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIER8fCgwfEQpIT09RClyZXR1cm4gei5lcnJvcigiVW5rbm93biB0YWc6ICIrRCk7Tj1EfXJldHVybiBOPj0zMT96LmVycm9yKCJNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQiKTooVHx8KE58PTMyKSxOfD1N''@;'; put 'put ''LnRhZ0NsYXNzQnlOYW1lW0V8fCJ1bml2ZXJzYWwiXTw8Nil9KFQsRSx6LHRoaXMucmVwb3J0ZXIpO2lmKE4ubGVuZ3RoPDEyOClyZXR1cm4oVT1uZXcgeCgyKSlbMF09QixVWzFdPU4ubGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW1UsTl0pO2Zvcih2YXIgWj0xLFk9Ti5sZW5n''@;'; put 'put ''dGg7WT49MjU2O1k+Pj04KVorKzsoVT1uZXcgeCgyK1opKVswXT1CLFVbMV09MTI4fFosWT0xK1o7Zm9yKHZhciBxPU4ubGVuZ3RoO3E+MDtZLS0scT4+PTgpVVtZXT0yNTUmcTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbVSxOXSl9LEkucHJvdG90eXBlLl9lbmNvZGVTdHI9''@;'; put 'put ''ZnVuY3Rpb24oVCxFKXtpZigiYml0c3RyIj09PUUpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzB8VC51bnVzZWQsVC5kYXRhXSk7aWYoImJtcHN0ciI9PT1FKXtmb3IodmFyIHo9bmV3IHgoMipULmxlbmd0aCksTj0wO048VC5sZW5ndGg7TisrKXoud3JpdGVVSW50MTZCRShU''@;'; put 'put ''LmNoYXJDb2RlQXQoTiksMipOKTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih6KX1yZXR1cm4ibnVtc3RyIj09PUU/dGhpcy5faXNOdW1zdHIoVCk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihUKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlw''@;'; put 'put ''ZTogbnVtc3RyIHN1cHBvcnRzIG9ubHkgZGlnaXRzIGFuZCBzcGFjZSIpOiJwcmludHN0ciI9PT1FP3RoaXMuX2lzUHJpbnRzdHIoVCk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihUKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3Vw''@;'; put 'put ''cG9ydHMgb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCBwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgcXVlc3Rp''@;'; put 'put ''b24gbWFyayIpOi9zdHIkLy50ZXN0KEUpfHwib2JqRGVzYyI9PT1FP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVCk6dGhpcy5yZXBvcnRlci5lcnJvcigiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICIrRSsiIHVuc3VwcG9ydGVkIil9LEkucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5j''@;'; put 'put ''dGlvbihULEUseil7aWYoInN0cmluZyI9PXR5cGVvZiBUKXtpZighRSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigic3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCIpO2lmKCFFLmhhc093blByb3BlcnR5KFQpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9y''@;'; put 'put ''KCJvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCIpO1Q9RVtUXS5zcGxpdCgvW1xzXC5dKy9nKTtmb3IodmFyIE49MDtOPFQubGVuZ3RoO04rKylUW05dfD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJheShUKSlmb3IoVD1ULnNsaWNlKCksTj0wO048VC5sZW5ndGg7TisrKVRbTl18PTA7aWYo''@;'; put 'put ''IUFycmF5LmlzQXJyYXkoVCkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIm9iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsIGdvdDogIitKU09OLnN0cmluZ2lmeShUKSk7aWYoIXope2lmKFRbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCJTZWNv''@;'; put 'put ''bmQgb2JqaWQgaWRlbnRpZmllciBPT0IiKTtULnNwbGljZSgwLDIsNDAqVFswXStUWzFdKX12YXIgQj0wO2ZvcihOPTA7TjxULmxlbmd0aDtOKyspe3ZhciBaPVRbTl07Zm9yKEIrKztaPj0xMjg7Wj4+PTcpQisrfXZhciBZPW5ldyB4KEIpLFU9WS5sZW5ndGgtMTtmb3IoTj1ULmxlbmd0aC0x''@;'; put 'put ''O04+PTA7Ti0tKWZvcihZW1UtLV09MTI3JihaPVRbTl0pOyhaPj49Nyk+MDspWVtVLS1dPTEyOHwxMjcmWjtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihZKX0sSS5wcm90b3R5cGUuX2VuY29kZVRpbWU9ZnVuY3Rpb24oVCxFKXt2YXIgeixOPW5ldyBEYXRlKFQpO3JldHVybiJn''@;'; put 'put ''ZW50aW1lIj09PUU/ej1baihOLmdldEZ1bGxZZWFyKCkpLGooTi5nZXRVVENNb250aCgpKzEpLGooTi5nZXRVVENEYXRlKCkpLGooTi5nZXRVVENIb3VycygpKSxqKE4uZ2V0VVRDTWludXRlcygpKSxqKE4uZ2V0VVRDU2Vjb25kcygpKSwiWiJdLmpvaW4oIiIpOiJ1dGN0aW1lIj09PUU/ej1b''@;'; put 'put ''aihOLmdldEZ1bGxZZWFyKCklMTAwKSxqKE4uZ2V0VVRDTW9udGgoKSsxKSxqKE4uZ2V0VVRDRGF0ZSgpKSxqKE4uZ2V0VVRDSG91cnMoKSksaihOLmdldFVUQ01pbnV0ZXMoKSksaihOLmdldFVUQ1NlY29uZHMoKSksIloiXS5qb2luKCIiKTp0aGlzLnJlcG9ydGVyLmVycm9yKCJFbmNvZGlu''@;'; put 'put ''ZyAiK0UrIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IiksdGhpcy5fZW5jb2RlU3RyKHosIm9jdHN0ciIpfSxJLnByb3RvdHlwZS5fZW5jb2RlTnVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCIiKX0sSS5wcm90b3R5cGUuX2VuY29kZUludD1mdW5j''@;'; put 'put ''dGlvbihULEUpe2lmKCJzdHJpbmciPT10eXBlb2YgVCl7aWYoIUUpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoIlN0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAiKTtpZighRS5oYXNPd25Qcm9wZXJ0eShUKSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcigi''@;'; put 'put ''VmFsdWVzIG1hcCBkb2Vzbid0IGNvbnRhaW46ICIrSlNPTi5zdHJpbmdpZnkoVCkpO1Q9RVtUXX1pZigibnVtYmVyIiE9dHlwZW9mIFQmJiF4LmlzQnVmZmVyKFQpKXt2YXIgej1ULnRvQXJyYXkoKTshVC5zaWduJiYxMjgmelswXSYmei51bnNoaWZ0KDApLFQ9bmV3IHgoeil9aWYoeC5pc0J1''@;'; put 'put ''ZmZlcihUKSl7dmFyIE49VC5sZW5ndGg7MD09PVQubGVuZ3RoJiZOKys7dmFyIFo9bmV3IHgoTik7cmV0dXJuIFQuY29weShaKSwwPT09VC5sZW5ndGgmJihaWzBdPTApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWil9aWYoVDwxMjgpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZm''@;'; put 'put ''ZXIoVCk7aWYoVDwyNTYpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsVF0pO049MTtmb3IodmFyIEI9VDtCPj0yNTY7Qj4+PTgpTisrO2ZvcihCPShaPW5ldyBBcnJheShOKSkubGVuZ3RoLTE7Qj49MDtCLS0pWltCXT0yNTUmVCxUPj49ODtyZXR1cm4gMTI4JlpbMF0mJlou''@;'; put 'put ''dW5zaGlmdCgwKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG5ldyB4KFopKX0sSS5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24oVCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoVD8yNTU6MCl9LEkucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24oVCxFKXtyZXR1cm4i''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgVCYmKFQ9VChFKSksVC5fZ2V0RW5jb2RlcigiZGVyIikudHJlZX0sSS5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uKFQsRSx6KXt2YXIgQixOPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09Ti5kZWZhdWx0KXJldHVybiExO3ZhciBaPVQuam9pbigp''@;'; put 'put ''O2lmKHZvaWQgMD09PU4uZGVmYXVsdEJ1ZmZlciYmKE4uZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShOLmRlZmF1bHQsRSx6KS5qb2luKCkpLFoubGVuZ3RoIT09Ti5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4hMTtmb3IoQj0wO0I8Wi5sZW5ndGg7QisrKWlmKFpbQl0hPT1O''@;'; put 'put ''LmRlZmF1bHRCdWZmZXJbQl0pcmV0dXJuITE7cmV0dXJuITB9fSwyMjcxNDooUWUsTWUsUik9Pnt2YXIgb2U9TWU7b2UuZGVyPVIoNzIxOTMpLG9lLnBlbT1SKDI0ODE2KX0sMjQ4MTY6KFFlLE1lLFIpPT57dmFyIG9lPVIoNzE5OTMpLHg9Uig3MjE5Myk7ZnVuY3Rpb24gbShzZSl7eC5jYWxs''@;'; put 'put ''KHRoaXMsc2UpLHRoaXMuZW5jPSJwZW0ifW9lKG0seCksUWUuZXhwb3J0cz1tLG0ucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbihNLE8pe2Zvcih2YXIgaj14LnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLE0pLnRvU3RyaW5nKCJiYXNlNjQiKSxHPVsiLS0tLS1CRUdJTiAiK08ubGFiZWwr''@;'; put 'put ''Ii0tLS0tIl0sRD0wO0Q8ai5sZW5ndGg7RCs9NjQpRy5wdXNoKGouc2xpY2UoRCxEKzY0KSk7cmV0dXJuIEcucHVzaCgiLS0tLS1FTkQgIitPLmxhYmVsKyItLS0tLSIpLEcuam9pbigiXG4iKX19LDk2ODY3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSx4KXsidXNlIHN0cmljdCI7''@;'; put 'put ''ZnVuY3Rpb24gbShXLGIpe2lmKCFXKXRocm93IG5ldyBFcnJvcihifHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIHNlKFcsYil7Vy5zdXBlcl89Yjt2YXIgQT1mdW5jdGlvbigpe307QS5wcm90b3R5cGU9Yi5wcm90b3R5cGUsVy5wcm90b3R5cGU9bmV3IEEsVy5wcm90b3R5cGUuY29u''@;'; put 'put ''c3RydWN0b3I9V31mdW5jdGlvbiBNKFcsYixBKXtpZihNLmlzQk4oVykpcmV0dXJuIFc7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PVcmJigoImxlIj09PWJ8fCJiZSI9PT1iKSYmKEE9YixiPTEwKSx0aGlzLl9pbml0''@;'; put 'put ''KFd8fDAsYnx8MTAsQXx8ImJlIikpfXZhciBPOyJvYmplY3QiPT10eXBlb2Ygb2U/b2UuZXhwb3J0cz1NOnguQk49TSxNLkJOPU0sTS53b3JkU2l6ZT0yNjt0cnl7Tz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6Uig3ODk4MikuQnVm''@;'; put 'put ''ZmVyfWNhdGNoe31mdW5jdGlvbiBJKFcsYil7dmFyIEE9Vy5jaGFyQ29kZUF0KGIpO3JldHVybiBBPj02NSYmQTw9NzA/QS01NTpBPj05NyYmQTw9MTAyP0EtODc6QS00OCYxNX1mdW5jdGlvbiBqKFcsYixBKXt2YXIgRj1JKFcsQSk7cmV0dXJuIEEtMT49YiYmKEZ8PUkoVyxBLTEpPDw0KSxG''@;'; put 'put ''fWZ1bmN0aW9uIEcoVyxiLEEsRil7Zm9yKHZhciBIPTAsZz1NYXRoLm1pbihXLmxlbmd0aCxBKSxDPWI7QzxnO0MrKyl7dmFyIGs9Vy5jaGFyQ29kZUF0KEMpLTQ4O0gqPUYsSCs9az49NDk/ay00OSsxMDprPj0xNz9rLTE3KzEwOmt9cmV0dXJuIEh9TS5pc0JOPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biBiIGluc3RhbmNlb2YgTXx8bnVsbCE9PWImJiJvYmplY3QiPT10eXBlb2YgYiYmYi5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PU0ud29yZFNpemUmJkFycmF5LmlzQXJyYXkoYi53b3Jkcyl9LE0ubWF4PWZ1bmN0aW9uKGIsQSl7cmV0dXJuIGIuY21wKEEpPjA/YjpBfSxNLm1pbj1mdW5jdGlv''@;'; put 'put ''bihiLEEpe3JldHVybiBiLmNtcChBKTwwP2I6QX0sTS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oYixBLEYpe2lmKCJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdE51bWJlcihiLEEsRik7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXJldHVybiB0aGlzLl9pbml0QXJyYXkoYixB''@;'; put 'put ''LEYpOyJoZXgiPT09QSYmKEE9MTYpLG0oQT09PSgwfEEpJiZBPj0yJiZBPD0zNik7dmFyIEg9MDsiLSI9PT0oYj1iLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpKVswXSYmKEgrKyx0aGlzLm5lZ2F0aXZlPTEpLEg8Yi5sZW5ndGgmJigxNj09PUE/dGhpcy5fcGFyc2VIZXgoYixILEYp''@;'; put 'put ''Oih0aGlzLl9wYXJzZUJhc2UoYixBLEgpLCJsZSI9PT1GJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQSxGKSkpfSxNLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihiLEEsRil7YjwwJiYodGhpcy5uZWdhdGl2ZT0xLGI9LWIpLGI8NjcxMDg4NjQ/KHRoaXMud29yZHM9''@;'; put 'put ''WzY3MTA4ODYzJmJdLHRoaXMubGVuZ3RoPTEpOmI8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToobShiPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2''@;'; put 'put ''NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09RiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEEsRil9LE0ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oYixBLEYpe2lmKG0oIm51bWJlciI9PXR5cGVvZiBiLmxlbmd0aCksYi5sZW5ndGg8PTApcmV0dXJuIHRo''@;'; put 'put ''aXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoYi5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgSD0wO0g8dGhpcy5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09MDt2YXIgZyxDLGs9MDtpZigiYmUi''@;'; put 'put ''PT09Rilmb3IoSD1iLmxlbmd0aC0xLGc9MDtIPj0wO0gtPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltIXXxiW0gtMV08PDh8YltILTJdPDwxNik8PGsmNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1rJjY3MTA4ODYzLChrKz0yNCk+PTI2JiYoay09MjYsZysrKTtlbHNlIGlmKCJsZSI9''@;'; put 'put ''PT1GKWZvcihIPTAsZz0wO0g8Yi5sZW5ndGg7SCs9Myl0aGlzLndvcmRzW2ddfD0oQz1iW0hdfGJbSCsxXTw8OHxiW0grMl08PDE2KTw8ayY2NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LWsmNjcxMDg4NjMsKGsrPTI0KT49MjYmJihrLT0yNixnKyspO3JldHVybiB0aGlzLnN0cmlw''@;'; put 'put ''KCl9LE0ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihiLEEsRil7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKChiLmxlbmd0aC1BKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBIPTA7SDx0aGlzLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT0wO3ZhciBr''@;'; put 'put ''LGc9MCxDPTA7aWYoImJlIj09PUYpZm9yKEg9Yi5sZW5ndGgtMTtIPj1BO0gtPTIpaz1qKGIsQSxIKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZrLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1rPj4+MjYpOmcrPTg7ZWxzZSBmb3IoSD0oYi5sZW5ndGgtQSklMj09MD9BKzE6''@;'; put 'put ''QTtIPGIubGVuZ3RoO0grPTIpaz1qKGIsQSxIKTw8Zyx0aGlzLndvcmRzW0NdfD02NzEwODg2MyZrLGc+PTE4PyhnLT0xOCx0aGlzLndvcmRzW0MrPTFdfD1rPj4+MjYpOmcrPTg7dGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGIsQSxGKXt0aGlzLndvcmRz''@;'; put 'put ''PVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgSD0wLGc9MTtnPD02NzEwODg2MztnKj1BKUgrKztILS0sZz1nL0F8MDtmb3IodmFyIEM9Yi5sZW5ndGgtRixrPUMlSCxfPU1hdGgubWluKEMsQy1rKStGLHA9MCx3PUY7dzxfO3crPUgpcD1HKGIsdyx3K0gsQSksdGhpcy5pbXVsbihnKSx0aGlz''@;'; put 'put ''LndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKTtpZigwIT09ayl7dmFyIEs9MTtmb3IocD1HKGIsdyxiLmxlbmd0aCxBKSx3PTA7dzxrO3crKylLKj1BO3RoaXMuaW11bG4oSyksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0r''@;'; put 'put ''PXA6dGhpcy5faWFkZG4ocCl9dGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGIpe2Iud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEE9MDtBPHRoaXMubGVuZ3RoO0ErKyliLndvcmRzW0FdPXRoaXMud29yZHNbQV07Yi5sZW5ndGg9dGhpcy5sZW5n''@;'; put 'put ''dGgsYi5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGIucmVkPXRoaXMucmVkfSxNLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyBNKG51bGwpO3JldHVybiB0aGlzLmNvcHkoYiksYn0sTS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGI7''@;'; put 'put ''KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxNLnBy''@;'; put 'put ''b3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sTS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhp''@;'; put 'put ''cy50b1N0cmluZygxNikrIj4ifTt2YXIgRD1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSxUPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUs''@;'; put 'put ''NSw1LDUsNSw1LDUsNSw1LDVdLEU9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwz''@;'; put 'put ''NDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rp''@;'; put 'put ''b24gTihXLGIsQSl7QS5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlcubmVnYXRpdmU7dmFyIEY9Vy5sZW5ndGgrYi5sZW5ndGh8MDtBLmxlbmd0aD1GLEY9Ri0xfDA7dmFyIEg9MHxXLndvcmRzWzBdLGc9MHxiLndvcmRzWzBdLEM9SCpnLF89Qy82NzEwODg2NHwwO0Eud29yZHNbMF09NjcxMDg4NjMm''@;'; put 'put ''Qztmb3IodmFyIHA9MTtwPEY7cCsrKXtmb3IodmFyIHc9Xz4+PjI2LEs9NjcxMDg4NjMmXyx0ZT1NYXRoLm1pbihwLGIubGVuZ3RoLTEpLGNlPU1hdGgubWF4KDAscC1XLmxlbmd0aCsxKTtjZTw9dGU7Y2UrKyl3Kz0oQz0oSD0wfFcud29yZHNbcC1jZXwwXSkqKGc9MHxiLndvcmRzW2NlXSkr''@;'; put 'put ''SykvNjcxMDg4NjR8MCxLPTY3MTA4ODYzJkM7QS53b3Jkc1twXT0wfEssXz0wfHd9cmV0dXJuIDAhPT1fP0Eud29yZHNbcF09MHxfOkEubGVuZ3RoLS0sQS5zdHJpcCgpfU0ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGIsQSl7dmFyIEY7aWYoQT0wfEF8fDEsMTY9PT0oYj1ifHwxMCl8''@;'; put 'put ''fCJoZXgiPT09Yil7Rj0iIjtmb3IodmFyIEg9MCxnPTAsQz0wO0M8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz10aGlzLndvcmRzW0NdLF89KDE2Nzc3MjE1JihrPDxIfGcpKS50b1N0cmluZygxNik7Rj0wIT0oZz1rPj4+MjQtSCYxNjc3NzIxNSl8fEMhPT10aGlzLmxlbmd0aC0xP0RbNi1fLmxl''@;'; put 'put ''bmd0aF0rXytGOl8rRiwoSCs9Mik+PTI2JiYoSC09MjYsQy0tKX1mb3IoMCE9PWcmJihGPWcudG9TdHJpbmcoMTYpK0YpO0YubGVuZ3RoJUEhPTA7KUY9IjAiK0Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoRj0iLSIrRiksRn1pZihiPT09KDB8YikmJmI+PTImJmI8PTM2KXt2YXIgcD1U''@;'; put 'put ''W2JdLHc9RVtiXTtGPSIiO3ZhciBLPXRoaXMuY2xvbmUoKTtmb3IoSy5uZWdhdGl2ZT0wOyFLLmlzWmVybygpOyl7dmFyIHRlPUsubW9kbih3KS50b1N0cmluZyhiKTtGPShLPUsuaWRpdm4odykpLmlzWmVybygpP3RlK0Y6RFtwLXRlLmxlbmd0aF0rdGUrRn1mb3IodGhpcy5pc1plcm8oKSYm''@;'; put 'put ''KEY9IjAiK0YpO0YubGVuZ3RoJUEhPTA7KUY9IjAiK0Y7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYoRj0iLSIrRiksRn1tKCExLCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iil9LE0ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy53b3Jkc1swXTty''@;'; put 'put ''ZXR1cm4gMj09PXRoaXMubGVuZ3RoP2IrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT9iKz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmbSghMSwiTnVtYmVyIGNhbiBvbmx5IHNh''@;'; put 'put ''ZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIiksMCE9PXRoaXMubmVnYXRpdmU/LWI6Yn0sTS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpfSxNLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbihiLEEpe3JldHVybiBtKHR5cGVvZiBPPCJ1Iiks''@;'; put 'put ''dGhpcy50b0FycmF5TGlrZShPLGIsQSl9LE0ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSxiLEEpfSxNLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbihiLEEsRil7dmFyIEg9dGhpcy5ieXRlTGVuZ3RoKCksZz1GfHxN''@;'; put 'put ''YXRoLm1heCgxLEgpO20oSDw9ZywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLG0oZz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIF8scCxDPSJsZSI9PT1BLGs9bmV3IGIoZyksdz10aGlzLmNsb25lKCk7aWYoQyl7Zm9y''@;'; put 'put ''KHA9MDshdy5pc1plcm8oKTtwKyspXz13LmFuZGxuKDI1NSksdy5pdXNocm4oOCksa1twXT1fO2Zvcig7cDxnO3ArKylrW3BdPTB9ZWxzZXtmb3IocD0wO3A8Zy1IO3ArKylrW3BdPTA7Zm9yKHA9MDshdy5pc1plcm8oKTtwKyspXz13LmFuZGxuKDI1NSksdy5pdXNocm4oOCksa1tnLXAtMV09''@;'; put 'put ''X31yZXR1cm4ga30sTS5wcm90b3R5cGUuX2NvdW50Qml0cz1NYXRoLmNsejMyP2Z1bmN0aW9uKGIpe3JldHVybiAzMi1NYXRoLmNsejMyKGIpfTpmdW5jdGlvbihiKXt2YXIgQT1iLEY9MDtyZXR1cm4gQT49NDA5NiYmKEYrPTEzLEE+Pj49MTMpLEE+PTY0JiYoRis9NyxBPj4+PTcpLEE+PTgm''@;'; put 'put ''JihGKz00LEE+Pj49NCksQT49MiYmKEYrPTIsQT4+Pj0yKSxGK0F9LE0ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbihiKXtpZigwPT09YilyZXR1cm4gMjY7dmFyIEE9YixGPTA7cmV0dXJuIDgxOTEmQXx8KEYrPTEzLEE+Pj49MTMpLDEyNyZBfHwoRis9NyxBPj4+PTcpLDE1JkF8fChG''@;'; put 'put ''Kz00LEE+Pj49NCksMyZBfHwoRis9MixBPj4+PTIpLDEmQXx8RisrLEZ9LE0ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciBBPXRoaXMuX2NvdW50Qml0cyh0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdKTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK0F9LE0ucHJvdG90eXBl''@;'; put 'put ''Lnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIGI9MCxBPTA7QTx0aGlzLmxlbmd0aDtBKyspe3ZhciBGPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbQV0pO2lmKGIrPUYsMjYhPT1GKWJyZWFrfXJldHVybiBifSxNLnByb3RvdHlwZS5ieXRl''@;'; put 'put ''TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxNLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4oYikuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5mcm9tVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy50ZXN0bihiLTEpP3RoaXMubm90bihiKS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxNLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sTS5wcm90b3R5cGUubmVnPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LE0ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LE0ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiLmxlbmd0aDsp''@;'; put 'put ''dGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgQT0wO0E8Yi5sZW5ndGg7QSsrKXRoaXMud29yZHNbQV09dGhpcy53b3Jkc1tBXXxiLndvcmRzW0FdO3JldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlvcj1mdW5jdGlvbihiKXtyZXR1cm4gbSghKHRoaXMubmVnYXRp''@;'; put 'put ''dmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXVvcihiKX0sTS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoYik6Yi5jbG9uZSgpLmlvcih0aGlzKX0sTS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlz''@;'; put 'put ''Lmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihiKTpiLmNsb25lKCkuaXVvcih0aGlzKX0sTS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oYil7dmFyIEE7QT10aGlzLmxlbmd0aD5iLmxlbmd0aD9iOnRoaXM7Zm9yKHZhciBGPTA7RjxBLmxlbmd0aDtGKyspdGhpcy53b3Jkc1tG''@;'; put 'put ''XT10aGlzLndvcmRzW0ZdJmIud29yZHNbRl07cmV0dXJuIHRoaXMubGVuZ3RoPUEubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghKHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQoYil9LE0ucHJvdG90eXBlLmFu''@;'; put 'put ''ZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQoYik6Yi5jbG9uZSgpLmlhbmQodGhpcyl9LE0ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZChiKTpi''@;'; put 'put ''LmNsb25lKCkuaXVhbmQodGhpcyl9LE0ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKGIpe3ZhciBBLEY7dGhpcy5sZW5ndGg+Yi5sZW5ndGg/KEE9dGhpcyxGPWIpOihBPWIsRj10aGlzKTtmb3IodmFyIEg9MDtIPEYubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPUEud29yZHNbSF1eRi53b3Jk''@;'; put 'put ''c1tIXTtpZih0aGlzIT09QSlmb3IoO0g8QS5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09QS53b3Jkc1tIXTtyZXR1cm4gdGhpcy5sZW5ndGg9QS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKGIpe3JldHVybiBtKCEodGhpcy5uZWdhdGl2ZXxiLm5lZ2F0''@;'; put 'put ''aXZlKSksdGhpcy5pdXhvcihiKX0sTS5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcihiKTpiLmNsb25lKCkuaXhvcih0aGlzKX0sTS5wcm90b3R5cGUudXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5n''@;'; put 'put ''dGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKGIpOmIuY2xvbmUoKS5pdXhvcih0aGlzKX0sTS5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBBPTB8TWF0aC5jZWlsKGIvMjYpLEY9YiUyNjt0aGlzLl9leHBhbmQoQSksRj4w''@;'; put 'put ''JiZBLS07Zm9yKHZhciBIPTA7SDxBO0grKyl0aGlzLndvcmRzW0hdPTY3MTA4ODYzJn50aGlzLndvcmRzW0hdO3JldHVybiBGPjAmJih0aGlzLndvcmRzW0hdPX50aGlzLndvcmRzW0hdJjY3MTA4ODYzPj4yNi1GKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oYil7''@;'; put 'put ''cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihiKX0sTS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihiLEEpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgRj1iLzI2fDAsSD1iJTI2O3JldHVybiB0aGlzLl9leHBhbmQoRisxKSx0aGlzLndvcmRzW0ZdPUE/dGhpcy53b3Jkc1tGXXwx''@;'; put 'put ''PDxIOnRoaXMud29yZHNbRl0mfigxPDxIKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYil7dmFyIEEsRixIO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLEE9dGhpcy5pc3ViKGIpLHRoaXMubmVnYXRp''@;'; put 'put ''dmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIGIubmVnYXRpdmU9MCxBPXRoaXMuaXN1YihiKSxiLm5lZ2F0aXZlPTEsQS5fbm9ybVNpZ24oKTt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oRj10aGlzLEg9Yik6KEY9YixIPXRo''@;'; put 'put ''aXMpO2Zvcih2YXIgZz0wLEM9MDtDPEgubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJihBPSgwfEYud29yZHNbQ10pKygwfEgud29yZHNbQ10pK2cpLGc9QT4+PjI2O2Zvcig7MCE9PWcmJkM8Ri5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKEE9KDB8Ri53b3Jk''@;'; put 'put ''c1tDXSkrZyksZz1BPj4+MjY7aWYodGhpcy5sZW5ndGg9Ri5sZW5ndGgsMCE9PWcpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09Zyx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYoRiE9PXRoaXMpZm9yKDtDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPUYud29yZHNbQ107cmV0dXJuIHRoaXN9LE0u''@;'; put 'put ''cHJvdG90eXBlLmFkZD1mdW5jdGlvbihiKXt2YXIgQTtyZXR1cm4gMCE9PWIubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyhiLm5lZ2F0aXZlPTAsQT10aGlzLnN1YihiKSxiLm5lZ2F0aXZlXj0xLEEpOjA9PT1iLm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0wLEE9Yi5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLEEpOnRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKGIpOmIuY2xvbmUoKS5pYWRkKHRoaXMpfSxNLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIpe2lmKDAhPT1iLm5lZ2F0aXZlKXtiLm5lZ2F0aXZlPTA7dmFy''@;'; put 'put ''IEE9dGhpcy5pYWRkKGIpO3JldHVybiBiLm5lZ2F0aXZlPTEsQS5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZChiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgSCxnLEY9dGhpcy5jbXAoYik7aWYo''@;'; put 'put ''MD09PUYpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO0Y+MD8oSD10aGlzLGc9Yik6KEg9YixnPXRoaXMpO2Zvcih2YXIgQz0wLGs9MDtrPGcubGVuZ3RoO2srKylDPShBPSgwfEgud29yZHNba10pLSgwfGcud29yZHNba10pK0MpPj4y''@;'; put 'put ''Nix0aGlzLndvcmRzW2tdPTY3MTA4ODYzJkE7Zm9yKDswIT09QyYmazxILmxlbmd0aDtrKyspQz0oQT0oMHxILndvcmRzW2tdKStDKT4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZBO2lmKDA9PT1DJiZrPEgubGVuZ3RoJiZIIT09dGhpcylmb3IoO2s8SC5sZW5ndGg7aysrKXRoaXMud29y''@;'; put 'put ''ZHNba109SC53b3Jkc1trXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsayksSCE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihiKX07dmFyIEI9''@;'; put 'put ''ZnVuY3Rpb24oYixBLEYpe3ZhciBfLHAsdyxIPWIud29yZHMsZz1BLndvcmRzLEM9Ri53b3JkcyxrPTAsSz0wfEhbMF0sdGU9ODE5MSZLLGNlPUs+Pj4xMyxoZT0wfEhbMV0sU2U9ODE5MSZoZSxMZT1oZT4+PjEzLEhlPTB8SFsyXSx4ZT04MTkxJkhlLERlPUhlPj4+MTMsQmU9MHxIWzNdLEdl''@;'; put 'put ''PTgxOTEmQmUsVWU9QmU+Pj4xMyxxZT0wfEhbNF0sb3Q9ODE5MSZxZSxGZT1xZT4+PjEzLHdlPTB8SFs1XSxFZT04MTkxJndlLEllPXdlPj4+MTMsWGU9MHxIWzZdLHR0PTgxOTEmWGUsWmU9WGU+Pj4xMyxjdD0wfEhbN10sa2U9ODE5MSZjdCxBZT1jdD4+PjEzLGplPTB8SFs4XSxpdD04MTkx''@;'; put 'put ''JmplLHN0PWplPj4+MTMseHQ9MHxIWzldLEZ0PTgxOTEmeHQsT3Q9eHQ+Pj4xMyxLdD0wfGdbMF0sYm49ODE5MSZLdCxCdD1LdD4+PjEzLHluPTB8Z1sxXSxObj04MTkxJnluLG5uPXluPj4+MTMsR249MHxnWzJdLFluPTgxOTEmR24sZnQ9R24+Pj4xMyxkbj0wfGdbM10saG49ODE5MSZkbix3''@;'; put 'put ''dD1kbj4+PjEzLGp0PTB8Z1s0XSxtdD04MTkxJmp0LEh0PWp0Pj4+MTMscG49MHxnWzVdLG50PTgxOTEmcG4sRXQ9cG4+Pj4xMyxlbj0wfGdbNl0sVHQ9ODE5MSZlbix5dD1lbj4+PjEzLCR0PTB8Z1s3XSx4bj04MTkxJiR0LHp0PSR0Pj4+MTMsX249MHxnWzhdLE9uPTgxOTEmX24scm49X24+''@;'; put 'put ''Pj4xMyxQbj0wfGdbOV0sQ249ODE5MSZQbixYdD1Qbj4+PjEzO0YubmVnYXRpdmU9Yi5uZWdhdGl2ZV5BLm5lZ2F0aXZlLEYubGVuZ3RoPTE5O3ZhciBKbj0oaysoXz1NYXRoLmltdWwodGUsYm4pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKHRlLEJ0KSkrTWF0aC5pbXVsKGNlLGJuKXww''@;'; put 'put ''KSk8PDEzKXwwO2s9KCh3PU1hdGguaW11bChjZSxCdCkpKyhwPj4+MTMpfDApKyhKbj4+PjI2KXwwLEpuJj02NzEwODg2MyxfPU1hdGguaW11bChTZSxibikscD0ocD1NYXRoLmltdWwoU2UsQnQpKStNYXRoLmltdWwoTGUsYm4pfDAsdz1NYXRoLmltdWwoTGUsQnQpO3ZhciB4aT0oaysoXz1f''@;'; put 'put ''K01hdGguaW11bCh0ZSxObil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLG5uKXwwKStNYXRoLmltdWwoY2UsTm4pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2Usbm4pfDApKyhwPj4+MTMpfDApKyh4aT4+PjI2KXwwLHhpJj02NzEwODg2MyxfPU1hdGguaW11bCh4''@;'; put 'put ''ZSxibikscD0ocD1NYXRoLmltdWwoeGUsQnQpKStNYXRoLmltdWwoRGUsYm4pfDAsdz1NYXRoLmltdWwoRGUsQnQpLF89XytNYXRoLmltdWwoU2UsTm4pfDAscD0ocD1wK01hdGguaW11bChTZSxubil8MCkrTWF0aC5pbXVsKExlLE5uKXwwLHc9dytNYXRoLmltdWwoTGUsbm4pfDA7dmFyIGFu''@;'; put 'put ''PShrKyhfPV8rTWF0aC5pbXVsKHRlLFluKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsZnQpfDApK01hdGguaW11bChjZSxZbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSxmdCl8MCkrKHA+Pj4xMyl8MCkrKGFuPj4+MjYpfDAsYW4mPTY3MTA4ODYzLF89TWF0''@;'; put 'put ''aC5pbXVsKEdlLGJuKSxwPShwPU1hdGguaW11bChHZSxCdCkpK01hdGguaW11bChVZSxibil8MCx3PU1hdGguaW11bChVZSxCdCksXz1fK01hdGguaW11bCh4ZSxObil8MCxwPShwPXArTWF0aC5pbXVsKHhlLG5uKXwwKStNYXRoLmltdWwoRGUsTm4pfDAsdz13K01hdGguaW11bChEZSxubil8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKFNlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsZnQpfDApK01hdGguaW11bChMZSxZbil8MCx3PXcrTWF0aC5pbXVsKExlLGZ0KXwwO3ZhciB0bj0oaysoXz1fK01hdGguaW11bCh0ZSxobil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLHd0KXww''@;'; put 'put ''KStNYXRoLmltdWwoY2UsaG4pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2Usd3QpfDApKyhwPj4+MTMpfDApKyh0bj4+PjI2KXwwLHRuJj02NzEwODg2MyxfPU1hdGguaW11bChvdCxibikscD0ocD1NYXRoLmltdWwob3QsQnQpKStNYXRoLmltdWwoRmUsYm4pfDAsdz1NYXRoLmlt''@;'; put 'put ''dWwoRmUsQnQpLF89XytNYXRoLmltdWwoR2UsTm4pfDAscD0ocD1wK01hdGguaW11bChHZSxubil8MCkrTWF0aC5pbXVsKFVlLE5uKXwwLHc9dytNYXRoLmltdWwoVWUsbm4pfDAsXz1fK01hdGguaW11bCh4ZSxZbil8MCxwPShwPXArTWF0aC5pbXVsKHhlLGZ0KXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''WW4pfDAsdz13K01hdGguaW11bChEZSxmdCl8MCxfPV8rTWF0aC5pbXVsKFNlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoU2Usd3QpfDApK01hdGguaW11bChMZSxobil8MCx3PXcrTWF0aC5pbXVsKExlLHd0KXwwO3ZhciB1aT0oaysoXz1fK01hdGguaW11bCh0ZSxtdCl8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKHRlLEh0KXwwKStNYXRoLmltdWwoY2UsbXQpfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsSHQpfDApKyhwPj4+MTMpfDApKyh1aT4+PjI2KXwwLHVpJj02NzEwODg2MyxfPU1hdGguaW11bChFZSxibikscD0ocD1NYXRoLmltdWwoRWUsQnQpKStN''@;'; put 'put ''YXRoLmltdWwoSWUsYm4pfDAsdz1NYXRoLmltdWwoSWUsQnQpLF89XytNYXRoLmltdWwob3QsTm4pfDAscD0ocD1wK01hdGguaW11bChvdCxubil8MCkrTWF0aC5pbXVsKEZlLE5uKXwwLHc9dytNYXRoLmltdWwoRmUsbm4pfDAsXz1fK01hdGguaW11bChHZSxZbil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKEdlLGZ0KXwwKStNYXRoLmltdWwoVWUsWW4pfDAsdz13K01hdGguaW11bChVZSxmdCl8MCxfPV8rTWF0aC5pbXVsKHhlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsd3QpfDApK01hdGguaW11bChEZSxobil8MCx3PXcrTWF0aC5pbXVsKERlLHd0KXwwLF89XytNYXRoLmltdWwoU2Us''@;'; put 'put ''bXQpfDAscD0ocD1wK01hdGguaW11bChTZSxIdCl8MCkrTWF0aC5pbXVsKExlLG10KXwwLHc9dytNYXRoLmltdWwoTGUsSHQpfDA7dmFyIEFyPShrKyhfPV8rTWF0aC5pbXVsKHRlLG50KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsRXQpfDApK01hdGguaW11bChjZSxudCl8''@;'; put 'put ''MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSxFdCl8MCkrKHA+Pj4xMyl8MCkrKEFyPj4+MjYpfDAsQXImPTY3MTA4ODYzLF89TWF0aC5pbXVsKHR0LGJuKSxwPShwPU1hdGguaW11bCh0dCxCdCkpK01hdGguaW11bChaZSxibil8MCx3PU1hdGguaW11bChaZSxCdCksXz1fK01hdGgu''@;'; put 'put ''aW11bChFZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEVlLG5uKXwwKStNYXRoLmltdWwoSWUsTm4pfDAsdz13K01hdGguaW11bChJZSxubil8MCxfPV8rTWF0aC5pbXVsKG90LFluKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsZnQpfDApK01hdGguaW11bChGZSxZbil8MCx3PXcrTWF0aC5pbXVs''@;'; put 'put ''KEZlLGZ0KXwwLF89XytNYXRoLmltdWwoR2UsaG4pfDAscD0ocD1wK01hdGguaW11bChHZSx3dCl8MCkrTWF0aC5pbXVsKFVlLGhuKXwwLHc9dytNYXRoLmltdWwoVWUsd3QpfDAsXz1fK01hdGguaW11bCh4ZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKHhlLEh0KXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''bXQpfDAsdz13K01hdGguaW11bChEZSxIdCl8MCxfPV8rTWF0aC5pbXVsKFNlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsRXQpfDApK01hdGguaW11bChMZSxudCl8MCx3PXcrTWF0aC5pbXVsKExlLEV0KXwwO3ZhciBocj0oaysoXz1fK01hdGguaW11bCh0ZSxUdCl8MCl8MCkrKCg4MTkx''@;'; put 'put ''JihwPShwPXArTWF0aC5pbXVsKHRlLHl0KXwwKStNYXRoLmltdWwoY2UsVHQpfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UseXQpfDApKyhwPj4+MTMpfDApKyhocj4+PjI2KXwwLGhyJj02NzEwODg2MyxfPU1hdGguaW11bChrZSxibikscD0ocD1NYXRoLmltdWwoa2UsQnQpKStN''@;'; put 'put ''YXRoLmltdWwoQWUsYm4pfDAsdz1NYXRoLmltdWwoQWUsQnQpLF89XytNYXRoLmltdWwodHQsTm4pfDAscD0ocD1wK01hdGguaW11bCh0dCxubil8MCkrTWF0aC5pbXVsKFplLE5uKXwwLHc9dytNYXRoLmltdWwoWmUsbm4pfDAsXz1fK01hdGguaW11bChFZSxZbil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKEVlLGZ0KXwwKStNYXRoLmltdWwoSWUsWW4pfDAsdz13K01hdGguaW11bChJZSxmdCl8MCxfPV8rTWF0aC5pbXVsKG90LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwob3Qsd3QpfDApK01hdGguaW11bChGZSxobil8MCx3PXcrTWF0aC5pbXVsKEZlLHd0KXwwLF89XytNYXRoLmltdWwoR2Us''@;'; put 'put ''bXQpfDAscD0ocD1wK01hdGguaW11bChHZSxIdCl8MCkrTWF0aC5pbXVsKFVlLG10KXwwLHc9dytNYXRoLmltdWwoVWUsSHQpfDAsXz1fK01hdGguaW11bCh4ZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKHhlLEV0KXwwKStNYXRoLmltdWwoRGUsbnQpfDAsdz13K01hdGguaW11bChEZSxFdCl8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKFNlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UseXQpfDApK01hdGguaW11bChMZSxUdCl8MCx3PXcrTWF0aC5pbXVsKExlLHl0KXwwO3ZhciBkaT0oaysoXz1fK01hdGguaW11bCh0ZSx4bil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLHp0KXww''@;'; put 'put ''KStNYXRoLmltdWwoY2UseG4pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsenQpfDApKyhwPj4+MTMpfDApKyhkaT4+PjI2KXwwLGRpJj02NzEwODg2MyxfPU1hdGguaW11bChpdCxibikscD0ocD1NYXRoLmltdWwoaXQsQnQpKStNYXRoLmltdWwoc3QsYm4pfDAsdz1NYXRoLmlt''@;'; put 'put ''dWwoc3QsQnQpLF89XytNYXRoLmltdWwoa2UsTm4pfDAscD0ocD1wK01hdGguaW11bChrZSxubil8MCkrTWF0aC5pbXVsKEFlLE5uKXwwLHc9dytNYXRoLmltdWwoQWUsbm4pfDAsXz1fK01hdGguaW11bCh0dCxZbil8MCxwPShwPXArTWF0aC5pbXVsKHR0LGZ0KXwwKStNYXRoLmltdWwoWmUs''@;'; put 'put ''WW4pfDAsdz13K01hdGguaW11bChaZSxmdCl8MCxfPV8rTWF0aC5pbXVsKEVlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsd3QpfDApK01hdGguaW11bChJZSxobil8MCx3PXcrTWF0aC5pbXVsKEllLHd0KXwwLF89XytNYXRoLmltdWwob3QsbXQpfDAscD0ocD1wK01hdGguaW11bChvdCxI''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKEZlLG10KXwwLHc9dytNYXRoLmltdWwoRmUsSHQpfDAsXz1fK01hdGguaW11bChHZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKEdlLEV0KXwwKStNYXRoLmltdWwoVWUsbnQpfDAsdz13K01hdGguaW11bChVZSxFdCl8MCxfPV8rTWF0aC5pbXVsKHhlLFR0KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoeGUseXQpfDApK01hdGguaW11bChEZSxUdCl8MCx3PXcrTWF0aC5pbXVsKERlLHl0KXwwLF89XytNYXRoLmltdWwoU2UseG4pfDAscD0ocD1wK01hdGguaW11bChTZSx6dCl8MCkrTWF0aC5pbXVsKExlLHhuKXwwLHc9dytNYXRoLmltdWwoTGUsenQpfDA7dmFyIGZp''@;'; put 'put ''PShrKyhfPV8rTWF0aC5pbXVsKHRlLE9uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUscm4pfDApK01hdGguaW11bChjZSxPbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSxybil8MCkrKHA+Pj4xMyl8MCkrKGZpPj4+MjYpfDAsZmkmPTY3MTA4ODYzLF89TWF0''@;'; put 'put ''aC5pbXVsKEZ0LGJuKSxwPShwPU1hdGguaW11bChGdCxCdCkpK01hdGguaW11bChPdCxibil8MCx3PU1hdGguaW11bChPdCxCdCksXz1fK01hdGguaW11bChpdCxObil8MCxwPShwPXArTWF0aC5pbXVsKGl0LG5uKXwwKStNYXRoLmltdWwoc3QsTm4pfDAsdz13K01hdGguaW11bChzdCxubil8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKGtlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsZnQpfDApK01hdGguaW11bChBZSxZbil8MCx3PXcrTWF0aC5pbXVsKEFlLGZ0KXwwLF89XytNYXRoLmltdWwodHQsaG4pfDAscD0ocD1wK01hdGguaW11bCh0dCx3dCl8MCkrTWF0aC5pbXVsKFplLGhuKXwwLHc9''@;'; put 'put ''dytNYXRoLmltdWwoWmUsd3QpfDAsXz1fK01hdGguaW11bChFZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLEh0KXwwKStNYXRoLmltdWwoSWUsbXQpfDAsdz13K01hdGguaW11bChJZSxIdCl8MCxfPV8rTWF0aC5pbXVsKG90LG50KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsRXQpfDApK01h''@;'; put 'put ''dGguaW11bChGZSxudCl8MCx3PXcrTWF0aC5pbXVsKEZlLEV0KXwwLF89XytNYXRoLmltdWwoR2UsVHQpfDAscD0ocD1wK01hdGguaW11bChHZSx5dCl8MCkrTWF0aC5pbXVsKFVlLFR0KXwwLHc9dytNYXRoLmltdWwoVWUseXQpfDAsXz1fK01hdGguaW11bCh4ZSx4bil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKHhlLHp0KXwwKStNYXRoLmltdWwoRGUseG4pfDAsdz13K01hdGguaW11bChEZSx6dCl8MCxfPV8rTWF0aC5pbXVsKFNlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoU2Uscm4pfDApK01hdGguaW11bChMZSxPbil8MCx3PXcrTWF0aC5pbXVsKExlLHJuKXwwO3ZhciBobz0oaysoXz1f''@;'; put 'put ''K01hdGguaW11bCh0ZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLFh0KXwwKStNYXRoLmltdWwoY2UsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsWHQpfDApKyhwPj4+MTMpfDApKyhobz4+PjI2KXwwLGhvJj02NzEwODg2MyxfPU1hdGguaW11bChG''@;'; put 'put ''dCxObikscD0ocD1NYXRoLmltdWwoRnQsbm4pKStNYXRoLmltdWwoT3QsTm4pfDAsdz1NYXRoLmltdWwoT3Qsbm4pLF89XytNYXRoLmltdWwoaXQsWW4pfDAscD0ocD1wK01hdGguaW11bChpdCxmdCl8MCkrTWF0aC5pbXVsKHN0LFluKXwwLHc9dytNYXRoLmltdWwoc3QsZnQpfDAsXz1fK01h''@;'; put 'put ''dGguaW11bChrZSxobil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHd0KXwwKStNYXRoLmltdWwoQWUsaG4pfDAsdz13K01hdGguaW11bChBZSx3dCl8MCxfPV8rTWF0aC5pbXVsKHR0LG10KXwwLHA9KHA9cCtNYXRoLmltdWwodHQsSHQpfDApK01hdGguaW11bChaZSxtdCl8MCx3PXcrTWF0aC5p''@;'; put 'put ''bXVsKFplLEh0KXwwLF89XytNYXRoLmltdWwoRWUsbnQpfDAscD0ocD1wK01hdGguaW11bChFZSxFdCl8MCkrTWF0aC5pbXVsKEllLG50KXwwLHc9dytNYXRoLmltdWwoSWUsRXQpfDAsXz1fK01hdGguaW11bChvdCxUdCl8MCxwPShwPXArTWF0aC5pbXVsKG90LHl0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''RmUsVHQpfDAsdz13K01hdGguaW11bChGZSx5dCl8MCxfPV8rTWF0aC5pbXVsKEdlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsenQpfDApK01hdGguaW11bChVZSx4bil8MCx3PXcrTWF0aC5pbXVsKFVlLHp0KXwwLF89XytNYXRoLmltdWwoeGUsT24pfDAscD0ocD1wK01hdGguaW11bCh4''@;'; put 'put ''ZSxybil8MCkrTWF0aC5pbXVsKERlLE9uKXwwLHc9dytNYXRoLmltdWwoRGUscm4pfDA7dmFyIGJyPShrKyhfPV8rTWF0aC5pbXVsKFNlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoU2UsWHQpfDApK01hdGguaW11bChMZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGgu''@;'; put 'put ''aW11bChMZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGJyPj4+MjYpfDAsYnImPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LFluKSxwPShwPU1hdGguaW11bChGdCxmdCkpK01hdGguaW11bChPdCxZbil8MCx3PU1hdGguaW11bChPdCxmdCksXz1fK01hdGguaW11bChpdCxobil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKGl0LHd0KXwwKStNYXRoLmltdWwoc3QsaG4pfDAsdz13K01hdGguaW11bChzdCx3dCl8MCxfPV8rTWF0aC5pbXVsKGtlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsSHQpfDApK01hdGguaW11bChBZSxtdCl8MCx3PXcrTWF0aC5pbXVsKEFlLEh0KXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''dHQsbnQpfDAscD0ocD1wK01hdGguaW11bCh0dCxFdCl8MCkrTWF0aC5pbXVsKFplLG50KXwwLHc9dytNYXRoLmltdWwoWmUsRXQpfDAsXz1fK01hdGguaW11bChFZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLHl0KXwwKStNYXRoLmltdWwoSWUsVHQpfDAsdz13K01hdGguaW11bChJZSx5''@;'; put 'put ''dCl8MCxfPV8rTWF0aC5pbXVsKG90LHhuKXwwLHA9KHA9cCtNYXRoLmltdWwob3QsenQpfDApK01hdGguaW11bChGZSx4bil8MCx3PXcrTWF0aC5pbXVsKEZlLHp0KXwwLF89XytNYXRoLmltdWwoR2UsT24pfDAscD0ocD1wK01hdGguaW11bChHZSxybil8MCkrTWF0aC5pbXVsKFVlLE9uKXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoVWUscm4pfDA7dmFyIExpPShrKyhfPV8rTWF0aC5pbXVsKHhlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoeGUsWHQpfDApK01hdGguaW11bChEZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChEZSxYdCl8MCkrKHA+Pj4xMyl8MCkr''@;'; put 'put ''KExpPj4+MjYpfDAsTGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LGhuKSxwPShwPU1hdGguaW11bChGdCx3dCkpK01hdGguaW11bChPdCxobil8MCx3PU1hdGguaW11bChPdCx3dCksXz1fK01hdGguaW11bChpdCxtdCl8MCxwPShwPXArTWF0aC5pbXVsKGl0LEh0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''c3QsbXQpfDAsdz13K01hdGguaW11bChzdCxIdCl8MCxfPV8rTWF0aC5pbXVsKGtlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsRXQpfDApK01hdGguaW11bChBZSxudCl8MCx3PXcrTWF0aC5pbXVsKEFlLEV0KXwwLF89XytNYXRoLmltdWwodHQsVHQpfDAscD0ocD1wK01hdGguaW11bCh0''@;'; put 'put ''dCx5dCl8MCkrTWF0aC5pbXVsKFplLFR0KXwwLHc9dytNYXRoLmltdWwoWmUseXQpfDAsXz1fK01hdGguaW11bChFZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHp0KXwwKStNYXRoLmltdWwoSWUseG4pfDAsdz13K01hdGguaW11bChJZSx6dCl8MCxfPV8rTWF0aC5pbXVsKG90LE9uKXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwob3Qscm4pfDApK01hdGguaW11bChGZSxPbil8MCx3PXcrTWF0aC5pbXVsKEZlLHJuKXwwO3ZhciBsbz0oaysoXz1fK01hdGguaW11bChHZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEdlLFh0KXwwKStNYXRoLmltdWwoVWUsQ24pfDApKTw8''@;'; put 'put ''MTMpfDA7az0oKHc9dytNYXRoLmltdWwoVWUsWHQpfDApKyhwPj4+MTMpfDApKyhsbz4+PjI2KXwwLGxvJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxtdCkscD0ocD1NYXRoLmltdWwoRnQsSHQpKStNYXRoLmltdWwoT3QsbXQpfDAsdz1NYXRoLmltdWwoT3QsSHQpLF89XytNYXRoLmltdWwo''@;'; put 'put ''aXQsbnQpfDAscD0ocD1wK01hdGguaW11bChpdCxFdCl8MCkrTWF0aC5pbXVsKHN0LG50KXwwLHc9dytNYXRoLmltdWwoc3QsRXQpfDAsXz1fK01hdGguaW11bChrZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLHl0KXwwKStNYXRoLmltdWwoQWUsVHQpfDAsdz13K01hdGguaW11bChBZSx5''@;'; put 'put ''dCl8MCxfPV8rTWF0aC5pbXVsKHR0LHhuKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsenQpfDApK01hdGguaW11bChaZSx4bil8MCx3PXcrTWF0aC5pbXVsKFplLHp0KXwwLF89XytNYXRoLmltdWwoRWUsT24pfDAscD0ocD1wK01hdGguaW11bChFZSxybil8MCkrTWF0aC5pbXVsKEllLE9uKXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoSWUscm4pfDA7dmFyIFVuPShrKyhfPV8rTWF0aC5pbXVsKG90LENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwob3QsWHQpfDApK01hdGguaW11bChGZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChGZSxYdCl8MCkrKHA+Pj4xMyl8MCkr''@;'; put 'put ''KFVuPj4+MjYpfDAsVW4mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LG50KSxwPShwPU1hdGguaW11bChGdCxFdCkpK01hdGguaW11bChPdCxudCl8MCx3PU1hdGguaW11bChPdCxFdCksXz1fK01hdGguaW11bChpdCxUdCl8MCxwPShwPXArTWF0aC5pbXVsKGl0LHl0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''c3QsVHQpfDAsdz13K01hdGguaW11bChzdCx5dCl8MCxfPV8rTWF0aC5pbXVsKGtlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2UsenQpfDApK01hdGguaW11bChBZSx4bil8MCx3PXcrTWF0aC5pbXVsKEFlLHp0KXwwLF89XytNYXRoLmltdWwodHQsT24pfDAscD0ocD1wK01hdGguaW11bCh0''@;'; put 'put ''dCxybil8MCkrTWF0aC5pbXVsKFplLE9uKXwwLHc9dytNYXRoLmltdWwoWmUscm4pfDA7dmFyIFhpPShrKyhfPV8rTWF0aC5pbXVsKEVlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoRWUsWHQpfDApK01hdGguaW11bChJZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGgu''@;'; put 'put ''aW11bChJZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKFhpPj4+MjYpfDAsWGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LFR0KSxwPShwPU1hdGguaW11bChGdCx5dCkpK01hdGguaW11bChPdCxUdCl8MCx3PU1hdGguaW11bChPdCx5dCksXz1fK01hdGguaW11bChpdCx4bil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKGl0LHp0KXwwKStNYXRoLmltdWwoc3QseG4pfDAsdz13K01hdGguaW11bChzdCx6dCl8MCxfPV8rTWF0aC5pbXVsKGtlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Uscm4pfDApK01hdGguaW11bChBZSxPbil8MCx3PXcrTWF0aC5pbXVsKEFlLHJuKXwwO3ZhciBRaT0oaysoXz1f''@;'; put 'put ''K01hdGguaW11bCh0dCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHR0LFh0KXwwKStNYXRoLmltdWwoWmUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoWmUsWHQpfDApKyhwPj4+MTMpfDApKyhRaT4+PjI2KXwwLFFpJj02NzEwODg2MyxfPU1hdGguaW11bChG''@;'; put 'put ''dCx4bikscD0ocD1NYXRoLmltdWwoRnQsenQpKStNYXRoLmltdWwoT3QseG4pfDAsdz1NYXRoLmltdWwoT3QsenQpLF89XytNYXRoLmltdWwoaXQsT24pfDAscD0ocD1wK01hdGguaW11bChpdCxybil8MCkrTWF0aC5pbXVsKHN0LE9uKXwwLHc9dytNYXRoLmltdWwoc3Qscm4pfDA7dmFyIGZv''@;'; put 'put ''PShrKyhfPV8rTWF0aC5pbXVsKGtlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoa2UsWHQpfDApK01hdGguaW11bChBZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChBZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGZvPj4+MjYpfDAsZm8mPTY3MTA4ODYzLF89TWF0''@;'; put 'put ''aC5pbXVsKEZ0LE9uKSxwPShwPU1hdGguaW11bChGdCxybikpK01hdGguaW11bChPdCxPbil8MCx3PU1hdGguaW11bChPdCxybik7dmFyIHZvPShrKyhfPV8rTWF0aC5pbXVsKGl0LENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoaXQsWHQpfDApK01hdGguaW11bChzdCxDbil8''@;'; put 'put ''MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChzdCxYdCl8MCkrKHA+Pj4xMyl8MCkrKHZvPj4+MjYpfDAsdm8mPTY3MTA4ODYzO3ZhciBScj0oaysoXz1NYXRoLmltdWwoRnQsQ24pKXwwKSsoKDgxOTEmKHA9KHA9TWF0aC5pbXVsKEZ0LFh0KSkrTWF0aC5pbXVsKE90LENuKXwwKSk8PDEz''@;'; put 'put ''KXwwO3JldHVybiBrPSgodz1NYXRoLmltdWwoT3QsWHQpKSsocD4+PjEzKXwwKSsoUnI+Pj4yNil8MCxSciY9NjcxMDg4NjMsQ1swXT1KbixDWzFdPXhpLENbMl09YW4sQ1szXT10bixDWzRdPXVpLENbNV09QXIsQ1s2XT1ocixDWzddPWRpLENbOF09ZmksQ1s5XT1obyxDWzEwXT1icixDWzEx''@;'; put 'put ''XT1MaSxDWzEyXT1sbyxDWzEzXT1VbixDWzE0XT1YaSxDWzE1XT1RaSxDWzE2XT1mbyxDWzE3XT12byxDWzE4XT1SciwwIT09ayYmKENbMTldPWssRi5sZW5ndGgrKyksRn07ZnVuY3Rpb24gWShXLGIsQSl7cmV0dXJuKG5ldyBVKS5tdWxwKFcsYixBKX1mdW5jdGlvbiBVKFcsYil7dGhpcy54''@;'; put 'put ''PVcsdGhpcy55PWJ9TWF0aC5pbXVsfHwoQj1OKSxNLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbihiLEEpe3ZhciBGLEg9dGhpcy5sZW5ndGgrYi5sZW5ndGg7cmV0dXJuIEY9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT1iLmxlbmd0aD9CKHRoaXMsYixBKTpIPDYzP04odGhpcyxiLEEpOkg8MTAy''@;'; put 'put ''ND9mdW5jdGlvbiBaKFcsYixBKXtBLm5lZ2F0aXZlPWIubmVnYXRpdmVeVy5uZWdhdGl2ZSxBLmxlbmd0aD1XLmxlbmd0aCtiLmxlbmd0aDtmb3IodmFyIEY9MCxIPTAsZz0wO2c8QS5sZW5ndGgtMTtnKyspe3ZhciBDPUg7SD0wO2Zvcih2YXIgaz02NzEwODg2MyZGLF89TWF0aC5taW4oZyxi''@;'; put 'put ''Lmxlbmd0aC0xKSxwPU1hdGgubWF4KDAsZy1XLmxlbmd0aCsxKTtwPD1fO3ArKyl7dmFyIGNlPSgwfFcud29yZHNbZy1wXSkqKDB8Yi53b3Jkc1twXSksaGU9NjcxMDg4NjMmY2U7az02NzEwODg2MyYoaGU9aGUra3wwKSxIKz0oQz0oQz1DKyhjZS82NzEwODg2NHwwKXwwKSsoaGU+Pj4yNil8''@;'; put 'put ''MCk+Pj4yNixDJj02NzEwODg2M31BLndvcmRzW2ddPWssRj1DLEM9SH1yZXR1cm4gMCE9PUY/QS53b3Jkc1tnXT1GOkEubGVuZ3RoLS0sQS5zdHJpcCgpfSh0aGlzLGIsQSk6WSh0aGlzLGIsQSksRn0sVS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbihiKXtmb3IodmFyIEE9bmV3IEFycmF5''@;'; put 'put ''KGIpLEY9TS5wcm90b3R5cGUuX2NvdW50Qml0cyhiKS0xLEg9MDtIPGI7SCsrKUFbSF09dGhpcy5yZXZCaW4oSCxGLGIpO3JldHVybiBBfSxVLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24oYixBLEYpe2lmKDA9PT1ifHxiPT09Ri0xKXJldHVybiBiO2Zvcih2YXIgSD0wLGc9MDtnPEE7Zysr''@;'; put 'put ''KUh8PSgxJmIpPDxBLWctMSxiPj49MTtyZXR1cm4gSH0sVS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihiLEEsRixILGcsQyl7Zm9yKHZhciBrPTA7azxDO2srKylIW2tdPUFbYltrXV0sZ1trXT1GW2Jba11dfSxVLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYixBLEYsSCxnLEMp''@;'; put 'put ''e3RoaXMucGVybXV0ZShDLGIsQSxGLEgsZyk7Zm9yKHZhciBrPTE7azxnO2s8PD0xKWZvcih2YXIgXz1rPDwxLHA9TWF0aC5jb3MoMipNYXRoLlBJL18pLHc9TWF0aC5zaW4oMipNYXRoLlBJL18pLEs9MDtLPGc7Sys9Xylmb3IodmFyIHRlPXAsY2U9dyxoZT0wO2hlPGs7aGUrKyl7dmFyIFNl''@;'; put 'put ''PUZbSytoZV0sTGU9SFtLK2hlXSxIZT1GW0sraGUra10seGU9SFtLK2hlK2tdLERlPXRlKkhlLWNlKnhlO3hlPXRlKnhlK2NlKkhlLEZbSytoZV09U2UrKEhlPURlKSxIW0sraGVdPUxlK3hlLEZbSytoZStrXT1TZS1IZSxIW0sraGUra109TGUteGUsaGUhPT1fJiYoRGU9cCp0ZS13KmNlLGNl''@;'; put 'put ''PXAqY2Urdyp0ZSx0ZT1EZSl9fSxVLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihiLEEpe3ZhciBGPTF8TWF0aC5tYXgoQSxiKSxIPTEmRixnPTA7Zm9yKEY9Ri8yfDA7RjtGPj4+PTEpZysrO3JldHVybiAxPDxnKzErSH0sVS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uKGIs''@;'; put 'put ''QSxGKXtpZighKEY8PTEpKWZvcih2YXIgSD0wO0g8Ri8yO0grKyl7dmFyIGc9YltIXTtiW0hdPWJbRi1ILTFdLGJbRi1ILTFdPWcsZz1BW0hdLEFbSF09LUFbRi1ILTFdLEFbRi1ILTFdPS1nfX0sVS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uKGIsQSl7Zm9yKHZhciBGPTAsSD0w''@;'; put 'put ''O0g8QS8yO0grKyl7dmFyIGc9ODE5MipNYXRoLnJvdW5kKGJbMipIKzFdL0EpK01hdGgucm91bmQoYlsyKkhdL0EpK0Y7YltIXT02NzEwODg2MyZnLEY9Zzw2NzEwODg2ND8wOmcvNjcxMDg4NjR8MH1yZXR1cm4gYn0sVS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbihiLEEsRixIKXtm''@;'; put 'put ''b3IodmFyIGc9MCxDPTA7QzxBO0MrKylGWzIqQ109ODE5MSYoZys9MHxiW0NdKSxGWzIqQysxXT04MTkxJihnPj4+PTEzKSxnPj4+PTEzO2ZvcihDPTIqQTtDPEg7KytDKUZbQ109MDttKDA9PT1nKSxtKCEoLTgxOTImZykpfSxVLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uKGIpe2Zvcih2YXIg''@;'; put 'put ''QT1uZXcgQXJyYXkoYiksRj0wO0Y8YjtGKyspQVtGXT0wO3JldHVybiBBfSxVLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uKGIsQSxGKXt2YXIgSD0yKnRoaXMuZ3Vlc3NMZW4xM2IoYi5sZW5ndGgsQS5sZW5ndGgpLGc9dGhpcy5tYWtlUkJUKEgpLEM9dGhpcy5zdHViKEgpLGs9bmV3IEFycmF5''@;'; put 'put ''KEgpLF89bmV3IEFycmF5KEgpLHA9bmV3IEFycmF5KEgpLHc9bmV3IEFycmF5KEgpLEs9bmV3IEFycmF5KEgpLHRlPW5ldyBBcnJheShIKSxjZT1GLndvcmRzO2NlLmxlbmd0aD1ILHRoaXMuY29udmVydDEzYihiLndvcmRzLGIubGVuZ3RoLGssSCksdGhpcy5jb252ZXJ0MTNiKEEud29yZHMs''@;'; put 'put ''QS5sZW5ndGgsdyxIKSx0aGlzLnRyYW5zZm9ybShrLEMsXyxwLEgsZyksdGhpcy50cmFuc2Zvcm0odyxDLEssdGUsSCxnKTtmb3IodmFyIGhlPTA7aGU8SDtoZSsrKXt2YXIgU2U9X1toZV0qS1toZV0tcFtoZV0qdGVbaGVdO3BbaGVdPV9baGVdKnRlW2hlXStwW2hlXSpLW2hlXSxfW2hlXT1T''@;'; put 'put ''ZX1yZXR1cm4gdGhpcy5jb25qdWdhdGUoXyxwLEgpLHRoaXMudHJhbnNmb3JtKF8scCxjZSxDLEgsZyksdGhpcy5jb25qdWdhdGUoY2UsQyxIKSx0aGlzLm5vcm1hbGl6ZTEzYihjZSxIKSxGLm5lZ2F0aXZlPWIubmVnYXRpdmVeQS5uZWdhdGl2ZSxGLmxlbmd0aD1iLmxlbmd0aCtBLmxlbmd0''@;'; put 'put ''aCxGLnN0cmlwKCl9LE0ucHJvdG90eXBlLm11bD1mdW5jdGlvbihiKXt2YXIgQT1uZXcgTShudWxsKTtyZXR1cm4gQS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrYi5sZW5ndGgpLHRoaXMubXVsVG8oYixBKX0sTS5wcm90b3R5cGUubXVsZj1mdW5jdGlvbihiKXt2YXIgQT1uZXcgTShu''@;'; put 'put ''dWxsKTtyZXR1cm4gQS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrYi5sZW5ndGgpLFkodGhpcyxiLEEpfSxNLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oYix0aGlzKX0sTS5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24oYil7bSgibnVt''@;'; put 'put ''YmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCk7Zm9yKHZhciBBPTAsRj0wO0Y8dGhpcy5sZW5ndGg7RisrKXt2YXIgSD0oMHx0aGlzLndvcmRzW0ZdKSpiLGc9KDY3MTA4ODYzJkgpKyg2NzEwODg2MyZBKTtBPj49MjYsQSs9SC82NzEwODg2NHwwLEErPWc+Pj4yNix0aGlzLndvcmRzW0Zd''@;'; put 'put ''PTY3MTA4ODYzJmd9cmV0dXJuIDAhPT1BJiYodGhpcy53b3Jkc1tGXT1BLHRoaXMubGVuZ3RoKyspLHRoaXN9LE0ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihiKX0sTS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVs''@;'; put 'put ''KHRoaXMpfSxNLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxNLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oYil7dmFyIEE9ZnVuY3Rpb24geihXKXtmb3IodmFyIGI9bmV3IEFycmF5KFcuYml0TGVuZ3RoKCkpLEE9MDtBPGIubGVuZ3Ro''@;'; put 'put ''O0ErKyl7dmFyIEg9QSUyNjtiW0FdPShXLndvcmRzW0EvMjZ8MF0mMTw8SCk+Pj5IfXJldHVybiBifShiKTtpZigwPT09QS5sZW5ndGgpcmV0dXJuIG5ldyBNKDEpO2Zvcih2YXIgRj10aGlzLEg9MDtIPEEubGVuZ3RoJiYwPT09QVtIXTtIKyssRj1GLnNxcigpKTtpZigrK0g8QS5sZW5ndGgp''@;'; put 'put ''Zm9yKHZhciBnPUYuc3FyKCk7SDxBLmxlbmd0aDtIKyssZz1nLnNxcigpKTAhPT1BW0hdJiYoRj1GLm11bChnKSk7cmV0dXJuIEZ9LE0ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIGcsQT1iJTI2LEY9KGItQSkvMjYsSD02NzEw''@;'; put 'put ''ODg2Mz4+PjI2LUE8PDI2LUE7aWYoMCE9PUEpe3ZhciBDPTA7Zm9yKGc9MDtnPHRoaXMubGVuZ3RoO2crKyl7dmFyIGs9dGhpcy53b3Jkc1tnXSZIO3RoaXMud29yZHNbZ109KDB8dGhpcy53b3Jkc1tnXSktazw8QXxDLEM9az4+PjI2LUF9QyYmKHRoaXMud29yZHNbZ109Qyx0aGlzLmxlbmd0''@;'; put 'put ''aCsrKX1pZigwIT09Ril7Zm9yKGc9dGhpcy5sZW5ndGgtMTtnPj0wO2ctLSl0aGlzLndvcmRzW2crRl09dGhpcy53b3Jkc1tnXTtmb3IoZz0wO2c8RjtnKyspdGhpcy53b3Jkc1tnXT0wO3RoaXMubGVuZ3RoKz1GfXJldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlzaGxuPWZ1bmN0''@;'; put 'put ''aW9uKGIpe3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbihiKX0sTS5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKGIsQSxGKXt2YXIgSDttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCksSD1BPyhBLUElMjYpLzI2OjA7dmFyIGc9YiUyNixDPU1hdGgubWluKChiLWcp''@;'; put 'put ''LzI2LHRoaXMubGVuZ3RoKSxrPTY3MTA4ODYzXjY3MTA4ODYzPj4+Zzw8ZyxfPUY7aWYoSC09QyxIPU1hdGgubWF4KDAsSCksXyl7Zm9yKHZhciBwPTA7cDxDO3ArKylfLndvcmRzW3BdPXRoaXMud29yZHNbcF07Xy5sZW5ndGg9Q31pZigwIT09QylpZih0aGlzLmxlbmd0aD5DKWZvcih0aGlz''@;'; put 'put ''Lmxlbmd0aC09QyxwPTA7cDx0aGlzLmxlbmd0aDtwKyspdGhpcy53b3Jkc1twXT10aGlzLndvcmRzW3ArQ107ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgdz0wO2ZvcihwPXRoaXMubGVuZ3RoLTE7cD49MCYmKDAhPT13fHxwPj1IKTtwLS0pe3ZhciBLPTB8dGhpcy53''@;'; put 'put ''b3Jkc1twXTt0aGlzLndvcmRzW3BdPXc8PDI2LWd8Sz4+Pmcsdz1LJmt9cmV0dXJuIF8mJjAhPT13JiYoXy53b3Jkc1tfLmxlbmd0aCsrXT13KSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pc2hybj1m''@;'; put 'put ''dW5jdGlvbihiLEEsRil7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGIsQSxGKX0sTS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGIpfSxNLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5j''@;'; put 'put ''bG9uZSgpLml1c2hsbihiKX0sTS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGIpfSxNLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiKX0sTS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24o''@;'; put 'put ''Yil7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBBPWIlMjYsRj0oYi1BKS8yNjtyZXR1cm4hKHRoaXMubGVuZ3RoPD1GfHwhKHRoaXMud29yZHNbRl0mMTw8QSkpfSxNLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBB''@;'; put 'put ''PWIlMjYsRj0oYi1BKS8yNjtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIiksdGhpcy5sZW5ndGg8PUY/dGhpczooMCE9PUEmJkYrKyx0aGlzLmxlbmd0aD1NYXRoLm1pbihGLHRoaXMubGVuZ3RoKSwwIT09QSYmKHRo''@;'; put 'put ''aXMud29yZHNbdGhpcy5sZW5ndGgtMV0mPTY3MTA4ODYzXjY3MTA4ODYzPj4+QTw8QSksdGhpcy5zdHJpcCgpKX0sTS5wcm90b3R5cGUubWFza249ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYil9LE0ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uKGIpe3JldHVybiBt''@;'; put 'put ''KCJudW1iZXIiPT10eXBlb2YgYiksbShiPDY3MTA4ODY0KSxiPDA/dGhpcy5pc3VibigtYik6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTxiPyh0aGlzLndvcmRzWzBdPWItKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMp''@;'; put 'put ''Oih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4oYil9LE0ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihiKXt0aGlzLndvcmRzWzBdKz1iO2Zvcih2YXIgQT0wO0E8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQV0+PTY3MTA4''@;'; put 'put ''ODY0O0ErKyl0aGlzLndvcmRzW0FdLT02NzEwODg2NCxBPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW0ErMV09MTp0aGlzLndvcmRzW0ErMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsQSsxKSx0aGlzfSxNLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihi''@;'; put 'put ''KXtpZihtKCJudW1iZXIiPT10eXBlb2YgYiksbShiPDY3MTA4ODY0KSxiPDApcmV0dXJuIHRoaXMuaWFkZG4oLWIpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihiKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1i''@;'; put 'put ''LDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBBPTA7QTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tBXTwwO0ErKyl0aGlzLndvcmRzW0FdKz02NzEwODg2NCx0aGlzLndvcmRz''@;'; put 'put ''W0ErMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGIpfSxNLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oYil9LE0ucHJvdG90eXBlLmlhYnM9''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LE0ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxNLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oYixBLEYpe3ZhciBnO3RoaXMuX2V4cGFuZChiLmxlbmd0aCtG''@;'; put 'put ''KTt2YXIgQyxrPTA7Zm9yKGc9MDtnPGIubGVuZ3RoO2crKyl7Qz0oMHx0aGlzLndvcmRzW2crRl0pK2s7dmFyIF89KDB8Yi53b3Jkc1tnXSkqQTtrPSgoQy09NjcxMDg4NjMmXyk+PjI2KS0oXy82NzEwODg2NHwwKSx0aGlzLndvcmRzW2crRl09NjcxMDg4NjMmQ31mb3IoO2c8dGhpcy5sZW5n''@;'; put 'put ''dGgtRjtnKyspaz0oQz0oMHx0aGlzLndvcmRzW2crRl0pK2spPj4yNix0aGlzLndvcmRzW2crRl09NjcxMDg4NjMmQztpZigwPT09aylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihtKC0xPT09ayksaz0wLGc9MDtnPHRoaXMubGVuZ3RoO2crKylrPShDPS0oMHx0aGlzLndvcmRzW2ddKStrKT4+''@;'; put 'put ''MjYsdGhpcy53b3Jkc1tnXT02NzEwODg2MyZDO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihiLEEpe3ZhciBGLEg9dGhpcy5jbG9uZSgpLGc9YixDPTB8Zy53b3Jkc1tnLmxlbmd0aC0xXTswIT0oRj0yNi10aGlzLl9j''@;'; put 'put ''b3VudEJpdHMoQykpJiYoZz1nLnVzaGxuKEYpLEguaXVzaGxuKEYpLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdKTt2YXIgcCxfPUgubGVuZ3RoLWcubGVuZ3RoO2lmKCJtb2QiIT09QSl7KHA9bmV3IE0obnVsbCkpLmxlbmd0aD1fKzEscC53b3Jkcz1uZXcgQXJyYXkocC5sZW5ndGgpO2Zvcih2''@;'; put 'put ''YXIgdz0wO3c8cC5sZW5ndGg7dysrKXAud29yZHNbd109MH12YXIgSz1ILmNsb25lKCkuX2lzaGxuc3VibXVsKGcsMSxfKTswPT09Sy5uZWdhdGl2ZSYmKEg9SyxwJiYocC53b3Jkc1tfXT0xKSk7Zm9yKHZhciB0ZT1fLTE7dGU+PTA7dGUtLSl7dmFyIGNlPTY3MTA4ODY0KigwfEgud29yZHNb''@;'; put 'put ''Zy5sZW5ndGgrdGVdKSsoMHxILndvcmRzW2cubGVuZ3RoK3RlLTFdKTtmb3IoY2U9TWF0aC5taW4oY2UvQ3wwLDY3MTA4ODYzKSxILl9pc2hsbnN1Ym11bChnLGNlLHRlKTswIT09SC5uZWdhdGl2ZTspY2UtLSxILm5lZ2F0aXZlPTAsSC5faXNobG5zdWJtdWwoZywxLHRlKSxILmlzWmVybygp''@;'; put 'put ''fHwoSC5uZWdhdGl2ZV49MSk7cCYmKHAud29yZHNbdGVdPWNlKX1yZXR1cm4gcCYmcC5zdHJpcCgpLEguc3RyaXAoKSwiZGl2IiE9PUEmJjAhPT1GJiZILml1c2hybihGKSx7ZGl2OnB8fG51bGwsbW9kOkh9fSxNLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24oYixBLEYpe3JldHVybiBtKCFi''@;'; put 'put ''LmlzWmVybygpKSx0aGlzLmlzWmVybygpP3tkaXY6bmV3IE0oMCksbW9kOm5ldyBNKDApfTowIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmU/KEM9dGhpcy5uZWcoKS5kaXZtb2QoYixBKSwibW9kIiE9PUEmJihIPUMuZGl2Lm5lZygpKSwiZGl2IiE9PUEmJihnPUMubW9kLm5lZygp''@;'; put 'put ''LEYmJjAhPT1nLm5lZ2F0aXZlJiZnLmlhZGQoYikpLHtkaXY6SCxtb2Q6Z30pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZT8oQz10aGlzLmRpdm1vZChiLm5lZygpLEEpLCJtb2QiIT09QSYmKEg9Qy5kaXYubmVnKCkpLHtkaXY6SCxtb2Q6Qy5tb2R9KTp0aGlzLm5lZ2F0aXZl''@;'; put 'put ''JmIubmVnYXRpdmU/KEM9dGhpcy5uZWcoKS5kaXZtb2QoYi5uZWcoKSxBKSwiZGl2IiE9PUEmJihnPUMubW9kLm5lZygpLEYmJjAhPT1nLm5lZ2F0aXZlJiZnLmlzdWIoYikpLHtkaXY6Qy5kaXYsbW9kOmd9KTpiLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoYik8MD97ZGl2Om5ldyBN''@;'; put 'put ''KDApLG1vZDp0aGlzfToxPT09Yi5sZW5ndGg/ImRpdiI9PT1BP3tkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09PUE/e2RpdjpudWxsLG1vZDpuZXcgTSh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bmV3IE0o''@;'; put 'put ''dGhpcy5tb2RuKGIud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihiLEEpO3ZhciBILGcsQ30sTS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJkaXYiLCExKS5kaXZ9LE0ucHJvdG90eXBlLm1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2Qo''@;'; put 'put ''YiwibW9kIiwhMSkubW9kfSxNLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCEwKS5tb2R9LE0ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKGIpe3ZhciBBPXRoaXMuZGl2bW9kKGIpO2lmKEEubW9kLmlzWmVybygpKXJldHVybiBBLmRp''@;'; put 'put ''djt2YXIgRj0wIT09QS5kaXYubmVnYXRpdmU/QS5tb2QuaXN1YihiKTpBLm1vZCxIPWIudXNocm4oMSksZz1iLmFuZGxuKDEpLEM9Ri5jbXAoSCk7cmV0dXJuIEM8MHx8MT09PWcmJjA9PT1DP0EuZGl2OjAhPT1BLmRpdi5uZWdhdGl2ZT9BLmRpdi5pc3VibigxKTpBLmRpdi5pYWRkbigxKX0s''@;'; put 'put ''TS5wcm90b3R5cGUubW9kbj1mdW5jdGlvbihiKXttKGI8PTY3MTA4ODYzKTtmb3IodmFyIEE9KDE8PDI2KSViLEY9MCxIPXRoaXMubGVuZ3RoLTE7SD49MDtILS0pRj0oQSpGKygwfHRoaXMud29yZHNbSF0pKSViO3JldHVybiBGfSxNLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbihiKXttKGI8''@;'; put 'put ''PTY3MTA4ODYzKTtmb3IodmFyIEE9MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pe3ZhciBIPSgwfHRoaXMud29yZHNbRl0pKzY3MTA4ODY0KkE7dGhpcy53b3Jkc1tGXT1IL2J8MCxBPUglYn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biB0aGlzLmNsb25lKCkuaWRpdm4oYil9LE0ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oYil7bSgwPT09Yi5uZWdhdGl2ZSksbSghYi5pc1plcm8oKSk7dmFyIEE9dGhpcyxGPWIuY2xvbmUoKTtBPTAhPT1BLm5lZ2F0aXZlP0EudW1vZChiKTpBLmNsb25lKCk7Zm9yKHZhciBIPW5ldyBNKDEp''@;'; put 'put ''LGc9bmV3IE0oMCksQz1uZXcgTSgwKSxrPW5ldyBNKDEpLF89MDtBLmlzRXZlbigpJiZGLmlzRXZlbigpOylBLml1c2hybigxKSxGLml1c2hybigxKSwrK187Zm9yKHZhciBwPUYuY2xvbmUoKSx3PUEuY2xvbmUoKTshQS5pc1plcm8oKTspe2Zvcih2YXIgSz0wLHRlPTE7IShBLndvcmRzWzBd''@;'; put 'put ''JnRlKSYmSzwyNjsrK0ssdGU8PD0xKTtpZihLPjApZm9yKEEuaXVzaHJuKEspO0stLSA+MDspKEguaXNPZGQoKXx8Zy5pc09kZCgpKSYmKEguaWFkZChwKSxnLmlzdWIodykpLEguaXVzaHJuKDEpLGcuaXVzaHJuKDEpO2Zvcih2YXIgY2U9MCxoZT0xOyEoRi53b3Jkc1swXSZoZSkmJmNlPDI2''@;'; put 'put ''OysrY2UsaGU8PD0xKTtpZihjZT4wKWZvcihGLml1c2hybihjZSk7Y2UtLSA+MDspKEMuaXNPZGQoKXx8ay5pc09kZCgpKSYmKEMuaWFkZChwKSxrLmlzdWIodykpLEMuaXVzaHJuKDEpLGsuaXVzaHJuKDEpO0EuY21wKEYpPj0wPyhBLmlzdWIoRiksSC5pc3ViKEMpLGcuaXN1YihrKSk6KEYu''@;'; put 'put ''aXN1YihBKSxDLmlzdWIoSCksay5pc3ViKGcpKX1yZXR1cm57YTpDLGI6ayxnY2Q6Ri5pdXNobG4oXyl9fSxNLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24oYil7bSgwPT09Yi5uZWdhdGl2ZSksbSghYi5pc1plcm8oKSk7dmFyIEssQT10aGlzLEY9Yi5jbG9uZSgpO0E9MCE9PUEubmVnYXRp''@;'; put 'put ''dmU/QS51bW9kKGIpOkEuY2xvbmUoKTtmb3IodmFyIEg9bmV3IE0oMSksZz1uZXcgTSgwKSxDPUYuY2xvbmUoKTtBLmNtcG4oMSk+MCYmRi5jbXBuKDEpPjA7KXtmb3IodmFyIGs9MCxfPTE7IShBLndvcmRzWzBdJl8pJiZrPDI2OysrayxfPDw9MSk7aWYoaz4wKWZvcihBLml1c2hybihrKTtr''@;'; put 'put ''LS0gPjA7KUguaXNPZGQoKSYmSC5pYWRkKEMpLEguaXVzaHJuKDEpO2Zvcih2YXIgcD0wLHc9MTshKEYud29yZHNbMF0mdykmJnA8MjY7KytwLHc8PD0xKTtpZihwPjApZm9yKEYuaXVzaHJuKHApO3AtLSA+MDspZy5pc09kZCgpJiZnLmlhZGQoQyksZy5pdXNocm4oMSk7QS5jbXAoRik+PTA/''@;'; put 'put ''KEEuaXN1YihGKSxILmlzdWIoZykpOihGLmlzdWIoQSksZy5pc3ViKEgpKX1yZXR1cm4oSz0wPT09QS5jbXBuKDEpP0g6ZykuY21wbigwKTwwJiZLLmlhZGQoYiksS30sTS5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKGIpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIGIuYWJzKCk7aWYoYi5pc1pl''@;'; put 'put ''cm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgQT10aGlzLmNsb25lKCksRj1iLmNsb25lKCk7QS5uZWdhdGl2ZT0wLEYubmVnYXRpdmU9MDtmb3IodmFyIEg9MDtBLmlzRXZlbigpJiZGLmlzRXZlbigpO0grKylBLml1c2hybigxKSxGLml1c2hybigxKTtmb3IoOzspe2Zvcig7QS5pc0V2ZW4o''@;'; put 'put ''KTspQS5pdXNocm4oMSk7Zm9yKDtGLmlzRXZlbigpOylGLml1c2hybigxKTt2YXIgZz1BLmNtcChGKTtpZihnPDApe3ZhciBDPUE7QT1GLEY9Q31lbHNlIGlmKDA9PT1nfHwwPT09Ri5jbXBuKDEpKWJyZWFrO0EuaXN1YihGKX1yZXR1cm4gRi5pdXNobG4oSCl9LE0ucHJvdG90eXBlLmludm09''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWdjZChiKS5hLnVtb2QoYil9LE0ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiEoMSZ0aGlzLndvcmRzWzBdKX0sTS5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24oKXtyZXR1cm4hKDEmfnRoaXMud29yZHNbMF0pfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5hbmRsbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZifSxNLnByb3RvdHlwZS5iaW5jbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYik7dmFyIEE9YiUyNixGPShiLUEpLzI2LEg9MTw8QTtpZih0aGlzLmxlbmd0aDw9RilyZXR1cm4gdGhpcy5fZXhwYW5kKEYr''@;'; put 'put ''MSksdGhpcy53b3Jkc1tGXXw9SCx0aGlzO2Zvcih2YXIgZz1ILEM9RjswIT09ZyYmQzx0aGlzLmxlbmd0aDtDKyspe3ZhciBrPTB8dGhpcy53b3Jkc1tDXTtnPShrKz1nKT4+PjI2LHRoaXMud29yZHNbQ109ayY9NjcxMDg4NjN9cmV0dXJuIDAhPT1nJiYodGhpcy53b3Jkc1tDXT1nLHRoaXMu''@;'; put 'put ''bGVuZ3RoKyspLHRoaXN9LE0ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxNLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKGIpe3ZhciBGLEE9YjwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhQSlyZXR1cm4tMTtp''@;'; put 'put ''ZigwPT09dGhpcy5uZWdhdGl2ZSYmQSlyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSlGPTE7ZWxzZXtBJiYoYj0tYiksbShiPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgSD0wfHRoaXMud29yZHNbMF07Rj1IPT09Yj8wOkg8Yj8tMToxfXJldHVybiAw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZT8wfC1GOkZ9LE0ucHJvdG90eXBlLmNtcD1mdW5jdGlvbihiKXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiAxO3ZhciBBPXRoaXMudWNtcChiKTty''@;'; put 'put ''ZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtQTpBfSxNLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKGIpe2lmKHRoaXMubGVuZ3RoPmIubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPGIubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgQT0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSl7''@;'; put 'put ''dmFyIEg9MHx0aGlzLndvcmRzW0ZdLGc9MHxiLndvcmRzW0ZdO2lmKEghPT1nKXtIPGc/QT0tMTpIPmcmJihBPTEpO2JyZWFrfX1yZXR1cm4gQX0sTS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKGIpe3JldHVybiAxPT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5ndD1mdW5jdGlvbihiKXty''@;'; put 'put ''ZXR1cm4gMT09PXRoaXMuY21wKGIpfSxNLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcG4oYik+PTB9LE0ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXAoYik+PTB9LE0ucHJvdG90eXBlLmx0bj1mdW5jdGlvbihiKXtyZXR1cm4tMT09''@;'; put 'put ''PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcChiKX0sTS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPD0wfSxNLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIp''@;'; put 'put ''PD0wfSxNLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24oYil7cmV0dXJuIDA9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXAoYil9LE0ucmVkPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgbGUoYil9LE0ucHJvdG90eXBlLnRvUmVkPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiBtKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLG0oMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksYi5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGIpfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sTS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGIpe3JldHVybiB0''@;'; put 'put ''aGlzLnJlZD1iLHRoaXN9LE0ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGIpe3JldHVybiBtKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGIpfSxNLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IG0odGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5pYWRkKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biBtKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhp''@;'; put 'put ''cy5yZWQuc2hsKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsYiksdGhpcy5yZWQubXVsKHRoaXMsYil9LE0ucHJvdG90eXBl''@;'; put 'put ''LnJlZElNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLmltdWwodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG0o''@;'; put 'put ''dGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LE0ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxNLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEo''@;'; put 'put ''dGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sTS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LE0ucHJv''@;'; put 'put ''dG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxNLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oYil7cmV0dXJuIG0o''@;'; put 'put ''dGhpcy5yZWQmJiFiLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxiKX07dmFyIHE9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiBKKFcsYil7dGhpcy5uYW1lPVcsdGhp''@;'; put 'put ''cy5wPW5ldyBNKGIsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBNKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBlZSgpe0ouY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZm''@;'; put 'put ''ZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1mdW5jdGlvbiByZSgpe0ouY2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBpZSgpe0ou''@;'; put 'put ''Y2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiB1ZSgpe0ouY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBsZShXKXtpZigic3RyaW5nIj09dHlwZW9mIFcpe3ZhciBiPU0uX3ByaW1lKFcpO3RoaXMubT1iLnAsdGhpcy5wcmltZT1ifWVsc2UgbShXLmd0bigxKSwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPVcsdGhpcy5wcmltZT1u''@;'; put 'put ''dWxsfWZ1bmN0aW9uIGFlKFcpe2xlLmNhbGwodGhpcyxXKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBNKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1v''@;'; put 'put ''ZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYp''@;'; put 'put ''fUoucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgTShudWxsKTtyZXR1cm4gYi53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLGJ9LEoucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24oYil7dmFyIEYsQT1iO2Rve3RoaXMuc3BsaXQoQSx0aGlzLnRtcCks''@;'; put 'put ''Rj0oQT0oQT10aGlzLmltdWxLKEEpKS5pYWRkKHRoaXMudG1wKSkuYml0TGVuZ3RoKCl9d2hpbGUoRj50aGlzLm4pO3ZhciBIPUY8dGhpcy5uPy0xOkEudWNtcCh0aGlzLnApO3JldHVybiAwPT09SD8oQS53b3Jkc1swXT0wLEEubGVuZ3RoPTEpOkg+MD9BLmlzdWIodGhpcy5wKTp2b2lkIDAh''@;'; put 'put ''PT1BLnN0cmlwP0Euc3RyaXAoKTpBLl9zdHJpcCgpLEF9LEoucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGIsQSl7Yi5pdXNocm4odGhpcy5uLDAsQSl9LEoucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe3JldHVybiBiLmltdWwodGhpcy5rKX0sc2UoZWUsSiksZWUucHJvdG90eXBlLnNw''@;'; put 'put ''bGl0PWZ1bmN0aW9uKGIsQSl7Zm9yKHZhciBGPTQxOTQzMDMsSD1NYXRoLm1pbihiLmxlbmd0aCw5KSxnPTA7ZzxIO2crKylBLndvcmRzW2ddPWIud29yZHNbZ107aWYoQS5sZW5ndGg9SCxiLmxlbmd0aDw9OSlyZXR1cm4gYi53b3Jkc1swXT0wLHZvaWQoYi5sZW5ndGg9MSk7dmFyIEM9Yi53''@;'; put 'put ''b3Jkc1s5XTtmb3IoQS53b3Jkc1tBLmxlbmd0aCsrXT1DJkYsZz0xMDtnPGIubGVuZ3RoO2crKyl7dmFyIGs9MHxiLndvcmRzW2ddO2Iud29yZHNbZy0xMF09KGsmRik8PDR8Qz4+PjIyLEM9a31iLndvcmRzW2ctMTBdPUM+Pj49MjIsYi5sZW5ndGgtPTA9PT1DJiZiLmxlbmd0aD4xMD8xMDo5''@;'; put 'put ''fSxlZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oYil7Yi53b3Jkc1tiLmxlbmd0aF09MCxiLndvcmRzW2IubGVuZ3RoKzFdPTAsYi5sZW5ndGgrPTI7Zm9yKHZhciBBPTAsRj0wO0Y8Yi5sZW5ndGg7RisrKXt2YXIgSD0wfGIud29yZHNbRl07Yi53b3Jkc1tGXT02NzEwODg2MyYoQSs9OTc3''@;'; put 'put ''KkgpLEE9NjQqSCsoQS82NzEwODg2NHwwKX1yZXR1cm4gMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJihiLmxlbmd0aC0tLDA9PT1iLndvcmRzW2IubGVuZ3RoLTFdJiZiLmxlbmd0aC0tKSxifSxzZShyZSxKKSxzZShpZSxKKSxzZSh1ZSxKKSx1ZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24o''@;'; put 'put ''Yil7Zm9yKHZhciBBPTAsRj0wO0Y8Yi5sZW5ndGg7RisrKXt2YXIgSD0xOSooMHxiLndvcmRzW0ZdKStBLGc9NjcxMDg4NjMmSDtIPj4+PTI2LGIud29yZHNbRl09ZyxBPUh9cmV0dXJuIDAhPT1BJiYoYi53b3Jkc1tiLmxlbmd0aCsrXT1BKSxifSxNLl9wcmltZT1mdW5jdGlvbihiKXtpZihx''@;'; put 'put ''W2JdKXJldHVybiBxW2JdO3ZhciBBO2lmKCJrMjU2Ij09PWIpQT1uZXcgZWU7ZWxzZSBpZigicDIyNCI9PT1iKUE9bmV3IHJlO2Vsc2UgaWYoInAxOTIiPT09YilBPW5ldyBpZTtlbHNle2lmKCJwMjU1MTkiIT09Yil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIitiKTtBPW5ldyB1''@;'; put 'put ''ZX1yZXR1cm4gcVtiXT1BLEF9LGxlLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihiKXttKDA9PT1iLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG0oYi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbGUucHJvdG90eXBlLl92ZXJp''@;'; put 'put ''ZnkyPWZ1bmN0aW9uKGIsQSl7bSghKGIubmVnYXRpdmV8QS5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksbShiLnJlZCYmYi5yZWQ9PT1BLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxsZS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbihi''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UoYikuX2ZvcmNlUmVkKHRoaXMpOmIudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pc1plcm8oKT9iLmNsb25lKCk6dGhpcy5tLnN1YihiKS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5hZGQoQSk7cmV0dXJuIEYuY21wKHRoaXMubSk+PTAmJkYuaXN1Yih0aGlzLm0pLEYuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihi''@;'; put 'put ''LEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLmlhZGQoQSk7cmV0dXJuIEYuY21wKHRoaXMubSk+PTAmJkYuaXN1Yih0aGlzLm0pLEZ9LGxlLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5zdWIoQSk7cmV0dXJuIEYuY21wbigwKTww''@;'; put 'put ''JiZGLmlhZGQodGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5pc3ViKEEpO3JldHVybiBGLmNtcG4oMCk8MCYmRi5pYWRkKHRoaXMubSksRn0sbGUucHJvdG90eXBlLnNobD1mdW5jdGlv''@;'; put 'put ''bihiLEEpe3JldHVybiB0aGlzLl92ZXJpZnkxKGIpLHRoaXMuaW1vZChiLnVzaGxuKEEpKX0sbGUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihiLEEpLHRoaXMuaW1vZChiLmltdWwoQSkpfSxsZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIsQSl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYixBKSx0aGlzLmltb2QoYi5tdWwoQSkpfSxsZS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbXVsKGIsYi5jbG9uZSgpKX0sbGUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5tdWwoYixiKX0sbGUucHJv''@;'; put 'put ''dG90eXBlLnNxcnQ9ZnVuY3Rpb24oYil7aWYoYi5pc1plcm8oKSlyZXR1cm4gYi5jbG9uZSgpO3ZhciBBPXRoaXMubS5hbmRsbigzKTtpZihtKEElMj09MSksMz09PUEpe3ZhciBGPXRoaXMubS5hZGQobmV3IE0oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coYixGKX1mb3IodmFyIEg9''@;'; put 'put ''dGhpcy5tLnN1Ym4oMSksZz0wOyFILmlzWmVybygpJiYwPT09SC5hbmRsbigxKTspZysrLEguaXVzaHJuKDEpO20oIUguaXNaZXJvKCkpO3ZhciBDPW5ldyBNKDEpLnRvUmVkKHRoaXMpLGs9Qy5yZWROZWcoKSxfPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxwPXRoaXMubS5iaXRMZW5ndGgo''@;'; put 'put ''KTtmb3IocD1uZXcgTSgyKnAqcCkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KHAsXykuY21wKGspOylwLnJlZElBZGQoayk7Zm9yKHZhciB3PXRoaXMucG93KHAsSCksSz10aGlzLnBvdyhiLEguYWRkbigxKS5pdXNocm4oMSkpLHRlPXRoaXMucG93KGIsSCksY2U9ZzswIT09dGUuY21wKEMp''@;'; put 'put ''Oyl7Zm9yKHZhciBoZT10ZSxTZT0wOzAhPT1oZS5jbXAoQyk7U2UrKyloZT1oZS5yZWRTcXIoKTttKFNlPGNlKTt2YXIgTGU9dGhpcy5wb3codyxuZXcgTSgxKS5pdXNobG4oY2UtU2UtMSkpO0s9Sy5yZWRNdWwoTGUpLHc9TGUucmVkU3FyKCksdGU9dGUucmVkTXVsKHcpLGNlPVNlfXJldHVy''@;'; put 'put ''biBLfSxsZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXt2YXIgQT1iLl9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09QS5uZWdhdGl2ZT8oQS5uZWdhdGl2ZT0wLHRoaXMuaW1vZChBKS5yZWROZWcoKSk6dGhpcy5pbW9kKEEpfSxsZS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGIsQSl7aWYo''@;'; put 'put ''QS5pc1plcm8oKSlyZXR1cm4gbmV3IE0oMSkudG9SZWQodGhpcyk7aWYoMD09PUEuY21wbigxKSlyZXR1cm4gYi5jbG9uZSgpO3ZhciBIPW5ldyBBcnJheSgxNik7SFswXT1uZXcgTSgxKS50b1JlZCh0aGlzKSxIWzFdPWI7Zm9yKHZhciBnPTI7ZzxILmxlbmd0aDtnKyspSFtnXT10aGlzLm11''@;'; put 'put ''bChIW2ctMV0sYik7dmFyIEM9SFswXSxrPTAsXz0wLHA9QS5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXAmJihwPTI2KSxnPUEubGVuZ3RoLTE7Zz49MDtnLS0pe2Zvcih2YXIgdz1BLndvcmRzW2ddLEs9cC0xO0s+PTA7Sy0tKXt2YXIgdGU9dz4+SyYxO0MhPT1IWzBdJiYoQz10aGlzLnNxcihD''@;'; put 'put ''KSksMCE9PXRlfHwwIT09az8oazw8PTEsa3w9dGUsKDQ9PSsrX3x8MD09PWcmJjA9PT1LKSYmKEM9dGhpcy5tdWwoQyxIW2tdKSxfPTAsaz0wKSk6Xz0wfXA9MjZ9cmV0dXJuIEN9LGxlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7dmFyIEE9Yi51bW9kKHRoaXMubSk7cmV0dXJu''@;'; put 'put ''IEE9PT1iP0EuY2xvbmUoKTpBfSxsZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oYil7dmFyIEE9Yi5jbG9uZSgpO3JldHVybiBBLnJlZD1udWxsLEF9LE0ubW9udD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGFlKGIpfSxzZShhZSxsZSksYWUucHJvdG90eXBlLmNvbnZlcnRUbz1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbW9kKGIudXNobG4odGhpcy5zaGlmdCkpfSxhZS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oYil7dmFyIEE9dGhpcy5pbW9kKGIubXVsKHRoaXMucmludikpO3JldHVybiBBLnJlZD1udWxsLEF9LGFlLnByb3RvdHlwZS5pbXVsPWZ1bmN0''@;'; put 'put ''aW9uKGIsQSl7aWYoYi5pc1plcm8oKXx8QS5pc1plcm8oKSlyZXR1cm4gYi53b3Jkc1swXT0wLGIubGVuZ3RoPTEsYjt2YXIgRj1iLmltdWwoQSksSD1GLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPUYuaXN1YihIKS5p''@;'; put 'put ''dXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sYWUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLEEpe2lmKGIuaXNaZXJvKCl8fEEuaXNa''@;'; put 'put ''ZXJvKCkpcmV0dXJuIG5ldyBNKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgRj1iLm11bChBKSxIPUYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGc9Ri5pc3ViKEgpLml1c2hybih0aGlzLnNoaWZ0KSxDPWc7cmV0dXJuIGcu''@;'; put 'put ''Y21wKHRoaXMubSk+PTA/Qz1nLmlzdWIodGhpcy5tKTpnLmNtcG4oMCk8MCYmKEM9Zy5pYWRkKHRoaXMubSkpLEMuX2ZvcmNlUmVkKHRoaXMpfSxhZS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5pbW9kKGIuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9y''@;'; put 'put ''Y2VSZWQodGhpcyl9fShRZT1SLm5tZChRZSksdGhpcyl9LDU1MTg4OihRZSxNZSk9PnshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9yKHZhciBSPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixvZT1uZXcgVWludDhB''@;'; put 'put ''cnJheSgyNTYpLHg9MDt4PDY0O3grKylvZVtSLmNoYXJDb2RlQXQoeCldPXg7TWUubD1mdW5jdGlvbihtKXt2YXIgTSxzZT1uZXcgVWludDhBcnJheShtKSxPPXNlLmxlbmd0aCxJPSIiO2ZvcihNPTA7TTxPO00rPTMpSSs9UltzZVtNXT4+Ml0sSSs9UlsoMyZzZVtNXSk8PDR8c2VbTSsxXT4+''@;'; put 'put ''NF0sSSs9UlsoMTUmc2VbTSsxXSk8PDJ8c2VbTSsyXT4+Nl0sSSs9Uls2MyZzZVtNKzJdXTtyZXR1cm4gTyUzPT0yP0k9SS5zdWJzdHJpbmcoMCxJLmxlbmd0aC0xKSsiPSI6TyUzPT0xJiYoST1JLnN1YnN0cmluZygwLEkubGVuZ3RoLTIpKyI9PSIpLEl9LE1lLkQ9ZnVuY3Rpb24obSl7dmFy''@;'; put 'put ''IE8saixHLEQsVCxzZT0uNzUqbS5sZW5ndGgsTT1tLmxlbmd0aCxJPTA7Ij0iPT09bVttLmxlbmd0aC0xXSYmKHNlLS0sIj0iPT09bVttLmxlbmd0aC0yXSYmc2UtLSk7dmFyIEU9bmV3IEFycmF5QnVmZmVyKHNlKSx6PW5ldyBVaW50OEFycmF5KEUpO2ZvcihPPTA7TzxNO08rPTQpaj1vZVtt''@;'; put 'put ''LmNoYXJDb2RlQXQoTyldLEc9b2VbbS5jaGFyQ29kZUF0KE8rMSldLEQ9b2VbbS5jaGFyQ29kZUF0KE8rMildLFQ9b2VbbS5jaGFyQ29kZUF0KE8rMyldLHpbSSsrXT1qPDwyfEc+PjQseltJKytdPSgxNSZHKTw8NHxEPj4yLHpbSSsrXT0oMyZEKTw8Nnw2MyZUO3JldHVybiBFfX0oKX0sMTM5''@;'; put 'put ''ODE6KFFlLE1lKT0+eyJ1c2Ugc3RyaWN0IjtNZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIEkoeil7dmFyIE49Tyh6KSxaPU5bMV07cmV0dXJuIDMqKE5bMF0rWikvNC1afSxNZS50b0J5dGVBcnJheT1mdW5jdGlvbiBHKHope3ZhciBOLGVlLEI9Tyh6KSxaPUJbMF0sWT1CWzFdLFU9bmV3IHgoZnVu''@;'; put 'put ''Y3Rpb24gaih6LE4sQil7cmV0dXJuIDMqKE4rQikvNC1CfSgwLFosWSkpLHE9MCxKPVk+MD9aLTQ6Wjtmb3IoZWU9MDtlZTxKO2VlKz00KU49b2Vbei5jaGFyQ29kZUF0KGVlKV08PDE4fG9lW3ouY2hhckNvZGVBdChlZSsxKV08PDEyfG9lW3ouY2hhckNvZGVBdChlZSsyKV08PDZ8b2Vbei5j''@;'; put 'put ''aGFyQ29kZUF0KGVlKzMpXSxVW3ErK109Tj4+MTYmMjU1LFVbcSsrXT1OPj44JjI1NSxVW3ErK109MjU1Jk47cmV0dXJuIDI9PT1ZJiYoTj1vZVt6LmNoYXJDb2RlQXQoZWUpXTw8MnxvZVt6LmNoYXJDb2RlQXQoZWUrMSldPj40LFVbcSsrXT0yNTUmTiksMT09PVkmJihOPW9lW3ouY2hhckNv''@;'; put 'put ''ZGVBdChlZSldPDwxMHxvZVt6LmNoYXJDb2RlQXQoZWUrMSldPDw0fG9lW3ouY2hhckNvZGVBdChlZSsyKV0+PjIsVVtxKytdPU4+PjgmMjU1LFVbcSsrXT0yNTUmTiksVX0sTWUuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbiBFKHope2Zvcih2YXIgTixCPXoubGVuZ3RoLFo9QiUzLFk9W10sVT0x''@;'; put 'put ''NjM4MyxxPTAsSj1CLVo7cTxKO3ErPVUpWS5wdXNoKFQoeixxLHErVT5KP0o6cStVKSk7cmV0dXJuIDE9PT1aP1kucHVzaChSWyhOPXpbQi0xXSk+PjJdK1JbTjw8NCY2M10rIj09Iik6Mj09PVomJlkucHVzaChSWyhOPSh6W0ItMl08PDgpK3pbQi0xXSk+PjEwXStSW04+PjQmNjNdK1JbTjw8''@;'; put 'put ''MiY2M10rIj0iKSxZLmpvaW4oIiIpfTtmb3IodmFyIFI9W10sb2U9W10seD10eXBlb2YgVWludDhBcnJheTwidSI/VWludDhBcnJheTpBcnJheSxtPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixzZT0wO3NlPDY0Oysr''@;'; put 'put ''c2UpUltzZV09bVtzZV0sb2VbbS5jaGFyQ29kZUF0KHNlKV09c2U7ZnVuY3Rpb24gTyh6KXt2YXIgTj16Lmxlbmd0aDtpZihOJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgQj16LmluZGV4T2YoIj0iKTty''@;'; put 'put ''ZXR1cm4tMT09PUImJihCPU4pLFtCLEI9PT1OPzA6NC1CJTRdfWZ1bmN0aW9uIEQoeil7cmV0dXJuIFJbej4+MTgmNjNdK1Jbej4+MTImNjNdK1Jbej4+NiY2M10rUls2MyZ6XX1mdW5jdGlvbiBUKHosTixCKXtmb3IodmFyIFk9W10sVT1OO1U8QjtVKz0zKVkucHVzaChEKCh6W1VdPDwxNiYx''@;'; put 'put ''NjcxMTY4MCkrKHpbVSsxXTw8OCY2NTI4MCkrKDI1NSZ6W1UrMl0pKSk7cmV0dXJuIFkuam9pbigiIil9b2VbNDVdPTYyLG9lWzk1XT02M30sOTE3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSx4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShGLEgpe2lmKCFGKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcihIfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWZ1bmN0aW9uIHNlKEYsSCl7Ri5zdXBlcl89SDt2YXIgZz1mdW5jdGlvbigpe307Zy5wcm90b3R5cGU9SC5wcm90b3R5cGUsRi5wcm90b3R5cGU9bmV3IGcsRi5wcm90b3R5cGUuY29uc3RydWN0b3I9Rn1mdW5jdGlvbiBNKEYsSCxnKXtpZihN''@;'; put 'put ''LmlzQk4oRikpcmV0dXJuIEY7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PUYmJigoImxlIj09PUh8fCJiZSI9PT1IKSYmKGc9SCxIPTEwKSx0aGlzLl9pbml0KEZ8fDAsSHx8MTAsZ3x8ImJlIikpfXZhciBPOyJvYmpl''@;'; put 'put ''Y3QiPT10eXBlb2Ygb2U/b2UuZXhwb3J0cz1NOnguQk49TSxNLkJOPU0sTS53b3JkU2l6ZT0yNjt0cnl7Tz10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5CdWZmZXI8InUiP3dpbmRvdy5CdWZmZXI6Uig0Nzc5MCkuQnVmZmVyfWNhdGNoe31mdW5jdGlvbiBJKEYsSCl7dmFyIGc9''@;'; put 'put ''Ri5jaGFyQ29kZUF0KEgpO3JldHVybiBnPj00OCYmZzw9NTc/Zy00ODpnPj02NSYmZzw9NzA/Zy01NTpnPj05NyYmZzw9MTAyP2ctODc6dm9pZCBtKCExLCJJbnZhbGlkIGNoYXJhY3RlciBpbiAiK0YpfWZ1bmN0aW9uIGooRixILGcpe3ZhciBDPUkoRixnKTtyZXR1cm4gZy0xPj1IJiYoQ3w9''@;'; put 'put ''SShGLGctMSk8PDQpLEN9ZnVuY3Rpb24gRyhGLEgsZyxDKXtmb3IodmFyIGs9MCxfPTAscD1NYXRoLm1pbihGLmxlbmd0aCxnKSx3PUg7dzxwO3crKyl7dmFyIEs9Ri5jaGFyQ29kZUF0KHcpLTQ4O2sqPUMsXz1LPj00OT9LLTQ5KzEwOks+PTE3P0stMTcrMTA6SyxtKEs+PTAmJl88QywiSW52''@;'; put 'put ''YWxpZCBjaGFyYWN0ZXIiKSxrKz1ffXJldHVybiBrfWZ1bmN0aW9uIEQoRixIKXtGLndvcmRzPUgud29yZHMsRi5sZW5ndGg9SC5sZW5ndGgsRi5uZWdhdGl2ZT1ILm5lZ2F0aXZlLEYucmVkPUgucmVkfWlmKE0uaXNCTj1mdW5jdGlvbihIKXtyZXR1cm4gSCBpbnN0YW5jZW9mIE18fG51bGwh''@;'; put 'put ''PT1IJiYib2JqZWN0Ij09dHlwZW9mIEgmJkguY29uc3RydWN0b3Iud29yZFNpemU9PT1NLndvcmRTaXplJiZBcnJheS5pc0FycmF5KEgud29yZHMpfSxNLm1heD1mdW5jdGlvbihILGcpe3JldHVybiBILmNtcChnKT4wP0g6Z30sTS5taW49ZnVuY3Rpb24oSCxnKXtyZXR1cm4gSC5jbXAoZyk8''@;'; put 'put ''MD9IOmd9LE0ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKEgsZyxDKXtpZigibnVtYmVyIj09dHlwZW9mIEgpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoSCxnLEMpO2lmKCJvYmplY3QiPT10eXBlb2YgSClyZXR1cm4gdGhpcy5faW5pdEFycmF5KEgsZyxDKTsiaGV4Ij09PWcmJihnPTE2KSxt''@;'; put 'put ''KGc9PT0oMHxnKSYmZz49MiYmZzw9MzYpO3ZhciBrPTA7Ii0iPT09KEg9SC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihrKyssdGhpcy5uZWdhdGl2ZT0xKSxrPEgubGVuZ3RoJiYoMTY9PT1nP3RoaXMuX3BhcnNlSGV4KEgsayxDKToodGhpcy5fcGFyc2VCYXNlKEgsZyxr''@;'; put 'put ''KSwibGUiPT09QyYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGcsQykpKX0sTS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oSCxnLEMpe0g8MCYmKHRoaXMubmVnYXRpdmU9MSxIPS1IKSxIPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZIXSx0aGlzLmxlbmd0''@;'; put 'put ''aD0xKTpIPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJkgsSC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG0oSDw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZILEgvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9''@;'; put 'put ''MyksImxlIj09PUMmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxnLEMpfSxNLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKEgsZyxDKXtpZihtKCJudW1iZXIiPT10eXBlb2YgSC5sZW5ndGgpLEgubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0''@;'; put 'put ''aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKEgubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGs9MDtrPHRoaXMubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPTA7dmFyIF8scCx3PTA7aWYoImJlIj09PUMpZm9yKGs9SC5sZW5ndGgtMSxf''@;'; put 'put ''PTA7az49MDtrLT0zKXRoaXMud29yZHNbX118PShwPUhba118SFtrLTFdPDw4fEhbay0yXTw8MTYpPDx3JjY3MTA4ODYzLHRoaXMud29yZHNbXysxXT1wPj4+MjYtdyY2NzEwODg2Mywodys9MjQpPj0yNiYmKHctPTI2LF8rKyk7ZWxzZSBpZigibGUiPT09Qylmb3Ioaz0wLF89MDtrPEgubGVu''@;'; put 'put ''Z3RoO2srPTMpdGhpcy53b3Jkc1tfXXw9KHA9SFtrXXxIW2srMV08PDh8SFtrKzJdPDwxNik8PHcmNjcxMDg4NjMsdGhpcy53b3Jkc1tfKzFdPXA+Pj4yNi13JjY3MTA4ODYzLCh3Kz0yNCk+PTI2JiYody09MjYsXysrKTtyZXR1cm4gdGhpcy5fc3RyaXAoKX0sTS5wcm90b3R5cGUuX3BhcnNl''@;'; put 'put ''SGV4PWZ1bmN0aW9uKEgsZyxDKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKEgubGVuZ3RoLWcpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGs9MDtrPHRoaXMubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPTA7dmFyIHcsXz0wLHA9MDtpZigiYmUiPT09Qylm''@;'; put 'put ''b3Ioaz1ILmxlbmd0aC0xO2s+PWc7ay09Mil3PWooSCxnLGspPDxfLHRoaXMud29yZHNbcF18PTY3MTA4ODYzJncsXz49MTg/KF8tPTE4LHRoaXMud29yZHNbcCs9MV18PXc+Pj4yNik6Xys9ODtlbHNlIGZvcihrPShILmxlbmd0aC1nKSUyPT0wP2crMTpnO2s8SC5sZW5ndGg7ays9Mil3PWoo''@;'; put 'put ''SCxnLGspPDxfLHRoaXMud29yZHNbcF18PTY3MTA4ODYzJncsXz49MTg/KF8tPTE4LHRoaXMud29yZHNbcCs9MV18PXc+Pj4yNik6Xys9ODt0aGlzLl9zdHJpcCgpfSxNLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKEgsZyxDKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zv''@;'; put 'put ''cih2YXIgaz0wLF89MTtfPD02NzEwODg2MztfKj1nKWsrKztrLS0sXz1fL2d8MDtmb3IodmFyIHA9SC5sZW5ndGgtQyx3PXAlayxLPU1hdGgubWluKHAscC13KStDLHRlPTAsY2U9QztjZTxLO2NlKz1rKXRlPUcoSCxjZSxjZStrLGcpLHRoaXMuaW11bG4oXyksdGhpcy53b3Jkc1swXSt0ZTw2''@;'; put 'put ''NzEwODg2ND90aGlzLndvcmRzWzBdKz10ZTp0aGlzLl9pYWRkbih0ZSk7aWYoMCE9PXcpe3ZhciBoZT0xO2Zvcih0ZT1HKEgsY2UsSC5sZW5ndGgsZyksY2U9MDtjZTx3O2NlKyspaGUqPWc7dGhpcy5pbXVsbihoZSksdGhpcy53b3Jkc1swXSt0ZTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz10''@;'; put 'put ''ZTp0aGlzLl9pYWRkbih0ZSl9dGhpcy5fc3RyaXAoKX0sTS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihIKXtILndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBnPTA7Zzx0aGlzLmxlbmd0aDtnKyspSC53b3Jkc1tnXT10aGlzLndvcmRzW2ddO0gubGVuZ3RoPXRoaXMubGVu''@;'; put 'put ''Z3RoLEgubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxILnJlZD10aGlzLnJlZH0sTS5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24oSCl7RChILHRoaXMpfSxNLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBIPW5ldyBNKG51bGwpO3JldHVybiB0aGlzLmNvcHkoSCksSH0sTS5wcm90b3R5''@;'; put 'put ''cGUuX2V4cGFuZD1mdW5jdGlvbihIKXtmb3IoO3RoaXMubGVuZ3RoPEg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sTS5wcm90b3R5cGUuX3N0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTsp''@;'; put 'put ''dGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LHR5cGVvZiBTeW1ib2w8InUiJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sLmZvcil0cnl7TS5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09VH1jYXRjaHtNLnByb3RvdHlwZS5pbnNwZWN0PVR9ZWxzZSBNLnByb3RvdHlwZS5pbnNwZWN0PVQ7ZnVuY3Rpb24gVCgpe3JldHVybih0aGlzLnJl''@;'; put 'put ''ZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifXZhciBFPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLHo9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2''@;'; put 'put ''LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sTj1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkw''@;'; put 'put ''NjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUy''@;'; put 'put ''NTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBZKEYsSCxnKXtnLm5lZ2F0aXZlPUgubmVnYXRpdmVeRi5uZWdhdGl2ZTt2YXIgQz1GLmxlbmd0aCtILmxlbmd0aHwwO2cubGVuZ3RoPUMsQz1DLTF8MDt2YXIgaz0wfEYud29yZHNbMF0sXz0wfEgud29yZHNbMF0scD1rKl8sSz1wLzY3MTA4ODY0''@;'; put 'put ''fDA7Zy53b3Jkc1swXT02NzEwODg2MyZwO2Zvcih2YXIgdGU9MTt0ZTxDO3RlKyspe2Zvcih2YXIgY2U9Sz4+PjI2LGhlPTY3MTA4ODYzJkssU2U9TWF0aC5taW4odGUsSC5sZW5ndGgtMSksTGU9TWF0aC5tYXgoMCx0ZS1GLmxlbmd0aCsxKTtMZTw9U2U7TGUrKyljZSs9KHA9KGs9MHxGLndv''@;'; put 'put ''cmRzW3RlLUxlfDBdKSooXz0wfEgud29yZHNbTGVdKStoZSkvNjcxMDg4NjR8MCxoZT02NzEwODg2MyZwO2cud29yZHNbdGVdPTB8aGUsSz0wfGNlfXJldHVybiAwIT09Sz9nLndvcmRzW3RlXT0wfEs6Zy5sZW5ndGgtLSxnLl9zdHJpcCgpfU0ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9u''@;'; put 'put ''KEgsZyl7dmFyIEM7aWYoZz0wfGd8fDEsMTY9PT0oSD1IfHwxMCl8fCJoZXgiPT09SCl7Qz0iIjtmb3IodmFyIGs9MCxfPTAscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXt2YXIgdz10aGlzLndvcmRzW3BdLEs9KDE2Nzc3MjE1Jih3PDxrfF8pKS50b1N0cmluZygxNik7Xz13Pj4+MjQtayYxNjc3''@;'; put 'put ''NzIxNSwoays9Mik+PTI2JiYoay09MjYscC0tKSxDPTAhPT1ffHxwIT09dGhpcy5sZW5ndGgtMT9FWzYtSy5sZW5ndGhdK0srQzpLK0N9Zm9yKDAhPT1fJiYoQz1fLnRvU3RyaW5nKDE2KStDKTtDLmxlbmd0aCVnIT0wOylDPSIwIitDO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEM9Ii0i''@;'; put 'put ''K0MpLEN9aWYoSD09PSgwfEgpJiZIPj0yJiZIPD0zNil7dmFyIHRlPXpbSF0sY2U9TltIXTtDPSIiO3ZhciBoZT10aGlzLmNsb25lKCk7Zm9yKGhlLm5lZ2F0aXZlPTA7IWhlLmlzWmVybygpOyl7dmFyIFNlPWhlLm1vZHJuKGNlKS50b1N0cmluZyhIKTtDPShoZT1oZS5pZGl2bihjZSkpLmlz''@;'; put 'put ''WmVybygpP1NlK0M6RVt0ZS1TZS5sZW5ndGhdK1NlK0N9Zm9yKHRoaXMuaXNaZXJvKCkmJihDPSIwIitDKTtDLmxlbmd0aCVnIT0wOylDPSIwIitDO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEM9Ii0iK0MpLEN9bSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxN''@;'; put 'put ''LnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBIPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9IKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/SCs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0''@;'; put 'put ''aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm0oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1IOkh9LE0ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfSxPJiYo''@;'; put 'put ''TS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oSCxnKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShPLEgsZyl9KSxNLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKEgsZyl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksSCxnKX0sTS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVu''@;'; put 'put ''Y3Rpb24oSCxnLEMpe3RoaXMuX3N0cmlwKCk7dmFyIGs9dGhpcy5ieXRlTGVuZ3RoKCksXz1DfHxNYXRoLm1heCgxLGspO20oazw9XywiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLG0oXz4wLCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKTt2YXIgcD1mdW5j''@;'; put 'put ''dGlvbihILGcpe3JldHVybiBILmFsbG9jVW5zYWZlP0guYWxsb2NVbnNhZmUoZyk6bmV3IEgoZyl9KEgsXyk7cmV0dXJuIHRoaXNbIl90b0FycmF5TGlrZSIrKCJsZSI9PT1nPyJMRSI6IkJFIildKHAsaykscH0sTS5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEU9ZnVuY3Rpb24oSCxnKXtmb3Io''@;'; put 'put ''dmFyIEM9MCxrPTAsXz0wLHA9MDtfPHRoaXMubGVuZ3RoO18rKyl7dmFyIHc9dGhpcy53b3Jkc1tfXTw8cHxrO0hbQysrXT0yNTUmdyxDPEgubGVuZ3RoJiYoSFtDKytdPXc+PjgmMjU1KSxDPEgubGVuZ3RoJiYoSFtDKytdPXc+PjE2JjI1NSksNj09PXA/KEM8SC5sZW5ndGgmJihIW0MrK109''@;'; put 'put ''dz4+MjQmMjU1KSxrPTAscD0wKTooaz13Pj4+MjQscCs9Mil9aWYoQzxILmxlbmd0aClmb3IoSFtDKytdPWs7QzxILmxlbmd0aDspSFtDKytdPTB9LE0ucHJvdG90eXBlLl90b0FycmF5TGlrZUJFPWZ1bmN0aW9uKEgsZyl7Zm9yKHZhciBDPUgubGVuZ3RoLTEsaz0wLF89MCxwPTA7Xzx0aGlz''@;'; put 'put ''Lmxlbmd0aDtfKyspe3ZhciB3PXRoaXMud29yZHNbX108PHB8aztIW0MtLV09MjU1JncsQz49MCYmKEhbQy0tXT13Pj44JjI1NSksQz49MCYmKEhbQy0tXT13Pj4xNiYyNTUpLDY9PT1wPyhDPj0wJiYoSFtDLS1dPXc+PjI0JjI1NSksaz0wLHA9MCk6KGs9dz4+PjI0LHArPTIpfWlmKEM+PTAp''@;'; put 'put ''Zm9yKEhbQy0tXT1rO0M+PTA7KUhbQy0tXT0wfSxNLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oSCl7cmV0dXJuIDMyLU1hdGguY2x6MzIoSCl9OmZ1bmN0aW9uKEgpe3ZhciBnPUgsQz0wO3JldHVybiBnPj00MDk2JiYoQys9MTMsZz4+Pj0xMyksZz49NjQmJihD''@;'; put 'put ''Kz03LGc+Pj49NyksZz49OCYmKEMrPTQsZz4+Pj00KSxnPj0yJiYoQys9MixnPj4+PTIpLEMrZ30sTS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKEgpe2lmKDA9PT1IKXJldHVybiAyNjt2YXIgZz1ILEM9MDtyZXR1cm4gODE5MSZnfHwoQys9MTMsZz4+Pj0xMyksMTI3Jmd8fChDKz03''@;'; put 'put ''LGc+Pj49NyksMTUmZ3x8KEMrPTQsZz4+Pj00KSwzJmd8fChDKz0yLGc+Pj49MiksMSZnfHxDKyssQ30sTS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgt''@;'; put 'put ''MSkrZ30sTS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgSD0wLGc9MDtnPHRoaXMubGVuZ3RoO2crKyl7dmFyIEM9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tnXSk7aWYoSCs9QywyNiE9PUMpYnJlYWt9cmV0dXJuIEh9''@;'; put 'put ''LE0ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE0ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihIKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihIKS5pYWRkbigxKTp0aGlzLmNs''@;'; put 'put ''b25lKCl9LE0ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLnRlc3RuKEgtMSk/dGhpcy5ub3RuKEgpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LE0ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxNLnBy''@;'; put 'put ''b3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sTS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sTS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihIKXtmb3IoO3RoaXMu''@;'; put 'put ''bGVuZ3RoPEgubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBnPTA7ZzxILmxlbmd0aDtnKyspdGhpcy53b3Jkc1tnXT10aGlzLndvcmRzW2ddfEgud29yZHNbZ107cmV0dXJuIHRoaXMuX3N0cmlwKCl9LE0ucHJvdG90eXBlLmlvcj1mdW5jdGlvbihIKXtyZXR1''@;'; put 'put ''cm4gbSghKHRoaXMubmVnYXRpdmV8SC5uZWdhdGl2ZSkpLHRoaXMuaXVvcihIKX0sTS5wcm90b3R5cGUub3I9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMubGVuZ3RoPkgubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IoSCk6SC5jbG9uZSgpLmlvcih0aGlzKX0sTS5wcm90b3R5cGUudW9yPWZ1bmN0''@;'; put 'put ''aW9uKEgpe3JldHVybiB0aGlzLmxlbmd0aD5ILmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcihIKTpILmNsb25lKCkuaXVvcih0aGlzKX0sTS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24oSCl7dmFyIGc7Zz10aGlzLmxlbmd0aD5ILmxlbmd0aD9IOnRoaXM7Zm9yKHZhciBDPTA7QzxnLmxlbmd0''@;'; put 'put ''aDtDKyspdGhpcy53b3Jkc1tDXT10aGlzLndvcmRzW0NdJkgud29yZHNbQ107cmV0dXJuIHRoaXMubGVuZ3RoPWcubGVuZ3RoLHRoaXMuX3N0cmlwKCl9LE0ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oSCl7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfEgubmVnYXRpdmUpKSx0aGlzLml1YW5k''@;'; put 'put ''KEgpfSxNLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMubGVuZ3RoPkgubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKEgpOkguY2xvbmUoKS5pYW5kKHRoaXMpfSxNLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmxlbmd0aD5ILmxlbmd0aD90aGlz''@;'; put 'put ''LmNsb25lKCkuaXVhbmQoSCk6SC5jbG9uZSgpLml1YW5kKHRoaXMpfSxNLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihIKXt2YXIgZyxDO3RoaXMubGVuZ3RoPkgubGVuZ3RoPyhnPXRoaXMsQz1IKTooZz1ILEM9dGhpcyk7Zm9yKHZhciBrPTA7azxDLmxlbmd0aDtrKyspdGhpcy53b3Jkc1tr''@;'; put 'put ''XT1nLndvcmRzW2tdXkMud29yZHNba107aWYodGhpcyE9PWcpZm9yKDtrPGcubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPWcud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPWcubGVuZ3RoLHRoaXMuX3N0cmlwKCl9LE0ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oSCl7cmV0dXJuIG0oISh0''@;'; put 'put ''aGlzLm5lZ2F0aXZlfEgubmVnYXRpdmUpKSx0aGlzLml1eG9yKEgpfSxNLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMubGVuZ3RoPkgubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKEgpOkguY2xvbmUoKS5peG9yKHRoaXMpfSxNLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9u''@;'; put 'put ''KEgpe3JldHVybiB0aGlzLmxlbmd0aD5ILmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoSCk6SC5jbG9uZSgpLml1eG9yKHRoaXMpfSxNLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihIKXttKCJudW1iZXIiPT10eXBlb2YgSCYmSD49MCk7dmFyIGc9MHxNYXRoLmNlaWwoSC8yNiksQz1IJTI2''@;'; put 'put ''O3RoaXMuX2V4cGFuZChnKSxDPjAmJmctLTtmb3IodmFyIGs9MDtrPGc7aysrKXRoaXMud29yZHNba109NjcxMDg4NjMmfnRoaXMud29yZHNba107cmV0dXJuIEM+MCYmKHRoaXMud29yZHNba109fnRoaXMud29yZHNba10mNjcxMDg4NjM+PjI2LUMpLHRoaXMuX3N0cmlwKCl9LE0ucHJvdG90''@;'; put 'put ''eXBlLm5vdG49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihIKX0sTS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihILGcpe20oIm51bWJlciI9PXR5cGVvZiBIJiZIPj0wKTt2YXIgQz1ILzI2fDAsaz1IJTI2O3JldHVybiB0aGlzLl9leHBhbmQoQysxKSx0aGlzLndvcmRz''@;'; put 'put ''W0NdPWc/dGhpcy53b3Jkc1tDXXwxPDxrOnRoaXMud29yZHNbQ10mfigxPDxrKSx0aGlzLl9zdHJpcCgpfSxNLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKEgpe3ZhciBnLEMsaztpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PUgubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxnPXRo''@;'; put 'put ''aXMuaXN1YihIKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1ILm5lZ2F0aXZlKXJldHVybiBILm5lZ2F0aXZlPTAsZz10aGlzLmlzdWIoSCksSC5uZWdhdGl2ZT0xLGcuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+SC5sZW5ndGg/''@;'; put 'put ''KEM9dGhpcyxrPUgpOihDPUgsaz10aGlzKTtmb3IodmFyIF89MCxwPTA7cDxrLmxlbmd0aDtwKyspdGhpcy53b3Jkc1twXT02NzEwODg2MyYoZz0oMHxDLndvcmRzW3BdKSsoMHxrLndvcmRzW3BdKStfKSxfPWc+Pj4yNjtmb3IoOzAhPT1fJiZwPEMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3Bd''@;'; put 'put ''PTY3MTA4ODYzJihnPSgwfEMud29yZHNbcF0pK18pLF89Zz4+PjI2O2lmKHRoaXMubGVuZ3RoPUMubGVuZ3RoLDAhPT1fKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPV8sdGhpcy5sZW5ndGgrKztlbHNlIGlmKEMhPT10aGlzKWZvcig7cDxDLmxlbmd0aDtwKyspdGhpcy53b3Jkc1twXT1DLndv''@;'; put 'put ''cmRzW3BdO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oSCl7dmFyIGc7cmV0dXJuIDAhPT1ILm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oSC5uZWdhdGl2ZT0wLGc9dGhpcy5zdWIoSCksSC5uZWdhdGl2ZV49MSxnKTowPT09SC5uZWdhdGl2ZSYmMCE9PXRoaXMu''@;'; put 'put ''bmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxnPUguc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxnKTp0aGlzLmxlbmd0aD5ILmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChIKTpILmNsb25lKCkuaWFkZCh0aGlzKX0sTS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihIKXtpZigwIT09SC5uZWdh''@;'; put 'put ''dGl2ZSl7SC5uZWdhdGl2ZT0wO3ZhciBnPXRoaXMuaWFkZChIKTtyZXR1cm4gSC5uZWdhdGl2ZT0xLGcuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoSCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFy''@;'; put 'put ''IGssXyxDPXRoaXMuY21wKEgpO2lmKDA9PT1DKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztDPjA/KGs9dGhpcyxfPUgpOihrPUgsXz10aGlzKTtmb3IodmFyIHA9MCx3PTA7dzxfLmxlbmd0aDt3KyspcD0oZz0oMHxrLndvcmRzW3dd''@;'; put 'put ''KS0oMHxfLndvcmRzW3ddKStwKT4+MjYsdGhpcy53b3Jkc1t3XT02NzEwODg2MyZnO2Zvcig7MCE9PXAmJnc8ay5sZW5ndGg7dysrKXA9KGc9KDB8ay53b3Jkc1t3XSkrcCk+PjI2LHRoaXMud29yZHNbd109NjcxMDg4NjMmZztpZigwPT09cCYmdzxrLmxlbmd0aCYmayE9PXRoaXMpZm9yKDt3''@;'; put 'put ''PGsubGVuZ3RoO3crKyl0aGlzLndvcmRzW3ddPWsud29yZHNbd107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHcpLGshPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLl9zdHJpcCgpfSxNLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMu''@;'; put 'put ''Y2xvbmUoKS5pc3ViKEgpfTt2YXIgVT1mdW5jdGlvbihILGcsQyl7dmFyIEssdGUsY2Usaz1ILndvcmRzLF89Zy53b3JkcyxwPUMud29yZHMsdz0wLGhlPTB8a1swXSxTZT04MTkxJmhlLExlPWhlPj4+MTMsSGU9MHxrWzFdLHhlPTgxOTEmSGUsRGU9SGU+Pj4xMyxCZT0wfGtbMl0sR2U9ODE5''@;'; put 'put ''MSZCZSxVZT1CZT4+PjEzLHFlPTB8a1szXSxvdD04MTkxJnFlLEZlPXFlPj4+MTMsd2U9MHxrWzRdLEVlPTgxOTEmd2UsSWU9d2U+Pj4xMyxYZT0wfGtbNV0sdHQ9ODE5MSZYZSxaZT1YZT4+PjEzLGN0PTB8a1s2XSxrZT04MTkxJmN0LEFlPWN0Pj4+MTMsamU9MHxrWzddLGl0PTgxOTEmamUs''@;'; put 'put ''c3Q9amU+Pj4xMyx4dD0wfGtbOF0sRnQ9ODE5MSZ4dCxPdD14dD4+PjEzLEt0PTB8a1s5XSxibj04MTkxJkt0LEJ0PUt0Pj4+MTMseW49MHxfWzBdLE5uPTgxOTEmeW4sbm49eW4+Pj4xMyxHbj0wfF9bMV0sWW49ODE5MSZHbixmdD1Hbj4+PjEzLGRuPTB8X1syXSxobj04MTkxJmRuLHd0PWRu''@;'; put 'put ''Pj4+MTMsanQ9MHxfWzNdLG10PTgxOTEmanQsSHQ9anQ+Pj4xMyxwbj0wfF9bNF0sbnQ9ODE5MSZwbixFdD1wbj4+PjEzLGVuPTB8X1s1XSxUdD04MTkxJmVuLHl0PWVuPj4+MTMsJHQ9MHxfWzZdLHhuPTgxOTEmJHQsenQ9JHQ+Pj4xMyxfbj0wfF9bN10sT249ODE5MSZfbixybj1fbj4+PjEz''@;'; put 'put ''LFBuPTB8X1s4XSxDbj04MTkxJlBuLFh0PVBuPj4+MTMsSm49MHxfWzldLHhpPTgxOTEmSm4sYW49Sm4+Pj4xMztDLm5lZ2F0aXZlPUgubmVnYXRpdmVeZy5uZWdhdGl2ZSxDLmxlbmd0aD0xOTt2YXIgdG49KHcrKEs9TWF0aC5pbXVsKFNlLE5uKSl8MCkrKCg4MTkxJih0ZT0odGU9TWF0aC5p''@;'; put 'put ''bXVsKFNlLG5uKSkrTWF0aC5pbXVsKExlLE5uKXwwKSk8PDEzKXwwO3c9KChjZT1NYXRoLmltdWwoTGUsbm4pKSsodGU+Pj4xMyl8MCkrKHRuPj4+MjYpfDAsdG4mPTY3MTA4ODYzLEs9TWF0aC5pbXVsKHhlLE5uKSx0ZT0odGU9TWF0aC5pbXVsKHhlLG5uKSkrTWF0aC5pbXVsKERlLE5uKXww''@;'; put 'put ''LGNlPU1hdGguaW11bChEZSxubik7dmFyIHVpPSh3KyhLPUsrTWF0aC5pbXVsKFNlLFluKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoU2UsZnQpfDApK01hdGguaW11bChMZSxZbil8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKExlLGZ0KXwwKSsodGU+Pj4xMyl8''@;'; put 'put ''MCkrKHVpPj4+MjYpfDAsdWkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEdlLE5uKSx0ZT0odGU9TWF0aC5pbXVsKEdlLG5uKSkrTWF0aC5pbXVsKFVlLE5uKXwwLGNlPU1hdGguaW11bChVZSxubiksSz1LK01hdGguaW11bCh4ZSxZbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHhlLGZ0KXwwKStN''@;'; put 'put ''YXRoLmltdWwoRGUsWW4pfDAsY2U9Y2UrTWF0aC5pbXVsKERlLGZ0KXwwO3ZhciBBcj0odysoSz1LK01hdGguaW11bChTZSxobil8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKFNlLHd0KXwwKStNYXRoLmltdWwoTGUsaG4pfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11''@;'; put 'put ''bChMZSx3dCl8MCkrKHRlPj4+MTMpfDApKyhBcj4+PjI2KXwwLEFyJj02NzEwODg2MyxLPU1hdGguaW11bChvdCxObiksdGU9KHRlPU1hdGguaW11bChvdCxubikpK01hdGguaW11bChGZSxObil8MCxjZT1NYXRoLmltdWwoRmUsbm4pLEs9SytNYXRoLmltdWwoR2UsWW4pfDAsdGU9KHRlPXRl''@;'; put 'put ''K01hdGguaW11bChHZSxmdCl8MCkrTWF0aC5pbXVsKFVlLFluKXwwLGNlPWNlK01hdGguaW11bChVZSxmdCl8MCxLPUsrTWF0aC5pbXVsKHhlLGhuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoeGUsd3QpfDApK01hdGguaW11bChEZSxobil8MCxjZT1jZStNYXRoLmltdWwoRGUsd3QpfDA7dmFy''@;'; put 'put ''IGhyPSh3KyhLPUsrTWF0aC5pbXVsKFNlLG10KXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoU2UsSHQpfDApK01hdGguaW11bChMZSxtdCl8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKExlLEh0KXwwKSsodGU+Pj4xMyl8MCkrKGhyPj4+MjYpfDAsaHImPTY3MTA4''@;'; put 'put ''ODYzLEs9TWF0aC5pbXVsKEVlLE5uKSx0ZT0odGU9TWF0aC5pbXVsKEVlLG5uKSkrTWF0aC5pbXVsKEllLE5uKXwwLGNlPU1hdGguaW11bChJZSxubiksSz1LK01hdGguaW11bChvdCxZbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKG90LGZ0KXwwKStNYXRoLmltdWwoRmUsWW4pfDAsY2U9Y2Ur''@;'; put 'put ''TWF0aC5pbXVsKEZlLGZ0KXwwLEs9SytNYXRoLmltdWwoR2UsaG4pfDAsdGU9KHRlPXRlK01hdGguaW11bChHZSx3dCl8MCkrTWF0aC5pbXVsKFVlLGhuKXwwLGNlPWNlK01hdGguaW11bChVZSx3dCl8MCxLPUsrTWF0aC5pbXVsKHhlLG10KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoeGUsSHQp''@;'; put 'put ''fDApK01hdGguaW11bChEZSxtdCl8MCxjZT1jZStNYXRoLmltdWwoRGUsSHQpfDA7dmFyIGRpPSh3KyhLPUsrTWF0aC5pbXVsKFNlLG50KXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoU2UsRXQpfDApK01hdGguaW11bChMZSxudCl8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0''@;'; put 'put ''aC5pbXVsKExlLEV0KXwwKSsodGU+Pj4xMyl8MCkrKGRpPj4+MjYpfDAsZGkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKHR0LE5uKSx0ZT0odGU9TWF0aC5pbXVsKHR0LG5uKSkrTWF0aC5pbXVsKFplLE5uKXwwLGNlPU1hdGguaW11bChaZSxubiksSz1LK01hdGguaW11bChFZSxZbil8MCx0ZT0o''@;'; put 'put ''dGU9dGUrTWF0aC5pbXVsKEVlLGZ0KXwwKStNYXRoLmltdWwoSWUsWW4pfDAsY2U9Y2UrTWF0aC5pbXVsKEllLGZ0KXwwLEs9SytNYXRoLmltdWwob3QsaG4pfDAsdGU9KHRlPXRlK01hdGguaW11bChvdCx3dCl8MCkrTWF0aC5pbXVsKEZlLGhuKXwwLGNlPWNlK01hdGguaW11bChGZSx3dCl8''@;'; put 'put ''MCxLPUsrTWF0aC5pbXVsKEdlLG10KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoR2UsSHQpfDApK01hdGguaW11bChVZSxtdCl8MCxjZT1jZStNYXRoLmltdWwoVWUsSHQpfDAsSz1LK01hdGguaW11bCh4ZSxudCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHhlLEV0KXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''bnQpfDAsY2U9Y2UrTWF0aC5pbXVsKERlLEV0KXwwO3ZhciBmaT0odysoSz1LK01hdGguaW11bChTZSxUdCl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKFNlLHl0KXwwKStNYXRoLmltdWwoTGUsVHQpfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChMZSx5dCl8MCkr''@;'; put 'put ''KHRlPj4+MTMpfDApKyhmaT4+PjI2KXwwLGZpJj02NzEwODg2MyxLPU1hdGguaW11bChrZSxObiksdGU9KHRlPU1hdGguaW11bChrZSxubikpK01hdGguaW11bChBZSxObil8MCxjZT1NYXRoLmltdWwoQWUsbm4pLEs9SytNYXRoLmltdWwodHQsWW4pfDAsdGU9KHRlPXRlK01hdGguaW11bCh0''@;'; put 'put ''dCxmdCl8MCkrTWF0aC5pbXVsKFplLFluKXwwLGNlPWNlK01hdGguaW11bChaZSxmdCl8MCxLPUsrTWF0aC5pbXVsKEVlLGhuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRWUsd3QpfDApK01hdGguaW11bChJZSxobil8MCxjZT1jZStNYXRoLmltdWwoSWUsd3QpfDAsSz1LK01hdGguaW11bChv''@;'; put 'put ''dCxtdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKG90LEh0KXwwKStNYXRoLmltdWwoRmUsbXQpfDAsY2U9Y2UrTWF0aC5pbXVsKEZlLEh0KXwwLEs9SytNYXRoLmltdWwoR2UsbnQpfDAsdGU9KHRlPXRlK01hdGguaW11bChHZSxFdCl8MCkrTWF0aC5pbXVsKFVlLG50KXwwLGNlPWNlK01hdGgu''@;'; put 'put ''aW11bChVZSxFdCl8MCxLPUsrTWF0aC5pbXVsKHhlLFR0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoeGUseXQpfDApK01hdGguaW11bChEZSxUdCl8MCxjZT1jZStNYXRoLmltdWwoRGUseXQpfDA7dmFyIGhvPSh3KyhLPUsrTWF0aC5pbXVsKFNlLHhuKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10''@;'; put 'put ''ZStNYXRoLmltdWwoU2UsenQpfDApK01hdGguaW11bChMZSx4bil8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKExlLHp0KXwwKSsodGU+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLEs9TWF0aC5pbXVsKGl0LE5uKSx0ZT0odGU9TWF0aC5pbXVsKGl0LG5uKSkrTWF0''@;'; put 'put ''aC5pbXVsKHN0LE5uKXwwLGNlPU1hdGguaW11bChzdCxubiksSz1LK01hdGguaW11bChrZSxZbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGtlLGZ0KXwwKStNYXRoLmltdWwoQWUsWW4pfDAsY2U9Y2UrTWF0aC5pbXVsKEFlLGZ0KXwwLEs9SytNYXRoLmltdWwodHQsaG4pfDAsdGU9KHRlPXRl''@;'; put 'put ''K01hdGguaW11bCh0dCx3dCl8MCkrTWF0aC5pbXVsKFplLGhuKXwwLGNlPWNlK01hdGguaW11bChaZSx3dCl8MCxLPUsrTWF0aC5pbXVsKEVlLG10KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRWUsSHQpfDApK01hdGguaW11bChJZSxtdCl8MCxjZT1jZStNYXRoLmltdWwoSWUsSHQpfDAsSz1L''@;'; put 'put ''K01hdGguaW11bChvdCxudCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKG90LEV0KXwwKStNYXRoLmltdWwoRmUsbnQpfDAsY2U9Y2UrTWF0aC5pbXVsKEZlLEV0KXwwLEs9SytNYXRoLmltdWwoR2UsVHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChHZSx5dCl8MCkrTWF0aC5pbXVsKFVlLFR0KXww''@;'; put 'put ''LGNlPWNlK01hdGguaW11bChVZSx5dCl8MCxLPUsrTWF0aC5pbXVsKHhlLHhuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoeGUsenQpfDApK01hdGguaW11bChEZSx4bil8MCxjZT1jZStNYXRoLmltdWwoRGUsenQpfDA7dmFyIGJyPSh3KyhLPUsrTWF0aC5pbXVsKFNlLE9uKXwwKXwwKSsoKDgx''@;'; put 'put ''OTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoU2Uscm4pfDApK01hdGguaW11bChMZSxPbil8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKExlLHJuKXwwKSsodGU+Pj4xMyl8MCkrKGJyPj4+MjYpfDAsYnImPTY3MTA4ODYzLEs9TWF0aC5pbXVsKEZ0LE5uKSx0ZT0odGU9TWF0aC5pbXVs''@;'; put 'put ''KEZ0LG5uKSkrTWF0aC5pbXVsKE90LE5uKXwwLGNlPU1hdGguaW11bChPdCxubiksSz1LK01hdGguaW11bChpdCxZbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGl0LGZ0KXwwKStNYXRoLmltdWwoc3QsWW4pfDAsY2U9Y2UrTWF0aC5pbXVsKHN0LGZ0KXwwLEs9SytNYXRoLmltdWwoa2UsaG4p''@;'; put 'put ''fDAsdGU9KHRlPXRlK01hdGguaW11bChrZSx3dCl8MCkrTWF0aC5pbXVsKEFlLGhuKXwwLGNlPWNlK01hdGguaW11bChBZSx3dCl8MCxLPUsrTWF0aC5pbXVsKHR0LG10KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwodHQsSHQpfDApK01hdGguaW11bChaZSxtdCl8MCxjZT1jZStNYXRoLmltdWwo''@;'; put 'put ''WmUsSHQpfDAsSz1LK01hdGguaW11bChFZSxudCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEVlLEV0KXwwKStNYXRoLmltdWwoSWUsbnQpfDAsY2U9Y2UrTWF0aC5pbXVsKEllLEV0KXwwLEs9SytNYXRoLmltdWwob3QsVHQpfDAsdGU9KHRlPXRlK01hdGguaW11bChvdCx5dCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEZlLFR0KXwwLGNlPWNlK01hdGguaW11bChGZSx5dCl8MCxLPUsrTWF0aC5pbXVsKEdlLHhuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoR2UsenQpfDApK01hdGguaW11bChVZSx4bil8MCxjZT1jZStNYXRoLmltdWwoVWUsenQpfDAsSz1LK01hdGguaW11bCh4ZSxPbil8MCx0ZT0odGU9''@;'; put 'put ''dGUrTWF0aC5pbXVsKHhlLHJuKXwwKStNYXRoLmltdWwoRGUsT24pfDAsY2U9Y2UrTWF0aC5pbXVsKERlLHJuKXwwO3ZhciBMaT0odysoSz1LK01hdGguaW11bChTZSxDbil8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKFNlLFh0KXwwKStNYXRoLmltdWwoTGUsQ24pfDApKTw8''@;'; put 'put ''MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChMZSxYdCl8MCkrKHRlPj4+MTMpfDApKyhMaT4+PjI2KXwwLExpJj02NzEwODg2MyxLPU1hdGguaW11bChibixObiksdGU9KHRlPU1hdGguaW11bChibixubikpK01hdGguaW11bChCdCxObil8MCxjZT1NYXRoLmltdWwoQnQsbm4pLEs9SytNYXRo''@;'; put 'put ''LmltdWwoRnQsWW4pfDAsdGU9KHRlPXRlK01hdGguaW11bChGdCxmdCl8MCkrTWF0aC5pbXVsKE90LFluKXwwLGNlPWNlK01hdGguaW11bChPdCxmdCl8MCxLPUsrTWF0aC5pbXVsKGl0LGhuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoaXQsd3QpfDApK01hdGguaW11bChzdCxobil8MCxjZT1j''@;'; put 'put ''ZStNYXRoLmltdWwoc3Qsd3QpfDAsSz1LK01hdGguaW11bChrZSxtdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGtlLEh0KXwwKStNYXRoLmltdWwoQWUsbXQpfDAsY2U9Y2UrTWF0aC5pbXVsKEFlLEh0KXwwLEs9SytNYXRoLmltdWwodHQsbnQpfDAsdGU9KHRlPXRlK01hdGguaW11bCh0dCxF''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKFplLG50KXwwLGNlPWNlK01hdGguaW11bChaZSxFdCl8MCxLPUsrTWF0aC5pbXVsKEVlLFR0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRWUseXQpfDApK01hdGguaW11bChJZSxUdCl8MCxjZT1jZStNYXRoLmltdWwoSWUseXQpfDAsSz1LK01hdGguaW11bChvdCx4''@;'; put 'put ''bil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKG90LHp0KXwwKStNYXRoLmltdWwoRmUseG4pfDAsY2U9Y2UrTWF0aC5pbXVsKEZlLHp0KXwwLEs9SytNYXRoLmltdWwoR2UsT24pfDAsdGU9KHRlPXRlK01hdGguaW11bChHZSxybil8MCkrTWF0aC5pbXVsKFVlLE9uKXwwLGNlPWNlK01hdGguaW11''@;'; put 'put ''bChVZSxybil8MCxLPUsrTWF0aC5pbXVsKHhlLENuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoeGUsWHQpfDApK01hdGguaW11bChEZSxDbil8MCxjZT1jZStNYXRoLmltdWwoRGUsWHQpfDA7dmFyIGxvPSh3KyhLPUsrTWF0aC5pbXVsKFNlLHhpKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStN''@;'; put 'put ''YXRoLmltdWwoU2UsYW4pfDApK01hdGguaW11bChMZSx4aSl8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKExlLGFuKXwwKSsodGU+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLEs9TWF0aC5pbXVsKGJuLFluKSx0ZT0odGU9TWF0aC5pbXVsKGJuLGZ0KSkrTWF0aC5p''@;'; put 'put ''bXVsKEJ0LFluKXwwLGNlPU1hdGguaW11bChCdCxmdCksSz1LK01hdGguaW11bChGdCxobil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZ0LHd0KXwwKStNYXRoLmltdWwoT3QsaG4pfDAsY2U9Y2UrTWF0aC5pbXVsKE90LHd0KXwwLEs9SytNYXRoLmltdWwoaXQsbXQpfDAsdGU9KHRlPXRlK01h''@;'; put 'put ''dGguaW11bChpdCxIdCl8MCkrTWF0aC5pbXVsKHN0LG10KXwwLGNlPWNlK01hdGguaW11bChzdCxIdCl8MCxLPUsrTWF0aC5pbXVsKGtlLG50KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoa2UsRXQpfDApK01hdGguaW11bChBZSxudCl8MCxjZT1jZStNYXRoLmltdWwoQWUsRXQpfDAsSz1LK01h''@;'; put 'put ''dGguaW11bCh0dCxUdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHR0LHl0KXwwKStNYXRoLmltdWwoWmUsVHQpfDAsY2U9Y2UrTWF0aC5pbXVsKFplLHl0KXwwLEs9SytNYXRoLmltdWwoRWUseG4pfDAsdGU9KHRlPXRlK01hdGguaW11bChFZSx6dCl8MCkrTWF0aC5pbXVsKEllLHhuKXwwLGNl''@;'; put 'put ''PWNlK01hdGguaW11bChJZSx6dCl8MCxLPUsrTWF0aC5pbXVsKG90LE9uKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwob3Qscm4pfDApK01hdGguaW11bChGZSxPbil8MCxjZT1jZStNYXRoLmltdWwoRmUscm4pfDAsSz1LK01hdGguaW11bChHZSxDbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEdl''@;'; put 'put ''LFh0KXwwKStNYXRoLmltdWwoVWUsQ24pfDAsY2U9Y2UrTWF0aC5pbXVsKFVlLFh0KXwwO3ZhciBVbj0odysoSz1LK01hdGguaW11bCh4ZSx4aSl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKHhlLGFuKXwwKStNYXRoLmltdWwoRGUseGkpfDApKTw8MTMpfDA7dz0oKGNlPWNl''@;'; put 'put ''K01hdGguaW11bChEZSxhbil8MCkrKHRlPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxLPU1hdGguaW11bChibixobiksdGU9KHRlPU1hdGguaW11bChibix3dCkpK01hdGguaW11bChCdCxobil8MCxjZT1NYXRoLmltdWwoQnQsd3QpLEs9SytNYXRoLmltdWwoRnQsbXQpfDAs''@;'; put 'put ''dGU9KHRlPXRlK01hdGguaW11bChGdCxIdCl8MCkrTWF0aC5pbXVsKE90LG10KXwwLGNlPWNlK01hdGguaW11bChPdCxIdCl8MCxLPUsrTWF0aC5pbXVsKGl0LG50KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoaXQsRXQpfDApK01hdGguaW11bChzdCxudCl8MCxjZT1jZStNYXRoLmltdWwoc3Qs''@;'; put 'put ''RXQpfDAsSz1LK01hdGguaW11bChrZSxUdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGtlLHl0KXwwKStNYXRoLmltdWwoQWUsVHQpfDAsY2U9Y2UrTWF0aC5pbXVsKEFlLHl0KXwwLEs9SytNYXRoLmltdWwodHQseG4pfDAsdGU9KHRlPXRlK01hdGguaW11bCh0dCx6dCl8MCkrTWF0aC5pbXVs''@;'; put 'put ''KFplLHhuKXwwLGNlPWNlK01hdGguaW11bChaZSx6dCl8MCxLPUsrTWF0aC5pbXVsKEVlLE9uKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRWUscm4pfDApK01hdGguaW11bChJZSxPbil8MCxjZT1jZStNYXRoLmltdWwoSWUscm4pfDAsSz1LK01hdGguaW11bChvdCxDbil8MCx0ZT0odGU9dGUr''@;'; put 'put ''TWF0aC5pbXVsKG90LFh0KXwwKStNYXRoLmltdWwoRmUsQ24pfDAsY2U9Y2UrTWF0aC5pbXVsKEZlLFh0KXwwO3ZhciBYaT0odysoSz1LK01hdGguaW11bChHZSx4aSl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKEdlLGFuKXwwKStNYXRoLmltdWwoVWUseGkpfDApKTw8MTMp''@;'; put 'put ''fDA7dz0oKGNlPWNlK01hdGguaW11bChVZSxhbil8MCkrKHRlPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxLPU1hdGguaW11bChibixtdCksdGU9KHRlPU1hdGguaW11bChibixIdCkpK01hdGguaW11bChCdCxtdCl8MCxjZT1NYXRoLmltdWwoQnQsSHQpLEs9SytNYXRoLmlt''@;'; put 'put ''dWwoRnQsbnQpfDAsdGU9KHRlPXRlK01hdGguaW11bChGdCxFdCl8MCkrTWF0aC5pbXVsKE90LG50KXwwLGNlPWNlK01hdGguaW11bChPdCxFdCl8MCxLPUsrTWF0aC5pbXVsKGl0LFR0KXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoaXQseXQpfDApK01hdGguaW11bChzdCxUdCl8MCxjZT1jZStN''@;'; put 'put ''YXRoLmltdWwoc3QseXQpfDAsSz1LK01hdGguaW11bChrZSx4bil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGtlLHp0KXwwKStNYXRoLmltdWwoQWUseG4pfDAsY2U9Y2UrTWF0aC5pbXVsKEFlLHp0KXwwLEs9SytNYXRoLmltdWwodHQsT24pfDAsdGU9KHRlPXRlK01hdGguaW11bCh0dCxybil8''@;'; put 'put ''MCkrTWF0aC5pbXVsKFplLE9uKXwwLGNlPWNlK01hdGguaW11bChaZSxybil8MCxLPUsrTWF0aC5pbXVsKEVlLENuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoRWUsWHQpfDApK01hdGguaW11bChJZSxDbil8MCxjZT1jZStNYXRoLmltdWwoSWUsWHQpfDA7dmFyIFFpPSh3KyhLPUsrTWF0aC5p''@;'; put 'put ''bXVsKG90LHhpKXwwKXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwob3QsYW4pfDApK01hdGguaW11bChGZSx4aSl8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKEZlLGFuKXwwKSsodGU+Pj4xMyl8MCkrKFFpPj4+MjYpfDAsUWkmPTY3MTA4ODYzLEs9TWF0aC5pbXVsKGJu''@;'; put 'put ''LG50KSx0ZT0odGU9TWF0aC5pbXVsKGJuLEV0KSkrTWF0aC5pbXVsKEJ0LG50KXwwLGNlPU1hdGguaW11bChCdCxFdCksSz1LK01hdGguaW11bChGdCxUdCl8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZ0LHl0KXwwKStNYXRoLmltdWwoT3QsVHQpfDAsY2U9Y2UrTWF0aC5pbXVsKE90LHl0KXww''@;'; put 'put ''LEs9SytNYXRoLmltdWwoaXQseG4pfDAsdGU9KHRlPXRlK01hdGguaW11bChpdCx6dCl8MCkrTWF0aC5pbXVsKHN0LHhuKXwwLGNlPWNlK01hdGguaW11bChzdCx6dCl8MCxLPUsrTWF0aC5pbXVsKGtlLE9uKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoa2Uscm4pfDApK01hdGguaW11bChBZSxP''@;'; put 'put ''bil8MCxjZT1jZStNYXRoLmltdWwoQWUscm4pfDAsSz1LK01hdGguaW11bCh0dCxDbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKHR0LFh0KXwwKStNYXRoLmltdWwoWmUsQ24pfDAsY2U9Y2UrTWF0aC5pbXVsKFplLFh0KXwwO3ZhciBmbz0odysoSz1LK01hdGguaW11bChFZSx4aSl8MCl8MCkr''@;'; put 'put ''KCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKEVlLGFuKXwwKStNYXRoLmltdWwoSWUseGkpfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChJZSxhbil8MCkrKHRlPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxLPU1hdGguaW11bChibixUdCksdGU9KHRlPU1hdGgu''@;'; put 'put ''aW11bChibix5dCkpK01hdGguaW11bChCdCxUdCl8MCxjZT1NYXRoLmltdWwoQnQseXQpLEs9SytNYXRoLmltdWwoRnQseG4pfDAsdGU9KHRlPXRlK01hdGguaW11bChGdCx6dCl8MCkrTWF0aC5pbXVsKE90LHhuKXwwLGNlPWNlK01hdGguaW11bChPdCx6dCl8MCxLPUsrTWF0aC5pbXVsKGl0''@;'; put 'put ''LE9uKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoaXQscm4pfDApK01hdGguaW11bChzdCxPbil8MCxjZT1jZStNYXRoLmltdWwoc3Qscm4pfDAsSz1LK01hdGguaW11bChrZSxDbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKGtlLFh0KXwwKStNYXRoLmltdWwoQWUsQ24pfDAsY2U9Y2UrTWF0aC5p''@;'; put 'put ''bXVsKEFlLFh0KXwwO3ZhciB2bz0odysoSz1LK01hdGguaW11bCh0dCx4aSl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKHR0LGFuKXwwKStNYXRoLmltdWwoWmUseGkpfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChaZSxhbil8MCkrKHRlPj4+MTMpfDApKyh2bz4+''@;'; put 'put ''PjI2KXwwLHZvJj02NzEwODg2MyxLPU1hdGguaW11bChibix4biksdGU9KHRlPU1hdGguaW11bChibix6dCkpK01hdGguaW11bChCdCx4bil8MCxjZT1NYXRoLmltdWwoQnQsenQpLEs9SytNYXRoLmltdWwoRnQsT24pfDAsdGU9KHRlPXRlK01hdGguaW11bChGdCxybil8MCkrTWF0aC5pbXVs''@;'; put 'put ''KE90LE9uKXwwLGNlPWNlK01hdGguaW11bChPdCxybil8MCxLPUsrTWF0aC5pbXVsKGl0LENuKXwwLHRlPSh0ZT10ZStNYXRoLmltdWwoaXQsWHQpfDApK01hdGguaW11bChzdCxDbil8MCxjZT1jZStNYXRoLmltdWwoc3QsWHQpfDA7dmFyIFJyPSh3KyhLPUsrTWF0aC5pbXVsKGtlLHhpKXww''@;'; put 'put ''KXwwKSsoKDgxOTEmKHRlPSh0ZT10ZStNYXRoLmltdWwoa2UsYW4pfDApK01hdGguaW11bChBZSx4aSl8MCkpPDwxMyl8MDt3PSgoY2U9Y2UrTWF0aC5pbXVsKEFlLGFuKXwwKSsodGU+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLEs9TWF0aC5pbXVsKGJuLE9uKSx0ZT0odGU9''@;'; put 'put ''TWF0aC5pbXVsKGJuLHJuKSkrTWF0aC5pbXVsKEJ0LE9uKXwwLGNlPU1hdGguaW11bChCdCxybiksSz1LK01hdGguaW11bChGdCxDbil8MCx0ZT0odGU9dGUrTWF0aC5pbXVsKEZ0LFh0KXwwKStNYXRoLmltdWwoT3QsQ24pfDAsY2U9Y2UrTWF0aC5pbXVsKE90LFh0KXwwO3ZhciBZaT0odyso''@;'; put 'put ''Sz1LK01hdGguaW11bChpdCx4aSl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKGl0LGFuKXwwKStNYXRoLmltdWwoc3QseGkpfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChzdCxhbil8MCkrKHRlPj4+MTMpfDApKyhZaT4+PjI2KXwwLFlpJj02NzEwODg2MyxLPU1h''@;'; put 'put ''dGguaW11bChibixDbiksdGU9KHRlPU1hdGguaW11bChibixYdCkpK01hdGguaW11bChCdCxDbil8MCxjZT1NYXRoLmltdWwoQnQsWHQpO3ZhciB6bz0odysoSz1LK01hdGguaW11bChGdCx4aSl8MCl8MCkrKCg4MTkxJih0ZT0odGU9dGUrTWF0aC5pbXVsKEZ0LGFuKXwwKStNYXRoLmltdWwo''@;'; put 'put ''T3QseGkpfDApKTw8MTMpfDA7dz0oKGNlPWNlK01hdGguaW11bChPdCxhbil8MCkrKHRlPj4+MTMpfDApKyh6bz4+PjI2KXwwLHpvJj02NzEwODg2Mzt2YXIgaXM9KHcrKEs9TWF0aC5pbXVsKGJuLHhpKSl8MCkrKCg4MTkxJih0ZT0odGU9TWF0aC5pbXVsKGJuLGFuKSkrTWF0aC5pbXVsKEJ0''@;'; put 'put ''LHhpKXwwKSk8PDEzKXwwO3JldHVybiB3PSgoY2U9TWF0aC5pbXVsKEJ0LGFuKSkrKHRlPj4+MTMpfDApKyhpcz4+PjI2KXwwLGlzJj02NzEwODg2MyxwWzBdPXRuLHBbMV09dWkscFsyXT1BcixwWzNdPWhyLHBbNF09ZGkscFs1XT1maSxwWzZdPWhvLHBbN109YnIscFs4XT1MaSxwWzldPWxv''@;'; put 'put ''LHBbMTBdPVVuLHBbMTFdPVhpLHBbMTJdPVFpLHBbMTNdPWZvLHBbMTRdPXZvLHBbMTVdPVJyLHBbMTZdPVlpLHBbMTddPXpvLHBbMThdPWlzLDAhPT13JiYocFsxOV09dyxDLmxlbmd0aCsrKSxDfTtmdW5jdGlvbiBxKEYsSCxnKXtnLm5lZ2F0aXZlPUgubmVnYXRpdmVeRi5uZWdhdGl2ZSxn''@;'; put 'put ''Lmxlbmd0aD1GLmxlbmd0aCtILmxlbmd0aDtmb3IodmFyIEM9MCxrPTAsXz0wO188Zy5sZW5ndGgtMTtfKyspe3ZhciBwPWs7az0wO2Zvcih2YXIgdz02NzEwODg2MyZDLEs9TWF0aC5taW4oXyxILmxlbmd0aC0xKSx0ZT1NYXRoLm1heCgwLF8tRi5sZW5ndGgrMSk7dGU8PUs7dGUrKyl7dmFy''@;'; put 'put ''IExlPSgwfEYud29yZHNbXy10ZV0pKigwfEgud29yZHNbdGVdKSxIZT02NzEwODg2MyZMZTt3PTY3MTA4ODYzJihIZT1IZSt3fDApLGsrPShwPShwPXArKExlLzY3MTA4ODY0fDApfDApKyhIZT4+PjI2KXwwKT4+PjI2LHAmPTY3MTA4ODYzfWcud29yZHNbX109dyxDPXAscD1rfXJldHVybiAw''@;'; put 'put ''IT09Qz9nLndvcmRzW19dPUM6Zy5sZW5ndGgtLSxnLl9zdHJpcCgpfWZ1bmN0aW9uIEooRixILGcpe3JldHVybiBxKEYsSCxnKX1mdW5jdGlvbiBlZShGLEgpe3RoaXMueD1GLHRoaXMueT1IfU1hdGguaW11bHx8KFU9WSksTS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oSCxnKXt2YXIgaz10''@;'; put 'put ''aGlzLmxlbmd0aCtILmxlbmd0aDtyZXR1cm4gMTA9PT10aGlzLmxlbmd0aCYmMTA9PT1ILmxlbmd0aD9VKHRoaXMsSCxnKTprPDYzP1kodGhpcyxILGcpOms8MTAyND9xKHRoaXMsSCxnKTpKKHRoaXMsSCxnKX0sZWUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oSCl7Zm9yKHZhciBnPW5l''@;'; put 'put ''dyBBcnJheShIKSxDPU0ucHJvdG90eXBlLl9jb3VudEJpdHMoSCktMSxrPTA7azxIO2srKylnW2tdPXRoaXMucmV2QmluKGssQyxIKTtyZXR1cm4gZ30sZWUucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbihILGcsQyl7aWYoMD09PUh8fEg9PT1DLTEpcmV0dXJuIEg7Zm9yKHZhciBrPTAsXz0w''@;'; put 'put ''O188ZztfKyspa3w9KDEmSCk8PGctXy0xLEg+Pj0xO3JldHVybiBrfSxlZS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbihILGcsQyxrLF8scCl7Zm9yKHZhciB3PTA7dzxwO3crKylrW3ddPWdbSFt3XV0sX1t3XT1DW0hbd11dfSxlZS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKEgs''@;'; put 'put ''ZyxDLGssXyxwKXt0aGlzLnBlcm11dGUocCxILGcsQyxrLF8pO2Zvcih2YXIgdz0xO3c8Xzt3PDw9MSlmb3IodmFyIEs9dzw8MSx0ZT1NYXRoLmNvcygyKk1hdGguUEkvSyksY2U9TWF0aC5zaW4oMipNYXRoLlBJL0spLGhlPTA7aGU8XztoZSs9Sylmb3IodmFyIFNlPXRlLExlPWNlLEhlPTA7''@;'; put 'put ''SGU8dztIZSsrKXt2YXIgeGU9Q1toZStIZV0sRGU9a1toZStIZV0sQmU9Q1toZStIZSt3XSxHZT1rW2hlK0hlK3ddLFVlPVNlKkJlLUxlKkdlO0dlPVNlKkdlK0xlKkJlLENbaGUrSGVdPXhlKyhCZT1VZSksa1toZStIZV09RGUrR2UsQ1toZStIZSt3XT14ZS1CZSxrW2hlK0hlK3ddPURlLUdl''@;'; put 'put ''LEhlIT09SyYmKFVlPXRlKlNlLWNlKkxlLExlPXRlKkxlK2NlKlNlLFNlPVVlKX19LGVlLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbihILGcpe3ZhciBDPTF8TWF0aC5tYXgoZyxIKSxrPTEmQyxfPTA7Zm9yKEM9Qy8yfDA7QztDPj4+PTEpXysrO3JldHVybiAxPDxfKzEra30sZWUu''@;'; put 'put ''cHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihILGcsQyl7aWYoIShDPD0xKSlmb3IodmFyIGs9MDtrPEMvMjtrKyspe3ZhciBfPUhba107SFtrXT1IW0Mtay0xXSxIW0Mtay0xXT1fLF89Z1trXSxnW2tdPS1nW0Mtay0xXSxnW0Mtay0xXT0tX319LGVlLnByb3RvdHlwZS5ub3JtYWxpemUx''@;'; put 'put ''M2I9ZnVuY3Rpb24oSCxnKXtmb3IodmFyIEM9MCxrPTA7azxnLzI7aysrKXt2YXIgXz04MTkyKk1hdGgucm91bmQoSFsyKmsrMV0vZykrTWF0aC5yb3VuZChIWzIqa10vZykrQztIW2tdPTY3MTA4ODYzJl8sQz1fPDY3MTA4ODY0PzA6Xy82NzEwODg2NHwwfXJldHVybiBIfSxlZS5wcm90b3R5''@;'; put 'put ''cGUuY29udmVydDEzYj1mdW5jdGlvbihILGcsQyxrKXtmb3IodmFyIF89MCxwPTA7cDxnO3ArKylDWzIqcF09ODE5MSYoXys9MHxIW3BdKSxDWzIqcCsxXT04MTkxJihfPj4+PTEzKSxfPj4+PTEzO2ZvcihwPTIqZztwPGs7KytwKUNbcF09MDttKDA9PT1fKSxtKCEoLTgxOTImXykpfSxlZS5w''@;'; put 'put ''cm90b3R5cGUuc3R1Yj1mdW5jdGlvbihIKXtmb3IodmFyIGc9bmV3IEFycmF5KEgpLEM9MDtDPEg7QysrKWdbQ109MDtyZXR1cm4gZ30sZWUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oSCxnLEMpe3ZhciBrPTIqdGhpcy5ndWVzc0xlbjEzYihILmxlbmd0aCxnLmxlbmd0aCksXz10aGlzLm1h''@;'; put 'put ''a2VSQlQoaykscD10aGlzLnN0dWIoayksdz1uZXcgQXJyYXkoayksSz1uZXcgQXJyYXkoayksdGU9bmV3IEFycmF5KGspLGNlPW5ldyBBcnJheShrKSxoZT1uZXcgQXJyYXkoayksU2U9bmV3IEFycmF5KGspLExlPUMud29yZHM7TGUubGVuZ3RoPWssdGhpcy5jb252ZXJ0MTNiKEgud29yZHMs''@;'; put 'put ''SC5sZW5ndGgsdyxrKSx0aGlzLmNvbnZlcnQxM2IoZy53b3JkcyxnLmxlbmd0aCxjZSxrKSx0aGlzLnRyYW5zZm9ybSh3LHAsSyx0ZSxrLF8pLHRoaXMudHJhbnNmb3JtKGNlLHAsaGUsU2UsayxfKTtmb3IodmFyIEhlPTA7SGU8aztIZSsrKXt2YXIgeGU9S1tIZV0qaGVbSGVdLXRlW0hlXSpT''@;'; put 'put ''ZVtIZV07dGVbSGVdPUtbSGVdKlNlW0hlXSt0ZVtIZV0qaGVbSGVdLEtbSGVdPXhlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShLLHRlLGspLHRoaXMudHJhbnNmb3JtKEssdGUsTGUscCxrLF8pLHRoaXMuY29uanVnYXRlKExlLHAsayksdGhpcy5ub3JtYWxpemUxM2IoTGUsayksQy5uZWdhdGl2''@;'; put 'put ''ZT1ILm5lZ2F0aXZlXmcubmVnYXRpdmUsQy5sZW5ndGg9SC5sZW5ndGgrZy5sZW5ndGgsQy5fc3RyaXAoKX0sTS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEgpe3ZhciBnPW5ldyBNKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtILmxlbmd0aCksdGhpcy5tdWxU''@;'; put 'put ''byhILGcpfSxNLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKEgpe3ZhciBnPW5ldyBNKG51bGwpO3JldHVybiBnLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtILmxlbmd0aCksSih0aGlzLEgsZyl9LE0ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5t''@;'; put 'put ''dWxUbyhILHRoaXMpfSxNLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihIKXt2YXIgZz1IPDA7ZyYmKEg9LUgpLG0oIm51bWJlciI9PXR5cGVvZiBIKSxtKEg8NjcxMDg4NjQpO2Zvcih2YXIgQz0wLGs9MDtrPHRoaXMubGVuZ3RoO2srKyl7dmFyIF89KDB8dGhpcy53b3Jkc1trXSkqSCxwPSg2''@;'; put 'put ''NzEwODg2MyZfKSsoNjcxMDg4NjMmQyk7Qz4+PTI2LEMrPV8vNjcxMDg4NjR8MCxDKz1wPj4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZwfXJldHVybiAwIT09QyYmKHRoaXMud29yZHNba109Qyx0aGlzLmxlbmd0aCsrKSxnP3RoaXMuaW5lZygpOnRoaXN9LE0ucHJvdG90eXBlLm11bG49''@;'; put 'put ''ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihIKX0sTS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxNLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxNLnByb3RvdHlwZS5w''@;'; put 'put ''b3c9ZnVuY3Rpb24oSCl7dmFyIGc9ZnVuY3Rpb24gWihGKXtmb3IodmFyIEg9bmV3IEFycmF5KEYuYml0TGVuZ3RoKCkpLGc9MDtnPEgubGVuZ3RoO2crKylIW2ddPUYud29yZHNbZy8yNnwwXT4+PmclMjYmMTtyZXR1cm4gSH0oSCk7aWYoMD09PWcubGVuZ3RoKXJldHVybiBuZXcgTSgxKTtm''@;'; put 'put ''b3IodmFyIEM9dGhpcyxrPTA7azxnLmxlbmd0aCYmMD09PWdba107aysrLEM9Qy5zcXIoKSk7aWYoKytrPGcubGVuZ3RoKWZvcih2YXIgXz1DLnNxcigpO2s8Zy5sZW5ndGg7aysrLF89Xy5zcXIoKSkwIT09Z1trXSYmKEM9Qy5tdWwoXykpO3JldHVybiBDfSxNLnByb3RvdHlwZS5pdXNobG49''@;'; put 'put ''ZnVuY3Rpb24oSCl7bSgibnVtYmVyIj09dHlwZW9mIEgmJkg+PTApO3ZhciBfLGc9SCUyNixDPShILWcpLzI2LGs9NjcxMDg4NjM+Pj4yNi1nPDwyNi1nO2lmKDAhPT1nKXt2YXIgcD0wO2ZvcihfPTA7Xzx0aGlzLmxlbmd0aDtfKyspe3ZhciB3PXRoaXMud29yZHNbX10mazt0aGlzLndvcmRz''@;'; put 'put ''W19dPSgwfHRoaXMud29yZHNbX10pLXc8PGd8cCxwPXc+Pj4yNi1nfXAmJih0aGlzLndvcmRzW19dPXAsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PUMpe2ZvcihfPXRoaXMubGVuZ3RoLTE7Xz49MDtfLS0pdGhpcy53b3Jkc1tfK0NdPXRoaXMud29yZHNbX107Zm9yKF89MDtfPEM7XysrKXRoaXMu''@;'; put 'put ''d29yZHNbX109MDt0aGlzLmxlbmd0aCs9Q31yZXR1cm4gdGhpcy5fc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oSCl7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKEgpfSxNLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oSCxnLEMpe3ZhciBrO20o''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBIJiZIPj0wKSxrPWc/KGctZyUyNikvMjY6MDt2YXIgXz1IJTI2LHA9TWF0aC5taW4oKEgtXykvMjYsdGhpcy5sZW5ndGgpLHc9NjcxMDg4NjNeNjcxMDg4NjM+Pj5fPDxfLEs9QztpZihrLT1wLGs9TWF0aC5tYXgoMCxrKSxLKXtmb3IodmFyIHRlPTA7dGU8cDt0''@;'; put 'put ''ZSsrKUsud29yZHNbdGVdPXRoaXMud29yZHNbdGVdO0subGVuZ3RoPXB9aWYoMCE9PXApaWYodGhpcy5sZW5ndGg+cClmb3IodGhpcy5sZW5ndGgtPXAsdGU9MDt0ZTx0aGlzLmxlbmd0aDt0ZSsrKXRoaXMud29yZHNbdGVdPXRoaXMud29yZHNbdGUrcF07ZWxzZSB0aGlzLndvcmRzWzBdPTAs''@;'; put 'put ''dGhpcy5sZW5ndGg9MTt2YXIgY2U9MDtmb3IodGU9dGhpcy5sZW5ndGgtMTt0ZT49MCYmKDAhPT1jZXx8dGU+PWspO3RlLS0pe3ZhciBoZT0wfHRoaXMud29yZHNbdGVdO3RoaXMud29yZHNbdGVdPWNlPDwyNi1ffGhlPj4+XyxjZT1oZSZ3fXJldHVybiBLJiYwIT09Y2UmJihLLndvcmRzW0su''@;'; put 'put ''bGVuZ3RoKytdPWNlKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5fc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oSCxnLEMpe3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihILGcsQyl9LE0ucHJv''@;'; put 'put ''dG90eXBlLnNobG49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihIKX0sTS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oSCl9LE0ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5p''@;'; put 'put ''c2hybihIKX0sTS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oSCl9LE0ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKEgpe20oIm51bWJlciI9PXR5cGVvZiBIJiZIPj0wKTt2YXIgZz1IJTI2LEM9KEgtZykvMjY7cmV0dXJuISh0aGlzLmxl''@;'; put 'put ''bmd0aDw9Q3x8ISh0aGlzLndvcmRzW0NdJjE8PGcpKX0sTS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKEgpe20oIm51bWJlciI9PXR5cGVvZiBIJiZIPj0wKTt2YXIgZz1IJTI2LEM9KEgtZykvMjY7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGgg''@;'; put 'put ''cG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1DP3RoaXM6KDAhPT1nJiZDKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oQyx0aGlzLmxlbmd0aCksMCE9PWcmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+Pmc8PGcpLHRoaXMuX3N0cmlwKCkpfSxN''@;'; put 'put ''LnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihIKX0sTS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oSCl7cmV0dXJuIG0oIm51bWJlciI9PXR5cGVvZiBIKSxtKEg8NjcxMDg4NjQpLEg8MD90aGlzLmlzdWJuKC1IKTowIT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPD1IPyh0aGlzLndvcmRzWzBdPUgtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3VibihIKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4o''@;'; put 'put ''SCl9LE0ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbihIKXt0aGlzLndvcmRzWzBdKz1IO2Zvcih2YXIgZz0wO2c8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbZ10+PTY3MTA4ODY0O2crKyl0aGlzLndvcmRzW2ddLT02NzEwODg2NCxnPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2crMV09''@;'; put 'put ''MTp0aGlzLndvcmRzW2crMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsZysxKSx0aGlzfSxNLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbihIKXtpZihtKCJudW1iZXIiPT10eXBlb2YgSCksbShIPDY3MTA4ODY0KSxIPDApcmV0dXJuIHRoaXMuaWFkZG4oLUgp''@;'; put 'put ''O2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihIKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1ILDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBnPTA7Zzx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tnXTwwO2crKyl0aGlzLndvcmRzW2ddKz02NzEwODg2NCx0aGlzLndvcmRzW2crMV0tPTE7cmV0dXJuIHRoaXMuX3N0cmlwKCl9LE0ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oSCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2xvbmUoKS5pYWRkbihIKX0sTS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKEgpfSxNLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxNLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKEgsZyxDKXt2YXIgXzt0aGlzLl9leHBhbmQoSC5sZW5ndGgrQyk7dmFyIHAsdz0wO2ZvcihfPTA7XzxILmxlbmd0aDtfKyspe3A9KDB8dGhpcy53b3Jkc1tfK0NdKSt3O3ZhciBL''@;'; put 'put ''PSgwfEgud29yZHNbX10pKmc7dz0oKHAtPTY3MTA4ODYzJkspPj4yNiktKEsvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tfK0NdPTY3MTA4ODYzJnB9Zm9yKDtfPHRoaXMubGVuZ3RoLUM7XysrKXc9KHA9KDB8dGhpcy53b3Jkc1tfK0NdKSt3KT4+MjYsdGhpcy53b3Jkc1tfK0NdPTY3MTA4ODYz''@;'; put 'put ''JnA7aWYoMD09PXcpcmV0dXJuIHRoaXMuX3N0cmlwKCk7Zm9yKG0oLTE9PT13KSx3PTAsXz0wO188dGhpcy5sZW5ndGg7XysrKXc9KHA9LSgwfHRoaXMud29yZHNbX10pK3cpPj4yNix0aGlzLndvcmRzW19dPTY3MTA4ODYzJnA7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLl9zdHJpcCgp''@;'; put 'put ''fSxNLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbihILGcpe3ZhciBDLGs9dGhpcy5jbG9uZSgpLF89SCxwPTB8Xy53b3Jkc1tfLmxlbmd0aC0xXTswIT0oQz0yNi10aGlzLl9jb3VudEJpdHMocCkpJiYoXz1fLnVzaGxuKEMpLGsuaXVzaGxuKEMpLHA9MHxfLndvcmRzW18ubGVuZ3RoLTFd''@;'; put 'put ''KTt2YXIgdGUsSz1rLmxlbmd0aC1fLmxlbmd0aDtpZigibW9kIiE9PWcpeyh0ZT1uZXcgTShudWxsKSkubGVuZ3RoPUsrMSx0ZS53b3Jkcz1uZXcgQXJyYXkodGUubGVuZ3RoKTtmb3IodmFyIGNlPTA7Y2U8dGUubGVuZ3RoO2NlKyspdGUud29yZHNbY2VdPTB9dmFyIGhlPWsuY2xvbmUoKS5f''@;'; put 'put ''aXNobG5zdWJtdWwoXywxLEspOzA9PT1oZS5uZWdhdGl2ZSYmKGs9aGUsdGUmJih0ZS53b3Jkc1tLXT0xKSk7Zm9yKHZhciBTZT1LLTE7U2U+PTA7U2UtLSl7dmFyIExlPTY3MTA4ODY0KigwfGsud29yZHNbXy5sZW5ndGgrU2VdKSsoMHxrLndvcmRzW18ubGVuZ3RoK1NlLTFdKTtmb3IoTGU9''@;'; put 'put ''TWF0aC5taW4oTGUvcHwwLDY3MTA4ODYzKSxrLl9pc2hsbnN1Ym11bChfLExlLFNlKTswIT09ay5uZWdhdGl2ZTspTGUtLSxrLm5lZ2F0aXZlPTAsay5faXNobG5zdWJtdWwoXywxLFNlKSxrLmlzWmVybygpfHwoay5uZWdhdGl2ZV49MSk7dGUmJih0ZS53b3Jkc1tTZV09TGUpfXJldHVybiB0''@;'; put 'put ''ZSYmdGUuX3N0cmlwKCksay5fc3RyaXAoKSwiZGl2IiE9PWcmJjAhPT1DJiZrLml1c2hybihDKSx7ZGl2OnRlfHxudWxsLG1vZDprfX0sTS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKEgsZyxDKXtyZXR1cm4gbSghSC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBNKDApLG1v''@;'; put 'put ''ZDpuZXcgTSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1ILm5lZ2F0aXZlPyhwPXRoaXMubmVnKCkuZGl2bW9kKEgsZyksIm1vZCIhPT1nJiYoaz1wLmRpdi5uZWcoKSksImRpdiIhPT1nJiYoXz1wLm1vZC5uZWcoKSxDJiYwIT09Xy5uZWdhdGl2ZSYmXy5pYWRkKEgpKSx7ZGl2OmssbW9k''@;'; put 'put ''Ol99KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PUgubmVnYXRpdmU/KHA9dGhpcy5kaXZtb2QoSC5uZWcoKSxnKSwibW9kIiE9PWcmJihrPXAuZGl2Lm5lZygpKSx7ZGl2OmssbW9kOnAubW9kfSk6dGhpcy5uZWdhdGl2ZSZILm5lZ2F0aXZlPyhwPXRoaXMubmVnKCkuZGl2bW9kKEgubmVnKCks''@;'; put 'put ''ZyksImRpdiIhPT1nJiYoXz1wLm1vZC5uZWcoKSxDJiYwIT09Xy5uZWdhdGl2ZSYmXy5pc3ViKEgpKSx7ZGl2OnAuZGl2LG1vZDpffSk6SC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKEgpPDA/e2RpdjpuZXcgTSgwKSxtb2Q6dGhpc306MT09PUgubGVuZ3RoPyJkaXYiPT09Zz97ZGl2''@;'; put 'put ''OnRoaXMuZGl2bihILndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1nP3tkaXY6bnVsbCxtb2Q6bmV3IE0odGhpcy5tb2RybihILndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKEgud29yZHNbMF0pLG1vZDpuZXcgTSh0aGlzLm1vZHJuKEgud29yZHNbMF0pKX06dGhpcy5fd29yZERpdihI''@;'; put 'put ''LGcpO3ZhciBrLF8scH0sTS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmRpdm1vZChILCJkaXYiLCExKS5kaXZ9LE0ucHJvdG90eXBlLm1vZD1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5kaXZtb2QoSCwibW9kIiwhMSkubW9kfSxNLnByb3RvdHlwZS51bW9kPWZ1bmN0''@;'; put 'put ''aW9uKEgpe3JldHVybiB0aGlzLmRpdm1vZChILCJtb2QiLCEwKS5tb2R9LE0ucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKEgpe3ZhciBnPXRoaXMuZGl2bW9kKEgpO2lmKGcubW9kLmlzWmVybygpKXJldHVybiBnLmRpdjt2YXIgQz0wIT09Zy5kaXYubmVnYXRpdmU/Zy5tb2QuaXN1YihI''@;'; put 'put ''KTpnLm1vZCxrPUgudXNocm4oMSksXz1ILmFuZGxuKDEpLHA9Qy5jbXAoayk7cmV0dXJuIHA8MHx8MT09PV8mJjA9PT1wP2cuZGl2OjAhPT1nLmRpdi5uZWdhdGl2ZT9nLmRpdi5pc3VibigxKTpnLmRpdi5pYWRkbigxKX0sTS5wcm90b3R5cGUubW9kcm49ZnVuY3Rpb24oSCl7dmFyIGc9SDww''@;'; put 'put ''O2cmJihIPS1IKSxtKEg8PTY3MTA4ODYzKTtmb3IodmFyIEM9KDE8PDI2KSVILGs9MCxfPXRoaXMubGVuZ3RoLTE7Xz49MDtfLS0paz0oQyprKygwfHRoaXMud29yZHNbX10pKSVIO3JldHVybiBnPy1rOmt9LE0ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMubW9kcm4o''@;'; put 'put ''SCl9LE0ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKEgpe3ZhciBnPUg8MDtnJiYoSD0tSCksbShIPD02NzEwODg2Myk7Zm9yKHZhciBDPTAsaz10aGlzLmxlbmd0aC0xO2s+PTA7ay0tKXt2YXIgXz0oMHx0aGlzLndvcmRzW2tdKSs2NzEwODg2NCpDO3RoaXMud29yZHNba109Xy9IfDAsQz1f''@;'; put 'put ''JUh9cmV0dXJuIHRoaXMuX3N0cmlwKCksZz90aGlzLmluZWcoKTp0aGlzfSxNLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmNsb25lKCkuaWRpdm4oSCl9LE0ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24oSCl7bSgwPT09SC5uZWdhdGl2ZSksbSghSC5pc1plcm8oKSk7''@;'; put 'put ''dmFyIGc9dGhpcyxDPUguY2xvbmUoKTtnPTAhPT1nLm5lZ2F0aXZlP2cudW1vZChIKTpnLmNsb25lKCk7Zm9yKHZhciBrPW5ldyBNKDEpLF89bmV3IE0oMCkscD1uZXcgTSgwKSx3PW5ldyBNKDEpLEs9MDtnLmlzRXZlbigpJiZDLmlzRXZlbigpOylnLml1c2hybigxKSxDLml1c2hybigxKSwr''@;'; put 'put ''K0s7Zm9yKHZhciB0ZT1DLmNsb25lKCksY2U9Zy5jbG9uZSgpOyFnLmlzWmVybygpOyl7Zm9yKHZhciBoZT0wLFNlPTE7IShnLndvcmRzWzBdJlNlKSYmaGU8MjY7KytoZSxTZTw8PTEpO2lmKGhlPjApZm9yKGcuaXVzaHJuKGhlKTtoZS0tID4wOykoay5pc09kZCgpfHxfLmlzT2RkKCkpJiYo''@;'; put 'put ''ay5pYWRkKHRlKSxfLmlzdWIoY2UpKSxrLml1c2hybigxKSxfLml1c2hybigxKTtmb3IodmFyIExlPTAsSGU9MTshKEMud29yZHNbMF0mSGUpJiZMZTwyNjsrK0xlLEhlPDw9MSk7aWYoTGU+MClmb3IoQy5pdXNocm4oTGUpO0xlLS0gPjA7KShwLmlzT2RkKCl8fHcuaXNPZGQoKSkmJihwLmlh''@;'; put 'put ''ZGQodGUpLHcuaXN1YihjZSkpLHAuaXVzaHJuKDEpLHcuaXVzaHJuKDEpO2cuY21wKEMpPj0wPyhnLmlzdWIoQyksay5pc3ViKHApLF8uaXN1Yih3KSk6KEMuaXN1YihnKSxwLmlzdWIoayksdy5pc3ViKF8pKX1yZXR1cm57YTpwLGI6dyxnY2Q6Qy5pdXNobG4oSyl9fSxNLnByb3RvdHlwZS5f''@;'; put 'put ''aW52bXA9ZnVuY3Rpb24oSCl7bSgwPT09SC5uZWdhdGl2ZSksbSghSC5pc1plcm8oKSk7dmFyIGhlLGc9dGhpcyxDPUguY2xvbmUoKTtnPTAhPT1nLm5lZ2F0aXZlP2cudW1vZChIKTpnLmNsb25lKCk7Zm9yKHZhciBrPW5ldyBNKDEpLF89bmV3IE0oMCkscD1DLmNsb25lKCk7Zy5jbXBuKDEp''@;'; put 'put ''PjAmJkMuY21wbigxKT4wOyl7Zm9yKHZhciB3PTAsSz0xOyEoZy53b3Jkc1swXSZLKSYmdzwyNjsrK3csSzw8PTEpO2lmKHc+MClmb3IoZy5pdXNocm4odyk7dy0tID4wOylrLmlzT2RkKCkmJmsuaWFkZChwKSxrLml1c2hybigxKTtmb3IodmFyIHRlPTAsY2U9MTshKEMud29yZHNbMF0mY2Up''@;'; put 'put ''JiZ0ZTwyNjsrK3RlLGNlPDw9MSk7aWYodGU+MClmb3IoQy5pdXNocm4odGUpO3RlLS0gPjA7KV8uaXNPZGQoKSYmXy5pYWRkKHApLF8uaXVzaHJuKDEpO2cuY21wKEMpPj0wPyhnLmlzdWIoQyksay5pc3ViKF8pKTooQy5pc3ViKGcpLF8uaXN1YihrKSl9cmV0dXJuKGhlPTA9PT1nLmNtcG4o''@;'; put 'put ''MSk/azpfKS5jbXBuKDApPDAmJmhlLmlhZGQoSCksaGV9LE0ucHJvdG90eXBlLmdjZD1mdW5jdGlvbihIKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBILmFicygpO2lmKEguaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIGc9dGhpcy5jbG9uZSgpLEM9SC5jbG9uZSgpO2cubmVnYXRp''@;'; put 'put ''dmU9MCxDLm5lZ2F0aXZlPTA7Zm9yKHZhciBrPTA7Zy5pc0V2ZW4oKSYmQy5pc0V2ZW4oKTtrKyspZy5pdXNocm4oMSksQy5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO2cuaXNFdmVuKCk7KWcuaXVzaHJuKDEpO2Zvcig7Qy5pc0V2ZW4oKTspQy5pdXNocm4oMSk7dmFyIF89Zy5jbXAoQyk7aWYo''@;'; put 'put ''XzwwKXt2YXIgcD1nO2c9QyxDPXB9ZWxzZSBpZigwPT09X3x8MD09PUMuY21wbigxKSlicmVhaztnLmlzdWIoQyl9cmV0dXJuIEMuaXVzaGxuKGspfSxNLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmVnY2QoSCkuYS51bW9kKEgpfSxNLnByb3RvdHlwZS5pc0V2ZW49''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LE0ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sTS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMud29yZHNbMF0mSH0sTS5wcm90b3R5cGUuYmluY249''@;'; put 'put ''ZnVuY3Rpb24oSCl7bSgibnVtYmVyIj09dHlwZW9mIEgpO3ZhciBnPUglMjYsQz0oSC1nKS8yNixrPTE8PGc7aWYodGhpcy5sZW5ndGg8PUMpcmV0dXJuIHRoaXMuX2V4cGFuZChDKzEpLHRoaXMud29yZHNbQ118PWssdGhpcztmb3IodmFyIF89ayxwPUM7MCE9PV8mJnA8dGhpcy5sZW5ndGg7''@;'; put 'put ''cCsrKXt2YXIgdz0wfHRoaXMud29yZHNbcF07Xz0odys9Xyk+Pj4yNix0aGlzLndvcmRzW3BdPXcmPTY3MTA4ODYzfXJldHVybiAwIT09XyYmKHRoaXMud29yZHNbcF09Xyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihIKXt2YXIgQyxnPUg8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWcpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmcpcmV0dXJuIDE7aWYodGhpcy5fc3RyaXAoKSx0aGlzLmxlbmd0aD4x''@;'; put 'put ''KUM9MTtlbHNle2cmJihIPS1IKSxtKEg8PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBrPTB8dGhpcy53b3Jkc1swXTtDPWs9PT1IPzA6azxIPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUM6Q30sTS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKEgpe2lmKDAhPT10''@;'; put 'put ''aGlzLm5lZ2F0aXZlJiYwPT09SC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PUgubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGc9dGhpcy51Y21wKEgpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1nOmd9LE0ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oSCl7''@;'; put 'put ''aWYodGhpcy5sZW5ndGg+SC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8SC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBnPTAsQz10aGlzLmxlbmd0aC0xO0M+PTA7Qy0tKXt2YXIgaz0wfHRoaXMud29yZHNbQ10sXz0wfEgud29yZHNbQ107aWYoayE9PV8pe2s8Xz9nPS0xOms+XyYm''@;'; put 'put ''KGc9MSk7YnJlYWt9fXJldHVybiBnfSxNLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oSCl7cmV0dXJuIDE9PT10aGlzLmNtcG4oSCl9LE0ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKEgpe3JldHVybiAxPT09dGhpcy5jbXAoSCl9LE0ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oSCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuY21wbihIKT49MH0sTS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmNtcChIKT49MH0sTS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKEgpe3JldHVybi0xPT09dGhpcy5jbXBuKEgpfSxNLnByb3RvdHlwZS5sdD1mdW5jdGlvbihIKXtyZXR1cm4tMT09PXRoaXMuY21w''@;'; put 'put ''KEgpfSxNLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmNtcG4oSCk8PTB9LE0ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5jbXAoSCk8PTB9LE0ucHJvdG90eXBlLmVxbj1mdW5jdGlvbihIKXtyZXR1cm4gMD09PXRoaXMuY21wbihIKX0sTS5w''@;'; put 'put ''cm90b3R5cGUuZXE9ZnVuY3Rpb24oSCl7cmV0dXJuIDA9PT10aGlzLmNtcChIKX0sTS5yZWQ9ZnVuY3Rpb24oSCl7cmV0dXJuIG5ldyBiKEgpfSxNLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihIKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNv''@;'; put 'put ''bnRleHQiKSxtKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLEguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChIKX0sTS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0''@;'; put 'put ''aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE0ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5yZWQ9SCx0aGlzfSxNLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihIKXtyZXR1cm4gbSghdGhp''@;'; put 'put ''cy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChIKX0sTS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKEgpe3JldHVybiBtKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRk''@;'; put 'put ''KHRoaXMsSCl9LE0ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oSCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLEgpfSxNLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oSCl7cmV0dXJuIG0odGhp''@;'; put 'put ''cy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxIKX0sTS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihIKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5p''@;'; put 'put ''c3ViKHRoaXMsSCl9LE0ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihIKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLEgpfSxNLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oSCl7cmV0dXJuIG0odGhp''@;'; put 'put ''cy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLEgpLHRoaXMucmVkLm11bCh0aGlzLEgpfSxNLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKEgpe3JldHVybiBtKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxIKSx0aGlzLnJlZC5pbXVsKHRoaXMsSCl9LE0ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3Zlcmlm''@;'; put 'put ''eTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxNLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTS5w''@;'; put 'put ''cm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE0ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gbSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxNLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKEgpe3JldHVybiBtKHRoaXMucmVkJiYhSC5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyks''@;'; put 'put ''dGhpcy5yZWQucG93KHRoaXMsSCl9O3ZhciByZT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIGllKEYsSCl7dGhpcy5uYW1lPUYsdGhpcy5wPW5ldyBNKEgsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBNKDEpLml1''@;'; put 'put ''c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiB1ZSgpe2llLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24g''@;'; put 'put ''bGUoKXtpZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGFlKCl7aWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZm''@;'; put 'put ''ZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBXKCl7aWUuY2FsbCh0aGlzLCIyNTUxOSIsIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiKX1mdW5jdGlvbiBiKEYpe2lmKCJzdHJpbmciPT10eXBlb2YgRil7dmFyIEg9''@;'; put 'put ''TS5fcHJpbWUoRik7dGhpcy5tPUgucCx0aGlzLnByaW1lPUh9ZWxzZSBtKEYuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Rix0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gQShGKXtiLmNhbGwodGhpcyxGKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5n''@;'; put 'put ''dGgoKSx0aGlzLnNoaWZ0JTI2IT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBNKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRo''@;'; put 'put ''aXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWllLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIEg9bmV3IE0obnVsbCk7cmV0dXJuIEgud29y''@;'; put 'put ''ZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxIfSxpZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihIKXt2YXIgQyxnPUg7ZG97dGhpcy5zcGxpdChnLHRoaXMudG1wKSxDPShnPShnPXRoaXMuaW11bEsoZykpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShD''@;'; put 'put ''PnRoaXMubik7dmFyIGs9Qzx0aGlzLm4/LTE6Zy51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1rPyhnLndvcmRzWzBdPTAsZy5sZW5ndGg9MSk6az4wP2cuaXN1Yih0aGlzLnApOnZvaWQgMCE9PWcuc3RyaXA/Zy5zdHJpcCgpOmcuX3N0cmlwKCksZ30saWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0''@;'; put 'put ''aW9uKEgsZyl7SC5pdXNocm4odGhpcy5uLDAsZyl9LGllLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihIKXtyZXR1cm4gSC5pbXVsKHRoaXMuayl9LHNlKHVlLGllKSx1ZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oSCxnKXtmb3IodmFyIEM9NDE5NDMwMyxrPU1hdGgubWluKEgubGVuZ3Ro''@;'; put 'put ''LDkpLF89MDtfPGs7XysrKWcud29yZHNbX109SC53b3Jkc1tfXTtpZihnLmxlbmd0aD1rLEgubGVuZ3RoPD05KXJldHVybiBILndvcmRzWzBdPTAsdm9pZChILmxlbmd0aD0xKTt2YXIgcD1ILndvcmRzWzldO2ZvcihnLndvcmRzW2cubGVuZ3RoKytdPXAmQyxfPTEwO188SC5sZW5ndGg7Xysr''@;'; put 'put ''KXt2YXIgdz0wfEgud29yZHNbX107SC53b3Jkc1tfLTEwXT0odyZDKTw8NHxwPj4+MjIscD13fUgud29yZHNbXy0xMF09cD4+Pj0yMixILmxlbmd0aC09MD09PXAmJkgubGVuZ3RoPjEwPzEwOjl9LHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihIKXtILndvcmRzW0gubGVuZ3RoXT0wLEgu''@;'; put 'put ''d29yZHNbSC5sZW5ndGgrMV09MCxILmxlbmd0aCs9Mjtmb3IodmFyIGc9MCxDPTA7QzxILmxlbmd0aDtDKyspe3ZhciBrPTB8SC53b3Jkc1tDXTtILndvcmRzW0NdPTY3MTA4ODYzJihnKz05NzcqayksZz02NCprKyhnLzY3MTA4ODY0fDApfXJldHVybiAwPT09SC53b3Jkc1tILmxlbmd0aC0x''@;'; put 'put ''XSYmKEgubGVuZ3RoLS0sMD09PUgud29yZHNbSC5sZW5ndGgtMV0mJkgubGVuZ3RoLS0pLEh9LHNlKGxlLGllKSxzZShhZSxpZSksc2UoVyxpZSksVy5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oSCl7Zm9yKHZhciBnPTAsQz0wO0M8SC5sZW5ndGg7QysrKXt2YXIgaz0xOSooMHxILndvcmRz''@;'; put 'put ''W0NdKStnLF89NjcxMDg4NjMmaztrPj4+PTI2LEgud29yZHNbQ109XyxnPWt9cmV0dXJuIDAhPT1nJiYoSC53b3Jkc1tILmxlbmd0aCsrXT1nKSxIfSxNLl9wcmltZT1mdW5jdGlvbihIKXtpZihyZVtIXSlyZXR1cm4gcmVbSF07dmFyIGc7aWYoImsyNTYiPT09SClnPW5ldyB1ZTtlbHNlIGlm''@;'; put 'put ''KCJwMjI0Ij09PUgpZz1uZXcgbGU7ZWxzZSBpZigicDE5MiI9PT1IKWc9bmV3IGFlO2Vsc2V7aWYoInAyNTUxOSIhPT1IKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK0gpO2c9bmV3IFd9cmV0dXJuIHJlW0hdPWcsZ30sYi5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oSCl7''@;'; put 'put ''bSgwPT09SC5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxtKEgucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGIucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKEgsZyl7bSghKEgubmVnYXRpdmV8Zy5uZWdhdGl2ZSksInJlZCB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggcG9zaXRpdmVzIiksbShILnJlZCYmSC5yZWQ9PT1nLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxiLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShIKS5fZm9yY2VSZWQodGhp''@;'; put 'put ''cyk6KEQoSCxILnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcykpLEgpfSxiLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oSCl7cmV0dXJuIEguaXNaZXJvKCk/SC5jbG9uZSgpOnRoaXMubS5zdWIoSCkuX2ZvcmNlUmVkKHRoaXMpfSxiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oSCxnKXt0aGlz''@;'; put 'put ''Ll92ZXJpZnkyKEgsZyk7dmFyIEM9SC5hZGQoZyk7cmV0dXJuIEMuY21wKHRoaXMubSk+PTAmJkMuaXN1Yih0aGlzLm0pLEMuX2ZvcmNlUmVkKHRoaXMpfSxiLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKEgsZyl7dGhpcy5fdmVyaWZ5MihILGcpO3ZhciBDPUguaWFkZChnKTtyZXR1cm4gQy5j''@;'; put 'put ''bXAodGhpcy5tKT49MCYmQy5pc3ViKHRoaXMubSksQ30sYi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKEgsZyl7dGhpcy5fdmVyaWZ5MihILGcpO3ZhciBDPUguc3ViKGcpO3JldHVybiBDLmNtcG4oMCk8MCYmQy5pYWRkKHRoaXMubSksQy5fZm9yY2VSZWQodGhpcyl9LGIucHJvdG90eXBlLmlz''@;'; put 'put ''dWI9ZnVuY3Rpb24oSCxnKXt0aGlzLl92ZXJpZnkyKEgsZyk7dmFyIEM9SC5pc3ViKGcpO3JldHVybiBDLmNtcG4oMCk8MCYmQy5pYWRkKHRoaXMubSksQ30sYi5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKEgsZyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoSCksdGhpcy5pbW9kKEgudXNobG4oZykp''@;'; put 'put ''fSxiLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKEgsZyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoSCxnKSx0aGlzLmltb2QoSC5pbXVsKGcpKX0sYi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEgsZyl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoSCxnKSx0aGlzLmltb2QoSC5tdWwoZykpfSxiLnByb3Rv''@;'; put 'put ''dHlwZS5pc3FyPWZ1bmN0aW9uKEgpe3JldHVybiB0aGlzLmltdWwoSCxILmNsb25lKCkpfSxiLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMubXVsKEgsSCl9LGIucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oSCl7aWYoSC5pc1plcm8oKSlyZXR1cm4gSC5jbG9uZSgpO3Zh''@;'; put 'put ''ciBnPXRoaXMubS5hbmRsbigzKTtpZihtKGclMj09MSksMz09PWcpe3ZhciBDPXRoaXMubS5hZGQobmV3IE0oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coSCxDKX1mb3IodmFyIGs9dGhpcy5tLnN1Ym4oMSksXz0wOyFrLmlzWmVybygpJiYwPT09ay5hbmRsbigxKTspXysrLGsuaXVz''@;'; put 'put ''aHJuKDEpO20oIWsuaXNaZXJvKCkpO3ZhciBwPW5ldyBNKDEpLnRvUmVkKHRoaXMpLHc9cC5yZWROZWcoKSxLPXRoaXMubS5zdWJuKDEpLml1c2hybigxKSx0ZT10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHRlPW5ldyBNKDIqdGUqdGUpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyh0ZSxLKS5j''@;'; put 'put ''bXAodyk7KXRlLnJlZElBZGQodyk7Zm9yKHZhciBjZT10aGlzLnBvdyh0ZSxrKSxoZT10aGlzLnBvdyhILGsuYWRkbigxKS5pdXNocm4oMSkpLFNlPXRoaXMucG93KEgsayksTGU9XzswIT09U2UuY21wKHApOyl7Zm9yKHZhciBIZT1TZSx4ZT0wOzAhPT1IZS5jbXAocCk7eGUrKylIZT1IZS5y''@;'; put 'put ''ZWRTcXIoKTttKHhlPExlKTt2YXIgRGU9dGhpcy5wb3coY2UsbmV3IE0oMSkuaXVzaGxuKExlLXhlLTEpKTtoZT1oZS5yZWRNdWwoRGUpLGNlPURlLnJlZFNxcigpLFNlPVNlLnJlZE11bChjZSksTGU9eGV9cmV0dXJuIGhlfSxiLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKEgpe3ZhciBnPUgu''@;'; put 'put ''X2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1nLm5lZ2F0aXZlPyhnLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKGcpLnJlZE5lZygpKTp0aGlzLmltb2QoZyl9LGIucHJvdG90eXBlLnBvdz1mdW5jdGlvbihILGcpe2lmKGcuaXNaZXJvKCkpcmV0dXJuIG5ldyBNKDEpLnRvUmVkKHRoaXMpO2lmKDA9''@;'; put 'put ''PT1nLmNtcG4oMSkpcmV0dXJuIEguY2xvbmUoKTt2YXIgaz1uZXcgQXJyYXkoMTYpO2tbMF09bmV3IE0oMSkudG9SZWQodGhpcyksa1sxXT1IO2Zvcih2YXIgXz0yO188ay5sZW5ndGg7XysrKWtbX109dGhpcy5tdWwoa1tfLTFdLEgpO3ZhciBwPWtbMF0sdz0wLEs9MCx0ZT1nLmJpdExlbmd0''@;'; put 'put ''aCgpJTI2O2ZvcigwPT09dGUmJih0ZT0yNiksXz1nLmxlbmd0aC0xO18+PTA7Xy0tKXtmb3IodmFyIGNlPWcud29yZHNbX10saGU9dGUtMTtoZT49MDtoZS0tKXt2YXIgU2U9Y2U+PmhlJjE7cCE9PWtbMF0mJihwPXRoaXMuc3FyKHApKSwwIT09U2V8fDAhPT13Pyh3PDw9MSx3fD1TZSwoND09''@;'; put 'put ''KytLfHwwPT09XyYmMD09PWhlKSYmKHA9dGhpcy5tdWwocCxrW3ddKSxLPTAsdz0wKSk6Sz0wfXRlPTI2fXJldHVybiBwfSxiLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oSCl7dmFyIGc9SC51bW9kKHRoaXMubSk7cmV0dXJuIGc9PT1IP2cuY2xvbmUoKTpnfSxiLnByb3RvdHlwZS5j''@;'; put 'put ''b252ZXJ0RnJvbT1mdW5jdGlvbihIKXt2YXIgZz1ILmNsb25lKCk7cmV0dXJuIGcucmVkPW51bGwsZ30sTS5tb250PWZ1bmN0aW9uKEgpe3JldHVybiBuZXcgQShIKX0sc2UoQSxiKSxBLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oSCl7cmV0dXJuIHRoaXMuaW1vZChILnVzaGxuKHRo''@;'; put 'put ''aXMuc2hpZnQpKX0sQS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24oSCl7dmFyIGc9dGhpcy5pbW9kKEgubXVsKHRoaXMucmludikpO3JldHVybiBnLnJlZD1udWxsLGd9LEEucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oSCxnKXtpZihILmlzWmVybygpfHxnLmlzWmVybygpKXJldHVy''@;'; put 'put ''biBILndvcmRzWzBdPTAsSC5sZW5ndGg9MSxIO3ZhciBDPUguaW11bChnKSxrPUMubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLF89Qy5pc3ViKGspLml1c2hybih0aGlzLnNoaWZ0KSxwPV87cmV0dXJuIF8uY21wKHRoaXMu''@;'; put 'put ''bSk+PTA/cD1fLmlzdWIodGhpcy5tKTpfLmNtcG4oMCk8MCYmKHA9Xy5pYWRkKHRoaXMubSkpLHAuX2ZvcmNlUmVkKHRoaXMpfSxBLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oSCxnKXtpZihILmlzWmVybygpfHxnLmlzWmVybygpKXJldHVybiBuZXcgTSgwKS5fZm9yY2VSZWQodGhpcyk7dmFy''@;'; put 'put ''IEM9SC5tdWwoZyksaz1DLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxfPUMuaXN1YihrKS5pdXNocm4odGhpcy5zaGlmdCkscD1fO3JldHVybiBfLmNtcCh0aGlzLm0pPj0wP3A9Xy5pc3ViKHRoaXMubSk6Xy5jbXBuKDAp''@;'; put 'put ''PDAmJihwPV8uaWFkZCh0aGlzLm0pKSxwLl9mb3JjZVJlZCh0aGlzKX0sQS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihIKXtyZXR1cm4gdGhpcy5pbW9kKEguX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9fShRZT1SLm5tZChRZSksdGhpcyl9LDM1Mjk0OihR''@;'; put 'put ''ZSxNZSxSKT0+e3ZhciBvZTtmdW5jdGlvbiB4KHNlKXt0aGlzLnJhbmQ9c2V9aWYoUWUuZXhwb3J0cz1mdW5jdGlvbihNKXtyZXR1cm4gb2V8fChvZT1uZXcgeChudWxsKSksb2UuZ2VuZXJhdGUoTSl9LFFlLmV4cG9ydHMuUmFuZD14LHgucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKE0p''@;'; put 'put ''e3JldHVybiB0aGlzLl9yYW5kKE0pfSx4LnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihNKXtpZih0aGlzLnJhbmQuZ2V0Qnl0ZXMpcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhNKTtmb3IodmFyIE89bmV3IFVpbnQ4QXJyYXkoTSksST0wO0k8Ty5sZW5ndGg7SSsrKU9bSV09dGhpcy5yYW5k''@;'; put 'put ''LmdldEJ5dGUoKTtyZXR1cm4gT30sIm9iamVjdCI9PXR5cGVvZiBzZWxmKXNlbGYuY3J5cHRvJiZzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXM/eC5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oTSl7dmFyIE89bmV3IFVpbnQ4QXJyYXkoTSk7cmV0dXJuIHNlbGYuY3J5cHRvLmdldFJhbmRv''@;'; put 'put ''bVZhbHVlcyhPKSxPfTpzZWxmLm1zQ3J5cHRvJiZzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcz94LnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihNKXt2YXIgTz1uZXcgVWludDhBcnJheShNKTtyZXR1cm4gc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoTyksT306Im9iamVjdCI9''@;'; put 'put ''PXR5cGVvZiB3aW5kb3cmJih4LnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIHlldCIpfSk7ZWxzZSB0cnl7dmFyIG09Uig5MTQyNik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG0ucmFuZG9tQnl0ZXMpdGhyb3cgbmV3IEVycm9yKCJO''@;'; put 'put ''b3Qgc3VwcG9ydGVkIik7eC5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oTSl7cmV0dXJuIG0ucmFuZG9tQnl0ZXMoTSl9fWNhdGNoe319LDEyMzc1OihRZSxNZSxSKT0+e3ZhciBvZT1SKDI3MDU0KS5CdWZmZXI7ZnVuY3Rpb24geChqKXtvZS5pc0J1ZmZlcihqKXx8KGo9b2UuZnJvbShqKSk7''@;'; put 'put ''Zm9yKHZhciBHPWoubGVuZ3RoLzR8MCxEPW5ldyBBcnJheShHKSxUPTA7VDxHO1QrKylEW1RdPWoucmVhZFVJbnQzMkJFKDQqVCk7cmV0dXJuIER9ZnVuY3Rpb24gbShqKXtmb3IoOzA8ai5sZW5ndGg7aisrKWpbMF09MH1mdW5jdGlvbiBzZShqLEcsRCxULEUpe2Zvcih2YXIgZWUscmUsaWUs''@;'; put 'put ''dWUsej1EWzBdLE49RFsxXSxCPURbMl0sWj1EWzNdLFk9alswXV5HWzBdLFU9alsxXV5HWzFdLHE9alsyXV5HWzJdLEo9alszXV5HWzNdLGxlPTQsYWU9MTthZTxFO2FlKyspZWU9eltZPj4+MjRdXk5bVT4+PjE2JjI1NV1eQltxPj4+OCYyNTVdXlpbMjU1JkpdXkdbbGUrK10scmU9eltVPj4+''@;'; put 'put ''MjRdXk5bcT4+PjE2JjI1NV1eQltKPj4+OCYyNTVdXlpbMjU1JlldXkdbbGUrK10saWU9eltxPj4+MjRdXk5bSj4+PjE2JjI1NV1eQltZPj4+OCYyNTVdXlpbMjU1JlVdXkdbbGUrK10sdWU9eltKPj4+MjRdXk5bWT4+PjE2JjI1NV1eQltVPj4+OCYyNTVdXlpbMjU1JnFdXkdbbGUrK10sWT1l''@;'; put 'put ''ZSxVPXJlLHE9aWUsSj11ZTtyZXR1cm4gZWU9KFRbWT4+PjI0XTw8MjR8VFtVPj4+MTYmMjU1XTw8MTZ8VFtxPj4+OCYyNTVdPDw4fFRbMjU1JkpdKV5HW2xlKytdLHJlPShUW1U+Pj4yNF08PDI0fFRbcT4+PjE2JjI1NV08PDE2fFRbSj4+PjgmMjU1XTw8OHxUWzI1NSZZXSleR1tsZSsrXSxp''@;'; put 'put ''ZT0oVFtxPj4+MjRdPDwyNHxUW0o+Pj4xNiYyNTVdPDwxNnxUW1k+Pj44JjI1NV08PDh8VFsyNTUmVV0pXkdbbGUrK10sdWU9KFRbSj4+PjI0XTw8MjR8VFtZPj4+MTYmMjU1XTw8MTZ8VFtVPj4+OCYyNTVdPDw4fFRbMjU1JnFdKV5HW2xlKytdLFtlZT4+Pj0wLHJlPj4+PTAsaWU+Pj49MCx1''@;'; put 'put ''ZT4+Pj0wXX12YXIgTT1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sTz1mdW5jdGlvbigpe2Zvcih2YXIgaj1uZXcgQXJyYXkoMjU2KSxHPTA7RzwyNTY7RysrKWpbR109RzwxMjg/Rzw8MTpHPDwxXjI4Mztmb3IodmFyIEQ9W10sVD1bXSxFPVtbXSxbXSxbXSxbXV0sej1bW10sW10s''@;'; put 'put ''W10sW11dLE49MCxCPTAsWj0wO1o8MjU2OysrWil7dmFyIFk9Ql5CPDwxXkI8PDJeQjw8M15CPDw0O0RbTl09WT1ZPj4+OF4yNTUmWV45OSxUW1ldPU47dmFyIFU9altOXSxxPWpbVV0sSj1qW3FdLGVlPTI1NypqW1ldXjE2ODQzMDA4Klk7RVswXVtOXT1lZTw8MjR8ZWU+Pj44LEVbMV1bTl09''@;'; put 'put ''ZWU8PDE2fGVlPj4+MTYsRVsyXVtOXT1lZTw8OHxlZT4+PjI0LEVbM11bTl09ZWUselswXVtZXT0oZWU9MTY4NDMwMDkqSl42NTUzNypxXjI1NypVXjE2ODQzMDA4Kk4pPDwyNHxlZT4+PjgselsxXVtZXT1lZTw8MTZ8ZWU+Pj4xNix6WzJdW1ldPWVlPDw4fGVlPj4+MjQselszXVtZXT1lZSww''@;'; put 'put ''PT09Tj9OPUI9MTooTj1VXmpbaltqW0peVV1dXSxCXj1qW2pbQl1dKX1yZXR1cm57U0JPWDpELElOVl9TQk9YOlQsU1VCX01JWDpFLElOVl9TVUJfTUlYOnp9fSgpO2Z1bmN0aW9uIEkoail7dGhpcy5fa2V5PXgoaiksdGhpcy5fcmVzZXQoKX1JLmJsb2NrU2l6ZT0xNixJLmtleVNpemU9MzIs''@;'; put 'put ''SS5wcm90b3R5cGUuYmxvY2tTaXplPUkuYmxvY2tTaXplLEkucHJvdG90eXBlLmtleVNpemU9SS5rZXlTaXplLEkucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe2Zvcih2YXIgaj10aGlzLl9rZXksRz1qLmxlbmd0aCxEPUcrNixUPTQqKEQrMSksRT1bXSx6PTA7ejxHO3orKylFW3pdPWpb''@;'; put 'put ''el07Zm9yKHo9Rzt6PFQ7eisrKXt2YXIgTj1FW3otMV07eiVHPT0wPyhOPU8uU0JPWFsoTj1OPDw4fE4+Pj4yNCk+Pj4yNF08PDI0fE8uU0JPWFtOPj4+MTYmMjU1XTw8MTZ8Ty5TQk9YW04+Pj44JjI1NV08PDh8Ty5TQk9YWzI1NSZOXSxOXj1NW3ovR3wwXTw8MjQpOkc+NiYmeiVHPT00JiYo''@;'; put 'put ''Tj1PLlNCT1hbTj4+PjI0XTw8MjR8Ty5TQk9YW04+Pj4xNiYyNTVdPDwxNnxPLlNCT1hbTj4+PjgmMjU1XTw8OHxPLlNCT1hbMjU1Jk5dKSxFW3pdPUVbei1HXV5OfWZvcih2YXIgQj1bXSxaPTA7WjxUO1orKyl7dmFyIFk9VC1aLFU9RVtZLShaJTQ/MDo0KV07QltaXT1aPDR8fFk8PTQ/VTpP''@;'; put 'put ''LklOVl9TVUJfTUlYWzBdW08uU0JPWFtVPj4+MjRdXV5PLklOVl9TVUJfTUlYWzFdW08uU0JPWFtVPj4+MTYmMjU1XV1eTy5JTlZfU1VCX01JWFsyXVtPLlNCT1hbVT4+PjgmMjU1XV1eTy5JTlZfU1VCX01JWFszXVtPLlNCT1hbMjU1JlVdXX10aGlzLl9uUm91bmRzPUQsdGhpcy5fa2V5U2No''@;'; put 'put ''ZWR1bGU9RSx0aGlzLl9pbnZLZXlTY2hlZHVsZT1CfSxJLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24oail7cmV0dXJuIHNlKGo9eChqKSx0aGlzLl9rZXlTY2hlZHVsZSxPLlNVQl9NSVgsTy5TQk9YLHRoaXMuX25Sb3VuZHMpfSxJLnByb3RvdHlwZS5lbmNyeXB0QmxvY2s9''@;'; put 'put ''ZnVuY3Rpb24oail7dmFyIEc9dGhpcy5lbmNyeXB0QmxvY2tSYXcoaiksRD1vZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIEQud3JpdGVVSW50MzJCRShHWzBdLDApLEQud3JpdGVVSW50MzJCRShHWzFdLDQpLEQud3JpdGVVSW50MzJCRShHWzJdLDgpLEQud3JpdGVVSW50MzJCRShHWzNdLDEy''@;'; put 'put ''KSxEfSxJLnByb3RvdHlwZS5kZWNyeXB0QmxvY2s9ZnVuY3Rpb24oail7dmFyIEc9KGo9eChqKSlbMV07alsxXT1qWzNdLGpbM109Rzt2YXIgRD1zZShqLHRoaXMuX2ludktleVNjaGVkdWxlLE8uSU5WX1NVQl9NSVgsTy5JTlZfU0JPWCx0aGlzLl9uUm91bmRzKSxUPW9lLmFsbG9jVW5zYWZl''@;'; put 'put ''KDE2KTtyZXR1cm4gVC53cml0ZVVJbnQzMkJFKERbMF0sMCksVC53cml0ZVVJbnQzMkJFKERbM10sNCksVC53cml0ZVVJbnQzMkJFKERbMl0sOCksVC53cml0ZVVJbnQzMkJFKERbMV0sMTIpLFR9LEkucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7bSh0aGlzLl9rZXlTY2hlZHVsZSksbSh0''@;'; put 'put ''aGlzLl9pbnZLZXlTY2hlZHVsZSksbSh0aGlzLl9rZXkpfSxRZS5leHBvcnRzLkFFUz1JfSwxOTMwNzooUWUsTWUsUik9Pnt2YXIgb2U9UigxMjM3NSkseD1SKDI3MDU0KS5CdWZmZXIsbT1SKDMyNDcpLHNlPVIoNzE5OTMpLE09Uig4NTkxNyksTz1SKDEzNTQ2KSxJPVIoOTU3MjUpO2Z1bmN0''@;'; put 'put ''aW9uIEQoVCxFLHosTil7bS5jYWxsKHRoaXMpO3ZhciBCPXguYWxsb2MoNCwwKTt0aGlzLl9jaXBoZXI9bmV3IG9lLkFFUyhFKTt2YXIgWj10aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKEIpO3RoaXMuX2doYXNoPW5ldyBNKFopLHo9ZnVuY3Rpb24gRyhULEUseil7aWYoMTI9PT1FLmxlbmd0''@;'; put 'put ''aClyZXR1cm4gVC5fZmluSUQ9eC5jb25jYXQoW0UseC5mcm9tKFswLDAsMCwxXSldKSx4LmNvbmNhdChbRSx4LmZyb20oWzAsMCwwLDJdKV0pO3ZhciBOPW5ldyBNKHopLEI9RS5sZW5ndGgsWj1CJTE2O04udXBkYXRlKEUpLFomJk4udXBkYXRlKHguYWxsb2MoWj0xNi1aLDApKSxOLnVwZGF0''@;'; put 'put ''ZSh4LmFsbG9jKDgsMCkpO3ZhciBZPTgqQixVPXguYWxsb2MoOCk7VS53cml0ZVVJbnRCRShZLDAsOCksTi51cGRhdGUoVSksVC5fZmluSUQ9Ti5zdGF0ZTt2YXIgcT14LmZyb20oVC5fZmluSUQpO3JldHVybiBJKHEpLHF9KHRoaXMseixaKSx0aGlzLl9wcmV2PXguZnJvbSh6KSx0aGlzLl9j''@;'; put 'put ''YWNoZT14LmFsbG9jVW5zYWZlKDApLHRoaXMuX3NlY0NhY2hlPXguYWxsb2NVbnNhZmUoMCksdGhpcy5fZGVjcnlwdD1OLHRoaXMuX2FsZW49MCx0aGlzLl9sZW49MCx0aGlzLl9tb2RlPVQsdGhpcy5fYXV0aFRhZz1udWxsLHRoaXMuX2NhbGxlZD0hMX1zZShELG0pLEQucHJvdG90eXBlLl91''@;'; put 'put ''cGRhdGU9ZnVuY3Rpb24oVCl7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIEU9MTYtdGhpcy5fYWxlbiUxNjtFPDE2JiYoRT14LmFsbG9jKEUsMCksdGhpcy5fZ2hhc2gudXBkYXRlKEUpKX10aGlzLl9jYWxsZWQ9ITA7dmFyIHo9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsVCk7''@;'; put 'put ''cmV0dXJuIHRoaXMuX2doYXNoLnVwZGF0ZSh0aGlzLl9kZWNyeXB0P1Q6eiksdGhpcy5fbGVuKz1ULmxlbmd0aCx6fSxELnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5fYXV0aFRhZyl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHN0YXRl''@;'; put 'put ''IG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YSIpO3ZhciBUPU8odGhpcy5fZ2hhc2guZmluYWwoOCp0aGlzLl9hbGVuLDgqdGhpcy5fbGVuKSx0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSk7aWYodGhpcy5fZGVjcnlwdCYmZnVuY3Rpb24gaihULEUpe3ZhciB6''@;'; put 'put ''PTA7VC5sZW5ndGghPT1FLmxlbmd0aCYmeisrO2Zvcih2YXIgTj1NYXRoLm1pbihULmxlbmd0aCxFLmxlbmd0aCksQj0wO0I8TjsrK0Ipeis9VFtCXV5FW0JdO3JldHVybiB6fShULHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRv''@;'; put 'put ''IGF1dGhlbnRpY2F0ZSBkYXRhIik7dGhpcy5fYXV0aFRhZz1ULHRoaXMuX2NpcGhlci5zY3J1YigpfSxELnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVjcnlwdHx8IXguaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5n''@;'; put 'put ''IHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpO3JldHVybiB0aGlzLl9hdXRoVGFnfSxELnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKEUpe2lmKCF0aGlzLl9kZWNyeXB0KXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5z''@;'; put 'put ''dXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9hdXRoVGFnPUV9LEQucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbihFKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKTt0aGlzLl9naGFzaC51cGRhdGUoRSks''@;'; put 'put ''dGhpcy5fYWxlbis9RS5sZW5ndGh9LFFlLmV4cG9ydHM9RH0sNDMzODg6KFFlLE1lLFIpPT57dmFyIG9lPVIoMzUwKSx4PVIoNjAxMDIpLG09UigzMjE5KTtNZS5jcmVhdGVDaXBoZXI9TWUuQ2lwaGVyPW9lLmNyZWF0ZUNpcGhlcixNZS5jcmVhdGVDaXBoZXJpdj1NZS5DaXBoZXJpdj1vZS5j''@;'; put 'put ''cmVhdGVDaXBoZXJpdixNZS5jcmVhdGVEZWNpcGhlcj1NZS5EZWNpcGhlcj14LmNyZWF0ZURlY2lwaGVyLE1lLmNyZWF0ZURlY2lwaGVyaXY9TWUuRGVjaXBoZXJpdj14LmNyZWF0ZURlY2lwaGVyaXYsTWUubGlzdENpcGhlcnM9TWUuZ2V0Q2lwaGVycz1mdW5jdGlvbiBzZSgpe3JldHVybiBP''@;'; put 'put ''YmplY3Qua2V5cyhtKX19LDYwMTAyOihRZSxNZSxSKT0+e3ZhciBvZT1SKDE5MzA3KSx4PVIoMjcwNTQpLkJ1ZmZlcixtPVIoNjA1MDMpLHNlPVIoOTE4MjEpLE09UigzMjQ3KSxPPVIoMTIzNzUpLEk9UigxODIxMSk7ZnVuY3Rpb24gRyhOLEIsWil7TS5jYWxsKHRoaXMpLHRoaXMuX2NhY2hl''@;'; put 'put ''PW5ldyBELHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgTy5BRVMoQiksdGhpcy5fcHJldj14LmZyb20oWiksdGhpcy5fbW9kZT1OLHRoaXMuX2F1dG9wYWRkaW5nPSEwfWZ1bmN0aW9uIEQoKXt0aGlzLmNhY2hlPXguYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gRShOLEIsWil7''@;'; put 'put ''dmFyIFk9bVtOLnRvTG93ZXJDYXNlKCldO2lmKCFZKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgWiYmKFo9eC5mcm9tKFopKSwiR0NNIiE9PVkubW9kZSYmWi5sZW5ndGghPT1ZLml2KXRocm93IG5ldyBUeXBlRXJyb3IoImlu''@;'; put 'put ''dmFsaWQgaXYgbGVuZ3RoICIrWi5sZW5ndGgpO2lmKCJzdHJpbmciPT10eXBlb2YgQiYmKEI9eC5mcm9tKEIpKSxCLmxlbmd0aCE9PVkua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrQi5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09WS50eXBlP25ldyBz''@;'; put 'put ''ZShZLm1vZHVsZSxCLFosITApOiJhdXRoIj09PVkudHlwZT9uZXcgb2UoWS5tb2R1bGUsQixaLCEwKTpuZXcgRyhZLm1vZHVsZSxCLFopfVIoNzE5OTMpKEcsTSksRy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihOKXt0aGlzLl9jYWNoZS5hZGQoTik7Zm9yKHZhciBCLFosWT1bXTtCPXRo''@;'; put 'put ''aXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KVo9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsQiksWS5wdXNoKFopO3JldHVybiB4LmNvbmNhdChZKX0sRy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIE49dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFk''@;'; put 'put ''ZGluZylyZXR1cm4gZnVuY3Rpb24gVChOKXt2YXIgQj1OWzE1XTtpZihCPDF8fEI+MTYpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7Zm9yKHZhciBaPS0xOysrWjxCOylpZihOW1orKDE2LUIpXSE9PUIpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlw''@;'; put 'put ''dCBkYXRhIik7aWYoMTYhPT1CKXJldHVybiBOLnNsaWNlKDAsMTYtQil9KHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLE4pKTtpZihOKXRocm93IG5ldyBFcnJvcigiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoIil9LEcucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9u''@;'; put 'put ''KE4pe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIU4sdGhpc30sRC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKE4pe3RoaXMuY2FjaGU9eC5jb25jYXQoW3RoaXMuY2FjaGUsTl0pfSxELnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oTil7dmFyIEI7aWYoTil7aWYodGhpcy5jYWNoZS5sZW5ndGg+''@;'; put 'put ''MTYpcmV0dXJuIEI9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLEJ9ZWxzZSBpZih0aGlzLmNhY2hlLmxlbmd0aD49MTYpcmV0dXJuIEI9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLEI7''@;'; put 'put ''cmV0dXJuIG51bGx9LEQucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGV9LE1lLmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uIHooTixCKXt2YXIgWj1tW04udG9Mb3dlckNhc2UoKV07aWYoIVopdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigiaW52YWxpZCBzdWl0ZSB0eXBlIik7dmFyIFk9SShCLCExLFoua2V5LFouaXYpO3JldHVybiBFKE4sWS5rZXksWS5pdil9LE1lLmNyZWF0ZURlY2lwaGVyaXY9RX0sMzUwOihRZSxNZSxSKT0+e3ZhciBvZT1SKDYwNTAzKSx4PVIoMTkzMDcpLG09UigyNzA1NCkuQnVmZmVyLHNlPVIoOTE4''@;'; put 'put ''MjEpLE09UigzMjQ3KSxPPVIoMTIzNzUpLEk9UigxODIxMSk7ZnVuY3Rpb24gRyhOLEIsWil7TS5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBULHRoaXMuX2NpcGhlcj1uZXcgTy5BRVMoQiksdGhpcy5fcHJldj1tLmZyb20oWiksdGhpcy5fbW9kZT1OLHRoaXMuX2F1dG9wYWRkaW5nPSEw''@;'; put 'put ''fVIoNzE5OTMpKEcsTSksRy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihOKXt0aGlzLl9jYWNoZS5hZGQoTik7Zm9yKHZhciBCLFosWT1bXTtCPXRoaXMuX2NhY2hlLmdldCgpOylaPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLEIpLFkucHVzaChaKTtyZXR1cm4gbS5jb25jYXQoWSl9O3Zh''@;'; put 'put ''ciBEPW0uYWxsb2MoMTYsMTYpO2Z1bmN0aW9uIFQoKXt0aGlzLmNhY2hlPW0uYWxsb2NVbnNhZmUoMCl9ZnVuY3Rpb24gRShOLEIsWil7dmFyIFk9b2VbTi50b0xvd2VyQ2FzZSgpXTtpZighWSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIEImJihCPW0uZnJvbShCKSksQi5sZW5ndGghPT1ZLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQga2V5IGxlbmd0aCAiK0IubGVuZ3RoKTtpZigic3RyaW5nIj09dHlwZW9mIFomJihaPW0uZnJvbShaKSksIkdDTSIhPT1ZLm1vZGUmJloubGVuZ3RoIT09WS5pdil0''@;'; put 'put ''aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK1oubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PVkudHlwZT9uZXcgc2UoWS5tb2R1bGUsQixaKToiYXV0aCI9PT1ZLnR5cGU/bmV3IHgoWS5tb2R1bGUsQixaKTpuZXcgRyhZLm1vZHVsZSxCLFopfUcucHJvdG90eXBlLl9m''@;'; put 'put ''aW5hbD1mdW5jdGlvbigpe3ZhciBOPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIE49dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsTiksdGhpcy5fY2lwaGVyLnNjcnViKCksTjtpZighTi5lcXVhbHMoRCkpdGhyb3cgdGhpcy5fY2lwaGVyLnNjcnViKCks''@;'; put 'put ''bmV3IEVycm9yKCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgiKX0sRy5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhTix0aGlzfSxULnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oTil7dGhpcy5jYWNoZT1tLmNv''@;'; put 'put ''bmNhdChbdGhpcy5jYWNoZSxOXSl9LFQucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE1KXt2YXIgTj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLE59cmV0dXJuIG51bGx9LFQucHJvdG90''@;'; put 'put ''eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBOPTE2LXRoaXMuY2FjaGUubGVuZ3RoLEI9bS5hbGxvY1Vuc2FmZShOKSxaPS0xOysrWjxOOylCLndyaXRlVUludDgoTixaKTtyZXR1cm4gbS5jb25jYXQoW3RoaXMuY2FjaGUsQl0pfSxNZS5jcmVhdGVDaXBoZXJpdj1FLE1lLmNyZWF0ZUNp''@;'; put 'put ''cGhlcj1mdW5jdGlvbiB6KE4sQil7dmFyIFo9b2VbTi50b0xvd2VyQ2FzZSgpXTtpZighWil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgWT1JKEIsITEsWi5rZXksWi5pdik7cmV0dXJuIEUoTixZLmtleSxZLml2KX19LDg1OTE3OihRZSxNZSxSKT0+e3Zh''@;'; put 'put ''ciBvZT1SKDI3MDU0KS5CdWZmZXIseD1vZS5hbGxvYygxNiwwKTtmdW5jdGlvbiBzZShPKXt2YXIgST1vZS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIEkud3JpdGVVSW50MzJCRShPWzBdPj4+MCwwKSxJLndyaXRlVUludDMyQkUoT1sxXT4+PjAsNCksSS53cml0ZVVJbnQzMkJFKE9bMl0+Pj4w''@;'; put 'put ''LDgpLEkud3JpdGVVSW50MzJCRShPWzNdPj4+MCwxMiksSX1mdW5jdGlvbiBNKE8pe3RoaXMuaD1PLHRoaXMuc3RhdGU9b2UuYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1vZS5hbGxvY1Vuc2FmZSgwKX1NLnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihPKXtmb3IodmFyIEk9LTE7KytJPE8ubGVu''@;'; put 'put ''Z3RoOyl0aGlzLnN0YXRlW0ldXj1PW0ldO3RoaXMuX211bHRpcGx5KCl9LE0ucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgaixELE89ZnVuY3Rpb24gbShPKXtyZXR1cm5bTy5yZWFkVUludDMyQkUoMCksTy5yZWFkVUludDMyQkUoNCksTy5yZWFkVUludDMyQkUoOCks''@;'; put 'put ''Ty5yZWFkVUludDMyQkUoMTIpXX0odGhpcy5oKSxJPVswLDAsMCwwXSxUPS0xOysrVDwxMjg7KXtmb3IoISEodGhpcy5zdGF0ZVt+fihULzgpXSYxPDw3LVQlOCkmJihJWzBdXj1PWzBdLElbMV1ePU9bMV0sSVsyXV49T1syXSxJWzNdXj1PWzNdKSxEPSEhKDEmT1szXSksaj0zO2o+MDtqLS0p''@;'; put 'put ''T1tqXT1PW2pdPj4+MXwoMSZPW2otMV0pPDwzMTtPWzBdPU9bMF0+Pj4xLEQmJihPWzBdPU9bMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1zZShJKX0sTS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKE8pe3RoaXMuY2FjaGU9b2UuY29uY2F0KFt0aGlzLmNhY2hlLE9dKTtmb3IodmFyIEk7dGhp''@;'; put 'put ''cy5jYWNoZS5sZW5ndGg+PTE2OylJPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0aGlzLmdoYXNoKEkpfSxNLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihPLEkpe3JldHVybiB0aGlzLmNhY2hlLmxlbmd0aCYmdGhpcy5naGFzaChvZS5j''@;'; put 'put ''b25jYXQoW3RoaXMuY2FjaGUseF0sMTYpKSx0aGlzLmdoYXNoKHNlKFswLE8sMCxJXSkpLHRoaXMuc3RhdGV9LFFlLmV4cG9ydHM9TX0sOTU3MjU6UWU9PntRZS5leHBvcnRzPWZ1bmN0aW9uIE1lKFIpe2Zvcih2YXIgeCxvZT1SLmxlbmd0aDtvZS0tOyl7aWYoMjU1IT09KHg9Ui5yZWFkVUlu''@;'; put 'put ''dDgob2UpKSl7eCsrLFIud3JpdGVVSW50OCh4LG9lKTticmVha31SLndyaXRlVUludDgoMCxvZSl9fX0sMzQxMzM6KFFlLE1lLFIpPT57dmFyIG9lPVIoMTM1NDYpO01lLmVuY3J5cHQ9ZnVuY3Rpb24oeCxtKXt2YXIgc2U9b2UobSx4Ll9wcmV2KTtyZXR1cm4geC5fcHJldj14Ll9jaXBoZXIu''@;'; put 'put ''ZW5jcnlwdEJsb2NrKHNlKSx4Ll9wcmV2fSxNZS5kZWNyeXB0PWZ1bmN0aW9uKHgsbSl7dmFyIHNlPXguX3ByZXY7eC5fcHJldj1tO3ZhciBNPXguX2NpcGhlci5kZWNyeXB0QmxvY2sobSk7cmV0dXJuIG9lKE0sc2UpfX0sMTcwOTA6KFFlLE1lLFIpPT57dmFyIG9lPVIoMjcwNTQpLkJ1ZmZl''@;'; put 'put ''cix4PVIoMTM1NDYpO2Z1bmN0aW9uIG0oc2UsTSxPKXt2YXIgST1NLmxlbmd0aCxqPXgoTSxzZS5fY2FjaGUpO3JldHVybiBzZS5fY2FjaGU9c2UuX2NhY2hlLnNsaWNlKEkpLHNlLl9wcmV2PW9lLmNvbmNhdChbc2UuX3ByZXYsTz9NOmpdKSxqfU1lLmVuY3J5cHQ9ZnVuY3Rpb24oc2UsTSxP''@;'; put 'put ''KXtmb3IodmFyIGosST1vZS5hbGxvY1Vuc2FmZSgwKTtNLmxlbmd0aDspe2lmKDA9PT1zZS5fY2FjaGUubGVuZ3RoJiYoc2UuX2NhY2hlPXNlLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlLl9wcmV2KSxzZS5fcHJldj1vZS5hbGxvY1Vuc2FmZSgwKSksIShzZS5fY2FjaGUubGVuZ3RoPD1NLmxl''@;'; put 'put ''bmd0aCkpe0k9b2UuY29uY2F0KFtJLG0oc2UsTSxPKV0pO2JyZWFrfUk9b2UuY29uY2F0KFtJLG0oc2UsTS5zbGljZSgwLGo9c2UuX2NhY2hlLmxlbmd0aCksTyldKSxNPU0uc2xpY2Uoail9cmV0dXJuIEl9fSw3MTAzOTooUWUsTWUsUik9Pnt2YXIgb2U9UigyNzA1NCkuQnVmZmVyO2Z1bmN0''@;'; put 'put ''aW9uIHgoc2UsTSxPKXtmb3IodmFyIFQsRSxqPS0xLEQ9MDsrK2o8ODspRCs9KDEyOCYoRT1zZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZS5fcHJldilbMF1eKFQ9TSYxPDw3LWo/MTI4OjApKSk+PmolOCxzZS5fcHJldj1tKHNlLl9wcmV2LE8/VDpFKTtyZXR1cm4gRH1mdW5jdGlvbiBtKHNl''@;'; put 'put ''LE0pe3ZhciBPPXNlLmxlbmd0aCxJPS0xLGo9b2UuYWxsb2NVbnNhZmUoc2UubGVuZ3RoKTtmb3Ioc2U9b2UuY29uY2F0KFtzZSxvZS5mcm9tKFtNXSldKTsrK0k8TzspaltJXT1zZVtJXTw8MXxzZVtJKzFdPj43O3JldHVybiBqfU1lLmVuY3J5cHQ9ZnVuY3Rpb24oc2UsTSxPKXtmb3IodmFy''@;'; put 'put ''IEk9TS5sZW5ndGgsaj1vZS5hbGxvY1Vuc2FmZShJKSxHPS0xOysrRzxJOylqW0ddPXgoc2UsTVtHXSxPKTtyZXR1cm4gan19LDcyNTc2OihRZSxNZSxSKT0+e3ZhciBvZT1SKDI3MDU0KS5CdWZmZXI7ZnVuY3Rpb24geChtLHNlLE0pe3ZhciBJPW0uX2NpcGhlci5lbmNyeXB0QmxvY2sobS5f''@;'; put 'put ''cHJldilbMF1ec2U7cmV0dXJuIG0uX3ByZXY9b2UuY29uY2F0KFttLl9wcmV2LnNsaWNlKDEpLG9lLmZyb20oW00/c2U6SV0pXSksSX1NZS5lbmNyeXB0PWZ1bmN0aW9uKG0sc2UsTSl7Zm9yKHZhciBPPXNlLmxlbmd0aCxJPW9lLmFsbG9jVW5zYWZlKE8pLGo9LTE7KytqPE87KUlbal09eCht''@;'; put 'put ''LHNlW2pdLE0pO3JldHVybiBJfX0sNzAzMzY6KFFlLE1lLFIpPT57dmFyIG9lPVIoMTM1NDYpLHg9UigyNzA1NCkuQnVmZmVyLG09Uig5NTcyNSk7ZnVuY3Rpb24gc2UoTyl7dmFyIEk9Ty5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhPLl9wcmV2KTtyZXR1cm4gbShPLl9wcmV2KSxJfU1lLmVu''@;'; put 'put ''Y3J5cHQ9ZnVuY3Rpb24oTyxJKXt2YXIgaj1NYXRoLmNlaWwoSS5sZW5ndGgvMTYpLEc9Ty5fY2FjaGUubGVuZ3RoO08uX2NhY2hlPXguY29uY2F0KFtPLl9jYWNoZSx4LmFsbG9jVW5zYWZlKDE2KmopXSk7Zm9yKHZhciBEPTA7RDxqO0QrKyl7dmFyIFQ9c2UoTyksRT1HKzE2KkQ7Ty5fY2Fj''@;'; put 'put ''aGUud3JpdGVVSW50MzJCRShUWzBdLEUrMCksTy5fY2FjaGUud3JpdGVVSW50MzJCRShUWzFdLEUrNCksTy5fY2FjaGUud3JpdGVVSW50MzJCRShUWzJdLEUrOCksTy5fY2FjaGUud3JpdGVVSW50MzJCRShUWzNdLEUrMTIpfXZhciB6PU8uX2NhY2hlLnNsaWNlKDAsSS5sZW5ndGgpO3JldHVy''@;'; put 'put ''biBPLl9jYWNoZT1PLl9jYWNoZS5zbGljZShJLmxlbmd0aCksb2UoSSx6KX19LDM3NTEzOihRZSxNZSk9PntNZS5lbmNyeXB0PWZ1bmN0aW9uKFIsb2Upe3JldHVybiBSLl9jaXBoZXIuZW5jcnlwdEJsb2NrKG9lKX0sTWUuZGVjcnlwdD1mdW5jdGlvbihSLG9lKXtyZXR1cm4gUi5fY2lwaGVy''@;'; put 'put ''LmRlY3J5cHRCbG9jayhvZSl9fSw2MDUwMzooUWUsTWUsUik9Pnt2YXIgb2U9e0VDQjpSKDM3NTEzKSxDQkM6UigzNDEzMyksQ0ZCOlIoMTcwOTApLENGQjg6Uig3MjU3NiksQ0ZCMTpSKDcxMDM5KSxPRkI6Uig0Njg1NCksQ1RSOlIoNzAzMzYpLEdDTTpSKDcwMzM2KX0seD1SKDMyMTkpO2Zv''@;'; put 'put ''cih2YXIgbSBpbiB4KXhbbV0ubW9kdWxlPW9lW3hbbV0ubW9kZV07UWUuZXhwb3J0cz14fSw0Njg1NDooUWUsTWUsUik9Pnt2YXIgb2U9UigxMzU0Nik7ZnVuY3Rpb24geChtKXtyZXR1cm4gbS5fcHJldj1tLl9jaXBoZXIuZW5jcnlwdEJsb2NrKG0uX3ByZXYpLG0uX3ByZXZ9TWUuZW5jcnlw''@;'; put 'put ''dD1mdW5jdGlvbihtLHNlKXtmb3IoO20uX2NhY2hlLmxlbmd0aDxzZS5sZW5ndGg7KW0uX2NhY2hlPUJ1ZmZlci5jb25jYXQoW20uX2NhY2hlLHgobSldKTt2YXIgTT1tLl9jYWNoZS5zbGljZSgwLHNlLmxlbmd0aCk7cmV0dXJuIG0uX2NhY2hlPW0uX2NhY2hlLnNsaWNlKHNlLmxlbmd0aCks''@;'; put 'put ''b2Uoc2UsTSl9fSw5MTgyMTooUWUsTWUsUik9Pnt2YXIgb2U9UigxMjM3NSkseD1SKDI3MDU0KS5CdWZmZXIsbT1SKDMyNDcpO2Z1bmN0aW9uIE0oTyxJLGosRyl7bS5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgb2UuQUVTKEkpLHRoaXMuX3ByZXY9eC5mcm9tKGopLHRoaXMuX2NhY2hl''@;'; put 'put ''PXguYWxsb2NVbnNhZmUoMCksdGhpcy5fc2VjQ2FjaGU9eC5hbGxvY1Vuc2FmZSgwKSx0aGlzLl9kZWNyeXB0PUcsdGhpcy5fbW9kZT1PfVIoNzE5OTMpKE0sbSksTS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsTyx0aGlzLl9k''@;'; put 'put ''ZWNyeXB0KX0sTS5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dGhpcy5fY2lwaGVyLnNjcnViKCl9LFFlLmV4cG9ydHM9TX0sODg4NjI6KFFlLE1lLFIpPT57dmFyIG9lPVIoMzk3OTkpLHg9Uig0MzM4OCksbT1SKDYwNTAzKSxzZT1SKDU5NTcxKSxNPVIoMTgyMTEpO2Z1bmN0aW9uIGoo''@;'; put 'put ''VCxFLHope2lmKFQ9VC50b0xvd2VyQ2FzZSgpLG1bVF0pcmV0dXJuIHguY3JlYXRlQ2lwaGVyaXYoVCxFLHopO2lmKHNlW1RdKXJldHVybiBuZXcgb2Uoe2tleTpFLGl2OnosbW9kZTpUfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9ZnVuY3Rpb24gRyhULEUs''@;'; put 'put ''eil7aWYoVD1ULnRvTG93ZXJDYXNlKCksbVtUXSlyZXR1cm4geC5jcmVhdGVEZWNpcGhlcml2KFQsRSx6KTtpZihzZVtUXSlyZXR1cm4gbmV3IG9lKHtrZXk6RSxpdjp6LG1vZGU6VCxkZWNyeXB0OiEwfSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIil9TWUuY3Jl''@;'; put 'put ''YXRlQ2lwaGVyPU1lLkNpcGhlcj1mdW5jdGlvbiBPKFQsRSl7dmFyIHosTjtpZihUPVQudG9Mb3dlckNhc2UoKSxtW1RdKXo9bVtUXS5rZXksTj1tW1RdLml2O2Vsc2V7aWYoIXNlW1RdKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3o9OCpzZVtUXS5rZXksTj1z''@;'; put 'put ''ZVtUXS5pdn12YXIgQj1NKEUsITEseixOKTtyZXR1cm4gaihULEIua2V5LEIuaXYpfSxNZS5jcmVhdGVDaXBoZXJpdj1NZS5DaXBoZXJpdj1qLE1lLmNyZWF0ZURlY2lwaGVyPU1lLkRlY2lwaGVyPWZ1bmN0aW9uIEkoVCxFKXt2YXIgeixOO2lmKFQ9VC50b0xvd2VyQ2FzZSgpLG1bVF0pej1t''@;'; put 'put ''W1RdLmtleSxOPW1bVF0uaXY7ZWxzZXtpZighc2VbVF0pdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7ej04KnNlW1RdLmtleSxOPXNlW1RdLml2fXZhciBCPU0oRSwhMSx6LE4pO3JldHVybiBHKFQsQi5rZXksQi5pdil9LE1lLmNyZWF0ZURlY2lwaGVyaXY9TWUu''@;'; put 'put ''RGVjaXBoZXJpdj1HLE1lLmxpc3RDaXBoZXJzPU1lLmdldENpcGhlcnM9ZnVuY3Rpb24gRCgpe3JldHVybiBPYmplY3Qua2V5cyhzZSkuY29uY2F0KHguZ2V0Q2lwaGVycygpKX19LDM5Nzk5OihRZSxNZSxSKT0+e3ZhciBvZT1SKDMyNDcpLHg9Uig3MTU0OSksbT1SKDcxOTkzKSxzZT1SKDI3''@;'; put 'put ''MDU0KS5CdWZmZXIsTT17ImRlcy1lZGUzLWNiYyI6eC5DQkMuaW5zdGFudGlhdGUoeC5FREUpLCJkZXMtZWRlMyI6eC5FREUsImRlcy1lZGUtY2JjIjp4LkNCQy5pbnN0YW50aWF0ZSh4LkVERSksImRlcy1lZGUiOnguRURFLCJkZXMtY2JjIjp4LkNCQy5pbnN0YW50aWF0ZSh4LkRFUyksImRl''@;'; put 'put ''cy1lY2IiOnguREVTfTtmdW5jdGlvbiBPKEkpe29lLmNhbGwodGhpcyk7dmFyIEQsaj1JLm1vZGUudG9Mb3dlckNhc2UoKSxHPU1bal07RD1JLmRlY3J5cHQ/ImRlY3J5cHQiOiJlbmNyeXB0Ijt2YXIgVD1JLmtleTtzZS5pc0J1ZmZlcihUKXx8KFQ9c2UuZnJvbShUKSksKCJkZXMtZWRlIj09''@;'; put 'put ''PWp8fCJkZXMtZWRlLWNiYyI9PT1qKSYmKFQ9c2UuY29uY2F0KFtULFQuc2xpY2UoMCw4KV0pKTt2YXIgRT1JLml2O3NlLmlzQnVmZmVyKEUpfHwoRT1zZS5mcm9tKEUpKSx0aGlzLl9kZXM9Ry5jcmVhdGUoe2tleTpULGl2OkUsdHlwZTpEfSl9TS5kZXM9TVsiZGVzLWNiYyJdLE0uZGVzMz1N''@;'; put 'put ''WyJkZXMtZWRlMy1jYmMiXSxRZS5leHBvcnRzPU8sbShPLG9lKSxPLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEkpe3JldHVybiBzZS5mcm9tKHRoaXMuX2Rlcy51cGRhdGUoSSkpfSxPLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gc2UuZnJvbSh0aGlzLl9kZXMuZmlu''@;'; put 'put ''YWwoKSl9fSw1OTU3MTooUWUsTWUpPT57TWVbImRlcy1lY2IiXT17a2V5OjgsaXY6MH0sTWVbImRlcy1jYmMiXT1NZS5kZXM9e2tleTo4LGl2Ojh9LE1lWyJkZXMtZWRlMy1jYmMiXT1NZS5kZXMzPXtrZXk6MjQsaXY6OH0sTWVbImRlcy1lZGUzIl09e2tleToyNCxpdjowfSxNZVsiZGVzLWVk''@;'; put 'put ''ZS1jYmMiXT17a2V5OjE2LGl2Ojh9LE1lWyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sMTQxMDU6KFFlLE1lLFIpPT57dmFyIG9lPVIoOTE3KSx4PVIoMzM0Mik7ZnVuY3Rpb24gc2UoTyl7dmFyIGosST1PLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2Rve2o9bmV3IG9lKHgoSSkpfXdoaWxlKGou''@;'; put 'put ''Y21wKE8ubW9kdWx1cyk+PTB8fCFqLnVtb2QoTy5wcmltZTEpfHwhai51bW9kKE8ucHJpbWUyKSk7cmV0dXJuIGp9ZnVuY3Rpb24gTShPLEkpe3ZhciBqPWZ1bmN0aW9uIG0oTyl7dmFyIEk9c2UoTyk7cmV0dXJue2JsaW5kZXI6SS50b1JlZChvZS5tb250KE8ubW9kdWx1cykpLnJlZFBvdyhu''@;'; put 'put ''ZXcgb2UoTy5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKSx1bmJsaW5kZXI6SS5pbnZtKE8ubW9kdWx1cyl9fShJKSxHPUkubW9kdWx1cy5ieXRlTGVuZ3RoKCksRD1uZXcgb2UoTykubXVsKGouYmxpbmRlcikudW1vZChJLm1vZHVsdXMpLFQ9RC50b1JlZChvZS5tb250KEkucHJpbWUxKSks''@;'; put 'put ''RT1ELnRvUmVkKG9lLm1vbnQoSS5wcmltZTIpKSx6PUkuY29lZmZpY2llbnQsTj1JLnByaW1lMSxCPUkucHJpbWUyLFo9VC5yZWRQb3coSS5leHBvbmVudDEpLmZyb21SZWQoKSxZPUUucmVkUG93KEkuZXhwb25lbnQyKS5mcm9tUmVkKCksVT1aLmlzdWIoWSkuaW11bCh6KS51bW9kKE4pLmlt''@;'; put 'put ''dWwoQik7cmV0dXJuIFkuaWFkZChVKS5pbXVsKGoudW5ibGluZGVyKS51bW9kKEkubW9kdWx1cykudG9BcnJheUxpa2UoQnVmZmVyLCJiZSIsRyl9TS5nZXRyPXNlLFFlLmV4cG9ydHM9TX0sOTk1NjA6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9Uig2Mjk1MSl9LDc5MTQz''@;'; put 'put ''OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyNzA1NCkuQnVmZmVyLHg9Uig2NzIxMSksbT1SKDU5NDIpLHNlPVIoNzE5OTMpLE09Uig0MzE1MCksTz1SKDc0NzU0KSxJPVIoNjI5NTEpO2Z1bmN0aW9uIGooRSl7bS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB6PUlbRV07aWYo''@;'; put 'put ''IXopdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaFR5cGU9ei5oYXNoLHRoaXMuX2hhc2g9eCh6Lmhhc2gpLHRoaXMuX3RhZz16LmlkLHRoaXMuX3NpZ25UeXBlPXouc2lnbn1mdW5jdGlvbiBHKEUpe20uV3JpdGFibGUuY2FsbCh0aGlzKTt2YXIg''@;'; put 'put ''ej1JW0VdO2lmKCF6KXRocm93IG5ldyBFcnJvcigiVW5rbm93biBtZXNzYWdlIGRpZ2VzdCIpO3RoaXMuX2hhc2g9eCh6Lmhhc2gpLHRoaXMuX3RhZz16LmlkLHRoaXMuX3NpZ25UeXBlPXouc2lnbn1mdW5jdGlvbiBEKEUpe3JldHVybiBuZXcgaihFKX1mdW5jdGlvbiBUKEUpe3JldHVybiBu''@;'; put 'put ''ZXcgRyhFKX1PYmplY3Qua2V5cyhJKS5mb3JFYWNoKGZ1bmN0aW9uKEUpe0lbRV0uaWQ9b2UuZnJvbShJW0VdLmlkLCJoZXgiKSxJW0UudG9Mb3dlckNhc2UoKV09SVtFXX0pLHNlKGosbS5Xcml0YWJsZSksai5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHosTixCKXt0aGlzLl9oYXNoLnVw''@;'; put 'put ''ZGF0ZSh6KSxCKCl9LGoucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih6LE4pe3JldHVybiB0aGlzLl9oYXNoLnVwZGF0ZSgic3RyaW5nIj09dHlwZW9mIHo/b2UuZnJvbSh6LE4pOnopLHRoaXN9LGoucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oeixOKXt0aGlzLmVuZCgpO3ZhciBCPXRoaXMu''@;'; put 'put ''X2hhc2guZGlnZXN0KCksWj1NKEIseix0aGlzLl9oYXNoVHlwZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpO3JldHVybiBOP1oudG9TdHJpbmcoTik6Wn0sc2UoRyxtLldyaXRhYmxlKSxHLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oeixOLEIpe3RoaXMuX2hhc2gudXBkYXRlKHopLEIo''@;'; put 'put ''KX0sRy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHosTil7cmV0dXJuIHRoaXMuX2hhc2gudXBkYXRlKCJzdHJpbmciPT10eXBlb2Ygej9vZS5mcm9tKHosTik6eiksdGhpc30sRy5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHosTixCKXt2YXIgWj0ic3RyaW5nIj09dHlwZW9mIE4/b2Uu''@;'; put 'put ''ZnJvbShOLEIpOk47dGhpcy5lbmQoKTt2YXIgWT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiBPKFosWSx6LHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyl9LFFlLmV4cG9ydHM9e1NpZ246RCxWZXJpZnk6VCxjcmVhdGVTaWduOkQsY3JlYXRlVmVyaWZ5OlR9fSw0MzE1MDooUWUsTWUsUik9''@;'; put 'put ''PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjcwNTQpLkJ1ZmZlcix4PVIoNTY0MzIpLG09UigxNDEwNSksc2U9Uig5MDUxOCkuZWMsTT1SKDkxNyksTz1SKDY1NjY3KSxJPVIoNjQ1ODkpO2Z1bmN0aW9uIHooVSxxLEosZWUpe2lmKChVPW9lLmZyb20oVS50b0FycmF5KCkpKS5sZW5ndGg8cS5i''@;'; put 'put ''eXRlTGVuZ3RoKCkpe3ZhciByZT1vZS5hbGxvYyhxLmJ5dGVMZW5ndGgoKS1VLmxlbmd0aCk7VT1vZS5jb25jYXQoW3JlLFVdKX12YXIgaWU9Si5sZW5ndGgsdWU9ZnVuY3Rpb24gQihVLHEpe1U9KFU9TihVLHEpKS5tb2QocSk7dmFyIEo9b2UuZnJvbShVLnRvQXJyYXkoKSk7aWYoSi5sZW5n''@;'; put 'put ''dGg8cS5ieXRlTGVuZ3RoKCkpe3ZhciBlZT1vZS5hbGxvYyhxLmJ5dGVMZW5ndGgoKS1KLmxlbmd0aCk7Sj1vZS5jb25jYXQoW2VlLEpdKX1yZXR1cm4gSn0oSixxKSxsZT1vZS5hbGxvYyhpZSk7bGUuZmlsbCgxKTt2YXIgYWU9b2UuYWxsb2MoaWUpO3JldHVybiBhZT14KGVlLGFlKS51cGRh''@;'; put 'put ''dGUobGUpLnVwZGF0ZShvZS5mcm9tKFswXSkpLnVwZGF0ZShVKS51cGRhdGUodWUpLmRpZ2VzdCgpLGxlPXgoZWUsYWUpLnVwZGF0ZShsZSkuZGlnZXN0KCkse2s6YWU9eChlZSxhZSkudXBkYXRlKGxlKS51cGRhdGUob2UuZnJvbShbMV0pKS51cGRhdGUoVSkudXBkYXRlKHVlKS5kaWdlc3Qo''@;'; put 'put ''KSx2OmxlPXgoZWUsYWUpLnVwZGF0ZShsZSkuZGlnZXN0KCl9fWZ1bmN0aW9uIE4oVSxxKXt2YXIgSj1uZXcgTShVKSxlZT0oVS5sZW5ndGg8PDMpLXEuYml0TGVuZ3RoKCk7cmV0dXJuIGVlPjAmJkouaXNocm4oZWUpLEp9ZnVuY3Rpb24gWihVLHEsSil7dmFyIGVlLHJlO2Rve2ZvcihlZT1v''@;'; put 'put ''ZS5hbGxvYygwKTs4KmVlLmxlbmd0aDxVLmJpdExlbmd0aCgpOylxLnY9eChKLHEuaykudXBkYXRlKHEudikuZGlnZXN0KCksZWU9b2UuY29uY2F0KFtlZSxxLnZdKTtyZT1OKGVlLFUpLHEuaz14KEoscS5rKS51cGRhdGUocS52KS51cGRhdGUob2UuZnJvbShbMF0pKS5kaWdlc3QoKSxxLnY9''@;'; put 'put ''eChKLHEuaykudXBkYXRlKHEudikuZGlnZXN0KCl9d2hpbGUoLTEhPT1yZS5jbXAoVSkpO3JldHVybiByZX1mdW5jdGlvbiBZKFUscSxKLGVlKXtyZXR1cm4gVS50b1JlZChNLm1vbnQoSikpLnJlZFBvdyhxKS5mcm9tUmVkKCkubW9kKGVlKX1RZS5leHBvcnRzPWZ1bmN0aW9uIEcoVSxxLEos''@;'; put 'put ''ZWUscmUpe3ZhciBpZT1PKHEpO2lmKGllLmN1cnZlKXtpZigiZWNkc2EiIT09ZWUmJiJlY2RzYS9yc2EiIT09ZWUpdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlIik7cmV0dXJuIGZ1bmN0aW9uIEQoVSxxKXt2YXIgSj1JW3EuY3VydmUuam9pbigiLiIpXTtpZighSil0''@;'; put 'put ''aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUgIitxLmN1cnZlLmpvaW4oIi4iKSk7dmFyIGllPW5ldyBzZShKKS5rZXlGcm9tUHJpdmF0ZShxLnByaXZhdGVLZXkpLnNpZ24oVSk7cmV0dXJuIG9lLmZyb20oaWUudG9ERVIoKSl9KFUsaWUpfWlmKCJkc2EiPT09aWUudHlwZSl7aWYoImRz''@;'; put 'put ''YSIhPT1lZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtyZXR1cm4gZnVuY3Rpb24gVChVLHEsSil7Zm9yKHZhciBhZSxlZT1xLnBhcmFtcy5wcml2X2tleSxyZT1xLnBhcmFtcy5wLGllPXEucGFyYW1zLnEsdWU9cS5wYXJhbXMuZyxsZT1uZXcgTSgwKSxXPU4o''@;'; put 'put ''VSxpZSkubW9kKGllKSxiPSExLEE9eihlZSxpZSxVLEopOyExPT09YjspbGU9WSh1ZSxhZT1aKGllLEEsSikscmUsaWUpLDA9PT0oYj1hZS5pbnZtKGllKS5pbXVsKFcuYWRkKGVlLm11bChsZSkpKS5tb2QoaWUpKS5jbXBuKDApJiYoYj0hMSxsZT1uZXcgTSgwKSk7cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''IEUoVSxxKXtVPVUudG9BcnJheSgpLHE9cS50b0FycmF5KCksMTI4JlVbMF0mJihVPVswXS5jb25jYXQoVSkpLDEyOCZxWzBdJiYocT1bMF0uY29uY2F0KHEpKTt2YXIgZWU9WzQ4LFUubGVuZ3RoK3EubGVuZ3RoKzQsMixVLmxlbmd0aF07cmV0dXJuIGVlPWVlLmNvbmNhdChVLFsyLHEubGVu''@;'; put 'put ''Z3RoXSxxKSxvZS5mcm9tKGVlKX0obGUsYil9KFUsaWUsSil9aWYoInJzYSIhPT1lZSYmImVjZHNhL3JzYSIhPT1lZSl0aHJvdyBuZXcgRXJyb3IoIndyb25nIHByaXZhdGUga2V5IHR5cGUiKTtpZih2b2lkIDAhPT1xLnBhZGRpbmcmJjEhPT1xLnBhZGRpbmcpdGhyb3cgbmV3IEVycm9yKCJp''@;'; put 'put ''bGxlZ2FsIG9yIHVuc3VwcG9ydGVkIHBhZGRpbmcgbW9kZSIpO1U9b2UuY29uY2F0KFtyZSxVXSk7Zm9yKHZhciB1ZT1pZS5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxsZT1bMCwxXTtVLmxlbmd0aCtsZS5sZW5ndGgrMTx1ZTspbGUucHVzaCgyNTUpO2xlLnB1c2goMCk7Zm9yKHZhciBhZT0tMTsr''@;'; put 'put ''K2FlPFUubGVuZ3RoOylsZS5wdXNoKFVbYWVdKTtyZXR1cm4gbShsZSxpZSl9LFFlLmV4cG9ydHMuZ2V0S2V5PXosUWUuZXhwb3J0cy5tYWtlS2V5PVp9LDc0NzU0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyNzA1NCkuQnVmZmVyLHg9Uig5MTcpLG09Uig5MDUxOCkuZWMs''@;'; put 'put ''c2U9Uig2NTY2NyksTT1SKDY0NTg5KTtmdW5jdGlvbiBHKEQsVCl7aWYoRC5jbXBuKDApPD0wKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaWciKTtpZihELmNtcChUKT49MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnIil9UWUuZXhwb3J0cz1mdW5jdGlvbiBPKEQsVCxFLHosTil7''@;'; put 'put ''dmFyIEI9c2UoRSk7aWYoImVjIj09PUIudHlwZSl7aWYoImVjZHNhIiE9PXomJiJlY2RzYS9yc2EiIT09eil0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBJKEQsVCxFKXt2YXIgej1NW0UuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbigi''@;'; put 'put ''LiIpXTtpZigheil0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY3VydmUgIitFLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oIi4iKSk7cmV0dXJuIG5ldyBtKHopLnZlcmlmeShULEQsRS5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGEpfShELFQsQil9aWYoImRzYSI9PT1CLnR5cGUpe2lm''@;'; put 'put ''KCJkc2EiIT09eil0aHJvdyBuZXcgRXJyb3IoIndyb25nIHB1YmxpYyBrZXkgdHlwZSIpO3JldHVybiBmdW5jdGlvbiBqKEQsVCxFKXt2YXIgej1FLmRhdGEucCxOPUUuZGF0YS5xLEI9RS5kYXRhLmcsWj1FLmRhdGEucHViX2tleSxZPXNlLnNpZ25hdHVyZS5kZWNvZGUoRCwiZGVyIiksVT1Z''@;'; put 'put ''LnMscT1ZLnI7RyhVLE4pLEcocSxOKTt2YXIgSj14Lm1vbnQoeiksZWU9VS5pbnZtKE4pO3JldHVybiAwPT09Qi50b1JlZChKKS5yZWRQb3cobmV3IHgoVCkubXVsKGVlKS5tb2QoTikpLmZyb21SZWQoKS5tdWwoWi50b1JlZChKKS5yZWRQb3cocS5tdWwoZWUpLm1vZChOKSkuZnJvbVJlZCgp''@;'; put 'put ''KS5tb2QoeikubW9kKE4pLmNtcChxKX0oRCxULEIpfWlmKCJyc2EiIT09eiYmImVjZHNhL3JzYSIhPT16KXRocm93IG5ldyBFcnJvcigid3JvbmcgcHVibGljIGtleSB0eXBlIik7VD1vZS5jb25jYXQoW04sVF0pO2Zvcih2YXIgWj1CLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLFk9WzFdLFU9MDtU''@;'; put 'put ''Lmxlbmd0aCtZLmxlbmd0aCsyPFo7KVkucHVzaCgyNTUpLFUrPTE7WS5wdXNoKDApO2Zvcih2YXIgcT0tMTsrK3E8VC5sZW5ndGg7KVkucHVzaChUW3FdKTtZPW9lLmZyb20oWSk7dmFyIEo9eC5tb250KEIubW9kdWx1cyk7RD0oRD1uZXcgeChEKS50b1JlZChKKSkucmVkUG93KG5ldyB4KEIu''@;'; put 'put ''cHVibGljRXhwb25lbnQpKSxEPW9lLmZyb20oRC5mcm9tUmVkKCkudG9BcnJheSgpKTt2YXIgZWU9VTw4PzE6MDtmb3IoWj1NYXRoLm1pbihELmxlbmd0aCxZLmxlbmd0aCksRC5sZW5ndGghPT1ZLmxlbmd0aCYmKGVlPTEpLHE9LTE7KytxPFo7KWVlfD1EW3FdXllbcV07cmV0dXJuIDA9PT1l''@;'; put 'put ''ZX19LDEzNTQ2OlFlPT57UWUuZXhwb3J0cz1mdW5jdGlvbihSLG9lKXtmb3IodmFyIHg9TWF0aC5taW4oUi5sZW5ndGgsb2UubGVuZ3RoKSxtPW5ldyBCdWZmZXIoeCksc2U9MDtzZTx4Oysrc2UpbVtzZV09UltzZV1eb2Vbc2VdO3JldHVybiBtfX0sODM4Mzg6KFFlLE1lLFIpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBvZT1SKDEzOTgxKSx4PVIoMjIwMjApLG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKTpudWxsO01lLkJ1ZmZlcj1JLE1lLlNsb3dCdWZmZXI9''@;'; put 'put ''ZnVuY3Rpb24gVShGZSl7cmV0dXJuK0ZlIT1GZSYmKEZlPTApLEkuYWxsb2MoK0ZlKX0sTWUuSU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIHNlPTIxNDc0ODM2NDc7ZnVuY3Rpb24gTyhGZSl7aWYoRmU+c2UpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytGZSsnIiBpcyBpbnZh''@;'; put 'put ''bGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIHdlPW5ldyBVaW50OEFycmF5KEZlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHdlLEkucHJvdG90eXBlKSx3ZX1mdW5jdGlvbiBJKEZlLHdlLEVlKXtpZigibnVtYmVyIj09dHlwZW9mIEZlKXtpZigic3RyaW5nIj09dHlwZW9mIHdl''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3JldHVybiBUKEZlKX1yZXR1cm4gaihGZSx3ZSxFZSl9ZnVuY3Rpb24gaihGZSx3ZSxFZSl7aWYoInN0cmluZyI9PXR5cGVvZiBG''@;'; put 'put ''ZSlyZXR1cm4gZnVuY3Rpb24gRShGZSx3ZSl7aWYoKCJzdHJpbmciIT10eXBlb2Ygd2V8fCIiPT09d2UpJiYod2U9InV0ZjgiKSwhSS5pc0VuY29kaW5nKHdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3dlKTt2YXIgRWU9MHxxKEZlLHdlKSxJZT1PKEVlKSxY''@;'; put 'put ''ZT1JZS53cml0ZShGZSx3ZSk7cmV0dXJuIFhlIT09RWUmJihJZT1JZS5zbGljZSgwLFhlKSksSWV9KEZlLHdlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoRmUpKXJldHVybiBmdW5jdGlvbiBOKEZlKXtpZihVZShGZSxVaW50OEFycmF5KSl7dmFyIHdlPW5ldyBVaW50OEFycmF5KEZlKTtyZXR1''@;'; put 'put ''cm4gQih3ZS5idWZmZXIsd2UuYnl0ZU9mZnNldCx3ZS5ieXRlTGVuZ3RoKX1yZXR1cm4geihGZSl9KEZlKTtpZihudWxsPT1GZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFy''@;'; put 'put ''cmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBGZSk7aWYoVWUoRmUsQXJyYXlCdWZmZXIpfHxGZSYmVWUoRmUuYnVmZmVyLEFycmF5QnVmZmVyKXx8dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPCJ1IiYmKFVlKEZlLFNoYXJlZEFycmF5QnVmZmVyKXx8''@;'; put 'put ''RmUmJlVlKEZlLmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVybiBCKEZlLHdlLEVlKTtpZigibnVtYmVyIj09dHlwZW9mIEZlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51''@;'; put 'put ''bWJlcicpO3ZhciBJZT1GZS52YWx1ZU9mJiZGZS52YWx1ZU9mKCk7aWYobnVsbCE9SWUmJkllIT09RmUpcmV0dXJuIEkuZnJvbShJZSx3ZSxFZSk7dmFyIFhlPWZ1bmN0aW9uIFooRmUpe2lmKEkuaXNCdWZmZXIoRmUpKXt2YXIgd2U9MHxZKEZlLmxlbmd0aCksRWU9Tyh3ZSk7cmV0dXJuIDA9''@;'; put 'put ''PT1FZS5sZW5ndGh8fEZlLmNvcHkoRWUsMCwwLHdlKSxFZX1yZXR1cm4gdm9pZCAwIT09RmUubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgRmUubGVuZ3RofHxxZShGZS5sZW5ndGgpP08oMCk6eihGZSk6IkJ1ZmZlciI9PT1GZS50eXBlJiZBcnJheS5pc0FycmF5KEZlLmRhdGEpP3ooRmUuZGF0''@;'; put 'put ''YSk6dm9pZCAwfShGZSk7aWYoWGUpcmV0dXJuIFhlO2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBGZVtTeW1ib2wudG9QcmltaXRpdmVdKXJldHVybiBJLmZyb20oRmVbU3ltYm9sLnRvUHJpbWl0aXZlXSgic3RyaW5n''@;'; put 'put ''Iiksd2UsRWUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIEZlKX1mdW5jdGlvbiBH''@;'; put 'put ''KEZlKXtpZigibnVtYmVyIiE9dHlwZW9mIEZlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYoRmU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK0ZlKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6''@;'; put 'put ''ZSInKX1mdW5jdGlvbiBUKEZlKXtyZXR1cm4gRyhGZSksTyhGZTwwPzA6MHxZKEZlKSl9ZnVuY3Rpb24geihGZSl7Zm9yKHZhciB3ZT1GZS5sZW5ndGg8MD8wOjB8WShGZS5sZW5ndGgpLEVlPU8od2UpLEllPTA7SWU8d2U7SWUrPTEpRWVbSWVdPTI1NSZGZVtJZV07cmV0dXJuIEVlfWZ1bmN0''@;'; put 'put ''aW9uIEIoRmUsd2UsRWUpe2lmKHdlPDB8fEZlLmJ5dGVMZW5ndGg8d2UpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKEZlLmJ5dGVMZW5ndGg8d2UrKEVlfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMg''@;'; put 'put ''b3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7dmFyIEllO3JldHVybiBJZT12b2lkIDA9PT13ZSYmdm9pZCAwPT09RWU/bmV3IFVpbnQ4QXJyYXkoRmUpOnZvaWQgMD09PUVlP25ldyBVaW50OEFycmF5KEZlLHdlKTpuZXcgVWludDhBcnJheShGZSx3ZSxFZSksT2JqZWN0LnNldFByb3RvdHlw''@;'; put 'put ''ZU9mKEllLEkucHJvdG90eXBlKSxJZX1mdW5jdGlvbiBZKEZlKXtpZihGZT49c2UpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK3NlLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8RmV9''@;'; put 'put ''ZnVuY3Rpb24gcShGZSx3ZSl7aWYoSS5pc0J1ZmZlcihGZSkpcmV0dXJuIEZlLmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcoRmUpfHxVZShGZSxBcnJheUJ1ZmZlcikpcmV0dXJuIEZlLmJ5dGVMZW5ndGg7aWYoInN0cmluZyIhPXR5cGVvZiBGZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdU''@;'; put 'put ''aGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgRmUpO3ZhciBFZT1GZS5sZW5ndGgsSWU9YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighSWUm''@;'; put 'put ''JjA9PT1FZSlyZXR1cm4gMDtmb3IodmFyIFhlPSExOzspc3dpdGNoKHdlKXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBFZTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBIZShGZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1''@;'; put 'put ''dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipFZTtjYXNlImhleCI6cmV0dXJuIEVlPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIEJlKEZlKS5sZW5ndGg7ZGVmYXVsdDppZihYZSlyZXR1cm4gSWU/LTE6SGUoRmUpLmxlbmd0aDt3ZT0oIiIrd2UpLnRvTG93ZXJDYXNlKCksWGU9ITB9''@;'; put 'put ''fWZ1bmN0aW9uIEooRmUsd2UsRWUpe3ZhciBJZT0hMTtpZigodm9pZCAwPT09d2V8fHdlPDApJiYod2U9MCksd2U+dGhpcy5sZW5ndGh8fCgodm9pZCAwPT09RWV8fEVlPnRoaXMubGVuZ3RoKSYmKEVlPXRoaXMubGVuZ3RoKSxFZTw9MCl8fChFZT4+Pj0wKTw9KHdlPj4+PTApKXJldHVybiIi''@;'; put 'put ''O2ZvcihGZXx8KEZlPSJ1dGY4Iik7Oylzd2l0Y2goRmUpe2Nhc2UiaGV4IjpyZXR1cm4gXyh0aGlzLHdlLEVlKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBGKHRoaXMsd2UsRWUpO2Nhc2UiYXNjaWkiOnJldHVybiBDKHRoaXMsd2UsRWUpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFy''@;'; put 'put ''eSI6cmV0dXJuIGsodGhpcyx3ZSxFZSk7Y2FzZSJiYXNlNjQiOnJldHVybiBBKHRoaXMsd2UsRWUpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gcCh0aGlzLHdlLEVlKTtkZWZhdWx0OmlmKEllKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IlVua25vd24gZW5jb2Rpbmc6ICIrRmUpO0ZlPShGZSsiIikudG9Mb3dlckNhc2UoKSxJZT0hMH19ZnVuY3Rpb24gZWUoRmUsd2UsRWUpe3ZhciBJZT1GZVt3ZV07RmVbd2VdPUZlW0VlXSxGZVtFZV09SWV9ZnVuY3Rpb24gcmUoRmUsd2UsRWUsSWUsWGUpe2lmKDA9PT1GZS5sZW5ndGgpcmV0''@;'; put 'put ''dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiBFZT8oSWU9RWUsRWU9MCk6RWU+MjE0NzQ4MzY0Nz9FZT0yMTQ3NDgzNjQ3OkVlPC0yMTQ3NDgzNjQ4JiYoRWU9LTIxNDc0ODM2NDgpLHFlKEVlPStFZSkmJihFZT1YZT8wOkZlLmxlbmd0aC0xKSxFZTwwJiYoRWU9RmUubGVuZ3RoK0VlKSxFZT49''@;'; put 'put ''RmUubGVuZ3RoKXtpZihYZSlyZXR1cm4tMTtFZT1GZS5sZW5ndGgtMX1lbHNlIGlmKEVlPDApe2lmKCFYZSlyZXR1cm4tMTtFZT0wfWlmKCJzdHJpbmciPT10eXBlb2Ygd2UmJih3ZT1JLmZyb20od2UsSWUpKSxJLmlzQnVmZmVyKHdlKSlyZXR1cm4gMD09PXdlLmxlbmd0aD8tMTppZShGZSx3''@;'; put 'put ''ZSxFZSxJZSxYZSk7aWYoIm51bWJlciI9PXR5cGVvZiB3ZSlyZXR1cm4gd2UmPTI1NSwiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9YZT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoRmUsd2UsRWUpOlVpbnQ4QXJyYXkucHJvdG90eXBl''@;'; put 'put ''Lmxhc3RJbmRleE9mLmNhbGwoRmUsd2UsRWUpOmllKEZlLFt3ZV0sRWUsSWUsWGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIGllKEZlLHdlLEVlLEllLFhlKXt2YXIgQWUsdHQ9MSxaZT1GZS5sZW5ndGgsY3Q9''@;'; put 'put ''d2UubGVuZ3RoO2lmKHZvaWQgMCE9PUllJiYoInVjczIiPT09KEllPVN0cmluZyhJZSkudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT1JZXx8InV0ZjE2bGUiPT09SWV8fCJ1dGYtMTZsZSI9PT1JZSkpe2lmKEZlLmxlbmd0aDwyfHx3ZS5sZW5ndGg8MilyZXR1cm4tMTt0dD0yLFplLz0yLGN0''@;'; put 'put ''Lz0yLEVlLz0yfWZ1bmN0aW9uIGtlKHh0LEZ0KXtyZXR1cm4gMT09PXR0P3h0W0Z0XTp4dC5yZWFkVUludDE2QkUoRnQqdHQpfWlmKFhlKXt2YXIgamU9LTE7Zm9yKEFlPUVlO0FlPFplO0FlKyspaWYoa2UoRmUsQWUpPT09a2Uod2UsLTE9PT1qZT8wOkFlLWplKSl7aWYoLTE9PT1qZSYmKGpl''@;'; put 'put ''PUFlKSxBZS1qZSsxPT09Y3QpcmV0dXJuIGplKnR0fWVsc2UtMSE9PWplJiYoQWUtPUFlLWplKSxqZT0tMX1lbHNlIGZvcihFZStjdD5aZSYmKEVlPVplLWN0KSxBZT1FZTtBZT49MDtBZS0tKXtmb3IodmFyIGl0PSEwLHN0PTA7c3Q8Y3Q7c3QrKylpZihrZShGZSxBZStzdCkhPT1rZSh3ZSxz''@;'; put 'put ''dCkpe2l0PSExO2JyZWFrfWlmKGl0KXJldHVybiBBZX1yZXR1cm4tMX1mdW5jdGlvbiB1ZShGZSx3ZSxFZSxJZSl7RWU9TnVtYmVyKEVlKXx8MDt2YXIgWGU9RmUubGVuZ3RoLUVlO0llPyhJZT1OdW1iZXIoSWUpKT5YZSYmKEllPVhlKTpJZT1YZTt2YXIgdHQ9d2UubGVuZ3RoO0llPnR0LzIm''@;'; put 'put ''JihJZT10dC8yKTtmb3IodmFyIFplPTA7WmU8SWU7KytaZSl7dmFyIGN0PXBhcnNlSW50KHdlLnN1YnN0cigyKlplLDIpLDE2KTtpZihxZShjdCkpcmV0dXJuIFplO0ZlW0VlK1plXT1jdH1yZXR1cm4gWmV9ZnVuY3Rpb24gbGUoRmUsd2UsRWUsSWUpe3JldHVybiBHZShIZSh3ZSxGZS5sZW5n''@;'; put 'put ''dGgtRWUpLEZlLEVlLEllKX1mdW5jdGlvbiBhZShGZSx3ZSxFZSxJZSl7cmV0dXJuIEdlKGZ1bmN0aW9uIHhlKEZlKXtmb3IodmFyIHdlPVtdLEVlPTA7RWU8RmUubGVuZ3RoOysrRWUpd2UucHVzaCgyNTUmRmUuY2hhckNvZGVBdChFZSkpO3JldHVybiB3ZX0od2UpLEZlLEVlLEllKX1mdW5j''@;'; put 'put ''dGlvbiBXKEZlLHdlLEVlLEllKXtyZXR1cm4gR2UoQmUod2UpLEZlLEVlLEllKX1mdW5jdGlvbiBiKEZlLHdlLEVlLEllKXtyZXR1cm4gR2UoZnVuY3Rpb24gRGUoRmUsd2Upe2Zvcih2YXIgRWUsSWUsdHQ9W10sWmU9MDtaZTxGZS5sZW5ndGgmJiEoKHdlLT0yKTwwKTsrK1plKUllPShFZT1G''@;'; put 'put ''ZS5jaGFyQ29kZUF0KFplKSk+PjgsdHQucHVzaChFZSUyNTYpLHR0LnB1c2goSWUpO3JldHVybiB0dH0od2UsRmUubGVuZ3RoLUVlKSxGZSxFZSxJZSl9ZnVuY3Rpb24gQShGZSx3ZSxFZSl7cmV0dXJuIG9lLmZyb21CeXRlQXJyYXkoMD09PXdlJiZFZT09PUZlLmxlbmd0aD9GZTpGZS5zbGlj''@;'; put 'put ''ZSh3ZSxFZSkpfWZ1bmN0aW9uIEYoRmUsd2UsRWUpe0VlPU1hdGgubWluKEZlLmxlbmd0aCxFZSk7Zm9yKHZhciBJZT1bXSxYZT13ZTtYZTxFZTspe3ZhciBrZSxBZSxqZSxpdCx0dD1GZVtYZV0sWmU9bnVsbCxjdD10dD4yMzk/NDp0dD4yMjM/Mzp0dD4xOTE/MjoxO2lmKFhlK2N0PD1FZSlz''@;'; put 'put ''d2l0Y2goY3Qpe2Nhc2UgMTp0dDwxMjgmJihaZT10dCk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoa2U9RmVbWGUrMV0pKSYmKGl0PSgzMSZ0dCk8PDZ8NjMma2UpPjEyNyYmKFplPWl0KTticmVhaztjYXNlIDM6QWU9RmVbWGUrMl0sMTI4PT0oMTkyJihrZT1GZVtYZSsxXSkpJiYxMjg9PSgx''@;'; put 'put ''OTImQWUpJiYoaXQ9KDE1JnR0KTw8MTJ8KDYzJmtlKTw8Nnw2MyZBZSk+MjA0NyYmKGl0PDU1Mjk2fHxpdD41NzM0MykmJihaZT1pdCk7YnJlYWs7Y2FzZSA0OkFlPUZlW1hlKzJdLGplPUZlW1hlKzNdLDEyOD09KDE5MiYoa2U9RmVbWGUrMV0pKSYmMTI4PT0oMTkyJkFlKSYmMTI4PT0oMTky''@;'; put 'put ''JmplKSYmKGl0PSgxNSZ0dCk8PDE4fCg2MyZrZSk8PDEyfCg2MyZBZSk8PDZ8NjMmamUpPjY1NTM1JiZpdDwxMTE0MTEyJiYoWmU9aXQpfW51bGw9PT1aZT8oWmU9NjU1MzMsY3Q9MSk6WmU+NjU1MzUmJihJZS5wdXNoKChaZS09NjU1MzYpPj4+MTAmMTAyM3w1NTI5NiksWmU9NTYzMjB8MTAy''@;'; put 'put ''MyZaZSksSWUucHVzaChaZSksWGUrPWN0fXJldHVybiBmdW5jdGlvbiBnKEZlKXt2YXIgd2U9RmUubGVuZ3RoO2lmKHdlPD1IKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxGZSk7Zm9yKHZhciBFZT0iIixJZT0wO0llPHdlOylFZSs9U3RyaW5nLmZyb21DaGFyQ29k''@;'; put 'put ''ZS5hcHBseShTdHJpbmcsRmUuc2xpY2UoSWUsSWUrPUgpKTtyZXR1cm4gRWV9KEllKX1NZS5rTWF4TGVuZ3RoPXNlLCEoSS5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uIE0oKXt0cnl7dmFyIEZlPW5ldyBVaW50OEFycmF5KDEpLHdlPXtmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fTty''@;'; put 'put ''ZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHdlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoRmUsd2UpLDQyPT09RmUuZm9vKCl9Y2F0Y2h7cmV0dXJuITF9fSgpKSYmdHlwZW9mIGNvbnNvbGU8InUiJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5l''@;'; put 'put ''cnJvciYmY29uc29sZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIiks''@;'; put 'put ''T2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKEkuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLnByb3RvdHlwZSwib2Zmc2V0Iix7ZW51bWVy''@;'; put 'put ''YWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihJLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9fSksSS5wb29sU2l6ZT04MTkyLEkuZnJvbT1mdW5jdGlvbihGZSx3ZSxFZSl7cmV0dXJuIGooRmUsd2UsRWUpfSxPYmplY3Quc2V0UHJvdG90eXBlT2YoSS5wcm90b3R5cGUs''@;'; put 'put ''VWludDhBcnJheS5wcm90b3R5cGUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihJLFVpbnQ4QXJyYXkpLEkuYWxsb2M9ZnVuY3Rpb24oRmUsd2UsRWUpe3JldHVybiBmdW5jdGlvbiBEKEZlLHdlLEVlKXtyZXR1cm4gRyhGZSksRmU8PTA/TyhGZSk6dm9pZCAwIT09d2U/InN0cmluZyI9PXR5cGVv''@;'; put 'put ''ZiBFZT9PKEZlKS5maWxsKHdlLEVlKTpPKEZlKS5maWxsKHdlKTpPKEZlKX0oRmUsd2UsRWUpfSxJLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKEZlKXtyZXR1cm4gVChGZSl9LEkuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKEZlKXtyZXR1cm4gVChGZSl9LEkuaXNCdWZmZXI9ZnVuY3Rpb24od2Up''@;'; put 'put ''e3JldHVybiBudWxsIT13ZSYmITA9PT13ZS5faXNCdWZmZXImJndlIT09SS5wcm90b3R5cGV9LEkuY29tcGFyZT1mdW5jdGlvbih3ZSxFZSl7aWYoVWUod2UsVWludDhBcnJheSkmJih3ZT1JLmZyb20od2Usd2Uub2Zmc2V0LHdlLmJ5dGVMZW5ndGgpKSxVZShFZSxVaW50OEFycmF5KSYmKEVl''@;'; put 'put ''PUkuZnJvbShFZSxFZS5vZmZzZXQsRWUuYnl0ZUxlbmd0aCkpLCFJLmlzQnVmZmVyKHdlKXx8IUkuaXNCdWZmZXIoRWUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lm''@;'; put 'put ''KHdlPT09RWUpcmV0dXJuIDA7Zm9yKHZhciBJZT13ZS5sZW5ndGgsWGU9RWUubGVuZ3RoLHR0PTAsWmU9TWF0aC5taW4oSWUsWGUpO3R0PFplOysrdHQpaWYod2VbdHRdIT09RWVbdHRdKXtJZT13ZVt0dF0sWGU9RWVbdHRdO2JyZWFrfXJldHVybiBJZTxYZT8tMTpYZTxJZT8xOjB9LEkuaXNF''@;'; put 'put ''bmNvZGluZz1mdW5jdGlvbih3ZSl7c3dpdGNoKFN0cmluZyh3ZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNl''@;'; put 'put ''InV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxJLmNvbmNhdD1mdW5jdGlvbih3ZSxFZSl7aWYoIUFycmF5LmlzQXJyYXkod2UpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMn''@;'; put 'put ''KTtpZigwPT09d2UubGVuZ3RoKXJldHVybiBJLmFsbG9jKDApO3ZhciBJZTtpZih2b2lkIDA9PT1FZSlmb3IoRWU9MCxJZT0wO0llPHdlLmxlbmd0aDsrK0llKUVlKz13ZVtJZV0ubGVuZ3RoO3ZhciBYZT1JLmFsbG9jVW5zYWZlKEVlKSx0dD0wO2ZvcihJZT0wO0llPHdlLmxlbmd0aDsrK0ll''@;'; put 'put ''KXt2YXIgWmU9d2VbSWVdO2lmKFVlKFplLFVpbnQ4QXJyYXkpKXR0K1plLmxlbmd0aD5YZS5sZW5ndGg/SS5mcm9tKFplKS5jb3B5KFhlLHR0KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChYZSxaZSx0dCk7ZWxzZXtpZighSS5pc0J1ZmZlcihaZSkpdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO1plLmNvcHkoWGUsdHQpfXR0Kz1aZS5sZW5ndGh9cmV0dXJuIFhlfSxJLmJ5dGVMZW5ndGg9cSxJLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsSS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHdl''@;'; put 'put ''PXRoaXMubGVuZ3RoO2lmKHdlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBFZT0wO0VlPHdlO0VlKz0yKWVlKHRoaXMsRWUsRWUrMSk7cmV0dXJuIHRoaXN9LEkucHJvdG90eXBlLnN3YXAzMj1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciB3ZT10aGlzLmxlbmd0aDtpZih3ZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgRWU9MDtFZTx3ZTtFZSs9NCllZSh0aGlzLEVlLEVlKzMpLGVlKHRoaXMsRWUrMSxFZSsy''@;'; put 'put ''KTtyZXR1cm4gdGhpc30sSS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHdlPXRoaXMubGVuZ3RoO2lmKHdlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciBFZT0wO0VlPHdlO0VlKz04''@;'; put 'put ''KWVlKHRoaXMsRWUsRWUrNyksZWUodGhpcyxFZSsxLEVlKzYpLGVlKHRoaXMsRWUrMixFZSs1KSxlZSh0aGlzLEVlKzMsRWUrNCk7cmV0dXJuIHRoaXN9LEkucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPUkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHdlPXRoaXMubGVuZ3Ro''@;'; put 'put ''O3JldHVybiAwPT09d2U/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/Rih0aGlzLDAsd2UpOkouYXBwbHkodGhpcyxhcmd1bWVudHMpfSxJLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24od2Upe2lmKCFJLmlzQnVmZmVyKHdlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJl''@;'; put 'put ''IGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT13ZXx8MD09PUkuY29tcGFyZSh0aGlzLHdlKX0sSS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciB3ZT0iIixFZT1NZS5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gd2U9dGhpcy50b1N0cmluZygiaGV4IiwwLEVlKS5yZXBsYWNlKC8o''@;'; put 'put ''LnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPkVlJiYod2UrPSIgLi4uICIpLCI8QnVmZmVyICIrd2UrIj4ifSxtJiYoSS5wcm90b3R5cGVbbV09SS5wcm90b3R5cGUuaW5zcGVjdCksSS5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih3ZSxFZSxJZSxYZSx0dCl7aWYoVWUod2Us''@;'; put 'put ''VWludDhBcnJheSkmJih3ZT1JLmZyb20od2Usd2Uub2Zmc2V0LHdlLmJ5dGVMZW5ndGgpKSwhSS5pc0J1ZmZlcih3ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ0YXJnZXQiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5''@;'; put 'put ''cGUgJyt0eXBlb2Ygd2UpO2lmKHZvaWQgMD09PUVlJiYoRWU9MCksdm9pZCAwPT09SWUmJihJZT13ZT93ZS5sZW5ndGg6MCksdm9pZCAwPT09WGUmJihYZT0wKSx2b2lkIDA9PT10dCYmKHR0PXRoaXMubGVuZ3RoKSxFZTwwfHxJZT53ZS5sZW5ndGh8fFhlPDB8fHR0PnRoaXMubGVuZ3RoKXRo''@;'; put 'put ''cm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihYZT49dHQmJkVlPj1JZSlyZXR1cm4gMDtpZihYZT49dHQpcmV0dXJuLTE7aWYoRWU+PUllKXJldHVybiAxO2lmKHRoaXM9PT13ZSlyZXR1cm4gMDtmb3IodmFyIFplPSh0dD4+Pj0wKS0oWGU+Pj49MCksY3Q9KEll''@;'; put 'put ''Pj4+PTApLShFZT4+Pj0wKSxrZT1NYXRoLm1pbihaZSxjdCksQWU9dGhpcy5zbGljZShYZSx0dCksamU9d2Uuc2xpY2UoRWUsSWUpLGl0PTA7aXQ8a2U7KytpdClpZihBZVtpdF0hPT1qZVtpdF0pe1plPUFlW2l0XSxjdD1qZVtpdF07YnJlYWt9cmV0dXJuIFplPGN0Py0xOmN0PFplPzE6MH0s''@;'; put 'put ''SS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHdlLEVlLEllKX0sSS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIHJlKHRoaXMsd2UsRWUsSWUsITApfSxJLnByb3RvdHlwZS5sYXN0SW5kZXhP''@;'; put 'put ''Zj1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIHJlKHRoaXMsd2UsRWUsSWUsITEpfSxJLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih3ZSxFZSxJZSxYZSl7aWYodm9pZCAwPT09RWUpWGU9InV0ZjgiLEllPXRoaXMubGVuZ3RoLEVlPTA7ZWxzZSBpZih2b2lkIDA9PT1JZSYmInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBFZSlYZT1FZSxJZT10aGlzLmxlbmd0aCxFZT0wO2Vsc2V7aWYoIWlzRmluaXRlKEVlKSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7RWU+Pj49MCxpc0Zpbml0''@;'; put 'put ''ZShJZSk/KEllPj4+PTAsdm9pZCAwPT09WGUmJihYZT0idXRmOCIpKTooWGU9SWUsSWU9dm9pZCAwKX12YXIgdHQ9dGhpcy5sZW5ndGgtRWU7aWYoKHZvaWQgMD09PUllfHxJZT50dCkmJihJZT10dCksd2UubGVuZ3RoPjAmJihJZTwwfHxFZTwwKXx8RWU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3''@;'; put 'put ''IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7WGV8fChYZT0idXRmOCIpO2Zvcih2YXIgWmU9ITE7Oylzd2l0Y2goWGUpe2Nhc2UiaGV4IjpyZXR1cm4gdWUodGhpcyx3ZSxFZSxJZSk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gbGUo''@;'; put 'put ''dGhpcyx3ZSxFZSxJZSk7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gYWUodGhpcyx3ZSxFZSxJZSk7Y2FzZSJiYXNlNjQiOnJldHVybiBXKHRoaXMsd2UsRWUsSWUpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxl''@;'; put 'put ''IjpyZXR1cm4gYih0aGlzLHdlLEVlLEllKTtkZWZhdWx0OmlmKFplKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrWGUpO1hlPSgiIitYZSkudG9Mb3dlckNhc2UoKSxaZT0hMH19LEkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZm''@;'; put 'put ''ZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEg9NDA5NjtmdW5jdGlvbiBDKEZlLHdlLEVlKXt2YXIgSWU9IiI7RWU9TWF0aC5taW4oRmUubGVuZ3RoLEVlKTtmb3IodmFyIFhlPXdlO1hlPEVlOysrWGUpSWUrPVN0cmluZy5mcm9t''@;'; put 'put ''Q2hhckNvZGUoMTI3JkZlW1hlXSk7cmV0dXJuIEllfWZ1bmN0aW9uIGsoRmUsd2UsRWUpe3ZhciBJZT0iIjtFZT1NYXRoLm1pbihGZS5sZW5ndGgsRWUpO2Zvcih2YXIgWGU9d2U7WGU8RWU7KytYZSlJZSs9U3RyaW5nLmZyb21DaGFyQ29kZShGZVtYZV0pO3JldHVybiBJZX1mdW5jdGlvbiBf''@;'; put 'put ''KEZlLHdlLEVlKXt2YXIgSWU9RmUubGVuZ3RoOyghd2V8fHdlPDApJiYod2U9MCksKCFFZXx8RWU8MHx8RWU+SWUpJiYoRWU9SWUpO2Zvcih2YXIgWGU9IiIsdHQ9d2U7dHQ8RWU7Kyt0dClYZSs9b3RbRmVbdHRdXTtyZXR1cm4gWGV9ZnVuY3Rpb24gcChGZSx3ZSxFZSl7Zm9yKHZhciBJZT1G''@;'; put 'put ''ZS5zbGljZSh3ZSxFZSksWGU9IiIsdHQ9MDt0dDxJZS5sZW5ndGgtMTt0dCs9MilYZSs9U3RyaW5nLmZyb21DaGFyQ29kZShJZVt0dF0rMjU2KkllW3R0KzFdKTtyZXR1cm4gWGV9ZnVuY3Rpb24gdyhGZSx3ZSxFZSl7aWYoRmUlMSE9MHx8RmU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zm''@;'; put 'put ''c2V0IGlzIG5vdCB1aW50Iik7aWYoRmUrd2U+RWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBLKEZlLHdlLEVlLEllLFhlLHR0KXtpZighSS5pc0J1ZmZlcihGZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1''@;'; put 'put ''ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHdlPlhlfHx3ZTx0dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYoRWUrSWU+RmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBv''@;'; put 'put ''dXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB0ZShGZSx3ZSxFZSxJZSxYZSx0dCl7aWYoRWUrSWU+RmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihFZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlv''@;'; put 'put ''biBjZShGZSx3ZSxFZSxJZSxYZSl7cmV0dXJuIHdlPSt3ZSxFZT4+Pj0wLFhlfHx0ZShGZSwwLEVlLDQpLHgud3JpdGUoRmUsd2UsRWUsSWUsMjMsNCksRWUrNH1mdW5jdGlvbiBoZShGZSx3ZSxFZSxJZSxYZSl7cmV0dXJuIHdlPSt3ZSxFZT4+Pj0wLFhlfHx0ZShGZSwwLEVlLDgpLHgud3Jp''@;'; put 'put ''dGUoRmUsd2UsRWUsSWUsNTIsOCksRWUrOH1JLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih3ZSxFZSl7dmFyIEllPXRoaXMubGVuZ3RoOyh3ZT1+fndlKTwwPyh3ZSs9SWUpPDAmJih3ZT0wKTp3ZT5JZSYmKHdlPUllKSwoRWU9dm9pZCAwPT09RWU/SWU6fn5FZSk8MD8oRWUrPUllKTwwJiYo''@;'; put 'put ''RWU9MCk6RWU+SWUmJihFZT1JZSksRWU8d2UmJihFZT13ZSk7dmFyIFhlPXRoaXMuc3ViYXJyYXkod2UsRWUpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoWGUsSS5wcm90b3R5cGUpLFhlfSxJLnByb3RvdHlwZS5yZWFkVWludExFPUkucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rp''@;'; put 'put ''b24od2UsRWUsSWUpe3dlPj4+PTAsRWU+Pj49MCxJZXx8dyh3ZSxFZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBYZT10aGlzW3dlXSx0dD0xLFplPTA7KytaZTxFZSYmKHR0Kj0yNTYpOylYZSs9dGhpc1t3ZStaZV0qdHQ7cmV0dXJuIFhlfSxJLnByb3RvdHlwZS5yZWFkVWludEJFPUkucHJvdG90''@;'; put 'put ''eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24od2UsRWUsSWUpe3dlPj4+PTAsRWU+Pj49MCxJZXx8dyh3ZSxFZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBYZT10aGlzW3dlKy0tRWVdLHR0PTE7RWU+MCYmKHR0Kj0yNTYpOylYZSs9dGhpc1t3ZSstLUVlXSp0dDtyZXR1cm4gWGV9LEkucHJvdG90eXBl''@;'; put 'put ''LnJlYWRVaW50OD1JLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24od2UsRWUpe3JldHVybiB3ZT4+Pj0wLEVlfHx3KHdlLDEsdGhpcy5sZW5ndGgpLHRoaXNbd2VdfSxJLnByb3RvdHlwZS5yZWFkVWludDE2TEU9SS5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKHdlLEVlKXty''@;'; put 'put ''ZXR1cm4gd2U+Pj49MCxFZXx8dyh3ZSwyLHRoaXMubGVuZ3RoKSx0aGlzW3dlXXx0aGlzW3dlKzFdPDw4fSxJLnByb3RvdHlwZS5yZWFkVWludDE2QkU9SS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gd2U+Pj49MCxFZXx8dyh3ZSwyLHRoaXMubGVuZ3Ro''@;'; put 'put ''KSx0aGlzW3dlXTw8OHx0aGlzW3dlKzFdfSxJLnByb3RvdHlwZS5yZWFkVWludDMyTEU9SS5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gd2U+Pj49MCxFZXx8dyh3ZSw0LHRoaXMubGVuZ3RoKSwodGhpc1t3ZV18dGhpc1t3ZSsxXTw8OHx0aGlzW3dlKzJd''@;'; put 'put ''PDwxNikrMTY3NzcyMTYqdGhpc1t3ZSszXX0sSS5wcm90b3R5cGUucmVhZFVpbnQzMkJFPUkucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih3ZSxFZSl7cmV0dXJuIHdlPj4+PTAsRWV8fHcod2UsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1t3ZV0rKHRoaXNbd2UrMV08PDE2''@;'; put 'put ''fHRoaXNbd2UrMl08PDh8dGhpc1t3ZSszXSl9LEkucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbih3ZSxFZSxJZSl7d2U+Pj49MCxFZT4+Pj0wLEllfHx3KHdlLEVlLHRoaXMubGVuZ3RoKTtmb3IodmFyIFhlPXRoaXNbd2VdLHR0PTEsWmU9MDsrK1plPEVlJiYodHQqPTI1Nik7KVhlKz10''@;'; put 'put ''aGlzW3dlK1plXSp0dDtyZXR1cm4gWGU+PSh0dCo9MTI4KSYmKFhlLT1NYXRoLnBvdygyLDgqRWUpKSxYZX0sSS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHdlLEVlLEllKXt3ZT4+Pj0wLEVlPj4+PTAsSWV8fHcod2UsRWUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgWGU9RWUsdHQ9MSxa''@;'; put 'put ''ZT10aGlzW3dlKy0tWGVdO1hlPjAmJih0dCo9MjU2KTspWmUrPXRoaXNbd2UrLS1YZV0qdHQ7cmV0dXJuIFplPj0odHQqPTEyOCkmJihaZS09TWF0aC5wb3coMiw4KkVlKSksWmV9LEkucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gd2U+Pj49MCxFZXx8dyh3ZSwx''@;'; put 'put ''LHRoaXMubGVuZ3RoKSwxMjgmdGhpc1t3ZV0/LTEqKDI1NS10aGlzW3dlXSsxKTp0aGlzW3dlXX0sSS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24od2UsRWUpe3dlPj4+PTAsRWV8fHcod2UsMix0aGlzLmxlbmd0aCk7dmFyIEllPXRoaXNbd2VdfHRoaXNbd2UrMV08PDg7cmV0dXJu''@;'; put 'put ''IDMyNzY4JkllPzQyOTQ5MDE3NjB8SWU6SWV9LEkucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKHdlLEVlKXt3ZT4+Pj0wLEVlfHx3KHdlLDIsdGhpcy5sZW5ndGgpO3ZhciBJZT10aGlzW3dlKzFdfHRoaXNbd2VdPDw4O3JldHVybiAzMjc2OCZJZT80Mjk0OTAxNzYwfEllOkllfSxJ''@;'; put 'put ''LnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbih3ZSxFZSl7cmV0dXJuIHdlPj4+PTAsRWV8fHcod2UsNCx0aGlzLmxlbmd0aCksdGhpc1t3ZV18dGhpc1t3ZSsxXTw8OHx0aGlzW3dlKzJdPDwxNnx0aGlzW3dlKzNdPDwyNH0sSS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24o''@;'; put 'put ''d2UsRWUpe3JldHVybiB3ZT4+Pj0wLEVlfHx3KHdlLDQsdGhpcy5sZW5ndGgpLHRoaXNbd2VdPDwyNHx0aGlzW3dlKzFdPDwxNnx0aGlzW3dlKzJdPDw4fHRoaXNbd2UrM119LEkucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gd2U+Pj49MCxFZXx8dyh3ZSw0''@;'; put 'put ''LHRoaXMubGVuZ3RoKSx4LnJlYWQodGhpcyx3ZSwhMCwyMyw0KX0sSS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24od2UsRWUpe3JldHVybiB3ZT4+Pj0wLEVlfHx3KHdlLDQsdGhpcy5sZW5ndGgpLHgucmVhZCh0aGlzLHdlLCExLDIzLDQpfSxJLnByb3RvdHlwZS5yZWFkRG91Ymxl''@;'; put 'put ''TEU9ZnVuY3Rpb24od2UsRWUpe3JldHVybiB3ZT4+Pj0wLEVlfHx3KHdlLDgsdGhpcy5sZW5ndGgpLHgucmVhZCh0aGlzLHdlLCEwLDUyLDgpfSxJLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24od2UsRWUpe3JldHVybiB3ZT4+Pj0wLEVlfHx3KHdlLDgsdGhpcy5sZW5ndGgpLHgu''@;'; put 'put ''cmVhZCh0aGlzLHdlLCExLDUyLDgpfSxJLnByb3RvdHlwZS53cml0ZVVpbnRMRT1JLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbih3ZSxFZSxJZSxYZSl7d2U9K3dlLEVlPj4+PTAsSWU+Pj49MCxYZXx8Syh0aGlzLHdlLEVlLEllLE1hdGgucG93KDIsOCpJZSktMSwwKTt2YXIgWmU9''@;'; put 'put ''MSxjdD0wO2Zvcih0aGlzW0VlXT0yNTUmd2U7KytjdDxJZSYmKFplKj0yNTYpOyl0aGlzW0VlK2N0XT13ZS9aZSYyNTU7cmV0dXJuIEVlK0llfSxJLnByb3RvdHlwZS53cml0ZVVpbnRCRT1JLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbih3ZSxFZSxJZSxYZSl7d2U9K3dlLEVlPj4+''@;'; put 'put ''PTAsSWU+Pj49MCxYZXx8Syh0aGlzLHdlLEVlLEllLE1hdGgucG93KDIsOCpJZSktMSwwKTt2YXIgWmU9SWUtMSxjdD0xO2Zvcih0aGlzW0VlK1plXT0yNTUmd2U7LS1aZT49MCYmKGN0Kj0yNTYpOyl0aGlzW0VlK1plXT13ZS9jdCYyNTU7cmV0dXJuIEVlK0llfSxJLnByb3RvdHlwZS53cml0''@;'; put 'put ''ZVVpbnQ4PUkucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiB3ZT0rd2UsRWU+Pj49MCxJZXx8Syh0aGlzLHdlLEVlLDEsMjU1LDApLHRoaXNbRWVdPTI1NSZ3ZSxFZSsxfSxJLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFPUkucHJvdG90eXBlLndyaXRlVUlu''@;'; put 'put ''dDE2TEU9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiB3ZT0rd2UsRWU+Pj49MCxJZXx8Syh0aGlzLHdlLEVlLDIsNjU1MzUsMCksdGhpc1tFZV09MjU1JndlLHRoaXNbRWUrMV09d2U+Pj44LEVlKzJ9LEkucHJvdG90eXBlLndyaXRlVWludDE2QkU9SS5wcm90b3R5cGUud3JpdGVVSW50MTZC''@;'; put 'put ''RT1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIHdlPSt3ZSxFZT4+Pj0wLEllfHxLKHRoaXMsd2UsRWUsMiw2NTUzNSwwKSx0aGlzW0VlXT13ZT4+PjgsdGhpc1tFZSsxXT0yNTUmd2UsRWUrMn0sSS5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1JLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1''@;'; put 'put ''bmN0aW9uKHdlLEVlLEllKXtyZXR1cm4gd2U9K3dlLEVlPj4+PTAsSWV8fEsodGhpcyx3ZSxFZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tFZSszXT13ZT4+PjI0LHRoaXNbRWUrMl09d2U+Pj4xNix0aGlzW0VlKzFdPXdlPj4+OCx0aGlzW0VlXT0yNTUmd2UsRWUrNH0sSS5wcm90b3R5cGUud3Jp''@;'; put 'put ''dGVVaW50MzJCRT1JLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHdlLEVlLEllKXtyZXR1cm4gd2U9K3dlLEVlPj4+PTAsSWV8fEsodGhpcyx3ZSxFZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tFZV09d2U+Pj4yNCx0aGlzW0VlKzFdPXdlPj4+MTYsdGhpc1tFZSsyXT13ZT4+Pjgs''@;'; put 'put ''dGhpc1tFZSszXT0yNTUmd2UsRWUrNH0sSS5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbih3ZSxFZSxJZSxYZSl7aWYod2U9K3dlLEVlPj4+PTAsIVhlKXt2YXIgdHQ9TWF0aC5wb3coMiw4KkllLTEpO0sodGhpcyx3ZSxFZSxJZSx0dC0xLC10dCl9dmFyIFplPTAsY3Q9MSxrZT0wO2Zv''@;'; put 'put ''cih0aGlzW0VlXT0yNTUmd2U7KytaZTxJZSYmKGN0Kj0yNTYpOyl3ZTwwJiYwPT09a2UmJjAhPT10aGlzW0VlK1plLTFdJiYoa2U9MSksdGhpc1tFZStaZV09KHdlL2N0fDApLWtlJjI1NTtyZXR1cm4gRWUrSWV9LEkucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24od2UsRWUsSWUsWGUp''@;'; put 'put ''e2lmKHdlPSt3ZSxFZT4+Pj0wLCFYZSl7dmFyIHR0PU1hdGgucG93KDIsOCpJZS0xKTtLKHRoaXMsd2UsRWUsSWUsdHQtMSwtdHQpfXZhciBaZT1JZS0xLGN0PTEsa2U9MDtmb3IodGhpc1tFZStaZV09MjU1JndlOy0tWmU+PTAmJihjdCo9MjU2KTspd2U8MCYmMD09PWtlJiYwIT09dGhpc1tF''@;'; put 'put ''ZStaZSsxXSYmKGtlPTEpLHRoaXNbRWUrWmVdPSh3ZS9jdHwwKS1rZSYyNTU7cmV0dXJuIEVlK0llfSxJLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiB3ZT0rd2UsRWU+Pj49MCxJZXx8Syh0aGlzLHdlLEVlLDEsMTI3LC0xMjgpLHdlPDAmJih3ZT0yNTUr''@;'; put 'put ''d2UrMSksdGhpc1tFZV09MjU1JndlLEVlKzF9LEkucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIHdlPSt3ZSxFZT4+Pj0wLEllfHxLKHRoaXMsd2UsRWUsMiwzMjc2NywtMzI3NjgpLHRoaXNbRWVdPTI1NSZ3ZSx0aGlzW0VlKzFdPXdlPj4+OCxFZSsy''@;'; put 'put ''fSxJLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiB3ZT0rd2UsRWU+Pj49MCxJZXx8Syh0aGlzLHdlLEVlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW0VlXT13ZT4+PjgsdGhpc1tFZSsxXT0yNTUmd2UsRWUrMn0sSS5wcm90b3R5cGUud3JpdGVJbnQzMkxF''@;'; put 'put ''PWZ1bmN0aW9uKHdlLEVlLEllKXtyZXR1cm4gd2U9K3dlLEVlPj4+PTAsSWV8fEsodGhpcyx3ZSxFZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbRWVdPTI1NSZ3ZSx0aGlzW0VlKzFdPXdlPj4+OCx0aGlzW0VlKzJdPXdlPj4+MTYsdGhpc1tFZSszXT13ZT4+PjI0LEVlKzR9LEku''@;'; put 'put ''cHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIHdlPSt3ZSxFZT4+Pj0wLEllfHxLKHRoaXMsd2UsRWUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx3ZTwwJiYod2U9NDI5NDk2NzI5NSt3ZSsxKSx0aGlzW0VlXT13ZT4+PjI0LHRoaXNbRWUrMV09d2U+''@;'; put 'put ''Pj4xNix0aGlzW0VlKzJdPXdlPj4+OCx0aGlzW0VlKzNdPTI1NSZ3ZSxFZSs0fSxJLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiBjZSh0aGlzLHdlLEVlLCEwLEllKX0sSS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHdlLEVlLEllKXty''@;'; put 'put ''ZXR1cm4gY2UodGhpcyx3ZSxFZSwhMSxJZSl9LEkucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24od2UsRWUsSWUpe3JldHVybiBoZSh0aGlzLHdlLEVlLCEwLEllKX0sSS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbih3ZSxFZSxJZSl7cmV0dXJuIGhlKHRoaXMsd2Us''@;'; put 'put ''RWUsITEsSWUpfSxJLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHdlLEVlLEllLFhlKXtpZighSS5pc0J1ZmZlcih3ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyIik7aWYoSWV8fChJZT0wKSwhWGUmJjAhPT1YZSYmKFhlPXRoaXMubGVuZ3RoKSxF''@;'; put 'put ''ZT49d2UubGVuZ3RoJiYoRWU9d2UubGVuZ3RoKSxFZXx8KEVlPTApLFhlPjAmJlhlPEllJiYoWGU9SWUpLFhlPT09SWV8fDA9PT13ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZihFZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRz''@;'; put 'put ''Iik7aWYoSWU8MHx8SWU+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihYZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO1hlPnRoaXMubGVuZ3RoJiYoWGU9dGhpcy5sZW5ndGgpLHdlLmxl''@;'; put 'put ''bmd0aC1FZTxYZS1JZSYmKFhlPXdlLmxlbmd0aC1FZStJZSk7dmFyIHR0PVhlLUllO3JldHVybiB0aGlzPT09d2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihFZSxJZSxYZSk6VWludDhBcnJheS5wcm90b3R5cGUu''@;'; put 'put ''c2V0LmNhbGwod2UsdGhpcy5zdWJhcnJheShJZSxYZSksRWUpLHR0fSxJLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHdlLEVlLEllLFhlKXtpZigic3RyaW5nIj09dHlwZW9mIHdlKXtpZigic3RyaW5nIj09dHlwZW9mIEVlPyhYZT1FZSxFZT0wLEllPXRoaXMubGVuZ3RoKToic3RyaW5nIj09''@;'; put 'put ''dHlwZW9mIEllJiYoWGU9SWUsSWU9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PVhlJiYic3RyaW5nIiE9dHlwZW9mIFhlKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIFhlJiYhSS5pc0VuY29kaW5nKFhlKSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK1hlKTtpZigxPT09d2UubGVuZ3RoKXt2YXIgdHQ9d2UuY2hhckNvZGVBdCgwKTsoInV0ZjgiPT09WGUmJnR0PDEyOHx8ImxhdGluMSI9PT1YZSkmJih3ZT10dCl9fWVsc2UibnVtYmVyIj09dHlwZW9mIHdlP3dlJj0yNTU6ImJvb2xl''@;'; put 'put ''YW4iPT10eXBlb2Ygd2UmJih3ZT1OdW1iZXIod2UpKTtpZihFZTwwfHx0aGlzLmxlbmd0aDxFZXx8dGhpcy5sZW5ndGg8SWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKEllPD1FZSlyZXR1cm4gdGhpczt2YXIgWmU7aWYoRWU+Pj49MCxJZT12b2lkIDA9''@;'; put 'put ''PT1JZT90aGlzLmxlbmd0aDpJZT4+PjAsd2V8fCh3ZT0wKSwibnVtYmVyIj09dHlwZW9mIHdlKWZvcihaZT1FZTtaZTxJZTsrK1plKXRoaXNbWmVdPXdlO2Vsc2V7dmFyIGN0PUkuaXNCdWZmZXIod2UpP3dlOkkuZnJvbSh3ZSxYZSksa2U9Y3QubGVuZ3RoO2lmKDA9PT1rZSl0aHJvdyBuZXcg''@;'; put 'put ''VHlwZUVycm9yKCdUaGUgdmFsdWUgIicrd2UrJyIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgInZhbHVlIicpO2ZvcihaZT0wO1plPEllLUVlOysrWmUpdGhpc1taZStFZV09Y3RbWmUla2VdfXJldHVybiB0aGlzfTt2YXIgU2U9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBIZShGZSx3''@;'; put 'put ''ZSl7d2U9d2V8fDEvMDtmb3IodmFyIEVlLEllPUZlLmxlbmd0aCxYZT1udWxsLHR0PVtdLFplPTA7WmU8SWU7KytaZSl7aWYoKEVlPUZlLmNoYXJDb2RlQXQoWmUpKT41NTI5NSYmRWU8NTczNDQpe2lmKCFYZSl7aWYoRWU+NTYzMTkpeyh3ZS09Myk+LTEmJnR0LnB1c2goMjM5LDE5MSwxODkp''@;'; put 'put ''O2NvbnRpbnVlfWlmKFplKzE9PT1JZSl7KHdlLT0zKT4tMSYmdHQucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9WGU9RWU7Y29udGludWV9aWYoRWU8NTYzMjApeyh3ZS09Myk+LTEmJnR0LnB1c2goMjM5LDE5MSwxODkpLFhlPUVlO2NvbnRpbnVlfUVlPTY1NTM2KyhYZS01NTI5Njw8MTB8''@;'; put 'put ''RWUtNTYzMjApfWVsc2UgWGUmJih3ZS09Myk+LTEmJnR0LnB1c2goMjM5LDE5MSwxODkpO2lmKFhlPW51bGwsRWU8MTI4KXtpZigod2UtPTEpPDApYnJlYWs7dHQucHVzaChFZSl9ZWxzZSBpZihFZTwyMDQ4KXtpZigod2UtPTIpPDApYnJlYWs7dHQucHVzaChFZT4+NnwxOTIsNjMmRWV8MTI4''@;'; put 'put ''KX1lbHNlIGlmKEVlPDY1NTM2KXtpZigod2UtPTMpPDApYnJlYWs7dHQucHVzaChFZT4+MTJ8MjI0LEVlPj42JjYzfDEyOCw2MyZFZXwxMjgpfWVsc2V7aWYoIShFZTwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKCh3ZS09NCk8MClicmVhazt0dC5w''@;'; put 'put ''dXNoKEVlPj4xOHwyNDAsRWU+PjEyJjYzfDEyOCxFZT4+NiY2M3wxMjgsNjMmRWV8MTI4KX19cmV0dXJuIHR0fWZ1bmN0aW9uIEJlKEZlKXtyZXR1cm4gb2UudG9CeXRlQXJyYXkoZnVuY3Rpb24gTGUoRmUpe2lmKChGZT0oRmU9RmUuc3BsaXQoIj0iKVswXSkudHJpbSgpLnJlcGxhY2UoU2Us''@;'; put 'put ''IiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO0ZlLmxlbmd0aCU0IT0wOylGZSs9Ij0iO3JldHVybiBGZX0oRmUpKX1mdW5jdGlvbiBHZShGZSx3ZSxFZSxJZSl7Zm9yKHZhciBYZT0wO1hlPEllJiYhKFhlK0VlPj13ZS5sZW5ndGh8fFhlPj1GZS5sZW5ndGgpOysrWGUpd2VbWGUrRWVdPUZl''@;'; put 'put ''W1hlXTtyZXR1cm4gWGV9ZnVuY3Rpb24gVWUoRmUsd2Upe3JldHVybiBGZSBpbnN0YW5jZW9mIHdlfHxudWxsIT1GZSYmbnVsbCE9RmUuY29uc3RydWN0b3ImJm51bGwhPUZlLmNvbnN0cnVjdG9yLm5hbWUmJkZlLmNvbnN0cnVjdG9yLm5hbWU9PT13ZS5uYW1lfWZ1bmN0aW9uIHFlKEZlKXty''@;'; put 'put ''ZXR1cm4gRmUhPUZlfXZhciBvdD1mdW5jdGlvbigpe2Zvcih2YXIgRmU9IjAxMjM0NTY3ODlhYmNkZWYiLHdlPW5ldyBBcnJheSgyNTYpLEVlPTA7RWU8MTY7KytFZSlmb3IodmFyIEllPTE2KkVlLFhlPTA7WGU8MTY7KytYZSl3ZVtJZStYZV09RmVbRWVdK0ZlW1hlXTtyZXR1cm4gd2V9KCl9''@;'; put 'put ''LDMyNDc6KFFlLE1lLFIpPT57dmFyIG9lPVIoMjcwNTQpLkJ1ZmZlcix4PVIoNzA0NSkuVHJhbnNmb3JtLG09Uig3ODQ1NCkuSTtmdW5jdGlvbiBNKE8pe3guY2FsbCh0aGlzKSx0aGlzLmhhc2hNb2RlPSJzdHJpbmciPT10eXBlb2YgTyx0aGlzLmhhc2hNb2RlP3RoaXNbT109dGhpcy5fZmlu''@;'; put 'put ''YWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZmluYWwmJih0aGlzLl9fZmluYWw9dGhpcy5fZmluYWwsdGhpcy5fZmluYWw9bnVsbCksdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9Uig3MTk5MykoTSx4KSxNLnByb3RvdHlwZS51''@;'; put 'put ''cGRhdGU9ZnVuY3Rpb24oTyxJLGopeyJzdHJpbmciPT10eXBlb2YgTyYmKE89b2UuZnJvbShPLEkpKTt2YXIgRz10aGlzLl91cGRhdGUoTyk7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczooaiYmKEc9dGhpcy5fdG9TdHJpbmcoRyxqKSksRyl9LE0ucHJvdG90eXBlLnNldEF1dG9QYWRkaW5n''@;'; put 'put ''PWZ1bmN0aW9uKCl7fSxNLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlIil9LE0ucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInRy''@;'; put 'put ''eWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUiKX0sTS5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJ0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZSIpfSxNLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9u''@;'; put 'put ''KE8sSSxqKXt2YXIgRzt0cnl7dGhpcy5oYXNoTW9kZT90aGlzLl91cGRhdGUoTyk6dGhpcy5wdXNoKHRoaXMuX3VwZGF0ZShPKSl9Y2F0Y2goRCl7Rz1EfWZpbmFsbHl7aihHKX19LE0ucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbihPKXt2YXIgSTt0cnl7dGhpcy5wdXNoKHRoaXMuX19maW5h''@;'; put 'put ''bCgpKX1jYXRjaChqKXtJPWp9TyhJKX0sTS5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3Q9ZnVuY3Rpb24oTyl7dmFyIEk9dGhpcy5fX2ZpbmFsKCl8fG9lLmFsbG9jKDApO3JldHVybiBPJiYoST10aGlzLl90b1N0cmluZyhJLE8sITApKSxJfSxNLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rp''@;'; put 'put ''b24oTyxJLGope2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBtKEkpLHRoaXMuX2VuY29kaW5nPUkpLHRoaXMuX2VuY29kaW5nIT09SSl0aHJvdyBuZXcgRXJyb3IoImNhbid0IHN3aXRjaCBlbmNvZGluZ3MiKTt2YXIgRz10aGlzLl9kZWNvZGVyLndyaXRlKE8pO3JldHVy''@;'; put 'put ''biBqJiYoRys9dGhpcy5fZGVjb2Rlci5lbmQoKSksR30sUWUuZXhwb3J0cz1NfSwyNzYzNzooUWUsTWUsUik9PntmdW5jdGlvbiBCKFope3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoWil9TWUuaXNBcnJheT1mdW5jdGlvbiBvZShaKXtyZXR1cm4gQXJyYXkuaXNBcnJh''@;'; put 'put ''eT9BcnJheS5pc0FycmF5KFopOiJbb2JqZWN0IEFycmF5XSI9PT1CKFopfSxNZS5pc0Jvb2xlYW49ZnVuY3Rpb24geChaKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBafSxNZS5pc051bGw9ZnVuY3Rpb24gbShaKXtyZXR1cm4gbnVsbD09PVp9LE1lLmlzTnVsbE9yVW5kZWZpbmVkPWZ1bmN0''@;'; put 'put ''aW9uIHNlKFope3JldHVybiBudWxsPT1afSxNZS5pc051bWJlcj1mdW5jdGlvbiBNKFope3JldHVybiJudW1iZXIiPT10eXBlb2YgWn0sTWUuaXNTdHJpbmc9ZnVuY3Rpb24gTyhaKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIFp9LE1lLmlzU3ltYm9sPWZ1bmN0aW9uIEkoWil7cmV0dXJuInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBafSxNZS5pc1VuZGVmaW5lZD1mdW5jdGlvbiBqKFope3JldHVybiB2b2lkIDA9PT1afSxNZS5pc1JlZ0V4cD1mdW5jdGlvbiBHKFope3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09QihaKX0sTWUuaXNPYmplY3Q9ZnVuY3Rpb24gRChaKXtyZXR1cm4ib2JqZWN0Ij09''@;'; put 'put ''dHlwZW9mIFomJm51bGwhPT1afSxNZS5pc0RhdGU9ZnVuY3Rpb24gVChaKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1CKFopfSxNZS5pc0Vycm9yPWZ1bmN0aW9uIEUoWil7cmV0dXJuIltvYmplY3QgRXJyb3JdIj09PUIoWil8fFogaW5zdGFuY2VvZiBFcnJvcn0sTWUuaXNGdW5jdGlvbj1m''@;'; put 'put ''dW5jdGlvbiB6KFope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBafSxNZS5pc1ByaW1pdGl2ZT1mdW5jdGlvbiBOKFope3JldHVybiBudWxsPT09Wnx8ImJvb2xlYW4iPT10eXBlb2YgWnx8Im51bWJlciI9PXR5cGVvZiBafHwic3RyaW5nIj09dHlwZW9mIFp8fCJzeW1ib2wiPT10eXBlb2Yg''@;'; put 'put ''Wnx8dHlwZW9mIFo+InUifSxNZS5pc0J1ZmZlcj1SKDgzODM4KS5CdWZmZXIuaXNCdWZmZXJ9LDg3MzAzOihRZSxNZSxSKT0+e3ZhciBvZT1SKDkwNTE4KSx4PVIoODk2MDYpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oSSl7cmV0dXJuIG5ldyBzZShJKX07dmFyIG09e3NlY3AyNTZrMTp7bmFtZToi''@;'; put 'put ''c2VjcDI1NmsxIixieXRlTGVuZ3RoOjMyfSxzZWNwMjI0cjE6e25hbWU6InAyMjQiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6InAyNTYiLGJ5dGVMZW5ndGg6MzJ9LHByaW1lMTkydjE6e25hbWU6InAxOTIiLGJ5dGVMZW5ndGg6MjR9LGVkMjU1MTk6e25hbWU6ImVkMjU1MTki''@;'; put 'put ''LGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZToicDM4NCIsYnl0ZUxlbmd0aDo0OH0sc2VjcDUyMXIxOntuYW1lOiJwNTIxIixieXRlTGVuZ3RoOjY2fX07ZnVuY3Rpb24gc2UoTyl7dGhpcy5jdXJ2ZVR5cGU9bVtPXSx0aGlzLmN1cnZlVHlwZXx8KHRoaXMuY3VydmVUeXBlPXtuYW1l''@;'; put 'put ''Ok99KSx0aGlzLmN1cnZlPW5ldyBvZS5lYyh0aGlzLmN1cnZlVHlwZS5uYW1lKSx0aGlzLmtleXM9dm9pZCAwfWZ1bmN0aW9uIE0oTyxJLGope0FycmF5LmlzQXJyYXkoTyl8fChPPU8udG9BcnJheSgpKTt2YXIgRz1uZXcgQnVmZmVyKE8pO2lmKGomJkcubGVuZ3RoPGope3ZhciBEPW5ldyBC''@;'; put 'put ''dWZmZXIoai1HLmxlbmd0aCk7RC5maWxsKDApLEc9QnVmZmVyLmNvbmNhdChbRCxHXSl9cmV0dXJuIEk/Ry50b1N0cmluZyhJKTpHfW0ucDIyND1tLnNlY3AyMjRyMSxtLnAyNTY9bS5zZWNwMjU2cjE9bS5wcmltZTI1NnYxLG0ucDE5Mj1tLnNlY3AxOTJyMT1tLnByaW1lMTkydjEsbS5wMzg0''@;'; put 'put ''PW0uc2VjcDM4NHIxLG0ucDUyMT1tLnNlY3A1MjFyMSxzZS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKE8sSSl7cmV0dXJuIHRoaXMua2V5cz10aGlzLmN1cnZlLmdlbktleVBhaXIoKSx0aGlzLmdldFB1YmxpY0tleShPLEkpfSxzZS5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1m''@;'; put 'put ''dW5jdGlvbihPLEksail7cmV0dXJuIEk9SXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihPKXx8KE89bmV3IEJ1ZmZlcihPLEkpKSxNKHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhPKS5nZXRQdWJsaWMoKS5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpLGosdGhpcy5jdXJ2ZVR5''@;'; put 'put ''cGUuYnl0ZUxlbmd0aCl9LHNlLnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24oTyxJKXt2YXIgaj10aGlzLmtleXMuZ2V0UHVibGljKCJjb21wcmVzc2VkIj09PUksITApO3JldHVybiJoeWJyaWQiPT09SSYmKGpbMF09altqLmxlbmd0aC0xXSUyPzc6NiksTShqLE8pfSxzZS5wcm90''@;'; put 'put ''b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihPKXtyZXR1cm4gTSh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpLE8pfSxzZS5wcm90b3R5cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKE8sSSl7cmV0dXJuIEk9SXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihPKXx8KE89bmV3IEJ1ZmZlcihPLEkp''@;'; put 'put ''KSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhPKSx0aGlzfSxzZS5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihPLEkpe0k9SXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZlcihPKXx8KE89bmV3IEJ1ZmZlcihPLEkpKTt2YXIgaj1uZXcgeChPKTtyZXR1cm4gaj1qLnRvU3RyaW5nKDE2''@;'; put 'put ''KSx0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCksdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKGopLHRoaXN9fSw4OTYwNjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UseCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oVyxiKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoYnx8''@;'; put 'put ''IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBzZShXLGIpe1cuc3VwZXJfPWI7dmFyIEE9ZnVuY3Rpb24oKXt9O0EucHJvdG90eXBlPWIucHJvdG90eXBlLFcucHJvdG90eXBlPW5ldyBBLFcucHJvdG90eXBlLmNvbnN0cnVjdG9yPVd9ZnVuY3Rpb24gTShXLGIsQSl7aWYoTS5pc0JOKFcp''@;'; put 'put ''KXJldHVybiBXO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1XJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJihBPWIsYj0xMCksdGhpcy5faW5pdChXfHwwLGJ8fDEwLEF8fCJiZSIpKX12YXIgTzsib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mIG9lP29lLmV4cG9ydHM9TTp4LkJOPU0sTS5CTj1NLE0ud29yZFNpemU9MjY7dHJ5e089dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOlIoNzc5NjUpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gSShXLGIpe3ZhciBBPVcuY2hhckNv''@;'; put 'put ''ZGVBdChiKTtyZXR1cm4gQT49NjUmJkE8PTcwP0EtNTU6QT49OTcmJkE8PTEwMj9BLTg3OkEtNDgmMTV9ZnVuY3Rpb24gaihXLGIsQSl7dmFyIEY9SShXLEEpO3JldHVybiBBLTE+PWImJihGfD1JKFcsQS0xKTw8NCksRn1mdW5jdGlvbiBHKFcsYixBLEYpe2Zvcih2YXIgSD0wLGc9TWF0aC5t''@;'; put 'put ''aW4oVy5sZW5ndGgsQSksQz1iO0M8ZztDKyspe3ZhciBrPVcuY2hhckNvZGVBdChDKS00ODtIKj1GLEgrPWs+PTQ5P2stNDkrMTA6az49MTc/ay0xNysxMDprfXJldHVybiBIfU0uaXNCTj1mdW5jdGlvbihiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIE18fG51bGwhPT1iJiYib2JqZWN0Ij09dHlw''@;'; put 'put ''ZW9mIGImJmIuY29uc3RydWN0b3Iud29yZFNpemU9PT1NLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGIud29yZHMpfSxNLm1heD1mdW5jdGlvbihiLEEpe3JldHVybiBiLmNtcChBKT4wP2I6QX0sTS5taW49ZnVuY3Rpb24oYixBKXtyZXR1cm4gYi5jbXAoQSk8MD9iOkF9LE0ucHJvdG90eXBl''@;'; put 'put ''Ll9pbml0PWZ1bmN0aW9uKGIsQSxGKXtpZigibnVtYmVyIj09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoYixBLEYpO2lmKCJvYmplY3QiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdEFycmF5KGIsQSxGKTsiaGV4Ij09PUEmJihBPTE2KSxtKEE9PT0oMHxBKSYmQT49MiYm''@;'; put 'put ''QTw9MzYpO3ZhciBIPTA7Ii0iPT09KGI9Yi50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihIKyssdGhpcy5uZWdhdGl2ZT0xKSxIPGIubGVuZ3RoJiYoMTY9PT1BP3RoaXMuX3BhcnNlSGV4KGIsSCxGKToodGhpcy5fcGFyc2VCYXNlKGIsQSxIKSwibGUiPT09RiYmdGhpcy5f''@;'; put 'put ''aW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEEsRikpKX0sTS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oYixBLEYpe2I8MCYmKHRoaXMubmVnYXRpdmU9MSxiPS1iKSxiPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiXSx0aGlzLmxlbmd0aD0xKTpiPDQ1MDM1OTk2Mjcz''@;'; put 'put ''NzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG0oYjw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PUYmJnRoaXMu''@;'; put 'put ''X2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxBLEYpfSxNLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGIsQSxGKXtpZihtKCJudW1iZXIiPT10eXBlb2YgYi5sZW5ndGgpLGIubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5n''@;'; put 'put ''dGg9TWF0aC5jZWlsKGIubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEg9MDtIPHRoaXMubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPTA7dmFyIGcsQyxrPTA7aWYoImJlIj09PUYpZm9yKEg9Yi5sZW5ndGgtMSxnPTA7SD49MDtILT0zKXRoaXMu''@;'; put 'put ''d29yZHNbZ118PShDPWJbSF18YltILTFdPDw4fGJbSC0yXTw8MTYpPDxrJjY3MTA4ODYzLHRoaXMud29yZHNbZysxXT1DPj4+MjYtayY2NzEwODg2Mywoays9MjQpPj0yNiYmKGstPTI2LGcrKyk7ZWxzZSBpZigibGUiPT09Rilmb3IoSD0wLGc9MDtIPGIubGVuZ3RoO0grPTMpdGhpcy53b3Jk''@;'; put 'put ''c1tnXXw9KEM9YltIXXxiW0grMV08PDh8YltIKzJdPDwxNik8PGsmNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1rJjY3MTA4ODYzLChrKz0yNCk+PTI2JiYoay09MjYsZysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oYixBLEYp''@;'; put 'put ''e3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoYi5sZW5ndGgtQSkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgSD0wO0g8dGhpcy5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09MDt2YXIgayxnPTAsQz0wO2lmKCJiZSI9PT1GKWZvcihIPWIubGVuZ3RoLTE7SD49''@;'; put 'put ''QTtILT0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMmayxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9az4+PjI2KTpnKz04O2Vsc2UgZm9yKEg9KGIubGVuZ3RoLUEpJTI9PTA/QSsxOkE7SDxiLmxlbmd0aDtIKz0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jk''@;'; put 'put ''c1tDXXw9NjcxMDg4NjMmayxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9az4+PjI2KTpnKz04O3RoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihiLEEsRil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIEg9MCxnPTE7Zzw9Njcx''@;'; put 'put ''MDg4NjM7Zyo9QSlIKys7SC0tLGc9Zy9BfDA7Zm9yKHZhciBDPWIubGVuZ3RoLUYsaz1DJUgsXz1NYXRoLm1pbihDLEMtaykrRixwPTAsdz1GO3c8Xzt3Kz1IKXA9RyhiLHcsdytILEEpLHRoaXMuaW11bG4oZyksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhp''@;'; put 'put ''cy5faWFkZG4ocCk7aWYoMCE9PWspe3ZhciBLPTE7Zm9yKHA9RyhiLHcsYi5sZW5ndGgsQSksdz0wO3c8azt3KyspSyo9QTt0aGlzLmltdWxuKEspLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApfXRoaXMuc3RyaXAoKX0sTS5wcm90b3R5''@;'; put 'put ''cGUuY29weT1mdW5jdGlvbihiKXtiLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBBPTA7QTx0aGlzLmxlbmd0aDtBKyspYi53b3Jkc1tBXT10aGlzLndvcmRzW0FdO2IubGVuZ3RoPXRoaXMubGVuZ3RoLGIubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxiLnJlZD10aGlzLnJl''@;'; put 'put ''ZH0sTS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgTShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGIpLGJ9LE0ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9''@;'; put 'put ''LE0ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10''@;'; put 'put ''aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LE0ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIEQ9WyIiLCIwIiwiMDAiLCIw''@;'; put 'put ''MDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVD1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxFPVswLDAsMzM1NTQ0MzIsNDMwNDY3''@;'; put 'put ''MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQz''@;'; put 'put ''NjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIE4oVyxiLEEpe0EubmVnYXRpdmU9Yi5uZWdhdGl2ZV5XLm5lZ2F0''@;'; put 'put ''aXZlO3ZhciBGPVcubGVuZ3RoK2IubGVuZ3RofDA7QS5sZW5ndGg9RixGPUYtMXwwO3ZhciBIPTB8Vy53b3Jkc1swXSxnPTB8Yi53b3Jkc1swXSxDPUgqZyxfPUMvNjcxMDg4NjR8MDtBLndvcmRzWzBdPTY3MTA4ODYzJkM7Zm9yKHZhciBwPTE7cDxGO3ArKyl7Zm9yKHZhciB3PV8+Pj4yNixL''@;'; put 'put ''PTY3MTA4ODYzJl8sdGU9TWF0aC5taW4ocCxiLmxlbmd0aC0xKSxjZT1NYXRoLm1heCgwLHAtVy5sZW5ndGgrMSk7Y2U8PXRlO2NlKyspdys9KEM9KEg9MHxXLndvcmRzW3AtY2V8MF0pKihnPTB8Yi53b3Jkc1tjZV0pK0spLzY3MTA4ODY0fDAsSz02NzEwODg2MyZDO0Eud29yZHNbcF09MHxL''@;'; put 'put ''LF89MHx3fXJldHVybiAwIT09Xz9BLndvcmRzW3BdPTB8XzpBLmxlbmd0aC0tLEEuc3RyaXAoKX1NLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihiLEEpe3ZhciBGO2lmKEE9MHxBfHwxLDE2PT09KGI9Ynx8MTApfHwiaGV4Ij09PWIpe0Y9IiI7Zm9yKHZhciBIPTAsZz0wLEM9MDtDPHRo''@;'; put 'put ''aXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy53b3Jkc1tDXSxfPSgxNjc3NzIxNSYoazw8SHxnKSkudG9TdHJpbmcoMTYpO0Y9MCE9KGc9az4+PjI0LUgmMTY3NzcyMTUpfHxDIT09dGhpcy5sZW5ndGgtMT9EWzYtXy5sZW5ndGhdK18rRjpfK0YsKEgrPTIpPj0yNiYmKEgtPTI2LEMtLSl9Zm9y''@;'; put 'put ''KDAhPT1nJiYoRj1nLnRvU3RyaW5nKDE2KStGKTtGLmxlbmd0aCVBIT0wOylGPSIwIitGO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9aWYoYj09PSgwfGIpJiZiPj0yJiZiPD0zNil7dmFyIHA9VFtiXSx3PUVbYl07Rj0iIjt2YXIgSz10aGlzLmNsb25lKCk7Zm9yKEsu''@;'; put 'put ''bmVnYXRpdmU9MDshSy5pc1plcm8oKTspe3ZhciB0ZT1LLm1vZG4odykudG9TdHJpbmcoYik7Rj0oSz1LLmlkaXZuKHcpKS5pc1plcm8oKT90ZStGOkRbcC10ZS5sZW5ndGhdK3RlK0Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihGPSIwIitGKTtGLmxlbmd0aCVBIT0wOylGPSIwIitGO3JldHVybiAw''@;'; put 'put ''IT09dGhpcy5uZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9bSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxNLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9iKz02NzEwODg2NCp0aGlzLndv''@;'; put 'put ''cmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Yis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm0oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlPy1iOmJ9LE0ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sTS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oYixBKXtyZXR1cm4gbSh0eXBlb2YgTzwidSIpLHRoaXMudG9BcnJheUxpa2UoTyxiLEEpfSxNLnByb3RvdHlwZS50b0Fy''@;'; put 'put ''cmF5PWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksYixBKX0sTS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPXRoaXMuYnl0ZUxlbmd0aCgpLGc9Rnx8TWF0aC5tYXgoMSxIKTttKEg8PWcsImJ5dGUgYXJyYXkgbG9uZ2VyIHRo''@;'; put 'put ''YW4gZGVzaXJlZCBsZW5ndGgiKSxtKGc+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBfLHAsQz0ibGUiPT09QSxrPW5ldyBiKGcpLHc9dGhpcy5jbG9uZSgpO2lmKEMpe2ZvcihwPTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVz''@;'; put 'put ''aHJuKDgpLGtbcF09Xztmb3IoO3A8ZztwKyspa1twXT0wfWVsc2V7Zm9yKHA9MDtwPGctSDtwKyspa1twXT0wO2ZvcihwPTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVzaHJuKDgpLGtbZy1wLTFdPV99cmV0dXJuIGt9LE0ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5j''@;'; put 'put ''bHozMj9mdW5jdGlvbihiKXtyZXR1cm4gMzItTWF0aC5jbHozMihiKX06ZnVuY3Rpb24oYil7dmFyIEE9YixGPTA7cmV0dXJuIEE+PTQwOTYmJihGKz0xMyxBPj4+PTEzKSxBPj02NCYmKEYrPTcsQT4+Pj03KSxBPj04JiYoRis9NCxBPj4+PTQpLEE+PTImJihGKz0yLEE+Pj49MiksRitBfSxN''@;'; put 'put ''LnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oYil7aWYoMD09PWIpcmV0dXJuIDI2O3ZhciBBPWIsRj0wO3JldHVybiA4MTkxJkF8fChGKz0xMyxBPj4+PTEzKSwxMjcmQXx8KEYrPTcsQT4+Pj03KSwxNSZBfHwoRis9NCxBPj4+PTQpLDMmQXx8KEYrPTIsQT4+Pj0yKSwxJkF8fEYrKyxG''@;'; put 'put ''fSxNLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStBfSxNLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIDA7Zm9yKHZhciBiPTAsQT0wO0E8dGhpcy5sZW5ndGg7QSsrKXt2YXIgRj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0FdKTtpZihiKz1GLDI2IT09RilicmVha31yZXR1cm4gYn0sTS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5i''@;'; put 'put ''aXRMZW5ndGgoKS84KX0sTS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGIpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGVzdG4o''@;'; put 'put ''Yi0xKT90aGlzLm5vdG4oYikuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE0ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxNLnByb3Rv''@;'; put 'put ''dHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxNLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8Yi5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEE9MDtB''@;'; put 'put ''PGIubGVuZ3RoO0ErKyl0aGlzLndvcmRzW0FdPXRoaXMud29yZHNbQV18Yi53b3Jkc1tBXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1b3IoYil9LE0ucHJvdG90eXBl''@;'; put 'put ''Lm9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGIpOmIuY2xvbmUoKS5pb3IodGhpcyl9LE0ucHJvdG90eXBlLnVvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoYik6Yi5j''@;'; put 'put ''bG9uZSgpLml1b3IodGhpcyl9LE0ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGIpe3ZhciBBO0E9dGhpcy5sZW5ndGg+Yi5sZW5ndGg/Yjp0aGlzO2Zvcih2YXIgRj0wO0Y8QS5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09dGhpcy53b3Jkc1tGXSZiLndvcmRzW0ZdO3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD1BLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5kKGIpfSxNLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3Ro''@;'; put 'put ''P3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxNLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxNLnByb3RvdHlwZS5pdXhvcj1m''@;'; put 'put ''dW5jdGlvbihiKXt2YXIgQSxGO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhBPXRoaXMsRj1iKTooQT1iLEY9dGhpcyk7Zm9yKHZhciBIPTA7SDxGLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT1BLndvcmRzW0hdXkYud29yZHNbSF07aWYodGhpcyE9PUEpZm9yKDtIPEEubGVuZ3RoO0grKyl0aGlz''@;'; put 'put ''LndvcmRzW0hdPUEud29yZHNbSF07cmV0dXJuIHRoaXMubGVuZ3RoPUEubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gbSghKHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoYil9LE0ucHJvdG90eXBlLnhvcj1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoYik6Yi5jbG9uZSgpLml4b3IodGhpcyl9LE0ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihiKTpiLmNsb25l''@;'; put 'put ''KCkuaXV4b3IodGhpcyl9LE0ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT0wfE1hdGguY2VpbChiLzI2KSxGPWIlMjY7dGhpcy5fZXhwYW5kKEEpLEY+MCYmQS0tO2Zvcih2YXIgSD0wO0g8QTtIKyspdGhpcy53b3Jkc1tIXT02''@;'; put 'put ''NzEwODg2MyZ+dGhpcy53b3Jkc1tIXTtyZXR1cm4gRj4wJiYodGhpcy53b3Jkc1tIXT1+dGhpcy53b3Jkc1tIXSY2NzEwODg2Mz4+MjYtRiksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oYil9LE0ucHJvdG90eXBl''@;'; put 'put ''LnNldG49ZnVuY3Rpb24oYixBKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEY9Yi8yNnwwLEg9YiUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKEYrMSksdGhpcy53b3Jkc1tGXT1BP3RoaXMud29yZHNbRl18MTw8SDp0aGlzLndvcmRzW0ZdJn4oMTw8SCksdGhpcy5zdHJpcCgpfSxN''@;'; put 'put ''LnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIpe3ZhciBBLEYsSDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxBPXRoaXMuaXN1YihiKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRp''@;'; put 'put ''dmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiBiLm5lZ2F0aXZlPTAsQT10aGlzLmlzdWIoYiksYi5uZWdhdGl2ZT0xLEEuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Yi5sZW5ndGg/KEY9dGhpcyxIPWIpOihGPWIsSD10aGlzKTtmb3IodmFyIGc9MCxDPTA7QzxILmxlbmd0aDtDKyspdGhpcy53''@;'; put 'put ''b3Jkc1tDXT02NzEwODg2MyYoQT0oMHxGLndvcmRzW0NdKSsoMHxILndvcmRzW0NdKStnKSxnPUE+Pj4yNjtmb3IoOzAhPT1nJiZDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJihBPSgwfEYud29yZHNbQ10pK2cpLGc9QT4+PjI2O2lmKHRoaXMubGVuZ3RoPUYubGVuZ3Ro''@;'; put 'put ''LDAhPT1nKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWcsdGhpcy5sZW5ndGgrKztlbHNlIGlmKEYhPT10aGlzKWZvcig7QzxGLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT1GLndvcmRzW0NdO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYil7dmFyIEE7cmV0dXJuIDAh''@;'; put 'put ''PT1iLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oYi5uZWdhdGl2ZT0wLEE9dGhpcy5zdWIoYiksYi5uZWdhdGl2ZV49MSxBKTowPT09Yi5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxBPWIuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxBKTp0aGlz''@;'; put 'put ''Lmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChiKTpiLmNsb25lKCkuaWFkZCh0aGlzKX0sTS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiKXtpZigwIT09Yi5uZWdhdGl2ZSl7Yi5uZWdhdGl2ZT0wO3ZhciBBPXRoaXMuaWFkZChiKTtyZXR1cm4gYi5uZWdhdGl2ZT0xLEEuX25v''@;'; put 'put ''cm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIEgsZyxGPXRoaXMuY21wKGIpO2lmKDA9PT1GKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9''@;'; put 'put ''MSx0aGlzLndvcmRzWzBdPTAsdGhpcztGPjA/KEg9dGhpcyxnPWIpOihIPWIsZz10aGlzKTtmb3IodmFyIEM9MCxrPTA7azxnLmxlbmd0aDtrKyspQz0oQT0oMHxILndvcmRzW2tdKS0oMHxnLndvcmRzW2tdKStDKT4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZBO2Zvcig7MCE9PUMmJms8''@;'; put 'put ''SC5sZW5ndGg7aysrKUM9KEE9KDB8SC53b3Jkc1trXSkrQyk+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmQTtpZigwPT09QyYmazxILmxlbmd0aCYmSCE9PXRoaXMpZm9yKDtrPEgubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPUgud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgu''@;'; put 'put ''bWF4KHRoaXMubGVuZ3RoLGspLEghPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoYil9O3ZhciBCPWZ1bmN0aW9uKGIsQSxGKXt2YXIgXyxwLHcsSD1iLndvcmRzLGc9QS53''@;'; put 'put ''b3JkcyxDPUYud29yZHMsaz0wLEs9MHxIWzBdLHRlPTgxOTEmSyxjZT1LPj4+MTMsaGU9MHxIWzFdLFNlPTgxOTEmaGUsTGU9aGU+Pj4xMyxIZT0wfEhbMl0seGU9ODE5MSZIZSxEZT1IZT4+PjEzLEJlPTB8SFszXSxHZT04MTkxJkJlLFVlPUJlPj4+MTMscWU9MHxIWzRdLG90PTgxOTEmcWUs''@;'; put 'put ''RmU9cWU+Pj4xMyx3ZT0wfEhbNV0sRWU9ODE5MSZ3ZSxJZT13ZT4+PjEzLFhlPTB8SFs2XSx0dD04MTkxJlhlLFplPVhlPj4+MTMsY3Q9MHxIWzddLGtlPTgxOTEmY3QsQWU9Y3Q+Pj4xMyxqZT0wfEhbOF0saXQ9ODE5MSZqZSxzdD1qZT4+PjEzLHh0PTB8SFs5XSxGdD04MTkxJnh0LE90PXh0''@;'; put 'put ''Pj4+MTMsS3Q9MHxnWzBdLGJuPTgxOTEmS3QsQnQ9S3Q+Pj4xMyx5bj0wfGdbMV0sTm49ODE5MSZ5bixubj15bj4+PjEzLEduPTB8Z1syXSxZbj04MTkxJkduLGZ0PUduPj4+MTMsZG49MHxnWzNdLGhuPTgxOTEmZG4sd3Q9ZG4+Pj4xMyxqdD0wfGdbNF0sbXQ9ODE5MSZqdCxIdD1qdD4+PjEz''@;'; put 'put ''LHBuPTB8Z1s1XSxudD04MTkxJnBuLEV0PXBuPj4+MTMsZW49MHxnWzZdLFR0PTgxOTEmZW4seXQ9ZW4+Pj4xMywkdD0wfGdbN10seG49ODE5MSYkdCx6dD0kdD4+PjEzLF9uPTB8Z1s4XSxPbj04MTkxJl9uLHJuPV9uPj4+MTMsUG49MHxnWzldLENuPTgxOTEmUG4sWHQ9UG4+Pj4xMztGLm5l''@;'; put 'put ''Z2F0aXZlPWIubmVnYXRpdmVeQS5uZWdhdGl2ZSxGLmxlbmd0aD0xOTt2YXIgSm49KGsrKF89TWF0aC5pbXVsKHRlLGJuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bCh0ZSxCdCkpK01hdGguaW11bChjZSxibil8MCkpPDwxMyl8MDtrPSgodz1NYXRoLmltdWwoY2UsQnQpKSsocD4+PjEz''@;'; put 'put ''KXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoU2UsYm4pLHA9KHA9TWF0aC5pbXVsKFNlLEJ0KSkrTWF0aC5pbXVsKExlLGJuKXwwLHc9TWF0aC5pbXVsKExlLEJ0KTt2YXIgeGk9KGsrKF89XytNYXRoLmltdWwodGUsTm4pfDApfDApKygoODE5MSYocD0ocD1wK01h''@;'; put 'put ''dGguaW11bCh0ZSxubil8MCkrTWF0aC5pbXVsKGNlLE5uKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLG5uKXwwKSsocD4+PjEzKXwwKSsoeGk+Pj4yNil8MCx4aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoeGUsYm4pLHA9KHA9TWF0aC5pbXVsKHhlLEJ0KSkrTWF0aC5pbXVsKERl''@;'; put 'put ''LGJuKXwwLHc9TWF0aC5pbXVsKERlLEJ0KSxfPV8rTWF0aC5pbXVsKFNlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoU2Usbm4pfDApK01hdGguaW11bChMZSxObil8MCx3PXcrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbj0oaysoXz1fK01hdGguaW11bCh0ZSxZbil8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKHRlLGZ0KXwwKStNYXRoLmltdWwoY2UsWW4pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsZnQpfDApKyhwPj4+MTMpfDApKyhhbj4+PjI2KXwwLGFuJj02NzEwODg2MyxfPU1hdGguaW11bChHZSxibikscD0ocD1NYXRoLmltdWwoR2UsQnQpKStNYXRo''@;'; put 'put ''LmltdWwoVWUsYm4pfDAsdz1NYXRoLmltdWwoVWUsQnQpLF89XytNYXRoLmltdWwoeGUsTm4pfDAscD0ocD1wK01hdGguaW11bCh4ZSxubil8MCkrTWF0aC5pbXVsKERlLE5uKXwwLHc9dytNYXRoLmltdWwoRGUsbm4pfDAsXz1fK01hdGguaW11bChTZSxZbil8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KFNlLGZ0KXwwKStNYXRoLmltdWwoTGUsWW4pfDAsdz13K01hdGguaW11bChMZSxmdCl8MDt2YXIgdG49KGsrKF89XytNYXRoLmltdWwodGUsaG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx3dCl8MCkrTWF0aC5pbXVsKGNlLGhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0''@;'; put 'put ''aC5pbXVsKGNlLHd0KXwwKSsocD4+PjEzKXwwKSsodG4+Pj4yNil8MCx0biY9NjcxMDg4NjMsXz1NYXRoLmltdWwob3QsYm4pLHA9KHA9TWF0aC5pbXVsKG90LEJ0KSkrTWF0aC5pbXVsKEZlLGJuKXwwLHc9TWF0aC5pbXVsKEZlLEJ0KSxfPV8rTWF0aC5pbXVsKEdlLE5uKXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoR2Usbm4pfDApK01hdGguaW11bChVZSxObil8MCx3PXcrTWF0aC5pbXVsKFVlLG5uKXwwLF89XytNYXRoLmltdWwoeGUsWW4pfDAscD0ocD1wK01hdGguaW11bCh4ZSxmdCl8MCkrTWF0aC5pbXVsKERlLFluKXwwLHc9dytNYXRoLmltdWwoRGUsZnQpfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChTZSxobil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHd0KXwwKStNYXRoLmltdWwoTGUsaG4pfDAsdz13K01hdGguaW11bChMZSx3dCl8MDt2YXIgdWk9KGsrKF89XytNYXRoLmltdWwodGUsbXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxIdCl8MCkrTWF0aC5pbXVsKGNl''@;'; put 'put ''LG10KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLEh0KXwwKSsocD4+PjEzKXwwKSsodWk+Pj4yNil8MCx1aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRWUsYm4pLHA9KHA9TWF0aC5pbXVsKEVlLEJ0KSkrTWF0aC5pbXVsKEllLGJuKXwwLHc9TWF0aC5pbXVsKEllLEJ0KSxfPV8r''@;'; put 'put ''TWF0aC5pbXVsKG90LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwob3Qsbm4pfDApK01hdGguaW11bChGZSxObil8MCx3PXcrTWF0aC5pbXVsKEZlLG5uKXwwLF89XytNYXRoLmltdWwoR2UsWW4pfDAscD0ocD1wK01hdGguaW11bChHZSxmdCl8MCkrTWF0aC5pbXVsKFVlLFluKXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoVWUsZnQpfDAsXz1fK01hdGguaW11bCh4ZSxobil8MCxwPShwPXArTWF0aC5pbXVsKHhlLHd0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsdz13K01hdGguaW11bChEZSx3dCl8MCxfPV8rTWF0aC5pbXVsKFNlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsSHQpfDApK01hdGguaW11''@;'; put 'put ''bChMZSxtdCl8MCx3PXcrTWF0aC5pbXVsKExlLEh0KXwwO3ZhciBBcj0oaysoXz1fK01hdGguaW11bCh0ZSxudCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLEV0KXwwKStNYXRoLmltdWwoY2UsbnQpfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsRXQpfDApKyhw''@;'; put 'put ''Pj4+MTMpfDApKyhBcj4+PjI2KXwwLEFyJj02NzEwODg2MyxfPU1hdGguaW11bCh0dCxibikscD0ocD1NYXRoLmltdWwodHQsQnQpKStNYXRoLmltdWwoWmUsYm4pfDAsdz1NYXRoLmltdWwoWmUsQnQpLF89XytNYXRoLmltdWwoRWUsTm4pfDAscD0ocD1wK01hdGguaW11bChFZSxubil8MCkr''@;'; put 'put ''TWF0aC5pbXVsKEllLE5uKXwwLHc9dytNYXRoLmltdWwoSWUsbm4pfDAsXz1fK01hdGguaW11bChvdCxZbil8MCxwPShwPXArTWF0aC5pbXVsKG90LGZ0KXwwKStNYXRoLmltdWwoRmUsWW4pfDAsdz13K01hdGguaW11bChGZSxmdCl8MCxfPV8rTWF0aC5pbXVsKEdlLGhuKXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoR2Usd3QpfDApK01hdGguaW11bChVZSxobil8MCx3PXcrTWF0aC5pbXVsKFVlLHd0KXwwLF89XytNYXRoLmltdWwoeGUsbXQpfDAscD0ocD1wK01hdGguaW11bCh4ZSxIdCl8MCkrTWF0aC5pbXVsKERlLG10KXwwLHc9dytNYXRoLmltdWwoRGUsSHQpfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChTZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLEV0KXwwKStNYXRoLmltdWwoTGUsbnQpfDAsdz13K01hdGguaW11bChMZSxFdCl8MDt2YXIgaHI9KGsrKF89XytNYXRoLmltdWwodGUsVHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx5dCl8MCkrTWF0aC5pbXVsKGNl''@;'; put 'put ''LFR0KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHl0KXwwKSsocD4+PjEzKXwwKSsoaHI+Pj4yNil8MCxociY9NjcxMDg4NjMsXz1NYXRoLmltdWwoa2UsYm4pLHA9KHA9TWF0aC5pbXVsKGtlLEJ0KSkrTWF0aC5pbXVsKEFlLGJuKXwwLHc9TWF0aC5pbXVsKEFlLEJ0KSxfPV8r''@;'; put 'put ''TWF0aC5pbXVsKHR0LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsbm4pfDApK01hdGguaW11bChaZSxObil8MCx3PXcrTWF0aC5pbXVsKFplLG5uKXwwLF89XytNYXRoLmltdWwoRWUsWW4pfDAscD0ocD1wK01hdGguaW11bChFZSxmdCl8MCkrTWF0aC5pbXVsKEllLFluKXwwLHc9dytNYXRo''@;'; put 'put ''LmltdWwoSWUsZnQpfDAsXz1fK01hdGguaW11bChvdCxobil8MCxwPShwPXArTWF0aC5pbXVsKG90LHd0KXwwKStNYXRoLmltdWwoRmUsaG4pfDAsdz13K01hdGguaW11bChGZSx3dCl8MCxfPV8rTWF0aC5pbXVsKEdlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsSHQpfDApK01hdGguaW11''@;'; put 'put ''bChVZSxtdCl8MCx3PXcrTWF0aC5pbXVsKFVlLEh0KXwwLF89XytNYXRoLmltdWwoeGUsbnQpfDAscD0ocD1wK01hdGguaW11bCh4ZSxFdCl8MCkrTWF0aC5pbXVsKERlLG50KXwwLHc9dytNYXRoLmltdWwoRGUsRXQpfDAsXz1fK01hdGguaW11bChTZSxUdCl8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KFNlLHl0KXwwKStNYXRoLmltdWwoTGUsVHQpfDAsdz13K01hdGguaW11bChMZSx5dCl8MDt2YXIgZGk9KGsrKF89XytNYXRoLmltdWwodGUseG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx6dCl8MCkrTWF0aC5pbXVsKGNlLHhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0''@;'; put 'put ''aC5pbXVsKGNlLHp0KXwwKSsocD4+PjEzKXwwKSsoZGk+Pj4yNil8MCxkaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoaXQsYm4pLHA9KHA9TWF0aC5pbXVsKGl0LEJ0KSkrTWF0aC5pbXVsKHN0LGJuKXwwLHc9TWF0aC5pbXVsKHN0LEJ0KSxfPV8rTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtN''@;'; put 'put ''YXRoLmltdWwoa2Usbm4pfDApK01hdGguaW11bChBZSxObil8MCx3PXcrTWF0aC5pbXVsKEFlLG5uKXwwLF89XytNYXRoLmltdWwodHQsWW4pfDAscD0ocD1wK01hdGguaW11bCh0dCxmdCl8MCkrTWF0aC5pbXVsKFplLFluKXwwLHc9dytNYXRoLmltdWwoWmUsZnQpfDAsXz1fK01hdGguaW11''@;'; put 'put ''bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHd0KXwwKStNYXRoLmltdWwoSWUsaG4pfDAsdz13K01hdGguaW11bChJZSx3dCl8MCxfPV8rTWF0aC5pbXVsKG90LG10KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsSHQpfDApK01hdGguaW11bChGZSxtdCl8MCx3PXcrTWF0aC5pbXVsKEZl''@;'; put 'put ''LEh0KXwwLF89XytNYXRoLmltdWwoR2UsbnQpfDAscD0ocD1wK01hdGguaW11bChHZSxFdCl8MCkrTWF0aC5pbXVsKFVlLG50KXwwLHc9dytNYXRoLmltdWwoVWUsRXQpfDAsXz1fK01hdGguaW11bCh4ZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKHhlLHl0KXwwKStNYXRoLmltdWwoRGUsVHQp''@;'; put 'put ''fDAsdz13K01hdGguaW11bChEZSx5dCl8MCxfPV8rTWF0aC5pbXVsKFNlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsenQpfDApK01hdGguaW11bChMZSx4bil8MCx3PXcrTWF0aC5pbXVsKExlLHp0KXwwO3ZhciBmaT0oaysoXz1fK01hdGguaW11bCh0ZSxPbil8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKHRlLHJuKXwwKStNYXRoLmltdWwoY2UsT24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2Uscm4pfDApKyhwPj4+MTMpfDApKyhmaT4+PjI2KXwwLGZpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxibikscD0ocD1NYXRoLmltdWwoRnQsQnQpKStNYXRo''@;'; put 'put ''LmltdWwoT3QsYm4pfDAsdz1NYXRoLmltdWwoT3QsQnQpLF89XytNYXRoLmltdWwoaXQsTm4pfDAscD0ocD1wK01hdGguaW11bChpdCxubil8MCkrTWF0aC5pbXVsKHN0LE5uKXwwLHc9dytNYXRoLmltdWwoc3Qsbm4pfDAsXz1fK01hdGguaW11bChrZSxZbil8MCxwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KGtlLGZ0KXwwKStNYXRoLmltdWwoQWUsWW4pfDAsdz13K01hdGguaW11bChBZSxmdCl8MCxfPV8rTWF0aC5pbXVsKHR0LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsd3QpfDApK01hdGguaW11bChaZSxobil8MCx3PXcrTWF0aC5pbXVsKFplLHd0KXwwLF89XytNYXRoLmltdWwoRWUsbXQp''@;'; put 'put ''fDAscD0ocD1wK01hdGguaW11bChFZSxIdCl8MCkrTWF0aC5pbXVsKEllLG10KXwwLHc9dytNYXRoLmltdWwoSWUsSHQpfDAsXz1fK01hdGguaW11bChvdCxudCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEV0KXwwKStNYXRoLmltdWwoRmUsbnQpfDAsdz13K01hdGguaW11bChGZSxFdCl8MCxf''@;'; put 'put ''PV8rTWF0aC5pbXVsKEdlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UseXQpfDApK01hdGguaW11bChVZSxUdCl8MCx3PXcrTWF0aC5pbXVsKFVlLHl0KXwwLF89XytNYXRoLmltdWwoeGUseG4pfDAscD0ocD1wK01hdGguaW11bCh4ZSx6dCl8MCkrTWF0aC5pbXVsKERlLHhuKXwwLHc9dytN''@;'; put 'put ''YXRoLmltdWwoRGUsenQpfDAsXz1fK01hdGguaW11bChTZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHJuKXwwKStNYXRoLmltdWwoTGUsT24pfDAsdz13K01hdGguaW11bChMZSxybil8MDt2YXIgaG89KGsrKF89XytNYXRoLmltdWwodGUsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01h''@;'; put 'put ''dGguaW11bCh0ZSxYdCl8MCkrTWF0aC5pbXVsKGNlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLFh0KXwwKSsocD4+PjEzKXwwKSsoaG8+Pj4yNil8MCxobyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsTm4pLHA9KHA9TWF0aC5pbXVsKEZ0LG5uKSkrTWF0aC5pbXVsKE90''@;'; put 'put ''LE5uKXwwLHc9TWF0aC5pbXVsKE90LG5uKSxfPV8rTWF0aC5pbXVsKGl0LFluKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsZnQpfDApK01hdGguaW11bChzdCxZbil8MCx3PXcrTWF0aC5pbXVsKHN0LGZ0KXwwLF89XytNYXRoLmltdWwoa2UsaG4pfDAscD0ocD1wK01hdGguaW11bChrZSx3dCl8''@;'; put 'put ''MCkrTWF0aC5pbXVsKEFlLGhuKXwwLHc9dytNYXRoLmltdWwoQWUsd3QpfDAsXz1fK01hdGguaW11bCh0dCxtdCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LEh0KXwwKStNYXRoLmltdWwoWmUsbXQpfDAsdz13K01hdGguaW11bChaZSxIdCl8MCxfPV8rTWF0aC5pbXVsKEVlLG50KXwwLHA9KHA9''@;'; put 'put ''cCtNYXRoLmltdWwoRWUsRXQpfDApK01hdGguaW11bChJZSxudCl8MCx3PXcrTWF0aC5pbXVsKEllLEV0KXwwLF89XytNYXRoLmltdWwob3QsVHQpfDAscD0ocD1wK01hdGguaW11bChvdCx5dCl8MCkrTWF0aC5pbXVsKEZlLFR0KXwwLHc9dytNYXRoLmltdWwoRmUseXQpfDAsXz1fK01hdGgu''@;'; put 'put ''aW11bChHZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHp0KXwwKStNYXRoLmltdWwoVWUseG4pfDAsdz13K01hdGguaW11bChVZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHhlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUscm4pfDApK01hdGguaW11bChEZSxPbil8MCx3PXcrTWF0aC5pbXVs''@;'; put 'put ''KERlLHJuKXwwO3ZhciBicj0oaysoXz1fK01hdGguaW11bChTZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFNlLFh0KXwwKStNYXRoLmltdWwoTGUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoTGUsWHQpfDApKyhwPj4+MTMpfDApKyhicj4+PjI2KXwwLGJy''@;'; put 'put ''Jj02NzEwODg2MyxfPU1hdGguaW11bChGdCxZbikscD0ocD1NYXRoLmltdWwoRnQsZnQpKStNYXRoLmltdWwoT3QsWW4pfDAsdz1NYXRoLmltdWwoT3QsZnQpLF89XytNYXRoLmltdWwoaXQsaG4pfDAscD0ocD1wK01hdGguaW11bChpdCx3dCl8MCkrTWF0aC5pbXVsKHN0LGhuKXwwLHc9dytN''@;'; put 'put ''YXRoLmltdWwoc3Qsd3QpfDAsXz1fK01hdGguaW11bChrZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEh0KXwwKStNYXRoLmltdWwoQWUsbXQpfDAsdz13K01hdGguaW11bChBZSxIdCl8MCxfPV8rTWF0aC5pbXVsKHR0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwodHQsRXQpfDApK01hdGgu''@;'; put 'put ''aW11bChaZSxudCl8MCx3PXcrTWF0aC5pbXVsKFplLEV0KXwwLF89XytNYXRoLmltdWwoRWUsVHQpfDAscD0ocD1wK01hdGguaW11bChFZSx5dCl8MCkrTWF0aC5pbXVsKEllLFR0KXwwLHc9dytNYXRoLmltdWwoSWUseXQpfDAsXz1fK01hdGguaW11bChvdCx4bil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKG90LHp0KXwwKStNYXRoLmltdWwoRmUseG4pfDAsdz13K01hdGguaW11bChGZSx6dCl8MCxfPV8rTWF0aC5pbXVsKEdlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Uscm4pfDApK01hdGguaW11bChVZSxPbil8MCx3PXcrTWF0aC5pbXVsKFVlLHJuKXwwO3ZhciBMaT0oaysoXz1fK01h''@;'; put 'put ''dGguaW11bCh4ZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHhlLFh0KXwwKStNYXRoLmltdWwoRGUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRGUsWHQpfDApKyhwPj4+MTMpfDApKyhMaT4+PjI2KXwwLExpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxo''@;'; put 'put ''bikscD0ocD1NYXRoLmltdWwoRnQsd3QpKStNYXRoLmltdWwoT3QsaG4pfDAsdz1NYXRoLmltdWwoT3Qsd3QpLF89XytNYXRoLmltdWwoaXQsbXQpfDAscD0ocD1wK01hdGguaW11bChpdCxIdCl8MCkrTWF0aC5pbXVsKHN0LG10KXwwLHc9dytNYXRoLmltdWwoc3QsSHQpfDAsXz1fK01hdGgu''@;'; put 'put ''aW11bChrZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEV0KXwwKStNYXRoLmltdWwoQWUsbnQpfDAsdz13K01hdGguaW11bChBZSxFdCl8MCxfPV8rTWF0aC5pbXVsKHR0LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQseXQpfDApK01hdGguaW11bChaZSxUdCl8MCx3PXcrTWF0aC5pbXVs''@;'; put 'put ''KFplLHl0KXwwLF89XytNYXRoLmltdWwoRWUseG4pfDAscD0ocD1wK01hdGguaW11bChFZSx6dCl8MCkrTWF0aC5pbXVsKEllLHhuKXwwLHc9dytNYXRoLmltdWwoSWUsenQpfDAsXz1fK01hdGguaW11bChvdCxPbil8MCxwPShwPXArTWF0aC5pbXVsKG90LHJuKXwwKStNYXRoLmltdWwoRmUs''@;'; put 'put ''T24pfDAsdz13K01hdGguaW11bChGZSxybil8MDt2YXIgbG89KGsrKF89XytNYXRoLmltdWwoR2UsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChHZSxYdCl8MCkrTWF0aC5pbXVsKFVlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKFVlLFh0KXwwKSsocD4+PjEz''@;'; put 'put ''KXwwKSsobG8+Pj4yNil8MCxsbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsbXQpLHA9KHA9TWF0aC5pbXVsKEZ0LEh0KSkrTWF0aC5pbXVsKE90LG10KXwwLHc9TWF0aC5pbXVsKE90LEh0KSxfPV8rTWF0aC5pbXVsKGl0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsRXQpfDApK01hdGgu''@;'; put 'put ''aW11bChzdCxudCl8MCx3PXcrTWF0aC5pbXVsKHN0LEV0KXwwLF89XytNYXRoLmltdWwoa2UsVHQpfDAscD0ocD1wK01hdGguaW11bChrZSx5dCl8MCkrTWF0aC5pbXVsKEFlLFR0KXwwLHc9dytNYXRoLmltdWwoQWUseXQpfDAsXz1fK01hdGguaW11bCh0dCx4bil8MCxwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKHR0LHp0KXwwKStNYXRoLmltdWwoWmUseG4pfDAsdz13K01hdGguaW11bChaZSx6dCl8MCxfPV8rTWF0aC5pbXVsKEVlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscm4pfDApK01hdGguaW11bChJZSxPbil8MCx3PXcrTWF0aC5pbXVsKEllLHJuKXwwO3ZhciBVbj0oaysoXz1fK01h''@;'; put 'put ''dGguaW11bChvdCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG90LFh0KXwwKStNYXRoLmltdWwoRmUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRmUsWHQpfDApKyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxu''@;'; put 'put ''dCkscD0ocD1NYXRoLmltdWwoRnQsRXQpKStNYXRoLmltdWwoT3QsbnQpfDAsdz1NYXRoLmltdWwoT3QsRXQpLF89XytNYXRoLmltdWwoaXQsVHQpfDAscD0ocD1wK01hdGguaW11bChpdCx5dCl8MCkrTWF0aC5pbXVsKHN0LFR0KXwwLHc9dytNYXRoLmltdWwoc3QseXQpfDAsXz1fK01hdGgu''@;'; put 'put ''aW11bChrZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHp0KXwwKStNYXRoLmltdWwoQWUseG4pfDAsdz13K01hdGguaW11bChBZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHR0LE9uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQscm4pfDApK01hdGguaW11bChaZSxPbil8MCx3PXcrTWF0aC5pbXVs''@;'; put 'put ''KFplLHJuKXwwO3ZhciBYaT0oaysoXz1fK01hdGguaW11bChFZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEVlLFh0KXwwKStNYXRoLmltdWwoSWUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoSWUsWHQpfDApKyhwPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhp''@;'; put 'put ''Jj02NzEwODg2MyxfPU1hdGguaW11bChGdCxUdCkscD0ocD1NYXRoLmltdWwoRnQseXQpKStNYXRoLmltdWwoT3QsVHQpfDAsdz1NYXRoLmltdWwoT3QseXQpLF89XytNYXRoLmltdWwoaXQseG4pfDAscD0ocD1wK01hdGguaW11bChpdCx6dCl8MCkrTWF0aC5pbXVsKHN0LHhuKXwwLHc9dytN''@;'; put 'put ''YXRoLmltdWwoc3QsenQpfDAsXz1fK01hdGguaW11bChrZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHJuKXwwKStNYXRoLmltdWwoQWUsT24pfDAsdz13K01hdGguaW11bChBZSxybil8MDt2YXIgUWk9KGsrKF89XytNYXRoLmltdWwodHQsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01h''@;'; put 'put ''dGguaW11bCh0dCxYdCl8MCkrTWF0aC5pbXVsKFplLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKFplLFh0KXwwKSsocD4+PjEzKXwwKSsoUWk+Pj4yNil8MCxRaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQseG4pLHA9KHA9TWF0aC5pbXVsKEZ0LHp0KSkrTWF0aC5pbXVsKE90''@;'; put 'put ''LHhuKXwwLHc9TWF0aC5pbXVsKE90LHp0KSxfPV8rTWF0aC5pbXVsKGl0LE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQscm4pfDApK01hdGguaW11bChzdCxPbil8MCx3PXcrTWF0aC5pbXVsKHN0LHJuKXwwO3ZhciBmbz0oaysoXz1fK01hdGguaW11bChrZSxDbil8MCl8MCkrKCg4MTkxJihw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKGtlLFh0KXwwKStNYXRoLmltdWwoQWUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoQWUsWHQpfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxPbikscD0ocD1NYXRoLmltdWwoRnQscm4pKStNYXRo''@;'; put 'put ''LmltdWwoT3QsT24pfDAsdz1NYXRoLmltdWwoT3Qscm4pO3ZhciB2bz0oaysoXz1fK01hdGguaW11bChpdCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGl0LFh0KXwwKStNYXRoLmltdWwoc3QsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoc3QsWHQpfDApKyhw''@;'; put 'put ''Pj4+MTMpfDApKyh2bz4+PjI2KXwwLHZvJj02NzEwODg2Mzt2YXIgUnI9KGsrKF89TWF0aC5pbXVsKEZ0LENuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChGdCxYdCkpK01hdGguaW11bChPdCxDbil8MCkpPDwxMyl8MDtyZXR1cm4gaz0oKHc9TWF0aC5pbXVsKE90LFh0KSkrKHA+Pj4x''@;'; put 'put ''Myl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLENbMF09Sm4sQ1sxXT14aSxDWzJdPWFuLENbM109dG4sQ1s0XT11aSxDWzVdPUFyLENbNl09aHIsQ1s3XT1kaSxDWzhdPWZpLENbOV09aG8sQ1sxMF09YnIsQ1sxMV09TGksQ1sxMl09bG8sQ1sxM109VW4sQ1sxNF09WGksQ1sxNV09UWks''@;'; put 'put ''Q1sxNl09Zm8sQ1sxN109dm8sQ1sxOF09UnIsMCE9PWsmJihDWzE5XT1rLEYubGVuZ3RoKyspLEZ9O2Z1bmN0aW9uIFkoVyxiLEEpe3JldHVybihuZXcgVSkubXVscChXLGIsQSl9ZnVuY3Rpb24gVShXLGIpe3RoaXMueD1XLHRoaXMueT1ifU1hdGguaW11bHx8KEI9TiksTS5wcm90b3R5cGUu''@;'; put 'put ''bXVsVG89ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRoaXMubGVuZ3RoK2IubGVuZ3RoO3JldHVybiBGPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Yi5sZW5ndGg/Qih0aGlzLGIsQSk6SDw2Mz9OKHRoaXMsYixBKTpIPDEwMjQ/ZnVuY3Rpb24gWihXLGIsQSl7QS5uZWdhdGl2ZT1iLm5lZ2F0aXZl''@;'; put 'put ''XlcubmVnYXRpdmUsQS5sZW5ndGg9Vy5sZW5ndGgrYi5sZW5ndGg7Zm9yKHZhciBGPTAsSD0wLGc9MDtnPEEubGVuZ3RoLTE7ZysrKXt2YXIgQz1IO0g9MDtmb3IodmFyIGs9NjcxMDg4NjMmRixfPU1hdGgubWluKGcsYi5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGctVy5sZW5ndGgrMSk7cDw9''@;'; put 'put ''XztwKyspe3ZhciBjZT0oMHxXLndvcmRzW2ctcF0pKigwfGIud29yZHNbcF0pLGhlPTY3MTA4ODYzJmNlO2s9NjcxMDg4NjMmKGhlPWhlK2t8MCksSCs9KEM9KEM9QysoY2UvNjcxMDg4NjR8MCl8MCkrKGhlPj4+MjYpfDApPj4+MjYsQyY9NjcxMDg4NjN9QS53b3Jkc1tnXT1rLEY9QyxDPUh9''@;'; put 'put ''cmV0dXJuIDAhPT1GP0Eud29yZHNbZ109RjpBLmxlbmd0aC0tLEEuc3RyaXAoKX0odGhpcyxiLEEpOlkodGhpcyxiLEEpLEZ9LFUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oYil7Zm9yKHZhciBBPW5ldyBBcnJheShiKSxGPU0ucHJvdG90eXBlLl9jb3VudEJpdHMoYiktMSxIPTA7SDxi''@;'; put 'put ''O0grKylBW0hdPXRoaXMucmV2QmluKEgsRixiKTtyZXR1cm4gQX0sVS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGIsQSxGKXtpZigwPT09Ynx8Yj09PUYtMSlyZXR1cm4gYjtmb3IodmFyIEg9MCxnPTA7ZzxBO2crKylIfD0oMSZiKTw8QS1nLTEsYj4+PTE7cmV0dXJuIEh9LFUucHJvdG90''@;'; put 'put ''eXBlLnBlcm11dGU9ZnVuY3Rpb24oYixBLEYsSCxnLEMpe2Zvcih2YXIgaz0wO2s8QztrKyspSFtrXT1BW2Jba11dLGdba109RltiW2tdXX0sVS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGIsQSxGLEgsZyxDKXt0aGlzLnBlcm11dGUoQyxiLEEsRixILGcpO2Zvcih2YXIgaz0xO2s8''@;'; put 'put ''ZztrPDw9MSlmb3IodmFyIF89azw8MSxwPU1hdGguY29zKDIqTWF0aC5QSS9fKSx3PU1hdGguc2luKDIqTWF0aC5QSS9fKSxLPTA7SzxnO0srPV8pZm9yKHZhciB0ZT1wLGNlPXcsaGU9MDtoZTxrO2hlKyspe3ZhciBTZT1GW0sraGVdLExlPUhbSytoZV0sSGU9RltLK2hlK2tdLHhlPUhbSyto''@;'; put 'put ''ZStrXSxEZT10ZSpIZS1jZSp4ZTt4ZT10ZSp4ZStjZSpIZSxGW0sraGVdPVNlKyhIZT1EZSksSFtLK2hlXT1MZSt4ZSxGW0sraGUra109U2UtSGUsSFtLK2hlK2tdPUxlLXhlLGhlIT09XyYmKERlPXAqdGUtdypjZSxjZT1wKmNlK3cqdGUsdGU9RGUpfX0sVS5wcm90b3R5cGUuZ3Vlc3NMZW4x''@;'; put 'put ''M2I9ZnVuY3Rpb24oYixBKXt2YXIgRj0xfE1hdGgubWF4KEEsYiksSD0xJkYsZz0wO2ZvcihGPUYvMnwwO0Y7Rj4+Pj0xKWcrKztyZXR1cm4gMTw8ZysxK0h9LFUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihiLEEsRil7aWYoIShGPD0xKSlmb3IodmFyIEg9MDtIPEYvMjtIKyspe3Zh''@;'; put 'put ''ciBnPWJbSF07YltIXT1iW0YtSC0xXSxiW0YtSC0xXT1nLGc9QVtIXSxBW0hdPS1BW0YtSC0xXSxBW0YtSC0xXT0tZ319LFUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj0wLEg9MDtIPEEvMjtIKyspe3ZhciBnPTgxOTIqTWF0aC5yb3VuZChiWzIqSCsx''@;'; put 'put ''XS9BKStNYXRoLnJvdW5kKGJbMipIXS9BKStGO2JbSF09NjcxMDg4NjMmZyxGPWc8NjcxMDg4NjQ/MDpnLzY3MTA4ODY0fDB9cmV0dXJuIGJ9LFUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oYixBLEYsSCl7Zm9yKHZhciBnPTAsQz0wO0M8QTtDKyspRlsyKkNdPTgxOTEmKGcrPTB8''@;'; put 'put ''YltDXSksRlsyKkMrMV09ODE5MSYoZz4+Pj0xMyksZz4+Pj0xMztmb3IoQz0yKkE7QzxIOysrQylGW0NdPTA7bSgwPT09ZyksbSghKC04MTkyJmcpKX0sVS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihiKXtmb3IodmFyIEE9bmV3IEFycmF5KGIpLEY9MDtGPGI7RisrKUFbRl09MDtyZXR1cm4g''@;'; put 'put ''QX0sVS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihiLEEsRil7dmFyIEg9Mip0aGlzLmd1ZXNzTGVuMTNiKGIubGVuZ3RoLEEubGVuZ3RoKSxnPXRoaXMubWFrZVJCVChIKSxDPXRoaXMuc3R1YihIKSxrPW5ldyBBcnJheShIKSxfPW5ldyBBcnJheShIKSxwPW5ldyBBcnJheShIKSx3PW5ldyBB''@;'; put 'put ''cnJheShIKSxLPW5ldyBBcnJheShIKSx0ZT1uZXcgQXJyYXkoSCksY2U9Ri53b3JkcztjZS5sZW5ndGg9SCx0aGlzLmNvbnZlcnQxM2IoYi53b3JkcyxiLmxlbmd0aCxrLEgpLHRoaXMuY29udmVydDEzYihBLndvcmRzLEEubGVuZ3RoLHcsSCksdGhpcy50cmFuc2Zvcm0oayxDLF8scCxILGcp''@;'; put 'put ''LHRoaXMudHJhbnNmb3JtKHcsQyxLLHRlLEgsZyk7Zm9yKHZhciBoZT0wO2hlPEg7aGUrKyl7dmFyIFNlPV9baGVdKktbaGVdLXBbaGVdKnRlW2hlXTtwW2hlXT1fW2hlXSp0ZVtoZV0rcFtoZV0qS1toZV0sX1toZV09U2V9cmV0dXJuIHRoaXMuY29uanVnYXRlKF8scCxIKSx0aGlzLnRyYW5z''@;'; put 'put ''Zm9ybShfLHAsY2UsQyxILGcpLHRoaXMuY29uanVnYXRlKGNlLEMsSCksdGhpcy5ub3JtYWxpemUxM2IoY2UsSCksRi5uZWdhdGl2ZT1iLm5lZ2F0aXZlXkEubmVnYXRpdmUsRi5sZW5ndGg9Yi5sZW5ndGgrQS5sZW5ndGgsRi5zdHJpcCgpfSxNLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYil7''@;'; put 'put ''dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSx0aGlzLm11bFRvKGIsQSl9LE0ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oYil7dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3Ro''@;'; put 'put ''K2IubGVuZ3RoKSxZKHRoaXMsYixBKX0sTS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGIsdGhpcyl9LE0ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpO2Zvcih2YXIgQT0w''@;'; put 'put ''LEY9MDtGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIEg9KDB8dGhpcy53b3Jkc1tGXSkqYixnPSg2NzEwODg2MyZIKSsoNjcxMDg4NjMmQSk7QT4+PTI2LEErPUgvNjcxMDg4NjR8MCxBKz1nPj4+MjYsdGhpcy53b3Jkc1tGXT02NzEwODg2MyZnfXJldHVybiAwIT09QSYmKHRoaXMud29yZHNbRl09''@;'; put 'put ''QSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oYil9LE0ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGIpe3ZhciBBPWZ1bmN0aW9uIHooVyl7Zm9yKHZhciBiPW5ldyBBcnJheShXLmJpdExlbmd0aCgpKSxBPTA7QTxiLmxlbmd0aDtBKyspe3ZhciBIPUElMjY7YltBXT0oVy53b3Jkc1tBLzI2fDBdJjE8''@;'; put 'put ''PEgpPj4+SH1yZXR1cm4gYn0oYik7aWYoMD09PUEubGVuZ3RoKXJldHVybiBuZXcgTSgxKTtmb3IodmFyIEY9dGhpcyxIPTA7SDxBLmxlbmd0aCYmMD09PUFbSF07SCsrLEY9Ri5zcXIoKSk7aWYoKytIPEEubGVuZ3RoKWZvcih2YXIgZz1GLnNxcigpO0g8QS5sZW5ndGg7SCsrLGc9Zy5zcXIo''@;'; put 'put ''KSkwIT09QVtIXSYmKEY9Ri5tdWwoZykpO3JldHVybiBGfSxNLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBnLEE9YiUyNixGPShiLUEpLzI2LEg9NjcxMDg4NjM+Pj4yNi1BPDwyNi1BO2lmKDAhPT1BKXt2YXIgQz0wO2Zvcihn''@;'; put 'put ''PTA7Zzx0aGlzLmxlbmd0aDtnKyspe3ZhciBrPXRoaXMud29yZHNbZ10mSDt0aGlzLndvcmRzW2ddPSgwfHRoaXMud29yZHNbZ10pLWs8PEF8QyxDPWs+Pj4yNi1BfUMmJih0aGlzLndvcmRzW2ddPUMsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PUYpe2ZvcihnPXRoaXMubGVuZ3RoLTE7Zz49MDtn''@;'; put 'put ''LS0pdGhpcy53b3Jkc1tnK0ZdPXRoaXMud29yZHNbZ107Zm9yKGc9MDtnPEY7ZysrKXRoaXMud29yZHNbZ109MDt0aGlzLmxlbmd0aCs9Rn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5p''@;'; put 'put ''dXNobG4oYil9LE0ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihiLEEsRil7dmFyIEg7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApLEg9QT8oQS1BJTI2KS8yNjowO3ZhciBnPWIlMjYsQz1NYXRoLm1pbigoYi1nKS8yNix0aGlzLmxlbmd0aCksaz02NzEwODg2M142NzEwODg2Mz4+Pmc8''@;'; put 'put ''PGcsXz1GO2lmKEgtPUMsSD1NYXRoLm1heCgwLEgpLF8pe2Zvcih2YXIgcD0wO3A8QztwKyspXy53b3Jkc1twXT10aGlzLndvcmRzW3BdO18ubGVuZ3RoPUN9aWYoMCE9PUMpaWYodGhpcy5sZW5ndGg+Qylmb3IodGhpcy5sZW5ndGgtPUMscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29y''@;'; put 'put ''ZHNbcF09dGhpcy53b3Jkc1twK0NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIHc9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09d3x8cD49SCk7cC0tKXt2YXIgSz0wfHRoaXMud29yZHNbcF07dGhpcy53b3Jkc1twXT13PDwyNi1nfEs+Pj5nLHc9SyZr''@;'; put 'put ''fXJldHVybiBfJiYwIT09dyYmKF8ud29yZHNbXy5sZW5ndGgrK109dyksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oYixBLEYpe3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZl''@;'; put 'put ''KSx0aGlzLml1c2hybihiLEEsRil9LE0ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiKX0sTS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYil9LE0ucHJvdG90eXBlLnNocm49ZnVuY3Rp''@;'; put 'put ''b24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiKX0sTS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYil9LE0ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2''@;'; put 'put ''LEY9KGItQSkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Rnx8ISh0aGlzLndvcmRzW0ZdJjE8PEEpKX0sTS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2LEY9KGItQSkvMjY7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRp''@;'; put 'put ''dmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1GP3RoaXM6KDAhPT1BJiZGKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oRix0aGlzLmxlbmd0aCksMCE9PUEmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2''@;'; put 'put ''Mz4+PkE8PEEpLHRoaXMuc3RyaXAoKSl9LE0ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGIpfSxNLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCksYjwwP3Ro''@;'; put 'put ''aXMuaXN1Ym4oLWIpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Yj8odGhpcy53b3Jkc1swXT1iLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oYiksdGhpcy5uZWdh''@;'; put 'put ''dGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGIpfSxNLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oYil7dGhpcy53b3Jkc1swXSs9Yjtmb3IodmFyIEE9MDtBPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0FdPj02NzEwODg2NDtBKyspdGhpcy53b3Jkc1tBXS09NjcxMDg4NjQsQT09PXRoaXMu''@;'; put 'put ''bGVuZ3RoLTE/dGhpcy53b3Jkc1tBKzFdPTE6dGhpcy53b3Jkc1tBKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEErMSksdGhpc30sTS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oYil7aWYobSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCks''@;'; put 'put ''YjwwKXJldHVybiB0aGlzLmlhZGRuKC1iKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09YiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndv''@;'; put 'put ''cmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQT0wO0E8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQV08MDtBKyspdGhpcy53b3Jkc1tBXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tBKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBl''@;'; put 'put ''LmFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihiKX0sTS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGIpfSxNLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxN''@;'; put 'put ''LnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGIsQSxGKXt2YXIgZzt0aGlzLl9leHBhbmQoYi5sZW5ndGgrRik7dmFyIEMsaz0wO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe0M9KDB8''@;'; put 'put ''dGhpcy53b3Jkc1tnK0ZdKStrO3ZhciBfPSgwfGIud29yZHNbZ10pKkE7az0oKEMtPTY3MTA4ODYzJl8pPj4yNiktKF8vNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkN9Zm9yKDtnPHRoaXMubGVuZ3RoLUY7ZysrKWs9KEM9KDB8dGhpcy53b3Jkc1tnK0ZdKStrKT4+MjYs''@;'; put 'put ''dGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkM7aWYoMD09PWspcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IobSgtMT09PWspLGs9MCxnPTA7Zzx0aGlzLmxlbmd0aDtnKyspaz0oQz0tKDB8dGhpcy53b3Jkc1tnXSkrayk+PjI2LHRoaXMud29yZHNbZ109NjcxMDg4NjMmQztyZXR1cm4gdGhpcy5u''@;'; put 'put ''ZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRoaXMuY2xvbmUoKSxnPWIsQz0wfGcud29yZHNbZy5sZW5ndGgtMV07MCE9KEY9MjYtdGhpcy5fY291bnRCaXRzKEMpKSYmKGc9Zy51c2hsbihGKSxILml1c2hsbihGKSxD''@;'; put 'put ''PTB8Zy53b3Jkc1tnLmxlbmd0aC0xXSk7dmFyIHAsXz1ILmxlbmd0aC1nLmxlbmd0aDtpZigibW9kIiE9PUEpeyhwPW5ldyBNKG51bGwpKS5sZW5ndGg9XysxLHAud29yZHM9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IodmFyIHc9MDt3PHAubGVuZ3RoO3crKylwLndvcmRzW3ddPTB9dmFyIEs9''@;'; put 'put ''SC5jbG9uZSgpLl9pc2hsbnN1Ym11bChnLDEsXyk7MD09PUsubmVnYXRpdmUmJihIPUsscCYmKHAud29yZHNbX109MSkpO2Zvcih2YXIgdGU9Xy0xO3RlPj0wO3RlLS0pe3ZhciBjZT02NzEwODg2NCooMHxILndvcmRzW2cubGVuZ3RoK3RlXSkrKDB8SC53b3Jkc1tnLmxlbmd0aCt0ZS0xXSk7''@;'; put 'put ''Zm9yKGNlPU1hdGgubWluKGNlL0N8MCw2NzEwODg2MyksSC5faXNobG5zdWJtdWwoZyxjZSx0ZSk7MCE9PUgubmVnYXRpdmU7KWNlLS0sSC5uZWdhdGl2ZT0wLEguX2lzaGxuc3VibXVsKGcsMSx0ZSksSC5pc1plcm8oKXx8KEgubmVnYXRpdmVePTEpO3AmJihwLndvcmRzW3RlXT1jZSl9cmV0''@;'; put 'put ''dXJuIHAmJnAuc3RyaXAoKSxILnN0cmlwKCksImRpdiIhPT1BJiYwIT09RiYmSC5pdXNocm4oRikse2RpdjpwfHxudWxsLG1vZDpIfX0sTS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGIsQSxGKXtyZXR1cm4gbSghYi5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBNKDApLG1v''@;'; put 'put ''ZDpuZXcgTSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIsQSksIm1vZCIhPT1BJiYoSD1DLmRpdi5uZWcoKSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2ZSYmZy5pYWRkKGIpKSx7ZGl2OkgsbW9k''@;'; put 'put ''Omd9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmU/KEM9dGhpcy5kaXZtb2QoYi5uZWcoKSxBKSwibW9kIiE9PUEmJihIPUMuZGl2Lm5lZygpKSx7ZGl2OkgsbW9kOkMubW9kfSk6dGhpcy5uZWdhdGl2ZSZiLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIubmVnKCks''@;'; put 'put ''QSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2ZSYmZy5pc3ViKGIpKSx7ZGl2OkMuZGl2LG1vZDpnfSk6Yi5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGIpPDA/e2RpdjpuZXcgTSgwKSxtb2Q6dGhpc306MT09PWIubGVuZ3RoPyJkaXYiPT09QT97ZGl2''@;'; put 'put ''OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1BP3tkaXY6bnVsbCxtb2Q6bmV3IE0odGhpcy5tb2RuKGIud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm5ldyBNKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoYixB''@;'; put 'put ''KTt2YXIgSCxnLEN9LE0ucHJvdG90eXBlLmRpdj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwiZGl2IiwhMSkuZGl2fSxNLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITEpLm1vZH0sTS5wcm90b3R5cGUudW1vZD1mdW5jdGlv''@;'; put 'put ''bihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwibW9kIiwhMCkubW9kfSxNLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihiKXt2YXIgQT10aGlzLmRpdm1vZChiKTtpZihBLm1vZC5pc1plcm8oKSlyZXR1cm4gQS5kaXY7dmFyIEY9MCE9PUEuZGl2Lm5lZ2F0aXZlP0EubW9kLmlzdWIoYik6''@;'; put 'put ''QS5tb2QsSD1iLnVzaHJuKDEpLGc9Yi5hbmRsbigxKSxDPUYuY21wKEgpO3JldHVybiBDPDB8fDE9PT1nJiYwPT09Qz9BLmRpdjowIT09QS5kaXYubmVnYXRpdmU/QS5kaXYuaXN1Ym4oMSk6QS5kaXYuaWFkZG4oMSl9LE0ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2''@;'; put 'put ''Myk7Zm9yKHZhciBBPSgxPDwyNiklYixGPTAsSD10aGlzLmxlbmd0aC0xO0g+PTA7SC0tKUY9KEEqRisoMHx0aGlzLndvcmRzW0hdKSklYjtyZXR1cm4gRn0sTS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2Myk7Zm9yKHZhciBBPTAsRj10aGlzLmxlbmd0aC0xO0Y+''@;'; put 'put ''PTA7Ri0tKXt2YXIgSD0oMHx0aGlzLndvcmRzW0ZdKSs2NzEwODg2NCpBO3RoaXMud29yZHNbRl09SC9ifDAsQT1IJWJ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGIpfSxNLnByb3RvdHlwZS5lZ2Nk''@;'; put 'put ''PWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUpLG0oIWIuaXNaZXJvKCkpO3ZhciBBPXRoaXMsRj1iLmNsb25lKCk7QT0wIT09QS5uZWdhdGl2ZT9BLnVtb2QoYik6QS5jbG9uZSgpO2Zvcih2YXIgSD1uZXcgTSgxKSxnPW5ldyBNKDApLEM9bmV3IE0oMCksaz1uZXcgTSgxKSxfPTA7QS5p''@;'; put 'put ''c0V2ZW4oKSYmRi5pc0V2ZW4oKTspQS5pdXNocm4oMSksRi5pdXNocm4oMSksKytfO2Zvcih2YXIgcD1GLmNsb25lKCksdz1BLmNsb25lKCk7IUEuaXNaZXJvKCk7KXtmb3IodmFyIEs9MCx0ZT0xOyEoQS53b3Jkc1swXSZ0ZSkmJks8MjY7KytLLHRlPDw9MSk7aWYoSz4wKWZvcihBLml1c2hy''@;'; put 'put ''bihLKTtLLS0gPjA7KShILmlzT2RkKCl8fGcuaXNPZGQoKSkmJihILmlhZGQocCksZy5pc3ViKHcpKSxILml1c2hybigxKSxnLml1c2hybigxKTtmb3IodmFyIGNlPTAsaGU9MTshKEYud29yZHNbMF0maGUpJiZjZTwyNjsrK2NlLGhlPDw9MSk7aWYoY2U+MClmb3IoRi5pdXNocm4oY2UpO2Nl''@;'; put 'put ''LS0gPjA7KShDLmlzT2RkKCl8fGsuaXNPZGQoKSkmJihDLmlhZGQocCksay5pc3ViKHcpKSxDLml1c2hybigxKSxrLml1c2hybigxKTtBLmNtcChGKT49MD8oQS5pc3ViKEYpLEguaXN1YihDKSxnLmlzdWIoaykpOihGLmlzdWIoQSksQy5pc3ViKEgpLGsuaXN1YihnKSl9cmV0dXJue2E6Qyxi''@;'; put 'put ''OmssZ2NkOkYuaXVzaGxuKF8pfX0sTS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUpLG0oIWIuaXNaZXJvKCkpO3ZhciBLLEE9dGhpcyxGPWIuY2xvbmUoKTtBPTAhPT1BLm5lZ2F0aXZlP0EudW1vZChiKTpBLmNsb25lKCk7Zm9yKHZhciBIPW5ldyBNKDEp''@;'; put 'put ''LGc9bmV3IE0oMCksQz1GLmNsb25lKCk7QS5jbXBuKDEpPjAmJkYuY21wbigxKT4wOyl7Zm9yKHZhciBrPTAsXz0xOyEoQS53b3Jkc1swXSZfKSYmazwyNjsrK2ssXzw8PTEpO2lmKGs+MClmb3IoQS5pdXNocm4oayk7ay0tID4wOylILmlzT2RkKCkmJkguaWFkZChDKSxILml1c2hybigxKTtm''@;'; put 'put ''b3IodmFyIHA9MCx3PTE7IShGLndvcmRzWzBdJncpJiZwPDI2OysrcCx3PDw9MSk7aWYocD4wKWZvcihGLml1c2hybihwKTtwLS0gPjA7KWcuaXNPZGQoKSYmZy5pYWRkKEMpLGcuaXVzaHJuKDEpO0EuY21wKEYpPj0wPyhBLmlzdWIoRiksSC5pc3ViKGcpKTooRi5pc3ViKEEpLGcuaXN1YihI''@;'; put 'put ''KSl9cmV0dXJuKEs9MD09PUEuY21wbigxKT9IOmcpLmNtcG4oMCk8MCYmSy5pYWRkKGIpLEt9LE0ucHJvdG90eXBlLmdjZD1mdW5jdGlvbihiKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBiLmFicygpO2lmKGIuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEE9dGhpcy5jbG9uZSgp''@;'; put 'put ''LEY9Yi5jbG9uZSgpO0EubmVnYXRpdmU9MCxGLm5lZ2F0aXZlPTA7Zm9yKHZhciBIPTA7QS5pc0V2ZW4oKSYmRi5pc0V2ZW4oKTtIKyspQS5pdXNocm4oMSksRi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO0EuaXNFdmVuKCk7KUEuaXVzaHJuKDEpO2Zvcig7Ri5pc0V2ZW4oKTspRi5pdXNocm4o''@;'; put 'put ''MSk7dmFyIGc9QS5jbXAoRik7aWYoZzwwKXt2YXIgQz1BO0E9RixGPUN9ZWxzZSBpZigwPT09Z3x8MD09PUYuY21wbigxKSlicmVhaztBLmlzdWIoRil9cmV0dXJuIEYuaXVzaGxuKEgpfSxNLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVnY2QoYikuYS51bW9kKGIp''@;'; put 'put ''fSxNLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LE0ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sTS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0m''@;'; put 'put ''Yn0sTS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGIpO3ZhciBBPWIlMjYsRj0oYi1BKS8yNixIPTE8PEE7aWYodGhpcy5sZW5ndGg8PUYpcmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl18PUgsdGhpcztmb3IodmFyIGc9SCxDPUY7''@;'; put 'put ''MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz0wfHRoaXMud29yZHNbQ107Zz0oays9Zyk+Pj4yNix0aGlzLndvcmRzW0NdPWsmPTY3MTA4ODYzfXJldHVybiAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihiKXt2YXIgRixBPWI8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIUEpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJkEpcmV0dXJuIDE7aWYodGhpcy5z''@;'; put 'put ''dHJpcCgpLHRoaXMubGVuZ3RoPjEpRj0xO2Vsc2V7QSYmKGI9LWIpLG0oYjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIEg9MHx0aGlzLndvcmRzWzBdO0Y9SD09PWI/MDpIPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtRjpGfSxNLnByb3RvdHlwZS5jbXA9''@;'; put 'put ''ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQT10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUE6QX0sTS5wcm90b3R5''@;'; put 'put ''cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEE9MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pe3ZhciBIPTB8dGhpcy53b3Jkc1tGXSxnPTB8Yi53b3Jkc1tGXTtpZihI''@;'; put 'put ''IT09Zyl7SDxnP0E9LTE6SD5nJiYoQT0xKTticmVha319cmV0dXJuIEF9LE0ucHJvdG90eXBlLmd0bj1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sTS5wcm90b3R5cGUuZ3Rlbj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxNLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxNLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIp''@;'; put 'put ''e3JldHVybi0xPT09dGhpcy5jbXAoYil9LE0ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKTw9MH0sTS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sTS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAw''@;'; put 'put ''PT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wKGIpfSxNLnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGxlKGIpfSxNLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBu''@;'; put 'put ''dW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxtKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJm''@;'; put 'put ''cm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE0ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxNLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBu''@;'; put 'put ''dW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTdWI9ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVk''@;'; put 'put ''IG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRNdWw9ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLm11bCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxNLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhp''@;'; put 'put ''cy5yZWQuaXNxcih0aGlzKX0sTS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE0ucHJvdG90eXBlLnJl''@;'; put 'put ''ZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxNLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJl''@;'; put 'put ''ZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhp''@;'; put 'put ''cy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3ZhciBxPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gSihXLGIpe3RoaXMubmFtZT1XLHRoaXMucD1uZXcgTShiLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgp''@;'; put 'put ''LHRoaXMuaz1uZXcgTSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gZWUoKXtKLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZm''@;'; put 'put ''ZmZmYzJmIil9ZnVuY3Rpb24gcmUoKXtKLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gaWUoKXtKLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gdWUoKXtKLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gbGUoVyl7aWYoInN0cmluZyI9''@;'; put 'put ''PXR5cGVvZiBXKXt2YXIgYj1NLl9wcmltZShXKTt0aGlzLm09Yi5wLHRoaXMucHJpbWU9Yn1lbHNlIG0oVy5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1XLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBhZShXKXtsZS5jYWxsKHRoaXMsVyksdGhpcy5z''@;'; put 'put ''aGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgTSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0''@;'; put 'put ''aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1KLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IE0o''@;'; put 'put ''bnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxifSxKLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBGLEE9Yjtkb3t0aGlzLnNwbGl0KEEsdGhpcy50bXApLEY9KEE9KEE9dGhpcy5pbXVsSyhBKSkuaWFkZCh0aGlzLnRtcCkpLmJp''@;'; put 'put ''dExlbmd0aCgpfXdoaWxlKEY+dGhpcy5uKTt2YXIgSD1GPHRoaXMubj8tMTpBLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PUg/KEEud29yZHNbMF09MCxBLmxlbmd0aD0xKTpIPjA/QS5pc3ViKHRoaXMucCk6dm9pZCAwIT09QS5zdHJpcD9BLnN0cmlwKCk6QS5fc3RyaXAoKSxBfSxKLnByb3Rv''@;'; put 'put ''dHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2IuaXVzaHJuKHRoaXMubiwwLEEpfSxKLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pbXVsKHRoaXMuayl9LHNlKGVlLEopLGVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj00MTk0MzAzLEg9TWF0''@;'; put 'put ''aC5taW4oYi5sZW5ndGgsOSksZz0wO2c8SDtnKyspQS53b3Jkc1tnXT1iLndvcmRzW2ddO2lmKEEubGVuZ3RoPUgsYi5sZW5ndGg8PTkpcmV0dXJuIGIud29yZHNbMF09MCx2b2lkKGIubGVuZ3RoPTEpO3ZhciBDPWIud29yZHNbOV07Zm9yKEEud29yZHNbQS5sZW5ndGgrK109QyZGLGc9MTA7''@;'; put 'put ''ZzxiLmxlbmd0aDtnKyspe3ZhciBrPTB8Yi53b3Jkc1tnXTtiLndvcmRzW2ctMTBdPShrJkYpPDw0fEM+Pj4yMixDPWt9Yi53b3Jkc1tnLTEwXT1DPj4+PTIyLGIubGVuZ3RoLT0wPT09QyYmYi5sZW5ndGg+MTA/MTA6OX0sZWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Iud29yZHNb''@;'; put 'put ''Yi5sZW5ndGhdPTAsYi53b3Jkc1tiLmxlbmd0aCsxXT0wLGIubGVuZ3RoKz0yO2Zvcih2YXIgQT0wLEY9MDtGPGIubGVuZ3RoO0YrKyl7dmFyIEg9MHxiLndvcmRzW0ZdO2Iud29yZHNbRl09NjcxMDg4NjMmKEErPTk3NypIKSxBPTY0KkgrKEEvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1iLndv''@;'; put 'put ''cmRzW2IubGVuZ3RoLTFdJiYoYi5sZW5ndGgtLSwwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmYi5sZW5ndGgtLSksYn0sc2UocmUsSiksc2UoaWUsSiksc2UodWUsSiksdWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Zvcih2YXIgQT0wLEY9MDtGPGIubGVuZ3RoO0YrKyl7dmFyIEg9''@;'; put 'put ''MTkqKDB8Yi53b3Jkc1tGXSkrQSxnPTY3MTA4ODYzJkg7SD4+Pj0yNixiLndvcmRzW0ZdPWcsQT1IfXJldHVybiAwIT09QSYmKGIud29yZHNbYi5sZW5ndGgrK109QSksYn0sTS5fcHJpbWU9ZnVuY3Rpb24oYil7aWYocVtiXSlyZXR1cm4gcVtiXTt2YXIgQTtpZigiazI1NiI9PT1iKUE9bmV3''@;'; put 'put ''IGVlO2Vsc2UgaWYoInAyMjQiPT09YilBPW5ldyByZTtlbHNlIGlmKCJwMTkyIj09PWIpQT1uZXcgaWU7ZWxzZXtpZigicDI1NTE5IiE9PWIpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrYik7QT1uZXcgdWV9cmV0dXJuIHFbYl09QSxBfSxsZS5wcm90b3R5cGUuX3ZlcmlmeTE9''@;'; put 'put ''ZnVuY3Rpb24oYil7bSgwPT09Yi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxtKGIucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGxlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihiLEEpe20oIShiLm5lZ2F0aXZlfEEubmVnYXRp''@;'; put 'put ''dmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG0oYi5yZWQmJmIucmVkPT09QS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIp''@;'; put 'put ''Ll9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIs''@;'; put 'put ''QSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuYWRkKEEpO3JldHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5pYWRkKEEpO3Jl''@;'; put 'put ''dHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGfSxsZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuc3ViKEEpO3JldHVybiBGLmNtcG4oMCk8MCYmRi5pYWRkKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LGxlLnBy''@;'; put 'put ''b3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuaXN1YihBKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEZ9LGxlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2Qo''@;'; put 'put ''Yi51c2hsbihBKSl9LGxlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYixBKSx0aGlzLmltb2QoYi5pbXVsKEEpKX0sbGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIsQSksdGhpcy5pbW9kKGIubXVs''@;'; put 'put ''KEEpKX0sbGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW11bChiLGIuY2xvbmUoKSl9LGxlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LGxlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0''@;'; put 'put ''dXJuIGIuY2xvbmUoKTt2YXIgQT10aGlzLm0uYW5kbG4oMyk7aWYobShBJTI9PTEpLDM9PT1BKXt2YXIgRj10aGlzLm0uYWRkKG5ldyBNKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsRil9Zm9yKHZhciBIPXRoaXMubS5zdWJuKDEpLGc9MDshSC5pc1plcm8oKSYmMD09PUguYW5k''@;'; put 'put ''bG4oMSk7KWcrKyxILml1c2hybigxKTttKCFILmlzWmVybygpKTt2YXIgQz1uZXcgTSgxKS50b1JlZCh0aGlzKSxrPUMucmVkTmVnKCksXz10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IE0oMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlz''@;'; put 'put ''LnBvdyhwLF8pLmNtcChrKTspcC5yZWRJQWRkKGspO2Zvcih2YXIgdz10aGlzLnBvdyhwLEgpLEs9dGhpcy5wb3coYixILmFkZG4oMSkuaXVzaHJuKDEpKSx0ZT10aGlzLnBvdyhiLEgpLGNlPWc7MCE9PXRlLmNtcChDKTspe2Zvcih2YXIgaGU9dGUsU2U9MDswIT09aGUuY21wKEMpO1NlKysp''@;'; put 'put ''aGU9aGUucmVkU3FyKCk7bShTZTxjZSk7dmFyIExlPXRoaXMucG93KHcsbmV3IE0oMSkuaXVzaGxuKGNlLVNlLTEpKTtLPUsucmVkTXVsKExlKSx3PUxlLnJlZFNxcigpLHRlPXRlLnJlZE11bCh3KSxjZT1TZX1yZXR1cm4gS30sbGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIEE9''@;'; put 'put ''Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUEubmVnYXRpdmU/KEEubmVnYXRpdmU9MCx0aGlzLmltb2QoQSkucmVkTmVnKCkpOnRoaXMuaW1vZChBKX0sbGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLEEpe2lmKEEuaXNaZXJvKCkpcmV0dXJuIG5ldyBNKDEpLnRvUmVkKHRoaXMpO2lm''@;'; put 'put ''KDA9PT1BLmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgSD1uZXcgQXJyYXkoMTYpO0hbMF09bmV3IE0oMSkudG9SZWQodGhpcyksSFsxXT1iO2Zvcih2YXIgZz0yO2c8SC5sZW5ndGg7ZysrKUhbZ109dGhpcy5tdWwoSFtnLTFdLGIpO3ZhciBDPUhbMF0saz0wLF89MCxwPUEuYml0TGVu''@;'; put 'put ''Z3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz1BLmxlbmd0aC0xO2c+PTA7Zy0tKXtmb3IodmFyIHc9QS53b3Jkc1tnXSxLPXAtMTtLPj0wO0stLSl7dmFyIHRlPXc+PksmMTtDIT09SFswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT10ZXx8MCE9PWs/KGs8PD0xLGt8PXRlLCg0PT0rK198fDA9''@;'; put 'put ''PT1nJiYwPT09SykmJihDPXRoaXMubXVsKEMsSFtrXSksXz0wLGs9MCkpOl89MH1wPTI2fXJldHVybiBDfSxsZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3ZhciBBPWIudW1vZCh0aGlzLm0pO3JldHVybiBBPT09Yj9BLmNsb25lKCk6QX0sbGUucHJvdG90eXBlLmNvbnZlcnRG''@;'; put 'put ''cm9tPWZ1bmN0aW9uKGIpe3ZhciBBPWIuY2xvbmUoKTtyZXR1cm4gQS5yZWQ9bnVsbCxBfSxNLm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBhZShiKX0sc2UoYWUsbGUpLGFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMu''@;'; put 'put ''c2hpZnQpKX0sYWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciBBPXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gQS5yZWQ9bnVsbCxBfSxhZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLEEpe2lmKGIuaXNaZXJvKCl8fEEuaXNaZXJvKCkpcmV0dXJu''@;'; put 'put ''IGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIEY9Yi5pbXVsKEEpLEg9Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1GLmlzdWIoSCkuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5t''@;'; put 'put ''KT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYixBKXtpZihiLmlzWmVybygpfHxBLmlzWmVybygpKXJldHVybiBuZXcgTSgwKS5fZm9yY2VSZWQodGhpcyk7dmFy''@;'; put 'put ''IEY9Yi5tdWwoQSksSD1GLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPUYuaXN1YihIKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDAp''@;'; put 'put ''PDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sYWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oUWU9Ui5ubWQoUWUpLHRoaXMpfSw2NzIxMToo''@;'; put 'put ''UWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNzE5OTMpLHg9UigzNDcyNSksbT1SKDM2NjM2KSxzZT1SKDI1NDQzKSxNPVIoMzI0Nyk7ZnVuY3Rpb24gTyhJKXtNLmNhbGwodGhpcywiZGlnZXN0IiksdGhpcy5faGFzaD1JfW9lKE8sTSksTy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5j''@;'; put 'put ''dGlvbihJKXt0aGlzLl9oYXNoLnVwZGF0ZShJKX0sTy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9LFFlLmV4cG9ydHM9ZnVuY3Rpb24oail7cmV0dXJuIm1kNSI9PT0oaj1qLnRvTG93ZXJDYXNlKCkpP25ldyB4OiJybWQxNjAiPT09anx8''@;'; put 'put ''InJpcGVtZDE2MCI9PT1qP25ldyBtOm5ldyBPKHNlKGopKX19LDgzNDA3OihRZSxNZSxSKT0+e3ZhciBvZT1SKDM0NzI1KTtRZS5leHBvcnRzPWZ1bmN0aW9uKHgpe3JldHVybihuZXcgb2UpLnVwZGF0ZSh4KS5kaWdlc3QoKX19LDU2NDMyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''b2U9Uig3MTk5MykseD1SKDkwNTA5KSxtPVIoMzI0Nyksc2U9UigyNzA1NCkuQnVmZmVyLE09Uig4MzQwNyksTz1SKDM2NjM2KSxJPVIoMjU0NDMpLGo9c2UuYWxsb2MoMTI4KTtmdW5jdGlvbiBHKEQsVCl7bS5jYWxsKHRoaXMsImRpZ2VzdCIpLCJzdHJpbmciPT10eXBlb2YgVCYmKFQ9c2Uu''@;'; put 'put ''ZnJvbShUKSk7dmFyIEU9InNoYTUxMiI9PT1EfHwic2hhMzg0Ij09PUQ/MTI4OjY0O3RoaXMuX2FsZz1ELHRoaXMuX2tleT1ULFQubGVuZ3RoPkU/VD0oInJtZDE2MCI9PT1EP25ldyBPOkkoRCkpLnVwZGF0ZShUKS5kaWdlc3QoKTpULmxlbmd0aDxFJiYoVD1zZS5jb25jYXQoW1Qsal0sRSkp''@;'; put 'put ''O2Zvcih2YXIgTj10aGlzLl9pcGFkPXNlLmFsbG9jVW5zYWZlKEUpLEI9dGhpcy5fb3BhZD1zZS5hbGxvY1Vuc2FmZShFKSxaPTA7WjxFO1orKylOW1pdPTU0XlRbWl0sQltaXT05Ml5UW1pdO3RoaXMuX2hhc2g9InJtZDE2MCI9PT1EP25ldyBPOkkoRCksdGhpcy5faGFzaC51cGRhdGUoTil9''@;'; put 'put ''b2UoRyxtKSxHLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEQpe3RoaXMuX2hhc2gudXBkYXRlKEQpfSxHLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgRD10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybigicm1kMTYwIj09PXRoaXMuX2FsZz9uZXcgTzpJKHRoaXMuX2FsZykp''@;'; put 'put ''LnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoRCkuZGlnZXN0KCl9LFFlLmV4cG9ydHM9ZnVuY3Rpb24oVCxFKXtyZXR1cm4icm1kMTYwIj09PShUPVQudG9Mb3dlckNhc2UoKSl8fCJyaXBlbWQxNjAiPT09VD9uZXcgRygicm1kMTYwIixFKToibWQ1Ij09PVQ/bmV3IHgoTSxFKTpuZXcgRyhU''@;'; put 'put ''LEUpfX0sOTA1MDk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDcxOTkzKSx4PVIoMjcwNTQpLkJ1ZmZlcixtPVIoMzI0Nyksc2U9eC5hbGxvYygxMjgpLE09NjQ7ZnVuY3Rpb24gTyhJLGope20uY2FsbCh0aGlzLCJkaWdlc3QiKSwic3RyaW5nIj09dHlwZW9mIGomJihqPXgu''@;'; put 'put ''ZnJvbShqKSksdGhpcy5fYWxnPUksdGhpcy5fa2V5PWosai5sZW5ndGg+TT9qPUkoaik6ai5sZW5ndGg8TSYmKGo9eC5jb25jYXQoW2osc2VdLE0pKTtmb3IodmFyIEc9dGhpcy5faXBhZD14LmFsbG9jVW5zYWZlKE0pLEQ9dGhpcy5fb3BhZD14LmFsbG9jVW5zYWZlKE0pLFQ9MDtUPE07VCsr''@;'; put 'put ''KUdbVF09NTRealtUXSxEW1RdPTkyXmpbVF07dGhpcy5faGFzaD1bR119b2UoTyxtKSxPLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKEkpe3RoaXMuX2hhc2gucHVzaChJKX0sTy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIEk9dGhpcy5fYWxnKHguY29uY2F0KHRoaXMuX2hh''@;'; put 'put ''c2gpKTtyZXR1cm4gdGhpcy5fYWxnKHguY29uY2F0KFt0aGlzLl9vcGFkLEldKSl9LFFlLmV4cG9ydHM9T30sOTE0MjY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO01lLnJhbmRvbUJ5dGVzPU1lLnJuZz1NZS5wc2V1ZG9SYW5kb21CeXRlcz1NZS5wcm5nPVIoMzM0MiksTWUuY3JlYXRlSGFz''@;'; put 'put ''aD1NZS5IYXNoPVIoNjcyMTEpLE1lLmNyZWF0ZUhtYWM9TWUuSG1hYz1SKDU2NDMyKTt2YXIgb2U9Uig5OTU2MCkseD1PYmplY3Qua2V5cyhvZSksbT1bInNoYTEiLCJzaGEyMjQiLCJzaGEyNTYiLCJzaGEzODQiLCJzaGE1MTIiLCJtZDUiLCJybWQxNjAiXS5jb25jYXQoeCk7TWUuZ2V0SGFz''@;'; put 'put ''aGVzPWZ1bmN0aW9uKCl7cmV0dXJuIG19O3ZhciBzZT1SKDkzMzk3KTtNZS5wYmtkZjI9c2UucGJrZGYyLE1lLnBia2RmMlN5bmM9c2UucGJrZGYyU3luYzt2YXIgTT1SKDg4ODYyKTtNZS5DaXBoZXI9TS5DaXBoZXIsTWUuY3JlYXRlQ2lwaGVyPU0uY3JlYXRlQ2lwaGVyLE1lLkNpcGhlcml2''@;'; put 'put ''PU0uQ2lwaGVyaXYsTWUuY3JlYXRlQ2lwaGVyaXY9TS5jcmVhdGVDaXBoZXJpdixNZS5EZWNpcGhlcj1NLkRlY2lwaGVyLE1lLmNyZWF0ZURlY2lwaGVyPU0uY3JlYXRlRGVjaXBoZXIsTWUuRGVjaXBoZXJpdj1NLkRlY2lwaGVyaXYsTWUuY3JlYXRlRGVjaXBoZXJpdj1NLmNyZWF0ZURlY2lw''@;'; put 'put ''aGVyaXYsTWUuZ2V0Q2lwaGVycz1NLmdldENpcGhlcnMsTWUubGlzdENpcGhlcnM9TS5saXN0Q2lwaGVyczt2YXIgTz1SKDQzNzcpO01lLkRpZmZpZUhlbGxtYW5Hcm91cD1PLkRpZmZpZUhlbGxtYW5Hcm91cCxNZS5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9Ty5jcmVhdGVEaWZmaWVIZWxs''@;'; put 'put ''bWFuR3JvdXAsTWUuZ2V0RGlmZmllSGVsbG1hbj1PLmdldERpZmZpZUhlbGxtYW4sTWUuY3JlYXRlRGlmZmllSGVsbG1hbj1PLmNyZWF0ZURpZmZpZUhlbGxtYW4sTWUuRGlmZmllSGVsbG1hbj1PLkRpZmZpZUhlbGxtYW47dmFyIEk9Uig3OTE0Myk7TWUuY3JlYXRlU2lnbj1JLmNyZWF0ZVNp''@;'; put 'put ''Z24sTWUuU2lnbj1JLlNpZ24sTWUuY3JlYXRlVmVyaWZ5PUkuY3JlYXRlVmVyaWZ5LE1lLlZlcmlmeT1JLlZlcmlmeSxNZS5jcmVhdGVFQ0RIPVIoODczMDMpO3ZhciBqPVIoNTI5NjUpO01lLnB1YmxpY0VuY3J5cHQ9ai5wdWJsaWNFbmNyeXB0LE1lLnByaXZhdGVFbmNyeXB0PWoucHJpdmF0''@;'; put 'put ''ZUVuY3J5cHQsTWUucHVibGljRGVjcnlwdD1qLnB1YmxpY0RlY3J5cHQsTWUucHJpdmF0ZURlY3J5cHQ9ai5wcml2YXRlRGVjcnlwdDt2YXIgRz1SKDk2ODIpO01lLnJhbmRvbUZpbGw9Ry5yYW5kb21GaWxsLE1lLnJhbmRvbUZpbGxTeW5jPUcucmFuZG9tRmlsbFN5bmMsTWUuY3JlYXRlQ3Jl''@;'; put 'put ''ZGVudGlhbHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoWyJzb3JyeSwgY3JlYXRlQ3JlZGVudGlhbHMgaXMgbm90IGltcGxlbWVudGVkIHlldCIsIndlIGFjY2VwdCBwdWxsIHJlcXVlc3RzIiwiaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2Vy''@;'; put 'put ''aWZ5Il0uam9pbigiXG4iKSl9LE1lLmNvbnN0YW50cz17REhfQ0hFQ0tfUF9OT1RfU0FGRV9QUklNRToyLERIX0NIRUNLX1BfTk9UX1BSSU1FOjEsREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUjo0LERIX05PVF9TVUlUQUJMRV9HRU5FUkFUT1I6OCxOUE5fRU5BQkxFRDoxLEFMUE5fRU5B''@;'; put 'put ''QkxFRDoxLFJTQV9QS0NTMV9QQURESU5HOjEsUlNBX1NTTFYyM19QQURESU5HOjIsUlNBX05PX1BBRERJTkc6MyxSU0FfUEtDUzFfT0FFUF9QQURESU5HOjQsUlNBX1g5MzFfUEFERElORzo1LFJTQV9QS0NTMV9QU1NfUEFERElORzo2LFBPSU5UX0NPTlZFUlNJT05fQ09NUFJFU1NFRDoyLFBP''@;'; put 'put ''SU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEOjQsUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQ6Nn19LDE3NjU2OmZ1bmN0aW9uKFFlLE1lLFIpe3ZhciBvZTtRZS5leHBvcnRzPShvZT1vZXx8ZnVuY3Rpb24oeCxtKXt2YXIgc2U7aWYodHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5jcnlwdG8m''@;'; put 'put ''JihzZT13aW5kb3cuY3J5cHRvKSx0eXBlb2Ygc2VsZjwidSImJnNlbGYuY3J5cHRvJiYoc2U9c2VsZi5jcnlwdG8pLHR5cGVvZiBnbG9iYWxUaGlzPCJ1IiYmZ2xvYmFsVGhpcy5jcnlwdG8mJihzZT1nbG9iYWxUaGlzLmNyeXB0byksIXNlJiZ0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93Lm1z''@;'; put 'put ''Q3J5cHRvJiYoc2U9d2luZG93Lm1zQ3J5cHRvKSwhc2UmJnR5cGVvZiBnbG9iYWw8InUiJiZnbG9iYWwuY3J5cHRvJiYoc2U9Z2xvYmFsLmNyeXB0byksIXNlKXRyeXtzZT1SKDkxNDI2KX1jYXRjaHt9dmFyIE09ZnVuY3Rpb24oKXtpZihzZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHNlLmdl''@;'; put 'put ''dFJhbmRvbVZhbHVlcyl0cnl7cmV0dXJuIHNlLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMSkpWzBdfWNhdGNoe31pZigiZnVuY3Rpb24iPT10eXBlb2Ygc2UucmFuZG9tQnl0ZXMpdHJ5e3JldHVybiBzZS5yYW5kb21CeXRlcyg0KS5yZWFkSW50MzJMRSgpfWNhdGNoe319dGhy''@;'; put 'put ''b3cgbmV3IEVycm9yKCJOYXRpdmUgY3J5cHRvIG1vZHVsZSBjb3VsZCBub3QgYmUgdXNlZCB0byBnZXQgc2VjdXJlIHJhbmRvbSBudW1iZXIuIil9LE89T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiBVKCl7fXJldHVybiBmdW5jdGlvbihxKXt2YXIgSjtyZXR1cm4gVS5wcm90''@;'; put 'put ''b3R5cGU9cSxKPW5ldyBVLFUucHJvdG90eXBlPW51bGwsSn19KCksST17fSxqPUkubGliPXt9LEc9ai5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbihVKXt2YXIgcT1PKHRoaXMpO3JldHVybiBVJiZxLm1peEluKFUpLCghcS5oYXNPd25Qcm9wZXJ0eSgiaW5pdCIpfHx0''@;'; put 'put ''aGlzLmluaXQ9PT1xLmluaXQpJiYocS5pbml0PWZ1bmN0aW9uKCl7cS4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxxLmluaXQucHJvdG90eXBlPXEscS4kc3VwZXI9dGhpcyxxfSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgVT10aGlzLmV4dGVuZCgpO3JldHVybiBVLmluaXQu''@;'; put 'put ''YXBwbHkoVSxhcmd1bWVudHMpLFV9LGluaXQ6ZnVuY3Rpb24oKXt9LG1peEluOmZ1bmN0aW9uKFUpe2Zvcih2YXIgcSBpbiBVKVUuaGFzT3duUHJvcGVydHkocSkmJih0aGlzW3FdPVVbcV0pO1UuaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJih0aGlzLnRvU3RyaW5nPVUudG9TdHJpbmcp''@;'; put 'put ''fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLEQ9ai5Xb3JkQXJyYXk9Ry5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oVSxxKXtVPXRoaXMud29yZHM9VXx8W10sdGhpcy5zaWdCeXRlcz1udWxsIT1xP3E6NCpVLmxlbmd0aH0sdG9T''@;'; put 'put ''dHJpbmc6ZnVuY3Rpb24oVSl7cmV0dXJuKFV8fEUpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKFUpe3ZhciBxPXRoaXMud29yZHMsSj1VLndvcmRzLGVlPXRoaXMuc2lnQnl0ZXMscmU9VS5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksZWUlNClmb3IodmFyIGllPTA7aWU8cmU7''@;'; put 'put ''aWUrKylxW2VlK2llPj4+Ml18PShKW2llPj4+Ml0+Pj4yNC1pZSU0KjgmMjU1KTw8MjQtKGVlK2llKSU0Kjg7ZWxzZSBmb3IodmFyIGxlPTA7bGU8cmU7bGUrPTQpcVtlZStsZT4+PjJdPUpbbGU+Pj4yXTtyZXR1cm4gdGhpcy5zaWdCeXRlcys9cmUsdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2''@;'; put 'put ''YXIgVT10aGlzLndvcmRzLHE9dGhpcy5zaWdCeXRlcztVW3E+Pj4yXSY9NDI5NDk2NzI5NTw8MzItcSU0KjgsVS5sZW5ndGg9eC5jZWlsKHEvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIFU9Ry5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBVLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksVX0s''@;'; put 'put ''cmFuZG9tOmZ1bmN0aW9uKFUpe2Zvcih2YXIgcT1bXSxKPTA7SjxVO0orPTQpcS5wdXNoKE0oKSk7cmV0dXJuIG5ldyBELmluaXQocSxVKX19KSxUPUkuZW5jPXt9LEU9VC5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbihVKXtmb3IodmFyIHE9VS53b3JkcyxKPVUuc2lnQnl0ZXMsZWU9W10scmU9''@;'; put 'put ''MDtyZTxKO3JlKyspe3ZhciBpZT1xW3JlPj4+Ml0+Pj4yNC1yZSU0KjgmMjU1O2VlLnB1c2goKGllPj4+NCkudG9TdHJpbmcoMTYpKSxlZS5wdXNoKCgxNSZpZSkudG9TdHJpbmcoMTYpKX1yZXR1cm4gZWUuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKFUpe2Zvcih2YXIgcT1VLmxlbmd0aCxK''@;'; put 'put ''PVtdLGVlPTA7ZWU8cTtlZSs9MilKW2VlPj4+M118PXBhcnNlSW50KFUuc3Vic3RyKGVlLDIpLDE2KTw8MjQtZWUlOCo0O3JldHVybiBuZXcgRC5pbml0KEoscS8yKX19LHo9VC5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbihVKXtmb3IodmFyIHE9VS53b3JkcyxKPVUuc2lnQnl0ZXMsZWU9''@;'; put 'put ''W10scmU9MDtyZTxKO3JlKyspZWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHFbcmU+Pj4yXT4+PjI0LXJlJTQqOCYyNTUpKTtyZXR1cm4gZWUuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKFUpe2Zvcih2YXIgcT1VLmxlbmd0aCxKPVtdLGVlPTA7ZWU8cTtlZSsrKUpbZWU+Pj4yXXw9KDI1''@;'; put 'put ''NSZVLmNoYXJDb2RlQXQoZWUpKTw8MjQtZWUlNCo4O3JldHVybiBuZXcgRC5pbml0KEoscSl9fSxOPVQuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKFUpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh6LnN0cmluZ2lmeShVKSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigi''@;'; put 'put ''TWFsZm9ybWVkIFVURi04IGRhdGEiKX19LHBhcnNlOmZ1bmN0aW9uKFUpe3JldHVybiB6LnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChVKSkpfX0sQj1qLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG09Ry5leHRlbmQoe3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgRC5p''@;'; put 'put ''bml0LHRoaXMuX25EYXRhQnl0ZXM9MH0sX2FwcGVuZDpmdW5jdGlvbihVKXsic3RyaW5nIj09dHlwZW9mIFUmJihVPU4ucGFyc2UoVSkpLHRoaXMuX2RhdGEuY29uY2F0KFUpLHRoaXMuX25EYXRhQnl0ZXMrPVUuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKFUpe3ZhciBxLEo9dGhpcy5f''@;'; put 'put ''ZGF0YSxlZT1KLndvcmRzLHJlPUouc2lnQnl0ZXMsaWU9dGhpcy5ibG9ja1NpemUsbGU9cmUvKDQqaWUpLGFlPShsZT1VP3guY2VpbChsZSk6eC5tYXgoKDB8bGUpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCkpKmllLFc9eC5taW4oNCphZSxyZSk7aWYoYWUpe2Zvcih2YXIgYj0wO2I8YWU7Yis9''@;'; put 'put ''aWUpdGhpcy5fZG9Qcm9jZXNzQmxvY2soZWUsYik7cT1lZS5zcGxpY2UoMCxhZSksSi5zaWdCeXRlcy09V31yZXR1cm4gbmV3IEQuaW5pdChxLFcpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBVPUcuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gVS5fZGF0YT10aGlzLl9kYXRhLmNsb25lKCksVX0s''@;'; put 'put ''X21pbkJ1ZmZlclNpemU6MH0pLFk9KGouSGFzaGVyPUIuZXh0ZW5kKHtjZmc6Ry5leHRlbmQoKSxpbml0OmZ1bmN0aW9uKFUpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZChVKSx0aGlzLnJlc2V0KCl9LHJlc2V0OmZ1bmN0aW9uKCl7Qi5yZXNldC5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQo''@;'; put 'put ''KX0sdXBkYXRlOmZ1bmN0aW9uKFUpe3JldHVybiB0aGlzLl9hcHBlbmQoVSksdGhpcy5fcHJvY2VzcygpLHRoaXN9LGZpbmFsaXplOmZ1bmN0aW9uKFUpe3JldHVybiBVJiZ0aGlzLl9hcHBlbmQoVSksdGhpcy5fZG9GaW5hbGl6ZSgpfSxibG9ja1NpemU6MTYsX2NyZWF0ZUhlbHBlcjpmdW5j''@;'; put 'put ''dGlvbihVKXtyZXR1cm4gZnVuY3Rpb24ocSxKKXtyZXR1cm4gbmV3IFUuaW5pdChKKS5maW5hbGl6ZShxKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKFUpe3JldHVybiBmdW5jdGlvbihxLEope3JldHVybiBuZXcgWS5ITUFDLmluaXQoVSxKKS5maW5hbGl6ZShxKX19fSksSS5hbGdv''@;'; put 'put ''PXt9KTtyZXR1cm4gSX0oTWF0aCksb2UpfSw3ODg1NTpmdW5jdGlvbihRZSxNZSxSKXt2YXIgb2U7UWUuZXhwb3J0cz0ob2U9UigxNzY1NiksZnVuY3Rpb24oeCl7dmFyIG09b2Usc2U9bS5saWIsTT1zZS5Xb3JkQXJyYXksTz1zZS5IYXNoZXIsST1tLmFsZ28saj1bXTshZnVuY3Rpb24oKXtm''@;'; put 'put ''b3IodmFyIE49MDtOPDY0O04rKylqW05dPTQyOTQ5NjcyOTYqeC5hYnMoeC5zaW4oTisxKSl8MH0oKTt2YXIgRz1JLk1ENT1PLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBNLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3''@;'; put 'put ''OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oTixCKXtmb3IodmFyIFo9MDtaPDE2O1orKyl7dmFyIFk9QitaLFU9TltZXTtOW1ldPTE2NzExOTM1JihVPDw4fFU+Pj4yNCl8NDI3ODI1NTM2MCYoVTw8MjR8VT4+PjgpfXZhciBxPXRoaXMuX2hhc2gud29yZHMsSj1OW0IrMF0sZWU9TltC''@;'; put 'put ''KzFdLHJlPU5bQisyXSxpZT1OW0IrM10sdWU9TltCKzRdLGxlPU5bQis1XSxhZT1OW0IrNl0sVz1OW0IrN10sYj1OW0IrOF0sQT1OW0IrOV0sRj1OW0IrMTBdLEg9TltCKzExXSxnPU5bQisxMl0sQz1OW0IrMTNdLGs9TltCKzE0XSxfPU5bQisxNV0scD1xWzBdLHc9cVsxXSxLPXFbMl0sdGU9''@;'; put 'put ''cVszXTtwPUQocCx3LEssdGUsSiw3LGpbMF0pLHRlPUQodGUscCx3LEssZWUsMTIsalsxXSksSz1EKEssdGUscCx3LHJlLDE3LGpbMl0pLHc9RCh3LEssdGUscCxpZSwyMixqWzNdKSxwPUQocCx3LEssdGUsdWUsNyxqWzRdKSx0ZT1EKHRlLHAsdyxLLGxlLDEyLGpbNV0pLEs9RChLLHRlLHAs''@;'; put 'put ''dyxhZSwxNyxqWzZdKSx3PUQodyxLLHRlLHAsVywyMixqWzddKSxwPUQocCx3LEssdGUsYiw3LGpbOF0pLHRlPUQodGUscCx3LEssQSwxMixqWzldKSxLPUQoSyx0ZSxwLHcsRiwxNyxqWzEwXSksdz1EKHcsSyx0ZSxwLEgsMjIsalsxMV0pLHA9RChwLHcsSyx0ZSxnLDcsalsxMl0pLHRlPUQo''@;'; put 'put ''dGUscCx3LEssQywxMixqWzEzXSksSz1EKEssdGUscCx3LGssMTcsalsxNF0pLHA9VChwLHc9RCh3LEssdGUscCxfLDIyLGpbMTVdKSxLLHRlLGVlLDUsalsxNl0pLHRlPVQodGUscCx3LEssYWUsOSxqWzE3XSksSz1UKEssdGUscCx3LEgsMTQsalsxOF0pLHc9VCh3LEssdGUscCxKLDIwLGpb''@;'; put 'put ''MTldKSxwPVQocCx3LEssdGUsbGUsNSxqWzIwXSksdGU9VCh0ZSxwLHcsSyxGLDksalsyMV0pLEs9VChLLHRlLHAsdyxfLDE0LGpbMjJdKSx3PVQodyxLLHRlLHAsdWUsMjAsalsyM10pLHA9VChwLHcsSyx0ZSxBLDUsalsyNF0pLHRlPVQodGUscCx3LEssayw5LGpbMjVdKSxLPVQoSyx0ZSxw''@;'; put 'put ''LHcsaWUsMTQsalsyNl0pLHc9VCh3LEssdGUscCxiLDIwLGpbMjddKSxwPVQocCx3LEssdGUsQyw1LGpbMjhdKSx0ZT1UKHRlLHAsdyxLLHJlLDksalsyOV0pLEs9VChLLHRlLHAsdyxXLDE0LGpbMzBdKSxwPUUocCx3PVQodyxLLHRlLHAsZywyMCxqWzMxXSksSyx0ZSxsZSw0LGpbMzJdKSx0''@;'; put 'put ''ZT1FKHRlLHAsdyxLLGIsMTEsalszM10pLEs9RShLLHRlLHAsdyxILDE2LGpbMzRdKSx3PUUodyxLLHRlLHAsaywyMyxqWzM1XSkscD1FKHAsdyxLLHRlLGVlLDQsalszNl0pLHRlPUUodGUscCx3LEssdWUsMTEsalszN10pLEs9RShLLHRlLHAsdyxXLDE2LGpbMzhdKSx3PUUodyxLLHRlLHAs''@;'; put 'put ''RiwyMyxqWzM5XSkscD1FKHAsdyxLLHRlLEMsNCxqWzQwXSksdGU9RSh0ZSxwLHcsSyxKLDExLGpbNDFdKSxLPUUoSyx0ZSxwLHcsaWUsMTYsals0Ml0pLHc9RSh3LEssdGUscCxhZSwyMyxqWzQzXSkscD1FKHAsdyxLLHRlLEEsNCxqWzQ0XSksdGU9RSh0ZSxwLHcsSyxnLDExLGpbNDVdKSxL''@;'; put 'put ''PUUoSyx0ZSxwLHcsXywxNixqWzQ2XSkscD16KHAsdz1FKHcsSyx0ZSxwLHJlLDIzLGpbNDddKSxLLHRlLEosNixqWzQ4XSksdGU9eih0ZSxwLHcsSyxXLDEwLGpbNDldKSxLPXooSyx0ZSxwLHcsaywxNSxqWzUwXSksdz16KHcsSyx0ZSxwLGxlLDIxLGpbNTFdKSxwPXoocCx3LEssdGUsZyw2''@;'; put 'put ''LGpbNTJdKSx0ZT16KHRlLHAsdyxLLGllLDEwLGpbNTNdKSxLPXooSyx0ZSxwLHcsRiwxNSxqWzU0XSksdz16KHcsSyx0ZSxwLGVlLDIxLGpbNTVdKSxwPXoocCx3LEssdGUsYiw2LGpbNTZdKSx0ZT16KHRlLHAsdyxLLF8sMTAsals1N10pLEs9eihLLHRlLHAsdyxhZSwxNSxqWzU4XSksdz16''@;'; put 'put ''KHcsSyx0ZSxwLEMsMjEsals1OV0pLHA9eihwLHcsSyx0ZSx1ZSw2LGpbNjBdKSx0ZT16KHRlLHAsdyxLLEgsMTAsals2MV0pLEs9eihLLHRlLHAsdyxyZSwxNSxqWzYyXSksdz16KHcsSyx0ZSxwLEEsMjEsals2M10pLHFbMF09cVswXStwfDAscVsxXT1xWzFdK3d8MCxxWzJdPXFbMl0rS3ww''@;'; put 'put ''LHFbM109cVszXSt0ZXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBOPXRoaXMuX2RhdGEsQj1OLndvcmRzLFo9OCp0aGlzLl9uRGF0YUJ5dGVzLFk9OCpOLnNpZ0J5dGVzO0JbWT4+PjVdfD0xMjg8PDI0LVklMzI7dmFyIFU9eC5mbG9vcihaLzQyOTQ5NjcyOTYpLHE9WjtCWzE1KyhZ''@;'; put 'put ''KzY0Pj4+OTw8NCldPTE2NzExOTM1JihVPDw4fFU+Pj4yNCl8NDI3ODI1NTM2MCYoVTw8MjR8VT4+PjgpLEJbMTQrKFkrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKHE8PDh8cT4+PjI0KXw0Mjc4MjU1MzYwJihxPDwyNHxxPj4+OCksTi5zaWdCeXRlcz00KihCLmxlbmd0aCsxKSx0aGlzLl9wcm9j''@;'; put 'put ''ZXNzKCk7Zm9yKHZhciBKPXRoaXMuX2hhc2gsZWU9Si53b3JkcyxyZT0wO3JlPDQ7cmUrKyl7dmFyIGllPWVlW3JlXTtlZVtyZV09MTY3MTE5MzUmKGllPDw4fGllPj4+MjQpfDQyNzgyNTUzNjAmKGllPDwyNHxpZT4+PjgpfXJldHVybiBKfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBOPU8uY2xv''@;'; put 'put ''bmUuY2FsbCh0aGlzKTtyZXR1cm4gTi5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksTn19KTtmdW5jdGlvbiBEKE4sQixaLFksVSxxLEope3ZhciBlZT1OKyhCJlp8fkImWSkrVStKO3JldHVybihlZTw8cXxlZT4+PjMyLXEpK0J9ZnVuY3Rpb24gVChOLEIsWixZLFUscSxKKXt2YXIgZWU9Tiso''@;'; put 'put ''QiZZfFomflkpK1UrSjtyZXR1cm4oZWU8PHF8ZWU+Pj4zMi1xKStCfWZ1bmN0aW9uIEUoTixCLFosWSxVLHEsSil7dmFyIGVlPU4rKEJeWl5ZKStVK0o7cmV0dXJuKGVlPDxxfGVlPj4+MzItcSkrQn1mdW5jdGlvbiB6KE4sQixaLFksVSxxLEope3ZhciBlZT1OKyhaXihCfH5ZKSkrVStKO3Jl''@;'; put 'put ''dHVybihlZTw8cXxlZT4+PjMyLXEpK0J9bS5NRDU9Ty5fY3JlYXRlSGVscGVyKEcpLG0uSG1hY01ENT1PLl9jcmVhdGVIbWFjSGVscGVyKEcpfShNYXRoKSxvZS5NRDUpfSw3MTU0OTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7TWUudXRpbHM9Uig4NTY3MSksTWUuQ2lwaGVyPVIoMTAyMTkp''@;'; put 'put ''LE1lLkRFUz1SKDY0MTY2KSxNZS5DQkM9Uig4ODgwMCksTWUuRURFPVIoNjIxMjIpfSw4ODgwMDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzkyMTApLHg9Uig3MTk5MyksbT17fTtmdW5jdGlvbiBzZShPKXtvZS5lcXVhbChPLmxlbmd0aCw4LCJJbnZhbGlkIElWIGxlbmd0''@;'; put 'put ''aCIpLHRoaXMuaXY9bmV3IEFycmF5KDgpO2Zvcih2YXIgST0wO0k8dGhpcy5pdi5sZW5ndGg7SSsrKXRoaXMuaXZbSV09T1tJXX1NZS5pbnN0YW50aWF0ZT1mdW5jdGlvbiBNKE8pe2Z1bmN0aW9uIEkoVCl7Ty5jYWxsKHRoaXMsVCksdGhpcy5fY2JjSW5pdCgpfXgoSSxPKTtmb3IodmFyIGo9''@;'; put 'put ''T2JqZWN0LmtleXMobSksRz0wO0c8ai5sZW5ndGg7RysrKXt2YXIgRD1qW0ddO0kucHJvdG90eXBlW0RdPW1bRF19cmV0dXJuIEkuY3JlYXRlPWZ1bmN0aW9uKEUpe3JldHVybiBuZXcgSShFKX0sSX0sbS5fY2JjSW5pdD1mdW5jdGlvbigpe3ZhciBJPW5ldyBzZSh0aGlzLm9wdGlvbnMuaXYp''@;'; put 'put ''O3RoaXMuX2NiY1N0YXRlPUl9LG0uX3VwZGF0ZT1mdW5jdGlvbihJLGosRyxEKXt2YXIgRT10aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGUsej10aGlzLl9jYmNTdGF0ZS5pdjtpZigiZW5jcnlwdCI9PT10aGlzLnR5cGUpe2Zvcih2YXIgTj0wO048dGhpcy5ibG9ja1NpemU7Tisr''@;'; put 'put ''KXpbTl1ePUlbaitOXTtmb3IoRS5fdXBkYXRlLmNhbGwodGhpcyx6LDAsRyxEKSxOPTA7Tjx0aGlzLmJsb2NrU2l6ZTtOKyspeltOXT1HW0QrTl19ZWxzZXtmb3IoRS5fdXBkYXRlLmNhbGwodGhpcyxJLGosRyxEKSxOPTA7Tjx0aGlzLmJsb2NrU2l6ZTtOKyspR1tEK05dXj16W05dO2ZvcihO''@;'; put 'put ''PTA7Tjx0aGlzLmJsb2NrU2l6ZTtOKyspeltOXT1JW2orTl19fX0sMTAyMTk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM5MjEwKTtmdW5jdGlvbiB4KG0pe3RoaXMub3B0aW9ucz1tLHRoaXMudHlwZT10aGlzLm9wdGlvbnMudHlwZSx0aGlzLmJsb2NrU2l6ZT04LHRoaXMu''@;'; put 'put ''X2luaXQoKSx0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpLHRoaXMuYnVmZmVyT2ZmPTAsdGhpcy5wYWRkaW5nPSExIT09bS5wYWRkaW5nfVFlLmV4cG9ydHM9eCx4LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30seC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHNl''@;'; put 'put ''KXtyZXR1cm4gMD09PXNlLmxlbmd0aD9bXToiZGVjcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fdXBkYXRlRGVjcnlwdChzZSk6dGhpcy5fdXBkYXRlRW5jcnlwdChzZSl9LHgucHJvdG90eXBlLl9idWZmZXI9ZnVuY3Rpb24oc2UsTSl7Zm9yKHZhciBPPU1hdGgubWluKHRoaXMuYnVmZmVyLmxl''@;'; put 'put ''bmd0aC10aGlzLmJ1ZmZlck9mZixzZS5sZW5ndGgtTSksST0wO0k8TztJKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYrSV09c2VbTStJXTtyZXR1cm4gdGhpcy5idWZmZXJPZmYrPU8sT30seC5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uKHNlLE0pe3JldHVybiB0aGlzLl91''@;'; put 'put ''cGRhdGUodGhpcy5idWZmZXIsMCxzZSxNKSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMuYmxvY2tTaXplfSx4LnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdD1mdW5jdGlvbihzZSl7dmFyIE09MCxPPTAsaj1uZXcgQXJyYXkoKCh0aGlzLmJ1ZmZlck9mZitzZS5sZW5ndGgpL3RoaXMuYmxvY2tTaXpl''@;'; put 'put ''fDApKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJihNKz10aGlzLl9idWZmZXIoc2UsTSksdGhpcy5idWZmZXJPZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJihPKz10aGlzLl9mbHVzaEJ1ZmZlcihqLE8pKSk7Zm9yKHZhciBHPXNlLmxlbmd0aC0oc2UubGVuZ3RoLU0pJXRo''@;'; put 'put ''aXMuYmxvY2tTaXplO008RztNKz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoc2UsTSxqLE8pLE8rPXRoaXMuYmxvY2tTaXplO2Zvcig7TTxzZS5sZW5ndGg7TSsrLHRoaXMuYnVmZmVyT2ZmKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdPXNlW01dO3JldHVybiBqfSx4LnByb3Rv''@;'; put 'put ''dHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihzZSl7Zm9yKHZhciBNPTAsTz0wLEk9TWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZitzZS5sZW5ndGgpL3RoaXMuYmxvY2tTaXplKS0xLGo9bmV3IEFycmF5KEkqdGhpcy5ibG9ja1NpemUpO0k+MDtJLS0pTSs9dGhpcy5fYnVmZmVyKHNlLE0p''@;'; put 'put ''LE8rPXRoaXMuX2ZsdXNoQnVmZmVyKGosTyk7cmV0dXJuIE0rPXRoaXMuX2J1ZmZlcihzZSxNKSxqfSx4LnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbihzZSl7dmFyIE0sTztyZXR1cm4gc2UmJihNPXRoaXMudXBkYXRlKHNlKSksTz0iZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhpcy5fZmluYWxF''@;'; put 'put ''bmNyeXB0KCk6dGhpcy5fZmluYWxEZWNyeXB0KCksTT9NLmNvbmNhdChPKTpPfSx4LnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKHNlLE0pe2lmKDA9PT1NKXJldHVybiExO2Zvcig7TTxzZS5sZW5ndGg7KXNlW00rK109MDtyZXR1cm4hMH0seC5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdD1mdW5j''@;'; put 'put ''dGlvbigpe2lmKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsdGhpcy5idWZmZXJPZmYpKXJldHVybltdO3ZhciBzZT1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO3JldHVybiB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsMCxzZSwwKSxzZX0seC5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKHNl''@;'; put 'put ''KXtyZXR1cm4gc2V9LHgucHJvdG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtvZS5lcXVhbCh0aGlzLmJ1ZmZlck9mZix0aGlzLmJsb2NrU2l6ZSwiTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQiKTt2YXIgc2U9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5f''@;'; put 'put ''Zmx1c2hCdWZmZXIoc2UsMCksdGhpcy5fdW5wYWQoc2UpfX0sNjQxNjY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM5MjEwKSx4PVIoNzE5OTMpLG09Uig4NTY3MSksc2U9UigxMDIxOSk7ZnVuY3Rpb24gTSgpe3RoaXMudG1wPW5ldyBBcnJheSgyKSx0aGlzLmtleXM9bnVs''@;'; put 'put ''bH1mdW5jdGlvbiBPKGope3NlLmNhbGwodGhpcyxqKTt2YXIgRz1uZXcgTTt0aGlzLl9kZXNTdGF0ZT1HLHRoaXMuZGVyaXZlS2V5cyhHLGoua2V5KX14KE8sc2UpLFFlLmV4cG9ydHM9TyxPLmNyZWF0ZT1mdW5jdGlvbihHKXtyZXR1cm4gbmV3IE8oRyl9O3ZhciBJPVsxLDEsMiwyLDIsMiwy''@;'; put 'put ''LDIsMSwyLDIsMiwyLDIsMiwxXTtPLnByb3RvdHlwZS5kZXJpdmVLZXlzPWZ1bmN0aW9uKEcsRCl7Ry5rZXlzPW5ldyBBcnJheSgzMiksb2UuZXF1YWwoRC5sZW5ndGgsdGhpcy5ibG9ja1NpemUsIkludmFsaWQga2V5IGxlbmd0aCIpO3ZhciBUPW0ucmVhZFVJbnQzMkJFKEQsMCksRT1tLnJl''@;'; put 'put ''YWRVSW50MzJCRShELDQpO20ucGMxKFQsRSxHLnRtcCwwKSxUPUcudG1wWzBdLEU9Ry50bXBbMV07Zm9yKHZhciB6PTA7ejxHLmtleXMubGVuZ3RoO3orPTIpe3ZhciBOPUlbej4+PjFdO1Q9bS5yMjhzaGwoVCxOKSxFPW0ucjI4c2hsKEUsTiksbS5wYzIoVCxFLEcua2V5cyx6KX19LE8ucHJv''@;'; put 'put ''dG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oRyxELFQsRSl7dmFyIHo9dGhpcy5fZGVzU3RhdGUsTj1tLnJlYWRVSW50MzJCRShHLEQpLEI9bS5yZWFkVUludDMyQkUoRyxEKzQpO20uaXAoTixCLHoudG1wLDApLE49ei50bXBbMF0sQj16LnRtcFsxXSwiZW5jcnlwdCI9PT10aGlzLnR5cGU/dGhp''@;'; put 'put ''cy5fZW5jcnlwdCh6LE4sQix6LnRtcCwwKTp0aGlzLl9kZWNyeXB0KHosTixCLHoudG1wLDApLEI9ei50bXBbMV0sbS53cml0ZVVJbnQzMkJFKFQsTj16LnRtcFswXSxFKSxtLndyaXRlVUludDMyQkUoVCxCLEUrNCl9LE8ucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oRyxEKXtpZighMT09PXRo''@;'; put 'put ''aXMucGFkZGluZylyZXR1cm4hMTtmb3IodmFyIFQ9Ry5sZW5ndGgtRCxFPUQ7RTxHLmxlbmd0aDtFKyspR1tFXT1UO3JldHVybiEwfSxPLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oRyl7aWYoITE9PT10aGlzLnBhZGRpbmcpcmV0dXJuIEc7Zm9yKHZhciBEPUdbRy5sZW5ndGgtMV0sVD1H''@;'; put 'put ''Lmxlbmd0aC1EO1Q8Ry5sZW5ndGg7VCsrKW9lLmVxdWFsKEdbVF0sRCk7cmV0dXJuIEcuc2xpY2UoMCxHLmxlbmd0aC1EKX0sTy5wcm90b3R5cGUuX2VuY3J5cHQ9ZnVuY3Rpb24oRyxELFQsRSx6KXtmb3IodmFyIE49RCxCPVQsWj0wO1o8Ry5rZXlzLmxlbmd0aDtaKz0yKXt2YXIgWT1HLmtl''@;'; put 'put ''eXNbWl0sVT1HLmtleXNbWisxXTttLmV4cGFuZChCLEcudG1wLDApO3ZhciBxPW0uc3Vic3RpdHV0ZShZXj1HLnRtcFswXSxVXj1HLnRtcFsxXSksZWU9QjtCPShOXm0ucGVybXV0ZShxKSk+Pj4wLE49ZWV9bS5yaXAoQixOLEUseil9LE8ucHJvdG90eXBlLl9kZWNyeXB0PWZ1bmN0aW9uKEcs''@;'; put 'put ''RCxULEUseil7Zm9yKHZhciBOPVQsQj1ELFo9Ry5rZXlzLmxlbmd0aC0yO1o+PTA7Wi09Mil7dmFyIFk9Ry5rZXlzW1pdLFU9Ry5rZXlzW1orMV07bS5leHBhbmQoTixHLnRtcCwwKTt2YXIgcT1tLnN1YnN0aXR1dGUoWV49Ry50bXBbMF0sVV49Ry50bXBbMV0pLGVlPU47Tj0oQl5tLnBlcm11''@;'; put 'put ''dGUocSkpPj4+MCxCPWVlfW0ucmlwKE4sQixFLHopfX0sNjIxMjI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM5MjEwKSx4PVIoNzE5OTMpLG09UigxMDIxOSksc2U9Uig2NDE2Nik7ZnVuY3Rpb24gTShJLGope29lLmVxdWFsKGoubGVuZ3RoLDI0LCJJbnZhbGlkIGtleSBs''@;'; put 'put ''ZW5ndGgiKTt2YXIgRz1qLnNsaWNlKDAsOCksRD1qLnNsaWNlKDgsMTYpLFQ9ai5zbGljZSgxNiwyNCk7dGhpcy5jaXBoZXJzPSJlbmNyeXB0Ij09PUk/W3NlLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Okd9KSxzZS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpEfSksc2UuY3JlYXRl''@;'; put 'put ''KHt0eXBlOiJlbmNyeXB0IixrZXk6VH0pXTpbc2UuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6VH0pLHNlLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5OkR9KSxzZS5jcmVhdGUoe3R5cGU6ImRlY3J5cHQiLGtleTpHfSldfWZ1bmN0aW9uIE8oSSl7bS5jYWxsKHRoaXMsSSk7dmFyIGo9''@;'; put 'put ''bmV3IE0odGhpcy50eXBlLHRoaXMub3B0aW9ucy5rZXkpO3RoaXMuX2VkZVN0YXRlPWp9eChPLG0pLFFlLmV4cG9ydHM9TyxPLmNyZWF0ZT1mdW5jdGlvbihqKXtyZXR1cm4gbmV3IE8oail9LE8ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oaixHLEQsVCl7dmFyIEU9dGhpcy5fZWRlU3Rh''@;'; put 'put ''dGU7RS5jaXBoZXJzWzBdLl91cGRhdGUoaixHLEQsVCksRS5jaXBoZXJzWzFdLl91cGRhdGUoRCxULEQsVCksRS5jaXBoZXJzWzJdLl91cGRhdGUoRCxULEQsVCl9LE8ucHJvdG90eXBlLl9wYWQ9c2UucHJvdG90eXBlLl9wYWQsTy5wcm90b3R5cGUuX3VucGFkPXNlLnByb3RvdHlwZS5fdW5w''@;'; put 'put ''YWR9LDg1NjcxOihRZSxNZSk9PnsidXNlIHN0cmljdCI7TWUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHNlLE0pe3JldHVybihzZVswK01dPDwyNHxzZVsxK01dPDwxNnxzZVsyK01dPDw4fHNlWzMrTV0pPj4+MH0sTWUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihzZSxNLE8pe3NlWzArT109TT4+''@;'; put 'put ''PjI0LHNlWzErT109TT4+PjE2JjI1NSxzZVsyK09dPU0+Pj44JjI1NSxzZVszK09dPTI1NSZNfSxNZS5pcD1mdW5jdGlvbihzZSxNLE8sSSl7Zm9yKHZhciBqPTAsRz0wLEQ9NjtEPj0wO0QtPTIpe2Zvcih2YXIgVD0wO1Q8PTI0O1QrPTgpajw8PTEsanw9TT4+PlQrRCYxO2ZvcihUPTA7VDw9''@;'; put 'put ''MjQ7VCs9OClqPDw9MSxqfD1zZT4+PlQrRCYxfWZvcihEPTY7RD49MDtELT0yKXtmb3IoVD0xO1Q8PTI1O1QrPTgpRzw8PTEsR3w9TT4+PlQrRCYxO2ZvcihUPTE7VDw9MjU7VCs9OClHPDw9MSxHfD1zZT4+PlQrRCYxfU9bSSswXT1qPj4+MCxPW0krMV09Rz4+PjB9LE1lLnJpcD1mdW5jdGlv''@;'; put 'put ''bihzZSxNLE8sSSl7Zm9yKHZhciBqPTAsRz0wLEQ9MDtEPDQ7RCsrKWZvcih2YXIgVD0yNDtUPj0wO1QtPTgpajw8PTEsanw9TT4+PlQrRCYxLGo8PD0xLGp8PXNlPj4+VCtEJjE7Zm9yKEQ9NDtEPDg7RCsrKWZvcihUPTI0O1Q+PTA7VC09OClHPDw9MSxHfD1NPj4+VCtEJjEsRzw8PTEsR3w9''@;'; put 'put ''c2U+Pj5UK0QmMTtPW0krMF09aj4+PjAsT1tJKzFdPUc+Pj4wfSxNZS5wYzE9ZnVuY3Rpb24oc2UsTSxPLEkpe2Zvcih2YXIgaj0wLEc9MCxEPTc7RD49NTtELS0pe2Zvcih2YXIgVD0wO1Q8PTI0O1QrPTgpajw8PTEsanw9TT4+VCtEJjE7Zm9yKFQ9MDtUPD0yNDtUKz04KWo8PD0xLGp8PXNl''@;'; put 'put ''Pj5UK0QmMX1mb3IoVD0wO1Q8PTI0O1QrPTgpajw8PTEsanw9TT4+VCtEJjE7Zm9yKEQ9MTtEPD0zO0QrKyl7Zm9yKFQ9MDtUPD0yNDtUKz04KUc8PD0xLEd8PU0+PlQrRCYxO2ZvcihUPTA7VDw9MjQ7VCs9OClHPDw9MSxHfD1zZT4+VCtEJjF9Zm9yKFQ9MDtUPD0yNDtUKz04KUc8PD0xLEd8''@;'; put 'put ''PXNlPj5UK0QmMTtPW0krMF09aj4+PjAsT1tJKzFdPUc+Pj4wfSxNZS5yMjhzaGw9ZnVuY3Rpb24oc2UsTSl7cmV0dXJuIHNlPDxNJjI2ODQzNTQ1NXxzZT4+PjI4LU19O3ZhciBSPVsxNCwxMSwxNyw0LDI3LDIzLDI1LDAsMTMsMjIsNywxOCw1LDksMTYsMjQsMiwyMCwxMiwyMSwxLDgsMTUs''@;'; put 'put ''MjYsMTUsNCwyNSwxOSw5LDEsMjYsMTYsNSwxMSwyMyw4LDEyLDcsMTcsMCwyMiwzLDEwLDE0LDYsMjAsMjcsMjRdO01lLnBjMj1mdW5jdGlvbihzZSxNLE8sSSl7Zm9yKHZhciBqPTAsRz0wLEQ9Ui5sZW5ndGg+Pj4xLFQ9MDtUPEQ7VCsrKWo8PD0xLGp8PXNlPj4+UltUXSYxO2ZvcihUPUQ7''@;'; put 'put ''VDxSLmxlbmd0aDtUKyspRzw8PTEsR3w9TT4+PlJbVF0mMTtPW0krMF09aj4+PjAsT1tJKzFdPUc+Pj4wfSxNZS5leHBhbmQ9ZnVuY3Rpb24oc2UsTSxPKXt2YXIgST0wLGo9MDtJPSgxJnNlKTw8NXxzZT4+PjI3O2Zvcih2YXIgRz0yMztHPj0xNTtHLT00KUk8PD02LEl8PXNlPj4+RyY2Mztm''@;'; put 'put ''b3IoRz0xMTtHPj0zO0ctPTQpanw9c2U+Pj5HJjYzLGo8PD02O2p8PSgzMSZzZSk8PDF8c2U+Pj4zMSxNW08rMF09ST4+PjAsTVtPKzFdPWo+Pj4wfTt2YXIgb2U9WzE0LDAsNCwxNSwxMyw3LDEsNCwyLDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUsOSw5LDUsMCwz''@;'; put 'put ''LDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUsMTEsMiwzLDgsNCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1LDAsMTMsMTQs''@;'; put 'put ''OCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMywwLDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAsMSwyLDEzLDgsMTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQsMTMsOSwwLDgs''@;'; put 'put ''NiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUsMCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIsNSwxMiwxMSwxLDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwxMSwxLDcsMTMs''@;'; put 'put ''MTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwxMyw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMsMCw5LDE0LDgsOSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEzLDE1LDYsOSwx''@;'; put 'put ''NSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywxLDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgsOSw0LDE0LDMsMTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwxLDEwLDcsMSw2''@;'; put 'put ''LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwxMywxMyw4LDEyLDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1LDIsOSwzLDIs''@;'; put 'put ''MTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDksNywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwxMCwxNCw4LDIsMTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07TWUuc3Vic3Rp''@;'; put 'put ''dHV0ZT1mdW5jdGlvbihzZSxNKXtmb3IodmFyIE89MCxJPTA7STw0O0krKylPPDw9NCxPfD1vZVs2NCpJKyhzZT4+PjE4LTYqSSY2MyldO2ZvcihJPTA7STw0O0krKylPPDw9NCxPfD1vZVsyNTYrNjQqSSsoTT4+PjE4LTYqSSY2MyldO3JldHVybiBPPj4+MH07dmFyIHg9WzE2LDI1LDEyLDEx''@;'; put 'put ''LDMsMjAsNCwxNSwzMSwxNyw5LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO01lLnBlcm11dGU9ZnVuY3Rpb24oc2Upe2Zvcih2YXIgTT0wLE89MDtPPHgubGVuZ3RoO08rKylNPDw9MSxNfD1zZT4+PnhbT10mMTtyZXR1cm4gTT4+PjB9''@;'; put 'put ''LE1lLnBhZFNwbGl0PWZ1bmN0aW9uKHNlLE0sTyl7Zm9yKHZhciBJPXNlLnRvU3RyaW5nKDIpO0kubGVuZ3RoPE07KUk9IjAiK0k7Zm9yKHZhciBqPVtdLEc9MDtHPE07Rys9TylqLnB1c2goSS5zbGljZShHLEcrTykpO3JldHVybiBqLmpvaW4oIiAiKX19LDQzNzc6KFFlLE1lLFIpPT57dmFy''@;'; put 'put ''IG9lPVIoMTI3MjcpLHg9UigyMzI0MSksbT1SKDk0NTkzKSxNPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07TWUuRGlmZmllSGVsbG1hbkdyb3VwPU1lLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD1NZS5nZXREaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIHNlKEkpe3ZhciBqPW5ldyBCdWZm''@;'; put 'put ''ZXIoeFtJXS5wcmltZSwiaGV4IiksRz1uZXcgQnVmZmVyKHhbSV0uZ2VuLCJoZXgiKTtyZXR1cm4gbmV3IG0oaixHKX0sTWUuY3JlYXRlRGlmZmllSGVsbG1hbj1NZS5EaWZmaWVIZWxsbWFuPWZ1bmN0aW9uIE8oSSxqLEcsRCl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihqKXx8dm9pZCAwPT09''@;'; put 'put ''TVtqXT9PKEksImJpbmFyeSIsaixHKTooaj1qfHwiYmluYXJ5IixEPUR8fCJiaW5hcnkiLEc9R3x8bmV3IEJ1ZmZlcihbMl0pLEJ1ZmZlci5pc0J1ZmZlcihHKXx8KEc9bmV3IEJ1ZmZlcihHLEQpKSwibnVtYmVyIj09dHlwZW9mIEk/bmV3IG0ob2UoSSxHKSxHLCEwKTooQnVmZmVyLmlzQnVm''@;'; put 'put ''ZmVyKEkpfHwoST1uZXcgQnVmZmVyKEksaikpLG5ldyBtKEksRywhMCkpKX19LDk0NTkzOihRZSxNZSxSKT0+e3ZhciBvZT1SKDM4MjgwKSxtPW5ldyhSKDUzNDU5KSksc2U9bmV3IG9lKDI0KSxNPW5ldyBvZSgxMSksTz1uZXcgb2UoMTApLEk9bmV3IG9lKDMpLGo9bmV3IG9lKDcpLEc9Uigx''@;'; put 'put ''MjcyNyksRD1SKDMzNDIpO2Z1bmN0aW9uIFQoWSxVKXtyZXR1cm4gVT1VfHwidXRmOCIsQnVmZmVyLmlzQnVmZmVyKFkpfHwoWT1uZXcgQnVmZmVyKFksVSkpLHRoaXMuX3B1Yj1uZXcgb2UoWSksdGhpc31mdW5jdGlvbiBFKFksVSl7cmV0dXJuIFU9VXx8InV0ZjgiLEJ1ZmZlci5pc0J1ZmZl''@;'; put 'put ''cihZKXx8KFk9bmV3IEJ1ZmZlcihZLFUpKSx0aGlzLl9wcml2PW5ldyBvZShZKSx0aGlzfVFlLmV4cG9ydHM9Qjt2YXIgej17fTtmdW5jdGlvbiBCKFksVSxxKXt0aGlzLnNldEdlbmVyYXRvcihVKSx0aGlzLl9fcHJpbWU9bmV3IG9lKFkpLHRoaXMuX3ByaW1lPW9lLm1vbnQodGhpcy5fX3By''@;'; put 'put ''aW1lKSx0aGlzLl9wcmltZUxlbj1ZLmxlbmd0aCx0aGlzLl9wdWI9dm9pZCAwLHRoaXMuX3ByaXY9dm9pZCAwLHRoaXMuX3ByaW1lQ29kZT12b2lkIDAscT8odGhpcy5zZXRQdWJsaWNLZXk9VCx0aGlzLnNldFByaXZhdGVLZXk9RSk6dGhpcy5fcHJpbWVDb2RlPTh9ZnVuY3Rpb24gWihZLFUp''@;'; put 'put ''e3ZhciBxPW5ldyBCdWZmZXIoWS50b0FycmF5KCkpO3JldHVybiBVP3EudG9TdHJpbmcoVSk6cX1PYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsInZlcmlmeUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHRoaXMuX3By''@;'; put 'put ''aW1lQ29kZSYmKHRoaXMuX3ByaW1lQ29kZT1mdW5jdGlvbiBOKFksVSl7dmFyIHE9VS50b1N0cmluZygiaGV4IiksSj1bcSxZLnRvU3RyaW5nKDE2KV0uam9pbigiXyIpO2lmKEogaW4geilyZXR1cm4geltKXTt2YXIgcmUsZWU9MDtpZihZLmlzRXZlbigpfHwhRy5zaW1wbGVTaWV2ZXx8IUcu''@;'; put 'put ''ZmVybWF0VGVzdChZKXx8IW0udGVzdChZKSlyZXR1cm4gZWUrPTEseltKXT1lZSs9IjAyIj09PXF8fCIwNSI9PT1xPzg6NCxlZTtzd2l0Y2gobS50ZXN0KFkuc2hybigxKSl8fChlZSs9MikscSl7Y2FzZSIwMiI6WS5tb2Qoc2UpLmNtcChNKSYmKGVlKz04KTticmVhaztjYXNlIjA1IjoocmU9''@;'; put 'put ''WS5tb2QoTykpLmNtcChJKSYmcmUuY21wKGopJiYoZWUrPTgpO2JyZWFrO2RlZmF1bHQ6ZWUrPTR9cmV0dXJuIHpbSl09ZWUsZWV9KHRoaXMuX19wcmltZSx0aGlzLl9fZ2VuKSksdGhpcy5fcHJpbWVDb2RlfX0pLEIucHJvdG90eXBlLmdlbmVyYXRlS2V5cz1mdW5jdGlvbigpe3JldHVybiB0''@;'; put 'put ''aGlzLl9wcml2fHwodGhpcy5fcHJpdj1uZXcgb2UoRCh0aGlzLl9wcmltZUxlbikpKSx0aGlzLl9wdWI9dGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpLHRoaXMuZ2V0UHVibGljS2V5KCl9LEIucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9''@;'; put 'put ''ZnVuY3Rpb24oWSl7dmFyIFU9KFk9KFk9bmV3IG9lKFkpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCkscT1uZXcgQnVmZmVyKFUudG9BcnJheSgpKSxKPXRoaXMuZ2V0UHJpbWUoKTtpZihxLmxlbmd0aDxKLmxlbmd0aCl7dmFyIGVlPW5ldyBCdWZm''@;'; put 'put ''ZXIoSi5sZW5ndGgtcS5sZW5ndGgpO2VlLmZpbGwoMCkscT1CdWZmZXIuY29uY2F0KFtlZSxxXSl9cmV0dXJuIHF9LEIucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihVKXtyZXR1cm4gWih0aGlzLl9wdWIsVSl9LEIucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oVSl7''@;'; put 'put ''cmV0dXJuIFoodGhpcy5fcHJpdixVKX0sQi5wcm90b3R5cGUuZ2V0UHJpbWU9ZnVuY3Rpb24oWSl7cmV0dXJuIFoodGhpcy5fX3ByaW1lLFkpfSxCLnByb3RvdHlwZS5nZXRHZW5lcmF0b3I9ZnVuY3Rpb24oWSl7cmV0dXJuIFoodGhpcy5fZ2VuLFkpfSxCLnByb3RvdHlwZS5zZXRHZW5lcmF0''@;'; put 'put ''b3I9ZnVuY3Rpb24oWSxVKXtyZXR1cm4gVT1VfHwidXRmOCIsQnVmZmVyLmlzQnVmZmVyKFkpfHwoWT1uZXcgQnVmZmVyKFksVSkpLHRoaXMuX19nZW49WSx0aGlzLl9nZW49bmV3IG9lKFkpLHRoaXN9fSwxMjcyNzooUWUsTWUsUik9Pnt2YXIgb2U9UigzMzQyKTtRZS5leHBvcnRzPWVlLGVl''@;'; put 'put ''LnNpbXBsZVNpZXZlPXEsZWUuZmVybWF0VGVzdD1KO3ZhciB4PVIoMzgyODApLG09bmV3IHgoMjQpLE09bmV3KFIoNTM0NTkpKSxPPW5ldyB4KDEpLEk9bmV3IHgoMiksaj1uZXcgeCg1KSxUPShuZXcgeCgxNiksbmV3IHgoOCksbmV3IHgoMTApKSxFPW5ldyB4KDMpLE49KG5ldyB4KDcpLG5l''@;'; put 'put ''dyB4KDExKSksQj1uZXcgeCg0KSxZPShuZXcgeCgxMiksbnVsbCk7ZnVuY3Rpb24gcShyZSl7Zm9yKHZhciBpZT1mdW5jdGlvbiBVKCl7aWYobnVsbCE9PVkpcmV0dXJuIFk7dmFyIGllPVtdO2llWzBdPTI7Zm9yKHZhciB1ZT0xLGxlPTM7bGU8MTA0ODU3NjtsZSs9Mil7Zm9yKHZhciBhZT1N''@;'; put 'put ''YXRoLmNlaWwoTWF0aC5zcXJ0KGxlKSksVz0wO1c8dWUmJmllW1ddPD1hZSYmbGUlaWVbV10hPTA7VysrKTt1ZSE9PVcmJmllW1ddPD1hZXx8KGllW3VlKytdPWxlKX1yZXR1cm4gWT1pZSxpZX0oKSx1ZT0wO3VlPGllLmxlbmd0aDt1ZSsrKWlmKDA9PT1yZS5tb2RuKGllW3VlXSkpcmV0dXJu''@;'; put 'put ''IDA9PT1yZS5jbXBuKGllW3VlXSk7cmV0dXJuITB9ZnVuY3Rpb24gSihyZSl7dmFyIGllPXgubW9udChyZSk7cmV0dXJuIDA9PT1JLnRvUmVkKGllKS5yZWRQb3cocmUuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSl9ZnVuY3Rpb24gZWUocmUsaWUpe2lmKHJlPDE2KXJldHVybiBuZXcgeCgy''@;'; put 'put ''PT09aWV8fDU9PT1pZT9bMTQwLDEyM106WzE0MCwzOV0pO2llPW5ldyB4KGllKTtmb3IodmFyIHVlLGxlOzspe2Zvcih1ZT1uZXcgeChvZShNYXRoLmNlaWwocmUvOCkpKTt1ZS5iaXRMZW5ndGgoKT5yZTspdWUuaXNocm4oMSk7aWYodWUuaXNFdmVuKCkmJnVlLmlhZGQoTyksdWUudGVzdG4o''@;'; put 'put ''MSl8fHVlLmlhZGQoSSksaWUuY21wKEkpKXtpZighaWUuY21wKGopKWZvcig7dWUubW9kKFQpLmNtcChFKTspdWUuaWFkZChCKX1lbHNlIGZvcig7dWUubW9kKG0pLmNtcChOKTspdWUuaWFkZChCKTtpZihxKGxlPXVlLnNocm4oMSkpJiZxKHVlKSYmSihsZSkmJkoodWUpJiZNLnRlc3QobGUp''@;'; put 'put ''JiZNLnRlc3QodWUpKXJldHVybiB1ZX19fSwzODI4MDpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UseCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oVyxiKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoYnx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBzZShXLGIpe1cuc3VwZXJf''@;'; put 'put ''PWI7dmFyIEE9ZnVuY3Rpb24oKXt9O0EucHJvdG90eXBlPWIucHJvdG90eXBlLFcucHJvdG90eXBlPW5ldyBBLFcucHJvdG90eXBlLmNvbnN0cnVjdG9yPVd9ZnVuY3Rpb24gTShXLGIsQSl7aWYoTS5pc0JOKFcpKXJldHVybiBXO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhp''@;'; put 'put ''cy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1XJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJihBPWIsYj0xMCksdGhpcy5faW5pdChXfHwwLGJ8fDEwLEF8fCJiZSIpKX12YXIgTzsib2JqZWN0Ij09dHlwZW9mIG9lP29lLmV4cG9ydHM9TTp4LkJOPU0sTS5CTj1NLE0ud29yZFNpemU9''@;'; put 'put ''MjY7dHJ5e089dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOlIoNjYwODkpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gSShXLGIpe3ZhciBBPVcuY2hhckNvZGVBdChiKTtyZXR1cm4gQT49NjUmJkE8PTcwP0EtNTU6QT49OTcmJkE8PTEw''@;'; put 'put ''Mj9BLTg3OkEtNDgmMTV9ZnVuY3Rpb24gaihXLGIsQSl7dmFyIEY9SShXLEEpO3JldHVybiBBLTE+PWImJihGfD1JKFcsQS0xKTw8NCksRn1mdW5jdGlvbiBHKFcsYixBLEYpe2Zvcih2YXIgSD0wLGc9TWF0aC5taW4oVy5sZW5ndGgsQSksQz1iO0M8ZztDKyspe3ZhciBrPVcuY2hhckNvZGVB''@;'; put 'put ''dChDKS00ODtIKj1GLEgrPWs+PTQ5P2stNDkrMTA6az49MTc/ay0xNysxMDprfXJldHVybiBIfU0uaXNCTj1mdW5jdGlvbihiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIE18fG51bGwhPT1iJiYib2JqZWN0Ij09dHlwZW9mIGImJmIuY29uc3RydWN0b3Iud29yZFNpemU9PT1NLndvcmRTaXplJiZB''@;'; put 'put ''cnJheS5pc0FycmF5KGIud29yZHMpfSxNLm1heD1mdW5jdGlvbihiLEEpe3JldHVybiBiLmNtcChBKT4wP2I6QX0sTS5taW49ZnVuY3Rpb24oYixBKXtyZXR1cm4gYi5jbXAoQSk8MD9iOkF9LE0ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGIsQSxGKXtpZigibnVtYmVyIj09dHlwZW9mIGIp''@;'; put 'put ''cmV0dXJuIHRoaXMuX2luaXROdW1iZXIoYixBLEYpO2lmKCJvYmplY3QiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdEFycmF5KGIsQSxGKTsiaGV4Ij09PUEmJihBPTE2KSxtKEE9PT0oMHxBKSYmQT49MiYmQTw9MzYpO3ZhciBIPTA7Ii0iPT09KGI9Yi50b1N0cmluZygpLnJlcGxhY2Uo''@;'; put 'put ''L1xzKy9nLCIiKSlbMF0mJihIKyssdGhpcy5uZWdhdGl2ZT0xKSxIPGIubGVuZ3RoJiYoMTY9PT1BP3RoaXMuX3BhcnNlSGV4KGIsSCxGKToodGhpcy5fcGFyc2VCYXNlKGIsQSxIKSwibGUiPT09RiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEEsRikpKX0sTS5wcm90b3R5cGUu''@;'; put 'put ''X2luaXROdW1iZXI9ZnVuY3Rpb24oYixBLEYpe2I8MCYmKHRoaXMubmVnYXRpdmU9MSxiPS1iKSxiPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiXSx0aGlzLmxlbmd0aD0xKTpiPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEw''@;'; put 'put ''ODg2M10sdGhpcy5sZW5ndGg9Mik6KG0oYjw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PUYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxBLEYpfSxNLnByb3RvdHlwZS5f''@;'; put 'put ''aW5pdEFycmF5PWZ1bmN0aW9uKGIsQSxGKXtpZihtKCJudW1iZXIiPT10eXBlb2YgYi5sZW5ndGgpLGIubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGIubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5''@;'; put 'put ''KHRoaXMubGVuZ3RoKTtmb3IodmFyIEg9MDtIPHRoaXMubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPTA7dmFyIGcsQyxrPTA7aWYoImJlIj09PUYpZm9yKEg9Yi5sZW5ndGgtMSxnPTA7SD49MDtILT0zKXRoaXMud29yZHNbZ118PShDPWJbSF18YltILTFdPDw4fGJbSC0yXTw8MTYpPDxrJjY3''@;'; put 'put ''MTA4ODYzLHRoaXMud29yZHNbZysxXT1DPj4+MjYtayY2NzEwODg2Mywoays9MjQpPj0yNiYmKGstPTI2LGcrKyk7ZWxzZSBpZigibGUiPT09Rilmb3IoSD0wLGc9MDtIPGIubGVuZ3RoO0grPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltIXXxiW0grMV08PDh8YltIKzJdPDwxNik8PGsmNjcxMDg4''@;'; put 'put ''NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4yNi1rJjY3MTA4ODYzLChrKz0yNCk+PTI2JiYoay09MjYsZysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oYixBLEYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoYi5sZW5ndGgtQSkvNiksdGhpcy53''@;'; put 'put ''b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgSD0wO0g8dGhpcy5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09MDt2YXIgayxnPTAsQz0wO2lmKCJiZSI9PT1GKWZvcihIPWIubGVuZ3RoLTE7SD49QTtILT0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMm''@;'; put 'put ''ayxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9az4+PjI2KTpnKz04O2Vsc2UgZm9yKEg9KGIubGVuZ3RoLUEpJTI9PTA/QSsxOkE7SDxiLmxlbmd0aDtIKz0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMmayxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0x''@;'; put 'put ''XXw9az4+PjI2KTpnKz04O3RoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihiLEEsRil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIEg9MCxnPTE7Zzw9NjcxMDg4NjM7Zyo9QSlIKys7SC0tLGc9Zy9BfDA7Zm9yKHZhciBDPWIubGVuZ3Ro''@;'; put 'put ''LUYsaz1DJUgsXz1NYXRoLm1pbihDLEMtaykrRixwPTAsdz1GO3c8Xzt3Kz1IKXA9RyhiLHcsdytILEEpLHRoaXMuaW11bG4oZyksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCk7aWYoMCE9PWspe3ZhciBLPTE7Zm9yKHA9RyhiLHcsYi5s''@;'; put 'put ''ZW5ndGgsQSksdz0wO3c8azt3KyspSyo9QTt0aGlzLmltdWxuKEspLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApfXRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihiKXtiLndvcmRzPW5ldyBBcnJheSh0aGlzLmxl''@;'; put 'put ''bmd0aCk7Zm9yKHZhciBBPTA7QTx0aGlzLmxlbmd0aDtBKyspYi53b3Jkc1tBXT10aGlzLndvcmRzW0FdO2IubGVuZ3RoPXRoaXMubGVuZ3RoLGIubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxiLnJlZD10aGlzLnJlZH0sTS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgTShu''@;'; put 'put ''dWxsKTtyZXR1cm4gdGhpcy5jb3B5KGIpLGJ9LE0ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LE0ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0''@;'; put 'put ''aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZl''@;'; put 'put ''PTApLHRoaXN9LE0ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIEQ9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwIl0sVD1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxFPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3Nzcy''@;'; put 'put ''MTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAz''@;'; put 'put ''NjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIE4oVyxiLEEpe0EubmVnYXRpdmU9Yi5uZWdhdGl2ZV5XLm5lZ2F0aXZlO3ZhciBGPVcubGVuZ3RoK2IubGVuZ3RofDA7QS5sZW5ndGg9RixGPUYt''@;'; put 'put ''MXwwO3ZhciBIPTB8Vy53b3Jkc1swXSxnPTB8Yi53b3Jkc1swXSxDPUgqZyxfPUMvNjcxMDg4NjR8MDtBLndvcmRzWzBdPTY3MTA4ODYzJkM7Zm9yKHZhciBwPTE7cDxGO3ArKyl7Zm9yKHZhciB3PV8+Pj4yNixLPTY3MTA4ODYzJl8sdGU9TWF0aC5taW4ocCxiLmxlbmd0aC0xKSxjZT1NYXRo''@;'; put 'put ''Lm1heCgwLHAtVy5sZW5ndGgrMSk7Y2U8PXRlO2NlKyspdys9KEM9KEg9MHxXLndvcmRzW3AtY2V8MF0pKihnPTB8Yi53b3Jkc1tjZV0pK0spLzY3MTA4ODY0fDAsSz02NzEwODg2MyZDO0Eud29yZHNbcF09MHxLLF89MHx3fXJldHVybiAwIT09Xz9BLndvcmRzW3BdPTB8XzpBLmxlbmd0aC0t''@;'; put 'put ''LEEuc3RyaXAoKX1NLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihiLEEpe3ZhciBGO2lmKEE9MHxBfHwxLDE2PT09KGI9Ynx8MTApfHwiaGV4Ij09PWIpe0Y9IiI7Zm9yKHZhciBIPTAsZz0wLEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy53b3Jkc1tDXSxfPSgxNjc3NzIx''@;'; put 'put ''NSYoazw8SHxnKSkudG9TdHJpbmcoMTYpO0Y9MCE9KGc9az4+PjI0LUgmMTY3NzcyMTUpfHxDIT09dGhpcy5sZW5ndGgtMT9EWzYtXy5sZW5ndGhdK18rRjpfK0YsKEgrPTIpPj0yNiYmKEgtPTI2LEMtLSl9Zm9yKDAhPT1nJiYoRj1nLnRvU3RyaW5nKDE2KStGKTtGLmxlbmd0aCVBIT0wOylG''@;'; put 'put ''PSIwIitGO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9aWYoYj09PSgwfGIpJiZiPj0yJiZiPD0zNil7dmFyIHA9VFtiXSx3PUVbYl07Rj0iIjt2YXIgSz10aGlzLmNsb25lKCk7Zm9yKEsubmVnYXRpdmU9MDshSy5pc1plcm8oKTspe3ZhciB0ZT1LLm1vZG4odykudG9T''@;'; put 'put ''dHJpbmcoYik7Rj0oSz1LLmlkaXZuKHcpKS5pc1plcm8oKT90ZStGOkRbcC10ZS5sZW5ndGhdK3RlK0Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihGPSIwIitGKTtGLmxlbmd0aCVBIT0wOylGPSIwIitGO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9bSghMSwiQmFzZSBzaG91''@;'; put 'put ''bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxNLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9iKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Yis9''@;'; put 'put ''NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm0oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1iOmJ9LE0ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biB0aGlzLnRvU3RyaW5nKDE2KX0sTS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oYixBKXtyZXR1cm4gbSh0eXBlb2YgTzwidSIpLHRoaXMudG9BcnJheUxpa2UoTyxiLEEpfSxNLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJy''@;'; put 'put ''YXksYixBKX0sTS5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPXRoaXMuYnl0ZUxlbmd0aCgpLGc9Rnx8TWF0aC5tYXgoMSxIKTttKEg8PWcsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxtKGc+MCwiUmVxdWVzdGVkIGFycmF5IGxl''@;'; put 'put ''bmd0aCA8PSAwIiksdGhpcy5zdHJpcCgpO3ZhciBfLHAsQz0ibGUiPT09QSxrPW5ldyBiKGcpLHc9dGhpcy5jbG9uZSgpO2lmKEMpe2ZvcihwPTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVzaHJuKDgpLGtbcF09Xztmb3IoO3A8ZztwKyspa1twXT0wfWVsc2V7Zm9yKHA9''@;'; put 'put ''MDtwPGctSDtwKyspa1twXT0wO2ZvcihwPTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVzaHJuKDgpLGtbZy1wLTFdPV99cmV0dXJuIGt9LE0ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihiKXtyZXR1cm4gMzItTWF0aC5jbHozMihiKX06ZnVu''@;'; put 'put ''Y3Rpb24oYil7dmFyIEE9YixGPTA7cmV0dXJuIEE+PTQwOTYmJihGKz0xMyxBPj4+PTEzKSxBPj02NCYmKEYrPTcsQT4+Pj03KSxBPj04JiYoRis9NCxBPj4+PTQpLEE+PTImJihGKz0yLEE+Pj49MiksRitBfSxNLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oYil7aWYoMD09PWIpcmV0''@;'; put 'put ''dXJuIDI2O3ZhciBBPWIsRj0wO3JldHVybiA4MTkxJkF8fChGKz0xMyxBPj4+PTEzKSwxMjcmQXx8KEYrPTcsQT4+Pj03KSwxNSZBfHwoRis9NCxBPj4+PTQpLDMmQXx8KEYrPTIsQT4+Pj0yKSwxJkF8fEYrKyxGfSxNLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQT10aGlz''@;'; put 'put ''Ll9jb3VudEJpdHModGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStBfSxNLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBiPTAsQT0wO0E8dGhpcy5sZW5ndGg7QSsrKXt2YXIg''@;'; put 'put ''Rj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW0FdKTtpZihiKz1GLDI2IT09RilicmVha31yZXR1cm4gYn0sTS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKGIpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGVzdG4oYi0xKT90aGlzLm5vdG4oYikuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUo''@;'; put 'put ''KX0sTS5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE0ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxNLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0''@;'; put 'put ''aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxNLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8Yi5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEE9MDtBPGIubGVuZ3RoO0ErKyl0aGlzLndvcmRzW0FdPXRoaXMud29yZHNbQV18Yi53''@;'; put 'put ''b3Jkc1tBXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1b3IoYil9LE0ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90''@;'; put 'put ''aGlzLmNsb25lKCkuaW9yKGIpOmIuY2xvbmUoKS5pb3IodGhpcyl9LE0ucHJvdG90eXBlLnVvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoYik6Yi5jbG9uZSgpLml1b3IodGhpcyl9LE0ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3ZhciBBO0E9dGhpcy5sZW5ndGg+Yi5sZW5ndGg/Yjp0aGlzO2Zvcih2YXIgRj0wO0Y8QS5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09dGhpcy53b3Jkc1tGXSZiLndvcmRzW0ZdO3JldHVybiB0aGlzLmxlbmd0aD1BLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlhbmQ9''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5kKGIpfSxNLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxN''@;'; put 'put ''LnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxNLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgQSxGO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhBPXRo''@;'; put 'put ''aXMsRj1iKTooQT1iLEY9dGhpcyk7Zm9yKHZhciBIPTA7SDxGLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT1BLndvcmRzW0hdXkYud29yZHNbSF07aWYodGhpcyE9PUEpZm9yKDtIPEEubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPUEud29yZHNbSF07cmV0dXJuIHRoaXMubGVuZ3RoPUEubGVu''@;'; put 'put ''Z3RoLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gbSghKHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoYil9LE0ucHJvdG90eXBlLnhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9u''@;'; put 'put ''ZSgpLml4b3IoYik6Yi5jbG9uZSgpLml4b3IodGhpcyl9LE0ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihiKTpiLmNsb25lKCkuaXV4b3IodGhpcyl9LE0ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGIp''@;'; put 'put ''e20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT0wfE1hdGguY2VpbChiLzI2KSxGPWIlMjY7dGhpcy5fZXhwYW5kKEEpLEY+MCYmQS0tO2Zvcih2YXIgSD0wO0g8QTtIKyspdGhpcy53b3Jkc1tIXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tIXTtyZXR1cm4gRj4wJiYodGhpcy53b3Jk''@;'; put 'put ''c1tIXT1+dGhpcy53b3Jkc1tIXSY2NzEwODg2Mz4+MjYtRiksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oYil9LE0ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oYixBKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49''@;'; put 'put ''MCk7dmFyIEY9Yi8yNnwwLEg9YiUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKEYrMSksdGhpcy53b3Jkc1tGXT1BP3RoaXMud29yZHNbRl18MTw8SDp0aGlzLndvcmRzW0ZdJn4oMTw8SCksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIpe3ZhciBBLEYsSDtpZigwIT09''@;'; put 'put ''dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxBPXRoaXMuaXN1YihiKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiBiLm5lZ2F0aXZlPTAsQT10aGlz''@;'; put 'put ''LmlzdWIoYiksYi5uZWdhdGl2ZT0xLEEuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Yi5sZW5ndGg/KEY9dGhpcyxIPWIpOihGPWIsSD10aGlzKTtmb3IodmFyIGc9MCxDPTA7QzxILmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT02NzEwODg2MyYoQT0oMHxGLndvcmRzW0NdKSsoMHxILndvcmRz''@;'; put 'put ''W0NdKStnKSxnPUE+Pj4yNjtmb3IoOzAhPT1nJiZDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJihBPSgwfEYud29yZHNbQ10pK2cpLGc9QT4+PjI2O2lmKHRoaXMubGVuZ3RoPUYubGVuZ3RoLDAhPT1nKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWcsdGhpcy5sZW5ndGgr''@;'; put 'put ''KztlbHNlIGlmKEYhPT10aGlzKWZvcig7QzxGLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT1GLndvcmRzW0NdO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYil7dmFyIEE7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oYi5uZWdhdGl2ZT0w''@;'; put 'put ''LEE9dGhpcy5zdWIoYiksYi5uZWdhdGl2ZV49MSxBKTowPT09Yi5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxBPWIuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxBKTp0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChiKTpiLmNsb25l''@;'; put 'put ''KCkuaWFkZCh0aGlzKX0sTS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiKXtpZigwIT09Yi5uZWdhdGl2ZSl7Yi5uZWdhdGl2ZT0wO3ZhciBBPXRoaXMuaWFkZChiKTtyZXR1cm4gYi5uZWdhdGl2ZT0xLEEuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzLmlhZGQoYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIEgsZyxGPXRoaXMuY21wKGIpO2lmKDA9PT1GKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztGPjA/KEg9dGhpcyxnPWIpOihIPWIs''@;'; put 'put ''Zz10aGlzKTtmb3IodmFyIEM9MCxrPTA7azxnLmxlbmd0aDtrKyspQz0oQT0oMHxILndvcmRzW2tdKS0oMHxnLndvcmRzW2tdKStDKT4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZBO2Zvcig7MCE9PUMmJms8SC5sZW5ndGg7aysrKUM9KEE9KDB8SC53b3Jkc1trXSkrQyk+PjI2LHRoaXMu''@;'; put 'put ''d29yZHNba109NjcxMDg4NjMmQTtpZigwPT09QyYmazxILmxlbmd0aCYmSCE9PXRoaXMpZm9yKDtrPEgubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPUgud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGspLEghPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0x''@;'; put 'put ''KSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoYil9O3ZhciBCPWZ1bmN0aW9uKGIsQSxGKXt2YXIgXyxwLHcsSD1iLndvcmRzLGc9QS53b3JkcyxDPUYud29yZHMsaz0wLEs9MHxIWzBdLHRlPTgxOTEmSyxjZT1LPj4+''@;'; put 'put ''MTMsaGU9MHxIWzFdLFNlPTgxOTEmaGUsTGU9aGU+Pj4xMyxIZT0wfEhbMl0seGU9ODE5MSZIZSxEZT1IZT4+PjEzLEJlPTB8SFszXSxHZT04MTkxJkJlLFVlPUJlPj4+MTMscWU9MHxIWzRdLG90PTgxOTEmcWUsRmU9cWU+Pj4xMyx3ZT0wfEhbNV0sRWU9ODE5MSZ3ZSxJZT13ZT4+PjEzLFhl''@;'; put 'put ''PTB8SFs2XSx0dD04MTkxJlhlLFplPVhlPj4+MTMsY3Q9MHxIWzddLGtlPTgxOTEmY3QsQWU9Y3Q+Pj4xMyxqZT0wfEhbOF0saXQ9ODE5MSZqZSxzdD1qZT4+PjEzLHh0PTB8SFs5XSxGdD04MTkxJnh0LE90PXh0Pj4+MTMsS3Q9MHxnWzBdLGJuPTgxOTEmS3QsQnQ9S3Q+Pj4xMyx5bj0wfGdb''@;'; put 'put ''MV0sTm49ODE5MSZ5bixubj15bj4+PjEzLEduPTB8Z1syXSxZbj04MTkxJkduLGZ0PUduPj4+MTMsZG49MHxnWzNdLGhuPTgxOTEmZG4sd3Q9ZG4+Pj4xMyxqdD0wfGdbNF0sbXQ9ODE5MSZqdCxIdD1qdD4+PjEzLHBuPTB8Z1s1XSxudD04MTkxJnBuLEV0PXBuPj4+MTMsZW49MHxnWzZdLFR0''@;'; put 'put ''PTgxOTEmZW4seXQ9ZW4+Pj4xMywkdD0wfGdbN10seG49ODE5MSYkdCx6dD0kdD4+PjEzLF9uPTB8Z1s4XSxPbj04MTkxJl9uLHJuPV9uPj4+MTMsUG49MHxnWzldLENuPTgxOTEmUG4sWHQ9UG4+Pj4xMztGLm5lZ2F0aXZlPWIubmVnYXRpdmVeQS5uZWdhdGl2ZSxGLmxlbmd0aD0xOTt2YXIg''@;'; put 'put ''Sm49KGsrKF89TWF0aC5pbXVsKHRlLGJuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bCh0ZSxCdCkpK01hdGguaW11bChjZSxibil8MCkpPDwxMyl8MDtrPSgodz1NYXRoLmltdWwoY2UsQnQpKSsocD4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoU2Us''@;'; put 'put ''Ym4pLHA9KHA9TWF0aC5pbXVsKFNlLEJ0KSkrTWF0aC5pbXVsKExlLGJuKXwwLHc9TWF0aC5pbXVsKExlLEJ0KTt2YXIgeGk9KGsrKF89XytNYXRoLmltdWwodGUsTm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxubil8MCkrTWF0aC5pbXVsKGNlLE5uKXwwKSk8PDEzKXww''@;'; put 'put ''O2s9KCh3PXcrTWF0aC5pbXVsKGNlLG5uKXwwKSsocD4+PjEzKXwwKSsoeGk+Pj4yNil8MCx4aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoeGUsYm4pLHA9KHA9TWF0aC5pbXVsKHhlLEJ0KSkrTWF0aC5pbXVsKERlLGJuKXwwLHc9TWF0aC5pbXVsKERlLEJ0KSxfPV8rTWF0aC5pbXVsKFNlLE5u''@;'; put 'put ''KXwwLHA9KHA9cCtNYXRoLmltdWwoU2Usbm4pfDApK01hdGguaW11bChMZSxObil8MCx3PXcrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbj0oaysoXz1fK01hdGguaW11bCh0ZSxZbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLGZ0KXwwKStNYXRoLmltdWwoY2UsWW4pfDAp''@;'; put 'put ''KTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsZnQpfDApKyhwPj4+MTMpfDApKyhhbj4+PjI2KXwwLGFuJj02NzEwODg2MyxfPU1hdGguaW11bChHZSxibikscD0ocD1NYXRoLmltdWwoR2UsQnQpKStNYXRoLmltdWwoVWUsYm4pfDAsdz1NYXRoLmltdWwoVWUsQnQpLF89XytNYXRoLmlt''@;'; put 'put ''dWwoeGUsTm4pfDAscD0ocD1wK01hdGguaW11bCh4ZSxubil8MCkrTWF0aC5pbXVsKERlLE5uKXwwLHc9dytNYXRoLmltdWwoRGUsbm4pfDAsXz1fK01hdGguaW11bChTZSxZbil8MCxwPShwPXArTWF0aC5pbXVsKFNlLGZ0KXwwKStNYXRoLmltdWwoTGUsWW4pfDAsdz13K01hdGguaW11bChM''@;'; put 'put ''ZSxmdCl8MDt2YXIgdG49KGsrKF89XytNYXRoLmltdWwodGUsaG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx3dCl8MCkrTWF0aC5pbXVsKGNlLGhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHd0KXwwKSsocD4+PjEzKXwwKSsodG4+Pj4yNil8MCx0biY9''@;'; put 'put ''NjcxMDg4NjMsXz1NYXRoLmltdWwob3QsYm4pLHA9KHA9TWF0aC5pbXVsKG90LEJ0KSkrTWF0aC5pbXVsKEZlLGJuKXwwLHc9TWF0aC5pbXVsKEZlLEJ0KSxfPV8rTWF0aC5pbXVsKEdlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Usbm4pfDApK01hdGguaW11bChVZSxObil8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKFVlLG5uKXwwLF89XytNYXRoLmltdWwoeGUsWW4pfDAscD0ocD1wK01hdGguaW11bCh4ZSxmdCl8MCkrTWF0aC5pbXVsKERlLFluKXwwLHc9dytNYXRoLmltdWwoRGUsZnQpfDAsXz1fK01hdGguaW11bChTZSxobil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHd0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoTGUsaG4pfDAsdz13K01hdGguaW11bChMZSx3dCl8MDt2YXIgdWk9KGsrKF89XytNYXRoLmltdWwodGUsbXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxIdCl8MCkrTWF0aC5pbXVsKGNlLG10KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLEh0KXwwKSso''@;'; put 'put ''cD4+PjEzKXwwKSsodWk+Pj4yNil8MCx1aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRWUsYm4pLHA9KHA9TWF0aC5pbXVsKEVlLEJ0KSkrTWF0aC5pbXVsKEllLGJuKXwwLHc9TWF0aC5pbXVsKEllLEJ0KSxfPV8rTWF0aC5pbXVsKG90LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwob3Qsbm4pfDAp''@;'; put 'put ''K01hdGguaW11bChGZSxObil8MCx3PXcrTWF0aC5pbXVsKEZlLG5uKXwwLF89XytNYXRoLmltdWwoR2UsWW4pfDAscD0ocD1wK01hdGguaW11bChHZSxmdCl8MCkrTWF0aC5pbXVsKFVlLFluKXwwLHc9dytNYXRoLmltdWwoVWUsZnQpfDAsXz1fK01hdGguaW11bCh4ZSxobil8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKHhlLHd0KXwwKStNYXRoLmltdWwoRGUsaG4pfDAsdz13K01hdGguaW11bChEZSx3dCl8MCxfPV8rTWF0aC5pbXVsKFNlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsSHQpfDApK01hdGguaW11bChMZSxtdCl8MCx3PXcrTWF0aC5pbXVsKExlLEh0KXwwO3ZhciBBcj0oayso''@;'; put 'put ''Xz1fK01hdGguaW11bCh0ZSxudCl8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLEV0KXwwKStNYXRoLmltdWwoY2UsbnQpfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsRXQpfDApKyhwPj4+MTMpfDApKyhBcj4+PjI2KXwwLEFyJj02NzEwODg2MyxfPU1hdGguaW11''@;'; put 'put ''bCh0dCxibikscD0ocD1NYXRoLmltdWwodHQsQnQpKStNYXRoLmltdWwoWmUsYm4pfDAsdz1NYXRoLmltdWwoWmUsQnQpLF89XytNYXRoLmltdWwoRWUsTm4pfDAscD0ocD1wK01hdGguaW11bChFZSxubil8MCkrTWF0aC5pbXVsKEllLE5uKXwwLHc9dytNYXRoLmltdWwoSWUsbm4pfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChvdCxZbil8MCxwPShwPXArTWF0aC5pbXVsKG90LGZ0KXwwKStNYXRoLmltdWwoRmUsWW4pfDAsdz13K01hdGguaW11bChGZSxmdCl8MCxfPV8rTWF0aC5pbXVsKEdlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Usd3QpfDApK01hdGguaW11bChVZSxobil8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKFVlLHd0KXwwLF89XytNYXRoLmltdWwoeGUsbXQpfDAscD0ocD1wK01hdGguaW11bCh4ZSxIdCl8MCkrTWF0aC5pbXVsKERlLG10KXwwLHc9dytNYXRoLmltdWwoRGUsSHQpfDAsXz1fK01hdGguaW11bChTZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLEV0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoTGUsbnQpfDAsdz13K01hdGguaW11bChMZSxFdCl8MDt2YXIgaHI9KGsrKF89XytNYXRoLmltdWwodGUsVHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx5dCl8MCkrTWF0aC5pbXVsKGNlLFR0KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHl0KXwwKSso''@;'; put 'put ''cD4+PjEzKXwwKSsoaHI+Pj4yNil8MCxociY9NjcxMDg4NjMsXz1NYXRoLmltdWwoa2UsYm4pLHA9KHA9TWF0aC5pbXVsKGtlLEJ0KSkrTWF0aC5pbXVsKEFlLGJuKXwwLHc9TWF0aC5pbXVsKEFlLEJ0KSxfPV8rTWF0aC5pbXVsKHR0LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsbm4pfDAp''@;'; put 'put ''K01hdGguaW11bChaZSxObil8MCx3PXcrTWF0aC5pbXVsKFplLG5uKXwwLF89XytNYXRoLmltdWwoRWUsWW4pfDAscD0ocD1wK01hdGguaW11bChFZSxmdCl8MCkrTWF0aC5pbXVsKEllLFluKXwwLHc9dytNYXRoLmltdWwoSWUsZnQpfDAsXz1fK01hdGguaW11bChvdCxobil8MCxwPShwPXAr''@;'; put 'put ''TWF0aC5pbXVsKG90LHd0KXwwKStNYXRoLmltdWwoRmUsaG4pfDAsdz13K01hdGguaW11bChGZSx3dCl8MCxfPV8rTWF0aC5pbXVsKEdlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsSHQpfDApK01hdGguaW11bChVZSxtdCl8MCx3PXcrTWF0aC5pbXVsKFVlLEh0KXwwLF89XytNYXRoLmlt''@;'; put 'put ''dWwoeGUsbnQpfDAscD0ocD1wK01hdGguaW11bCh4ZSxFdCl8MCkrTWF0aC5pbXVsKERlLG50KXwwLHc9dytNYXRoLmltdWwoRGUsRXQpfDAsXz1fK01hdGguaW11bChTZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLHl0KXwwKStNYXRoLmltdWwoTGUsVHQpfDAsdz13K01hdGguaW11bChM''@;'; put 'put ''ZSx5dCl8MDt2YXIgZGk9KGsrKF89XytNYXRoLmltdWwodGUseG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx6dCl8MCkrTWF0aC5pbXVsKGNlLHhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHp0KXwwKSsocD4+PjEzKXwwKSsoZGk+Pj4yNil8MCxkaSY9''@;'; put 'put ''NjcxMDg4NjMsXz1NYXRoLmltdWwoaXQsYm4pLHA9KHA9TWF0aC5pbXVsKGl0LEJ0KSkrTWF0aC5pbXVsKHN0LGJuKXwwLHc9TWF0aC5pbXVsKHN0LEJ0KSxfPV8rTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usbm4pfDApK01hdGguaW11bChBZSxObil8MCx3PXcrTWF0''@;'; put 'put ''aC5pbXVsKEFlLG5uKXwwLF89XytNYXRoLmltdWwodHQsWW4pfDAscD0ocD1wK01hdGguaW11bCh0dCxmdCl8MCkrTWF0aC5pbXVsKFplLFluKXwwLHc9dytNYXRoLmltdWwoWmUsZnQpfDAsXz1fK01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHd0KXwwKStNYXRoLmlt''@;'; put 'put ''dWwoSWUsaG4pfDAsdz13K01hdGguaW11bChJZSx3dCl8MCxfPV8rTWF0aC5pbXVsKG90LG10KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsSHQpfDApK01hdGguaW11bChGZSxtdCl8MCx3PXcrTWF0aC5pbXVsKEZlLEh0KXwwLF89XytNYXRoLmltdWwoR2UsbnQpfDAscD0ocD1wK01hdGguaW11''@;'; put 'put ''bChHZSxFdCl8MCkrTWF0aC5pbXVsKFVlLG50KXwwLHc9dytNYXRoLmltdWwoVWUsRXQpfDAsXz1fK01hdGguaW11bCh4ZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKHhlLHl0KXwwKStNYXRoLmltdWwoRGUsVHQpfDAsdz13K01hdGguaW11bChEZSx5dCl8MCxfPV8rTWF0aC5pbXVsKFNlLHhu''@;'; put 'put ''KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsenQpfDApK01hdGguaW11bChMZSx4bil8MCx3PXcrTWF0aC5pbXVsKExlLHp0KXwwO3ZhciBmaT0oaysoXz1fK01hdGguaW11bCh0ZSxPbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLHJuKXwwKStNYXRoLmltdWwoY2UsT24pfDAp''@;'; put 'put ''KTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2Uscm4pfDApKyhwPj4+MTMpfDApKyhmaT4+PjI2KXwwLGZpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxibikscD0ocD1NYXRoLmltdWwoRnQsQnQpKStNYXRoLmltdWwoT3QsYm4pfDAsdz1NYXRoLmltdWwoT3QsQnQpLF89XytNYXRoLmlt''@;'; put 'put ''dWwoaXQsTm4pfDAscD0ocD1wK01hdGguaW11bChpdCxubil8MCkrTWF0aC5pbXVsKHN0LE5uKXwwLHc9dytNYXRoLmltdWwoc3Qsbm4pfDAsXz1fK01hdGguaW11bChrZSxZbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLGZ0KXwwKStNYXRoLmltdWwoQWUsWW4pfDAsdz13K01hdGguaW11bChB''@;'; put 'put ''ZSxmdCl8MCxfPV8rTWF0aC5pbXVsKHR0LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsd3QpfDApK01hdGguaW11bChaZSxobil8MCx3PXcrTWF0aC5pbXVsKFplLHd0KXwwLF89XytNYXRoLmltdWwoRWUsbXQpfDAscD0ocD1wK01hdGguaW11bChFZSxIdCl8MCkrTWF0aC5pbXVsKEllLG10''@;'; put 'put ''KXwwLHc9dytNYXRoLmltdWwoSWUsSHQpfDAsXz1fK01hdGguaW11bChvdCxudCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEV0KXwwKStNYXRoLmltdWwoRmUsbnQpfDAsdz13K01hdGguaW11bChGZSxFdCl8MCxfPV8rTWF0aC5pbXVsKEdlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UseXQp''@;'; put 'put ''fDApK01hdGguaW11bChVZSxUdCl8MCx3PXcrTWF0aC5pbXVsKFVlLHl0KXwwLF89XytNYXRoLmltdWwoeGUseG4pfDAscD0ocD1wK01hdGguaW11bCh4ZSx6dCl8MCkrTWF0aC5pbXVsKERlLHhuKXwwLHc9dytNYXRoLmltdWwoRGUsenQpfDAsXz1fK01hdGguaW11bChTZSxPbil8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKFNlLHJuKXwwKStNYXRoLmltdWwoTGUsT24pfDAsdz13K01hdGguaW11bChMZSxybil8MDt2YXIgaG89KGsrKF89XytNYXRoLmltdWwodGUsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxYdCl8MCkrTWF0aC5pbXVsKGNlLENuKXwwKSk8PDEzKXww''@;'; put 'put ''O2s9KCh3PXcrTWF0aC5pbXVsKGNlLFh0KXwwKSsocD4+PjEzKXwwKSsoaG8+Pj4yNil8MCxobyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsTm4pLHA9KHA9TWF0aC5pbXVsKEZ0LG5uKSkrTWF0aC5pbXVsKE90LE5uKXwwLHc9TWF0aC5pbXVsKE90LG5uKSxfPV8rTWF0aC5pbXVsKGl0LFlu''@;'; put 'put ''KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsZnQpfDApK01hdGguaW11bChzdCxZbil8MCx3PXcrTWF0aC5pbXVsKHN0LGZ0KXwwLF89XytNYXRoLmltdWwoa2UsaG4pfDAscD0ocD1wK01hdGguaW11bChrZSx3dCl8MCkrTWF0aC5pbXVsKEFlLGhuKXwwLHc9dytNYXRoLmltdWwoQWUsd3QpfDAs''@;'; put 'put ''Xz1fK01hdGguaW11bCh0dCxtdCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LEh0KXwwKStNYXRoLmltdWwoWmUsbXQpfDAsdz13K01hdGguaW11bChaZSxIdCl8MCxfPV8rTWF0aC5pbXVsKEVlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsRXQpfDApK01hdGguaW11bChJZSxudCl8MCx3PXcr''@;'; put 'put ''TWF0aC5pbXVsKEllLEV0KXwwLF89XytNYXRoLmltdWwob3QsVHQpfDAscD0ocD1wK01hdGguaW11bChvdCx5dCl8MCkrTWF0aC5pbXVsKEZlLFR0KXwwLHc9dytNYXRoLmltdWwoRmUseXQpfDAsXz1fK01hdGguaW11bChHZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHp0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoVWUseG4pfDAsdz13K01hdGguaW11bChVZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHhlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUscm4pfDApK01hdGguaW11bChEZSxPbil8MCx3PXcrTWF0aC5pbXVsKERlLHJuKXwwO3ZhciBicj0oaysoXz1fK01hdGguaW11bChTZSxDbil8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKFNlLFh0KXwwKStNYXRoLmltdWwoTGUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoTGUsWHQpfDApKyhwPj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxZbikscD0ocD1NYXRoLmltdWwo''@;'; put 'put ''RnQsZnQpKStNYXRoLmltdWwoT3QsWW4pfDAsdz1NYXRoLmltdWwoT3QsZnQpLF89XytNYXRoLmltdWwoaXQsaG4pfDAscD0ocD1wK01hdGguaW11bChpdCx3dCl8MCkrTWF0aC5pbXVsKHN0LGhuKXwwLHc9dytNYXRoLmltdWwoc3Qsd3QpfDAsXz1fK01hdGguaW11bChrZSxtdCl8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKGtlLEh0KXwwKStNYXRoLmltdWwoQWUsbXQpfDAsdz13K01hdGguaW11bChBZSxIdCl8MCxfPV8rTWF0aC5pbXVsKHR0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwodHQsRXQpfDApK01hdGguaW11bChaZSxudCl8MCx3PXcrTWF0aC5pbXVsKFplLEV0KXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoRWUsVHQpfDAscD0ocD1wK01hdGguaW11bChFZSx5dCl8MCkrTWF0aC5pbXVsKEllLFR0KXwwLHc9dytNYXRoLmltdWwoSWUseXQpfDAsXz1fK01hdGguaW11bChvdCx4bil8MCxwPShwPXArTWF0aC5pbXVsKG90LHp0KXwwKStNYXRoLmltdWwoRmUseG4pfDAsdz13K01hdGguaW11''@;'; put 'put ''bChGZSx6dCl8MCxfPV8rTWF0aC5pbXVsKEdlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Uscm4pfDApK01hdGguaW11bChVZSxPbil8MCx3PXcrTWF0aC5pbXVsKFVlLHJuKXwwO3ZhciBMaT0oaysoXz1fK01hdGguaW11bCh4ZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KHhlLFh0KXwwKStNYXRoLmltdWwoRGUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRGUsWHQpfDApKyhwPj4+MTMpfDApKyhMaT4+PjI2KXwwLExpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxobikscD0ocD1NYXRoLmltdWwoRnQsd3QpKStNYXRoLmltdWwoT3QsaG4pfDAs''@;'; put 'put ''dz1NYXRoLmltdWwoT3Qsd3QpLF89XytNYXRoLmltdWwoaXQsbXQpfDAscD0ocD1wK01hdGguaW11bChpdCxIdCl8MCkrTWF0aC5pbXVsKHN0LG10KXwwLHc9dytNYXRoLmltdWwoc3QsSHQpfDAsXz1fK01hdGguaW11bChrZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEV0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoQWUsbnQpfDAsdz13K01hdGguaW11bChBZSxFdCl8MCxfPV8rTWF0aC5pbXVsKHR0LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQseXQpfDApK01hdGguaW11bChaZSxUdCl8MCx3PXcrTWF0aC5pbXVsKFplLHl0KXwwLF89XytNYXRoLmltdWwoRWUseG4pfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChFZSx6dCl8MCkrTWF0aC5pbXVsKEllLHhuKXwwLHc9dytNYXRoLmltdWwoSWUsenQpfDAsXz1fK01hdGguaW11bChvdCxPbil8MCxwPShwPXArTWF0aC5pbXVsKG90LHJuKXwwKStNYXRoLmltdWwoRmUsT24pfDAsdz13K01hdGguaW11bChGZSxybil8MDt2YXIgbG89KGsrKF89XytN''@;'; put 'put ''YXRoLmltdWwoR2UsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChHZSxYdCl8MCkrTWF0aC5pbXVsKFVlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKFVlLFh0KXwwKSsocD4+PjEzKXwwKSsobG8+Pj4yNil8MCxsbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQs''@;'; put 'put ''bXQpLHA9KHA9TWF0aC5pbXVsKEZ0LEh0KSkrTWF0aC5pbXVsKE90LG10KXwwLHc9TWF0aC5pbXVsKE90LEh0KSxfPV8rTWF0aC5pbXVsKGl0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsRXQpfDApK01hdGguaW11bChzdCxudCl8MCx3PXcrTWF0aC5pbXVsKHN0LEV0KXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoa2UsVHQpfDAscD0ocD1wK01hdGguaW11bChrZSx5dCl8MCkrTWF0aC5pbXVsKEFlLFR0KXwwLHc9dytNYXRoLmltdWwoQWUseXQpfDAsXz1fK01hdGguaW11bCh0dCx4bil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHp0KXwwKStNYXRoLmltdWwoWmUseG4pfDAsdz13K01hdGguaW11''@;'; put 'put ''bChaZSx6dCl8MCxfPV8rTWF0aC5pbXVsKEVlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscm4pfDApK01hdGguaW11bChJZSxPbil8MCx3PXcrTWF0aC5pbXVsKEllLHJuKXwwO3ZhciBVbj0oaysoXz1fK01hdGguaW11bChvdCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVs''@;'; put 'put ''KG90LFh0KXwwKStNYXRoLmltdWwoRmUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRmUsWHQpfDApKyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxudCkscD0ocD1NYXRoLmltdWwoRnQsRXQpKStNYXRoLmltdWwoT3QsbnQpfDAs''@;'; put 'put ''dz1NYXRoLmltdWwoT3QsRXQpLF89XytNYXRoLmltdWwoaXQsVHQpfDAscD0ocD1wK01hdGguaW11bChpdCx5dCl8MCkrTWF0aC5pbXVsKHN0LFR0KXwwLHc9dytNYXRoLmltdWwoc3QseXQpfDAsXz1fK01hdGguaW11bChrZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHp0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoQWUseG4pfDAsdz13K01hdGguaW11bChBZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHR0LE9uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQscm4pfDApK01hdGguaW11bChaZSxPbil8MCx3PXcrTWF0aC5pbXVsKFplLHJuKXwwO3ZhciBYaT0oaysoXz1fK01hdGguaW11bChFZSxDbil8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKEVlLFh0KXwwKStNYXRoLmltdWwoSWUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoSWUsWHQpfDApKyhwPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxUdCkscD0ocD1NYXRoLmltdWwo''@;'; put 'put ''RnQseXQpKStNYXRoLmltdWwoT3QsVHQpfDAsdz1NYXRoLmltdWwoT3QseXQpLF89XytNYXRoLmltdWwoaXQseG4pfDAscD0ocD1wK01hdGguaW11bChpdCx6dCl8MCkrTWF0aC5pbXVsKHN0LHhuKXwwLHc9dytNYXRoLmltdWwoc3QsenQpfDAsXz1fK01hdGguaW11bChrZSxPbil8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKGtlLHJuKXwwKStNYXRoLmltdWwoQWUsT24pfDAsdz13K01hdGguaW11bChBZSxybil8MDt2YXIgUWk9KGsrKF89XytNYXRoLmltdWwodHQsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0dCxYdCl8MCkrTWF0aC5pbXVsKFplLENuKXwwKSk8PDEzKXww''@;'; put 'put ''O2s9KCh3PXcrTWF0aC5pbXVsKFplLFh0KXwwKSsocD4+PjEzKXwwKSsoUWk+Pj4yNil8MCxRaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQseG4pLHA9KHA9TWF0aC5pbXVsKEZ0LHp0KSkrTWF0aC5pbXVsKE90LHhuKXwwLHc9TWF0aC5pbXVsKE90LHp0KSxfPV8rTWF0aC5pbXVsKGl0LE9u''@;'; put 'put ''KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQscm4pfDApK01hdGguaW11bChzdCxPbil8MCx3PXcrTWF0aC5pbXVsKHN0LHJuKXwwO3ZhciBmbz0oaysoXz1fK01hdGguaW11bChrZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGtlLFh0KXwwKStNYXRoLmltdWwoQWUsQ24pfDAp''@;'; put 'put ''KTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoQWUsWHQpfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxPbikscD0ocD1NYXRoLmltdWwoRnQscm4pKStNYXRoLmltdWwoT3QsT24pfDAsdz1NYXRoLmltdWwoT3Qscm4pO3ZhciB2bz0oayso''@;'; put 'put ''Xz1fK01hdGguaW11bChpdCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGl0LFh0KXwwKStNYXRoLmltdWwoc3QsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoc3QsWHQpfDApKyhwPj4+MTMpfDApKyh2bz4+PjI2KXwwLHZvJj02NzEwODg2Mzt2YXIgUnI9KGsr''@;'; put 'put ''KF89TWF0aC5pbXVsKEZ0LENuKSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bChGdCxYdCkpK01hdGguaW11bChPdCxDbil8MCkpPDwxMyl8MDtyZXR1cm4gaz0oKHc9TWF0aC5pbXVsKE90LFh0KSkrKHA+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLENbMF09Sm4sQ1sxXT14''@;'; put 'put ''aSxDWzJdPWFuLENbM109dG4sQ1s0XT11aSxDWzVdPUFyLENbNl09aHIsQ1s3XT1kaSxDWzhdPWZpLENbOV09aG8sQ1sxMF09YnIsQ1sxMV09TGksQ1sxMl09bG8sQ1sxM109VW4sQ1sxNF09WGksQ1sxNV09UWksQ1sxNl09Zm8sQ1sxN109dm8sQ1sxOF09UnIsMCE9PWsmJihDWzE5XT1rLEYu''@;'; put 'put ''bGVuZ3RoKyspLEZ9O2Z1bmN0aW9uIFkoVyxiLEEpe3JldHVybihuZXcgVSkubXVscChXLGIsQSl9ZnVuY3Rpb24gVShXLGIpe3RoaXMueD1XLHRoaXMueT1ifU1hdGguaW11bHx8KEI9TiksTS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRoaXMubGVuZ3RoK2IubGVu''@;'; put 'put ''Z3RoO3JldHVybiBGPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09Yi5sZW5ndGg/Qih0aGlzLGIsQSk6SDw2Mz9OKHRoaXMsYixBKTpIPDEwMjQ/ZnVuY3Rpb24gWihXLGIsQSl7QS5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlcubmVnYXRpdmUsQS5sZW5ndGg9Vy5sZW5ndGgrYi5sZW5ndGg7Zm9yKHZh''@;'; put 'put ''ciBGPTAsSD0wLGc9MDtnPEEubGVuZ3RoLTE7ZysrKXt2YXIgQz1IO0g9MDtmb3IodmFyIGs9NjcxMDg4NjMmRixfPU1hdGgubWluKGcsYi5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGctVy5sZW5ndGgrMSk7cDw9XztwKyspe3ZhciBjZT0oMHxXLndvcmRzW2ctcF0pKigwfGIud29yZHNbcF0p''@;'; put 'put ''LGhlPTY3MTA4ODYzJmNlO2s9NjcxMDg4NjMmKGhlPWhlK2t8MCksSCs9KEM9KEM9QysoY2UvNjcxMDg4NjR8MCl8MCkrKGhlPj4+MjYpfDApPj4+MjYsQyY9NjcxMDg4NjN9QS53b3Jkc1tnXT1rLEY9QyxDPUh9cmV0dXJuIDAhPT1GP0Eud29yZHNbZ109RjpBLmxlbmd0aC0tLEEuc3RyaXAo''@;'; put 'put ''KX0odGhpcyxiLEEpOlkodGhpcyxiLEEpLEZ9LFUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oYil7Zm9yKHZhciBBPW5ldyBBcnJheShiKSxGPU0ucHJvdG90eXBlLl9jb3VudEJpdHMoYiktMSxIPTA7SDxiO0grKylBW0hdPXRoaXMucmV2QmluKEgsRixiKTtyZXR1cm4gQX0sVS5wcm90''@;'; put 'put ''b3R5cGUucmV2QmluPWZ1bmN0aW9uKGIsQSxGKXtpZigwPT09Ynx8Yj09PUYtMSlyZXR1cm4gYjtmb3IodmFyIEg9MCxnPTA7ZzxBO2crKylIfD0oMSZiKTw8QS1nLTEsYj4+PTE7cmV0dXJuIEh9LFUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oYixBLEYsSCxnLEMpe2Zvcih2YXIgaz0w''@;'; put 'put ''O2s8QztrKyspSFtrXT1BW2Jba11dLGdba109RltiW2tdXX0sVS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGIsQSxGLEgsZyxDKXt0aGlzLnBlcm11dGUoQyxiLEEsRixILGcpO2Zvcih2YXIgaz0xO2s8ZztrPDw9MSlmb3IodmFyIF89azw8MSxwPU1hdGguY29zKDIqTWF0aC5QSS9f''@;'; put 'put ''KSx3PU1hdGguc2luKDIqTWF0aC5QSS9fKSxLPTA7SzxnO0srPV8pZm9yKHZhciB0ZT1wLGNlPXcsaGU9MDtoZTxrO2hlKyspe3ZhciBTZT1GW0sraGVdLExlPUhbSytoZV0sSGU9RltLK2hlK2tdLHhlPUhbSytoZStrXSxEZT10ZSpIZS1jZSp4ZTt4ZT10ZSp4ZStjZSpIZSxGW0sraGVdPVNl''@;'; put 'put ''KyhIZT1EZSksSFtLK2hlXT1MZSt4ZSxGW0sraGUra109U2UtSGUsSFtLK2hlK2tdPUxlLXhlLGhlIT09XyYmKERlPXAqdGUtdypjZSxjZT1wKmNlK3cqdGUsdGU9RGUpfX0sVS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oYixBKXt2YXIgRj0xfE1hdGgubWF4KEEsYiksSD0xJkYs''@;'; put 'put ''Zz0wO2ZvcihGPUYvMnwwO0Y7Rj4+Pj0xKWcrKztyZXR1cm4gMTw8ZysxK0h9LFUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihiLEEsRil7aWYoIShGPD0xKSlmb3IodmFyIEg9MDtIPEYvMjtIKyspe3ZhciBnPWJbSF07YltIXT1iW0YtSC0xXSxiW0YtSC0xXT1nLGc9QVtIXSxBW0hd''@;'; put 'put ''PS1BW0YtSC0xXSxBW0YtSC0xXT0tZ319LFUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj0wLEg9MDtIPEEvMjtIKyspe3ZhciBnPTgxOTIqTWF0aC5yb3VuZChiWzIqSCsxXS9BKStNYXRoLnJvdW5kKGJbMipIXS9BKStGO2JbSF09NjcxMDg4NjMmZyxG''@;'; put 'put ''PWc8NjcxMDg4NjQ/MDpnLzY3MTA4ODY0fDB9cmV0dXJuIGJ9LFUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oYixBLEYsSCl7Zm9yKHZhciBnPTAsQz0wO0M8QTtDKyspRlsyKkNdPTgxOTEmKGcrPTB8YltDXSksRlsyKkMrMV09ODE5MSYoZz4+Pj0xMyksZz4+Pj0xMztmb3IoQz0y''@;'; put 'put ''KkE7QzxIOysrQylGW0NdPTA7bSgwPT09ZyksbSghKC04MTkyJmcpKX0sVS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihiKXtmb3IodmFyIEE9bmV3IEFycmF5KGIpLEY9MDtGPGI7RisrKUFbRl09MDtyZXR1cm4gQX0sVS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihiLEEsRil7dmFyIEg9Mip0''@;'; put 'put ''aGlzLmd1ZXNzTGVuMTNiKGIubGVuZ3RoLEEubGVuZ3RoKSxnPXRoaXMubWFrZVJCVChIKSxDPXRoaXMuc3R1YihIKSxrPW5ldyBBcnJheShIKSxfPW5ldyBBcnJheShIKSxwPW5ldyBBcnJheShIKSx3PW5ldyBBcnJheShIKSxLPW5ldyBBcnJheShIKSx0ZT1uZXcgQXJyYXkoSCksY2U9Ri53''@;'; put 'put ''b3JkcztjZS5sZW5ndGg9SCx0aGlzLmNvbnZlcnQxM2IoYi53b3JkcyxiLmxlbmd0aCxrLEgpLHRoaXMuY29udmVydDEzYihBLndvcmRzLEEubGVuZ3RoLHcsSCksdGhpcy50cmFuc2Zvcm0oayxDLF8scCxILGcpLHRoaXMudHJhbnNmb3JtKHcsQyxLLHRlLEgsZyk7Zm9yKHZhciBoZT0wO2hl''@;'; put 'put ''PEg7aGUrKyl7dmFyIFNlPV9baGVdKktbaGVdLXBbaGVdKnRlW2hlXTtwW2hlXT1fW2hlXSp0ZVtoZV0rcFtoZV0qS1toZV0sX1toZV09U2V9cmV0dXJuIHRoaXMuY29uanVnYXRlKF8scCxIKSx0aGlzLnRyYW5zZm9ybShfLHAsY2UsQyxILGcpLHRoaXMuY29uanVnYXRlKGNlLEMsSCksdGhp''@;'; put 'put ''cy5ub3JtYWxpemUxM2IoY2UsSCksRi5uZWdhdGl2ZT1iLm5lZ2F0aXZlXkEubmVnYXRpdmUsRi5sZW5ndGg9Yi5sZW5ndGgrQS5sZW5ndGgsRi5zdHJpcCgpfSxNLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYil7dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRo''@;'; put 'put ''aXMubGVuZ3RoK2IubGVuZ3RoKSx0aGlzLm11bFRvKGIsQSl9LE0ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oYil7dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSxZKHRoaXMsYixBKX0sTS5wcm90b3R5cGUuaW11bD1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGIsdGhpcyl9LE0ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpO2Zvcih2YXIgQT0wLEY9MDtGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIEg9KDB8dGhpcy53b3Jkc1tG''@;'; put 'put ''XSkqYixnPSg2NzEwODg2MyZIKSsoNjcxMDg4NjMmQSk7QT4+PTI2LEErPUgvNjcxMDg4NjR8MCxBKz1nPj4+MjYsdGhpcy53b3Jkc1tGXT02NzEwODg2MyZnfXJldHVybiAwIT09QSYmKHRoaXMud29yZHNbRl09QSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5tdWxuPWZ1bmN0''@;'; put 'put ''aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oYil9LE0ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTS5wcm90b3R5cGUucG93PWZ1''@;'; put 'put ''bmN0aW9uKGIpe3ZhciBBPWZ1bmN0aW9uIHooVyl7Zm9yKHZhciBiPW5ldyBBcnJheShXLmJpdExlbmd0aCgpKSxBPTA7QTxiLmxlbmd0aDtBKyspe3ZhciBIPUElMjY7YltBXT0oVy53b3Jkc1tBLzI2fDBdJjE8PEgpPj4+SH1yZXR1cm4gYn0oYik7aWYoMD09PUEubGVuZ3RoKXJldHVybiBu''@;'; put 'put ''ZXcgTSgxKTtmb3IodmFyIEY9dGhpcyxIPTA7SDxBLmxlbmd0aCYmMD09PUFbSF07SCsrLEY9Ri5zcXIoKSk7aWYoKytIPEEubGVuZ3RoKWZvcih2YXIgZz1GLnNxcigpO0g8QS5sZW5ndGg7SCsrLGc9Zy5zcXIoKSkwIT09QVtIXSYmKEY9Ri5tdWwoZykpO3JldHVybiBGfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5pdXNobG49ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBnLEE9YiUyNixGPShiLUEpLzI2LEg9NjcxMDg4NjM+Pj4yNi1BPDwyNi1BO2lmKDAhPT1BKXt2YXIgQz0wO2ZvcihnPTA7Zzx0aGlzLmxlbmd0aDtnKyspe3ZhciBrPXRoaXMud29yZHNbZ10mSDt0''@;'; put 'put ''aGlzLndvcmRzW2ddPSgwfHRoaXMud29yZHNbZ10pLWs8PEF8QyxDPWs+Pj4yNi1BfUMmJih0aGlzLndvcmRzW2ddPUMsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PUYpe2ZvcihnPXRoaXMubGVuZ3RoLTE7Zz49MDtnLS0pdGhpcy53b3Jkc1tnK0ZdPXRoaXMud29yZHNbZ107Zm9yKGc9MDtnPEY7''@;'; put 'put ''ZysrKXRoaXMud29yZHNbZ109MDt0aGlzLmxlbmd0aCs9Rn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oYil9LE0ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihiLEEsRil7''@;'; put 'put ''dmFyIEg7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApLEg9QT8oQS1BJTI2KS8yNjowO3ZhciBnPWIlMjYsQz1NYXRoLm1pbigoYi1nKS8yNix0aGlzLmxlbmd0aCksaz02NzEwODg2M142NzEwODg2Mz4+Pmc8PGcsXz1GO2lmKEgtPUMsSD1NYXRoLm1heCgwLEgpLF8pe2Zvcih2YXIgcD0w''@;'; put 'put ''O3A8QztwKyspXy53b3Jkc1twXT10aGlzLndvcmRzW3BdO18ubGVuZ3RoPUN9aWYoMCE9PUMpaWYodGhpcy5sZW5ndGg+Qylmb3IodGhpcy5sZW5ndGgtPUMscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRo''@;'; put 'put ''aXMubGVuZ3RoPTE7dmFyIHc9MDtmb3IocD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09d3x8cD49SCk7cC0tKXt2YXIgSz0wfHRoaXMud29yZHNbcF07dGhpcy53b3Jkc1twXT13PDwyNi1nfEs+Pj5nLHc9SyZrfXJldHVybiBfJiYwIT09dyYmKF8ud29yZHNbXy5sZW5ndGgrK109dyksMD09''@;'; put 'put ''PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oYixBLEYpe3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihiLEEsRil9LE0ucHJvdG90eXBlLnNobG49ZnVuY3Rp''@;'; put 'put ''b24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiKX0sTS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYil9LE0ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiKX0sTS5wcm90b3R5''@;'; put 'put ''cGUudXNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYil9LE0ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2LEY9KGItQSkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Rnx8ISh0aGlzLndv''@;'; put 'put ''cmRzW0ZdJjE8PEEpKX0sTS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2LEY9KGItQSkvMjY7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIp''@;'; put 'put ''LHRoaXMubGVuZ3RoPD1GP3RoaXM6KDAhPT1BJiZGKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oRix0aGlzLmxlbmd0aCksMCE9PUEmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkE8PEEpLHRoaXMuc3RyaXAoKSl9LE0ucHJvdG90eXBlLm1hc2tuPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGIpfSxNLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCksYjwwP3RoaXMuaXN1Ym4oLWIpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0''@;'; put 'put ''aCYmKDB8dGhpcy53b3Jkc1swXSk8Yj8odGhpcy53b3Jkc1swXT1iLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGIpfSxNLnByb3RvdHlwZS5faWFk''@;'; put 'put ''ZG49ZnVuY3Rpb24oYil7dGhpcy53b3Jkc1swXSs9Yjtmb3IodmFyIEE9MDtBPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0FdPj02NzEwODg2NDtBKyspdGhpcy53b3Jkc1tBXS09NjcxMDg4NjQsQT09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tBKzFdPTE6dGhpcy53b3Jkc1tBKzFdKys7''@;'; put 'put ''cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLEErMSksdGhpc30sTS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oYil7aWYobSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCksYjwwKXJldHVybiB0aGlzLmlhZGRuKC1iKTtpZigwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZG4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09YiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZv''@;'; put 'put ''cih2YXIgQT0wO0E8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbQV08MDtBKyspdGhpcy53b3Jkc1tBXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tBKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihi''@;'; put 'put ''KX0sTS5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGIpfSxNLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxNLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgp''@;'; put 'put ''LmlhYnMoKX0sTS5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uKGIsQSxGKXt2YXIgZzt0aGlzLl9leHBhbmQoYi5sZW5ndGgrRik7dmFyIEMsaz0wO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe0M9KDB8dGhpcy53b3Jkc1tnK0ZdKStrO3ZhciBfPSgwfGIud29yZHNbZ10pKkE7az0o''@;'; put 'put ''KEMtPTY3MTA4ODYzJl8pPj4yNiktKF8vNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkN9Zm9yKDtnPHRoaXMubGVuZ3RoLUY7ZysrKWs9KEM9KDB8dGhpcy53b3Jkc1tnK0ZdKStrKT4+MjYsdGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkM7aWYoMD09PWspcmV0dXJuIHRo''@;'; put 'put ''aXMuc3RyaXAoKTtmb3IobSgtMT09PWspLGs9MCxnPTA7Zzx0aGlzLmxlbmd0aDtnKyspaz0oQz0tKDB8dGhpcy53b3Jkc1tnXSkrayk+PjI2LHRoaXMud29yZHNbZ109NjcxMDg4NjMmQztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3dvcmREaXY9''@;'; put 'put ''ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRoaXMuY2xvbmUoKSxnPWIsQz0wfGcud29yZHNbZy5sZW5ndGgtMV07MCE9KEY9MjYtdGhpcy5fY291bnRCaXRzKEMpKSYmKGc9Zy51c2hsbihGKSxILml1c2hsbihGKSxDPTB8Zy53b3Jkc1tnLmxlbmd0aC0xXSk7dmFyIHAsXz1ILmxlbmd0aC1nLmxl''@;'; put 'put ''bmd0aDtpZigibW9kIiE9PUEpeyhwPW5ldyBNKG51bGwpKS5sZW5ndGg9XysxLHAud29yZHM9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IodmFyIHc9MDt3PHAubGVuZ3RoO3crKylwLndvcmRzW3ddPTB9dmFyIEs9SC5jbG9uZSgpLl9pc2hsbnN1Ym11bChnLDEsXyk7MD09PUsubmVnYXRpdmUm''@;'; put 'put ''JihIPUsscCYmKHAud29yZHNbX109MSkpO2Zvcih2YXIgdGU9Xy0xO3RlPj0wO3RlLS0pe3ZhciBjZT02NzEwODg2NCooMHxILndvcmRzW2cubGVuZ3RoK3RlXSkrKDB8SC53b3Jkc1tnLmxlbmd0aCt0ZS0xXSk7Zm9yKGNlPU1hdGgubWluKGNlL0N8MCw2NzEwODg2MyksSC5faXNobG5zdWJt''@;'; put 'put ''dWwoZyxjZSx0ZSk7MCE9PUgubmVnYXRpdmU7KWNlLS0sSC5uZWdhdGl2ZT0wLEguX2lzaGxuc3VibXVsKGcsMSx0ZSksSC5pc1plcm8oKXx8KEgubmVnYXRpdmVePTEpO3AmJihwLndvcmRzW3RlXT1jZSl9cmV0dXJuIHAmJnAuc3RyaXAoKSxILnN0cmlwKCksImRpdiIhPT1BJiYwIT09RiYm''@;'; put 'put ''SC5pdXNocm4oRikse2RpdjpwfHxudWxsLG1vZDpIfX0sTS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGIsQSxGKXtyZXR1cm4gbSghYi5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBNKDApLG1vZDpuZXcgTSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZl''@;'; put 'put ''PyhDPXRoaXMubmVnKCkuZGl2bW9kKGIsQSksIm1vZCIhPT1BJiYoSD1DLmRpdi5uZWcoKSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2ZSYmZy5pYWRkKGIpKSx7ZGl2OkgsbW9kOmd9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmU/KEM9dGhp''@;'; put 'put ''cy5kaXZtb2QoYi5uZWcoKSxBKSwibW9kIiE9PUEmJihIPUMuZGl2Lm5lZygpKSx7ZGl2OkgsbW9kOkMubW9kfSk6dGhpcy5uZWdhdGl2ZSZiLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIubmVnKCksQSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2''@;'; put 'put ''ZSYmZy5pc3ViKGIpKSx7ZGl2OkMuZGl2LG1vZDpnfSk6Yi5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGIpPDA/e2RpdjpuZXcgTSgwKSxtb2Q6dGhpc306MT09PWIubGVuZ3RoPyJkaXYiPT09QT97ZGl2OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1BP3tk''@;'; put 'put ''aXY6bnVsbCxtb2Q6bmV3IE0odGhpcy5tb2RuKGIud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm5ldyBNKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoYixBKTt2YXIgSCxnLEN9LE0ucHJvdG90eXBlLmRpdj1mdW5jdGlvbihiKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5kaXZtb2QoYiwiZGl2IiwhMSkuZGl2fSxNLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITEpLm1vZH0sTS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwibW9kIiwhMCkubW9kfSxNLnBy''@;'; put 'put ''b3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbihiKXt2YXIgQT10aGlzLmRpdm1vZChiKTtpZihBLm1vZC5pc1plcm8oKSlyZXR1cm4gQS5kaXY7dmFyIEY9MCE9PUEuZGl2Lm5lZ2F0aXZlP0EubW9kLmlzdWIoYik6QS5tb2QsSD1iLnVzaHJuKDEpLGc9Yi5hbmRsbigxKSxDPUYuY21wKEgpO3Jl''@;'; put 'put ''dHVybiBDPDB8fDE9PT1nJiYwPT09Qz9BLmRpdjowIT09QS5kaXYubmVnYXRpdmU/QS5kaXYuaXN1Ym4oMSk6QS5kaXYuaWFkZG4oMSl9LE0ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2Myk7Zm9yKHZhciBBPSgxPDwyNiklYixGPTAsSD10aGlzLmxlbmd0aC0xO0g+''@;'; put 'put ''PTA7SC0tKUY9KEEqRisoMHx0aGlzLndvcmRzW0hdKSklYjtyZXR1cm4gRn0sTS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2Myk7Zm9yKHZhciBBPTAsRj10aGlzLmxlbmd0aC0xO0Y+PTA7Ri0tKXt2YXIgSD0oMHx0aGlzLndvcmRzW0ZdKSs2NzEwODg2NCpBO3Ro''@;'; put 'put ''aXMud29yZHNbRl09SC9ifDAsQT1IJWJ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGIpfSxNLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUpLG0oIWIuaXNaZXJvKCkp''@;'; put 'put ''O3ZhciBBPXRoaXMsRj1iLmNsb25lKCk7QT0wIT09QS5uZWdhdGl2ZT9BLnVtb2QoYik6QS5jbG9uZSgpO2Zvcih2YXIgSD1uZXcgTSgxKSxnPW5ldyBNKDApLEM9bmV3IE0oMCksaz1uZXcgTSgxKSxfPTA7QS5pc0V2ZW4oKSYmRi5pc0V2ZW4oKTspQS5pdXNocm4oMSksRi5pdXNocm4oMSks''@;'; put 'put ''KytfO2Zvcih2YXIgcD1GLmNsb25lKCksdz1BLmNsb25lKCk7IUEuaXNaZXJvKCk7KXtmb3IodmFyIEs9MCx0ZT0xOyEoQS53b3Jkc1swXSZ0ZSkmJks8MjY7KytLLHRlPDw9MSk7aWYoSz4wKWZvcihBLml1c2hybihLKTtLLS0gPjA7KShILmlzT2RkKCl8fGcuaXNPZGQoKSkmJihILmlhZGQo''@;'; put 'put ''cCksZy5pc3ViKHcpKSxILml1c2hybigxKSxnLml1c2hybigxKTtmb3IodmFyIGNlPTAsaGU9MTshKEYud29yZHNbMF0maGUpJiZjZTwyNjsrK2NlLGhlPDw9MSk7aWYoY2U+MClmb3IoRi5pdXNocm4oY2UpO2NlLS0gPjA7KShDLmlzT2RkKCl8fGsuaXNPZGQoKSkmJihDLmlhZGQocCksay5p''@;'; put 'put ''c3ViKHcpKSxDLml1c2hybigxKSxrLml1c2hybigxKTtBLmNtcChGKT49MD8oQS5pc3ViKEYpLEguaXN1YihDKSxnLmlzdWIoaykpOihGLmlzdWIoQSksQy5pc3ViKEgpLGsuaXN1YihnKSl9cmV0dXJue2E6QyxiOmssZ2NkOkYuaXVzaGxuKF8pfX0sTS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0''@;'; put 'put ''aW9uKGIpe20oMD09PWIubmVnYXRpdmUpLG0oIWIuaXNaZXJvKCkpO3ZhciBLLEE9dGhpcyxGPWIuY2xvbmUoKTtBPTAhPT1BLm5lZ2F0aXZlP0EudW1vZChiKTpBLmNsb25lKCk7Zm9yKHZhciBIPW5ldyBNKDEpLGc9bmV3IE0oMCksQz1GLmNsb25lKCk7QS5jbXBuKDEpPjAmJkYuY21wbigx''@;'; put 'put ''KT4wOyl7Zm9yKHZhciBrPTAsXz0xOyEoQS53b3Jkc1swXSZfKSYmazwyNjsrK2ssXzw8PTEpO2lmKGs+MClmb3IoQS5pdXNocm4oayk7ay0tID4wOylILmlzT2RkKCkmJkguaWFkZChDKSxILml1c2hybigxKTtmb3IodmFyIHA9MCx3PTE7IShGLndvcmRzWzBdJncpJiZwPDI2OysrcCx3PDw9''@;'; put 'put ''MSk7aWYocD4wKWZvcihGLml1c2hybihwKTtwLS0gPjA7KWcuaXNPZGQoKSYmZy5pYWRkKEMpLGcuaXVzaHJuKDEpO0EuY21wKEYpPj0wPyhBLmlzdWIoRiksSC5pc3ViKGcpKTooRi5pc3ViKEEpLGcuaXN1YihIKSl9cmV0dXJuKEs9MD09PUEuY21wbigxKT9IOmcpLmNtcG4oMCk8MCYmSy5p''@;'; put 'put ''YWRkKGIpLEt9LE0ucHJvdG90eXBlLmdjZD1mdW5jdGlvbihiKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBiLmFicygpO2lmKGIuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEE9dGhpcy5jbG9uZSgpLEY9Yi5jbG9uZSgpO0EubmVnYXRpdmU9MCxGLm5lZ2F0aXZlPTA7Zm9yKHZh''@;'; put 'put ''ciBIPTA7QS5pc0V2ZW4oKSYmRi5pc0V2ZW4oKTtIKyspQS5pdXNocm4oMSksRi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO0EuaXNFdmVuKCk7KUEuaXVzaHJuKDEpO2Zvcig7Ri5pc0V2ZW4oKTspRi5pdXNocm4oMSk7dmFyIGc9QS5jbXAoRik7aWYoZzwwKXt2YXIgQz1BO0E9RixGPUN9ZWxz''@;'; put 'put ''ZSBpZigwPT09Z3x8MD09PUYuY21wbigxKSlicmVhaztBLmlzdWIoRil9cmV0dXJuIEYuaXVzaGxuKEgpfSxNLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVnY2QoYikuYS51bW9kKGIpfSxNLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhp''@;'; put 'put ''cy53b3Jkc1swXSl9LE0ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sTS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sTS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09''@;'; put 'put ''dHlwZW9mIGIpO3ZhciBBPWIlMjYsRj0oYi1BKS8yNixIPTE8PEE7aWYodGhpcy5sZW5ndGg8PUYpcmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl18PUgsdGhpcztmb3IodmFyIGc9SCxDPUY7MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz0wfHRoaXMud29yZHNb''@;'; put 'put ''Q107Zz0oays9Zyk+Pj4yNix0aGlzLndvcmRzW0NdPWsmPTY3MTA4ODYzfXJldHVybiAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1sw''@;'; put 'put ''XX0sTS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihiKXt2YXIgRixBPWI8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIUEpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJkEpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpRj0xO2Vsc2V7QSYmKGI9LWIpLG0oYjw9''@;'; put 'put ''NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIEg9MHx0aGlzLndvcmRzWzBdO0Y9SD09PWI/MDpIPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtRjpGfSxNLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0''@;'; put 'put ''aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQT10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUE6QX0sTS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxiLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEE9MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pe3ZhciBIPTB8dGhpcy53b3Jkc1tGXSxnPTB8Yi53b3Jkc1tGXTtpZihIIT09Zyl7SDxnP0E9LTE6SD5nJiYoQT0xKTticmVha319cmV0dXJuIEF9LE0u''@;'; put 'put ''cHJvdG90eXBlLmd0bj1mdW5jdGlvbihiKXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sTS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wKGIpPj0wfSxNLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LE0ucHJvdG90eXBlLmx0ZW49ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKTw9MH0sTS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sTS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXty''@;'; put 'put ''ZXR1cm4gMD09PXRoaXMuY21wKGIpfSxNLnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGxlKGIpfSxNLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxtKDA9PT10aGlzLm5lZ2F0''@;'; put 'put ''aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBj''@;'; put 'put ''b250ZXh0IiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LE0ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxNLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIg''@;'; put 'put ''aW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LE0ucHJvdG90eXBlLnJl''@;'; put 'put ''ZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5''@;'; put 'put ''IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zdWIodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LE0ucHJvdG90eXBl''@;'; put 'put ''LnJlZFNobD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5''@;'; put 'put ''IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLm11bCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQu''@;'; put 'put ''X3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5pbXVsKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRo''@;'; put 'put ''aXMpfSxNLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE0ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSW52bSB3''@;'; put 'put ''b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxNLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMu''@;'; put 'put ''cmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLm5lZyh0aGlzKX0sTS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3Zh''@;'; put 'put ''ciBxPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gSihXLGIpe3RoaXMubmFtZT1XLHRoaXMucD1uZXcgTShiLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCks''@;'; put 'put ''dGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gZWUoKXtKLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gcmUoKXtKLmNhbGwodGhpcywicDIyNCIsImZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gaWUoKXtKLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gdWUo''@;'; put 'put ''KXtKLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gbGUoVyl7aWYoInN0cmluZyI9PXR5cGVvZiBXKXt2YXIgYj1NLl9wcmltZShXKTt0aGlzLm09Yi5wLHRoaXMu''@;'; put 'put ''cHJpbWU9Yn1lbHNlIG0oVy5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1XLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBhZShXKXtsZS5jYWxsKHRoaXMsVyksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRo''@;'; put 'put ''aXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgTSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4o''@;'; put 'put ''MSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1KLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IE0obnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlz''@;'; put 'put ''Lm4vMTMpKSxifSxKLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBGLEE9Yjtkb3t0aGlzLnNwbGl0KEEsdGhpcy50bXApLEY9KEE9KEE9dGhpcy5pbXVsSyhBKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKEY+dGhpcy5uKTt2YXIgSD1GPHRoaXMubj8tMTpB''@;'; put 'put ''LnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PUg/KEEud29yZHNbMF09MCxBLmxlbmd0aD0xKTpIPjA/QS5pc3ViKHRoaXMucCk6dm9pZCAwIT09QS5zdHJpcD9BLnN0cmlwKCk6QS5fc3RyaXAoKSxBfSxKLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2IuaXVzaHJuKHRoaXMubiwwLEEp''@;'; put 'put ''fSxKLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtyZXR1cm4gYi5pbXVsKHRoaXMuayl9LHNlKGVlLEopLGVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj00MTk0MzAzLEg9TWF0aC5taW4oYi5sZW5ndGgsOSksZz0wO2c8SDtnKyspQS53b3Jkc1tnXT1iLndv''@;'; put 'put ''cmRzW2ddO2lmKEEubGVuZ3RoPUgsYi5sZW5ndGg8PTkpcmV0dXJuIGIud29yZHNbMF09MCx2b2lkKGIubGVuZ3RoPTEpO3ZhciBDPWIud29yZHNbOV07Zm9yKEEud29yZHNbQS5sZW5ndGgrK109QyZGLGc9MTA7ZzxiLmxlbmd0aDtnKyspe3ZhciBrPTB8Yi53b3Jkc1tnXTtiLndvcmRzW2ct''@;'; put 'put ''MTBdPShrJkYpPDw0fEM+Pj4yMixDPWt9Yi53b3Jkc1tnLTEwXT1DPj4+PTIyLGIubGVuZ3RoLT0wPT09QyYmYi5sZW5ndGg+MTA/MTA6OX0sZWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Iud29yZHNbYi5sZW5ndGhdPTAsYi53b3Jkc1tiLmxlbmd0aCsxXT0wLGIubGVuZ3RoKz0y''@;'; put 'put ''O2Zvcih2YXIgQT0wLEY9MDtGPGIubGVuZ3RoO0YrKyl7dmFyIEg9MHxiLndvcmRzW0ZdO2Iud29yZHNbRl09NjcxMDg4NjMmKEErPTk3NypIKSxBPTY0KkgrKEEvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1iLndvcmRzW2IubGVuZ3RoLTFdJiYoYi5sZW5ndGgtLSwwPT09Yi53b3Jkc1tiLmxl''@;'; put 'put ''bmd0aC0xXSYmYi5sZW5ndGgtLSksYn0sc2UocmUsSiksc2UoaWUsSiksc2UodWUsSiksdWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Zvcih2YXIgQT0wLEY9MDtGPGIubGVuZ3RoO0YrKyl7dmFyIEg9MTkqKDB8Yi53b3Jkc1tGXSkrQSxnPTY3MTA4ODYzJkg7SD4+Pj0yNixiLndv''@;'; put 'put ''cmRzW0ZdPWcsQT1IfXJldHVybiAwIT09QSYmKGIud29yZHNbYi5sZW5ndGgrK109QSksYn0sTS5fcHJpbWU9ZnVuY3Rpb24oYil7aWYocVtiXSlyZXR1cm4gcVtiXTt2YXIgQTtpZigiazI1NiI9PT1iKUE9bmV3IGVlO2Vsc2UgaWYoInAyMjQiPT09YilBPW5ldyByZTtlbHNlIGlmKCJwMTky''@;'; put 'put ''Ij09PWIpQT1uZXcgaWU7ZWxzZXtpZigicDI1NTE5IiE9PWIpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrYik7QT1uZXcgdWV9cmV0dXJuIHFbYl09QSxBfSxsZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oYil7bSgwPT09Yi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkg''@;'; put 'put ''d2l0aCBwb3NpdGl2ZXMiKSxtKGIucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGxlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihiLEEpe20oIShiLm5lZ2F0aXZlfEEubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG0oYi5yZWQm''@;'; put 'put ''JmIucmVkPT09QS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhp''@;'; put 'put ''cyl9LGxlLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuYWRkKEEpO3JldHVybiBG''@;'; put 'put ''LmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5pYWRkKEEpO3JldHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGfSxsZS5w''@;'; put 'put ''cm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuc3ViKEEpO3JldHVybiBGLmNtcG4oMCk8MCYmRi5pYWRkKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEp''@;'; put 'put ''O3ZhciBGPWIuaXN1YihBKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEZ9LGxlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbihBKSl9LGxlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIsQSl7''@;'; put 'put ''cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYixBKSx0aGlzLmltb2QoYi5pbXVsKEEpKX0sbGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIsQSksdGhpcy5pbW9kKGIubXVsKEEpKX0sbGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRo''@;'; put 'put ''aXMuaW11bChiLGIuY2xvbmUoKSl9LGxlLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LGxlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgQT10aGlzLm0uYW5kbG4oMyk7aWYobShBJTI9''@;'; put 'put ''PTEpLDM9PT1BKXt2YXIgRj10aGlzLm0uYWRkKG5ldyBNKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsRil9Zm9yKHZhciBIPXRoaXMubS5zdWJuKDEpLGc9MDshSC5pc1plcm8oKSYmMD09PUguYW5kbG4oMSk7KWcrKyxILml1c2hybigxKTttKCFILmlzWmVybygpKTt2YXIgQz1u''@;'; put 'put ''ZXcgTSgxKS50b1JlZCh0aGlzKSxrPUMucmVkTmVnKCksXz10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IE0oMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLF8pLmNtcChrKTspcC5yZWRJQWRkKGspO2Zvcih2YXIgdz10aGlz''@;'; put 'put ''LnBvdyhwLEgpLEs9dGhpcy5wb3coYixILmFkZG4oMSkuaXVzaHJuKDEpKSx0ZT10aGlzLnBvdyhiLEgpLGNlPWc7MCE9PXRlLmNtcChDKTspe2Zvcih2YXIgaGU9dGUsU2U9MDswIT09aGUuY21wKEMpO1NlKyspaGU9aGUucmVkU3FyKCk7bShTZTxjZSk7dmFyIExlPXRoaXMucG93KHcsbmV3''@;'; put 'put ''IE0oMSkuaXVzaGxuKGNlLVNlLTEpKTtLPUsucmVkTXVsKExlKSx3PUxlLnJlZFNxcigpLHRlPXRlLnJlZE11bCh3KSxjZT1TZX1yZXR1cm4gS30sbGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIEE9Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUEubmVnYXRpdmU/KEEubmVn''@;'; put 'put ''YXRpdmU9MCx0aGlzLmltb2QoQSkucmVkTmVnKCkpOnRoaXMuaW1vZChBKX0sbGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLEEpe2lmKEEuaXNaZXJvKCkpcmV0dXJuIG5ldyBNKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1BLmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgSD1uZXcgQXJy''@;'; put 'put ''YXkoMTYpO0hbMF09bmV3IE0oMSkudG9SZWQodGhpcyksSFsxXT1iO2Zvcih2YXIgZz0yO2c8SC5sZW5ndGg7ZysrKUhbZ109dGhpcy5tdWwoSFtnLTFdLGIpO3ZhciBDPUhbMF0saz0wLF89MCxwPUEuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz1BLmxlbmd0aC0xO2c+PTA7''@;'; put 'put ''Zy0tKXtmb3IodmFyIHc9QS53b3Jkc1tnXSxLPXAtMTtLPj0wO0stLSl7dmFyIHRlPXc+PksmMTtDIT09SFswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT10ZXx8MCE9PWs/KGs8PD0xLGt8PXRlLCg0PT0rK198fDA9PT1nJiYwPT09SykmJihDPXRoaXMubXVsKEMsSFtrXSksXz0wLGs9MCkpOl89''@;'; put 'put ''MH1wPTI2fXJldHVybiBDfSxsZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3ZhciBBPWIudW1vZCh0aGlzLm0pO3JldHVybiBBPT09Yj9BLmNsb25lKCk6QX0sbGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciBBPWIuY2xvbmUoKTtyZXR1cm4gQS5yZWQ9''@;'; put 'put ''bnVsbCxBfSxNLm1vbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBhZShiKX0sc2UoYWUsbGUpLGFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sYWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3ZhciBBPXRoaXMuaW1vZChiLm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gQS5yZWQ9bnVsbCxBfSxhZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLEEpe2lmKGIuaXNaZXJvKCl8fEEuaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIEY9Yi5pbXVsKEEpLEg9''@;'; put 'put ''Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1GLmlzdWIoSCkuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQo''@;'; put 'put ''dGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYixBKXtpZihiLmlzWmVybygpfHxBLmlzWmVybygpKXJldHVybiBuZXcgTSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIEY9Yi5tdWwoQSksSD1GLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1p''@;'; put 'put ''bnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxnPUYuaXN1YihIKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sYWUu''@;'; put 'put ''cHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oUWU9Ui5ubWQoUWUpLHRoaXMpfSw5MTk3MzpmdW5jdGlvbihRZSl7UWUuZXhwb3J0cz1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0''@;'; put 'put ''IjtmdW5jdGlvbiBNZShBZSl7cmV0dXJuKE1lPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGplKXtyZXR1cm4gdHlwZW9mIGplfTpmdW5jdGlvbihqZSl7cmV0dXJuIGplJiYiZnVuY3Rpb24iPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sJiZqZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmamUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBqZX0pKEFlKX1mdW5jdGlvbiBSKEFlLGplKXtyZXR1cm4oUj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHN0LHh0KXtyZXR1cm4gc3QuX19wcm90b19fPXh0''@;'; put 'put ''LHN0fSkoQWUsamUpfWZ1bmN0aW9uIHgoQWUsamUsaXQpe3JldHVybih4PWZ1bmN0aW9uIG9lKCl7aWYodHlwZW9mIFJlZmxlY3Q+InUifHwhUmVmbGVjdC5jb25zdHJ1Y3R8fFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVy''@;'; put 'put ''biEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sZnVuY3Rpb24oKXt9KSksITB9Y2F0Y2h7cmV0dXJuITF9fSgpP1JlZmxlY3QuY29uc3RydWN0OmZ1bmN0aW9uKHh0LEZ0LE90KXt2YXIgS3Q9W251bGxdO0t0''@;'; put 'put ''LnB1c2guYXBwbHkoS3QsRnQpO3ZhciBCdD1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh4dCxLdCkpO3JldHVybiBPdCYmUihCdCxPdC5wcm90b3R5cGUpLEJ0fSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIG0oQWUpe3JldHVybiBmdW5jdGlvbiBzZShBZSl7aWYoQXJyYXkuaXNB''@;'; put 'put ''cnJheShBZSkpcmV0dXJuIEkoQWUpfShBZSl8fGZ1bmN0aW9uIE0oQWUpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1BZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1BZVsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKEFlKX0oQWUpfHxmdW5jdGlvbiBPKEFlLGplKXtpZihB''@;'; put 'put ''ZSl7aWYoInN0cmluZyI9PXR5cGVvZiBBZSlyZXR1cm4gSShBZSxqZSk7dmFyIGl0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChBZSkuc2xpY2UoOCwtMSk7aWYoIk9iamVjdCI9PT1pdCYmQWUuY29uc3RydWN0b3ImJihpdD1BZS5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PWl0''@;'; put 'put ''fHwiU2V0Ij09PWl0KXJldHVybiBBcnJheS5mcm9tKEFlKTtpZigiQXJndW1lbnRzIj09PWl0fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChpdCkpcmV0dXJuIEkoQWUsamUpfX0oQWUpfHxmdW5jdGlvbiBqKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigi''@;'; put 'put ''SW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSShBZSxqZSl7KG51bGw9PWpl''@;'; put 'put ''fHxqZT5BZS5sZW5ndGgpJiYoamU9QWUubGVuZ3RoKTtmb3IodmFyIGl0PTAsc3Q9bmV3IEFycmF5KGplKTtpdDxqZTtpdCsrKXN0W2l0XT1BZVtpdF07cmV0dXJuIHN0fXZhciBHPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxEPU9iamVjdC5zZXRQcm90b3R5cGVPZixUPU9iamVjdC5pc0Zyb3pl''@;'; put 'put ''bixFPU9iamVjdC5nZXRQcm90b3R5cGVPZix6PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsTj1PYmplY3QuZnJlZXplLEI9T2JqZWN0LnNlYWwsWj1PYmplY3QuY3JlYXRlLFk9dHlwZW9mIFJlZmxlY3Q8InUiJiZSZWZsZWN0LFU9WS5hcHBseSxxPVkuY29uc3RydWN0O1V8fChV''@;'; put 'put ''PWZ1bmN0aW9uKGplLGl0LHN0KXtyZXR1cm4gamUuYXBwbHkoaXQsc3QpfSksTnx8KE49ZnVuY3Rpb24oamUpe3JldHVybiBqZX0pLEJ8fChCPWZ1bmN0aW9uKGplKXtyZXR1cm4gamV9KSxxfHwocT1mdW5jdGlvbihqZSxpdCl7cmV0dXJuIHgoamUsbShpdCkpfSk7dmFyIEo9SChBcnJheS5w''@;'; put 'put ''cm90b3R5cGUuZm9yRWFjaCksZWU9SChBcnJheS5wcm90b3R5cGUucG9wKSxyZT1IKEFycmF5LnByb3RvdHlwZS5wdXNoKSxpZT1IKFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLHVlPUgoU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyksbGU9SChTdHJpbmcucHJvdG90eXBlLm1hdGNo''@;'; put 'put ''KSxhZT1IKFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksVz1IKFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiksYj1IKFN0cmluZy5wcm90b3R5cGUudHJpbSksQT1IKFJlZ0V4cC5wcm90b3R5cGUudGVzdCksRj1mdW5jdGlvbiBnKEFlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGplPWFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGgsaXQ9bmV3IEFycmF5KGplKSxzdD0wO3N0PGplO3N0KyspaXRbc3RdPWFyZ3VtZW50c1tzdF07cmV0dXJuIHEoQWUsaXQpfX0oVHlwZUVycm9yKTtmdW5jdGlvbiBIKEFlKXtyZXR1cm4gZnVuY3Rpb24oamUpe2Zvcih2YXIgaXQ9YXJndW1lbnRzLmxlbmd0aCxzdD1u''@;'; put 'put ''ZXcgQXJyYXkoaXQ+MT9pdC0xOjApLHh0PTE7eHQ8aXQ7eHQrKylzdFt4dC0xXT1hcmd1bWVudHNbeHRdO3JldHVybiBVKEFlLGplLHN0KX19ZnVuY3Rpb24gQyhBZSxqZSxpdCl7dmFyIHN0O2l0PW51bGwhPT0oc3Q9aXQpJiZ2b2lkIDAhPT1zdD9zdDppZSxEJiZEKEFlLG51bGwpO2Zvcih2''@;'; put 'put ''YXIgeHQ9amUubGVuZ3RoO3h0LS07KXt2YXIgRnQ9amVbeHRdO2lmKCJzdHJpbmciPT10eXBlb2YgRnQpe3ZhciBPdD1pdChGdCk7T3QhPT1GdCYmKFQoamUpfHwoamVbeHRdPU90KSxGdD1PdCl9QWVbRnRdPSEwfXJldHVybiBBZX1mdW5jdGlvbiBrKEFlKXt2YXIgaXQsamU9WihudWxsKTtm''@;'; put 'put ''b3IoaXQgaW4gQWUpITA9PT1VKEcsQWUsW2l0XSkmJihqZVtpdF09QWVbaXRdKTtyZXR1cm4gamV9ZnVuY3Rpb24gXyhBZSxqZSl7Zm9yKDtudWxsIT09QWU7KXt2YXIgaXQ9eihBZSxqZSk7aWYoaXQpe2lmKGl0LmdldClyZXR1cm4gSChpdC5nZXQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBp''@;'; put 'put ''dC52YWx1ZSlyZXR1cm4gSChpdC52YWx1ZSl9QWU9RShBZSl9cmV0dXJuIGZ1bmN0aW9uIHN0KHh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJmYWxsYmFjayB2YWx1ZSBmb3IiLHh0KSxudWxsfX12YXIgcD1OKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xl''@;'; put 'put ''IiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxp''@;'; put 'put ''c3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIs''@;'; put 'put ''Img1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9i''@;'; put 'put ''ciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5IiwicyIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3Ry''@;'; put 'put ''aWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSx3''@;'; put 'put ''PU4oWyJzdmciLCJhIiwiYWx0Z2x5cGgiLCJhbHRnbHlwaGRlZiIsImFsdGdseXBoaXRlbSIsImFuaW1hdGVjb2xvciIsImFuaW1hdGVtb3Rpb24iLCJhbmltYXRldHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcHBhdGgiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250Iiwi''@;'; put 'put ''ZyIsImdseXBoIiwiZ2x5cGhyZWYiLCJoa2VybiIsImltYWdlIiwibGluZSIsImxpbmVhcmdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwibXBhdGgiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3Ai''@;'; put 'put ''LCJzdHlsZSIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0cGF0aCIsInRpdGxlIiwidHJlZiIsInRzcGFuIiwidmlldyIsInZrZXJuIl0pLEs9TihbImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1h''@;'; put 'put ''dHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZURpc3RhbnRMaWdodCIsImZlRmxvb2QiLCJmZUZ1bmNBIiwiZmVGdW5jQiIsImZlRnVuY0ciLCJmZUZ1bmNSIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTWVyZ2VOb2RlIiwi''@;'; put 'put ''ZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVBvaW50TGlnaHQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVNwb3RMaWdodCIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSJdKSx0ZT1OKFsiYW5pbWF0ZSIsImNvbG9yLXByb2ZpbGUiLCJjdXJzb3IiLCJkaXNjYXJkIiwiZmVkcm9wc2hhZG93''@;'; put 'put ''IiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXNyYyIsImZvbnQtZmFjZS11cmkiLCJmb3JlaWdub2JqZWN0IiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJtZXNoIiwibWVzaGdyYWRpZW50IiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1p''@;'; put 'put ''c3NpbmctZ2x5cGgiLCJzY3JpcHQiLCJzZXQiLCJzb2xpZGNvbG9yIiwidW5rbm93biIsInVzZSJdKSxjZT1OKFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9yIiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJt''@;'; put 'put ''b3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1zdWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiXSksaGU9TihbIm1hY3Rpb24i''@;'; put 'put ''LCJtYWxpZ25ncm91cCIsIm1hbGlnbm1hcmsiLCJtbG9uZ2RpdiIsIm1zY2FycmllcyIsIm1zY2FycnkiLCJtc2dyb3VwIiwibXN0YWNrIiwibXNsaW5lIiwibXNyb3ciLCJzZW1hbnRpY3MiLCJhbm5vdGF0aW9uIiwiYW5ub3RhdGlvbi14bWwiLCJtcHJlc2NyaXB0cyIsIm5vbmUiXSksU2U9''@;'; put 'put ''TihbIiN0ZXh0Il0pLExlPU4oWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3BpY3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxw''@;'; put 'put ''YWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29udHJvbHMiLCJjb250cm9sc2xpc3QiLCJjb29yZHMiLCJjcm9zc29yaWdpbiIsImRhdGV0aW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGly''@;'; put 'put ''IiwiZGlzYWJsZWQiLCJkaXNhYmxlcGljdHVyZWlucGljdHVyZSIsImRpc2FibGVyZW1vdGVwbGF5YmFjayIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZW5jdHlwZSIsImVudGVya2V5aGludCIsImZhY2UiLCJmb3IiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaGlnaCIsImhyZWYi''@;'; put 'put ''LCJocmVmbGFuZyIsImlkIiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIs''@;'; put 'put ''Im11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInBsYXlzaW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInB1YmRhdGUiLCJyYWRpb2dyb3VwIiwicmVhZG9ubHkiLCJy''@;'; put 'put ''ZWwiLCJyZXF1aXJlZCIsInJldiIsInJldmVyc2VkIiwicm9sZSIsInJvd3MiLCJyb3dzcGFuIiwic3BlbGxjaGVjayIsInNjb3BlIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcmNsYW5nIiwic3RhcnQiLCJzcmMiLCJzcmNzZXQiLCJzdGVwIiwic3R5bGUi''@;'; put 'put ''LCJzdW1tYXJ5IiwidGFiaW5kZXgiLCJ0aXRsZSIsInRyYW5zbGF0ZSIsInR5cGUiLCJ1c2VtYXAiLCJ2YWxpZ24iLCJ2YWx1ZSIsIndpZHRoIiwieG1sbnMiLCJzbG90Il0pLEhlPU4oWyJhY2NlbnQtaGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFkZGl0aXZlIiwiYWxpZ25tZW50LWJhc2VsaW5l''@;'; put 'put ''IiwiYXNjZW50IiwiYXR0cmlidXRlbmFtZSIsImF0dHJpYnV0ZXR5cGUiLCJhemltdXRoIiwiYmFzZWZyZXF1ZW5jeSIsImJhc2VsaW5lLXNoaWZ0IiwiYmVnaW4iLCJiaWFzIiwiYnkiLCJjbGFzcyIsImNsaXAiLCJjbGlwcGF0aHVuaXRzIiwiY2xpcC1wYXRoIiwiY2xpcC1ydWxlIiwiY29s''@;'; put 'put ''b3IiLCJjb2xvci1pbnRlcnBvbGF0aW9uIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIiwiY29sb3ItcHJvZmlsZSIsImNvbG9yLXJlbmRlcmluZyIsImN4IiwiY3kiLCJkIiwiZHgiLCJkeSIsImRpZmZ1c2Vjb25zdGFudCIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkaXZpc29yIiwi''@;'; put 'put ''ZHVyIiwiZWRnZW1vZGUiLCJlbGV2YXRpb24iLCJlbmQiLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiZmlsdGVyIiwiZmlsdGVydW5pdHMiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc2l6ZS1hZGp1c3Qi''@;'; put 'put ''LCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC12YXJpYW50IiwiZm9udC13ZWlnaHQiLCJmeCIsImZ5IiwiZzEiLCJnMiIsImdseXBoLW5hbWUiLCJnbHlwaHJlZiIsImdyYWRpZW50dW5pdHMiLCJncmFkaWVudHRyYW5zZm9ybSIsImhlaWdodCIsImhyZWYiLCJpZCIsImltYWdl''@;'; put 'put ''LXJlbmRlcmluZyIsImluIiwiaW4yIiwiayIsImsxIiwiazIiLCJrMyIsIms0Iiwia2VybmluZyIsImtleXBvaW50cyIsImtleXNwbGluZXMiLCJrZXl0aW1lcyIsImxhbmciLCJsZW5ndGhhZGp1c3QiLCJsZXR0ZXItc3BhY2luZyIsImtlcm5lbG1hdHJpeCIsImtlcm5lbHVuaXRsZW5ndGgi''@;'; put 'put ''LCJsaWdodGluZy1jb2xvciIsImxvY2FsIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXJoZWlnaHQiLCJtYXJrZXJ1bml0cyIsIm1hcmtlcndpZHRoIiwibWFza2NvbnRlbnR1bml0cyIsIm1hc2t1bml0cyIsIm1heCIsIm1hc2siLCJtZWRpYSIsIm1l''@;'; put 'put ''dGhvZCIsIm1vZGUiLCJtaW4iLCJuYW1lIiwibnVtb2N0YXZlcyIsIm9mZnNldCIsIm9wZXJhdG9yIiwib3BhY2l0eSIsIm9yZGVyIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVyZmxvdyIsInBhaW50LW9yZGVyIiwicGF0aCIsInBhdGhsZW5ndGgiLCJwYXR0ZXJuY29u''@;'; put 'put ''dGVudHVuaXRzIiwicGF0dGVybnRyYW5zZm9ybSIsInBhdHRlcm51bml0cyIsInBvaW50cyIsInByZXNlcnZlYWxwaGEiLCJwcmVzZXJ2ZWFzcGVjdHJhdGlvIiwicHJpbWl0aXZldW5pdHMiLCJyIiwicngiLCJyeSIsInJhZGl1cyIsInJlZngiLCJyZWZ5IiwicmVwZWF0Y291bnQiLCJyZXBl''@;'; put 'put ''YXRkdXIiLCJyZXN0YXJ0IiwicmVzdWx0Iiwicm90YXRlIiwic2NhbGUiLCJzZWVkIiwic2hhcGUtcmVuZGVyaW5nIiwic3BlY3VsYXJjb25zdGFudCIsInNwZWN1bGFyZXhwb25lbnQiLCJzcHJlYWRtZXRob2QiLCJzdGFydG9mZnNldCIsInN0ZGRldmlhdGlvbiIsInN0aXRjaHRpbGVzIiwi''@;'; put 'put ''c3RvcC1jb2xvciIsInN0b3Atb3BhY2l0eSIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1saW5lY2FwIiwic3Ryb2tlLWxpbmVqb2luIiwic3Ryb2tlLW1pdGVybGltaXQiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCIsInN0''@;'; put 'put ''eWxlIiwic3VyZmFjZXNjYWxlIiwic3lzdGVtbGFuZ3VhZ2UiLCJ0YWJpbmRleCIsInRhcmdldHgiLCJ0YXJnZXR5IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtLW9yaWdpbiIsInRleHQtYW5jaG9yIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1yZW5kZXJpbmciLCJ0ZXh0bGVuZ3RoIiwidHlw''@;'; put 'put ''ZSIsInUxIiwidTIiLCJ1bmljb2RlIiwidmFsdWVzIiwidmlld2JveCIsInZpc2liaWxpdHkiLCJ2ZXJzaW9uIiwidmVydC1hZHYteSIsInZlcnQtb3JpZ2luLXgiLCJ2ZXJ0LW9yaWdpbi15Iiwid2lkdGgiLCJ3b3JkLXNwYWNpbmciLCJ3cmFwIiwid3JpdGluZy1tb2RlIiwieGNoYW5uZWxz''@;'; put 'put ''ZWxlY3RvciIsInljaGFubmVsc2VsZWN0b3IiLCJ4IiwieDEiLCJ4MiIsInhtbG5zIiwieSIsInkxIiwieTIiLCJ6Iiwiem9vbWFuZHBhbiJdKSx4ZT1OKFsiYWNjZW50IiwiYWNjZW50dW5kZXIiLCJhbGlnbiIsImJldmVsbGVkIiwiY2xvc2UiLCJjb2x1bW5zYWxpZ24iLCJjb2x1bW5saW5l''@;'; put 'put ''cyIsImNvbHVtbnNwYW4iLCJkZW5vbWFsaWduIiwiZGVwdGgiLCJkaXIiLCJkaXNwbGF5IiwiZGlzcGxheXN0eWxlIiwiZW5jb2RpbmciLCJmZW5jZSIsImZyYW1lIiwiaGVpZ2h0IiwiaHJlZiIsImlkIiwibGFyZ2VvcCIsImxlbmd0aCIsImxpbmV0aGlja25lc3MiLCJsc3BhY2UiLCJscXVv''@;'; put 'put ''dGUiLCJtYXRoYmFja2dyb3VuZCIsIm1hdGhjb2xvciIsIm1hdGhzaXplIiwibWF0aHZhcmlhbnQiLCJtYXhzaXplIiwibWluc2l6ZSIsIm1vdmFibGVsaW1pdHMiLCJub3RhdGlvbiIsIm51bWFsaWduIiwib3BlbiIsInJvd2FsaWduIiwicm93bGluZXMiLCJyb3dzcGFjaW5nIiwicm93c3Bh''@;'; put 'put ''biIsInJzcGFjZSIsInJxdW90ZSIsInNjcmlwdGxldmVsIiwic2NyaXB0bWluc2l6ZSIsInNjcmlwdHNpemVtdWx0aXBsaWVyIiwic2VsZWN0aW9uIiwic2VwYXJhdG9yIiwic2VwYXJhdG9ycyIsInN0cmV0Y2h5Iiwic3Vic2NyaXB0c2hpZnQiLCJzdXBzY3JpcHRzaGlmdCIsInN5bW1ldHJp''@;'; put 'put ''YyIsInZvZmZzZXQiLCJ3aWR0aCIsInhtbG5zIl0pLERlPU4oWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxCZT1CKC9ce1x7W1x3XFddKnxbXHdcV10qXH1cfS9nbSksR2U9QigvPCVbXHdcV10qfFtcd1xXXSolPi9nbSks''@;'; put 'put ''VWU9QigvXCR7W1x3XFddKn0vZ20pLHFlPUIoL15kYXRhLVtcLVx3Llx1MDBCNy1cdUZGRkZdLyksb3Q9QigvXmFyaWEtW1wtXHddKyQvKSxGZT1CKC9eKD86KD86KD86ZnxodCl0cHM/fG1haWx0b3x0ZWx8Y2FsbHRvfGNpZHx4bXBwKTp8W15hLXpdfFthLXorLlwtXSsoPzpbXmEteisuXC06''@;'; put 'put ''XXwkKSkvaSksd2U9QigvXig/Olx3K3NjcmlwdHxkYXRhKTovaSksRWU9QigvW1x1MDAwMC1cdTAwMjBcdTAwQTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXS9nKSxJZT1CKC9eaHRtbCQvaSksWGU9QigvXlthLXpdWy5cd10qKC1bLlx3XSspKyQvaSk7cmV0dXJuIGZ1''@;'; put 'put ''bmN0aW9uIGN0KCl7dmFyIEFlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp0eXBlb2Ygd2luZG93PiJ1Ij9udWxsOndpbmRvdyxqZT1mdW5jdGlvbihabil7cmV0dXJuIGN0KFpuKX07aWYoamUudmVyc2lvbj0iMi41LjUiLGplLnJlbW92''@;'; put 'put ''ZWQ9W10sIUFlfHwhQWUuZG9jdW1lbnR8fDkhPT1BZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gamUuaXNTdXBwb3J0ZWQ9ITEsamU7dmFyIGl0PUFlLmRvY3VtZW50LHN0PUFlLmRvY3VtZW50LHh0PUFlLkRvY3VtZW50RnJhZ21lbnQsRnQ9QWUuSFRNTFRlbXBsYXRlRWxlbWVudCxPdD1B''@;'; put 'put ''ZS5Ob2RlLEt0PUFlLkVsZW1lbnQsYm49QWUuTm9kZUZpbHRlcixCdD1BZS5OYW1lZE5vZGVNYXAseW49dm9pZCAwPT09QnQ/QWUuTmFtZWROb2RlTWFwfHxBZS5Nb3pOYW1lZEF0dHJNYXA6QnQsTm49QWUuSFRNTEZvcm1FbGVtZW50LG5uPUFlLkRPTVBhcnNlcixHbj1BZS50cnVzdGVkVHlw''@;'; put 'put ''ZXMsWW49S3QucHJvdG90eXBlLGZ0PV8oWW4sImNsb25lTm9kZSIpLGRuPV8oWW4sIm5leHRTaWJsaW5nIiksaG49XyhZbiwiY2hpbGROb2RlcyIpLHd0PV8oWW4sInBhcmVudE5vZGUiKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgRnQpe3ZhciBqdD1zdC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0''@;'; put 'put ''ZSIpO2p0LmNvbnRlbnQmJmp0LmNvbnRlbnQub3duZXJEb2N1bWVudCYmKHN0PWp0LmNvbnRlbnQub3duZXJEb2N1bWVudCl9dmFyIG10PWZ1bmN0aW9uKGplLGl0KXtpZigib2JqZWN0IiE9PU1lKGplKXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGplLmNyZWF0ZVBvbGljeSlyZXR1cm4gbnVsbDt2''@;'; put 'put ''YXIgc3Q9bnVsbCx4dD0iZGF0YS10dC1wb2xpY3ktc3VmZml4IjtpdC5jdXJyZW50U2NyaXB0JiZpdC5jdXJyZW50U2NyaXB0Lmhhc0F0dHJpYnV0ZSh4dCkmJihzdD1pdC5jdXJyZW50U2NyaXB0LmdldEF0dHJpYnV0ZSh4dCkpO3ZhciBGdD0iZG9tcHVyaWZ5Iisoc3Q/IiMiK3N0OiIiKTt0''@;'; put 'put ''cnl7cmV0dXJuIGplLmNyZWF0ZVBvbGljeShGdCx7Y3JlYXRlSFRNTDpmdW5jdGlvbihLdCl7cmV0dXJuIEt0fSxjcmVhdGVTY3JpcHRVUkw6ZnVuY3Rpb24oS3Qpe3JldHVybiBLdH19KX1jYXRjaHtyZXR1cm4gY29uc29sZS53YXJuKCJUcnVzdGVkVHlwZXMgcG9saWN5ICIrRnQrIiBjb3Vs''@;'; put 'put ''ZCBub3QgYmUgY3JlYXRlZC4iKSxudWxsfX0oR24saXQpLEh0PW10P210LmNyZWF0ZUhUTUwoIiIpOiIiLG50PXN0LmltcGxlbWVudGF0aW9uLEV0PXN0LmNyZWF0ZU5vZGVJdGVyYXRvcixlbj1zdC5jcmVhdGVEb2N1bWVudEZyYWdtZW50LFR0PXN0LmdldEVsZW1lbnRzQnlUYWdOYW1lLHl0''@;'; put 'put ''PWl0LmltcG9ydE5vZGUsJHQ9e307dHJ5eyR0PWsoc3QpLmRvY3VtZW50TW9kZT9zdC5kb2N1bWVudE1vZGU6e319Y2F0Y2h7fXZhciB4bj17fTtqZS5pc1N1cHBvcnRlZD0iZnVuY3Rpb24iPT10eXBlb2Ygd3QmJm50JiZ2b2lkIDAhPT1udC5jcmVhdGVIVE1MRG9jdW1lbnQmJjkhPT0kdDt2''@;'; put 'put ''YXIgU2wscWwsenQ9QmUsX249R2UsT249VWUscm49cWUsUG49b3QsQ249d2UsWHQ9RWUsSm49WGUseGk9RmUsYW49bnVsbCx0bj1DKHt9LFtdLmNvbmNhdChtKHApLG0odyksbShLKSxtKGNlKSxtKFNlKSkpLHVpPW51bGwsQXI9Qyh7fSxbXS5jb25jYXQobShMZSksbShIZSksbSh4ZSksbShE''@;'; put 'put ''ZSkpKSxocj1PYmplY3Quc2VhbChPYmplY3QuY3JlYXRlKG51bGwse3RhZ05hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYXR0cmlidXRlTmFtZUNoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJs''@;'; put 'put ''ZTohMCx2YWx1ZTpudWxsfSxhbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOiExfX0pKSxkaT1udWxsLGZpPW51bGwsaG89ITAsYnI9ITAsTGk9ITEsbG89ITAsVW49ITEsWGk9ITAsUWk9ITEsZm89''@;'; put 'put ''ITEsdm89ITEsUnI9ITEsWWk9ITEsem89ITEsaXM9ITAsdXM9ITEsUHU9ITAsRnU9ITEsJHU9e30sR2Q9bnVsbCxCcz1DKHt9LFsiYW5ub3RhdGlvbi14bWwiLCJhdWRpbyIsImNvbGdyb3VwIiwiZGVzYyIsImZvcmVpZ25vYmplY3QiLCJoZWFkIiwiaWZyYW1lIiwibWF0aCIsIm1pIiwibW4i''@;'; put 'put ''LCJtbyIsIm1zIiwibXRleHQiLCJub2VtYmVkIiwibm9mcmFtZXMiLCJub3NjcmlwdCIsInBsYWludGV4dCIsInNjcmlwdCIsInN0eWxlIiwic3ZnIiwidGVtcGxhdGUiLCJ0aGVhZCIsInRpdGxlIiwidmlkZW8iLCJ4bXAiXSksJGQ9bnVsbCxxZD1DKHt9LFsiYXVkaW8iLCJ2aWRlbyIsImlt''@;'; put 'put ''ZyIsInNvdXJjZSIsImltYWdlIiwidHJhY2siXSksY289bnVsbCxhdT1DKHt9LFsiYWx0IiwiY2xhc3MiLCJmb3IiLCJpZCIsImxhYmVsIiwibmFtZSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInJvbGUiLCJzdW1tYXJ5IiwidGl0bGUiLCJ2YWx1ZSIsInN0eWxlIiwieG1sbnMiXSksX3I9''@;'; put 'put ''Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLEtkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZWQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLF8xPWVkLHRhPSExLGtpPW51bGwsQ2w9Qyh7fSxbX3IsS2QsZWRdLHVlKSxRNz1bImFwcGxpY2F0aW9uL3ho''@;'; put 'put ''dG1sK3htbCIsInRleHQvaHRtbCJdLE1sPW51bGwsZTk9c3QuY3JlYXRlRWxlbWVudCgiZm9ybSIpLEFmPWZ1bmN0aW9uKFpuKXtyZXR1cm4gWm4gaW5zdGFuY2VvZiBSZWdFeHB8fFpuIGluc3RhbmNlb2YgRnVuY3Rpb259LHNnPWZ1bmN0aW9uKFpuKXtNbCYmTWw9PT1abnx8KCghWm58fCJv''@;'; put 'put ''YmplY3QiIT09TWUoWm4pKSYmKFpuPXt9KSxabj1rKFpuKSxTbD1TbD0tMT09PVE3LmluZGV4T2YoWm4uUEFSU0VSX01FRElBX1RZUEUpPyJ0ZXh0L2h0bWwiOlpuLlBBUlNFUl9NRURJQV9UWVBFLHFsPSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiPT09U2w/dWU6aWUsYW49IkFMTE9XRURfVEFH''@;'; put 'put ''UyJpbiBabj9DKHt9LFpuLkFMTE9XRURfVEFHUyxxbCk6dG4sdWk9IkFMTE9XRURfQVRUUiJpbiBabj9DKHt9LFpuLkFMTE9XRURfQVRUUixxbCk6QXIsa2k9IkFMTE9XRURfTkFNRVNQQUNFUyJpbiBabj9DKHt9LFpuLkFMTE9XRURfTkFNRVNQQUNFUyx1ZSk6Q2wsY289IkFERF9VUklfU0FG''@;'; put 'put ''RV9BVFRSImluIFpuP0MoayhhdSksWm4uQUREX1VSSV9TQUZFX0FUVFIscWwpOmF1LCRkPSJBRERfREFUQV9VUklfVEFHUyJpbiBabj9DKGsocWQpLFpuLkFERF9EQVRBX1VSSV9UQUdTLHFsKTpxZCxHZD0iRk9SQklEX0NPTlRFTlRTImluIFpuP0Moe30sWm4uRk9SQklEX0NPTlRFTlRTLHFs''@;'; put 'put ''KTpCcyxkaT0iRk9SQklEX1RBR1MiaW4gWm4/Qyh7fSxabi5GT1JCSURfVEFHUyxxbCk6e30sZmk9IkZPUkJJRF9BVFRSImluIFpuP0Moe30sWm4uRk9SQklEX0FUVFIscWwpOnt9LCR1PSJVU0VfUFJPRklMRVMiaW4gWm4mJlpuLlVTRV9QUk9GSUxFUyxobz0hMSE9PVpuLkFMTE9XX0FSSUFf''@;'; put 'put ''QVRUUixicj0hMSE9PVpuLkFMTE9XX0RBVEFfQVRUUixMaT1abi5BTExPV19VTktOT1dOX1BST1RPQ09MU3x8ITEsbG89ITEhPT1abi5BTExPV19TRUxGX0NMT1NFX0lOX0FUVFIsVW49Wm4uU0FGRV9GT1JfVEVNUExBVEVTfHwhMSxYaT0hMSE9PVpuLlNBRkVfRk9SX1hNTCxRaT1abi5XSE9M''@;'; put 'put ''RV9ET0NVTUVOVHx8ITEsUnI9Wm4uUkVUVVJOX0RPTXx8ITEsWWk9Wm4uUkVUVVJOX0RPTV9GUkFHTUVOVHx8ITEsem89Wm4uUkVUVVJOX1RSVVNURURfVFlQRXx8ITEsdm89Wm4uRk9SQ0VfQk9EWXx8ITEsaXM9ITEhPT1abi5TQU5JVElaRV9ET00sdXM9Wm4uU0FOSVRJWkVfTkFNRURfUFJP''@;'; put 'put ''UFN8fCExLFB1PSExIT09Wm4uS0VFUF9DT05URU5ULEZ1PVpuLklOX1BMQUNFfHwhMSx4aT1abi5BTExPV0VEX1VSSV9SRUdFWFB8fHhpLF8xPVpuLk5BTUVTUEFDRXx8ZWQsaHI9Wm4uQ1VTVE9NX0VMRU1FTlRfSEFORExJTkd8fHt9LFpuLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZBZiha''@;'; put 'put ''bi5DVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2spJiYoaHIudGFnTmFtZUNoZWNrPVpuLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjayksWm4uQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJkFmKFpuLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0''@;'; put 'put ''ZU5hbWVDaGVjaykmJihoci5hdHRyaWJ1dGVOYW1lQ2hlY2s9Wm4uQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrKSxabi5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmImJvb2xlYW4iPT10eXBlb2YgWm4uQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYWxsb3dDdXN0''@;'; put 'put ''b21pemVkQnVpbHRJbkVsZW1lbnRzJiYoaHIuYWxsb3dDdXN0b21pemVkQnVpbHRJbkVsZW1lbnRzPVpuLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyksVW4mJihicj0hMSksWWkmJihScj0hMCksJHUmJihhbj1DKHt9LG0oU2UpKSx1aT1b''@;'; put 'put ''XSwhMD09PSR1Lmh0bWwmJihDKGFuLHApLEModWksTGUpKSwhMD09PSR1LnN2ZyYmKEMoYW4sdyksQyh1aSxIZSksQyh1aSxEZSkpLCEwPT09JHUuc3ZnRmlsdGVycyYmKEMoYW4sSyksQyh1aSxIZSksQyh1aSxEZSkpLCEwPT09JHUubWF0aE1sJiYoQyhhbixjZSksQyh1aSx4ZSksQyh1aSxE''@;'; put 'put ''ZSkpKSxabi5BRERfVEFHUyYmKGFuPT09dG4mJihhbj1rKGFuKSksQyhhbixabi5BRERfVEFHUyxxbCkpLFpuLkFERF9BVFRSJiYodWk9PT1BciYmKHVpPWsodWkpKSxDKHVpLFpuLkFERF9BVFRSLHFsKSksWm4uQUREX1VSSV9TQUZFX0FUVFImJkMoY28sWm4uQUREX1VSSV9TQUZFX0FUVFIs''@;'; put 'put ''cWwpLFpuLkZPUkJJRF9DT05URU5UUyYmKEdkPT09QnMmJihHZD1rKEdkKSksQyhHZCxabi5GT1JCSURfQ09OVEVOVFMscWwpKSxQdSYmKGFuWyIjdGV4dCJdPSEwKSxRaSYmQyhhbixbImh0bWwiLCJoZWFkIiwiYm9keSJdKSxhbi50YWJsZSYmKEMoYW4sWyJ0Ym9keSJdKSxkZWxldGUgZGku''@;'; put 'put ''dGJvZHkpLE4mJk4oWm4pLE1sPVpuKX0sYjE9Qyh7fSxbIm1pIiwibW8iLCJtbiIsIm1zIiwibXRleHQiXSksYWc9Qyh7fSxbImZvcmVpZ25vYmplY3QiLCJhbm5vdGF0aW9uLXhtbCJdKSxncD1DKHt9LFsidGl0bGUiLCJzdHlsZSIsImZvbnQiLCJhIiwic2NyaXB0Il0pLERmPUMoe30sdyk7''@;'; put 'put ''QyhEZixLKSxDKERmLHRlKTt2YXIgZDI9Qyh7fSxjZSk7QyhkMixoZSk7dmFyIGlvPWZ1bmN0aW9uKFpuKXtyZShqZS5yZW1vdmVkLHtlbGVtZW50OlpufSk7dHJ5e1puLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoWm4pfWNhdGNoe3RyeXtabi5vdXRlckhUTUw9SHR9Y2F0Y2h7Wm4ucmVtb3Zl''@;'; put 'put ''KCl9fX0sbXA9ZnVuY3Rpb24oWm4sdmkpe3RyeXtyZShqZS5yZW1vdmVkLHthdHRyaWJ1dGU6dmkuZ2V0QXR0cmlidXRlTm9kZShabiksZnJvbTp2aX0pfWNhdGNoe3JlKGplLnJlbW92ZWQse2F0dHJpYnV0ZTpudWxsLGZyb206dml9KX1pZih2aS5yZW1vdmVBdHRyaWJ1dGUoWm4pLCJpcyI9''@;'; put 'put ''PT1abiYmIXVpW1puXSlpZihScnx8WWkpdHJ5e2lvKHZpKX1jYXRjaHt9ZWxzZSB0cnl7dmkuc2V0QXR0cmlidXRlKFpuLCIiKX1jYXRjaHt9fSxJZj1mdW5jdGlvbihabil7dmFyIHZpLFJpO2lmKHZvKVpuPSI8cmVtb3ZlPjwvcmVtb3ZlPiIrWm47ZWxzZXt2YXIgeG89bGUoWm4sL15bXHJc''@;'; put 'put ''blx0IF0rLyk7Umk9eG8mJnhvWzBdfSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiPT09U2wmJl8xPT09ZWQmJihabj0nPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxoZWFkPjwvaGVhZD48Ym9keT4nK1puKyI8L2JvZHk+PC9odG1sPiIpO3ZhciBQbD1tdD9tdC5j''@;'; put 'put ''cmVhdGVIVE1MKFpuKTpabjtpZihfMT09PWVkKXRyeXt2aT0obmV3IG5uKS5wYXJzZUZyb21TdHJpbmcoUGwsU2wpfWNhdGNoe31pZighdml8fCF2aS5kb2N1bWVudEVsZW1lbnQpe3ZpPW50LmNyZWF0ZURvY3VtZW50KF8xLCJ0ZW1wbGF0ZSIsbnVsbCk7dHJ5e3ZpLmRvY3VtZW50RWxlbWVu''@;'; put 'put ''dC5pbm5lckhUTUw9dGE/SHQ6UGx9Y2F0Y2h7fX12YXIgJHI9dmkuYm9keXx8dmkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBabiYmUmkmJiRyLmluc2VydEJlZm9yZShzdC5jcmVhdGVUZXh0Tm9kZShSaSksJHIuY2hpbGROb2Rlc1swXXx8bnVsbCksXzE9PT1lZD9UdC5jYWxsKHZpLFFpPyJo''@;'; put 'put ''dG1sIjoiYm9keSIpWzBdOlFpP3ZpLmRvY3VtZW50RWxlbWVudDokcn0sbGc9ZnVuY3Rpb24oWm4pe3JldHVybiBFdC5jYWxsKFpuLm93bmVyRG9jdW1lbnR8fFpuLFpuLGJuLlNIT1dfRUxFTUVOVHxibi5TSE9XX0NPTU1FTlR8Ym4uU0hPV19URVhUfGJuLlNIT1dfUFJPQ0VTU0lOR19JTlNU''@;'; put 'put ''UlVDVElPTnxibi5TSE9XX0NEQVRBX1NFQ1RJT04sbnVsbCwhMSl9LFJmPWZ1bmN0aW9uKFpuKXtyZXR1cm4gWm4gaW5zdGFuY2VvZiBObiYmKCJzdHJpbmciIT10eXBlb2YgWm4ubm9kZU5hbWV8fCJzdHJpbmciIT10eXBlb2YgWm4udGV4dENvbnRlbnR8fCJmdW5jdGlvbiIhPXR5cGVvZiBa''@;'; put 'put ''bi5yZW1vdmVDaGlsZHx8IShabi5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgeW4pfHwiZnVuY3Rpb24iIT10eXBlb2YgWm4ucmVtb3ZlQXR0cmlidXRlfHwiZnVuY3Rpb24iIT10eXBlb2YgWm4uc2V0QXR0cmlidXRlfHwic3RyaW5nIiE9dHlwZW9mIFpuLm5hbWVzcGFjZVVSSXx8ImZ1bmN0aW9u''@;'; put 'put ''IiE9dHlwZW9mIFpuLmluc2VydEJlZm9yZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFpuLmhhc0NoaWxkTm9kZXMpfSxMZj1mdW5jdGlvbihabil7cmV0dXJuIm9iamVjdCI9PT1NZShPdCk/Wm4gaW5zdGFuY2VvZiBPdDpabiYmIm9iamVjdCI9PT1NZShabikmJiJudW1iZXIiPT10eXBlb2YgWm4u''@;'; put 'put ''bm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgWm4ubm9kZU5hbWV9LGlyPWZ1bmN0aW9uKFpuLHZpLFJpKXt4bltabl0mJkooeG5bWm5dLGZ1bmN0aW9uKHhvKXt4by5jYWxsKGplLHZpLFJpLE1sKX0pfSxPZj1mdW5jdGlvbihabil7dmFyIHZpO2lmKGlyKCJiZWZvcmVTYW5pdGl6ZUVsZW1l''@;'; put 'put ''bnRzIixabixudWxsKSxSZihabil8fEEoL1tcdTAwODAtXHVGRkZGXS8sWm4ubm9kZU5hbWUpKXJldHVybiBpbyhabiksITA7dmFyIFJpPXFsKFpuLm5vZGVOYW1lKTtpZihpcigidXBvblNhbml0aXplRWxlbWVudCIsWm4se3RhZ05hbWU6UmksYWxsb3dlZFRhZ3M6YW59KSxabi5oYXNDaGls''@;'; put 'put ''ZE5vZGVzKCkmJiFMZihabi5maXJzdEVsZW1lbnRDaGlsZCkmJighTGYoWm4uY29udGVudCl8fCFMZihabi5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKSkmJkEoLzxbL1x3XS9nLFpuLmlubmVySFRNTCkmJkEoLzxbL1x3XS9nLFpuLnRleHRDb250ZW50KXx8InNlbGVjdCI9PT1SaSYmQSgv''@;'; put 'put ''PHRlbXBsYXRlL2ksWm4uaW5uZXJIVE1MKXx8Nz09PVpuLm5vZGVUeXBlfHxYaSYmOD09PVpuLm5vZGVUeXBlJiZBKC88Wy9cd10vZyxabi5kYXRhKSlyZXR1cm4gaW8oWm4pLCEwO2lmKCFhbltSaV18fGRpW1JpXSl7aWYoIWRpW1JpXSYmcXUoUmkpJiYoaHIudGFnTmFtZUNoZWNrIGluc3Rh''@;'; put 'put ''bmNlb2YgUmVnRXhwJiZBKGhyLnRhZ05hbWVDaGVjayxSaSl8fGhyLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZoci50YWdOYW1lQ2hlY2soUmkpKSlyZXR1cm4hMTtpZihQdSYmIUdkW1JpXSl7dmFyIHhvPXd0KFpuKXx8Wm4ucGFyZW50Tm9kZSxQbD1obihabil8fFpuLmNo''@;'; put 'put ''aWxkTm9kZXM7aWYoUGwmJnhvKWZvcih2YXIgeGw9UGwubGVuZ3RoLTE7eGw+PTA7LS14bCl7dmFyIFh1PWZ0KFBsW3hsXSwhMCk7WHUuX19yZW1vdmFsQ291bnQ9KFpuLl9fcmVtb3ZhbENvdW50fHwwKSsxLHhvLmluc2VydEJlZm9yZShYdSxkbihabikpfX1yZXR1cm4gaW8oWm4pLCEwfXJl''@;'; put 'put ''dHVybiBabiBpbnN0YW5jZW9mIEt0JiYhZnVuY3Rpb24oWm4pe3ZhciB2aT13dChabik7KCF2aXx8IXZpLnRhZ05hbWUpJiYodmk9e25hbWVzcGFjZVVSSTpfMSx0YWdOYW1lOiJ0ZW1wbGF0ZSJ9KTt2YXIgUmk9aWUoWm4udGFnTmFtZSkseG89aWUodmkudGFnTmFtZSk7cmV0dXJuISFraVta''@;'; put 'put ''bi5uYW1lc3BhY2VVUkldJiYoWm4ubmFtZXNwYWNlVVJJPT09S2Q/dmkubmFtZXNwYWNlVVJJPT09ZWQ/InN2ZyI9PT1SaTp2aS5uYW1lc3BhY2VVUkk9PT1fcj8ic3ZnIj09PVJpJiYoImFubm90YXRpb24teG1sIj09PXhvfHxiMVt4b10pOiEhRGZbUmldOlpuLm5hbWVzcGFjZVVSST09PV9y''@;'; put 'put ''P3ZpLm5hbWVzcGFjZVVSST09PWVkPyJtYXRoIj09PVJpOnZpLm5hbWVzcGFjZVVSST09PUtkPyJtYXRoIj09PVJpJiZhZ1t4b106ISFkMltSaV06Wm4ubmFtZXNwYWNlVVJJPT09ZWQ/ISh2aS5uYW1lc3BhY2VVUkk9PT1LZCYmIWFnW3hvXXx8dmkubmFtZXNwYWNlVVJJPT09X3ImJiFiMVt4''@;'; put 'put ''b10pJiYhZDJbUmldJiYoZ3BbUmldfHwhRGZbUmldKTohKCJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIT09U2x8fCFraVtabi5uYW1lc3BhY2VVUkldKSl9KFpuKXx8KCJub3NjcmlwdCI9PT1SaXx8Im5vZW1iZWQiPT09Uml8fCJub2ZyYW1lcyI9PT1SaSkmJkEoLzxcL25vKHNjcmlwdHxlbWJl''@;'; put 'put ''ZHxmcmFtZXMpL2ksWm4uaW5uZXJIVE1MKT8oaW8oWm4pLCEwKTooVW4mJjM9PT1abi5ub2RlVHlwZSYmKHZpPWFlKHZpPVpuLnRleHRDb250ZW50LHp0LCIgIiksdmk9YWUodmksX24sIiAiKSx2aT1hZSh2aSxPbiwiICIpLFpuLnRleHRDb250ZW50IT09dmkmJihyZShqZS5yZW1vdmVkLHtl''@;'; put 'put ''bGVtZW50OlpuLmNsb25lTm9kZSgpfSksWm4udGV4dENvbnRlbnQ9dmkpKSxpcigiYWZ0ZXJTYW5pdGl6ZUVsZW1lbnRzIixabixudWxsKSwhMSl9LHNpPWZ1bmN0aW9uKFpuLHZpLFJpKXtpZihpcyYmKCJpZCI9PT12aXx8Im5hbWUiPT09dmkpJiYoUmkgaW4gc3R8fFJpIGluIGU5KSlyZXR1''@;'; put 'put ''cm4hMTtpZigoIWJyfHxmaVt2aV18fCFBKHJuLHZpKSkmJighaG98fCFBKFBuLHZpKSkpaWYoIXVpW3ZpXXx8ZmlbdmldKXtpZighKHF1KFpuKSYmKGhyLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQShoci50YWdOYW1lQ2hlY2ssWm4pfHxoci50YWdOYW1lQ2hlY2sgaW5zdGFu''@;'; put 'put ''Y2VvZiBGdW5jdGlvbiYmaHIudGFnTmFtZUNoZWNrKFpuKSkmJihoci5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJkEoaHIuYXR0cmlidXRlTmFtZUNoZWNrLHZpKXx8aHIuYXR0cmlidXRlTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJmhyLmF0dHJpYnV0ZU5h''@;'; put 'put ''bWVDaGVjayh2aSkpfHwiaXMiPT09dmkmJmhyLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyYmKGhyLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmQShoci50YWdOYW1lQ2hlY2ssUmkpfHxoci50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmaHIudGFnTmFt''@;'; put 'put ''ZUNoZWNrKFJpKSkpKXJldHVybiExfWVsc2UgaWYoIWNvW3ZpXSYmIUEoeGksYWUoUmksWHQsIiIpKSYmKCJzcmMiIT09dmkmJiJ4bGluazpocmVmIiE9PXZpJiYiaHJlZiIhPT12aXx8InNjcmlwdCI9PT1abnx8MCE9PVcoUmksImRhdGE6Iil8fCEkZFtabl0pJiYoIUxpfHxBKENuLGFlKFJp''@;'; put 'put ''LFh0LCIiKSkpJiZSaSlyZXR1cm4hMTtyZXR1cm4hMH0scXU9ZnVuY3Rpb24oWm4pe3JldHVybiJhbm5vdGF0aW9uLXhtbCIhPT1abiYmbGUoWm4sSm4pfSxLdT1mdW5jdGlvbihabil7dmFyIHZpLFJpLHhvLFBsO2lyKCJiZWZvcmVTYW5pdGl6ZUF0dHJpYnV0ZXMiLFpuLG51bGwpO3ZhciAk''@;'; put 'put ''cj1abi5hdHRyaWJ1dGVzO2lmKCRyKXt2YXIgeGw9e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczp1aX07Zm9yKFBsPSRyLmxlbmd0aDtQbC0tOyl7dmFyIGdzPSh2aT0kcltQbF0pLm5hbWUscGw9dmkubmFtZXNwYWNlVVJJO2lmKFJpPSJ2''@;'; put 'put ''YWx1ZSI9PT1ncz92aS52YWx1ZTpiKHZpLnZhbHVlKSx4bz1xbChncykseGwuYXR0ck5hbWU9eG8seGwuYXR0clZhbHVlPVJpLHhsLmtlZXBBdHRyPSEwLHhsLmZvcmNlS2VlcEF0dHI9dm9pZCAwLGlyKCJ1cG9uU2FuaXRpemVBdHRyaWJ1dGUiLFpuLHhsKSxSaT14bC5hdHRyVmFsdWUsIXhs''@;'; put 'put ''LmZvcmNlS2VlcEF0dHImJihtcChncyxabikseGwua2VlcEF0dHIpKXtpZighbG8mJkEoL1wvPi9pLFJpKSl7bXAoZ3MsWm4pO2NvbnRpbnVlfWlmKFhpJiZBKC8oKC0tIT98XSk+KXw8XC8oc3R5bGV8dGl0bGUpL2ksUmkpKXttcChncyxabik7Y29udGludWV9VW4mJihSaT1hZShSaSx6dCwi''@;'; put 'put ''ICIpLFJpPWFlKFJpLF9uLCIgIiksUmk9YWUoUmksT24sIiAiKSk7dmFyIHhyPXFsKFpuLm5vZGVOYW1lKTtpZihzaSh4cix4byxSaSkpe2lmKHVzJiYoImlkIj09PXhvfHwibmFtZSI9PT14bykmJihtcChncyxabiksUmk9InVzZXItY29udGVudC0iK1JpKSxtdCYmIm9iamVjdCI9PT1NZShH''@;'; put 'put ''bikmJiJmdW5jdGlvbiI9PXR5cGVvZiBHbi5nZXRBdHRyaWJ1dGVUeXBlJiYhcGwpc3dpdGNoKEduLmdldEF0dHJpYnV0ZVR5cGUoeHIseG8pKXtjYXNlIlRydXN0ZWRIVE1MIjpSaT1tdC5jcmVhdGVIVE1MKFJpKTticmVhaztjYXNlIlRydXN0ZWRTY3JpcHRVUkwiOlJpPW10LmNyZWF0ZVNj''@;'; put 'put ''cmlwdFVSTChSaSl9dHJ5e3BsP1puLnNldEF0dHJpYnV0ZU5TKHBsLGdzLFJpKTpabi5zZXRBdHRyaWJ1dGUoZ3MsUmkpLFJmKFpuKT9pbyhabik6ZWUoamUucmVtb3ZlZCl9Y2F0Y2h7fX19fWlyKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsWm4sbnVsbCl9fSxjZz1mdW5jdGlvbiBqaSha''@;'; put 'put ''bil7dmFyIHZpLFJpPWxnKFpuKTtmb3IoaXIoImJlZm9yZVNhbml0aXplU2hhZG93RE9NIixabixudWxsKTt2aT1SaS5uZXh0Tm9kZSgpOylpcigidXBvblNhbml0aXplU2hhZG93Tm9kZSIsdmksbnVsbCksIU9mKHZpKSYmKHZpLmNvbnRlbnQgaW5zdGFuY2VvZiB4dCYmamkodmkuY29udGVu''@;'; put 'put ''dCksS3UodmkpKTtpcigiYWZ0ZXJTYW5pdGl6ZVNoYWRvd0RPTSIsWm4sbnVsbCl9O3JldHVybiBqZS5zYW5pdGl6ZT1mdW5jdGlvbihqaSl7dmFyIHZpLFJpLHhvLFBsLCRyLFpuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZigo''@;'; put 'put ''dGE9IWppKSYmKGppPSJceDNjIS0tXHgzZSIpLCJzdHJpbmciIT10eXBlb2YgamkmJiFMZihqaSkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBqaS50b1N0cmluZyl0aHJvdyBGKCJ0b1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpO2lmKCJzdHJpbmciIT10eXBlb2Yoamk9amkudG9TdHJpbmco''@;'; put 'put ''KSkpdGhyb3cgRigiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFqZS5pc1N1cHBvcnRlZCl7aWYoIm9iamVjdCI9PT1NZShBZS50b1N0YXRpY0hUTUwpfHwiZnVuY3Rpb24iPT10eXBlb2YgQWUudG9TdGF0aWNIVE1MKXtpZigic3RyaW5nIj09dHlwZW9mIGppKXJldHVy''@;'; put 'put ''biBBZS50b1N0YXRpY0hUTUwoamkpO2lmKExmKGppKSlyZXR1cm4gQWUudG9TdGF0aWNIVE1MKGppLm91dGVySFRNTCl9cmV0dXJuIGppfWlmKGZvfHxzZyhabiksamUucmVtb3ZlZD1bXSwic3RyaW5nIj09dHlwZW9mIGppJiYoRnU9ITEpLEZ1KXtpZihqaS5ub2RlTmFtZSl7dmFyIHhsPXFs''@;'; put 'put ''KGppLm5vZGVOYW1lKTtpZighYW5beGxdfHxkaVt4bF0pdGhyb3cgRigicm9vdCBub2RlIGlzIGZvcmJpZGRlbiBhbmQgY2Fubm90IGJlIHNhbml0aXplZCBpbi1wbGFjZSIpfX1lbHNlIGlmKGppIGluc3RhbmNlb2YgT3QpMT09PShSaT0odmk9SWYoIlx4M2MhLS0tLVx4M2UiKSkub3duZXJE''@;'; put 'put ''b2N1bWVudC5pbXBvcnROb2RlKGppLCEwKSkubm9kZVR5cGUmJiJCT0RZIj09PVJpLm5vZGVOYW1lfHwiSFRNTCI9PT1SaS5ub2RlTmFtZT92aT1SaTp2aS5hcHBlbmRDaGlsZChSaSk7ZWxzZXtpZighUnImJiFVbiYmIVFpJiYtMT09PWppLmluZGV4T2YoIjwiKSlyZXR1cm4gbXQmJnpvP210''@;'; put 'put ''LmNyZWF0ZUhUTUwoamkpOmppO2lmKCEodmk9SWYoamkpKSlyZXR1cm4gUnI/bnVsbDp6bz9IdDoiIn12aSYmdm8mJmlvKHZpLmZpcnN0Q2hpbGQpO2Zvcih2YXIgWHU9bGcoRnU/amk6dmkpO3hvPVh1Lm5leHROb2RlKCk7KTM9PT14by5ub2RlVHlwZSYmeG89PT1QbHx8T2YoeG8pfHwoeG8u''@;'; put 'put ''Y29udGVudCBpbnN0YW5jZW9mIHh0JiZjZyh4by5jb250ZW50KSxLdSh4byksUGw9eG8pO2lmKFBsPW51bGwsRnUpcmV0dXJuIGppO2lmKFJyKXtpZihZaSlmb3IoJHI9ZW4uY2FsbCh2aS5vd25lckRvY3VtZW50KTt2aS5maXJzdENoaWxkOykkci5hcHBlbmRDaGlsZCh2aS5maXJzdENoaWxk''@;'; put 'put ''KTtlbHNlICRyPXZpO3JldHVybih1aS5zaGFkb3dyb290fHx1aS5zaGFkb3dyb290bW9kKSYmKCRyPXl0LmNhbGwoaXQsJHIsITApKSwkcn12YXIgZ3M9UWk/dmkub3V0ZXJIVE1MOnZpLmlubmVySFRNTDtyZXR1cm4gUWkmJmFuWyIhZG9jdHlwZSJdJiZ2aS5vd25lckRvY3VtZW50JiZ2aS5v''@;'; put 'put ''d25lckRvY3VtZW50LmRvY3R5cGUmJnZpLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lJiZBKEllLHZpLm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKSYmKGdzPSI8IURPQ1RZUEUgIit2aS5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSsiPlxuIitncyksVW4mJihncz1hZShncyx6dCwi''@;'; put 'put ''ICIpLGdzPWFlKGdzLF9uLCIgIiksZ3M9YWUoZ3MsT24sIiAiKSksbXQmJnpvP210LmNyZWF0ZUhUTUwoZ3MpOmdzfSxqZS5zZXRDb25maWc9ZnVuY3Rpb24oamkpe3NnKGppKSxmbz0hMH0samUuY2xlYXJDb25maWc9ZnVuY3Rpb24oKXtNbD1udWxsLGZvPSExfSxqZS5pc1ZhbGlkQXR0cmli''@;'; put 'put ''dXRlPWZ1bmN0aW9uKGppLFpuLHZpKXtNbHx8c2coe30pO3ZhciBSaT1xbChqaSkseG89cWwoWm4pO3JldHVybiBzaShSaSx4byx2aSl9LGplLmFkZEhvb2s9ZnVuY3Rpb24oamksWm4peyJmdW5jdGlvbiI9PXR5cGVvZiBabiYmKHhuW2ppXT14bltqaV18fFtdLHJlKHhuW2ppXSxabikpfSxq''@;'; put 'put ''ZS5yZW1vdmVIb29rPWZ1bmN0aW9uKGppKXtpZih4bltqaV0pcmV0dXJuIGVlKHhuW2ppXSl9LGplLnJlbW92ZUhvb2tzPWZ1bmN0aW9uKGppKXt4bltqaV0mJih4bltqaV09W10pfSxqZS5yZW1vdmVBbGxIb29rcz1mdW5jdGlvbigpe3huPXt9fSxqZX0oKX0oKX0sOTA1MTg6KFFlLE1lLFIp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBvZT1NZTtvZS52ZXJzaW9uPVIoMTYzNikuckUsb2UudXRpbHM9UigzMTM2KSxvZS5yYW5kPVIoMzUyOTQpLG9lLmN1cnZlPVIoODcyOSksb2UuY3VydmVzPVIoMjM0MDEpLG9lLmVjPVIoMjkwNDIpLG9lLmVkZHNhPVIoODMwNDUpfSw5ODgyODooUWUsTWUs''@;'; put 'put ''Uik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoODg3MjMpLHg9UigzMTM2KSxtPXguZ2V0TkFGLHNlPXguZ2V0SlNGLE09eC5hc3NlcnQ7ZnVuY3Rpb24gTyhqLEcpe3RoaXMudHlwZT1qLHRoaXMucD1uZXcgb2UoRy5wLDE2KSx0aGlzLnJlZD1HLnByaW1lP29lLnJlZChHLnByaW1lKTpvZS5t''@;'; put 'put ''b250KHRoaXMucCksdGhpcy56ZXJvPW5ldyBvZSgwKS50b1JlZCh0aGlzLnJlZCksdGhpcy5vbmU9bmV3IG9lKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgb2UoMikudG9SZWQodGhpcy5yZWQpLHRoaXMubj1HLm4mJm5ldyBvZShHLm4sMTYpLHRoaXMuZz1HLmcmJnRoaXMucG9p''@;'; put 'put ''bnRGcm9tSlNPTihHLmcsRy5nUmVkKSx0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpLHRoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0''@;'; put 'put ''aCgpOjA7dmFyIEQ9dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7IUR8fEQuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gSShqLEcpe3RoaXMuY3VydmU9aix0aGlzLnR5''@;'; put 'put ''cGU9Ryx0aGlzLnByZWNvbXB1dGVkPW51bGx9UWUuZXhwb3J0cz1PLE8ucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sTy5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1l''@;'; put 'put ''bnRlZCIpfSxPLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oRyxEKXtNKEcucHJlY29tcHV0ZWQpO3ZhciBUPUcuX2dldERvdWJsZXMoKSxFPW0oRCwxLHRoaXMuX2JpdExlbmd0aCksej0oMTw8VC5zdGVwKzEpLShULnN0ZXAlMj09MD8yOjEpO3ovPTM7dmFyIEIsWixOPVtdO2Zv''@;'; put 'put ''cihCPTA7QjxFLmxlbmd0aDtCKz1ULnN0ZXApe1o9MDtmb3IodmFyIFk9QitULnN0ZXAtMTtZPj1CO1ktLSlaPShaPDwxKStFW1ldO04ucHVzaChaKX1mb3IodmFyIFU9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLHE9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLEo9ejtKPjA7Si0t''@;'; put 'put ''KXtmb3IoQj0wO0I8Ti5sZW5ndGg7QisrKShaPU5bQl0pPT09Sj9xPXEubWl4ZWRBZGQoVC5wb2ludHNbQl0pOlo9PT0tSiYmKHE9cS5taXhlZEFkZChULnBvaW50c1tCXS5uZWcoKSkpO1U9VS5hZGQocSl9cmV0dXJuIFUudG9QKCl9LE8ucHJvdG90eXBlLl93bmFmTXVsPWZ1bmN0aW9uKEcs''@;'; put 'put ''RCl7Zm9yKHZhciBUPTQsRT1HLl9nZXROQUZQb2ludHMoVCksej1FLnBvaW50cyxOPW0oRCxUPUUud25kLHRoaXMuX2JpdExlbmd0aCksQj10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksWj1OLmxlbmd0aC0xO1o+PTA7Wi0tKXtmb3IodmFyIFk9MDtaPj0wJiYwPT09TltaXTtaLS0pWSsr''@;'; put 'put ''O2lmKFo+PTAmJlkrKyxCPUIuZGJscChZKSxaPDApYnJlYWs7dmFyIFU9TltaXTtNKDAhPT1VKSxCPSJhZmZpbmUiPT09Ry50eXBlP0IubWl4ZWRBZGQoVT4wP3pbVS0xPj4xXTp6Wy1VLTE+PjFdLm5lZygpKTpCLmFkZChVPjA/eltVLTE+PjFdOnpbLVUtMT4+MV0ubmVnKCkpfXJldHVybiJh''@;'; put 'put ''ZmZpbmUiPT09Ry50eXBlP0IudG9QKCk6Qn0sTy5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24oRyxELFQsRSx6KXt2YXIgVSxxLEosTj10aGlzLl93bmFmVDEsQj10aGlzLl93bmFmVDIsWj10aGlzLl93bmFmVDMsWT0wO2ZvcihVPTA7VTxFO1UrKyl7dmFyIGVlPShKPURbVV0pLl9n''@;'; put 'put ''ZXROQUZQb2ludHMoRyk7TltVXT1lZS53bmQsQltVXT1lZS5wb2ludHN9Zm9yKFU9RS0xO1U+PTE7VS09Mil7dmFyIHJlPVUtMSxpZT1VO2lmKDE9PT1OW3JlXSYmMT09PU5baWVdKXt2YXIgdWU9W0RbcmVdLG51bGwsbnVsbCxEW2llXV07MD09PURbcmVdLnkuY21wKERbaWVdLnkpPyh1ZVsx''@;'; put 'put ''XT1EW3JlXS5hZGQoRFtpZV0pLHVlWzJdPURbcmVdLnRvSigpLm1peGVkQWRkKERbaWVdLm5lZygpKSk6MD09PURbcmVdLnkuY21wKERbaWVdLnkucmVkTmVnKCkpPyh1ZVsxXT1EW3JlXS50b0ooKS5taXhlZEFkZChEW2llXSksdWVbMl09RFtyZV0uYWRkKERbaWVdLm5lZygpKSk6KHVlWzFd''@;'; put 'put ''PURbcmVdLnRvSigpLm1peGVkQWRkKERbaWVdKSx1ZVsyXT1EW3JlXS50b0ooKS5taXhlZEFkZChEW2llXS5uZWcoKSkpO3ZhciBsZT1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXSxhZT1zZShUW3JlXSxUW2llXSk7Zm9yKFk9TWF0aC5tYXgoYWVbMF0ubGVuZ3RoLFkpLFpbcmVdPW5ldyBBcnJh''@;'; put 'put ''eShZKSxaW2llXT1uZXcgQXJyYXkoWSkscT0wO3E8WTtxKyspWltyZV1bcV09bGVbMyooMSsoMHxhZVswXVtxXSkpKygxKygwfGFlWzFdW3FdKSldLFpbaWVdW3FdPTAsQltyZV09dWV9ZWxzZSBaW3JlXT1tKFRbcmVdLE5bcmVdLHRoaXMuX2JpdExlbmd0aCksWltpZV09bShUW2llXSxOW2ll''@;'; put 'put ''XSx0aGlzLl9iaXRMZW5ndGgpLFk9TWF0aC5tYXgoWltyZV0ubGVuZ3RoLFkpLFk9TWF0aC5tYXgoWltpZV0ubGVuZ3RoLFkpfXZhciBBPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxGPXRoaXMuX3duYWZUNDtmb3IoVT1ZO1U+PTA7VS0tKXtmb3IodmFyIEg9MDtVPj0wOyl7dmFyIGc9''@;'; put 'put ''ITA7Zm9yKHE9MDtxPEU7cSsrKUZbcV09MHxaW3FdW1VdLDAhPT1GW3FdJiYoZz0hMSk7aWYoIWcpYnJlYWs7SCsrLFUtLX1pZihVPj0wJiZIKyssQT1BLmRibHAoSCksVTwwKWJyZWFrO2ZvcihxPTA7cTxFO3ErKyl7dmFyIEM9RltxXTswIT09QyYmKEM+MD9KPUJbcV1bQy0xPj4xXTpDPDAm''@;'; put 'put ''JihKPUJbcV1bLUMtMT4+MV0ubmVnKCkpLEE9ImFmZmluZSI9PT1KLnR5cGU/QS5taXhlZEFkZChKKTpBLmFkZChKKSl9fWZvcihVPTA7VTxFO1UrKylCW1VdPW51bGw7cmV0dXJuIHo/QTpBLnRvUCgpfSxPLkJhc2VQb2ludD1JLEkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3''@;'; put 'put ''IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sSS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0sTy5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oRyxEKXtHPXgudG9BcnJheShHLEQpO3ZhciBUPXRoaXMucC5ieXRl''@;'; put 'put ''TGVuZ3RoKCk7aWYoKDQ9PT1HWzBdfHw2PT09R1swXXx8Nz09PUdbMF0pJiZHLmxlbmd0aC0xPT0yKlQpcmV0dXJuIDY9PT1HWzBdP00oR1tHLmxlbmd0aC0xXSUyPT0wKTo3PT09R1swXSYmTShHW0cubGVuZ3RoLTFdJTI9PTEpLHRoaXMucG9pbnQoRy5zbGljZSgxLDErVCksRy5zbGljZSgx''@;'; put 'put ''K1QsMSsyKlQpKTtpZigoMj09PUdbMF18fDM9PT1HWzBdKSYmRy5sZW5ndGgtMT09PVQpcmV0dXJuIHRoaXMucG9pbnRGcm9tWChHLnNsaWNlKDEsMStUKSwzPT09R1swXSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxJLnByb3RvdHlwZS5lbmNvZGVDb21wcmVz''@;'; put 'put ''c2VkPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmVuY29kZShHLCEwKX0sSS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihHKXt2YXIgRD10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLFQ9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLEQpO3JldHVybiBHP1t0aGlzLmdldFkoKS5pc0V2ZW4o''@;'; put 'put ''KT8yOjNdLmNvbmNhdChUKTpbNF0uY29uY2F0KFQsdGhpcy5nZXRZKCkudG9BcnJheSgiYmUiLEQpKX0sSS5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKEcsRCl7cmV0dXJuIHguZW5jb2RlKHRoaXMuX2VuY29kZShEKSxHKX0sSS5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihHKXtp''@;'; put 'put ''Zih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciBEPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gRC5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLEQuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsRyksRC5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlz''@;'; put 'put ''LnByZWNvbXB1dGVkPUQsdGhpc30sSS5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24oRyl7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuITE7dmFyIEQ9dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhRCYmRC5wb2ludHMubGVuZ3RoPj1NYXRoLmNlaWwoKEcuYml0TGVu''@;'; put 'put ''Z3RoKCkrMSkvRC5zdGVwKX0sSS5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24oRyxEKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIFQ9W3RoaXNdLEU9dGhpcyx6PTA7ejxE''@;'; put 'put ''O3orPUcpe2Zvcih2YXIgTj0wO048RztOKyspRT1FLmRibCgpO1QucHVzaChFKX1yZXR1cm57c3RlcDpHLHBvaW50czpUfX0sSS5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihHKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5w''@;'; put 'put ''cmVjb21wdXRlZC5uYWY7Zm9yKHZhciBEPVt0aGlzXSxUPSgxPDxHKS0xLEU9MT09PVQ/bnVsbDp0aGlzLmRibCgpLHo9MTt6PFQ7eisrKURbel09RFt6LTFdLmFkZChFKTtyZXR1cm57d25kOkcscG9pbnRzOkR9fSxJLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe3JldHVybiBudWxs''@;'; put 'put ''fSxJLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKEcpe2Zvcih2YXIgRD10aGlzLFQ9MDtUPEc7VCsrKUQ9RC5kYmwoKTtyZXR1cm4gRH19LDU1NTM3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzMTM2KSx4PVIoODg3MjMpLG09Uig3MTk5Myksc2U9Uig5ODgyOCksTT1vZS5h''@;'; put 'put ''c3NlcnQ7ZnVuY3Rpb24gTyhqKXt0aGlzLnR3aXN0ZWQ9MSE9KDB8ai5hKSx0aGlzLm1PbmVBPXRoaXMudHdpc3RlZCYmLTE9PSgwfGouYSksdGhpcy5leHRlbmRlZD10aGlzLm1PbmVBLHNlLmNhbGwodGhpcywiZWR3YXJkcyIsaiksdGhpcy5hPW5ldyB4KGouYSwxNikudW1vZCh0aGlzLnJl''@;'; put 'put ''ZC5tKSx0aGlzLmE9dGhpcy5hLnRvUmVkKHRoaXMucmVkKSx0aGlzLmM9bmV3IHgoai5jLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyB4KGouZCwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuZGQ9dGhpcy5kLnJlZEFkZCh0aGlzLmQpLE0o''@;'; put 'put ''IXRoaXMudHdpc3RlZHx8MD09PXRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSksdGhpcy5vbmVDPTE9PSgwfGouYyl9ZnVuY3Rpb24gSShqLEcsRCxULEUpe3NlLkJhc2VQb2ludC5jYWxsKHRoaXMsaiwicHJvamVjdGl2ZSIpLG51bGw9PT1HJiZudWxsPT09RCYmbnVsbD09PVQ/KHRoaXMueD10''@;'; put 'put ''aGlzLmN1cnZlLnplcm8sdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMuek9uZT0hMCk6KHRoaXMueD1uZXcgeChHLDE2KSx0aGlzLnk9bmV3IHgoRCwxNiksdGhpcy56PVQ/bmV3IHgoVCwxNik6dGhpcy5jdXJ2''@;'; put 'put ''ZS5vbmUsdGhpcy50PUUmJm5ldyB4KEUsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlz''@;'; put 'put ''LmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkp''@;'; put 'put ''LHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpKSkpfW0oTyxzZSksUWUuZXhwb3J0cz1PLE8ucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLm1PbmVBP0cucmVkTmVnKCk6dGhpcy5hLnJlZE11bChHKX0sTy5wcm90b3R5cGUu''@;'; put 'put ''X211bEM9ZnVuY3Rpb24oRyl7cmV0dXJuIHRoaXMub25lQz9HOnRoaXMuYy5yZWRNdWwoRyl9LE8ucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihHLEQsVCxFKXtyZXR1cm4gdGhpcy5wb2ludChHLEQsVCxFKX0sTy5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbihHLEQpeyhHPW5ldyB4''@;'; put 'put ''KEcsMTYpKS5yZWR8fChHPUcudG9SZWQodGhpcy5yZWQpKTt2YXIgVD1HLnJlZFNxcigpLEU9dGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bChUKSksej10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoVCkpLE49RS5yZWRNdWwoei5yZWRJbnZtKCkpLEI9''@;'; put 'put ''Ti5yZWRTcXJ0KCk7aWYoMCE9PUIucmVkU3FyKCkucmVkU3ViKE4pLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBaPUIuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKEQmJiFafHwhRCYmWikmJihCPUIucmVkTmVnKCkpLHRoaXMucG9pbnQoRyxC''@;'; put 'put ''KX0sTy5wcm90b3R5cGUucG9pbnRGcm9tWT1mdW5jdGlvbihHLEQpeyhHPW5ldyB4KEcsMTYpKS5yZWR8fChHPUcudG9SZWQodGhpcy5yZWQpKTt2YXIgVD1HLnJlZFNxcigpLEU9VC5yZWRTdWIodGhpcy5jMiksej1ULnJlZE11bCh0aGlzLmQpLnJlZE11bCh0aGlzLmMyKS5yZWRTdWIodGhp''@;'; put 'put ''cy5hKSxOPUUucmVkTXVsKHoucmVkSW52bSgpKTtpZigwPT09Ti5jbXAodGhpcy56ZXJvKSl7aWYoRCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTtyZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sRyl9dmFyIEI9Ti5yZWRTcXJ0KCk7aWYoMCE9PUIucmVkU3FyKCkucmVkU3Vi''@;'; put 'put ''KE4pLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiBCLmZyb21SZWQoKS5pc09kZCgpIT09RCYmKEI9Qi5yZWROZWcoKSksdGhpcy5wb2ludChCLEcpfSxPLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihHKXtpZihHLmlzSW5maW5pdHko''@;'; put 'put ''KSlyZXR1cm4hMDtHLm5vcm1hbGl6ZSgpO3ZhciBEPUcueC5yZWRTcXIoKSxUPUcueS5yZWRTcXIoKSxFPUQucmVkTXVsKHRoaXMuYSkucmVkQWRkKFQpLHo9dGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoRCkucmVkTXVsKFQpKSk7cmV0dXJuIDA9PT1FLmNt''@;'; put 'put ''cCh6KX0sbShJLHNlLkJhc2VQb2ludCksTy5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbihHKXtyZXR1cm4gSS5mcm9tSlNPTih0aGlzLEcpfSxPLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihHLEQsVCxFKXtyZXR1cm4gbmV3IEkodGhpcyxHLEQsVCxFKX0sSS5mcm9tSlNPTj1m''@;'; put 'put ''dW5jdGlvbihHLEQpe3JldHVybiBuZXcgSShHLERbMF0sRFsxXSxEWzJdKX0sSS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmco''@;'; put 'put ''MTYsMikrIiB5OiAiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxJLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnguY21wbigwKSYmKDA9PT10aGlzLnkuY21w''@;'; put 'put ''KHRoaXMueil8fHRoaXMuek9uZSYmMD09PXRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSl9LEkucHJvdG90eXBlLl9leHREYmw9ZnVuY3Rpb24oKXt2YXIgRz10aGlzLngucmVkU3FyKCksRD10aGlzLnkucmVkU3FyKCksVD10aGlzLnoucmVkU3FyKCk7VD1ULnJlZElBZGQoVCk7dmFyIEU9dGhp''@;'; put 'put ''cy5jdXJ2ZS5fbXVsQShHKSx6PXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKEcpLnJlZElTdWIoRCksTj1FLnJlZEFkZChEKSxCPU4ucmVkU3ViKFQpLFo9RS5yZWRTdWIoRCksWT16LnJlZE11bChCKSxVPU4ucmVkTXVsKFopLHE9ei5yZWRNdWwoWiksSj1CLnJlZE11''@;'; put 'put ''bChOKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChZLFUsSixxKX0sSS5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgRSx6LE4sQixaLFksRz10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCksRD10aGlzLngucmVkU3FyKCksVD10aGlzLnkucmVkU3FyKCk7aWYodGhpcy5j''@;'; put 'put ''dXJ2ZS50d2lzdGVkKXt2YXIgVT0oQj10aGlzLmN1cnZlLl9tdWxBKEQpKS5yZWRBZGQoVCk7dGhpcy56T25lPyhFPUcucmVkU3ViKEQpLnJlZFN1YihUKS5yZWRNdWwoVS5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKSx6PVUucmVkTXVsKEIucmVkU3ViKFQpKSxOPVUucmVkU3FyKCkucmVkU3Vi''@;'; put 'put ''KFUpLnJlZFN1YihVKSk6KFo9dGhpcy56LnJlZFNxcigpLFk9VS5yZWRTdWIoWikucmVkSVN1YihaKSxFPUcucmVkU3ViKEQpLnJlZElTdWIoVCkucmVkTXVsKFkpLHo9VS5yZWRNdWwoQi5yZWRTdWIoVCkpLE49VS5yZWRNdWwoWSkpfWVsc2UgQj1ELnJlZEFkZChUKSxaPXRoaXMuY3VydmUu''@;'; put 'put ''X211bEModGhpcy56KS5yZWRTcXIoKSxZPUIucmVkU3ViKFopLnJlZFN1YihaKSxFPXRoaXMuY3VydmUuX211bEMoRy5yZWRJU3ViKEIpKS5yZWRNdWwoWSksej10aGlzLmN1cnZlLl9tdWxDKEIpLnJlZE11bChELnJlZElTdWIoVCkpLE49Qi5yZWRNdWwoWSk7cmV0dXJuIHRoaXMuY3VydmUu''@;'; put 'put ''cG9pbnQoRSx6LE4pfSxJLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLmV4dGVuZGVkP3RoaXMuX2V4dERibCgpOnRoaXMuX3Byb2pEYmwoKX0sSS5wcm90b3R5cGUuX2V4dEFkZD1mdW5jdGlvbihHKXt2YXIgRD10aGlz''@;'; put 'put ''LnkucmVkU3ViKHRoaXMueCkucmVkTXVsKEcueS5yZWRTdWIoRy54KSksVD10aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKEcueS5yZWRBZGQoRy54KSksRT10aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChHLnQpLHo9dGhpcy56LnJlZE11bChHLnoucmVkQWRkKEcueikp''@;'; put 'put ''LE49VC5yZWRTdWIoRCksQj16LnJlZFN1YihFKSxaPXoucmVkQWRkKEUpLFk9VC5yZWRBZGQoRCksVT1OLnJlZE11bChCKSxxPVoucmVkTXVsKFkpLEo9Ti5yZWRNdWwoWSksZWU9Qi5yZWRNdWwoWik7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoVSxxLGVlLEopfSxJLnByb3RvdHlwZS5fcHJv''@;'; put 'put ''akFkZD1mdW5jdGlvbihHKXt2YXIgcSxKLEQ9dGhpcy56LnJlZE11bChHLnopLFQ9RC5yZWRTcXIoKSxFPXRoaXMueC5yZWRNdWwoRy54KSx6PXRoaXMueS5yZWRNdWwoRy55KSxOPXRoaXMuY3VydmUuZC5yZWRNdWwoRSkucmVkTXVsKHopLEI9VC5yZWRTdWIoTiksWj1ULnJlZEFkZChOKSxZ''@;'; put 'put ''PXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwoRy54LnJlZEFkZChHLnkpKS5yZWRJU3ViKEUpLnJlZElTdWIoeiksVT1ELnJlZE11bChCKS5yZWRNdWwoWSk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8ocT1ELnJlZE11bChaKS5yZWRNdWwoei5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVs''@;'; put 'put ''QShFKSkpLEo9Qi5yZWRNdWwoWikpOihxPUQucmVkTXVsKFopLnJlZE11bCh6LnJlZFN1YihFKSksSj10aGlzLmN1cnZlLl9tdWxDKEIpLnJlZE11bChaKSksdGhpcy5jdXJ2ZS5wb2ludChVLHEsSil9LEkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihHKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5''@;'; put 'put ''KCk/RzpHLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKEcpOnRoaXMuX3Byb2pBZGQoRyl9LEkucHJvdG90eXBlLm11bD1mdW5jdGlvbihHKXtyZXR1cm4gdGhpcy5faGFzRG91YmxlcyhHKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLEcp''@;'; put 'put ''OnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxHKX0sSS5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKEcsRCxUKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLERdLFtHLFRdLDIsITEpfSxJLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKEcsRCxUKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLERdLFtHLFRdLDIsITApfSxJLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIEc9dGhpcy56LnJlZEludm0oKTtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwoRyksdGhpcy55PXRo''@;'; put 'put ''aXMueS5yZWRNdWwoRyksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwoRykpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30sSS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0''@;'; put 'put ''aGlzLnosdGhpcy50JiZ0aGlzLnQucmVkTmVnKCkpfSxJLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0sSS5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9t''@;'; put 'put ''UmVkKCl9LEkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzPT09R3x8MD09PXRoaXMuZ2V0WCgpLmNtcChHLmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAoRy5nZXRZKCkpfSxJLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24oRyl7dmFyIEQ9Ry50b1JlZCh0aGlzLmN1''@;'; put 'put ''cnZlLnJlZCkucmVkTXVsKHRoaXMueik7aWYoMD09PXRoaXMueC5jbXAoRCkpcmV0dXJuITA7Zm9yKHZhciBUPUcuY2xvbmUoKSxFPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihULmlhZGQodGhpcy5jdXJ2ZS5uKSxULmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiEx''@;'; put 'put ''O2lmKEQucmVkSUFkZChFKSwwPT09dGhpcy54LmNtcChEKSlyZXR1cm4hMH19LEkucHJvdG90eXBlLnRvUD1JLnByb3RvdHlwZS5ub3JtYWxpemUsSS5wcm90b3R5cGUubWl4ZWRBZGQ9SS5wcm90b3R5cGUuYWRkfSw4NzI5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9TWU7b2Uu''@;'; put 'put ''YmFzZT1SKDk4ODI4KSxvZS5zaG9ydD1SKDY4MDc1KSxvZS5tb250PVIoNjQ5NDcpLG9lLmVkd2FyZHM9Uig1NTUzNyl9LDY0OTQ3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig4ODcyMykseD1SKDcxOTkzKSxtPVIoOTg4MjgpLHNlPVIoMzEzNik7ZnVuY3Rpb24gTShJKXtt''@;'; put 'put ''LmNhbGwodGhpcywibW9udCIsSSksdGhpcy5hPW5ldyBvZShJLmEsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IG9lKEkuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuaTQ9bmV3IG9lKDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCksdGhpcy50d289bmV3IG9lKDIpLnRvUmVk''@;'; put 'put ''KHRoaXMucmVkKSx0aGlzLmEyND10aGlzLmk0LnJlZE11bCh0aGlzLmEucmVkQWRkKHRoaXMudHdvKSl9ZnVuY3Rpb24gTyhJLGosRyl7bS5CYXNlUG9pbnQuY2FsbCh0aGlzLEksInByb2plY3RpdmUiKSxudWxsPT09aiYmbnVsbD09PUc/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLno9''@;'; put 'put ''dGhpcy5jdXJ2ZS56ZXJvKToodGhpcy54PW5ldyBvZShqLDE2KSx0aGlzLno9bmV3IG9lKEcsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSl9eChNLG0p''@;'; put 'put ''LFFlLmV4cG9ydHM9TSxNLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihqKXt2YXIgRz1qLm5vcm1hbGl6ZSgpLngsRD1HLnJlZFNxcigpLFQ9RC5yZWRNdWwoRykucmVkQWRkKEQucmVkTXVsKHRoaXMuYSkpLnJlZEFkZChHKTtyZXR1cm4gMD09PVQucmVkU3FydCgpLnJlZFNxcigpLmNt''@;'; put 'put ''cChUKX0seChPLG0uQmFzZVBvaW50KSxNLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihqLEcpe3JldHVybiB0aGlzLnBvaW50KHNlLnRvQXJyYXkoaixHKSwxKX0sTS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oaixHKXtyZXR1cm4gbmV3IE8odGhpcyxqLEcpfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKGope3JldHVybiBPLmZyb21KU09OKHRoaXMsail9LE8ucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24oKXt9LE8ucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLHRoaXMuY3VydmUu''@;'; put 'put ''cC5ieXRlTGVuZ3RoKCkpfSxPLmZyb21KU09OPWZ1bmN0aW9uKGosRyl7cmV0dXJuIG5ldyBPKGosR1swXSxHWzFdfHxqLm9uZSl9LE8ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQg''@;'; put 'put ''eDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sTy5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LE8ucHJvdG90eXBlLmRibD1mdW5jdGlv''@;'; put 'put ''bigpe3ZhciBHPXRoaXMueC5yZWRBZGQodGhpcy56KS5yZWRTcXIoKSxUPXRoaXMueC5yZWRTdWIodGhpcy56KS5yZWRTcXIoKSxFPUcucmVkU3ViKFQpLHo9Ry5yZWRNdWwoVCksTj1FLnJlZE11bChULnJlZEFkZCh0aGlzLmN1cnZlLmEyNC5yZWRNdWwoRSkpKTtyZXR1cm4gdGhpcy5jdXJ2''@;'; put 'put ''ZS5wb2ludCh6LE4pfSxPLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxPLnByb3RvdHlwZS5kaWZmQWRkPWZ1bmN0aW9uKGosRyl7dmFyIEQ9dGhpcy54LnJlZEFkZCh0aGlzLnopLFQ9dGhpcy54''@;'; put 'put ''LnJlZFN1Yih0aGlzLnopLEU9ai54LnJlZEFkZChqLnopLE49ai54LnJlZFN1YihqLnopLnJlZE11bChEKSxCPUUucmVkTXVsKFQpLFo9Ry56LnJlZE11bChOLnJlZEFkZChCKS5yZWRTcXIoKSksWT1HLngucmVkTXVsKE4ucmVkSVN1YihCKS5yZWRTcXIoKSk7cmV0dXJuIHRoaXMuY3VydmUu''@;'; put 'put ''cG9pbnQoWixZKX0sTy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGope2Zvcih2YXIgRz1qLmNsb25lKCksRD10aGlzLFQ9dGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpLHo9W107MCE9PUcuY21wbigwKTtHLml1c2hybigxKSl6LnB1c2goRy5hbmRsbigxKSk7Zm9yKHZhciBOPXoubGVuZ3Ro''@;'; put 'put ''LTE7Tj49MDtOLS0pMD09PXpbTl0/KEQ9RC5kaWZmQWRkKFQsdGhpcyksVD1ULmRibCgpKTooVD1ELmRpZmZBZGQoVCx0aGlzKSxEPUQuZGJsKCkpO3JldHVybiBUfSxPLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdv''@;'; put 'put ''bWVyeSBjdXJ2ZSIpfSxPLnByb3RvdHlwZS5qdW1sQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0sTy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oail7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAoai5nZXRYKCkpfSxP''@;'; put 'put ''LnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LE8ucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLngu''@;'; put 'put ''ZnJvbVJlZCgpfX0sNjgwNzU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDMxMzYpLHg9Uig4ODcyMyksbT1SKDcxOTkzKSxzZT1SKDk4ODI4KSxNPW9lLmFzc2VydDtmdW5jdGlvbiBPKEcpe3NlLmNhbGwodGhpcywic2hvcnQiLEcpLHRoaXMuYT1uZXcgeChHLmEsMTYpLnRv''@;'; put 'put ''UmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IHgoRy5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKSx0aGlzLnplcm9BPTA9PT10aGlzLmEuZnJvbVJlZCgpLmNtcG4oMCksdGhpcy50aHJlZUE9MD09PXRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCku''@;'; put 'put ''Y21wbigtMyksdGhpcy5lbmRvPXRoaXMuX2dldEVuZG9tb3JwaGlzbShHKSx0aGlzLl9lbmRvV25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl9lbmRvV25hZlQyPW5ldyBBcnJheSg0KX1mdW5jdGlvbiBJKEcsRCxULEUpe3NlLkJhc2VQb2ludC5jYWxsKHRoaXMsRywiYWZmaW5lIiksbnVsbD09''@;'; put 'put ''PUQmJm51bGw9PT1UPyh0aGlzLng9bnVsbCx0aGlzLnk9bnVsbCx0aGlzLmluZj0hMCk6KHRoaXMueD1uZXcgeChELDE2KSx0aGlzLnk9bmV3IHgoVCwxNiksRSYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy54''@;'; put 'put ''LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiBqKEcsRCxULEUpe3NlLkJhc2VQb2ludC5jYWxsKHRoaXMsRywiamFjb2JpYW4iKSxu''@;'; put 'put ''dWxsPT09RCYmbnVsbD09PVQmJm51bGw9PT1FPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgeCgwKSk6KHRoaXMueD1uZXcgeChELDE2KSx0aGlzLnk9bmV3IHgoVCwxNiksdGhpcy56PW5ldyB4KEUsMTYpKSx0aGlzLngucmVkfHwodGhp''@;'; put 'put ''cy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5v''@;'; put 'put ''bmV9bShPLHNlKSxRZS5leHBvcnRzPU8sTy5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbihEKXtpZih0aGlzLnplcm9BJiZ0aGlzLmcmJnRoaXMubiYmMT09PXRoaXMucC5tb2RuKDMpKXt2YXIgVCxFO2lmKEQuYmV0YSlUPW5ldyB4KEQuYmV0YSwxNikudG9SZWQodGhpcy5y''@;'; put 'put ''ZWQpO2Vsc2V7dmFyIHo9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7VD0oVD16WzBdLmNtcCh6WzFdKTwwP3pbMF06elsxXSkudG9SZWQodGhpcy5yZWQpfWlmKEQubGFtYmRhKUU9bmV3IHgoRC5sYW1iZGEsMTYpO2Vsc2V7dmFyIE49dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7MD09''@;'; put 'put ''PXRoaXMuZy5tdWwoTlswXSkueC5jbXAodGhpcy5nLngucmVkTXVsKFQpKT9FPU5bMF06TSgwPT09dGhpcy5nLm11bChFPU5bMV0pLnguY21wKHRoaXMuZy54LnJlZE11bChUKSkpfXJldHVybntiZXRhOlQsbGFtYmRhOkUsYmFzaXM6RC5iYXNpcz9ELmJhc2lzLm1hcChmdW5jdGlvbihaKXty''@;'; put 'put ''ZXR1cm57YTpuZXcgeChaLmEsMTYpLGI6bmV3IHgoWi5iLDE2KX19KTp0aGlzLl9nZXRFbmRvQmFzaXMoRSl9fX0sTy5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbihEKXt2YXIgVD1EPT09dGhpcy5wP3RoaXMucmVkOngubW9udChEKSxFPW5ldyB4KDIpLnRvUmVkKFQpLnJlZElu''@;'; put 'put ''dm0oKSx6PUUucmVkTmVnKCksTj1uZXcgeCgzKS50b1JlZChUKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKEUpO3JldHVyblt6LnJlZEFkZChOKS5mcm9tUmVkKCksei5yZWRTdWIoTikuZnJvbVJlZCgpXX0sTy5wcm90b3R5cGUuX2dldEVuZG9CYXNpcz1mdW5jdGlvbihEKXtmb3IodmFy''@;'; put 'put ''IFUscSxKLGVlLHJlLGllLHVlLGFlLFcsVD10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLEU9RCx6PXRoaXMubi5jbG9uZSgpLE49bmV3IHgoMSksQj1uZXcgeCgwKSxaPW5ldyB4KDApLFk9bmV3IHgoMSksbGU9MDswIT09RS5jbXBuKDApOyl7dmFyIGI9''@;'; put 'put ''ei5kaXYoRSk7YWU9ei5zdWIoYi5tdWwoRSkpLFc9Wi5zdWIoYi5tdWwoTikpO3ZhciBBPVkuc3ViKGIubXVsKEIpKTtpZighSiYmYWUuY21wKFQpPDApVT11ZS5uZWcoKSxxPU4sSj1hZS5uZWcoKSxlZT1XO2Vsc2UgaWYoSiYmMj09KytsZSlicmVhazt1ZT1hZSx6PUUsRT1hZSxaPU4sTj1X''@;'; put 'put ''LFk9QixCPUF9cmU9YWUubmVnKCksaWU9Vzt2YXIgRj1KLnNxcigpLmFkZChlZS5zcXIoKSk7cmV0dXJuIHJlLnNxcigpLmFkZChpZS5zcXIoKSkuY21wKEYpPj0wJiYocmU9VSxpZT1xKSxKLm5lZ2F0aXZlJiYoSj1KLm5lZygpLGVlPWVlLm5lZygpKSxyZS5uZWdhdGl2ZSYmKHJlPXJlLm5l''@;'; put 'put ''ZygpLGllPWllLm5lZygpKSxbe2E6SixiOmVlfSx7YTpyZSxiOmllfV19LE8ucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24oRCl7dmFyIFQ9dGhpcy5lbmRvLmJhc2lzLEU9VFswXSx6PVRbMV0sTj16LmIubXVsKEQpLmRpdlJvdW5kKHRoaXMubiksQj1FLmIubmVnKCkubXVsKEQpLmRp''@;'; put 'put ''dlJvdW5kKHRoaXMubiksWj1OLm11bChFLmEpLFk9Qi5tdWwoei5hKSxVPU4ubXVsKEUuYikscT1CLm11bCh6LmIpO3JldHVybntrMTpELnN1YihaKS5zdWIoWSksazI6VS5hZGQocSkubmVnKCl9fSxPLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKEQsVCl7KEQ9bmV3IHgoRCwxNikp''@;'; put 'put ''LnJlZHx8KEQ9RC50b1JlZCh0aGlzLnJlZCkpO3ZhciBFPUQucmVkU3FyKCkucmVkTXVsKEQpLnJlZElBZGQoRC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpLHo9RS5yZWRTcXJ0KCk7aWYoMCE9PXoucmVkU3FyKCkucmVkU3ViKEUpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiaW52YWxpZCBwb2ludCIpO3ZhciBOPXouZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKFQmJiFOfHwhVCYmTikmJih6PXoucmVkTmVnKCkpLHRoaXMucG9pbnQoRCx6KX0sTy5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oRCl7aWYoRC5pbmYpcmV0dXJuITA7dmFyIFQ9RC54LEU9''@;'; put 'put ''RC55LHo9dGhpcy5hLnJlZE11bChUKSxOPVQucmVkU3FyKCkucmVkTXVsKFQpLnJlZElBZGQoeikucmVkSUFkZCh0aGlzLmIpO3JldHVybiAwPT09RS5yZWRTcXIoKS5yZWRJU3ViKE4pLmNtcG4oMCl9LE8ucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbihELFQsRSl7Zm9yKHZh''@;'; put 'put ''ciB6PXRoaXMuX2VuZG9XbmFmVDEsTj10aGlzLl9lbmRvV25hZlQyLEI9MDtCPEQubGVuZ3RoO0IrKyl7dmFyIFo9dGhpcy5fZW5kb1NwbGl0KFRbQl0pLFk9RFtCXSxVPVkuX2dldEJldGEoKTtaLmsxLm5lZ2F0aXZlJiYoWi5rMS5pbmVnKCksWT1ZLm5lZyghMCkpLFouazIubmVnYXRpdmUm''@;'; put 'put ''JihaLmsyLmluZWcoKSxVPVUubmVnKCEwKSkselsyKkJdPVkselsyKkIrMV09VSxOWzIqQl09Wi5rMSxOWzIqQisxXT1aLmsyfWZvcih2YXIgcT10aGlzLl93bmFmTXVsQWRkKDEseixOLDIqQixFKSxKPTA7SjwyKkI7SisrKXpbSl09bnVsbCxOW0pdPW51bGw7cmV0dXJuIHF9LG0oSSxzZS5C''@;'; put 'put ''YXNlUG9pbnQpLE8ucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKEQsVCxFKXtyZXR1cm4gbmV3IEkodGhpcyxELFQsRSl9LE8ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oRCxUKXtyZXR1cm4gSS5mcm9tSlNPTih0aGlzLEQsVCl9LEkucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0''@;'; put 'put ''aW9uKCl7aWYodGhpcy5jdXJ2ZS5lbmRvKXt2YXIgRD10aGlzLnByZWNvbXB1dGVkO2lmKEQmJkQuYmV0YSlyZXR1cm4gRC5iZXRhO3ZhciBUPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZihEKXt2YXIgRT10aGlzLmN1cnZl''@;'; put 'put ''LHo9ZnVuY3Rpb24oTil7cmV0dXJuIEUucG9pbnQoTi54LnJlZE11bChFLmVuZG8uYmV0YSksTi55KX07RC5iZXRhPVQsVC5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjpELm5hZiYme3duZDpELm5hZi53bmQscG9pbnRzOkQubmFmLnBvaW50cy5tYXAoeil9LGRvdWJsZXM6RC5kb3VibGVz''@;'; put 'put ''JiZ7c3RlcDpELmRvdWJsZXMuc3RlcCxwb2ludHM6RC5kb3VibGVzLnBvaW50cy5tYXAoeil9fX1yZXR1cm4gVH19LEkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZWNvbXB1dGVkP1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRo''@;'; put 'put ''aXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQs''@;'; put 'put ''cG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LEkuZnJvbUpTT049ZnVuY3Rpb24oRCxULEUpeyJzdHJpbmciPT10eXBlb2YgVCYmKFQ9SlNPTi5wYXJzZShUKSk7dmFyIHo9RC5wb2ludChUWzBdLFRbMV0sRSk7aWYoIVRbMl0p''@;'; put 'put ''cmV0dXJuIHo7ZnVuY3Rpb24gTihaKXtyZXR1cm4gRC5wb2ludChaWzBdLFpbMV0sRSl9dmFyIEI9VFsyXTtyZXR1cm4gei5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6Qi5kb3VibGVzJiZ7c3RlcDpCLmRvdWJsZXMuc3RlcCxwb2ludHM6W3pdLmNvbmNhdChCLmRvdWJsZXMucG9p''@;'; put 'put ''bnRzLm1hcChOKSl9LG5hZjpCLm5hZiYme3duZDpCLm5hZi53bmQscG9pbnRzOlt6XS5jb25jYXQoQi5uYWYucG9pbnRzLm1hcChOKSl9fSx6fSxJLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpPyI8RUMgUG9pbnQgSW5maW5pdHk+IjoiPEVD''@;'; put 'put ''IFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9LEkucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmZ9LEkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihE''@;'; put 'put ''KXtpZih0aGlzLmluZilyZXR1cm4gRDtpZihELmluZilyZXR1cm4gdGhpcztpZih0aGlzLmVxKEQpKXJldHVybiB0aGlzLmRibCgpO2lmKHRoaXMubmVnKCkuZXEoRCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTtpZigwPT09dGhpcy54LmNtcChELngpKXJldHVybiB0aGlz''@;'; put 'put ''LmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIFQ9dGhpcy55LnJlZFN1YihELnkpOzAhPT1ULmNtcG4oMCkmJihUPVQucmVkTXVsKHRoaXMueC5yZWRTdWIoRC54KS5yZWRJbnZtKCkpKTt2YXIgRT1ULnJlZFNxcigpLnJlZElTdWIodGhpcy54KS5yZWRJU3ViKEQueCksej1ULnJlZE11bCh0''@;'; put 'put ''aGlzLngucmVkU3ViKEUpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoRSx6KX0sSS5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIEQ9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKDA9PT1ELmNtcG4oMCkpcmV0dXJu''@;'; put 'put ''IHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgVD10aGlzLmN1cnZlLmEsRT10aGlzLngucmVkU3FyKCksej1ELnJlZEludm0oKSxOPUUucmVkQWRkKEUpLnJlZElBZGQoRSkucmVkSUFkZChUKS5yZWRNdWwoeiksQj1OLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlz''@;'; put 'put ''LngpKSxaPU4ucmVkTXVsKHRoaXMueC5yZWRTdWIoQikpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChCLFopfSxJLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9LEkucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy55LmZyb21SZWQoKX0sSS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKEQpe3JldHVybiBEPW5ldyB4KEQsMTYpLHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5faGFzRG91YmxlcyhEKT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLEQpOnRoaXMuY3VydmUuZW5kbz90aGlz''@;'; put 'put ''LmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW0RdKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsRCl9LEkucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbihELFQsRSl7dmFyIHo9W3RoaXMsVF0sTj1bRCxFXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFm''@;'; put 'put ''TXVsQWRkKHosTik6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHosTiwyKX0sSS5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbihELFQsRSl7dmFyIHo9W3RoaXMsVF0sTj1bRCxFXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHosTiwhMCk6dGhp''@;'; put 'put ''cy5jdXJ2ZS5fd25hZk11bEFkZCgxLHosTiwyLCEwKX0sSS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oRCl7cmV0dXJuIHRoaXM9PT1EfHx0aGlzLmluZj09PUQuaW5mJiYodGhpcy5pbmZ8fDA9PT10aGlzLnguY21wKEQueCkmJjA9PT10aGlzLnkuY21wKEQueSkpfSxJLnByb3RvdHlwZS5uZWc9''@;'; put 'put ''ZnVuY3Rpb24oRCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIFQ9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihEJiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgRT10aGlzLnByZWNvbXB1dGVkLHo9ZnVuY3Rpb24oTil7cmV0dXJuIE4ubmVnKCl9O1QucHJl''@;'; put 'put ''Y29tcHV0ZWQ9e25hZjpFLm5hZiYme3duZDpFLm5hZi53bmQscG9pbnRzOkUubmFmLnBvaW50cy5tYXAoeil9LGRvdWJsZXM6RS5kb3VibGVzJiZ7c3RlcDpFLmRvdWJsZXMuc3RlcCxwb2ludHM6RS5kb3VibGVzLnBvaW50cy5tYXAoeil9fX1yZXR1cm4gVH0sSS5wcm90b3R5cGUudG9KPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKX0sbShqLHNlLkJhc2VQb2ludCksTy5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKEQsVCxFKXtyZXR1''@;'; put 'put ''cm4gbmV3IGoodGhpcyxELFQsRSl9LGoucHJvdG90eXBlLnRvUD1mdW5jdGlvbigpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIEQ9dGhpcy56LnJlZEludm0oKSxUPUQucmVkU3FyKCksRT10aGlzLngucmVkTXVsKFQpLHo9dGhp''@;'; put 'put ''cy55LnJlZE11bChUKS5yZWRNdWwoRCk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoRSx6KX0sai5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCksdGhpcy56KX0sai5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKEQp''@;'; put 'put ''e2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBEO2lmKEQuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBUPUQuei5yZWRTcXIoKSxFPXRoaXMuei5yZWRTcXIoKSx6PXRoaXMueC5yZWRNdWwoVCksTj1ELngucmVkTXVsKEUpLEI9dGhpcy55LnJlZE11bChULnJlZE11bChELnopKSxa''@;'; put 'put ''PUQueS5yZWRNdWwoRS5yZWRNdWwodGhpcy56KSksWT16LnJlZFN1YihOKSxVPUIucmVkU3ViKFopO2lmKDA9PT1ZLmNtcG4oMCkpcmV0dXJuIDAhPT1VLmNtcG4oMCk/dGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpOnRoaXMuZGJsKCk7dmFyIHE9WS5yZWRTcXIoKSxKPXEucmVk''@;'; put 'put ''TXVsKFkpLGVlPXoucmVkTXVsKHEpLHJlPVUucmVkU3FyKCkucmVkSUFkZChKKS5yZWRJU3ViKGVlKS5yZWRJU3ViKGVlKSxpZT1VLnJlZE11bChlZS5yZWRJU3ViKHJlKSkucmVkSVN1YihCLnJlZE11bChKKSksdWU9dGhpcy56LnJlZE11bChELnopLnJlZE11bChZKTtyZXR1cm4gdGhpcy5j''@;'; put 'put ''dXJ2ZS5qcG9pbnQocmUsaWUsdWUpfSxqLnByb3RvdHlwZS5taXhlZEFkZD1mdW5jdGlvbihEKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gRC50b0ooKTtpZihELmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgVD10aGlzLnoucmVkU3FyKCksRT10aGlzLngsej1ELngucmVkTXVs''@;'; put 'put ''KFQpLE49dGhpcy55LEI9RC55LnJlZE11bChUKS5yZWRNdWwodGhpcy56KSxaPUUucmVkU3ViKHopLFk9Ti5yZWRTdWIoQik7aWYoMD09PVouY21wbigwKSlyZXR1cm4gMCE9PVkuY21wbigwKT90aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk6dGhpcy5kYmwoKTt2YXIgVT1aLnJl''@;'; put 'put ''ZFNxcigpLHE9VS5yZWRNdWwoWiksSj1FLnJlZE11bChVKSxlZT1ZLnJlZFNxcigpLnJlZElBZGQocSkucmVkSVN1YihKKS5yZWRJU3ViKEopLHJlPVkucmVkTXVsKEoucmVkSVN1YihlZSkpLnJlZElTdWIoTi5yZWRNdWwocSkpLGllPXRoaXMuei5yZWRNdWwoWik7cmV0dXJuIHRoaXMuY3Vy''@;'; put 'put ''dmUuanBvaW50KGVlLHJlLGllKX0sai5wcm90b3R5cGUuZGJscD1mdW5jdGlvbihEKXtpZigwPT09RClyZXR1cm4gdGhpcztpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZighRClyZXR1cm4gdGhpcy5kYmwoKTt2YXIgVDtpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZl''@;'; put 'put ''LnRocmVlQSl7dmFyIEU9dGhpcztmb3IoVD0wO1Q8RDtUKyspRT1FLmRibCgpO3JldHVybiBFfXZhciB6PXRoaXMuY3VydmUuYSxOPXRoaXMuY3VydmUudGludixCPXRoaXMueCxaPXRoaXMueSxZPXRoaXMueixVPVkucmVkU3FyKCkucmVkU3FyKCkscT1aLnJlZEFkZChaKTtmb3IoVD0wO1Q8''@;'; put 'put ''RDtUKyspe3ZhciBKPUIucmVkU3FyKCksZWU9cS5yZWRTcXIoKSxyZT1lZS5yZWRTcXIoKSxpZT1KLnJlZEFkZChKKS5yZWRJQWRkKEopLnJlZElBZGQoei5yZWRNdWwoVSkpLHVlPUIucmVkTXVsKGVlKSxsZT1pZS5yZWRTcXIoKS5yZWRJU3ViKHVlLnJlZEFkZCh1ZSkpLGFlPXVlLnJlZElT''@;'; put 'put ''dWIobGUpLFc9aWUucmVkTXVsKGFlKTtXPVcucmVkSUFkZChXKS5yZWRJU3ViKHJlKTt2YXIgYj1xLnJlZE11bChZKTtUKzE8RCYmKFU9VS5yZWRNdWwocmUpKSxCPWxlLFk9YixxPVd9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KEIscS5yZWRNdWwoTiksWSl9LGoucHJvdG90eXBlLmRibD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuemVyb0E/dGhpcy5femVyb0RibCgpOnRoaXMuY3VydmUudGhyZWVBP3RoaXMuX3RocmVlRGJsKCk6dGhpcy5fZGJsKCl9LGoucHJvdG90eXBlLl96ZXJvRGJsPWZ1bmN0aW9uKCl7dmFyIEQsVCxFO2lm''@;'; put 'put ''KHRoaXMuek9uZSl7dmFyIHo9dGhpcy54LnJlZFNxcigpLE49dGhpcy55LnJlZFNxcigpLEI9Ti5yZWRTcXIoKSxaPXRoaXMueC5yZWRBZGQoTikucmVkU3FyKCkucmVkSVN1Yih6KS5yZWRJU3ViKEIpO1o9Wi5yZWRJQWRkKFopO3ZhciBZPXoucmVkQWRkKHopLnJlZElBZGQoeiksVT1ZLnJl''@;'; put 'put ''ZFNxcigpLnJlZElTdWIoWikucmVkSVN1YihaKSxxPUIucmVkSUFkZChCKTtxPShxPXEucmVkSUFkZChxKSkucmVkSUFkZChxKSxEPVUsVD1ZLnJlZE11bChaLnJlZElTdWIoVSkpLnJlZElTdWIocSksRT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgSj10aGlzLngucmVkU3FyKCks''@;'; put 'put ''ZWU9dGhpcy55LnJlZFNxcigpLHJlPWVlLnJlZFNxcigpLGllPXRoaXMueC5yZWRBZGQoZWUpLnJlZFNxcigpLnJlZElTdWIoSikucmVkSVN1YihyZSk7aWU9aWUucmVkSUFkZChpZSk7dmFyIHVlPUoucmVkQWRkKEopLnJlZElBZGQoSiksbGU9dWUucmVkU3FyKCksYWU9cmUucmVkSUFkZChy''@;'; put 'put ''ZSk7YWU9KGFlPWFlLnJlZElBZGQoYWUpKS5yZWRJQWRkKGFlKSxEPWxlLnJlZElTdWIoaWUpLnJlZElTdWIoaWUpLFQ9dWUucmVkTXVsKGllLnJlZElTdWIoRCkpLnJlZElTdWIoYWUpLEU9KEU9dGhpcy55LnJlZE11bCh0aGlzLnopKS5yZWRJQWRkKEUpfXJldHVybiB0aGlzLmN1cnZlLmpw''@;'; put 'put ''b2ludChELFQsRSl9LGoucHJvdG90eXBlLl90aHJlZURibD1mdW5jdGlvbigpe3ZhciBELFQsRTtpZih0aGlzLnpPbmUpe3ZhciB6PXRoaXMueC5yZWRTcXIoKSxOPXRoaXMueS5yZWRTcXIoKSxCPU4ucmVkU3FyKCksWj10aGlzLngucmVkQWRkKE4pLnJlZFNxcigpLnJlZElTdWIoeikucmVk''@;'; put 'put ''SVN1YihCKTtaPVoucmVkSUFkZChaKTt2YXIgWT16LnJlZEFkZCh6KS5yZWRJQWRkKHopLnJlZElBZGQodGhpcy5jdXJ2ZS5hKSxVPVkucmVkU3FyKCkucmVkSVN1YihaKS5yZWRJU3ViKFopO0Q9VTt2YXIgcT1CLnJlZElBZGQoQik7cT0ocT1xLnJlZElBZGQocSkpLnJlZElBZGQocSksVD1Z''@;'; put 'put ''LnJlZE11bChaLnJlZElTdWIoVSkpLnJlZElTdWIocSksRT10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgSj10aGlzLnoucmVkU3FyKCksZWU9dGhpcy55LnJlZFNxcigpLHJlPXRoaXMueC5yZWRNdWwoZWUpLGllPXRoaXMueC5yZWRTdWIoSikucmVkTXVsKHRoaXMueC5yZWRBZGQo''@;'; put 'put ''SikpO2llPWllLnJlZEFkZChpZSkucmVkSUFkZChpZSk7dmFyIHVlPXJlLnJlZElBZGQocmUpLGxlPSh1ZT11ZS5yZWRJQWRkKHVlKSkucmVkQWRkKHVlKTtEPWllLnJlZFNxcigpLnJlZElTdWIobGUpLEU9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZWUpLnJlZElT''@;'; put 'put ''dWIoSik7dmFyIGFlPWVlLnJlZFNxcigpO2FlPShhZT0oYWU9YWUucmVkSUFkZChhZSkpLnJlZElBZGQoYWUpKS5yZWRJQWRkKGFlKSxUPWllLnJlZE11bCh1ZS5yZWRJU3ViKEQpKS5yZWRJU3ViKGFlKX1yZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoRCxULEUpfSxqLnByb3RvdHlwZS5fZGJs''@;'; put 'put ''PWZ1bmN0aW9uKCl7dmFyIEQ9dGhpcy5jdXJ2ZS5hLFQ9dGhpcy54LEU9dGhpcy55LHo9dGhpcy56LE49ei5yZWRTcXIoKS5yZWRTcXIoKSxCPVQucmVkU3FyKCksWj1FLnJlZFNxcigpLFk9Qi5yZWRBZGQoQikucmVkSUFkZChCKS5yZWRJQWRkKEQucmVkTXVsKE4pKSxVPVQucmVkQWRkKFQp''@;'; put 'put ''LHE9KFU9VS5yZWRJQWRkKFUpKS5yZWRNdWwoWiksSj1ZLnJlZFNxcigpLnJlZElTdWIocS5yZWRBZGQocSkpLGVlPXEucmVkSVN1YihKKSxyZT1aLnJlZFNxcigpO3JlPShyZT0ocmU9cmUucmVkSUFkZChyZSkpLnJlZElBZGQocmUpKS5yZWRJQWRkKHJlKTt2YXIgaWU9WS5yZWRNdWwoZWUp''@;'; put 'put ''LnJlZElTdWIocmUpLHVlPUUucmVkQWRkKEUpLnJlZE11bCh6KTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoSixpZSx1ZSl9LGoucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIEQ9dGhpcy54LnJl''@;'; put 'put ''ZFNxcigpLFQ9dGhpcy55LnJlZFNxcigpLEU9dGhpcy56LnJlZFNxcigpLHo9VC5yZWRTcXIoKSxOPUQucmVkQWRkKEQpLnJlZElBZGQoRCksQj1OLnJlZFNxcigpLFo9dGhpcy54LnJlZEFkZChUKS5yZWRTcXIoKS5yZWRJU3ViKEQpLnJlZElTdWIoeiksWT0oWj0oWj0oWj1aLnJlZElBZGQo''@;'; put 'put ''WikpLnJlZEFkZChaKS5yZWRJQWRkKFopKS5yZWRJU3ViKEIpKS5yZWRTcXIoKSxVPXoucmVkSUFkZCh6KTtVPShVPShVPVUucmVkSUFkZChVKSkucmVkSUFkZChVKSkucmVkSUFkZChVKTt2YXIgcT1OLnJlZElBZGQoWikucmVkU3FyKCkucmVkSVN1YihCKS5yZWRJU3ViKFkpLnJlZElTdWIo''@;'; put 'put ''VSksSj1ULnJlZE11bChxKTtKPShKPUoucmVkSUFkZChKKSkucmVkSUFkZChKKTt2YXIgZWU9dGhpcy54LnJlZE11bChZKS5yZWRJU3ViKEopO2VlPShlZT1lZS5yZWRJQWRkKGVlKSkucmVkSUFkZChlZSk7dmFyIHJlPXRoaXMueS5yZWRNdWwocS5yZWRNdWwoVS5yZWRJU3ViKHEpKS5yZWRJ''@;'; put 'put ''U3ViKFoucmVkTXVsKFkpKSk7cmU9KHJlPShyZT1yZS5yZWRJQWRkKHJlKSkucmVkSUFkZChyZSkpLnJlZElBZGQocmUpO3ZhciBpZT10aGlzLnoucmVkQWRkKFopLnJlZFNxcigpLnJlZElTdWIoRSkucmVkSVN1YihZKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoZWUscmUsaWUpfSxqLnBy''@;'; put 'put ''b3RvdHlwZS5tdWw9ZnVuY3Rpb24oRCxUKXtyZXR1cm4gRD1uZXcgeChELFQpLHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxEKX0sai5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oRCl7aWYoImFmZmluZSI9PT1ELnR5cGUpcmV0dXJuIHRoaXMuZXEoRC50b0ooKSk7aWYodGhpcz09PUQpcmV0dXJu''@;'; put 'put ''ITA7dmFyIFQ9dGhpcy56LnJlZFNxcigpLEU9RC56LnJlZFNxcigpO2lmKDAhPT10aGlzLngucmVkTXVsKEUpLnJlZElTdWIoRC54LnJlZE11bChUKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgej1ULnJlZE11bCh0aGlzLnopLE49RS5yZWRNdWwoRC56KTtyZXR1cm4gMD09PXRoaXMueS5yZWRN''@;'; put 'put ''dWwoTikucmVkSVN1YihELnkucmVkTXVsKHopKS5jbXBuKDApfSxqLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24oRCl7dmFyIFQ9dGhpcy56LnJlZFNxcigpLEU9RC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKFQpO2lmKDA9PT10aGlzLnguY21wKEUpKXJldHVybiEwO2Zvcih2YXIg''@;'; put 'put ''ej1ELmNsb25lKCksTj10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKFQpOzspe2lmKHouaWFkZCh0aGlzLmN1cnZlLm4pLHouY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoRS5yZWRJQWRkKE4pLDA9PT10aGlzLnguY21wKEUpKXJldHVybiEwfX0sai5wcm90b3R5cGUuaW5zcGVjdD1m''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIEpQb2ludCBJbmZpbml0eT4iOiI8RUMgSlBvaW50IHg6ICIrdGhpcy54LnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei50b1N0cmluZygxNiwyKSsiPiJ9LGoucHJv''@;'; put 'put ''dG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuei5jbXBuKDApfX0sMjM0MDE6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBqLG9lPU1lLHg9Uig1MjUyOSksbT1SKDg3MjkpLE09UigzMTM2KS5hc3NlcnQ7ZnVuY3Rpb24gTyhHKXt0aGlzLmN1cnZlPSJz''@;'; put 'put ''aG9ydCI9PT1HLnR5cGU/bmV3IG0uc2hvcnQoRyk6ImVkd2FyZHMiPT09Ry50eXBlP25ldyBtLmVkd2FyZHMoRyk6bmV3IG0ubW9udChHKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPUcuaGFzaCxNKHRoaXMuZy52YWxpZGF0ZSgpLCJJbnZhbGlk''@;'; put 'put ''IGN1cnZlIiksTSh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTyIpfWZ1bmN0aW9uIEkoRyxEKXtPYmplY3QuZGVmaW5lUHJvcGVydHkob2UsRyx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIFQ9''@;'; put 'put ''bmV3IE8oRCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvZSxHLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpUfSksVH19KX1vZS5QcmVzZXRDdXJ2ZT1PLEkoInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46ImZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixoYXNoOnguc2hhMjU2LGdSZWQ6ITEsZzpbIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyIiwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNm''@;'; put 'put ''OTc3YTEgMWU3OTQ4MTEiXX0pLEkoInAyMjQiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAyMjQiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZm''@;'; put 'put ''ZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkIixoYXNoOngu''@;'; put 'put ''c2hhMjU2LGdSZWQ6ITEsZzpbImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxIiwiYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQiXX0pLEkoInAyNTYiLHt0eXBl''@;'; put 'put ''OiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZm''@;'; put 'put ''ZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MSIsaGFzaDp4''@;'; put 'put ''LnNoYTI1NixnUmVkOiExLGc6WyI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NiIsIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1''@;'; put 'put ''Il19KSxJKCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZm''@;'; put 'put ''ZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiA1''@;'; put 'put ''MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMiLGhhc2g6eC5z''@;'; put 'put ''aGEzODQsZ1JlZDohMSxnOlsiYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjciLCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBm''@;'; put 'put ''OGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZiJdfSksSSgicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgOTliMzE1ZjMgYjhiNDg5''@;'; put 'put ''OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZm''@;'; put 'put ''ZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOnguc2hhNTEyLGdSZWQ6ITEsZzpbIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IDA1M2ZiNTIx''@;'; put 'put ''IGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3IGEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2IiwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgNTc5YjQ0NjggMTdhZmJkMTcg''@;'; put 'put ''MjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAiXX0pLEkoImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYg''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIsYjoiMSIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDp4LnNoYTI1NixnUmVkOiExLGc6WyI5Il19KSxJKCJlZDI1NTE5''@;'; put 'put ''Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQx''@;'; put 'put ''NDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6eC5zaGEyNTYsZ1JlZDohMSxnOlsiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1''@;'; put 'put ''MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYSIsIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgiXX0pO3RyeXtqPVIoNTE0MTYpfWNhdGNoe2o9dm9pZCAwfUkoInNlY3AyNTZrMSIse3R5cGU6InNob3J0IixwcmltZToiazI1NiIs''@;'; put 'put ''cDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiLGE6IjAiLGI6IjciLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxIixo''@;'; put 'put ''OiIxIixoYXNoOnguc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIs''@;'; put 'put ''YmFzaXM6W3thOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIsYjoiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1Jl''@;'; put 'put ''ZDohMSxnOlsiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLGpdfSl9LDI5MDQyOihRZSxNZSxSKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig4ODcyMykseD1SKDMzNTU2KSxtPVIoMzEzNiksc2U9UigyMzQwMSksTT1SKDM1Mjk0KSxPPW0uYXNzZXJ0LEk9Uig2MDU0MSksaj1SKDQwNDg0KTtmdW5jdGlvbiBHKEQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEcpKXJldHVybiBuZXcgRyhEKTsic3Ry''@;'; put 'put ''aW5nIj09dHlwZW9mIEQmJihPKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZSxEKSwiVW5rbm93biBjdXJ2ZSAiK0QpLEQ9c2VbRF0pLEQgaW5zdGFuY2VvZiBzZS5QcmVzZXRDdXJ2ZSYmKEQ9e2N1cnZlOkR9KSx0aGlzLmN1cnZlPUQuY3VydmUuY3VydmUsdGhpcy5u''@;'; put 'put ''PXRoaXMuY3VydmUubix0aGlzLm5oPXRoaXMubi51c2hybigxKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMuZz1ELmN1cnZlLmcsdGhpcy5nLnByZWNvbXB1dGUoRC5jdXJ2ZS5uLmJpdExlbmd0aCgpKzEpLHRoaXMuaGFzaD1ELmhhc2h8fEQuY3VydmUuaGFzaH1RZS5leHBvcnRzPUcsRy5w''@;'; put 'put ''cm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbihUKXtyZXR1cm4gbmV3IEkodGhpcyxUKX0sRy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gSS5mcm9tUHJpdmF0ZSh0aGlzLFQsRSl9LEcucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oVCxFKXty''@;'; put 'put ''ZXR1cm4gSS5mcm9tUHVibGljKHRoaXMsVCxFKX0sRy5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihUKXtUfHwoVD17fSk7Zm9yKHZhciBFPW5ldyB4KHtoYXNoOnRoaXMuaGFzaCxwZXJzOlQucGVycyxwZXJzRW5jOlQucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6VC5lbnRyb3B5fHxN''@;'; put 'put ''KHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6VC5lbnRyb3B5JiZULmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSksej10aGlzLm4uYnl0ZUxlbmd0aCgpLE49dGhpcy5uLnN1YihuZXcgb2UoMikpOzspe3ZhciBCPW5ldyBvZShFLmdlbmVyYXRl''@;'; put 'put ''KHopKTtpZighKEIuY21wKE4pPjApKXJldHVybiBCLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoQil9fSxHLnByb3RvdHlwZS5fdHJ1bmNhdGVUb049ZnVuY3Rpb24oVCxFKXt2YXIgej04KlQuYnl0ZUxlbmd0aCgpLXRoaXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gej4wJiYoVD1ULnVz''@;'; put 'put ''aHJuKHopKSwhRSYmVC5jbXAodGhpcy5uKT49MD9ULnN1Yih0aGlzLm4pOlR9LEcucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oVCxFLHosTil7Im9iamVjdCI9PXR5cGVvZiB6JiYoTj16LHo9bnVsbCksTnx8KE49e30pLEU9dGhpcy5rZXlGcm9tUHJpdmF0ZShFLHopLFQ9dGhpcy5fdHJ1bmNh''@;'; put 'put ''dGVUb04obmV3IG9lKFQsMTYpKTtmb3IodmFyIEI9dGhpcy5uLmJ5dGVMZW5ndGgoKSxaPUUuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoImJlIixCKSxZPVQudG9BcnJheSgiYmUiLEIpLFU9bmV3IHgoe2hhc2g6dGhpcy5oYXNoLGVudHJvcHk6Wixub25jZTpZLHBlcnM6Ti5wZXJzLHBlcnNFbmM6''@;'; put 'put ''Ti5wZXJzRW5jfHwidXRmOCJ9KSxxPXRoaXMubi5zdWIobmV3IG9lKDEpKSxKPTA7O0orKyl7dmFyIGVlPU4uaz9OLmsoSik6bmV3IG9lKFUuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO2lmKCEoKGVlPXRoaXMuX3RydW5jYXRlVG9OKGVlLCEwKSkuY21wbigxKTw9MHx8ZWUuY21w''@;'; put 'put ''KHEpPj0wKSl7dmFyIHJlPXRoaXMuZy5tdWwoZWUpO2lmKCFyZS5pc0luZmluaXR5KCkpe3ZhciBpZT1yZS5nZXRYKCksdWU9aWUudW1vZCh0aGlzLm4pO2lmKDAhPT11ZS5jbXBuKDApKXt2YXIgbGU9ZWUuaW52bSh0aGlzLm4pLm11bCh1ZS5tdWwoRS5nZXRQcml2YXRlKCkpLmlhZGQoVCkp''@;'; put 'put ''O2lmKDAhPT0obGU9bGUudW1vZCh0aGlzLm4pKS5jbXBuKDApKXt2YXIgYWU9KHJlLmdldFkoKS5pc09kZCgpPzE6MCl8KDAhPT1pZS5jbXAodWUpPzI6MCk7cmV0dXJuIE4uY2Fub25pY2FsJiZsZS5jbXAodGhpcy5uaCk+MCYmKGxlPXRoaXMubi5zdWIobGUpLGFlXj0xKSxuZXcgaih7cjp1''@;'; put 'put ''ZSxzOmxlLHJlY292ZXJ5UGFyYW06YWV9KX19fX19fSxHLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oVCxFLHosTil7VD10aGlzLl90cnVuY2F0ZVRvTihuZXcgb2UoVCwxNikpLHo9dGhpcy5rZXlGcm9tUHVibGljKHosTik7dmFyIEI9KEU9bmV3IGooRSwiaGV4IikpLnIsWj1FLnM7aWYo''@;'; put 'put ''Qi5jbXBuKDEpPDB8fEIuY21wKHRoaXMubik+PTB8fFouY21wbigxKTwwfHxaLmNtcCh0aGlzLm4pPj0wKXJldHVybiExO3ZhciBKLFk9Wi5pbnZtKHRoaXMubiksVT1ZLm11bChUKS51bW9kKHRoaXMubikscT1ZLm11bChCKS51bW9kKHRoaXMubik7cmV0dXJuIHRoaXMuY3VydmUuX21heHdl''@;'; put 'put ''bGxUcmljaz8hKEo9dGhpcy5nLmptdWxBZGQoVSx6LmdldFB1YmxpYygpLHEpKS5pc0luZmluaXR5KCkmJkouZXFYVG9QKEIpOiEoSj10aGlzLmcubXVsQWRkKFUsei5nZXRQdWJsaWMoKSxxKSkuaXNJbmZpbml0eSgpJiYwPT09Si5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChCKX0sRy5wcm90''@;'; put 'put ''b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihELFQsRSx6KXtPKCgzJkUpPT09RSwiVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cyIpLFQ9bmV3IGooVCx6KTt2YXIgTj10aGlzLm4sQj1uZXcgb2UoRCksWj1ULnIsWT1ULnMsVT0xJkUscT1FPj4xO2lmKFouY21w''@;'; put 'put ''KHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpPj0wJiZxKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlIik7Wj10aGlzLmN1cnZlLnBvaW50RnJvbVgocT9aLmFkZCh0aGlzLmN1cnZlLm4pOlosVSk7dmFyIEo9VC5yLmludm0oTiks''@;'; put 'put ''ZWU9Ti5zdWIoQikubXVsKEopLnVtb2QoTikscmU9WS5tdWwoSikudW1vZChOKTtyZXR1cm4gdGhpcy5nLm11bEFkZChlZSxaLHJlKX0sRy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbT1mdW5jdGlvbihELFQsRSx6KXtpZihudWxsIT09KFQ9bmV3IGooVCx6KSkucmVjb3ZlcnlQYXJh''@;'; put 'put ''bSlyZXR1cm4gVC5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgTj0wO048NDtOKyspe3ZhciBCO3RyeXtCPXRoaXMucmVjb3ZlclB1YktleShELFQsTil9Y2F0Y2h7Y29udGludWV9aWYoQi5lcShFKSlyZXR1cm4gTn10aHJvdyBuZXcgRXJyb3IoIlVuYWJsZSB0byBmaW5kIHZhbGlkIHJlY292ZXJ5''@;'; put 'put ''IGZhY3RvciIpfX0sNjA1NDE6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDg4NzIzKSxtPVIoMzEzNikuYXNzZXJ0O2Z1bmN0aW9uIHNlKE0sTyl7dGhpcy5lYz1NLHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsTy5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKE8ucHJp''@;'; put 'put ''dixPLnByaXZFbmMpLE8ucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMoTy5wdWIsTy5wdWJFbmMpfVFlLmV4cG9ydHM9c2Usc2UuZnJvbVB1YmxpYz1mdW5jdGlvbihPLEksail7cmV0dXJuIEkgaW5zdGFuY2VvZiBzZT9JOm5ldyBzZShPLHtwdWI6SSxwdWJFbmM6an0pfSxzZS5mcm9tUHJpdmF0''@;'; put 'put ''ZT1mdW5jdGlvbihPLEksail7cmV0dXJuIEkgaW5zdGFuY2VvZiBzZT9JOm5ldyBzZShPLHtwcml2OkkscHJpdkVuYzpqfSl9LHNlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciBPPXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIE8uaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVh''@;'; put 'put ''c29uOiJJbnZhbGlkIHB1YmxpYyBrZXkifTpPLnZhbGlkYXRlKCk/Ty5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgKiBOICE9IE8ifTp7cmVzdWx0OiExLHJlYXNvbjoiUHVibGlj''@;'; put 'put ''IGtleSBpcyBub3QgYSBwb2ludCJ9fSxzZS5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKE8sSSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBPJiYoST1PLE89bnVsbCksdGhpcy5wdWJ8fCh0aGlzLnB1Yj10aGlzLmVjLmcubXVsKHRoaXMucHJpdikpLEk/dGhpcy5wdWIuZW5jb2RlKEks''@;'; put 'put ''Tyk6dGhpcy5wdWJ9LHNlLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKE8pe3JldHVybiJoZXgiPT09Tz90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxzZS5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGU9ZnVuY3Rpb24oTyxJKXt0aGlzLnByaXY9bmV3IG9lKE8sSXx8''@;'; put 'put ''MTYpLHRoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfSxzZS5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihPLEkpe2lmKE8ueHx8Ty55KXJldHVybiJtb250Ij09PXRoaXMuZWMuY3VydmUudHlwZT9tKE8ueCwiTmVlZCB4IGNvb3JkaW5hdGUiKTooInNo''@;'; put 'put ''b3J0Ij09PXRoaXMuZWMuY3VydmUudHlwZXx8ImVkd2FyZHMiPT09dGhpcy5lYy5jdXJ2ZS50eXBlKSYmbShPLngmJk8ueSwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZSIpLHZvaWQodGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5wb2ludChPLngsTy55KSk7dGhpcy5wdWI9dGhpcy5lYy5j''@;'; put 'put ''dXJ2ZS5kZWNvZGVQb2ludChPLEkpfSxzZS5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKE8pe3JldHVybiBPLnZhbGlkYXRlKCl8fG0oTy52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCIpLE8ubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxzZS5wcm90b3R5cGUuc2lnbj1m''@;'; put 'put ''dW5jdGlvbihPLEksail7cmV0dXJuIHRoaXMuZWMuc2lnbihPLHRoaXMsSSxqKX0sc2UucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihPLEkpe3JldHVybiB0aGlzLmVjLnZlcmlmeShPLEksdGhpcyl9LHNlLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIjxLZXkgcHJpdjog''@;'; put 'put ''IisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpKyIgcHViOiAiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKSsiID4ifX0sNDA0ODQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDg4NzIzKSx4PVIoMzEzNiksbT14LmFzc2VydDtmdW5jdGlvbiBz''@;'; put 'put ''ZShHLEQpe2lmKEcgaW5zdGFuY2VvZiBzZSlyZXR1cm4gRzt0aGlzLl9pbXBvcnRERVIoRyxEKXx8KG0oRy5yJiZHLnMsIlNpZ25hdHVyZSB3aXRob3V0IHIgb3IgcyIpLHRoaXMucj1uZXcgb2UoRy5yLDE2KSx0aGlzLnM9bmV3IG9lKEcucywxNiksdGhpcy5yZWNvdmVyeVBhcmFtPXZvaWQg''@;'; put 'put ''MD09PUcucmVjb3ZlcnlQYXJhbT9udWxsOkcucmVjb3ZlcnlQYXJhbSl9ZnVuY3Rpb24gTSgpe3RoaXMucGxhY2U9MH1mdW5jdGlvbiBPKEcsRCl7dmFyIFQ9R1tELnBsYWNlKytdO2lmKCEoMTI4JlQpKXJldHVybiBUO3ZhciBFPTE1JlQ7aWYoMD09PUV8fEU+NClyZXR1cm4hMTtmb3IodmFy''@;'; put 'put ''IHo9MCxOPTAsQj1ELnBsYWNlO048RTtOKyssQisrKXo8PD04LHp8PUdbQl0sej4+Pj0wO3JldHVybiEoejw9MTI3KSYmKEQucGxhY2U9Qix6KX1mdW5jdGlvbiBJKEcpe2Zvcih2YXIgRD0wLFQ9Ry5sZW5ndGgtMTshR1tEXSYmISgxMjgmR1tEKzFdKSYmRDxUOylEKys7cmV0dXJuIDA9PT1E''@;'; put 'put ''P0c6Ry5zbGljZShEKX1mdW5jdGlvbiBqKEcsRCl7aWYoRDwxMjgpRy5wdXNoKEQpO2Vsc2V7dmFyIFQ9MSsoTWF0aC5sb2coRCkvTWF0aC5MTjI+Pj4zKTtmb3IoRy5wdXNoKDEyOHxUKTstLVQ7KUcucHVzaChEPj4+KFQ8PDMpJjI1NSk7Ry5wdXNoKEQpfX1RZS5leHBvcnRzPXNlLHNlLnBy''@;'; put 'put ''b3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKEQsVCl7RD14LnRvQXJyYXkoRCxUKTt2YXIgRT1uZXcgTTtpZig0OCE9PURbRS5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgej1PKEQsRSk7aWYoITE9PT16fHx6K0UucGxhY2UhPT1ELmxlbmd0aHx8MiE9PURbRS5wbGFjZSsrXSlyZXR1cm4hMTt2''@;'; put 'put ''YXIgTj1PKEQsRSk7aWYoITE9PT1OKXJldHVybiExO3ZhciBCPUQuc2xpY2UoRS5wbGFjZSxOK0UucGxhY2UpO2lmKEUucGxhY2UrPU4sMiE9PURbRS5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgWj1PKEQsRSk7aWYoITE9PT1afHxELmxlbmd0aCE9PVorRS5wbGFjZSlyZXR1cm4hMTt2YXIgWT1E''@;'; put 'put ''LnNsaWNlKEUucGxhY2UsWitFLnBsYWNlKTtpZigwPT09QlswXSl7aWYoISgxMjgmQlsxXSkpcmV0dXJuITE7Qj1CLnNsaWNlKDEpfWlmKDA9PT1ZWzBdKXtpZighKDEyOCZZWzFdKSlyZXR1cm4hMTtZPVkuc2xpY2UoMSl9cmV0dXJuIHRoaXMucj1uZXcgb2UoQiksdGhpcy5zPW5ldyBvZShZ''@;'; put 'put ''KSx0aGlzLnJlY292ZXJ5UGFyYW09bnVsbCwhMH0sc2UucHJvdG90eXBlLnRvREVSPWZ1bmN0aW9uKEQpe3ZhciBUPXRoaXMuci50b0FycmF5KCksRT10aGlzLnMudG9BcnJheSgpO2ZvcigxMjgmVFswXSYmKFQ9WzBdLmNvbmNhdChUKSksMTI4JkVbMF0mJihFPVswXS5jb25jYXQoRSkpLFQ9''@;'; put 'put ''SShUKSxFPUkoRSk7IShFWzBdfHwxMjgmRVsxXSk7KUU9RS5zbGljZSgxKTt2YXIgej1bMl07aih6LFQubGVuZ3RoKSwoej16LmNvbmNhdChUKSkucHVzaCgyKSxqKHosRS5sZW5ndGgpO3ZhciBOPXouY29uY2F0KEUpLEI9WzQ4XTtyZXR1cm4gaihCLE4ubGVuZ3RoKSxCPUIuY29uY2F0KE4p''@;'; put 'put ''LHguZW5jb2RlKEIsRCl9fSw4MzA0NTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTI1MjkpLHg9UigyMzQwMSksbT1SKDMxMzYpLHNlPW0uYXNzZXJ0LE09bS5wYXJzZUJ5dGVzLE89Uig4NzIyMiksST1SKDU0NTEpO2Z1bmN0aW9uIGooRyl7aWYoc2UoImVkMjU1MTkiPT09''@;'; put 'put ''Rywib25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhciIpLCEodGhpcyBpbnN0YW5jZW9mIGopKXJldHVybiBuZXcgaihHKTt0aGlzLmN1cnZlPUc9eFtHXS5jdXJ2ZSx0aGlzLmc9Ry5nLHRoaXMuZy5wcmVjb21wdXRlKEcubi5iaXRMZW5ndGgoKSsxKSx0aGlzLnBvaW50Q2xhc3M9Ry5w''@;'; put 'put ''b2ludCgpLmNvbnN0cnVjdG9yLHRoaXMuZW5jb2RpbmdMZW5ndGg9TWF0aC5jZWlsKEcubi5iaXRMZW5ndGgoKS84KSx0aGlzLmhhc2g9b2Uuc2hhNTEyfVFlLmV4cG9ydHM9aixqLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKEQsVCl7RD1NKEQpO3ZhciBFPXRoaXMua2V5RnJvbVNlY3JldChU''@;'; put 'put ''KSx6PXRoaXMuaGFzaEludChFLm1lc3NhZ2VQcmVmaXgoKSxEKSxOPXRoaXMuZy5tdWwoeiksQj10aGlzLmVuY29kZVBvaW50KE4pLFo9dGhpcy5oYXNoSW50KEIsRS5wdWJCeXRlcygpLEQpLm11bChFLnByaXYoKSksWT16LmFkZChaKS51bW9kKHRoaXMuY3VydmUubik7cmV0dXJuIHRoaXMu''@;'; put 'put ''bWFrZVNpZ25hdHVyZSh7UjpOLFM6WSxSZW5jb2RlZDpCfSl9LGoucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbihELFQsRSl7RD1NKEQpLFQ9dGhpcy5tYWtlU2lnbmF0dXJlKFQpO3ZhciB6PXRoaXMua2V5RnJvbVB1YmxpYyhFKSxOPXRoaXMuaGFzaEludChULlJlbmNvZGVkKCksei5wdWJC''@;'; put 'put ''eXRlcygpLEQpLEI9dGhpcy5nLm11bChULlMoKSk7cmV0dXJuIFQuUigpLmFkZCh6LnB1YigpLm11bChOKSkuZXEoQil9LGoucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIEQ9dGhpcy5oYXNoKCksVD0wO1Q8YXJndW1lbnRzLmxlbmd0aDtUKyspRC51cGRhdGUoYXJndW1l''@;'; put 'put ''bnRzW1RdKTtyZXR1cm4gbS5pbnRGcm9tTEUoRC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfSxqLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKEQpe3JldHVybiBPLmZyb21QdWJsaWModGhpcyxEKX0sai5wcm90b3R5cGUua2V5RnJvbVNlY3JldD1mdW5jdGlvbihEKXty''@;'; put 'put ''ZXR1cm4gTy5mcm9tU2VjcmV0KHRoaXMsRCl9LGoucHJvdG90eXBlLm1ha2VTaWduYXR1cmU9ZnVuY3Rpb24oRCl7cmV0dXJuIEQgaW5zdGFuY2VvZiBJP0Q6bmV3IEkodGhpcyxEKX0sai5wcm90b3R5cGUuZW5jb2RlUG9pbnQ9ZnVuY3Rpb24oRCl7dmFyIFQ9RC5nZXRZKCkudG9BcnJheSgi''@;'; put 'put ''bGUiLHRoaXMuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBUW3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PUQuZ2V0WCgpLmlzT2RkKCk/MTI4OjAsVH0sai5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oRCl7dmFyIFQ9KEQ9bS5wYXJzZUJ5dGVzKEQpKS5sZW5ndGgtMSxFPUQuc2xpY2Uo''@;'; put 'put ''MCxUKS5jb25jYXQoLTEyOSZEW1RdKSx6PSEhKDEyOCZEW1RdKSxOPW0uaW50RnJvbUxFKEUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoTix6KX0sai5wcm90b3R5cGUuZW5jb2RlSW50PWZ1bmN0aW9uKEQpe3JldHVybiBELnRvQXJyYXkoImxlIix0aGlzLmVuY29kaW5nTGVuZ3Ro''@;'; put 'put ''KX0sai5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKEQpe3JldHVybiBtLmludEZyb21MRShEKX0sai5wcm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbihEKXtyZXR1cm4gRCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LDg3MjIyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''b2U9UigzMTM2KSx4PW9lLmFzc2VydCxtPW9lLnBhcnNlQnl0ZXMsc2U9b2UuY2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gTShPLEkpe3RoaXMuZWRkc2E9Tyx0aGlzLl9zZWNyZXQ9bShJLnNlY3JldCksTy5pc1BvaW50KEkucHViKT90aGlzLl9wdWI9SS5wdWI6dGhpcy5fcHViQnl0ZXM9bShJ''@;'; put 'put ''LnB1Yil9TS5mcm9tUHVibGljPWZ1bmN0aW9uKEksail7cmV0dXJuIGogaW5zdGFuY2VvZiBNP2o6bmV3IE0oSSx7cHViOmp9KX0sTS5mcm9tU2VjcmV0PWZ1bmN0aW9uKEksail7cmV0dXJuIGogaW5zdGFuY2VvZiBNP2o6bmV3IE0oSSx7c2VjcmV0Omp9KX0sTS5wcm90b3R5cGUuc2VjcmV0''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlY3JldH0sc2UoTSwicHViQnl0ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSl9KSxzZShNLCJwdWIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3B1YkJ5dGVzP3RoaXMuZWRkc2EuZGVjb2Rl''@;'; put 'put ''UG9pbnQodGhpcy5fcHViQnl0ZXMpOnRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpfSksc2UoTSwicHJpdkJ5dGVzIixmdW5jdGlvbigpe3ZhciBJPXRoaXMuZWRkc2Esaj10aGlzLmhhc2goKSxHPUkuZW5jb2RpbmdMZW5ndGgtMSxEPWouc2xpY2UoMCxJLmVuY29kaW5nTGVuZ3RoKTty''@;'; put 'put ''ZXR1cm4gRFswXSY9MjQ4LERbR10mPTEyNyxEW0ddfD02NCxEfSksc2UoTSwicHJpdiIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSl9KSxzZShNLCJoYXNoIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUo''@;'; put 'put ''dGhpcy5zZWNyZXQoKSkuZGlnZXN0KCl9KSxzZShNLCJtZXNzYWdlUHJlZml4IixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLE0ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24oSSl7cmV0dXJuIHgodGhpcy5fc2VjcmV0LCJL''@;'; put 'put ''ZXlQYWlyIGNhbiBvbmx5IHZlcmlmeSIpLHRoaXMuZWRkc2Euc2lnbihJLHRoaXMpfSxNLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oSSxqKXtyZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkoSSxqLHRoaXMpfSxNLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24oSSl7cmV0dXJuIHgodGhp''@;'; put 'put ''cy5fc2VjcmV0LCJLZXlQYWlyIGlzIHB1YmxpYyBvbmx5Iiksb2UuZW5jb2RlKHRoaXMuc2VjcmV0KCksSSl9LE0ucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbihJKXtyZXR1cm4gb2UuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSxJKX0sUWUuZXhwb3J0cz1NfSw1NDUxOihRZSxNZSxSKT0+''@;'; put 'put ''eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig4ODcyMykseD1SKDMxMzYpLG09eC5hc3NlcnQsc2U9eC5jYWNoZWRQcm9wZXJ0eSxNPXgucGFyc2VCeXRlcztmdW5jdGlvbiBPKEksail7dGhpcy5lZGRzYT1JLCJvYmplY3QiIT10eXBlb2YgaiYmKGo9TShqKSksQXJyYXkuaXNBcnJheShqKSYmKGo9''@;'; put 'put ''e1I6ai5zbGljZSgwLEkuZW5jb2RpbmdMZW5ndGgpLFM6ai5zbGljZShJLmVuY29kaW5nTGVuZ3RoKX0pLG0oai5SJiZqLlMsIlNpZ25hdHVyZSB3aXRob3V0IFIgb3IgUyIpLEkuaXNQb2ludChqLlIpJiYodGhpcy5fUj1qLlIpLGouUyBpbnN0YW5jZW9mIG9lJiYodGhpcy5fUz1qLlMpLHRo''@;'; put 'put ''aXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkoai5SKT9qLlI6ai5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KGouUyk/ai5TOmouU2VuY29kZWR9c2UoTywiUyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pLHNl''@;'; put 'put ''KE8sIlIiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLHNlKE8sIlJlbmNvZGVkIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKX0pLHNlKE8sIlNlbmNvZGVkIixmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSxPLnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKX0sTy5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4geC5lbmNvZGUodGhp''@;'; put 'put ''cy50b0J5dGVzKCksImhleCIpLnRvVXBwZXJDYXNlKCl9LFFlLmV4cG9ydHM9T30sNTE0MTY6UWU9PntRZS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJm''@;'; put 'put ''N2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBh''@;'; put 'put ''Y2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlm''@;'; put 'put ''ZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYy''@;'; put 'put ''NDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2Jj''@;'; put 'put ''YjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcw''@;'; put 'put ''ZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4''@;'; put 'put ''ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsi''@;'; put 'put ''ZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZj''@;'; put 'put ''YTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFh''@;'; put 'put ''MzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAz''@;'; put 'put ''MTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNj''@;'; put 'put ''MDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0''@;'; put 'put ''M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5''@;'; put 'put ''YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUz''@;'; put 'put ''YTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVm''@;'; put 'put ''N2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1''@;'; put 'put ''NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQw''@;'; put 'put ''YmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRm''@;'; put 'put ''MGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIw''@;'; put 'put ''YjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2Qy''@;'; put 'put ''YjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsi''@;'; put 'put ''ZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4''@;'; put 'put ''NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUz''@;'; put 'put ''YzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4''@;'; put 'put ''MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5''@;'; put 'put ''MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2''@;'; put 'put ''YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYy''@;'; put 'put ''ZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIy''@;'; put 'put ''YTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRi''@;'; put 'put ''M2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEz''@;'; put 'put ''MzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUx''@;'; put 'put ''ZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2Jm''@;'; put 'put ''Yzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0''@;'; put 'put ''ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1''@;'; put 'put ''MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjky''@;'; put 'put ''ODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1''@;'; put 'put ''NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyIl0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYw''@;'; put 'put ''ODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJj''@;'; put 'put ''NjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdh''@;'; put 'put ''NTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBj''@;'; put 'put ''YmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3''@;'; put 'put ''ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4''@;'; put 'put ''NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5''@;'; put 'put ''NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRj''@;'; put 'put ''YzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1''@;'; put 'put ''N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJi''@;'; put 'put ''NTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5''@;'; put 'put ''MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQy''@;'; put 'put ''YjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJi''@;'; put 'put ''YzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMy''@;'; put 'put ''ZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNj''@;'; put 'put ''YWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUw''@;'; put 'put ''MTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFl''@;'; put 'put ''NDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4''@;'; put 'put ''ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4''@;'; put 'put ''ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRj''@;'; put 'put ''MzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2''@;'; put 'put ''YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1''@;'; put 'put ''MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJk''@;'; put 'put ''ZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5''@;'; put 'put ''NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjVi''@;'; put 'put ''ZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5''@;'; put 'put ''MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0''@;'; put 'put ''YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1''@;'; put 'put ''ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUz''@;'; put 'put ''MzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5''@;'; put 'put ''YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIz''@;'; put 'put ''YzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1''@;'; put 'put ''ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRj''@;'; put 'put ''NjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJi''@;'; put 'put ''NTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVk''@;'; put 'put ''NDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3''@;'; put 'put ''MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYz''@;'; put 'put ''YjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3''@;'; put 'put ''NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0''@;'; put 'put ''MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAz''@;'; put 'put ''ZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2''@;'; put 'put ''ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5''@;'; put 'put ''NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJh''@;'; put 'put ''MzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIy''@;'; put 'put ''ZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMx''@;'; put 'put ''M2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhIiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3''@;'; put 'put ''YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4''@;'; put 'put ''Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTky''@;'; put 'put ''ZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRk''@;'; put 'put ''ZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2''@;'; put 'put ''Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2''@;'; put 'put ''MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4''@;'; put 'put ''NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExIl0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3''@;'; put 'put ''ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4''@;'; put 'put ''YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2''@;'; put 'put ''NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlk''@;'; put 'put ''ZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVl''@;'; put 'put ''ODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRi''@;'; put 'put ''NjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1''@;'; put 'put ''N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzIiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZk''@;'; put 'put ''MSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5''@;'; put 'put ''OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBm''@;'; put 'put ''ODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2Jl''@;'; put 'put ''NWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBl''@;'; put 'put ''NDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhj''@;'; put 'put ''OTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAw''@;'; put 'put ''MWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMiXSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5''@;'; put 'put ''YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMy''@;'; put 'put ''ODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRl''@;'; put 'put ''MDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZk''@;'; put 'put ''NDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5''@;'; put 'put ''MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYw''@;'; put 'put ''OWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZk''@;'; put 'put ''MzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwiM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJd''@;'; put 'put ''LFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFh''@;'; put 'put ''ZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRj''@;'; put 'put ''MGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYz''@;'; put 'put ''ZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAw''@;'; put 'put ''Y2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0''@;'; put 'put ''NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2Zm''@;'; put 'put ''M2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5''@;'; put 'put ''OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4''@;'; put 'put ''YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMx''@;'; put 'put ''ZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlm''@;'; put 'put ''NmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNl''@;'; put 'put ''NDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUz''@;'; put 'put ''NTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0''@;'; put 'put ''OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0''@;'; put 'put ''ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIy''@;'; put 'put ''MzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJm''@;'; put 'put ''NzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNh''@;'; put 'put ''NGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFl''@;'; put 'put ''MTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgx''@;'; put 'put ''MTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNi''@;'; put 'put ''YzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJm''@;'; put 'put ''NWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNk''@;'; put 'put ''MjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZi''@;'; put 'put ''OGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhk''@;'; put 'put ''ZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEz''@;'; put 'put ''YmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRj''@;'; put 'put ''MmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkw''@;'; put 'put ''Mjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsi''@;'; put 'put ''N2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5''@;'; put 'put ''MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3''@;'; put 'put ''OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJk''@;'; put 'put ''ZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIz''@;'; put 'put ''OTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRj''@;'; put 'put ''YWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJm''@;'; put 'put ''MTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5''@;'; put 'put ''NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzli''@;'; put 'put ''MTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNj''@;'; put 'put ''YjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFj''@;'; put 'put ''YTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2''@;'; put 'put ''YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQy''@;'; put 'put ''MmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYx''@;'; put 'put ''ZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsi''@;'; put 'put ''NzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5''@;'; put 'put ''YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3''@;'; put 'put ''NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcw''@;'; put 'put ''YjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNj''@;'; put 'put ''YTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQz''@;'; put 'put ''ZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSwzMTM2OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9''@;'; put 'put ''TWUseD1SKDg4NzIzKSxtPVIoMzkyMTApLHNlPVIoMjE4MzIpO29lLmFzc2VydD1tLG9lLnRvQXJyYXk9c2UudG9BcnJheSxvZS56ZXJvMj1zZS56ZXJvMixvZS50b0hleD1zZS50b0hleCxvZS5lbmNvZGU9c2UuZW5jb2RlLG9lLmdldE5BRj1mdW5jdGlvbiBNKEQsVCxFKXt2YXIgTix6PW5l''@;'; put 'put ''dyBBcnJheShNYXRoLm1heChELmJpdExlbmd0aCgpLEUpKzEpO2ZvcihOPTA7Tjx6Lmxlbmd0aDtOKz0xKXpbTl09MDt2YXIgQj0xPDxUKzEsWj1ELmNsb25lKCk7Zm9yKE49MDtOPHoubGVuZ3RoO04rKyl7dmFyIFksVT1aLmFuZGxuKEItMSk7Wi5pc09kZCgpP1ouaXN1Ym4oWT1VPihCPj4x''@;'; put 'put ''KS0xPyhCPj4xKS1VOlUpOlk9MCx6W05dPVksWi5pdXNocm4oMSl9cmV0dXJuIHp9LG9lLmdldEpTRj1mdW5jdGlvbiBPKEQsVCl7dmFyIEU9W1tdLFtdXTtEPUQuY2xvbmUoKSxUPVQuY2xvbmUoKTtmb3IodmFyIEIsej0wLE49MDtELmNtcG4oLXopPjB8fFQuY21wbigtTik+MDspe3ZhciBV''@;'; put 'put ''LHEsWj1ELmFuZGxuKDMpK3omMyxZPVQuYW5kbG4oMykrTiYzOzM9PT1aJiYoWj0tMSksMz09PVkmJihZPS0xKSxVPTEmWj8zIT0oQj1ELmFuZGxuKDcpK3omNykmJjUhPT1CfHwyIT09WT9aOi1aOjAsRVswXS5wdXNoKFUpLHE9MSZZPzMhPShCPVQuYW5kbG4oNykrTiY3KSYmNSE9PUJ8fDIh''@;'; put 'put ''PT1aP1k6LVk6MCxFWzFdLnB1c2gocSksMip6PT09VSsxJiYoej0xLXopLDIqTj09PXErMSYmKE49MS1OKSxELml1c2hybigxKSxULml1c2hybigxKX1yZXR1cm4gRX0sb2UuY2FjaGVkUHJvcGVydHk9ZnVuY3Rpb24gSShELFQsRSl7dmFyIHo9Il8iK1Q7RC5wcm90b3R5cGVbVF09ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1t6XT90aGlzW3pdOnRoaXNbel09RS5jYWxsKHRoaXMpfX0sb2UucGFyc2VCeXRlcz1mdW5jdGlvbiBqKEQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgRD9vZS50b0FycmF5KEQsImhleCIpOkR9LG9lLmludEZyb21MRT1mdW5jdGlvbiBHKEQpe3Jl''@;'; put 'put ''dHVybiBuZXcgeChELCJoZXgiLCJsZSIpfX0sODg3MjM6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lLHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKFcsYil7aWYoIVcpdGhyb3cgbmV3IEVycm9yKGJ8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gc2UoVyxiKXtXLnN1cGVy''@;'; put 'put ''Xz1iO3ZhciBBPWZ1bmN0aW9uKCl7fTtBLnByb3RvdHlwZT1iLnByb3RvdHlwZSxXLnByb3RvdHlwZT1uZXcgQSxXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XfWZ1bmN0aW9uIE0oVyxiLEEpe2lmKE0uaXNCTihXKSlyZXR1cm4gVzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRo''@;'; put 'put ''aXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCxudWxsIT09VyYmKCgibGUiPT09Ynx8ImJlIj09PWIpJiYoQT1iLGI9MTApLHRoaXMuX2luaXQoV3x8MCxifHwxMCxBfHwiYmUiKSl9dmFyIE87Im9iamVjdCI9PXR5cGVvZiBvZT9vZS5leHBvcnRzPU06eC5CTj1NLE0uQk49TSxNLndvcmRTaXpl''@;'; put 'put ''PTI2O3RyeXtPPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LkJ1ZmZlcjwidSI/d2luZG93LkJ1ZmZlcjpSKDc5MzY4KS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIEkoVyxiKXt2YXIgQT1XLmNoYXJDb2RlQXQoYik7cmV0dXJuIEE+PTY1JiZBPD03MD9BLTU1OkE+PTk3JiZBPD0x''@;'; put 'put ''MDI/QS04NzpBLTQ4JjE1fWZ1bmN0aW9uIGooVyxiLEEpe3ZhciBGPUkoVyxBKTtyZXR1cm4gQS0xPj1iJiYoRnw9SShXLEEtMSk8PDQpLEZ9ZnVuY3Rpb24gRyhXLGIsQSxGKXtmb3IodmFyIEg9MCxnPU1hdGgubWluKFcubGVuZ3RoLEEpLEM9YjtDPGc7QysrKXt2YXIgaz1XLmNoYXJDb2Rl''@;'; put 'put ''QXQoQyktNDg7SCo9RixIKz1rPj00OT9rLTQ5KzEwOms+PTE3P2stMTcrMTA6a31yZXR1cm4gSH1NLmlzQk49ZnVuY3Rpb24oYil7cmV0dXJuIGIgaW5zdGFuY2VvZiBNfHxudWxsIT09YiYmIm9iamVjdCI9PXR5cGVvZiBiJiZiLmNvbnN0cnVjdG9yLndvcmRTaXplPT09TS53b3JkU2l6ZSYm''@;'; put 'put ''QXJyYXkuaXNBcnJheShiLndvcmRzKX0sTS5tYXg9ZnVuY3Rpb24oYixBKXtyZXR1cm4gYi5jbXAoQSk+MD9iOkF9LE0ubWluPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIGIuY21wKEEpPDA/YjpBfSxNLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihiLEEsRil7aWYoIm51bWJlciI9PXR5cGVvZiBi''@;'; put 'put ''KXJldHVybiB0aGlzLl9pbml0TnVtYmVyKGIsQSxGKTtpZigib2JqZWN0Ij09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXRBcnJheShiLEEsRik7ImhleCI9PT1BJiYoQT0xNiksbShBPT09KDB8QSkmJkE+PTImJkE8PTM2KTt2YXIgSD0wOyItIj09PShiPWIudG9TdHJpbmcoKS5yZXBsYWNl''@;'; put 'put ''KC9ccysvZywiIikpWzBdJiYoSCsrLHRoaXMubmVnYXRpdmU9MSksSDxiLmxlbmd0aCYmKDE2PT09QT90aGlzLl9wYXJzZUhleChiLEgsRik6KHRoaXMuX3BhcnNlQmFzZShiLEEsSCksImxlIj09PUYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxBLEYpKSl9LE0ucHJvdG90eXBl''@;'; put 'put ''Ll9pbml0TnVtYmVyPWZ1bmN0aW9uKGIsQSxGKXtiPDAmJih0aGlzLm5lZ2F0aXZlPTEsYj0tYiksYjw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYl0sdGhpcy5sZW5ndGg9MSk6Yjw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcx''@;'; put 'put ''MDg4NjNdLHRoaXMubGVuZ3RoPTIpOihtKGI8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1GJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQSxGKX0sTS5wcm90b3R5cGUu''@;'; put 'put ''X2luaXRBcnJheT1mdW5jdGlvbihiLEEsRil7aWYobSgibnVtYmVyIj09dHlwZW9mIGIubGVuZ3RoKSxiLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChiLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJh''@;'; put 'put ''eSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBIPTA7SDx0aGlzLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT0wO3ZhciBnLEMsaz0wO2lmKCJiZSI9PT1GKWZvcihIPWIubGVuZ3RoLTEsZz0wO0g+PTA7SC09Myl0aGlzLndvcmRzW2ddfD0oQz1iW0hdfGJbSC0xXTw8OHxiW0gtMl08PDE2KTw8ayY2''@;'; put 'put ''NzEwODg2Myx0aGlzLndvcmRzW2crMV09Qz4+PjI2LWsmNjcxMDg4NjMsKGsrPTI0KT49MjYmJihrLT0yNixnKyspO2Vsc2UgaWYoImxlIj09PUYpZm9yKEg9MCxnPTA7SDxiLmxlbmd0aDtIKz0zKXRoaXMud29yZHNbZ118PShDPWJbSF18YltIKzFdPDw4fGJbSCsyXTw8MTYpPDxrJjY3MTA4''@;'; put 'put ''ODYzLHRoaXMud29yZHNbZysxXT1DPj4+MjYtayY2NzEwODg2Mywoays9MjQpPj0yNiYmKGstPTI2LGcrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGIsQSxGKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGIubGVuZ3RoLUEpLzYpLHRoaXMu''@;'; put 'put ''d29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEg9MDtIPHRoaXMubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPTA7dmFyIGssZz0wLEM9MDtpZigiYmUiPT09Rilmb3IoSD1iLmxlbmd0aC0xO0g+PUE7SC09MilrPWooYixBLEgpPDxnLHRoaXMud29yZHNbQ118PTY3MTA4ODYz''@;'; put 'put ''JmssZz49MTg/KGctPTE4LHRoaXMud29yZHNbQys9MV18PWs+Pj4yNik6Zys9ODtlbHNlIGZvcihIPShiLmxlbmd0aC1BKSUyPT0wP0ErMTpBO0g8Yi5sZW5ndGg7SCs9MilrPWooYixBLEgpPDxnLHRoaXMud29yZHNbQ118PTY3MTA4ODYzJmssZz49MTg/KGctPTE4LHRoaXMud29yZHNbQys9''@;'; put 'put ''MV18PWs+Pj4yNik6Zys9ODt0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oYixBLEYpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBIPTAsZz0xO2c8PTY3MTA4ODYzO2cqPUEpSCsrO0gtLSxnPWcvQXwwO2Zvcih2YXIgQz1iLmxlbmd0''@;'; put 'put ''aC1GLGs9QyVILF89TWF0aC5taW4oQyxDLWspK0YscD0wLHc9Rjt3PF87dys9SClwPUcoYix3LHcrSCxBKSx0aGlzLmltdWxuKGcpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApO2lmKDAhPT1rKXt2YXIgSz0xO2ZvcihwPUcoYix3LGIu''@;'; put 'put ''bGVuZ3RoLEEpLHc9MDt3PGs7dysrKUsqPUE7dGhpcy5pbXVsbihLKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKX10aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYil7Yi53b3Jkcz1uZXcgQXJyYXkodGhpcy5s''@;'; put 'put ''ZW5ndGgpO2Zvcih2YXIgQT0wO0E8dGhpcy5sZW5ndGg7QSsrKWIud29yZHNbQV09dGhpcy53b3Jkc1tBXTtiLmxlbmd0aD10aGlzLmxlbmd0aCxiLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsYi5yZWQ9dGhpcy5yZWR9LE0ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IE0o''@;'; put 'put ''bnVsbCk7cmV0dXJuIHRoaXMuY29weShiKSxifSxNLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8YjspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5n''@;'; put 'put ''dGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE0ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2''@;'; put 'put ''ZT0wKSx0aGlzfSxNLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBEPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMDAwMCJdLFQ9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sRT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3''@;'; put 'put ''MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEw''@;'; put 'put ''MzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBOKFcsYixBKXtBLm5lZ2F0aXZlPWIubmVnYXRpdmVeVy5uZWdhdGl2ZTt2YXIgRj1XLmxlbmd0aCtiLmxlbmd0aHwwO0EubGVuZ3RoPUYsRj1G''@;'; put 'put ''LTF8MDt2YXIgSD0wfFcud29yZHNbMF0sZz0wfGIud29yZHNbMF0sQz1IKmcsXz1DLzY3MTA4ODY0fDA7QS53b3Jkc1swXT02NzEwODg2MyZDO2Zvcih2YXIgcD0xO3A8RjtwKyspe2Zvcih2YXIgdz1fPj4+MjYsSz02NzEwODg2MyZfLHRlPU1hdGgubWluKHAsYi5sZW5ndGgtMSksY2U9TWF0''@;'; put 'put ''aC5tYXgoMCxwLVcubGVuZ3RoKzEpO2NlPD10ZTtjZSsrKXcrPShDPShIPTB8Vy53b3Jkc1twLWNlfDBdKSooZz0wfGIud29yZHNbY2VdKStLKS82NzEwODg2NHwwLEs9NjcxMDg4NjMmQztBLndvcmRzW3BdPTB8SyxfPTB8d31yZXR1cm4gMCE9PV8/QS53b3Jkc1twXT0wfF86QS5sZW5ndGgt''@;'; put 'put ''LSxBLnN0cmlwKCl9TS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oYixBKXt2YXIgRjtpZihBPTB8QXx8MSwxNj09PShiPWJ8fDEwKXx8ImhleCI9PT1iKXtGPSIiO2Zvcih2YXIgSD0wLGc9MCxDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBrPXRoaXMud29yZHNbQ10sXz0oMTY3Nzcy''@;'; put 'put ''MTUmKGs8PEh8ZykpLnRvU3RyaW5nKDE2KTtGPTAhPShnPWs+Pj4yNC1IJjE2Nzc3MjE1KXx8QyE9PXRoaXMubGVuZ3RoLTE/RFs2LV8ubGVuZ3RoXStfK0Y6XytGLChIKz0yKT49MjYmJihILT0yNixDLS0pfWZvcigwIT09ZyYmKEY9Zy50b1N0cmluZygxNikrRik7Ri5sZW5ndGglQSE9MDsp''@;'; put 'put ''Rj0iMCIrRjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfWlmKGI9PT0oMHxiKSYmYj49MiYmYjw9MzYpe3ZhciBwPVRbYl0sdz1FW2JdO0Y9IiI7dmFyIEs9dGhpcy5jbG9uZSgpO2ZvcihLLm5lZ2F0aXZlPTA7IUsuaXNaZXJvKCk7KXt2YXIgdGU9Sy5tb2RuKHcpLnRv''@;'; put 'put ''U3RyaW5nKGIpO0Y9KEs9Sy5pZGl2bih3KSkuaXNaZXJvKCk/dGUrRjpEW3AtdGUubGVuZ3RoXSt0ZStGfWZvcih0aGlzLmlzWmVybygpJiYoRj0iMCIrRik7Ri5sZW5ndGglQSE9MDspRj0iMCIrRjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfW0oITEsIkJhc2Ugc2hv''@;'; put 'put ''dWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sTS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Yis9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2Ir''@;'; put 'put ''PTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZtKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tYjpifSxNLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gdGhpcy50b1N0cmluZygxNil9LE0ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIG0odHlwZW9mIE88InUiKSx0aGlzLnRvQXJyYXlMaWtlKE8sYixBKX0sTS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFy''@;'; put 'put ''cmF5LGIsQSl9LE0ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGIsQSxGKXt2YXIgSD10aGlzLmJ5dGVMZW5ndGgoKSxnPUZ8fE1hdGgubWF4KDEsSCk7bShIPD1nLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbShnPjAsIlJlcXVlc3RlZCBhcnJheSBs''@;'; put 'put ''ZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgXyxwLEM9ImxlIj09PUEsaz1uZXcgYihnKSx3PXRoaXMuY2xvbmUoKTtpZihDKXtmb3IocD0wOyF3LmlzWmVybygpO3ArKylfPXcuYW5kbG4oMjU1KSx3Lml1c2hybig4KSxrW3BdPV87Zm9yKDtwPGc7cCsrKWtbcF09MH1lbHNle2Zvcihw''@;'; put 'put ''PTA7cDxnLUg7cCsrKWtbcF09MDtmb3IocD0wOyF3LmlzWmVybygpO3ArKylfPXcuYW5kbG4oMjU1KSx3Lml1c2hybig4KSxrW2ctcC0xXT1ffXJldHVybiBrfSxNLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oYil7cmV0dXJuIDMyLU1hdGguY2x6MzIoYil9OmZ1''@;'; put 'put ''bmN0aW9uKGIpe3ZhciBBPWIsRj0wO3JldHVybiBBPj00MDk2JiYoRis9MTMsQT4+Pj0xMyksQT49NjQmJihGKz03LEE+Pj49NyksQT49OCYmKEYrPTQsQT4+Pj00KSxBPj0yJiYoRis9MixBPj4+PTIpLEYrQX0sTS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGIpe2lmKDA9PT1iKXJl''@;'; put 'put ''dHVybiAyNjt2YXIgQT1iLEY9MDtyZXR1cm4gODE5MSZBfHwoRis9MTMsQT4+Pj0xMyksMTI3JkF8fChGKz03LEE+Pj49NyksMTUmQXx8KEYrPTQsQT4+Pj00KSwzJkF8fChGKz0yLEE+Pj49MiksMSZBfHxGKyssRn0sTS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIEE9dGhp''@;'; put 'put ''cy5fY291bnRCaXRzKHRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrQX0sTS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgYj0wLEE9MDtBPHRoaXMubGVuZ3RoO0ErKyl7dmFy''@;'; put 'put ''IEY9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tBXSk7aWYoYis9RiwyNiE9PUYpYnJlYWt9cmV0dXJuIGJ9LE0ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE0ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihi''@;'; put 'put ''KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihiKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LE0ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRlc3RuKGItMSk/dGhpcy5ub3RuKGIpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25l''@;'; put 'put ''KCl9LE0ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxNLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sTS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwo''@;'; put 'put ''dGhpcy5uZWdhdGl2ZV49MSksdGhpc30sTS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGIubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBBPTA7QTxiLmxlbmd0aDtBKyspdGhpcy53b3Jkc1tBXT10aGlzLndvcmRzW0FdfGIu''@;'; put 'put ''d29yZHNbQV07cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGIpe3JldHVybiBtKCEodGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxNLnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/''@;'; put 'put ''dGhpcy5jbG9uZSgpLmlvcihiKTpiLmNsb25lKCkuaW9yKHRoaXMpfSxNLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxNLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlv''@;'; put 'put ''bihiKXt2YXIgQTtBPXRoaXMubGVuZ3RoPmIubGVuZ3RoP2I6dGhpcztmb3IodmFyIEY9MDtGPEEubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXRoaXMud29yZHNbRl0mYi53b3Jkc1tGXTtyZXR1cm4gdGhpcy5sZW5ndGg9QS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pYW5k''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiBtKCEodGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChiKX0sTS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChiKTpiLmNsb25lKCkuaWFuZCh0aGlzKX0s''@;'; put 'put ''TS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGIpOmIuY2xvbmUoKS5pdWFuZCh0aGlzKX0sTS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oYil7dmFyIEEsRjt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oQT10''@;'; put 'put ''aGlzLEY9Yik6KEE9YixGPXRoaXMpO2Zvcih2YXIgSD0wO0g8Ri5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09QS53b3Jkc1tIXV5GLndvcmRzW0hdO2lmKHRoaXMhPT1BKWZvcig7SDxBLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT1BLndvcmRzW0hdO3JldHVybiB0aGlzLmxlbmd0aD1BLmxl''@;'; put 'put ''bmd0aCx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1eG9yKGIpfSxNLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xv''@;'; put 'put ''bmUoKS5peG9yKGIpOmIuY2xvbmUoKS5peG9yKHRoaXMpfSxNLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoYik6Yi5jbG9uZSgpLml1eG9yKHRoaXMpfSxNLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihi''@;'; put 'put ''KXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEE9MHxNYXRoLmNlaWwoYi8yNiksRj1iJTI2O3RoaXMuX2V4cGFuZChBKSxGPjAmJkEtLTtmb3IodmFyIEg9MDtIPEE7SCsrKXRoaXMud29yZHNbSF09NjcxMDg4NjMmfnRoaXMud29yZHNbSF07cmV0dXJuIEY+MCYmKHRoaXMud29y''@;'; put 'put ''ZHNbSF09fnRoaXMud29yZHNbSF0mNjcxMDg4NjM+PjI2LUYpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGIpfSxNLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGIsQSl7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+''@;'; put 'put ''PTApO3ZhciBGPWIvMjZ8MCxIPWIlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl09QT90aGlzLndvcmRzW0ZdfDE8PEg6dGhpcy53b3Jkc1tGXSZ+KDE8PEgpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihiKXt2YXIgQSxGLEg7aWYoMCE9''@;'; put 'put ''PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsQT10aGlzLmlzdWIoYiksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gYi5uZWdhdGl2ZT0wLEE9dGhp''@;'; put 'put ''cy5pc3ViKGIpLGIubmVnYXRpdmU9MSxBLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhGPXRoaXMsSD1iKTooRj1iLEg9dGhpcyk7Zm9yKHZhciBnPTAsQz0wO0M8SC5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKEE9KDB8Ri53b3Jkc1tDXSkrKDB8SC53b3Jk''@;'; put 'put ''c1tDXSkrZyksZz1BPj4+MjY7Zm9yKDswIT09ZyYmQzxGLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT02NzEwODg2MyYoQT0oMHxGLndvcmRzW0NdKStnKSxnPUE+Pj4yNjtpZih0aGlzLmxlbmd0aD1GLmxlbmd0aCwwIT09Zyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1nLHRoaXMubGVuZ3Ro''@;'; put 'put ''Kys7ZWxzZSBpZihGIT09dGhpcylmb3IoO0M8Ri5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109Ri53b3Jkc1tDXTtyZXR1cm4gdGhpc30sTS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIpe3ZhciBBO3JldHVybiAwIT09Yi5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGIubmVnYXRpdmU9''@;'; put 'put ''MCxBPXRoaXMuc3ViKGIpLGIubmVnYXRpdmVePTEsQSk6MD09PWIubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsQT1iLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsQSk6dGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoYik6Yi5jbG9u''@;'; put 'put ''ZSgpLmlhZGQodGhpcyl9LE0ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oYil7aWYoMCE9PWIubmVnYXRpdmUpe2IubmVnYXRpdmU9MDt2YXIgQT10aGlzLmlhZGQoYik7cmV0dXJuIGIubmVnYXRpdmU9MSxBLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5pYWRkKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBILGcsRj10aGlzLmNtcChiKTtpZigwPT09RilyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7Rj4wPyhIPXRoaXMsZz1iKTooSD1i''@;'; put 'put ''LGc9dGhpcyk7Zm9yKHZhciBDPTAsaz0wO2s8Zy5sZW5ndGg7aysrKUM9KEE9KDB8SC53b3Jkc1trXSktKDB8Zy53b3Jkc1trXSkrQyk+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmQTtmb3IoOzAhPT1DJiZrPEgubGVuZ3RoO2srKylDPShBPSgwfEgud29yZHNba10pK0MpPj4yNix0aGlz''@;'; put 'put ''LndvcmRzW2tdPTY3MTA4ODYzJkE7aWYoMD09PUMmJms8SC5sZW5ndGgmJkghPT10aGlzKWZvcig7azxILmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT1ILndvcmRzW2tdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxrKSxIIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9''@;'; put 'put ''MSksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGIpfTt2YXIgQj1mdW5jdGlvbihiLEEsRil7dmFyIF8scCx3LEg9Yi53b3JkcyxnPUEud29yZHMsQz1GLndvcmRzLGs9MCxLPTB8SFswXSx0ZT04MTkxJkssY2U9Sz4+''@;'; put 'put ''PjEzLGhlPTB8SFsxXSxTZT04MTkxJmhlLExlPWhlPj4+MTMsSGU9MHxIWzJdLHhlPTgxOTEmSGUsRGU9SGU+Pj4xMyxCZT0wfEhbM10sR2U9ODE5MSZCZSxVZT1CZT4+PjEzLHFlPTB8SFs0XSxvdD04MTkxJnFlLEZlPXFlPj4+MTMsd2U9MHxIWzVdLEVlPTgxOTEmd2UsSWU9d2U+Pj4xMyxY''@;'; put 'put ''ZT0wfEhbNl0sdHQ9ODE5MSZYZSxaZT1YZT4+PjEzLGN0PTB8SFs3XSxrZT04MTkxJmN0LEFlPWN0Pj4+MTMsamU9MHxIWzhdLGl0PTgxOTEmamUsc3Q9amU+Pj4xMyx4dD0wfEhbOV0sRnQ9ODE5MSZ4dCxPdD14dD4+PjEzLEt0PTB8Z1swXSxibj04MTkxJkt0LEJ0PUt0Pj4+MTMseW49MHxn''@;'; put 'put ''WzFdLE5uPTgxOTEmeW4sbm49eW4+Pj4xMyxHbj0wfGdbMl0sWW49ODE5MSZHbixmdD1Hbj4+PjEzLGRuPTB8Z1szXSxobj04MTkxJmRuLHd0PWRuPj4+MTMsanQ9MHxnWzRdLG10PTgxOTEmanQsSHQ9anQ+Pj4xMyxwbj0wfGdbNV0sbnQ9ODE5MSZwbixFdD1wbj4+PjEzLGVuPTB8Z1s2XSxU''@;'; put 'put ''dD04MTkxJmVuLHl0PWVuPj4+MTMsJHQ9MHxnWzddLHhuPTgxOTEmJHQsenQ9JHQ+Pj4xMyxfbj0wfGdbOF0sT249ODE5MSZfbixybj1fbj4+PjEzLFBuPTB8Z1s5XSxDbj04MTkxJlBuLFh0PVBuPj4+MTM7Ri5uZWdhdGl2ZT1iLm5lZ2F0aXZlXkEubmVnYXRpdmUsRi5sZW5ndGg9MTk7dmFy''@;'; put 'put ''IEpuPShrKyhfPU1hdGguaW11bCh0ZSxibikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwodGUsQnQpKStNYXRoLmltdWwoY2UsYm4pfDApKTw8MTMpfDA7az0oKHc9TWF0aC5pbXVsKGNlLEJ0KSkrKHA+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLF89TWF0aC5pbXVsKFNl''@;'; put 'put ''LGJuKSxwPShwPU1hdGguaW11bChTZSxCdCkpK01hdGguaW11bChMZSxibil8MCx3PU1hdGguaW11bChMZSxCdCk7dmFyIHhpPShrKyhfPV8rTWF0aC5pbXVsKHRlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsbm4pfDApK01hdGguaW11bChjZSxObil8MCkpPDwxMyl8''@;'; put 'put ''MDtrPSgodz13K01hdGguaW11bChjZSxubil8MCkrKHA+Pj4xMyl8MCkrKHhpPj4+MjYpfDAseGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKHhlLGJuKSxwPShwPU1hdGguaW11bCh4ZSxCdCkpK01hdGguaW11bChEZSxibil8MCx3PU1hdGguaW11bChEZSxCdCksXz1fK01hdGguaW11bChTZSxO''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKFNlLG5uKXwwKStNYXRoLmltdWwoTGUsTm4pfDAsdz13K01hdGguaW11bChMZSxubil8MDt2YXIgYW49KGsrKF89XytNYXRoLmltdWwodGUsWW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxmdCl8MCkrTWF0aC5pbXVsKGNlLFluKXww''@;'; put 'put ''KSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLGZ0KXwwKSsocD4+PjEzKXwwKSsoYW4+Pj4yNil8MCxhbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoR2UsYm4pLHA9KHA9TWF0aC5pbXVsKEdlLEJ0KSkrTWF0aC5pbXVsKFVlLGJuKXwwLHc9TWF0aC5pbXVsKFVlLEJ0KSxfPV8rTWF0aC5p''@;'; put 'put ''bXVsKHhlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsbm4pfDApK01hdGguaW11bChEZSxObil8MCx3PXcrTWF0aC5pbXVsKERlLG5uKXwwLF89XytNYXRoLmltdWwoU2UsWW4pfDAscD0ocD1wK01hdGguaW11bChTZSxmdCl8MCkrTWF0aC5pbXVsKExlLFluKXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''TGUsZnQpfDA7dmFyIHRuPShrKyhfPV8rTWF0aC5pbXVsKHRlLGhuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsd3QpfDApK01hdGguaW11bChjZSxobil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx3dCl8MCkrKHA+Pj4xMyl8MCkrKHRuPj4+MjYpfDAsdG4m''@;'; put 'put ''PTY3MTA4ODYzLF89TWF0aC5pbXVsKG90LGJuKSxwPShwPU1hdGguaW11bChvdCxCdCkpK01hdGguaW11bChGZSxibil8MCx3PU1hdGguaW11bChGZSxCdCksXz1fK01hdGguaW11bChHZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEdlLG5uKXwwKStNYXRoLmltdWwoVWUsTm4pfDAsdz13K01h''@;'; put 'put ''dGguaW11bChVZSxubil8MCxfPV8rTWF0aC5pbXVsKHhlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsZnQpfDApK01hdGguaW11bChEZSxZbil8MCx3PXcrTWF0aC5pbXVsKERlLGZ0KXwwLF89XytNYXRoLmltdWwoU2UsaG4pfDAscD0ocD1wK01hdGguaW11bChTZSx3dCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKExlLGhuKXwwLHc9dytNYXRoLmltdWwoTGUsd3QpfDA7dmFyIHVpPShrKyhfPV8rTWF0aC5pbXVsKHRlLG10KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsSHQpfDApK01hdGguaW11bChjZSxtdCl8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSxIdCl8MCkr''@;'; put 'put ''KHA+Pj4xMyl8MCkrKHVpPj4+MjYpfDAsdWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEVlLGJuKSxwPShwPU1hdGguaW11bChFZSxCdCkpK01hdGguaW11bChJZSxibil8MCx3PU1hdGguaW11bChJZSxCdCksXz1fK01hdGguaW11bChvdCxObil8MCxwPShwPXArTWF0aC5pbXVsKG90LG5uKXww''@;'; put 'put ''KStNYXRoLmltdWwoRmUsTm4pfDAsdz13K01hdGguaW11bChGZSxubil8MCxfPV8rTWF0aC5pbXVsKEdlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsZnQpfDApK01hdGguaW11bChVZSxZbil8MCx3PXcrTWF0aC5pbXVsKFVlLGZ0KXwwLF89XytNYXRoLmltdWwoeGUsaG4pfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bCh4ZSx3dCl8MCkrTWF0aC5pbXVsKERlLGhuKXwwLHc9dytNYXRoLmltdWwoRGUsd3QpfDAsXz1fK01hdGguaW11bChTZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLEh0KXwwKStNYXRoLmltdWwoTGUsbXQpfDAsdz13K01hdGguaW11bChMZSxIdCl8MDt2YXIgQXI9KGsr''@;'; put 'put ''KF89XytNYXRoLmltdWwodGUsbnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxFdCl8MCkrTWF0aC5pbXVsKGNlLG50KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLEV0KXwwKSsocD4+PjEzKXwwKSsoQXI+Pj4yNil8MCxBciY9NjcxMDg4NjMsXz1NYXRoLmlt''@;'; put 'put ''dWwodHQsYm4pLHA9KHA9TWF0aC5pbXVsKHR0LEJ0KSkrTWF0aC5pbXVsKFplLGJuKXwwLHc9TWF0aC5pbXVsKFplLEJ0KSxfPV8rTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsbm4pfDApK01hdGguaW11bChJZSxObil8MCx3PXcrTWF0aC5pbXVsKEllLG5uKXwwLF89''@;'; put 'put ''XytNYXRoLmltdWwob3QsWW4pfDAscD0ocD1wK01hdGguaW11bChvdCxmdCl8MCkrTWF0aC5pbXVsKEZlLFluKXwwLHc9dytNYXRoLmltdWwoRmUsZnQpfDAsXz1fK01hdGguaW11bChHZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHd0KXwwKStNYXRoLmltdWwoVWUsaG4pfDAsdz13K01h''@;'; put 'put ''dGguaW11bChVZSx3dCl8MCxfPV8rTWF0aC5pbXVsKHhlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsSHQpfDApK01hdGguaW11bChEZSxtdCl8MCx3PXcrTWF0aC5pbXVsKERlLEh0KXwwLF89XytNYXRoLmltdWwoU2UsbnQpfDAscD0ocD1wK01hdGguaW11bChTZSxFdCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKExlLG50KXwwLHc9dytNYXRoLmltdWwoTGUsRXQpfDA7dmFyIGhyPShrKyhfPV8rTWF0aC5pbXVsKHRlLFR0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUseXQpfDApK01hdGguaW11bChjZSxUdCl8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx5dCl8MCkr''@;'; put 'put ''KHA+Pj4xMyl8MCkrKGhyPj4+MjYpfDAsaHImPTY3MTA4ODYzLF89TWF0aC5pbXVsKGtlLGJuKSxwPShwPU1hdGguaW11bChrZSxCdCkpK01hdGguaW11bChBZSxibil8MCx3PU1hdGguaW11bChBZSxCdCksXz1fK01hdGguaW11bCh0dCxObil8MCxwPShwPXArTWF0aC5pbXVsKHR0LG5uKXww''@;'; put 'put ''KStNYXRoLmltdWwoWmUsTm4pfDAsdz13K01hdGguaW11bChaZSxubil8MCxfPV8rTWF0aC5pbXVsKEVlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsZnQpfDApK01hdGguaW11bChJZSxZbil8MCx3PXcrTWF0aC5pbXVsKEllLGZ0KXwwLF89XytNYXRoLmltdWwob3QsaG4pfDAscD0ocD1w''@;'; put 'put ''K01hdGguaW11bChvdCx3dCl8MCkrTWF0aC5pbXVsKEZlLGhuKXwwLHc9dytNYXRoLmltdWwoRmUsd3QpfDAsXz1fK01hdGguaW11bChHZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKEdlLEh0KXwwKStNYXRoLmltdWwoVWUsbXQpfDAsdz13K01hdGguaW11bChVZSxIdCl8MCxfPV8rTWF0aC5p''@;'; put 'put ''bXVsKHhlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsRXQpfDApK01hdGguaW11bChEZSxudCl8MCx3PXcrTWF0aC5pbXVsKERlLEV0KXwwLF89XytNYXRoLmltdWwoU2UsVHQpfDAscD0ocD1wK01hdGguaW11bChTZSx5dCl8MCkrTWF0aC5pbXVsKExlLFR0KXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''TGUseXQpfDA7dmFyIGRpPShrKyhfPV8rTWF0aC5pbXVsKHRlLHhuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsenQpfDApK01hdGguaW11bChjZSx4bil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx6dCl8MCkrKHA+Pj4xMyl8MCkrKGRpPj4+MjYpfDAsZGkm''@;'; put 'put ''PTY3MTA4ODYzLF89TWF0aC5pbXVsKGl0LGJuKSxwPShwPU1hdGguaW11bChpdCxCdCkpK01hdGguaW11bChzdCxibil8MCx3PU1hdGguaW11bChzdCxCdCksXz1fK01hdGguaW11bChrZSxObil8MCxwPShwPXArTWF0aC5pbXVsKGtlLG5uKXwwKStNYXRoLmltdWwoQWUsTm4pfDAsdz13K01h''@;'; put 'put ''dGguaW11bChBZSxubil8MCxfPV8rTWF0aC5pbXVsKHR0LFluKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsZnQpfDApK01hdGguaW11bChaZSxZbil8MCx3PXcrTWF0aC5pbXVsKFplLGZ0KXwwLF89XytNYXRoLmltdWwoRWUsaG4pfDAscD0ocD1wK01hdGguaW11bChFZSx3dCl8MCkrTWF0aC5p''@;'; put 'put ''bXVsKEllLGhuKXwwLHc9dytNYXRoLmltdWwoSWUsd3QpfDAsXz1fK01hdGguaW11bChvdCxtdCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEh0KXwwKStNYXRoLmltdWwoRmUsbXQpfDAsdz13K01hdGguaW11bChGZSxIdCl8MCxfPV8rTWF0aC5pbXVsKEdlLG50KXwwLHA9KHA9cCtNYXRoLmlt''@;'; put 'put ''dWwoR2UsRXQpfDApK01hdGguaW11bChVZSxudCl8MCx3PXcrTWF0aC5pbXVsKFVlLEV0KXwwLF89XytNYXRoLmltdWwoeGUsVHQpfDAscD0ocD1wK01hdGguaW11bCh4ZSx5dCl8MCkrTWF0aC5pbXVsKERlLFR0KXwwLHc9dytNYXRoLmltdWwoRGUseXQpfDAsXz1fK01hdGguaW11bChTZSx4''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHp0KXwwKStNYXRoLmltdWwoTGUseG4pfDAsdz13K01hdGguaW11bChMZSx6dCl8MDt2YXIgZmk9KGsrKF89XytNYXRoLmltdWwodGUsT24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxybil8MCkrTWF0aC5pbXVsKGNlLE9uKXww''@;'; put 'put ''KSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHJuKXwwKSsocD4+PjEzKXwwKSsoZmk+Pj4yNil8MCxmaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsYm4pLHA9KHA9TWF0aC5pbXVsKEZ0LEJ0KSkrTWF0aC5pbXVsKE90LGJuKXwwLHc9TWF0aC5pbXVsKE90LEJ0KSxfPV8rTWF0aC5p''@;'; put 'put ''bXVsKGl0LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsbm4pfDApK01hdGguaW11bChzdCxObil8MCx3PXcrTWF0aC5pbXVsKHN0LG5uKXwwLF89XytNYXRoLmltdWwoa2UsWW4pfDAscD0ocD1wK01hdGguaW11bChrZSxmdCl8MCkrTWF0aC5pbXVsKEFlLFluKXwwLHc9dytNYXRoLmltdWwo''@;'; put 'put ''QWUsZnQpfDAsXz1fK01hdGguaW11bCh0dCxobil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHd0KXwwKStNYXRoLmltdWwoWmUsaG4pfDAsdz13K01hdGguaW11bChaZSx3dCl8MCxfPV8rTWF0aC5pbXVsKEVlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSHQpfDApK01hdGguaW11bChJZSxt''@;'; put 'put ''dCl8MCx3PXcrTWF0aC5pbXVsKEllLEh0KXwwLF89XytNYXRoLmltdWwob3QsbnQpfDAscD0ocD1wK01hdGguaW11bChvdCxFdCl8MCkrTWF0aC5pbXVsKEZlLG50KXwwLHc9dytNYXRoLmltdWwoRmUsRXQpfDAsXz1fK01hdGguaW11bChHZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKEdlLHl0''@;'; put 'put ''KXwwKStNYXRoLmltdWwoVWUsVHQpfDAsdz13K01hdGguaW11bChVZSx5dCl8MCxfPV8rTWF0aC5pbXVsKHhlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsenQpfDApK01hdGguaW11bChEZSx4bil8MCx3PXcrTWF0aC5pbXVsKERlLHp0KXwwLF89XytNYXRoLmltdWwoU2UsT24pfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChTZSxybil8MCkrTWF0aC5pbXVsKExlLE9uKXwwLHc9dytNYXRoLmltdWwoTGUscm4pfDA7dmFyIGhvPShrKyhfPV8rTWF0aC5pbXVsKHRlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsWHQpfDApK01hdGguaW11bChjZSxDbil8MCkpPDwxMyl8''@;'; put 'put ''MDtrPSgodz13K01hdGguaW11bChjZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LE5uKSxwPShwPU1hdGguaW11bChGdCxubikpK01hdGguaW11bChPdCxObil8MCx3PU1hdGguaW11bChPdCxubiksXz1fK01hdGguaW11bChpdCxZ''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKGl0LGZ0KXwwKStNYXRoLmltdWwoc3QsWW4pfDAsdz13K01hdGguaW11bChzdCxmdCl8MCxfPV8rTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usd3QpfDApK01hdGguaW11bChBZSxobil8MCx3PXcrTWF0aC5pbXVsKEFlLHd0KXww''@;'; put 'put ''LF89XytNYXRoLmltdWwodHQsbXQpfDAscD0ocD1wK01hdGguaW11bCh0dCxIdCl8MCkrTWF0aC5pbXVsKFplLG10KXwwLHc9dytNYXRoLmltdWwoWmUsSHQpfDAsXz1fK01hdGguaW11bChFZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLEV0KXwwKStNYXRoLmltdWwoSWUsbnQpfDAsdz13''@;'; put 'put ''K01hdGguaW11bChJZSxFdCl8MCxfPV8rTWF0aC5pbXVsKG90LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QseXQpfDApK01hdGguaW11bChGZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEZlLHl0KXwwLF89XytNYXRoLmltdWwoR2UseG4pfDAscD0ocD1wK01hdGguaW11bChHZSx6dCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKFVlLHhuKXwwLHc9dytNYXRoLmltdWwoVWUsenQpfDAsXz1fK01hdGguaW11bCh4ZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKHhlLHJuKXwwKStNYXRoLmltdWwoRGUsT24pfDAsdz13K01hdGguaW11bChEZSxybil8MDt2YXIgYnI9KGsrKF89XytNYXRoLmltdWwoU2UsQ24pfDAp''@;'; put 'put ''fDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChTZSxYdCl8MCkrTWF0aC5pbXVsKExlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKExlLFh0KXwwKSsocD4+PjEzKXwwKSsoYnI+Pj4yNil8MCxiciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsWW4pLHA9KHA9TWF0aC5pbXVs''@;'; put 'put ''KEZ0LGZ0KSkrTWF0aC5pbXVsKE90LFluKXwwLHc9TWF0aC5pbXVsKE90LGZ0KSxfPV8rTWF0aC5pbXVsKGl0LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsd3QpfDApK01hdGguaW11bChzdCxobil8MCx3PXcrTWF0aC5pbXVsKHN0LHd0KXwwLF89XytNYXRoLmltdWwoa2UsbXQpfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChrZSxIdCl8MCkrTWF0aC5pbXVsKEFlLG10KXwwLHc9dytNYXRoLmltdWwoQWUsSHQpfDAsXz1fK01hdGguaW11bCh0dCxudCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LEV0KXwwKStNYXRoLmltdWwoWmUsbnQpfDAsdz13K01hdGguaW11bChaZSxFdCl8MCxfPV8rTWF0''@;'; put 'put ''aC5pbXVsKEVlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUseXQpfDApK01hdGguaW11bChJZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEllLHl0KXwwLF89XytNYXRoLmltdWwob3QseG4pfDAscD0ocD1wK01hdGguaW11bChvdCx6dCl8MCkrTWF0aC5pbXVsKEZlLHhuKXwwLHc9dytNYXRoLmlt''@;'; put 'put ''dWwoRmUsenQpfDAsXz1fK01hdGguaW11bChHZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHJuKXwwKStNYXRoLmltdWwoVWUsT24pfDAsdz13K01hdGguaW11bChVZSxybil8MDt2YXIgTGk9KGsrKF89XytNYXRoLmltdWwoeGUsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11''@;'; put 'put ''bCh4ZSxYdCl8MCkrTWF0aC5pbXVsKERlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKERlLFh0KXwwKSsocD4+PjEzKXwwKSsoTGk+Pj4yNil8MCxMaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsaG4pLHA9KHA9TWF0aC5pbXVsKEZ0LHd0KSkrTWF0aC5pbXVsKE90LGhuKXww''@;'; put 'put ''LHc9TWF0aC5pbXVsKE90LHd0KSxfPV8rTWF0aC5pbXVsKGl0LG10KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsSHQpfDApK01hdGguaW11bChzdCxtdCl8MCx3PXcrTWF0aC5pbXVsKHN0LEh0KXwwLF89XytNYXRoLmltdWwoa2UsbnQpfDAscD0ocD1wK01hdGguaW11bChrZSxFdCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEFlLG50KXwwLHc9dytNYXRoLmltdWwoQWUsRXQpfDAsXz1fK01hdGguaW11bCh0dCxUdCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LHl0KXwwKStNYXRoLmltdWwoWmUsVHQpfDAsdz13K01hdGguaW11bChaZSx5dCl8MCxfPV8rTWF0aC5pbXVsKEVlLHhuKXwwLHA9KHA9cCtNYXRo''@;'; put 'put ''LmltdWwoRWUsenQpfDApK01hdGguaW11bChJZSx4bil8MCx3PXcrTWF0aC5pbXVsKEllLHp0KXwwLF89XytNYXRoLmltdWwob3QsT24pfDAscD0ocD1wK01hdGguaW11bChvdCxybil8MCkrTWF0aC5pbXVsKEZlLE9uKXwwLHc9dytNYXRoLmltdWwoRmUscm4pfDA7dmFyIGxvPShrKyhfPV8r''@;'; put 'put ''TWF0aC5pbXVsKEdlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoR2UsWHQpfDApK01hdGguaW11bChVZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChVZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0''@;'; put 'put ''LG10KSxwPShwPU1hdGguaW11bChGdCxIdCkpK01hdGguaW11bChPdCxtdCl8MCx3PU1hdGguaW11bChPdCxIdCksXz1fK01hdGguaW11bChpdCxudCl8MCxwPShwPXArTWF0aC5pbXVsKGl0LEV0KXwwKStNYXRoLmltdWwoc3QsbnQpfDAsdz13K01hdGguaW11bChzdCxFdCl8MCxfPV8rTWF0''@;'; put 'put ''aC5pbXVsKGtlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoa2UseXQpfDApK01hdGguaW11bChBZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEFlLHl0KXwwLF89XytNYXRoLmltdWwodHQseG4pfDAscD0ocD1wK01hdGguaW11bCh0dCx6dCl8MCkrTWF0aC5pbXVsKFplLHhuKXwwLHc9dytNYXRoLmlt''@;'; put 'put ''dWwoWmUsenQpfDAsXz1fK01hdGguaW11bChFZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHJuKXwwKStNYXRoLmltdWwoSWUsT24pfDAsdz13K01hdGguaW11bChJZSxybil8MDt2YXIgVW49KGsrKF89XytNYXRoLmltdWwob3QsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11''@;'; put 'put ''bChvdCxYdCl8MCkrTWF0aC5pbXVsKEZlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKEZlLFh0KXwwKSsocD4+PjEzKXwwKSsoVW4+Pj4yNil8MCxVbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsbnQpLHA9KHA9TWF0aC5pbXVsKEZ0LEV0KSkrTWF0aC5pbXVsKE90LG50KXww''@;'; put 'put ''LHc9TWF0aC5pbXVsKE90LEV0KSxfPV8rTWF0aC5pbXVsKGl0LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQseXQpfDApK01hdGguaW11bChzdCxUdCl8MCx3PXcrTWF0aC5pbXVsKHN0LHl0KXwwLF89XytNYXRoLmltdWwoa2UseG4pfDAscD0ocD1wK01hdGguaW11bChrZSx6dCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEFlLHhuKXwwLHc9dytNYXRoLmltdWwoQWUsenQpfDAsXz1fK01hdGguaW11bCh0dCxPbil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHJuKXwwKStNYXRoLmltdWwoWmUsT24pfDAsdz13K01hdGguaW11bChaZSxybil8MDt2YXIgWGk9KGsrKF89XytNYXRoLmltdWwoRWUsQ24pfDAp''@;'; put 'put ''fDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChFZSxYdCl8MCkrTWF0aC5pbXVsKEllLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKEllLFh0KXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsVHQpLHA9KHA9TWF0aC5pbXVs''@;'; put 'put ''KEZ0LHl0KSkrTWF0aC5pbXVsKE90LFR0KXwwLHc9TWF0aC5pbXVsKE90LHl0KSxfPV8rTWF0aC5pbXVsKGl0LHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsenQpfDApK01hdGguaW11bChzdCx4bil8MCx3PXcrTWF0aC5pbXVsKHN0LHp0KXwwLF89XytNYXRoLmltdWwoa2UsT24pfDAscD0o''@;'; put 'put ''cD1wK01hdGguaW11bChrZSxybil8MCkrTWF0aC5pbXVsKEFlLE9uKXwwLHc9dytNYXRoLmltdWwoQWUscm4pfDA7dmFyIFFpPShrKyhfPV8rTWF0aC5pbXVsKHR0LENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodHQsWHQpfDApK01hdGguaW11bChaZSxDbil8MCkpPDwxMyl8''@;'; put 'put ''MDtrPSgodz13K01hdGguaW11bChaZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKFFpPj4+MjYpfDAsUWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LHhuKSxwPShwPU1hdGguaW11bChGdCx6dCkpK01hdGguaW11bChPdCx4bil8MCx3PU1hdGguaW11bChPdCx6dCksXz1fK01hdGguaW11bChpdCxP''@;'; put 'put ''bil8MCxwPShwPXArTWF0aC5pbXVsKGl0LHJuKXwwKStNYXRoLmltdWwoc3QsT24pfDAsdz13K01hdGguaW11bChzdCxybil8MDt2YXIgZm89KGsrKF89XytNYXRoLmltdWwoa2UsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChrZSxYdCl8MCkrTWF0aC5pbXVsKEFlLENuKXww''@;'; put 'put ''KSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKEFlLFh0KXwwKSsocD4+PjEzKXwwKSsoZm8+Pj4yNil8MCxmbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsT24pLHA9KHA9TWF0aC5pbXVsKEZ0LHJuKSkrTWF0aC5pbXVsKE90LE9uKXwwLHc9TWF0aC5pbXVsKE90LHJuKTt2YXIgdm89KGsr''@;'; put 'put ''KF89XytNYXRoLmltdWwoaXQsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChpdCxYdCl8MCkrTWF0aC5pbXVsKHN0LENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKHN0LFh0KXwwKSsocD4+PjEzKXwwKSsodm8+Pj4yNil8MCx2byY9NjcxMDg4NjM7dmFyIFJyPShr''@;'; put 'put ''KyhfPU1hdGguaW11bChGdCxDbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoRnQsWHQpKStNYXRoLmltdWwoT3QsQ24pfDApKTw8MTMpfDA7cmV0dXJuIGs9KCh3PU1hdGguaW11bChPdCxYdCkpKyhwPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxDWzBdPUpuLENbMV09''@;'; put 'put ''eGksQ1syXT1hbixDWzNdPXRuLENbNF09dWksQ1s1XT1BcixDWzZdPWhyLENbN109ZGksQ1s4XT1maSxDWzldPWhvLENbMTBdPWJyLENbMTFdPUxpLENbMTJdPWxvLENbMTNdPVVuLENbMTRdPVhpLENbMTVdPVFpLENbMTZdPWZvLENbMTddPXZvLENbMThdPVJyLDAhPT1rJiYoQ1sxOV09ayxG''@;'; put 'put ''Lmxlbmd0aCsrKSxGfTtmdW5jdGlvbiBZKFcsYixBKXtyZXR1cm4obmV3IFUpLm11bHAoVyxiLEEpfWZ1bmN0aW9uIFUoVyxiKXt0aGlzLng9Vyx0aGlzLnk9Yn1NYXRoLmltdWx8fChCPU4pLE0ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGIsQSl7dmFyIEYsSD10aGlzLmxlbmd0aCtiLmxl''@;'; put 'put ''bmd0aDtyZXR1cm4gRj0xMD09PXRoaXMubGVuZ3RoJiYxMD09PWIubGVuZ3RoP0IodGhpcyxiLEEpOkg8NjM/Tih0aGlzLGIsQSk6SDwxMDI0P2Z1bmN0aW9uIFooVyxiLEEpe0EubmVnYXRpdmU9Yi5uZWdhdGl2ZV5XLm5lZ2F0aXZlLEEubGVuZ3RoPVcubGVuZ3RoK2IubGVuZ3RoO2Zvcih2''@;'; put 'put ''YXIgRj0wLEg9MCxnPTA7ZzxBLmxlbmd0aC0xO2crKyl7dmFyIEM9SDtIPTA7Zm9yKHZhciBrPTY3MTA4ODYzJkYsXz1NYXRoLm1pbihnLGIubGVuZ3RoLTEpLHA9TWF0aC5tYXgoMCxnLVcubGVuZ3RoKzEpO3A8PV87cCsrKXt2YXIgY2U9KDB8Vy53b3Jkc1tnLXBdKSooMHxiLndvcmRzW3Bd''@;'; put 'put ''KSxoZT02NzEwODg2MyZjZTtrPTY3MTA4ODYzJihoZT1oZStrfDApLEgrPShDPShDPUMrKGNlLzY3MTA4ODY0fDApfDApKyhoZT4+PjI2KXwwKT4+PjI2LEMmPTY3MTA4ODYzfUEud29yZHNbZ109ayxGPUMsQz1IfXJldHVybiAwIT09Rj9BLndvcmRzW2ddPUY6QS5sZW5ndGgtLSxBLnN0cmlw''@;'; put 'put ''KCl9KHRoaXMsYixBKTpZKHRoaXMsYixBKSxGfSxVLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGIpe2Zvcih2YXIgQT1uZXcgQXJyYXkoYiksRj1NLnByb3RvdHlwZS5fY291bnRCaXRzKGIpLTEsSD0wO0g8YjtIKyspQVtIXT10aGlzLnJldkJpbihILEYsYik7cmV0dXJuIEF9LFUucHJv''@;'; put 'put ''dG90eXBlLnJldkJpbj1mdW5jdGlvbihiLEEsRil7aWYoMD09PWJ8fGI9PT1GLTEpcmV0dXJuIGI7Zm9yKHZhciBIPTAsZz0wO2c8QTtnKyspSHw9KDEmYik8PEEtZy0xLGI+Pj0xO3JldHVybiBIfSxVLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGIsQSxGLEgsZyxDKXtmb3IodmFyIGs9''@;'; put 'put ''MDtrPEM7aysrKUhba109QVtiW2tdXSxnW2tdPUZbYltrXV19LFUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihiLEEsRixILGcsQyl7dGhpcy5wZXJtdXRlKEMsYixBLEYsSCxnKTtmb3IodmFyIGs9MTtrPGc7azw8PTEpZm9yKHZhciBfPWs8PDEscD1NYXRoLmNvcygyKk1hdGguUEkv''@;'; put 'put ''Xyksdz1NYXRoLnNpbigyKk1hdGguUEkvXyksSz0wO0s8ZztLKz1fKWZvcih2YXIgdGU9cCxjZT13LGhlPTA7aGU8aztoZSsrKXt2YXIgU2U9RltLK2hlXSxMZT1IW0sraGVdLEhlPUZbSytoZStrXSx4ZT1IW0sraGUra10sRGU9dGUqSGUtY2UqeGU7eGU9dGUqeGUrY2UqSGUsRltLK2hlXT1T''@;'; put 'put ''ZSsoSGU9RGUpLEhbSytoZV09TGUreGUsRltLK2hlK2tdPVNlLUhlLEhbSytoZStrXT1MZS14ZSxoZSE9PV8mJihEZT1wKnRlLXcqY2UsY2U9cCpjZSt3KnRlLHRlPURlKX19LFUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGIsQSl7dmFyIEY9MXxNYXRoLm1heChBLGIpLEg9MSZG''@;'; put 'put ''LGc9MDtmb3IoRj1GLzJ8MDtGO0Y+Pj49MSlnKys7cmV0dXJuIDE8PGcrMStIfSxVLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oYixBLEYpe2lmKCEoRjw9MSkpZm9yKHZhciBIPTA7SDxGLzI7SCsrKXt2YXIgZz1iW0hdO2JbSF09YltGLUgtMV0sYltGLUgtMV09ZyxnPUFbSF0sQVtI''@;'; put 'put ''XT0tQVtGLUgtMV0sQVtGLUgtMV09LWd9fSxVLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oYixBKXtmb3IodmFyIEY9MCxIPTA7SDxBLzI7SCsrKXt2YXIgZz04MTkyKk1hdGgucm91bmQoYlsyKkgrMV0vQSkrTWF0aC5yb3VuZChiWzIqSF0vQSkrRjtiW0hdPTY3MTA4ODYzJmcs''@;'; put 'put ''Rj1nPDY3MTA4ODY0PzA6Zy82NzEwODg2NHwwfXJldHVybiBifSxVLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGIsQSxGLEgpe2Zvcih2YXIgZz0wLEM9MDtDPEE7QysrKUZbMipDXT04MTkxJihnKz0wfGJbQ10pLEZbMipDKzFdPTgxOTEmKGc+Pj49MTMpLGc+Pj49MTM7Zm9yKEM9''@;'; put 'put ''MipBO0M8SDsrK0MpRltDXT0wO20oMD09PWcpLG0oISgtODE5MiZnKSl9LFUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciBBPW5ldyBBcnJheShiKSxGPTA7RjxiO0YrKylBW0ZdPTA7cmV0dXJuIEF9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPTIq''@;'; put 'put ''dGhpcy5ndWVzc0xlbjEzYihiLmxlbmd0aCxBLmxlbmd0aCksZz10aGlzLm1ha2VSQlQoSCksQz10aGlzLnN0dWIoSCksaz1uZXcgQXJyYXkoSCksXz1uZXcgQXJyYXkoSCkscD1uZXcgQXJyYXkoSCksdz1uZXcgQXJyYXkoSCksSz1uZXcgQXJyYXkoSCksdGU9bmV3IEFycmF5KEgpLGNlPUYu''@;'; put 'put ''d29yZHM7Y2UubGVuZ3RoPUgsdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsayxIKSx0aGlzLmNvbnZlcnQxM2IoQS53b3JkcyxBLmxlbmd0aCx3LEgpLHRoaXMudHJhbnNmb3JtKGssQyxfLHAsSCxnKSx0aGlzLnRyYW5zZm9ybSh3LEMsSyx0ZSxILGcpO2Zvcih2YXIgaGU9MDto''@;'; put 'put ''ZTxIO2hlKyspe3ZhciBTZT1fW2hlXSpLW2hlXS1wW2hlXSp0ZVtoZV07cFtoZV09X1toZV0qdGVbaGVdK3BbaGVdKktbaGVdLF9baGVdPVNlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShfLHAsSCksdGhpcy50cmFuc2Zvcm0oXyxwLGNlLEMsSCxnKSx0aGlzLmNvbmp1Z2F0ZShjZSxDLEgpLHRo''@;'; put 'put ''aXMubm9ybWFsaXplMTNiKGNlLEgpLEYubmVnYXRpdmU9Yi5uZWdhdGl2ZV5BLm5lZ2F0aXZlLEYubGVuZ3RoPWIubGVuZ3RoK0EubGVuZ3RoLEYuc3RyaXAoKX0sTS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciBBPW5ldyBNKG51bGwpO3JldHVybiBBLndvcmRzPW5ldyBBcnJheSh0''@;'; put 'put ''aGlzLmxlbmd0aCtiLmxlbmd0aCksdGhpcy5tdWxUbyhiLEEpfSxNLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGIpe3ZhciBBPW5ldyBNKG51bGwpO3JldHVybiBBLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksWSh0aGlzLGIsQSl9LE0ucHJvdG90eXBlLmltdWw9ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxNLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiksbShiPDY3MTA4ODY0KTtmb3IodmFyIEE9MCxGPTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciBIPSgwfHRoaXMud29yZHNb''@;'; put 'put ''Rl0pKmIsZz0oNjcxMDg4NjMmSCkrKDY3MTA4ODYzJkEpO0E+Pj0yNixBKz1ILzY3MTA4ODY0fDAsQSs9Zz4+PjI2LHRoaXMud29yZHNbRl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PUEmJih0aGlzLndvcmRzW0ZdPUEsdGhpcy5sZW5ndGgrKyksdGhpc30sTS5wcm90b3R5cGUubXVsbj1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGIpfSxNLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LE0ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LE0ucHJvdG90eXBlLnBvdz1m''@;'; put 'put ''dW5jdGlvbihiKXt2YXIgQT1mdW5jdGlvbiB6KFcpe2Zvcih2YXIgYj1uZXcgQXJyYXkoVy5iaXRMZW5ndGgoKSksQT0wO0E8Yi5sZW5ndGg7QSsrKXt2YXIgSD1BJTI2O2JbQV09KFcud29yZHNbQS8yNnwwXSYxPDxIKT4+Pkh9cmV0dXJuIGJ9KGIpO2lmKDA9PT1BLmxlbmd0aClyZXR1cm4g''@;'; put 'put ''bmV3IE0oMSk7Zm9yKHZhciBGPXRoaXMsSD0wO0g8QS5sZW5ndGgmJjA9PT1BW0hdO0grKyxGPUYuc3FyKCkpO2lmKCsrSDxBLmxlbmd0aClmb3IodmFyIGc9Ri5zcXIoKTtIPEEubGVuZ3RoO0grKyxnPWcuc3FyKCkpMCE9PUFbSF0mJihGPUYubXVsKGcpKTtyZXR1cm4gRn0sTS5wcm90b3R5''@;'; put 'put ''cGUuaXVzaGxuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgZyxBPWIlMjYsRj0oYi1BKS8yNixIPTY3MTA4ODYzPj4+MjYtQTw8MjYtQTtpZigwIT09QSl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgaz10aGlzLndvcmRzW2ddJkg7''@;'; put 'put ''dGhpcy53b3Jkc1tnXT0oMHx0aGlzLndvcmRzW2ddKS1rPDxBfEMsQz1rPj4+MjYtQX1DJiYodGhpcy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1GKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytGXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7ZzxG''@;'; put 'put ''O2crKyl0aGlzLndvcmRzW2ddPTA7dGhpcy5sZW5ndGgrPUZ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxNLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYixBLEYp''@;'; put 'put ''e3ZhciBIO20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKSxIPUE/KEEtQSUyNikvMjY6MDt2YXIgZz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLGs9NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLF89RjtpZihILT1DLEg9TWF0aC5tYXgoMCxIKSxfKXtmb3IodmFyIHA9''@;'; put 'put ''MDtwPEM7cCsrKV8ud29yZHNbcF09dGhpcy53b3Jkc1twXTtfLmxlbmd0aD1DfWlmKDAhPT1DKWlmKHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09MCx0''@;'; put 'put ''aGlzLmxlbmd0aD0xO3ZhciB3PTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PXd8fHA+PUgpO3AtLSl7dmFyIEs9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09dzw8MjYtZ3xLPj4+Zyx3PUsma31yZXR1cm4gXyYmMCE9PXcmJihfLndvcmRzW18ubGVuZ3RoKytdPXcpLDA9''@;'; put 'put ''PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIsQSxGKXtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYixBLEYpfSxNLnByb3RvdHlwZS5zaGxuPWZ1bmN0''@;'; put 'put ''aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYil9LE0ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxNLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LE0ucHJvdG90''@;'; put 'put ''eXBlLnVzaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxNLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEE9YiUyNixGPShiLUEpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PUZ8fCEodGhpcy53''@;'; put 'put ''b3Jkc1tGXSYxPDxBKSl9LE0ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEE9YiUyNixGPShiLUEpLzI2O3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMi''@;'; put 'put ''KSx0aGlzLmxlbmd0aDw9Rj90aGlzOigwIT09QSYmRisrLHRoaXMubGVuZ3RoPU1hdGgubWluKEYsdGhpcy5sZW5ndGgpLDAhPT1BJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5BPDxBKSx0aGlzLnN0cmlwKCkpfSxNLnByb3RvdHlwZS5tYXNrbj1m''@;'; put 'put ''dW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiKX0sTS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIG0oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5n''@;'; put 'put ''dGgmJigwfHRoaXMud29yZHNbMF0pPGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sTS5wcm90b3R5cGUuX2lh''@;'; put 'put ''ZGRuPWZ1bmN0aW9uKGIpe3RoaXMud29yZHNbMF0rPWI7Zm9yKHZhciBBPTA7QTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tBXT49NjcxMDg4NjQ7QSsrKXRoaXMud29yZHNbQV0tPTY3MTA4ODY0LEE9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbQSsxXT0xOnRoaXMud29yZHNbQSsxXSsr''@;'; put 'put ''O3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxBKzEpLHRoaXN9LE0ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKG0oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVnYXRp''@;'; put 'put ''dmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBm''@;'; put 'put ''b3IodmFyIEE9MDtBPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0FdPDA7QSsrKXRoaXMud29yZHNbQV0rPTY3MTA4ODY0LHRoaXMud29yZHNbQSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4o''@;'; put 'put ''Yil9LE0ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihiKX0sTS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sTS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pYWJzKCl9LE0ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLEEsRil7dmFyIGc7dGhpcy5fZXhwYW5kKGIubGVuZ3RoK0YpO3ZhciBDLGs9MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytGXSkrazt2YXIgXz0oMHxiLndvcmRzW2ddKSpBO2s9''@;'; put 'put ''KChDLT02NzEwODg2MyZfKT4+MjYpLShfLzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytGXT02NzEwODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1GO2crKylrPShDPSgwfHRoaXMud29yZHNbZytGXSkrayk+PjI2LHRoaXMud29yZHNbZytGXT02NzEwODg2MyZDO2lmKDA9PT1rKXJldHVybiB0''@;'; put 'put ''aGlzLnN0cmlwKCk7Zm9yKG0oLTE9PT1rKSxrPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKWs9KEM9LSgwfHRoaXMud29yZHNbZ10pK2spPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLl93b3JkRGl2''@;'; put 'put ''PWZ1bmN0aW9uKGIsQSl7dmFyIEYsSD10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdOzAhPShGPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oRiksSC5pdXNobG4oRiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLF89SC5sZW5ndGgtZy5s''@;'; put 'put ''ZW5ndGg7aWYoIm1vZCIhPT1BKXsocD1uZXcgTShudWxsKSkubGVuZ3RoPV8rMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciB3PTA7dzxwLmxlbmd0aDt3KyspcC53b3Jkc1t3XT0wfXZhciBLPUguY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLF8pOzA9PT1LLm5lZ2F0aXZl''@;'; put 'put ''JiYoSD1LLHAmJihwLndvcmRzW19dPTEpKTtmb3IodmFyIHRlPV8tMTt0ZT49MDt0ZS0tKXt2YXIgY2U9NjcxMDg4NjQqKDB8SC53b3Jkc1tnLmxlbmd0aCt0ZV0pKygwfEgud29yZHNbZy5sZW5ndGgrdGUtMV0pO2ZvcihjZT1NYXRoLm1pbihjZS9DfDAsNjcxMDg4NjMpLEguX2lzaGxuc3Vi''@;'; put 'put ''bXVsKGcsY2UsdGUpOzAhPT1ILm5lZ2F0aXZlOyljZS0tLEgubmVnYXRpdmU9MCxILl9pc2hsbnN1Ym11bChnLDEsdGUpLEguaXNaZXJvKCl8fChILm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1t0ZV09Y2UpfXJldHVybiBwJiZwLnN0cmlwKCksSC5zdHJpcCgpLCJkaXYiIT09QSYmMCE9PUYm''@;'; put 'put ''JkguaXVzaHJuKEYpLHtkaXY6cHx8bnVsbCxtb2Q6SH19LE0ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihiLEEsRil7cmV0dXJuIG0oIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTSgwKSxtb2Q6bmV3IE0oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2''@;'; put 'put ''ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLEEpLCJtb2QiIT09QSYmKEg9Qy5kaXYubmVnKCkpLCJkaXYiIT09QSYmKGc9Qy5tb2QubmVnKCksRiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpILG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhDPXRo''@;'; put 'put ''aXMuZGl2bW9kKGIubmVnKCksQSksIm1vZCIhPT1BJiYoSD1DLmRpdi5uZWcoKSkse2RpdjpILG1vZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLEEpLCJkaXYiIT09QSYmKGc9Qy5tb2QubmVnKCksRiYmMCE9PWcubmVnYXRp''@;'; put 'put ''dmUmJmcuaXN1YihiKSkse2RpdjpDLmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChiKTwwP3tkaXY6bmV3IE0oMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PUE/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09QT97''@;'; put 'put ''ZGl2Om51bGwsbW9kOm5ldyBNKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpuZXcgTSh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIsQSk7dmFyIEgsZyxDfSxNLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7cmV0''@;'; put 'put ''dXJuIHRoaXMuZGl2bW9kKGIsImRpdiIsITEpLmRpdn0sTS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LE0ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0sTS5w''@;'; put 'put ''cm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oYil7dmFyIEE9dGhpcy5kaXZtb2QoYik7aWYoQS5tb2QuaXNaZXJvKCkpcmV0dXJuIEEuZGl2O3ZhciBGPTAhPT1BLmRpdi5uZWdhdGl2ZT9BLm1vZC5pc3ViKGIpOkEubW9kLEg9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1GLmNtcChIKTty''@;'; put 'put ''ZXR1cm4gQzwwfHwxPT09ZyYmMD09PUM/QS5kaXY6MCE9PUEuZGl2Lm5lZ2F0aXZlP0EuZGl2LmlzdWJuKDEpOkEuZGl2LmlhZGRuKDEpfSxNLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe20oYjw9NjcxMDg4NjMpO2Zvcih2YXIgQT0oMTw8MjYpJWIsRj0wLEg9dGhpcy5sZW5ndGgtMTtI''@;'; put 'put ''Pj0wO0gtLSlGPShBKkYrKDB8dGhpcy53b3Jkc1tIXSkpJWI7cmV0dXJuIEZ9LE0ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGIpe20oYjw9NjcxMDg4NjMpO2Zvcih2YXIgQT0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSl7dmFyIEg9KDB8dGhpcy53b3Jkc1tGXSkrNjcxMDg4NjQqQTt0''@;'; put 'put ''aGlzLndvcmRzW0ZdPUgvYnwwLEE9SCVifXJldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sTS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXttKDA9PT1iLm5lZ2F0aXZlKSxtKCFiLmlzWmVybygp''@;'; put 'put ''KTt2YXIgQT10aGlzLEY9Yi5jbG9uZSgpO0E9MCE9PUEubmVnYXRpdmU/QS51bW9kKGIpOkEuY2xvbmUoKTtmb3IodmFyIEg9bmV3IE0oMSksZz1uZXcgTSgwKSxDPW5ldyBNKDApLGs9bmV3IE0oMSksXz0wO0EuaXNFdmVuKCkmJkYuaXNFdmVuKCk7KUEuaXVzaHJuKDEpLEYuaXVzaHJuKDEp''@;'; put 'put ''LCsrXztmb3IodmFyIHA9Ri5jbG9uZSgpLHc9QS5jbG9uZSgpOyFBLmlzWmVybygpOyl7Zm9yKHZhciBLPTAsdGU9MTshKEEud29yZHNbMF0mdGUpJiZLPDI2OysrSyx0ZTw8PTEpO2lmKEs+MClmb3IoQS5pdXNocm4oSyk7Sy0tID4wOykoSC5pc09kZCgpfHxnLmlzT2RkKCkpJiYoSC5pYWRk''@;'; put 'put ''KHApLGcuaXN1Yih3KSksSC5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBjZT0wLGhlPTE7IShGLndvcmRzWzBdJmhlKSYmY2U8MjY7KytjZSxoZTw8PTEpO2lmKGNlPjApZm9yKEYuaXVzaHJuKGNlKTtjZS0tID4wOykoQy5pc09kZCgpfHxrLmlzT2RkKCkpJiYoQy5pYWRkKHApLGsu''@;'; put 'put ''aXN1Yih3KSksQy5pdXNocm4oMSksay5pdXNocm4oMSk7QS5jbXAoRik+PTA/KEEuaXN1YihGKSxILmlzdWIoQyksZy5pc3ViKGspKTooRi5pc3ViKEEpLEMuaXN1YihIKSxrLmlzdWIoZykpfXJldHVybnthOkMsYjprLGdjZDpGLml1c2hsbihfKX19LE0ucHJvdG90eXBlLl9pbnZtcD1mdW5j''@;'; put 'put ''dGlvbihiKXttKDA9PT1iLm5lZ2F0aXZlKSxtKCFiLmlzWmVybygpKTt2YXIgSyxBPXRoaXMsRj1iLmNsb25lKCk7QT0wIT09QS5uZWdhdGl2ZT9BLnVtb2QoYik6QS5jbG9uZSgpO2Zvcih2YXIgSD1uZXcgTSgxKSxnPW5ldyBNKDApLEM9Ri5jbG9uZSgpO0EuY21wbigxKT4wJiZGLmNtcG4o''@;'; put 'put ''MSk+MDspe2Zvcih2YXIgaz0wLF89MTshKEEud29yZHNbMF0mXykmJms8MjY7KytrLF88PD0xKTtpZihrPjApZm9yKEEuaXVzaHJuKGspO2stLSA+MDspSC5pc09kZCgpJiZILmlhZGQoQyksSC5pdXNocm4oMSk7Zm9yKHZhciBwPTAsdz0xOyEoRi53b3Jkc1swXSZ3KSYmcDwyNjsrK3Asdzw8''@;'; put 'put ''PTEpO2lmKHA+MClmb3IoRi5pdXNocm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChDKSxnLml1c2hybigxKTtBLmNtcChGKT49MD8oQS5pc3ViKEYpLEguaXN1YihnKSk6KEYuaXN1YihBKSxnLmlzdWIoSCkpfXJldHVybihLPTA9PT1BLmNtcG4oMSk/SDpnKS5jbXBuKDApPDAmJksu''@;'; put 'put ''aWFkZChiKSxLfSxNLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBBPXRoaXMuY2xvbmUoKSxGPWIuY2xvbmUoKTtBLm5lZ2F0aXZlPTAsRi5uZWdhdGl2ZT0wO2Zvcih2''@;'; put 'put ''YXIgSD0wO0EuaXNFdmVuKCkmJkYuaXNFdmVuKCk7SCsrKUEuaXVzaHJuKDEpLEYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtBLmlzRXZlbigpOylBLml1c2hybigxKTtmb3IoO0YuaXNFdmVuKCk7KUYuaXVzaHJuKDEpO3ZhciBnPUEuY21wKEYpO2lmKGc8MCl7dmFyIEM9QTtBPUYsRj1DfWVs''@;'; put 'put ''c2UgaWYoMD09PWd8fDA9PT1GLmNtcG4oMSkpYnJlYWs7QS5pc3ViKEYpfXJldHVybiBGLml1c2hsbihIKX0sTS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sTS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRo''@;'; put 'put ''aXMud29yZHNbMF0pfSxNLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LE0ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLndvcmRzWzBdJmJ9LE0ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9''@;'; put 'put ''PXR5cGVvZiBiKTt2YXIgQT1iJTI2LEY9KGItQSkvMjYsSD0xPDxBO2lmKHRoaXMubGVuZ3RoPD1GKXJldHVybiB0aGlzLl9leHBhbmQoRisxKSx0aGlzLndvcmRzW0ZdfD1ILHRoaXM7Zm9yKHZhciBnPUgsQz1GOzAhPT1nJiZDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9MHx0aGlzLndvcmRz''@;'; put 'put ''W0NdO2c9KGsrPWcpPj4+MjYsdGhpcy53b3Jkc1tDXT1rJj02NzEwODg2M31yZXR1cm4gMCE9PWcmJih0aGlzLndvcmRzW0NdPWcsdGhpcy5sZW5ndGgrKyksdGhpc30sTS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNb''@;'; put 'put ''MF19LE0ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24oYil7dmFyIEYsQT1iPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFBKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZBKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKUY9MTtlbHNle0EmJihiPS1iKSxtKGI8''@;'; put 'put ''PTY3MTA4ODYzLCJOdW1iZXIgaXMgdG9vIGJpZyIpO3ZhciBIPTB8dGhpcy53b3Jkc1swXTtGPUg9PT1iPzA6SDxiPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUY6Rn0sTS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGIpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdh''@;'; put 'put ''dGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIDE7dmFyIEE9dGhpcy51Y21wKGIpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1BOkF9LE0ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oYil7aWYodGhpcy5sZW5ndGg+Yi5sZW5ndGgp''@;'; put 'put ''cmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8Yi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBBPTAsRj10aGlzLmxlbmd0aC0xO0Y+PTA7Ri0tKXt2YXIgSD0wfHRoaXMud29yZHNbRl0sZz0wfGIud29yZHNbRl07aWYoSCE9PWcpe0g8Zz9BPS0xOkg+ZyYmKEE9MSk7YnJlYWt9fXJldHVybiBBfSxN''@;'; put 'put ''LnByb3RvdHlwZS5ndG49ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGIpe3JldHVybiAxPT09dGhpcy5jbXAoYil9LE0ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKT49MH0sTS5wcm90b3R5''@;'; put 'put ''cGUuZ3RlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKT49MH0sTS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5sdD1mdW5jdGlvbihiKXtyZXR1cm4tMT09PXRoaXMuY21wKGIpfSxNLnByb3RvdHlwZS5sdGVuPWZ1''@;'; put 'put ''bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcG4oYik8PTB9LE0ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXAoYik8PTB9LE0ucHJvdG90eXBlLmVxbj1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oYil7''@;'; put 'put ''cmV0dXJuIDA9PT10aGlzLmNtcChiKX0sTS5yZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBsZShiKX0sTS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksbSgwPT09dGhpcy5uZWdh''@;'; put 'put ''dGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxiLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoYil9LE0ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24g''@;'; put 'put ''Y29udGV4dCIpLHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxNLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucmVkPWIsdGhpc30sTS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVy''@;'; put 'put ''IGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5fZm9yY2VSZWQoYil9LE0ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGIpfSxNLnByb3RvdHlwZS5y''@;'; put 'put ''ZWRJQWRkPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGIpfSxNLnByb3RvdHlw''@;'; put 'put ''ZS5yZWRTaGw9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25s''@;'; put 'put ''eSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5tdWwodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk''@;'; put 'put ''Ll92ZXJpZnkyKHRoaXMsYiksdGhpcy5yZWQuaW11bCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0''@;'; put 'put ''aGlzKX0sTS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE0ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxNLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZEludm0g''@;'; put 'put ''d29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE0ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCYmIWIucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGIpfTt2''@;'; put 'put ''YXIgcT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIEooVyxiKXt0aGlzLm5hbWU9Vyx0aGlzLnA9bmV3IE0oYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IE0oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnAp''@;'; put 'put ''LHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIGVlKCl7Si5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIHJlKCl7Si5jYWxsKHRoaXMsInAyMjQiLCJm''@;'; put 'put ''ZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGllKCl7Si5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHVl''@;'; put 'put ''KCl7Si5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGxlKFcpe2lmKCJzdHJpbmciPT10eXBlb2YgVyl7dmFyIGI9TS5fcHJpbWUoVyk7dGhpcy5tPWIucCx0aGlz''@;'; put 'put ''LnByaW1lPWJ9ZWxzZSBtKFcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Vyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gYWUoVyl7bGUuY2FsbCh0aGlzLFcpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0''@;'; put 'put ''aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE0oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJu''@;'; put 'put ''KDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9Si5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBiPW5ldyBNKG51bGwpO3JldHVybiBiLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhp''@;'; put 'put ''cy5uLzEzKSksYn0sSi5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihiKXt2YXIgRixBPWI7ZG97dGhpcy5zcGxpdChBLHRoaXMudG1wKSxGPShBPShBPXRoaXMuaW11bEsoQSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShGPnRoaXMubik7dmFyIEg9Rjx0aGlzLm4/LTE6''@;'; put 'put ''QS51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1IPyhBLndvcmRzWzBdPTAsQS5sZW5ndGg9MSk6SD4wP0EuaXN1Yih0aGlzLnApOnZvaWQgMCE9PUEuc3RyaXA/QS5zdHJpcCgpOkEuX3N0cmlwKCksQX0sSi5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYixBKXtiLml1c2hybih0aGlzLm4sMCxB''@;'; put 'put ''KX0sSi5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaW11bCh0aGlzLmspfSxzZShlZSxKKSxlZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYixBKXtmb3IodmFyIEY9NDE5NDMwMyxIPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEg7ZysrKUEud29yZHNbZ109Yi53''@;'; put 'put ''b3Jkc1tnXTtpZihBLmxlbmd0aD1ILGIubGVuZ3RoPD05KXJldHVybiBiLndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2ZvcihBLndvcmRzW0EubGVuZ3RoKytdPUMmRixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgaz0wfGIud29yZHNbZ107Yi53b3Jkc1tn''@;'; put 'put ''LTEwXT0oayZGKTw8NHxDPj4+MjIsQz1rfWIud29yZHNbZy0xMF09Qz4+Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LGVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5ndGgrMV09MCxiLmxlbmd0aCs9''@;'; put 'put ''Mjtmb3IodmFyIEE9MCxGPTA7RjxiLmxlbmd0aDtGKyspe3ZhciBIPTB8Yi53b3Jkc1tGXTtiLndvcmRzW0ZdPTY3MTA4ODYzJihBKz05NzcqSCksQT02NCpIKyhBLzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3RoLS0sMD09PWIud29yZHNbYi5s''@;'; put 'put ''ZW5ndGgtMV0mJmIubGVuZ3RoLS0pLGJ9LHNlKHJlLEopLHNlKGllLEopLHNlKHVlLEopLHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIEE9MCxGPTA7RjxiLmxlbmd0aDtGKyspe3ZhciBIPTE5KigwfGIud29yZHNbRl0pK0EsZz02NzEwODg2MyZIO0g+Pj49MjYsYi53''@;'; put 'put ''b3Jkc1tGXT1nLEE9SH1yZXR1cm4gMCE9PUEmJihiLndvcmRzW2IubGVuZ3RoKytdPUEpLGJ9LE0uX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIEE7aWYoImsyNTYiPT09YilBPW5ldyBlZTtlbHNlIGlmKCJwMjI0Ij09PWIpQT1uZXcgcmU7ZWxzZSBpZigicDE5''@;'; put 'put ''MiI9PT1iKUE9bmV3IGllO2Vsc2V7aWYoInAyNTUxOSIhPT1iKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO0E9bmV3IHVlfXJldHVybiBxW2JdPUEsQX0sbGUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5''@;'; put 'put ''IHdpdGggcG9zaXRpdmVzIiksbShiLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxsZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYixBKXttKCEoYi5uZWdhdGl2ZXxBLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxtKGIucmVk''@;'; put 'put ''JiZiLnJlZD09PUEucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGxlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShiKS5fZm9yY2VSZWQodGhpcyk6Yi51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRo''@;'; put 'put ''aXMpfSxsZS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKGIpe3JldHVybiBiLmlzWmVybygpP2IuY2xvbmUoKTp0aGlzLm0uc3ViKGIpLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLmFkZChBKTtyZXR1cm4g''@;'; put 'put ''Ri5jbXAodGhpcy5tKT49MCYmRi5pc3ViKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuaWFkZChBKTtyZXR1cm4gRi5jbXAodGhpcy5tKT49MCYmRi5pc3ViKHRoaXMubSksRn0sbGUu''@;'; put 'put ''cHJvdG90eXBlLnN1Yj1mdW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLnN1YihBKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEYuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixB''@;'; put 'put ''KTt2YXIgRj1iLmlzdWIoQSk7cmV0dXJuIEYuY21wbigwKTwwJiZGLmlhZGQodGhpcy5tKSxGfSxsZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoYiksdGhpcy5pbW9kKGIudXNobG4oQSkpfSxsZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLEEp''@;'; put 'put ''e3JldHVybiB0aGlzLl92ZXJpZnkyKGIsQSksdGhpcy5pbW9kKGIuaW11bChBKSl9LGxlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihiLEEpLHRoaXMuaW1vZChiLm11bChBKSl9LGxlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0''@;'; put 'put ''aGlzLmltdWwoYixiLmNsb25lKCkpfSxsZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLm11bChiLGIpfSxsZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihiKXtpZihiLmlzWmVybygpKXJldHVybiBiLmNsb25lKCk7dmFyIEE9dGhpcy5tLmFuZGxuKDMpO2lmKG0oQSUy''@;'; put 'put ''PT0xKSwzPT09QSl7dmFyIEY9dGhpcy5tLmFkZChuZXcgTSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhiLEYpfWZvcih2YXIgSD10aGlzLm0uc3VibigxKSxnPTA7IUguaXNaZXJvKCkmJjA9PT1ILmFuZGxuKDEpOylnKyssSC5pdXNocm4oMSk7bSghSC5pc1plcm8oKSk7dmFyIEM9''@;'; put 'put ''bmV3IE0oMSkudG9SZWQodGhpcyksaz1DLnJlZE5lZygpLF89dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHA9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihwPW5ldyBNKDIqcCpwKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3cocCxfKS5jbXAoayk7KXAucmVkSUFkZChrKTtmb3IodmFyIHc9dGhp''@;'; put 'put ''cy5wb3cocCxIKSxLPXRoaXMucG93KGIsSC5hZGRuKDEpLml1c2hybigxKSksdGU9dGhpcy5wb3coYixIKSxjZT1nOzAhPT10ZS5jbXAoQyk7KXtmb3IodmFyIGhlPXRlLFNlPTA7MCE9PWhlLmNtcChDKTtTZSsrKWhlPWhlLnJlZFNxcigpO20oU2U8Y2UpO3ZhciBMZT10aGlzLnBvdyh3LG5l''@;'; put 'put ''dyBNKDEpLml1c2hsbihjZS1TZS0xKSk7Sz1LLnJlZE11bChMZSksdz1MZS5yZWRTcXIoKSx0ZT10ZS5yZWRNdWwodyksY2U9U2V9cmV0dXJuIEt9LGxlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3ZhciBBPWIuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1BLm5lZ2F0aXZlPyhBLm5l''@;'; put 'put ''Z2F0aXZlPTAsdGhpcy5pbW9kKEEpLnJlZE5lZygpKTp0aGlzLmltb2QoQSl9LGxlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oYixBKXtpZihBLmlzWmVybygpKXJldHVybiBuZXcgTSgxKS50b1JlZCh0aGlzKTtpZigwPT09QS5jbXBuKDEpKXJldHVybiBiLmNsb25lKCk7dmFyIEg9bmV3IEFy''@;'; put 'put ''cmF5KDE2KTtIWzBdPW5ldyBNKDEpLnRvUmVkKHRoaXMpLEhbMV09Yjtmb3IodmFyIGc9MjtnPEgubGVuZ3RoO2crKylIW2ddPXRoaXMubXVsKEhbZy0xXSxiKTt2YXIgQz1IWzBdLGs9MCxfPTAscD1BLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLGc9QS5sZW5ndGgtMTtnPj0w''@;'; put 'put ''O2ctLSl7Zm9yKHZhciB3PUEud29yZHNbZ10sSz1wLTE7Sz49MDtLLS0pe3ZhciB0ZT13Pj5LJjE7QyE9PUhbMF0mJihDPXRoaXMuc3FyKEMpKSwwIT09dGV8fDAhPT1rPyhrPDw9MSxrfD10ZSwoND09KytffHwwPT09ZyYmMD09PUspJiYoQz10aGlzLm11bChDLEhba10pLF89MCxrPTApKTpf''@;'; put 'put ''PTB9cD0yNn1yZXR1cm4gQ30sbGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihiKXt2YXIgQT1iLnVtb2QodGhpcy5tKTtyZXR1cm4gQT09PWI/QS5jbG9uZSgpOkF9LGxlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihiKXt2YXIgQT1iLmNsb25lKCk7cmV0dXJuIEEucmVk''@;'; put 'put ''PW51bGwsQX0sTS5tb250PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgYWUoYil9LHNlKGFlLGxlKSxhZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltb2QoYi51c2hsbih0aGlzLnNoaWZ0KSl9LGFlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihi''@;'; put 'put ''KXt2YXIgQT10aGlzLmltb2QoYi5tdWwodGhpcy5yaW52KSk7cmV0dXJuIEEucmVkPW51bGwsQX0sYWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYixBKXtpZihiLmlzWmVybygpfHxBLmlzWmVybygpKXJldHVybiBiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSxiO3ZhciBGPWIuaW11bChBKSxI''@;'; put 'put ''PUYubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGc9Ri5pc3ViKEgpLml1c2hybih0aGlzLnNoaWZ0KSxDPWc7cmV0dXJuIGcuY21wKHRoaXMubSk+PTA/Qz1nLmlzdWIodGhpcy5tKTpnLmNtcG4oMCk8MCYmKEM9Zy5pYWRk''@;'; put 'put ''KHRoaXMubSkpLEMuX2ZvcmNlUmVkKHRoaXMpfSxhZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIsQSl7aWYoYi5pc1plcm8oKXx8QS5pc1plcm8oKSlyZXR1cm4gbmV3IE0oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBGPWIubXVsKEEpLEg9Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5t''@;'; put 'put ''aW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1GLmlzdWIoSCkuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGFl''@;'; put 'put ''LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltb2QoYi5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFFlPVIubm1kKFFlKSx0aGlzKX0sNDQzNTY6UWU9PnsidXNlIHN0cmljdCI7dmFyIG9lLE1lPSJvYmplY3QiPT10eXBlb2Yg''@;'; put 'put ''UmVmbGVjdD9SZWZsZWN0Om51bGwsUj1NZSYmImZ1bmN0aW9uIj09dHlwZW9mIE1lLmFwcGx5P01lLmFwcGx5OmZ1bmN0aW9uKEosZWUscmUpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChKLGVlLHJlKX07b2U9TWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBNZS5vd25LZXlz''@;'; put 'put ''P01lLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbihKKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoSikuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSikpfTpmdW5jdGlvbihKKXtyZXR1cm4gT2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5TmFtZXMoSil9O3ZhciBtPU51bWJlci5pc05hTnx8ZnVuY3Rpb24oSil7cmV0dXJuIEohPUp9O2Z1bmN0aW9uIHNlKCl7c2UuaW5pdC5jYWxsKHRoaXMpfVFlLmV4cG9ydHM9c2UsUWUuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uIFoocSxKKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rp''@;'; put 'put ''b24oZWUscmUpe2Z1bmN0aW9uIGllKGxlKXtxLnJlbW92ZUxpc3RlbmVyKEosdWUpLHJlKGxlKX1mdW5jdGlvbiB1ZSgpeyJmdW5jdGlvbiI9PXR5cGVvZiBxLnJlbW92ZUxpc3RlbmVyJiZxLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsaWUpLGVlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9''@;'; put 'put ''VShxLEosdWUse29uY2U6ITB9KSwiZXJyb3IiIT09SiYmZnVuY3Rpb24gWShxLEosZWUpeyJmdW5jdGlvbiI9PXR5cGVvZiBxLm9uJiZVKHEsImVycm9yIixKLGVlKX0ocSxpZSx7b25jZTohMH0pfSl9LHNlLkV2ZW50RW1pdHRlcj1zZSxzZS5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsc2Uu''@;'; put 'put ''cHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHNlLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgTT0xMDtmdW5jdGlvbiBPKHEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBxKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlw''@;'; put 'put ''ZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBxKX1mdW5jdGlvbiBJKHEpe3JldHVybiB2b2lkIDA9PT1xLl9tYXhMaXN0ZW5lcnM/c2UuZGVmYXVsdE1heExpc3RlbmVyczpxLl9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gaihxLEosZWUscmUpe3ZhciBpZSx1ZSxsZTtpZihPKGVl''@;'; put 'put ''KSx2b2lkIDA9PT0odWU9cS5fZXZlbnRzKT8odWU9cS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkscS5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PXVlLm5ld0xpc3RlbmVyJiYocS5lbWl0KCJuZXdMaXN0ZW5lciIsSixlZS5saXN0ZW5lcj9lZS5saXN0ZW5lcjplZSksdWU9cS5fZXZl''@;'; put 'put ''bnRzKSxsZT11ZVtKXSksdm9pZCAwPT09bGUpbGU9dWVbSl09ZWUsKytxLl9ldmVudHNDb3VudDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBsZT9sZT11ZVtKXT1yZT9bZWUsbGVdOltsZSxlZV06cmU/bGUudW5zaGlmdChlZSk6bGUucHVzaChlZSksKGllPUkocSkpPjAmJmxlLmxlbmd0''@;'; put 'put ''aD5pZSYmIWxlLndhcm5lZCl7bGUud2FybmVkPSEwO3ZhciBhZT1uZXcgRXJyb3IoIlBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gIitsZS5sZW5ndGgrIiAiK1N0cmluZyhKKSsiIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJz''@;'; put 'put ''KCkgdG8gaW5jcmVhc2UgbGltaXQiKTthZS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLGFlLmVtaXR0ZXI9cSxhZS50eXBlPUosYWUuY291bnQ9bGUubGVuZ3RoLGZ1bmN0aW9uIHgocSl7Y29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4ocSl9KGFlKX1yZXR1''@;'; put 'put ''cm4gcX1mdW5jdGlvbiBHKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlz''@;'; put 'put ''dGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBEKHEsSixlZSl7dmFyIHJlPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDpxLHR5cGU6SixsaXN0ZW5lcjplZX0saWU9Ry5iaW5kKHJlKTtyZXR1cm4gaWUubGlzdGVuZXI9ZWUscmUud3JhcEZuPWllLGll''@;'; put 'put ''fWZ1bmN0aW9uIFQocSxKLGVlKXt2YXIgcmU9cS5fZXZlbnRzO2lmKHZvaWQgMD09PXJlKXJldHVybltdO3ZhciBpZT1yZVtKXTtyZXR1cm4gdm9pZCAwPT09aWU/W106ImZ1bmN0aW9uIj09dHlwZW9mIGllP2VlP1tpZS5saXN0ZW5lcnx8aWVdOltpZV06ZWU/ZnVuY3Rpb24gQihxKXtmb3Io''@;'; put 'put ''dmFyIEo9bmV3IEFycmF5KHEubGVuZ3RoKSxlZT0wO2VlPEoubGVuZ3RoOysrZWUpSltlZV09cVtlZV0ubGlzdGVuZXJ8fHFbZWVdO3JldHVybiBKfShpZSk6eihpZSxpZS5sZW5ndGgpfWZ1bmN0aW9uIEUocSl7dmFyIEo9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PUope3ZhciBlZT1KW3Fd''@;'; put 'put ''O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlZSlyZXR1cm4gMTtpZih2b2lkIDAhPT1lZSlyZXR1cm4gZWUubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIHoocSxKKXtmb3IodmFyIGVlPW5ldyBBcnJheShKKSxyZT0wO3JlPEo7KytyZSllZVtyZV09cVtyZV07cmV0dXJuIGVlfWZ1bmN0aW9uIFUo''@;'; put 'put ''cSxKLGVlLHJlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgcS5vbilyZS5vbmNlP3Eub25jZShKLGVlKTpxLm9uKEosZWUpO2Vsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHEuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImVtaXR0ZXIiIGFyZ3VtZW50IG11c3Qg''@;'; put 'put ''YmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgcSk7cS5hZGRFdmVudExpc3RlbmVyKEosZnVuY3Rpb24gaWUodWUpe3JlLm9uY2UmJnEucmVtb3ZlRXZlbnRMaXN0ZW5lcihKLGllKSxlZSh1ZSl9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHNlLCJkZWZh''@;'; put 'put ''dWx0TWF4TGlzdGVuZXJzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTX0sc2V0OmZ1bmN0aW9uKHEpe2lmKCJudW1iZXIiIT10eXBlb2YgcXx8cTwwfHxtKHEpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgImRlZmF1bHRNYXhMaXN0ZW5lcnMiIGlz''@;'; put 'put ''IG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrcSsiLiIpO009cX19KSxzZS5pbml0PWZ1bmN0aW9uKCl7KHZvaWQgMD09PXRoaXMuX2V2ZW50c3x8dGhpcy5fZXZlbnRzPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVu''@;'; put 'put ''dHMpJiYodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxzZS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKEope2lmKCJudW1iZXIiIT10eXBl''@;'; put 'put ''b2YgSnx8SjwwfHxtKEopKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgIm4iIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrSisiLiIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9Six0aGlzfSxzZS5wcm90''@;'; put 'put ''b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyl9LHNlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKEope2Zvcih2YXIgZWU9W10scmU9MTtyZTxhcmd1bWVudHMubGVuZ3RoO3JlKyspZWUucHVzaChhcmd1bWVudHNbcmVdKTt2YXIgaWU9ImVycm9yIj09PUos''@;'; put 'put ''dWU9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXVlKWllPWllJiZ2b2lkIDA9PT11ZS5lcnJvcjtlbHNlIGlmKCFpZSlyZXR1cm4hMTtpZihpZSl7dmFyIGxlO2lmKGVlLmxlbmd0aD4wJiYobGU9ZWVbMF0pLGxlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgbGU7dmFyIGFlPW5ldyBFcnJvcigi''@;'; put 'put ''VW5oYW5kbGVkIGVycm9yLiIrKGxlPyIgKCIrbGUubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBhZS5jb250ZXh0PWxlLGFlfXZhciBXPXVlW0pdO2lmKHZvaWQgMD09PVcpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFcpUihXLHRoaXMsZWUpO2Vsc2V7dmFyIGI9Vy5sZW5ndGgsQT16''@;'; put 'put ''KFcsYik7Zm9yKHJlPTA7cmU8YjsrK3JlKVIoQVtyZV0sdGhpcyxlZSl9cmV0dXJuITB9LHNlLnByb3RvdHlwZS5vbj1zZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oSixlZSl7cmV0dXJuIGoodGhpcyxKLGVlLCExKX0sc2UucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5j''@;'; put 'put ''dGlvbihKLGVlKXtyZXR1cm4gaih0aGlzLEosZWUsITApfSxzZS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihKLGVlKXtyZXR1cm4gTyhlZSksdGhpcy5vbihKLEQodGhpcyxKLGVlKSksdGhpc30sc2UucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oSixlZSl7cmV0dXJu''@;'; put 'put ''IE8oZWUpLHRoaXMucHJlcGVuZExpc3RlbmVyKEosRCh0aGlzLEosZWUpKSx0aGlzfSxzZS5wcm90b3R5cGUub2ZmPXNlLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihKLGVlKXt2YXIgcmUsaWUsdWUsbGUsYWU7aWYoTyhlZSksdm9pZCAwPT09KGllPXRoaXMuX2V2ZW50cykp''@;'; put 'put ''cmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KHJlPWllW0pdKSlyZXR1cm4gdGhpcztpZihyZT09PWVlfHxyZS5saXN0ZW5lcj09PWVlKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBpZVtKXSxpZS5yZW1vdmVMaXN0ZW5lciYm''@;'; put 'put ''dGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsSixyZS5saXN0ZW5lcnx8ZWUpKTtlbHNlIGlmKCJmdW5jdGlvbiIhPXR5cGVvZiByZSl7Zm9yKHVlPS0xLGxlPXJlLmxlbmd0aC0xO2xlPj0wO2xlLS0paWYocmVbbGVdPT09ZWV8fHJlW2xlXS5saXN0ZW5lcj09PWVlKXthZT1yZVtsZV0ubGlz''@;'; put 'put ''dGVuZXIsdWU9bGU7YnJlYWt9aWYodWU8MClyZXR1cm4gdGhpczswPT09dWU/cmUuc2hpZnQoKTpmdW5jdGlvbiBOKHEsSil7Zm9yKDtKKzE8cS5sZW5ndGg7SisrKXFbSl09cVtKKzFdO3EucG9wKCl9KHJlLHVlKSwxPT09cmUubGVuZ3RoJiYoaWVbSl09cmVbMF0pLHZvaWQgMCE9PWllLnJl''@;'; put 'put ''bW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixKLGFlfHxlZSl9cmV0dXJuIHRoaXN9LHNlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oSil7dmFyIGVlLHJlLGllO2lmKHZvaWQgMD09PShyZT10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lm''@;'; put 'put ''KHZvaWQgMD09PXJlLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6dm9pZCAwIT09cmVbSl0mJigwPT0tLXRoaXMuX2V2ZW50c0NvdW50P3RoaXMuX2V2ZW50cz1P''@;'; put 'put ''YmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSByZVtKXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGxlLHVlPU9iamVjdC5rZXlzKHJlKTtmb3IoaWU9MDtpZTx1ZS5sZW5ndGg7KytpZSkicmVtb3ZlTGlzdGVuZXIiIT09KGxlPXVlW2llXSkmJnRoaXMucmVtb3ZlQWxsTGlz''@;'; put 'put ''dGVuZXJzKGxlKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKCJmdW5jdGlvbiI9PXR5cGVvZihlZT1yZVtKXSkpdGhpcy5yZW1vdmVMaXN0''@;'; put 'put ''ZW5lcihKLGVlKTtlbHNlIGlmKHZvaWQgMCE9PWVlKWZvcihpZT1lZS5sZW5ndGgtMTtpZT49MDtpZS0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoSixlZVtpZV0pO3JldHVybiB0aGlzfSxzZS5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKEope3JldHVybiBUKHRoaXMsSiwhMCl9LHNlLnBy''@;'; put 'put ''b3RvdHlwZS5yYXdMaXN0ZW5lcnM9ZnVuY3Rpb24oSil7cmV0dXJuIFQodGhpcyxKLCExKX0sc2UubGlzdGVuZXJDb3VudD1mdW5jdGlvbihxLEope3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBxLmxpc3RlbmVyQ291bnQ/cS5saXN0ZW5lckNvdW50KEopOkUuY2FsbChxLEopfSxzZS5wcm90''@;'; put 'put ''b3R5cGUubGlzdGVuZXJDb3VudD1FLHNlLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/b2UodGhpcy5fZXZlbnRzKTpbXX19LDE4MjExOihRZSxNZSxSKT0+e3ZhciBvZT1SKDI3MDU0KS5CdWZmZXIseD1SKDM0NzI1KTtRZS5leHBv''@;'; put 'put ''cnRzPWZ1bmN0aW9uIG0oc2UsTSxPLEkpe2lmKG9lLmlzQnVmZmVyKHNlKXx8KHNlPW9lLmZyb20oc2UsImJpbmFyeSIpKSxNJiYob2UuaXNCdWZmZXIoTSl8fChNPW9lLmZyb20oTSwiYmluYXJ5IikpLDghPT1NLmxlbmd0aCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNhbHQgc2hvdWxkIGJl''@;'; put 'put ''IEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGgiKTtmb3IodmFyIGo9Ty84LEc9b2UuYWxsb2MoaiksRD1vZS5hbGxvYyhJfHwwKSxUPW9lLmFsbG9jKDApO2o+MHx8ST4wOyl7dmFyIEU9bmV3IHg7RS51cGRhdGUoVCksRS51cGRhdGUoc2UpLE0mJkUudXBkYXRlKE0pLFQ9RS5kaWdlc3QoKTt2''@;'; put 'put ''YXIgej0wO2lmKGo+MCl7dmFyIE49Ry5sZW5ndGgtajt6PU1hdGgubWluKGosVC5sZW5ndGgpLFQuY29weShHLE4sMCx6KSxqLT16fWlmKHo8VC5sZW5ndGgmJkk+MCl7dmFyIEI9RC5sZW5ndGgtSSxaPU1hdGgubWluKEksVC5sZW5ndGgteik7VC5jb3B5KEQsQix6LHorWiksSS09Wn19cmV0''@;'; put 'put ''dXJuIFQuZmlsbCgwKSx7a2V5OkcsaXY6RH19fSwxMzY4NjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjcwNTQpLkJ1ZmZlcix4PVIoNzA0NSkuVHJhbnNmb3JtO2Z1bmN0aW9uIE0oTyl7eC5jYWxsKHRoaXMpLHRoaXMuX2Jsb2NrPW9lLmFsbG9jVW5zYWZlKE8pLHRoaXMu''@;'; put 'put ''X2Jsb2NrU2l6ZT1PLHRoaXMuX2Jsb2NrT2Zmc2V0PTAsdGhpcy5fbGVuZ3RoPVswLDAsMCwwXSx0aGlzLl9maW5hbGl6ZWQ9ITF9Uig3MTk5MykoTSx4KSxNLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKE8sSSxqKXt2YXIgRz1udWxsO3RyeXt0aGlzLnVwZGF0ZShPLEkpfWNhdGNo''@;'; put 'put ''KEQpe0c9RH1qKEcpfSxNLnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oTyl7dmFyIEk9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKGope0k9an1PKEkpfSxNLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oTyxJKXtpZihmdW5jdGlvbiBzZShPLEkpe2lmKCFvZS5p''@;'; put 'put ''c0J1ZmZlcihPKSYmInN0cmluZyIhPXR5cGVvZiBPKXRocm93IG5ldyBUeXBlRXJyb3IoSSsiIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXIiKX0oTywiRGF0YSIpLHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO29lLmlzQnVmZmVy''@;'; put 'put ''KE8pfHwoTz1vZS5mcm9tKE8sSSkpO2Zvcih2YXIgaj10aGlzLl9ibG9jayxHPTA7dGhpcy5fYmxvY2tPZmZzZXQrTy5sZW5ndGgtRz49dGhpcy5fYmxvY2tTaXplOyl7Zm9yKHZhciBEPXRoaXMuX2Jsb2NrT2Zmc2V0O0Q8dGhpcy5fYmxvY2tTaXplOylqW0QrK109T1tHKytdO3RoaXMuX3Vw''@;'; put 'put ''ZGF0ZSgpLHRoaXMuX2Jsb2NrT2Zmc2V0PTB9Zm9yKDtHPE8ubGVuZ3RoOylqW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPU9bRysrXTtmb3IodmFyIFQ9MCxFPTgqTy5sZW5ndGg7RT4wOysrVCl0aGlzLl9sZW5ndGhbVF0rPUUsKEU9dGhpcy5fbGVuZ3RoW1RdLzQyOTQ5NjcyOTZ8MCk+MCYmKHRo''@;'; put 'put ''aXMuX2xlbmd0aFtUXS09NDI5NDk2NzI5NipFKTtyZXR1cm4gdGhpc30sTS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQiKX0sTS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKE8pe2lmKHRoaXMuX2ZpbmFs''@;'; put 'put ''aXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMDt2YXIgST10aGlzLl9kaWdlc3QoKTt2b2lkIDAhPT1PJiYoST1JLnRvU3RyaW5nKE8pKSx0aGlzLl9ibG9jay5maWxsKDApLHRoaXMuX2Jsb2NrT2Zmc2V0PTA7Zm9yKHZhciBq''@;'; put 'put ''PTA7ajw0Oysrail0aGlzLl9sZW5ndGhbal09MDtyZXR1cm4gSX0sTS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWQiKX0sUWUuZXhwb3J0cz1NfSw1MjUyOTooUWUsTWUsUik9Pnt2YXIgb2U9TWU7b2UudXRp''@;'; put 'put ''bHM9Uig2ODI4Myksb2UuY29tbW9uPVIoMTI5MDEpLG9lLnNoYT1SKDc4NTI4KSxvZS5yaXBlbWQ9UigxNTI4Myksb2UuaG1hYz1SKDM3MTYzKSxvZS5zaGExPW9lLnNoYS5zaGExLG9lLnNoYTI1Nj1vZS5zaGEuc2hhMjU2LG9lLnNoYTIyND1vZS5zaGEuc2hhMjI0LG9lLnNoYTM4ND1vZS5z''@;'; put 'put ''aGEuc2hhMzg0LG9lLnNoYTUxMj1vZS5zaGEuc2hhNTEyLG9lLnJpcGVtZDE2MD1vZS5yaXBlbWQucmlwZW1kMTYwfSwxMjkwMTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNjgyODMpLHg9UigzOTIxMCk7ZnVuY3Rpb24gbSgpe3RoaXMucGVuZGluZz1udWxsLHRoaXMucGVu''@;'; put 'put ''ZGluZ1RvdGFsPTAsdGhpcy5ibG9ja1NpemU9dGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemUsdGhpcy5vdXRTaXplPXRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZSx0aGlzLmhtYWNTdHJlbmd0aD10aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aCx0aGlzLnBhZExlbmd0aD10aGlzLmNvbnN0''@;'; put 'put ''cnVjdG9yLnBhZExlbmd0aC84LHRoaXMuZW5kaWFuPSJiaWciLHRoaXMuX2RlbHRhOD10aGlzLmJsb2NrU2l6ZS84LHRoaXMuX2RlbHRhMzI9dGhpcy5ibG9ja1NpemUvMzJ9TWUuQmxvY2tIYXNoPW0sbS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKE0sTyl7aWYoTT1vZS50b0FycmF5KE0s''@;'; put 'put ''TyksdGhpcy5wZW5kaW5nPXRoaXMucGVuZGluZz90aGlzLnBlbmRpbmcuY29uY2F0KE0pOk0sdGhpcy5wZW5kaW5nVG90YWwrPU0ubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dmFyIEk9KE09dGhpcy5wZW5kaW5nKS5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMu''@;'; put 'put ''cGVuZGluZz1NLnNsaWNlKE0ubGVuZ3RoLUksTS5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLE09b2Uuam9pbjMyKE0sMCxNLmxlbmd0aC1JLHRoaXMuZW5kaWFuKTtmb3IodmFyIGo9MDtqPE0ubGVuZ3RoO2orPXRoaXMuX2RlbHRhMzIpdGhp''@;'; put 'put ''cy5fdXBkYXRlKE0saixqK3RoaXMuX2RlbHRhMzIpfXJldHVybiB0aGlzfSxtLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oTSl7cmV0dXJuIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKSx4KG51bGw9PT10aGlzLnBlbmRpbmcpLHRoaXMuX2RpZ2VzdChNKX0sbS5wcm90b3R5cGUuX3BhZD1m''@;'; put 'put ''dW5jdGlvbigpe3ZhciBNPXRoaXMucGVuZGluZ1RvdGFsLE89dGhpcy5fZGVsdGE4LEk9Ty0oTSt0aGlzLnBhZExlbmd0aCklTyxqPW5ldyBBcnJheShJK3RoaXMucGFkTGVuZ3RoKTtqWzBdPTEyODtmb3IodmFyIEc9MTtHPEk7RysrKWpbR109MDtpZihNPDw9MywiYmlnIj09PXRoaXMuZW5k''@;'; put 'put ''aWFuKXtmb3IodmFyIEQ9ODtEPHRoaXMucGFkTGVuZ3RoO0QrKylqW0crK109MDtqW0crK109MCxqW0crK109MCxqW0crK109MCxqW0crK109MCxqW0crK109TT4+PjI0JjI1NSxqW0crK109TT4+PjE2JjI1NSxqW0crK109TT4+PjgmMjU1LGpbRysrXT0yNTUmTX1lbHNlIGZvcihqW0crK109''@;'; put 'put ''MjU1Jk0saltHKytdPU0+Pj44JjI1NSxqW0crK109TT4+PjE2JjI1NSxqW0crK109TT4+PjI0JjI1NSxqW0crK109MCxqW0crK109MCxqW0crK109MCxqW0crK109MCxEPTg7RDx0aGlzLnBhZExlbmd0aDtEKyspaltHKytdPTA7cmV0dXJuIGp9fSwzNzE2MzooUWUsTWUsUik9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIG9lPVIoNjgyODMpLHg9UigzOTIxMCk7ZnVuY3Rpb24gbShzZSxNLE8pe2lmKCEodGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbShzZSxNLE8pO3RoaXMuSGFzaD1zZSx0aGlzLmJsb2NrU2l6ZT1zZS5ibG9ja1NpemUvOCx0aGlzLm91dFNpemU9c2Uub3V0U2l6ZS84''@;'; put 'put ''LHRoaXMuaW5uZXI9bnVsbCx0aGlzLm91dGVyPW51bGwsdGhpcy5faW5pdChvZS50b0FycmF5KE0sTykpfVFlLmV4cG9ydHM9bSxtLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihNKXtNLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSYmKE09KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShNKS5kaWdlc3Qo''@;'; put 'put ''KSkseChNLmxlbmd0aDw9dGhpcy5ibG9ja1NpemUpO2Zvcih2YXIgTz1NLmxlbmd0aDtPPHRoaXMuYmxvY2tTaXplO08rKylNLnB1c2goMCk7Zm9yKE89MDtPPE0ubGVuZ3RoO08rKylNW09dXj01NDtmb3IodGhpcy5pbm5lcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKE0pLE89MDtPPE0ubGVu''@;'; put 'put ''Z3RoO08rKylNW09dXj0xMDY7dGhpcy5vdXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKE0pfSxtLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oTSxPKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoTSxPKSx0aGlzfSxtLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oTSl7cmV0dXJuIHRo''@;'; put 'put ''aXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpLHRoaXMub3V0ZXIuZGlnZXN0KE0pfX0sMTUyODM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDY4MjgzKSx4PVIoMTI5MDEpLG09b2Uucm90bDMyLHNlPW9lLnN1bTMyLE09b2Uuc3VtMzJfMyxPPW9lLnN1bTMy''@;'; put 'put ''XzQsST14LkJsb2NrSGFzaDtmdW5jdGlvbiBqKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaikpcmV0dXJuIG5ldyBqO0kuY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx0aGlzLmVuZGlhbj0ibGl0dGxlIn1m''@;'; put 'put ''dW5jdGlvbiBHKFosWSxVLHEpe3JldHVybiBaPD0xNT9ZXlVecTpaPD0zMT9ZJlV8flkmcTpaPD00Nz8oWXx+VSlecTpaPD02Mz9ZJnF8VSZ+cTpZXihVfH5xKX1mdW5jdGlvbiBUKFope3JldHVybiBaPD0xNT8xMzUyODI5OTI2Olo8PTMxPzE1NDg2MDM2ODQ6Wjw9NDc/MTgzNjA3MjY5MTpa''@;'; put 'put ''PD02Mz8yMDUzOTk0MjE3OjB9b2UuaW5oZXJpdHMoaixJKSxNZS5yaXBlbWQxNjA9aixqLmJsb2NrU2l6ZT01MTIsai5vdXRTaXplPTE2MCxqLmhtYWNTdHJlbmd0aD0xOTIsai5wYWRMZW5ndGg9NjQsai5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihZLFUpe2Zvcih2YXIgcT10aGlzLmhb''@;'; put 'put ''MF0sSj10aGlzLmhbMV0sZWU9dGhpcy5oWzJdLHJlPXRoaXMuaFszXSxpZT10aGlzLmhbNF0sdWU9cSxsZT1KLGFlPWVlLFc9cmUsYj1pZSxBPTA7QTw4MDtBKyspe3ZhciBGPXNlKG0oTyhxLEcoQSxKLGVlLHJlKSxZW0VbQV0rVV0sKFo9QSk8PTE1PzA6Wjw9MzE/MTUxODUwMDI0OTpaPD00''@;'; put 'put ''Nz8xODU5Nzc1MzkzOlo8PTYzPzI0MDA5NTk3MDg6Mjg0MDg1MzgzOCksTltBXSksaWUpO3E9aWUsaWU9cmUscmU9bShlZSwxMCksZWU9SixKPUYsRj1zZShtKE8odWUsRyg3OS1BLGxlLGFlLFcpLFlbeltBXStVXSxUKEEpKSxCW0FdKSxiKSx1ZT1iLGI9VyxXPW0oYWUsMTApLGFlPWxlLGxl''@;'; put 'put ''PUZ9dmFyIFo7Rj1NKHRoaXMuaFsxXSxlZSxXKSx0aGlzLmhbMV09TSh0aGlzLmhbMl0scmUsYiksdGhpcy5oWzJdPU0odGhpcy5oWzNdLGllLHVlKSx0aGlzLmhbM109TSh0aGlzLmhbNF0scSxsZSksdGhpcy5oWzRdPU0odGhpcy5oWzBdLEosYWUpLHRoaXMuaFswXT1GfSxqLnByb3RvdHlw''@;'; put 'put ''ZS5fZGlnZXN0PWZ1bmN0aW9uKFkpe3JldHVybiJoZXgiPT09WT9vZS50b0hleDMyKHRoaXMuaCwibGl0dGxlIik6b2Uuc3BsaXQzMih0aGlzLmgsImxpdHRsZSIpfTt2YXIgRT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5''@;'; put 'put ''LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSx6PVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwz''@;'; put 'put ''LDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLE49WzExLDE0''@;'; put 'put ''LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEs''@;'; put 'put ''Niw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdLEI9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwx''@;'; put 'put ''NCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSw3ODUyODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7TWUuc2hhMT1SKDMzNDY4KSxNZS5zaGEyMjQ9Uig1NTYzKSxNZS5zaGEyNTY9UigyNzEzOCksTWUuc2hhMzg0''@;'; put 'put ''PVIoOTM4OTgpLE1lLnNoYTUxMj1SKDEwODI3KX0sMzM0Njg6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDY4MjgzKSx4PVIoMTI5MDEpLG09Uig5NTU0Miksc2U9b2Uucm90bDMyLE09b2Uuc3VtMzIsTz1vZS5zdW0zMl81LEk9bS5mdF8xLGo9eC5CbG9ja0hhc2gsRz1bMTUx''@;'; put 'put ''ODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml07ZnVuY3Rpb24gRCgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEQpKXJldHVybiBuZXcgRDtqLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUy''@;'; put 'put ''MF0sdGhpcy5XPW5ldyBBcnJheSg4MCl9b2UuaW5oZXJpdHMoRCxqKSxRZS5leHBvcnRzPUQsRC5ibG9ja1NpemU9NTEyLEQub3V0U2l6ZT0xNjAsRC5obWFjU3RyZW5ndGg9ODAsRC5wYWRMZW5ndGg9NjQsRC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihFLHope2Zvcih2YXIgTj10aGlz''@;'; put 'put ''LlcsQj0wO0I8MTY7QisrKU5bQl09RVt6K0JdO2Zvcig7QjxOLmxlbmd0aDtCKyspTltCXT1zZShOW0ItM11eTltCLThdXk5bQi0xNF1eTltCLTE2XSwxKTt2YXIgWj10aGlzLmhbMF0sWT10aGlzLmhbMV0sVT10aGlzLmhbMl0scT10aGlzLmhbM10sSj10aGlzLmhbNF07Zm9yKEI9MDtCPE4u''@;'; put 'put ''bGVuZ3RoO0IrKyl7dmFyIGVlPX5+KEIvMjApLHJlPU8oc2UoWiw1KSxJKGVlLFksVSxxKSxKLE5bQl0sR1tlZV0pO0o9cSxxPVUsVT1zZShZLDMwKSxZPVosWj1yZX10aGlzLmhbMF09TSh0aGlzLmhbMF0sWiksdGhpcy5oWzFdPU0odGhpcy5oWzFdLFkpLHRoaXMuaFsyXT1NKHRoaXMuaFsy''@;'; put 'put ''XSxVKSx0aGlzLmhbM109TSh0aGlzLmhbM10scSksdGhpcy5oWzRdPU0odGhpcy5oWzRdLEopfSxELnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKEUpe3JldHVybiJoZXgiPT09RT9vZS50b0hleDMyKHRoaXMuaCwiYmlnIik6b2Uuc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sNTU2MzooUWUs''@;'; put 'put ''TWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNjgyODMpLHg9UigyNzEzOCk7ZnVuY3Rpb24gbSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbTt4LmNhbGwodGhpcyksdGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0Mjkw''@;'; put 'put ''Nzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XX1vZS5pbmhlcml0cyhtLHgpLFFlLmV4cG9ydHM9bSxtLmJsb2NrU2l6ZT01MTIsbS5vdXRTaXplPTIyNCxtLmhtYWNTdHJlbmd0aD0xOTIsbS5wYWRMZW5ndGg9NjQsbS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihN''@;'; put 'put ''KXtyZXR1cm4iaGV4Ij09PU0/b2UudG9IZXgzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIik6b2Uuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSwiYmlnIil9fSwyNzEzODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNjgyODMpLHg9UigxMjkwMSksbT1SKDk1NTQyKSxzZT1S''@;'; put 'put ''KDM5MjEwKSxNPW9lLnN1bTMyLE89b2Uuc3VtMzJfNCxJPW9lLnN1bTMyXzUsaj1tLmNoMzIsRz1tLm1hajMyLEQ9bS5zMF8yNTYsVD1tLnMxXzI1NixFPW0uZzBfMjU2LHo9bS5nMV8yNTYsTj14LkJsb2NrSGFzaCxCPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5''@;'; put 'put ''NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgs''@;'; put 'put ''NjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1''@;'; put 'put ''NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYx''@;'; put 'put ''Niw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO2Z1bmN0aW9uIFoo''@;'; put 'put ''KXtpZighKHRoaXMgaW5zdGFuY2VvZiBaKSlyZXR1cm4gbmV3IFo7Ti5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLHRoaXMuaz1CLHRoaXMuVz1u''@;'; put 'put ''ZXcgQXJyYXkoNjQpfW9lLmluaGVyaXRzKFosTiksUWUuZXhwb3J0cz1aLFouYmxvY2tTaXplPTUxMixaLm91dFNpemU9MjU2LFouaG1hY1N0cmVuZ3RoPTE5MixaLnBhZExlbmd0aD02NCxaLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFUscSl7Zm9yKHZhciBKPXRoaXMuVyxlZT0wO2Vl''@;'; put 'put ''PDE2O2VlKyspSltlZV09VVtxK2VlXTtmb3IoO2VlPEoubGVuZ3RoO2VlKyspSltlZV09Tyh6KEpbZWUtMl0pLEpbZWUtN10sRShKW2VlLTE1XSksSltlZS0xNl0pO3ZhciByZT10aGlzLmhbMF0saWU9dGhpcy5oWzFdLHVlPXRoaXMuaFsyXSxsZT10aGlzLmhbM10sYWU9dGhpcy5oWzRdLFc9''@;'; put 'put ''dGhpcy5oWzVdLGI9dGhpcy5oWzZdLEE9dGhpcy5oWzddO2ZvcihzZSh0aGlzLmsubGVuZ3RoPT09Si5sZW5ndGgpLGVlPTA7ZWU8Si5sZW5ndGg7ZWUrKyl7dmFyIEY9SShBLFQoYWUpLGooYWUsVyxiKSx0aGlzLmtbZWVdLEpbZWVdKSxIPU0oRChyZSksRyhyZSxpZSx1ZSkpO0E9YixiPVcs''@;'; put 'put ''Vz1hZSxhZT1NKGxlLEYpLGxlPXVlLHVlPWllLGllPXJlLHJlPU0oRixIKX10aGlzLmhbMF09TSh0aGlzLmhbMF0scmUpLHRoaXMuaFsxXT1NKHRoaXMuaFsxXSxpZSksdGhpcy5oWzJdPU0odGhpcy5oWzJdLHVlKSx0aGlzLmhbM109TSh0aGlzLmhbM10sbGUpLHRoaXMuaFs0XT1NKHRoaXMu''@;'; put 'put ''aFs0XSxhZSksdGhpcy5oWzVdPU0odGhpcy5oWzVdLFcpLHRoaXMuaFs2XT1NKHRoaXMuaFs2XSxiKSx0aGlzLmhbN109TSh0aGlzLmhbN10sQSl9LFoucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oVSl7cmV0dXJuImhleCI9PT1VP29lLnRvSGV4MzIodGhpcy5oLCJiaWciKTpvZS5zcGxp''@;'; put 'put ''dDMyKHRoaXMuaCwiYmlnIil9fSw5Mzg5ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNjgyODMpLHg9UigxMDgyNyk7ZnVuY3Rpb24gbSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG0pKXJldHVybiBuZXcgbTt4LmNhbGwodGhpcyksdGhpcy5oPVszNDE4MDcwMzY1LDMyMzgz''@;'; put 'put ''NzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX1vZS5pbmhl''@;'; put 'put ''cml0cyhtLHgpLFFlLmV4cG9ydHM9bSxtLmJsb2NrU2l6ZT0xMDI0LG0ub3V0U2l6ZT0zODQsbS5obWFjU3RyZW5ndGg9MTkyLG0ucGFkTGVuZ3RoPTEyOCxtLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKE0pe3JldHVybiJoZXgiPT09TT9vZS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDEy''@;'; put 'put ''KSwiYmlnIik6b2Uuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpfX0sMTA4Mjc6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDY4MjgzKSx4PVIoMTI5MDEpLG09UigzOTIxMCksc2U9b2Uucm90cjY0X2hpLE09b2Uucm90cjY0X2xvLE89b2Uuc2hyNjRfaGksST1v''@;'; put 'put ''ZS5zaHI2NF9sbyxqPW9lLnN1bTY0LEc9b2Uuc3VtNjRfaGksRD1vZS5zdW02NF9sbyxUPW9lLnN1bTY0XzRfaGksRT1vZS5zdW02NF80X2xvLHo9b2Uuc3VtNjRfNV9oaSxOPW9lLnN1bTY0XzVfbG8sQj14LkJsb2NrSGFzaCxaPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2''@;'; put 'put ''MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEw''@;'; put 'put ''NTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEz''@;'; put 'put ''NDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIs''@;'; put 'put ''Mzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYz''@;'; put 'put ''MDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3''@;'; put 'put ''NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0''@;'; put 'put ''NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3''@;'; put 'put ''ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1''@;'; put 'put ''MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2''@;'; put 'put ''LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcx''@;'; put 'put ''Njc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gWSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFkpKXJldHVybiBuZXcgWTtCLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIs''@;'; put 'put ''NDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XSx0aGlzLms9Wix0aGlzLlc9bmV3IEFycmF5KDE2MCl9ZnVuY3Rpb24gVShGLEgs''@;'; put 'put ''ZyxDLGspe3ZhciBfPUYmZ15+RiZrO3JldHVybiBfPDAmJihfKz00Mjk0OTY3Mjk2KSxffWZ1bmN0aW9uIHEoRixILGcsQyxrLF8pe3ZhciBwPUgmQ15+SCZfO3JldHVybiBwPDAmJihwKz00Mjk0OTY3Mjk2KSxwfWZ1bmN0aW9uIEooRixILGcsQyxrKXt2YXIgXz1GJmdeRiZrXmcmaztyZXR1''@;'; put 'put ''cm4gXzwwJiYoXys9NDI5NDk2NzI5NiksX31mdW5jdGlvbiBlZShGLEgsZyxDLGssXyl7dmFyIHA9SCZDXkgmX15DJl87cmV0dXJuIHA8MCYmKHArPTQyOTQ5NjcyOTYpLHB9ZnVuY3Rpb24gcmUoRixIKXt2YXIgXz1zZShGLEgsMjgpXnNlKEgsRiwyKV5zZShILEYsNyk7cmV0dXJuIF88MCYm''@;'; put 'put ''KF8rPTQyOTQ5NjcyOTYpLF99ZnVuY3Rpb24gaWUoRixIKXt2YXIgXz1NKEYsSCwyOCleTShILEYsMileTShILEYsNyk7cmV0dXJuIF88MCYmKF8rPTQyOTQ5NjcyOTYpLF99ZnVuY3Rpb24gdWUoRixIKXt2YXIgXz1zZShGLEgsMTQpXnNlKEYsSCwxOClec2UoSCxGLDkpO3JldHVybiBfPDAm''@;'; put 'put ''JihfKz00Mjk0OTY3Mjk2KSxffWZ1bmN0aW9uIGxlKEYsSCl7dmFyIF89TShGLEgsMTQpXk0oRixILDE4KV5NKEgsRiw5KTtyZXR1cm4gXzwwJiYoXys9NDI5NDk2NzI5NiksX31mdW5jdGlvbiBhZShGLEgpe3ZhciBfPXNlKEYsSCwxKV5zZShGLEgsOCleTyhGLEgsNyk7cmV0dXJuIF88MCYm''@;'; put 'put ''KF8rPTQyOTQ5NjcyOTYpLF99ZnVuY3Rpb24gVyhGLEgpe3ZhciBfPU0oRixILDEpXk0oRixILDgpXkkoRixILDcpO3JldHVybiBfPDAmJihfKz00Mjk0OTY3Mjk2KSxffWZ1bmN0aW9uIGIoRixIKXt2YXIgXz1zZShGLEgsMTkpXnNlKEgsRiwyOSleTyhGLEgsNik7cmV0dXJuIF88MCYmKF8r''@;'; put 'put ''PTQyOTQ5NjcyOTYpLF99ZnVuY3Rpb24gQShGLEgpe3ZhciBfPU0oRixILDE5KV5NKEgsRiwyOSleSShGLEgsNik7cmV0dXJuIF88MCYmKF8rPTQyOTQ5NjcyOTYpLF99b2UuaW5oZXJpdHMoWSxCKSxRZS5leHBvcnRzPVksWS5ibG9ja1NpemU9MTAyNCxZLm91dFNpemU9NTEyLFkuaG1hY1N0''@;'; put 'put ''cmVuZ3RoPTE5MixZLnBhZExlbmd0aD0xMjgsWS5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbihILGcpe2Zvcih2YXIgQz10aGlzLlcsaz0wO2s8MzI7aysrKUNba109SFtnK2tdO2Zvcig7azxDLmxlbmd0aDtrKz0yKXt2YXIgXz1iKENbay00XSxDW2stM10pLHA9QShDW2stNF0s''@;'; put 'put ''Q1trLTNdKSx3PUNbay0xNF0sSz1DW2stMTNdLHRlPWFlKENbay0zMF0sQ1trLTI5XSksY2U9VyhDW2stMzBdLENbay0yOV0pLGhlPUNbay0zMl0sU2U9Q1trLTMxXTtDW2tdPVQoXyxwLHcsSyx0ZSxjZSxoZSxTZSksQ1trKzFdPUUoXyxwLHcsSyx0ZSxjZSxoZSxTZSl9fSxZLnByb3RvdHlw''@;'; put 'put ''ZS5fdXBkYXRlPWZ1bmN0aW9uKEgsZyl7dGhpcy5fcHJlcGFyZUJsb2NrKEgsZyk7dmFyIEM9dGhpcy5XLGs9dGhpcy5oWzBdLF89dGhpcy5oWzFdLHA9dGhpcy5oWzJdLHc9dGhpcy5oWzNdLEs9dGhpcy5oWzRdLHRlPXRoaXMuaFs1XSxjZT10aGlzLmhbNl0saGU9dGhpcy5oWzddLFNlPXRo''@;'; put 'put ''aXMuaFs4XSxMZT10aGlzLmhbOV0sSGU9dGhpcy5oWzEwXSx4ZT10aGlzLmhbMTFdLERlPXRoaXMuaFsxMl0sQmU9dGhpcy5oWzEzXSxHZT10aGlzLmhbMTRdLFVlPXRoaXMuaFsxNV07bSh0aGlzLmsubGVuZ3RoPT09Qy5sZW5ndGgpO2Zvcih2YXIgcWU9MDtxZTxDLmxlbmd0aDtxZSs9Mil7''@;'; put 'put ''dmFyIG90PUdlLEZlPVVlLHdlPXVlKFNlLExlKSxFZT1sZShTZSxMZSksSWU9VShTZSwwLEhlLDAsRGUpLFhlPXEoMCxMZSwwLHhlLDAsQmUpLHR0PXRoaXMua1txZV0sWmU9dGhpcy5rW3FlKzFdLGN0PUNbcWVdLGtlPUNbcWUrMV0sQWU9eihvdCxGZSx3ZSxFZSxJZSxYZSx0dCxaZSxjdCxr''@;'; put 'put ''ZSksamU9TihvdCxGZSx3ZSxFZSxJZSxYZSx0dCxaZSxjdCxrZSk7b3Q9cmUoayxfKSxGZT1pZShrLF8pLHdlPUooaywwLHAsMCxLKSxFZT1lZSgwLF8sMCx3LDAsdGUpO3ZhciBpdD1HKG90LEZlLHdlLEVlKSxzdD1EKG90LEZlLHdlLEVlKTtHZT1EZSxVZT1CZSxEZT1IZSxCZT14ZSxIZT1T''@;'; put 'put ''ZSx4ZT1MZSxTZT1HKGNlLGhlLEFlLGplKSxMZT1EKGhlLGhlLEFlLGplKSxjZT1LLGhlPXRlLEs9cCx0ZT13LHA9ayx3PV8saz1HKEFlLGplLGl0LHN0KSxfPUQoQWUsamUsaXQsc3QpfWoodGhpcy5oLDAsayxfKSxqKHRoaXMuaCwyLHAsdyksaih0aGlzLmgsNCxLLHRlKSxqKHRoaXMuaCw2''@;'; put 'put ''LGNlLGhlKSxqKHRoaXMuaCw4LFNlLExlKSxqKHRoaXMuaCwxMCxIZSx4ZSksaih0aGlzLmgsMTIsRGUsQmUpLGoodGhpcy5oLDE0LEdlLFVlKX0sWS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihIKXtyZXR1cm4iaGV4Ij09PUg/b2UudG9IZXgzMih0aGlzLmgsImJpZyIpOm9lLnNwbGl0''@;'; put 'put ''MzIodGhpcy5oLCJiaWciKX19LDk1NTQyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgeD1SKDY4MjgzKS5yb3RyMzI7ZnVuY3Rpb24gc2UoVCxFLHope3JldHVybiBUJkVeflQmen1mdW5jdGlvbiBNKFQsRSx6KXtyZXR1cm4gVCZFXlQmel5FJnp9ZnVuY3Rpb24gTyhULEUseil7cmV0''@;'; put 'put ''dXJuIFReRV56fU1lLmZ0XzE9ZnVuY3Rpb24gbShULEUseixOKXtyZXR1cm4gMD09PVQ/c2UoRSx6LE4pOjE9PT1UfHwzPT09VD9PKEUseixOKToyPT09VD9NKEUseixOKTp2b2lkIDB9LE1lLmNoMzI9c2UsTWUubWFqMzI9TSxNZS5wMzI9TyxNZS5zMF8yNTY9ZnVuY3Rpb24gSShUKXtyZXR1''@;'; put 'put ''cm4geChULDIpXngoVCwxMyleeChULDIyKX0sTWUuczFfMjU2PWZ1bmN0aW9uIGooVCl7cmV0dXJuIHgoVCw2KV54KFQsMTEpXngoVCwyNSl9LE1lLmcwXzI1Nj1mdW5jdGlvbiBHKFQpe3JldHVybiB4KFQsNyleeChULDE4KV5UPj4+M30sTWUuZzFfMjU2PWZ1bmN0aW9uIEQoVCl7cmV0dXJu''@;'; put 'put ''IHgoVCwxNyleeChULDE5KV5UPj4+MTB9fSw2ODI4MzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzkyMTApLHg9Uig3MTk5Myk7ZnVuY3Rpb24gbShBLEYpe3JldHVybiEoNTUyOTYhPSg2NDUxMiZBLmNoYXJDb2RlQXQoRikpfHxGPDB8fEYrMT49QS5sZW5ndGgpJiY1NjMy''@;'; put 'put ''MD09KDY0NTEyJkEuY2hhckNvZGVBdChGKzEpKX1mdW5jdGlvbiBPKEEpe3JldHVybihBPj4+MjR8QT4+PjgmNjUyODB8QTw8OCYxNjcxMTY4MHwoMjU1JkEpPDwyNCk+Pj4wfWZ1bmN0aW9uIGooQSl7cmV0dXJuIDE9PT1BLmxlbmd0aD8iMCIrQTpBfWZ1bmN0aW9uIEcoQSl7cmV0dXJuIDc9''@;'; put 'put ''PT1BLmxlbmd0aD8iMCIrQTo2PT09QS5sZW5ndGg/IjAwIitBOjU9PT1BLmxlbmd0aD8iMDAwIitBOjQ9PT1BLmxlbmd0aD8iMDAwMCIrQTozPT09QS5sZW5ndGg/IjAwMDAwIitBOjI9PT1BLmxlbmd0aD8iMDAwMDAwIitBOjE9PT1BLmxlbmd0aD8iMDAwMDAwMCIrQTpBfU1lLmluaGVyaXRz''@;'; put 'put ''PXgsTWUudG9BcnJheT1mdW5jdGlvbiBzZShBLEYpe2lmKEFycmF5LmlzQXJyYXkoQSkpcmV0dXJuIEEuc2xpY2UoKTtpZighQSlyZXR1cm5bXTt2YXIgSD1bXTtpZigic3RyaW5nIj09dHlwZW9mIEEpaWYoRil7aWYoImhleCI9PT1GKWZvcigoQT1BLnJlcGxhY2UoL1teYS16MC05XSsvZ2ks''@;'; put 'put ''IiIpKS5sZW5ndGglMiE9MCYmKEE9IjAiK0EpLEM9MDtDPEEubGVuZ3RoO0MrPTIpSC5wdXNoKHBhcnNlSW50KEFbQ10rQVtDKzFdLDE2KSl9ZWxzZSBmb3IodmFyIGc9MCxDPTA7QzxBLmxlbmd0aDtDKyspe3ZhciBrPUEuY2hhckNvZGVBdChDKTtrPDEyOD9IW2crK109azprPDIwNDg/KEhb''@;'; put 'put ''ZysrXT1rPj42fDE5MixIW2crK109NjMma3wxMjgpOm0oQSxDKT8oaz02NTUzNisoKDEwMjMmayk8PDEwKSsoMTAyMyZBLmNoYXJDb2RlQXQoKytDKSksSFtnKytdPWs+PjE4fDI0MCxIW2crK109az4+MTImNjN8MTI4LEhbZysrXT1rPj42JjYzfDEyOCxIW2crK109NjMma3wxMjgpOihIW2cr''@;'; put 'put ''K109az4+MTJ8MjI0LEhbZysrXT1rPj42JjYzfDEyOCxIW2crK109NjMma3wxMjgpfWVsc2UgZm9yKEM9MDtDPEEubGVuZ3RoO0MrKylIW0NdPTB8QVtDXTtyZXR1cm4gSH0sTWUudG9IZXg9ZnVuY3Rpb24gTShBKXtmb3IodmFyIEY9IiIsSD0wO0g8QS5sZW5ndGg7SCsrKUYrPWooQVtIXS50''@;'; put 'put ''b1N0cmluZygxNikpO3JldHVybiBGfSxNZS5odG9ubD1PLE1lLnRvSGV4MzI9ZnVuY3Rpb24gSShBLEYpe2Zvcih2YXIgSD0iIixnPTA7ZzxBLmxlbmd0aDtnKyspe3ZhciBDPUFbZ107ImxpdHRsZSI9PT1GJiYoQz1PKEMpKSxIKz1HKEMudG9TdHJpbmcoMTYpKX1yZXR1cm4gSH0sTWUuemVy''@;'; put 'put ''bzI9aixNZS56ZXJvOD1HLE1lLmpvaW4zMj1mdW5jdGlvbiBEKEEsRixILGcpe3ZhciBDPUgtRjtvZShDJTQ9PTApO2Zvcih2YXIgaz1uZXcgQXJyYXkoQy80KSxfPTAscD1GO188ay5sZW5ndGg7XysrLHArPTQpa1tfXT0oImJpZyI9PT1nP0FbcF08PDI0fEFbcCsxXTw8MTZ8QVtwKzJdPDw4''@;'; put 'put ''fEFbcCszXTpBW3ArM108PDI0fEFbcCsyXTw8MTZ8QVtwKzFdPDw4fEFbcF0pPj4+MDtyZXR1cm4ga30sTWUuc3BsaXQzMj1mdW5jdGlvbiBUKEEsRil7Zm9yKHZhciBIPW5ldyBBcnJheSg0KkEubGVuZ3RoKSxnPTAsQz0wO2c8QS5sZW5ndGg7ZysrLEMrPTQpe3ZhciBrPUFbZ107ImJpZyI9''@;'; put 'put ''PT1GPyhIW0NdPWs+Pj4yNCxIW0MrMV09az4+PjE2JjI1NSxIW0MrMl09az4+PjgmMjU1LEhbQyszXT0yNTUmayk6KEhbQyszXT1rPj4+MjQsSFtDKzJdPWs+Pj4xNiYyNTUsSFtDKzFdPWs+Pj44JjI1NSxIW0NdPTI1NSZrKX1yZXR1cm4gSH0sTWUucm90cjMyPWZ1bmN0aW9uIEUoQSxGKXty''@;'; put 'put ''ZXR1cm4gQT4+PkZ8QTw8MzItRn0sTWUucm90bDMyPWZ1bmN0aW9uIHooQSxGKXtyZXR1cm4gQTw8RnxBPj4+MzItRn0sTWUuc3VtMzI9ZnVuY3Rpb24gTihBLEYpe3JldHVybiBBK0Y+Pj4wfSxNZS5zdW0zMl8zPWZ1bmN0aW9uIEIoQSxGLEgpe3JldHVybiBBK0YrSD4+PjB9LE1lLnN1bTMy''@;'; put 'put ''XzQ9ZnVuY3Rpb24gWihBLEYsSCxnKXtyZXR1cm4gQStGK0grZz4+PjB9LE1lLnN1bTMyXzU9ZnVuY3Rpb24gWShBLEYsSCxnLEMpe3JldHVybiBBK0YrSCtnK0M+Pj4wfSxNZS5zdW02ND1mdW5jdGlvbiBVKEEsRixILGcpe3ZhciBfPWcrQVtGKzFdPj4+MDtBW0ZdPShfPGc/MTowKStIK0Fb''@;'; put 'put ''Rl0+Pj4wLEFbRisxXT1ffSxNZS5zdW02NF9oaT1mdW5jdGlvbiBxKEEsRixILGcpe3JldHVybihGK2c+Pj4wPEY/MTowKStBK0g+Pj4wfSxNZS5zdW02NF9sbz1mdW5jdGlvbiBKKEEsRixILGcpe3JldHVybiBGK2c+Pj4wfSxNZS5zdW02NF80X2hpPWZ1bmN0aW9uIGVlKEEsRixILGcsQyxr''@;'; put 'put ''LF8scCl7dmFyIHc9MCxLPUY7cmV0dXJuIHcrPShLPUsrZz4+PjApPEY/MTowLHcrPShLPUsraz4+PjApPGs/MTowLEErSCtDK18rKHcrPShLPUsrcD4+PjApPHA/MTowKT4+PjB9LE1lLnN1bTY0XzRfbG89ZnVuY3Rpb24gcmUoQSxGLEgsZyxDLGssXyxwKXtyZXR1cm4gRitnK2srcD4+PjB9''@;'; put 'put ''LE1lLnN1bTY0XzVfaGk9ZnVuY3Rpb24gaWUoQSxGLEgsZyxDLGssXyxwLHcsSyl7dmFyIHRlPTAsY2U9RjtyZXR1cm4gdGUrPShjZT1jZStnPj4+MCk8Rj8xOjAsdGUrPShjZT1jZStrPj4+MCk8az8xOjAsdGUrPShjZT1jZStwPj4+MCk8cD8xOjAsQStIK0MrXyt3Kyh0ZSs9KGNlPWNlK0s+''@;'; put 'put ''Pj4wKTxLPzE6MCk+Pj4wfSxNZS5zdW02NF81X2xvPWZ1bmN0aW9uIHVlKEEsRixILGcsQyxrLF8scCx3LEspe3JldHVybiBGK2craytwK0s+Pj4wfSxNZS5yb3RyNjRfaGk9ZnVuY3Rpb24gbGUoQSxGLEgpe3JldHVybihGPDwzMi1IfEE+Pj5IKT4+PjB9LE1lLnJvdHI2NF9sbz1mdW5jdGlv''@;'; put 'put ''biBhZShBLEYsSCl7cmV0dXJuKEE8PDMyLUh8Rj4+PkgpPj4+MH0sTWUuc2hyNjRfaGk9ZnVuY3Rpb24gVyhBLEYsSCl7cmV0dXJuIEE+Pj5IfSxNZS5zaHI2NF9sbz1mdW5jdGlvbiBiKEEsRixIKXtyZXR1cm4oQTw8MzItSHxGPj4+SCk+Pj4wfX0sMzM1NTY6KFFlLE1lLFIpPT57InVzZSBz''@;'; put 'put ''dHJpY3QiO3ZhciBvZT1SKDUyNTI5KSx4PVIoMjE4MzIpLG09UigzOTIxMCk7ZnVuY3Rpb24gc2UoTSl7aWYoISh0aGlzIGluc3RhbmNlb2Ygc2UpKXJldHVybiBuZXcgc2UoTSk7dGhpcy5oYXNoPU0uaGFzaCx0aGlzLnByZWRSZXNpc3Q9ISFNLnByZWRSZXNpc3QsdGhpcy5vdXRMZW49dGhp''@;'; put 'put ''cy5oYXNoLm91dFNpemUsdGhpcy5taW5FbnRyb3B5PU0ubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aCx0aGlzLl9yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFyIE89eC50b0FycmF5KE0uZW50cm9weSxNLmVu''@;'; put 'put ''dHJvcHlFbmN8fCJoZXgiKSxJPXgudG9BcnJheShNLm5vbmNlLE0ubm9uY2VFbmN8fCJoZXgiKSxqPXgudG9BcnJheShNLnBlcnMsTS5wZXJzRW5jfHwiaGV4Iik7bShPLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1p''@;'; put 'put ''bkVudHJvcHkrIiBiaXRzIiksdGhpcy5faW5pdChPLEksail9UWUuZXhwb3J0cz1zZSxzZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oTyxJLGope3ZhciBHPU8uY29uY2F0KEkpLmNvbmNhdChqKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhp''@;'; put 'put ''cy5vdXRMZW4vOCk7Zm9yKHZhciBEPTA7RDx0aGlzLlYubGVuZ3RoO0QrKyl0aGlzLktbRF09MCx0aGlzLlZbRF09MTt0aGlzLl91cGRhdGUoRyksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LHNlLnByb3RvdHlwZS5faG1hYz1mdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBuZXcgb2UuaG1hYyh0aGlzLmhhc2gsdGhpcy5LKX0sc2UucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oTyl7dmFyIEk9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO08mJihJPUkudXBkYXRlKE8pKSx0aGlzLks9SS5kaWdlc3QoKSx0aGlzLlY9dGhp''@;'; put 'put ''cy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLE8mJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShPKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sc2UucHJvdG90eXBlLnJl''@;'; put 'put ''c2VlZD1mdW5jdGlvbihPLEksaixHKXsic3RyaW5nIiE9dHlwZW9mIEkmJihHPWosaj1JLEk9bnVsbCksTz14LnRvQXJyYXkoTyxJKSxqPXgudG9BcnJheShqLEcpLG0oTy5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5t''@;'; put 'put ''aW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX3VwZGF0ZShPLmNvbmNhdChqfHxbXSkpLHRoaXMuX3Jlc2VlZD0xfSxzZS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oTyxJLGosRyl7aWYodGhpcy5fcmVzZWVkPnRoaXMucmVzZWVkSW50ZXJ2YWwpdGhyb3cgbmV3IEVycm9yKCJSZXNlZWQg''@;'; put 'put ''aXMgcmVxdWlyZWQiKTsic3RyaW5nIiE9dHlwZW9mIEkmJihHPWosaj1JLEk9bnVsbCksaiYmKGo9eC50b0FycmF5KGosR3x8ImhleCIpLHRoaXMuX3VwZGF0ZShqKSk7Zm9yKHZhciBEPVtdO0QubGVuZ3RoPE87KXRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCks''@;'; put 'put ''RD1ELmNvbmNhdCh0aGlzLlYpO3ZhciBUPUQuc2xpY2UoMCxPKTtyZXR1cm4gdGhpcy5fdXBkYXRlKGopLHRoaXMuX3Jlc2VlZCsrLHguZW5jb2RlKFQsSSl9fSw5MzY5NDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoOTM4MDcpLkJ1ZmZlcjtNZS5fZGJjcz1HO2Zvcih2YXIg''@;'; put 'put ''eD0tMSxtPS0yLHNlPS0xMCxNPS0xZTMsTz1uZXcgQXJyYXkoMjU2KSxqPTA7ajwyNTY7aisrKU9bal09eDtmdW5jdGlvbiBHKHosTil7aWYodGhpcy5lbmNvZGluZ05hbWU9ei5lbmNvZGluZ05hbWUsIXopdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRo''@;'; put 'put ''ZSBkYXRhLiIpO2lmKCF6LnRhYmxlKXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgJyIrdGhpcy5lbmNvZGluZ05hbWUrIicgaGFzIG5vIGRhdGEuIik7dmFyIEI9ei50YWJsZSgpO3RoaXMuZGVjb2RlVGFibGVzPVtdLHRoaXMuZGVjb2RlVGFibGVzWzBdPU8uc2xpY2UoMCksdGhpcy5kZWNv''@;'; put 'put ''ZGVUYWJsZVNlcT1bXTtmb3IodmFyIFo9MDtaPEIubGVuZ3RoO1orKyl0aGlzLl9hZGREZWNvZGVDaHVuayhCW1pdKTt0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1OLmRlZmF1bHRDaGFyVW5pY29kZSx0aGlzLmVuY29kZVRhYmxlPVtdLHRoaXMuZW5jb2RlVGFibGVTZXE9W107dmFyIFk9e307''@;'; put 'put ''aWYoei5lbmNvZGVTa2lwVmFscylmb3IoWj0wO1o8ei5lbmNvZGVTa2lwVmFscy5sZW5ndGg7WisrKXt2YXIgVT16LmVuY29kZVNraXBWYWxzW1pdO2lmKCJudW1iZXIiPT10eXBlb2YgVSlZW1VdPSEwO2Vsc2UgZm9yKHZhciBxPVUuZnJvbTtxPD1VLnRvO3ErKylZW3FdPSEwfWlmKHRoaXMu''@;'; put 'put ''X2ZpbGxFbmNvZGVUYWJsZSgwLDAsWSksei5lbmNvZGVBZGQpZm9yKHZhciBKIGluIHouZW5jb2RlQWRkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LmVuY29kZUFkZCxKKSYmdGhpcy5fc2V0RW5jb2RlQ2hhcihKLmNoYXJDb2RlQXQoMCksei5lbmNvZGVBZGRbSl0p''@;'; put 'put ''O2lmKHRoaXMuZGVmQ2hhclNCPXRoaXMuZW5jb2RlVGFibGVbMF1bTi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKV0sdGhpcy5kZWZDaGFyU0I9PT14JiYodGhpcy5kZWZDaGFyU0I9dGhpcy5lbmNvZGVUYWJsZVswXVsiPyJdKSx0aGlzLmRlZkNoYXJTQj09PXgmJih0aGlz''@;'; put 'put ''LmRlZkNoYXJTQj02MyksImZ1bmN0aW9uIj09dHlwZW9mIHouZ2IxODAzMCl7dGhpcy5nYjE4MDMwPXouZ2IxODAzMCgpO3ZhciBlZT10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgscmU9dGhpcy5kZWNvZGVUYWJsZXNbZWVdPU8uc2xpY2UoMCksaWU9dGhpcy5kZWNvZGVUYWJsZXMubGVuZ3Ro''@;'; put 'put ''LHVlPXRoaXMuZGVjb2RlVGFibGVzW2llXT1PLnNsaWNlKDApO2ZvcihaPTEyOTtaPD0yNTQ7WisrKXt2YXIgYWU9dGhpcy5kZWNvZGVUYWJsZXNbTS10aGlzLmRlY29kZVRhYmxlc1swXVtaXV07Zm9yKHE9NDg7cTw9NTc7cSsrKWFlW3FdPU0tZWV9Zm9yKFo9MTI5O1o8PTI1NDtaKyspcmVb''@;'; put 'put ''Wl09TS1pZTtmb3IoWj00ODtaPD01NztaKyspdWVbWl09bX19ZnVuY3Rpb24gRCh6LE4pe3RoaXMubGVhZFN1cnJvZ2F0ZT0tMSx0aGlzLnNlcU9iaj12b2lkIDAsdGhpcy5lbmNvZGVUYWJsZT1OLmVuY29kZVRhYmxlLHRoaXMuZW5jb2RlVGFibGVTZXE9Ti5lbmNvZGVUYWJsZVNlcSx0aGlz''@;'; put 'put ''LmRlZmF1bHRDaGFyU2luZ2xlQnl0ZT1OLmRlZkNoYXJTQix0aGlzLmdiMTgwMzA9Ti5nYjE4MDMwfWZ1bmN0aW9uIFQoeixOKXt0aGlzLm5vZGVJZHg9MCx0aGlzLnByZXZCdWY9b2UuYWxsb2MoMCksdGhpcy5kZWNvZGVUYWJsZXM9Ti5kZWNvZGVUYWJsZXMsdGhpcy5kZWNvZGVUYWJsZVNl''@;'; put 'put ''cT1OLmRlY29kZVRhYmxlU2VxLHRoaXMuZGVmYXVsdENoYXJVbmljb2RlPU4uZGVmYXVsdENoYXJVbmljb2RlLHRoaXMuZ2IxODAzMD1OLmdiMTgwMzB9ZnVuY3Rpb24gRSh6LE4pe2lmKHpbMF0+TilyZXR1cm4tMTtmb3IodmFyIEI9MCxaPXoubGVuZ3RoO0I8Wi0xOyl7dmFyIFk9QitNYXRo''@;'; put 'put ''LmZsb29yKChaLUIrMSkvMik7eltZXTw9Tj9CPVk6Wj1ZfXJldHVybiBCfUcucHJvdG90eXBlLmVuY29kZXI9RCxHLnByb3RvdHlwZS5kZWNvZGVyPVQsRy5wcm90b3R5cGUuX2dldERlY29kZVRyaWVOb2RlPWZ1bmN0aW9uKHope2Zvcih2YXIgTj1bXTt6PjA7ej4+PTgpTi5wdXNoKDI1NSZ6''@;'; put 'put ''KTswPT1OLmxlbmd0aCYmTi5wdXNoKDApO2Zvcih2YXIgQj10aGlzLmRlY29kZVRhYmxlc1swXSxaPU4ubGVuZ3RoLTE7Wj4wO1otLSl7dmFyIFk9QltOW1pdXTtpZihZPT14KUJbTltaXV09TS10aGlzLmRlY29kZVRhYmxlcy5sZW5ndGgsdGhpcy5kZWNvZGVUYWJsZXMucHVzaChCPU8uc2xp''@;'; put 'put ''Y2UoMCkpO2Vsc2V7aWYoIShZPD1NKSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJ3cml0ZSBieXRlIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiwgYWRkcjogIit6LnRvU3RyaW5nKDE2KSk7Qj10aGlzLmRlY29kZVRhYmxlc1tNLVldfX1yZXR1cm4gQn0sRy5wcm90b3R5cGUuX2FkZERlY29kZUNo''@;'; put 'put ''dW5rPWZ1bmN0aW9uKHope3ZhciBOPXBhcnNlSW50KHpbMF0sMTYpLEI9dGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoTik7TiY9MjU1O2Zvcih2YXIgWj0xO1o8ei5sZW5ndGg7WisrKXt2YXIgWT16W1pdO2lmKCJzdHJpbmciPT10eXBlb2YgWSlmb3IodmFyIFU9MDtVPFkubGVuZ3RoOyl7dmFy''@;'; put 'put ''IHE9WS5jaGFyQ29kZUF0KFUrKyk7aWYoNTUyOTY8PXEmJnE8NTYzMjApe3ZhciBKPVkuY2hhckNvZGVBdChVKyspO2lmKCEoNTYzMjA8PUomJko8NTczNDQpKXRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHN1cnJvZ2F0ZSBwYWlyIGluICIrdGhpcy5lbmNvZGluZ05hbWUrIiBhdCBjaHVu''@;'; put 'put ''ayAiK3pbMF0pO0JbTisrXT02NTUzNisxMDI0KihxLTU1Mjk2KSsoSi01NjMyMCl9ZWxzZSBpZig0MDgwPHEmJnE8PTQwOTUpe2Zvcih2YXIgZWU9NDA5NS1xKzIscmU9W10saWU9MDtpZTxlZTtpZSsrKXJlLnB1c2goWS5jaGFyQ29kZUF0KFUrKykpO0JbTisrXT1zZS10aGlzLmRlY29kZVRh''@;'; put 'put ''YmxlU2VxLmxlbmd0aCx0aGlzLmRlY29kZVRhYmxlU2VxLnB1c2gocmUpfWVsc2UgQltOKytdPXF9ZWxzZXtpZigibnVtYmVyIiE9dHlwZW9mIFkpdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgdHlwZSAnIit0eXBlb2YgWSsiJyBnaXZlbiBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIgYXQg''@;'; put 'put ''Y2h1bmsgIit6WzBdKTt2YXIgdWU9QltOLTFdKzE7Zm9yKFU9MDtVPFk7VSsrKUJbTisrXT11ZSsrfX1pZihOPjI1NSl0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBjaHVuayBpbiAiK3RoaXMuZW5jb2RpbmdOYW1lKyIgYXQgYWRkciAiK3pbMF0rIjogdG9vIGxvbmciK04pfSxHLnByb3Rv''@;'; put 'put ''dHlwZS5fZ2V0RW5jb2RlQnVja2V0PWZ1bmN0aW9uKHope3ZhciBOPXo+Pjg7cmV0dXJuIHZvaWQgMD09PXRoaXMuZW5jb2RlVGFibGVbTl0mJih0aGlzLmVuY29kZVRhYmxlW05dPU8uc2xpY2UoMCkpLHRoaXMuZW5jb2RlVGFibGVbTl19LEcucHJvdG90eXBlLl9zZXRFbmNvZGVDaGFyPWZ1''@;'; put 'put ''bmN0aW9uKHosTil7dmFyIEI9dGhpcy5fZ2V0RW5jb2RlQnVja2V0KHopLFo9MjU1Jno7QltaXTw9c2U/dGhpcy5lbmNvZGVUYWJsZVNlcVtzZS1CW1pdXVstMV09TjpCW1pdPT14JiYoQltaXT1OKX0sRy5wcm90b3R5cGUuX3NldEVuY29kZVNlcXVlbmNlPWZ1bmN0aW9uKHosTil7dmFyIFUs''@;'; put 'put ''Qj16WzBdLFo9dGhpcy5fZ2V0RW5jb2RlQnVja2V0KEIpLFk9MjU1JkI7WltZXTw9c2U/VT10aGlzLmVuY29kZVRhYmxlU2VxW3NlLVpbWV1dOihVPXt9LFpbWV0hPT14JiYoVVstMV09WltZXSksWltZXT1zZS10aGlzLmVuY29kZVRhYmxlU2VxLmxlbmd0aCx0aGlzLmVuY29kZVRhYmxlU2Vx''@;'; put 'put ''LnB1c2goVSkpO2Zvcih2YXIgcT0xO3E8ei5sZW5ndGgtMTtxKyspe3ZhciBKPVVbQl07Im9iamVjdCI9PXR5cGVvZiBKP1U9SjooVT1VW0JdPXt9LHZvaWQgMCE9PUomJihVWy0xXT1KKSl9VVtCPXpbei5sZW5ndGgtMV1dPU59LEcucHJvdG90eXBlLl9maWxsRW5jb2RlVGFibGU9ZnVuY3Rp''@;'; put 'put ''b24oeixOLEIpe2Zvcih2YXIgWj10aGlzLmRlY29kZVRhYmxlc1t6XSxZPTA7WTwyNTY7WSsrKXt2YXIgVT1aW1ldLHE9TitZO0JbcV18fChVPj0wP3RoaXMuX3NldEVuY29kZUNoYXIoVSxxKTpVPD1NP3RoaXMuX2ZpbGxFbmNvZGVUYWJsZShNLVUscTw8OCxCKTpVPD1zZSYmdGhpcy5fc2V0''@;'; put 'put ''RW5jb2RlU2VxdWVuY2UodGhpcy5kZWNvZGVUYWJsZVNlcVtzZS1VXSxxKSl9fSxELnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih6KXtmb3IodmFyIE49b2UuYWxsb2Moei5sZW5ndGgqKHRoaXMuZ2IxODAzMD80OjMpKSxCPXRoaXMubGVhZFN1cnJvZ2F0ZSxaPXRoaXMuc2VxT2JqLFk9LTEs''@;'; put 'put ''VT0wLHE9MDs7KXtpZigtMT09PVkpe2lmKFU9PXoubGVuZ3RoKWJyZWFrO3ZhciBKPXouY2hhckNvZGVBdChVKyspfWVsc2UgSj1ZLFk9LTE7aWYoNTUyOTY8PUomJko8NTczNDQpaWYoSjw1NjMyMCl7aWYoLTE9PT1CKXtCPUo7Y29udGludWV9Qj1KLEo9eH1lbHNlLTEhPT1CPyhKPTY1NTM2''@;'; put 'put ''KzEwMjQqKEItNTUyOTYpKyhKLTU2MzIwKSxCPS0xKTpKPXg7ZWxzZS0xIT09QiYmKFk9SixKPXgsQj0tMSk7dmFyIGVlPXg7aWYodm9pZCAwIT09WiYmSiE9eCl7dmFyIHJlPVpbSl07aWYoIm9iamVjdCI9PXR5cGVvZiByZSl7Wj1yZTtjb250aW51ZX0ibnVtYmVyIj09dHlwZW9mIHJlP2Vl''@;'; put 'put ''PXJlOm51bGw9PXJlJiZ2b2lkIDAhPT0ocmU9WlstMV0pJiYoZWU9cmUsWT1KKSxaPXZvaWQgMH1lbHNlIGlmKEo+PTApe3ZhciBpZT10aGlzLmVuY29kZVRhYmxlW0o+PjhdO2lmKHZvaWQgMCE9PWllJiYoZWU9aWVbMjU1JkpdKSxlZTw9c2Upe1o9dGhpcy5lbmNvZGVUYWJsZVNlcVtzZS1l''@;'; put 'put ''ZV07Y29udGludWV9aWYoZWU9PXgmJnRoaXMuZ2IxODAzMCl7dmFyIHVlPUUodGhpcy5nYjE4MDMwLnVDaGFycyxKKTtpZigtMSE9dWUpe2VlPXRoaXMuZ2IxODAzMC5nYkNoYXJzW3VlXSsoSi10aGlzLmdiMTgwMzAudUNoYXJzW3VlXSksTltxKytdPTEyOStNYXRoLmZsb29yKGVlLzEyNjAw''@;'; put 'put ''KSxlZSU9MTI2MDAsTltxKytdPTQ4K01hdGguZmxvb3IoZWUvMTI2MCksZWUlPTEyNjAsTltxKytdPTEyOStNYXRoLmZsb29yKGVlLzEwKSxOW3ErK109NDgrKGVlJT0xMCk7Y29udGludWV9fX1lZT09PXgmJihlZT10aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZSksZWU8MjU2P05bcSsrXT1l''@;'; put 'put ''ZTplZTw2NTUzNj8oTltxKytdPWVlPj44LE5bcSsrXT0yNTUmZWUpOihOW3ErK109ZWU+PjE2LE5bcSsrXT1lZT4+OCYyNTUsTltxKytdPTI1NSZlZSl9cmV0dXJuIHRoaXMuc2VxT2JqPVosdGhpcy5sZWFkU3Vycm9nYXRlPUIsTi5zbGljZSgwLHEpfSxELnByb3RvdHlwZS5lbmQ9ZnVuY3Rp''@;'; put 'put ''b24oKXtpZigtMSE9PXRoaXMubGVhZFN1cnJvZ2F0ZXx8dm9pZCAwIT09dGhpcy5zZXFPYmope3ZhciB6PW9lLmFsbG9jKDEwKSxOPTA7aWYodGhpcy5zZXFPYmope3ZhciBCPXRoaXMuc2VxT2JqWy0xXTt2b2lkIDAhPT1CJiYoQjwyNTY/eltOKytdPUI6KHpbTisrXT1CPj44LHpbTisrXT0y''@;'; put 'put ''NTUmQikpLHRoaXMuc2VxT2JqPXZvaWQgMH1yZXR1cm4tMSE9PXRoaXMubGVhZFN1cnJvZ2F0ZSYmKHpbTisrXT10aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZSx0aGlzLmxlYWRTdXJyb2dhdGU9LTEpLHouc2xpY2UoMCxOKX19LEQucHJvdG90eXBlLmZpbmRJZHg9RSxULnByb3RvdHlwZS53''@;'; put 'put ''cml0ZT1mdW5jdGlvbih6KXt2YXIgTj1vZS5hbGxvYygyKnoubGVuZ3RoKSxCPXRoaXMubm9kZUlkeCxaPXRoaXMucHJldkJ1ZixZPXRoaXMucHJldkJ1Zi5sZW5ndGgsVT0tdGhpcy5wcmV2QnVmLmxlbmd0aDtZPjAmJihaPW9lLmNvbmNhdChbWix6LnNsaWNlKDAsMTApXSkpO2Zvcih2YXIg''@;'; put 'put ''Sj0wLGVlPTA7Sjx6Lmxlbmd0aDtKKyspe3ZhciBxLHJlPUo+PTA/eltKXTpaW0orWV07aWYoISgocT10aGlzLmRlY29kZVRhYmxlc1tCXVtyZV0pPj0wKSlpZihxPT09eClKPVUscT10aGlzLmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApO2Vsc2UgaWYocT09PW0pe3ZhciBpZT1V''@;'; put 'put ''Pj0wP3ouc2xpY2UoVSxKKzEpOlouc2xpY2UoVStZLEorMStZKSx1ZT0xMjYwMCooaWVbMF0tMTI5KSsxMjYwKihpZVsxXS00OCkrMTAqKGllWzJdLTEyOSkrKGllWzNdLTQ4KSxsZT1FKHRoaXMuZ2IxODAzMC5nYkNoYXJzLHVlKTtxPXRoaXMuZ2IxODAzMC51Q2hhcnNbbGVdK3VlLXRoaXMu''@;'; put 'put ''Z2IxODAzMC5nYkNoYXJzW2xlXX1lbHNle2lmKHE8PU0pe0I9TS1xO2NvbnRpbnVlfWlmKCEocTw9c2UpKXRocm93IG5ldyBFcnJvcigiaWNvbnYtbGl0ZSBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCBkZWNvZGluZyB0YWJsZSB2YWx1ZSAiK3ErIiBhdCAiK0IrIi8iK3JlKTtmb3IodmFyIGFl''@;'; put 'put ''PXRoaXMuZGVjb2RlVGFibGVTZXFbc2UtcV0sVz0wO1c8YWUubGVuZ3RoLTE7VysrKU5bZWUrK109MjU1JihxPWFlW1ddKSxOW2VlKytdPXE+Pjg7cT1hZVthZS5sZW5ndGgtMV19aWYocT42NTUzNSl7cS09NjU1MzY7dmFyIGI9NTUyOTYrTWF0aC5mbG9vcihxLzEwMjQpO05bZWUrK109MjU1''@;'; put 'put ''JmIsTltlZSsrXT1iPj44LHE9NTYzMjArcSUxMDI0fU5bZWUrK109MjU1JnEsTltlZSsrXT1xPj44LEI9MCxVPUorMX1yZXR1cm4gdGhpcy5ub2RlSWR4PUIsdGhpcy5wcmV2QnVmPVU+PTA/ei5zbGljZShVKTpaLnNsaWNlKFUrWSksTi5zbGljZSgwLGVlKS50b1N0cmluZygidWNzMiIpfSxU''@;'; put 'put ''LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIHo9IiI7dGhpcy5wcmV2QnVmLmxlbmd0aD4wOyl7eis9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7dmFyIE49dGhpcy5wcmV2QnVmLnNsaWNlKDEpO3RoaXMucHJldkJ1Zj1vZS5hbGxvYygwKSx0aGlzLm5vZGVJZHg9MCxOLmxlbmd0''@;'; put 'put ''aD4wJiYoeis9dGhpcy53cml0ZShOKSl9cmV0dXJuIHRoaXMubm9kZUlkeD0wLHp9fSw0NTI3ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz17c2hpZnRqaXM6e3R5cGU6Il9kYmNzIix0YWJsZTpmdW5jdGlvbigpe3JldHVybiBSKDQwNjc5KX0sZW5jb2RlQWRkOnsiXHhh''@;'; put 'put ''NSI6OTIsIlx1MjAzZSI6MTI2fSxlbmNvZGVTa2lwVmFsczpbe2Zyb206NjA3MzYsdG86NjM4MDh9XX0sY3NzaGlmdGppczoic2hpZnRqaXMiLG1za2Fuamk6InNoaWZ0amlzIixzamlzOiJzaGlmdGppcyIsd2luZG93czMxajoic2hpZnRqaXMiLG1zMzFqOiJzaGlmdGppcyIseHNqaXM6InNo''@;'; put 'put ''aWZ0amlzIix3aW5kb3dzOTMyOiJzaGlmdGppcyIsbXM5MzI6InNoaWZ0amlzIiw5MzI6InNoaWZ0amlzIixjcDkzMjoic2hpZnRqaXMiLGV1Y2pwOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gUig1NjQwNil9LGVuY29kZUFkZDp7Ilx4YTUiOjkyLCJcdTIwM2UiOjEy''@;'; put 'put ''Nn19LGdiMjMxMjoiY3A5MzYiLGdiMjMxMjgwOiJjcDkzNiIsZ2IyMzEyMTk4MDoiY3A5MzYiLGNzZ2IyMzEyOiJjcDkzNiIsY3Npc281OGdiMjMxMjgwOiJjcDkzNiIsZXVjY246ImNwOTM2Iix3aW5kb3dzOTM2OiJjcDkzNiIsbXM5MzY6ImNwOTM2Iiw5MzY6ImNwOTM2IixjcDkzNjp7dHlw''@;'; put 'put ''ZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIFIoNzQ0ODgpfX0sZ2JrOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gUig3NDQ4OCkuY29uY2F0KFIoNTU5MTQpKX19LHhnYms6ImdiayIsaXNvaXI1ODoiZ2JrIixnYjE4MDMwOnt0eXBlOiJfZGJjcyIsdGFi''@;'; put 'put ''bGU6ZnVuY3Rpb24oKXtyZXR1cm4gUig3NDQ4OCkuY29uY2F0KFIoNTU5MTQpKX0sZ2IxODAzMDpmdW5jdGlvbigpe3JldHVybiBSKDk5MTI5KX0sZW5jb2RlU2tpcFZhbHM6WzEyOF0sZW5jb2RlQWRkOnsiXHUyMGFjIjo0MTY5OX19LGNoaW5lc2U6ImdiMTgwMzAiLHdpbmRvd3M5NDk6ImNw''@;'; put 'put ''OTQ5Iixtczk0OToiY3A5NDkiLDk0OToiY3A5NDkiLGNwOTQ5Ont0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gUigyMTE2Nil9fSxjc2V1Y2tyOiJjcDk0OSIsY3Nrc2M1NjAxMTk4NzoiY3A5NDkiLGV1Y2tyOiJjcDk0OSIsaXNvaXIxNDk6ImNwOTQ5Iixrb3JlYW46ImNw''@;'; put 'put ''OTQ5Iixrc2M1NjAxMTk4NzoiY3A5NDkiLGtzYzU2MDExOTg5OiJjcDk0OSIsa3NjNTYwMToiY3A5NDkiLHdpbmRvd3M5NTA6ImNwOTUwIixtczk1MDoiY3A5NTAiLDk1MDoiY3A5NTAiLGNwOTUwOnt0eXBlOiJfZGJjcyIsdGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gUig3MjMyNCl9fSxiaWc1''@;'; put 'put ''OiJiaWc1aGtzY3MiLGJpZzVoa3Njczp7dHlwZToiX2RiY3MiLHRhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIFIoNzIzMjQpLmNvbmNhdChSKDQzMjY3KSl9LGVuY29kZVNraXBWYWxzOls0MTY3Nl19LGNuYmlnNToiYmlnNWhrc2NzIixjc2JpZzU6ImJpZzVoa3NjcyIseHhiaWc1OiJiaWc1aGtz''@;'; put 'put ''Y3MifX0sNzI4OTM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO2Zvcih2YXIgb2U9W1IoMzc2NDApLFIoMzUwODkpLFIoNzE3NSksUig5NzQ3KSxSKDU4Njc3KSxSKDc2MjMpLFIoMzAxODcpLFIoOTM2OTQpLFIoNDUyNzgpXSx4PTA7eDxvZS5sZW5ndGg7eCsrKXt2YXIgbT1vZVt4XTtmb3Io''@;'; put 'put ''dmFyIHNlIGluIG0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG0sc2UpJiYoTWVbc2VdPW1bc2VdKX19LDM3NjQwOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig5MzgwNykuQnVmZmVyO2Z1bmN0aW9uIHgoRyxEKXt0aGlzLmVuYz1HLmVuY29kaW5nTmFt''@;'; put 'put ''ZSx0aGlzLmJvbUF3YXJlPUcuYm9tQXdhcmUsImJhc2U2NCI9PT10aGlzLmVuYz90aGlzLmVuY29kZXI9TzoiY2VzdTgiPT09dGhpcy5lbmMmJih0aGlzLmVuYz0idXRmOCIsdGhpcy5lbmNvZGVyPUksIlx1ezFmNGE5fSIhPT1vZS5mcm9tKCJlZGEwYmRlZGIyYTkiLCJoZXgiKS50b1N0cmlu''@;'; put 'put ''ZygpJiYodGhpcy5kZWNvZGVyPWosdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU9RC5kZWZhdWx0Q2hhclVuaWNvZGUpKX1RZS5leHBvcnRzPXt1dGY4Ont0eXBlOiJfaW50ZXJuYWwiLGJvbUF3YXJlOiEwfSxjZXN1ODp7dHlwZToiX2ludGVybmFsIixib21Bd2FyZTohMH0sdW5pY29kZTExdXRm''@;'; put 'put ''ODoidXRmOCIsdWNzMjp7dHlwZToiX2ludGVybmFsIixib21Bd2FyZTohMH0sdXRmMTZsZToidWNzMiIsYmluYXJ5Ont0eXBlOiJfaW50ZXJuYWwifSxiYXNlNjQ6e3R5cGU6Il9pbnRlcm5hbCJ9LGhleDp7dHlwZToiX2ludGVybmFsIn0sX2ludGVybmFsOnh9LHgucHJvdG90eXBlLmVuY29k''@;'; put 'put ''ZXI9TSx4LnByb3RvdHlwZS5kZWNvZGVyPXNlO3ZhciBtPVIoNzg0NTQpLkk7ZnVuY3Rpb24gc2UoRyxEKXttLmNhbGwodGhpcyxELmVuYyl9ZnVuY3Rpb24gTShHLEQpe3RoaXMuZW5jPUQuZW5jfWZ1bmN0aW9uIE8oRyxEKXt0aGlzLnByZXZTdHI9IiJ9ZnVuY3Rpb24gSShHLEQpe31mdW5j''@;'; put 'put ''dGlvbiBqKEcsRCl7dGhpcy5hY2M9MCx0aGlzLmNvbnRCeXRlcz0wLHRoaXMuYWNjQnl0ZXM9MCx0aGlzLmRlZmF1bHRDaGFyVW5pY29kZT1ELmRlZmF1bHRDaGFyVW5pY29kZX1tLnByb3RvdHlwZS5lbmR8fChtLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9KSxzZS5wcm90b3R5cGU9bS5w''@;'; put 'put ''cm90b3R5cGUsTS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRyl7cmV0dXJuIG9lLmZyb20oRyx0aGlzLmVuYyl9LE0ucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sTy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRyl7dmFyIEQ9KEc9dGhpcy5wcmV2U3RyK0cpLmxlbmd0aC1HLmxlbmd0''@;'; put 'put ''aCU0O3JldHVybiB0aGlzLnByZXZTdHI9Ry5zbGljZShEKSxHPUcuc2xpY2UoMCxEKSxvZS5mcm9tKEcsImJhc2U2NCIpfSxPLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gb2UuZnJvbSh0aGlzLnByZXZTdHIsImJhc2U2NCIpfSxJLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihH''@;'; put 'put ''KXtmb3IodmFyIEQ9b2UuYWxsb2MoMypHLmxlbmd0aCksVD0wLEU9MDtFPEcubGVuZ3RoO0UrKyl7dmFyIHo9Ry5jaGFyQ29kZUF0KEUpO3o8MTI4P0RbVCsrXT16Ono8MjA0OD8oRFtUKytdPTE5Misoej4+PjYpLERbVCsrXT0xMjgrKDYzJnopKTooRFtUKytdPTIyNCsoej4+PjEyKSxEW1Qr''@;'; put 'put ''K109MTI4Kyh6Pj4+NiY2MyksRFtUKytdPTEyOCsoNjMmeikpfXJldHVybiBELnNsaWNlKDAsVCl9LEkucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sai5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRyl7Zm9yKHZhciBEPXRoaXMuYWNjLFQ9dGhpcy5jb250Qnl0ZXMsRT10aGlzLmFjY0J5''@;'; put 'put ''dGVzLHo9IiIsTj0wO048Ry5sZW5ndGg7TisrKXt2YXIgQj1HW05dOzEyOCE9KDE5MiZCKT8oVD4wJiYoeis9dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUsVD0wKSxCPDEyOD96Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKEIpOkI8MjI0PyhEPTMxJkIsVD0xLEU9MSk6QjwyNDA/KEQ9MTUmQixUPTIs''@;'; put 'put ''RT0xKTp6Kz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSk6VD4wPyhEPUQ8PDZ8NjMmQixFKyssMD09LS1UJiYoeis9Mj09PUUmJkQ8MTI4JiZEPjB8fDM9PT1FJiZEPDIwNDg/dGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU6U3RyaW5nLmZyb21DaGFyQ29kZShEKSkpOnorPXRoaXMuZGVmYXVsdENo''@;'; put 'put ''YXJVbmljb2RlfXJldHVybiB0aGlzLmFjYz1ELHRoaXMuY29udEJ5dGVzPVQsdGhpcy5hY2NCeXRlcz1FLHp9LGoucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3ZhciBHPTA7cmV0dXJuIHRoaXMuY29udEJ5dGVzPjAmJihHKz10aGlzLmRlZmF1bHRDaGFyVW5pY29kZSksR319LDU4Njc3OihR''@;'; put 'put ''ZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig5MzgwNykuQnVmZmVyO2Z1bmN0aW9uIHgoTSxPKXtpZighTSl0aHJvdyBuZXcgRXJyb3IoIlNCQ1MgY29kZWMgaXMgY2FsbGVkIHdpdGhvdXQgdGhlIGRhdGEuIik7aWYoIU0uY2hhcnN8fDEyOCE9PU0uY2hhcnMubGVuZ3RoJiYyNTYh''@;'; put 'put ''PT1NLmNoYXJzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciK00udHlwZSsiJyBoYXMgaW5jb3JyZWN0ICdjaGFycycgKG11c3QgYmUgb2YgbGVuIDEyOCBvciAyNTYpIik7aWYoMTI4PT09TS5jaGFycy5sZW5ndGgpe2Zvcih2YXIgST0iIixqPTA7ajwxMjg7aisrKUkrPVN0''@;'; put 'put ''cmluZy5mcm9tQ2hhckNvZGUoaik7TS5jaGFycz1JK00uY2hhcnN9dGhpcy5kZWNvZGVCdWY9b2UuZnJvbShNLmNoYXJzLCJ1Y3MyIik7dmFyIEc9b2UuYWxsb2MoNjU1MzYsTy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKSk7Zm9yKGo9MDtqPE0uY2hhcnMubGVuZ3RoO2or''@;'; put 'put ''KylHW00uY2hhcnMuY2hhckNvZGVBdChqKV09ajt0aGlzLmVuY29kZUJ1Zj1HfWZ1bmN0aW9uIG0oTSxPKXt0aGlzLmVuY29kZUJ1Zj1PLmVuY29kZUJ1Zn1mdW5jdGlvbiBzZShNLE8pe3RoaXMuZGVjb2RlQnVmPU8uZGVjb2RlQnVmfU1lLl9zYmNzPXgseC5wcm90b3R5cGUuZW5jb2Rlcj1t''@;'; put 'put ''LHgucHJvdG90eXBlLmRlY29kZXI9c2UsbS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oTSl7Zm9yKHZhciBPPW9lLmFsbG9jKE0ubGVuZ3RoKSxJPTA7STxNLmxlbmd0aDtJKyspT1tJXT10aGlzLmVuY29kZUJ1ZltNLmNoYXJDb2RlQXQoSSldO3JldHVybiBPfSxtLnByb3RvdHlwZS5lbmQ9''@;'; put 'put ''ZnVuY3Rpb24oKXt9LHNlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihNKXtmb3IodmFyIE89dGhpcy5kZWNvZGVCdWYsST1vZS5hbGxvYygyKk0ubGVuZ3RoKSxqPTAsRz0wLEQ9MDtEPE0ubGVuZ3RoO0QrKylJW0c9MipEXT1PW2o9MipNW0RdXSxJW0crMV09T1tqKzFdO3JldHVybiBJLnRv''@;'; put 'put ''U3RyaW5nKCJ1Y3MyIil9LHNlLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt9fSwzMDE4NzpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPXs0Mzc6ImNwNDM3Iiw3Mzc6ImNwNzM3Iiw3NzU6ImNwNzc1Iiw4NTA6ImNwODUwIiw4NTI6ImNwODUyIiw4NTU6ImNwODU1Iiw4NTY6ImNwODU2''@;'; put 'put ''Iiw4NTc6ImNwODU3Iiw4NTg6ImNwODU4Iiw4NjA6ImNwODYwIiw4NjE6ImNwODYxIiw4NjI6ImNwODYyIiw4NjM6ImNwODYzIiw4NjQ6ImNwODY0Iiw4NjU6ImNwODY1Iiw4NjY6ImNwODY2Iiw4Njk6ImNwODY5Iiw4NzQ6IndpbmRvd3M4NzQiLDkyMjoiY3A5MjIiLDEwNDY6ImNwMTA0NiIs''@;'; put 'put ''MTEyNDoiY3AxMTI0IiwxMTI1OiJjcDExMjUiLDExMjk6ImNwMTEyOSIsMTEzMzoiY3AxMTMzIiwxMTYxOiJjcDExNjEiLDExNjI6ImNwMTE2MiIsMTE2MzoiY3AxMTYzIiwxMjUwOiJ3aW5kb3dzMTI1MCIsMTI1MToid2luZG93czEyNTEiLDEyNTI6IndpbmRvd3MxMjUyIiwxMjUzOiJ3aW5k''@;'; put 'put ''b3dzMTI1MyIsMTI1NDoid2luZG93czEyNTQiLDEyNTU6IndpbmRvd3MxMjU1IiwxMjU2OiJ3aW5kb3dzMTI1NiIsMTI1Nzoid2luZG93czEyNTciLDEyNTg6IndpbmRvd3MxMjU4IiwyODU5MToiaXNvODg1OTEiLDI4NTkyOiJpc284ODU5MiIsMjg1OTM6Imlzbzg4NTkzIiwyODU5NDoiaXNv''@;'; put 'put ''ODg1OTQiLDI4NTk1OiJpc284ODU5NSIsMjg1OTY6Imlzbzg4NTk2IiwyODU5NzoiaXNvODg1OTciLDI4NTk4OiJpc284ODU5OCIsMjg1OTk6Imlzbzg4NTk5IiwyODYwMDoiaXNvODg1OTEwIiwyODYwMToiaXNvODg1OTExIiwyODYwMzoiaXNvODg1OTEzIiwyODYwNDoiaXNvODg1OTE0Iiwy''@;'; put 'put ''ODYwNToiaXNvODg1OTE1IiwyODYwNjoiaXNvODg1OTE2Iix3aW5kb3dzODc0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAyNlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJc''@;'; put 'put ''dTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBl''@;'; put 'put ''MjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJc''@;'; put 'put ''dTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmQifSx3aW44NzQ6IndpbmRvd3M4NzQiLGNwODc0OiJ3aW5kb3dzODc0Iix3aW5kb3dzMTI1MDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFcdWZmZmRcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdWZmZmRcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNWFcdTAx''@;'; put 'put ''NjRcdTAxN2RcdTAxNzlcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdTAxNjFcdTIwM2FcdTAxNWJcdTAxNjVcdTAxN2VcdTAxN2FceGEwXHUwMmM3XHUwMmQ4XHUwMTQxXHhhNFx1MDEwNFx4YTZceGE3XHhhOFx4YTlcdTAxNWVc''@;'; put 'put ''eGFiXHhhY1x4YWRceGFlXHUwMTdiXHhiMFx4YjFcdTAyZGJcdTAxNDJceGI0XHhiNVx4YjZceGI3XHhiOFx1MDEwNVx1MDE1Zlx4YmJcdTAxM2RcdTAyZGRcdTAxM2VcdTAxN2NcdTAxNTRceGMxXHhjMlx1MDEwMlx4YzRcdTAxMzlcdTAxMDZceGM3XHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAx''@;'; put 'put ''MWFceGNkXHhjZVx1MDEwZVx1MDExMFx1MDE0M1x1MDE0N1x4ZDNceGQ0XHUwMTUwXHhkNlx4ZDdcdTAxNThcdTAxNmVceGRhXHUwMTcwXHhkY1x4ZGRcdTAxNjJceGRmXHUwMTU1XHhlMVx4ZTJcdTAxMDNceGU0XHUwMTNhXHUwMTA3XHhlN1x1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTFiXHhl''@;'; put 'put ''ZFx4ZWVcdTAxMGZcdTAxMTFcdTAxNDRcdTAxNDhceGYzXHhmNFx1MDE1MVx4ZjZceGY3XHUwMTU5XHUwMTZmXHhmYVx1MDE3MVx4ZmNceGZkXHUwMTYzXHUwMmQ5In0sd2luMTI1MDoid2luZG93czEyNTAiLGNwMTI1MDoid2luZG93czEyNTAiLHdpbmRvd3MxMjUxOnt0eXBlOiJfc2JjcyIs''@;'; put 'put ''Y2hhcnM6Ilx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQwYVx1MDQwY1x1MDQwYlx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1''@;'; put 'put ''MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ1Y1x1MDQ1Ylx1MDQ1Zlx4YTBcdTA0MGVcdTA0NWVcdTA0MDhceGE0XHUwNDkwXHhhNlx4YTdcdTA0MDFceGE5XHUwNDA0XHhhYlx4YWNceGFkXHhhZVx1MDQwN1x4YjBceGIxXHUwNDA2XHUwNDU2XHUwNDkxXHhiNVx4YjZceGI3XHUwNDUxXHUyMTE2XHUw''@;'; put 'put ''NDU0XHhiYlx1MDQ1OFx1MDQwNVx1MDQ1NVx1MDQ1N1x1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1''@;'; put 'put ''MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0''@;'; put 'put ''MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0ZiJ9LHdpbjEyNTE6IndpbmRvd3MxMjUxIixjcDEyNTE6IndpbmRvd3MxMjUxIix3aW5kb3dzMTI1Mjp7dHlwZToiX3NiY3MiLGNoYXJzOiJc''@;'; put 'put ''dTIwYWNcdWZmZmRcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJcdWZmZmRcdTAxN2RcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdTAxNjFcdTIw''@;'; put 'put ''M2FcdTAxNTNcdWZmZmRcdTAxN2VcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhj''@;'; put 'put ''Mlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGVi''@;'; put 'put ''XHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYifSx3aW4xMjUyOiJ3aW5kb3dzMTI1MiIsY3AxMjUyOiJ3aW5kb3dzMTI1MiIsd2luZG93czEyNTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFj''@;'; put 'put ''XHVmZmZkXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHhhMFx1MDM4NVx1MDM4Nlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlcdWZmZmRceGFiXHhhY1x4YWRceGFlXHUyMDE1XHhiMFx4YjFceGIyXHhiM1x1MDM4NFx4YjVceGI2XHhiN1x1MDM4OFx1MDM4OVx1MDM4YVx4YmJcdTAzOGNceGJkXHUwMzhl''@;'; put 'put ''XHUwMzhmXHUwMzkwXHUwMzkxXHUwMzkyXHUwMzkzXHUwMzk0XHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk4XHUwMzk5XHUwMzlhXHUwMzliXHUwMzljXHUwMzlkXHUwMzllXHUwMzlmXHUwM2EwXHUwM2ExXHVmZmZkXHUwM2EzXHUwM2E0XHUwM2E1XHUwM2E2XHUwM2E3XHUwM2E4XHUwM2E5XHUw''@;'; put 'put ''M2FhXHUwM2FiXHUwM2FjXHUwM2FkXHUwM2FlXHUwM2FmXHUwM2IwXHUwM2IxXHUwM2IyXHUwM2IzXHUwM2I0XHUwM2I1XHUwM2I2XHUwM2I3XHUwM2I4XHUwM2I5XHUwM2JhXHUwM2JiXHUwM2JjXHUwM2JkXHUwM2JlXHUwM2JmXHUwM2MwXHUwM2MxXHUwM2MyXHUwM2MzXHUwM2M0XHUwM2M1''@;'; put 'put ''XHUwM2M2XHUwM2M3XHUwM2M4XHUwM2M5XHUwM2NhXHUwM2NiXHUwM2NjXHUwM2NkXHUwM2NlXHVmZmZkIn0sd2luMTI1Mzoid2luZG93czEyNTMiLGNwMTI1Mzoid2luZG93czEyNTMiLHdpbmRvd3MxMjU0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1''@;'; put 'put ''MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1MDE2MFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x1ZmZmZFx1ZmZmZFx1MDE3''@;'; put 'put ''OFx4YTBceGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4''@;'; put 'put ''XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDExZVx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDEzMFx1MDE1ZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUw''@;'; put 'put ''MTFmXHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMTMxXHUwMTVmXHhmZiJ9LHdpbjEyNTQ6IndpbmRvd3MxMjU0IixjcDEyNTQ6IndpbmRvd3MxMjU0Iix3aW5kb3dzMTI1NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTIwYWNcdWZmZmRcdTIwMWFc''@;'; put 'put ''dTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdWZmZmRcdTIwMzlcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdTIwMjJcdTIwMTNcdTIwMTRcdTAyZGNcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRceGEwXHhhMVx4YTJceGEzXHUyMGFhXHhhNVx4YTZceGE3XHhhOFx4YTlceGQ3XHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhmN1x4YmJceGJjXHhiZFx4YmVceGJmXHUwNWIwXHUwNWIxXHUwNWIyXHUwNWIzXHUw''@;'; put 'put ''NWI0XHUwNWI1XHUwNWI2XHUwNWI3XHUwNWI4XHUwNWI5XHUwNWJhXHUwNWJiXHUwNWJjXHUwNWJkXHUwNWJlXHUwNWJmXHUwNWMwXHUwNWMxXHUwNWMyXHUwNWMzXHUwNWYwXHUwNWYxXHUwNWYyXHUwNWYzXHUwNWY0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUyMDBlXHUyMDBmXHVmZmZkIn0sd2luMTI1NToid2luZG93czEyNTUiLGNwMTI1NToid2luZG93czEyNTUiLHdpbmRvd3MxMjU2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1MDY3ZVx1MjAxYVx1MDE5Mlx1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAz''@;'; put 'put ''MFx1MDY3OVx1MjAzOVx1MDE1Mlx1MDY4Nlx1MDY5OFx1MDY4OFx1MDZhZlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDZhOVx1MjEyMlx1MDY5MVx1MjAzYVx1MDE1M1x1MjAwY1x1MjAwZFx1MDZiYVx4YTBcdTA2MGNceGEyXHhhM1x4YTRceGE1XHhhNlx4''@;'; put 'put ''YTdceGE4XHhhOVx1MDZiZVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx1MDYxYlx4YmJceGJjXHhiZFx4YmVcdTA2MWZcdTA2YzFcdTA2MjFcdTA2MjJcdTA2MjNcdTA2MjRcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2Mjlc''@;'; put 'put ''dTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNcdTA2MzRcdTA2MzVcdTA2MzZceGQ3XHUwNjM3XHUwNjM4XHUwNjM5XHUwNjNhXHUwNjQwXHUwNjQxXHUwNjQyXHUwNjQzXHhlMFx1MDY0NFx4ZTJcdTA2NDVcdTA2NDZcdTA2NDdcdTA2''@;'; put 'put ''NDhceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDY0OVx1MDY0YVx4ZWVceGVmXHUwNjRiXHUwNjRjXHUwNjRkXHUwNjRlXHhmNFx1MDY0Zlx1MDY1MFx4ZjdcdTA2NTFceGY5XHUwNjUyXHhmYlx4ZmNcdTIwMGVcdTIwMGZcdTA2ZDIifSx3aW4xMjU2OiJ3aW5kb3dzMTI1NiIsY3AxMjU2OiJ3aW5k''@;'; put 'put ''b3dzMTI1NiIsd2luZG93czEyNTc6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyMGFjXHVmZmZkXHUyMDFhXHVmZmZkXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHVmZmZkXHUyMDM5XHVmZmZkXHhhOFx1MDJjN1x4YjhcdWZmZmRcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRc''@;'; put 'put ''dTIwMjJcdTIwMTNcdTIwMTRcdWZmZmRcdTIxMjJcdWZmZmRcdTIwM2FcdWZmZmRceGFmXHUwMmRiXHVmZmZkXHhhMFx1ZmZmZFx4YTJceGEzXHhhNFx1ZmZmZFx4YTZceGE3XHhkOFx4YTlcdTAxNTZceGFiXHhhY1x4YWRceGFlXHhjNlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3''@;'; put 'put ''XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJlXHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBjXHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0NVx4ZDNcdTAxNGNceGQ1XHhkNlx4ZDdc''@;'; put 'put ''dTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUwMTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUwMTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEyM1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1MDE0NFx1MDE0Nlx4ZjNcdTAxNGRceGY1''@;'; put 'put ''XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAxNmJceGZjXHUwMTdjXHUwMTdlXHUwMmQ5In0sd2luMTI1Nzoid2luZG93czEyNTciLGNwMTI1Nzoid2luZG93czEyNTciLHdpbmRvd3MxMjU4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x1ZmZmZFx1MjAxYVx1MDE5Mlx1MjAxZVx1''@;'; put 'put ''MjAyNlx1MjAyMFx1MjAyMVx1MDJjNlx1MjAzMFx1ZmZmZFx1MjAzOVx1MDE1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDJkY1x1MjEyMlx1ZmZmZFx1MjAzYVx1MDE1M1x1ZmZmZFx1ZmZmZFx1MDE3OFx4YTBc''@;'; put 'put ''eGExXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhiYVx4YmJceGJjXHhiZFx4YmVceGJmXHhjMFx4YzFceGMyXHUwMTAyXHhjNFx4YzVceGM2XHhjN1x4YzhceGM5''@;'; put 'put ''XHhjYVx4Y2JcdTAzMDBceGNkXHhjZVx4Y2ZcdTAxMTBceGQxXHUwMzA5XHhkM1x4ZDRcdTAxYTBceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHUwMWFmXHUwMzAzXHhkZlx4ZTBceGUxXHhlMlx1MDEwM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHUwMzAxXHhlZFx4ZWVc''@;'; put 'put ''eGVmXHUwMTExXHhmMVx1MDMyM1x4ZjNceGY0XHUwMWExXHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x1MDFiMFx1MjBhYlx4ZmYifSx3aW4xMjU4OiJ3aW5kb3dzMTI1OCIsY3AxMjU4OiJ3aW5kb3dzMTI1OCIsaXNvODg1OTE6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgy''@;'; put 'put ''XHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJc''@;'; put 'put ''eGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZceGQwXHhkMVx4ZDJceGQzXHhkNFx4''@;'; put 'put ''ZDVceGQ2XHhkN1x4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx4ZGVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhm''@;'; put 'put ''ZVx4ZmYifSxjcDI4NTkxOiJpc284ODU5MSIsaXNvODg1OTI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlh''@;'; put 'put ''XHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTA0XHUwMmQ4XHUwMTQxXHhhNFx1MDEzZFx1MDE1YVx4YTdceGE4XHUwMTYwXHUwMTVlXHUwMTY0XHUwMTc5XHhhZFx1MDE3ZFx1MDE3Ylx4YjBcdTAxMDVcdTAyZGJcdTAxNDJceGI0XHUwMTNlXHUwMTViXHUwMmM3XHhiOFx1MDE2MVx1MDE1''@;'; put 'put ''Zlx1MDE2NVx1MDE3YVx1MDJkZFx1MDE3ZVx1MDE3Y1x1MDE1NFx4YzFceGMyXHUwMTAyXHhjNFx1MDEzOVx1MDEwNlx4YzdcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExYVx4Y2RceGNlXHUwMTBlXHUwMTEwXHUwMTQzXHUwMTQ3XHhkM1x4ZDRcdTAxNTBceGQ2XHhkN1x1MDE1OFx1MDE2ZVx4''@;'; put 'put ''ZGFcdTAxNzBceGRjXHhkZFx1MDE2Mlx4ZGZcdTAxNTVceGUxXHhlMlx1MDEwM1x4ZTRcdTAxM2FcdTAxMDdceGU3XHUwMTBkXHhlOVx1MDExOVx4ZWJcdTAxMWJceGVkXHhlZVx1MDEwZlx1MDExMVx1MDE0NFx1MDE0OFx4ZjNceGY0XHUwMTUxXHhmNlx4ZjdcdTAxNTlcdTAxNmZceGZhXHUw''@;'; put 'put ''MTcxXHhmY1x4ZmRcdTAxNjNcdTAyZDkifSxjcDI4NTkyOiJpc284ODU5MiIsaXNvODg1OTM6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4''@;'; put 'put ''OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUwMTI2XHUwMmQ4XHhhM1x4YTRcdWZmZmRcdTAxMjRceGE3XHhhOFx1MDEzMFx1MDE1ZVx1MDExZVx1MDEzNFx4YWRcdWZmZmRcdTAxN2JceGIwXHUwMTI3XHhiMlx4YjNceGI0XHhiNVx1MDEyNVx4YjdceGI4XHUw''@;'; put 'put ''MTMxXHUwMTVmXHUwMTFmXHUwMTM1XHhiZFx1ZmZmZFx1MDE3Y1x4YzBceGMxXHhjMlx1ZmZmZFx4YzRcdTAxMGFcdTAxMDhceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdWZmZmRceGQxXHhkMlx4ZDNceGQ0XHUwMTIwXHhkNlx4ZDdcdTAxMWNceGQ5XHhkYVx4ZGJceGRj''@;'; put 'put ''XHUwMTZjXHUwMTVjXHhkZlx4ZTBceGUxXHhlMlx1ZmZmZFx4ZTRcdTAxMGJcdTAxMDlceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdWZmZmRceGYxXHhmMlx4ZjNceGY0XHUwMTIxXHhmNlx4ZjdcdTAxMWRceGY5XHhmYVx4ZmJceGZjXHUwMTZkXHUwMTVkXHUwMmQ5In0s''@;'; put 'put ''Y3AyODU5MzoiaXNvODg1OTMiLGlzbzg4NTk0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDlj''@;'; put 'put ''XHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDEzOFx1MDE1Nlx4YTRcdTAxMjhcdTAxM2JceGE3XHhhOFx1MDE2MFx1MDExMlx1MDEyMlx1MDE2Nlx4YWRcdTAxN2RceGFmXHhiMFx1MDEwNVx1MDJkYlx1MDE1N1x4YjRcdTAxMjlcdTAxM2NcdTAyYzdceGI4XHUwMTYxXHUwMTEzXHUwMTIzXHUw''@;'; put 'put ''MTY3XHUwMTRhXHUwMTdlXHUwMTRiXHUwMTAwXHhjMVx4YzJceGMzXHhjNFx4YzVceGM2XHUwMTJlXHUwMTBjXHhjOVx1MDExOFx4Y2JcdTAxMTZceGNkXHhjZVx1MDEyYVx1MDExMFx1MDE0NVx1MDE0Y1x1MDEzNlx4ZDRceGQ1XHhkNlx4ZDdceGQ4XHUwMTcyXHhkYVx4ZGJceGRjXHUwMTY4''@;'; put 'put ''XHUwMTZhXHhkZlx1MDEwMVx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx1MDEyZlx1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTE3XHhlZFx4ZWVcdTAxMmJcdTAxMTFcdTAxNDZcdTAxNGRcdTAxMzdceGY0XHhmNVx4ZjZceGY3XHhmOFx1MDE3M1x4ZmFceGZiXHhmY1x1MDE2OVx1MDE2Ylx1MDJk''@;'; put 'put ''OSJ9LGNwMjg1OTQ6Imlzbzg4NTk0Iixpc284ODU5NTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDli''@;'; put 'put ''XHg5Y1x4OWRceDllXHg5Zlx4YTBcdTA0MDFcdTA0MDJcdTA0MDNcdTA0MDRcdTA0MDVcdTA0MDZcdTA0MDdcdTA0MDhcdTA0MDlcdTA0MGFcdTA0MGJcdTA0MGNceGFkXHUwNDBlXHUwNDBmXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUw''@;'; put 'put ''NDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0''@;'; put 'put ''XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUy''@;'; put 'put ''MTE2XHUwNDUxXHUwNDUyXHUwNDUzXHUwNDU0XHUwNDU1XHUwNDU2XHUwNDU3XHUwNDU4XHUwNDU5XHUwNDVhXHUwNDViXHUwNDVjXHhhN1x1MDQ1ZVx1MDQ1ZiJ9LGNwMjg1OTU6Imlzbzg4NTk1Iixpc284ODU5Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4''@;'; put 'put ''ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdWZmZmRcdWZmZmRcdWZmZmRceGE0XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHUwNjBjXHhhZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYxYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDYxZlx1ZmZmZFx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx1MDYyNVx1''@;'; put 'put ''MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx1MDYzN1x1MDYzOFx1MDYzOVx1MDYzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDY0MFx1MDY0''@;'; put 'put ''MVx1MDY0Mlx1MDY0M1x1MDY0NFx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx1MDY0OVx1MDY0YVx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx1MDY0Zlx1MDY1MFx1MDY1MVx1MDY1Mlx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1ZmZmZCJ9LGNwMjg1OTY6Imlzbzg4NTk2Iixpc284ODU5Nzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdc''@;'; put 'put ''eDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTIwMThcdTIwMTlceGEzXHUyMGFjXHUyMGFmXHhhNlx4YTdceGE4XHhhOVx1MDM3YVx4YWJceGFjXHhhZFx1ZmZmZFx1MjAxNVx4YjBceGIxXHhiMlx4YjNcdTAzODRcdTAzODVcdTAzODZceGI3XHUwMzg4XHUwMzg5XHUwMzhh''@;'; put 'put ''XHhiYlx1MDM4Y1x4YmRcdTAzOGVcdTAzOGZcdTAzOTBcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdWZmZmRcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZc''@;'; put 'put ''dTAzYTdcdTAzYThcdTAzYTlcdTAzYWFcdTAzYWJcdTAzYWNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzYjBcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAz''@;'; put 'put ''YzJcdTAzYzNcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTAzYzlcdTAzY2FcdTAzY2JcdTAzY2NcdTAzY2RcdTAzY2VcdWZmZmQifSxjcDI4NTk3OiJpc284ODU5NyIsaXNvODg1OTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdc''@;'; put 'put ''eDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHVmZmZkXHhhMlx4YTNceGE0XHhhNVx4YTZceGE3XHhhOFx4YTlceGQ3XHhhYlx4YWNceGFkXHhhZVx4YWZceGIw''@;'; put 'put ''XHhiMVx4YjJceGIzXHhiNFx4YjVceGI2XHhiN1x4YjhceGI5XHhmN1x4YmJceGJjXHhiZFx4YmVcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTIwMTdcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJcdTA1''@;'; put 'put ''ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRcdWZmZmRcdTIwMGVcdTIwMGZcdWZmZmQifSxjcDI4NTk4OiJpc284ODU5OCIsaXNvODg1OTk6e3R5cGU6Il9zYmNzIixjaGFy''@;'; put 'put ''czoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4''@;'; put 'put ''YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxMWVc''@;'; put 'put ''eGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxMzBcdTAxNWVceGRmXHhlMFx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx1MDExZlx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4''@;'; put 'put ''XHhmOVx4ZmFceGZiXHhmY1x1MDEzMVx1MDE1Zlx4ZmYifSxjcDI4NTk5OiJpc284ODU5OSIsaXNvODg1OTEwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkz''@;'; put 'put ''XHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDExMlx1MDEyMlx1MDEyYVx1MDEyOFx1MDEzNlx4YTdcdTAxM2JcdTAxMTBcdTAxNjBcdTAxNjZcdTAxN2RceGFkXHUwMTZhXHUwMTRhXHhiMFx1MDEwNVx1MDExM1x1MDEyM1x1MDEy''@;'; put 'put ''Ylx1MDEyOVx1MDEzN1x4YjdcdTAxM2NcdTAxMTFcdTAxNjFcdTAxNjdcdTAxN2VcdTIwMTVcdTAxNmJcdTAxNGJcdTAxMDBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZcdTAxMmVcdTAxMGNceGM5XHUwMTE4XHhjYlx1MDExNlx4Y2RceGNlXHhjZlx4ZDBcdTAxNDVcdTAxNGNceGQzXHhkNFx4''@;'; put 'put ''ZDVceGQ2XHUwMTY4XHhkOFx1MDE3Mlx4ZGFceGRiXHhkY1x4ZGRceGRlXHhkZlx1MDEwMVx4ZTFceGUyXHhlM1x4ZTRceGU1XHhlNlx1MDEyZlx1MDEwZFx4ZTlcdTAxMTlceGViXHUwMTE3XHhlZFx4ZWVceGVmXHhmMFx1MDE0Nlx1MDE0ZFx4ZjNceGY0XHhmNVx4ZjZcdTAxNjlceGY4XHUw''@;'; put 'put ''MTczXHhmYVx4ZmJceGZjXHhmZFx4ZmVcdTAxMzgifSxjcDI4NjAwOiJpc284ODU5MTAiLGlzbzg4NTkxMTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4''@;'; put 'put ''OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNc''@;'; put 'put ''dTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBlMWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBl''@;'; put 'put ''MmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdcdTBlMzhcdTBlMzlcdTBlM2FcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFc''@;'; put 'put ''dTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBlNTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxjcDI4NjAxOiJpc284ODU5MTEiLGlzbzg4NTkxMzp7dHlwZToi''@;'; put 'put ''X3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTIwMWRceGEyXHhhM1x4YTRc''@;'; put 'put ''dTIwMWVceGE2XHhhN1x4ZDhceGE5XHUwMTU2XHhhYlx4YWNceGFkXHhhZVx4YzZceGIwXHhiMVx4YjJceGIzXHUyMDFjXHhiNVx4YjZceGI3XHhmOFx4YjlcdTAxNTdceGJiXHhiY1x4YmRceGJlXHhlNlx1MDEwNFx1MDEyZVx1MDEwMFx1MDEwNlx4YzRceGM1XHUwMTE4XHUwMTEyXHUwMTBj''@;'; put 'put ''XHhjOVx1MDE3OVx1MDExNlx1MDEyMlx1MDEzNlx1MDEyYVx1MDEzYlx1MDE2MFx1MDE0M1x1MDE0NVx4ZDNcdTAxNGNceGQ1XHhkNlx4ZDdcdTAxNzJcdTAxNDFcdTAxNWFcdTAxNmFceGRjXHUwMTdiXHUwMTdkXHhkZlx1MDEwNVx1MDEyZlx1MDEwMVx1MDEwN1x4ZTRceGU1XHUwMTE5XHUw''@;'; put 'put ''MTEzXHUwMTBkXHhlOVx1MDE3YVx1MDExN1x1MDEyM1x1MDEzN1x1MDEyYlx1MDEzY1x1MDE2MVx1MDE0NFx1MDE0Nlx4ZjNcdTAxNGRceGY1XHhmNlx4ZjdcdTAxNzNcdTAxNDJcdTAxNWJcdTAxNmJceGZjXHUwMTdjXHUwMTdlXHUyMDE5In0sY3AyODYwMzoiaXNvODg1OTEzIixpc284ODU5''@;'; put 'put ''MTQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHUxZTAyXHUx''@;'; put 'put ''ZTAzXHhhM1x1MDEwYVx1MDEwYlx1MWUwYVx4YTdcdTFlODBceGE5XHUxZTgyXHUxZTBiXHUxZWYyXHhhZFx4YWVcdTAxNzhcdTFlMWVcdTFlMWZcdTAxMjBcdTAxMjFcdTFlNDBcdTFlNDFceGI2XHUxZTU2XHUxZTgxXHUxZTU3XHUxZTgzXHUxZTYwXHUxZWYzXHUxZTg0XHUxZTg1XHUxZTYx''@;'; put 'put ''XHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx1MDE3NFx4ZDFceGQyXHhkM1x4ZDRceGQ1XHhkNlx1MWU2YVx4ZDhceGQ5XHhkYVx4ZGJceGRjXHhkZFx1MDE3Nlx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhl''@;'; put 'put ''N1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHUwMTc1XHhmMVx4ZjJceGYzXHhmNFx4ZjVceGY2XHUxZTZiXHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHUwMTc3XHhmZiJ9LGNwMjg2MDQ6Imlzbzg4NTkxNCIsaXNvODg1OTE1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgx''@;'; put 'put ''XHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx4YTFceGEyXHhhM1x1MjBhY1x4YTVcdTAxNjBceGE3XHUwMTYxXHhh''@;'; put 'put ''OVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNcdTAxN2RceGI1XHhiNlx4YjdcdTAxN2VceGI5XHhiYVx4YmJcdTAxNTJcdTAxNTNcdTAxNzhceGJmXHhjMFx4YzFceGMyXHhjM1x4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHhjY1x4Y2RceGNlXHhjZlx4''@;'; put 'put ''ZDBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHhkZVx4ZGZceGUwXHhlMVx4ZTJceGUzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhm''@;'; put 'put ''OVx4ZmFceGZiXHhmY1x4ZmRceGZlXHhmZiJ9LGNwMjg2MDU6Imlzbzg4NTkxNSIsaXNvODg1OTE2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4''@;'; put 'put ''OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MDEwNFx1MDEwNVx1MDE0MVx1MjBhY1x1MjAxZVx1MDE2MFx4YTdcdTAxNjFceGE5XHUwMjE4XHhhYlx1MDE3OVx4YWRcdTAxN2FcdTAxN2JceGIwXHhiMVx1MDEwY1x1MDE0Mlx1MDE3ZFx1MjAxZFx4YjZc''@;'; put 'put ''eGI3XHUwMTdlXHUwMTBkXHUwMjE5XHhiYlx1MDE1Mlx1MDE1M1x1MDE3OFx1MDE3Y1x4YzBceGMxXHhjMlx1MDEwMlx4YzRcdTAxMDZceGM2XHhjN1x4YzhceGM5XHhjYVx4Y2JceGNjXHhjZFx4Y2VceGNmXHUwMTEwXHUwMTQzXHhkMlx4ZDNceGQ0XHUwMTUwXHhkNlx1MDE1YVx1MDE3MFx4''@;'; put 'put ''ZDlceGRhXHhkYlx4ZGNcdTAxMThcdTAyMWFceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx1MDEwN1x4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4ZWZcdTAxMTFcdTAxNDRceGYyXHhmM1x4ZjRcdTAxNTFceGY2XHUwMTViXHUwMTcxXHhmOVx4ZmFceGZiXHhmY1x1MDEx''@;'; put 'put ''OVx1MDIxYlx4ZmYifSxjcDI4NjA2OiJpc284ODU5MTYiLGNwNDM3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceGVjXHhjNFx4YzVceGM5XHhlNlx4YzZceGY0XHhmNlx4ZjJceGZiXHhmOVx4ZmZceGQ2''@;'; put 'put ''XHhkY1x4YTJceGEzXHhhNVx1MjBhN1x1MDE5Mlx4ZTFceGVkXHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx1MjMxMFx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1''@;'; put 'put ''N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1''@;'; put 'put ''MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2''@;'; put 'put ''NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtNDM3OiJjcDQzNyIsY3NpYm00Mzc6ImNwNDM3IixjcDczNzp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAz''@;'; put 'put ''OTdcdTAzOThcdTAzOTlcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTAzOWVcdTAzOWZcdTAzYTBcdTAzYTFcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYjFcdTAzYjJcdTAzYjNcdTAzYjRcdTAzYjVcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFc''@;'; put 'put ''dTAzYmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzJcdTAzYzRcdTAzYzVcdTAzYzZcdTAzYzdcdTAzYzhcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1''@;'; put 'put ''NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFc''@;'; put 'put ''dTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYzlcdTAzYWNcdTAzYWRcdTAzYWVcdTAzY2FcdTAzYWZcdTAzY2NcdTAzY2RcdTAzY2JcdTAzY2VcdTAzODZcdTAzODhcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzOGZceGIxXHUyMjY1XHUyMjY0XHUwM2Fh''@;'; put 'put ''XHUwM2FiXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm03Mzc6ImNwNzM3Iixjc2libTczNzoiY3A3MzciLGNwNzc1Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDEwNlx4ZmNceGU5XHUwMTAxXHhlNFx1MDEyM1x4ZTVcdTAxMDdcdTAxNDJc''@;'; put 'put ''dTAxMTNcdTAxNTZcdTAxNTdcdTAxMmJcdTAxNzlceGM0XHhjNVx4YzlceGU2XHhjNlx1MDE0ZFx4ZjZcdTAxMjJceGEyXHUwMTVhXHUwMTViXHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHhhNFx1MDEwMFx1MDEyYVx4ZjNcdTAxN2JcdTAxN2NcdTAxN2FcdTIwMWRceGE2XHhhOVx4YWVceGFj''@;'; put 'put ''XHhiZFx4YmNcdTAxNDFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MDEwNFx1MDEwY1x1MDExOFx1MDExNlx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MDEyZVx1MDE2MFx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDE3Mlx1MDE2''@;'; put 'put ''YVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MDE3ZFx1MDEwNVx1MDEwZFx1MDExOVx1MDExN1x1MDEyZlx1MDE2MVx1MDE3M1x1MDE2Ylx1MDE3ZVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx4ZDNceGRmXHUwMTRjXHUwMTQz''@;'; put 'put ''XHhmNVx4ZDVceGI1XHUwMTQ0XHUwMTM2XHUwMTM3XHUwMTNiXHUwMTNjXHUwMTQ2XHUwMTEyXHUwMTQ1XHUyMDE5XHhhZFx4YjFcdTIwMWNceGJlXHhiNlx4YTdceGY3XHUyMDFlXHhiMFx1MjIxOVx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtNzc1OiJjcDc3NSIsY3NpYm03NzU6''@;'; put 'put ''ImNwNzc1IixjcDg1MDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZWZceGVlXHhlY1x4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGYyXHhmYlx4ZjlceGZmXHhkNlx4ZGNceGY4XHhhM1x4ZDhceGQ3XHUwMTky''@;'; put 'put ''XHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4YmFceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUy''@;'; put 'put ''Y1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4ZjBceGQwXHhjYVx4Y2JceGM4XHUwMTMxXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQzXHhkZlx4ZDRceGQy''@;'; put 'put ''XHhmNVx4ZDVceGI1XHhmZVx4ZGVceGRhXHhkYlx4ZDlceGZkXHhkZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTA6ImNwODUwIixjc2libTg1MDoiY3A4NTAiLGNwODUyOnt0eXBlOiJf''@;'; put 'put ''c2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHUwMTZmXHUwMTA3XHhlN1x1MDE0Mlx4ZWJcdTAxNTBcdTAxNTFceGVlXHUwMTc5XHhjNFx1MDEwNlx4YzlcdTAxMzlcdTAxM2FceGY0XHhmNlx1MDEzZFx1MDEzZVx1MDE1YVx1MDE1Ylx4ZDZceGRjXHUwMTY0XHUwMTY1XHUwMTQx''@;'; put 'put ''XHhkN1x1MDEwZFx4ZTFceGVkXHhmM1x4ZmFcdTAxMDRcdTAxMDVcdTAxN2RcdTAxN2VcdTAxMThcdTAxMTlceGFjXHUwMTdhXHUwMTBjXHUwMTVmXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx1MDExYVx1MDE1ZVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1''@;'; put 'put ''ZFx1MDE3Ylx1MDE3Y1x1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MDEwMlx1MDEwM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdTAxMTFcdTAxMTBcdTAxMGVceGNiXHUwMTBmXHUwMTQ3XHhjZFx4Y2VcdTAxMWJcdTI1''@;'; put 'put ''MThcdTI1MGNcdTI1ODhcdTI1ODRcdTAxNjJcdTAxNmVcdTI1ODBceGQzXHhkZlx4ZDRcdTAxNDNcdTAxNDRcdTAxNDhcdTAxNjBcdTAxNjFcdTAxNTRceGRhXHUwMTU1XHUwMTcwXHhmZFx4ZGRcdTAxNjNceGI0XHhhZFx1MDJkZFx1MDJkYlx1MDJjN1x1MDJkOFx4YTdceGY3XHhiOFx4YjBc''@;'; put 'put ''eGE4XHUwMmQ5XHUwMTcxXHUwMTU4XHUwMTU5XHUyNWEwXHhhMCJ9LGlibTg1MjoiY3A4NTIiLGNzaWJtODUyOiJjcDg1MiIsY3A4NTU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDUyXHUwNDAyXHUwNDUzXHUwNDAzXHUwNDUxXHUwNDAxXHUwNDU0XHUwNDA0XHUwNDU1XHUwNDA1XHUwNDU2''@;'; put 'put ''XHUwNDA2XHUwNDU3XHUwNDA3XHUwNDU4XHUwNDA4XHUwNDU5XHUwNDA5XHUwNDVhXHUwNDBhXHUwNDViXHUwNDBiXHUwNDVjXHUwNDBjXHUwNDVlXHUwNDBlXHUwNDVmXHUwNDBmXHUwNDRlXHUwNDJlXHUwNDRhXHUwNDJhXHUwNDMwXHUwNDEwXHUwNDMxXHUwNDExXHUwNDQ2XHUwNDI2XHUw''@;'; put 'put ''NDM0XHUwNDE0XHUwNDM1XHUwNDE1XHUwNDQ0XHUwNDI0XHUwNDMzXHUwNDEzXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTA0NDVcdTA0MjVcdTA0MzhcdTA0MThcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTA0MzlcdTA0MTlcdTI1MTBcdTI1MTRcdTI1MzRcdTI1''@;'; put 'put ''MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTA0M2FcdTA0MWFcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNceGE0XHUwNDNiXHUwNDFiXHUwNDNjXHUwNDFjXHUwNDNkXHUwNDFkXHUwNDNlXHUwNDFlXHUwNDNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUwNDFmXHUw''@;'; put 'put ''NDRmXHUyNTgwXHUwNDJmXHUwNDQwXHUwNDIwXHUwNDQxXHUwNDIxXHUwNDQyXHUwNDIyXHUwNDQzXHUwNDIzXHUwNDM2XHUwNDE2XHUwNDMyXHUwNDEyXHUwNDRjXHUwNDJjXHUyMTE2XHhhZFx1MDQ0Ylx1MDQyYlx1MDQzN1x1MDQxN1x1MDQ0OFx1MDQyOFx1MDQ0ZFx1MDQyZFx1MDQ0OVx1''@;'; put 'put ''MDQyOVx1MDQ0N1x1MDQyN1x4YTdcdTI1YTBceGEwIn0saWJtODU1OiJjcDg1NSIsY3NpYm04NTU6ImNwODU1IixjcDg1Njp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA1ZDBcdTA1ZDFcdTA1ZDJcdTA1ZDNcdTA1ZDRcdTA1ZDVcdTA1ZDZcdTA1ZDdcdTA1ZDhcdTA1ZDlcdTA1ZGFcdTA1ZGJc''@;'; put 'put ''dTA1ZGNcdTA1ZGRcdTA1ZGVcdTA1ZGZcdTA1ZTBcdTA1ZTFcdTA1ZTJcdTA1ZTNcdTA1ZTRcdTA1ZTVcdTA1ZTZcdTA1ZTdcdTA1ZThcdTA1ZTlcdTA1ZWFcdWZmZmRceGEzXHVmZmZkXHhkN1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx4YWVceGFjXHhiZFx4YmNcdWZmZmRceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRceGE2XHVmZmZkXHUyNTgwXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHhiNVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YWZceGI0XHhhZFx4YjFcdTIwMTdceGJlXHhiNlx4YTdceGY3XHhiOFx4YjBceGE4XHhiN1x4YjlceGIzXHhiMlx1MjVhMFx4YTAifSxpYm04NTY6ImNwODU2Iixjc2libTg1''@;'; put 'put ''NjoiY3A4NTYiLGNwODU3Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGU0XHhlMFx4ZTVceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTAxMzFceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHUwMTMwXHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTAx''@;'; put 'put ''NWVcdTAxNWZceGUxXHhlZFx4ZjNceGZhXHhmMVx4ZDFcdTAxMWVcdTAxMWZceGJmXHhhZVx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx4YzFceGMyXHhjMFx4YTlcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRceGEyXHhhNVx1MjUxMFx1MjUx''@;'; put 'put ''NFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x4ZTNceGMzXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHhhNFx4YmFceGFhXHhjYVx4Y2JceGM4XHVmZmZkXHhjZFx4Y2VceGNmXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHhhNlx4Y2NcdTI1ODBceGQz''@;'; put 'put ''XHhkZlx4ZDRceGQyXHhmNVx4ZDVceGI1XHVmZmZkXHhkN1x4ZGFceGRiXHhkOVx4ZWNceGZmXHhhZlx4YjRceGFkXHhiMVx1ZmZmZFx4YmVceGI2XHhhN1x4ZjdceGI4XHhiMFx4YThceGI3XHhiOVx4YjNceGIyXHUyNWEwXHhhMCJ9LGlibTg1NzoiY3A4NTciLGNzaWJtODU3OiJjcDg1NyIs''@;'; put 'put ''Y3A4NTg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHhkN1x1MDE5Mlx4ZTFceGVk''@;'; put 'put ''XHhmM1x4ZmFceGYxXHhkMVx4YWFceGJhXHhiZlx4YWVceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRceGMxXHhjMlx4YzBceGE5XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHhhMlx4YTVcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNc''@;'; put 'put ''dTI1MDBcdTI1M2NceGUzXHhjM1x1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x4YTRceGYwXHhkMFx4Y2FceGNiXHhjOFx1MjBhY1x4Y2RceGNlXHhjZlx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx4YTZceGNjXHUyNTgwXHhkM1x4ZGZceGQ0XHhkMlx4ZjVceGQ1''@;'; put 'put ''XHhiNVx4ZmVceGRlXHhkYVx4ZGJceGQ5XHhmZFx4ZGRceGFmXHhiNFx4YWRceGIxXHUyMDE3XHhiZVx4YjZceGE3XHhmN1x4YjhceGIwXHhhOFx4YjdceGI5XHhiM1x4YjJcdTI1YTBceGEwIn0saWJtODU4OiJjcDg1OCIsY3NpYm04NTg6ImNwODU4IixjcDg2MDp7dHlwZToiX3NiY3MiLGNo''@;'; put 'put ''YXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlM1x4ZTBceGMxXHhlN1x4ZWFceGNhXHhlOFx4Y2RceGQ0XHhlY1x4YzNceGMyXHhjOVx4YzBceGM4XHhmNFx4ZjVceGYyXHhkYVx4ZjlceGNjXHhkNVx4ZGNceGEyXHhhM1x4ZDlcdTIwYTdceGQzXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQxXHhhYVx4''@;'; put 'put ''YmFceGJmXHhkMlx4YWNceGJkXHhiY1x4YTFceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUz''@;'; put 'put ''Y1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4''@;'; put 'put ''ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBc''@;'; put 'put ''eGEwIn0saWJtODYwOiJjcDg2MCIsY3NpYm04NjA6ImNwODYwIixjcDg2MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM3XHhmY1x4ZTlceGUyXHhlNFx4ZTBceGU1XHhlN1x4ZWFceGViXHhlOFx4ZDBceGYwXHhkZVx4YzRceGM1XHhjOVx4ZTZceGM2XHhmNFx4ZjZceGZlXHhmYlx4ZGRceGZk''@;'; put 'put ''XHhkNlx4ZGNceGY4XHhhM1x4ZDhcdTIwYTdcdTAxOTJceGUxXHhlZFx4ZjNceGZhXHhjMVx4Y2RceGQzXHhkYVx4YmZcdTIzMTBceGFjXHhiZFx4YmNceGExXHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFc''@;'; put 'put ''dTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1''@;'; put 'put ''NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2MVx4YjFcdTIyNjVc''@;'; put 'put ''dTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGlibTg2MToiY3A4NjEiLGNzaWJtODYxOiJjcDg2MSIsY3A4NjI6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwNWQ1''@;'; put 'put ''XHUwNWQ2XHUwNWQ3XHUwNWQ4XHUwNWQ5XHUwNWRhXHUwNWRiXHUwNWRjXHUwNWRkXHUwNWRlXHUwNWRmXHUwNWUwXHUwNWUxXHUwNWUyXHUwNWUzXHUwNWU0XHUwNWU1XHUwNWU2XHUwNWU3XHUwNWU4XHUwNWU5XHUwNWVhXHhhMlx4YTNceGE1XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhm''@;'; put 'put ''YVx4ZjFceGQxXHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGJiXHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJj''@;'; put 'put ''XHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUy''@;'; put 'put ''NTkwXHUyNTgwXHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFh''@;'; put 'put ''XHUyMDdmXHhiMlx1MjVhMFx4YTAifSxpYm04NjI6ImNwODYyIixjc2libTg2MjoiY3A4NjIiLGNwODYzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzdceGZjXHhlOVx4ZTJceGMyXHhlMFx4YjZceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVcdTIwMTdceGMwXHhhN1x4YzlceGM4XHhjYVx4ZjRc''@;'; put 'put ''eGNiXHhjZlx4ZmJceGY5XHhhNFx4ZDRceGRjXHhhMlx4YTNceGQ5XHhkYlx1MDE5Mlx4YTZceGI0XHhmM1x4ZmFceGE4XHhiOFx4YjNceGFmXHhjZVx1MjMxMFx4YWNceGJkXHhiY1x4YmVceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1''@;'; put 'put ''MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1''@;'; put 'put ''OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDNiMVx4ZGZcdTAzOTNcdTAzYzBcdTAzYTNcdTAzYzNceGI1XHUwM2M0XHUwM2E2XHUwMzk4XHUwM2E5XHUwM2I0XHUyMjFlXHUwM2M2XHUwM2I1XHUyMjI5''@;'; put 'put ''XHUyMjYxXHhiMVx1MjI2NVx1MjI2NFx1MjMyMFx1MjMyMVx4ZjdcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0saWJtODYzOiJjcDg2MyIsY3NpYm04NjM6ImNwODYzIixjcDg2NDp7dHlwZToiX3NiY3MiLGNoYXJzOiJcMFx4MDFceDAyXHgwM1x4MDRc''@;'; put 'put ''eDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyRcdTA2NmEmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e''@;'; put 'put ''X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5ceDdmXHhiMFx4YjdcdTIyMTlcdTIyMWFcdTI1OTJcdTI1MDBcdTI1MDJcdTI1M2NcdTI1MjRcdTI1MmNcdTI1MWNcdTI1MzRcdTI1MTBcdTI1MGNcdTI1MTRcdTI1MThcdTAzYjJcdTIyMWVcdTAzYzZceGIxXHhiZFx4YmNcdTIyNDhc''@;'; put 'put ''eGFiXHhiYlx1ZmVmN1x1ZmVmOFx1ZmZmZFx1ZmZmZFx1ZmVmYlx1ZmVmY1x1ZmZmZFx4YTBceGFkXHVmZTgyXHhhM1x4YTRcdWZlODRcdWZmZmRcdWZmZmRcdWZlOGVcdWZlOGZcdWZlOTVcdWZlOTlcdTA2MGNcdWZlOWRcdWZlYTFcdWZlYTVcdTA2NjBcdTA2NjFcdTA2NjJcdTA2NjNcdTA2''@;'; put 'put ''NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2NjhcdTA2NjlcdWZlZDFcdTA2MWJcdWZlYjFcdWZlYjVcdWZlYjlcdTA2MWZceGEyXHVmZTgwXHVmZTgxXHVmZTgzXHVmZTg1XHVmZWNhXHVmZThiXHVmZThkXHVmZTkxXHVmZTkzXHVmZTk3XHVmZTliXHVmZTlmXHVmZWEzXHVmZWE3XHVmZWE5XHVm''@;'; put 'put ''ZWFiXHVmZWFkXHVmZWFmXHVmZWIzXHVmZWI3XHVmZWJiXHVmZWJmXHVmZWMxXHVmZWM1XHVmZWNiXHVmZWNmXHhhNlx4YWNceGY3XHhkN1x1ZmVjOVx1MDY0MFx1ZmVkM1x1ZmVkN1x1ZmVkYlx1ZmVkZlx1ZmVlM1x1ZmVlN1x1ZmVlYlx1ZmVlZFx1ZmVlZlx1ZmVmM1x1ZmViZFx1ZmVjY1x1''@;'; put 'put ''ZmVjZVx1ZmVjZFx1ZmVlMVx1ZmU3ZFx1MDY1MVx1ZmVlNVx1ZmVlOVx1ZmVlY1x1ZmVmMFx1ZmVmMlx1ZmVkMFx1ZmVkNVx1ZmVmNVx1ZmVmNlx1ZmVkZFx1ZmVkOVx1ZmVmMVx1MjVhMFx1ZmZmZCJ9LGlibTg2NDoiY3A4NjQiLGNzaWJtODY0OiJjcDg2NCIsY3A4NjU6e3R5cGU6Il9zYmNz''@;'; put 'put ''IixjaGFyczoiXHhjN1x4ZmNceGU5XHhlMlx4ZTRceGUwXHhlNVx4ZTdceGVhXHhlYlx4ZThceGVmXHhlZVx4ZWNceGM0XHhjNVx4YzlceGU2XHhjNlx4ZjRceGY2XHhmMlx4ZmJceGY5XHhmZlx4ZDZceGRjXHhmOFx4YTNceGQ4XHUyMGE3XHUwMTkyXHhlMVx4ZWRceGYzXHhmYVx4ZjFceGQx''@;'; put 'put ''XHhhYVx4YmFceGJmXHUyMzEwXHhhY1x4YmRceGJjXHhhMVx4YWJceGE0XHUyNTkxXHUyNTkyXHUyNTkzXHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUy''@;'; put 'put ''NTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUyNTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgw''@;'; put 'put ''XHUwM2IxXHhkZlx1MDM5M1x1MDNjMFx1MDNhM1x1MDNjM1x4YjVcdTAzYzRcdTAzYTZcdTAzOThcdTAzYTlcdTAzYjRcdTIyMWVcdTAzYzZcdTAzYjVcdTIyMjlcdTIyNjFceGIxXHUyMjY1XHUyMjY0XHUyMzIwXHUyMzIxXHhmN1x1MjI0OFx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMDdmXHhi''@;'; put 'put ''Mlx1MjVhMFx4YTAifSxpYm04NjU6ImNwODY1Iixjc2libTg2NToiY3A4NjUiLGNwODY2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1''@;'; put 'put ''MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQz''@;'; put 'put ''YVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1''@;'; put 'put ''MjU1ZVx1MjU1Zlx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDQ0MFx1MDQ0''@;'; put 'put ''MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MDQwMVx1MDQ1MVx1MDQwNFx1MDQ1NFx1MDQwN1x1MDQ1N1x1MDQwZVx1MDQ1ZVx4YjBcdTIyMTlceGI3XHUyMjFhXHUyMTE2XHhhNFx1''@;'; put 'put ''MjVhMFx4YTAifSxpYm04NjY6ImNwODY2Iixjc2libTg2NjoiY3A4NjYiLGNwODY5Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MDM4Nlx1ZmZmZFx4YjdceGFjXHhhNlx1MjAxOFx1MjAxOVx1MDM4OFx1MjAxNVx1MDM4OVx1MDM4''@;'; put 'put ''YVx1MDNhYVx1MDM4Y1x1ZmZmZFx1ZmZmZFx1MDM4ZVx1MDNhYlx4YTlcdTAzOGZceGIyXHhiM1x1MDNhY1x4YTNcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2FcdTAzOTBcdTAzY2NcdTAzY2RcdTAzOTFcdTAzOTJcdTAzOTNcdTAzOTRcdTAzOTVcdTAzOTZcdTAzOTdceGJkXHUwMzk4XHUwMzk5''@;'; put 'put ''XHhhYlx4YmJcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTAzOWFcdTAzOWJcdTAzOWNcdTAzOWRcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTAzOWVcdTAzOWZcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTAzYTBcdTAzYTFcdTI1NWFcdTI1NTRc''@;'; put 'put ''dTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTAzYTNcdTAzYTRcdTAzYTVcdTAzYTZcdTAzYTdcdTAzYThcdTAzYTlcdTAzYjFcdTAzYjJcdTAzYjNcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTAzYjRcdTAzYjVcdTI1ODBcdTAzYjZcdTAzYjdcdTAzYjhcdTAzYjlcdTAzYmFcdTAz''@;'; put 'put ''YmJcdTAzYmNcdTAzYmRcdTAzYmVcdTAzYmZcdTAzYzBcdTAzYzFcdTAzYzNcdTAzYzJcdTAzYzRcdTAzODRceGFkXHhiMVx1MDNjNVx1MDNjNlx1MDNjN1x4YTdcdTAzYzhcdTAzODVceGIwXHhhOFx1MDNjOVx1MDNjYlx1MDNiMFx1MDNjZVx1MjVhMFx4YTAifSxpYm04Njk6ImNwODY5Iixj''@;'; put 'put ''c2libTg2OToiY3A4NjkiLGNwOTIyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4''@;'; put 'put ''OWVceDlmXHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHUyMDNlXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx4YzBceGMxXHhjMlx4YzNceGM0XHhjNVx4YzZc''@;'; put 'put ''eGM3XHhjOFx4YzlceGNhXHhjYlx4Y2NceGNkXHhjZVx4Y2ZcdTAxNjBceGQxXHhkMlx4ZDNceGQ0XHhkNVx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNceGRkXHUwMTdkXHhkZlx4ZTBceGUxXHhlMlx4ZTNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx4ZWNceGVkXHhlZVx4''@;'; put 'put ''ZWZcdTAxNjFceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHUwMTdlXHhmZiJ9LGlibTkyMjoiY3A5MjIiLGNzaWJtOTIyOiJjcDkyMiIsY3AxMDQ2Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmU4OFx4ZDdceGY3XHVmOGY2XHVmOGY1XHVmOGY0''@;'; put 'put ''XHVmOGY3XHVmZTcxXHg4OFx1MjVhMFx1MjUwMlx1MjUwMFx1MjUxMFx1MjUwY1x1MjUxNFx1MjUxOFx1ZmU3OVx1ZmU3Ylx1ZmU3ZFx1ZmU3Zlx1ZmU3N1x1ZmU4YVx1ZmVmMFx1ZmVmM1x1ZmVmMlx1ZmVjZVx1ZmVjZlx1ZmVkMFx1ZmVmNlx1ZmVmOFx1ZmVmYVx1ZmVmY1x4YTBcdWY4ZmFc''@;'; put 'put ''dWY4ZjlcdWY4ZjhceGE0XHVmOGZiXHVmZThiXHVmZTkxXHVmZTk3XHVmZTliXHVmZTlmXHVmZWEzXHUwNjBjXHhhZFx1ZmVhN1x1ZmViM1x1MDY2MFx1MDY2MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1ZmViN1x1MDYxYlx1ZmViYlx1ZmViZlx1''@;'; put 'put ''ZmVjYVx1MDYxZlx1ZmVjYlx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx1MDYyNVx1MDYyNlx1MDYyN1x1MDYyOFx1MDYyOVx1MDYyYVx1MDYyYlx1MDYyY1x1MDYyZFx1MDYyZVx1MDYyZlx1MDYzMFx1MDYzMVx1MDYzMlx1MDYzM1x1MDYzNFx1MDYzNVx1MDYzNlx1MDYzN1x1ZmVjN1x1MDYz''@;'; put 'put ''OVx1MDYzYVx1ZmVjY1x1ZmU4Mlx1ZmU4NFx1ZmU4ZVx1ZmVkM1x1MDY0MFx1MDY0MVx1MDY0Mlx1MDY0M1x1MDY0NFx1MDY0NVx1MDY0Nlx1MDY0N1x1MDY0OFx1MDY0OVx1MDY0YVx1MDY0Ylx1MDY0Y1x1MDY0ZFx1MDY0ZVx1MDY0Zlx1MDY1MFx1MDY1MVx1MDY1Mlx1ZmVkN1x1ZmVkYlx1''@;'; put 'put ''ZmVkZlx1ZjhmY1x1ZmVmNVx1ZmVmN1x1ZmVmOVx1ZmVmYlx1ZmVlM1x1ZmVlN1x1ZmVlY1x1ZmVlOVx1ZmZmZCJ9LGlibTEwNDY6ImNwMTA0NiIsY3NpYm0xMDQ2OiJjcDEwNDYiLGNwMTEyNDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4''@;'; put 'put ''ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBcdTA0MDFcdTA0MDJcdTA0OTBcdTA0MDRcdTA0MDVcdTA0MDZcdTA0MDdcdTA0MDhcdTA0MDlcdTA0MGFcdTA0MGJc''@;'; put 'put ''dTA0MGNceGFkXHUwNDBlXHUwNDBmXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3''@;'; put 'put ''XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDQwXHUwNDQxXHUwNDQyXHUw''@;'; put 'put ''NDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUyMTE2XHUwNDUxXHUwNDUyXHUwNDkxXHUwNDU0XHUwNDU1XHUwNDU2XHUwNDU3XHUwNDU4XHUwNDU5XHUwNDVhXHUwNDViXHUwNDVjXHhhN1x1MDQ1ZVx1''@;'; put 'put ''MDQ1ZiJ9LGlibTExMjQ6ImNwMTEyNCIsY3NpYm0xMTI0OiJjcDExMjQiLGNwMTEyNTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0''@;'; put 'put ''MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0M2Fc''@;'; put 'put ''dTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTI1OTFcdTI1OTJcdTI1OTNcdTI1MDJcdTI1MjRcdTI1NjFcdTI1NjJcdTI1NTZcdTI1NTVcdTI1NjNcdTI1NTFcdTI1NTdcdTI1NWRcdTI1NWNcdTI1NWJcdTI1MTBcdTI1MTRcdTI1MzRcdTI1MmNcdTI1MWNcdTI1MDBcdTI1M2NcdTI1''@;'; put 'put ''NWVcdTI1NWZcdTI1NWFcdTI1NTRcdTI1NjlcdTI1NjZcdTI1NjBcdTI1NTBcdTI1NmNcdTI1NjdcdTI1NjhcdTI1NjRcdTI1NjVcdTI1NTlcdTI1NThcdTI1NTJcdTI1NTNcdTI1NmJcdTI1NmFcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTA0NDBcdTA0NDFc''@;'; put 'put ''dTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGZcdTA0MDFcdTA0NTFcdTA0OTBcdTA0OTFcdTA0MDRcdTA0NTRcdTA0MDZcdTA0NTZcdTA0MDdcdTA0NTdceGI3XHUyMjFhXHUyMTE2XHhhNFx1''@;'; put 'put ''MjVhMFx4YTAifSxpYm0xMTI1OiJjcDExMjUiLGNzaWJtMTEyNToiY3AxMTI1IixjcDExMjk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFceDgyXHg4M1x4ODRceDg1XHg4Nlx4ODdceDg4XHg4OVx4OGFceDhiXHg4Y1x4OGRceDhlXHg4Zlx4OTBceDkxXHg5Mlx4OTNceDk0XHg5NVx4''@;'; put 'put ''OTZceDk3XHg5OFx4OTlceDlhXHg5Ylx4OWNceDlkXHg5ZVx4OWZceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x1MDE1M1x4YTlceGFhXHhhYlx4YWNceGFkXHhhZVx4YWZceGIwXHhiMVx4YjJceGIzXHUwMTc4XHhiNVx4YjZceGI3XHUwMTUyXHhiOVx4YmFceGJiXHhiY1x4YmRc''@;'; put 'put ''eGJlXHhiZlx4YzBceGMxXHhjMlx1MDEwMlx4YzRceGM1XHhjNlx4YzdceGM4XHhjOVx4Y2FceGNiXHUwMzAwXHhjZFx4Y2VceGNmXHUwMTEwXHhkMVx1MDMwOVx4ZDNceGQ0XHUwMWEwXHhkNlx4ZDdceGQ4XHhkOVx4ZGFceGRiXHhkY1x1MDFhZlx1MDMwM1x4ZGZceGUwXHhlMVx4ZTJcdTAx''@;'; put 'put ''MDNceGU0XHhlNVx4ZTZceGU3XHhlOFx4ZTlceGVhXHhlYlx1MDMwMVx4ZWRceGVlXHhlZlx1MDExMVx4ZjFcdTAzMjNceGYzXHhmNFx1MDFhMVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNcdTAxYjBcdTIwYWJceGZmIn0saWJtMTEyOToiY3AxMTI5Iixjc2libTExMjk6ImNwMTEyOSIs''@;'; put 'put ''Y3AxMTMzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHg4Mlx4ODNceDg0XHg4NVx4ODZceDg3XHg4OFx4ODlceDhhXHg4Ylx4OGNceDhkXHg4ZVx4OGZceDkwXHg5MVx4OTJceDkzXHg5NFx4OTVceDk2XHg5N1x4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MGU4''@;'; put 'put ''MVx1MGU4Mlx1MGU4NFx1MGU4N1x1MGU4OFx1MGVhYVx1MGU4YVx1MGU4ZFx1MGU5NFx1MGU5NVx1MGU5Nlx1MGU5N1x1MGU5OVx1MGU5YVx1MGU5Ylx1MGU5Y1x1MGU5ZFx1MGU5ZVx1MGU5Zlx1MGVhMVx1MGVhMlx1MGVhM1x1MGVhNVx1MGVhN1x1MGVhYlx1MGVhZFx1MGVhZVx1ZmZmZFx1''@;'; put 'put ''ZmZmZFx1ZmZmZFx1MGVhZlx1MGViMFx1MGViMlx1MGViM1x1MGViNFx1MGViNVx1MGViNlx1MGViN1x1MGViOFx1MGViOVx1MGViY1x1MGViMVx1MGViYlx1MGViZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGVjMFx1MGVjMVx1MGVjMlx1MGVjM1x1MGVjNFx1MGVjOFx1MGVjOVx1MGVjYVx1MGVj''@;'; put 'put ''Ylx1MGVjY1x1MGVjZFx1MGVjNlx1ZmZmZFx1MGVkY1x1MGVkZFx1MjBhZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGVkMFx1MGVkMVx1MGVkMlx1MGVkM1x1''@;'; put 'put ''MGVkNFx1MGVkNVx1MGVkNlx1MGVkN1x1MGVkOFx1MGVkOVx1ZmZmZFx1ZmZmZFx4YTJceGFjXHhhNlx1ZmZmZCJ9LGlibTExMzM6ImNwMTEzMyIsY3NpYm0xMTMzOiJjcDExMzMiLGNwMTE2MTp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdTBlNDhc''@;'; put 'put ''dTBlMDFcdTBlMDJcdTBlMDNcdTBlMDRcdTBlMDVcdTBlMDZcdTBlMDdcdTBlMDhcdTBlMDlcdTBlMGFcdTBlMGJcdTBlMGNcdTBlMGRcdTBlMGVcdTBlMGZcdTBlMTBcdTBlMTFcdTBlMTJcdTBlMTNcdTBlMTRcdTBlMTVcdTBlMTZcdTBlMTdcdTBlMThcdTBlMTlcdTBlMWFcdTBlMWJcdTBl''@;'; put 'put ''MWNcdTBlMWRcdTBlMWVcdTBlMWZcdTBlMjBcdTBlMjFcdTBlMjJcdTBlMjNcdTBlMjRcdTBlMjVcdTBlMjZcdTBlMjdcdTBlMjhcdTBlMjlcdTBlMmFcdTBlMmJcdTBlMmNcdTBlMmRcdTBlMmVcdTBlMmZcdTBlMzBcdTBlMzFcdTBlMzJcdTBlMzNcdTBlMzRcdTBlMzVcdTBlMzZcdTBlMzdc''@;'; put 'put ''dTBlMzhcdTBlMzlcdTBlM2FcdTBlNDlcdTBlNGFcdTBlNGJcdTIwYWNcdTBlM2ZcdTBlNDBcdTBlNDFcdTBlNDJcdTBlNDNcdTBlNDRcdTBlNDVcdTBlNDZcdTBlNDdcdTBlNDhcdTBlNDlcdTBlNGFcdTBlNGJcdTBlNGNcdTBlNGRcdTBlNGVcdTBlNGZcdTBlNTBcdTBlNTFcdTBlNTJcdTBl''@;'; put 'put ''NTNcdTBlNTRcdTBlNTVcdTBlNTZcdTBlNTdcdTBlNThcdTBlNTlcdTBlNWFcdTBlNWJceGEyXHhhY1x4YTZceGEwIn0saWJtMTE2MToiY3AxMTYxIixjc2libTExNjE6ImNwMTE2MSIsY3AxMTYyOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MjBhY1x4ODFceDgyXHg4M1x4ODRcdTIwMjZceDg2''@;'; put 'put ''XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx4OThceDk5XHg5YVx4OWJceDljXHg5ZFx4OWVceDlmXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUw''@;'; put 'put ''OFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1''@;'; put 'put ''MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUz''@;'; put 'put ''Zlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1''@;'; put 'put ''MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZCJ9LGlibTExNjI6ImNwMTE2MiIsY3NpYm0xMTYyOiJjcDExNjIiLGNwMTE2Mzp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4''@;'; put 'put ''OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4YTBceGExXHhhMlx4YTNcdTIwYWNceGE1XHhhNlx4YTdcdTAxNTNceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x1MDE3OFx4YjVceGI2XHhiN1x1MDE1''@;'; put 'put ''Mlx4YjlceGJhXHhiYlx4YmNceGJkXHhiZVx4YmZceGMwXHhjMVx4YzJcdTAxMDJceGM0XHhjNVx4YzZceGM3XHhjOFx4YzlceGNhXHhjYlx1MDMwMFx4Y2RceGNlXHhjZlx1MDExMFx4ZDFcdTAzMDlceGQzXHhkNFx1MDFhMFx4ZDZceGQ3XHhkOFx4ZDlceGRhXHhkYlx4ZGNcdTAxYWZcdTAz''@;'; put 'put ''MDNceGRmXHhlMFx4ZTFceGUyXHUwMTAzXHhlNFx4ZTVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJcdTAzMDFceGVkXHhlZVx4ZWZcdTAxMTFceGYxXHUwMzIzXHhmM1x4ZjRcdTAxYTFceGY2XHhmN1x4ZjhceGY5XHhmYVx4ZmJceGZjXHUwMWIwXHUyMGFiXHhmZiJ9LGlibTExNjM6ImNwMTE2''@;'; put 'put ''MyIsY3NpYm0xMTYzOiJjcDExNjMiLG1hY2Nyb2F0aWFuOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4''@;'; put 'put ''ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEzXHhhN1x1MjAyMlx4YjZceGRmXHhhZVx1MDE2MFx1MjEyMlx4YjRceGE4XHUyMjYwXHUwMTdkXHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVcdTIyMDZceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwMTYxXHUyMjJiXHhhYVx4YmFc''@;'; put 'put ''dTIxMjZcdTAxN2VceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUwMTA2XHhhYlx1MDEwY1x1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTAxMTBcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHVmZmZkXHhhOVx1MjA0NFx4YTRcdTIw''@;'; put 'put ''MzlcdTIwM2FceGM2XHhiYlx1MjAxM1x4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHUwMTA3XHhjMVx1MDEwZFx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdTAxMTFceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDNjMFx4Y2JcdTAyZGFceGI4XHhjYVx4ZTZc''@;'; put 'put ''dTAyYzcifSxtYWNjeXJpbGxpYzp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0''@;'; put 'put ''MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx1MDQwNlx4YWVceGE5XHUyMTIyXHUwNDAyXHUwNDUyXHUyMjYwXHUwNDAzXHUwNDUzXHUyMjFlXHhiMVx1MjI2''@;'; put 'put ''NFx1MjI2NVx1MDQ1Nlx4YjVcdTIyMDJcdTA0MDhcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MDlcdTA0NTlcdTA0MGFcdTA0NWFcdTA0NThcdTA0MDVceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwNDBiXHUwNDViXHUwNDBjXHUwNDVjXHUwNDU1''@;'; put 'put ''XHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjAxZVx1MDQwZVx1MDQ1ZVx1MDQwZlx1MDQ1Zlx1MjExNlx1MDQwMVx1MDQ1MVx1MDQ0Zlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQz''@;'; put 'put ''Ylx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx4YTQifSxtYWNncmVlazp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhiOVx4YjJc''@;'; put 'put ''eGM5XHhiM1x4ZDZceGRjXHUwMzg1XHhlMFx4ZTJceGU0XHUwMzg0XHhhOFx4ZTdceGU5XHhlOFx4ZWFceGViXHhhM1x1MjEyMlx4ZWVceGVmXHUyMDIyXHhiZFx1MjAzMFx4ZjRceGY2XHhhNlx4YWRceGY5XHhmYlx4ZmNcdTIwMjBcdTAzOTNcdTAzOTRcdTAzOThcdTAzOWJcdTAzOWVcdTAz''@;'; put 'put ''YTBceGRmXHhhZVx4YTlcdTAzYTNcdTAzYWFceGE3XHUyMjYwXHhiMFx1MDM4N1x1MDM5MVx4YjFcdTIyNjRcdTIyNjVceGE1XHUwMzkyXHUwMzk1XHUwMzk2XHUwMzk3XHUwMzk5XHUwMzlhXHUwMzljXHUwM2E2XHUwM2FiXHUwM2E4XHUwM2E5XHUwM2FjXHUwMzlkXHhhY1x1MDM5Zlx1MDNh''@;'; put 'put ''MVx1MjI0OFx1MDNhNFx4YWJceGJiXHUyMDI2XHhhMFx1MDNhNVx1MDNhN1x1MDM4Nlx1MDM4OFx1MDE1M1x1MjAxM1x1MjAxNVx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTAzODlcdTAzOGFcdTAzOGNcdTAzOGVcdTAzYWRcdTAzYWVcdTAzYWZcdTAzY2NcdTAzOGZcdTAzY2RcdTAz''@;'; put 'put ''YjFcdTAzYjJcdTAzYzhcdTAzYjRcdTAzYjVcdTAzYzZcdTAzYjNcdTAzYjdcdTAzYjlcdTAzYmVcdTAzYmFcdTAzYmJcdTAzYmNcdTAzYmRcdTAzYmZcdTAzYzBcdTAzY2VcdTAzYzFcdTAzYzNcdTAzYzRcdTAzYjhcdTAzYzlcdTAzYzJcdTAzYzdcdTAzYzVcdTAzYjZcdTAzY2FcdTAzY2Jc''@;'; put 'put ''dTAzOTBcdTAzYjBcdWZmZmQifSxtYWNpY2VsYW5kOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVc''@;'; put 'put ''eGZhXHhmOVx4ZmJceGZjXHhkZFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFcdTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4''@;'; put 'put ''ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRceGQwXHhmMFx4ZGVceGZlXHhm''@;'; put 'put ''ZFx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3JvbWFuOnt0''@;'; put 'put ''eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRceGM1XHhjN1x4YzlceGQxXHhkNlx4ZGNceGUxXHhlMFx4ZTJceGU0XHhlM1x4ZTVceGU3XHhlOVx4ZThceGVhXHhlYlx4ZWRceGVjXHhlZVx4ZWZceGYxXHhmM1x4ZjJceGY0XHhmNlx4ZjVceGZhXHhmOVx4ZmJceGZjXHUyMDIwXHhiMFx4YTJceGEz''@;'; put 'put ''XHhhN1x1MjAyMlx4YjZceGRmXHhhZVx4YTlcdTIxMjJceGI0XHhhOFx1MjI2MFx4YzZceGQ4XHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZceGU2XHhmOFx4YmZceGExXHhhY1x1MjIxYVx1MDE5Mlx1MjI0''@;'; put 'put ''OFx1MjIwNlx4YWJceGJiXHUyMDI2XHhhMFx4YzBceGMzXHhkNVx1MDE1Mlx1MDE1M1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FceGZmXHUwMTc4XHUyMDQ0XHhhNFx1MjAzOVx1MjAzYVx1ZmIwMVx1ZmIwMlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIw''@;'; put 'put ''MzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhkYlx4ZDlcdTAxMzFcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3JvbWFuaWE6e3R5cGU6Il9zYmNzIixjaGFyczoi''@;'; put 'put ''XHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdceGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZc''@;'; put 'put ''eGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHUwMTAyXHUwMTVlXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx4YTVceGI1XHUyMjAyXHUyMjExXHUyMjBmXHUwM2MwXHUyMjJiXHhhYVx4YmFcdTIxMjZcdTAxMDNcdTAxNWZceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFi''@;'; put 'put ''XHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIwMWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MjA0NFx4YTRcdTIwMzlcdTIwM2FcdTAxNjJcdTAxNjNcdTIwMjFceGI3XHUyMDFhXHUyMDFlXHUyMDMwXHhjMlx4Y2Fc''@;'; put 'put ''eGMxXHhjYlx4YzhceGNkXHhjZVx4Y2ZceGNjXHhkM1x4ZDRcdWZmZmRceGQyXHhkYVx4ZGJceGQ5XHUwMTMxXHUwMmM2XHUwMmRjXHhhZlx1MDJkOFx1MDJkOVx1MDJkYVx4YjhcdTAyZGRcdTAyZGJcdTAyYzcifSxtYWN0aGFpOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YWJceGJiXHUyMDI2''@;'; put 'put ''XHVmODhjXHVmODhmXHVmODkyXHVmODk1XHVmODk4XHVmODhiXHVmODhlXHVmODkxXHVmODk0XHVmODk3XHUyMDFjXHUyMDFkXHVmODk5XHVmZmZkXHUyMDIyXHVmODg0XHVmODg5XHVmODg1XHVmODg2XHVmODg3XHVmODg4XHVmODhhXHVmODhkXHVmODkwXHVmODkzXHVmODk2XHUyMDE4XHUy''@;'; put 'put ''MDE5XHVmZmZkXHhhMFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1''@;'; put 'put ''MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUyOFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUz''@;'; put 'put ''NVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmVmZlx1MjAwYlx1MjAxM1x1MjAxNFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MjEyMlx1MGU0Zlx1MGU1MFx1''@;'; put 'put ''MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx4YWVceGE5XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sbWFjdHVya2lzaDp7dHlwZToiX3NiY3MiLGNoYXJzOiJceGM0XHhjNVx4YzdceGM5XHhkMVx4ZDZceGRjXHhlMVx4ZTBceGUyXHhlNFx4''@;'; put 'put ''ZTNceGU1XHhlN1x4ZTlceGU4XHhlYVx4ZWJceGVkXHhlY1x4ZWVceGVmXHhmMVx4ZjNceGYyXHhmNFx4ZjZceGY1XHhmYVx4ZjlceGZiXHhmY1x1MjAyMFx4YjBceGEyXHhhM1x4YTdcdTIwMjJceGI2XHhkZlx4YWVceGE5XHUyMTIyXHhiNFx4YThcdTIyNjBceGM2XHhkOFx1MjIxZVx4YjFc''@;'; put 'put ''dTIyNjRcdTIyNjVceGE1XHhiNVx1MjIwMlx1MjIxMVx1MjIwZlx1MDNjMFx1MjIyYlx4YWFceGJhXHUyMTI2XHhlNlx4ZjhceGJmXHhhMVx4YWNcdTIyMWFcdTAxOTJcdTIyNDhcdTIyMDZceGFiXHhiYlx1MjAyNlx4YTBceGMwXHhjM1x4ZDVcdTAxNTJcdTAxNTNcdTIwMTNcdTIwMTRcdTIw''@;'; put 'put ''MWNcdTIwMWRcdTIwMThcdTIwMTlceGY3XHUyNWNhXHhmZlx1MDE3OFx1MDExZVx1MDExZlx1MDEzMFx1MDEzMVx1MDE1ZVx1MDE1Zlx1MjAyMVx4YjdcdTIwMWFcdTIwMWVcdTIwMzBceGMyXHhjYVx4YzFceGNiXHhjOFx4Y2RceGNlXHhjZlx4Y2NceGQzXHhkNFx1ZmZmZFx4ZDJceGRhXHhk''@;'; put 'put ''Ylx4ZDlcdWZmZmRcdTAyYzZcdTAyZGNceGFmXHUwMmQ4XHUwMmQ5XHUwMmRhXHhiOFx1MDJkZFx1MDJkYlx1MDJjNyJ9LG1hY3VrcmFpbmU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUw''@;'; put 'put ''NDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUwNDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUyMDIwXHhiMFx1MDQ5MFx4YTNceGE3XHUyMDIyXHhiNlx1''@;'; put 'put ''MDQwNlx4YWVceGE5XHUyMTIyXHUwNDAyXHUwNDUyXHUyMjYwXHUwNDAzXHUwNDUzXHUyMjFlXHhiMVx1MjI2NFx1MjI2NVx1MDQ1Nlx4YjVcdTA0OTFcdTA0MDhcdTA0MDRcdTA0NTRcdTA0MDdcdTA0NTdcdTA0MDlcdTA0NTlcdTA0MGFcdTA0NWFcdTA0NThcdTA0MDVceGFjXHUyMjFhXHUw''@;'; put 'put ''MTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUwNDBiXHUwNDViXHUwNDBjXHUwNDVjXHUwNDU1XHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUyMDE4XHUyMDE5XHhmN1x1MjAxZVx1MDQwZVx1MDQ1ZVx1MDQwZlx1MDQ1Zlx1MjExNlx1MDQwMVx1MDQ1MVx1MDQ0Zlx1MDQzMFx1''@;'; put 'put ''MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0''@;'; put 'put ''Y1x1MDQ0ZFx1MDQ0ZVx4YTQifSxrb2k4cjp7dHlwZToiX3NiY3MiLGNoYXJzOiJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1MWNcdTI1MjRcdTI1MmNcdTI1MzRcdTI1M2NcdTI1ODBcdTI1ODRcdTI1ODhcdTI1OGNcdTI1OTBcdTI1OTFcdTI1OTJcdTI1OTNcdTIz''@;'; put 'put ''MjBcdTI1YTBcdTIyMTlcdTIyMWFcdTIyNDhcdTIyNjRcdTIyNjVceGEwXHUyMzIxXHhiMFx4YjJceGI3XHhmN1x1MjU1MFx1MjU1MVx1MjU1Mlx1MDQ1MVx1MjU1M1x1MjU1NFx1MjU1NVx1MjU1Nlx1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MjU1Y1x1MjU1ZFx1MjU1ZVx1MjU1''@;'; put 'put ''Zlx1MjU2MFx1MjU2MVx1MDQwMVx1MjU2Mlx1MjU2M1x1MjU2NFx1MjU2NVx1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MjU2Ylx1MjU2Y1x4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0''@;'; put 'put ''M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNc''@;'; put 'put ''dTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxrb2k4dTp7dHlwZToiX3NiY3Mi''@;'; put 'put ''LGNoYXJzOiJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1MWNcdTI1MjRcdTI1MmNcdTI1MzRcdTI1M2NcdTI1ODBcdTI1ODRcdTI1ODhcdTI1OGNcdTI1OTBcdTI1OTFcdTI1OTJcdTI1OTNcdTIzMjBcdTI1YTBcdTIyMTlcdTIyMWFcdTIyNDhcdTIyNjRcdTIyNjVc''@;'; put 'put ''eGEwXHUyMzIxXHhiMFx4YjJceGI3XHhmN1x1MjU1MFx1MjU1MVx1MjU1Mlx1MDQ1MVx1MDQ1NFx1MjU1NFx1MDQ1Nlx1MDQ1N1x1MjU1N1x1MjU1OFx1MjU1OVx1MjU1YVx1MjU1Ylx1MDQ5MVx1MjU1ZFx1MjU1ZVx1MjU1Zlx1MjU2MFx1MjU2MVx1MDQwMVx1MDQwNFx1MjU2M1x1MDQwNlx1''@;'; put 'put ''MDQwN1x1MjU2Nlx1MjU2N1x1MjU2OFx1MjU2OVx1MjU2YVx1MDQ5MFx1MjU2Y1x4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRcdTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBc''@;'; put 'put ''dTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0''@;'; put 'put ''MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0MjlcdTA0MjdcdTA0MmEifSxrb2k4cnU6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUyNTAwXHUyNTAyXHUyNTBjXHUyNTEwXHUyNTE0''@;'; put 'put ''XHUyNTE4XHUyNTFjXHUyNTI0XHUyNTJjXHUyNTM0XHUyNTNjXHUyNTgwXHUyNTg0XHUyNTg4XHUyNThjXHUyNTkwXHUyNTkxXHUyNTkyXHUyNTkzXHUyMzIwXHUyNWEwXHUyMjE5XHUyMjFhXHUyMjQ4XHUyMjY0XHUyMjY1XHhhMFx1MjMyMVx4YjBceGIyXHhiN1x4ZjdcdTI1NTBcdTI1NTFc''@;'; put 'put ''dTI1NTJcdTA0NTFcdTA0NTRcdTI1NTRcdTA0NTZcdTA0NTdcdTI1NTdcdTI1NThcdTI1NTlcdTI1NWFcdTI1NWJcdTA0OTFcdTA0NWVcdTI1NWVcdTI1NWZcdTI1NjBcdTI1NjFcdTA0MDFcdTA0MDRcdTI1NjNcdTA0MDZcdTA0MDdcdTI1NjZcdTI1NjdcdTI1NjhcdTI1NjlcdTI1NmFcdTA0''@;'; put 'put ''OTBcdTA0MGVceGE5XHUwNDRlXHUwNDMwXHUwNDMxXHUwNDQ2XHUwNDM0XHUwNDM1XHUwNDQ0XHUwNDMzXHUwNDQ1XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUwNDRmXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDM2XHUwNDMyXHUwNDRjXHUw''@;'; put 'put ''NDRiXHUwNDM3XHUwNDQ4XHUwNDRkXHUwNDQ5XHUwNDQ3XHUwNDRhXHUwNDJlXHUwNDEwXHUwNDExXHUwNDI2XHUwNDE0XHUwNDE1XHUwNDI0XHUwNDEzXHUwNDI1XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDJmXHUwNDIwXHUwNDIxXHUwNDIy''@;'; put 'put ''XHUwNDIzXHUwNDE2XHUwNDEyXHUwNDJjXHUwNDJiXHUwNDE3XHUwNDI4XHUwNDJkXHUwNDI5XHUwNDI3XHUwNDJhIn0sa29pOHQ6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDliXHUwNDkzXHUyMDFhXHUwNDkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHVmZmZkXHUyMDMwXHUwNGIzXHUy''@;'; put 'put ''MDM5XHUwNGIyXHUwNGI3XHUwNGI2XHVmZmZkXHUwNDlhXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHVmZmZkXHUyMTIyXHVmZmZkXHUyMDNhXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHUwNGVmXHUwNGVlXHUwNDUxXHhhNFx1MDRlM1x4YTZceGE3''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHhhYlx4YWNceGFkXHhhZVx1ZmZmZFx4YjBceGIxXHhiMlx1MDQwMVx1ZmZmZFx1MDRlMlx4YjZceGI3XHVmZmZkXHUyMTE2XHVmZmZkXHhiYlx1ZmZmZFx1ZmZmZFx1ZmZmZFx4YTlcdTA0NGVcdTA0MzBcdTA0MzFcdTA0NDZcdTA0MzRcdTA0MzVcdTA0NDRc''@;'; put 'put ''dTA0MzNcdTA0NDVcdTA0MzhcdTA0MzlcdTA0M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NGZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzZcdTA0MzJcdTA0NGNcdTA0NGJcdTA0MzdcdTA0NDhcdTA0NGRcdTA0NDlcdTA0NDdcdTA0NGFcdTA0MmVcdTA0MTBcdTA0''@;'; put 'put ''MTFcdTA0MjZcdTA0MTRcdTA0MTVcdTA0MjRcdTA0MTNcdTA0MjVcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVcdTA0MWZcdTA0MmZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MTZcdTA0MTJcdTA0MmNcdTA0MmJcdTA0MTdcdTA0MjhcdTA0MmRcdTA0Mjlc''@;'; put 'put ''dTA0MjdcdTA0MmEifSxhcm1zY2lpODp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRc''@;'; put 'put ''eDllXHg5Zlx4YTBcdWZmZmRcdTA1ODdcdTA1ODkpKFx4YmJceGFiXHUyMDE0Llx1MDU1ZCwtXHUwNThhXHUyMDI2XHUwNTVjXHUwNTViXHUwNTVlXHUwNTMxXHUwNTYxXHUwNTMyXHUwNTYyXHUwNTMzXHUwNTYzXHUwNTM0XHUwNTY0XHUwNTM1XHUwNTY1XHUwNTM2XHUwNTY2XHUwNTM3XHUw''@;'; put 'put ''NTY3XHUwNTM4XHUwNTY4XHUwNTM5XHUwNTY5XHUwNTNhXHUwNTZhXHUwNTNiXHUwNTZiXHUwNTNjXHUwNTZjXHUwNTNkXHUwNTZkXHUwNTNlXHUwNTZlXHUwNTNmXHUwNTZmXHUwNTQwXHUwNTcwXHUwNTQxXHUwNTcxXHUwNTQyXHUwNTcyXHUwNTQzXHUwNTczXHUwNTQ0XHUwNTc0XHUwNTQ1''@;'; put 'put ''XHUwNTc1XHUwNTQ2XHUwNTc2XHUwNTQ3XHUwNTc3XHUwNTQ4XHUwNTc4XHUwNTQ5XHUwNTc5XHUwNTRhXHUwNTdhXHUwNTRiXHUwNTdiXHUwNTRjXHUwNTdjXHUwNTRkXHUwNTdkXHUwNTRlXHUwNTdlXHUwNTRmXHUwNTdmXHUwNTUwXHUwNTgwXHUwNTUxXHUwNTgxXHUwNTUyXHUwNTgyXHUw''@;'; put 'put ''NTUzXHUwNTgzXHUwNTU0XHUwNTg0XHUwNTU1XHUwNTg1XHUwNTU2XHUwNTg2XHUwNTVhXHVmZmZkIn0scmsxMDQ4Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQwMlx1MDQwM1x1MjAxYVx1MDQ1M1x1MjAxZVx1MjAyNlx1MjAyMFx1MjAyMVx1MjBhY1x1MjAzMFx1MDQwOVx1MjAzOVx1MDQw''@;'; put 'put ''YVx1MDQ5YVx1MDRiYVx1MDQwZlx1MDQ1Mlx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAxNFx1ZmZmZFx1MjEyMlx1MDQ1OVx1MjAzYVx1MDQ1YVx1MDQ5Ylx1MDRiYlx1MDQ1Zlx4YTBcdTA0YjBcdTA0YjFcdTA0ZDhceGE0XHUwNGU4XHhhNlx4YTdcdTA0MDFceGE5''@;'; put 'put ''XHUwNDkyXHhhYlx4YWNceGFkXHhhZVx1MDRhZVx4YjBceGIxXHUwNDA2XHUwNDU2XHUwNGU5XHhiNVx4YjZceGI3XHUwNDUxXHUyMTE2XHUwNDkzXHhiYlx1MDRkOVx1MDRhMlx1MDRhM1x1MDRhZlx1MDQxMFx1MDQxMVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQx''@;'; put 'put ''OFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1''@;'; put 'put ''MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0''@;'; put 'put ''ZiJ9LHRjdm46e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceGRhXHUxZWU0XHgwM1x1MWVlYVx1MWVlY1x1MWVlZVx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBcdTFlZThcdTFlZjBcdTFlZjJcdTFlZjZcdTFlZjhceGRkXHUxZWY0XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYg''@;'; put 'put ''IVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XHg3Zlx4YzBcdTFlYTJceGMzXHhjMVx1MWVhMFx1MWViNlx1MWVhY1x4YzhcdTFlYmFcdTFlYmNceGM5XHUxZWI4XHUx''@;'; put 'put ''ZWM2XHhjY1x1MWVjOFx1MDEyOFx4Y2RcdTFlY2FceGQyXHUxZWNlXHhkNVx4ZDNcdTFlY2NcdTFlZDhcdTFlZGNcdTFlZGVcdTFlZTBcdTFlZGFcdTFlZTJceGQ5XHUxZWU2XHUwMTY4XHhhMFx1MDEwMlx4YzJceGNhXHhkNFx1MDFhMFx1MDFhZlx1MDExMFx1MDEwM1x4ZTJceGVhXHhmNFx1''@;'; put 'put ''MDFhMVx1MDFiMFx1MDExMVx1MWViMFx1MDMwMFx1MDMwOVx1MDMwM1x1MDMwMVx1MDMyM1x4ZTBcdTFlYTNceGUzXHhlMVx1MWVhMVx1MWViMlx1MWViMVx1MWViM1x1MWViNVx1MWVhZlx1MWViNFx1MWVhZVx1MWVhNlx1MWVhOFx1MWVhYVx1MWVhNFx1MWVjMFx1MWViN1x1MWVhN1x1MWVh''@;'; put 'put ''OVx1MWVhYlx1MWVhNVx1MWVhZFx4ZThcdTFlYzJcdTFlYmJcdTFlYmRceGU5XHUxZWI5XHUxZWMxXHUxZWMzXHUxZWM1XHUxZWJmXHUxZWM3XHhlY1x1MWVjOVx1MWVjNFx1MWViZVx1MWVkMlx1MDEyOVx4ZWRcdTFlY2JceGYyXHUxZWQ0XHUxZWNmXHhmNVx4ZjNcdTFlY2RcdTFlZDNcdTFl''@;'; put 'put ''ZDVcdTFlZDdcdTFlZDFcdTFlZDlcdTFlZGRcdTFlZGZcdTFlZTFcdTFlZGJcdTFlZTNceGY5XHUxZWQ2XHUxZWU3XHUwMTY5XHhmYVx1MWVlNVx1MWVlYlx1MWVlZFx1MWVlZlx1MWVlOVx1MWVmMVx1MWVmM1x1MWVmN1x1MWVmOVx4ZmRcdTFlZjVcdTFlZDAifSxnZW9yZ2lhbmFjYWRlbXk6''@;'; put 'put ''e3R5cGU6Il9zYmNzIixjaGFyczoiXHg4MFx4ODFcdTIwMWFcdTAxOTJcdTIwMWVcdTIwMjZcdTIwMjBcdTIwMjFcdTAyYzZcdTIwMzBcdTAxNjBcdTIwMzlcdTAxNTJceDhkXHg4ZVx4OGZceDkwXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDIyXHUyMDEzXHUyMDE0XHUwMmRjXHUyMTIy''@;'; put 'put ''XHUwMTYxXHUyMDNhXHUwMTUzXHg5ZFx4OWVcdTAxNzhceGEwXHhhMVx4YTJceGEzXHhhNFx4YTVceGE2XHhhN1x4YThceGE5XHhhYVx4YWJceGFjXHhhZFx4YWVceGFmXHhiMFx4YjFceGIyXHhiM1x4YjRceGI1XHhiNlx4YjdceGI4XHhiOVx4YmFceGJiXHhiY1x4YmRceGJlXHhiZlx1MTBk''@;'; put 'put ''MFx1MTBkMVx1MTBkMlx1MTBkM1x1MTBkNFx1MTBkNVx1MTBkNlx1MTBkN1x1MTBkOFx1MTBkOVx1MTBkYVx1MTBkYlx1MTBkY1x1MTBkZFx1MTBkZVx1MTBkZlx1MTBlMFx1MTBlMVx1MTBlMlx1MTBlM1x1MTBlNFx1MTBlNVx1MTBlNlx1MTBlN1x1MTBlOFx1MTBlOVx1MTBlYVx1MTBlYlx1''@;'; put 'put ''MTBlY1x1MTBlZFx1MTBlZVx1MTBlZlx1MTBmMFx1MTBmMVx1MTBmMlx1MTBmM1x1MTBmNFx1MTBmNVx1MTBmNlx4ZTdceGU4XHhlOVx4ZWFceGViXHhlY1x4ZWRceGVlXHhlZlx4ZjBceGYxXHhmMlx4ZjNceGY0XHhmNVx4ZjZceGY3XHhmOFx4ZjlceGZhXHhmYlx4ZmNceGZkXHhmZVx4ZmYi''@;'; put 'put ''fSxnZW9yZ2lhbnBzOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHUyMDFhXHUwMTkyXHUyMDFlXHUyMDI2XHUyMDIwXHUyMDIxXHUwMmM2XHUyMDMwXHUwMTYwXHUyMDM5XHUwMTUyXHg4ZFx4OGVceDhmXHg5MFx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MjAyMlx1MjAxM1x1MjAx''@;'; put 'put ''NFx1MDJkY1x1MjEyMlx1MDE2MVx1MjAzYVx1MDE1M1x4OWRceDllXHUwMTc4XHhhMFx4YTFceGEyXHhhM1x4YTRceGE1XHhhNlx4YTdceGE4XHhhOVx4YWFceGFiXHhhY1x4YWRceGFlXHhhZlx4YjBceGIxXHhiMlx4YjNceGI0XHhiNVx4YjZceGI3XHhiOFx4YjlceGJhXHhiYlx4YmNceGJk''@;'; put 'put ''XHhiZVx4YmZcdTEwZDBcdTEwZDFcdTEwZDJcdTEwZDNcdTEwZDRcdTEwZDVcdTEwZDZcdTEwZjFcdTEwZDdcdTEwZDhcdTEwZDlcdTEwZGFcdTEwZGJcdTEwZGNcdTEwZjJcdTEwZGRcdTEwZGVcdTEwZGZcdTEwZTBcdTEwZTFcdTEwZTJcdTEwZjNcdTEwZTNcdTEwZTRcdTEwZTVcdTEwZTZc''@;'; put 'put ''dTEwZTdcdTEwZThcdTEwZTlcdTEwZWFcdTEwZWJcdTEwZWNcdTEwZWRcdTEwZWVcdTEwZjRcdTEwZWZcdTEwZjBcdTEwZjVceGU2XHhlN1x4ZThceGU5XHhlYVx4ZWJceGVjXHhlZFx4ZWVceGVmXHhmMFx4ZjFceGYyXHhmM1x4ZjRceGY1XHhmNlx4ZjdceGY4XHhmOVx4ZmFceGZiXHhmY1x4''@;'; put 'put ''ZmRceGZlXHhmZiJ9LHB0MTU0Ont0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQ5Nlx1MDQ5Mlx1MDRlZVx1MDQ5M1x1MjAxZVx1MjAyNlx1MDRiNlx1MDRhZVx1MDRiMlx1MDRhZlx1MDRhMFx1MDRlMlx1MDRhMlx1MDQ5YVx1MDRiYVx1MDRiOFx1MDQ5N1x1MjAxOFx1MjAxOVx1MjAxY1x1MjAx''@;'; put 'put ''ZFx1MjAyMlx1MjAxM1x1MjAxNFx1MDRiM1x1MDRiN1x1MDRhMVx1MDRlM1x1MDRhM1x1MDQ5Ylx1MDRiYlx1MDRiOVx4YTBcdTA0MGVcdTA0NWVcdTA0MDhcdTA0ZThcdTA0OThcdTA0YjBceGE3XHUwNDAxXHhhOVx1MDRkOFx4YWJceGFjXHUwNGVmXHhhZVx1MDQ5Y1x4YjBcdTA0YjFcdTA0''@;'; put 'put ''MDZcdTA0NTZcdTA0OTlcdTA0ZTlceGI2XHhiN1x1MDQ1MVx1MjExNlx1MDRkOVx4YmJcdTA0NThcdTA0YWFcdTA0YWJcdTA0OWRcdTA0MTBcdTA0MTFcdTA0MTJcdTA0MTNcdTA0MTRcdTA0MTVcdTA0MTZcdTA0MTdcdTA0MThcdTA0MTlcdTA0MWFcdTA0MWJcdTA0MWNcdTA0MWRcdTA0MWVc''@;'; put 'put ''dTA0MWZcdTA0MjBcdTA0MjFcdTA0MjJcdTA0MjNcdTA0MjRcdTA0MjVcdTA0MjZcdTA0MjdcdTA0MjhcdTA0MjlcdTA0MmFcdTA0MmJcdTA0MmNcdTA0MmRcdTA0MmVcdTA0MmZcdTA0MzBcdTA0MzFcdTA0MzJcdTA0MzNcdTA0MzRcdTA0MzVcdTA0MzZcdTA0MzdcdTA0MzhcdTA0MzlcdTA0''@;'; put 'put ''M2FcdTA0M2JcdTA0M2NcdTA0M2RcdTA0M2VcdTA0M2ZcdTA0NDBcdTA0NDFcdTA0NDJcdTA0NDNcdTA0NDRcdTA0NDVcdTA0NDZcdTA0NDdcdTA0NDhcdTA0NDlcdTA0NGFcdTA0NGJcdTA0NGNcdTA0NGRcdTA0NGVcdTA0NGYifSx2aXNjaWk6e3R5cGU6Il9zYmNzIixjaGFyczoiXDBceDAx''@;'; put 'put ''XHUxZWIyXHgwM1x4MDRcdTFlYjRcdTFlYWFceDA3XGJcdFxuXHZcZlxyXHgwZVx4MGZceDEwXHgxMVx4MTJceDEzXHUxZWY2XHgxNVx4MTZceDE3XHgxOFx1MWVmOFx4MWFceDFiXHgxY1x4MWRcdTFlZjRceDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpL''@;'; put 'put ''TE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flx4N2ZcdTFlYTBcdTFlYWVcdTFlYjBcdTFlYjZcdTFlYTRcdTFlYTZcdTFlYThcdTFlYWNcdTFlYmNcdTFlYjhcdTFlYmVcdTFlYzBcdTFlYzJcdTFlYzRcdTFlYzZcdTFlZDBcdTFlZDJcdTFlZDRc''@;'; put 'put ''dTFlZDZcdTFlZDhcdTFlZTJcdTFlZGFcdTFlZGNcdTFlZGVcdTFlY2FcdTFlY2VcdTFlY2NcdTFlYzhcdTFlZTZcdTAxNjhcdTFlZTRcdTFlZjJceGQ1XHUxZWFmXHUxZWIxXHUxZWI3XHUxZWE1XHUxZWE3XHUxZWE5XHUxZWFkXHUxZWJkXHUxZWI5XHUxZWJmXHUxZWMxXHUxZWMzXHUxZWM1''@;'; put 'put ''XHUxZWM3XHUxZWQxXHUxZWQzXHUxZWQ1XHUxZWQ3XHUxZWUwXHUwMWEwXHUxZWQ5XHUxZWRkXHUxZWRmXHUxZWNiXHUxZWYwXHUxZWU4XHUxZWVhXHUxZWVjXHUwMWExXHUxZWRiXHUwMWFmXHhjMFx4YzFceGMyXHhjM1x1MWVhMlx1MDEwMlx1MWViM1x1MWViNVx4YzhceGM5XHhjYVx1MWVi''@;'; put 'put ''YVx4Y2NceGNkXHUwMTI4XHUxZWYzXHUwMTEwXHUxZWU5XHhkMlx4ZDNceGQ0XHUxZWExXHUxZWY3XHUxZWViXHUxZWVkXHhkOVx4ZGFcdTFlZjlcdTFlZjVceGRkXHUxZWUxXHUwMWIwXHhlMFx4ZTFceGUyXHhlM1x1MWVhM1x1MDEwM1x1MWVlZlx1MWVhYlx4ZThceGU5XHhlYVx1MWViYlx4''@;'; put 'put ''ZWNceGVkXHUwMTI5XHUxZWM5XHUwMTExXHUxZWYxXHhmMlx4ZjNceGY0XHhmNVx1MWVjZlx1MWVjZFx1MWVlNVx4ZjlceGZhXHUwMTY5XHUxZWU3XHhmZFx1MWVlM1x1MWVlZSJ9LGlzbzY0NmNuOnt0eXBlOiJfc2JjcyIsY2hhcnM6IlwwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1xi''@;'; put 'put ''XHRcblx2XGZcclx4MGVceDBmXHgxMFx4MTFceDEyXHgxM1x4MTRceDE1XHgxNlx4MTdceDE4XHgxOVx4MWFceDFiXHgxY1x4MWRceDFlXHgxZiAhXCIjXHhhNSUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt''@;'; put 'put ''bm9wcXJzdHV2d3h5ent8fVx1MjAzZVx4N2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmQifSxpc282NDZqcDp7dHlwZToiX3NiY3MiLGNoYXJz''@;'; put 'put ''OiJcMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdcYlx0XG5cdlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXHgxYlx4MWNceDFkXHgxZVx4MWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5P''@;'; put 'put ''UFFSU1RVVldYWVpbXHhhNV1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fVx1MjAzZVx4N2ZcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRc''@;'; put 'put ''dWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZmZmRcdWZm''@;'; put 'put ''ZmQifSxocHJvbWFuODp7dHlwZToiX3NiY3MiLGNoYXJzOiJceDgwXHg4MVx4ODJceDgzXHg4NFx4ODVceDg2XHg4N1x4ODhceDg5XHg4YVx4OGJceDhjXHg4ZFx4OGVceDhmXHg5MFx4OTFceDkyXHg5M1x4OTRceDk1XHg5Nlx4OTdceDk4XHg5OVx4OWFceDliXHg5Y1x4OWRceDllXHg5Zlx4''@;'; put 'put ''YTBceGMwXHhjMlx4YzhceGNhXHhjYlx4Y2VceGNmXHhiNFx1MDJjYlx1MDJjNlx4YThcdTAyZGNceGQ5XHhkYlx1MjBhNFx4YWZceGRkXHhmZFx4YjBceGM3XHhlN1x4ZDFceGYxXHhhMVx4YmZceGE0XHhhM1x4YTVceGE3XHUwMTkyXHhhMlx4ZTJceGVhXHhmNFx4ZmJceGUxXHhlOVx4ZjNc''@;'; put 'put ''eGZhXHhlMFx4ZThceGYyXHhmOVx4ZTRceGViXHhmNlx4ZmNceGM1XHhlZVx4ZDhceGM2XHhlNVx4ZWRceGY4XHhlNlx4YzRceGVjXHhkNlx4ZGNceGM5XHhlZlx4ZGZceGQ0XHhjMVx4YzNceGUzXHhkMFx4ZjBceGNkXHhjY1x4ZDNceGQyXHhkNVx4ZjVcdTAxNjBcdTAxNjFceGRhXHUwMTc4''@;'; put 'put ''XHhmZlx4ZGVceGZlXHhiN1x4YjVceGI2XHhiZVx1MjAxNFx4YmNceGJkXHhhYVx4YmFceGFiXHUyNWEwXHhiYlx4YjFcdWZmZmQifSxtYWNpbnRvc2g6e3R5cGU6Il9zYmNzIixjaGFyczoiXHhjNFx4YzVceGM3XHhjOVx4ZDFceGQ2XHhkY1x4ZTFceGUwXHhlMlx4ZTRceGUzXHhlNVx4ZTdc''@;'; put 'put ''eGU5XHhlOFx4ZWFceGViXHhlZFx4ZWNceGVlXHhlZlx4ZjFceGYzXHhmMlx4ZjRceGY2XHhmNVx4ZmFceGY5XHhmYlx4ZmNcdTIwMjBceGIwXHhhMlx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx4YjRceGE4XHUyMjYwXHhjNlx4ZDhcdTIyMWVceGIxXHUyMjY0XHUyMjY1''@;'; put 'put ''XHhhNVx4YjVcdTIyMDJcdTIyMTFcdTIyMGZcdTAzYzBcdTIyMmJceGFhXHhiYVx1MjEyNlx4ZTZceGY4XHhiZlx4YTFceGFjXHUyMjFhXHUwMTkyXHUyMjQ4XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHhjMFx4YzNceGQ1XHUwMTUyXHUwMTUzXHUyMDEzXHUyMDE0XHUyMDFjXHUyMDFkXHUy''@;'; put 'put ''MDE4XHUyMDE5XHhmN1x1MjVjYVx4ZmZcdTAxNzhcdTIwNDRceGE0XHUyMDM5XHUyMDNhXHVmYjAxXHVmYjAyXHUyMDIxXHhiN1x1MjAxYVx1MjAxZVx1MjAzMFx4YzJceGNhXHhjMVx4Y2JceGM4XHhjZFx4Y2VceGNmXHhjY1x4ZDNceGQ0XHVmZmZkXHhkMlx4ZGFceGRiXHhkOVx1MDEzMVx1''@;'; put 'put ''MDJjNlx1MDJkY1x4YWZcdTAyZDhcdTAyZDlcdTAyZGFceGI4XHUwMmRkXHUwMmRiXHUwMmM3In0sYXNjaWk6e3R5cGU6Il9zYmNzIixjaGFyczoiXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZk''@;'; put 'put ''XHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVm''@;'; put 'put ''ZmZkXHVmZmZkXHVmZmZkXHVmZmZkXHVmZmZkIn0sdGlzNjIwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUwMVx1MGUwMlx1MGUwM1x1MGUwNFx1MGUwNVx1MGUwNlx1MGUwN1x1MGUwOFx1MGUwOVx1MGUwYVx1MGUwYlx1MGUwY1x1''@;'; put 'put ''MGUwZFx1MGUwZVx1MGUwZlx1MGUxMFx1MGUxMVx1MGUxMlx1MGUxM1x1MGUxNFx1MGUxNVx1MGUxNlx1MGUxN1x1MGUxOFx1MGUxOVx1MGUxYVx1MGUxYlx1MGUxY1x1MGUxZFx1MGUxZVx1MGUxZlx1MGUyMFx1MGUyMVx1MGUyMlx1MGUyM1x1MGUyNFx1MGUyNVx1MGUyNlx1MGUyN1x1MGUy''@;'; put 'put ''OFx1MGUyOVx1MGUyYVx1MGUyYlx1MGUyY1x1MGUyZFx1MGUyZVx1MGUyZlx1MGUzMFx1MGUzMVx1MGUzMlx1MGUzM1x1MGUzNFx1MGUzNVx1MGUzNlx1MGUzN1x1MGUzOFx1MGUzOVx1MGUzYVx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZmZFx1MGUzZlx1MGU0MFx1MGU0MVx1MGU0Mlx1MGU0M1x1''@;'; put 'put ''MGU0NFx1MGU0NVx1MGU0Nlx1MGU0N1x1MGU0OFx1MGU0OVx1MGU0YVx1MGU0Ylx1MGU0Y1x1MGU0ZFx1MGU0ZVx1MGU0Zlx1MGU1MFx1MGU1MVx1MGU1Mlx1MGU1M1x1MGU1NFx1MGU1NVx1MGU1Nlx1MGU1N1x1MGU1OFx1MGU1OVx1MGU1YVx1MGU1Ylx1ZmZmZFx1ZmZmZFx1ZmZmZFx1ZmZm''@;'; put 'put ''ZCJ9fX0sNzYyMzpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPXsxMDAyOToibWFjY2VudGV1cm8iLG1hY2NlbnRldXJvOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4YzRcdTAxMDBcdTAxMDFceGM5XHUwMTA0XHhkNlx4ZGNceGUxXHUwMTA1XHUwMTBjXHhlNFx1MDEwZFx1MDEwNlx1MDEw''@;'; put 'put ''N1x4ZTlcdTAxNzlcdTAxN2FcdTAxMGVceGVkXHUwMTBmXHUwMTEyXHUwMTEzXHUwMTE2XHhmM1x1MDExN1x4ZjRceGY2XHhmNVx4ZmFcdTAxMWFcdTAxMWJceGZjXHUyMDIwXHhiMFx1MDExOFx4YTNceGE3XHUyMDIyXHhiNlx4ZGZceGFlXHhhOVx1MjEyMlx1MDExOVx4YThcdTIyNjBcdTAx''@;'; put 'put ''MjNcdTAxMmVcdTAxMmZcdTAxMmFcdTIyNjRcdTIyNjVcdTAxMmJcdTAxMzZcdTIyMDJcdTIyMTFcdTAxNDJcdTAxM2JcdTAxM2NcdTAxM2RcdTAxM2VcdTAxMzlcdTAxM2FcdTAxNDVcdTAxNDZcdTAxNDNceGFjXHUyMjFhXHUwMTQ0XHUwMTQ3XHUyMjA2XHhhYlx4YmJcdTIwMjZceGEwXHUw''@;'; put 'put ''MTQ4XHUwMTUwXHhkNVx1MDE1MVx1MDE0Y1x1MjAxM1x1MjAxNFx1MjAxY1x1MjAxZFx1MjAxOFx1MjAxOVx4ZjdcdTI1Y2FcdTAxNGRcdTAxNTRcdTAxNTVcdTAxNThcdTIwMzlcdTIwM2FcdTAxNTlcdTAxNTZcdTAxNTdcdTAxNjBcdTIwMWFcdTIwMWVcdTAxNjFcdTAxNWFcdTAxNWJceGMx''@;'; put 'put ''XHUwMTY0XHUwMTY1XHhjZFx1MDE3ZFx1MDE3ZVx1MDE2YVx4ZDNceGQ0XHUwMTZiXHUwMTZlXHhkYVx1MDE2Zlx1MDE3MFx1MDE3MVx1MDE3Mlx1MDE3M1x4ZGRceGZkXHUwMTM3XHUwMTdiXHUwMTQxXHUwMTdjXHUwMTIyXHUwMmM3In0sODA4OiJjcDgwOCIsaWJtODA4OiJjcDgwOCIsY3A4''@;'; put 'put ''MDg6e3R5cGU6Il9zYmNzIixjaGFyczoiXHUwNDEwXHUwNDExXHUwNDEyXHUwNDEzXHUwNDE0XHUwNDE1XHUwNDE2XHUwNDE3XHUwNDE4XHUwNDE5XHUwNDFhXHUwNDFiXHUwNDFjXHUwNDFkXHUwNDFlXHUwNDFmXHUwNDIwXHUwNDIxXHUwNDIyXHUwNDIzXHUwNDI0XHUwNDI1XHUwNDI2XHUw''@;'; put 'put ''NDI3XHUwNDI4XHUwNDI5XHUwNDJhXHUwNDJiXHUwNDJjXHUwNDJkXHUwNDJlXHUwNDJmXHUwNDMwXHUwNDMxXHUwNDMyXHUwNDMzXHUwNDM0XHUwNDM1XHUwNDM2XHUwNDM3XHUwNDM4XHUwNDM5XHUwNDNhXHUwNDNiXHUwNDNjXHUwNDNkXHUwNDNlXHUwNDNmXHUyNTkxXHUyNTkyXHUyNTkz''@;'; put 'put ''XHUyNTAyXHUyNTI0XHUyNTYxXHUyNTYyXHUyNTU2XHUyNTU1XHUyNTYzXHUyNTUxXHUyNTU3XHUyNTVkXHUyNTVjXHUyNTViXHUyNTEwXHUyNTE0XHUyNTM0XHUyNTJjXHUyNTFjXHUyNTAwXHUyNTNjXHUyNTVlXHUyNTVmXHUyNTVhXHUyNTU0XHUyNTY5XHUyNTY2XHUyNTYwXHUyNTUwXHUy''@;'; put 'put ''NTZjXHUyNTY3XHUyNTY4XHUyNTY0XHUyNTY1XHUyNTU5XHUyNTU4XHUyNTUyXHUyNTUzXHUyNTZiXHUyNTZhXHUyNTE4XHUyNTBjXHUyNTg4XHUyNTg0XHUyNThjXHUyNTkwXHUyNTgwXHUwNDQwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDQ0XHUwNDQ1XHUwNDQ2XHUwNDQ3XHUwNDQ4XHUwNDQ5''@;'; put 'put ''XHUwNDRhXHUwNDRiXHUwNDRjXHUwNDRkXHUwNDRlXHUwNDRmXHUwNDAxXHUwNDUxXHUwNDA0XHUwNDU0XHUwNDA3XHUwNDU3XHUwNDBlXHUwNDVlXHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIxMTZcdTIwYWNcdTI1YTBceGEwIn0sbWlrOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx1MDQxMFx1MDQx''@;'; put 'put ''MVx1MDQxMlx1MDQxM1x1MDQxNFx1MDQxNVx1MDQxNlx1MDQxN1x1MDQxOFx1MDQxOVx1MDQxYVx1MDQxYlx1MDQxY1x1MDQxZFx1MDQxZVx1MDQxZlx1MDQyMFx1MDQyMVx1MDQyMlx1MDQyM1x1MDQyNFx1MDQyNVx1MDQyNlx1MDQyN1x1MDQyOFx1MDQyOVx1MDQyYVx1MDQyYlx1MDQyY1x1''@;'; put 'put ''MDQyZFx1MDQyZVx1MDQyZlx1MDQzMFx1MDQzMVx1MDQzMlx1MDQzM1x1MDQzNFx1MDQzNVx1MDQzNlx1MDQzN1x1MDQzOFx1MDQzOVx1MDQzYVx1MDQzYlx1MDQzY1x1MDQzZFx1MDQzZVx1MDQzZlx1MDQ0MFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQ0NFx1MDQ0NVx1MDQ0Nlx1MDQ0N1x1MDQ0''@;'; put 'put ''OFx1MDQ0OVx1MDQ0YVx1MDQ0Ylx1MDQ0Y1x1MDQ0ZFx1MDQ0ZVx1MDQ0Zlx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU2M1x1MjU1MVx1MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjUxMFx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1''@;'; put 'put ''MjUyNFx1MjExNlx4YTdcdTI1NTdcdTI1NWRcdTI1MThcdTI1MGNcdTI1ODhcdTI1ODRcdTI1OGNcdTI1OTBcdTI1ODBcdTAzYjFceGRmXHUwMzkzXHUwM2MwXHUwM2EzXHUwM2MzXHhiNVx1MDNjNFx1MDNhNlx1MDM5OFx1MDNhOVx1MDNiNFx1MjIxZVx1MDNjNlx1MDNiNVx1MjIyOVx1MjI2''@;'; put 'put ''MVx4YjFcdTIyNjVcdTIyNjRcdTIzMjBcdTIzMjFceGY3XHUyMjQ4XHhiMFx1MjIxOVx4YjdcdTIyMWFcdTIwN2ZceGIyXHUyNWEwXHhhMCJ9LGNwNzIwOnt0eXBlOiJfc2JjcyIsY2hhcnM6Ilx4ODBceDgxXHhlOVx4ZTJceDg0XHhlMFx4ODZceGU3XHhlYVx4ZWJceGU4XHhlZlx4ZWVceDhk''@;'; put 'put ''XHg4ZVx4OGZceDkwXHUwNjUxXHUwNjUyXHhmNFx4YTRcdTA2NDBceGZiXHhmOVx1MDYyMVx1MDYyMlx1MDYyM1x1MDYyNFx4YTNcdTA2MjVcdTA2MjZcdTA2MjdcdTA2MjhcdTA2MjlcdTA2MmFcdTA2MmJcdTA2MmNcdTA2MmRcdTA2MmVcdTA2MmZcdTA2MzBcdTA2MzFcdTA2MzJcdTA2MzNc''@;'; put 'put ''dTA2MzRcdTA2MzVceGFiXHhiYlx1MjU5MVx1MjU5Mlx1MjU5M1x1MjUwMlx1MjUyNFx1MjU2MVx1MjU2Mlx1MjU1Nlx1MjU1NVx1MjU2M1x1MjU1MVx1MjU1N1x1MjU1ZFx1MjU1Y1x1MjU1Ylx1MjUxMFx1MjUxNFx1MjUzNFx1MjUyY1x1MjUxY1x1MjUwMFx1MjUzY1x1MjU1ZVx1MjU1Zlx1''@;'; put 'put ''MjU1YVx1MjU1NFx1MjU2OVx1MjU2Nlx1MjU2MFx1MjU1MFx1MjU2Y1x1MjU2N1x1MjU2OFx1MjU2NFx1MjU2NVx1MjU1OVx1MjU1OFx1MjU1Mlx1MjU1M1x1MjU2Ylx1MjU2YVx1MjUxOFx1MjUwY1x1MjU4OFx1MjU4NFx1MjU4Y1x1MjU5MFx1MjU4MFx1MDYzNlx1MDYzN1x1MDYzOFx1MDYz''@;'; put 'put ''OVx1MDYzYVx1MDY0MVx4YjVcdTA2NDJcdTA2NDNcdTA2NDRcdTA2NDVcdTA2NDZcdTA2NDdcdTA2NDhcdTA2NDlcdTA2NGFcdTIyNjFcdTA2NGJcdTA2NGNcdTA2NGRcdTA2NGVcdTA2NGZcdTA2NTBcdTIyNDhceGIwXHUyMjE5XHhiN1x1MjIxYVx1MjA3Zlx4YjJcdTI1YTBceGEwIn0sYXNj''@;'; put 'put ''aWk4Yml0OiJhc2NpaSIsdXNhc2NpaToiYXNjaWkiLGFuc2l4MzQ6ImFzY2lpIixhbnNpeDM0MTk2ODoiYXNjaWkiLGFuc2l4MzQxOTg2OiJhc2NpaSIsY3Nhc2NpaToiYXNjaWkiLGNwMzY3OiJhc2NpaSIsaWJtMzY3OiJhc2NpaSIsaXNvaXI2OiJhc2NpaSIsaXNvNjQ2dXM6ImFzY2lpIixp''@;'; put 'put ''c282NDZpcnY6ImFzY2lpIix1czoiYXNjaWkiLGxhdGluMToiaXNvODg1OTEiLGxhdGluMjoiaXNvODg1OTIiLGxhdGluMzoiaXNvODg1OTMiLGxhdGluNDoiaXNvODg1OTQiLGxhdGluNToiaXNvODg1OTkiLGxhdGluNjoiaXNvODg1OTEwIixsYXRpbjc6Imlzbzg4NTkxMyIsbGF0aW44OiJp''@;'; put 'put ''c284ODU5MTQiLGxhdGluOToiaXNvODg1OTE1IixsYXRpbjEwOiJpc284ODU5MTYiLGNzaXNvbGF0aW4xOiJpc284ODU5MSIsY3Npc29sYXRpbjI6Imlzbzg4NTkyIixjc2lzb2xhdGluMzoiaXNvODg1OTMiLGNzaXNvbGF0aW40OiJpc284ODU5NCIsY3Npc29sYXRpbmN5cmlsbGljOiJpc284''@;'; put 'put ''ODU5NSIsY3Npc29sYXRpbmFyYWJpYzoiaXNvODg1OTYiLGNzaXNvbGF0aW5ncmVlazoiaXNvODg1OTciLGNzaXNvbGF0aW5oZWJyZXc6Imlzbzg4NTk4Iixjc2lzb2xhdGluNToiaXNvODg1OTkiLGNzaXNvbGF0aW42OiJpc284ODU5MTAiLGwxOiJpc284ODU5MSIsbDI6Imlzbzg4NTkyIixs''@;'; put 'put ''MzoiaXNvODg1OTMiLGw0OiJpc284ODU5NCIsbDU6Imlzbzg4NTk5IixsNjoiaXNvODg1OTEwIixsNzoiaXNvODg1OTEzIixsODoiaXNvODg1OTE0IixsOToiaXNvODg1OTE1IixsMTA6Imlzbzg4NTkxNiIsaXNvaXIxNDoiaXNvNjQ2anAiLGlzb2lyNTc6ImlzbzY0NmNuIixpc29pcjEwMDoi''@;'; put 'put ''aXNvODg1OTEiLGlzb2lyMTAxOiJpc284ODU5MiIsaXNvaXIxMDk6Imlzbzg4NTkzIixpc29pcjExMDoiaXNvODg1OTQiLGlzb2lyMTQ0OiJpc284ODU5NSIsaXNvaXIxMjc6Imlzbzg4NTk2Iixpc29pcjEyNjoiaXNvODg1OTciLGlzb2lyMTM4OiJpc284ODU5OCIsaXNvaXIxNDg6Imlzbzg4''@;'; put 'put ''NTk5Iixpc29pcjE1NzoiaXNvODg1OTEwIixpc29pcjE2NjoidGlzNjIwIixpc29pcjE3OToiaXNvODg1OTEzIixpc29pcjE5OToiaXNvODg1OTE0Iixpc29pcjIwMzoiaXNvODg1OTE1Iixpc29pcjIyNjoiaXNvODg1OTE2IixjcDgxOToiaXNvODg1OTEiLGlibTgxOToiaXNvODg1OTEiLGN5''@;'; put 'put ''cmlsbGljOiJpc284ODU5NSIsYXJhYmljOiJpc284ODU5NiIsYXJhYmljODoiaXNvODg1OTYiLGVjbWExMTQ6Imlzbzg4NTk2Iixhc21vNzA4OiJpc284ODU5NiIsZ3JlZWs6Imlzbzg4NTk3IixncmVlazg6Imlzbzg4NTk3IixlY21hMTE4OiJpc284ODU5NyIsZWxvdDkyODoiaXNvODg1OTci''@;'; put 'put ''LGhlYnJldzoiaXNvODg1OTgiLGhlYnJldzg6Imlzbzg4NTk4Iix0dXJraXNoOiJpc284ODU5OSIsdHVya2lzaDg6Imlzbzg4NTk5Iix0aGFpOiJpc284ODU5MTEiLHRoYWk4OiJpc284ODU5MTEiLGNlbHRpYzoiaXNvODg1OTE0IixjZWx0aWM4OiJpc284ODU5MTQiLGlzb2NlbHRpYzoiaXNv''@;'; put 'put ''ODg1OTE0Iix0aXM2MjAwOiJ0aXM2MjAiLHRpczYyMDI1MjkxOiJ0aXM2MjAiLHRpczYyMDI1MzMwOiJ0aXM2MjAiLDFlNDoibWFjcm9tYW4iLDEwMDA2OiJtYWNncmVlayIsMTAwMDc6Im1hY2N5cmlsbGljIiwxMDA3OToibWFjaWNlbGFuZCIsMTAwODE6Im1hY3R1cmtpc2giLGNzcGM4Y29k''@;'; put 'put ''ZXBhZ2U0Mzc6ImNwNDM3Iixjc3BjNzc1YmFsdGljOiJjcDc3NSIsY3NwYzg1MG11bHRpbGluZ3VhbDoiY3A4NTAiLGNzcGNwODUyOiJjcDg1MiIsY3NwYzg2MmxhdGluaGVicmV3OiJjcDg2MiIsY3BncjoiY3A4NjkiLG1zZWU6ImNwMTI1MCIsbXNjeXJsOiJjcDEyNTEiLG1zYW5zaToiY3Ax''@;'; put 'put ''MjUyIixtc2dyZWVrOiJjcDEyNTMiLG1zdHVyazoiY3AxMjU0Iixtc2hlYnI6ImNwMTI1NSIsbXNhcmFiOiJjcDEyNTYiLHdpbmJhbHRyaW06ImNwMTI1NyIsY3AyMDg2Njoia29pOHIiLDIwODY2OiJrb2k4ciIsaWJtODc4OiJrb2k4ciIsY3Nrb2k4cjoia29pOHIiLGNwMjE4NjY6ImtvaTh1''@;'; put 'put ''IiwyMTg2Njoia29pOHUiLGlibTExNjg6ImtvaTh1IixzdHJrMTA0ODIwMDI6InJrMTA0OCIsdGN2bjU3MTI6InRjdm4iLHRjdm41NzEyMToidGN2biIsZ2IxOTg4ODA6ImlzbzY0NmNuIixjbjoiaXNvNjQ2Y24iLGNzaXNvMTRqaXNjNjIyMHJvOiJpc282NDZqcCIsamlzYzYyMjAxOTY5cm86''@;'; put 'put ''ImlzbzY0NmpwIixqcDoiaXNvNjQ2anAiLGNzaHByb21hbjg6Imhwcm9tYW44IixyODoiaHByb21hbjgiLHJvbWFuODoiaHByb21hbjgiLHhyb21hbjg6Imhwcm9tYW44IixpYm0xMDUxOiJocHJvbWFuOCIsbWFjOiJtYWNpbnRvc2giLGNzbWFjaW50b3NoOiJtYWNpbnRvc2gifX0sNzE3NToo''@;'; put 'put ''UWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoOTM4MDcpLkJ1ZmZlcjtmdW5jdGlvbiB4KCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gc2UoKXt0aGlzLm92ZXJmbG93Qnl0ZT0tMX1mdW5jdGlvbiBNKEcsRCl7dGhpcy5pY29udj1EfWZ1bmN0aW9uIE8oRyxEKXt2b2lkIDA9PT0o''@;'; put 'put ''Rz1HfHx7fSkuYWRkQk9NJiYoRy5hZGRCT009ITApLHRoaXMuZW5jb2Rlcj1ELmljb252LmdldEVuY29kZXIoInV0Zi0xNmxlIixHKX1mdW5jdGlvbiBJKEcsRCl7dGhpcy5kZWNvZGVyPW51bGwsdGhpcy5pbml0aWFsQnl0ZXM9W10sdGhpcy5pbml0aWFsQnl0ZXNMZW49MCx0aGlzLm9wdGlv''@;'; put 'put ''bnM9R3x8e30sdGhpcy5pY29udj1ELmljb252fWZ1bmN0aW9uIGooRyxEKXt2YXIgVD1EfHwidXRmLTE2bGUiO2lmKEcubGVuZ3RoPj0yKWlmKDI1ND09R1swXSYmMjU1PT1HWzFdKVQ9InV0Zi0xNmJlIjtlbHNlIGlmKDI1NT09R1swXSYmMjU0PT1HWzFdKVQ9InV0Zi0xNmxlIjtlbHNle2Zv''@;'; put 'put ''cih2YXIgRT0wLHo9MCxOPU1hdGgubWluKEcubGVuZ3RoLUcubGVuZ3RoJTIsNjQpLEI9MDtCPE47Qis9MikwPT09R1tCXSYmMCE9PUdbQisxXSYmeisrLDAhPT1HW0JdJiYwPT09R1tCKzFdJiZFKys7ej5FP1Q9InV0Zi0xNmJlIjp6PEUmJihUPSJ1dGYtMTZsZSIpfXJldHVybiBUfU1lLnV0''@;'; put 'put ''ZjE2YmU9eCx4LnByb3RvdHlwZS5lbmNvZGVyPW0seC5wcm90b3R5cGUuZGVjb2Rlcj1zZSx4LnByb3RvdHlwZS5ib21Bd2FyZT0hMCxtLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihHKXtmb3IodmFyIEQ9b2UuZnJvbShHLCJ1Y3MyIiksVD0wO1Q8RC5sZW5ndGg7VCs9Mil7dmFyIEU9RFtU''@;'; put 'put ''XTtEW1RdPURbVCsxXSxEW1QrMV09RX1yZXR1cm4gRH0sbS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7fSxzZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oRyl7aWYoMD09Ry5sZW5ndGgpcmV0dXJuIiI7dmFyIEQ9b2UuYWxsb2MoRy5sZW5ndGgrMSksVD0wLEU9MDtmb3IoLTEhPT10aGlz''@;'; put 'put ''Lm92ZXJmbG93Qnl0ZSYmKERbMF09R1swXSxEWzFdPXRoaXMub3ZlcmZsb3dCeXRlLFQ9MSxFPTIpO1Q8Ry5sZW5ndGgtMTtUKz0yLEUrPTIpRFtFXT1HW1QrMV0sRFtFKzFdPUdbVF07cmV0dXJuIHRoaXMub3ZlcmZsb3dCeXRlPVQ9PUcubGVuZ3RoLTE/R1tHLmxlbmd0aC0xXTotMSxELnNs''@;'; put 'put ''aWNlKDAsRSkudG9TdHJpbmcoInVjczIiKX0sc2UucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sTWUudXRmMTY9TSxNLnByb3RvdHlwZS5lbmNvZGVyPU8sTS5wcm90b3R5cGUuZGVjb2Rlcj1JLE8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmVuY29kZXIud3Jp''@;'; put 'put ''dGUoRyl9LE8ucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuY29kZXIuZW5kKCl9LEkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEcpe2lmKCF0aGlzLmRlY29kZXIpe2lmKHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goRyksdGhpcy5pbml0aWFsQnl0ZXNMZW4rPUcubGVu''@;'; put 'put ''Z3RoLHRoaXMuaW5pdGlhbEJ5dGVzTGVuPDE2KXJldHVybiIiO3ZhciBEPWooRz1vZS5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpO3RoaXMuZGVjb2Rlcj10aGlzLmljb252LmdldERlY29kZXIoRCx0aGlzLm9wdGlvbnMpLHRoaXMuaW5p''@;'; put 'put ''dGlhbEJ5dGVzLmxlbmd0aD10aGlzLmluaXRpYWxCeXRlc0xlbj0wfXJldHVybiB0aGlzLmRlY29kZXIud3JpdGUoRyl9LEkucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe2lmKCF0aGlzLmRlY29kZXIpe3ZhciBHPW9lLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksRD1qKEcsdGhpcy5vcHRp''@;'; put 'put ''b25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVjb2RlcihELHRoaXMub3B0aW9ucyk7dmFyIFQ9dGhpcy5kZWNvZGVyLndyaXRlKEcpLEU9dGhpcy5kZWNvZGVyLmVuZCgpO3JldHVybiBFP1QrRTpUfXJldHVybiB0aGlzLmRlY29kZXIuZW5kKCl9fSwz''@;'; put 'put ''NTA4OTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoOTM4MDcpLkJ1ZmZlcjtmdW5jdGlvbiB4KEcsRCl7dGhpcy5pY29udj1ELHRoaXMuYm9tQXdhcmU9ITAsdGhpcy5pc0xFPUcuaXNMRX1mdW5jdGlvbiBtKEcsRCl7dGhpcy5pc0xFPUQuaXNMRSx0aGlzLmhpZ2hTdXJyb2dh''@;'; put 'put ''dGU9MH1mdW5jdGlvbiBzZShHLEQpe3RoaXMuaXNMRT1ELmlzTEUsdGhpcy5iYWRDaGFyPUQuaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlLmNoYXJDb2RlQXQoMCksdGhpcy5vdmVyZmxvdz1udWxsfWZ1bmN0aW9uIE0oRyxEKXt0aGlzLmljb252PUR9ZnVuY3Rpb24gTyhHLEQpe3ZvaWQgMD09''@;'; put 'put ''PShHPUd8fHt9KS5hZGRCT00mJihHLmFkZEJPTT0hMCksdGhpcy5lbmNvZGVyPUQuaWNvbnYuZ2V0RW5jb2RlcihHLmRlZmF1bHRFbmNvZGluZ3x8InV0Zi0zMmxlIixHKX1mdW5jdGlvbiBJKEcsRCl7dGhpcy5kZWNvZGVyPW51bGwsdGhpcy5pbml0aWFsQnl0ZXM9W10sdGhpcy5pbml0aWFs''@;'; put 'put ''Qnl0ZXNMZW49MCx0aGlzLm9wdGlvbnM9R3x8e30sdGhpcy5pY29udj1ELmljb252fWZ1bmN0aW9uIGooRyxEKXt2YXIgVD1EfHwidXRmLTMybGUiO2lmKEcubGVuZ3RoPj00KWlmKDY1Mjc5PT09Ry5yZWFkVUludDMyQkUoMCkpVD0idXRmLTMyYmUiO2Vsc2UgaWYoNjUyNzk9PT1HLnJlYWRV''@;'; put 'put ''SW50MzJMRSgwKSlUPSJ1dGYtMzJsZSI7ZWxzZXtmb3IodmFyIEU9MCx6PTAsTj0wLEI9MCxaPU1hdGgubWluKEcubGVuZ3RoLUcubGVuZ3RoJTQsMTI4KSxZPTA7WTxaO1krPTQpe3ZhciBVPUdbWV0scT1HW1krMV0sSj1HW1krMl0sZWU9R1tZKzNdOygwIT09VXx8cT4xNikmJisreiwoMCE9''@;'; put 'put ''PWVlfHxKPjE2KSYmKytFLDA9PT1VJiYwPT09cSYmMD09PUomJjAhPT1lZSYmQisrLDAhPT1VJiYwPT09cSYmMD09PUomJjA9PT1lZSYmTisrfXo8RT9UPSJ1dGYtMzJiZSI6RTx6JiYoVD0idXRmLTMybGUiKSxCPk4/VD0idXRmLTMyYmUiOkI8TiYmKFQ9InV0Zi0zMmxlIil9cmV0dXJuIFR9''@;'; put 'put ''TWUuX3V0ZjMyPXgsTWUudXRmMzJsZT17dHlwZToiX3V0ZjMyIixpc0xFOiEwfSxNZS51dGYzMmJlPXt0eXBlOiJfdXRmMzIiLGlzTEU6ITF9LE1lLnVjczRsZT0idXRmMzJsZSIsTWUudWNzNGJlPSJ1dGYzMmJlIix4LnByb3RvdHlwZS5lbmNvZGVyPW0seC5wcm90b3R5cGUuZGVjb2Rlcj1z''@;'; put 'put ''ZSxtLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihHKXtmb3IodmFyIEQ9b2UuZnJvbShHLCJ1Y3MyIiksVD1vZS5hbGxvYygyKkQubGVuZ3RoKSxFPXRoaXMuaXNMRT9ULndyaXRlVUludDMyTEU6VC53cml0ZVVJbnQzMkJFLHo9MCxOPTA7TjxELmxlbmd0aDtOKz0yKXt2YXIgQj1ELnJlYWRV''@;'; put 'put ''SW50MTZMRShOKSxaPTU1Mjk2PD1CJiZCPDU2MzIwO2lmKHRoaXMuaGlnaFN1cnJvZ2F0ZSl7aWYoIVomJjU2MzIwPD1CJiZCPDU3MzQ0KXtFLmNhbGwoVCw2NTUzNisodGhpcy5oaWdoU3Vycm9nYXRlLTU1Mjk2PDwxMHxCLTU2MzIwKSx6KSx6Kz00LHRoaXMuaGlnaFN1cnJvZ2F0ZT0wO2Nv''@;'; put 'put ''bnRpbnVlfUUuY2FsbChULHRoaXMuaGlnaFN1cnJvZ2F0ZSx6KSx6Kz00fVo/dGhpcy5oaWdoU3Vycm9nYXRlPUI6KEUuY2FsbChULEIseikseis9NCx0aGlzLmhpZ2hTdXJyb2dhdGU9MCl9cmV0dXJuIHo8VC5sZW5ndGgmJihUPVQuc2xpY2UoMCx6KSksVH0sbS5wcm90b3R5cGUuZW5kPWZ1''@;'; put 'put ''bmN0aW9uKCl7aWYodGhpcy5oaWdoU3Vycm9nYXRlKXt2YXIgRz1vZS5hbGxvYyg0KTtyZXR1cm4gdGhpcy5pc0xFP0cud3JpdGVVSW50MzJMRSh0aGlzLmhpZ2hTdXJyb2dhdGUsMCk6Ry53cml0ZVVJbnQzMkJFKHRoaXMuaGlnaFN1cnJvZ2F0ZSwwKSx0aGlzLmhpZ2hTdXJyb2dhdGU9MCxH''@;'; put 'put ''fX0sc2UucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKEcpe2lmKDA9PT1HLmxlbmd0aClyZXR1cm4iIjt0aGlzLm92ZXJmbG93JiYoRz1vZS5jb25jYXQoW3RoaXMub3ZlcmZsb3csR10pKTt2YXIgRD1HLmxlbmd0aC1HLmxlbmd0aCU0O0cubGVuZ3RoIT09RD8odGhpcy5vdmVyZmxvdz1HLnNs''@;'; put 'put ''aWNlKEQpLEc9Ry5zbGljZSgwLEQpKTp0aGlzLm92ZXJmbG93PW51bGw7Zm9yKHZhciBUPW9lLmFsbG9jKEQpLEU9MCx6PTA7ejxEO3orPTQpe3ZhciBOPXRoaXMuaXNMRT9HLnJlYWRVSW50MzJMRSh6KTpHLnJlYWRVSW50MzJCRSh6KTtpZihOPDY1NTM2KVQud3JpdGVVSW50MTZMRShOLEUp''@;'; put 'put ''LEUrPTI7ZWxzZSBpZihOPjExMTQxMTEpVC53cml0ZVVJbnQxNkxFKHRoaXMuYmFkQ2hhcixFKSxFKz0yO2Vsc2V7dmFyIFo9NTYzMjArKDEwMjMmKE4tPTY1NTM2KSk7VC53cml0ZVVJbnQxNkxFKDU1Mjk2fE4+PjEwLEUpLFQud3JpdGVVSW50MTZMRShaLEUrPTIpLEUrPTJ9fXJldHVybiBU''@;'; put 'put ''LnNsaWNlKDAsRSkudG9TdHJpbmcoInVjczIiKX0sc2UucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe3RoaXMub3ZlcmZsb3c9bnVsbH0sTWUudXRmMzI9TSxNZS51Y3M0PU0sTS5wcm90b3R5cGUuZW5jb2Rlcj1PLE0ucHJvdG90eXBlLmRlY29kZXI9SSxPLnByb3RvdHlwZS53cml0ZT1mdW5j''@;'; put 'put ''dGlvbihHKXtyZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKEcpfSxPLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpfSxJLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihHKXtpZighdGhpcy5kZWNvZGVyKXtpZih0aGlzLmluaXRpYWxCeXRlcy5wdXNo''@;'; put 'put ''KEcpLHRoaXMuaW5pdGlhbEJ5dGVzTGVuKz1HLmxlbmd0aCx0aGlzLmluaXRpYWxCeXRlc0xlbjwzMilyZXR1cm4iIjt2YXIgVD1qKG9lLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7dGhpcy5kZWNvZGVyPXRoaXMuaWNvbnYuZ2V0RGVj''@;'; put 'put ''b2RlcihULHRoaXMub3B0aW9ucyksdGhpcy5pbml0aWFsQnl0ZXMubGVuZ3RoPXRoaXMuaW5pdGlhbEJ5dGVzTGVuPTB9cmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShHKX0sSS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZGVjb2Rlcil7dmFyIEc9b2UuY29uY2F0KHRoaXMu''@;'; put 'put ''aW5pdGlhbEJ5dGVzKSxEPWooRyx0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTt0aGlzLmRlY29kZXI9dGhpcy5pY29udi5nZXREZWNvZGVyKEQsdGhpcy5vcHRpb25zKTt2YXIgVD10aGlzLmRlY29kZXIud3JpdGUoRyksRT10aGlzLmRlY29kZXIuZW5kKCk7cmV0dXJuIEU/VCtFOlR9''@;'; put 'put ''cmV0dXJuIHRoaXMuZGVjb2Rlci5lbmQoKX19LDk3NDc6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDkzODA3KS5CdWZmZXI7ZnVuY3Rpb24geChaLFkpe3RoaXMuaWNvbnY9WX1NZS51dGY3PXgsTWUudW5pY29kZTExdXRmNz0idXRmNyIseC5wcm90b3R5cGUuZW5jb2Rlcj1z''@;'; put 'put ''ZSx4LnByb3RvdHlwZS5kZWNvZGVyPU0seC5wcm90b3R5cGUuYm9tQXdhcmU9ITA7dmFyIG09L1teQS1aYS16MC05J1woXCksLVwuXC86XD8gXG5cclx0XSsvZztmdW5jdGlvbiBzZShaLFkpe3RoaXMuaWNvbnY9WS5pY29udn1mdW5jdGlvbiBNKFosWSl7dGhpcy5pY29udj1ZLmljb252LHRo''@;'; put 'put ''aXMuaW5CYXNlNjQ9ITEsdGhpcy5iYXNlNjRBY2N1bT0iIn1zZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oWil7cmV0dXJuIG9lLmZyb20oWi5yZXBsYWNlKG0sZnVuY3Rpb24oWSl7cmV0dXJuIisiKygiKyI9PT1ZPyIiOnRoaXMuaWNvbnYuZW5jb2RlKFksInV0ZjE2LWJlIikudG9TdHJp''@;'; put 'put ''bmcoImJhc2U2NCIpLnJlcGxhY2UoLz0rJC8sIiIpKSsiLSJ9LmJpbmQodGhpcykpKX0sc2UucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe307Zm9yKHZhciBPPS9bQS1aYS16MC05XC8rXS8sST1bXSxqPTA7ajwyNTY7aisrKUlbal09Ty50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoaikpO3Zh''@;'; put 'put ''ciBEPTQ1O2Z1bmN0aW9uIEUoWixZKXt0aGlzLmljb252PVl9ZnVuY3Rpb24geihaLFkpe3RoaXMuaWNvbnY9WS5pY29udix0aGlzLmluQmFzZTY0PSExLHRoaXMuYmFzZTY0QWNjdW09b2UuYWxsb2MoNiksdGhpcy5iYXNlNjRBY2N1bUlkeD0wfWZ1bmN0aW9uIE4oWixZKXt0aGlzLmljb252''@;'; put 'put ''PVkuaWNvbnYsdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIifU0ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKFope2Zvcih2YXIgWT0iIixVPTAscT10aGlzLmluQmFzZTY0LEo9dGhpcy5iYXNlNjRBY2N1bSxlZT0wO2VlPFoubGVuZ3RoO2VlKyspaWYocSl7aWYoIUlbWltl''@;'; put 'put ''ZV1dKXtpZihlZT09VSYmWltlZV09PUQpWSs9IisiO2Vsc2V7dmFyIHJlPUorWi5zbGljZShVLGVlKS50b1N0cmluZygpO1krPXRoaXMuaWNvbnYuZGVjb2RlKG9lLmZyb20ocmUsImJhc2U2NCIpLCJ1dGYxNi1iZSIpfVpbZWVdIT1EJiZlZS0tLFU9ZWUrMSxxPSExLEo9IiJ9fWVsc2UgNDM9''@;'; put 'put ''PVpbZWVdJiYoWSs9dGhpcy5pY29udi5kZWNvZGUoWi5zbGljZShVLGVlKSwiYXNjaWkiKSxVPWVlKzEscT0hMCk7aWYocSl7dmFyIGllPShyZT1KK1ouc2xpY2UoVSkudG9TdHJpbmcoKSkubGVuZ3RoLXJlLmxlbmd0aCU4O0o9cmUuc2xpY2UoaWUpLHJlPXJlLnNsaWNlKDAsaWUpLFkrPXRo''@;'; put 'put ''aXMuaWNvbnYuZGVjb2RlKG9lLmZyb20ocmUsImJhc2U2NCIpLCJ1dGYxNi1iZSIpfWVsc2UgWSs9dGhpcy5pY29udi5kZWNvZGUoWi5zbGljZShVKSwiYXNjaWkiKTtyZXR1cm4gdGhpcy5pbkJhc2U2ND1xLHRoaXMuYmFzZTY0QWNjdW09SixZfSxNLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24o''@;'; put 'put ''KXt2YXIgWj0iIjtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGg+MCYmKFo9dGhpcy5pY29udi5kZWNvZGUob2UuZnJvbSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIi''@;'; put 'put ''LFp9LE1lLnV0ZjdpbWFwPUUsRS5wcm90b3R5cGUuZW5jb2Rlcj16LEUucHJvdG90eXBlLmRlY29kZXI9TixFLnByb3RvdHlwZS5ib21Bd2FyZT0hMCx6LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihaKXtmb3IodmFyIFk9dGhpcy5pbkJhc2U2NCxVPXRoaXMuYmFzZTY0QWNjdW0scT10aGlz''@;'; put 'put ''LmJhc2U2NEFjY3VtSWR4LEo9b2UuYWxsb2MoNSpaLmxlbmd0aCsxMCksZWU9MCxyZT0wO3JlPFoubGVuZ3RoO3JlKyspe3ZhciBpZT1aLmNoYXJDb2RlQXQocmUpOzMyPD1pZSYmaWU8PTEyNj8oWSYmKHE+MCYmKGVlKz1KLndyaXRlKFUuc2xpY2UoMCxxKS50b1N0cmluZygiYmFzZTY0Iiku''@;'; put 'put ''cmVwbGFjZSgvXC8vZywiLCIpLnJlcGxhY2UoLz0rJC8sIiIpLGVlKSxxPTApLEpbZWUrK109RCxZPSExKSxZfHwoSltlZSsrXT1pZSwzOD09PWllJiYoSltlZSsrXT1EKSkpOihZfHwoSltlZSsrXT0zOCxZPSEwKSxZJiYoVVtxKytdPWllPj44LFVbcSsrXT0yNTUmaWUscT09VS5sZW5ndGgm''@;'; put 'put ''JihlZSs9Si53cml0ZShVLnRvU3RyaW5nKCJiYXNlNjQiKS5yZXBsYWNlKC9cLy9nLCIsIiksZWUpLHE9MCkpKX1yZXR1cm4gdGhpcy5pbkJhc2U2ND1ZLHRoaXMuYmFzZTY0QWNjdW1JZHg9cSxKLnNsaWNlKDAsZWUpfSx6LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIgWj1vZS5hbGxv''@;'; put 'put ''YygxMCksWT0wO3JldHVybiB0aGlzLmluQmFzZTY0JiYodGhpcy5iYXNlNjRBY2N1bUlkeD4wJiYoWSs9Wi53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNlKDAsdGhpcy5iYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoImJhc2U2NCIpLnJlcGxhY2UoL1wvL2csIiwiKS5yZXBsYWNlKC89KyQv''@;'; put 'put ''LCIiKSxZKSx0aGlzLmJhc2U2NEFjY3VtSWR4PTApLFpbWSsrXT1ELHRoaXMuaW5CYXNlNjQ9ITEpLFouc2xpY2UoMCxZKX07dmFyIEI9SS5zbGljZSgpO0JbNDRdPSEwLE4ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKFope2Zvcih2YXIgWT0iIixVPTAscT10aGlzLmluQmFzZTY0LEo9dGhp''@;'; put 'put ''cy5iYXNlNjRBY2N1bSxlZT0wO2VlPFoubGVuZ3RoO2VlKyspaWYocSl7aWYoIUJbWltlZV1dKXtpZihlZT09VSYmWltlZV09PUQpWSs9IiYiO2Vsc2V7dmFyIHJlPUorWi5zbGljZShVLGVlKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywiLyIpO1krPXRoaXMuaWNvbnYuZGVjb2RlKG9lLmZy''@;'; put 'put ''b20ocmUsImJhc2U2NCIpLCJ1dGYxNi1iZSIpfVpbZWVdIT1EJiZlZS0tLFU9ZWUrMSxxPSExLEo9IiJ9fWVsc2UgMzg9PVpbZWVdJiYoWSs9dGhpcy5pY29udi5kZWNvZGUoWi5zbGljZShVLGVlKSwiYXNjaWkiKSxVPWVlKzEscT0hMCk7aWYocSl7dmFyIGllPShyZT1KK1ouc2xpY2UoVSku''@;'; put 'put ''dG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csIi8iKSkubGVuZ3RoLXJlLmxlbmd0aCU4O0o9cmUuc2xpY2UoaWUpLHJlPXJlLnNsaWNlKDAsaWUpLFkrPXRoaXMuaWNvbnYuZGVjb2RlKG9lLmZyb20ocmUsImJhc2U2NCIpLCJ1dGYxNi1iZSIpfWVsc2UgWSs9dGhpcy5pY29udi5kZWNvZGUoWi5z''@;'; put 'put ''bGljZShVKSwiYXNjaWkiKTtyZXR1cm4gdGhpcy5pbkJhc2U2ND1xLHRoaXMuYmFzZTY0QWNjdW09SixZfSxOLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXt2YXIgWj0iIjtyZXR1cm4gdGhpcy5pbkJhc2U2NCYmdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGg+MCYmKFo9dGhpcy5pY29udi5kZWNv''@;'; put 'put ''ZGUob2UuZnJvbSh0aGlzLmJhc2U2NEFjY3VtLCJiYXNlNjQiKSwidXRmMTYtYmUiKSksdGhpcy5pbkJhc2U2ND0hMSx0aGlzLmJhc2U2NEFjY3VtPSIiLFp9fSwyOTQyMjooUWUsTWUpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG9lKG0sc2Upe3RoaXMuZW5jb2Rlcj1tLHRoaXMuYWRkQk9N''@;'; put 'put ''PSEwfWZ1bmN0aW9uIHgobSxzZSl7dGhpcy5kZWNvZGVyPW0sdGhpcy5wYXNzPSExLHRoaXMub3B0aW9ucz1zZXx8e319TWUuUHJlcGVuZEJPTT1vZSxvZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuYWRkQk9NJiYobT0iXHVmZWZmIittLHRoaXMuYWRkQk9NPSEx''@;'; put 'put ''KSx0aGlzLmVuY29kZXIud3JpdGUobSl9LG9lLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpfSxNZS5TdHJpcEJPTT14LHgucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKG0pe3ZhciBzZT10aGlzLmRlY29kZXIud3JpdGUobSk7cmV0dXJuIHRoaXMu''@;'; put 'put ''cGFzc3x8IXNlfHwoIlx1ZmVmZiI9PT1zZVswXSYmKHNlPXNlLnNsaWNlKDEpLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc3RyaXBCT00mJnRoaXMub3B0aW9ucy5zdHJpcEJPTSgpKSx0aGlzLnBhc3M9ITApLHNlfSx4LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5kZWNvZGVyLmVuZCgpfX0sOTQyNDg6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDkzODA3KS5CdWZmZXIseD1SKDI5NDIyKSxtPVFlLmV4cG9ydHM7bS5lbmNvZGluZ3M9bnVsbCxtLmRlZmF1bHRDaGFyVW5pY29kZT0iXHVmZmZkIixtLmRlZmF1bHRDaGFyU2luZ2xl''@;'; put 'put ''Qnl0ZT0iPyIsbS5lbmNvZGU9ZnVuY3Rpb24oSSxqLEcpe0k9IiIrKEl8fCIiKTt2YXIgRD1tLmdldEVuY29kZXIoaixHKSxUPUQud3JpdGUoSSksRT1ELmVuZCgpO3JldHVybiBFJiZFLmxlbmd0aD4wP29lLmNvbmNhdChbVCxFXSk6VH0sbS5kZWNvZGU9ZnVuY3Rpb24oSSxqLEcpeyJzdHJp''@;'; put 'put ''bmciPT10eXBlb2YgSSYmKG0uc2tpcERlY29kZVdhcm5pbmd8fChjb25zb2xlLmVycm9yKCJJY29udi1saXRlIHdhcm5pbmc6IGRlY29kZSgpLWluZyBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9V''@;'; put 'put ''c2UtQnVmZmVycy13aGVuLWRlY29kaW5nIiksbS5za2lwRGVjb2RlV2FybmluZz0hMCksST1vZS5mcm9tKCIiKyhJfHwiIiksImJpbmFyeSIpKTt2YXIgRD1tLmdldERlY29kZXIoaixHKSxUPUQud3JpdGUoSSksRT1ELmVuZCgpO3JldHVybiBFP1QrRTpUfSxtLmVuY29kaW5nRXhpc3RzPWZ1''@;'; put 'put ''bmN0aW9uKEkpe3RyeXtyZXR1cm4gbS5nZXRDb2RlYyhJKSwhMH1jYXRjaHtyZXR1cm4hMX19LG0udG9FbmNvZGluZz1tLmVuY29kZSxtLmZyb21FbmNvZGluZz1tLmRlY29kZSxtLl9jb2RlY0RhdGFDYWNoZT17fSxtLmdldENvZGVjPWZ1bmN0aW9uKEkpe20uZW5jb2RpbmdzfHwobS5lbmNv''@;'; put 'put ''ZGluZ3M9Uig3Mjg5MykpO2Zvcih2YXIgaj1tLl9jYW5vbmljYWxpemVFbmNvZGluZyhJKSxHPXt9Ozspe3ZhciBEPW0uX2NvZGVjRGF0YUNhY2hlW2pdO2lmKEQpcmV0dXJuIEQ7dmFyIFQ9bS5lbmNvZGluZ3Nbal07c3dpdGNoKHR5cGVvZiBUKXtjYXNlInN0cmluZyI6aj1UO2JyZWFrO2Nh''@;'; put 'put ''c2Uib2JqZWN0Ijpmb3IodmFyIEUgaW4gVClHW0VdPVRbRV07Ry5lbmNvZGluZ05hbWV8fChHLmVuY29kaW5nTmFtZT1qKSxqPVQudHlwZTticmVhaztjYXNlImZ1bmN0aW9uIjpyZXR1cm4gRy5lbmNvZGluZ05hbWV8fChHLmVuY29kaW5nTmFtZT1qKSxEPW5ldyBUKEcsbSksbS5fY29kZWNE''@;'; put 'put ''YXRhQ2FjaGVbRy5lbmNvZGluZ05hbWVdPUQsRDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRW5jb2Rpbmcgbm90IHJlY29nbml6ZWQ6ICciK0krIicgKHNlYXJjaGVkIGFzOiAnIitqKyInKSIpfX19LG0uX2Nhbm9uaWNhbGl6ZUVuY29kaW5nPWZ1bmN0aW9uKE8pe3JldHVybigiIitPKS50''@;'; put 'put ''b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLzpcZHs0fSR8W14wLTlhLXpdL2csIiIpfSxtLmdldEVuY29kZXI9ZnVuY3Rpb24oSSxqKXt2YXIgRz1tLmdldENvZGVjKEkpLEQ9bmV3IEcuZW5jb2RlcihqLEcpO3JldHVybiBHLmJvbUF3YXJlJiZqJiZqLmFkZEJPTSYmKEQ9bmV3IHguUHJlcGVuZEJP''@;'; put 'put ''TShELGopKSxEfSxtLmdldERlY29kZXI9ZnVuY3Rpb24oSSxqKXt2YXIgRz1tLmdldENvZGVjKEkpLEQ9bmV3IEcuZGVjb2RlcihqLEcpO3JldHVybiBHLmJvbUF3YXJlJiYhKGomJiExPT09ai5zdHJpcEJPTSkmJihEPW5ldyB4LlN0cmlwQk9NKEQsaikpLER9O3ZhciBzZT10eXBlb2YgcHJv''@;'; put 'put ''Y2VzczwidSImJnByb2Nlc3MudmVyc2lvbnMmJnByb2Nlc3MudmVyc2lvbnMubm9kZTtpZihzZSl7dmFyIE09c2Uuc3BsaXQoIi4iKS5tYXAoTnVtYmVyKTsoTVswXT4wfHxNWzFdPj0xMCkmJlIoNjEwOTMpKG0pLFIoMTU3OTEpKG0pfX0sMjIwMjA6KFFlLE1lKT0+e01lLnJlYWQ9ZnVuY3Rp''@;'; put 'put ''b24oUixvZSx4LG0sc2Upe3ZhciBNLE8sST04KnNlLW0tMSxqPSgxPDxJKS0xLEc9aj4+MSxEPS03LFQ9eD9zZS0xOjAsRT14Py0xOjEsej1SW29lK1RdO2ZvcihUKz1FLE09eiYoMTw8LUQpLTEsej4+PS1ELEQrPUk7RD4wO009MjU2Kk0rUltvZStUXSxUKz1FLEQtPTgpO2ZvcihPPU0mKDE8''@;'; put 'put ''PC1EKS0xLE0+Pj0tRCxEKz1tO0Q+MDtPPTI1NipPK1Jbb2UrVF0sVCs9RSxELT04KTtpZigwPT09TSlNPTEtRztlbHNle2lmKE09PT1qKXJldHVybiBPP05hTjoxLzAqKHo/LTE6MSk7Tys9TWF0aC5wb3coMixtKSxNLT1HfXJldHVybih6Py0xOjEpKk8qTWF0aC5wb3coMixNLW0pfSxNZS53''@;'; put 'put ''cml0ZT1mdW5jdGlvbihSLG9lLHgsbSxzZSxNKXt2YXIgTyxJLGosRz04Kk0tc2UtMSxEPSgxPDxHKS0xLFQ9RD4+MSxFPTIzPT09c2U/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHo9bT8wOk0tMSxOPW0/MTotMSxCPW9lPDB8fDA9PT1vZSYmMS9vZTwwPzE6MDtmb3Iob2U9''@;'; put 'put ''TWF0aC5hYnMob2UpLGlzTmFOKG9lKXx8b2U9PT0xLzA/KEk9aXNOYU4ob2UpPzE6MCxPPUQpOihPPU1hdGguZmxvb3IoTWF0aC5sb2cob2UpL01hdGguTE4yKSxvZSooaj1NYXRoLnBvdygyLC1PKSk8MSYmKE8tLSxqKj0yKSwob2UrPU8rVD49MT9FL2o6RSpNYXRoLnBvdygyLDEtVCkpKmo+''@;'; put 'put ''PTImJihPKyssai89MiksTytUPj1EPyhJPTAsTz1EKTpPK1Q+PTE/KEk9KG9lKmotMSkqTWF0aC5wb3coMixzZSksTys9VCk6KEk9b2UqTWF0aC5wb3coMixULTEpKk1hdGgucG93KDIsc2UpLE89MCkpO3NlPj04O1JbeCt6XT0yNTUmSSx6Kz1OLEkvPTI1NixzZS09OCk7Zm9yKE89Tzw8c2V8''@;'; put 'put ''SSxHKz1zZTtHPjA7Ult4K3pdPTI1NSZPLHorPU4sTy89MjU2LEctPTgpO1JbeCt6LU5dfD0xMjgqQn19LDcxOTkzOlFlPT57UWUuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihSLG9lKXtvZSYmKFIuc3VwZXJfPW9lLFIucHJvdG90eXBlPU9iamVj''@;'; put 'put ''dC5jcmVhdGUob2UucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6UixlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSl9OmZ1bmN0aW9uKFIsb2Upe2lmKG9lKXtSLnN1cGVyXz1vZTt2YXIgeD1mdW5jdGlvbigpe307eC5wcm90b3R5cGU9b2UucHJvdG90''@;'; put 'put ''eXBlLFIucHJvdG90eXBlPW5ldyB4LFIucHJvdG90eXBlLmNvbnN0cnVjdG9yPVJ9fX0sMjAwNTM6UWU9Pnt2YXIgTWU9e30udG9TdHJpbmc7UWUuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihSKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1NZS5jYWxsKFIpfX0sMzQ3MjU6KFFl''@;'; put 'put ''LE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDcxOTkzKSx4PVIoMTM2ODYpLG09UigyNzA1NCkuQnVmZmVyLHNlPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gTSgpe3guY2FsbCh0aGlzLDY0KSx0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4''@;'; put 'put ''MzEwMix0aGlzLl9kPTI3MTczMzg3OH1mdW5jdGlvbiBPKFQsRSl7cmV0dXJuIFQ8PEV8VD4+PjMyLUV9ZnVuY3Rpb24gSShULEUseixOLEIsWixZKXtyZXR1cm4gTyhUKyhFJnp8fkUmTikrQitafDAsWSkrRXwwfWZ1bmN0aW9uIGooVCxFLHosTixCLFosWSl7cmV0dXJuIE8oVCsoRSZOfHom''@;'; put 'put ''fk4pK0IrWnwwLFkpK0V8MH1mdW5jdGlvbiBHKFQsRSx6LE4sQixaLFkpe3JldHVybiBPKFQrKEVeel5OKStCK1p8MCxZKStFfDB9ZnVuY3Rpb24gRChULEUseixOLEIsWixZKXtyZXR1cm4gTyhUKyh6XihFfH5OKSkrQitafDAsWSkrRXwwfW9lKE0seCksTS5wcm90b3R5cGUuX3VwZGF0ZT1m''@;'; put 'put ''dW5jdGlvbigpe2Zvcih2YXIgVD1zZSxFPTA7RTwxNjsrK0UpVFtFXT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSg0KkUpO3ZhciB6PXRoaXMuX2EsTj10aGlzLl9iLEI9dGhpcy5fYyxaPXRoaXMuX2Q7ej1JKHosTixCLFosVFswXSwzNjE0MDkwMzYwLDcpLFo9SShaLHosTixCLFRbMV0sMzkw''@;'; put 'put ''NTQwMjcxMCwxMiksQj1JKEIsWix6LE4sVFsyXSw2MDYxMDU4MTksMTcpLE49SShOLEIsWix6LFRbM10sMzI1MDQ0MTk2NiwyMiksej1JKHosTixCLFosVFs0XSw0MTE4NTQ4Mzk5LDcpLFo9SShaLHosTixCLFRbNV0sMTIwMDA4MDQyNiwxMiksQj1JKEIsWix6LE4sVFs2XSwyODIxNzM1OTU1''@;'; put 'put ''LDE3KSxOPUkoTixCLFoseixUWzddLDQyNDkyNjEzMTMsMjIpLHo9SSh6LE4sQixaLFRbOF0sMTc3MDAzNTQxNiw3KSxaPUkoWix6LE4sQixUWzldLDIzMzY1NTI4NzksMTIpLEI9SShCLFoseixOLFRbMTBdLDQyOTQ5MjUyMzMsMTcpLE49SShOLEIsWix6LFRbMTFdLDIzMDQ1NjMxMzQsMjIp''@;'; put 'put ''LHo9SSh6LE4sQixaLFRbMTJdLDE4MDQ2MDM2ODIsNyksWj1JKFoseixOLEIsVFsxM10sNDI1NDYyNjE5NSwxMiksQj1JKEIsWix6LE4sVFsxNF0sMjc5Mjk2NTAwNiwxNyksej1qKHosTj1JKE4sQixaLHosVFsxNV0sMTIzNjUzNTMyOSwyMiksQixaLFRbMV0sNDEyOTE3MDc4Niw1KSxaPWoo''@;'; put 'put ''Wix6LE4sQixUWzZdLDMyMjU0NjU2NjQsOSksQj1qKEIsWix6LE4sVFsxMV0sNjQzNzE3NzEzLDE0KSxOPWooTixCLFoseixUWzBdLDM5MjEwNjk5OTQsMjApLHo9aih6LE4sQixaLFRbNV0sMzU5MzQwODYwNSw1KSxaPWooWix6LE4sQixUWzEwXSwzODAxNjA4Myw5KSxCPWooQixaLHosTixU''@;'; put 'put ''WzE1XSwzNjM0NDg4OTYxLDE0KSxOPWooTixCLFoseixUWzRdLDM4ODk0Mjk0NDgsMjApLHo9aih6LE4sQixaLFRbOV0sNTY4NDQ2NDM4LDUpLFo9aihaLHosTixCLFRbMTRdLDMyNzUxNjM2MDYsOSksQj1qKEIsWix6LE4sVFszXSw0MTA3NjAzMzM1LDE0KSxOPWooTixCLFoseixUWzhdLDEx''@;'; put 'put ''NjM1MzE1MDEsMjApLHo9aih6LE4sQixaLFRbMTNdLDI4NTAyODU4MjksNSksWj1qKFoseixOLEIsVFsyXSw0MjQzNTYzNTEyLDkpLEI9aihCLFoseixOLFRbN10sMTczNTMyODQ3MywxNCksej1HKHosTj1qKE4sQixaLHosVFsxMl0sMjM2ODM1OTU2MiwyMCksQixaLFRbNV0sNDI5NDU4ODcz''@;'; put 'put ''OCw0KSxaPUcoWix6LE4sQixUWzhdLDIyNzIzOTI4MzMsMTEpLEI9RyhCLFoseixOLFRbMTFdLDE4MzkwMzA1NjIsMTYpLE49RyhOLEIsWix6LFRbMTRdLDQyNTk2NTc3NDAsMjMpLHo9Ryh6LE4sQixaLFRbMV0sMjc2Mzk3NTIzNiw0KSxaPUcoWix6LE4sQixUWzRdLDEyNzI4OTMzNTMsMTEp''@;'; put 'put ''LEI9RyhCLFoseixOLFRbN10sNDEzOTQ2OTY2NCwxNiksTj1HKE4sQixaLHosVFsxMF0sMzIwMDIzNjY1NiwyMyksej1HKHosTixCLFosVFsxM10sNjgxMjc5MTc0LDQpLFo9RyhaLHosTixCLFRbMF0sMzkzNjQzMDA3NCwxMSksQj1HKEIsWix6LE4sVFszXSwzNTcyNDQ1MzE3LDE2KSxOPUco''@;'; put 'put ''TixCLFoseixUWzZdLDc2MDI5MTg5LDIzKSx6PUcoeixOLEIsWixUWzldLDM2NTQ2MDI4MDksNCksWj1HKFoseixOLEIsVFsxMl0sMzg3MzE1MTQ2MSwxMSksQj1HKEIsWix6LE4sVFsxNV0sNTMwNzQyNTIwLDE2KSx6PUQoeixOPUcoTixCLFoseixUWzJdLDMyOTk2Mjg2NDUsMjMpLEIsWixU''@;'; put 'put ''WzBdLDQwOTYzMzY0NTIsNiksWj1EKFoseixOLEIsVFs3XSwxMTI2ODkxNDE1LDEwKSxCPUQoQixaLHosTixUWzE0XSwyODc4NjEyMzkxLDE1KSxOPUQoTixCLFoseixUWzVdLDQyMzc1MzMyNDEsMjEpLHo9RCh6LE4sQixaLFRbMTJdLDE3MDA0ODU1NzEsNiksWj1EKFoseixOLEIsVFszXSwy''@;'; put 'put ''Mzk5OTgwNjkwLDEwKSxCPUQoQixaLHosTixUWzEwXSw0MjkzOTE1NzczLDE1KSxOPUQoTixCLFoseixUWzFdLDIyNDAwNDQ0OTcsMjEpLHo9RCh6LE4sQixaLFRbOF0sMTg3MzMxMzM1OSw2KSxaPUQoWix6LE4sQixUWzE1XSw0MjY0MzU1NTUyLDEwKSxCPUQoQixaLHosTixUWzZdLDI3MzQ3''@;'; put 'put ''Njg5MTYsMTUpLE49RChOLEIsWix6LFRbMTNdLDEzMDkxNTE2NDksMjEpLHo9RCh6LE4sQixaLFRbNF0sNDE0OTQ0NDIyNiw2KSxaPUQoWix6LE4sQixUWzExXSwzMTc0NzU2OTE3LDEwKSxCPUQoQixaLHosTixUWzJdLDcxODc4NzI1OSwxNSksTj1EKE4sQixaLHosVFs5XSwzOTUxNDgxNzQ1''@;'; put 'put ''LDIxKSx0aGlzLl9hPXRoaXMuX2ErenwwLHRoaXMuX2I9dGhpcy5fYitOfDAsdGhpcy5fYz10aGlzLl9jK0J8MCx0aGlzLl9kPXRoaXMuX2QrWnwwfSxNLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2Nr''@;'; put 'put ''T2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVu''@;'; put 'put ''Z3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFQ9bS5hbGxvY1Vuc2FmZSgxNik7cmV0dXJuIFQud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksVC53cml0ZUludDMyTEUodGhpcy5fYiw0KSxULndyaXRlSW50''@;'; put 'put ''MzJMRSh0aGlzLl9jLDgpLFQud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpLFR9LFFlLmV4cG9ydHM9TX0sNTM0NTk6KFFlLE1lLFIpPT57dmFyIG9lPVIoNTcyMjMpLHg9UigzNTI5NCk7ZnVuY3Rpb24gbShzZSl7dGhpcy5yYW5kPXNlfHxuZXcgeC5SYW5kfVFlLmV4cG9ydHM9bSxtLmNyZWF0''@;'; put 'put ''ZT1mdW5jdGlvbihNKXtyZXR1cm4gbmV3IG0oTSl9LG0ucHJvdG90eXBlLl9yYW5kYmVsb3c9ZnVuY3Rpb24oTSl7dmFyIE89TS5iaXRMZW5ndGgoKSxJPU1hdGguY2VpbChPLzgpO2Rve3ZhciBqPW5ldyBvZSh0aGlzLnJhbmQuZ2VuZXJhdGUoSSkpfXdoaWxlKGouY21wKE0pPj0wKTtyZXR1''@;'; put 'put ''cm4gan0sbS5wcm90b3R5cGUuX3JhbmRyYW5nZT1mdW5jdGlvbihNLE8pe3ZhciBJPU8uc3ViKE0pO3JldHVybiBNLmFkZCh0aGlzLl9yYW5kYmVsb3coSSkpfSxtLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKE0sTyxJKXt2YXIgaj1NLmJpdExlbmd0aCgpLEc9b2UubW9udChNKSxEPW5ldyBv''@;'; put 'put ''ZSgxKS50b1JlZChHKTtPfHwoTz1NYXRoLm1heCgxLGovNDh8MCkpO2Zvcih2YXIgVD1NLnN1Ym4oMSksRT0wOyFULnRlc3RuKEUpO0UrKyk7Zm9yKHZhciB6PU0uc2hybihFKSxOPVQudG9SZWQoRyk7Tz4wO08tLSl7dmFyIFo9dGhpcy5fcmFuZHJhbmdlKG5ldyBvZSgyKSxUKTtJJiZJKFop''@;'; put 'put ''O3ZhciBZPVoudG9SZWQoRykucmVkUG93KHopO2lmKDAhPT1ZLmNtcChEKSYmMCE9PVkuY21wKE4pKXtmb3IodmFyIFU9MTtVPEU7VSsrKXtpZigwPT09KFk9WS5yZWRTcXIoKSkuY21wKEQpKXJldHVybiExO2lmKDA9PT1ZLmNtcChOKSlicmVha31pZihVPT09RSlyZXR1cm4hMX19cmV0dXJu''@;'; put 'put ''ITB9LG0ucHJvdG90eXBlLmdldERpdmlzb3I9ZnVuY3Rpb24oTSxPKXt2YXIgST1NLmJpdExlbmd0aCgpLGo9b2UubW9udChNKSxHPW5ldyBvZSgxKS50b1JlZChqKTtPfHwoTz1NYXRoLm1heCgxLEkvNDh8MCkpO2Zvcih2YXIgRD1NLnN1Ym4oMSksVD0wOyFELnRlc3RuKFQpO1QrKyk7Zm9y''@;'; put 'put ''KHZhciBFPU0uc2hybihUKSx6PUQudG9SZWQoaik7Tz4wO08tLSl7dmFyIE49dGhpcy5fcmFuZHJhbmdlKG5ldyBvZSgyKSxEKSxCPU0uZ2NkKE4pO2lmKDAhPT1CLmNtcG4oMSkpcmV0dXJuIEI7dmFyIFo9Ti50b1JlZChqKS5yZWRQb3coRSk7aWYoMCE9PVouY21wKEcpJiYwIT09Wi5jbXAo''@;'; put 'put ''eikpe2Zvcih2YXIgWT0xO1k8VDtZKyspe2lmKDA9PT0oWj1aLnJlZFNxcigpKS5jbXAoRykpcmV0dXJuIFouZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKE0pO2lmKDA9PT1aLmNtcCh6KSlicmVha31pZihZPT09VClyZXR1cm4oWj1aLnJlZFNxcigpKS5mcm9tUmVkKCkuc3VibigxKS5nY2QoTSl9''@;'; put 'put ''fXJldHVybiExfX0sNTcyMjM6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lLHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKFcsYil7aWYoIVcpdGhyb3cgbmV3IEVycm9yKGJ8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gc2UoVyxiKXtXLnN1cGVyXz1iO3ZhciBBPWZ1bmN0''@;'; put 'put ''aW9uKCl7fTtBLnByb3RvdHlwZT1iLnByb3RvdHlwZSxXLnByb3RvdHlwZT1uZXcgQSxXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XfWZ1bmN0aW9uIE0oVyxiLEEpe2lmKE0uaXNCTihXKSlyZXR1cm4gVzt0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhp''@;'; put 'put ''cy5yZWQ9bnVsbCxudWxsIT09VyYmKCgibGUiPT09Ynx8ImJlIj09PWIpJiYoQT1iLGI9MTApLHRoaXMuX2luaXQoV3x8MCxifHwxMCxBfHwiYmUiKSl9dmFyIE87Im9iamVjdCI9PXR5cGVvZiBvZT9vZS5leHBvcnRzPU06eC5CTj1NLE0uQk49TSxNLndvcmRTaXplPTI2O3RyeXtPPXR5cGVv''@;'; put 'put ''ZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LkJ1ZmZlcjwidSI/d2luZG93LkJ1ZmZlcjpSKDY0Njg4KS5CdWZmZXJ9Y2F0Y2h7fWZ1bmN0aW9uIEkoVyxiKXt2YXIgQT1XLmNoYXJDb2RlQXQoYik7cmV0dXJuIEE+PTY1JiZBPD03MD9BLTU1OkE+PTk3JiZBPD0xMDI/QS04NzpBLTQ4JjE1''@;'; put 'put ''fWZ1bmN0aW9uIGooVyxiLEEpe3ZhciBGPUkoVyxBKTtyZXR1cm4gQS0xPj1iJiYoRnw9SShXLEEtMSk8PDQpLEZ9ZnVuY3Rpb24gRyhXLGIsQSxGKXtmb3IodmFyIEg9MCxnPU1hdGgubWluKFcubGVuZ3RoLEEpLEM9YjtDPGc7QysrKXt2YXIgaz1XLmNoYXJDb2RlQXQoQyktNDg7SCo9RixI''@;'; put 'put ''Kz1rPj00OT9rLTQ5KzEwOms+PTE3P2stMTcrMTA6a31yZXR1cm4gSH1NLmlzQk49ZnVuY3Rpb24oYil7cmV0dXJuIGIgaW5zdGFuY2VvZiBNfHxudWxsIT09YiYmIm9iamVjdCI9PXR5cGVvZiBiJiZiLmNvbnN0cnVjdG9yLndvcmRTaXplPT09TS53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShi''@;'; put 'put ''LndvcmRzKX0sTS5tYXg9ZnVuY3Rpb24oYixBKXtyZXR1cm4gYi5jbXAoQSk+MD9iOkF9LE0ubWluPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIGIuY21wKEEpPDA/YjpBfSxNLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihiLEEsRil7aWYoIm51bWJlciI9PXR5cGVvZiBiKXJldHVybiB0aGlzLl9p''@;'; put 'put ''bml0TnVtYmVyKGIsQSxGKTtpZigib2JqZWN0Ij09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXRBcnJheShiLEEsRik7ImhleCI9PT1BJiYoQT0xNiksbShBPT09KDB8QSkmJkE+PTImJkE8PTM2KTt2YXIgSD0wOyItIj09PShiPWIudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikpWzBd''@;'; put 'put ''JiYoSCsrLHRoaXMubmVnYXRpdmU9MSksSDxiLmxlbmd0aCYmKDE2PT09QT90aGlzLl9wYXJzZUhleChiLEgsRik6KHRoaXMuX3BhcnNlQmFzZShiLEEsSCksImxlIj09PUYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxBLEYpKSl9LE0ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1''@;'; put 'put ''bmN0aW9uKGIsQSxGKXtiPDAmJih0aGlzLm5lZ2F0aXZlPTEsYj0tYiksYjw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmYl0sdGhpcy5sZW5ndGg9MSk6Yjw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVu''@;'; put 'put ''Z3RoPTIpOihtKGI8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmYixiLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1GJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksQSxGKX0sTS5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5j''@;'; put 'put ''dGlvbihiLEEsRil7aWYobSgibnVtYmVyIj09dHlwZW9mIGIubGVuZ3RoKSxiLmxlbmd0aDw9MClyZXR1cm4gdGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MSx0aGlzO3RoaXMubGVuZ3RoPU1hdGguY2VpbChiLmxlbmd0aC8zKSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7''@;'; put 'put ''Zm9yKHZhciBIPTA7SDx0aGlzLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT0wO3ZhciBnLEMsaz0wO2lmKCJiZSI9PT1GKWZvcihIPWIubGVuZ3RoLTEsZz0wO0g+PTA7SC09Myl0aGlzLndvcmRzW2ddfD0oQz1iW0hdfGJbSC0xXTw8OHxiW0gtMl08PDE2KTw8ayY2NzEwODg2Myx0aGlzLndv''@;'; put 'put ''cmRzW2crMV09Qz4+PjI2LWsmNjcxMDg4NjMsKGsrPTI0KT49MjYmJihrLT0yNixnKyspO2Vsc2UgaWYoImxlIj09PUYpZm9yKEg9MCxnPTA7SDxiLmxlbmd0aDtIKz0zKXRoaXMud29yZHNbZ118PShDPWJbSF18YltIKzFdPDw4fGJbSCsyXTw8MTYpPDxrJjY3MTA4ODYzLHRoaXMud29yZHNb''@;'; put 'put ''ZysxXT1DPj4+MjYtayY2NzEwODg2Mywoays9MjQpPj0yNiYmKGstPTI2LGcrKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKGIsQSxGKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGIubGVuZ3RoLUEpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5''@;'; put 'put ''KHRoaXMubGVuZ3RoKTtmb3IodmFyIEg9MDtIPHRoaXMubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPTA7dmFyIGssZz0wLEM9MDtpZigiYmUiPT09Rilmb3IoSD1iLmxlbmd0aC0xO0g+PUE7SC09MilrPWooYixBLEgpPDxnLHRoaXMud29yZHNbQ118PTY3MTA4ODYzJmssZz49MTg/KGctPTE4''@;'; put 'put ''LHRoaXMud29yZHNbQys9MV18PWs+Pj4yNik6Zys9ODtlbHNlIGZvcihIPShiLmxlbmd0aC1BKSUyPT0wP0ErMTpBO0g8Yi5sZW5ndGg7SCs9MilrPWooYixBLEgpPDxnLHRoaXMud29yZHNbQ118PTY3MTA4ODYzJmssZz49MTg/KGctPTE4LHRoaXMud29yZHNbQys9MV18PWs+Pj4yNik6Zys9''@;'; put 'put ''ODt0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oYixBLEYpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBIPTAsZz0xO2c8PTY3MTA4ODYzO2cqPUEpSCsrO0gtLSxnPWcvQXwwO2Zvcih2YXIgQz1iLmxlbmd0aC1GLGs9QyVILF89TWF0''@;'; put 'put ''aC5taW4oQyxDLWspK0YscD0wLHc9Rjt3PF87dys9SClwPUcoYix3LHcrSCxBKSx0aGlzLmltdWxuKGcpLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApO2lmKDAhPT1rKXt2YXIgSz0xO2ZvcihwPUcoYix3LGIubGVuZ3RoLEEpLHc9MDt3''@;'; put 'put ''PGs7dysrKUsqPUE7dGhpcy5pbXVsbihLKSx0aGlzLndvcmRzWzBdK3A8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9cDp0aGlzLl9pYWRkbihwKX10aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYil7Yi53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIg''@;'; put 'put ''QT0wO0E8dGhpcy5sZW5ndGg7QSsrKWIud29yZHNbQV09dGhpcy53b3Jkc1tBXTtiLmxlbmd0aD10aGlzLmxlbmd0aCxiLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsYi5yZWQ9dGhpcy5yZWR9LE0ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IE0obnVsbCk7cmV0dXJuIHRo''@;'; put 'put ''aXMuY29weShiKSxifSxNLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8YjspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMu''@;'; put 'put ''d29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LE0ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxNLnBy''@;'; put 'put ''b3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBEPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAw''@;'; put 'put ''MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJd''@;'; put 'put ''LFQ9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sRT1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFl''@;'; put 'put ''NywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0''@;'; put 'put ''M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBOKFcsYixBKXtBLm5lZ2F0aXZlPWIubmVnYXRpdmVeVy5uZWdhdGl2ZTt2YXIgRj1XLmxlbmd0aCtiLmxlbmd0aHwwO0EubGVuZ3RoPUYsRj1GLTF8MDt2YXIgSD0wfFcu''@;'; put 'put ''d29yZHNbMF0sZz0wfGIud29yZHNbMF0sQz1IKmcsXz1DLzY3MTA4ODY0fDA7QS53b3Jkc1swXT02NzEwODg2MyZDO2Zvcih2YXIgcD0xO3A8RjtwKyspe2Zvcih2YXIgdz1fPj4+MjYsSz02NzEwODg2MyZfLHRlPU1hdGgubWluKHAsYi5sZW5ndGgtMSksY2U9TWF0aC5tYXgoMCxwLVcubGVu''@;'; put 'put ''Z3RoKzEpO2NlPD10ZTtjZSsrKXcrPShDPShIPTB8Vy53b3Jkc1twLWNlfDBdKSooZz0wfGIud29yZHNbY2VdKStLKS82NzEwODg2NHwwLEs9NjcxMDg4NjMmQztBLndvcmRzW3BdPTB8SyxfPTB8d31yZXR1cm4gMCE9PV8/QS53b3Jkc1twXT0wfF86QS5sZW5ndGgtLSxBLnN0cmlwKCl9TS5w''@;'; put 'put ''cm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oYixBKXt2YXIgRjtpZihBPTB8QXx8MSwxNj09PShiPWJ8fDEwKXx8ImhleCI9PT1iKXtGPSIiO2Zvcih2YXIgSD0wLGc9MCxDPTA7Qzx0aGlzLmxlbmd0aDtDKyspe3ZhciBrPXRoaXMud29yZHNbQ10sXz0oMTY3NzcyMTUmKGs8PEh8ZykpLnRv''@;'; put 'put ''U3RyaW5nKDE2KTtGPTAhPShnPWs+Pj4yNC1IJjE2Nzc3MjE1KXx8QyE9PXRoaXMubGVuZ3RoLTE/RFs2LV8ubGVuZ3RoXStfK0Y6XytGLChIKz0yKT49MjYmJihILT0yNixDLS0pfWZvcigwIT09ZyYmKEY9Zy50b1N0cmluZygxNikrRik7Ri5sZW5ndGglQSE9MDspRj0iMCIrRjtyZXR1cm4g''@;'; put 'put ''MCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfWlmKGI9PT0oMHxiKSYmYj49MiYmYjw9MzYpe3ZhciBwPVRbYl0sdz1FW2JdO0Y9IiI7dmFyIEs9dGhpcy5jbG9uZSgpO2ZvcihLLm5lZ2F0aXZlPTA7IUsuaXNaZXJvKCk7KXt2YXIgdGU9Sy5tb2RuKHcpLnRvU3RyaW5nKGIpO0Y9KEs9''@;'; put 'put ''Sy5pZGl2bih3KSkuaXNaZXJvKCk/dGUrRjpEW3AtdGUubGVuZ3RoXSt0ZStGfWZvcih0aGlzLmlzWmVybygpJiYoRj0iMCIrRik7Ri5sZW5ndGglQSE9MDspRj0iMCIrRjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihGPSItIitGKSxGfW0oITEsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4g''@;'; put 'put ''MiBhbmQgMzYiKX0sTS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/Yis9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP2IrPTQ1MDM1OTk2MjczNzA0''@;'; put 'put ''OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZtKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMiKSwwIT09dGhpcy5uZWdhdGl2ZT8tYjpifSxNLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmlu''@;'; put 'put ''ZygxNil9LE0ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIG0odHlwZW9mIE88InUiKSx0aGlzLnRvQXJyYXlMaWtlKE8sYixBKX0sTS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGIsQSl9LE0ucHJv''@;'; put 'put ''dG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGIsQSxGKXt2YXIgSD10aGlzLmJ5dGVMZW5ndGgoKSxnPUZ8fE1hdGgubWF4KDEsSCk7bShIPD1nLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbShnPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRo''@;'; put 'put ''aXMuc3RyaXAoKTt2YXIgXyxwLEM9ImxlIj09PUEsaz1uZXcgYihnKSx3PXRoaXMuY2xvbmUoKTtpZihDKXtmb3IocD0wOyF3LmlzWmVybygpO3ArKylfPXcuYW5kbG4oMjU1KSx3Lml1c2hybig4KSxrW3BdPV87Zm9yKDtwPGc7cCsrKWtbcF09MH1lbHNle2ZvcihwPTA7cDxnLUg7cCsrKWtb''@;'; put 'put ''cF09MDtmb3IocD0wOyF3LmlzWmVybygpO3ArKylfPXcuYW5kbG4oMjU1KSx3Lml1c2hybig4KSxrW2ctcC0xXT1ffXJldHVybiBrfSxNLnByb3RvdHlwZS5fY291bnRCaXRzPU1hdGguY2x6MzI/ZnVuY3Rpb24oYil7cmV0dXJuIDMyLU1hdGguY2x6MzIoYil9OmZ1bmN0aW9uKGIpe3ZhciBB''@;'; put 'put ''PWIsRj0wO3JldHVybiBBPj00MDk2JiYoRis9MTMsQT4+Pj0xMyksQT49NjQmJihGKz03LEE+Pj49NyksQT49OCYmKEYrPTQsQT4+Pj00KSxBPj0yJiYoRis9MixBPj4+PTIpLEYrQX0sTS5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKGIpe2lmKDA9PT1iKXJldHVybiAyNjt2YXIgQT1i''@;'; put 'put ''LEY9MDtyZXR1cm4gODE5MSZBfHwoRis9MTMsQT4+Pj0xMyksMTI3JkF8fChGKz03LEE+Pj49NyksMTUmQXx8KEYrPTQsQT4+Pj00KSwzJkF8fChGKz0yLEE+Pj49MiksMSZBfHxGKyssRn0sTS5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5fY291bnRCaXRzKHRo''@;'; put 'put ''aXMud29yZHNbdGhpcy5sZW5ndGgtMV0pO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrQX0sTS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgYj0wLEE9MDtBPHRoaXMubGVuZ3RoO0ErKyl7dmFyIEY9dGhpcy5femVyb0Jp''@;'; put 'put ''dHModGhpcy53b3Jkc1tBXSk7aWYoYis9RiwyNiE9PUYpYnJlYWt9cmV0dXJuIGJ9LE0ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LE0ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihiKXtyZXR1cm4gMCE9PXRo''@;'; put 'put ''aXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihiKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LE0ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRlc3RuKGItMSk/dGhpcy5ub3RuKGIpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LE0ucHJvdG90eXBl''@;'; put 'put ''LmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxNLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sTS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49''@;'; put 'put ''MSksdGhpc30sTS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihiKXtmb3IoO3RoaXMubGVuZ3RoPGIubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBBPTA7QTxiLmxlbmd0aDtBKyspdGhpcy53b3Jkc1tBXT10aGlzLndvcmRzW0FdfGIud29yZHNbQV07cmV0dXJu''@;'; put 'put ''IHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGIpe3JldHVybiBtKCEodGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGIpfSxNLnByb3RvdHlwZS5vcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlv''@;'; put 'put ''cihiKTpiLmNsb25lKCkuaW9yKHRoaXMpfSxNLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGIpOmIuY2xvbmUoKS5pdW9yKHRoaXMpfSxNLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihiKXt2YXIgQTtBPXRo''@;'; put 'put ''aXMubGVuZ3RoPmIubGVuZ3RoP2I6dGhpcztmb3IodmFyIEY9MDtGPEEubGVuZ3RoO0YrKyl0aGlzLndvcmRzW0ZdPXRoaXMud29yZHNbRl0mYi53b3Jkc1tGXTtyZXR1cm4gdGhpcy5sZW5ndGg9QS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGIpe3Jl''@;'; put 'put ''dHVybiBtKCEodGhpcy5uZWdhdGl2ZXxiLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChiKX0sTS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChiKTpiLmNsb25lKCkuaWFuZCh0aGlzKX0sTS5wcm90b3R5cGUudWFu''@;'; put 'put ''ZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGIpOmIuY2xvbmUoKS5pdWFuZCh0aGlzKX0sTS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oYil7dmFyIEEsRjt0aGlzLmxlbmd0aD5iLmxlbmd0aD8oQT10aGlzLEY9Yik6KEE9YixG''@;'; put 'put ''PXRoaXMpO2Zvcih2YXIgSD0wO0g8Ri5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09QS53b3Jkc1tIXV5GLndvcmRzW0hdO2lmKHRoaXMhPT1BKWZvcig7SDxBLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT1BLndvcmRzW0hdO3JldHVybiB0aGlzLmxlbmd0aD1BLmxlbmd0aCx0aGlzLnN0cmlw''@;'; put 'put ''KCl9LE0ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1eG9yKGIpfSxNLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGIpOmIu''@;'; put 'put ''Y2xvbmUoKS5peG9yKHRoaXMpfSxNLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoYik6Yi5jbG9uZSgpLml1eG9yKHRoaXMpfSxNLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10''@;'; put 'put ''eXBlb2YgYiYmYj49MCk7dmFyIEE9MHxNYXRoLmNlaWwoYi8yNiksRj1iJTI2O3RoaXMuX2V4cGFuZChBKSxGPjAmJkEtLTtmb3IodmFyIEg9MDtIPEE7SCsrKXRoaXMud29yZHNbSF09NjcxMDg4NjMmfnRoaXMud29yZHNbSF07cmV0dXJuIEY+MCYmKHRoaXMud29yZHNbSF09fnRoaXMud29y''@;'; put 'put ''ZHNbSF0mNjcxMDg4NjM+PjI2LUYpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUubm90bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKGIpfSxNLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKGIsQSl7bSgibnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBGPWIvMjZ8''@;'; put 'put ''MCxIPWIlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl09QT90aGlzLndvcmRzW0ZdfDE8PEg6dGhpcy53b3Jkc1tGXSZ+KDE8PEgpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbihiKXt2YXIgQSxGLEg7aWYoMCE9PXRoaXMubmVnYXRpdmUm''@;'; put 'put ''JjA9PT1iLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsQT10aGlzLmlzdWIoYiksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gYi5uZWdhdGl2ZT0wLEE9dGhpcy5pc3ViKGIpLGIubmVn''@;'; put 'put ''YXRpdmU9MSxBLl9ub3JtU2lnbigpO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhGPXRoaXMsSD1iKTooRj1iLEg9dGhpcyk7Zm9yKHZhciBnPTAsQz0wO0M8SC5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109NjcxMDg4NjMmKEE9KDB8Ri53b3Jkc1tDXSkrKDB8SC53b3Jkc1tDXSkrZyksZz1BPj4+''@;'; put 'put ''MjY7Zm9yKDswIT09ZyYmQzxGLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT02NzEwODg2MyYoQT0oMHxGLndvcmRzW0NdKStnKSxnPUE+Pj4yNjtpZih0aGlzLmxlbmd0aD1GLmxlbmd0aCwwIT09Zyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1nLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihGIT09''@;'; put 'put ''dGhpcylmb3IoO0M8Ri5sZW5ndGg7QysrKXRoaXMud29yZHNbQ109Ri53b3Jkc1tDXTtyZXR1cm4gdGhpc30sTS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIpe3ZhciBBO3JldHVybiAwIT09Yi5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KGIubmVnYXRpdmU9MCxBPXRoaXMuc3ViKGIp''@;'; put 'put ''LGIubmVnYXRpdmVePTEsQSk6MD09PWIubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsQT1iLnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsQSk6dGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQoYik6Yi5jbG9uZSgpLmlhZGQodGhpcyl9''@;'; put 'put ''LE0ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24oYil7aWYoMCE9PWIubmVnYXRpdmUpe2IubmVnYXRpdmU9MDt2YXIgQT10aGlzLmlhZGQoYik7cmV0dXJuIGIubmVnYXRpdmU9MSxBLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5p''@;'; put 'put ''YWRkKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciBILGcsRj10aGlzLmNtcChiKTtpZigwPT09RilyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7Rj4wPyhIPXRoaXMsZz1iKTooSD1iLGc9dGhpcyk7Zm9yKHZh''@;'; put 'put ''ciBDPTAsaz0wO2s8Zy5sZW5ndGg7aysrKUM9KEE9KDB8SC53b3Jkc1trXSktKDB8Zy53b3Jkc1trXSkrQyk+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmQTtmb3IoOzAhPT1DJiZrPEgubGVuZ3RoO2srKylDPShBPSgwfEgud29yZHNba10pK0MpPj4yNix0aGlzLndvcmRzW2tdPTY3MTA4''@;'; put 'put ''ODYzJkE7aWYoMD09PUMmJms8SC5sZW5ndGgmJkghPT10aGlzKWZvcig7azxILmxlbmd0aDtrKyspdGhpcy53b3Jkc1trXT1ILndvcmRzW2tdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxrKSxIIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgp''@;'; put 'put ''fSxNLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGIpfTt2YXIgQj1mdW5jdGlvbihiLEEsRil7dmFyIF8scCx3LEg9Yi53b3JkcyxnPUEud29yZHMsQz1GLndvcmRzLGs9MCxLPTB8SFswXSx0ZT04MTkxJkssY2U9Sz4+PjEzLGhlPTB8SFsxXSxT''@;'; put 'put ''ZT04MTkxJmhlLExlPWhlPj4+MTMsSGU9MHxIWzJdLHhlPTgxOTEmSGUsRGU9SGU+Pj4xMyxCZT0wfEhbM10sR2U9ODE5MSZCZSxVZT1CZT4+PjEzLHFlPTB8SFs0XSxvdD04MTkxJnFlLEZlPXFlPj4+MTMsd2U9MHxIWzVdLEVlPTgxOTEmd2UsSWU9d2U+Pj4xMyxYZT0wfEhbNl0sdHQ9ODE5''@;'; put 'put ''MSZYZSxaZT1YZT4+PjEzLGN0PTB8SFs3XSxrZT04MTkxJmN0LEFlPWN0Pj4+MTMsamU9MHxIWzhdLGl0PTgxOTEmamUsc3Q9amU+Pj4xMyx4dD0wfEhbOV0sRnQ9ODE5MSZ4dCxPdD14dD4+PjEzLEt0PTB8Z1swXSxibj04MTkxJkt0LEJ0PUt0Pj4+MTMseW49MHxnWzFdLE5uPTgxOTEmeW4s''@;'; put 'put ''bm49eW4+Pj4xMyxHbj0wfGdbMl0sWW49ODE5MSZHbixmdD1Hbj4+PjEzLGRuPTB8Z1szXSxobj04MTkxJmRuLHd0PWRuPj4+MTMsanQ9MHxnWzRdLG10PTgxOTEmanQsSHQ9anQ+Pj4xMyxwbj0wfGdbNV0sbnQ9ODE5MSZwbixFdD1wbj4+PjEzLGVuPTB8Z1s2XSxUdD04MTkxJmVuLHl0PWVu''@;'; put 'put ''Pj4+MTMsJHQ9MHxnWzddLHhuPTgxOTEmJHQsenQ9JHQ+Pj4xMyxfbj0wfGdbOF0sT249ODE5MSZfbixybj1fbj4+PjEzLFBuPTB8Z1s5XSxDbj04MTkxJlBuLFh0PVBuPj4+MTM7Ri5uZWdhdGl2ZT1iLm5lZ2F0aXZlXkEubmVnYXRpdmUsRi5sZW5ndGg9MTk7dmFyIEpuPShrKyhfPU1hdGgu''@;'; put 'put ''aW11bCh0ZSxibikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwodGUsQnQpKStNYXRoLmltdWwoY2UsYm4pfDApKTw8MTMpfDA7az0oKHc9TWF0aC5pbXVsKGNlLEJ0KSkrKHA+Pj4xMyl8MCkrKEpuPj4+MjYpfDAsSm4mPTY3MTA4ODYzLF89TWF0aC5pbXVsKFNlLGJuKSxwPShwPU1hdGgu''@;'; put 'put ''aW11bChTZSxCdCkpK01hdGguaW11bChMZSxibil8MCx3PU1hdGguaW11bChMZSxCdCk7dmFyIHhpPShrKyhfPV8rTWF0aC5pbXVsKHRlLE5uKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsbm4pfDApK01hdGguaW11bChjZSxObil8MCkpPDwxMyl8MDtrPSgodz13K01hdGgu''@;'; put 'put ''aW11bChjZSxubil8MCkrKHA+Pj4xMyl8MCkrKHhpPj4+MjYpfDAseGkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKHhlLGJuKSxwPShwPU1hdGguaW11bCh4ZSxCdCkpK01hdGguaW11bChEZSxibil8MCx3PU1hdGguaW11bChEZSxCdCksXz1fK01hdGguaW11bChTZSxObil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKFNlLG5uKXwwKStNYXRoLmltdWwoTGUsTm4pfDAsdz13K01hdGguaW11bChMZSxubil8MDt2YXIgYW49KGsrKF89XytNYXRoLmltdWwodGUsWW4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxmdCl8MCkrTWF0aC5pbXVsKGNlLFluKXwwKSk8PDEzKXwwO2s9KCh3''@;'; put 'put ''PXcrTWF0aC5pbXVsKGNlLGZ0KXwwKSsocD4+PjEzKXwwKSsoYW4+Pj4yNil8MCxhbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoR2UsYm4pLHA9KHA9TWF0aC5pbXVsKEdlLEJ0KSkrTWF0aC5pbXVsKFVlLGJuKXwwLHc9TWF0aC5pbXVsKFVlLEJ0KSxfPV8rTWF0aC5pbXVsKHhlLE5uKXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoeGUsbm4pfDApK01hdGguaW11bChEZSxObil8MCx3PXcrTWF0aC5pbXVsKERlLG5uKXwwLF89XytNYXRoLmltdWwoU2UsWW4pfDAscD0ocD1wK01hdGguaW11bChTZSxmdCl8MCkrTWF0aC5pbXVsKExlLFluKXwwLHc9dytNYXRoLmltdWwoTGUsZnQpfDA7dmFyIHRu''@;'; put 'put ''PShrKyhfPV8rTWF0aC5pbXVsKHRlLGhuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsd3QpfDApK01hdGguaW11bChjZSxobil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx3dCl8MCkrKHA+Pj4xMyl8MCkrKHRuPj4+MjYpfDAsdG4mPTY3MTA4ODYzLF89TWF0''@;'; put 'put ''aC5pbXVsKG90LGJuKSxwPShwPU1hdGguaW11bChvdCxCdCkpK01hdGguaW11bChGZSxibil8MCx3PU1hdGguaW11bChGZSxCdCksXz1fK01hdGguaW11bChHZSxObil8MCxwPShwPXArTWF0aC5pbXVsKEdlLG5uKXwwKStNYXRoLmltdWwoVWUsTm4pfDAsdz13K01hdGguaW11bChVZSxubil8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKHhlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsZnQpfDApK01hdGguaW11bChEZSxZbil8MCx3PXcrTWF0aC5pbXVsKERlLGZ0KXwwLF89XytNYXRoLmltdWwoU2UsaG4pfDAscD0ocD1wK01hdGguaW11bChTZSx3dCl8MCkrTWF0aC5pbXVsKExlLGhuKXwwLHc9''@;'; put 'put ''dytNYXRoLmltdWwoTGUsd3QpfDA7dmFyIHVpPShrKyhfPV8rTWF0aC5pbXVsKHRlLG10KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsSHQpfDApK01hdGguaW11bChjZSxtdCl8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSxIdCl8MCkrKHA+Pj4xMyl8MCkrKHVp''@;'; put 'put ''Pj4+MjYpfDAsdWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEVlLGJuKSxwPShwPU1hdGguaW11bChFZSxCdCkpK01hdGguaW11bChJZSxibil8MCx3PU1hdGguaW11bChJZSxCdCksXz1fK01hdGguaW11bChvdCxObil8MCxwPShwPXArTWF0aC5pbXVsKG90LG5uKXwwKStNYXRoLmltdWwoRmUs''@;'; put 'put ''Tm4pfDAsdz13K01hdGguaW11bChGZSxubil8MCxfPV8rTWF0aC5pbXVsKEdlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsZnQpfDApK01hdGguaW11bChVZSxZbil8MCx3PXcrTWF0aC5pbXVsKFVlLGZ0KXwwLF89XytNYXRoLmltdWwoeGUsaG4pfDAscD0ocD1wK01hdGguaW11bCh4ZSx3''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKERlLGhuKXwwLHc9dytNYXRoLmltdWwoRGUsd3QpfDAsXz1fK01hdGguaW11bChTZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLEh0KXwwKStNYXRoLmltdWwoTGUsbXQpfDAsdz13K01hdGguaW11bChMZSxIdCl8MDt2YXIgQXI9KGsrKF89XytNYXRoLmltdWwo''@;'; put 'put ''dGUsbnQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxFdCl8MCkrTWF0aC5pbXVsKGNlLG50KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLEV0KXwwKSsocD4+PjEzKXwwKSsoQXI+Pj4yNil8MCxBciY9NjcxMDg4NjMsXz1NYXRoLmltdWwodHQsYm4pLHA9KHA9''@;'; put 'put ''TWF0aC5pbXVsKHR0LEJ0KSkrTWF0aC5pbXVsKFplLGJuKXwwLHc9TWF0aC5pbXVsKFplLEJ0KSxfPV8rTWF0aC5pbXVsKEVlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsbm4pfDApK01hdGguaW11bChJZSxObil8MCx3PXcrTWF0aC5pbXVsKEllLG5uKXwwLF89XytNYXRoLmltdWwob3Qs''@;'; put 'put ''WW4pfDAscD0ocD1wK01hdGguaW11bChvdCxmdCl8MCkrTWF0aC5pbXVsKEZlLFluKXwwLHc9dytNYXRoLmltdWwoRmUsZnQpfDAsXz1fK01hdGguaW11bChHZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHd0KXwwKStNYXRoLmltdWwoVWUsaG4pfDAsdz13K01hdGguaW11bChVZSx3dCl8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKHhlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsSHQpfDApK01hdGguaW11bChEZSxtdCl8MCx3PXcrTWF0aC5pbXVsKERlLEh0KXwwLF89XytNYXRoLmltdWwoU2UsbnQpfDAscD0ocD1wK01hdGguaW11bChTZSxFdCl8MCkrTWF0aC5pbXVsKExlLG50KXwwLHc9''@;'; put 'put ''dytNYXRoLmltdWwoTGUsRXQpfDA7dmFyIGhyPShrKyhfPV8rTWF0aC5pbXVsKHRlLFR0KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUseXQpfDApK01hdGguaW11bChjZSxUdCl8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx5dCl8MCkrKHA+Pj4xMyl8MCkrKGhy''@;'; put 'put ''Pj4+MjYpfDAsaHImPTY3MTA4ODYzLF89TWF0aC5pbXVsKGtlLGJuKSxwPShwPU1hdGguaW11bChrZSxCdCkpK01hdGguaW11bChBZSxibil8MCx3PU1hdGguaW11bChBZSxCdCksXz1fK01hdGguaW11bCh0dCxObil8MCxwPShwPXArTWF0aC5pbXVsKHR0LG5uKXwwKStNYXRoLmltdWwoWmUs''@;'; put 'put ''Tm4pfDAsdz13K01hdGguaW11bChaZSxubil8MCxfPV8rTWF0aC5pbXVsKEVlLFluKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsZnQpfDApK01hdGguaW11bChJZSxZbil8MCx3PXcrTWF0aC5pbXVsKEllLGZ0KXwwLF89XytNYXRoLmltdWwob3QsaG4pfDAscD0ocD1wK01hdGguaW11bChvdCx3''@;'; put 'put ''dCl8MCkrTWF0aC5pbXVsKEZlLGhuKXwwLHc9dytNYXRoLmltdWwoRmUsd3QpfDAsXz1fK01hdGguaW11bChHZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKEdlLEh0KXwwKStNYXRoLmltdWwoVWUsbXQpfDAsdz13K01hdGguaW11bChVZSxIdCl8MCxfPV8rTWF0aC5pbXVsKHhlLG50KXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoeGUsRXQpfDApK01hdGguaW11bChEZSxudCl8MCx3PXcrTWF0aC5pbXVsKERlLEV0KXwwLF89XytNYXRoLmltdWwoU2UsVHQpfDAscD0ocD1wK01hdGguaW11bChTZSx5dCl8MCkrTWF0aC5pbXVsKExlLFR0KXwwLHc9dytNYXRoLmltdWwoTGUseXQpfDA7dmFyIGRp''@;'; put 'put ''PShrKyhfPV8rTWF0aC5pbXVsKHRlLHhuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsenQpfDApK01hdGguaW11bChjZSx4bil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChjZSx6dCl8MCkrKHA+Pj4xMyl8MCkrKGRpPj4+MjYpfDAsZGkmPTY3MTA4ODYzLF89TWF0''@;'; put 'put ''aC5pbXVsKGl0LGJuKSxwPShwPU1hdGguaW11bChpdCxCdCkpK01hdGguaW11bChzdCxibil8MCx3PU1hdGguaW11bChzdCxCdCksXz1fK01hdGguaW11bChrZSxObil8MCxwPShwPXArTWF0aC5pbXVsKGtlLG5uKXwwKStNYXRoLmltdWwoQWUsTm4pfDAsdz13K01hdGguaW11bChBZSxubil8''@;'; put 'put ''MCxfPV8rTWF0aC5pbXVsKHR0LFluKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsZnQpfDApK01hdGguaW11bChaZSxZbil8MCx3PXcrTWF0aC5pbXVsKFplLGZ0KXwwLF89XytNYXRoLmltdWwoRWUsaG4pfDAscD0ocD1wK01hdGguaW11bChFZSx3dCl8MCkrTWF0aC5pbXVsKEllLGhuKXwwLHc9''@;'; put 'put ''dytNYXRoLmltdWwoSWUsd3QpfDAsXz1fK01hdGguaW11bChvdCxtdCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEh0KXwwKStNYXRoLmltdWwoRmUsbXQpfDAsdz13K01hdGguaW11bChGZSxIdCl8MCxfPV8rTWF0aC5pbXVsKEdlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsRXQpfDApK01h''@;'; put 'put ''dGguaW11bChVZSxudCl8MCx3PXcrTWF0aC5pbXVsKFVlLEV0KXwwLF89XytNYXRoLmltdWwoeGUsVHQpfDAscD0ocD1wK01hdGguaW11bCh4ZSx5dCl8MCkrTWF0aC5pbXVsKERlLFR0KXwwLHc9dytNYXRoLmltdWwoRGUseXQpfDAsXz1fK01hdGguaW11bChTZSx4bil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKFNlLHp0KXwwKStNYXRoLmltdWwoTGUseG4pfDAsdz13K01hdGguaW11bChMZSx6dCl8MDt2YXIgZmk9KGsrKF89XytNYXRoLmltdWwodGUsT24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxybil8MCkrTWF0aC5pbXVsKGNlLE9uKXwwKSk8PDEzKXwwO2s9KCh3''@;'; put 'put ''PXcrTWF0aC5pbXVsKGNlLHJuKXwwKSsocD4+PjEzKXwwKSsoZmk+Pj4yNil8MCxmaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsYm4pLHA9KHA9TWF0aC5pbXVsKEZ0LEJ0KSkrTWF0aC5pbXVsKE90LGJuKXwwLHc9TWF0aC5pbXVsKE90LEJ0KSxfPV8rTWF0aC5pbXVsKGl0LE5uKXwwLHA9''@;'; put 'put ''KHA9cCtNYXRoLmltdWwoaXQsbm4pfDApK01hdGguaW11bChzdCxObil8MCx3PXcrTWF0aC5pbXVsKHN0LG5uKXwwLF89XytNYXRoLmltdWwoa2UsWW4pfDAscD0ocD1wK01hdGguaW11bChrZSxmdCl8MCkrTWF0aC5pbXVsKEFlLFluKXwwLHc9dytNYXRoLmltdWwoQWUsZnQpfDAsXz1fK01h''@;'; put 'put ''dGguaW11bCh0dCxobil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHd0KXwwKStNYXRoLmltdWwoWmUsaG4pfDAsdz13K01hdGguaW11bChaZSx3dCl8MCxfPV8rTWF0aC5pbXVsKEVlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsSHQpfDApK01hdGguaW11bChJZSxtdCl8MCx3PXcrTWF0aC5p''@;'; put 'put ''bXVsKEllLEh0KXwwLF89XytNYXRoLmltdWwob3QsbnQpfDAscD0ocD1wK01hdGguaW11bChvdCxFdCl8MCkrTWF0aC5pbXVsKEZlLG50KXwwLHc9dytNYXRoLmltdWwoRmUsRXQpfDAsXz1fK01hdGguaW11bChHZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKEdlLHl0KXwwKStNYXRoLmltdWwo''@;'; put 'put ''VWUsVHQpfDAsdz13K01hdGguaW11bChVZSx5dCl8MCxfPV8rTWF0aC5pbXVsKHhlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUsenQpfDApK01hdGguaW11bChEZSx4bil8MCx3PXcrTWF0aC5pbXVsKERlLHp0KXwwLF89XytNYXRoLmltdWwoU2UsT24pfDAscD0ocD1wK01hdGguaW11bChT''@;'; put 'put ''ZSxybil8MCkrTWF0aC5pbXVsKExlLE9uKXwwLHc9dytNYXRoLmltdWwoTGUscm4pfDA7dmFyIGhvPShrKyhfPV8rTWF0aC5pbXVsKHRlLENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodGUsWHQpfDApK01hdGguaW11bChjZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGgu''@;'; put 'put ''aW11bChjZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGhvPj4+MjYpfDAsaG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LE5uKSxwPShwPU1hdGguaW11bChGdCxubikpK01hdGguaW11bChPdCxObil8MCx3PU1hdGguaW11bChPdCxubiksXz1fK01hdGguaW11bChpdCxZbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKGl0LGZ0KXwwKStNYXRoLmltdWwoc3QsWW4pfDAsdz13K01hdGguaW11bChzdCxmdCl8MCxfPV8rTWF0aC5pbXVsKGtlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usd3QpfDApK01hdGguaW11bChBZSxobil8MCx3PXcrTWF0aC5pbXVsKEFlLHd0KXwwLF89XytNYXRoLmltdWwo''@;'; put 'put ''dHQsbXQpfDAscD0ocD1wK01hdGguaW11bCh0dCxIdCl8MCkrTWF0aC5pbXVsKFplLG10KXwwLHc9dytNYXRoLmltdWwoWmUsSHQpfDAsXz1fK01hdGguaW11bChFZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKEVlLEV0KXwwKStNYXRoLmltdWwoSWUsbnQpfDAsdz13K01hdGguaW11bChJZSxF''@;'; put 'put ''dCl8MCxfPV8rTWF0aC5pbXVsKG90LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwob3QseXQpfDApK01hdGguaW11bChGZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEZlLHl0KXwwLF89XytNYXRoLmltdWwoR2UseG4pfDAscD0ocD1wK01hdGguaW11bChHZSx6dCl8MCkrTWF0aC5pbXVsKFVlLHhuKXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoVWUsenQpfDAsXz1fK01hdGguaW11bCh4ZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKHhlLHJuKXwwKStNYXRoLmltdWwoRGUsT24pfDAsdz13K01hdGguaW11bChEZSxybil8MDt2YXIgYnI9KGsrKF89XytNYXRoLmltdWwoU2UsQ24pfDApfDApKygoODE5MSYocD0o''@;'; put 'put ''cD1wK01hdGguaW11bChTZSxYdCl8MCkrTWF0aC5pbXVsKExlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKExlLFh0KXwwKSsocD4+PjEzKXwwKSsoYnI+Pj4yNil8MCxiciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsWW4pLHA9KHA9TWF0aC5pbXVsKEZ0LGZ0KSkrTWF0aC5p''@;'; put 'put ''bXVsKE90LFluKXwwLHc9TWF0aC5pbXVsKE90LGZ0KSxfPV8rTWF0aC5pbXVsKGl0LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsd3QpfDApK01hdGguaW11bChzdCxobil8MCx3PXcrTWF0aC5pbXVsKHN0LHd0KXwwLF89XytNYXRoLmltdWwoa2UsbXQpfDAscD0ocD1wK01hdGguaW11bChr''@;'; put 'put ''ZSxIdCl8MCkrTWF0aC5pbXVsKEFlLG10KXwwLHc9dytNYXRoLmltdWwoQWUsSHQpfDAsXz1fK01hdGguaW11bCh0dCxudCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LEV0KXwwKStNYXRoLmltdWwoWmUsbnQpfDAsdz13K01hdGguaW11bChaZSxFdCl8MCxfPV8rTWF0aC5pbXVsKEVlLFR0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoRWUseXQpfDApK01hdGguaW11bChJZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEllLHl0KXwwLF89XytNYXRoLmltdWwob3QseG4pfDAscD0ocD1wK01hdGguaW11bChvdCx6dCl8MCkrTWF0aC5pbXVsKEZlLHhuKXwwLHc9dytNYXRoLmltdWwoRmUsenQpfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChHZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHJuKXwwKStNYXRoLmltdWwoVWUsT24pfDAsdz13K01hdGguaW11bChVZSxybil8MDt2YXIgTGk9KGsrKF89XytNYXRoLmltdWwoeGUsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh4ZSxYdCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKERlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKERlLFh0KXwwKSsocD4+PjEzKXwwKSsoTGk+Pj4yNil8MCxMaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsaG4pLHA9KHA9TWF0aC5pbXVsKEZ0LHd0KSkrTWF0aC5pbXVsKE90LGhuKXwwLHc9TWF0aC5pbXVsKE90''@;'; put 'put ''LHd0KSxfPV8rTWF0aC5pbXVsKGl0LG10KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsSHQpfDApK01hdGguaW11bChzdCxtdCl8MCx3PXcrTWF0aC5pbXVsKHN0LEh0KXwwLF89XytNYXRoLmltdWwoa2UsbnQpfDAscD0ocD1wK01hdGguaW11bChrZSxFdCl8MCkrTWF0aC5pbXVsKEFlLG50KXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoQWUsRXQpfDAsXz1fK01hdGguaW11bCh0dCxUdCl8MCxwPShwPXArTWF0aC5pbXVsKHR0LHl0KXwwKStNYXRoLmltdWwoWmUsVHQpfDAsdz13K01hdGguaW11bChaZSx5dCl8MCxfPV8rTWF0aC5pbXVsKEVlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsenQpfDAp''@;'; put 'put ''K01hdGguaW11bChJZSx4bil8MCx3PXcrTWF0aC5pbXVsKEllLHp0KXwwLF89XytNYXRoLmltdWwob3QsT24pfDAscD0ocD1wK01hdGguaW11bChvdCxybil8MCkrTWF0aC5pbXVsKEZlLE9uKXwwLHc9dytNYXRoLmltdWwoRmUscm4pfDA7dmFyIGxvPShrKyhfPV8rTWF0aC5pbXVsKEdlLENu''@;'; put 'put ''KXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwoR2UsWHQpfDApK01hdGguaW11bChVZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGguaW11bChVZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKGxvPj4+MjYpfDAsbG8mPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LG10KSxwPShwPU1hdGgu''@;'; put 'put ''aW11bChGdCxIdCkpK01hdGguaW11bChPdCxtdCl8MCx3PU1hdGguaW11bChPdCxIdCksXz1fK01hdGguaW11bChpdCxudCl8MCxwPShwPXArTWF0aC5pbXVsKGl0LEV0KXwwKStNYXRoLmltdWwoc3QsbnQpfDAsdz13K01hdGguaW11bChzdCxFdCl8MCxfPV8rTWF0aC5pbXVsKGtlLFR0KXww''@;'; put 'put ''LHA9KHA9cCtNYXRoLmltdWwoa2UseXQpfDApK01hdGguaW11bChBZSxUdCl8MCx3PXcrTWF0aC5pbXVsKEFlLHl0KXwwLF89XytNYXRoLmltdWwodHQseG4pfDAscD0ocD1wK01hdGguaW11bCh0dCx6dCl8MCkrTWF0aC5pbXVsKFplLHhuKXwwLHc9dytNYXRoLmltdWwoWmUsenQpfDAsXz1f''@;'; put 'put ''K01hdGguaW11bChFZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHJuKXwwKStNYXRoLmltdWwoSWUsT24pfDAsdz13K01hdGguaW11bChJZSxybil8MDt2YXIgVW49KGsrKF89XytNYXRoLmltdWwob3QsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChvdCxYdCl8MCkrTWF0''@;'; put 'put ''aC5pbXVsKEZlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKEZlLFh0KXwwKSsocD4+PjEzKXwwKSsoVW4+Pj4yNil8MCxVbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsbnQpLHA9KHA9TWF0aC5pbXVsKEZ0LEV0KSkrTWF0aC5pbXVsKE90LG50KXwwLHc9TWF0aC5pbXVsKE90''@;'; put 'put ''LEV0KSxfPV8rTWF0aC5pbXVsKGl0LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQseXQpfDApK01hdGguaW11bChzdCxUdCl8MCx3PXcrTWF0aC5pbXVsKHN0LHl0KXwwLF89XytNYXRoLmltdWwoa2UseG4pfDAscD0ocD1wK01hdGguaW11bChrZSx6dCl8MCkrTWF0aC5pbXVsKEFlLHhuKXww''@;'; put 'put ''LHc9dytNYXRoLmltdWwoQWUsenQpfDAsXz1fK01hdGguaW11bCh0dCxPbil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHJuKXwwKStNYXRoLmltdWwoWmUsT24pfDAsdz13K01hdGguaW11bChaZSxybil8MDt2YXIgWGk9KGsrKF89XytNYXRoLmltdWwoRWUsQ24pfDApfDApKygoODE5MSYocD0o''@;'; put 'put ''cD1wK01hdGguaW11bChFZSxYdCl8MCkrTWF0aC5pbXVsKEllLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKEllLFh0KXwwKSsocD4+PjEzKXwwKSsoWGk+Pj4yNil8MCxYaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsVHQpLHA9KHA9TWF0aC5pbXVsKEZ0LHl0KSkrTWF0aC5p''@;'; put 'put ''bXVsKE90LFR0KXwwLHc9TWF0aC5pbXVsKE90LHl0KSxfPV8rTWF0aC5pbXVsKGl0LHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsenQpfDApK01hdGguaW11bChzdCx4bil8MCx3PXcrTWF0aC5pbXVsKHN0LHp0KXwwLF89XytNYXRoLmltdWwoa2UsT24pfDAscD0ocD1wK01hdGguaW11bChr''@;'; put 'put ''ZSxybil8MCkrTWF0aC5pbXVsKEFlLE9uKXwwLHc9dytNYXRoLmltdWwoQWUscm4pfDA7dmFyIFFpPShrKyhfPV8rTWF0aC5pbXVsKHR0LENuKXwwKXwwKSsoKDgxOTEmKHA9KHA9cCtNYXRoLmltdWwodHQsWHQpfDApK01hdGguaW11bChaZSxDbil8MCkpPDwxMyl8MDtrPSgodz13K01hdGgu''@;'; put 'put ''aW11bChaZSxYdCl8MCkrKHA+Pj4xMyl8MCkrKFFpPj4+MjYpfDAsUWkmPTY3MTA4ODYzLF89TWF0aC5pbXVsKEZ0LHhuKSxwPShwPU1hdGguaW11bChGdCx6dCkpK01hdGguaW11bChPdCx4bil8MCx3PU1hdGguaW11bChPdCx6dCksXz1fK01hdGguaW11bChpdCxPbil8MCxwPShwPXArTWF0''@;'; put 'put ''aC5pbXVsKGl0LHJuKXwwKStNYXRoLmltdWwoc3QsT24pfDAsdz13K01hdGguaW11bChzdCxybil8MDt2YXIgZm89KGsrKF89XytNYXRoLmltdWwoa2UsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChrZSxYdCl8MCkrTWF0aC5pbXVsKEFlLENuKXwwKSk8PDEzKXwwO2s9KCh3''@;'; put 'put ''PXcrTWF0aC5pbXVsKEFlLFh0KXwwKSsocD4+PjEzKXwwKSsoZm8+Pj4yNil8MCxmbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsT24pLHA9KHA9TWF0aC5pbXVsKEZ0LHJuKSkrTWF0aC5pbXVsKE90LE9uKXwwLHc9TWF0aC5pbXVsKE90LHJuKTt2YXIgdm89KGsrKF89XytNYXRoLmltdWwo''@;'; put 'put ''aXQsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bChpdCxYdCl8MCkrTWF0aC5pbXVsKHN0LENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKHN0LFh0KXwwKSsocD4+PjEzKXwwKSsodm8+Pj4yNil8MCx2byY9NjcxMDg4NjM7dmFyIFJyPShrKyhfPU1hdGguaW11bChG''@;'; put 'put ''dCxDbikpfDApKygoODE5MSYocD0ocD1NYXRoLmltdWwoRnQsWHQpKStNYXRoLmltdWwoT3QsQ24pfDApKTw8MTMpfDA7cmV0dXJuIGs9KCh3PU1hdGguaW11bChPdCxYdCkpKyhwPj4+MTMpfDApKyhScj4+PjI2KXwwLFJyJj02NzEwODg2MyxDWzBdPUpuLENbMV09eGksQ1syXT1hbixDWzNd''@;'; put 'put ''PXRuLENbNF09dWksQ1s1XT1BcixDWzZdPWhyLENbN109ZGksQ1s4XT1maSxDWzldPWhvLENbMTBdPWJyLENbMTFdPUxpLENbMTJdPWxvLENbMTNdPVVuLENbMTRdPVhpLENbMTVdPVFpLENbMTZdPWZvLENbMTddPXZvLENbMThdPVJyLDAhPT1rJiYoQ1sxOV09ayxGLmxlbmd0aCsrKSxGfTtm''@;'; put 'put ''dW5jdGlvbiBZKFcsYixBKXtyZXR1cm4obmV3IFUpLm11bHAoVyxiLEEpfWZ1bmN0aW9uIFUoVyxiKXt0aGlzLng9Vyx0aGlzLnk9Yn1NYXRoLmltdWx8fChCPU4pLE0ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGIsQSl7dmFyIEYsSD10aGlzLmxlbmd0aCtiLmxlbmd0aDtyZXR1cm4gRj0x''@;'; put 'put ''MD09PXRoaXMubGVuZ3RoJiYxMD09PWIubGVuZ3RoP0IodGhpcyxiLEEpOkg8NjM/Tih0aGlzLGIsQSk6SDwxMDI0P2Z1bmN0aW9uIFooVyxiLEEpe0EubmVnYXRpdmU9Yi5uZWdhdGl2ZV5XLm5lZ2F0aXZlLEEubGVuZ3RoPVcubGVuZ3RoK2IubGVuZ3RoO2Zvcih2YXIgRj0wLEg9MCxnPTA7''@;'; put 'put ''ZzxBLmxlbmd0aC0xO2crKyl7dmFyIEM9SDtIPTA7Zm9yKHZhciBrPTY3MTA4ODYzJkYsXz1NYXRoLm1pbihnLGIubGVuZ3RoLTEpLHA9TWF0aC5tYXgoMCxnLVcubGVuZ3RoKzEpO3A8PV87cCsrKXt2YXIgY2U9KDB8Vy53b3Jkc1tnLXBdKSooMHxiLndvcmRzW3BdKSxoZT02NzEwODg2MyZj''@;'; put 'put ''ZTtrPTY3MTA4ODYzJihoZT1oZStrfDApLEgrPShDPShDPUMrKGNlLzY3MTA4ODY0fDApfDApKyhoZT4+PjI2KXwwKT4+PjI2LEMmPTY3MTA4ODYzfUEud29yZHNbZ109ayxGPUMsQz1IfXJldHVybiAwIT09Rj9BLndvcmRzW2ddPUY6QS5sZW5ndGgtLSxBLnN0cmlwKCl9KHRoaXMsYixBKTpZ''@;'; put 'put ''KHRoaXMsYixBKSxGfSxVLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKGIpe2Zvcih2YXIgQT1uZXcgQXJyYXkoYiksRj1NLnByb3RvdHlwZS5fY291bnRCaXRzKGIpLTEsSD0wO0g8YjtIKyspQVtIXT10aGlzLnJldkJpbihILEYsYik7cmV0dXJuIEF9LFUucHJvdG90eXBlLnJldkJpbj1m''@;'; put 'put ''dW5jdGlvbihiLEEsRil7aWYoMD09PWJ8fGI9PT1GLTEpcmV0dXJuIGI7Zm9yKHZhciBIPTAsZz0wO2c8QTtnKyspSHw9KDEmYik8PEEtZy0xLGI+Pj0xO3JldHVybiBIfSxVLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKGIsQSxGLEgsZyxDKXtmb3IodmFyIGs9MDtrPEM7aysrKUhba109''@;'; put 'put ''QVtiW2tdXSxnW2tdPUZbYltrXV19LFUucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihiLEEsRixILGcsQyl7dGhpcy5wZXJtdXRlKEMsYixBLEYsSCxnKTtmb3IodmFyIGs9MTtrPGc7azw8PTEpZm9yKHZhciBfPWs8PDEscD1NYXRoLmNvcygyKk1hdGguUEkvXyksdz1NYXRoLnNpbigy''@;'; put 'put ''Kk1hdGguUEkvXyksSz0wO0s8ZztLKz1fKWZvcih2YXIgdGU9cCxjZT13LGhlPTA7aGU8aztoZSsrKXt2YXIgU2U9RltLK2hlXSxMZT1IW0sraGVdLEhlPUZbSytoZStrXSx4ZT1IW0sraGUra10sRGU9dGUqSGUtY2UqeGU7eGU9dGUqeGUrY2UqSGUsRltLK2hlXT1TZSsoSGU9RGUpLEhbSyto''@;'; put 'put ''ZV09TGUreGUsRltLK2hlK2tdPVNlLUhlLEhbSytoZStrXT1MZS14ZSxoZSE9PV8mJihEZT1wKnRlLXcqY2UsY2U9cCpjZSt3KnRlLHRlPURlKX19LFUucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKGIsQSl7dmFyIEY9MXxNYXRoLm1heChBLGIpLEg9MSZGLGc9MDtmb3IoRj1GLzJ8''@;'; put 'put ''MDtGO0Y+Pj49MSlnKys7cmV0dXJuIDE8PGcrMStIfSxVLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24oYixBLEYpe2lmKCEoRjw9MSkpZm9yKHZhciBIPTA7SDxGLzI7SCsrKXt2YXIgZz1iW0hdO2JbSF09YltGLUgtMV0sYltGLUgtMV09ZyxnPUFbSF0sQVtIXT0tQVtGLUgtMV0sQVtG''@;'; put 'put ''LUgtMV09LWd9fSxVLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24oYixBKXtmb3IodmFyIEY9MCxIPTA7SDxBLzI7SCsrKXt2YXIgZz04MTkyKk1hdGgucm91bmQoYlsyKkgrMV0vQSkrTWF0aC5yb3VuZChiWzIqSF0vQSkrRjtiW0hdPTY3MTA4ODYzJmcsRj1nPDY3MTA4ODY0PzA6''@;'; put 'put ''Zy82NzEwODg2NHwwfXJldHVybiBifSxVLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKGIsQSxGLEgpe2Zvcih2YXIgZz0wLEM9MDtDPEE7QysrKUZbMipDXT04MTkxJihnKz0wfGJbQ10pLEZbMipDKzFdPTgxOTEmKGc+Pj49MTMpLGc+Pj49MTM7Zm9yKEM9MipBO0M8SDsrK0MpRltD''@;'; put 'put ''XT0wO20oMD09PWcpLG0oISgtODE5MiZnKSl9LFUucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24oYil7Zm9yKHZhciBBPW5ldyBBcnJheShiKSxGPTA7RjxiO0YrKylBW0ZdPTA7cmV0dXJuIEF9LFUucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPTIqdGhpcy5ndWVzc0xlbjEz''@;'; put 'put ''YihiLmxlbmd0aCxBLmxlbmd0aCksZz10aGlzLm1ha2VSQlQoSCksQz10aGlzLnN0dWIoSCksaz1uZXcgQXJyYXkoSCksXz1uZXcgQXJyYXkoSCkscD1uZXcgQXJyYXkoSCksdz1uZXcgQXJyYXkoSCksSz1uZXcgQXJyYXkoSCksdGU9bmV3IEFycmF5KEgpLGNlPUYud29yZHM7Y2UubGVuZ3Ro''@;'; put 'put ''PUgsdGhpcy5jb252ZXJ0MTNiKGIud29yZHMsYi5sZW5ndGgsayxIKSx0aGlzLmNvbnZlcnQxM2IoQS53b3JkcyxBLmxlbmd0aCx3LEgpLHRoaXMudHJhbnNmb3JtKGssQyxfLHAsSCxnKSx0aGlzLnRyYW5zZm9ybSh3LEMsSyx0ZSxILGcpO2Zvcih2YXIgaGU9MDtoZTxIO2hlKyspe3ZhciBT''@;'; put 'put ''ZT1fW2hlXSpLW2hlXS1wW2hlXSp0ZVtoZV07cFtoZV09X1toZV0qdGVbaGVdK3BbaGVdKktbaGVdLF9baGVdPVNlfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShfLHAsSCksdGhpcy50cmFuc2Zvcm0oXyxwLGNlLEMsSCxnKSx0aGlzLmNvbmp1Z2F0ZShjZSxDLEgpLHRoaXMubm9ybWFsaXplMTNi''@;'; put 'put ''KGNlLEgpLEYubmVnYXRpdmU9Yi5uZWdhdGl2ZV5BLm5lZ2F0aXZlLEYubGVuZ3RoPWIubGVuZ3RoK0EubGVuZ3RoLEYuc3RyaXAoKX0sTS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIpe3ZhciBBPW5ldyBNKG51bGwpO3JldHVybiBBLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxl''@;'; put 'put ''bmd0aCksdGhpcy5tdWxUbyhiLEEpfSxNLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKGIpe3ZhciBBPW5ldyBNKG51bGwpO3JldHVybiBBLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtiLmxlbmd0aCksWSh0aGlzLGIsQSl9LE0ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IHRoaXMuY2xvbmUoKS5tdWxUbyhiLHRoaXMpfSxNLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiksbShiPDY3MTA4ODY0KTtmb3IodmFyIEE9MCxGPTA7Rjx0aGlzLmxlbmd0aDtGKyspe3ZhciBIPSgwfHRoaXMud29yZHNbRl0pKmIsZz0oNjcxMDg4''@;'; put 'put ''NjMmSCkrKDY3MTA4ODYzJkEpO0E+Pj0yNixBKz1ILzY3MTA4ODY0fDAsQSs9Zz4+PjI2LHRoaXMud29yZHNbRl09NjcxMDg4NjMmZ31yZXR1cm4gMCE9PUEmJih0aGlzLndvcmRzW0ZdPUEsdGhpcy5sZW5ndGgrKyksdGhpc30sTS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihiKXtyZXR1cm4g''@;'; put 'put ''dGhpcy5jbG9uZSgpLmltdWxuKGIpfSxNLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LE0ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LE0ucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiKXt2YXIg''@;'; put 'put ''QT1mdW5jdGlvbiB6KFcpe2Zvcih2YXIgYj1uZXcgQXJyYXkoVy5iaXRMZW5ndGgoKSksQT0wO0E8Yi5sZW5ndGg7QSsrKXt2YXIgSD1BJTI2O2JbQV09KFcud29yZHNbQS8yNnwwXSYxPDxIKT4+Pkh9cmV0dXJuIGJ9KGIpO2lmKDA9PT1BLmxlbmd0aClyZXR1cm4gbmV3IE0oMSk7Zm9yKHZh''@;'; put 'put ''ciBGPXRoaXMsSD0wO0g8QS5sZW5ndGgmJjA9PT1BW0hdO0grKyxGPUYuc3FyKCkpO2lmKCsrSDxBLmxlbmd0aClmb3IodmFyIGc9Ri5zcXIoKTtIPEEubGVuZ3RoO0grKyxnPWcuc3FyKCkpMCE9PUFbSF0mJihGPUYubXVsKGcpKTtyZXR1cm4gRn0sTS5wcm90b3R5cGUuaXVzaGxuPWZ1bmN0''@;'; put 'put ''aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgZyxBPWIlMjYsRj0oYi1BKS8yNixIPTY3MTA4ODYzPj4+MjYtQTw8MjYtQTtpZigwIT09QSl7dmFyIEM9MDtmb3IoZz0wO2c8dGhpcy5sZW5ndGg7ZysrKXt2YXIgaz10aGlzLndvcmRzW2ddJkg7dGhpcy53b3Jkc1tnXT0o''@;'; put 'put ''MHx0aGlzLndvcmRzW2ddKS1rPDxBfEMsQz1rPj4+MjYtQX1DJiYodGhpcy53b3Jkc1tnXT1DLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1GKXtmb3IoZz10aGlzLmxlbmd0aC0xO2c+PTA7Zy0tKXRoaXMud29yZHNbZytGXT10aGlzLndvcmRzW2ddO2ZvcihnPTA7ZzxGO2crKyl0aGlzLndvcmRz''@;'; put 'put ''W2ddPTA7dGhpcy5sZW5ndGgrPUZ9cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGIpfSxNLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oYixBLEYpe3ZhciBIO20oIm51bWJl''@;'; put 'put ''ciI9PXR5cGVvZiBiJiZiPj0wKSxIPUE/KEEtQSUyNikvMjY6MDt2YXIgZz1iJTI2LEM9TWF0aC5taW4oKGItZykvMjYsdGhpcy5sZW5ndGgpLGs9NjcxMDg4NjNeNjcxMDg4NjM+Pj5nPDxnLF89RjtpZihILT1DLEg9TWF0aC5tYXgoMCxIKSxfKXtmb3IodmFyIHA9MDtwPEM7cCsrKV8ud29y''@;'; put 'put ''ZHNbcF09dGhpcy53b3Jkc1twXTtfLmxlbmd0aD1DfWlmKDAhPT1DKWlmKHRoaXMubGVuZ3RoPkMpZm9yKHRoaXMubGVuZ3RoLT1DLHA9MDtwPHRoaXMubGVuZ3RoO3ArKyl0aGlzLndvcmRzW3BdPXRoaXMud29yZHNbcCtDXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3Zh''@;'; put 'put ''ciB3PTA7Zm9yKHA9dGhpcy5sZW5ndGgtMTtwPj0wJiYoMCE9PXd8fHA+PUgpO3AtLSl7dmFyIEs9MHx0aGlzLndvcmRzW3BdO3RoaXMud29yZHNbcF09dzw8MjYtZ3xLPj4+Zyx3PUsma31yZXR1cm4gXyYmMCE9PXcmJihfLndvcmRzW18ubGVuZ3RoKytdPXcpLDA9PT10aGlzLmxlbmd0aCYm''@;'; put 'put ''KHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKGIsQSxGKXtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4oYixBLEYpfSxNLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0''@;'; put 'put ''aGlzLmNsb25lKCkuaXNobG4oYil9LE0ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGIpfSxNLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYil9LE0ucHJvdG90eXBlLnVzaHJuPWZ1bmN0''@;'; put 'put ''aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGIpfSxNLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEE9YiUyNixGPShiLUEpLzI2O3JldHVybiEodGhpcy5sZW5ndGg8PUZ8fCEodGhpcy53b3Jkc1tGXSYxPDxBKSl9''@;'; put 'put ''LE0ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbihiKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEE9YiUyNixGPShiLUEpLzI2O3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9''@;'; put 'put ''Rj90aGlzOigwIT09QSYmRisrLHRoaXMubGVuZ3RoPU1hdGgubWluKEYsdGhpcy5sZW5ndGgpLDAhPT1BJiYodGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5BPDxBKSx0aGlzLnN0cmlwKCkpfSxNLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbihiKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiKX0sTS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIG0oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpLGI8MD90aGlzLmlzdWJuKC1iKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29y''@;'; put 'put ''ZHNbMF0pPGI/KHRoaXMud29yZHNbMF09Yi0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihiKX0sTS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGIp''@;'; put 'put ''e3RoaXMud29yZHNbMF0rPWI7Zm9yKHZhciBBPTA7QTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tBXT49NjcxMDg4NjQ7QSsrKXRoaXMud29yZHNbQV0tPTY3MTA4ODY0LEE9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbQSsxXT0xOnRoaXMud29yZHNbQSsxXSsrO3JldHVybiB0aGlzLmxl''@;'; put 'put ''bmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxBKzEpLHRoaXN9LE0ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGIpe2lmKG0oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpLGI8MClyZXR1cm4gdGhpcy5pYWRkbigtYik7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMu''@;'; put 'put ''bmVnYXRpdmU9MCx0aGlzLmlhZGRuKGIpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPWIsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIEE9MDtBPHRo''@;'; put 'put ''aXMubGVuZ3RoJiZ0aGlzLndvcmRzW0FdPDA7QSsrKXRoaXMud29yZHNbQV0rPTY3MTA4ODY0LHRoaXMud29yZHNbQSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4oYil9LE0ucHJvdG90eXBl''@;'; put 'put ''LnN1Ym49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihiKX0sTS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sTS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LE0ucHJv''@;'; put 'put ''dG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbihiLEEsRil7dmFyIGc7dGhpcy5fZXhwYW5kKGIubGVuZ3RoK0YpO3ZhciBDLGs9MDtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKXtDPSgwfHRoaXMud29yZHNbZytGXSkrazt2YXIgXz0oMHxiLndvcmRzW2ddKSpBO2s9KChDLT02NzEwODg2MyZf''@;'; put 'put ''KT4+MjYpLShfLzY3MTA4ODY0fDApLHRoaXMud29yZHNbZytGXT02NzEwODg2MyZDfWZvcig7Zzx0aGlzLmxlbmd0aC1GO2crKylrPShDPSgwfHRoaXMud29yZHNbZytGXSkrayk+PjI2LHRoaXMud29yZHNbZytGXT02NzEwODg2MyZDO2lmKDA9PT1rKXJldHVybiB0aGlzLnN0cmlwKCk7Zm9y''@;'; put 'put ''KG0oLTE9PT1rKSxrPTAsZz0wO2c8dGhpcy5sZW5ndGg7ZysrKWs9KEM9LSgwfHRoaXMud29yZHNbZ10pK2spPj4yNix0aGlzLndvcmRzW2ddPTY3MTA4ODYzJkM7cmV0dXJuIHRoaXMubmVnYXRpdmU9MSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uKGIsQSl7''@;'; put 'put ''dmFyIEYsSD10aGlzLmNsb25lKCksZz1iLEM9MHxnLndvcmRzW2cubGVuZ3RoLTFdOzAhPShGPTI2LXRoaXMuX2NvdW50Qml0cyhDKSkmJihnPWcudXNobG4oRiksSC5pdXNobG4oRiksQz0wfGcud29yZHNbZy5sZW5ndGgtMV0pO3ZhciBwLF89SC5sZW5ndGgtZy5sZW5ndGg7aWYoIm1vZCIh''@;'; put 'put ''PT1BKXsocD1uZXcgTShudWxsKSkubGVuZ3RoPV8rMSxwLndvcmRzPW5ldyBBcnJheShwLmxlbmd0aCk7Zm9yKHZhciB3PTA7dzxwLmxlbmd0aDt3KyspcC53b3Jkc1t3XT0wfXZhciBLPUguY2xvbmUoKS5faXNobG5zdWJtdWwoZywxLF8pOzA9PT1LLm5lZ2F0aXZlJiYoSD1LLHAmJihwLndv''@;'; put 'put ''cmRzW19dPTEpKTtmb3IodmFyIHRlPV8tMTt0ZT49MDt0ZS0tKXt2YXIgY2U9NjcxMDg4NjQqKDB8SC53b3Jkc1tnLmxlbmd0aCt0ZV0pKygwfEgud29yZHNbZy5sZW5ndGgrdGUtMV0pO2ZvcihjZT1NYXRoLm1pbihjZS9DfDAsNjcxMDg4NjMpLEguX2lzaGxuc3VibXVsKGcsY2UsdGUpOzAh''@;'; put 'put ''PT1ILm5lZ2F0aXZlOyljZS0tLEgubmVnYXRpdmU9MCxILl9pc2hsbnN1Ym11bChnLDEsdGUpLEguaXNaZXJvKCl8fChILm5lZ2F0aXZlXj0xKTtwJiYocC53b3Jkc1t0ZV09Y2UpfXJldHVybiBwJiZwLnN0cmlwKCksSC5zdHJpcCgpLCJkaXYiIT09QSYmMCE9PUYmJkguaXVzaHJuKEYpLHtk''@;'; put 'put ''aXY6cHx8bnVsbCxtb2Q6SH19LE0ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihiLEEsRil7cmV0dXJuIG0oIWIuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgTSgwKSxtb2Q6bmV3IE0oMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZT8oQz10aGlzLm5lZygp''@;'; put 'put ''LmRpdm1vZChiLEEpLCJtb2QiIT09QSYmKEg9Qy5kaXYubmVnKCkpLCJkaXYiIT09QSYmKGc9Qy5tb2QubmVnKCksRiYmMCE9PWcubmVnYXRpdmUmJmcuaWFkZChiKSkse2RpdjpILG1vZDpnfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlPyhDPXRoaXMuZGl2bW9kKGIubmVn''@;'; put 'put ''KCksQSksIm1vZCIhPT1BJiYoSD1DLmRpdi5uZWcoKSkse2RpdjpILG1vZDpDLm1vZH0pOnRoaXMubmVnYXRpdmUmYi5uZWdhdGl2ZT8oQz10aGlzLm5lZygpLmRpdm1vZChiLm5lZygpLEEpLCJkaXYiIT09QSYmKGc9Qy5tb2QubmVnKCksRiYmMCE9PWcubmVnYXRpdmUmJmcuaXN1YihiKSks''@;'; put 'put ''e2RpdjpDLmRpdixtb2Q6Z30pOmIubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChiKTwwP3tkaXY6bmV3IE0oMCksbW9kOnRoaXN9OjE9PT1iLmxlbmd0aD8iZGl2Ij09PUE/e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09QT97ZGl2Om51bGwsbW9kOm5l''@;'; put 'put ''dyBNKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGIud29yZHNbMF0pLG1vZDpuZXcgTSh0aGlzLm1vZG4oYi53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGIsQSk7dmFyIEgsZyxDfSxNLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9k''@;'; put 'put ''KGIsImRpdiIsITEpLmRpdn0sTS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRpdm1vZChiLCJtb2QiLCExKS5tb2R9LE0ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITApLm1vZH0sTS5wcm90b3R5cGUuZGl2Um91''@;'; put 'put ''bmQ9ZnVuY3Rpb24oYil7dmFyIEE9dGhpcy5kaXZtb2QoYik7aWYoQS5tb2QuaXNaZXJvKCkpcmV0dXJuIEEuZGl2O3ZhciBGPTAhPT1BLmRpdi5uZWdhdGl2ZT9BLm1vZC5pc3ViKGIpOkEubW9kLEg9Yi51c2hybigxKSxnPWIuYW5kbG4oMSksQz1GLmNtcChIKTtyZXR1cm4gQzwwfHwxPT09''@;'; put 'put ''ZyYmMD09PUM/QS5kaXY6MCE9PUEuZGl2Lm5lZ2F0aXZlP0EuZGl2LmlzdWJuKDEpOkEuZGl2LmlhZGRuKDEpfSxNLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGIpe20oYjw9NjcxMDg4NjMpO2Zvcih2YXIgQT0oMTw8MjYpJWIsRj0wLEg9dGhpcy5sZW5ndGgtMTtIPj0wO0gtLSlGPShBKkYr''@;'; put 'put ''KDB8dGhpcy53b3Jkc1tIXSkpJWI7cmV0dXJuIEZ9LE0ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGIpe20oYjw9NjcxMDg4NjMpO2Zvcih2YXIgQT0wLEY9dGhpcy5sZW5ndGgtMTtGPj0wO0YtLSl7dmFyIEg9KDB8dGhpcy53b3Jkc1tGXSkrNjcxMDg4NjQqQTt0aGlzLndvcmRzW0ZdPUgv''@;'; put 'put ''YnwwLEE9SCVifXJldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihiKX0sTS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihiKXttKDA9PT1iLm5lZ2F0aXZlKSxtKCFiLmlzWmVybygpKTt2YXIgQT10aGlzLEY9''@;'; put 'put ''Yi5jbG9uZSgpO0E9MCE9PUEubmVnYXRpdmU/QS51bW9kKGIpOkEuY2xvbmUoKTtmb3IodmFyIEg9bmV3IE0oMSksZz1uZXcgTSgwKSxDPW5ldyBNKDApLGs9bmV3IE0oMSksXz0wO0EuaXNFdmVuKCkmJkYuaXNFdmVuKCk7KUEuaXVzaHJuKDEpLEYuaXVzaHJuKDEpLCsrXztmb3IodmFyIHA9''@;'; put 'put ''Ri5jbG9uZSgpLHc9QS5jbG9uZSgpOyFBLmlzWmVybygpOyl7Zm9yKHZhciBLPTAsdGU9MTshKEEud29yZHNbMF0mdGUpJiZLPDI2OysrSyx0ZTw8PTEpO2lmKEs+MClmb3IoQS5pdXNocm4oSyk7Sy0tID4wOykoSC5pc09kZCgpfHxnLmlzT2RkKCkpJiYoSC5pYWRkKHApLGcuaXN1Yih3KSks''@;'; put 'put ''SC5pdXNocm4oMSksZy5pdXNocm4oMSk7Zm9yKHZhciBjZT0wLGhlPTE7IShGLndvcmRzWzBdJmhlKSYmY2U8MjY7KytjZSxoZTw8PTEpO2lmKGNlPjApZm9yKEYuaXVzaHJuKGNlKTtjZS0tID4wOykoQy5pc09kZCgpfHxrLmlzT2RkKCkpJiYoQy5pYWRkKHApLGsuaXN1Yih3KSksQy5pdXNo''@;'; put 'put ''cm4oMSksay5pdXNocm4oMSk7QS5jbXAoRik+PTA/KEEuaXN1YihGKSxILmlzdWIoQyksZy5pc3ViKGspKTooRi5pc3ViKEEpLEMuaXN1YihIKSxrLmlzdWIoZykpfXJldHVybnthOkMsYjprLGdjZDpGLml1c2hsbihfKX19LE0ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihiKXttKDA9PT1i''@;'; put 'put ''Lm5lZ2F0aXZlKSxtKCFiLmlzWmVybygpKTt2YXIgSyxBPXRoaXMsRj1iLmNsb25lKCk7QT0wIT09QS5uZWdhdGl2ZT9BLnVtb2QoYik6QS5jbG9uZSgpO2Zvcih2YXIgSD1uZXcgTSgxKSxnPW5ldyBNKDApLEM9Ri5jbG9uZSgpO0EuY21wbigxKT4wJiZGLmNtcG4oMSk+MDspe2Zvcih2YXIg''@;'; put 'put ''az0wLF89MTshKEEud29yZHNbMF0mXykmJms8MjY7KytrLF88PD0xKTtpZihrPjApZm9yKEEuaXVzaHJuKGspO2stLSA+MDspSC5pc09kZCgpJiZILmlhZGQoQyksSC5pdXNocm4oMSk7Zm9yKHZhciBwPTAsdz0xOyEoRi53b3Jkc1swXSZ3KSYmcDwyNjsrK3Asdzw8PTEpO2lmKHA+MClmb3Io''@;'; put 'put ''Ri5pdXNocm4ocCk7cC0tID4wOylnLmlzT2RkKCkmJmcuaWFkZChDKSxnLml1c2hybigxKTtBLmNtcChGKT49MD8oQS5pc3ViKEYpLEguaXN1YihnKSk6KEYuaXN1YihBKSxnLmlzdWIoSCkpfXJldHVybihLPTA9PT1BLmNtcG4oMSk/SDpnKS5jbXBuKDApPDAmJksuaWFkZChiKSxLfSxNLnBy''@;'; put 'put ''b3RvdHlwZS5nY2Q9ZnVuY3Rpb24oYil7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gYi5hYnMoKTtpZihiLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBBPXRoaXMuY2xvbmUoKSxGPWIuY2xvbmUoKTtBLm5lZ2F0aXZlPTAsRi5uZWdhdGl2ZT0wO2Zvcih2YXIgSD0wO0EuaXNFdmVu''@;'; put 'put ''KCkmJkYuaXNFdmVuKCk7SCsrKUEuaXVzaHJuKDEpLEYuaXVzaHJuKDEpO2Zvcig7Oyl7Zm9yKDtBLmlzRXZlbigpOylBLml1c2hybigxKTtmb3IoO0YuaXNFdmVuKCk7KUYuaXVzaHJuKDEpO3ZhciBnPUEuY21wKEYpO2lmKGc8MCl7dmFyIEM9QTtBPUYsRj1DfWVsc2UgaWYoMD09PWd8fDA9''@;'; put 'put ''PT1GLmNtcG4oMSkpYnJlYWs7QS5pc3ViKEYpfXJldHVybiBGLml1c2hsbihIKX0sTS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lZ2NkKGIpLmEudW1vZChiKX0sTS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuISgxJnRoaXMud29yZHNbMF0pfSxN''@;'; put 'put ''LnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiEoMSZ+dGhpcy53b3Jkc1swXSl9LE0ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLndvcmRzWzBdJmJ9LE0ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiKTt2YXIg''@;'; put 'put ''QT1iJTI2LEY9KGItQSkvMjYsSD0xPDxBO2lmKHRoaXMubGVuZ3RoPD1GKXJldHVybiB0aGlzLl9leHBhbmQoRisxKSx0aGlzLndvcmRzW0ZdfD1ILHRoaXM7Zm9yKHZhciBnPUgsQz1GOzAhPT1nJiZDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9MHx0aGlzLndvcmRzW0NdO2c9KGsrPWcpPj4+''@;'; put 'put ''MjYsdGhpcy53b3Jkc1tDXT1rJj02NzEwODg2M31yZXR1cm4gMCE9PWcmJih0aGlzLndvcmRzW0NdPWcsdGhpcy5sZW5ndGgrKyksdGhpc30sTS5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LE0ucHJvdG90eXBl''@;'; put 'put ''LmNtcG49ZnVuY3Rpb24oYil7dmFyIEYsQT1iPDA7aWYoMCE9PXRoaXMubmVnYXRpdmUmJiFBKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiZBKXJldHVybiAxO2lmKHRoaXMuc3RyaXAoKSx0aGlzLmxlbmd0aD4xKUY9MTtlbHNle0EmJihiPS1iKSxtKGI8PTY3MTA4ODYzLCJOdW1i''@;'; put 'put ''ZXIgaXMgdG9vIGJpZyIpO3ZhciBIPTB8dGhpcy53b3Jkc1swXTtGPUg9PT1iPzA6SDxiPy0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUY6Rn0sTS5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKGIpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09Yi5uZWdhdGl2ZSlyZXR1cm4tMTtp''@;'; put 'put ''ZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmUpcmV0dXJuIDE7dmFyIEE9dGhpcy51Y21wKGIpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1BOkF9LE0ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24oYil7aWYodGhpcy5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuIDE7aWYodGhp''@;'; put 'put ''cy5sZW5ndGg8Yi5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBBPTAsRj10aGlzLmxlbmd0aC0xO0Y+PTA7Ri0tKXt2YXIgSD0wfHRoaXMud29yZHNbRl0sZz0wfGIud29yZHNbRl07aWYoSCE9PWcpe0g8Zz9BPS0xOkg+ZyYmKEE9MSk7YnJlYWt9fXJldHVybiBBfSxNLnByb3RvdHlwZS5ndG49''@;'; put 'put ''ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKGIpe3JldHVybiAxPT09dGhpcy5jbXAoYil9LE0ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21wbihiKT49MH0sTS5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3JldHVybiB0aGlzLmNtcChiKT49MH0sTS5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5sdD1mdW5jdGlvbihiKXtyZXR1cm4tMT09PXRoaXMuY21wKGIpfSxNLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKGIpe3JldHVy''@;'; put 'put ''biB0aGlzLmNtcG4oYik8PTB9LE0ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXAoYik8PTB9LE0ucHJvdG90eXBlLmVxbj1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oYil7cmV0dXJuIDA9PT10aGlz''@;'; put 'put ''LmNtcChiKX0sTS5yZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBsZShiKX0sTS5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0IiksbSgwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtz''@;'; put 'put ''IG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxiLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoYil9LE0ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMu''@;'; put 'put ''cmVkLmNvbnZlcnRGcm9tKHRoaXMpfSxNLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucmVkPWIsdGhpc30sTS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBj''@;'; put 'put ''b250ZXh0IiksdGhpcy5fZm9yY2VSZWQoYil9LE0ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rp''@;'; put 'put ''b24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkTXVsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1i''@;'; put 'put ''ZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJlZC5tdWwodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMs''@;'; put 'put ''YiksdGhpcy5yZWQuaW11bCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcih0aGlzKX0sTS5wcm90b3R5''@;'; put 'put ''cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LE0ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0''@;'; put 'put ''aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxNLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sTS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0''@;'; put 'put ''aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LE0ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCYmIWIucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLGIpfTt2YXIgcT17azI1NjpudWxs''@;'; put 'put ''LHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIEooVyxiKXt0aGlzLm5hbWU9Vyx0aGlzLnA9bmV3IE0oYiwxNiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IE0oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMu''@;'; put 'put ''X3RtcCgpfWZ1bmN0aW9uIGVlKCl7Si5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIHJlKCl7Si5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZm''@;'; put 'put ''ZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWZ1bmN0aW9uIGllKCl7Si5jYWxsKHRoaXMsInAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIpfWZ1bmN0aW9uIHVlKCl7Si5jYWxsKHRoaXMs''@;'; put 'put ''IjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIGxlKFcpe2lmKCJzdHJpbmciPT10eXBlb2YgVyl7dmFyIGI9TS5fcHJpbWUoVyk7dGhpcy5tPWIucCx0aGlzLnByaW1lPWJ9ZWxzZSBt''@;'; put 'put ''KFcuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09Vyx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gYWUoVyl7bGUuY2FsbCh0aGlzLFcpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPTAmJih0aGlzLnNoaWZ0Kz0yNi10''@;'; put 'put ''aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IE0oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0p''@;'; put 'put ''LHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9Si5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciBiPW5ldyBNKG51bGwpO3JldHVybiBiLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksYn0sSi5w''@;'; put 'put ''cm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbihiKXt2YXIgRixBPWI7ZG97dGhpcy5zcGxpdChBLHRoaXMudG1wKSxGPShBPShBPXRoaXMuaW11bEsoQSkpLmlhZGQodGhpcy50bXApKS5iaXRMZW5ndGgoKX13aGlsZShGPnRoaXMubik7dmFyIEg9Rjx0aGlzLm4/LTE6QS51Y21wKHRoaXMucCk7''@;'; put 'put ''cmV0dXJuIDA9PT1IPyhBLndvcmRzWzBdPTAsQS5sZW5ndGg9MSk6SD4wP0EuaXN1Yih0aGlzLnApOnZvaWQgMCE9PUEuc3RyaXA/QS5zdHJpcCgpOkEuX3N0cmlwKCksQX0sSi5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYixBKXtiLml1c2hybih0aGlzLm4sMCxBKX0sSi5wcm90b3R5cGUu''@;'; put 'put ''aW11bEs9ZnVuY3Rpb24oYil7cmV0dXJuIGIuaW11bCh0aGlzLmspfSxzZShlZSxKKSxlZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oYixBKXtmb3IodmFyIEY9NDE5NDMwMyxIPU1hdGgubWluKGIubGVuZ3RoLDkpLGc9MDtnPEg7ZysrKUEud29yZHNbZ109Yi53b3Jkc1tnXTtpZihBLmxl''@;'; put 'put ''bmd0aD1ILGIubGVuZ3RoPD05KXJldHVybiBiLndvcmRzWzBdPTAsdm9pZChiLmxlbmd0aD0xKTt2YXIgQz1iLndvcmRzWzldO2ZvcihBLndvcmRzW0EubGVuZ3RoKytdPUMmRixnPTEwO2c8Yi5sZW5ndGg7ZysrKXt2YXIgaz0wfGIud29yZHNbZ107Yi53b3Jkc1tnLTEwXT0oayZGKTw8NHxD''@;'; put 'put ''Pj4+MjIsQz1rfWIud29yZHNbZy0xMF09Qz4+Pj0yMixiLmxlbmd0aC09MD09PUMmJmIubGVuZ3RoPjEwPzEwOjl9LGVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtiLndvcmRzW2IubGVuZ3RoXT0wLGIud29yZHNbYi5sZW5ndGgrMV09MCxiLmxlbmd0aCs9Mjtmb3IodmFyIEE9MCxG''@;'; put 'put ''PTA7RjxiLmxlbmd0aDtGKyspe3ZhciBIPTB8Yi53b3Jkc1tGXTtiLndvcmRzW0ZdPTY3MTA4ODYzJihBKz05NzcqSCksQT02NCpIKyhBLzY3MTA4ODY0fDApfXJldHVybiAwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmKGIubGVuZ3RoLS0sMD09PWIud29yZHNbYi5sZW5ndGgtMV0mJmIubGVu''@;'; put 'put ''Z3RoLS0pLGJ9LHNlKHJlLEopLHNlKGllLEopLHNlKHVlLEopLHVlLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihiKXtmb3IodmFyIEE9MCxGPTA7RjxiLmxlbmd0aDtGKyspe3ZhciBIPTE5KigwfGIud29yZHNbRl0pK0EsZz02NzEwODg2MyZIO0g+Pj49MjYsYi53b3Jkc1tGXT1nLEE9SH1y''@;'; put 'put ''ZXR1cm4gMCE9PUEmJihiLndvcmRzW2IubGVuZ3RoKytdPUEpLGJ9LE0uX3ByaW1lPWZ1bmN0aW9uKGIpe2lmKHFbYl0pcmV0dXJuIHFbYl07dmFyIEE7aWYoImsyNTYiPT09YilBPW5ldyBlZTtlbHNlIGlmKCJwMjI0Ij09PWIpQT1uZXcgcmU7ZWxzZSBpZigicDE5MiI9PT1iKUE9bmV3IGll''@;'; put 'put ''O2Vsc2V7aWYoInAyNTUxOSIhPT1iKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2IpO0E9bmV3IHVlfXJldHVybiBxW2JdPUEsQX0sbGUucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVz''@;'; put 'put ''IiksbShiLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfSxsZS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oYixBKXttKCEoYi5uZWdhdGl2ZXxBLm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxtKGIucmVkJiZiLnJlZD09PUEucmVk''@;'; put 'put ''LCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGxlLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnByaW1lP3RoaXMucHJpbWUuaXJlZHVjZShiKS5fZm9yY2VSZWQodGhpcyk6Yi51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5''@;'; put 'put ''cGUubmVnPWZ1bmN0aW9uKGIpe3JldHVybiBiLmlzWmVybygpP2IuY2xvbmUoKTp0aGlzLm0uc3ViKGIpLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLmFkZChBKTtyZXR1cm4gRi5jbXAodGhpcy5tKT49''@;'; put 'put ''MCYmRi5pc3ViKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuaWFkZChBKTtyZXR1cm4gRi5jbXAodGhpcy5tKT49MCYmRi5pc3ViKHRoaXMubSksRn0sbGUucHJvdG90eXBlLnN1Yj1m''@;'; put 'put ''dW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLnN1YihBKTtyZXR1cm4gRi5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEYuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihiLEEpe3RoaXMuX3ZlcmlmeTIoYixBKTt2YXIgRj1iLmlzdWIo''@;'; put 'put ''QSk7cmV0dXJuIEYuY21wbigwKTwwJiZGLmlhZGQodGhpcy5tKSxGfSxsZS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEoYiksdGhpcy5pbW9kKGIudXNobG4oQSkpfSxsZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLl92''@;'; put 'put ''ZXJpZnkyKGIsQSksdGhpcy5pbW9kKGIuaW11bChBKSl9LGxlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihiLEEpLHRoaXMuaW1vZChiLm11bChBKSl9LGxlLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltdWwoYixiLmNs''@;'; put 'put ''b25lKCkpfSxsZS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLm11bChiLGIpfSxsZS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihiKXtpZihiLmlzWmVybygpKXJldHVybiBiLmNsb25lKCk7dmFyIEE9dGhpcy5tLmFuZGxuKDMpO2lmKG0oQSUyPT0xKSwzPT09QSl7dmFy''@;'; put 'put ''IEY9dGhpcy5tLmFkZChuZXcgTSgxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhiLEYpfWZvcih2YXIgSD10aGlzLm0uc3VibigxKSxnPTA7IUguaXNaZXJvKCkmJjA9PT1ILmFuZGxuKDEpOylnKyssSC5pdXNocm4oMSk7bSghSC5pc1plcm8oKSk7dmFyIEM9bmV3IE0oMSkudG9SZWQo''@;'; put 'put ''dGhpcyksaz1DLnJlZE5lZygpLF89dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLHA9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihwPW5ldyBNKDIqcCpwKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3cocCxfKS5jbXAoayk7KXAucmVkSUFkZChrKTtmb3IodmFyIHc9dGhpcy5wb3cocCxIKSxLPXRo''@;'; put 'put ''aXMucG93KGIsSC5hZGRuKDEpLml1c2hybigxKSksdGU9dGhpcy5wb3coYixIKSxjZT1nOzAhPT10ZS5jbXAoQyk7KXtmb3IodmFyIGhlPXRlLFNlPTA7MCE9PWhlLmNtcChDKTtTZSsrKWhlPWhlLnJlZFNxcigpO20oU2U8Y2UpO3ZhciBMZT10aGlzLnBvdyh3LG5ldyBNKDEpLml1c2hsbihj''@;'; put 'put ''ZS1TZS0xKSk7Sz1LLnJlZE11bChMZSksdz1MZS5yZWRTcXIoKSx0ZT10ZS5yZWRNdWwodyksY2U9U2V9cmV0dXJuIEt9LGxlLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3ZhciBBPWIuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1BLm5lZ2F0aXZlPyhBLm5lZ2F0aXZlPTAsdGhpcy5p''@;'; put 'put ''bW9kKEEpLnJlZE5lZygpKTp0aGlzLmltb2QoQSl9LGxlLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24oYixBKXtpZihBLmlzWmVybygpKXJldHVybiBuZXcgTSgxKS50b1JlZCh0aGlzKTtpZigwPT09QS5jbXBuKDEpKXJldHVybiBiLmNsb25lKCk7dmFyIEg9bmV3IEFycmF5KDE2KTtIWzBdPW5l''@;'; put 'put ''dyBNKDEpLnRvUmVkKHRoaXMpLEhbMV09Yjtmb3IodmFyIGc9MjtnPEgubGVuZ3RoO2crKylIW2ddPXRoaXMubXVsKEhbZy0xXSxiKTt2YXIgQz1IWzBdLGs9MCxfPTAscD1BLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09cCYmKHA9MjYpLGc9QS5sZW5ndGgtMTtnPj0wO2ctLSl7Zm9yKHZhciB3''@;'; put 'put ''PUEud29yZHNbZ10sSz1wLTE7Sz49MDtLLS0pe3ZhciB0ZT13Pj5LJjE7QyE9PUhbMF0mJihDPXRoaXMuc3FyKEMpKSwwIT09dGV8fDAhPT1rPyhrPDw9MSxrfD10ZSwoND09KytffHwwPT09ZyYmMD09PUspJiYoQz10aGlzLm11bChDLEhba10pLF89MCxrPTApKTpfPTB9cD0yNn1yZXR1cm4g''@;'; put 'put ''Q30sbGUucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihiKXt2YXIgQT1iLnVtb2QodGhpcy5tKTtyZXR1cm4gQT09PWI/QS5jbG9uZSgpOkF9LGxlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihiKXt2YXIgQT1iLmNsb25lKCk7cmV0dXJuIEEucmVkPW51bGwsQX0sTS5tb250''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgYWUoYil9LHNlKGFlLGxlKSxhZS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltb2QoYi51c2hsbih0aGlzLnNoaWZ0KSl9LGFlLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihiKXt2YXIgQT10aGlzLmlt''@;'; put 'put ''b2QoYi5tdWwodGhpcy5yaW52KSk7cmV0dXJuIEEucmVkPW51bGwsQX0sYWUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oYixBKXtpZihiLmlzWmVybygpfHxBLmlzWmVybygpKXJldHVybiBiLndvcmRzWzBdPTAsYi5sZW5ndGg9MSxiO3ZhciBGPWIuaW11bChBKSxIPUYubWFza24odGhpcy5z''@;'; put 'put ''aGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGc9Ri5pc3ViKEgpLml1c2hybih0aGlzLnNoaWZ0KSxDPWc7cmV0dXJuIGcuY21wKHRoaXMubSk+PTA/Qz1nLmlzdWIodGhpcy5tKTpnLmNtcG4oMCk8MCYmKEM9Zy5pYWRkKHRoaXMubSkpLEMuX2Zv''@;'; put 'put ''cmNlUmVkKHRoaXMpfSxhZS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGIsQSl7aWYoYi5pc1plcm8oKXx8QS5pc1plcm8oKSlyZXR1cm4gbmV3IE0oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciBGPWIubXVsKEEpLEg9Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhp''@;'; put 'put ''cy5zaGlmdCkubXVsKHRoaXMubSksZz1GLmlzdWIoSCkuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhpcyl9LGFlLnByb3RvdHlwZS5pbnZt''@;'; put 'put ''PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmltb2QoYi5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpLl9mb3JjZVJlZCh0aGlzKX19KFFlPVIubm1kKFFlKSx0aGlzKX0sMzkyMTA6UWU9PntmdW5jdGlvbiBNZShSLG9lKXtpZighUil0aHJvdyBuZXcgRXJyb3Iob2V8fCJBc3NlcnRpb24g''@;'; put 'put ''ZmFpbGVkIil9UWUuZXhwb3J0cz1NZSxNZS5lcXVhbD1mdW5jdGlvbihvZSx4LG0pe2lmKG9lIT14KXRocm93IG5ldyBFcnJvcihtfHwiQXNzZXJ0aW9uIGZhaWxlZDogIitvZSsiICE9ICIreCl9fSwyMTgzMjooUWUsTWUpPT57InVzZSBzdHJpY3QiO3ZhciBSPU1lO2Z1bmN0aW9uIHgoc2Up''@;'; put 'put ''e3JldHVybiAxPT09c2UubGVuZ3RoPyIwIitzZTpzZX1mdW5jdGlvbiBtKHNlKXtmb3IodmFyIE09IiIsTz0wO088c2UubGVuZ3RoO08rKylNKz14KHNlW09dLnRvU3RyaW5nKDE2KSk7cmV0dXJuIE19Ui50b0FycmF5PWZ1bmN0aW9uIG9lKHNlLE0pe2lmKEFycmF5LmlzQXJyYXkoc2UpKXJl''@;'; put 'put ''dHVybiBzZS5zbGljZSgpO2lmKCFzZSlyZXR1cm5bXTt2YXIgTz1bXTtpZigic3RyaW5nIiE9dHlwZW9mIHNlKXtmb3IodmFyIEk9MDtJPHNlLmxlbmd0aDtJKyspT1tJXT0wfHNlW0ldO3JldHVybiBPfWlmKCJoZXgiPT09TSlmb3IoKHNlPXNlLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIp''@;'; put 'put ''KS5sZW5ndGglMiE9MCYmKHNlPSIwIitzZSksST0wO0k8c2UubGVuZ3RoO0krPTIpTy5wdXNoKHBhcnNlSW50KHNlW0ldK3NlW0krMV0sMTYpKTtlbHNlIGZvcihJPTA7STxzZS5sZW5ndGg7SSsrKXt2YXIgaj1zZS5jaGFyQ29kZUF0KEkpLEc9aj4+OCxEPTI1NSZqO0c/Ty5wdXNoKEcsRCk6''@;'; put 'put ''Ty5wdXNoKEQpfXJldHVybiBPfSxSLnplcm8yPXgsUi50b0hleD1tLFIuZW5jb2RlPWZ1bmN0aW9uKE0sTyl7cmV0dXJuImhleCI9PT1PP20oTSk6TX19LDExNTQ0OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiYWYiLHttb250''@;'; put 'put ''aHM6IkphbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3Zf''@;'; put 'put ''RGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJT''@;'; put 'put ''b19NYV9EaV9Xb19Eb19Wcl9TYSIuc3BsaXQoIl8iKSxtZXJpZGllbVBhcnNlOi92bXxubS9pLGlzUE06ZnVuY3Rpb24obSl7cmV0dXJuL15ubSQvaS50ZXN0KG0pfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDEyP00/InZtIjoiVk0iOk0/Im5tIjoiTk0ifSxsb25nRGF0''@;'; put 'put ''ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltWYW5kYWcgb21dIExUIixuZXh0RGF5''@;'; put 'put ''OiJbTVx4ZjRyZSBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltHaXN0ZXIgb21dIExUIixsYXN0V2VlazoiW0xhYXNdIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib29yICVzIixwYXN0OiIlcyBnZWxlZGUiLHM6Iidu''@;'; put 'put ''IHBhYXIgc2Vrb25kZXMiLHNzOiIlZCBzZWtvbmRlcyIsbToiJ24gbWludXV0IixtbToiJWQgbWludXRlIixoOiInbiB1dXIiLGhoOiIlZCB1cmUiLGQ6IiduIGRhZyIsZGQ6IiVkIGRhZSIsTToiJ24gbWFhbmQiLE1NOiIlZCBtYWFuZGUiLHk6IiduIGphYXIiLHl5OiIlZCBqYWFyIn0sZGF5''@;'; put 'put ''T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdGV8ZGUpLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3JldHVybiBtKygxPT09bXx8OD09PW18fG0+PTIwPyJzdGUiOiJkZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw1MjE1NTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rp''@;'; put 'put ''b24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD1mdW5jdGlvbihJKXtyZXR1cm4gMD09PUk/MDoxPT09ST8xOjI9PT1JPzI6SSUxMDA+PTMmJkklMTAwPD0xMD8zOkklMTAwPj0xMT80OjV9LG09e3M6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyYlx1MDYyN1x1MDY0Nlx1''@;'; put 'put ''MDY0YVx1MDYyOSIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjJhXHUwNjRhXHUwNjQ2''@;'; put 'put ''Il0sIiVkIFx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsIiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSJdLG06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0''@;'; put 'put ''Mlx1MDYyOSIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjJhXHUwNjRhXHUwNjQ2Il0s''@;'; put 'put ''IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsIiVkIFx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSJdLGg6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzM1x1MDYyN1x1MDYzOVx1''@;'; put 'put ''MDYyOSIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmZcdTA2MjkiLFsiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjI3XHUwNjQ2IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjJhXHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYzM1x1MDYyN1x1MDYz''@;'; put 'put ''OVx1MDYyN1x1MDYyYSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsIiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSJdLGQ6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDY0YVx1MDY0OFx1MDY0NSIsIlx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2NDhcdTA2Mjdc''@;'; put 'put ''dTA2MmRcdTA2MmYiLFsiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsIiVkIFx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0Ylx1MDYyNyIsIiVkIFx1MDY0YVx1MDY0OFx1''@;'; put 'put ''MDY0NSJdLE06WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzNFx1MDY0N1x1MDYzMSIsIlx1MDYzNFx1MDY0N1x1MDYzMSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3XHUwNjQ2IiwiXHUwNjM0XHUwNjQ3XHUwNjMxXHUw''@;'; put 'put ''NjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyNyIsIiVkIFx1MDYzNFx1MDY0N1x1MDYzMSJdLHk6WyJcdTA2MjNcdTA2NDJcdTA2NDQgXHUwNjQ1XHUwNjQ2IFx1MDYzOVx1MDYyN1x1MDY0NSIsIlx1MDYzOVx1MDYy''@;'; put 'put ''N1x1MDY0NSBcdTA2NDhcdTA2MjdcdTA2MmRcdTA2MmYiLFsiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjI3XHUwNjQ2IiwiXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRhXHUwNjQ2Il0sIiVkIFx1MDYyM1x1MDYzOVx1MDY0OFx1MDYyN1x1MDY0NSIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NVx1MDY0''@;'; put 'put ''Ylx1MDYyNyIsIiVkIFx1MDYzOVx1MDYyN1x1MDY0NSJdfSxzZT1mdW5jdGlvbihJKXtyZXR1cm4gZnVuY3Rpb24oaixHLEQsVCl7dmFyIEU9eChqKSx6PW1bSV1beChqKV07cmV0dXJuIDI9PT1FJiYoej16W0c/MDoxXSksei5yZXBsYWNlKC8lZC9pLGopfX0sTT1bIlx1MDYyY1x1MDYyN1x1''@;'; put 'put ''MDY0Nlx1MDY0MVx1MDY0YSIsIlx1MDY0MVx1MDY0YVx1MDY0MVx1MDYzMVx1MDY0YSIsIlx1MDY0NVx1MDYyN1x1MDYzMVx1MDYzMyIsIlx1MDYyM1x1MDY0MVx1MDYzMVx1MDY0YVx1MDY0NCIsIlx1MDY0NVx1MDYyN1x1MDY0YSIsIlx1MDYyY1x1MDY0OFx1MDYyN1x1MDY0NiIsIlx1MDYy''@;'; put 'put ''Y1x1MDY0OFx1MDY0YVx1MDY0NFx1MDY0YVx1MDYyOSIsIlx1MDYyM1x1MDY0OFx1MDYyYSIsIlx1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMSIsIlx1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMSIsIlx1MDY0Nlx1MDY0OFx1MDY0MVx1MDY0NVx1MDYyOFx1''@;'; put 'put ''MDYzMSIsIlx1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSJdO29lLmRlZmluZUxvY2FsZSgiYXItZHoiLHttb250aHM6TSxtb250aHNTaG9ydDpNLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJiXHUwNjQ2''@;'; put 'put ''XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0NFx1MDYy''@;'; put 'put ''Y1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFf''@;'; put 'put ''XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFfXHUwNjJl''@;'; put 'put ''X1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvXHUyMDBmTS9cdTIwMGZZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRk''@;'; put 'put ''ZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKEkpe3JldHVybiJcdTA2NDUiPT09SX0sbWVyaWRpZW06ZnVuY3Rpb24oSSxqLEcpe3JldHVybiBJPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToi''@;'; put 'put ''W1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDY0Ylx1MDYyNyBcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMz''@;'; put 'put ''XHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2''@;'; put 'put ''MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDYyOFx1MDYzOVx1MDYyZiAlcyIscGFz''@;'; put 'put ''dDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOnNlKCJzIiksc3M6c2UoInMiKSxtOnNlKCJtIiksbW06c2UoIm0iKSxoOnNlKCJoIiksaGg6c2UoImgiKSxkOnNlKCJkIiksZGQ6c2UoImQiKSxNOnNlKCJNIiksTU06c2UoIk0iKSx5OnNlKCJ5IikseXk6c2UoInkiKX0scG9zdGZvcm1hdDpm''@;'; put 'put ''dW5jdGlvbihJKXtyZXR1cm4gSS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MCxkb3k6NH19KX0oUig5NzU4NikpfSw1MzU4MzpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImFyLWt3Iix7bW9udGhzOiJcdTA2''@;'; put 'put ''NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1''@;'; put 'put ''MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhcdTA2MzJfXHUwNjNhXHUwNjM0XHUwNjJhX1x1MDYzNFx1MDYyYVx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYy''@;'; put 'put ''Zlx1MDYyY1x1MDY0Nlx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUw''@;'; put 'put ''NjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJh''@;'; put 'put ''XHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYzMV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmFcdTA2NDZc''@;'; put 'put ''dTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJj''@;'; put 'put ''XHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjdcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjJhXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9c''@;'; put 'put ''dTA2MjdcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVf''@;'; put 'put ''XHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0''@;'; put 'put ''XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2''@;'; put 'put ''NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJc''@;'; put 'put ''dTA2NDFcdTA2NGEgJXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2''@;'; put 'put ''NDJcdTA2MjdcdTA2MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2''@;'; put 'put ''MzEiLE1NOiIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHdlZWs6e2RvdzowLGRveToxMn19KX0oUig5NzU4NikpfSw0MTYzODpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rp''@;'; put 'put ''b24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD17MToiMSIsMjoiMiIsMzoiMyIsNDoiNCIsNToiNSIsNjoiNiIsNzoiNyIsODoiOCIsOToiOSIsMDoiMCJ9LG09ZnVuY3Rpb24oail7cmV0dXJuIDA9PT1qPzA6MT09PWo/MToyPT09aj8yOmolMTAwPj0zJiZqJTEwMDw9MTA/MzpqJTEwMD49MTE/''@;'; put 'put ''NDo1fSxzZT17czpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2''@;'; put 'put ''NGFcdTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IiwiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUw''@;'; put 'put ''NjI5Il0sbTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJc''@;'; put 'put ''dTA2MmFcdTA2MjdcdTA2NDYiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IiwiJWQgXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQy''@;'; put 'put ''XHUwNjI5Il0saDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZlx1MDYyOSIsWyJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2MjdcdTA2''@;'; put 'put ''NDYiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IiwiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5Il0sZDpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBc''@;'; put 'put ''dTA2NDVcdTA2NDYgXHUwNjRhXHUwNjQ4XHUwNjQ1IiwiXHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjRhXHUw''@;'; put 'put ''NjI3XHUwNjQ1IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjRhXHUwNjQ4XHUwNjQ1Il0sTTpbIlx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM0XHUwNjQ3XHUwNjMxIiwiXHUwNjM0XHUwNjQ3XHUwNjMxIFx1MDY0OFx1MDYyN1x1MDYy''@;'; put 'put ''ZFx1MDYyZiIsWyJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MzRcdTA2NDdcdTA2MzFcdTA2NGFcdTA2NDYiXSwiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxXHUwNjI3IiwiJWQgXHUwNjM0XHUwNjQ3XHUwNjMxIl0seTpb''@;'; put 'put ''Ilx1MDYyM1x1MDY0Mlx1MDY0NCBcdTA2NDVcdTA2NDYgXHUwNjM5XHUwNjI3XHUwNjQ1IiwiXHUwNjM5XHUwNjI3XHUwNjQ1IFx1MDY0OFx1MDYyN1x1MDYyZFx1MDYyZiIsWyJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2MjdcdTA2NDYiLCJcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGFcdTA2NDYi''@;'; put 'put ''XSwiJWQgXHUwNjIzXHUwNjM5XHUwNjQ4XHUwNjI3XHUwNjQ1IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1XHUwNjRiXHUwNjI3IiwiJWQgXHUwNjM5XHUwNjI3XHUwNjQ1Il19LE09ZnVuY3Rpb24oail7cmV0dXJuIGZ1bmN0aW9uKEcsRCxULEUpe3ZhciB6PW0oRyksTj1zZVtqXVttKEcpXTty''@;'; put 'put ''ZXR1cm4gMj09PXomJihOPU5bRD8wOjFdKSxOLnJlcGxhY2UoLyVkL2ksRyl9fSxPPVsiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxIiwiXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxIiwiXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzIiwiXHUwNjIzXHUwNjI4XHUw''@;'; put 'put ''NjMxXHUwNjRhXHUwNjQ0IiwiXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4IiwiXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4IiwiXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4IiwiXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzIiwiXHUwNjMzXHUwNjI4XHUwNjJhXHUw''@;'; put 'put ''NjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl07b2UuZGVmaW5lTG9jYWxlKCJhci1seSIse21vbnRo''@;'; put 'put ''czpPLG1vbnRoc1Nob3J0Ok8sd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1''@;'; put 'put ''MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0''@;'; put 'put ''OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1''@;'; put 'put ''MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIs''@;'; put 'put ''TFRTOiJISDptbTpzcyIsTDoiRC9cdTIwMGZNL1x1MjAwZllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNXxcdTA2NDUvLGlzUE06ZnVuY3Rpb24oail7cmV0dXJu''@;'; put 'put ''Ilx1MDY0NSI9PT1qfSxtZXJpZGllbTpmdW5jdGlvbihqLEcsRCl7cmV0dXJuIGo8MTI/Ilx1MDYzNSI6Ilx1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2Mjdc''@;'; put 'put ''dTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjRiXHUwNjI3IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYz''@;'; put 'put ''M1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUw''@;'; put 'put ''NjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjI4XHUwNjM5XHUwNjJmICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6TSgicyIpLHNzOk0oInMiKSxtOk0oIm0iKSxtbTpNKCJtIiksaDpNKCJoIiksaGg6''@;'; put 'put ''TSgiaCIpLGQ6TSgiZCIpLGRkOk0oImQiKSxNOk0oIk0iKSxNTTpNKCJNIikseTpNKCJ5IikseXk6TSgieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihqKXtyZXR1cm4gai5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGope3JldHVybiBqLnJlcGxhY2UoL1xkL2cs''@;'; put 'put ''ZnVuY3Rpb24oRyl7cmV0dXJuIHhbR119KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFIoOTc1ODYpKX0sODc4MjM6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJhci1tYSIse21vbnRo''@;'; put 'put ''czoiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0MVx1MDYyOFx1MDYzMVx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MzNfXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2NGFcdTA2NDhcdTA2NDZc''@;'; put 'put ''dTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjMyX1x1MDYzYVx1MDYzNFx1MDYyYV9cdTA2MzRcdTA2MmFcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxX1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDYyOFx1MDYz''@;'; put 'put ''MV9cdTA2MmZcdTA2MmNcdTA2NDZcdTA2MjhcdTA2MzEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1''@;'; put 'put ''MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OFx1MDYzMl9cdTA2M2FcdTA2MzRcdTA2MmFfXHUwNjM0XHUwNjJhXHUwNjQ2XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0''@;'; put 'put ''M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDZcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjJjXHUwNjQ2XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA2MjdcdTA2NDRcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI3XHUwNjQ0XHUwNjI1XHUwNjJi''@;'; put 'put ''XHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyN1x1MDY0NFx1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyN1x1MDY0''@;'; put 'put ''NFx1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNjI3XHUwNjJkXHUwNjJmX1x1MDYyN1x1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2Mjdc''@;'; put 'put ''dTA2MjFfXHUwNjI3XHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2MmRfXHUwNjQ2X1x1MDYyYl9cdTA2MzFf''@;'; put 'put ''XHUwNjJlX1x1MDYyY19cdTA2MzMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjI3IFx1MDYz''@;'; put 'put ''OVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUw''@;'; put 'put ''NjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1''@;'; put 'put ''dHVyZToiXHUwNjQxXHUwNjRhICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6Ilx1MDYyYlx1MDY0OFx1MDYyN1x1MDY0NiIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyOSIsbToiXHUwNjJmXHUwNjQyXHUwNjRhXHUwNjQyXHUwNjI5IixtbToiJWQgXHUw''@;'; put 'put ''NjJmXHUwNjQyXHUwNjI3XHUwNjI2XHUwNjQyIixoOiJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLGhoOiIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLGQ6Ilx1MDY0YVx1MDY0OFx1MDY0NSIsZGQ6IiVkIFx1MDYyM1x1MDY0YVx1MDYyN1x1MDY0NSIsTToiXHUwNjM0XHUw''@;'; put 'put ''NjQ3XHUwNjMxIixNTToiJWQgXHUwNjIzXHUwNjM0XHUwNjQ3XHUwNjMxIix5OiJcdTA2MzNcdTA2NDZcdTA2MjkiLHl5OiIlZCBcdTA2MzNcdTA2NDZcdTA2NDhcdTA2MjdcdTA2MmEifSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw3NzEyOmZ1bmN0aW9uKFFlLE1lLFIpeyFm''@;'; put 'put ''dW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA2NjEiLDI6Ilx1MDY2MiIsMzoiXHUwNjYzIiw0OiJcdTA2NjQiLDU6Ilx1MDY2NSIsNjoiXHUwNjY2Iiw3OiJcdTA2NjciLDg6Ilx1MDY2OCIsOToiXHUwNjY5IiwwOiJcdTA2NjAifSxtPXsiXHUwNjYxIjoiMSIsIlx1MDY2''@;'; put 'put ''MiI6IjIiLCJcdTA2NjMiOiIzIiwiXHUwNjY0IjoiNCIsIlx1MDY2NSI6IjUiLCJcdTA2NjYiOiI2IiwiXHUwNjY3IjoiNyIsIlx1MDY2OCI6IjgiLCJcdTA2NjkiOiI5IiwiXHUwNjYwIjoiMCJ9O29lLmRlZmluZUxvY2FsZSgiYXItcHMiLHttb250aHM6Ilx1MDY0M1x1MDYyN1x1MDY0Nlx1''@;'; put 'put ''MDY0OFx1MDY0NiBcdTA2MjdcdTA2NDRcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFfXHUwNjM0XHUwNjI4XHUwNjI3XHUwNjM3X1x1MDYyMlx1MDYzMFx1MDYyN1x1MDYzMV9cdTA2NDZcdTA2NGFcdTA2MzNcdTA2MjdcdTA2NDZfXHUwNjIzXHUwNjRhXHUwNjUxXHUwNjI3XHUwNjMxX1x1MDYy''@;'; put 'put ''ZFx1MDYzMlx1MDY0YVx1MDYzMVx1MDYyN1x1MDY0Nl9cdTA2MmFcdTA2NDVcdTA2NTFcdTA2NDhcdTA2MzJfXHUwNjIyXHUwNjI4X1x1MDYyM1x1MDY0YVx1MDY0NFx1MDY0OFx1MDY0NF9cdTA2MmFcdTA2MzRcdTA2MzFcdTA2NGEgXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjQ4XHUwNjUxXHUw''@;'; put 'put ''NjQ0X1x1MDYyYVx1MDYzNFx1MDYzMVx1MDY0YVx1MDY0NiBcdTA2MjdcdTA2NDRcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFfXHUwNjQzXHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjQ2IFx1MDYyN1x1MDY0NFx1MDYyM1x1MDY0OFx1MDY1MVx1MDY0NCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi''@;'; put 'put ''XHUwNjQzXHUwNjYyX1x1MDYzNFx1MDYyOFx1MDYyN1x1MDYzN19cdTA2MjJcdTA2MzBcdTA2MjdcdTA2MzFfXHUwNjQ2XHUwNjRhXHUwNjMzXHUwNjI3XHUwNjQ2X1x1MDYyM1x1MDY0YVx1MDY1MVx1MDYyN1x1MDYzMV9cdTA2MmRcdTA2MzJcdTA2NGFcdTA2MzFcdTA2MjdcdTA2NDZfXHUw''@;'; put 'put ''NjJhXHUwNjQ1XHUwNjUxXHUwNjQ4XHUwNjMyX1x1MDYyMlx1MDYyOF9cdTA2MjNcdTA2NGFcdTA2NDRcdTA2NDhcdTA2NDRfXHUwNjJhXHUwNjYxX1x1MDYyYVx1MDY2Ml9cdTA2NDNcdTA2NjEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9c''@;'; put 'put ''dTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVc''@;'; put 'put ''dTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1''@;'; put 'put ''MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYy''@;'; put 'put ''ZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjM1fFx1MDY0NS8saXNQTTpmdW5jdGlvbihNKXtyZXR1cm4iXHUwNjQ1Ij09PU19LG1lcmlkaWVtOmZ1bmN0aW9uKE0sTyxJKXtyZXR1cm4gTTwxMj8iXHUwNjM1IjoiXHUwNjQ1In0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjdcdTA2NDRcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHREYXk6IltcdTA2M2FcdTA2MmZcdTA2MjcgXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYy''@;'; put 'put ''N1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdERheToiW1x1MDYyM1x1MDY0NVx1MDYzMyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUw''@;'; put 'put ''NjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2NDFcdTA2NGEg''@;'; put 'put ''JXMiLHBhc3Q6Ilx1MDY0NVx1MDY0Nlx1MDYzMCAlcyIsczoiXHUwNjJiXHUwNjQ4XHUwNjI3XHUwNjQ2IixzczoiJWQgXHUwNjJiXHUwNjI3XHUwNjQ2XHUwNjRhXHUwNjI5IixtOiJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLG1tOiIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2''@;'; put 'put ''MjZcdTA2NDIiLGg6Ilx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyN1x1MDYyYSIsZDoiXHUwNjRhXHUwNjQ4XHUwNjQ1IixkZDoiJWQgXHUwNjIzXHUwNjRhXHUwNjI3XHUwNjQ1IixNOiJcdTA2MzRcdTA2NDdcdTA2MzEiLE1NOiIlZCBc''@;'; put 'put ''dTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLHk6Ilx1MDYzM1x1MDY0Nlx1MDYyOSIseXk6IiVkIFx1MDYzM1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyYSJ9LHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1tcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2NjdcdTA2Njhc''@;'; put 'put ''dTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oTyl7cmV0dXJuIG1bT119KS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpLnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJdKD8hW1x1MDYyYVx1MDY0M10pL2csZnVuY3Rpb24oTyl7cmV0dXJuIG1bT119KS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4o''@;'; put 'put ''IiIpLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihPKXtyZXR1cm4geFtPXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDc4MjYxOmZ1''@;'; put 'put ''bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA2NjEiLDI6Ilx1MDY2MiIsMzoiXHUwNjYzIiw0OiJcdTA2NjQiLDU6Ilx1MDY2NSIsNjoiXHUwNjY2Iiw3OiJcdTA2NjciLDg6Ilx1MDY2OCIsOToiXHUwNjY5IiwwOiJcdTA2NjAifSxtPXsi''@;'; put 'put ''XHUwNjYxIjoiMSIsIlx1MDY2MiI6IjIiLCJcdTA2NjMiOiIzIiwiXHUwNjY0IjoiNCIsIlx1MDY2NSI6IjUiLCJcdTA2NjYiOiI2IiwiXHUwNjY3IjoiNyIsIlx1MDY2OCI6IjgiLCJcdTA2NjkiOiI5IiwiXHUwNjYwIjoiMCJ9O29lLmRlZmluZUxvY2FsZSgiYXItc2EiLHttb250aHM6Ilx1''@;'; put 'put ''MDY0YVx1MDY0Nlx1MDYyN1x1MDY0YVx1MDYzMV9cdTA2NDFcdTA2MjhcdTA2MzFcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDYyOFx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFcdTA2NDhfXHUwNjRhXHUwNjQ4XHUwNjQ2''@;'; put 'put ''XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0NFx1MDY0YVx1MDY0OF9cdTA2MjNcdTA2M2FcdTA2MzNcdTA2MzdcdTA2MzNfXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2''@;'; put 'put ''NDFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2NGFcdTA2NDZcdTA2MjdcdTA2NGFcdTA2MzFfXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxX1x1MDY0NVx1MDYyN1x1''@;'; put 'put ''MDYzMVx1MDYzM19cdTA2MjNcdTA2MjhcdTA2MzFcdTA2NGFcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4X1x1MDY0YVx1MDY0OFx1MDY0Nlx1MDY0YVx1MDY0OF9cdTA2NGFcdTA2NDhcdTA2NDRcdTA2NGFcdTA2NDhfXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUwNjMzX1x1MDYz''@;'; put 'put ''M1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi''@;'; put 'put ''XHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYyYlx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3''@;'; put 'put ''XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVc''@;'; put 'put ''dTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYy''@;'; put 'put ''YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMxX1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZ''@;'; put 'put ''IixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzV8XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKE0pe3JldHVybiJcdTA2NDUiPT09TX0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkp''@;'; put 'put ''e3JldHVybiBNPDEyPyJcdTA2MzUiOiJcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYy''@;'; put 'put ''Zlx1MDYyNyBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUw''@;'; put 'put ''NjQ1XHUwNjMzIFx1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYy''@;'; put 'put ''OSIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUi''@;'; put 'put ''LE06Ilx1MDYzNFx1MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQgXHUwNjMzXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJhIn0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MDY2''@;'; put 'put ''MVx1MDY2Mlx1MDY2M1x1MDY2NFx1MDY2NVx1MDY2Nlx1MDY2N1x1MDY2OFx1MDY2OVx1MDY2MF0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihP''@;'; put 'put ''KXtyZXR1cm4geFtPXX0pLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDU2NzAzOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiYXItdG4iLHttb250aHM6Ilx1MDYyY1x1''@;'; put 'put ''MDYyN1x1MDY0Nlx1MDY0MVx1MDY0YV9cdTA2NDFcdTA2NGFcdTA2NDFcdTA2MzFcdTA2NGFfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyM1x1MDY0MVx1MDYzMVx1MDY0YVx1MDY0NF9cdTA2NDVcdTA2MjdcdTA2NGFfXHUwNjJjXHUwNjQ4XHUwNjI3XHUwNjQ2X1x1MDYyY1x1MDY0''@;'; put 'put ''OFx1MDY0YVx1MDY0NFx1MDY0YVx1MDYyOV9cdTA2MjNcdTA2NDhcdTA2MmFfXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyM1x1MDY0M1x1MDYyYVx1MDY0OFx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2NDFcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUw''@;'; put 'put ''NjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2MmNcdTA2MjdcdTA2NDZcdTA2NDFcdTA2NGFfXHUwNjQxXHUwNjRhXHUwNjQxXHUwNjMxXHUwNjRhX1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjNcdTA2NDFcdTA2MzFcdTA2NGFc''@;'; put 'put ''dTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyY1x1MDY0OFx1MDYyN1x1MDY0Nl9cdTA2MmNcdTA2NDhcdTA2NGFcdTA2NDRcdTA2NGFcdTA2MjlfXHUwNjIzXHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDYyOFx1MDYyYVx1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjNcdTA2NDNcdTA2MmFcdTA2''@;'; put 'put ''NDhcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDY0YVx1MDYzM1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjJkXHUwNjJmX1x1MDYyN1x1MDY0NFx1MDYyNVx1MDYy''@;'; put 'put ''Ylx1MDY0Nlx1MDY0YVx1MDY0Nl9cdTA2MjdcdTA2NDRcdTA2MmJcdTA2NDRcdTA2MjdcdTA2MmJcdTA2MjdcdTA2MjFfXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjMxXHUwNjI4XHUwNjM5XHUwNjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyZVx1MDY0NVx1MDY0YVx1MDYzM19cdTA2MjdcdTA2''@;'; put 'put ''NDRcdTA2MmNcdTA2NDVcdTA2MzlcdTA2MjlfXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI4XHUwNjJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUwNjI3''@;'; put 'put ''XHUwNjIxX1x1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYzM1x1MDYyOFx1MDYyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNjJkX1x1MDY0Nl9cdTA2MmJfXHUwNjMx''@;'; put 'put ''X1x1MDYyZV9cdTA2MmNfXHUwNjMzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQg''@;'; put 'put ''RCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NFx1MDY0YVx1MDY0OFx1MDY0NSBcdTA2MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dERheToiW1x1MDYzYVx1MDYyZlx1MDYyNyBcdTA2''@;'; put 'put ''MzlcdTA2NDRcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0RGF5OiJbXHUwNjIzXHUwNjQ1XHUwNjMzIFx1''@;'; put 'put ''MDYzOVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6Ilx1MDY0MVx1MDY0YSAlcyIscGFzdDoiXHUwNjQ1XHUwNjQ2XHUwNjMwICVzIixzOiJcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLHNzOiIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLG06Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyOSIsbW06IiVkIFx1''@;'; put 'put ''MDYyZlx1MDY0Mlx1MDYyN1x1MDYyNlx1MDY0MiIsaDoiXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5IixoaDoiJWQgXHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI3XHUwNjJhIixkOiJcdTA2NGFcdTA2NDhcdTA2NDUiLGRkOiIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLE06Ilx1MDYzNFx1''@;'; put 'put ''MDY0N1x1MDYzMSIsTU06IiVkIFx1MDYyM1x1MDYzNFx1MDY0N1x1MDYzMSIseToiXHUwNjMzXHUwNjQ2XHUwNjI5Iix5eToiJWQgXHUwNjMzXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJhIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMzMxMDg6ZnVuY3Rpb24oUWUsTWUsUil7''@;'; put 'put ''IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezE6Ilx1MDY2MSIsMjoiXHUwNjYyIiwzOiJcdTA2NjMiLDQ6Ilx1MDY2NCIsNToiXHUwNjY1Iiw2OiJcdTA2NjYiLDc6Ilx1MDY2NyIsODoiXHUwNjY4Iiw5OiJcdTA2NjkiLDA6Ilx1MDY2MCJ9LG09eyJcdTA2NjEiOiIxIiwiXHUw''@;'; put 'put ''NjYyIjoiMiIsIlx1MDY2MyI6IjMiLCJcdTA2NjQiOiI0IiwiXHUwNjY1IjoiNSIsIlx1MDY2NiI6IjYiLCJcdTA2NjciOiI3IiwiXHUwNjY4IjoiOCIsIlx1MDY2OSI6IjkiLCJcdTA2NjAiOiIwIn0sc2U9ZnVuY3Rpb24oRyl7cmV0dXJuIDA9PT1HPzA6MT09PUc/MToyPT09Rz8yOkclMTAw''@;'; put 'put ''Pj0zJiZHJTEwMDw9MTA/MzpHJTEwMD49MTE/NDo1fSxNPXtzOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCJcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5''@;'; put 'put ''IixbIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyYlx1MDYyN1x1MDY0Nlx1MDY0YVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmJcdTA2NDhcdTA2MjdcdTA2NDYiLCIlZCBcdTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiLCIlZCBc''@;'; put 'put ''dTA2MmJcdTA2MjdcdTA2NDZcdTA2NGFcdTA2MjkiXSxtOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCJcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5Iixb''@;'; put 'put ''Ilx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYyZlx1MDY0Mlx1MDY0YVx1MDY0Mlx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MmZcdTA2NDJcdTA2MjdcdTA2MjZcdTA2NDIiLCIlZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiLCIl''@;'; put 'put ''ZCBcdTA2MmZcdTA2NDJcdTA2NGFcdTA2NDJcdTA2MjkiXSxoOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCJcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmXHUwNjI5IixbIlx1MDYzM1x1''@;'; put 'put ''MDYyN1x1MDYzOVx1MDYyYVx1MDYyN1x1MDY0NiIsIlx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjdcdTA2MmEiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjkiLCIlZCBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2Mjki''@;'; put 'put ''XSxkOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2NGFcdTA2NDhcdTA2NDUiLCJcdTA2NGFcdTA2NDhcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDY0YVx1MDY0OFx1MDY0NVx1MDY0YVx1''@;'; put 'put ''MDY0NiJdLCIlZCBcdTA2MjNcdTA2NGFcdTA2MjdcdTA2NDUiLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2NGFcdTA2NDhcdTA2NDUiXSxNOlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzRcdTA2NDdcdTA2MzEiLCJcdTA2MzRcdTA2''@;'; put 'put ''NDdcdTA2MzEgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDYyN1x1MDY0NiIsIlx1MDYzNFx1MDY0N1x1MDYzMVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzRcdTA2NDdcdTA2MzEiLCIlZCBcdTA2MzRcdTA2NDdcdTA2MzFcdTA2MjciLCIl''@;'; put 'put ''ZCBcdTA2MzRcdTA2NDdcdTA2MzEiXSx5OlsiXHUwNjIzXHUwNjQyXHUwNjQ0IFx1MDY0NVx1MDY0NiBcdTA2MzlcdTA2MjdcdTA2NDUiLCJcdTA2MzlcdTA2MjdcdTA2NDUgXHUwNjQ4XHUwNjI3XHUwNjJkXHUwNjJmIixbIlx1MDYzOVx1MDYyN1x1MDY0NVx1MDYyN1x1MDY0NiIsIlx1MDYz''@;'; put 'put ''OVx1MDYyN1x1MDY0NVx1MDY0YVx1MDY0NiJdLCIlZCBcdTA2MjNcdTA2MzlcdTA2NDhcdTA2MjdcdTA2NDUiLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDVcdTA2NGJcdTA2MjciLCIlZCBcdTA2MzlcdTA2MjdcdTA2NDUiXX0sTz1mdW5jdGlvbihHKXtyZXR1cm4gZnVuY3Rpb24oRCxULEUseil7''@;'; put 'put ''dmFyIE49c2UoRCksQj1NW0ddW3NlKEQpXTtyZXR1cm4gMj09PU4mJihCPUJbVD8wOjFdKSxCLnJlcGxhY2UoLyVkL2ksRCl9fSxJPVsiXHUwNjRhXHUwNjQ2XHUwNjI3XHUwNjRhXHUwNjMxIiwiXHUwNjQxXHUwNjI4XHUwNjMxXHUwNjI3XHUwNjRhXHUwNjMxIiwiXHUwNjQ1XHUwNjI3XHUw''@;'; put 'put ''NjMxXHUwNjMzIiwiXHUwNjIzXHUwNjI4XHUwNjMxXHUwNjRhXHUwNjQ0IiwiXHUwNjQ1XHUwNjI3XHUwNjRhXHUwNjQ4IiwiXHUwNjRhXHUwNjQ4XHUwNjQ2XHUwNjRhXHUwNjQ4IiwiXHUwNjRhXHUwNjQ4XHUwNjQ0XHUwNjRhXHUwNjQ4IiwiXHUwNjIzXHUwNjNhXHUwNjMzXHUwNjM3XHUw''@;'; put 'put ''NjMzIiwiXHUwNjMzXHUwNjI4XHUwNjJhXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjIzXHUwNjQzXHUwNjJhXHUwNjQ4XHUwNjI4XHUwNjMxIiwiXHUwNjQ2XHUwNjQ4XHUwNjQxXHUwNjQ1XHUwNjI4XHUwNjMxIiwiXHUwNjJmXHUwNjRhXHUwNjMzXHUwNjQ1XHUwNjI4XHUwNjMxIl07b2Uu''@;'; put 'put ''ZGVmaW5lTG9jYWxlKCJhciIse21vbnRoczpJLG1vbnRoc1Nob3J0Okksd2Vla2RheXM6Ilx1MDYyN1x1MDY0NFx1MDYyM1x1MDYyZFx1MDYyZl9cdTA2MjdcdTA2NDRcdTA2MjVcdTA2MmJcdTA2NDZcdTA2NGFcdTA2NDZfXHUwNjI3XHUwNjQ0XHUwNjJiXHUwNjQ0XHUwNjI3XHUwNjJiXHUw''@;'; put 'put ''NjI3XHUwNjIxX1x1MDYyN1x1MDY0NFx1MDYyM1x1MDYzMVx1MDYyOFx1MDYzOVx1MDYyN1x1MDYyMV9cdTA2MjdcdTA2NDRcdTA2MmVcdTA2NDVcdTA2NGFcdTA2MzNfXHUwNjI3XHUwNjQ0XHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjI5X1x1MDYyN1x1MDY0NFx1MDYzM1x1MDYyOFx1MDYyYSIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2MjNcdTA2MmRcdTA2MmZfXHUwNjI1XHUwNjJiXHUwNjQ2XHUwNjRhXHUwNjQ2X1x1MDYyYlx1MDY0NFx1MDYyN1x1MDYyYlx1MDYyN1x1MDYyMV9cdTA2MjNcdTA2MzFcdTA2MjhcdTA2MzlcdTA2MjdcdTA2MjFfXHUwNjJlXHUwNjQ1XHUw''@;'; put 'put ''NjRhXHUwNjMzX1x1MDYyY1x1MDY0NVx1MDYzOVx1MDYyOV9cdTA2MzNcdTA2MjhcdTA2MmEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDYyZF9cdTA2NDZfXHUwNjJiX1x1MDYzMV9cdTA2MmVfXHUwNjJjX1x1MDYzMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiRC9cdTIwMGZNL1x1MjAwZllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1MDYzNXxcdTA2NDUv''@;'; put 'put ''LGlzUE06ZnVuY3Rpb24oRyl7cmV0dXJuIlx1MDY0NSI9PT1HfSxtZXJpZGllbTpmdW5jdGlvbihHLEQsVCl7cmV0dXJuIEc8MTI/Ilx1MDYzNSI6Ilx1MDY0NSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNjI3XHUwNjQ0XHUwNjRhXHUwNjQ4XHUwNjQ1IFx1MDYzOVx1MDY0Nlx1MDYyZiBc''@;'; put 'put ''dTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0RGF5OiJbXHUwNjNhXHUwNjJmXHUwNjRiXHUwNjI3IFx1MDYzOVx1MDY0Nlx1MDYyZiBcdTA2MjdcdTA2NDRcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MjldIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjM5XHUwNjQ2''@;'; put 'put ''XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3REYXk6IltcdTA2MjNcdTA2NDVcdTA2MzMgXHUwNjM5XHUwNjQ2XHUwNjJmIFx1MDYyN1x1MDY0NFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyOV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2MzlcdTA2''@;'; put 'put ''NDZcdTA2MmYgXHUwNjI3XHUwNjQ0XHUwNjMzXHUwNjI3XHUwNjM5XHUwNjI5XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjI4XHUwNjM5XHUwNjJmICVzIixwYXN0OiJcdTA2NDVcdTA2NDZcdTA2MzAgJXMiLHM6TygicyIpLHNzOk8oInMiKSxtOk8oIm0i''@;'; put 'put ''KSxtbTpPKCJtIiksaDpPKCJoIiksaGg6TygiaCIpLGQ6TygiZCIpLGRkOk8oImQiKSxNOk8oIk0iKSxNTTpPKCJNIikseTpPKCJ5IikseXk6TygieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihHKXtyZXR1cm4gRy5yZXBsYWNlKC9bXHUwNjYxXHUwNjYyXHUwNjYzXHUwNjY0XHUwNjY1XHUwNjY2''@;'; put 'put ''XHUwNjY3XHUwNjY4XHUwNjY5XHUwNjYwXS9nLGZ1bmN0aW9uKEQpe3JldHVybiBtW0RdfSkucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihHKXtyZXR1cm4gRy5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKEQpe3JldHVybiB4W0RdfSkucmVwbGFjZSgvLC9nLCJc''@;'; put 'put ''dTA2MGMiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pfShSKDk3NTg2KSl9LDQ2NTA4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiItaW5jaSIsNToiLWluY2kiLDg6Ii1pbmNpIiw3MDoiLWluY2kiLDgwOiItaW5jaSIsMjoiLW5jaSIsNzoi''@;'; put 'put ''LW5jaSIsMjA6Ii1uY2kiLDUwOiItbmNpIiwzOiItXHhmY25jXHhmYyIsNDoiLVx4ZmNuY1x4ZmMiLDEwMDoiLVx4ZmNuY1x4ZmMiLDY6Ii1uY1x1MDEzMSIsOToiLXVuY3UiLDEwOiItdW5jdSIsMzA6Ii11bmN1Iiw2MDoiLVx1MDEzMW5jXHUwMTMxIiw5MDoiLVx1MDEzMW5jXHUwMTMxIn07''@;'; put 'put ''b2UuZGVmaW5lTG9jYWxlKCJheiIse21vbnRoczoieWFudmFyX2ZldnJhbF9tYXJ0X2FwcmVsX21heV9peXVuX2l5dWxfYXZxdXN0X3NlbnR5YWJyX29rdHlhYnJfbm95YWJyX2Rla2FiciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoieWFuX2Zldl9tYXJfYXByX21heV9peW5faXlsX2F2cV9z''@;'; put 'put ''ZW5fb2t0X25veV9kZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6IkJhemFyX0JhemFyIGVydFx1MDI1OXNpX1x4YzdcdTAyNTlyXHUwMTVmXHUwMjU5bmJcdTAyNTkgYXhcdTAxNWZhbVx1MDEzMV9ceGM3XHUwMjU5clx1MDE1Zlx1MDI1OW5iXHUwMjU5X0NceGZjbVx1MDI1OSBheFx1MDE1ZmFt''@;'; put 'put ''XHUwMTMxX0NceGZjbVx1MDI1OV9cdTAxNWVcdTAyNTluYlx1MDI1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJCYXpfQnpFX1x4YzdBeF9ceGM3XHUwMjU5cl9DQXhfQ1x4ZmNtX1x1MDE1ZVx1MDI1OW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkJ6X0JFX1x4YzdBX1x4YzdcdTAy''@;'; put 'put ''NTlfQ0FfQ1x4ZmNfXHUwMTVlXHUwMjU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRk''@;'; put 'put ''ZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltidWdceGZjbiBzYWF0XSBMVCIsbmV4dERheToiW3NhYmFoIHNhYXRdIExUIixuZXh0V2VlazoiW2dcdTAyNTlsXHUwMjU5biBoXHUwMjU5ZnRcdTAyNTldIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNu''@;'; put 'put ''XHUwMjU5bl0gTFQiLGxhc3RXZWVrOiJba2VceGU3XHUwMjU5biBoXHUwMjU5ZnRcdTAyNTldIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBzb25yYSIscGFzdDoiJXMgXHUwMjU5dnZcdTAyNTlsIixzOiJiaXIgbmVceGU3XHUwMjU5IHNh''@;'; put 'put ''bml5XHUwMjU5IixzczoiJWQgc2FuaXlcdTAyNTkiLG06ImJpciBkXHUwMjU5cWlxXHUwMjU5IixtbToiJWQgZFx1MDI1OXFpcVx1MDI1OSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNuIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmly''@;'; put 'put ''IGlsIix5eToiJWQgaWwifSxtZXJpZGllbVBhcnNlOi9nZWNcdTAyNTl8c1x1MDI1OWhcdTAyNTlyfGdceGZjbmRceGZjenxheFx1MDE1ZmFtLyxpc1BNOmZ1bmN0aW9uKHNlKXtyZXR1cm4vXihnXHhmY25kXHhmY3p8YXhcdTAxNWZhbSkkLy50ZXN0KHNlKX0sbWVyaWRpZW06ZnVuY3Rpb24o''@;'; put 'put ''c2UsTSxPKXtyZXR1cm4gc2U8ND8iZ2VjXHUwMjU5IjpzZTwxMj8ic1x1MDI1OWhcdTAyNTlyIjpzZTwxNz8iZ1x4ZmNuZFx4ZmN6IjoiYXhcdTAxNWZhbSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDEzMW5jXHUwMTMxfGluY2l8bmNpfFx4ZmNuY1x4ZmN8bmNcdTAx''@;'; put 'put ''MzF8dW5jdSkvLG9yZGluYWw6ZnVuY3Rpb24oc2Upe2lmKDA9PT1zZSlyZXR1cm4gc2UrIi1cdTAxMzFuY1x1MDEzMSI7dmFyIE09c2UlMTA7cmV0dXJuIHNlKyh4W01dfHx4W3NlJTEwMC1NXXx8eFtzZT49MTAwPzEwMDpudWxsXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9''@;'; put 'put ''LDE2NzY2OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oTSxPLEkpe3JldHVybiJtIj09PUk/Tz8iXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUwNDMwIjoiXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUw''@;'; put 'put ''NDNkXHUwNDQzIjoiaCI9PT1JP08/Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQzMCI6Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0MyI6TSsiICIrZnVuY3Rpb24geChNLE8pe3ZhciBJPU0uc3BsaXQoIl8iKTtyZXR1cm4gTyUxMD09''@;'; put 'put ''MSYmTyUxMDAhPTExP0lbMF06TyUxMD49MiYmTyUxMDw9NCYmKE8lMTAwPDEwfHxPJTEwMD49MjApP0lbMV06SVsyXX0oe3NzOk8/Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUw''@;'; put 'put ''NDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IjoiXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDQzX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0Yl9cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG1tOk8/''@;'; put 'put ''Ilx1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQzMF9cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2RcdTA0NGJfXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkIjoiXHUwNDQ1XHUwNDMyXHUwNDU2XHUwNDNiXHUwNDU2XHUwNDNkXHUw''@;'; put 'put ''NDQzX1x1MDQ0NVx1MDQzMlx1MDQ1Nlx1MDQzYlx1MDQ1Nlx1MDQzZFx1MDQ0Yl9cdTA0NDVcdTA0MzJcdTA0NTZcdTA0M2JcdTA0NTZcdTA0M2QiLGhoOk8/Ilx1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQzMF9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0NTZc''@;'; put 'put ''dTA0M2RcdTA0NGJfXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkIjoiXHUwNDMzXHUwNDMwXHUwNDM0XHUwNDM3XHUwNDU2XHUwNDNkXHUwNDQzX1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQzN1x1MDQ1Nlx1MDQzZFx1MDQ0Yl9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0MzdcdTA0''@;'; put 'put ''NTZcdTA0M2QiLGRkOiJcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM0XHUwNDNkXHUwNDU2X1x1MDQzNFx1MDQzN1x1MDQ1MVx1MDQzZCIsTU06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nl9cdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGJfXHUw''@;'; put 'put ''NDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDMwXHUwNDVlIix5eToiXHUwNDMzXHUwNDNlXHUwNDM0X1x1MDQzM1x1MDQzMFx1MDQzNFx1MDQ0Yl9cdTA0MzNcdTA0MzBcdTA0MzRcdTA0M2VcdTA0NWUifVtJXSwrTSl9b2UuZGVmaW5lTG9jYWxlKCJiZSIse21vbnRoczp7Zm9ybWF0''@;'; put 'put ''OiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDMwXHUwNDMzXHUwNDMwX1x1MDQ0MVx1MDQzMFx1MDQzYVx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzYVx1MDQzMF9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0''@;'; put 'put ''MzBcdTA0MzJcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDVlXHUwNDNkXHUwNDRmX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Zl9cdTA0M2JcdTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGZfXHUwNDM2XHUwNDNkXHUwNDU2XHUw''@;'; put 'put ''NDVlXHUwNDNkXHUwNDRmX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzZFx1MDQ0Zl9cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJcdTA0NDdcdTA0M2RcdTA0NTZcdTA0M2FcdTA0MzBfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUw''@;'; put 'put ''NDMwXHUwNDM0XHUwNDMwX1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzZFx1MDQ0ZiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NDFcdTA0NDJcdTA0NDNcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDRlXHUwNDQyXHUwNDRiX1x1MDQ0MVx1MDQzMFx1''@;'; put 'put ''MDQzYVx1MDQzMFx1MDQzMlx1MDQ1Nlx1MDQzYV9cdTA0M2FcdTA0NDBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0MzJcdTA0NTZcdTA0M2FfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0N1x1MDQ0ZFx1MDQ0MFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19c''@;'; put 'put ''dTA0M2JcdTA0NTZcdTA0M2ZcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM2XHUwNDNkXHUwNDU2XHUwNDMyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzMlx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0M2FcdTA0MzBcdTA0NDFcdTA0NDJcdTA0NDBcdTA0NGJc''@;'; put 'put ''dTA0NDdcdTA0M2RcdTA0NTZcdTA0M2FfXHUwNDNiXHUwNDU2XHUwNDQxXHUwNDQyXHUwNDMwXHUwNDNmXHUwNDMwXHUwNDM0X1x1MDQ0MVx1MDQzZFx1MDQzNVx1MDQzNlx1MDQzMFx1MDQzZFx1MDQ0YyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQz''@;'; put 'put ''NF9cdTA0M2JcdTA0NGVcdTA0NDJfXHUwNDQxXHUwNDMwXHUwNDNhX1x1MDQzYVx1MDQ0MFx1MDQzMFx1MDQ0MV9cdTA0NDJcdTA0NDBcdTA0MzBcdTA0MzJfXHUwNDQ3XHUwNDRkXHUwNDQwXHUwNDMyX1x1MDQzYlx1MDQ1Nlx1MDQzZl9cdTA0MzZcdTA0M2RcdTA0NTZcdTA0MzJfXHUwNDMy''@;'; put 'put ''XHUwNDM1XHUwNDQwX1x1MDQzYVx1MDQzMFx1MDQ0MVx1MDQ0Ml9cdTA0M2JcdTA0NTZcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDNkXHUwNDM1XHUwNDM2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6Ilx1MDQzZFx1MDQ0Zlx1MDQzNFx1MDQzN1x1MDQzNVx1MDQzYlx1MDQ0ZV9cdTA0''@;'; put 'put ''M2ZcdTA0MzBcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0MzBcdTA0M2FfXHUwNDMwXHUwNDVlXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDMwXHUwNDNhX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzMFx1MDQzNFx1MDQ0M19cdTA0NDdcdTA0MzBcdTA0NDZcdTA0MzJcdTA0''@;'; put 'put ''MzVcdTA0NDBfXHUwNDNmXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDU2XHUwNDQ2XHUwNDQzX1x1MDQ0MVx1MDQ0M1x1MDQzMVx1MDQzZVx1MDQ0Mlx1MDQ0MyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0M2RcdTA0NGZcdTA0MzRcdTA0MzdcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNmXHUw''@;'; put 'put ''NDMwXHUwNDNkXHUwNDRmXHUwNDM0XHUwNDM3XHUwNDM1XHUwNDNiXHUwNDMwXHUwNDNhX1x1MDQzMFx1MDQ1ZVx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzMFx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzBcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDMwXHUwNDQ2XHUwNDMyXHUwNDM1XHUw''@;'; put 'put ''NDQwX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQzMF9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9bXHUwNDIzXHUwNDQzXHUwNDVlXSA/KD86XHUwNDNjXHUwNDU2XHUwNDNkXHUwNDQzXHUwNDNi''@;'; put 'put ''XHUwNDQzXHUwNDRlfFx1MDQzZFx1MDQzMFx1MDQ0MVx1MDQ0Mlx1MDQ0M1x1MDQzZlx1MDQzZFx1MDQ0M1x1MDQ0ZSk/ID9cXSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMwXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDZfXHUw''@;'; put 'put ''NDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1MDQzZF9cdTA0MzBcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Nl9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0MzMuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUw''@;'; put 'put ''NDIxXHUwNDUxXHUwNDNkXHUwNDNkXHUwNDRmIFx1MDQ1ZV0gTFQiLG5leHREYXk6IltcdTA0MTdcdTA0MzBcdTA0NWVcdTA0NDJcdTA0NDBcdTA0MzAgXHUwNDVlXSBMVCIsbGFzdERheToiW1x1MDQyM1x1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCBcdTA0NWVdIExUIixuZXh0V2VlazpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJbXHUwNDIzXSBkZGRkIFtcdTA0NWVdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJbXHUwNDIzIFx1MDQzY1x1MDQ1Nlx1MDQzZFx1MDQ0M1x1MDQzYlx1MDQ0M1x1MDQ0''@;'; put 'put ''ZV0gZGRkZCBbXHUwNDVlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MjMgXHUwNDNjXHUwNDU2XHUwNDNkXHUwNDQzXHUwNDNiXHUwNDRiXSBkZGRkIFtcdTA0NWVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzZlx1MDQ0MFx1''@;'; put 'put ''MDQzMFx1MDQzNyAlcyIscGFzdDoiJXMgXHUwNDQyXHUwNDMwXHUwNDNjXHUwNDQzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0MzBcdTA0M2JcdTA0NGNcdTA0M2FcdTA0NTYgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtLG1tOm0saDptLGhoOm0sZDoiXHUwNDM0''@;'; put 'put ''XHUwNDM3XHUwNDM1XHUwNDNkXHUwNDRjIixkZDptLE06Ilx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0NiIsTU06bSx5OiJcdTA0MzNcdTA0M2VcdTA0MzQiLHl5Om19LG1lcmlkaWVtUGFyc2U6L1x1MDQzZFx1MDQzZVx1MDQ0N1x1MDQ0YnxcdTA0NDBcdTA0MzBcdTA0M2RcdTA0NTZc''@;'; put 'put ''dTA0NDZcdTA0NGJ8XHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzMFx1MDQ0MFx1MDQzMC8saXNQTTpmdW5jdGlvbihNKXtyZXR1cm4vXihcdTA0MzRcdTA0M2RcdTA0NGZ8XHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUwNDMwKSQvLnRlc3QoTSl9LG1l''@;'; put 'put ''cmlkaWVtOmZ1bmN0aW9uKE0sTyxJKXtyZXR1cm4gTTw0PyJcdTA0M2RcdTA0M2VcdTA0NDdcdTA0NGIiOk08MTI/Ilx1MDQ0MFx1MDQzMFx1MDQzZFx1MDQ1Nlx1MDQ0Nlx1MDQ0YiI6TTwxNz8iXHUwNDM0XHUwNDNkXHUwNDRmIjoiXHUwNDMyXHUwNDM1XHUwNDQ3XHUwNDMwXHUwNDQwXHUw''@;'; put 'put ''NDMwIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDU2fFx1MDQ0YnxcdTA0MzNcdTA0MzApLyxvcmRpbmFsOmZ1bmN0aW9uKE0sTyl7c3dpdGNoKE8pe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBNJTEwIT0yJiZNJTEwIT0z''@;'; put 'put ''fHxNJTEwMD09MTJ8fE0lMTAwPT0xMz9NKyItXHUwNDRiIjpNKyItXHUwNDU2IjtjYXNlIkQiOnJldHVybiBNKyItXHUwNDMzXHUwNDMwIjtkZWZhdWx0OnJldHVybiBNfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sMjg1NjQ6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9u''@;'; put 'put ''KG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJiZyIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDQzXHUwNDMwXHUwNDQwXHUwNDM4X1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMw''@;'; put 'put ''XHUwNDNmXHUwNDQwXHUwNDM4XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0NGVcdTA0M2RcdTA0MzhfXHUwNDRlXHUwNDNiXHUwNDM4X1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2ZcdTA0NDJcdTA0MzVcdTA0M2NcdTA0MzJcdTA0''@;'; put 'put ''NDBcdTA0MzhfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDNlXHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZFx1MDQzZVx1MDQzNVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzgiLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQ0M19cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDRlXHUwNDNkXHUwNDM4X1x1MDQ0ZVx1MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNfXHUw''@;'; put 'put ''NDQxXHUwNDM1XHUwNDNmX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0MzVfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUw''@;'; put 'put ''NDM1XHUwNDNiXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0NGZcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDRhXHUwNDQwXHUwNDQyXHUwNDRhXHUwNDNhX1x1MDQzZlx1''@;'; put 'put ''MDQzNVx1MDQ0Mlx1MDQ0YVx1MDQzYV9cdTA0NDFcdTA0NGFcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDNkXHUwNDM1XHUwNDM0X1x1MDQzZlx1MDQzZVx1MDQzZF9cdTA0MzJcdTA0NDJcdTA0M2VfXHUwNDQxXHUwNDQwXHUwNDRmX1x1''@;'; put 'put ''MDQ0N1x1MDQzNVx1MDQ0Ml9cdTA0M2ZcdTA0MzVcdTA0NDJfXHUwNDQxXHUwNDRhXHUwNDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0M2RcdTA0MzRfXHUwNDNmXHUwNDNkX1x1MDQzMlx1MDQ0Ml9cdTA0NDFcdTA0NDBfXHUwNDQ3XHUwNDQyX1x1MDQzZlx1MDQ0Ml9cdTA0NDFc''@;'; put 'put ''dTA0MzEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1''@;'; put 'put ''MDQxNFx1MDQzZFx1MDQzNVx1MDQ0MSBcdTA0MzJdIExUIixuZXh0RGF5OiJbXHUwNDIzXHUwNDQyXHUwNDQwXHUwNDM1IFx1MDQzMl0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0MzJdIExUIixsYXN0RGF5OiJbXHUwNDEyXHUwNDQ3XHUwNDM1XHUwNDQwXHUwNDMwIFx1MDQzMl0gTFQiLGxh''@;'; put 'put ''c3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbXHUwNDFjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDNiXHUwNDMwXHUwNDQyXHUwNDMwXSBkZGRkIFtcdTA0MzJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0''@;'; put 'put ''dXJuIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0MzBcdTA0M2JcdTA0MzhcdTA0NGZdIGRkZGQgW1x1MDQzMl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0ICVzIixwYXN0OiJcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0MzRc''@;'; put 'put ''dTA0MzggJXMiLHM6Ilx1MDQzZFx1MDQ0Zlx1MDQzYVx1MDQzZVx1MDQzYlx1MDQzYVx1MDQzZSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzgiLG06Ilx1MDQzY1x1MDQz''@;'; put 'put ''OFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzOCIsaDoiXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDMwIixkOiJcdTA0MzRcdTA0MzVcdTA0M2QiLGRkOiIlZCBcdTA0MzRc''@;'; put 'put ''dTA0MzVcdTA0M2RcdTA0MzAiLHc6Ilx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1MDQzMCIsd3c6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzNFx1MDQzY1x1MDQzOFx1MDQ0Nlx1MDQzOCIsTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUwNDNj''@;'; put 'put ''XHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIix5OiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiLHl5OiIlZCBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzgifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0MzVcdTA0MzJ8''@;'; put 'put ''XHUwNDM1XHUwNDNkfFx1MDQ0Mlx1MDQzOHxcdTA0MzJcdTA0Mzh8XHUwNDQwXHUwNDM4fFx1MDQzY1x1MDQzOCkvLG9yZGluYWw6ZnVuY3Rpb24obSl7dmFyIHNlPW0lMTAsTT1tJTEwMDtyZXR1cm4gMD09PW0/bSsiLVx1MDQzNVx1MDQzMiI6MD09PU0/bSsiLVx1MDQzNVx1MDQzZCI6TT4x''@;'; put 'put ''MCYmTTwyMD9tKyItXHUwNDQyXHUwNDM4IjoxPT09c2U/bSsiLVx1MDQzMlx1MDQzOCI6Mj09PXNlP20rIi1cdTA0NDBcdTA0MzgiOjc9PT1zZXx8OD09PXNlP20rIi1cdTA0M2NcdTA0MzgiOm0rIi1cdTA0NDJcdTA0MzgifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw5NzQ2''@;'; put 'put ''MjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImJtIix7bW9udGhzOiJaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fsb19Bd2lyaWxpa2Fsb19NXHUwMjVia2Fsb19adXdcdTAyNWJua2Fsb19adWx1eWVrYWxvX1V0''@;'; put 'put ''aWthbG9fU1x1MDI1YnRhbmJ1cnVrYWxvX1x1MDI1NGt1dFx1MDI1NGJ1cnVrYWxvX05vd2FuYnVydWthbG9fRGVzYW5idXJ1a2FsbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiWmFuX0Zld19NYXJfQXdpX01cdTAyNWJfWnV3X1p1bF9VdGlfU1x1MDI1YnRfXHUwMjU0a3VfTm93X0RlcyIu''@;'; put 'put ''c3BsaXQoIl8iKSx3ZWVrZGF5czoiS2FyaV9OdFx1MDI1Ym5cdTAyNWJuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikthcl9OdFx1MDI1Yl9UYXJfQXJhX0FsYV9KdW1fU2liIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJLYV9O''@;'; put 'put ''dF9UYV9Bcl9BbF9KdV9TaSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIixMTEw6Ik1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhI''@;'; put 'put ''Om1tIixMTExMOiJkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbFx1MDI1YnJcdTAyNWJdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltCaSBsXHUwMjViclx1MDI1Yl0gTFQiLG5leHREYXk6IltTaW5pIGxcdTAyNWJyXHUwMjViXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2RvbiBs''@;'; put 'put ''XHUwMjViclx1MDI1Yl0gTFQiLGxhc3REYXk6IltLdW51IGxcdTAyNWJyXHUwMjViXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3RcdTAyNWJtXHUwMjVibmVuIGxcdTAyNWJyXHUwMjViXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMga1x1MDI1NG5cdTAyNTQiLHBh''@;'; put 'put ''c3Q6ImEgYlx1MDI1YiAlcyBiXHUwMjU0IixzOiJzYW5nYSBkYW1hIGRhbWEiLHNzOiJzZWtvbmRpICVkIixtOiJtaW5pdGkga2VsZW4iLG1tOiJtaW5pdGkgJWQiLGg6ImxcdTAyNWJyXHUwMjViIGtlbGVuIixoaDoibFx1MDI1YnJcdTAyNWIgJWQiLGQ6InRpbGUga2VsZW4iLGRkOiJ0aWxl''@;'; put 'put ''ICVkIixNOiJrYWxvIGtlbGVuIixNTToia2FsbyAlZCIseToic2FuIGtlbGVuIix5eToic2FuICVkIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNDM0Mzg6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezE6Ilx1MDllNyIsMjoi''@;'; put 'put ''XHUwOWU4IiwzOiJcdTA5ZTkiLDQ6Ilx1MDllYSIsNToiXHUwOWViIiw2OiJcdTA5ZWMiLDc6Ilx1MDllZCIsODoiXHUwOWVlIiw5OiJcdTA5ZWYiLDA6Ilx1MDllNiJ9LG09eyJcdTA5ZTciOiIxIiwiXHUwOWU4IjoiMiIsIlx1MDllOSI6IjMiLCJcdTA5ZWEiOiI0IiwiXHUwOWViIjoiNSIs''@;'; put 'put ''Ilx1MDllYyI6IjYiLCJcdTA5ZWQiOiI3IiwiXHUwOWVlIjoiOCIsIlx1MDllZiI6IjkiLCJcdTA5ZTYiOiIwIn07b2UuZGVmaW5lTG9jYWxlKCJibi1iZCIse21vbnRoczoiXHUwOTljXHUwOWJlXHUwOWE4XHUwOWMxXHUwOWRmXHUwOWJlXHUwOWIwXHUwOWJmX1x1MDlhYlx1MDljN1x1MDlh''@;'; put 'put ''Y1x1MDljZFx1MDliMFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWVcdTA5YmVcdTA5YjBcdTA5Y2RcdTA5OWFfXHUwOThmXHUwOWFhXHUwOWNkXHUwOWIwXHUwOWJmXHUwOWIyX1x1MDlhZVx1MDljN19cdTA5OWNcdTA5YzFcdTA5YThfXHUwOTljXHUwOWMxXHUwOWIyXHUw''@;'; put 'put ''OWJlXHUwOTg3X1x1MDk4Nlx1MDk5N1x1MDliOFx1MDljZFx1MDk5Zl9cdTA5YjhcdTA5YzdcdTA5YWFcdTA5Y2RcdTA5OWZcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOTg1XHUwOTk1XHUwOWNkXHUwOTlmXHUwOWNiXHUwOWFjXHUwOWIwX1x1MDlhOFx1MDlhZFx1MDljN1x1''@;'; put 'put ''MDlhZVx1MDljZFx1MDlhY1x1MDliMF9cdTA5YTFcdTA5YmZcdTA5YjhcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMV9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFfXHUwOWFl''@;'; put 'put ''XHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUw''@;'; put 'put ''OWM3XHUwOWFhXHUwOWNkXHUwOTlmX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYl9cdTA5YThcdTA5YWRcdTA5YzdfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA5YjBcdTA5YWNcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI4XHUw''@;'; put 'put ''OWNiXHUwOWFlXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWNcdTA5YzFcdTA5YTdcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWFjXHUwOWMzXHUwOWI5XHUwOWI4XHUwOWNkXHUwOWFhXHUwOWE0XHUwOWJmXHUw''@;'; put 'put ''OWFjXHUwOWJlXHUwOWIwX1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMFx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YThcdTA5YmZcdTA5YWNcdTA5YmVcdTA5YjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1MDlh''@;'; put 'put ''ZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZl9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzTWluOiJcdTA5YjBcdTA5YWNcdTA5YmZfXHUwOWI4XHUwOWNiXHUwOWFlX1x1MDlhZVx1MDk5OVx1MDljZFx1MDk5N1x1MDliMl9cdTA5YWNcdTA5YzFcdTA5YTdfXHUwOWFjXHUwOWMzXHUwOWI5X1x1MDliNlx1MDljMVx1MDk5NVx1MDljZFx1MDliMF9cdTA5YjZcdTA5YThcdTA5''@;'; put 'put ''YmYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIixMVFM6IkEgaDptbTpzcyBcdTA5YjhcdTA5YWVcdTA5ZGYiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDliOFx1MDlh''@;'; put 'put ''ZVx1MDlkZiIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDk4Nlx1MDk5Y10gTFQiLG5leHREYXk6IltcdTA5ODZcdTA5OTdcdTA5YmVcdTA5YWVcdTA5YzBcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixu''@;'; put 'put ''ZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IltcdTA5OTdcdTA5YTRcdTA5OTVcdTA5YmVcdTA5YjJdIExUIixsYXN0V2VlazoiW1x1MDk5N1x1MDlhNF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MDlhYVx1MDliMFx1MDljNyIscGFzdDoi''@;'; put 'put ''JXMgXHUwOTg2XHUwOTk3XHUwOWM3IixzOiJcdTA5OTVcdTA5ZGZcdTA5YzdcdTA5OTUgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixzczoiJWQgXHUwOWI4XHUwOWM3XHUwOTk1XHUwOWM3XHUwOWE4XHUwOWNkXHUwOWExIixtOiJcdTA5OGZcdTA5OTUgXHUw''@;'; put 'put ''OWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixtbToiJWQgXHUwOWFlXHUwOWJmXHUwOWE4XHUwOWJmXHUwOTlmIixoOiJcdTA5OGZcdTA5OTUgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixoaDoiJWQgXHUwOTk4XHUwOWE4XHUwOWNkXHUwOTlmXHUwOWJlIixkOiJcdTA5OGZc''@;'; put 'put ''dTA5OTUgXHUwOWE2XHUwOWJmXHUwOWE4IixkZDoiJWQgXHUwOWE2XHUwOWJmXHUwOWE4IixNOiJcdTA5OGZcdTA5OTUgXHUwOWFlXHUwOWJlXHUwOWI4IixNTToiJWQgXHUwOWFlXHUwOWJlXHUwOWI4Iix5OiJcdTA5OGZcdTA5OTUgXHUwOWFjXHUwOTliXHUwOWIwIix5eToiJWQgXHUwOWFj''@;'; put 'put ''XHUwOTliXHUwOWIwIn0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MDllN1x1MDllOFx1MDllOVx1MDllYVx1MDllYlx1MDllY1x1MDllZFx1MDllZVx1MDllZlx1MDllNl0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9u''@;'; put 'put ''KE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sbWVyaWRpZW1QYXJzZTovXHUwOWIwXHUwOWJlXHUwOWE0fFx1MDlhZFx1MDljYlx1MDliMHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1''@;'; put 'put ''MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjhcdTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmV8XHUwOWIwXHUwOWJlXHUwOWE0LyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gMTI9PT1NJiYoTT0wKSwiXHUwOWIwXHUwOWJlXHUwOWE0Ij09PU8/''@;'; put 'put ''TTw0P006TSsxMjoiXHUwOWFkXHUwOWNiXHUwOWIwIj09PU98fCJcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjIiPT09Tz9NOiJcdTA5YTZcdTA5YzFcdTA5YWFcdTA5YzFcdTA5YjAiPT09Tz9NPj0zP006TSsxMjoiXHUwOWFjXHUwOWJmXHUwOTk1XHUwOWJlXHUwOWIyIj09PU98fCJcdTA5Yjhc''@;'; put 'put ''dTA5YThcdTA5Y2RcdTA5YTdcdTA5Y2RcdTA5YWZcdTA5YmUiPT09Tz9NKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDQ/Ilx1MDliMFx1MDliZVx1MDlhNCI6TTw2PyJcdTA5YWRcdTA5Y2JcdTA5YjAiOk08MTI/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDli''@;'; put 'put ''MiI6TTwxNT8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpNPDE4PyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOk08MjA/Ilx1MDliOFx1MDlhOFx1MDljZFx1MDlhN1x1MDljZFx1MDlhZlx1MDliZSI6Ilx1MDliMFx1MDliZVx1MDlhNCJ9LHdlZWs6e2RvdzowLGRv''@;'; put 'put ''eTo2fX0pfShSKDk3NTg2KSl9LDE3MTA3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA5ZTciLDI6Ilx1MDllOCIsMzoiXHUwOWU5Iiw0OiJcdTA5ZWEiLDU6Ilx1MDllYiIsNjoiXHUwOWVjIiw3OiJcdTA5ZWQiLDg6Ilx1MDllZSIs''@;'; put 'put ''OToiXHUwOWVmIiwwOiJcdTA5ZTYifSxtPXsiXHUwOWU3IjoiMSIsIlx1MDllOCI6IjIiLCJcdTA5ZTkiOiIzIiwiXHUwOWVhIjoiNCIsIlx1MDllYiI6IjUiLCJcdTA5ZWMiOiI2IiwiXHUwOWVkIjoiNyIsIlx1MDllZSI6IjgiLCJcdTA5ZWYiOiI5IiwiXHUwOWU2IjoiMCJ9O29lLmRlZmlu''@;'; put 'put ''ZUxvY2FsZSgiYm4iLHttb250aHM6Ilx1MDk5Y1x1MDliZVx1MDlhOFx1MDljMVx1MDlkZlx1MDliZVx1MDliMFx1MDliZl9cdTA5YWJcdTA5YzdcdTA5YWNcdTA5Y2RcdTA5YjBcdTA5YzFcdTA5ZGZcdTA5YmVcdTA5YjBcdTA5YmZfXHUwOWFlXHUwOWJlXHUwOWIwXHUwOWNkXHUwOTlhX1x1''@;'; put 'put ''MDk4Zlx1MDlhYVx1MDljZFx1MDliMFx1MDliZlx1MDliMl9cdTA5YWVcdTA5YzdfXHUwOTljXHUwOWMxXHUwOWE4X1x1MDk5Y1x1MDljMVx1MDliMlx1MDliZVx1MDk4N19cdTA5ODZcdTA5OTdcdTA5YjhcdTA5Y2RcdTA5OWZfXHUwOWI4XHUwOWM3XHUwOWFhXHUwOWNkXHUwOTlmXHUwOWM3''@;'; put 'put ''XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwX1x1MDk4NVx1MDk5NVx1MDljZFx1MDk5Zlx1MDljYlx1MDlhY1x1MDliMF9cdTA5YThcdTA5YWRcdTA5YzdcdTA5YWVcdTA5Y2RcdTA5YWNcdTA5YjBfXHUwOWExXHUwOWJmXHUwOWI4XHUwOWM3XHUwOWFlXHUwOWNkXHUwOWFjXHUwOWIwIi5zcGxp''@;'; put 'put ''dCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA5OWNcdTA5YmVcdTA5YThcdTA5YzFfXHUwOWFiXHUwOWM3XHUwOWFjXHUwOWNkXHUwOWIwXHUwOWMxX1x1MDlhZVx1MDliZVx1MDliMFx1MDljZFx1MDk5YV9cdTA5OGZcdTA5YWFcdTA5Y2RcdTA5YjBcdTA5YmZcdTA5YjJfXHUwOWFlXHUwOWM3X1x1''@;'; put 'put ''MDk5Y1x1MDljMVx1MDlhOF9cdTA5OWNcdTA5YzFcdTA5YjJcdTA5YmVcdTA5ODdfXHUwOTg2XHUwOTk3XHUwOWI4XHUwOWNkXHUwOTlmX1x1MDliOFx1MDljN1x1MDlhYVx1MDljZFx1MDk5Zl9cdTA5ODVcdTA5OTVcdTA5Y2RcdTA5OWZcdTA5Y2JfXHUwOWE4XHUwOWFkXHUwOWM3X1x1MDlh''@;'; put 'put ''MVx1MDliZlx1MDliOFx1MDljNyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwOWIwXHUwOWFjXHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwX1x1MDliOFx1MDljYlx1MDlhZVx1MDlhY1x1MDliZVx1MDliMF9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5YjJcdTA5YWNcdTA5YmVcdTA5YjBf''@;'; put 'put ''XHUwOWFjXHUwOWMxXHUwOWE3XHUwOWFjXHUwOWJlXHUwOWIwX1x1MDlhY1x1MDljM1x1MDliOVx1MDliOFx1MDljZFx1MDlhYVx1MDlhNFx1MDliZlx1MDlhY1x1MDliZVx1MDliMF9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBcdTA5YWNcdTA5YmVcdTA5YjBfXHUwOWI2XHUwOWE4''@;'; put 'put ''XHUwOWJmXHUwOWFjXHUwOWJlXHUwOWIwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDliMFx1MDlhY1x1MDliZl9cdTA5YjhcdTA5Y2JcdTA5YWVfXHUwOWFlXHUwOTk5XHUwOWNkXHUwOTk3XHUwOWIyX1x1MDlhY1x1MDljMVx1MDlhN19cdTA5YWNcdTA5YzNcdTA5YjlcdTA5Yjhc''@;'; put 'put ''dTA5Y2RcdTA5YWFcdTA5YTRcdTA5YmZfXHUwOWI2XHUwOWMxXHUwOTk1XHUwOWNkXHUwOWIwX1x1MDliNlx1MDlhOFx1MDliZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOWIwXHUwOWFjXHUwOWJmX1x1MDliOFx1MDljYlx1MDlhZV9cdTA5YWVcdTA5OTlcdTA5Y2RcdTA5OTdcdTA5''@;'; put 'put ''YjJfXHUwOWFjXHUwOWMxXHUwOWE3X1x1MDlhY1x1MDljM1x1MDliOV9cdTA5YjZcdTA5YzFcdTA5OTVcdTA5Y2RcdTA5YjBfXHUwOWI2XHUwOWE4XHUwOWJmIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1MDliOFx1MDlhZVx1MDlkZiIsTFRTOiJBIGg6bW06c3Mg''@;'; put 'put ''XHUwOWI4XHUwOWFlXHUwOWRmIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5YjhcdTA5YWVcdTA5ZGYiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOWI4XHUwOWFlXHUwOWRmIn0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltcdTA5ODZcdTA5OWNdIExUIixuZXh0RGF5OiJbXHUwOTg2XHUwOTk3XHUwOWJlXHUwOWFlXHUwOWMwXHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwOTk3XHUwOWE0XHUwOTk1XHUwOWJlXHUwOWIyXSBMVCIsbGFzdFdlZWs6Iltc''@;'; put 'put ''dTA5OTdcdTA5YTRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA5YWFcdTA5YjBcdTA5YzciLHBhc3Q6IiVzIFx1MDk4Nlx1MDk5N1x1MDljNyIsczoiXHUwOTk1XHUwOWRmXHUwOWM3XHUwOTk1IFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1''@;'; put 'put ''MDlhOFx1MDljZFx1MDlhMSIsc3M6IiVkIFx1MDliOFx1MDljN1x1MDk5NVx1MDljN1x1MDlhOFx1MDljZFx1MDlhMSIsbToiXHUwOThmXHUwOTk1IFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsbW06IiVkIFx1MDlhZVx1MDliZlx1MDlhOFx1MDliZlx1MDk5ZiIsaDoiXHUwOThm''@;'; put 'put ''XHUwOTk1IFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsaGg6IiVkIFx1MDk5OFx1MDlhOFx1MDljZFx1MDk5Zlx1MDliZSIsZDoiXHUwOThmXHUwOTk1IFx1MDlhNlx1MDliZlx1MDlhOCIsZGQ6IiVkIFx1MDlhNlx1MDliZlx1MDlhOCIsTToiXHUwOThmXHUwOTk1IFx1MDlhZVx1''@;'; put 'put ''MDliZVx1MDliOCIsTU06IiVkIFx1MDlhZVx1MDliZVx1MDliOCIseToiXHUwOThmXHUwOTk1IFx1MDlhY1x1MDk5Ylx1MDliMCIseXk6IiVkIFx1MDlhY1x1MDk5Ylx1MDliMCJ9LHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1tcdTA5ZTdcdTA5ZThcdTA5ZTlcdTA5''@;'; put 'put ''ZWFcdTA5ZWJcdTA5ZWNcdTA5ZWRcdTA5ZWVcdTA5ZWZcdTA5ZTZdL2csZnVuY3Rpb24oTyl7cmV0dXJuIG1bT119KX0scG9zdGZvcm1hdDpmdW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKE8pe3JldHVybiB4W09dfSl9LG1lcmlkaWVtUGFyc2U6L1x1MDliMFx1''@;'; put 'put ''MDliZVx1MDlhNHxcdTA5YjhcdTA5OTVcdTA5YmVcdTA5YjJ8XHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwfFx1MDlhY1x1MDliZlx1MDk5NVx1MDliZVx1MDliMnxcdTA5YjBcdTA5YmVcdTA5YTQvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihNLE8pe3JldHVybiAxMj09PU0mJihNPTAp''@;'; put 'put ''LCJcdTA5YjBcdTA5YmVcdTA5YTQiPT09TyYmTT49NHx8Ilx1MDlhNlx1MDljMVx1MDlhYVx1MDljMVx1MDliMCI9PT1PJiZNPDV8fCJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiPT09Tz9NKzEyOk19LG1lcmlkaWVtOmZ1bmN0aW9uKE0sTyxJKXtyZXR1cm4gTTw0PyJcdTA5YjBc''@;'; put 'put ''dTA5YmVcdTA5YTQiOk08MTA/Ilx1MDliOFx1MDk5NVx1MDliZVx1MDliMiI6TTwxNz8iXHUwOWE2XHUwOWMxXHUwOWFhXHUwOWMxXHUwOWIwIjpNPDIwPyJcdTA5YWNcdTA5YmZcdTA5OTVcdTA5YmVcdTA5YjIiOiJcdTA5YjBcdTA5YmVcdTA5YTQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0o''@;'; put 'put ''Uig5NzU4NikpfSw5MDA0OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTBmMjEiLDI6Ilx1MGYyMiIsMzoiXHUwZjIzIiw0OiJcdTBmMjQiLDU6Ilx1MGYyNSIsNjoiXHUwZjI2Iiw3OiJcdTBmMjciLDg6Ilx1MGYyOCIsOToiXHUwZjI5''@;'; put 'put ''IiwwOiJcdTBmMjAifSxtPXsiXHUwZjIxIjoiMSIsIlx1MGYyMiI6IjIiLCJcdTBmMjMiOiIzIiwiXHUwZjI0IjoiNCIsIlx1MGYyNSI6IjUiLCJcdTBmMjYiOiI2IiwiXHUwZjI3IjoiNyIsIlx1MGYyOCI6IjgiLCJcdTBmMjkiOiI5IiwiXHUwZjIwIjoiMCJ9O29lLmRlZmluZUxvY2FsZSgi''@;'; put 'put ''Ym8iLHttb250aHM6Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1MVx1MGY0NFx1MGYwYlx1MGY1NFx1MGY3Y19cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNDJcdTBmNDlcdTBmNzJcdTBmNjZcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2''@;'; put 'put ''XHUwZjBiXHUwZjQyXHUwZjY2XHUwZjc0XHUwZjU4XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY1ZVx1MGY3Mlx1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNjNcdTBmOTRcdTBmMGJcdTBmNTRfXHUwZjVm''@;'; put 'put ''XHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjUxXHUwZmIyXHUwZjc0XHUwZjQyXHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NF9cdTBmNWZcdTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZc''@;'; put 'put ''dTBmNjJcdTBmOTJcdTBmYjFcdTBmNTFcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjUxXHUwZjQyXHUwZjc0XHUwZjBiXHUwZjU0X1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY1Nlx1MGY0NVx1MGY3NFx1MGYwYlx1MGY1NF9cdTBmNWZc''@;'; put 'put ''dTBmYjNcdTBmMGJcdTBmNTZcdTBmMGJcdTBmNTZcdTBmNDVcdTBmNzRcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTRfXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiXHUwZjU2XHUwZjQ1XHUwZjc0XHUwZjBiXHUwZjQyXHUwZjQ5XHUwZjcyXHUwZjY2XHUw''@;'; put 'put ''ZjBiXHUwZjU0Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBmNWZcdTBmYjNcdTBmMGIxX1x1MGY1Zlx1MGZiM1x1MGYwYjJfXHUwZjVmXHUwZmIzXHUwZjBiM19cdTBmNWZcdTBmYjNcdTBmMGI0X1x1MGY1Zlx1MGZiM1x1MGYwYjVfXHUwZjVmXHUwZmIzXHUwZjBiNl9cdTBmNWZcdTBm''@;'; put 'put ''YjNcdTBmMGI3X1x1MGY1Zlx1MGZiM1x1MGYwYjhfXHUwZjVmXHUwZmIzXHUwZjBiOV9cdTBmNWZcdTBmYjNcdTBmMGIxMF9cdTBmNWZcdTBmYjNcdTBmMGIxMV9cdTBmNWZcdTBmYjNcdTBmMGIxMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydFJlZ2V4Oi9eKFx1MGY1Zlx1MGZiM1x1MGYwYlxk''@;'; put 'put ''ezEsMn0pLyxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNDlcdTBmNzJcdTBmMGJcdTBmNThcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjVmXHUwZmIzXHUwZjBiXHUwZjU2XHUwZjBiX1x1MGY0Mlx1MGY1Zlx1MGY2''@;'; put 'put ''MFx1MGYwYlx1MGY1OFx1MGY3Mlx1MGY0Mlx1MGYwYlx1MGY1MVx1MGY1OFx1MGY2Mlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNjNcdTBmYjdcdTBmNDJcdTBmMGJcdTBmNTRcdTBmMGJfXHUwZjQyXHUwZjVmXHUwZjYwXHUwZjBiXHUwZjU1XHUwZjc0XHUwZjYyXHUwZjBi''@;'; put 'put ''XHUwZjU2XHUwZjc0X1x1MGY0Mlx1MGY1Zlx1MGY2MFx1MGYwYlx1MGY1NFx1MGYwYlx1MGY2Nlx1MGY0NFx1MGY2Nlx1MGYwYl9cdTBmNDJcdTBmNWZcdTBmNjBcdTBmMGJcdTBmNjZcdTBmYTRcdTBmN2FcdTBmNTNcdTBmMGJcdTBmNTRcdTBmMGIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiXHUwZjQ5XHUwZjcyXHUwZjBiXHUwZjU4XHUwZjBiX1x1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYl9cdTBmNThcdTBmNzJcdTBmNDJcdTBmMGJcdTBmNTFcdTBmNThcdTBmNjJcdTBmMGJfXHUwZjYzXHUwZmI3XHUwZjQyXHUwZjBiXHUwZjU0XHUwZjBiX1x1MGY1NVx1MGY3NFx1''@;'; put 'put ''MGY2Mlx1MGYwYlx1MGY1Nlx1MGY3NF9cdTBmNTRcdTBmMGJcdTBmNjZcdTBmNDRcdTBmNjZcdTBmMGJfXHUwZjY2XHUwZmE0XHUwZjdhXHUwZjUzXHUwZjBiXHUwZjU0XHUwZjBiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBmNDlcdTBmNzJfXHUwZjVmXHUwZmIzX1x1MGY1OFx1MGY3''@;'; put 'put ''Mlx1MGY0Ml9cdTBmNjNcdTBmYjdcdTBmNDJfXHUwZjU1XHUwZjc0XHUwZjYyX1x1MGY2Nlx1MGY0NFx1MGY2Nl9cdTBmNjZcdTBmYTRcdTBmN2FcdTBmNTMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoi''@;'; put 'put ''RCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZjUxXHUwZjcyXHUwZjBiXHUwZjYyXHUwZjcyXHUwZjQ0XSBMVCIsbmV4dERheToiW1x1MGY2Nlx1MGY0NFx1MGYwYlx1''@;'; put 'put ''MGY0OVx1MGY3Mlx1MGY1M10gTFQiLG5leHRXZWVrOiJbXHUwZjU2XHUwZjUxXHUwZjc0XHUwZjUzXHUwZjBiXHUwZjU1XHUwZmIyXHUwZjQyXHUwZjBiXHUwZjYyXHUwZjk3XHUwZjdhXHUwZjY2XHUwZjBiXHUwZjU4XSwgTFQiLGxhc3REYXk6IltcdTBmNDFcdTBmMGJcdTBmNjZcdTBmNDRd''@;'; put 'put ''IExUIixsYXN0V2VlazoiW1x1MGY1Nlx1MGY1MVx1MGY3NFx1MGY1M1x1MGYwYlx1MGY1NVx1MGZiMlx1MGY0Mlx1MGYwYlx1MGY1OFx1MGY1MFx1MGY2MFx1MGYwYlx1MGY1OF0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGY2M1x1MGYwYiIs''@;'; put 'put ''cGFzdDoiJXMgXHUwZjY2XHUwZjk0XHUwZjUzXHUwZjBiXHUwZjYzIixzOiJcdTBmNjNcdTBmNThcdTBmMGJcdTBmNjZcdTBmNDQiLHNzOiIlZCBcdTBmNjZcdTBmOTBcdTBmNjJcdTBmMGJcdTBmNDZcdTBmMGQiLG06Ilx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OFx1MGYwYlx1MGY0''@;'; put 'put ''Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsbW06IiVkIFx1MGY2Nlx1MGY5MFx1MGY2Mlx1MGYwYlx1MGY1OCIsaDoiXHUwZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUwZjdjXHUwZjUxXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIixoaDoiJWQgXHUwZjQ2XHUwZjc0XHUwZjBiXHUwZjVhXHUw''@;'; put 'put ''ZjdjXHUwZjUxIixkOiJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNDVcdTBmNzJcdTBmNDIiLGRkOiIlZCBcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGIiLE06Ilx1MGY1Zlx1MGZiM1x1MGYwYlx1MGY1Nlx1MGYwYlx1MGY0Mlx1MGY0NVx1MGY3Mlx1MGY0MiIsTU06IiVkIFx1''@;'; put 'put ''MGY1Zlx1MGZiM1x1MGYwYlx1MGY1NiIseToiXHUwZjYzXHUwZjdjXHUwZjBiXHUwZjQyXHUwZjQ1XHUwZjcyXHUwZjQyIix5eToiJWQgXHUwZjYzXHUwZjdjIn0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MGYyMVx1MGYyMlx1MGYyM1x1MGYyNFx1MGYyNVx1''@;'; put 'put ''MGYyNlx1MGYyN1x1MGYyOFx1MGYyOVx1MGYyMF0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sbWVyaWRpZW1QYXJzZTovXHUwZjU4XHUwZjVhXHUwZjUz''@;'; put 'put ''XHUwZjBiXHUwZjU4XHUwZjdjfFx1MGY1ZVx1MGY3Y1x1MGY0Mlx1MGY2Nlx1MGYwYlx1MGY0MFx1MGY2NnxcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNzRcdTBmNDR8XHUwZjUxXHUwZjQyXHUwZjdjXHUwZjQ0XHUwZjBiXHUwZjUxXHUwZjQyfFx1MGY1OFx1MGY1YVx1MGY1''@;'; put 'put ''M1x1MGYwYlx1MGY1OFx1MGY3Yy8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKE0sTyl7cmV0dXJuIDEyPT09TSYmKE09MCksIlx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI9PT1PJiZNPj00fHwiXHUwZjQ5XHUwZjcyXHUwZjUzXHUwZjBiXHUwZjQyXHUwZjc0XHUwZjQ0Ij09''@;'; put 'put ''PU8mJk08NXx8Ilx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI9PT1PP00rMTI6TX0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDQ/Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyI6TTwxMD8iXHUwZjVlXHUwZjdjXHUwZjQy''@;'; put 'put ''XHUwZjY2XHUwZjBiXHUwZjQwXHUwZjY2IjpNPDE3PyJcdTBmNDlcdTBmNzJcdTBmNTNcdTBmMGJcdTBmNDJcdTBmNzRcdTBmNDQiOk08MjA/Ilx1MGY1MVx1MGY0Mlx1MGY3Y1x1MGY0NFx1MGYwYlx1MGY1MVx1MGY0MiI6Ilx1MGY1OFx1MGY1YVx1MGY1M1x1MGYwYlx1MGY1OFx1MGY3YyJ9''@;'; put 'put ''LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDUwOTI3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoQixaLFkpe3JldHVybiBCKyIgIitmdW5jdGlvbiBNKEIsWil7cmV0dXJuIDI9PT1aP2Z1bmN0aW9uIE8oQil7dmFyIFo9''@;'; put 'put ''e206InYiLGI6InYiLGQ6InoifTtyZXR1cm4gdm9pZCAwPT09WltCLmNoYXJBdCgwKV0/QjpaW0IuY2hhckF0KDApXStCLnN1YnN0cmluZygxKX0oQik6Qn0oe21tOiJtdW51dGVubiIsTU06Im1peiIsZGQ6ImRldmV6aCJ9W1ldLEIpfWZ1bmN0aW9uIHNlKEIpe3JldHVybiBCPjk/c2UoQiUx''@;'; put 'put ''MCk6Qn12YXIgST1bL15nZW4vaSwvXmNbXHUwMmJjXCddaHdlL2ksL15tZXUvaSwvXmVici9pLC9ebWFlL2ksL14obWV6fGV2ZSkvaSwvXmdvdS9pLC9eZW9zL2ksL15nd2UvaSwvXmhlci9pLC9eZHUvaSwvXmtlci9pXSxqPS9eKGdlbnZlcnxjW1x1MDJiY1wnXWh3ZXZyZXJ8bWV1cnpofGVi''@;'; put 'put ''cmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1fGdlbnxjW1x1MDJiY1wnXWh3ZXxtZXV8ZWJyfG1hZXxldmV8Z291fGVvc3xnd2V8aGVyfGR1fGtlcikvaSx6PVsvXlN1L2ksL15MdS9pLC9eTWUoW15yXXwkKS9pLC9eTWVyL2ksL15ZYS9pLC9eR3cv''@;'; put 'put ''aSwvXlNhL2ldO29lLmRlZmluZUxvY2FsZSgiYnIiLHttb250aHM6IkdlbnZlcl9DXHUwMmJjaHdldnJlcl9NZXVyemhfRWJyZWxfTWFlX01lemhldmVuX0dvdWVyZV9Fb3N0X0d3ZW5nb2xvX0hlcmVfRHVfS2VyenUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikdlbl9DXHUwMmJjaHdlX01l''@;'; put 'put ''dV9FYnJfTWFlX0V2ZV9Hb3VfRW9zX0d3ZV9IZXJfRHVfS2VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdWxfTHVuX01ldXJ6aF9NZXJjXHUwMmJjaGVyX1lhb3VfR3dlbmVyX1NhZG9ybiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdWxfTHVuX01ldV9NZXJfWWFvX0d3ZV9TYWQiLnNw''@;'; put 'put ''bGl0KCJfIiksd2Vla2RheXNNaW46IlN1X0x1X01lX01lcl9ZYV9Hd19TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlOnosZnVsbFdlZWtkYXlzUGFyc2U6Wy9ec3VsL2ksL15sdW4vaSwvXm1ldXJ6aC9pLC9ebWVyY1tcdTAyYmNcJ11oZXIvaSwvXnlhb3UvaSwvXmd3ZW5lci9pLC9ec2Fk''@;'; put 'put ''b3JuL2ldLHNob3J0V2Vla2RheXNQYXJzZTpbL15TdWwvaSwvXkx1bi9pLC9eTWV1L2ksL15NZXIvaSwvXllhby9pLC9eR3dlL2ksL15TYWQvaV0sbWluV2Vla2RheXNQYXJzZTp6LG1vbnRoc1JlZ2V4OmosbW9udGhzU2hvcnRSZWdleDpqLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGdlbnZlcnxj''@;'; put 'put ''W1x1MDJiY1wnXWh3ZXZyZXJ8bWV1cnpofGVicmVsfG1hZXxtZXpoZXZlbnxnb3VlcmV8ZW9zdHxnd2VuZ29sb3xoZXJlfGR1fGtlcnp1KS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZ2VufGNbXHUwMmJjXCddaHdlfG1ldXxlYnJ8bWFlfGV2ZXxnb3V8ZW9zfGd3ZXxoZXJ8ZHV8a2Vy''@;'; put 'put ''KS9pLG1vbnRoc1BhcnNlOkksbG9uZ01vbnRoc1BhcnNlOkksc2hvcnRNb250aHNQYXJzZTpJLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFthIHZpel0gTU1NTSBZWVlZIixMTEw6IkQgW2Egdml6XSBNTU1NIFlZWVkgSEg6''@;'; put 'put ''bW0iLExMTEw6ImRkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hpeml2IGRhXSBMVCIsbmV4dERheToiW1dhcmNcdTAyYmNob2F6aCBkYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtkYV0gTFQiLGxhc3REYXk6IltEZWNcdTAyYmNoIGRhXSBMVCIs''@;'; put 'put ''bGFzdFdlZWs6ImRkZGQgW3Bhc2V0IGRhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiYS1iZW5uICVzIixwYXN0OiIlcyBcdTAyYmN6byIsczoidW4gbmViZXVkIHNlZ29uZGVubm9ceGY5IixzczoiJWQgZWlsZW5uIixtOiJ1ciB2dW51dGVubiIsbW06eCxoOiJ1''@;'; put 'put ''biBldXIiLGhoOiIlZCBldXIiLGQ6InVuIGRldmV6aCIsZGQ6eCxNOiJ1ciBtaXoiLE1NOngseToidXIgYmxvYXoiLHl5OmZ1bmN0aW9uIG0oQil7c3dpdGNoKHNlKEIpKXtjYXNlIDE6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6Y2FzZSA5OnJldHVybiBCKyIgYmxvYXoiO2RlZmF1bHQ6cmV0dXJu''@;'; put 'put ''IEIrIiB2bG9heiJ9fX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShhXHhmMXx2ZXQpLyxvcmRpbmFsOmZ1bmN0aW9uKEIpe3JldHVybiBCKygxPT09Qj8iYVx4ZjEiOiJ2ZXQiKX0sd2Vlazp7ZG93OjEsZG95OjR9LG1lcmlkaWVtUGFyc2U6L2EubS58Zy5tLi8saXNQTTpmdW5j''@;'; put 'put ''dGlvbihCKXtyZXR1cm4iZy5tLiI9PT1CfSxtZXJpZGllbTpmdW5jdGlvbihCLFosWSl7cmV0dXJuIEI8MTI/ImEubS4iOiJnLm0uIn19KX0oUig5NzU4NikpfSw4Nzc2ODpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKE0sTyxJKXt2YXIg''@;'; put 'put ''aj1NKyIgIjtzd2l0Y2goSSl7Y2FzZSJzcyI6cmV0dXJuIGorKDE9PT1NPyJzZWt1bmRhIjoyPT09TXx8Mz09PU18fDQ9PT1NPyJzZWt1bmRlIjoic2VrdW5kaSIpO2Nhc2UibW0iOnJldHVybiBqKygxPT09TT8ibWludXRhIjoyPT09TXx8Mz09PU18fDQ9PT1NPyJtaW51dGUiOiJtaW51dGEi''@;'; put 'put ''KTtjYXNlImgiOnJldHVybiJqZWRhbiBzYXQiO2Nhc2UiaGgiOnJldHVybiBqKygxPT09TT8ic2F0IjoyPT09TXx8Mz09PU18fDQ9PT1NPyJzYXRhIjoic2F0aSIpO2Nhc2UiZGQiOnJldHVybiBqKygxPT09TT8iZGFuIjoiZGFuYSIpO2Nhc2UiTU0iOnJldHVybiBqKygxPT09TT8ibWplc2Vj''@;'; put 'put ''IjoyPT09TXx8Mz09PU18fDQ9PT1NPyJtamVzZWNhIjoibWplc2VjaSIpO2Nhc2UieXkiOnJldHVybiBqKygxPT09TT8iZ29kaW5hIjoyPT09TXx8Mz09PU18fDQ9PT1NPyJnb2RpbmUiOiJnb2RpbmEiKX19b2UuZGVmaW5lTG9jYWxlKCJicyIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFy''@;'; put 'put ''dF9hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9u''@;'; put 'put ''dGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZ''@;'; put 'put ''WVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0g''@;'; put 'put ''W3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGVyIHVdIExUIixsYXN0''@;'; put 'put ''V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOnJldHVybiJbcHJvXHUwMTYxbHVdIGRkZGQgW3VdIExUIjtjYXNlIDY6cmV0dXJuIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltw''@;'; put 'put ''cm9cdTAxNjFsaV0gZGRkZCBbdV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJwYXIgc2VrdW5kaSIsc3M6bSxtOmZ1bmN0aW9uIHgoTSxPLEksail7aWYoIm0iPT09SSlyZXR1cm4gTz8iamVkbmEgbWludXRhIjpq''@;'; put 'put ''PyJqZWRudSBtaW51dHUiOiJqZWRuZSBtaW51dGUifSxtbTptLGg6bSxoaDptLGQ6ImRhbiIsZGQ6bSxNOiJtamVzZWMiLE1NOm0seToiZ29kaW51Iix5eTptfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIo''@;'; put 'put ''OTc1ODYpKX0sNTYyOTE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJjYSIse21vbnRoczp7c3RhbmRhbG9uZToiZ2VuZXJfZmVicmVyX21hclx4ZTdfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1''@;'; put 'put ''YnJlX25vdmVtYnJlX2Rlc2VtYnJlIi5zcGxpdCgiXyIpLGZvcm1hdDoiZGUgZ2VuZXJfZGUgZmVicmVyX2RlIG1hclx4ZTdfZCdhYnJpbF9kZSBtYWlnX2RlIGp1bnlfZGUganVsaW9sX2QnYWdvc3RfZGUgc2V0ZW1icmVfZCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlIi5zcGxp''@;'; put 'put ''dCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXHMpK01NTU0vfSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXJceGU3X2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGl1bWVuZ2VfZGls''@;'; put 'put ''bHVuc19kaW1hcnRzX2RpbWVjcmVzX2Rpam91c19kaXZlbmRyZXNfZGlzc2FidGUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGcuX2RsLl9kdC5fZGMuX2RqLl9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkZ19kbF9kdF9kY19kal9kdl9kcyIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW2RlXSBZWVlZIixsbDoiRCBNTU0gWVlZWSIsTExMOiJEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbSIsbGxsOiJEIE1NTSBZWVlZLCBI''@;'; put 'put ''Om1tIixMTExMOiJkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSwgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthdnVpIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHRE''@;'; put 'put ''YXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2RlbVx4ZTAgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiJbYWhpciBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc3NhdCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZl''@;'; put 'put ''VGltZTp7ZnV0dXJlOiJkJ2FxdVx4ZWQgJXMiLHBhc3Q6ImZhICVzIixzOiJ1bnMgc2Vnb25zIixzczoiJWQgc2Vnb25zIixtOiJ1biBtaW51dCIsbW06IiVkIG1pbnV0cyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JlcyIsZDoidW4gZGlhIixkZDoiJWQgZGllcyIsTToidW4gbWVzIixNTToi''@;'; put 'put ''JWQgbWVzb3MiLHk6InVuIGFueSIseXk6IiVkIGFueXMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fFx4ZTh8YSkvLG9yZGluYWw6ZnVuY3Rpb24obSxzZSl7dmFyIE09MT09PW0/InIiOjI9PT1tPyJuIjozPT09bT8iciI6ND09PW0/InQiOiJceGU4IjtyZXR1cm4o''@;'; put 'put ''InciPT09c2V8fCJXIj09PXNlKSYmKE09ImEiKSxtK019LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDg1MzAxOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXtzdGFuZGFsb25lOiJsZWRlbl9ceGZhbm9yX2JcdTAxNTllemVuX2R1''@;'; put 'put ''YmVuX2t2XHUwMTFidGVuX1x1MDEwZGVydmVuX1x1MDEwZGVydmVuZWNfc3JwZW5felx4ZTFcdTAxNTlceGVkX1x1MDE1OVx4ZWRqZW5fbGlzdG9wYWRfcHJvc2luZWMiLnNwbGl0KCJfIiksZm9ybWF0OiJsZWRuYV9ceGZhbm9yYV9iXHUwMTU5ZXpuYV9kdWJuYV9rdlx1MDExYnRuYV9cdTAx''@;'; put 'put ''MGRlcnZuYV9cdTAxMGRlcnZlbmNlX3NycG5hX3pceGUxXHUwMTU5XHhlZF9cdTAxNTlceGVkam5hX2xpc3RvcGFkdV9wcm9zaW5jZSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovREQ/W28uXT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NL30sbT0ibGVkX1x4ZmFub19iXHUwMTU5ZV9kdWJfa3ZcdTAx''@;'; put 'put ''MWJfXHUwMTBkdm5fXHUwMTBkdmNfc3JwX3pceGUxXHUwMTU5X1x1MDE1OVx4ZWRqX2xpc19wcm8iLnNwbGl0KCJfIiksc2U9Wy9ebGVkL2ksL15ceGZhbm8vaSwvXmJcdTAxNTllL2ksL15kdWIvaSwvXmt2XHUwMTFiL2ksL14oXHUwMTBkdm58XHUwMTBkZXJ2ZW4kfFx1MDEwZGVydm5hKS9p''@;'; put 'put ''LC9eKFx1MDEwZHZjfFx1MDEwZGVydmVuZWN8XHUwMTBkZXJ2ZW5jZSkvaSwvXnNycC9pLC9eelx4ZTFcdTAxNTkvaSwvXlx1MDE1OVx4ZWRqL2ksL15saXMvaSwvXnByby9pXSxNPS9eKGxlZGVufFx4ZmFub3J8Ylx1MDE1OWV6ZW58ZHViZW58a3ZcdTAxMWJ0ZW58XHUwMTBkZXJ2ZW5lY3xc''@;'; put 'put ''dTAxMGRlcnZlbmNlfFx1MDEwZGVydmVufFx1MDEwZGVydm5hfHNycGVufHpceGUxXHUwMTU5XHhlZHxcdTAxNTlceGVkamVufGxpc3RvcGFkfHByb3NpbmVjfGxlZHxceGZhbm98Ylx1MDE1OWV8ZHVifGt2XHUwMTFifFx1MDEwZHZufFx1MDEwZHZjfHNycHx6XHhlMVx1MDE1OXxcdTAxNTlc''@;'; put 'put ''eGVkanxsaXN8cHJvKS9pO2Z1bmN0aW9uIE8oRyl7cmV0dXJuIEc+MSYmRzw1JiYxIT1+fihHLzEwKX1mdW5jdGlvbiBJKEcsRCxULEUpe3ZhciB6PUcrIiAiO3N3aXRjaChUKXtjYXNlInMiOnJldHVybiBEfHxFPyJwXHhlMXIgc2VrdW5kIjoicFx4ZTFyIHNla3VuZGFtaSI7Y2FzZSJzcyI6''@;'; put 'put ''cmV0dXJuIER8fEU/eisoTyhHKT8ic2VrdW5keSI6InNla3VuZCIpOnorInNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gRD8ibWludXRhIjpFPyJtaW51dHUiOiJtaW51dG91IjtjYXNlIm1tIjpyZXR1cm4gRHx8RT96KyhPKEcpPyJtaW51dHkiOiJtaW51dCIpOnorIm1pbnV0YW1pIjtjYXNl''@;'; put 'put ''ImgiOnJldHVybiBEPyJob2RpbmEiOkU/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBEfHxFP3orKE8oRyk/ImhvZGlueSI6ImhvZGluIik6eisiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIER8fEU/ImRlbiI6ImRuZW0iO2Nhc2UiZGQiOnJldHVybiBEfHxFP3orKE8oRyk/''@;'; put 'put ''ImRueSI6ImRuXHhlZCIpOnorImRueSI7Y2FzZSJNIjpyZXR1cm4gRHx8RT8ibVx1MDExYnNceGVkYyI6Im1cdTAxMWJzXHhlZGNlbSI7Y2FzZSJNTSI6cmV0dXJuIER8fEU/eisoTyhHKT8ibVx1MDExYnNceGVkY2UiOiJtXHUwMTFic1x4ZWRjXHUwMTZmIik6eisibVx1MDExYnNceGVkY2ki''@;'; put 'put ''O2Nhc2UieSI6cmV0dXJuIER8fEU/InJvayI6InJva2VtIjtjYXNlInl5IjpyZXR1cm4gRHx8RT96KyhPKEcpPyJyb2t5IjoibGV0Iik6eisibGV0eSJ9fW9lLmRlZmluZUxvY2FsZSgiY3MiLHttb250aHM6eCxtb250aHNTaG9ydDptLG1vbnRoc1JlZ2V4Ok0sbW9udGhzU2hvcnRSZWdleDpN''@;'; put 'put ''LG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGxlZGVufGxlZG5hfFx4ZmFub3JhfFx4ZmFub3J8Ylx1MDE1OWV6ZW58Ylx1MDE1OWV6bmF8ZHViZW58ZHVibmF8a3ZcdTAxMWJ0ZW58a3ZcdTAxMWJ0bmF8XHUwMTBkZXJ2ZW5lY3xcdTAxMGRlcnZlbmNlfFx1MDEwZGVydmVufFx1MDEwZGVydm5hfHNy''@;'; put 'put ''cGVufHNycG5hfHpceGUxXHUwMTU5XHhlZHxcdTAxNTlceGVkamVufFx1MDE1OVx4ZWRqbmF8bGlzdG9wYWR1fGxpc3RvcGFkfHByb3NpbmVjfHByb3NpbmNlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14obGVkfFx4ZmFub3xiXHUwMTU5ZXxkdWJ8a3ZcdTAxMWJ8XHUwMTBkdm58XHUw''@;'; put 'put ''MTBkdmN8c3JwfHpceGUxXHUwMTU5fFx1MDE1OVx4ZWRqfGxpc3xwcm8pL2ksbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6c2Usd2Vla2RheXM6Im5lZFx1MDExYmxlX3BvbmRcdTAxMWJsXHhlZF9ceGZhdGVyXHhmZF9zdFx1MDE1OWVkYV9cdTAx''@;'; put 'put ''MGR0dnJ0ZWtfcFx4ZTF0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX1x4ZmF0X3N0X1x1MDEwZHRfcFx4ZTFfc28iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX1x4ZmF0X3N0X1x1MDEwZHRfcFx4ZTFfc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3Jt''@;'; put 'put ''YXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIEg6bW0iLGw6IkQuIE0uIFlZWVkifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgdl0gTFQiLG5l''@;'; put 'put ''eHREYXk6Ilt6XHhlZHRyYSB2XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWRcdTAxMWJsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlt2ZSBzdFx1MDE1OWVk''@;'; put 'put ''dSB2XSBMVCI7Y2FzZSA0OnJldHVybiJbdmUgXHUwMTBkdHZydGVrIHZdIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBceGUxdGVrIHZdIExUIjtjYXNlIDY6cmV0dXJuIlt2IHNvYm90dSB2XSBMVCJ9fSxsYXN0RGF5OiJbdlx1MDEwZGVyYSB2XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0''@;'; put 'put ''Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxvdSBuZWRcdTAxMWJsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsXHhlOV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsb3Ugc3RcdTAxNTllZHUgdl0gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJu''@;'; put 'put ''IlttaW51bFx4ZmRdIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91IHNvYm90dSB2XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicFx1MDE1OWVkICVzIixzOkksc3M6SSxtOkksbW06SSxoOkksaGg6SSxkOkksZGQ6SSxN''@;'; put 'put ''OkksTU06SSx5OkkseXk6SX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDY2NjY2OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2Fs''@;'; put 'put ''ZSgiY3YiLHttb250aHM6Ilx1MDQzYVx1MDRkMVx1MDQ0MFx1MDQzYlx1MDQzMFx1MDQ0N19cdTA0M2RcdTA0MzBcdTA0NDBcdTA0ZDFcdTA0NDFfXHUwNDNmXHUwNDQzXHUwNDQ4X1x1MDQzMFx1MDQzYVx1MDQzMF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNGFiXHUwNGQ3XHUwNDQwXHUwNDQy''@;'; put 'put ''XHUwNDNjXHUwNDM1X1x1MDQ0M1x1MDQ0Mlx1MDRkMV9cdTA0YWJcdTA0NDNcdTA0NDBcdTA0M2JcdTA0MzBfXHUwNDMwXHUwNDMyXHUwNGQxXHUwNDNkX1x1MDQ0ZVx1MDQzZlx1MDQzMF9cdTA0NDdcdTA0ZjNcdTA0M2FfXHUwNDQwXHUwNDMwXHUwNDQ4XHUwNDQyXHUwNDMwXHUwNDMyIi5z''@;'; put 'put ''cGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0M2FcdTA0ZDFcdTA0NDBfXHUwNDNkXHUwNDMwXHUwNDQwX1x1MDQzZlx1MDQ0M1x1MDQ0OF9cdTA0MzBcdTA0M2FcdTA0MzBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDRhYlx1MDRkN1x1MDQ0MF9cdTA0NDNcdTA0NDJcdTA0ZDFfXHUwNGFiXHUw''@;'; put 'put ''NDQzXHUwNDQwX1x1MDQzMFx1MDQzMlx1MDQzZF9cdTA0NGVcdTA0M2ZcdTA0MzBfXHUwNDQ3XHUwNGYzXHUwNDNhX1x1MDQ0MFx1MDQzMFx1MDQ0OCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDMyXHUwNDRiXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQwXHUwNDNkXHUwNDM4XHUwNDNhXHUw''@;'; put 'put ''NDQzXHUwNDNkX1x1MDQ0Mlx1MDQ0M1x1MDQzZFx1MDQ0Mlx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGJcdTA0NDJcdTA0M2JcdTA0MzBcdTA0NDBcdTA0MzhcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDRlXHUwNDNkXHUwNDNhXHUwNDQzXHUwNDNkX1x1MDQzYVx1MDRkN1x1MDRhYlx1''@;'; put 'put ''MDQzZFx1MDQzNVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYVx1MDQ0M1x1MDQzZF9cdTA0NGRcdTA0NDBcdTA0M2RcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RfXHUwNDQ4XHUwNGQxXHUwNDNjXHUwNDMwXHUwNDQyXHUwNDNhXHUwNDQzXHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6''@;'; put 'put ''Ilx1MDQzMlx1MDQ0Ylx1MDQ0MF9cdTA0NDJcdTA0NDNcdTA0M2RfXHUwNDRiXHUwNDQyXHUwNDNiX1x1MDQ0ZVx1MDQzZF9cdTA0M2FcdTA0ZDdcdTA0YWJfXHUwNDRkXHUwNDQwXHUwNDNkX1x1MDQ0OFx1MDRkMVx1MDQzYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDMyXHUwNDQw''@;'; put 'put ''X1x1MDQ0Mlx1MDQzZF9cdTA0NGJcdTA0NDJfXHUwNDRlXHUwNDNkX1x1MDQzYVx1MDRhYl9cdTA0NGRcdTA0NDBfXHUwNDQ4XHUwNDNjIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJZWVlZIFtcdTA0YWJc''@;'; put 'put ''dTA0NDNcdTA0M2JcdTA0NDVcdTA0MzhdIE1NTU0gW1x1MDQ0M1x1MDQzOVx1MDRkMVx1MDQ0NVx1MDRkN1x1MDQzZF0gRFstXHUwNDNjXHUwNGQ3XHUwNDQ4XHUwNGQ3XSIsTExMOiJZWVlZIFtcdTA0YWJcdTA0NDNcdTA0M2JcdTA0NDVcdTA0MzhdIE1NTU0gW1x1MDQ0M1x1MDQzOVx1MDRk''@;'; put 'put ''MVx1MDQ0NVx1MDRkN1x1MDQzZF0gRFstXHUwNDNjXHUwNGQ3XHUwNDQ4XHUwNGQ3XSwgSEg6bW0iLExMTEw6ImRkZGQsIFlZWVkgW1x1MDRhYlx1MDQ0M1x1MDQzYlx1MDQ0NVx1MDQzOF0gTU1NTSBbXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1XHUwNGQ3XHUwNDNkXSBEWy1cdTA0M2NcdTA0''@;'; put 'put ''ZDdcdTA0NDhcdTA0ZDddLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDFmXHUwNDMwXHUwNDRmXHUwNDNkXSBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbmV4dERheToiW1x1MDQyYlx1MDQ0MFx1MDQzMFx1MDQzZF0gTFQgW1x1MDQ0''@;'; put 'put ''MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLGxhc3REYXk6IltcdTA0ZDZcdTA0M2RcdTA0MzVcdTA0NDBdIExUIFtcdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDJcdTA0NDBcdTA0MzVdIixuZXh0V2VlazoiW1x1MDRhYVx1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQ0''@;'; put 'put ''MV0gZGRkZCBMVCBbXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyXHUwNDQwXHUwNDM1XSIsbGFzdFdlZWs6IltcdTA0MThcdTA0NDBcdTA0NDJcdTA0M2RcdTA0ZDddIGRkZGQgTFQgW1x1MDQ0MVx1MDQzNVx1MDQ0NVx1MDQzNVx1MDQ0Mlx1MDQ0MFx1MDQzNV0iLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24obSl7cmV0dXJuIG0rKC9cdTA0NDFcdTA0MzVcdTA0NDVcdTA0MzVcdTA0NDIkL2kuZXhlYyhtKT8iXHUwNDQwXHUwNDM1XHUwNDNkIjovXHUwNGFiXHUwNDQzXHUwNDNiJC9pLmV4ZWMobSk/Ilx1MDQ0Mlx1MDQzMFx1MDQzZCI6Ilx1''@;'; put 'put ''MDQ0MFx1MDQzMFx1MDQzZCIpfSxwYXN0OiIlcyBcdTA0M2FcdTA0MzBcdTA0NGZcdTA0M2JcdTA0M2JcdTA0MzAiLHM6Ilx1MDQzZlx1MDRkN1x1MDQ0MC1cdTA0MzhcdTA0M2EgXHUwNGFiXHUwNDM1XHUwNDNhXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDQyIixzczoiJWQgXHUwNGFiXHUwNDM1''@;'; put 'put ''XHUwNDNhXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDQyIixtOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixtbToiJWQgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixoOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDQxXHUwNDM1XHUwNDQ1''@;'; put 'put ''XHUwNDM1XHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDM1XHUwNDQ1XHUwNDM1XHUwNDQyIixkOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDNhXHUwNDQzXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNDQzXHUwNDNkIixNOiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNDQzXHUwNDM5XHUwNGQxXHUw''@;'; put 'put ''NDQ1IixNTToiJWQgXHUwNDQzXHUwNDM5XHUwNGQxXHUwNDQ1Iix5OiJcdTA0M2ZcdTA0ZDdcdTA0NDAgXHUwNGFiXHUwNDQzXHUwNDNiIix5eToiJWQgXHUwNGFiXHUwNDQzXHUwNDNiIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS1cdTA0M2NcdTA0ZDdcdTA0NDgvLG9yZGlu''@;'; put 'put ''YWw6IiVkLVx1MDQzY1x1MDRkN1x1MDQ0OCIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNTUxNjM6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJjeSIse21vbnRoczoiSW9uYXdyX0Nod2Vmcm9yX01hd3J0aF9F''@;'; put 'put ''YnJpbGxfTWFpX01laGVmaW5fR29yZmZlbm5hZl9Bd3N0X01lZGlfSHlkcmVmX1RhY2h3ZWRkX1JoYWdmeXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Iklvbl9DaHdlX01hd19FYnJfTWFpX01laF9Hb3JfQXdzX01lZF9IeWRfVGFjaF9SaGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEeWRk''@;'; put 'put ''IFN1bF9EeWRkIExsdW5fRHlkZCBNYXdydGhfRHlkZCBNZXJjaGVyX0R5ZGQgSWF1X0R5ZGQgR3dlbmVyX0R5ZGQgU2Fkd3JuIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bF9MbHVuX01hd19NZXJfSWF1X0d3ZV9TYWQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X0xsX01hX01l''@;'; put 'put ''X0lhX0d3X1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZ''@;'; put 'put ''IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIZWRkaXcgYW1dIExUIixuZXh0RGF5OiJbWWZvcnkgYW1dIExUIixuZXh0V2VlazoiZGRkZCBbYW1dIExUIixsYXN0RGF5OiJbRGRvZSBhbV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkaXdldGhhZiBhbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVs''@;'; put 'put ''YXRpdmVUaW1lOntmdXR1cmU6Im1ld24gJXMiLHBhc3Q6IiVzIHluIFx4ZjRsIixzOiJ5Y2h5ZGlnIGVpbGlhZGF1IixzczoiJWQgZWlsaWFkIixtOiJtdW51ZCIsbW06IiVkIG11bnVkIixoOiJhd3IiLGhoOiIlZCBhd3IiLGQ6ImRpd3Jub2QiLGRkOiIlZCBkaXdybm9kIixNOiJtaXMiLE1N''@;'; put 'put ''OiIlZCBtaXMiLHk6ImJsd3lkZHluIix5eToiJWQgZmx5bmVkZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZmVkfGFpbnxhZnxpbHx5ZGR8ZWR8ZWcpLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3ZhciBNPSIiO3JldHVybiBtPjIwP009NDA9PT1tfHw1MD09PW18fDYwPT09bXx8''@;'; put 'put ''ODA9PT1tfHwxMDA9PT1tPyJmZWQiOiJhaW4iOm0+MCYmKE09WyIiLCJhZiIsImlsIiwieWRkIiwieWRkIiwiZWQiLCJlZCIsImVkIiwiZmVkIiwiZmVkIiwiZmVkIiwiZWciLCJmZWQiLCJlZyIsImVnIiwiZmVkIiwiZWciLCJlZyIsImZlZCIsImVnIiwiZmVkIl1bbV0pLG0rTX0sd2Vlazp7''@;'; put 'put ''ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sODczNjA6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJkYSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVy''@;'; put 'put ''X29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzXHhmOG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJl''@;'; put 'put ''ZGFnX2xceGY4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzXHhmOG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sXHhmOHIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNceGY4X21hX3RpX29uX3RvX2ZyX2xceGY4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0i''@;'; put 'put ''LExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBt''@;'; put 'put ''b3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6InBceGU1IGRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGdceGU1ciBrbC5dIExUIixsYXN0V2VlazoiW2ldIGRkZGRbcyBrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6''@;'; put 'put ''ImZceGU1IHNla3VuZGVyIixzczoiJWQgc2VrdW5kZXIiLG06ImV0IG1pbnV0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZSIsTToiZW4gbVx4ZTVuZWQiLE1NOiIlZCBtXHhlNW5lZGVyIix5OiJldCBceGU1ciIseXk6''@;'; put 'put ''IiVkIFx4ZTVyIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDQzMjQ4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoc2UsTSxPLEkp''@;'; put 'put ''e3ZhciBqPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOltzZSsiIFRhZ2UiLHNlKyIgVGFnZW4iXSx3OlsiZWluZSBXb2NoZSIsImVpbmVyIFdvY2hlIl0sTTpbImVp''@;'; put 'put ''biBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W3NlKyIgTW9uYXRlIixzZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W3NlKyIgSmFocmUiLHNlKyIgSmFocmVuIl19O3JldHVybiBNP2pbT11bMF06altPXVsxXX1vZS5kZWZpbmVMb2NhbGUoImRlLWF0Iix7''@;'; put 'put ''bW9udGhzOiJKXHhlNG5uZXJfRmVicnVhcl9NXHhlNHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKXHhlNG4uX0ZlYi5fTVx4ZTRyel9BcHIuX01haV9KdW5pX0p1bGlfQXVn''@;'; put 'put ''Ll9TZXAuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01p''@;'; put 'put ''Ll9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZ''@;'; put 'put ''WVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1d''@;'; put 'put ''IExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4i''@;'; put 'put ''LG06eCxtbToiJWQgTWludXRlbiIsaDp4LGhoOiIlZCBTdHVuZGVuIixkOngsZGQ6eCx3Ongsd3c6IiVkIFdvY2hlbiIsTTp4LE1NOngseTp4LHl5Onh9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4''@;'; put 'put ''NikpfSw4MzIyMjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KHNlLE0sTyxJKXt2YXIgaj17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJl''@;'; put 'put ''aW5lbSBUYWciXSxkZDpbc2UrIiBUYWdlIixzZSsiIFRhZ2VuIl0sdzpbImVpbmUgV29jaGUiLCJlaW5lciBXb2NoZSJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltzZSsiIE1vbmF0ZSIsc2UrIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5Oltz''@;'; put 'put ''ZSsiIEphaHJlIixzZSsiIEphaHJlbiJdfTtyZXR1cm4gTT9qW09dWzBdOmpbT11bMV19b2UuZGVmaW5lTG9jYWxlKCJkZS1jaCIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRyel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXpl''@;'; put 'put ''bWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29j''@;'; put 'put ''aF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRl''@;'; put 'put ''Rm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2hldXRlIHVtXSBMVCBbVWhyXSIs''@;'; put 'put ''c2FtZUVsc2U6IkwiLG5leHREYXk6Ilttb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbZ2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1''@;'; put 'put ''cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixzczoiJWQgU2VrdW5kZW4iLG06eCxtbToiJWQgTWludXRlbiIsaDp4LGhoOiIlZCBTdHVuZGVuIixkOngsZGQ6eCx3Ongsd3c6IiVkIFdvY2hlbiIsTTp4LE1NOngseTp4LHl5Onh9LGRheU9mTW9udGhPcmRp''@;'; put 'put ''bmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw0NTkzMjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KHNlLE0sTyxJKXt2YXIgaj17bTpbImVpbmUgTWludXRlIiwi''@;'; put 'put ''ZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbc2UrIiBUYWdlIixzZSsiIFRhZ2VuIl0sdzpbImVpbmUgV29jaGUiLCJlaW5lciBXb2NoZSJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1N''@;'; put 'put ''OltzZSsiIE1vbmF0ZSIsc2UrIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OltzZSsiIEphaHJlIixzZSsiIEphaHJlbiJdfTtyZXR1cm4gTT9qW09dWzBdOmpbT11bMV19b2UuZGVmaW5lTG9jYWxlKCJkZSIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRy''@;'; put 'put ''el9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWIuX01ceGU0cnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNN''@;'; put 'put ''aW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoi''@;'; put 'put ''ZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbbW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExU''@;'; put 'put ''IFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsc3M6IiVkIFNla3VuZGVuIixtOngsbW06IiVkIE1pbnV0ZW4iLGg6eCxoaDoiJWQgU3R1''@;'; put 'put ''bmRlbiIsZDp4LGRkOngsdzp4LHd3OiIlZCBXb2NoZW4iLE06eCxNTTp4LHk6eCx5eTp4fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNjQwNTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rp''@;'; put 'put ''b24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD1bIlx1MDc5Nlx1MDdhY1x1MDc4Mlx1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4YVx1MDdhY1x1MDc4NFx1MDdiMFx1MDc4M1x1MDdhYVx1MDc4N1x1MDdhNlx1MDc4M1x1MDdhOSIsIlx1MDc4OVx1MDdhN1x1MDc4M1x1MDdh''@;'; put 'put ''OFx1MDc5N1x1MDdhYSIsIlx1MDc4N1x1MDdhZFx1MDc5NVx1MDdiMFx1MDc4M1x1MDdhOVx1MDc4ZFx1MDdhYSIsIlx1MDc4OVx1MDdhZCIsIlx1MDc5Nlx1MDdhYlx1MDc4Mlx1MDdiMCIsIlx1MDc5Nlx1MDdhYVx1MDc4ZFx1MDdhNlx1MDc4N1x1MDdhOCIsIlx1MDc4N1x1MDdhZlx1MDc4''@;'; put 'put ''ZVx1MDdhNlx1MDc5MFx1MDdiMFx1MDc5M1x1MDdhYSIsIlx1MDc5MFx1MDdhY1x1MDc5NVx1MDdiMFx1MDc5M1x1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc4N1x1MDdhZVx1MDc4Nlx1MDdiMFx1MDc5M1x1MDdhZlx1MDc4NFx1MDdhNlx1MDc4M1x1''@;'; put 'put ''MDdhYSIsIlx1MDc4Mlx1MDdhZVx1MDc4OFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSIsIlx1MDc5MVx1MDdhOFx1MDc5MFx1MDdhY1x1MDc4OVx1MDdiMFx1MDc4NFx1MDdhNlx1MDc4M1x1MDdhYSJdLG09WyJcdTA3ODdcdTA3YTdcdTA3OGJcdTA3YThcdTA3''@;'; put 'put ''ODdcdTA3YjBcdTA3OGNcdTA3YTYiLCJcdTA3ODBcdTA3YWZcdTA3ODlcdTA3YTYiLCJcdTA3ODdcdTA3YTZcdTA3ODJcdTA3YjBcdTA3OGVcdTA3YTdcdTA3ODNcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3OGJcdTA3YTYiLCJcdTA3ODRcdTA3YWFcdTA3ODNcdTA3YTdcdTA3OTBcdTA3YjBc''@;'; put 'put ''dTA3OGFcdTA3YTZcdTA3OGNcdTA3YTgiLCJcdTA3ODBcdTA3YWFcdTA3ODZcdTA3YWFcdTA3ODNcdTA3YWEiLCJcdTA3ODBcdTA3YWVcdTA3ODJcdTA3YThcdTA3ODBcdTA3YThcdTA3ODNcdTA3YWEiXTtvZS5kZWZpbmVMb2NhbGUoImR2Iix7bW9udGhzOngsbW9udGhzU2hvcnQ6eCx3ZWVr''@;'; put 'put ''ZGF5czptLHdlZWtkYXlzU2hvcnQ6bSx3ZWVrZGF5c01pbjoiXHUwNzg3XHUwN2E3XHUwNzhiXHUwN2E4X1x1MDc4MFx1MDdhZlx1MDc4OVx1MDdhNl9cdTA3ODdcdTA3YTZcdTA3ODJcdTA3YjBfXHUwNzg0XHUwN2FhXHUwNzhiXHUwN2E2X1x1MDc4NFx1MDdhYVx1MDc4M1x1MDdhN19cdTA3''@;'; put 'put ''ODBcdTA3YWFcdTA3ODZcdTA3YWFfXHUwNzgwXHUwN2FlXHUwNzgyXHUwN2E4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQvTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQg''@;'; put 'put ''RCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA3ODlcdTA3ODZ8XHUwNzg5XHUwNzhhLyxpc1BNOmZ1bmN0aW9uKE0pe3JldHVybiJcdTA3ODlcdTA3OGEiPT09TX0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDEyPyJcdTA3ODlcdTA3ODYiOiJcdTA3ODlc''@;'; put 'put ''dTA3OGEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDc4OVx1MDdhOFx1MDc4N1x1MDdhNlx1MDc4Ylx1MDdhYV0gTFQiLG5leHREYXk6IltcdTA3ODlcdTA3YTdcdTA3OGJcdTA3YTZcdTA3ODlcdTA3YTddIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1x1MDc4N1x1MDdhOFx1''@;'; put 'put ''MDc4N1x1MDdiMFx1MDc5NFx1MDdhY10gTFQiLGxhc3RXZWVrOiJbXHUwNzhhXHUwN2E3XHUwNzg3XHUwN2E4XHUwNzhjXHUwN2FhXHUwNzg4XHUwN2E4XSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA3OGNcdTA3YWNcdTA3ODNcdTA3YWRcdTA3OGVc''@;'; put 'put ''dTA3YTZcdTA3ODdcdTA3YTggJXMiLHBhc3Q6Ilx1MDc4Nlx1MDdhYVx1MDc4M1x1MDdhOFx1MDc4Mlx1MDdiMCAlcyIsczoiXHUwNzkwXHUwN2E4XHUwNzg2XHUwN2FhXHUwNzgyXHUwN2IwXHUwNzhjXHUwN2FhXHUwNzg2XHUwN2FlXHUwNzg1XHUwN2FjXHUwNzg3XHUwN2IwIixzczoiZCUg''@;'; put 'put ''XHUwNzkwXHUwN2E4XHUwNzg2XHUwN2FhXHUwNzgyXHUwN2IwXHUwNzhjXHUwN2FhIixtOiJcdTA3ODlcdTA3YThcdTA3ODJcdTA3YThcdTA3OTNcdTA3YWNcdTA3ODdcdTA3YjAiLG1tOiJcdTA3ODlcdTA3YThcdTA3ODJcdTA3YThcdTA3OTNcdTA3YWEgJWQiLGg6Ilx1MDc4ZVx1MDdhNlx1''@;'; put 'put ''MDc5MVx1MDdhOFx1MDc4N1x1MDdhOFx1MDc4M1x1MDdhY1x1MDc4N1x1MDdiMCIsaGg6Ilx1MDc4ZVx1MDdhNlx1MDc5MVx1MDdhOFx1MDc4N1x1MDdhOFx1MDc4M1x1MDdhYSAlZCIsZDoiXHUwNzhiXHUwN2FhXHUwNzg4XHUwN2E2XHUwNzgwXHUwN2FjXHUwNzg3XHUwN2IwIixkZDoiXHUw''@;'; put 'put ''NzhiXHUwN2FhXHUwNzg4XHUwN2E2XHUwNzkwXHUwN2IwICVkIixNOiJcdTA3ODlcdTA3YTZcdTA3ODBcdTA3YWNcdTA3ODdcdTA3YjAiLE1NOiJcdTA3ODlcdTA3YTZcdTA3OTBcdTA3YjAgJWQiLHk6Ilx1MDc4N1x1MDdhNlx1MDc4MFx1MDdhNlx1MDc4M1x1MDdhY1x1MDc4N1x1MDdiMCIs''@;'; put 'put ''eXk6Ilx1MDc4N1x1MDdhNlx1MDc4MFx1MDdhNlx1MDc4M1x1MDdhYSAlZCJ9LHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93''@;'; put 'put ''OjcsZG95OjEyfX0pfShSKDk3NTg2KSl9LDYwNzE4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZWwiLHttb250aHNOb21pbmF0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNhY1x1MDNjMVx1MDNi''@;'; put 'put ''OVx1MDNiZlx1MDNjMl9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYWNcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzljXHUwM2FjXHUwM2MxXHUwM2M0XHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNhZlx1MDNiYlx1MDNiOVx1MDNi''@;'; put 'put ''Zlx1MDNjMl9cdTAzOWNcdTAzYWNcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk5XHUwM2JmXHUwM2NkXHUwM2JkXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5OVx1MDNiZlx1MDNjZFx1MDNiYlx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOTFcdTAzY2RcdTAzYjNcdTAzYmZcdTAzYzVcdTAzYzNcdTAz''@;'; put 'put ''YzRcdTAzYmZcdTAzYzJfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2FkXHUwM2JjXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyX1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjZVx1MDNiMlx1MDNjMVx1MDNiOVx1MDNiZlx1MDNjMl9cdTAzOWRcdTAzYmZcdTAzYWRcdTAzYmNcdTAz''@;'; put 'put ''YjJcdTAzYzFcdTAzYjlcdTAzYmZcdTAzYzJfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2FkXHUwM2JjXHUwM2IyXHUwM2MxXHUwM2I5XHUwM2JmXHUwM2MyIi5zcGxpdCgiXyIpLG1vbnRoc0dlbml0aXZlRWw6Ilx1MDM5OVx1MDNiMVx1MDNiZFx1MDNiZlx1MDNjNVx1MDNiMVx1MDNjMVx1MDNh''@;'; put 'put ''Zlx1MDNiZlx1MDNjNV9cdTAzYTZcdTAzYjVcdTAzYjJcdTAzYzFcdTAzYmZcdTAzYzVcdTAzYjFcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzljXHUwM2IxXHUwM2MxXHUwM2M0XHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5MVx1MDNjMFx1MDNjMVx1MDNiOVx1MDNiYlx1MDNhZlx1MDNi''@;'; put 'put ''Zlx1MDNjNV9cdTAzOWNcdTAzYjFcdTAzOTBcdTAzYmZcdTAzYzVfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JkXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5OVx1MDNiZlx1MDNjNVx1MDNiYlx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOTFcdTAzYzVcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYzNcdTAz''@;'; put 'put ''YzRcdTAzYmZcdTAzYzVfXHUwM2EzXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2I1XHUwM2JjXHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1X1x1MDM5Zlx1MDNiYVx1MDNjNFx1MDNjOVx1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNV9cdTAzOWRcdTAzYmZcdTAzYjVcdTAzYmNcdTAz''@;'; put 'put ''YjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzVfXHUwMzk0XHUwM2I1XHUwM2JhXHUwM2I1XHUwM2JjXHUwM2IyXHUwM2MxXHUwM2FmXHUwM2JmXHUwM2M1Ii5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihzZSxNKXtyZXR1cm4gc2U/InN0cmluZyI9PXR5cGVvZiBNJiYvRC8udGVzdChNLnN1''@;'; put 'put ''YnN0cmluZygwLE0uaW5kZXhPZigiTU1NTSIpKSk/dGhpcy5fbW9udGhzR2VuaXRpdmVFbFtzZS5tb250aCgpXTp0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbc2UubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsfSxtb250aHNTaG9ydDoiXHUwMzk5XHUwM2IxXHUwM2JkX1x1MDNh''@;'; put 'put ''Nlx1MDNiNVx1MDNiMl9cdTAzOWNcdTAzYjFcdTAzYzFfXHUwMzkxXHUwM2MwXHUwM2MxX1x1MDM5Y1x1MDNiMVx1MDNjYV9cdTAzOTlcdTAzYmZcdTAzYzVcdTAzYmRfXHUwMzk5XHUwM2JmXHUwM2M1XHUwM2JiX1x1MDM5MVx1MDNjNVx1MDNiM19cdTAzYTNcdTAzYjVcdTAzYzBfXHUwMzlm''@;'; put 'put ''XHUwM2JhXHUwM2M0X1x1MDM5ZFx1MDNiZlx1MDNiNV9cdTAzOTRcdTAzYjVcdTAzYmEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDM5YVx1MDNjNVx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiYVx1MDNhZV9cdTAzOTRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYWRcdTAzYzFcdTAzYjFfXHUwM2E0''@;'; put 'put ''XHUwM2MxXHUwM2FmXHUwM2M0XHUwM2I3X1x1MDNhNFx1MDNiNVx1MDNjNFx1MDNhY1x1MDNjMVx1MDNjNFx1MDNiN19cdTAzYTBcdTAzYWRcdTAzYmNcdTAzYzBcdTAzYzRcdTAzYjdfXHUwM2EwXHUwM2IxXHUwM2MxXHUwM2IxXHUwM2MzXHUwM2JhXHUwM2I1XHUwM2M1XHUwM2FlX1x1MDNh''@;'; put 'put ''M1x1MDNhY1x1MDNiMlx1MDNiMlx1MDNiMVx1MDNjNFx1MDNiZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTAzOWFcdTAzYzVcdTAzYzFfXHUwMzk0XHUwM2I1XHUwM2M1X1x1MDNhNFx1MDNjMVx1MDNiOV9cdTAzYTRcdTAzYjVcdTAzYzRfXHUwM2EwXHUwM2I1XHUwM2JjX1x1MDNh''@;'; put 'put ''MFx1MDNiMVx1MDNjMV9cdTAzYTNcdTAzYjFcdTAzYjIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDM5YVx1MDNjNV9cdTAzOTRcdTAzYjVfXHUwM2E0XHUwM2MxX1x1MDNhNFx1MDNiNV9cdTAzYTBcdTAzYjVfXHUwM2EwXHUwM2IxX1x1MDNhM1x1MDNiMSIuc3BsaXQoIl8iKSxtZXJp''@;'; put 'put ''ZGllbTpmdW5jdGlvbihzZSxNLE8pe3JldHVybiBzZT4xMT9PPyJcdTAzYmNcdTAzYmMiOiJcdTAzOWNcdTAzOWMiOk8/Ilx1MDNjMFx1MDNiYyI6Ilx1MDNhMFx1MDM5YyJ9LGlzUE06ZnVuY3Rpb24oc2Upe3JldHVybiJcdTAzYmMiPT09KHNlKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJp''@;'; put 'put ''ZGllbVBhcnNlOi9bXHUwM2EwXHUwMzljXVwuP1x1MDM5Yz9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZ''@;'; put 'put ''IGg6bW0gQSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IltcdTAzYTNcdTAzYWVcdTAzYmNcdTAzYjVcdTAzYzFcdTAzYjEge31dIExUIixuZXh0RGF5OiJbXHUwMzkxXHUwM2NkXHUwM2MxXHUwM2I5XHUwM2JmIHt9XSBMVCIsbmV4dFdlZWs6ImRkZGQgW3t9XSBMVCIsbGFzdERheToiW1x1MDNh''@;'; put 'put ''N1x1MDNiOFx1MDNiNVx1MDNjMiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDY9PT10aGlzLmRheSgpPyJbXHUwM2M0XHUwM2JmIFx1MDNjMFx1MDNjMVx1MDNiZlx1MDNiN1x1MDNiM1x1MDNiZlx1MDNjZFx1MDNiY1x1MDNiNVx1MDNiZFx1MDNiZl0gZGRkZCBbe31dIExU''@;'; put 'put ''IjoiW1x1MDNjNFx1MDNiN1x1MDNiZCBcdTAzYzBcdTAzYzFcdTAzYmZcdTAzYjdcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYmNcdTAzYjVcdTAzYmRcdTAzYjddIGRkZGQgW3t9XSBMVCJ9LHNhbWVFbHNlOiJMIn0sY2FsZW5kYXI6ZnVuY3Rpb24oc2UsTSl7dmFyIE89dGhpcy5fY2FsZW5kYXJF''@;'; put 'put ''bFtzZV0sST1NJiZNLmhvdXJzKCk7cmV0dXJuIGZ1bmN0aW9uIHgoc2Upe3JldHVybiB0eXBlb2YgRnVuY3Rpb248InUiJiZzZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwiW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHNlKX0oTykmJihPPU8uYXBw''@;'; put 'put ''bHkoTSkpLE8ucmVwbGFjZSgie30iLEklMTI9PTE/Ilx1MDNjM1x1MDNjNFx1MDNiNyI6Ilx1MDNjM1x1MDNjNFx1MDNiOVx1MDNjMiIpfSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwM2MzXHUwM2I1ICVzIixwYXN0OiIlcyBcdTAzYzBcdTAzYzFcdTAzYjlcdTAzYmQiLHM6Ilx1MDNiYlx1''@;'; put 'put ''MDNhZlx1MDNiM1x1MDNiMSBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjEiLHNzOiIlZCBcdTAzYjRcdTAzYjVcdTAzYzVcdTAzYzRcdTAzYjVcdTAzYzFcdTAzY2NcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRc''@;'; put 'put ''dTAzYjEiLG06Ilx1MDNhZFx1MDNiZFx1MDNiMSBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzY2MiLG1tOiIlZCBcdTAzYmJcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYWMiLGg6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzY2VcdTAzYzFcdTAzYjEiLGhoOiIlZCBcdTAzY2VcdTAzYzFcdTAz''@;'; put 'put ''YjVcdTAzYzIiLGQ6Ilx1MDNiY1x1MDNhZlx1MDNiMSBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjEiLGRkOiIlZCBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjVcdTAzYzIiLE06Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYmNcdTAzYWVcdTAzYmRcdTAzYjFcdTAzYzIiLE1NOiIlZCBc''@;'; put 'put ''dTAzYmNcdTAzYWVcdTAzYmRcdTAzYjVcdTAzYzIiLHk6Ilx1MDNhZFx1MDNiZFx1MDNiMVx1MDNjMiBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYmZcdTAzYzIiLHl5OiIlZCBcdTAzYzdcdTAzYzFcdTAzY2NcdTAzYmRcdTAzYjlcdTAzYjEifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNl''@;'; put 'put ''Oi9cZHsxLDJ9XHUwM2I3LyxvcmRpbmFsOiIlZFx1MDNiNyIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMzYzMTk6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJy''@;'; put 'put ''dWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNw''@;'; put 'put ''bGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1Rv''@;'; put 'put ''ZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIs''@;'; put 'put ''cGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5''@;'; put 'put ''eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihtKXt2YXIgc2U9bSUxMDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJzdCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9''@;'; put 'put ''LHdlZWs6e2RvdzowLGRveTo0fX0pfShSKDk3NTg2KSl9LDgwNTk3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1''@;'; put 'put ''c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5''@;'; put 'put ''X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBB''@;'; put 'put ''IixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBh''@;'; put 'put ''dF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIs''@;'; put 'put ''c3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQ''@;'; put 'put ''YXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24obSl7dmFyIHNlPW0lMTA7cmV0dXJuIG0rKDE9PX5+KG0lMTAwLzEwKT8idGgiOjE9PT1zZT8ic3QiOjI9PT1zZT8ibmQiOjM9PT1zZT8icmQiOiJ0aCIpfX0pfShSKDk3NTg2KSl9LDUxODAwOmZ1bmN0aW9uKFFl''@;'; put 'put ''LE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0''@;'; put 'put ''OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExM''@;'; put 'put ''OiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQi''@;'; put 'put ''LGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixo''@;'; put 'put ''aDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihtKXt2YXIgc2U9bSUx''@;'; put 'put ''MDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJzdCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDgwNzpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZp''@;'; put 'put ''bmVMb2NhbGUoImVuLWllIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxf''@;'; put 'put ''QXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZ''@;'; put 'put ''WVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBt''@;'; put 'put ''b250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihtKXt2YXIgc2U9bSUxMDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJz''@;'; put 'put ''dCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDk1OTYwOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZW4taWwiLHttb250aHM6IkphbnVhcnlfRmVicnVh''@;'; put 'put ''cnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''OiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxp''@;'; put 'put ''dCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0''@;'; put 'put ''XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoi''@;'; put 'put ''JXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQg''@;'; put 'put ''eWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihtKXt2YXIgc2U9bSUxMDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJzdCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9fSl9KFIo''@;'; put 'put ''OTc1ODYpKX0sODQ0MTg6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJlbi1pbiIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3Zl''@;'; put 'put ''bWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9N''@;'; put 'put ''TS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBM''@;'; put 'put ''VCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixzczoiJWQgc2Vjb25kcyIsbToiYSBtaW51dGUi''@;'; put 'put ''LG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8s''@;'; put 'put ''b3JkaW5hbDpmdW5jdGlvbihtKXt2YXIgc2U9bSUxMDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJzdCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDQ2ODY1OmZ1bmN0aW9uKFFlLE1lLFIpeyFm''@;'; put 'put ''dW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZW4tbnoiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hv''@;'; put 'put ''cnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9u''@;'; put 'put ''X1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1N''@;'; put 'put ''TSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0''@;'; put 'put ''V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVk''@;'; put 'put ''IGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24obSl7dmFyIHNlPW0lMTA7cmV0''@;'; put 'put ''dXJuIG0rKDE9PX5+KG0lMTAwLzEwKT8idGgiOjE9PT1zZT8ic3QiOjI9PT1zZT8ibmQiOjM9PT1zZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSwzMjY0NzpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVM''@;'; put 'put ''b2NhbGUoImVuLXNnIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVn''@;'; put 'put ''X1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZ''@;'; put 'put ''IEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6Ikwi''@;'; put 'put ''fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9u''@;'; put 'put ''dGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24obSl7dmFyIHNlPW0lMTA7cmV0dXJuIG0rKDE9PX5+KG0lMTAwLzEwKT8idGgiOjE9PT1zZT8ic3Qi''@;'; put 'put ''OjI9PT1zZT8ibmQiOjM9PT1zZT8icmQiOiJ0aCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw2MTkzMTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImVvIix7bW9udGhzOiJqYW51YXJvX2ZlYnJ1YXJvX21h''@;'; put 'put ''cnRvX2Fwcmlsb19tYWpvX2p1bmlvX2p1bGlvX2FcdTAxNmRndXN0b19zZXB0ZW1icm9fb2t0b2Jyb19ub3ZlbWJyb19kZWNlbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJ0X2Fwcl9tYWpfanVuX2p1bF9hXHUwMTZkZ19zZXB0X29rdF9ub3ZfZGVjIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzOiJkaW1hblx1MDEwOW9fbHVuZG9fbWFyZG9fbWVya3JlZG9fXHUwMTM1YVx1MDE2ZGRvX3ZlbmRyZWRvX3NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW1fbHVuX21hcmRfbWVya19cdTAxMzVhXHUwMTZkX3Zlbl9zYWIiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNNaW46ImRpX2x1X21hX21lX1x1MDEzNWFfdmVfc2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IltsYV0gRFstYW4gZGVdIE1NTU0sIFlZWVkiLExMTDoiW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBI''@;'; put 'put ''SDptbSIsTExMTDoiZGRkZFtuXSwgW2xhXSBEWy1hbiBkZV0gTU1NTSwgWVlZWSBISDptbSIsbGxsbDoiZGRkLCBbbGFdIERbLWFuIGRlXSBNTU0sIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9bYXBdXC50XC5tL2ksaXNQTTpmdW5jdGlvbihtKXtyZXR1cm4icCI9PT1tLmNoYXJBdCgw''@;'; put 'put ''KS50b0xvd2VyQ2FzZSgpfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPjExP00/InAudC5tLiI6IlAuVC5NLiI6TT8iYS50Lm0uIjoiQS5ULk0uIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2RpYVx1MDE2ZCBqZV0gTFQiLG5leHREYXk6IltNb3JnYVx1MDE2ZCBqZV0gTFQi''@;'; put 'put ''LG5leHRXZWVrOiJkZGRkW24gamVdIExUIixsYXN0RGF5OiJbSGllcmFcdTAxNmQgamVdIExUIixsYXN0V2VlazoiW3Bhc2ludGFuXSBkZGRkW24gamVdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwb3N0ICVzIixwYXN0OiJhbnRhXHUwMTZkICVzIixzOiJrZWxr''@;'; put 'put ''YWogc2VrdW5kb2oiLHNzOiIlZCBzZWt1bmRvaiIsbToidW51IG1pbnV0byIsbW06IiVkIG1pbnV0b2oiLGg6InVudSBob3JvIixoaDoiJWQgaG9yb2oiLGQ6InVudSB0YWdvIixkZDoiJWQgdGFnb2oiLE06InVudSBtb25hdG8iLE1NOiIlZCBtb25hdG9qIix5OiJ1bnUgamFybyIseXk6IiVk''@;'; put 'put ''IGphcm9qIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfWEvLG9yZGluYWw6IiVkYSIsd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNDE4MDU6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ImVuZS5fZmViLl9tYXIuX2Fi''@;'; put 'put ''ci5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLG09ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLHNlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15q''@;'; put 'put ''dW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAvaSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sTT0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFy''@;'; put 'put ''XC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pO29lLmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9v''@;'; put 'put ''Y3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gST8vLU1NTS0vLnRlc3Qoaik/bVtJLm1vbnRoKCldOnhbSS5tb250aCgpXTp4fSxtb250aHNSZWdleDpNLG1vbnRoc1Nob3J0UmVnZXg6TSxtb250aHNTdHJpY3RS''@;'; put 'put ''ZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5c''@;'; put 'put ''Lj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6c2Usd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhl''@;'; put 'put ''MWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRl''@;'; put 'put ''Rm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBIn0sY2FsZW5kYXI6''@;'; put 'put ''e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWFceGYxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlv''@;'; put 'put ''bigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRk''@;'; put 'put ''IFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1p''@;'; put 'put ''bnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLHc6InVuYSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYVx4ZjFvIix5eToiJWQgYVx4ZjFvcyJ9LGRheU9mTW9udGhPcmRp''@;'; put 'put ''bmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDgzNDQ1OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwu''@;'; put 'put ''X2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxtPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxzZT1bL15lbmUvaSwvXmZlYi9pLC9ebWFyL2ksL15hYnIvaSwvXm1heS9pLC9eanVuL2ksL15qdWwvaSwvXmFn''@;'; put 'put ''by9pLC9ec2VwL2ksL15vY3QvaSwvXm5vdi9pLC9eZGljL2ldLE09L14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/''@;'; put 'put ''fGp1blwuP3xqdWxcLj98YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaTtvZS5kZWZpbmVMb2NhbGUoImVzLW14Iix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVf''@;'; put 'put ''ZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKEksail7cmV0dXJuIEk/Ly1NTU0tLy50ZXN0KGopP21bSS5tb250aCgpXTp4W0kubW9udGgoKV06eH0sbW9udGhzUmVnZXg6TSxtb250aHNTaG9ydFJlZ2V4Ok0sbW9udGhzU3RyaWN0UmVnZXg6L14oZW5lcm98ZmVi''@;'; put 'put ''cmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1bFwuP3xhZ29cLj98''@;'; put 'put ''c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pLG1vbnRoc1BhcnNlOnNlLGxvbmdNb250aHNQYXJzZTpzZSxzaG9ydE1vbnRoc1BhcnNlOnNlLHdlZWtkYXlzOiJkb21pbmdvX2x1bmVzX21hcnRlc19taVx4ZTlyY29sZXNfanVldmVzX3ZpZXJuZXNfc1x4ZTFiYWRvIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pXHhlOS5fanVlLl92aWUuX3NceGUxYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3NceGUxIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0i''@;'; put 'put ''LExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygx''@;'; put 'put ''IT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMu''@;'; put 'put ''aG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIl''@;'; put 'put ''ZCBob3JhcyIsZDoidW4gZFx4ZWRhIixkZDoiJWQgZFx4ZWRhcyIsdzoidW5hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhXHhmMW8iLHl5OiIlZCBhXHhmMW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9y''@;'; put 'put ''ZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjAsZG95OjR9LGludmFsaWREYXRlOiJGZWNoYSBpbnZceGUxbGlkYSJ9KX0oUig5NzU4NikpfSw4MTUxNjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1''@;'; put 'put ''bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksbT0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksc2U9Wy9eZW5lL2ksL15mZWIvaSwvXm1hci9pLC9eYWJyL2ksL15tYXkvaSwvXmp1bi9pLC9eanVs''@;'; put 'put ''L2ksL15hZ28vaSwvXnNlcC9pLC9eb2N0L2ksL15ub3YvaSwvXmRpYy9pXSxNPS9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/''@;'; put 'put ''fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/fG5vdlwuP3xkaWNcLj8pL2k7b2UuZGVmaW5lTG9jYWxlKCJlcy11cyIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92''@;'; put 'put ''aWVtYnJlX2RpY2llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihJLGope3JldHVybiBJPy8tTU1NLS8udGVzdChqKT9tW0kubW9udGgoKV06eFtJLm1vbnRoKCldOnh9LG1vbnRoc1JlZ2V4Ok0sbW9udGhzU2hvcnRSZWdleDpNLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGVu''@;'; put 'put ''ZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihlbmVcLj98ZmViXC4/fG1hclwuP3xhYnJcLj98bWF5XC4/fGp1blwuP3xqdWxcLj98''@;'; put 'put ''YWdvXC4/fHNlcFwuP3xvY3RcLj98bm92XC4/fGRpY1wuPykvaSxtb250aHNQYXJzZTpzZSxsb25nTW9udGhzUGFyc2U6c2Usc2hvcnRNb250aHNQYXJzZTpzZSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWlceGU5cmNvbGVzX2p1ZXZlc192aWVybmVzX3NceGUxYmFkbyIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9taVx4ZTkuX2p1ZS5fdmllLl9zXHhlMWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zXHhlMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xU''@;'; put 'put ''OiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJNTS9ERC9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheTpm''@;'; put 'put ''dW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYVx4ZjFhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''ImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBh''@;'; put 'put ''IGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoi''@;'; put 'put ''dW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZFx4ZWRhIixkZDoiJWQgZFx4ZWRhcyIsdzoidW5hIHNlbWFuYSIsd3c6IiVkIHNlbWFuYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhXHhmMW8iLHl5OiIlZCBhXHhmMW9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTov''@;'; put 'put ''XGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFIoOTc1ODYpKX0sNDY2Nzk6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAu''@;'; put 'put ''X29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLG09ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLHNlPVsvXmVuZS9pLC9eZmViL2ksL15tYXIvaSwvXmFici9pLC9ebWF5L2ksL15qdW4vaSwvXmp1bC9pLC9eYWdvL2ksL15zZXAv''@;'; put 'put ''aSwvXm9jdC9pLC9ebm92L2ksL15kaWMvaV0sTT0vXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVwuP3xmZWJcLj98bWFyXC4/fGFiclwuP3xtYXlcLj98anVuXC4/fGp1''@;'; put 'put ''bFwuP3xhZ29cLj98c2VwXC4/fG9jdFwuP3xub3ZcLj98ZGljXC4/KS9pO29lLmRlZmluZUxvY2FsZSgiZXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNw''@;'; put 'put ''bGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gST8vLU1NTS0vLnRlc3Qoaik/bVtJLm1vbnRoKCldOnhbSS5tb250aCgpXTp4fSxtb250aHNSZWdleDpNLG1vbnRoc1Nob3J0UmVnZXg6TSxtb250aHNTdHJpY3RSZWdleDovXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFi''@;'; put 'put ''cmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oZW5lXC4/fGZlYlwuP3xtYXJcLj98YWJyXC4/fG1heVwuP3xqdW5cLj98anVsXC4/fGFnb1wuP3xzZXBcLj98b2N0XC4/''@;'; put 'put ''fG5vdlwuP3xkaWNcLj8pL2ksbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6c2Usd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pXHhlOXJjb2xlc19qdWV2ZXNfdmllcm5lc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiZG9tLl9sdW4uX21hci5fbWlceGU5Ll9qdWUuX3ZpZS5fc1x4ZTFiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNz''@;'; put 'put ''IixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIr''@;'; put 'put ''KDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hXHhmMWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJz''@;'; put 'put ''KCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoi''@;'; put 'put ''IikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRvcyIsc3M6IiVkIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1''@;'; put 'put ''biBkXHhlZGEiLGRkOiIlZCBkXHhlZGFzIix3OiJ1bmEgc2VtYW5hIix3dzoiJWQgc2VtYW5hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFceGYxbyIseXk6IiVkIGFceGYxb3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJh''@;'; put 'put ''Iix3ZWVrOntkb3c6MSxkb3k6NH0saW52YWxpZERhdGU6IkZlY2hhIGludlx4ZTFsaWRhIn0pfShSKDk3NTg2KSl9LDg4MTUwOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoc2UsTSxPLEkpe3ZhciBqPXtzOlsibVx4ZjVuZSBzZWt1bmRp''@;'; put 'put ''IiwibVx4ZjVuaSBzZWt1bmQiLCJwYWFyIHNla3VuZGl0Il0sc3M6W3NlKyJzZWt1bmRpIixzZSsic2VrdW5kaXQiXSxtOlsiXHhmY2hlIG1pbnV0aSIsIlx4ZmNrcyBtaW51dCJdLG1tOltzZSsiIG1pbnV0aSIsc2UrIiBtaW51dGl0Il0saDpbIlx4ZmNoZSB0dW5uaSIsInR1bmQgYWVnYSIs''@;'; put 'put ''Ilx4ZmNrcyB0dW5kIl0saGg6W3NlKyIgdHVubmkiLHNlKyIgdHVuZGkiXSxkOlsiXHhmY2hlIHBceGU0ZXZhIiwiXHhmY2tzIHBceGU0ZXYiXSxNOlsia3V1IGFqYSIsImt1dSBhZWdhIiwiXHhmY2tzIGt1dSJdLE1NOltzZSsiIGt1dSIsc2UrIiBrdXVkIl0seTpbIlx4ZmNoZSBhYXN0YSIs''@;'; put 'put ''ImFhc3RhIiwiXHhmY2tzIGFhc3RhIl0seXk6W3NlKyIgYWFzdGEiLHNlKyIgYWFzdGF0Il19O3JldHVybiBNP2pbT11bMl0/altPXVsyXTpqW09dWzFdOkk/altPXVswXTpqW09dWzFdfW9lLmRlZmluZUxvY2FsZSgiZXQiLHttb250aHM6ImphYW51YXJfdmVlYnJ1YXJfbVx4ZTRydHNfYXBy''@;'; put 'put ''aWxsX21haV9qdXVuaV9qdXVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9vYmVyX25vdmVtYmVyX2RldHNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFhbl92ZWVicl9tXHhlNHJ0c19hcHJfbWFpX2p1dW5pX2p1dWxpX2F1Z19zZXB0X29rdF9ub3ZfZGV0cyIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5czoicFx4ZmNoYXBceGU0ZXZfZXNtYXNwXHhlNGV2X3RlaXNpcFx4ZTRldl9rb2xtYXBceGU0ZXZfbmVsamFwXHhlNGV2X3JlZWRlX2xhdXBceGU0ZXYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiUF9FX1RfS19OX1JfTCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUF9FX1Rf''@;'; put 'put ''S19OX1JfTCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURh''@;'; put 'put ''eToiW1RceGU0bmEsXSBMVCIsbmV4dERheToiW0hvbW1lLF0gTFQiLG5leHRXZWVrOiJbSlx4ZTRyZ21pbmVdIGRkZGQgTFQiLGxhc3REYXk6IltFaWxlLF0gTFQiLGxhc3RXZWVrOiJbRWVsbWluZV0gZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcFx4''@;'; put 'put ''ZTRyYXN0IixwYXN0OiIlcyB0YWdhc2kiLHM6eCxzczp4LG06eCxtbTp4LGg6eCxoaDp4LGQ6eCxkZDoiJWQgcFx4ZTRldmEiLE06eCxNTTp4LHk6eCx5eTp4fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIo''@;'; put 'put ''OTc1ODYpKX0sODA3NTc6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJldSIse21vbnRoczoidXJ0YXJyaWxhX290c2FpbGFfbWFydHhvYV9hcGlyaWxhX21haWF0emFfZWthaW5hX3V6dGFpbGFfYWJ1enR1YV9pcmFpbGFfdXJy''@;'; put 'put ''aWFfYXphcm9hX2FiZW5kdWEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InVydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5fYWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImlnYW5kZWFfYXN0ZWxlaGVuYV9h''@;'; put 'put ''c3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiaWcuX2FsLl9hci5fYXouX29nLl9vbC5fbHIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJpZ19hbF9hcl9hel9vZ19vbF9sciIuc3BsaXQoIl8iKSx3ZWVr''@;'; put 'put ''ZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVlba29dIE1NTU1bcmVuXSBEW2FdIixMTEw6IllZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tIixMTExMOiJkZGRkLCBZWVlZW2tvXSBNTU1N''@;'; put 'put ''W3Jlbl0gRFthXSBISDptbSIsbDoiWVlZWS1NLUQiLGxsOiJZWVlZW2tvXSBNTU0gRFthXSIsbGxsOiJZWVlZW2tvXSBNTU0gRFthXSBISDptbSIsbGxsbDoiZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZ2F1cl0gTFRbZXRhbl0iLG5leHREYXk6''@;'; put 'put ''IltiaWhhcl0gTFRbZXRhbl0iLG5leHRXZWVrOiJkZGRkIExUW2V0YW5dIixsYXN0RGF5OiJbYXR6b10gTFRbZXRhbl0iLGxhc3RXZWVrOiJbYXVycmVrb10gZGRkZCBMVFtldGFuXSIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgYmFycnUiLHBhc3Q6ImR1ZWxhICVz''@;'; put 'put ''IixzOiJzZWd1bmRvIGJhdHp1ayIsc3M6IiVkIHNlZ3VuZG8iLG06Im1pbnV0dSBiYXQiLG1tOiIlZCBtaW51dHUiLGg6Im9yZHUgYmF0IixoaDoiJWQgb3JkdSIsZDoiZWd1biBiYXQiLGRkOiIlZCBlZ3VuIixNOiJoaWxhYmV0ZSBiYXQiLE1NOiIlZCBoaWxhYmV0ZSIseToidXJ0ZSBiYXQi''@;'; put 'put ''LHl5OiIlZCB1cnRlIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDY1NzQyOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA2ZjEi''@;'; put 'put ''LDI6Ilx1MDZmMiIsMzoiXHUwNmYzIiw0OiJcdTA2ZjQiLDU6Ilx1MDZmNSIsNjoiXHUwNmY2Iiw3OiJcdTA2ZjciLDg6Ilx1MDZmOCIsOToiXHUwNmY5IiwwOiJcdTA2ZjAifSxtPXsiXHUwNmYxIjoiMSIsIlx1MDZmMiI6IjIiLCJcdTA2ZjMiOiIzIiwiXHUwNmY0IjoiNCIsIlx1MDZmNSI6''@;'; put 'put ''IjUiLCJcdTA2ZjYiOiI2IiwiXHUwNmY3IjoiNyIsIlx1MDZmOCI6IjgiLCJcdTA2ZjkiOiI5IiwiXHUwNmYwIjoiMCJ9O29lLmRlZmluZUxvY2FsZSgiZmEiLHttb250aHM6Ilx1MDY5OFx1MDYyN1x1MDY0Nlx1MDY0OFx1MDZjY1x1MDY0N19cdTA2NDFcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2''@;'; put 'put ''NDdfXHUwNjQ1XHUwNjI3XHUwNjMxXHUwNjMzX1x1MDYyMlx1MDY0OFx1MDYzMVx1MDZjY1x1MDY0NF9cdTA2NDVcdTA2NDdfXHUwNjk4XHUwNjQ4XHUwNjI2XHUwNjQ2X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDZjY1x1MDY0N19cdTA2MjdcdTA2NDhcdTA2MmFfXHUwNjMzXHUwNjdlXHUwNjJh''@;'; put 'put ''XHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyN1x1MDZhOVx1MDYyYVx1MDYyOFx1MDYzMV9cdTA2NDZcdTA2NDhcdTA2MjdcdTA2NDVcdTA2MjhcdTA2MzFfXHUwNjJmXHUwNjMzXHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA2OThcdTA2''@;'; put 'put ''MjdcdTA2NDZcdTA2NDhcdTA2Y2NcdTA2NDdfXHUwNjQxXHUwNjQ4XHUwNjMxXHUwNmNjXHUwNjQ3X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYzM19cdTA2MjJcdTA2NDhcdTA2MzFcdTA2Y2NcdTA2NDRfXHUwNjQ1XHUwNjQ3X1x1MDY5OFx1MDY0OFx1MDYyNlx1MDY0Nl9cdTA2OThcdTA2NDhc''@;'; put 'put ''dTA2MjZcdTA2Y2NcdTA2NDdfXHUwNjI3XHUwNjQ4XHUwNjJhX1x1MDYzM1x1MDY3ZVx1MDYyYVx1MDYyN1x1MDY0NVx1MDYyOFx1MDYzMV9cdTA2MjdcdTA2YTlcdTA2MmFcdTA2MjhcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjQ1XHUwNjI4XHUwNjMxX1x1MDYyZlx1MDYzM1x1MDYy''@;'; put 'put ''N1x1MDY0NVx1MDYyOFx1MDYzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNmNjXHUwNmE5XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDYyZlx1MDY0OFx1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MzNcdTA2NDdcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdf''@;'; put 'put ''XHUwNjg2XHUwNjQ3XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY3ZVx1MDY0Nlx1MDYyY1x1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmNcdTA2NDVcdTA2MzlcdTA2NDdfXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3Ii5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzU2hvcnQ6Ilx1MDZjY1x1MDZhOVx1MjAwY1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0N19cdTA2MmZcdTA2NDhcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjMzXHUwNjQ3XHUyMDBjXHUwNjM0XHUwNjQ2XHUwNjI4XHUwNjQ3X1x1MDY4Nlx1MDY0N1x1MDYyN1x1MDYzMVx1MDYzNFx1''@;'; put 'put ''MDY0Nlx1MDYyOFx1MDY0N19cdTA2N2VcdTA2NDZcdTA2MmNcdTIwMGNcdTA2MzRcdTA2NDZcdTA2MjhcdTA2NDdfXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjQ3X1x1MDYzNFx1MDY0Nlx1MDYyOFx1MDY0NyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNmNjX1x1MDYyZl9cdTA2MzNfXHUw''@;'; put 'put ''Njg2X1x1MDY3ZV9cdTA2MmNfXHUwNjM0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRk''@;'; put 'put ''ZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNjQyXHUwNjI4XHUwNjQ0IFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzF8XHUwNjI4XHUwNjM5XHUwNjJmIFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzEvLGlzUE06ZnVuY3Rpb24oTSl7cmV0dXJu''@;'; put 'put ''L1x1MDYyOFx1MDYzOVx1MDYyZiBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxLy50ZXN0KE0pfSxtZXJpZGllbTpmdW5jdGlvbihNLE8sSSl7cmV0dXJuIE08MTI/Ilx1MDY0Mlx1MDYyOFx1MDY0NCBcdTA2MjdcdTA2MzIgXHUwNjM4XHUwNjQ3XHUwNjMxIjoiXHUwNjI4XHUwNjM5''@;'; put 'put ''XHUwNjJmIFx1MDYyN1x1MDYzMiBcdTA2MzhcdTA2NDdcdTA2MzEifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY0NVx1MDYzMVx1MDY0OFx1MDYzMiBcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUwNjQxXHUwNjMxXHUwNjJmXHUwNjI3IFx1MDYzM1x1''@;'; put 'put ''MDYyN1x1MDYzOVx1MDYyYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixsYXN0RGF5OiJbXHUwNjJmXHUwNmNjXHUwNjMxXHUwNjQ4XHUwNjMyIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtcdTA2N2VcdTA2''@;'; put 'put ''Y2NcdTA2MzRdIFtcdTA2MzNcdTA2MjdcdTA2MzlcdTA2MmFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA2MmZcdTA2MzEgJXMiLHBhc3Q6IiVzIFx1MDY3ZVx1MDZjY1x1MDYzNCIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYyYlx1MDYyN1x1MDY0Nlx1''@;'; put 'put ''MDZjY1x1MDY0NyIsc3M6IiVkIFx1MDYyYlx1MDYyN1x1MDY0Nlx1MDZjY1x1MDY0NyIsbToiXHUwNmNjXHUwNmE5IFx1MDYyZlx1MDY0Mlx1MDZjY1x1MDY0Mlx1MDY0NyIsbW06IiVkIFx1MDYyZlx1MDY0Mlx1MDZjY1x1MDY0Mlx1MDY0NyIsaDoiXHUwNmNjXHUwNmE5IFx1MDYzM1x1MDYy''@;'; put 'put ''N1x1MDYzOVx1MDYyYSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYzOVx1MDYyYSIsZDoiXHUwNmNjXHUwNmE5IFx1MDYzMVx1MDY0OFx1MDYzMiIsZGQ6IiVkIFx1MDYzMVx1MDY0OFx1MDYzMiIsTToiXHUwNmNjXHUwNmE5IFx1MDY0NVx1MDYyN1x1MDY0NyIsTU06IiVkIFx1MDY0NVx1MDYy''@;'; put 'put ''N1x1MDY0NyIseToiXHUwNmNjXHUwNmE5IFx1MDYzM1x1MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1tcdTA2ZjAtXHUwNmY5XS9nLGZ1bmN0aW9uKE8pe3JldHVybiBtW09dfSkucmVwbGFjZSgv''@;'; put 'put ''XHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKE8pe3JldHVybiB4W09dfSkucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx1MDY0NS8sb3JkaW5hbDoiJWRcdTA2''@;'; put 'put ''NDUiLHdlZWs6e2Rvdzo2LGRveToxMn19KX0oUig5NzU4NikpfSwzMzk1ODpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD0ibm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqXHhlNCB2aWlzaSBrdXVzaSBzZWl0c2VtXHhlNG4ga2FoZGVrc2FuIHlo''@;'; put 'put ''ZGVrc1x4ZTRuIi5zcGxpdCgiICIpLG09WyJub2xsYSIsInloZGVuIiwia2FoZGVuIiwia29sbWVuIiwibmVsalx4ZTRuIiwidmlpZGVuIiwia3V1ZGVuIix4WzddLHhbOF0seFs5XV07ZnVuY3Rpb24gc2UoSSxqLEcsRCl7dmFyIFQ9IiI7c3dpdGNoKEcpe2Nhc2UicyI6cmV0dXJuIEQ/Im11''@;'; put 'put ''dXRhbWFuIHNla3VubmluIjoibXV1dGFtYSBzZWt1bnRpIjtjYXNlInNzIjpUPUQ/InNla3VubmluIjoic2VrdW50aWEiO2JyZWFrO2Nhc2UibSI6cmV0dXJuIEQ/Im1pbnV1dGluIjoibWludXV0dGkiO2Nhc2UibW0iOlQ9RD8ibWludXV0aW4iOiJtaW51dXR0aWEiO2JyZWFrO2Nhc2UiaCI6''@;'; put 'put ''cmV0dXJuIEQ/InR1bm5pbiI6InR1bnRpIjtjYXNlImhoIjpUPUQ/InR1bm5pbiI6InR1bnRpYSI7YnJlYWs7Y2FzZSJkIjpyZXR1cm4gRD8icFx4ZTRpdlx4ZTRuIjoicFx4ZTRpdlx4ZTQiO2Nhc2UiZGQiOlQ9RD8icFx4ZTRpdlx4ZTRuIjoicFx4ZTRpdlx4ZTRceGU0IjticmVhaztjYXNl''@;'; put 'put ''Ik0iOnJldHVybiBEPyJrdXVrYXVkZW4iOiJrdXVrYXVzaSI7Y2FzZSJNTSI6VD1EPyJrdXVrYXVkZW4iOiJrdXVrYXV0dGEiO2JyZWFrO2Nhc2UieSI6cmV0dXJuIEQ/InZ1b2RlbiI6InZ1b3NpIjtjYXNlInl5IjpUPUQ/InZ1b2RlbiI6InZ1b3R0YSJ9cmV0dXJuIGZ1bmN0aW9uIE0oSSxq''@;'; put 'put ''KXtyZXR1cm4gSTwxMD9qP21bSV06eFtJXTpJfShJLEQpKyIgIitUfW9lLmRlZmluZUxvY2FsZSgiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXNceGU0a3V1X2hlaW5ceGU0a3V1X2Vsb2t1dV9zeXlza3V1X2xva2FrdXVfbWFy''@;'; put 'put ''cmFza3V1X2pvdWx1a3V1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2VzXHhlNF9oZWluXHhlNF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFp''@;'; put 'put ''X2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTVt0YV0gWVlZWSIsTExMOiJEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbSIsTExMTDoiZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0iLGw6IkQuTS5ZWVlZIixsbDoiRG8gTU1NIFlZ''@;'; put 'put ''WVkiLGxsbDoiRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tIixsbGxsOiJkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBISC5tbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdFx4ZTRuXHhlNFx4ZTRuXSBba2xvXSBMVCIsbmV4dERheToiW2h1b21lbm5hXSBba2xvXSBMVCIsbmV4dFdlZWs6ImRkZGQg''@;'; put 'put ''W2tsb10gTFQiLGxhc3REYXk6IltlaWxlbl0gW2tsb10gTFQiLGxhc3RXZWVrOiJbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBwXHhlNFx4ZTRzdFx4ZTQiLHBhc3Q6IiVzIHNpdHRlbiIsczpzZSxzczpzZSxtOnNlLG1t''@;'; put 'put ''OnNlLGg6c2UsaGg6c2UsZDpzZSxkZDpzZSxNOnNlLE1NOnNlLHk6c2UseXk6c2V9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw0NjcyMDpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24o''@;'; put 'put ''b2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImZpbCIse21vbnRoczoiRW5lcm9fUGVicmVyb19NYXJzb19BYnJpbF9NYXlvX0h1bnlvX0h1bHlvX0Fnb3N0b19TZXR5ZW1icmVfT2t0dWJyZV9Ob2J5ZW1icmVfRGlzeWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJFbmVf''@;'; put 'put ''UGViX01hcl9BYnJfTWF5X0h1bl9IdWxfQWdvX1NldF9Pa3RfTm9iX0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTGluZ2dvX0x1bmVzX01hcnRlc19NaXllcmt1bGVzX0h1d2ViZXNfQml5ZXJuZXNfU2FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ikxpbl9MdW5fTWFyX01peV9I''@;'; put 'put ''dXdfQml5X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTGlfTHVfTWFfTWlfSHVfQmlfU2FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6Ik1NL0QvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgSEg6''@;'; put 'put ''bW0iLExMTEw6ImRkZGQsIE1NTU0gREQsIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiTFQgW25nYXlvbmcgYXJhd10iLG5leHREYXk6IltCdWthcyBuZ10gTFQiLG5leHRXZWVrOiJMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCIsbGFzdERheToiTFQgW2thaGFwb25dIixsYXN0V2Vl''@;'; put 'put ''azoiTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToic2EgbG9vYiBuZyAlcyIscGFzdDoiJXMgYW5nIG5ha2FsaXBhcyIsczoiaWxhbmcgc2VndW5kbyIsc3M6IiVkIHNlZ3VuZG8iLG06ImlzYW5nIG1pbnV0byIsbW06IiVkIG1p''@;'; put 'put ''bnV0byIsaDoiaXNhbmcgb3JhcyIsaGg6IiVkIG9yYXMiLGQ6ImlzYW5nIGFyYXciLGRkOiIlZCBhcmF3IixNOiJpc2FuZyBidXdhbiIsTU06IiVkIGJ1d2FuIix5OiJpc2FuZyB0YW9uIix5eToiJWQgdGFvbiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6ZnVu''@;'; put 'put ''Y3Rpb24obSl7cmV0dXJuIG19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDk4MzUyOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZm8iLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByXHhlZGxfbWFp''@;'; put 'put ''X2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5udWRhZ3VyX21ceGUx''@;'; put 'put ''bmFkYWd1cl90XHhmZHNkYWd1cl9taWt1ZGFndXJfaFx4ZjNzZGFndXJfZnJceGVkZ2dqYWRhZ3VyX2xleWdhcmRhZ3VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tXHhlMW5fdFx4ZmRzX21pa19oXHhmM3NfZnJceGVkX2xleSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3Vf''@;'; put 'put ''bVx4ZTFfdFx4ZmRfbWlfaFx4ZjNfZnJfbGUiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0sIFlZWVkgSEg6''@;'; put 'put ''bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x4Y2QgZGFnIGtsLl0gTFQiLG5leHREYXk6IltceGNkIG1vcmdpbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW1x4Y2QgZ2pceGUxciBrbC5dIExUIixsYXN0V2VlazoiW3NceGVkXHhmMHN0dV0gZGRkZCBba2xd''@;'; put 'put ''IExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ1bSAlcyIscGFzdDoiJXMgc1x4ZWRceGYwYW5pIixzOiJmXHhlMSBzZWt1bmQiLHNzOiIlZCBzZWt1bmRpciIsbToiZWluIG1pbnV0dHVyIixtbToiJWQgbWludXR0aXIiLGg6ImVpbiB0XHhlZG1pIixoaDoiJWQgdFx4''@;'; put 'put ''ZWRtYXIiLGQ6ImVpbiBkYWd1ciIsZGQ6IiVkIGRhZ2FyIixNOiJlaW4gbVx4ZTFuYVx4ZjB1ciIsTU06IiVkIG1ceGUxbmFceGYwaXIiLHk6ImVpdHQgXHhlMXIiLHl5OiIlZCBceGUxciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntk''@;'; put 'put ''b3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw0MjA5NjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImZyLWNhIix7bW9udGhzOiJqYW52aWVyX2ZceGU5dnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2FvXHhmYnRf''@;'; put 'put ''c2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZFx4ZTljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2ZceGU5dnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb1x4ZmJ0X3NlcHQuX29jdC5fbm92Ll9kXHhlOWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6''@;'; put 'put ''ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkaV9sdV9tYV9tZV9q''@;'; put 'put ''ZV92ZV9zYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhI''@;'; put 'put ''Om1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkXHUyMDE5aHVpIFx4ZTBdIExUIixuZXh0RGF5OiJbRGVtYWluIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltIaWVyIFx4ZTBdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciBceGUwXSBMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsc3M6IiVkIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1''@;'; put 'put ''biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24obSxzZSl7c3dpdGNoKHNlKXtkZWZhdWx0OmNhc2UiTSI6Y2FzZSJR''@;'; put 'put ''IjpjYXNlIkQiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiBtKygxPT09bT8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBtKygxPT09bT8icmUiOiJlIil9fX0pfShSKDk3NTg2KSl9LDk1NzU5OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29l''@;'; put 'put ''LmRlZmluZUxvY2FsZSgiZnItY2giLHttb250aHM6ImphbnZpZXJfZlx4ZTl2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW9ceGZidF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kXHhlOWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZlx4ZTl2ci5f''@;'; put 'put ''bWFyc19hdnIuX21haV9qdWluX2p1aWwuX2FvXHhmYnRfc2VwdC5fb2N0Ll9ub3YuX2RceGU5Yy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRpX2x1X21hX21lX2plX3ZlX3NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1t''@;'; put 'put ''OnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmRcdTIwMTlodWkgXHhlMF0gTFQiLG5leHREYXk6IltEZW1haW4gXHhlMF0gTFQi''@;'; put 'put ''LG5leHRXZWVrOiJkZGRkIFtceGUwXSBMVCIsbGFzdERheToiW0hpZXIgXHhlMF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIFx4ZTBdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29u''@;'; put 'put ''ZGVzIixzczoiJWQgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sZGF5T2ZNb250''@;'; put 'put ''aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcnxlKS8sb3JkaW5hbDpmdW5jdGlvbihtLHNlKXtzd2l0Y2goc2Upe2RlZmF1bHQ6Y2FzZSJNIjpjYXNlIlEiOmNhc2UiRCI6Y2FzZSJEREQiOmNhc2UiZCI6cmV0dXJuIG0rKDE9PT1tPyJlciI6ImUiKTtjYXNlInciOmNhc2UiVyI6cmV0dXJuIG0r''@;'; put 'put ''KDE9PT1tPyJyZSI6ImUiKX19LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDQwNTk6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHNlPS8oamFudlwuP3xmXHhlOXZyXC4/fG1hcnN8YXZyXC4/fG1haXxqdWlufGp1aWxcLj98YW9ceGZi''@;'; put 'put ''dHxzZXB0XC4/fG9jdFwuP3xub3ZcLj98ZFx4ZTljXC4/fGphbnZpZXJ8Zlx4ZTl2cmllcnxtYXJzfGF2cmlsfG1haXxqdWlufGp1aWxsZXR8YW9ceGZidHxzZXB0ZW1icmV8b2N0b2JyZXxub3ZlbWJyZXxkXHhlOWNlbWJyZSkvaSxNPVsvXmphbnYvaSwvXmZceGU5dnIvaSwvXm1hcnMvaSwv''@;'; put 'put ''XmF2ci9pLC9ebWFpL2ksL15qdWluL2ksL15qdWlsL2ksL15hb1x4ZmJ0L2ksL15zZXB0L2ksL15vY3QvaSwvXm5vdi9pLC9eZFx4ZTljL2ldO29lLmRlZmluZUxvY2FsZSgiZnIiLHttb250aHM6ImphbnZpZXJfZlx4ZTl2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW9ceGZi''@;'; put 'put ''dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kXHhlOWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZlx4ZTl2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2FvXHhmYnRfc2VwdC5fb2N0Ll9ub3YuX2RceGU5Yy4iLnNwbGl0KCJfIiksbW9udGhzUmVnZXg6c2Us''@;'; put 'put ''bW9udGhzU2hvcnRSZWdleDpzZSxtb250aHNTdHJpY3RSZWdleDovXihqYW52aWVyfGZceGU5dnJpZXJ8bWFyc3xhdnJpbHxtYWl8anVpbnxqdWlsbGV0fGFvXHhmYnR8c2VwdGVtYnJlfG9jdG9icmV8bm92ZW1icmV8ZFx4ZTljZW1icmUpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovKGph''@;'; put 'put ''bnZcLj98Zlx4ZTl2clwuP3xtYXJzfGF2clwuP3xtYWl8anVpbnxqdWlsXC4/fGFvXHhmYnR8c2VwdFwuP3xvY3RcLj98bm92XC4/fGRceGU5Y1wuPykvaSxtb250aHNQYXJzZTpNLGxvbmdNb250aHNQYXJzZTpNLHNob3J0TW9udGhzUGFyc2U6TSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlf''@;'; put 'put ''bWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRpX2x1X21hX21lX2plX3ZlX3NhIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''UGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0F1''@;'; put 'put ''am91cmRcdTIwMTlodWkgXHhlMF0gTFQiLG5leHREYXk6IltEZW1haW4gXHhlMF0gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwXSBMVCIsbGFzdERheToiW0hpZXIgXHhlMF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIFx4ZTBdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7''@;'; put 'put ''ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29uZGVzIixzczoiJWQgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsdzoidW5l''@;'; put 'put ''IHNlbWFpbmUiLHd3OiIlZCBzZW1haW5lcyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcnwpLyxvcmRpbmFsOmZ1bmN0aW9uKEksail7c3dpdGNoKGope2Nhc2UiRCI6cmV0dXJuIEkrKDE9''@;'; put 'put ''PT1JPyJlciI6IiIpO2RlZmF1bHQ6Y2FzZSJNIjpjYXNlIlEiOmNhc2UiREREIjpjYXNlImQiOnJldHVybiBJKygxPT09ST8iZXIiOiJlIik7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBJKygxPT09ST8icmUiOiJlIil9fSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSwxNTk1ODpm''@;'; put 'put ''dW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD0iamFuLl9mZWIuX21ydC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtPSJqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rf''@;'; put 'put ''bm92X2RlcyIuc3BsaXQoIl8iKTtvZS5kZWZpbmVMb2NhbGUoImZ5Iix7bW9udGhzOiJqYW5uZXdhcmlzX2ZlYnJld2FyaXNfbWFhcnRfYXByaWxfbWFhaWVfanVueV9qdWx5X2F1Z3VzdHVzX3NlcHRpbWJlcl9va3RvYmVyX25vdmltYmVyX2Rlc2ltYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OmZ1bmN0aW9uKE0sTyl7cmV0dXJuIE0/Ly1NTU0tLy50ZXN0KE8pP21bTS5tb250aCgpXTp4W00ubW9udGgoKV06eH0sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic25laW5fbW9hbmRlaV90aWlzZGVpX3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24iLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNTaG9ydDoic2kuX21vLl90aS5fd28uX3RvLl9mci5fc28uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTaV9Nb19UaV9Xb19Ub19Gcl9TbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpz''@;'; put 'put ''cyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltoam9lZCBvbV0gTFQiLG5leHREYXk6Ilttb2FybiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtv''@;'; put 'put ''bV0gTFQiLGxhc3REYXk6IltqdXN0ZXIgb21dIExUIixsYXN0V2VlazoiW1x4ZjRmclx4ZmJuZV0gZGRkZCBbb21dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvZXIgJXMiLHBhc3Q6IiVzIGx5biIsczoiaW4gcGVhciBzZWtvbmRlbiIsc3M6IiVkIHNla29uZGVu''@;'; put 'put ''IixtOiJpZW4gbWluXHhmYXQiLG1tOiIlZCBtaW51dGVuIixoOiJpZW4gb2VyZSIsaGg6IiVkIG9lcmVuIixkOiJpZW4gZGVpIixkZDoiJWQgZGFnZW4iLE06ImllbiBtb2FubmUiLE1NOiIlZCBtb2FubmVuIix5OiJpZW4gamllciIseXk6IiVkIGppZXJyZW4ifSxkYXlPZk1vbnRoT3JkaW5h''@;'; put 'put ''bFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oTSl7cmV0dXJuIE0rKDE9PT1NfHw4PT09TXx8TT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDk0MTQzOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBz''@;'; put 'put ''dHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZ2EiLHttb250aHM6WyJFYW5ceGUxaXIiLCJGZWFiaHJhIiwiTVx4ZTFydGEiLCJBaWJyZVx4ZTFuIiwiQmVhbHRhaW5lIiwiTWVpdGhlYW1oIiwiSVx4ZmFpbCIsIkxceGZhbmFzYSIsIk1lXHhlMW4gRlx4ZjNtaGFpciIsIkRlaXJlYWRoIEZceGYz''@;'; put 'put ''bWhhaXIiLCJTYW1oYWluIiwiTm9sbGFpZyJdLG1vbnRoc1Nob3J0OlsiRWFuIiwiRmVhYmgiLCJNXHhlMXJ0IiwiQWliIiwiQmVhbCIsIk1laXRoIiwiSVx4ZmFpbCIsIkxceGZhbiIsIk0uRi4iLCJELkYuIiwiU2FtaCIsIk5vbGwiXSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOlsi''@;'; put 'put ''RFx4ZTkgRG9taG5haWdoIiwiRFx4ZTkgTHVhaW4iLCJEXHhlOSBNXHhlMWlydCIsIkRceGU5IENceGU5YWRhb2luIiwiRFx4ZTlhcmRhb2luIiwiRFx4ZTkgaEFvaW5lIiwiRFx4ZTkgU2F0aGFpcm4iXSx3ZWVrZGF5c1Nob3J0OlsiRG9taCIsIkx1YW4iLCJNXHhlMWlydCIsIkNceGU5YWQi''@;'; put 'put ''LCJEXHhlOWFyIiwiQW9pbmUiLCJTYXRoIl0sd2Vla2RheXNNaW46WyJEbyIsIkx1IiwiTVx4ZTEiLCJDXHhlOSIsIkRceGU5IiwiQSIsIlNhIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQg''@;'; put 'put ''TU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSW5uaXUgYWddIExUIixuZXh0RGF5OiJbQW1ceGUxcmFjaCBhZ10gTFQiLG5leHRXZWVrOiJkZGRkIFthZ10gTFQiLGxhc3REYXk6IltJbm5ceGU5IGFnXSBMVCIsbGFz''@;'; put 'put ''dFdlZWs6ImRkZGQgW3NlbyBjYWl0ZV0gW2FnXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaSAlcyIscGFzdDoiJXMgXHhmMyBzaGluIixzOiJjXHhmYXBsYSBzb2ljaW5kIixzczoiJWQgc29pY2luZCIsbToiblx4ZjNpbVx4ZTlhZCIsbW06IiVkIG5ceGYzaW1c''@;'; put 'put ''eGU5YWQiLGg6InVhaXIgYW4gY2hsb2lnIixoaDoiJWQgdWFpciBhbiBjaGxvaWciLGQ6ImxceGUxIixkZDoiJWQgbFx4ZTEiLE06Im1ceGVkIixNTToiJWQgbVx4ZWRvbm5hIix5OiJibGlhaW4iLHl5OiIlZCBibGlhaW4ifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGR8bmF8''@;'; put 'put ''bWgpLyxvcmRpbmFsOmZ1bmN0aW9uKGope3JldHVybiBqKygxPT09aj8iZCI6aiUxMD09Mj8ibmEiOiJtaCIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw2NzAyODpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUo''@;'; put 'put ''ImdkIix7bW9udGhzOlsiQW0gRmFvaWxsZWFjaCIsIkFuIEdlYXJyYW4iLCJBbSBNXHhlMHJ0IiwiQW4gR2libGVhbiIsIkFuIENceGU4aXRlYW4iLCJBbiB0LVx4ZDJnbWhpb3MiLCJBbiB0LUl1Y2hhciIsIkFuIExceGY5bmFzdGFsIiwiQW4gdC1TdWx0YWluIiwiQW4gRFx4ZTBtaGFpciIs''@;'; put 'put ''IkFuIHQtU2FtaGFpbiIsIkFuIERceGY5YmhsYWNoZCJdLG1vbnRoc1Nob3J0OlsiRmFvaSIsIkdlYXIiLCJNXHhlMHJ0IiwiR2libCIsIkNceGU4aXQiLCJceGQyZ21oIiwiSXVjaCIsIkxceGY5biIsIlN1bHQiLCJEXHhlMG1oIiwiU2FtaCIsIkRceGY5YmgiXSxtb250aHNQYXJzZUV4YWN0''@;'; put 'put ''OiEwLHdlZWtkYXlzOlsiRGlkXHhmMm1obmFpY2giLCJEaWx1YWluIiwiRGltXHhlMGlydCIsIkRpY2lhZGFpbiIsIkRpYXJkYW9pbiIsIkRpaGFvaW5lIiwiRGlzYXRoYWlybmUiXSx3ZWVrZGF5c1Nob3J0OlsiRGlkIiwiRGlsIiwiRGltIiwiRGljIiwiRGlhIiwiRGloIiwiRGlzIl0sd2Vl''@;'; put 'put ''a2RheXNNaW46WyJEXHhmMiIsIkx1IiwiTVx4ZTAiLCJDaSIsIkFyIiwiSGEiLCJTYSJdLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBN''@;'; put 'put ''TU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0FuLWRpdWdoIGFpZ10gTFQiLG5leHREYXk6IltBLW1ceGUwaXJlYWNoIGFpZ10gTFQiLG5leHRXZWVrOiJkZGRkIFthaWddIExUIixsYXN0RGF5OiJbQW4tZFx4ZTggYWlnXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3NlbyBjaGFp''@;'; put 'put ''ZGhdIFthaWddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJhbm4gYW4gJXMiLHBhc3Q6ImJobyBjaGlvbm4gJXMiLHM6ImJlYWdhbiBkaW9nYW4iLHNzOiIlZCBkaW9nYW4iLG06Im1pb25haWQiLG1tOiIlZCBtaW9uYWlkZWFuIixoOiJ1YWlyIixoaDoiJWQgdWFp''@;'; put 'put ''cmVhbiIsZDoibGF0aGEiLGRkOiIlZCBsYXRoYSIsTToibVx4ZWNvcyIsTU06IiVkIG1ceGVjb3NhbiIseToiYmxpYWRobmEiLHl5OiIlZCBibGlhZGhuYSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oZHxuYXxtaCkvLG9yZGluYWw6ZnVuY3Rpb24oail7cmV0dXJuIGorKDE9''@;'; put 'put ''PT1qPyJkIjpqJTEwPT0yPyJuYSI6Im1oIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDgwNDI4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgiZ2wiLHttb250aHM6InhhbmVpcm9fZmVicmVpcm9fbWFyem9f''@;'; put 'put ''YWJyaWxfbWFpb194dVx4ZjFvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlY2VtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ4YW4uX2ZlYi5fbWFyLl9hYnIuX21haS5feHVceGYxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLiIuc3BsaXQoIl8i''@;'; put 'put ''KSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1bnNfbWFydGVzX21ceGU5cmNvcmVzX3hvdmVzX3ZlbnJlc19zXHhlMWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbVx4ZTlyLl94b3YuX3Zlbi5fc1x4ZTFiLiIuc3BsaXQoIl8i''@;'; put 'put ''KSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbVx4ZTlfeG9fdmVfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQg''@;'; put 'put ''W2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3hlICIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiXHhlMSIpKyJdIExUIn0sbmV4dERheTpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJbbWFceGYxXHhlMSAiKygxIT09dGhpcy5ob3VycygpPyJceGUxcyI6Ilx4ZTEiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgWyIrKDEhPT10aGlzLmhvdXJzKCk/Ilx4ZTFzIjoiYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiJbb250ZSAiKygxIT09dGhpcy5ob3VycygpPyJceGUxIjoiYSIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW29dIGRkZGQgW3Bhc2FkbyAiKygxIT09dGhpcy5ob3VycygpPyJceGUxcyI6ImEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntm''@;'; put 'put ''dXR1cmU6ZnVuY3Rpb24obSl7cmV0dXJuIDA9PT1tLmluZGV4T2YoInVuIik/Im4iK206ImVuICIrbX0scGFzdDoiaGFpICVzIixzOiJ1bnMgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5oYSBob3JhIixoaDoiJWQgaG9yYXMi''@;'; put 'put ''LGQ6InVuIGRceGVkYSIsZGQ6IiVkIGRceGVkYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhbm8iLHl5OiIlZCBhbm9zIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVkXHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYp''@;'; put 'put ''KX0sNzY4NjE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24geChzZSxNLE8sSSl7dmFyIGo9e3M6WyJcdTA5MjVcdTA5NGJcdTA5MjFcdTA5MmZcdTA5M2UgXHUwOTM4XHUwOTQ1XHUwOTE1XHUwOTAyXHUwOTIxXHUwOTNlXHUwOTAyXHUwOTI4''@;'; put 'put ''XHUwOTQwIiwiXHUwOTI1XHUwOTRiXHUwOTIxXHUwOTQ3IFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMSJdLHNzOltzZSsiIFx1MDkzOFx1MDk0NVx1MDkxNVx1MDkwMlx1MDkyMVx1MDkzZVx1MDkwMlx1MDkyOFx1MDk0MCIsc2UrIiBcdTA5MzhcdTA5NDVcdTA5MTVcdTA5MDJcdTA5''@;'; put 'put ''MjEiXSxtOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDkzZlx1MDkyM1x1MDkxZlx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5NDJcdTA5MWYiXSxtbTpbc2UrIiBcdTA5MmVcdTA5M2ZcdTA5MjNcdTA5MWZcdTA5M2VcdTA5MDJcdTA5Mjhc''@;'; put 'put ''dTA5NDAiLHNlKyIgXHUwOTJlXHUwOTNmXHUwOTIzXHUwOTFmXHUwOTNlXHUwOTAyIl0saDpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MzVcdTA5MzBcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwIl0saGg6W3NlKyIgXHUwOTM1XHUwOTMwXHUwOTNlXHUwOTAyXHUw''@;'; put 'put ''OTI4XHUwOTQwIixzZSsiIFx1MDkzNVx1MDkzMFx1MDkzZVx1MDkwMiJdLGQ6WyJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTI2XHUwOTNmXHUwOTM4XHUwOTNlXHUwOTI4IiwiXHUwOTBmXHUwOTE1IFx1MDkyNlx1MDk0MFx1MDkzOCJdLGRkOltzZSsiIFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkz''@;'; put 'put ''ZVx1MDkwMlx1MDkyOFx1MDk0MCIsc2UrIiBcdTA5MjZcdTA5NDBcdTA5MzgiXSxNOlsiXHUwOTBmXHUwOTE1XHUwOTNlIFx1MDkyZVx1MDk0ZFx1MDkzOVx1MDkyZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkyOCIsIlx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZc''@;'; put 'put ''dTA5MjhcdTA5NGIiXSxNTTpbc2UrIiBcdTA5MmVcdTA5NGRcdTA5MzlcdTA5MmZcdTA5MjhcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MjhcdTA5NDAiLHNlKyIgXHUwOTJlXHUwOTRkXHUwOTM5XHUwOTJmXHUwOTI4XHUwOTQ3Il0seTpbIlx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MzVcdTA5MzBc''@;'; put 'put ''dTA5NGRcdTA5MzhcdTA5M2VcdTA5MjgiLCJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4Il0seXk6W3NlKyIgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM4XHUwOTNlXHUwOTAyXHUwOTI4XHUwOTQwIixzZSsiIFx1MDkzNVx1MDkzMFx1MDk0ZFx1MDkzOFx1MDkzZVx1MDkw''@;'; put 'put ''MiJdfTtyZXR1cm4gST9qW09dWzBdOmpbT11bMV19b2UuZGVmaW5lTG9jYWxlKCJnb20tZGV2YSIse21vbnRoczp7c3RhbmRhbG9uZToiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3XHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1''@;'; put 'put ''MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBmXHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQwXHUwOTMyX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTJmX1x1MDkxMVx1MDkxN1x1MDkz''@;'; put 'put ''OFx1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTExXHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5''@;'; put 'put ''MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksZm9ybWF0OiJcdTA5MWNcdTA5M2VcdTA5MjhcdTA5NDdcdTA5MzVcdTA5M2VcdTA5MzBcdTA5NDBcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUw''@;'; put 'put ''OTQxXHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYVx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MGZcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDBcdTA5MzJcdTA5M2VcdTA5MWFcdTA5''@;'; put 'put ''NGRcdTA5MmZcdTA5M2VfXHUwOTJlXHUwOTQ3XHUwOTJmXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkxY1x1MDk0Mlx1MDkyOFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5MmZcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5''@;'; put 'put ''M2VfXHUwOTExXHUwOTE3XHUwOTM4XHUwOTRkXHUwOTFmXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkzOFx1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkwMlx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZV9cdTA5MTFcdTA5MTVcdTA5NGRcdTA5''@;'; put 'put ''MWZcdTA5NGJcdTA5MmNcdTA5MzBcdTA5M2VcdTA5MWFcdTA5NGRcdTA5MmZcdTA5M2VfXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyXHUwOTJjXHUwOTMwXHUwOTNlXHUwOTFhXHUwOTRkXHUwOTJmXHUwOTNlX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0N1x1MDkw''@;'; put 'put ''Mlx1MDkyY1x1MDkzMFx1MDkzZVx1MDkxYVx1MDk0ZFx1MDkyZlx1MDkzZSIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovTU1NTShccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0Ny5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5''@;'; put 'put ''MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBmXHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQwLl9cdTA5MmVcdTA5NDdfXHUwOTFjXHUwOTQyXHUwOTI4X1x1MDkxY1x1MDk0MVx1MDkzMi5fXHUwOTExXHUwOTE3Ll9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDIuX1x1''@;'; put 'put ''MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyLl9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDIuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkwNlx1MDkyZlx1MDky''@;'; put 'put ''NFx1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMzXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmNcdTA5M2ZcdTA5MzBcdTA5NDdcdTA5MzhcdTA5NGRcdTA5MjRcdTA5''@;'; put 'put ''M2VcdTA5MzBfXHUwOTM4XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTNlXHUwOTMwX1x1MDkzNlx1MDk0N1x1MDkyOFx1MDkzNVx1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5MDZcdTA5MmZcdTA5MjQuX1x1MDkzOFx1MDk0Ylx1MDkyZS5fXHUwOTJlXHUw''@;'; put 'put ''OTAyXHUwOTE3XHUwOTMzLl9cdTA5MmNcdTA5NDFcdTA5MjcuX1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0N1x1MDkzOFx1MDk0ZFx1MDkyNC5fXHUwOTM4XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwLl9cdTA5MzZcdTA5NDdcdTA5MjguIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA5MDZf''@;'; put 'put ''XHUwOTM4XHUwOTRiX1x1MDkyZVx1MDkwMl9cdTA5MmNcdTA5NDFfXHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQ3X1x1MDkzOFx1MDk0MV9cdTA5MzZcdTA5NDciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFtcdTA5MzVcdTA5M2Vc''@;'; put 'put ''dTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixMVFM6IkEgaDptbTpzcyBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUw''@;'; put 'put ''OTNlXHUwOTAyXSIsTExMTDoiZGRkZCwgTU1NTSBEbywgWVlZWSwgQSBoOm1tIFtcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2VcdTA5MDJdIixsbGxsOiJkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlXHUwOTAyXSJ9LGNhbGVuZGFy''@;'; put 'put ''OntzYW1lRGF5OiJbXHUwOTA2XHUwOTJmXHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkyYlx1MDkzZVx1MDkzMlx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkwMl0gTFQiLG5leHRXZWVrOiJbXHUwOTJiXHUwOTQxXHUwOTIxXHUwOTMyXHUwOTRiXSBkZGRkWyxdIExUIixsYXN0RGF5OiJbXHUwOTE1''@;'; put 'put ''XHUwOTNlXHUwOTMyXSBMVCIsbGFzdFdlZWs6IltcdTA5MmJcdTA5M2VcdTA5MWZcdTA5MzJcdTA5NGJdIGRkZGRbLF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIixwYXN0OiIlcyBcdTA5MDZcdTA5MjZcdTA5NDBcdTA5MDIiLHM6eCxzczp4LG06eCxtbTp4''@;'; put 'put ''LGg6eCxoaDp4LGQ6eCxkZDp4LE06eCxNTTp4LHk6eCx5eTp4fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1MDkzNVx1MDk0N1x1MDkzMCkvLG9yZGluYWw6ZnVuY3Rpb24oc2UsTSl7cmV0dXJuIkQiPT09TT9zZSsiXHUwOTM1XHUwOTQ3XHUwOTMwIjpzZX0sd2Vlazp7ZG93''@;'; put 'put ''OjAsZG95OjN9LG1lcmlkaWVtUGFyc2U6L1x1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MHxcdTA5MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDBcdTA5MDJ8XHUwOTI2XHUwOTI4XHUwOTJhXHUwOTNlXHUwOTMwXHUwOTNlXHUwOTAyfFx1MDkzOFx1MDkzZVx1MDkwMlx1MDkxY1x1MDk0Ny8sbWVy''@;'; put 'put ''aWRpZW1Ib3VyOmZ1bmN0aW9uKHNlLE0pe3JldHVybiAxMj09PXNlJiYoc2U9MCksIlx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0MCI9PT1NP3NlPDQ/c2U6c2UrMTI6Ilx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MFx1MDkwMiI9PT1NP3NlOiJcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2Vc''@;'; put 'put ''dTA5MzBcdTA5M2VcdTA5MDIiPT09TT9zZT4xMj9zZTpzZSsxMjoiXHUwOTM4XHUwOTNlXHUwOTAyXHUwOTFjXHUwOTQ3Ij09PU0/c2UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihzZSxNLE8pe3JldHVybiBzZTw0PyJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDAiOnNlPDEyPyJcdTA5''@;'; put 'put ''MzhcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDBcdTA5MDIiOnNlPDE2PyJcdTA5MjZcdTA5MjhcdTA5MmFcdTA5M2VcdTA5MzBcdTA5M2VcdTA5MDIiOnNlPDIwPyJcdTA5MzhcdTA5M2VcdTA5MDJcdTA5MWNcdTA5NDciOiJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NDAifX0pfShSKDk3NTg2KSl9''@;'; put 'put ''LDU3NzE4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoc2UsTSxPLEkpe3ZhciBqPXtzOlsidGhvZGRlYSBzZWtvbmRhbW5pIiwidGhvZGRlIHNla29uZCJdLHNzOltzZSsiIHNla29uZGFtbmkiLHNlKyIgc2Vrb25kIl0sbTpbImVrYSBt''@;'; put 'put ''aW50YW4iLCJlayBtaW51dCJdLG1tOltzZSsiIG1pbnRhbW5pIixzZSsiIG1pbnRhbSJdLGg6WyJla2Egdm9yYW4iLCJlayB2b3IiXSxoaDpbc2UrIiB2b3JhbW5pIixzZSsiIHZvcmFtIl0sZDpbImVrYSBkaXNhbiIsImVrIGRpcyJdLGRkOltzZSsiIGRpc2FtbmkiLHNlKyIgZGlzIl0sTTpb''@;'; put 'put ''ImVrYSBtaG9pbmVhbiIsImVrIG1ob2lubyJdLE1NOltzZSsiIG1ob2luZWFtbmkiLHNlKyIgbWhvaW5lIl0seTpbImVrYSB2b3JzYW4iLCJlayB2b3JvcyJdLHl5OltzZSsiIHZvcnNhbW5pIixzZSsiIHZvcnNhbSJdfTtyZXR1cm4gST9qW09dWzBdOmpbT11bMV19b2UuZGVmaW5lTG9jYWxl''@;'; put 'put ''KCJnb20tbGF0biIse21vbnRoczp7c3RhbmRhbG9uZToiSmFuZXJfRmVicmVyX01hcnNfQWJyaWxfTWFpX0p1bl9KdWxhaV9BZ29zdF9TZXRlbWJyX090dWJyX05vdmVtYnJfRGV6ZW1iciIuc3BsaXQoIl8iKSxmb3JtYXQ6IkphbmVyYWNoZWFfRmVicmVyYWNoZWFfTWFyc2FjaGVhX0Ficmls''@;'; put 'put ''YWNoZWFfTWFpYWNoZWFfSnVuYWNoZWFfSnVsYWlhY2hlYV9BZ29zdGFjaGVhX1NldGVtYnJhY2hlYV9PdHVicmFjaGVhX05vdmVtYnJhY2hlYV9EZXplbWJyYWNoZWEiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L01NTU0oXHMpK0Rbb0RdPy99LG1vbnRoc1Nob3J0OiJKYW4uX0ZlYi5fTWFyc19B''@;'; put 'put ''YnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiQWl0YXJfU29tYXJfTW9uZ2xsYXJfQnVkaHZhcl9CaXJlc3Rhcl9TdWtyYXJfU29uJ3ZhciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJB''@;'; put 'put ''aXQuX1NvbS5fTW9uLl9CdWQuX0JyZS5fU3VrLl9Tb24uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaV9TbV9Nb19CdV9Ccl9TdV9TbiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gW3ZhenRhXSIsTFRTOiJBIGg6bW06c3Mg''@;'; put 'put ''W3ZhenRhXSIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdIixMTExMOiJkZGRkLCBNTU1NIERvLCBZWVlZLCBBIGg6bW0gW3ZhenRhXSIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZLCBBIGg6bW0gW3ZhenRhXSJ9LGNhbGVuZGFy''@;'; put 'put ''OntzYW1lRGF5OiJbQWl6XSBMVCIsbmV4dERheToiW0ZhbGVhbV0gTFQiLG5leHRXZWVrOiJbRnVkZGxvXSBkZGRkWyxdIExUIixsYXN0RGF5OiJbS2FsXSBMVCIsbGFzdFdlZWs6IltGYXR0bG9dIGRkZGRbLF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIixw''@;'; put 'put ''YXN0OiIlcyBhZGltIixzOngsc3M6eCxtOngsbW06eCxoOngsaGg6eCxkOngsZGQ6eCxNOngsTU06eCx5OngseXk6eH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShlcikvLG9yZGluYWw6ZnVuY3Rpb24oc2UsTSl7cmV0dXJuIkQiPT09TT9zZSsiZXIiOnNlfSx3ZWVrOntkb3c6''@;'; put 'put ''MCxkb3k6M30sbWVyaWRpZW1QYXJzZTovcmF0aXxzb2thbGxpbXxkb25wYXJhbXxzYW5qZS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKHNlLE0pe3JldHVybiAxMj09PXNlJiYoc2U9MCksInJhdGkiPT09TT9zZTw0P3NlOnNlKzEyOiJzb2thbGxpbSI9PT1NP3NlOiJkb25wYXJhbSI9PT1NP3Nl''@;'; put 'put ''PjEyP3NlOnNlKzEyOiJzYW5qZSI9PT1NP3NlKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oc2UsTSxPKXtyZXR1cm4gc2U8ND8icmF0aSI6c2U8MTI/InNva2FsbGltIjpzZTwxNj8iZG9ucGFyYW0iOnNlPDIwPyJzYW5qZSI6InJhdGkifX0pfShSKDk3NTg2KSl9LDI2ODI3OmZ1bmN0''@;'; put 'put ''aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTBhZTciLDI6Ilx1MGFlOCIsMzoiXHUwYWU5Iiw0OiJcdTBhZWEiLDU6Ilx1MGFlYiIsNjoiXHUwYWVjIiw3OiJcdTBhZWQiLDg6Ilx1MGFlZSIsOToiXHUwYWVmIiwwOiJcdTBhZTYifSxtPXsiXHUw''@;'; put 'put ''YWU3IjoiMSIsIlx1MGFlOCI6IjIiLCJcdTBhZTkiOiIzIiwiXHUwYWVhIjoiNCIsIlx1MGFlYiI6IjUiLCJcdTBhZWMiOiI2IiwiXHUwYWVkIjoiNyIsIlx1MGFlZSI6IjgiLCJcdTBhZWYiOiI5IiwiXHUwYWU2IjoiMCJ9O29lLmRlZmluZUxvY2FsZSgiZ3UiLHttb250aHM6Ilx1MGE5Y1x1''@;'; put 'put ''MGFiZVx1MGFhOFx1MGFjZFx1MGFhZlx1MGFjMVx1MGE4Nlx1MGFiMFx1MGFjMF9cdTBhYWJcdTBhYzdcdTBhYWNcdTBhY2RcdTBhYjBcdTBhYzFcdTBhODZcdTBhYjBcdTBhYzBfXHUwYWFlXHUwYWJlXHUwYWIwXHUwYWNkXHUwYTlhX1x1MGE4Zlx1MGFhYVx1MGFjZFx1MGFiMFx1MGFiZlx1''@;'; put 'put ''MGFiMl9cdTBhYWVcdTBhYzdfXHUwYTljXHUwYWMyXHUwYWE4X1x1MGE5Y1x1MGFjMVx1MGFiMlx1MGFiZVx1MGE4OF9cdTBhOTFcdTBhOTdcdTBhYjhcdTBhY2RcdTBhOWZfXHUwYWI4XHUwYWFhXHUwYWNkXHUwYTlmXHUwYWM3XHUwYWFlXHUwYWNkXHUwYWFjXHUwYWIwX1x1MGE5MVx1MGE5''@;'; put 'put ''NVx1MGFjZFx1MGE5Zlx1MGFjZFx1MGFhY1x1MGFiMF9cdTBhYThcdTBhYjVcdTBhYzdcdTBhYWVcdTBhY2RcdTBhYWNcdTBhYjBfXHUwYWExXHUwYWJmXHUwYWI4XHUwYWM3XHUwYWFlXHUwYWNkXHUwYWFjXHUwYWIwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBhOWNcdTBhYmVcdTBh''@;'; put 'put ''YThcdTBhY2RcdTBhYWZcdTBhYzEuX1x1MGFhYlx1MGFjN1x1MGFhY1x1MGFjZFx1MGFiMFx1MGFjMS5fXHUwYWFlXHUwYWJlXHUwYWIwXHUwYWNkXHUwYTlhX1x1MGE4Zlx1MGFhYVx1MGFjZFx1MGFiMFx1MGFiZi5fXHUwYWFlXHUwYWM3X1x1MGE5Y1x1MGFjMlx1MGFhOF9cdTBhOWNcdTBh''@;'; put 'put ''YzFcdTBhYjJcdTBhYmUuX1x1MGE5MVx1MGE5Ny5fXHUwYWI4XHUwYWFhXHUwYWNkXHUwYTlmXHUwYWM3Ll9cdTBhOTFcdTBhOTVcdTBhY2RcdTBhOWZcdTBhY2QuX1x1MGFhOFx1MGFiNVx1MGFjNy5fXHUwYWExXHUwYWJmXHUwYWI4XHUwYWM3LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4''@;'; put 'put ''YWN0OiEwLHdlZWtkYXlzOiJcdTBhYjBcdTBhYjVcdTBhYmZcdTBhYjVcdTBhYmVcdTBhYjBfXHUwYWI4XHUwYWNiXHUwYWFlXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFhZVx1MGE4Mlx1MGE5N1x1MGFiM1x1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYWNcdTBhYzFcdTBhYTdcdTBhY2RcdTBhYjVc''@;'; put 'put ''dTBhYmVcdTBhYjBfXHUwYTk3XHUwYWMxXHUwYWIwXHUwYWMxXHUwYWI1XHUwYWJlXHUwYWIwX1x1MGFiNlx1MGFjMVx1MGE5NVx1MGFjZFx1MGFiMFx1MGFiNVx1MGFiZVx1MGFiMF9cdTBhYjZcdTBhYThcdTBhYmZcdTBhYjVcdTBhYmVcdTBhYjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9y''@;'; put 'put ''dDoiXHUwYWIwXHUwYWI1XHUwYWJmX1x1MGFiOFx1MGFjYlx1MGFhZV9cdTBhYWVcdTBhODJcdTBhOTdcdTBhYjNfXHUwYWFjXHUwYWMxXHUwYWE3XHUwYWNkX1x1MGE5N1x1MGFjMVx1MGFiMFx1MGFjMV9cdTBhYjZcdTBhYzFcdTBhOTVcdTBhY2RcdTBhYjBfXHUwYWI2XHUwYWE4XHUwYWJm''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBhYjBfXHUwYWI4XHUwYWNiX1x1MGFhZVx1MGE4Ml9cdTBhYWNcdTBhYzFfXHUwYTk3XHUwYWMxX1x1MGFiNlx1MGFjMV9cdTBhYjYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwYWI1XHUwYWJlXHUwYTk3XHUw''@;'; put 'put ''YWNkXHUwYWFmXHUwYWM3IixMVFM6IkEgaDptbTpzcyBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2RcdTBhYWZcdTBhYzciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGFiNVx1MGFiZVx1MGE5N1x1MGFjZFx1MGFhZlx1MGFjNyIs''@;'; put 'put ''TExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTBhYjVcdTBhYmVcdTBhOTdcdTBhY2RcdTBhYWZcdTBhYzcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGE4Nlx1MGE5Y10gTFQiLG5leHREYXk6IltcdTBhOTVcdTBhYmVcdTBhYjJcdTBhYzddIExUIixuZXh0V2VlazoiZGRkZCwg''@;'; put 'put ''TFQiLGxhc3REYXk6IltcdTBhOTdcdTBhODdcdTBhOTVcdTBhYmVcdTBhYjJcdTBhYzddIExUIixsYXN0V2VlazoiW1x1MGFhYVx1MGFiZVx1MGE5Ylx1MGFiMlx1MGFiZV0gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGFhZVx1MGFiZSIscGFz''@;'; put 'put ''dDoiJXMgXHUwYWFhXHUwYWI5XHUwYWM3XHUwYWIyXHUwYWJlIixzOiJcdTBhODVcdTBhYWVcdTBhYzFcdTBhOTUgXHUwYWFhXHUwYWIzXHUwYWNiIixzczoiJWQgXHUwYWI4XHUwYWM3XHUwYTk1XHUwYTgyXHUwYWExIixtOiJcdTBhOGZcdTBhOTUgXHUwYWFlXHUwYWJmXHUwYWE4XHUwYWJm''@;'; put 'put ''XHUwYTlmIixtbToiJWQgXHUwYWFlXHUwYWJmXHUwYWE4XHUwYWJmXHUwYTlmIixoOiJcdTBhOGZcdTBhOTUgXHUwYTk1XHUwYWIyXHUwYWJlXHUwYTk1IixoaDoiJWQgXHUwYTk1XHUwYWIyXHUwYWJlXHUwYTk1IixkOiJcdTBhOGZcdTBhOTUgXHUwYWE2XHUwYWJmXHUwYWI1XHUwYWI4Iixk''@;'; put 'put ''ZDoiJWQgXHUwYWE2XHUwYWJmXHUwYWI1XHUwYWI4IixNOiJcdTBhOGZcdTBhOTUgXHUwYWFlXHUwYWI5XHUwYWJmXHUwYWE4XHUwYWNiIixNTToiJWQgXHUwYWFlXHUwYWI5XHUwYWJmXHUwYWE4XHUwYWNiIix5OiJcdTBhOGZcdTBhOTUgXHUwYWI1XHUwYWIwXHUwYWNkXHUwYWI3Iix5eToi''@;'; put 'put ''JWQgXHUwYWI1XHUwYWIwXHUwYWNkXHUwYWI3In0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MGFlN1x1MGFlOFx1MGFlOVx1MGFlYVx1MGFlYlx1MGFlY1x1MGFlZFx1MGFlZVx1MGFlZlx1MGFlNl0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pfSxwb3N0''@;'; put 'put ''Zm9ybWF0OmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sbWVyaWRpZW1QYXJzZTovXHUwYWIwXHUwYWJlXHUwYWE0fFx1MGFhY1x1MGFhYVx1MGFjYlx1MGFiMHxcdTBhYjhcdTBhYjVcdTBhYmVcdTBhYjB8XHUwYWI4XHUwYWJl''@;'; put 'put ''XHUwYTgyXHUwYTljLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gMTI9PT1NJiYoTT0wKSwiXHUwYWIwXHUwYWJlXHUwYWE0Ij09PU8/TTw0P006TSsxMjoiXHUwYWI4XHUwYWI1XHUwYWJlXHUwYWIwIj09PU8/TToiXHUwYWFjXHUwYWFhXHUwYWNiXHUwYWIwIj09PU8/TT49''@;'; put 'put ''MTA/TTpNKzEyOiJcdTBhYjhcdTBhYmVcdTBhODJcdTBhOWMiPT09Tz9NKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDQ/Ilx1MGFiMFx1MGFiZVx1MGFhNCI6TTwxMD8iXHUwYWI4XHUwYWI1XHUwYWJlXHUwYWIwIjpNPDE3PyJcdTBhYWNcdTBhYWFcdTBh''@;'; put 'put ''Y2JcdTBhYjAiOk08MjA/Ilx1MGFiOFx1MGFiZVx1MGE4Mlx1MGE5YyI6Ilx1MGFiMFx1MGFiZVx1MGFhNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDIxOTM2OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgi''@;'; put 'put ''aGUiLHttb250aHM6Ilx1MDVkOVx1MDVlMFx1MDVkNVx1MDVkMFx1MDVlOF9cdTA1ZTRcdTA1ZDFcdTA1ZThcdTA1ZDVcdTA1ZDBcdTA1ZThfXHUwNWRlXHUwNWU4XHUwNWU1X1x1MDVkMFx1MDVlNFx1MDVlOFx1MDVkOVx1MDVkY19cdTA1ZGVcdTA1ZDBcdTA1ZDlfXHUwNWQ5XHUwNWQ1XHUw''@;'; put 'put ''NWUwXHUwNWQ5X1x1MDVkOVx1MDVkNVx1MDVkY1x1MDVkOV9cdTA1ZDBcdTA1ZDVcdTA1ZDJcdTA1ZDVcdTA1ZTFcdTA1ZDhfXHUwNWUxXHUwNWU0XHUwNWQ4XHUwNWRlXHUwNWQxXHUwNWU4X1x1MDVkMFx1MDVkNVx1MDVlN1x1MDVkOFx1MDVkNVx1MDVkMVx1MDVlOF9cdTA1ZTBcdTA1ZDVc''@;'; put 'put ''dTA1ZDFcdTA1ZGVcdTA1ZDFcdTA1ZThfXHUwNWQzXHUwNWU2XHUwNWRlXHUwNWQxXHUwNWU4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA1ZDlcdTA1ZTBcdTA1ZDVcdTA1ZjNfXHUwNWU0XHUwNWQxXHUwNWU4XHUwNWYzX1x1MDVkZVx1MDVlOFx1MDVlNV9cdTA1ZDBcdTA1ZTRcdTA1''@;'; put 'put ''ZThcdTA1ZjNfXHUwNWRlXHUwNWQwXHUwNWQ5X1x1MDVkOVx1MDVkNVx1MDVlMFx1MDVkOV9cdTA1ZDlcdTA1ZDVcdTA1ZGNcdTA1ZDlfXHUwNWQwXHUwNWQ1XHUwNWQyXHUwNWYzX1x1MDVlMVx1MDVlNFx1MDVkOFx1MDVmM19cdTA1ZDBcdTA1ZDVcdTA1ZTdcdTA1ZjNfXHUwNWUwXHUwNWQ1''@;'; put 'put ''XHUwNWQxXHUwNWYzX1x1MDVkM1x1MDVlNlx1MDVkZVx1MDVmMyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNWU4XHUwNWQwXHUwNWU5XHUwNWQ1XHUwNWRmX1x1MDVlOVx1MDVlMFx1MDVkOV9cdTA1ZTlcdTA1ZGNcdTA1ZDlcdTA1ZTlcdTA1ZDlfXHUwNWU4XHUwNWQxXHUwNWQ5XHUwNWUy''@;'; put 'put ''XHUwNWQ5X1x1MDVkN1x1MDVkZVx1MDVkOVx1MDVlOVx1MDVkOV9cdTA1ZTlcdTA1ZDlcdTA1ZTlcdTA1ZDlfXHUwNWU5XHUwNWQxXHUwNWVhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDVkMFx1MDVmM19cdTA1ZDFcdTA1ZjNfXHUwNWQyXHUwNWYzX1x1MDVkM1x1MDVmM19cdTA1''@;'; put 'put ''ZDRcdTA1ZjNfXHUwNWQ1XHUwNWYzX1x1MDVlOVx1MDVmMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNWQwX1x1MDVkMV9cdTA1ZDJfXHUwNWQzX1x1MDVkNF9cdTA1ZDVfXHUwNWU5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6''@;'; put 'put ''IkREL01NL1lZWVkiLExMOiJEIFtcdTA1ZDFdTU1NTSBZWVlZIixMTEw6IkQgW1x1MDVkMV1NTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgW1x1MDVkMV1NTU1NIFlZWVkgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxs''@;'; put 'put ''OiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDVkNFx1MDVkOVx1MDVkNVx1MDVkZCBcdTA1ZDFcdTA1YmVdTFQiLG5leHREYXk6IltcdTA1ZGVcdTA1ZDdcdTA1ZTggXHUwNWQxXHUwNWJlXUxUIixuZXh0V2VlazoiZGRkZCBbXHUwNWQxXHUwNWU5XHUw''@;'; put 'put ''NWUyXHUwNWQ0XSBMVCIsbGFzdERheToiW1x1MDVkMFx1MDVlYVx1MDVkZVx1MDVkNVx1MDVkYyBcdTA1ZDFcdTA1YmVdTFQiLGxhc3RXZWVrOiJbXHUwNWQxXHUwNWQ5XHUwNWQ1XHUwNWRkXSBkZGRkIFtcdTA1ZDRcdTA1ZDBcdTA1ZDdcdTA1ZThcdTA1ZDVcdTA1ZGYgXHUwNWQxXHUwNWU5''@;'; put 'put ''XHUwNWUyXHUwNWQ0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNWQxXHUwNWUyXHUwNWQ1XHUwNWQzICVzIixwYXN0OiJcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDkgJXMiLHM6Ilx1MDVkZVx1MDVlMVx1MDVlNFx1MDVlOCBcdTA1ZTlcdTA1ZTBcdTA1ZDlc''@;'; put 'put ''dTA1ZDVcdTA1ZWEiLHNzOiIlZCBcdTA1ZTlcdTA1ZTBcdTA1ZDlcdTA1ZDVcdTA1ZWEiLG06Ilx1MDVkM1x1MDVlN1x1MDVkNCIsbW06IiVkIFx1MDVkM1x1MDVlN1x1MDVkNVx1MDVlYSIsaDoiXHUwNWU5XHUwNWUyXHUwNWQ0IixoaDpmdW5jdGlvbihtKXtyZXR1cm4gMj09PW0/Ilx1MDVl''@;'; put 'put ''OVx1MDVlMlx1MDVlYVx1MDVkOVx1MDVkOVx1MDVkZCI6bSsiIFx1MDVlOVx1MDVlMlx1MDVkNVx1MDVlYSJ9LGQ6Ilx1MDVkOVx1MDVkNVx1MDVkZCIsZGQ6ZnVuY3Rpb24obSl7cmV0dXJuIDI9PT1tPyJcdTA1ZDlcdTA1ZDVcdTA1ZGVcdTA1ZDlcdTA1ZDlcdTA1ZGQiOm0rIiBcdTA1ZDlc''@;'; put 'put ''dTA1ZGVcdTA1ZDlcdTA1ZGQifSxNOiJcdTA1ZDdcdTA1ZDVcdTA1ZDNcdTA1ZTkiLE1NOmZ1bmN0aW9uKG0pe3JldHVybiAyPT09bT8iXHUwNWQ3XHUwNWQ1XHUwNWQzXHUwNWU5XHUwNWQ5XHUwNWQ5XHUwNWRkIjptKyIgXHUwNWQ3XHUwNWQ1XHUwNWQzXHUwNWU5XHUwNWQ5XHUwNWRkIn0s''@;'; put 'put ''eToiXHUwNWU5XHUwNWUwXHUwNWQ0Iix5eTpmdW5jdGlvbihtKXtyZXR1cm4gMj09PW0/Ilx1MDVlOVx1MDVlMFx1MDVlYVx1MDVkOVx1MDVkOVx1MDVkZCI6bSUxMD09MCYmMTAhPT1tP20rIiBcdTA1ZTlcdTA1ZTBcdTA1ZDQiOm0rIiBcdTA1ZTlcdTA1ZTBcdTA1ZDlcdTA1ZGQifX0sbWVy''@;'; put 'put ''aWRpZW1QYXJzZTovXHUwNWQwXHUwNWQ3XHUwNWQ0Ilx1MDVlNnxcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDQiXHUwNWU2fFx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGR8XHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ5IFx1''@;'; put 'put ''MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZHxcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDVcdTA1ZWEgXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4fFx1MDVkMVx1MDVkMVx1MDVkNVx1MDVlN1x1MDVlOHxcdTA1ZDFcdTA1ZTJcdTA1ZThcdTA1ZDEvaSxpc1BNOmZ1bmN0''@;'; put 'put ''aW9uKG0pe3JldHVybi9eKFx1MDVkMFx1MDVkN1x1MDVkNCJcdTA1ZTZ8XHUwNWQwXHUwNWQ3XHUwNWU4XHUwNWQ5IFx1MDVkNFx1MDVlNlx1MDVkNFx1MDVlOFx1MDVkOVx1MDVkOVx1MDVkZHxcdTA1ZDFcdTA1ZTJcdTA1ZThcdTA1ZDEpJC8udGVzdChtKX0sbWVyaWRpZW06ZnVuY3Rpb24o''@;'; put 'put ''bSxzZSxNKXtyZXR1cm4gbTw1PyJcdTA1ZGNcdTA1ZTRcdTA1ZTBcdTA1ZDVcdTA1ZWEgXHUwNWQxXHUwNWQ1XHUwNWU3XHUwNWU4IjptPDEwPyJcdTA1ZDFcdTA1ZDFcdTA1ZDVcdTA1ZTdcdTA1ZTgiOm08MTI/TT8nXHUwNWRjXHUwNWU0XHUwNWUwXHUwNWQ0Ilx1MDVlNic6Ilx1MDVkY1x1''@;'; put 'put ''MDVlNFx1MDVlMFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGQiOm08MTg/TT8nXHUwNWQwXHUwNWQ3XHUwNWQ0Ilx1MDVlNic6Ilx1MDVkMFx1MDVkN1x1MDVlOFx1MDVkOSBcdTA1ZDRcdTA1ZTZcdTA1ZDRcdTA1ZThcdTA1ZDlcdTA1ZDlcdTA1ZGQi''@;'; put 'put ''OiJcdTA1ZDFcdTA1ZTJcdTA1ZThcdTA1ZDEifX0pfShSKDk3NTg2KSl9LDMxMzMyOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1MDk2YiIsNjoiXHUwOTZj''@;'; put 'put ''Iiw3OiJcdTA5NmQiLDg6Ilx1MDk2ZSIsOToiXHUwOTZmIiwwOiJcdTA5NjYifSxtPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6IjgiLCJcdTA5NmYiOiI5''@;'; put 'put ''IiwiXHUwOTY2IjoiMCJ9LHNlPVsvXlx1MDkxY1x1MDkyOC9pLC9eXHUwOTJiXHUwOTNjXHUwOTMwfFx1MDkyYlx1MDkzMC9pLC9eXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhL2ksL15cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDgvaSwvXlx1MDkyZVx1MDkwOC9pLC9eXHUw''@;'; put 'put ''OTFjXHUwOTQyXHUwOTI4L2ksL15cdTA5MWNcdTA5NDFcdTA5MzIvaSwvXlx1MDkwNVx1MDkxNy9pLC9eXHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyfFx1MDkzOFx1MDkzZlx1MDkyNC9pLC9eXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyL2ksL15cdTA5MjhcdTA5MzV8XHUwOTI4XHUw''@;'; put 'put ''OTM1XHUwOTAyL2ksL15cdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJ8XHUwOTI2XHUwOTNmXHUwOTM4L2ldO29lLmRlZmluZUxvY2FsZSgiaGkiLHttb250aHM6e2Zvcm1hdDoiXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0''@;'; put 'put ''MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XHUwOTMyX1x1MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4X1x1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNF9c''@;'; put 'put ''dTA5MzhcdTA5M2ZcdTA5MjRcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzBfXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDkzNVx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzAi''@;'; put 'put ''LnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyYlx1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XHUwOTMyX1x1MDkyZVx1MDkw''@;'; put 'put ''OF9cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4X1x1MDkwNVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkyNF9cdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwX1x1''@;'; put 'put ''MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MDJcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA5MWNcdTA5MjguX1x1MDkyYlx1MDkzY1x1MDkzMC5fXHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhX1x1MDkwNVx1''@;'; put 'put ''MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OC5fXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0Mlx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzIuX1x1MDkwNVx1MDkxNy5fXHUwOTM4XHUwOTNmXHUwOTI0Ll9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDIuX1x1MDkyOFx1MDkzNS5fXHUwOTI2XHUw''@;'; put 'put ''OTNmXHUwOTM4LiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwOTMwXHUwOTM1XHUwOTNmXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzOFx1MDk0Ylx1MDkyZVx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MmVcdTA5MDJcdTA5MTdcdTA5MzJcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTJjXHUwOTQxXHUw''@;'; put 'put ''OTI3XHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkxN1x1MDk0MVx1MDkzMFx1MDk0Mlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzBcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmXHUwOTM1XHUwOTNlXHUwOTMwIi5zcGxpdCgiXyIpLHdl''@;'; put 'put ''ZWtkYXlzU2hvcnQ6Ilx1MDkzMFx1MDkzNVx1MDkzZl9cdTA5MzhcdTA5NGJcdTA5MmVfXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMyX1x1MDkyY1x1MDk0MVx1MDkyN19cdTA5MTdcdTA5NDFcdTA5MzBcdTA5NDJfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwX1x1MDkzNlx1MDkyOFx1''@;'; put 'put ''MDkzZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwOTMwX1x1MDkzOFx1MDk0Yl9cdTA5MmVcdTA5MDJfXHUwOTJjXHUwOTQxX1x1MDkxN1x1MDk0MV9cdTA5MzZcdTA5NDFfXHUwOTM2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQSBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0''@;'; put 'put ''NyIsTFRTOiJBIGg6bW06c3MgXHUwOTJjXHUwOTFjXHUwOTQ3IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOTJjXHUwOTFjXHUwOTQ3''@;'; put 'put ''In0sbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6Wy9eXHUwOTFjXHUwOTI4L2ksL15cdTA5MmJcdTA5M2NcdTA5MzAvaSwvXlx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYS9pLC9eXHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4L2ks''@;'; put 'put ''L15cdTA5MmVcdTA5MDgvaSwvXlx1MDkxY1x1MDk0Mlx1MDkyOC9pLC9eXHUwOTFjXHUwOTQxXHUwOTMyL2ksL15cdTA5MDVcdTA5MTcvaSwvXlx1MDkzOFx1MDkzZlx1MDkyNC9pLC9eXHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyL2ksL15cdTA5MjhcdTA5MzUvaSwvXlx1MDkyNlx1''@;'; put 'put ''MDkzZlx1MDkzOC9pXSxtb250aHNSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTFjXHUwOTI4XC4/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTNjXHUwOTMwXC4/''@;'; put 'put ''fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4XHUwOTMyfFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUw''@;'; put 'put ''OTA4fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjR8XHUwOTA1XHUwOTE3XC4/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNm''@;'; put 'put ''XHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMHxcdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NDJcLj98XHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5''@;'; put 'put ''MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1MDkzOFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksbW9udGhzU2hvcnRSZWdleDovXihcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDB8XHUw''@;'; put 'put ''OTFjXHUwOTI4XC4/fFx1MDkyYlx1MDkzY1x1MDkzMFx1MDkzNVx1MDkzMFx1MDk0MHxcdTA5MmJcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTNjXHUwOTMwXC4/fFx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYT98XHUwOTA1XHUwOTJhXHUwOTRkXHUwOTMwXHUwOTQ4''@;'; put 'put ''XHUwOTMyfFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFwuP3xcdTA5MmVcdTA5MDg/fFx1MDkxY1x1MDk0Mlx1MDkyOD98XHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcdTA5MzhcdTA5NGRcdTA5MjR8XHUwOTA1''@;'; put 'put ''XHUwOTE3XC4/fFx1MDkzOFx1MDkzZlx1MDkyNFx1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMHxcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MDJcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Mlx1MDkyY1x1MDkzMHxcdTA5MDVcdTA5''@;'; put 'put ''MTVcdTA5NGRcdTA5MWZcdTA5NDJcLj98XHUwOTI4XHUwOTM1XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyOFx1MDkzNVx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjhcdTA5MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTJlXHUwOTRkXHUwOTJjXHUwOTMwfFx1MDkyNlx1MDkzZlx1''@;'; put 'put ''MDkzOFx1MDkwMlx1MDkyY1x1MDkzMHxcdTA5MjZcdTA5M2ZcdTA5MzhcLj8pL2ksbW9udGhzU3RyaWN0UmVnZXg6L14oXHUwOTFjXHUwOTI4XHUwOTM1XHUwOTMwXHUwOTQwP3xcdTA5MmJcdTA5M2NcdTA5MzBcdTA5MzVcdTA5MzBcdTA5NDB8XHUwOTJiXHUwOTMwXHUwOTM1XHUwOTMwXHUw''@;'; put 'put ''OTQwP3xcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWE/fFx1MDkwNVx1MDkyYVx1MDk0ZFx1MDkzMFx1MDk0OFx1MDkzMj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlx1MDkzZVx1MDkwOD98XHUwOTA1XHUwOTE3XHUwOTM4XHUwOTRk''@;'; put 'put ''XHUwOTI0P3xcdTA5MzhcdTA5M2ZcdTA5MjRcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTM4XHUwOTNmXHUwOTI0XHUwOTAyXHUwOTJjXHUwOTMwfFx1MDkzOFx1MDkzZlx1MDkyND9cLj98XHUwOTA1XHUwOTE1XHUwOTRkXHUwOTFmXHUwOTQyXHUwOTJjXHUwOTMwfFx1MDkwNVx1MDkx''@;'; put 'put ''NVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI4XHUwOTM1XHUwOTAyXHUwOTJjXHUwOTMwP3xcdTA5MjZcdTA5M2ZcdTA5MzhcdTA5MmVcdTA5NGRcdTA5MmNcdTA5MzB8XHUwOTI2XHUwOTNmXHUwOTM4XHUwOTAyXHUwOTJj''@;'; put 'put ''XHUwOTMwPykvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKFx1MDkxY1x1MDkyOFwuP3xcdTA5MmJcdTA5M2NcdTA5MzBcLj98XHUwOTJlXHUwOTNlXHUwOTMwXHUwOTRkXHUwOTFhP3xcdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5NDhcLj98XHUwOTJlXHUwOTA4P3xcdTA5MWNcdTA5''@;'; put 'put ''NDJcdTA5Mjg/fFx1MDkxY1x1MDk0MVx1MDkzMlwuP3xcdTA5MDVcdTA5MTdcLj98XHUwOTM4XHUwOTNmXHUwOTI0XC4/fFx1MDkwNVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0MlwuP3xcdTA5MjhcdTA5MzVcLj98XHUwOTI2XHUwOTNmXHUwOTM4XC4/KS9pLGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''XHUwOTA2XHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkxNVx1MDkzMl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MDkxNVx1MDkzMl0gTFQiLGxhc3RXZWVrOiJbXHUwOTJhXHUwOTNmXHUwOTFiXHUwOTMyXHUwOTQ3XSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxh''@;'; put 'put ''dGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwOTJlXHUwOTQ3XHUwOTAyIixwYXN0OiIlcyBcdTA5MmFcdTA5MzlcdTA5MzJcdTA5NDciLHM6Ilx1MDkxNVx1MDk0MVx1MDkxYiBcdTA5MzlcdTA5NDAgXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTIzIixzczoiJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUw''@;'; put 'put ''OTAyXHUwOTIxIixtOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTFmIixtbToiJWQgXHUwOTJlXHUwOTNmXHUwOTI4XHUwOTFmIixoOiJcdTA5MGZcdTA5MTUgXHUwOTE4XHUwOTAyXHUwOTFmXHUwOTNlIixoaDoiJWQgXHUwOTE4XHUwOTAyXHUwOTFmXHUwOTQ3IixkOiJc''@;'; put 'put ''dTA5MGZcdTA5MTUgXHUwOTI2XHUwOTNmXHUwOTI4IixkZDoiJWQgXHUwOTI2XHUwOTNmXHUwOTI4IixNOiJcdTA5MGZcdTA5MTUgXHUwOTJlXHUwOTM5XHUwOTQwXHUwOTI4XHUwOTQ3IixNTToiJWQgXHUwOTJlXHUwOTM5XHUwOTQwXHUwOTI4XHUwOTQ3Iix5OiJcdTA5MGZcdTA5MTUgXHUw''@;'; put 'put ''OTM1XHUwOTMwXHUwOTRkXHUwOTM3Iix5eToiJWQgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3In0scHJlcGFyc2U6ZnVuY3Rpb24oSSl7cmV0dXJuIEkucmVwbGFjZSgvW1x1MDk2N1x1MDk2OFx1MDk2OVx1MDk2YVx1MDk2Ylx1MDk2Y1x1MDk2ZFx1MDk2ZVx1MDk2Zlx1MDk2Nl0vZyxmdW5j''@;'; put 'put ''dGlvbihqKXtyZXR1cm4gbVtqXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKEkpe3JldHVybiBJLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oail7cmV0dXJuIHhbal19KX0sbWVyaWRpZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0fFx1MDkzOFx1MDk0MVx1MDkyY1x1MDkzOXxcdTA5MjZcdTA5''@;'; put 'put ''NGJcdTA5MmFcdTA5MzlcdTA5MzB8XHUwOTM2XHUwOTNlXHUwOTJlLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oSSxqKXtyZXR1cm4gMTI9PT1JJiYoST0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0Ij09PWo/STw0P0k6SSsxMjoiXHUwOTM4XHUwOTQxXHUwOTJjXHUwOTM5Ij09PWo/SToiXHUwOTI2''@;'; put 'put ''XHUwOTRiXHUwOTJhXHUwOTM5XHUwOTMwIj09PWo/ST49MTA/STpJKzEyOiJcdTA5MzZcdTA5M2VcdTA5MmUiPT09aj9JKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oSSxqLEcpe3JldHVybiBJPDQ/Ilx1MDkzMFx1MDkzZVx1MDkyNCI6STwxMD8iXHUwOTM4XHUwOTQxXHUwOTJjXHUw''@;'; put 'put ''OTM5IjpJPDE3PyJcdTA5MjZcdTA5NGJcdTA5MmFcdTA5MzlcdTA5MzAiOkk8MjA/Ilx1MDkzNlx1MDkzZVx1MDkyZSI6Ilx1MDkzMFx1MDkzZVx1MDkyNCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDkxOTU3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVz''@;'; put 'put ''ZSBzdHJpY3QiO2Z1bmN0aW9uIHgoc2UsTSxPKXt2YXIgST1zZSsiICI7c3dpdGNoKE8pe2Nhc2Uic3MiOnJldHVybiBJKygxPT09c2U/InNla3VuZGEiOjI9PT1zZXx8Mz09PXNlfHw0PT09c2U/InNla3VuZGUiOiJzZWt1bmRpIik7Y2FzZSJtIjpyZXR1cm4gTT8iamVkbmEgbWludXRhIjoi''@;'; put 'put ''amVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gSSsoMT09PXNlPyJtaW51dGEiOjI9PT1zZXx8Mz09PXNlfHw0PT09c2U/Im1pbnV0ZSI6Im1pbnV0YSIpO2Nhc2UiaCI6cmV0dXJuIE0/ImplZGFuIHNhdCI6ImplZG5vZyBzYXRhIjtjYXNlImhoIjpyZXR1cm4gSSsoMT09PXNlPyJzYXQi''@;'; put 'put ''OjI9PT1zZXx8Mz09PXNlfHw0PT09c2U/InNhdGEiOiJzYXRpIik7Y2FzZSJkZCI6cmV0dXJuIEkrKDE9PT1zZT8iZGFuIjoiZGFuYSIpO2Nhc2UiTU0iOnJldHVybiBJKygxPT09c2U/Im1qZXNlYyI6Mj09PXNlfHwzPT09c2V8fDQ9PT1zZT8ibWplc2VjYSI6Im1qZXNlY2kiKTtjYXNlInl5''@;'; put 'put ''IjpyZXR1cm4gSSsoMT09PXNlPyJnb2RpbmEiOjI9PT1zZXx8Mz09PXNlfHw0PT09c2U/ImdvZGluZSI6ImdvZGluYSIpfX1vZS5kZWZpbmVMb2NhbGUoImhyIix7bW9udGhzOntmb3JtYXQ6InNpamVcdTAxMGRuamFfdmVsamFcdTAxMGRlX29cdTAxN2V1amthX3RyYXZuamFfc3ZpYm5qYV9s''@;'; put 'put ''aXBuamFfc3JwbmphX2tvbG92b3phX3J1am5hX2xpc3RvcGFkYV9zdHVkZW5vZ2FfcHJvc2luY2EiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2lqZVx1MDEwZGFual92ZWxqYVx1MDEwZGFfb1x1MDE3ZXVqYWtfdHJhdmFual9zdmliYW5qX2xpcGFual9zcnBhbmpfa29sb3Zvel9ydWphbl9s''@;'; put 'put ''aXN0b3BhZF9zdHVkZW5pX3Byb3NpbmFjIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoic2lqLl92ZWxqLl9vXHUwMTdldS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVs''@;'; put 'put ''amFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAx''@;'; put 'put ''MGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU0gWVlZWSIsTExMOiJEbyBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRG8gTU1NTSBZWVlZ''@;'; put 'put ''IEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVk''@;'; put 'put ''dV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdVx1MDEwZGVyIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgp''@;'; put 'put ''KXtjYXNlIDA6cmV0dXJuIltwcm9cdTAxNjFsdV0gW25lZGplbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3Byb1x1MDE2MWx1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIltwcm9cdTAxNjFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNl''@;'; put 'put ''IDU6cmV0dXJuIltwcm9cdTAxNjFsaV0gZGRkZCBbdV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJwYXIgc2VrdW5kaSIsc3M6eCxtOngsbW06eCxoOngsaGg6eCxkOiJkYW4iLGRkOngsTToibWplc2VjIixNTTp4''@;'; put 'put ''LHk6ImdvZGludSIseXk6eH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDQ4OTI4OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PSJ2YXNceGUx''@;'; put 'put ''cm5hcCBoXHhlOXRmXHUwMTUxbiBrZWRkZW4gc3plcmRceGUxbiBjc1x4ZmN0XHhmNnJ0XHhmNmtceGY2biBwXHhlOW50ZWtlbiBzem9tYmF0b24iLnNwbGl0KCIgIik7ZnVuY3Rpb24gbShPLEksaixHKXt2YXIgRD1PO3N3aXRjaChqKXtjYXNlInMiOnJldHVybiBHfHxJPyJuXHhlOWhceGUx''@;'; put 'put ''bnkgbVx4ZTFzb2RwZXJjIjoiblx4ZTloXHhlMW55IG1ceGUxc29kcGVyY2UiO2Nhc2Uic3MiOnJldHVybiBEKyhHfHxJKT8iIG1ceGUxc29kcGVyYyI6IiBtXHhlMXNvZHBlcmNlIjtjYXNlIm0iOnJldHVybiJlZ3kiKyhHfHxJPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UibW0iOnJldHVybiBE''@;'; put 'put ''KyhHfHxJPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UiaCI6cmV0dXJuImVneSIrKEd8fEk/IiBceGYzcmEiOiIgXHhmM3JceGUxamEiKTtjYXNlImhoIjpyZXR1cm4gRCsoR3x8ST8iIFx4ZjNyYSI6IiBceGYzclx4ZTFqYSIpO2Nhc2UiZCI6cmV0dXJuImVneSIrKEd8fEk/IiBuYXAiOiIgbmFw''@;'; put 'put ''amEiKTtjYXNlImRkIjpyZXR1cm4gRCsoR3x8ST8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiTSI6cmV0dXJuImVneSIrKEd8fEk/IiBoXHhmM25hcCI6IiBoXHhmM25hcGphIik7Y2FzZSJNTSI6cmV0dXJuIEQrKEd8fEk/IiBoXHhmM25hcCI6IiBoXHhmM25hcGphIik7Y2FzZSJ5IjpyZXR1cm4i''@;'; put 'put ''ZWd5IisoR3x8ST8iIFx4ZTl2IjoiIFx4ZTl2ZSIpO2Nhc2UieXkiOnJldHVybiBEKyhHfHxJPyIgXHhlOXYiOiIgXHhlOXZlIil9cmV0dXJuIiJ9ZnVuY3Rpb24gc2UoTyl7cmV0dXJuKE8/IiI6IlttXHhmYWx0XSAiKSsiWyIreFt0aGlzLmRheSgpXSsiXSBMVFsta29yXSJ9b2UuZGVmaW5l''@;'; put 'put ''TG9jYWxlKCJodSIse21vbnRoczoiamFudVx4ZTFyX2ZlYnJ1XHhlMXJfbVx4ZTFyY2l1c19ceGUxcHJpbGlzX21ceGUxanVzX2pceGZhbml1c19qXHhmYWxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0XHhmM2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9y''@;'; put 'put ''dDoiamFuLl9mZWIuX21ceGUxcmMuX1x4ZTFwci5fbVx4ZTFqLl9qXHhmYW4uX2pceGZhbC5fYXVnLl9zemVwdC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoidmFzXHhlMXJuYXBfaFx4ZTl0Zlx1MDE1MV9rZWRkX3N6ZXJkYV9jc1x4''@;'; put 'put ''ZmN0XHhmNnJ0XHhmNmtfcFx4ZTludGVrX3N6b21iYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2hceGU5dF9rZWRkX3N6ZV9jc1x4ZmN0X3BceGU5bl9zem8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InZfaF9rX3N6ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZv''@;'; put 'put ''cm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiJ1Ij09PU8uY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKE8sSSxqKXtyZXR1cm4gTzwxMj8hMD09PWo/ImRlIjoiREUiOiEwPT09aj8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFst''@;'; put 'put ''a29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gc2UuY2FsbCh0aGlzLCEwKX0sbGFzdERheToiW3RlZ25hcF0gTFRbLWtvcl0iLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIHNlLmNhbGwodGhpcywhMSl9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIG1c''@;'; put 'put ''eGZhbHZhIixwYXN0OiIlcyIsczptLHNzOm0sbSxtbTptLGg6bSxoaDptLGQ6bSxkZDptLE06bSxNTTptLHk6bSx5eTptfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNTYyMTU6ZnVuY3Rp''@;'; put 'put ''b24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJoeS1hbSIse21vbnRoczp7Zm9ybWF0OiJcdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1N2VcdTA1NjFcdTA1ODBcdTA1NmJfXHUwNTgzXHUwNTY1XHUwNTdmXHUwNTgwXHUwNTdlXHUwNTYx''@;'; put 'put ''XHUwNTgwXHUwNTZiX1x1MDU3NFx1MDU2MVx1MDU4MFx1MDU3Zlx1MDU2Yl9cdTA1NjFcdTA1N2FcdTA1ODBcdTA1NmJcdTA1NmNcdTA1NmJfXHUwNTc0XHUwNTYxXHUwNTc1XHUwNTZiXHUwNTdkXHUwNTZiX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU3Nlx1MDU2Ylx1MDU3ZFx1MDU2Yl9cdTA1''@;'; put 'put ''NzBcdTA1NzhcdTA1ODJcdTA1NmNcdTA1NmJcdTA1N2RcdTA1NmJfXHUwNTg1XHUwNTYzXHUwNTc4XHUwNTdkXHUwNTdmXHUwNTc4XHUwNTdkXHUwNTZiX1x1MDU3ZFx1MDU2NVx1MDU3YVx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2Yl9cdTA1NzBcdTA1NzhcdTA1''@;'; put 'put ''NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBcdTA1NmJfXHUwNTc2XHUwNTc4XHUwNTc1XHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwXHUwNTZiX1x1MDU2NFx1MDU2NVx1MDU2Zlx1MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MFx1MDU2YiIuc3Bs''@;'; put 'put ''aXQoIl8iKSxzdGFuZGFsb25lOiJcdTA1NzBcdTA1NzhcdTA1ODJcdTA1NzZcdTA1N2VcdTA1NjFcdTA1ODBfXHUwNTgzXHUwNTY1XHUwNTdmXHUwNTgwXHUwNTdlXHUwNTYxXHUwNTgwX1x1MDU3NFx1MDU2MVx1MDU4MFx1MDU3Zl9cdTA1NjFcdTA1N2FcdTA1ODBcdTA1NmJcdTA1NmNfXHUw''@;'; put 'put ''NTc0XHUwNTYxXHUwNTc1XHUwNTZiXHUwNTdkX1x1MDU3MFx1MDU3OFx1MDU4Mlx1MDU3Nlx1MDU2Ylx1MDU3ZF9cdTA1NzBcdTA1NzhcdTA1ODJcdTA1NmNcdTA1NmJcdTA1N2RfXHUwNTg1XHUwNTYzXHUwNTc4XHUwNTdkXHUwNTdmXHUwNTc4XHUwNTdkX1x1MDU3ZFx1MDU2NVx1MDU3YVx1''@;'; put 'put ''MDU3Zlx1MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MF9cdTA1NzBcdTA1NzhcdTA1NmZcdTA1N2ZcdTA1NjVcdTA1NzRcdTA1NjJcdTA1NjVcdTA1ODBfXHUwNTc2XHUwNTc4XHUwNTc1XHUwNTY1XHUwNTc0XHUwNTYyXHUwNTY1XHUwNTgwX1x1MDU2NFx1MDU2NVx1MDU2Zlx1MDU3Zlx1''@;'; put 'put ''MDU2NVx1MDU3NFx1MDU2Mlx1MDU2NVx1MDU4MCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDU3MFx1MDU3Nlx1MDU3ZV9cdTA1ODNcdTA1N2ZcdTA1ODBfXHUwNTc0XHUwNTgwXHUwNTdmX1x1MDU2MVx1MDU3YVx1MDU4MF9cdTA1NzRcdTA1NzVcdTA1N2RfXHUwNTcwXHUwNTc2XHUw''@;'; put 'put ''NTdkX1x1MDU3MFx1MDU2Y1x1MDU3ZF9cdTA1ODVcdTA1NjNcdTA1N2RfXHUwNTdkXHUwNTdhXHUwNTdmX1x1MDU3MFx1MDU2Zlx1MDU3Zl9cdTA1NzZcdTA1NzRcdTA1NjJfXHUwNTY0XHUwNTZmXHUwNTdmIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA1NmZcdTA1NmJcdTA1ODBcdTA1NjFc''@;'; put 'put ''dTA1NmZcdTA1NmJfXHUwNTY1XHUwNTgwXHUwNTZmXHUwNTc4XHUwNTgyXHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU2NVx1MDU4MFx1MDU2NVx1MDU4NFx1MDU3N1x1MDU2MVx1MDU2Mlx1MDU2OVx1MDU2Yl9cdTA1NzlcdTA1NzhcdTA1ODBcdTA1NjVcdTA1ODRcdTA1Nzdc''@;'; put 'put ''dTA1NjFcdTA1NjJcdTA1NjlcdTA1NmJfXHUwNTcwXHUwNTZiXHUwNTc2XHUwNTYzXHUwNTc3XHUwNTYxXHUwNTYyXHUwNTY5XHUwNTZiX1x1MDU3OFx1MDU4Mlx1MDU4MFx1MDU2Mlx1MDU2MVx1MDU2OV9cdTA1NzdcdTA1NjFcdTA1NjJcdTA1NjFcdTA1NjkiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNTaG9ydDoiXHUwNTZmXHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU2Zl9cdTA1NjVcdTA1ODBcdTA1ODRfXHUwNTc5XHUwNTgwXHUwNTg0X1x1MDU3MFx1MDU3Nlx1MDU2M19cdTA1NzhcdTA1ODJcdTA1ODBcdTA1NjJfXHUwNTc3XHUwNTYyXHUwNTY5Ii5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzTWluOiJcdTA1NmZcdTA1ODBcdTA1NmZfXHUwNTY1XHUwNTgwXHUwNTZmX1x1MDU2NVx1MDU4MFx1MDU4NF9cdTA1NzlcdTA1ODBcdTA1ODRfXHUwNTcwXHUwNTc2XHUwNTYzX1x1MDU3OFx1MDU4Mlx1MDU4MFx1MDU2Ml9cdTA1NzdcdTA1NjJcdTA1NjkiLnNwbGl0KCJfIiksbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIFx1MDU2OS4iLExMTDoiRCBNTU1NIFlZWVkgXHUwNTY5LiwgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFx1MDU2OS4sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVE''@;'; put 'put ''YXk6IltcdTA1NjFcdTA1NzVcdTA1N2RcdTA1ODVcdTA1ODBdIExUIixuZXh0RGF5OiJbXHUwNTdlXHUwNTYxXHUwNTcyXHUwNTY4XSBMVCIsbGFzdERheToiW1x1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW1x1MDU4NVx1MDU4''@;'; put 'put ''MFx1MDU2OCBcdTA1NmFcdTA1NjFcdTA1NzRcdTA1NjhdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW1x1MDU2MVx1MDU3Nlx1MDU4MVx1MDU2MVx1MDU2ZV0gZGRkZCBbXHUwNTg1XHUwNTgwXHUwNTY4IFx1MDU2YVx1MDU2MVx1MDU3NFx1MDU2OF0gTFQifSxzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA1NzBcdTA1NjVcdTA1N2ZcdTA1NzgiLHBhc3Q6IiVzIFx1MDU2MVx1MDU3Y1x1MDU2MVx1MDU3YiIsczoiXHUwNTc0XHUwNTZiIFx1MDU4NFx1MDU2MVx1MDU3Nlx1MDU2YiBcdTA1N2VcdTA1NjFcdTA1NzVcdTA1ODBcdTA1NmZcdTA1''@;'; put 'put ''NzVcdTA1NjFcdTA1NzYiLHNzOiIlZCBcdTA1N2VcdTA1NjFcdTA1NzVcdTA1ODBcdTA1NmZcdTA1NzVcdTA1NjFcdTA1NzYiLG06Ilx1MDU4MFx1MDU3OFx1MDU3YVx1MDU2NSIsbW06IiVkIFx1MDU4MFx1MDU3OFx1MDU3YVx1MDU2NSIsaDoiXHUwNTZhXHUwNTYxXHUwNTc0IixoaDoiJWQg''@;'; put 'put ''XHUwNTZhXHUwNTYxXHUwNTc0IixkOiJcdTA1ODVcdTA1ODAiLGRkOiIlZCBcdTA1ODVcdTA1ODAiLE06Ilx1MDU2MVx1MDU3NFx1MDU2Ylx1MDU3ZCIsTU06IiVkIFx1MDU2MVx1MDU3NFx1MDU2Ylx1MDU3ZCIseToiXHUwNTdmXHUwNTYxXHUwNTgwXHUwNTZiIix5eToiJWQgXHUwNTdmXHUw''@;'; put 'put ''NTYxXHUwNTgwXHUwNTZiIn0sbWVyaWRpZW1QYXJzZTovXHUwNTYzXHUwNTZiXHUwNTc3XHUwNTY1XHUwNTgwXHUwNTdlXHUwNTYxfFx1MDU2MVx1MDU3Y1x1MDU2MVx1MDU3ZVx1MDU3OFx1MDU3Zlx1MDU3ZVx1MDU2MXxcdTA1ODFcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1N2VcdTA1''@;'; put 'put ''NjF8XHUwNTY1XHUwNTgwXHUwNTY1XHUwNTZmXHUwNTc4XHUwNTc1XHUwNTYxXHUwNTc2Lyxpc1BNOmZ1bmN0aW9uKG0pe3JldHVybi9eKFx1MDU4MVx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3ZVx1MDU2MXxcdTA1NjVcdTA1ODBcdTA1NjVcdTA1NmZcdTA1NzhcdTA1NzVcdTA1NjFc''@;'; put 'put ''dTA1NzYpJC8udGVzdChtKX0sbWVyaWRpZW06ZnVuY3Rpb24obSl7cmV0dXJuIG08ND8iXHUwNTYzXHUwNTZiXHUwNTc3XHUwNTY1XHUwNTgwXHUwNTdlXHUwNTYxIjptPDEyPyJcdTA1NjFcdTA1N2NcdTA1NjFcdTA1N2VcdTA1NzhcdTA1N2ZcdTA1N2VcdTA1NjEiOm08MTc/Ilx1MDU4MVx1''@;'; put 'put ''MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3ZVx1MDU2MSI6Ilx1MDU2NVx1MDU4MFx1MDU2NVx1MDU2Zlx1MDU3OFx1MDU3NVx1MDU2MVx1MDU3NiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn18XGR7MSwyfS0oXHUwNTZiXHUwNTc2fFx1MDU4MFx1MDU2NCkvLG9yZGluYWw6''@;'; put 'put ''ZnVuY3Rpb24obSxzZSl7c3dpdGNoKHNlKXtjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOmNhc2UiREREbyI6cmV0dXJuIDE9PT1tP20rIi1cdTA1NmJcdTA1NzYiOm0rIi1cdTA1ODBcdTA1NjQiO2RlZmF1bHQ6cmV0dXJuIG19fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw1''@;'; put 'put ''ODY6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIi''@;'; put 'put ''LnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3RfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi''@;'; put 'put ''TWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoi''@;'; put 'put ''RCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKG0sc2Upe3JldHVybiAxMj09PW0mJihtPTApLCJwYWdpIj09PXNl''@;'; put 'put ''P206InNpYW5nIj09PXNlP20+PTExP206bSsxMjoic29yZSI9PT1zZXx8Im1hbGFtIj09PXNlP20rMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDExPyJwYWdpIjptPDE1PyJzaWFuZyI6bTwxOT8ic29yZSI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6''@;'; put 'put ''IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7''@;'; put 'put ''ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsc3M6IiVkIGRldGlrIixtOiJzZW1lbml0IixtbToiJWQgbWVuaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVs''@;'; put 'put ''YW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDkwMjExOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoTSl7cmV0dXJuIE0lMTAwPT0xMXx8TSUxMCE9MX1mdW5jdGlvbiBt''@;'; put 'put ''KE0sTyxJLGope3ZhciBHPU0rIiAiO3N3aXRjaChJKXtjYXNlInMiOnJldHVybiBPfHxqPyJub2trcmFyIHNla1x4ZmFuZHVyIjoibm9ra3J1bSBzZWtceGZhbmR1bSI7Y2FzZSJzcyI6cmV0dXJuIHgoTSk/RysoT3x8aj8ic2VrXHhmYW5kdXIiOiJzZWtceGZhbmR1bSIpOkcrInNla1x4ZmFu''@;'; put 'put ''ZGEiO2Nhc2UibSI6cmV0dXJuIE8/Im1ceGVkblx4ZmF0YSI6Im1ceGVkblx4ZmF0dSI7Y2FzZSJtbSI6cmV0dXJuIHgoTSk/RysoT3x8aj8ibVx4ZWRuXHhmYXR1ciI6Im1ceGVkblx4ZmF0dW0iKTpPP0crIm1ceGVkblx4ZmF0YSI6RysibVx4ZWRuXHhmYXR1IjtjYXNlImhoIjpyZXR1cm4g''@;'; put 'put ''eChNKT9HKyhPfHxqPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOkcrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBPPyJkYWd1ciI6aj8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIHgoTSk/Tz9HKyJkYWdhciI6Rysoaj8iZGFnYSI6ImRceGY2Z3VtIik6Tz9HKyJk''@;'; put 'put ''YWd1ciI6Rysoaj8iZGFnIjoiZGVnaSIpO2Nhc2UiTSI6cmV0dXJuIE8/Im1ceGUxbnVceGYwdXIiOmo/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIjtjYXNlIk1NIjpyZXR1cm4geChNKT9PP0crIm1ceGUxbnVceGYwaXIiOkcrKGo/Im1ceGUxbnVceGYwaSI6Im1ceGUxbnVceGYwdW0i''@;'; put 'put ''KTpPP0crIm1ceGUxbnVceGYwdXIiOkcrKGo/Im1ceGUxbnVceGYwIjoibVx4ZTFudVx4ZjBpIik7Y2FzZSJ5IjpyZXR1cm4gT3x8aj8iXHhlMXIiOiJceGUxcmkiO2Nhc2UieXkiOnJldHVybiB4KE0pP0crKE98fGo/Ilx4ZTFyIjoiXHhlMXJ1bSIpOkcrKE98fGo/Ilx4ZTFyIjoiXHhlMXJp''@;'; put 'put ''Iil9fW9lLmRlZmluZUxvY2FsZSgiaXMiLHttb250aHM6Imphblx4ZmFhcl9mZWJyXHhmYWFyX21hcnNfYXByXHhlZGxfbWFceGVkX2pceGZhblx4ZWRfalx4ZmFsXHhlZF9ceGUxZ1x4ZmFzdF9zZXB0ZW1iZXJfb2t0XHhmM2Jlcl9uXHhmM3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxt''@;'; put 'put ''b250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hXHhlZF9qXHhmYW5falx4ZmFsX1x4ZTFnXHhmYV9zZXBfb2t0X25ceGYzdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51ZGFndXJfbVx4ZTFudWRhZ3VyX1x4ZmVyaVx4ZjBqdWRhZ3VyX21pXHhmMHZpa3VkYWd1cl9maW1tdHVk''@;'; put 'put ''YWd1cl9mXHhmNnN0dWRhZ3VyX2xhdWdhcmRhZ3VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tXHhlMW5fXHhmZXJpX21pXHhmMF9maW1fZlx4ZjZzX2xhdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTVx4ZTFfXHhkZXJfTWlfRmlfRlx4ZjZfTGEiLnNwbGl0KCJfIiks''@;'; put 'put ''bG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltceGVk''@;'; put 'put ''IGRhZyBrbC5dIExUIixuZXh0RGF5OiJbXHhlMSBtb3JndW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltceGVkIGdceGU2ciBrbC5dIExUIixsYXN0V2VlazoiW3NceGVkXHhmMGFzdGFdIGRkZGQgW2tsLl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVU''@;'; put 'put ''aW1lOntmdXR1cmU6ImVmdGlyICVzIixwYXN0OiJmeXJpciAlcyBzXHhlZFx4ZjBhbiIsczptLHNzOm0sbSxtbTptLGg6ImtsdWtrdXN0dW5kIixoaDptLGQ6bSxkZDptLE06bSxNTTptLHk6bSx5eTptfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIs''@;'; put 'put ''d2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMjIzNDA6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJpdC1jaCIse21vbnRoczoiZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWds''@;'; put 'put ''aW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZG9tZW5pY2FfbHVuZWRceGVjX21hcnRl''@;'; put 'put ''ZFx4ZWNfbWVyY29sZWRceGVjX2dpb3ZlZFx4ZWNfdmVuZXJkXHhlY19zYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9tZV9naV92ZV9zYSIuc3BsaXQoIl8iKSxsb25n''@;'; put 'put ''RGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW09nZ2kgYWxsZV0gTFQiLG5leHRE''@;'; put 'put ''YXk6IltEb21hbmkgYWxsZV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbGxlXSBMVCIsbGFzdERheToiW0llcmkgYWxsZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpPyJbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCI6IltsbyBzY29yc29dIGRkZGQgW2Fs''@;'; put 'put ''bGVdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihtKXtyZXR1cm4oL15bMC05XS4rJC8udGVzdChtKT8idHJhIjoiaW4iKSsiICIrbX0scGFzdDoiJXMgZmEiLHM6ImFsY3VuaSBzZWNvbmRpIixzczoiJWQgc2Vjb25kaSIsbToidW4gbWludXRvIixt''@;'; put 'put ''bToiJWQgbWludXRpIixoOiJ1bidvcmEiLGhoOiIlZCBvcmUiLGQ6InVuIGdpb3JubyIsZGQ6IiVkIGdpb3JuaSIsTToidW4gbWVzZSIsTU06IiVkIG1lc2kiLHk6InVuIGFubm8iLHl5OiIlZCBhbm5pIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVx4YmEvLG9yZGluYWw6IiVk''@;'; put 'put ''XHhiYSIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNzAxNzA6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJpdCIse21vbnRoczoiZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19s''@;'; put 'put ''dWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZG9tZW5pY2FfbHVuZWRceGVjX21h''@;'; put 'put ''cnRlZFx4ZWNfbWVyY29sZWRceGVjX2dpb3ZlZFx4ZWNfdmVuZXJkXHhlY19zYWJhdG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9tZV9naV92ZV9zYSIuc3BsaXQoIl8iKSxs''@;'; put 'put ''b25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJb''@;'; put 'put ''T2dnaSBhIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbRG9tYW5pIGEiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQifSxuZXh0''@;'; put 'put ''V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbSWVyaSBhIisodGhpcy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/''@;'; put 'put ''IiAiOiJsbCciKSsiXUxUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCk/IltMYSBzY29yc2FdIGRkZGQgW2EiKyh0aGlzLmhvdXJzKCk+MT8ibGxlICI6MD09PXRoaXMuaG91cnMoKT8iICI6ImxsJyIpKyJdTFQiOiJbTG8gc2NvcnNvXSBkZGRkIFthIisodGhp''@;'; put 'put ''cy5ob3VycygpPjE/ImxsZSAiOjA9PT10aGlzLmhvdXJzKCk/IiAiOiJsbCciKSsiXUxUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToidHJhICVzIixwYXN0OiIlcyBmYSIsczoiYWxjdW5pIHNlY29uZGkiLHNzOiIlZCBzZWNvbmRpIixtOiJ1biBtaW51dG8iLG1tOiIl''@;'; put 'put ''ZCBtaW51dGkiLGg6InVuJ29yYSIsaGg6IiVkIG9yZSIsZDoidW4gZ2lvcm5vIixkZDoiJWQgZ2lvcm5pIix3OiJ1bmEgc2V0dGltYW5hIix3dzoiJWQgc2V0dGltYW5lIixNOiJ1biBtZXNlIixNTToiJWQgbWVzaSIseToidW4gYW5ubyIseXk6IiVkIGFubmkifSxkYXlPZk1vbnRoT3JkaW5h''@;'; put 'put ''bFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSwzOTc3MDpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImphIix7ZXJhczpbe3NpbmNlOiIyMDE5LTA1''@;'; put 'put ''LTAxIixvZmZzZXQ6MSxuYW1lOiJcdTRlZTRcdTU0OGMiLG5hcnJvdzoiXHUzMmZmIixhYmJyOiJSIn0se3NpbmNlOiIxOTg5LTAxLTA4Iix1bnRpbDoiMjAxOS0wNC0zMCIsb2Zmc2V0OjEsbmFtZToiXHU1ZTczXHU2MjEwIixuYXJyb3c6Ilx1MzM3YiIsYWJicjoiSCJ9LHtzaW5jZToiMTky''@;'; put 'put ''Ni0xMi0yNSIsdW50aWw6IjE5ODktMDEtMDciLG9mZnNldDoxLG5hbWU6Ilx1NjYyZFx1NTQ4YyIsbmFycm93OiJcdTMzN2MiLGFiYnI6IlMifSx7c2luY2U6IjE5MTItMDctMzAiLHVudGlsOiIxOTI2LTEyLTI0IixvZmZzZXQ6MSxuYW1lOiJcdTU5MjdcdTZiNjMiLG5hcnJvdzoiXHUzMzdk''@;'; put 'put ''IixhYmJyOiJUIn0se3NpbmNlOiIxODczLTAxLTAxIix1bnRpbDoiMTkxMi0wNy0yOSIsb2Zmc2V0OjYsbmFtZToiXHU2NjBlXHU2Y2JiIixuYXJyb3c6Ilx1MzM3ZSIsYWJicjoiTSJ9LHtzaW5jZToiMDAwMS0wMS0wMSIsdW50aWw6IjE4NzMtMTItMzEiLG9mZnNldDoxLG5hbWU6Ilx1ODk3''@;'; put 'put ''Zlx1NjZhNiIsbmFycm93OiJBRCIsYWJicjoiQUQifSx7c2luY2U6IjAwMDAtMTItMzEiLHVudGlsOi0xLzAsb2Zmc2V0OjEsbmFtZToiXHU3ZDAwXHU1MTQzXHU1MjRkIixuYXJyb3c6IkJDIixhYmJyOiJCQyJ9XSxlcmFZZWFyT3JkaW5hbFJlZ2V4Oi8oXHU1MTQzfFxkKylcdTVlNzQvLGVy''@;'; put 'put ''YVllYXJPcmRpbmFsUGFyc2U6ZnVuY3Rpb24obSxzZSl7cmV0dXJuIlx1NTE0MyI9PT1zZVsxXT8xOnBhcnNlSW50KHNlWzFdfHxtLDEwKX0sbW9udGhzOiIxXHU2NzA4XzJcdTY3MDhfM1x1NjcwOF80XHU2NzA4XzVcdTY3MDhfNlx1NjcwOF83XHU2NzA4XzhcdTY3MDhfOVx1NjcwOF8xMFx1''@;'; put 'put ''NjcwOF8xMVx1NjcwOF8xMlx1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXM6Ilx1NjVlNVx1NjZkY1x1NjVlNV9cdTY3MDhcdTY2ZGNcdTY1ZTVfXHU3MDZiXHU2NmRjXHU2NWU1X1x1NmMzNFx1NjZkY1x1NjVlNV9cdTY3MjhcdTY2ZGNcdTY1ZTVfXHU5MWQxXHU2NmRjXHU2NWU1X1x1NTcxZlx1NjZkY1x1NjVlNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJc''@;'; put 'put ''dTY1ZTVfXHU2NzA4X1x1NzA2Yl9cdTZjMzRfXHU2NzI4X1x1OTFkMV9cdTU3MWYiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTY3MDhfXHU3MDZiX1x1NmMzNF9cdTY3MjhfXHU5MWQxX1x1NTcxZiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6''@;'; put 'put ''IkhIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IGRkZGQgSEg6bW0iLGw6IllZWVkvTU0vREQiLGxsOiJZWVlZXHU1ZTc0''@;'; put 'put ''TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUoZGRkKSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTM0OFx1NTI0ZHxcdTUzNDhcdTVmOGMvaSxpc1BNOmZ1bmN0aW9uKG0pe3JldHVybiJc''@;'; put 'put ''dTUzNDhcdTVmOGMiPT09bX0sbWVyaWRpZW06ZnVuY3Rpb24obSxzZSxNKXtyZXR1cm4gbTwxMj8iXHU1MzQ4XHU1MjRkIjoiXHU1MzQ4XHU1ZjhjIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTRlY2FcdTY1ZTVdIExUIixuZXh0RGF5OiJbXHU2NjBlXHU2NWU1XSBMVCIsbmV4dFdlZWs6ZnVu''@;'; put 'put ''Y3Rpb24obSl7cmV0dXJuIG0ud2VlaygpIT09dGhpcy53ZWVrKCk/IltcdTY3NjVcdTkwMzFdZGRkZCBMVCI6ImRkZGQgTFQifSxsYXN0RGF5OiJbXHU2NjI4XHU2NWU1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMud2VlaygpIT09bS53ZWVrKCk/IltcdTUxNDhcdTkw''@;'; put 'put ''MzFdZGRkZCBMVCI6ImRkZGQgTFQifSxzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cdTY1ZTUvLG9yZGluYWw6ZnVuY3Rpb24obSxzZSl7c3dpdGNoKHNlKXtjYXNlInkiOnJldHVybiAxPT09bT8iXHU1MTQzXHU1ZTc0IjptKyJcdTVlNzQiO2Nhc2UiZCI6''@;'; put 'put ''Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIG0rIlx1NjVlNSI7ZGVmYXVsdDpyZXR1cm4gbX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NjU3MFx1NzlkMiIsc3M6IiVkXHU3OWQyIixtOiIxXHU1MjA2IixtbToiJWRcdTUyMDYiLGg6IjFc''@;'; put 'put ''dTY2NDJcdTk1OTMiLGhoOiIlZFx1NjY0Mlx1OTU5MyIsZDoiMVx1NjVlNSIsZGQ6IiVkXHU2NWU1IixNOiIxXHUzMGY2XHU2NzA4IixNTToiJWRcdTMwZjZcdTY3MDgiLHk6IjFcdTVlNzQiLHl5OiIlZFx1NWU3NCJ9fSl9KFIoOTc1ODYpKX0sNzM4NzU6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1''@;'; put 'put ''bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJqdiIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm9wZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6''@;'; put 'put ''Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3BfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuZW5fU2Vsb3NvX1JlYnVfS2VtaXNfSmVtdXdhaF9TZXB0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SZWJfS2VtX0pl''@;'; put 'put ''bV9TZXAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NwIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhI''@;'; put 'put ''Lm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovZW5qaW5nfHNpeWFuZ3xzb250ZW58bmRhbHUvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihtLHNlKXtyZXR1cm4gMTI9PT1tJiYobT0wKSwiZW5qaW5nIj09PXNlP206InNpeWFuZyI9PT1z''@;'; put 'put ''ZT9tPj0xMT9tOm0rMTI6InNvbnRlbiI9PT1zZXx8Im5kYWx1Ij09PXNlP20rMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDExPyJlbmppbmciOm08MTU/InNpeWFuZyI6bTwxOT8ic29udGVuIjoibmRhbHUifSxjYWxlbmRhcjp7c2FtZURheToiW0RpbnRl''@;'; put 'put ''biBwdW5pa28gcHVrdWxdIExUIixuZXh0RGF5OiJbTWJlbmphbmcgcHVrdWxdIExUIixuZXh0V2VlazoiZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5OiJbS2FsYSB3aW5naSBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtrZXBlbmdrZXIgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0''@;'; put 'put ''aXZlVGltZTp7ZnV0dXJlOiJ3b250ZW4gaW5nICVzIixwYXN0OiIlcyBpbmdrYW5nIGtlcGVuZ2tlciIsczoic2F3ZXRhd2lzIGRldGlrIixzczoiJWQgZGV0aWsiLG06InNldHVuZ2dhbCBtZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZXR1bmdnYWwgamFtIixoaDoiJWQgamFtIixkOiJzZWRp''@;'; put 'put ''bnRlbiIsZGQ6IiVkIGRpbnRlbiIsTToic2V3dWxhbiIsTU06IiVkIHd1bGFuIix5OiJzZXRhdW4iLHl5OiIlZCB0YXVuIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNzk0OTk6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5l''@;'; put 'put ''TG9jYWxlKCJrYSIse21vbnRoczoiXHUxMGQ4XHUxMGQwXHUxMGRjXHUxMGQ1XHUxMGQwXHUxMGUwXHUxMGQ4X1x1MTBkN1x1MTBkNFx1MTBkMVx1MTBkNFx1MTBlMFx1MTBkNVx1MTBkMFx1MTBkYVx1MTBkOF9cdTEwZGJcdTEwZDBcdTEwZTBcdTEwZTJcdTEwZDhfXHUxMGQwXHUxMGRlXHUx''@;'; put 'put ''MGUwXHUxMGQ4XHUxMGRhXHUxMGQ4X1x1MTBkYlx1MTBkMFx1MTBkOFx1MTBlMVx1MTBkOF9cdTEwZDhcdTEwZDVcdTEwZGNcdTEwZDhcdTEwZTFcdTEwZDhfXHUxMGQ4XHUxMGQ1XHUxMGRhXHUxMGQ4XHUxMGUxXHUxMGQ4X1x1MTBkMFx1MTBkMlx1MTBkNVx1MTBkOFx1MTBlMVx1MTBlMlx1''@;'; put 'put ''MTBkZF9cdTEwZTFcdTEwZDRcdTEwZTVcdTEwZTJcdTEwZDRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDhfXHUxMGRkXHUxMGU1XHUxMGUyXHUxMGRkXHUxMGRiXHUxMGQxXHUxMGQ0XHUxMGUwXHUxMGQ4X1x1MTBkY1x1MTBkZFx1MTBkNFx1MTBkYlx1MTBkMVx1MTBkNFx1MTBlMFx1''@;'; put 'put ''MTBkOF9cdTEwZDNcdTEwZDRcdTEwZDlcdTEwZDRcdTEwZGJcdTEwZDFcdTEwZDRcdTEwZTBcdTEwZDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MTBkOFx1MTBkMFx1MTBkY19cdTEwZDdcdTEwZDRcdTEwZDFfXHUxMGRiXHUxMGQwXHUxMGUwX1x1MTBkMFx1MTBkZVx1MTBlMF9cdTEw''@;'; put 'put ''ZGJcdTEwZDBcdTEwZDhfXHUxMGQ4XHUxMGQ1XHUxMGRjX1x1MTBkOFx1MTBkNVx1MTBkYV9cdTEwZDBcdTEwZDJcdTEwZDVfXHUxMGUxXHUxMGQ0XHUxMGU1X1x1MTBkZFx1MTBlNVx1MTBlMl9cdTEwZGNcdTEwZGRcdTEwZDRfXHUxMGQzXHUxMGQ0XHUxMGQ5Ii5zcGxpdCgiXyIpLHdlZWtk''@;'; put 'put ''YXlzOntzdGFuZGFsb25lOiJcdTEwZDlcdTEwZDVcdTEwZDhcdTEwZTBcdTEwZDBfXHUxMGRkXHUxMGUwXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBlMVx1MTBkMFx1MTBkYlx1MTBlOFx1MTBkMFx1MTBkMVx1MTBkMFx1MTBkN1x1MTBkOF9cdTEwZGRcdTEwZDdc''@;'; put 'put ''dTEwZWVcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZDhfXHUxMGVlXHUxMGUzXHUxMGQ3XHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGQ4X1x1MTBkZVx1MTBkMFx1MTBlMFx1MTBkMFx1MTBlMVx1MTBkOVx1MTBkNFx1MTBkNVx1MTBkOF9cdTEwZThcdTEwZDBc''@;'; put 'put ''dTEwZDFcdTEwZDBcdTEwZDdcdTEwZDgiLnNwbGl0KCJfIiksZm9ybWF0OiJcdTEwZDlcdTEwZDVcdTEwZDhcdTEwZTBcdTEwZDBcdTEwZTFfXHUxMGRkXHUxMGUwXHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBlMVx1MTBkMFx1MTBkYlx1MTBlOFx1MTBkMFx1MTBk''@;'; put 'put ''MVx1MTBkMFx1MTBkN1x1MTBlMV9cdTEwZGRcdTEwZDdcdTEwZWVcdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTFfXHUxMGVlXHUxMGUzXHUxMGQ3XHUxMGU4XHUxMGQwXHUxMGQxXHUxMGQwXHUxMGQ3XHUxMGUxX1x1MTBkZVx1MTBkMFx1MTBlMFx1MTBkMFx1MTBlMVx1MTBk''@;'; put 'put ''OVx1MTBkNFx1MTBkNVx1MTBlMV9cdTEwZThcdTEwZDBcdTEwZDFcdTEwZDBcdTEwZDdcdTEwZTEiLnNwbGl0KCJfIiksaXNGb3JtYXQ6LyhcdTEwZWNcdTEwZDhcdTEwZGNcdTEwZDB8XHUxMGU4XHUxMGQ0XHUxMGRiXHUxMGQzXHUxMGQ0XHUxMGQyKS99LHdlZWtkYXlzU2hvcnQ6Ilx1MTBk''@;'; put 'put ''OVx1MTBkNVx1MTBkOF9cdTEwZGRcdTEwZTBcdTEwZThfXHUxMGUxXHUxMGQwXHUxMGRiX1x1MTBkZFx1MTBkN1x1MTBlZV9cdTEwZWVcdTEwZTNcdTEwZDdfXHUxMGRlXHUxMGQwXHUxMGUwX1x1MTBlOFx1MTBkMFx1MTBkMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUxMGQ5XHUxMGQ1''@;'; put 'put ''X1x1MTBkZFx1MTBlMF9cdTEwZTFcdTEwZDBfXHUxMGRkXHUxMGQ3X1x1MTBlZVx1MTBlM19cdTEwZGVcdTEwZDBfXHUxMGU4XHUxMGQwIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIs''@;'; put 'put ''TExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MTBkM1x1MTBlNlx1MTBkNFx1MTBlMV0gTFRbLVx1MTBkNlx1MTBkNF0iLG5leHREYXk6IltcdTEwZWVcdTEwZDVcdTEwZDBcdTEwZGFdIExUWy1cdTEw''@;'; put 'put ''ZDZcdTEwZDRdIixsYXN0RGF5OiJbXHUxMGQyXHUxMGUzXHUxMGU4XHUxMGQ4XHUxMGRjXSBMVFstXHUxMGQ2XHUxMGQ0XSIsbmV4dFdlZWs6IltcdTEwZThcdTEwZDRcdTEwZGJcdTEwZDNcdTEwZDRcdTEwZDJdIGRkZGQgTFRbLVx1MTBkNlx1MTBkNF0iLGxhc3RXZWVrOiJbXHUxMGVjXHUx''@;'; put 'put ''MGQ4XHUxMGRjXHUxMGQwXSBkZGRkIExULVx1MTBkNlx1MTBkNCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihtKXtyZXR1cm4gbS5yZXBsYWNlKC8oXHUxMGVjXHUxMGQwXHUxMGRifFx1MTBlY1x1MTBlM1x1MTBkN3xcdTEwZTFcdTEwZDBcdTEwZDBcdTEw''@;'; put 'put ''ZDd8XHUxMGVjXHUxMGQ0XHUxMGRhfFx1MTBkM1x1MTBlNnxcdTEwZDdcdTEwZDUpKFx1MTBkOHxcdTEwZDQpLyxmdW5jdGlvbihzZSxNLE8pe3JldHVybiJcdTEwZDgiPT09Tz9NKyJcdTEwZThcdTEwZDgiOk0rTysiXHUxMGU4XHUxMGQ4In0pfSxwYXN0OmZ1bmN0aW9uKG0pe3JldHVybi8o''@;'; put 'put ''XHUxMGVjXHUxMGQwXHUxMGRiXHUxMGQ4fFx1MTBlY1x1MTBlM1x1MTBkN1x1MTBkOHxcdTEwZTFcdTEwZDBcdTEwZDBcdTEwZDdcdTEwZDh8XHUxMGQzXHUxMGU2XHUxMGQ0fFx1MTBkN1x1MTBkNVx1MTBkNCkvLnRlc3QobSk/bS5yZXBsYWNlKC8oXHUxMGQ4fFx1MTBkNCkkLywiXHUxMGQ4''@;'; put 'put ''XHUxMGUxIFx1MTBlY1x1MTBkOFx1MTBkYyIpOi9cdTEwZWNcdTEwZDRcdTEwZGFcdTEwZDgvLnRlc3QobSk/bS5yZXBsYWNlKC9cdTEwZWNcdTEwZDRcdTEwZGFcdTEwZDgkLywiXHUxMGVjXHUxMGRhXHUxMGQ4XHUxMGUxIFx1MTBlY1x1MTBkOFx1MTBkYyIpOm19LHM6Ilx1MTBlMFx1MTBk''@;'; put 'put ''MFx1MTBkYlx1MTBkM1x1MTBkNFx1MTBkY1x1MTBkOFx1MTBkYlx1MTBkNCBcdTEwZWNcdTEwZDBcdTEwZGJcdTEwZDgiLHNzOiIlZCBcdTEwZWNcdTEwZDBcdTEwZGJcdTEwZDgiLG06Ilx1MTBlY1x1MTBlM1x1MTBkN1x1MTBkOCIsbW06IiVkIFx1MTBlY1x1MTBlM1x1MTBkN1x1MTBkOCIs''@;'; put 'put ''aDoiXHUxMGUxXHUxMGQwXHUxMGQwXHUxMGQ3XHUxMGQ4IixoaDoiJWQgXHUxMGUxXHUxMGQwXHUxMGQwXHUxMGQ3XHUxMGQ4IixkOiJcdTEwZDNcdTEwZTZcdTEwZDQiLGRkOiIlZCBcdTEwZDNcdTEwZTZcdTEwZDQiLE06Ilx1MTBkN1x1MTBkNVx1MTBkNCIsTU06IiVkIFx1MTBkN1x1MTBk''@;'; put 'put ''NVx1MTBkNCIseToiXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4Iix5eToiJWQgXHUxMGVjXHUxMGQ0XHUxMGRhXHUxMGQ4In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovMHwxLVx1MTBkYVx1MTBkOHxcdTEwZGJcdTEwZDQtXGR7MSwyfXxcZHsxLDJ9LVx1MTBkNC8sb3JkaW5hbDpmdW5jdGlv''@;'; put 'put ''bihtKXtyZXR1cm4gMD09PW0/bToxPT09bT9tKyItXHUxMGRhXHUxMGQ4IjptPDIwfHxtPD0xMDAmJm0lMjA9PTB8fG0lMTAwPT0wPyJcdTEwZGJcdTEwZDQtIittOm0rIi1cdTEwZDQifSx3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw5MzU3MzpmdW5jdGlvbihRZSxNZSxSKXsh''@;'; put 'put ''ZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD17MDoiLVx1MDQ0OFx1MDQ1NiIsMToiLVx1MDQ0OFx1MDQ1NiIsMjoiLVx1MDQ0OFx1MDQ1NiIsMzoiLVx1MDQ0OFx1MDQ1NiIsNDoiLVx1MDQ0OFx1MDQ1NiIsNToiLVx1MDQ0OFx1MDQ1NiIsNjoiLVx1MDQ0OFx1MDQ0YiIsNzoiLVx1''@;'; put 'put ''MDQ0OFx1MDQ1NiIsODoiLVx1MDQ0OFx1MDQ1NiIsOToiLVx1MDQ0OFx1MDQ0YiIsMTA6Ii1cdTA0NDhcdTA0NGIiLDIwOiItXHUwNDQ4XHUwNDRiIiwzMDoiLVx1MDQ0OFx1MDQ0YiIsNDA6Ii1cdTA0NDhcdTA0NGIiLDUwOiItXHUwNDQ4XHUwNDU2Iiw2MDoiLVx1MDQ0OFx1MDQ0YiIsNzA6''@;'; put 'put ''Ii1cdTA0NDhcdTA0NTYiLDgwOiItXHUwNDQ4XHUwNDU2Iiw5MDoiLVx1MDQ0OFx1MDQ0YiIsMTAwOiItXHUwNDQ4XHUwNDU2In07b2UuZGVmaW5lTG9jYWxlKCJrayIse21vbnRoczoiXHUwNDliXHUwNDMwXHUwNGEzXHUwNDQyXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQ5Ylx1MDQzZlx1MDQz''@;'; put 'put ''MFx1MDQzZF9cdTA0M2RcdTA0MzBcdTA0NDNcdTA0NDBcdTA0NGJcdTA0MzdfXHUwNDQxXHUwNGQ5XHUwNDQzXHUwNDU2XHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQzY1x1MDQ0Ylx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0NDNcdTA0NDFcdTA0NGJcdTA0M2NfXHUwNDQ4XHUwNDU2XHUwNDNiXHUw''@;'; put 'put ''NDM0XHUwNDM1X1x1MDQ0Mlx1MDQzMFx1MDQzY1x1MDQ0Ylx1MDQzN19cdTA0OWJcdTA0NGJcdTA0NDBcdTA0M2FcdTA0YWZcdTA0MzlcdTA0MzVcdTA0M2FfXHUwNDliXHUwNDMwXHUwNDM3XHUwNDMwXHUwNDNkX1x1MDQ5Ylx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQ0OFx1MDQzMF9cdTA0MzZc''@;'; put 'put ''dTA0MzVcdTA0M2JcdTA0NDJcdTA0M2VcdTA0OWJcdTA0NDFcdTA0MzBcdTA0M2QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ5Ylx1MDQzMFx1MDRhM19cdTA0MzBcdTA0OWJcdTA0M2ZfXHUwNDNkXHUwNDMwXHUwNDQzX1x1MDQ0MVx1MDRkOVx1MDQ0M19cdTA0M2NcdTA0MzBcdTA0''@;'; put 'put ''M2NfXHUwNDNjXHUwNDMwXHUwNDQzX1x1MDQ0OFx1MDQ1Nlx1MDQzYl9cdTA0NDJcdTA0MzBcdTA0M2NfXHUwNDliXHUwNDRiXHUwNDQwX1x1MDQ5Ylx1MDQzMFx1MDQzN19cdTA0OWJcdTA0MzBcdTA0NDBfXHUwNDM2XHUwNDM1XHUwNDNiIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MzZc''@;'; put 'put ''dTA0MzVcdTA0M2FcdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDM0XHUwNGFmXHUwNDM5XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQ0MVx1MDQzNVx1MDQzOVx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQzMVx1MDQ1Nl9cdTA0NDFcdTA0ZDlcdTA0NDBcdTA0NDFc''@;'; put 'put ''dTA0MzVcdTA0M2RcdTA0MzFcdTA0NTZfXHUwNDMxXHUwNDM1XHUwNDM5XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDMxXHUwNDU2X1x1MDQzNlx1MDRiMVx1MDQzY1x1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0MzFcdTA0NTYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDM2XHUw''@;'; put 'put ''NDM1XHUwNDNhX1x1MDQzNFx1MDRhZlx1MDQzOV9cdTA0NDFcdTA0MzVcdTA0MzlfXHUwNDQxXHUwNGQ5XHUwNDQwX1x1MDQzMVx1MDQzNVx1MDQzOV9cdTA0MzZcdTA0YjFcdTA0M2NfXHUwNDQxXHUwNDM1XHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0MzZcdTA0M2FfXHUw''@;'; put 'put ''NDM0XHUwNDM5X1x1MDQ0MVx1MDQzOV9cdTA0NDFcdTA0NDBfXHUwNDMxXHUwNDM5X1x1MDQzNlx1MDQzY19cdTA0NDFcdTA0M2QiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6''@;'; put 'put ''IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNGFmXHUwNDMzXHUwNDU2XHUwNDNkIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLG5leHREYXk6IltcdTA0MTVcdTA0NDBcdTA0''@;'; put 'put ''NDJcdTA0MzVcdTA0YTMgXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUwNDQyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0Ml0gTFQiLGxhc3REYXk6IltcdTA0MWFcdTA0MzVcdTA0NDhcdTA0MzUgXHUwNDQxXHUwNDMwXHUwNDkzXHUwNDMwXHUw''@;'; put 'put ''NDQyXSBMVCIsbGFzdFdlZWs6IltcdTA0ZThcdTA0NDJcdTA0M2FcdTA0MzVcdTA0M2QgXHUwNDMwXHUwNDNmXHUwNDQyXHUwNDMwXHUwNDNkXHUwNDRiXHUwNGEzXSBkZGRkIFtcdTA0NDFcdTA0MzBcdTA0OTNcdTA0MzBcdTA0NDJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7''@;'; put 'put ''ZnV0dXJlOiIlcyBcdTA0NTZcdTA0NDhcdTA0NTZcdTA0M2RcdTA0MzRcdTA0MzUiLHBhc3Q6IiVzIFx1MDQzMVx1MDRiMVx1MDQ0MFx1MDQ0Ylx1MDQzZCIsczoiXHUwNDMxXHUwNDU2XHUwNDQwXHUwNDNkXHUwNDM1XHUwNDQ4XHUwNDM1IFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQz''@;'; put 'put ''ZFx1MDQzNCIsc3M6IiVkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsbToiXHUwNDMxXHUwNDU2XHUwNDQwIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsbW06IiVkIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiIsaDoiXHUwNDMxXHUwNDU2XHUw''@;'; put 'put ''NDQwIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0MiIsaGg6IiVkIFx1MDQ0MVx1MDQzMFx1MDQ5M1x1MDQzMFx1MDQ0MiIsZDoiXHUwNDMxXHUwNDU2XHUwNDQwIFx1MDQzYVx1MDRhZlx1MDQzZCIsZGQ6IiVkIFx1MDQzYVx1MDRhZlx1MDQzZCIsTToiXHUwNDMxXHUwNDU2XHUwNDQw''@;'; put 'put ''IFx1MDQzMFx1MDQzOSIsTU06IiVkIFx1MDQzMFx1MDQzOSIseToiXHUwNDMxXHUwNDU2XHUwNDQwIFx1MDQzNlx1MDQ0Ylx1MDQzYiIseXk6IiVkIFx1MDQzNlx1MDQ0Ylx1MDQzYiJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQ0OFx1MDQ1NnxcdTA0NDhcdTA0NGIp''@;'; put 'put ''LyxvcmRpbmFsOmZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UrKHhbc2VdfHx4W3NlJTEwXXx8eFtzZT49MTAwPzEwMDpudWxsXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDY4ODA3OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsx''@;'; put 'put ''OiJcdTE3ZTEiLDI6Ilx1MTdlMiIsMzoiXHUxN2UzIiw0OiJcdTE3ZTQiLDU6Ilx1MTdlNSIsNjoiXHUxN2U2Iiw3OiJcdTE3ZTciLDg6Ilx1MTdlOCIsOToiXHUxN2U5IiwwOiJcdTE3ZTAifSxtPXsiXHUxN2UxIjoiMSIsIlx1MTdlMiI6IjIiLCJcdTE3ZTMiOiIzIiwiXHUxN2U0IjoiNCIs''@;'; put 'put ''Ilx1MTdlNSI6IjUiLCJcdTE3ZTYiOiI2IiwiXHUxN2U3IjoiNyIsIlx1MTdlOCI6IjgiLCJcdTE3ZTkiOiI5IiwiXHUxN2UwIjoiMCJ9O29lLmRlZmluZUxvY2FsZSgia20iLHttb250aHM6Ilx1MTc5OFx1MTc4MFx1MTc5YVx1MTdiNl9cdTE3ODBcdTE3YmJcdTE3OThcdTE3ZDJcdTE3OTdc''@;'; put 'put ''dTE3YzhfXHUxNzk4XHUxN2I4XHUxNzkzXHUxN2I2X1x1MTc5OFx1MTdjMVx1MTc5Zlx1MTdiNl9cdTE3YTdcdTE3OWZcdTE3OTdcdTE3YjZfXHUxNzk4XHUxN2I3XHUxNzkwXHUxN2JiXHUxNzkzXHUxN2I2X1x1MTc4MFx1MTc4MFx1MTdkMlx1MTc4MFx1MTc4YVx1MTdiNl9cdTE3OWZcdTE3''@;'; put 'put ''YjhcdTE3YTBcdTE3YjZfXHUxNzgwXHUxNzg5XHUxN2QyXHUxNzg5XHUxN2I2X1x1MTc4Zlx1MTdiYlx1MTc5Ylx1MTdiNl9cdTE3OWNcdTE3YjdcdTE3ODVcdTE3ZDJcdTE3ODZcdTE3YjdcdTE3ODBcdTE3YjZfXHUxNzkyXHUxN2QyXHUxNzkzXHUxN2JjIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJcdTE3OThcdTE3ODBcdTE3OWFcdTE3YjZfXHUxNzgwXHUxN2JiXHUxNzk4XHUxN2QyXHUxNzk3XHUxN2M4X1x1MTc5OFx1MTdiOFx1MTc5M1x1MTdiNl9cdTE3OThcdTE3YzFcdTE3OWZcdTE3YjZfXHUxN2E3XHUxNzlmXHUxNzk3XHUxN2I2X1x1MTc5OFx1MTdiN1x1MTc5MFx1MTdi''@;'; put 'put ''Ylx1MTc5M1x1MTdiNl9cdTE3ODBcdTE3ODBcdTE3ZDJcdTE3ODBcdTE3OGFcdTE3YjZfXHUxNzlmXHUxN2I4XHUxN2EwXHUxN2I2X1x1MTc4MFx1MTc4OVx1MTdkMlx1MTc4OVx1MTdiNl9cdTE3OGZcdTE3YmJcdTE3OWJcdTE3YjZfXHUxNzljXHUxN2I3XHUxNzg1XHUxN2QyXHUxNzg2XHUx''@;'; put 'put ''N2I3XHUxNzgwXHUxN2I2X1x1MTc5Mlx1MTdkMlx1MTc5M1x1MTdiYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUxN2EyXHUxN2I2XHUxNzkxXHUxN2I3XHUxNzhmXHUxN2QyXHUxNzk5X1x1MTc4NVx1MTdkMFx1MTc5M1x1MTdkMlx1MTc5MV9cdTE3YTJcdTE3ODRcdTE3ZDJcdTE3ODJcdTE3''@;'; put 'put ''YjZcdTE3OWFfXHUxNzk2XHUxN2JiXHUxNzkyX1x1MTc5Nlx1MTdkMlx1MTc5YVx1MTdhMFx1MTc5Zlx1MTdkMlx1MTc5NFx1MTc4Zlx1MTdiN1x1MTdjZF9cdTE3OWZcdTE3YmJcdTE3ODBcdTE3ZDJcdTE3OWFfXHUxNzlmXHUxN2M1XHUxNzlhXHUxN2NkIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''U2hvcnQ6Ilx1MTdhMlx1MTdiNl9cdTE3ODVfXHUxN2EyX1x1MTc5Nl9cdTE3OTZcdTE3ZDJcdTE3OWFfXHUxNzlmXHUxN2JiX1x1MTc5ZiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUxN2EyXHUxN2I2X1x1MTc4NV9cdTE3YTJfXHUxNzk2X1x1MTc5Nlx1MTdkMlx1MTc5YV9cdTE3OWZc''@;'; put 'put ''dTE3YmJfXHUxNzlmIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZ''@;'; put 'put ''WVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUxNzk2XHUxN2QyXHUxNzlhXHUxN2I5XHUxNzgwfFx1MTc5Ylx1MTdkMlx1MTc4NFx1MTdiNlx1MTc4NS8saXNQTTpmdW5jdGlvbihNKXtyZXR1cm4iXHUxNzliXHUxN2QyXHUxNzg0XHUxN2I2XHUxNzg1Ij09PU19LG1lcmlkaWVtOmZ1bmN0''@;'; put 'put ''aW9uKE0sTyxJKXtyZXR1cm4gTTwxMj8iXHUxNzk2XHUxN2QyXHUxNzlhXHUxN2I5XHUxNzgwIjoiXHUxNzliXHUxN2QyXHUxNzg0XHUxN2I2XHUxNzg1In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTE3OTBcdTE3ZDJcdTE3ODRcdTE3YzNcdTE3OTNcdTE3YzFcdTE3YzcgXHUxNzk4XHUxN2M5''@;'; put 'put ''XHUxN2M0XHUxNzg0XSBMVCIsbmV4dERheToiW1x1MTc5Zlx1MTdkMlx1MTdhMlx1MTdjMlx1MTc4MCBcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixuZXh0V2VlazoiZGRkZCBbXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBMVCIsbGFzdERheToiW1x1MTc5OFx1MTdkMlx1MTc5Zlx1''@;'; put 'put ''MTdiN1x1MTc5Ylx1MTc5OFx1MTdiN1x1MTc4OSBcdTE3OThcdTE3YzlcdTE3YzRcdTE3ODRdIExUIixsYXN0V2VlazoiZGRkZCBbXHUxNzlmXHUxNzk0XHUxN2QyXHUxNzhmXHUxN2I2XHUxN2EwXHUxN2NkXHUxNzk4XHUxN2JiXHUxNzkzXSBbXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0XSBM''@;'; put 'put ''VCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTE3OTFcdTE3YzBcdTE3OGYiLHBhc3Q6IiVzXHUxNzk4XHUxN2JiXHUxNzkzIixzOiJcdTE3OTRcdTE3YzlcdTE3YmJcdTE3OTNcdTE3ZDJcdTE3OThcdTE3YjZcdTE3OTNcdTE3OWNcdTE3YjdcdTE3OTNcdTE3YjZc''@;'; put 'put ''dTE3OTFcdTE3YjgiLHNzOiIlZCBcdTE3OWNcdTE3YjdcdTE3OTNcdTE3YjZcdTE3OTFcdTE3YjgiLG06Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc5M1x1MTdiNlx1MTc5MVx1MTdiOCIsbW06IiVkIFx1MTc5M1x1MTdiNlx1MTc5MVx1MTdiOCIsaDoiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzk4''@;'; put 'put ''XHUxN2M5XHUxN2M0XHUxNzg0IixoaDoiJWQgXHUxNzk4XHUxN2M5XHUxN2M0XHUxNzg0IixkOiJcdTE3OThcdTE3YmRcdTE3OTlcdTE3OTBcdTE3ZDJcdTE3ODRcdTE3YzMiLGRkOiIlZCBcdTE3OTBcdTE3ZDJcdTE3ODRcdTE3YzMiLE06Ilx1MTc5OFx1MTdiZFx1MTc5OVx1MTc4MVx1MTdj''@;'; put 'put ''MiIsTU06IiVkIFx1MTc4MVx1MTdjMiIseToiXHUxNzk4XHUxN2JkXHUxNzk5XHUxNzg2XHUxN2QyXHUxNzkzXHUxN2I2XHUxN2M2Iix5eToiJWQgXHUxNzg2XHUxN2QyXHUxNzkzXHUxN2I2XHUxN2M2In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXHUxNzkxXHUxN2I4XGR7MSwyfS8sb3Jk''@;'; put 'put ''aW5hbDoiXHUxNzkxXHUxN2I4JWQiLHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1tcdTE3ZTFcdTE3ZTJcdTE3ZTNcdTE3ZTRcdTE3ZTVcdTE3ZTZcdTE3ZTdcdTE3ZThcdTE3ZTlcdTE3ZTBdL2csZnVuY3Rpb24oTyl7cmV0dXJuIG1bT119KX0scG9zdGZvcm1hdDpm''@;'; put 'put ''dW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKE8pe3JldHVybiB4W09dfSl9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDY1MDgyOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTBjZTciLDI6''@;'; put 'put ''Ilx1MGNlOCIsMzoiXHUwY2U5Iiw0OiJcdTBjZWEiLDU6Ilx1MGNlYiIsNjoiXHUwY2VjIiw3OiJcdTBjZWQiLDg6Ilx1MGNlZSIsOToiXHUwY2VmIiwwOiJcdTBjZTYifSxtPXsiXHUwY2U3IjoiMSIsIlx1MGNlOCI6IjIiLCJcdTBjZTkiOiIzIiwiXHUwY2VhIjoiNCIsIlx1MGNlYiI6IjUi''@;'; put 'put ''LCJcdTBjZWMiOiI2IiwiXHUwY2VkIjoiNyIsIlx1MGNlZSI6IjgiLCJcdTBjZWYiOiI5IiwiXHUwY2U2IjoiMCJ9O29lLmRlZmluZUxvY2FsZSgia24iLHttb250aHM6Ilx1MGM5Y1x1MGNhOFx1MGNiNVx1MGNiMFx1MGNiZl9cdTBjYWJcdTBjYzZcdTBjYWNcdTBjY2RcdTBjYjBcdTBjYjVc''@;'; put 'put ''dTBjYjBcdTBjYmZfXHUwY2FlXHUwY2JlXHUwY2IwXHUwY2NkXHUwYzlhXHUwY2NkX1x1MGM4Zlx1MGNhYVx1MGNjZFx1MGNiMFx1MGNiZlx1MGNiMlx1MGNjZF9cdTBjYWVcdTBjYzZcdTBjZDVfXHUwYzljXHUwY2MyXHUwY2E4XHUwY2NkX1x1MGM5Y1x1MGNjMVx1MGNiMlx1MGNjNlx1MGNk''@;'; put 'put ''Nl9cdTBjODZcdTBjOTdcdTBjYjhcdTBjY2RcdTBjOWZcdTBjY2RfXHUwY2I4XHUwY2M2XHUwY2FhXHUwY2NkXHUwYzlmXHUwY2M2XHUwYzgyXHUwY2FjXHUwY2IwXHUwY2NkX1x1MGM4NVx1MGM5NVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGNjMlx1MGNkNVx1MGNhY1x1MGNiMFx1MGNjZF9cdTBj''@;'; put 'put ''YThcdTBjYjVcdTBjYzZcdTBjODJcdTBjYWNcdTBjYjBcdTBjY2RfXHUwY2ExXHUwY2JmXHUwY2I4XHUwY2M2XHUwYzgyXHUwY2FjXHUwY2IwXHUwY2NkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBjOWNcdTBjYThfXHUwY2FiXHUwY2M2XHUwY2FjXHUwY2NkXHUwY2IwX1x1MGNhZVx1''@;'; put 'put ''MGNiZVx1MGNiMFx1MGNjZFx1MGM5YVx1MGNjZF9cdTBjOGZcdTBjYWFcdTBjY2RcdTBjYjBcdTBjYmZcdTBjYjJcdTBjY2RfXHUwY2FlXHUwY2M2XHUwY2Q1X1x1MGM5Y1x1MGNjMlx1MGNhOFx1MGNjZF9cdTBjOWNcdTBjYzFcdTBjYjJcdTBjYzZcdTBjZDZfXHUwYzg2XHUwYzk3XHUwY2I4''@;'; put 'put ''XHUwY2NkXHUwYzlmXHUwY2NkX1x1MGNiOFx1MGNjNlx1MGNhYVx1MGNjZFx1MGM5Zlx1MGNjNlx1MGM4Ml9cdTBjODVcdTBjOTVcdTBjY2RcdTBjOWZcdTBjYzZcdTBjYzJcdTBjZDVfXHUwY2E4XHUwY2I1XHUwY2M2XHUwYzgyX1x1MGNhMVx1MGNiZlx1MGNiOFx1MGNjNlx1MGM4MiIuc3Bs''@;'; put 'put ''aXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBjYWRcdTBjYmVcdTBjYThcdTBjYzFcdTBjYjVcdTBjYmVcdTBjYjBfXHUwY2I4XHUwY2M2XHUwY2MyXHUwY2Q1XHUwY2FlXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNhZVx1MGM4Mlx1MGM5N1x1MGNiM1x1MGNiNVx1MGNi''@;'; put 'put ''ZVx1MGNiMF9cdTBjYWNcdTBjYzFcdTBjYTdcdTBjYjVcdTBjYmVcdTBjYjBfXHUwYzk3XHUwY2MxXHUwY2IwXHUwY2MxXHUwY2I1XHUwY2JlXHUwY2IwX1x1MGNiNlx1MGNjMVx1MGM5NVx1MGNjZFx1MGNiMFx1MGNiNVx1MGNiZVx1MGNiMF9cdTBjYjZcdTBjYThcdTBjYmZcdTBjYjVcdTBj''@;'; put 'put ''YmVcdTBjYjAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwY2FkXHUwY2JlXHUwY2E4XHUwY2MxX1x1MGNiOFx1MGNjNlx1MGNjMlx1MGNkNVx1MGNhZV9cdTBjYWVcdTBjODJcdTBjOTdcdTBjYjNfXHUwY2FjXHUwY2MxXHUwY2E3X1x1MGM5N1x1MGNjMVx1MGNiMFx1MGNjMV9cdTBj''@;'; put 'put ''YjZcdTBjYzFcdTBjOTVcdTBjY2RcdTBjYjBfXHUwY2I2XHUwY2E4XHUwY2JmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBjYWRcdTBjYmVfXHUwY2I4XHUwY2M2XHUwY2MyXHUwY2Q1X1x1MGNhZVx1MGM4Ml9cdTBjYWNcdTBjYzFfXHUwYzk3XHUwY2MxX1x1MGNiNlx1MGNjMV9cdTBj''@;'; put 'put ''YjYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0iLExUUzoiQSBoOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEEgaDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSJ9LGNhbGVuZGFyOntzYW1l''@;'; put 'put ''RGF5OiJbXHUwYzg3XHUwYzgyXHUwY2E2XHUwY2MxXSBMVCIsbmV4dERheToiW1x1MGNhOFx1MGNiZVx1MGNiM1x1MGNjNl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MGNhOFx1MGNiZlx1MGNhOFx1MGNjZFx1MGNhOFx1MGNjNl0gTFQiLGxhc3RXZWVrOiJbXHUwYzk1''@;'; put 'put ''XHUwY2M2XHUwY2MyXHUwY2E4XHUwY2M2XHUwY2FmXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwY2E4XHUwYzgyXHUwY2E0XHUwY2IwIixwYXN0OiIlcyBcdTBjYjlcdTBjYmZcdTBjODJcdTBjYTZcdTBjYzYiLHM6Ilx1MGM5NVx1MGNjNlx1''@;'; put 'put ''MGNiMlx1MGNiNVx1MGNjMSBcdTBjOTVcdTBjY2RcdTBjYjdcdTBjYTNcdTBjOTdcdTBjYjNcdTBjYzEiLHNzOiIlZCBcdTBjYjhcdTBjYzZcdTBjOTVcdTBjYzZcdTBjODJcdTBjYTFcdTBjYzFcdTBjOTdcdTBjYjNcdTBjYzEiLG06Ilx1MGM5Mlx1MGM4Mlx1MGNhNlx1MGNjMSBcdTBjYThc''@;'; put 'put ''dTBjYmZcdTBjYWVcdTBjYmZcdTBjYjciLG1tOiIlZCBcdTBjYThcdTBjYmZcdTBjYWVcdTBjYmZcdTBjYjciLGg6Ilx1MGM5Mlx1MGM4Mlx1MGNhNlx1MGNjMSBcdTBjOTdcdTBjODJcdTBjOWZcdTBjYzYiLGhoOiIlZCBcdTBjOTdcdTBjODJcdTBjOWZcdTBjYzYiLGQ6Ilx1MGM5Mlx1MGM4''@;'; put 'put ''Mlx1MGNhNlx1MGNjMSBcdTBjYTZcdTBjYmZcdTBjYTgiLGRkOiIlZCBcdTBjYTZcdTBjYmZcdTBjYTgiLE06Ilx1MGM5Mlx1MGM4Mlx1MGNhNlx1MGNjMSBcdTBjYTRcdTBjYmZcdTBjODJcdTBjOTdcdTBjYjNcdTBjYzEiLE1NOiIlZCBcdTBjYTRcdTBjYmZcdTBjODJcdTBjOTdcdTBjYjNc''@;'; put 'put ''dTBjYzEiLHk6Ilx1MGM5Mlx1MGM4Mlx1MGNhNlx1MGNjMSBcdTBjYjVcdTBjYjBcdTBjY2RcdTBjYjciLHl5OiIlZCBcdTBjYjVcdTBjYjBcdTBjY2RcdTBjYjcifSxwcmVwYXJzZTpmdW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC9bXHUwY2U3XHUwY2U4XHUwY2U5XHUwY2VhXHUwY2Vi''@;'; put 'put ''XHUwY2VjXHUwY2VkXHUwY2VlXHUwY2VmXHUwY2U2XS9nLGZ1bmN0aW9uKE8pe3JldHVybiBtW09dfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihPKXtyZXR1cm4geFtPXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBjYjBcdTBjYmVcdTBj''@;'; put 'put ''YTRcdTBjY2RcdTBjYjBcdTBjYmZ8XHUwY2FjXHUwY2M2XHUwY2IzXHUwY2JmXHUwYzk3XHUwY2NkXHUwYzk3XHUwY2M2fFx1MGNhZVx1MGNhN1x1MGNjZFx1MGNhZlx1MGNiZVx1MGNiOVx1MGNjZFx1MGNhOHxcdTBjYjhcdTBjODJcdTBjOWNcdTBjYzYvLG1lcmlkaWVtSG91cjpmdW5jdGlv''@;'; put 'put ''bihNLE8pe3JldHVybiAxMj09PU0mJihNPTApLCJcdTBjYjBcdTBjYmVcdTBjYTRcdTBjY2RcdTBjYjBcdTBjYmYiPT09Tz9NPDQ/TTpNKzEyOiJcdTBjYWNcdTBjYzZcdTBjYjNcdTBjYmZcdTBjOTdcdTBjY2RcdTBjOTdcdTBjYzYiPT09Tz9NOiJcdTBjYWVcdTBjYTdcdTBjY2RcdTBjYWZc''@;'; put 'put ''dTBjYmVcdTBjYjlcdTBjY2RcdTBjYTgiPT09Tz9NPj0xMD9NOk0rMTI6Ilx1MGNiOFx1MGM4Mlx1MGM5Y1x1MGNjNiI9PT1PP00rMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihNLE8sSSl7cmV0dXJuIE08ND8iXHUwY2IwXHUwY2JlXHUwY2E0XHUwY2NkXHUwY2IwXHUwY2JmIjpNPDEw''@;'; put 'put ''PyJcdTBjYWNcdTBjYzZcdTBjYjNcdTBjYmZcdTBjOTdcdTBjY2RcdTBjOTdcdTBjYzYiOk08MTc/Ilx1MGNhZVx1MGNhN1x1MGNjZFx1MGNhZlx1MGNiZVx1MGNiOVx1MGNjZFx1MGNhOCI6TTwyMD8iXHUwY2I4XHUwYzgyXHUwYzljXHUwY2M2IjoiXHUwY2IwXHUwY2JlXHUwY2E0XHUwY2Nk''@;'; put 'put ''XHUwY2IwXHUwY2JmIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfShcdTBjYThcdTBjYzZcdTBjZDUpLyxvcmRpbmFsOmZ1bmN0aW9uKE0pe3JldHVybiBNKyJcdTBjYThcdTBjYzZcdTBjZDUifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oUig5NzU4NikpfSwyMDEzNzpmdW5jdGlv''@;'; put 'put ''bihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoImtvIix7bW9udGhzOiIxXHVjNmQ0XzJcdWM2ZDRfM1x1YzZkNF80XHVjNmQ0XzVcdWM2ZDRfNlx1YzZkNF83XHVjNmQ0XzhcdWM2ZDRfOVx1YzZkNF8xMFx1YzZkNF8xMVx1YzZkNF8xMlx1YzZk''@;'; put 'put ''NCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1YzZkNF8yXHVjNmQ0XzNcdWM2ZDRfNFx1YzZkNF81XHVjNmQ0XzZcdWM2ZDRfN1x1YzZkNF84XHVjNmQ0XzlcdWM2ZDRfMTBcdWM2ZDRfMTFcdWM2ZDRfMTJcdWM2ZDQiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1Yzc3Y1x1YzY5NFx1Yzc3''@;'; put 'put ''Y19cdWM2ZDRcdWM2OTRcdWM3N2NfXHVkNjU0XHVjNjk0XHVjNzdjX1x1YzIxOFx1YzY5NFx1Yzc3Y19cdWJhYTlcdWM2OTRcdWM3N2NfXHVhZTA4XHVjNjk0XHVjNzdjX1x1ZDFhMFx1YzY5NFx1Yzc3YyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdWM3N2NfXHVjNmQ0X1x1ZDY1NF9c''@;'; put 'put ''dWMyMThfXHViYWE5X1x1YWUwOF9cdWQxYTAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1Yzc3Y19cdWM2ZDRfXHVkNjU0X1x1YzIxOF9cdWJhYTlfXHVhZTA4X1x1ZDFhMCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IllZWVku''@;'; put 'put ''TU0uREQuIixMTDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MiLExMTDoiWVlZWVx1YjE0NCBNTU1NIERcdWM3N2MgQSBoOm1tIixMTExMOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBkZGRkIEEgaDptbSIsbDoiWVlZWS5NTS5ERC4iLGxsOiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyIsbGxs''@;'; put 'put ''OiJZWVlZXHViMTQ0IE1NTU0gRFx1Yzc3YyBBIGg6bW0iLGxsbGw6IllZWVlcdWIxNDQgTU1NTSBEXHVjNzdjIGRkZGQgQSBoOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilx1YzYyNFx1YjI5OCBMVCIsbmV4dERheToiXHViMGI0XHVjNzdjIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERh''@;'; put 'put ''eToiXHVjNWI0XHVjODFjIExUIixsYXN0V2VlazoiXHVjOWMwXHViMDljXHVjOGZjIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1ZDZjNCIscGFzdDoiJXMgXHVjODA0IixzOiJcdWJhODcgXHVjZDA4IixzczoiJWRcdWNkMDgiLG06IjFcdWJkODQi''@;'; put 'put ''LG1tOiIlZFx1YmQ4NCIsaDoiXHVkNTVjIFx1YzJkY1x1YWMwNCIsaGg6IiVkXHVjMmRjXHVhYzA0IixkOiJcdWQ1NThcdWI4ZTgiLGRkOiIlZFx1Yzc3YyIsTToiXHVkNTVjIFx1YjJlYyIsTU06IiVkXHViMmVjIix5OiJcdWM3N2MgXHViMTQ0Iix5eToiJWRcdWIxNDQifSxkYXlPZk1vbnRo''@;'; put 'put ''T3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1Yzc3Y3xcdWM2ZDR8XHVjOGZjKS8sb3JkaW5hbDpmdW5jdGlvbihtLHNlKXtzd2l0Y2goc2Upe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIG0rIlx1Yzc3YyI7Y2FzZSJNIjpyZXR1cm4gbSsiXHVjNmQ0IjtjYXNlInciOmNhc2UiVyI6''@;'; put 'put ''cmV0dXJuIG0rIlx1YzhmYyI7ZGVmYXVsdDpyZXR1cm4gbX19LG1lcmlkaWVtUGFyc2U6L1x1YzYyNFx1YzgwNHxcdWM2MjRcdWQ2YzQvLGlzUE06ZnVuY3Rpb24obSl7cmV0dXJuIlx1YzYyNFx1ZDZjNCI9PT1tfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDEyPyJcdWM2''@;'; put 'put ''MjRcdWM4MDQiOiJcdWM2MjRcdWQ2YzQifX0pfShSKDk3NTg2KSl9LDYzNzQ0OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoTSxPLEksail7dmFyIEc9e3M6WyJceGU3ZW5kIHNhblx4ZWV5ZSIsIlx4ZTdlbmQgc2FuXHhlZXlleWFuIl0s''@;'; put 'put ''c3M6W00rIiBzYW5ceGVleWUiLE0rIiBzYW5ceGVleWV5YW4iXSxtOlsiZGVxXHhlZXFleWVrIiwiZGVxXHhlZXFleWVrXHhlYSJdLG1tOltNKyIgZGVxXHhlZXFlIixNKyIgZGVxXHhlZXFleWFuIl0saDpbInNhZXRlayIsInNhZXRla1x4ZWEiXSxoaDpbTSsiIHNhZXQiLE0rIiBzYWV0YW4i''@;'; put 'put ''XSxkOlsicm9qZWsiLCJyb2pla1x4ZWEiXSxkZDpbTSsiIHJvaiIsTSsiIHJvamFuIl0sdzpbImhlZnRleWVrIiwiaGVmdGV5ZWtceGVhIl0sd3c6W00rIiBoZWZ0ZSIsTSsiIGhlZnRleWFuIl0sTTpbIm1laGVrIiwibWVoZWtceGVhIl0sTU06W00rIiBtZWgiLE0rIiBtZWhhbiJdLHk6WyJz''@;'; put 'put ''YWxlayIsInNhbGVrXHhlYSJdLHl5OltNKyIgc2FsIixNKyIgc2FsYW4iXX07cmV0dXJuIE8/R1tJXVswXTpHW0ldWzFdfW9lLmRlZmluZUxvY2FsZSgia3Uta21yIix7bW9udGhzOiJSXHhlYWJlbmRhbl9TaWJhdF9BZGFyX05ceGVlc2FuX0d1bGFuX0hlelx4ZWVyYW5fVFx4ZWVybWVoX1Rl''@;'; put 'put ''YmF4X1x4Y2Vsb25fQ290bWVoX01pamRhcl9CZXJmYW5iYXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlJceGVhYl9TaWJfQWRhX05ceGVlc19HdWxfSGV6X1RceGVlcl9UZWJfXHhjZWxvX0NvdF9NaWpfQmVyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Illl''@;'; put 'put ''a1x1MDE1ZmVtX0R1XHUwMTVmZW1fU1x4ZWFcdTAxNWZlbV9ceGM3YXJcdTAxNWZlbV9QXHhlYW5jXHUwMTVmZW1fXHhjZW5fXHUwMTVlZW1ceGVlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Illla19EdV9TXHhlYV9ceGM3YXJfUFx4ZWFuX1x4Y2VuX1x1MDE1ZWVtIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzTWluOiJZZV9EdV9TXHhlYV9ceGM3YV9QXHhlYV9ceGNlbl9cdTAxNWVlIi5zcGxpdCgiXyIpLG1lcmlkaWVtOmZ1bmN0aW9uKE0sTyxJKXtyZXR1cm4gTTwxMj9JPyJibiI6IkJOIjpJPyJwbiI6IlBOIn0sbWVyaWRpZW1QYXJzZTovYm58Qk58cG58UE4vLGxvbmdEYXRlRm9y''@;'; put 'put ''bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEbyBNTU1NW2FdIFlZWVlbYW5dIixMTEw6IkRvIE1NTU1bYV0gWVlZWVthbl0gSEg6bW0iLExMTEw6ImRkZGQsIERvIE1NTU1bYV0gWVlZWVthbl0gSEg6bW0iLGxsOiJEbyBNTU1bLl0gWVlZWVthbl0i''@;'; put 'put ''LGxsbDoiRG8gTU1NWy5dIFlZWVlbYW5dIEhIOm1tIixsbGxsOiJkZGRbLl0sIERvIE1NTVsuXSBZWVlZW2FuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHhjZXJvIGRpIHNhZXRdIExUIFtkZV0iLG5leHREYXk6IltTaWJceGVhIGRpIHNhZXRdIExUIFtkZV0iLG5leHRXZWVrOiJk''@;'; put 'put ''ZGRkIFtkaSBzYWV0XSBMVCBbZGVdIixsYXN0RGF5OiJbRHVoIGRpIHNhZXRdIExUIFtkZV0iLGxhc3RXZWVrOiJkZGRkW2EgYm9yXHhlZSBkaSBzYWV0XSBMVCBbZGVdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkaSAlcyBkZSIscGFzdDoiYmVyXHhlZSAlcyIsczp4''@;'; put 'put ''LHNzOngsbTp4LG1tOngsaDp4LGhoOngsZDp4LGRkOngsdzp4LHd3OngsTTp4LE1NOngseTp4LHl5Onh9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oPzp5XHhlYXxceGVhfFwuKS8sb3JkaW5hbDpmdW5jdGlvbihNLE8pe3ZhciBJPU8udG9Mb3dlckNhc2UoKTtyZXR1cm4gSS5p''@;'; put 'put ''bmNsdWRlcygidyIpfHxJLmluY2x1ZGVzKCJtIik/TSsiLiI6TStmdW5jdGlvbiBtKE0pe3ZhciBPPShNPSIiK00pLnN1YnN0cmluZyhNLmxlbmd0aC0xKSxJPU0ubGVuZ3RoPjE/TS5zdWJzdHJpbmcoTS5sZW5ndGgtMik6IiI7cmV0dXJuIDEyPT1JfHwxMz09SXx8IjIiIT1PJiYiMyIhPU8m''@;'; put 'put ''JiI1MCIhPUkmJiI3MCIhPU8mJiI4MCIhPU8/Ilx4ZWEiOiJ5XHhlYSJ9KE0pfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw3MDExMTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD17MToiXHUwNjYxIiwyOiJcdTA2NjIiLDM6Ilx1''@;'; put 'put ''MDY2MyIsNDoiXHUwNjY0Iiw1OiJcdTA2NjUiLDY6Ilx1MDY2NiIsNzoiXHUwNjY3Iiw4OiJcdTA2NjgiLDk6Ilx1MDY2OSIsMDoiXHUwNjYwIn0sbT17Ilx1MDY2MSI6IjEiLCJcdTA2NjIiOiIyIiwiXHUwNjYzIjoiMyIsIlx1MDY2NCI6IjQiLCJcdTA2NjUiOiI1IiwiXHUwNjY2IjoiNiIs''@;'; put 'put ''Ilx1MDY2NyI6IjciLCJcdTA2NjgiOiI4IiwiXHUwNjY5IjoiOSIsIlx1MDY2MCI6IjAifSxzZT1bIlx1MDZhOVx1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2MmZcdTA2NDhcdTA2NDhcdTA2ZDVcdTA2NDUiLCJcdTA2MzRcdTA2NDhcdTA2MjhcdTA2MjdcdTA2MmEiLCJcdTA2''@;'; put 'put ''MjZcdTA2MjdcdTA2MzJcdTA2MjdcdTA2MzEiLCJcdTA2NDZcdTA2Y2NcdTA2MzNcdTA2MjdcdTA2NDYiLCJcdTA2MjZcdTA2MjdcdTA2Y2NcdTA2MjdcdTA2MzEiLCJcdTA2MmRcdTA2NDhcdTA2MzJcdTA2ZDVcdTA2Y2NcdTA2MzFcdTA2MjdcdTA2NDYiLCJcdTA2MmFcdTA2ZDVcdTA2NDVc''@;'; put 'put ''dTA2NDVcdTA2NDhcdTA2MzIiLCJcdTA2MjZcdTA2MjdcdTA2MjgiLCJcdTA2MjZcdTA2ZDVcdTA2Y2NcdTA2NDRcdTA2NDhcdTA2NDhcdTA2NDQiLCJcdTA2MmFcdTA2MzRcdTA2MzFcdTA2Y2NcdTA2NDZcdTA2Y2MgXHUwNmNjXHUwNmQ1XHUwNjQzXHUwNmQ1XHUwNjQ1IiwiXHUwNjJhXHUw''@;'; put 'put ''NjM0XHUwNjMxXHUwNmNjXHUwNjQ2XHUwNmNjIFx1MDYyZlx1MDY0OFx1MDY0OFx1MDZkNVx1MDY0NSIsIlx1MDY0M1x1MDYyN1x1MDY0Nlx1MDY0OFx1MDY0Nlx1MDZjYyBcdTA2Y2NcdTA2ZDVcdTA2YTlcdTA2ZDVcdTA2NDUiXTtvZS5kZWZpbmVMb2NhbGUoImt1Iix7bW9udGhzOnNlLG1v''@;'; put 'put ''bnRoc1Nob3J0OnNlLHdlZWtkYXlzOiJcdTA2Y2NcdTA2NDdcdTIwMGNcdTA2NDNcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjJmXHUwNjQ4XHUwNjQ4XHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjX1x1MDYzM1x1MDZjZVx1''@;'; put 'put ''MDYzNFx1MDY0N1x1MjAwY1x1MDY0NVx1MDY0NVx1MDY0N1x1MjAwY19cdTA2ODZcdTA2NDhcdTA2MjdcdTA2MzFcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGNfXHUwNjdlXHUwNmNlXHUwNjQ2XHUwNjJjXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUw''@;'; put 'put ''NjQ3XHUyMDBjX1x1MDY0N1x1MDY0N1x1MjAwY1x1MDZjY1x1MDY0Nlx1MDZjY19cdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVcdTA2NDVcdTA2NDdcdTIwMGMiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1''@;'; put 'put ''X1x1MDYyZlx1MDY0OFx1MDY0OFx1MDYzNFx1MDY0N1x1MjAwY1x1MDY0NV9cdTA2MzNcdTA2Y2VcdTA2MzRcdTA2NDdcdTIwMGNcdTA2NDVfXHUwNjg2XHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1X1x1MDY3ZVx1MDZjZVx1MDY0Nlx1MDYyY1x1MDYzNFx1MDY0''@;'; put 'put ''N1x1MjAwY1x1MDY0NV9cdTA2NDdcdTA2NDdcdTIwMGNcdTA2Y2NcdTA2NDZcdTA2Y2NfXHUwNjM0XHUwNjQ3XHUyMDBjXHUwNjQ1XHUwNjQ1XHUwNjQ3XHUyMDBjIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA2Y2NfXHUwNjJmX1x1MDYzM19cdTA2ODZfXHUwNjdlX1x1MDY0N19cdTA2''@;'; put 'put ''MzQiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0i''@;'; put 'put ''fSxtZXJpZGllbVBhcnNlOi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdcdTIwMGN8XHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjLyxpc1BNOmZ1bmN0aW9uKE8pe3JldHVybi9cdTA2MjZcdTA2Y2VcdTA2NDhcdTA2MjdcdTA2MzFcdTA2NDdc''@;'; put 'put ''dTIwMGMvLnRlc3QoTyl9LG1lcmlkaWVtOmZ1bmN0aW9uKE8sSSxqKXtyZXR1cm4gTzwxMj8iXHUwNjI4XHUwNjQ3XHUyMDBjXHUwNmNjXHUwNjI3XHUwNjQ2XHUwNmNjIjoiXHUwNjI2XHUwNmNlXHUwNjQ4XHUwNjI3XHUwNjMxXHUwNjQ3XHUyMDBjIn0sY2FsZW5kYXI6e3NhbWVEYXk6Iltc''@;'; put 'put ''dTA2MjZcdTA2NDdcdTIwMGNcdTA2NDVcdTA2MzFcdTA2YzYgXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsbmV4dERheToiW1x1MDYyOFx1MDY0N1x1MjAwY1x1MDZjY1x1MDYyN1x1MDY0Nlx1MDZjYyBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2''@;'; put 'put ''NDVcdTA2Y2VcdTA2MzFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsbGFzdERheToiW1x1MDYyZlx1MDY0OFx1MDZjZVx1MDY0Nlx1MDZjZSBcdTA2NDNcdTA2MjdcdTA2MmFcdTA2OThcdTA2NDVcdTA2Y2VcdTA2''@;'; put 'put ''MzFdIExUIixsYXN0V2VlazoiZGRkZCBbXHUwNjQzXHUwNjI3XHUwNjJhXHUwNjk4XHUwNjQ1XHUwNmNlXHUwNjMxXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHUwNjQ0XHUwNjQ3XHUyMDBjICVzIixwYXN0OiIlcyIsczoiXHUwNjg2XHUwNjQ3XHUyMDBjXHUw''@;'; put 'put ''NjQ2XHUwNjJmIFx1MDY4Nlx1MDYzMVx1MDY0M1x1MDY0N1x1MjAwY1x1MDZjY1x1MDY0N1x1MjAwY1x1MDY0MyIsc3M6Ilx1MDY4Nlx1MDYzMVx1MDY0M1x1MDY0N1x1MjAwYyAlZCIsbToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDYyZVx1MDY0OFx1MDY0NFx1MDY0N1x1MjAwY1x1''@;'; put 'put ''MDY0MyIsbW06IiVkIFx1MDYyZVx1MDY0OFx1MDY0NFx1MDY0N1x1MjAwY1x1MDY0MyIsaDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZjZVx1MDYzMSIsaGg6IiVkIFx1MDY0M1x1MDYyN1x1MDYyYVx1MDY5OFx1MDY0NVx1MDZj''@;'; put 'put ''ZVx1MDYzMSIsZDoiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDY5NVx1MDZjNlx1MDY5OCIsZGQ6IiVkIFx1MDY5NVx1MDZjNlx1MDY5OCIsTToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDY0NVx1MDYyN1x1MDY0Nlx1MDZhZiIsTU06IiVkIFx1MDY0NVx1MDYyN1x1MDY0Nlx1''@;'; put 'put ''MDZhZiIseToiXHUwNmNjXHUwNjQ3XHUyMDBjXHUwNjQzIFx1MDYzM1x1MDYyN1x1MDZiNSIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDZiNSJ9LHByZXBhcnNlOmZ1bmN0aW9uKE8pe3JldHVybiBPLnJlcGxhY2UoL1tcdTA2NjFcdTA2NjJcdTA2NjNcdTA2NjRcdTA2NjVcdTA2NjZcdTA2Njdc''@;'; put 'put ''dTA2NjhcdTA2NjlcdTA2NjBdL2csZnVuY3Rpb24oSSl7cmV0dXJuIG1bSV19KS5yZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE8pe3JldHVybiBPLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oSSl7cmV0dXJuIHhbSV19KS5yZXBsYWNlKC8sL2csIlx1MDYwYyIp''@;'; put 'put ''fSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFIoOTc1ODYpKX0sOTkxODc6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezA6Ii1cdTA0NDdcdTA0YWYiLDE6Ii1cdTA0NDdcdTA0MzgiLDI6Ii1cdTA0NDdcdTA0MzgiLDM6Ii1cdTA0NDdcdTA0YWYi''@;'; put 'put ''LDQ6Ii1cdTA0NDdcdTA0YWYiLDU6Ii1cdTA0NDdcdTA0MzgiLDY6Ii1cdTA0NDdcdTA0NGIiLDc6Ii1cdTA0NDdcdTA0MzgiLDg6Ii1cdTA0NDdcdTA0MzgiLDk6Ii1cdTA0NDdcdTA0NDMiLDEwOiItXHUwNDQ3XHUwNDQzIiwyMDoiLVx1MDQ0N1x1MDQ0YiIsMzA6Ii1cdTA0NDdcdTA0NDMi''@;'; put 'put ''LDQwOiItXHUwNDQ3XHUwNDRiIiw1MDoiLVx1MDQ0N1x1MDRhZiIsNjA6Ii1cdTA0NDdcdTA0NGIiLDcwOiItXHUwNDQ3XHUwNDM4Iiw4MDoiLVx1MDQ0N1x1MDQzOCIsOTA6Ii1cdTA0NDdcdTA0NDMiLDEwMDoiLVx1MDQ0N1x1MDRhZiJ9O29lLmRlZmluZUxvY2FsZSgia3kiLHttb250aHM6''@;'; put 'put ''Ilx1MDQ0Zlx1MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFx1MDQ0Y19cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JcdTA0NGNfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYlx1MDQ0Y19cdTA0M2NcdTA0MzBcdTA0MzlfXHUw''@;'; put 'put ''NDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1''@;'; put 'put ''MDQ0MFx1MDQ0Y19cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwXHUwNDRjIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NGZcdTA0M2RcdTA0MzJfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQz''@;'; put 'put ''MFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0Y19cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGNfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZF9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNk''@;'; put 'put ''XHUwNDNlXHUwNDRmX1x1MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDE2XHUwNDM1XHUwNDNhXHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQxNFx1MDRhZlx1MDQzOVx1MDQ0OFx1MDRlOVx1MDQzY1x1MDQzMVx1MDRhZl9cdTA0MjhcdTA0MzVc''@;'; put 'put ''dTA0MzlcdTA0NDhcdTA0MzVcdTA0M2NcdTA0MzFcdTA0MzhfXHUwNDI4XHUwNDMwXHUwNDQwXHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4X1x1MDQxMVx1MDQzNVx1MDQzOVx1MDQ0OFx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzOF9cdTA0MTZcdTA0NDNcdTA0M2NcdTA0MzBfXHUwNDE4''@;'; put 'put ''XHUwNDQ4XHUwNDM1XHUwNDNjXHUwNDMxXHUwNDM4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQxNlx1MDQzNVx1MDQzYV9cdTA0MTRcdTA0YWZcdTA0MzlfXHUwNDI4XHUwNDM1XHUwNDM5X1x1MDQyOFx1MDQzMFx1MDQ0MF9cdTA0MTFcdTA0MzVcdTA0MzlfXHUwNDE2XHUwNDQz''@;'; put 'put ''XHUwNDNjX1x1MDQxOFx1MDQ0OFx1MDQzNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDE2XHUwNDNhX1x1MDQxNFx1MDQzOV9cdTA0MjhcdTA0MzlfXHUwNDI4XHUwNDQwX1x1MDQxMVx1MDQzOV9cdTA0MTZcdTA0M2NfXHUwNDE4XHUwNDQ4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9y''@;'; put 'put ''bWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQxMVx1MDRhZlx1MDQzM1x1MDRhZlx1''@;'; put 'put ''MDQzZCBcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExUIixuZXh0RGF5OiJbXHUwNDJkXHUwNDQwXHUwNDQyXHUwNDM1XHUwNGEzIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDJdIExUIixsYXN0RGF5OiJbXHUw''@;'; put 'put ''NDFhXHUwNDM1XHUwNDQ3XHUwNDRkXHUwNDRkIFx1MDQ0MVx1MDQzMFx1MDQzMFx1MDQ0Ml0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDQyXHUwNDNhXHUwNGU5XHUwNDNkIFx1MDQzMFx1MDQzZlx1MDQ0Mlx1MDQzMFx1MDQzZFx1MDQ0Ylx1MDQzZF0gZGRkZCBbXHUwNDNhXHUwNGFmXHUw''@;'; put 'put ''NDNkXHUwNGFmXSBbXHUwNDQxXHUwNDMwXHUwNDMwXHUwNDQyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNDM4XHUwNDQ3XHUwNDM4XHUwNDNkXHUwNDM0XHUwNDM1IixwYXN0OiIlcyBcdTA0M2NcdTA0NDNcdTA0NDBcdTA0NDNcdTA0M2QiLHM6Ilx1''@;'; put 'put ''MDQzMVx1MDQzOFx1MDQ0MFx1MDQzZFx1MDQzNVx1MDQ0N1x1MDQzNSBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLHNzOiIlZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzQiLG06Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0M2NcdTA0YWZcdTA0M2Rc''@;'; put 'put ''dTA0ZTlcdTA0NDIiLG1tOiIlZCBcdTA0M2NcdTA0YWZcdTA0M2RcdTA0ZTlcdTA0NDIiLGg6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0MzBcdTA0MzBcdTA0NDIiLGQ6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0M2FcdTA0''@;'; put 'put ''YWZcdTA0M2QiLGRkOiIlZCBcdTA0M2FcdTA0YWZcdTA0M2QiLE06Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0MzBcdTA0MzkiLE1NOiIlZCBcdTA0MzBcdTA0MzkiLHk6Ilx1MDQzMVx1MDQzOFx1MDQ0MCBcdTA0MzZcdTA0NGJcdTA0M2IiLHl5OiIlZCBcdTA0MzZcdTA0NGJcdTA0M2IifSxk''@;'; put 'put ''YXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0NDdcdTA0Mzh8XHUwNDQ3XHUwNDRifFx1MDQ0N1x1MDRhZnxcdTA0NDdcdTA0NDMpLyxvcmRpbmFsOmZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UrKHhbc2VdfHx4W3NlJTEwXXx8eFtzZT49MTAwPzEwMDpudWxsXSl9LHdlZWs6e2Rv''@;'; put 'put ''dzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDM1OTY5OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoSSxqLEcsRCl7dmFyIFQ9e206WyJlbmcgTWludXR0IiwiZW5nZXIgTWludXR0Il0saDpbImVuZyBTdG9ubiIsImVuZ2VyIFN0b25uIl0s''@;'; put 'put ''ZDpbImVlbiBEYWciLCJlbmdlbSBEYWciXSxNOlsiZWUgTW91bnQiLCJlbmdlbSBNb3VudCJdLHk6WyJlZSBKb2VyIiwiZW5nZW0gSm9lciJdfTtyZXR1cm4gaj9UW0ddWzBdOlRbR11bMV19ZnVuY3Rpb24gTShJKXtpZihJPXBhcnNlSW50KEksMTApLGlzTmFOKEkpKXJldHVybiExO2lmKEk8''@;'; put 'put ''MClyZXR1cm4hMDtpZihJPDEwKXJldHVybiA0PD1JJiZJPD03O2lmKEk8MTAwKXt2YXIgaj1JJTEwO3JldHVybiBNKDA9PT1qP0kvMTA6ail9aWYoSTwxZTQpe2Zvcig7ST49MTA7KUkvPTEwO3JldHVybiBNKEkpfXJldHVybiBNKEkvPTFlMyl9b2UuZGVmaW5lTG9jYWxlKCJsYiIse21vbnRo''@;'; put 'put ''czoiSmFudWFyX0ZlYnJ1YXJfTVx4ZTRlcnpfQWJyXHhlYmxsX01lZV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5f''@;'; put 'put ''T2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubmRlZ19NXHhlOWluZGVnX0RceGVibnNjaGRlZ19NXHhlYnR0d29jaF9Eb25uZXNjaGRlZ19GcmVpZGVnX1NhbXNjaGRlZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTVx4''@;'; put 'put ''ZTkuX0RceGViLl9NXHhlYi5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01ceGU5X0RceGViX01ceGViX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0gW0F1ZXJdIixMVFM6Ikg6bW06c3Mg''@;'; put 'put ''W0F1ZXJdIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXV0IHVtXSBMVCIsc2FtZUVsc2U6IkwiLG5leHREYXk6''@;'; put 'put ''IltNdWVyIHVtXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCIsbGFzdERheToiW0dceGVic2NodGVyIHVtXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQiO2RlZmF1bHQ6cmV0''@;'; put 'put ''dXJuIltMZXNjaHRlXSBkZGRkIFt1bV0gTFQifX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIG0oSSl7cmV0dXJuIE0oSS5zdWJzdHIoMCxJLmluZGV4T2YoIiAiKSkpPyJhICIrSToiYW4gIitJfSxwYXN0OmZ1bmN0aW9uIHNlKEkpe3JldHVybiBNKEkuc3Vic3RyKDAsSS5pbmRl''@;'; put 'put ''eE9mKCIgIikpKT8idmlydSAiK0k6InZpcnVuICIrSX0sczoiZSBwdWVyIFNla29ubmVuIixzczoiJWQgU2Vrb25uZW4iLG06eCxtbToiJWQgTWludXR0ZW4iLGg6eCxoaDoiJWQgU3Rvbm5lbiIsZDp4LGRkOiIlZCBEZWVnIixNOngsTU06IiVkIE1ceGU5aW50Iix5OngseXk6IiVkIEpvZXIi''@;'; put 'put ''fSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMzM1MjY6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJsbyIse21vbnRoczoi''@;'; put 'put ''XHUwZWExXHUwZWIxXHUwZTg3XHUwZTgxXHUwZWFkXHUwZTk5X1x1MGU4MVx1MGViOFx1MGVhMVx1MGU5ZVx1MGViMl9cdTBlYTFcdTBlYjVcdTBlOTlcdTBlYjJfXHUwZWMwXHUwZWExXHUwZWFhXHUwZWIyX1x1MGU5ZVx1MGViNlx1MGU5NFx1MGVhYVx1MGViMFx1MGU5ZVx1MGViMl9cdTBl''@;'; put 'put ''YTFcdTBlYjRcdTBlOTZcdTBlYjhcdTBlOTlcdTBlYjJfXHUwZTgxXHUwZWNkXHUwZWE1XHUwZWIwXHUwZTgxXHUwZWJiXHUwZTk0X1x1MGVhYVx1MGViNFx1MGU4N1x1MGVhYlx1MGViMl9cdTBlODFcdTBlYjFcdTBlOTlcdTBlOGRcdTBlYjJfXHUwZTk1XHUwZWI4XHUwZWE1XHUwZWIyX1x1''@;'; put 'put ''MGU5ZVx1MGViMFx1MGU4OFx1MGViNFx1MGU4MV9cdTBlOTdcdTBlYjFcdTBlOTlcdTBlYTdcdTBlYjIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGVhMVx1MGViMVx1MGU4N1x1MGU4MVx1MGVhZFx1MGU5OV9cdTBlODFcdTBlYjhcdTBlYTFcdTBlOWVcdTBlYjJfXHUwZWExXHUwZWI1''@;'; put 'put ''XHUwZTk5XHUwZWIyX1x1MGVjMFx1MGVhMVx1MGVhYVx1MGViMl9cdTBlOWVcdTBlYjZcdTBlOTRcdTBlYWFcdTBlYjBcdTBlOWVcdTBlYjJfXHUwZWExXHUwZWI0XHUwZTk2XHUwZWI4XHUwZTk5XHUwZWIyX1x1MGU4MVx1MGVjZFx1MGVhNVx1MGViMFx1MGU4MVx1MGViYlx1MGU5NF9cdTBl''@;'; put 'put ''YWFcdTBlYjRcdTBlODdcdTBlYWJcdTBlYjJfXHUwZTgxXHUwZWIxXHUwZTk5XHUwZThkXHUwZWIyX1x1MGU5NVx1MGViOFx1MGVhNVx1MGViMl9cdTBlOWVcdTBlYjBcdTBlODhcdTBlYjRcdTBlODFfXHUwZTk3XHUwZWIxXHUwZTk5XHUwZWE3XHUwZWIyIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''OiJcdTBlYWRcdTBlYjJcdTBlOTdcdTBlYjRcdTBlOTRfXHUwZTg4XHUwZWIxXHUwZTk5X1x1MGVhZFx1MGViMVx1MGU4N1x1MGU4NFx1MGViMlx1MGU5OV9cdTBlOWVcdTBlYjhcdTBlOTRfXHUwZTllXHUwZWIwXHUwZWFiXHUwZWIxXHUwZTk0X1x1MGVhYVx1MGViOFx1MGU4MV9cdTBlYzBc''@;'; put 'put ''dTBlYWFcdTBlYmJcdTBlYjIiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZTk3XHUwZWI0XHUwZTk0X1x1MGU4OFx1MGViMVx1MGU5OV9cdTBlYWRcdTBlYjFcdTBlODdcdTBlODRcdTBlYjJcdTBlOTlfXHUwZTllXHUwZWI4XHUwZTk0X1x1MGU5ZVx1MGViMFx1MGVhYlx1MGViMVx1''@;'; put 'put ''MGU5NF9cdTBlYWFcdTBlYjhcdTBlODFfXHUwZWMwXHUwZWFhXHUwZWJiXHUwZWIyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBlOTdfXHUwZTg4X1x1MGVhZFx1MGU4NF9cdTBlOWVfXHUwZTllXHUwZWFiX1x1MGVhYVx1MGU4MV9cdTBlYWEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJz''@;'; put 'put ''ZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiXHUwZWE3XHUwZWIxXHUwZTk5ZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVt''@;'; put 'put ''UGFyc2U6L1x1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMFx1MGU4YVx1MGViYlx1MGVjOVx1MGViMnxcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzFcdTBlYTVcdTBlODcvLGlzUE06ZnVuY3Rpb24obSl7cmV0dXJuIlx1MGU5NVx1MGVhZFx1MGU5OVx1MGVjMVx1MGVhNVx1MGU4NyI9PT1tfSxtZXJp''@;'; put 'put ''ZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDEyPyJcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzBcdTBlOGFcdTBlYmJcdTBlYzlcdTBlYjIiOiJcdTBlOTVcdTBlYWRcdTBlOTlcdTBlYzFcdTBlYTVcdTBlODcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGVhMVx1MGViN1x1MGVjOVx1''@;'; put 'put ''MGU5OVx1MGViNVx1MGVjOVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLG5leHREYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlYWRcdTBlYjdcdTBlYzhcdTBlOTlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixuZXh0V2VlazoiW1x1MGVhN1x1MGViMVx1MGU5OV1kZGRkW1x1''@;'; put 'put ''MGVkY1x1MGVjOVx1MGViMlx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLGxhc3REYXk6IltcdTBlYTFcdTBlYjdcdTBlYzlcdTBlYTdcdTBlYjJcdTBlOTlcdTBlOTlcdTBlYjVcdTBlYzlcdTBlYzBcdTBlYTdcdTBlYTVcdTBlYjJdIExUIixsYXN0V2VlazoiW1x1MGVhN1x1MGViMVx1''@;'; put 'put ''MGU5OV1kZGRkW1x1MGVjMVx1MGVhNVx1MGVjOVx1MGVhN1x1MGU5OVx1MGViNVx1MGVjOVx1MGVjMFx1MGVhN1x1MGVhNVx1MGViMl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MGVhZFx1MGViNVx1MGU4MSAlcyIscGFzdDoiJXNcdTBlOWNcdTBlYzhcdTBl''@;'; put 'put ''YjJcdTBlOTlcdTBlYTFcdTBlYjIiLHM6Ilx1MGU5YVx1MGVjZFx1MGVjOFx1MGVjMFx1MGU5N1x1MGViYlx1MGVjOFx1MGViMlx1MGVjM1x1MGU5NFx1MGVhN1x1MGViNFx1MGU5OVx1MGViMlx1MGU5N1x1MGViNSIsc3M6IiVkIFx1MGVhN1x1MGViNFx1MGU5OVx1MGViMlx1MGU5N1x1MGVi''@;'; put 'put ''NSIsbToiMSBcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLG1tOiIlZCBcdTBlOTlcdTBlYjJcdTBlOTdcdTBlYjUiLGg6IjEgXHUwZThhXHUwZWJiXHUwZWM4XHUwZWE3XHUwZWMyXHUwZWExXHUwZTg3IixoaDoiJWQgXHUwZThhXHUwZWJiXHUwZWM4XHUwZWE3XHUwZWMyXHUwZWExXHUwZTg3''@;'; put 'put ''IixkOiIxIFx1MGVhMVx1MGViN1x1MGVjOSIsZGQ6IiVkIFx1MGVhMVx1MGViN1x1MGVjOSIsTToiMSBcdTBlYzBcdTBlOTRcdTBlYjdcdTBlYWRcdTBlOTkiLE1NOiIlZCBcdTBlYzBcdTBlOTRcdTBlYjdcdTBlYWRcdTBlOTkiLHk6IjEgXHUwZTliXHUwZWI1Iix5eToiJWQgXHUwZTliXHUw''@;'; put 'put ''ZWI1In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovKFx1MGU5N1x1MGViNVx1MGVjOClcZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3JldHVybiJcdTBlOTdcdTBlYjVcdTBlYzgiK219fSl9KFIoOTc1ODYpKX0sOTA0MTE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIHg9e3NzOiJzZWt1bmRcdTAxMTdfc2VrdW5kXHUwMTdlaVx1MDE3M19zZWt1bmRlcyIsbToibWludXRcdTAxMTdfbWludXRcdTAxMTdzX21pbnV0XHUwMTE5IixtbToibWludXRcdTAxMTdzX21pbnVcdTAxMGRpXHUwMTczX21pbnV0ZXMiLGg6InZhbGFuZGFfdmFsYW5k''@;'; put 'put ''b3NfdmFsYW5kXHUwMTA1IixoaDoidmFsYW5kb3NfdmFsYW5kXHUwMTczX3ZhbGFuZGFzIixkOiJkaWVuYV9kaWVub3NfZGllblx1MDEwNSIsZGQ6ImRpZW5vc19kaWVuXHUwMTczX2RpZW5hcyIsTToibVx1MDExN251b19tXHUwMTE3bmVzaW9fbVx1MDExN25lc1x1MDEyZiIsTU06Im1cdTAx''@;'; put 'put ''MTduZXNpYWlfbVx1MDExN25lc2lcdTAxNzNfbVx1MDExN25lc2l1cyIseToibWV0YWlfbWV0XHUwMTczX21ldHVzIix5eToibWV0YWlfbWV0XHUwMTczX21ldHVzIn07ZnVuY3Rpb24gc2UoRyxELFQsRSl7cmV0dXJuIEQ/TyhUKVswXTpFP08oVClbMV06TyhUKVsyXX1mdW5jdGlvbiBNKEcp''@;'; put 'put ''e3JldHVybiBHJTEwPT0wfHxHPjEwJiZHPDIwfWZ1bmN0aW9uIE8oRyl7cmV0dXJuIHhbR10uc3BsaXQoIl8iKX1mdW5jdGlvbiBJKEcsRCxULEUpe3ZhciB6PUcrIiAiO3JldHVybiAxPT09Rz96K3NlKDAsRCxUWzBdLEUpOkQ/eisoTShHKT9PKFQpWzFdOk8oVClbMF0pOkU/eitPKFQpWzFd''@;'; put 'put ''OnorKE0oRyk/TyhUKVsxXTpPKFQpWzJdKX1vZS5kZWZpbmVMb2NhbGUoImx0Iix7bW9udGhzOntmb3JtYXQ6InNhdXNpb192YXNhcmlvX2tvdm9fYmFsYW5kXHUwMTdlaW9fZ2VndVx1MDE3ZVx1MDExN3NfYmlyXHUwMTdlZWxpb19saWVwb3NfcnVncGpcdTAxNmJcdTAxMGRpb19ydWdzXHUw''@;'; put 'put ''MTE3am9fc3BhbGlvX2xhcGtyaVx1MDEwZGlvX2dydW9kXHUwMTdlaW8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2F1c2lzX3Zhc2FyaXNfa292YXNfYmFsYW5kaXNfZ2VndVx1MDE3ZVx1MDExN19iaXJcdTAxN2VlbGlzX2xpZXBhX3J1Z3BqXHUwMTZidGlzX3J1Z3NcdTAxMTdqaXNfc3Bh''@;'; put 'put ''bGlzX2xhcGtyaXRpc19ncnVvZGlzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9EW29EXT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NP3xNTU1NPyhcW1teXFtcXV0qXF18XHMpK0Rbb0RdPy99LG1vbnRoc1Nob3J0OiJzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dy''@;'; put 'put ''ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5czp7Zm9ybWF0OiJzZWttYWRpZW5cdTAxMmZfcGlybWFkaWVuXHUwMTJmX2FudHJhZGllblx1MDEyZl90cmVcdTAxMGRpYWRpZW5cdTAxMmZfa2V0dmlydGFkaWVuXHUwMTJmX3Blbmt0YWRpZW5cdTAxMmZfXHUwMTYxZVx1MDE2MXRhZGllblx1MDEyZiIu''@;'; put 'put ''c3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmVcdTAxMGRpYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfXHUwMTYxZVx1MDE2MXRhZGllbmlzIi5zcGxpdCgiXyIpLGlzRm9ybWF0Oi9kZGRkIEhIOm1tL30sd2Vl''@;'; put 'put ''a2RheXNTaG9ydDoiU2VrX1Bpcl9BbnRfVHJlX0tldF9QZW5fXHUwMTYwZVx1MDE2MSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU19QX0FfVF9LX1BuX1x1MDE2MCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt''@;'; put 'put ''bTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXSIsTExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0iLGw6IllZWVktTU0tREQiLGxsOiJZWVlZIFtt''@;'; put 'put ''Ll0gTU1NTSBEIFtkLl0iLGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0iLGxsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBISDptbSBbdmFsLl0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDE2MGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExU''@;'; put 'put ''IixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmFcdTAxMTdqdXNcdTAxMmZdIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBvICVzIixwYXN0OiJwcmllXHUwMTYxICVzIixzOmZ1bmN0aW9uIG0oRyxELFQs''@;'; put 'put ''RSl7cmV0dXJuIEQ/ImtlbGlvcyBzZWt1bmRcdTAxMTdzIjpFPyJrZWxpXHUwMTczIHNla3VuZFx1MDE3ZWlcdTAxNzMiOiJrZWxpYXMgc2VrdW5kZXMifSxzczpJLG06c2UsbW06SSxoOnNlLGhoOkksZDpzZSxkZDpJLE06c2UsTU06SSx5OnNlLHl5Okl9LGRheU9mTW9udGhPcmRpbmFsUGFy''@;'; put 'put ''c2U6L1xkezEsMn0tb2ppLyxvcmRpbmFsOmZ1bmN0aW9uKEcpe3JldHVybiBHKyItb2ppIn0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMzI2MjE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9e3NzOiJzZWt1bmRlc19zZWt1bmRc''@;'; put 'put ''dTAxMTNtX3Nla3VuZGVfc2VrdW5kZXMiLnNwbGl0KCJfIiksbToibWluXHUwMTZidGVzX21pblx1MDE2YnRcdTAxMTNtX21pblx1MDE2YnRlX21pblx1MDE2YnRlcyIuc3BsaXQoIl8iKSxtbToibWluXHUwMTZidGVzX21pblx1MDE2YnRcdTAxMTNtX21pblx1MDE2YnRlX21pblx1MDE2YnRl''@;'; put 'put ''cyIuc3BsaXQoIl8iKSxoOiJzdHVuZGFzX3N0dW5kXHUwMTAxbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxoaDoic3R1bmRhc19zdHVuZFx1MDEwMW1fc3R1bmRhX3N0dW5kYXMiLnNwbGl0KCJfIiksZDoiZGllbmFzX2RpZW5cdTAxMDFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxk''@;'; put 'put ''ZDoiZGllbmFzX2RpZW5cdTAxMDFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxNOiJtXHUwMTEzbmVcdTAxNjFhX21cdTAxMTNuZVx1MDE2MWllbV9tXHUwMTEzbmVzaXNfbVx1MDExM25lXHUwMTYxaSIuc3BsaXQoIl8iKSxNTToibVx1MDExM25lXHUwMTYxYV9tXHUwMTEzbmVcdTAxNjFp''@;'; put 'put ''ZW1fbVx1MDExM25lc2lzX21cdTAxMTNuZVx1MDE2MWkiLnNwbGl0KCJfIikseToiZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpIi5zcGxpdCgiXyIpLHl5OiJnYWRhX2dhZGllbV9nYWRzX2dhZGkiLnNwbGl0KCJfIil9O2Z1bmN0aW9uIG0oaixHLEQpe3JldHVybiBEP0clMTA9PTEmJkclMTAwIT0x''@;'; put 'put ''MT9qWzJdOmpbM106RyUxMD09MSYmRyUxMDAhPTExP2pbMF06alsxXX1mdW5jdGlvbiBzZShqLEcsRCl7cmV0dXJuIGorIiAiK20oeFtEXSxqLEcpfWZ1bmN0aW9uIE0oaixHLEQpe3JldHVybiBtKHhbRF0saixHKX1vZS5kZWZpbmVMb2NhbGUoImx2Iix7bW9udGhzOiJqYW52XHUwMTAxcmlz''@;'; put 'put ''X2ZlYnJ1XHUwMTAxcmlzX21hcnRzX2Fwclx1MDEyYmxpc19tYWlqc19qXHUwMTZibmlqc19qXHUwMTZibGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qXHUwMTZi''@;'; put 'put ''bl9qXHUwMTZibF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdlx1MDExM3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlXHUwMTYxZGllbmFfY2V0dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGllbmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3Zf''@;'; put 'put ''UF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkuIixMTDoiWVlZWS4gW2dhZGFdIEQu''@;'; put 'put ''IE1NTU0iLExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIEhIOm1tIixMTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDE2MG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1JcdTAxMmJ0IHB1bGtzdGVuXSBMVCIsbmV4''@;'; put 'put ''dFdlZWs6ImRkZGQgW3B1bGtzdGVuXSBMVCIsbGFzdERheToiW1Zha2FyIHB1bGtzdGVuXSBMVCIsbGFzdFdlZWs6IltQYWdcdTAxMDFqdVx1MDE2MVx1MDEwMV0gZGRkZCBbcHVsa3N0ZW5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwXHUwMTEzYyAlcyIscGFz''@;'; put 'put ''dDoicGlybXMgJXMiLHM6ZnVuY3Rpb24gTyhqLEcpe3JldHVybiBHPyJkYVx1MDE3ZWFzIHNla3VuZGVzIjoiZGFcdTAxN2VcdTAxMDFtIHNla3VuZFx1MDExM20ifSxzczpzZSxtOk0sbW06c2UsaDpNLGhoOnNlLGQ6TSxkZDpzZSxNLE1NOnNlLHk6TSx5eTpzZX0sZGF5T2ZNb250aE9yZGlu''@;'; put 'put ''YWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDg1ODY5OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXt3b3Jkczp7c3M6WyJzZWt1bmQiLCJzZWt1bmRhIiwic2VrdW5kaSJd''@;'; put 'put ''LG06WyJqZWRhbiBtaW51dCIsImplZG5vZyBtaW51dGEiXSxtbTpbIm1pbnV0IiwibWludXRhIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNTTpbIm1qZXNlYyIsIm1qZXNl''@;'; put 'put ''Y2EiLCJtamVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihzZSxNKXtyZXR1cm4gMT09PXNlP01bMF06c2U+PTImJnNlPD00P01bMV06TVsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHNlLE0sTyl7dmFyIEk9eC53''@;'; put 'put ''b3Jkc1tPXTtyZXR1cm4gMT09PU8ubGVuZ3RoP00/SVswXTpJWzFdOnNlKyIgIit4LmNvcnJlY3RHcmFtbWF0aWNhbENhc2Uoc2UsSSl9fTtvZS5kZWZpbmVMb2NhbGUoIm1lIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJf''@;'; put 'put ''b2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRq''@;'; put 'put ''ZWxqYWtfdXRvcmFrX3NyaWplZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl9cdTAxMGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3BlX3N1''@;'; put 'put ''Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxj''@;'; put 'put ''YWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc2p1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBM''@;'; put 'put ''VCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanVcdTAxMGRlIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVyblsiW3Byb1x1MDE2MWxlXSBbbmVk''@;'; put 'put ''amVsamVdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3V0b3JrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3JpamVkZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW1x1MDEwZGV0dnJ0a2FdIFt1XSBMVCIsIltwcm9c''@;'; put 'put ''dTAxNjFsb2ddIFtwZXRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxlXSBbc3Vib3RlXSBbdV0gTFQiXVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJuZWtvbGlrbyBzZWt1bmRpIixzczp4LnRyYW5zbGF0''@;'; put 'put ''ZSxtOngudHJhbnNsYXRlLG1tOngudHJhbnNsYXRlLGg6eC50cmFuc2xhdGUsaGg6eC50cmFuc2xhdGUsZDoiZGFuIixkZDp4LnRyYW5zbGF0ZSxNOiJtamVzZWMiLE1NOngudHJhbnNsYXRlLHk6ImdvZGludSIseXk6eC50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEs''@;'; put 'put ''Mn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSwzNTg4MTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoIm1pIix7bW9udGhzOiJLb2hpLXRcdTAxMDF0ZV9IdWktdGFuZ3VydV9Qb3V0''@;'; put 'put ''XHUwMTZiLXRlLXJhbmdpX1BhZW5nYS13aFx1MDEwMXdoXHUwMTAxX0hhcmF0dWFfUGlwaXJpX0hcdTAxNGRuZ29pbmdvaV9IZXJlLXR1cmkta1x1MDE0ZGtcdTAxMDFfTWFodXJ1X1doaXJpbmdhLVx1MDEwMS1udWt1X1doaXJpbmdhLVx1MDEwMS1yYW5naV9IYWtpaGVhIi5zcGxpdCgiXyIp''@;'; put 'put ''LG1vbnRoc1Nob3J0OiJLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IXHUwMTRkbmdvaV9IZXJlX01haHVfV2hpLW51X1doaS1yYV9IYWtpIi5zcGxpdCgiXyIpLG1vbnRoc1JlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksbW9udGhzU3RyaWN0UmVnZXg6''@;'; put 'put ''Lyg/OlsnYS16XHUwMTAxXHUwMTREXHUwMTZCXStcLT8pezEsM30vaSxtb250aHNTaG9ydFJlZ2V4Oi8oPzpbJ2Etelx1MDEwMVx1MDE0RFx1MDE2Ql0rXC0/KXsxLDN9L2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovKD86WydhLXpcdTAxMDFcdTAxNERcdTAxNkJdK1wtPyl7MSwyfS9pLHdl''@;'; put 'put ''ZWtkYXlzOiJSXHUwMTAxdGFwdV9NYW5lX1RcdTAxNmJyZWlfV2VuZXJlaV9UXHUwMTAxaXRlX1BhcmFpcmVfSFx1MDEwMXRhcmVpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlRhX01hX1RcdTAxNmJfV2VfVFx1MDEwMWlfUGFfSFx1MDEwMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi''@;'; put 'put ''VGFfTWFfVFx1MDE2Yl9XZV9UXHUwMTAxaV9QYV9IXHUwMTAxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbaV0gSEg6bW0iLExMTEw6ImRkZGQsIEQg''@;'; put 'put ''TU1NTSBZWVlZIFtpXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSB0ZWllIG1haGFuYSwgaV0gTFQiLG5leHREYXk6IlthcG9wbyBpXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2ldIExUIixsYXN0RGF5OiJbaW5hbmFoaSBpXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3doYWthbXV0dW5nYSBp''@;'; put 'put ''XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaSByb3RvIGkgJXMiLHBhc3Q6IiVzIGkgbXVhIixzOiJ0ZSBoXHUwMTEza29uYSBydWFydWEiLHNzOiIlZCBoXHUwMTEza29uYSIsbToiaGUgbWVuZXRpIixtbToiJWQgbWVuZXRpIixoOiJ0ZSBoYW9yYSIsaGg6IiVk''@;'; put 'put ''IGhhb3JhIixkOiJoZSByYSIsZGQ6IiVkIHJhIixNOiJoZSBtYXJhbWEiLE1NOiIlZCBtYXJhbWEiLHk6ImhlIHRhdSIseXk6IiVkIHRhdSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2''@;'; put 'put ''KSl9LDkyMzkxOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgibWsiLHttb250aHM6Ilx1MDQ1OFx1MDQzMFx1MDQzZFx1MDQ0M1x1MDQzMFx1MDQ0MFx1MDQzOF9cdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0NDNcdTA0MzBc''@;'; put 'put ''dTA0NDBcdTA0MzhfXHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyX1x1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzOFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkXHUwNDM4X1x1MDQ1OFx1MDQ0M1x1MDQzYlx1MDQzOF9cdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0''@;'; put 'put ''NDFcdTA0NDJfXHUwNDQxXHUwNDM1XHUwNDNmXHUwNDQyXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4X1x1MDQzZVx1MDQzYVx1MDQ0Mlx1MDQzZVx1MDQzY1x1MDQzMlx1MDQ0MFx1MDQzOF9cdTA0M2RcdTA0M2VcdTA0MzVcdTA0M2NcdTA0MzJcdTA0NDBcdTA0MzhfXHUwNDM0XHUw''@;'; put 'put ''NDM1XHUwNDNhXHUwNDM1XHUwNDNjXHUwNDMyXHUwNDQwXHUwNDM4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTA0NThcdTA0MzBcdTA0M2RfXHUwNDQ0XHUwNDM1XHUwNDMyX1x1MDQzY1x1MDQzMFx1MDQ0MF9cdTA0MzBcdTA0M2ZcdTA0NDBfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1''@;'; put 'put ''OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzX1x1MDQ0MVx1MDQzNVx1MDQzZl9cdTA0M2VcdTA0M2FcdTA0NDJfXHUwNDNkXHUwNDNlXHUwNDM1X1x1MDQzNFx1MDQzNVx1MDQzYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUwNDNkXHUwNDM1XHUw''@;'; put 'put ''NDM0XHUwNDM1XHUwNDNiXHUwNDMwX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2RcdTA0MzhcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1''@;'; put 'put ''MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzZVx1MDQzYV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDMwXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNVx1MDQzNF9cdTA0M2ZcdTA0''@;'; put 'put ''M2VcdTA0M2RfXHUwNDMyXHUwNDQyXHUwNDNlX1x1MDQ0MVx1MDQ0MFx1MDQzNV9cdTA0NDdcdTA0MzVcdTA0NDJfXHUwNDNmXHUwNDM1XHUwNDQyX1x1MDQ0MVx1MDQzMFx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkZV9cdTA0M2ZvX1x1MDQzMlx1MDQ0Ml9cdTA0NDFc''@;'; put 'put ''dTA0NDBfXHUwNDQ3XHUwNDM1X1x1MDQzZlx1MDQzNV9cdTA0NDFhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0g''@;'; put 'put ''WVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA0MTRcdTA0MzVcdTA0M2RcdTA0MzVcdTA0NDEgXHUwNDMyXHUwNDNlXSBMVCIsbmV4dERheToiW1x1MDQyM1x1MDQ0Mlx1MDQ0MFx1MDQzNSBcdTA0MzJcdTA0M2VdIExUIixuZXh0V2VlazoiW1x1MDQxMlx1MDQzZV0gZGRkZCBb''@;'; put 'put ''XHUwNDMyXHUwNDNlXSBMVCIsbGFzdERheToiW1x1MDQxMlx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCBcdTA0MzJcdTA0M2VdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNjpyZXR1cm4iW1x1MDQxOFx1MDQzN1x1MDQzY1x1''@;'; put 'put ''MDQzOFx1MDQzZFx1MDQzMFx1MDQ0Mlx1MDQzMFx1MDQ0Mlx1MDQzMF0gZGRkZCBbXHUwNDMyXHUwNDNlXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbXHUwNDE4XHUwNDM3XHUwNDNjXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDQyXHUwNDM4XHUwNDNlXHUwNDQyXSBk''@;'; put 'put ''ZGRkIFtcdTA0MzJcdTA0M2VdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDM0ICVzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0M2JcdTA0M2FcdTA0NDMgXHUwNDQx''@;'; put 'put ''XHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixzczoiJWQgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDM4IixtOiJcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIixtbToiJWQgXHUw''@;'; put 'put ''NDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDM4IixoOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDQ3XHUwNDMwXHUwNDQxIixoaDoiJWQgXHUwNDQ3XHUwNDMwXHUwNDQxXHUwNDMwIixkOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDM0XHUwNDM1XHUwNDNkIixk''@;'; put 'put ''ZDoiJWQgXHUwNDM0XHUwNDM1XHUwNDNkXHUwNDMwIixNOiJcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2QgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IixNTToiJWQgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDM4Iix5OiJcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAg''@;'; put 'put ''XHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIix5eToiJWQgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM4In0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS0oXHUwNDM1XHUwNDMyfFx1MDQzNVx1MDQzZHxcdTA0NDJcdTA0Mzh8XHUwNDMyXHUw''@;'; put 'put ''NDM4fFx1MDQ0MFx1MDQzOHxcdTA0M2NcdTA0MzgpLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3ZhciBzZT1tJTEwLE09bSUxMDA7cmV0dXJuIDA9PT1tP20rIi1cdTA0MzVcdTA0MzIiOjA9PT1NP20rIi1cdTA0MzVcdTA0M2QiOk0+MTAmJk08MjA/bSsiLVx1MDQ0Mlx1MDQzOCI6MT09PXNlP20r''@;'; put 'put ''Ii1cdTA0MzJcdTA0MzgiOjI9PT1zZT9tKyItXHUwNDQwXHUwNDM4Ijo3PT09c2V8fDg9PT1zZT9tKyItXHUwNDNjXHUwNDM4IjptKyItXHUwNDQyXHUwNDM4In0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sMjExMjY6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsi''@;'; put 'put ''dXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJtbCIse21vbnRoczoiXHUwZDFjXHUwZDI4XHUwZDQxXHUwZDM1XHUwZDMwXHUwZDNmX1x1MGQyYlx1MGQ0Nlx1MGQyY1x1MGQ0ZFx1MGQzMFx1MGQ0MVx1MGQzNVx1MGQzMFx1MGQzZl9cdTBkMmVcdTBkM2VcdTBkN2NcdTBkMWFcdTBkNGRc''@;'; put 'put ''dTBkMWFcdTBkNGRfXHUwZDBmXHUwZDJhXHUwZDRkXHUwZDMwXHUwZDNmXHUwZDdkX1x1MGQyZVx1MGQ0N1x1MGQyZlx1MGQ0ZF9cdTBkMWNcdTBkNDJcdTBkN2FfXHUwZDFjXHUwZDQyXHUwZDMyXHUwZDQ4X1x1MGQxM1x1MGQxN1x1MGQzOFx1MGQ0ZFx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0''@;'; put 'put ''ZF9cdTBkMzhcdTBkNDZcdTBkMmFcdTBkNGRcdTBkMzFcdTBkNGRcdTBkMzFcdTBkMDJcdTBkMmNcdTBkN2NfXHUwZDEyXHUwZDE1XHUwZDRkXHUwZDFmXHUwZDRiXHUwZDJjXHUwZDdjX1x1MGQyOFx1MGQzNVx1MGQwMlx1MGQyY1x1MGQ3Y19cdTBkMjFcdTBkM2ZcdTBkMzhcdTBkMDJcdTBk''@;'; put 'put ''MmNcdTBkN2MiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGQxY1x1MGQyOFx1MGQ0MS5fXHUwZDJiXHUwZDQ2XHUwZDJjXHUwZDRkXHUwZDMwXHUwZDQxLl9cdTBkMmVcdTBkM2VcdTBkN2MuX1x1MGQwZlx1MGQyYVx1MGQ0ZFx1MGQzMFx1MGQzZi5fXHUwZDJlXHUwZDQ3XHUwZDJmXHUw''@;'; put 'put ''ZDRkX1x1MGQxY1x1MGQ0Mlx1MGQ3YV9cdTBkMWNcdTBkNDJcdTBkMzJcdTBkNDguX1x1MGQxM1x1MGQxNy5fXHUwZDM4XHUwZDQ2XHUwZDJhXHUwZDRkXHUwZDMxXHUwZDRkXHUwZDMxLl9cdTBkMTJcdTBkMTVcdTBkNGRcdTBkMWZcdTBkNGIuX1x1MGQyOFx1MGQzNVx1MGQwMi5fXHUwZDIx''@;'; put 'put ''XHUwZDNmXHUwZDM4XHUwZDAyLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJcdTBkMWVcdTBkM2VcdTBkMmZcdTBkMzFcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDI0XHUwZDNmXHUwZDE5XHUwZDRkXHUwZDE1XHUwZDMzXHUwZDNlXHUwZDM0XHUwZDRk''@;'; put 'put ''XHUwZDFhX1x1MGQxYVx1MGQ0YVx1MGQzNVx1MGQ0ZFx1MGQzNVx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMmNcdTBkNDFcdTBkMjdcdTBkMjhcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWFfXHUwZDM1XHUwZDRkXHUwZDJmXHUwZDNlXHUwZDM0XHUwZDNlXHUwZDM0XHUwZDRkXHUwZDFh''@;'; put 'put ''X1x1MGQzNVx1MGQ0Nlx1MGQzM1x1MGQ0ZFx1MGQzM1x1MGQzZlx1MGQyZlx1MGQzZVx1MGQzNFx1MGQ0ZFx1MGQxYV9cdTBkMzZcdTBkMjhcdTBkM2ZcdTBkMmZcdTBkM2VcdTBkMzRcdTBkNGRcdTBkMWEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZDFlXHUwZDNlXHUwZDJmXHUw''@;'; put 'put ''ZDdjX1x1MGQyNFx1MGQzZlx1MGQxOVx1MGQ0ZFx1MGQxNVx1MGQ3ZV9cdTBkMWFcdTBkNGFcdTBkMzVcdTBkNGRcdTBkMzVfXHUwZDJjXHUwZDQxXHUwZDI3XHUwZDdiX1x1MGQzNVx1MGQ0ZFx1MGQyZlx1MGQzZVx1MGQzNFx1MGQwMl9cdTBkMzVcdTBkNDZcdTBkMzNcdTBkNGRcdTBkMzNc''@;'; put 'put ''dTBkM2ZfXHUwZDM2XHUwZDI4XHUwZDNmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBkMWVcdTBkM2VfXHUwZDI0XHUwZDNmX1x1MGQxYVx1MGQ0YV9cdTBkMmNcdTBkNDFfXHUwZDM1XHUwZDRkXHUwZDJmXHUwZDNlX1x1MGQzNVx1MGQ0Nl9cdTBkMzYiLnNwbGl0KCJfIiksbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJBIGg6bW0gLVx1MGQyOFx1MGQ0MSIsTFRTOiJBIGg6bW06c3MgLVx1MGQyOFx1MGQ0MSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gLVx1MGQyOFx1MGQ0MSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEg''@;'; put 'put ''aDptbSAtXHUwZDI4XHUwZDQxIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBkMDdcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNGRdIExUIixuZXh0RGF5OiJbXHUwZDI4XHUwZDNlXHUwZDMzXHUwZDQ2XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwZDA3XHUwZDI4XHUwZDRk''@;'; put 'put ''XHUwZDI4XHUwZDMyXHUwZDQ2XSBMVCIsbGFzdFdlZWs6IltcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBkMTVcdTBkMzRcdTBkM2ZcdTBkMWVcdTBkNGRcdTBkMWVcdTBkNGQi''@;'; put 'put ''LHBhc3Q6IiVzIFx1MGQyZVx1MGQ0MVx1MGQ3Ylx1MGQyYVx1MGQ0ZCIsczoiXHUwZDA1XHUwZDdkXHUwZDJhIFx1MGQyOFx1MGQzZlx1MGQyZVx1MGQzZlx1MGQzN1x1MGQxOVx1MGQ0ZFx1MGQxOVx1MGQ3ZSIsc3M6IiVkIFx1MGQzOFx1MGQ0Nlx1MGQxNVx1MGQ0ZFx1MGQxNVx1MGQ3Ylx1''@;'; put 'put ''MGQyMVx1MGQ0ZCIsbToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyZVx1MGQzZlx1MGQyOFx1MGQzZlx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0ZCIsbW06IiVkIFx1MGQyZVx1MGQzZlx1MGQyOFx1MGQzZlx1MGQzMVx1MGQ0ZFx1MGQzMVx1MGQ0ZCIsaDoiXHUwZDEyXHUwZDMwXHUwZDQxIFx1''@;'; put 'put ''MGQyZVx1MGQyM1x1MGQzZlx1MGQxNVx1MGQ0ZFx1MGQxNVx1MGQ0Mlx1MGQ3YyIsaGg6IiVkIFx1MGQyZVx1MGQyM1x1MGQzZlx1MGQxNVx1MGQ0ZFx1MGQxNVx1MGQ0Mlx1MGQ3YyIsZDoiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyNlx1MGQzZlx1MGQzNVx1MGQzOFx1MGQwMiIsZGQ6IiVk''@;'; put 'put ''IFx1MGQyNlx1MGQzZlx1MGQzNVx1MGQzOFx1MGQwMiIsTToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQyZVx1MGQzZVx1MGQzOFx1MGQwMiIsTU06IiVkIFx1MGQyZVx1MGQzZVx1MGQzOFx1MGQwMiIseToiXHUwZDEyXHUwZDMwXHUwZDQxIFx1MGQzNVx1MGQ3Y1x1MGQzN1x1MGQwMiIseXk6''@;'; put 'put ''IiVkIFx1MGQzNVx1MGQ3Y1x1MGQzN1x1MGQwMiJ9LG1lcmlkaWVtUGFyc2U6L1x1MGQzMFx1MGQzZVx1MGQyNFx1MGQ0ZFx1MGQzMFx1MGQzZnxcdTBkMzBcdTBkM2VcdTBkMzVcdTBkM2ZcdTBkMzJcdTBkNDZ8XHUwZDA5XHUwZDFhXHUwZDRkXHUwZDFhIFx1MGQxNVx1MGQzNFx1MGQzZlx1''@;'; put 'put ''MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZHxcdTBkMzVcdTBkNDhcdTBkMTVcdTBkNDFcdTBkMjhcdTBkNGRcdTBkMjhcdTBkNDdcdTBkMzBcdTBkMDJ8XHUwZDMwXHUwZDNlXHUwZDI0XHUwZDRkXHUwZDMwXHUwZDNmL2ksbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKG0sc2Upe3JldHVybiAxMj09PW0m''@;'; put 'put ''JihtPTApLCJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YiPT09c2UmJm0+PTR8fCJcdTBkMDlcdTBkMWFcdTBkNGRcdTBkMWEgXHUwZDE1XHUwZDM0XHUwZDNmXHUwZDFlXHUwZDRkXHUwZDFlXHUwZDRkIj09PXNlfHwiXHUwZDM1XHUwZDQ4XHUwZDE1XHUwZDQxXHUwZDI4''@;'; put 'put ''XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyIj09PXNlP20rMTI6bX0sbWVyaWRpZW06ZnVuY3Rpb24obSxzZSxNKXtyZXR1cm4gbTw0PyJcdTBkMzBcdTBkM2VcdTBkMjRcdTBkNGRcdTBkMzBcdTBkM2YiOm08MTI/Ilx1MGQzMFx1MGQzZVx1MGQzNVx1MGQzZlx1MGQzMlx1MGQ0NiI6''@;'; put 'put ''bTwxNz8iXHUwZDA5XHUwZDFhXHUwZDRkXHUwZDFhIFx1MGQxNVx1MGQzNFx1MGQzZlx1MGQxZVx1MGQ0ZFx1MGQxZVx1MGQ0ZCI6bTwyMD8iXHUwZDM1XHUwZDQ4XHUwZDE1XHUwZDQxXHUwZDI4XHUwZDRkXHUwZDI4XHUwZDQ3XHUwZDMwXHUwZDAyIjoiXHUwZDMwXHUwZDNlXHUwZDI0XHUw''@;'; put 'put ''ZDRkXHUwZDMwXHUwZDNmIn19KX0oUig5NzU4NikpfSw0NDg5MjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KHNlLE0sTyxJKXtzd2l0Y2goTyl7Y2FzZSJzIjpyZXR1cm4gTT8iXHUwNDQ1XHUwNDRkXHUwNDM0XHUwNDQ1XHUwNDRkXHUw''@;'; put 'put ''NDNkIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0NVx1MDQ0ZFx1MDQzNFx1MDQ0NVx1MDQ0ZFx1MDQzZCBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJcdTA0M2QiO2Nhc2Uic3MiOnJldHVybiBzZSsoTT8iIFx1MDQ0MVx1MDQz''@;'; put 'put ''NVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6IiBcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJcdTA0M2QiKTtjYXNlIm0iOmNhc2UibW0iOnJldHVybiBzZSsoTT8iIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiI6IiBcdTA0M2NcdTA0MzhcdTA0M2Rc''@;'; put 'put ''dTA0NDNcdTA0NDJcdTA0NGJcdTA0M2QiKTtjYXNlImgiOmNhc2UiaGgiOnJldHVybiBzZSsoTT8iIFx1MDQ0Nlx1MDQzMFx1MDQzMyI6IiBcdTA0NDZcdTA0MzBcdTA0MzNcdTA0MzhcdTA0MzlcdTA0M2QiKTtjYXNlImQiOmNhc2UiZGQiOnJldHVybiBzZSsoTT8iIFx1MDRlOVx1MDQzNFx1''@;'; put 'put ''MDRlOVx1MDQ0MCI6IiBcdTA0ZTlcdTA0MzRcdTA0NDBcdTA0MzhcdTA0MzlcdTA0M2QiKTtjYXNlIk0iOmNhc2UiTU0iOnJldHVybiBzZSsoTT8iIFx1MDQ0MVx1MDQzMFx1MDQ0MCI6IiBcdTA0NDFcdTA0MzBcdTA0NDBcdTA0NGJcdTA0M2QiKTtjYXNlInkiOmNhc2UieXkiOnJldHVybiBz''@;'; put 'put ''ZSsoTT8iIFx1MDQzNlx1MDQzOFx1MDQzYiI6IiBcdTA0MzZcdTA0MzhcdTA0M2JcdTA0MzhcdTA0MzlcdTA0M2QiKTtkZWZhdWx0OnJldHVybiBzZX19b2UuZGVmaW5lTG9jYWxlKCJtbiIse21vbnRoczoiXHUwNDFkXHUwNDRkXHUwNDMzXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRk''@;'; put 'put ''XHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjVcdTA0M2VcdTA0NTFcdTA0NDBcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxM1x1MDQ0M1x1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQz''@;'; put 'put ''MFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNGU5XHUwNDQwXHUwNGU5XHUwNDMyXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MjJcdTA0MzBcdTA0MzJcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0''@;'; put 'put ''NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxN1x1MDQ0M1x1MDQ0MFx1MDQzM1x1MDQzMFx1MDQzNFx1MDQ0M1x1MDQzM1x1MDQzMFx1MDQzMFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBfXHUwNDE0XHUwNDNlXHUwNDNiXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1''@;'; put 'put ''MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MWRcdTA0MzBcdTA0MzlcdTA0M2NcdTA0MzRcdTA0NDNcdTA0MzNcdTA0MzBcdTA0MzBcdTA0NDAgXHUwNDQxXHUwNDMwXHUwNDQwX1x1MDQxNVx1MDQ0MVx1MDQzNFx1MDRhZlx1MDQzM1x1MDQ0ZFx1MDQ0ZFx1MDQ0MCBcdTA0NDFcdTA0MzBcdTA0NDBf''@;'; put 'put ''XHUwNDEwXHUwNDQwXHUwNDMwXHUwNDMyXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDNkXHUwNDRkXHUwNDMzXHUwNDM0XHUwNGFmXHUwNDMzXHUwNDRkXHUwNDRkXHUwNDQw''@;'; put 'put ''IFx1MDQ0MVx1MDQzMFx1MDQ0MF9cdTA0MTBcdTA0NDBcdTA0MzJcdTA0MzBcdTA0M2QgXHUwNDQ1XHUwNDNlXHUwNDUxXHUwNDQwXHUwNDM0XHUwNDQzXHUwNDMzXHUwNDMwXHUwNDMwXHUwNDQwIFx1MDQ0MVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMSBcdTA0NDFc''@;'; put 'put ''dTA0MzBcdTA0NDBfMiBcdTA0NDFcdTA0MzBcdTA0NDBfMyBcdTA0NDFcdTA0MzBcdTA0NDBfNCBcdTA0NDFcdTA0MzBcdTA0NDBfNSBcdTA0NDFcdTA0MzBcdTA0NDBfNiBcdTA0NDFcdTA0MzBcdTA0NDBfNyBcdTA0NDFcdTA0MzBcdTA0NDBfOCBcdTA0NDFcdTA0MzBcdTA0NDBfOSBcdTA0''@;'; put 'put ''NDFcdTA0MzBcdTA0NDBfMTAgXHUwNDQxXHUwNDMwXHUwNDQwXzExIFx1MDQ0MVx1MDQzMFx1MDQ0MF8xMiBcdTA0NDFcdTA0MzBcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwNDFkXHUwNDRmXHUwNDNjX1x1MDQxNFx1MDQzMFx1MDQzMlx1MDQz''@;'; put 'put ''MFx1MDQzMF9cdTA0MWNcdTA0NGZcdTA0MzNcdTA0M2NcdTA0MzBcdTA0NDBfXHUwNDFiXHUwNDQ1XHUwNDMwXHUwNDMzXHUwNDMyXHUwNDMwX1x1MDQxZlx1MDRhZlx1MDQ0MFx1MDQ0ZFx1MDQzMl9cdTA0MTFcdTA0MzBcdTA0MzBcdTA0NDFcdTA0MzBcdTA0M2RfXHUwNDExXHUwNDRmXHUw''@;'; put 'put ''NDNjXHUwNDMxXHUwNDMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQxZFx1MDQ0Zlx1MDQzY19cdTA0MTRcdTA0MzBcdTA0MzJfXHUwNDFjXHUwNDRmXHUwNDMzX1x1MDQxYlx1MDQ0NVx1MDQzMF9cdTA0MWZcdTA0YWZcdTA0NDBfXHUwNDExXHUwNDMwXHUwNDMwX1x1MDQxMVx1''@;'; put 'put ''MDQ0Zlx1MDQzYyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDFkXHUwNDRmX1x1MDQxNFx1MDQzMF9cdTA0MWNcdTA0NGZfXHUwNDFiXHUwNDQ1X1x1MDQxZlx1MDRhZl9cdTA0MTFcdTA0MzBfXHUwNDExXHUwNDRmIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25n''@;'; put 'put ''RGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIixMTEw6IllZWVkgXHUwNDNlXHUwNDNkXHUwNDRiIE1NTU1cdTA0NGJcdTA0M2QgRCBISDptbSIsTExMTDoiZGRk''@;'; put 'put ''ZCwgWVlZWSBcdTA0M2VcdTA0M2RcdTA0NGIgTU1NTVx1MDQ0Ylx1MDQzZCBEIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHUwNGFlXHUwNGU4fFx1MDRhZVx1MDQyNS9pLGlzUE06ZnVuY3Rpb24oc2Upe3JldHVybiJcdTA0YWVcdTA0MjUiPT09c2V9LG1lcmlkaWVtOmZ1bmN0aW9uKHNlLE0s''@;'; put 'put ''Tyl7cmV0dXJuIHNlPDEyPyJcdTA0YWVcdTA0ZTgiOiJcdTA0YWVcdTA0MjUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDRlOFx1MDQzZFx1MDRlOVx1MDRlOVx1MDQzNFx1MDRlOVx1MDQ0MF0gTFQiLG5leHREYXk6IltcdTA0MWNcdTA0MzBcdTA0NDBcdTA0MzNcdTA0MzBcdTA0MzBcdTA0''@;'; put 'put ''NDhdIExUIixuZXh0V2VlazoiW1x1MDQxOFx1MDQ0MFx1MDQ0ZFx1MDQ0NV0gZGRkZCBMVCIsbGFzdERheToiW1x1MDRlOFx1MDQ0N1x1MDQzOFx1MDQzM1x1MDQzNFx1MDRlOVx1MDQ0MF0gTFQiLGxhc3RXZWVrOiJbXHUwNGU4XHUwNDNkXHUwNDMzXHUwNGU5XHUwNDQwXHUwNDQxXHUwNGU5''@;'; put 'put ''XHUwNDNkXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA0MzRcdTA0MzBcdTA0NDBcdTA0MzBcdTA0MzAiLHBhc3Q6IiVzIFx1MDRlOVx1MDQzY1x1MDQzZFx1MDRlOSIsczp4LHNzOngsbTp4LG1tOngsaDp4LGhoOngsZDp4LGRkOngsTTp4LE1N''@;'; put 'put ''OngseTp4LHl5Onh9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0gXHUwNGU5XHUwNDM0XHUwNGU5XHUwNDQwLyxvcmRpbmFsOmZ1bmN0aW9uKHNlLE0pe3N3aXRjaChNKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBzZSsiIFx1MDRlOVx1MDQzNFx1MDRlOVx1MDQ0''@;'; put 'put ''MCI7ZGVmYXVsdDpyZXR1cm4gc2V9fX0pfShSKDk3NTg2KSl9LDU5MDgwOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiJcdTA5NjciLDI6Ilx1MDk2OCIsMzoiXHUwOTY5Iiw0OiJcdTA5NmEiLDU6Ilx1MDk2YiIsNjoiXHUwOTZjIiw3OiJc''@;'; put 'put ''dTA5NmQiLDg6Ilx1MDk2ZSIsOToiXHUwOTZmIiwwOiJcdTA5NjYifSxtPXsiXHUwOTY3IjoiMSIsIlx1MDk2OCI6IjIiLCJcdTA5NjkiOiIzIiwiXHUwOTZhIjoiNCIsIlx1MDk2YiI6IjUiLCJcdTA5NmMiOiI2IiwiXHUwOTZkIjoiNyIsIlx1MDk2ZSI6IjgiLCJcdTA5NmYiOiI5IiwiXHUw''@;'; put 'put ''OTY2IjoiMCJ9O2Z1bmN0aW9uIHNlKE8sSSxqLEcpe3ZhciBEPSIiO2lmKEkpc3dpdGNoKGope2Nhc2UicyI6RD0iXHUwOTE1XHUwOTNlXHUwOTM5XHUwOTQwIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNiI7YnJlYWs7Y2FzZSJzcyI6RD0iJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUw''@;'; put 'put ''OTAyXHUwOTI2IjticmVhaztjYXNlIm0iOkQ9Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWYiO2JyZWFrO2Nhc2UibW0iOkQ9IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1MDkzZlx1MDkxZlx1MDk0NyI7YnJlYWs7Y2FzZSJoIjpEPSJcdTA5MGZcdTA5MTUgXHUw''@;'; put 'put ''OTI0XHUwOTNlXHUwOTM4IjticmVhaztjYXNlImhoIjpEPSIlZCBcdTA5MjRcdTA5M2VcdTA5MzgiO2JyZWFrO2Nhc2UiZCI6RD0iXHUwOTBmXHUwOTE1IFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOCI7YnJlYWs7Y2FzZSJkZCI6RD0iJWQgXHUwOTI2XHUwOTNmXHUwOTM1XHUwOTM4IjticmVh''@;'; put 'put ''aztjYXNlIk0iOkQ9Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5M2UiO2JyZWFrO2Nhc2UiTU0iOkQ9IiVkIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDk0NyI7YnJlYWs7Y2FzZSJ5IjpEPSJcdTA5MGZcdTA5MTUgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3''@;'; put 'put ''IjticmVhaztjYXNlInl5IjpEPSIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzdcdTA5NDcifWVsc2Ugc3dpdGNoKGope2Nhc2UicyI6RD0iXHUwOTE1XHUwOTNlXHUwOTM5XHUwOTQwIFx1MDkzOFx1MDk0N1x1MDkxNVx1MDkwMlx1MDkyNlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJzcyI6''@;'; put 'put ''RD0iJWQgXHUwOTM4XHUwOTQ3XHUwOTE1XHUwOTAyXHUwOTI2XHUwOTNlXHUwOTAyIjticmVhaztjYXNlIm0iOkQ9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5M2ZcdTA5MWZcdTA5M2UiO2JyZWFrO2Nhc2UibW0iOkQ9IiVkIFx1MDkyZVx1MDkzZlx1MDkyOFx1''@;'; put 'put ''MDkzZlx1MDkxZlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJoIjpEPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTI0XHUwOTNlXHUwOTM4XHUwOTNlIjticmVhaztjYXNlImhoIjpEPSIlZCBcdTA5MjRcdTA5M2VcdTA5MzhcdTA5M2VcdTA5MDIiO2JyZWFrO2Nhc2UiZCI6RD0iXHUwOTBmXHUw''@;'; put 'put ''OTE1XHUwOTNlIFx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzOFx1MDkzZSI7YnJlYWs7Y2FzZSJkZCI6RD0iJWQgXHUwOTI2XHUwOTNmXHUwOTM1XHUwOTM4XHUwOTNlXHUwOTAyIjticmVhaztjYXNlIk0iOkQ9Ilx1MDkwZlx1MDkxNVx1MDkzZSBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5''@;'; put 'put ''NGRcdTA5MmZcdTA5M2UiO2JyZWFrO2Nhc2UiTU0iOkQ9IiVkIFx1MDkyZVx1MDkzOVx1MDkzZlx1MDkyOFx1MDk0ZFx1MDkyZlx1MDkzZVx1MDkwMiI7YnJlYWs7Y2FzZSJ5IjpEPSJcdTA5MGZcdTA5MTVcdTA5M2UgXHUwOTM1XHUwOTMwXHUwOTRkXHUwOTM3XHUwOTNlIjticmVhaztjYXNl''@;'; put 'put ''Inl5IjpEPSIlZCBcdTA5MzVcdTA5MzBcdTA5NGRcdTA5MzdcdTA5M2VcdTA5MDIifXJldHVybiBELnJlcGxhY2UoLyVkL2ksTyl9b2UuZGVmaW5lTG9jYWxlKCJtciIse21vbnRoczoiXHUwOTFjXHUwOTNlXHUwOTI4XHUwOTQ3XHUwOTM1XHUwOTNlXHUwOTMwXHUwOTQwX1x1MDkyYlx1MDk0''@;'; put 'put ''N1x1MDkyY1x1MDk0ZFx1MDkzMFx1MDk0MVx1MDkzNVx1MDkzZVx1MDkzMFx1MDk0MF9cdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGRcdTA5MWFfXHUwOTBmXHUwOTJhXHUwOTRkXHUwOTMwXHUwOTNmXHUwOTMyX1x1MDkyZVx1MDk0N19cdTA5MWNcdTA5NDJcdTA5MjhfXHUwOTFjXHUwOTQxXHUw''@;'; put 'put ''OTMyXHUwOTQ4X1x1MDkxMVx1MDkxN1x1MDkzOFx1MDk0ZFx1MDkxZl9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzBfXHUwOTExXHUwOTE1XHUwOTRkXHUwOTFmXHUwOTRiXHUwOTJjXHUwOTMwX1x1MDkyOFx1MDk0Ylx1MDkzNVx1MDk0ZFx1MDkzOVx1''@;'; put 'put ''MDk0N1x1MDkwMlx1MDkyY1x1MDkzMF9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDJcdTA5MmNcdTA5MzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDkxY1x1MDkzZVx1MDkyOFx1MDk0Ny5fXHUwOTJiXHUwOTQ3XHUwOTJjXHUwOTRkXHUwOTMwXHUwOTQxLl9cdTA5MmVcdTA5''@;'; put 'put ''M2VcdTA5MzBcdTA5NGRcdTA5MWEuX1x1MDkwZlx1MDkyYVx1MDk0ZFx1MDkzMFx1MDkzZi5fXHUwOTJlXHUwOTQ3Ll9cdTA5MWNcdTA5NDJcdTA5MjguX1x1MDkxY1x1MDk0MVx1MDkzMlx1MDk0OC5fXHUwOTExXHUwOTE3Ll9cdTA5MzhcdTA5MmFcdTA5NGRcdTA5MWZcdTA5NDdcdTA5MDIu''@;'; put 'put ''X1x1MDkxMVx1MDkxNVx1MDk0ZFx1MDkxZlx1MDk0Yi5fXHUwOTI4XHUwOTRiXHUwOTM1XHUwOTRkXHUwOTM5XHUwOTQ3XHUwOTAyLl9cdTA5MjFcdTA5M2ZcdTA5MzhcdTA5NDdcdTA5MDIuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MDkzMFx1MDkzNVx1''@;'; put 'put ''MDkzZlx1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MzhcdTA5NGJcdTA5MmVcdTA5MzVcdTA5M2VcdTA5MzBfXHUwOTJlXHUwOTAyXHUwOTE3XHUwOTMzXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkyY1x1MDk0MVx1MDkyN1x1MDkzNVx1MDkzZVx1MDkzMF9cdTA5MTdcdTA5NDFcdTA5MzBcdTA5NDJc''@;'; put 'put ''dTA5MzVcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTQxXHUwOTE1XHUwOTRkXHUwOTMwXHUwOTM1XHUwOTNlXHUwOTMwX1x1MDkzNlx1MDkyOFx1MDkzZlx1MDkzNVx1MDkzZVx1MDkzMCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA5MzBcdTA5MzVcdTA5M2ZfXHUwOTM4XHUwOTRiXHUw''@;'; put 'put ''OTJlX1x1MDkyZVx1MDkwMlx1MDkxN1x1MDkzM19cdTA5MmNcdTA5NDFcdTA5MjdfXHUwOTE3XHUwOTQxXHUwOTMwXHUwOTQyX1x1MDkzNlx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzMF9cdTA5MzZcdTA5MjhcdTA5M2YiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDkzMF9cdTA5MzhcdTA5''@;'; put 'put ''NGJfXHUwOTJlXHUwOTAyX1x1MDkyY1x1MDk0MV9cdTA5MTdcdTA5NDFfXHUwOTM2XHUwOTQxX1x1MDkzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSBcdTA5MzVcdTA5M2VcdTA5MWNcdTA5MjRcdTA5M2UiLExUUzoiQSBoOm1tOnNzIFx1MDkzNVx1MDkzZVx1MDkx''@;'; put 'put ''Y1x1MDkyNFx1MDkzZSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0gXHUwOTM1XHUwOTNlXHUwOTFjXHUwOTI0XHUwOTNlIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MDkzNVx1MDkzZVx1MDkxY1x1MDkyNFx1MDkz''@;'; put 'put ''ZSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwOTA2XHUwOTFjXSBMVCIsbmV4dERheToiW1x1MDkwOVx1MDkyNlx1MDk0ZFx1MDkyZlx1MDkzZV0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW1x1MDkxNVx1MDkzZVx1MDkzMl0gTFQiLGxhc3RXZWVrOiJbXHUwOTJlXHUwOTNl''@;'; put 'put ''XHUwOTE3XHUwOTQwXHUwOTMyXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXNcdTA5MmVcdTA5MjdcdTA5NGRcdTA5MmZcdTA5NDciLHBhc3Q6IiVzXHUwOTJhXHUwOTQyXHUwOTMwXHUwOTRkXHUwOTM1XHUwOTQwIixzOnNlLHNzOnNlLG06c2UsbW06''@;'; put 'put ''c2UsaDpzZSxoaDpzZSxkOnNlLGRkOnNlLE06c2UsTU06c2UseTpzZSx5eTpzZX0scHJlcGFyc2U6ZnVuY3Rpb24oTyl7cmV0dXJuIE8ucmVwbGFjZSgvW1x1MDk2N1x1MDk2OFx1MDk2OVx1MDk2YVx1MDk2Ylx1MDk2Y1x1MDk2ZFx1MDk2ZVx1MDk2Zlx1MDk2Nl0vZyxmdW5jdGlvbihJKXty''@;'; put 'put ''ZXR1cm4gbVtJXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE8pe3JldHVybiBPLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oSSl7cmV0dXJuIHhbSV19KX0sbWVyaWRpZW1QYXJzZTovXHUwOTJhXHUwOTM5XHUwOTNlXHUwOTFmXHUwOTQ3fFx1MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MHxc''@;'; put 'put ''dTA5MjZcdTA5NDFcdTA5MmFcdTA5M2VcdTA5MzBcdTA5NDB8XHUwOTM4XHUwOTNlXHUwOTJmXHUwOTAyXHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwfFx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0MC8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKE8sSSl7cmV0dXJuIDEyPT09TyYm''@;'; put 'put ''KE89MCksIlx1MDkyYVx1MDkzOVx1MDkzZVx1MDkxZlx1MDk0NyI9PT1JfHwiXHUwOTM4XHUwOTE1XHUwOTNlXHUwOTMzXHUwOTQwIj09PUk/TzoiXHUwOTI2XHUwOTQxXHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwIj09PUl8fCJcdTA5MzhcdTA5M2VcdTA5MmZcdTA5MDJcdTA5MTVcdTA5M2Vc''@;'; put 'put ''dTA5MzNcdTA5NDAiPT09SXx8Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0MCI9PT1JP08+PTEyP086TysxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKE8sSSxqKXtyZXR1cm4gTz49MCYmTzw2PyJcdTA5MmFcdTA5MzlcdTA5M2VcdTA5MWZcdTA5NDciOk88MTI/Ilx1''@;'; put 'put ''MDkzOFx1MDkxNVx1MDkzZVx1MDkzM1x1MDk0MCI6TzwxNz8iXHUwOTI2XHUwOTQxXHUwOTJhXHUwOTNlXHUwOTMwXHUwOTQwIjpPPDIwPyJcdTA5MzhcdTA5M2VcdTA5MmZcdTA5MDJcdTA5MTVcdTA5M2VcdTA5MzNcdTA5NDAiOiJcdTA5MzBcdTA5M2VcdTA5MjRcdTA5NGRcdTA5MzBcdTA5''@;'; put 'put ''NDAifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oUig5NzU4NikpfSwyNTk1MDpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoIm1zLW15Iix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09n''@;'; put 'put ''b3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19K''@;'; put 'put ''dW1hYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNz''@;'; put 'put ''IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1''@;'; put 'put ''bmN0aW9uKG0sc2Upe3JldHVybiAxMj09PW0mJihtPTApLCJwYWdpIj09PXNlP206InRlbmdhaGFyaSI9PT1zZT9tPj0xMT9tOm0rMTI6InBldGFuZyI9PT1zZXx8Im1hbGFtIj09PXNlP20rMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDExPyJwYWdpIjpt''@;'; put 'put ''PDE1PyJ0ZW5nYWhhcmkiOm08MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFz''@;'; put 'put ''dFdlZWs6ImRkZGQgW2xlcGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLHNzOiIlZCBzYWF0IixtOiJzZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixo''@;'; put 'put ''aDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDcwMzk5OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBz''@;'; put 'put ''dHJpY3QiO29lLmRlZmluZUxvY2FsZSgibXMiLHttb250aHM6IkphbnVhcmlfRmVicnVhcmlfTWFjX0FwcmlsX01laV9KdW5fSnVsYWlfT2dvc19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EaXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYWNfQXByX01laV9K''@;'; put 'put ''dW5fSnVsX09nc19TZXBfT2t0X05vdl9EaXMiLnNwbGl0KCJfIiksd2Vla2RheXM6IkFoYWRfSXNuaW5fU2VsYXNhX1JhYnVfS2hhbWlzX0p1bWFhdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBaGRfSXNuX1NlbF9SYWJfS2hhX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2Rh''@;'; put 'put ''eXNNaW46IkFoX0lzX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0g''@;'; put 'put ''WVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXx0ZW5nYWhhcml8cGV0YW5nfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24obSxzZSl7cmV0dXJuIDEyPT09bSYmKG09MCksInBhZ2kiPT09c2U/bToidGVuZ2FoYXJpIj09PXNlP20+PTExP206bSsxMjoicGV0YW5n''@;'; put 'put ''Ij09PXNlfHwibWFsYW0iPT09c2U/bSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKG0sc2UsTSl7cmV0dXJuIG08MTE/InBhZ2kiOm08MTU/InRlbmdhaGFyaSI6bTwxOT8icGV0YW5nIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERh''@;'; put 'put ''eToiW0Vzb2sgcHVrdWxdIExUIixuZXh0V2VlazoiZGRkZCBbcHVrdWxdIExUIixsYXN0RGF5OiJbS2VsbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGVwYXMgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMg''@;'; put 'put ''eWFuZyBsZXBhcyIsczoiYmViZXJhcGEgc2FhdCIsc3M6IiVkIHNhYXQiLG06InNlbWluaXQiLG1tOiIlZCBtaW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmkiLE06InNlYnVsYW4iLE1NOiIlZCBidWxhbiIseToic2V0YWh1biIseXk6IiVkIHRhaHVu''@;'; put 'put ''In0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNzk5MDI6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJtdCIse21vbnRoczoiSmFubmFyX0ZyYXJfTWFyenVfQXByaWxfTWVqanVfXHUwMTIwdW5qdV9MdWxqdV9B''@;'; put 'put ''d3dpc3N1X1NldHRlbWJydV9PdHR1YnJ1X05vdmVtYnJ1X0RpXHUwMTBiZW1icnUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GcmFfTWFyX0Fwcl9NZWpfXHUwMTIwdW5fTHVsX0F3d19TZXRfT3R0X05vdl9EaVx1MDEwYiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiSWwtXHUwMTI2YWRk''@;'; put 'put ''X0l0LVRuZWpuX0l0LVRsaWV0YV9MLUVyYmdcdTAxMjdhX0lsLVx1MDEyNmFtaXNfSWwtXHUwMTIwaW1nXHUwMTI3YV9Jcy1TaWJ0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDEyNmFkX1RuZV9UbGlfRXJiX1x1MDEyNmFtX1x1MDEyMGltX1NpYiIuc3BsaXQoIl8iKSx3ZWVrZGF5''@;'; put 'put ''c01pbjoiXHUwMTI2YV9Ubl9UbF9Fcl9cdTAxMjZhX1x1MDEyMGlfU2kiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBE''@;'; put 'put ''IE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSWxsdW0gZmlsLV1MVCIsbmV4dERheToiW0dcdTAxMjdhZGEgZmlsLV1MVCIsbmV4dFdlZWs6ImRkZGQgW2ZpbC1dTFQiLGxhc3REYXk6IltJbC1iaWVyYVx1MDEyNyBmaWwtXUxUIixsYXN0V2VlazoiZGRkZCBbbGkgZ1x1''@;'; put 'put ''MDEyN2FkZGFdIFtmaWwtXUxUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJmXHUyMDE5ICVzIixwYXN0OiIlcyBpbHUiLHM6ImZ0aXQgc2Vrb25kaSIsc3M6IiVkIHNla29uZGkiLG06Im1pbnV0YSIsbW06IiVkIG1pbnV0aSIsaDoic2llZ1x1MDEyN2EiLGhoOiIlZCBz''@;'; put 'put ''aWVnXHUwMTI3YXQiLGQ6Ilx1MDEyMXVybmF0YSIsZGQ6IiVkIFx1MDEyMXJhbmV0IixNOiJ4YWhhciIsTU06IiVkIHhodXIiLHk6InNlbmEiLHl5OiIlZCBzbmkifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIix3ZWVrOntkb3c6MSxkb3k6''@;'; put 'put ''NH19KX0oUig5NzU4NikpfSw3Mjk4NTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD17MToiXHUxMDQxIiwyOiJcdTEwNDIiLDM6Ilx1MTA0MyIsNDoiXHUxMDQ0Iiw1OiJcdTEwNDUiLDY6Ilx1MTA0NiIsNzoiXHUxMDQ3Iiw4OiJcdTEwNDgiLDk6''@;'; put 'put ''Ilx1MTA0OSIsMDoiXHUxMDQwIn0sbT17Ilx1MTA0MSI6IjEiLCJcdTEwNDIiOiIyIiwiXHUxMDQzIjoiMyIsIlx1MTA0NCI6IjQiLCJcdTEwNDUiOiI1IiwiXHUxMDQ2IjoiNiIsIlx1MTA0NyI6IjciLCJcdTEwNDgiOiI4IiwiXHUxMDQ5IjoiOSIsIlx1MTA0MCI6IjAifTtvZS5kZWZpbmVM''@;'; put 'put ''b2NhbGUoIm15Iix7bW9udGhzOiJcdTEwMDdcdTEwMTRcdTEwM2FcdTEwMTRcdTEwMWRcdTEwMmJcdTEwMWJcdTEwMmVfXHUxMDE2XHUxMDMxXHUxMDE2XHUxMDMxXHUxMDJjXHUxMDNhXHUxMDFkXHUxMDJiXHUxMDFiXHUxMDJlX1x1MTAxOVx1MTAxMFx1MTAzYV9cdTEwMjdcdTEwMTVcdTEw''@;'; put 'put ''M2NcdTEwMmVfXHUxMDE5XHUxMDMxX1x1MTAwN1x1MTAzZFx1MTAxNFx1MTAzYV9cdTEwMDdcdTEwMzBcdTEwMWNcdTEwMmRcdTEwMmZcdTEwMDRcdTEwM2FfXHUxMDFlXHUxMDNjXHUxMDAyXHUxMDJmXHUxMDEwXHUxMDNhX1x1MTAwNVx1MTAwMFx1MTAzYVx1MTAxMFx1MTAwNFx1MTAzYVx1''@;'; put 'put ''MTAxOFx1MTAyY19cdTEwMjFcdTEwMzFcdTEwMmNcdTEwMDBcdTEwM2FcdTEwMTBcdTEwMmRcdTEwMmZcdTEwMThcdTEwMmNfXHUxMDE0XHUxMDJkXHUxMDJmXHUxMDFkXHUxMDA0XHUxMDNhXHUxMDE4XHUxMDJjX1x1MTAxMlx1MTAyZVx1MTAwN1x1MTAwNFx1MTAzYVx1MTAxOFx1MTAyYyIu''@;'; put 'put ''c3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUxMDA3XHUxMDE0XHUxMDNhX1x1MTAxNlx1MTAzMV9cdTEwMTlcdTEwMTBcdTEwM2FfXHUxMDE1XHUxMDNjXHUxMDJlX1x1MTAxOVx1MTAzMV9cdTEwMDdcdTEwM2RcdTEwMTRcdTEwM2FfXHUxMDFjXHUxMDJkXHUxMDJmXHUxMDA0XHUxMDNhX1x1''@;'; put 'put ''MTAxZVx1MTAzY19cdTEwMDVcdTEwMDBcdTEwM2FfXHUxMDIxXHUxMDMxXHUxMDJjXHUxMDAwXHUxMDNhX1x1MTAxNFx1MTAyZFx1MTAyZl9cdTEwMTJcdTEwMmUiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MTAxMFx1MTAxNFx1MTAwNFx1MTAzYVx1MTAzOVx1MTAwMlx1MTAxNFx1MTAzZFx1''@;'; put 'put ''MTAzMV9cdTEwMTBcdTEwMTRcdTEwMDRcdTEwM2FcdTEwMzlcdTEwMWNcdTEwMmNfXHUxMDIxXHUxMDA0XHUxMDNhXHUxMDM5XHUxMDAyXHUxMDJiX1x1MTAxN1x1MTAyZlx1MTAxMlx1MTAzOVx1MTAxM1x1MTAxZlx1MTAzMFx1MTAzOF9cdTEwMDBcdTEwM2NcdTEwMmNcdTEwMWVcdTEwMTVc''@;'; put 'put ''dTEwMTBcdTEwMzFcdTEwMzhfXHUxMDFlXHUxMDMxXHUxMDJjXHUxMDAwXHUxMDNjXHUxMDJjX1x1MTAwNVx1MTAxNFx1MTAzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTEwMTRcdTEwM2RcdTEwMzFfXHUxMDFjXHUxMDJjX1x1MTAwMlx1MTAyYl9cdTEwMWZcdTEwMzBcdTEwMzhf''@;'; put 'put ''XHUxMDAwXHUxMDNjXHUxMDJjX1x1MTAxZVx1MTAzMVx1MTAyY19cdTEwMTRcdTEwMzEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MTAxNFx1MTAzZFx1MTAzMV9cdTEwMWNcdTEwMmNfXHUxMDAyXHUxMDJiX1x1MTAxZlx1MTAzMFx1MTAzOF9cdTEwMDBcdTEwM2NcdTEwMmNfXHUxMDFl''@;'; put 'put ''XHUxMDMxXHUxMDJjX1x1MTAxNFx1MTAzMSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0i''@;'; put 'put ''fSxjYWxlbmRhcjp7c2FtZURheToiW1x1MTAxYVx1MTAxNFx1MTAzMS5dIExUIFtcdTEwMTlcdTEwM2VcdTEwMmNdIixuZXh0RGF5OiJbXHUxMDE5XHUxMDE0XHUxMDAwXHUxMDNhXHUxMDE2XHUxMDNjXHUxMDE0XHUxMDNhXSBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbmV4dFdlZWs6ImRk''@;'; put 'put ''ZGQgTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLGxhc3REYXk6IltcdTEwMTlcdTEwMTRcdTEwMzEuXHUxMDAwXSBMVCBbXHUxMDE5XHUxMDNlXHUxMDJjXSIsbGFzdFdlZWs6IltcdTEwMTVcdTEwM2NcdTEwMmVcdTEwMzhcdTEwMDFcdTEwMzJcdTEwMzdcdTEwMWVcdTEwMzFcdTEwMmNdIGRk''@;'; put 'put ''ZGQgTFQgW1x1MTAxOVx1MTAzZVx1MTAyY10iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MTAxY1x1MTAyY1x1MTAxOVx1MTAwYVx1MTAzYVx1MTAzNyAlcyBcdTEwMTlcdTEwM2VcdTEwMmMiLHBhc3Q6Ilx1MTAxY1x1MTAzZFx1MTAxNFx1MTAzYVx1MTAwMVx1MTAz''@;'; put 'put ''Mlx1MTAzN1x1MTAxZVx1MTAzMVx1MTAyYyAlcyBcdTEwMDAiLHM6Ilx1MTAwNVx1MTAwMFx1MTAzOVx1MTAwMFx1MTAxNFx1MTAzYS5cdTEwMjFcdTEwMTRcdTEwMGFcdTEwM2FcdTEwMzhcdTEwMDRcdTEwMWFcdTEwM2EiLHNzOiIlZCBcdTEwMDVcdTEwMDBcdTEwMzlcdTEwMDBcdTEwMTRc''@;'; put 'put ''dTEwMzdcdTEwM2EiLG06Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxOVx1MTAyZFx1MTAxNFx1MTAwNVx1MTAzYSIsbW06IiVkIFx1MTAxOVx1MTAyZFx1MTAxNFx1MTAwNVx1MTAzYSIsaDoiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDE0XHUxMDJjXHUxMDFiXHUxMDJlIixoaDoiJWQgXHUxMDE0''@;'; put 'put ''XHUxMDJjXHUxMDFiXHUxMDJlIixkOiJcdTEwMTBcdTEwMDVcdTEwM2FcdTEwMWJcdTEwMDBcdTEwM2EiLGRkOiIlZCBcdTEwMWJcdTEwMDBcdTEwM2EiLE06Ilx1MTAxMFx1MTAwNVx1MTAzYVx1MTAxYyIsTU06IiVkIFx1MTAxYyIseToiXHUxMDEwXHUxMDA1XHUxMDNhXHUxMDE0XHUxMDNl''@;'; put 'put ''XHUxMDA1XHUxMDNhIix5eToiJWQgXHUxMDE0XHUxMDNlXHUxMDA1XHUxMDNhIn0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MTA0MVx1MTA0Mlx1MTA0M1x1MTA0NFx1MTA0NVx1MTA0Nlx1MTA0N1x1MTA0OFx1MTA0OVx1MTA0MF0vZyxmdW5jdGlvbihPKXty''@;'; put 'put ''ZXR1cm4gbVtPXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNjc4NTk6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0''@;'; put 'put ''cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJuYiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hcnNfYXByLl9t''@;'; put 'put ''YWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzXHhmOG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xceGY4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJz''@;'; put 'put ''XHhmOC5fbWEuX3RpLl9vbi5fdG8uX2ZyLl9sXHhmOC4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InNceGY4X21hX3RpX29uX3RvX2ZyX2xceGY4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJE''@;'; put 'put ''RC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBISDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltpIG1vcmdlbiBrbC5dIExUIixuZXh0''@;'; put 'put ''V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW2kgZ1x4ZTVyIGtsLl0gTFQiLGxhc3RXZWVrOiJbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGVuIixzOiJub2VuIHNla3VuZGVyIixzczoi''@;'; put 'put ''JWQgc2VrdW5kZXIiLG06ImV0dCBtaW51dHQiLG1tOiIlZCBtaW51dHRlciIsaDoiXHhlOW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJceGU5biBkYWciLGRkOiIlZCBkYWdlciIsdzoiXHhlOW4gdWtlIix3dzoiJWQgdWtlciIsTToiXHhlOW4gbVx4ZTVuZWQiLE1NOiIlZCBtXHhlNW5lZGVy''@;'; put 'put ''Iix5OiJldHQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSwxMzY0MjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgeD17MToiXHUwOTY3IiwyOiJcdTA5NjgiLDM6Ilx1MDk2OSIsNDoiXHUwOTZhIiw1OiJcdTA5NmIiLDY6Ilx1MDk2YyIsNzoiXHUwOTZkIiw4OiJcdTA5NmUiLDk6Ilx1MDk2ZiIsMDoiXHUwOTY2In0sbT17Ilx1MDk2NyI6IjEiLCJcdTA5NjgiOiIyIiwiXHUwOTY5IjoiMyIsIlx1MDk2''@;'; put 'put ''YSI6IjQiLCJcdTA5NmIiOiI1IiwiXHUwOTZjIjoiNiIsIlx1MDk2ZCI6IjciLCJcdTA5NmUiOiI4IiwiXHUwOTZmIjoiOSIsIlx1MDk2NiI6IjAifTtvZS5kZWZpbmVMb2NhbGUoIm5lIix7bW9udGhzOiJcdTA5MWNcdTA5MjhcdTA5MzVcdTA5MzBcdTA5NDBfXHUwOTJiXHUwOTQ3XHUwOTJj''@;'; put 'put ''XHUwOTRkXHUwOTMwXHUwOTQxXHUwOTM1XHUwOTMwXHUwOTQwX1x1MDkyZVx1MDkzZVx1MDkzMFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5M2ZcdTA5MzJfXHUwOTJlXHUwOTA4X1x1MDkxY1x1MDk0MVx1MDkyOF9cdTA5MWNcdTA5NDFcdTA5MzJcdTA5M2VcdTA5''@;'; put 'put ''MDhfXHUwOTA1XHUwOTE3XHUwOTM3XHUwOTRkXHUwOTFmX1x1MDkzOFx1MDk0N1x1MDkyYVx1MDk0ZFx1MDkxZlx1MDk0N1x1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMF9cdTA5MDVcdTA5MTVcdTA5NGRcdTA5MWZcdTA5NGJcdTA5MmNcdTA5MzBfXHUwOTI4XHUwOTRiXHUwOTJkXHUwOTQ3XHUw''@;'; put 'put ''OTJlXHUwOTRkXHUwOTJjXHUwOTMwX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0N1x1MDkyZVx1MDk0ZFx1MDkyY1x1MDkzMCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwOTFjXHUwOTI4Ll9cdTA5MmJcdTA5NDdcdTA5MmNcdTA5NGRcdTA5MzBcdTA5NDEuX1x1MDkyZVx1MDkzZVx1MDkz''@;'; put 'put ''MFx1MDk0ZFx1MDkxYV9cdTA5MDVcdTA5MmFcdTA5NGRcdTA5MzBcdTA5M2YuX1x1MDkyZVx1MDkwOF9cdTA5MWNcdTA5NDFcdTA5MjhfXHUwOTFjXHUwOTQxXHUwOTMyXHUwOTNlXHUwOTA4Ll9cdTA5MDVcdTA5MTcuX1x1MDkzOFx1MDk0N1x1MDkyYVx1MDk0ZFx1MDkxZi5fXHUwOTA1XHUw''@;'; put 'put ''OTE1XHUwOTRkXHUwOTFmXHUwOTRiLl9cdTA5MjhcdTA5NGJcdTA5MmRcdTA5NDcuX1x1MDkyMVx1MDkzZlx1MDkzOFx1MDk0Ny4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwOTA2XHUwOTA3XHUwOTI0XHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkzOFx1MDk0''@;'; put 'put ''Ylx1MDkyZVx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MmVcdTA5MTlcdTA5NGRcdTA5MTdcdTA5MzJcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTJjXHUwOTQxXHUwOTI3XHUwOTJjXHUwOTNlXHUwOTMwX1x1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZlx1MDkyY1x1MDkzZVx1MDkzMF9cdTA5MzZcdTA5''@;'; put 'put ''NDFcdTA5MTVcdTA5NGRcdTA5MzBcdTA5MmNcdTA5M2VcdTA5MzBfXHUwOTM2XHUwOTI4XHUwOTNmXHUwOTJjXHUwOTNlXHUwOTMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDkwNlx1MDkwN1x1MDkyNC5fXHUwOTM4XHUwOTRiXHUwOTJlLl9cdTA5MmVcdTA5MTlcdTA5NGRcdTA5''@;'; put 'put ''MTdcdTA5MzIuX1x1MDkyY1x1MDk0MVx1MDkyNy5fXHUwOTJjXHUwOTNmXHUwOTM5XHUwOTNmLl9cdTA5MzZcdTA5NDFcdTA5MTVcdTA5NGRcdTA5MzAuX1x1MDkzNlx1MDkyOFx1MDkzZi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDkwNi5fXHUwOTM4XHUwOTRiLl9cdTA5MmVcdTA5''@;'; put 'put ''MDIuX1x1MDkyY1x1MDk0MS5fXHUwOTJjXHUwOTNmLl9cdTA5MzZcdTA5NDEuX1x1MDkzNi4iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiQVx1MDkxNVx1MDk0YiBoOm1tIFx1MDkyY1x1MDkxY1x1MDk0NyIsTFRTOiJBXHUwOTE1XHUwOTRi''@;'; put 'put ''IGg6bW06c3MgXHUwOTJjXHUwOTFjXHUwOTQ3IixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVksIEFcdTA5MTVcdTA5NGIgaDptbSBcdTA5MmNcdTA5MWNcdTA5NDciLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBBXHUwOTE1XHUwOTRiIGg6bW0gXHUw''@;'; put 'put ''OTJjXHUwOTFjXHUwOTQ3In0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MDk2N1x1MDk2OFx1MDk2OVx1MDk2YVx1MDk2Ylx1MDk2Y1x1MDk2ZFx1MDk2ZVx1MDk2Zlx1MDk2Nl0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0''@;'; put 'put ''aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sbWVyaWRpZW1QYXJzZTovXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTNmfFx1MDkyY1x1MDkzZlx1MDkzOVx1MDkzZVx1MDkyOHxcdTA5MjZcdTA5M2ZcdTA5MDlcdTA5MDFcdTA5MzhcdTA5NGJ8''@;'; put 'put ''XHUwOTM4XHUwOTNlXHUwOTAxXHUwOTFkLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gMTI9PT1NJiYoTT0wKSwiXHUwOTMwXHUwOTNlXHUwOTI0XHUwOTNmIj09PU8/TTw0P006TSsxMjoiXHUwOTJjXHUwOTNmXHUwOTM5XHUwOTNlXHUwOTI4Ij09PU8/TToiXHUwOTI2XHUw''@;'; put 'put ''OTNmXHUwOTA5XHUwOTAxXHUwOTM4XHUwOTRiIj09PU8/TT49MTA/TTpNKzEyOiJcdTA5MzhcdTA5M2VcdTA5MDFcdTA5MWQiPT09Tz9NKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDM/Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZiI6TTwxMj8iXHUwOTJj''@;'; put 'put ''XHUwOTNmXHUwOTM5XHUwOTNlXHUwOTI4IjpNPDE2PyJcdTA5MjZcdTA5M2ZcdTA5MDlcdTA5MDFcdTA5MzhcdTA5NGIiOk08MjA/Ilx1MDkzOFx1MDkzZVx1MDkwMVx1MDkxZCI6Ilx1MDkzMFx1MDkzZVx1MDkyNFx1MDkzZiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwOTA2XHUwOTFjXSBM''@;'; put 'put ''VCIsbmV4dERheToiW1x1MDkyZFx1MDk0Ylx1MDkzMlx1MDkzZl0gTFQiLG5leHRXZWVrOiJbXHUwOTA2XHUwOTA5XHUwOTAxXHUwOTI2XHUwOTRiXSBkZGRkWyxdIExUIixsYXN0RGF5OiJbXHUwOTM5XHUwOTNmXHUwOTFjXHUwOTRiXSBMVCIsbGFzdFdlZWs6IltcdTA5MTdcdTA5MGZcdTA5''@;'; put 'put ''MTVcdTA5NGJdIGRkZGRbLF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHUwOTJlXHUwOTNlIixwYXN0OiIlcyBcdTA5MDVcdTA5MTdcdTA5M2VcdTA5MjFcdTA5M2YiLHM6Ilx1MDkxNVx1MDk0N1x1MDkzOVx1MDk0MCBcdTA5MTVcdTA5NGRcdTA5MzdcdTA5''@;'; put 'put ''MjMiLHNzOiIlZCBcdTA5MzhcdTA5NDdcdTA5MTVcdTA5NDdcdTA5MjNcdTA5NGRcdTA5MjEiLG06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5NDdcdTA5MWYiLG1tOiIlZCBcdTA5MmVcdTA5M2ZcdTA5MjhcdTA5NDdcdTA5MWYiLGg6Ilx1MDkwZlx1MDkxNSBcdTA5MThc''@;'; put 'put ''dTA5MjNcdTA5NGRcdTA5MWZcdTA5M2UiLGhoOiIlZCBcdTA5MThcdTA5MjNcdTA5NGRcdTA5MWZcdTA5M2UiLGQ6Ilx1MDkwZlx1MDkxNSBcdTA5MjZcdTA5M2ZcdTA5MjgiLGRkOiIlZCBcdTA5MjZcdTA5M2ZcdTA5MjgiLE06Ilx1MDkwZlx1MDkxNSBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5''@;'; put 'put ''MjhcdTA5M2UiLE1NOiIlZCBcdTA5MmVcdTA5MzlcdTA5M2ZcdTA5MjhcdTA5M2UiLHk6Ilx1MDkwZlx1MDkxNSBcdTA5MmNcdTA5MzBcdTA5NGRcdTA5MzciLHl5OiIlZCBcdTA5MmNcdTA5MzBcdTA5NGRcdTA5MzcifSx3ZWVrOntkb3c6MCxkb3k6Nn19KX0oUig5NzU4NikpfSw5OTg3NTpm''@;'; put 'put ''dW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtPSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rf''@;'; put 'put ''bm92X2RlYyIuc3BsaXQoIl8iKSxzZT1bL15qYW4vaSwvXmZlYi9pLC9eKG1hYXJ0fG1ydFwuPykkL2ksL15hcHIvaSwvXm1laSQvaSwvXmp1bltpLl0/JC9pLC9eanVsW2kuXT8kL2ksL15hdWcvaSwvXnNlcC9pLC9eb2t0L2ksL15ub3YvaSwvXmRlYy9pXSxNPS9eKGphbnVhcml8ZmVicnVh''@;'; put 'put ''cml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pO29lLmRlZmluZUxvY2FsZSgi''@;'; put 'put ''bmwtYmUiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihJLGope3JldHVybiBJPy8tTU1NLS8udGVzdChq''@;'; put 'put ''KT9tW0kubW9udGgoKV06eFtJLm1vbnRoKCldOnh9LG1vbnRoc1JlZ2V4Ok0sbW9udGhzU2hvcnRSZWdleDpNLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVj''@;'; put 'put ''ZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG1vbnRoc1BhcnNlOnNlLGxvbmdNb250aHNQYXJzZTpzZSxzaG9ydE1vbnRoc1BhcnNl''@;'; put 'put ''OnNlLHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiem9fbWFfZGlfd29f''@;'; put 'put ''ZG9fdnJfemEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBI''@;'; put 'put ''SDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5leHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbZ2lzdGVyZW4gb21dIExUIixsYXN0V2VlazoiW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvdmVyICVzIixwYXN0OiIlcyBnZWxlZGVuIixzOiJlZW4gcGFhciBzZWNvbmRlbiIsc3M6IiVkIHNlY29uZGVuIixtOiJceGU5XHhlOW4gbWludXV0IixtbToiJWQgbWludXRlbiIsaDoiXHhlOVx4ZTluIHV1ciIsaGg6IiVkIHV1ciIsZDoiXHhl''@;'; put 'put ''OVx4ZTluIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiJceGU5XHhlOW4gbWFhbmQiLE1NOiIlZCBtYWFuZGVuIix5OiJceGU5XHhlOW4gamFhciIseXk6IiVkIGphYXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oSSl7cmV0dXJuIEkr''@;'; put 'put ''KDE9PT1JfHw4PT09SXx8ST49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDY1NDQxOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9z''@;'; put 'put ''ZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG09Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHNlPVsvXmphbi9pLC9eZmViL2ksL14obWFhcnR8bXJ0XC4/KSQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVuW2kuXT8kL2ks''@;'; put 'put ''L15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3QvaSwvXm5vdi9pLC9eZGVjL2ldLE09L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cLj98ZmViXC4/fG1ydFwu''@;'; put 'put ''P3xhcHJcLj98anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2k7b2UuZGVmaW5lTG9jYWxlKCJubCIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVy''@;'; put 'put ''X2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKEksail7cmV0dXJuIEk/Ly1NTU0tLy50ZXN0KGopP21bSS5tb250aCgpXTp4W0kubW9udGgoKV06eH0sbW9udGhzUmVnZXg6TSxtb250aHNTaG9ydFJlZ2V4Ok0sbW9udGhzU3RyaWN0UmVnZXg6L14oamFudWFyaXxm''@;'; put 'put ''ZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xtZWl8anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0''@;'; put 'put ''XC4/fG5vdlwuP3xkZWNcLj8pL2ksbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6c2Usd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNT''@;'; put 'put ''aG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJ6b19tYV9kaV93b19kb192cl96YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0t''@;'; put 'put ''WVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxh''@;'; put 'put ''c3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixzczoiJWQgc2Vjb25kZW4iLG06''@;'; put 'put ''Ilx4ZTlceGU5biBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiJceGU5XHhlOW4gdXVyIixoaDoiJWQgdXVyIixkOiJceGU5XHhlOW4gZGFnIixkZDoiJWQgZGFnZW4iLHc6Ilx4ZTlceGU5biB3ZWVrIix3dzoiJWQgd2VrZW4iLE06Ilx4ZTlceGU5biBtYWFuZCIsTU06IiVkIG1hYW5kZW4i''@;'; put 'put ''LHk6Ilx4ZTlceGU5biBqYWFyIix5eToiJWQgamFhciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihJKXtyZXR1cm4gSSsoMT09PUl8fDg9PT1JfHxJPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1''@;'; put 'put ''ODYpKX0sODEzMTE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJubiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNl''@;'; put 'put ''bWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hcnNfYXByLl9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzdW5kYWdfbVx4ZTVuZGFnX3R5c2RhZ19vbnNkYWdfdG9y''@;'; put 'put ''c2RhZ19mcmVkYWdfbGF1cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdS5fbVx4ZTUuX3R5Ll9vbi5fdG8uX2ZyLl9sYXUuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tXHhlNV90eV9vbl90b19mcl9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFn''@;'; put 'put ''IGtsb2trYV0gTFQiLG5leHREYXk6IltJIG1vcmdvbiBrbG9ra2FdIExUIixuZXh0V2VlazoiZGRkZCBba2xva2thXSBMVCIsbGFzdERheToiW0kgZ1x4ZTVyIGtsb2trYV0gTFQiLGxhc3RXZWVrOiJbRlx4ZjhyZWdceGU1YW5kZV0gZGRkZCBba2xva2thXSBMVCIsc2FtZUVsc2U6IkwifSxy''@;'; put 'put ''ZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGFuIixzOiJub2tyZSBzZWt1bmQiLHNzOiIlZCBzZWt1bmQiLG06ImVpdCBtaW51dHQiLG1tOiIlZCBtaW51dHQiLGg6ImVpbiB0aW1lIixoaDoiJWQgdGltYXIiLGQ6ImVpbiBkYWciLGRkOiIlZCBkYWdhciIsdzoiZWkg''@;'; put 'put ''dmVrZSIsd3c6IiVkIHZla2VyIixNOiJlaW4gbVx4ZTVuYWQiLE1NOiIlZCBtXHhlNW5hZGVyIix5OiJlaXQgXHhlNXIiLHl5OiIlZCBceGU1ciJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4Nikp''@;'; put 'put ''fSw3MjU2NzpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoIm9jLWxuYyIse21vbnRoczp7c3RhbmRhbG9uZToiZ2VuaVx4ZThyX2ZlYnJpXHhlOHJfbWFyXHhlN19hYnJpbF9tYWlfanVuaF9qdWxoZXRfYWdvc3Rfc2V0ZW1icmVf''@;'; put 'put ''b2N0XHhmMmJyZV9ub3ZlbWJyZV9kZWNlbWJyZSIuc3BsaXQoIl8iKSxmb3JtYXQ6ImRlIGdlbmlceGU4cl9kZSBmZWJyaVx4ZThyX2RlIG1hclx4ZTdfZCdhYnJpbF9kZSBtYWlfZGUganVuaF9kZSBqdWxoZXRfZCdhZ29zdF9kZSBzZXRlbWJyZV9kJ29jdFx4ZjJicmVfZGUgbm92ZW1icmVf''@;'; put 'put ''ZGUgZGVjZW1icmUiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhccykrTU1NTS99LG1vbnRoc1Nob3J0OiJnZW4uX2ZlYnIuX21hclx4ZTdfYWJyLl9tYWlfanVuaF9qdWxoLl9hZ28uX3NldC5fb2N0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVr''@;'; put 'put ''ZGF5czoiZGltZW5nZV9kaWx1bnNfZGltYXJzX2RpbVx4ZThjcmVzX2Rpalx4ZjJ1c19kaXZlbmRyZXNfZGlzc2FidGUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZGcuX2RsLl9kbS5fZGMuX2RqLl9kdi5fZHMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkZ19kbF9kbV9kY19kal9k''@;'; put 'put ''dl9kcyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW2RlXSBZWVlZIixsbDoiRCBNTU0gWVlZWSIsTExMOiJEIE1NTU0gW2RlXSBZWVlZIFthXSBIOm1tIixs''@;'; put 'put ''bGw6IkQgTU1NIFlZWVksIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYV0gSDptbSIsbGxsbDoiZGRkIEQgTU1NIFlZWVksIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3VceGU4aSBhXSBMVCIsbmV4dERheToiW2RlbWFuIGFdIExUIixuZXh0V2VlazoiZGRkZCBbYV0g''@;'; put 'put ''TFQiLGxhc3REYXk6IltpXHhlOHIgYV0gTFQiLGxhc3RXZWVrOiJkZGRkIFtwYXNzYXQgYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImQnYXF1XHhlZCAlcyIscGFzdDoiZmEgJXMiLHM6InVuYXMgc2Vnb25kYXMiLHNzOiIlZCBzZWdvbmRhcyIsbToidW5hIG1p''@;'; put 'put ''bnV0YSIsbW06IiVkIG1pbnV0YXMiLGg6InVuYSBvcmEiLGhoOiIlZCBvcmFzIixkOiJ1biBqb3JuIixkZDoiJWQgam9ybnMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0ocnxufHR8XHhlOHxh''@;'; put 'put ''KS8sb3JkaW5hbDpmdW5jdGlvbihtLHNlKXt2YXIgTT0xPT09bT8iciI6Mj09PW0/Im4iOjM9PT1tPyJyIjo0PT09bT8idCI6Ilx4ZTgiO3JldHVybigidyI9PT1zZXx8IlciPT09c2UpJiYoTT0iYSIpLG0rTX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNTY5NjI6ZnVuY3Rp''@;'; put 'put ''b24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezE6Ilx1MGE2NyIsMjoiXHUwYTY4IiwzOiJcdTBhNjkiLDQ6Ilx1MGE2YSIsNToiXHUwYTZiIiw2OiJcdTBhNmMiLDc6Ilx1MGE2ZCIsODoiXHUwYTZlIiw5OiJcdTBhNmYiLDA6Ilx1MGE2NiJ9LG09eyJcdTBh''@;'; put 'put ''NjciOiIxIiwiXHUwYTY4IjoiMiIsIlx1MGE2OSI6IjMiLCJcdTBhNmEiOiI0IiwiXHUwYTZiIjoiNSIsIlx1MGE2YyI6IjYiLCJcdTBhNmQiOiI3IiwiXHUwYTZlIjoiOCIsIlx1MGE2ZiI6IjkiLCJcdTBhNjYiOiIwIn07b2UuZGVmaW5lTG9jYWxlKCJwYS1pbiIse21vbnRoczoiXHUwYTFj''@;'; put 'put ''XHUwYTI4XHUwYTM1XHUwYTMwXHUwYTQwX1x1MGEyYlx1MGEzY1x1MGEzMFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmVcdTBhM2VcdTBhMzBcdTBhMWFfXHUwYTA1XHUwYTJhXHUwYTRkXHUwYTMwXHUwYTQ4XHUwYTMyX1x1MGEyZVx1MGEwOF9cdTBhMWNcdTBhNDJcdTBhMjhfXHUwYTFjXHUw''@;'; put 'put ''YTQxXHUwYTMyXHUwYTNlXHUwYTA4X1x1MGEwNVx1MGExN1x1MGEzOFx1MGEyNF9cdTBhMzhcdTBhMjRcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTA1XHUwYTE1XHUwYTI0XHUwYTQyXHUwYTJjXHUwYTMwX1x1MGEyOFx1MGEzNVx1MGE3MFx1MGEyY1x1MGEzMF9cdTBhMjZcdTBhMzhcdTBhNzBc''@;'; put 'put ''dTBhMmNcdTBhMzAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGExY1x1MGEyOFx1MGEzNVx1MGEzMFx1MGE0MF9cdTBhMmJcdTBhM2NcdTBhMzBcdTBhMzVcdTBhMzBcdTBhNDBfXHUwYTJlXHUwYTNlXHUwYTMwXHUwYTFhX1x1MGEwNVx1MGEyYVx1MGE0ZFx1MGEzMFx1MGE0OFx1MGEz''@;'; put 'put ''Ml9cdTBhMmVcdTBhMDhfXHUwYTFjXHUwYTQyXHUwYTI4X1x1MGExY1x1MGE0MVx1MGEzMlx1MGEzZVx1MGEwOF9cdTBhMDVcdTBhMTdcdTBhMzhcdTBhMjRfXHUwYTM4XHUwYTI0XHUwYTcwXHUwYTJjXHUwYTMwX1x1MGEwNVx1MGExNVx1MGEyNFx1MGE0Mlx1MGEyY1x1MGEzMF9cdTBhMjhc''@;'; put 'put ''dTBhMzVcdTBhNzBcdTBhMmNcdTBhMzBfXHUwYTI2XHUwYTM4XHUwYTcwXHUwYTJjXHUwYTMwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBhMTBcdTBhMjRcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM4XHUwYTRiXHUwYTJlXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEyZVx1MGE3MFx1MGExN1x1''@;'; put 'put ''MGEzMlx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMmNcdTBhNDFcdTBhMjdcdTBhMzVcdTBhM2VcdTBhMzBfXHUwYTM1XHUwYTQwXHUwYTMwXHUwYTM1XHUwYTNlXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGE0MVx1MGE3MVx1MGExNVx1MGEzMFx1MGEzNVx1MGEzZVx1MGEzMF9cdTBhMzhcdTBhM2Nc''@;'; put 'put ''dTBhMjhcdTBhNDBcdTBhMWFcdTBhMzBcdTBhMzVcdTBhM2VcdTBhMzAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYTEwXHUwYTI0X1x1MGEzOFx1MGE0Ylx1MGEyZV9cdTBhMmVcdTBhNzBcdTBhMTdcdTBhMzJfXHUwYTJjXHUwYTQxXHUwYTI3X1x1MGEzNVx1MGE0MFx1MGEzMF9c''@;'; put 'put ''dTBhMzhcdTBhM2NcdTBhNDFcdTBhMTVcdTBhMzBfXHUwYTM4XHUwYTNjXHUwYTI4XHUwYTQwIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBhMTBcdTBhMjRfXHUwYTM4XHUwYTRiXHUwYTJlX1x1MGEyZVx1MGE3MFx1MGExN1x1MGEzMl9cdTBhMmNcdTBhNDFcdTBhMjdfXHUwYTM1XHUw''@;'; put 'put ''YTQwXHUwYTMwX1x1MGEzOFx1MGEzY1x1MGE0MVx1MGExNVx1MGEzMF9cdTBhMzhcdTBhM2NcdTBhMjhcdTBhNDAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0gXHUwYTM1XHUwYTFjXHUwYTQ3IixMVFM6IkEgaDptbTpzcyBcdTBhMzVcdTBhMWNcdTBhNDciLEw6IkRE''@;'; put 'put ''L01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIFx1MGEzNVx1MGExY1x1MGE0NyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSBcdTBhMzVcdTBhMWNcdTBhNDcifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MGEwNVx1MGExY10gTFQiLG5l''@;'; put 'put ''eHREYXk6IltcdTBhMTVcdTBhMzJdIExUIixuZXh0V2VlazoiW1x1MGEwNVx1MGExN1x1MGEzMlx1MGEzZV0gZGRkZCwgTFQiLGxhc3REYXk6IltcdTBhMTVcdTBhMzJdIExUIixsYXN0V2VlazoiW1x1MGEyYVx1MGEzZlx1MGExYlx1MGEzMlx1MGE0N10gZGRkZCwgTFQiLHNhbWVFbHNlOiJM''@;'; put 'put ''In0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIFx1MGEzNVx1MGEzZlx1MGE3MVx1MGExYSIscGFzdDoiJXMgXHUwYTJhXHUwYTNmXHUwYTFiXHUwYTMyXHUwYTQ3IixzOiJcdTBhMTVcdTBhNDFcdTBhMWQgXHUwYTM4XHUwYTE1XHUwYTNmXHUwYTcwXHUwYTFmIixzczoiJWQgXHUwYTM4XHUw''@;'; put 'put ''YTE1XHUwYTNmXHUwYTcwXHUwYTFmIixtOiJcdTBhMDdcdTBhMTUgXHUwYTJlXHUwYTNmXHUwYTcwXHUwYTFmIixtbToiJWQgXHUwYTJlXHUwYTNmXHUwYTcwXHUwYTFmIixoOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTE4XHUwYTcwXHUwYTFmXHUwYTNlIixoaDoiJWQgXHUwYTE4XHUwYTcw''@;'; put 'put ''XHUwYTFmXHUwYTQ3IixkOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTI2XHUwYTNmXHUwYTI4IixkZDoiJWQgXHUwYTI2XHUwYTNmXHUwYTI4IixNOiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTJlXHUwYTM5XHUwYTQwXHUwYTI4XHUwYTNlIixNTToiJWQgXHUwYTJlXHUwYTM5XHUwYTQwXHUw''@;'; put 'put ''YTI4XHUwYTQ3Iix5OiJcdTBhMDdcdTBhNzFcdTBhMTUgXHUwYTM4XHUwYTNlXHUwYTMyIix5eToiJWQgXHUwYTM4XHUwYTNlXHUwYTMyIn0scHJlcGFyc2U6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvW1x1MGE2N1x1MGE2OFx1MGE2OVx1MGE2YVx1MGE2Ylx1MGE2Y1x1MGE2ZFx1''@;'; put 'put ''MGE2ZVx1MGE2Zlx1MGE2Nl0vZyxmdW5jdGlvbihPKXtyZXR1cm4gbVtPXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oTyl7cmV0dXJuIHhbT119KX0sbWVyaWRpZW1QYXJzZTovXHUwYTMwXHUwYTNlXHUwYTI0fFx1MGEzOFx1MGEz''@;'; put 'put ''NVx1MGE0N1x1MGEzMHxcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzB8XHUwYTM4XHUwYTNjXHUwYTNlXHUwYTJlLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gMTI9PT1NJiYoTT0wKSwiXHUwYTMwXHUwYTNlXHUwYTI0Ij09PU8/TTw0P006TSsxMjoiXHUw''@;'; put 'put ''YTM4XHUwYTM1XHUwYTQ3XHUwYTMwIj09PU8/TToiXHUwYTI2XHUwYTQxXHUwYTJhXHUwYTM5XHUwYTNmXHUwYTMwIj09PU8/TT49MTA/TTpNKzEyOiJcdTBhMzhcdTBhM2NcdTBhM2VcdTBhMmUiPT09Tz9NKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDQ/''@;'; put 'put ''Ilx1MGEzMFx1MGEzZVx1MGEyNCI6TTwxMD8iXHUwYTM4XHUwYTM1XHUwYTQ3XHUwYTMwIjpNPDE3PyJcdTBhMjZcdTBhNDFcdTBhMmFcdTBhMzlcdTBhM2ZcdTBhMzAiOk08MjA/Ilx1MGEzOFx1MGEzY1x1MGEzZVx1MGEyZSI6Ilx1MGEzMFx1MGEzZVx1MGEyNCJ9LHdlZWs6e2RvdzowLGRv''@;'; put 'put ''eTo2fX0pfShSKDk3NTg2KSl9LDYxMDYzOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PSJzdHljemVcdTAxNDRfbHV0eV9tYXJ6ZWNfa3dpZWNpZVx1MDE0NF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWVcdTAxNDRfd3J6ZXNpZVx1MDE0NF9w''@;'; put 'put ''YVx1MDE3YWR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWVcdTAxNDQiLnNwbGl0KCJfIiksbT0ic3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplXHUwMTVibmlhX3BhXHUwMTdhZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhIi5z''@;'; put 'put ''cGxpdCgiXyIpLHNlPVsvXnN0eS9pLC9ebHV0L2ksL15tYXIvaSwvXmt3aS9pLC9ebWFqL2ksL15jemUvaSwvXmxpcC9pLC9ec2llL2ksL153cnovaSwvXnBhXHUwMTdhL2ksL15saXMvaSwvXmdydS9pXTtmdW5jdGlvbiBNKGope3JldHVybiBqJTEwPDUmJmolMTA+MSYmfn4oai8xMCklMTAh''@;'; put 'put ''PTF9ZnVuY3Rpb24gTyhqLEcsRCl7dmFyIFQ9aisiICI7c3dpdGNoKEQpe2Nhc2Uic3MiOnJldHVybiBUKyhNKGopPyJzZWt1bmR5Ijoic2VrdW5kIik7Y2FzZSJtIjpyZXR1cm4gRz8ibWludXRhIjoibWludXRcdTAxMTkiO2Nhc2UibW0iOnJldHVybiBUKyhNKGopPyJtaW51dHkiOiJtaW51''@;'; put 'put ''dCIpO2Nhc2UiaCI6cmV0dXJuIEc/ImdvZHppbmEiOiJnb2R6aW5cdTAxMTkiO2Nhc2UiaGgiOnJldHVybiBUKyhNKGopPyJnb2R6aW55IjoiZ29kemluIik7Y2FzZSJ3dyI6cmV0dXJuIFQrKE0oaik/InR5Z29kbmllIjoidHlnb2RuaSIpO2Nhc2UiTU0iOnJldHVybiBUKyhNKGopPyJtaWVz''@;'; put 'put ''aVx1MDEwNWNlIjoibWllc2lcdTAxMTljeSIpO2Nhc2UieXkiOnJldHVybiBUKyhNKGopPyJsYXRhIjoibGF0Iil9fW9lLmRlZmluZUxvY2FsZSgicGwiLHttb250aHM6ZnVuY3Rpb24oaixHKXtyZXR1cm4gaj8vRCBNTU1NLy50ZXN0KEcpP21bai5tb250aCgpXTp4W2oubW9udGgoKV06eH0s''@;'; put 'put ''bW9udGhzU2hvcnQ6InN0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhXHUwMTdhX2xpc19ncnUiLnNwbGl0KCJfIiksbW9udGhzUGFyc2U6c2UsbG9uZ01vbnRoc1BhcnNlOnNlLHNob3J0TW9udGhzUGFyc2U6c2Usd2Vla2RheXM6Im5pZWR6aWVsYV9wb25pZWR6aWFcdTAx''@;'; put 'put ''NDJla193dG9yZWtfXHUwMTVicm9kYV9jendhcnRla19waVx1MDEwNXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmR6X3Bvbl93dF9cdTAxNWJyX2N6d19wdF9zb2IiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik5kX1BuX1d0X1x1MDE1YXJfQ3pfUHRfU28iLnNwbGl0''@;'; put 'put ''KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRHppXHUwMTVi''@;'; put 'put ''IG9dIExUIixuZXh0RGF5OiJbSnV0cm8gb10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgbmllZHppZWxcdTAxMTkgb10gTFQiO2Nhc2UgMjpyZXR1cm4iW1dlIHd0b3JlayBvXSBMVCI7Y2FzZSAzOnJldHVybiJbVyBcdTAxNWJy''@;'; put 'put ''b2RcdTAxMTkgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW1cgc29ib3RcdTAxMTkgb10gTFQiO2RlZmF1bHQ6cmV0dXJuIltXXSBkZGRkIFtvXSBMVCJ9fSxsYXN0RGF5OiJbV2N6b3JhaiBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb''@;'; put 'put ''VyB6ZXN6XHUwMTQyXHUwMTA1IG5pZWR6aWVsXHUwMTE5IG9dIExUIjtjYXNlIDM6cmV0dXJuIltXIHplc3pcdTAxNDJcdTAxMDUgXHUwMTVicm9kXHUwMTE5IG9dIExUIjtjYXNlIDY6cmV0dXJuIltXIHplc3pcdTAxNDJcdTAxMDUgc29ib3RcdTAxMTkgb10gTFQiO2RlZmF1bHQ6cmV0dXJu''@;'; put 'put ''IltXIHplc3pcdTAxNDJ5XSBkZGRkIFtvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoiJXMgdGVtdSIsczoia2lsa2Egc2VrdW5kIixzczpPLG06TyxtbTpPLGg6TyxoaDpPLGQ6IjEgZHppZVx1MDE0NCIsZGQ6IiVkIGRuaSIsdzoidHlk''@;'; put 'put ''emllXHUwMTQ0Iix3dzpPLE06Im1pZXNpXHUwMTA1YyIsTU06Tyx5OiJyb2siLHl5Ok99LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw5NzQ3NjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rp''@;'; put 'put ''b24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInB0LWJyIix7bW9udGhzOiJqYW5laXJvX2ZldmVyZWlyb19tYXJceGU3b19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1No''@;'; put 'put ''b3J0OiJqYW5fZmV2X21hcl9hYnJfbWFpX2p1bl9qdWxfYWdvX3NldF9vdXRfbm92X2RleiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZG9taW5nb19zZWd1bmRhLWZlaXJhX3Rlclx4ZTdhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc1x4ZTFiYWRvIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3NceGUxYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fMlx4YWFfM1x4YWFfNFx4YWFfNVx4YWFfNlx4YWFfc1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0''@;'; put 'put ''OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFtceGUwc10gSEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbXHhlMHNdIEhIOm1tIn0sY2Fs''@;'; put 'put ''ZW5kYXI6e3NhbWVEYXk6IltIb2plIFx4ZTBzXSBMVCIsbmV4dERheToiW0FtYW5oXHhlMyBceGUwc10gTFQiLG5leHRXZWVrOiJkZGRkIFtceGUwc10gTFQiLGxhc3REYXk6IltPbnRlbSBceGUwc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09''@;'; put 'put ''dGhpcy5kYXkoKT8iW1x4ZGFsdGltb10gZGRkZCBbXHhlMHNdIExUIjoiW1x4ZGFsdGltYV0gZGRkZCBbXHhlMHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6ImhceGUxICVzIixzOiJwb3Vjb3Mgc2VndW5kb3MiLHNzOiIlZCBzZWd1bmRv''@;'; put 'put ''cyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbVx4ZWFzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsx''@;'; put 'put ''LDJ9XHhiYS8sb3JkaW5hbDoiJWRceGJhIixpbnZhbGlkRGF0ZToiRGF0YSBpbnZceGUxbGlkYSJ9KX0oUig5NzU4NikpfSw3ODcxOTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInB0Iix7bW9udGhzOiJqYW5laXJvX2ZldmVy''@;'; put 'put ''ZWlyb19tYXJceGU3b19hYnJpbF9tYWlvX2p1bmhvX2p1bGhvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlemVtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmV2X21hcl9hYnJfbWFpX2p1bl9qdWxfYWdvX3NldF9vdXRfbm92X2RleiIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5czoiRG9taW5nb19TZWd1bmRhLWZlaXJhX1Rlclx4ZTdhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU1x4ZTFiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1NceGUxYiIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c01pbjoiRG9fMlx4YWFfM1x4YWFfNFx4YWFfNVx4YWFfNlx4YWFfU1x4ZTEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZ''@;'; put 'put ''WVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgXHhlMHNdIExUIixuZXh0RGF5OiJbQW1hbmhceGUzIFx4ZTBzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4''@;'; put 'put ''ZTBzXSBMVCIsbGFzdERheToiW09udGVtIFx4ZTBzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCl8fDY9PT10aGlzLmRheSgpPyJbXHhkYWx0aW1vXSBkZGRkIFtceGUwc10gTFQiOiJbXHhkYWx0aW1hXSBkZGRkIFtceGUwc10gTFQifSxzYW1lRWxzZToi''@;'; put 'put ''TCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaFx4ZTEgJXMiLHM6InNlZ3VuZG9zIixzczoiJWQgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLHc6InVt''@;'; put 'put ''YSBzZW1hbmEiLHd3OiIlZCBzZW1hbmFzIixNOiJ1bSBtXHhlYXMiLE1NOiIlZCBtZXNlcyIseToidW0gYW5vIix5eToiJWQgYW5vcyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1ceGJhLyxvcmRpbmFsOiIlZFx4YmEiLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9''@;'; put 'put ''LDUxMDA0OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoc2UsTSxPKXt2YXIgaj0iICI7cmV0dXJuKHNlJTEwMD49MjB8fHNlPj0xMDAmJnNlJTEwMD09MCkmJihqPSIgZGUgIiksc2Urait7c3M6InNlY3VuZGUiLG1tOiJtaW51dGUiLGho''@;'; put 'put ''OiJvcmUiLGRkOiJ6aWxlIix3dzoic1x1MDEwM3B0XHUwMTAzbVx4ZTJuaSIsTU06Imx1bmkiLHl5OiJhbmkifVtPXX1vZS5kZWZpbmVMb2NhbGUoInJvIix7bW9udGhzOiJpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVfbWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmll''@;'; put 'put ''X29jdG9tYnJpZV9ub2llbWJyaWVfZGVjZW1icmllIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpYW4uX2ZlYi5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZHVtaW5p''@;'; put 'put ''Y1x1MDEwM19sdW5pX21hclx1MDIxYmlfbWllcmN1cmlfam9pX3ZpbmVyaV9zXHhlMm1iXHUwMTAzdFx1MDEwMyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9TXHhlMm0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkR1X0x1X01hX01pX0pvX1Zp''@;'; put 'put ''X1NceGUyIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb''@;'; put 'put ''YXppIGxhXSBMVCIsbmV4dERheToiW21ceGUyaW5lIGxhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2xhXSBMVCIsbGFzdERheToiW2llcmkgbGFdIExUIixsYXN0V2VlazoiW2Zvc3RhXSBkZGRkIFtsYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBlc3RlICVzIixw''@;'; put 'put ''YXN0OiIlcyBceGVlbiB1cm1cdTAxMDMiLHM6ImNceGUydGV2YSBzZWN1bmRlIixzczp4LG06InVuIG1pbnV0IixtbTp4LGg6Im8gb3JcdTAxMDMiLGhoOngsZDoibyB6aSIsZGQ6eCx3OiJvIHNcdTAxMDNwdFx1MDEwM21ceGUyblx1MDEwMyIsd3c6eCxNOiJvIGx1blx1MDEwMyIsTU06eCx5''@;'; put 'put ''OiJ1biBhbiIseXk6eH0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNTEzMjY6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShPLEksail7cmV0dXJuIm0iPT09aj9JPyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJc''@;'; put 'put ''dTA0MzAiOiJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NDMiOk8rIiAiK2Z1bmN0aW9uIHgoTyxJKXt2YXIgaj1PLnNwbGl0KCJfIik7cmV0dXJuIEklMTA9PTEmJkklMTAwIT0xMT9qWzBdOkklMTA+PTImJkklMTA8PTQmJihJJTEwMDwxMHx8SSUxMDA+PTIwKT9qWzFdOmpb''@;'; put 'put ''Ml19KHtzczpJPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUwNDRiX1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQz''@;'; put 'put ''ZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0NGJfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixtbTpJPyJcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0MzBfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUw''@;'; put 'put ''NDQyXHUwNDRiX1x1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0MiI6Ilx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQ0M19cdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0NDJcdTA0NGJfXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIixoaDoiXHUwNDQ3XHUwNDMw''@;'; put 'put ''XHUwNDQxX1x1MDQ0N1x1MDQzMFx1MDQ0MVx1MDQzMF9cdTA0NDdcdTA0MzBcdTA0NDFcdTA0M2VcdTA0MzIiLGRkOiJcdTA0MzRcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM0XHUwNDNkXHUwNDRmX1x1MDQzNFx1MDQzZFx1MDQzNVx1MDQzOSIsd3c6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQz''@;'; put 'put ''NVx1MDQzYlx1MDQ0Zl9cdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0M2JcdTA0MzhfXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRjIixNTToiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQ2X1x1MDQzY1x1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1MDQzMF9cdTA0''@;'; put 'put ''M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDZcdTA0MzVcdTA0MzIiLHl5OiJcdTA0MzNcdTA0M2VcdTA0MzRfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDMwX1x1MDQzYlx1MDQzNVx1MDQ0MiJ9W2pdLCtPKX12YXIgc2U9Wy9eXHUwNDRmXHUwNDNkXHUwNDMyL2ksL15cdTA0NDRcdTA0MzVcdTA0''@;'; put 'put ''MzIvaSwvXlx1MDQzY1x1MDQzMFx1MDQ0MC9pLC9eXHUwNDMwXHUwNDNmXHUwNDQwL2ksL15cdTA0M2NcdTA0MzBbXHUwNDM5XHUwNDRmXS9pLC9eXHUwNDM4XHUwNDRlXHUwNDNkL2ksL15cdTA0MzhcdTA0NGVcdTA0M2IvaSwvXlx1MDQzMFx1MDQzMlx1MDQzMy9pLC9eXHUwNDQxXHUwNDM1''@;'; put 'put ''XHUwNDNkL2ksL15cdTA0M2VcdTA0M2FcdTA0NDIvaSwvXlx1MDQzZFx1MDQzZVx1MDQ0Zi9pLC9eXHUwNDM0XHUwNDM1XHUwNDNhL2ldO29lLmRlZmluZUxvY2FsZSgicnUiLHttb250aHM6e2Zvcm1hdDoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRmX1x1MDQ0NFx1MDQz''@;'; put 'put ''NVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Zl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJcdTA0MzBfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRmX1x1MDQzY1x1MDQzMFx1MDQ0Zl9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGZfXHUwNDM4XHUwNDRlXHUwNDNiXHUw''@;'; put 'put ''NDRmX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGZfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRmX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1''@;'; put 'put ''MDQ0MFx1MDQ0Zl9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwXHUwNDRjX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYlx1MDQ0Y19cdTA0M2Nc''@;'; put 'put ''dTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiXHUwNDRjX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RcdTA0NGNfXHUwNDM4XHUwNDRlXHUwNDNiXHUwNDRjX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0''@;'; put 'put ''NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0NGNfXHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwXHUwNDRjX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQ0Y19cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBcdTA0''@;'; put 'put ''NGMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0Ontmb3JtYXQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMi5fXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NDAuX1x1MDQzMFx1MDQzZlx1MDQ0MC5fXHUwNDNjXHUwNDMwXHUwNDRmX1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQ0''@;'; put 'put ''Zl9cdTA0MzhcdTA0NGVcdTA0M2JcdTA0NGZfXHUwNDMwXHUwNDMyXHUwNDMzLl9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDIuX1x1MDQzZVx1MDQzYVx1MDQ0Mi5fXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxLl9cdTA0MzRcdTA0MzVcdTA0M2EuIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6Ilx1''@;'; put 'put ''MDQ0Zlx1MDQzZFx1MDQzMi5fXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkXHUwNDRjX1x1MDQzOFx1MDQ0ZVx1MDQzYlx1MDQ0Y19cdTA0MzBc''@;'; put 'put ''dTA0MzJcdTA0MzMuX1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mi5fXHUwNDNlXHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzEuX1x1MDQzNFx1MDQzNVx1MDQzYS4iLnNwbGl0KCJfIil9LHdlZWtkYXlzOntzdGFuZGFsb25lOiJcdTA0MzJcdTA0M2VcdTA0NDFcdTA0M2Fc''@;'; put 'put ''dTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNcdTA0MzVfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRjXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBc''@;'; put 'put ''dTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQzMF9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksZm9ybWF0''@;'; put 'put ''OiJcdTA0MzJcdTA0M2VcdTA0NDFcdTA0M2FcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNcdTA0MzVfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDNiXHUwNDRjXHUwNDNkXHUwNDM4XHUwNDNhX1x1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQz''@;'; put 'put ''ZFx1MDQzOFx1MDQzYV9cdTA0NDFcdTA0NDBcdTA0MzVcdTA0MzRcdTA0NDNfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzX1x1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ0M19cdTA0NDFcdTA0NDNcdTA0MzFcdTA0MzFcdTA0M2VcdTA0''@;'; put 'put ''NDJcdTA0NDMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9bXHUwNDEyXHUwNDMyXSA/KD86XHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDQzXHUwNDRlfFx1MDQ0MVx1MDQzYlx1MDQzNVx1MDQzNFx1MDQ0M1x1MDQ0ZVx1MDQ0OVx1MDQ0M1x1MDQ0ZXxcdTA0NGRcdTA0NDJc''@;'; put 'put ''dTA0NDMpPyA/XSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzMlx1MDQ0MV9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDMyXHUwNDQxX1x1''@;'; put 'put ''MDQzZlx1MDQzZF9cdTA0MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlOnNlLGxvbmdNb250aHNQYXJzZTpzZSxzaG9ydE1vbnRoc1BhcnNlOnNlLG1vbnRoc1JlZ2V4Oi9eKFx1MDQ0Zlx1''@;'; put 'put ''MDQzZFx1MDQzMlx1MDQzMFx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0Zlx1MDQzZFx1MDQzMlwuP3xcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDBcdTA0MzBcdTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0NDRcdTA0MzVcdTA0MzJcdTA0NDA/XC4/fFx1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1''@;'; put 'put ''MDQzMD98XHUwNDNjXHUwNDMwXHUwNDQwXC4/fFx1MDQzMFx1MDQzZlx1MDQ0MFx1MDQzNVx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQzMFx1MDQzZlx1MDQ0MFwuP3xcdTA0M2NcdTA0MzBbXHUwNDM5XHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0''@;'; put 'put ''NGVcdTA0M2RcLj98XHUwNDM4XHUwNDRlXHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM4XHUwNDRlXHUwNDNiXC4/fFx1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Mlx1MDQzMD98XHUwNDMwXHUwNDMyXHUwNDMzXC4/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1''@;'; put 'put ''MDQzMVx1MDQ0MFtcdTA0NGNcdTA0NGZdfFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLj98XHUwNDNlXHUwNDNhXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNlXHUwNDNhXHUwNDQyXC4/fFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGNc''@;'; put 'put ''dTA0NGZdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMT9cLj98XHUwNDM0XHUwNDM1XHUwNDNhXHUwNDMwXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDM0XHUwNDM1XHUwNDNhXC4/KS9pLG1vbnRoc1Nob3J0UmVnZXg6L14oXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwW1x1''@;'; put 'put ''MDQ0Y1x1MDQ0Zl18XHUwNDRmXHUwNDNkXHUwNDMyXC4/fFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYltcdTA0NGNcdTA0NGZdfFx1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MD9cLj98XHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDMwP3xcdTA0M2NcdTA0MzBcdTA0NDBc''@;'; put 'put ''Lj98XHUwNDMwXHUwNDNmXHUwNDQwXHUwNDM1XHUwNDNiW1x1MDQ0Y1x1MDQ0Zl18XHUwNDMwXHUwNDNmXHUwNDQwXC4/fFx1MDQzY1x1MDQzMFtcdTA0MzlcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFtcdTA0NGNcdTA0NGZdfFx1MDQzOFx1MDQ0ZVx1MDQzZFwuP3xcdTA0MzhcdTA0NGVc''@;'; put 'put ''dTA0M2JbXHUwNDRjXHUwNDRmXXxcdTA0MzhcdTA0NGVcdTA0M2JcLj98XHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDMwP3xcdTA0MzBcdTA0MzJcdTA0MzNcLj98XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18''@;'; put 'put ''XHUwNDQxXHUwNDM1XHUwNDNkXHUwNDQyP1wuP3xcdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0M2VcdTA0M2FcdTA0NDJcLj98XHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwW1x1MDQ0Y1x1MDQ0Zl18XHUwNDNkXHUwNDNlXHUwNDRm''@;'; put 'put ''XHUwNDMxP1wuP3xcdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDBbXHUwNDRjXHUwNDRmXXxcdTA0MzRcdTA0MzVcdTA0M2FcLj8pL2ksbW9udGhzU3RyaWN0UmVnZXg6L14oXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwW1x1MDQ0Zlx1MDQ0Y118XHUwNDQ0XHUwNDM1''@;'; put 'put ''XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiW1x1MDQ0Zlx1MDQ0Y118XHUwNDNjXHUwNDMwXHUwNDQwXHUwNDQyXHUwNDMwP3xcdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JbXHUwNDRmXHUwNDRjXXxcdTA0M2NcdTA0MzBbXHUwNDRmXHUwNDM5XXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUw''@;'; put 'put ''NDRmXHUwNDRjXXxcdTA0MzhcdTA0NGVcdTA0M2JbXHUwNDRmXHUwNDRjXXxcdTA0MzBcdTA0MzJcdTA0MzNcdTA0NDNcdTA0NDFcdTA0NDJcdTA0MzA/fFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzZVx1MDQzYVx1MDQ0Mlx1''@;'; put 'put ''MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdfFx1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFtcdTA0NGZcdTA0NGNdKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oXHUwNDRmXHUw''@;'; put 'put ''NDNkXHUwNDMyXC58XHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwP1wufFx1MDQzY1x1MDQzMFx1MDQ0MFtcdTA0NDIuXXxcdTA0MzBcdTA0M2ZcdTA0NDBcLnxcdTA0M2NcdTA0MzBbXHUwNDRmXHUwNDM5XXxcdTA0MzhcdTA0NGVcdTA0M2RbXHUwNDRjXHUwNDRmLl18XHUwNDM4XHUwNDRlXHUw''@;'; put 'put ''NDNiW1x1MDQ0Y1x1MDQ0Zi5dfFx1MDQzMFx1MDQzMlx1MDQzM1wufFx1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mj9cLnxcdTA0M2VcdTA0M2FcdTA0NDJcLnxcdTA0M2RcdTA0M2VcdTA0NGZcdTA0MzE/XC58XHUwNDM0XHUwNDM1XHUwNDNhXC4pL2ksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1t''@;'; put 'put ''IixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0MzMuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQzMy4sIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFx1MDQzMy4sIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDQyMVx1MDQzNVx1MDQz''@;'; put 'put ''M1x1MDQzZVx1MDQzNFx1MDQzZFx1MDQ0ZiwgXHUwNDMyXSBMVCIsbmV4dERheToiW1x1MDQxN1x1MDQzMFx1MDQzMlx1MDQ0Mlx1MDQ0MFx1MDQzMCwgXHUwNDMyXSBMVCIsbGFzdERheToiW1x1MDQxMlx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMCwgXHUwNDMyXSBMVCIsbmV4dFdlZWs6ZnVu''@;'; put 'put ''Y3Rpb24oTyl7aWYoTy53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IltcdTA0MTJcdTA0M2VdIGRkZGQsIFtcdTA0MzJdIExUIjoiW1x1MDQxMl0gZGRkZCwgW1x1MDQzMl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltcdTA0MTIgXHUw''@;'; put 'put ''NDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDM1XHUwNDM1XSBkZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIltcdTA0MTIgXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDM4XHUwNDM5XSBk''@;'; put 'put ''ZGRkLCBbXHUwNDMyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIltcdTA0MTIgXHUwNDQxXHUwNDNiXHUwNDM1XHUwNDM0XHUwNDQzXHUwNDRlXHUwNDQ5XHUwNDQzXHUwNDRlXSBkZGRkLCBbXHUwNDMyXSBMVCJ9fSxsYXN0V2VlazpmdW5jdGlvbihPKXtpZihPLndlZWsoKT09''@;'; put 'put ''PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW1x1MDQxMlx1MDQzZV0gZGRkZCwgW1x1MDQzMl0gTFQiOiJbXHUwNDEyXSBkZGRkLCBbXHUwNDMyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhc''@;'; put 'put ''dTA0M2JcdTA0M2VcdTA0MzVdIGRkZGQsIFtcdTA0MzJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0NGJcdTA0MzldIGRkZGQsIFtcdTA0MzJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4i''@;'; put 'put ''W1x1MDQxMiBcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0NDNcdTA0NGVdIGRkZGQsIFtcdTA0MzJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzNVx1MDQzNyAlcyIscGFzdDoiJXMgXHUwNDNkXHUwNDMw''@;'; put 'put ''XHUwNDM3XHUwNDMwXHUwNDM0IixzOiJcdTA0M2RcdTA0MzVcdTA0NDFcdTA0M2FcdTA0M2VcdTA0M2JcdTA0NGNcdTA0M2FcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0IixzczptLG0sbW06bSxoOiJcdTA0NDdcdTA0MzBcdTA0NDEiLGhoOm0sZDoiXHUwNDM0''@;'; put 'put ''XHUwNDM1XHUwNDNkXHUwNDRjIixkZDptLHc6Ilx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQzYlx1MDQ0ZiIsd3c6bSxNOiJcdTA0M2NcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDYiLE1NOm0seToiXHUwNDMzXHUwNDNlXHUwNDM0Iix5eTptfSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0''@;'; put 'put ''M2VcdTA0NDdcdTA0Mzh8XHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwfFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzAvaSxpc1BNOmZ1bmN0aW9uKE8pe3JldHVybi9eKFx1MDQzNFx1MDQzZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0''@;'; put 'put ''MzVcdTA0NDBcdTA0MzApJC8udGVzdChPKX0sbWVyaWRpZW06ZnVuY3Rpb24oTyxJLGope3JldHVybiBPPDQ/Ilx1MDQzZFx1MDQzZVx1MDQ0N1x1MDQzOCI6TzwxMj8iXHUwNDQzXHUwNDQyXHUwNDQwXHUwNDMwIjpPPDE3PyJcdTA0MzRcdTA0M2RcdTA0NGYiOiJcdTA0MzJcdTA0MzVcdTA0''@;'; put 'put ''NDdcdTA0MzVcdTA0NDBcdTA0MzAifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LShcdTA0Mzl8XHUwNDMzXHUwNDNlfFx1MDQ0ZikvLG9yZGluYWw6ZnVuY3Rpb24oTyxJKXtzd2l0Y2goSSl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gTysiLVx1MDQzOSI7Y2Fz''@;'; put 'put ''ZSJEIjpyZXR1cm4gTysiLVx1MDQzM1x1MDQzZSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBPKyItXHUwNDRmIjtkZWZhdWx0OnJldHVybiBPfX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNzI2MDg6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIHg9WyJcdTA2MmNcdTA2NDZcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDFcdTA2NGFcdTA2MjhcdTA2MzFcdTA2NDhcdTA2MzFcdTA2NGEiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2ODYiLCJcdTA2MjdcdTA2N2VcdTA2MzFcdTA2NGFcdTA2NDQiLCJcdTA2NDVcdTA2MjZcdTA2''@;'; put 'put ''NGEiLCJcdTA2MmNcdTA2NDhcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NDRcdTA2MjdcdTA2MjFcdTA2NTAiLCJcdTA2MjJcdTA2YWZcdTA2MzNcdTA2N2QiLCJcdTA2MzNcdTA2NGFcdTA2N2VcdTA2N2RcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjJcdTA2YWFcdTA2N2RcdTA2NDhcdTA2''@;'; put 'put ''MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2OGFcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXSxtPVsiXHUwNjIyXHUwNjg2XHUwNjMxIiwiXHUwNjMzXHUwNjQ4XHUwNjQ1XHUwNjMxIiwiXHUwNjI3XHUwNmIxXHUwNjI3XHUwNjMxXHUwNjQ4IiwiXHUw''@;'; put 'put ''NjI3XHUwNjMxXHUwNjI4XHUwNjM5IiwiXHUwNjJlXHUwNjQ1XHUwNjRhXHUwNjMzIiwiXHUwNjJjXHUwNjQ1XHUwNjM5IiwiXHUwNjg3XHUwNjQ2XHUwNjg3XHUwNjMxIl07b2UuZGVmaW5lTG9jYWxlKCJzZCIse21vbnRoczp4LG1vbnRoc1Nob3J0Ongsd2Vla2RheXM6bSx3ZWVrZGF5c1No''@;'; put 'put ''b3J0Om0sd2Vla2RheXNNaW46bSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBh''@;'; put 'put ''cnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKE0pe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2NDUiPT09TX0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2Mjdc''@;'; put 'put ''dTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyN1x1MDY4NF0gTFQiLG5leHREYXk6IltcdTA2MzNcdTA2ODBcdTA2MjdcdTA2YmJcdTA2NGFdIExUIixuZXh0V2VlazoiZGRkZCBbXHUwNjI3XHUwNmIzXHUwNjRhXHUwNjQ2IFx1MDY0N1x1MDY0MVx1MDYyYVx1MDY0YSBcdTA2MmFc''@;'; put 'put ''dTA2NGFdIExUIixsYXN0RGF5OiJbXHUwNmFhXHUwNjI3XHUwNjQ0XHUwNjQ3XHUwNjQ3XSBMVCIsbGFzdFdlZWs6IltcdTA2YWZcdTA2MzJcdTA2MzFcdTA2NGFcdTA2NDQgXHUwNjQ3XHUwNjQxXHUwNjJhXHUwNjRhXSBkZGRkIFtcdTA2MmFcdTA2NGFdIExUIixzYW1lRWxzZToiTCJ9LHJl''@;'; put 'put ''bGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2N2VcdTA2NDhcdTA2MjEiLHBhc3Q6IiVzIFx1MDYyN1x1MDZiMyIsczoiXHUwNjg2XHUwNjQ2XHUwNjJmIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsc3M6IiVkIFx1MDYzM1x1MDY0YVx1MDZhYVx1MDY0Nlx1MDY4YSIsbToiXHUw''@;'; put 'put ''NjQ3XHUwNmFhIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsbW06IiVkIFx1MDY0NVx1MDY0Nlx1MDY3ZCIsaDoiXHUwNjQ3XHUwNmFhIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsaGg6IiVkIFx1MDZhYVx1MDY0NFx1MDYyN1x1MDZhYSIsZDoiXHUwNjQ3XHUwNmFhIFx1MDY4Zlx1MDY0YVx1MDY0''@;'; put 'put ''Nlx1MDY0N1x1MDY0NiIsZGQ6IiVkIFx1MDY4Zlx1MDY0YVx1MDY0Nlx1MDY0N1x1MDY0NiIsTToiXHUwNjQ3XHUwNmFhIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDY0OCIsTU06IiVkIFx1MDY0NVx1MDY0N1x1MDY0YVx1MDY0Nlx1MDYyNyIseToiXHUwNjQ3XHUwNmFhIFx1MDYzM1x1''@;'; put 'put ''MDYyN1x1MDY0NCIseXk6IiVkIFx1MDYzM1x1MDYyN1x1MDY0NCJ9LHByZXBhcnNlOmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoL1x1MDYwYy9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvLC9nLCJcdTA2MGMiKX0sd2Vlazp7ZG93OjEsZG95''@;'; put 'put ''OjR9fSl9KFIoOTc1ODYpKX0sMTM5MTE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJzZSIse21vbnRoczoib1x1MDExMVx1MDExMWFqYWdlbVx4ZTFubnVfZ3VvdnZhbVx4ZTFubnVfbmp1a1x1MDEwZGFtXHhlMW5udV9jdW9c''@;'; put 'put ''dTAxNGJvbVx4ZTFubnVfbWllc3NlbVx4ZTFubnVfZ2Vhc3NlbVx4ZTFubnVfc3VvaWRuZW1ceGUxbm51X2JvcmdlbVx4ZTFubnVfXHUwMTBkYWtcdTAxMGRhbVx4ZTFubnVfZ29sZ2dvdG1ceGUxbm51X3NrXHhlMWJtYW1ceGUxbm51X2p1b3ZsYW1ceGUxbm51Ii5zcGxpdCgiXyIpLG1vbnRo''@;'; put 'put ''c1Nob3J0OiJvXHUwMTExXHUwMTExal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfXHUwMTBkYWtcdTAxMGRfZ29sZ19za1x4ZTFiX2p1b3YiLnNwbGl0KCJfIiksd2Vla2RheXM6InNvdG5hYmVhaXZpX3Z1b3NzXHhlMXJnYV9tYVx1MDE0Ylx1MDE0YmViXHhlMXJnYV9nYXNr''@;'; put 'put ''YXZhaGtrdV9kdW9yYXN0YXRfYmVhcmphZGF0X2xceGUxdnZhcmRhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzb3RuX3Z1b3NfbWFcdTAxNGJfZ2Fza19kdW9yX2JlYXJfbFx4ZTF2Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzX3ZfbV9nX2RfYl9MIi5zcGxpdCgiXyIpLGxvbmdE''@;'; put 'put ''YXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJNTU1NIEQuIFtiLl0gWVlZWSIsTExMOiJNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0ifSxjYWxlbmRhcjp7''@;'; put 'put ''c2FtZURheToiW290bmUgdGldIExUIixuZXh0RGF5OiJbaWh0dGluIHRpXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3RpXSBMVCIsbGFzdERheToiW2lrdGUgdGldIExUIixsYXN0V2VlazoiW292ZGRpdF0gZGRkZCBbdGldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIl''@;'; put 'put ''cyBnZWFcdTAxN2VlcyIscGFzdDoibWFcdTAxNGJpdCAlcyIsczoibW9hZGRlIHNla3VuZGRhdCIsc3M6IiVkIHNla3VuZGRhdCIsbToib2t0YSBtaW51aHRhIixtbToiJWQgbWludWh0YXQiLGg6Im9rdGEgZGlpbW11IixoaDoiJWQgZGlpbW11dCIsZDoib2t0YSBiZWFpdmkiLGRkOiIlZCBi''@;'; put 'put ''ZWFpdnZpdCIsTToib2t0YSBtXHhlMW5udSIsTU06IiVkIG1ceGUxbnV0Iix5OiJva3RhIGphaGtpIix5eToiJWQgamFnaXQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMjUxNDc6ZnVu''@;'; put 'put ''Y3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJzaSIse21vbnRoczoiXHUwZGEyXHUwZGIxXHUwZGMwXHUwZGNmXHUwZGJiXHUwZGQyX1x1MGRiNFx1MGRkOVx1MGRiNlx1MGRiYlx1MGRjMFx1MGRjZlx1MGRiYlx1MGRkMl9cdTBkYjhc''@;'; put 'put ''dTBkY2ZcdTBkYmJcdTBkY2FcdTBkYWRcdTBkZDRfXHUwZDg1XHUwZGI0XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGRhXHUwZGJkXHUwZGNhX1x1MGRiOFx1MGRkMFx1MGRiYVx1MGRkMl9cdTBkYTJcdTBkZDZcdTBkYjFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGJkXHUwZGQyX1x1MGQ4NVx1MGQ5''@;'; put 'put ''Y1x1MGRkZFx1MGRjM1x1MGRjYVx1MGRhZFx1MGRkNF9cdTBkYzNcdTBkZDBcdTBkYjRcdTBkY2FcdTBkYWRcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2FfXHUwZDk0XHUwZDlhXHUwZGNhXHUwZGFkXHUwZGRkXHUwZGI2XHUwZGJiXHUwZGNhX1x1MGRiMVx1MGRkY1x1MGRj''@;'; put 'put ''MFx1MGRkMFx1MGRiOFx1MGRjYVx1MGRiNlx1MGRiYlx1MGRjYV9cdTBkYWZcdTBkZDlcdTBkYzNcdTBkZDBcdTBkYjhcdTBkY2FcdTBkYjZcdTBkYmJcdTBkY2EiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGRhMlx1MGRiMV9cdTBkYjRcdTBkZDlcdTBkYjZfXHUwZGI4XHUwZGNmXHUw''@;'; put 'put ''ZGJiXHUwZGNhX1x1MGQ4NVx1MGRiNFx1MGRjYV9cdTBkYjhcdTBkZDBcdTBkYmFcdTBkZDJfXHUwZGEyXHUwZGQ2XHUwZGIxXHUwZGQyX1x1MGRhMlx1MGRkNlx1MGRiZFx1MGRkMl9cdTBkODVcdTBkOWNcdTBkZGRfXHUwZGMzXHUwZGQwXHUwZGI0XHUwZGNhX1x1MGQ5NFx1MGQ5YVx1MGRj''@;'; put 'put ''YV9cdTBkYjFcdTBkZGNcdTBkYzBcdTBkZDBfXHUwZGFmXHUwZGQ5XHUwZGMzXHUwZGQwIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBkODlcdTBkYmJcdTBkZDJcdTBkYWZcdTBkY2ZfXHUwZGMzXHUwZGIzXHUwZGQ0XHUwZGFmXHUwZGNmX1x1MGQ4NVx1MGQ5Zlx1MGRjNFx1MGRiYlx1MGRk''@;'; put 'put ''NFx1MGRjMFx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYjZcdTBkYWZcdTBkY2ZcdTBkYWZcdTBkY2ZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJiXHUwZGM0XHUwZGMzXHUwZGNhXHUwZGI0XHUwZGFkXHUwZGQyXHUwZGIxXHUwZGNhXHUwZGFmXHUwZGNmX1x1MGRjM1x1MGRkMlx1MGQ5YVx1MGRk''@;'; put 'put ''NFx1MGRiYlx1MGRjZlx1MGRhZlx1MGRjZl9cdTBkYzNcdTBkZDlcdTBkYjFcdTBkYzNcdTBkZDRcdTBkYmJcdTBkY2ZcdTBkYWZcdTBkY2YiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwZDg5XHUwZGJiXHUwZGQyX1x1MGRjM1x1MGRiM1x1MGRkNF9cdTBkODVcdTBkOWZfXHUwZGI2''@;'; put 'put ''XHUwZGFmXHUwZGNmX1x1MGRiNlx1MGRjYVx1MjAwZFx1MGRiYlx1MGRjNF9cdTBkYzNcdTBkZDJcdTBkOWFcdTBkZDRfXHUwZGMzXHUwZGQ5XHUwZGIxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBkODlfXHUwZGMzX1x1MGQ4NV9cdTBkYjZfXHUwZGI2XHUwZGNhXHUyMDBkXHUwZGJi''@;'; put 'put ''X1x1MGRjM1x1MGRkMl9cdTBkYzNcdTBkZDkiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiYSBoOm1tIixMVFM6ImEgaDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVkgTU1NTSBEIixMTEw6IllZWVkgTU1NTSBELCBhIGg6bW0iLExM''@;'; put 'put ''TEw6IllZWVkgTU1NTSBEIFtcdTBkYzBcdTBkZDBcdTBkYjFcdTBkZDJdIGRkZGQsIGEgaDptbTpzcyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwZDg1XHUwZGFmXSBMVFtcdTBkYTddIixuZXh0RGF5OiJbXHUwZGM0XHUwZGQ5XHUwZGE3XSBMVFtcdTBkYTddIixuZXh0V2VlazoiZGRkZCBM''@;'; put 'put ''VFtcdTBkYTddIixsYXN0RGF5OiJbXHUwZDhhXHUwZGJhXHUwZGRhXSBMVFtcdTBkYTddIixsYXN0V2VlazoiW1x1MGRiNFx1MGRjM1x1MGRkNFx1MGQ5Y1x1MGRkMlx1MGRiYV0gZGRkZCBMVFtcdTBkYTddIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1MGQ5YVx1''@;'; put 'put ''MGRkMlx1MGRiMVx1MGRjYSIscGFzdDoiJXNcdTBkOWFcdTBkYTcgXHUwZGI0XHUwZGQ5XHUwZGJiIixzOiJcdTBkYWRcdTBkYWRcdTBkY2FcdTBkYjRcdTBkYmIgXHUwZDlhXHUwZGQyXHUwZGM0XHUwZGQyXHUwZGI0XHUwZGJhIixzczoiXHUwZGFkXHUwZGFkXHUwZGNhXHUwZGI0XHUwZGJi''@;'; put 'put ''ICVkIixtOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBkYWRcdTBkZDRcdTBkYzAiLG1tOiJcdTBkYjhcdTBkZDJcdTBkYjFcdTBkZDJcdTBkYWRcdTBkY2FcdTBkYWRcdTBkZDQgJWQiLGg6Ilx1MGRiNFx1MGRkMFx1MGRiYSIsaGg6Ilx1MGRiNFx1MGRkMFx1MGRi''@;'; put 'put ''YSAlZCIsZDoiXHUwZGFmXHUwZGQyXHUwZGIxXHUwZGJhIixkZDoiXHUwZGFmXHUwZGQyXHUwZGIxICVkIixNOiJcdTBkYjhcdTBkY2ZcdTBkYzNcdTBkYmEiLE1NOiJcdTBkYjhcdTBkY2ZcdTBkYzMgJWQiLHk6Ilx1MGRjMFx1MGRjM1x1MGRiYiIseXk6Ilx1MGRjMFx1MGRjM1x1MGRiYiAl''@;'; put 'put ''ZCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0gXHUwZGMwXHUwZGQwXHUwZGIxXHUwZGQyLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3JldHVybiBtKyIgXHUwZGMwXHUwZGQwXHUwZGIxXHUwZGQyIn0sbWVyaWRpZW1QYXJzZTovXHUwZGI0XHUwZGQ5XHUwZGJiIFx1MGRjMFx1MGRi''@;'; put 'put ''Ylx1MGRkNHxcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0fFx1MGRiNFx1MGRkOS5cdTBkYzB8XHUwZGI0Llx1MGRjMC4vLGlzUE06ZnVuY3Rpb24obSl7cmV0dXJuIlx1MGRiNC5cdTBkYzAuIj09PW18fCJcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0''@;'; put 'put ''Ij09PW19LG1lcmlkaWVtOmZ1bmN0aW9uKG0sc2UsTSl7cmV0dXJuIG0+MTE/TT8iXHUwZGI0Llx1MGRjMC4iOiJcdTBkYjRcdTBkYzNcdTBkY2EgXHUwZGMwXHUwZGJiXHUwZGQ0IjpNPyJcdTBkYjRcdTBkZDkuXHUwZGMwLiI6Ilx1MGRiNFx1MGRkOVx1MGRiYiBcdTBkYzBcdTBkYmJcdTBk''@;'; put 'put ''ZDQifX0pfShSKDk3NTg2KSl9LDIzNzQxOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PSJqYW51XHhlMXJfZmVicnVceGUxcl9tYXJlY19hcHJceGVkbF9tXHhlMWpfalx4ZmFuX2pceGZhbF9hdWd1c3Rfc2VwdGVtYmVyX29rdFx4ZjNiZXJfbm92''@;'; put 'put ''ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbT0iamFuX2ZlYl9tYXJfYXByX21ceGUxal9qXHhmYW5falx4ZmFsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIik7ZnVuY3Rpb24gc2UoSSl7cmV0dXJuIEk+MSYmSTw1fWZ1bmN0aW9uIE0oSSxqLEcsRCl7dmFyIFQ9SSsiICI7c3dp''@;'; put 'put ''dGNoKEcpe2Nhc2UicyI6cmV0dXJuIGp8fEQ/InBceGUxciBzZWtceGZhbmQiOiJwXHhlMXIgc2VrdW5kYW1pIjtjYXNlInNzIjpyZXR1cm4ganx8RD9UKyhzZShJKT8ic2VrdW5keSI6InNla1x4ZmFuZCIpOlQrInNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gaj8ibWluXHhmYXRhIjpEPyJt''@;'; put 'put ''aW5ceGZhdHUiOiJtaW5ceGZhdG91IjtjYXNlIm1tIjpyZXR1cm4ganx8RD9UKyhzZShJKT8ibWluXHhmYXR5IjoibWluXHhmYXQiKTpUKyJtaW5ceGZhdGFtaSI7Y2FzZSJoIjpyZXR1cm4gaj8iaG9kaW5hIjpEPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4ganx8RD9UKyhz''@;'; put 'put ''ZShJKT8iaG9kaW55IjoiaG9kXHhlZG4iKTpUKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4ganx8RD8iZGVcdTAxNDgiOiJkXHUwMTQ4b20iO2Nhc2UiZGQiOnJldHVybiBqfHxEP1QrKHNlKEkpPyJkbmkiOiJkblx4ZWQiKTpUKyJkXHUwMTQ4YW1pIjtjYXNlIk0iOnJldHVybiBqfHxEPyJt''@;'; put 'put ''ZXNpYWMiOiJtZXNpYWNvbSI7Y2FzZSJNTSI6cmV0dXJuIGp8fEQ/VCsoc2UoSSk/Im1lc2lhY2UiOiJtZXNpYWNvdiIpOlQrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiBqfHxEPyJyb2siOiJyb2tvbSI7Y2FzZSJ5eSI6cmV0dXJuIGp8fEQ/VCsoc2UoSSk/InJva3kiOiJyb2tvdiIpOlQr''@;'; put 'put ''InJva21pIn19b2UuZGVmaW5lTG9jYWxlKCJzayIse21vbnRoczp4LG1vbnRoc1Nob3J0Om0sd2Vla2RheXM6Im5lZGVcdTAxM2VhX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfXHUwMTYxdHZydG9rX3BpYXRva19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVfcG9fdXRfc3Rf''@;'; put 'put ''XHUwMTYxdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3RfXHUwMTYxdF9waV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZ''@;'; put 'put ''WVkgSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyBvXSBMVCIsbmV4dERheToiW3phanRyYSBvXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWRlXHUwMTNldSBv''@;'; put 'put ''XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlt2IHN0cmVkdSBvXSBMVCI7Y2FzZSA0OnJldHVybiJbdm8gXHUwMTYxdHZydG9rIG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2Jv''@;'; put 'put ''dHUgb10gTFQifX0sbGFzdERheToiW3ZcdTAxMGRlcmEgb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsXHhmYSBuZWRlXHUwMTNldSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWxc''@;'; put 'put ''eGZkXSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbbWludWxceGZhIHN0cmVkdSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxceGZhIHNvYm90dSBvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJlZCAlcyIsczpNLHNzOk0s''@;'; put 'put ''bTpNLG1tOk0saDpNLGhoOk0sZDpNLGRkOk0sTSxNTTpNLHk6TSx5eTpNfSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sOTNlMzpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KHNlLE0sTyxJKXt2YXIgaj1zZSsiICI7c3dpdGNoKE8pe2Nhc2UicyI6cmV0dXJuIE18fEk/Im5la2FqIHNla3VuZCI6Im5la2FqIHNla3VuZGFtaSI7Y2FzZSJzcyI6cmV0dXJuIGorKDE9PT1zZT9NPyJzZWt1bmRvIjoic2VrdW5kaSI6Mj09PXNlP018''@;'; put 'put ''fEk/InNla3VuZGkiOiJzZWt1bmRhaCI6c2U8NT9NfHxJPyJzZWt1bmRlIjoic2VrdW5kYWgiOiJzZWt1bmQiKTtjYXNlIm0iOnJldHVybiBNPyJlbmEgbWludXRhIjoiZW5vIG1pbnV0byI7Y2FzZSJtbSI6cmV0dXJuIGorKDE9PT1zZT9NPyJtaW51dGEiOiJtaW51dG8iOjI9PT1zZT9NfHxJ''@;'; put 'put ''PyJtaW51dGkiOiJtaW51dGFtYSI6c2U8NT9NfHxJPyJtaW51dGUiOiJtaW51dGFtaSI6TXx8ST8ibWludXQiOiJtaW51dGFtaSIpO2Nhc2UiaCI6cmV0dXJuIE0/ImVuYSB1cmEiOiJlbm8gdXJvIjtjYXNlImhoIjpyZXR1cm4gaisoMT09PXNlP00/InVyYSI6InVybyI6Mj09PXNlP018fEk/''@;'; put 'put ''InVyaSI6InVyYW1hIjpzZTw1P018fEk/InVyZSI6InVyYW1pIjpNfHxJPyJ1ciI6InVyYW1pIik7Y2FzZSJkIjpyZXR1cm4gTXx8ST8iZW4gZGFuIjoiZW5pbSBkbmVtIjtjYXNlImRkIjpyZXR1cm4gaisoMT09PXNlP018fEk/ImRhbiI6ImRuZW0iOjI9PT1zZT9NfHxJPyJkbmkiOiJkbmV2''@;'; put 'put ''b21hIjpNfHxJPyJkbmkiOiJkbmV2aSIpO2Nhc2UiTSI6cmV0dXJuIE18fEk/ImVuIG1lc2VjIjoiZW5pbSBtZXNlY2VtIjtjYXNlIk1NIjpyZXR1cm4gaisoMT09PXNlP018fEk/Im1lc2VjIjoibWVzZWNlbSI6Mj09PXNlP018fEk/Im1lc2VjYSI6Im1lc2VjZW1hIjpzZTw1P018fEk/Im1l''@;'; put 'put ''c2VjZSI6Im1lc2VjaSI6TXx8ST8ibWVzZWNldiI6Im1lc2VjaSIpO2Nhc2UieSI6cmV0dXJuIE18fEk/ImVubyBsZXRvIjoiZW5pbSBsZXRvbSI7Y2FzZSJ5eSI6cmV0dXJuIGorKDE9PT1zZT9NfHxJPyJsZXRvIjoibGV0b20iOjI9PT1zZT9NfHxJPyJsZXRpIjoibGV0b21hIjpzZTw1P018''@;'; put 'put ''fEk/ImxldGEiOiJsZXRpIjpNfHxJPyJsZXQiOiJsZXRpIil9fW9lLmRlZmluZUxvY2FsZSgic2wiLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcmVjX2FwcmlsX21hal9qdW5pal9qdWxpal9hdmd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiks''@;'; put 'put ''bW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGVsamFfcG9uZWRlbGpla190b3Jla19zcmVkYV9cdTAxMGRldHJ0ZWtfcGV0ZWtf''@;'; put 'put ''c29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl90b3IuX3NyZS5fXHUwMTBkZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfXHUwMTBkZV9wZV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELiBNTS4gWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmVzIG9iXSBMVCIsbmV4dERh''@;'; put 'put ''eToiW2p1dHJpIG9iXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdl0gW25lZGVsam9dIFtvYl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZdIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJbdl0gW3NvYm90b10gW29iXSBMVCI7''@;'; put 'put ''Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdl0gZGRkZCBbb2JdIExUIn19LGxhc3REYXk6Ilt2XHUwMTBkZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ByZWpcdTAxNjFuam9dIFtuZWRlbGpvXSBb''@;'; put 'put ''b2JdIExUIjtjYXNlIDM6cmV0dXJuIltwcmVqXHUwMTYxbmpvXSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ByZWpcdTAxNjFuam9dIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWpcdTAxNjFuamldIGRkZGQgW29iXSBM''@;'; put 'put ''VCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTAxMGRleiAlcyIscGFzdDoicHJlZCAlcyIsczp4LHNzOngsbTp4LG1tOngsaDp4LGhoOngsZDp4LGRkOngsTTp4LE1NOngseTp4LHl5Onh9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5h''@;'; put 'put ''bDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw2MDQ1MTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInNxIix7bW9udGhzOiJKYW5hcl9TaGt1cnRfTWFyc19QcmlsbF9NYWpfUWVyc2hvcl9Lb3JyaWtf''@;'; put 'put ''R3VzaHRfU2h0YXRvcl9UZXRvcl9OXHhlYm50b3JfRGhqZXRvciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X05ceGVibl9EaGoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkUgRGllbF9FIEhceGViblx4ZWJfRSBNYXJ0XHhl''@;'; put 'put ''Yl9FIE1ceGVicmt1clx4ZWJfRSBFbmp0ZV9FIFByZW10ZV9FIFNodHVuXHhlYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEaWVfSFx4ZWJuX01hcl9NXHhlYnJfRW5qX1ByZV9TaHQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRfSF9NYV9NXHhlYl9FX1BfU2giLnNwbGl0KCJfIiks''@;'; put 'put ''d2Vla2RheXNQYXJzZUV4YWN0OiEwLG1lcmlkaWVtUGFyc2U6L1BEfE1ELyxpc1BNOmZ1bmN0aW9uKG0pe3JldHVybiJNIj09PW0uY2hhckF0KDApfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDEyPyJQRCI6Ik1EIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRT''@;'; put 'put ''OiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbU290IG5ceGViXSBMVCIsbmV4dERheToiW05lc1x4ZWJyIG5ceGViXSBMVCIs''@;'; put 'put ''bmV4dFdlZWs6ImRkZGQgW25ceGViXSBMVCIsbGFzdERheToiW0RqZSBuXHhlYl0gTFQiLGxhc3RXZWVrOiJkZGRkIFtlIGthbHVhciBuXHhlYl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im5ceGViICVzIixwYXN0OiIlcyBtXHhlYiBwYXJceGViIixzOiJkaXNh''@;'; put 'put ''IHNla29uZGEiLHNzOiIlZCBzZWtvbmRhIixtOiJualx4ZWIgbWludXRceGViIixtbToiJWQgbWludXRhIixoOiJualx4ZWIgb3JceGViIixoaDoiJWQgb3JceGViIixkOiJualx4ZWIgZGl0XHhlYiIsZGQ6IiVkIGRpdFx4ZWIiLE06Im5qXHhlYiBtdWFqIixNTToiJWQgbXVhaiIseToibmpc''@;'; put 'put ''eGViIHZpdCIseXk6IiVkIHZpdGUifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNDA5MDU6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9e3dv''@;'; put 'put ''cmRzOntzczpbIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzMCIsIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzNSIsIlx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQzOCJdLG06WyJcdTA0NThcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0MzBcdTA0M2QgXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQzY1x1MDQzOFx1MDQzZFx1MDQ0M1x1MDQ0Mlx1MDQzMCJdLG1tOlsiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyIiwiXHUw''@;'; put 'put ''NDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIiwiXHUwNDNjXHUwNDM4XHUwNDNkXHUwNDQzXHUwNDQyXHUwNDMwIl0saDpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzMFx1MDQzZCBcdTA0NDFcdTA0MzBcdTA0NDIiLCJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0M2VcdTA0''@;'; put 'put ''MzMgXHUwNDQxXHUwNDMwXHUwNDQyXHUwNDMwIl0saGg6WyJcdTA0NDFcdTA0MzBcdTA0NDIiLCJcdTA0NDFcdTA0MzBcdTA0NDJcdTA0MzAiLCJcdTA0NDFcdTA0MzBcdTA0NDJcdTA0MzgiXSxkOlsiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDMwXHUwNDNkIFx1MDQzNFx1MDQzMFx1MDQzZCIs''@;'; put 'put ''Ilx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzZVx1MDQzMyBcdTA0MzRcdTA0MzBcdTA0M2RcdTA0MzAiXSxkZDpbIlx1MDQzNFx1MDQzMFx1MDQzZCIsIlx1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMCIsIlx1MDQzNFx1MDQzMFx1MDQzZFx1MDQzMCJdLE06WyJcdTA0NThcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0MzBcdTA0M2QgXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IiwiXHUwNDU4XHUwNDM1XHUwNDM0XHUwNDNkXHUwNDNlXHUwNDMzIFx1MDQzY1x1MDQzNVx1MDQ0MVx1MDQzNVx1MDQ0Nlx1MDQzMCJdLE1NOlsiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2IiwiXHUw''@;'; put 'put ''NDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDMwIiwiXHUwNDNjXHUwNDM1XHUwNDQxXHUwNDM1XHUwNDQ2XHUwNDM4Il0seTpbIlx1MDQ1OFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQ0MyBcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLCJcdTA0NThcdTA0MzVcdTA0''@;'; put 'put ''MzRcdTA0M2RcdTA0MzUgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDM1Il0seXk6WyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiLCJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzUiLCJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0''@;'; put 'put ''M2RcdTA0MzAiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihzZSxNKXtyZXR1cm4gc2UlMTA+PTEmJnNlJTEwPD00JiYoc2UlMTAwPDEwfHxzZSUxMDA+PTIwKT9zZSUxMD09MT9NWzBdOk1bMV06TVsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHNlLE0sTyxJKXt2YXIgRyxqPXgu''@;'; put 'put ''d29yZHNbT107cmV0dXJuIDE9PT1PLmxlbmd0aD8ieSI9PT1PJiZNPyJcdTA0NThcdTA0MzVcdTA0MzRcdTA0M2RcdTA0MzAgXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDMwIjpJfHxNP2pbMF06alsxXTooRz14LmNvcnJlY3RHcmFtbWF0aWNhbENhc2Uoc2UsaiksInl5Ij09''@;'; put 'put ''PU8mJk0mJiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiPT09Rz9zZSsiIFx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzMCI6c2UrIiAiK0cpfX07b2UuZGVmaW5lTG9jYWxlKCJzci1jeXJsIix7bW9udGhzOiJcdTA0NThcdTA0MzBcdTA0M2RcdTA0NDNc''@;'; put 'put ''dTA0MzBcdTA0NDBfXHUwNDQ0XHUwNDM1XHUwNDMxXHUwNDQwXHUwNDQzXHUwNDMwXHUwNDQwX1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzhcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDU4X1x1MDQ1OFx1MDQ0M1x1MDQzZF9cdTA0NThcdTA0NDNcdTA0''@;'; put 'put ''M2JfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZlx1MDQ0Mlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0M2VcdTA0MzFcdTA0MzBcdTA0NDBfXHUwNDNkXHUwNDNlXHUwNDMyXHUwNDM1XHUw''@;'; put 'put ''NDNjXHUwNDMxXHUwNDMwXHUwNDQwX1x1MDQzNFx1MDQzNVx1MDQ0Nlx1MDQzNVx1MDQzY1x1MDQzMVx1MDQzMFx1MDQ0MCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNDU4XHUwNDMwXHUwNDNkLl9cdTA0NDRcdTA0MzVcdTA0MzEuX1x1MDQzY1x1MDQzMFx1MDQ0MC5fXHUwNDMwXHUw''@;'; put 'put ''NDNmXHUwNDQwLl9cdTA0M2NcdTA0MzBcdTA0NThfXHUwNDU4XHUwNDQzXHUwNDNkX1x1MDQ1OFx1MDQ0M1x1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzMuX1x1MDQ0MVx1MDQzNVx1MDQzZi5fXHUwNDNlXHUwNDNhXHUwNDQyLl9cdTA0M2RcdTA0M2VcdTA0MzIuX1x1MDQzNFx1MDQzNVx1MDQ0''@;'; put 'put ''Ni4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDMwX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzMFx1MDQzYV9cdTA0NDNcdTA0NDJcdTA0M2VcdTA0NDBcdTA0''@;'; put 'put ''MzBcdTA0M2FfXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDMwX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzMFx1MDQzYV9cdTA0M2ZcdTA0MzVcdTA0NDJcdTA0MzBcdTA0M2FfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDMwIi5zcGxpdCgi''@;'; put 'put ''XyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNVx1MDQzNC5fXHUwNDNmXHUwNDNlXHUwNDNkLl9cdTA0NDNcdTA0NDJcdTA0M2UuX1x1MDQ0MVx1MDQ0MFx1MDQzNS5fXHUwNDQ3XHUwNDM1XHUwNDQyLl9cdTA0M2ZcdTA0MzVcdTA0NDIuX1x1MDQ0MVx1MDQ0M1x1MDQzMS4iLnNwbGl0''@;'; put 'put ''KCJfIiksd2Vla2RheXNNaW46Ilx1MDQzZFx1MDQzNV9cdTA0M2ZcdTA0M2VfXHUwNDQzXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0MzVfXHUwNDNmXHUwNDM1X1x1MDQ0MVx1MDQ0MyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJI''@;'; put 'put ''Om1tIixMVFM6Ikg6bW06c3MiLEw6IkQuIE0uIFlZWVkuIixMTDoiRC4gTU1NTSBZWVlZLiIsTExMOiJELiBNTU1NIFlZWVkuIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWS4gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDM0XHUwNDMwXHUwNDNkXHUwNDMwXHUwNDQxIFx1''@;'; put 'put ''MDQ0M10gTFQiLG5leHREYXk6IltcdTA0NDFcdTA0NDNcdTA0NDJcdTA0NDBcdTA0MzAgXHUwNDQzXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbXHUwNDQzXSBbXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDM1XHUwNDU5XHUwNDQzXSBb''@;'; put 'put ''XHUwNDQzXSBMVCI7Y2FzZSAzOnJldHVybiJbXHUwNDQzXSBbXHUwNDQxXHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSA2OnJldHVybiJbXHUwNDQzXSBbXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzXSBbXHUwNDQzXSBMVCI7Y2FzZSAxOmNh''@;'; put 'put ''c2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbXHUwNDQzXSBkZGRkIFtcdTA0NDNdIExUIn19LGxhc3REYXk6IltcdTA0NThcdTA0NDNcdTA0NDdcdTA0MzUgXHUwNDQzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm5bIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0''@;'; put 'put ''MzVdIFtcdTA0M2RcdTA0MzVcdTA0MzRcdTA0MzVcdTA0NTlcdTA0MzVdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQzNVx1MDQ1OVx1MDQzYVx1MDQzMF0gW1x1MDQ0''@;'; put 'put ''M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUwNDNiXHUwNDNlXHUwNDMzXSBbXHUwNDQzXHUwNDQyXHUwNDNlXHUwNDQwXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDBcdTA0MzVc''@;'; put 'put ''dTA0MzRcdTA0MzVdIFtcdTA0NDNdIExUIiwiW1x1MDQzZlx1MDQ0MFx1MDQzZVx1MDQ0OFx1MDQzYlx1MDQzZVx1MDQzM10gW1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQ0MFx1MDQ0Mlx1MDQzYVx1MDQzMF0gW1x1MDQ0M10gTFQiLCJbXHUwNDNmXHUwNDQwXHUwNDNlXHUwNDQ4XHUw''@;'; put 'put ''NDNiXHUwNDNlXHUwNDMzXSBbXHUwNDNmXHUwNDM1XHUwNDQyXHUwNDNhXHUwNDMwXSBbXHUwNDQzXSBMVCIsIltcdTA0M2ZcdTA0NDBcdTA0M2VcdTA0NDhcdTA0M2JcdTA0MzVdIFtcdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzVdIFtcdTA0NDNdIExUIl1bdGhpcy5kYXko''@;'; put 'put ''KV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Ilx1MDQzN1x1MDQzMCAlcyIscGFzdDoiXHUwNDNmXHUwNDQwXHUwNDM1ICVzIixzOiJcdTA0M2RcdTA0MzVcdTA0M2FcdTA0M2VcdTA0M2JcdTA0MzhcdTA0M2FcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUw''@;'; put 'put ''NDNkXHUwNDM0XHUwNDM4Iixzczp4LnRyYW5zbGF0ZSxtOngudHJhbnNsYXRlLG1tOngudHJhbnNsYXRlLGg6eC50cmFuc2xhdGUsaGg6eC50cmFuc2xhdGUsZDp4LnRyYW5zbGF0ZSxkZDp4LnRyYW5zbGF0ZSxNOngudHJhbnNsYXRlLE1NOngudHJhbnNsYXRlLHk6eC50cmFuc2xhdGUseXk6''@;'; put 'put ''eC50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw1NTA0NjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD17d29yZHM6e3NzOlsi''@;'; put 'put ''c2VrdW5kYSIsInNla3VuZGUiLCJzZWt1bmRpIl0sbTpbImplZGFuIG1pbnV0IiwiamVkbm9nIG1pbnV0YSJdLG1tOlsibWludXQiLCJtaW51dGEiLCJtaW51dGEiXSxoOlsiamVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpbInNhdCIsInNhdGEiLCJzYXRpIl0sZDpbImplZGFuIGRhbiIs''@;'; put 'put ''ImplZG5vZyBkYW5hIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE06WyJqZWRhbiBtZXNlYyIsImplZG5vZyBtZXNlY2EiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seTpbImplZG51IGdvZGludSIsImplZG5lIGdvZGluZSJdLHl5OlsiZ29kaW51IiwiZ29kaW5lIiwiZ29k''@;'; put 'put ''aW5hIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oc2UsTSl7cmV0dXJuIHNlJTEwPj0xJiZzZSUxMDw9NCYmKHNlJTEwMDwxMHx8c2UlMTAwPj0yMCk/c2UlMTA9PTE/TVswXTpNWzFdOk1bMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihzZSxNLE8sSSl7dmFyIEcsaj14LndvcmRz''@;'; put 'put ''W09dO3JldHVybiAxPT09Ty5sZW5ndGg/InkiPT09TyYmTT8iamVkbmEgZ29kaW5hIjpJfHxNP2pbMF06alsxXTooRz14LmNvcnJlY3RHcmFtbWF0aWNhbENhc2Uoc2UsaiksInl5Ij09PU8mJk0mJiJnb2RpbnUiPT09Rz9zZSsiIGdvZGluYSI6c2UrIiAiK0cpfX07b2UuZGVmaW5lTG9jYWxl''@;'; put 'put ''KCJzciIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29r''@;'; put 'put ''dC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGVsamFfcG9uZWRlbGpha191dG9yYWtfc3JlZGFfXHUwMTBkZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JlLl9cdTAx''@;'; put 'put ''MGRldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl9cdTAxMGRlX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC4gTS4gWVlZWS4iLExMOiJELiBN''@;'; put 'put ''TU1NIFlZWVkuIixMTEw6IkQuIE1NTU0gWVlZWS4gSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZLiBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERheToiW3N1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtj''@;'; put 'put ''YXNlIDA6cmV0dXJuIlt1XSBbbmVkZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JlZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5''@;'; put 'put ''OiJbanVcdTAxMGRlIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVyblsiW3Byb1x1MDE2MWxlXSBbbmVkZWxqZV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3BvbmVkZWxqa2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm9cdTAxNjFsZV0g''@;'; put 'put ''W3NyZWRlXSBbdV0gTFQiLCJbcHJvXHUwMTYxbG9nXSBbXHUwMTBkZXR2cnRrYV0gW3VdIExUIiwiW3Byb1x1MDE2MWxvZ10gW3BldGthXSBbdV0gTFQiLCJbcHJvXHUwMTYxbGVdIFtzdWJvdGVdIFt1XSBMVCJdW3RoaXMuZGF5KCldfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0''@;'; put 'put ''dXJlOiJ6YSAlcyIscGFzdDoicHJlICVzIixzOiJuZWtvbGlrbyBzZWt1bmRpIixzczp4LnRyYW5zbGF0ZSxtOngudHJhbnNsYXRlLG1tOngudHJhbnNsYXRlLGg6eC50cmFuc2xhdGUsaGg6eC50cmFuc2xhdGUsZDp4LnRyYW5zbGF0ZSxkZDp4LnRyYW5zbGF0ZSxNOngudHJhbnNsYXRlLE1N''@;'; put 'put ''OngudHJhbnNsYXRlLHk6eC50cmFuc2xhdGUseXk6eC50cmFuc2xhdGV9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw4NTc2NTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInNzIix7bW9udGhzOiJCaGltYmlkdndhbmVfSW5kbG92YW5hX0luZGxvdidsZW5raHVsdV9NYWJhc2FfSW5raHdla2h3ZXRpX0luaGxhYmFfS2hvbHdhbmVfSW5nY2lfSW55b25pX0ltcGhhbGFfTHdldGlfSW5nb25nb25pIi5zcGxpdCgiXyIp''@;'; put 'put ''LG1vbnRoc1Nob3J0OiJCaGlfSW5hX0ludV9NYWJfSW5rX0luaF9LaG9fSWdjX0lueV9JbXBfTHdlX0lnbyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiTGlzb250Zm9fVW1zb21idWx1a29fTGVzaWJpbGlfTGVzaXRzYXRmdV9MZXNpbmVfTGVzaWhsYW51X1VtZ2NpYmVsbyIuc3BsaXQoIl8iKSx3''@;'; put 'put ''ZWVrZGF5c1Nob3J0OiJMaXNfVW1iX0xzYl9MZXNfTHNpX0xzaF9VbWciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkxpX1VzX0xiX0x0X0xzX0xoX1VnIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEi''@;'; put 'put ''LEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbTmFtdWhsYSBuZ2FdIExUIixuZXh0RGF5OiJbS3VzYXNhIG5nYV0gTFQiLG5leHRXZWVrOiJk''@;'; put 'put ''ZGRkIFtuZ2FdIExUIixsYXN0RGF5OiJbSXRvbG8gbmdhXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xlbGlwaGVsaWxlXSBbbmdhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToibmdhICVzIixwYXN0OiJ3ZW50ZWthIG5nYSAlcyIsczoiZW1penV6d2FuYSBsb21jYW5l''@;'; put 'put ''IixzczoiJWQgbXp1endhbmEiLG06InVtenV6dSIsbW06IiVkIGVtaXp1enUiLGg6ImxpaG9yYSIsaGg6IiVkIGVtYWhvcmEiLGQ6ImxpbGFuZ2EiLGRkOiIlZCBlbWFsYW5nYSIsTToiaW55YW5nYSIsTU06IiVkIHRpbnlhbmdhIix5OiJ1bW55YWthIix5eToiJWQgaW1pbnlha2EifSxtZXJp''@;'; put 'put ''ZGllbVBhcnNlOi9la3VzZW5pfGVtaW5pfGVudHNhbWJhbWF8ZWJ1c3VrdS8sbWVyaWRpZW06ZnVuY3Rpb24obSxzZSxNKXtyZXR1cm4gbTwxMT8iZWt1c2VuaSI6bTwxNT8iZW1pbmkiOm08MTk/ImVudHNhbWJhbWEiOiJlYnVzdWt1In0sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKG0sc2Upe3Jl''@;'; put 'put ''dHVybiAxMj09PW0mJihtPTApLCJla3VzZW5pIj09PXNlP206ImVtaW5pIj09PXNlP20+PTExP206bSsxMjoiZW50c2FtYmFtYSI9PT1zZXx8ImVidXN1a3UiPT09c2U/MD09PW0/MDptKzEyOnZvaWQgMH0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDoiJWQiLHdl''@;'; put 'put ''ZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDk5MjkwOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgic3YiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFyc19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdGlfc2Vw''@;'; put 'put ''dGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzXHhmNm5kYWdfbVx4ZTVuZGFnX3Rpc2RhZ19vbnNkYWdfdG9y''@;'; put 'put ''c2RhZ19mcmVkYWdfbFx4ZjZyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InNceGY2bl9tXHhlNW5fdGlzX29uc190b3JfZnJlX2xceGY2ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic1x4ZjZfbVx4ZTVfdGlfb25fdG9fZnJfbFx4ZjYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3Jt''@;'; put 'put ''YXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tIixsbGw6IkQgTU1NIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCBEIE1N''@;'; put 'put ''TSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJZGFnXSBMVCIsbmV4dERheToiW0ltb3Jnb25dIExUIixsYXN0RGF5OiJbSWdceGU1cl0gTFQiLG5leHRXZWVrOiJbUFx4ZTVdIGRkZGQgTFQiLGxhc3RXZWVrOiJbSV0gZGRkZFtzXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2''@;'; put 'put ''ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6ImZceGY2ciAlcyBzZWRhbiIsczoiblx4ZTVncmEgc2VrdW5kZXIiLHNzOiIlZCBzZWt1bmRlciIsbToiZW4gbWludXQiLG1tOiIlZCBtaW51dGVyIixoOiJlbiB0aW1tZSIsaGg6IiVkIHRpbW1hciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnYXIi''@;'; put 'put ''LE06ImVuIG1ceGU1bmFkIixNTToiJWQgbVx4ZTVuYWRlciIseToiZXR0IFx4ZTVyIix5eToiJWQgXHhlNXIifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFw6ZXxcOmEpLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3ZhciBzZT1tJTEwO3JldHVybiBtKygxPT1+fihtJTEwMC8xMCk/''@;'; put 'put ''IjplIjoxPT09c2V8fDI9PT1zZT8iOmEiOiI6ZSIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw1MzQ0OTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInN3Iix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01h''@;'; put 'put ''Y2hpX0FwcmlsaV9NZWlfSnVuaV9KdWxhaV9BZ29zdGlfU2VwdGVtYmFfT2t0b2JhX05vdmVtYmFfRGVzZW1iYSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX0Fnb19TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ikp1bWFw''@;'; put 'put ''aWxpX0p1bWF0YXR1X0p1bWFubmVfSnVtYXRhbm9fQWxoYW1pc2lfSWp1bWFhX0p1bWFtb3NpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkpwbF9KdGF0X0pubmVfSnRhbl9BbGhfSWptX0ptb3MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkoyX0ozX0o0X0o1X0FsX0lqX0oxIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6ImhoOm1tIEEiLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxl''@;'; put 'put ''bmRhcjp7c2FtZURheToiW2xlbyBzYWFdIExUIixuZXh0RGF5OiJba2VzaG8gc2FhXSBMVCIsbmV4dFdlZWs6Ilt3aWtpIGlqYXlvXSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2phbmFdIExUIixsYXN0V2VlazoiW3dpa2kgaWxpeW9waXRhXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6''@;'; put 'put ''IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgYmFhZGF5ZSIscGFzdDoidG9rZWEgJXMiLHM6ImhpdmkgcHVuZGUiLHNzOiJzZWt1bmRlICVkIixtOiJkYWtpa2EgbW9qYSIsbW06ImRha2lrYSAlZCIsaDoic2FhIGxpbW9qYSIsaGg6Im1hc2FhICVkIixkOiJzaWt1IG1vamEiLGRkOiJz''@;'; put 'put ''aWt1ICVkIixNOiJtd2V6aSBtbW9qYSIsTU06Im1pZXppICVkIix5OiJtd2FrYSBtbW9qYSIseXk6Im1pYWthICVkIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNzI2ODg6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezE6Ilx1''@;'; put 'put ''MGJlNyIsMjoiXHUwYmU4IiwzOiJcdTBiZTkiLDQ6Ilx1MGJlYSIsNToiXHUwYmViIiw2OiJcdTBiZWMiLDc6Ilx1MGJlZCIsODoiXHUwYmVlIiw5OiJcdTBiZWYiLDA6Ilx1MGJlNiJ9LG09eyJcdTBiZTciOiIxIiwiXHUwYmU4IjoiMiIsIlx1MGJlOSI6IjMiLCJcdTBiZWEiOiI0IiwiXHUw''@;'; put 'put ''YmViIjoiNSIsIlx1MGJlYyI6IjYiLCJcdTBiZWQiOiI3IiwiXHUwYmVlIjoiOCIsIlx1MGJlZiI6IjkiLCJcdTBiZTYiOiIwIn07b2UuZGVmaW5lTG9jYWxlKCJ0YSIse21vbnRoczoiXHUwYjljXHUwYmE5XHUwYmI1XHUwYmIwXHUwYmJmX1x1MGJhYVx1MGJiZlx1MGJhYVx1MGJjZFx1MGJi''@;'; put 'put ''MFx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWVcdTBiYmVcdTBiYjBcdTBiY2RcdTBiOWFcdTBiY2RfXHUwYjhmXHUwYmFhXHUwYmNkXHUwYmIwXHUwYmIyXHUwYmNkX1x1MGJhZVx1MGJjN19cdTBiOWNcdTBiYzJcdTBiYTlcdTBiY2RfXHUwYjljXHUwYmMyXHUwYmIyXHUwYmM4X1x1MGI4Nlx1''@;'; put 'put ''MGI5NVx1MGJiOFx1MGJjZFx1MGI5Zlx1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYWFcdTBiY2RcdTBiOWZcdTBiYzZcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjg1XHUwYjk1XHUwYmNkXHUwYjlmXHUwYmM3XHUwYmJlXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGJhOFx1MGJiNVx1''@;'; put 'put ''MGJhZVx1MGJjZFx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiOWZcdTBiYmZcdTBiOWFcdTBiYWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MGI5Y1x1MGJhOVx1MGJiNVx1MGJiMFx1MGJiZl9cdTBiYWFcdTBiYmZcdTBiYWFcdTBiY2RcdTBiYjBc''@;'; put 'put ''dTBiYjVcdTBiYjBcdTBiYmZfXHUwYmFlXHUwYmJlXHUwYmIwXHUwYmNkXHUwYjlhXHUwYmNkX1x1MGI4Zlx1MGJhYVx1MGJjZFx1MGJiMFx1MGJiMlx1MGJjZF9cdTBiYWVcdTBiYzdfXHUwYjljXHUwYmMyXHUwYmE5XHUwYmNkX1x1MGI5Y1x1MGJjMlx1MGJiMlx1MGJjOF9cdTBiODZcdTBi''@;'; put 'put ''OTVcdTBiYjhcdTBiY2RcdTBiOWZcdTBiY2RfXHUwYjlhXHUwYmM2XHUwYmFhXHUwYmNkXHUwYjlmXHUwYmM2XHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkX1x1MGI4NVx1MGI5NVx1MGJjZFx1MGI5Zlx1MGJjN1x1MGJiZVx1MGJhYVx1MGJiMFx1MGJjZF9cdTBiYThcdTBiYjVcdTBi''@;'; put 'put ''YWVcdTBiY2RcdTBiYWFcdTBiYjBcdTBiY2RfXHUwYjlmXHUwYmJmXHUwYjlhXHUwYmFlXHUwYmNkXHUwYmFhXHUwYmIwXHUwYmNkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTBiOWVcdTBiYmVcdTBiYWZcdTBiYmZcdTBiYjFcdTBiY2RcdTBiYjFcdTBiYzFcdTBiOTVcdTBiY2RcdTBiOTVc''@;'; put 'put ''dTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmE0XHUwYmJmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYjlmXHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGI5YVx1MGJjNlx1MGJiNVx1MGJjZFx1MGJiNVx1MGJiZVx1MGJhZlx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1''@;'; put 'put ''MGJhZVx1MGJjOF9cdTBiYWFcdTBiYzFcdTBiYTRcdTBiYTlcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzhfXHUwYmI1XHUwYmJmXHUwYmFmXHUwYmJlXHUwYmI0XHUwYjk1XHUwYmNkXHUwYjk1XHUwYmJmXHUwYmI0XHUwYmFlXHUwYmM4X1x1MGJiNVx1MGJjNlx1MGJiM1x1''@;'; put 'put ''MGJjZFx1MGJiM1x1MGJiZlx1MGI5NVx1MGJjZFx1MGI5NVx1MGJiZlx1MGJiNFx1MGJhZVx1MGJjOF9cdTBiOWFcdTBiYTlcdTBiYmZcdTBiOTVcdTBiY2RcdTBiOTVcdTBiYmZcdTBiYjRcdTBiYWVcdTBiYzgiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwYjllXHUwYmJlXHUwYmFm''@;'; put 'put ''XHUwYmJmXHUwYmIxXHUwYmMxX1x1MGJhNFx1MGJiZlx1MGI5OVx1MGJjZFx1MGI5NVx1MGJiM1x1MGJjZF9cdTBiOWFcdTBiYzZcdTBiYjVcdTBiY2RcdTBiYjVcdTBiYmVcdTBiYWZcdTBiY2RfXHUwYmFhXHUwYmMxXHUwYmE0XHUwYmE5XHUwYmNkX1x1MGJiNVx1MGJiZlx1MGJhZlx1MGJi''@;'; put 'put ''ZVx1MGJiNFx1MGJhOVx1MGJjZF9cdTBiYjVcdTBiYzZcdTBiYjNcdTBiY2RcdTBiYjNcdTBiYmZfXHUwYjlhXHUwYmE5XHUwYmJmIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTBiOWVcdTBiYmVfXHUwYmE0XHUwYmJmX1x1MGI5YVx1MGJjNl9cdTBiYWFcdTBiYzFfXHUwYmI1XHUwYmJm''@;'; put 'put ''X1x1MGJiNVx1MGJjNl9cdTBiOWEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tIn0s''@;'; put 'put ''Y2FsZW5kYXI6e3NhbWVEYXk6IltcdTBiODdcdTBiYTlcdTBiY2RcdTBiYjFcdTBiYzFdIExUIixuZXh0RGF5OiJbXHUwYmE4XHUwYmJlXHUwYmIzXHUwYmM4XSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJbXHUwYmE4XHUwYmM3XHUwYmIxXHUwYmNkXHUwYmIxXHUwYmMxXSBM''@;'; put 'put ''VCIsbGFzdFdlZWs6IltcdTBiOTVcdTBiOWZcdTBiYThcdTBiY2RcdTBiYTQgXHUwYmI1XHUwYmJlXHUwYmIwXHUwYmFlXHUwYmNkXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwYjg3XHUwYmIyXHUwYmNkIixwYXN0OiIlcyBcdTBiYWVcdTBi''@;'; put 'put ''YzFcdTBiYTlcdTBiY2QiLHM6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiOWFcdTBiYmZcdTBiYjIgXHUwYmI1XHUwYmJmXHUwYmE4XHUwYmJlXHUwYjlmXHUwYmJmXHUwYjk1XHUwYmIzXHUwYmNkIixzczoiJWQgXHUwYmI1XHUwYmJmXHUwYmE4XHUwYmJlXHUwYjlmXHUwYmJmXHUwYjk1XHUw''@;'; put 'put ''YmIzXHUwYmNkIixtOiJcdTBiOTJcdTBiYjBcdTBiYzEgXHUwYmE4XHUwYmJmXHUwYmFlXHUwYmJmXHUwYjlmXHUwYmFlXHUwYmNkIixtbToiJWQgXHUwYmE4XHUwYmJmXHUwYmFlXHUwYmJmXHUwYjlmXHUwYjk5XHUwYmNkXHUwYjk1XHUwYmIzXHUwYmNkIixoOiJcdTBiOTJcdTBiYjBcdTBi''@;'; put 'put ''YzEgXHUwYmFlXHUwYmEzXHUwYmJmIFx1MGJhOFx1MGJjN1x1MGJiMFx1MGJhZVx1MGJjZCIsaGg6IiVkIFx1MGJhZVx1MGJhM1x1MGJiZiBcdTBiYThcdTBiYzdcdTBiYjBcdTBiYWVcdTBiY2QiLGQ6Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYThcdTBiYmVcdTBiYjNcdTBiY2QiLGRkOiIl''@;'; put 'put ''ZCBcdTBiYThcdTBiYmVcdTBiOWZcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLE06Ilx1MGI5Mlx1MGJiMFx1MGJjMSBcdTBiYWVcdTBiYmVcdTBiYTRcdTBiYWVcdTBiY2QiLE1NOiIlZCBcdTBiYWVcdTBiYmVcdTBiYTRcdTBiOTlcdTBiY2RcdTBiOTVcdTBiYjNcdTBiY2QiLHk6Ilx1MGI5''@;'; put 'put ''Mlx1MGJiMFx1MGJjMSBcdTBiYjVcdTBiYjBcdTBiYzFcdTBiOWZcdTBiYWVcdTBiY2QiLHl5OiIlZCBcdTBiODZcdTBiYTNcdTBiY2RcdTBiOWZcdTBiYzFcdTBiOTVcdTBiYjNcdTBiY2QifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9XHUwYmI1XHUwYmE0XHUwYmMxLyxvcmRp''@;'; put 'put ''bmFsOmZ1bmN0aW9uKE0pe3JldHVybiBNKyJcdTBiYjVcdTBiYTRcdTBiYzEifSxwcmVwYXJzZTpmdW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC9bXHUwYmU3XHUwYmU4XHUwYmU5XHUwYmVhXHUwYmViXHUwYmVjXHUwYmVkXHUwYmVlXHUwYmVmXHUwYmU2XS9nLGZ1bmN0aW9uKE8pe3Jl''@;'; put 'put ''dHVybiBtW09dfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oTSl7cmV0dXJuIE0ucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihPKXtyZXR1cm4geFtPXX0pfSxtZXJpZGllbVBhcnNlOi9cdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2R8XHUwYmI1XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4fFx1''@;'; put 'put ''MGI5NVx1MGJiZVx1MGJiMlx1MGJjOHxcdTBiYThcdTBiYTNcdTBiY2RcdTBiYWFcdTBiOTVcdTBiYjJcdTBiY2R8XHUwYjhlXHUwYmIxXHUwYmNkXHUwYmFhXHUwYmJlXHUwYjlmXHUwYmMxfFx1MGJhZVx1MGJiZVx1MGJiMlx1MGJjOC8sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVy''@;'; put 'put ''biBNPDI/IiBcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QiOk08Nj8iIFx1MGJiNVx1MGJjOFx1MGI5NVx1MGJiMVx1MGJjOCI6TTwxMD8iIFx1MGI5NVx1MGJiZVx1MGJiMlx1MGJjOCI6TTwxND8iIFx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZCI6TTwx''@;'; put 'put ''OD8iIFx1MGI4ZVx1MGJiMVx1MGJjZFx1MGJhYVx1MGJiZVx1MGI5Zlx1MGJjMSI6TTwyMj8iIFx1MGJhZVx1MGJiZVx1MGJiMlx1MGJjOCI6IiBcdTBiYWZcdTBiYmVcdTBiYWVcdTBiYWVcdTBiY2QifSxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gMTI9PT1NJiYoTT0wKSwi''@;'; put 'put ''XHUwYmFmXHUwYmJlXHUwYmFlXHUwYmFlXHUwYmNkIj09PU8/TTwyP006TSsxMjoiXHUwYmI1XHUwYmM4XHUwYjk1XHUwYmIxXHUwYmM4Ij09PU98fCJcdTBiOTVcdTBiYmVcdTBiYjJcdTBiYzgiPT09T3x8Ilx1MGJhOFx1MGJhM1x1MGJjZFx1MGJhYVx1MGI5NVx1MGJiMlx1MGJjZCI9PT1P''@;'; put 'put ''JiZNPj0xMD9NOk0rMTJ9LHdlZWs6e2RvdzowLGRveTo2fX0pfShSKDk3NTg2KSl9LDMyMDYwOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29lLmRlZmluZUxvY2FsZSgidGUiLHttb250aHM6Ilx1MGMxY1x1MGMyOFx1MGMzNVx1MGMzMFx1MGMzZl9cdTBj''@;'; put 'put ''MmJcdTBjM2ZcdTBjMmNcdTBjNGRcdTBjMzBcdTBjMzVcdTBjMzBcdTBjM2ZfXHUwYzJlXHUwYzNlXHUwYzMwXHUwYzRkXHUwYzFhXHUwYzNmX1x1MGMwZlx1MGMyYVx1MGM0ZFx1MGMzMFx1MGMzZlx1MGMzMlx1MGM0ZF9cdTBjMmVcdTBjNDdfXHUwYzFjXHUwYzQyXHUwYzI4XHUwYzRkX1x1''@;'; put 'put ''MGMxY1x1MGM0MVx1MGMzMlx1MGM0OF9cdTBjMDZcdTBjMTdcdTBjMzhcdTBjNGRcdTBjMWZcdTBjNDFfXHUwYzM4XHUwYzQ2XHUwYzJhXHUwYzRkXHUwYzFmXHUwYzQ2XHUwYzAyXHUwYzJjXHUwYzMwXHUwYzRkX1x1MGMwNVx1MGMxNVx1MGM0ZFx1MGMxZlx1MGM0Ylx1MGMyY1x1MGMzMFx1''@;'; put 'put ''MGM0ZF9cdTBjMjhcdTBjMzVcdTBjMDJcdTBjMmNcdTBjMzBcdTBjNGRfXHUwYzIxXHUwYzNmXHUwYzM4XHUwYzQ2XHUwYzAyXHUwYzJjXHUwYzMwXHUwYzRkIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJcdTBjMWNcdTBjMjguX1x1MGMyYlx1MGMzZlx1MGMyY1x1MGM0ZFx1MGMzMC5fXHUw''@;'; put 'put ''YzJlXHUwYzNlXHUwYzMwXHUwYzRkXHUwYzFhXHUwYzNmX1x1MGMwZlx1MGMyYVx1MGM0ZFx1MGMzMFx1MGMzZi5fXHUwYzJlXHUwYzQ3X1x1MGMxY1x1MGM0Mlx1MGMyOFx1MGM0ZF9cdTBjMWNcdTBjNDFcdTBjMzJcdTBjNDhfXHUwYzA2XHUwYzE3Ll9cdTBjMzhcdTBjNDZcdTBjMmFcdTBj''@;'; put 'put ''NGQuX1x1MGMwNVx1MGMxNVx1MGM0ZFx1MGMxZlx1MGM0Yi5fXHUwYzI4XHUwYzM1Ll9cdTBjMjFcdTBjM2ZcdTBjMzhcdTBjNDYuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGMwNlx1MGMyNlx1MGMzZlx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBj''@;'; put 'put ''MzhcdTBjNGJcdTBjMmVcdTBjMzVcdTBjM2VcdTBjMzBcdTBjMDJfXHUwYzJlXHUwYzAyXHUwYzE3XHUwYzMzXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMyY1x1MGM0MVx1MGMyN1x1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMl9cdTBjMTdcdTBjNDFcdTBjMzBcdTBjNDFcdTBjMzVcdTBj''@;'; put 'put ''M2VcdTBjMzBcdTBjMDJfXHUwYzM2XHUwYzQxXHUwYzE1XHUwYzRkXHUwYzMwXHUwYzM1XHUwYzNlXHUwYzMwXHUwYzAyX1x1MGMzNlx1MGMyOFx1MGMzZlx1MGMzNVx1MGMzZVx1MGMzMFx1MGMwMiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBjMDZcdTBjMjZcdTBjM2ZfXHUwYzM4''@;'; put 'put ''XHUwYzRiXHUwYzJlX1x1MGMyZVx1MGMwMlx1MGMxN1x1MGMzM19cdTBjMmNcdTBjNDFcdTBjMjdfXHUwYzE3XHUwYzQxXHUwYzMwXHUwYzQxX1x1MGMzNlx1MGM0MVx1MGMxNVx1MGM0ZFx1MGMzMF9cdTBjMzZcdTBjMjhcdTBjM2YiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGMwNl9c''@;'; put 'put ''dTBjMzhcdTBjNGJfXHUwYzJlXHUwYzAyX1x1MGMyY1x1MGM0MV9cdTBjMTdcdTBjNDFfXHUwYzM2XHUwYzQxX1x1MGMzNiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSIsTFRTOiJBIGg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJE''@;'; put 'put ''IE1NTU0gWVlZWSwgQSBoOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTBjMjhcdTBjNDdcdTBjMjFcdTBjNDFdIExUIixuZXh0RGF5OiJbXHUwYzMwXHUwYzQ3XHUwYzJhXHUwYzQxXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixs''@;'; put 'put ''YXN0RGF5OiJbXHUwYzI4XHUwYzNmXHUwYzI4XHUwYzRkXHUwYzI4XSBMVCIsbGFzdFdlZWs6IltcdTBjMTdcdTBjMjRdIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTBjMzJcdTBjNGIiLHBhc3Q6IiVzIFx1MGMxNVx1MGM0ZFx1MGMzMFx1MGMz''@;'; put 'put ''Zlx1MGMyNFx1MGMwMiIsczoiXHUwYzE1XHUwYzRhXHUwYzI4XHUwYzRkXHUwYzI4XHUwYzNmIFx1MGMxNVx1MGM0ZFx1MGMzN1x1MGMyM1x1MGMzZVx1MGMzMlx1MGM0MSIsc3M6IiVkIFx1MGMzOFx1MGM0Nlx1MGMxNVx1MGMyOFx1MGM0ZFx1MGMzMlx1MGM0MSIsbToiXHUwYzEyXHUwYzE1''@;'; put 'put ''IFx1MGMyOFx1MGMzZlx1MGMyZVx1MGMzZlx1MGMzN1x1MGMwMiIsbW06IiVkIFx1MGMyOFx1MGMzZlx1MGMyZVx1MGMzZlx1MGMzN1x1MGMzZVx1MGMzMlx1MGM0MSIsaDoiXHUwYzEyXHUwYzE1IFx1MGMxN1x1MGMwMlx1MGMxZiIsaGg6IiVkIFx1MGMxN1x1MGMwMlx1MGMxZlx1MGMzMlx1''@;'; put 'put ''MGM0MSIsZDoiXHUwYzEyXHUwYzE1IFx1MGMzMFx1MGM0Ylx1MGMxY1x1MGM0MSIsZGQ6IiVkIFx1MGMzMFx1MGM0Ylx1MGMxY1x1MGM0MVx1MGMzMlx1MGM0MSIsTToiXHUwYzEyXHUwYzE1IFx1MGMyOFx1MGM0Nlx1MGMzMiIsTU06IiVkIFx1MGMyOFx1MGM0Nlx1MGMzMlx1MGMzMlx1MGM0''@;'; put 'put ''MSIseToiXHUwYzEyXHUwYzE1IFx1MGMzOFx1MGMwMlx1MGMzNVx1MGMyNFx1MGM0ZFx1MGMzOFx1MGMzMFx1MGMwMiIseXk6IiVkIFx1MGMzOFx1MGMwMlx1MGMzNVx1MGMyNFx1MGM0ZFx1MGMzOFx1MGMzMFx1MGMzZVx1MGMzMlx1MGM0MSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xk''@;'; put 'put ''ezEsMn1cdTBjMzUvLG9yZGluYWw6IiVkXHUwYzM1IixtZXJpZGllbVBhcnNlOi9cdTBjMzBcdTBjM2VcdTBjMjRcdTBjNGRcdTBjMzBcdTBjM2Z8XHUwYzA5XHUwYzI2XHUwYzJmXHUwYzAyfFx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1MGMwMnxc''@;'; put 'put ''dTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihtLHNlKXtyZXR1cm4gMTI9PT1tJiYobT0wKSwiXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmIj09PXNlP208ND9tOm0rMTI6Ilx1MGMwOVx1MGMy''@;'; put 'put ''Nlx1MGMyZlx1MGMwMiI9PT1zZT9tOiJcdTBjMmVcdTBjMjdcdTBjNGRcdTBjMmZcdTBjM2VcdTBjMzlcdTBjNGRcdTBjMjhcdTBjMDIiPT09c2U/bT49MTA/bTptKzEyOiJcdTBjMzhcdTBjM2VcdTBjMmZcdTBjMDJcdTBjMjRcdTBjNGRcdTBjMzBcdTBjMDIiPT09c2U/bSsxMjp2b2lkIDB9''@;'; put 'put ''LG1lcmlkaWVtOmZ1bmN0aW9uKG0sc2UsTSl7cmV0dXJuIG08ND8iXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmIjptPDEwPyJcdTBjMDlcdTBjMjZcdTBjMmZcdTBjMDIiOm08MTc/Ilx1MGMyZVx1MGMyN1x1MGM0ZFx1MGMyZlx1MGMzZVx1MGMzOVx1MGM0ZFx1MGMyOFx1''@;'; put 'put ''MGMwMiI6bTwyMD8iXHUwYzM4XHUwYzNlXHUwYzJmXHUwYzAyXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzAyIjoiXHUwYzMwXHUwYzNlXHUwYzI0XHUwYzRkXHUwYzMwXHUwYzNmIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSl9KFIoOTc1ODYpKX0sOTMyOTA6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0''@;'; put 'put ''aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ0ZXQiLHttb250aHM6IkphbmVpcnVfRmV2ZXJlaXJ1X01hcnN1X0FicmlsX01haXVfSnVceGYxdV9KdWxsdV9BZ3VzdHVfU2V0ZW1icnVfT3V0dWJydV9Ob3ZlbWJydV9EZXplbWJydSIuc3BsaXQoIl8iKSxtb250aHNTaG9y''@;'; put 'put ''dDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ3VfU2VndW5kYV9UZXJzYV9LdWFydGFfS2ludGFfU2VzdGFfU2FiYWR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyc19LdWFf''@;'; put 'put ''S2ludF9TZXN0X1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fU2VnX1RlX0t1X0tpX1Nlc19TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg''@;'; put 'put ''SEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPaGluIGloYV0gTFQiLG5leHREYXk6IltBYmFuIGloYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtpaGFdIExUIixsYXN0RGF5OiJbSG9yaXNlaWsgaWhhXSBMVCIsbGFzdFdlZWs6ImRkZGQg''@;'; put 'put ''W3NlbWFuYSBrb3R1a10gW2loYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImloYSAlcyIscGFzdDoiJXMgbGl1YmEiLHM6InNlZ3VuZHUgYmFsdW4iLHNzOiJzZWd1bmR1ICVkIixtOiJtaW51dHUgaWRhIixtbToibWludXR1ICVkIixoOiJvcmFzIGlkYSIsaGg6''@;'; put 'put ''Im9yYXMgJWQiLGQ6Imxvcm9uIGlkYSIsZGQ6Imxvcm9uICVkIixNOiJmdWxhbiBpZGEiLE1NOiJmdWxhbiAlZCIseToidGluYW4gaWRhIix5eToidGluYW4gJWQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihtKXt2YXIg''@;'; put 'put ''c2U9bSUxMDtyZXR1cm4gbSsoMT09fn4obSUxMDAvMTApPyJ0aCI6MT09PXNlPyJzdCI6Mj09PXNlPyJuZCI6Mz09PXNlPyJyZCI6InRoIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDgyOTQ6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7''@;'; put 'put ''dmFyIHg9ezA6Ii1cdTA0NDNcdTA0M2MiLDE6Ii1cdTA0NDNcdTA0M2MiLDI6Ii1cdTA0NGVcdTA0M2MiLDM6Ii1cdTA0NGVcdTA0M2MiLDQ6Ii1cdTA0NDNcdTA0M2MiLDU6Ii1cdTA0NDNcdTA0M2MiLDY6Ii1cdTA0NDNcdTA0M2MiLDc6Ii1cdTA0NDNcdTA0M2MiLDg6Ii1cdTA0NDNcdTA0''@;'; put 'put ''M2MiLDk6Ii1cdTA0NDNcdTA0M2MiLDEwOiItXHUwNDQzXHUwNDNjIiwxMjoiLVx1MDQ0M1x1MDQzYyIsMTM6Ii1cdTA0NDNcdTA0M2MiLDIwOiItXHUwNDQzXHUwNDNjIiwzMDoiLVx1MDQ0ZVx1MDQzYyIsNDA6Ii1cdTA0NDNcdTA0M2MiLDUwOiItXHUwNDQzXHUwNDNjIiw2MDoiLVx1MDQ0''@;'; put 'put ''M1x1MDQzYyIsNzA6Ii1cdTA0NDNcdTA0M2MiLDgwOiItXHUwNDQzXHUwNDNjIiw5MDoiLVx1MDQ0M1x1MDQzYyIsMTAwOiItXHUwNDQzXHUwNDNjIn07b2UuZGVmaW5lTG9jYWxlKCJ0ZyIse21vbnRoczp7Zm9ybWF0OiJcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBcdTA0MzhfXHUw''@;'; put 'put ''NDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiXHUwNDM4X1x1MDQzY1x1MDQzMFx1MDQ0MFx1MDQ0Mlx1MDQzOF9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JcdTA0MzhfXHUwNDNjXHUwNDMwXHUwNDM5XHUwNDM4X1x1MDQzOFx1MDQ0ZVx1MDQzZFx1MDQzOF9cdTA0Mzhc''@;'; put 'put ''dTA0NGVcdTA0M2JcdTA0MzhfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyXHUwNDM4X1x1MDQ0MVx1MDQzNVx1MDQzZFx1MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MFx1MDQzOF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBcdTA0MzhfXHUwNDNkXHUwNDNl''@;'; put 'put ''XHUwNDRmXHUwNDMxXHUwNDQwXHUwNDM4X1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MFx1MDQzOCIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJcdTA0NGZcdTA0M2RcdTA0MzJcdTA0MzBcdTA0NDBfXHUwNDQ0XHUwNDM1XHUwNDMyXHUwNDQwXHUwNDMwXHUwNDNiX1x1MDQz''@;'; put 'put ''Y1x1MDQzMFx1MDQ0MFx1MDQ0Ml9cdTA0MzBcdTA0M2ZcdTA0NDBcdTA0MzVcdTA0M2JfXHUwNDNjXHUwNDMwXHUwNDM5X1x1MDQzOFx1MDQ0ZVx1MDQzZF9cdTA0MzhcdTA0NGVcdTA0M2JfXHUwNDMwXHUwNDMyXHUwNDMzXHUwNDQzXHUwNDQxXHUwNDQyX1x1MDQ0MVx1MDQzNVx1MDQzZFx1''@;'; put 'put ''MDQ0Mlx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0M2VcdTA0M2FcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNkXHUwNDNlXHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzNFx1MDQzNVx1MDQzYVx1MDQzMFx1MDQzMVx1MDQ0MCIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQz''@;'; put 'put ''ZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUwNDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQz''@;'; put 'put ''ZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUwNDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0NGZcdTA0M2FcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNDM0XHUwNDQzXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDQ0''@;'; put 'put ''MVx1MDQzNVx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzNV9cdTA0NDdcdTA0M2VcdTA0NDBcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzVfXHUwNDNmXHUwNDMwXHUwNDNkXHUwNGI3XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDM1X1x1MDRiN1x1MDQ0M1x1MDQzY1x1MDQ0''@;'; put 'put ''YVx1MDQzMF9cdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHUwNDRmXHUwNDQ4XHUwNDMxX1x1MDQzNFx1MDQ0OFx1MDQzMV9cdTA0NDFcdTA0NDhcdTA0MzFfXHUwNDQ3XHUwNDQ4XHUwNDMxX1x1MDQzZlx1MDQ0OFx1MDQzMV9cdTA0''@;'; put 'put ''YjdcdTA0NDNcdTA0M2NfXHUwNDQ4XHUwNDNkXHUwNDMxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTA0NGZcdTA0NDhfXHUwNDM0XHUwNDQ4X1x1MDQ0MVx1MDQ0OF9cdTA0NDdcdTA0NDhfXHUwNDNmXHUwNDQ4X1x1MDRiN1x1MDQzY19cdTA0NDhcdTA0MzEiLnNwbGl0KCJfIiksbG9u''@;'; put 'put ''Z0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDE4XHUwNDNjXHUwNDQw''@;'; put 'put ''XHUwNGVmXHUwNDM3IFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQiLG5leHREYXk6IltcdTA0MjRcdTA0MzBcdTA0NDBcdTA0MzRcdTA0M2UgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsbGFzdERheToiW1x1MDQxNFx1MDQzOFx1MDQ0MFx1MDRlZlx1MDQz''@;'; put 'put ''NyBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDJcdTA0MzhdIExUIixuZXh0V2VlazoiZGRkZFtcdTA0MzhdIFtcdTA0YjNcdTA0MzBcdTA0NDRcdTA0NDJcdTA0MzBcdTA0MzggXHUwNDNlXHUwNDRmXHUwNDNkXHUwNDM0XHUwNDMwIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Mlx1MDQzOF0gTFQi''@;'; put 'put ''LGxhc3RXZWVrOiJkZGRkW1x1MDQzOF0gW1x1MDRiM1x1MDQzMFx1MDQ0NFx1MDQ0Mlx1MDQzMFx1MDQzOCBcdTA0MzNcdTA0NDNcdTA0MzdcdTA0MzBcdTA0NDhcdTA0NDJcdTA0MzAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXHUwNDM4XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToiXHUwNDMxXHUwNDMwXHUwNDRhXHUwNDM0XHUwNDM4ICVzIixwYXN0OiIlcyBcdTA0M2ZcdTA0MzVcdTA0NDgiLHM6Ilx1MDQ0Zlx1MDQzYVx1MDQ0N1x1MDQzMFx1MDQzZFx1MDQzNCBcdTA0NDFcdTA0M2VcdTA0M2RcdTA0MzhcdTA0NGYiLG06Ilx1MDQ0Zlx1MDQzYSBc''@;'; put 'put ''dTA0MzRcdTA0MzBcdTA0OWJcdTA0MzhcdTA0OWJcdTA0MzAiLG1tOiIlZCBcdTA0MzRcdTA0MzBcdTA0OWJcdTA0MzhcdTA0OWJcdTA0MzAiLGg6Ilx1MDQ0Zlx1MDQzYSBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDIiLGhoOiIlZCBcdTA0NDFcdTA0M2VcdTA0MzBcdTA0NDIiLGQ6Ilx1MDQ0''@;'; put 'put ''Zlx1MDQzYSBcdTA0NDBcdTA0ZWZcdTA0MzciLGRkOiIlZCBcdTA0NDBcdTA0ZWZcdTA0MzciLE06Ilx1MDQ0Zlx1MDQzYSBcdTA0M2NcdTA0M2VcdTA0YjMiLE1NOiIlZCBcdTA0M2NcdTA0M2VcdTA0YjMiLHk6Ilx1MDQ0Zlx1MDQzYSBcdTA0NDFcdTA0M2VcdTA0M2IiLHl5OiIlZCBcdTA0''@;'; put 'put ''NDFcdTA0M2VcdTA0M2IifSxtZXJpZGllbVBhcnNlOi9cdTA0NDhcdTA0MzBcdTA0MzF8XHUwNDQxXHUwNDQzXHUwNDMxXHUwNGIzfFx1MDQ0MFx1MDRlZlx1MDQzN3xcdTA0MzFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0YjMvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihzZSxNKXtyZXR1cm4gMTI9''@;'; put 'put ''PT1zZSYmKHNlPTApLCJcdTA0NDhcdTA0MzBcdTA0MzEiPT09TT9zZTw0P3NlOnNlKzEyOiJcdTA0NDFcdTA0NDNcdTA0MzFcdTA0YjMiPT09TT9zZToiXHUwNDQwXHUwNGVmXHUwNDM3Ij09PU0/c2U+PTExP3NlOnNlKzEyOiJcdTA0MzFcdTA0MzVcdTA0MzNcdTA0M2VcdTA0YjMiPT09TT9z''@;'; put 'put ''ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKHNlLE0sTyl7cmV0dXJuIHNlPDQ/Ilx1MDQ0OFx1MDQzMFx1MDQzMSI6c2U8MTE/Ilx1MDQ0MVx1MDQ0M1x1MDQzMVx1MDRiMyI6c2U8MTY/Ilx1MDQ0MFx1MDRlZlx1MDQzNyI6c2U8MTk/Ilx1MDQzMVx1MDQzNVx1MDQzM1x1MDQzZVx1''@;'; put 'put ''MDRiMyI6Ilx1MDQ0OFx1MDQzMFx1MDQzMSJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0tKFx1MDQ0M1x1MDQzY3xcdTA0NGVcdTA0M2MpLyxvcmRpbmFsOmZ1bmN0aW9uKHNlKXtyZXR1cm4gc2UrKHhbc2VdfHx4W3NlJTEwXXx8eFtzZT49MTAwPzEwMDpudWxsXSl9LHdlZWs6''@;'; put 'put ''e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDEyMzE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ0aCIse21vbnRoczoiXHUwZTIxXHUwZTAxXHUwZTIzXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUwMVx1MGUzOFx1MGUyMVx1''@;'; put 'put ''MGUyMFx1MGUzMlx1MGUxZVx1MGUzMVx1MGUxOVx1MGUxOFx1MGU0Y19cdTBlMjFcdTBlMzVcdTBlMTlcdTBlMzJcdTBlMDRcdTBlMjFfXHUwZTQwXHUwZTIxXHUwZTI5XHUwZTMyXHUwZTIyXHUwZTE5X1x1MGUxZVx1MGUyNFx1MGUyOVx1MGUyMFx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMjFc''@;'; put 'put ''dTBlMzRcdTBlMTZcdTBlMzhcdTBlMTlcdTBlMzJcdTBlMjJcdTBlMTlfXHUwZTAxXHUwZTIzXHUwZTAxXHUwZTBlXHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUyYVx1MGUzNFx1MGUwN1x1MGUyYlx1MGUzMlx1MGUwNFx1MGUyMV9cdTBlMDFcdTBlMzFcdTBlMTlcdTBlMjJcdTBlMzJcdTBlMjJc''@;'; put 'put ''dTBlMTlfXHUwZTE1XHUwZTM4XHUwZTI1XHUwZTMyXHUwZTA0XHUwZTIxX1x1MGUxZVx1MGUyNFx1MGUyOFx1MGUwOFx1MGUzNFx1MGUwMVx1MGUzMlx1MGUyMlx1MGUxOV9cdTBlMThcdTBlMzFcdTBlMTlcdTBlMjdcdTBlMzJcdTBlMDRcdTBlMjEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6''@;'; put 'put ''Ilx1MGUyMS5cdTBlMDQuX1x1MGUwMS5cdTBlMWUuX1x1MGUyMVx1MGUzNS5cdTBlMDQuX1x1MGU0MFx1MGUyMS5cdTBlMjIuX1x1MGUxZS5cdTBlMDQuX1x1MGUyMVx1MGUzNC5cdTBlMjIuX1x1MGUwMS5cdTBlMDQuX1x1MGUyYS5cdTBlMDQuX1x1MGUwMS5cdTBlMjIuX1x1MGUxNS5cdTBl''@;'; put 'put ''MDQuX1x1MGUxZS5cdTBlMjIuX1x1MGUxOC5cdTBlMDQuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Ilx1MGUyZFx1MGUzMlx1MGUxN1x1MGUzNFx1MGUxNVx1MGUyMlx1MGU0Y19cdTBlMDhcdTBlMzFcdTBlMTlcdTBlMTdcdTBlMjNcdTBlNGNfXHUwZTJkXHUw''@;'; put 'put ''ZTMxXHUwZTA3XHUwZTA0XHUwZTMyXHUwZTIzX1x1MGUxZVx1MGUzOFx1MGUxOF9cdTBlMWVcdTBlMjRcdTBlMmJcdTBlMzFcdTBlMmFcdTBlMWFcdTBlMTRcdTBlMzVfXHUwZTI4XHUwZTM4XHUwZTAxXHUwZTIzXHUwZTRjX1x1MGU0MFx1MGUyYVx1MGUzMlx1MGUyM1x1MGU0YyIuc3BsaXQo''@;'; put 'put ''Il8iKSx3ZWVrZGF5c1Nob3J0OiJcdTBlMmRcdTBlMzJcdTBlMTdcdTBlMzRcdTBlMTVcdTBlMjJcdTBlNGNfXHUwZTA4XHUwZTMxXHUwZTE5XHUwZTE3XHUwZTIzXHUwZTRjX1x1MGUyZFx1MGUzMVx1MGUwN1x1MGUwNFx1MGUzMlx1MGUyM19cdTBlMWVcdTBlMzhcdTBlMThfXHUwZTFlXHUw''@;'; put 'put ''ZTI0XHUwZTJiXHUwZTMxXHUwZTJhX1x1MGUyOFx1MGUzOFx1MGUwMVx1MGUyM1x1MGU0Y19cdTBlNDBcdTBlMmFcdTBlMzJcdTBlMjNcdTBlNGMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MGUyZFx1MGUzMi5fXHUwZTA4Ll9cdTBlMmQuX1x1MGUxZS5fXHUwZTFlXHUwZTI0Ll9cdTBl''@;'; put 'put ''MjguX1x1MGUyYS4iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyIEg6bW0i''@;'; put 'put ''LExMTEw6Ilx1MGUyN1x1MGUzMVx1MGUxOWRkZGRcdTBlMTdcdTBlMzVcdTBlNDggRCBNTU1NIFlZWVkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyIEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTBlMDFcdTBlNDhcdTBlMmRcdTBlMTlcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBl''@;'; put 'put ''MDd8XHUwZTJiXHUwZTI1XHUwZTMxXHUwZTA3XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3Lyxpc1BNOmZ1bmN0aW9uKG0pe3JldHVybiJcdTBlMmJcdTBlMjVcdTBlMzFcdTBlMDdcdTBlNDBcdTBlMTdcdTBlMzVcdTBlNDhcdTBlMjJcdTBlMDciPT09bX0sbWVyaWRpZW06''@;'; put 'put ''ZnVuY3Rpb24obSxzZSxNKXtyZXR1cm4gbTwxMj8iXHUwZTAxXHUwZTQ4XHUwZTJkXHUwZTE5XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3IjoiXHUwZTJiXHUwZTI1XHUwZTMxXHUwZTA3XHUwZTQwXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTIyXHUwZTA3In0sY2FsZW5kYXI6''@;'; put 'put ''e3NhbWVEYXk6IltcdTBlMjdcdTBlMzFcdTBlMTlcdTBlMTlcdTBlMzVcdTBlNDkgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbmV4dERheToiW1x1MGUxZVx1MGUyM1x1MGUzOFx1MGU0OFx1MGUwN1x1MGUxOVx1MGUzNVx1MGU0OSBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExU''@;'; put 'put ''IixuZXh0V2VlazoiZGRkZFtcdTBlMmJcdTBlMTlcdTBlNDlcdTBlMzIgXHUwZTQwXHUwZTI3XHUwZTI1XHUwZTMyXSBMVCIsbGFzdERheToiW1x1MGU0MFx1MGUyMVx1MGUzN1x1MGU0OFx1MGUyZFx1MGUyN1x1MGUzMlx1MGUxOVx1MGUxOVx1MGUzNVx1MGU0OSBcdTBlNDBcdTBlMjdcdTBl''@;'; put 'put ''MjVcdTBlMzJdIExUIixsYXN0V2VlazoiW1x1MGUyN1x1MGUzMVx1MGUxOV1kZGRkW1x1MGUxN1x1MGUzNVx1MGU0OFx1MGU0MVx1MGUyNVx1MGU0OVx1MGUyNyBcdTBlNDBcdTBlMjdcdTBlMjVcdTBlMzJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTBlMmRc''@;'; put 'put ''dTBlMzVcdTBlMDEgJXMiLHBhc3Q6IiVzXHUwZTE3XHUwZTM1XHUwZTQ4XHUwZTQxXHUwZTI1XHUwZTQ5XHUwZTI3IixzOiJcdTBlNDRcdTBlMjFcdTBlNDhcdTBlMDFcdTBlMzVcdTBlNDhcdTBlMjdcdTBlMzRcdTBlMTlcdTBlMzJcdTBlMTdcdTBlMzUiLHNzOiIlZCBcdTBlMjdcdTBlMzRc''@;'; put 'put ''dTBlMTlcdTBlMzJcdTBlMTdcdTBlMzUiLG06IjEgXHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixtbToiJWQgXHUwZTE5XHUwZTMyXHUwZTE3XHUwZTM1IixoOiIxIFx1MGUwYVx1MGUzMVx1MGU0OFx1MGUyN1x1MGU0Mlx1MGUyMVx1MGUwNyIsaGg6IiVkIFx1MGUwYVx1MGUzMVx1MGU0OFx1''@;'; put 'put ''MGUyN1x1MGU0Mlx1MGUyMVx1MGUwNyIsZDoiMSBcdTBlMjdcdTBlMzFcdTBlMTkiLGRkOiIlZCBcdTBlMjdcdTBlMzFcdTBlMTkiLHc6IjEgXHUwZTJhXHUwZTMxXHUwZTFiXHUwZTE0XHUwZTMyXHUwZTJiXHUwZTRjIix3dzoiJWQgXHUwZTJhXHUwZTMxXHUwZTFiXHUwZTE0XHUwZTMyXHUw''@;'; put 'put ''ZTJiXHUwZTRjIixNOiIxIFx1MGU0MFx1MGUxNFx1MGUzN1x1MGUyZFx1MGUxOSIsTU06IiVkIFx1MGU0MFx1MGUxNFx1MGUzN1x1MGUyZFx1MGUxOSIseToiMSBcdTBlMWJcdTBlMzUiLHl5OiIlZCBcdTBlMWJcdTBlMzUifX0pfShSKDk3NTg2KSl9LDM3NDY6ZnVuY3Rpb24oUWUsTWUsUil7''@;'; put 'put ''IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9ezE6IidpbmppIiw1OiInaW5qaSIsODoiJ2luamkiLDcwOiInaW5qaSIsODA6IidpbmppIiwyOiInbmppIiw3OiInbmppIiwyMDoiJ25qaSIsNTA6IiduamkiLDM6IidceGZjbmppIiw0OiInXHhmY25qaSIsMTAwOiInXHhmY25qaSIs''@;'; put 'put ''NjoiJ25qeSIsOToiJ3VuankiLDEwOiIndW5qeSIsMzA6Iid1bmp5Iiw2MDoiJ3luankiLDkwOiIneW5qeSJ9O29lLmRlZmluZUxvY2FsZSgidGsiLHttb250aHM6Ilx4ZGRhbndhcl9GZXdyYWxfTWFydF9BcHJlbF9NYVx4ZmRfSVx4ZmR1bl9JXHhmZHVsX0F3Z3VzdF9TZW50XHhmZGFicl9P''@;'; put 'put ''a3RceGZkYWJyX05vXHhmZGFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx4ZGRhbl9GZXdfTWFyX0Fwcl9NYVx4ZmRfSVx4ZmRuX0lceGZkbF9Bd2dfU2VuX09rdF9Ob1x4ZmRfRGVrIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJceGRkZWtcdTAxNWZlbmJlX0R1XHUwMTVmZW5i''@;'; put 'put ''ZV9TaVx1MDE1ZmVuYmVfXHhjN2FyXHUwMTVmZW5iZV9QZW5cdTAxNWZlbmJlX0FubmFfXHUwMTVlZW5iZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJceGRkZWtfRHVcdTAxNWZfU2lcdTAxNWZfXHhjN2FyX1Blbl9Bbm5fXHUwMTVlZW4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx4''@;'; put 'put ''ZGRrX0RcdTAxNWZfU1x1MDE1Zl9ceGM3cl9Qbl9Bbl9cdTAxNWVuIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBN''@;'; put 'put ''TU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2J1Z1x4ZmNuIHNhZ2F0XSBMVCIsbmV4dERheToiW2VydGlyIHNhZ2F0XSBMVCIsbmV4dFdlZWs6IltpbmRpa2ldIGRkZGQgW3NhZ2F0XSBMVCIsbGFzdERheToiW2RceGZjXHhmZG5dIExUIixsYXN0V2VlazoiW2dlXHhlN2Vu''@;'; put 'put ''XSBkZGRkIFtzYWdhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvXHUwMTQ4IixwYXN0OiIlcyBceGY2XHUwMTQ4IixzOiJiaXJuXHhlNFx4ZTdlIHNla3VudCIsbToiYmlyIG1pbnV0IixtbToiJWQgbWludXQiLGg6ImJpciBzYWdhdCIsaGg6IiVkIHNh''@;'; put 'put ''Z2F0IixkOiJiaXIgZ1x4ZmNuIixkZDoiJWQgZ1x4ZmNuIixNOiJiaXIgYVx4ZmQiLE1NOiIlZCBhXHhmZCIseToiYmlyIFx4ZmR5bCIseXk6IiVkIFx4ZmR5bCJ9LG9yZGluYWw6ZnVuY3Rpb24oc2UsTSl7c3dpdGNoKE0pe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRvIjpjYXNlIkREIjpyZXR1''@;'; put 'put ''cm4gc2U7ZGVmYXVsdDppZigwPT09c2UpcmV0dXJuIHNlKyIndW5qeSI7dmFyIE89c2UlMTA7cmV0dXJuIHNlKyh4W09dfHx4W3NlJTEwMC1PXXx8eFtzZT49MTAwPzEwMDpudWxsXSl9fSx3ZWVrOntkb3c6MSxkb3k6N319KX0oUig5NzU4NikpfSw0OTA0MDpmdW5jdGlvbihRZSxNZSxSKXsh''@;'; put 'put ''ZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInRsLXBoIix7bW9udGhzOiJFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUiLnNwbGl0KCJfIiksbW9udGhz''@;'; put 'put ''U2hvcnQ6IkVuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTGluX0x1''@;'; put 'put ''bl9NYXJfTWl5X0h1d19CaXlfU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJMaV9MdV9NYV9NaV9IdV9CaV9TYWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiTU0vRC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0g''@;'; put 'put ''RCwgWVlZWSBISDptbSIsTExMTDoiZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJMVCBbbmdheW9uZyBhcmF3XSIsbmV4dERheToiW0J1a2FzIG5nXSBMVCIsbmV4dFdlZWs6IkxUIFtzYSBzdXN1bm9kIG5hXSBkZGRkIixsYXN0RGF5OiJMVCBba2FoYXBv''@;'; put 'put ''bl0iLGxhc3RXZWVrOiJMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJzYSBsb29iIG5nICVzIixwYXN0OiIlcyBhbmcgbmFrYWxpcGFzIixzOiJpbGFuZyBzZWd1bmRvIixzczoiJWQgc2VndW5kbyIsbToiaXNhbmcgbWludXRv''@;'; put 'put ''IixtbToiJWQgbWludXRvIixoOiJpc2FuZyBvcmFzIixoaDoiJWQgb3JhcyIsZDoiaXNhbmcgYXJhdyIsZGQ6IiVkIGFyYXciLE06ImlzYW5nIGJ1d2FuIixNTToiJWQgYnV3YW4iLHk6ImlzYW5nIHRhb24iLHl5OiIlZCB0YW9uIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8s''@;'; put 'put ''b3JkaW5hbDpmdW5jdGlvbihtKXtyZXR1cm4gbX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sMTcxODc6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9InBhZ2hfd2FcdTIwMTlfY2hhXHUyMDE5X3dlal9sb1NfdmFnaF9qYXZfU29j''@;'; put 'put ''aF9jaG9yZ2hfSHV0Ii5zcGxpdCgiXyIpO2Z1bmN0aW9uIE0oaixHLEQsVCl7dmFyIEU9ZnVuY3Rpb24gTyhqKXt2YXIgRz1NYXRoLmZsb29yKGolMWUzLzEwMCksRD1NYXRoLmZsb29yKGolMTAwLzEwKSxUPWolMTAsRT0iIjtyZXR1cm4gRz4wJiYoRSs9eFtHXSsidmF0bGgiKSxEPjAmJihF''@;'; put 'put ''Kz0oIiIhPT1FPyIgIjoiIikreFtEXSsibWFIIiksVD4wJiYoRSs9KCIiIT09RT8iICI6IiIpK3hbVF0pLCIiPT09RT8icGFnaCI6RX0oaik7c3dpdGNoKEQpe2Nhc2Uic3MiOnJldHVybiBFKyIgbHVwIjtjYXNlIm1tIjpyZXR1cm4gRSsiIHR1cCI7Y2FzZSJoaCI6cmV0dXJuIEUrIiByZXAi''@;'; put 'put ''O2Nhc2UiZGQiOnJldHVybiBFKyIgamFqIjtjYXNlIk1NIjpyZXR1cm4gRSsiIGphciI7Y2FzZSJ5eSI6cmV0dXJuIEUrIiBESVMifX1vZS5kZWZpbmVMb2NhbGUoInRsaCIse21vbnRoczoidGVyYVx1MjAxOSBqYXIgd2FcdTIwMTlfdGVyYVx1MjAxOSBqYXIgY2hhXHUyMDE5X3RlcmFcdTIw''@;'; put 'put ''MTkgamFyIHdlal90ZXJhXHUyMDE5IGphciBsb1NfdGVyYVx1MjAxOSBqYXIgdmFnaF90ZXJhXHUyMDE5IGphciBqYXZfdGVyYVx1MjAxOSBqYXIgU29jaF90ZXJhXHUyMDE5IGphciBjaG9yZ2hfdGVyYVx1MjAxOSBqYXIgSHV0X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIX3RlcmFcdTIw''@;'; put 'put ''MTkgamFyIHdhXHUyMDE5bWFIIHdhXHUyMDE5X3RlcmFcdTIwMTkgamFyIHdhXHUyMDE5bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFyIHdhXHUyMDE5X2phciBjaGFcdTIwMTlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNo''@;'; put 'put ''b3JnaF9qYXIgSHV0X2phciB3YVx1MjAxOW1hSF9qYXIgd2FcdTIwMTltYUggd2FcdTIwMTlfamFyIHdhXHUyMDE5bWFIIGNoYVx1MjAxOSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9i''@;'; put 'put ''dXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpf''@;'; put 'put ''YnVxamFqX2doSW5qYWoiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFy''@;'; put 'put ''OntzYW1lRGF5OiJbRGFIamFqXSBMVCIsbmV4dERheToiW3dhXHUyMDE5bGVTXSBMVCIsbmV4dFdlZWs6IkxMTCIsbGFzdERheToiW3dhXHUyMDE5SHVcdTIwMTldIExUIixsYXN0V2VlazoiTExMIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uIG0oail7dmFy''@;'; put 'put ''IEc9ajtyZXR1cm4tMSE9PWouaW5kZXhPZigiamFqIik/Ry5zbGljZSgwLC0zKSsibGVTIjotMSE9PWouaW5kZXhPZigiamFyIik/Ry5zbGljZSgwLC0zKSsid2FRIjotMSE9PWouaW5kZXhPZigiRElTIik/Ry5zbGljZSgwLC0zKSsibmVtIjpHKyIgcElxIn0scGFzdDpmdW5jdGlvbiBzZShq''@;'; put 'put ''KXt2YXIgRz1qO3JldHVybi0xIT09ai5pbmRleE9mKCJqYWoiKT9HLnNsaWNlKDAsLTMpKyJIdVx1MjAxOSI6LTEhPT1qLmluZGV4T2YoImphciIpP0cuc2xpY2UoMCwtMykrIndlbiI6LTEhPT1qLmluZGV4T2YoIkRJUyIpP0cuc2xpY2UoMCwtMykrImJlbiI6RysiIHJldCJ9LHM6InB1UyBs''@;'; put 'put ''dXAiLHNzOk0sbToid2FcdTIwMTkgdHVwIixtbTpNLGg6IndhXHUyMDE5IHJlcCIsaGg6TSxkOiJ3YVx1MjAxOSBqYWoiLGRkOk0sTToid2FcdTIwMTkgamFyIixNTTpNLHk6IndhXHUyMDE5IERJUyIseXk6TX0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIl''@;'; put 'put ''ZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDYwMTUzOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO3ZhciB4PXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIs''@;'; put 'put ''MjA6IiduY2kiLDUwOiInbmNpIiwzOiInXHhmY25jXHhmYyIsNDoiJ1x4ZmNuY1x4ZmMiLDEwMDoiJ1x4ZmNuY1x4ZmMiLDY6IiduY1x1MDEzMSIsOToiJ3VuY3UiLDEwOiIndW5jdSIsMzA6Iid1bmN1Iiw2MDoiJ1x1MDEzMW5jXHUwMTMxIiw5MDoiJ1x1MDEzMW5jXHUwMTMxIn07b2UuZGVm''@;'; put 'put ''aW5lTG9jYWxlKCJ0ciIse21vbnRoczoiT2Nha19cdTAxNWV1YmF0X01hcnRfTmlzYW5fTWF5XHUwMTMxc19IYXppcmFuX1RlbW11el9BXHUwMTFmdXN0b3NfRXlsXHhmY2xfRWtpbV9LYXNcdTAxMzFtX0FyYWxcdTAxMzFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfXHUwMTVldWJf''@;'; put 'put ''TWFyX05pc19NYXlfSGF6X1RlbV9BXHUwMTFmdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWxcdTAxMzFfXHhjN2FyXHUwMTVmYW1iYV9QZXJcdTAxNWZlbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6''@;'; put 'put ''IlBhel9QenRfU2FsX1x4Yzdhcl9QZXJfQ3VtX0NtdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUHpfUHRfU2FfXHhjN2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oc2UsTSxPKXtyZXR1cm4gc2U8MTI/Tz8iXHhmNlx4ZjYiOiJceGQ2XHhkNiI6Tz8iXHhmNnMi''@;'; put 'put ''OiJceGQ2UyJ9LG1lcmlkaWVtUGFyc2U6L1x4ZjZceGY2fFx4ZDZceGQ2fFx4ZjZzfFx4ZDZTLyxpc1BNOmZ1bmN0aW9uKHNlKXtyZXR1cm4iXHhmNnMiPT09c2V8fCJceGQ2UyI9PT1zZX0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIs''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnXHhmY24gc2FhdF0gTFQiLG5leHREYXk6Ilt5YXJcdTAxMzFuIHNhYXRdIExUIixuZXh0V2VlazoiW2dlbGVjZWtdIGRk''@;'; put 'put ''ZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZFx4ZmNuXSBMVCIsbGFzdFdlZWs6IltnZVx4ZTdlbl0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJhIixwYXN0OiIlcyBceGY2bmNlIixzOiJiaXJrYVx4ZTcgc2FuaXllIixzczoiJWQg''@;'; put 'put ''c2FuaXllIixtOiJiaXIgZGFraWthIixtbToiJWQgZGFraWthIixoOiJiaXIgc2FhdCIsaGg6IiVkIHNhYXQiLGQ6ImJpciBnXHhmY24iLGRkOiIlZCBnXHhmY24iLHc6ImJpciBoYWZ0YSIsd3c6IiVkIGhhZnRhIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIHlcdTAxMzFsIix5eToi''@;'; put 'put ''JWQgeVx1MDEzMWwifSxvcmRpbmFsOmZ1bmN0aW9uKHNlLE0pe3N3aXRjaChNKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEbyI6Y2FzZSJERCI6cmV0dXJuIHNlO2RlZmF1bHQ6aWYoMD09PXNlKXJldHVybiBzZSsiJ1x1MDEzMW5jXHUwMTMxIjt2YXIgTz1zZSUxMDtyZXR1cm4gc2UrKHhbT118''@;'; put 'put ''fHhbc2UlMTAwLU9dfHx4W3NlPj0xMDA/MTAwOm51bGxdKX19LHdlZWs6e2RvdzoxLGRveTo3fX0pfShSKDk3NTg2KSl9LDg4NTIxOmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2UsTSxPLEkpe3ZhciBqPXtzOlsidmllbnNhcyBzZWN1''@;'; put 'put ''bmRzIiwiJ2llbnNhcyBzZWN1bmRzIl0sc3M6W3NlKyIgc2VjdW5kcyIsc2UrIiBzZWN1bmRzIl0sbTpbIiduIG1ceGVkdXQiLCInaWVucyBtXHhlZHV0Il0sbW06W3NlKyIgbVx4ZWR1dHMiLHNlKyIgbVx4ZWR1dHMiXSxoOlsiJ24gXHhmZW9yYSIsIidpZW5zYSBceGZlb3JhIl0saGg6W3Nl''@;'; put 'put ''KyIgXHhmZW9yYXMiLHNlKyIgXHhmZW9yYXMiXSxkOlsiJ24geml1YSIsIidpZW5zYSB6aXVhIl0sZGQ6W3NlKyIgeml1YXMiLHNlKyIgeml1YXMiXSxNOlsiJ24gbWVzIiwiJ2llbnMgbWVzIl0sTU06W3NlKyIgbWVzZW4iLHNlKyIgbWVzZW4iXSx5OlsiJ24gYXIiLCInaWVucyBhciJdLHl5''@;'; put 'put ''OltzZSsiIGFycyIsc2UrIiBhcnMiXX07cmV0dXJuIEl8fE0/altPXVswXTpqW09dWzFdfW9lLmRlZmluZUxvY2FsZSgidHpsIix7bW9udGhzOiJKYW51YXJfRmV2cmFnbGhfTWFyXHhlN19BdnJceGVmdV9NYWlfR1x4ZmNuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3BceGU0dHNfTm9l''@;'; put 'put ''bXZhcl9aZWNlbXZhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQXZyX01haV9HXHhmY25fSnVsX0d1c19TZXRfTGlzX05vZV9aZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlNceGZhbGFkaV9MXHhmYW5lXHhlN2lfTWFpdHppX01ceGUxcmN1cmlfWGhceGZhYWRpX1Zp''@;'; put 'put ''XHhlOW5lclx4ZTdpX1NceGUxdHVyaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTXHhmYWxfTFx4ZmFuX01haV9NXHhlMXJfWGhceGZhX1ZpXHhlOV9TXHhlMXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNceGZhX0xceGZhX01hX01ceGUxX1hoX1ZpX1NceGUxIi5zcGxpdCgiXyIp''@;'; put 'put ''LGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFtkYWxsYXNdIFlZWVkiLExMTDoiRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tIixMTExMOiJkZGRkLCBbbGldIEQuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbSJ9''@;'; put 'put ''LG1lcmlkaWVtUGFyc2U6L2RcJ298ZFwnYS9pLGlzUE06ZnVuY3Rpb24oc2Upe3JldHVybiJkJ28iPT09c2UudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oc2UsTSxPKXtyZXR1cm4gc2U+MTE/Tz8iZCdvIjoiRCdPIjpPPyJkJ2EiOiJEJ0EifSxjYWxlbmRhcjp7c2FtZURheToi''@;'; put 'put ''W294aGkgXHhlMF0gTFQiLG5leHREYXk6IltkZW1ceGUwIFx4ZTBdIExUIixuZXh0V2VlazoiZGRkZCBbXHhlMF0gTFQiLGxhc3REYXk6IltpZWlyaSBceGUwXSBMVCIsbGFzdFdlZWs6IltzXHhmY3IgZWxdIGRkZGQgW2xhc3RldSBceGUwXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRp''@;'; put 'put ''bWU6e2Z1dHVyZToib3NwcmVpICVzIixwYXN0OiJqYSVzIixzOm0sc3M6bSxtLG1tOm0saDptLGhoOm0sZDptLGRkOm0sTTptLE1NOm0seTptLHl5Om19LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4''@;'; put 'put ''NikpfSwyMjIzNDpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInR6bS1sYXRuIix7bW9udGhzOiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYz''@;'; put 'put ''d1x1MDE2MXRfXHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2puYmlyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpbm5heXJfYnJcdTAyZTRheXJcdTAyZTRfbWFyXHUwMmU0c1x1MDJlNF9pYnJpcl9tYXl5d195d255d195d2x5d3pfXHUwMjYzd1x1MDE2MXRf''@;'; put 'put ''XHUwMTYxd3RhbmJpcl9rdFx1MDJlNHdiclx1MDJlNF9ud3dhbmJpcl9kd2puYmlyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNpXHUxZTBkeWFzIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImFzYW1hc19heW5hc19h''@;'; put 'put ''c2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImFzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2lcdTFlMGR5YXMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDpt''@;'; put 'put ''bTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilthc2RraCBnXSBMVCIsbmV4dERheToiW2Fza2EgZ10gTFQiLG5leHRXZWVrOiJkZGRkIFtn''@;'; put 'put ''XSBMVCIsbGFzdERheToiW2Fzc2FudCBnXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2ddIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWRraCBzIHlhbiAlcyIscGFzdDoieWFuICVzIixzOiJpbWlrIixzczoiJWQgaW1payIsbToibWludVx1MWUwZCIsbW06IiVkIG1p''@;'; put 'put ''bnVcdTFlMGQiLGg6InNhXHUwMjViYSIsaGg6IiVkIHRhc3NhXHUwMjViaW4iLGQ6ImFzcyIsZGQ6IiVkIG9zc2FuIixNOiJheW93ciIsTU06IiVkIGl5eWlybiIseToiYXNnYXMiLHl5OiIlZCBpc2dhc24ifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSl9KFIoOTc1ODYpKX0sMTgwMTA6ZnVuY3Rp''@;'; put 'put ''b24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ0em0iLHttb250aHM6Ilx1MmQ0OVx1MmQ0Zlx1MmQ0Zlx1MmQzMFx1MmQ2Mlx1MmQ1NF9cdTJkMzFcdTJkNTVcdTJkMzBcdTJkNjJcdTJkNTVfXHUyZDRlXHUyZDMwXHUyZDU1XHUyZDVhX1x1''@;'; put 'put ''MmQ0OVx1MmQzMVx1MmQ1NFx1MmQ0OVx1MmQ1NF9cdTJkNGVcdTJkMzBcdTJkNjJcdTJkNjJcdTJkNTNfXHUyZDYyXHUyZDUzXHUyZDRmXHUyZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0ZFx1MmQ2Mlx1MmQ1M1x1MmQ2M19cdTJkNTZcdTJkNTNcdTJkNWJcdTJkNWNfXHUyZDViXHUyZDUz''@;'; put 'put ''XHUyZDVjXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzZFx1MmQ1Zlx1MmQ1M1x1MmQzMVx1MmQ1NV9cdTJkNGZcdTJkNTNcdTJkNjFcdTJkMzBcdTJkNGZcdTJkMzFcdTJkNDlcdTJkNTRfXHUyZDM3XHUyZDUzXHUyZDRhXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0Ii5zcGxp''@;'; put 'put ''dCgiXyIpLG1vbnRoc1Nob3J0OiJcdTJkNDlcdTJkNGZcdTJkNGZcdTJkMzBcdTJkNjJcdTJkNTRfXHUyZDMxXHUyZDU1XHUyZDMwXHUyZDYyXHUyZDU1X1x1MmQ0ZVx1MmQzMFx1MmQ1NVx1MmQ1YV9cdTJkNDlcdTJkMzFcdTJkNTRcdTJkNDlcdTJkNTRfXHUyZDRlXHUyZDMwXHUyZDYyXHUy''@;'; put 'put ''ZDYyXHUyZDUzX1x1MmQ2Mlx1MmQ1M1x1MmQ0Zlx1MmQ2Mlx1MmQ1M19cdTJkNjJcdTJkNTNcdTJkNGRcdTJkNjJcdTJkNTNcdTJkNjNfXHUyZDU2XHUyZDUzXHUyZDViXHUyZDVjX1x1MmQ1Ylx1MmQ1M1x1MmQ1Y1x1MmQzMFx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NF9cdTJkM2RcdTJkNWZc''@;'; put 'put ''dTJkNTNcdTJkMzFcdTJkNTVfXHUyZDRmXHUyZDUzXHUyZDYxXHUyZDMwXHUyZDRmXHUyZDMxXHUyZDQ5XHUyZDU0X1x1MmQzN1x1MmQ1M1x1MmQ0YVx1MmQ0Zlx1MmQzMVx1MmQ0OVx1MmQ1NCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUy''@;'; put 'put ''ZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFc''@;'; put 'put ''dTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Ilx1MmQzMFx1MmQ1OVx1MmQzMFx1MmQ0ZVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNjJcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUy''@;'; put 'put ''ZDQ5XHUyZDRmXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQzZFx1MmQ1NFx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkM2RcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDRlXHUyZDYxXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ1OVx1MmQ0OVx1MmQzOVx1MmQ2Mlx1MmQzMFx1''@;'; put 'put ''MmQ1OSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUyZDMwXHUyZDU5XHUyZDMwXHUyZDRlXHUyZDMwXHUyZDU5X1x1MmQzMFx1MmQ2Mlx1MmQ0Zlx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGZcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDNkXHUyZDU0XHUyZDMwXHUyZDU5''@;'; put 'put ''X1x1MmQzMFx1MmQzZFx1MmQ2MVx1MmQzMFx1MmQ1OV9cdTJkMzBcdTJkNTlcdTJkNDlcdTJkNGVcdTJkNjFcdTJkMzBcdTJkNTlfXHUyZDMwXHUyZDU5XHUyZDQ5XHUyZDM5XHUyZDYyXHUyZDMwXHUyZDU5Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6''@;'; put 'put ''bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUyZDMwXHUyZDU5XHUyZDM3XHUyZDQ1IFx1MmQzNF0gTFQiLG5leHREYXk6IltcdTJk''@;'; put 'put ''MzBcdTJkNTlcdTJkM2RcdTJkMzAgXHUyZDM0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLGxhc3REYXk6IltcdTJkMzBcdTJkNWFcdTJkMzBcdTJkNGZcdTJkNWMgXHUyZDM0XSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MmQzNF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVU''@;'; put 'put ''aW1lOntmdXR1cmU6Ilx1MmQzN1x1MmQzMFx1MmQzN1x1MmQ0NSBcdTJkNTkgXHUyZDYyXHUyZDMwXHUyZDRmICVzIixwYXN0OiJcdTJkNjJcdTJkMzBcdTJkNGYgJXMiLHM6Ilx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsc3M6IiVkIFx1MmQ0OVx1MmQ0ZVx1MmQ0OVx1MmQzZCIsbToiXHUy''@;'; put 'put ''ZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixtbToiJWQgXHUyZDRlXHUyZDQ5XHUyZDRmXHUyZDUzXHUyZDNhIixoOiJcdTJkNTlcdTJkMzBcdTJkNDRcdTJkMzAiLGhoOiIlZCBcdTJkNWNcdTJkMzBcdTJkNTlcdTJkNTlcdTJkMzBcdTJkNDRcdTJkNDlcdTJkNGYiLGQ6Ilx1MmQzMFx1''@;'; put 'put ''MmQ1OVx1MmQ1OSIsZGQ6IiVkIG9cdTJkNTlcdTJkNTlcdTJkMzBcdTJkNGYiLE06Ilx1MmQzMFx1MmQ2Mm9cdTJkNTNcdTJkNTQiLE1NOiIlZCBcdTJkNDlcdTJkNjJcdTJkNjJcdTJkNDlcdTJkNTRcdTJkNGYiLHk6Ilx1MmQzMFx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OSIseXk6IiVkIFx1''@;'; put 'put ''MmQ0OVx1MmQ1OVx1MmQzM1x1MmQzMFx1MmQ1OVx1MmQ0ZiJ9LHdlZWs6e2Rvdzo2LGRveToxMn19KX0oUig5NzU4NikpfSw2MzM0OTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInVnLWNuIix7bW9udGhzOiJcdTA2NGFcdTA2''@;'; put 'put ''MjdcdTA2NDZcdTA2Y2JcdTA2MjdcdTA2MzFfXHUwNjQxXHUwNmQwXHUwNmNiXHUwNjMxXHUwNjI3XHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDYzMVx1MDYyYV9cdTA2MjZcdTA2MjdcdTA2N2VcdTA2MzFcdTA2ZDBcdTA2NDRfXHUwNjQ1XHUwNjI3XHUwNjRhX1x1MDYyNlx1MDY0OVx1MDY0YVx1''@;'; put 'put ''MDZjN1x1MDY0Nl9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDRfXHUwNjI2XHUwNjI3XHUwNmNiXHUwNjNhXHUwNmM3XHUwNjMzXHUwNjJhX1x1MDYzM1x1MDZkMFx1MDY0Nlx1MDYyYVx1MDZkNVx1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MjZcdTA2YzZcdTA2NDNcdTA2MmFcdTA2ZDVc''@;'; put 'put ''dTA2MjhcdTA2NDlcdTA2MzFfXHUwNjQ2XHUwNjQ4XHUwNjRhXHUwNjI3XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDYyZlx1MDZkMFx1MDY0M1x1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiXHUwNjRhXHUwNjI3XHUwNjQ2XHUwNmNiXHUwNjI3XHUwNjMx''@;'; put 'put ''X1x1MDY0MVx1MDZkMFx1MDZjYlx1MDYzMVx1MDYyN1x1MDY0NF9cdTA2NDVcdTA2MjdcdTA2MzFcdTA2MmFfXHUwNjI2XHUwNjI3XHUwNjdlXHUwNjMxXHUwNmQwXHUwNjQ0X1x1MDY0NVx1MDYyN1x1MDY0YV9cdTA2MjZcdTA2NDlcdTA2NGFcdTA2YzdcdTA2NDZfXHUwNjI2XHUwNjQ5XHUw''@;'; put 'put ''NjRhXHUwNmM3XHUwNjQ0X1x1MDYyNlx1MDYyN1x1MDZjYlx1MDYzYVx1MDZjN1x1MDYzM1x1MDYyYV9cdTA2MzNcdTA2ZDBcdTA2NDZcdTA2MmFcdTA2ZDVcdTA2MjhcdTA2NDlcdTA2MzFfXHUwNjI2XHUwNmM2XHUwNjQzXHUwNjJhXHUwNmQ1XHUwNjI4XHUwNjQ5XHUwNjMxX1x1MDY0Nlx1''@;'; put 'put ''MDY0OFx1MDY0YVx1MDYyN1x1MDYyOFx1MDY0OVx1MDYzMV9cdTA2MmZcdTA2ZDBcdTA2NDNcdTA2MjdcdTA2MjhcdTA2NDlcdTA2MzEiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1MDY0YVx1MDZkNVx1MDY0M1x1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2MmZcdTA2YzhcdTA2''@;'; put 'put ''MzRcdTA2ZDVcdTA2NDZcdTA2MjhcdTA2ZDVfXHUwNjMzXHUwNmQ1XHUwNjRhXHUwNjM0XHUwNmQ1XHUwNjQ2XHUwNjI4XHUwNmQ1X1x1MDY4Nlx1MDYyN1x1MDYzMVx1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNV9cdTA2N2VcdTA2ZDVcdTA2NGFcdTA2MzRcdTA2ZDVcdTA2NDZcdTA2''@;'; put 'put ''MjhcdTA2ZDVfXHUwNjJjXHUwNmM4XHUwNjQ1XHUwNmQ1X1x1MDYzNFx1MDZkNVx1MDY0Nlx1MDYyOFx1MDZkNSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTA2NGFcdTA2ZDVfXHUwNjJmXHUwNmM4X1x1MDYzM1x1MDZkNV9cdTA2ODZcdTA2MjdfXHUwNjdlXHUwNmQ1X1x1MDYyY1x1''@;'; put 'put ''MDZjOF9cdTA2MzRcdTA2ZDUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ilx1MDY0YVx1MDZkNV9cdTA2MmZcdTA2YzhfXHUwNjMzXHUwNmQ1X1x1MDY4Nlx1MDYyN19cdTA2N2VcdTA2ZDVfXHUwNjJjXHUwNmM4X1x1MDYzNFx1MDZkNSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6''@;'; put 'put ''IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWS1cdTA2NGFcdTA2NDlcdTA2NDRcdTA2NDlNLVx1MDYyNlx1MDYyN1x1MDY0YVx1MDY0Nlx1MDY0OVx1MDZhZEQtXHUwNjQzXHUwNmM4XHUwNjQ2XHUwNjQ5IixMTEw6IllZWVktXHUwNjRhXHUwNjQ5XHUwNjQ0''@;'; put 'put ''XHUwNjQ5TS1cdTA2MjZcdTA2MjdcdTA2NGFcdTA2NDZcdTA2NDlcdTA2YWRELVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OVx1MDYwYyBISDptbSIsTExMTDoiZGRkZFx1MDYwYyBZWVlZLVx1MDY0YVx1MDY0OVx1MDY0NFx1MDY0OU0tXHUwNjI2XHUwNjI3XHUwNjRhXHUwNjQ2XHUwNjQ5XHUw''@;'; put 'put ''NmFkRC1cdTA2NDNcdTA2YzhcdTA2NDZcdTA2NDlcdTA2MGMgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2NGFcdTA2ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1fFx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMXxcdTA2ODZcdTA2YzhcdTA2MzRc''@;'; put 'put ''dTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUwNmM3XHUwNjMxXHUwNmM3XHUwNjQ2fFx1MDY4Nlx1MDZjOFx1MDYzNHxcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2fFx1MDY0M1x1MDZkNVx1MDY4Ni8sbWVyaWRpZW1I''@;'; put 'put ''b3VyOmZ1bmN0aW9uKG0sc2Upe3JldHVybiAxMj09PW0mJihtPTApLCJcdTA2NGFcdTA2ZDBcdTA2MzFcdTA2NDlcdTA2NDUgXHUwNjQzXHUwNmQwXHUwNjg2XHUwNmQ1Ij09PXNlfHwiXHUwNjMzXHUwNmQ1XHUwNmJlXHUwNmQ1XHUwNjMxIj09PXNlfHwiXHUwNjg2XHUwNmM4XHUwNjM0XHUw''@;'; put 'put ''NjJhXHUwNjQ5XHUwNjQ2IFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiI9PT1zZT9tOiJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRhXHUwNjQ5XHUwNjQ2Ij09PXNlfHwiXHUwNjQzXHUwNmQ1XHUwNjg2Ij09PXNlP20rMTI6bT49''@;'; put 'put ''MTE/bTptKzEyfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3ZhciBPPTEwMCptK3NlO3JldHVybiBPPDYwMD8iXHUwNjRhXHUwNmQwXHUwNjMxXHUwNjQ5XHUwNjQ1IFx1MDY0M1x1MDZkMFx1MDY4Nlx1MDZkNSI6Tzw5MDA/Ilx1MDYzM1x1MDZkNVx1MDZiZVx1MDZkNVx1MDYzMSI6Tzwx''@;'; put 'put ''MTMwPyJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjI4XHUwNmM3XHUwNjMxXHUwNmM3XHUwNjQ2IjpPPDEyMzA/Ilx1MDY4Nlx1MDZjOFx1MDYzNCI6TzwxODAwPyJcdTA2ODZcdTA2YzhcdTA2MzRcdTA2MmFcdTA2NDlcdTA2NDYgXHUwNjQzXHUwNmQwXHUwNjRh''@;'; put 'put ''XHUwNjQ5XHUwNjQ2IjoiXHUwNjQzXHUwNmQ1XHUwNjg2In0sY2FsZW5kYXI6e3NhbWVEYXk6IltcdTA2MjhcdTA2YzhcdTA2YWZcdTA2YzhcdTA2NDYgXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbmV4dERheToiW1x1MDYyNlx1MDZkNVx1MDYyYVx1MDZkNSBcdTA2MzNc''@;'; put 'put ''dTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixuZXh0V2VlazoiW1x1MDY0M1x1MDZkMFx1MDY0NFx1MDZkNVx1MDYzMVx1MDY0M1x1MDY0OV0gZGRkZCBbXHUwNjMzXHUwNjI3XHUwNjI2XHUwNmQ1XHUwNjJhXSBMVCIsbGFzdERheToiW1x1MDYyYVx1MDZjNlx1MDY0Nlx1MDZjOFx1MDZh''@;'; put 'put ''Zlx1MDZjOFx1MDY0Nl0gTFQiLGxhc3RXZWVrOiJbXHUwNjI2XHUwNjI3XHUwNjQ0XHUwNjJmXHUwNjQ5XHUwNjQ2XHUwNjQyXHUwNjQ5XSBkZGRkIFtcdTA2MzNcdTA2MjdcdTA2MjZcdTA2ZDVcdTA2MmFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBcdTA2''@;'; put 'put ''NDNcdTA2ZDBcdTA2NGFcdTA2NDlcdTA2NDYiLHBhc3Q6IiVzIFx1MDYyOFx1MDZjN1x1MDYzMVx1MDZjN1x1MDY0NiIsczoiXHUwNjQ2XHUwNmQ1XHUwNjg2XHUwNjg2XHUwNmQ1IFx1MDYzM1x1MDZkMFx1MDY0M1x1MDY0OFx1MDY0Nlx1MDYyYSIsc3M6IiVkIFx1MDYzM1x1MDZkMFx1MDY0''@;'; put 'put ''M1x1MDY0OFx1MDY0Nlx1MDYyYSIsbToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDY0NVx1MDY0OVx1MDY0Nlx1MDZjN1x1MDYyYSIsbW06IiVkIFx1MDY0NVx1MDY0OVx1MDY0Nlx1MDZjN1x1MDYyYSIsaDoiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYy''@;'; put 'put ''YSIsaGg6IiVkIFx1MDYzM1x1MDYyN1x1MDYyNlx1MDZkNVx1MDYyYSIsZDoiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDY0M1x1MDZjOFx1MDY0NiIsZGQ6IiVkIFx1MDY0M1x1MDZjOFx1MDY0NiIsTToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDYyNlx1MDYyN1x1MDY0YSIsTU06IiVkIFx1MDYy''@;'; put 'put ''Nlx1MDYyN1x1MDY0YSIseToiXHUwNjI4XHUwNjQ5XHUwNjMxIFx1MDY0YVx1MDY0OVx1MDY0NCIseXk6IiVkIFx1MDY0YVx1MDY0OVx1MDY0NCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oLVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OXwtXHUwNjI2XHUwNjI3XHUwNjRhfC1c''@;'; put 'put ''dTA2YmVcdTA2ZDVcdTA2N2VcdTA2MmFcdTA2ZDUpLyxvcmRpbmFsOmZ1bmN0aW9uKG0sc2Upe3N3aXRjaChzZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gbSsiLVx1MDY0M1x1MDZjOFx1MDY0Nlx1MDY0OSI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBtKyItXHUwNmJlXHUw''@;'; put 'put ''NmQ1XHUwNjdlXHUwNjJhXHUwNmQ1IjtkZWZhdWx0OnJldHVybiBtfX0scHJlcGFyc2U6ZnVuY3Rpb24obSl7cmV0dXJuIG0ucmVwbGFjZSgvXHUwNjBjL2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihtKXtyZXR1cm4gbS5yZXBsYWNlKC8sL2csIlx1MDYwYyIpfSx3ZWVrOntkb3c6MSxk''@;'; put 'put ''b3k6N319KX0oUig5NzU4NikpfSw2ODQ3OTpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKEksaixHKXtyZXR1cm4ibSI9PT1HP2o/Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQzMCI6Ilx1MDQ0NVx1MDQzMlx1''@;'; put 'put ''MDQzOFx1MDQzYlx1MDQzOFx1MDQzZFx1MDQ0MyI6ImgiPT09Rz9qPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzAiOiJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0NDMiOkkrIiAiK2Z1bmN0aW9uIHgoSSxqKXt2YXIgRz1JLnNwbGl0KCJfIik7cmV0dXJu''@;'; put 'put ''IGolMTA9PTEmJmolMTAwIT0xMT9HWzBdOmolMTA+PTImJmolMTA8PTQmJihqJTEwMDwxMHx8aiUxMDA+PTIwKT9HWzFdOkdbMl19KHtzczpqPyJcdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzBfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0XHUw''@;'; put 'put ''NDM4X1x1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCI6Ilx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNFx1MDQ0M19cdTA0NDFcdTA0MzVcdTA0M2FcdTA0NDNcdTA0M2RcdTA0MzRcdTA0MzhfXHUwNDQxXHUwNDM1XHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM0''@;'; put 'put ''IixtbTpqPyJcdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkXHUwNDM4X1x1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1MDQzZCI6Ilx1MDQ0NVx1MDQzMlx1MDQzOFx1MDQzYlx1MDQzOFx1''@;'; put 'put ''MDQzZFx1MDQ0M19cdTA0NDVcdTA0MzJcdTA0MzhcdTA0M2JcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDQ1XHUwNDMyXHUwNDM4XHUwNDNiXHUwNDM4XHUwNDNkIixoaDpqPyJcdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzBfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNk''@;'; put 'put ''XHUwNDM4X1x1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZCI6Ilx1MDQzM1x1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQ0M19cdTA0MzNcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0MzhfXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkIixkZDoiXHUwNDM0XHUwNDM1XHUw''@;'; put 'put ''NDNkXHUwNDRjX1x1MDQzNFx1MDQzZFx1MDQ1Nl9cdTA0MzRcdTA0M2RcdTA0NTZcdTA0MzIiLE1NOiJcdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGNfXHUwNDNjXHUwNDU2XHUwNDQxXHUwNDRmXHUwNDQ2XHUwNDU2X1x1MDQzY1x1MDQ1Nlx1MDQ0MVx1MDQ0Zlx1MDQ0Nlx1''@;'; put 'put ''MDQ1Nlx1MDQzMiIseXk6Ilx1MDQ0MFx1MDQ1Nlx1MDQzYV9cdTA0NDBcdTA0M2VcdTA0M2FcdTA0MzhfXHUwNDQwXHUwNDNlXHUwNDNhXHUwNDU2XHUwNDMyIn1bR10sK0kpfWZ1bmN0aW9uIE0oSSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEkrIlx1MDQzZSIrKDExPT09dGhpcy5ob3Vy''@;'; put 'put ''cygpPyJcdTA0MzEiOiIiKSsiXSBMVCJ9fW9lLmRlZmluZUxvY2FsZSgidWsiLHttb250aHM6e2Zvcm1hdDoiXHUwNDQxXHUwNDU2XHUwNDQ3XHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzZVx1MDQzM1x1MDQzZV9cdTA0MzFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzdcdTA0''@;'; put 'put ''M2RcdTA0NGZfXHUwNDNhXHUwNDMyXHUwNDU2XHUwNDQyXHUwNDNkXHUwNDRmX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzZFx1MDQ0Zl9cdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzJcdTA0M2RcdTA0NGZfXHUwNDNiXHUwNDM4XHUwNDNmXHUwNDNkXHUwNDRmX1x1MDQ0MVx1MDQzNVx1''@;'; put 'put ''MDQ0MFx1MDQzZlx1MDQzZFx1MDQ0Zl9cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzVcdTA0NDFcdTA0M2RcdTA0NGZfXHUwNDM2XHUwNDNlXHUwNDMyXHUwNDQyXHUwNDNkXHUwNDRmX1x1MDQzYlx1MDQzOFx1MDQ0MVx1MDQ0Mlx1MDQzZVx1MDQzZlx1MDQzMFx1MDQzNFx1MDQzMF9cdTA0MzNc''@;'; put 'put ''dTA0NDBcdTA0NDNcdTA0MzRcdTA0M2RcdTA0NGYiLnNwbGl0KCJfIiksc3RhbmRhbG9uZToiXHUwNDQxXHUwNDU2XHUwNDQ3XHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQ0ZVx1MDQ0Mlx1MDQzOFx1MDQzOV9cdTA0MzFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzdcdTA0MzVcdTA0M2Rc''@;'; put 'put ''dTA0NGNfXHUwNDNhXHUwNDMyXHUwNDU2XHUwNDQyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQ0Mlx1MDQ0MFx1MDQzMFx1MDQzMlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0NDdcdTA0MzVcdTA0NDBcdTA0MzJcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDNiXHUwNDM4XHUwNDNmXHUwNDM1XHUwNDNk''@;'; put 'put ''XHUwNDRjX1x1MDQ0MVx1MDQzNVx1MDQ0MFx1MDQzZlx1MDQzNVx1MDQzZFx1MDQ0Y19cdTA0MzJcdTA0MzVcdTA0NDBcdTA0MzVcdTA0NDFcdTA0MzVcdTA0M2RcdTA0NGNfXHUwNDM2XHUwNDNlXHUwNDMyXHUwNDQyXHUwNDM1XHUwNDNkXHUwNDRjX1x1MDQzYlx1MDQzOFx1MDQ0MVx1MDQ0''@;'; put 'put ''Mlx1MDQzZVx1MDQzZlx1MDQzMFx1MDQzNF9cdTA0MzNcdTA0NDBcdTA0NDNcdTA0MzRcdTA0MzVcdTA0M2RcdTA0NGMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJcdTA0NDFcdTA0NTZcdTA0NDdfXHUwNDNiXHUwNDRlXHUwNDQyX1x1MDQzMVx1MDQzNVx1MDQ0MF9cdTA0M2FcdTA0MzJc''@;'; put 'put ''dTA0NTZcdTA0NDJfXHUwNDQyXHUwNDQwXHUwNDMwXHUwNDMyX1x1MDQ0N1x1MDQzNVx1MDQ0MFx1MDQzMl9cdTA0M2JcdTA0MzhcdTA0M2ZfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDNmX1x1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0MzZcdTA0M2VcdTA0MzJcdTA0NDJfXHUwNDNiXHUwNDM4XHUw''@;'; put 'put ''NDQxXHUwNDQyX1x1MDQzM1x1MDQ0MFx1MDQ0M1x1MDQzNCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpmdW5jdGlvbiBzZShJLGope3ZhciBHPXtub21pbmF0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NGZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2''@;'; put 'put ''XHUwNDNiXHUwNDNlXHUwNDNhX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzZVx1MDQzYV9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzBfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwX1x1MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0''@;'; put 'put ''Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ0Zl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzAiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToiXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDRlX1x1MDQzZlx1MDQzZVx1MDQzZFx1MDQzNVx1MDQzNFx1MDQ1Nlx1MDQz''@;'; put 'put ''Ylx1MDQzZVx1MDQzYV9cdTA0MzJcdTA0NTZcdTA0MzJcdTA0NDJcdTA0M2VcdTA0NDBcdTA0M2VcdTA0M2FfXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDM1XHUwNDM0XHUwNDQzX1x1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQzMlx1MDQzNVx1MDQ0MF9cdTA0M2ZcdTIwMTlcdTA0NGZcdTA0NDJcdTA0''@;'; put 'put ''M2RcdTA0MzhcdTA0NDZcdTA0NGVfXHUwNDQxXHUwNDQzXHUwNDMxXHUwNDNlXHUwNDQyXHUwNDQzIi5zcGxpdCgiXyIpLGdlbml0aXZlOiJcdTA0M2RcdTA0MzVcdTA0MzRcdTA0NTZcdTA0M2JcdTA0NTZfXHUwNDNmXHUwNDNlXHUwNDNkXHUwNDM1XHUwNDM0XHUwNDU2XHUwNDNiXHUwNDNh''@;'; put 'put ''XHUwNDMwX1x1MDQzMlx1MDQ1Nlx1MDQzMlx1MDQ0Mlx1MDQzZVx1MDQ0MFx1MDQzYVx1MDQzMF9cdTA0NDFcdTA0MzVcdTA0NDBcdTA0MzVcdTA0MzRcdTA0MzhfXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDMyXHUwNDM1XHUwNDQwXHUwNDMzXHUwNDMwX1x1MDQzZlx1MjAxOVx1MDQ0Zlx1MDQ0''@;'; put 'put ''Mlx1MDQzZFx1MDQzOFx1MDQ0Nlx1MDQ1Nl9cdTA0NDFcdTA0NDNcdTA0MzFcdTA0M2VcdTA0NDJcdTA0MzgiLnNwbGl0KCJfIil9O3JldHVybiEwPT09ST9HLm5vbWluYXRpdmUuc2xpY2UoMSw3KS5jb25jYXQoRy5ub21pbmF0aXZlLnNsaWNlKDAsMSkpOkk/R1svKFxbW1x1MDQxMlx1MDQz''@;'; put 'put ''Mlx1MDQyM1x1MDQ0M11cXSkgP2RkZGQvLnRlc3Qoaik/ImFjY3VzYXRpdmUiOi9cWz8oPzpcdTA0M2NcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0NTd8XHUwNDNkXHUwNDMwXHUwNDQxXHUwNDQyXHUwNDQzXHUwNDNmXHUwNDNkXHUwNDNlXHUwNDU3KT8gP1xdID9kZGRkLy50''@;'; put 'put ''ZXN0KGopPyJnZW5pdGl2ZSI6Im5vbWluYXRpdmUiXVtJLmRheSgpXTpHLm5vbWluYXRpdmV9LHdlZWtkYXlzU2hvcnQ6Ilx1MDQzZFx1MDQzNF9cdTA0M2ZcdTA0M2RfXHUwNDMyXHUwNDQyX1x1MDQ0MVx1MDQ0MF9cdTA0NDdcdTA0NDJfXHUwNDNmXHUwNDQyX1x1MDQ0MVx1MDQzMSIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c01pbjoiXHUwNDNkXHUwNDM0X1x1MDQzZlx1MDQzZF9cdTA0MzJcdTA0NDJfXHUwNDQxXHUwNDQwX1x1MDQ0N1x1MDQ0Ml9cdTA0M2ZcdTA0NDJfXHUwNDQxXHUwNDMxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3Mi''@;'; put 'put ''LEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSBcdTA0NDAuIixMTEw6IkQgTU1NTSBZWVlZIFx1MDQ0MC4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBcdTA0NDAuLCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5Ok0oIltcdTA0MjFcdTA0NGNcdTA0M2VcdTA0MzNcdTA0''@;'; put 'put ''M2VcdTA0MzRcdTA0M2RcdTA0NTYgIiksbmV4dERheTpNKCJbXHUwNDE3XHUwNDMwXHUwNDMyXHUwNDQyXHUwNDQwXHUwNDMwICIpLGxhc3REYXk6TSgiW1x1MDQxMlx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCAiKSxuZXh0V2VlazpNKCJbXHUwNDIzXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5j''@;'; put 'put ''dGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIE0oIltcdTA0MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0NTddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIE0oIltcdTA0''@;'; put 'put ''MWNcdTA0MzhcdTA0M2RcdTA0NDNcdTA0M2JcdTA0M2VcdTA0MzNcdTA0M2VdIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MzdcdTA0MzAgJXMiLHBhc3Q6IiVzIFx1MDQ0Mlx1MDQzZVx1MDQzY1x1MDQ0MyIsczoiXHUwNDM0''@;'; put 'put ''XHUwNDM1XHUwNDNhXHUwNDU2XHUwNDNiXHUwNDRjXHUwNDNhXHUwNDMwIFx1MDQ0MVx1MDQzNVx1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzNCIsc3M6bSxtLG1tOm0saDoiXHUwNDMzXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDQzIixoaDptLGQ6Ilx1MDQzNFx1MDQzNVx1MDQzZFx1MDQ0''@;'; put 'put ''YyIsZGQ6bSxNOiJcdTA0M2NcdTA0NTZcdTA0NDFcdTA0NGZcdTA0NDZcdTA0NGMiLE1NOm0seToiXHUwNDQwXHUwNDU2XHUwNDNhIix5eTptfSxtZXJpZGllbVBhcnNlOi9cdTA0M2RcdTA0M2VcdTA0NDdcdTA0NTZ8XHUwNDQwXHUwNDMwXHUwNDNkXHUwNDNhXHUwNDQzfFx1MDQzNFx1MDQz''@;'; put 'put ''ZFx1MDQ0ZnxcdTA0MzJcdTA0MzVcdTA0NDdcdTA0M2VcdTA0NDBcdTA0MzAvLGlzUE06ZnVuY3Rpb24oSSl7cmV0dXJuL14oXHUwNDM0XHUwNDNkXHUwNDRmfFx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCkkLy50ZXN0KEkpfSxtZXJpZGllbTpmdW5jdGlvbihJLGosRyl7''@;'; put 'put ''cmV0dXJuIEk8ND8iXHUwNDNkXHUwNDNlXHUwNDQ3XHUwNDU2IjpJPDEyPyJcdTA0NDBcdTA0MzBcdTA0M2RcdTA0M2FcdTA0NDMiOkk8MTc/Ilx1MDQzNFx1MDQzZFx1MDQ0ZiI6Ilx1MDQzMlx1MDQzNVx1MDQ0N1x1MDQzZVx1MDQ0MFx1MDQzMCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6''@;'; put 'put ''L1xkezEsMn0tKFx1MDQzOXxcdTA0MzNcdTA0M2UpLyxvcmRpbmFsOmZ1bmN0aW9uKEksail7c3dpdGNoKGope2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBJKyItXHUwNDM5IjtjYXNlIkQiOnJldHVybiBJKyItXHUwNDMzXHUwNDNlIjtkZWZhdWx0''@;'; put 'put ''OnJldHVybiBJfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sNDMwMjQ6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7dmFyIHg9WyJcdTA2MmNcdTA2NDZcdTA2NDhcdTA2MzFcdTA2Y2MiLCJcdTA2NDFcdTA2MzFcdTA2NDhcdTA2MzFcdTA2''@;'; put 'put ''Y2MiLCJcdTA2NDVcdTA2MjdcdTA2MzFcdTA2ODYiLCJcdTA2MjdcdTA2N2VcdTA2MzFcdTA2Y2NcdTA2NDQiLCJcdTA2NDVcdTA2MjZcdTA2Y2MiLCJcdTA2MmNcdTA2NDhcdTA2NDYiLCJcdTA2MmNcdTA2NDhcdTA2NDRcdTA2MjdcdTA2MjZcdTA2Y2MiLCJcdTA2MjdcdTA2YWZcdTA2MzNc''@;'; put 'put ''dTA2MmEiLCJcdTA2MzNcdTA2MmFcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MjdcdTA2YTlcdTA2MmFcdTA2NDhcdTA2MjhcdTA2MzEiLCJcdTA2NDZcdTA2NDhcdTA2NDVcdTA2MjhcdTA2MzEiLCJcdTA2MmZcdTA2MzNcdTA2NDVcdTA2MjhcdTA2MzEiXSxtPVsiXHUwNjI3XHUwNjJhXHUw''@;'; put 'put ''NjQ4XHUwNjI3XHUwNjMxIiwiXHUwNjdlXHUwNmNjXHUwNjMxIiwiXHUwNjQ1XHUwNjQ2XHUwNmFmXHUwNjQ0IiwiXHUwNjI4XHUwNjJmXHUwNmJlIiwiXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNjMxXHUwNjI3XHUwNjJhIiwiXHUwNjJjXHUwNjQ1XHUwNjM5XHUwNmMxIiwiXHUwNmMxXHUwNjQx''@;'; put 'put ''XHUwNjJhXHUwNmMxIl07b2UuZGVmaW5lTG9jYWxlKCJ1ciIse21vbnRoczp4LG1vbnRoc1Nob3J0Ongsd2Vla2RheXM6bSx3ZWVrZGF5c1Nob3J0Om0sd2Vla2RheXNNaW46bSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBN''@;'; put 'put ''TU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGRcdTA2MGMgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi9cdTA2MzVcdTA2MjhcdTA2MmR8XHUwNjM0XHUwNjI3XHUwNjQ1Lyxpc1BNOmZ1bmN0aW9uKE0pe3JldHVybiJcdTA2MzRcdTA2MjdcdTA2''@;'; put 'put ''NDUiPT09TX0sbWVyaWRpZW06ZnVuY3Rpb24oTSxPLEkpe3JldHVybiBNPDEyPyJcdTA2MzVcdTA2MjhcdTA2MmQiOiJcdTA2MzRcdTA2MjdcdTA2NDUifSxjYWxlbmRhcjp7c2FtZURheToiW1x1MDYyMlx1MDYyYyBcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixuZXh0RGF5OiJbXHUw''@;'; put 'put ''NmE5XHUwNjQ0IFx1MDYyOFx1MDY0OFx1MDY0Mlx1MDYyYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTA2MjhcdTA2NDhcdTA2NDJcdTA2MmFdIExUIixsYXN0RGF5OiJbXHUwNmFmXHUwNjMwXHUwNjM0XHUwNjJhXHUwNmMxIFx1MDYzMVx1MDY0OFx1MDYzMiBcdTA2MjhcdTA2NDhcdTA2NDJc''@;'; put 'put ''dTA2MmFdIExUIixsYXN0V2VlazoiW1x1MDZhZlx1MDYzMFx1MDYzNFx1MDYyYVx1MDZjMV0gZGRkZCBbXHUwNjI4XHUwNjQ4XHUwNjQyXHUwNjJhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgXHUwNjI4XHUwNjM5XHUwNjJmIixwYXN0OiIlcyBcdTA2NDJc''@;'; put 'put ''dTA2MjhcdTA2NDQiLHM6Ilx1MDY4Nlx1MDY0Nlx1MDYyZiBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLHNzOiIlZCBcdTA2MzNcdTA2Y2NcdTA2YTlcdTA2NDZcdTA2ODgiLG06Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2NDVcdTA2NDZcdTA2NzkiLG1tOiIlZCBcdTA2NDVcdTA2''@;'; put 'put ''NDZcdTA2NzkiLGg6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2YzEiLGhoOiIlZCBcdTA2YWZcdTA2YmVcdTA2NDZcdTA2NzlcdTA2ZDIiLGQ6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MmZcdTA2NDYiLGRkOiIlZCBcdTA2MmZcdTA2NDYiLE06Ilx1''@;'; put 'put ''MDYyN1x1MDZjY1x1MDZhOSBcdTA2NDVcdTA2MjdcdTA2YzEiLE1NOiIlZCBcdTA2NDVcdTA2MjdcdTA2YzEiLHk6Ilx1MDYyN1x1MDZjY1x1MDZhOSBcdTA2MzNcdTA2MjdcdTA2NDQiLHl5OiIlZCBcdTA2MzNcdTA2MjdcdTA2NDQifSxwcmVwYXJzZTpmdW5jdGlvbihNKXtyZXR1cm4gTS5y''@;'; put 'put ''ZXBsYWNlKC9cdTA2MGMvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKE0pe3JldHVybiBNLnJlcGxhY2UoLywvZywiXHUwNjBjIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pfShSKDk3NTg2KSl9LDcyMzc2OmZ1bmN0aW9uKFFlLE1lLFIpeyFmdW5jdGlvbihvZSl7InVzZSBzdHJpY3QiO29l''@;'; put 'put ''LmRlZmluZUxvY2FsZSgidXotbGF0biIse21vbnRoczoiWWFudmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Illhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2''@;'; put 'put ''Z19TZW5fT2t0X05veV9EZWsiLnNwbGl0KCJfIiksd2Vla2RheXM6Illha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJZYWtfRHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuIi5zcGxp''@;'; put 'put ''dCgiXyIpLHdlZWtkYXlzTWluOiJZYV9EdV9TZV9DaG9fUGFfSnVfU2hhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiRCBNTU1N''@;'; put 'put ''IFlZWVksIGRkZGQgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0J1Z3VuIHNvYXRdIExUIFtkYV0iLG5leHREYXk6IltFcnRhZ2FdIExUIFtkYV0iLG5leHRXZWVrOiJkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0iLGxhc3REYXk6IltLZWNoYSBzb2F0XSBMVCBbZGFdIixsYXN0V2Vlazoi''@;'; put 'put ''W08ndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJZYXFpbiAlcyBpY2hpZGEiLHBhc3Q6IkJpciBuZWNoYSAlcyBvbGRpbiIsczoic29uaXlhIixzczoiJWQgc29uaXlhIixtOiJiaXIgZGFxaXFhIixtbToiJWQgZGFx''@;'; put 'put ''aXFhIixoOiJiaXIgc29hdCIsaGg6IiVkIHNvYXQiLGQ6ImJpciBrdW4iLGRkOiIlZCBrdW4iLE06ImJpciBveSIsTU06IiVkIG95Iix5OiJiaXIgeWlsIix5eToiJWQgeWlsIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sMTk4MDA6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0''@;'; put 'put ''aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ1eiIse21vbnRoczoiXHUwNDRmXHUwNDNkXHUwNDMyXHUwNDMwXHUwNDQwX1x1MDQ0NFx1MDQzNVx1MDQzMlx1MDQ0MFx1MDQzMFx1MDQzYl9cdTA0M2NcdTA0MzBcdTA0NDBcdTA0NDJfXHUwNDMwXHUwNDNmXHUwNDQwXHUw''@;'; put 'put ''NDM1XHUwNDNiX1x1MDQzY1x1MDQzMFx1MDQzOV9cdTA0MzhcdTA0NGVcdTA0M2RfXHUwNDM4XHUwNDRlXHUwNDNiX1x1MDQzMFx1MDQzMlx1MDQzM1x1MDQ0M1x1MDQ0MVx1MDQ0Ml9cdTA0NDFcdTA0MzVcdTA0M2RcdTA0NDJcdTA0NGZcdTA0MzFcdTA0NDBfXHUwNDNlXHUwNDNhXHUwNDQy''@;'; put 'put ''XHUwNDRmXHUwNDMxXHUwNDQwX1x1MDQzZFx1MDQzZVx1MDQ0Zlx1MDQzMVx1MDQ0MF9cdTA0MzRcdTA0MzVcdTA0M2FcdTA0MzBcdTA0MzFcdTA0NDAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ilx1MDQ0Zlx1MDQzZFx1MDQzMl9cdTA0NDRcdTA0MzVcdTA0MzJfXHUwNDNjXHUwNDMwXHUw''@;'; put 'put ''NDQwX1x1MDQzMFx1MDQzZlx1MDQ0MF9cdTA0M2NcdTA0MzBcdTA0MzlfXHUwNDM4XHUwNDRlXHUwNDNkX1x1MDQzOFx1MDQ0ZVx1MDQzYl9cdTA0MzBcdTA0MzJcdTA0MzNfXHUwNDQxXHUwNDM1XHUwNDNkX1x1MDQzZVx1MDQzYVx1MDQ0Ml9cdTA0M2RcdTA0M2VcdTA0NGZfXHUwNDM0XHUw''@;'; put 'put ''NDM1XHUwNDNhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTA0MmZcdTA0M2FcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDE0XHUwNDQzXHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQyMVx1MDQzNVx1MDQ0OFx1MDQzMFx1MDQzZFx1MDQzMVx1MDQzMF9cdTA0''@;'; put 'put ''MjdcdTA0M2VcdTA0NDBcdTA0NDhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzBfXHUwNDFmXHUwNDMwXHUwNDM5XHUwNDQ4XHUwNDMwXHUwNDNkXHUwNDMxXHUwNDMwX1x1MDQxNlx1MDQ0M1x1MDQzY1x1MDQzMF9cdTA0MjhcdTA0MzBcdTA0M2RcdTA0MzFcdTA0MzAiLnNwbGl0KCJfIiksd2Vl''@;'; put 'put ''a2RheXNTaG9ydDoiXHUwNDJmXHUwNDNhXHUwNDQ4X1x1MDQxNFx1MDQ0M1x1MDQ0OF9cdTA0MjFcdTA0MzVcdTA0NDhfXHUwNDI3XHUwNDNlXHUwNDQwX1x1MDQxZlx1MDQzMFx1MDQzOV9cdTA0MTZcdTA0NDNcdTA0M2NfXHUwNDI4XHUwNDMwXHUwNDNkIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJcdTA0MmZcdTA0M2FfXHUwNDE0XHUwNDQzX1x1MDQyMVx1MDQzNV9cdTA0MjdcdTA0M2VfXHUwNDFmXHUwNDMwX1x1MDQxNlx1MDQ0M19cdTA0MjhcdTA0MzAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIs''@;'; put 'put ''TEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJEIE1NTU0gWVlZWSwgZGRkZCBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHUwNDExXHUwNDQzXHUwNDMzXHUwNDQzXHUwNDNkIFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQz''@;'; put 'put ''MF0iLG5leHREYXk6IltcdTA0MmRcdTA0NDBcdTA0NDJcdTA0MzBcdTA0MzNcdTA0MzBdIExUIFtcdTA0MzRcdTA0MzBdIixuZXh0V2VlazoiZGRkZCBbXHUwNDNhXHUwNDQzXHUwNDNkXHUwNDM4IFx1MDQ0MVx1MDQzZVx1MDQzMFx1MDQ0Ml0gTFQgW1x1MDQzNFx1MDQzMF0iLGxhc3REYXk6''@;'; put 'put ''IltcdTA0MWFcdTA0MzVcdTA0NDdcdTA0MzAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyXSBMVCBbXHUwNDM0XHUwNDMwXSIsbGFzdFdlZWs6IltcdTA0MjNcdTA0NDJcdTA0MzNcdTA0MzBcdTA0M2RdIGRkZGQgW1x1MDQzYVx1MDQ0M1x1MDQzZFx1MDQzOCBcdTA0NDFcdTA0M2VcdTA0MzBc''@;'; put 'put ''dTA0NDJdIExUIFtcdTA0MzRcdTA0MzBdIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJcdTA0MmZcdTA0M2FcdTA0MzhcdTA0M2QgJXMgXHUwNDM4XHUwNDQ3XHUwNDM4XHUwNDM0XHUwNDMwIixwYXN0OiJcdTA0MTFcdTA0MzhcdTA0NDAgXHUwNDNkXHUwNDM1XHUwNDQ3''@;'; put 'put ''XHUwNDMwICVzIFx1MDQzZVx1MDQzYlx1MDQzNFx1MDQzOFx1MDQzZCIsczoiXHUwNDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixzczoiJWQgXHUwNDQ0XHUwNDQzXHUwNDQwXHUwNDQxXHUwNDMwXHUwNDQyIixtOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM0XHUwNDMwXHUw''@;'; put 'put ''NDNhXHUwNDM4XHUwNDNhXHUwNDMwIixtbToiJWQgXHUwNDM0XHUwNDMwXHUwNDNhXHUwNDM4XHUwNDNhXHUwNDMwIixoOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixoaDoiJWQgXHUwNDQxXHUwNDNlXHUwNDMwXHUwNDQyIixkOiJcdTA0MzFcdTA0Mzhc''@;'; put 'put ''dTA0NDAgXHUwNDNhXHUwNDQzXHUwNDNkIixkZDoiJWQgXHUwNDNhXHUwNDQzXHUwNDNkIixNOiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDNlXHUwNDM5IixNTToiJWQgXHUwNDNlXHUwNDM5Iix5OiJcdTA0MzFcdTA0MzhcdTA0NDAgXHUwNDM5XHUwNDM4XHUwNDNiIix5eToiJWQgXHUwNDM5''@;'; put 'put ''XHUwNDM4XHUwNDNiIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSl9KFIoOTc1ODYpKX0sODkzNjY6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ2aSIse21vbnRoczoidGhceGUxbmcgMV90aFx4ZTFuZyAyX3RoXHhlMW5nIDNfdGhc''@;'; put 'put ''eGUxbmcgNF90aFx4ZTFuZyA1X3RoXHhlMW5nIDZfdGhceGUxbmcgN190aFx4ZTFuZyA4X3RoXHhlMW5nIDlfdGhceGUxbmcgMTBfdGhceGUxbmcgMTFfdGhceGUxbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoZyAwMV9UaGcgMDJfVGhnIDAzX1RoZyAwNF9UaGcgMDVfVGhnIDA2''@;'; put 'put ''X1RoZyAwN19UaGcgMDhfVGhnIDA5X1RoZyAxMF9UaGcgMTFfVGhnIDEyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImNoXHUxZWU3IG5oXHUxZWFkdF90aFx1MWVlOSBoYWlfdGhcdTFlZTkgYmFfdGhcdTFlZTkgdFx1MDFiMF90aFx1MWVlOSBuXHUwMTAzbV90''@;'; put 'put ''aFx1MWVlOSBzXHhlMXVfdGhcdTFlZTkgYlx1MWVhM3kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxtZXJp''@;'; put 'put ''ZGllbVBhcnNlOi9zYXxjaC9pLGlzUE06ZnVuY3Rpb24obSl7cmV0dXJuL15jaCQvaS50ZXN0KG0pfSxtZXJpZGllbTpmdW5jdGlvbihtLHNlLE0pe3JldHVybiBtPDEyP00/InNhIjoiU0EiOk0/ImNoIjoiQ0gifSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixM''@;'; put 'put ''OiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtuXHUwMTAzbV0gWVlZWSIsTExMOiJEIE1NTU0gW25cdTAxMDNtXSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gW25cdTAxMDNtXSBZWVlZIEhIOm1tIixsOiJERC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkg''@;'; put 'put ''SEg6bW0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSFx4ZjRtIG5heSBsXHhmYWNdIExUIixuZXh0RGF5OiJbTmdceGUweSBtYWkgbFx4ZmFjXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3R1XHUxZWE3biB0XHUxZWRiaSBsXHhmYWNdIExUIixsYXN0''@;'; put 'put ''RGF5OiJbSFx4ZjRtIHF1YSBsXHhmYWNdIExUIixsYXN0V2VlazoiZGRkZCBbdHVcdTFlYTduIHRyXHUwMWIwXHUxZWRiYyBsXHhmYWNdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyB0XHUxZWRiaSIscGFzdDoiJXMgdHJcdTAxYjBcdTFlZGJjIixzOiJ2XHhl''@;'; put 'put ''MGkgZ2lceGUyeSIsc3M6IiVkIGdpXHhlMnkiLG06Im1cdTFlZDl0IHBoXHhmYXQiLG1tOiIlZCBwaFx4ZmF0IixoOiJtXHUxZWQ5dCBnaVx1MWVkZCIsaGg6IiVkIGdpXHUxZWRkIixkOiJtXHUxZWQ5dCBuZ1x4ZTB5IixkZDoiJWQgbmdceGUweSIsdzoibVx1MWVkOXQgdHVcdTFlYTduIix3''@;'; put 'put ''dzoiJWQgdHVcdTFlYTduIixNOiJtXHUxZWQ5dCB0aFx4ZTFuZyIsTU06IiVkIHRoXHhlMW5nIix5OiJtXHUxZWQ5dCBuXHUwMTAzbSIseXk6IiVkIG5cdTAxMDNtIn0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihtKXtyZXR1cm4gbX0sd2Vlazp7''@;'; put 'put ''ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNjk3MDI6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ4LXBzZXVkbyIse21vbnRoczoiSn5ceGUxXHhmMVx4ZmFceGUxfnJceGZkX0Z+XHhlOWJyXHhmYX5ceGUxclx4ZmRffk1c''@;'; put 'put ''eGUxcmN+aF9ceGMxcH5yXHhlZGxffk1ceGUxXHhmZF9+Slx4ZmFceGYxXHhlOX5fSlx4ZmFsflx4ZmRfXHhjMVx4ZmF+Z1x4ZmFzdH5fU1x4ZTlwfnRceGU5bWJ+XHhlOXJfXHhkM35jdFx4ZjNiflx4ZTlyX1x4ZDF+XHhmM3ZceGU5bX5iXHhlOXJffkRceGU5Y1x4ZTl+bWJceGU5ciIuc3Bs''@;'; put 'put ''aXQoIl8iKSxtb250aHNTaG9ydDoiSn5ceGUxXHhmMV9+Rlx4ZTliX35NXHhlMXJfflx4YzFwcl9+TVx4ZTFceGZkX35KXHhmYVx4ZjFffkpceGZhbF9+XHhjMVx4ZmFnX35TXHhlOXBfflx4ZDNjdF9+XHhkMVx4ZjN2X35EXHhlOWMiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3''@;'; put 'put ''ZWVrZGF5czoiU35ceGZhXHhmMWRceGUxflx4ZmRfTVx4ZjN+XHhmMWRceGUxXHhmZH5fVFx4ZmFceGU5fnNkXHhlMVx4ZmR+X1dceGU5ZH5ceGYxXHhlOXNkflx4ZTFceGZkX1R+aFx4ZmFyc35kXHhlMVx4ZmRffkZyXHhlZGR+XHhlMVx4ZmRfU35ceGUxdFx4ZmFyfmRceGUxXHhmZCIuc3Bs''@;'; put 'put ''aXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTflx4ZmFceGYxX35NXHhmM1x4ZjFfflRceGZhXHhlOV9+V1x4ZTlkX35UaFx4ZmFffkZyXHhlZF9+U1x4ZTF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTflx4ZmFfTVx4ZjN+X1RceGZhX35XXHhlOV9UfmhfRnJ+X1NceGUxIi5zcGxpdCgiXyIp''@;'; put 'put ''LHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUflx4ZjNk''@;'; put 'put ''XHhlMX5ceGZkIFx4ZTF0XSBMVCIsbmV4dERheToiW1R+XHhmM21ceGYzfnJyXHhmM353IFx4ZTF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW1x4ZTF0XSBMVCIsbGFzdERheToiW1x4ZGR+XHhlOXN0flx4ZTlyZFx4ZTF+XHhmZCBceGUxdF0gTFQiLGxhc3RXZWVrOiJbTH5ceGUxc3RdIGRkZGQg''@;'; put 'put ''W1x4ZTF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiXHhlZH5ceGYxICVzIixwYXN0OiIlcyBceGUxfmdceGYzIixzOiJceGUxIH5mXHhlOXcgfnNceGU5Y1x4ZjN+XHhmMWRzIixzczoiJWQgc35ceGU5Y1x4ZjNceGYxfmRzIixtOiJceGUxIH5tXHhlZFx4ZjF+''@;'; put 'put ''XHhmYXRceGU5IixtbToiJWQgbX5ceGVkXHhmMVx4ZmF+dFx4ZTlzIixoOiJceGUxflx4ZjEgaFx4ZjN+XHhmYXIiLGhoOiIlZCBoflx4ZjNceGZhcnMiLGQ6Ilx4ZTEgfmRceGUxXHhmZCIsZGQ6IiVkIGR+XHhlMVx4ZmRzIixNOiJceGUxIH5tXHhmM1x4ZjF+dGgiLE1NOiIlZCBtflx4ZjNc''@;'; put 'put ''eGYxdH5ocyIseToiXHhlMSB+XHhmZFx4ZTlceGUxciIseXk6IiVkIFx4ZmR+XHhlOVx4ZTFycyJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKG0pe3ZhciBzZT1tJTEwO3JldHVybiBtKygxPT1+fihtJTEwMC8xMCk/InRo''@;'; put 'put ''IjoxPT09c2U/InN0IjoyPT09c2U/Im5kIjozPT09c2U/InJkIjoidGgiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSl9KFIoOTc1ODYpKX0sNzI2NTU6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ5byIse21vbnRoczoiU1x1MWVi''@;'; put 'put ''OVx1MDMwMXJcdTFlYjlcdTAzMDFfRVx1MDMwMHJlXHUwMzAwbGVcdTAzMDBfXHUxZWI4clx1MWViOVx1MDMwMG5hXHUwMzAwX0lcdTAzMDBnYmVcdTAzMDFfRVx1MDMwMGJpYmlfT1x1MDMwMGt1XHUwMzAwZHVfQWdcdTFlYjltb19PXHUwMzAwZ3VcdTAzMDFuX093ZXdlX1x1MWVjY1x1MDMw''@;'; put 'put ''MHdhXHUwMzAwcmFcdTAzMDBfQmVcdTAzMDFsdVx1MDMwMV9cdTFlY2NcdTAzMDBwXHUxZWI5XHUwMzAwXHUwMzAwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJTXHUxZWI5XHUwMzAxcl9FXHUwMzAwcmxfXHUxZWI4cm5fSVx1MDMwMGdiX0VcdTAzMDBiaV9PXHUwMzAwa3VcdTAzMDBfQWdc''@;'; put 'put ''dTFlYjlfT1x1MDMwMGd1XHUwMzAxX093ZV9cdTFlY2NcdTAzMDB3YVx1MDMwMF9CZVx1MDMwMWxfXHUxZWNjXHUwMzAwcFx1MWViOVx1MDMwMFx1MDMwMCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQVx1MDMwMGlcdTAzMDBrdVx1MDMwMV9BamVcdTAzMDFfSVx1MDMwMHNcdTFlYjlcdTAzMDFn''@;'; put 'put ''dW5fXHUxZWNjalx1MWVjZFx1MDMwMXJ1XHUwMzAxX1x1MWVjY2pcdTFlY2RcdTAzMDFiXHUxZWNkX1x1MWViOHRpXHUwMzAwX0FcdTAzMDBiYVx1MDMwMW1cdTFlYjlcdTAzMDF0YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJBXHUwMzAwaVx1MDMwMGtfQWplXHUwMzAxX0lcdTAzMDBz''@;'; put 'put ''XHUxZWI5XHUwMzAxX1x1MWVjY2pyX1x1MWVjY2piX1x1MWViOHRpXHUwMzAwX0FcdTAzMDBiYVx1MDMwMSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQVx1MDMwMGlcdTAzMDBfQWpfSVx1MDMwMHNfXHUxZWNjcl9cdTFlY2NiX1x1MWViOHRfQVx1MDMwMGIiLnNwbGl0KCJfIiksbG9uZ0Rh''@;'; put 'put ''dGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW09cdTAzMDBuaVx1MDMwMCBu''@;'; put 'put ''aV0gTFQiLG5leHREYXk6IltcdTFlY2NcdTAzMDBsYSBuaV0gTFQiLG5leHRXZWVrOiJkZGRkIFtcdTFlY2NzXHUxZWI5XHUwMzAwIHRvXHUwMzAxbidiXHUxZWNkXSBbbmldIExUIixsYXN0RGF5OiJbQVx1MDMwMG5hIG5pXSBMVCIsbGFzdFdlZWs6ImRkZGQgW1x1MWVjY3NcdTFlYjlcdTAz''@;'; put 'put ''MDAgdG9cdTAzMDFsXHUxZWNkXHUwMzAxXSBbbmldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJuaVx1MDMwMSAlcyIscGFzdDoiJXMga1x1MWVjZGphXHUwMzAxIixzOiJpXHUwMzAwc1x1MWViOWp1XHUwMzAxIGFheWFcdTAzMDEgZGllIixzczoiYWF5YVx1MDMw''@;'; put 'put ''MSAlZCIsbToiaVx1MDMwMHNcdTFlYjlqdVx1MDMwMSBrYW4iLG1tOiJpXHUwMzAwc1x1MWViOWp1XHUwMzAxICVkIixoOiJ3YVx1MDMwMWthdGkga2FuIixoaDoid2FcdTAzMDFrYXRpICVkIixkOiJcdTFlY2RqXHUxZWNkXHUwMzAxIGthbiIsZGQ6Ilx1MWVjZGpcdTFlY2RcdTAzMDEgJWQi''@;'; put 'put ''LE06Im9zdVx1MDMwMCBrYW4iLE1NOiJvc3VcdTAzMDAgJWQiLHk6Ilx1MWVjZGR1XHUwMzAxbiBrYW4iLHl5OiJcdTFlY2RkdVx1MDMwMW4gJWQifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cdTFlY2RqXHUxZWNkXHUwMzAxXHNcZHsxLDJ9LyxvcmRpbmFsOiJcdTFlY2RqXHUxZWNkXHUw''@;'; put 'put ''MzAxICVkIix3ZWVrOntkb3c6MSxkb3k6NH19KX0oUig5NzU4NikpfSw1NzU6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ6aC1jbiIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1''@;'; put 'put ''NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1Njcw''@;'; put 'put ''OF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19c''@;'; put 'put ''dTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU1NDY4XHU2NWU1X1x1NTQ2OFx1NGUwMF9cdTU0NjhcdTRlOGNfXHU1NDY4XHU0ZTA5X1x1NTQ2OFx1NTZk''@;'; put 'put ''Yl9cdTU0NjhcdTRlOTRfXHU1NDY4XHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9N''@;'; put 'put ''TS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVBaFx1NzBiOW1tXHU1MjA2IixMTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkQWhcdTcwYjltbVx1NTIwNiIsbDoiWVlZWS9NL0QiLGxsOiJZWVlZXHU1ZTc0TVx1''@;'; put 'put ''NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUw''@;'; put 'put ''Ylx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihtLHNlKXtyZXR1cm4gMTI9PT1tJiYobT0wKSwiXHU1MWNjXHU2NjY4Ij09PXNlfHwiXHU2NWU5XHU0ZTBhIj09PXNlfHwiXHU0ZTBhXHU1MzQ4Ij09PXNlP206Ilx1NGUwYlx1NTM0OCI9PT1zZXx8Ilx1NjY1YVx1''@;'; put 'put ''NGUwYSI9PT1zZT9tKzEyOm0+PTExP206bSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24obSxzZSxNKXt2YXIgTz0xMDAqbStzZTtyZXR1cm4gTzw2MDA/Ilx1NTFjY1x1NjY2OCI6Tzw5MDA/Ilx1NjVlOVx1NGUwYSI6TzwxMTMwPyJcdTRlMGFcdTUzNDgiOk88MTIzMD8iXHU0ZTJkXHU1MzQ4IjpP''@;'; put 'put ''PDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazpmdW5jdGlvbihtKXtyZXR1cm4gbS53ZWVrKCkhPT10aGlzLndlZWsoKT8iW1x1NGUwYl1kZGRM''@;'; put 'put ''VCI6IltcdTY3MmNdZGRkTFQifSxsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XUxUIixsYXN0V2VlazpmdW5jdGlvbihtKXtyZXR1cm4gdGhpcy53ZWVrKCkhPT1tLndlZWsoKT8iW1x1NGUwYV1kZGRMVCI6IltcdTY3MmNdZGRkTFQifSxzYW1lRWxzZToiTCJ9LGRheU9mTW9udGhPcmRpbmFsUGFy''@;'; put 'put ''c2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTU0NjgpLyxvcmRpbmFsOmZ1bmN0aW9uKG0sc2Upe3N3aXRjaChzZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gbSsiXHU2NWU1IjtjYXNlIk0iOnJldHVybiBtKyJcdTY3MDgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gbSsi''@;'; put 'put ''XHU1NDY4IjtkZWZhdWx0OnJldHVybiBtfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1NDBlIixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1MWUwXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQ5ZiIsbW06IiVkIFx1NTIwNlx1OTQ5ZiIsaDoiMSBcdTVjMGZcdTY1ZjYi''@;'; put 'put ''LGhoOiIlZCBcdTVjMGZcdTY1ZjYiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5Iix3OiIxIFx1NTQ2OCIsd3c6IiVkIFx1NTQ2OCIsTToiMSBcdTRlMmFcdTY3MDgiLE1NOiIlZCBcdTRlMmFcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In0sd2Vlazp7ZG93OjEsZG95OjR9''@;'; put 'put ''fSl9KFIoOTc1ODYpKX0sMTgzNTE6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ6aC1oayIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9c''@;'; put 'put ''dTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1Njcw''@;'; put 'put ''OF82XHU2NzA4XzdcdTY3MDhfOFx1NjcwOF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFm''@;'; put 'put ''XHU2NzFmXHU1NmRiX1x1NjYxZlx1NjcxZlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1''@;'; put 'put ''MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2''@;'; put 'put ''NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBI''@;'; put 'put ''SDptbSIsbGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24o''@;'; put 'put ''bSxzZSl7cmV0dXJuIDEyPT09bSYmKG09MCksIlx1NTFjY1x1NjY2OCI9PT1zZXx8Ilx1NjVlOVx1NGUwYSI9PT1zZXx8Ilx1NGUwYVx1NTM0OCI9PT1zZT9tOiJcdTRlMmRcdTUzNDgiPT09c2U/bT49MTE/bTptKzEyOiJcdTRlMGJcdTUzNDgiPT09c2V8fCJcdTY2NWFcdTRlMGEiPT09c2U/''@;'; put 'put ''bSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKG0sc2UsTSl7dmFyIE89MTAwKm0rc2U7cmV0dXJuIE88NjAwPyJcdTUxY2NcdTY2NjgiOk88OTAwPyJcdTY1ZTlcdTRlMGEiOk88MTIwMD8iXHU0ZTBhXHU1MzQ4IjoxMjAwPT09Tz8iXHU0ZTJkXHU1MzQ4IjpPPDE4MDA/Ilx1NGUwYlx1''@;'; put 'put ''NTM0OCI6Ilx1NjY1YVx1NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XUxUIixuZXh0RGF5OiJbXHU2NjBlXHU1OTI5XUxUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldTFQiLGxhc3RXZWVrOiJbXHU0ZTBhXWRkZGRMVCIs''@;'; put 'put ''c2FtZUVsc2U6IkwifSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihtLHNlKXtzd2l0Y2goc2Upe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIG0rIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gbSsi''@;'; put 'put ''XHU2NzA4IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIG0rIlx1OTAzMSI7ZGVmYXVsdDpyZXR1cm4gbX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIl''@;'; put 'put ''ZCBcdTUyMDZcdTk0MTgiLGg6IjEgXHU1YzBmXHU2NjQyIixoaDoiJWQgXHU1YzBmXHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oUig5NzU4Nikp''@;'; put 'put ''fSw1MTYyNjpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5kZWZpbmVMb2NhbGUoInpoLW1vIix7bW9udGhzOiJcdTRlMDBcdTY3MDhfXHU0ZThjXHU2NzA4X1x1NGUwOVx1NjcwOF9cdTU2ZGJcdTY3MDhfXHU0ZTk0XHU2NzA4X1x1NTE2ZFx1NjcwOF9c''@;'; put 'put ''dTRlMDNcdTY3MDhfXHU1MTZiXHU2NzA4X1x1NGU1ZFx1NjcwOF9cdTUzNDFcdTY3MDhfXHU1MzQxXHU0ZTAwXHU2NzA4X1x1NTM0MVx1NGU4Y1x1NjcwOCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMVx1NjcwOF8yXHU2NzA4XzNcdTY3MDhfNFx1NjcwOF81XHU2NzA4XzZcdTY3MDhfN1x1''@;'; put 'put ''NjcwOF84XHU2NzA4XzlcdTY3MDhfMTBcdTY3MDhfMTFcdTY3MDhfMTJcdTY3MDgiLnNwbGl0KCJfIiksd2Vla2RheXM6Ilx1NjYxZlx1NjcxZlx1NjVlNV9cdTY2MWZcdTY3MWZcdTRlMDBfXHU2NjFmXHU2NzFmXHU0ZThjX1x1NjYxZlx1NjcxZlx1NGUwOV9cdTY2MWZcdTY3MWZcdTU2ZGJf''@;'; put 'put ''XHU2NjFmXHU2NzFmXHU0ZTk0X1x1NjYxZlx1NjcxZlx1NTE2ZCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJcdTkwMzFcdTY1ZTVfXHU5MDMxXHU0ZTAwX1x1OTAzMVx1NGU4Y19cdTkwMzFcdTRlMDlfXHU5MDMxXHU1NmRiX1x1OTAzMVx1NGU5NF9cdTkwMzFcdTUxNmQiLnNwbGl0KCJf''@;'; put 'put ''Iiksd2Vla2RheXNNaW46Ilx1NjVlNV9cdTRlMDBfXHU0ZThjX1x1NGUwOV9cdTU2ZGJfXHU0ZTk0X1x1NTE2ZCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixM''@;'; put 'put ''TEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsTExMTDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1ZGRkZCBISDptbSIsbDoiRC9NL1lZWVkiLGxsOiJZWVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTUiLGxsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IEhIOm1tIixsbGxsOiJZ''@;'; put 'put ''WVlZXHU1ZTc0TVx1NjcwOERcdTY1ZTVkZGRkIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTovXHU1MWNjXHU2NjY4fFx1NjVlOVx1NGUwYXxcdTRlMGFcdTUzNDh8XHU0ZTJkXHU1MzQ4fFx1NGUwYlx1NTM0OHxcdTY2NWFcdTRlMGEvLG1lcmlkaWVtSG91cjpmdW5jdGlvbihtLHNlKXtyZXR1cm4g''@;'; put 'put ''MTI9PT1tJiYobT0wKSwiXHU1MWNjXHU2NjY4Ij09PXNlfHwiXHU2NWU5XHU0ZTBhIj09PXNlfHwiXHU0ZTBhXHU1MzQ4Ij09PXNlP206Ilx1NGUyZFx1NTM0OCI9PT1zZT9tPj0xMT9tOm0rMTI6Ilx1NGUwYlx1NTM0OCI9PT1zZXx8Ilx1NjY1YVx1NGUwYSI9PT1zZT9tKzEyOnZvaWQgMH0s''@;'; put 'put ''bWVyaWRpZW06ZnVuY3Rpb24obSxzZSxNKXt2YXIgTz0xMDAqbStzZTtyZXR1cm4gTzw2MDA/Ilx1NTFjY1x1NjY2OCI6Tzw5MDA/Ilx1NjVlOVx1NGUwYSI6TzwxMTMwPyJcdTRlMGFcdTUzNDgiOk88MTIzMD8iXHU0ZTJkXHU1MzQ4IjpPPDE4MDA/Ilx1NGUwYlx1NTM0OCI6Ilx1NjY1YVx1''@;'; put 'put ''NGUwYSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbXHU0ZWNhXHU1OTI5XSBMVCIsbmV4dERheToiW1x1NjYwZVx1NTkyOV0gTFQiLG5leHRXZWVrOiJbXHU0ZTBiXWRkZGQgTFQiLGxhc3REYXk6IltcdTY2MjhcdTU5MjldIExUIixsYXN0V2VlazoiW1x1NGUwYV1kZGRkIExUIixzYW1lRWxzZToi''@;'; put 'put ''TCJ9LGRheU9mTW9udGhPcmRpbmFsUGFyc2U6L1xkezEsMn0oXHU2NWU1fFx1NjcwOHxcdTkwMzEpLyxvcmRpbmFsOmZ1bmN0aW9uKG0sc2Upe3N3aXRjaChzZSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gbSsiXHU2NWU1IjtjYXNlIk0iOnJldHVybiBtKyJcdTY3MDgiO2Nh''@;'; put 'put ''c2UidyI6Y2FzZSJXIjpyZXR1cm4gbSsiXHU5MDMxIjtkZWZhdWx0OnJldHVybiBtfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzXHU1MTY3IixwYXN0OiIlc1x1NTI0ZCIsczoiXHU1ZTdlXHU3OWQyIixzczoiJWQgXHU3OWQyIixtOiIxIFx1NTIwNlx1OTQxOCIsbW06IiVkIFx1NTIwNlx1''@;'; put 'put ''OTQxOCIsaDoiMSBcdTVjMGZcdTY2NDIiLGhoOiIlZCBcdTVjMGZcdTY2NDIiLGQ6IjEgXHU1OTI5IixkZDoiJWQgXHU1OTI5IixNOiIxIFx1NTAwYlx1NjcwOCIsTU06IiVkIFx1NTAwYlx1NjcwOCIseToiMSBcdTVlNzQiLHl5OiIlZCBcdTVlNzQifX0pfShSKDk3NTg2KSl9LDg4ODc6ZnVu''@;'; put 'put ''Y3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7b2UuZGVmaW5lTG9jYWxlKCJ6aC10dyIse21vbnRoczoiXHU0ZTAwXHU2NzA4X1x1NGU4Y1x1NjcwOF9cdTRlMDlcdTY3MDhfXHU1NmRiXHU2NzA4X1x1NGU5NFx1NjcwOF9cdTUxNmRcdTY3MDhfXHU0ZTAzXHU2NzA4''@;'; put 'put ''X1x1NTE2Ylx1NjcwOF9cdTRlNWRcdTY3MDhfXHU1MzQxXHU2NzA4X1x1NTM0MVx1NGUwMFx1NjcwOF9cdTUzNDFcdTRlOGNcdTY3MDgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjFcdTY3MDhfMlx1NjcwOF8zXHU2NzA4XzRcdTY3MDhfNVx1NjcwOF82XHU2NzA4XzdcdTY3MDhfOFx1Njcw''@;'; put 'put ''OF85XHU2NzA4XzEwXHU2NzA4XzExXHU2NzA4XzEyXHU2NzA4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJcdTY2MWZcdTY3MWZcdTY1ZTVfXHU2NjFmXHU2NzFmXHU0ZTAwX1x1NjYxZlx1NjcxZlx1NGU4Y19cdTY2MWZcdTY3MWZcdTRlMDlfXHU2NjFmXHU2NzFmXHU1NmRiX1x1NjYxZlx1Njcx''@;'; put 'put ''Zlx1NGU5NF9cdTY2MWZcdTY3MWZcdTUxNmQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiXHU5MDMxXHU2NWU1X1x1OTAzMVx1NGUwMF9cdTkwMzFcdTRlOGNfXHU5MDMxXHU0ZTA5X1x1OTAzMVx1NTZkYl9cdTkwMzFcdTRlOTRfXHU5MDMxXHU1MTZkIi5zcGxpdCgiXyIpLHdlZWtkYXlz''@;'; put 'put ''TWluOiJcdTY1ZTVfXHU0ZTAwX1x1NGU4Y19cdTRlMDlfXHU1NmRiX1x1NGU5NF9cdTUxNmQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS9NTS9ERCIsTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSIsTExMOiJZWVlZXHU1''@;'; put 'put ''ZTc0TVx1NjcwOERcdTY1ZTUgSEg6bW0iLExMTEw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNWRkZGQgSEg6bW0iLGw6IllZWVkvTS9EIixsbDoiWVlZWVx1NWU3NE1cdTY3MDhEXHU2NWU1IixsbGw6IllZWVlcdTVlNzRNXHU2NzA4RFx1NjVlNSBISDptbSIsbGxsbDoiWVlZWVx1NWU3NE1c''@;'; put 'put ''dTY3MDhEXHU2NWU1ZGRkZCBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L1x1NTFjY1x1NjY2OHxcdTY1ZTlcdTRlMGF8XHU0ZTBhXHU1MzQ4fFx1NGUyZFx1NTM0OHxcdTRlMGJcdTUzNDh8XHU2NjVhXHU0ZTBhLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24obSxzZSl7cmV0dXJuIDEyPT09bSYmKG09''@;'; put 'put ''MCksIlx1NTFjY1x1NjY2OCI9PT1zZXx8Ilx1NjVlOVx1NGUwYSI9PT1zZXx8Ilx1NGUwYVx1NTM0OCI9PT1zZT9tOiJcdTRlMmRcdTUzNDgiPT09c2U/bT49MTE/bTptKzEyOiJcdTRlMGJcdTUzNDgiPT09c2V8fCJcdTY2NWFcdTRlMGEiPT09c2U/bSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1''@;'; put 'put ''bmN0aW9uKG0sc2UsTSl7dmFyIE89MTAwKm0rc2U7cmV0dXJuIE88NjAwPyJcdTUxY2NcdTY2NjgiOk88OTAwPyJcdTY1ZTlcdTRlMGEiOk88MTEzMD8iXHU0ZTBhXHU1MzQ4IjpPPDEyMzA/Ilx1NGUyZFx1NTM0OCI6TzwxODAwPyJcdTRlMGJcdTUzNDgiOiJcdTY2NWFcdTRlMGEifSxjYWxl''@;'; put 'put ''bmRhcjp7c2FtZURheToiW1x1NGVjYVx1NTkyOV0gTFQiLG5leHREYXk6IltcdTY2MGVcdTU5MjldIExUIixuZXh0V2VlazoiW1x1NGUwYl1kZGRkIExUIixsYXN0RGF5OiJbXHU2NjI4XHU1OTI5XSBMVCIsbGFzdFdlZWs6IltcdTRlMGFdZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxkYXlPZk1v''@;'; put 'put ''bnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KFx1NjVlNXxcdTY3MDh8XHU5MDMxKS8sb3JkaW5hbDpmdW5jdGlvbihtLHNlKXtzd2l0Y2goc2Upe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIG0rIlx1NjVlNSI7Y2FzZSJNIjpyZXR1cm4gbSsiXHU2NzA4IjtjYXNlInciOmNhc2Ui''@;'; put 'put ''VyI6cmV0dXJuIG0rIlx1OTAzMSI7ZGVmYXVsdDpyZXR1cm4gbX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc1x1NWY4YyIscGFzdDoiJXNcdTUyNGQiLHM6Ilx1NWU3ZVx1NzlkMiIsc3M6IiVkIFx1NzlkMiIsbToiMSBcdTUyMDZcdTk0MTgiLG1tOiIlZCBcdTUyMDZcdTk0MTgiLGg6IjEg''@;'; put 'put ''XHU1YzBmXHU2NjQyIixoaDoiJWQgXHU1YzBmXHU2NjQyIixkOiIxIFx1NTkyOSIsZGQ6IiVkIFx1NTkyOSIsTToiMSBcdTUwMGJcdTY3MDgiLE1NOiIlZCBcdTUwMGJcdTY3MDgiLHk6IjEgXHU1ZTc0Iix5eToiJWQgXHU1ZTc0In19KX0oUig5NzU4NikpfSw5NzU4NjpmdW5jdGlvbihRZSxN''@;'; put 'put ''ZSxSKXsoUWU9Ui5ubWQoUWUpKS5leHBvcnRzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBvZSxaO2Z1bmN0aW9uIHgoKXtyZXR1cm4gb2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHNlKFRlKXtyZXR1cm4gVGUgaW5zdGFuY2VvZiBBcnJheXx8IltvYmplY3QgQXJyYXld''@;'; put 'put ''Ij09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChUZSl9ZnVuY3Rpb24gTShUZSl7cmV0dXJuIG51bGwhPVRlJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChUZSl9ZnVuY3Rpb24gTyhUZSxLZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5''@;'; put 'put ''cGUuaGFzT3duUHJvcGVydHkuY2FsbChUZSxLZSl9ZnVuY3Rpb24gSShUZSl7aWYoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpcmV0dXJuIDA9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhUZSkubGVuZ3RoO3ZhciBLZTtmb3IoS2UgaW4gVGUpaWYoTyhUZSxLZSkpcmV0dXJuITE7''@;'; put 'put ''cmV0dXJuITB9ZnVuY3Rpb24gaihUZSl7cmV0dXJuIHZvaWQgMD09PVRlfWZ1bmN0aW9uIEcoVGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgVGV8fCJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFRlKX1mdW5jdGlvbiBEKFRlKXtyZXR1cm4gVGUg''@;'; put 'put ''aW5zdGFuY2VvZiBEYXRlfHwiW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoVGUpfWZ1bmN0aW9uIFQoVGUsS2Upe3ZhciBBdCxwdD1bXSxKdD1UZS5sZW5ndGg7Zm9yKEF0PTA7QXQ8SnQ7KytBdClwdC5wdXNoKEtlKFRlW0F0XSxBdCkpO3JldHVybiBw''@;'; put 'put ''dH1mdW5jdGlvbiBFKFRlLEtlKXtmb3IodmFyIHB0IGluIEtlKU8oS2UscHQpJiYoVGVbcHRdPUtlW3B0XSk7cmV0dXJuIE8oS2UsInRvU3RyaW5nIikmJihUZS50b1N0cmluZz1LZS50b1N0cmluZyksTyhLZSwidmFsdWVPZiIpJiYoVGUudmFsdWVPZj1LZS52YWx1ZU9mKSxUZX1mdW5jdGlv''@;'; put 'put ''biB6KFRlLEtlLHB0LEF0KXtyZXR1cm4gaTkoVGUsS2UscHQsQXQsITApLnV0YygpfWZ1bmN0aW9uIEIoVGUpe3JldHVybiBudWxsPT1UZS5fcGYmJihUZS5fcGY9e2VtcHR5OiExLHVudXNlZFRva2VuczpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVyOjAsbnVs''@;'; put 'put ''bElucHV0OiExLGludmFsaWRFcmE6bnVsbCxpbnZhbGlkTW9udGg6bnVsbCxpbnZhbGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITEscGFyc2VkRGF0ZVBhcnRzOltdLGVyYTpudWxsLG1lcmlkaWVtOm51bGwscmZjMjgyMjohMSx3ZWVrZGF5TWlzbWF0Y2g6ITF9KSxUZS5f''@;'; put 'put ''cGZ9ZnVuY3Rpb24gWShUZSl7dmFyIEtlPW51bGwscHQ9ITEsQXQ9VGUuX2QmJiFpc05hTihUZS5fZC5nZXRUaW1lKCkpO3JldHVybiBBdCYmKEtlPUIoVGUpLHB0PVouY2FsbChLZS5wYXJzZWREYXRlUGFydHMsZnVuY3Rpb24oSnQpe3JldHVybiBudWxsIT1KdH0pLEF0PUtlLm92ZXJmbG93''@;'; put 'put ''PDAmJiFLZS5lbXB0eSYmIUtlLmludmFsaWRFcmEmJiFLZS5pbnZhbGlkTW9udGgmJiFLZS5pbnZhbGlkV2Vla2RheSYmIUtlLndlZWtkYXlNaXNtYXRjaCYmIUtlLm51bGxJbnB1dCYmIUtlLmludmFsaWRGb3JtYXQmJiFLZS51c2VySW52YWxpZGF0ZWQmJighS2UubWVyaWRpZW18fEtlLm1l''@;'; put 'put ''cmlkaWVtJiZwdCksVGUuX3N0cmljdCYmKEF0PUF0JiYwPT09S2UuY2hhcnNMZWZ0T3ZlciYmMD09PUtlLnVudXNlZFRva2Vucy5sZW5ndGgmJnZvaWQgMD09PUtlLmJpZ0hvdXIpKSxudWxsIT1PYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihUZSk/QXQ6KFRlLl9pc1ZhbGlkPUF0''@;'; put 'put ''LFRlLl9pc1ZhbGlkKX1mdW5jdGlvbiBVKFRlKXt2YXIgS2U9eihOYU4pO3JldHVybiBudWxsIT1UZT9FKEIoS2UpLFRlKTpCKEtlKS51c2VySW52YWxpZGF0ZWQ9ITAsS2V9Wj1BcnJheS5wcm90b3R5cGUuc29tZT9BcnJheS5wcm90b3R5cGUuc29tZTpmdW5jdGlvbihUZSl7dmFyIEF0LEtl''@;'; put 'put ''PU9iamVjdCh0aGlzKSxwdD1LZS5sZW5ndGg+Pj4wO2ZvcihBdD0wO0F0PHB0O0F0KyspaWYoQXQgaW4gS2UmJlRlLmNhbGwodGhpcyxLZVtBdF0sQXQsS2UpKXJldHVybiEwO3JldHVybiExfTt2YXIgcT14Lm1vbWVudFByb3BlcnRpZXM9W10sSj0hMTtmdW5jdGlvbiBlZShUZSxLZSl7dmFy''@;'; put 'put ''IHB0LEF0LEp0LFZuPXEubGVuZ3RoO2lmKGooS2UuX2lzQU1vbWVudE9iamVjdCl8fChUZS5faXNBTW9tZW50T2JqZWN0PUtlLl9pc0FNb21lbnRPYmplY3QpLGooS2UuX2kpfHwoVGUuX2k9S2UuX2kpLGooS2UuX2YpfHwoVGUuX2Y9S2UuX2YpLGooS2UuX2wpfHwoVGUuX2w9S2UuX2wpLGoo''@;'; put 'put ''S2UuX3N0cmljdCl8fChUZS5fc3RyaWN0PUtlLl9zdHJpY3QpLGooS2UuX3R6bSl8fChUZS5fdHptPUtlLl90em0pLGooS2UuX2lzVVRDKXx8KFRlLl9pc1VUQz1LZS5faXNVVEMpLGooS2UuX29mZnNldCl8fChUZS5fb2Zmc2V0PUtlLl9vZmZzZXQpLGooS2UuX3BmKXx8KFRlLl9wZj1CKEtl''@;'; put 'put ''KSksaihLZS5fbG9jYWxlKXx8KFRlLl9sb2NhbGU9S2UuX2xvY2FsZSksVm4+MClmb3IocHQ9MDtwdDxWbjtwdCsrKWooSnQ9S2VbQXQ9cVtwdF1dKXx8KFRlW0F0XT1KdCk7cmV0dXJuIFRlfWZ1bmN0aW9uIHJlKFRlKXtlZSh0aGlzLFRlKSx0aGlzLl9kPW5ldyBEYXRlKG51bGwhPVRlLl9k''@;'; put 'put ''P1RlLl9kLmdldFRpbWUoKTpOYU4pLHRoaXMuaXNWYWxpZCgpfHwodGhpcy5fZD1uZXcgRGF0ZShOYU4pKSwhMT09PUomJihKPSEwLHgudXBkYXRlT2Zmc2V0KHRoaXMpLEo9ITEpfWZ1bmN0aW9uIGllKFRlKXtyZXR1cm4gVGUgaW5zdGFuY2VvZiByZXx8bnVsbCE9VGUmJm51bGwhPVRlLl9p''@;'; put 'put ''c0FNb21lbnRPYmplY3R9ZnVuY3Rpb24gdWUoVGUpeyExPT09eC5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MmJnR5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrVGUpfWZ1bmN0aW9uIGxlKFRlLEtlKXt2YXIg''@;'; put 'put ''cHQ9ITA7cmV0dXJuIEUoZnVuY3Rpb24oKXtpZihudWxsIT14LmRlcHJlY2F0aW9uSGFuZGxlciYmeC5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCxUZSkscHQpe3ZhciBKdCxWbixQcixBdD1bXSxybz1hcmd1bWVudHMubGVuZ3RoO2ZvcihWbj0wO1ZuPHJvO1ZuKyspe2lmKEp0PSIiLCJvYmpl''@;'; put 'put ''Y3QiPT10eXBlb2YgYXJndW1lbnRzW1ZuXSl7Zm9yKFByIGluIEp0Kz0iXG5bIitWbisiXSAiLGFyZ3VtZW50c1swXSlPKGFyZ3VtZW50c1swXSxQcikmJihKdCs9UHIrIjogIithcmd1bWVudHNbMF1bUHJdKyIsICIpO0p0PUp0LnNsaWNlKDAsLTIpfWVsc2UgSnQ9YXJndW1lbnRzW1ZuXTtB''@;'; put 'put ''dC5wdXNoKEp0KX11ZShUZSsiXG5Bcmd1bWVudHM6ICIrQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoQXQpLmpvaW4oIiIpKyJcbiIrKG5ldyBFcnJvcikuc3RhY2spLHB0PSExfXJldHVybiBLZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LEtlKX12YXIgZyxhZT17fTtmdW5jdGlvbiBXKFRl''@;'; put 'put ''LEtlKXtudWxsIT14LmRlcHJlY2F0aW9uSGFuZGxlciYmeC5kZXByZWNhdGlvbkhhbmRsZXIoVGUsS2UpLGFlW1RlXXx8KHVlKEtlKSxhZVtUZV09ITApfWZ1bmN0aW9uIGIoVGUpe3JldHVybiB0eXBlb2YgRnVuY3Rpb248InUiJiZUZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwiW29iamVjdCBG''@;'; put 'put ''dW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFRlKX1mdW5jdGlvbiBGKFRlLEtlKXt2YXIgQXQscHQ9RSh7fSxUZSk7Zm9yKEF0IGluIEtlKU8oS2UsQXQpJiYoTShUZVtBdF0pJiZNKEtlW0F0XSk/KHB0W0F0XT17fSxFKHB0W0F0XSxUZVtBdF0pLEUocHRbQXRd''@;'; put 'put ''LEtlW0F0XSkpOm51bGwhPUtlW0F0XT9wdFtBdF09S2VbQXRdOmRlbGV0ZSBwdFtBdF0pO2ZvcihBdCBpbiBUZSlPKFRlLEF0KSYmIU8oS2UsQXQpJiZNKFRlW0F0XSkmJihwdFtBdF09RSh7fSxwdFtBdF0pKTtyZXR1cm4gcHR9ZnVuY3Rpb24gSChUZSl7bnVsbCE9VGUmJnRoaXMuc2V0KFRl''@;'; put 'put ''KX14LnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz0hMSx4LmRlcHJlY2F0aW9uSGFuZGxlcj1udWxsLGc9T2JqZWN0LmtleXM/T2JqZWN0LmtleXM6ZnVuY3Rpb24oVGUpe3ZhciBLZSxwdD1bXTtmb3IoS2UgaW4gVGUpTyhUZSxLZSkmJnB0LnB1c2goS2UpO3JldHVybiBwdH07ZnVuY3Rp''@;'; put 'put ''b24gXyhUZSxLZSxwdCl7dmFyIEF0PSIiK01hdGguYWJzKFRlKTtyZXR1cm4oVGU+PTA/cHQ/IisiOiIiOiItIikrTWF0aC5wb3coMTAsTWF0aC5tYXgoMCxLZS1BdC5sZW5ndGgpKS50b1N0cmluZygpLnN1YnN0cigxKStBdH12YXIgcD0vKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/''@;'; put 'put ''fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xOezEsNX18WVlZWVlZfFlZWVlZfFlZWVl8WVl8eXsyLDR9fHlvP3xnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98''@;'; put 'put ''LikvZyx3PS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLEs9e30sdGU9e307ZnVuY3Rpb24gY2UoVGUsS2UscHQsQXQpe3ZhciBKdD1BdDsic3RyaW5nIj09dHlwZW9mIEF0JiYoSnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tBdF0oKX0pLFRlJiYodGVbVGVd''@;'; put 'put ''PUp0KSxLZSYmKHRlW0tlWzBdXT1mdW5jdGlvbigpe3JldHVybiBfKEp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxLZVsxXSxLZVsyXSl9KSxwdCYmKHRlW3B0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKEp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxUZSl9''@;'; put 'put ''KX1mdW5jdGlvbiBoZShUZSl7cmV0dXJuIFRlLm1hdGNoKC9cW1tcc1xTXS8pP1RlLnJlcGxhY2UoL15cW3xcXSQvZywiIik6VGUucmVwbGFjZSgvXFwvZywiIil9ZnVuY3Rpb24gTGUoVGUsS2Upe3JldHVybiBUZS5pc1ZhbGlkKCk/KEtlPUhlKEtlLFRlLmxvY2FsZURhdGEoKSksS1tLZV09''@;'; put 'put ''S1tLZV18fGZ1bmN0aW9uIFNlKFRlKXt2YXIgcHQsQXQsS2U9VGUubWF0Y2gocCk7Zm9yKHB0PTAsQXQ9S2UubGVuZ3RoO3B0PEF0O3B0KyspS2VbcHRdPXRlW0tlW3B0XV0/dGVbS2VbcHRdXTpoZShLZVtwdF0pO3JldHVybiBmdW5jdGlvbihKdCl7dmFyIFByLFZuPSIiO2ZvcihQcj0wO1By''@;'; put 'put ''PEF0O1ByKyspVm4rPWIoS2VbUHJdKT9LZVtQcl0uY2FsbChKdCxUZSk6S2VbUHJdO3JldHVybiBWbn19KEtlKSxLW0tlXShUZSkpOlRlLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIEhlKFRlLEtlKXt2YXIgcHQ9NTtmdW5jdGlvbiBBdChKdCl7cmV0dXJuIEtlLmxvbmdE''@;'; put 'put ''YXRlRm9ybWF0KEp0KXx8SnR9Zm9yKHcubGFzdEluZGV4PTA7cHQ+PTAmJncudGVzdChUZSk7KVRlPVRlLnJlcGxhY2UodyxBdCksdy5sYXN0SW5kZXg9MCxwdC09MTtyZXR1cm4gVGV9dmFyIEllPXtEOiJkYXRlIixkYXRlczoiZGF0ZSIsZGF0ZToiZGF0ZSIsZDoiZGF5IixkYXlzOiJkYXki''@;'; put 'put ''LGRheToiZGF5IixlOiJ3ZWVrZGF5Iix3ZWVrZGF5czoid2Vla2RheSIsd2Vla2RheToid2Vla2RheSIsRToiaXNvV2Vla2RheSIsaXNvd2Vla2RheXM6Imlzb1dlZWtkYXkiLGlzb3dlZWtkYXk6Imlzb1dlZWtkYXkiLERERDoiZGF5T2ZZZWFyIixkYXlvZnllYXJzOiJkYXlPZlllYXIiLGRh''@;'; put 'put ''eW9meWVhcjoiZGF5T2ZZZWFyIixoOiJob3VyIixob3VyczoiaG91ciIsaG91cjoiaG91ciIsbXM6Im1pbGxpc2Vjb25kIixtaWxsaXNlY29uZHM6Im1pbGxpc2Vjb25kIixtaWxsaXNlY29uZDoibWlsbGlzZWNvbmQiLG06Im1pbnV0ZSIsbWludXRlczoibWludXRlIixtaW51dGU6Im1pbnV0''@;'; put 'put ''ZSIsTToibW9udGgiLG1vbnRoczoibW9udGgiLG1vbnRoOiJtb250aCIsUToicXVhcnRlciIscXVhcnRlcnM6InF1YXJ0ZXIiLHF1YXJ0ZXI6InF1YXJ0ZXIiLHM6InNlY29uZCIsc2Vjb25kczoic2Vjb25kIixzZWNvbmQ6InNlY29uZCIsZ2c6IndlZWtZZWFyIix3ZWVreWVhcnM6IndlZWtZ''@;'; put 'put ''ZWFyIix3ZWVreWVhcjoid2Vla1llYXIiLEdHOiJpc29XZWVrWWVhciIsaXNvd2Vla3llYXJzOiJpc29XZWVrWWVhciIsaXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIix3OiJ3ZWVrIix3ZWVrczoid2VlayIsd2Vlazoid2VlayIsVzoiaXNvV2VlayIsaXNvd2Vla3M6Imlzb1dlZWsiLGlzb3dl''@;'; put 'put ''ZWs6Imlzb1dlZWsiLHk6InllYXIiLHllYXJzOiJ5ZWFyIix5ZWFyOiJ5ZWFyIn07ZnVuY3Rpb24gWGUoVGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgVGU/SWVbVGVdfHxJZVtUZS50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gdHQoVGUpe3ZhciBwdCxBdCxLZT17fTtmb3IoQXQg''@;'; put 'put ''aW4gVGUpTyhUZSxBdCkmJihwdD1YZShBdCkpJiYoS2VbcHRdPVRlW0F0XSk7cmV0dXJuIEtlfXZhciBaZT17ZGF0ZTo5LGRheToxMSx3ZWVrZGF5OjExLGlzb1dlZWtkYXk6MTEsZGF5T2ZZZWFyOjQsaG91cjoxMyxtaWxsaXNlY29uZDoxNixtaW51dGU6MTQsbW9udGg6OCxxdWFydGVyOjcs''@;'; put 'put ''c2Vjb25kOjE1LHdlZWtZZWFyOjEsaXNvV2Vla1llYXI6MSx3ZWVrOjUsaXNvV2Vlazo1LHllYXI6MX07dmFyIHd0LGtlPS9cZC8sQWU9L1xkXGQvLGplPS9cZHszfS8saXQ9L1xkezR9LyxzdD0vWystXT9cZHs2fS8seHQ9L1xkXGQ/LyxGdD0vXGRcZFxkXGQ/LyxPdD0vXGRcZFxkXGRcZFxk''@;'; put 'put ''Py8sS3Q9L1xkezEsM30vLGJuPS9cZHsxLDR9LyxCdD0vWystXT9cZHsxLDZ9Lyx5bj0vXGQrLyxObj0vWystXT9cZCsvLG5uPS9afFsrLV1cZFxkOj9cZFxkL2dpLEduPS9afFsrLV1cZFxkKD86Oj9cZFxkKT8vZ2ksZnQ9L1swLTldezAsMjU2fVsnYS16XHUwMEEwLVx1MDVGRlx1MDcwMC1c''@;'; put 'put ''dUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkYwN1x1RkYxMC1cdUZGRUZdezEsMjU2fXxbXHUwNjAwLVx1MDZGRlwvXXsxLDI1Nn0oXHMqP1tcdTA2MDAtXHUwNkZGXXsxLDI1Nn0pezEsMn0vaSxkbj0vXlsxLTldXGQ/Lyxobj0vXihbMS05XVxkfFxkKS87ZnVuY3Rpb24ganQoVGUsS2Us''@;'; put 'put ''cHQpe3d0W1RlXT1iKEtlKT9LZTpmdW5jdGlvbihBdCxKdCl7cmV0dXJuIEF0JiZwdD9wdDpLZX19ZnVuY3Rpb24gbXQoVGUsS2Upe3JldHVybiBPKHd0LFRlKT93dFtUZV0oS2UuX3N0cmljdCxLZS5fbG9jYWxlKTpuZXcgUmVnRXhwKGZ1bmN0aW9uIEh0KFRlKXtyZXR1cm4gcG4oVGUucmVw''@;'; put 'put ''bGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csZnVuY3Rpb24oS2UscHQsQXQsSnQsVm4pe3JldHVybiBwdHx8QXR8fEp0fHxWbn0pKX0oVGUpKX1mdW5jdGlvbiBwbihUZSl7cmV0dXJuIFRlLnJlcGxhY2UoL1stXC9cXF4kKis/Ligp''@;'; put 'put ''fFtcXXt9XS9nLCJcXCQmIil9ZnVuY3Rpb24gbnQoVGUpe3JldHVybiBUZTwwP01hdGguY2VpbChUZSl8fDA6TWF0aC5mbG9vcihUZSl9ZnVuY3Rpb24gRXQoVGUpe3ZhciBLZT0rVGUscHQ9MDtyZXR1cm4gMCE9PUtlJiZpc0Zpbml0ZShLZSkmJihwdD1udChLZSkpLHB0fXd0PXt9O3ZhciBl''@;'; put 'put ''bj17fTtmdW5jdGlvbiBUdChUZSxLZSl7dmFyIHB0LEp0LEF0PUtlO2Zvcigic3RyaW5nIj09dHlwZW9mIFRlJiYoVGU9W1RlXSksRyhLZSkmJihBdD1mdW5jdGlvbihWbixQcil7UHJbS2VdPUV0KFZuKX0pLEp0PVRlLmxlbmd0aCxwdD0wO3B0PEp0O3B0KyspZW5bVGVbcHRdXT1BdH1mdW5j''@;'; put 'put ''dGlvbiB5dChUZSxLZSl7VHQoVGUsZnVuY3Rpb24ocHQsQXQsSnQsVm4pe0p0Ll93PUp0Ll93fHx7fSxLZShwdCxKdC5fdyxKdCxWbil9KX1mdW5jdGlvbiAkdChUZSxLZSxwdCl7bnVsbCE9S2UmJk8oZW4sVGUpJiZlbltUZV0oS2UscHQuX2EscHQsVGUpfWZ1bmN0aW9uIHhuKFRlKXtyZXR1''@;'; put 'put ''cm4gVGUlND09MCYmVGUlMTAwIT0wfHxUZSU0MDA9PTB9dmFyIHp0PTAsX249MSxPbj0yLHJuPTMsUG49NCxDbj01LFh0PTYsSm49Nyx4aT04O2Z1bmN0aW9uIGFuKFRlKXtyZXR1cm4geG4oVGUpPzM2NjozNjV9Y2UoIlkiLDAsMCxmdW5jdGlvbigpe3ZhciBUZT10aGlzLnllYXIoKTtyZXR1''@;'; put 'put ''cm4gVGU8PTk5OTk/XyhUZSw0KToiKyIrVGV9KSxjZSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksY2UoMCxbIllZWVkiLDRdLDAsInllYXIiKSxjZSgwLFsiWVlZWVkiLDVdLDAsInllYXIiKSxjZSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiks''@;'; put 'put ''anQoIlkiLE5uKSxqdCgiWVkiLHh0LEFlKSxqdCgiWVlZWSIsYm4saXQpLGp0KCJZWVlZWSIsQnQsc3QpLGp0KCJZWVlZWVkiLEJ0LHN0KSxUdChbIllZWVlZIiwiWVlZWVlZIl0senQpLFR0KCJZWVlZIixmdW5jdGlvbihUZSxLZSl7S2VbenRdPTI9PT1UZS5sZW5ndGg/eC5wYXJzZVR3b0Rp''@;'; put 'put ''Z2l0WWVhcihUZSk6RXQoVGUpfSksVHQoIllZIixmdW5jdGlvbihUZSxLZSl7S2VbenRdPXgucGFyc2VUd29EaWdpdFllYXIoVGUpfSksVHQoIlkiLGZ1bmN0aW9uKFRlLEtlKXtLZVt6dF09cGFyc2VJbnQoVGUsMTApfSkseC5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5jdGlvbihUZSl7cmV0dXJu''@;'; put 'put ''IEV0KFRlKSsoRXQoVGUpPjY4PzE5MDA6MmUzKX07dmFyIExpLHRuPUFyKCJGdWxsWWVhciIsITApO2Z1bmN0aW9uIEFyKFRlLEtlKXtyZXR1cm4gZnVuY3Rpb24ocHQpe3JldHVybiBudWxsIT1wdD8oZGkodGhpcyxUZSxwdCkseC51cGRhdGVPZmZzZXQodGhpcyxLZSksdGhpcyk6aHIodGhp''@;'; put 'put ''cyxUZSl9fWZ1bmN0aW9uIGhyKFRlLEtlKXtpZighVGUuaXNWYWxpZCgpKXJldHVybiBOYU47dmFyIHB0PVRlLl9kLEF0PVRlLl9pc1VUQztzd2l0Y2goS2Upe2Nhc2UiTWlsbGlzZWNvbmRzIjpyZXR1cm4gQXQ/cHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCk6cHQuZ2V0TWlsbGlzZWNvbmRzKCk7''@;'; put 'put ''Y2FzZSJTZWNvbmRzIjpyZXR1cm4gQXQ/cHQuZ2V0VVRDU2Vjb25kcygpOnB0LmdldFNlY29uZHMoKTtjYXNlIk1pbnV0ZXMiOnJldHVybiBBdD9wdC5nZXRVVENNaW51dGVzKCk6cHQuZ2V0TWludXRlcygpO2Nhc2UiSG91cnMiOnJldHVybiBBdD9wdC5nZXRVVENIb3VycygpOnB0LmdldEhv''@;'; put 'put ''dXJzKCk7Y2FzZSJEYXRlIjpyZXR1cm4gQXQ/cHQuZ2V0VVRDRGF0ZSgpOnB0LmdldERhdGUoKTtjYXNlIkRheSI6cmV0dXJuIEF0P3B0LmdldFVUQ0RheSgpOnB0LmdldERheSgpO2Nhc2UiTW9udGgiOnJldHVybiBBdD9wdC5nZXRVVENNb250aCgpOnB0LmdldE1vbnRoKCk7Y2FzZSJGdWxs''@;'; put 'put ''WWVhciI6cmV0dXJuIEF0P3B0LmdldFVUQ0Z1bGxZZWFyKCk6cHQuZ2V0RnVsbFllYXIoKTtkZWZhdWx0OnJldHVybiBOYU59fWZ1bmN0aW9uIGRpKFRlLEtlLHB0KXt2YXIgQXQsSnQsVm4sUHIscm87aWYoVGUuaXNWYWxpZCgpJiYhaXNOYU4ocHQpKXtzd2l0Y2goQXQ9VGUuX2QsSnQ9VGUu''@;'; put 'put ''X2lzVVRDLEtlKXtjYXNlIk1pbGxpc2Vjb25kcyI6cmV0dXJuIHZvaWQoSnQ/QXQuc2V0VVRDTWlsbGlzZWNvbmRzKHB0KTpBdC5zZXRNaWxsaXNlY29uZHMocHQpKTtjYXNlIlNlY29uZHMiOnJldHVybiB2b2lkKEp0P0F0LnNldFVUQ1NlY29uZHMocHQpOkF0LnNldFNlY29uZHMocHQpKTtj''@;'; put 'put ''YXNlIk1pbnV0ZXMiOnJldHVybiB2b2lkKEp0P0F0LnNldFVUQ01pbnV0ZXMocHQpOkF0LnNldE1pbnV0ZXMocHQpKTtjYXNlIkhvdXJzIjpyZXR1cm4gdm9pZChKdD9BdC5zZXRVVENIb3VycyhwdCk6QXQuc2V0SG91cnMocHQpKTtjYXNlIkRhdGUiOnJldHVybiB2b2lkKEp0P0F0LnNldFVU''@;'; put 'put ''Q0RhdGUocHQpOkF0LnNldERhdGUocHQpKTtjYXNlIkZ1bGxZZWFyIjpicmVhaztkZWZhdWx0OnJldHVybn1Wbj1wdCxQcj1UZS5tb250aCgpLHJvPTI5IT09KHJvPVRlLmRhdGUoKSl8fDEhPT1Qcnx8eG4oVm4pP3JvOjI4LEp0P0F0LnNldFVUQ0Z1bGxZZWFyKFZuLFByLHJvKTpBdC5zZXRG''@;'; put 'put ''dWxsWWVhcihWbixQcixybyl9fWZ1bmN0aW9uIGxvKFRlLEtlKXtpZihpc05hTihUZSl8fGlzTmFOKEtlKSlyZXR1cm4gTmFOO3ZhciBwdD1mdW5jdGlvbiBicihUZSxLZSl7cmV0dXJuKFRlJUtlK0tlKSVLZX0oS2UsMTIpO3JldHVybiBUZSs9KEtlLXB0KS8xMiwxPT09cHQ/eG4oVGUpPzI5''@;'; put 'put ''OjI4OjMxLXB0JTclMn1MaT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9BcnJheS5wcm90b3R5cGUuaW5kZXhPZjpmdW5jdGlvbihUZSl7dmFyIEtlO2ZvcihLZT0wO0tlPHRoaXMubGVuZ3RoOysrS2UpaWYodGhpc1tLZV09PT1UZSlyZXR1cm4gS2U7cmV0dXJuLTF9LGNlKCJNIixbIk1NIiwy''@;'; put 'put ''XSwiTW8iLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSksY2UoIk1NTSIsMCwwLGZ1bmN0aW9uKFRlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyxUZSl9KSxjZSgiTU1NTSIsMCwwLGZ1bmN0aW9uKFRlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRh''@;'; put 'put ''KCkubW9udGhzKHRoaXMsVGUpfSksanQoIk0iLHh0LGRuKSxqdCgiTU0iLHh0LEFlKSxqdCgiTU1NIixmdW5jdGlvbihUZSxLZSl7cmV0dXJuIEtlLm1vbnRoc1Nob3J0UmVnZXgoVGUpfSksanQoIk1NTU0iLGZ1bmN0aW9uKFRlLEtlKXtyZXR1cm4gS2UubW9udGhzUmVnZXgoVGUpfSksVHQo''@;'; put 'put ''WyJNIiwiTU0iXSxmdW5jdGlvbihUZSxLZSl7S2VbX25dPUV0KFRlKS0xfSksVHQoWyJNTU0iLCJNTU1NIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe3ZhciBKdD1wdC5fbG9jYWxlLm1vbnRoc1BhcnNlKFRlLEF0LHB0Ll9zdHJpY3QpO251bGwhPUp0P0tlW19uXT1KdDpCKHB0KS5pbnZhbGlk''@;'; put 'put ''TW9udGg9VGV9KTt2YXIgVW49IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksWGk9Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3Zf''@;'; put 'put ''RGVjIi5zcGxpdCgiXyIpLFFpPS9EW29EXT8oXFtbXlxbXF1dKlxdfFxzKStNTU1NPy8sZm89ZnQsdm89ZnQ7ZnVuY3Rpb24gem8oVGUsS2UscHQpe3ZhciBBdCxKdCxWbixQcj1UZS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl9tb250aHNQYXJzZSlmb3IodGhpcy5fbW9udGhzUGFy''@;'; put 'put ''c2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10sQXQ9MDtBdDwxMjsrK0F0KVZuPXooWzJlMyxBdF0pLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbQXRdPXRoaXMubW9udGhzU2hvcnQoVm4sIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5f''@;'; put 'put ''bG9uZ01vbnRoc1BhcnNlW0F0XT10aGlzLm1vbnRocyhWbiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gcHQ/Ik1NTSI9PT1LZT8tMSE9PShKdD1MaS5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsUHIpKT9KdDpudWxsOi0xIT09KEp0PUxpLmNhbGwodGhpcy5fbG9uZ01vbnRo''@;'; put 'put ''c1BhcnNlLFByKSk/SnQ6bnVsbDoiTU1NIj09PUtlPy0xIT09KEp0PUxpLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxQcikpfHwtMSE9PShKdD1MaS5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxQcikpP0p0Om51bGw6LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFy''@;'; put 'put ''c2UsUHIpKXx8LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLFByKSk/SnQ6bnVsbH1mdW5jdGlvbiB1cyhUZSxLZSl7aWYoIVRlLmlzVmFsaWQoKSlyZXR1cm4gVGU7aWYoInN0cmluZyI9PXR5cGVvZiBLZSlpZigvXlxkKyQvLnRlc3QoS2UpKUtlPUV0KEtlKTtlbHNl''@;'; put 'put ''IGlmKCFHKEtlPVRlLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZShLZSkpKXJldHVybiBUZTt2YXIgcHQ9S2UsQXQ9VGUuZGF0ZSgpO3JldHVybiBBdD1BdDwyOT9BdDpNYXRoLm1pbihBdCxsbyhUZS55ZWFyKCkscHQpKSxUZS5faXNVVEM/VGUuX2Quc2V0VVRDTW9udGgocHQsQXQpOlRlLl9k''@;'; put 'put ''LnNldE1vbnRoKHB0LEF0KSxUZX1mdW5jdGlvbiBPdShUZSl7cmV0dXJuIG51bGwhPVRlPyh1cyh0aGlzLFRlKSx4LnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTpocih0aGlzLCJNb250aCIpfWZ1bmN0aW9uIEdkKCl7ZnVuY3Rpb24gVGUoSm8sSHMpe3JldHVybiBIcy5sZW5ndGgtSm8u''@;'; put 'put ''bGVuZ3RofXZhciBKdCxWbixQcixybyxLZT1bXSxwdD1bXSxBdD1bXTtmb3IoSnQ9MDtKdDwxMjtKdCsrKVZuPXooWzJlMyxKdF0pLFByPXBuKHRoaXMubW9udGhzU2hvcnQoVm4sIiIpKSxybz1wbih0aGlzLm1vbnRocyhWbiwiIikpLEtlLnB1c2goUHIpLHB0LnB1c2gocm8pLEF0LnB1c2go''@;'; put 'put ''cm8pLEF0LnB1c2goUHIpO0tlLnNvcnQoVGUpLHB0LnNvcnQoVGUpLEF0LnNvcnQoVGUpLHRoaXMuX21vbnRoc1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitBdC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlzLl9tb250aHNTdHJp''@;'; put 'put ''Y3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrcHQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK0tlLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBCcyhUZSxLZSxwdCxBdCxKdCxWbixQcil7dmFyIHJvO3JldHVybiBUZTwx''@;'; put 'put ''MDAmJlRlPj0wPyhybz1uZXcgRGF0ZShUZSs0MDAsS2UscHQsQXQsSnQsVm4sUHIpLGlzRmluaXRlKHJvLmdldEZ1bGxZZWFyKCkpJiZyby5zZXRGdWxsWWVhcihUZSkpOnJvPW5ldyBEYXRlKFRlLEtlLHB0LEF0LEp0LFZuLFByKSxyb31mdW5jdGlvbiAkZChUZSl7dmFyIEtlLHB0O3JldHVy''@;'; put 'put ''biBUZTwxMDAmJlRlPj0wPygocHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSlbMF09VGUrNDAwLEtlPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwscHQpKSxpc0Zpbml0ZShLZS5nZXRVVENGdWxsWWVhcigpKSYmS2Uuc2V0VVRDRnVsbFllYXIoVGUpKTpLZT1u''@;'; put 'put ''ZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLGFyZ3VtZW50cykpLEtlfWZ1bmN0aW9uIHFkKFRlLEtlLHB0KXt2YXIgQXQ9NytLZS1wdDtyZXR1cm4tKDcrJGQoVGUsMCxBdCkuZ2V0VVRDRGF5KCktS2UpJTcrQXQtMX1mdW5jdGlvbiBjbyhUZSxLZSxwdCxBdCxKdCl7dmFyIEpvLEhzLHJv''@;'; put 'put ''PTErNyooS2UtMSkrKDcrcHQtQXQpJTcrcWQoVGUsQXQsSnQpO3JldHVybiBybzw9MD9Icz1hbihKbz1UZS0xKStybzpybz5hbihUZSk/KEpvPVRlKzEsSHM9cm8tYW4oVGUpKTooSm89VGUsSHM9cm8pLHt5ZWFyOkpvLGRheU9mWWVhcjpIc319ZnVuY3Rpb24gYXUoVGUsS2UscHQpe3ZhciBW''@;'; put 'put ''bixQcixBdD1xZChUZS55ZWFyKCksS2UscHQpLEp0PU1hdGguZmxvb3IoKFRlLmRheU9mWWVhcigpLUF0LTEpLzcpKzE7cmV0dXJuIEp0PDE/Vm49SnQrX3IoUHI9VGUueWVhcigpLTEsS2UscHQpOkp0Pl9yKFRlLnllYXIoKSxLZSxwdCk/KFZuPUp0LV9yKFRlLnllYXIoKSxLZSxwdCksUHI9''@;'; put 'put ''VGUueWVhcigpKzEpOihQcj1UZS55ZWFyKCksVm49SnQpLHt3ZWVrOlZuLHllYXI6UHJ9fWZ1bmN0aW9uIF9yKFRlLEtlLHB0KXt2YXIgQXQ9cWQoVGUsS2UscHQpLEp0PXFkKFRlKzEsS2UscHQpO3JldHVybihhbihUZSktQXQrSnQpLzd9Y2UoInciLFsid3ciLDJdLCJ3byIsIndlZWsiKSxj''@;'; put 'put ''ZSgiVyIsWyJXVyIsMl0sIldvIiwiaXNvV2VlayIpLGp0KCJ3Iix4dCxkbiksanQoInd3Iix4dCxBZSksanQoIlciLHh0LGRuKSxqdCgiV1ciLHh0LEFlKSx5dChbInciLCJ3dyIsIlciLCJXVyJdLGZ1bmN0aW9uKFRlLEtlLHB0LEF0KXtLZVtBdC5zdWJzdHIoMCwxKV09RXQoVGUpfSk7ZnVu''@;'; put 'put ''Y3Rpb24gVTAoVGUsS2Upe3JldHVybiBUZS5zbGljZShLZSw3KS5jb25jYXQoVGUuc2xpY2UoMCxLZSkpfWNlKCJkIiwwLCJkbyIsImRheSIpLGNlKCJkZCIsMCwwLGZ1bmN0aW9uKFRlKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyxUZSl9KSxjZSgiZGRkIiww''@;'; put 'put ''LDAsZnVuY3Rpb24oVGUpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsVGUpfSksY2UoImRkZGQiLDAsMCxmdW5jdGlvbihUZSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsVGUpfSksY2UoImUiLDAsMCwid2Vla2RheSIpLGNlKCJF''@;'; put 'put ''IiwwLDAsImlzb1dlZWtkYXkiKSxqdCgiZCIseHQpLGp0KCJlIix4dCksanQoIkUiLHh0KSxqdCgiZGQiLGZ1bmN0aW9uKFRlLEtlKXtyZXR1cm4gS2Uud2Vla2RheXNNaW5SZWdleChUZSl9KSxqdCgiZGRkIixmdW5jdGlvbihUZSxLZSl7cmV0dXJuIEtlLndlZWtkYXlzU2hvcnRSZWdleChU''@;'; put 'put ''ZSl9KSxqdCgiZGRkZCIsZnVuY3Rpb24oVGUsS2Upe3JldHVybiBLZS53ZWVrZGF5c1JlZ2V4KFRlKX0pLHl0KFsiZGQiLCJkZGQiLCJkZGRkIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe3ZhciBKdD1wdC5fbG9jYWxlLndlZWtkYXlzUGFyc2UoVGUsQXQscHQuX3N0cmljdCk7bnVsbCE9SnQ/''@;'; put 'put ''S2UuZD1KdDpCKHB0KS5pbnZhbGlkV2Vla2RheT1UZX0pLHl0KFsiZCIsImUiLCJFIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe0tlW0F0XT1FdChUZSl9KTt2YXIgcWw9IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIp''@;'; put 'put ''LE1sPSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksZTk9IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLEFmPWZ0LHNnPWZ0LGIxPWZ0O2Z1bmN0aW9uIGQyKFRlLEtlLHB0KXt2YXIgQXQsSnQsVm4sUHI9VGUudG9Mb2NhbGVMb3dlckNhc2UoKTtpZigh''@;'; put 'put ''dGhpcy5fd2Vla2RheXNQYXJzZSlmb3IodGhpcy5fd2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSxBdD0wO0F0PDc7KytBdClWbj16KFsyZTMsMV0pLmRheShBdCksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtBdF09''@;'; put 'put ''dGhpcy53ZWVrZGF5c01pbihWbiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbQXRdPXRoaXMud2Vla2RheXNTaG9ydChWbiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl93ZWVrZGF5c1BhcnNlW0F0XT10aGlzLndlZWtkYXlzKFZuLCIiKS50''@;'; put 'put ''b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBwdD8iZGRkZCI9PT1LZT8tMSE9PShKdD1MaS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsUHIpKT9KdDpudWxsOiJkZGQiPT09S2U/LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsUHIpKT9KdDpudWxsOi0xIT09KEp0''@;'; put 'put ''PUxpLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxQcikpP0p0Om51bGw6ImRkZGQiPT09S2U/LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFByKSl8fC0xIT09KEp0PUxpLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFByKSl8fC0xIT09KEp0PUxpLmNhbGwo''@;'; put 'put ''dGhpcy5fbWluV2Vla2RheXNQYXJzZSxQcikpP0p0Om51bGw6ImRkZCI9PT1LZT8tMSE9PShKdD1MaS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxQcikpfHwtMSE9PShKdD1MaS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsUHIpKXx8LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl9taW5X''@;'; put 'put ''ZWVrZGF5c1BhcnNlLFByKSk/SnQ6bnVsbDotMSE9PShKdD1MaS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsUHIpKXx8LTEhPT0oSnQ9TGkuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLFByKSl8fC0xIT09KEp0PUxpLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLFByKSk/SnQ6''@;'; put 'put ''bnVsbH1mdW5jdGlvbiBpcigpe2Z1bmN0aW9uIFRlKFljLFMxKXtyZXR1cm4gUzEubGVuZ3RoLVljLmxlbmd0aH12YXIgVm4sUHIscm8sSm8sSHMsS2U9W10scHQ9W10sQXQ9W10sSnQ9W107Zm9yKFZuPTA7Vm48NztWbisrKVByPXooWzJlMywxXSkuZGF5KFZuKSxybz1wbih0aGlzLndlZWtk''@;'; put 'put ''YXlzTWluKFByLCIiKSksSm89cG4odGhpcy53ZWVrZGF5c1Nob3J0KFByLCIiKSksSHM9cG4odGhpcy53ZWVrZGF5cyhQciwiIikpLEtlLnB1c2gocm8pLHB0LnB1c2goSm8pLEF0LnB1c2goSHMpLEp0LnB1c2gocm8pLEp0LnB1c2goSm8pLEp0LnB1c2goSHMpO0tlLnNvcnQoVGUpLHB0LnNv''@;'; put 'put ''cnQoVGUpLEF0LnNvcnQoVGUpLEp0LnNvcnQoVGUpLHRoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0p0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c01pblJlZ2V4PXRoaXMuX3dl''@;'; put 'put ''ZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrQXQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrcHQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3Ry''@;'; put 'put ''aWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK0tlLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBPZigpe3JldHVybiB0aGlzLmhvdXJzKCklMTJ8fDEyfWZ1bmN0aW9uIHF1KFRlLEtlKXtjZShUZSwwLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhp''@;'; put 'put ''cy5ob3VycygpLHRoaXMubWludXRlcygpLEtlKX0pfWZ1bmN0aW9uIEt1KFRlLEtlKXtyZXR1cm4gS2UuX21lcmlkaWVtUGFyc2V9Y2UoIkgiLFsiSEgiLDJdLDAsImhvdXIiKSxjZSgiaCIsWyJoaCIsMl0sMCxPZiksY2UoImsiLFsia2siLDJdLDAsZnVuY3Rpb24gc2koKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5ob3VycygpfHwyNH0pLGNlKCJobW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK09mLmFwcGx5KHRoaXMpK18odGhpcy5taW51dGVzKCksMil9KSxjZSgiaG1tc3MiLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK09mLmFwcGx5KHRoaXMpK18odGhpcy5taW51dGVzKCksMikrXyh0aGlzLnNl''@;'; put 'put ''Y29uZHMoKSwyKX0pLGNlKCJIbW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStfKHRoaXMubWludXRlcygpLDIpfSksY2UoIkhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkrXyh0aGlzLm1pbnV0ZXMoKSwyKStfKHRoaXMuc2Vjb25kcygp''@;'; put 'put ''LDIpfSkscXUoImEiLCEwKSxxdSgiQSIsITEpLGp0KCJhIixLdSksanQoIkEiLEt1KSxqdCgiSCIseHQsaG4pLGp0KCJoIix4dCxkbiksanQoImsiLHh0LGRuKSxqdCgiSEgiLHh0LEFlKSxqdCgiaGgiLHh0LEFlKSxqdCgia2siLHh0LEFlKSxqdCgiaG1tIixGdCksanQoImhtbXNzIixPdCks''@;'; put 'put ''anQoIkhtbSIsRnQpLGp0KCJIbW1zcyIsT3QpLFR0KFsiSCIsIkhIIl0scm4pLFR0KFsiayIsImtrIl0sZnVuY3Rpb24oVGUsS2UscHQpe3ZhciBBdD1FdChUZSk7S2Vbcm5dPTI0PT09QXQ/MDpBdH0pLFR0KFsiYSIsIkEiXSxmdW5jdGlvbihUZSxLZSxwdCl7cHQuX2lzUG09cHQuX2xvY2Fs''@;'; put 'put ''ZS5pc1BNKFRlKSxwdC5fbWVyaWRpZW09VGV9KSxUdChbImgiLCJoaCJdLGZ1bmN0aW9uKFRlLEtlLHB0KXtLZVtybl09RXQoVGUpLEIocHQpLmJpZ0hvdXI9ITB9KSxUdCgiaG1tIixmdW5jdGlvbihUZSxLZSxwdCl7dmFyIEF0PVRlLmxlbmd0aC0yO0tlW3JuXT1FdChUZS5zdWJzdHIoMCxB''@;'; put 'put ''dCkpLEtlW1BuXT1FdChUZS5zdWJzdHIoQXQpKSxCKHB0KS5iaWdIb3VyPSEwfSksVHQoImhtbXNzIixmdW5jdGlvbihUZSxLZSxwdCl7dmFyIEF0PVRlLmxlbmd0aC00LEp0PVRlLmxlbmd0aC0yO0tlW3JuXT1FdChUZS5zdWJzdHIoMCxBdCkpLEtlW1BuXT1FdChUZS5zdWJzdHIoQXQsMikp''@;'; put 'put ''LEtlW0NuXT1FdChUZS5zdWJzdHIoSnQpKSxCKHB0KS5iaWdIb3VyPSEwfSksVHQoIkhtbSIsZnVuY3Rpb24oVGUsS2UscHQpe3ZhciBBdD1UZS5sZW5ndGgtMjtLZVtybl09RXQoVGUuc3Vic3RyKDAsQXQpKSxLZVtQbl09RXQoVGUuc3Vic3RyKEF0KSl9KSxUdCgiSG1tc3MiLGZ1bmN0aW9u''@;'; put 'put ''KFRlLEtlLHB0KXt2YXIgQXQ9VGUubGVuZ3RoLTQsSnQ9VGUubGVuZ3RoLTI7S2Vbcm5dPUV0KFRlLnN1YnN0cigwLEF0KSksS2VbUG5dPUV0KFRlLnN1YnN0cihBdCwyKSksS2VbQ25dPUV0KFRlLnN1YnN0cihKdCkpfSk7dmFyIFpuPUFyKCJIb3VycyIsITApO3ZhciAkcixSaT17Y2FsZW5k''@;'; put 'put ''YXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1h''@;'; put 'put ''dDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixk''@;'; put 'put ''YXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixk''@;'; put 'put ''OiJhIGRheSIsZGQ6IiVkIGRheXMiLHc6ImEgd2VlayIsd3c6IiVkIHdlZWtzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG1vbnRoczpVbixtb250aHNTaG9ydDpYaSx3ZWVrOntkb3c6MCxkb3k6Nn0sd2Vla2RheXM6cWwsd2Vla2RheXNN''@;'; put 'put ''aW46ZTksd2Vla2RheXNTaG9ydDpNbCxtZXJpZGllbVBhcnNlOi9bYXBdXC4/bT9cLj8vaX0seG89e30sUGw9e307ZnVuY3Rpb24geGwoVGUsS2Upe3ZhciBwdCxBdD1NYXRoLm1pbihUZS5sZW5ndGgsS2UubGVuZ3RoKTtmb3IocHQ9MDtwdDxBdDtwdCs9MSlpZihUZVtwdF0hPT1LZVtwdF0p''@;'; put 'put ''cmV0dXJuIHB0O3JldHVybiBBdH1mdW5jdGlvbiBYdShUZSl7cmV0dXJuIFRlJiZUZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIil9ZnVuY3Rpb24geHIoVGUpe3ZhciBLZT1udWxsO2lmKHZvaWQgMD09PXhvW1RlXSYmUWUmJlFlLmV4cG9ydHMmJmZ1bmN0aW9uIHBsKFRlKXtyZXR1''@;'; put 'put ''cm4hKCFUZXx8IVRlLm1hdGNoKCJeW14vXFxcXF0qJCIpKX0oVGUpKXRyeXtLZT0kci5fYWJicixSKDM1MzU4KSgiLi8iK1RlKSxtYyhLZSl9Y2F0Y2h7eG9bVGVdPW51bGx9cmV0dXJuIHhvW1RlXX1mdW5jdGlvbiBtYyhUZSxLZSl7dmFyIHB0O3JldHVybiBUZSYmKChwdD1qKEtlKT9mMChU''@;'; put 'put ''ZSk6Y3UoVGUsS2UpKT8kcj1wdDp0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJMb2NhbGUgIitUZSsiIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8iKSksJHIuX2FiYnJ9ZnVuY3Rpb24gY3UoVGUsS2Upe2lmKG51bGwhPT1LZSl7''@;'; put 'put ''dmFyIHB0LEF0PVJpO2lmKEtlLmFiYnI9VGUsbnVsbCE9eG9bVGVdKVcoImRlZmluZUxvY2FsZU92ZXJyaWRlIiwidXNlIG1vbWVudC51cGRhdGVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSB0byBjaGFuZ2UgYW4gZXhpc3RpbmcgbG9jYWxlLiBtb21lbnQuZGVmaW5lTG9jYWxlKGxvY2Fs''@;'; put 'put ''ZU5hbWUsIGNvbmZpZykgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgbG9jYWxlIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RlZmluZS1sb2NhbGUvIGZvciBtb3JlIGluZm8uIiksQXQ9eG9bVGVdLl9jb25maWc7ZWxzZSBpZihudWxs''@;'; put 'put ''IT1LZS5wYXJlbnRMb2NhbGUpaWYobnVsbCE9eG9bS2UucGFyZW50TG9jYWxlXSlBdD14b1tLZS5wYXJlbnRMb2NhbGVdLl9jb25maWc7ZWxzZXtpZihudWxsPT0ocHQ9eHIoS2UucGFyZW50TG9jYWxlKSkpcmV0dXJuIFBsW0tlLnBhcmVudExvY2FsZV18fChQbFtLZS5wYXJlbnRMb2NhbGVd''@;'; put 'put ''PVtdKSxQbFtLZS5wYXJlbnRMb2NhbGVdLnB1c2goe25hbWU6VGUsY29uZmlnOktlfSksbnVsbDtBdD1wdC5fY29uZmlnfXJldHVybiB4b1tUZV09bmV3IEgoRihBdCxLZSkpLFBsW1RlXSYmUGxbVGVdLmZvckVhY2goZnVuY3Rpb24oSnQpe2N1KEp0Lm5hbWUsSnQuY29uZmlnKX0pLG1jKFRl''@;'; put 'put ''KSx4b1tUZV19cmV0dXJuIGRlbGV0ZSB4b1tUZV0sbnVsbH1mdW5jdGlvbiBmMChUZSl7dmFyIEtlO2lmKFRlJiZUZS5fbG9jYWxlJiZUZS5fbG9jYWxlLl9hYmJyJiYoVGU9VGUuX2xvY2FsZS5fYWJiciksIVRlKXJldHVybiAkcjtpZighc2UoVGUpKXtpZihLZT14cihUZSkpcmV0dXJuIEtl''@;'; put 'put ''O1RlPVtUZV19cmV0dXJuIGZ1bmN0aW9uIGdzKFRlKXtmb3IodmFyIHB0LEF0LEp0LFZuLEtlPTA7S2U8VGUubGVuZ3RoOyl7Zm9yKHB0PShWbj1YdShUZVtLZV0pLnNwbGl0KCItIikpLmxlbmd0aCxBdD0oQXQ9WHUoVGVbS2UrMV0pKT9BdC5zcGxpdCgiLSIpOm51bGw7cHQ+MDspe2lmKEp0''@;'; put 'put ''PXhyKFZuLnNsaWNlKDAscHQpLmpvaW4oIi0iKSkpcmV0dXJuIEp0O2lmKEF0JiZBdC5sZW5ndGg+PXB0JiZ4bChWbixBdCk+PXB0LTEpYnJlYWs7cHQtLX1LZSsrfXJldHVybiAkcn0oVGUpfWZ1bmN0aW9uIHRkKFRlKXt2YXIgS2UscHQ9VGUuX2E7cmV0dXJuIHB0JiYtMj09PUIoVGUpLm92''@;'; put 'put ''ZXJmbG93JiYoS2U9cHRbX25dPDB8fHB0W19uXT4xMT9fbjpwdFtPbl08MXx8cHRbT25dPmxvKHB0W3p0XSxwdFtfbl0pP09uOnB0W3JuXTwwfHxwdFtybl0+MjR8fDI0PT09cHRbcm5dJiYoMCE9PXB0W1BuXXx8MCE9PXB0W0NuXXx8MCE9PXB0W1h0XSk/cm46cHRbUG5dPDB8fHB0W1BuXT41''@;'; put 'put ''OT9QbjpwdFtDbl08MHx8cHRbQ25dPjU5P0NuOnB0W1h0XTwwfHxwdFtYdF0+OTk5P1h0Oi0xLEIoVGUpLl9vdmVyZmxvd0RheU9mWWVhciYmKEtlPHp0fHxLZT5PbikmJihLZT1PbiksQihUZSkuX292ZXJmbG93V2Vla3MmJi0xPT09S2UmJihLZT1KbiksQihUZSkuX292ZXJmbG93V2Vla2Rh''@;'; put 'put ''eSYmLTE9PT1LZSYmKEtlPXhpKSxCKFRlKS5vdmVyZmxvdz1LZSksVGV9dmFyIGgyPS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSktKD86XGRcZC1cZFxkfFdcZFxkLVxkfFdcZFxkfFxkXGRcZHxcZFxkKSkoPzooVHwgKShcZFxkKD86OlxkXGQoPzo6XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsr''@;'; put 'put ''LV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxQZj0vXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0pKD86XGRcZFxkXGR8V1xkXGRcZHxXXGRcZHxcZFxkXGR8XGRcZHwpKSg/OihUfCApKFxkXGQoPzpcZFxkKD86XGRcZCg/OlsuLF1cZCspPyk/KT8pKFsrLV1cZFxkKD86Oj9cZFxkKT98XHMq''@;'; put 'put ''Wik/KT8kLyxFNT0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/LyxuZD1bWyJZWVlZWVktTU0tREQiLC9bKy1dXGR7Nn0tXGRcZC1cZFxkL10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGRcZC1cZFxkL10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGRcZC1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9''@;'; put 'put ''LVdcZFxkLywhMV0sWyJZWVlZLURERCIsL1xkezR9LVxkezN9L10sWyJZWVlZLU1NIiwvXGR7NH0tXGRcZC8sITFdLFsiWVlZWVlZTU1ERCIsL1srLV1cZHsxMH0vXSxbIllZWVlNTUREIiwvXGR7OH0vXSxbIkdHR0dbV11XV0UiLC9cZHs0fVdcZHszfS9dLFsiR0dHR1tXXVdXIiwvXGR7NH1X''@;'; put 'put ''XGR7Mn0vLCExXSxbIllZWVlEREQiLC9cZHs3fS9dLFsiWVlZWU1NIiwvXGR7Nn0vLCExXSxbIllZWVkiLC9cZHs0fS8sITFdXSxicz1bWyJISDptbTpzcy5TU1NTIiwvXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MsU1NTUyIsL1xkXGQ6XGRcZDpcZFxkLFxkKy9dLFsiSEg6bW06''@;'; put 'put ''c3MiLC9cZFxkOlxkXGQ6XGRcZC9dLFsiSEg6bW0iLC9cZFxkOlxkXGQvXSxbIkhIbW1zcy5TU1NTIiwvXGRcZFxkXGRcZFxkXC5cZCsvXSxbIkhIbW1zcyxTU1NTIiwvXGRcZFxkXGRcZFxkLFxkKy9dLFsiSEhtbXNzIiwvXGRcZFxkXGRcZFxkL10sWyJISG1tIiwvXGRcZFxkXGQvXSxbIkhI''@;'; put 'put ''IiwvXGRcZC9dXSx2cD0vXlwvP0RhdGVcKCgtP1xkKykvaSxuOT0vXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9ccyk/KFxkezEsMn0pXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXHMoXGR7Miw0fSlccyhcZFxkKTooXGRcZCko''@;'; put 'put ''Pzo6KFxkXGQpKT9ccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoWystXVxkezR9KSkkLywkbz17VVQ6MCxHTVQ6MCxFRFQ6LTI0MCxFU1Q6LTMwMCxDRFQ6LTMwMCxDU1Q6LTM2MCxNRFQ6LTM2MCxNU1Q6LTQyMCxQRFQ6LTQyMCxQU1Q6LTQ4MH07ZnVuY3Rpb24geW8oVGUpe3Zh''@;'; put 'put ''ciBLZSxwdCxWbixQcixybyxKbyxBdD1UZS5faSxKdD1oMi5leGVjKEF0KXx8UGYuZXhlYyhBdCksSHM9bmQubGVuZ3RoLFljPWJzLmxlbmd0aDtpZihKdCl7Zm9yKEIoVGUpLmlzbz0hMCxLZT0wLHB0PUhzO0tlPHB0O0tlKyspaWYobmRbS2VdWzFdLmV4ZWMoSnRbMV0pKXtQcj1uZFtLZV1b''@;'; put 'put ''MF0sVm49ITEhPT1uZFtLZV1bMl07YnJlYWt9aWYobnVsbD09UHIpcmV0dXJuIHZvaWQoVGUuX2lzVmFsaWQ9ITEpO2lmKEp0WzNdKXtmb3IoS2U9MCxwdD1ZYztLZTxwdDtLZSsrKWlmKGJzW0tlXVsxXS5leGVjKEp0WzNdKSl7cm89KEp0WzJdfHwiICIpK2JzW0tlXVswXTticmVha31pZihu''@;'; put 'put ''dWxsPT1ybylyZXR1cm4gdm9pZChUZS5faXNWYWxpZD0hMSl9aWYoIVZuJiZudWxsIT1ybylyZXR1cm4gdm9pZChUZS5faXNWYWxpZD0hMSk7aWYoSnRbNF0pe2lmKCFFNS5leGVjKEp0WzRdKSlyZXR1cm4gdm9pZChUZS5faXNWYWxpZD0hMSk7Sm89IloifVRlLl9mPVByKyhyb3x8IiIpKyhK''@;'; put 'put ''b3x8IiIpLF9wKFRlKX1lbHNlIFRlLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIF95KFRlKXt2YXIgS2U9cGFyc2VJbnQoVGUsMTApO3JldHVybiBLZTw9NDk/MmUzK0tlOktlPD05OTk/MTkwMCtLZTpLZX1mdW5jdGlvbiBhYShUZSl7dmFyIHB0LEtlPW45LmV4ZWMoZnVuY3Rpb24gYnkoVGUpe3Jl''@;'; put 'put ''dHVybiBUZS5yZXBsYWNlKC9cKFteKCldKlwpfFtcblx0XS9nLCIgIikucmVwbGFjZSgvKFxzXHMrKS9nLCIgIikucmVwbGFjZSgvXlxzXHMqLywiIikucmVwbGFjZSgvXHNccyokLywiIil9KFRlLl9pKSk7aWYoS2Upe2lmKHB0PWZ1bmN0aW9uIHZUKFRlLEtlLHB0LEF0LEp0LFZuKXt2YXIg''@;'; put 'put ''UHI9W195KFRlKSxYaS5pbmRleE9mKEtlKSxwYXJzZUludChwdCwxMCkscGFyc2VJbnQoQXQsMTApLHBhcnNlSW50KEp0LDEwKV07cmV0dXJuIFZuJiZQci5wdXNoKHBhcnNlSW50KFZuLDEwKSksUHJ9KEtlWzRdLEtlWzNdLEtlWzJdLEtlWzVdLEtlWzZdLEtlWzddKSwhZnVuY3Rpb24ga3Mo''@;'; put 'put ''VGUsS2UscHQpe3JldHVybiFUZXx8TWwuaW5kZXhPZihUZSk9PT1uZXcgRGF0ZShLZVswXSxLZVsxXSxLZVsyXSkuZ2V0RGF5KCl8fChCKHB0KS53ZWVrZGF5TWlzbWF0Y2g9ITAscHQuX2lzVmFsaWQ9ITEsITEpfShLZVsxXSxwdCxUZSkpcmV0dXJuO1RlLl9hPXB0LFRlLl90em09ZnVuY3Rp''@;'; put 'put ''b24gQWkoVGUsS2UscHQpe2lmKFRlKXJldHVybiAkb1tUZV07aWYoS2UpcmV0dXJuIDA7dmFyIEF0PXBhcnNlSW50KHB0LDEwKSxKdD1BdCUxMDA7cmV0dXJuKEF0LUp0KS8xMDAqNjArSnR9KEtlWzhdLEtlWzldLEtlWzEwXSksVGUuX2Q9JGQuYXBwbHkobnVsbCxUZS5fYSksVGUuX2Quc2V0''@;'; put 'put ''VVRDTWludXRlcyhUZS5fZC5nZXRVVENNaW51dGVzKCktVGUuX3R6bSksQihUZSkucmZjMjgyMj0hMH1lbHNlIFRlLl9pc1ZhbGlkPSExfWZ1bmN0aW9uIFJvKFRlLEtlLHB0KXtyZXR1cm4gVGU/P0tlPz9wdH1mdW5jdGlvbiBJYShUZSl7dmFyIEtlLHB0LEp0LFZuLFByLEF0PVtdO2lmKCFU''@;'; put 'put ''ZS5fZCl7Zm9yKEp0PWZ1bmN0aW9uIHVnKFRlKXt2YXIgS2U9bmV3IERhdGUoeC5ub3coKSk7cmV0dXJuIFRlLl91c2VVVEM/W0tlLmdldFVUQ0Z1bGxZZWFyKCksS2UuZ2V0VVRDTW9udGgoKSxLZS5nZXRVVENEYXRlKCldOltLZS5nZXRGdWxsWWVhcigpLEtlLmdldE1vbnRoKCksS2UuZ2V0''@;'; put 'put ''RGF0ZSgpXX0oVGUpLFRlLl93JiZudWxsPT1UZS5fYVtPbl0mJm51bGw9PVRlLl9hW19uXSYmZnVuY3Rpb24gcmQoVGUpe3ZhciBLZSxwdCxBdCxKdCxWbixQcixybyxKbyxIcztudWxsIT0oS2U9VGUuX3cpLkdHfHxudWxsIT1LZS5XfHxudWxsIT1LZS5FPyhWbj0xLFByPTQscHQ9Um8oS2Uu''@;'; put 'put ''R0csVGUuX2FbenRdLGF1KHlhKCksMSw0KS55ZWFyKSxBdD1SbyhLZS5XLDEpLCgoSnQ9Um8oS2UuRSwxKSk8MXx8SnQ+NykmJihKbz0hMCkpOihWbj1UZS5fbG9jYWxlLl93ZWVrLmRvdyxQcj1UZS5fbG9jYWxlLl93ZWVrLmRveSxIcz1hdSh5YSgpLFZuLFByKSxwdD1SbyhLZS5nZyxUZS5f''@;'; put 'put ''YVt6dF0sSHMueWVhciksQXQ9Um8oS2UudyxIcy53ZWVrKSxudWxsIT1LZS5kPygoSnQ9S2UuZCk8MHx8SnQ+NikmJihKbz0hMCk6bnVsbCE9S2UuZT8oSnQ9S2UuZStWbiwoS2UuZTwwfHxLZS5lPjYpJiYoSm89ITApKTpKdD1WbiksQXQ8MXx8QXQ+X3IocHQsVm4sUHIpP0IoVGUpLl9vdmVy''@;'; put 'put ''Zmxvd1dlZWtzPSEwOm51bGwhPUpvP0IoVGUpLl9vdmVyZmxvd1dlZWtkYXk9ITA6KHJvPWNvKHB0LEF0LEp0LFZuLFByKSxUZS5fYVt6dF09cm8ueWVhcixUZS5fZGF5T2ZZZWFyPXJvLmRheU9mWWVhcil9KFRlKSxudWxsIT1UZS5fZGF5T2ZZZWFyJiYoUHI9Um8oVGUuX2FbenRdLEp0W3p0''@;'; put 'put ''XSksKFRlLl9kYXlPZlllYXI+YW4oUHIpfHwwPT09VGUuX2RheU9mWWVhcikmJihCKFRlKS5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLHB0PSRkKFByLDAsVGUuX2RheU9mWWVhciksVGUuX2FbX25dPXB0LmdldFVUQ01vbnRoKCksVGUuX2FbT25dPXB0LmdldFVUQ0RhdGUoKSksS2U9MDtLZTwz''@;'; put 'put ''JiZudWxsPT1UZS5fYVtLZV07KytLZSlUZS5fYVtLZV09QXRbS2VdPUp0W0tlXTtmb3IoO0tlPDc7S2UrKylUZS5fYVtLZV09QXRbS2VdPW51bGw9PVRlLl9hW0tlXT8yPT09S2U/MTowOlRlLl9hW0tlXTsyND09PVRlLl9hW3JuXSYmMD09PVRlLl9hW1BuXSYmMD09PVRlLl9hW0NuXSYmMD09''@;'; put 'put ''PVRlLl9hW1h0XSYmKFRlLl9uZXh0RGF5PSEwLFRlLl9hW3JuXT0wKSxUZS5fZD0oVGUuX3VzZVVUQz8kZDpCcykuYXBwbHkobnVsbCxBdCksVm49VGUuX3VzZVVUQz9UZS5fZC5nZXRVVENEYXkoKTpUZS5fZC5nZXREYXkoKSxudWxsIT1UZS5fdHptJiZUZS5fZC5zZXRVVENNaW51dGVzKFRl''@;'; put 'put ''Ll9kLmdldFVUQ01pbnV0ZXMoKS1UZS5fdHptKSxUZS5fbmV4dERheSYmKFRlLl9hW3JuXT0yNCksVGUuX3cmJnR5cGVvZiBUZS5fdy5kPCJ1IiYmVGUuX3cuZCE9PVZuJiYoQihUZSkud2Vla2RheU1pc21hdGNoPSEwKX19ZnVuY3Rpb24gX3AoVGUpe2lmKFRlLl9mIT09eC5JU09fODYwMSlp''@;'; put 'put ''ZihUZS5fZiE9PXguUkZDXzI4MjIpe1RlLl9hPVtdLEIoVGUpLmVtcHR5PSEwO3ZhciBwdCxBdCxKdCxWbixQcixIcyxZYyxLZT0iIitUZS5faSxybz1LZS5sZW5ndGgsSm89MDtmb3IoWWM9KEp0PUhlKFRlLl9mLFRlLl9sb2NhbGUpLm1hdGNoKHApfHxbXSkubGVuZ3RoLHB0PTA7cHQ8WWM7''@;'; put 'put ''cHQrKykoQXQ9KEtlLm1hdGNoKG10KFZuPUp0W3B0XSxUZSkpfHxbXSlbMF0pJiYoKFByPUtlLnN1YnN0cigwLEtlLmluZGV4T2YoQXQpKSkubGVuZ3RoPjAmJkIoVGUpLnVudXNlZElucHV0LnB1c2goUHIpLEtlPUtlLnNsaWNlKEtlLmluZGV4T2YoQXQpK0F0Lmxlbmd0aCksSm8rPUF0Lmxl''@;'; put 'put ''bmd0aCksdGVbVm5dPyhBdD9CKFRlKS5lbXB0eT0hMTpCKFRlKS51bnVzZWRUb2tlbnMucHVzaChWbiksJHQoVm4sQXQsVGUpKTpUZS5fc3RyaWN0JiYhQXQmJkIoVGUpLnVudXNlZFRva2Vucy5wdXNoKFZuKTtCKFRlKS5jaGFyc0xlZnRPdmVyPXJvLUpvLEtlLmxlbmd0aD4wJiZCKFRlKS51''@;'; put 'put ''bnVzZWRJbnB1dC5wdXNoKEtlKSxUZS5fYVtybl08PTEyJiYhMD09PUIoVGUpLmJpZ0hvdXImJlRlLl9hW3JuXT4wJiYoQihUZSkuYmlnSG91cj12b2lkIDApLEIoVGUpLnBhcnNlZERhdGVQYXJ0cz1UZS5fYS5zbGljZSgwKSxCKFRlKS5tZXJpZGllbT1UZS5fbWVyaWRpZW0sVGUuX2Fbcm5d''@;'; put 'put ''PWZ1bmN0aW9uIGJwKFRlLEtlLHB0KXt2YXIgQXQ7cmV0dXJuIG51bGw9PXB0P0tlOm51bGwhPVRlLm1lcmlkaWVtSG91cj9UZS5tZXJpZGllbUhvdXIoS2UscHQpOihudWxsIT1UZS5pc1BNJiYoKEF0PVRlLmlzUE0ocHQpKSYmS2U8MTImJihLZSs9MTIpLCFBdCYmMTI9PT1LZSYmKEtlPTAp''@;'; put 'put ''KSxLZSl9KFRlLl9sb2NhbGUsVGUuX2Fbcm5dLFRlLl9tZXJpZGllbSksbnVsbCE9PShIcz1CKFRlKS5lcmEpJiYoVGUuX2FbenRdPVRlLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKEhzLFRlLl9hW3p0XSkpLElhKFRlKSx0ZChUZSl9ZWxzZSBhYShUZSk7ZWxzZSB5byhUZSl9ZnVuY3Rpb24g''@;'; put 'put ''cjkoVGUpe3ZhciBLZT1UZS5faSxwdD1UZS5fZjtyZXR1cm4gVGUuX2xvY2FsZT1UZS5fbG9jYWxlfHxmMChUZS5fbCksbnVsbD09PUtlfHx2b2lkIDA9PT1wdCYmIiI9PT1LZT9VKHtudWxsSW5wdXQ6ITB9KTooInN0cmluZyI9PXR5cGVvZiBLZSYmKFRlLl9pPUtlPVRlLl9sb2NhbGUucHJl''@;'; put 'put ''cGFyc2UoS2UpKSxpZShLZSk/bmV3IHJlKHRkKEtlKSk6KEQoS2UpP1RlLl9kPUtlOnNlKHB0KT9mdW5jdGlvbiBwMChUZSl7dmFyIEtlLHB0LEF0LEp0LFZuLFByLHJvPSExLEpvPVRlLl9mLmxlbmd0aDtpZigwPT09Sm8pcmV0dXJuIEIoVGUpLmludmFsaWRGb3JtYXQ9ITAsdm9pZChUZS5f''@;'; put 'put ''ZD1uZXcgRGF0ZShOYU4pKTtmb3IoSnQ9MDtKdDxKbztKdCsrKVZuPTAsUHI9ITEsS2U9ZWUoe30sVGUpLG51bGwhPVRlLl91c2VVVEMmJihLZS5fdXNlVVRDPVRlLl91c2VVVEMpLEtlLl9mPVRlLl9mW0p0XSxfcChLZSksWShLZSkmJihQcj0hMCksVm4rPUIoS2UpLmNoYXJzTGVmdE92ZXIs''@;'; put 'put ''Vm4rPTEwKkIoS2UpLnVudXNlZFRva2Vucy5sZW5ndGgsQihLZSkuc2NvcmU9Vm4scm8/Vm48QXQmJihBdD1WbixwdD1LZSk6KG51bGw9PUF0fHxWbjxBdHx8UHIpJiYoQXQ9Vm4scHQ9S2UsUHImJihybz0hMCkpO0UoVGUscHR8fEtlKX0oVGUpOnB0P19wKFRlKTpmdW5jdGlvbiB5eShUZSl7''@;'; put 'put ''dmFyIEtlPVRlLl9pO2ooS2UpP1RlLl9kPW5ldyBEYXRlKHgubm93KCkpOkQoS2UpP1RlLl9kPW5ldyBEYXRlKEtlLnZhbHVlT2YoKSk6InN0cmluZyI9PXR5cGVvZiBLZT9mdW5jdGlvbiBEaShUZSl7dmFyIEtlPXZwLmV4ZWMoVGUuX2kpO251bGw9PT1LZT8oeW8oVGUpLCExPT09VGUuX2lz''@;'; put 'put ''VmFsaWQmJihkZWxldGUgVGUuX2lzVmFsaWQsYWEoVGUpLCExPT09VGUuX2lzVmFsaWQmJihkZWxldGUgVGUuX2lzVmFsaWQsVGUuX3N0cmljdD9UZS5faXNWYWxpZD0hMTp4LmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKFRlKSkpKTpUZS5fZD1uZXcgRGF0ZSgrS2VbMV0pfShUZSk6c2UoS2Up''@;'; put 'put ''PyhUZS5fYT1UKEtlLnNsaWNlKDApLGZ1bmN0aW9uKHB0KXtyZXR1cm4gcGFyc2VJbnQocHQsMTApfSksSWEoVGUpKTpNKEtlKT9mdW5jdGlvbiBrYyhUZSl7aWYoIVRlLl9kKXt2YXIgS2U9dHQoVGUuX2kpO1RlLl9hPVQoW0tlLnllYXIsS2UubW9udGgsdm9pZCAwPT09S2UuZGF5P0tlLmRh''@;'; put 'put ''dGU6S2UuZGF5LEtlLmhvdXIsS2UubWludXRlLEtlLnNlY29uZCxLZS5taWxsaXNlY29uZF0sZnVuY3Rpb24oQXQpe3JldHVybiBBdCYmcGFyc2VJbnQoQXQsMTApfSksSWEoVGUpfX0oVGUpOkcoS2UpP1RlLl9kPW5ldyBEYXRlKEtlKTp4LmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKFRlKX0o''@;'; put 'put ''VGUpLFkoVGUpfHwoVGUuX2Q9bnVsbCksVGUpKX1mdW5jdGlvbiBpOShUZSxLZSxwdCxBdCxKdCl7dmFyIFZuPXt9O3JldHVybighMD09PUtlfHwhMT09PUtlKSYmKEF0PUtlLEtlPXZvaWQgMCksKCEwPT09cHR8fCExPT09cHQpJiYoQXQ9cHQscHQ9dm9pZCAwKSwoTShUZSkmJkkoVGUpfHxz''@;'; put 'put ''ZShUZSkmJjA9PT1UZS5sZW5ndGgpJiYoVGU9dm9pZCAwKSxWbi5faXNBTW9tZW50T2JqZWN0PSEwLFZuLl91c2VVVEM9Vm4uX2lzVVRDPUp0LFZuLl9sPXB0LFZuLl9pPVRlLFZuLl9mPUtlLFZuLl9zdHJpY3Q9QXQsZnVuY3Rpb24gS2woVGUpe3ZhciBLZT1uZXcgcmUodGQocjkoVGUpKSk7''@;'; put 'put ''cmV0dXJuIEtlLl9uZXh0RGF5JiYoS2UuYWRkKDEsImQiKSxLZS5fbmV4dERheT12b2lkIDApLEtlfShWbil9ZnVuY3Rpb24geWEoVGUsS2UscHQsQXQpe3JldHVybiBpOShUZSxLZSxwdCxBdCwhMSl9eC5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1sZSgidmFsdWUgcHJvdmlkZWQgaXMgbm90''@;'; put 'put ''IGluIGEgcmVjb2duaXplZCBSRkMyODIyIG9yIElTTyBmb3JtYXQuIG1vbWVudCBjb25zdHJ1Y3Rpb24gZmFsbHMgYmFjayB0byBqcyBEYXRlKCksIHdoaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9y''@;'; put 'put ''bWF0cyBhcmUgZGlzY291cmFnZWQuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uIixmdW5jdGlvbihUZSl7VGUuX2Q9bmV3IERhdGUoVGUuX2krKFRlLl91c2VVVEM/IiBVVEMiOiIiKSl9KSx4LklT''@;'; put 'put ''T184NjAxPWZ1bmN0aW9uKCl7fSx4LlJGQ18yODIyPWZ1bmN0aW9uKCl7fTt2YXIgRmY9bGUoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigp''@;'; put 'put ''e3ZhciBUZT15YS5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZUZS5pc1ZhbGlkKCk/VGU8dGhpcz90aGlzOlRlOlUoKX0pLHd5PWxlKCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpz''@;'; put 'put ''LmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgVGU9eWEuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0aGlzLmlzVmFsaWQoKSYmVGUuaXNWYWxpZCgpP1RlPnRoaXM/dGhpczpUZTpVKCl9KTtmdW5jdGlvbiBpZChUZSxLZSl7dmFyIHB0LEF0O2lm''@;'; put 'put ''KDE9PT1LZS5sZW5ndGgmJnNlKEtlWzBdKSYmKEtlPUtlWzBdKSwhS2UubGVuZ3RoKXJldHVybiB5YSgpO2ZvcihwdD1LZVswXSxBdD0xO0F0PEtlLmxlbmd0aDsrK0F0KSghS2VbQXRdLmlzVmFsaWQoKXx8S2VbQXRdW1RlXShwdCkpJiYocHQ9S2VbQXRdKTtyZXR1cm4gcHR9dmFyIFpyPVsi''@;'; put 'put ''eWVhciIsInF1YXJ0ZXIiLCJtb250aCIsIndlZWsiLCJkYXkiLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiXTtmdW5jdGlvbiBmMihUZSl7dmFyIEtlPXR0KFRlKSxwdD1LZS55ZWFyfHwwLEF0PUtlLnF1YXJ0ZXJ8fDAsSnQ9S2UubW9udGh8fDAsVm49S2Uud2Vla3x8''@;'; put 'put ''S2UuaXNvV2Vla3x8MCxQcj1LZS5kYXl8fDAscm89S2UuaG91cnx8MCxKbz1LZS5taW51dGV8fDAsSHM9S2Uuc2Vjb25kfHwwLFljPUtlLm1pbGxpc2Vjb25kfHwwO3RoaXMuX2lzVmFsaWQ9ZnVuY3Rpb24gZGcoVGUpe3ZhciBLZSxBdCxwdD0hMSxKdD1aci5sZW5ndGg7Zm9yKEtlIGluIFRl''@;'; put 'put ''KWlmKE8oVGUsS2UpJiYoLTE9PT1MaS5jYWxsKFpyLEtlKXx8bnVsbCE9VGVbS2VdJiZpc05hTihUZVtLZV0pKSlyZXR1cm4hMTtmb3IoQXQ9MDtBdDxKdDsrK0F0KWlmKFRlW1pyW0F0XV0pe2lmKHB0KXJldHVybiExO3BhcnNlRmxvYXQoVGVbWnJbQXRdXSkhPT1FdChUZVtacltBdF1dKSYm''@;'; put 'put ''KHB0PSEwKX1yZXR1cm4hMH0oS2UpLHRoaXMuX21pbGxpc2Vjb25kcz0rWWMrMWUzKkhzKzZlNCpKbysxZTMqcm8qNjAqNjAsdGhpcy5fZGF5cz0rUHIrNypWbix0aGlzLl9tb250aHM9K0p0KzMqQXQrMTIqcHQsdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9ZjAoKSx0aGlzLl9idWJibGUo''@;'; put 'put ''KX1mdW5jdGlvbiBmZyhUZSl7cmV0dXJuIFRlIGluc3RhbmNlb2YgZjJ9ZnVuY3Rpb24geXAoVGUpe3JldHVybiBUZTwwPy0xKk1hdGgucm91bmQoLTEqVGUpOk1hdGgucm91bmQoVGUpfWZ1bmN0aW9uIFkwKFRlLEtlKXtjZShUZSwwLDAsZnVuY3Rpb24oKXt2YXIgcHQ9dGhpcy51dGNPZmZz''@;'; put 'put ''ZXQoKSxBdD0iKyI7cmV0dXJuIHB0PDAmJihwdD0tcHQsQXQ9Ii0iKSxBdCtfKH5+KHB0LzYwKSwyKStLZStfKH5+cHQlNjAsMil9KX1ZMCgiWiIsIjoiKSxZMCgiWloiLCIiKSxqdCgiWiIsR24pLGp0KCJaWiIsR24pLFR0KFsiWiIsIlpaIl0sZnVuY3Rpb24oVGUsS2UscHQpe3B0Ll91c2VV''@;'; put 'put ''VEM9ITAscHQuX3R6bT15MShHbixUZSl9KTt2YXIgbzk9LyhbXCtcLV18XGRcZCkvZ2k7ZnVuY3Rpb24geTEoVGUsS2Upe3ZhciBKdCxWbixwdD0oS2V8fCIiKS5tYXRjaChUZSk7cmV0dXJuIG51bGw9PT1wdD9udWxsOjA9PT0oVm49NjAqKEp0PSgocHRbcHQubGVuZ3RoLTFdfHxbXSkrIiIp''@;'; put 'put ''Lm1hdGNoKG85KXx8WyItIiwwLDBdKVsxXStFdChKdFsyXSkpPzA6IisiPT09SnRbMF0/Vm46LVZufWZ1bmN0aW9uIFQ1KFRlLEtlKXt2YXIgcHQsQXQ7cmV0dXJuIEtlLl9pc1VUQz8ocHQ9S2UuY2xvbmUoKSxBdD0oaWUoVGUpfHxEKFRlKT9UZS52YWx1ZU9mKCk6eWEoVGUpLnZhbHVlT2Yo''@;'; put 'put ''KSktcHQudmFsdWVPZigpLHB0Ll9kLnNldFRpbWUocHQuX2QudmFsdWVPZigpK0F0KSx4LnVwZGF0ZU9mZnNldChwdCwhMSkscHQpOnlhKFRlKS5sb2NhbCgpfWZ1bmN0aW9uIEFjKFRlKXtyZXR1cm4tTWF0aC5yb3VuZChUZS5fZC5nZXRUaW1lem9uZU9mZnNldCgpKX1mdW5jdGlvbiBOdSgp''@;'; put 'put ''e3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDJiYwPT09dGhpcy5fb2Zmc2V0fXgudXBkYXRlT2Zmc2V0PWZ1bmN0aW9uKCl7fTt2YXIgazU9L14oLXxcKyk/KD86KFxkKilbLiBdKT8oXGQrKTooXGQrKSg/OjooXGQrKShcLlxkKik/KT8kLyxRZD0vXigtfFwrKT9QKD86KFst''@;'; put 'put ''K10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87ZnVuY3Rpb24gYWwoVGUs''@;'; put 'put ''S2Upe3ZhciBKdCxWbixQcixwdD1UZSxBdD1udWxsO3JldHVybiBmZyhUZSk/cHQ9e21zOlRlLl9taWxsaXNlY29uZHMsZDpUZS5fZGF5cyxNOlRlLl9tb250aHN9OkcoVGUpfHwhaXNOYU4oK1RlKT8ocHQ9e30sS2U/cHRbS2VdPStUZTpwdC5taWxsaXNlY29uZHM9K1RlKTooQXQ9azUuZXhl''@;'; put 'put ''YyhUZSkpPyhKdD0iLSI9PT1BdFsxXT8tMToxLHB0PXt5OjAsZDpFdChBdFtPbl0pKkp0LGg6RXQoQXRbcm5dKSpKdCxtOkV0KEF0W1BuXSkqSnQsczpFdChBdFtDbl0pKkp0LG1zOkV0KHlwKDFlMypBdFtYdF0pKSpKdH0pOihBdD1RZC5leGVjKFRlKSk/cHQ9e3k6VzAoQXRbMl0sSnQ9Ii0i''@;'; put 'put ''PT09QXRbMV0/LTE6MSksTTpXMChBdFszXSxKdCksdzpXMChBdFs0XSxKdCksZDpXMChBdFs1XSxKdCksaDpXMChBdFs2XSxKdCksbTpXMChBdFs3XSxKdCksczpXMChBdFs4XSxKdCl9Om51bGw9PXB0P3B0PXt9OiJvYmplY3QiPT10eXBlb2YgcHQmJigiZnJvbSJpbiBwdHx8InRvImluIHB0''@;'; put 'put ''KSYmKFByPWZ1bmN0aW9uIEFzKFRlLEtlKXt2YXIgcHQ7cmV0dXJuIFRlLmlzVmFsaWQoKSYmS2UuaXNWYWxpZCgpPyhLZT1UNShLZSxUZSksVGUuaXNCZWZvcmUoS2UpP3B0PUp1KFRlLEtlKTooKHB0PUp1KEtlLFRlKSkubWlsbGlzZWNvbmRzPS1wdC5taWxsaXNlY29uZHMscHQubW9udGhz''@;'; put 'put ''PS1wdC5tb250aHMpLHB0KTp7bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9fSh5YShwdC5mcm9tKSx5YShwdC50bykpLChwdD17fSkubXM9UHIubWlsbGlzZWNvbmRzLHB0Lk09UHIubW9udGhzKSxWbj1uZXcgZjIocHQpLGZnKFRlKSYmTyhUZSwiX2xvY2FsZSIpJiYoVm4uX2xvY2FsZT1UZS5f''@;'; put 'put ''bG9jYWxlKSxmZyhUZSkmJk8oVGUsIl9pc1ZhbGlkIikmJihWbi5faXNWYWxpZD1UZS5faXNWYWxpZCksVm59ZnVuY3Rpb24gVzAoVGUsS2Upe3ZhciBwdD1UZSYmcGFyc2VGbG9hdChUZS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4ocHQpPzA6cHQpKktlfWZ1bmN0aW9uIEp1KFRl''@;'; put 'put ''LEtlKXt2YXIgcHQ9e307cmV0dXJuIHB0Lm1vbnRocz1LZS5tb250aCgpLVRlLm1vbnRoKCkrMTIqKEtlLnllYXIoKS1UZS55ZWFyKCkpLFRlLmNsb25lKCkuYWRkKHB0Lm1vbnRocywiTSIpLmlzQWZ0ZXIoS2UpJiYtLXB0Lm1vbnRocyxwdC5taWxsaXNlY29uZHM9K0tlLStUZS5jbG9uZSgp''@;'; put 'put ''LmFkZChwdC5tb250aHMsIk0iKSxwdH1mdW5jdGlvbiBlaChUZSxLZSl7cmV0dXJuIGZ1bmN0aW9uKHB0LEF0KXt2YXIgVm47cmV0dXJuIG51bGwhPT1BdCYmIWlzTmFOKCtBdCkmJihXKEtlLCJtb21lbnQoKS4iK0tlKyIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1''@;'; put 'put ''c2UgbW9tZW50KCkuIitLZSsiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIpLFZuPXB0LHB0PUF0LEF0PVZuKSxIZih0aGlzLGFsKHB0LEF0KSxUZSksdGhpc319ZnVu''@;'; put 'put ''Y3Rpb24gSGYoVGUsS2UscHQsQXQpe3ZhciBKdD1LZS5fbWlsbGlzZWNvbmRzLFZuPXlwKEtlLl9kYXlzKSxQcj15cChLZS5fbW9udGhzKTtUZS5pc1ZhbGlkKCkmJihBdD1BdD8/ITAsUHImJnVzKFRlLGhyKFRlLCJNb250aCIpK1ByKnB0KSxWbiYmZGkoVGUsIkRhdGUiLGhyKFRlLCJEYXRl''@;'; put 'put ''IikrVm4qcHQpLEp0JiZUZS5fZC5zZXRUaW1lKFRlLl9kLnZhbHVlT2YoKStKdCpwdCksQXQmJngudXBkYXRlT2Zmc2V0KFRlLFZufHxQcikpfWFsLmZuPWYyLnByb3RvdHlwZSxhbC5pbnZhbGlkPWZ1bmN0aW9uIHV1KCl7cmV0dXJuIGFsKE5hTil9O3ZhciBBNT1laCgxLCJhZGQiKSxnZz1l''@;'; put 'put ''aCgtMSwic3VidHJhY3QiKTtmdW5jdGlvbiBWZihUZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBUZXx8VGUgaW5zdGFuY2VvZiBTdHJpbmd9ZnVuY3Rpb24gZmEoVGUpe3JldHVybiBpZShUZSl8fEQoVGUpfHxWZihUZSl8fEcoVGUpfHxmdW5jdGlvbiBNeShUZSl7dmFyIEtlPXNlKFRlKSxw''@;'; put 'put ''dD0hMTtyZXR1cm4gS2UmJihwdD0wPT09VGUuZmlsdGVyKGZ1bmN0aW9uKEF0KXtyZXR1cm4hRyhBdCkmJlZmKFRlKX0pLmxlbmd0aCksS2UmJnB0fShUZSl8fGZ1bmN0aW9uIGpuKFRlKXt2YXIgSnQsS2U9TShUZSkmJiFJKFRlKSxwdD0hMSxBdD1bInllYXJzIiwieWVhciIsInkiLCJtb250''@;'; put 'put ''aHMiLCJtb250aCIsIk0iLCJkYXlzIiwiZGF5IiwiZCIsImRhdGVzIiwiZGF0ZSIsIkQiLCJob3VycyIsImhvdXIiLCJoIiwibWludXRlcyIsIm1pbnV0ZSIsIm0iLCJzZWNvbmRzIiwic2Vjb25kIiwicyIsIm1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kIiwibXMiXSxQcj1BdC5sZW5ndGg7''@;'; put 'put ''Zm9yKEp0PTA7SnQ8UHI7SnQrPTEpcHQ9cHR8fE8oVGUsQXRbSnRdKTtyZXR1cm4gS2UmJnB0fShUZSl8fG51bGw9PVRlfWZ1bmN0aW9uIEJmKFRlLEtlKXtpZihUZS5kYXRlKCk8S2UuZGF0ZSgpKXJldHVybi1CZihLZSxUZSk7dmFyIHB0PTEyKihLZS55ZWFyKCktVGUueWVhcigpKSsoS2Uu''@;'; put 'put ''bW9udGgoKS1UZS5tb250aCgpKSxBdD1UZS5jbG9uZSgpLmFkZChwdCwibW9udGhzIik7cmV0dXJuLShwdCsoS2UtQXQ8MD8oS2UtQXQpLyhBdC1UZS5jbG9uZSgpLmFkZChwdC0xLCJtb250aHMiKSk6KEtlLUF0KS8oVGUuY2xvbmUoKS5hZGQocHQrMSwibW9udGhzIiktQXQpKSl8fDB9ZnVu''@;'; put 'put ''Y3Rpb24gU28oVGUpe3ZhciBLZTtyZXR1cm4gdm9pZCAwPT09VGU/dGhpcy5fbG9jYWxlLl9hYmJyOihudWxsIT0oS2U9ZjAoVGUpKSYmKHRoaXMuX2xvY2FsZT1LZSksdGhpcyl9eC5kZWZhdWx0Rm9ybWF0PSJZWVlZLU1NLUREVEhIOm1tOnNzWiIseC5kZWZhdWx0Rm9ybWF0VXRjPSJZWVlZ''@;'; put 'put ''LU1NLUREVEhIOm1tOnNzW1pdIjt2YXIgU3I9bGUoIm1vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBs''@;'; put 'put ''YW5ndWFnZXMuIixmdW5jdGlvbihUZSl7cmV0dXJuIHZvaWQgMD09PVRlP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKFRlKX0pO2Z1bmN0aW9uIHYyKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX12YXIgZWk9NmU0LE1wPTYwKmVpLGdyPTM1MDYzMjgqTXA7ZnVuY3Rpb24gd2EoVGUsS2Up''@;'; put 'put ''e3JldHVybihUZSVLZStLZSklS2V9ZnVuY3Rpb24gbXMoVGUsS2UscHQpe3JldHVybiBUZTwxMDAmJlRlPj0wP25ldyBEYXRlKFRlKzQwMCxLZSxwdCktZ3I6bmV3IERhdGUoVGUsS2UscHQpLnZhbHVlT2YoKX1mdW5jdGlvbiBObChUZSxLZSxwdCl7cmV0dXJuIFRlPDEwMCYmVGU+PTA/RGF0''@;'; put 'put ''ZS5VVEMoVGUrNDAwLEtlLHB0KS1ncjpEYXRlLlVUQyhUZSxLZSxwdCl9ZnVuY3Rpb24gamYoVGUsS2Upe3JldHVybiBLZS5lcmFzQWJiclJlZ2V4KFRlKX1mdW5jdGlvbiBYbCgpe3ZhciBKdCxWbixQcixybyxKbyxUZT1bXSxLZT1bXSxwdD1bXSxBdD1bXSxIcz10aGlzLmVyYXMoKTtmb3Io''@;'; put 'put ''SnQ9MCxWbj1Icy5sZW5ndGg7SnQ8Vm47KytKdClQcj1wbihIc1tKdF0ubmFtZSkscm89cG4oSHNbSnRdLmFiYnIpLEpvPXBuKEhzW0p0XS5uYXJyb3cpLEtlLnB1c2goUHIpLFRlLnB1c2gocm8pLHB0LnB1c2goSm8pLEF0LnB1c2goUHIpLEF0LnB1c2gocm8pLEF0LnB1c2goSm8pO3RoaXMu''@;'; put 'put ''X2VyYXNSZWdleD1uZXcgUmVnRXhwKCJeKCIrQXQuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX2VyYXNOYW1lUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0tlLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzQWJiclJlZ2V4PW5ldyBSZWdFeHAoIl4oIitUZS5qb2luKCJ8IikrIikiLCJpIiks''@;'; put 'put ''dGhpcy5fZXJhc05hcnJvd1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitwdC5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gdzEoVGUsS2Upe2NlKDAsW1RlLFRlLmxlbmd0aF0sMCxLZSl9ZnVuY3Rpb24gXzkoVGUsS2UscHQsQXQsSnQpe3ZhciBWbjtyZXR1cm4gbnVsbD09VGU/YXUodGhpcyxB''@;'; put 'put ''dCxKdCkueWVhcjooS2U+KFZuPV9yKFRlLEF0LEp0KSkmJihLZT1WbiksT3kuY2FsbCh0aGlzLFRlLEtlLHB0LEF0LEp0KSl9ZnVuY3Rpb24gT3koVGUsS2UscHQsQXQsSnQpe3ZhciBWbj1jbyhUZSxLZSxwdCxBdCxKdCksUHI9JGQoVm4ueWVhciwwLFZuLmRheU9mWWVhcik7cmV0dXJuIHRo''@;'; put 'put ''aXMueWVhcihQci5nZXRVVENGdWxsWWVhcigpKSx0aGlzLm1vbnRoKFByLmdldFVUQ01vbnRoKCkpLHRoaXMuZGF0ZShQci5nZXRVVENEYXRlKCkpLHRoaXN9Y2UoIk4iLDAsMCwiZXJhQWJiciIpLGNlKCJOTiIsMCwwLCJlcmFBYmJyIiksY2UoIk5OTiIsMCwwLCJlcmFBYmJyIiksY2UoIk5O''@;'; put 'put ''Tk4iLDAsMCwiZXJhTmFtZSIpLGNlKCJOTk5OTiIsMCwwLCJlcmFOYXJyb3ciKSxjZSgieSIsWyJ5IiwxXSwieW8iLCJlcmFZZWFyIiksY2UoInkiLFsieXkiLDJdLDAsImVyYVllYXIiKSxjZSgieSIsWyJ5eXkiLDNdLDAsImVyYVllYXIiKSxjZSgieSIsWyJ5eXl5Iiw0XSwwLCJlcmFZZWFy''@;'; put 'put ''IiksanQoIk4iLGpmKSxqdCgiTk4iLGpmKSxqdCgiTk5OIixqZiksanQoIk5OTk4iLGZ1bmN0aW9uIFJ5KFRlLEtlKXtyZXR1cm4gS2UuZXJhc05hbWVSZWdleChUZSl9KSxqdCgiTk5OTk4iLGZ1bmN0aW9uIE41KFRlLEtlKXtyZXR1cm4gS2UuZXJhc05hcnJvd1JlZ2V4KFRlKX0pLFR0KFsi''@;'; put 'put ''TiIsIk5OIiwiTk5OIiwiTk5OTiIsIk5OTk5OIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe3ZhciBKdD1wdC5fbG9jYWxlLmVyYXNQYXJzZShUZSxBdCxwdC5fc3RyaWN0KTtKdD9CKHB0KS5lcmE9SnQ6QihwdCkuaW52YWxpZEVyYT1UZX0pLGp0KCJ5Iix5biksanQoInl5Iix5biksanQoInl5''@;'; put 'put ''eSIseW4pLGp0KCJ5eXl5Iix5biksanQoInlvIixmdW5jdGlvbiB6ZihUZSxLZSl7cmV0dXJuIEtlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4fHx5bn0pLFR0KFsieSIsInl5IiwieXl5IiwieXl5eSJdLHp0KSxUdChbInlvIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe3ZhciBKdDtwdC5fbG9jYWxl''@;'; put 'put ''Ll9lcmFZZWFyT3JkaW5hbFJlZ2V4JiYoSnQ9VGUubWF0Y2gocHQuX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCkpLEtlW3p0XT1wdC5fbG9jYWxlLmVyYVllYXJPcmRpbmFsUGFyc2U/cHQuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKFRlLEp0KTpwYXJzZUludChUZSwxMCl9KSxj''@;'; put 'put ''ZSgwLFsiZ2ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrWWVhcigpJTEwMH0pLGNlKDAsWyJHRyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzb1dlZWtZZWFyKCklMTAwfSksdzEoImdnZ2ciLCJ3ZWVrWWVhciIpLHcxKCJnZ2dnZyIsIndlZWtZZWFyIiksdzEoIkdH''@;'; put 'put ''R0ciLCJpc29XZWVrWWVhciIpLHcxKCJHR0dHRyIsImlzb1dlZWtZZWFyIiksanQoIkciLE5uKSxqdCgiZyIsTm4pLGp0KCJHRyIseHQsQWUpLGp0KCJnZyIseHQsQWUpLGp0KCJHR0dHIixibixpdCksanQoImdnZ2ciLGJuLGl0KSxqdCgiR0dHR0ciLEJ0LHN0KSxqdCgiZ2dnZ2ciLEJ0LHN0''@;'; put 'put ''KSx5dChbImdnZ2ciLCJnZ2dnZyIsIkdHR0ciLCJHR0dHRyJdLGZ1bmN0aW9uKFRlLEtlLHB0LEF0KXtLZVtBdC5zdWJzdHIoMCwyKV09RXQoVGUpfSkseXQoWyJnZyIsIkdHIl0sZnVuY3Rpb24oVGUsS2UscHQsQXQpe0tlW0F0XT14LnBhcnNlVHdvRGlnaXRZZWFyKFRlKX0pLGNlKCJRIiww''@;'; put 'put ''LCJRbyIsInF1YXJ0ZXIiKSxqdCgiUSIsa2UpLFR0KCJRIixmdW5jdGlvbihUZSxLZSl7S2VbX25dPTMqKEV0KFRlKS0xKX0pLGNlKCJEIixbIkREIiwyXSwiRG8iLCJkYXRlIiksanQoIkQiLHh0LGRuKSxqdCgiREQiLHh0LEFlKSxqdCgiRG8iLGZ1bmN0aW9uKFRlLEtlKXtyZXR1cm4gVGU/''@;'; put 'put ''S2UuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fEtlLl9vcmRpbmFsUGFyc2U6S2UuX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50fSksVHQoWyJEIiwiREQiXSxPbiksVHQoIkRvIixmdW5jdGlvbihUZSxLZSl7S2VbT25dPUV0KFRlLm1hdGNoKHh0KVswXSl9KTt2YXIgZzA9QXIoIkRh''@;'; put 'put ''dGUiLCEwKTtjZSgiREREIixbIkREREQiLDNdLCJERERvIiwiZGF5T2ZZZWFyIiksanQoIkRERCIsS3QpLGp0KCJEREREIixqZSksVHQoWyJEREQiLCJEREREIl0sZnVuY3Rpb24oVGUsS2UscHQpe3B0Ll9kYXlPZlllYXI9RXQoVGUpfSksY2UoIm0iLFsibW0iLDJdLDAsIm1pbnV0ZSIpLGp0''@;'; put 'put ''KCJtIix4dCxobiksanQoIm1tIix4dCxBZSksVHQoWyJtIiwibW0iXSxQbik7dmFyIHkyPUFyKCJNaW51dGVzIiwhMSk7Y2UoInMiLFsic3MiLDJdLDAsInNlY29uZCIpLGp0KCJzIix4dCxobiksanQoInNzIix4dCxBZSksVHQoWyJzIiwic3MiXSxDbik7dmFyIHNkLFY1LHcyPUFyKCJTZWNv''@;'; put 'put ''bmRzIiwhMSk7Zm9yKGNlKCJTIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTAwKX0pLGNlKDAsWyJTUyIsMl0sMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMCl9KSxjZSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLGNl''@;'; put 'put ''KDAsWyJTU1NTIiw0XSwwLGZ1bmN0aW9uKCl7cmV0dXJuIDEwKnRoaXMubWlsbGlzZWNvbmQoKX0pLGNlKDAsWyJTU1NTUyIsNV0sMCxmdW5jdGlvbigpe3JldHVybiAxMDAqdGhpcy5taWxsaXNlY29uZCgpfSksY2UoMCxbIlNTU1NTUyIsNl0sMCxmdW5jdGlvbigpe3JldHVybiAxZTMqdGhp''@;'; put 'put ''cy5taWxsaXNlY29uZCgpfSksY2UoMCxbIlNTU1NTU1MiLDddLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU0KnRoaXMubWlsbGlzZWNvbmQoKX0pLGNlKDAsWyJTU1NTU1NTUyIsOF0sMCxmdW5jdGlvbigpe3JldHVybiAxZTUqdGhpcy5taWxsaXNlY29uZCgpfSksY2UoMCxbIlNTU1NTU1NTUyIs''@;'; put 'put ''OV0sMCxmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSksanQoIlMiLEt0LGtlKSxqdCgiU1MiLEt0LEFlKSxqdCgiU1NTIixLdCxqZSksc2Q9IlNTU1MiO3NkLmxlbmd0aDw9OTtzZCs9IlMiKWp0KHNkLHluKTtmdW5jdGlvbiBKbChUZSxLZSl7S2VbWHRdPUV0KDFl''@;'; put 'put ''MyooIjAuIitUZSkpfWZvcihzZD0iUyI7c2QubGVuZ3RoPD05O3NkKz0iUyIpVHQoc2QsSmwpO1Y1PUFyKCJNaWxsaXNlY29uZHMiLCExKSxjZSgieiIsMCwwLCJ6b25lQWJiciIpLGNlKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciBwaT1yZS5wcm90b3R5cGU7ZnVuY3Rpb24geTkoVGUpe3Jl''@;'; put 'put ''dHVybiBUZX1waS5hZGQ9QTUscGkuY2FsZW5kYXI9ZnVuY3Rpb24gdmcoVGUsS2UpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYoYXJndW1lbnRzWzBdP2ZhKGFyZ3VtZW50c1swXSk/KFRlPWFyZ3VtZW50c1swXSxLZT12b2lkIDApOmZ1bmN0aW9uIHdwKFRlKXt2YXIgSnQsS2U9TShUZSkmJiFJ''@;'; put 'put ''KFRlKSxwdD0hMSxBdD1bInNhbWVEYXkiLCJuZXh0RGF5IiwibGFzdERheSIsIm5leHRXZWVrIiwibGFzdFdlZWsiLCJzYW1lRWxzZSJdO2ZvcihKdD0wO0p0PEF0Lmxlbmd0aDtKdCs9MSlwdD1wdHx8TyhUZSxBdFtKdF0pO3JldHVybiBLZSYmcHR9KGFyZ3VtZW50c1swXSkmJihLZT1hcmd1''@;'; put 'put ''bWVudHNbMF0sVGU9dm9pZCAwKTooVGU9dm9pZCAwLEtlPXZvaWQgMCkpO3ZhciBwdD1UZXx8eWEoKSxBdD1UNShwdCx0aGlzKS5zdGFydE9mKCJkYXkiKSxKdD14LmNhbGVuZGFyRm9ybWF0KHRoaXMsQXQpfHwic2FtZUVsc2UiLFZuPUtlJiYoYihLZVtKdF0pP0tlW0p0XS5jYWxsKHRoaXMs''@;'; put 'put ''cHQpOktlW0p0XSk7cmV0dXJuIHRoaXMuZm9ybWF0KFZufHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihKdCx0aGlzLHlhKHB0KSkpfSxwaS5jbG9uZT1mdW5jdGlvbiBtMigpe3JldHVybiBuZXcgcmUodGhpcyl9LHBpLmRpZmY9ZnVuY3Rpb24gRmwoVGUsS2UscHQpe3ZhciBBdCxKdCxW''@;'; put 'put ''bjtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtpZighKEF0PVQ1KFRlLHRoaXMpKS5pc1ZhbGlkKCkpcmV0dXJuIE5hTjtzd2l0Y2goSnQ9NmU0KihBdC51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSxLZT1YZShLZSkpe2Nhc2UieWVhciI6Vm49QmYodGhpcyxBdCkvMTI7YnJl''@;'; put 'put ''YWs7Y2FzZSJtb250aCI6Vm49QmYodGhpcyxBdCk7YnJlYWs7Y2FzZSJxdWFydGVyIjpWbj1CZih0aGlzLEF0KS8zO2JyZWFrO2Nhc2Uic2Vjb25kIjpWbj0odGhpcy1BdCkvMWUzO2JyZWFrO2Nhc2UibWludXRlIjpWbj0odGhpcy1BdCkvNmU0O2JyZWFrO2Nhc2UiaG91ciI6Vm49KHRoaXMt''@;'; put 'put ''QXQpLzM2ZTU7YnJlYWs7Y2FzZSJkYXkiOlZuPSh0aGlzLUF0LUp0KS84NjRlNTticmVhaztjYXNlIndlZWsiOlZuPSh0aGlzLUF0LUp0KS82MDQ4ZTU7YnJlYWs7ZGVmYXVsdDpWbj10aGlzLUF0fXJldHVybiBwdD9WbjpudChWbil9LHBpLmVuZE9mPWZ1bmN0aW9uIHRoKFRlKXt2YXIgS2Us''@;'; put 'put ''cHQ7aWYodm9pZCAwPT09KFRlPVhlKFRlKSl8fCJtaWxsaXNlY29uZCI9PT1UZXx8IXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzO3N3aXRjaChwdD10aGlzLl9pc1VUQz9ObDptcyxUZSl7Y2FzZSJ5ZWFyIjpLZT1wdCh0aGlzLnllYXIoKSsxLDAsMSktMTticmVhaztjYXNlInF1YXJ0ZXIi''@;'; put 'put ''OktlPXB0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKS10aGlzLm1vbnRoKCklMyszLDEpLTE7YnJlYWs7Y2FzZSJtb250aCI6S2U9cHQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKzEsMSktMTticmVhaztjYXNlIndlZWsiOktlPXB0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRh''@;'; put 'put ''dGUoKS10aGlzLndlZWtkYXkoKSs3KS0xO2JyZWFrO2Nhc2UiaXNvV2VlayI6S2U9cHQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSs3KS0xO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOktlPXB0KHRoaXMueWVhcigpLHRoaXMu''@;'; put 'put ''bW9udGgoKSx0aGlzLmRhdGUoKSsxKS0xO2JyZWFrO2Nhc2UiaG91ciI6S2U9dGhpcy5fZC52YWx1ZU9mKCksS2UrPU1wLXdhKEtlKyh0aGlzLl9pc1VUQz8wOnRoaXMudXRjT2Zmc2V0KCkqZWkpLE1wKS0xO2JyZWFrO2Nhc2UibWludXRlIjpLZT10aGlzLl9kLnZhbHVlT2YoKSxLZSs9ZWkt''@;'; put 'put ''d2EoS2UsZWkpLTE7YnJlYWs7Y2FzZSJzZWNvbmQiOktlPXRoaXMuX2QudmFsdWVPZigpLEtlKz0xZTMtd2EoS2UsMWUzKS0xfXJldHVybiB0aGlzLl9kLnNldFRpbWUoS2UpLHgudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LHBpLmZvcm1hdD1mdW5jdGlvbiB1OShUZSl7VGV8fChUZT10''@;'; put 'put ''aGlzLmlzVXRjKCk/eC5kZWZhdWx0Rm9ybWF0VXRjOnguZGVmYXVsdEZvcm1hdCk7dmFyIEtlPUxlKHRoaXMsVGUpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KEtlKX0scGkuZnJvbT1mdW5jdGlvbiBFeShUZSxLZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoaWUoVGUp''@;'; put 'put ''JiZUZS5pc1ZhbGlkKCl8fHlhKFRlKS5pc1ZhbGlkKCkpP2FsKHt0bzp0aGlzLGZyb206VGV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIUtlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxwaS5mcm9tTm93PWZ1bmN0aW9uIGQ5KFRlKXtyZXR1cm4gdGhpcy5m''@;'; put 'put ''cm9tKHlhKCksVGUpfSxwaS50bz1mdW5jdGlvbiBUeShUZSxLZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoaWUoVGUpJiZUZS5pc1ZhbGlkKCl8fHlhKFRlKS5pc1ZhbGlkKCkpP2FsKHtmcm9tOnRoaXMsdG86VGV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIUtlKTp0aGlz''@;'; put 'put ''LmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxwaS50b05vdz1mdW5jdGlvbiBreShUZSl7cmV0dXJuIHRoaXMudG8oeWEoKSxUZSl9LHBpLmdldD1mdW5jdGlvbiBmaShUZSl7cmV0dXJuIGIodGhpc1tUZT1YZShUZSldKT90aGlzW1RlXSgpOnRoaXN9LHBpLmludmFsaWRBdD1mdW5jdGlv''@;'; put 'put ''biBvZCgpe3JldHVybiBCKHRoaXMpLm92ZXJmbG93fSxwaS5pc0FmdGVyPWZ1bmN0aW9uIEQ1KFRlLEtlKXt2YXIgcHQ9aWUoVGUpP1RlOnlhKFRlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IXB0LmlzVmFsaWQoKSkmJigibWlsbGlzZWNvbmQiPT09KEtlPVhlKEtlKXx8Im1pbGxpc2Vj''@;'; put 'put ''b25kIik/dGhpcy52YWx1ZU9mKCk+cHQudmFsdWVPZigpOnB0LnZhbHVlT2YoKTx0aGlzLmNsb25lKCkuc3RhcnRPZihLZSkudmFsdWVPZigpKX0scGkuaXNCZWZvcmU9ZnVuY3Rpb24gYTkoVGUsS2Upe3ZhciBwdD1pZShUZSk/VGU6eWEoVGUpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwh''@;'; put 'put ''cHQuaXNWYWxpZCgpKSYmKCJtaWxsaXNlY29uZCI9PT0oS2U9WGUoS2UpfHwibWlsbGlzZWNvbmQiKT90aGlzLnZhbHVlT2YoKTxwdC52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKEtlKS52YWx1ZU9mKCk8cHQudmFsdWVPZigpKX0scGkuaXNCZXR3ZWVuPWZ1bmN0aW9uIEk1KFRlLEtl''@;'; put 'put ''LHB0LEF0KXt2YXIgSnQ9aWUoVGUpP1RlOnlhKFRlKSxWbj1pZShLZSk/S2U6eWEoS2UpO3JldHVybiEhKHRoaXMuaXNWYWxpZCgpJiZKdC5pc1ZhbGlkKCkmJlZuLmlzVmFsaWQoKSkmJigiKCI9PT0oQXQ9QXR8fCIoKSIpWzBdP3RoaXMuaXNBZnRlcihKdCxwdCk6IXRoaXMuaXNCZWZvcmUo''@;'; put 'put ''SnQscHQpKSYmKCIpIj09PUF0WzFdP3RoaXMuaXNCZWZvcmUoVm4scHQpOiF0aGlzLmlzQWZ0ZXIoVm4scHQpKX0scGkuaXNTYW1lPWZ1bmN0aW9uIENwKFRlLEtlKXt2YXIgQXQscHQ9aWUoVGUpP1RlOnlhKFRlKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IXB0LmlzVmFsaWQoKSkmJigi''@;'; put 'put ''bWlsbGlzZWNvbmQiPT09KEtlPVhlKEtlKXx8Im1pbGxpc2Vjb25kIik/dGhpcy52YWx1ZU9mKCk9PT1wdC52YWx1ZU9mKCk6KEF0PXB0LnZhbHVlT2YoKSx0aGlzLmNsb25lKCkuc3RhcnRPZihLZSkudmFsdWVPZigpPD1BdCYmQXQ8PXRoaXMuY2xvbmUoKS5lbmRPZihLZSkudmFsdWVPZigp''@;'; put 'put ''KSl9LHBpLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24gaHUoVGUsS2Upe3JldHVybiB0aGlzLmlzU2FtZShUZSxLZSl8fHRoaXMuaXNBZnRlcihUZSxLZSl9LHBpLmlzU2FtZU9yQmVmb3JlPWZ1bmN0aW9uIHh5KFRlLEtlKXtyZXR1cm4gdGhpcy5pc1NhbWUoVGUsS2UpfHx0aGlzLmlzQmVmb3Jl''@;'; put 'put ''KFRlLEtlKX0scGkuaXNWYWxpZD1mdW5jdGlvbiBfMigpe3JldHVybiBZKHRoaXMpfSxwaS5sYW5nPVNyLHBpLmxvY2FsZT1TbyxwaS5sb2NhbGVEYXRhPXYyLHBpLm1heD13eSxwaS5taW49RmYscGkucGFyc2luZ0ZsYWdzPWZ1bmN0aW9uIER5KCl7cmV0dXJuIEUoe30sQih0aGlzKSl9LHBp''@;'; put 'put ''LnNldD1mdW5jdGlvbiBobyhUZSxLZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBUZSl7dmFyIEF0LHB0PWZ1bmN0aW9uIGN0KFRlKXt2YXIgcHQsS2U9W107Zm9yKHB0IGluIFRlKU8oVGUscHQpJiZLZS5wdXNoKHt1bml0OnB0LHByaW9yaXR5OlplW3B0XX0pO3JldHVybiBLZS5zb3J0KGZ1bmN0''@;'; put 'put ''aW9uKEF0LEp0KXtyZXR1cm4gQXQucHJpb3JpdHktSnQucHJpb3JpdHl9KSxLZX0oVGU9dHQoVGUpKSxKdD1wdC5sZW5ndGg7Zm9yKEF0PTA7QXQ8SnQ7QXQrKyl0aGlzW3B0W0F0XS51bml0XShUZVtwdFtBdF0udW5pdF0pfWVsc2UgaWYoYih0aGlzW1RlPVhlKFRlKV0pKXJldHVybiB0aGlz''@;'; put 'put ''W1RlXShLZSk7cmV0dXJuIHRoaXN9LHBpLnN0YXJ0T2Y9ZnVuY3Rpb24gdmMoVGUpe3ZhciBLZSxwdDtpZih2b2lkIDA9PT0oVGU9WGUoVGUpKXx8Im1pbGxpc2Vjb25kIj09PVRlfHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKHB0PXRoaXMuX2lzVVRDP05sOm1zLFRlKXtj''@;'; put 'put ''YXNlInllYXIiOktlPXB0KHRoaXMueWVhcigpLDAsMSk7YnJlYWs7Y2FzZSJxdWFydGVyIjpLZT1wdCh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6S2U9cHQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLDEpO2JyZWFrO2Nhc2Ui''@;'; put 'put ''d2VlayI6S2U9cHQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLHRoaXMuZGF0ZSgpLXRoaXMud2Vla2RheSgpKTticmVhaztjYXNlImlzb1dlZWsiOktlPXB0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5''@;'; put 'put ''IjpjYXNlImRhdGUiOktlPXB0KHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSk7YnJlYWs7Y2FzZSJob3VyIjpLZT10aGlzLl9kLnZhbHVlT2YoKSxLZS09d2EoS2UrKHRoaXMuX2lzVVRDPzA6dGhpcy51dGNPZmZzZXQoKSplaSksTXApO2JyZWFrO2Nhc2UibWludXRlIjpL''@;'; put 'put ''ZT10aGlzLl9kLnZhbHVlT2YoKSxLZS09d2EoS2UsZWkpO2JyZWFrO2Nhc2Uic2Vjb25kIjpLZT10aGlzLl9kLnZhbHVlT2YoKSxLZS09d2EoS2UsMWUzKX1yZXR1cm4gdGhpcy5fZC5zZXRUaW1lKEtlKSx4LnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzfSxwaS5zdWJ0cmFjdD1nZyxwaS50''@;'; put 'put ''b0FycmF5PWZ1bmN0aW9uIGJnKCl7dmFyIFRlPXRoaXM7cmV0dXJuW1RlLnllYXIoKSxUZS5tb250aCgpLFRlLmRhdGUoKSxUZS5ob3VyKCksVGUubWludXRlKCksVGUuc2Vjb25kKCksVGUubWlsbGlzZWNvbmQoKV19LHBpLnRvT2JqZWN0PWZ1bmN0aW9uIGg5KCl7dmFyIFRlPXRoaXM7cmV0''@;'; put 'put ''dXJue3llYXJzOlRlLnllYXIoKSxtb250aHM6VGUubW9udGgoKSxkYXRlOlRlLmRhdGUoKSxob3VyczpUZS5ob3VycygpLG1pbnV0ZXM6VGUubWludXRlcygpLHNlY29uZHM6VGUuc2Vjb25kcygpLG1pbGxpc2Vjb25kczpUZS5taWxsaXNlY29uZHMoKX19LHBpLnRvRGF0ZT1mdW5jdGlvbiBR''@;'; put 'put ''dSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LHBpLnRvSVNPU3RyaW5nPWZ1bmN0aW9uIGw5KFRlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGw7dmFyIEtlPSEwIT09VGUscHQ9S2U/dGhpcy5jbG9uZSgpLnV0YygpOnRoaXM7cmV0dXJuIHB0LnllYXIoKTwwfHxw''@;'; put 'put ''dC55ZWFyKCk+OTk5OT9MZShwdCxLZT8iWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpOmIoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP0tlP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpuZXcgRGF0ZSh0aGlzLnZh''@;'; put 'put ''bHVlT2YoKSs2MCp0aGlzLnV0Y09mZnNldCgpKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKCJaIixMZShwdCwiWiIpKTpMZShwdCxLZT8iWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIil9LHBpLmluc3BlY3Q9ZnVuY3Rpb24gYzko''@;'; put 'put ''KXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIm1vbWVudC5pbnZhbGlkKC8qICIrdGhpcy5faSsiICovKSI7dmFyIHB0LEF0LFRlPSJtb21lbnQiLEtlPSIiO3JldHVybiB0aGlzLmlzTG9jYWwoKXx8KFRlPTA9PT10aGlzLnV0Y09mZnNldCgpPyJtb21lbnQudXRjIjoibW9tZW50LnBhcnNl''@;'; put 'put ''Wm9uZSIsS2U9IloiKSxwdD0iWyIrVGUrJygiXScsQXQ9MDw9dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIix0aGlzLmZvcm1hdChwdCtBdCsiLU1NLUREW1RdSEg6bW06c3MuU1NTIitLZSsnWyIpXScpfSx0eXBlb2YgU3ltYm9sPCJ1IiYmbnVsbCE9U3lt''@;'; put 'put ''Ym9sLmZvciYmKHBpW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uKCl7cmV0dXJuIk1vbWVudDwiK3RoaXMuZm9ybWF0KCkrIj4ifSkscGkudG9KU09OPWZ1bmN0aW9uIEF5KCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmco''@;'; put 'put ''KTpudWxsfSxwaS50b1N0cmluZz1mdW5jdGlvbiBTcCgpe3JldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX0scGkudW5peD1mdW5jdGlvbiBSNSgpe3JldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigp''@;'; put 'put ''LzFlMyl9LHBpLnZhbHVlT2Y9ZnVuY3Rpb24gemMoKXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfSxwaS5jcmVhdGlvbkRhdGE9ZnVuY3Rpb24gZjkoKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixsb2NhbGU6dGhpcy5fbG9jYWxl''@;'; put 'put ''LGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0aGlzLl9zdHJpY3R9fSxwaS5lcmFOYW1lPWZ1bmN0aW9uIEl5KCl7dmFyIFRlLEtlLHB0LEF0PXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKTtmb3IoVGU9MCxLZT1BdC5sZW5ndGg7VGU8S2U7KytUZSlpZihwdD10aGlzLmNsb25lKCkuc3RhcnRP''@;'; put 'put ''ZigiZGF5IikudmFsdWVPZigpLEF0W1RlXS5zaW5jZTw9cHQmJnB0PD1BdFtUZV0udW50aWx8fEF0W1RlXS51bnRpbDw9cHQmJnB0PD1BdFtUZV0uc2luY2UpcmV0dXJuIEF0W1RlXS5uYW1lO3JldHVybiIifSxwaS5lcmFOYXJyb3c9ZnVuY3Rpb24gTzUoKXt2YXIgVGUsS2UscHQsQXQ9dGhp''@;'; put 'put ''cy5sb2NhbGVEYXRhKCkuZXJhcygpO2ZvcihUZT0wLEtlPUF0Lmxlbmd0aDtUZTxLZTsrK1RlKWlmKHB0PXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksQXRbVGVdLnNpbmNlPD1wdCYmcHQ8PUF0W1RlXS51bnRpbHx8QXRbVGVdLnVudGlsPD1wdCYmcHQ8PUF0W1RlXS5z''@;'; put 'put ''aW5jZSlyZXR1cm4gQXRbVGVdLm5hcnJvdztyZXR1cm4iIn0scGkuZXJhQWJicj1mdW5jdGlvbiBwOSgpe3ZhciBUZSxLZSxwdCxBdD10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCk7Zm9yKFRlPTAsS2U9QXQubGVuZ3RoO1RlPEtlOysrVGUpaWYocHQ9dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRh''@;'; put 'put ''eSIpLnZhbHVlT2YoKSxBdFtUZV0uc2luY2U8PXB0JiZwdDw9QXRbVGVdLnVudGlsfHxBdFtUZV0udW50aWw8PXB0JiZwdDw9QXRbVGVdLnNpbmNlKXJldHVybiBBdFtUZV0uYWJicjtyZXR1cm4iIn0scGkuZXJhWWVhcj1mdW5jdGlvbiBnOSgpe3ZhciBUZSxLZSxwdCxBdCxKdD10aGlzLmxv''@;'; put 'put ''Y2FsZURhdGEoKS5lcmFzKCk7Zm9yKFRlPTAsS2U9SnQubGVuZ3RoO1RlPEtlOysrVGUpaWYocHQ9SnRbVGVdLnNpbmNlPD1KdFtUZV0udW50aWw/MTotMSxBdD10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEp0W1RlXS5zaW5jZTw9QXQmJkF0PD1KdFtUZV0udW50aWx8''@;'; put 'put ''fEp0W1RlXS51bnRpbDw9QXQmJkF0PD1KdFtUZV0uc2luY2UpcmV0dXJuKHRoaXMueWVhcigpLXgoSnRbVGVdLnNpbmNlKS55ZWFyKCkpKnB0K0p0W1RlXS5vZmZzZXQ7cmV0dXJuIHRoaXMueWVhcigpfSxwaS55ZWFyPXRuLHBpLmlzTGVhcFllYXI9ZnVuY3Rpb24gdWkoKXtyZXR1cm4geG4o''@;'; put 'put ''dGhpcy55ZWFyKCkpfSxwaS53ZWVrWWVhcj1mdW5jdGlvbiB5ZyhUZSl7cmV0dXJuIF85LmNhbGwodGhpcyxUZSx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSt0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LHRoaXMubG9jYWxlRGF0YSgp''@;'; put 'put ''Ll93ZWVrLmRveSl9LHBpLmlzb1dlZWtZZWFyPWZ1bmN0aW9uIG05KFRlKXtyZXR1cm4gXzkuY2FsbCh0aGlzLFRlLHRoaXMuaXNvV2VlaygpLHRoaXMuaXNvV2Vla2RheSgpLDEsNCl9LHBpLnF1YXJ0ZXI9cGkucXVhcnRlcnM9ZnVuY3Rpb24gd2coVGUpe3JldHVybiBudWxsPT1UZT9NYXRo''@;'; put 'put ''LmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlzLm1vbnRoKDMqKFRlLTEpK3RoaXMubW9udGgoKSUzKX0scGkubW9udGg9T3UscGkuZGF5c0luTW9udGg9ZnVuY3Rpb24gUHUoKXtyZXR1cm4gbG8odGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0scGkud2Vlaz1waS53ZWVrcz1mdW5jdGlv''@;'; put 'put ''biBraShUZSl7dmFyIEtlPXRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PVRlP0tlOnRoaXMuYWRkKDcqKFRlLUtlKSwiZCIpfSxwaS5pc29XZWVrPXBpLmlzb1dlZWtzPWZ1bmN0aW9uIENsKFRlKXt2YXIgS2U9YXUodGhpcywxLDQpLndlZWs7cmV0dXJuIG51bGw9''@;'; put 'put ''PVRlP0tlOnRoaXMuYWRkKDcqKFRlLUtlKSwiZCIpfSxwaS53ZWVrc0luWWVhcj1mdW5jdGlvbiBVZigpe3ZhciBUZT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gX3IodGhpcy55ZWFyKCksVGUuZG93LFRlLmRveSl9LHBpLndlZWtzSW5XZWVrWWVhcj1mdW5jdGlvbiBMeSgpe3Zh''@;'; put 'put ''ciBUZT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gX3IodGhpcy53ZWVrWWVhcigpLFRlLmRvdyxUZS5kb3kpfSxwaS5pc29XZWVrc0luWWVhcj1mdW5jdGlvbiBINSgpe3JldHVybiBfcih0aGlzLnllYXIoKSwxLDQpfSxwaS5pc29XZWVrc0luSVNPV2Vla1llYXI9ZnVuY3Rpb24g''@;'; put 'put ''djkoKXtyZXR1cm4gX3IodGhpcy5pc29XZWVrWWVhcigpLDEsNCl9LHBpLmRhdGU9ZzAscGkuZGF5PXBpLmRheXM9ZnVuY3Rpb24gaW8oVGUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9VGU/dGhpczpOYU47dmFyIEtlPWhyKHRoaXMsIkRheSIpO3JldHVybiBudWxsIT1UZT8o''@;'; put 'put ''VGU9ZnVuY3Rpb24gU2woVGUsS2Upe3JldHVybiJzdHJpbmciIT10eXBlb2YgVGU/VGU6aXNOYU4oVGUpPyJudW1iZXIiPT10eXBlb2YoVGU9S2Uud2Vla2RheXNQYXJzZShUZSkpP1RlOm51bGw6cGFyc2VJbnQoVGUsMTApfShUZSx0aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQoVGUtS2Us''@;'; put 'put ''ImQiKSk6S2V9LHBpLndlZWtkYXk9ZnVuY3Rpb24gbXAoVGUpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9VGU/dGhpczpOYU47dmFyIEtlPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSU3O3JldHVybiBudWxsPT1UZT9LZTp0aGlzLmFkZChUZS1L''@;'; put 'put ''ZSwiZCIpfSxwaS5pc29XZWVrZGF5PWZ1bmN0aW9uIElmKFRlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPVRlP3RoaXM6TmFOO2lmKG51bGwhPVRlKXt2YXIgS2U9ZnVuY3Rpb24gUTcoVGUsS2Upe3JldHVybiJzdHJpbmciPT10eXBlb2YgVGU/S2Uud2Vla2RheXNQYXJzZShU''@;'; put 'put ''ZSklN3x8Nzppc05hTihUZSk/bnVsbDpUZX0oVGUsdGhpcy5sb2NhbGVEYXRhKCkpO3JldHVybiB0aGlzLmRheSh0aGlzLmRheSgpJTc/S2U6S2UtNyl9cmV0dXJuIHRoaXMuZGF5KCl8fDd9LHBpLmRheU9mWWVhcj1mdW5jdGlvbiBiOShUZSl7dmFyIEtlPU1hdGgucm91bmQoKHRoaXMuY2xv''@;'; put 'put ''bmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09VGU/S2U6dGhpcy5hZGQoVGUtS2UsImQiKX0scGkuaG91cj1waS5ob3Vycz1abixwaS5taW51dGU9cGkubWludXRlcz15MixwaS5zZWNvbmQ9cGkuc2Vjb25kcz13''@;'; put 'put ''MixwaS5taWxsaXNlY29uZD1waS5taWxsaXNlY29uZHM9VjUscGkudXRjT2Zmc2V0PWZ1bmN0aW9uIHAyKFRlLEtlLHB0KXt2YXIgSnQsQXQ9dGhpcy5fb2Zmc2V0fHwwO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbnVsbCE9VGU/dGhpczpOYU47aWYobnVsbCE9VGUpe2lmKCJzdHJpbmci''@;'; put 'put ''PT10eXBlb2YgVGUpe2lmKG51bGw9PT0oVGU9eTEoR24sVGUpKSlyZXR1cm4gdGhpc31lbHNlIE1hdGguYWJzKFRlKTwxNiYmIXB0JiYoVGUqPTYwKTtyZXR1cm4hdGhpcy5faXNVVEMmJktlJiYoSnQ9QWModGhpcykpLHRoaXMuX29mZnNldD1UZSx0aGlzLl9pc1VUQz0hMCxudWxsIT1KdCYm''@;'; put 'put ''dGhpcy5hZGQoSnQsIm0iKSxBdCE9PVRlJiYoIUtlfHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP0hmKHRoaXMsYWwoVGUtQXQsIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCx4LnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9j''@;'; put 'put ''aGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzfXJldHVybiB0aGlzLl9pc1VUQz9BdDpBYyh0aGlzKX0scGkudXRjPWZ1bmN0aW9uIE5mKFRlKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoMCxUZSl9LHBpLmxvY2FsPWZ1bmN0aW9uIHphKFRlKXtyZXR1cm4gdGhpcy5faXNVVEMmJih0aGlzLnV0''@;'; put 'put ''Y09mZnNldCgwLFRlKSx0aGlzLl9pc1VUQz0hMSxUZSYmdGhpcy5zdWJ0cmFjdChBYyh0aGlzKSwibSIpKSx0aGlzfSxwaS5wYXJzZVpvbmU9ZnVuY3Rpb24gamMoKXtpZihudWxsIT10aGlzLl90em0pdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCExLCEwKTtlbHNlIGlmKCJzdHJpbmciPT10''@;'; put 'put ''eXBlb2YgdGhpcy5faSl7dmFyIFRlPXkxKG5uLHRoaXMuX2kpO251bGwhPVRlP3RoaXMudXRjT2Zmc2V0KFRlKTp0aGlzLnV0Y09mZnNldCgwLCEwKX1yZXR1cm4gdGhpc30scGkuaGFzQWxpZ25lZEhvdXJPZmZzZXQ9ZnVuY3Rpb24gSmQoVGUpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJihU''@;'; put 'put ''ZT1UZT95YShUZSkudXRjT2Zmc2V0KCk6MCwodGhpcy51dGNPZmZzZXQoKS1UZSklNjA9PTApfSxwaS5pc0RTVD1mdW5jdGlvbiBnMigpe3JldHVybiB0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKXx8dGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25l''@;'; put 'put ''KCkubW9udGgoNSkudXRjT2Zmc2V0KCl9LHBpLmlzTG9jYWw9ZnVuY3Rpb24gczkoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYhdGhpcy5faXNVVEN9LHBpLmlzVXRjT2Zmc2V0PWZ1bmN0aW9uIFN5KCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmdGhpcy5faXNVVEN9LHBpLmlzVXRjPU51''@;'; put 'put ''LHBpLmlzVVRDPU51LHBpLnpvbmVBYmJyPWZ1bmN0aW9uIEI1KCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifSxwaS56b25lTmFtZT1mdW5jdGlvbiBqNSgpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiOiIifSxwaS5kYXRlcz1sZSgiZGF0ZXMg''@;'; put 'put ''YWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLGcwKSxwaS5tb250aHM9bGUoIm1vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCIsT3UpLHBpLnllYXJzPWxlKCJ5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVh''@;'; put 'put ''ciBpbnN0ZWFkIix0bikscGkuem9uZT1sZSgibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLGZ1bmN0aW9uIGR1KFRlLEtlKXtyZXR1cm4gbnVsbCE9''@;'; put 'put ''VGU/KCJzdHJpbmciIT10eXBlb2YgVGUmJihUZT0tVGUpLHRoaXMudXRjT2Zmc2V0KFRlLEtlKSx0aGlzKTotdGhpcy51dGNPZmZzZXQoKX0pLHBpLmlzRFNUU2hpZnRlZD1sZSgiaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dh''@;'; put 'put ''cm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIsZnVuY3Rpb24gQ3koKXtpZighaih0aGlzLl9pc0RTVFNoaWZ0ZWQpKXJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7dmFyIEtlLFRlPXt9O3JldHVybiBlZShUZSx0aGlzKSwoVGU9cjkoVGUpKS5fYT8oS2U9VGUuX2lz''@;'; put 'put ''VVRDP3ooVGUuX2EpOnlhKFRlLl9hKSx0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJmZ1bmN0aW9uIHBnKFRlLEtlLHB0KXt2YXIgUHIsQXQ9TWF0aC5taW4oVGUubGVuZ3RoLEtlLmxlbmd0aCksSnQ9TWF0aC5hYnMoVGUubGVuZ3RoLUtlLmxlbmd0aCksVm49MDtmb3IoUHI9''@;'; put 'put ''MDtQcjxBdDtQcisrKShwdCYmVGVbUHJdIT09S2VbUHJdfHwhcHQmJkV0KFRlW1ByXSkhPT1FdChLZVtQcl0pKSYmVm4rKztyZXR1cm4gVm4rSnR9KFRlLl9hLEtlLnRvQXJyYXkoKSk+MCk6dGhpcy5faXNEU1RTaGlmdGVkPSExLHRoaXMuX2lzRFNUU2hpZnRlZH0pO3ZhciBGbz1ILnByb3Rv''@;'; put 'put ''dHlwZTtmdW5jdGlvbiBfYyhUZSxLZSxwdCxBdCl7dmFyIEp0PWYwKCksVm49eigpLnNldChBdCxLZSk7cmV0dXJuIEp0W3B0XShWbixUZSl9ZnVuY3Rpb24gSGwoVGUsS2UscHQpe2lmKEcoVGUpJiYoS2U9VGUsVGU9dm9pZCAwKSxUZT1UZXx8IiIsbnVsbCE9S2UpcmV0dXJuIF9jKFRlLEtl''@;'; put 'put ''LHB0LCJtb250aCIpO3ZhciBBdCxKdD1bXTtmb3IoQXQ9MDtBdDwxMjtBdCsrKUp0W0F0XT1fYyhUZSxBdCxwdCwibW9udGgiKTtyZXR1cm4gSnR9ZnVuY3Rpb24gZnUoVGUsS2UscHQsQXQpeyJib29sZWFuIj09dHlwZW9mIFRlPyhHKEtlKSYmKHB0PUtlLEtlPXZvaWQgMCksS2U9S2V8fCIi''@;'; put 'put ''KToocHQ9S2U9VGUsVGU9ITEsRyhLZSkmJihwdD1LZSxLZT12b2lkIDApLEtlPUtlfHwiIik7dmFyIFByLEp0PWYwKCksVm49VGU/SnQuX3dlZWsuZG93OjAscm89W107aWYobnVsbCE9cHQpcmV0dXJuIF9jKEtlLChwdCtWbiklNyxBdCwiZGF5Iik7Zm9yKFByPTA7UHI8NztQcisrKXJvW1By''@;'; put 'put ''XT1fYyhLZSwoUHIrVm4pJTcsQXQsImRheSIpO3JldHVybiByb31Gby5jYWxlbmRhcj1mdW5jdGlvbiBrKFRlLEtlLHB0KXt2YXIgQXQ9dGhpcy5fY2FsZW5kYXJbVGVdfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZTtyZXR1cm4gYihBdCk/QXQuY2FsbChLZSxwdCk6QXR9LEZvLmxvbmdEYXRl''@;'; put 'put ''Rm9ybWF0PWZ1bmN0aW9uIERlKFRlKXt2YXIgS2U9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbVGVdLHB0PXRoaXMuX2xvbmdEYXRlRm9ybWF0W1RlLnRvVXBwZXJDYXNlKCldO3JldHVybiBLZXx8IXB0P0tlOih0aGlzLl9sb25nRGF0ZUZvcm1hdFtUZV09cHQubWF0Y2gocCkubWFwKGZ1bmN0aW9u''@;'; put 'put ''KEF0KXtyZXR1cm4iTU1NTSI9PT1BdHx8Ik1NIj09PUF0fHwiREQiPT09QXR8fCJkZGRkIj09PUF0P0F0LnNsaWNlKDEpOkF0fSkuam9pbigiIiksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbVGVdKX0sRm8uaW52YWxpZERhdGU9ZnVuY3Rpb24gR2UoKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9''@;'; put 'put ''LEZvLm9yZGluYWw9ZnVuY3Rpb24gb3QoVGUpe3JldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoIiVkIixUZSl9LEZvLnByZXBhcnNlPXk5LEZvLnBvc3Rmb3JtYXQ9eTksRm8ucmVsYXRpdmVUaW1lPWZ1bmN0aW9uIHdlKFRlLEtlLHB0LEF0KXt2YXIgSnQ9dGhpcy5fcmVsYXRpdmVUaW1l''@;'; put 'put ''W3B0XTtyZXR1cm4gYihKdCk/SnQoVGUsS2UscHQsQXQpOkp0LnJlcGxhY2UoLyVkL2ksVGUpfSxGby5wYXN0RnV0dXJlPWZ1bmN0aW9uIEVlKFRlLEtlKXt2YXIgcHQ9dGhpcy5fcmVsYXRpdmVUaW1lW1RlPjA/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4gYihwdCk/cHQoS2UpOnB0LnJlcGxh''@;'; put 'put ''Y2UoLyVzL2ksS2UpfSxGby5zZXQ9ZnVuY3Rpb24gQShUZSl7dmFyIEtlLHB0O2ZvcihwdCBpbiBUZSlPKFRlLHB0KSYmKGIoS2U9VGVbcHRdKT90aGlzW3B0XT1LZTp0aGlzWyJfIitwdF09S2UpO3RoaXMuX2NvbmZpZz1UZSx0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudD1u''@;'; put 'put ''ZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSxGby5lcmFzPWZ1bmN0aW9uIHhwKFRlLEtlKXt2YXIgcHQsQXQsSnQsVm49dGhpcy5fZXJhc3x8ZjAoImVuIikuX2Vy''@;'; put 'put ''YXM7Zm9yKHB0PTAsQXQ9Vm4ubGVuZ3RoO3B0PEF0OysrcHQpc3dpdGNoKCJzdHJpbmciPT10eXBlb2YgVm5bcHRdLnNpbmNlJiYoSnQ9eChWbltwdF0uc2luY2UpLnN0YXJ0T2YoImRheSIpLFZuW3B0XS5zaW5jZT1KdC52YWx1ZU9mKCkpLHR5cGVvZiBWbltwdF0udW50aWwpe2Nhc2UidW5k''@;'; put 'put ''ZWZpbmVkIjpWbltwdF0udW50aWw9MS8wO2JyZWFrO2Nhc2Uic3RyaW5nIjpKdD14KFZuW3B0XS51bnRpbCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLFZuW3B0XS51bnRpbD1KdC52YWx1ZU9mKCl9cmV0dXJuIFZufSxGby5lcmFzUGFyc2U9ZnVuY3Rpb24gX1QoVGUsS2UscHQpe3ZhciBB''@;'; put 'put ''dCxKdCxQcixybyxKbyxWbj10aGlzLmVyYXMoKTtmb3IoVGU9VGUudG9VcHBlckNhc2UoKSxBdD0wLEp0PVZuLmxlbmd0aDtBdDxKdDsrK0F0KWlmKFByPVZuW0F0XS5uYW1lLnRvVXBwZXJDYXNlKCkscm89Vm5bQXRdLmFiYnIudG9VcHBlckNhc2UoKSxKbz1WbltBdF0ubmFycm93LnRvVXBw''@;'; put 'put ''ZXJDYXNlKCkscHQpc3dpdGNoKEtlKXtjYXNlIk4iOmNhc2UiTk4iOmNhc2UiTk5OIjppZihybz09PVRlKXJldHVybiBWbltBdF07YnJlYWs7Y2FzZSJOTk5OIjppZihQcj09PVRlKXJldHVybiBWbltBdF07YnJlYWs7Y2FzZSJOTk5OTiI6aWYoSm89PT1UZSlyZXR1cm4gVm5bQXRdfWVsc2Ug''@;'; put 'put ''aWYoW1ByLHJvLEpvXS5pbmRleE9mKFRlKT49MClyZXR1cm4gVm5bQXRdfSxGby5lcmFzQ29udmVydFllYXI9ZnVuY3Rpb24gTDUoVGUsS2Upe3ZhciBwdD1UZS5zaW5jZTw9VGUudW50aWw/MTotMTtyZXR1cm4gdm9pZCAwPT09S2U/eChUZS5zaW5jZSkueWVhcigpOngoVGUuc2luY2UpLnll''@;'; put 'put ''YXIoKSsoS2UtVGUub2Zmc2V0KSpwdH0sRm8uZXJhc0FiYnJSZWdleD1mdW5jdGlvbiBQNShUZSl7cmV0dXJuIE8odGhpcywiX2VyYXNBYmJyUmVnZXgiKXx8WGwuY2FsbCh0aGlzKSxUZT90aGlzLl9lcmFzQWJiclJlZ2V4OnRoaXMuX2VyYXNSZWdleH0sRm8uZXJhc05hbWVSZWdleD1mdW5j''@;'; put 'put ''dGlvbiBiMihUZSl7cmV0dXJuIE8odGhpcywiX2VyYXNOYW1lUmVnZXgiKXx8WGwuY2FsbCh0aGlzKSxUZT90aGlzLl9lcmFzTmFtZVJlZ2V4OnRoaXMuX2VyYXNSZWdleH0sRm8uZXJhc05hcnJvd1JlZ2V4PWZ1bmN0aW9uIEY1KFRlKXtyZXR1cm4gTyh0aGlzLCJfZXJhc05hcnJvd1JlZ2V4''@;'; put 'put ''Iil8fFhsLmNhbGwodGhpcyksVGU/dGhpcy5fZXJhc05hcnJvd1JlZ2V4OnRoaXMuX2VyYXNSZWdleH0sRm8ubW9udGhzPWZ1bmN0aW9uIFJyKFRlLEtlKXtyZXR1cm4gVGU/c2UodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHNbVGUubW9udGgoKV06dGhpcy5fbW9udGhzWyh0aGlzLl9tb250''@;'; put 'put ''aHMuaXNGb3JtYXR8fFFpKS50ZXN0KEtlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW1RlLm1vbnRoKCldOnNlKHRoaXMuX21vbnRocyk/dGhpcy5fbW9udGhzOnRoaXMuX21vbnRocy5zdGFuZGFsb25lfSxGby5tb250aHNTaG9ydD1mdW5jdGlvbiBZaShUZSxLZSl7cmV0dXJuIFRlP3NlKHRo''@;'; put 'put ''aXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydFtUZS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFtRaS50ZXN0KEtlKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW1RlLm1vbnRoKCldOnNlKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydDp0aGlzLl9tb250aHNT''@;'; put 'put ''aG9ydC5zdGFuZGFsb25lfSxGby5tb250aHNQYXJzZT1mdW5jdGlvbiBpcyhUZSxLZSxwdCl7dmFyIEF0LEp0LFZuO2lmKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpcmV0dXJuIHpvLmNhbGwodGhpcyxUZSxLZSxwdCk7Zm9yKHRoaXMuX21vbnRoc1BhcnNlfHwodGhpcy5fbW9udGhzUGFyc2U9''@;'; put 'put ''W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10pLEF0PTA7QXQ8MTI7QXQrKyl7aWYoSnQ9eihbMmUzLEF0XSkscHQmJiF0aGlzLl9sb25nTW9udGhzUGFyc2VbQXRdJiYodGhpcy5fbG9uZ01vbnRoc1BhcnNlW0F0XT1uZXcgUmVnRXhwKCJeIit0''@;'; put 'put ''aGlzLm1vbnRocyhKdCwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbQXRdPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzU2hvcnQoSnQsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksIXB0JiYhdGhpcy5fbW9udGhzUGFyc2VbQXRdJiYo''@;'; put 'put ''Vm49Il4iK3RoaXMubW9udGhzKEp0LCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoSnQsIiIpLHRoaXMuX21vbnRoc1BhcnNlW0F0XT1uZXcgUmVnRXhwKFZuLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxwdCYmIk1NTU0iPT09S2UmJnRoaXMuX2xvbmdNb250aHNQYXJzZVtBdF0udGVzdChUZSkp''@;'; put 'put ''cmV0dXJuIEF0O2lmKHB0JiYiTU1NIj09PUtlJiZ0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW0F0XS50ZXN0KFRlKSlyZXR1cm4gQXQ7aWYoIXB0JiZ0aGlzLl9tb250aHNQYXJzZVtBdF0udGVzdChUZSkpcmV0dXJuIEF0fX0sRm8ubW9udGhzUmVnZXg9ZnVuY3Rpb24gJHUoVGUpe3JldHVybiB0''@;'; put 'put ''aGlzLl9tb250aHNQYXJzZUV4YWN0PyhPKHRoaXMsIl9tb250aHNSZWdleCIpfHxHZC5jYWxsKHRoaXMpLFRlP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KTooTyh0aGlzLCJfbW9udGhzUmVnZXgiKXx8KHRoaXMuX21vbnRoc1JlZ2V4PXZvKSx0aGlzLl9tb250''@;'; put 'put ''aHNTdHJpY3RSZWdleCYmVGU/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpfSxGby5tb250aHNTaG9ydFJlZ2V4PWZ1bmN0aW9uIEZ1KFRlKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oTyh0aGlzLCJfbW9udGhzUmVnZXgiKXx8R2QuY2FsbCh0aGlz''@;'; put 'put ''KSxUZT90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpOihPKHRoaXMsIl9tb250aHNTaG9ydFJlZ2V4Iil8fCh0aGlzLl9tb250aHNTaG9ydFJlZ2V4PWZvKSx0aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4JiZUZT90aGlzLl9tb250aHNTaG9y''@;'; put 'put ''dFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpfSxGby53ZWVrPWZ1bmN0aW9uIEtkKFRlKXtyZXR1cm4gYXUoVGUsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vlay5kb3kpLndlZWt9LEZvLmZpcnN0RGF5T2ZZZWFyPWZ1bmN0aW9uIHRhKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG95''@;'; put 'put ''fSxGby5maXJzdERheU9mV2Vlaz1mdW5jdGlvbiBfMSgpe3JldHVybiB0aGlzLl93ZWVrLmRvd30sRm8ud2Vla2RheXM9ZnVuY3Rpb24gYWcoVGUsS2Upe3ZhciBwdD1zZSh0aGlzLl93ZWVrZGF5cyk/dGhpcy5fd2Vla2RheXM6dGhpcy5fd2Vla2RheXNbVGUmJiEwIT09VGUmJnRoaXMuX3dl''@;'; put 'put ''ZWtkYXlzLmlzRm9ybWF0LnRlc3QoS2UpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl07cmV0dXJuITA9PT1UZT9VMChwdCx0aGlzLl93ZWVrLmRvdyk6VGU/cHRbVGUuZGF5KCldOnB0fSxGby53ZWVrZGF5c01pbj1mdW5jdGlvbiBEZihUZSl7cmV0dXJuITA9PT1UZT9VMCh0aGlzLl93ZWVrZGF5''@;'; put 'put ''c01pbix0aGlzLl93ZWVrLmRvdyk6VGU/dGhpcy5fd2Vla2RheXNNaW5bVGUuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufSxGby53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIGdwKFRlKXtyZXR1cm4hMD09PVRlP1UwKHRoaXMuX3dlZWtkYXlzU2hvcnQsdGhpcy5fd2Vlay5kb3cpOlRlP3RoaXMu''@;'; put 'put ''X3dlZWtkYXlzU2hvcnRbVGUuZGF5KCldOnRoaXMuX3dlZWtkYXlzU2hvcnR9LEZvLndlZWtkYXlzUGFyc2U9ZnVuY3Rpb24gbHUoVGUsS2UscHQpe3ZhciBBdCxKdCxWbjtpZih0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpcmV0dXJuIGQyLmNhbGwodGhpcyxUZSxLZSxwdCk7Zm9yKHRoaXMu''@;'; put 'put ''X3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxBdD0wO0F0PDc7QXQrKyl7aWYoSnQ9eihbMmUzLDFdKS5kYXkoQXQpLHB0''@;'; put 'put ''JiYhdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbQXRdJiYodGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbQXRdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXMoSnQsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW0F0XT1uZXcgUmVnRXhw''@;'; put 'put ''KCJeIit0aGlzLndlZWtkYXlzU2hvcnQoSnQsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtBdF09bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c01pbihKdCwiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSksdGhpcy5fd2Vl''@;'; put 'put ''a2RheXNQYXJzZVtBdF18fChWbj0iXiIrdGhpcy53ZWVrZGF5cyhKdCwiIikrInxeIit0aGlzLndlZWtkYXlzU2hvcnQoSnQsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c01pbihKdCwiIiksdGhpcy5fd2Vla2RheXNQYXJzZVtBdF09bmV3IFJlZ0V4cChWbi5yZXBsYWNlKCIuIiwiIiksImkiKSks''@;'; put 'put ''cHQmJiJkZGRkIj09PUtlJiZ0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtBdF0udGVzdChUZSkpcmV0dXJuIEF0O2lmKHB0JiYiZGRkIj09PUtlJiZ0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbQXRdLnRlc3QoVGUpKXJldHVybiBBdDtpZihwdCYmImRkIj09PUtlJiZ0aGlzLl9taW5XZWVrZGF5''@;'; put 'put ''c1BhcnNlW0F0XS50ZXN0KFRlKSlyZXR1cm4gQXQ7aWYoIXB0JiZ0aGlzLl93ZWVrZGF5c1BhcnNlW0F0XS50ZXN0KFRlKSlyZXR1cm4gQXR9fSxGby53ZWVrZGF5c1JlZ2V4PWZ1bmN0aW9uIGxnKFRlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhPKHRoaXMsIl93ZWVrZGF5''@;'; put 'put ''c1JlZ2V4Iil8fGlyLmNhbGwodGhpcyksVGU/dGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KTooTyh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHwodGhpcy5fd2Vla2RheXNSZWdleD1BZiksdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCYmVGU/dGhpcy5fd2Vl''@;'; put 'put ''a2RheXNTdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c1JlZ2V4KX0sRm8ud2Vla2RheXNTaG9ydFJlZ2V4PWZ1bmN0aW9uIFJmKFRlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhPKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fGlyLmNhbGwodGhpcyksVGU/dGhpcy5fd2Vla2Rh''@;'; put 'put ''eXNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCk6KE8odGhpcywiX3dlZWtkYXlzU2hvcnRSZWdleCIpfHwodGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PXNnKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgmJlRlP3RoaXMuX3dlZWtkYXlzU2hvcnRTdHJp''@;'; put 'put ''Y3RSZWdleDp0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXgpfSxGby53ZWVrZGF5c01pblJlZ2V4PWZ1bmN0aW9uIExmKFRlKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhPKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fGlyLmNhbGwodGhpcyksVGU/dGhpcy5fd2Vla2RheXNNaW5T''@;'; put 'put ''dHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c01pblJlZ2V4KTooTyh0aGlzLCJfd2Vla2RheXNNaW5SZWdleCIpfHwodGhpcy5fd2Vla2RheXNNaW5SZWdleD1iMSksdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCYmVGU/dGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDp0aGlzLl93ZWVr''@;'; put 'put ''ZGF5c01pblJlZ2V4KX0sRm8uaXNQTT1mdW5jdGlvbiBjZyhUZSl7cmV0dXJuInAiPT09KFRlKyIiKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKX0sRm8ubWVyaWRpZW09ZnVuY3Rpb24gdmkoVGUsS2UscHQpe3JldHVybiBUZT4xMT9wdD8icG0iOiJQTSI6cHQ/ImFtIjoiQU0ifSxtYygiZW4i''@;'; put 'put ''LHtlcmFzOlt7c2luY2U6IjAwMDEtMDEtMDEiLHVudGlsOjEvMCxvZmZzZXQ6MSxuYW1lOiJBbm5vIERvbWluaSIsbmFycm93OiJBRCIsYWJicjoiQUQifSx7c2luY2U6IjAwMDAtMTItMzEiLHVudGlsOi0xLzAsb2Zmc2V0OjEsbmFtZToiQmVmb3JlIENocmlzdCIsbmFycm93OiJCQyIsYWJi''@;'; put 'put ''cjoiQkMifV0sZGF5T2ZNb250aE9yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24oVGUpe3ZhciBLZT1UZSUxMDtyZXR1cm4gVGUrKDE9PT1FdChUZSUxMDAvMTApPyJ0aCI6MT09PUtlPyJzdCI6Mj09PUtlPyJuZCI6Mz09PUtlPyJyZCI6InRoIil9''@;'; put 'put ''fSkseC5sYW5nPWxlKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsbWMpLHgubGFuZ0RhdGE9bGUoIm1vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4iLGYwKTt2YXIgUWw9TWF0''@;'; put 'put ''aC5hYnM7ZnVuY3Rpb24gYmMoVGUsS2UscHQsQXQpe3ZhciBKdD1hbChLZSxwdCk7cmV0dXJuIFRlLl9taWxsaXNlY29uZHMrPUF0Kkp0Ll9taWxsaXNlY29uZHMsVGUuX2RheXMrPUF0Kkp0Ll9kYXlzLFRlLl9tb250aHMrPUF0Kkp0Ll9tb250aHMsVGUuX2J1YmJsZSgpfWZ1bmN0aW9uIFRs''@;'; put 'put ''KFRlKXtyZXR1cm4gVGU8MD9NYXRoLmZsb29yKFRlKTpNYXRoLmNlaWwoVGUpfWZ1bmN0aW9uIFVvKFRlKXtyZXR1cm4gNDgwMCpUZS8xNDYwOTd9ZnVuY3Rpb24gQzIoVGUpe3JldHVybiAxNDYwOTcqVGUvNDgwMH1mdW5jdGlvbiBwdShUZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRo''@;'; put 'put ''aXMuYXMoVGUpfX12YXIgWGE9cHUoIm1zIiksa3A9cHUoInMiKSxTMj1wdSgibSIpLEMxPXB1KCJoIiksSHU9cHUoImQiKSxyaD1wdSgidyIpLGloPXB1KCJNIiksQ2c9cHUoIlEiKSxNMj1wdSgieSIpLEtvPVhhO2Z1bmN0aW9uIERjKFRlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhp''@;'; put 'put ''cy5pc1ZhbGlkKCk/dGhpcy5fZGF0YVtUZV06TmFOfX12YXIgQXA9RGMoIm1pbGxpc2Vjb25kcyIpLFpmPURjKCJzZWNvbmRzIiksa2w9RGMoIm1pbnV0ZXMiKSxTZz1EYygiaG91cnMiKSxVYz1EYygiZGF5cyIpLFpjPURjKCJtb250aHMiKSx5Yz1EYygieWVhcnMiKTt2YXIgdjA9TWF0aC5y''@;'; put 'put ''b3VuZCxlYz17c3M6NDQsczo0NSxtOjQ1LGg6MjIsZDoyNix3Om51bGwsTToxMX07ZnVuY3Rpb24gRHAoVGUsS2UscHQsQXQsSnQpe3JldHVybiBKdC5yZWxhdGl2ZVRpbWUoS2V8fDEsISFwdCxUZSxBdCl9dmFyIFo1PU1hdGguYWJzO2Z1bmN0aW9uIHNoKFRlKXtyZXR1cm4oVGU+MCktKFRl''@;'; put 'put ''PDApfHwrVGV9ZnVuY3Rpb24gWTUoKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIEF0LEp0LFZuLFByLEpvLEhzLFljLFMxLFRlPVo1KHRoaXMuX21pbGxpc2Vjb25kcykvMWUzLEtlPVo1KHRoaXMuX2RheXMpLHB0PVo1KHRo''@;'; put 'put ''aXMuX21vbnRocykscm89dGhpcy5hc1NlY29uZHMoKTtyZXR1cm4gcm8/KEF0PW50KFRlLzYwKSxKdD1udChBdC82MCksVGUlPTYwLEF0JT02MCxWbj1udChwdC8xMikscHQlPTEyLFByPVRlP1RlLnRvRml4ZWQoMykucmVwbGFjZSgvXC4/MCskLywiIik6IiIsSm89cm88MD8iLSI6IiIsSHM9''@;'; put 'put ''c2godGhpcy5fbW9udGhzKSE9PXNoKHJvKT8iLSI6IiIsWWM9c2godGhpcy5fZGF5cykhPT1zaChybyk/Ii0iOiIiLFMxPXNoKHRoaXMuX21pbGxpc2Vjb25kcykhPT1zaChybyk/Ii0iOiIiLEpvKyJQIisoVm4/SHMrVm4rIlkiOiIiKSsocHQ/SHMrcHQrIk0iOiIiKSsoS2U/WWMrS2UrIkQi''@;'; put 'put ''OiIiKSsoSnR8fEF0fHxUZT8iVCI6IiIpKyhKdD9TMStKdCsiSCI6IiIpKyhBdD9TMStBdCsiTSI6IiIpKyhUZT9TMStQcisiUyI6IiIpKToiUDBEIn12YXIganM9ZjIucHJvdG90eXBlO3JldHVybiBqcy5pc1ZhbGlkPWZ1bmN0aW9uIGhnKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWR9LGpzLmFi''@;'; put 'put ''cz1mdW5jdGlvbiBnbCgpe3ZhciBUZT10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9UWwodGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPVFsKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1RbCh0aGlzLl9tb250aHMpLFRlLm1pbGxpc2Vjb25kcz1RbChUZS5taWxs''@;'; put 'put ''aXNlY29uZHMpLFRlLnNlY29uZHM9UWwoVGUuc2Vjb25kcyksVGUubWludXRlcz1RbChUZS5taW51dGVzKSxUZS5ob3Vycz1RbChUZS5ob3VycyksVGUubW9udGhzPVFsKFRlLm1vbnRocyksVGUueWVhcnM9UWwoVGUueWVhcnMpLHRoaXN9LGpzLmFkZD1mdW5jdGlvbiBtMChUZSxLZSl7cmV0''@;'; put 'put ''dXJuIGJjKHRoaXMsVGUsS2UsMSl9LGpzLnN1YnRyYWN0PWZ1bmN0aW9uIENhKFRlLEtlKXtyZXR1cm4gYmModGhpcyxUZSxLZSwtMSl9LGpzLmFzPWZ1bmN0aW9uIFRwKFRlKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjt2YXIgS2UscHQsQXQ9dGhpcy5fbWlsbGlzZWNvbmRzO2lm''@;'; put 'put ''KCJtb250aCI9PT0oVGU9WGUoVGUpKXx8InF1YXJ0ZXIiPT09VGV8fCJ5ZWFyIj09PVRlKXN3aXRjaChLZT10aGlzLl9kYXlzK0F0Lzg2NGU1LHB0PXRoaXMuX21vbnRocytVbyhLZSksVGUpe2Nhc2UibW9udGgiOnJldHVybiBwdDtjYXNlInF1YXJ0ZXIiOnJldHVybiBwdC8zO2Nhc2UieWVh''@;'; put 'put ''ciI6cmV0dXJuIHB0LzEyfWVsc2Ugc3dpdGNoKEtlPXRoaXMuX2RheXMrTWF0aC5yb3VuZChDMih0aGlzLl9tb250aHMpKSxUZSl7Y2FzZSJ3ZWVrIjpyZXR1cm4gS2UvNytBdC82MDQ4ZTU7Y2FzZSJkYXkiOnJldHVybiBLZStBdC84NjRlNTtjYXNlImhvdXIiOnJldHVybiAyNCpLZStBdC8z''@;'; put 'put ''NmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMTQ0MCpLZStBdC82ZTQ7Y2FzZSJzZWNvbmQiOnJldHVybiA4NjQwMCpLZStBdC8xZTM7Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUqS2UpK0F0O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHVuaXQgIitU''@;'; put 'put ''ZSl9fSxqcy5hc01pbGxpc2Vjb25kcz1YYSxqcy5hc1NlY29uZHM9a3AsanMuYXNNaW51dGVzPVMyLGpzLmFzSG91cnM9QzEsanMuYXNEYXlzPUh1LGpzLmFzV2Vla3M9cmgsanMuYXNNb250aHM9aWgsanMuYXNRdWFydGVycz1DZyxqcy5hc1llYXJzPU0yLGpzLnZhbHVlT2Y9S28sanMuX2J1''@;'; put 'put ''YmJsZT1mdW5jdGlvbiBHMCgpe3ZhciBKdCxWbixQcixybyxKbyxUZT10aGlzLl9taWxsaXNlY29uZHMsS2U9dGhpcy5fZGF5cyxwdD10aGlzLl9tb250aHMsQXQ9dGhpcy5fZGF0YTtyZXR1cm4gVGU+PTAmJktlPj0wJiZwdD49MHx8VGU8PTAmJktlPD0wJiZwdDw9MHx8KFRlKz04NjRlNSpU''@;'; put 'put ''bChDMihwdCkrS2UpLEtlPTAscHQ9MCksQXQubWlsbGlzZWNvbmRzPVRlJTFlMyxKdD1udChUZS8xZTMpLEF0LnNlY29uZHM9SnQlNjAsVm49bnQoSnQvNjApLEF0Lm1pbnV0ZXM9Vm4lNjAsUHI9bnQoVm4vNjApLEF0LmhvdXJzPVByJTI0LEtlKz1udChQci8yNCkscHQrPUpvPW50KFVvKEtl''@;'; put 'put ''KSksS2UtPVRsKEMyKEpvKSkscm89bnQocHQvMTIpLHB0JT0xMixBdC5kYXlzPUtlLEF0Lm1vbnRocz1wdCxBdC55ZWFycz1ybyx0aGlzfSxqcy5jbG9uZT1mdW5jdGlvbiB6NSgpe3JldHVybiBhbCh0aGlzKX0sanMuZ2V0PWZ1bmN0aW9uIG9oKFRlKXtyZXR1cm4gVGU9WGUoVGUpLHRoaXMu''@;'; put 'put ''aXNWYWxpZCgpP3RoaXNbVGUrInMiXSgpOk5hTn0sanMubWlsbGlzZWNvbmRzPUFwLGpzLnNlY29uZHM9WmYsanMubWludXRlcz1rbCxqcy5ob3Vycz1TZyxqcy5kYXlzPVVjLGpzLndlZWtzPWZ1bmN0aW9uIHgyKCl7cmV0dXJuIG50KHRoaXMuZGF5cygpLzcpfSxqcy5tb250aHM9WmMsanMu''@;'; put 'put ''eWVhcnM9eWMsanMuaHVtYW5pemU9ZnVuY3Rpb24gdzkoVGUsS2Upe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTt2YXIgSnQsVm4scHQ9ITEsQXQ9ZWM7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBUZSYmKEtlPVRlLFRlPSExKSwiYm9v''@;'; put 'put ''bGVhbiI9PXR5cGVvZiBUZSYmKHB0PVRlKSwib2JqZWN0Ij09dHlwZW9mIEtlJiYoQXQ9T2JqZWN0LmFzc2lnbih7fSxlYyxLZSksbnVsbCE9S2UucyYmbnVsbD09S2Uuc3MmJihBdC5zcz1LZS5zLTEpKSxWbj1mdW5jdGlvbiBGeShUZSxLZSxwdCxBdCl7dmFyIEp0PWFsKFRlKS5hYnMoKSxW''@;'; put 'put ''bj12MChKdC5hcygicyIpKSxQcj12MChKdC5hcygibSIpKSxybz12MChKdC5hcygiaCIpKSxKbz12MChKdC5hcygiZCIpKSxIcz12MChKdC5hcygiTSIpKSxZYz12MChKdC5hcygidyIpKSxTMT12MChKdC5hcygieSIpKSxhaD1Wbjw9cHQuc3MmJlsicyIsVm5dfHxWbjxwdC5zJiZbInNzIixW''@;'; put 'put ''bl18fFByPD0xJiZbIm0iXXx8UHI8cHQubSYmWyJtbSIsUHJdfHxybzw9MSYmWyJoIl18fHJvPHB0LmgmJlsiaGgiLHJvXXx8Sm88PTEmJlsiZCJdfHxKbzxwdC5kJiZbImRkIixKb107cmV0dXJuIG51bGwhPXB0LncmJihhaD1haHx8WWM8PTEmJlsidyJdfHxZYzxwdC53JiZbInd3IixZY10p''@;'; put 'put ''LChhaD1haHx8SHM8PTEmJlsiTSJdfHxIczxwdC5NJiZbIk1NIixIc118fFMxPD0xJiZbInkiXXx8WyJ5eSIsUzFdKVsyXT1LZSxhaFszXT0rVGU+MCxhaFs0XT1BdCxEcC5hcHBseShudWxsLGFoKX0odGhpcywhcHQsQXQsSnQ9dGhpcy5sb2NhbGVEYXRhKCkpLHB0JiYoVm49SnQucGFzdEZ1''@;'; put 'put ''dHVyZSgrdGhpcyxWbikpLEp0LnBvc3Rmb3JtYXQoVm4pfSxqcy50b0lTT1N0cmluZz1ZNSxqcy50b1N0cmluZz1ZNSxqcy50b0pTT049WTUsanMubG9jYWxlPVNvLGpzLmxvY2FsZURhdGE9djIsanMudG9Jc29TdHJpbmc9bGUoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNl''@;'; put 'put ''IHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIixZNSksanMubGFuZz1TcixjZSgiWCIsMCwwLCJ1bml4IiksY2UoIngiLDAsMCwidmFsdWVPZiIpLGp0KCJ4IixObiksanQoIlgiLC9bKy1dP1xkKyhcLlxkezEsM30pPy8pLFR0KCJYIixmdW5jdGlvbihU''@;'; put 'put ''ZSxLZSxwdCl7cHQuX2Q9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQoVGUpKX0pLFR0KCJ4IixmdW5jdGlvbihUZSxLZSxwdCl7cHQuX2Q9bmV3IERhdGUoRXQoVGUpKX0pLHgudmVyc2lvbj0iMi4zMC4xIixmdW5jdGlvbiBtKFRlKXtvZT1UZX0oeWEpLHguZm49cGkseC5taW49ZnVuY3Rpb24g''@;'; put 'put ''WjAoKXtyZXR1cm4gaWQoImlzQmVmb3JlIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LHgubWF4PWZ1bmN0aW9uIGNyKCl7cmV0dXJuIGlkKCJpc0FmdGVyIixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LHgubm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93P0RhdGUubm93''@;'; put 'put ''KCk6K25ldyBEYXRlfSx4LnV0Yz16LHgudW5peD1mdW5jdGlvbiBuaChUZSl7cmV0dXJuIHlhKDFlMypUZSl9LHgubW9udGhzPWZ1bmN0aW9uIEVwKFRlLEtlKXtyZXR1cm4gSGwoVGUsS2UsIm1vbnRocyIpfSx4LmlzRGF0ZT1ELHgubG9jYWxlPW1jLHguaW52YWxpZD1VLHguZHVyYXRpb249''@;'; put 'put ''YWwseC5pc01vbWVudD1pZSx4LndlZWtkYXlzPWZ1bmN0aW9uIHdpKFRlLEtlLHB0KXtyZXR1cm4gZnUoVGUsS2UscHQsIndlZWtkYXlzIil9LHgucGFyc2Vab25lPWZ1bmN0aW9uIFB5KCl7cmV0dXJuIHlhLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYXJzZVpvbmUoKX0seC5sb2NhbGVEYXRh''@;'; put 'put ''PWYwLHguaXNEdXJhdGlvbj1mZyx4Lm1vbnRoc1Nob3J0PWZ1bmN0aW9uIEthKFRlLEtlKXtyZXR1cm4gSGwoVGUsS2UsIm1vbnRoc1Nob3J0Iil9LHgud2Vla2RheXNNaW49ZnVuY3Rpb24gRWwoVGUsS2UscHQpe3JldHVybiBmdShUZSxLZSxwdCwid2Vla2RheXNNaW4iKX0seC5kZWZpbmVM''@;'; put 'put ''b2NhbGU9Y3UseC51cGRhdGVMb2NhbGU9ZnVuY3Rpb24gaGkoVGUsS2Upe2lmKG51bGwhPUtlKXt2YXIgcHQsQXQsSnQ9Umk7bnVsbCE9eG9bVGVdJiZudWxsIT14b1tUZV0ucGFyZW50TG9jYWxlP3hvW1RlXS5zZXQoRih4b1tUZV0uX2NvbmZpZyxLZSkpOihudWxsIT0oQXQ9eHIoVGUpKSYm''@;'; put 'put ''KEp0PUF0Ll9jb25maWcpLEtlPUYoSnQsS2UpLG51bGw9PUF0JiYoS2UuYWJicj1UZSksKHB0PW5ldyBIKEtlKSkucGFyZW50TG9jYWxlPXhvW1RlXSx4b1tUZV09cHQpLG1jKFRlKX1lbHNlIG51bGwhPXhvW1RlXSYmKG51bGwhPXhvW1RlXS5wYXJlbnRMb2NhbGU/KHhvW1RlXT14b1tUZV0u''@;'; put 'put ''cGFyZW50TG9jYWxlLFRlPT09bWMoKSYmbWMoVGUpKTpudWxsIT14b1tUZV0mJmRlbGV0ZSB4b1tUZV0pO3JldHVybiB4b1tUZV19LHgubG9jYWxlcz1mdW5jdGlvbiB0OSgpe3JldHVybiBnKHhvKX0seC53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uIF9vKFRlLEtlLHB0KXtyZXR1cm4gZnUoVGUs''@;'; put 'put ''S2UscHQsIndlZWtkYXlzU2hvcnQiKX0seC5ub3JtYWxpemVVbml0cz1YZSx4LnJlbGF0aXZlVGltZVJvdW5kaW5nPWZ1bmN0aW9uIE55KFRlKXtyZXR1cm4gdm9pZCAwPT09VGU/djA6ImZ1bmN0aW9uIj09dHlwZW9mIFRlJiYodjA9VGUsITApfSx4LnJlbGF0aXZlVGltZVRocmVzaG9sZD1m''@;'; put 'put ''dW5jdGlvbiBVNShUZSxLZSl7cmV0dXJuIHZvaWQgMCE9PWVjW1RlXSYmKHZvaWQgMD09PUtlP2VjW1RlXTooZWNbVGVdPUtlLCJzIj09PVRlJiYoZWMuc3M9S2UtMSksITApKX0seC5jYWxlbmRhckZvcm1hdD1mdW5jdGlvbiBtZyhUZSxLZSl7dmFyIHB0PVRlLmRpZmYoS2UsImRheXMiLCEw''@;'; put 'put ''KTtyZXR1cm4gcHQ8LTY/InNhbWVFbHNlIjpwdDwtMT8ibGFzdFdlZWsiOnB0PDA/Imxhc3REYXkiOnB0PDE/InNhbWVEYXkiOnB0PDI/Im5leHREYXkiOnB0PDc/Im5leHRXZWVrIjoic2FtZUVsc2UifSx4LnByb3RvdHlwZT1waSx4LkhUTUw1X0ZNVD17REFURVRJTUVfTE9DQUw6IllZWVkt''@;'; put 'put ''TU0tRERUSEg6bW0iLERBVEVUSU1FX0xPQ0FMX1NFQ09ORFM6IllZWVktTU0tRERUSEg6bW06c3MiLERBVEVUSU1FX0xPQ0FMX01TOiJZWVlZLU1NLUREVEhIOm1tOnNzLlNTUyIsREFURToiWVlZWS1NTS1ERCIsVElNRToiSEg6bW0iLFRJTUVfU0VDT05EUzoiSEg6bW06c3MiLFRJTUVfTVM6''@;'; put 'put ''IkhIOm1tOnNzLlNTUyIsV0VFSzoiR0dHRy1bV11XVyIsTU9OVEg6IllZWVktTU0ifSx4fSgpfSw3ODM3NTpRZT0+e1FlLmV4cG9ydHM9ZnVuY3Rpb24gTWUoUixvZSx4KXtmdW5jdGlvbiBtKE8sSSl7aWYoIW9lW09dKXtpZighUltPXSl7aWYoc2UpcmV0dXJuIHNlKE8sITApO3ZhciBHPW5l''@;'; put 'put ''dyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK08rIiciKTt0aHJvdyBHLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLEd9dmFyIEQ9b2VbT109e2V4cG9ydHM6e319O1JbT11bMF0uY2FsbChELmV4cG9ydHMsZnVuY3Rpb24oVCl7cmV0dXJuIG0oUltPXVsxXVtUXXx8VCl9LEQsRC5leHBv''@;'; put 'put ''cnRzLE1lLFIsb2UseCl9cmV0dXJuIG9lW09dLmV4cG9ydHN9Zm9yKHZhciBzZT12b2lkIDAsTT0wO008eC5sZW5ndGg7TSsrKW0oeFtNXSk7cmV0dXJuIG19KHsxOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1T''@;'; put 'put ''eW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAh''@;'; put 'put ''PT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5iZz1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1l''@;'; put 'put ''JiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxs''@;'; put 'put ''KEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsx''@;'; put 'put ''OltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImJnIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiXHUwNDE4IixtaWxsaW9uOiJcdTA0MTAiLGJpbGxpb246Ik0iLHRyaWxsaW9uOiJUIn0sb3Jk''@;'; put 'put ''aW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUwNDNiXHUwNDMyLiIsY29kZToiQkdOIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwi''@;'; put 'put ''dSI/d2luZG93Ont9KX0se31dLDI6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZv''@;'; put 'put ''aWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmNzQ1o9c2UoKX0oZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1y''@;'; put 'put ''ZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJjcy1DWiIsZGVsaW1pdGVyczp7dGhvdXNhbmRz''@;'; put 'put ''OiJceGEwIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6InRpcy4iLG1pbGxpb246Im1pbC4iLGJpbGxpb246Im1sZC4iLHRyaWxsaW9uOiJiaWwuIn0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sc3BhY2VTZXBhcmF0ZWQ6ITAsY3VycmVuY3k6e3N5bWJvbDoi''@;'; put 'put ''S1x1MDEwZCIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkNaSyJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBh''@;'; put 'put ''cmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBz''@;'; put 'put ''ZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwzOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5j''@;'; put 'put ''dGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5u''@;'; put 'put ''dW1icm89e30pKS5kYURLPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEco''@;'; put 'put ''VCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18''@;'; put 'put ''fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoi''@;'; put 'put ''ZGEtREsiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLiIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0IixtaWxsaW9uOiJtaW8iLGJpbGxpb246Im1pYSIsdHJpbGxpb246ImIifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiJr''@;'; put 'put ''ciIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkRLSyJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6''@;'; put 'put ''ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6''@;'; put 'put ''ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1''@;'; put 'put ''Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw0OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0''@;'; put 'put ''ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihz''@;'; put 'put ''ZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89''@;'; put 'put ''e30pKS5kZUFUPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7''@;'; put 'put ''dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxC''@;'; put 'put ''LEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZGUtQVQi''@;'; put 'put ''LGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBhYyIsY29k''@;'; put 'put ''ZToiRVVSIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDU6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmlj''@;'; put 'put ''dCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''TS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlw''@;'; put 'put ''ZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmRlQ0g9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1b''@;'; put 'put ''VF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBC''@;'; put 'put ''PU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEku''@;'; put 'put ''bGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJkZS1DSCIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiInIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxp''@;'; put 'put ''b246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiQ0hGIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiQ0hGIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2Vw''@;'; put 'put ''YXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19''@;'; put 'put ''fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDY6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rp''@;'; put 'put ''b24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1''@;'; put 'put ''Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRv''@;'; put 'put ''dzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmRlREU9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4''@;'; put 'put ''cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0Qr''@;'; put 'put ''KylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJkZS1ERSIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRy''@;'; put 'put ''aWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sc3BhY2VTZXBhcmF0ZWQ6ITAsY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiRVVSIn0sY3VycmVuY3lGb3JtYXQ6e3RvdGFsTGVuZ3RoOjQsdGhvdXNhbmRTZXBhcmF0ZWQ6''@;'; put 'put ''ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdp''@;'; put 'put ''dGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEp''@;'; put 'put ''fSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw3OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybiht''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0h''@;'; put 'put ''PT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lk''@;'; put 'put ''IDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5kZUxJPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBd''@;'; put 'put ''LmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4g''@;'; put 'put ''an0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZGUtTEkiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiJyIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGlu''@;'; put 'put ''YWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6IkNIRiIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkNIRiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1h''@;'; put 'put ''dHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNp''@;'; put 'put ''bWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxs''@;'; put 'put ''KHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw4OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wu''@;'; put 'put ''cHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6''@;'; put 'put ''dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5lbD1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtp''@;'; put 'put ''ZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhw''@;'; put 'put ''b3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5j''@;'; put 'put ''dGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVsIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6Ii4iLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiXHUwM2M3IixtaWxsaW9uOiJcdTAzYjUiLGJpbGxpb246Ilx1MDNiNCIsdHJpbGxpb246Ilx1MDNjNCJ9''@;'; put 'put ''LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBhYyIsY29kZToiRVVSIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/''@;'; put 'put ''d2luZG93Ont9KX0se31dLDk6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJu''@;'; put 'put ''IHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQg''@;'; put 'put ''MD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVuQVU9c2UoKX0oZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBm''@;'; put 'put ''aW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1''@;'; put 'put ''cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlbi1BVSIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIs''@;'; put 'put ''IixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2YXIgaj1JJTEwO3JldHVybiAxPT1+fihJJTEwMC8xMCk/InRoIjoxPT09aj8ic3QiOjI9PT1qPyJuZCI6Mz09''@;'; put 'put ''PWo/InJkIjoidGgifSxjdXJyZW5jeTp7c3ltYm9sOiIkIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJBVUQifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRz''@;'; put 'put ''Ont0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjJ9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxm''@;'; put 'put ''dWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1''@;'; put 'put ''Ij93aW5kb3c6e30pfSx7fV0sMTA6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZv''@;'; put 'put ''aWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVuR0I9c2UoKX0oZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1y''@;'; put 'put ''ZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlbi1HQiIsZGVsaW1pdGVyczp7dGhvdXNhbmRz''@;'; put 'put ''OiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2YXIgaj1JJTEwO3JldHVybiAxPT1+fihJJTEwMC8xMCk/InRoIjoxPT09aj8ic3QiOjI9PT1qPyJuZCI6''@;'; put 'put ''Mz09PWo/InJkIjoidGgifSxjdXJyZW5jeTp7c3ltYm9sOiJceGEzIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJHQlAifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3Vy''@;'; put 'put ''RGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEwLHNwYWNlU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjJ9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1''@;'; put 'put ''cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEwLHNwYWNlU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5''@;'; put 'put ''cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMTE6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5''@;'; put 'put ''cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Yg''@;'; put 'put ''c2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVuSUU9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUm''@;'; put 'put ''JnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMs''@;'; put 'put ''ZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24o''@;'; put 'put ''c2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlbi1JRSIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2''@;'; put 'put ''YXIgaj1JJTEwO3JldHVybiAxPT1+fihJJTEwMC8xMCk/InRoIjoxPT09aj8ic3QiOjI9PT1qPyJuZCI6Mz09PWo/InJkIjoidGgifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTIwYWMiLGNvZGU6IkVVUiJ9fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/''@;'; put 'put ''Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwxMjpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3lt''@;'; put 'put ''Ym9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBl''@;'; put 'put ''b2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRo''@;'; put 'put ''aXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZW5OWj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEw''@;'; put 'put ''KTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1''@;'; put 'put ''cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0''@;'; put 'put ''cz17bGFuZ3VhZ2VUYWc6ImVuLU5aIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKEkpe3ZhciBqPUklMTA7cmV0dXJu''@;'; put 'put ''IDE9PX5+KEklMTAwLzEwKT8idGgiOjE9PT1qPyJzdCI6Mj09PWo/Im5kIjozPT09aj8icmQiOiJ0aCJ9LGN1cnJlbmN5OntzeW1ib2w6IiQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6Ik5aRCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNw''@;'; put 'put ''YWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhUd29EZWNpbWFs''@;'; put 'put ''c05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwi''@;'; put 'put ''dSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwxMzpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYi''@;'; put 'put ''c3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0''@;'; put 'put ''eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxm''@;'; put 'put ''OnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZW5aQT1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihU''@;'; put 'put ''LCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXty''@;'; put 'put ''ZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhw''@;'; put 'put ''b3J0cz17bGFuZ3VhZ2VUYWc6ImVuLVpBIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKEkpe3ZhciBqPUklMTA7cmV0''@;'; put 'put ''dXJuIDE9PX5+KEklMTAwLzEwKT8idGgiOjE9PT1qPyJzdCI6Mj09PWo/Im5kIjozPT09aj8icmQiOiJ0aCJ9LGN1cnJlbmN5OntzeW1ib2w6IlIiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IlpBUiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0''@;'; put 'put ''LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhUd29EZWNp''@;'; put 'put ''bWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2Jh''@;'; put 'put ''bDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwxNDpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9s''@;'; put 'put ''Ijp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9z''@;'; put 'put ''ZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZXNBUj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4g''@;'; put 'put ''eihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbiha''@;'; put 'put ''KXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00u''@;'; put 'put ''ZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVzLUFSIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6Ii4iLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibW0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2YXIgaj1JJTEw''@;'; put 'put ''O3JldHVybiAxPT09anx8Mz09PWo/ImVyIjoyPT09aj8iZG8iOjc9PT1qfHwwPT09aj8ibW8iOjg9PT1qPyJ2byI6OT09PWo/Im5vIjoidG8ifSxjdXJyZW5jeTp7c3ltYm9sOiIkIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiQVJTIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJh''@;'; put 'put ''dGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToy''@;'; put 'put ''LHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91''@;'; put 'put ''c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDE1OltmdW5jdGlvbihNZSxSLG9lKXso''@;'; put 'put ''ZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/''@;'; put 'put ''Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5lc0NMPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBq''@;'; put 'put ''KFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9E''@;'; put 'put ''VUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZXMtQ0wiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLiIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5k''@;'; put 'put ''OiJrIixtaWxsaW9uOiJtbSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKEkpe3ZhciBqPUklMTA7cmV0dXJuIDE9PT1qfHwzPT09aj8iZXIiOjI9PT1qPyJkbyI6Nz09PWp8fDA9PT1qPyJtbyI6OD09PWo/InZvIjo5PT09aj8ibm8iOiJ0byJ9LGN1cnJlbmN5''@;'; put 'put ''OntzeW1ib2w6IiQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IkNMUCJ9LGN1cnJlbmN5Rm9ybWF0OntvdXRwdXQ6ImN1cnJlbmN5Iix0aG91c2FuZFNlcGFyYXRlZDohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxm''@;'; put 'put ''dWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0Rl''@;'; put 'put ''Y2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdp''@;'; put 'put ''bmRvdzwidSI/d2luZG93Ont9KX0se31dLDE2OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9u''@;'; put 'put ''KE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVj''@;'; put 'put ''dCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5lc0NPPXNlKCl9''@;'; put 'put ''KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9y''@;'; put 'put ''KCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxN''@;'; put 'put ''LE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZXMtQ08iLGRlbGltaXRlcnM6e3Ro''@;'; put 'put ''b3VzYW5kczoiLiIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtbSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKEkpe3ZhciBqPUklMTA7cmV0dXJuIDE9PT1qfHwzPT09aj8iZXIiOjI9PT1qPyJkbyI6Nz09PWp8''@;'; put 'put ''fDA9PT1qPyJtbyI6OD09PWo/InZvIjo5PT09aj8ibm8iOiJ0byJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBhYyIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkVVUiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEw''@;'; put 'put ''LGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDoh''@;'; put 'put ''MH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7''@;'; put 'put ''fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwxNzpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNl''@;'; put 'put ''KXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09''@;'; put 'put ''U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93''@;'; put 'put ''aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZXNDUj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7''@;'; put 'put ''fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtE''@;'; put 'put ''XSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVzLUNSIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibW0iLGJpbGxpb246ImIiLHRyaWxsaW9u''@;'; put 'put ''OiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2YXIgaj1JJTEwO3JldHVybiAxPT09anx8Mz09PWo/ImVyIjoyPT09aj8iZG8iOjc9PT1qfHwwPT09aj8ibW8iOjg9PT1qPyJ2byI6OT09PWo/Im5vIjoidG8ifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTIwYTEiLHBvc2l0aW9uOiJwb3N0Zml4Iixj''@;'; put 'put ''b2RlOiJDUkMifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRo''@;'; put 'put ''VHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6''@;'; put 'put ''e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1''@;'; put 'put ''Ij93aW5kb3c6e30pfSx7fV0sMTg6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0''@;'; put 'put ''dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZv''@;'; put 'put ''aWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVzRVM9c2UoKX0oZnVuY3Rp''@;'; put 'put ''b24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5v''@;'; put 'put ''dCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1y''@;'; put 'put ''ZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlcy1FUyIsZGVsaW1pdGVyczp7dGhvdXNhbmRz''@;'; put 'put ''OiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im1tIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDtyZXR1cm4gMT09PWp8fDM9PT1qPyJlciI6Mj09PWo/ImRvIjo3PT09anx8MD09PWo/''@;'; put 'put ''Im1vIjo4PT09aj8idm8iOjk9PT1qPyJubyI6InRvIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiRVVSIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFn''@;'; put 'put ''ZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxs''@;'; put 'put ''V2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSko''@;'; put 'put ''MSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDE5OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVy''@;'; put 'put ''bihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wm''@;'; put 'put ''Jk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2''@;'; put 'put ''b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5lc01YPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1Rd''@;'; put 'put ''WzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1''@;'; put 'put ''cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZXMtTVgiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtbSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxv''@;'; put 'put ''cmRpbmFsOmZ1bmN0aW9uKEkpe3ZhciBqPUklMTA7cmV0dXJuIDE9PT1qfHwzPT09aj8iZXIiOjI9PT1qPyJkbyI6Nz09PWp8fDA9PT1qPyJtbyI6OD09PWo/InZvIjo5PT09aj8ibm8iOiJ0byJ9LGN1cnJlbmN5OntzeW1ib2w6IiQiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJNWE4ifSxj''@;'; put 'put ''dXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6''@;'; put 'put ''e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3Vy''@;'; put 'put ''cmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30p''@;'; put 'put ''fSx7fV0sMjA6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBN''@;'; put 'put ''fTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1''@;'; put 'put ''bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVzTkk9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''ZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVs''@;'; put 'put ''ZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5l''@;'; put 'put ''eHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlcy1OSSIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFs''@;'; put 'put ''OiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im1tIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDtyZXR1cm4gMT09PWp8fDM9PT1qPyJlciI6Mj09PWo/ImRvIjo3PT09anx8MD09PWo/Im1vIjo4PT09aj8i''@;'; put 'put ''dm8iOjk9PT1qPyJubyI6InRvIn0sY3VycmVuY3k6e3N5bWJvbDoiQyQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6Ik5JTyJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2Zv''@;'; put 'put ''dXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05v''@;'; put 'put ''Q3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMs''@;'; put 'put ''dHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwyMTpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3Rv''@;'; put 'put ''dHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVv''@;'; put 'put ''ZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZXNQRT1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZigh''@;'; put 'put ''RSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0''@;'; put 'put ''cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlv''@;'; put 'put ''bihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVzLVBFIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibW0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJ''@;'; put 'put ''KXt2YXIgaj1JJTEwO3JldHVybiAxPT09anx8Mz09PWo/ImVyIjoyPT09aj8iZG8iOjc9PT1qfHwwPT09aj8ibW8iOjg9PT1qPyJ2byI6OT09PWo/Im5vIjoidG8ifSxjdXJyZW5jeTp7c3ltYm9sOiJTLy4iLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IlBFTiJ9LGN1cnJlbmN5Rm9ybWF0Ont0''@;'; put 'put ''aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5j''@;'; put 'put ''eSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwyMjpbZnVuY3Rp''@;'; put 'put ''b24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3Jl''@;'; put 'put ''dHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkp''@;'; put 'put ''JiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZXNQUj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8s''@;'; put 'put ''SSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJv''@;'; put 'put ''dyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBH''@;'; put 'put ''PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImVzLVBSIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRp''@;'; put 'put ''b25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibW0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXt2YXIgaj1JJTEwO3JldHVybiAxPT09anx8Mz09PWo/ImVyIjoyPT09aj8iZG8iOjc9PT1qfHwwPT09aj8ibW8iOjg9PT1qPyJ2byI6OT09PWo/Im5vIjoi''@;'; put 'put ''dG8ifSxjdXJyZW5jeTp7c3ltYm9sOiIkIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJVU0QifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExl''@;'; put 'put ''bmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNz''@;'; put 'put ''YToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUi''@;'; put 'put ''P2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMjM6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0''@;'; put 'put ''aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmVzU1Y9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwh''@;'; put 'put ''MCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0''@;'; put 'put ''dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9y''@;'; put 'put ''dHM9e2xhbmd1YWdlVGFnOiJlcy1TViIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im1tIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDtyZXR1''@;'; put 'put ''cm4gMT09PWp8fDM9PT1qPyJlciI6Mj09PWo/ImRvIjo3PT09anx8MD09PWo/Im1vIjo4PT09aj8idm8iOjk9PT1qPyJubyI6InRvIn0sY3VycmVuY3k6e3N5bWJvbDoiJCIscG9zaXRpb246InByZWZpeCIsY29kZToiU1ZDIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEw''@;'; put 'put ''LHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNl''@;'; put 'put ''U2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNl''@;'; put 'put ''cGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDI0OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rp''@;'; put 'put ''b24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBv''@;'; put 'put ''cnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5ldEVFPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7''@;'; put 'put ''aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05P''@;'; put 'put ''VF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZXQtRUUiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0dWgi''@;'; put 'put ''LG1pbGxpb246Im1sbiIsYmlsbGlvbjoibWxkIix0cmlsbGlvbjoidHJsIn0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiRVVSIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVk''@;'; put 'put ''OiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNw''@;'; put 'put ''YWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2Fu''@;'; put 'put ''ZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDI1OltmdW5jdGlvbihNZSxSLG9lKXsoZnVu''@;'; put 'put ''Y3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5l''@;'; put 'put ''eHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5mYUlSPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQs''@;'; put 'put ''RSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxF''@;'; put 'put ''X05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiZmEtSVIiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiXHUwNjBjIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNh''@;'; put 'put ''bmQ6Ilx1MDY0N1x1MDYzMlx1MDYyN1x1MDYzMSIsbWlsbGlvbjoiXHUwNjQ1XHUwNmNjXHUwNjQ0XHUwNmNjXHUwNjQ4XHUwNjQ2IixiaWxsaW9uOiJcdTA2NDVcdTA2Y2NcdTA2NDRcdTA2Y2NcdTA2MjdcdTA2MzFcdTA2MmYiLHRyaWxsaW9uOiJcdTA2MmFcdTA2MzFcdTA2Y2NcdTA2NDRc''@;'; put 'put ''dTA2Y2NcdTA2NDhcdTA2NDYifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIlx1MDYyN1x1MDY0NSJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1ZmRmYyIsY29kZToiSVJSIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNl''@;'; put 'put ''bGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDI2OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5j''@;'; put 'put ''dGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5u''@;'; put 'put ''dW1icm89e30pKS5maUZJPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEco''@;'; put 'put ''VCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18''@;'; put 'put ''fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoi''@;'; put 'put ''ZmktRkkiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJNIixiaWxsaW9uOiJHIix0cmlsbGlvbjoiVCJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBh''@;'; put 'put ''YyIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkVVUiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6''@;'; put 'put ''ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6''@;'; put 'put ''ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1''@;'; put 'put ''Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwyNzpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p''@;'; put 'put ''dGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24o''@;'; put 'put ''c2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJv''@;'; put 'put ''PXt9KSkuZmlsUEg9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEw''@;'; put 'put ''KTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9''@;'; put 'put ''LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJmaWwt''@;'; put 'put ''UEgiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtIixiaWxsaW9uOiJiIix0cmlsbGlvbjoidCJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDtyZXR1cm4gMT09fn4oSSUxMDAvMTApPyJ0''@;'; put 'put ''aCI6MT09PWo/InN0IjoyPT09aj8ibmQiOjM9PT1qPyJyZCI6InRoIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGIxIixjb2RlOiJQSFAifX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Yg''@;'; put 'put ''d2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMjg6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rp''@;'; put 'put ''b24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2Jq''@;'; put 'put ''ZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmZyQ0E9c2Uo''@;'; put 'put ''KX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJy''@;'; put 'put ''b3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNl''@;'; put 'put ''LE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJmci1DQSIsZGVsaW1pdGVyczp7''@;'; put 'put ''dGhvdXNhbmRzOiIgIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Ik0iLGJpbGxpb246IkciLHRyaWxsaW9uOiJUIn0sb3JkaW5hbDpmdW5jdGlvbihJKXtyZXR1cm4gMT09PUk/ImVyIjoiXHhlOG1lIn0sc3BhY2VTZXBhcmF0ZWQ6ITAsY3VycmVu''@;'; put 'put ''Y3k6e3N5bWJvbDoiJCIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IlVTRCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3Bh''@;'; put 'put ''Y2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7''@;'; put 'put ''b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwy''@;'; put 'put ''OTpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0''@;'; put 'put ''aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5l''@;'; put 'put ''ZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuZnJDSD1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''biBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1Qr''@;'; put 'put ''IiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9''@;'; put 'put ''Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImZyLUNIIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6Ii4ifSxh''@;'; put 'put ''YmJyZXZpYXRpb25zOnt0aG91c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKEkpe3JldHVybiAxPT09ST8iZXIiOiJceGU4bWUifSxjdXJyZW5jeTp7c3ltYm9sOiJDSEYiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJDSEYi''@;'; put 'put ''fSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1h''@;'; put 'put ''bHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoi''@;'; put 'put ''Y3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6''@;'; put 'put ''e30pfSx7fV0sMzA6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVv''@;'; put 'put ''ZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9l''@;'; put 'put ''PyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmZyRlI9c2UoKX0oZnVuY3Rpb24oKXtyZXR1''@;'; put 'put ''cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1v''@;'; put 'put ''ZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tU''@;'; put 'put ''XS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJmci1GUiIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIgIixkZWNp''@;'; put 'put ''bWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbihJKXtyZXR1cm4gMT09PUk/ImVyIjoiXHhlOG1lIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicG9zdGZp''@;'; put 'put ''eCIsY29kZToiRVVSIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxs''@;'; put 'put ''V2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2lt''@;'; put 'put ''YWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRv''@;'; put 'put ''dzwidSI/d2luZG93Ont9KX0se31dLDMxOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0p''@;'; put 'put ''e3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9''@;'; put 'put ''PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5oZUlMPXNlKCl9KGZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJD''@;'; put 'put ''YW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8s''@;'; put 'put ''SSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiaGUtSUwiLGRlbGltaXRlcnM6e3Rob3Vz''@;'; put 'put ''YW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJcdTA1ZDBcdTA1ZGNcdTA1ZTMiLG1pbGxpb246Ilx1MDVkZVx1MDVkY1x1MDVkOVx1MDVkNVx1MDVkZiIsYmlsbGlvbjoiXHUwNWQxXHUwNWRjXHUwNWQ5XHUwNWQ1XHUwNWRmIix0cmlsbGlvbjoiXHUwNWQ4''@;'; put 'put ''XHUwNWU4XHUwNWQ5XHUwNWRjXHUwNWQ5XHUwNWQ1XHUwNWRmIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFhIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJJTFMifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3Rh''@;'; put 'put ''bExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFy''@;'; put 'put ''YXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0''@;'; put 'put ''ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwzMjpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgp''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1z''@;'; put 'put ''ZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuaHVIVT1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFP''@;'; put 'put ''W1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9V''@;'; put 'put ''TkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYm''@;'; put 'put ''TWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6Imh1LUhVIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiRSIsbWlsbGlv''@;'; put 'put ''bjoiTSIsYmlsbGlvbjoiTXJkIix0cmlsbGlvbjoiVCJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6IkZ0Iixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiSFVGIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3Ro''@;'; put 'put ''OjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEw''@;'; put 'put ''LHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxt''@;'; put 'put ''YW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDMzOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBz''@;'; put 'put ''dHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i''@;'; put 'put ''b2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChN''@;'; put 'put ''PXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5pZD1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZigh''@;'; put 'put ''TVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFy''@;'; put 'put ''IEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8''@;'; put 'put ''SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6ImlkIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiciIsbWlsbGlvbjoiaiIsYmlsbGlv''@;'; put 'put ''bjoibSIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiJScCIsY29kZToiSURSIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlw''@;'; put 'put ''ZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDM0OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1''@;'; put 'put ''bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07''@;'; put 'put ''Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5pdENI''@;'; put 'put ''PXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3''@;'; put 'put ''IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0''@;'; put 'put ''cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiaXQtQ0giLGRlbGltaXRl''@;'; put 'put ''cnM6e3Rob3VzYW5kczoiJyIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJtaWxhIixtaWxsaW9uOiJtaWwiLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiJceGIwIn0sY3VycmVuY3k6e3N5bWJvbDoiQ0hGIixjb2RlOiJD''@;'; put 'put ''SEYifX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMzU6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7''@;'; put 'put ''ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5j''@;'; put 'put ''b25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9m''@;'; put 'put ''IHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLml0SVQ9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0p''@;'; put 'put ''e3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9b''@;'; put 'put ''VF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVu''@;'; put 'put ''Z3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJpdC1JVCIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6Im1pbGEiLG1pbGxpb246Im1pbCIsYmls''@;'; put 'put ''bGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIlx4YmEifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTIwYWMiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJFVVIifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxz''@;'; put 'put ''cGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhv''@;'; put 'put ''dXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRp''@;'; put 'put ''c3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMzY6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmlj''@;'; put 'put ''dCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm''@;'; put 'put ''TS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlw''@;'; put 'put ''ZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmphSlA9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1b''@;'; put 'put ''VF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBC''@;'; put 'put ''PU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEku''@;'; put 'put ''bGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJqYS1KUCIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6Ilx1NTM0MyIsbWlsbGlvbjoiXHU3''@;'; put 'put ''NjdlXHU0ZTA3IixiaWxsaW9uOiJcdTUzNDFcdTUxMDQiLHRyaWxsaW9uOiJcdTUxNDYifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiJceGE1Iixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJKUFkifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRp''@;'; put 'put ''c3NhOjJ9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSku''@;'; put 'put ''Y2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMzc6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5''@;'; put 'put ''bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9''@;'; put 'put ''PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLmtvS1I9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBN''@;'; put 'put ''ZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2Fs''@;'; put 'put ''bChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7''@;'; put 'put ''MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJrby1LUiIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6Ilx1Y2M5YyIsbWlsbGlvbjoiXHViYzMxXHViOWNjIixiaWxsaW9uOiJcdWMyZWRcdWM1''@;'; put 'put ''YjUiLHRyaWxsaW9uOiJcdWM3N2NcdWM4NzAifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTIwYTkiLGNvZGU6IktQVyJ9fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxm''@;'; put 'put ''PCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSwzODpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJv''@;'; put 'put ''bC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rp''@;'; put 'put ''b24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVt''@;'; put 'put ''YnJvPXt9KSkubHZMVj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQs''@;'; put 'put ''ITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxa''@;'; put 'put ''KX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6Imx2''@;'; put 'put ''LUxWIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoidFx1MDE2YmtzdC4iLG1pbGxpb246Im1pbGouIixiaWxsaW9uOiJtbGpyZC4iLHRyaWxsaW9uOiJ0cmlsai4ifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxj''@;'; put 'put ''dXJyZW5jeTp7c3ltYm9sOiJcdTIwYWMiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJFVVIifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExl''@;'; put 'put ''bmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNz''@;'; put 'put ''YToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUi''@;'; put 'put ''P2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sMzk6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5''@;'; put 'put ''bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlw''@;'; put 'put ''ZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0''@;'; put 'put ''aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLm5iTk89c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwh''@;'; put 'put ''MCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0''@;'; put 'put ''dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9y''@;'; put 'put ''dHM9e2xhbmd1YWdlVGFnOiJuYi1OTyIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIgIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6InQiLG1pbGxpb246Ik0iLGJpbGxpb246Im1kIix0cmlsbGlvbjoiYiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sY3VycmVu''@;'; put 'put ''Y3k6e3N5bWJvbDoia3IiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJOT0sifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNw''@;'; put 'put ''YWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3Vz''@;'; put 'put ''YW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0''@;'; put 'put ''eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDA6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5''@;'; put 'put ''cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShz''@;'; put 'put ''ZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1i''@;'; put 'put ''cm98fChNLm51bWJybz17fSkpLm5iPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0''@;'; put 'put ''dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1b''@;'; put 'put ''MV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFn''@;'; put 'put ''ZVRhZzoibmIiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0IixtaWxsaW9uOiJtaWwiLGJpbGxpb246Im1pYSIsdHJpbGxpb246ImIifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9s''@;'; put 'put ''OiJrciIsY29kZToiTk9LIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDQxOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7''@;'; put 'put ''InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNl''@;'; put 'put ''KCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5ubEJFPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9b''@;'; put 'put ''VF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VO''@;'; put 'put ''RCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZN''@;'; put 'put ''ZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoibmwtQkUiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9u''@;'; put 'put ''OiJtbG4iLGJpbGxpb246Im1sZCIsdHJpbGxpb246ImJsbiJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDA7cmV0dXJuIDAhPT1JJiZqPD0xfHw4PT09anx8MjA8PWo/InN0ZSI6ImRlIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToi''@;'; put 'put ''RVVSIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0Rl''@;'; put 'put ''Y2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRw''@;'; put 'put ''dXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2lu''@;'; put 'put ''ZG93Ont9KX0se31dLDQyOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0''@;'; put 'put ''eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9''@;'; put 'put ''PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5ubE5MPXNlKCl9KGZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmlu''@;'; put 'put ''ZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJu''@;'; put 'put ''IE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoibmwtTkwiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLiIs''@;'; put 'put ''ZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJrIixtaWxsaW9uOiJtbG4iLGJpbGxpb246Im1yZCIsdHJpbGxpb246ImJsbiJ9LG9yZGluYWw6ZnVuY3Rpb24oSSl7dmFyIGo9SSUxMDA7cmV0dXJuIDAhPT1JJiZqPD0xfHw4PT09anx8MjA8PWo/InN0ZSI6ImRlIn0sY3Vy''@;'; put 'put ''cmVuY3k6e3N5bWJvbDoiXHUyMGFjIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJFVVIifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0''@;'; put 'put ''aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3NhOjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToy''@;'; put 'put ''LHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2ds''@;'; put 'put ''b2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDM6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJv''@;'; put 'put ''bCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9m''@;'; put 'put ''IE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlz''@;'; put 'put ''KS5udW1icm98fChNLm51bWJybz17fSkpLm5uPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lm''@;'; put 'put ''KEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBq''@;'; put 'put ''KE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXts''@;'; put 'put ''YW5ndWFnZVRhZzoibm4iLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0IixtaWxsaW9uOiJtaWwiLGJpbGxpb246Im1pYSIsdHJpbGxpb246ImIifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7''@;'; put 'put ''c3ltYm9sOiJrciIsY29kZToiTk9LIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDQ0OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rp''@;'; put 'put ''b24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBv''@;'; put 'put ''cnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5wbFBMPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7''@;'; put 'put ''aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05P''@;'; put 'put ''VF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9m''@;'; put 'put ''IE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoicGwtUEwiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0eXMu''@;'; put 'put ''IixtaWxsaW9uOiJtbG4iLGJpbGxpb246Im1sZCIsdHJpbGxpb246ImJsbiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6IiB6XHUwMTQyIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiUExOIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJh''@;'; put 'put ''dGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToy''@;'; put 'put ''LHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91''@;'; put 'put ''c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDQ1OltmdW5jdGlvbihNZSxSLG9lKXso''@;'; put 'put ''ZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5j''@;'; put 'put ''dGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/''@;'; put 'put ''Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5wdEJSPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBq''@;'; put 'put ''KFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9E''@;'; put 'put ''VUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoicHQtQlIiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLiIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5k''@;'; put 'put ''OiJtaWwiLG1pbGxpb246Im1pbGhceGY1ZXMiLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiJceGJhIn0sY3VycmVuY3k6e3N5bWJvbDoiUiQiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IkJSTCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNl''@;'; put 'put ''cGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlz''@;'; put 'put ''c2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAs''@;'; put 'put ''dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw0NjpbZnVuY3Rpb24oTWUsUixv''@;'; put 'put ''ZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAh''@;'; put 'put ''PT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkucHRQVD1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rp''@;'; put 'put ''b24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9''@;'; put 'put ''Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InB0LVBUIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91''@;'; put 'put ''c2FuZDoiayIsbWlsbGlvbjoibSIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIlx4YmEifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTIwYWMiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJFVVIifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3Nh''@;'; put 'put ''OjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRo''@;'; put 'put ''b3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDc6W2Z1bmN0aW9uKE1lLFIsb2Up''@;'; put 'put ''eyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1''@;'; put 'put ''bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09''@;'; put 'put ''Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17fSkpLnJvUk89c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9u''@;'; put 'put ''IGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJN''@;'; put 'put ''T0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJyby1STyIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNh''@;'; put 'put ''bmQ6Im1paSIsbWlsbGlvbjoibWlsIixiaWxsaW9uOiJtbGQiLHRyaWxsaW9uOiJibG4ifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiIgbGVpIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiUk9OIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2Vw''@;'; put 'put ''YXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNz''@;'; put 'put ''YToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0''@;'; put 'put ''aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDQ4OltmdW5jdGlvbihNZSxSLG9l''@;'; put 'put ''KXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJm''@;'; put 'put ''dW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9''@;'; put 'put ''PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5ybz1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24g''@;'; put 'put ''aihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1P''@;'; put 'put ''RFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InJvLVJPIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6Ii4iLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2Fu''@;'; put 'put ''ZDoibWlpIixtaWxsaW9uOiJtaWwiLGJpbGxpb246Im1sZCIsdHJpbGxpb246ImJsbiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6IiBsZWkiLHBvc2l0aW9uOiJwb3N0Zml4Iixjb2RlOiJST04ifSxjdXJyZW5jeUZvcm1hdDp7dGhvdXNhbmRTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmb3JtYXRzOntmb3VyRGlnaXRzOnt0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLG1hbnRpc3Nh''@;'; put 'put ''OjIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHNOb0N1cnJlbmN5OnttYW50aXNzYToyLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aE5vRGVjaW1hbHM6e291dHB1dDoiY3VycmVuY3kiLHNwYWNlU2VwYXJhdGVkOiEwLHRo''@;'; put 'put ''b3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjB9fX19LHt9XSwyOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz1zZSgiLi9yby1STyIpfSx7Ii4vcm8tUk8iOjF9XX0se30sWzJdKSgyKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/''@;'; put 'put ''c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNDk6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRl''@;'; put 'put ''cmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19KShzZSl9IWZ1bmN0aW9uKHNl''@;'; put 'put ''KXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5udW1icm98fChNLm51bWJybz17''@;'; put 'put ''fSkpLnJ1UlU9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxFKXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2''@;'; put 'put ''YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIs''@;'; put 'put ''Qi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJydS1SVSIs''@;'; put 'put ''ZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIgIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6Ilx1MDQ0Mlx1MDQ0Ylx1MDQ0MS4iLG1pbGxpb246Ilx1MDQzY1x1MDQzYlx1MDQzZCIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''Ii4ifSxjdXJyZW5jeTp7c3ltYm9sOiJcdTA0NDBcdTA0NDNcdTA0MzEuIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiUlVCIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7''@;'; put 'put ''Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxz''@;'; put 'put ''Tm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhp''@;'; put 'put ''cyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDUwOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJv''@;'; put 'put ''dG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlw''@;'; put 'put ''ZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5ydVVBPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lm''@;'; put 'put ''KCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBv''@;'; put 'put ''cnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0''@;'; put 'put ''aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoicnUtVUEiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiICIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJcdTA0NDJcdTA0NGJcdTA0NDEuIixtaWxsaW9uOiJcdTA0M2NcdTA0M2JcdTA0M2QiLGJpbGxpb246''@;'; put 'put ''ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGI0Iixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiVUFIIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBh''@;'; put 'put ''cmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2Vw''@;'; put 'put ''YXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19''@;'; put 'put ''fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDUxOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0''@;'; put 'put ''aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3Ry''@;'; put 'put ''dWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5k''@;'; put 'put ''b3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS5za1NLPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIg''@;'; put 'put ''ej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtl''@;'; put 'put ''eHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtE''@;'; put 'put ''KyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoic2stU0siLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiXHhhMCIsZGVjaW1hbDoiLCJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJ0aXMuIixtaWxsaW9uOiJtaWwuIixiaWxs''@;'; put 'put ''aW9uOiJtbGQuIix0cmlsbGlvbjoiYmlsLiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LHNwYWNlU2VwYXJhdGVkOiEwLGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBhYyIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IkVVUiJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRl''@;'; put 'put ''ZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6Mixz''@;'; put 'put ''cGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNh''@;'; put 'put ''bmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw1MjpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1''@;'; put 'put ''bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rp''@;'; put 'put ''b24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1Iu''@;'; put 'put ''ZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuc2w9c2UoKX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gc2UoTSxPLEkpe2Z1bmN0aW9uIGooVCxF''@;'; put 'put ''KXtpZighT1tUXSl7aWYoIU1bVF0pe3ZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWU7aWYoIUUmJnopcmV0dXJuIHooVCwhMCk7aWYoRylyZXR1cm4gRyhULCEwKTt2YXIgTj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitUKyInIik7dGhyb3cgTi5jb2RlPSJNT0RVTEVf''@;'; put 'put ''Tk9UX0ZPVU5EIixOfXZhciBCPU9bVF09e2V4cG9ydHM6e319O01bVF1bMF0uY2FsbChCLmV4cG9ydHMsZnVuY3Rpb24oWil7cmV0dXJuIGooTVtUXVsxXVtaXXx8Wil9LEIsQi5leHBvcnRzLHNlLE0sTyxJKX1yZXR1cm4gT1tUXS5leHBvcnRzfWZvcih2YXIgRz0iZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YgTWUmJk1lLEQ9MDtEPEkubGVuZ3RoO0QrKylqKElbRF0pO3JldHVybiBqfSh7MTpbZnVuY3Rpb24oc2UsTSxPKXtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJzbCIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6InRpcy4i''@;'; put 'put ''LG1pbGxpb246Im1pbC4iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUyMGFjIixjb2RlOiJFVVIifX19LHt9XX0se30sWzFdKSgxKX0pfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWw8InUiP2dsb2Jh''@;'; put 'put ''bDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6e30pfSx7fV0sNTM6W2Z1bmN0aW9uKE1lLFIsb2UpeyhmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShzZSl7cmV0dXJuKG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9''@;'; put 'put ''PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oTSl7cmV0dXJuIHR5cGVvZiBNfTpmdW5jdGlvbihNKXtyZXR1cm4gTSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmTS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmTSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIE19''@;'; put 'put ''KShzZSl9IWZ1bmN0aW9uKHNlKXt2YXIgTTsib2JqZWN0Ij09KHZvaWQgMD09PW9lPyJ1bmRlZmluZWQiOm0ob2UpKSYmdm9pZCAwIT09Uj9SLmV4cG9ydHM9c2UoKTooKE09dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnZvaWQgMCE9PXg/eDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0aGlzKS5u''@;'; put 'put ''dW1icm98fChNLm51bWJybz17fSkpLnNyQ3lybFJTPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITAp''@;'; put 'put ''O2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVy''@;'; put 'put ''biBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRz''@;'; put 'put ''PXtsYW5ndWFnZVRhZzoic3ItQ3lybC1SUyIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6Ilx1MDQ0Mlx1MDQ0Ylx1MDQ0MS4iLG1pbGxpb246Ilx1MDQzY1x1MDQzYlx1MDQzZCIsYmlsbGlvbjoiYiIsdHJpbGxpb246InQi''@;'; put 'put ''fSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIi4ifSxjdXJyZW5jeTp7c3ltYm9sOiJSU0QiLGNvZGU6IlJTRCJ9fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dp''@;'; put 'put ''bmRvdzp7fSl9LHt9XSw1NDpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4g''@;'; put 'put ''dHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAw''@;'; put 'put ''PT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuc3ZTRT1zZSgpfShmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZp''@;'; put 'put ''bmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVy''@;'; put 'put ''biBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InN2LVNFIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAi''@;'; put 'put ''LGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoidCIsbWlsbGlvbjoiTSIsYmlsbGlvbjoibWQiLHRyaWxsaW9uOiJ0bWQifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGN1cnJlbmN5OntzeW1ib2w6ImtyIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiU0VLIn0s''@;'; put 'put ''Y3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxz''@;'; put 'put ''OntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJhdGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1''@;'; put 'put ''cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9''@;'; put 'put ''KX0se31dLDU1OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2Yg''@;'; put 'put ''TX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8i''@;'; put 'put ''dW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS50aFRIPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1''@;'; put 'put ''bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0u''@;'; put 'put ''ZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoidGgtVEgiLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1h''@;'; put 'put ''bDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJcdTBlMWVcdTBlMzFcdTBlMTkiLG1pbGxpb246Ilx1MGUyNVx1MGU0OVx1MGUzMlx1MGUxOSIsYmlsbGlvbjoiXHUwZTFlXHUwZTMxXHUwZTE5XHUwZTI1XHUwZTQ5XHUwZTMyXHUwZTE5Iix0cmlsbGlvbjoiXHUwZTI1XHUwZTQ5XHUw''@;'; put 'put ''ZTMyXHUwZTE5XHUwZTI1XHUwZTQ5XHUwZTMyXHUwZTE5In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiXHUwZTNmIixwb3NpdGlvbjoicG9zdGZpeCIsY29kZToiVEhCIn0sY3VycmVuY3lGb3JtYXQ6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLHRvdGFs''@;'; put 'put ''TGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMCxhdmVyYWdlOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixtYW50aXNzYToyLHNwYWNlU2VwYXJh''@;'; put 'put ''dGVkOiEwLHRob3VzYW5kU2VwYXJhdGVkOiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7bWFudGlzc2E6Mix0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhOb0RlY2ltYWxzOntvdXRwdXQ6ImN1cnJlbmN5IixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRl''@;'; put 'put ''ZDohMCxtYW50aXNzYTowfX19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDU2OltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7''@;'; put 'put ''InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVv''@;'; put 'put ''ZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNl''@;'; put 'put ''KCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS50clRSPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9b''@;'; put 'put ''VF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VO''@;'; put 'put ''RCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZN''@;'; put 'put ''ZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7dmFyIEk9ezE6IidpbmNpIiw1OiInaW5jaSIsODoiJ2luY2kiLDcwOiInaW5jaSIsODA6IidpbmNpIiwyOiInbmNpIiw3OiInbmNpIiwyMDoiJ25jaSIsNTA6IiduY2kiLDM6IidceGZj''@;'; put 'put ''bmNceGZjIiw0OiInXHhmY25jXHhmYyIsMTAwOiInXHhmY25jXHhmYyIsNjoiJ25jXHUwMTMxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoiJ3VuY3UiLDYwOiInXHUwMTMxbmNcdTAxMzEiLDkwOiInXHUwMTMxbmNcdTAxMzEifTtNLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJ0ci1UUiIsZGVs''@;'; put 'put ''aW1pdGVyczp7dGhvdXNhbmRzOiIuIixkZWNpbWFsOiIsIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImJpbiIsbWlsbGlvbjoibWlseW9uIixiaWxsaW9uOiJtaWx5YXIiLHRyaWxsaW9uOiJ0cmlseW9uIn0sb3JkaW5hbDpmdW5jdGlvbihqKXtpZigwPT09ailyZXR1cm4iJ1x1MDEzMW5j''@;'; put 'put ''XHUwMTMxIjt2YXIgRz1qJTEwO3JldHVybiBJW0ddfHxJW2olMTAwLUddfHxJWzEwMDw9aj8xMDA6bnVsbF19LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBiYSIscG9zaXRpb246InBvc3RmaXgiLGNvZGU6IlRSWSJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExl''@;'; put 'put ''bmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRl''@;'; put 'put ''ZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6''@;'; put 'put ''ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw1NzpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2Yg''@;'; put 'put ''U3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgp''@;'; put 'put ''OigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkudWtVQT1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1Rd''@;'; put 'put ''KXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQi''@;'; put 'put ''LE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUs''@;'; put 'put ''RD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InVrLVVBIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiAiLGRlY2ltYWw6IiwifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiXHUwNDQyXHUwNDM4''@;'; put 'put ''XHUwNDQxLiIsbWlsbGlvbjoiXHUwNDNjXHUwNDNiXHUwNDNkIixiaWxsaW9uOiJcdTA0M2NcdTA0M2JcdTA0NDBcdTA0MzQiLHRyaWxsaW9uOiJcdTA0MzFcdTA0M2JcdTA0M2QifSxvcmRpbmFsOmZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGN1cnJlbmN5OntzeW1ib2w6Ilx1MjBiNCIscG9zaXRp''@;'; put 'put ''b246InBvc3RmaXgiLGNvZGU6IlVBSCJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQsc3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFn''@;'; put 'put ''ZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsbWFudGlzc2E6MixzcGFjZVNlcGFyYXRlZDohMCx0aG91c2FuZFNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxX''@;'; put 'put ''aXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsc3BhY2VTZXBhcmF0ZWQ6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5''@;'; put 'put ''cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9XSw1ODpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9m''@;'; put 'put ''dW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBN''@;'; put 'put ''OyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVmaW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuemhD''@;'; put 'put ''Tj1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5l''@;'; put 'put ''dyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9y''@;'; put 'put ''dHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9ydHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InpoLUNOIixkZWxpbWl0''@;'; put 'put ''ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4ifSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiXHU1MzQzIixtaWxsaW9uOiJcdTc2N2VcdTRlMDciLGJpbGxpb246Ilx1NTM0MVx1NGViZiIsdHJpbGxpb246Ilx1NTE0NiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJl''@;'; put 'put ''bmN5OntzeW1ib2w6Ilx4YTUiLHBvc2l0aW9uOiJwcmVmaXgiLGNvZGU6IkNOWSJ9LGN1cnJlbmN5Rm9ybWF0Ont0aG91c2FuZFNlcGFyYXRlZDohMCx0b3RhbExlbmd0aDo0LHNwYWNlU2VwYXJhdGVkOiEwLGF2ZXJhZ2U6ITB9LGZvcm1hdHM6e2ZvdXJEaWdpdHM6e3RvdGFsTGVuZ3RoOjQs''@;'; put 'put ''c3BhY2VTZXBhcmF0ZWQ6ITAsYXZlcmFnZTohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e21hbnRpc3NhOjIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITB9LGZ1bGxXaXRoTm9EZWNpbWFs''@;'; put 'put ''czp7b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9LHt9''@;'; put 'put ''XSw1OTpbZnVuY3Rpb24oTWUsUixvZSl7KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKHNlKXtyZXR1cm4obT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihNKXtyZXR1cm4gdHlwZW9mIE19OmZ1''@;'; put 'put ''bmN0aW9uKE0pe3JldHVybiBNJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZNLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZNIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgTX0pKHNlKX0hZnVuY3Rpb24oc2Upe3ZhciBNOyJvYmplY3QiPT0odm9pZCAwPT09b2U/InVuZGVm''@;'; put 'put ''aW5lZCI6bShvZSkpJiZ2b2lkIDAhPT1SP1IuZXhwb3J0cz1zZSgpOigoTT10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dm9pZCAwIT09eD94OnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnRoaXMpLm51bWJyb3x8KE0ubnVtYnJvPXt9KSkuemhNTz1zZSgpfShmdW5jdGlvbigpe3JldHVybiBmdW5j''@;'; put 'put ''dGlvbiBzZShNLE8sSSl7ZnVuY3Rpb24gaihULEUpe2lmKCFPW1RdKXtpZighTVtUXSl7dmFyIHo9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZTtpZighRSYmeilyZXR1cm4geihULCEwKTtpZihHKXJldHVybiBHKFQsITApO3ZhciBOPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICci''@;'; put 'put ''K1QrIiciKTt0aHJvdyBOLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLE59dmFyIEI9T1tUXT17ZXhwb3J0czp7fX07TVtUXVswXS5jYWxsKEIuZXhwb3J0cyxmdW5jdGlvbihaKXtyZXR1cm4gaihNW1RdWzFdW1pdfHxaKX0sQixCLmV4cG9ydHMsc2UsTSxPLEkpfXJldHVybiBPW1RdLmV4cG9y''@;'; put 'put ''dHN9Zm9yKHZhciBHPSJmdW5jdGlvbiI9PXR5cGVvZiBNZSYmTWUsRD0wO0Q8SS5sZW5ndGg7RCsrKWooSVtEXSk7cmV0dXJuIGp9KHsxOltmdW5jdGlvbihzZSxNLE8pe00uZXhwb3J0cz17bGFuZ3VhZ2VUYWc6InpoLU1PIixkZWxpbWl0ZXJzOnt0aG91c2FuZHM6IiwiLGRlY2ltYWw6Ii4i''@;'; put 'put ''fSxhYmJyZXZpYXRpb25zOnt0aG91c2FuZDoiXHU1MzQzIixtaWxsaW9uOiJcdTc2N2VcdTg0MmMiLGJpbGxpb246Ilx1NTM0MVx1NTEwNCIsdHJpbGxpb246Ilx1NTE0NiJ9LG9yZGluYWw6ZnVuY3Rpb24oKXtyZXR1cm4iLiJ9LGN1cnJlbmN5OntzeW1ib2w6Ik1PUCIsY29kZToiTU9QIn19''@;'; put 'put ''fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDYwOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0''@;'; put 'put ''aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3Ry''@;'; put 'put ''dWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSkoc2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5k''@;'; put 'put ''b3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVtYnJvfHwoTS5udW1icm89e30pKS56aFNHPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIg''@;'; put 'put ''ej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcpcmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtl''@;'; put 'put ''eHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1bVF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtE''@;'; put 'put ''KyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5ndWFnZVRhZzoiemgtU0ciLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJcdTUzNDMiLG1pbGxpb246Ilx1NzY3ZVx1NGUw''@;'; put 'put ''NyIsYmlsbGlvbjoiXHU1MzQxXHU0ZWJmIix0cmlsbGlvbjoiXHU1MTQ2In0sb3JkaW5hbDpmdW5jdGlvbigpe3JldHVybiIuIn0sY3VycmVuY3k6e3N5bWJvbDoiJCIsY29kZToiU0dEIn19fSx7fV19LHt9LFsxXSkoMSl9KX0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6''@;'; put 'put ''dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Ont9KX0se31dLDYxOltmdW5jdGlvbihNZSxSLG9lKXsoZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oc2Upe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10''@;'; put 'put ''eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKE0pe3JldHVybiB0eXBlb2YgTX06ZnVuY3Rpb24oTSl7cmV0dXJuIE0mJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJk0uY29uc3RydWN0b3I9PT1TeW1ib2wmJk0hPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBNfSko''@;'; put 'put ''c2UpfSFmdW5jdGlvbihzZSl7dmFyIE07Im9iamVjdCI9PSh2b2lkIDA9PT1vZT8idW5kZWZpbmVkIjptKG9lKSkmJnZvaWQgMCE9PVI/Ui5leHBvcnRzPXNlKCk6KChNPXR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp2b2lkIDAhPT14P3g6dHlwZW9mIHNlbGY8InUiP3NlbGY6dGhpcykubnVt''@;'; put 'put ''YnJvfHwoTS5udW1icm89e30pKS56aFRXPXNlKCl9KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHNlKE0sTyxJKXtmdW5jdGlvbiBqKFQsRSl7aWYoIU9bVF0pe2lmKCFNW1RdKXt2YXIgej0iZnVuY3Rpb24iPT10eXBlb2YgTWUmJk1lO2lmKCFFJiZ6KXJldHVybiB6KFQsITApO2lmKEcp''@;'; put 'put ''cmV0dXJuIEcoVCwhMCk7dmFyIE49bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrVCsiJyIpO3Rocm93IE4uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsTn12YXIgQj1PW1RdPXtleHBvcnRzOnt9fTtNW1RdWzBdLmNhbGwoQi5leHBvcnRzLGZ1bmN0aW9uKFope3JldHVybiBqKE1b''@;'; put 'put ''VF1bMV1bWl18fFopfSxCLEIuZXhwb3J0cyxzZSxNLE8sSSl9cmV0dXJuIE9bVF0uZXhwb3J0c31mb3IodmFyIEc9ImZ1bmN0aW9uIj09dHlwZW9mIE1lJiZNZSxEPTA7RDxJLmxlbmd0aDtEKyspaihJW0RdKTtyZXR1cm4gan0oezE6W2Z1bmN0aW9uKHNlLE0sTyl7TS5leHBvcnRzPXtsYW5n''@;'; put 'put ''dWFnZVRhZzoiemgtVFciLGRlbGltaXRlcnM6e3Rob3VzYW5kczoiLCIsZGVjaW1hbDoiLiJ9LGFiYnJldmlhdGlvbnM6e3Rob3VzYW5kOiJcdTUzNDMiLG1pbGxpb246Ilx1NzY3ZVx1ODQyYyIsYmlsbGlvbjoiXHU1MzQxXHU1MTA0Iix0cmlsbGlvbjoiXHU1MTQ2In0sb3JkaW5hbDpmdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiJcdTdiMmMifSxjdXJyZW5jeTp7c3ltYm9sOiJOVCQiLGNvZGU6IlRXRCJ9fX0se31dfSx7fSxbMV0pKDEpfSl9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp7fSl9''@;'; put 'put ''LHt9XSw2MjpbZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO29lLmJnPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2JnLm1pbi5qcyIpLG9lWyJjcy1DWiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2NzLUNaLm1pbi5qcyIpLG9lWyJkYS1ESyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2RhLURL''@;'; put 'put ''Lm1pbi5qcyIpLG9lWyJkZS1BVCJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2RlLUFULm1pbi5qcyIpLG9lWyJkZS1DSCJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2RlLUNILm1pbi5qcyIpLG9lWyJkZS1ERSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2RlLURFLm1pbi5qcyIpLG9lWyJkZS1MSSJd''@;'; put 'put ''PU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2RlLUxJLm1pbi5qcyIpLG9lLmVsPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VsLm1pbi5qcyIpLG9lWyJlbi1BVSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VuLUFVLm1pbi5qcyIpLG9lWyJlbi1HQiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VuLUdCLm1p''@;'; put 'put ''bi5qcyIpLG9lWyJlbi1JRSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VuLUlFLm1pbi5qcyIpLG9lWyJlbi1OWiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VuLU5aLm1pbi5qcyIpLG9lWyJlbi1aQSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VuLVpBLm1pbi5qcyIpLG9lWyJlcy1BUiJdPU1l''@;'; put 'put ''KCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUFSLm1pbi5qcyIpLG9lWyJlcy1DTCJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUNMLm1pbi5qcyIpLG9lWyJlcy1DTyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUNPLm1pbi5qcyIpLG9lWyJlcy1DUiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2Vz''@;'; put 'put ''LUNSLm1pbi5qcyIpLG9lWyJlcy1FUyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUVTLm1pbi5qcyIpLG9lWyJlcy1NWCJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLU1YLm1pbi5qcyIpLG9lWyJlcy1OSSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLU5JLm1pbi5qcyIpLG9lWyJlcy1Q''@;'; put 'put ''RSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLVBFLm1pbi5qcyIpLG9lWyJlcy1QUiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLVBSLm1pbi5qcyIpLG9lWyJlcy1TViJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLVNWLm1pbi5qcyIpLG9lWyJldC1FRSJdPU1lKCIuL2Rpc3QvbGFuZ3Vh''@;'; put 'put ''Z2VzL2V0LUVFLm1pbi5qcyIpLG9lWyJmYS1JUiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2ZhLUlSLm1pbi5qcyIpLG9lWyJmaS1GSSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL2ZpLUZJLm1pbi5qcyIpLG9lWyJmaWwtUEgiXT1NZSgiLi9kaXN0L2xhbmd1YWdlcy9maWwtUEgubWluLmpzIiks''@;'; put 'put ''b2VbImZyLUNBIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvZnItQ0EubWluLmpzIiksb2VbImZyLUNIIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvZnItQ0gubWluLmpzIiksb2VbImZyLUZSIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvZnItRlIubWluLmpzIiksb2VbImhlLUlMIl09TWUoIi4vZGlz''@;'; put 'put ''dC9sYW5ndWFnZXMvaGUtSUwubWluLmpzIiksb2VbImh1LUhVIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvaHUtSFUubWluLmpzIiksb2UuaWQ9TWUoIi4vZGlzdC9sYW5ndWFnZXMvaWQubWluLmpzIiksb2VbIml0LUNIIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvaXQtQ0gubWluLmpzIiksb2Vb''@;'; put 'put ''Iml0LUlUIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvaXQtSVQubWluLmpzIiksb2VbImphLUpQIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvamEtSlAubWluLmpzIiksb2VbImtvLUtSIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMva28tS1IubWluLmpzIiksb2VbImx2LUxWIl09TWUoIi4vZGlzdC9s''@;'; put 'put ''YW5ndWFnZXMvbHYtTFYubWluLmpzIiksb2VbIm5iLU5PIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvbmItTk8ubWluLmpzIiksb2UubmI9TWUoIi4vZGlzdC9sYW5ndWFnZXMvbmIubWluLmpzIiksb2VbIm5sLUJFIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvbmwtQkUubWluLmpzIiksb2VbIm5s''@;'; put 'put ''LU5MIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvbmwtTkwubWluLmpzIiksb2Uubm49TWUoIi4vZGlzdC9sYW5ndWFnZXMvbm4ubWluLmpzIiksb2VbInBsLVBMIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvcGwtUEwubWluLmpzIiksb2VbInB0LUJSIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvcHQt''@;'; put 'put ''QlIubWluLmpzIiksb2VbInB0LVBUIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvcHQtUFQubWluLmpzIiksb2VbInJvLVJPIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvcm8tUk8ubWluLmpzIiksb2Uucm89TWUoIi4vZGlzdC9sYW5ndWFnZXMvcm8ubWluLmpzIiksb2VbInJ1LVJVIl09TWUoIi4v''@;'; put 'put ''ZGlzdC9sYW5ndWFnZXMvcnUtUlUubWluLmpzIiksb2VbInJ1LVVBIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvcnUtVUEubWluLmpzIiksb2VbInNrLVNLIl09TWUoIi4vZGlzdC9sYW5ndWFnZXMvc2stU0subWluLmpzIiksb2Uuc2w9TWUoIi4vZGlzdC9sYW5ndWFnZXMvc2wubWluLmpzIiks''@;'; put 'put ''b2VbInNyLUN5cmwtUlMiXT1NZSgiLi9kaXN0L2xhbmd1YWdlcy9zci1DeXJsLVJTLm1pbi5qcyIpLG9lWyJzdi1TRSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3N2LVNFLm1pbi5qcyIpLG9lWyJ0aC1USCJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3RoLVRILm1pbi5qcyIpLG9lWyJ0ci1UUiJd''@;'; put 'put ''PU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3RyLVRSLm1pbi5qcyIpLG9lWyJ1ay1VQSJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3VrLVVBLm1pbi5qcyIpLG9lWyJ6aC1DTiJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3poLUNOLm1pbi5qcyIpLG9lWyJ6aC1NTyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2Vz''@;'; put 'put ''L3poLU1PLm1pbi5qcyIpLG9lWyJ6aC1TRyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3poLVNHLm1pbi5qcyIpLG9lWyJ6aC1UVyJdPU1lKCIuL2Rpc3QvbGFuZ3VhZ2VzL3poLVRXLm1pbi5qcyIpfSx7Ii4vZGlzdC9sYW5ndWFnZXMvYmcubWluLmpzIjoxLCIuL2Rpc3QvbGFuZ3VhZ2VzL2Nz''@;'; put 'put ''LUNaLm1pbi5qcyI6MiwiLi9kaXN0L2xhbmd1YWdlcy9kYS1ESy5taW4uanMiOjMsIi4vZGlzdC9sYW5ndWFnZXMvZGUtQVQubWluLmpzIjo0LCIuL2Rpc3QvbGFuZ3VhZ2VzL2RlLUNILm1pbi5qcyI6NSwiLi9kaXN0L2xhbmd1YWdlcy9kZS1ERS5taW4uanMiOjYsIi4vZGlzdC9sYW5ndWFn''@;'; put 'put ''ZXMvZGUtTEkubWluLmpzIjo3LCIuL2Rpc3QvbGFuZ3VhZ2VzL2VsLm1pbi5qcyI6OCwiLi9kaXN0L2xhbmd1YWdlcy9lbi1BVS5taW4uanMiOjksIi4vZGlzdC9sYW5ndWFnZXMvZW4tR0IubWluLmpzIjoxMCwiLi9kaXN0L2xhbmd1YWdlcy9lbi1JRS5taW4uanMiOjExLCIuL2Rpc3QvbGFu''@;'; put 'put ''Z3VhZ2VzL2VuLU5aLm1pbi5qcyI6MTIsIi4vZGlzdC9sYW5ndWFnZXMvZW4tWkEubWluLmpzIjoxMywiLi9kaXN0L2xhbmd1YWdlcy9lcy1BUi5taW4uanMiOjE0LCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUNMLm1pbi5qcyI6MTUsIi4vZGlzdC9sYW5ndWFnZXMvZXMtQ08ubWluLmpzIjoxNiwi''@;'; put 'put ''Li9kaXN0L2xhbmd1YWdlcy9lcy1DUi5taW4uanMiOjE3LCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLUVTLm1pbi5qcyI6MTgsIi4vZGlzdC9sYW5ndWFnZXMvZXMtTVgubWluLmpzIjoxOSwiLi9kaXN0L2xhbmd1YWdlcy9lcy1OSS5taW4uanMiOjIwLCIuL2Rpc3QvbGFuZ3VhZ2VzL2VzLVBFLm1p''@;'; put 'put ''bi5qcyI6MjEsIi4vZGlzdC9sYW5ndWFnZXMvZXMtUFIubWluLmpzIjoyMiwiLi9kaXN0L2xhbmd1YWdlcy9lcy1TVi5taW4uanMiOjIzLCIuL2Rpc3QvbGFuZ3VhZ2VzL2V0LUVFLm1pbi5qcyI6MjQsIi4vZGlzdC9sYW5ndWFnZXMvZmEtSVIubWluLmpzIjoyNSwiLi9kaXN0L2xhbmd1YWdl''@;'; put 'put ''cy9maS1GSS5taW4uanMiOjI2LCIuL2Rpc3QvbGFuZ3VhZ2VzL2ZpbC1QSC5taW4uanMiOjI3LCIuL2Rpc3QvbGFuZ3VhZ2VzL2ZyLUNBLm1pbi5qcyI6MjgsIi4vZGlzdC9sYW5ndWFnZXMvZnItQ0gubWluLmpzIjoyOSwiLi9kaXN0L2xhbmd1YWdlcy9mci1GUi5taW4uanMiOjMwLCIuL2Rp''@;'; put 'put ''c3QvbGFuZ3VhZ2VzL2hlLUlMLm1pbi5qcyI6MzEsIi4vZGlzdC9sYW5ndWFnZXMvaHUtSFUubWluLmpzIjozMiwiLi9kaXN0L2xhbmd1YWdlcy9pZC5taW4uanMiOjMzLCIuL2Rpc3QvbGFuZ3VhZ2VzL2l0LUNILm1pbi5qcyI6MzQsIi4vZGlzdC9sYW5ndWFnZXMvaXQtSVQubWluLmpzIjoz''@;'; put 'put ''NSwiLi9kaXN0L2xhbmd1YWdlcy9qYS1KUC5taW4uanMiOjM2LCIuL2Rpc3QvbGFuZ3VhZ2VzL2tvLUtSLm1pbi5qcyI6MzcsIi4vZGlzdC9sYW5ndWFnZXMvbHYtTFYubWluLmpzIjozOCwiLi9kaXN0L2xhbmd1YWdlcy9uYi1OTy5taW4uanMiOjM5LCIuL2Rpc3QvbGFuZ3VhZ2VzL25iLm1p''@;'; put 'put ''bi5qcyI6NDAsIi4vZGlzdC9sYW5ndWFnZXMvbmwtQkUubWluLmpzIjo0MSwiLi9kaXN0L2xhbmd1YWdlcy9ubC1OTC5taW4uanMiOjQyLCIuL2Rpc3QvbGFuZ3VhZ2VzL25uLm1pbi5qcyI6NDMsIi4vZGlzdC9sYW5ndWFnZXMvcGwtUEwubWluLmpzIjo0NCwiLi9kaXN0L2xhbmd1YWdlcy9w''@;'; put 'put ''dC1CUi5taW4uanMiOjQ1LCIuL2Rpc3QvbGFuZ3VhZ2VzL3B0LVBULm1pbi5qcyI6NDYsIi4vZGlzdC9sYW5ndWFnZXMvcm8tUk8ubWluLmpzIjo0NywiLi9kaXN0L2xhbmd1YWdlcy9yby5taW4uanMiOjQ4LCIuL2Rpc3QvbGFuZ3VhZ2VzL3J1LVJVLm1pbi5qcyI6NDksIi4vZGlzdC9sYW5n''@;'; put 'put ''dWFnZXMvcnUtVUEubWluLmpzIjo1MCwiLi9kaXN0L2xhbmd1YWdlcy9zay1TSy5taW4uanMiOjUxLCIuL2Rpc3QvbGFuZ3VhZ2VzL3NsLm1pbi5qcyI6NTIsIi4vZGlzdC9sYW5ndWFnZXMvc3ItQ3lybC1SUy5taW4uanMiOjUzLCIuL2Rpc3QvbGFuZ3VhZ2VzL3N2LVNFLm1pbi5qcyI6NTQs''@;'; put 'put ''Ii4vZGlzdC9sYW5ndWFnZXMvdGgtVEgubWluLmpzIjo1NSwiLi9kaXN0L2xhbmd1YWdlcy90ci1UUi5taW4uanMiOjU2LCIuL2Rpc3QvbGFuZ3VhZ2VzL3VrLVVBLm1pbi5qcyI6NTcsIi4vZGlzdC9sYW5ndWFnZXMvemgtQ04ubWluLmpzIjo1OCwiLi9kaXN0L2xhbmd1YWdlcy96aC1NTy5t''@;'; put 'put ''aW4uanMiOjU5LCIuL2Rpc3QvbGFuZ3VhZ2VzL3poLVNHLm1pbi5qcyI6NjAsIi4vZGlzdC9sYW5ndWFnZXMvemgtVFcubWluLmpzIjo2MX1dfSx7fSxbNjJdKSg2Mil9LDI1MzY3OlFlPT57UWUuZXhwb3J0cz1mdW5jdGlvbiBNZShSLG9lLHgpe2Z1bmN0aW9uIG0oTyxJKXtpZighb2VbT10p''@;'; put 'put ''e2lmKCFSW09dKXtpZihzZSlyZXR1cm4gc2UoTywhMCk7dmFyIEc9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrTysiJyIpO3Rocm93IEcuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsR312YXIgRD1vZVtPXT17ZXhwb3J0czp7fX07UltPXVswXS5jYWxsKEQuZXhwb3J0cyxmdW5j''@;'; put 'put ''dGlvbihUKXtyZXR1cm4gbShSW09dWzFdW1RdfHxUKX0sRCxELmV4cG9ydHMsTWUsUixvZSx4KX1yZXR1cm4gb2VbT10uZXhwb3J0c31mb3IodmFyIHNlPXZvaWQgMCxNPTA7TTx4Lmxlbmd0aDtNKyspbSh4W01dKTtyZXR1cm4gbX0oezE6W2Z1bmN0aW9uKE1lLFIsb2UpeyFmdW5jdGlvbih4''@;'; put 'put ''KXsidXNlIHN0cmljdCI7dmFyIG0sc2U9L14tPyg/OlxkKyg/OlwuXGQqKT98XC5cZCspKD86ZVsrLV0/XGQrKT8kL2ksTT1NYXRoLmNlaWwsTz1NYXRoLmZsb29yLEk9IltCaWdOdW1iZXIgRXJyb3JdICIsaj1JKyJOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNh''@;'; put 'put ''bnQgZGlnaXRzOiAiLEc9MWUxNCxEPTE0LFQ9OTAwNzE5OTI1NDc0MDk5MSxFPVsxLDEwLDEwMCwxZTMsMWU0LDFlNSwxZTYsMWU3LDFlOCwxZTksMWUxMCwxZTExLDFlMTIsMWUxM10sej0xZTcsTj0xZTk7ZnVuY3Rpb24gQihyZSl7dmFyIGllPTB8cmU7cmV0dXJuIDA8cmV8fHJlPT09aWU/''@;'; put 'put ''aWU6aWUtMX1mdW5jdGlvbiBaKHJlKXtmb3IodmFyIGllLHVlLGxlPTEsYWU9cmUubGVuZ3RoLFc9cmVbMF0rIiI7bGU8YWU7KXtmb3IoaWU9cmVbbGUrK10rIiIsdWU9RC1pZS5sZW5ndGg7dWUtLTtpZT0iMCIraWUpO1crPWllfWZvcihhZT1XLmxlbmd0aDs0OD09PVcuY2hhckNvZGVBdCgt''@;'; put 'put ''LWFlKTspO3JldHVybiBXLnNsaWNlKDAsYWUrMXx8MSl9ZnVuY3Rpb24gWShyZSxpZSl7dmFyIHVlLGxlLGFlPXJlLmMsVz1pZS5jLGI9cmUucyxBPWllLnMsRj1yZS5lLEg9aWUuZTtpZighYnx8IUEpcmV0dXJuIG51bGw7aWYobGU9VyYmIVdbMF0sKHVlPWFlJiYhYWVbMF0pfHxsZSlyZXR1''@;'; put 'put ''cm4gdWU/bGU/MDotQTpiO2lmKGIhPUEpcmV0dXJuIGI7aWYodWU9YjwwLGxlPUY9PUgsIWFlfHwhVylyZXR1cm4gbGU/MDohYWVedWU/MTotMTtpZighbGUpcmV0dXJuIEg8Rl51ZT8xOi0xO2ZvcihBPShGPWFlLmxlbmd0aCk8KEg9Vy5sZW5ndGgpP0Y6SCxiPTA7YjxBO2IrKylpZihhZVti''@;'; put 'put ''XSE9V1tiXSlyZXR1cm4gYWVbYl0+V1tiXV51ZT8xOi0xO3JldHVybiBGPT1IPzA6SDxGXnVlPzE6LTF9ZnVuY3Rpb24gVShyZSxpZSx1ZSxsZSl7aWYocmU8aWV8fHVlPHJlfHxyZSE9PShyZTwwP00ocmUpOk8ocmUpKSl0aHJvdyBFcnJvcihJKyhsZXx8IkFyZ3VtZW50IikrKCJudW1iZXIi''@;'; put 'put ''PT10eXBlb2YgcmU/cmU8aWV8fHVlPHJlPyIgb3V0IG9mIHJhbmdlOiAiOiIgbm90IGFuIGludGVnZXI6ICI6IiBub3QgYSBwcmltaXRpdmUgbnVtYmVyOiAiKStTdHJpbmcocmUpKX1mdW5jdGlvbiBxKHJlKXt2YXIgaWU9cmUuYy5sZW5ndGgtMTtyZXR1cm4gQihyZS5lL0QpPT1pZSYmcmUu''@;'; put 'put ''Y1tpZV0lMiE9MH1mdW5jdGlvbiBKKHJlLGllKXtyZXR1cm4oMTxyZS5sZW5ndGg/cmUuY2hhckF0KDApKyIuIityZS5zbGljZSgxKTpyZSkrKGllPDA/ImUiOiJlKyIpK2llfWZ1bmN0aW9uIGVlKHJlLGllLHVlKXt2YXIgbGUsYWU7aWYoaWU8MCl7Zm9yKGFlPXVlKyIuIjsrK2llO2FlKz11''@;'; put 'put ''ZSk7cmU9YWUrcmV9ZWxzZSBpZigrK2llPihsZT1yZS5sZW5ndGgpKXtmb3IoYWU9dWUsaWUtPWxlOy0taWU7YWUrPXVlKTtyZSs9YWV9ZWxzZSBpZTxsZSYmKHJlPXJlLnNsaWNlKDAsaWUpKyIuIityZS5zbGljZShpZSkpO3JldHVybiByZX0obT1mdW5jdGlvbiByZShpZSl7dmFyIHVlLGxl''@;'; put 'put ''LGFlLFcsYixBLEYsSCxnLEMsaz1CZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkJlLHRvU3RyaW5nOm51bGwsdmFsdWVPZjpudWxsfSxfPW5ldyBCZSgxKSxwPTIwLHc9NCxLPS03LHRlPTIxLGNlPS0xZTcsaGU9MWU3LFNlPSExLExlPTEsSGU9MCx4ZT17cHJlZml4OiIiLGdyb3VwU2l6ZToz''@;'; put 'put ''LHNlY29uZGFyeUdyb3VwU2l6ZTowLGdyb3VwU2VwYXJhdG9yOiIsIixkZWNpbWFsU2VwYXJhdG9yOiIuIixmcmFjdGlvbkdyb3VwU2l6ZTowLGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6Ilx4YTAiLHN1ZmZpeDoiIn0sRGU9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7''@;'; put 'put ''ZnVuY3Rpb24gQmUod2UsRWUpe3ZhciBJZSxYZSx0dCxaZSxjdCxrZSxBZSxqZSxpdD10aGlzO2lmKCEoaXQgaW5zdGFuY2VvZiBCZSkpcmV0dXJuIG5ldyBCZSh3ZSxFZSk7aWYobnVsbD09RWUpe2lmKHdlIGluc3RhbmNlb2YgQmUpcmV0dXJuIGl0LnM9d2UucyxpdC5lPXdlLmUsdm9pZChp''@;'; put 'put ''dC5jPSh3ZT13ZS5jKT93ZS5zbGljZSgpOndlKTtpZigoa2U9Im51bWJlciI9PXR5cGVvZiB3ZSkmJjAqd2U9PTApe2lmKGl0LnM9MS93ZTwwPyh3ZT0td2UsLTEpOjEsd2U9PT1+fndlKXtmb3IoWmU9MCxjdD13ZTsxMDw9Y3Q7Y3QvPTEwLFplKyspO3JldHVybiBpdC5lPVplLHZvaWQoaXQu''@;'; put 'put ''Yz1bd2VdKX1qZT1TdHJpbmcod2UpfWVsc2V7aWYoamU9U3RyaW5nKHdlKSwhc2UudGVzdChqZSkpcmV0dXJuIGFlKGl0LGplLGtlKTtpdC5zPTQ1PT1qZS5jaGFyQ29kZUF0KDApPyhqZT1qZS5zbGljZSgxKSwtMSk6MX0tMTwoWmU9amUuaW5kZXhPZigiLiIpKSYmKGplPWplLnJlcGxhY2Uo''@;'; put 'put ''Ii4iLCIiKSksMDwoY3Q9amUuc2VhcmNoKC9lL2kpKT8oWmU8MCYmKFplPWN0KSxaZSs9K2plLnNsaWNlKGN0KzEpLGplPWplLnN1YnN0cmluZygwLGN0KSk6WmU8MCYmKFplPWplLmxlbmd0aCl9ZWxzZXtpZihVKEVlLDIsRGUubGVuZ3RoLCJCYXNlIiksamU9U3RyaW5nKHdlKSwxMD09RWUp''@;'; put 'put ''cmV0dXJuIG90KGl0PW5ldyBCZSh3ZSBpbnN0YW5jZW9mIEJlP3dlOmplKSxwK2l0LmUrMSx3KTtpZihrZT0ibnVtYmVyIj09dHlwZW9mIHdlKXtpZigwKndlIT0wKXJldHVybiBhZShpdCxqZSxrZSxFZSk7aWYoaXQucz0xL3dlPDA/KGplPWplLnNsaWNlKDEpLC0xKToxLEJlLkRFQlVHJiYx''@;'; put 'put ''NTxqZS5yZXBsYWNlKC9eMFwuMCp8XC4vLCIiKS5sZW5ndGgpdGhyb3cgRXJyb3Ioait3ZSk7a2U9ITF9ZWxzZSBpdC5zPTQ1PT09amUuY2hhckNvZGVBdCgwKT8oamU9amUuc2xpY2UoMSksLTEpOjE7Zm9yKEllPURlLnNsaWNlKDAsRWUpLFplPWN0PTAsQWU9amUubGVuZ3RoO2N0PEFlO2N0''@;'; put 'put ''KyspaWYoSWUuaW5kZXhPZihYZT1qZS5jaGFyQXQoY3QpKTwwKXtpZigiLiI9PVhlKXtpZihaZTxjdCl7WmU9QWU7Y29udGludWV9fWVsc2UgaWYoIXR0JiYoamU9PWplLnRvVXBwZXJDYXNlKCkmJihqZT1qZS50b0xvd2VyQ2FzZSgpKXx8amU9PWplLnRvTG93ZXJDYXNlKCkmJihqZT1qZS50''@;'; put 'put ''b1VwcGVyQ2FzZSgpKSkpe3R0PSEwLGN0PS0xLFplPTA7Y29udGludWV9cmV0dXJuIGFlKGl0LFN0cmluZyh3ZSksa2UsRWUpfS0xPChaZT0oamU9bGUoamUsRWUsMTAsaXQucykpLmluZGV4T2YoIi4iKSk/amU9amUucmVwbGFjZSgiLiIsIiIpOlplPWplLmxlbmd0aH1mb3IoY3Q9MDs0OD09''@;'; put 'put ''PWplLmNoYXJDb2RlQXQoY3QpO2N0KyspO2ZvcihBZT1qZS5sZW5ndGg7NDg9PT1qZS5jaGFyQ29kZUF0KC0tQWUpOyk7aWYoamU9amUuc2xpY2UoY3QsKytBZSkpe2lmKEFlLT1jdCxrZSYmQmUuREVCVUcmJjE1PEFlJiYoVDx3ZXx8d2UhPT1PKHdlKSkpdGhyb3cgRXJyb3IoaitpdC5zKndl''@;'; put 'put ''KTtpZihoZTwoWmU9WmUtY3QtMSkpaXQuYz1pdC5lPW51bGw7ZWxzZSBpZihaZTxjZSlpdC5jPVtpdC5lPTBdO2Vsc2V7aWYoaXQuZT1aZSxpdC5jPVtdLGN0PShaZSsxKSVELFplPDAmJihjdCs9RCksY3Q8QWUpe2ZvcihjdCYmaXQuYy5wdXNoKCtqZS5zbGljZSgwLGN0KSksQWUtPUQ7Y3Q8''@;'; put 'put ''QWU7KWl0LmMucHVzaCgramUuc2xpY2UoY3QsY3QrPUQpKTtqZT1qZS5zbGljZShjdCksY3Q9RC1qZS5sZW5ndGh9ZWxzZSBjdC09QWU7Zm9yKDtjdC0tO2plKz0iMCIpO2l0LmMucHVzaCgramUpfX1lbHNlIGl0LmM9W2l0LmU9MF19ZnVuY3Rpb24gR2Uod2UsRWUsSWUsWGUpe3ZhciB0dCxa''@;'; put 'put ''ZSxjdCxrZSxBZTtpZihudWxsPT1JZT9JZT13OlUoSWUsMCw4KSwhd2UuYylyZXR1cm4gd2UudG9TdHJpbmcoKTtpZih0dD13ZS5jWzBdLGN0PXdlLmUsbnVsbD09RWUpQWU9Wih3ZS5jKSxBZT0xPT1YZXx8Mj09WGUmJihjdDw9S3x8dGU8PWN0KT9KKEFlLGN0KTplZShBZSxjdCwiMCIpO2Vs''@;'; put 'put ''c2UgaWYoWmU9KHdlPW90KG5ldyBCZSh3ZSksRWUsSWUpKS5lLGtlPShBZT1aKHdlLmMpKS5sZW5ndGgsMT09WGV8fDI9PVhlJiYoRWU8PVplfHxaZTw9Sykpe2Zvcig7a2U8RWU7QWUrPSIwIixrZSsrKTtBZT1KKEFlLFplKX1lbHNlIGlmKEVlLT1jdCxBZT1lZShBZSxaZSwiMCIpLGtlPFpl''@;'; put 'put ''KzEpe2lmKDA8LS1FZSlmb3IoQWUrPSIuIjtFZS0tO0FlKz0iMCIpO31lbHNlIGlmKDA8KEVlKz1aZS1rZSkpZm9yKFplKzE9PWtlJiYoQWUrPSIuIik7RWUtLTtBZSs9IjAiKTtyZXR1cm4gd2UuczwwJiZ0dD8iLSIrQWU6QWV9ZnVuY3Rpb24gVWUod2UsRWUpe2Zvcih2YXIgSWUsWGU9MSx0''@;'; put 'put ''dD1uZXcgQmUod2VbMF0pO1hlPHdlLmxlbmd0aDtYZSsrKXtpZighKEllPW5ldyBCZSh3ZVtYZV0pKS5zKXt0dD1JZTticmVha31FZS5jYWxsKHR0LEllKSYmKHR0PUllKX1yZXR1cm4gdHR9ZnVuY3Rpb24gcWUod2UsRWUsSWUpe2Zvcih2YXIgWGU9MSx0dD1FZS5sZW5ndGg7IUVlWy0tdHRd''@;'; put 'put ''O0VlLnBvcCgpKTtmb3IodHQ9RWVbMF07MTA8PXR0O3R0Lz0xMCxYZSsrKTtyZXR1cm4gd2UuYz0oSWU9WGUrSWUqRC0xKT5oZT93ZS5lPW51bGw6SWU8Y2U/W3dlLmU9MF06KHdlLmU9SWUsRWUpLHdlfWZ1bmN0aW9uIG90KHdlLEVlLEllLFhlKXt2YXIgdHQsWmUsY3Qsa2UsQWUsamUsaXQs''@;'; put 'put ''c3Q9d2UuYyx4dD1FO2lmKHN0KXtlOntmb3IodHQ9MSxrZT1zdFswXTsxMDw9a2U7a2UvPTEwLHR0KyspO2lmKChaZT1FZS10dCk8MClaZSs9RCxpdD0oQWU9c3RbamU9MF0pL3h0W3R0LShjdD1FZSktMV0lMTB8MDtlbHNlIGlmKChqZT1NKChaZSsxKS9EKSk+PXN0Lmxlbmd0aCl7aWYoIVhl''@;'; put 'put ''KWJyZWFrIGU7Zm9yKDtzdC5sZW5ndGg8PWplO3N0LnB1c2goMCkpO0FlPWl0PTAsY3Q9KFplJT1EKS1EKyh0dD0xKX1lbHNle2ZvcihBZT1rZT1zdFtqZV0sdHQ9MTsxMDw9a2U7a2UvPTEwLHR0KyspO2l0PShjdD0oWmUlPUQpLUQrdHQpPDA/MDpBZS94dFt0dC1jdC0xXSUxMHwwfWlmKFhl''@;'; put 'put ''PVhlfHxFZTwwfHxudWxsIT1zdFtqZSsxXXx8KGN0PDA/QWU6QWUleHRbdHQtY3QtMV0pLFhlPUllPDQ/KGl0fHxYZSkmJigwPT1JZXx8SWU9PSh3ZS5zPDA/MzoyKSk6NTxpdHx8NT09aXQmJig0PT1JZXx8WGV8fDY9PUllJiYoMDxaZT8wPGN0P0FlL3h0W3R0LWN0XTowOnN0W2plLTFdKSUx''@;'; put 'put ''MCYxfHxJZT09KHdlLnM8MD84OjcpKSxFZTwxfHwhc3RbMF0pcmV0dXJuIHN0Lmxlbmd0aD0wLFhlPyhzdFswXT14dFsoRC0oRWUtPXdlLmUrMSklRCklRF0sd2UuZT0tRWV8fDApOnN0WzBdPXdlLmU9MCx3ZTtpZigwPT1aZT8oc3QubGVuZ3RoPWplLGtlPTEsamUtLSk6KHN0Lmxlbmd0aD1q''@;'; put 'put ''ZSsxLGtlPXh0W0QtWmVdLHN0W2plXT0wPGN0P08oQWUveHRbdHQtY3RdJXh0W2N0XSkqa2U6MCksWGUpZm9yKDs7KXtpZigwPT1qZSl7Zm9yKFplPTEsY3Q9c3RbMF07MTA8PWN0O2N0Lz0xMCxaZSsrKTtmb3IoY3Q9c3RbMF0rPWtlLGtlPTE7MTA8PWN0O2N0Lz0xMCxrZSsrKTtaZSE9a2Um''@;'; put 'put ''Jih3ZS5lKyssc3RbMF09PUcmJihzdFswXT0xKSk7YnJlYWt9aWYoc3RbamVdKz1rZSxzdFtqZV0hPUcpYnJlYWs7c3RbamUtLV09MCxrZT0xfWZvcihaZT1zdC5sZW5ndGg7MD09PXN0Wy0tWmVdO3N0LnBvcCgpKTt9d2UuZT5oZT93ZS5jPXdlLmU9bnVsbDp3ZS5lPGNlJiYod2UuYz1bd2Uu''@;'; put 'put ''ZT0wXSl9cmV0dXJuIHdlfWZ1bmN0aW9uIEZlKHdlKXt2YXIgRWUsSWU9d2UuZTtyZXR1cm4gbnVsbD09PUllP3dlLnRvU3RyaW5nKCk6KEVlPVood2UuYyksRWU9SWU8PUt8fHRlPD1JZT9KKEVlLEllKTplZShFZSxJZSwiMCIpLHdlLnM8MD8iLSIrRWU6RWUpfXJldHVybiBCZS5jbG9uZT1y''@;'; put 'put ''ZSxCZS5ST1VORF9VUD0wLEJlLlJPVU5EX0RPV049MSxCZS5ST1VORF9DRUlMPTIsQmUuUk9VTkRfRkxPT1I9MyxCZS5ST1VORF9IQUxGX1VQPTQsQmUuUk9VTkRfSEFMRl9ET1dOPTUsQmUuUk9VTkRfSEFMRl9FVkVOPTYsQmUuUk9VTkRfSEFMRl9DRUlMPTcsQmUuUk9VTkRfSEFMRl9GTE9P''@;'; put 'put ''Uj04LEJlLkVVQ0xJRD05LEJlLmNvbmZpZz1CZS5zZXQ9ZnVuY3Rpb24od2Upe3ZhciBFZSxJZTtpZihudWxsIT13ZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB3ZSl0aHJvdyBFcnJvcihJKyJPYmplY3QgZXhwZWN0ZWQ6ICIrd2UpO2lmKHdlLmhhc093blByb3BlcnR5KEVlPSJERUNJTUFMX1BM''@;'; put 'put ''QUNFUyIpJiYoVShJZT13ZVtFZV0sMCxOLEVlKSxwPUllKSx3ZS5oYXNPd25Qcm9wZXJ0eShFZT0iUk9VTkRJTkdfTU9ERSIpJiYoVShJZT13ZVtFZV0sMCw4LEVlKSx3PUllKSx3ZS5oYXNPd25Qcm9wZXJ0eShFZT0iRVhQT05FTlRJQUxfQVQiKSYmKChJZT13ZVtFZV0pJiZJZS5wb3A/KFUo''@;'; put 'put ''SWVbMF0sLU4sMCxFZSksVShJZVsxXSwwLE4sRWUpLEs9SWVbMF0sdGU9SWVbMV0pOihVKEllLC1OLE4sRWUpLEs9LSh0ZT1JZTwwPy1JZTpJZSkpKSx3ZS5oYXNPd25Qcm9wZXJ0eShFZT0iUkFOR0UiKSlpZigoSWU9d2VbRWVdKSYmSWUucG9wKVUoSWVbMF0sLU4sLTEsRWUpLFUoSWVbMV0s''@;'; put 'put ''MSxOLEVlKSxjZT1JZVswXSxoZT1JZVsxXTtlbHNle2lmKFUoSWUsLU4sTixFZSksIUllKXRocm93IEVycm9yKEkrRWUrIiBjYW5ub3QgYmUgemVybzogIitJZSk7Y2U9LShoZT1JZTwwPy1JZTpJZSl9aWYod2UuaGFzT3duUHJvcGVydHkoRWU9IkNSWVBUTyIpKXtpZigoSWU9d2VbRWVdKSE9''@;'; put 'put ''PSEhSWUpdGhyb3cgRXJyb3IoSStFZSsiIG5vdCB0cnVlIG9yIGZhbHNlOiAiK0llKTtpZihJZSl7aWYodHlwZW9mIGNyeXB0bz4idSJ8fCFjcnlwdG98fCFjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzJiYhY3J5cHRvLnJhbmRvbUJ5dGVzKXRocm93IFNlPSFJZSxFcnJvcihJKyJjcnlwdG8gdW5h''@;'; put 'put ''dmFpbGFibGUiKTtTZT1JZX1lbHNlIFNlPUllfWlmKHdlLmhhc093blByb3BlcnR5KEVlPSJNT0RVTE9fTU9ERSIpJiYoVShJZT13ZVtFZV0sMCw5LEVlKSxMZT1JZSksd2UuaGFzT3duUHJvcGVydHkoRWU9IlBPV19QUkVDSVNJT04iKSYmKFUoSWU9d2VbRWVdLDAsTixFZSksSGU9SWUpLHdl''@;'; put 'put ''Lmhhc093blByb3BlcnR5KEVlPSJGT1JNQVQiKSl7aWYoIm9iamVjdCIhPXR5cGVvZihJZT13ZVtFZV0pKXRocm93IEVycm9yKEkrRWUrIiBub3QgYW4gb2JqZWN0OiAiK0llKTt4ZT1JZX1pZih3ZS5oYXNPd25Qcm9wZXJ0eShFZT0iQUxQSEFCRVQiKSl7aWYoInN0cmluZyIhPXR5cGVvZihJ''@;'; put 'put ''ZT13ZVtFZV0pfHwvXi4kfFsrLS5cc118KC4pLipcMS8udGVzdChJZSkpdGhyb3cgRXJyb3IoSStFZSsiIGludmFsaWQ6ICIrSWUpO0RlPUllfX1yZXR1cm57REVDSU1BTF9QTEFDRVM6cCxST1VORElOR19NT0RFOncsRVhQT05FTlRJQUxfQVQ6W0ssdGVdLFJBTkdFOltjZSxoZV0sQ1JZUFRP''@;'; put 'put ''OlNlLE1PRFVMT19NT0RFOkxlLFBPV19QUkVDSVNJT046SGUsRk9STUFUOnhlLEFMUEhBQkVUOkRlfX0sQmUuaXNCaWdOdW1iZXI9ZnVuY3Rpb24od2Upe3JldHVybiB3ZSBpbnN0YW5jZW9mIEJlfHx3ZSYmITA9PT13ZS5faXNCaWdOdW1iZXJ8fCExfSxCZS5tYXhpbXVtPUJlLm1heD1mdW5j''@;'; put 'put ''dGlvbigpe3JldHVybiBVZShhcmd1bWVudHMsay5sdCl9LEJlLm1pbmltdW09QmUubWluPWZ1bmN0aW9uKCl7cmV0dXJuIFVlKGFyZ3VtZW50cyxrLmd0KX0sQmUucmFuZG9tPShXPTkwMDcxOTkyNTQ3NDA5OTIsYj1NYXRoLnJhbmRvbSgpKlcmMjA5NzE1MT9mdW5jdGlvbigpe3JldHVybiBP''@;'; put 'put ''KE1hdGgucmFuZG9tKCkqVyl9OmZ1bmN0aW9uKCl7cmV0dXJuIDgzODg2MDgqKDEwNzM3NDE4MjQqTWF0aC5yYW5kb20oKXwwKSsoODM4ODYwOCpNYXRoLnJhbmRvbSgpfDApfSxmdW5jdGlvbih3ZSl7dmFyIEVlLEllLFhlLHR0LFplLGN0PTAsa2U9W10sQWU9bmV3IEJlKF8pO2lmKG51bGw9''@;'; put 'put ''PXdlP3dlPXA6VSh3ZSwwLE4pLHR0PU0od2UvRCksU2UpaWYoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7Zm9yKEVlPWNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KHR0Kj0yKSk7Y3Q8dHQ7KTllMTU8PShaZT0xMzEwNzIqRWVbY3RdKyhFZVtjdCsxXT4+PjExKSk/KEll''@;'; put 'put ''PWNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDIpKSxFZVtjdF09SWVbMF0sRWVbY3QrMV09SWVbMV0pOihrZS5wdXNoKFplJTFlMTQpLGN0Kz0yKTtjdD10dC8yfWVsc2V7aWYoIWNyeXB0by5yYW5kb21CeXRlcyl0aHJvdyBTZT0hMSxFcnJvcihJKyJjcnlwdG8gdW5h''@;'; put 'put ''dmFpbGFibGUiKTtmb3IoRWU9Y3J5cHRvLnJhbmRvbUJ5dGVzKHR0Kj03KTtjdDx0dDspOWUxNTw9KFplPTI4MTQ3NDk3NjcxMDY1NiooMzEmRWVbY3RdKSsxMDk5NTExNjI3Nzc2KkVlW2N0KzFdKzQyOTQ5NjcyOTYqRWVbY3QrMl0rMTY3NzcyMTYqRWVbY3QrM10rKEVlW2N0KzRdPDwxNikr''@;'; put 'put ''KEVlW2N0KzVdPDw4KStFZVtjdCs2XSk/Y3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkoRWUsY3QpOihrZS5wdXNoKFplJTFlMTQpLGN0Kz03KTtjdD10dC83fWlmKCFTZSlmb3IoO2N0PHR0OykoWmU9YigpKTw5ZTE1JiYoa2VbY3QrK109WmUlMWUxNCk7Zm9yKHR0PWtlWy0tY3RdLHdlJT1E''@;'; put 'put ''LHR0JiZ3ZSYmKGtlW2N0XT1PKHR0LyhaZT1FW0Qtd2VdKSkqWmUpOzA9PT1rZVtjdF07a2UucG9wKCksY3QtLSk7aWYoY3Q8MClrZT1bWGU9MF07ZWxzZXtmb3IoWGU9LTE7MD09PWtlWzBdO2tlLnNwbGljZSgwLDEpLFhlLT1EKTtmb3IoY3Q9MSxaZT1rZVswXTsxMDw9WmU7WmUvPTEwLGN0''@;'; put 'put ''KyspO2N0PEQmJihYZS09RC1jdCl9cmV0dXJuIEFlLmU9WGUsQWUuYz1rZSxBZX0pLEJlLnN1bT1mdW5jdGlvbigpe2Zvcih2YXIgd2U9MSxFZT1hcmd1bWVudHMsSWU9bmV3IEJlKEVlWzBdKTt3ZTxFZS5sZW5ndGg7KUllPUllLnBsdXMoRWVbd2UrK10pO3JldHVybiBJZX0sbGU9ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgd2U9IjAxMjM0NTY3ODkiO2Z1bmN0aW9uIEVlKEllLFhlLHR0LFplKXtmb3IodmFyIGN0LGtlLEFlPVswXSxqZT0wLGl0PUllLmxlbmd0aDtqZTxpdDspe2ZvcihrZT1BZS5sZW5ndGg7a2UtLTtBZVtrZV0qPVhlKTtmb3IoQWVbMF0rPVplLmluZGV4T2YoSWUuY2hhckF0KGpl''@;'; put 'put ''KyspKSxjdD0wO2N0PEFlLmxlbmd0aDtjdCsrKUFlW2N0XT50dC0xJiYobnVsbD09QWVbY3QrMV0mJihBZVtjdCsxXT0wKSxBZVtjdCsxXSs9QWVbY3RdL3R0fDAsQWVbY3RdJT10dCl9cmV0dXJuIEFlLnJldmVyc2UoKX1yZXR1cm4gZnVuY3Rpb24oSWUsWGUsdHQsWmUsY3Qpe3ZhciBrZSxB''@;'; put 'put ''ZSxqZSxpdCxzdCx4dCxGdCxPdCxLdD1JZS5pbmRleE9mKCIuIiksYm49cCxCdD13O2ZvcigwPD1LdCYmKGl0PUhlLEhlPTAsSWU9SWUucmVwbGFjZSgiLiIsIiIpLHh0PShPdD1uZXcgQmUoWGUpKS5wb3coSWUubGVuZ3RoLUt0KSxIZT1pdCxPdC5jPUVlKGVlKFooeHQuYykseHQuZSwiMCIp''@;'; put 'put ''LDEwLHR0LHdlKSxPdC5lPU90LmMubGVuZ3RoKSxqZT1pdD0oRnQ9RWUoSWUsWGUsdHQsY3Q/KGtlPURlLHdlKTooa2U9d2UsRGUpKSkubGVuZ3RoOzA9PUZ0Wy0taXRdO0Z0LnBvcCgpKTtpZighRnRbMF0pcmV0dXJuIGtlLmNoYXJBdCgwKTtpZihLdDwwPy0tamU6KHh0LmM9RnQseHQuZT1q''@;'; put 'put ''ZSx4dC5zPVplLEZ0PSh4dD11ZSh4dCxPdCxibixCdCx0dCkpLmMsc3Q9eHQucixqZT14dC5lKSxLdD1GdFtBZT1qZStibisxXSxpdD10dC8yLHN0PXN0fHxBZTwwfHxudWxsIT1GdFtBZSsxXSxzdD1CdDw0PyhudWxsIT1LdHx8c3QpJiYoMD09QnR8fEJ0PT0oeHQuczwwPzM6MikpOml0PEt0''@;'; put 'put ''fHxLdD09aXQmJig0PT1CdHx8c3R8fDY9PUJ0JiYxJkZ0W0FlLTFdfHxCdD09KHh0LnM8MD84OjcpKSxBZTwxfHwhRnRbMF0pSWU9c3Q/ZWUoa2UuY2hhckF0KDEpLC1ibixrZS5jaGFyQXQoMCkpOmtlLmNoYXJBdCgwKTtlbHNle2lmKEZ0Lmxlbmd0aD1BZSxzdClmb3IoLS10dDsrK0Z0Wy0t''@;'; put 'put ''QWVdPnR0OylGdFtBZV09MCxBZXx8KCsramUsRnQ9WzFdLmNvbmNhdChGdCkpO2ZvcihpdD1GdC5sZW5ndGg7IUZ0Wy0taXRdOyk7Zm9yKEt0PTAsSWU9IiI7S3Q8PWl0O0llKz1rZS5jaGFyQXQoRnRbS3QrK10pKTtJZT1lZShJZSxqZSxrZS5jaGFyQXQoMCkpfXJldHVybiBJZX19KCksdWU9''@;'; put 'put ''ZnVuY3Rpb24oKXtmdW5jdGlvbiB3ZShYZSx0dCxaZSl7dmFyIGN0LGtlLEFlLGplLGl0PTAsc3Q9WGUubGVuZ3RoLHh0PXR0JXosRnQ9dHQvenwwO2ZvcihYZT1YZS5zbGljZSgpO3N0LS07KWl0PSgoa2U9eHQqKEFlPVhlW3N0XSV6KSsoY3Q9RnQqQWUrKGplPVhlW3N0XS96fDApKnh0KSV6''@;'; put 'put ''KnoraXQpL1plfDApKyhjdC96fDApK0Z0KmplLFhlW3N0XT1rZSVaZTtyZXR1cm4gaXQmJihYZT1baXRdLmNvbmNhdChYZSkpLFhlfWZ1bmN0aW9uIEVlKFhlLHR0LFplLGN0KXt2YXIga2UsQWU7aWYoWmUhPWN0KUFlPWN0PFplPzE6LTE7ZWxzZSBmb3Ioa2U9QWU9MDtrZTxaZTtrZSsrKWlm''@;'; put 'put ''KFhlW2tlXSE9dHRba2VdKXtBZT1YZVtrZV0+dHRba2VdPzE6LTE7YnJlYWt9cmV0dXJuIEFlfWZ1bmN0aW9uIEllKFhlLHR0LFplLGN0KXtmb3IodmFyIGtlPTA7WmUtLTspWGVbWmVdLT1rZSxYZVtaZV09KGtlPVhlW1plXTx0dFtaZV0/MTowKSpjdCtYZVtaZV0tdHRbWmVdO2Zvcig7IVhl''@;'; put 'put ''WzBdJiYxPFhlLmxlbmd0aDtYZS5zcGxpY2UoMCwxKSk7fXJldHVybiBmdW5jdGlvbihYZSx0dCxaZSxjdCxrZSl7dmFyIEFlLGplLGl0LHN0LHh0LEZ0LE90LEt0LGJuLEJ0LHluLE5uLG5uLEduLFluLGZ0LGRuLGhuPVhlLnM9PXR0LnM/MTotMSx3dD1YZS5jLGp0PXR0LmM7aWYoISh3dCYm''@;'; put 'put ''d3RbMF0mJmp0JiZqdFswXSkpcmV0dXJuIG5ldyBCZShYZS5zJiZ0dC5zJiYod3Q/IWp0fHx3dFswXSE9anRbMF06anQpP3d0JiYwPT13dFswXXx8IWp0PzAqaG46aG4vMDpOYU4pO2Zvcihibj0oS3Q9bmV3IEJlKGhuKSkuYz1bXSxobj1aZSsoamU9WGUuZS10dC5lKSsxLGtlfHwoa2U9Ryxq''@;'; put 'put ''ZT1CKFhlLmUvRCktQih0dC5lL0QpLGhuPWhuL0R8MCksaXQ9MDtqdFtpdF09PSh3dFtpdF18fDApO2l0KyspO2lmKGp0W2l0XT4od3RbaXRdfHwwKSYmamUtLSxobjwwKWJuLnB1c2goMSksc3Q9ITA7ZWxzZXtmb3IoR249d3QubGVuZ3RoLGZ0PWp0Lmxlbmd0aCxobis9MiwxPCh4dD1PKGtl''@;'; put 'put ''LyhqdFtpdD0wXSsxKSkpJiYoanQ9d2UoanQseHQsa2UpLHd0PXdlKHd0LHh0LGtlKSxmdD1qdC5sZW5ndGgsR249d3QubGVuZ3RoKSxubj1mdCx5bj0oQnQ9d3Quc2xpY2UoMCxmdCkpLmxlbmd0aDt5bjxmdDtCdFt5bisrXT0wKTtkbj1qdC5zbGljZSgpLGRuPVswXS5jb25jYXQoZG4pLFlu''@;'; put 'put ''PWp0WzBdLGp0WzFdPj1rZS8yJiZZbisrO2Rve2lmKHh0PTAsKEFlPUVlKGp0LEJ0LGZ0LHluKSk8MCl7aWYoTm49QnRbMF0sZnQhPXluJiYoTm49Tm4qa2UrKEJ0WzFdfHwwKSksMTwoeHQ9TyhObi9ZbikpKWZvcihrZTw9eHQmJih4dD1rZS0xKSxPdD0oRnQ9d2UoanQseHQsa2UpKS5sZW5n''@;'; put 'put ''dGgseW49QnQubGVuZ3RoOzE9PUVlKEZ0LEJ0LE90LHluKTspeHQtLSxJZShGdCxmdDxPdD9kbjpqdCxPdCxrZSksT3Q9RnQubGVuZ3RoLEFlPTE7ZWxzZSAwPT14dCYmKEFlPXh0PTEpLE90PShGdD1qdC5zbGljZSgpKS5sZW5ndGg7aWYoT3Q8eW4mJihGdD1bMF0uY29uY2F0KEZ0KSksSWUo''@;'; put 'put ''QnQsRnQseW4sa2UpLHluPUJ0Lmxlbmd0aCwtMT09QWUpZm9yKDtFZShqdCxCdCxmdCx5bik8MTspeHQrKyxJZShCdCxmdDx5bj9kbjpqdCx5bixrZSkseW49QnQubGVuZ3RofWVsc2UgMD09PUFlJiYoeHQrKyxCdD1bMF0pO2JuW2l0KytdPXh0LEJ0WzBdP0J0W3luKytdPXd0W25uXXx8MDoo''@;'; put 'put ''QnQ9W3d0W25uXV0seW49MSl9d2hpbGUoKG5uKys8R258fG51bGwhPUJ0WzBdKSYmaG4tLSk7c3Q9bnVsbCE9QnRbMF0sYm5bMF18fGJuLnNwbGljZSgwLDEpfWlmKGtlPT1HKXtmb3IoaXQ9MSxobj1iblswXTsxMDw9aG47aG4vPTEwLGl0KyspO290KEt0LFplKyhLdC5lPWl0K2plKkQtMSkr''@;'; put 'put ''MSxjdCxzdCl9ZWxzZSBLdC5lPWplLEt0LnI9K3N0O3JldHVybiBLdH19KCksQT0vXigtPykwKFt4Ym9dKSg/PVx3W1x3Ll0qJCkvaSxGPS9eKFteLl0rKVwuJC8sSD0vXlwuKFteLl0rKSQvLGc9L14tPyhJbmZpbml0eXxOYU4pJC8sQz0vXlxzKlwrKD89W1x3Ll0pfF5ccyt8XHMrJC9nLGFl''@;'; put 'put ''PWZ1bmN0aW9uKHdlLEVlLEllLFhlKXt2YXIgdHQsWmU9SWU/RWU6RWUucmVwbGFjZShDLCIiKTtpZihnLnRlc3QoWmUpKXdlLnM9aXNOYU4oWmUpP251bGw6WmU8MD8tMToxLHdlLmM9d2UuZT1udWxsO2Vsc2V7aWYoIUllJiYoWmU9WmUucmVwbGFjZShBLGZ1bmN0aW9uKGN0LGtlLEFlKXty''@;'; put 'put ''ZXR1cm4gdHQ9IngiPT0oQWU9QWUudG9Mb3dlckNhc2UoKSk/MTY6ImIiPT1BZT8yOjgsWGUmJlhlIT10dD9jdDprZX0pLFhlJiYodHQ9WGUsWmU9WmUucmVwbGFjZShGLCIkMSIpLnJlcGxhY2UoSCwiMC4kMSIpKSxFZSE9WmUpKXJldHVybiBuZXcgQmUoWmUsdHQpO2lmKEJlLkRFQlVHKXRo''@;'; put 'put ''cm93IEVycm9yKEkrIk5vdCBhIisoWGU/IiBiYXNlICIrWGU6IiIpKyIgbnVtYmVyOiAiK0VlKTt3ZS5jPXdlLmU9d2Uucz1udWxsfX0say5hYnNvbHV0ZVZhbHVlPWsuYWJzPWZ1bmN0aW9uKCl7dmFyIHdlPW5ldyBCZSh0aGlzKTtyZXR1cm4gd2UuczwwJiYod2Uucz0xKSx3ZX0say5jb21w''@;'; put 'put ''YXJlZFRvPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gWSh0aGlzLG5ldyBCZSh3ZSxFZSkpfSxrLmRlY2ltYWxQbGFjZXM9ay5kcD1mdW5jdGlvbih3ZSxFZSl7dmFyIEllLFhlLHR0O2lmKG51bGwhPXdlKXJldHVybiBVKHdlLDAsTiksbnVsbD09RWU/RWU9dzpVKEVlLDAsOCksb3QobmV3IEJl''@;'; put 'put ''KHRoaXMpLHdlK3RoaXMuZSsxLEVlKTtpZighKEllPXRoaXMuYykpcmV0dXJuIG51bGw7aWYoWGU9KCh0dD1JZS5sZW5ndGgtMSktQih0aGlzLmUvRCkpKkQsdHQ9SWVbdHRdKWZvcig7dHQlMTA9PTA7dHQvPTEwLFhlLS0pO3JldHVybiBYZTwwJiYoWGU9MCksWGV9LGsuZGl2aWRlZEJ5PWsu''@;'; put 'put ''ZGl2PWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gdWUodGhpcyxuZXcgQmUod2UsRWUpLHAsdyl9LGsuZGl2aWRlZFRvSW50ZWdlckJ5PWsuaWRpdj1mdW5jdGlvbih3ZSxFZSl7cmV0dXJuIHVlKHRoaXMsbmV3IEJlKHdlLEVlKSwwLDEpfSxrLmV4cG9uZW50aWF0ZWRCeT1rLnBvdz1mdW5jdGlv''@;'; put 'put ''bih3ZSxFZSl7dmFyIEllLFhlLHR0LFplLGN0LGtlLEFlLGplLGl0PXRoaXM7aWYoKHdlPW5ldyBCZSh3ZSkpLmMmJiF3ZS5pc0ludGVnZXIoKSl0aHJvdyBFcnJvcihJKyJFeHBvbmVudCBub3QgYW4gaW50ZWdlcjogIitGZSh3ZSkpO2lmKG51bGwhPUVlJiYoRWU9bmV3IEJlKEVlKSksY3Q9''@;'; put 'put ''MTQ8d2UuZSwhaXQuY3x8IWl0LmNbMF18fDE9PWl0LmNbMF0mJiFpdC5lJiYxPT1pdC5jLmxlbmd0aHx8IXdlLmN8fCF3ZS5jWzBdKXJldHVybiBqZT1uZXcgQmUoTWF0aC5wb3coK0ZlKGl0KSxjdD8yLXEod2UpOitGZSh3ZSkpKSxFZT9qZS5tb2QoRWUpOmplO2lmKGtlPXdlLnM8MCxFZSl7''@;'; put 'put ''aWYoRWUuYz8hRWUuY1swXTohRWUucylyZXR1cm4gbmV3IEJlKE5hTik7KFhlPSFrZSYmaXQuaXNJbnRlZ2VyKCkmJkVlLmlzSW50ZWdlcigpKSYmKGl0PWl0Lm1vZChFZSkpfWVsc2V7aWYoOTx3ZS5lJiYoMDxpdC5lfHxpdC5lPC0xfHwoMD09aXQuZT8xPGl0LmNbMF18fGN0JiYyNGU3PD1p''@;'; put 'put ''dC5jWzFdOml0LmNbMF08OGUxM3x8Y3QmJml0LmNbMF08PTk5OTk5NzVlNykpKXJldHVybiBaZT1pdC5zPDAmJnEod2UpPy0wOjAsLTE8aXQuZSYmKFplPTEvWmUpLG5ldyBCZShrZT8xL1plOlplKTtIZSYmKFplPU0oSGUvRCsyKSl9Zm9yKEFlPWN0PyhJZT1uZXcgQmUoLjUpLGtlJiYod2Uu''@;'; put 'put ''cz0xKSxxKHdlKSk6KHR0PU1hdGguYWJzKCtGZSh3ZSkpKSUyLGplPW5ldyBCZShfKTs7KXtpZihBZSl7aWYoIShqZT1qZS50aW1lcyhpdCkpLmMpYnJlYWs7WmU/amUuYy5sZW5ndGg+WmUmJihqZS5jLmxlbmd0aD1aZSk6WGUmJihqZT1qZS5tb2QoRWUpKX1pZih0dCl7aWYoMD09PSh0dD1P''@;'; put 'put ''KHR0LzIpKSlicmVhaztBZT10dCUyfWVsc2UgaWYob3Qod2U9d2UudGltZXMoSWUpLHdlLmUrMSwxKSwxNDx3ZS5lKUFlPXEod2UpO2Vsc2V7aWYoMD09KHR0PStGZSh3ZSkpKWJyZWFrO0FlPXR0JTJ9aXQ9aXQudGltZXMoaXQpLFplP2l0LmMmJml0LmMubGVuZ3RoPlplJiYoaXQuYy5sZW5n''@;'; put 'put ''dGg9WmUpOlhlJiYoaXQ9aXQubW9kKEVlKSl9cmV0dXJuIFhlP2plOihrZSYmKGplPV8uZGl2KGplKSksRWU/amUubW9kKEVlKTpaZT9vdChqZSxIZSx3LHZvaWQgMCk6amUpfSxrLmludGVnZXJWYWx1ZT1mdW5jdGlvbih3ZSl7dmFyIEVlPW5ldyBCZSh0aGlzKTtyZXR1cm4gbnVsbD09d2U/''@;'; put 'put ''d2U9dzpVKHdlLDAsOCksb3QoRWUsRWUuZSsxLHdlKX0say5pc0VxdWFsVG89ay5lcT1mdW5jdGlvbih3ZSxFZSl7cmV0dXJuIDA9PT1ZKHRoaXMsbmV3IEJlKHdlLEVlKSl9LGsuaXNGaW5pdGU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY30say5pc0dyZWF0ZXJUaGFuPWsuZ3Q9ZnVuY3Rp''@;'; put 'put ''b24od2UsRWUpe3JldHVybiAwPFkodGhpcyxuZXcgQmUod2UsRWUpKX0say5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvPWsuZ3RlPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4gMT09PShFZT1ZKHRoaXMsbmV3IEJlKHdlLEVlKSkpfHwwPT09RWV9LGsuaXNJbnRlZ2VyPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''ISF0aGlzLmMmJkIodGhpcy5lL0QpPnRoaXMuYy5sZW5ndGgtMn0say5pc0xlc3NUaGFuPWsubHQ9ZnVuY3Rpb24od2UsRWUpe3JldHVybiBZKHRoaXMsbmV3IEJlKHdlLEVlKSk8MH0say5pc0xlc3NUaGFuT3JFcXVhbFRvPWsubHRlPWZ1bmN0aW9uKHdlLEVlKXtyZXR1cm4tMT09PShFZT1Z''@;'; put 'put ''KHRoaXMsbmV3IEJlKHdlLEVlKSkpfHwwPT09RWV9LGsuaXNOYU49ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zfSxrLmlzTmVnYXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zPDB9LGsuaXNQb3NpdGl2ZT1mdW5jdGlvbigpe3JldHVybiAwPHRoaXMuc30say5pc1plcm89ZnVuY3Rpb24o''@;'; put 'put ''KXtyZXR1cm4hIXRoaXMuYyYmMD09dGhpcy5jWzBdfSxrLm1pbnVzPWZ1bmN0aW9uKHdlLEVlKXt2YXIgSWUsWGUsdHQsWmUsY3Q9dGhpcyxrZT1jdC5zO2lmKEVlPSh3ZT1uZXcgQmUod2UsRWUpKS5zLCFrZXx8IUVlKXJldHVybiBuZXcgQmUoTmFOKTtpZihrZSE9RWUpcmV0dXJuIHdlLnM9''@;'; put 'put ''LUVlLGN0LnBsdXMod2UpO3ZhciBBZT1jdC5lL0QsamU9d2UuZS9ELGl0PWN0LmMsc3Q9d2UuYztpZighQWV8fCFqZSl7aWYoIWl0fHwhc3QpcmV0dXJuIGl0Pyh3ZS5zPS1FZSx3ZSk6bmV3IEJlKHN0P2N0Ok5hTik7aWYoIWl0WzBdfHwhc3RbMF0pcmV0dXJuIHN0WzBdPyh3ZS5zPS1FZSx3''@;'; put 'put ''ZSk6bmV3IEJlKGl0WzBdP2N0OjM9PXc/LTA6MCl9aWYoQWU9QihBZSksamU9QihqZSksaXQ9aXQuc2xpY2UoKSxrZT1BZS1qZSl7Zm9yKCh0dD0oWmU9a2U8MCk/KGtlPS1rZSxpdCk6KGplPUFlLHN0KSkucmV2ZXJzZSgpLEVlPWtlO0VlLS07dHQucHVzaCgwKSk7dHQucmV2ZXJzZSgpfWVs''@;'; put 'put ''c2UgZm9yKFhlPShaZT0oa2U9aXQubGVuZ3RoKTwoRWU9c3QubGVuZ3RoKSk/a2U6RWUsa2U9RWU9MDtFZTxYZTtFZSsrKWlmKGl0W0VlXSE9c3RbRWVdKXtaZT1pdFtFZV08c3RbRWVdO2JyZWFrfWlmKFplJiYodHQ9aXQsaXQ9c3Qsc3Q9dHQsd2Uucz0td2UucyksMDwoRWU9KFhlPXN0Lmxl''@;'; put 'put ''bmd0aCktKEllPWl0Lmxlbmd0aCkpKWZvcig7RWUtLTtpdFtJZSsrXT0wKTtmb3IoRWU9Ry0xO2tlPFhlOyl7aWYoaXRbLS1YZV08c3RbWGVdKXtmb3IoSWU9WGU7SWUmJiFpdFstLUllXTtpdFtJZV09RWUpOy0taXRbSWVdLGl0W1hlXSs9R31pdFtYZV0tPXN0W1hlXX1mb3IoOzA9PWl0WzBd''@;'; put 'put ''O2l0LnNwbGljZSgwLDEpLC0tamUpO3JldHVybiBpdFswXT9xZSh3ZSxpdCxqZSk6KHdlLnM9Mz09dz8tMToxLHdlLmM9W3dlLmU9MF0sd2UpfSxrLm1vZHVsbz1rLm1vZD1mdW5jdGlvbih3ZSxFZSl7dmFyIEllLFhlLHR0PXRoaXM7cmV0dXJuIHdlPW5ldyBCZSh3ZSxFZSksIXR0LmN8fCF3''@;'; put 'put ''ZS5zfHx3ZS5jJiYhd2UuY1swXT9uZXcgQmUoTmFOKTohd2UuY3x8dHQuYyYmIXR0LmNbMF0/bmV3IEJlKHR0KTooOT09TGU/KFhlPXdlLnMsd2Uucz0xLEllPXVlKHR0LHdlLDAsMyksd2Uucz1YZSxJZS5zKj1YZSk6SWU9dWUodHQsd2UsMCxMZSksKHdlPXR0Lm1pbnVzKEllLnRpbWVzKHdl''@;'; put 'put ''KSkpLmNbMF18fDEhPUxlfHwod2Uucz10dC5zKSx3ZSl9LGsubXVsdGlwbGllZEJ5PWsudGltZXM9ZnVuY3Rpb24od2UsRWUpe3ZhciBJZSxYZSx0dCxaZSxjdCxrZSxBZSxqZSxpdCxzdCx4dCxGdCxPdCxLdCxibixCdD10aGlzLHluPUJ0LmMsTm49KHdlPW5ldyBCZSh3ZSxFZSkpLmM7aWYo''@;'; put 'put ''ISh5biYmTm4mJnluWzBdJiZOblswXSkpcmV0dXJuIUJ0LnN8fCF3ZS5zfHx5biYmIXluWzBdJiYhTm58fE5uJiYhTm5bMF0mJiF5bj93ZS5jPXdlLmU9d2Uucz1udWxsOih3ZS5zKj1CdC5zLHluJiZObj8od2UuYz1bMF0sd2UuZT0wKTp3ZS5jPXdlLmU9bnVsbCksd2U7Zm9yKFhlPUIoQnQu''@;'; put 'put ''ZS9EKStCKHdlLmUvRCksd2Uucyo9QnQucywoQWU9eW4ubGVuZ3RoKTwoc3Q9Tm4ubGVuZ3RoKSYmKE90PXluLHluPU5uLE5uPU90LHR0PUFlLEFlPXN0LHN0PXR0KSx0dD1BZStzdCxPdD1bXTt0dC0tO090LnB1c2goMCkpO2ZvcihLdD1HLGJuPXosdHQ9c3Q7MDw9LS10dDspe2ZvcihJZT0w''@;'; put 'put ''LHh0PU5uW3R0XSVibixGdD1Oblt0dF0vYm58MCxaZT10dCsoY3Q9QWUpO3R0PFplOylJZT0oKGplPXh0KihqZT15blstLWN0XSVibikrKGtlPUZ0KmplKyhpdD15bltjdF0vYm58MCkqeHQpJWJuKmJuK090W1plXStJZSkvS3R8MCkrKGtlL2JufDApK0Z0Kml0LE90W1plLS1dPWplJUt0O090''@;'; put 'put ''W1plXT1JZX1yZXR1cm4gSWU/KytYZTpPdC5zcGxpY2UoMCwxKSxxZSh3ZSxPdCxYZSl9LGsubmVnYXRlZD1mdW5jdGlvbigpe3ZhciB3ZT1uZXcgQmUodGhpcyk7cmV0dXJuIHdlLnM9LXdlLnN8fG51bGwsd2V9LGsucGx1cz1mdW5jdGlvbih3ZSxFZSl7dmFyIEllLFhlPXRoaXMsdHQ9WGUu''@;'; put 'put ''cztpZihFZT0od2U9bmV3IEJlKHdlLEVlKSkucywhdHR8fCFFZSlyZXR1cm4gbmV3IEJlKE5hTik7aWYodHQhPUVlKXJldHVybiB3ZS5zPS1FZSxYZS5taW51cyh3ZSk7dmFyIFplPVhlLmUvRCxjdD13ZS5lL0Qsa2U9WGUuYyxBZT13ZS5jO2lmKCFaZXx8IWN0KXtpZigha2V8fCFBZSlyZXR1''@;'; put 'put ''cm4gbmV3IEJlKHR0LzApO2lmKCFrZVswXXx8IUFlWzBdKXJldHVybiBBZVswXT93ZTpuZXcgQmUoa2VbMF0/WGU6MCp0dCl9aWYoWmU9QihaZSksY3Q9QihjdCksa2U9a2Uuc2xpY2UoKSx0dD1aZS1jdCl7Zm9yKChJZT0wPHR0PyhjdD1aZSxBZSk6KHR0PS10dCxrZSkpLnJldmVyc2UoKTt0''@;'; put 'put ''dC0tO0llLnB1c2goMCkpO0llLnJldmVyc2UoKX1mb3IoKHR0PWtlLmxlbmd0aCktKEVlPUFlLmxlbmd0aCk8MCYmKEllPUFlLEFlPWtlLGtlPUllLEVlPXR0KSx0dD0wO0VlOyl0dD0oa2VbLS1FZV09a2VbRWVdK0FlW0VlXSt0dCkvR3wwLGtlW0VlXT1HPT09a2VbRWVdPzA6a2VbRWVdJUc7''@;'; put 'put ''cmV0dXJuIHR0JiYoa2U9W3R0XS5jb25jYXQoa2UpLCsrY3QpLHFlKHdlLGtlLGN0KX0say5wcmVjaXNpb249ay5zZD1mdW5jdGlvbih3ZSxFZSl7dmFyIEllLFhlLHR0O2lmKG51bGwhPXdlJiZ3ZSE9PSEhd2UpcmV0dXJuIFUod2UsMSxOKSxudWxsPT1FZT9FZT13OlUoRWUsMCw4KSxvdChu''@;'; put 'put ''ZXcgQmUodGhpcyksd2UsRWUpO2lmKCEoSWU9dGhpcy5jKSlyZXR1cm4gbnVsbDtpZihYZT0odHQ9SWUubGVuZ3RoLTEpKkQrMSx0dD1JZVt0dF0pe2Zvcig7dHQlMTA9PTA7dHQvPTEwLFhlLS0pO2Zvcih0dD1JZVswXTsxMDw9dHQ7dHQvPTEwLFhlKyspO31yZXR1cm4gd2UmJnRoaXMuZSsx''@;'; put 'put ''PlhlJiYoWGU9dGhpcy5lKzEpLFhlfSxrLnNoaWZ0ZWRCeT1mdW5jdGlvbih3ZSl7cmV0dXJuIFUod2UsLVQsVCksdGhpcy50aW1lcygiMWUiK3dlKX0say5zcXVhcmVSb290PWsuc3FydD1mdW5jdGlvbigpe3ZhciB3ZSxFZSxJZSxYZSx0dCxaZT10aGlzLGN0PVplLmMsa2U9WmUucyxBZT1a''@;'; put 'put ''ZS5lLGplPXArNCxpdD1uZXcgQmUoIjAuNSIpO2lmKDEhPT1rZXx8IWN0fHwhY3RbMF0pcmV0dXJuIG5ldyBCZSgha2V8fGtlPDAmJighY3R8fGN0WzBdKT9OYU46Y3Q/WmU6MS8wKTtpZigoSWU9MD09KGtlPU1hdGguc3FydCgrRmUoWmUpKSl8fGtlPT0xLzA/KCgoRWU9WihjdCkpLmxlbmd0''@;'; put 'put ''aCtBZSklMj09MCYmKEVlKz0iMCIpLGtlPU1hdGguc3FydCgrRWUpLEFlPUIoKEFlKzEpLzIpLShBZTwwfHxBZSUyKSxuZXcgQmUoRWU9a2U9PTEvMD8iMWUiK0FlOihFZT1rZS50b0V4cG9uZW50aWFsKCkpLnNsaWNlKDAsRWUuaW5kZXhPZigiZSIpKzEpK0FlKSk6bmV3IEJlKGtlKyIiKSku''@;'; put 'put ''Y1swXSlmb3IoKGtlPShBZT1JZS5lKStqZSk8MyYmKGtlPTApOzspaWYoSWU9aXQudGltZXMoKHR0PUllKS5wbHVzKHVlKFplLHR0LGplLDEpKSksWih0dC5jKS5zbGljZSgwLGtlKT09PShFZT1aKEllLmMpKS5zbGljZSgwLGtlKSl7aWYoSWUuZTxBZSYmLS1rZSwiOTk5OSIhPShFZT1FZS5z''@;'; put 'put ''bGljZShrZS0zLGtlKzEpKSYmKFhlfHwiNDk5OSIhPUVlKSl7K0VlJiYoK0VlLnNsaWNlKDEpfHwiNSIhPUVlLmNoYXJBdCgwKSl8fChvdChJZSxJZS5lK3ArMiwxKSx3ZT0hSWUudGltZXMoSWUpLmVxKFplKSk7YnJlYWt9aWYoIVhlJiYob3QodHQsdHQuZStwKzIsMCksdHQudGltZXModHQp''@;'; put 'put ''LmVxKFplKSkpe0llPXR0O2JyZWFrfWplKz00LGtlKz00LFhlPTF9cmV0dXJuIG90KEllLEllLmUrcCsxLHcsd2UpfSxrLnRvRXhwb25lbnRpYWw9ZnVuY3Rpb24od2UsRWUpe3JldHVybiBudWxsIT13ZSYmKFUod2UsMCxOKSx3ZSsrKSxHZSh0aGlzLHdlLEVlLDEpfSxrLnRvRml4ZWQ9ZnVu''@;'; put 'put ''Y3Rpb24od2UsRWUpe3JldHVybiBudWxsIT13ZSYmKFUod2UsMCxOKSx3ZT13ZSt0aGlzLmUrMSksR2UodGhpcyx3ZSxFZSl9LGsudG9Gb3JtYXQ9ZnVuY3Rpb24od2UsRWUsSWUpe3ZhciBYZTtpZihudWxsPT1JZSludWxsIT13ZSYmRWUmJiJvYmplY3QiPT10eXBlb2YgRWU/KEllPUVlLEVl''@;'; put 'put ''PW51bGwpOndlJiYib2JqZWN0Ij09dHlwZW9mIHdlPyhJZT13ZSx3ZT1FZT1udWxsKTpJZT14ZTtlbHNlIGlmKCJvYmplY3QiIT10eXBlb2YgSWUpdGhyb3cgRXJyb3IoSSsiQXJndW1lbnQgbm90IGFuIG9iamVjdDogIitJZSk7aWYoWGU9dGhpcy50b0ZpeGVkKHdlLEVlKSx0aGlzLmMpe3Zh''@;'; put 'put ''ciB0dCxaZT1YZS5zcGxpdCgiLiIpLGN0PStJZS5ncm91cFNpemUsa2U9K0llLnNlY29uZGFyeUdyb3VwU2l6ZSxBZT1JZS5ncm91cFNlcGFyYXRvcnx8IiIsamU9WmVbMF0saXQ9WmVbMV0sc3Q9dGhpcy5zPDAseHQ9c3Q/amUuc2xpY2UoMSk6amUsRnQ9eHQubGVuZ3RoO2lmKGtlJiYodHQ9''@;'; put 'put ''Y3QsY3Q9a2UsRnQtPWtlPXR0KSwwPGN0JiYwPEZ0KXtmb3IoamU9eHQuc3Vic3RyKDAsdHQ9RnQlY3R8fGN0KTt0dDxGdDt0dCs9Y3QpamUrPUFlK3h0LnN1YnN0cih0dCxjdCk7MDxrZSYmKGplKz1BZSt4dC5zbGljZSh0dCkpLHN0JiYoamU9Ii0iK2plKX1YZT1pdD9qZSsoSWUuZGVjaW1h''@;'; put 'put ''bFNlcGFyYXRvcnx8IiIpKygoa2U9K0llLmZyYWN0aW9uR3JvdXBTaXplKT9pdC5yZXBsYWNlKG5ldyBSZWdFeHAoIlxcZHsiK2tlKyJ9XFxCIiwiZyIpLCIkJiIrKEllLmZyYWN0aW9uR3JvdXBTZXBhcmF0b3J8fCIiKSk6aXQpOmplfXJldHVybihJZS5wcmVmaXh8fCIiKStYZSsoSWUuc3Vm''@;'; put 'put ''Zml4fHwiIil9LGsudG9GcmFjdGlvbj1mdW5jdGlvbih3ZSl7dmFyIEVlLEllLFhlLHR0LFplLGN0LGtlLEFlLGplLGl0LHN0LHh0LEZ0PXRoaXMsT3Q9RnQuYztpZihudWxsIT13ZSYmKCEoa2U9bmV3IEJlKHdlKSkuaXNJbnRlZ2VyKCkmJihrZS5jfHwxIT09a2Uucyl8fGtlLmx0KF8pKSl0''@;'; put 'put ''aHJvdyBFcnJvcihJKyJBcmd1bWVudCAiKyhrZS5pc0ludGVnZXIoKT8ib3V0IG9mIHJhbmdlOiAiOiJub3QgYW4gaW50ZWdlcjogIikrRmUoa2UpKTtpZighT3QpcmV0dXJuIG5ldyBCZShGdCk7Zm9yKEVlPW5ldyBCZShfKSxqZT1JZT1uZXcgQmUoXyksWGU9QWU9bmV3IEJlKF8pLHh0PVoo''@;'; put 'put ''T3QpLFplPUVlLmU9eHQubGVuZ3RoLUZ0LmUtMSxFZS5jWzBdPUVbKGN0PVplJUQpPDA/RCtjdDpjdF0sd2U9IXdlfHwwPGtlLmNvbXBhcmVkVG8oRWUpPzA8WmU/RWU6amU6a2UsY3Q9aGUsaGU9MS8wLGtlPW5ldyBCZSh4dCksQWUuY1swXT0wO2l0PXVlKGtlLEVlLDAsMSksMSE9KHR0PUll''@;'; put 'put ''LnBsdXMoaXQudGltZXMoWGUpKSkuY29tcGFyZWRUbyh3ZSk7KUllPVhlLFhlPXR0LGplPUFlLnBsdXMoaXQudGltZXModHQ9amUpKSxBZT10dCxFZT1rZS5taW51cyhpdC50aW1lcyh0dD1FZSkpLGtlPXR0O3JldHVybiB0dD11ZSh3ZS5taW51cyhJZSksWGUsMCwxKSxBZT1BZS5wbHVzKHR0''@;'; put 'put ''LnRpbWVzKGplKSksSWU9SWUucGx1cyh0dC50aW1lcyhYZSkpLEFlLnM9amUucz1GdC5zLHN0PXVlKGplLFhlLFplKj0yLHcpLm1pbnVzKEZ0KS5hYnMoKS5jb21wYXJlZFRvKHVlKEFlLEllLFplLHcpLm1pbnVzKEZ0KS5hYnMoKSk8MT9bamUsWGVdOltBZSxJZV0saGU9Y3Qsc3R9LGsudG9O''@;'; put 'put ''dW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4rRmUodGhpcyl9LGsudG9QcmVjaXNpb249ZnVuY3Rpb24od2UsRWUpe3JldHVybiBudWxsIT13ZSYmVSh3ZSwxLE4pLEdlKHRoaXMsd2UsRWUsMil9LGsudG9TdHJpbmc9ZnVuY3Rpb24od2Upe3ZhciBFZSxJZT10aGlzLFhlPUllLnMsdHQ9SWUuZTty''@;'; put 'put ''ZXR1cm4gbnVsbD09PXR0P1hlPyhFZT0iSW5maW5pdHkiLFhlPDAmJihFZT0iLSIrRWUpKTpFZT0iTmFOIjooRWU9bnVsbD09d2U/dHQ8PUt8fHRlPD10dD9KKFooSWUuYyksdHQpOmVlKFooSWUuYyksdHQsIjAiKToxMD09PXdlP2VlKFooKEllPW90KG5ldyBCZShJZSkscCt0dCsxLHcpKS5j''@;'; put 'put ''KSxJZS5lLCIwIik6KFUod2UsMixEZS5sZW5ndGgsIkJhc2UiKSxsZShlZShaKEllLmMpLHR0LCIwIiksMTAsd2UsWGUsITApKSxYZTwwJiZJZS5jWzBdJiYoRWU9Ii0iK0VlKSksRWV9LGsudmFsdWVPZj1rLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiBGZSh0aGlzKX0say5faXNCaWdOdW1i''@;'; put 'put ''ZXI9ITAsImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3ImJihrW1N5bWJvbC50b1N0cmluZ1RhZ109IkJpZ051bWJlciIsa1tTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1rLnZhbHVlT2YpLG51bGwhPWll''@;'; put 'put ''JiZCZS5zZXQoaWUpLEJlfSgpKS5kZWZhdWx0PW0uQmlnTnVtYmVyPW0sdm9pZCAwIT09UiYmUi5leHBvcnRzP1IuZXhwb3J0cz1tOih4fHwoeD10eXBlb2Ygc2VsZjwidSImJnNlbGY/c2VsZjp3aW5kb3cpLHguQmlnTnVtYmVyPW0pfSh0aGlzKX0se31dLDI6W2Z1bmN0aW9uKE1lLFIsb2Up''@;'; put 'put ''eyJ1c2Ugc3RyaWN0IjtSLmV4cG9ydHM9e2xhbmd1YWdlVGFnOiJlbi1VUyIsZGVsaW1pdGVyczp7dGhvdXNhbmRzOiIsIixkZWNpbWFsOiIuIn0sYWJicmV2aWF0aW9uczp7dGhvdXNhbmQ6ImsiLG1pbGxpb246Im0iLGJpbGxpb246ImIiLHRyaWxsaW9uOiJ0In0sc3BhY2VTZXBhcmF0ZWQ6''@;'; put 'put ''ITEsb3JkaW5hbDpmdW5jdGlvbih4KXt2YXIgbT14JTEwO3JldHVybiAxPT1+fih4JTEwMC8xMCk/InRoIjoxPT09bT8ic3QiOjI9PT1tPyJuZCI6Mz09PW0/InJkIjoidGgifSxjdXJyZW5jeTp7c3ltYm9sOiIkIixwb3NpdGlvbjoicHJlZml4Iixjb2RlOiJVU0QifSxjdXJyZW5jeUZvcm1h''@;'; put 'put ''dDp7dGhvdXNhbmRTZXBhcmF0ZWQ6ITAsdG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMH0sZm9ybWF0czp7Zm91ckRpZ2l0czp7dG90YWxMZW5ndGg6NCxzcGFjZVNlcGFyYXRlZDohMH0sZnVsbFdpdGhUd29EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0''@;'; put 'put ''ZWQ6ITAsbWFudGlzc2E6Mn0sZnVsbFdpdGhUd29EZWNpbWFsc05vQ3VycmVuY3k6e3Rob3VzYW5kU2VwYXJhdGVkOiEwLG1hbnRpc3NhOjJ9LGZ1bGxXaXRoTm9EZWNpbWFsczp7b3V0cHV0OiJjdXJyZW5jeSIsdGhvdXNhbmRTZXBhcmF0ZWQ6ITAsbWFudGlzc2E6MH19fX0se31dLDM6W2Z1''@;'; put 'put ''bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KEIsWil7cmV0dXJuIGZ1bmN0aW9uKFkpe2lmKEFycmF5LmlzQXJyYXkoWSkpcmV0dXJuIFl9KEIpfHxmdW5jdGlvbihZLFUpe3ZhciBxPVtdLEo9ITAsZWU9ITEscmU9dm9pZCAwO3RyeXtmb3IodmFyIGllLHVlPVlbU3lt''@;'; put 'put ''Ym9sLml0ZXJhdG9yXSgpOyEoSj0oaWU9dWUubmV4dCgpKS5kb25lKSYmKHEucHVzaChpZS52YWx1ZSksIVV8fHEubGVuZ3RoIT09VSk7Sj0hMCk7fWNhdGNoKGxlKXtlZT0hMCxyZT1sZX1maW5hbGx5e3RyeXtKfHxudWxsPT11ZS5yZXR1cm58fHVlLnJldHVybigpfWZpbmFsbHl7aWYoZWUp''@;'; put 'put ''dGhyb3cgcmV9fXJldHVybiBxfShCLFopfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgbT1NZSgiLi9nbG9iYWxTdGF0ZSIpLHNlPU1lKCIuL3ZhbGlkYXRpbmciKSxN''@;'; put 'put ''PU1lKCIuL3BhcnNpbmciKSxPPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIiwiUEIiLCJFQiIsIlpCIiwiWUIiXSxJPXtnZW5lcmFsOntzY2FsZToxMDI0LHN1ZmZpeGVzOk8sbWFya2VyOiJiZCJ9LGJpbmFyeTp7c2NhbGU6MTAyNCxzdWZmaXhlczpbIkIiLCJLaUIiLCJNaUIiLCJHaUIiLCJU''@;'; put 'put ''aUIiLCJQaUIiLCJFaUIiLCJaaUIiLCJZaUIiXSxtYXJrZXI6ImIifSxkZWNpbWFsOntzY2FsZToxZTMsc3VmZml4ZXM6TyxtYXJrZXI6ImQifX0saj17dG90YWxMZW5ndGg6MCxjaGFyYWN0ZXJpc3RpYzowLGZvcmNlQXZlcmFnZTohMSxhdmVyYWdlOiExLG1hbnRpc3NhOi0xLG9wdGlvbmFs''@;'; put 'put ''TWFudGlzc2E6ITAsdGhvdXNhbmRTZXBhcmF0ZWQ6ITEsc3BhY2VTZXBhcmF0ZWQ6ITEsbmVnYXRpdmU6InNpZ24iLGZvcmNlU2lnbjohMX07ZnVuY3Rpb24gRyhCKXt2YXIgWj0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sWT0yPGFy''@;'; put 'put ''Z3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzJdOnZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIFomJihaPU0ucGFyc2VGb3JtYXQoWikpLCFzZS52YWxpZGF0ZUZvcm1hdChaKSlyZXR1cm4iRVJST1I6IGludmFsaWQgZm9ybWF0Ijt2YXIgVT1aLnByZWZpeHx8IiIscT1aLnBvc3RmaXh8fCIi''@;'; put 'put ''LEo9ZnVuY3Rpb24oZWUscmUsaWUpe3N3aXRjaChyZS5vdXRwdXQpe2Nhc2UiY3VycmVuY3kiOnJldHVybiBmdW5jdGlvbihEZSxCZSxHZSl7dmFyIFVlPUdlLmN1cnJlbnRDdXJyZW5jeSgpLHFlPU9iamVjdC5hc3NpZ24oe30saixCZSksb3Q9dm9pZCAwLEZlPSIiLHdlPSEhcWUudG90YWxM''@;'; put 'put ''ZW5ndGh8fCEhcWUuZm9yY2VBdmVyYWdlfHxxZS5hdmVyYWdlLEVlPUJlLmN1cnJlbmN5UG9zaXRpb258fFVlLnBvc2l0aW9uLEllPUJlLmN1cnJlbmN5U3ltYm9sfHxVZS5zeW1ib2w7cWUuc3BhY2VTZXBhcmF0ZWQmJihGZT0iICIpLCJpbmZpeCI9PT1FZSYmKG90PUZlK0llK0ZlKTt2YXIg''@;'; put 'put ''WGU9eih7aW5zdGFuY2U6RGUscHJvdmlkZWRGb3JtYXQ6QmUsc3RhdGU6R2UsZGVjaW1hbFNlcGFyYXRvcjpvdH0pO3JldHVybiJwcmVmaXgiPT09RWUmJihYZT1EZS5fdmFsdWU8MCYmInNpZ24iPT09cWUubmVnYXRpdmU/Ii0iLmNvbmNhdChGZSkuY29uY2F0KEllKS5jb25jYXQoWGUuc2xp''@;'; put 'put ''Y2UoMSkpOkllK0ZlK1hlKSxFZSYmInBvc3RmaXgiIT09RWV8fChYZT1YZSsoRmU9d2U/IiI6RmUpK0llKSxYZX0oZWUscmU9TihyZSxtLmN1cnJlbnRDdXJyZW5jeURlZmF1bHRGb3JtYXQoKSksbSk7Y2FzZSJwZXJjZW50IjpyZXR1cm4gcmU9TihyZSxtLmN1cnJlbnRQZXJjZW50YWdlRGVm''@;'; put 'put ''YXVsdEZvcm1hdCgpKSxHZT1tLHFlPShCZT1yZSkucHJlZml4U3ltYm9sLG90PXooe2luc3RhbmNlOmllKDEwMCplZS5fdmFsdWUpLHByb3ZpZGVkRm9ybWF0OkJlLHN0YXRlOkdlfSksRmU9T2JqZWN0LmFzc2lnbih7fSxqLEJlKSxxZT8iJSIuY29uY2F0KEZlLnNwYWNlU2VwYXJhdGVkPyIg''@;'; put 'put ''IjoiIikuY29uY2F0KG90KToiIi5jb25jYXQob3QpLmNvbmNhdChGZS5zcGFjZVNlcGFyYXRlZD8iICI6IiIsIiUiKTtjYXNlImJ5dGUiOnJldHVybiByZT1OKHJlLG0uY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0KCkpLHc9bSxLPWllLHRlPShwPXJlKS5iYXNlfHwiYmluYXJ5IixMZT0oaGU9''@;'; put 'put ''RChlZS5fdmFsdWUsKGNlPUlbdGVdKS5zdWZmaXhlcyxjZS5zY2FsZSkpLnN1ZmZpeCxIZT16KHtpbnN0YW5jZTpLKGhlLnZhbHVlKSxwcm92aWRlZEZvcm1hdDpwLHN0YXRlOncsZGVmYXVsdHM6dy5jdXJyZW50Qnl0ZURlZmF1bHRGb3JtYXQoKX0pLHhlPXcuY3VycmVudEFiYnJldmlhdGlv''@;'; put 'put ''bnMoKSwiIi5jb25jYXQoSGUpLmNvbmNhdCh4ZS5zcGFjZWQ/IiAiOiIiKS5jb25jYXQoTGUpO2Nhc2UidGltZSI6cmV0dXJuIHJlPU4ocmUsbS5jdXJyZW50VGltZURlZmF1bHRGb3JtYXQoKSksSD1lZSxnPU1hdGguZmxvb3IoSC5fdmFsdWUvNjAvNjApLEM9TWF0aC5mbG9vcigoSC5fdmFs''@;'; put 'put ''dWUtNjAqZyo2MCkvNjApLGs9TWF0aC5yb3VuZChILl92YWx1ZS02MCpnKjYwLTYwKkMpLCIiLmNvbmNhdChnLCI6IikuY29uY2F0KEM8MTA/IjAiOiIiKS5jb25jYXQoQywiOiIpLmNvbmNhdChrPDEwPyIwIjoiIikuY29uY2F0KGspO2Nhc2Uib3JkaW5hbCI6cmV0dXJuIHVlPWVlLGxlPXJl''@;'; put 'put ''PU4ocmUsbS5jdXJyZW50T3JkaW5hbERlZmF1bHRGb3JtYXQoKSksVz0oYWU9bSkuY3VycmVudE9yZGluYWwoKSxiPU9iamVjdC5hc3NpZ24oe30saixsZSksQT16KHtpbnN0YW5jZTp1ZSxwcm92aWRlZEZvcm1hdDpsZSxzdGF0ZTphZX0pLEY9Vyh1ZS5fdmFsdWUpLCIiLmNvbmNhdChBKS5j''@;'; put 'put ''b25jYXQoYi5zcGFjZVNlcGFyYXRlZD8iICI6IiIpLmNvbmNhdChGKTtkZWZhdWx0OnJldHVybiB6KHtpbnN0YW5jZTplZSxwcm92aWRlZEZvcm1hdDpyZSxudW1icm86aWV9KX12YXIgQmUsR2UscWUsb3QsRmUsdWUsbGUsYWUsVyxiLEEsRixILGcsQyxrLHAsdyxLLHRlLGNlLGhlLExlLEhl''@;'; put 'put ''LHhlfShCLFosWSk7cmV0dXJuKEo9VStKKStxfWZ1bmN0aW9uIEQoQixaLFkpe3ZhciBVPVpbMF0scT1NYXRoLmFicyhCKTtpZihZPD1xKXtmb3IodmFyIEo9MTtKPFoubGVuZ3RoOysrSil7dmFyIGVlPU1hdGgucG93KFksSikscmU9TWF0aC5wb3coWSxKKzEpO2lmKGVlPD1xJiZxPHJlKXtV''@;'; put 'put ''PVpbSl0sQi89ZWU7YnJlYWt9fVU9PT1aWzBdJiYoQi89TWF0aC5wb3coWSxaLmxlbmd0aC0xKSxVPVpbWi5sZW5ndGgtMV0pfXJldHVybnt2YWx1ZTpCLHN1ZmZpeDpVfX1mdW5jdGlvbiBUKEIpe2Zvcih2YXIgWj0iIixZPTA7WTxCO1krKylaKz0iMCI7cmV0dXJuIFp9ZnVuY3Rpb24geihC''@;'; put 'put ''KXt2YXIgWj1CLmluc3RhbmNlLFk9Qi5wcm92aWRlZEZvcm1hdCxVPUIuc3RhdGUscT12b2lkIDA9PT1VP206VSxKPUIuZGVjaW1hbFNlcGFyYXRvcixlZT1CLmRlZmF1bHRzLHJlPXZvaWQgMD09PWVlP3EuY3VycmVudERlZmF1bHRzKCk6ZWUsaWU9Wi5fdmFsdWU7aWYoMD09PWllJiZxLmhh''@;'; put 'put ''c1plcm9Gb3JtYXQoKSlyZXR1cm4gcS5nZXRaZXJvRm9ybWF0KCk7aWYoIWlzRmluaXRlKGllKSlyZXR1cm4gaWUudG9TdHJpbmcoKTt2YXIgdWUsbGUsYWUsVyxiLEYsSCxnPU9iamVjdC5hc3NpZ24oe30saixyZSxZKSxDPWcudG90YWxMZW5ndGgsaz1DPzA6Zy5jaGFyYWN0ZXJpc3RpYyxf''@;'; put 'put ''PWcub3B0aW9uYWxDaGFyYWN0ZXJpc3RpYyxwPWcuZm9yY2VBdmVyYWdlLHc9ISFDfHwhIXB8fGcuYXZlcmFnZSxLPUM/LTE6dyYmdm9pZCAwPT09WS5tYW50aXNzYT8wOmcubWFudGlzc2EsdGU9IUMmJih2b2lkIDA9PT1ZLm9wdGlvbmFsTWFudGlzc2E/LTE9PT1LOmcub3B0aW9uYWxNYW50''@;'; put 'put ''aXNzYSksY2U9Zy50cmltTWFudGlzc2EsaGU9Zy50aG91c2FuZFNlcGFyYXRlZCxTZT1nLnNwYWNlU2VwYXJhdGVkLExlPWcubmVnYXRpdmUsSGU9Zy5mb3JjZVNpZ24seGU9Zy5leHBvbmVudGlhbCxEZT0iIjtpZih3KXt2YXIgQmU9ZnVuY3Rpb24od2Upe3ZhciBFZT13ZS52YWx1ZSxJZT13''@;'; put 'put ''ZS5mb3JjZUF2ZXJhZ2UsWGU9d2UuYWJicmV2aWF0aW9ucyx0dD13ZS5zcGFjZVNlcGFyYXRlZCxaZT12b2lkIDAhPT10dCYmdHQsY3Q9d2UudG90YWxMZW5ndGgsa2U9dm9pZCAwPT09Y3Q/MDpjdCxBZT0iIixqZT1NYXRoLmFicyhFZSksaXQ9LTE7aWYoamU+PU1hdGgucG93KDEwLDEyKSYm''@;'; put 'put ''IUllfHwidHJpbGxpb24iPT09SWU/KEFlPVhlLnRyaWxsaW9uLEVlLz1NYXRoLnBvdygxMCwxMikpOmplPE1hdGgucG93KDEwLDEyKSYmamU+PU1hdGgucG93KDEwLDkpJiYhSWV8fCJiaWxsaW9uIj09PUllPyhBZT1YZS5iaWxsaW9uLEVlLz1NYXRoLnBvdygxMCw5KSk6amU8TWF0aC5wb3co''@;'; put 'put ''MTAsOSkmJmplPj1NYXRoLnBvdygxMCw2KSYmIUllfHwibWlsbGlvbiI9PT1JZT8oQWU9WGUubWlsbGlvbixFZS89TWF0aC5wb3coMTAsNikpOihqZTxNYXRoLnBvdygxMCw2KSYmamU+PU1hdGgucG93KDEwLDMpJiYhSWV8fCJ0aG91c2FuZCI9PT1JZSkmJihBZT1YZS50aG91c2FuZCxFZS89''@;'; put 'put ''TWF0aC5wb3coMTAsMykpLEFlJiYoQWU9KFplPyIgIjoiIikrQWUpLGtlKXt2YXIgc3Q9RWUudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzBdO2l0PU1hdGgubWF4KGtlLXN0Lmxlbmd0aCwwKX1yZXR1cm57dmFsdWU6RWUsYWJicmV2aWF0aW9uOkFlLG1hbnRpc3NhUHJlY2lzaW9uOml0fX0oe3Zh''@;'; put 'put ''bHVlOmllLGZvcmNlQXZlcmFnZTpwLGFiYnJldmlhdGlvbnM6cS5jdXJyZW50QWJicmV2aWF0aW9ucygpLHNwYWNlU2VwYXJhdGVkOlNlLHRvdGFsTGVuZ3RoOkN9KTtpZT1CZS52YWx1ZSxEZSs9QmUuYWJicmV2aWF0aW9uLEMmJihLPUJlLm1hbnRpc3NhUHJlY2lzaW9uKX1pZih4ZSl7dmFy''@;'; put 'put ''IEdlPShsZT0odWU9e3ZhbHVlOmllLGNoYXJhY3RlcmlzdGljUHJlY2lzaW9uOmt9KS52YWx1ZSxXPXZvaWQgMD09PShhZT11ZS5jaGFyYWN0ZXJpc3RpY1ByZWNpc2lvbik/MDphZSxGPShiPXgobGUudG9FeHBvbmVudGlhbCgpLnNwbGl0KCJlIiksMikpWzFdLEg9K2JbMF0sVyYmMTxXJiYo''@;'; put 'put ''SCo9TWF0aC5wb3coMTAsVy0xKSxGPTA8PShGPStGLShXLTEpKT8iKyIuY29uY2F0KEYpOkYpLHt2YWx1ZTpILGFiYnJldmlhdGlvbjoiZSIuY29uY2F0KEYpfSk7aWU9R2UudmFsdWUsRGU9R2UuYWJicmV2aWF0aW9uK0RlfXZhciBVZSxxZSxvdCxGZT1mdW5jdGlvbih3ZSxFZSxJZSxYZSx0''@;'; put 'put ''dCl7aWYoLTE9PT1YZSlyZXR1cm4gd2U7dmFyIFplPWZ1bmN0aW9uIEUoQixaKXtyZXR1cm4tMSE9PUIudG9TdHJpbmcoKS5pbmRleE9mKCJlIik/ZnVuY3Rpb24oWSxVKXt2YXIgcT1ZLnRvU3RyaW5nKCksSj14KHEuc3BsaXQoImUiKSwyKSxyZT1KWzFdLGllPXgoSlswXS5zcGxpdCgiLiIp''@;'; put 'put ''LDIpLHVlPWllWzBdLGxlPWllWzFdLGFlPXZvaWQgMD09PWxlPyIiOmxlO2lmKDA8K3JlKXE9dWUrYWUrVChyZS1hZS5sZW5ndGgpO2Vsc2V7dmFyIFc9Ii4iO1c9K3VlPDA/Ii0wIi5jb25jYXQoVyk6IjAiLmNvbmNhdChXKTt2YXIgYj0oVCgtcmUtMSkrTWF0aC5hYnModWUpK2FlKS5zdWJz''@;'; put 'put ''dHIoMCxVKTtiLmxlbmd0aDxVJiYoYis9VChVLWIubGVuZ3RoKSkscT1XK2J9cmV0dXJuIDA8K3JlJiYwPFUmJihxKz0iLiIuY29uY2F0KFQoVSkpKSxxfShCLFopOihNYXRoLnJvdW5kKCsiIi5jb25jYXQoQiwiZSsiKS5jb25jYXQoWikpL01hdGgucG93KDEwLFopKS50b0ZpeGVkKFopfShF''@;'; put 'put ''ZSxYZSksY3Q9eChaZS50b1N0cmluZygpLnNwbGl0KCIuIiksMiksa2U9Y3RbMF0sQWU9Y3RbMV0samU9dm9pZCAwPT09QWU/IiI6QWU7aWYoamUubWF0Y2goL14wKyQvKSYmKEllfHx0dCkpcmV0dXJuIGtlO3ZhciBpdD1qZS5tYXRjaCgvMCskLyk7cmV0dXJuIHR0JiZpdD8iIi5jb25jYXQo''@;'; put 'put ''a2UsIi4iKS5jb25jYXQoamUudG9TdHJpbmcoKS5zbGljZSgwLGl0LmluZGV4KSk6WmUudG9TdHJpbmcoKX0oaWUudG9TdHJpbmcoKSxpZSx0ZSxLLGNlKTtyZXR1cm4gRmU9ZnVuY3Rpb24od2UsRWUsSWUsWGUsdHQpe3ZhciBaZT1YZS5jdXJyZW50RGVsaW1pdGVycygpLGN0PVplLnRob3Vz''@;'; put 'put ''YW5kczt0dD10dHx8WmUuZGVjaW1hbDt2YXIga2U9WmUudGhvdXNhbmRzU2l6ZXx8MyxBZT13ZS50b1N0cmluZygpLGplPUFlLnNwbGl0KCIuIilbMF0saXQ9QWUuc3BsaXQoIi4iKVsxXTtyZXR1cm4gSWUmJihFZTwwJiYoamU9amUuc2xpY2UoMSkpLGZ1bmN0aW9uKHN0LHh0KXtmb3IodmFy''@;'; put 'put ''IEZ0PVtdLE90PTAsS3Q9c3Q7MDxLdDtLdC0tKU90PT09eHQmJihGdC51bnNoaWZ0KEt0KSxPdD0wKSxPdCsrO3JldHVybiBGdH0oamUubGVuZ3RoLGtlKS5mb3JFYWNoKGZ1bmN0aW9uKHN0LHh0KXtqZT1qZS5zbGljZSgwLHN0K3h0KStjdCtqZS5zbGljZShzdCt4dCl9KSxFZTwwJiYoamU9''@;'; put 'put ''Ii0iLmNvbmNhdChqZSkpKSxpdD9qZSt0dCtpdDpqZX0oRmU9ZnVuY3Rpb24od2UsRWUsSWUsWGUpe3ZhciB0dD13ZSxaZT14KHR0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKSwyKSxjdD1aZVswXSxrZT1aZVsxXTtpZihjdC5tYXRjaCgvXi0/MCQvKSYmSWUpcmV0dXJuIGtlPyIiLmNvbmNhdChj''@;'; put 'put ''dC5yZXBsYWNlKCIwIiwiIiksIi4iKS5jb25jYXQoa2UpOmN0LnJlcGxhY2UoIjAiLCIiKTtpZihjdC5sZW5ndGg8WGUpZm9yKHZhciBBZT1YZS1jdC5sZW5ndGgsamU9MDtqZTxBZTtqZSsrKXR0PSIwIi5jb25jYXQodHQpO3JldHVybiB0dC50b1N0cmluZygpfShGZSwwLF8sayksaWUsaGUs''@;'; put 'put ''cSxKKSwod3x8eGUpJiYoRmUrPURlKSwoSGV8fGllPDApJiYoVWU9RmUsb3Q9TGUsRmU9MD09PShxZT1pZSk/VWU6MD09K1VlP1VlLnJlcGxhY2UoIi0iLCIiKTowPHFlPyIrIi5jb25jYXQoVWUpOiJzaWduIj09PW90P1VlOiIoIi5jb25jYXQoVWUucmVwbGFjZSgiLSIsIiIpLCIpIikpLEZl''@;'; put 'put ''fWZ1bmN0aW9uIE4oQixaKXtpZighQilyZXR1cm4gWjt2YXIgWT1PYmplY3Qua2V5cyhCKTtyZXR1cm4gMT09PVkubGVuZ3RoJiYib3V0cHV0Ij09PVlbMF0/WjpCfVIuZXhwb3J0cz1mdW5jdGlvbihCKXtyZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKCl7Zm9yKHZhciBaPWFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGgsWT1uZXcgQXJyYXkoWiksVT0wO1U8WjtVKyspWVtVXT1hcmd1bWVudHNbVV07cmV0dXJuIEcuYXBwbHkodm9pZCAwLFkuY29uY2F0KFtCXSkpfSxnZXRCeXRlVW5pdDpmdW5jdGlvbigpe2Zvcih2YXIgWj1hcmd1bWVudHMubGVuZ3RoLFk9bmV3IEFycmF5KFopLFU9MDtVPFo7VSsrKVlb''@;'; put 'put ''VV09YXJndW1lbnRzW1VdO3JldHVybiBmdW5jdGlvbihxKXt2YXIgSj1JLmdlbmVyYWw7cmV0dXJuIEQocS5fdmFsdWUsSi5zdWZmaXhlcyxKLnNjYWxlKS5zdWZmaXh9LmFwcGx5KHZvaWQgMCxZLmNvbmNhdChbQl0pKX0sZ2V0QmluYXJ5Qnl0ZVVuaXQ6ZnVuY3Rpb24oKXtmb3IodmFyIFo9''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aCxZPW5ldyBBcnJheShaKSxVPTA7VTxaO1UrKylZW1VdPWFyZ3VtZW50c1tVXTtyZXR1cm4gZnVuY3Rpb24ocSl7dmFyIEo9SS5iaW5hcnk7cmV0dXJuIEQocS5fdmFsdWUsSi5zdWZmaXhlcyxKLnNjYWxlKS5zdWZmaXh9LmFwcGx5KHZvaWQgMCxZLmNvbmNhdChb''@;'; put 'put ''Ql0pKX0sZ2V0RGVjaW1hbEJ5dGVVbml0OmZ1bmN0aW9uKCl7Zm9yKHZhciBaPWFyZ3VtZW50cy5sZW5ndGgsWT1uZXcgQXJyYXkoWiksVT0wO1U8WjtVKyspWVtVXT1hcmd1bWVudHNbVV07cmV0dXJuIGZ1bmN0aW9uKHEpe3ZhciBKPUkuZGVjaW1hbDtyZXR1cm4gRChxLl92YWx1ZSxKLnN1''@;'; put 'put ''ZmZpeGVzLEouc2NhbGUpLnN1ZmZpeH0uYXBwbHkodm9pZCAwLFkuY29uY2F0KFtCXSkpfSxmb3JtYXRPckRlZmF1bHQ6Tn19fSx7Ii4vZ2xvYmFsU3RhdGUiOjQsIi4vcGFyc2luZyI6OCwiLi92YWxpZGF0aW5nIjoxMH1dLDQ6W2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''eD1NZSgiLi9lbi1VUyIpLG09TWUoIi4vdmFsaWRhdGluZyIpLHNlPU1lKCIuL3BhcnNpbmciKSxNPXt9LE89dm9pZCAwLEk9e30saj1udWxsLEc9e307ZnVuY3Rpb24gRChFKXtPPUV9ZnVuY3Rpb24gVCgpe3JldHVybiBJW09dfU0ubGFuZ3VhZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVj''@;'; put 'put ''dC5hc3NpZ24oe30sSSl9LE0uY3VycmVudExhbmd1YWdlPWZ1bmN0aW9uKCl7cmV0dXJuIE99LE0uY3VycmVudEN1cnJlbmN5PWZ1bmN0aW9uKCl7cmV0dXJuIFQoKS5jdXJyZW5jeX0sTS5jdXJyZW50QWJicmV2aWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBUKCkuYWJicmV2aWF0aW9uc30s''@;'; put 'put ''TS5jdXJyZW50RGVsaW1pdGVycz1mdW5jdGlvbigpe3JldHVybiBUKCkuZGVsaW1pdGVyc30sTS5jdXJyZW50T3JkaW5hbD1mdW5jdGlvbigpe3JldHVybiBUKCkub3JkaW5hbH0sTS5jdXJyZW50RGVmYXVsdHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxUKCkuZGVmYXVs''@;'; put 'put ''dHMsRyl9LE0uY3VycmVudE9yZGluYWxEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sTS5jdXJyZW50RGVmYXVsdHMoKSxUKCkub3JkaW5hbEZvcm1hdCl9LE0uY3VycmVudEJ5dGVEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5h''@;'; put 'put ''c3NpZ24oe30sTS5jdXJyZW50RGVmYXVsdHMoKSxUKCkuYnl0ZUZvcm1hdCl9LE0uY3VycmVudFBlcmNlbnRhZ2VEZWZhdWx0Rm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sTS5jdXJyZW50RGVmYXVsdHMoKSxUKCkucGVyY2VudGFnZUZvcm1hdCl9LE0uY3VycmVu''@;'; put 'put ''dEN1cnJlbmN5RGVmYXVsdEZvcm1hdD1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE0uY3VycmVudERlZmF1bHRzKCksVCgpLmN1cnJlbmN5Rm9ybWF0KX0sTS5jdXJyZW50VGltZURlZmF1bHRGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxNLmN1''@;'; put 'put ''cnJlbnREZWZhdWx0cygpLFQoKS50aW1lRm9ybWF0KX0sTS5zZXREZWZhdWx0cz1mdW5jdGlvbihFKXtFPXNlLnBhcnNlRm9ybWF0KEUpLG0udmFsaWRhdGVGb3JtYXQoRSkmJihHPUUpfSxNLmdldFplcm9Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gan0sTS5zZXRaZXJvRm9ybWF0PWZ1bmN0''@;'; put 'put ''aW9uKEUpe3JldHVybiBqPSJzdHJpbmciPT10eXBlb2YgRT9FOm51bGx9LE0uaGFzWmVyb0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBudWxsIT09an0sTS5sYW5ndWFnZURhdGE9ZnVuY3Rpb24oRSl7aWYoRSl7aWYoSVtFXSlyZXR1cm4gSVtFXTt0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24g''@;'; put 'put ''dGFnICInLmNvbmNhdChFLCciJykpfXJldHVybiBUKCl9LE0ucmVnaXN0ZXJMYW5ndWFnZT1mdW5jdGlvbihFKXt2YXIgej0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKCFtLnZhbGlkYXRlTGFuZ3VhZ2UoRSkpdGhyb3cgbmV3IEVy''@;'; put 'put ''cm9yKCJJbnZhbGlkIGxhbmd1YWdlIGRhdGEiKTtJW0UubGFuZ3VhZ2VUYWddPUUseiYmRChFLmxhbmd1YWdlVGFnKX0sTS5zZXRMYW5ndWFnZT1mdW5jdGlvbihFKXt2YXIgej0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06eC5sYW5ndWFn''@;'; put 'put ''ZVRhZztpZighSVtFXSl7dmFyIE49RS5zcGxpdCgiLSIpWzBdLEI9T2JqZWN0LmtleXMoSSkuZmluZChmdW5jdGlvbihaKXtyZXR1cm4gWi5zcGxpdCgiLSIpWzBdPT09Tn0pO3JldHVybiBJW0JdP3ZvaWQgRChCKTp2b2lkIEQoeil9RChFKX0sTS5yZWdpc3Rlckxhbmd1YWdlKHgpLE89eC5s''@;'; put 'put ''YW5ndWFnZVRhZyxSLmV4cG9ydHM9TX0seyIuL2VuLVVTIjoyLCIuL3BhcnNpbmciOjgsIi4vdmFsaWRhdGluZyI6MTB9XSw1OltmdW5jdGlvbihNZSxSLG9lKXsidXNlIHN0cmljdCI7Ui5leHBvcnRzPWZ1bmN0aW9uKHgpe3JldHVybntsb2FkTGFuZ3VhZ2VzSW5Ob2RlOmZ1bmN0aW9uKG0p''@;'; put 'put ''e3JldHVybiBzZT14LHZvaWQgbS5mb3JFYWNoKGZ1bmN0aW9uKE0pe3ZhciBPPXZvaWQgMDt0cnl7Tz1NZSgiLi4vbGFuZ3VhZ2VzLyIuY29uY2F0KE0pKX1jYXRjaHtjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gbG9hZCAiJy5jb25jYXQoTSwnIi4gTm8gbWF0Y2hpbmcgbGFuZ3VhZ2UgZmls''@;'; put 'put ''ZSBmb3VuZC4nKSl9TyYmc2UucmVnaXN0ZXJMYW5ndWFnZShPKX0pO3ZhciBzZX19fX0se31dLDY6W2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0Ijt2YXIgeD1NZSgiYmlnbnVtYmVyLmpzIik7ZnVuY3Rpb24gbShzZSxNLE8pe3ZhciBJPW5ldyB4KHNlLl92YWx1ZSksaj1NO3JldHVy''@;'; put 'put ''biBPLmlzTnVtYnJvKE0pJiYoaj1NLl92YWx1ZSksaj1uZXcgeChqKSxzZS5fdmFsdWU9SS5taW51cyhqKS50b051bWJlcigpLHNlfVIuZXhwb3J0cz1mdW5jdGlvbihzZSl7cmV0dXJue2FkZDpmdW5jdGlvbihNLE8pe3JldHVybiBqPU8sRz1zZSxEPW5ldyB4KChJPU0pLl92YWx1ZSksVD1q''@;'; put 'put ''LEcuaXNOdW1icm8oaikmJihUPWouX3ZhbHVlKSxUPW5ldyB4KFQpLEkuX3ZhbHVlPUQucGx1cyhUKS50b051bWJlcigpLEk7dmFyIEksaixHLEQsVH0sc3VidHJhY3Q6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gbShNLE8sc2UpfSxtdWx0aXBseTpmdW5jdGlvbihNLE8pe3JldHVybiBqPU8sRz1z''@;'; put 'put ''ZSxEPW5ldyB4KChJPU0pLl92YWx1ZSksVD1qLEcuaXNOdW1icm8oaikmJihUPWouX3ZhbHVlKSxUPW5ldyB4KFQpLEkuX3ZhbHVlPUQudGltZXMoVCkudG9OdW1iZXIoKSxJO3ZhciBJLGosRyxELFR9LGRpdmlkZTpmdW5jdGlvbihNLE8pe3JldHVybiBqPU8sRz1zZSxEPW5ldyB4KChJPU0p''@;'; put 'put ''Ll92YWx1ZSksVD1qLEcuaXNOdW1icm8oaikmJihUPWouX3ZhbHVlKSxUPW5ldyB4KFQpLEkuX3ZhbHVlPUQuZGl2aWRlZEJ5KFQpLnRvTnVtYmVyKCksSTt2YXIgSSxqLEcsRCxUfSxzZXQ6ZnVuY3Rpb24oTSxPKXtyZXR1cm4gST1NLEc9aj1PLHNlLmlzTnVtYnJvKGopJiYoRz1qLl92YWx1''@;'; put 'put ''ZSksSS5fdmFsdWU9RyxJO3ZhciBJLGosR30sZGlmZmVyZW5jZTpmdW5jdGlvbihNLE8pe3JldHVybiBJPU8sbShHPShqPXNlKShNLl92YWx1ZSksSSxqKSxNYXRoLmFicyhHLl92YWx1ZSk7dmFyIEksaixHfX19fSx7ImJpZ251bWJlci5qcyI6MX1dLDc6W2Z1bmN0aW9uKE1lLFIsb2UpeyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KHosTil7Zm9yKHZhciBCPTA7QjxOLmxlbmd0aDtCKyspe3ZhciBaPU5bQl07Wi5lbnVtZXJhYmxlPVouZW51bWVyYWJsZXx8ITEsWi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIFomJihaLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHko''@;'; put 'put ''eixaLmtleSxaKX19dmFyIG09TWUoIi4vZ2xvYmFsU3RhdGUiKSxzZT1NZSgiLi92YWxpZGF0aW5nIiksTT1NZSgiLi9sb2FkaW5nIikoRSksTz1NZSgiLi91bmZvcm1hdHRpbmciKSxJPU1lKCIuL2Zvcm1hdHRpbmciKShFKSxqPU1lKCIuL21hbmlwdWxhdGluZyIpKEUpLEc9TWUoIi4vcGFy''@;'; put 'put ''c2luZyIpLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB6KFkpeyhmdW5jdGlvbihVLHEpe2lmKCEoVSBpbnN0YW5jZW9mIHEpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyx6KSx0aGlzLl92YWx1ZT1ZfXZhciBOLEI7cmV0dXJu''@;'; put 'put ''IE49eiwoQj1be2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5fdmFsdWUpfX0se2tleToiZm9ybWF0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBJLmZvcm1hdCh0aGlzLDA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50''@;'; put 'put ''c1swXTp7fSl9fSx7a2V5OiJmb3JtYXRDdXJyZW5jeSIsdmFsdWU6ZnVuY3Rpb24oWSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBZJiYoWT1HLnBhcnNlRm9ybWF0KFkpKSwoWT1JLmZvcm1hdE9yRGVmYXVsdChZLG0uY3VycmVudEN1cnJlbmN5RGVmYXVsdEZvcm1hdCgpKSkub3V0cHV0PSJj''@;'; put 'put ''dXJyZW5jeSIsSS5mb3JtYXQodGhpcyxZKX19LHtrZXk6ImZvcm1hdFRpbWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIFk9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3JldHVybiBZLm91dHB1dD0idGltZSIsSS5mb3JtYXQodGhpcyxZ''@;'; put 'put ''KX19LHtrZXk6ImJpbmFyeUJ5dGVVbml0cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXRCaW5hcnlCeXRlVW5pdCh0aGlzKX19LHtrZXk6ImRlY2ltYWxCeXRlVW5pdHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIEkuZ2V0RGVjaW1hbEJ5dGVVbml0KHRoaXMpfX0se2tleToiYnl0''@;'; put 'put ''ZVVuaXRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBJLmdldEJ5dGVVbml0KHRoaXMpfX0se2tleToiZGlmZmVyZW5jZSIsdmFsdWU6ZnVuY3Rpb24oWSl7cmV0dXJuIGouZGlmZmVyZW5jZSh0aGlzLFkpfX0se2tleToiYWRkIix2YWx1ZTpmdW5jdGlvbihZKXtyZXR1cm4gai5hZGQodGhp''@;'; put 'put ''cyxZKX19LHtrZXk6InN1YnRyYWN0Iix2YWx1ZTpmdW5jdGlvbihZKXtyZXR1cm4gai5zdWJ0cmFjdCh0aGlzLFkpfX0se2tleToibXVsdGlwbHkiLHZhbHVlOmZ1bmN0aW9uKFkpe3JldHVybiBqLm11bHRpcGx5KHRoaXMsWSl9fSx7a2V5OiJkaXZpZGUiLHZhbHVlOmZ1bmN0aW9uKFkpe3Jl''@;'; put 'put ''dHVybiBqLmRpdmlkZSh0aGlzLFkpfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihZKXtyZXR1cm4gai5zZXQodGhpcyxUKFkpKX19LHtrZXk6InZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6InZhbHVlT2YiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0''@;'; put 'put ''dXJuIHRoaXMuX3ZhbHVlfX1dKSYmeChOLnByb3RvdHlwZSxCKSx6fSgpO2Z1bmN0aW9uIFQoeil7dmFyIE49ejtyZXR1cm4gRS5pc051bWJybyh6KT9OPXouX3ZhbHVlOiJzdHJpbmciPT10eXBlb2Ygej9OPUUudW5mb3JtYXQoeik6aXNOYU4oeikmJihOPU5hTiksTn1mdW5jdGlvbiBFKHop''@;'; put 'put ''e3JldHVybiBuZXcgRChUKHopKX1FLnZlcnNpb249IjIuMS4yIixFLmlzTnVtYnJvPWZ1bmN0aW9uKHope3JldHVybiB6IGluc3RhbmNlb2YgRH0sRS5sYW5ndWFnZT1tLmN1cnJlbnRMYW5ndWFnZSxFLnJlZ2lzdGVyTGFuZ3VhZ2U9bS5yZWdpc3Rlckxhbmd1YWdlLEUuc2V0TGFuZ3VhZ2U9''@;'; put 'put ''bS5zZXRMYW5ndWFnZSxFLmxhbmd1YWdlcz1tLmxhbmd1YWdlcyxFLmxhbmd1YWdlRGF0YT1tLmxhbmd1YWdlRGF0YSxFLnplcm9Gb3JtYXQ9bS5zZXRaZXJvRm9ybWF0LEUuZGVmYXVsdEZvcm1hdD1tLmN1cnJlbnREZWZhdWx0cyxFLnNldERlZmF1bHRzPW0uc2V0RGVmYXVsdHMsRS5kZWZh''@;'; put 'put ''dWx0Q3VycmVuY3lGb3JtYXQ9bS5jdXJyZW50Q3VycmVuY3lEZWZhdWx0Rm9ybWF0LEUudmFsaWRhdGU9c2UudmFsaWRhdGUsRS5sb2FkTGFuZ3VhZ2VzSW5Ob2RlPU0ubG9hZExhbmd1YWdlc0luTm9kZSxFLnVuZm9ybWF0PU8udW5mb3JtYXQsUi5leHBvcnRzPUV9LHsiLi9mb3JtYXR0aW5n''@;'; put 'put ''IjozLCIuL2dsb2JhbFN0YXRlIjo0LCIuL2xvYWRpbmciOjUsIi4vbWFuaXB1bGF0aW5nIjo2LCIuL3BhcnNpbmciOjgsIi4vdW5mb3JtYXR0aW5nIjo5LCIuL3ZhbGlkYXRpbmciOjEwfV0sODpbZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO1IuZXhwb3J0cz17cGFyc2VGb3JtYXQ6''@;'; put 'put ''ZnVuY3Rpb24oeCl7dmFyIG0sc2UsTSxPLEksaixHLEQsVCxFLHosTixCLFosWSxVLHEsSixlZSxyZSxpZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuInN0cmluZyIhPXR5cGVvZiB4P3g6KHNlPWllLEk9aWUsZnVuY3Rp''@;'; put 'put ''b24odWUsbGUpe2lmKC0xPT09dWUuaW5kZXhPZigiJCIpKXtpZigtMT09PXVlLmluZGV4T2YoIiUiKSlyZXR1cm4tMSE9PXVlLmluZGV4T2YoImJkIik/KGxlLm91dHB1dD0iYnl0ZSIsbGUuYmFzZT0iZ2VuZXJhbCIpOi0xIT09dWUuaW5kZXhPZigiYiIpPyhsZS5vdXRwdXQ9ImJ5dGUiLGxl''@;'; put 'put ''LmJhc2U9ImJpbmFyeSIpOi0xIT09dWUuaW5kZXhPZigiZCIpPyhsZS5vdXRwdXQ9ImJ5dGUiLGxlLmJhc2U9ImRlY2ltYWwiKTotMT09PXVlLmluZGV4T2YoIjoiKT8tMSE9PXVlLmluZGV4T2YoIm8iKSYmKGxlLm91dHB1dD0ib3JkaW5hbCIpOmxlLm91dHB1dD0idGltZSI7bGUub3V0cHV0''@;'; put 'put ''PSJwZXJjZW50In1lbHNlIGxlLm91dHB1dD0iY3VycmVuY3kifSh4PShqPShPPXg9KE09KG09eCkubWF0Y2goL157KFtefV0qKX0vKSk/KHNlLnByZWZpeD1NWzFdLG0uc2xpY2UoTVswXS5sZW5ndGgpKTptKS5tYXRjaCgveyhbXn1dKil9JC8pKT8oSS5wb3N0Zml4PWpbMV0sTy5zbGljZSgw''@;'; put 'put ''LC1qWzBdLmxlbmd0aCkpOk8saWUpLEc9aWUsKEQ9eC5tYXRjaCgvWzEtOV0rWzAtOV0qLykpJiYoRy50b3RhbExlbmd0aD0rRFswXSksVD1pZSwoRT14LnNwbGl0KCIuIilbMF0ubWF0Y2goLzArLykpJiYoVC5jaGFyYWN0ZXJpc3RpYz1FWzBdLmxlbmd0aCksZnVuY3Rpb24odWUsbGUpe2lm''@;'; put 'put ''KC0xIT09dWUuaW5kZXhPZigiLiIpKXt2YXIgYWU9dWUuc3BsaXQoIi4iKVswXTtsZS5vcHRpb25hbENoYXJhY3RlcmlzdGljPS0xPT09YWUuaW5kZXhPZigiMCIpfX0oeCxpZSksej1pZSwtMSE9PXguaW5kZXhPZigiYSIpJiYoei5hdmVyYWdlPSEwKSxCPWllLC0xIT09KE49eCkuaW5kZXhP''@;'; put 'put ''ZigiSyIpP0IuZm9yY2VBdmVyYWdlPSJ0aG91c2FuZCI6LTEhPT1OLmluZGV4T2YoIk0iKT9CLmZvcmNlQXZlcmFnZT0ibWlsbGlvbiI6LTEhPT1OLmluZGV4T2YoIkIiKT9CLmZvcmNlQXZlcmFnZT0iYmlsbGlvbiI6LTEhPT1OLmluZGV4T2YoIlQiKSYmKEIuZm9yY2VBdmVyYWdlPSJ0cmls''@;'; put 'put ''bGlvbiIpLGZ1bmN0aW9uKHVlLGxlKXt2YXIgYWU9dWUuc3BsaXQoIi4iKVsxXTtpZihhZSl7dmFyIFc9YWUubWF0Y2goLzArLyk7VyYmKGxlLm1hbnRpc3NhPVdbMF0ubGVuZ3RoKX19KHgsaWUpLFk9aWUsKFo9eCkubWF0Y2goL1xbXC5dLyk/WS5vcHRpb25hbE1hbnRpc3NhPSEwOloubWF0''@;'; put 'put ''Y2goL1wuLykmJihZLm9wdGlvbmFsTWFudGlzc2E9ITEpLFU9aWUsLTEhPT14LmluZGV4T2YoIiwiKSYmKFUudGhvdXNhbmRTZXBhcmF0ZWQ9ITApLHE9aWUsLTEhPT14LmluZGV4T2YoIiAiKSYmKHEuc3BhY2VTZXBhcmF0ZWQ9ITApLGVlPWllLChKPXgpLm1hdGNoKC9eXCs/XChbXildKlwp''@;'; put 'put ''JC8pJiYoZWUubmVnYXRpdmU9InBhcmVudGhlc2lzIiksSi5tYXRjaCgvXlwrPy0vKSYmKGVlLm5lZ2F0aXZlPSJzaWduIikscmU9aWUseC5tYXRjaCgvXlwrLykmJihyZS5mb3JjZVNpZ249ITApLGllKX19fSx7fV0sOTpbZnVuY3Rpb24oTWUsUixvZSl7InVzZSBzdHJpY3QiO3ZhciB4PVt7''@;'; put 'put ''a2V5OiJaaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDcpfSx7a2V5OiJaQiIsZmFjdG9yOk1hdGgucG93KDFlMyw3KX0se2tleToiWWlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw4KX0se2tleToiWUIiLGZhY3RvcjpNYXRoLnBvdygxZTMsOCl9LHtrZXk6IlRpQiIsZmFjdG9yOk1hdGgucG93''@;'; put 'put ''KDEwMjQsNCl9LHtrZXk6IlRCIixmYWN0b3I6TWF0aC5wb3coMWUzLDQpfSx7a2V5OiJQaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDUpfSx7a2V5OiJQQiIsZmFjdG9yOk1hdGgucG93KDFlMyw1KX0se2tleToiTWlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCwyKX0se2tleToiTUIiLGZhY3Rv''@;'; put 'put ''cjpNYXRoLnBvdygxZTMsMil9LHtrZXk6IktpQiIsZmFjdG9yOk1hdGgucG93KDEwMjQsMSl9LHtrZXk6IktCIixmYWN0b3I6TWF0aC5wb3coMWUzLDEpfSx7a2V5OiJHaUIiLGZhY3RvcjpNYXRoLnBvdygxMDI0LDMpfSx7a2V5OiJHQiIsZmFjdG9yOk1hdGgucG93KDFlMywzKX0se2tleToi''@;'; put 'put ''RWlCIixmYWN0b3I6TWF0aC5wb3coMTAyNCw2KX0se2tleToiRUIiLGZhY3RvcjpNYXRoLnBvdygxZTMsNil9LHtrZXk6IkIiLGZhY3RvcjoxfV07ZnVuY3Rpb24gbShNKXtyZXR1cm4gTS5yZXBsYWNlKC9bLS9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9Ui5leHBvcnRzPXt1bmZvcm1h''@;'; put 'put ''dDpmdW5jdGlvbihNLE8pe3ZhciBJLEQ9TWUoIi4vZ2xvYmFsU3RhdGUiKSxUPUQuY3VycmVudERlbGltaXRlcnMoKSxFPUQuY3VycmVudEN1cnJlbmN5KCkuc3ltYm9sLHo9RC5jdXJyZW50T3JkaW5hbCgpLE49RC5nZXRaZXJvRm9ybWF0KCksQj1ELmN1cnJlbnRBYmJyZXZpYXRpb25zKCks''@;'; put 'put ''Wj12b2lkIDA7aWYoInN0cmluZyI9PXR5cGVvZiBNKVo9ZnVuY3Rpb24oWSxVKXtpZighWS5pbmRleE9mKCI6Iil8fCI6Ij09PVUudGhvdXNhbmRzKXJldHVybiExO3ZhciBxPVkuc3BsaXQoIjoiKTtpZigzIT09cS5sZW5ndGgpcmV0dXJuITE7dmFyIGVlPStxWzFdLHJlPStxWzJdO3JldHVy''@;'; put 'put ''biFpc05hTigrcVswXSkmJiFpc05hTihlZSkmJiFpc05hTihyZSl9KE0sVCk/KyhJPU0uc3BsaXQoIjoiKSlbMl0rNjAqK0lbMV0rMzYwMCorSVswXTpmdW5jdGlvbiBzZShNLE8pe3ZhciBJPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToi''@;'; put 'put ''IixqPTM8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbM106dm9pZCAwLEc9NDxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s0XTp2b2lkIDAsRD01PGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzVdOnZvaWQgMCxUPTY8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNl06dm9pZCAw''@;'; put 'put ''O2lmKCIiIT09TSlyZXR1cm4gTT09PUc/MDpmdW5jdGlvbiBFKHosTil7dmFyIEI9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiIiLFo9Mzxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1szXTp2b2lkIDAsWT00PGFyZ3VtZW50cy5sZW5n''@;'; put 'put ''dGg/YXJndW1lbnRzWzRdOnZvaWQgMCxVPTU8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbNV06dm9pZCAwLHE9Njxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1s2XTp2b2lkIDA7aWYoIWlzTmFOKCt6KSlyZXR1cm4rejt2YXIgSj0iIixlZT16LnJlcGxhY2UoLyheW14oXSopXCgoLiop''@;'; put 'put ''XCkoW14pXSokKS8sIiQxJDIkMyIpO2lmKGVlIT09eilyZXR1cm4tMSpFKGVlLE4sQixaLFksVSxxKTtmb3IodmFyIHJlPTA7cmU8eC5sZW5ndGg7cmUrKyl7dmFyIGllPXhbcmVdO2lmKChKPXoucmVwbGFjZShpZS5rZXksIiIpKSE9PXopcmV0dXJuIEUoSixOLEIsWixZLFUscSkqaWUuZmFj''@;'; put 'put ''dG9yfWlmKChKPXoucmVwbGFjZSgiJSIsIiIpKSE9PXopcmV0dXJuIEUoSixOLEIsWixZLFUscSkvMTAwO3ZhciB1ZT1wYXJzZUZsb2F0KHopO2lmKCFpc05hTih1ZSkpe3ZhciBsZT1aKHVlKTtpZihsZSYmIi4iIT09bGUmJihKPXoucmVwbGFjZShuZXcgUmVnRXhwKCIiLmNvbmNhdChtKGxl''@;'; put 'put ''KSwiJCIpKSwiIikpIT09eilyZXR1cm4gRShKLE4sQixaLFksVSxxKTt2YXIgYWU9e307T2JqZWN0LmtleXMoVSkuZm9yRWFjaChmdW5jdGlvbihDKXthZVtVW0NdXT1DfSk7Zm9yKHZhciBXPU9iamVjdC5rZXlzKGFlKS5zb3J0KCkucmV2ZXJzZSgpLGI9Vy5sZW5ndGgsQT0wO0E8YjtBKysp''@;'; put 'put ''e3ZhciBGPVdbQV0sSD1hZVtGXTtpZigoSj16LnJlcGxhY2UoRiwiIikpIT09eil7dmFyIGc9dm9pZCAwO3N3aXRjaChIKXtjYXNlInRob3VzYW5kIjpnPU1hdGgucG93KDEwLDMpO2JyZWFrO2Nhc2UibWlsbGlvbiI6Zz1NYXRoLnBvdygxMCw2KTticmVhaztjYXNlImJpbGxpb24iOmc9TWF0''@;'; put 'put ''aC5wb3coMTAsOSk7YnJlYWs7Y2FzZSJ0cmlsbGlvbiI6Zz1NYXRoLnBvdygxMCwxMil9cmV0dXJuIEUoSixOLEIsWixZLFUscSkqZ319fX0oZnVuY3Rpb24oRSx6KXt2YXIgQj1FLnJlcGxhY2UoMjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJd''@;'; put 'put ''OiIiLCIiKTtyZXR1cm4oQj1CLnJlcGxhY2UobmV3IFJlZ0V4cCgiKFswLTldKSIuY29uY2F0KG0oei50aG91c2FuZHMpLCIoWzAtOV0pIiksImciKSwiJDEkMiIpKS5yZXBsYWNlKHouZGVjaW1hbCwiLiIpfShNLE8sSSksTyxJLGosRyxELFQpfShNLFQsRSx6LE4sQixPKTtlbHNle2lmKCJu''@;'; put 'put ''dW1iZXIiIT10eXBlb2YgTSlyZXR1cm47Wj1NfWlmKHZvaWQgMCE9PVopcmV0dXJuIFp9fX0seyIuL2dsb2JhbFN0YXRlIjo0fV0sMTA6W2Z1bmN0aW9uKE1lLFIsb2UpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKFQpe3JldHVybihtPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1i''@;'; put 'put ''b2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKEUpe3JldHVybiB0eXBlb2YgRX06ZnVuY3Rpb24oRSl7cmV0dXJuIEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJkUuY29uc3RydWN0b3I9PT1TeW1ib2wmJkUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVv''@;'; put 'put ''ZiBFfSkoVCl9dmFyIHNlPU1lKCIuL3VuZm9ybWF0dGluZyIpLE09L15bYS16XXsyLDN9KC1bYS16QS1aXXs0fSk/KC0oW0EtWl17Mn18WzAtOV17M30pKT8kLyxPPXtvdXRwdXQ6e3R5cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJjdXJyZW5jeSIsInBlcmNlbnQiLCJieXRlIiwidGltZSIs''@;'; put 'put ''Im9yZGluYWwiLCJudW1iZXIiXX0sYmFzZTp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbImRlY2ltYWwiLCJiaW5hcnkiLCJnZW5lcmFsIl0scmVzdHJpY3Rpb246ZnVuY3Rpb24oVCxFKXtyZXR1cm4iYnl0ZSI9PT1FLm91dHB1dH0sbWVzc2FnZToiYGJhc2VgIG11c3QgYmUgcHJvdmlk''@;'; put 'put ''ZWQgb25seSB3aGVuIHRoZSBvdXRwdXQgaXMgYGJ5dGVgIixtYW5kYXRvcnk6ZnVuY3Rpb24oVCl7cmV0dXJuImJ5dGUiPT09VC5vdXRwdXR9fSxjaGFyYWN0ZXJpc3RpYzp7dHlwZToibnVtYmVyIixyZXN0cmljdGlvbjpmdW5jdGlvbihUKXtyZXR1cm4gMDw9VH0sbWVzc2FnZToidmFsdWUg''@;'; put 'put ''bXVzdCBiZSBwb3NpdGl2ZSJ9LHByZWZpeDoic3RyaW5nIixwb3N0Zml4OiJzdHJpbmciLGZvcmNlQXZlcmFnZTp7dHlwZToic3RyaW5nIix2YWxpZFZhbHVlczpbInRyaWxsaW9uIiwiYmlsbGlvbiIsIm1pbGxpb24iLCJ0aG91c2FuZCJdfSxhdmVyYWdlOiJib29sZWFuIixjdXJyZW5jeVBv''@;'; put 'put ''c2l0aW9uOnt0eXBlOiJzdHJpbmciLHZhbGlkVmFsdWVzOlsicHJlZml4IiwiaW5maXgiLCJwb3N0Zml4Il19LGN1cnJlbmN5U3ltYm9sOiJzdHJpbmciLHRvdGFsTGVuZ3RoOnt0eXBlOiJudW1iZXIiLHJlc3RyaWN0aW9uczpbe3Jlc3RyaWN0aW9uOmZ1bmN0aW9uKFQpe3JldHVybiAwPD1U''@;'; put 'put ''fSxtZXNzYWdlOiJ2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlIn0se3Jlc3RyaWN0aW9uOmZ1bmN0aW9uKFQsRSl7cmV0dXJuIUUuZXhwb25lbnRpYWx9LG1lc3NhZ2U6ImB0b3RhbExlbmd0aGAgaXMgaW5jb21wYXRpYmxlIHdpdGggYGV4cG9uZW50aWFsYCJ9XX0sbWFudGlzc2E6e3R5cGU6Im51''@;'; put 'put ''bWJlciIscmVzdHJpY3Rpb246ZnVuY3Rpb24oVCl7cmV0dXJuIDA8PVR9LG1lc3NhZ2U6InZhbHVlIG11c3QgYmUgcG9zaXRpdmUifSxvcHRpb25hbE1hbnRpc3NhOiJib29sZWFuIix0cmltTWFudGlzc2E6ImJvb2xlYW4iLG9wdGlvbmFsQ2hhcmFjdGVyaXN0aWM6ImJvb2xlYW4iLHRob3Vz''@;'; put 'put ''YW5kU2VwYXJhdGVkOiJib29sZWFuIixzcGFjZVNlcGFyYXRlZDoiYm9vbGVhbiIsYWJicmV2aWF0aW9uczp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7dGhvdXNhbmQ6InN0cmluZyIsbWlsbGlvbjoic3RyaW5nIixiaWxsaW9uOiJzdHJpbmciLHRyaWxsaW9uOiJzdHJpbmcifX0sbmVnYXRp''@;'; put 'put ''dmU6e3R5cGU6InN0cmluZyIsdmFsaWRWYWx1ZXM6WyJzaWduIiwicGFyZW50aGVzaXMiXX0sZm9yY2VTaWduOiJib29sZWFuIixleHBvbmVudGlhbDp7dHlwZToiYm9vbGVhbiJ9LHByZWZpeFN5bWJvbDp7dHlwZToiYm9vbGVhbiIscmVzdHJpY3Rpb246ZnVuY3Rpb24oVCxFKXtyZXR1cm4i''@;'; put 'put ''cGVyY2VudCI9PT1FLm91dHB1dH0sbWVzc2FnZToiYHByZWZpeFN5bWJvbGAgY2FuIGJlIHByb3ZpZGVkIG9ubHkgd2hlbiB0aGUgb3V0cHV0IGlzIGBwZXJjZW50YCJ9fSxJPXtsYW5ndWFnZVRhZzp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITAscmVzdHJpY3Rpb246ZnVuY3Rpb24oVCl7''@;'; put 'put ''cmV0dXJuIFQubWF0Y2goTSl9LG1lc3NhZ2U6InRoZSBsYW5ndWFnZSB0YWcgbXVzdCBmb2xsb3cgdGhlIEJDUCA0NyBzcGVjaWZpY2F0aW9uIChzZWUgaHR0cHM6Ly90b29scy5pZWZ0Lm9yZy9odG1sL2JjcDQ3KSJ9LGRlbGltaXRlcnM6e3R5cGU6Im9iamVjdCIsY2hpbGRyZW46e3Rob3Vz''@;'; put 'put ''YW5kczoic3RyaW5nIixkZWNpbWFsOiJzdHJpbmciLHRob3VzYW5kc1NpemU6Im51bWJlciJ9LG1hbmRhdG9yeTohMH0sYWJicmV2aWF0aW9uczp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7dGhvdXNhbmQ6e3R5cGU6InN0cmluZyIsbWFuZGF0b3J5OiEwfSxtaWxsaW9uOnt0eXBlOiJzdHJp''@;'; put 'put ''bmciLG1hbmRhdG9yeTohMH0sYmlsbGlvbjp7dHlwZToic3RyaW5nIixtYW5kYXRvcnk6ITB9LHRyaWxsaW9uOnt0eXBlOiJzdHJpbmciLG1hbmRhdG9yeTohMH19LG1hbmRhdG9yeTohMH0sc3BhY2VTZXBhcmF0ZWQ6ImJvb2xlYW4iLG9yZGluYWw6e3R5cGU6ImZ1bmN0aW9uIixtYW5kYXRv''@;'; put 'put ''cnk6ITB9LGN1cnJlbmN5Ont0eXBlOiJvYmplY3QiLGNoaWxkcmVuOntzeW1ib2w6InN0cmluZyIscG9zaXRpb246InN0cmluZyIsY29kZToic3RyaW5nIn0sbWFuZGF0b3J5OiEwfSxkZWZhdWx0czoiZm9ybWF0IixvcmRpbmFsRm9ybWF0OiJmb3JtYXQiLGJ5dGVGb3JtYXQ6ImZvcm1hdCIs''@;'; put 'put ''cGVyY2VudGFnZUZvcm1hdDoiZm9ybWF0IixjdXJyZW5jeUZvcm1hdDoiZm9ybWF0Iix0aW1lRGVmYXVsdHM6ImZvcm1hdCIsZm9ybWF0czp7dHlwZToib2JqZWN0IixjaGlsZHJlbjp7Zm91ckRpZ2l0czp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9LGZ1bGxXaXRoVHdvRGVjaW1hbHM6''@;'; put 'put ''e3R5cGU6ImZvcm1hdCIsbWFuZGF0b3J5OiEwfSxmdWxsV2l0aFR3b0RlY2ltYWxzTm9DdXJyZW5jeTp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9LGZ1bGxXaXRoTm9EZWNpbWFsczp7dHlwZToiZm9ybWF0IixtYW5kYXRvcnk6ITB9fX19O2Z1bmN0aW9uIGooVCl7cmV0dXJuISFzZS51''@;'; put 'put ''bmZvcm1hdChUKX1mdW5jdGlvbiBHKFQsRSx6KXt2YXIgTj0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLEI9T2JqZWN0LmtleXMoVCkubWFwKGZ1bmN0aW9uKFope2lmKCFFW1pdKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6''@;'; put 'put ''LCIgSW52YWxpZCBrZXk6ICIpLmNvbmNhdChaKSksITE7dmFyIFk9VFtaXSxVPUVbWl07aWYoInN0cmluZyI9PXR5cGVvZiBVJiYoVT17dHlwZTpVfSksImZvcm1hdCI9PT1VLnR5cGUpe2lmKCFHKFksTywiW1ZhbGlkYXRlICIuY29uY2F0KFosIl0iKSwhMCkpcmV0dXJuITF9ZWxzZSBpZiht''@;'; put 'put ''KFkpIT09VS50eXBlKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCIgIikuY29uY2F0KFosJyB0eXBlIG1pc21hdGNoZWQ6ICInKS5jb25jYXQoVS50eXBlLCciIGV4cGVjdGVkLCAiJykuY29uY2F0KG0oWSksJyIgcHJvdmlkZWQnKSksITE7aWYoVS5yZXN0cmljdGlvbnMmJlUu''@;'; put 'put ''cmVzdHJpY3Rpb25zLmxlbmd0aClmb3IodmFyIHE9VS5yZXN0cmljdGlvbnMubGVuZ3RoLEo9MDtKPHE7SisrKXt2YXIgZWU9VS5yZXN0cmljdGlvbnNbSl0saWU9ZWUubWVzc2FnZTtpZighKDAsZWUucmVzdHJpY3Rpb24pKFksVCkpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIiIuY29uY2F0KHos''@;'; put 'put ''IiAiKS5jb25jYXQoWiwiIGludmFsaWQgdmFsdWU6ICIpLmNvbmNhdChpZSkpLCExfXJldHVybiBVLnJlc3RyaWN0aW9uJiYhVS5yZXN0cmljdGlvbihZLFQpPyhjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCIgIikuY29uY2F0KFosIiBpbnZhbGlkIHZhbHVlOiAiKS5jb25jYXQoVS5tZXNz''@;'; put 'put ''YWdlKSksITEpOlUudmFsaWRWYWx1ZXMmJi0xPT09VS52YWxpZFZhbHVlcy5pbmRleE9mKFkpPyhjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCIgIikuY29uY2F0KFosIiBpbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGFtb25nICIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShVLnZhbGlkVmFsdWVz''@;'; put 'put ''KSwnLCAiJykuY29uY2F0KFksJyIgcHJvdmlkZWQnKSksITEpOiEoVS5jaGlsZHJlbiYmIUcoWSxVLmNoaWxkcmVuLCJbVmFsaWRhdGUgIi5jb25jYXQoWiwiXSIpKSl9KTtyZXR1cm4gTnx8Qi5wdXNoLmFwcGx5KEIsZnVuY3Rpb24geChUKXtyZXR1cm4gZnVuY3Rpb24oRSl7aWYoQXJyYXku''@;'; put 'put ''aXNBcnJheShFKSl7Zm9yKHZhciB6PTAsTj1uZXcgQXJyYXkoRS5sZW5ndGgpO3o8RS5sZW5ndGg7eisrKU5bel09RVt6XTtyZXR1cm4gTn19KFQpfHxmdW5jdGlvbihFKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KEUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90''@;'; put 'put ''b3R5cGUudG9TdHJpbmcuY2FsbChFKSlyZXR1cm4gQXJyYXkuZnJvbShFKX0oVCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX0oT2JqZWN0LmtleXMoRSkubWFwKGZ1bmN0aW9uKFop''@;'; put 'put ''e3ZhciBZPUVbWl07aWYoInN0cmluZyI9PXR5cGVvZiBZJiYoWT17dHlwZTpZfSksWS5tYW5kYXRvcnkpe3ZhciBVPVkubWFuZGF0b3J5O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBVJiYoVT1VKFQpKSxVJiZ2b2lkIDA9PT1UW1pdKXJldHVybiBjb25zb2xlLmVycm9yKCIiLmNvbmNhdCh6LCcg''@;'; put 'put ''TWlzc2luZyBtYW5kYXRvcnkga2V5ICInKS5jb25jYXQoWiwnIicpKSwhMX1yZXR1cm4hMH0pKSksQi5yZWR1Y2UoZnVuY3Rpb24oWixZKXtyZXR1cm4gWiYmWX0sITApfWZ1bmN0aW9uIEQoVCl7cmV0dXJuIEcoVCxPLCJbVmFsaWRhdGUgZm9ybWF0XSIpfVIuZXhwb3J0cz17dmFsaWRhdGU6''@;'; put 'put ''ZnVuY3Rpb24oVCxFKXt2YXIgej1qKFQpLE49RChFKTtyZXR1cm4geiYmTn0sdmFsaWRhdGVGb3JtYXQ6RCx2YWxpZGF0ZUlucHV0OmosdmFsaWRhdGVMYW5ndWFnZTpmdW5jdGlvbihUKXtyZXR1cm4gRyhULEksIltWYWxpZGF0ZSBsYW5ndWFnZV0iKX19fSx7Ii4vdW5mb3JtYXR0aW5nIjo5''@;'; put 'put ''fV19LHt9LFs3XSkoNyl9LDgzMTM4OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig0OTYwOSk7TWUuY2VydGlmaWNhdGU9Uig5NDc3Mik7dmFyIHg9b2UuZGVmaW5lKCJSU0FQcml2YXRlS2V5IixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ2ZXJzaW9uIiku''@;'; put 'put ''aW50KCksdGhpcy5rZXkoIm1vZHVsdXMiKS5pbnQoKSx0aGlzLmtleSgicHVibGljRXhwb25lbnQiKS5pbnQoKSx0aGlzLmtleSgicHJpdmF0ZUV4cG9uZW50IikuaW50KCksdGhpcy5rZXkoInByaW1lMSIpLmludCgpLHRoaXMua2V5KCJwcmltZTIiKS5pbnQoKSx0aGlzLmtleSgiZXhwb25l''@;'; put 'put ''bnQxIikuaW50KCksdGhpcy5rZXkoImV4cG9uZW50MiIpLmludCgpLHRoaXMua2V5KCJjb2VmZmljaWVudCIpLmludCgpKX0pO01lLlJTQVByaXZhdGVLZXk9eDt2YXIgbT1vZS5kZWZpbmUoIlJTQVB1YmxpY0tleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibW9kdWx1''@;'; put 'put ''cyIpLmludCgpLHRoaXMua2V5KCJwdWJsaWNFeHBvbmVudCIpLmludCgpKX0pO01lLlJTQVB1YmxpY0tleT1tO3ZhciBzZT1vZS5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5r''@;'; put 'put ''ZXkoIm5vbmUiKS5udWxsXygpLm9wdGlvbmFsKCksdGhpcy5rZXkoImN1cnZlIikub2JqaWQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJwYXJhbXMiKS5zZXEoKS5vYmoodGhpcy5rZXkoInAiKS5pbnQoKSx0aGlzLmtleSgicSIpLmludCgpLHRoaXMua2V5KCJnIikuaW50KCkpLm9wdGlvbmFs''@;'; put 'put ''KCkpfSksTT1vZS5kZWZpbmUoIlN1YmplY3RQdWJsaWNLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2Uoc2UpLHRoaXMua2V5KCJzdWJqZWN0UHVibGljS2V5IikuYml0c3RyKCkpfSk7TWUuUHVibGljS2V5PU07dmFyIE89b2UuZGVm''@;'; put 'put ''aW5lKCJQcml2YXRlS2V5SW5mbyIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJhbGdvcml0aG0iKS51c2Uoc2UpLHRoaXMua2V5KCJzdWJqZWN0UHJpdmF0ZUtleSIpLm9jdHN0cigpKX0pO01lLlByaXZhdGVLZXk9Tzt2YXIg''@;'; put 'put ''ST1vZS5kZWZpbmUoIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJhbGdvcml0aG0iKS5zZXEoKS5vYmoodGhpcy5rZXkoImlkIikub2JqaWQoKSx0aGlzLmtleSgiZGVjcnlwdCIpLnNlcSgpLm9iaih0aGlzLmtleSgia2RlIiku''@;'; put 'put ''c2VxKCkub2JqKHRoaXMua2V5KCJpZCIpLm9iamlkKCksdGhpcy5rZXkoImtkZXBhcmFtcyIpLnNlcSgpLm9iaih0aGlzLmtleSgic2FsdCIpLm9jdHN0cigpLHRoaXMua2V5KCJpdGVycyIpLmludCgpKSksdGhpcy5rZXkoImNpcGhlciIpLnNlcSgpLm9iaih0aGlzLmtleSgiYWxnbyIpLm9i''@;'; put 'put ''amlkKCksdGhpcy5rZXkoIml2Iikub2N0c3RyKCkpKSksdGhpcy5rZXkoInN1YmplY3RQcml2YXRlS2V5Iikub2N0c3RyKCkpfSk7TWUuRW5jcnlwdGVkUHJpdmF0ZUtleT1JO3ZhciBqPW9lLmRlZmluZSgiRFNBUHJpdmF0ZUtleSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtl''@;'; put 'put ''eSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwIikuaW50KCksdGhpcy5rZXkoInEiKS5pbnQoKSx0aGlzLmtleSgiZyIpLmludCgpLHRoaXMua2V5KCJwdWJfa2V5IikuaW50KCksdGhpcy5rZXkoInByaXZfa2V5IikuaW50KCkpfSk7TWUuRFNBUHJpdmF0ZUtleT1qLE1lLkRTQXBhcmFt''@;'; put 'put ''PW9lLmRlZmluZSgiRFNBcGFyYW0iLGZ1bmN0aW9uKCl7dGhpcy5pbnQoKX0pO3ZhciBHPW9lLmRlZmluZSgiRUNQYXJhbWV0ZXJzIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSksRD1vZS5kZWZpbmUoIkVDUHJpdmF0ZUtleSIsZnVuY3Rpb24o''@;'; put 'put ''KXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgidmVyc2lvbiIpLmludCgpLHRoaXMua2V5KCJwcml2YXRlS2V5Iikub2N0c3RyKCksdGhpcy5rZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShHKSx0aGlzLmtleSgicHVibGljS2V5Iikub3B0aW9uYWwoKS5leHBs''@;'; put 'put ''aWNpdCgxKS5iaXRzdHIoKSl9KTtNZS5FQ1ByaXZhdGVLZXk9RCxNZS5zaWduYXR1cmU9b2UuZGVmaW5lKCJzaWduYXR1cmUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInIiKS5pbnQoKSx0aGlzLmtleSgicyIpLmludCgpKX0pfSw5NDc3MjooUWUsTWUsUik9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIG9lPVIoNDk2MDkpLHg9b2UuZGVmaW5lKCJUaW1lIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHt1dGNUaW1lOnRoaXMudXRjdGltZSgpLGdlbmVyYWxUaW1lOnRoaXMuZ2VudGltZSgpfSl9KSxtPW9lLmRlZmluZSgiQXR0cmlidXRlVHlwZVZhbHVlIixmdW5jdGlvbigp''@;'; put 'put ''e3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJ0eXBlIikub2JqaWQoKSx0aGlzLmtleSgidmFsdWUiKS5hbnkoKSl9KSxzZT1vZS5kZWZpbmUoIkFsZ29yaXRobUlkZW50aWZpZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLm9iamlkKCksdGhpcy5r''@;'; put 'put ''ZXkoInBhcmFtZXRlcnMiKS5vcHRpb25hbCgpLHRoaXMua2V5KCJjdXJ2ZSIpLm9iamlkKCkub3B0aW9uYWwoKSl9KSxNPW9lLmRlZmluZSgiU3ViamVjdFB1YmxpY0tleUluZm8iLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoImFsZ29yaXRobSIpLnVzZShzZSksdGhpcy5r''@;'; put 'put ''ZXkoInN1YmplY3RQdWJsaWNLZXkiKS5iaXRzdHIoKSl9KSxPPW9lLmRlZmluZSgiUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSIsZnVuY3Rpb24oKXt0aGlzLnNldG9mKG0pfSksST1vZS5kZWZpbmUoIlJETlNlcXVlbmNlIixmdW5jdGlvbigpe3RoaXMuc2Vxb2YoTyl9KSxqPW9lLmRlZmlu''@;'; put 'put ''ZSgiTmFtZSIsZnVuY3Rpb24oKXt0aGlzLmNob2ljZSh7cmRuU2VxdWVuY2U6dGhpcy51c2UoSSl9KX0pLEc9b2UuZGVmaW5lKCJWYWxpZGl0eSIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleSgibm90QmVmb3JlIikudXNlKHgpLHRoaXMua2V5KCJub3RBZnRlciIpLnVzZSh4''@;'; put 'put ''KSl9KSxEPW9lLmRlZmluZSgiRXh0ZW5zaW9uIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KCJleHRuSUQiKS5vYmppZCgpLHRoaXMua2V5KCJjcml0aWNhbCIpLmJvb2woKS5kZWYoITEpLHRoaXMua2V5KCJleHRuVmFsdWUiKS5vY3RzdHIoKSl9KSxUPW9lLmRlZmluZSgi''@;'; put 'put ''VEJTQ2VydGlmaWNhdGUiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoInZlcnNpb24iKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLHRoaXMua2V5KCJzZXJpYWxOdW1iZXIiKS5pbnQoKSx0aGlzLmtleSgic2lnbmF0dXJlIikudXNlKHNlKSx0aGlzLmtleSgiaXNz''@;'; put 'put ''dWVyIikudXNlKGopLHRoaXMua2V5KCJ2YWxpZGl0eSIpLnVzZShHKSx0aGlzLmtleSgic3ViamVjdCIpLnVzZShqKSx0aGlzLmtleSgic3ViamVjdFB1YmxpY0tleUluZm8iKS51c2UoTSksdGhpcy5rZXkoImlzc3VlclVuaXF1ZUlEIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwo''@;'; put 'put ''KSx0aGlzLmtleSgic3ViamVjdFVuaXF1ZUlEIikuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleSgiZXh0ZW5zaW9ucyIpLmV4cGxpY2l0KDMpLnNlcW9mKEQpLm9wdGlvbmFsKCkpfSksRT1vZS5kZWZpbmUoIlg1MDlDZXJ0aWZpY2F0ZSIsZnVuY3Rpb24oKXt0aGlz''@;'; put 'put ''LnNlcSgpLm9iaih0aGlzLmtleSgidGJzQ2VydGlmaWNhdGUiKS51c2UoVCksdGhpcy5rZXkoInNpZ25hdHVyZUFsZ29yaXRobSIpLnVzZShzZSksdGhpcy5rZXkoInNpZ25hdHVyZVZhbHVlIikuYml0c3RyKCkpfSk7UWUuZXhwb3J0cz1FfSw4OTQ3MjooUWUsTWUsUik9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIG9lPS9Qcm9jLVR5cGU6IDQsRU5DUllQVEVEW1xuXHJdK0RFSy1JbmZvOiBBRVMtKCg/OjEyOCl8KD86MTkyKXwoPzoyNTYpKS1DQkMsKFswLTlBLUhdKylbXG5ccl0rKFswLTlBLXpcblxyKy89XSspW1xuXHJdKy9tLHg9L14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJ''@;'; put 'put ''Q0FURSktLS0tLS9tLG09L14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLShbMC05QS16XG5ccisvPV0rKS0tLS0tRU5EIFwxLS0tLS0kL20sc2U9UigxODIxMSksTT1SKDQzMzg4KSxPPVIoMjcwNTQpLkJ1ZmZlcjtRZS5leHBvcnRzPWZ1bmN0aW9uKEksail7dmFy''@;'; put 'put ''IFQsRz1JLnRvU3RyaW5nKCksRD1HLm1hdGNoKG9lKTtpZihEKXt2YXIgej0iYWVzIitEWzFdLE49Ty5mcm9tKERbMl0sImhleCIpLEI9Ty5mcm9tKERbM10ucmVwbGFjZSgvW1xyXG5dL2csIiIpLCJiYXNlNjQiKSxaPXNlKGosTi5zbGljZSgwLDgpLHBhcnNlSW50KERbMV0sMTApKS5rZXks''@;'; put 'put ''WT1bXSxVPU0uY3JlYXRlRGVjaXBoZXJpdih6LFosTik7WS5wdXNoKFUudXBkYXRlKEIpKSxZLnB1c2goVS5maW5hbCgpKSxUPU8uY29uY2F0KFkpfWVsc2V7dmFyIEU9Ry5tYXRjaChtKTtUPU8uZnJvbShFWzJdLnJlcGxhY2UoL1tcclxuXS9nLCIiKSwiYmFzZTY0Iil9cmV0dXJue3RhZzpH''@;'; put 'put ''Lm1hdGNoKHgpWzFdLGRhdGE6VH19fSw2NTY2NzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoODMxMzgpLHg9UigxNTU3OSksbT1SKDg5NDcyKSxzZT1SKDQzMzg4KSxNPVIoOTMzOTcpLE89UigyNzA1NCkuQnVmZmVyO2Z1bmN0aW9uIGooRyl7dmFyIEQ7Im9iamVjdCI9PXR5''@;'; put 'put ''cGVvZiBHJiYhTy5pc0J1ZmZlcihHKSYmKEQ9Ry5wYXNzcGhyYXNlLEc9Ry5rZXkpLCJzdHJpbmciPT10eXBlb2YgRyYmKEc9Ty5mcm9tKEcpKTt2YXIgTixCLFQ9bShHLEQpLEU9VC50YWcsej1ULmRhdGE7c3dpdGNoKEUpe2Nhc2UiQ0VSVElGSUNBVEUiOkI9b2UuY2VydGlmaWNhdGUuZGVj''@;'; put 'put ''b2RlKHosImRlciIpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvO2Nhc2UiUFVCTElDIEtFWSI6c3dpdGNoKEJ8fChCPW9lLlB1YmxpY0tleS5kZWNvZGUoeiwiZGVyIikpLE49Qi5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oIi4iKSl7Y2FzZSIxLjIuODQwLjExMzU0OS4x''@;'; put 'put ''LjEuMSI6cmV0dXJuIG9lLlJTQVB1YmxpY0tleS5kZWNvZGUoQi5zdWJqZWN0UHVibGljS2V5LmRhdGEsImRlciIpO2Nhc2UiMS4yLjg0MC4xMDA0NS4yLjEiOnJldHVybiBCLnN1YmplY3RQcml2YXRlS2V5PUIuc3ViamVjdFB1YmxpY0tleSx7dHlwZToiZWMiLGRhdGE6Qn07Y2FzZSIxLjIu''@;'; put 'put ''ODQwLjEwMDQwLjQuMSI6cmV0dXJuIEIuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PW9lLkRTQXBhcmFtLmRlY29kZShCLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwiZGVyIikse3R5cGU6ImRzYSIsZGF0YTpCLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bmtu''@;'; put 'put ''b3duIGtleSBpZCAiK04pfWNhc2UiRU5DUllQVEVEIFBSSVZBVEUgS0VZIjp6PWZ1bmN0aW9uIEkoRyxEKXt2YXIgVD1HLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdCxFPXBhcnNlSW50KEcuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmlu''@;'; put 'put ''ZygpLDEwKSx6PXhbRy5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCIuIildLE49Ry5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXYsQj1HLnN1YmplY3RQcml2YXRlS2V5LFo9cGFyc2VJbnQoei5zcGxpdCgiLSIpWzFdLDEwKS84LFk9TS5wYmtkZjJTeW5jKEQsVCxFLFos''@;'; put 'put ''InNoYTEiKSxVPXNlLmNyZWF0ZURlY2lwaGVyaXYoeixZLE4pLHE9W107cmV0dXJuIHEucHVzaChVLnVwZGF0ZShCKSkscS5wdXNoKFUuZmluYWwoKSksTy5jb25jYXQocSl9KHo9b2UuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoeiwiZGVyIiksRCk7Y2FzZSJQUklWQVRFIEtFWSI6c3dp''@;'; put 'put ''dGNoKE49KEI9b2UuUHJpdmF0ZUtleS5kZWNvZGUoeiwiZGVyIikpLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbigiLiIpKXtjYXNlIjEuMi44NDAuMTEzNTQ5LjEuMS4xIjpyZXR1cm4gb2UuUlNBUHJpdmF0ZUtleS5kZWNvZGUoQi5zdWJqZWN0UHJpdmF0ZUtleSwiZGVyIik7Y2FzZSIxLjIu''@;'; put 'put ''ODQwLjEwMDQ1LjIuMSI6cmV0dXJue2N1cnZlOkIuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6b2UuRUNQcml2YXRlS2V5LmRlY29kZShCLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKS5wcml2YXRlS2V5fTtjYXNlIjEuMi44NDAuMTAwNDAuNC4xIjpyZXR1cm4gQi5hbGdvcml0aG0ucGFy''@;'; put 'put ''YW1zLnByaXZfa2V5PW9lLkRTQXBhcmFtLmRlY29kZShCLnN1YmplY3RQcml2YXRlS2V5LCJkZXIiKSx7dHlwZToiZHNhIixwYXJhbXM6Qi5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkgaWQgIitOKX1jYXNlIlJTQSBQVUJMSUMgS0VZIjpy''@;'; put 'put ''ZXR1cm4gb2UuUlNBUHVibGljS2V5LmRlY29kZSh6LCJkZXIiKTtjYXNlIlJTQSBQUklWQVRFIEtFWSI6cmV0dXJuIG9lLlJTQVByaXZhdGVLZXkuZGVjb2RlKHosImRlciIpO2Nhc2UiRFNBIFBSSVZBVEUgS0VZIjpyZXR1cm57dHlwZToiZHNhIixwYXJhbXM6b2UuRFNBUHJpdmF0ZUtleS5k''@;'; put 'put ''ZWNvZGUoeiwiZGVyIil9O2Nhc2UiRUMgUFJJVkFURSBLRVkiOnJldHVybntjdXJ2ZTooej1vZS5FQ1ByaXZhdGVLZXkuZGVjb2RlKHosImRlciIpKS5wYXJhbWV0ZXJzLnZhbHVlLHByaXZhdGVLZXk6ei5wcml2YXRlS2V5fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBrZXkg''@;'; put 'put ''dHlwZSAiK0UpfX1qLnNpZ25hdHVyZT1vZS5zaWduYXR1cmUsUWUuZXhwb3J0cz1qfSw5MzM5NzooUWUsTWUsUik9PntNZS5wYmtkZjI9Uig4MjY4NSksTWUucGJrZGYyU3luYz1SKDU5MTExKX0sODI2ODU6KFFlLE1lLFIpPT57dmFyIE8sVCxvZT1SKDI3MDU0KS5CdWZmZXIseD1SKDg2MTEx''@;'; put 'put ''KSxtPVIoNDUzOTIpLHNlPVIoNTkxMTEpLE09Uig3NjY0MyksST1nbG9iYWwuY3J5cHRvJiZnbG9iYWwuY3J5cHRvLnN1YnRsZSxqPXtzaGE6IlNIQS0xIiwic2hhLTEiOiJTSEEtMSIsc2hhMToiU0hBLTEiLHNoYTI1NjoiU0hBLTI1NiIsInNoYS0yNTYiOiJTSEEtMjU2IixzaGEzODQ6IlNI''@;'; put 'put ''QS0zODQiLCJzaGEtMzg0IjoiU0hBLTM4NCIsInNoYS01MTIiOiJTSEEtNTEyIixzaGE1MTI6IlNIQS01MTIifSxHPVtdO2Z1bmN0aW9uIEUoKXtyZXR1cm4gVHx8KFQ9Z2xvYmFsLnByb2Nlc3MmJmdsb2JhbC5wcm9jZXNzLm5leHRUaWNrP2dsb2JhbC5wcm9jZXNzLm5leHRUaWNrOmdsb2Jh''@;'; put 'put ''bC5xdWV1ZU1pY3JvdGFzaz9nbG9iYWwucXVldWVNaWNyb3Rhc2s6Z2xvYmFsLnNldEltbWVkaWF0ZT9nbG9iYWwuc2V0SW1tZWRpYXRlOmdsb2JhbC5zZXRUaW1lb3V0KX1mdW5jdGlvbiB6KEIsWixZLFUscSl7cmV0dXJuIEkuaW1wb3J0S2V5KCJyYXciLEIse25hbWU6IlBCS0RGMiJ9LCEx''@;'; put 'put ''LFsiZGVyaXZlQml0cyJdKS50aGVuKGZ1bmN0aW9uKEope3JldHVybiBJLmRlcml2ZUJpdHMoe25hbWU6IlBCS0RGMiIsc2FsdDpaLGl0ZXJhdGlvbnM6WSxoYXNoOntuYW1lOnF9fSxKLFU8PDMpfSkudGhlbihmdW5jdGlvbihKKXtyZXR1cm4gb2UuZnJvbShKKX0pfVFlLmV4cG9ydHM9ZnVu''@;'; put 'put ''Y3Rpb24oQixaLFksVSxxLEopeyJmdW5jdGlvbiI9PXR5cGVvZiBxJiYoSj1xLHE9dm9pZCAwKTt2YXIgZWU9alsocT1xfHwic2hhMSIpLnRvTG93ZXJDYXNlKCldO2lmKGVlJiYiZnVuY3Rpb24iPT10eXBlb2YgZ2xvYmFsLlByb21pc2Upe2lmKHgoWSxVKSxCPU0oQixtLCJQYXNzd29yZCIp''@;'; put 'put ''LFo9TShaLG0sIlNhbHQiKSwiZnVuY3Rpb24iIT10eXBlb2YgSil0aHJvdyBuZXcgRXJyb3IoIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMiIpOyFmdW5jdGlvbiBOKEIsWil7Qi50aGVuKGZ1bmN0aW9uKFkpe0UoKShmdW5jdGlvbigpe1oobnVsbCxZKX0pfSxmdW5jdGlvbihZKXtF''@;'; put 'put ''KCkoZnVuY3Rpb24oKXtaKFkpfSl9KX0oZnVuY3Rpb24gRChCKXtpZihnbG9iYWwucHJvY2VzcyYmIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXJ8fCFJfHwhSS5pbXBvcnRLZXl8fCFJLmRlcml2ZUJpdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7aWYodm9pZCAwIT09R1tCXSlyZXR1cm4g''@;'; put 'put ''R1tCXTt2YXIgWj16KE89T3x8b2UuYWxsb2MoOCksTywxMCwxMjgsQikudGhlbihmdW5jdGlvbigpe3JldHVybiEwfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4hMX0pO3JldHVybiBHW0JdPVosWn0oZWUpLnRoZW4oZnVuY3Rpb24ocmUpe3JldHVybiByZT96KEIsWixZLFUsZWUpOnNlKEIs''@;'; put 'put ''WixZLFUscSl9KSxKKX1lbHNlIEUoKShmdW5jdGlvbigpe3ZhciByZTt0cnl7cmU9c2UoQixaLFksVSxxKX1jYXRjaChpZSl7cmV0dXJuIEooaWUpfUoobnVsbCxyZSl9KX19LDQ1MzkyOlFlPT57dmFyIE1lO01lPWdsb2JhbC5wcm9jZXNzJiZnbG9iYWwucHJvY2Vzcy5icm93c2VyPyJ1dGYt''@;'; put 'put ''OCI6Z2xvYmFsLnByb2Nlc3MmJmdsb2JhbC5wcm9jZXNzLnZlcnNpb24/cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCIuIilbMF0uc2xpY2UoMSksMTApPj02PyJ1dGYtOCI6ImJpbmFyeSI6InV0Zi04IixRZS5leHBvcnRzPU1lfSw4NjExMTpRZT0+e3ZhciBNZT1NYXRoLnBvdygy''@;'; put 'put ''LDMwKS0xO1FlLmV4cG9ydHM9ZnVuY3Rpb24oUixvZSl7aWYoIm51bWJlciIhPXR5cGVvZiBSKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyIik7aWYoUjwwKXRocm93IG5ldyBUeXBlRXJyb3IoIkJhZCBpdGVyYXRpb25zIik7aWYoIm51bWJlciIhPXR5cGVv''@;'; put 'put ''ZiBvZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXkgbGVuZ3RoIG5vdCBhIG51bWJlciIpO2lmKG9lPDB8fG9lPk1lfHxvZSE9b2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmFkIGtleSBsZW5ndGgiKX19LDU5MTExOihRZSxNZSxSKT0+e3ZhciBvZT1SKDgzNDA3KSx4PVIoMzY2MzYpLG09Uigy''@;'; put 'put ''NTQ0Myksc2U9UigyNzA1NCkuQnVmZmVyLE09Uig4NjExMSksTz1SKDQ1MzkyKSxJPVIoNzY2NDMpLGo9c2UuYWxsb2MoMTI4KSxHPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07ZnVuY3Rpb24g''@;'; put 'put ''RCh6LE4sQil7dmFyIFo9ZnVuY3Rpb24gVCh6KXtyZXR1cm4icm1kMTYwIj09PXp8fCJyaXBlbWQxNjAiPT09ej9mdW5jdGlvbiBCKFope3JldHVybihuZXcgeCkudXBkYXRlKFopLmRpZ2VzdCgpfToibWQ1Ij09PXo/b2U6ZnVuY3Rpb24gTihaKXtyZXR1cm4gbSh6KS51cGRhdGUoWikuZGln''@;'; put 'put ''ZXN0KCl9fSh6KSxZPSJzaGE1MTIiPT09enx8InNoYTM4NCI9PT16PzEyODo2NDtOLmxlbmd0aD5ZP049WihOKTpOLmxlbmd0aDxZJiYoTj1zZS5jb25jYXQoW04sal0sWSkpO2Zvcih2YXIgVT1zZS5hbGxvY1Vuc2FmZShZK0dbel0pLHE9c2UuYWxsb2NVbnNhZmUoWStHW3pdKSxKPTA7SjxZ''@;'; put 'put ''O0orKylVW0pdPTU0Xk5bSl0scVtKXT05Ml5OW0pdO3ZhciBlZT1zZS5hbGxvY1Vuc2FmZShZK0IrNCk7VS5jb3B5KGVlLDAsMCxZKSx0aGlzLmlwYWQxPWVlLHRoaXMuaXBhZDI9VSx0aGlzLm9wYWQ9cSx0aGlzLmFsZz16LHRoaXMuYmxvY2tzaXplPVksdGhpcy5oYXNoPVosdGhpcy5zaXpl''@;'; put 'put ''PUdbel19RC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHosTil7cmV0dXJuIHouY29weShOLHRoaXMuYmxvY2tzaXplKSx0aGlzLmhhc2goTikuY29weSh0aGlzLm9wYWQsdGhpcy5ibG9ja3NpemUpLHRoaXMuaGFzaCh0aGlzLm9wYWQpfSxRZS5leHBvcnRzPWZ1bmN0aW9uIEUoeixOLEIsWixZ''@;'; put 'put ''KXtNKEIsWik7dmFyIFU9bmV3IEQoWT1ZfHwic2hhMSIsej1JKHosTywiUGFzc3dvcmQiKSwoTj1JKE4sTywiU2FsdCIpKS5sZW5ndGgpLHE9c2UuYWxsb2NVbnNhZmUoWiksSj1zZS5hbGxvY1Vuc2FmZShOLmxlbmd0aCs0KTtOLmNvcHkoSiwwLDAsTi5sZW5ndGgpO2Zvcih2YXIgZWU9MCxy''@;'; put 'put ''ZT1HW1ldLGllPU1hdGguY2VpbChaL3JlKSx1ZT0xO3VlPD1pZTt1ZSsrKXtKLndyaXRlVUludDMyQkUodWUsTi5sZW5ndGgpO2Zvcih2YXIgbGU9VS5ydW4oSixVLmlwYWQxKSxhZT1sZSxXPTE7VzxCO1crKyl7YWU9VS5ydW4oYWUsVS5pcGFkMik7Zm9yKHZhciBiPTA7YjxyZTtiKyspbGVb''@;'; put 'put ''Yl1ePWFlW2JdfWxlLmNvcHkocSxlZSksZWUrPXJlfXJldHVybiBxfX0sNzY2NDM6KFFlLE1lLFIpPT57dmFyIG9lPVIoMjcwNTQpLkJ1ZmZlcjtRZS5leHBvcnRzPWZ1bmN0aW9uKHgsbSxzZSl7aWYob2UuaXNCdWZmZXIoeCkpcmV0dXJuIHg7aWYoInN0cmluZyI9PXR5cGVvZiB4KXJldHVy''@;'; put 'put ''biBvZS5mcm9tKHgsbSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHgpKXJldHVybiBvZS5mcm9tKHguYnVmZmVyKTt0aHJvdyBuZXcgVHlwZUVycm9yKHNlKyIgbXVzdCBiZSBhIHN0cmluZywgYSBCdWZmZXIsIGEgdHlwZWQgYXJyYXkgb3IgYSBEYXRhVmlldyIpfX0sOTY1NjpRZT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0IjtRZS5leHBvcnRzPXR5cGVvZiBwcm9jZXNzPiJ1Inx8IXByb2Nlc3MudmVyc2lvbnx8MD09PXByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MC4iKXx8MD09PXByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MS4iKSYmMCE9PXByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MS44LiIp''@;'; put 'put ''P3tuZXh0VGljazpmdW5jdGlvbiBNZShSLG9lLHgsbSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFIpdGhyb3cgbmV3IFR5cGVFcnJvcignImNhbGxiYWNrIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTt2YXIgTSxPLHNlPWFyZ3VtZW50cy5sZW5ndGg7c3dpdGNoKHNlKXtjYXNlIDA6''@;'; put 'put ''Y2FzZSAxOnJldHVybiBwcm9jZXNzLm5leHRUaWNrKFIpO2Nhc2UgMjpyZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe1IuY2FsbChudWxsLG9lKX0pO2Nhc2UgMzpyZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe1IuY2FsbChudWxsLG9lLHgpfSk7Y2FzZSA0OnJl''@;'; put 'put ''dHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7Ui5jYWxsKG51bGwsb2UseCxtKX0pO2RlZmF1bHQ6Zm9yKE09bmV3IEFycmF5KHNlLTEpLE89MDtPPE0ubGVuZ3RoOylNW08rK109YXJndW1lbnRzW09dO3JldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCl7Ui5hcHBseShu''@;'; put 'put ''dWxsLE0pfSl9fX06cHJvY2Vzc30sNTI5NjU6KFFlLE1lLFIpPT57TWUucHVibGljRW5jcnlwdD1SKDg3MjY3KSxNZS5wcml2YXRlRGVjcnlwdD1SKDk4NjEzKSxNZS5wcml2YXRlRW5jcnlwdD1mdW5jdGlvbih4LG0pe3JldHVybiBNZS5wdWJsaWNFbmNyeXB0KHgsbSwhMCl9LE1lLnB1Ymxp''@;'; put 'put ''Y0RlY3J5cHQ9ZnVuY3Rpb24oeCxtKXtyZXR1cm4gTWUucHJpdmF0ZURlY3J5cHQoeCxtLCEwKX19LDMwNzE1OihRZSxNZSxSKT0+e3ZhciBvZT1SKDY3MjExKSx4PVIoMjcwNTQpLkJ1ZmZlcjtmdW5jdGlvbiBtKHNlKXt2YXIgTT14LmFsbG9jVW5zYWZlKDQpO3JldHVybiBNLndyaXRlVUlu''@;'; put 'put ''dDMyQkUoc2UsMCksTX1RZS5leHBvcnRzPWZ1bmN0aW9uKHNlLE0pe2Zvcih2YXIgaixPPXguYWxsb2MoMCksST0wO08ubGVuZ3RoPE07KWo9bShJKyspLE89eC5jb25jYXQoW08sb2UoInNoYTEiKS51cGRhdGUoc2UpLnVwZGF0ZShqKS5kaWdlc3QoKV0pO3JldHVybiBPLnNsaWNlKDAsTSl9''@;'; put 'put ''fSwxNjUwODpmdW5jdGlvbihRZSxNZSxSKXshZnVuY3Rpb24ob2UseCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oVyxiKXtpZighVyl0aHJvdyBuZXcgRXJyb3IoYnx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBzZShXLGIpe1cuc3VwZXJfPWI7dmFyIEE9ZnVuY3Rpb24oKXt9O0Eu''@;'; put 'put ''cHJvdG90eXBlPWIucHJvdG90eXBlLFcucHJvdG90eXBlPW5ldyBBLFcucHJvdG90eXBlLmNvbnN0cnVjdG9yPVd9ZnVuY3Rpb24gTShXLGIsQSl7aWYoTS5pc0JOKFcpKXJldHVybiBXO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxs''@;'; put 'put ''LG51bGwhPT1XJiYoKCJsZSI9PT1ifHwiYmUiPT09YikmJihBPWIsYj0xMCksdGhpcy5faW5pdChXfHwwLGJ8fDEwLEF8fCJiZSIpKX12YXIgTzsib2JqZWN0Ij09dHlwZW9mIG9lP29lLmV4cG9ydHM9TTp4LkJOPU0sTS5CTj1NLE0ud29yZFNpemU9MjY7dHJ5e089dHlwZW9mIHdpbmRvdzwi''@;'; put 'put ''dSImJnR5cGVvZiB3aW5kb3cuQnVmZmVyPCJ1Ij93aW5kb3cuQnVmZmVyOlIoNTEwNjkpLkJ1ZmZlcn1jYXRjaHt9ZnVuY3Rpb24gSShXLGIpe3ZhciBBPVcuY2hhckNvZGVBdChiKTtyZXR1cm4gQT49NjUmJkE8PTcwP0EtNTU6QT49OTcmJkE8PTEwMj9BLTg3OkEtNDgmMTV9ZnVuY3Rpb24g''@;'; put 'put ''aihXLGIsQSl7dmFyIEY9SShXLEEpO3JldHVybiBBLTE+PWImJihGfD1JKFcsQS0xKTw8NCksRn1mdW5jdGlvbiBHKFcsYixBLEYpe2Zvcih2YXIgSD0wLGc9TWF0aC5taW4oVy5sZW5ndGgsQSksQz1iO0M8ZztDKyspe3ZhciBrPVcuY2hhckNvZGVBdChDKS00ODtIKj1GLEgrPWs+PTQ5P2st''@;'; put 'put ''NDkrMTA6az49MTc/ay0xNysxMDprfXJldHVybiBIfU0uaXNCTj1mdW5jdGlvbihiKXtyZXR1cm4gYiBpbnN0YW5jZW9mIE18fG51bGwhPT1iJiYib2JqZWN0Ij09dHlwZW9mIGImJmIuY29uc3RydWN0b3Iud29yZFNpemU9PT1NLndvcmRTaXplJiZBcnJheS5pc0FycmF5KGIud29yZHMpfSxN''@;'; put 'put ''Lm1heD1mdW5jdGlvbihiLEEpe3JldHVybiBiLmNtcChBKT4wP2I6QX0sTS5taW49ZnVuY3Rpb24oYixBKXtyZXR1cm4gYi5jbXAoQSk8MD9iOkF9LE0ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGIsQSxGKXtpZigibnVtYmVyIj09dHlwZW9mIGIpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIo''@;'; put 'put ''YixBLEYpO2lmKCJvYmplY3QiPT10eXBlb2YgYilyZXR1cm4gdGhpcy5faW5pdEFycmF5KGIsQSxGKTsiaGV4Ij09PUEmJihBPTE2KSxtKEE9PT0oMHxBKSYmQT49MiYmQTw9MzYpO3ZhciBIPTA7Ii0iPT09KGI9Yi50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihIKyssdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0xKSxIPGIubGVuZ3RoJiYoMTY9PT1BP3RoaXMuX3BhcnNlSGV4KGIsSCxGKToodGhpcy5fcGFyc2VCYXNlKGIsQSxIKSwibGUiPT09RiYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLEEsRikpKX0sTS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24oYixB''@;'; put 'put ''LEYpe2I8MCYmKHRoaXMubmVnYXRpdmU9MSxiPS1iKSxiPDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZiXSx0aGlzLmxlbmd0aD0xKTpiPDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9WzY3MTA4ODYzJmIsYi82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG0o''@;'; put 'put ''Yjw5MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZiLGIvNjcxMDg4NjQmNjcxMDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PUYmJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxBLEYpfSxNLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKGIsQSxG''@;'; put 'put ''KXtpZihtKCJudW1iZXIiPT10eXBlb2YgYi5sZW5ndGgpLGIubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGIubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIEg9''@;'; put 'put ''MDtIPHRoaXMubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPTA7dmFyIGcsQyxrPTA7aWYoImJlIj09PUYpZm9yKEg9Yi5sZW5ndGgtMSxnPTA7SD49MDtILT0zKXRoaXMud29yZHNbZ118PShDPWJbSF18YltILTFdPDw4fGJbSC0yXTw8MTYpPDxrJjY3MTA4ODYzLHRoaXMud29yZHNbZysxXT1D''@;'; put 'put ''Pj4+MjYtayY2NzEwODg2Mywoays9MjQpPj0yNiYmKGstPTI2LGcrKyk7ZWxzZSBpZigibGUiPT09Rilmb3IoSD0wLGc9MDtIPGIubGVuZ3RoO0grPTMpdGhpcy53b3Jkc1tnXXw9KEM9YltIXXxiW0grMV08PDh8YltIKzJdPDwxNik8PGsmNjcxMDg4NjMsdGhpcy53b3Jkc1tnKzFdPUM+Pj4y''@;'; put 'put ''Ni1rJjY3MTA4ODYzLChrKz0yNCk+PTI2JiYoay09MjYsZysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oYixBLEYpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoYi5sZW5ndGgtQSkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5n''@;'; put 'put ''dGgpO2Zvcih2YXIgSD0wO0g8dGhpcy5sZW5ndGg7SCsrKXRoaXMud29yZHNbSF09MDt2YXIgayxnPTAsQz0wO2lmKCJiZSI9PT1GKWZvcihIPWIubGVuZ3RoLTE7SD49QTtILT0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMmayxnPj0xOD8oZy09MTgsdGhpcy53b3Jk''@;'; put 'put ''c1tDKz0xXXw9az4+PjI2KTpnKz04O2Vsc2UgZm9yKEg9KGIubGVuZ3RoLUEpJTI9PTA/QSsxOkE7SDxiLmxlbmd0aDtIKz0yKWs9aihiLEEsSCk8PGcsdGhpcy53b3Jkc1tDXXw9NjcxMDg4NjMmayxnPj0xOD8oZy09MTgsdGhpcy53b3Jkc1tDKz0xXXw9az4+PjI2KTpnKz04O3RoaXMuc3Ry''@;'; put 'put ''aXAoKX0sTS5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbihiLEEsRil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIEg9MCxnPTE7Zzw9NjcxMDg4NjM7Zyo9QSlIKys7SC0tLGc9Zy9BfDA7Zm9yKHZhciBDPWIubGVuZ3RoLUYsaz1DJUgsXz1NYXRoLm1pbihDLEMt''@;'; put 'put ''aykrRixwPTAsdz1GO3c8Xzt3Kz1IKXA9RyhiLHcsdytILEEpLHRoaXMuaW11bG4oZyksdGhpcy53b3Jkc1swXStwPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXA6dGhpcy5faWFkZG4ocCk7aWYoMCE9PWspe3ZhciBLPTE7Zm9yKHA9RyhiLHcsYi5sZW5ndGgsQSksdz0wO3c8azt3KyspSyo9''@;'; put 'put ''QTt0aGlzLmltdWxuKEspLHRoaXMud29yZHNbMF0rcDw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1wOnRoaXMuX2lhZGRuKHApfXRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihiKXtiLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBBPTA7QTx0aGlz''@;'; put 'put ''Lmxlbmd0aDtBKyspYi53b3Jkc1tBXT10aGlzLndvcmRzW0FdO2IubGVuZ3RoPXRoaXMubGVuZ3RoLGIubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSxiLnJlZD10aGlzLnJlZH0sTS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYj1uZXcgTShudWxsKTtyZXR1cm4gdGhpcy5jb3B5KGIp''@;'; put 'put ''LGJ9LE0ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24oYil7Zm9yKDt0aGlzLmxlbmd0aDxiOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LE0ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlz''@;'; put 'put ''Lmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sTS5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LE0ucHJvdG90eXBlLmlu''@;'; put 'put ''c3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIEQ9WyIiLCIwIiwiMDAiLCIwMDAiLCIwMDAwIiwiMDAwMDAiLCIwMDAwMDAiLCIwMDAwMDAwIiwiMDAwMDAwMDAiLCIwMDAwMDAwMDAiLCIwMDAwMDAw''@;'; put 'put ''MDAwIiwiMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAw''@;'; put 'put ''IiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0sVD1bMCwwLDI1''@;'; put 'put ''LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxFPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcx''@;'; put 'put ''LDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2Mjkx''@;'; put 'put ''NTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO2Z1bmN0aW9uIE4oVyxiLEEpe0EubmVnYXRpdmU9Yi5uZWdhdGl2ZV5XLm5lZ2F0aXZlO3ZhciBGPVcubGVuZ3RoK2IubGVuZ3RofDA7QS5sZW5ndGg9RixGPUYtMXwwO3ZhciBIPTB8Vy53b3Jkc1swXSxn''@;'; put 'put ''PTB8Yi53b3Jkc1swXSxDPUgqZyxfPUMvNjcxMDg4NjR8MDtBLndvcmRzWzBdPTY3MTA4ODYzJkM7Zm9yKHZhciBwPTE7cDxGO3ArKyl7Zm9yKHZhciB3PV8+Pj4yNixLPTY3MTA4ODYzJl8sdGU9TWF0aC5taW4ocCxiLmxlbmd0aC0xKSxjZT1NYXRoLm1heCgwLHAtVy5sZW5ndGgrMSk7Y2U8''@;'; put 'put ''PXRlO2NlKyspdys9KEM9KEg9MHxXLndvcmRzW3AtY2V8MF0pKihnPTB8Yi53b3Jkc1tjZV0pK0spLzY3MTA4ODY0fDAsSz02NzEwODg2MyZDO0Eud29yZHNbcF09MHxLLF89MHx3fXJldHVybiAwIT09Xz9BLndvcmRzW3BdPTB8XzpBLmxlbmd0aC0tLEEuc3RyaXAoKX1NLnByb3RvdHlwZS50''@;'; put 'put ''b1N0cmluZz1mdW5jdGlvbihiLEEpe3ZhciBGO2lmKEE9MHxBfHwxLDE2PT09KGI9Ynx8MTApfHwiaGV4Ij09PWIpe0Y9IiI7Zm9yKHZhciBIPTAsZz0wLEM9MDtDPHRoaXMubGVuZ3RoO0MrKyl7dmFyIGs9dGhpcy53b3Jkc1tDXSxfPSgxNjc3NzIxNSYoazw8SHxnKSkudG9TdHJpbmcoMTYp''@;'; put 'put ''O0Y9MCE9KGc9az4+PjI0LUgmMTY3NzcyMTUpfHxDIT09dGhpcy5sZW5ndGgtMT9EWzYtXy5sZW5ndGhdK18rRjpfK0YsKEgrPTIpPj0yNiYmKEgtPTI2LEMtLSl9Zm9yKDAhPT1nJiYoRj1nLnRvU3RyaW5nKDE2KStGKTtGLmxlbmd0aCVBIT0wOylGPSIwIitGO3JldHVybiAwIT09dGhpcy5u''@;'; put 'put ''ZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9aWYoYj09PSgwfGIpJiZiPj0yJiZiPD0zNil7dmFyIHA9VFtiXSx3PUVbYl07Rj0iIjt2YXIgSz10aGlzLmNsb25lKCk7Zm9yKEsubmVnYXRpdmU9MDshSy5pc1plcm8oKTspe3ZhciB0ZT1LLm1vZG4odykudG9TdHJpbmcoYik7Rj0oSz1LLmlkaXZuKHcp''@;'; put 'put ''KS5pc1plcm8oKT90ZStGOkRbcC10ZS5sZW5ndGhdK3RlK0Z9Zm9yKHRoaXMuaXNaZXJvKCkmJihGPSIwIitGKTtGLmxlbmd0aCVBIT0wOylGPSIwIitGO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKEY9Ii0iK0YpLEZ9bSghMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIp''@;'; put 'put ''fSxNLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9iKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/Yis9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2''@;'; put 'put ''NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm0oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1iOmJ9LE0ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sTS5w''@;'; put 'put ''cm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oYixBKXtyZXR1cm4gbSh0eXBlb2YgTzwidSIpLHRoaXMudG9BcnJheUxpa2UoTyxiLEEpfSxNLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksYixBKX0sTS5wcm90b3R5cGUudG9B''@;'; put 'put ''cnJheUxpa2U9ZnVuY3Rpb24oYixBLEYpe3ZhciBIPXRoaXMuYnl0ZUxlbmd0aCgpLGc9Rnx8TWF0aC5tYXgoMSxIKTttKEg8PWcsImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgiKSxtKGc+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIiksdGhpcy5zdHJpcCgp''@;'; put 'put ''O3ZhciBfLHAsQz0ibGUiPT09QSxrPW5ldyBiKGcpLHc9dGhpcy5jbG9uZSgpO2lmKEMpe2ZvcihwPTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVzaHJuKDgpLGtbcF09Xztmb3IoO3A8ZztwKyspa1twXT0wfWVsc2V7Zm9yKHA9MDtwPGctSDtwKyspa1twXT0wO2Zvcihw''@;'; put 'put ''PTA7IXcuaXNaZXJvKCk7cCsrKV89dy5hbmRsbigyNTUpLHcuaXVzaHJuKDgpLGtbZy1wLTFdPV99cmV0dXJuIGt9LE0ucHJvdG90eXBlLl9jb3VudEJpdHM9TWF0aC5jbHozMj9mdW5jdGlvbihiKXtyZXR1cm4gMzItTWF0aC5jbHozMihiKX06ZnVuY3Rpb24oYil7dmFyIEE9YixGPTA7cmV0''@;'; put 'put ''dXJuIEE+PTQwOTYmJihGKz0xMyxBPj4+PTEzKSxBPj02NCYmKEYrPTcsQT4+Pj03KSxBPj04JiYoRis9NCxBPj4+PTQpLEE+PTImJihGKz0yLEE+Pj49MiksRitBfSxNLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oYil7aWYoMD09PWIpcmV0dXJuIDI2O3ZhciBBPWIsRj0wO3JldHVy''@;'; put 'put ''biA4MTkxJkF8fChGKz0xMyxBPj4+PTEzKSwxMjcmQXx8KEYrPTcsQT4+Pj03KSwxNSZBfHwoRis9NCxBPj4+PTQpLDMmQXx8KEYrPTIsQT4+Pj0yKSwxJkF8fEYrKyxGfSxNLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLl9jb3VudEJpdHModGhpcy53b3Jkc1t0''@;'; put 'put ''aGlzLmxlbmd0aC0xXSk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStBfSxNLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciBiPTAsQT0wO0E8dGhpcy5sZW5ndGg7QSsrKXt2YXIgRj10aGlzLl96ZXJvQml0cyh0aGlzLndv''@;'; put 'put ''cmRzW0FdKTtpZihiKz1GLDI2IT09RilicmVha31yZXR1cm4gYn0sTS5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sTS5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKGIpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2''@;'; put 'put ''ZT90aGlzLmFicygpLmlub3RuKGIpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sTS5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMudGVzdG4oYi0xKT90aGlzLm5vdG4oYikuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sTS5wcm90b3R5cGUuaXNOZWc9ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LE0ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxNLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxN''@;'; put 'put ''LnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKGIpe2Zvcig7dGhpcy5sZW5ndGg8Yi5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIEE9MDtBPGIubGVuZ3RoO0ErKyl0aGlzLndvcmRzW0FdPXRoaXMud29yZHNbQV18Yi53b3Jkc1tBXTtyZXR1cm4gdGhpcy5zdHJp''@;'; put 'put ''cCgpfSxNLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1b3IoYil9LE0ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKGIpOmIuY2xv''@;'; put 'put ''bmUoKS5pb3IodGhpcyl9LE0ucHJvdG90eXBlLnVvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IoYik6Yi5jbG9uZSgpLml1b3IodGhpcyl9LE0ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKGIpe3ZhciBBO0E9dGhpcy5sZW5ndGg+''@;'; put 'put ''Yi5sZW5ndGg/Yjp0aGlzO2Zvcih2YXIgRj0wO0Y8QS5sZW5ndGg7RisrKXRoaXMud29yZHNbRl09dGhpcy53b3Jkc1tGXSZiLndvcmRzW0ZdO3JldHVybiB0aGlzLmxlbmd0aD1BLmxlbmd0aCx0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIG0oISh0''@;'; put 'put ''aGlzLm5lZ2F0aXZlfGIubmVnYXRpdmUpKSx0aGlzLml1YW5kKGIpfSxNLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKGIpOmIuY2xvbmUoKS5pYW5kKHRoaXMpfSxNLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9u''@;'; put 'put ''KGIpe3JldHVybiB0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQoYik6Yi5jbG9uZSgpLml1YW5kKHRoaXMpfSxNLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbihiKXt2YXIgQSxGO3RoaXMubGVuZ3RoPmIubGVuZ3RoPyhBPXRoaXMsRj1iKTooQT1iLEY9dGhpcyk7Zm9y''@;'; put 'put ''KHZhciBIPTA7SDxGLmxlbmd0aDtIKyspdGhpcy53b3Jkc1tIXT1BLndvcmRzW0hdXkYud29yZHNbSF07aWYodGhpcyE9PUEpZm9yKDtIPEEubGVuZ3RoO0grKyl0aGlzLndvcmRzW0hdPUEud29yZHNbSF07cmV0dXJuIHRoaXMubGVuZ3RoPUEubGVuZ3RoLHRoaXMuc3RyaXAoKX0sTS5wcm90''@;'; put 'put ''b3R5cGUuaXhvcj1mdW5jdGlvbihiKXtyZXR1cm4gbSghKHRoaXMubmVnYXRpdmV8Yi5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IoYil9LE0ucHJvdG90eXBlLnhvcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5sZW5ndGg+Yi5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IoYik6Yi5jbG9uZSgpLml4''@;'; put 'put ''b3IodGhpcyl9LE0ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGVuZ3RoPmIubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcihiKTpiLmNsb25lKCkuaXV4b3IodGhpcyl9LE0ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZi''@;'; put 'put ''Pj0wKTt2YXIgQT0wfE1hdGguY2VpbChiLzI2KSxGPWIlMjY7dGhpcy5fZXhwYW5kKEEpLEY+MCYmQS0tO2Zvcih2YXIgSD0wO0g8QTtIKyspdGhpcy53b3Jkc1tIXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tIXTtyZXR1cm4gRj4wJiYodGhpcy53b3Jkc1tIXT1+dGhpcy53b3Jkc1tIXSY2NzEw''@;'; put 'put ''ODg2Mz4+MjYtRiksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oYil9LE0ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24oYixBKXttKCJudW1iZXIiPT10eXBlb2YgYiYmYj49MCk7dmFyIEY9Yi8yNnwwLEg9YiUyNjty''@;'; put 'put ''ZXR1cm4gdGhpcy5fZXhwYW5kKEYrMSksdGhpcy53b3Jkc1tGXT1BP3RoaXMud29yZHNbRl18MTw8SDp0aGlzLndvcmRzW0ZdJn4oMTw8SCksdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGIpe3ZhciBBLEYsSDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWIubmVn''@;'; put 'put ''YXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxBPXRoaXMuaXN1YihiKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1iLm5lZ2F0aXZlKXJldHVybiBiLm5lZ2F0aXZlPTAsQT10aGlzLmlzdWIoYiksYi5uZWdhdGl2ZT0xLEEu''@;'; put 'put ''X25vcm1TaWduKCk7dGhpcy5sZW5ndGg+Yi5sZW5ndGg/KEY9dGhpcyxIPWIpOihGPWIsSD10aGlzKTtmb3IodmFyIGc9MCxDPTA7QzxILmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT02NzEwODg2MyYoQT0oMHxGLndvcmRzW0NdKSsoMHxILndvcmRzW0NdKStnKSxnPUE+Pj4yNjtmb3IoOzAh''@;'; put 'put ''PT1nJiZDPEYubGVuZ3RoO0MrKyl0aGlzLndvcmRzW0NdPTY3MTA4ODYzJihBPSgwfEYud29yZHNbQ10pK2cpLGc9QT4+PjI2O2lmKHRoaXMubGVuZ3RoPUYubGVuZ3RoLDAhPT1nKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWcsdGhpcy5sZW5ndGgrKztlbHNlIGlmKEYhPT10aGlzKWZvcig7''@;'; put 'put ''QzxGLmxlbmd0aDtDKyspdGhpcy53b3Jkc1tDXT1GLndvcmRzW0NdO3JldHVybiB0aGlzfSxNLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYil7dmFyIEE7cmV0dXJuIDAhPT1iLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oYi5uZWdhdGl2ZT0wLEE9dGhpcy5zdWIoYiksYi5uZWdhdGl2''@;'; put 'put ''ZV49MSxBKTowPT09Yi5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxBPWIuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxBKTp0aGlzLmxlbmd0aD5iLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChiKTpiLmNsb25lKCkuaWFkZCh0aGlzKX0sTS5wcm90b3R5''@;'; put 'put ''cGUuaXN1Yj1mdW5jdGlvbihiKXtpZigwIT09Yi5uZWdhdGl2ZSl7Yi5uZWdhdGl2ZT0wO3ZhciBBPXRoaXMuaWFkZChiKTtyZXR1cm4gYi5uZWdhdGl2ZT0xLEEuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoYiksdGhp''@;'; put 'put ''cy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIEgsZyxGPXRoaXMuY21wKGIpO2lmKDA9PT1GKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztGPjA/KEg9dGhpcyxnPWIpOihIPWIsZz10aGlzKTtmb3IodmFyIEM9MCxrPTA7''@;'; put 'put ''azxnLmxlbmd0aDtrKyspQz0oQT0oMHxILndvcmRzW2tdKS0oMHxnLndvcmRzW2tdKStDKT4+MjYsdGhpcy53b3Jkc1trXT02NzEwODg2MyZBO2Zvcig7MCE9PUMmJms8SC5sZW5ndGg7aysrKUM9KEE9KDB8SC53b3Jkc1trXSkrQyk+PjI2LHRoaXMud29yZHNba109NjcxMDg4NjMmQTtpZigw''@;'; put 'put ''PT09QyYmazxILmxlbmd0aCYmSCE9PXRoaXMpZm9yKDtrPEgubGVuZ3RoO2srKyl0aGlzLndvcmRzW2tdPUgud29yZHNba107cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGspLEghPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LE0ucHJvdG90''@;'; put 'put ''eXBlLnN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoYil9O3ZhciBCPWZ1bmN0aW9uKGIsQSxGKXt2YXIgXyxwLHcsSD1iLndvcmRzLGc9QS53b3JkcyxDPUYud29yZHMsaz0wLEs9MHxIWzBdLHRlPTgxOTEmSyxjZT1LPj4+MTMsaGU9MHxIWzFdLFNlPTgxOTEmaGUs''@;'; put 'put ''TGU9aGU+Pj4xMyxIZT0wfEhbMl0seGU9ODE5MSZIZSxEZT1IZT4+PjEzLEJlPTB8SFszXSxHZT04MTkxJkJlLFVlPUJlPj4+MTMscWU9MHxIWzRdLG90PTgxOTEmcWUsRmU9cWU+Pj4xMyx3ZT0wfEhbNV0sRWU9ODE5MSZ3ZSxJZT13ZT4+PjEzLFhlPTB8SFs2XSx0dD04MTkxJlhlLFplPVhl''@;'; put 'put ''Pj4+MTMsY3Q9MHxIWzddLGtlPTgxOTEmY3QsQWU9Y3Q+Pj4xMyxqZT0wfEhbOF0saXQ9ODE5MSZqZSxzdD1qZT4+PjEzLHh0PTB8SFs5XSxGdD04MTkxJnh0LE90PXh0Pj4+MTMsS3Q9MHxnWzBdLGJuPTgxOTEmS3QsQnQ9S3Q+Pj4xMyx5bj0wfGdbMV0sTm49ODE5MSZ5bixubj15bj4+PjEz''@;'; put 'put ''LEduPTB8Z1syXSxZbj04MTkxJkduLGZ0PUduPj4+MTMsZG49MHxnWzNdLGhuPTgxOTEmZG4sd3Q9ZG4+Pj4xMyxqdD0wfGdbNF0sbXQ9ODE5MSZqdCxIdD1qdD4+PjEzLHBuPTB8Z1s1XSxudD04MTkxJnBuLEV0PXBuPj4+MTMsZW49MHxnWzZdLFR0PTgxOTEmZW4seXQ9ZW4+Pj4xMywkdD0w''@;'; put 'put ''fGdbN10seG49ODE5MSYkdCx6dD0kdD4+PjEzLF9uPTB8Z1s4XSxPbj04MTkxJl9uLHJuPV9uPj4+MTMsUG49MHxnWzldLENuPTgxOTEmUG4sWHQ9UG4+Pj4xMztGLm5lZ2F0aXZlPWIubmVnYXRpdmVeQS5uZWdhdGl2ZSxGLmxlbmd0aD0xOTt2YXIgSm49KGsrKF89TWF0aC5pbXVsKHRlLGJu''@;'; put 'put ''KSl8MCkrKCg4MTkxJihwPShwPU1hdGguaW11bCh0ZSxCdCkpK01hdGguaW11bChjZSxibil8MCkpPDwxMyl8MDtrPSgodz1NYXRoLmltdWwoY2UsQnQpKSsocD4+PjEzKXwwKSsoSm4+Pj4yNil8MCxKbiY9NjcxMDg4NjMsXz1NYXRoLmltdWwoU2UsYm4pLHA9KHA9TWF0aC5pbXVsKFNlLEJ0''@;'; put 'put ''KSkrTWF0aC5pbXVsKExlLGJuKXwwLHc9TWF0aC5pbXVsKExlLEJ0KTt2YXIgeGk9KGsrKF89XytNYXRoLmltdWwodGUsTm4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxubil8MCkrTWF0aC5pbXVsKGNlLE5uKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLG5u''@;'; put 'put ''KXwwKSsocD4+PjEzKXwwKSsoeGk+Pj4yNil8MCx4aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoeGUsYm4pLHA9KHA9TWF0aC5pbXVsKHhlLEJ0KSkrTWF0aC5pbXVsKERlLGJuKXwwLHc9TWF0aC5pbXVsKERlLEJ0KSxfPV8rTWF0aC5pbXVsKFNlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoU2Us''@;'; put 'put ''bm4pfDApK01hdGguaW11bChMZSxObil8MCx3PXcrTWF0aC5pbXVsKExlLG5uKXwwO3ZhciBhbj0oaysoXz1fK01hdGguaW11bCh0ZSxZbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLGZ0KXwwKStNYXRoLmltdWwoY2UsWW4pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmlt''@;'; put 'put ''dWwoY2UsZnQpfDApKyhwPj4+MTMpfDApKyhhbj4+PjI2KXwwLGFuJj02NzEwODg2MyxfPU1hdGguaW11bChHZSxibikscD0ocD1NYXRoLmltdWwoR2UsQnQpKStNYXRoLmltdWwoVWUsYm4pfDAsdz1NYXRoLmltdWwoVWUsQnQpLF89XytNYXRoLmltdWwoeGUsTm4pfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bCh4ZSxubil8MCkrTWF0aC5pbXVsKERlLE5uKXwwLHc9dytNYXRoLmltdWwoRGUsbm4pfDAsXz1fK01hdGguaW11bChTZSxZbil8MCxwPShwPXArTWF0aC5pbXVsKFNlLGZ0KXwwKStNYXRoLmltdWwoTGUsWW4pfDAsdz13K01hdGguaW11bChMZSxmdCl8MDt2YXIgdG49KGsrKF89XytN''@;'; put 'put ''YXRoLmltdWwodGUsaG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx3dCl8MCkrTWF0aC5pbXVsKGNlLGhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHd0KXwwKSsocD4+PjEzKXwwKSsodG4+Pj4yNil8MCx0biY9NjcxMDg4NjMsXz1NYXRoLmltdWwob3Qs''@;'; put 'put ''Ym4pLHA9KHA9TWF0aC5pbXVsKG90LEJ0KSkrTWF0aC5pbXVsKEZlLGJuKXwwLHc9TWF0aC5pbXVsKEZlLEJ0KSxfPV8rTWF0aC5pbXVsKEdlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Usbm4pfDApK01hdGguaW11bChVZSxObil8MCx3PXcrTWF0aC5pbXVsKFVlLG5uKXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoeGUsWW4pfDAscD0ocD1wK01hdGguaW11bCh4ZSxmdCl8MCkrTWF0aC5pbXVsKERlLFluKXwwLHc9dytNYXRoLmltdWwoRGUsZnQpfDAsXz1fK01hdGguaW11bChTZSxobil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHd0KXwwKStNYXRoLmltdWwoTGUsaG4pfDAsdz13K01hdGguaW11''@;'; put 'put ''bChMZSx3dCl8MDt2YXIgdWk9KGsrKF89XytNYXRoLmltdWwodGUsbXQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxIdCl8MCkrTWF0aC5pbXVsKGNlLG10KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLEh0KXwwKSsocD4+PjEzKXwwKSsodWk+Pj4yNil8MCx1''@;'; put 'put ''aSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRWUsYm4pLHA9KHA9TWF0aC5pbXVsKEVlLEJ0KSkrTWF0aC5pbXVsKEllLGJuKXwwLHc9TWF0aC5pbXVsKEllLEJ0KSxfPV8rTWF0aC5pbXVsKG90LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwob3Qsbm4pfDApK01hdGguaW11bChGZSxObil8MCx3PXcr''@;'; put 'put ''TWF0aC5pbXVsKEZlLG5uKXwwLF89XytNYXRoLmltdWwoR2UsWW4pfDAscD0ocD1wK01hdGguaW11bChHZSxmdCl8MCkrTWF0aC5pbXVsKFVlLFluKXwwLHc9dytNYXRoLmltdWwoVWUsZnQpfDAsXz1fK01hdGguaW11bCh4ZSxobil8MCxwPShwPXArTWF0aC5pbXVsKHhlLHd0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoRGUsaG4pfDAsdz13K01hdGguaW11bChEZSx3dCl8MCxfPV8rTWF0aC5pbXVsKFNlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoU2UsSHQpfDApK01hdGguaW11bChMZSxtdCl8MCx3PXcrTWF0aC5pbXVsKExlLEh0KXwwO3ZhciBBcj0oaysoXz1fK01hdGguaW11bCh0ZSxudCl8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLEV0KXwwKStNYXRoLmltdWwoY2UsbnQpfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoY2UsRXQpfDApKyhwPj4+MTMpfDApKyhBcj4+PjI2KXwwLEFyJj02NzEwODg2MyxfPU1hdGguaW11bCh0dCxibikscD0ocD1NYXRoLmltdWwo''@;'; put 'put ''dHQsQnQpKStNYXRoLmltdWwoWmUsYm4pfDAsdz1NYXRoLmltdWwoWmUsQnQpLF89XytNYXRoLmltdWwoRWUsTm4pfDAscD0ocD1wK01hdGguaW11bChFZSxubil8MCkrTWF0aC5pbXVsKEllLE5uKXwwLHc9dytNYXRoLmltdWwoSWUsbm4pfDAsXz1fK01hdGguaW11bChvdCxZbil8MCxwPShw''@;'; put 'put ''PXArTWF0aC5pbXVsKG90LGZ0KXwwKStNYXRoLmltdWwoRmUsWW4pfDAsdz13K01hdGguaW11bChGZSxmdCl8MCxfPV8rTWF0aC5pbXVsKEdlLGhuKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Usd3QpfDApK01hdGguaW11bChVZSxobil8MCx3PXcrTWF0aC5pbXVsKFVlLHd0KXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwoeGUsbXQpfDAscD0ocD1wK01hdGguaW11bCh4ZSxIdCl8MCkrTWF0aC5pbXVsKERlLG10KXwwLHc9dytNYXRoLmltdWwoRGUsSHQpfDAsXz1fK01hdGguaW11bChTZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLEV0KXwwKStNYXRoLmltdWwoTGUsbnQpfDAsdz13K01hdGguaW11''@;'; put 'put ''bChMZSxFdCl8MDt2YXIgaHI9KGsrKF89XytNYXRoLmltdWwodGUsVHQpfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx5dCl8MCkrTWF0aC5pbXVsKGNlLFR0KXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHl0KXwwKSsocD4+PjEzKXwwKSsoaHI+Pj4yNil8MCxo''@;'; put 'put ''ciY9NjcxMDg4NjMsXz1NYXRoLmltdWwoa2UsYm4pLHA9KHA9TWF0aC5pbXVsKGtlLEJ0KSkrTWF0aC5pbXVsKEFlLGJuKXwwLHc9TWF0aC5pbXVsKEFlLEJ0KSxfPV8rTWF0aC5pbXVsKHR0LE5uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsbm4pfDApK01hdGguaW11bChaZSxObil8MCx3PXcr''@;'; put 'put ''TWF0aC5pbXVsKFplLG5uKXwwLF89XytNYXRoLmltdWwoRWUsWW4pfDAscD0ocD1wK01hdGguaW11bChFZSxmdCl8MCkrTWF0aC5pbXVsKEllLFluKXwwLHc9dytNYXRoLmltdWwoSWUsZnQpfDAsXz1fK01hdGguaW11bChvdCxobil8MCxwPShwPXArTWF0aC5pbXVsKG90LHd0KXwwKStNYXRo''@;'; put 'put ''LmltdWwoRmUsaG4pfDAsdz13K01hdGguaW11bChGZSx3dCl8MCxfPV8rTWF0aC5pbXVsKEdlLG10KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UsSHQpfDApK01hdGguaW11bChVZSxtdCl8MCx3PXcrTWF0aC5pbXVsKFVlLEh0KXwwLF89XytNYXRoLmltdWwoeGUsbnQpfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bCh4ZSxFdCl8MCkrTWF0aC5pbXVsKERlLG50KXwwLHc9dytNYXRoLmltdWwoRGUsRXQpfDAsXz1fK01hdGguaW11bChTZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKFNlLHl0KXwwKStNYXRoLmltdWwoTGUsVHQpfDAsdz13K01hdGguaW11bChMZSx5dCl8MDt2YXIgZGk9KGsrKF89XytN''@;'; put 'put ''YXRoLmltdWwodGUseG4pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSx6dCl8MCkrTWF0aC5pbXVsKGNlLHhuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLHp0KXwwKSsocD4+PjEzKXwwKSsoZGk+Pj4yNil8MCxkaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoaXQs''@;'; put 'put ''Ym4pLHA9KHA9TWF0aC5pbXVsKGl0LEJ0KSkrTWF0aC5pbXVsKHN0LGJuKXwwLHc9TWF0aC5pbXVsKHN0LEJ0KSxfPV8rTWF0aC5pbXVsKGtlLE5uKXwwLHA9KHA9cCtNYXRoLmltdWwoa2Usbm4pfDApK01hdGguaW11bChBZSxObil8MCx3PXcrTWF0aC5pbXVsKEFlLG5uKXwwLF89XytNYXRo''@;'; put 'put ''LmltdWwodHQsWW4pfDAscD0ocD1wK01hdGguaW11bCh0dCxmdCl8MCkrTWF0aC5pbXVsKFplLFluKXwwLHc9dytNYXRoLmltdWwoWmUsZnQpfDAsXz1fK01hdGguaW11bChFZSxobil8MCxwPShwPXArTWF0aC5pbXVsKEVlLHd0KXwwKStNYXRoLmltdWwoSWUsaG4pfDAsdz13K01hdGguaW11''@;'; put 'put ''bChJZSx3dCl8MCxfPV8rTWF0aC5pbXVsKG90LG10KXwwLHA9KHA9cCtNYXRoLmltdWwob3QsSHQpfDApK01hdGguaW11bChGZSxtdCl8MCx3PXcrTWF0aC5pbXVsKEZlLEh0KXwwLF89XytNYXRoLmltdWwoR2UsbnQpfDAscD0ocD1wK01hdGguaW11bChHZSxFdCl8MCkrTWF0aC5pbXVsKFVl''@;'; put 'put ''LG50KXwwLHc9dytNYXRoLmltdWwoVWUsRXQpfDAsXz1fK01hdGguaW11bCh4ZSxUdCl8MCxwPShwPXArTWF0aC5pbXVsKHhlLHl0KXwwKStNYXRoLmltdWwoRGUsVHQpfDAsdz13K01hdGguaW11bChEZSx5dCl8MCxfPV8rTWF0aC5pbXVsKFNlLHhuKXwwLHA9KHA9cCtNYXRoLmltdWwoU2Us''@;'; put 'put ''enQpfDApK01hdGguaW11bChMZSx4bil8MCx3PXcrTWF0aC5pbXVsKExlLHp0KXwwO3ZhciBmaT0oaysoXz1fK01hdGguaW11bCh0ZSxPbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHRlLHJuKXwwKStNYXRoLmltdWwoY2UsT24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmlt''@;'; put 'put ''dWwoY2Uscm4pfDApKyhwPj4+MTMpfDApKyhmaT4+PjI2KXwwLGZpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxibikscD0ocD1NYXRoLmltdWwoRnQsQnQpKStNYXRoLmltdWwoT3QsYm4pfDAsdz1NYXRoLmltdWwoT3QsQnQpLF89XytNYXRoLmltdWwoaXQsTm4pfDAscD0ocD1wK01hdGgu''@;'; put 'put ''aW11bChpdCxubil8MCkrTWF0aC5pbXVsKHN0LE5uKXwwLHc9dytNYXRoLmltdWwoc3Qsbm4pfDAsXz1fK01hdGguaW11bChrZSxZbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLGZ0KXwwKStNYXRoLmltdWwoQWUsWW4pfDAsdz13K01hdGguaW11bChBZSxmdCl8MCxfPV8rTWF0aC5pbXVsKHR0''@;'; put 'put ''LGhuKXwwLHA9KHA9cCtNYXRoLmltdWwodHQsd3QpfDApK01hdGguaW11bChaZSxobil8MCx3PXcrTWF0aC5pbXVsKFplLHd0KXwwLF89XytNYXRoLmltdWwoRWUsbXQpfDAscD0ocD1wK01hdGguaW11bChFZSxIdCl8MCkrTWF0aC5pbXVsKEllLG10KXwwLHc9dytNYXRoLmltdWwoSWUsSHQp''@;'; put 'put ''fDAsXz1fK01hdGguaW11bChvdCxudCl8MCxwPShwPXArTWF0aC5pbXVsKG90LEV0KXwwKStNYXRoLmltdWwoRmUsbnQpfDAsdz13K01hdGguaW11bChGZSxFdCl8MCxfPV8rTWF0aC5pbXVsKEdlLFR0KXwwLHA9KHA9cCtNYXRoLmltdWwoR2UseXQpfDApK01hdGguaW11bChVZSxUdCl8MCx3''@;'; put 'put ''PXcrTWF0aC5pbXVsKFVlLHl0KXwwLF89XytNYXRoLmltdWwoeGUseG4pfDAscD0ocD1wK01hdGguaW11bCh4ZSx6dCl8MCkrTWF0aC5pbXVsKERlLHhuKXwwLHc9dytNYXRoLmltdWwoRGUsenQpfDAsXz1fK01hdGguaW11bChTZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKFNlLHJuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoTGUsT24pfDAsdz13K01hdGguaW11bChMZSxybil8MDt2YXIgaG89KGsrKF89XytNYXRoLmltdWwodGUsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0ZSxYdCl8MCkrTWF0aC5pbXVsKGNlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKGNlLFh0''@;'; put 'put ''KXwwKSsocD4+PjEzKXwwKSsoaG8+Pj4yNil8MCxobyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsTm4pLHA9KHA9TWF0aC5pbXVsKEZ0LG5uKSkrTWF0aC5pbXVsKE90LE5uKXwwLHc9TWF0aC5pbXVsKE90LG5uKSxfPV8rTWF0aC5pbXVsKGl0LFluKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQs''@;'; put 'put ''ZnQpfDApK01hdGguaW11bChzdCxZbil8MCx3PXcrTWF0aC5pbXVsKHN0LGZ0KXwwLF89XytNYXRoLmltdWwoa2UsaG4pfDAscD0ocD1wK01hdGguaW11bChrZSx3dCl8MCkrTWF0aC5pbXVsKEFlLGhuKXwwLHc9dytNYXRoLmltdWwoQWUsd3QpfDAsXz1fK01hdGguaW11bCh0dCxtdCl8MCxw''@;'; put 'put ''PShwPXArTWF0aC5pbXVsKHR0LEh0KXwwKStNYXRoLmltdWwoWmUsbXQpfDAsdz13K01hdGguaW11bChaZSxIdCl8MCxfPV8rTWF0aC5pbXVsKEVlLG50KXwwLHA9KHA9cCtNYXRoLmltdWwoRWUsRXQpfDApK01hdGguaW11bChJZSxudCl8MCx3PXcrTWF0aC5pbXVsKEllLEV0KXwwLF89XytN''@;'; put 'put ''YXRoLmltdWwob3QsVHQpfDAscD0ocD1wK01hdGguaW11bChvdCx5dCl8MCkrTWF0aC5pbXVsKEZlLFR0KXwwLHc9dytNYXRoLmltdWwoRmUseXQpfDAsXz1fK01hdGguaW11bChHZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKEdlLHp0KXwwKStNYXRoLmltdWwoVWUseG4pfDAsdz13K01hdGgu''@;'; put 'put ''aW11bChVZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHhlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoeGUscm4pfDApK01hdGguaW11bChEZSxPbil8MCx3PXcrTWF0aC5pbXVsKERlLHJuKXwwO3ZhciBicj0oaysoXz1fK01hdGguaW11bChTZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKFNlLFh0KXwwKStNYXRoLmltdWwoTGUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoTGUsWHQpfDApKyhwPj4+MTMpfDApKyhicj4+PjI2KXwwLGJyJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxZbikscD0ocD1NYXRoLmltdWwoRnQsZnQpKStNYXRoLmltdWwoT3QsWW4p''@;'; put 'put ''fDAsdz1NYXRoLmltdWwoT3QsZnQpLF89XytNYXRoLmltdWwoaXQsaG4pfDAscD0ocD1wK01hdGguaW11bChpdCx3dCl8MCkrTWF0aC5pbXVsKHN0LGhuKXwwLHc9dytNYXRoLmltdWwoc3Qsd3QpfDAsXz1fK01hdGguaW11bChrZSxtdCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEh0KXwwKStN''@;'; put 'put ''YXRoLmltdWwoQWUsbXQpfDAsdz13K01hdGguaW11bChBZSxIdCl8MCxfPV8rTWF0aC5pbXVsKHR0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwodHQsRXQpfDApK01hdGguaW11bChaZSxudCl8MCx3PXcrTWF0aC5pbXVsKFplLEV0KXwwLF89XytNYXRoLmltdWwoRWUsVHQpfDAscD0ocD1wK01h''@;'; put 'put ''dGguaW11bChFZSx5dCl8MCkrTWF0aC5pbXVsKEllLFR0KXwwLHc9dytNYXRoLmltdWwoSWUseXQpfDAsXz1fK01hdGguaW11bChvdCx4bil8MCxwPShwPXArTWF0aC5pbXVsKG90LHp0KXwwKStNYXRoLmltdWwoRmUseG4pfDAsdz13K01hdGguaW11bChGZSx6dCl8MCxfPV8rTWF0aC5pbXVs''@;'; put 'put ''KEdlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoR2Uscm4pfDApK01hdGguaW11bChVZSxPbil8MCx3PXcrTWF0aC5pbXVsKFVlLHJuKXwwO3ZhciBMaT0oaysoXz1fK01hdGguaW11bCh4ZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKHhlLFh0KXwwKStNYXRoLmltdWwoRGUs''@;'; put 'put ''Q24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRGUsWHQpfDApKyhwPj4+MTMpfDApKyhMaT4+PjI2KXwwLExpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxobikscD0ocD1NYXRoLmltdWwoRnQsd3QpKStNYXRoLmltdWwoT3QsaG4pfDAsdz1NYXRoLmltdWwoT3Qsd3QpLF89XytN''@;'; put 'put ''YXRoLmltdWwoaXQsbXQpfDAscD0ocD1wK01hdGguaW11bChpdCxIdCl8MCkrTWF0aC5pbXVsKHN0LG10KXwwLHc9dytNYXRoLmltdWwoc3QsSHQpfDAsXz1fK01hdGguaW11bChrZSxudCl8MCxwPShwPXArTWF0aC5pbXVsKGtlLEV0KXwwKStNYXRoLmltdWwoQWUsbnQpfDAsdz13K01hdGgu''@;'; put 'put ''aW11bChBZSxFdCl8MCxfPV8rTWF0aC5pbXVsKHR0LFR0KXwwLHA9KHA9cCtNYXRoLmltdWwodHQseXQpfDApK01hdGguaW11bChaZSxUdCl8MCx3PXcrTWF0aC5pbXVsKFplLHl0KXwwLF89XytNYXRoLmltdWwoRWUseG4pfDAscD0ocD1wK01hdGguaW11bChFZSx6dCl8MCkrTWF0aC5pbXVs''@;'; put 'put ''KEllLHhuKXwwLHc9dytNYXRoLmltdWwoSWUsenQpfDAsXz1fK01hdGguaW11bChvdCxPbil8MCxwPShwPXArTWF0aC5pbXVsKG90LHJuKXwwKStNYXRoLmltdWwoRmUsT24pfDAsdz13K01hdGguaW11bChGZSxybil8MDt2YXIgbG89KGsrKF89XytNYXRoLmltdWwoR2UsQ24pfDApfDApKygo''@;'; put 'put ''ODE5MSYocD0ocD1wK01hdGguaW11bChHZSxYdCl8MCkrTWF0aC5pbXVsKFVlLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKFVlLFh0KXwwKSsocD4+PjEzKXwwKSsobG8+Pj4yNil8MCxsbyY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQsbXQpLHA9KHA9TWF0aC5pbXVsKEZ0LEh0''@;'; put 'put ''KSkrTWF0aC5pbXVsKE90LG10KXwwLHc9TWF0aC5pbXVsKE90LEh0KSxfPV8rTWF0aC5pbXVsKGl0LG50KXwwLHA9KHA9cCtNYXRoLmltdWwoaXQsRXQpfDApK01hdGguaW11bChzdCxudCl8MCx3PXcrTWF0aC5pbXVsKHN0LEV0KXwwLF89XytNYXRoLmltdWwoa2UsVHQpfDAscD0ocD1wK01h''@;'; put 'put ''dGguaW11bChrZSx5dCl8MCkrTWF0aC5pbXVsKEFlLFR0KXwwLHc9dytNYXRoLmltdWwoQWUseXQpfDAsXz1fK01hdGguaW11bCh0dCx4bil8MCxwPShwPXArTWF0aC5pbXVsKHR0LHp0KXwwKStNYXRoLmltdWwoWmUseG4pfDAsdz13K01hdGguaW11bChaZSx6dCl8MCxfPV8rTWF0aC5pbXVs''@;'; put 'put ''KEVlLE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoRWUscm4pfDApK01hdGguaW11bChJZSxPbil8MCx3PXcrTWF0aC5pbXVsKEllLHJuKXwwO3ZhciBVbj0oaysoXz1fK01hdGguaW11bChvdCxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKG90LFh0KXwwKStNYXRoLmltdWwoRmUs''@;'; put 'put ''Q24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoRmUsWHQpfDApKyhwPj4+MTMpfDApKyhVbj4+PjI2KXwwLFVuJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxudCkscD0ocD1NYXRoLmltdWwoRnQsRXQpKStNYXRoLmltdWwoT3QsbnQpfDAsdz1NYXRoLmltdWwoT3QsRXQpLF89XytN''@;'; put 'put ''YXRoLmltdWwoaXQsVHQpfDAscD0ocD1wK01hdGguaW11bChpdCx5dCl8MCkrTWF0aC5pbXVsKHN0LFR0KXwwLHc9dytNYXRoLmltdWwoc3QseXQpfDAsXz1fK01hdGguaW11bChrZSx4bil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHp0KXwwKStNYXRoLmltdWwoQWUseG4pfDAsdz13K01hdGgu''@;'; put 'put ''aW11bChBZSx6dCl8MCxfPV8rTWF0aC5pbXVsKHR0LE9uKXwwLHA9KHA9cCtNYXRoLmltdWwodHQscm4pfDApK01hdGguaW11bChaZSxPbil8MCx3PXcrTWF0aC5pbXVsKFplLHJuKXwwO3ZhciBYaT0oaysoXz1fK01hdGguaW11bChFZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5p''@;'; put 'put ''bXVsKEVlLFh0KXwwKStNYXRoLmltdWwoSWUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoSWUsWHQpfDApKyhwPj4+MTMpfDApKyhYaT4+PjI2KXwwLFhpJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxUdCkscD0ocD1NYXRoLmltdWwoRnQseXQpKStNYXRoLmltdWwoT3QsVHQp''@;'; put 'put ''fDAsdz1NYXRoLmltdWwoT3QseXQpLF89XytNYXRoLmltdWwoaXQseG4pfDAscD0ocD1wK01hdGguaW11bChpdCx6dCl8MCkrTWF0aC5pbXVsKHN0LHhuKXwwLHc9dytNYXRoLmltdWwoc3QsenQpfDAsXz1fK01hdGguaW11bChrZSxPbil8MCxwPShwPXArTWF0aC5pbXVsKGtlLHJuKXwwKStN''@;'; put 'put ''YXRoLmltdWwoQWUsT24pfDAsdz13K01hdGguaW11bChBZSxybil8MDt2YXIgUWk9KGsrKF89XytNYXRoLmltdWwodHQsQ24pfDApfDApKygoODE5MSYocD0ocD1wK01hdGguaW11bCh0dCxYdCl8MCkrTWF0aC5pbXVsKFplLENuKXwwKSk8PDEzKXwwO2s9KCh3PXcrTWF0aC5pbXVsKFplLFh0''@;'; put 'put ''KXwwKSsocD4+PjEzKXwwKSsoUWk+Pj4yNil8MCxRaSY9NjcxMDg4NjMsXz1NYXRoLmltdWwoRnQseG4pLHA9KHA9TWF0aC5pbXVsKEZ0LHp0KSkrTWF0aC5pbXVsKE90LHhuKXwwLHc9TWF0aC5pbXVsKE90LHp0KSxfPV8rTWF0aC5pbXVsKGl0LE9uKXwwLHA9KHA9cCtNYXRoLmltdWwoaXQs''@;'; put 'put ''cm4pfDApK01hdGguaW11bChzdCxPbil8MCx3PXcrTWF0aC5pbXVsKHN0LHJuKXwwO3ZhciBmbz0oaysoXz1fK01hdGguaW11bChrZSxDbil8MCl8MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGtlLFh0KXwwKStNYXRoLmltdWwoQWUsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmlt''@;'; put 'put ''dWwoQWUsWHQpfDApKyhwPj4+MTMpfDApKyhmbz4+PjI2KXwwLGZvJj02NzEwODg2MyxfPU1hdGguaW11bChGdCxPbikscD0ocD1NYXRoLmltdWwoRnQscm4pKStNYXRoLmltdWwoT3QsT24pfDAsdz1NYXRoLmltdWwoT3Qscm4pO3ZhciB2bz0oaysoXz1fK01hdGguaW11bChpdCxDbil8MCl8''@;'; put 'put ''MCkrKCg4MTkxJihwPShwPXArTWF0aC5pbXVsKGl0LFh0KXwwKStNYXRoLmltdWwoc3QsQ24pfDApKTw8MTMpfDA7az0oKHc9dytNYXRoLmltdWwoc3QsWHQpfDApKyhwPj4+MTMpfDApKyh2bz4+PjI2KXwwLHZvJj02NzEwODg2Mzt2YXIgUnI9KGsrKF89TWF0aC5pbXVsKEZ0LENuKSl8MCkr''@;'; put 'put ''KCg4MTkxJihwPShwPU1hdGguaW11bChGdCxYdCkpK01hdGguaW11bChPdCxDbil8MCkpPDwxMyl8MDtyZXR1cm4gaz0oKHc9TWF0aC5pbXVsKE90LFh0KSkrKHA+Pj4xMyl8MCkrKFJyPj4+MjYpfDAsUnImPTY3MTA4ODYzLENbMF09Sm4sQ1sxXT14aSxDWzJdPWFuLENbM109dG4sQ1s0XT11''@;'; put 'put ''aSxDWzVdPUFyLENbNl09aHIsQ1s3XT1kaSxDWzhdPWZpLENbOV09aG8sQ1sxMF09YnIsQ1sxMV09TGksQ1sxMl09bG8sQ1sxM109VW4sQ1sxNF09WGksQ1sxNV09UWksQ1sxNl09Zm8sQ1sxN109dm8sQ1sxOF09UnIsMCE9PWsmJihDWzE5XT1rLEYubGVuZ3RoKyspLEZ9O2Z1bmN0aW9uIFko''@;'; put 'put ''VyxiLEEpe3JldHVybihuZXcgVSkubXVscChXLGIsQSl9ZnVuY3Rpb24gVShXLGIpe3RoaXMueD1XLHRoaXMueT1ifU1hdGguaW11bHx8KEI9TiksTS5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRoaXMubGVuZ3RoK2IubGVuZ3RoO3JldHVybiBGPTEwPT09dGhpcy5s''@;'; put 'put ''ZW5ndGgmJjEwPT09Yi5sZW5ndGg/Qih0aGlzLGIsQSk6SDw2Mz9OKHRoaXMsYixBKTpIPDEwMjQ/ZnVuY3Rpb24gWihXLGIsQSl7QS5uZWdhdGl2ZT1iLm5lZ2F0aXZlXlcubmVnYXRpdmUsQS5sZW5ndGg9Vy5sZW5ndGgrYi5sZW5ndGg7Zm9yKHZhciBGPTAsSD0wLGc9MDtnPEEubGVuZ3Ro''@;'; put 'put ''LTE7ZysrKXt2YXIgQz1IO0g9MDtmb3IodmFyIGs9NjcxMDg4NjMmRixfPU1hdGgubWluKGcsYi5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGctVy5sZW5ndGgrMSk7cDw9XztwKyspe3ZhciBjZT0oMHxXLndvcmRzW2ctcF0pKigwfGIud29yZHNbcF0pLGhlPTY3MTA4ODYzJmNlO2s9NjcxMDg4''@;'; put 'put ''NjMmKGhlPWhlK2t8MCksSCs9KEM9KEM9QysoY2UvNjcxMDg4NjR8MCl8MCkrKGhlPj4+MjYpfDApPj4+MjYsQyY9NjcxMDg4NjN9QS53b3Jkc1tnXT1rLEY9QyxDPUh9cmV0dXJuIDAhPT1GP0Eud29yZHNbZ109RjpBLmxlbmd0aC0tLEEuc3RyaXAoKX0odGhpcyxiLEEpOlkodGhpcyxiLEEp''@;'; put 'put ''LEZ9LFUucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oYil7Zm9yKHZhciBBPW5ldyBBcnJheShiKSxGPU0ucHJvdG90eXBlLl9jb3VudEJpdHMoYiktMSxIPTA7SDxiO0grKylBW0hdPXRoaXMucmV2QmluKEgsRixiKTtyZXR1cm4gQX0sVS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGIs''@;'; put 'put ''QSxGKXtpZigwPT09Ynx8Yj09PUYtMSlyZXR1cm4gYjtmb3IodmFyIEg9MCxnPTA7ZzxBO2crKylIfD0oMSZiKTw8QS1nLTEsYj4+PTE7cmV0dXJuIEh9LFUucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oYixBLEYsSCxnLEMpe2Zvcih2YXIgaz0wO2s8QztrKyspSFtrXT1BW2Jba11dLGdb''@;'; put 'put ''a109RltiW2tdXX0sVS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGIsQSxGLEgsZyxDKXt0aGlzLnBlcm11dGUoQyxiLEEsRixILGcpO2Zvcih2YXIgaz0xO2s8ZztrPDw9MSlmb3IodmFyIF89azw8MSxwPU1hdGguY29zKDIqTWF0aC5QSS9fKSx3PU1hdGguc2luKDIqTWF0aC5QSS9f''@;'; put 'put ''KSxLPTA7SzxnO0srPV8pZm9yKHZhciB0ZT1wLGNlPXcsaGU9MDtoZTxrO2hlKyspe3ZhciBTZT1GW0sraGVdLExlPUhbSytoZV0sSGU9RltLK2hlK2tdLHhlPUhbSytoZStrXSxEZT10ZSpIZS1jZSp4ZTt4ZT10ZSp4ZStjZSpIZSxGW0sraGVdPVNlKyhIZT1EZSksSFtLK2hlXT1MZSt4ZSxG''@;'; put 'put ''W0sraGUra109U2UtSGUsSFtLK2hlK2tdPUxlLXhlLGhlIT09XyYmKERlPXAqdGUtdypjZSxjZT1wKmNlK3cqdGUsdGU9RGUpfX0sVS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oYixBKXt2YXIgRj0xfE1hdGgubWF4KEEsYiksSD0xJkYsZz0wO2ZvcihGPUYvMnwwO0Y7Rj4+Pj0x''@;'; put 'put ''KWcrKztyZXR1cm4gMTw8ZysxK0h9LFUucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihiLEEsRil7aWYoIShGPD0xKSlmb3IodmFyIEg9MDtIPEYvMjtIKyspe3ZhciBnPWJbSF07YltIXT1iW0YtSC0xXSxiW0YtSC0xXT1nLGc9QVtIXSxBW0hdPS1BW0YtSC0xXSxBW0YtSC0xXT0tZ319''@;'; put 'put ''LFUucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj0wLEg9MDtIPEEvMjtIKyspe3ZhciBnPTgxOTIqTWF0aC5yb3VuZChiWzIqSCsxXS9BKStNYXRoLnJvdW5kKGJbMipIXS9BKStGO2JbSF09NjcxMDg4NjMmZyxGPWc8NjcxMDg4NjQ/MDpnLzY3MTA4ODY0''@;'; put 'put ''fDB9cmV0dXJuIGJ9LFUucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oYixBLEYsSCl7Zm9yKHZhciBnPTAsQz0wO0M8QTtDKyspRlsyKkNdPTgxOTEmKGcrPTB8YltDXSksRlsyKkMrMV09ODE5MSYoZz4+Pj0xMyksZz4+Pj0xMztmb3IoQz0yKkE7QzxIOysrQylGW0NdPTA7bSgwPT09''@;'; put 'put ''ZyksbSghKC04MTkyJmcpKX0sVS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihiKXtmb3IodmFyIEE9bmV3IEFycmF5KGIpLEY9MDtGPGI7RisrKUFbRl09MDtyZXR1cm4gQX0sVS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihiLEEsRil7dmFyIEg9Mip0aGlzLmd1ZXNzTGVuMTNiKGIubGVuZ3Ro''@;'; put 'put ''LEEubGVuZ3RoKSxnPXRoaXMubWFrZVJCVChIKSxDPXRoaXMuc3R1YihIKSxrPW5ldyBBcnJheShIKSxfPW5ldyBBcnJheShIKSxwPW5ldyBBcnJheShIKSx3PW5ldyBBcnJheShIKSxLPW5ldyBBcnJheShIKSx0ZT1uZXcgQXJyYXkoSCksY2U9Ri53b3JkcztjZS5sZW5ndGg9SCx0aGlzLmNv''@;'; put 'put ''bnZlcnQxM2IoYi53b3JkcyxiLmxlbmd0aCxrLEgpLHRoaXMuY29udmVydDEzYihBLndvcmRzLEEubGVuZ3RoLHcsSCksdGhpcy50cmFuc2Zvcm0oayxDLF8scCxILGcpLHRoaXMudHJhbnNmb3JtKHcsQyxLLHRlLEgsZyk7Zm9yKHZhciBoZT0wO2hlPEg7aGUrKyl7dmFyIFNlPV9baGVdKktb''@;'; put 'put ''aGVdLXBbaGVdKnRlW2hlXTtwW2hlXT1fW2hlXSp0ZVtoZV0rcFtoZV0qS1toZV0sX1toZV09U2V9cmV0dXJuIHRoaXMuY29uanVnYXRlKF8scCxIKSx0aGlzLnRyYW5zZm9ybShfLHAsY2UsQyxILGcpLHRoaXMuY29uanVnYXRlKGNlLEMsSCksdGhpcy5ub3JtYWxpemUxM2IoY2UsSCksRi5u''@;'; put 'put ''ZWdhdGl2ZT1iLm5lZ2F0aXZlXkEubmVnYXRpdmUsRi5sZW5ndGg9Yi5sZW5ndGgrQS5sZW5ndGgsRi5zdHJpcCgpfSxNLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYil7dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSx0aGlz''@;'; put 'put ''Lm11bFRvKGIsQSl9LE0ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oYil7dmFyIEE9bmV3IE0obnVsbCk7cmV0dXJuIEEud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2IubGVuZ3RoKSxZKHRoaXMsYixBKX0sTS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9u''@;'; put 'put ''ZSgpLm11bFRvKGIsdGhpcyl9LE0ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiKSxtKGI8NjcxMDg4NjQpO2Zvcih2YXIgQT0wLEY9MDtGPHRoaXMubGVuZ3RoO0YrKyl7dmFyIEg9KDB8dGhpcy53b3Jkc1tGXSkqYixnPSg2NzEwODg2MyZIKSsoNjcx''@;'; put 'put ''MDg4NjMmQSk7QT4+PTI2LEErPUgvNjcxMDg4NjR8MCxBKz1nPj4+MjYsdGhpcy53b3Jkc1tGXT02NzEwODg2MyZnfXJldHVybiAwIT09QSYmKHRoaXMud29yZHNbRl09QSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNsb25l''@;'; put 'put ''KCkuaW11bG4oYil9LE0ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sTS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sTS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKGIpe3ZhciBBPWZ1bmN0aW9u''@;'; put 'put ''IHooVyl7Zm9yKHZhciBiPW5ldyBBcnJheShXLmJpdExlbmd0aCgpKSxBPTA7QTxiLmxlbmd0aDtBKyspe3ZhciBIPUElMjY7YltBXT0oVy53b3Jkc1tBLzI2fDBdJjE8PEgpPj4+SH1yZXR1cm4gYn0oYik7aWYoMD09PUEubGVuZ3RoKXJldHVybiBuZXcgTSgxKTtmb3IodmFyIEY9dGhpcyxI''@;'; put 'put ''PTA7SDxBLmxlbmd0aCYmMD09PUFbSF07SCsrLEY9Ri5zcXIoKSk7aWYoKytIPEEubGVuZ3RoKWZvcih2YXIgZz1GLnNxcigpO0g8QS5sZW5ndGg7SCsrLGc9Zy5zcXIoKSkwIT09QVtIXSYmKEY9Ri5tdWwoZykpO3JldHVybiBGfSxNLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24oYil7bSgi''@;'; put 'put ''bnVtYmVyIj09dHlwZW9mIGImJmI+PTApO3ZhciBnLEE9YiUyNixGPShiLUEpLzI2LEg9NjcxMDg4NjM+Pj4yNi1BPDwyNi1BO2lmKDAhPT1BKXt2YXIgQz0wO2ZvcihnPTA7Zzx0aGlzLmxlbmd0aDtnKyspe3ZhciBrPXRoaXMud29yZHNbZ10mSDt0aGlzLndvcmRzW2ddPSgwfHRoaXMud29y''@;'; put 'put ''ZHNbZ10pLWs8PEF8QyxDPWs+Pj4yNi1BfUMmJih0aGlzLndvcmRzW2ddPUMsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PUYpe2ZvcihnPXRoaXMubGVuZ3RoLTE7Zz49MDtnLS0pdGhpcy53b3Jkc1tnK0ZdPXRoaXMud29yZHNbZ107Zm9yKGc9MDtnPEY7ZysrKXRoaXMud29yZHNbZ109MDt0aGlz''@;'; put 'put ''Lmxlbmd0aCs9Rn1yZXR1cm4gdGhpcy5zdHJpcCgpfSxNLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4oYil9LE0ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbihiLEEsRil7dmFyIEg7bSgibnVtYmVyIj09dHlwZW9m''@;'; put 'put ''IGImJmI+PTApLEg9QT8oQS1BJTI2KS8yNjowO3ZhciBnPWIlMjYsQz1NYXRoLm1pbigoYi1nKS8yNix0aGlzLmxlbmd0aCksaz02NzEwODg2M142NzEwODg2Mz4+Pmc8PGcsXz1GO2lmKEgtPUMsSD1NYXRoLm1heCgwLEgpLF8pe2Zvcih2YXIgcD0wO3A8QztwKyspXy53b3Jkc1twXT10aGlz''@;'; put 'put ''LndvcmRzW3BdO18ubGVuZ3RoPUN9aWYoMCE9PUMpaWYodGhpcy5sZW5ndGg+Qylmb3IodGhpcy5sZW5ndGgtPUMscD0wO3A8dGhpcy5sZW5ndGg7cCsrKXRoaXMud29yZHNbcF09dGhpcy53b3Jkc1twK0NdO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTE7dmFyIHc9MDtmb3Io''@;'; put 'put ''cD10aGlzLmxlbmd0aC0xO3A+PTAmJigwIT09d3x8cD49SCk7cC0tKXt2YXIgSz0wfHRoaXMud29yZHNbcF07dGhpcy53b3Jkc1twXT13PDwyNi1nfEs+Pj5nLHc9SyZrfXJldHVybiBfJiYwIT09dyYmKF8ud29yZHNbXy5sZW5ndGgrK109dyksMD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jk''@;'; put 'put ''c1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24oYixBLEYpe3JldHVybiBtKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybihiLEEsRil9LE0ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUo''@;'; put 'put ''KS5pc2hsbihiKX0sTS5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYil9LE0ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiKX0sTS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24oYil7cmV0''@;'; put 'put ''dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYil9LE0ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2LEY9KGItQSkvMjY7cmV0dXJuISh0aGlzLmxlbmd0aDw9Rnx8ISh0aGlzLndvcmRzW0ZdJjE8PEEpKX0sTS5wcm90b3R5''@;'; put 'put ''cGUuaW1hc2tuPWZ1bmN0aW9uKGIpe20oIm51bWJlciI9PXR5cGVvZiBiJiZiPj0wKTt2YXIgQT1iJTI2LEY9KGItQSkvMjY7cmV0dXJuIG0oMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1GP3RoaXM6KDAh''@;'; put 'put ''PT1BJiZGKyssdGhpcy5sZW5ndGg9TWF0aC5taW4oRix0aGlzLmxlbmd0aCksMCE9PUEmJih0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj02NzEwODg2M142NzEwODg2Mz4+PkE8PEEpLHRoaXMuc3RyaXAoKSl9LE0ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNs''@;'; put 'put ''b25lKCkuaW1hc2tuKGIpfSxNLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihiKXtyZXR1cm4gbSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCksYjwwP3RoaXMuaXN1Ym4oLWIpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8Yj8o''@;'; put 'put ''dGhpcy53b3Jkc1swXT1iLSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKGIpfSxNLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24oYil7dGhpcy53b3Jk''@;'; put 'put ''c1swXSs9Yjtmb3IodmFyIEE9MDtBPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW0FdPj02NzEwODg2NDtBKyspdGhpcy53b3Jkc1tBXS09NjcxMDg4NjQsQT09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tBKzFdPTE6dGhpcy53b3Jkc1tBKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgu''@;'; put 'put ''bWF4KHRoaXMubGVuZ3RoLEErMSksdGhpc30sTS5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24oYil7aWYobSgibnVtYmVyIj09dHlwZW9mIGIpLG0oYjw2NzEwODg2NCksYjwwKXJldHVybiB0aGlzLmlhZGRuKC1iKTtpZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0w''@;'; put 'put ''LHRoaXMuaWFkZG4oYiksdGhpcy5uZWdhdGl2ZT0xLHRoaXM7aWYodGhpcy53b3Jkc1swXS09YiwxPT09dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbMF08MCl0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdLHRoaXMubmVnYXRpdmU9MTtlbHNlIGZvcih2YXIgQT0wO0E8dGhpcy5sZW5ndGgm''@;'; put 'put ''JnRoaXMud29yZHNbQV08MDtBKyspdGhpcy53b3Jkc1tBXSs9NjcxMDg4NjQsdGhpcy53b3Jkc1tBKzFdLT0xO3JldHVybiB0aGlzLnN0cmlwKCl9LE0ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihiKX0sTS5wcm90b3R5cGUuc3Vibj1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGIpfSxNLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzfSxNLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX0sTS5wcm90b3R5cGUuX2lz''@;'; put 'put ''aGxuc3VibXVsPWZ1bmN0aW9uKGIsQSxGKXt2YXIgZzt0aGlzLl9leHBhbmQoYi5sZW5ndGgrRik7dmFyIEMsaz0wO2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspe0M9KDB8dGhpcy53b3Jkc1tnK0ZdKStrO3ZhciBfPSgwfGIud29yZHNbZ10pKkE7az0oKEMtPTY3MTA4ODYzJl8pPj4yNiktKF8v''@;'; put 'put ''NjcxMDg4NjR8MCksdGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkN9Zm9yKDtnPHRoaXMubGVuZ3RoLUY7ZysrKWs9KEM9KDB8dGhpcy53b3Jkc1tnK0ZdKStrKT4+MjYsdGhpcy53b3Jkc1tnK0ZdPTY3MTA4ODYzJkM7aWYoMD09PWspcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IobSgtMT09PWsp''@;'; put 'put ''LGs9MCxnPTA7Zzx0aGlzLmxlbmd0aDtnKyspaz0oQz0tKDB8dGhpcy53b3Jkc1tnXSkrayk+PjI2LHRoaXMud29yZHNbZ109NjcxMDg4NjMmQztyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oYixBKXt2YXIgRixIPXRo''@;'; put 'put ''aXMuY2xvbmUoKSxnPWIsQz0wfGcud29yZHNbZy5sZW5ndGgtMV07MCE9KEY9MjYtdGhpcy5fY291bnRCaXRzKEMpKSYmKGc9Zy51c2hsbihGKSxILml1c2hsbihGKSxDPTB8Zy53b3Jkc1tnLmxlbmd0aC0xXSk7dmFyIHAsXz1ILmxlbmd0aC1nLmxlbmd0aDtpZigibW9kIiE9PUEpeyhwPW5l''@;'; put 'put ''dyBNKG51bGwpKS5sZW5ndGg9XysxLHAud29yZHM9bmV3IEFycmF5KHAubGVuZ3RoKTtmb3IodmFyIHc9MDt3PHAubGVuZ3RoO3crKylwLndvcmRzW3ddPTB9dmFyIEs9SC5jbG9uZSgpLl9pc2hsbnN1Ym11bChnLDEsXyk7MD09PUsubmVnYXRpdmUmJihIPUsscCYmKHAud29yZHNbX109MSkp''@;'; put 'put ''O2Zvcih2YXIgdGU9Xy0xO3RlPj0wO3RlLS0pe3ZhciBjZT02NzEwODg2NCooMHxILndvcmRzW2cubGVuZ3RoK3RlXSkrKDB8SC53b3Jkc1tnLmxlbmd0aCt0ZS0xXSk7Zm9yKGNlPU1hdGgubWluKGNlL0N8MCw2NzEwODg2MyksSC5faXNobG5zdWJtdWwoZyxjZSx0ZSk7MCE9PUgubmVnYXRp''@;'; put 'put ''dmU7KWNlLS0sSC5uZWdhdGl2ZT0wLEguX2lzaGxuc3VibXVsKGcsMSx0ZSksSC5pc1plcm8oKXx8KEgubmVnYXRpdmVePTEpO3AmJihwLndvcmRzW3RlXT1jZSl9cmV0dXJuIHAmJnAuc3RyaXAoKSxILnN0cmlwKCksImRpdiIhPT1BJiYwIT09RiYmSC5pdXNocm4oRikse2RpdjpwfHxudWxs''@;'; put 'put ''LG1vZDpIfX0sTS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKGIsQSxGKXtyZXR1cm4gbSghYi5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBNKDApLG1vZDpuZXcgTSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIs''@;'; put 'put ''QSksIm1vZCIhPT1BJiYoSD1DLmRpdi5uZWcoKSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2ZSYmZy5pYWRkKGIpKSx7ZGl2OkgsbW9kOmd9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PWIubmVnYXRpdmU/KEM9dGhpcy5kaXZtb2QoYi5uZWcoKSxBKSwibW9k''@;'; put 'put ''IiE9PUEmJihIPUMuZGl2Lm5lZygpKSx7ZGl2OkgsbW9kOkMubW9kfSk6dGhpcy5uZWdhdGl2ZSZiLm5lZ2F0aXZlPyhDPXRoaXMubmVnKCkuZGl2bW9kKGIubmVnKCksQSksImRpdiIhPT1BJiYoZz1DLm1vZC5uZWcoKSxGJiYwIT09Zy5uZWdhdGl2ZSYmZy5pc3ViKGIpKSx7ZGl2OkMuZGl2''@;'; put 'put ''LG1vZDpnfSk6Yi5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGIpPDA/e2RpdjpuZXcgTSgwKSxtb2Q6dGhpc306MT09PWIubGVuZ3RoPyJkaXYiPT09QT97ZGl2OnRoaXMuZGl2bihiLndvcmRzWzBdKSxtb2Q6bnVsbH06Im1vZCI9PT1BP3tkaXY6bnVsbCxtb2Q6bmV3IE0odGhpcy5t''@;'; put 'put ''b2RuKGIud29yZHNbMF0pKX06e2Rpdjp0aGlzLmRpdm4oYi53b3Jkc1swXSksbW9kOm5ldyBNKHRoaXMubW9kbihiLndvcmRzWzBdKSl9OnRoaXMuX3dvcmREaXYoYixBKTt2YXIgSCxnLEN9LE0ucHJvdG90eXBlLmRpdj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwiZGl2Iiwh''@;'; put 'put ''MSkuZGl2fSxNLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZGl2bW9kKGIsIm1vZCIsITEpLm1vZH0sTS5wcm90b3R5cGUudW1vZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kaXZtb2QoYiwibW9kIiwhMCkubW9kfSxNLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlv''@;'; put 'put ''bihiKXt2YXIgQT10aGlzLmRpdm1vZChiKTtpZihBLm1vZC5pc1plcm8oKSlyZXR1cm4gQS5kaXY7dmFyIEY9MCE9PUEuZGl2Lm5lZ2F0aXZlP0EubW9kLmlzdWIoYik6QS5tb2QsSD1iLnVzaHJuKDEpLGc9Yi5hbmRsbigxKSxDPUYuY21wKEgpO3JldHVybiBDPDB8fDE9PT1nJiYwPT09Qz9B''@;'; put 'put ''LmRpdjowIT09QS5kaXYubmVnYXRpdmU/QS5kaXYuaXN1Ym4oMSk6QS5kaXYuaWFkZG4oMSl9LE0ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2Myk7Zm9yKHZhciBBPSgxPDwyNiklYixGPTAsSD10aGlzLmxlbmd0aC0xO0g+PTA7SC0tKUY9KEEqRisoMHx0aGlzLndv''@;'; put 'put ''cmRzW0hdKSklYjtyZXR1cm4gRn0sTS5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24oYil7bShiPD02NzEwODg2Myk7Zm9yKHZhciBBPTAsRj10aGlzLmxlbmd0aC0xO0Y+PTA7Ri0tKXt2YXIgSD0oMHx0aGlzLndvcmRzW0ZdKSs2NzEwODg2NCpBO3RoaXMud29yZHNbRl09SC9ifDAsQT1IJWJ9''@;'; put 'put ''cmV0dXJuIHRoaXMuc3RyaXAoKX0sTS5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGIpfSxNLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUpLG0oIWIuaXNaZXJvKCkpO3ZhciBBPXRoaXMsRj1iLmNsb25lKCk7''@;'; put 'put ''QT0wIT09QS5uZWdhdGl2ZT9BLnVtb2QoYik6QS5jbG9uZSgpO2Zvcih2YXIgSD1uZXcgTSgxKSxnPW5ldyBNKDApLEM9bmV3IE0oMCksaz1uZXcgTSgxKSxfPTA7QS5pc0V2ZW4oKSYmRi5pc0V2ZW4oKTspQS5pdXNocm4oMSksRi5pdXNocm4oMSksKytfO2Zvcih2YXIgcD1GLmNsb25lKCks''@;'; put 'put ''dz1BLmNsb25lKCk7IUEuaXNaZXJvKCk7KXtmb3IodmFyIEs9MCx0ZT0xOyEoQS53b3Jkc1swXSZ0ZSkmJks8MjY7KytLLHRlPDw9MSk7aWYoSz4wKWZvcihBLml1c2hybihLKTtLLS0gPjA7KShILmlzT2RkKCl8fGcuaXNPZGQoKSkmJihILmlhZGQocCksZy5pc3ViKHcpKSxILml1c2hybigx''@;'; put 'put ''KSxnLml1c2hybigxKTtmb3IodmFyIGNlPTAsaGU9MTshKEYud29yZHNbMF0maGUpJiZjZTwyNjsrK2NlLGhlPDw9MSk7aWYoY2U+MClmb3IoRi5pdXNocm4oY2UpO2NlLS0gPjA7KShDLmlzT2RkKCl8fGsuaXNPZGQoKSkmJihDLmlhZGQocCksay5pc3ViKHcpKSxDLml1c2hybigxKSxrLml1''@;'; put 'put ''c2hybigxKTtBLmNtcChGKT49MD8oQS5pc3ViKEYpLEguaXN1YihDKSxnLmlzdWIoaykpOihGLmlzdWIoQSksQy5pc3ViKEgpLGsuaXN1YihnKSl9cmV0dXJue2E6QyxiOmssZ2NkOkYuaXVzaGxuKF8pfX0sTS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKGIpe20oMD09PWIubmVnYXRpdmUp''@;'; put 'put ''LG0oIWIuaXNaZXJvKCkpO3ZhciBLLEE9dGhpcyxGPWIuY2xvbmUoKTtBPTAhPT1BLm5lZ2F0aXZlP0EudW1vZChiKTpBLmNsb25lKCk7Zm9yKHZhciBIPW5ldyBNKDEpLGc9bmV3IE0oMCksQz1GLmNsb25lKCk7QS5jbXBuKDEpPjAmJkYuY21wbigxKT4wOyl7Zm9yKHZhciBrPTAsXz0xOyEo''@;'; put 'put ''QS53b3Jkc1swXSZfKSYmazwyNjsrK2ssXzw8PTEpO2lmKGs+MClmb3IoQS5pdXNocm4oayk7ay0tID4wOylILmlzT2RkKCkmJkguaWFkZChDKSxILml1c2hybigxKTtmb3IodmFyIHA9MCx3PTE7IShGLndvcmRzWzBdJncpJiZwPDI2OysrcCx3PDw9MSk7aWYocD4wKWZvcihGLml1c2hybihw''@;'; put 'put ''KTtwLS0gPjA7KWcuaXNPZGQoKSYmZy5pYWRkKEMpLGcuaXVzaHJuKDEpO0EuY21wKEYpPj0wPyhBLmlzdWIoRiksSC5pc3ViKGcpKTooRi5pc3ViKEEpLGcuaXN1YihIKSl9cmV0dXJuKEs9MD09PUEuY21wbigxKT9IOmcpLmNtcG4oMCk8MCYmSy5pYWRkKGIpLEt9LE0ucHJvdG90eXBlLmdj''@;'; put 'put ''ZD1mdW5jdGlvbihiKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBiLmFicygpO2lmKGIuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIEE9dGhpcy5jbG9uZSgpLEY9Yi5jbG9uZSgpO0EubmVnYXRpdmU9MCxGLm5lZ2F0aXZlPTA7Zm9yKHZhciBIPTA7QS5pc0V2ZW4oKSYmRi5pc0V2''@;'; put 'put ''ZW4oKTtIKyspQS5pdXNocm4oMSksRi5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO0EuaXNFdmVuKCk7KUEuaXVzaHJuKDEpO2Zvcig7Ri5pc0V2ZW4oKTspRi5pdXNocm4oMSk7dmFyIGc9QS5jbXAoRik7aWYoZzwwKXt2YXIgQz1BO0E9RixGPUN9ZWxzZSBpZigwPT09Z3x8MD09PUYuY21wbigx''@;'; put 'put ''KSlicmVhaztBLmlzdWIoRil9cmV0dXJuIEYuaXVzaGxuKEgpfSxNLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVnY2QoYikuYS51bW9kKGIpfSxNLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4hKDEmdGhpcy53b3Jkc1swXSl9LE0ucHJvdG90eXBl''@;'; put 'put ''LmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuISgxJn50aGlzLndvcmRzWzBdKX0sTS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud29yZHNbMF0mYn0sTS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oYil7bSgibnVtYmVyIj09dHlwZW9mIGIpO3ZhciBBPWIlMjYsRj0o''@;'; put 'put ''Yi1BKS8yNixIPTE8PEE7aWYodGhpcy5sZW5ndGg8PUYpcmV0dXJuIHRoaXMuX2V4cGFuZChGKzEpLHRoaXMud29yZHNbRl18PUgsdGhpcztmb3IodmFyIGc9SCxDPUY7MCE9PWcmJkM8dGhpcy5sZW5ndGg7QysrKXt2YXIgaz0wfHRoaXMud29yZHNbQ107Zz0oays9Zyk+Pj4yNix0aGlzLndv''@;'; put 'put ''cmRzW0NdPWsmPTY3MTA4ODYzfXJldHVybiAwIT09ZyYmKHRoaXMud29yZHNbQ109Zyx0aGlzLmxlbmd0aCsrKSx0aGlzfSxNLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sTS5wcm90b3R5cGUuY21wbj1mdW5j''@;'; put 'put ''dGlvbihiKXt2YXIgRixBPWI8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIUEpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJkEpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpRj0xO2Vsc2V7QSYmKGI9LWIpLG0oYjw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28g''@;'; put 'put ''YmlnIik7dmFyIEg9MHx0aGlzLndvcmRzWzBdO0Y9SD09PWI/MDpIPGI/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtRjpGfSxNLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oYil7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1iLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlz''@;'; put 'put ''Lm5lZ2F0aXZlJiYwIT09Yi5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgQT10aGlzLnVjbXAoYik7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LUE6QX0sTS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihiKXtpZih0aGlzLmxlbmd0aD5iLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxi''@;'; put 'put ''Lmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIEE9MCxGPXRoaXMubGVuZ3RoLTE7Rj49MDtGLS0pe3ZhciBIPTB8dGhpcy53b3Jkc1tGXSxnPTB8Yi53b3Jkc1tGXTtpZihIIT09Zyl7SDxnP0E9LTE6SD5nJiYoQT0xKTticmVha319cmV0dXJuIEF9LE0ucHJvdG90eXBlLmd0bj1mdW5jdGlvbihi''@;'; put 'put ''KXtyZXR1cm4gMT09PXRoaXMuY21wbihiKX0sTS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oYil7cmV0dXJuIDE9PT10aGlzLmNtcChiKX0sTS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5jbXBuKGIpPj0wfSxNLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IHRoaXMuY21wKGIpPj0wfSxNLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oYil7cmV0dXJuLTE9PT10aGlzLmNtcG4oYil9LE0ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGIpe3JldHVybi0xPT09dGhpcy5jbXAoYil9LE0ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuY21w''@;'; put 'put ''bihiKTw9MH0sTS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNtcChiKTw9MH0sTS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGIpe3JldHVybiAwPT09dGhpcy5jbXBuKGIpfSxNLnByb3RvdHlwZS5lcT1mdW5jdGlvbihiKXtyZXR1cm4gMD09PXRoaXMuY21wKGIpfSxN''@;'; put 'put ''LnJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGxlKGIpfSxNLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSxtKDA9PT10aGlzLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRo''@;'; put 'put ''IHBvc2l0aXZlcyIpLGIuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0IiksdGhpcy5yZWQuY29udmVy''@;'; put 'put ''dEZyb20odGhpcyl9LE0ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZWQ9Yix0aGlzfSxNLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbihiKXtyZXR1cm4gbSghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0''@;'; put 'put ''aGlzLl9mb3JjZVJlZChiKX0sTS5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuYWRkKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24oYil7cmV0dXJu''@;'; put 'put ''IG0odGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaWFkZCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5zdWIodGhpcyxiKX0sTS5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbihiKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pc3ViKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbihiKXtyZXR1''@;'; put 'put ''cm4gbSh0aGlzLnJlZCwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnNobCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24oYil7cmV0dXJuIG0odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlz''@;'; put 'put ''LnJlZC5fdmVyaWZ5Mih0aGlzLGIpLHRoaXMucmVkLm11bCh0aGlzLGIpfSxNLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxiKSx0aGlzLnJl''@;'; put 'put ''ZC5pbXVsKHRoaXMsYil9LE0ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxNLnByb3RvdHlwZS5yZWRJU3Fy''@;'; put 'put ''PWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuaXNxcih0aGlzKX0sTS5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMucmVkLCJy''@;'; put 'put ''ZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LE0ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJl''@;'; put 'put ''cnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxNLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMu''@;'; put 'put ''cmVkLm5lZyh0aGlzKX0sTS5wcm90b3R5cGUucmVkUG93PWZ1bmN0aW9uKGIpe3JldHVybiBtKHRoaXMucmVkJiYhYi5yZWQsInJlZFBvdyhub3JtYWxOdW0pIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsYil9O3ZhciBxPXtrMjU2Om51bGwscDIyNDpudWxs''@;'; put 'put ''LHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gSihXLGIpe3RoaXMubmFtZT1XLHRoaXMucD1uZXcgTShiLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgTSgxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVu''@;'; put 'put ''Y3Rpb24gZWUoKXtKLmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gcmUoKXtKLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm''@;'; put 'put ''IGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gaWUoKXtKLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9ZnVuY3Rpb24gdWUoKXtKLmNhbGwodGhpcywiMjU1MTkiLCI3''@;'; put 'put ''ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9ZnVuY3Rpb24gbGUoVyl7aWYoInN0cmluZyI9PXR5cGVvZiBXKXt2YXIgYj1NLl9wcmltZShXKTt0aGlzLm09Yi5wLHRoaXMucHJpbWU9Yn1lbHNlIG0oVy5ndG4oMSks''@;'; put 'put ''Im1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpLHRoaXMubT1XLHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBhZShXKXtsZS5jYWxsKHRoaXMsVyksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQl''@;'; put 'put ''MjYpLHRoaXMucj1uZXcgTSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52''@;'; put 'put ''PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1KLnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGI9bmV3IE0obnVsbCk7cmV0dXJuIGIud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxifSxKLnByb3RvdHlwZS5p''@;'; put 'put ''cmVkdWNlPWZ1bmN0aW9uKGIpe3ZhciBGLEE9Yjtkb3t0aGlzLnNwbGl0KEEsdGhpcy50bXApLEY9KEE9KEE9dGhpcy5pbXVsSyhBKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdoaWxlKEY+dGhpcy5uKTt2YXIgSD1GPHRoaXMubj8tMTpBLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09''@;'; put 'put ''PUg/KEEud29yZHNbMF09MCxBLmxlbmd0aD0xKTpIPjA/QS5pc3ViKHRoaXMucCk6dm9pZCAwIT09QS5zdHJpcD9BLnN0cmlwKCk6QS5fc3RyaXAoKSxBfSxKLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2IuaXVzaHJuKHRoaXMubiwwLEEpfSxKLnByb3RvdHlwZS5pbXVsSz1mdW5j''@;'; put 'put ''dGlvbihiKXtyZXR1cm4gYi5pbXVsKHRoaXMuayl9LHNlKGVlLEopLGVlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihiLEEpe2Zvcih2YXIgRj00MTk0MzAzLEg9TWF0aC5taW4oYi5sZW5ndGgsOSksZz0wO2c8SDtnKyspQS53b3Jkc1tnXT1iLndvcmRzW2ddO2lmKEEubGVuZ3RoPUgsYi5s''@;'; put 'put ''ZW5ndGg8PTkpcmV0dXJuIGIud29yZHNbMF09MCx2b2lkKGIubGVuZ3RoPTEpO3ZhciBDPWIud29yZHNbOV07Zm9yKEEud29yZHNbQS5sZW5ndGgrK109QyZGLGc9MTA7ZzxiLmxlbmd0aDtnKyspe3ZhciBrPTB8Yi53b3Jkc1tnXTtiLndvcmRzW2ctMTBdPShrJkYpPDw0fEM+Pj4yMixDPWt9''@;'; put 'put ''Yi53b3Jkc1tnLTEwXT1DPj4+PTIyLGIubGVuZ3RoLT0wPT09QyYmYi5sZW5ndGg+MTA/MTA6OX0sZWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Iud29yZHNbYi5sZW5ndGhdPTAsYi53b3Jkc1tiLmxlbmd0aCsxXT0wLGIubGVuZ3RoKz0yO2Zvcih2YXIgQT0wLEY9MDtGPGIubGVu''@;'; put 'put ''Z3RoO0YrKyl7dmFyIEg9MHxiLndvcmRzW0ZdO2Iud29yZHNbRl09NjcxMDg4NjMmKEErPTk3NypIKSxBPTY0KkgrKEEvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT1iLndvcmRzW2IubGVuZ3RoLTFdJiYoYi5sZW5ndGgtLSwwPT09Yi53b3Jkc1tiLmxlbmd0aC0xXSYmYi5sZW5ndGgtLSksYn0s''@;'; put 'put ''c2UocmUsSiksc2UoaWUsSiksc2UodWUsSiksdWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKGIpe2Zvcih2YXIgQT0wLEY9MDtGPGIubGVuZ3RoO0YrKyl7dmFyIEg9MTkqKDB8Yi53b3Jkc1tGXSkrQSxnPTY3MTA4ODYzJkg7SD4+Pj0yNixiLndvcmRzW0ZdPWcsQT1IfXJldHVybiAwIT09''@;'; put 'put ''QSYmKGIud29yZHNbYi5sZW5ndGgrK109QSksYn0sTS5fcHJpbWU9ZnVuY3Rpb24oYil7aWYocVtiXSlyZXR1cm4gcVtiXTt2YXIgQTtpZigiazI1NiI9PT1iKUE9bmV3IGVlO2Vsc2UgaWYoInAyMjQiPT09YilBPW5ldyByZTtlbHNlIGlmKCJwMTkyIj09PWIpQT1uZXcgaWU7ZWxzZXtpZigi''@;'; put 'put ''cDI1NTE5IiE9PWIpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHByaW1lICIrYik7QT1uZXcgdWV9cmV0dXJuIHFbYl09QSxBfSxsZS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24oYil7bSgwPT09Yi5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxtKGIucmVk''@;'; put 'put ''LCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LGxlLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbihiLEEpe20oIShiLm5lZ2F0aXZlfEEubmVnYXRpdmUpLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG0oYi5yZWQmJmIucmVkPT09QS5yZWQsInJlZCB3b3Jr''@;'; put 'put ''cyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sbGUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGIpLl9mb3JjZVJlZCh0aGlzKTpiLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5uZWc9ZnVu''@;'; put 'put ''Y3Rpb24oYil7cmV0dXJuIGIuaXNaZXJvKCk/Yi5jbG9uZSgpOnRoaXMubS5zdWIoYikuX2ZvcmNlUmVkKHRoaXMpfSxsZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuYWRkKEEpO3JldHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIo''@;'; put 'put ''dGhpcy5tKSxGLl9mb3JjZVJlZCh0aGlzKX0sbGUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oYixBKXt0aGlzLl92ZXJpZnkyKGIsQSk7dmFyIEY9Yi5pYWRkKEEpO3JldHVybiBGLmNtcCh0aGlzLm0pPj0wJiZGLmlzdWIodGhpcy5tKSxGfSxsZS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGIs''@;'; put 'put ''QSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuc3ViKEEpO3JldHVybiBGLmNtcG4oMCk8MCYmRi5pYWRkKHRoaXMubSksRi5fZm9yY2VSZWQodGhpcyl9LGxlLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKGIsQSl7dGhpcy5fdmVyaWZ5MihiLEEpO3ZhciBGPWIuaXN1YihBKTtyZXR1cm4g''@;'; put 'put ''Ri5jbXBuKDApPDAmJkYuaWFkZCh0aGlzLm0pLEZ9LGxlLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oYixBKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShiKSx0aGlzLmltb2QoYi51c2hsbihBKSl9LGxlLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKGIsQSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIoYixB''@;'; put 'put ''KSx0aGlzLmltb2QoYi5pbXVsKEEpKX0sbGUucHJvdG90eXBlLm11bD1mdW5jdGlvbihiLEEpe3JldHVybiB0aGlzLl92ZXJpZnkyKGIsQSksdGhpcy5pbW9kKGIubXVsKEEpKX0sbGUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW11bChiLGIuY2xvbmUoKSl9LGxl''@;'; put 'put ''LnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubXVsKGIsYil9LGxlLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKGIpe2lmKGIuaXNaZXJvKCkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgQT10aGlzLm0uYW5kbG4oMyk7aWYobShBJTI9PTEpLDM9PT1BKXt2YXIgRj10aGlzLm0u''@;'; put 'put ''YWRkKG5ldyBNKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KGIsRil9Zm9yKHZhciBIPXRoaXMubS5zdWJuKDEpLGc9MDshSC5pc1plcm8oKSYmMD09PUguYW5kbG4oMSk7KWcrKyxILml1c2hybigxKTttKCFILmlzWmVybygpKTt2YXIgQz1uZXcgTSgxKS50b1JlZCh0aGlzKSxrPUMu''@;'; put 'put ''cmVkTmVnKCksXz10aGlzLm0uc3VibigxKS5pdXNocm4oMSkscD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKHA9bmV3IE0oMipwKnApLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhwLF8pLmNtcChrKTspcC5yZWRJQWRkKGspO2Zvcih2YXIgdz10aGlzLnBvdyhwLEgpLEs9dGhpcy5wb3coYixI''@;'; put 'put ''LmFkZG4oMSkuaXVzaHJuKDEpKSx0ZT10aGlzLnBvdyhiLEgpLGNlPWc7MCE9PXRlLmNtcChDKTspe2Zvcih2YXIgaGU9dGUsU2U9MDswIT09aGUuY21wKEMpO1NlKyspaGU9aGUucmVkU3FyKCk7bShTZTxjZSk7dmFyIExlPXRoaXMucG93KHcsbmV3IE0oMSkuaXVzaGxuKGNlLVNlLTEpKTtL''@;'; put 'put ''PUsucmVkTXVsKExlKSx3PUxlLnJlZFNxcigpLHRlPXRlLnJlZE11bCh3KSxjZT1TZX1yZXR1cm4gS30sbGUucHJvdG90eXBlLmludm09ZnVuY3Rpb24oYil7dmFyIEE9Yi5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PUEubmVnYXRpdmU/KEEubmVnYXRpdmU9MCx0aGlzLmltb2QoQSkucmVk''@;'; put 'put ''TmVnKCkpOnRoaXMuaW1vZChBKX0sbGUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihiLEEpe2lmKEEuaXNaZXJvKCkpcmV0dXJuIG5ldyBNKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT1BLmNtcG4oMSkpcmV0dXJuIGIuY2xvbmUoKTt2YXIgSD1uZXcgQXJyYXkoMTYpO0hbMF09bmV3IE0oMSkudG9S''@;'; put 'put ''ZWQodGhpcyksSFsxXT1iO2Zvcih2YXIgZz0yO2c8SC5sZW5ndGg7ZysrKUhbZ109dGhpcy5tdWwoSFtnLTFdLGIpO3ZhciBDPUhbMF0saz0wLF89MCxwPUEuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1wJiYocD0yNiksZz1BLmxlbmd0aC0xO2c+PTA7Zy0tKXtmb3IodmFyIHc9QS53b3Jkc1tn''@;'; put 'put ''XSxLPXAtMTtLPj0wO0stLSl7dmFyIHRlPXc+PksmMTtDIT09SFswXSYmKEM9dGhpcy5zcXIoQykpLDAhPT10ZXx8MCE9PWs/KGs8PD0xLGt8PXRlLCg0PT0rK198fDA9PT1nJiYwPT09SykmJihDPXRoaXMubXVsKEMsSFtrXSksXz0wLGs9MCkpOl89MH1wPTI2fXJldHVybiBDfSxsZS5wcm90''@;'; put 'put ''b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKGIpe3ZhciBBPWIudW1vZCh0aGlzLm0pO3JldHVybiBBPT09Yj9BLmNsb25lKCk6QX0sbGUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciBBPWIuY2xvbmUoKTtyZXR1cm4gQS5yZWQ9bnVsbCxBfSxNLm1vbnQ9ZnVuY3Rpb24o''@;'; put 'put ''Yil7cmV0dXJuIG5ldyBhZShiKX0sc2UoYWUsbGUpLGFlLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaW1vZChiLnVzaGxuKHRoaXMuc2hpZnQpKX0sYWUucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKGIpe3ZhciBBPXRoaXMuaW1vZChiLm11bCh0''@;'; put 'put ''aGlzLnJpbnYpKTtyZXR1cm4gQS5yZWQ9bnVsbCxBfSxhZS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihiLEEpe2lmKGIuaXNaZXJvKCl8fEEuaXNaZXJvKCkpcmV0dXJuIGIud29yZHNbMF09MCxiLmxlbmd0aD0xLGI7dmFyIEY9Yi5pbXVsKEEpLEg9Ri5tYXNrbih0aGlzLnNoaWZ0KS5tdWwo''@;'; put 'put ''dGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksZz1GLmlzdWIoSCkuaXVzaHJuKHRoaXMuc2hpZnQpLEM9ZztyZXR1cm4gZy5jbXAodGhpcy5tKT49MD9DPWcuaXN1Yih0aGlzLm0pOmcuY21wbigwKTwwJiYoQz1nLmlhZGQodGhpcy5tKSksQy5fZm9yY2VSZWQodGhp''@;'; put 'put ''cyl9LGFlLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oYixBKXtpZihiLmlzWmVybygpfHxBLmlzWmVybygpKXJldHVybiBuZXcgTSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIEY9Yi5tdWwoQSksSD1GLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5t''@;'; put 'put ''dWwodGhpcy5tKSxnPUYuaXN1YihIKS5pdXNocm4odGhpcy5zaGlmdCksQz1nO3JldHVybiBnLmNtcCh0aGlzLm0pPj0wP0M9Zy5pc3ViKHRoaXMubSk6Zy5jbXBuKDApPDAmJihDPWcuaWFkZCh0aGlzLm0pKSxDLl9mb3JjZVJlZCh0aGlzKX0sYWUucHJvdG90eXBlLmludm09ZnVuY3Rpb24o''@;'; put 'put ''Yil7cmV0dXJuIHRoaXMuaW1vZChiLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSkuX2ZvcmNlUmVkKHRoaXMpfX0oUWU9Ui5ubWQoUWUpLHRoaXMpfSw5ODYxMzooUWUsTWUsUik9Pnt2YXIgb2U9Uig2NTY2NykseD1SKDMwNzE1KSxtPVIoMzcxOTYpLHNlPVIoMTY1MDgpLE09UigxNDEw''@;'; put 'put ''NSksTz1SKDY3MjExKSxJPVIoMTA1NjgpLGo9UigyNzA1NCkuQnVmZmVyO1FlLmV4cG9ydHM9ZnVuY3Rpb24oeixOLEIpe3ZhciBaO1o9ei5wYWRkaW5nP3oucGFkZGluZzpCPzE6NDt2YXIgcSxZPW9lKHopLFU9WS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihOLmxlbmd0aD5VfHxuZXcgc2Uo''@;'; put 'put ''TikuY21wKFkubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cT1CP0kobmV3IHNlKE4pLFkpOk0oTixZKTt2YXIgSj1qLmFsbG9jKFUtcS5sZW5ndGgpO2lmKHE9ai5jb25jYXQoW0oscV0sVSksND09PVopcmV0dXJuIGZ1bmN0aW9uIEcoRSx6KXt2YXIg''@;'; put 'put ''Tj1FLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLEI9Tygic2hhMSIpLnVwZGF0ZShqLmFsbG9jKDApKS5kaWdlc3QoKSxaPUIubGVuZ3RoO2lmKDAhPT16WzBdKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO3ZhciBZPXouc2xpY2UoMSxaKzEpLFU9ei5zbGljZShaKzEpLHE9bShZ''@;'; put 'put ''LHgoVSxaKSksSj1tKFUseChxLE4tWi0xKSk7aWYoZnVuY3Rpb24gVChFLHope0U9ai5mcm9tKEUpLHo9ai5mcm9tKHopO3ZhciBOPTAsQj1FLmxlbmd0aDtFLmxlbmd0aCE9PXoubGVuZ3RoJiYoTisrLEI9TWF0aC5taW4oRS5sZW5ndGgsei5sZW5ndGgpKTtmb3IodmFyIFo9LTE7KytaPEI7''@;'; put 'put ''KU4rPUVbWl1eeltaXTtyZXR1cm4gTn0oQixKLnNsaWNlKDAsWikpKXRocm93IG5ldyBFcnJvcigiZGVjcnlwdGlvbiBlcnJvciIpO2Zvcih2YXIgZWU9WjswPT09SltlZV07KWVlKys7aWYoMSE9PUpbZWUrK10pdGhyb3cgbmV3IEVycm9yKCJkZWNyeXB0aW9uIGVycm9yIik7cmV0dXJuIEou''@;'; put 'put ''c2xpY2UoZWUpfShZLHEpO2lmKDE9PT1aKXJldHVybiBmdW5jdGlvbiBEKEUseixOKXtmb3IodmFyIEI9ei5zbGljZSgwLDIpLFo9MixZPTA7MCE9PXpbWisrXTspaWYoWj49ei5sZW5ndGgpe1krKzticmVha312YXIgVT16LnNsaWNlKDIsWi0xKTtpZigoIjAwMDIiIT09Qi50b1N0cmluZygi''@;'; put 'put ''aGV4IikmJiFOfHwiMDAwMSIhPT1CLnRvU3RyaW5nKCJoZXgiKSYmTikmJlkrKyxVLmxlbmd0aDw4JiZZKyssWSl0aHJvdyBuZXcgRXJyb3IoImRlY3J5cHRpb24gZXJyb3IiKTtyZXR1cm4gei5zbGljZShaKX0oMCxxLEIpO2lmKDM9PT1aKXJldHVybiBxO3Rocm93IG5ldyBFcnJvcigidW5r''@;'; put 'put ''bm93biBwYWRkaW5nIil9fSw4NzI2NzooUWUsTWUsUik9Pnt2YXIgb2U9Uig2NTY2NykseD1SKDMzNDIpLG09Uig2NzIxMSksc2U9UigzMDcxNSksTT1SKDM3MTk2KSxPPVIoMTY1MDgpLEk9UigxMDU2OCksaj1SKDE0MTA1KSxHPVIoMjcwNTQpLkJ1ZmZlcjtRZS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KE4sQixaKXt2YXIgWTtZPU4ucGFkZGluZz9OLnBhZGRpbmc6Wj8xOjQ7dmFyIHEsVT1vZShOKTtpZig0PT09WSlxPWZ1bmN0aW9uIEQoeixOKXt2YXIgQj16Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpLFo9Ti5sZW5ndGgsWT1tKCJzaGExIikudXBkYXRlKEcuYWxsb2MoMCkpLmRpZ2VzdCgpLFU9''@;'; put 'put ''WS5sZW5ndGgscT0yKlU7aWYoWj5CLXEtMil0aHJvdyBuZXcgRXJyb3IoIm1lc3NhZ2UgdG9vIGxvbmciKTt2YXIgSj1HLmFsbG9jKEItWi1xLTIpLGVlPUItVS0xLHJlPXgoVSksaWU9TShHLmNvbmNhdChbWSxKLEcuYWxsb2MoMSwxKSxOXSxlZSksc2UocmUsZWUpKSx1ZT1NKHJlLHNlKGll''@;'; put 'put ''LFUpKTtyZXR1cm4gbmV3IE8oRy5jb25jYXQoW0cuYWxsb2MoMSksdWUsaWVdLEIpKX0oVSxCKTtlbHNlIGlmKDE9PT1ZKXE9ZnVuY3Rpb24gVCh6LE4sQil7dmFyIFUsWj1OLmxlbmd0aCxZPXoubW9kdWx1cy5ieXRlTGVuZ3RoKCk7aWYoWj5ZLTExKXRocm93IG5ldyBFcnJvcigibWVzc2Fn''@;'; put 'put ''ZSB0b28gbG9uZyIpO3JldHVybiBVPUI/Ry5hbGxvYyhZLVotMywyNTUpOmZ1bmN0aW9uIEUoeil7Zm9yKHZhciBVLE49Ry5hbGxvY1Vuc2FmZSh6KSxCPTAsWj14KDIqeiksWT0wO0I8ejspWT09PVoubGVuZ3RoJiYoWj14KDIqeiksWT0wKSwoVT1aW1krK10pJiYoTltCKytdPVUpO3JldHVy''@;'; put 'put ''biBOfShZLVotMyksbmV3IE8oRy5jb25jYXQoW0cuZnJvbShbMCxCPzE6Ml0pLFUsRy5hbGxvYygxKSxOXSxZKSl9KFUsQixaKTtlbHNle2lmKDMhPT1ZKXRocm93IG5ldyBFcnJvcigidW5rbm93biBwYWRkaW5nIik7aWYoKHE9bmV3IE8oQikpLmNtcChVLm1vZHVsdXMpPj0wKXRocm93IG5l''@;'; put 'put ''dyBFcnJvcigiZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1cyIpfXJldHVybiBaP2oocSxVKTpJKHEsVSl9fSwxMDU2ODooUWUsTWUsUik9Pnt2YXIgb2U9UigxNjUwOCkseD1SKDI3MDU0KS5CdWZmZXI7UWUuZXhwb3J0cz1mdW5jdGlvbiBtKHNlLE0pe3JldHVybiB4LmZyb20oc2UudG9SZWQo''@;'; put 'put ''b2UubW9udChNLm1vZHVsdXMpKS5yZWRQb3cobmV3IG9lKE0ucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCkudG9BcnJheSgpKX19LDM3MTk2OlFlPT57UWUuZXhwb3J0cz1mdW5jdGlvbihSLG9lKXtmb3IodmFyIHg9Ui5sZW5ndGgsbT0tMTsrK208eDspUlttXV49b2VbbV07cmV0dXJuIFJ9''@;'; put 'put ''fSwzMzQyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgc2U9UigyNzA1NCkuQnVmZmVyLE09Z2xvYmFsLmNyeXB0b3x8Z2xvYmFsLm1zQ3J5cHRvO1FlLmV4cG9ydHM9TSYmTS5nZXRSYW5kb21WYWx1ZXM/ZnVuY3Rpb24gTyhJLGope2lmKEk+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFu''@;'; put 'put ''Z2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBHPXNlLmFsbG9jVW5zYWZlKEkpO2lmKEk+MClpZihJPjY1NTM2KWZvcih2YXIgRD0wO0Q8STtEKz02NTUzNilNLmdldFJhbmRvbVZhbHVlcyhHLnNsaWNlKEQsRCs2NTUzNikpO2Vsc2UgTS5nZXRSYW5kb21W''@;'; put 'put ''YWx1ZXMoRyk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGo/cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe2oobnVsbCxHKX0pOkd9OmZ1bmN0aW9uIG0oKXt0aHJvdyBuZXcgRXJyb3IoIlNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlz''@;'; put 'put ''IGJyb3dzZXIuXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExIil9fSw5NjgyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvZSgpe3Rocm93IG5ldyBFcnJvcigic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVk''@;'; put 'put ''IGJ5IHRoaXMgYnJvd3NlclxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciB4PVIoMjcwNTQpLG09UigzMzQyKSxzZT14LkJ1ZmZlcixNPXgua01heExlbmd0aCxPPWdsb2JhbC5jcnlwdG98fGdsb2JhbC5tc0NyeXB0byxJPU1hdGgucG93KDIsMzIp''@;'; put 'put ''LTE7ZnVuY3Rpb24gaih6LE4pe2lmKCJudW1iZXIiIT10eXBlb2Ygenx8eiE9eil0aHJvdyBuZXcgVHlwZUVycm9yKCJvZmZzZXQgbXVzdCBiZSBhIG51bWJlciIpO2lmKHo+SXx8ejwwKXRocm93IG5ldyBUeXBlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdWludDMyIik7aWYoej5NfHx6Pk4p''@;'; put 'put ''dGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBHKHosTixCKXtpZigibnVtYmVyIiE9dHlwZW9mIHp8fHohPXopdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYoej5JfHx6PDApdGhyb3cgbmV3IFR5cGVFcnJv''@;'; put 'put ''cigic2l6ZSBtdXN0IGJlIGEgdWludDMyIik7aWYoeitOPkJ8fHo+TSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnVmZmVyIHRvbyBzbWFsbCIpfWZ1bmN0aW9uIFQoeixOLEIsWil7aWYocHJvY2Vzcy5icm93c2VyKXt2YXIgVT1uZXcgVWludDhBcnJheSh6LmJ1ZmZlcixOLEIpO3JldHVybiBP''@;'; put 'put ''LmdldFJhbmRvbVZhbHVlcyhVKSxaP3ZvaWQgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe1oobnVsbCx6KX0pOnp9aWYoIVopcmV0dXJuIG0oQikuY29weSh6LE4pLHo7bShCLGZ1bmN0aW9uKEosZWUpe2lmKEopcmV0dXJuIFooSik7ZWUuY29weSh6LE4pLFoobnVsbCx6KX0pfU8mJk8u''@;'; put 'put ''Z2V0UmFuZG9tVmFsdWVzfHwhcHJvY2Vzcy5icm93c2VyPyhNZS5yYW5kb21GaWxsPWZ1bmN0aW9uIEQoeixOLEIsWil7aWYoIShzZS5pc0J1ZmZlcih6KXx8eiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmIiBhcmd1bWVudCBtdXN0IGJl''@;'; put 'put ''IGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgTilaPU4sTj0wLEI9ei5sZW5ndGg7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgQilaPUIsQj16Lmxlbmd0aC1OO2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIFopdGhyb3cgbmV3IFR5cGVFcnJvcign''@;'; put 'put ''ImNiIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtyZXR1cm4gaihOLHoubGVuZ3RoKSxHKEIsTix6Lmxlbmd0aCksVCh6LE4sQixaKX0sTWUucmFuZG9tRmlsbFN5bmM9ZnVuY3Rpb24gRSh6LE4sQil7aWYodHlwZW9mIE4+InUiJiYoTj0wKSwhKHNlLmlzQnVmZmVyKHopfHx6IGlu''@;'; put 'put ''c3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWYiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpO3JldHVybiBqKE4sei5sZW5ndGgpLHZvaWQgMD09PUImJihCPXoubGVuZ3RoLU4pLEcoQixOLHoubGVuZ3RoKSxUKHos''@;'; put 'put ''TixCKX0pOihNZS5yYW5kb21GaWxsPW9lLE1lLnJhbmRvbUZpbGxTeW5jPW9lKX0sNzQwNzU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDk2NTYpLHg9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKEUpe3ZhciB6PVtdO2Zvcih2YXIgTiBpbiBFKXoucHVzaChOKTtyZXR1cm4gen07''@;'; put 'put ''UWUuZXhwb3J0cz1HO3ZhciBtPU9iamVjdC5jcmVhdGUoUigyNzYzNykpO20uaW5oZXJpdHM9Uig3MTk5Myk7dmFyIHNlPVIoMTk2MDkpLE09Uig0Nzg0OSk7bS5pbmhlcml0cyhHLHNlKTtmb3IodmFyIE89eChNLnByb3RvdHlwZSksST0wO0k8Ty5sZW5ndGg7SSsrKXt2YXIgaj1PW0ldO0cu''@;'; put 'put ''cHJvdG90eXBlW2pdfHwoRy5wcm90b3R5cGVbal09TS5wcm90b3R5cGVbal0pfWZ1bmN0aW9uIEcoRSl7aWYoISh0aGlzIGluc3RhbmNlb2YgRykpcmV0dXJuIG5ldyBHKEUpO3NlLmNhbGwodGhpcyxFKSxNLmNhbGwodGhpcyxFKSxFJiYhMT09PUUucmVhZGFibGUmJih0aGlzLnJlYWRhYmxl''@;'; put 'put ''PSExKSxFJiYhMT09PUUud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSx0aGlzLmFsbG93SGFsZk9wZW49ITAsRSYmITE9PT1FLmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEpLHRoaXMub25jZSgiZW5kIixEKX1mdW5jdGlvbiBEKCl7dGhpcy5hbGxvd0hhbGZPcGVu''@;'; put 'put ''fHx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxvZS5uZXh0VGljayhULHRoaXMpfWZ1bmN0aW9uIFQoRSl7RS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRy5wcm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRl''@;'; put 'put ''JiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihFKXt2b2lkIDA9PT10aGlzLl9yZWFkYWJsZVN0YXRlfHx2b2lkIDA9PT10aGlzLl93cml0YWJsZVN0YXRlfHwodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0''@;'; put 'put ''cm95ZWQ9RSx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1FKX19KSxHLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihFLHope3RoaXMucHVzaChudWxsKSx0aGlzLmVuZCgpLG9lLm5leHRUaWNrKHosRSl9fSwxODgyMzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0''@;'; put 'put ''cz1tO3ZhciBvZT1SKDI5MDkpLHg9T2JqZWN0LmNyZWF0ZShSKDI3NjM3KSk7ZnVuY3Rpb24gbShzZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgbSkpcmV0dXJuIG5ldyBtKHNlKTtvZS5jYWxsKHRoaXMsc2UpfXguaW5oZXJpdHM9Uig3MTk5MykseC5pbmhlcml0cyhtLG9lKSxtLnByb3RvdHlw''@;'; put 'put ''ZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHNlLE0sTyl7TyhudWxsLHNlKX19LDE5NjA5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig5NjU2KTtRZS5leHBvcnRzPUo7dmFyIG0seD1SKDIwMDUzKTtKLlJlYWRhYmxlU3RhdGU9cSxSKDQ0MzU2KTt2YXIgTT1mdW5jdGlvbih4ZSxE''@;'; put 'put ''ZSl7cmV0dXJuIHhlLmxpc3RlbmVycyhEZSkubGVuZ3RofSxPPVIoMTgzNDIpLEk9UigyNjU1KS5CdWZmZXIsaj0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9''@;'; put 'put ''LFQ9T2JqZWN0LmNyZWF0ZShSKDI3NjM3KSk7VC5pbmhlcml0cz1SKDcxOTkzKTt2YXIgRT1SKDc5ODM4KSx6PXZvaWQgMDt6PUUmJkUuZGVidWdsb2c/RS5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBaLE49UigyNzgwOSksQj1SKDIxNTA5KTtULmluaGVyaXRzKEosTyk7''@;'; put 'put ''dmFyIFk9WyJlcnJvciIsImNsb3NlIiwiZGVzdHJveSIsInBhdXNlIiwicmVzdW1lIl07ZnVuY3Rpb24gcSh4ZSxEZSl7dmFyIEJlPURlIGluc3RhbmNlb2YobT1tfHxSKDc0MDc1KSk7dGhpcy5vYmplY3RNb2RlPSEhKHhlPXhlfHx7fSkub2JqZWN0TW9kZSxCZSYmKHRoaXMub2JqZWN0TW9k''@;'; put 'put ''ZT10aGlzLm9iamVjdE1vZGV8fCEheGUucmVhZGFibGVPYmplY3RNb2RlKTt2YXIgR2U9eGUuaGlnaFdhdGVyTWFyayxVZT14ZS5yZWFkYWJsZUhpZ2hXYXRlck1hcms7dGhpcy5oaWdoV2F0ZXJNYXJrPUdlfHwwPT09R2U/R2U6QmUmJihVZXx8MD09PVVlKT9VZTp0aGlzLm9iamVjdE1vZGU/''@;'; put 'put ''MTY6MTYzODQsdGhpcy5oaWdoV2F0ZXJNYXJrPU1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKSx0aGlzLmJ1ZmZlcj1uZXcgTix0aGlzLmxlbmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5k''@;'; put 'put ''RW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxlPSExLHRoaXMuZW1pdHRlZFJlYWRhYmxlPSExLHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0''@;'; put 'put ''RW5jb2Rpbmc9eGUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwseGUuZW5jb2RpbmcmJihafHwoWj1SKDc4NDU0KS5JKSx0aGlzLmRlY29kZXI9bmV3IFooeGUu''@;'; put 'put ''ZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9eGUuZW5jb2RpbmcpfWZ1bmN0aW9uIEooeGUpe2lmKG09bXx8Uig3NDA3NSksISh0aGlzIGluc3RhbmNlb2YgSikpcmV0dXJuIG5ldyBKKHhlKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBxKHhlLHRoaXMpLHRoaXMucmVhZGFibGU9ITAseGUmJigi''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgeGUucmVhZCYmKHRoaXMuX3JlYWQ9eGUucmVhZCksImZ1bmN0aW9uIj09dHlwZW9mIHhlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXhlLmRlc3Ryb3kpKSxPLmNhbGwodGhpcyl9ZnVuY3Rpb24gZWUoeGUsRGUsQmUsR2UsVWUpe3ZhciBvdCxxZT14ZS5fcmVh''@;'; put 'put ''ZGFibGVTdGF0ZTtyZXR1cm4gbnVsbD09PURlPyhxZS5yZWFkaW5nPSExLGZ1bmN0aW9uIGIoeGUsRGUpe2lmKCFEZS5lbmRlZCl7aWYoRGUuZGVjb2Rlcil7dmFyIEJlPURlLmRlY29kZXIuZW5kKCk7QmUmJkJlLmxlbmd0aCYmKERlLmJ1ZmZlci5wdXNoKEJlKSxEZS5sZW5ndGgrPURlLm9i''@;'; put 'put ''amVjdE1vZGU/MTpCZS5sZW5ndGgpfURlLmVuZGVkPSEwLEEoeGUpfX0oeGUscWUpKTooVWV8fChvdD1mdW5jdGlvbiBpZSh4ZSxEZSl7dmFyIEJlO3JldHVybiFmdW5jdGlvbiBEKHhlKXtyZXR1cm4gSS5pc0J1ZmZlcih4ZSl8fHhlIGluc3RhbmNlb2Ygan0oRGUpJiYic3RyaW5nIiE9dHlw''@;'; put 'put ''ZW9mIERlJiZ2b2lkIDAhPT1EZSYmIXhlLm9iamVjdE1vZGUmJihCZT1uZXcgVHlwZUVycm9yKCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rIikpLEJlfShxZSxEZSkpLG90P3hlLmVtaXQoImVycm9yIixvdCk6cWUub2JqZWN0TW9kZXx8RGUmJkRlLmxlbmd0aD4wPygic3RyaW5n''@;'; put 'put ''IiE9dHlwZW9mIERlJiYhcWUub2JqZWN0TW9kZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKERlKSE9PUkucHJvdG90eXBlJiYoRGU9ZnVuY3Rpb24gRyh4ZSl7cmV0dXJuIEkuZnJvbSh4ZSl9KERlKSksR2U/cWUuZW5kRW1pdHRlZD94ZS5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJzdHJlYW0u''@;'; put 'put ''dW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpKTpyZSh4ZSxxZSxEZSwhMCk6cWUuZW5kZWQ/eGUuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSk6KHFlLnJlYWRpbmc9ITEscWUuZGVjb2RlciYmIUJlPyhEZT1xZS5kZWNvZGVyLndyaXRlKERlKSxx''@;'; put 'put ''ZS5vYmplY3RNb2RlfHwwIT09RGUubGVuZ3RoP3JlKHhlLHFlLERlLCExKTpIKHhlLHFlKSk6cmUoeGUscWUsRGUsITEpKSk6R2V8fChxZS5yZWFkaW5nPSExKSksZnVuY3Rpb24gdWUoeGUpe3JldHVybiF4ZS5lbmRlZCYmKHhlLm5lZWRSZWFkYWJsZXx8eGUubGVuZ3RoPHhlLmhpZ2hXYXRl''@;'; put 'put ''ck1hcmt8fDA9PT14ZS5sZW5ndGgpfShxZSl9ZnVuY3Rpb24gcmUoeGUsRGUsQmUsR2Upe0RlLmZsb3dpbmcmJjA9PT1EZS5sZW5ndGgmJiFEZS5zeW5jPyh4ZS5lbWl0KCJkYXRhIixCZSkseGUucmVhZCgwKSk6KERlLmxlbmd0aCs9RGUub2JqZWN0TW9kZT8xOkJlLmxlbmd0aCxHZT9EZS5i''@;'; put 'put ''dWZmZXIudW5zaGlmdChCZSk6RGUuYnVmZmVyLnB1c2goQmUpLERlLm5lZWRSZWFkYWJsZSYmQSh4ZSkpLEgoeGUsRGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3Rh''@;'; put 'put ''dGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24oeGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD14ZSl9fSksSi5wcm90b3R5cGUuZGVzdHJveT1CLmRlc3Ryb3ksSi5wcm90b3R5cGUuX3VuZGVzdHJveT1C''@;'; put 'put ''LnVuZGVzdHJveSxKLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbih4ZSxEZSl7dGhpcy5wdXNoKG51bGwpLERlKHhlKX0sSi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih4ZSxEZSl7dmFyIEdlLEJlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIEJlLm9iamVjdE1vZGU/R2U9ITA6InN0''@;'; put 'put ''cmluZyI9PXR5cGVvZiB4ZSYmKChEZT1EZXx8QmUuZGVmYXVsdEVuY29kaW5nKSE9PUJlLmVuY29kaW5nJiYoeGU9SS5mcm9tKHhlLERlKSxEZT0iIiksR2U9ITApLGVlKHRoaXMseGUsRGUsITEsR2UpfSxKLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKHhlKXtyZXR1cm4gZWUodGhpcyx4''@;'; put 'put ''ZSxudWxsLCEwLCExKX0sSi5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sSi5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24oeGUpe3JldHVybiBafHwoWj1SKDc4NDU0KS5JKSx0aGlzLl9yZWFkYWJsZVN0''@;'; put 'put ''YXRlLmRlY29kZXI9bmV3IFooeGUpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9eGUsdGhpc307ZnVuY3Rpb24gVyh4ZSxEZSl7cmV0dXJuIHhlPD0wfHwwPT09RGUubGVuZ3RoJiZEZS5lbmRlZD8wOkRlLm9iamVjdE1vZGU/MTp4ZSE9eGU/RGUuZmxvd2luZyYmRGUubGVuZ3RoP0Rl''@;'; put 'put ''LmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOkRlLmxlbmd0aDooeGU+RGUuaGlnaFdhdGVyTWFyayYmKERlLmhpZ2hXYXRlck1hcms9ZnVuY3Rpb24gYWUoeGUpe3JldHVybiB4ZT49ODM4ODYwOD94ZT04Mzg4NjA4Oih4ZS0tLHhlfD14ZT4+PjEseGV8PXhlPj4+Mix4ZXw9eGU+Pj40LHhlfD14''@;'; put 'put ''ZT4+PjgseGV8PXhlPj4+MTYseGUrKykseGV9KHhlKSkseGU8PURlLmxlbmd0aD94ZTpEZS5lbmRlZD9EZS5sZW5ndGg6KERlLm5lZWRSZWFkYWJsZT0hMCwwKSl9ZnVuY3Rpb24gQSh4ZSl7dmFyIERlPXhlLl9yZWFkYWJsZVN0YXRlO0RlLm5lZWRSZWFkYWJsZT0hMSxEZS5lbWl0dGVkUmVh''@;'; put 'put ''ZGFibGV8fCh6KCJlbWl0UmVhZGFibGUiLERlLmZsb3dpbmcpLERlLmVtaXR0ZWRSZWFkYWJsZT0hMCxEZS5zeW5jP29lLm5leHRUaWNrKEYseGUpOkYoeGUpKX1mdW5jdGlvbiBGKHhlKXt6KCJlbWl0IHJlYWRhYmxlIikseGUuZW1pdCgicmVhZGFibGUiKSx3KHhlKX1mdW5jdGlvbiBIKHhl''@;'; put 'put ''LERlKXtEZS5yZWFkaW5nTW9yZXx8KERlLnJlYWRpbmdNb3JlPSEwLG9lLm5leHRUaWNrKGcseGUsRGUpKX1mdW5jdGlvbiBnKHhlLERlKXtmb3IodmFyIEJlPURlLmxlbmd0aDshRGUucmVhZGluZyYmIURlLmZsb3dpbmcmJiFEZS5lbmRlZCYmRGUubGVuZ3RoPERlLmhpZ2hXYXRlck1hcmsm''@;'; put 'put ''Jih6KCJtYXliZVJlYWRNb3JlIHJlYWQgMCIpLHhlLnJlYWQoMCksQmUhPT1EZS5sZW5ndGgpOylCZT1EZS5sZW5ndGg7RGUucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gayh4ZSl7eigicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIikseGUucmVhZCgwKX1mdW5jdGlvbiBwKHhlLERlKXtEZS5y''@;'; put 'put ''ZWFkaW5nfHwoeigicmVzdW1lIHJlYWQgMCIpLHhlLnJlYWQoMCkpLERlLnJlc3VtZVNjaGVkdWxlZD0hMSxEZS5hd2FpdERyYWluPTAseGUuZW1pdCgicmVzdW1lIiksdyh4ZSksRGUuZmxvd2luZyYmIURlLnJlYWRpbmcmJnhlLnJlYWQoMCl9ZnVuY3Rpb24gdyh4ZSl7dmFyIERlPXhlLl9y''@;'; put 'put ''ZWFkYWJsZVN0YXRlO2Zvcih6KCJmbG93IixEZS5mbG93aW5nKTtEZS5mbG93aW5nJiZudWxsIT09eGUucmVhZCgpOyk7fWZ1bmN0aW9uIEsoeGUsRGUpe3JldHVybiAwPT09RGUubGVuZ3RoP251bGw6KERlLm9iamVjdE1vZGU/QmU9RGUuYnVmZmVyLnNoaWZ0KCk6IXhlfHx4ZT49RGUubGVu''@;'; put 'put ''Z3RoPyhCZT1EZS5kZWNvZGVyP0RlLmJ1ZmZlci5qb2luKCIiKToxPT09RGUuYnVmZmVyLmxlbmd0aD9EZS5idWZmZXIuaGVhZC5kYXRhOkRlLmJ1ZmZlci5jb25jYXQoRGUubGVuZ3RoKSxEZS5idWZmZXIuY2xlYXIoKSk6QmU9ZnVuY3Rpb24gdGUoeGUsRGUsQmUpe3ZhciBHZTtyZXR1cm4g''@;'; put 'put ''eGU8RGUuaGVhZC5kYXRhLmxlbmd0aD8oR2U9RGUuaGVhZC5kYXRhLnNsaWNlKDAseGUpLERlLmhlYWQuZGF0YT1EZS5oZWFkLmRhdGEuc2xpY2UoeGUpKTpHZT14ZT09PURlLmhlYWQuZGF0YS5sZW5ndGg/RGUuc2hpZnQoKTpCZT9mdW5jdGlvbiBjZSh4ZSxEZSl7dmFyIEJlPURlLmhlYWQs''@;'; put 'put ''R2U9MSxVZT1CZS5kYXRhO2Zvcih4ZS09VWUubGVuZ3RoO0JlPUJlLm5leHQ7KXt2YXIgcWU9QmUuZGF0YSxvdD14ZT5xZS5sZW5ndGg/cWUubGVuZ3RoOnhlO2lmKFVlKz1vdD09PXFlLmxlbmd0aD9xZTpxZS5zbGljZSgwLHhlKSwwPT0oeGUtPW90KSl7b3Q9PT1xZS5sZW5ndGg/KCsrR2Us''@;'; put 'put ''RGUuaGVhZD1CZS5uZXh0P0JlLm5leHQ6RGUudGFpbD1udWxsKTooRGUuaGVhZD1CZSxCZS5kYXRhPXFlLnNsaWNlKG90KSk7YnJlYWt9KytHZX1yZXR1cm4gRGUubGVuZ3RoLT1HZSxVZX0oeGUsRGUpOmZ1bmN0aW9uIGhlKHhlLERlKXt2YXIgQmU9SS5hbGxvY1Vuc2FmZSh4ZSksR2U9RGUu''@;'; put 'put ''aGVhZCxVZT0xO2ZvcihHZS5kYXRhLmNvcHkoQmUpLHhlLT1HZS5kYXRhLmxlbmd0aDtHZT1HZS5uZXh0Oyl7dmFyIHFlPUdlLmRhdGEsb3Q9eGU+cWUubGVuZ3RoP3FlLmxlbmd0aDp4ZTtpZihxZS5jb3B5KEJlLEJlLmxlbmd0aC14ZSwwLG90KSwwPT0oeGUtPW90KSl7b3Q9PT1xZS5sZW5n''@;'; put 'put ''dGg/KCsrVWUsRGUuaGVhZD1HZS5uZXh0P0dlLm5leHQ6RGUudGFpbD1udWxsKTooRGUuaGVhZD1HZSxHZS5kYXRhPXFlLnNsaWNlKG90KSk7YnJlYWt9KytVZX1yZXR1cm4gRGUubGVuZ3RoLT1VZSxCZX0oeGUsRGUpLEdlfSh4ZSxEZS5idWZmZXIsRGUuZGVjb2RlciksQmUpO3ZhciBCZX1m''@;'; put 'put ''dW5jdGlvbiBTZSh4ZSl7dmFyIERlPXhlLl9yZWFkYWJsZVN0YXRlO2lmKERlLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcignImVuZFJlYWRhYmxlKCkiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7RGUuZW5kRW1pdHRlZHx8KERlLmVuZGVkPSEwLG9lLm5leHRUaWNrKExlLERlLHhl''@;'; put 'put ''KSl9ZnVuY3Rpb24gTGUoeGUsRGUpeyF4ZS5lbmRFbWl0dGVkJiYwPT09eGUubGVuZ3RoJiYoeGUuZW5kRW1pdHRlZD0hMCxEZS5yZWFkYWJsZT0hMSxEZS5lbWl0KCJlbmQiKSl9ZnVuY3Rpb24gSGUoeGUsRGUpe2Zvcih2YXIgQmU9MCxHZT14ZS5sZW5ndGg7QmU8R2U7QmUrKylpZih4ZVtC''@;'; put 'put ''ZV09PT1EZSlyZXR1cm4gQmU7cmV0dXJuLTF9Si5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih4ZSl7eigicmVhZCIseGUpLHhlPXBhcnNlSW50KHhlLDEwKTt2YXIgRGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxCZT14ZTtpZigwIT09eGUmJihEZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT14ZSYm''@;'; put 'put ''RGUubmVlZFJlYWRhYmxlJiYoRGUubGVuZ3RoPj1EZS5oaWdoV2F0ZXJNYXJrfHxEZS5lbmRlZCkpcmV0dXJuIHooInJlYWQ6IGVtaXRSZWFkYWJsZSIsRGUubGVuZ3RoLERlLmVuZGVkKSwwPT09RGUubGVuZ3RoJiZEZS5lbmRlZD9TZSh0aGlzKTpBKHRoaXMpLG51bGw7aWYoMD09PSh4ZT1X''@;'; put 'put ''KHhlLERlKSkmJkRlLmVuZGVkKXJldHVybiAwPT09RGUubGVuZ3RoJiZTZSh0aGlzKSxudWxsO3ZhciBVZSxHZT1EZS5uZWVkUmVhZGFibGU7cmV0dXJuIHooIm5lZWQgcmVhZGFibGUiLEdlKSwoMD09PURlLmxlbmd0aHx8RGUubGVuZ3RoLXhlPERlLmhpZ2hXYXRlck1hcmspJiZ6KCJsZW5n''@;'; put 'put ''dGggbGVzcyB0aGFuIHdhdGVybWFyayIsR2U9ITApLERlLmVuZGVkfHxEZS5yZWFkaW5nP3ooInJlYWRpbmcgb3IgZW5kZWQiLEdlPSExKTpHZSYmKHooImRvIHJlYWQiKSxEZS5yZWFkaW5nPSEwLERlLnN5bmM9ITAsMD09PURlLmxlbmd0aCYmKERlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5f''@;'; put 'put ''cmVhZChEZS5oaWdoV2F0ZXJNYXJrKSxEZS5zeW5jPSExLERlLnJlYWRpbmd8fCh4ZT1XKEJlLERlKSkpLG51bGw9PT0oVWU9eGU+MD9LKHhlLERlKTpudWxsKT8oRGUubmVlZFJlYWRhYmxlPSEwLHhlPTApOkRlLmxlbmd0aC09eGUsMD09PURlLmxlbmd0aCYmKERlLmVuZGVkfHwoRGUubmVl''@;'; put 'put ''ZFJlYWRhYmxlPSEwKSxCZSE9PXhlJiZEZS5lbmRlZCYmU2UodGhpcykpLG51bGwhPT1VZSYmdGhpcy5lbWl0KCJkYXRhIixVZSksVWV9LEoucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHhlKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIl9yZWFkKCkgaXMgbm90IGltcGxlbWVudGVk''@;'; put 'put ''IikpfSxKLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHhlLERlKXt2YXIgQmU9dGhpcyxHZT10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChHZS5waXBlc0NvdW50KXtjYXNlIDA6R2UucGlwZXM9eGU7YnJlYWs7Y2FzZSAxOkdlLnBpcGVzPVtHZS5waXBlcyx4ZV07YnJlYWs7ZGVmYXVsdDpH''@;'; put 'put ''ZS5waXBlcy5wdXNoKHhlKX1HZS5waXBlc0NvdW50Kz0xLHooInBpcGUgY291bnQ9JWQgb3B0cz0laiIsR2UucGlwZXNDb3VudCxEZSk7dmFyIHFlPURlJiYhMT09PURlLmVuZHx8eGU9PT1wcm9jZXNzLnN0ZG91dHx8eGU9PT1wcm9jZXNzLnN0ZGVycj9BZTpGZTtmdW5jdGlvbiBGZSgpe3oo''@;'; put 'put ''Im9uZW5kIikseGUuZW5kKCl9R2UuZW5kRW1pdHRlZD9vZS5uZXh0VGljayhxZSk6QmUub25jZSgiZW5kIixxZSkseGUub24oInVucGlwZSIsZnVuY3Rpb24gb3QoamUsaXQpe3ooIm9udW5waXBlIiksamU9PT1CZSYmaXQmJiExPT09aXQuaGFzVW5waXBlZCYmKGl0Lmhhc1VucGlwZWQ9ITAs''@;'; put 'put ''ZnVuY3Rpb24gSWUoKXt6KCJjbGVhbnVwIikseGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixjdCkseGUucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsa2UpLHhlLnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsd2UpLHhlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsWmUpLHhlLnJlbW92ZUxpc3RlbmVy''@;'; put 'put ''KCJ1bnBpcGUiLG90KSxCZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixGZSksQmUucmVtb3ZlTGlzdGVuZXIoImVuZCIsQWUpLEJlLnJlbW92ZUxpc3RlbmVyKCJkYXRhIix0dCksRWU9ITAsR2UuYXdhaXREcmFpbiYmKCF4ZS5fd3JpdGFibGVTdGF0ZXx8eGUuX3dyaXRhYmxlU3RhdGUubmVlZERy''@;'; put 'put ''YWluKSYmd2UoKX0oKSl9KTt2YXIgd2U9ZnVuY3Rpb24gQyh4ZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIERlPXhlLl9yZWFkYWJsZVN0YXRlO3ooInBpcGVPbkRyYWluIixEZS5hd2FpdERyYWluKSxEZS5hd2FpdERyYWluJiZEZS5hd2FpdERyYWluLS0sMD09PURlLmF3YWl0RHJhaW4mJk0o''@;'; put 'put ''eGUsImRhdGEiKSYmKERlLmZsb3dpbmc9ITAsdyh4ZSkpfX0oQmUpO3hlLm9uKCJkcmFpbiIsd2UpO3ZhciBFZT0hMSxYZT0hMTtmdW5jdGlvbiB0dChqZSl7eigib25kYXRhIiksWGU9ITEsITE9PT14ZS53cml0ZShqZSkmJiFYZSYmKCgxPT09R2UucGlwZXNDb3VudCYmR2UucGlwZXM9PT14''@;'; put 'put ''ZXx8R2UucGlwZXNDb3VudD4xJiYtMSE9PUhlKEdlLnBpcGVzLHhlKSkmJiFFZSYmKHooImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZSIsR2UuYXdhaXREcmFpbiksR2UuYXdhaXREcmFpbisrLFhlPSEwKSxCZS5wYXVzZSgpKX1mdW5jdGlvbiBaZShqZSl7eigib25lcnJvciIsamUpLEFl''@;'; put 'put ''KCkseGUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixaZSksMD09PU0oeGUsImVycm9yIikmJnhlLmVtaXQoImVycm9yIixqZSl9ZnVuY3Rpb24gY3QoKXt4ZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixrZSksQWUoKX1mdW5jdGlvbiBrZSgpe3ooIm9uZmluaXNoIikseGUucmVtb3ZlTGlzdGVu''@;'; put 'put ''ZXIoImNsb3NlIixjdCksQWUoKX1mdW5jdGlvbiBBZSgpe3ooInVucGlwZSIpLEJlLnVucGlwZSh4ZSl9cmV0dXJuIEJlLm9uKCJkYXRhIix0dCksZnVuY3Rpb24gVSh4ZSxEZSxCZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHhlLnByZXBlbmRMaXN0ZW5lcilyZXR1cm4geGUucHJlcGVuZExp''@;'; put 'put ''c3RlbmVyKERlLEJlKTt4ZS5fZXZlbnRzJiZ4ZS5fZXZlbnRzW0RlXT94KHhlLl9ldmVudHNbRGVdKT94ZS5fZXZlbnRzW0RlXS51bnNoaWZ0KEJlKTp4ZS5fZXZlbnRzW0RlXT1bQmUseGUuX2V2ZW50c1tEZV1dOnhlLm9uKERlLEJlKX0oeGUsImVycm9yIixaZSkseGUub25jZSgiY2xvc2Ui''@;'; put 'put ''LGN0KSx4ZS5vbmNlKCJmaW5pc2giLGtlKSx4ZS5lbWl0KCJwaXBlIixCZSksR2UuZmxvd2luZ3x8KHooInBpcGUgcmVzdW1lIiksQmUucmVzdW1lKCkpLHhlfSxKLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oeGUpe3ZhciBEZT10aGlzLl9yZWFkYWJsZVN0YXRlLEJlPXtoYXNVbnBpcGVk''@;'; put 'put ''OiExfTtpZigwPT09RGUucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09RGUucGlwZXNDb3VudClyZXR1cm4geGUmJnhlIT09RGUucGlwZXN8fCh4ZXx8KHhlPURlLnBpcGVzKSxEZS5waXBlcz1udWxsLERlLnBpcGVzQ291bnQ9MCxEZS5mbG93aW5nPSExLHhlJiZ4ZS5lbWl0KCJ1bnBp''@;'; put 'put ''cGUiLHRoaXMsQmUpKSx0aGlzO2lmKCF4ZSl7dmFyIEdlPURlLnBpcGVzLFVlPURlLnBpcGVzQ291bnQ7RGUucGlwZXM9bnVsbCxEZS5waXBlc0NvdW50PTAsRGUuZmxvd2luZz0hMTtmb3IodmFyIHFlPTA7cWU8VWU7cWUrKylHZVtxZV0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVk''@;'; put 'put ''OiExfSk7cmV0dXJuIHRoaXN9dmFyIG90PUhlKERlLnBpcGVzLHhlKTtyZXR1cm4tMT09PW90fHwoRGUucGlwZXMuc3BsaWNlKG90LDEpLERlLnBpcGVzQ291bnQtPTEsMT09PURlLnBpcGVzQ291bnQmJihEZS5waXBlcz1EZS5waXBlc1swXSkseGUuZW1pdCgidW5waXBlIix0aGlzLEJlKSks''@;'; put 'put ''dGhpc30sSi5wcm90b3R5cGUuYWRkTGlzdGVuZXI9Si5wcm90b3R5cGUub249ZnVuY3Rpb24oeGUsRGUpe3ZhciBCZT1PLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMseGUsRGUpO2lmKCJkYXRhIj09PXhlKSExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpO2Vs''@;'; put 'put ''c2UgaWYoInJlYWRhYmxlIj09PXhlKXt2YXIgR2U9dGhpcy5fcmVhZGFibGVTdGF0ZTshR2UuZW5kRW1pdHRlZCYmIUdlLnJlYWRhYmxlTGlzdGVuaW5nJiYoR2UucmVhZGFibGVMaXN0ZW5pbmc9R2UubmVlZFJlYWRhYmxlPSEwLEdlLmVtaXR0ZWRSZWFkYWJsZT0hMSxHZS5yZWFkaW5nP0dl''@;'; put 'put ''Lmxlbmd0aCYmQSh0aGlzKTpvZS5uZXh0VGljayhrLHRoaXMpKX1yZXR1cm4gQmV9LEoucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciB4ZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiB4ZS5mbG93aW5nfHwoeigicmVzdW1lIikseGUuZmxvd2luZz0hMCxmdW5jdGlvbiBfKHhl''@;'; put 'put ''LERlKXtEZS5yZXN1bWVTY2hlZHVsZWR8fChEZS5yZXN1bWVTY2hlZHVsZWQ9ITAsb2UubmV4dFRpY2socCx4ZSxEZSkpfSh0aGlzLHhlKSksdGhpc30sSi5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4geigiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0''@;'; put 'put ''YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoeigicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzfSxKLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHhlKXt2YXIgRGU9dGhpcyxCZT10aGlz''@;'; put 'put ''Ll9yZWFkYWJsZVN0YXRlLEdlPSExO2Zvcih2YXIgVWUgaW4geGUub24oImVuZCIsZnVuY3Rpb24oKXtpZih6KCJ3cmFwcGVkIGVuZCIpLEJlLmRlY29kZXImJiFCZS5lbmRlZCl7dmFyIG90PUJlLmRlY29kZXIuZW5kKCk7b3QmJm90Lmxlbmd0aCYmRGUucHVzaChvdCl9RGUucHVzaChudWxs''@;'; put 'put ''KX0pLHhlLm9uKCJkYXRhIixmdW5jdGlvbihvdCl7eigid3JhcHBlZCBkYXRhIiksQmUuZGVjb2RlciYmKG90PUJlLmRlY29kZXIud3JpdGUob3QpKSxCZS5vYmplY3RNb2RlJiZudWxsPT1vdHx8IShCZS5vYmplY3RNb2RlfHxvdCYmb3QubGVuZ3RoKXx8RGUucHVzaChvdCl8fChHZT0hMCx4''@;'; put 'put ''ZS5wYXVzZSgpKX0pLHhlKXZvaWQgMD09PXRoaXNbVWVdJiYiZnVuY3Rpb24iPT10eXBlb2YgeGVbVWVdJiYodGhpc1tVZV09ZnVuY3Rpb24ob3Qpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4ZVtvdF0uYXBwbHkoeGUsYXJndW1lbnRzKX19KFVlKSk7Zm9yKHZhciBxZT0wO3FlPFkubGVu''@;'; put 'put ''Z3RoO3FlKyspeGUub24oWVtxZV0sdGhpcy5lbWl0LmJpbmQodGhpcyxZW3FlXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKG90KXt6KCJ3cmFwcGVkIF9yZWFkIixvdCksR2UmJihHZT0hMSx4ZS5yZXN1bWUoKSl9LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlw''@;'; put 'put ''ZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLEouX2Zyb21MaXN0PUt9LDI5MDk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9c2U7dmFyIG9l''@;'; put 'put ''PVIoNzQwNzUpLHg9T2JqZWN0LmNyZWF0ZShSKDI3NjM3KSk7ZnVuY3Rpb24gbShJLGope3ZhciBHPXRoaXMuX3RyYW5zZm9ybVN0YXRlO0cudHJhbnNmb3JtaW5nPSExO3ZhciBEPUcud3JpdGVjYjtpZighRClyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJ3cml0ZSBjYWxs''@;'; put 'put ''YmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKSk7Ry53cml0ZWNodW5rPW51bGwsRy53cml0ZWNiPW51bGwsbnVsbCE9aiYmdGhpcy5wdXNoKGopLEQoSSk7dmFyIFQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtULnJlYWRpbmc9ITEsKFQubmVlZFJlYWRhYmxlfHxULmxlbmd0aDxULmhpZ2hXYXRl''@;'; put 'put ''ck1hcmspJiZ0aGlzLl9yZWFkKFQuaGlnaFdhdGVyTWFyayl9ZnVuY3Rpb24gc2UoSSl7aWYoISh0aGlzIGluc3RhbmNlb2Ygc2UpKXJldHVybiBuZXcgc2UoSSk7b2UuY2FsbCh0aGlzLEkpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTptLmJpbmQodGhpcyksbmVlZFRy''@;'; put 'put ''YW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSxJJiYoImZ1bmN0aW9uIj09dHlwZW9mIEku''@;'; put 'put ''dHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPUkudHJhbnNmb3JtKSwiZnVuY3Rpb24iPT10eXBlb2YgSS5mbHVzaCYmKHRoaXMuX2ZsdXNoPUkuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2giLE0pfWZ1bmN0aW9uIE0oKXt2YXIgST10aGlzOyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9m''@;'; put 'put ''bHVzaD90aGlzLl9mbHVzaChmdW5jdGlvbihqLEcpe08oSSxqLEcpfSk6Tyh0aGlzLG51bGwsbnVsbCl9ZnVuY3Rpb24gTyhJLGosRyl7aWYoailyZXR1cm4gSS5lbWl0KCJlcnJvciIsaik7aWYobnVsbCE9RyYmSS5wdXNoKEcpLEkuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBF''@;'; put 'put ''cnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwIik7aWYoSS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZyIpO3JldHVybiBJLnB1c2go''@;'; put 'put ''bnVsbCl9eC5pbmhlcml0cz1SKDcxOTkzKSx4LmluaGVyaXRzKHNlLG9lKSxzZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihJLGope3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLG9lLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxJLGopfSxzZS5wcm90b3R5''@;'; put 'put ''cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihJLGosRyl7dGhyb3cgbmV3IEVycm9yKCJfdHJhbnNmb3JtKCkgaXMgbm90IGltcGxlbWVudGVkIil9LHNlLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oSSxqLEcpe3ZhciBEPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKEQud3JpdGVjYj1HLEQud3Jp''@;'; put 'put ''dGVjaHVuaz1JLEQud3JpdGVlbmNvZGluZz1qLCFELnRyYW5zZm9ybWluZyl7dmFyIFQ9dGhpcy5fcmVhZGFibGVTdGF0ZTsoRC5uZWVkVHJhbnNmb3JtfHxULm5lZWRSZWFkYWJsZXx8VC5sZW5ndGg8VC5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChULmhpZ2hXYXRlck1hcmspfX0sc2Uu''@;'; put 'put ''cHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKEkpe3ZhciBqPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1qLndyaXRlY2h1bmsmJmoud3JpdGVjYiYmIWoudHJhbnNmb3JtaW5nPyhqLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oai53cml0ZWNodW5rLGoud3JpdGVlbmNvZGlu''@;'; put 'put ''ZyxqLmFmdGVyVHJhbnNmb3JtKSk6ai5uZWVkVHJhbnNmb3JtPSEwfSxzZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oSSxqKXt2YXIgRz10aGlzO29lLnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsSSxmdW5jdGlvbihEKXtqKEQpLEcuZW1pdCgiY2xvc2UiKX0pfX0sNDc4NDk6''@;'; put 'put ''KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDk2NTYpO2Z1bmN0aW9uIG0oXyl7dmFyIHA9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24gayhfLHAsdyl7dmFyIEs9Xy5lbnRyeTtmb3IoXy5lbnRyeT1u''@;'; put 'put ''dWxsO0s7KXt2YXIgdGU9Sy5jYWxsYmFjaztwLnBlbmRpbmdjYi0tLHRlKHcpLEs9Sy5uZXh0fXAuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9X30ocCxfKX19UWUuZXhwb3J0cz1ZO3ZhciBNLHNlPSFwcm9jZXNzLmJyb3dzZXImJlsidjAuMTAiLCJ2MC45LiJdLmluZGV4T2YocHJvY2Vzcy52''@;'; put 'put ''ZXJzaW9uLnNsaWNlKDAsNSkpPi0xP3NldEltbWVkaWF0ZTpvZS5uZXh0VGljaztZLldyaXRhYmxlU3RhdGU9Qjt2YXIgTz1PYmplY3QuY3JlYXRlKFIoMjc2MzcpKTtPLmluaGVyaXRzPVIoNzE5OTMpO3ZhciBaLEk9e2RlcHJlY2F0ZTpSKDMzOTgpfSxqPVIoMTgzNDIpLEc9UigyNjU1KS5C''@;'; put 'put ''dWZmZXIsRD0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LHo9UigyMTUwOSk7ZnVuY3Rpb24gTigpe31mdW5jdGlvbiBCKF8scCl7TT1NfHxSKDc0MDc1KTt2''@;'; put 'put ''YXIgdz1wIGluc3RhbmNlb2YgTTt0aGlzLm9iamVjdE1vZGU9ISEoXz1ffHx7fSkub2JqZWN0TW9kZSx3JiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFfLndyaXRhYmxlT2JqZWN0TW9kZSk7dmFyIEs9Xy5oaWdoV2F0ZXJNYXJrLHRlPV8ud3JpdGFibGVIaWdoV2F0ZXJN''@;'; put 'put ''YXJrO3RoaXMuaGlnaFdhdGVyTWFyaz1LfHwwPT09Sz9LOncmJih0ZXx8MD09PXRlKT90ZTp0aGlzLm9iamVjdE1vZGU/MTY6MTYzODQsdGhpcy5oaWdoV2F0ZXJNYXJrPU1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSEx''@;'; put 'put ''LHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29kZVN0cmluZ3M9ISghMT09PV8uZGVjb2RlU3RyaW5ncyksdGhpcy5kZWZhdWx0RW5jb2Rpbmc9Xy5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0''@;'; put 'put ''aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKFNlKXshZnVuY3Rpb24gbGUoXyxwKXt2YXIgdz1fLl93cml0YWJsZVN0YXRlLEs9dy5zeW5jLHRlPXcud3JpdGVjYjtpZihm''@;'; put 'put ''dW5jdGlvbiB1ZShfKXtfLndyaXRpbmc9ITEsXy53cml0ZWNiPW51bGwsXy5sZW5ndGgtPV8ud3JpdGVsZW4sXy53cml0ZWxlbj0wfSh3KSxwKSFmdW5jdGlvbiBpZShfLHAsdyxLLHRlKXstLXAucGVuZGluZ2NiLHc/KG9lLm5leHRUaWNrKHRlLEspLG9lLm5leHRUaWNrKGcsXyxwKSxfLl93''@;'; put 'put ''cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxfLmVtaXQoImVycm9yIixLKSk6KHRlKEspLF8uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLF8uZW1pdCgiZXJyb3IiLEspLGcoXyxwKSl9KF8sdyxLLHAsdGUpO2Vsc2V7dmFyIGNlPUEodyk7IWNlJiYhdy5jb3JrZWQmJiF3LmJ1''@;'; put 'put ''ZmZlclByb2Nlc3NpbmcmJncuYnVmZmVyZWRSZXF1ZXN0JiZiKF8sdyksSz9zZShhZSxfLHcsY2UsdGUpOmFlKF8sdyxjZSx0ZSl9fShwLFNlKX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1''@;'; put 'put ''ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgbSh0aGlzKX1mdW5jdGlvbiBZKF8pe2lmKE09TXx8Uig3NDA3NSksISha''@;'; put 'put ''LmNhbGwoWSx0aGlzKXx8dGhpcyBpbnN0YW5jZW9mIE0pKXJldHVybiBuZXcgWShfKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBCKF8sdGhpcyksdGhpcy53cml0YWJsZT0hMCxfJiYoImZ1bmN0aW9uIj09dHlwZW9mIF8ud3JpdGUmJih0aGlzLl93cml0ZT1fLndyaXRlKSwiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgXy53cml0ZXYmJih0aGlzLl93cml0ZXY9Xy53cml0ZXYpLCJmdW5jdGlvbiI9PXR5cGVvZiBfLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PV8uZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIF8uZmluYWwmJih0aGlzLl9maW5hbD1fLmZpbmFsKSksai5jYWxsKHRoaXMpfWZ1''@;'; put 'put ''bmN0aW9uIHJlKF8scCx3LEssdGUsY2UsaGUpe3Aud3JpdGVsZW49SyxwLndyaXRlY2I9aGUscC53cml0aW5nPSEwLHAuc3luYz0hMCx3P18uX3dyaXRldih0ZSxwLm9ud3JpdGUpOl8uX3dyaXRlKHRlLGNlLHAub253cml0ZSkscC5zeW5jPSExfWZ1bmN0aW9uIGFlKF8scCx3LEspe3d8fGZ1''@;'; put 'put ''bmN0aW9uIFcoXyxwKXswPT09cC5sZW5ndGgmJnAubmVlZERyYWluJiYocC5uZWVkRHJhaW49ITEsXy5lbWl0KCJkcmFpbiIpKX0oXyxwKSxwLnBlbmRpbmdjYi0tLEsoKSxnKF8scCl9ZnVuY3Rpb24gYihfLHApe3AuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgdz1wLmJ1ZmZlcmVkUmVxdWVz''@;'; put 'put ''dDtpZihfLl93cml0ZXYmJncmJncubmV4dCl7dmFyIHRlPW5ldyBBcnJheShwLmJ1ZmZlcmVkUmVxdWVzdENvdW50KSxjZT1wLmNvcmtlZFJlcXVlc3RzRnJlZTtjZS5lbnRyeT13O2Zvcih2YXIgaGU9MCxTZT0hMDt3Oyl0ZVtoZV09dyx3LmlzQnVmfHwoU2U9ITEpLHc9dy5uZXh0LGhlKz0x''@;'; put 'put ''O3RlLmFsbEJ1ZmZlcnM9U2UscmUoXyxwLCEwLHAubGVuZ3RoLHRlLCIiLGNlLmZpbmlzaCkscC5wZW5kaW5nY2IrKyxwLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxjZS5uZXh0PyhwLmNvcmtlZFJlcXVlc3RzRnJlZT1jZS5uZXh0LGNlLm5leHQ9bnVsbCk6cC5jb3JrZWRSZXF1ZXN0c0Zy''@;'; put 'put ''ZWU9bmV3IG0ocCkscC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDt3Oyl7dmFyIExlPXcuY2h1bms7aWYocmUoXyxwLCExLHAub2JqZWN0TW9kZT8xOkxlLmxlbmd0aCxMZSx3LmVuY29kaW5nLHcuY2FsbGJhY2spLHc9dy5uZXh0LHAuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxw''@;'; put 'put ''LndyaXRpbmcpYnJlYWt9bnVsbD09PXcmJihwLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9cC5idWZmZXJlZFJlcXVlc3Q9dyxwLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gQShfKXtyZXR1cm4gXy5lbmRpbmcmJjA9PT1fLmxlbmd0aCYmbnVsbD09PV8uYnVmZmVyZWRSZXF1ZXN0''@;'; put 'put ''JiYhXy5maW5pc2hlZCYmIV8ud3JpdGluZ31mdW5jdGlvbiBGKF8scCl7Xy5fZmluYWwoZnVuY3Rpb24odyl7cC5wZW5kaW5nY2ItLSx3JiZfLmVtaXQoImVycm9yIix3KSxwLnByZWZpbmlzaGVkPSEwLF8uZW1pdCgicHJlZmluaXNoIiksZyhfLHApfSl9ZnVuY3Rpb24gZyhfLHApe3ZhciB3''@;'; put 'put ''PUEocCk7cmV0dXJuIHcmJihmdW5jdGlvbiBIKF8scCl7IXAucHJlZmluaXNoZWQmJiFwLmZpbmFsQ2FsbGVkJiYoImZ1bmN0aW9uIj09dHlwZW9mIF8uX2ZpbmFsPyhwLnBlbmRpbmdjYisrLHAuZmluYWxDYWxsZWQ9ITAsb2UubmV4dFRpY2soRixfLHApKToocC5wcmVmaW5pc2hlZD0hMCxf''@;'; put 'put ''LmVtaXQoInByZWZpbmlzaCIpKSl9KF8scCksMD09PXAucGVuZGluZ2NiJiYocC5maW5pc2hlZD0hMCxfLmVtaXQoImZpbmlzaCIpKSksd31PLmluaGVyaXRzKFksaiksQi5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBwPXRoaXMuYnVmZmVyZWRSZXF1ZXN0LHc9W107''@;'; put 'put ''cDspdy5wdXNoKHApLHA9cC5uZXh0O3JldHVybiB3fSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQi5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpJLmRlcHJlY2F0ZShmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVy''@;'; put 'put ''IGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iLCJERVAwMDAzIil9KX1jYXRjaHt9fSgpLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5oYXNJbnN0YW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtT''@;'; put 'put ''eW1ib2wuaGFzSW5zdGFuY2VdPyhaPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24oXyl7cmV0dXJuISFaLmNhbGwodGhpcyxfKXx8dGhpcz09PVkmJl8mJl8uX3dy''@;'; put 'put ''aXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBCfX0pKTpaPWZ1bmN0aW9uKF8pe3JldHVybiBfIGluc3RhbmNlb2YgdGhpc30sWS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe3RoaXMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpKX0sWS5wcm90b3R5''@;'; put 'put ''cGUud3JpdGU9ZnVuY3Rpb24oXyxwLHcpe3ZhciBLPXRoaXMuX3dyaXRhYmxlU3RhdGUsdGU9ITEsY2U9IUsub2JqZWN0TW9kZSYmZnVuY3Rpb24gRShfKXtyZXR1cm4gRy5pc0J1ZmZlcihfKXx8XyBpbnN0YW5jZW9mIER9KF8pO3JldHVybiBjZSYmIUcuaXNCdWZmZXIoXykmJihfPWZ1bmN0''@;'; put 'put ''aW9uIFQoXyl7cmV0dXJuIEcuZnJvbShfKX0oXykpLCJmdW5jdGlvbiI9PXR5cGVvZiBwJiYodz1wLHA9bnVsbCksY2U/cD0iYnVmZmVyIjpwfHwocD1LLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIHcmJih3PU4pLEsuZW5kZWQ/ZnVuY3Rpb24gVShfLHApe3ZhciB3PW5l''@;'; put 'put ''dyBFcnJvcigid3JpdGUgYWZ0ZXIgZW5kIik7Xy5lbWl0KCJlcnJvciIsdyksb2UubmV4dFRpY2socCx3KX0odGhpcyx3KTooY2V8fGZ1bmN0aW9uIHEoXyxwLHcsSyl7dmFyIHRlPSEwLGNlPSExO3JldHVybiBudWxsPT09dz9jZT1uZXcgVHlwZUVycm9yKCJNYXkgbm90IHdyaXRlIG51bGwg''@;'; put 'put ''dmFsdWVzIHRvIHN0cmVhbSIpOiJzdHJpbmciIT10eXBlb2YgdyYmdm9pZCAwIT09dyYmIXAub2JqZWN0TW9kZSYmKGNlPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSksY2UmJihfLmVtaXQoImVycm9yIixjZSksb2UubmV4dFRpY2soSyxjZSksdGU9''@;'; put 'put ''ITEpLHRlfSh0aGlzLEssXyx3KSkmJihLLnBlbmRpbmdjYisrLHRlPWZ1bmN0aW9uIGVlKF8scCx3LEssdGUsY2Upe2lmKCF3KXt2YXIgaGU9ZnVuY3Rpb24gSihfLHAsdyl7cmV0dXJuIV8ub2JqZWN0TW9kZSYmITEhPT1fLmRlY29kZVN0cmluZ3MmJiJzdHJpbmciPT10eXBlb2YgcCYmKHA9''@;'; put 'put ''Ry5mcm9tKHAsdykpLHB9KHAsSyx0ZSk7SyE9PWhlJiYodz0hMCx0ZT0iYnVmZmVyIixLPWhlKX12YXIgU2U9cC5vYmplY3RNb2RlPzE6Sy5sZW5ndGg7cC5sZW5ndGgrPVNlO3ZhciBMZT1wLmxlbmd0aDxwLmhpZ2hXYXRlck1hcms7aWYoTGV8fChwLm5lZWREcmFpbj0hMCkscC53cml0aW5n''@;'; put 'put ''fHxwLmNvcmtlZCl7dmFyIEhlPXAubGFzdEJ1ZmZlcmVkUmVxdWVzdDtwLmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOkssZW5jb2Rpbmc6dGUsaXNCdWY6dyxjYWxsYmFjazpjZSxuZXh0Om51bGx9LEhlP0hlLm5leHQ9cC5sYXN0QnVmZmVyZWRSZXF1ZXN0OnAuYnVmZmVyZWRSZXF1ZXN0''@;'; put 'put ''PXAubGFzdEJ1ZmZlcmVkUmVxdWVzdCxwLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgcmUoXyxwLCExLFNlLEssdGUsY2UpO3JldHVybiBMZX0odGhpcyxLLGNlLF8scCx3KSksdGV9LFkucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsr''@;'; put 'put ''fSxZLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgXz10aGlzLl93cml0YWJsZVN0YXRlO18uY29ya2VkJiYoXy5jb3JrZWQtLSwhXy53cml0aW5nJiYhXy5jb3JrZWQmJiFfLmJ1ZmZlclByb2Nlc3NpbmcmJl8uYnVmZmVyZWRSZXF1ZXN0JiZiKHRoaXMsXykpfSxZLnByb3RvdHlw''@;'; put 'put ''ZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24ocCl7aWYoInN0cmluZyI9PXR5cGVvZiBwJiYocD1wLnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJh''@;'; put 'put ''dyJdLmluZGV4T2YoKHArIiIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3ApO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz1wLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlw''@;'; put 'put ''ZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLFkucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihfLHAsdyl7dyhuZXcgRXJyb3IoIl93cml0ZSgpIGlzIG5vdCBp''@;'; put 'put ''bXBsZW1lbnRlZCIpKX0sWS5wcm90b3R5cGUuX3dyaXRldj1udWxsLFkucHJvdG90eXBlLmVuZD1mdW5jdGlvbihfLHAsdyl7dmFyIEs9dGhpcy5fd3JpdGFibGVTdGF0ZTsiZnVuY3Rpb24iPT10eXBlb2YgXz8odz1fLF89bnVsbCxwPW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiBwJiYodz1w''@;'; put 'put ''LHA9bnVsbCksbnVsbCE9XyYmdGhpcy53cml0ZShfLHApLEsuY29ya2VkJiYoSy5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxLLmVuZGluZ3x8ZnVuY3Rpb24gQyhfLHAsdyl7cC5lbmRpbmc9ITAsZyhfLHApLHcmJihwLmZpbmlzaGVkP29lLm5leHRUaWNrKHcpOl8ub25jZSgiZmluaXNoIix3''@;'; put 'put ''KSkscC5lbmRlZD0hMCxfLndyaXRhYmxlPSExfSh0aGlzLEssdyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShZLnByb3RvdHlwZSwiZGVzdHJveWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJv''@;'; put 'put ''eWVkfSxzZXQ6ZnVuY3Rpb24oXyl7dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPV8pfX0pLFkucHJvdG90eXBlLmRlc3Ryb3k9ei5kZXN0cm95LFkucHJvdG90eXBlLl91bmRlc3Ryb3k9ei51bmRlc3Ryb3ksWS5wcm90b3R5cGUuX2Rlc3Ryb3k9''@;'; put 'put ''ZnVuY3Rpb24oXyxwKXt0aGlzLmVuZCgpLHAoXyl9fSwyNzgwOTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIHg9UigyNjU1KS5CdWZmZXIsbT1SKDE1MzQwKTtmdW5jdGlvbiBzZShNLE8sSSl7TS5jb3B5KE8sSSl9UWUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIE0oKXsoZnVu''@;'; put 'put ''Y3Rpb24gb2UoTSxPKXtpZighKE0gaW5zdGFuY2VvZiBPKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0pKHRoaXMsTSksdGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH1yZXR1cm4gTS5wcm90b3R5cGUu''@;'; put 'put ''cHVzaD1mdW5jdGlvbihJKXt2YXIgaj17ZGF0YTpJLG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1qOnRoaXMuaGVhZD1qLHRoaXMudGFpbD1qLCsrdGhpcy5sZW5ndGh9LE0ucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oSSl7dmFyIGo9e2RhdGE6SSxuZXh0OnRo''@;'; put 'put ''aXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPWopLHRoaXMuaGVhZD1qLCsrdGhpcy5sZW5ndGh9LE0ucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgST10aGlzLmhlYWQuZGF0YTtyZXR1cm4gdGhpcy5oZWFkPTE9PT10aGlzLmxl''@;'; put 'put ''bmd0aD90aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLEl9fSxNLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfSxNLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKEkpe2lmKDA9PT10aGlzLmxl''@;'; put 'put ''bmd0aClyZXR1cm4iIjtmb3IodmFyIGo9dGhpcy5oZWFkLEc9IiIrai5kYXRhO2o9ai5uZXh0OylHKz1JK2ouZGF0YTtyZXR1cm4gR30sTS5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKEkpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4geC5hbGxvYygwKTtmb3IodmFyIGo9eC5hbGxvY1Vu''@;'; put 'put ''c2FmZShJPj4+MCksRz10aGlzLmhlYWQsRD0wO0c7KXNlKEcuZGF0YSxqLEQpLEQrPUcuZGF0YS5sZW5ndGgsRz1HLm5leHQ7cmV0dXJuIGp9LE19KCksbSYmbS5pbnNwZWN0JiZtLmluc3BlY3QuY3VzdG9tJiYoUWUuZXhwb3J0cy5wcm90b3R5cGVbbS5pbnNwZWN0LmN1c3RvbV09ZnVuY3Rp''@;'; put 'put ''b24oKXt2YXIgTT1tLmluc3BlY3Qoe2xlbmd0aDp0aGlzLmxlbmd0aH0pO3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUrIiAiK019KX0sMjE1MDk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDk2NTYpO2Z1bmN0aW9uIHNlKE0sTyl7TS5lbWl0KCJlcnJvciIsTyl9UWUu''@;'; put 'put ''ZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbiB4KE0sTyl7dmFyIEk9dGhpcztyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPyhPP08oTSk6TSYm''@;'; put 'put ''KHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxvZS5uZXh0VGljayhzZSx0aGlzLE0pKTpvZS5uZXh0VGljayhzZSx0aGlzLE0pKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0''@;'; put 'put ''ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3koTXx8bnVsbCxmdW5jdGlvbihEKXshTyYmRD9JLl93cml0YWJsZVN0YXRlP0kuX3dyaXRhYmxlU3Rh''@;'; put 'put ''dGUuZXJyb3JFbWl0dGVkfHwoSS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsb2UubmV4dFRpY2soc2UsSSxEKSk6b2UubmV4dFRpY2soc2UsSSxEKTpPJiZPKEQpfSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbiBtKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRh''@;'; put 'put ''YmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJv''@;'; put 'put ''eWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9''@;'; put 'put ''ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfX19LDE4MzQyOihRZSxNZSxSKT0+e1FlLmV4cG9ydHM9Uig0NDM1NikuRXZlbnRFbWl0dGVyfSwyNjU1OihRZSxNZSxSKT0+e3ZhciBvZT1SKDgzODM4KSx4PW9lLkJ1ZmZlcjtmdW5jdGlvbiBtKE0sTyl7Zm9yKHZhciBJ''@;'; put 'put ''IGluIE0pT1tJXT1NW0ldfWZ1bmN0aW9uIHNlKE0sTyxJKXtyZXR1cm4geChNLE8sSSl9eC5mcm9tJiZ4LmFsbG9jJiZ4LmFsbG9jVW5zYWZlJiZ4LmFsbG9jVW5zYWZlU2xvdz9RZS5leHBvcnRzPW9lOihtKG9lLE1lKSxNZS5CdWZmZXI9c2UpLG0oeCxzZSksc2UuZnJvbT1mdW5jdGlvbihN''@;'; put 'put ''LE8sSSl7aWYoIm51bWJlciI9PXR5cGVvZiBNKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIHgoTSxPLEkpfSxzZS5hbGxvYz1mdW5jdGlvbihNLE8sSSl7aWYoIm51bWJlciIhPXR5cGVvZiBNKXRocm93IG5ldyBUeXBlRXJyb3Io''@;'; put 'put ''IkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgaj14KE0pO3JldHVybiB2b2lkIDAhPT1PPyJzdHJpbmciPT10eXBlb2YgST9qLmZpbGwoTyxJKTpqLmZpbGwoTyk6ai5maWxsKDApLGp9LHNlLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKE0pe2lmKCJudW1iZXIiIT10eXBlb2YgTSl0aHJv''@;'; put 'put ''dyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHgoTSl9LHNlLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihNKXtpZigibnVtYmVyIiE9dHlwZW9mIE0pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVy''@;'; put 'put ''biBvZS5TbG93QnVmZmVyKE0pfX0sNTk0MjooUWUsTWUsUik9PnsoTWU9UWUuZXhwb3J0cz1SKDE5NjA5KSkuU3RyZWFtPU1lLE1lLlJlYWRhYmxlPU1lLE1lLldyaXRhYmxlPVIoNDc4NDkpLE1lLkR1cGxleD1SKDc0MDc1KSxNZS5UcmFuc2Zvcm09UigyOTA5KSxNZS5QYXNzVGhyb3VnaD1S''@;'; put 'put ''KDE4ODIzKX0sMzY2MzY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDgzODM4KS5CdWZmZXIseD1SKDcxOTkzKSxtPVIoMTM2ODYpLHNlPW5ldyBBcnJheSgxNiksTT1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIs''@;'; put 'put ''MCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxPPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwx''@;'; put 'put ''MCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLEk9WzEx''@;'; put 'put ''LDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUs''@;'; put 'put ''MTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdLGo9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwx''@;'; put 'put ''MSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdLEc9WzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0sRD1bMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5''@;'; put 'put ''NDIxNywwXTtmdW5jdGlvbiBUKCl7bS5jYWxsKHRoaXMsNjQpLHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMH1mdW5jdGlvbiBFKFUscSl7cmV0dXJuIFU8PHF8VT4+PjMy''@;'; put 'put ''LXF9ZnVuY3Rpb24geihVLHEsSixlZSxyZSxpZSx1ZSxsZSl7cmV0dXJuIEUoVSsocV5KXmVlKStpZSt1ZXwwLGxlKStyZXwwfWZ1bmN0aW9uIE4oVSxxLEosZWUscmUsaWUsdWUsbGUpe3JldHVybiBFKFUrKHEmSnx+cSZlZSkraWUrdWV8MCxsZSkrcmV8MH1mdW5jdGlvbiBCKFUscSxKLGVl''@;'; put 'put ''LHJlLGllLHVlLGxlKXtyZXR1cm4gRShVKygocXx+SileZWUpK2llK3VlfDAsbGUpK3JlfDB9ZnVuY3Rpb24gWihVLHEsSixlZSxyZSxpZSx1ZSxsZSl7cmV0dXJuIEUoVSsocSZlZXxKJn5lZSkraWUrdWV8MCxsZSkrcmV8MH1mdW5jdGlvbiBZKFUscSxKLGVlLHJlLGllLHVlLGxlKXtyZXR1''@;'; put 'put ''cm4gRShVKyhxXihKfH5lZSkpK2llK3VlfDAsbGUpK3JlfDB9eChULG0pLFQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXtmb3IodmFyIFU9c2UscT0wO3E8MTY7KytxKVVbcV09dGhpcy5fYmxvY2sucmVhZEludDMyTEUoNCpxKTtmb3IodmFyIEo9MHx0aGlzLl9hLGVlPTB8dGhpcy5f''@;'; put 'put ''YixyZT0wfHRoaXMuX2MsaWU9MHx0aGlzLl9kLHVlPTB8dGhpcy5fZSxsZT0wfHRoaXMuX2EsYWU9MHx0aGlzLl9iLFc9MHx0aGlzLl9jLGI9MHx0aGlzLl9kLEE9MHx0aGlzLl9lLEY9MDtGPDgwO0YrPTEpe3ZhciBILGc7RjwxNj8oSD16KEosZWUscmUsaWUsdWUsVVtNW0ZdXSxHWzBdLElb''@;'; put 'put ''Rl0pLGc9WShsZSxhZSxXLGIsQSxVW09bRl1dLERbMF0saltGXSkpOkY8MzI/KEg9TihKLGVlLHJlLGllLHVlLFVbTVtGXV0sR1sxXSxJW0ZdKSxnPVoobGUsYWUsVyxiLEEsVVtPW0ZdXSxEWzFdLGpbRl0pKTpGPDQ4PyhIPUIoSixlZSxyZSxpZSx1ZSxVW01bRl1dLEdbMl0sSVtGXSksZz1C''@;'; put 'put ''KGxlLGFlLFcsYixBLFVbT1tGXV0sRFsyXSxqW0ZdKSk6Rjw2ND8oSD1aKEosZWUscmUsaWUsdWUsVVtNW0ZdXSxHWzNdLElbRl0pLGc9TihsZSxhZSxXLGIsQSxVW09bRl1dLERbM10saltGXSkpOihIPVkoSixlZSxyZSxpZSx1ZSxVW01bRl1dLEdbNF0sSVtGXSksZz16KGxlLGFlLFcsYixB''@;'; put 'put ''LFVbT1tGXV0sRFs0XSxqW0ZdKSksSj11ZSx1ZT1pZSxpZT1FKHJlLDEwKSxyZT1lZSxlZT1ILGxlPUEsQT1iLGI9RShXLDEwKSxXPWFlLGFlPWd9dmFyIEM9dGhpcy5fYityZStifDA7dGhpcy5fYj10aGlzLl9jK2llK0F8MCx0aGlzLl9jPXRoaXMuX2QrdWUrbGV8MCx0aGlzLl9kPXRoaXMu''@;'; put 'put ''X2UrSithZXwwLHRoaXMuX2U9dGhpcy5fYStlZStXfDAsdGhpcy5fYT1DfSxULnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4LHRoaXMuX2Jsb2NrT2Zmc2V0PjU2JiYodGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2Nr''@;'; put 'put ''T2Zmc2V0LDY0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9ibG9ja09mZnNldD0wKSx0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNTYpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLDU2KSx0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMu''@;'; put 'put ''X2xlbmd0aFsxXSw2MCksdGhpcy5fdXBkYXRlKCk7dmFyIFU9b2UuYWxsb2M/b2UuYWxsb2MoMjApOm5ldyBvZSgyMCk7cmV0dXJuIFUud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCksVS53cml0ZUludDMyTEUodGhpcy5fYiw0KSxVLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpLFUud3JpdGVJbnQz''@;'; put 'put ''MkxFKHRoaXMuX2QsMTIpLFUud3JpdGVJbnQzMkxFKHRoaXMuX2UsMTYpLFV9LFFlLmV4cG9ydHM9VH0sMjcwNTQ6KFFlLE1lLFIpPT57dmFyIG9lPVIoODM4MzgpLHg9b2UuQnVmZmVyO2Z1bmN0aW9uIG0oTSxPKXtmb3IodmFyIEkgaW4gTSlPW0ldPU1bSV19ZnVuY3Rpb24gc2UoTSxPLEkp''@;'; put 'put ''e3JldHVybiB4KE0sTyxJKX14LmZyb20mJnguYWxsb2MmJnguYWxsb2NVbnNhZmUmJnguYWxsb2NVbnNhZmVTbG93P1FlLmV4cG9ydHM9b2U6KG0ob2UsTWUpLE1lLkJ1ZmZlcj1zZSksc2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeC5wcm90b3R5cGUpLG0oeCxzZSksc2UuZnJvbT1mdW5j''@;'; put 'put ''dGlvbihNLE8sSSl7aWYoIm51bWJlciI9PXR5cGVvZiBNKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIHgoTSxPLEkpfSxzZS5hbGxvYz1mdW5jdGlvbihNLE8sSSl7aWYoIm51bWJlciIhPXR5cGVvZiBNKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgaj14KE0pO3JldHVybiB2b2lkIDAhPT1PPyJzdHJpbmciPT10eXBlb2YgST9qLmZpbGwoTyxJKTpqLmZpbGwoTyk6ai5maWxsKDApLGp9LHNlLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKE0pe2lmKCJudW1iZXIiIT10eXBlb2Yg''@;'; put 'put ''TSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHgoTSl9LHNlLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihNKXtpZigibnVtYmVyIiE9dHlwZW9mIE0pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIp''@;'; put 'put ''O3JldHVybiBvZS5TbG93QnVmZmVyKE0pfX0sOTM4MDc6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBzZSxvZT1SKDgzODM4KSx4PW9lLkJ1ZmZlcixtPXt9O2ZvcihzZSBpbiBvZSlvZS5oYXNPd25Qcm9wZXJ0eShzZSkmJigiU2xvd0J1ZmZlciI9PT1zZXx8IkJ1ZmZlciI9PT1zZXx8''@;'; put 'put ''KG1bc2VdPW9lW3NlXSkpO3ZhciBNPW0uQnVmZmVyPXt9O2ZvcihzZSBpbiB4KXguaGFzT3duUHJvcGVydHkoc2UpJiYoImFsbG9jVW5zYWZlIj09PXNlfHwiYWxsb2NVbnNhZmVTbG93Ij09PXNlfHwoTVtzZV09eFtzZV0pKTtpZihtLkJ1ZmZlci5wcm90b3R5cGU9eC5wcm90b3R5cGUsKCFN''@;'; put 'put ''LmZyb218fE0uZnJvbT09PVVpbnQ4QXJyYXkuZnJvbSkmJihNLmZyb209ZnVuY3Rpb24oTyxJLGope2lmKCJudW1iZXIiPT10eXBlb2YgTyl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAn''@;'; put 'put ''K3R5cGVvZiBPKTtpZihPJiZ0eXBlb2YgTy5sZW5ndGg+InUiKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0''@;'; put 'put ''eXBlICIrdHlwZW9mIE8pO3JldHVybiB4KE8sSSxqKX0pLE0uYWxsb2N8fChNLmFsbG9jPWZ1bmN0aW9uKE8sSSxqKXtpZigibnVtYmVyIiE9dHlwZW9mIE8pdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJzaXplIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0''@;'; put 'put ''eXBlICcrdHlwZW9mIE8pO2lmKE88MHx8Tz49MiooMTw8MzApKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgIicrTysnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gInNpemUiJyk7dmFyIEc9eChPKTtyZXR1cm4gSSYmMCE9PUkubGVuZ3RoPyJzdHJpbmciPT10eXBlb2Ygaj9HLmZp''@;'; put 'put ''bGwoSSxqKTpHLmZpbGwoSSk6Ry5maWxsKDApLEd9KSwhbS5rU3RyaW5nTWF4TGVuZ3RoKXRyeXttLmtTdHJpbmdNYXhMZW5ndGg9cHJvY2Vzcy5iaW5kaW5nKCJidWZmZXIiKS5rU3RyaW5nTWF4TGVuZ3RofWNhdGNoe31tLmNvbnN0YW50c3x8KG0uY29uc3RhbnRzPXtNQVhfTEVOR1RIOm0u''@;'; put 'put ''a01heExlbmd0aH0sbS5rU3RyaW5nTWF4TGVuZ3RoJiYobS5jb25zdGFudHMuTUFYX1NUUklOR19MRU5HVEg9bS5rU3RyaW5nTWF4TGVuZ3RoKSksUWUuZXhwb3J0cz1tfSw5ODA4MzooUWUsTWUpPT57InVzZSBzdHJpY3QiO3ZhciBvZTshZnVuY3Rpb24oKXt2YXIgeD1NZXx8e307dm9pZCAw''@;'; put 'put ''IT09KG9lPWZ1bmN0aW9uKCl7cmV0dXJuIHh9LmFwcGx5KE1lLFtdKSkmJihRZS5leHBvcnRzPW9lKSx4LmRlZmF1bHQ9eDt2YXIgbT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLE09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixJPS91cmxcKFsiJ10/KC4rPylbIiddP1wp''@;'; put 'put ''LyxqPXt3b2ZmMjoiZm9udC93b2ZmMiIsd29mZjoiZm9udC93b2ZmIixvdGY6ImFwcGxpY2F0aW9uL3gtZm9udC1vcGVudHlwZSIsdHRmOiJhcHBsaWNhdGlvbi94LWZvbnQtdHRmIixlb3Q6ImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0IixzZm50OiJhcHBsaWNhdGlvbi9mb250LXNm''@;'; put 'put ''bnQiLHN2ZzoiaW1hZ2Uvc3ZnK3htbCJ9LEc9ZnVuY3Rpb24oQSl7cmV0dXJuIEEgaW5zdGFuY2VvZiBIVE1MRWxlbWVudHx8QSBpbnN0YW5jZW9mIFNWR0VsZW1lbnR9LEQ9ZnVuY3Rpb24oQSl7aWYoIUcoQSkpdGhyb3cgbmV3IEVycm9yKCJhbiBIVE1MRWxlbWVudCBvciBTVkdFbGVtZW50''@;'; put 'put ''IGlzIHJlcXVpcmVkOyBnb3QgIitBKX0sVD1mdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oRixIKXtHKEEpP0YoQSk6SChuZXcgRXJyb3IoImFuIEhUTUxFbGVtZW50IG9yIFNWR0VsZW1lbnQgaXMgcmVxdWlyZWQ7IGdvdCAiK0EpKX0pfSx6PWZ1bmN0aW9uKEEpe3Zh''@;'; put 'put ''ciBGPU9iamVjdC5rZXlzKGopLmZpbHRlcihmdW5jdGlvbihIKXtyZXR1cm4gQS5pbmRleE9mKCIuIitIKT4wfSkubWFwKGZ1bmN0aW9uKEgpe3JldHVybiBqW0hdfSk7cmV0dXJuIEY/RlswXTooY29uc29sZS5lcnJvcigiVW5rbm93biBmb250IGZvcm1hdCBmb3IgIitBKyIuIEZvbnRzIG1h''@;'; put 'put ''eSBub3QgYmUgd29ya2luZyBjb3JyZWN0bHkuIiksImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpfSxCPWZ1bmN0aW9uKEEsRixIKXt2YXIgZz1BLnZpZXdCb3gmJkEudmlld0JveC5iYXNlVmFsJiZBLnZpZXdCb3guYmFzZVZhbFtIXXx8bnVsbCE9PUYuZ2V0QXR0cmlidXRlKEgpJiYhRi5n''@;'; put 'put ''ZXRBdHRyaWJ1dGUoSCkubWF0Y2goLyUkLykmJnBhcnNlSW50KEYuZ2V0QXR0cmlidXRlKEgpKXx8QS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtIXXx8cGFyc2VJbnQoRi5zdHlsZVtIXSl8fHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKEEpLmdldFByb3BlcnR5VmFsdWUoSCkp''@;'; put 'put ''O3JldHVybiB0eXBlb2YgZz4idSJ8fG51bGw9PT1nfHxpc05hTihwYXJzZUZsb2F0KGcpKT8wOmd9LFU9ZnVuY3Rpb24oQSl7Zm9yKHZhciBGPXdpbmRvdy5hdG9iKEEuc3BsaXQoIiwiKVsxXSksSD1BLnNwbGl0KCIsIilbMF0uc3BsaXQoIjoiKVsxXS5zcGxpdCgiOyIpWzBdLGc9bmV3IEFy''@;'; put 'put ''cmF5QnVmZmVyKEYubGVuZ3RoKSxDPW5ldyBVaW50OEFycmF5KGcpLGs9MDtrPEYubGVuZ3RoO2srKylDW2tdPUYuY2hhckNvZGVBdChrKTtyZXR1cm4gbmV3IEJsb2IoW2ddLHt0eXBlOkh9KX0scmU9e30sdWU9bnVsbCxhZT1mdW5jdGlvbihBLEYpe3ZhciBIPUZ8fHt9LGc9SC5zZWxlY3Rv''@;'; put 'put ''clJlbWFwLEM9SC5tb2RpZnlTdHlsZSxfPUguZm9udHMscD1ILmV4Y2x1ZGVVbnVzZWRDc3Msdz1ILm1vZGlmeUNzc3x8ZnVuY3Rpb24oaGUsU2Upe3JldHVybihnP2coaGUpOmhlKSsieyIrKEM/QyhTZSk6U2UpKyJ9XG4ifSxLPVtdLHRlPXR5cGVvZiBfPiJ1IixjZT1ffHxbXTtyZXR1cm4o''@;'; put 'put ''dWV8fCh1ZT1BcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKS5tYXAoZnVuY3Rpb24oQSl7dHJ5e3JldHVybntydWxlczpBLmNzc1J1bGVzLGhyZWY6QS5ocmVmfX1jYXRjaChGKXtyZXR1cm4gY29uc29sZS53YXJuKCJTdHlsZXNoZWV0IGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICIrQS5o''@;'; put 'put ''cmVmLEYpLHt9fX0pKSkuZm9yRWFjaChmdW5jdGlvbihoZSl7dmFyIFNlPWhlLnJ1bGVzLExlPWhlLmhyZWY7U2UmJkFycmF5LmZyb20oU2UpLmZvckVhY2goZnVuY3Rpb24oSGUpe2lmKHR5cGVvZiBIZS5zdHlsZTwidSIpaWYoZnVuY3Rpb24oQSxGKXtpZihGKXRyeXtyZXR1cm4gQS5xdWVy''@;'; put 'put ''eVNlbGVjdG9yKEYpfHxBLnBhcmVudE5vZGUmJkEucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKEYpfWNhdGNoKEgpe2NvbnNvbGUud2FybignSW52YWxpZCBDU1Mgc2VsZWN0b3IgIicrRisnIicsSCl9fShBLEhlLnNlbGVjdG9yVGV4dCkpSy5wdXNoKHcoSGUuc2VsZWN0b3JUZXh0LEhlLnN0''@;'; put 'put ''eWxlLmNzc1RleHQpKTtlbHNlIGlmKHRlJiZIZS5jc3NUZXh0Lm1hdGNoKC9eQGZvbnQtZmFjZS8pKXt2YXIgeGU9ZnVuY3Rpb24oQSxGKXt2YXIgSD1BLmNzc1RleHQubWF0Y2goSSksZz1IJiZIWzFdfHwiIjtpZihnJiYhZy5tYXRjaCgvXmRhdGE6LykmJiJhYm91dDpibGFuayIhPT1nKXt2''@;'; put 'put ''YXIgQz1nLnN0YXJ0c1dpdGgoIi4uLyIpP0YrIi8uLi8iK2c6Zy5zdGFydHNXaXRoKCIuLyIpP0YrIi8uIitnOmc7cmV0dXJue3RleHQ6QS5jc3NUZXh0LGZvcm1hdDp6KEMpLHVybDpDfX19KEhlLExlKTt4ZSYmY2UucHVzaCh4ZSl9ZWxzZSBwfHxLLnB1c2goSGUuY3NzVGV4dCl9KX0pLGZ1''@;'; put 'put ''bmN0aW9uKEEpe3JldHVybiBQcm9taXNlLmFsbChBLm1hcChmdW5jdGlvbihGKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oSCxnKXtpZihyZVtGLnVybF0pcmV0dXJuIEgocmVbRi51cmxdKTt2YXIgQz1uZXcgWE1MSHR0cFJlcXVlc3Q7Qy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixm''@;'; put 'put ''dW5jdGlvbigpe3ZhciBrPWZ1bmN0aW9uKEEpe2Zvcih2YXIgRj0iIixIPW5ldyBVaW50OEFycmF5KEEpLGc9MDtnPEguYnl0ZUxlbmd0aDtnKyspRis9U3RyaW5nLmZyb21DaGFyQ29kZShIW2ddKTtyZXR1cm4gd2luZG93LmJ0b2EoRil9KEMucmVzcG9uc2UpLF89Ri50ZXh0LnJlcGxhY2Uo''@;'; put 'put ''SSwndXJsKCJkYXRhOicrRi5mb3JtYXQrIjtiYXNlNjQsIitrKyciKScpKyJcbiI7cmVbRi51cmxdPV8sSChfKX0pLEMuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKGspe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIGxvYWQgZm9udCBmcm9tOiAiK0YudXJsLGspLHJlW0YudXJs''@;'; put 'put ''XT1udWxsLEgobnVsbCl9KSxDLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixmdW5jdGlvbihrKXtjb25zb2xlLndhcm4oIkFib3J0ZWQgbG9hZGluZyBmb250IGZyb206ICIrRi51cmwsayksSChudWxsKX0pLEMub3BlbigiR0VUIixGLnVybCksQy5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVy''@;'; put 'put ''IixDLnNlbmQoKX0pfSkpLnRoZW4oZnVuY3Rpb24oRil7cmV0dXJuIEYuZmlsdGVyKGZ1bmN0aW9uKEgpe3JldHVybiBIfSkuam9pbigiIil9KX0oY2UpLnRoZW4oZnVuY3Rpb24oaGUpe3JldHVybiBLLmpvaW4oIlxuIikraGV9KX0sVz1mdW5jdGlvbigpe2lmKCFuYXZpZ2F0b3IubXNTYXZl''@;'; put 'put ''T3JPcGVuQmxvYiYmISgiZG93bmxvYWQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpKSlyZXR1cm57cG9wdXA6d2luZG93Lm9wZW4oKX19O3gucHJlcGFyZVN2Zz1mdW5jdGlvbihiLEEsRil7RChiKTt2YXIgSD1BfHx7fSxnPUgubGVmdCxDPXZvaWQgMD09PWc/MDpnLGs9SC50b3As''@;'; put 'put ''Xz12b2lkIDA9PT1rPzA6ayxwPUgud2lkdGgsdz1ILmhlaWdodCxLPUguc2NhbGUsdGU9dm9pZCAwPT09Sz8xOkssY2U9SC5yZXNwb25zaXZlLGhlPXZvaWQgMCE9PWNlJiZjZSxTZT1ILmV4Y2x1ZGVDc3MsTGU9dm9pZCAwIT09U2UmJlNlO3JldHVybiBmdW5jdGlvbihBKXtyZXR1cm4gUHJv''@;'; put 'put ''bWlzZS5hbGwoQXJyYXkuZnJvbShBLnF1ZXJ5U2VsZWN0b3JBbGwoImltYWdlIikpLm1hcChmdW5jdGlvbihGKXt2YXIgSD1GLmdldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwiaHJlZiIpfHxGLmdldEF0dHJpYnV0ZSgiaHJlZiIpO3JldHVybiBIPyhmdW5j''@;'; put 'put ''dGlvbihBKXtyZXR1cm4gQSYmMD09PUEubGFzdEluZGV4T2YoImh0dHAiLDApJiYtMT09PUEubGFzdEluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3QpfShIKSYmKEgrPSgtMT09PUguaW5kZXhPZigiPyIpPyI/IjoiJiIpKyJ0PSIrKG5ldyBEYXRlKS52YWx1ZU9mKCkpLG5ldyBQcm9taXNl''@;'; put 'put ''KGZ1bmN0aW9uKGcsQyl7dmFyIGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksXz1uZXcgSW1hZ2U7Xy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIixfLnNyYz1ILF8ub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBDKG5ldyBFcnJvcigiQ291bGQgbm90IGxvYWQgIitIKSl9LF8u''@;'; put 'put ''b25sb2FkPWZ1bmN0aW9uKCl7ay53aWR0aD1fLndpZHRoLGsuaGVpZ2h0PV8uaGVpZ2h0LGsuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoXywwLDApLEYuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixrLnRvRGF0YVVSTCgiaW1hZ2UvcG5n''@;'; put 'put ''IikpLGcoITApfX0pKTpQcm9taXNlLnJlc29sdmUobnVsbCl9KSl9KGIpLnRoZW4oZnVuY3Rpb24oKXt2YXIgSGU9Yi5jbG9uZU5vZGUoITApO0hlLnN0eWxlLmJhY2tncm91bmRDb2xvcj0oQXx8e30pLmJhY2tncm91bmRDb2xvcnx8Yi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I7dmFyIHhlPWZ1''@;'; put 'put ''bmN0aW9uKEEsRixILGcpe2lmKCJzdmciPT09QS50YWdOYW1lKXJldHVybnt3aWR0aDpIfHxCKEEsRiwid2lkdGgiKSxoZWlnaHQ6Z3x8QihBLEYsImhlaWdodCIpfTtpZihBLmdldEJCb3gpe3ZhciBDPUEuZ2V0QkJveCgpO3JldHVybnt3aWR0aDpDLngrQy53aWR0aCxoZWlnaHQ6Qy55K0Mu''@;'; put 'put ''aGVpZ2h0fX19KGIsSGUscCx3KSxEZT14ZS53aWR0aCxCZT14ZS5oZWlnaHQ7aWYoInN2ZyIhPT1iLnRhZ05hbWUpe2lmKCFiLmdldEJCb3gpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiQXR0ZW1wdGVkIHRvIHJlbmRlciBub24tU1ZHIGVsZW1lbnQiLGIpO251bGwhPUhlLmdldEF0dHJp''@;'; put 'put ''YnV0ZSgidHJhbnNmb3JtIikmJkhlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixIZS5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpLnJlcGxhY2UoL3RyYW5zbGF0ZVwoLio/XCkvLCIiKSk7dmFyIEdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z''@;'; put 'put ''dmciLCJzdmciKTtHZS5hcHBlbmRDaGlsZChIZSksSGU9R2V9aWYoSGUuc2V0QXR0cmlidXRlKCJ2ZXJzaW9uIiwiMS4xIiksSGUuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbQyxfLERlLEJlXS5qb2luKCIgIikpLEhlLmdldEF0dHJpYnV0ZSgieG1sbnMiKXx8SGUuc2V0QXR0cmlidXRlTlMo''@;'; put 'put ''bSwieG1sbnMiLE0pLEhlLmdldEF0dHJpYnV0ZSgieG1sbnM6eGxpbmsiKXx8SGUuc2V0QXR0cmlidXRlTlMobSwieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiksaGU/KEhlLnJlbW92ZUF0dHJpYnV0ZSgid2lkdGgiKSxIZS5yZW1vdmVBdHRyaWJ1dGUoImhl''@;'; put 'put ''aWdodCIpLEhlLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaW5ZTWluIG1lZXQiKSk6KEhlLnNldEF0dHJpYnV0ZSgid2lkdGgiLERlKnRlKSxIZS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsQmUqdGUpKSxBcnJheS5mcm9tKEhlLnF1ZXJ5U2VsZWN0b3JBbGwoImZvcmVp''@;'; put 'put ''Z25PYmplY3QgPiAqIikpLmZvckVhY2goZnVuY3Rpb24ob3Qpe290LnNldEF0dHJpYnV0ZU5TKG0sInhtbG5zIiwic3ZnIj09PW90LnRhZ05hbWU/TToiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpfSksIUxlKXJldHVybiBhZShiLEEpLnRoZW4oZnVuY3Rpb24ob3Qpe3ZhciBGZT1k''@;'; put 'put ''b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0ZlLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksRmUuaW5uZXJIVE1MPSI8IVtDREFUQVtcbiIrb3QrIlxuXV0+Ijt2YXIgd2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGVmcyIpO3dlLmFwcGVuZENoaWxkKEZlKSxIZS5p''@;'; put 'put ''bnNlcnRCZWZvcmUod2UsSGUuZmlyc3RDaGlsZCk7dmFyIEVlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0VlLmFwcGVuZENoaWxkKEhlKTt2YXIgSWU9RWUuaW5uZXJIVE1MLnJlcGxhY2UoL05TXGQrOmhyZWYvZ2ksJ3htbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5''@;'; put 'put ''L3hsaW5rIiB4bGluazpocmVmJyk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEYpcmV0dXJue3NyYzpJZSx3aWR0aDpEZSxoZWlnaHQ6QmV9O0YoSWUsRGUsQmUpfSk7dmFyIFVlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1VlLmFwcGVuZENoaWxkKEhlKTt2YXIgcWU9VWUuaW5uZXJI''@;'; put 'put ''VE1MO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBGKXJldHVybntzcmM6cWUsd2lkdGg6RGUsaGVpZ2h0OkJlfTtGKHFlLERlLEJlKX0pfSx4LnN2Z0FzRGF0YVVyaT1mdW5jdGlvbihiLEEsRil7cmV0dXJuIEQoYikseC5wcmVwYXJlU3ZnKGIsQSkudGhlbihmdW5jdGlvbihIKXt2YXIgQz1ILndp''@;'; put 'put ''ZHRoLGs9SC5oZWlnaHQsXz0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwiK3dpbmRvdy5idG9hKGZ1bmN0aW9uKEEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csZnVuY3Rpb24oRixIKXt2YXIgZz1T''@;'; put 'put ''dHJpbmcuZnJvbUNoYXJDb2RlKCIweCIrSCk7cmV0dXJuIiUiPT09Zz8iJTI1IjpnfSkpfSgnPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNz''@;'; put 'put ''L1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgWzwhRU5USVRZIG5ic3AgIiYjMTYwOyI+XT4nK0guc3JjKSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEYmJkYoXyxDLGspLF99KX0seC5zdmdBc1BuZ1VyaT1mdW5jdGlvbihiLEEsRil7RChiKTt2YXIgSD1BfHx7fSxnPUguZW5jb2RlclR5cGUs''@;'; put 'put ''Qz12b2lkIDA9PT1nPyJpbWFnZS9wbmciOmcsaz1ILmVuY29kZXJPcHRpb25zLF89dm9pZCAwPT09az8uODprLHA9SC5jYW52Zyx3PWZ1bmN0aW9uKHRlKXt2YXIgY2U9dGUuc3JjLGhlPXRlLndpZHRoLFNlPXRlLmhlaWdodCxMZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxI''@;'; put 'put ''ZT1MZS5nZXRDb250ZXh0KCIyZCIpLHhlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxO0xlLndpZHRoPWhlKnhlLExlLmhlaWdodD1TZSp4ZSxMZS5zdHlsZS53aWR0aD1MZS53aWR0aCsicHgiLExlLnN0eWxlLmhlaWdodD1MZS5oZWlnaHQrInB4IixIZS5zZXRUcmFuc2Zvcm0oeGUsMCww''@;'; put 'put ''LHhlLDAsMCkscD9wKExlLGNlKTpIZS5kcmF3SW1hZ2UoY2UsMCwwKTt2YXIgRGU9dm9pZCAwO3RyeXtEZT1MZS50b0RhdGFVUkwoQyxfKX1jYXRjaChCZSl7aWYodHlwZW9mIFNlY3VyaXR5RXJyb3I8InUiJiZCZSBpbnN0YW5jZW9mIFNlY3VyaXR5RXJyb3J8fCJTZWN1cml0eUVycm9yIj09''@;'; put 'put ''PUJlLm5hbWUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiUmVuZGVyZWQgU1ZHIGltYWdlcyBjYW5ub3QgYmUgZG93bmxvYWRlZCBpbiB0aGlzIGJyb3dzZXIuIik7dGhyb3cgQmV9cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEYmJkYoRGUsTGUud2lkdGgsTGUuaGVpZ2h0KSxQcm9taXNl''@;'; put 'put ''LnJlc29sdmUoRGUpfTtyZXR1cm4gcD94LnByZXBhcmVTdmcoYixBKS50aGVuKHcpOnguc3ZnQXNEYXRhVXJpKGIsQSkudGhlbihmdW5jdGlvbihLKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odGUsY2Upe3ZhciBoZT1uZXcgSW1hZ2U7aGUub25sb2FkPWZ1bmN0aW9uKCl7cmV0dXJu''@;'; put 'put ''IHRlKHcoe3NyYzpoZSx3aWR0aDpoZS53aWR0aCxoZWlnaHQ6aGUuaGVpZ2h0fSkpfSxoZS5vbmVycm9yPWZ1bmN0aW9uKCl7Y2UoIlRoZXJlIHdhcyBhbiBlcnJvciBsb2FkaW5nIHRoZSBkYXRhIFVSSSBhcyBhbiBpbWFnZSBvbiB0aGUgZm9sbG93aW5nIFNWR1xuIit3aW5kb3cuYXRvYihL''@;'; put 'put ''LnNsaWNlKDI2KSkrIk9wZW4gdGhlIGZvbGxvd2luZyBsaW5rIHRvIHNlZSBicm93c2VyJ3MgZGlhZ25vc2lzXG4iK0spfSxoZS5zcmM9S30pfSl9LHguZG93bmxvYWQ9ZnVuY3Rpb24oYixBLEYpe2lmKG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKW5hdmlnYXRvci5tc1NhdmVPck9wZW5C''@;'; put 'put ''bG9iKFUoQSksYik7ZWxzZXt2YXIgSD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aWYoImRvd25sb2FkImluIEgpe0guZG93bmxvYWQ9YixILnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoSCk7dHJ5e3ZhciBnPVUoQSksQz1VUkwuY3JlYXRlT2Jq''@;'; put 'put ''ZWN0VVJMKGcpO0guaHJlZj1DLEgub25jbGljaz1mdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gVVJMLnJldm9rZU9iamVjdFVSTChDKX0pfX1jYXRjaChrKXtjb25zb2xlLmVycm9yKGspLGNvbnNvbGUud2FybigiRXJyb3Igd2hpbGUg''@;'; put 'put ''Z2V0dGluZyBvYmplY3QgVVJMLiBGYWxsaW5nIGJhY2sgdG8gc3RyaW5nIFVSTC4iKSxILmhyZWY9QX1ILmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChIKX1lbHNlIEYmJkYucG9wdXAmJihGLnBvcHVwLmRvY3VtZW50LnRpdGxlPWIsRi5wb3B1cC5sb2NhdGlvbi5yZXBsYWNl''@;'; put 'put ''KEEpKX19LHguc2F2ZVN2Zz1mdW5jdGlvbihiLEEsRil7dmFyIEg9VygpO3JldHVybiBUKGIpLnRoZW4oZnVuY3Rpb24oZyl7cmV0dXJuIHguc3ZnQXNEYXRhVXJpKGcsRnx8e30pfSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4geC5kb3dubG9hZChBLGcsSCl9KX0seC5zYXZlU3ZnQXNQbmc9''@;'; put 'put ''ZnVuY3Rpb24oYixBLEYpe3ZhciBIPVcoKTtyZXR1cm4gVChiKS50aGVuKGZ1bmN0aW9uKGcpe3JldHVybiB4LnN2Z0FzUG5nVXJpKGcsRnx8e30pfSkudGhlbihmdW5jdGlvbihnKXtyZXR1cm4geC5kb3dubG9hZChBLGcsSCl9KX19KCl9LDcwNDYzOihRZSxNZSxSKT0+e3ZhciBvZT1SKDI3''@;'; put 'put ''MDU0KS5CdWZmZXI7ZnVuY3Rpb24geChtLHNlKXt0aGlzLl9ibG9jaz1vZS5hbGxvYyhtKSx0aGlzLl9maW5hbFNpemU9c2UsdGhpcy5fYmxvY2tTaXplPW0sdGhpcy5fbGVuPTB9eC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKG0sc2UpeyJzdHJpbmciPT10eXBlb2YgbSYmKG09b2UuZnJv''@;'; put 'put ''bShtLHNlPXNlfHwidXRmOCIpKTtmb3IodmFyIE09dGhpcy5fYmxvY2ssTz10aGlzLl9ibG9ja1NpemUsST1tLmxlbmd0aCxqPXRoaXMuX2xlbixHPTA7RzxJOyl7Zm9yKHZhciBEPWolTyxUPU1hdGgubWluKEktRyxPLUQpLEU9MDtFPFQ7RSsrKU1bRCtFXT1tW0crRV07Rys9VCwoais9VCkl''@;'; put 'put ''Tz09MCYmdGhpcy5fdXBkYXRlKE0pfXJldHVybiB0aGlzLl9sZW4rPUksdGhpc30seC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKG0pe3ZhciBzZT10aGlzLl9sZW4ldGhpcy5fYmxvY2tTaXplO3RoaXMuX2Jsb2NrW3NlXT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLHNlKzEpLHNlPj10aGlz''@;'; put 'put ''Ll9maW5hbFNpemUmJih0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spLHRoaXMuX2Jsb2NrLmZpbGwoMCkpO3ZhciBNPTgqdGhpcy5fbGVuO2lmKE08PTQyOTQ5NjcyOTUpdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShNLHRoaXMuX2Jsb2NrU2l6ZS00KTtlbHNle3ZhciBPPSg0Mjk0OTY3Mjk1''@;'; put 'put ''Jk0pPj4+MDt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKChNLU8pLzQyOTQ5NjcyOTYsdGhpcy5fYmxvY2tTaXplLTgpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoTyx0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgaj10aGlzLl9oYXNoKCk7cmV0''@;'; put 'put ''dXJuIG0/ai50b1N0cmluZyhtKTpqfSx4LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX0sUWUuZXhwb3J0cz14fSwyNTQ0MzooUWUsTWUsUik9Pnt2YXIgb2U9UWUuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbihtKXttPW0udG9Mb3dlckNhc2UoKTt2YXIgc2U9b2VbbV07aWYoIXNlKXRocm93IG5ldyBFcnJvcihtKyIgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpIik7cmV0dXJuIG5ldyBzZX07b2Uuc2hhPVIoNDg1ODUpLG9lLnNoYTE9UigyMTI3MCksb2Uu''@;'; put 'put ''c2hhMjI0PVIoNDI3MDkpLG9lLnNoYTI1Nj1SKDMyMTQ4KSxvZS5zaGEzODQ9Uig1MTg1Niksb2Uuc2hhNTEyPVIoMzEyMSl9LDQ4NTg1OihRZSxNZSxSKT0+e3ZhciBvZT1SKDcxOTkzKSx4PVIoNzA0NjMpLG09UigyNzA1NCkuQnVmZmVyLHNlPVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsLTE4''@;'; put 'put ''OTQwMDc1ODgsLTg5OTQ5NzUxNF0sTT1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIE8oKXt0aGlzLmluaXQoKSx0aGlzLl93PU0seC5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIEkoRCl7cmV0dXJuIEQ8PDV8RD4+PjI3fWZ1bmN0aW9uIGooRCl7cmV0dXJuIEQ8PDMwfEQ+Pj4yfWZ1bmN0aW9u''@;'; put 'put ''IEcoRCxULEUseil7cmV0dXJuIDA9PT1EP1QmRXx+VCZ6OjI9PT1EP1QmRXxUJnp8RSZ6OlReRV56fW9lKE8seCksTy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3MzI1ODQxOTMsdGhpcy5fYj00MDIzMjMzNDE3LHRoaXMuX2M9MjU2MjM4MzEwMix0aGlzLl9k''@;'; put 'put ''PTI3MTczMzg3OCx0aGlzLl9lPTMyODUzNzc1MjAsdGhpc30sTy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihEKXtmb3IodmFyIFQ9dGhpcy5fdyxFPTB8dGhpcy5fYSx6PTB8dGhpcy5fYixOPTB8dGhpcy5fYyxCPTB8dGhpcy5fZCxaPTB8dGhpcy5fZSxZPTA7WTwxNjsrK1kpVFtZXT1E''@;'; put 'put ''LnJlYWRJbnQzMkJFKDQqWSk7Zm9yKDtZPDgwOysrWSlUW1ldPVRbWS0zXV5UW1ktOF1eVFtZLTE0XV5UW1ktMTZdO2Zvcih2YXIgVT0wO1U8ODA7KytVKXt2YXIgcT1+fihVLzIwKSxKPUkoRSkrRyhxLHosTixCKStaK1RbVV0rc2VbcV18MDtaPUIsQj1OLE49aih6KSx6PUUsRT1KfXRoaXMu''@;'; put 'put ''X2E9RSt0aGlzLl9hfDAsdGhpcy5fYj16K3RoaXMuX2J8MCx0aGlzLl9jPU4rdGhpcy5fY3wwLHRoaXMuX2Q9Qit0aGlzLl9kfDAsdGhpcy5fZT1aK3RoaXMuX2V8MH0sTy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgRD1tLmFsbG9jVW5zYWZlKDIwKTtyZXR1cm4gRC53cml0ZUlu''@;'; put 'put ''dDMyQkUoMHx0aGlzLl9hLDApLEQud3JpdGVJbnQzMkJFKDB8dGhpcy5fYiw0KSxELndyaXRlSW50MzJCRSgwfHRoaXMuX2MsOCksRC53cml0ZUludDMyQkUoMHx0aGlzLl9kLDEyKSxELndyaXRlSW50MzJCRSgwfHRoaXMuX2UsMTYpLER9LFFlLmV4cG9ydHM9T30sMjEyNzA6KFFlLE1lLFIp''@;'; put 'put ''PT57dmFyIG9lPVIoNzE5OTMpLHg9Uig3MDQ2MyksbT1SKDI3MDU0KS5CdWZmZXIsc2U9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxNPW5ldyBBcnJheSg4MCk7ZnVuY3Rpb24gTygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TSx4LmNhbGwodGhpcyw2NCw1''@;'; put 'put ''Nil9ZnVuY3Rpb24gSShUKXtyZXR1cm4gVDw8MXxUPj4+MzF9ZnVuY3Rpb24gaihUKXtyZXR1cm4gVDw8NXxUPj4+Mjd9ZnVuY3Rpb24gRyhUKXtyZXR1cm4gVDw8MzB8VD4+PjJ9ZnVuY3Rpb24gRChULEUseixOKXtyZXR1cm4gMD09PVQ/RSZ6fH5FJk46Mj09PVQ/RSZ6fEUmTnx6Jk46RV56''@;'; put 'put ''Xk59b2UoTyx4KSxPLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTczMjU4NDE5Myx0aGlzLl9iPTQwMjMyMzM0MTcsdGhpcy5fYz0yNTYyMzgzMTAyLHRoaXMuX2Q9MjcxNzMzODc4LHRoaXMuX2U9MzI4NTM3NzUyMCx0aGlzfSxPLnByb3RvdHlwZS5fdXBkYXRl''@;'; put 'put ''PWZ1bmN0aW9uKFQpe2Zvcih2YXIgRT10aGlzLl93LHo9MHx0aGlzLl9hLE49MHx0aGlzLl9iLEI9MHx0aGlzLl9jLFo9MHx0aGlzLl9kLFk9MHx0aGlzLl9lLFU9MDtVPDE2OysrVSlFW1VdPVQucmVhZEludDMyQkUoNCpVKTtmb3IoO1U8ODA7KytVKUVbVV09SShFW1UtM11eRVtVLThdXkVb''@;'; put 'put ''VS0xNF1eRVtVLTE2XSk7Zm9yKHZhciBxPTA7cTw4MDsrK3Epe3ZhciBKPX5+KHEvMjApLGVlPWooeikrRChKLE4sQixaKStZK0VbcV0rc2VbSl18MDtZPVosWj1CLEI9RyhOKSxOPXosej1lZX10aGlzLl9hPXordGhpcy5fYXwwLHRoaXMuX2I9Tit0aGlzLl9ifDAsdGhpcy5fYz1CK3RoaXMu''@;'; put 'put ''X2N8MCx0aGlzLl9kPVordGhpcy5fZHwwLHRoaXMuX2U9WSt0aGlzLl9lfDB9LE8ucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIFQ9bS5hbGxvY1Vuc2FmZSgyMCk7cmV0dXJuIFQud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSxULndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksVC53''@;'; put 'put ''cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLFQud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksVC53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSxUfSxRZS5leHBvcnRzPU99LDQyNzA5OihRZSxNZSxSKT0+e3ZhciBvZT1SKDcxOTkzKSx4PVIoMzIxNDgpLG09Uig3MDQ2Myksc2U9UigyNzA1''@;'; put 'put ''NCkuQnVmZmVyLE09bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBPKCl7dGhpcy5pbml0KCksdGhpcy5fdz1NLG0uY2FsbCh0aGlzLDY0LDU2KX1vZShPLHgpLE8ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0zMjM4MzcxMDMyLHRoaXMuX2I9OTE0MTUwNjYzLHRoaXMu''@;'; put 'put ''X2M9ODEyNzAyOTk5LHRoaXMuX2Q9NDE0NDkxMjY5Nyx0aGlzLl9lPTQyOTA3NzU4NTcsdGhpcy5fZj0xNzUwNjAzMDI1LHRoaXMuX2c9MTY5NDA3NjgzOSx0aGlzLl9oPTMyMDQwNzU0MjgsdGhpc30sTy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgST1zZS5hbGxvY1Vuc2FmZSgy''@;'; put 'put ''OCk7cmV0dXJuIEkud3JpdGVJbnQzMkJFKHRoaXMuX2EsMCksSS53cml0ZUludDMyQkUodGhpcy5fYiw0KSxJLndyaXRlSW50MzJCRSh0aGlzLl9jLDgpLEkud3JpdGVJbnQzMkJFKHRoaXMuX2QsMTIpLEkud3JpdGVJbnQzMkJFKHRoaXMuX2UsMTYpLEkud3JpdGVJbnQzMkJFKHRoaXMuX2Ys''@;'; put 'put ''MjApLEkud3JpdGVJbnQzMkJFKHRoaXMuX2csMjQpLEl9LFFlLmV4cG9ydHM9T30sMzIxNDg6KFFlLE1lLFIpPT57dmFyIG9lPVIoNzE5OTMpLHg9Uig3MDQ2MyksbT1SKDI3MDU0KS5CdWZmZXIsc2U9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3''@;'; put 'put ''MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2Mjgs''@;'; put 'put ''NzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYx''@;'; put 'put ''ODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1''@;'; put 'put ''Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sTT1uZXcgQXJyYXkoNjQpO2Z1bmN0''@;'; put 'put ''aW9uIE8oKXt0aGlzLmluaXQoKSx0aGlzLl93PU0seC5jYWxsKHRoaXMsNjQsNTYpfWZ1bmN0aW9uIEkoeixOLEIpe3JldHVybiBCXnomKE5eQil9ZnVuY3Rpb24gaih6LE4sQil7cmV0dXJuIHomTnxCJih6fE4pfWZ1bmN0aW9uIEcoeil7cmV0dXJuKHo+Pj4yfHo8PDMwKV4oej4+PjEzfHo8''@;'; put 'put ''PDE5KV4oej4+PjIyfHo8PDEwKX1mdW5jdGlvbiBEKHope3JldHVybih6Pj4+Nnx6PDwyNileKHo+Pj4xMXx6PDwyMSleKHo+Pj4yNXx6PDw3KX1mdW5jdGlvbiBUKHope3JldHVybih6Pj4+N3x6PDwyNSleKHo+Pj4xOHx6PDwxNCleej4+PjN9ZnVuY3Rpb24gRSh6KXtyZXR1cm4oej4+PjE3''@;'; put 'put ''fHo8PDE1KV4oej4+PjE5fHo8PDEzKV56Pj4+MTB9b2UoTyx4KSxPLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E9MTc3OTAzMzcwMyx0aGlzLl9iPTMxNDQxMzQyNzcsdGhpcy5fYz0xMDEzOTA0MjQyLHRoaXMuX2Q9Mjc3MzQ4MDc2Mix0aGlzLl9lPTEzNTk4OTMx''@;'; put 'put ''MTksdGhpcy5fZj0yNjAwODIyOTI0LHRoaXMuX2c9NTI4NzM0NjM1LHRoaXMuX2g9MTU0MTQ1OTIyNSx0aGlzfSxPLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHope2Zvcih2YXIgTj10aGlzLl93LEI9MHx0aGlzLl9hLFo9MHx0aGlzLl9iLFk9MHx0aGlzLl9jLFU9MHx0aGlzLl9kLHE9''@;'; put 'put ''MHx0aGlzLl9lLEo9MHx0aGlzLl9mLGVlPTB8dGhpcy5fZyxyZT0wfHRoaXMuX2gsaWU9MDtpZTwxNjsrK2llKU5baWVdPXoucmVhZEludDMyQkUoNCppZSk7Zm9yKDtpZTw2NDsrK2llKU5baWVdPUUoTltpZS0yXSkrTltpZS03XStUKE5baWUtMTVdKStOW2llLTE2XXwwO2Zvcih2YXIgdWU9''@;'; put 'put ''MDt1ZTw2NDsrK3VlKXt2YXIgbGU9cmUrRChxKStJKHEsSixlZSkrc2VbdWVdK05bdWVdfDAsYWU9RyhCKStqKEIsWixZKXwwO3JlPWVlLGVlPUosSj1xLHE9VStsZXwwLFU9WSxZPVosWj1CLEI9bGUrYWV8MH10aGlzLl9hPUIrdGhpcy5fYXwwLHRoaXMuX2I9Wit0aGlzLl9ifDAsdGhpcy5f''@;'; put 'put ''Yz1ZK3RoaXMuX2N8MCx0aGlzLl9kPVUrdGhpcy5fZHwwLHRoaXMuX2U9cSt0aGlzLl9lfDAsdGhpcy5fZj1KK3RoaXMuX2Z8MCx0aGlzLl9nPWVlK3RoaXMuX2d8MCx0aGlzLl9oPXJlK3RoaXMuX2h8MH0sTy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgej1tLmFsbG9jVW5zYWZl''@;'; put 'put ''KDMyKTtyZXR1cm4gei53cml0ZUludDMyQkUodGhpcy5fYSwwKSx6LndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHoud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksei53cml0ZUludDMyQkUodGhpcy5fZCwxMiksei53cml0ZUludDMyQkUodGhpcy5fZSwxNiksei53cml0ZUludDMyQkUodGhpcy5f''@;'; put 'put ''ZiwyMCksei53cml0ZUludDMyQkUodGhpcy5fZywyNCksei53cml0ZUludDMyQkUodGhpcy5faCwyOCksen0sUWUuZXhwb3J0cz1PfSw1MTg1NjooUWUsTWUsUik9Pnt2YXIgb2U9Uig3MTk5MykseD1SKDMxMjEpLG09Uig3MDQ2Myksc2U9UigyNzA1NCkuQnVmZmVyLE09bmV3IEFycmF5KDE2''@;'; put 'put ''MCk7ZnVuY3Rpb24gTygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TSxtLmNhbGwodGhpcywxMjgsMTEyKX1vZShPLHgpLE8ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUwLHRoaXMuX2NoPTI0Mzg1MjkzNzAsdGhp''@;'; put 'put ''cy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5fY2w9ODEyNzAyOTk5LHRoaXMuX2RsPTQx''@;'; put 'put ''NDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxPLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBJPXNlLmFsbG9jVW5zYWZlKDQ4KTtmdW5jdGlvbiBqKEcsRCxU''@;'; put 'put ''KXtJLndyaXRlSW50MzJCRShHLFQpLEkud3JpdGVJbnQzMkJFKEQsVCs0KX1yZXR1cm4gaih0aGlzLl9haCx0aGlzLl9hbCwwKSxqKHRoaXMuX2JoLHRoaXMuX2JsLDgpLGoodGhpcy5fY2gsdGhpcy5fY2wsMTYpLGoodGhpcy5fZGgsdGhpcy5fZGwsMjQpLGoodGhpcy5fZWgsdGhpcy5fZWws''@;'; put 'put ''MzIpLGoodGhpcy5fZmgsdGhpcy5fZmwsNDApLEl9LFFlLmV4cG9ydHM9T30sMzEyMTooUWUsTWUsUik9Pnt2YXIgb2U9Uig3MTk5MykseD1SKDcwNDYzKSxtPVIoMjcwNTQpLkJ1ZmZlcixzZT1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEs''@;'; put 'put ''Mzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYw''@;'; put 'put ''NzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcx''@;'; put 'put ''MTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0''@;'; put 'put ''OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzcz''@;'; put 'put ''NTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4''@;'; put 'put ''NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzcz''@;'; put 'put ''NCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5''@;'; put 'put ''NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1''@;'; put 'put ''OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2''@;'; put 'put ''OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2''@;'; put 'put ''NDAyMzE2LDEyNDYxODk1OTFdLE09bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24gTygpe3RoaXMuaW5pdCgpLHRoaXMuX3c9TSx4LmNhbGwodGhpcywxMjgsMTEyKX1mdW5jdGlvbiBJKFosWSxVKXtyZXR1cm4gVV5aJihZXlUpfWZ1bmN0aW9uIGooWixZLFUpe3JldHVybiBaJll8VSYoWnxZKX1m''@;'; put 'put ''dW5jdGlvbiBHKFosWSl7cmV0dXJuKFo+Pj4yOHxZPDw0KV4oWT4+PjJ8Wjw8MzApXihZPj4+N3xaPDwyNSl9ZnVuY3Rpb24gRChaLFkpe3JldHVybihaPj4+MTR8WTw8MTgpXihaPj4+MTh8WTw8MTQpXihZPj4+OXxaPDwyMyl9ZnVuY3Rpb24gVChaLFkpe3JldHVybihaPj4+MXxZPDwzMSle''@;'; put 'put ''KFo+Pj44fFk8PDI0KV5aPj4+N31mdW5jdGlvbiBFKFosWSl7cmV0dXJuKFo+Pj4xfFk8PDMxKV4oWj4+Pjh8WTw8MjQpXihaPj4+N3xZPDwyNSl9ZnVuY3Rpb24geihaLFkpe3JldHVybihaPj4+MTl8WTw8MTMpXihZPj4+Mjl8Wjw8MyleWj4+PjZ9ZnVuY3Rpb24gTihaLFkpe3JldHVybiha''@;'; put 'put ''Pj4+MTl8WTw8MTMpXihZPj4+Mjl8Wjw8MyleKFo+Pj42fFk8PDI2KX1mdW5jdGlvbiBCKFosWSl7cmV0dXJuIFo+Pj4wPFk+Pj4wPzE6MH1vZShPLHgpLE8ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MTc3OTAzMzcwMyx0aGlzLl9iaD0zMTQ0MTM0Mjc3LHRo''@;'; put 'put ''aXMuX2NoPTEwMTM5MDQyNDIsdGhpcy5fZGg9Mjc3MzQ4MDc2Mix0aGlzLl9laD0xMzU5ODkzMTE5LHRoaXMuX2ZoPTI2MDA4MjI5MjQsdGhpcy5fZ2g9NTI4NzM0NjM1LHRoaXMuX2hoPTE1NDE0NTkyMjUsdGhpcy5fYWw9NDA4OTIzNTcyMCx0aGlzLl9ibD0yMjI3ODczNTk1LHRoaXMuX2Ns''@;'; put 'put ''PTQyNzExNzU3MjMsdGhpcy5fZGw9MTU5NTc1MDEyOSx0aGlzLl9lbD0yOTE3NTY1MTM3LHRoaXMuX2ZsPTcyNTUxMTE5OSx0aGlzLl9nbD00MjE1Mzg5NTQ3LHRoaXMuX2hsPTMyNzAzMzIwOSx0aGlzfSxPLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKFope2Zvcih2YXIgWT10aGlzLl93''@;'; put 'put ''LFU9MHx0aGlzLl9haCxxPTB8dGhpcy5fYmgsSj0wfHRoaXMuX2NoLGVlPTB8dGhpcy5fZGgscmU9MHx0aGlzLl9laCxpZT0wfHRoaXMuX2ZoLHVlPTB8dGhpcy5fZ2gsbGU9MHx0aGlzLl9oaCxhZT0wfHRoaXMuX2FsLFc9MHx0aGlzLl9ibCxiPTB8dGhpcy5fY2wsQT0wfHRoaXMuX2RsLEY9''@;'; put 'put ''MHx0aGlzLl9lbCxIPTB8dGhpcy5fZmwsZz0wfHRoaXMuX2dsLEM9MHx0aGlzLl9obCxrPTA7azwzMjtrKz0yKVlba109Wi5yZWFkSW50MzJCRSg0KmspLFlbaysxXT1aLnJlYWRJbnQzMkJFKDQqays0KTtmb3IoO2s8MTYwO2srPTIpe3ZhciBfPVlbay0zMF0scD1ZW2stMzArMV0sdz1UKF8s''@;'; put 'put ''cCksSz1FKHAsXyksdGU9eihfPVlbay00XSxwPVlbay00KzFdKSxjZT1OKHAsXyksTGU9WVtrLTMyXSxIZT1ZW2stMzIrMV0seGU9SytZW2stMTQrMV18MCxEZT13K1lbay0xNF0rQih4ZSxLKXwwO0RlPShEZT1EZSt0ZStCKHhlPXhlK2NlfDAsY2UpfDApK0xlK0IoeGU9eGUrSGV8MCxIZSl8''@;'; put 'put ''MCxZW2tdPURlLFlbaysxXT14ZX1mb3IodmFyIEJlPTA7QmU8MTYwO0JlKz0yKXtEZT1ZW0JlXSx4ZT1ZW0JlKzFdO3ZhciBHZT1qKFUscSxKKSxVZT1qKGFlLFcsYikscWU9RyhVLGFlKSxvdD1HKGFlLFUpLEZlPUQocmUsRiksd2U9RChGLHJlKSxFZT1zZVtCZV0sSWU9c2VbQmUrMV0sWGU9''@;'; put 'put ''SShyZSxpZSx1ZSksdHQ9SShGLEgsZyksWmU9Qyt3ZXwwLGN0PWxlK0ZlK0IoWmUsQyl8MDtjdD0oY3Q9KGN0PWN0K1hlK0IoWmU9WmUrdHR8MCx0dCl8MCkrRWUrQihaZT1aZStJZXwwLEllKXwwKStEZStCKFplPVplK3hlfDAseGUpfDA7dmFyIGtlPW90K1VlfDAsQWU9cWUrR2UrQihrZSxv''@;'; put 'put ''dCl8MDtsZT11ZSxDPWcsdWU9aWUsZz1ILGllPXJlLEg9RixyZT1lZStjdCtCKEY9QStaZXwwLEEpfDAsZWU9SixBPWIsSj1xLGI9VyxxPVUsVz1hZSxVPWN0K0FlK0IoYWU9WmUra2V8MCxaZSl8MH10aGlzLl9hbD10aGlzLl9hbCthZXwwLHRoaXMuX2JsPXRoaXMuX2JsK1d8MCx0aGlzLl9j''@;'; put 'put ''bD10aGlzLl9jbCtifDAsdGhpcy5fZGw9dGhpcy5fZGwrQXwwLHRoaXMuX2VsPXRoaXMuX2VsK0Z8MCx0aGlzLl9mbD10aGlzLl9mbCtIfDAsdGhpcy5fZ2w9dGhpcy5fZ2wrZ3wwLHRoaXMuX2hsPXRoaXMuX2hsK0N8MCx0aGlzLl9haD10aGlzLl9haCtVK0IodGhpcy5fYWwsYWUpfDAsdGhp''@;'; put 'put ''cy5fYmg9dGhpcy5fYmgrcStCKHRoaXMuX2JsLFcpfDAsdGhpcy5fY2g9dGhpcy5fY2grSitCKHRoaXMuX2NsLGIpfDAsdGhpcy5fZGg9dGhpcy5fZGgrZWUrQih0aGlzLl9kbCxBKXwwLHRoaXMuX2VoPXRoaXMuX2VoK3JlK0IodGhpcy5fZWwsRil8MCx0aGlzLl9maD10aGlzLl9maCtpZStC''@;'; put 'put ''KHRoaXMuX2ZsLEgpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grdWUrQih0aGlzLl9nbCxnKXwwLHRoaXMuX2hoPXRoaXMuX2hoK2xlK0IodGhpcy5faGwsQyl8MH0sTy5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgWj1tLmFsbG9jVW5zYWZlKDY0KTtmdW5jdGlvbiBZKFUscSxKKXtaLndy''@;'; put 'put ''aXRlSW50MzJCRShVLEopLFoud3JpdGVJbnQzMkJFKHEsSis0KX1yZXR1cm4gWSh0aGlzLl9haCx0aGlzLl9hbCwwKSxZKHRoaXMuX2JoLHRoaXMuX2JsLDgpLFkodGhpcy5fY2gsdGhpcy5fY2wsMTYpLFkodGhpcy5fZGgsdGhpcy5fZGwsMjQpLFkodGhpcy5fZWgsdGhpcy5fZWwsMzIpLFko''@;'; put 'put ''dGhpcy5fZmgsdGhpcy5fZmwsNDApLFkodGhpcy5fZ2gsdGhpcy5fZ2wsNDgpLFkodGhpcy5faGgsdGhpcy5faGwsNTYpLFp9LFFlLmV4cG9ydHM9T30sNzA0NTooUWUsTWUsUik9PntRZS5leHBvcnRzPW07dmFyIG9lPVIoNDQzNTYpLkV2ZW50RW1pdHRlcjtmdW5jdGlvbiBtKCl7b2UuY2Fs''@;'; put 'put ''bCh0aGlzKX1SKDcxOTkzKShtLG9lKSxtLlJlYWRhYmxlPVIoNjEwOTIpLG0uV3JpdGFibGU9UigxNTQ5MiksbS5EdXBsZXg9UigxMDMwKSxtLlRyYW5zZm9ybT1SKDQzNDEwKSxtLlBhc3NUaHJvdWdoPVIoODM4MjQpLG0uZmluaXNoZWQ9Uig1Nzg1NCksbS5waXBlbGluZT1SKDY4NDYpLG0u''@;'; put 'put ''U3RyZWFtPW0sbS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihzZSxNKXt2YXIgTz10aGlzO2Z1bmN0aW9uIEkoTil7c2Uud3JpdGFibGUmJiExPT09c2Uud3JpdGUoTikmJk8ucGF1c2UmJk8ucGF1c2UoKX1mdW5jdGlvbiBqKCl7Ty5yZWFkYWJsZSYmTy5yZXN1bWUmJk8ucmVzdW1lKCl9Ty5v''@;'; put 'put ''bigiZGF0YSIsSSksc2Uub24oImRyYWluIixqKSwhc2UuX2lzU3RkaW8mJighTXx8ITEhPT1NLmVuZCkmJihPLm9uKCJlbmQiLEQpLE8ub24oImNsb3NlIixUKSk7dmFyIEc9ITE7ZnVuY3Rpb24gRCgpe0d8fChHPSEwLHNlLmVuZCgpKX1mdW5jdGlvbiBUKCl7R3x8KEc9ITAsImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIHNlLmRlc3Ryb3kmJnNlLmRlc3Ryb3koKSl9ZnVuY3Rpb24gRShOKXtpZih6KCksMD09PW9lLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyBOfWZ1bmN0aW9uIHooKXtPLnJlbW92ZUxpc3RlbmVyKCJkYXRhIixJKSxzZS5yZW1vdmVMaXN0ZW5lcigiZHJhaW4i''@;'; put 'put ''LGopLE8ucmVtb3ZlTGlzdGVuZXIoImVuZCIsRCksTy5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLFQpLE8ucmVtb3ZlTGlzdGVuZXIoImVycm9yIixFKSxzZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLEUpLE8ucmVtb3ZlTGlzdGVuZXIoImVuZCIseiksTy5yZW1vdmVMaXN0ZW5lcigiY2xvc2Ui''@;'; put 'put ''LHopLHNlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIseil9cmV0dXJuIE8ub24oImVycm9yIixFKSxzZS5vbigiZXJyb3IiLEUpLE8ub24oImVuZCIseiksTy5vbigiY2xvc2UiLHopLHNlLm9uKCJjbG9zZSIseiksc2UuZW1pdCgicGlwZSIsTyksc2V9fSwzMDQ2NDpRZT0+eyJ1c2Ugc3RyaWN0''@;'; put 'put ''Ijt2YXIgUj17fTtmdW5jdGlvbiBvZShPLEksail7anx8KGo9RXJyb3IpO3ZhciBEPWZ1bmN0aW9uKFQpe2Z1bmN0aW9uIEUoeixOLEIpe3JldHVybiBULmNhbGwodGhpcyxmdW5jdGlvbiBHKFQsRSx6KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEk/STpJKFQsRSx6KX0oeixOLEIpKXx8dGhp''@;'; put 'put ''c31yZXR1cm4gZnVuY3Rpb24gTWUoTyxJKXtPLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEkucHJvdG90eXBlKSxPLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1PLE8uX19wcm90b19fPUl9KEUsVCksRX0oaik7RC5wcm90b3R5cGUubmFtZT1qLm5hbWUsRC5wcm90b3R5cGUuY29kZT1PLFJbT109''@;'; put 'put ''RH1mdW5jdGlvbiB4KE8sSSl7aWYoQXJyYXkuaXNBcnJheShPKSl7dmFyIGo9Ty5sZW5ndGg7cmV0dXJuIE89Ty5tYXAoZnVuY3Rpb24oRyl7cmV0dXJuIFN0cmluZyhHKX0pLGo+Mj8ib25lIG9mICIuY29uY2F0KEksIiAiKS5jb25jYXQoTy5zbGljZSgwLGotMSkuam9pbigiLCAiKSwiLCBv''@;'; put 'put ''ciAiKStPW2otMV06Mj09PWo/Im9uZSBvZiAiLmNvbmNhdChJLCIgIikuY29uY2F0KE9bMF0sIiBvciAiKS5jb25jYXQoT1sxXSk6Im9mICIuY29uY2F0KEksIiAiKS5jb25jYXQoT1swXSl9cmV0dXJuIm9mICIuY29uY2F0KEksIiAiKS5jb25jYXQoU3RyaW5nKE8pKX1vZSgiRVJSX0lOVkFM''@;'; put 'put ''SURfT1BUX1ZBTFVFIixmdW5jdGlvbihPLEkpe3JldHVybidUaGUgdmFsdWUgIicrSSsnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gIicrTysnIid9LFR5cGVFcnJvciksb2UoIkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihPLEksail7dmFyIEcsRDtpZigic3RyaW5nIj09dHlwZW9m''@;'; put 'put ''IEkmJmZ1bmN0aW9uIG0oTyxJLGope3JldHVybiBPLnN1YnN0cighanx8ajwwPzA6K2osSS5sZW5ndGgpPT09SX0oSSwibm90ICIpPyhHPSJtdXN0IG5vdCBiZSIsST1JLnJlcGxhY2UoL15ub3QgLywiIikpOkc9Im11c3QgYmUiLGZ1bmN0aW9uIHNlKE8sSSxqKXtyZXR1cm4odm9pZCAwPT09''@;'; put 'put ''anx8aj5PLmxlbmd0aCkmJihqPU8ubGVuZ3RoKSxPLnN1YnN0cmluZyhqLUkubGVuZ3RoLGopPT09SX0oTywiIGFyZ3VtZW50IikpRD0iVGhlICIuY29uY2F0KE8sIiAiKS5jb25jYXQoRywiICIpLmNvbmNhdCh4KEksInR5cGUiKSk7ZWxzZXt2YXIgVD1mdW5jdGlvbiBNKE8sSSxqKXtyZXR1''@;'; put 'put ''cm4ibnVtYmVyIiE9dHlwZW9mIGomJihqPTApLCEoaitJLmxlbmd0aD5PLmxlbmd0aCkmJi0xIT09Ty5pbmRleE9mKEksail9KE8sIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7RD0nVGhlICInLmNvbmNhdChPLCciICcpLmNvbmNhdChULCIgIikuY29uY2F0KEcsIiAiKS5jb25jYXQoeChJ''@;'; put 'put ''LCJ0eXBlIikpfXJldHVybiBEKyIuIFJlY2VpdmVkIHR5cGUgIi5jb25jYXQodHlwZW9mIGopfSxUeXBlRXJyb3IpLG9lKCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GIiwic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSxvZSgiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQiLGZ1bmN0aW9u''@;'; put 'put ''KE8pe3JldHVybiJUaGUgIitPKyIgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCJ9KSxvZSgiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiLCJQcmVtYXR1cmUgY2xvc2UiKSxvZSgiRVJSX1NUUkVBTV9ERVNUUk9ZRUQiLGZ1bmN0aW9uKE8pe3JldHVybiJDYW5ub3QgY2FsbCAiK08rIiBh''@;'; put 'put ''ZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkIn0pLG9lKCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKSxvZSgiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSxvZSgiRVJSX1NUUkVBTV9X''@;'; put 'put ''UklURV9BRlRFUl9FTkQiLCJ3cml0ZSBhZnRlciBlbmQiKSxvZSgiRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyIsIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtIixUeXBlRXJyb3IpLG9lKCJFUlJfVU5LTk9XTl9FTkNPRElORyIsZnVuY3Rpb24oTyl7cmV0dXJuIlVua25vd24g''@;'; put 'put ''ZW5jb2Rpbmc6ICIrT30sVHlwZUVycm9yKSxvZSgiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IiksUWUuZXhwb3J0cy5GPVJ9LDEwMzA6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1PYmplY3Qua2V5''@;'; put 'put ''c3x8ZnVuY3Rpb24oRCl7dmFyIFQ9W107Zm9yKHZhciBFIGluIEQpVC5wdXNoKEUpO3JldHVybiBUfTtRZS5leHBvcnRzPUk7dmFyIHg9Uig2MTA5MiksbT1SKDE1NDkyKTtSKDcxOTkzKShJLHgpO2Zvcih2YXIgc2U9b2UobS5wcm90b3R5cGUpLE09MDtNPHNlLmxlbmd0aDtNKyspe3ZhciBP''@;'; put 'put ''PXNlW01dO0kucHJvdG90eXBlW09dfHwoSS5wcm90b3R5cGVbT109bS5wcm90b3R5cGVbT10pfWZ1bmN0aW9uIEkoRCl7aWYoISh0aGlzIGluc3RhbmNlb2YgSSkpcmV0dXJuIG5ldyBJKEQpO3guY2FsbCh0aGlzLEQpLG0uY2FsbCh0aGlzLEQpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCxEJiYo''@;'; put 'put ''ITE9PT1ELnJlYWRhYmxlJiYodGhpcy5yZWFkYWJsZT0hMSksITE9PT1ELndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSksITE9PT1ELmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEsdGhpcy5vbmNlKCJlbmQiLGopKSl9ZnVuY3Rpb24gaigpe3RoaXMuX3dyaXRhYmxl''@;'; put 'put ''U3RhdGUuZW5kZWR8fHByb2Nlc3MubmV4dFRpY2soRyx0aGlzKX1mdW5jdGlvbiBHKEQpe0QuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0''@;'; put 'put ''YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJ3cml0YWJsZUJ1ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVy''@;'; put 'put ''KCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJ3cml0YWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLnByb3RvdHlwZSwiZGVzdHJv''@;'; put 'put ''eWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxz''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oVCl7dm9pZCAwPT09dGhpcy5fcmVhZGFibGVTdGF0ZXx8dm9pZCAwPT09dGhpcy5fd3JpdGFibGVTdGF0ZXx8KHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPVQsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9VCl9fSl9LDgzODI0OihRZSxNZSxSKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0IjtRZS5leHBvcnRzPXg7dmFyIG9lPVIoNDM0MTApO2Z1bmN0aW9uIHgobSl7aWYoISh0aGlzIGluc3RhbmNlb2YgeCkpcmV0dXJuIG5ldyB4KG0pO29lLmNhbGwodGhpcyxtKX1SKDcxOTkzKSh4LG9lKSx4LnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKG0sc2UsTSl7''@;'; put 'put ''TShudWxsLG0pfX0sNjEwOTI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZTtRZS5leHBvcnRzPVcsVy5SZWFkYWJsZVN0YXRlPWFlLFIoNDQzNTYpO3ZhciBELG09ZnVuY3Rpb24ocWUsb3Qpe3JldHVybiBxZS5saXN0ZW5lcnMob3QpLmxlbmd0aH0sc2U9UigxMjYwMSksTT1SKDgz''@;'; put 'put ''ODM4KS5CdWZmZXIsTz0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LEc9Uig3NzE5OSk7RD1HJiZHLmRlYnVnbG9nP0cuZGVidWdsb2coInN0cmVhbSIpOmZ1''@;'; put 'put ''bmN0aW9uKCl7fTt2YXIgSixlZSxyZSxUPVIoNzUyMjUpLEU9Uig4ODE1MiksTj1SKDIyODI3KS5nZXRIaWdoV2F0ZXJNYXJrLEI9UigzMDQ2NCkuRixaPUIuRVJSX0lOVkFMSURfQVJHX1RZUEUsWT1CLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsVT1CLkVSUl9NRVRIT0RfTk9UX0lNUExF''@;'; put 'put ''TUVOVEVELHE9Qi5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UO1IoNzE5OTMpKFcsc2UpO3ZhciBpZT1FLmVycm9yT3JEZXN0cm95LHVlPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIGFlKFVlLHFlLG90KXtvZT1vZXx8Uigx''@;'; put 'put ''MDMwKSwiYm9vbGVhbiIhPXR5cGVvZiBvdCYmKG90PXFlIGluc3RhbmNlb2Ygb2UpLHRoaXMub2JqZWN0TW9kZT0hIShVZT1VZXx8e30pLm9iamVjdE1vZGUsb3QmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIVVlLnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0''@;'; put 'put ''ZXJNYXJrPU4odGhpcyxVZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIixvdCksdGhpcy5idWZmZXI9bmV3IFQsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhp''@;'; put 'put ''cy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09VWUuZW1pdENs''@;'; put 'put ''b3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFVZS5hdXRvRGVzdHJveSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlZmF1bHRFbmNvZGluZz1VZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMu''@;'; put 'put ''ZW5jb2Rpbmc9bnVsbCxVZS5lbmNvZGluZyYmKEp8fChKPVIoNzg0NTQpLkkpLHRoaXMuZGVjb2Rlcj1uZXcgSihVZS5lbmNvZGluZyksdGhpcy5lbmNvZGluZz1VZS5lbmNvZGluZyl9ZnVuY3Rpb24gVyhVZSl7aWYob2U9b2V8fFIoMTAzMCksISh0aGlzIGluc3RhbmNlb2YgVykpcmV0dXJu''@;'; put 'put ''IG5ldyBXKFVlKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBhZShVZSx0aGlzLHRoaXMgaW5zdGFuY2VvZiBvZSksdGhpcy5yZWFkYWJsZT0hMCxVZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBVZS5yZWFkJiYodGhpcy5fcmVhZD1VZS5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgVWUuZGVzdHJv''@;'; put 'put ''eSYmKHRoaXMuX2Rlc3Ryb3k9VWUuZGVzdHJveSkpLHNlLmNhbGwodGhpcyl9ZnVuY3Rpb24gYihVZSxxZSxvdCxGZSx3ZSl7RCgicmVhZGFibGVBZGRDaHVuayIscWUpO3ZhciBJZSxFZT1VZS5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09cWUpRWUucmVhZGluZz0hMSxmdW5jdGlvbiBrKFVl''@;'; put 'put ''LHFlKXtpZihEKCJvbkVvZkNodW5rIiksIXFlLmVuZGVkKXtpZihxZS5kZWNvZGVyKXt2YXIgb3Q9cWUuZGVjb2Rlci5lbmQoKTtvdCYmb3QubGVuZ3RoJiYocWUuYnVmZmVyLnB1c2gob3QpLHFlLmxlbmd0aCs9cWUub2JqZWN0TW9kZT8xOm90Lmxlbmd0aCl9cWUuZW5kZWQ9ITAscWUuc3lu''@;'; put 'put ''Yz9fKFVlKToocWUubmVlZFJlYWRhYmxlPSExLHFlLmVtaXR0ZWRSZWFkYWJsZXx8KHFlLmVtaXR0ZWRSZWFkYWJsZT0hMCxwKFVlKSkpfX0oVWUsRWUpO2Vsc2UgaWYod2V8fChJZT1mdW5jdGlvbiBGKFVlLHFlKXt2YXIgb3Q7cmV0dXJuIWZ1bmN0aW9uIGooVWUpe3JldHVybiBNLmlzQnVm''@;'; put 'put ''ZmVyKFVlKXx8VWUgaW5zdGFuY2VvZiBPfShxZSkmJiJzdHJpbmciIT10eXBlb2YgcWUmJnZvaWQgMCE9PXFlJiYhVWUub2JqZWN0TW9kZSYmKG90PW5ldyBaKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiLCJVaW50OEFycmF5Il0scWUpKSxvdH0oRWUscWUpKSxJZSlpZShVZSxJZSk7ZWxz''@;'; put 'put ''ZSBpZihFZS5vYmplY3RNb2RlfHxxZSYmcWUubGVuZ3RoPjApaWYoInN0cmluZyIhPXR5cGVvZiBxZSYmIUVlLm9iamVjdE1vZGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZihxZSkhPT1NLnByb3RvdHlwZSYmKHFlPWZ1bmN0aW9uIEkoVWUpe3JldHVybiBNLmZyb20oVWUpfShxZSkpLEZlKUVl''@;'; put 'put ''LmVuZEVtaXR0ZWQ/aWUoVWUsbmV3IHEpOkEoVWUsRWUscWUsITApO2Vsc2UgaWYoRWUuZW5kZWQpaWUoVWUsbmV3IFkpO2Vsc2V7aWYoRWUuZGVzdHJveWVkKXJldHVybiExO0VlLnJlYWRpbmc9ITEsRWUuZGVjb2RlciYmIW90PyhxZT1FZS5kZWNvZGVyLndyaXRlKHFlKSxFZS5vYmplY3RN''@;'; put 'put ''b2RlfHwwIT09cWUubGVuZ3RoP0EoVWUsRWUscWUsITEpOncoVWUsRWUpKTpBKFVlLEVlLHFlLCExKX1lbHNlIEZlfHwoRWUucmVhZGluZz0hMSx3KFVlLEVlKSk7cmV0dXJuIUVlLmVuZGVkJiYoRWUubGVuZ3RoPEVlLmhpZ2hXYXRlck1hcmt8fDA9PT1FZS5sZW5ndGgpfWZ1bmN0aW9uIEEo''@;'; put 'put ''VWUscWUsb3QsRmUpe3FlLmZsb3dpbmcmJjA9PT1xZS5sZW5ndGgmJiFxZS5zeW5jPyhxZS5hd2FpdERyYWluPTAsVWUuZW1pdCgiZGF0YSIsb3QpKToocWUubGVuZ3RoKz1xZS5vYmplY3RNb2RlPzE6b3QubGVuZ3RoLEZlP3FlLmJ1ZmZlci51bnNoaWZ0KG90KTpxZS5idWZmZXIucHVzaChv''@;'; put 'put ''dCkscWUubmVlZFJlYWRhYmxlJiZfKFVlKSksdyhVZSxxZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFcucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0''@;'; put 'put ''YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHFlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9cWUpfX0pLFcucHJvdG90eXBlLmRlc3Ryb3k9RS5kZXN0cm95LFcucHJvdG90eXBlLl91bmRlc3Ryb3k9RS51bmRlc3Ryb3ksVy5wcm90b3R5''@;'; put 'put ''cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oVWUscWUpe3FlKFVlKX0sVy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihVZSxxZSl7dmFyIEZlLG90PXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG90Lm9iamVjdE1vZGU/RmU9ITA6InN0cmluZyI9PXR5cGVvZiBVZSYmKChxZT1xZXx8b3QuZGVmYXVs''@;'; put 'put ''dEVuY29kaW5nKSE9PW90LmVuY29kaW5nJiYoVWU9TS5mcm9tKFVlLHFlKSxxZT0iIiksRmU9ITApLGIodGhpcyxVZSxxZSwhMSxGZSl9LFcucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oVWUpe3JldHVybiBiKHRoaXMsVWUsbnVsbCwhMCwhMSl9LFcucHJvdG90eXBlLmlzUGF1c2VkPWZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LFcucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKFVlKXtKfHwoSj1SKDc4NDU0KS5JKTt2YXIgcWU9bmV3IEooVWUpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj1xZSx0aGlzLl9yZWFkYWJs''@;'; put 'put ''ZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIG90PXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQsRmU9IiI7bnVsbCE9PW90OylGZSs9cWUud3JpdGUob3QuZGF0YSksb3Q9b3QubmV4dDtyZXR1cm4gdGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5idWZmZXIuY2xlYXIoKSwiIiE9PUZlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKEZlKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1GZS5sZW5ndGgsdGhpc307dmFyIEg9MTA3Mzc0MTgyNDtmdW5jdGlvbiBDKFVlLHFlKXtyZXR1cm4gVWU8PTB8fDA9PT1x''@;'; put 'put ''ZS5sZW5ndGgmJnFlLmVuZGVkPzA6cWUub2JqZWN0TW9kZT8xOlVlIT1VZT9xZS5mbG93aW5nJiZxZS5sZW5ndGg/cWUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6cWUubGVuZ3RoOihVZT5xZS5oaWdoV2F0ZXJNYXJrJiYocWUuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbiBnKFVlKXtyZXR1cm4g''@;'; put 'put ''VWU+PUg/VWU9SDooVWUtLSxVZXw9VWU+Pj4xLFVlfD1VZT4+PjIsVWV8PVVlPj4+NCxVZXw9VWU+Pj44LFVlfD1VZT4+PjE2LFVlKyspLFVlfShVZSkpLFVlPD1xZS5sZW5ndGg/VWU6cWUuZW5kZWQ/cWUubGVuZ3RoOihxZS5uZWVkUmVhZGFibGU9ITAsMCkpfWZ1bmN0aW9uIF8oVWUpe3Zh''@;'; put 'put ''ciBxZT1VZS5fcmVhZGFibGVTdGF0ZTtEKCJlbWl0UmVhZGFibGUiLHFlLm5lZWRSZWFkYWJsZSxxZS5lbWl0dGVkUmVhZGFibGUpLHFlLm5lZWRSZWFkYWJsZT0hMSxxZS5lbWl0dGVkUmVhZGFibGV8fChEKCJlbWl0UmVhZGFibGUiLHFlLmZsb3dpbmcpLHFlLmVtaXR0ZWRSZWFkYWJsZT0h''@;'; put 'put ''MCxwcm9jZXNzLm5leHRUaWNrKHAsVWUpKX1mdW5jdGlvbiBwKFVlKXt2YXIgcWU9VWUuX3JlYWRhYmxlU3RhdGU7RCgiZW1pdFJlYWRhYmxlXyIscWUuZGVzdHJveWVkLHFlLmxlbmd0aCxxZS5lbmRlZCksIXFlLmRlc3Ryb3llZCYmKHFlLmxlbmd0aHx8cWUuZW5kZWQpJiYoVWUuZW1pdCgi''@;'; put 'put ''cmVhZGFibGUiKSxxZS5lbWl0dGVkUmVhZGFibGU9ITEpLHFlLm5lZWRSZWFkYWJsZT0hcWUuZmxvd2luZyYmIXFlLmVuZGVkJiZxZS5sZW5ndGg8PXFlLmhpZ2hXYXRlck1hcmssSGUoVWUpfWZ1bmN0aW9uIHcoVWUscWUpe3FlLnJlYWRpbmdNb3JlfHwocWUucmVhZGluZ01vcmU9ITAscHJv''@;'; put 'put ''Y2Vzcy5uZXh0VGljayhLLFVlLHFlKSl9ZnVuY3Rpb24gSyhVZSxxZSl7Zm9yKDshcWUucmVhZGluZyYmIXFlLmVuZGVkJiYocWUubGVuZ3RoPHFlLmhpZ2hXYXRlck1hcmt8fHFlLmZsb3dpbmcmJjA9PT1xZS5sZW5ndGgpOyl7dmFyIG90PXFlLmxlbmd0aDtpZihEKCJtYXliZVJlYWRNb3Jl''@;'; put 'put ''IHJlYWQgMCIpLFVlLnJlYWQoMCksb3Q9PT1xZS5sZW5ndGgpYnJlYWt9cWUucmVhZGluZ01vcmU9ITF9ZnVuY3Rpb24gY2UoVWUpe3ZhciBxZT1VZS5fcmVhZGFibGVTdGF0ZTtxZS5yZWFkYWJsZUxpc3RlbmluZz1VZS5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAscWUucmVzdW1lU2No''@;'; put 'put ''ZWR1bGVkJiYhcWUucGF1c2VkP3FlLmZsb3dpbmc9ITA6VWUubGlzdGVuZXJDb3VudCgiZGF0YSIpPjAmJlVlLnJlc3VtZSgpfWZ1bmN0aW9uIGhlKFVlKXtEKCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDAiKSxVZS5yZWFkKDApfWZ1bmN0aW9uIExlKFVlLHFlKXtEKCJyZXN1bWUiLHFlLnJl''@;'; put 'put ''YWRpbmcpLHFlLnJlYWRpbmd8fFVlLnJlYWQoMCkscWUucmVzdW1lU2NoZWR1bGVkPSExLFVlLmVtaXQoInJlc3VtZSIpLEhlKFVlKSxxZS5mbG93aW5nJiYhcWUucmVhZGluZyYmVWUucmVhZCgwKX1mdW5jdGlvbiBIZShVZSl7dmFyIHFlPVVlLl9yZWFkYWJsZVN0YXRlO2ZvcihEKCJmbG93''@;'; put 'put ''IixxZS5mbG93aW5nKTtxZS5mbG93aW5nJiZudWxsIT09VWUucmVhZCgpOyk7fWZ1bmN0aW9uIHhlKFVlLHFlKXtyZXR1cm4gMD09PXFlLmxlbmd0aD9udWxsOihxZS5vYmplY3RNb2RlP290PXFlLmJ1ZmZlci5zaGlmdCgpOiFVZXx8VWU+PXFlLmxlbmd0aD8ob3Q9cWUuZGVjb2Rlcj9xZS5i''@;'; put 'put ''dWZmZXIuam9pbigiIik6MT09PXFlLmJ1ZmZlci5sZW5ndGg/cWUuYnVmZmVyLmZpcnN0KCk6cWUuYnVmZmVyLmNvbmNhdChxZS5sZW5ndGgpLHFlLmJ1ZmZlci5jbGVhcigpKTpvdD1xZS5idWZmZXIuY29uc3VtZShVZSxxZS5kZWNvZGVyKSxvdCk7dmFyIG90fWZ1bmN0aW9uIERlKFVlKXt2''@;'; put 'put ''YXIgcWU9VWUuX3JlYWRhYmxlU3RhdGU7RCgiZW5kUmVhZGFibGUiLHFlLmVuZEVtaXR0ZWQpLHFlLmVuZEVtaXR0ZWR8fChxZS5lbmRlZD0hMCxwcm9jZXNzLm5leHRUaWNrKEJlLHFlLFVlKSl9ZnVuY3Rpb24gQmUoVWUscWUpe2lmKEQoImVuZFJlYWRhYmxlTlQiLFVlLmVuZEVtaXR0ZWQs''@;'; put 'put ''VWUubGVuZ3RoKSwhVWUuZW5kRW1pdHRlZCYmMD09PVVlLmxlbmd0aCYmKFVlLmVuZEVtaXR0ZWQ9ITAscWUucmVhZGFibGU9ITEscWUuZW1pdCgiZW5kIiksVWUuYXV0b0Rlc3Ryb3kpKXt2YXIgb3Q9cWUuX3dyaXRhYmxlU3RhdGU7KCFvdHx8b3QuYXV0b0Rlc3Ryb3kmJm90LmZpbmlzaGVk''@;'; put 'put ''KSYmcWUuZGVzdHJveSgpfX1mdW5jdGlvbiBHZShVZSxxZSl7Zm9yKHZhciBvdD0wLEZlPVVlLmxlbmd0aDtvdDxGZTtvdCsrKWlmKFVlW290XT09PXFlKXJldHVybiBvdDtyZXR1cm4tMX1XLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKFVlKXtEKCJyZWFkIixVZSksVWU9cGFyc2VJbnQoVWUs''@;'; put 'put ''MTApO3ZhciBxZT10aGlzLl9yZWFkYWJsZVN0YXRlLG90PVVlO2lmKDAhPT1VZSYmKHFlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PVVlJiZxZS5uZWVkUmVhZGFibGUmJigoMCE9PXFlLmhpZ2hXYXRlck1hcms/cWUubGVuZ3RoPj1xZS5oaWdoV2F0ZXJNYXJrOnFlLmxlbmd0aD4wKXx8cWUu''@;'; put 'put ''ZW5kZWQpKXJldHVybiBEKCJyZWFkOiBlbWl0UmVhZGFibGUiLHFlLmxlbmd0aCxxZS5lbmRlZCksMD09PXFlLmxlbmd0aCYmcWUuZW5kZWQ/RGUodGhpcyk6Xyh0aGlzKSxudWxsO2lmKDA9PT0oVWU9QyhVZSxxZSkpJiZxZS5lbmRlZClyZXR1cm4gMD09PXFlLmxlbmd0aCYmRGUodGhpcyks''@;'; put 'put ''bnVsbDt2YXIgd2UsRmU9cWUubmVlZFJlYWRhYmxlO3JldHVybiBEKCJuZWVkIHJlYWRhYmxlIixGZSksKDA9PT1xZS5sZW5ndGh8fHFlLmxlbmd0aC1VZTxxZS5oaWdoV2F0ZXJNYXJrKSYmRCgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLEZlPSEwKSxxZS5lbmRlZHx8cWUucmVhZGlu''@;'; put 'put ''Zz9EKCJyZWFkaW5nIG9yIGVuZGVkIixGZT0hMSk6RmUmJihEKCJkbyByZWFkIikscWUucmVhZGluZz0hMCxxZS5zeW5jPSEwLDA9PT1xZS5sZW5ndGgmJihxZS5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQocWUuaGlnaFdhdGVyTWFyaykscWUuc3luYz0hMSxxZS5yZWFkaW5nfHwoVWU9''@;'; put 'put ''QyhvdCxxZSkpKSxudWxsPT09KHdlPVVlPjA/eGUoVWUscWUpOm51bGwpPyhxZS5uZWVkUmVhZGFibGU9cWUubGVuZ3RoPD1xZS5oaWdoV2F0ZXJNYXJrLFVlPTApOihxZS5sZW5ndGgtPVVlLHFlLmF3YWl0RHJhaW49MCksMD09PXFlLmxlbmd0aCYmKHFlLmVuZGVkfHwocWUubmVlZFJlYWRh''@;'; put 'put ''YmxlPSEwKSxvdCE9PVVlJiZxZS5lbmRlZCYmRGUodGhpcykpLG51bGwhPT13ZSYmdGhpcy5lbWl0KCJkYXRhIix3ZSksd2V9LFcucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKFVlKXtpZSh0aGlzLG5ldyBVKCJfcmVhZCgpIikpfSxXLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKFVlLHFlKXt2''@;'; put 'put ''YXIgb3Q9dGhpcyxGZT10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChGZS5waXBlc0NvdW50KXtjYXNlIDA6RmUucGlwZXM9VWU7YnJlYWs7Y2FzZSAxOkZlLnBpcGVzPVtGZS5waXBlcyxVZV07YnJlYWs7ZGVmYXVsdDpGZS5waXBlcy5wdXNoKFVlKX1GZS5waXBlc0NvdW50Kz0xLEQoInBp''@;'; put 'put ''cGUgY291bnQ9JWQgb3B0cz0laiIsRmUucGlwZXNDb3VudCxxZSk7dmFyIEVlPXFlJiYhMT09PXFlLmVuZHx8VWU9PT1wcm9jZXNzLnN0ZG91dHx8VWU9PT1wcm9jZXNzLnN0ZGVycj9zdDpYZTtmdW5jdGlvbiBYZSgpe0QoIm9uZW5kIiksVWUuZW5kKCl9RmUuZW5kRW1pdHRlZD9wcm9jZXNz''@;'; put 'put ''Lm5leHRUaWNrKEVlKTpvdC5vbmNlKCJlbmQiLEVlKSxVZS5vbigidW5waXBlIixmdW5jdGlvbiBJZSh4dCxGdCl7RCgib251bnBpcGUiKSx4dD09PW90JiZGdCYmITE9PT1GdC5oYXNVbnBpcGVkJiYoRnQuaGFzVW5waXBlZD0hMCxmdW5jdGlvbiBjdCgpe0QoImNsZWFudXAiKSxVZS5yZW1v''@;'; put 'put ''dmVMaXN0ZW5lcigiY2xvc2UiLGplKSxVZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixpdCksVWUucmVtb3ZlTGlzdGVuZXIoImRyYWluIix0dCksVWUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixBZSksVWUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsSWUpLG90LnJlbW92ZUxpc3RlbmVyKCJl''@;'; put 'put ''bmQiLFhlKSxvdC5yZW1vdmVMaXN0ZW5lcigiZW5kIixzdCksb3QucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGtlKSxaZT0hMCxGZS5hd2FpdERyYWluJiYoIVVlLl93cml0YWJsZVN0YXRlfHxVZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pJiZ0dCgpfSgpKX0pO3ZhciB0dD1mdW5jdGlvbiB0''@;'; put 'put ''ZShVZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG90PVVlLl9yZWFkYWJsZVN0YXRlO0QoInBpcGVPbkRyYWluIixvdC5hd2FpdERyYWluKSxvdC5hd2FpdERyYWluJiZvdC5hd2FpdERyYWluLS0sMD09PW90LmF3YWl0RHJhaW4mJm0oVWUsImRhdGEiKSYmKG90LmZsb3dpbmc9ITAsSGUoVWUp''@;'; put 'put ''KX19KG90KTtVZS5vbigiZHJhaW4iLHR0KTt2YXIgWmU9ITE7ZnVuY3Rpb24ga2UoeHQpe0QoIm9uZGF0YSIpO3ZhciBGdD1VZS53cml0ZSh4dCk7RCgiZGVzdC53cml0ZSIsRnQpLCExPT09RnQmJigoMT09PUZlLnBpcGVzQ291bnQmJkZlLnBpcGVzPT09VWV8fEZlLnBpcGVzQ291bnQ+MSYm''@;'; put 'put ''LTEhPT1HZShGZS5waXBlcyxVZSkpJiYhWmUmJihEKCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLEZlLmF3YWl0RHJhaW4pLEZlLmF3YWl0RHJhaW4rKyksb3QucGF1c2UoKSl9ZnVuY3Rpb24gQWUoeHQpe0QoIm9uZXJyb3IiLHh0KSxzdCgpLFVlLnJlbW92ZUxpc3RlbmVyKCJlcnJv''@;'; put 'put ''ciIsQWUpLDA9PT1tKFVlLCJlcnJvciIpJiZpZShVZSx4dCl9ZnVuY3Rpb24gamUoKXtVZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixpdCksc3QoKX1mdW5jdGlvbiBpdCgpe0QoIm9uZmluaXNoIiksVWUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixqZSksc3QoKX1mdW5jdGlvbiBzdCgpe0Qo''@;'; put 'put ''InVucGlwZSIpLG90LnVucGlwZShVZSl9cmV0dXJuIG90Lm9uKCJkYXRhIixrZSksZnVuY3Rpb24gbGUoVWUscWUsb3Qpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBVZS5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIFVlLnByZXBlbmRMaXN0ZW5lcihxZSxvdCk7VWUuX2V2ZW50cyYmVWUuX2V2ZW50''@;'; put 'put ''c1txZV0/QXJyYXkuaXNBcnJheShVZS5fZXZlbnRzW3FlXSk/VWUuX2V2ZW50c1txZV0udW5zaGlmdChvdCk6VWUuX2V2ZW50c1txZV09W290LFVlLl9ldmVudHNbcWVdXTpVZS5vbihxZSxvdCl9KFVlLCJlcnJvciIsQWUpLFVlLm9uY2UoImNsb3NlIixqZSksVWUub25jZSgiZmluaXNoIixp''@;'; put 'put ''dCksVWUuZW1pdCgicGlwZSIsb3QpLEZlLmZsb3dpbmd8fChEKCJwaXBlIHJlc3VtZSIpLG90LnJlc3VtZSgpKSxVZX0sVy5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKFVlKXt2YXIgcWU9dGhpcy5fcmVhZGFibGVTdGF0ZSxvdD17aGFzVW5waXBlZDohMX07aWYoMD09PXFlLnBpcGVzQ291''@;'; put 'put ''bnQpcmV0dXJuIHRoaXM7aWYoMT09PXFlLnBpcGVzQ291bnQpcmV0dXJuIFVlJiZVZSE9PXFlLnBpcGVzfHwoVWV8fChVZT1xZS5waXBlcykscWUucGlwZXM9bnVsbCxxZS5waXBlc0NvdW50PTAscWUuZmxvd2luZz0hMSxVZSYmVWUuZW1pdCgidW5waXBlIix0aGlzLG90KSksdGhpcztpZigh''@;'; put 'put ''VWUpe3ZhciBGZT1xZS5waXBlcyx3ZT1xZS5waXBlc0NvdW50O3FlLnBpcGVzPW51bGwscWUucGlwZXNDb3VudD0wLHFlLmZsb3dpbmc9ITE7Zm9yKHZhciBFZT0wO0VlPHdlO0VlKyspRmVbRWVdLmVtaXQoInVucGlwZSIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBJ''@;'; put 'put ''ZT1HZShxZS5waXBlcyxVZSk7cmV0dXJuLTE9PT1JZXx8KHFlLnBpcGVzLnNwbGljZShJZSwxKSxxZS5waXBlc0NvdW50LT0xLDE9PT1xZS5waXBlc0NvdW50JiYocWUucGlwZXM9cWUucGlwZXNbMF0pLFVlLmVtaXQoInVucGlwZSIsdGhpcyxvdCkpLHRoaXN9LFcucHJvdG90eXBlLmFkZExp''@;'; put 'put ''c3RlbmVyPVcucHJvdG90eXBlLm9uPWZ1bmN0aW9uKFVlLHFlKXt2YXIgb3Q9c2UucHJvdG90eXBlLm9uLmNhbGwodGhpcyxVZSxxZSksRmU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1VZT8oRmUucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KCJyZWFk''@;'; put 'put ''YWJsZSIpPjAsITEhPT1GZS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVhZGFibGUiPT09VWUmJiFGZS5lbmRFbWl0dGVkJiYhRmUucmVhZGFibGVMaXN0ZW5pbmcmJihGZS5yZWFkYWJsZUxpc3RlbmluZz1GZS5uZWVkUmVhZGFibGU9ITAsRmUuZmxvd2luZz0hMSxGZS5lbWl0dGVkUmVh''@;'; put 'put ''ZGFibGU9ITEsRCgib24gcmVhZGFibGUiLEZlLmxlbmd0aCxGZS5yZWFkaW5nKSxGZS5sZW5ndGg/Xyh0aGlzKTpGZS5yZWFkaW5nfHxwcm9jZXNzLm5leHRUaWNrKGhlLHRoaXMpKSxvdH0sVy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oVWUscWUpe3ZhciBvdD1zZS5wcm90''@;'; put 'put ''b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLFVlLHFlKTtyZXR1cm4icmVhZGFibGUiPT09VWUmJnByb2Nlc3MubmV4dFRpY2soY2UsdGhpcyksb3R9LFcucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihVZSl7dmFyIHFlPXNlLnByb3RvdHlwZS5yZW1vdmVBbGxM''@;'; put 'put ''aXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybigicmVhZGFibGUiPT09VWV8fHZvaWQgMD09PVVlKSYmcHJvY2Vzcy5uZXh0VGljayhjZSx0aGlzKSxxZX0sVy5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIFVlPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIFVl''@;'; put 'put ''LmZsb3dpbmd8fChEKCJyZXN1bWUiKSxVZS5mbG93aW5nPSFVZS5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbiBTZShVZSxxZSl7cWUucmVzdW1lU2NoZWR1bGVkfHwocWUucmVzdW1lU2NoZWR1bGVkPSEwLHByb2Nlc3MubmV4dFRpY2soTGUsVWUscWUpKX0odGhpcyxVZSkpLFVlLnBhdXNl''@;'; put 'put ''ZD0hMSx0aGlzfSxXLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBEKCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJihEKCJwYXVzZSIpLHRoaXMuX3JlYWRhYmxlU3Rh''@;'; put 'put ''dGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkPSEwLHRoaXN9LFcucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oVWUpe3ZhciBxZT10aGlzLG90PXRoaXMuX3JlYWRhYmxlU3RhdGUsRmU9ITE7Zm9yKHZhciB3ZSBpbiBVZS5vbigiZW5k''@;'; put 'put ''IixmdW5jdGlvbigpe2lmKEQoIndyYXBwZWQgZW5kIiksb3QuZGVjb2RlciYmIW90LmVuZGVkKXt2YXIgSWU9b3QuZGVjb2Rlci5lbmQoKTtJZSYmSWUubGVuZ3RoJiZxZS5wdXNoKEllKX1xZS5wdXNoKG51bGwpfSksVWUub24oImRhdGEiLGZ1bmN0aW9uKEllKXtEKCJ3cmFwcGVkIGRhdGEi''@;'; put 'put ''KSxvdC5kZWNvZGVyJiYoSWU9b3QuZGVjb2Rlci53cml0ZShJZSkpLG90Lm9iamVjdE1vZGUmJm51bGw9PUllfHwhKG90Lm9iamVjdE1vZGV8fEllJiZJZS5sZW5ndGgpfHxxZS5wdXNoKEllKXx8KEZlPSEwLFVlLnBhdXNlKCkpfSksVWUpdm9pZCAwPT09dGhpc1t3ZV0mJiJmdW5jdGlvbiI9''@;'; put 'put ''PXR5cGVvZiBVZVt3ZV0mJih0aGlzW3dlXT1mdW5jdGlvbihYZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFVlW1hlXS5hcHBseShVZSxhcmd1bWVudHMpfX0od2UpKTtmb3IodmFyIEVlPTA7RWU8dWUubGVuZ3RoO0VlKyspVWUub24odWVbRWVdLHRoaXMuZW1pdC5iaW5kKHRoaXMsdWVb''@;'; put 'put ''RWVdKSk7cmV0dXJuIHRoaXMuX3JlYWQ9ZnVuY3Rpb24oSWUpe0QoIndyYXBwZWQgX3JlYWQiLEllKSxGZSYmKEZlPSExLFVlLnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFcucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3Jl''@;'; put 'put ''dHVybiB2b2lkIDA9PT1lZSYmKGVlPVIoMTI2ODMpKSxlZSh0aGlzKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0''@;'; put 'put ''ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXLnByb3RvdHlwZSwicmVhZGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJv''@;'; put 'put ''cGVydHkoVy5wcm90b3R5cGUsInJlYWRhYmxlRmxvd2luZyIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uKHFlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93''@;'; put 'put ''aW5nPXFlKX19KSxXLl9mcm9tTGlzdD14ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVy5wcm90b3R5cGUsInJlYWRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5''@;'; put 'put ''bWJvbCYmKFcuZnJvbT1mdW5jdGlvbihVZSxxZSl7cmV0dXJuIHZvaWQgMD09PXJlJiYocmU9Uig0Nzc2NSkpLHJlKFcsVWUscWUpfSl9LDQzNDEwOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPWo7dmFyIG9lPVIoMzA0NjQpLkYseD1vZS5FUlJfTUVUSE9EX05PVF9JTVBM''@;'; put 'put ''RU1FTlRFRCxtPW9lLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxzZT1vZS5FUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HLE09b2UuRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wLE89UigxMDMwKTtmdW5jdGlvbiBJKFQsRSl7dmFyIHo9dGhpcy5fdHJhbnNmb3JtU3RhdGU7ei50''@;'; put 'put ''cmFuc2Zvcm1pbmc9ITE7dmFyIE49ei53cml0ZWNiO2lmKG51bGw9PT1OKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcgbSk7ei53cml0ZWNodW5rPW51bGwsei53cml0ZWNiPW51bGwsbnVsbCE9RSYmdGhpcy5wdXNoKEUpLE4oVCk7dmFyIEI9dGhpcy5fcmVhZGFibGVTdGF0ZTtCLnJl''@;'; put 'put ''YWRpbmc9ITEsKEIubmVlZFJlYWRhYmxlfHxCLmxlbmd0aDxCLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKEIuaGlnaFdhdGVyTWFyayl9ZnVuY3Rpb24gaihUKXtpZighKHRoaXMgaW5zdGFuY2VvZiBqKSlyZXR1cm4gbmV3IGooVCk7Ty5jYWxsKHRoaXMsVCksdGhpcy5fdHJhbnNmb3Jt''@;'; put 'put ''U3RhdGU9e2FmdGVyVHJhbnNmb3JtOkkuYmluZCh0aGlzKSxuZWVkVHJhbnNmb3JtOiExLHRyYW5zZm9ybWluZzohMSx3cml0ZWNiOm51bGwsd3JpdGVjaHVuazpudWxsLHdyaXRlZW5jb2Rpbmc6bnVsbH0sdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGU9ITAsdGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5zeW5jPSExLFQmJigiZnVuY3Rpb24iPT10eXBlb2YgVC50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09VC50cmFuc2Zvcm0pLCJmdW5jdGlvbiI9PXR5cGVvZiBULmZsdXNoJiYodGhpcy5fZmx1c2g9VC5mbHVzaCkpLHRoaXMub24oInByZWZpbmlzaCIsRyl9ZnVuY3Rpb24g''@;'; put 'put ''Rygpe3ZhciBUPXRoaXM7ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD9EKHRoaXMsbnVsbCxudWxsKTp0aGlzLl9mbHVzaChmdW5jdGlvbihFLHope0QoVCxFLHopfSl9ZnVuY3Rpb24gRChULEUseil7aWYoRSlyZXR1cm4gVC5l''@;'; put 'put ''bWl0KCJlcnJvciIsRSk7aWYobnVsbCE9eiYmVC5wdXNoKHopLFQuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBNO2lmKFQuX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZyl0aHJvdyBuZXcgc2U7cmV0dXJuIFQucHVzaChudWxsKX1SKDcxOTkzKShqLE8pLGoucHJvdG90eXBl''@;'; put 'put ''LnB1c2g9ZnVuY3Rpb24oVCxFKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMSxPLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxULEUpfSxqLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKFQsRSx6KXt6KG5ldyB4KCJfdHJhbnNmb3JtKCkiKSl9LGou''@;'; put 'put ''cHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihULEUseil7dmFyIE49dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYoTi53cml0ZWNiPXosTi53cml0ZWNodW5rPVQsTi53cml0ZWVuY29kaW5nPUUsIU4udHJhbnNmb3JtaW5nKXt2YXIgQj10aGlzLl9yZWFkYWJsZVN0YXRlOyhOLm5lZWRUcmFuc2Zv''@;'; put 'put ''cm18fEIubmVlZFJlYWRhYmxlfHxCLmxlbmd0aDxCLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKEIuaGlnaFdhdGVyTWFyayl9fSxqLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihUKXt2YXIgRT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09RS53cml0ZWNodW5rfHxFLnRyYW5zZm9y''@;'; put 'put ''bWluZz9FLm5lZWRUcmFuc2Zvcm09ITA6KEUudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybShFLndyaXRlY2h1bmssRS53cml0ZWVuY29kaW5nLEUuYWZ0ZXJUcmFuc2Zvcm0pKX0sai5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oVCxFKXtPLnByb3RvdHlwZS5fZGVzdHJveS5j''@;'; put 'put ''YWxsKHRoaXMsVCxmdW5jdGlvbih6KXtFKHopfSl9fSwxNTQ5MjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24geChIZSl7dmFyIHhlPXRoaXM7dGhpcy5uZXh0PW51bGwsdGhpcy5lbnRyeT1udWxsLHRoaXMuZmluaXNoPWZ1bmN0aW9uKCl7IWZ1bmN0aW9uIExlKEhlLHhlLERl''@;'; put 'put ''KXt2YXIgQmU9SGUuZW50cnk7Zm9yKEhlLmVudHJ5PW51bGw7QmU7KXt2YXIgR2U9QmUuY2FsbGJhY2s7eGUucGVuZGluZ2NiLS0sR2UoRGUpLEJlPUJlLm5leHR9eGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9SGV9KHhlLEhlKX19dmFyIG07UWUuZXhwb3J0cz1hZSxhZS5Xcml0YWJsZVN0''@;'; put 'put ''YXRlPXVlO3ZhciBsZSxzZT17ZGVwcmVjYXRlOlIoMzM5OCl9LE09UigxMjYwMSksTz1SKDgzODM4KS5CdWZmZXIsST0odHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fSkuVWludDhBcnJheXx8ZnVuY3Rpb24o''@;'; put 'put ''KXt9LEQ9Uig4ODE1MiksRT1SKDIyODI3KS5nZXRIaWdoV2F0ZXJNYXJrLHo9UigzMDQ2NCkuRixOPXouRVJSX0lOVkFMSURfQVJHX1RZUEUsQj16LkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELFo9ei5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssWT16LkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUs''@;'; put 'put ''VT16LkVSUl9TVFJFQU1fREVTVFJPWUVELHE9ei5FUlJfU1RSRUFNX05VTExfVkFMVUVTLEo9ei5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxlZT16LkVSUl9VTktOT1dOX0VOQ09ESU5HLHJlPUQuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gaWUoKXt9ZnVuY3Rpb24gdWUoSGUseGUsRGUp''@;'; put 'put ''e209bXx8UigxMDMwKSwiYm9vbGVhbiIhPXR5cGVvZiBEZSYmKERlPXhlIGluc3RhbmNlb2YgbSksdGhpcy5vYmplY3RNb2RlPSEhKEhlPUhlfHx7fSkub2JqZWN0TW9kZSxEZSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhSGUud3JpdGFibGVPYmplY3RNb2RlKSx0aGlz''@;'; put 'put ''LmhpZ2hXYXRlck1hcms9RSh0aGlzLEhlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLERlKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmRlY29k''@;'; put 'put ''ZVN0cmluZ3M9ISghMT09PUhlLmRlY29kZVN0cmluZ3MpLHRoaXMuZGVmYXVsdEVuY29kaW5nPUhlLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0''@;'; put 'put ''aGlzLm9ud3JpdGU9ZnVuY3Rpb24oR2UpeyFmdW5jdGlvbiBrKEhlLHhlKXt2YXIgRGU9SGUuX3dyaXRhYmxlU3RhdGUsQmU9RGUuc3luYyxHZT1EZS53cml0ZWNiO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBHZSl0aHJvdyBuZXcgWjtpZihmdW5jdGlvbiBDKEhlKXtIZS53cml0aW5nPSExLEhl''@;'; put 'put ''LndyaXRlY2I9bnVsbCxIZS5sZW5ndGgtPUhlLndyaXRlbGVuLEhlLndyaXRlbGVuPTB9KERlKSx4ZSkhZnVuY3Rpb24gZyhIZSx4ZSxEZSxCZSxHZSl7LS14ZS5wZW5kaW5nY2IsRGU/KHByb2Nlc3MubmV4dFRpY2soR2UsQmUpLHByb2Nlc3MubmV4dFRpY2soaGUsSGUseGUpLEhlLl93cml0''@;'; put 'put ''YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxyZShIZSxCZSkpOihHZShCZSksSGUuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHJlKEhlLEJlKSxoZShIZSx4ZSkpfShIZSxEZSxCZSx4ZSxHZSk7ZWxzZXt2YXIgVWU9SyhEZSl8fEhlLmRlc3Ryb3llZDshVWUmJiFEZS5jb3JrZWQm''@;'; put 'put ''JiFEZS5idWZmZXJQcm9jZXNzaW5nJiZEZS5idWZmZXJlZFJlcXVlc3QmJncoSGUsRGUpLEJlP3Byb2Nlc3MubmV4dFRpY2soXyxIZSxEZSxVZSxHZSk6XyhIZSxEZSxVZSxHZSl9fSh4ZSxHZSl9LHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVz''@;'; put 'put ''dD1udWxsLHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0hMSE9PUhlLmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhSGUuYXV0b0Rlc3Ryb3ksdGhp''@;'; put 'put ''cy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyB4KHRoaXMpfWZ1bmN0aW9uIGFlKEhlKXt2YXIgeGU9dGhpcyBpbnN0YW5jZW9mKG09bXx8UigxMDMwKSk7aWYoIXhlJiYhbGUuY2FsbChhZSx0aGlzKSlyZXR1cm4gbmV3IGFlKEhlKTt0aGlzLl93''@;'; put 'put ''cml0YWJsZVN0YXRlPW5ldyB1ZShIZSx0aGlzLHhlKSx0aGlzLndyaXRhYmxlPSEwLEhlJiYoImZ1bmN0aW9uIj09dHlwZW9mIEhlLndyaXRlJiYodGhpcy5fd3JpdGU9SGUud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBIZS53cml0ZXYmJih0aGlzLl93cml0ZXY9SGUud3JpdGV2KSwiZnVu''@;'; put 'put ''Y3Rpb24iPT10eXBlb2YgSGUuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9SGUuZGVzdHJveSksImZ1bmN0aW9uIj09dHlwZW9mIEhlLmZpbmFsJiYodGhpcy5fZmluYWw9SGUuZmluYWwpKSxNLmNhbGwodGhpcyl9ZnVuY3Rpb24gSChIZSx4ZSxEZSxCZSxHZSxVZSxxZSl7eGUud3JpdGVsZW49''@;'; put 'put ''QmUseGUud3JpdGVjYj1xZSx4ZS53cml0aW5nPSEwLHhlLnN5bmM9ITAseGUuZGVzdHJveWVkP3hlLm9ud3JpdGUobmV3IFUoIndyaXRlIikpOkRlP0hlLl93cml0ZXYoR2UseGUub253cml0ZSk6SGUuX3dyaXRlKEdlLFVlLHhlLm9ud3JpdGUpLHhlLnN5bmM9ITF9ZnVuY3Rpb24gXyhIZSx4''@;'; put 'put ''ZSxEZSxCZSl7RGV8fGZ1bmN0aW9uIHAoSGUseGUpezA9PT14ZS5sZW5ndGgmJnhlLm5lZWREcmFpbiYmKHhlLm5lZWREcmFpbj0hMSxIZS5lbWl0KCJkcmFpbiIpKX0oSGUseGUpLHhlLnBlbmRpbmdjYi0tLEJlKCksaGUoSGUseGUpfWZ1bmN0aW9uIHcoSGUseGUpe3hlLmJ1ZmZlclByb2Nl''@;'; put 'put ''c3Npbmc9ITA7dmFyIERlPXhlLmJ1ZmZlcmVkUmVxdWVzdDtpZihIZS5fd3JpdGV2JiZEZSYmRGUubmV4dCl7dmFyIEdlPW5ldyBBcnJheSh4ZS5idWZmZXJlZFJlcXVlc3RDb3VudCksVWU9eGUuY29ya2VkUmVxdWVzdHNGcmVlO1VlLmVudHJ5PURlO2Zvcih2YXIgcWU9MCxvdD0hMDtEZTsp''@;'; put 'put ''R2VbcWVdPURlLERlLmlzQnVmfHwob3Q9ITEpLERlPURlLm5leHQscWUrPTE7R2UuYWxsQnVmZmVycz1vdCxIKEhlLHhlLCEwLHhlLmxlbmd0aCxHZSwiIixVZS5maW5pc2gpLHhlLnBlbmRpbmdjYisrLHhlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxVZS5uZXh0Pyh4ZS5jb3JrZWRSZXF1''@;'; put 'put ''ZXN0c0ZyZWU9VWUubmV4dCxVZS5uZXh0PW51bGwpOnhlLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgeCh4ZSkseGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MH1lbHNle2Zvcig7RGU7KXt2YXIgRmU9RGUuY2h1bms7aWYoSChIZSx4ZSwhMSx4ZS5vYmplY3RNb2RlPzE6RmUubGVuZ3RoLEZlLERl''@;'; put 'put ''LmVuY29kaW5nLERlLmNhbGxiYWNrKSxEZT1EZS5uZXh0LHhlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0seGUud3JpdGluZylicmVha31udWxsPT09RGUmJih4ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfXhlLmJ1ZmZlcmVkUmVxdWVzdD1EZSx4ZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1''@;'; put 'put ''bmN0aW9uIEsoSGUpe3JldHVybiBIZS5lbmRpbmcmJjA9PT1IZS5sZW5ndGgmJm51bGw9PT1IZS5idWZmZXJlZFJlcXVlc3QmJiFIZS5maW5pc2hlZCYmIUhlLndyaXRpbmd9ZnVuY3Rpb24gdGUoSGUseGUpe0hlLl9maW5hbChmdW5jdGlvbihEZSl7eGUucGVuZGluZ2NiLS0sRGUmJnJlKEhl''@;'; put 'put ''LERlKSx4ZS5wcmVmaW5pc2hlZD0hMCxIZS5lbWl0KCJwcmVmaW5pc2giKSxoZShIZSx4ZSl9KX1mdW5jdGlvbiBoZShIZSx4ZSl7dmFyIERlPUsoeGUpO2lmKERlJiYoZnVuY3Rpb24gY2UoSGUseGUpeyF4ZS5wcmVmaW5pc2hlZCYmIXhlLmZpbmFsQ2FsbGVkJiYoImZ1bmN0aW9uIiE9dHlw''@;'; put 'put ''ZW9mIEhlLl9maW5hbHx8eGUuZGVzdHJveWVkPyh4ZS5wcmVmaW5pc2hlZD0hMCxIZS5lbWl0KCJwcmVmaW5pc2giKSk6KHhlLnBlbmRpbmdjYisrLHhlLmZpbmFsQ2FsbGVkPSEwLHByb2Nlc3MubmV4dFRpY2sodGUsSGUseGUpKSl9KEhlLHhlKSwwPT09eGUucGVuZGluZ2NiJiYoeGUuZmlu''@;'; put 'put ''aXNoZWQ9ITAsSGUuZW1pdCgiZmluaXNoIikseGUuYXV0b0Rlc3Ryb3kpKSl7dmFyIEJlPUhlLl9yZWFkYWJsZVN0YXRlOyghQmV8fEJlLmF1dG9EZXN0cm95JiZCZS5lbmRFbWl0dGVkKSYmSGUuZGVzdHJveSgpfXJldHVybiBEZX1SKDcxOTkzKShhZSxNKSx1ZS5wcm90b3R5cGUuZ2V0QnVm''@;'; put 'put ''ZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB4ZT10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxEZT1bXTt4ZTspRGUucHVzaCh4ZSkseGU9eGUubmV4dDtyZXR1cm4gRGV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1ZS5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpzZS5kZXByZWNh''@;'; put 'put ''dGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIiwiREVQMDAwMyIpfSl9Y2F0Y2h7fX0oKSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s''@;'; put 'put ''JiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8obGU9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGFlLFN5bWJvbC5oYXNJbnN0YW5j''@;'; put 'put ''ZSx7dmFsdWU6ZnVuY3Rpb24oeGUpe3JldHVybiEhbGUuY2FsbCh0aGlzLHhlKXx8dGhpcz09PWFlJiZ4ZSYmeGUuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiB1ZX19KSk6bGU9ZnVuY3Rpb24oeGUpe3JldHVybiB4ZSBpbnN0YW5jZW9mIHRoaXN9LGFlLnByb3RvdHlwZS5waXBlPWZ1bmN0''@;'; put 'put ''aW9uKCl7cmUodGhpcyxuZXcgWSl9LGFlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihIZSx4ZSxEZSl7dmFyIEJlPXRoaXMuX3dyaXRhYmxlU3RhdGUsR2U9ITEsVWU9IUJlLm9iamVjdE1vZGUmJmZ1bmN0aW9uIEcoSGUpe3JldHVybiBPLmlzQnVmZmVyKEhlKXx8SGUgaW5zdGFuY2VvZiBJ''@;'; put 'put ''fShIZSk7cmV0dXJuIFVlJiYhTy5pc0J1ZmZlcihIZSkmJihIZT1mdW5jdGlvbiBqKEhlKXtyZXR1cm4gTy5mcm9tKEhlKX0oSGUpKSwiZnVuY3Rpb24iPT10eXBlb2YgeGUmJihEZT14ZSx4ZT1udWxsKSxVZT94ZT0iYnVmZmVyIjp4ZXx8KHhlPUJlLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0''@;'; put 'put ''aW9uIiE9dHlwZW9mIERlJiYoRGU9aWUpLEJlLmVuZGluZz9mdW5jdGlvbiBXKEhlLHhlKXt2YXIgRGU9bmV3IEo7cmUoSGUsRGUpLHByb2Nlc3MubmV4dFRpY2soeGUsRGUpfSh0aGlzLERlKTooVWV8fGZ1bmN0aW9uIGIoSGUseGUsRGUsQmUpe3ZhciBHZTtyZXR1cm4gbnVsbD09PURlP0dl''@;'; put 'put ''PW5ldyBxOiJzdHJpbmciIT10eXBlb2YgRGUmJiF4ZS5vYmplY3RNb2RlJiYoR2U9bmV3IE4oImNodW5rIixbInN0cmluZyIsIkJ1ZmZlciJdLERlKSksIUdlfHwocmUoSGUsR2UpLHByb2Nlc3MubmV4dFRpY2soQmUsR2UpLCExKX0odGhpcyxCZSxIZSxEZSkpJiYoQmUucGVuZGluZ2NiKyss''@;'; put 'put ''R2U9ZnVuY3Rpb24gRihIZSx4ZSxEZSxCZSxHZSxVZSl7aWYoIURlKXt2YXIgcWU9ZnVuY3Rpb24gQShIZSx4ZSxEZSl7cmV0dXJuIUhlLm9iamVjdE1vZGUmJiExIT09SGUuZGVjb2RlU3RyaW5ncyYmInN0cmluZyI9PXR5cGVvZiB4ZSYmKHhlPU8uZnJvbSh4ZSxEZSkpLHhlfSh4ZSxCZSxH''@;'; put 'put ''ZSk7QmUhPT1xZSYmKERlPSEwLEdlPSJidWZmZXIiLEJlPXFlKX12YXIgb3Q9eGUub2JqZWN0TW9kZT8xOkJlLmxlbmd0aDt4ZS5sZW5ndGgrPW90O3ZhciBGZT14ZS5sZW5ndGg8eGUuaGlnaFdhdGVyTWFyaztpZihGZXx8KHhlLm5lZWREcmFpbj0hMCkseGUud3JpdGluZ3x8eGUuY29ya2Vk''@;'; put 'put ''KXt2YXIgd2U9eGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDt4ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpCZSxlbmNvZGluZzpHZSxpc0J1ZjpEZSxjYWxsYmFjazpVZSxuZXh0Om51bGx9LHdlP3dlLm5leHQ9eGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDp4ZS5idWZmZXJlZFJlcXVlc3Q9eGUu''@;'; put 'put ''bGFzdEJ1ZmZlcmVkUmVxdWVzdCx4ZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIEgoSGUseGUsITEsb3QsQmUsR2UsVWUpO3JldHVybiBGZX0odGhpcyxCZSxVZSxIZSx4ZSxEZSkpLEdlfSxhZS5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29y''@;'; put 'put ''a2VkKyt9LGFlLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgSGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtIZS5jb3JrZWQmJihIZS5jb3JrZWQtLSwhSGUud3JpdGluZyYmIUhlLmNvcmtlZCYmIUhlLmJ1ZmZlclByb2Nlc3NpbmcmJkhlLmJ1ZmZlcmVkUmVxdWVzdCYmdyh0aGlzLEhl''@;'; put 'put ''KSl9LGFlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24oeGUpe2lmKCJzdHJpbmciPT10eXBlb2YgeGUmJih4ZT14ZS50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYx''@;'; put 'put ''NmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKCh4ZSsiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBlZSh4ZSk7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPXhlLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhZS5wcm90b3R5cGUsIndy''@;'; put 'put ''aXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYWUucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsi''@;'; put 'put ''LHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksYWUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihIZSx4ZSxEZSl7RGUobmV3IEIoIl93cml0ZSgpIikpfSxhZS5wcm90b3R5cGUuX3dyaXRldj1udWxsLGFl''@;'; put 'put ''LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oSGUseGUsRGUpe3ZhciBCZT10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBIZT8oRGU9SGUsSGU9bnVsbCx4ZT1udWxsKToiZnVuY3Rpb24iPT10eXBlb2YgeGUmJihEZT14ZSx4ZT1udWxsKSxudWxsIT1IZSYmdGhp''@;'; put 'put ''cy53cml0ZShIZSx4ZSksQmUuY29ya2VkJiYoQmUuY29ya2VkPTEsdGhpcy51bmNvcmsoKSksQmUuZW5kaW5nfHxmdW5jdGlvbiBTZShIZSx4ZSxEZSl7eGUuZW5kaW5nPSEwLGhlKEhlLHhlKSxEZSYmKHhlLmZpbmlzaGVkP3Byb2Nlc3MubmV4dFRpY2soRGUpOkhlLm9uY2UoImZpbmlzaCIs''@;'; put 'put ''RGUpKSx4ZS5lbmRlZD0hMCxIZS53cml0YWJsZT0hMX0odGhpcyxCZSxEZSksdGhpc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGFlLnByb3RvdHlwZSwid3JpdGFibGVMZW5ndGgiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0''@;'; put 'put ''aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYWUucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHhl''@;'; put 'put ''KXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9eGUpfX0pLGFlLnByb3RvdHlwZS5kZXN0cm95PUQuZGVzdHJveSxhZS5wcm90b3R5cGUuX3VuZGVzdHJveT1ELnVuZGVzdHJveSxhZS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oSGUseGUp''@;'; put 'put ''e3hlKEhlKX19LDEyNjgzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U7ZnVuY3Rpb24geChKLGVlLHJlKXtyZXR1cm4gZWU9ZnVuY3Rpb24gbShKKXt2YXIgZWU9ZnVuY3Rpb24gc2UoSixlZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBKfHxudWxsPT09SilyZXR1cm4gSjt2YXIgcmU9''@;'; put 'put ''SltTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXJlKXt2YXIgaWU9cmUuY2FsbChKLGVlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT10eXBlb2YgaWUpcmV0dXJuIGllO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFs''@;'; put 'put ''dWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZWU/U3RyaW5nOk51bWJlcikoSil9KEosInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgZWU/ZWU6U3RyaW5nKGVlKX0oZWUpLGVlIGluIEo/T2JqZWN0LmRlZmluZVByb3BlcnR5KEosZWUse3ZhbHVlOnJlLGVudW1lcmFibGU6ITAsY29u''@;'; put 'put ''ZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6SltlZV09cmUsSn12YXIgTT1SKDU3ODU0KSxPPVN5bWJvbCgibGFzdFJlc29sdmUiKSxJPVN5bWJvbCgibGFzdFJlamVjdCIpLGo9U3ltYm9sKCJlcnJvciIpLEc9U3ltYm9sKCJlbmRlZCIpLEQ9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLFQ9U3lt''@;'; put 'put ''Ym9sKCJoYW5kbGVQcm9taXNlIiksRT1TeW1ib2woInN0cmVhbSIpO2Z1bmN0aW9uIHooSixlZSl7cmV0dXJue3ZhbHVlOkosZG9uZTplZX19ZnVuY3Rpb24gTihKKXt2YXIgZWU9SltPXTtpZihudWxsIT09ZWUpe3ZhciByZT1KW0VdLnJlYWQoKTtudWxsIT09cmUmJihKW0RdPW51bGwsSltP''@;'; put 'put ''XT1udWxsLEpbSV09bnVsbCxlZSh6KHJlLCExKSkpfX1mdW5jdGlvbiBCKEope3Byb2Nlc3MubmV4dFRpY2soTixKKX12YXIgWT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24oKXt9KSxVPU9iamVjdC5zZXRQcm90b3R5cGVPZigoeChvZT17Z2V0IHN0cmVhbSgpe3JldHVybiB0aGlz''@;'; put 'put ''W0VdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIGVlPXRoaXMscmU9dGhpc1tqXTtpZihudWxsIT09cmUpcmV0dXJuIFByb21pc2UucmVqZWN0KHJlKTtpZih0aGlzW0ddKXJldHVybiBQcm9taXNlLnJlc29sdmUoeih2b2lkIDAsITApKTtpZih0aGlzW0VdLmRlc3Ryb3llZClyZXR1cm4gbmV3IFBy''@;'; put 'put ''b21pc2UoZnVuY3Rpb24oYWUsVyl7cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpe2VlW2pdP1coZWVbal0pOmFlKHoodm9pZCAwLCEwKSl9KX0pO3ZhciB1ZSxpZT10aGlzW0RdO2lmKGllKXVlPW5ldyBQcm9taXNlKGZ1bmN0aW9uIFooSixlZSl7cmV0dXJuIGZ1bmN0aW9uKHJlLGllKXtK''@;'; put 'put ''LnRoZW4oZnVuY3Rpb24oKXtlZVtHXT9yZSh6KHZvaWQgMCwhMCkpOmVlW1RdKHJlLGllKX0saWUpfX0oaWUsdGhpcykpO2Vsc2V7dmFyIGxlPXRoaXNbRV0ucmVhZCgpO2lmKG51bGwhPT1sZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHoobGUsITEpKTt1ZT1uZXcgUHJvbWlzZSh0aGlzW1Rd''@;'; put 'put ''KX1yZXR1cm4gdGhpc1tEXT11ZSx1ZX19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx4KG9lLCJyZXR1cm4iLGZ1bmN0aW9uKCl7dmFyIGVlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlLGllKXtlZVtFXS5kZXN0cm95KG51bGwsZnVu''@;'; put 'put ''Y3Rpb24odWUpe3VlP2llKHVlKTpyZSh6KHZvaWQgMCwhMCkpfSl9KX0pLG9lKSxZKTtRZS5leHBvcnRzPWZ1bmN0aW9uKGVlKXt2YXIgcmUsaWU9T2JqZWN0LmNyZWF0ZShVLCh4KHJlPXt9LEUse3ZhbHVlOmVlLHdyaXRhYmxlOiEwfSkseChyZSxPLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEw''@;'; put 'put ''fSkseChyZSxJLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSkseChyZSxqLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSkseChyZSxHLHt2YWx1ZTplZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSkseChyZSxULHt2YWx1ZTpmdW5jdGlvbihsZSxhZSl7dmFyIFc9aWVb''@;'; put 'put ''RV0ucmVhZCgpO1c/KGllW0RdPW51bGwsaWVbT109bnVsbCxpZVtJXT1udWxsLGxlKHooVywhMSkpKTooaWVbT109bGUsaWVbSV09YWUpfSx3cml0YWJsZTohMH0pLHJlKSk7cmV0dXJuIGllW0RdPW51bGwsTShlZSxmdW5jdGlvbih1ZSl7aWYodWUmJiJFUlJfU1RSRUFNX1BSRU1BVFVSRV9D''@;'; put 'put ''TE9TRSIhPT11ZS5jb2RlKXt2YXIgbGU9aWVbSV07cmV0dXJuIG51bGwhPT1sZSYmKGllW0RdPW51bGwsaWVbT109bnVsbCxpZVtJXT1udWxsLGxlKHVlKSksdm9pZChpZVtqXT11ZSl9dmFyIGFlPWllW09dO251bGwhPT1hZSYmKGllW0RdPW51bGwsaWVbT109bnVsbCxpZVtJXT1udWxsLGFl''@;'; put 'put ''KHoodm9pZCAwLCEwKSkpLGllW0ddPSEwfSksZWUub24oInJlYWRhYmxlIixCLmJpbmQobnVsbCxpZSkpLGllfX0sNzUyMjU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG9lKEIsWil7dmFyIFk9T2JqZWN0LmtleXMoQik7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9s''@;'; put 'put ''cyl7dmFyIFU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhCKTtaJiYoVT1VLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihCLHEpLmVudW1lcmFibGV9KSksWS5wdXNoLmFwcGx5KFksVSl9cmV0dXJuIFl9ZnVuY3Rpb24geChC''@;'; put 'put ''KXtmb3IodmFyIFo9MTtaPGFyZ3VtZW50cy5sZW5ndGg7WisrKXt2YXIgWT1udWxsIT1hcmd1bWVudHNbWl0/YXJndW1lbnRzW1pdOnt9O1olMj9vZShPYmplY3QoWSksITApLmZvckVhY2goZnVuY3Rpb24oVSl7bShCLFUsWVtVXSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y''@;'; put 'put ''cz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhCLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKFkpKTpvZShPYmplY3QoWSkpLmZvckVhY2goZnVuY3Rpb24oVSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEIsVSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFksVSkpfSl9''@;'; put 'put ''cmV0dXJuIEJ9ZnVuY3Rpb24gbShCLFosWSl7cmV0dXJuKFo9SShaKSlpbiBCP09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLFose3ZhbHVlOlksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpCW1pdPVksQn1mdW5jdGlvbiBNKEIsWil7Zm9yKHZhciBZPTA7WTxa''@;'; put 'put ''Lmxlbmd0aDtZKyspe3ZhciBVPVpbWV07VS5lbnVtZXJhYmxlPVUuZW51bWVyYWJsZXx8ITEsVS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIFUmJihVLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQixJKFUua2V5KSxVKX19ZnVuY3Rpb24gSShCKXt2YXIgWj1mdW5jdGlv''@;'; put 'put ''biBqKEIsWil7aWYoIm9iamVjdCIhPXR5cGVvZiBCfHxudWxsPT09QilyZXR1cm4gQjt2YXIgWT1CW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09WSl7dmFyIFU9WS5jYWxsKEIsWnx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9dHlwZW9mIFUpcmV0dXJuIFU7dGhyb3cgbmV3IFR5''@;'; put 'put ''cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1aP1N0cmluZzpOdW1iZXIpKEIpfShCLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIFo/WjpTdHJpbmcoWil9dmFyIEQ9Uig4MzgzOCkuQnVmZmVy''@;'; put 'put ''LEU9Uig2Mzc3OSkuaW5zcGVjdCx6PUUmJkUuY3VzdG9tfHwiaW5zcGVjdCI7ZnVuY3Rpb24gTihCLFosWSl7RC5wcm90b3R5cGUuY29weS5jYWxsKEIsWixZKX1RZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQigpeyhmdW5jdGlvbiBzZShCLFope2lmKCEoQiBpbnN0YW5jZW9mIFop''@;'; put 'put ''KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSkodGhpcyxCKSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBmdW5jdGlvbiBPKEIsWixZKXtaJiZNKEIucHJvdG90eXBlLFopLFkmJk0oQixZ''@;'; put 'put ''KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQiwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0oQixbe2tleToicHVzaCIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIFU9e2RhdGE6WSxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9VTp0aGlzLmhlYWQ9VSx0aGlzLnRhaWw9''@;'; put 'put ''VSwrK3RoaXMubGVuZ3RofX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24oWSl7dmFyIFU9e2RhdGE6WSxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPVUpLHRoaXMuaGVhZD1VLCsrdGhpcy5sZW5ndGh9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rp''@;'; put 'put ''b24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciBZPXRoaXMuaGVhZC5kYXRhO3JldHVybiB0aGlzLmhlYWQ9MT09PXRoaXMubGVuZ3RoP3RoaXMudGFpbD1udWxsOnRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsWX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmhl''@;'; put 'put ''YWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH19LHtrZXk6ImpvaW4iLHZhbHVlOmZ1bmN0aW9uKFkpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIFU9dGhpcy5oZWFkLHE9IiIrVS5kYXRhO1U9VS5uZXh0OylxKz1ZK1UuZGF0YTtyZXR1cm4gcX19LHtrZXk6ImNv''@;'; put 'put ''bmNhdCIsdmFsdWU6ZnVuY3Rpb24oWSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBELmFsbG9jKDApO2Zvcih2YXIgVT1ELmFsbG9jVW5zYWZlKFk+Pj4wKSxxPXRoaXMuaGVhZCxKPTA7cTspTihxLmRhdGEsVSxKKSxKKz1xLmRhdGEubGVuZ3RoLHE9cS5uZXh0O3JldHVybiBVfX0se2tl''@;'; put 'put ''eToiY29uc3VtZSIsdmFsdWU6ZnVuY3Rpb24oWSxVKXt2YXIgcTtyZXR1cm4gWTx0aGlzLmhlYWQuZGF0YS5sZW5ndGg/KHE9dGhpcy5oZWFkLmRhdGEuc2xpY2UoMCxZKSx0aGlzLmhlYWQuZGF0YT10aGlzLmhlYWQuZGF0YS5zbGljZShZKSk6cT1ZPT09dGhpcy5oZWFkLmRhdGEubGVuZ3Ro''@;'; put 'put ''P3RoaXMuc2hpZnQoKTpVP3RoaXMuX2dldFN0cmluZyhZKTp0aGlzLl9nZXRCdWZmZXIoWSkscX19LHtrZXk6ImZpcnN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6Il9nZXRTdHJpbmciLHZhbHVlOmZ1bmN0aW9uKFkpe3ZhciBVPXRoaXMuaGVhZCxx''@;'; put 'put ''PTEsSj1VLmRhdGE7Zm9yKFktPUoubGVuZ3RoO1U9VS5uZXh0Oyl7dmFyIGVlPVUuZGF0YSxyZT1ZPmVlLmxlbmd0aD9lZS5sZW5ndGg6WTtpZihKKz1yZT09PWVlLmxlbmd0aD9lZTplZS5zbGljZSgwLFkpLDA9PShZLT1yZSkpe3JlPT09ZWUubGVuZ3RoPygrK3EsdGhpcy5oZWFkPVUubmV4''@;'; put 'put ''dD9VLm5leHQ6dGhpcy50YWlsPW51bGwpOih0aGlzLmhlYWQ9VSxVLmRhdGE9ZWUuc2xpY2UocmUpKTticmVha30rK3F9cmV0dXJuIHRoaXMubGVuZ3RoLT1xLEp9fSx7a2V5OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihZKXt2YXIgVT1ELmFsbG9jVW5zYWZlKFkpLHE9dGhpcy5oZWFk''@;'; put 'put ''LEo9MTtmb3IocS5kYXRhLmNvcHkoVSksWS09cS5kYXRhLmxlbmd0aDtxPXEubmV4dDspe3ZhciBlZT1xLmRhdGEscmU9WT5lZS5sZW5ndGg/ZWUubGVuZ3RoOlk7aWYoZWUuY29weShVLFUubGVuZ3RoLVksMCxyZSksMD09KFktPXJlKSl7cmU9PT1lZS5sZW5ndGg/KCsrSix0aGlzLmhlYWQ9''@;'; put 'put ''cS5uZXh0P3EubmV4dDp0aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1xLHEuZGF0YT1lZS5zbGljZShyZSkpO2JyZWFrfSsrSn1yZXR1cm4gdGhpcy5sZW5ndGgtPUosVX19LHtrZXk6eix2YWx1ZTpmdW5jdGlvbihZLFUpe3JldHVybiBFKHRoaXMseCh4KHt9LFUpLHt9LHtkZXB0aDowLGN1''@;'; put 'put ''c3RvbUluc3BlY3Q6ITF9KSl9fV0pLEJ9KCl9LDg4MTUyOlFlPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFIoTSxPKXttKE0sTyksb2UoTSl9ZnVuY3Rpb24gb2UoTSl7TS5fd3JpdGFibGVTdGF0ZSYmIU0uX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHxNLl9yZWFkYWJsZVN0YXRlJiYhTS5f''@;'; put 'put ''cmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fE0uZW1pdCgiY2xvc2UiKX1mdW5jdGlvbiBtKE0sTyl7TS5lbWl0KCJlcnJvciIsTyl9UWUuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbiBNZShNLE8pe3ZhciBJPXRoaXM7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxl''@;'; put 'put ''U3RhdGUuZGVzdHJveWVkfHx0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD8oTz9PKE0pOk0mJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0''@;'; put 'put ''ZWQ9ITAscHJvY2Vzcy5uZXh0VGljayhtLHRoaXMsTSkpOnByb2Nlc3MubmV4dFRpY2sobSx0aGlzLE0pKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3koTXx8bnVsbCxmdW5jdGlvbihEKXshTyYmRD9JLl93cml0YWJsZVN0YXRlP0kuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkP3Byb2Nlc3MubmV4dFRpY2sob2UsSSk6KEkuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHByb2Nl''@;'; put 'put ''c3MubmV4dFRpY2soUixJLEQpKTpwcm9jZXNzLm5leHRUaWNrKFIsSSxEKTpPPyhwcm9jZXNzLm5leHRUaWNrKG9lLEkpLE8oRCkpOnByb2Nlc3MubmV4dFRpY2sob2UsSSl9KSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0aW9uIHgoKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFi''@;'; put 'put ''bGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95''@;'; put 'put ''ZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0h''@;'; put 'put ''MSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9LGVycm9yT3JEZXN0cm95OmZ1bmN0aW9uIHNlKE0sTyl7dmFyIEk9TS5fcmVhZGFibGVTdGF0ZSxqPU0uX3dyaXRhYmxlU3RhdGU7SSYmSS5hdXRvRGVzdHJveXx8aiYmai5hdXRvRGVzdHJveT9NLmRlc3Ryb3koTyk6TS5l''@;'; put 'put ''bWl0KCJlcnJvciIsTyl9fX0sNTc4NTQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDMwNDY0KS5GLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIG0oKXt9UWUuZXhwb3J0cz1mdW5jdGlvbiBNKE8sSSxqKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgSSlyZXR1''@;'; put 'put ''cm4gTShPLG51bGwsSSk7SXx8KEk9e30pLGo9ZnVuY3Rpb24geChPKXt2YXIgST0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighSSl7ST0hMDtmb3IodmFyIGo9YXJndW1lbnRzLmxlbmd0aCxHPW5ldyBBcnJheShqKSxEPTA7RDxqO0QrKylHW0RdPWFyZ3VtZW50c1tEXTtPLmFwcGx5KHRoaXMs''@;'; put 'put ''Ryl9fX0oanx8bSk7dmFyIEc9SS5yZWFkYWJsZXx8ITEhPT1JLnJlYWRhYmxlJiZPLnJlYWRhYmxlLEQ9SS53cml0YWJsZXx8ITEhPT1JLndyaXRhYmxlJiZPLndyaXRhYmxlLFQ9ZnVuY3Rpb24oKXtPLndyaXRhYmxlfHx6KCl9LEU9Ty5fd3JpdGFibGVTdGF0ZSYmTy5fd3JpdGFibGVTdGF0''@;'; put 'put ''ZS5maW5pc2hlZCx6PWZ1bmN0aW9uKCl7RD0hMSxFPSEwLEd8fGouY2FsbChPKX0sTj1PLl9yZWFkYWJsZVN0YXRlJiZPLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsQj1mdW5jdGlvbigpe0c9ITEsTj0hMCxEfHxqLmNhbGwoTyl9LFo9ZnVuY3Rpb24oSil7ai5jYWxsKE8sSil9LFk9ZnVu''@;'; put 'put ''Y3Rpb24oKXt2YXIgSjtyZXR1cm4gRyYmIU4/KCghTy5fcmVhZGFibGVTdGF0ZXx8IU8uX3JlYWRhYmxlU3RhdGUuZW5kZWQpJiYoSj1uZXcgb2UpLGouY2FsbChPLEopKTpEJiYhRT8oKCFPLl93cml0YWJsZVN0YXRlfHwhTy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkmJihKPW5ldyBvZSksai5j''@;'; put 'put ''YWxsKE8sSikpOnZvaWQgMH0sVT1mdW5jdGlvbigpe08ucmVxLm9uKCJmaW5pc2giLHopfTtyZXR1cm4gZnVuY3Rpb24gc2UoTyl7cmV0dXJuIE8uc2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2YgTy5hYm9ydH0oTyk/KE8ub24oImNvbXBsZXRlIix6KSxPLm9uKCJhYm9ydCIsWSksTy5y''@;'; put 'put ''ZXE/VSgpOk8ub24oInJlcXVlc3QiLFUpKTpEJiYhTy5fd3JpdGFibGVTdGF0ZSYmKE8ub24oImVuZCIsVCksTy5vbigiY2xvc2UiLFQpKSxPLm9uKCJlbmQiLEIpLE8ub24oImZpbmlzaCIseiksITEhPT1JLmVycm9yJiZPLm9uKCJlcnJvciIsWiksTy5vbigiY2xvc2UiLFkpLGZ1bmN0aW9u''@;'; put 'put ''KCl7Ty5yZW1vdmVMaXN0ZW5lcigiY29tcGxldGUiLHopLE8ucmVtb3ZlTGlzdGVuZXIoImFib3J0IixZKSxPLnJlbW92ZUxpc3RlbmVyKCJyZXF1ZXN0IixVKSxPLnJlcSYmTy5yZXEucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIseiksTy5yZW1vdmVMaXN0ZW5lcigiZW5kIixUKSxPLnJlbW92''@;'; put 'put ''ZUxpc3RlbmVyKCJjbG9zZSIsVCksTy5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIix6KSxPLnJlbW92ZUxpc3RlbmVyKCJlbmQiLEIpLE8ucmVtb3ZlTGlzdGVuZXIoImVycm9yIixaKSxPLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsWSl9fX0sNDc3NjU6UWU9PntRZS5leHBvcnRzPWZ1bmN0aW9u''@;'; put 'put ''KCl7dGhyb3cgbmV3IEVycm9yKCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXIiKX19LDY4NDY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZSxtPVIoMzA0NjQpLkYsc2U9bS5FUlJfTUlTU0lOR19BUkdTLE09bS5FUlJfU1RSRUFNX0RFU1RST1lF''@;'; put 'put ''RDtmdW5jdGlvbiBPKHope2lmKHopdGhyb3cgen1mdW5jdGlvbiBHKHope3ooKX1mdW5jdGlvbiBEKHosTil7cmV0dXJuIHoucGlwZShOKX1RZS5leHBvcnRzPWZ1bmN0aW9uIEUoKXtmb3IodmFyIHo9YXJndW1lbnRzLmxlbmd0aCxOPW5ldyBBcnJheSh6KSxCPTA7Qjx6O0IrKylOW0JdPWFy''@;'; put 'put ''Z3VtZW50c1tCXTt2YXIgWj1mdW5jdGlvbiBUKHope3JldHVybiB6Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHpbei5sZW5ndGgtMV0/ei5wb3AoKTpPfShOKTtpZihBcnJheS5pc0FycmF5KE5bMF0pJiYoTj1OWzBdKSxOLmxlbmd0aDwyKXRocm93IG5ldyBzZSgic3RyZWFtcyIpO3Zh''@;'; put 'put ''ciBZLFU9Ti5tYXAoZnVuY3Rpb24ocSxKKXt2YXIgZWU9SjxOLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbiBqKHosTixCLFope1o9ZnVuY3Rpb24geCh6KXt2YXIgTj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtOfHwoTj0hMCx6LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KFopO3ZhciBZPSEx''@;'; put 'put ''O3oub24oImNsb3NlIixmdW5jdGlvbigpe1k9ITB9KSx2b2lkIDA9PT1vZSYmKG9lPVIoNTc4NTQpKSxvZSh6LHtyZWFkYWJsZTpOLHdyaXRhYmxlOkJ9LGZ1bmN0aW9uKHEpe2lmKHEpcmV0dXJuIFoocSk7WT0hMCxaKCl9KTt2YXIgVT0hMTtyZXR1cm4gZnVuY3Rpb24ocSl7aWYoIVkmJiFV''@;'; put 'put ''KXtpZihVPSEwLGZ1bmN0aW9uIEkoeil7cmV0dXJuIHouc2V0SGVhZGVyJiYiZnVuY3Rpb24iPT10eXBlb2Ygei5hYm9ydH0oeikpcmV0dXJuIHouYWJvcnQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygei5kZXN0cm95KXJldHVybiB6LmRlc3Ryb3koKTtaKHF8fG5ldyBNKCJwaXBlIikpfX19''@;'; put 'put ''KHEsZWUsSj4wLGZ1bmN0aW9uKGllKXtZfHwoWT1pZSksaWUmJlUuZm9yRWFjaChHKSwhZWUmJihVLmZvckVhY2goRyksWihZKSl9KX0pO3JldHVybiBOLnJlZHVjZShEKX19LDIyODI3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzMDQ2NCkuRi5FUlJfSU5WQUxJRF9PUFRf''@;'; put 'put ''VkFMVUU7UWUuZXhwb3J0cz17Z2V0SGlnaFdhdGVyTWFyazpmdW5jdGlvbiBtKHNlLE0sTyxJKXt2YXIgaj1mdW5jdGlvbiB4KHNlLE0sTyl7cmV0dXJuIG51bGwhPXNlLmhpZ2hXYXRlck1hcms/c2UuaGlnaFdhdGVyTWFyazpNP3NlW09dOm51bGx9KE0sSSxPKTtpZihudWxsIT1qKXtpZigh''@;'; put 'put ''aXNGaW5pdGUoail8fE1hdGguZmxvb3IoaikhPT1qfHxqPDApdGhyb3cgbmV3IG9lKEk/TzoiaGlnaFdhdGVyTWFyayIsaik7cmV0dXJuIE1hdGguZmxvb3Ioail9cmV0dXJuIHNlLm9iamVjdE1vZGU/MTY6MTYzODR9fX0sMTI2MDE6KFFlLE1lLFIpPT57UWUuZXhwb3J0cz1SKDQ0MzU2KS5F''@;'; put 'put ''dmVudEVtaXR0ZXJ9LDc4NDU0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1NDI3MikuQnVmZmVyLHg9b2UuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oVSl7c3dpdGNoKChVPSIiK1UpJiZVLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNh''@;'; put 'put ''c2UiYXNjaWkiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOmNhc2UicmF3IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gTShVKXt2YXIgcTtzd2l0Y2godGhpcy5lbmNvZGlu''@;'; put 'put ''Zz1mdW5jdGlvbiBzZShVKXt2YXIgcT1mdW5jdGlvbiBtKFUpe2lmKCFVKXJldHVybiJ1dGY4Ijtmb3IodmFyIHE7Oylzd2l0Y2goVSl7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4idXRmOCI7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUi''@;'; put 'put ''OnJldHVybiJ1dGYxNmxlIjtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiJsYXRpbjEiO2Nhc2UiYmFzZTY0IjpjYXNlImFzY2lpIjpjYXNlImhleCI6cmV0dXJuIFU7ZGVmYXVsdDppZihxKXJldHVybjtVPSgiIitVKS50b0xvd2VyQ2FzZSgpLHE9ITB9fShVKTtpZigic3RyaW5n''@;'; put 'put ''IiE9dHlwZW9mIHEmJihvZS5pc0VuY29kaW5nPT09eHx8IXgoVSkpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitVKTtyZXR1cm4gcXx8VX0oVSksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9RSx0aGlzLmVuZD16LHE9NDticmVhaztjYXNlInV0''@;'; put 'put ''ZjgiOnRoaXMuZmlsbExhc3Q9RyxxPTQ7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMudGV4dD1OLHRoaXMuZW5kPUIscT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9Wix2b2lkKHRoaXMuZW5kPVkpfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMubGFzdENo''@;'; put 'put ''YXI9b2UuYWxsb2NVbnNhZmUocSl9ZnVuY3Rpb24gTyhVKXtyZXR1cm4gVTw9MTI3PzA6VT4+NT09Nj8yOlU+PjQ9PTE0PzM6VT4+Mz09MzA/NDpVPj42PT0yPy0xOi0yfWZ1bmN0aW9uIEcoVSl7dmFyIHE9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxKPWZ1bmN0aW9uIGooVSxxLEop''@;'; put 'put ''e2lmKDEyOCE9KDE5MiZxWzBdKSlyZXR1cm4gVS5sYXN0TmVlZD0wLCJcdWZmZmQiO2lmKFUubGFzdE5lZWQ+MSYmcS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJnFbMV0pKXJldHVybiBVLmxhc3ROZWVkPTEsIlx1ZmZmZCI7aWYoVS5sYXN0TmVlZD4yJiZxLmxlbmd0aD4yJiYxMjghPSgxOTIm''@;'; put 'put ''cVsyXSkpcmV0dXJuIFUubGFzdE5lZWQ9MiwiXHVmZmZkIn19KHRoaXMsVSk7cmV0dXJuIHZvaWQgMCE9PUo/Sjp0aGlzLmxhc3ROZWVkPD1VLmxlbmd0aD8oVS5jb3B5KHRoaXMubGFzdENoYXIscSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGlu''@;'; put 'put ''ZywwLHRoaXMubGFzdFRvdGFsKSk6KFUuY29weSh0aGlzLmxhc3RDaGFyLHEsMCxVLmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT1VLmxlbmd0aCkpfWZ1bmN0aW9uIEUoVSxxKXtpZigoVS5sZW5ndGgtcSklMj09MCl7dmFyIEo9VS50b1N0cmluZygidXRmMTZsZSIscSk7aWYoSil7dmFy''@;'; put 'put ''IGVlPUouY2hhckNvZGVBdChKLmxlbmd0aC0xKTtpZihlZT49NTUyOTYmJmVlPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT1VW1UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09VVtVLmxlbmd0aC0xXSxKLnNsaWNlKDAs''@;'; put 'put ''LTEpfXJldHVybiBKfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPVVbVS5sZW5ndGgtMV0sVS50b1N0cmluZygidXRmMTZsZSIscSxVLmxlbmd0aC0xKX1mdW5jdGlvbiB6KFUpe3ZhciBxPVUmJlUubGVuZ3RoP3RoaXMud3JpdGUoVSk6''@;'; put 'put ''IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/cSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJ1dGYxNmxlIiwwLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQpOnF9ZnVuY3Rpb24gTihVLHEpe3ZhciBKPShVLmxlbmd0aC1xKSUzO3JldHVybiAwPT09Sj9VLnRvU3RyaW5nKCJiYXNlNjQiLHEp''@;'; put 'put ''Oih0aGlzLmxhc3ROZWVkPTMtSix0aGlzLmxhc3RUb3RhbD0zLDE9PT1KP3RoaXMubGFzdENoYXJbMF09VVtVLmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT1VW1UubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09VVtVLmxlbmd0aC0xXSksVS50b1N0cmluZygiYmFzZTY0IixxLFUubGVu''@;'; put 'put ''Z3RoLUopKX1mdW5jdGlvbiBCKFUpe3ZhciBxPVUmJlUubGVuZ3RoP3RoaXMud3JpdGUoVSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/cSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJiYXNlNjQiLDAsMy10aGlzLmxhc3ROZWVkKTpxfWZ1bmN0aW9uIFooVSl7cmV0dXJuIFUudG9TdHJpbmco''@;'; put 'put ''dGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gWShVKXtyZXR1cm4gVSYmVS5sZW5ndGg/dGhpcy53cml0ZShVKToiIn1NZS5JPU0sTS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oVSl7aWYoMD09PVUubGVuZ3RoKXJldHVybiIiO3ZhciBxLEo7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09''@;'; put 'put ''KHE9dGhpcy5maWxsTGFzdChVKSkpcmV0dXJuIiI7Sj10aGlzLmxhc3ROZWVkLHRoaXMubGFzdE5lZWQ9MH1lbHNlIEo9MDtyZXR1cm4gSjxVLmxlbmd0aD9xP3ErdGhpcy50ZXh0KFUsSik6dGhpcy50ZXh0KFUsSik6cXx8IiJ9LE0ucHJvdG90eXBlLmVuZD1mdW5jdGlvbiBUKFUpe3ZhciBx''@;'; put 'put ''PVUmJlUubGVuZ3RoP3RoaXMud3JpdGUoVSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/cSsiXHVmZmZkIjpxfSxNLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uIEQoVSxxKXt2YXIgSj1mdW5jdGlvbiBJKFUscSxKKXt2YXIgZWU9cS5sZW5ndGgtMTtpZihlZTxKKXJldHVybiAwO3ZhciByZT1P''@;'; put 'put ''KHFbZWVdKTtyZXR1cm4gcmU+PTA/KHJlPjAmJihVLmxhc3ROZWVkPXJlLTEpLHJlKTotLWVlPEp8fC0yPT09cmU/MDoocmU9TyhxW2VlXSkpPj0wPyhyZT4wJiYoVS5sYXN0TmVlZD1yZS0yKSxyZSk6LS1lZTxKfHwtMj09PXJlPzA6KHJlPU8ocVtlZV0pKT49MD8ocmU+MCYmKDI9PT1yZT9y''@;'; put 'put ''ZT0wOlUubGFzdE5lZWQ9cmUtMykscmUpOjB9KHRoaXMsVSxxKTtpZighdGhpcy5sYXN0TmVlZClyZXR1cm4gVS50b1N0cmluZygidXRmOCIscSk7dGhpcy5sYXN0VG90YWw9Sjt2YXIgZWU9VS5sZW5ndGgtKEotdGhpcy5sYXN0TmVlZCk7cmV0dXJuIFUuY29weSh0aGlzLmxhc3RDaGFyLDAs''@;'; put 'put ''ZWUpLFUudG9TdHJpbmcoInV0ZjgiLHEsZWUpfSxNLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbihVKXtpZih0aGlzLmxhc3ROZWVkPD1VLmxlbmd0aClyZXR1cm4gVS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRo''@;'; put 'put ''aXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTtVLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsVS5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPVUubGVuZ3RofX0sNTQyNzI6KFFlLE1lLFIpPT57dmFyIG9l''@;'; put 'put ''PVIoODM4MzgpLHg9b2UuQnVmZmVyO2Z1bmN0aW9uIG0oTSxPKXtmb3IodmFyIEkgaW4gTSlPW0ldPU1bSV19ZnVuY3Rpb24gc2UoTSxPLEkpe3JldHVybiB4KE0sTyxJKX14LmZyb20mJnguYWxsb2MmJnguYWxsb2NVbnNhZmUmJnguYWxsb2NVbnNhZmVTbG93P1FlLmV4cG9ydHM9b2U6KG0o''@;'; put 'put ''b2UsTWUpLE1lLkJ1ZmZlcj1zZSksbSh4LHNlKSxzZS5mcm9tPWZ1bmN0aW9uKE0sTyxJKXtpZigibnVtYmVyIj09dHlwZW9mIE0pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4geChNLE8sSSl9LHNlLmFsbG9jPWZ1bmN0aW9uKE0s''@;'; put 'put ''TyxJKXtpZigibnVtYmVyIiE9dHlwZW9mIE0pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBqPXgoTSk7cmV0dXJuIHZvaWQgMCE9PU8/InN0cmluZyI9PXR5cGVvZiBJP2ouZmlsbChPLEkpOmouZmlsbChPKTpqLmZpbGwoMCksan0sc2UuYWxs''@;'; put 'put ''b2NVbnNhZmU9ZnVuY3Rpb24oTSl7aWYoIm51bWJlciIhPXR5cGVvZiBNKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4geChNKX0sc2UuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKE0pe2lmKCJudW1iZXIiIT10eXBlb2YgTSl0aHJvdyBu''@;'; put 'put ''ZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIG9lLlNsb3dCdWZmZXIoTSl9fSw3ODc1NTooUWUsTWUsUik9Pnt2YXIgb2U9Uig2NDMxOCk7UWUuZXhwb3J0cz17VGV4dEVuY29kZXI6b2UuVGV4dEVuY29kZXIsVGV4dERlY29kZXI6b2UuVGV4dERlY29k''@;'; put 'put ''ZXJ9fSw2Nzk1MTpmdW5jdGlvbihRZSl7IWZ1bmN0aW9uKE1lKXsidXNlIHN0cmljdCI7UWUuZXhwb3J0cyYmKFFlLmV4cG9ydHM9TWUpLE1lWyJlbmNvZGluZy1pbmRleGVzIl09e2JpZzU6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''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 ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE3MzkyLDE5NTA2LDE3OTIzLDE3ODMwLDE3Nzg0LDE2MDM1OSwxOTgzMSwxNzg0MywxNjI5OTMsMTk2ODIsMTYzMDEzLDE1MjUzLDE4MjMwLDE4MjQ0LDE5NTI3LDE5NTIwLDE0ODE1OSwxNDQ5MTksMTYwNTk0LDE1OTM3MSwxNTk5''@;'; put 'put ''NTQsMTk1NDMsMTcyODgxLDE4MjU1LDE3ODgyLDE5NTg5LDE2MjkyNCwxOTcxOSwxOTEwOCwxODA4MSwxNTg0OTksMjkyMjEsMTU0MTk2LDEzNzgyNywxNDY5NTAsMTQ3Mjk3LDI2MTg5LDIyMjY3LG51bGwsMzIxNDksMjI4MTMsMTY2ODQxLDE1ODYwLDM4NzA4LDE2Mjc5OSwyMzUxNSwxMzg1''@;'; put 'put ''OTAsMjMyMDQsMTM4NjEsMTcxNjk2LDIzMjQ5LDIzNDc5LDIzODA0LDI2NDc4LDM0MTk1LDE3MDMwOSwyOTc5MywyOTg1MywxNDQ1MywxMzg1NzksMTQ1MDU0LDE1NTY4MSwxNjEwOCwxNTM4MjIsMTUwOTMsMzE0ODQsNDA4NTUsMTQ3ODA5LDE2NjE1NywxNDM4NTAsMTMzNzcwLDE0Mzk2Niwx''@;'; put 'put ''NzE2MiwzMzkyNCw0MDg1NCwzNzkzNSwxODczNiwzNDMyMywyMjY3OCwzODczMCwzNzQwMCwzMTE4NCwzMTI4MiwyNjIwOCwyNzE3NywzNDk3MywyOTc3MiwzMTY4NSwyNjQ5OCwzMTI3NiwyMTA3MSwzNjkzNCwxMzU0MiwyOTYzNiwxNTUwNjUsMjk4OTQsNDA5MDMsMjI0NTEsMTg3MzUsMjE1''@;'; put 'put ''ODAsMTY2ODksMTQ1MDM4LDIyNTUyLDMxMzQ2LDE2MjY2MSwzNTcyNywxODA5NCwxNTkzNjgsMTY3NjksMTU1MDMzLDMxNjYyLDE0MDQ3Niw0MDkwNCwxNDA0ODEsMTQwNDg5LDE0MDQ5Miw0MDkwNSwzNDA1MiwxNDQ4MjcsMTY1NjQsNDA5MDYsMTc2MzMsMTc1NjE1LDI1MjgxLDI4NzgyLDQw''@;'; put 'put ''OTA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI3MzYs''@;'; put 'put ''MTI3MzcsMTI3MzgsMTI3MzksMTI3NDAsMTMxMzQwLDEyNzQxLDEzMTI4MSwxMzEyNzcsMTI3NDIsMTI3NDMsMTMxMjc1LDEzOTI0MCwxMjc0NCwxMzEyNzQsMTI3NDUsMTI3NDYsMTI3NDcsMTI3NDgsMTMxMzQyLDEyNzQ5LDEyNzUwLDI1NiwxOTMsNDYxLDE5MiwyNzQsMjAxLDI4MiwyMDAs''@;'; put 'put ''MzMyLDIxMSw0NjUsMjEwLG51bGwsNzg3MCxudWxsLDc4NzIsMjAyLDI1NywyMjUsNDYyLDIyNCw1OTMsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsbnVsbCw3ODcxLG51bGwsNzg3Mywy''@;'; put 'put ''MzQsNjA5LDkxNzgsOTE3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzI5NjksMTM1NDkzLG51bGwsMjU4NjYsbnVsbCxudWxsLDIwMDI5LDI4MzgxLDQwMjcwLDM3MzQz''@;'; put 'put ''LG51bGwsbnVsbCwxNjE1ODksMjU3NDUsMjAyNTAsMjAyNjQsMjAzOTIsMjA4MjIsMjA4NTIsMjA4OTIsMjA5NjQsMjExNTMsMjExNjAsMjEzMDcsMjEzMjYsMjE0NTcsMjE0NjQsMjIyNDIsMjI3NjgsMjI3ODgsMjI3OTEsMjI4MzQsMjI4MzYsMjMzOTgsMjM0NTQsMjM0NTUsMjM3MDYsMjQx''@;'; put 'put ''OTgsMjQ2MzUsMjU5OTMsMjY2MjIsMjY2MjgsMjY3MjUsMjc5ODIsMjg4NjAsMzAwMDUsMzI0MjAsMzI0MjgsMzI0NDIsMzI0NTUsMzI0NjMsMzI0NzksMzI1MTgsMzI1NjcsMzM0MDIsMzM0ODcsMzM2NDcsMzUyNzAsMzU3NzQsMzU4MTAsMzY3MTAsMzY3MTEsMzY3MTgsMjk3MTMsMzE5OTYs''@;'; put 'put ''MzIyMDUsMjY5NTAsMzE0MzMsMjEwMzEsbnVsbCxudWxsLG51bGwsbnVsbCwzNzI2MCwzMDkwNCwzNzIxNCwzMjk1NixudWxsLDM2MTA3LDMzMDE0LDEzMzYwNyxudWxsLG51bGwsMzI5MjcsNDA2NDcsMTk2NjEsNDAzOTMsNDA0NjAsMTk1MTgsMTcxNTEwLDE1OTc1OCw0MDQ1OCwxNzIzMzks''@;'; put 'put ''MTM3NjEsbnVsbCwyODMxNCwzMzM0MiwyOTk3NyxudWxsLDE4NzA1LDM5NTMyLDM5NTY3LDQwODU3LDMxMTExLDE2NDk3MiwxMzg2OTgsMTMyNTYwLDE0MjA1NCwyMDAwNCwyMDA5NywyMDA5NiwyMDEwMywyMDE1OSwyMDIwMywyMDI3OSwxMzM4OCwyMDQxMywxNTk0NCwyMDQ4MywyMDYxNiwx''@;'; put 'put ''MzQzNywxMzQ1OSwxMzQ3NywyMDg3MCwyMjc4OSwyMDk1NSwyMDk4OCwyMDk5NywyMDEwNSwyMTExMywyMTEzNiwyMTI4NywxMzc2NywyMTQxNywxMzY0OSwyMTQyNCwxMzY1MSwyMTQ0MiwyMTUzOSwxMzY3NywxMzY4MiwxMzk1MywyMTY1MSwyMTY2NywyMTY4NCwyMTY4OSwyMTcxMiwyMTc0''@;'; put 'put ''MywyMTc4NCwyMTc5NSwyMTgwMCwxMzcyMCwyMTgyMywxMzczMywxMzc1OSwyMTk3NSwxMzc2NSwxNjMyMDQsMjE3OTcsbnVsbCwxMzQyMTAsMTM0NDIxLDE1MTg1MSwyMTkwNCwxNDI1MzQsMTQ4MjgsMTMxOTA1LDM2NDIyLDE1MDk2OCwxNjkxODksMTY0NjcsMTY0MDMwLDMwNTg2LDE0MjM5''@;'; put 'put ''MiwxNDkwMCwxODM4OSwxNjQxODksMTU4MTk0LDE1MTAxOCwyNTgyMSwxMzQ1MjQsMTM1MDkyLDEzNDM1NywxMzU0MTIsMjU3NDEsMzY0NzgsMTM0ODA2LDEzNDE1NSwxMzUwMTIsMTQyNTA1LDE2NDQzOCwxNDg2OTEsbnVsbCwxMzQ0NzAsMTcwNTczLDE2NDA3MywxODQyMCwxNTEyMDcsMTQy''@;'; put 'put ''NTMwLDM5NjAyLDE0OTUxLDE2OTQ2MCwxNjM2NSwxMzU3NCwxNTIyNjMsMTY5OTQwLDE2MTk5MiwxNDI2NjAsNDAzMDIsMzg5MzMsbnVsbCwxNzM2OSwxNTU4MTMsMjU3ODAsMjE3MzEsMTQyNjY4LDE0MjI4MiwxMzUyODcsMTQ4NDMsMTM1Mjc5LDE1NzQwMiwxNTc0NjIsMTYyMjA4LDI1ODM0''@;'; put 'put ''LDE1MTYzNCwxMzQyMTEsMzY0NTYsMTM5NjgxLDE2NjczMiwxMzI5MTMsbnVsbCwxODQ0MywxMzE0OTcsMTYzNzgsMjI2NDMsMTQyNzMzLG51bGwsMTQ4OTM2LDEzMjM0OCwxNTU3OTksMTM0OTg4LDEzNDU1MCwyMTg4MSwxNjU3MSwxNzMzOCxudWxsLDE5MTI0LDE0MTkyNiwxMzUzMjUsMzMx''@;'; put 'put ''OTQsMzkxNTcsMTM0NTU2LDI1NDY1LDE0ODQ2LDE0MTE3MywzNjI4OCwyMjE3NywyNTcyNCwxNTkzOSxudWxsLDE3MzU2OSwxMzQ2NjUsMTQyMDMxLDE0MjUzNyxudWxsLDEzNTM2OCwxNDU4NTgsMTQ3MzgsMTQ4NTQsMTY0NTA3LDEzNjg4LDE1NTIwOSwxMzk0NjMsMjIwOTgsMTM0OTYxLDE0''@;'; put 'put ''MjUxNCwxNjk3NjAsMTM1MDAsMjc3MDksMTUxMDk5LG51bGwsbnVsbCwxNjExNDAsMTQyOTg3LDEzOTc4NCwxNzM2NTksMTY3MTE3LDEzNDc3OCwxMzQxOTYsMTU3NzI0LDMyNjU5LDEzNTM3NSwxNDEzMTUsMTQxNjI1LDEzODE5LDE1MjAzNSwxMzQ3OTYsMTM1MDUzLDEzNDgyNiwxNjI3NSwx''@;'; put 'put ''MzQ5NjAsMTM0NDcxLDEzNTUwMywxMzQ3MzIsbnVsbCwxMzQ4MjcsMTM0MDU3LDEzNDQ3MiwxMzUzNjAsMTM1NDg1LDE2Mzc3LDE0MDk1MCwyNTY1MCwxMzUwODUsMTQ0MzcyLDE2MTMzNywxNDIyODYsMTM0NTI2LDEzNDUyNywxNDI0MTcsMTQyNDIxLDE0ODcyLDEzNDgwOCwxMzUzNjcsMTM0''@;'; put 'put ''OTU4LDE3MzYxOCwxNTg1NDQsMTY3MTIyLDE2NzMyMSwxNjcxMTQsMzgzMTQsMjE3MDgsMzM0NzYsMjE5NDUsbnVsbCwxNzE3MTUsMzk5NzQsMzk2MDYsMTYxNjMwLDE0MjgzMCwyODk5MiwzMzEzMywzMzAwNCwyMzU4MCwxNTcwNDIsMzMwNzYsMTQyMzEsMjEzNDMsMTY0MDI5LDM3MzAyLDEz''@;'; put 'put ''NDkwNiwxMzQ2NzEsMTM0Nzc1LDEzNDkwNywxMzc4OSwxNTEwMTksMTM4MzMsMTM0MzU4LDIyMTkxLDE0MTIzNywxMzUzNjksMTM0NjcyLDEzNDc3NiwxMzUyODgsMTM1NDk2LDE2NDM1OSwxMzYyNzcsMTM0Nzc3LDE1MTEyMCwxNDI3NTYsMjMxMjQsMTM1MTk3LDEzNTE5OCwxMzU0MTMsMTM1''@;'; put 'put ''NDE0LDIyNDI4LDEzNDY3MywxNjE0MjgsMTY0NTU3LDEzNTA5MywxMzQ3NzksMTUxOTM0LDE0MDgzLDEzNTA5NCwxMzU1NTIsMTUyMjgwLDE3MjczMywxNDk5NzgsMTM3Mjc0LDE0NzgzMSwxNjQ0NzYsMjI2ODEsMjEwOTYsMTM4NTAsMTUzNDA1LDMxNjY2LDIzNDAwLDE4NDMyLDE5MjQ0LDQw''@;'; put 'put ''NzQzLDE4OTE5LDM5OTY3LDM5ODIxLDE1NDQ4NCwxNDM2NzcsMjIwMTEsMTM4MTAsMjIxNTMsMjAwMDgsMjI3ODYsMTM4MTc3LDE5NDY4MCwzODczNywxMzEyMDYsMjAwNTksMjAxNTUsMTM2MzAsMjM1ODcsMjQ0MDEsMjQ1MTYsMTQ1ODYsMjUxNjQsMjU5MDksMjc1MTQsMjc3MDEsMjc3MDYs''@;'; put 'put ''Mjg3ODAsMjkyMjcsMjAwMTIsMjkzNTcsMTQ5NzM3LDMyNTk0LDMxMDM1LDMxOTkzLDMyNTk1LDE1NjI2NiwxMzUwNSxudWxsLDE1NjQ5MSwzMjc3MCwzMjg5NiwxNTcyMDIsMTU4MDMzLDIxMzQxLDM0OTE2LDM1MjY1LDE2MTk3MCwzNTc0NCwzNjEyNSwzODAyMSwzODI2NCwzODI3MSwzODM3''@;'; put 'put ''NiwxNjc0MzksMzg4ODYsMzkwMjksMzkxMTgsMzkxMzQsMzkyNjcsMTdlNCw0MDA2MCw0MDQ3OSw0MDY0NCwyNzUwMyw2Mzc1MSwyMDAyMywxMzEyMDcsMzg0MjksMjUxNDMsMzgwNTAsbnVsbCwyMDUzOSwyODE1OCwxNzExMjMsNDA4NzAsMTU4MTcsMzQ5NTksMTQ3NzkwLDI4NzkxLDIzNzk3''@;'; put 'put ''LDE5MjMyLDE1MjAxMywxMzY1NywxNTQ5MjgsMjQ4NjYsMTY2NDUwLDM2Nzc1LDM3MzY2LDI5MDczLDI2MzkzLDI5NjI2LDE0NDAwMSwxNzIyOTUsMTU0OTksMTM3NjAwLDE5MjE2LDMwOTQ4LDI5Njk4LDIwOTEwLDE2NTY0NywxNjM5MywyNzIzNSwxNzI3MzAsMTY5MzEsMzQzMTksMTMzNzQz''@;'; put 'put ''LDMxMjc0LDE3MDMxMSwxNjY2MzQsMzg3NDEsMjg3NDksMjEyODQsMTM5MzkwLDM3ODc2LDMwNDI1LDE2NjM3MSw0MDg3MSwzMDY4NSwyMDEzMSwyMDQ2NCwyMDY2OCwyMDAxNSwyMDI0Nyw0MDg3MiwyMTU1NiwzMjEzOSwyMjY3NCwyMjczNiwxMzg2NzgsMjQyMTAsMjQyMTcsMjQ1MTQsMTQx''@;'; put 'put ''MDc0LDI1OTk1LDE0NDM3NywyNjkwNSwyNzIwMywxNDY1MzEsMjc5MDMsbnVsbCwyOTE4NCwxNDg3NDEsMjk1ODAsMTYwOTEsMTUwMDM1LDIzMzE3LDI5ODgxLDM1NzE1LDE1NDc4OCwxNTMyMzcsMzEzNzksMzE3MjQsMzE5MzksMzIzNjQsMzM1MjgsMzQxOTksNDA4NzMsMzQ5NjAsNDA4NzQs''@;'; put 'put ''MzY1MzcsNDA4NzUsMzY4MTUsMzQxNDMsMzkzOTIsMzc0MDksNDA4NzYsMTY3MzUzLDEzNjI1NSwxNjQ5NywxNzA1OCwyMzA2NixudWxsLG51bGwsbnVsbCwzOTAxNiwyNjQ3NSwxNzAxNCwyMjMzMyxudWxsLDM0MjYyLDE0OTg4MywzMzQ3MSwxNjAwMTMsMTk1ODUsMTU5MDkyLDIzOTMxLDE1''@;'; put 'put ''ODQ4NSwxNTk2NzgsNDA4NzcsNDA4NzgsMjM0NDYsNDA4NzksMjYzNDMsMzIzNDcsMjgyNDcsMzExNzgsMTU3NTIsMTc2MDMsMTQzOTU4LDE0MTIwNiwxNzMwNiwxNzcxOCxudWxsLDIzNzY1LDE0NjIwMiwzNTU3NywyMzY3MiwxNTYzNCwxNDQ3MjEsMjM5MjgsNDA4ODIsMjkwMTUsMTc3NTIs''@;'; put 'put ''MTQ3NjkyLDEzODc4NywxOTU3NSwxNDcxMiwxMzM4NiwxMzE0OTIsMTU4Nzg1LDM1NTMyLDIwNDA0LDEzMTY0MSwyMjk3NSwzMzEzMiwzODk5OCwxNzAyMzQsMjQzNzksMTM0MDQ3LG51bGwsMTM5NzEzLDE2NjI1MywxNjY0MiwxODEwNywxNjgwNTcsMTYxMzUsNDA4ODMsMTcyNDY5LDE2NjMy''@;'; put 'put ''LDE0Mjk0LDE4MTY3LDE1ODc5MCwxNjc2NCwxNjU1NTQsMTYwNzY3LDE3NzczLDE0NTQ4LDE1MjczMCwxNzc2MSwxNzY5MSwxOTg0OSwxOTU3OSwxOTgzMCwxNzg5OCwxNjMyOCwxNTAyODcsMTM5MjEsMTc2MzAsMTc1OTcsMTY4NzcsMjM4NzAsMjM4ODAsMjM4OTQsMTU4NjgsMTQzNTEsMjM5''@;'; put 'put ''NzIsMjM5OTMsMTQzNjgsMTQzOTIsMjQxMzAsMjQyNTMsMjQzNTcsMjQ0NTEsMTQ2MDAsMTQ2MTIsMTQ2NTUsMTQ2NjksMjQ3OTEsMjQ4OTMsMjM3ODEsMTQ3MjksMjUwMTUsMjUwMTcsMjUwMzksMTQ3NzYsMjUxMzIsMjUyMzIsMjUzMTcsMjUzNjgsMTQ4NDAsMjIxOTMsMTQ4NTEsMjU1NzAs''@;'; put 'put ''MjU1OTUsMjU2MDcsMjU2OTAsMTQ5MjMsMjU3OTIsMjM4MjksMjIwNDksNDA4NjMsMTQ5OTksMjU5OTAsMTUwMzcsMjYxMTEsMjYxOTUsMTUwOTAsMjYyNTgsMTUxMzgsMjYzOTAsMTUxNzAsMjY1MzIsMjY2MjQsMTUxOTIsMjY2OTgsMjY3NTYsMTUyMTgsMTUyMTcsMTUyMjcsMjY4ODksMjY5''@;'; put 'put ''NDcsMjkyNzYsMjY5ODAsMjcwMzksMjcwMTMsMTUyOTIsMjcwOTQsMTUzMjUsMjcyMzcsMjcyNTIsMjcyNDksMjcyNjYsMTUzNDAsMjcyODksMTUzNDYsMjczMDcsMjczMTcsMjczNDgsMjczODIsMjc1MjEsMjc1ODUsMjc2MjYsMjc3NjUsMjc4MTgsMTU1NjMsMjc5MDYsMjc5MTAsMjc5NDIs''@;'; put 'put ''MjgwMzMsMTU1OTksMjgwNjgsMjgwODEsMjgxODEsMjgxODQsMjgyMDEsMjgyOTQsMTY2MzM2LDI4MzQ3LDI4Mzg2LDI4Mzc4LDQwODMxLDI4MzkyLDI4MzkzLDI4NDUyLDI4NDY4LDE1Njg2LDE0NzI2NSwyODU0NSwyODYwNiwxNTcyMiwxNTczMywyOTExMSwyMzcwNSwxNTc1NCwyODcxNiwx''@;'; put 'put ''NTc2MSwyODc1MiwyODc1NiwyODc4MywyODc5OSwyODgwOSwxMzE4NzcsMTczNDUsMTM4MDksMTM0ODcyLDE0NzE1OSwyMjQ2MiwxNTk0NDMsMjg5OTAsMTUzNTY4LDEzOTAyLDI3MDQyLDE2Njg4OSwyMzQxMiwzMTMwNSwxNTM4MjUsMTY5MTc3LDMxMzMzLDMxMzU3LDE1NDAyOCwzMTQxOSwz''@;'; put 'put ''MTQwOCwzMTQyNiwzMTQyNywyOTEzNywxNTY4MTMsMTY4NDIsMzE0NTAsMzE0NTMsMzE0NjYsMTY4NzksMjE2ODIsMTU0NjI1LDMxNDk5LDMxNTczLDMxNTI5LDE1MjMzNCwxNTQ4NzgsMzE2NTAsMzE1OTksMzM2OTIsMTU0NTQ4LDE1ODg0NywzMTY5NiwzMzgyNSwzMTYzNCwzMTY3MiwxNTQ5''@;'; put 'put ''MTIsMTU3ODksMTU0NzI1LDMzOTM4LDMxNzM4LDMxNzUwLDMxNzk3LDE1NDgxNywzMTgxMiwzMTg3NSwxNDk2MzQsMzE5MTAsMjYyMzcsMTQ4ODU2LDMxOTQ1LDMxOTQzLDMxOTc0LDMxODYwLDMxOTg3LDMxOTg5LDMxOTUwLDMyMzU5LDE3NjkzLDE1OTMwMCwzMjA5MywxNTk0NDYsMjk4Mzcs''@;'; put 'put ''MzIxMzcsMzIxNzEsMjg5ODEsMzIxNzksMzIyMTAsMTQ3NTQzLDE1NTY4OSwzMjIyOCwxNTYzNSwzMjI0NSwxMzcyMDksMzIyMjksMTY0NzE3LDMyMjg1LDE1NTkzNywxNTU5OTQsMzIzNjYsMzI0MDIsMTcxOTUsMzc5OTYsMzIyOTUsMzI1NzYsMzI1NzcsMzI1ODMsMzEwMzAsMTU2MzY4LDM5''@;'; put 'put ''MzkzLDMyNjYzLDE1NjQ5NywzMjY3NSwxMzY4MDEsMTMxMTc2LDE3NzU2LDE0NTI1NCwxNzY2NywxNjQ2NjYsMzI3NjIsMTU2ODA5LDMyNzczLDMyNzc2LDMyNzk3LDMyODA4LDMyODE1LDE3MjE2NywxNTg5MTUsMzI4MjcsMzI4MjgsMzI4NjUsMTQxMDc2LDE4ODI1LDE1NzIyMiwxNDY5MTUs''@;'; put 'put ''MTU3NDE2LDI2NDA1LDMyOTM1LDE2NjQ3MiwzMzAzMSwzMzA1MCwyMjcwNCwxNDEwNDYsMjc3NzUsMTU2ODI0LDE1MTQ4MCwyNTgzMSwxMzYzMzAsMzMzMDQsMTM3MzEwLDI3MjE5LDE1MDExNywxNTAxNjUsMTc1MzAsMzMzMjEsMTMzOTAxLDE1ODI5MCwxNDY4MTQsMjA0NzMsMTM2NDQ1LDM0''@;'; put 'put ''MDE4LDMzNjM0LDE1ODQ3NCwxNDk5MjcsMTQ0Njg4LDEzNzA3NSwxNDY5MzYsMzM0NTAsMjY5MDcsMTk0OTY0LDE2ODU5LDM0MTIzLDMzNDg4LDMzNTYyLDEzNDY3OCwxMzcxNDAsMTQwMTcsMTQzNzQxLDE0NDczMCwzMzQwMywzMzUwNiwzMzU2MCwxNDcwODMsMTU5MTM5LDE1ODQ2OSwxNTg2''@;'; put 'put ''MTUsMTQ0ODQ2LDE1ODA3LDMzNTY1LDIxOTk2LDMzNjY5LDE3Njc1LDE1OTE0MSwzMzcwOCwzMzcyOSwzMzc0NywxMzQzOCwxNTk0NDQsMjcyMjMsMzQxMzgsMTM0NjIsMTU5Mjk4LDE0MzA4NywzMzg4MCwxNTQ1OTYsMzM5MDUsMTU4MjcsMTc2MzYsMjczMDMsMzM4NjYsMTQ2NjEzLDMxMDY0''@;'; put 'put ''LDMzOTYwLDE1ODYxNCwxNTkzNTEsMTU5Mjk5LDM0MDE0LDMzODA3LDMzNjgxLDE3NTY4LDMzOTM5LDM0MDIwLDE1NDc2OSwxNjk2MCwxNTQ4MTYsMTc3MzEsMzQxMDAsMjMyODIsMTU5Mzg1LDE3NzAzLDM0MTYzLDE3Njg2LDI2NTU5LDM0MzI2LDE2NTQxMywxNjU0MzUsMzQyNDEsMTU5ODgw''@;'; put 'put ''LDM0MzA2LDEzNjU3OCwxNTk5NDksMTk0OTk0LDE3NzcwLDM0MzQ0LDEzODk2LDEzNzM3OCwyMTQ5NSwxNjA2NjYsMzQ0MzAsMzQ2NzMsMTcyMjgwLDM0Nzk4LDE0MjM3NSwzNDczNywzNDc3OCwzNDgzMSwyMjExMywzNDQxMiwyNjcxMCwxNzkzNSwzNDg4NSwzNDg4NiwxNjEyNDgsMTQ2ODcz''@;'; put 'put ''LDE2MTI1MiwzNDkxMCwzNDk3MiwxODAxMSwzNDk5NiwzNDk5NywyNTUzNywzNTAxMywzMDU4MywxNjE1NTEsMzUyMDcsMzUyMTAsMzUyMzgsMzUyNDEsMzUyMzksMzUyNjAsMTY2NDM3LDM1MzAzLDE2MjA4NCwxNjI0OTMsMzU0ODQsMzA2MTEsMzczNzQsMzU0NzIsMTYyMzkzLDMxNDY1LDE2''@;'; put 'put ''MjYxOCwxNDczNDMsMTgxOTUsMTYyNjE2LDI5MDUyLDM1NTk2LDM1NjE1LDE1MjYyNCwxNTI5MzMsMzU2NDcsMzU2NjAsMzU2NjEsMzU0OTcsMTUwMTM4LDM1NzI4LDM1NzM5LDM1NTAzLDEzNjkyNywxNzk0MSwzNDg5NSwzNTk5NSwxNjMxNTYsMTYzMjE1LDE5NTAyOCwxNDExNywxNjMxNTUs''@;'; put 'put ''MzYwNTQsMTYzMjI0LDE2MzI2MSwzNjExNCwzNjA5OSwxMzc0ODgsMzYwNTksMjg3NjQsMzYxMTMsMTUwNzI5LDE2MDgwLDM2MjE1LDM2MjY1LDE2Mzg0MiwxMzUxODgsMTQ5ODk4LDE1MjI4LDE2NDI4NCwxNjAwMTIsMzE0NjMsMzY1MjUsMzY1MzQsMzY1NDcsMzc1ODgsMzY2MzMsMzY2NTMs''@;'; put 'put ''MTY0NzA5LDE2NDg4MiwzNjc3MywzNzYzNSwxNzI3MDMsMTMzNzEyLDM2Nzg3LDE4NzMwLDE2NjM2NiwxNjUxODEsMTQ2ODc1LDI0MzEyLDE0Mzk3MCwzNjg1NywxNzIwNTIsMTY1NTY0LDE2NTEyMSwxNDAwNjksMTQ3MjAsMTU5NDQ3LDM2OTE5LDE2NTE4MCwxNjI0OTQsMzY5NjEsMTY1MjI4''@;'; put 'put ''LDE2NTM4NywzNzAzMiwxNjU2NTEsMzcwNjAsMTY1NjA2LDM3MDM4LDM3MTE3LDM3MjIzLDE1MDg4LDM3Mjg5LDM3MzE2LDMxOTE2LDE2NjE5NSwxMzg4ODksMzczOTAsMjc4MDcsMzc0NDEsMzc0NzQsMTUzMDE3LDM3NTYxLDE2NjU5OCwxNDY1ODcsMTY2NjY4LDE1MzA1MSwxMzQ0NDksMzc2''@;'; put 'put ''NzYsMzc3MzksMTY2NjI1LDE2Njg5MSwyODgxNSwyMzIzNSwxNjY2MjYsMTY2NjI5LDE4Nzg5LDM3NDQ0LDE2Njg5MiwxNjY5NjksMTY2OTExLDM3NzQ3LDM3OTc5LDM2NTQwLDM4Mjc3LDM4MzEwLDM3OTI2LDM4MzA0LDI4NjYyLDE3MDgxLDE0MDkyMiwxNjU1OTIsMTM1ODA0LDE0Njk5MCwx''@;'; put 'put ''ODkxMSwyNzY3NiwzODUyMywzODU1MCwxNjc0OCwzODU2MywxNTk0NDUsMjUwNTAsMzg1ODIsMzA5NjUsMTY2NjI0LDM4NTg5LDIxNDUyLDE4ODQ5LDE1ODkwNCwxMzE3MDAsMTU2Njg4LDE2ODExMSwxNjgxNjUsMTUwMjI1LDEzNzQ5MywxNDQxMzgsMzg3MDUsMzQzNzAsMzg3MTAsMTg5NTks''@;'; put 'put ''MTc3MjUsMTc3OTcsMTUwMjQ5LDI4Nzg5LDIzMzYxLDM4NjgzLDM4NzQ4LDE2ODQwNSwzODc0MywyMzM3MCwxNjg0MjcsMzg3NTEsMzc5MjUsMjA2ODgsMTQzNTQzLDE0MzU0OCwzODc5MywzODgxNSwzODgzMywzODg0NiwzODg0OCwzODg2NiwzODg4MCwxNTI2ODQsMzg4OTQsMjk3MjQsMTY5''@;'; put 'put ''MDExLDM4OTExLDM4OTAxLDE2ODk4OSwxNjIxNzAsMTkxNTMsMzg5NjQsMzg5NjMsMzg5ODcsMzkwMTQsMTUxMTgsMTYwMTE3LDE1Njk3LDEzMjY1NiwxNDc4MDQsMTUzMzUwLDM5MTE0LDM5MDk1LDM5MTEyLDM5MTExLDE5MTk5LDE1OTAxNSwxMzY5MTUsMjE5MzYsMzkxMzcsMzkxNDIsMzkx''@;'; put 'put ''NDgsMzc3NTIsMzkyMjUsMTUwMDU3LDE5MzE0LDE3MDA3MSwxNzAyNDUsMzk0MTMsMzk0MzYsMzk0ODMsMzk0NDAsMzk1MTIsMTUzMzgxLDE0MDIwLDE2ODExMywxNzA5NjUsMzk2NDgsMzk2NTAsMTcwNzU3LDM5NjY4LDE5NDcwLDM5NzAwLDM5NzI1LDE2NTM3NiwyMDUzMiwzOTczMiwxNTgx''@;'; put 'put ''MjAsMTQ1MzEsMTQzNDg1LDM5NzYwLDM5NzQ0LDE3MTMyNiwyMzEwOSwxMzczMTUsMzk4MjIsMTQ4MDQzLDM5OTM4LDM5OTM1LDM5OTQ4LDE3MTYyNCw0MDQwNCwxNzE5NTksMTcyNDM0LDE3MjQ1OSwxNzIyNTcsMTcyMzIzLDE3MjUxMSw0MDMxOCw0MDMyMywxNzIzNDAsNDA0NjIsMjY3NjAs''@;'; put 'put ''NDAzODgsMTM5NjExLDE3MjQzNSwxNzI1NzYsMTM3NTMxLDE3MjU5NSw0MDI0OSwxNzIyMTcsMTcyNzI0LDQwNTkyLDQwNTk3LDQwNjA2LDQwNjEwLDE5NzY0LDQwNjE4LDQwNjIzLDE0ODMyNCw0MDY0MSwxNTIwMCwxNDgyMSwxNTY0NSwyMDI3NCwxNDI3MCwxNjY5NTUsNDA3MDYsNDA3MTIs''@;'; put 'put ''MTkzNTAsMzc5MjQsMTU5MTM4LDQwNzI3LDQwNzI2LDQwNzYxLDIyMTc1LDIyMTU0LDQwNzczLDM5MzUyLDE2ODA3NSwzODg5OCwzMzkxOSw0MDgwMiw0MDgwOSwzMTQ1Miw0MDg0NiwyOTIwNiwxOTM5MCwxNDk4NzcsMTQ5OTQ3LDI5MDQ3LDE1MDAwOCwxNDgyOTYsMTUwMDk3LDI5NTk4LDE2''@;'; put 'put ''Njg3NCwxMzc0NjYsMzExMzUsMTY2MjcwLDE2NzQ3OCwzNzczNywzNzg3NSwxNjY0NjgsMzc2MTIsMzc3NjEsMzc4MzUsMTY2MjUyLDE0ODY2NSwyOTIwNywxNjEwNywzMDU3OCwzMTI5OSwyODg4MCwxNDg1OTUsMTQ4NDcyLDI5MDU0LDEzNzE5OSwyODgzNSwxMzc0MDYsMTQ0NzkzLDE2MDcx''@;'; put 'put ''LDEzNzM0OSwxNTI2MjMsMTM3MjA4LDE0MTE0LDEzNjk1NSwxMzcyNzMsMTQwNDksMTM3MDc2LDEzNzQyNSwxNTU0NjcsMTQxMTUsMTM2ODk2LDIyMzYzLDE1MDA1MywxMzYxOTAsMTM1ODQ4LDEzNjEzNCwxMzYzNzQsMzQwNTEsMTQ1MDYyLDM0MDUxLDMzODc3LDE0OTkwOCwxNjAxMDEsMTQ2''@;'; put 'put ''OTkzLDE1MjkyNCwxNDcxOTUsMTU5ODI2LDE3NjUyLDE0NTEzNCwxNzAzOTcsMTU5NTI2LDI2NjE3LDE0MTMxLDE1MzgxLDE1ODQ3LDIyNjM2LDEzNzUwNiwyNjY0MCwxNjQ3MSwxNDUyMTUsMTQ3NjgxLDE0NzU5NSwxNDc3MjcsMTU4NzUzLDIxNzA3LDIyMTc0LDE1NzM2MSwyMjE2MiwxMzUx''@;'; put 'put ''MzUsMTM0MDU2LDEzNDY2OSwzNzgzMCwxNjY2NzUsMzc3ODgsMjAyMTYsMjA3NzksMTQzNjEsMTQ4NTM0LDIwMTU2LDEzMjE5NywxMzE5NjcsMjAyOTksMjAzNjIsMTUzMTY5LDIzMTQ0LDEzMTQ5OSwxMzIwNDMsMTQ3NDUsMTMxODUwLDEzMjExNiwxMzM2NSwyMDI2NSwxMzE3NzYsMTY3NjAz''@;'; put 'put ''LDEzMTcwMSwzNTU0NiwxMzE1OTYsMjAxMjAsMjA2ODUsMjA3NDksMjAzODYsMjAyMjcsMTUwMDMwLDE0NzA4MiwyMDI5MCwyMDUyNiwyMDU4OCwyMDYwOSwyMDQyOCwyMDQ1MywyMDU2OCwyMDczMiwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyODI3OCwxNDQ3ODksMTQ3MDAxLDE0NzEzNSwy''@;'; put 'put ''ODAxOCwxMzczNDgsMTQ3MDgxLDIwOTA0LDIwOTMxLDEzMjU3NiwxNzYyOSwxMzIyNTksMTMyMjQyLDEzMjI0MSwzNjIxOCwxNjY1NTYsMTMyODc4LDIxMDgxLDIxMTU2LDEzMzIzNSwyMTIxNywzNzc0MiwxODA0MiwyOTA2OCwxNDgzNjQsMTM0MTc2LDE0OTkzMiwxMzUzOTYsMjcwODksMTM0''@;'; put 'put ''Njg1LDI5ODE3LDE2MDk0LDI5ODQ5LDI5NzE2LDI5NzgyLDI5NTkyLDE5MzQyLDE1MDIwNCwxNDc1OTcsMjE0NTYsMTM3MDAsMjkxOTksMTQ3NjU3LDIxOTQwLDEzMTkwOSwyMTcwOSwxMzQwODYsMjIzMDEsMzc0NjksMzg2NDQsMzc3MzQsMjI0OTMsMjI0MTMsMjIzOTksMTM4ODYsMjI3MzEs''@;'; put 'put ''MjMxOTMsMTY2NDcwLDEzNjk1NCwxMzcwNzEsMTM2OTc2LDIzMDg0LDIyOTY4LDM3NTE5LDIzMTY2LDIzMjQ3LDIzMDU4LDE1MzkyNiwxMzc3MTUsMTM3MzEzLDE0ODExNywxNDA2OSwyNzkwOSwyOTc2MywyMzA3MywxNTUyNjcsMjMxNjksMTY2ODcxLDEzMjExNSwzNzg1NiwyOTgzNiwxMzU5''@;'; put 'put ''MzksMjg5MzMsMTg4MDIsMzc4OTYsMTY2Mzk1LDM3ODIxLDE0MjQwLDIzNTgyLDIzNzEwLDI0MTU4LDI0MTM2LDEzNzYyMiwxMzc1OTYsMTQ2MTU4LDI0MjY5LDIzMzc1LDEzNzQ3NSwxMzc0NzYsMTQwODEsMTM3Mzc2LDE0MDQ1LDEzNjk1OCwxNDAzNSwzMzA2NiwxNjY0NzEsMTM4NjgyLDE0''@;'; put 'put ''NDQ5OCwxNjYzMTIsMjQzMzIsMjQzMzQsMTM3NTExLDEzNzEzMSwyMzE0NywxMzcwMTksMjMzNjQsMzQzMjQsMTYxMjc3LDM0OTEyLDI0NzAyLDE0MTQwOCwxNDA4NDMsMjQ1MzksMTYwNTYsMTQwNzE5LDE0MDczNCwxNjgwNzIsMTU5NjAzLDI1MDI0LDEzMTEzNCwxMzExNDIsMTQwODI3LDI0''@;'; put 'put ''OTg1LDI0OTg0LDI0NjkzLDE0MjQ5MSwxNDI1OTksMTQ5MjA0LDE2ODI2OSwyNTcxMywxNDkwOTMsMTQyMTg2LDE0ODg5LDE0MjExNCwxNDQ0NjQsMTcwMjE4LDE0Mjk2OCwyNTM5OSwxNzMxNDcsMjU3ODIsMjUzOTMsMjU1NTMsMTQ5OTg3LDE0MjY5NSwyNTI1MiwxNDI0OTcsMjU2NTksMjU5''@;'; put 'put ''NjMsMjY5OTQsMTUzNDgsMTQzNTAyLDE0NDA0NSwxNDk4OTcsMTQ0MDQzLDIxNzczLDE0NDA5NiwxMzc0MzMsMTY5MDIzLDI2MzE4LDE0NDAwOSwxNDM3OTUsMTUwNzIsMTY3ODQsMTUyOTY0LDE2NjY5MCwxNTI5NzUsMTM2OTU2LDE1MjkyMywxNTI2MTMsMzA5NTgsMTQzNjE5LDEzNzI1OCwx''@;'; put 'put ''NDM5MjQsMTM0MTIsMTQzODg3LDE0Mzc0NiwxNDgxNjksMjYyNTQsMTU5MDEyLDI2MjE5LDE5MzQ3LDI2MTYwLDE2MTkwNCwxMzg3MzEsMjYyMTEsMTQ0MDgyLDE0NDA5NywyNjE0MiwxNTM3MTQsMTQ1NDUsMTQ1NDY2LDE0NTM0MCwxNTI1NywxNDUzMTQsMTQ0MzgyLDI5OTA0LDE1MjU0LDI2''@;'; put 'put ''NTExLDE0OTAzNCwyNjgwNiwyNjY1NCwxNTMwMCwyNzMyNiwxNDQzNSwxNDUzNjUsMTQ4NjE1LDI3MTg3LDI3MjE4LDI3MzM3LDI3Mzk3LDEzNzQ5MCwyNTg3MywyNjc3NiwyNzIxMiwxNTMxOSwyNzI1OCwyNzQ3OSwxNDczOTIsMTQ2NTg2LDM3NzkyLDM3NjE4LDE2Njg5MCwxNjY2MDMsMzc1''@;'; put 'put ''MTMsMTYzODcwLDE2NjM2NCwzNzk5MSwyODA2OSwyODQyNywxNDk5OTYsMjgwMDcsMTQ3MzI3LDE1NzU5LDI4MTY0LDE0NzUxNiwyMzEwMSwyODE3MCwyMjU5OSwyNzk0MCwzMDc4NiwyODk4NywxNDgyNTAsMTQ4MDg2LDI4OTEzLDI5MjY0LDI5MzE5LDI5MzMyLDE0OTM5MSwxNDkyODUsMjA4''@;'; put 'put ''NTcsMTUwMTgwLDEzMjU4NywyOTgxOCwxNDcxOTIsMTQ0OTkxLDE1MDA5MCwxNDk3ODMsMTU1NjE3LDE2MTM0LDE2MDQ5LDE1MDIzOSwxNjY5NDcsMTQ3MjUzLDI0NzQzLDE2MTE1LDI5OTAwLDI5NzU2LDM3NzY3LDI5NzUxLDE3NTY3LDE1OTIxMCwxNzc0NSwzMDA4MywxNjIyNywxNTA3NDUs''@;'; put 'put ''MTUwNzkwLDE2MjE2LDMwMDM3LDMwMzIzLDE3MzUxMCwxNTEyOSwyOTgwMCwxNjY2MDQsMTQ5OTMxLDE0OTkwMiwxNTA5OSwxNTgyMSwxNTAwOTQsMTYxMjcsMTQ5OTU3LDE0OTc0NywzNzM3MCwyMjMyMiwzNzY5OCwxNjY2MjcsMTM3MzE2LDIwNzAzLDE1MjA5NywxNTIwMzksMzA1ODQsMTQz''@;'; put 'put ''OTIyLDMwNDc4LDMwNDc5LDMwNTg3LDE0OTE0MywxNDUyODEsMTQ5NDIsMTQ5NzQ0LDI5NzUyLDI5ODUxLDE2MDYzLDE1MDIwMiwxNTAyMTUsMTY1ODQsMTUwMTY2LDE1NjA3OCwzNzYzOSwxNTI5NjEsMzA3NTAsMzA4NjEsMzA4NTYsMzA5MzAsMjk2NDgsMzEwNjUsMTYxNjAxLDE1MzMxNSwx''@;'; put 'put ''NjY1NCwzMTEzMSwzMzk0MiwzMTE0MSwyNzE4MSwxNDcxOTQsMzEyOTAsMzEyMjAsMTY3NTAsMTM2OTM0LDE2NjkwLDM3NDI5LDMxMjE3LDEzNDQ3NiwxNDk5MDAsMTMxNzM3LDE0Njg3NCwxMzcwNzAsMTM3MTksMjE4NjcsMTM2ODAsMTM5OTQsMTMxNTQwLDEzNDE1NywzMTQ1OCwyMzEyOSwx''@;'; put 'put ''NDEwNDUsMTU0Mjg3LDE1NDI2OCwyMzA1MywxMzE2NzUsMzA5NjAsMjMwODIsMTU0NTY2LDMxNDg2LDE2ODg5LDMxODM3LDMxODUzLDE2OTEzLDE1NDU0NywxNTUzMjQsMTU1MzAyLDMxOTQ5LDE1MDAwOSwxMzcxMzYsMzE4ODYsMzE4NjgsMzE5MTgsMjczMTQsMzIyMjAsMzIyNjMsMzIyMTEs''@;'; put 'put ''MzI1OTAsMTU2MjU3LDE1NTk5NiwxNjI2MzIsMzIxNTEsMTU1MjY2LDE3MDAyLDE1ODU4MSwxMzMzOTgsMjY1ODIsMTMxMTUwLDE0NDg0NywyMjQ2OCwxNTY2OTAsMTU2NjY0LDE0OTg1OCwzMjczMywzMTUyNywxMzMxNjQsMTU0MzQ1LDE1NDk0NywzMTUwMCwxNTUxNTAsMzkzOTgsMzQzNzMs''@;'; put 'put ''Mzk1MjMsMjcxNjQsMTQ0NDQ3LDE0ODE4LDE1MDAwNywxNTcxMDEsMzk0NTUsMTU3MDg4LDMzOTIwLDE2MDAzOSwxNTg5MjksMTc2NDIsMzMwNzksMTc0MTAsMzI5NjYsMzMwMzMsMzMwOTAsMTU3NjIwLDM5MTA3LDE1ODI3NCwzMzM3OCwzMzM4MSwxNTgyODksMzM4NzUsMTU5MTQzLDM0MzIw''@;'; put 'put ''LDE2MDI4MywyMzE3NCwxNjc2NywxMzcyODAsMjMzMzksMTM3Mzc3LDIzMjY4LDEzNzQzMiwzNDQ2NCwxOTUwMDQsMTQ2ODMxLDM0ODYxLDE2MDgwMiwyMzA0MiwzNDkyNiwyMDI5MywzNDk1MSwzNTAwNywzNTA0NiwzNTE3MywzNTE0OSwxNTMyMTksMzUxNTYsMTYxNjY5LDE2MTY2OCwxNjY5''@;'; put 'put ''MDEsMTY2ODczLDE2NjgxMiwxNjYzOTMsMTYwNDUsMzM5NTUsMTgxNjUsMTgxMjcsMTQzMjIsMzUzODksMzUzNTYsMTY5MDMyLDI0Mzk3LDM3NDE5LDE0ODEwMCwyNjA2OCwyODk2OSwyODg2OCwxMzcyODUsNDAzMDEsMzU5OTksMzYwNzMsMTYzMjkyLDIyOTM4LDMwNjU5LDIzMDI0LDE3MjYy''@;'; put 'put ''LDE0MDM2LDM2Mzk0LDM2NTE5LDE1MDUzNywzNjY1NiwzNjY4MiwxNzE0MCwyNzczNiwyODYwMywxNDAwNjUsMTg1ODcsMjg1MzcsMjgyOTksMTM3MTc4LDM5OTEzLDE0MDA1LDE0OTgwNywzNzA1MSwzNzAxNSwyMTg3MywxODY5NCwzNzMwNywzNzg5MiwxNjY0NzUsMTY0ODIsMTY2NjUyLDM3''@;'; put 'put ''OTI3LDE2Njk0MSwxNjY5NzEsMzQwMjEsMzUzNzEsMzgyOTcsMzgzMTEsMzgyOTUsMzgyOTQsMTY3MjIwLDI5NzY1LDE2MDY2LDE0OTc1OSwxNTAwODIsMTQ4NDU4LDE2MTAzLDE0MzkwOSwzODU0MywxNjc2NTUsMTY3NTI2LDE2NzUyNSwxNjA3NiwxNDk5OTcsMTUwMTM2LDE0NzQzOCwyOTcx''@;'; put 'put ''NCwyOTgwMywxNjEyNCwzODcyMSwxNjgxMTIsMjY2OTUsMTg5NzMsMTY4MDgzLDE1MzU2NywzODc0OSwzNzczNiwxNjYyODEsMTY2OTUwLDE2NjcwMywxNTY2MDYsMzc1NjIsMjMzMTMsMzU2ODksMTg3NDgsMjk2ODksMTQ3OTk1LDM4ODExLDM4NzY5LDM5MjI0LDEzNDk1MCwyNDAwMSwxNjY4''@;'; put 'put ''NTMsMTUwMTk0LDM4OTQzLDE2OTE3OCwzNzYyMiwxNjk0MzEsMzczNDksMTc2MDAsMTY2NzM2LDE1MDExOSwxNjY3NTYsMzkxMzIsMTY2NDY5LDE2MTI4LDM3NDE4LDE4NzI1LDMzODEyLDM5MjI3LDM5MjQ1LDE2MjU2NiwxNTg2OSwzOTMyMywxOTMxMSwzOTMzOCwzOTUxNiwxNjY3NTcsMTUz''@;'; put 'put ''ODAwLDI3Mjc5LDM5NDU3LDIzMjk0LDM5NDcxLDE3MDIyNSwxOTM0NCwxNzAzMTIsMzkzNTYsMTkzODksMTkzNTEsMzc3NTcsMjI2NDIsMTM1OTM4LDIyNTYyLDE0OTk0NCwxMzY0MjQsMzA3ODgsMTQxMDg3LDE0Njg3MiwyNjgyMSwxNTc0MSwzNzk3NiwxNDYzMSwyNDkxMiwxNDExODUsMTQx''@;'; put 'put ''Njc1LDI0ODM5LDQwMDE1LDQwMDE5LDQwMDU5LDM5OTg5LDM5OTUyLDM5ODA3LDM5ODg3LDE3MTU2NSwzOTgzOSwxNzI1MzMsMTcyMjg2LDQwMjI1LDE5NjMwLDE0NzcxNiw0MDQ3MiwxOTYzMiw0MDIwNCwxNzI0NjgsMTcyMjY5LDE3MjI3NSwxNzAyODcsNDAzNTcsMzM5ODEsMTU5MjUwLDE1''@;'; put 'put ''OTcxMSwxNTg1OTQsMzQzMDAsMTc3MTUsMTU5MTQwLDE1OTM2NCwxNTkyMTYsMzM4MjQsMzQyODYsMTU5MjMyLDE0NTM2NywxNTU3NDgsMzEyMDIsMTQ0Nzk2LDE0NDk2MCwxODczMywxNDk5ODIsMTU3MTQsMzc4NTEsMzc1NjYsMzc3MDQsMTMxNzc1LDMwOTA1LDM3NDk1LDM3OTY1LDIwNDUy''@;'; put 'put ''LDEzMzc2LDM2OTY0LDE1MjkyNSwzMDc4MSwzMDgwNCwzMDkwMiwzMDc5NSwxMzcwNDcsMTQzODE3LDE0OTgyNSwxMzk3OCwyMDMzOCwyODYzNCwyODYzMywyODcwMiwyODcwMiwyMTUyNCwxNDc4OTMsMjI0NTksMjI3NzEsMjI0MTAsNDAyMTQsMjI0ODcsMjg5ODAsMTM0ODcsMTQ3ODg0LDI5''@;'; put 'put ''MTYzLDE1ODc4NCwxNTE0NDcsMjMzMzYsMTM3MTQxLDE2NjQ3MywyNDg0NCwyMzI0NiwyMzA1MSwxNzA4NCwxNDg2MTYsMTQxMjQsMTkzMjMsMTY2Mzk2LDM3ODE5LDM3ODE2LDEzNzQzMCwxMzQ5NDEsMzM5MDYsMTU4OTEyLDEzNjIxMSwxNDgyMTgsMTQyMzc0LDE0ODQxNywyMjkzMiwxNDY4''@;'; put 'put ''NzEsMTU3NTA1LDMyMTY4LDE1NTk5NSwxNTU4MTIsMTQ5OTQ1LDE0OTg5OSwxNjYzOTQsMzc2MDUsMjk2NjYsMTYxMDUsMjk4NzYsMTY2NzU1LDEzNzM3NSwxNjA5NywxNTAxOTUsMjczNTIsMjk2ODMsMjk2OTEsMTYwODYsMTUwMDc4LDE1MDE2NCwxMzcxNzcsMTUwMTE4LDEzMjAwNywxMzYy''@;'; put 'put ''MjgsMTQ5OTg5LDI5NzY4LDE0OTc4MiwyODgzNywxNDk4NzgsMzc1MDgsMjk2NzAsMzc3MjcsMTMyMzUwLDM3NjgxLDE2NjYwNiwxNjY0MjIsMzc3NjYsMTY2ODg3LDE1MzA0NSwxODc0MSwxNjY1MzAsMjkwMzUsMTQ5ODI3LDEzNDM5OSwyMjE4MCwxMzI2MzQsMTM0MTIzLDEzNDMyOCwyMTc2''@;'; put 'put ''MiwzMTE3MiwxMzcyMTAsMzIyNTQsMTM2ODk4LDE1MDA5NiwxMzcyOTgsMTc3MTAsMzc4ODksMTQwOTAsMTY2NTkyLDE0OTkzMywyMjk2MCwxMzc0MDcsMTM3MzQ3LDE2MDkwMCwyMzIwMSwxNDA1MCwxNDY3NzksMTRlMywzNzQ3MSwyMzE2MSwxNjY1MjksMTM3MzE0LDM3NzQ4LDE1NTY1LDEz''@;'; put 'put ''MzgxMiwxOTA5NCwxNDczMCwyMDcyNCwxNTcyMSwxNTY5MiwxMzYwOTIsMjkwNDUsMTcxNDcsMTY0Mzc2LDI4MTc1LDE2ODE2NCwxNzY0MywyNzk5MSwxNjM0MDcsMjg3NzUsMjc4MjMsMTU1NzQsMTQ3NDM3LDE0Njk4OSwyODE2MiwyODQyOCwxNTcyNywxMzIwODUsMzAwMzMsMTQwMTIsMTM1''@;'; put 'put ''MTIsMTgwNDgsMTYwOTAsMTg1NDUsMjI5ODAsMzc0ODYsMTg3NTAsMzY2NzMsMTY2OTQwLDE1ODY1NiwyMjU0NiwyMjQ3MiwxNDAzOCwxMzYyNzQsMjg5MjYsMTQ4MzIyLDE1MDEyOSwxNDMzMzEsMTM1ODU2LDE0MDIyMSwyNjgwOSwyNjk4MywxMzYwODgsMTQ0NjEzLDE2MjgwNCwxNDUxMTks''@;'; put 'put ''MTY2NTMxLDE0NTM2NiwxNDQzNzgsMTUwNjg3LDI3MTYyLDE0NTA2OSwxNTg5MDMsMzM4NTQsMTc2MzEsMTc2MTQsMTU5MDE0LDE1OTA1NywxNTg4NTAsMTU5NzEwLDI4NDM5LDE2MDAwOSwzMzU5NywxMzcwMTgsMzM3NzMsMTU4ODQ4LDE1OTgyNywxMzcxNzksMjI5MjEsMjMxNzAsMTM3MTM5''@;'; put 'put ''LDIzMTM3LDIzMTUzLDEzNzQ3NywxNDc5NjQsMTQxMjUsMjMwMjMsMTM3MDIwLDE0MDIzLDI5MDcwLDM3Nzc2LDI2MjY2LDE0ODEzMywyMzE1MCwyMzA4MywxNDgxMTUsMjcxNzksMTQ3MTkzLDE2MTU5MCwxNDg1NzEsMTQ4MTcwLDI4OTU3LDE0ODA1NywxNjYzNjksMjA0MDAsMTU5MDE2LDIz''@;'; put 'put ''NzQ2LDE0ODY4NiwxNjM0MDUsMTQ4NDEzLDI3MTQ4LDE0ODA1NCwxMzU5NDAsMjg4MzgsMjg5NzksMTQ4NDU3LDE1NzgxLDI3ODcxLDE5NDU5NywxNTAwOTUsMzIzNTcsMjMwMTksMjM4NTUsMTU4NTksMjQ0MTIsMTUwMTA5LDEzNzE4MywzMjE2NCwzMzgzMCwyMTYzNywxNDYxNzAsMTQ0MTI4''@;'; put 'put ''LDEzMTYwNCwyMjM5OCwxMzMzMzMsMTMyNjMzLDE2MzU3LDEzOTE2NiwxNzI3MjYsMjg2NzUsMTY4MjgzLDIzOTIwLDI5NTgzLDMxOTU1LDE2NjQ4OSwxNjg5OTIsMjA0MjQsMzI3NDMsMjkzODksMjk0NTYsMTYyNTQ4LDI5NDk2LDI5NDk3LDE1MzMzNCwyOTUwNSwyOTUxMiwxNjA0MSwxNjI1''@;'; put 'put ''ODQsMzY5NzIsMjkxNzMsMTQ5NzQ2LDI5NjY1LDMzMjcwLDE2MDc0LDMwNDc2LDE2MDgxLDI3ODEwLDIyMjY5LDI5NzIxLDI5NzI2LDI5NzI3LDE2MDk4LDE2MTEyLDE2MTE2LDE2MTIyLDI5OTA3LDE2MTQyLDE2MjExLDMwMDE4LDMwMDYxLDMwMDY2LDMwMDkzLDE2MjUyLDMwMTUyLDMwMTcy''@;'; put 'put ''LDE2MzIwLDMwMjg1LDE2MzQzLDMwMzI0LDE2MzQ4LDMwMzMwLDE1MTM4OCwyOTA2NCwyMjA1MSwzNTIwMCwyMjYzMywxNjQxMywzMDUzMSwxNjQ0MSwyNjQ2NSwxNjQ1MywxMzc4NywzMDYxNiwxNjQ5MCwxNjQ5NSwyMzY0NiwzMDY1NCwzMDY2NywyMjc3MCwzMDc0NCwyODg1NywzMDc0OCwx''@;'; put 'put ''NjU1MiwzMDc3NywzMDc5MSwzMDgwMSwzMDgyMiwzMzg2NCwxNTI4ODUsMzEwMjcsMjY2MjcsMzEwMjYsMTY2NDMsMTY2NDksMzExMjEsMzExMjksMzY3OTUsMzEyMzgsMzY3OTYsMTY3NDMsMzEzNzcsMTY4MTgsMzE0MjAsMzM0MDEsMTY4MzYsMzE0MzksMzE0NTEsMTY4NDcsMjAwMDEsMzE1''@;'; put 'put ''ODYsMzE1OTYsMzE2MTEsMzE3NjIsMzE3NzEsMTY5OTIsMTcwMTgsMzE4NjcsMzE5MDAsMTcwMzYsMzE5MjgsMTcwNDQsMzE5ODEsMzY3NTUsMjg4NjQsMTM0MzUxLDMyMjA3LDMyMjEyLDMyMjA4LDMyMjUzLDMyNjg2LDMyNjkyLDI5MzQzLDE3MzAzLDMyODAwLDMyODA1LDMxNTQ1LDMyODE0''@;'; put 'put ''LDMyODE3LDMyODUyLDE1ODIwLDIyNDUyLDI4ODMyLDMyOTUxLDMzMDAxLDE3Mzg5LDMzMDM2LDI5NDgyLDMzMDM4LDMzMDQyLDMwMDQ4LDMzMDQ0LDE3NDA5LDE1MTYxLDMzMTEwLDMzMTEzLDMzMTE0LDE3NDI3LDIyNTg2LDMzMTQ4LDMzMTU2LDE3NDQ1LDMzMTcxLDE3NDUzLDMzMTg5LDIy''@;'; put 'put ''NTExLDMzMjE3LDMzMjUyLDMzMzY0LDE3NTUxLDMzNDQ2LDMzMzk4LDMzNDgyLDMzNDk2LDMzNTM1LDE3NTg0LDMzNjIzLDM4NTA1LDI3MDE4LDMzNzk3LDI4OTE3LDMzODkyLDI0ODAzLDMzOTI4LDE3NjY4LDMzOTgyLDM0MDE3LDM0MDQwLDM0MDY0LDM0MTA0LDM0MTMwLDE3NzIzLDM0MTU5''@;'; put 'put ''LDM0MTYwLDM0MjcyLDE3NzgzLDM0NDE4LDM0NDUwLDM0NDgyLDM0NTQzLDM4NDY5LDM0Njk5LDE3OTI2LDE3OTQzLDM0OTkwLDM1MDcxLDM1MTA4LDM1MTQzLDM1MjE3LDE2MjE1MSwzNTM2OSwzNTM4NCwzNTQ3NiwzNTUwOCwzNTkyMSwzNjA1MiwzNjA4MiwzNjEyNCwxODMyOCwyMjYyMywz''@;'; put 'put ''NjI5MSwxODQxMywyMDIwNiwzNjQxMCwyMTk3NiwyMjM1NiwzNjQ2NSwyMjAwNSwzNjUyOCwxODQ4NywzNjU1OCwzNjU3OCwzNjU4MCwzNjU4OSwzNjU5NCwzNjc5MSwzNjgwMSwzNjgxMCwzNjgxMiwzNjkxNSwzOTM2NCwxODYwNSwzOTEzNiwzNzM5NSwxODcxOCwzNzQxNiwzNzQ2NCwzNzQ4''@;'; put 'put ''MywzNzU1MywzNzU1MCwzNzU2NywzNzYwMywzNzYxMSwzNzYxOSwzNzYyMCwzNzYyOSwzNzY5OSwzNzc2NCwzNzgwNSwxODc1NywxODc2OSw0MDYzOSwzNzkxMSwyMTI0OSwzNzkxNywzNzkzMywzNzk1MCwxODc5NCwzNzk3MiwzODAwOSwzODE4OSwzODMwNiwxODg1NSwzODM4OCwzODQ1MSwx''@;'; put 'put ''ODkxNywyNjUyOCwxODk4MCwzODcyMCwxODk5NywzODgzNCwzODg1MCwyMjEwMCwxOTE3MiwyNDgwOCwzOTA5NywxOTIyNSwzOTE1MywyMjU5NiwzOTE4MiwzOTE5MywyMDkxNiwzOTE5NiwzOTIyMywzOTIzNCwzOTI2MSwzOTI2NiwxOTMxMiwzOTM2NSwxOTM1NywzOTQ4NCwzOTY5NSwzMTM2''@;'; put 'put ''MywzOTc4NSwzOTgwOSwzOTkwMSwzOTkyMSwzOTkyNCwxOTU2NSwzOTk2OCwxNDE5MSwxMzgxNzgsNDAyNjUsMzk5OTQsNDA3MDIsMjIwOTYsNDAzMzksNDAzODEsNDAzODQsNDA0NDQsMzgxMzQsMzY3OTAsNDA1NzEsNDA2MjAsNDA2MjUsNDA2MzcsNDA2NDYsMzgxMDgsNDA2NzQsNDA2ODks''@;'; put 'put ''NDA2OTYsMzE0MzIsNDA3NzIsMTMxMjIwLDEzMTc2NywxMzJlMywyNjkwNiwzODA4MywyMjk1NiwxMzIzMTEsMjI1OTIsMzgwODEsMTQyNjUsMTMyNTY1LDEzMjYyOSwxMzI3MjYsMTM2ODkwLDIyMzU5LDI5MDQzLDEzMzgyNiwxMzM4MzcsMTM0MDc5LDIxNjEwLDE5NDYxOSwxMzQwOTEsMjE2''@;'; put 'put ''NjIsMTM0MTM5LDEzNDIwMywxMzQyMjcsMTM0MjQ1LDEzNDI2OCwyNDgwNywxMzQyODUsMjIxMzgsMTM0MzI1LDEzNDM2NSwxMzQzODEsMTM0NTExLDEzNDU3OCwxMzQ2MDAsMjY5NjUsMzk5ODMsMzQ3MjUsMTM0NjYwLDEzNDY3MCwxMzQ4NzEsMTM1MDU2LDEzNDk1NywxMzQ3NzEsMjM1ODQs''@;'; put 'put ''MTM1MTAwLDI0MDc1LDEzNTI2MCwxMzUyNDcsMTM1Mjg2LDI2Mzk4LDEzNTI5MSwxMzUzMDQsMTM1MzE4LDEzODk1LDEzNTM1OSwxMzUzNzksMTM1NDcxLDEzNTQ4MywyMTM0OCwzMzk2NSwxMzU5MDcsMTM2MDUzLDEzNTk5MCwzNTcxMywxMzY1NjcsMTM2NzI5LDEzNzE1NSwxMzcxNTksMjAw''@;'; put 'put ''ODgsMjg4NTksMTM3MjYxLDEzNzU3OCwxMzc3NzMsMTM3Nzk3LDEzODI4MiwxMzgzNTIsMTM4NDEyLDEzODk1MiwyNTI4MywxMzg5NjUsMTM5MDI5LDI5MDgwLDI2NzA5LDEzOTMzMywyNzExMywxNDAyNCwxMzk5MDAsMTQwMjQ3LDE0MDI4MiwxNDEwOTgsMTQxNDI1LDE0MTY0NywzMzUzMywx''@;'; put 'put ''NDE2NzEsMTQxNzE1LDE0MjAzNywzNTIzNywxNDIwNTYsMzY3NjgsMTQyMDk0LDM4ODQwLDE0MjE0MywzODk4MywzOTYxMywxNDI0MTIsbnVsbCwxNDI0NzIsMTQyNTE5LDE1NDYwMCwxNDI2MDAsMTQyNjEwLDE0Mjc3NSwxNDI3NDEsMTQyOTE0LDE0MzIyMCwxNDMzMDgsMTQzNDExLDE0MzQ2''@;'; put 'put ''MiwxNDQxNTksMTQ0MzUwLDI0NDk3LDI2MTg0LDI2MzAzLDE2MjQyNSwxNDQ3NDMsMTQ0ODgzLDI5MTg1LDE0OTk0NiwzMDY3OSwxNDQ5MjIsMTQ1MTc0LDMyMzkxLDEzMTkxMCwyMjcwOSwyNjM4MiwyNjkwNCwxNDYwODcsMTYxMzY3LDE1NTYxOCwxNDY5NjEsMTQ3MTI5LDE2MTI3OCwxMzk0''@;'; put 'put ''MTgsMTg2NDAsMTkxMjgsMTQ3NzM3LDE2NjU1NCwxNDgyMDYsMTQ4MjM3LDE0NzUxNSwxNDgyNzYsMTQ4Mzc0LDE1MDA4NSwxMzI1NTQsMjA5NDYsMTMyNjI1LDIyOTQzLDEzODkyMCwxNTI5NCwxNDY2ODcsMTQ4NDg0LDE0ODY5NCwyMjQwOCwxNDkxMDgsMTQ3NDcsMTQ5Mjk1LDE2NTM1Miwx''@;'; put 'put ''NzA0NDEsMTQxNzgsMTM5NzE1LDM1Njc4LDE2NjczNCwzOTM4MiwxNDk1MjIsMTQ5NzU1LDE1MDAzNywyOTE5MywxNTAyMDgsMTM0MjY0LDIyODg1LDE1MTIwNSwxNTE0MzAsMTMyOTg1LDM2NTcwLDE1MTU5NiwyMTEzNSwyMjMzNSwyOTA0MSwxNTIyMTcsMTUyNjAxLDE0NzI3NCwxNTAxODMs''@;'; put 'put ''MjE5NDgsMTUyNjQ2LDE1MjY4NiwxNTg1NDYsMzczMzIsMTM0MjcsMTUyODk1LDE2MTMzMCwxNTI5MjYsMTgyMDAsMTUyOTMwLDE1MjkzNCwxNTM1NDMsMTQ5ODIzLDE1MzY5MywyMDU4MiwxMzU2MywxNDQzMzIsMjQ3OTgsMTUzODU5LDE4MzAwLDE2NjIxNiwxNTQyODYsMTU0NTA1LDE1NDYz''@;'; put 'put ''MCwxMzg2NDAsMjI0MzMsMjkwMDksMjg1OTgsMTU1OTA2LDE2MjgzNCwzNjk1MCwxNTYwODIsMTUxNDUwLDM1NjgyLDE1NjY3NCwxNTY3NDYsMjM4OTksMTU4NzExLDM2NjYyLDE1NjgwNCwxMzc1MDAsMzU1NjIsMTUwMDA2LDE1NjgwOCwxNDc0MzksMTU2OTQ2LDE5MzkyLDE1NzExOSwxNTcz''@;'; put 'put ''NjUsMTQxMDgzLDM3OTg5LDE1MzU2OSwyNDk4MSwyMzA3OSwxOTQ3NjUsMjA0MTEsMjIyMDEsMTQ4NzY5LDE1NzQzNiwyMDA3NCwxNDk4MTIsMzg0ODYsMjgwNDcsMTU4OTA5LDEzODQ4LDM1MTkxLDE1NzU5MywxNTc4MDYsMTU2Njg5LDE1Nzc5MCwyOTE1MSwxNTc4OTUsMzE1NTQsMTY4MTI4''@;'; put 'put ''LDEzMzY0OSwxNTc5OTAsMzcxMjQsMTU4MDA5LDMxMzAxLDQwNDMyLDE1ODIwMiwzOTQ2MiwxNTgyNTMsMTM5MTksMTU2Nzc3LDEzMTEwNSwzMTEwNywxNTgyNjAsMTU4NTU1LDIzODUyLDE0NDY2NSwzMzc0MywxNTg2MjEsMTgxMjgsMTU4ODg0LDMwMDExLDM0OTE3LDE1OTE1MCwyMjcxMCwx''@;'; put 'put ''NDEwOCwxNDA2ODUsMTU5ODE5LDE2MDIwNSwxNTQ0NCwxNjAzODQsMTYwMzg5LDM3NTA1LDEzOTY0MiwxNjAzOTUsMzc2ODAsMTYwNDg2LDE0OTk2OCwyNzcwNSwzODA0NywxNjA4NDgsMTM0OTA0LDM0ODU1LDM1MDYxLDE0MTYwNiwxNjQ5NzksMTM3MTM3LDI4MzQ0LDE1MDA1OCwxMzcyNDgs''@;'; put 'put ''MTQ3NTYsMTQwMDksMjM1NjgsMzEyMDMsMTc3MjcsMjYyOTQsMTcxMTgxLDE3MDE0OCwzNTEzOSwxNjE3NDAsMTYxODgwLDIyMjMwLDE2NjA3LDEzNjcxNCwxNDc1MywxNDUxOTksMTY0MDcyLDEzNjEzMywyOTEwMSwzMzYzOCwxNjIyNjksMTY4MzYwLDIzMTQzLDE5NjM5LDE1OTkxOSwxNjYz''@;'; put 'put ''MTUsMTYyMzAxLDE2MjMxNCwxNjI1NzEsMTYzMTc0LDE0NzgzNCwzMTU1NSwzMTEwMiwxNjM4NDksMjg1OTcsMTcyNzY3LDI3MTM5LDE2NDYzMiwyMTQxMCwxNTkyMzksMzc4MjMsMjY2NzgsMzg3NDksMTY0MjA3LDE2Mzg3NSwxNTgxMzMsMTM2MTczLDE0MzkxOSwxNjM5MTIsMjM5NDEsMTY2''@;'; put 'put ''OTYwLDE2Mzk3MSwyMjI5MywzODk0NywxNjYyMTcsMjM5NzksMTQ5ODk2LDI2MDQ2LDI3MDkzLDIxNDU4LDE1MDE4MSwxNDczMjksMTUzNzcsMjY0MjIsMTYzOTg0LDE2NDA4NCwxNjQxNDIsMTM5MTY5LDE2NDE3NSwxNjQyMzMsMTY0MjcxLDE2NDM3OCwxNjQ2MTQsMTY0NjU1LDE2NDc0Niwx''@;'; put 'put ''Mzc3MCwxNjQ5NjgsMTY1NTQ2LDE4NjgyLDI1NTc0LDE2NjIzMCwzMDcyOCwzNzQ2MSwxNjYzMjgsMTczOTQsMTY2Mzc1LDE3Mzc1LDE2NjM3NiwxNjY3MjYsMTY2ODY4LDIzMDMyLDE2NjkyMSwzNjYxOSwxNjc4NzcsMTY4MTcyLDMxNTY5LDE2ODIwOCwxNjgyNTIsMTU4NjMsMTY4Mjg2LDE1''@;'; put 'put ''MDIxOCwzNjgxNiwyOTMyNywyMjE1NSwxNjkxOTEsMTY5NDQ5LDE2OTM5MiwxNjk0MDAsMTY5Nzc4LDE3MDE5MywxNzAzMTMsMTcwMzQ2LDE3MDQzNSwxNzA1MzYsMTcwNzY2LDE3MTM1NCwxNzE0MTksMzI0MTUsMTcxNzY4LDE3MTgxMSwxOTYyMCwzODIxNSwxNzI2OTEsMjkwOTAsMTcyNzk5''@;'; put 'put ''LDE5ODU3LDM2ODgyLDE3MzUxNSwxOTg2OCwxMzQzMDAsMzY3OTgsMjE5NTMsMzY3OTQsMTQwNDY0LDM2NzkzLDE1MDE2MywxNzY3MywzMjM4MywyODUwMiwyNzMxMywyMDIwMiwxMzU0MCwxNjY3MDAsMTYxOTQ5LDE0MTM4LDM2NDgwLDEzNzIwNSwxNjM4NzYsMTY2NzY0LDE2NjgwOSwxNjIz''@;'; put 'put ''NjYsMTU3MzU5LDE1ODUxLDE2MTM2NSwxNDY2MTUsMTUzMTQxLDE1Mzk0MiwyMDEyMiwxNTUyNjUsMTU2MjQ4LDIyMjA3LDEzNDc2NSwzNjM2NiwyMzQwNSwxNDcwODAsMTUwNjg2LDI1NTY2LDI1Mjk2LDEzNzIwNiwxMzczMzksMjU5MDQsMjIwNjEsMTU0Njk4LDIxNTMwLDE1MjMzNywxNTgx''@;'; put 'put ''NCwxNzE0MTYsMTk1ODEsMjIwNTAsMjIwNDYsMzI1ODUsMTU1MzUyLDIyOTAxLDE0Njc1MiwzNDY3MiwxOTk5NiwxMzUxNDYsMTM0NDczLDE0NTA4MiwzMzA0Nyw0MDI4NiwzNjEyMCwzMDI2Nyw0MDAwNSwzMDI4NiwzMDY0OSwzNzcwMSwyMTU1NCwzMzA5NiwzMzUyNywyMjA1MywzMzA3NCwz''@;'; put 'put ''MzgxNiwzMjk1NywyMTk5NCwzMTA3NCwyMjA4MywyMTUyNiwxMzQ4MTMsMTM3NzQsMjIwMjEsMjIwMDEsMjYzNTMsMTY0NTc4LDEzODY5LDMwMDA0LDIyZTMsMjE5NDYsMjE2NTUsMjE4NzQsMTM0MjA5LDEzNDI5NCwyNDI3MiwxNTE4ODAsMTM0Nzc0LDE0MjQzNCwxMzQ4MTgsNDA2MTksMzIw''@;'; put 'put ''OTAsMjE5ODIsMTM1Mjg1LDI1MjQ1LDM4NzY1LDIxNjUyLDM2MDQ1LDI5MTc0LDM3MjM4LDI1NTk2LDI1NTI5LDI1NTk4LDIxODY1LDE0MjE0Nyw0MDA1MCwxNDMwMjcsMjA4OTAsMTM1MzUsMTM0NTY3LDIwOTAzLDIxNTgxLDIxNzkwLDIxNzc5LDMwMzEwLDM2Mzk3LDE1NzgzNCwzMDEyOSwz''@;'; put 'put ''Mjk1MCwzNDgyMCwzNDY5NCwzNTAxNSwzMzIwNiwzMzgyMCwxMzUzNjEsMTc2NDQsMjk0NDQsMTQ5MjU0LDIzNDQwLDMzNTQ3LDE1Nzg0MywyMjEzOSwxNDEwNDQsMTYzMTE5LDE0Nzg3NSwxNjMxODcsMTU5NDQwLDE2MDQzOCwzNzIzMiwxMzU2NDEsMzczODQsMTQ2Njg0LDE3MzczNywxMzQ4''@;'; put 'put ''MjgsMTM0OTA1LDI5Mjg2LDEzODQwMiwxODI1NCwxNTE0OTAsMTYzODMzLDEzNTE0NywxNjYzNCw0MDAyOSwyNTg4NywxNDI3NTIsMTg2NzUsMTQ5NDcyLDE3MTM4OCwxMzUxNDgsMTM0NjY2LDI0Njc0LDE2MTE4NywxMzUxNDksbnVsbCwxNTU3MjAsMTM1NTU5LDI5MDkxLDMyMzk4LDQwMjcy''@;'; put 'put ''LDE5OTk0LDE5OTcyLDEzNjg3LDIzMzA5LDI3ODI2LDIxMzUxLDEzOTk2LDE0ODEyLDIxMzczLDEzOTg5LDE0OTAxNiwyMjY4MiwxNTAzODIsMzMzMjUsMjE1NzksMjI0NDIsMTU0MjYxLDEzMzQ5NyxudWxsLDE0OTMwLDE0MDM4OSwyOTU1NiwxNzE2OTIsMTk3MjEsMzk5MTcsMTQ2Njg2LDE3''@;'; put 'put ''MTgyNCwxOTU0NywxNTE0NjUsMTY5Mzc0LDE3MTk5OCwzMzg4NCwxNDY4NzAsMTYwNDM0LDE1NzYxOSwxNDUxODQsMjUzOTAsMzIwMzcsMTQ3MTkxLDE0Njk4OCwxNDg5MCwzNjg3MiwyMTE5NiwxNTk4OCwxMzk0NiwxNzg5NywxMzIyMzgsMzAyNzIsMjMyODAsMTM0ODM4LDMwODQyLDE2MzYz''@;'; put 'put ''MCwyMjY5NSwxNjU3NSwyMjE0MCwzOTgxOSwyMzkyNCwzMDI5MiwxNzMxMDgsNDA1ODEsMTk2ODEsMzAyMDEsMTQzMzEsMjQ4NTcsMTQzNTc4LDE0ODQ2NixudWxsLDIyMTA5LDEzNTg0OSwyMjQzOSwxNDk4NTksMTcxNTI2LDIxMDQ0LDE1OTkxOCwxMzc0MSwyNzcyMiw0MDMxNiwzMTgzMCwz''@;'; put 'put ''OTczNywyMjQ5NCwxMzcwNjgsMjM2MzUsMjU4MTEsMTY5MTY4LDE1NjQ2OSwxNjAxMDAsMzQ0NzcsMTM0NDQwLDE1OTAxMCwxNTAyNDIsMTM0NTEzLG51bGwsMjA5OTAsMTM5MDIzLDIzOTUwLDM4NjU5LDEzODcwNSw0MDU3NywzNjk0MCwzMTUxOSwzOTY4MiwyMzc2MSwzMTY1MSwyNTE5Miwy''@;'; put 'put ''NTM5NywzOTY3OSwzMTY5NSwzOTcyMiwzMTg3MCwzOTcyNiwzMTgxMCwzMTg3OCwzOTk1NywzMTc0MCwzOTY4OSw0MDcyNywzOTk2MywxNDk4MjIsNDA3OTQsMjE4NzUsMjM0OTEsMjA0NzcsNDA2MDAsMjA0NjYsMjEwODgsMTU4NzgsMjEyMDEsMjIzNzUsMjA1NjYsMjI5NjcsMjQwODIsMzg4''@;'; put 'put ''NTYsNDAzNjMsMzY3MDAsMjE2MDksMzg4MzYsMzkyMzIsMzg4NDIsMjEyOTIsMjQ4ODAsMjY5MjQsMjE0NjYsMzk5NDYsNDAxOTQsMTk1MTUsMzg0NjUsMjcwMDgsMjA2NDYsMzAwMjIsMTM3MDY5LDM5Mzg2LDIxMTA3LG51bGwsMzcyMDksMzg1MjksMzcyMTIsbnVsbCwzNzIwMSwxNjc1NzUs''@;'; put 'put ''MjU0NzEsMTU5MDExLDI3MzM4LDIyMDMzLDM3MjYyLDMwMDc0LDI1MjIxLDEzMjA5MiwyOTUxOSwzMTg1NiwxNTQ2NTcsMTQ2Njg1LG51bGwsMTQ5Nzg1LDMwNDIyLDM5ODM3LDIwMDEwLDEzNDM1NiwzMzcyNiwzNDg4MixudWxsLDIzNjI2LDI3MDcyLDIwNzE3LDIyMzk0LDIxMDIzLDI0MDUz''@;'; put 'put ''LDIwMTc0LDI3Njk3LDEzMTU3MCwyMDI4MSwyMTY2MCwyMTcyMiwyMTE0NiwzNjIyNiwxMzgyMiwyNDMzMiwxMzgxMSxudWxsLDI3NDc0LDM3MjQ0LDQwODY5LDM5ODMxLDM4OTU4LDM5MDkyLDM5NjEwLDQwNjE2LDQwNTgwLDI5MDUwLDMxNTA4LG51bGwsMjc2NDIsMzQ4NDAsMzI2MzIsbnVs''@;'; put 'put ''bCwyMjA0OCwxNzM2NDIsMzY0NzEsNDA3ODcsbnVsbCwzNjMwOCwzNjQzMSw0MDQ3NiwzNjM1MywyNTIxOCwxNjQ3MzMsMzYzOTIsMzY0NjksMzE0NDMsMTUwMTM1LDMxMjk0LDMwOTM2LDI3ODgyLDM1NDMxLDMwMjE1LDE2NjQ5MCw0MDc0MiwyNzg1NCwzNDc3NCwzMDE0NywxNzI3MjIsMzA4''@;'; put 'put ''MDMsMTk0NjI0LDM2MTA4LDI5NDEwLDI5NTUzLDM1NjI5LDI5NDQyLDI5OTM3LDM2MDc1LDE1MDIwMywzNDM1MSwyNDUwNiwzNDk3NiwxNzU5MSxudWxsLDEzNzI3NSwxNTkyMzcsbnVsbCwzNTQ1NCwxNDA1NzEsbnVsbCwyNDgyOSwzMDMxMSwzOTYzOSw0MDI2MCwzNzc0MiwzOTgyMywzNDgw''@;'; put 'put ''NSxudWxsLDM0ODMxLDM2MDg3LDI5NDg0LDM4Njg5LDM5ODU2LDEzNzgyLDI5MzYyLDE5NDYzLDMxODI1LDM5MjQyLDE1NTk5MywyNDkyMSwxOTQ2MCw0MDU5OCwyNDk1NyxudWxsLDIyMzY3LDI0OTQzLDI1MjU0LDI1MTQ1LDI1Mjk0LDE0OTQwLDI1MDU4LDIxNDE4LDE0NDM3MywyNTQ0NCwy''@;'; put 'put ''NjYyNiwxMzc3OCwyMzg5NSwxNjY4NTAsMzY4MjYsMTY3NDgxLG51bGwsMjA2OTcsMTM4NTY2LDMwOTgyLDIxMjk4LDM4NDU2LDEzNDk3MSwxNjQ4NSxudWxsLDMwNzE4LG51bGwsMzE5MzgsMTU1NDE4LDMxOTYyLDMxMjc3LDMyODcwLDMyODY3LDMyMDc3LDI5OTU3LDI5OTM4LDM1MjIwLDMz''@;'; put 'put ''MzA2LDI2MzgwLDMyODY2LDE2MDkwMiwzMjg1OSwyOTkzNiwzMzAyNywzMDUwMCwzNTIwOSwxNTc2NDQsMzAwMzUsMTU5NDQxLDM0NzI5LDM0NzY2LDMzMjI0LDM0NzAwLDM1NDAxLDM2MDEzLDM1NjUxLDMwNTA3LDI5OTQ0LDM0MDEwLDEzODc3LDI3MDU4LDM2MjYyLG51bGwsMzUyNDEsMjk4''@;'; put 'put ''MDAsMjgwODksMzQ3NTMsMTQ3NDczLDI5OTI3LDE1ODM1LDI5MDQ2LDI0NzQwLDI0OTg4LDE1NTY5LDI5MDI2LDI0Njk1LG51bGwsMzI2MjUsMTY2NzAxLDI5MjY0LDI0ODA5LDE5MzI2LDIxMDI0LDE1Mzg0LDE0NjYzMSwxNTUzNTEsMTYxMzY2LDE1Mjg4MSwxMzc1NDAsMTM1OTM0LDE3MDI0''@;'; put 'put ''MywxNTkxOTYsMTU5OTE3LDIzNzQ1LDE1NjA3NywxNjY0MTUsMTQ1MDE1LDEzMTMxMCwxNTc3NjYsMTUxMzEwLDE3NzYyLDIzMzI3LDE1NjQ5Miw0MDc4NCw0MDYxNCwxNTYyNjcsMTIyODgsNjUyOTIsMTIyODksMTIyOTAsNjUyOTQsODIzMSw2NTMwNyw2NTMwNiw2NTMxMSw2NTI4MSw2NTA3''@;'; put 'put ''Miw4MjMwLDgyMjksNjUxMDQsNjUxMDUsNjUxMDYsMTgzLDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MzcyLDgyMTEsNjUwNzMsODIxMiw2NTA3NSw5NTg4LDY1MDc2LDY1MTAzLDY1Mjg4LDY1Mjg5LDY1MDc3LDY1MDc4LDY1MzcxLDY1MzczLDY1MDc5LDY1MDgwLDEyMzA4LDEyMzA5LDY1''@;'; put 'put ''MDgxLDY1MDgyLDEyMzA0LDEyMzA1LDY1MDgzLDY1MDg0LDEyMjk4LDEyMjk5LDY1MDg1LDY1MDg2LDEyMjk2LDEyMjk3LDY1MDg3LDY1MDg4LDEyMzAwLDEyMzAxLDY1MDg5LDY1MDkwLDEyMzAyLDEyMzAzLDY1MDkxLDY1MDkyLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4''@;'; put 'put ''LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMTcsMTIzMTgsODI0NSw4MjQyLDY1MjgzLDY1Mjg2LDY1MjkwLDgyNTEsMTY3LDEyMjkxLDk2NzUsOTY3OSw5NjUxLDk2NTAsOTY3OCw5NzM0LDk3MzMsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjYxLDk2NjAsMTI5NjMsODQ1MywxNzUsNjU1MDcsNjUz''@;'; put 'put ''NDMsNzE3LDY1MDk3LDY1MDk4LDY1MTAxLDY1MTAyLDY1MDk5LDY1MTAwLDY1MTE5LDY1MTIwLDY1MTIxLDY1MjkxLDY1MjkzLDIxNSwyNDcsMTc3LDg3MzAsNjUzMDgsNjUzMTAsNjUzMDksODgwNiw4ODA3LDg4MDAsODczNCw4Nzg2LDg4MDEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUx''@;'; put 'put ''MjYsNjUzNzQsODc0NSw4NzQ2LDg4NjksODczNiw4NzM1LDg4OTUsMTMyNjYsMTMyNjUsODc0Nyw4NzUwLDg3NTcsODc1Niw5NzkyLDk3OTQsODg1Myw4ODU3LDg1OTMsODU5NSw4NTkyLDg1OTQsODU5OCw4NTk5LDg2MDEsODYwMCw4NzQxLDg3MzksNjUyOTUsNjUzNDAsODcyNSw2NTEyOCw2''@;'; put 'put ''NTI4NCw2NTUwOSwxMjMwNiw2NTUwNCw2NTUwNSw2NTI4NSw2NTMxMiw4NDUxLDg0NTcsNjUxMjksNjUxMzAsNjUxMzEsMTMyNjksMTMyMTIsMTMyMTMsMTMyMTQsMTMyNjIsMTMyMTcsMTMxOTgsMTMxOTksMTMyNTIsMTc2LDIwODI1LDIwODI3LDIwODMwLDIwODI5LDIwODMzLDIwODM1LDIx''@;'; put 'put ''OTkxLDI5OTI5LDMxOTUwLDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjE1LDk2MTQsOTYxMyw5NjEyLDk2MTEsOTYxMCw5NjA5LDk1MzIsOTUyNCw5NTE2LDk1MDgsOTUwMCw5NjIwLDk0NzIsOTQ3NCw5NjIxLDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTU4MSw5NTgy''@;'; put 'put ''LDk1ODQsOTU4Myw5NTUyLDk1NjYsOTU3OCw5NTY5LDk2OTgsOTY5OSw5NzAxLDk3MDAsOTU4NSw5NTg2LDk1ODcsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUx''@;'; put 'put ''LDg1NTIsODU1MywxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwyMTMxMywyMTMxNiwyMTMxNyw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMy''@;'; put 'put ''Niw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2''@;'; put 'put ''NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5NDUs''@;'; put 'put ''OTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwx''@;'; put 'put ''MjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw3MjksNzEzLDcxNCw3MTEs''@;'; put 'put ''NzE1LDkyMTYsOTIxNyw5MjE4LDkyMTksOTIyMCw5MjIxLDkyMjIsOTIyMyw5MjI0LDkyMjUsOTIyNiw5MjI3LDkyMjgsOTIyOSw5MjMwLDkyMzEsOTIzMiw5MjMzLDkyMzQsOTIzNSw5MjM2LDkyMzcsOTIzOCw5MjM5LDkyNDAsOTI0MSw5MjQyLDkyNDMsOTI0NCw5MjQ1LDkyNDYsOTI0Nyw5''@;'; put 'put ''MjQ5LDgzNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTY4LDIwMDU3''@;'; put 'put ''LDE5OTY5LDE5OTcxLDIwMDM1LDIwMDYxLDIwMTAyLDIwMTA4LDIwMTU0LDIwNzk5LDIwODM3LDIwODQzLDIwOTYwLDIwOTkyLDIwOTkzLDIxMTQ3LDIxMjY5LDIxMzEzLDIxMzQwLDIxNDQ4LDE5OTc3LDE5OTc5LDE5OTc2LDE5OTc4LDIwMDExLDIwMDI0LDIwOTYxLDIwMDM3LDIwMDQwLDIw''@;'; put 'put ''MDYzLDIwMDYyLDIwMTEwLDIwMTI5LDIwODAwLDIwOTk1LDIxMjQyLDIxMzE1LDIxNDQ5LDIxNDc1LDIyMzAzLDIyNzYzLDIyODA1LDIyODIzLDIyODk5LDIzMzc2LDIzMzc3LDIzMzc5LDIzNTQ0LDIzNTY3LDIzNTg2LDIzNjA4LDIzNjY1LDI0MDI5LDI0MDM3LDI0MDQ5LDI0MDUwLDI0MDUx''@;'; put 'put ''LDI0MDYyLDI0MTc4LDI0MzE4LDI0MzMxLDI0MzM5LDI1MTY1LDE5OTg1LDE5OTg0LDE5OTgxLDIwMDEzLDIwMDE2LDIwMDI1LDIwMDQzLDIzNjA5LDIwMTA0LDIwMTEzLDIwMTE3LDIwMTE0LDIwMTE2LDIwMTMwLDIwMTYxLDIwMTYwLDIwMTYzLDIwMTY2LDIwMTY3LDIwMTczLDIwMTcwLDIw''@;'; put 'put ''MTcxLDIwMTY0LDIwODAzLDIwODAxLDIwODM5LDIwODQ1LDIwODQ2LDIwODQ0LDIwODg3LDIwOTgyLDIwOTk4LDIwOTk5LDIxZTMsMjEyNDMsMjEyNDYsMjEyNDcsMjEyNzAsMjEzMDUsMjEzMjAsMjEzMTksMjEzMTcsMjEzNDIsMjEzODAsMjE0NTEsMjE0NTAsMjE0NTMsMjI3NjQsMjI4MjUs''@;'; put 'put ''MjI4MjcsMjI4MjYsMjI4MjksMjMzODAsMjM1NjksMjM1ODgsMjM2MTAsMjM2NjMsMjQwNTIsMjQxODcsMjQzMTksMjQzNDAsMjQzNDEsMjQ1MTUsMjUwOTYsMjUxNDIsMjUxNjMsMjUxNjYsMjU5MDMsMjU5OTEsMjYwMDcsMjYwMjAsMjYwNDEsMjYwODUsMjYzNTIsMjYzNzYsMjY0MDgsMjc0''@;'; put 'put ''MjQsMjc0OTAsMjc1MTMsMjc1OTUsMjc2MDQsMjc2MTEsMjc2NjMsMjc3MDAsMjg3NzksMjkyMjYsMjkyMzgsMjkyNDMsMjkyNTUsMjkyNzMsMjkyNzUsMjkzNTYsMjk1NzksMTk5OTMsMTk5OTAsMTk5ODksMTk5ODgsMTk5OTIsMjAwMjcsMjAwNDUsMjAwNDcsMjAwNDYsMjAxOTcsMjAxODQs''@;'; put 'put ''MjAxODAsMjAxODEsMjAxODIsMjAxODMsMjAxOTUsMjAxOTYsMjAxODUsMjAxOTAsMjA4MDUsMjA4MDQsMjA4NzMsMjA4NzQsMjA5MDgsMjA5ODUsMjA5ODYsMjA5ODQsMjEwMDIsMjExNTIsMjExNTEsMjEyNTMsMjEyNTQsMjEyNzEsMjEyNzcsMjAxOTEsMjEzMjIsMjEzMjEsMjEzNDUsMjEz''@;'; put 'put ''NDQsMjEzNTksMjEzNTgsMjE0MzUsMjE0ODcsMjE0NzYsMjE0OTEsMjE0ODQsMjE0ODYsMjE0ODEsMjE0ODAsMjE1MDAsMjE0OTYsMjE0OTMsMjE0ODMsMjE0NzgsMjE0ODIsMjE0OTAsMjE0ODksMjE0ODgsMjE0NzcsMjE0ODUsMjE0OTksMjIyMzUsMjIyMzQsMjI4MDYsMjI4MzAsMjI4MzMs''@;'; put 'put ''MjI5MDAsMjI5MDIsMjMzODEsMjM0MjcsMjM2MTIsMjQwNDAsMjQwMzksMjQwMzgsMjQwNjYsMjQwNjcsMjQxNzksMjQxODgsMjQzMjEsMjQzNDQsMjQzNDMsMjQ1MTcsMjUwOTgsMjUxNzEsMjUxNzIsMjUxNzAsMjUxNjksMjYwMjEsMjYwODYsMjY0MTQsMjY0MTIsMjY0MTAsMjY0MTEsMjY0''@;'; put 'put ''MTMsMjc0OTEsMjc1OTcsMjc2NjUsMjc2NjQsMjc3MDQsMjc3MTMsMjc3MTIsMjc3MTAsMjkzNTksMjk1NzIsMjk1NzcsMjk5MTYsMjk5MjYsMjk5NzYsMjk5ODMsMjk5OTIsMjk5OTMsM2U0LDMwMDAxLDMwMDAyLDMwMDAzLDMwMDkxLDMwMzMzLDMwMzgyLDMwMzk5LDMwNDQ2LDMwNjgzLDMw''@;'; put 'put ''NjkwLDMwNzA3LDMxMDM0LDMxMTY2LDMxMzQ4LDMxNDM1LDE5OTk4LDE5OTk5LDIwMDUwLDIwMDUxLDIwMDczLDIwMTIxLDIwMTMyLDIwMTM0LDIwMTMzLDIwMjIzLDIwMjMzLDIwMjQ5LDIwMjM0LDIwMjQ1LDIwMjM3LDIwMjQwLDIwMjQxLDIwMjM5LDIwMjEwLDIwMjE0LDIwMjE5LDIwMjA4''@;'; put 'put ''LDIwMjExLDIwMjIxLDIwMjI1LDIwMjM1LDIwODA5LDIwODA3LDIwODA2LDIwODA4LDIwODQwLDIwODQ5LDIwODc3LDIwOTEyLDIxMDE1LDIxMDA5LDIxMDEwLDIxMDA2LDIxMDE0LDIxMTU1LDIxMjU2LDIxMjgxLDIxMjgwLDIxMzYwLDIxMzYxLDIxNTEzLDIxNTE5LDIxNTE2LDIxNTE0LDIx''@;'; put 'put ''NTIwLDIxNTA1LDIxNTE1LDIxNTA4LDIxNTIxLDIxNTE3LDIxNTEyLDIxNTA3LDIxNTE4LDIxNTEwLDIxNTIyLDIyMjQwLDIyMjM4LDIyMjM3LDIyMzIzLDIyMzIwLDIyMzEyLDIyMzE3LDIyMzE2LDIyMzE5LDIyMzEzLDIyODA5LDIyODEwLDIyODM5LDIyODQwLDIyOTE2LDIyOTA0LDIyOTE1''@;'; put 'put ''LDIyOTA5LDIyOTA1LDIyOTE0LDIyOTEzLDIzMzgzLDIzMzg0LDIzNDMxLDIzNDMyLDIzNDI5LDIzNDMzLDIzNTQ2LDIzNTc0LDIzNjczLDI0MDMwLDI0MDcwLDI0MTgyLDI0MTgwLDI0MzM1LDI0MzQ3LDI0NTM3LDI0NTM0LDI1MTAyLDI1MTAwLDI1MTAxLDI1MTA0LDI1MTg3LDI1MTc5LDI1''@;'; put 'put ''MTc2LDI1OTEwLDI2MDg5LDI2MDg4LDI2MDkyLDI2MDkzLDI2MzU0LDI2MzU1LDI2Mzc3LDI2NDI5LDI2NDIwLDI2NDE3LDI2NDIxLDI3NDI1LDI3NDkyLDI3NTE1LDI3NjcwLDI3NzQxLDI3NzM1LDI3NzM3LDI3NzQzLDI3NzQ0LDI3NzI4LDI3NzMzLDI3NzQ1LDI3NzM5LDI3NzI1LDI3NzI2''@;'; put 'put ''LDI4Nzg0LDI5Mjc5LDI5Mjc3LDMwMzM0LDMxNDgxLDMxODU5LDMxOTkyLDMyNTY2LDMyNjUwLDMyNzAxLDMyNzY5LDMyNzcxLDMyNzgwLDMyNzg2LDMyODE5LDMyODk1LDMyOTA1LDMyOTA3LDMyOTA4LDMzMjUxLDMzMjU4LDMzMjY3LDMzMjc2LDMzMjkyLDMzMzA3LDMzMzExLDMzMzkwLDMz''@;'; put 'put ''Mzk0LDMzNDA2LDM0NDExLDM0ODgwLDM0ODkyLDM0OTE1LDM1MTk5LDM4NDMzLDIwMDE4LDIwMTM2LDIwMzAxLDIwMzAzLDIwMjk1LDIwMzExLDIwMzE4LDIwMjc2LDIwMzE1LDIwMzA5LDIwMjcyLDIwMzA0LDIwMzA1LDIwMjg1LDIwMjgyLDIwMjgwLDIwMjkxLDIwMzA4LDIwMjg0LDIwMjk0''@;'; put 'put ''LDIwMzIzLDIwMzE2LDIwMzIwLDIwMjcxLDIwMzAyLDIwMjc4LDIwMzEzLDIwMzE3LDIwMjk2LDIwMzE0LDIwODEyLDIwODExLDIwODEzLDIwODUzLDIwOTE4LDIwOTE5LDIxMDI5LDIxMDI4LDIxMDMzLDIxMDM0LDIxMDMyLDIxMTYzLDIxMTYxLDIxMTYyLDIxMTY0LDIxMjgzLDIxMzYzLDIx''@;'; put 'put ''MzY1LDIxNTMzLDIxNTQ5LDIxNTM0LDIxNTY2LDIxNTQyLDIxNTgyLDIxNTQzLDIxNTc0LDIxNTcxLDIxNTU1LDIxNTc2LDIxNTcwLDIxNTMxLDIxNTQ1LDIxNTc4LDIxNTYxLDIxNTYzLDIxNTYwLDIxNTUwLDIxNTU3LDIxNTU4LDIxNTM2LDIxNTY0LDIxNTY4LDIxNTUzLDIxNTQ3LDIxNTM1''@;'; put 'put ''LDIxNTQ4LDIyMjUwLDIyMjU2LDIyMjQ0LDIyMjUxLDIyMzQ2LDIyMzUzLDIyMzM2LDIyMzQ5LDIyMzQzLDIyMzUwLDIyMzM0LDIyMzUyLDIyMzUxLDIyMzMxLDIyNzY3LDIyODQ2LDIyOTQxLDIyOTMwLDIyOTUyLDIyOTQyLDIyOTQ3LDIyOTM3LDIyOTM0LDIyOTI1LDIyOTQ4LDIyOTMxLDIy''@;'; put 'put ''OTIyLDIyOTQ5LDIzMzg5LDIzMzg4LDIzMzg2LDIzMzg3LDIzNDM2LDIzNDM1LDIzNDM5LDIzNTk2LDIzNjE2LDIzNjE3LDIzNjE1LDIzNjE0LDIzNjk2LDIzNjk3LDIzNzAwLDIzNjkyLDI0MDQzLDI0MDc2LDI0MjA3LDI0MTk5LDI0MjAyLDI0MzExLDI0MzI0LDI0MzUxLDI0NDIwLDI0NDE4''@;'; put 'put ''LDI0NDM5LDI0NDQxLDI0NTM2LDI0NTI0LDI0NTM1LDI0NTI1LDI0NTYxLDI0NTU1LDI0NTY4LDI0NTU0LDI1MTA2LDI1MTA1LDI1MjIwLDI1MjM5LDI1MjM4LDI1MjE2LDI1MjA2LDI1MjI1LDI1MTk3LDI1MjI2LDI1MjEyLDI1MjE0LDI1MjA5LDI1MjAzLDI1MjM0LDI1MTk5LDI1MjQwLDI1''@;'; put 'put ''MTk4LDI1MjM3LDI1MjM1LDI1MjMzLDI1MjIyLDI1OTEzLDI1OTE1LDI1OTEyLDI2MDk3LDI2MzU2LDI2NDYzLDI2NDQ2LDI2NDQ3LDI2NDQ4LDI2NDQ5LDI2NDYwLDI2NDU0LDI2NDYyLDI2NDQxLDI2NDM4LDI2NDY0LDI2NDUxLDI2NDU1LDI3NDkzLDI3NTk5LDI3NzE0LDI3NzQyLDI3ODAx''@;'; put 'put ''LDI3Nzc3LDI3Nzg0LDI3Nzg1LDI3NzgxLDI3ODAzLDI3NzU0LDI3NzcwLDI3NzkyLDI3NzYwLDI3Nzg4LDI3NzUyLDI3Nzk4LDI3Nzk0LDI3NzczLDI3Nzc5LDI3NzYyLDI3Nzc0LDI3NzY0LDI3NzgyLDI3NzY2LDI3Nzg5LDI3Nzk2LDI3ODAwLDI3Nzc4LDI4NzkwLDI4Nzk2LDI4Nzk3LDI4''@;'; put 'put ''NzkyLDI5MjgyLDI5MjgxLDI5MjgwLDI5MzgwLDI5Mzc4LDI5NTkwLDI5OTk2LDI5OTk1LDMwMDA3LDMwMDA4LDMwMzM4LDMwNDQ3LDMwNjkxLDMxMTY5LDMxMTY4LDMxMTY3LDMxMzUwLDMxOTk1LDMyNTk3LDMyOTE4LDMyOTE1LDMyOTI1LDMyOTIwLDMyOTIzLDMyOTIyLDMyOTQ2LDMzMzkx''@;'; put 'put ''LDMzNDI2LDMzNDE5LDMzNDIxLDM1MjExLDM1MjgyLDM1MzI4LDM1ODk1LDM1OTEwLDM1OTI1LDM1OTk3LDM2MTk2LDM2MjA4LDM2Mjc1LDM2NTIzLDM2NTU0LDM2NzYzLDM2Nzg0LDM2ODAyLDM2ODA2LDM2ODA1LDM2ODA0LDI0MDMzLDM3MDA5LDM3MDI2LDM3MDM0LDM3MDMwLDM3MDI3LDM3''@;'; put 'put ''MTkzLDM3MzE4LDM3MzI0LDM4NDUwLDM4NDQ2LDM4NDQ5LDM4NDQyLDM4NDQ0LDIwMDA2LDIwMDU0LDIwMDgzLDIwMTA3LDIwMTIzLDIwMTI2LDIwMTM5LDIwMTQwLDIwMzM1LDIwMzgxLDIwMzY1LDIwMzM5LDIwMzUxLDIwMzMyLDIwMzc5LDIwMzYzLDIwMzU4LDIwMzU1LDIwMzM2LDIwMzQx''@;'; put 'put ''LDIwMzYwLDIwMzI5LDIwMzQ3LDIwMzc0LDIwMzUwLDIwMzY3LDIwMzY5LDIwMzQ2LDIwODIwLDIwODE4LDIwODIxLDIwODQxLDIwODU1LDIwODU0LDIwODU2LDIwOTI1LDIwOTg5LDIxMDUxLDIxMDQ4LDIxMDQ3LDIxMDUwLDIxMDQwLDIxMDM4LDIxMDQ2LDIxMDU3LDIxMTgyLDIxMTc5LDIx''@;'; put 'put ''MzMwLDIxMzMyLDIxMzMxLDIxMzI5LDIxMzUwLDIxMzY3LDIxMzY4LDIxMzY5LDIxNDYyLDIxNDYwLDIxNDYzLDIxNjE5LDIxNjIxLDIxNjU0LDIxNjI0LDIxNjUzLDIxNjMyLDIxNjI3LDIxNjIzLDIxNjM2LDIxNjUwLDIxNjM4LDIxNjI4LDIxNjQ4LDIxNjE3LDIxNjIyLDIxNjQ0LDIxNjU4''@;'; put 'put ''LDIxNjAyLDIxNjA4LDIxNjQzLDIxNjI5LDIxNjQ2LDIyMjY2LDIyNDAzLDIyMzkxLDIyMzc4LDIyMzc3LDIyMzY5LDIyMzc0LDIyMzcyLDIyMzk2LDIyODEyLDIyODU3LDIyODU1LDIyODU2LDIyODUyLDIyODY4LDIyOTc0LDIyOTcxLDIyOTk2LDIyOTY5LDIyOTU4LDIyOTkzLDIyOTgyLDIy''@;'; put 'put ''OTkyLDIyOTg5LDIyOTg3LDIyOTk1LDIyOTg2LDIyOTU5LDIyOTYzLDIyOTk0LDIyOTgxLDIzMzkxLDIzMzk2LDIzMzk1LDIzNDQ3LDIzNDUwLDIzNDQ4LDIzNDUyLDIzNDQ5LDIzNDUxLDIzNTc4LDIzNjI0LDIzNjIxLDIzNjIyLDIzNzM1LDIzNzEzLDIzNzM2LDIzNzIxLDIzNzIzLDIzNzI5''@;'; put 'put ''LDIzNzMxLDI0MDg4LDI0MDkwLDI0MDg2LDI0MDg1LDI0MDkxLDI0MDgxLDI0MTg0LDI0MjE4LDI0MjE1LDI0MjIwLDI0MjEzLDI0MjE0LDI0MzEwLDI0MzU4LDI0MzU5LDI0MzYxLDI0NDQ4LDI0NDQ5LDI0NDQ3LDI0NDQ0LDI0NTQxLDI0NTQ0LDI0NTczLDI0NTY1LDI0NTc1LDI0NTkxLDI0''@;'; put 'put ''NTk2LDI0NjIzLDI0NjI5LDI0NTk4LDI0NjE4LDI0NTk3LDI0NjA5LDI0NjE1LDI0NjE3LDI0NjE5LDI0NjAzLDI1MTEwLDI1MTA5LDI1MTUxLDI1MTUwLDI1MTUyLDI1MjE1LDI1Mjg5LDI1MjkyLDI1Mjg0LDI1Mjc5LDI1MjgyLDI1MjczLDI1Mjk4LDI1MzA3LDI1MjU5LDI1Mjk5LDI1MzAw''@;'; put 'put ''LDI1MjkxLDI1Mjg4LDI1MjU2LDI1Mjc3LDI1Mjc2LDI1Mjk2LDI1MzA1LDI1Mjg3LDI1MjkzLDI1MjY5LDI1MzA2LDI1MjY1LDI1MzA0LDI1MzAyLDI1MzAzLDI1Mjg2LDI1MjYwLDI1Mjk0LDI1OTE4LDI2MDIzLDI2MDQ0LDI2MTA2LDI2MTMyLDI2MTMxLDI2MTI0LDI2MTE4LDI2MTE0LDI2''@;'; put 'put ''MTI2LDI2MTEyLDI2MTI3LDI2MTMzLDI2MTIyLDI2MTE5LDI2MzgxLDI2Mzc5LDI2NDc3LDI2NTA3LDI2NTE3LDI2NDgxLDI2NTI0LDI2NDgzLDI2NDg3LDI2NTAzLDI2NTI1LDI2NTE5LDI2NDc5LDI2NDgwLDI2NDk1LDI2NTA1LDI2NDk0LDI2NTEyLDI2NDg1LDI2NTIyLDI2NTE1LDI2NDky''@;'; put 'put ''LDI2NDc0LDI2NDgyLDI3NDI3LDI3NDk0LDI3NDk1LDI3NTE5LDI3NjY3LDI3Njc1LDI3ODc1LDI3ODgwLDI3ODkxLDI3ODI1LDI3ODUyLDI3ODc3LDI3ODI3LDI3ODM3LDI3ODM4LDI3ODM2LDI3ODc0LDI3ODE5LDI3ODYxLDI3ODU5LDI3ODMyLDI3ODQ0LDI3ODMzLDI3ODQxLDI3ODIyLDI3''@;'; put 'put ''ODYzLDI3ODQ1LDI3ODg5LDI3ODM5LDI3ODM1LDI3ODczLDI3ODY3LDI3ODUwLDI3ODIwLDI3ODg3LDI3ODY4LDI3ODYyLDI3ODcyLDI4ODIxLDI4ODE0LDI4ODE4LDI4ODEwLDI4ODI1LDI5MjI4LDI5MjI5LDI5MjQwLDI5MjU2LDI5Mjg3LDI5Mjg5LDI5Mzc2LDI5MzkwLDI5NDAxLDI5Mzk5''@;'; put 'put ''LDI5MzkyLDI5NjA5LDI5NjA4LDI5NTk5LDI5NjExLDI5NjA1LDMwMDEzLDMwMTA5LDMwMTA1LDMwMTA2LDMwMzQwLDMwNDAyLDMwNDUwLDMwNDUyLDMwNjkzLDMwNzE3LDMxMDM4LDMxMDQwLDMxMDQxLDMxMTc3LDMxMTc2LDMxMzU0LDMxMzUzLDMxNDgyLDMxOTk4LDMyNTk2LDMyNjUyLDMy''@;'; put 'put ''NjUxLDMyNzczLDMyOTU0LDMyOTMzLDMyOTMwLDMyOTQ1LDMyOTI5LDMyOTM5LDMyOTM3LDMyOTQ4LDMyOTM4LDMyOTQzLDMzMjUzLDMzMjc4LDMzMjkzLDMzNDU5LDMzNDM3LDMzNDMzLDMzNDUzLDMzNDY5LDMzNDM5LDMzNDY1LDMzNDU3LDMzNDUyLDMzNDQ1LDMzNDU1LDMzNDY0LDMzNDQz''@;'; put 'put ''LDMzNDU2LDMzNDcwLDMzNDYzLDM0MzgyLDM0NDE3LDIxMDIxLDM0OTIwLDM2NTU1LDM2ODE0LDM2ODIwLDM2ODE3LDM3MDQ1LDM3MDQ4LDM3MDQxLDM3MDQ2LDM3MzE5LDM3MzI5LDM4MjYzLDM4MjcyLDM4NDI4LDM4NDY0LDM4NDYzLDM4NDU5LDM4NDY4LDM4NDY2LDM4NTg1LDM4NjMyLDM4''@;'; put 'put ''NzM4LDM4NzUwLDIwMTI3LDIwMTQxLDIwMTQyLDIwNDQ5LDIwNDA1LDIwMzk5LDIwNDE1LDIwNDQ4LDIwNDMzLDIwNDMxLDIwNDQ1LDIwNDE5LDIwNDA2LDIwNDQwLDIwNDQ3LDIwNDI2LDIwNDM5LDIwMzk4LDIwNDMyLDIwNDIwLDIwNDE4LDIwNDQyLDIwNDMwLDIwNDQ2LDIwNDA3LDIwODIz''@;'; put 'put ''LDIwODgyLDIwODgxLDIwODk2LDIxMDcwLDIxMDU5LDIxMDY2LDIxMDY5LDIxMDY4LDIxMDY3LDIxMDYzLDIxMTkxLDIxMTkzLDIxMTg3LDIxMTg1LDIxMjYxLDIxMzM1LDIxMzcxLDIxNDAyLDIxNDY3LDIxNjc2LDIxNjk2LDIxNjcyLDIxNzEwLDIxNzA1LDIxNjg4LDIxNjcwLDIxNjgzLDIx''@;'; put 'put ''NzAzLDIxNjk4LDIxNjkzLDIxNjc0LDIxNjk3LDIxNzAwLDIxNzA0LDIxNjc5LDIxNjc1LDIxNjgxLDIxNjkxLDIxNjczLDIxNjcxLDIxNjk1LDIyMjcxLDIyNDAyLDIyNDExLDIyNDMyLDIyNDM1LDIyNDM0LDIyNDc4LDIyNDQ2LDIyNDE5LDIyODY5LDIyODY1LDIyODYzLDIyODYyLDIyODY0''@;'; put 'put ''LDIzMDA0LDIzZTMsMjMwMzksMjMwMTEsMjMwMTYsMjMwNDMsMjMwMTMsMjMwMTgsMjMwMDIsMjMwMTQsMjMwNDEsMjMwMzUsMjM0MDEsMjM0NTksMjM0NjIsMjM0NjAsMjM0NTgsMjM0NjEsMjM1NTMsMjM2MzAsMjM2MzEsMjM2MjksMjM2MjcsMjM3NjksMjM3NjIsMjQwNTUsMjQwOTMsMjQx''@;'; put 'put ''MDEsMjQwOTUsMjQxODksMjQyMjQsMjQyMzAsMjQzMTQsMjQzMjgsMjQzNjUsMjQ0MjEsMjQ0NTYsMjQ0NTMsMjQ0NTgsMjQ0NTksMjQ0NTUsMjQ0NjAsMjQ0NTcsMjQ1OTQsMjQ2MDUsMjQ2MDgsMjQ2MTMsMjQ1OTAsMjQ2MTYsMjQ2NTMsMjQ2ODgsMjQ2ODAsMjQ2NzQsMjQ2NDYsMjQ2NDMs''@;'; put 'put ''MjQ2ODQsMjQ2ODMsMjQ2ODIsMjQ2NzYsMjUxNTMsMjUzMDgsMjUzNjYsMjUzNTMsMjUzNDAsMjUzMjUsMjUzNDUsMjUzMjYsMjUzNDEsMjUzNTEsMjUzMjksMjUzMzUsMjUzMjcsMjUzMjQsMjUzNDIsMjUzMzIsMjUzNjEsMjUzNDYsMjU5MTksMjU5MjUsMjYwMjcsMjYwNDUsMjYwODIsMjYx''@;'; put 'put ''NDksMjYxNTcsMjYxNDQsMjYxNTEsMjYxNTksMjYxNDMsMjYxNTIsMjYxNjEsMjYxNDgsMjYzNTksMjY2MjMsMjY1NzksMjY2MDksMjY1ODAsMjY1NzYsMjY2MDQsMjY1NTAsMjY1NDMsMjY2MTMsMjY2MDEsMjY2MDcsMjY1NjQsMjY1NzcsMjY1NDgsMjY1ODYsMjY1OTcsMjY1NTIsMjY1NzUs''@;'; put 'put ''MjY1OTAsMjY2MTEsMjY1NDQsMjY1ODUsMjY1OTQsMjY1ODksMjY1NzgsMjc0OTgsMjc1MjMsMjc1MjYsMjc1NzMsMjc2MDIsMjc2MDcsMjc2NzksMjc4NDksMjc5MTUsMjc5NTQsMjc5NDYsMjc5NjksMjc5NDEsMjc5MTYsMjc5NTMsMjc5MzQsMjc5MjcsMjc5NjMsMjc5NjUsMjc5NjYsMjc5''@;'; put 'put ''NTgsMjc5MzEsMjc4OTMsMjc5NjEsMjc5NDMsMjc5NjAsMjc5NDUsMjc5NTAsMjc5NTcsMjc5MTgsMjc5NDcsMjg4NDMsMjg4NTgsMjg4NTEsMjg4NDQsMjg4NDcsMjg4NDUsMjg4NTYsMjg4NDYsMjg4MzYsMjkyMzIsMjkyOTgsMjkyOTUsMjkzMDAsMjk0MTcsMjk0MDgsMjk0MDksMjk2MjMs''@;'; put 'put ''Mjk2NDIsMjk2MjcsMjk2MTgsMjk2NDUsMjk2MzIsMjk2MTksMjk5NzgsMjk5OTcsMzAwMzEsMzAwMjgsMzAwMzAsMzAwMjcsMzAxMjMsMzAxMTYsMzAxMTcsMzAxMTQsMzAxMTUsMzAzMjgsMzAzNDIsMzAzNDMsMzAzNDQsMzA0MDgsMzA0MDYsMzA0MDMsMzA0MDUsMzA0NjUsMzA0NTcsMzA0''@;'; put 'put ''NTYsMzA0NzMsMzA0NzUsMzA0NjIsMzA0NjAsMzA0NzEsMzA2ODQsMzA3MjIsMzA3NDAsMzA3MzIsMzA3MzMsMzEwNDYsMzEwNDksMzEwNDgsMzEwNDcsMzExNjEsMzExNjIsMzExODUsMzExODYsMzExNzksMzEzNTksMzEzNjEsMzE0ODcsMzE0ODUsMzE4NjksMzIwMDIsMzIwMDUsMzJlMywz''@;'; put 'put ''MjAwOSwzMjAwNywzMjAwNCwzMjAwNiwzMjU2OCwzMjY1NCwzMjcwMywzMjc3MiwzMjc4NCwzMjc4MSwzMjc4NSwzMjgyMiwzMjk4MiwzMjk5NywzMjk4NiwzMjk2MywzMjk2NCwzMjk3MiwzMjk5MywzMjk4NywzMjk3NCwzMjk5MCwzMjk5NiwzMjk4OSwzMzI2OCwzMzMxNCwzMzUxMSwzMzUz''@;'; put 'put ''OSwzMzU0MSwzMzUwNywzMzQ5OSwzMzUxMCwzMzU0MCwzMzUwOSwzMzUzOCwzMzU0NSwzMzQ5MCwzMzQ5NSwzMzUyMSwzMzUzNywzMzUwMCwzMzQ5MiwzMzQ4OSwzMzUwMiwzMzQ5MSwzMzUwMywzMzUxOSwzMzU0MiwzNDM4NCwzNDQyNSwzNDQyNywzNDQyNiwzNDg5MywzNDkyMywzNTIwMSwz''@;'; put 'put ''NTI4NCwzNTMzNiwzNTMzMCwzNTMzMSwzNTk5OCwzNmUzLDM2MjEyLDM2MjExLDM2Mjc2LDM2NTU3LDM2NTU2LDM2ODQ4LDM2ODM4LDM2ODM0LDM2ODQyLDM2ODM3LDM2ODQ1LDM2ODQzLDM2ODM2LDM2ODQwLDM3MDY2LDM3MDcwLDM3MDU3LDM3MDU5LDM3MTk1LDM3MTk0LDM3MzI1LDM4Mjc0''@;'; put 'put ''LDM4NDgwLDM4NDc1LDM4NDc2LDM4NDc3LDM4NzU0LDM4NzYxLDM4ODU5LDM4ODkzLDM4ODk5LDM4OTEzLDM5MDgwLDM5MTMxLDM5MTM1LDM5MzE4LDM5MzIxLDIwMDU2LDIwMTQ3LDIwNDkyLDIwNDkzLDIwNTE1LDIwNDYzLDIwNTE4LDIwNTE3LDIwNDcyLDIwNTIxLDIwNTAyLDIwNDg2LDIw''@;'; put 'put ''NTQwLDIwNTExLDIwNTA2LDIwNDk4LDIwNDk3LDIwNDc0LDIwNDgwLDIwNTAwLDIwNTIwLDIwNDY1LDIwNTEzLDIwNDkxLDIwNTA1LDIwNTA0LDIwNDY3LDIwNDYyLDIwNTI1LDIwNTIyLDIwNDc4LDIwNTIzLDIwNDg5LDIwODYwLDIwOTAwLDIwOTAxLDIwODk4LDIwOTQxLDIwOTQwLDIwOTM0''@;'; put 'put ''LDIwOTM5LDIxMDc4LDIxMDg0LDIxMDc2LDIxMDgzLDIxMDg1LDIxMjkwLDIxMzc1LDIxNDA3LDIxNDA1LDIxNDcxLDIxNzM2LDIxNzc2LDIxNzYxLDIxODE1LDIxNzU2LDIxNzMzLDIxNzQ2LDIxNzY2LDIxNzU0LDIxNzgwLDIxNzM3LDIxNzQxLDIxNzI5LDIxNzY5LDIxNzQyLDIxNzM4LDIx''@;'; put 'put ''NzM0LDIxNzk5LDIxNzY3LDIxNzU3LDIxNzc1LDIyMjc1LDIyMjc2LDIyNDY2LDIyNDg0LDIyNDc1LDIyNDY3LDIyNTM3LDIyNzk5LDIyODcxLDIyODcyLDIyODc0LDIzMDU3LDIzMDY0LDIzMDY4LDIzMDcxLDIzMDY3LDIzMDU5LDIzMDIwLDIzMDcyLDIzMDc1LDIzMDgxLDIzMDc3LDIzMDUy''@;'; put 'put ''LDIzMDQ5LDIzNDAzLDIzNjQwLDIzNDcyLDIzNDc1LDIzNDc4LDIzNDc2LDIzNDcwLDIzNDc3LDIzNDgxLDIzNDgwLDIzNTU2LDIzNjMzLDIzNjM3LDIzNjMyLDIzNzg5LDIzODA1LDIzODAzLDIzNzg2LDIzNzg0LDIzNzkyLDIzNzk4LDIzODA5LDIzNzk2LDI0MDQ2LDI0MTA5LDI0MTA3LDI0''@;'; put 'put ''MjM1LDI0MjM3LDI0MjMxLDI0MzY5LDI0NDY2LDI0NDY1LDI0NDY0LDI0NjY1LDI0Njc1LDI0Njc3LDI0NjU2LDI0NjYxLDI0Njg1LDI0NjgxLDI0Njg3LDI0NzA4LDI0NzM1LDI0NzMwLDI0NzE3LDI0NzI0LDI0NzE2LDI0NzA5LDI0NzI2LDI1MTU5LDI1MzMxLDI1MzUyLDI1MzQzLDI1NDIy''@;'; put 'put ''LDI1NDA2LDI1MzkxLDI1NDI5LDI1NDEwLDI1NDE0LDI1NDIzLDI1NDE3LDI1NDAyLDI1NDI0LDI1NDA1LDI1Mzg2LDI1Mzg3LDI1Mzg0LDI1NDIxLDI1NDIwLDI1OTI4LDI1OTI5LDI2MDA5LDI2MDQ5LDI2MDUzLDI2MTc4LDI2MTg1LDI2MTkxLDI2MTc5LDI2MTk0LDI2MTg4LDI2MTgxLDI2''@;'; put 'put ''MTc3LDI2MzYwLDI2Mzg4LDI2Mzg5LDI2MzkxLDI2NjU3LDI2NjgwLDI2Njk2LDI2Njk0LDI2NzA3LDI2NjgxLDI2NjkwLDI2NzA4LDI2NjY1LDI2ODAzLDI2NjQ3LDI2NzAwLDI2NzA1LDI2Njg1LDI2NjEyLDI2NzA0LDI2Njg4LDI2Njg0LDI2NjkxLDI2NjY2LDI2NjkzLDI2NjQzLDI2NjQ4''@;'; put 'put ''LDI2Njg5LDI3NTMwLDI3NTI5LDI3NTc1LDI3NjgzLDI3Njg3LDI3Njg4LDI3Njg2LDI3Njg0LDI3ODg4LDI4MDEwLDI4MDUzLDI4MDQwLDI4MDM5LDI4MDA2LDI4MDI0LDI4MDIzLDI3OTkzLDI4MDUxLDI4MDEyLDI4MDQxLDI4MDE0LDI3OTk0LDI4MDIwLDI4MDA5LDI4MDQ0LDI4MDQyLDI4''@;'; put 'put ''MDI1LDI4MDM3LDI4MDA1LDI4MDUyLDI4ODc0LDI4ODg4LDI4OTAwLDI4ODg5LDI4ODcyLDI4ODc5LDI5MjQxLDI5MzA1LDI5NDM2LDI5NDMzLDI5NDM3LDI5NDMyLDI5NDMxLDI5NTc0LDI5Njc3LDI5NzA1LDI5Njc4LDI5NjY0LDI5Njc0LDI5NjYyLDMwMDM2LDMwMDQ1LDMwMDQ0LDMwMDQy''@;'; put 'put ''LDMwMDQxLDMwMTQyLDMwMTQ5LDMwMTUxLDMwMTMwLDMwMTMxLDMwMTQxLDMwMTQwLDMwMTM3LDMwMTQ2LDMwMTM2LDMwMzQ3LDMwMzg0LDMwNDEwLDMwNDEzLDMwNDE0LDMwNTA1LDMwNDk1LDMwNDk2LDMwNTA0LDMwNjk3LDMwNzY4LDMwNzU5LDMwNzc2LDMwNzQ5LDMwNzcyLDMwNzc1LDMw''@;'; put 'put ''NzU3LDMwNzY1LDMwNzUyLDMwNzUxLDMwNzcwLDMxMDYxLDMxMDU2LDMxMDcyLDMxMDcxLDMxMDYyLDMxMDcwLDMxMDY5LDMxMDYzLDMxMDY2LDMxMjA0LDMxMjAzLDMxMjA3LDMxMTk5LDMxMjA2LDMxMjA5LDMxMTkyLDMxMzY0LDMxMzY4LDMxNDQ5LDMxNDk0LDMxNTA1LDMxODgxLDMyMDMz''@;'; put 'put ''LDMyMDIzLDMyMDExLDMyMDEwLDMyMDMyLDMyMDM0LDMyMDIwLDMyMDE2LDMyMDIxLDMyMDI2LDMyMDI4LDMyMDEzLDMyMDI1LDMyMDI3LDMyNTcwLDMyNjA3LDMyNjYwLDMyNzA5LDMyNzA1LDMyNzc0LDMyNzkyLDMyNzg5LDMyNzkzLDMyNzkxLDMyODI5LDMyODMxLDMzMDA5LDMzMDI2LDMz''@;'; put 'put ''MDA4LDMzMDI5LDMzMDA1LDMzMDEyLDMzMDMwLDMzMDE2LDMzMDExLDMzMDMyLDMzMDIxLDMzMDM0LDMzMDIwLDMzMDA3LDMzMjYxLDMzMjYwLDMzMjgwLDMzMjk2LDMzMzIyLDMzMzIzLDMzMzIwLDMzMzI0LDMzNDY3LDMzNTc5LDMzNjE4LDMzNjIwLDMzNjEwLDMzNTkyLDMzNjE2LDMzNjA5''@;'; put 'put ''LDMzNTg5LDMzNTg4LDMzNjE1LDMzNTg2LDMzNTkzLDMzNTkwLDMzNTU5LDMzNjAwLDMzNTg1LDMzNTc2LDMzNjAzLDM0Mzg4LDM0NDQyLDM0NDc0LDM0NDUxLDM0NDY4LDM0NDczLDM0NDQ0LDM0NDY3LDM0NDYwLDM0OTI4LDM0OTM1LDM0OTQ1LDM0OTQ2LDM0OTQxLDM0OTM3LDM1MzUyLDM1''@;'; put 'put ''MzQ0LDM1MzQyLDM1MzQwLDM1MzQ5LDM1MzM4LDM1MzUxLDM1MzQ3LDM1MzUwLDM1MzQzLDM1MzQ1LDM1OTEyLDM1OTYyLDM1OTYxLDM2MDAxLDM2MDAyLDM2MjE1LDM2NTI0LDM2NTYyLDM2NTY0LDM2NTU5LDM2Nzg1LDM2ODY1LDM2ODcwLDM2ODU1LDM2ODY0LDM2ODU4LDM2ODUyLDM2ODY3''@;'; put 'put ''LDM2ODYxLDM2ODY5LDM2ODU2LDM3MDEzLDM3MDg5LDM3MDg1LDM3MDkwLDM3MjAyLDM3MTk3LDM3MTk2LDM3MzM2LDM3MzQxLDM3MzM1LDM3MzQwLDM3MzM3LDM4Mjc1LDM4NDk4LDM4NDk5LDM4NDk3LDM4NDkxLDM4NDkzLDM4NTAwLDM4NDg4LDM4NDk0LDM4NTg3LDM5MTM4LDM5MzQwLDM5''@;'; put 'put ''NTkyLDM5NjQwLDM5NzE3LDM5NzMwLDM5NzQwLDIwMDk0LDIwNjAyLDIwNjA1LDIwNTcyLDIwNTUxLDIwNTQ3LDIwNTU2LDIwNTcwLDIwNTUzLDIwNTgxLDIwNTk4LDIwNTU4LDIwNTY1LDIwNTk3LDIwNTk2LDIwNTk5LDIwNTU5LDIwNDk1LDIwNTkxLDIwNTg5LDIwODI4LDIwODg1LDIwOTc2''@;'; put 'put ''LDIxMDk4LDIxMTAzLDIxMjAyLDIxMjA5LDIxMjA4LDIxMjA1LDIxMjY0LDIxMjYzLDIxMjczLDIxMzExLDIxMzEyLDIxMzEwLDIxNDQzLDI2MzY0LDIxODMwLDIxODY2LDIxODYyLDIxODI4LDIxODU0LDIxODU3LDIxODI3LDIxODM0LDIxODA5LDIxODQ2LDIxODM5LDIxODQ1LDIxODA3LDIx''@;'; put 'put ''ODYwLDIxODE2LDIxODA2LDIxODUyLDIxODA0LDIxODU5LDIxODExLDIxODI1LDIxODQ3LDIyMjgwLDIyMjgzLDIyMjgxLDIyNDk1LDIyNTMzLDIyNTM4LDIyNTM0LDIyNDk2LDIyNTAwLDIyNTIyLDIyNTMwLDIyNTgxLDIyNTE5LDIyNTIxLDIyODE2LDIyODgyLDIzMDk0LDIzMTA1LDIzMTEz''@;'; put 'put ''LDIzMTQyLDIzMTQ2LDIzMTA0LDIzMTAwLDIzMTM4LDIzMTMwLDIzMTEwLDIzMTE0LDIzNDA4LDIzNDk1LDIzNDkzLDIzNDkyLDIzNDkwLDIzNDg3LDIzNDk0LDIzNTYxLDIzNTYwLDIzNTU5LDIzNjQ4LDIzNjQ0LDIzNjQ1LDIzODE1LDIzODE0LDIzODIyLDIzODM1LDIzODMwLDIzODQyLDIz''@;'; put 'put ''ODI1LDIzODQ5LDIzODI4LDIzODMzLDIzODQ0LDIzODQ3LDIzODMxLDI0MDM0LDI0MTIwLDI0MTE4LDI0MTE1LDI0MTE5LDI0MjQ3LDI0MjQ4LDI0MjQ2LDI0MjQ1LDI0MjU0LDI0MzczLDI0Mzc1LDI0NDA3LDI0NDI4LDI0NDI1LDI0NDI3LDI0NDcxLDI0NDczLDI0NDc4LDI0NDcyLDI0NDgx''@;'; put 'put ''LDI0NDgwLDI0NDc2LDI0NzAzLDI0NzM5LDI0NzEzLDI0NzM2LDI0NzQ0LDI0Nzc5LDI0NzU2LDI0ODA2LDI0NzY1LDI0NzczLDI0NzYzLDI0NzU3LDI0Nzk2LDI0NzY0LDI0NzkyLDI0Nzg5LDI0Nzc0LDI0Nzk5LDI0NzYwLDI0Nzk0LDI0Nzc1LDI1MTE0LDI1MTE1LDI1MTYwLDI1NTA0LDI1''@;'; put 'put ''NTExLDI1NDU4LDI1NDk0LDI1NTA2LDI1NTA5LDI1NDYzLDI1NDQ3LDI1NDk2LDI1NTE0LDI1NDU3LDI1NTEzLDI1NDgxLDI1NDc1LDI1NDk5LDI1NDUxLDI1NTEyLDI1NDc2LDI1NDgwLDI1NDk3LDI1NTA1LDI1NTE2LDI1NDkwLDI1NDg3LDI1NDcyLDI1NDY3LDI1NDQ5LDI1NDQ4LDI1NDY2''@;'; put 'put ''LDI1OTQ5LDI1OTQyLDI1OTM3LDI1OTQ1LDI1OTQzLDIxODU1LDI1OTM1LDI1OTQ0LDI1OTQxLDI1OTQwLDI2MDEyLDI2MDExLDI2MDI4LDI2MDYzLDI2MDU5LDI2MDYwLDI2MDYyLDI2MjA1LDI2MjAyLDI2MjEyLDI2MjE2LDI2MjE0LDI2MjA2LDI2MzYxLDIxMjA3LDI2Mzk1LDI2NzUzLDI2''@;'; put 'put ''Nzk5LDI2Nzg2LDI2NzcxLDI2ODA1LDI2NzUxLDI2NzQyLDI2ODAxLDI2NzkxLDI2Nzc1LDI2ODAwLDI2NzU1LDI2ODIwLDI2Nzk3LDI2NzU4LDI2NzU3LDI2NzcyLDI2NzgxLDI2NzkyLDI2NzgzLDI2Nzg1LDI2NzU0LDI3NDQyLDI3NTc4LDI3NjI3LDI3NjI4LDI3NjkxLDI4MDQ2LDI4MDky''@;'; put 'put ''LDI4MTQ3LDI4MTIxLDI4MDgyLDI4MTI5LDI4MTA4LDI4MTMyLDI4MTU1LDI4MTU0LDI4MTY1LDI4MTAzLDI4MTA3LDI4MDc5LDI4MTEzLDI4MDc4LDI4MTI2LDI4MTUzLDI4MDg4LDI4MTUxLDI4MTQ5LDI4MTAxLDI4MTE0LDI4MTg2LDI4MDg1LDI4MTIyLDI4MTM5LDI4MTIwLDI4MTM4LDI4''@;'; put 'put ''MTQ1LDI4MTQyLDI4MTM2LDI4MTAyLDI4MTAwLDI4MDc0LDI4MTQwLDI4MDk1LDI4MTM0LDI4OTIxLDI4OTM3LDI4OTM4LDI4OTI1LDI4OTExLDI5MjQ1LDI5MzA5LDI5MzEzLDI5NDY4LDI5NDY3LDI5NDYyLDI5NDU5LDI5NDY1LDI5NTc1LDI5NzAxLDI5NzA2LDI5Njk5LDI5NzAyLDI5Njk0''@;'; put 'put ''LDI5NzA5LDI5OTIwLDI5OTQyLDI5OTQzLDI5OTgwLDI5OTg2LDMwMDUzLDMwMDU0LDMwMDUwLDMwMDY0LDMwMDk1LDMwMTY0LDMwMTY1LDMwMTMzLDMwMTU0LDMwMTU3LDMwMzUwLDMwNDIwLDMwNDE4LDMwNDI3LDMwNTE5LDMwNTI2LDMwNTI0LDMwNTE4LDMwNTIwLDMwNTIyLDMwODI3LDMw''@;'; put 'put ''Nzg3LDMwNzk4LDMxMDc3LDMxMDgwLDMxMDg1LDMxMjI3LDMxMzc4LDMxMzgxLDMxNTIwLDMxNTI4LDMxNTE1LDMxNTMyLDMxNTI2LDMxNTEzLDMxNTE4LDMxNTM0LDMxODkwLDMxODk1LDMxODkzLDMyMDcwLDMyMDY3LDMyMTEzLDMyMDQ2LDMyMDU3LDMyMDYwLDMyMDY0LDMyMDQ4LDMyMDUx''@;'; put 'put ''LDMyMDY4LDMyMDQ3LDMyMDY2LDMyMDUwLDMyMDQ5LDMyNTczLDMyNjcwLDMyNjY2LDMyNzE2LDMyNzE4LDMyNzIyLDMyNzk2LDMyODQyLDMyODM4LDMzMDcxLDMzMDQ2LDMzMDU5LDMzMDY3LDMzMDY1LDMzMDcyLDMzMDYwLDMzMjgyLDMzMzMzLDMzMzM1LDMzMzM0LDMzMzM3LDMzNjc4LDMz''@;'; put 'put ''Njk0LDMzNjg4LDMzNjU2LDMzNjk4LDMzNjg2LDMzNzI1LDMzNzA3LDMzNjgyLDMzNjc0LDMzNjgzLDMzNjczLDMzNjk2LDMzNjU1LDMzNjU5LDMzNjYwLDMzNjcwLDMzNzAzLDM0Mzg5LDI0NDI2LDM0NTAzLDM0NDk2LDM0NDg2LDM0NTAwLDM0NDg1LDM0NTAyLDM0NTA3LDM0NDgxLDM0NDc5''@;'; put 'put ''LDM0NTA1LDM0ODk5LDM0OTc0LDM0OTUyLDM0OTg3LDM0OTYyLDM0OTY2LDM0OTU3LDM0OTU1LDM1MjE5LDM1MjE1LDM1MzcwLDM1MzU3LDM1MzYzLDM1MzY1LDM1Mzc3LDM1MzczLDM1MzU5LDM1MzU1LDM1MzYyLDM1OTEzLDM1OTMwLDM2MDA5LDM2MDEyLDM2MDExLDM2MDA4LDM2MDEwLDM2''@;'; put 'put ''MDA3LDM2MTk5LDM2MTk4LDM2Mjg2LDM2MjgyLDM2NTcxLDM2NTc1LDM2ODg5LDM2ODc3LDM2ODkwLDM2ODg3LDM2ODk5LDM2ODk1LDM2ODkzLDM2ODgwLDM2ODg1LDM2ODk0LDM2ODk2LDM2ODc5LDM2ODk4LDM2ODg2LDM2ODkxLDM2ODg0LDM3MDk2LDM3MTAxLDM3MTE3LDM3MjA3LDM3MzI2''@;'; put 'put ''LDM3MzY1LDM3MzUwLDM3MzQ3LDM3MzUxLDM3MzU3LDM3MzUzLDM4MjgxLDM4NTA2LDM4NTE3LDM4NTE1LDM4NTIwLDM4NTEyLDM4NTE2LDM4NTE4LDM4NTE5LDM4NTA4LDM4NTkyLDM4NjM0LDM4NjMzLDMxNDU2LDMxNDU1LDM4OTE0LDM4OTE1LDM5NzcwLDQwMTY1LDQwNTY1LDQwNTc1LDQw''@;'; put 'put ''NjEzLDQwNjM1LDIwNjQyLDIwNjIxLDIwNjEzLDIwNjMzLDIwNjI1LDIwNjA4LDIwNjMwLDIwNjMyLDIwNjM0LDI2MzY4LDIwOTc3LDIxMTA2LDIxMTA4LDIxMTA5LDIxMDk3LDIxMjE0LDIxMjEzLDIxMjExLDIxMzM4LDIxNDEzLDIxODgzLDIxODg4LDIxOTI3LDIxODg0LDIxODk4LDIxOTE3''@;'; put 'put ''LDIxOTEyLDIxODkwLDIxOTE2LDIxOTMwLDIxOTA4LDIxODk1LDIxODk5LDIxODkxLDIxOTM5LDIxOTM0LDIxOTE5LDIxODIyLDIxOTM4LDIxOTE0LDIxOTQ3LDIxOTMyLDIxOTM3LDIxODg2LDIxODk3LDIxOTMxLDIxOTEzLDIyMjg1LDIyNTc1LDIyNTcwLDIyNTgwLDIyNTY0LDIyNTc2LDIy''@;'; put 'put ''NTc3LDIyNTYxLDIyNTU3LDIyNTYwLDIyNzc3LDIyNzc4LDIyODgwLDIzMTU5LDIzMTk0LDIzMTY3LDIzMTg2LDIzMTk1LDIzMjA3LDIzNDExLDIzNDA5LDIzNTA2LDIzNTAwLDIzNTA3LDIzNTA0LDIzNTYyLDIzNTYzLDIzNjAxLDIzODg0LDIzODg4LDIzODYwLDIzODc5LDI0MDYxLDI0MTMz''@;'; put 'put ''LDI0MTI1LDI0MTI4LDI0MTMxLDI0MTkwLDI0MjY2LDI0MjU3LDI0MjU4LDI0MjYwLDI0MzgwLDI0NDI5LDI0NDg5LDI0NDkwLDI0NDg4LDI0Nzg1LDI0ODAxLDI0NzU0LDI0NzU4LDI0ODAwLDI0ODYwLDI0ODY3LDI0ODI2LDI0ODUzLDI0ODE2LDI0ODI3LDI0ODIwLDI0OTM2LDI0ODE3LDI0''@;'; put 'put ''ODQ2LDI0ODIyLDI0ODQxLDI0ODMyLDI0ODUwLDI1MTE5LDI1MTYxLDI1NTA3LDI1NDg0LDI1NTUxLDI1NTM2LDI1NTc3LDI1NTQ1LDI1NTQyLDI1NTQ5LDI1NTU0LDI1NTcxLDI1NTUyLDI1NTY5LDI1NTU4LDI1NTgxLDI1NTgyLDI1NDYyLDI1NTg4LDI1NTc4LDI1NTYzLDI1NjgyLDI1NTYy''@;'; put 'put ''LDI1NTkzLDI1OTUwLDI1OTU4LDI1OTU0LDI1OTU1LDI2MDAxLDI2ZTMsMjYwMzEsMjYyMjIsMjYyMjQsMjYyMjgsMjYyMzAsMjYyMjMsMjYyNTcsMjYyMzQsMjYyMzgsMjYyMzEsMjYzNjYsMjYzNjcsMjYzOTksMjYzOTcsMjY4NzQsMjY4MzcsMjY4NDgsMjY4NDAsMjY4MzksMjY4ODUsMjY4''@;'; put 'put ''NDcsMjY4NjksMjY4NjIsMjY4NTUsMjY4NzMsMjY4MzQsMjY4NjYsMjY4NTEsMjY4MjcsMjY4MjksMjY4OTMsMjY4OTgsMjY4OTQsMjY4MjUsMjY4NDIsMjY5OTAsMjY4NzUsMjc0NTQsMjc0NTAsMjc0NTMsMjc1NDQsMjc1NDIsMjc1ODAsMjc2MzEsMjc2OTQsMjc2OTUsMjc2OTIsMjgyMDcs''@;'; put 'put ''MjgyMTYsMjgyNDQsMjgxOTMsMjgyMTAsMjgyNjMsMjgyMzQsMjgxOTIsMjgxOTcsMjgxOTUsMjgxODcsMjgyNTEsMjgyNDgsMjgxOTYsMjgyNDYsMjgyNzAsMjgyMDUsMjgxOTgsMjgyNzEsMjgyMTIsMjgyMzcsMjgyMTgsMjgyMDQsMjgyMjcsMjgxODksMjgyMjIsMjgzNjMsMjgyOTcsMjgx''@;'; put 'put ''ODUsMjgyMzgsMjgyNTksMjgyMjgsMjgyNzQsMjgyNjUsMjgyNTUsMjg5NTMsMjg5NTQsMjg5NjYsMjg5NzYsMjg5NjEsMjg5ODIsMjkwMzgsMjg5NTYsMjkyNjAsMjkzMTYsMjkzMTIsMjk0OTQsMjk0NzcsMjk0OTIsMjk0ODEsMjk3NTQsMjk3MzgsMjk3NDcsMjk3MzAsMjk3MzMsMjk3NDks''@;'; put 'put ''Mjk3NTAsMjk3NDgsMjk3NDMsMjk3MjMsMjk3MzQsMjk3MzYsMjk5ODksMjk5OTAsMzAwNTksMzAwNTgsMzAxNzgsMzAxNzEsMzAxNzksMzAxNjksMzAxNjgsMzAxNzQsMzAxNzYsMzAzMzEsMzAzMzIsMzAzNTgsMzAzNTUsMzAzODgsMzA0MjgsMzA1NDMsMzA3MDEsMzA4MTMsMzA4MjgsMzA4''@;'; put 'put ''MzEsMzEyNDUsMzEyNDAsMzEyNDMsMzEyMzcsMzEyMzIsMzEzODQsMzEzODMsMzEzODIsMzE0NjEsMzE0NTksMzE1NjEsMzE1NzQsMzE1NTgsMzE1NjgsMzE1NzAsMzE1NzIsMzE1NjUsMzE1NjMsMzE1NjcsMzE1NjksMzE5MDMsMzE5MDksMzIwOTQsMzIwODAsMzIxMDQsMzIwODUsMzIwNDMs''@;'; put 'put ''MzIxMTAsMzIxMTQsMzIwOTcsMzIxMDIsMzIwOTgsMzIxMTIsMzIxMTUsMjE4OTIsMzI3MjQsMzI3MjUsMzI3NzksMzI4NTAsMzI5MDEsMzMxMDksMzMxMDgsMzMwOTksMzMxMDUsMzMxMDIsMzMwODEsMzMwOTQsMzMwODYsMzMxMDAsMzMxMDcsMzMxNDAsMzMyOTgsMzMzMDgsMzM3NjksMzM3''@;'; put 'put ''OTUsMzM3ODQsMzM4MDUsMzM3NjAsMzM3MzMsMzM4MDMsMzM3MjksMzM3NzUsMzM3NzcsMzM3ODAsMzM4NzksMzM4MDIsMzM3NzYsMzM4MDQsMzM3NDAsMzM3ODksMzM3NzgsMzM3MzgsMzM4NDgsMzM4MDYsMzM3OTYsMzM3NTYsMzM3OTksMzM3NDgsMzM3NTksMzQzOTUsMzQ1MjcsMzQ1MjEs''@;'; put 'put ''MzQ1NDEsMzQ1MTYsMzQ1MjMsMzQ1MzIsMzQ1MTIsMzQ1MjYsMzQ5MDMsMzUwMDksMzUwMTAsMzQ5OTMsMzUyMDMsMzUyMjIsMzUzODcsMzU0MjQsMzU0MTMsMzU0MjIsMzUzODgsMzUzOTMsMzU0MTIsMzU0MTksMzU0MDgsMzUzOTgsMzUzODAsMzUzODYsMzUzODIsMzU0MTQsMzU5MzcsMzU5''@;'; put 'put ''NzAsMzYwMTUsMzYwMjgsMzYwMTksMzYwMjksMzYwMzMsMzYwMjcsMzYwMzIsMzYwMjAsMzYwMjMsMzYwMjIsMzYwMzEsMzYwMjQsMzYyMzQsMzYyMjksMzYyMjUsMzYzMDIsMzYzMTcsMzYyOTksMzYzMTQsMzYzMDUsMzYzMDAsMzYzMTUsMzYyOTQsMzY2MDMsMzY2MDAsMzY2MDQsMzY3NjQs''@;'; put 'put ''MzY5MTAsMzY5MTcsMzY5MTMsMzY5MjAsMzY5MTQsMzY5MTgsMzcxMjIsMzcxMDksMzcxMjksMzcxMTgsMzcyMTksMzcyMjEsMzczMjcsMzczOTYsMzczOTcsMzc0MTEsMzczODUsMzc0MDYsMzczODksMzczOTIsMzczODMsMzczOTMsMzgyOTIsMzgyODcsMzgyODMsMzgyODksMzgyOTEsMzgy''@;'; put 'put ''OTAsMzgyODYsMzg1MzgsMzg1NDIsMzg1MzksMzg1MjUsMzg1MzMsMzg1MzQsMzg1NDEsMzg1MTQsMzg1MzIsMzg1OTMsMzg1OTcsMzg1OTYsMzg1OTgsMzg1OTksMzg2MzksMzg2NDIsMzg4NjAsMzg5MTcsMzg5MTgsMzg5MjAsMzkxNDMsMzkxNDYsMzkxNTEsMzkxNDUsMzkxNTQsMzkxNDks''@;'; put 'put ''MzkzNDIsMzkzNDEsNDA2NDMsNDA2NTMsNDA2NTcsMjAwOTgsMjA2NTMsMjA2NjEsMjA2NTgsMjA2NTksMjA2NzcsMjA2NzAsMjA2NTIsMjA2NjMsMjA2NjcsMjA2NTUsMjA2NzksMjExMTksMjExMTEsMjExMTcsMjEyMTUsMjEyMjIsMjEyMjAsMjEyMTgsMjEyMTksMjEyOTUsMjE5ODMsMjE5''@;'; put 'put ''OTIsMjE5NzEsMjE5OTAsMjE5NjYsMjE5ODAsMjE5NTksMjE5NjksMjE5ODcsMjE5ODgsMjE5OTksMjE5NzgsMjE5ODUsMjE5NTcsMjE5NTgsMjE5ODksMjE5NjEsMjIyOTAsMjIyOTEsMjI2MjIsMjI2MDksMjI2MTYsMjI2MTUsMjI2MTgsMjI2MTIsMjI2MzUsMjI2MDQsMjI2MzcsMjI2MDIs''@;'; put 'put ''MjI2MjYsMjI2MTAsMjI2MDMsMjI4ODcsMjMyMzMsMjMyNDEsMjMyNDQsMjMyMzAsMjMyMjksMjMyMjgsMjMyMTksMjMyMzQsMjMyMTgsMjM5MTMsMjM5MTksMjQxNDAsMjQxODUsMjQyNjUsMjQyNjQsMjQzMzgsMjQ0MDksMjQ0OTIsMjQ0OTQsMjQ4NTgsMjQ4NDcsMjQ5MDQsMjQ4NjMsMjQ4''@;'; put 'put ''MTksMjQ4NTksMjQ4MjUsMjQ4MzMsMjQ4NDAsMjQ5MTAsMjQ5MDgsMjQ5MDAsMjQ5MDksMjQ4OTQsMjQ4ODQsMjQ4NzEsMjQ4NDUsMjQ4MzgsMjQ4ODcsMjUxMjEsMjUxMjIsMjU2MTksMjU2NjIsMjU2MzAsMjU2NDIsMjU2NDUsMjU2NjEsMjU2NDQsMjU2MTUsMjU2MjgsMjU2MjAsMjU2MTMs''@;'; put 'put ''MjU2NTQsMjU2MjIsMjU2MjMsMjU2MDYsMjU5NjQsMjYwMTUsMjYwMzIsMjYyNjMsMjYyNDksMjYyNDcsMjYyNDgsMjYyNjIsMjYyNDQsMjYyNjQsMjYyNTMsMjYzNzEsMjcwMjgsMjY5ODksMjY5NzAsMjY5OTksMjY5NzYsMjY5NjQsMjY5OTcsMjY5MjgsMjcwMTAsMjY5NTQsMjY5ODQsMjY5''@;'; put 'put ''ODcsMjY5NzQsMjY5NjMsMjcwMDEsMjcwMTQsMjY5NzMsMjY5NzksMjY5NzEsMjc0NjMsMjc1MDYsMjc1ODQsMjc1ODMsMjc2MDMsMjc2NDUsMjgzMjIsMjgzMzUsMjgzNzEsMjgzNDIsMjgzNTQsMjgzMDQsMjgzMTcsMjgzNTksMjgzNTcsMjgzMjUsMjgzMTIsMjgzNDgsMjgzNDYsMjgzMzEs''@;'; put 'put ''MjgzNjksMjgzMTAsMjgzMTYsMjgzNTYsMjgzNzIsMjgzMzAsMjgzMjcsMjgzNDAsMjkwMDYsMjkwMTcsMjkwMzMsMjkwMjgsMjkwMDEsMjkwMzEsMjkwMjAsMjkwMzYsMjkwMzAsMjkwMDQsMjkwMjksMjkwMjIsMjg5OTgsMjkwMzIsMjkwMTQsMjkyNDIsMjkyNjYsMjk0OTUsMjk1MDksMjk1''@;'; put 'put ''MDMsMjk1MDIsMjk4MDcsMjk3ODYsMjk3ODEsMjk3OTEsMjk3OTAsMjk3NjEsMjk3NTksMjk3ODUsMjk3ODcsMjk3ODgsMzAwNzAsMzAwNzIsMzAyMDgsMzAxOTIsMzAyMDksMzAxOTQsMzAxOTMsMzAyMDIsMzAyMDcsMzAxOTYsMzAxOTUsMzA0MzAsMzA0MzEsMzA1NTUsMzA1NzEsMzA1NjYs''@;'; put 'put ''MzA1NTgsMzA1NjMsMzA1ODUsMzA1NzAsMzA1NzIsMzA1NTYsMzA1NjUsMzA1NjgsMzA1NjIsMzA3MDIsMzA4NjIsMzA4OTYsMzA4NzEsMzA4NzIsMzA4NjAsMzA4NTcsMzA4NDQsMzA4NjUsMzA4NjcsMzA4NDcsMzEwOTgsMzExMDMsMzExMDUsMzM4MzYsMzExNjUsMzEyNjAsMzEyNTgsMzEy''@;'; put 'put ''NjQsMzEyNTIsMzEyNjMsMzEyNjIsMzEzOTEsMzEzOTIsMzE2MDcsMzE2ODAsMzE1ODQsMzE1OTgsMzE1OTEsMzE5MjEsMzE5MjMsMzE5MjUsMzIxNDcsMzIxMjEsMzIxNDUsMzIxMjksMzIxNDMsMzIwOTEsMzI2MjIsMzI2MTcsMzI2MTgsMzI2MjYsMzI2ODEsMzI2ODAsMzI2NzYsMzI4NTQs''@;'; put 'put ''MzI4NTYsMzI5MDIsMzI5MDAsMzMxMzcsMzMxMzYsMzMxNDQsMzMxMjUsMzMxMzQsMzMxMzksMzMxMzEsMzMxNDUsMzMxNDYsMzMxMjYsMzMyODUsMzMzNTEsMzM5MjIsMzM5MTEsMzM4NTMsMzM4NDEsMzM5MDksMzM4OTQsMzM4OTksMzM4NjUsMzM5MDAsMzM4ODMsMzM4NTIsMzM4NDUsMzM4''@;'; put 'put ''ODksMzM4OTEsMzM4OTcsMzM5MDEsMzM4NjIsMzQzOTgsMzQzOTYsMzQzOTksMzQ1NTMsMzQ1NzksMzQ1NjgsMzQ1NjcsMzQ1NjAsMzQ1NTgsMzQ1NTUsMzQ1NjIsMzQ1NjMsMzQ1NjYsMzQ1NzAsMzQ5MDUsMzUwMzksMzUwMjgsMzUwMzMsMzUwMzYsMzUwMzIsMzUwMzcsMzUwNDEsMzUwMTgs''@;'; put 'put ''MzUwMjksMzUwMjYsMzUyMjgsMzUyOTksMzU0MzUsMzU0NDIsMzU0NDMsMzU0MzAsMzU0MzMsMzU0NDAsMzU0NjMsMzU0NTIsMzU0MjcsMzU0ODgsMzU0NDEsMzU0NjEsMzU0MzcsMzU0MjYsMzU0MzgsMzU0MzYsMzU0NDksMzU0NTEsMzUzOTAsMzU0MzIsMzU5MzgsMzU5NzgsMzU5NzcsMzYw''@;'; put 'put ''NDIsMzYwMzksMzYwNDAsMzYwMzYsMzYwMTgsMzYwMzUsMzYwMzQsMzYwMzcsMzYzMjEsMzYzMTksMzYzMjgsMzYzMzUsMzYzMzksMzYzNDYsMzYzMzAsMzYzMjQsMzYzMjYsMzY1MzAsMzY2MTEsMzY2MTcsMzY2MDYsMzY2MTgsMzY3NjcsMzY3ODYsMzY5MzksMzY5MzgsMzY5NDcsMzY5MzAs''@;'; put 'put ''MzY5NDgsMzY5MjQsMzY5NDksMzY5NDQsMzY5MzUsMzY5NDMsMzY5NDIsMzY5NDEsMzY5NDUsMzY5MjYsMzY5MjksMzcxMzgsMzcxNDMsMzcyMjgsMzcyMjYsMzcyMjUsMzczMjEsMzc0MzEsMzc0NjMsMzc0MzIsMzc0MzcsMzc0NDAsMzc0MzgsMzc0NjcsMzc0NTEsMzc0NzYsMzc0NTcsMzc0''@;'; put 'put ''MjgsMzc0NDksMzc0NTMsMzc0NDUsMzc0MzMsMzc0MzksMzc0NjYsMzgyOTYsMzg1NTIsMzg1NDgsMzg1NDksMzg2MDUsMzg2MDMsMzg2MDEsMzg2MDIsMzg2NDcsMzg2NTEsMzg2NDksMzg2NDYsMzg3NDIsMzg3NzIsMzg3NzQsMzg5MjgsMzg5MjksMzg5MzEsMzg5MjIsMzg5MzAsMzg5MjQs''@;'; put 'put ''MzkxNjQsMzkxNTYsMzkxNjUsMzkxNjYsMzkzNDcsMzkzNDUsMzkzNDgsMzk2NDksNDAxNjksNDA1NzgsNDA3MTgsNDA3MjMsNDA3MzYsMjA3MTEsMjA3MTgsMjA3MDksMjA2OTQsMjA3MTcsMjA2OTgsMjA2OTMsMjA2ODcsMjA2ODksMjA3MjEsMjA2ODYsMjA3MTMsMjA4MzQsMjA5NzksMjEx''@;'; put 'put ''MjMsMjExMjIsMjEyOTcsMjE0MjEsMjIwMTQsMjIwMTYsMjIwNDMsMjIwMzksMjIwMTMsMjIwMzYsMjIwMjIsMjIwMjUsMjIwMjksMjIwMzAsMjIwMDcsMjIwMzgsMjIwNDcsMjIwMjQsMjIwMzIsMjIwMDYsMjIyOTYsMjIyOTQsMjI2NDUsMjI2NTQsMjI2NTksMjI2NzUsMjI2NjYsMjI2NDks''@;'; put 'put ''MjI2NjEsMjI2NTMsMjI3ODEsMjI4MjEsMjI4MTgsMjI4MjAsMjI4OTAsMjI4ODksMjMyNjUsMjMyNzAsMjMyNzMsMjMyNTUsMjMyNTQsMjMyNTYsMjMyNjcsMjM0MTMsMjM1MTgsMjM1MjcsMjM1MjEsMjM1MjUsMjM1MjYsMjM1MjgsMjM1MjIsMjM1MjQsMjM1MTksMjM1NjUsMjM2NTAsMjM5''@;'; put 'put ''NDAsMjM5NDMsMjQxNTUsMjQxNjMsMjQxNDksMjQxNTEsMjQxNDgsMjQyNzUsMjQyNzgsMjQzMzAsMjQzOTAsMjQ0MzIsMjQ1MDUsMjQ5MDMsMjQ4OTUsMjQ5MDcsMjQ5NTEsMjQ5MzAsMjQ5MzEsMjQ5MjcsMjQ5MjIsMjQ5MjAsMjQ5NDksMjUxMzAsMjU3MzUsMjU2ODgsMjU2ODQsMjU3NjQs''@;'; put 'put ''MjU3MjAsMjU2OTUsMjU3MjIsMjU2ODEsMjU3MDMsMjU2NTIsMjU3MDksMjU3MjMsMjU5NzAsMjYwMTcsMjYwNzEsMjYwNzAsMjYyNzQsMjYyODAsMjYyNjksMjcwMzYsMjcwNDgsMjcwMjksMjcwNzMsMjcwNTQsMjcwOTEsMjcwODMsMjcwMzUsMjcwNjMsMjcwNjcsMjcwNTEsMjcwNjAsMjcw''@;'; put 'put ''ODgsMjcwODUsMjcwNTMsMjcwODQsMjcwNDYsMjcwNzUsMjcwNDMsMjc0NjUsMjc0NjgsMjc2OTksMjg0NjcsMjg0MzYsMjg0MTQsMjg0MzUsMjg0MDQsMjg0NTcsMjg0NzgsMjg0NDgsMjg0NjAsMjg0MzEsMjg0MTgsMjg0NTAsMjg0MTUsMjgzOTksMjg0MjIsMjg0NjUsMjg0NzIsMjg0NjYs''@;'; put 'put ''Mjg0NTEsMjg0MzcsMjg0NTksMjg0NjMsMjg1NTIsMjg0NTgsMjgzOTYsMjg0MTcsMjg0MDIsMjgzNjQsMjg0MDcsMjkwNzYsMjkwODEsMjkwNTMsMjkwNjYsMjkwNjAsMjkwNzQsMjkyNDYsMjkzMzAsMjkzMzQsMjk1MDgsMjk1MjAsMjk3OTYsMjk3OTUsMjk4MDIsMjk4MDgsMjk4MDUsMjk5''@;'; put 'put ''NTYsMzAwOTcsMzAyNDcsMzAyMjEsMzAyMTksMzAyMTcsMzAyMjcsMzA0MzMsMzA0MzUsMzA1OTYsMzA1ODksMzA1OTEsMzA1NjEsMzA5MTMsMzA4NzksMzA4ODcsMzA4OTksMzA4ODksMzA4ODMsMzExMTgsMzExMTksMzExMTcsMzEyNzgsMzEyODEsMzE0MDIsMzE0MDEsMzE0NjksMzE0NzEs''@;'; put 'put ''MzE2NDksMzE2MzcsMzE2MjcsMzE2MDUsMzE2MzksMzE2NDUsMzE2MzYsMzE2MzEsMzE2NzIsMzE2MjMsMzE2MjAsMzE5MjksMzE5MzMsMzE5MzQsMzIxODcsMzIxNzYsMzIxNTYsMzIxODksMzIxOTAsMzIxNjAsMzIyMDIsMzIxODAsMzIxNzgsMzIxNzcsMzIxODYsMzIxNjIsMzIxOTEsMzIx''@;'; put 'put ''ODEsMzIxODQsMzIxNzMsMzIyMTAsMzIxOTksMzIxNzIsMzI2MjQsMzI3MzYsMzI3MzcsMzI3MzUsMzI4NjIsMzI4NTgsMzI5MDMsMzMxMDQsMzMxNTIsMzMxNjcsMzMxNjAsMzMxNjIsMzMxNTEsMzMxNTQsMzMyNTUsMzMyNzQsMzMyODcsMzMzMDAsMzMzMTAsMzMzNTUsMzM5OTMsMzM5ODMs''@;'; put 'put ''MzM5OTAsMzM5ODgsMzM5NDUsMzM5NTAsMzM5NzAsMzM5NDgsMzM5OTUsMzM5NzYsMzM5ODQsMzQwMDMsMzM5MzYsMzM5ODAsMzQwMDEsMzM5OTQsMzQ2MjMsMzQ1ODgsMzQ2MTksMzQ1OTQsMzQ1OTcsMzQ2MTIsMzQ1ODQsMzQ2NDUsMzQ2MTUsMzQ2MDEsMzUwNTksMzUwNzQsMzUwNjAsMzUw''@;'; put 'put ''NjUsMzUwNjQsMzUwNjksMzUwNDgsMzUwOTgsMzUwNTUsMzU0OTQsMzU0NjgsMzU0ODYsMzU0OTEsMzU0NjksMzU0ODksMzU0NzUsMzU0OTIsMzU0OTgsMzU0OTMsMzU0OTYsMzU0ODAsMzU0NzMsMzU0ODIsMzU0OTUsMzU5NDYsMzU5ODEsMzU5ODAsMzYwNTEsMzYwNDksMzYwNTAsMzYyMDMs''@;'; put 'put ''MzYyNDksMzYyNDUsMzYzNDgsMzY2MjgsMzY2MjYsMzY2MjksMzY2MjcsMzY3NzEsMzY5NjAsMzY5NTIsMzY5NTYsMzY5NjMsMzY5NTMsMzY5NTgsMzY5NjIsMzY5NTcsMzY5NTUsMzcxNDUsMzcxNDQsMzcxNTAsMzcyMzcsMzcyNDAsMzcyMzksMzcyMzYsMzc0OTYsMzc1MDQsMzc1MDksMzc1''@;'; put 'put ''MjgsMzc1MjYsMzc0OTksMzc1MjMsMzc1MzIsMzc1NDQsMzc1MDAsMzc1MjEsMzgzMDUsMzgzMTIsMzgzMTMsMzgzMDcsMzgzMDksMzgzMDgsMzg1NTMsMzg1NTYsMzg1NTUsMzg2MDQsMzg2MTAsMzg2NTYsMzg3ODAsMzg3ODksMzg5MDIsMzg5MzUsMzg5MzYsMzkwODcsMzkwODksMzkxNzEs''@;'; put 'put ''MzkxNzMsMzkxODAsMzkxNzcsMzkzNjEsMzk1OTksMzk2MDAsMzk2NTQsMzk3NDUsMzk3NDYsNDAxODAsNDAxODIsNDAxNzksNDA2MzYsNDA3NjMsNDA3NzgsMjA3NDAsMjA3MzYsMjA3MzEsMjA3MjUsMjA3MjksMjA3MzgsMjA3NDQsMjA3NDUsMjA3NDEsMjA5NTYsMjExMjcsMjExMjgsMjEx''@;'; put 'put ''MjksMjExMzMsMjExMzAsMjEyMzIsMjE0MjYsMjIwNjIsMjIwNzUsMjIwNzMsMjIwNjYsMjIwNzksMjIwNjgsMjIwNTcsMjIwOTksMjIwOTQsMjIxMDMsMjIxMzIsMjIwNzAsMjIwNjMsMjIwNjQsMjI2NTYsMjI2ODcsMjI2ODYsMjI3MDcsMjI2ODQsMjI3MDIsMjI2OTcsMjI2OTQsMjI4OTMs''@;'; put 'put ''MjMzMDUsMjMyOTEsMjMzMDcsMjMyODUsMjMzMDgsMjMzMDQsMjM1MzQsMjM1MzIsMjM1MjksMjM1MzEsMjM2NTIsMjM2NTMsMjM5NjUsMjM5NTYsMjQxNjIsMjQxNTksMjQxNjEsMjQyOTAsMjQyODIsMjQyODcsMjQyODUsMjQyOTEsMjQyODgsMjQzOTIsMjQ0MzMsMjQ1MDMsMjQ1MDEsMjQ5''@;'; put 'put ''NTAsMjQ5MzUsMjQ5NDIsMjQ5MjUsMjQ5MTcsMjQ5NjIsMjQ5NTYsMjQ5NDQsMjQ5MzksMjQ5NTgsMjQ5OTksMjQ5NzYsMjUwMDMsMjQ5NzQsMjUwMDQsMjQ5ODYsMjQ5OTYsMjQ5ODAsMjUwMDYsMjUxMzQsMjU3MDUsMjU3MTEsMjU3MjEsMjU3NTgsMjU3NzgsMjU3MzYsMjU3NDQsMjU3NzYs''@;'; put 'put ''MjU3NjUsMjU3NDcsMjU3NDksMjU3NjksMjU3NDYsMjU3NzQsMjU3NzMsMjU3NzEsMjU3NTQsMjU3NzIsMjU3NTMsMjU3NjIsMjU3NzksMjU5NzMsMjU5NzUsMjU5NzYsMjYyODYsMjYyODMsMjYyOTIsMjYyODksMjcxNzEsMjcxNjcsMjcxMTIsMjcxMzcsMjcxNjYsMjcxNjEsMjcxMzMsMjcx''@;'; put 'put ''NjksMjcxNTUsMjcxNDYsMjcxMjMsMjcxMzgsMjcxNDEsMjcxMTcsMjcxNTMsMjc0NzIsMjc0NzAsMjc1NTYsMjc1ODksMjc1OTAsMjg0NzksMjg1NDAsMjg1NDgsMjg0OTcsMjg1MTgsMjg1MDAsMjg1NTAsMjg1MjUsMjg1MDcsMjg1MzYsMjg1MjYsMjg1NTgsMjg1MzgsMjg1MjgsMjg1MTYs''@;'; put 'put ''Mjg1NjcsMjg1MDQsMjgzNzMsMjg1MjcsMjg1MTIsMjg1MTEsMjkwODcsMjkxMDAsMjkxMDUsMjkwOTYsMjkyNzAsMjkzMzksMjk1MTgsMjk1MjcsMjk4MDEsMjk4MzUsMjk4MjcsMjk4MjIsMjk4MjQsMzAwNzksMzAyNDAsMzAyNDksMzAyMzksMzAyNDQsMzAyNDYsMzAyNDEsMzAyNDIsMzAz''@;'; put 'put ''NjIsMzAzOTQsMzA0MzYsMzA2MDYsMzA1OTksMzA2MDQsMzA2MDksMzA2MDMsMzA5MjMsMzA5MTcsMzA5MDYsMzA5MjIsMzA5MTAsMzA5MzMsMzA5MDgsMzA5MjgsMzEyOTUsMzEyOTIsMzEyOTYsMzEyOTMsMzEyODcsMzEyOTEsMzE0MDcsMzE0MDYsMzE2NjEsMzE2NjUsMzE2ODQsMzE2Njgs''@;'; put 'put ''MzE2ODYsMzE2ODcsMzE2ODEsMzE2NDgsMzE2OTIsMzE5NDYsMzIyMjQsMzIyNDQsMzIyMzksMzIyNTEsMzIyMTYsMzIyMzYsMzIyMjEsMzIyMzIsMzIyMjcsMzIyMTgsMzIyMjIsMzIyMzMsMzIxNTgsMzIyMTcsMzIyNDIsMzIyNDksMzI2MjksMzI2MzEsMzI2ODcsMzI3NDUsMzI4MDYsMzMx''@;'; put 'put ''NzksMzMxODAsMzMxODEsMzMxODQsMzMxNzgsMzMxNzYsMzQwNzEsMzQxMDksMzQwNzQsMzQwMzAsMzQwOTIsMzQwOTMsMzQwNjcsMzQwNjUsMzQwODMsMzQwODEsMzQwNjgsMzQwMjgsMzQwODUsMzQwNDcsMzQwNTQsMzQ2OTAsMzQ2NzYsMzQ2NzgsMzQ2NTYsMzQ2NjIsMzQ2ODAsMzQ2NjQs''@;'; put 'put ''MzQ2NDksMzQ2NDcsMzQ2MzYsMzQ2NDMsMzQ5MDcsMzQ5MDksMzUwODgsMzUwNzksMzUwOTAsMzUwOTEsMzUwOTMsMzUwODIsMzU1MTYsMzU1MzgsMzU1MjcsMzU1MjQsMzU0NzcsMzU1MzEsMzU1NzYsMzU1MDYsMzU1MjksMzU1MjIsMzU1MTksMzU1MDQsMzU1NDIsMzU1MzMsMzU1MTAsMzU1''@;'; put 'put ''MTMsMzU1NDcsMzU5MTYsMzU5MTgsMzU5NDgsMzYwNjQsMzYwNjIsMzYwNzAsMzYwNjgsMzYwNzYsMzYwNzcsMzYwNjYsMzYwNjcsMzYwNjAsMzYwNzQsMzYwNjUsMzYyMDUsMzYyNTUsMzYyNTksMzYzOTUsMzYzNjgsMzYzODEsMzYzODYsMzYzNjcsMzYzOTMsMzYzODMsMzYzODUsMzYzODIs''@;'; put 'put ''MzY1MzgsMzY2MzcsMzY2MzUsMzY2MzksMzY2NDksMzY2NDYsMzY2NTAsMzY2MzYsMzY2MzgsMzY2NDUsMzY5NjksMzY5NzQsMzY5NjgsMzY5NzMsMzY5ODMsMzcxNjgsMzcxNjUsMzcxNTksMzcxNjksMzcyNTUsMzcyNTcsMzcyNTksMzcyNTEsMzc1NzMsMzc1NjMsMzc1NTksMzc2MTAsMzc1''@;'; put 'put ''NDgsMzc2MDQsMzc1NjksMzc1NTUsMzc1NjQsMzc1ODYsMzc1NzUsMzc2MTYsMzc1NTQsMzgzMTcsMzgzMjEsMzg2NjAsMzg2NjIsMzg2NjMsMzg2NjUsMzg3NTIsMzg3OTcsMzg3OTUsMzg3OTksMzg5NDUsMzg5NTUsMzg5NDAsMzkwOTEsMzkxNzgsMzkxODcsMzkxODYsMzkxOTIsMzkzODks''@;'; put 'put ''MzkzNzYsMzkzOTEsMzkzODcsMzkzNzcsMzkzODEsMzkzNzgsMzkzODUsMzk2MDcsMzk2NjIsMzk2NjMsMzk3MTksMzk3NDksMzk3NDgsMzk3OTksMzk3OTEsNDAxOTgsNDAyMDEsNDAxOTUsNDA2MTcsNDA2MzgsNDA2NTQsMjI2OTYsNDA3ODYsMjA3NTQsMjA3NjAsMjA3NTYsMjA3NTIsMjA3''@;'; put 'put ''NTcsMjA4NjQsMjA5MDYsMjA5NTcsMjExMzcsMjExMzksMjEyMzUsMjIxMDUsMjIxMjMsMjIxMzcsMjIxMjEsMjIxMTYsMjIxMzYsMjIxMjIsMjIxMjAsMjIxMTcsMjIxMjksMjIxMjcsMjIxMjQsMjIxMTQsMjIxMzQsMjI3MjEsMjI3MTgsMjI3MjcsMjI3MjUsMjI4OTQsMjMzMjUsMjMzNDgs''@;'; put 'put ''MjM0MTYsMjM1MzYsMjM1NjYsMjQzOTQsMjUwMTAsMjQ5NzcsMjUwMDEsMjQ5NzAsMjUwMzcsMjUwMTQsMjUwMjIsMjUwMzQsMjUwMzIsMjUxMzYsMjU3OTcsMjU3OTMsMjU4MDMsMjU3ODcsMjU3ODgsMjU4MTgsMjU3OTYsMjU3OTksMjU3OTQsMjU4MDUsMjU3OTEsMjU4MTAsMjU4MTIsMjU3''@;'; put 'put ''OTAsMjU5NzIsMjYzMTAsMjYzMTMsMjYyOTcsMjYzMDgsMjYzMTEsMjYyOTYsMjcxOTcsMjcxOTIsMjcxOTQsMjcyMjUsMjcyNDMsMjcyMjQsMjcxOTMsMjcyMDQsMjcyMzQsMjcyMzMsMjcyMTEsMjcyMDcsMjcxODksMjcyMzEsMjcyMDgsMjc0ODEsMjc1MTEsMjc2NTMsMjg2MTAsMjg1OTMs''@;'; put 'put ''Mjg1NzcsMjg2MTEsMjg1ODAsMjg2MDksMjg1ODMsMjg1OTUsMjg2MDgsMjg2MDEsMjg1OTgsMjg1ODIsMjg1NzYsMjg1OTYsMjkxMTgsMjkxMjksMjkxMzYsMjkxMzgsMjkxMjgsMjkxNDEsMjkxMTMsMjkxMzQsMjkxNDUsMjkxNDgsMjkxMjMsMjkxMjQsMjk1NDQsMjk4NTIsMjk4NTksMjk4''@;'; put 'put ''NDgsMjk4NTUsMjk4NTQsMjk5MjIsMjk5NjQsMjk5NjUsMzAyNjAsMzAyNjQsMzAyNjYsMzA0MzksMzA0MzcsMzA2MjQsMzA2MjIsMzA2MjMsMzA2MjksMzA5NTIsMzA5MzgsMzA5NTYsMzA5NTEsMzExNDIsMzEzMDksMzEzMTAsMzEzMDIsMzEzMDgsMzEzMDcsMzE0MTgsMzE3MDUsMzE3NjEs''@;'; put 'put ''MzE2ODksMzE3MTYsMzE3MDcsMzE3MTMsMzE3MjEsMzE3MTgsMzE5NTcsMzE5NTgsMzIyNjYsMzIyNzMsMzIyNjQsMzIyODMsMzIyOTEsMzIyODYsMzIyODUsMzIyNjUsMzIyNzIsMzI2MzMsMzI2OTAsMzI3NTIsMzI3NTMsMzI3NTAsMzI4MDgsMzMyMDMsMzMxOTMsMzMxOTIsMzMyNzUsMzMy''@;'; put 'put ''ODgsMzMzNjgsMzMzNjksMzQxMjIsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNTMsMzQxMTUsMzQxMjEsMzQxNTcsMzQxNTQsMzQxNDIsMzQ2OTEsMzQ3MTksMzQ3MTgsMzQ3MjIsMzQ3MDEsMzQ5MTMsMzUxMTQsMzUxMjIsMzUxMDksMzUxMTUsMzUxMDUsMzUyNDIsMzUyMzgsMzU1NTgsMzU1Nzgs''@;'; put 'put ''MzU1NjMsMzU1NjksMzU1ODQsMzU1NDgsMzU1NTksMzU1NjYsMzU1ODIsMzU1ODUsMzU1ODYsMzU1NzUsMzU1NjUsMzU1NzEsMzU1NzQsMzU1ODAsMzU5NDcsMzU5NDksMzU5ODcsMzYwODQsMzY0MjAsMzY0MDEsMzY0MDQsMzY0MTgsMzY0MDksMzY0MDUsMzY2NjcsMzY2NTUsMzY2NjQsMzY2''@;'; put 'put ''NTksMzY3NzYsMzY3NzQsMzY5ODEsMzY5ODAsMzY5ODQsMzY5NzgsMzY5ODgsMzY5ODYsMzcxNzIsMzcyNjYsMzc2NjQsMzc2ODYsMzc2MjQsMzc2ODMsMzc2NzksMzc2NjYsMzc2MjgsMzc2NzUsMzc2MzYsMzc2NTgsMzc2NDgsMzc2NzAsMzc2NjUsMzc2NTMsMzc2NzgsMzc2NTcsMzgzMzEs''@;'; put 'put ''Mzg1NjcsMzg1NjgsMzg1NzAsMzg2MTMsMzg2NzAsMzg2NzMsMzg2NzgsMzg2NjksMzg2NzUsMzg2NzEsMzg3NDcsMzg3NDgsMzg3NTgsMzg4MDgsMzg5NjAsMzg5NjgsMzg5NzEsMzg5NjcsMzg5NTcsMzg5NjksMzg5NDgsMzkxODQsMzkyMDgsMzkxOTgsMzkxOTUsMzkyMDEsMzkxOTQsMzk0''@;'; put 'put ''MDUsMzkzOTQsMzk0MDksMzk2MDgsMzk2MTIsMzk2NzUsMzk2NjEsMzk3MjAsMzk4MjUsNDAyMTMsNDAyMjcsNDAyMzAsNDAyMzIsNDAyMTAsNDAyMTksNDA2NjQsNDA2NjAsNDA4NDUsNDA4NjAsMjA3NzgsMjA3NjcsMjA3NjksMjA3ODYsMjEyMzcsMjIxNTgsMjIxNDQsMjIxNjAsMjIxNDks''@;'; put 'put ''MjIxNTEsMjIxNTksMjI3NDEsMjI3MzksMjI3MzcsMjI3MzQsMjMzNDQsMjMzMzgsMjMzMzIsMjM0MTgsMjM2MDcsMjM2NTYsMjM5OTYsMjM5OTQsMjM5OTcsMjM5OTIsMjQxNzEsMjQzOTYsMjQ1MDksMjUwMzMsMjUwMjYsMjUwMzEsMjUwNjIsMjUwMzUsMjUxMzgsMjUxNDAsMjU4MDYsMjU4''@;'; put 'put ''MDIsMjU4MTYsMjU4MjQsMjU4NDAsMjU4MzAsMjU4MzYsMjU4NDEsMjU4MjYsMjU4MzcsMjU5ODYsMjU5ODcsMjYzMjksMjYzMjYsMjcyNjQsMjcyODQsMjcyNjgsMjcyOTgsMjcyOTIsMjczNTUsMjcyOTksMjcyNjIsMjcyODcsMjcyODAsMjcyOTYsMjc0ODQsMjc1NjYsMjc2MTAsMjc2NTYs''@;'; put 'put ''Mjg2MzIsMjg2NTcsMjg2MzksMjg2NDAsMjg2MzUsMjg2NDQsMjg2NTEsMjg2NTUsMjg1NDQsMjg2NTIsMjg2NDEsMjg2NDksMjg2MjksMjg2NTQsMjg2NTYsMjkxNTksMjkxNTEsMjkxNjYsMjkxNTgsMjkxNTcsMjkxNjUsMjkxNjQsMjkxNzIsMjkxNTIsMjkyMzcsMjkyNTQsMjk1NTIsMjk1''@;'; put 'put ''NTQsMjk4NjUsMjk4NzIsMjk4NjIsMjk4NjQsMzAyNzgsMzAyNzQsMzAyODQsMzA0NDIsMzA2NDMsMzA2MzQsMzA2NDAsMzA2MzYsMzA2MzEsMzA2MzcsMzA3MDMsMzA5NjcsMzA5NzAsMzA5NjQsMzA5NTksMzA5NzcsMzExNDMsMzExNDYsMzEzMTksMzE0MjMsMzE3NTEsMzE3NTcsMzE3NDIs''@;'; put 'put ''MzE3MzUsMzE3NTYsMzE3MTIsMzE5NjgsMzE5NjQsMzE5NjYsMzE5NzAsMzE5NjcsMzE5NjEsMzE5NjUsMzIzMDIsMzIzMTgsMzIzMjYsMzIzMTEsMzIzMDYsMzIzMjMsMzIyOTksMzIzMTcsMzIzMDUsMzIzMjUsMzIzMjEsMzIzMDgsMzIzMTMsMzIzMjgsMzIzMDksMzIzMTksMzIzMDMsMzI1''@;'; put 'put ''ODAsMzI3NTUsMzI3NjQsMzI4ODEsMzI4ODIsMzI4ODAsMzI4NzksMzI4ODMsMzMyMjIsMzMyMTksMzMyMTAsMzMyMTgsMzMyMTYsMzMyMTUsMzMyMTMsMzMyMjUsMzMyMTQsMzMyNTYsMzMyODksMzMzOTMsMzQyMTgsMzQxODAsMzQxNzQsMzQyMDQsMzQxOTMsMzQxOTYsMzQyMjMsMzQyMDMs''@;'; put 'put ''MzQxODMsMzQyMTYsMzQxODYsMzQ0MDcsMzQ3NTIsMzQ3NjksMzQ3MzksMzQ3NzAsMzQ3NTgsMzQ3MzEsMzQ3NDcsMzQ3NDYsMzQ3NjAsMzQ3NjMsMzUxMzEsMzUxMjYsMzUxNDAsMzUxMjgsMzUxMzMsMzUyNDQsMzU1OTgsMzU2MDcsMzU2MDksMzU2MTEsMzU1OTQsMzU2MTYsMzU2MTMsMzU1''@;'; put 'put ''ODgsMzU2MDAsMzU5MDUsMzU5MDMsMzU5NTUsMzYwOTAsMzYwOTMsMzYwOTIsMzYwODgsMzYwOTEsMzYyNjQsMzY0MjUsMzY0MjcsMzY0MjQsMzY0MjYsMzY2NzYsMzY2NzAsMzY2NzQsMzY2NzcsMzY2NzEsMzY5OTEsMzY5ODksMzY5OTYsMzY5OTMsMzY5OTQsMzY5OTIsMzcxNzcsMzcyODMs''@;'; put 'put ''MzcyNzgsMzcyNzYsMzc3MDksMzc3NjIsMzc2NzIsMzc3NDksMzc3MDYsMzc3MzMsMzc3MDcsMzc2NTYsMzc3NTgsMzc3NDAsMzc3MjMsMzc3NDQsMzc3MjIsMzc3MTYsMzgzNDYsMzgzNDcsMzgzNDgsMzgzNDQsMzgzNDIsMzg1NzcsMzg1ODQsMzg2MTQsMzg2ODQsMzg2ODYsMzg4MTYsMzg4''@;'; put 'put ''NjcsMzg5ODIsMzkwOTQsMzkyMjEsMzk0MjUsMzk0MjMsMzk4NTQsMzk4NTEsMzk4NTAsMzk4NTMsNDAyNTEsNDAyNTUsNDA1ODcsNDA2NTUsNDA2NzAsNDA2NjgsNDA2NjksNDA2NjcsNDA3NjYsNDA3NzksMjE0NzQsMjIxNjUsMjIxOTAsMjI3NDUsMjI3NDQsMjMzNTIsMjQ0MTMsMjUwNTks''@;'; put 'put ''MjUxMzksMjU4NDQsMjU4NDIsMjU4NTQsMjU4NjIsMjU4NTAsMjU4NTEsMjU4NDcsMjYwMzksMjYzMzIsMjY0MDYsMjczMTUsMjczMDgsMjczMzEsMjczMjMsMjczMjAsMjczMzAsMjczMTAsMjczMTEsMjc0ODcsMjc1MTIsMjc1NjcsMjg2ODEsMjg2ODMsMjg2NzAsMjg2NzgsMjg2NjYsMjg2''@;'; put 'put ''ODksMjg2ODcsMjkxNzksMjkxODAsMjkxODIsMjkxNzYsMjk1NTksMjk1NTcsMjk4NjMsMjk4ODcsMjk5NzMsMzAyOTQsMzAyOTYsMzAyOTAsMzA2NTMsMzA2NTUsMzA2NTEsMzA2NTIsMzA5OTAsMzExNTAsMzEzMjksMzEzMzAsMzEzMjgsMzE0MjgsMzE0MjksMzE3ODcsMzE3ODMsMzE3ODYs''@;'; put 'put ''MzE3NzQsMzE3NzksMzE3NzcsMzE5NzUsMzIzNDAsMzIzNDEsMzIzNTAsMzIzNDYsMzIzNTMsMzIzMzgsMzIzNDUsMzI1ODQsMzI3NjEsMzI3NjMsMzI4ODcsMzI4ODYsMzMyMjksMzMyMzEsMzMyOTAsMzQyNTUsMzQyMTcsMzQyNTMsMzQyNTYsMzQyNDksMzQyMjQsMzQyMzQsMzQyMzMsMzQy''@;'; put 'put ''MTQsMzQ3OTksMzQ3OTYsMzQ4MDIsMzQ3ODQsMzUyMDYsMzUyNTAsMzUzMTYsMzU2MjQsMzU2NDEsMzU2MjgsMzU2MjcsMzU5MjAsMzYxMDEsMzY0NDEsMzY0NTEsMzY0NTQsMzY0NTIsMzY0NDcsMzY0MzcsMzY1NDQsMzY2ODEsMzY2ODUsMzY5OTksMzY5OTUsMzdlMywzNzI5MSwzNzI5Miwz''@;'; put 'put ''NzMyOCwzNzc4MCwzNzc3MCwzNzc4MiwzNzc5NCwzNzgxMSwzNzgwNiwzNzgwNCwzNzgwOCwzNzc4NCwzNzc4NiwzNzc4MywzODM1NiwzODM1OCwzODM1MiwzODM1NywzODYyNiwzODYyMCwzODYxNywzODYxOSwzODYyMiwzODY5MiwzODgxOSwzODgyMiwzODgyOSwzODkwNSwzODk4OSwzODk5''@;'; put 'put ''MSwzODk4OCwzODk5MCwzODk5NSwzOTA5OCwzOTIzMCwzOTIzMSwzOTIyOSwzOTIxNCwzOTMzMywzOTQzOCwzOTYxNywzOTY4MywzOTY4NiwzOTc1OSwzOTc1OCwzOTc1NywzOTg4MiwzOTg4MSwzOTkzMywzOTg4MCwzOTg3Miw0MDI3Myw0MDI4NSw0MDI4OCw0MDY3Miw0MDcyNSw0MDc0OCwy''@;'; put 'put ''MDc4NywyMjE4MSwyMjc1MCwyMjc1MSwyMjc1NCwyMzU0MSw0MDg0OCwyNDMwMCwyNTA3NCwyNTA3OSwyNTA3OCwyNTA3NywyNTg1NiwyNTg3MSwyNjMzNiwyNjMzMywyNzM2NSwyNzM1NywyNzM1NCwyNzM0NywyODY5OSwyODcwMywyODcxMiwyODY5OCwyODcwMSwyODY5MywyODY5NiwyOTE5''@;'; put 'put ''MCwyOTE5NywyOTI3MiwyOTM0NiwyOTU2MCwyOTU2MiwyOTg4NSwyOTg5OCwyOTkyMywzMDA4NywzMDA4NiwzMDMwMywzMDMwNSwzMDY2MywzMTAwMSwzMTE1MywzMTMzOSwzMTMzNywzMTgwNiwzMTgwNywzMTgwMCwzMTgwNSwzMTc5OSwzMTgwOCwzMjM2MywzMjM2NSwzMjM3NywzMjM2MSwz''@;'; put 'put ''MjM2MiwzMjY0NSwzMjM3MSwzMjY5NCwzMjY5NywzMjY5NiwzMzI0MCwzNDI4MSwzNDI2OSwzNDI4MiwzNDI2MSwzNDI3NiwzNDI3NywzNDI5NSwzNDgxMSwzNDgyMSwzNDgyOSwzNDgwOSwzNDgxNCwzNTE2OCwzNTE2NywzNTE1OCwzNTE2NiwzNTY0OSwzNTY3NiwzNTY3MiwzNTY1NywzNTY3''@;'; put 'put ''NCwzNTY2MiwzNTY2MywzNTY1NCwzNTY3MywzNjEwNCwzNjEwNiwzNjQ3NiwzNjQ2NiwzNjQ4NywzNjQ3MCwzNjQ2MCwzNjQ3NCwzNjQ2OCwzNjY5MiwzNjY4NiwzNjc4MSwzNzAwMiwzNzAwMywzNzI5NywzNzI5NCwzNzg1NywzNzg0MSwzNzg1NSwzNzgyNywzNzgzMiwzNzg1MiwzNzg1Mywz''@;'; put 'put ''Nzg0NiwzNzg1OCwzNzgzNywzNzg0OCwzNzg2MCwzNzg0NywzNzg2NCwzODM2NCwzODU4MCwzODYyNywzODY5OCwzODY5NSwzODc1MywzODg3NiwzODkwNywzOTAwNiwzOWUzLDM5MDAzLDM5MTAwLDM5MjM3LDM5MjQxLDM5NDQ2LDM5NDQ5LDM5NjkzLDM5OTEyLDM5OTExLDM5ODk0LDM5ODk5''@;'; put 'put ''LDQwMzI5LDQwMjg5LDQwMzA2LDQwMjk4LDQwMzAwLDQwNTk0LDQwNTk5LDQwNTk1LDQwNjI4LDIxMjQwLDIyMTg0LDIyMTk5LDIyMTk4LDIyMTk2LDIyMjA0LDIyNzU2LDIzMzYwLDIzMzYzLDIzNDIxLDIzNTQyLDI0MDA5LDI1MDgwLDI1MDgyLDI1ODgwLDI1ODc2LDI1ODgxLDI2MzQyLDI2''@;'; put 'put ''NDA3LDI3MzcyLDI4NzM0LDI4NzIwLDI4NzIyLDI5MjAwLDI5NTYzLDI5OTAzLDMwMzA2LDMwMzA5LDMxMDE0LDMxMDE4LDMxMDIwLDMxMDE5LDMxNDMxLDMxNDc4LDMxODIwLDMxODExLDMxODIxLDMxOTgzLDMxOTg0LDM2NzgyLDMyMzgxLDMyMzgwLDMyMzg2LDMyNTg4LDMyNzY4LDMzMjQy''@;'; put 'put ''LDMzMzgyLDM0Mjk5LDM0Mjk3LDM0MzIxLDM0Mjk4LDM0MzEwLDM0MzE1LDM0MzExLDM0MzE0LDM0ODM2LDM0ODM3LDM1MTcyLDM1MjU4LDM1MzIwLDM1Njk2LDM1NjkyLDM1Njg2LDM1Njk1LDM1Njc5LDM1NjkxLDM2MTExLDM2MTA5LDM2NDg5LDM2NDgxLDM2NDg1LDM2NDgyLDM3MzAwLDM3''@;'; put 'put ''MzIzLDM3OTEyLDM3ODkxLDM3ODg1LDM4MzY5LDM4NzA0LDM5MTA4LDM5MjUwLDM5MjQ5LDM5MzM2LDM5NDY3LDM5NDcyLDM5NDc5LDM5NDc3LDM5OTU1LDM5OTQ5LDQwNTY5LDQwNjI5LDQwNjgwLDQwNzUxLDQwNzk5LDQwODAzLDQwODAxLDIwNzkxLDIwNzkyLDIyMjA5LDIyMjA4LDIyMjEw''@;'; put 'put ''LDIyODA0LDIzNjYwLDI0MDEzLDI1MDg0LDI1MDg2LDI1ODg1LDI1ODg0LDI2MDA1LDI2MzQ1LDI3Mzg3LDI3Mzk2LDI3Mzg2LDI3NTcwLDI4NzQ4LDI5MjExLDI5MzUxLDI5OTEwLDI5OTA4LDMwMzEzLDMwNjc1LDMxODI0LDMyMzk5LDMyMzk2LDMyNzAwLDM0MzI3LDM0MzQ5LDM0MzMwLDM0''@;'; put 'put ''ODUxLDM0ODUwLDM0ODQ5LDM0ODQ3LDM1MTc4LDM1MTgwLDM1MjYxLDM1NzAwLDM1NzAzLDM1NzA5LDM2MTE1LDM2NDkwLDM2NDkzLDM2NDkxLDM2NzAzLDM2NzgzLDM3MzA2LDM3OTM0LDM3OTM5LDM3OTQxLDM3OTQ2LDM3OTQ0LDM3OTM4LDM3OTMxLDM4MzcwLDM4NzEyLDM4NzEzLDM4NzA2''@;'; put 'put ''LDM4OTExLDM5MDE1LDM5MDEzLDM5MjU1LDM5NDkzLDM5NDkxLDM5NDg4LDM5NDg2LDM5NjMxLDM5NzY0LDM5NzYxLDM5OTgxLDM5OTczLDQwMzY3LDQwMzcyLDQwMzg2LDQwMzc2LDQwNjA1LDQwNjg3LDQwNzI5LDQwNzk2LDQwODA2LDQwODA3LDIwNzk2LDIwNzk1LDIyMjE2LDIyMjE4LDIy''@;'; put 'put ''MjE3LDIzNDIzLDI0MDIwLDI0MDE4LDI0Mzk4LDI1MDg3LDI1ODkyLDI3NDAyLDI3NDg5LDI4NzUzLDI4NzYwLDI5NTY4LDI5OTI0LDMwMDkwLDMwMzE4LDMwMzE2LDMxMTU1LDMxODQwLDMxODM5LDMyODk0LDMyODkzLDMzMjQ3LDM1MTg2LDM1MTgzLDM1MzI0LDM1NzEyLDM2MTE4LDM2MTE5''@;'; put 'put ''LDM2NDk3LDM2NDk5LDM2NzA1LDM3MTkyLDM3OTU2LDM3OTY5LDM3OTcwLDM4NzE3LDM4NzE4LDM4ODUxLDM4ODQ5LDM5MDE5LDM5MjUzLDM5NTA5LDM5NTAxLDM5NjM0LDM5NzA2LDQwMDA5LDM5OTg1LDM5OTk4LDM5OTk1LDQwNDAzLDQwNDA3LDQwNzU2LDQwODEyLDQwODEwLDQwODUyLDIy''@;'; put 'put ''MjIwLDI0MDIyLDI1MDg4LDI1ODkxLDI1ODk5LDI1ODk4LDI2MzQ4LDI3NDA4LDI5OTE0LDMxNDM0LDMxODQ0LDMxODQzLDMxODQ1LDMyNDAzLDMyNDA2LDMyNDA0LDMzMjUwLDM0MzYwLDM0MzY3LDM0ODY1LDM1NzIyLDM3MDA4LDM3MDA3LDM3OTg3LDM3OTg0LDM3OTg4LDM4NzYwLDM5MDIz''@;'; put 'put ''LDM5MjYwLDM5NTE0LDM5NTE1LDM5NTExLDM5NjM1LDM5NjM2LDM5NjMzLDQwMDIwLDQwMDIzLDQwMDIyLDQwNDIxLDQwNjA3LDQwNjkyLDIyMjI1LDIyNzYxLDI1OTAwLDI4NzY2LDMwMzIxLDMwMzIyLDMwNjc5LDMyNTkyLDMyNjQ4LDM0ODcwLDM0ODczLDM0OTE0LDM1NzMxLDM1NzMwLDM1''@;'; put 'put ''NzM0LDMzMzk5LDM2MTIzLDM3MzEyLDM3OTk0LDM4NzIyLDM4NzI4LDM4NzI0LDM4ODU0LDM5MDI0LDM5NTE5LDM5NzE0LDM5NzY4LDQwMDMxLDQwNDQxLDQwNDQyLDQwNTcyLDQwNTczLDQwNzExLDQwODIzLDQwODE4LDI0MzA3LDI3NDE0LDI4NzcxLDMxODUyLDMxODU0LDM0ODc1LDM1MjY0''@;'; put 'put ''LDM2NTEzLDM3MzEzLDM4MDAyLDM4ZTMsMzkwMjUsMzkyNjIsMzk2MzgsMzk3MTUsNDA2NTIsMjg3NzIsMzA2ODIsMzU3MzgsMzgwMDcsMzg4NTcsMzk1MjIsMzk1MjUsMzI0MTIsMzU3NDAsMzY1MjIsMzczMTcsMzgwMTMsMzgwMTQsMzgwMTIsNDAwNTUsNDAwNTYsNDA2OTUsMzU5MjQsMzgw''@;'; put 'put ''MTUsNDA0NzQsMjkyMjQsMzk1MzAsMzk3MjksNDA0NzUsNDA0NzgsMzE4NTgsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDg1NjAsODU2MSw4NTYyLDg1NjMs''@;'; put 'put ''ODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksMjAwMjIsMjAwMzEsMjAxMDEsMjAxMjgsMjA4NjYsMjA4ODYsMjA5MDcsMjEyNDEsMjEzMDQsMjEzNTMsMjE0MzAsMjI3OTQsMjM0MjQsMjQwMjcsMTIwODMsMjQxOTEsMjQzMDgsMjQ0MDAsMjQ0MTcsMjU5MDgsMjYwODAsMzAwOTgsMzAz''@;'; put 'put ''MjYsMzY3ODksMzg1ODIsMTY4LDcxMCwxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw2NTMzOSw2NTM0MSwxMDA0NSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2''@;'; put 'put ''MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwx''@;'; put 'put ''MjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQx''@;'; put 'put ''OCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwx''@;'; put 'put ''MjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4''@;'; put 'put ''NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywx''@;'; put 'put ''MjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYs''@;'; put 'put ''MTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgs''@;'; put 'put ''MTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4Njc5LDg2MzIsODYzMywxMjc1MSwxMzEyNzYsMjAwNTgsMTMxMjEw''@;'; put 'put ''LDIwOTk0LDE3NTUzLDQwODgwLDIwODcyLDQwODgxLDE2MTI4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSwxMjQ0MywxMjQ0NCwxMTkwNCwxMTkwOCwxMTkxMCwxMTkxMSwxMTkxMiwxMTkxNCwxMTkx''@;'; put 'put ''NiwxMTkxNywxMTkyNSwxMTkzMiwxMTkzMywxMTk0MSwxMTk0MywxMTk0NiwxMTk0OCwxMTk1MCwxMTk1OCwxMTk2NCwxMTk2NiwxMTk3NCwxMTk3OCwxMTk4MCwxMTk4MSwxMTk4MywxMTk5MCwxMTk5MSwxMTk5OCwxMjAwMyxudWxsLG51bGwsbnVsbCw2NDMsNTkyLDYwMyw1OTYsNjI5LDMz''@;'; put 'put ''OSwyNDgsMzMxLDY1MCw2MTgsMjAwMzQsMjAwNjAsMjA5ODEsMjEyNzQsMjEzNzgsMTk5NzUsMTk5ODAsMjAwMzksMjAxMDksMjIyMzEsNjQwMTIsMjM2NjIsMjQ0MzUsMTk5ODMsMjA4NzEsMTk5ODIsMjAwMTQsMjAxMTUsMjAxNjIsMjAxNjksMjAxNjgsMjA4ODgsMjEyNDQsMjEzNTYsMjE0''@;'; put 'put ''MzMsMjIzMDQsMjI3ODcsMjI4MjgsMjM1NjgsMjQwNjMsMjYwODEsMjc1NzEsMjc1OTYsMjc2NjgsMjkyNDcsMjAwMTcsMjAwMjgsMjAyMDAsMjAxODgsMjAyMDEsMjAxOTMsMjAxODksMjAxODYsMjEwMDQsMjEyNzYsMjEzMjQsMjIzMDYsMjIzMDcsMjI4MDcsMjI4MzEsMjM0MjUsMjM0Mjgs''@;'; put 'put ''MjM1NzAsMjM2MTEsMjM2NjgsMjM2NjcsMjQwNjgsMjQxOTIsMjQxOTQsMjQ1MjEsMjUwOTcsMjUxNjgsMjc2NjksMjc3MDIsMjc3MTUsMjc3MTEsMjc3MDcsMjkzNTgsMjkzNjAsMjk1NzgsMzExNjAsMzI5MDYsMzg0MzAsMjAyMzgsMjAyNDgsMjAyNjgsMjAyMTMsMjAyNDQsMjAyMDksMjAy''@;'; put 'put ''MjQsMjAyMTUsMjAyMzIsMjAyNTMsMjAyMjYsMjAyMjksMjAyNTgsMjAyNDMsMjAyMjgsMjAyMTIsMjAyNDIsMjA5MTMsMjEwMTEsMjEwMDEsMjEwMDgsMjExNTgsMjEyODIsMjEyNzksMjEzMjUsMjEzODYsMjE1MTEsMjIyNDEsMjIyMzksMjIzMTgsMjIzMTQsMjIzMjQsMjI4NDQsMjI5MTIs''@;'; put 'put ''MjI5MDgsMjI5MTcsMjI5MDcsMjI5MTAsMjI5MDMsMjI5MTEsMjMzODIsMjM1NzMsMjM1ODksMjM2NzYsMjM2NzQsMjM2NzUsMjM2NzgsMjQwMzEsMjQxODEsMjQxOTYsMjQzMjIsMjQzNDYsMjQ0MzYsMjQ1MzMsMjQ1MzIsMjQ1MjcsMjUxODAsMjUxODIsMjUxODgsMjUxODUsMjUxOTAsMjUx''@;'; put 'put ''ODYsMjUxNzcsMjUxODQsMjUxNzgsMjUxODksMjYwOTUsMjYwOTQsMjY0MzAsMjY0MjUsMjY0MjQsMjY0MjcsMjY0MjYsMjY0MzEsMjY0MjgsMjY0MTksMjc2NzIsMjc3MTgsMjc3MzAsMjc3NDAsMjc3MjcsMjc3MjIsMjc3MzIsMjc3MjMsMjc3MjQsMjg3ODUsMjkyNzgsMjkzNjQsMjkzNjUs''@;'; put 'put ''Mjk1ODIsMjk5OTQsMzAzMzUsMzEzNDksMzI1OTMsMzM0MDAsMzM0MDQsMzM0MDgsMzM0MDUsMzM0MDcsMzQzODEsMzUxOTgsMzcwMTcsMzcwMTUsMzcwMTYsMzcwMTksMzcwMTIsMzg0MzQsMzg0MzYsMzg0MzIsMzg0MzUsMjAzMTAsMjAyODMsMjAzMjIsMjAyOTcsMjAzMDcsMjAzMjQsMjAy''@;'; put 'put ''ODYsMjAzMjcsMjAzMDYsMjAzMTksMjAyODksMjAzMTIsMjAyNjksMjAyNzUsMjAyODcsMjAzMjEsMjA4NzksMjA5MjEsMjEwMjAsMjEwMjIsMjEwMjUsMjExNjUsMjExNjYsMjEyNTcsMjEzNDcsMjEzNjIsMjEzOTAsMjEzOTEsMjE1NTIsMjE1NTksMjE1NDYsMjE1ODgsMjE1NzMsMjE1Mjks''@;'; put 'put ''MjE1MzIsMjE1NDEsMjE1MjgsMjE1NjUsMjE1ODMsMjE1NjksMjE1NDQsMjE1NDAsMjE1NzUsMjIyNTQsMjIyNDcsMjIyNDUsMjIzMzcsMjIzNDEsMjIzNDgsMjIzNDUsMjIzNDcsMjIzNTQsMjI3OTAsMjI4NDgsMjI5NTAsMjI5MzYsMjI5NDQsMjI5MzUsMjI5MjYsMjI5NDYsMjI5MjgsMjI5''@;'; put 'put ''MjcsMjI5NTEsMjI5NDUsMjM0MzgsMjM0NDIsMjM1OTIsMjM1OTQsMjM2OTMsMjM2OTUsMjM2ODgsMjM2OTEsMjM2ODksMjM2OTgsMjM2OTAsMjM2ODYsMjM2OTksMjM3MDEsMjQwMzIsMjQwNzQsMjQwNzgsMjQyMDMsMjQyMDEsMjQyMDQsMjQyMDAsMjQyMDUsMjQzMjUsMjQzNDksMjQ0NDAs''@;'; put 'put ''MjQ0MzgsMjQ1MzAsMjQ1MjksMjQ1MjgsMjQ1NTcsMjQ1NTIsMjQ1NTgsMjQ1NjMsMjQ1NDUsMjQ1NDgsMjQ1NDcsMjQ1NzAsMjQ1NTksMjQ1NjcsMjQ1NzEsMjQ1NzYsMjQ1NjQsMjUxNDYsMjUyMTksMjUyMjgsMjUyMzAsMjUyMzEsMjUyMzYsMjUyMjMsMjUyMDEsMjUyMTEsMjUyMTAsMjUy''@;'; put 'put ''MDAsMjUyMTcsMjUyMjQsMjUyMDcsMjUyMTMsMjUyMDIsMjUyMDQsMjU5MTEsMjYwOTYsMjYxMDAsMjYwOTksMjYwOTgsMjYxMDEsMjY0MzcsMjY0MzksMjY0NTcsMjY0NTMsMjY0NDQsMjY0NDAsMjY0NjEsMjY0NDUsMjY0NTgsMjY0NDMsMjc2MDAsMjc2NzMsMjc2NzQsMjc3NjgsMjc3NTEs''@;'; put 'put ''Mjc3NTUsMjc3ODAsMjc3ODcsMjc3OTEsMjc3NjEsMjc3NTksMjc3NTMsMjc4MDIsMjc3NTcsMjc3ODMsMjc3OTcsMjc4MDQsMjc3NTAsMjc3NjMsMjc3NDksMjc3NzEsMjc3OTAsMjg3ODgsMjg3OTQsMjkyODMsMjkzNzUsMjkzNzMsMjkzNzksMjkzODIsMjkzNzcsMjkzNzAsMjkzODEsMjk1''@;'; put 'put ''ODksMjk1OTEsMjk1ODcsMjk1ODgsMjk1ODYsMzAwMTAsMzAwMDksMzAxMDAsMzAxMDEsMzAzMzcsMzEwMzcsMzI4MjAsMzI5MTcsMzI5MjEsMzI5MTIsMzI5MTQsMzI5MjQsMzM0MjQsMzM0MjMsMzM0MTMsMzM0MjIsMzM0MjUsMzM0MjcsMzM0MTgsMzM0MTEsMzM0MTIsMzU5NjAsMzY4MDks''@;'; put 'put ''MzY3OTksMzcwMjMsMzcwMjUsMzcwMjksMzcwMjIsMzcwMzEsMzcwMjQsMzg0NDgsMzg0NDAsMzg0NDcsMzg0NDUsMjAwMTksMjAzNzYsMjAzNDgsMjAzNTcsMjAzNDksMjAzNTIsMjAzNTksMjAzNDIsMjAzNDAsMjAzNjEsMjAzNTYsMjAzNDMsMjAzMDAsMjAzNzUsMjAzMzAsMjAzNzgsMjAz''@;'; put 'put ''NDUsMjAzNTMsMjAzNDQsMjAzNjgsMjAzODAsMjAzNzIsMjAzODIsMjAzNzAsMjAzNTQsMjAzNzMsMjAzMzEsMjAzMzQsMjA4OTQsMjA5MjQsMjA5MjYsMjEwNDUsMjEwNDIsMjEwNDMsMjEwNjIsMjEwNDEsMjExODAsMjEyNTgsMjEyNTksMjEzMDgsMjEzOTQsMjEzOTYsMjE2MzksMjE2MzEs''@;'; put 'put ''MjE2MzMsMjE2NDksMjE2MzQsMjE2NDAsMjE2MTEsMjE2MjYsMjE2MzAsMjE2MDUsMjE2MTIsMjE2MjAsMjE2MDYsMjE2NDUsMjE2MTUsMjE2MDEsMjE2MDAsMjE2NTYsMjE2MDMsMjE2MDcsMjE2MDQsMjIyNjMsMjIyNjUsMjIzODMsMjIzODYsMjIzODEsMjIzNzksMjIzODUsMjIzODQsMjIz''@;'; put 'put ''OTAsMjI0MDAsMjIzODksMjIzOTUsMjIzODcsMjIzODgsMjIzNzAsMjIzNzYsMjIzOTcsMjI3OTYsMjI4NTMsMjI5NjUsMjI5NzAsMjI5OTEsMjI5OTAsMjI5NjIsMjI5ODgsMjI5NzcsMjI5NjYsMjI5NzIsMjI5NzksMjI5OTgsMjI5NjEsMjI5NzMsMjI5NzYsMjI5ODQsMjI5NjQsMjI5ODMs''@;'; put 'put ''MjMzOTQsMjMzOTcsMjM0NDMsMjM0NDUsMjM2MjAsMjM2MjMsMjM3MjYsMjM3MTYsMjM3MTIsMjM3MzMsMjM3MjcsMjM3MjAsMjM3MjQsMjM3MTEsMjM3MTUsMjM3MjUsMjM3MTQsMjM3MjIsMjM3MTksMjM3MDksMjM3MTcsMjM3MzQsMjM3MjgsMjM3MTgsMjQwODcsMjQwODQsMjQwODksMjQz''@;'; put 'put ''NjAsMjQzNTQsMjQzNTUsMjQzNTYsMjQ0MDQsMjQ0NTAsMjQ0NDYsMjQ0NDUsMjQ1NDIsMjQ1NDksMjQ2MjEsMjQ2MTQsMjQ2MDEsMjQ2MjYsMjQ1ODcsMjQ2MjgsMjQ1ODYsMjQ1OTksMjQ2MjcsMjQ2MDIsMjQ2MDYsMjQ2MjAsMjQ2MTAsMjQ1ODksMjQ1OTIsMjQ2MjIsMjQ1OTUsMjQ1OTMs''@;'; put 'put ''MjQ1ODgsMjQ1ODUsMjQ2MDQsMjUxMDgsMjUxNDksMjUyNjEsMjUyNjgsMjUyOTcsMjUyNzgsMjUyNTgsMjUyNzAsMjUyOTAsMjUyNjIsMjUyNjcsMjUyNjMsMjUyNzUsMjUyNTcsMjUyNjQsMjUyNzIsMjU5MTcsMjYwMjQsMjYwNDMsMjYxMjEsMjYxMDgsMjYxMTYsMjYxMzAsMjYxMjAsMjYx''@;'; put 'put ''MDcsMjYxMTUsMjYxMjMsMjYxMjUsMjYxMTcsMjYxMDksMjYxMjksMjYxMjgsMjYzNTgsMjYzNzgsMjY1MDEsMjY0NzYsMjY1MTAsMjY1MTQsMjY0ODYsMjY0OTEsMjY1MjAsMjY1MDIsMjY1MDAsMjY0ODQsMjY1MDksMjY1MDgsMjY0OTAsMjY1MjcsMjY1MTMsMjY1MjEsMjY0OTksMjY0OTMs''@;'; put 'put ''MjY0OTcsMjY0ODgsMjY0ODksMjY1MTYsMjc0MjksMjc1MjAsMjc1MTgsMjc2MTQsMjc2NzcsMjc3OTUsMjc4ODQsMjc4ODMsMjc4ODYsMjc4NjUsMjc4MzAsMjc4NjAsMjc4MjEsMjc4NzksMjc4MzEsMjc4NTYsMjc4NDIsMjc4MzQsMjc4NDMsMjc4NDYsMjc4ODUsMjc4OTAsMjc4NTgsMjc4''@;'; put 'put ''NjksMjc4MjgsMjc3ODYsMjc4MDUsMjc3NzYsMjc4NzAsMjc4NDAsMjc5NTIsMjc4NTMsMjc4NDcsMjc4MjQsMjc4OTcsMjc4NTUsMjc4ODEsMjc4NTcsMjg4MjAsMjg4MjQsMjg4MDUsMjg4MTksMjg4MDYsMjg4MDQsMjg4MTcsMjg4MjIsMjg4MDIsMjg4MjYsMjg4MDMsMjkyOTAsMjkzOTgs''@;'; put 'put ''MjkzODcsMjk0MDAsMjkzODUsMjk0MDQsMjkzOTQsMjkzOTYsMjk0MDIsMjkzODgsMjkzOTMsMjk2MDQsMjk2MDEsMjk2MTMsMjk2MDYsMjk2MDIsMjk2MDAsMjk2MTIsMjk1OTcsMjk5MTcsMjk5MjgsMzAwMTUsMzAwMTYsMzAwMTQsMzAwOTIsMzAxMDQsMzAzODMsMzA0NTEsMzA0NDksMzA0''@;'; put 'put ''NDgsMzA0NTMsMzA3MTIsMzA3MTYsMzA3MTMsMzA3MTUsMzA3MTQsMzA3MTEsMzEwNDIsMzEwMzksMzExNzMsMzEzNTIsMzEzNTUsMzE0ODMsMzE4NjEsMzE5OTcsMzI4MjEsMzI5MTEsMzI5NDIsMzI5MzEsMzI5NTIsMzI5NDksMzI5NDEsMzMzMTIsMzM0NDAsMzM0NzIsMzM0NTEsMzM0MzQs''@;'; put 'put ''MzM0MzIsMzM0MzUsMzM0NjEsMzM0NDcsMzM0NTQsMzM0NjgsMzM0MzgsMzM0NjYsMzM0NjAsMzM0NDgsMzM0NDEsMzM0NDksMzM0NzQsMzM0NDQsMzM0NzUsMzM0NjIsMzM0NDIsMzQ0MTYsMzQ0MTUsMzQ0MTMsMzQ0MTQsMzU5MjYsMzY4MTgsMzY4MTEsMzY4MTksMzY4MTMsMzY4MjIsMzY4''@;'; put 'put ''MjEsMzY4MjMsMzcwNDIsMzcwNDQsMzcwMzksMzcwNDMsMzcwNDAsMzg0NTcsMzg0NjEsMzg0NjAsMzg0NTgsMzg0NjcsMjA0MjksMjA0MjEsMjA0MzUsMjA0MDIsMjA0MjUsMjA0MjcsMjA0MTcsMjA0MzYsMjA0NDQsMjA0NDEsMjA0MTEsMjA0MDMsMjA0NDMsMjA0MjMsMjA0MzgsMjA0MTAs''@;'; put 'put ''MjA0MTYsMjA0MDksMjA0NjAsMjEwNjAsMjEwNjUsMjExODQsMjExODYsMjEzMDksMjEzNzIsMjEzOTksMjEzOTgsMjE0MDEsMjE0MDAsMjE2OTAsMjE2NjUsMjE2NzcsMjE2NjksMjE3MTEsMjE2OTksMzM1NDksMjE2ODcsMjE2NzgsMjE3MTgsMjE2ODYsMjE3MDEsMjE3MDIsMjE2NjQsMjE2''@;'; put 'put ''MTYsMjE2OTIsMjE2NjYsMjE2OTQsMjE2MTgsMjE3MjYsMjE2ODAsMjI0NTMsMjI0MzAsMjI0MzEsMjI0MzYsMjI0MTIsMjI0MjMsMjI0MjksMjI0MjcsMjI0MjAsMjI0MjQsMjI0MTUsMjI0MjUsMjI0MzcsMjI0MjYsMjI0MjEsMjI3NzIsMjI3OTcsMjI4NjcsMjMwMDksMjMwMDYsMjMwMjIs''@;'; put 'put ''MjMwNDAsMjMwMjUsMjMwMDUsMjMwMzQsMjMwMzcsMjMwMzYsMjMwMzAsMjMwMTIsMjMwMjYsMjMwMzEsMjMwMDMsMjMwMTcsMjMwMjcsMjMwMjksMjMwMDgsMjMwMzgsMjMwMjgsMjMwMjEsMjM0NjQsMjM2MjgsMjM3NjAsMjM3NjgsMjM3NTYsMjM3NjcsMjM3NTUsMjM3NzEsMjM3NzQsMjM3''@;'; put 'put ''NzAsMjM3NTMsMjM3NTEsMjM3NTQsMjM3NjYsMjM3NjMsMjM3NjQsMjM3NTksMjM3NTIsMjM3NTAsMjM3NTgsMjM3NzUsMjM4MDAsMjQwNTcsMjQwOTcsMjQwOTgsMjQwOTksMjQwOTYsMjQxMDAsMjQyNDAsMjQyMjgsMjQyMjYsMjQyMTksMjQyMjcsMjQyMjksMjQzMjcsMjQzNjYsMjQ0MDYs''@;'; put 'put ''MjQ0NTQsMjQ2MzEsMjQ2MzMsMjQ2NjAsMjQ2OTAsMjQ2NzAsMjQ2NDUsMjQ2NTksMjQ2NDcsMjQ2NDksMjQ2NjcsMjQ2NTIsMjQ2NDAsMjQ2NDIsMjQ2NzEsMjQ2MTIsMjQ2NDQsMjQ2NjQsMjQ2NzgsMjQ2ODYsMjUxNTQsMjUxNTUsMjUyOTUsMjUzNTcsMjUzNTUsMjUzMzMsMjUzNTgsMjUz''@;'; put 'put ''NDcsMjUzMjMsMjUzMzcsMjUzNTksMjUzNTYsMjUzMzYsMjUzMzQsMjUzNDQsMjUzNjMsMjUzNjQsMjUzMzgsMjUzNjUsMjUzMzksMjUzMjgsMjU5MjEsMjU5MjMsMjYwMjYsMjYwNDcsMjYxNjYsMjYxNDUsMjYxNjIsMjYxNjUsMjYxNDAsMjYxNTAsMjYxNDYsMjYxNjMsMjYxNTUsMjYxNzAs''@;'; put 'put ''MjYxNDEsMjYxNjQsMjYxNjksMjYxNTgsMjYzODMsMjYzODQsMjY1NjEsMjY2MTAsMjY1NjgsMjY1NTQsMjY1ODgsMjY1NTUsMjY2MTYsMjY1ODQsMjY1NjAsMjY1NTEsMjY1NjUsMjY2MDMsMjY1OTYsMjY1OTEsMjY1NDksMjY1NzMsMjY1NDcsMjY2MTUsMjY2MTQsMjY2MDYsMjY1OTUsMjY1''@;'; put 'put ''NjIsMjY1NTMsMjY1NzQsMjY1OTksMjY2MDgsMjY1NDYsMjY2MjAsMjY1NjYsMjY2MDUsMjY1NzIsMjY1NDIsMjY1OTgsMjY1ODcsMjY2MTgsMjY1NjksMjY1NzAsMjY1NjMsMjY2MDIsMjY1NzEsMjc0MzIsMjc1MjIsMjc1MjQsMjc1NzQsMjc2MDYsMjc2MDgsMjc2MTYsMjc2ODAsMjc2ODEs''@;'; put 'put ''Mjc5NDQsMjc5NTYsMjc5NDksMjc5MzUsMjc5NjQsMjc5NjcsMjc5MjIsMjc5MTQsMjc4NjYsMjc5NTUsMjc5MDgsMjc5MjksMjc5NjIsMjc5MzAsMjc5MjEsMjc5MDQsMjc5MzMsMjc5NzAsMjc5MDUsMjc5MjgsMjc5NTksMjc5MDcsMjc5MTksMjc5NjgsMjc5MTEsMjc5MzYsMjc5NDgsMjc5''@;'; put 'put ''MTIsMjc5MzgsMjc5MTMsMjc5MjAsMjg4NTUsMjg4MzEsMjg4NjIsMjg4NDksMjg4NDgsMjg4MzMsMjg4NTIsMjg4NTMsMjg4NDEsMjkyNDksMjkyNTcsMjkyNTgsMjkyOTIsMjkyOTYsMjkyOTksMjkyOTQsMjkzODYsMjk0MTIsMjk0MTYsMjk0MTksMjk0MDcsMjk0MTgsMjk0MTQsMjk0MTEs''@;'; put 'put ''Mjk1NzMsMjk2NDQsMjk2MzQsMjk2NDAsMjk2MzcsMjk2MjUsMjk2MjIsMjk2MjEsMjk2MjAsMjk2NzUsMjk2MzEsMjk2MzksMjk2MzAsMjk2MzUsMjk2MzgsMjk2MjQsMjk2NDMsMjk5MzIsMjk5MzQsMjk5OTgsMzAwMjMsMzAwMjQsMzAxMTksMzAxMjIsMzAzMjksMzA0MDQsMzA0NzIsMzA0''@;'; put 'put ''NjcsMzA0NjgsMzA0NjksMzA0NzQsMzA0NTUsMzA0NTksMzA0NTgsMzA2OTUsMzA2OTYsMzA3MjYsMzA3MzcsMzA3MzgsMzA3MjUsMzA3MzYsMzA3MzUsMzA3MzQsMzA3MjksMzA3MjMsMzA3MzksMzEwNTAsMzEwNTIsMzEwNTEsMzEwNDUsMzEwNDQsMzExODksMzExODEsMzExODMsMzExOTAs''@;'; put 'put ''MzExODIsMzEzNjAsMzEzNTgsMzE0NDEsMzE0ODgsMzE0ODksMzE4NjYsMzE4NjQsMzE4NjUsMzE4NzEsMzE4NzIsMzE4NzMsMzIwMDMsMzIwMDgsMzIwMDEsMzI2MDAsMzI2NTcsMzI2NTMsMzI3MDIsMzI3NzUsMzI3ODIsMzI3ODMsMzI3ODgsMzI4MjMsMzI5ODQsMzI5NjcsMzI5OTIsMzI5''@;'; put 'put ''NzcsMzI5NjgsMzI5NjIsMzI5NzYsMzI5NjUsMzI5OTUsMzI5ODUsMzI5ODgsMzI5NzAsMzI5ODEsMzI5NjksMzI5NzUsMzI5ODMsMzI5OTgsMzI5NzMsMzMyNzksMzMzMTMsMzM0MjgsMzM0OTcsMzM1MzQsMzM1MjksMzM1NDMsMzM1MTIsMzM1MzYsMzM0OTMsMzM1OTQsMzM1MTUsMzM0OTQs''@;'; put 'put ''MzM1MjQsMzM1MTYsMzM1MDUsMzM1MjIsMzM1MjUsMzM1NDgsMzM1MzEsMzM1MjYsMzM1MjAsMzM1MTQsMzM1MDgsMzM1MDQsMzM1MzAsMzM1MjMsMzM1MTcsMzQ0MjMsMzQ0MjAsMzQ0MjgsMzQ0MTksMzQ4ODEsMzQ4OTQsMzQ5MTksMzQ5MjIsMzQ5MjEsMzUyODMsMzUzMzIsMzUzMzUsMzYy''@;'; put 'put ''MTAsMzY4MzUsMzY4MzMsMzY4NDYsMzY4MzIsMzcxMDUsMzcwNTMsMzcwNTUsMzcwNzcsMzcwNjEsMzcwNTQsMzcwNjMsMzcwNjcsMzcwNjQsMzczMzIsMzczMzEsMzg0ODQsMzg0NzksMzg0ODEsMzg0ODMsMzg0NzQsMzg0NzgsMjA1MTAsMjA0ODUsMjA0ODcsMjA0OTksMjA1MTQsMjA1Mjgs''@;'; put 'put ''MjA1MDcsMjA0NjksMjA0NjgsMjA1MzEsMjA1MzUsMjA1MjQsMjA0NzAsMjA0NzEsMjA1MDMsMjA1MDgsMjA1MTIsMjA1MTksMjA1MzMsMjA1MjcsMjA1MjksMjA0OTQsMjA4MjYsMjA4ODQsMjA4ODMsMjA5MzgsMjA5MzIsMjA5MzMsMjA5MzYsMjA5NDIsMjEwODksMjEwODIsMjEwNzQsMjEw''@;'; put 'put ''ODYsMjEwODcsMjEwNzcsMjEwOTAsMjExOTcsMjEyNjIsMjE0MDYsMjE3OTgsMjE3MzAsMjE3ODMsMjE3NzgsMjE3MzUsMjE3NDcsMjE3MzIsMjE3ODYsMjE3NTksMjE3NjQsMjE3NjgsMjE3MzksMjE3NzcsMjE3NjUsMjE3NDUsMjE3NzAsMjE3NTUsMjE3NTEsMjE3NTIsMjE3MjgsMjE3NzQs''@;'; put 'put ''MjE3NjMsMjE3NzEsMjIyNzMsMjIyNzQsMjI0NzYsMjI1NzgsMjI0ODUsMjI0ODIsMjI0NTgsMjI0NzAsMjI0NjEsMjI0NjAsMjI0NTYsMjI0NTQsMjI0NjMsMjI0NzEsMjI0ODAsMjI0NTcsMjI0NjUsMjI3OTgsMjI4NTgsMjMwNjUsMjMwNjIsMjMwODUsMjMwODYsMjMwNjEsMjMwNTUsMjMw''@;'; put 'put ''NjMsMjMwNTAsMjMwNzAsMjMwOTEsMjM0MDQsMjM0NjMsMjM0NjksMjM0NjgsMjM1NTUsMjM2MzgsMjM2MzYsMjM3ODgsMjM4MDcsMjM3OTAsMjM3OTMsMjM3OTksMjM4MDgsMjM4MDEsMjQxMDUsMjQxMDQsMjQyMzIsMjQyMzgsMjQyMzQsMjQyMzYsMjQzNzEsMjQzNjgsMjQ0MjMsMjQ2Njks''@;'; put 'put ''MjQ2NjYsMjQ2NzksMjQ2NDEsMjQ3MzgsMjQ3MTIsMjQ3MDQsMjQ3MjIsMjQ3MDUsMjQ3MzMsMjQ3MDcsMjQ3MjUsMjQ3MzEsMjQ3MjcsMjQ3MTEsMjQ3MzIsMjQ3MTgsMjUxMTMsMjUxNTgsMjUzMzAsMjUzNjAsMjU0MzAsMjUzODgsMjU0MTIsMjU0MTMsMjUzOTgsMjU0MTEsMjU1NzIsMjU0''@;'; put 'put ''MDEsMjU0MTksMjU0MTgsMjU0MDQsMjUzODUsMjU0MDksMjUzOTYsMjU0MzIsMjU0MjgsMjU0MzMsMjUzODksMjU0MTUsMjUzOTUsMjU0MzQsMjU0MjUsMjU0MDAsMjU0MzEsMjU0MDgsMjU0MTYsMjU5MzAsMjU5MjYsMjYwNTQsMjYwNTEsMjYwNTIsMjYwNTAsMjYxODYsMjYyMDcsMjYxODMs''@;'; put 'put ''MjYxOTMsMjYzODYsMjYzODcsMjY2NTUsMjY2NTAsMjY2OTcsMjY2NzQsMjY2NzUsMjY2ODMsMjY2OTksMjY3MDMsMjY2NDYsMjY2NzMsMjY2NTIsMjY2NzcsMjY2NjcsMjY2NjksMjY2NzEsMjY3MDIsMjY2OTIsMjY2NzYsMjY2NTMsMjY2NDIsMjY2NDQsMjY2NjIsMjY2NjQsMjY2NzAsMjY3''@;'; put 'put ''MDEsMjY2ODIsMjY2NjEsMjY2NTYsMjc0MzYsMjc0MzksMjc0MzcsMjc0NDEsMjc0NDQsMjc1MDEsMzI4OTgsMjc1MjgsMjc2MjIsMjc2MjAsMjc2MjQsMjc2MTksMjc2MTgsMjc2MjMsMjc2ODUsMjgwMjYsMjgwMDMsMjgwMDQsMjgwMjIsMjc5MTcsMjgwMDEsMjgwNTAsMjc5OTIsMjgwMDIs''@;'; put 'put ''MjgwMTMsMjgwMTUsMjgwNDksMjgwNDUsMjgxNDMsMjgwMzEsMjgwMzgsMjc5OTgsMjgwMDcsMjhlMywyODA1NSwyODAxNiwyODAyOCwyNzk5OSwyODAzNCwyODA1NiwyNzk1MSwyODAwOCwyODA0MywyODAzMCwyODAzMiwyODAzNiwyNzkyNiwyODAzNSwyODAyNywyODAyOSwyODAyMSwyODA0''@;'; put 'put ''OCwyODg5MiwyODg4MywyODg4MSwyODg5MywyODg3NSwzMjU2OSwyODg5OCwyODg4NywyODg4MiwyODg5NCwyODg5NiwyODg4NCwyODg3NywyODg2OSwyODg3MCwyODg3MSwyODg5MCwyODg3OCwyODg5NywyOTI1MCwyOTMwNCwyOTMwMywyOTMwMiwyOTQ0MCwyOTQzNCwyOTQyOCwyOTQzOCwy''@;'; put 'put ''OTQzMCwyOTQyNywyOTQzNSwyOTQ0MSwyOTY1MSwyOTY1NywyOTY2OSwyOTY1NCwyOTYyOCwyOTY3MSwyOTY2NywyOTY3MywyOTY2MCwyOTY1MCwyOTY1OSwyOTY1MiwyOTY2MSwyOTY1OCwyOTY1NSwyOTY1NiwyOTY3MiwyOTkxOCwyOTkxOSwyOTk0MCwyOTk0MSwyOTk4NSwzMDA0MywzMDA0''@;'; put 'put ''NywzMDEyOCwzMDE0NSwzMDEzOSwzMDE0OCwzMDE0NCwzMDE0MywzMDEzNCwzMDEzOCwzMDM0NiwzMDQwOSwzMDQ5MywzMDQ5MSwzMDQ4MCwzMDQ4MywzMDQ4MiwzMDQ5OSwzMDQ4MSwzMDQ4NSwzMDQ4OSwzMDQ5MCwzMDQ5OCwzMDUwMywzMDc1NSwzMDc2NCwzMDc1NCwzMDc3MywzMDc2Nywz''@;'; put 'put ''MDc2MCwzMDc2NiwzMDc2MywzMDc1MywzMDc2MSwzMDc3MSwzMDc2MiwzMDc2OSwzMTA2MCwzMTA2NywzMTA1NSwzMTA2OCwzMTA1OSwzMTA1OCwzMTA1NywzMTIxMSwzMTIxMiwzMTIwMCwzMTIxNCwzMTIxMywzMTIxMCwzMTE5NiwzMTE5OCwzMTE5NywzMTM2NiwzMTM2OSwzMTM2NSwzMTM3''@;'; put 'put ''MSwzMTM3MiwzMTM3MCwzMTM2NywzMTQ0OCwzMTUwNCwzMTQ5MiwzMTUwNywzMTQ5MywzMTUwMywzMTQ5NiwzMTQ5OCwzMTUwMiwzMTQ5NywzMTUwNiwzMTg3NiwzMTg4OSwzMTg4MiwzMTg4NCwzMTg4MCwzMTg4NSwzMTg3NywzMjAzMCwzMjAyOSwzMjAxNywzMjAxNCwzMjAyNCwzMjAyMiwz''@;'; put 'put ''MjAxOSwzMjAzMSwzMjAxOCwzMjAxNSwzMjAxMiwzMjYwNCwzMjYwOSwzMjYwNiwzMjYwOCwzMjYwNSwzMjYwMywzMjY2MiwzMjY1OCwzMjcwNywzMjcwNiwzMjcwNCwzMjc5MCwzMjgzMCwzMjgyNSwzMzAxOCwzMzAxMCwzMzAxNywzMzAxMywzMzAyNSwzMzAxOSwzMzAyNCwzMzI4MSwzMzMy''@;'; put 'put ''NywzMzMxNywzMzU4NywzMzU4MSwzMzYwNCwzMzU2MSwzMzYxNywzMzU3MywzMzYyMiwzMzU5OSwzMzYwMSwzMzU3NCwzMzU2NCwzMzU3MCwzMzYwMiwzMzYxNCwzMzU2MywzMzU3OCwzMzU0NCwzMzU5NiwzMzYxMywzMzU1OCwzMzU3MiwzMzU2OCwzMzU5MSwzMzU4MywzMzU3NywzMzYwNywz''@;'; put 'put ''MzYwNSwzMzYxMiwzMzYxOSwzMzU2NiwzMzU4MCwzMzYxMSwzMzU3NSwzMzYwOCwzNDM4NywzNDM4NiwzNDQ2NiwzNDQ3MiwzNDQ1NCwzNDQ0NSwzNDQ0OSwzNDQ2MiwzNDQzOSwzNDQ1NSwzNDQzOCwzNDQ0MywzNDQ1OCwzNDQzNywzNDQ2OSwzNDQ1NywzNDQ2NSwzNDQ3MSwzNDQ1MywzNDQ1''@;'; put 'put ''NiwzNDQ0NiwzNDQ2MSwzNDQ0OCwzNDQ1MiwzNDg4MywzNDg4NCwzNDkyNSwzNDkzMywzNDkzNCwzNDkzMCwzNDk0NCwzNDkyOSwzNDk0MywzNDkyNywzNDk0NywzNDk0MiwzNDkzMiwzNDk0MCwzNTM0NiwzNTkxMSwzNTkyNywzNTk2MywzNjAwNCwzNjAwMywzNjIxNCwzNjIxNiwzNjI3Nywz''@;'; put 'put ''NjI3OSwzNjI3OCwzNjU2MSwzNjU2MywzNjg2MiwzNjg1MywzNjg2NiwzNjg2MywzNjg1OSwzNjg2OCwzNjg2MCwzNjg1NCwzNzA3OCwzNzA4OCwzNzA4MSwzNzA4MiwzNzA5MSwzNzA4NywzNzA5MywzNzA4MCwzNzA4MywzNzA3OSwzNzA4NCwzNzA5MiwzNzIwMCwzNzE5OCwzNzE5OSwzNzMz''@;'; put 'put ''MywzNzM0NiwzNzMzOCwzODQ5MiwzODQ5NSwzODU4OCwzOTEzOSwzOTY0NywzOTcyNywyMDA5NSwyMDU5MiwyMDU4NiwyMDU3NywyMDU3NCwyMDU3NiwyMDU2MywyMDU1NSwyMDU3MywyMDU5NCwyMDU1MiwyMDU1NywyMDU0NSwyMDU3MSwyMDU1NCwyMDU3OCwyMDUwMSwyMDU0OSwyMDU3NSwy''@;'; put 'put ''MDU4NSwyMDU4NywyMDU3OSwyMDU4MCwyMDU1MCwyMDU0NCwyMDU5MCwyMDU5NSwyMDU2NywyMDU2MSwyMDk0NCwyMTA5OSwyMTEwMSwyMTEwMCwyMTEwMiwyMTIwNiwyMTIwMywyMTI5MywyMTQwNCwyMTg3NywyMTg3OCwyMTgyMCwyMTgzNywyMTg0MCwyMTgxMiwyMTgwMiwyMTg0MSwyMTg1''@;'; put 'put ''OCwyMTgxNCwyMTgxMywyMTgwOCwyMTg0MiwyMTgyOSwyMTc3MiwyMTgxMCwyMTg2MSwyMTgzOCwyMTgxNywyMTgzMiwyMTgwNSwyMTgxOSwyMTgyNCwyMTgzNSwyMjI4MiwyMjI3OSwyMjUyMywyMjU0OCwyMjQ5OCwyMjUxOCwyMjQ5MiwyMjUxNiwyMjUyOCwyMjUwOSwyMjUyNSwyMjUzNiwy''@;'; put 'put ''MjUyMCwyMjUzOSwyMjUxNSwyMjQ3OSwyMjUzNSwyMjUxMCwyMjQ5OSwyMjUxNCwyMjUwMSwyMjUwOCwyMjQ5NywyMjU0MiwyMjUyNCwyMjU0NCwyMjUwMywyMjUyOSwyMjU0MCwyMjUxMywyMjUwNSwyMjUxMiwyMjU0MSwyMjUzMiwyMjg3NiwyMzEzNiwyMzEyOCwyMzEyNSwyMzE0MywyMzEz''@;'; put 'put ''NCwyMzA5NiwyMzA5MywyMzE0OSwyMzEyMCwyMzEzNSwyMzE0MSwyMzE0OCwyMzEyMywyMzE0MCwyMzEyNywyMzEwNywyMzEzMywyMzEyMiwyMzEwOCwyMzEzMSwyMzExMiwyMzE4MiwyMzEwMiwyMzExNywyMzA5NywyMzExNiwyMzE1MiwyMzE0NSwyMzExMSwyMzEyMSwyMzEyNiwyMzEwNiwy''@;'; put 'put ''MzEzMiwyMzQxMCwyMzQwNiwyMzQ4OSwyMzQ4OCwyMzY0MSwyMzgzOCwyMzgxOSwyMzgzNywyMzgzNCwyMzg0MCwyMzgyMCwyMzg0OCwyMzgyMSwyMzg0NiwyMzg0NSwyMzgyMywyMzg1NiwyMzgyNiwyMzg0MywyMzgzOSwyMzg1NCwyNDEyNiwyNDExNiwyNDI0MSwyNDI0NCwyNDI0OSwyNDI0''@;'; put 'put ''MiwyNDI0MywyNDM3NCwyNDM3NiwyNDQ3NSwyNDQ3MCwyNDQ3OSwyNDcxNCwyNDcyMCwyNDcxMCwyNDc2NiwyNDc1MiwyNDc2MiwyNDc4NywyNDc4OCwyNDc4MywyNDgwNCwyNDc5MywyNDc5NywyNDc3NiwyNDc1MywyNDc5NSwyNDc1OSwyNDc3OCwyNDc2NywyNDc3MSwyNDc4MSwyNDc2OCwy''@;'; put 'put ''NTM5NCwyNTQ0NSwyNTQ4MiwyNTQ3NCwyNTQ2OSwyNTUzMywyNTUwMiwyNTUxNywyNTUwMSwyNTQ5NSwyNTUxNSwyNTQ4NiwyNTQ1NSwyNTQ3OSwyNTQ4OCwyNTQ1NCwyNTUxOSwyNTQ2MSwyNTUwMCwyNTQ1MywyNTUxOCwyNTQ2OCwyNTUwOCwyNTQwMywyNTUwMywyNTQ2NCwyNTQ3NywyNTQ3''@;'; put 'put ''MywyNTQ4OSwyNTQ4NSwyNTQ1NiwyNTkzOSwyNjA2MSwyNjIxMywyNjIwOSwyNjIwMywyNjIwMSwyNjIwNCwyNjIxMCwyNjM5MiwyNjc0NSwyNjc1OSwyNjc2OCwyNjc4MCwyNjczMywyNjczNCwyNjc5OCwyNjc5NSwyNjk2NiwyNjczNSwyNjc4NywyNjc5NiwyNjc5MywyNjc0MSwyNjc0MCwy''@;'; put 'put ''NjgwMiwyNjc2NywyNjc0MywyNjc3MCwyNjc0OCwyNjczMSwyNjczOCwyNjc5NCwyNjc1MiwyNjczNywyNjc1MCwyNjc3OSwyNjc3NCwyNjc2MywyNjc4NCwyNjc2MSwyNjc4OCwyNjc0NCwyNjc0NywyNjc2OSwyNjc2NCwyNjc2MiwyNjc0OSwyNzQ0NiwyNzQ0MywyNzQ0NywyNzQ0OCwyNzUz''@;'; put 'put ''NywyNzUzNSwyNzUzMywyNzUzNCwyNzUzMiwyNzY5MCwyODA5NiwyODA3NSwyODA4NCwyODA4MywyODI3NiwyODA3NiwyODEzNywyODEzMCwyODA4NywyODE1MCwyODExNiwyODE2MCwyODEwNCwyODEyOCwyODEyNywyODExOCwyODA5NCwyODEzMywyODEyNCwyODEyNSwyODEyMywyODE0OCwy''@;'; put 'put ''ODEwNiwyODA5MywyODE0MSwyODE0NCwyODA5MCwyODExNywyODA5OCwyODExMSwyODEwNSwyODExMiwyODE0NiwyODExNSwyODE1NywyODExOSwyODEwOSwyODEzMSwyODA5MSwyODkyMiwyODk0MSwyODkxOSwyODk1MSwyODkxNiwyODk0MCwyODkxMiwyODkzMiwyODkxNSwyODk0NCwyODky''@;'; put 'put ''NCwyODkyNywyODkzNCwyODk0NywyODkyOCwyODkyMCwyODkxOCwyODkzOSwyODkzMCwyODk0MiwyOTMxMCwyOTMwNywyOTMwOCwyOTMxMSwyOTQ2OSwyOTQ2MywyOTQ0NywyOTQ1NywyOTQ2NCwyOTQ1MCwyOTQ0OCwyOTQzOSwyOTQ1NSwyOTQ3MCwyOTU3NiwyOTY4NiwyOTY4OCwyOTY4NSwy''@;'; put 'put ''OTcwMCwyOTY5NywyOTY5MywyOTcwMywyOTY5NiwyOTY5MCwyOTY5MiwyOTY5NSwyOTcwOCwyOTcwNywyOTY4NCwyOTcwNCwzMDA1MiwzMDA1MSwzMDE1OCwzMDE2MiwzMDE1OSwzMDE1NSwzMDE1NiwzMDE2MSwzMDE2MCwzMDM1MSwzMDM0NSwzMDQxOSwzMDUyMSwzMDUxMSwzMDUwOSwzMDUx''@;'; put 'put ''MywzMDUxNCwzMDUxNiwzMDUxNSwzMDUyNSwzMDUwMSwzMDUyMywzMDUxNywzMDc5MiwzMDgwMiwzMDc5MywzMDc5NywzMDc5NCwzMDc5NiwzMDc1OCwzMDc4OSwzMDgwMCwzMTA3NiwzMTA3OSwzMTA4MSwzMTA4MiwzMTA3NSwzMTA4MywzMTA3MywzMTE2MywzMTIyNiwzMTIyNCwzMTIyMiwz''@;'; put 'put ''MTIyMywzMTM3NSwzMTM4MCwzMTM3NiwzMTU0MSwzMTU1OSwzMTU0MCwzMTUyNSwzMTUzNiwzMTUyMiwzMTUyNCwzMTUzOSwzMTUxMiwzMTUzMCwzMTUxNywzMTUzNywzMTUzMSwzMTUzMywzMTUzNSwzMTUzOCwzMTU0NCwzMTUxNCwzMTUyMywzMTg5MiwzMTg5NiwzMTg5NCwzMTkwNywzMjA1''@;'; put 'put ''MywzMjA2MSwzMjA1NiwzMjA1NCwzMjA1OCwzMjA2OSwzMjA0NCwzMjA0MSwzMjA2NSwzMjA3MSwzMjA2MiwzMjA2MywzMjA3NCwzMjA1OSwzMjA0MCwzMjYxMSwzMjY2MSwzMjY2OCwzMjY2OSwzMjY2NywzMjcxNCwzMjcxNSwzMjcxNywzMjcyMCwzMjcyMSwzMjcxMSwzMjcxOSwzMjcxMywz''@;'; put 'put ''Mjc5OSwzMjc5OCwzMjc5NSwzMjgzOSwzMjgzNSwzMjg0MCwzMzA0OCwzMzA2MSwzMzA0OSwzMzA1MSwzMzA2OSwzMzA1NSwzMzA2OCwzMzA1NCwzMzA1NywzMzA0NSwzMzA2MywzMzA1MywzMzA1OCwzMzI5NywzMzMzNiwzMzMzMSwzMzMzOCwzMzMzMiwzMzMzMCwzMzM5NiwzMzY4MCwzMzY5''@;'; put 'put ''OSwzMzcwNCwzMzY3NywzMzY1OCwzMzY1MSwzMzcwMCwzMzY1MiwzMzY3OSwzMzY2NSwzMzY4NSwzMzY4OSwzMzY1MywzMzY4NCwzMzcwNSwzMzY2MSwzMzY2NywzMzY3NiwzMzY5MywzMzY5MSwzMzcwNiwzMzY3NSwzMzY2MiwzMzcwMSwzMzcxMSwzMzY3MiwzMzY4NywzMzcxMiwzMzY2Mywz''@;'; put 'put ''MzcwMiwzMzY3MSwzMzcxMCwzMzY1NCwzMzY5MCwzNDM5MywzNDM5MCwzNDQ5NSwzNDQ4NywzNDQ5OCwzNDQ5NywzNDUwMSwzNDQ5MCwzNDQ4MCwzNDUwNCwzNDQ4OSwzNDQ4MywzNDQ4OCwzNDUwOCwzNDQ4NCwzNDQ5MSwzNDQ5MiwzNDQ5OSwzNDQ5MywzNDQ5NCwzNDg5OCwzNDk1MywzNDk2''@;'; put 'put ''NSwzNDk4NCwzNDk3OCwzNDk4NiwzNDk3MCwzNDk2MSwzNDk3NywzNDk3NSwzNDk2OCwzNDk4MywzNDk2OSwzNDk3MSwzNDk2NywzNDk4MCwzNDk4OCwzNDk1NiwzNDk2MywzNDk1OCwzNTIwMiwzNTI4NiwzNTI4OSwzNTI4NSwzNTM3NiwzNTM2NywzNTM3MiwzNTM1OCwzNTg5NywzNTg5OSwz''@;'; put 'put ''NTkzMiwzNTkzMywzNTk2NSwzNjAwNSwzNjIyMSwzNjIxOSwzNjIxNywzNjI4NCwzNjI5MCwzNjI4MSwzNjI4NywzNjI4OSwzNjU2OCwzNjU3NCwzNjU3MywzNjU3MiwzNjU2NywzNjU3NiwzNjU3NywzNjkwMCwzNjg3NSwzNjg4MSwzNjg5MiwzNjg3NiwzNjg5NywzNzEwMywzNzA5OCwzNzEw''@;'; put 'put ''NCwzNzEwOCwzNzEwNiwzNzEwNywzNzA3NiwzNzA5OSwzNzEwMCwzNzA5NywzNzIwNiwzNzIwOCwzNzIxMCwzNzIwMywzNzIwNSwzNzM1NiwzNzM2NCwzNzM2MSwzNzM2MywzNzM2OCwzNzM0OCwzNzM2OSwzNzM1NCwzNzM1NSwzNzM2NywzNzM1MiwzNzM1OCwzODI2NiwzODI3OCwzODI4MCwz''@;'; put 'put ''ODUyNCwzODUwOSwzODUwNywzODUxMywzODUxMSwzODU5MSwzODc2MiwzODkxNiwzOTE0MSwzOTMxOSwyMDYzNSwyMDYyOSwyMDYyOCwyMDYzOCwyMDYxOSwyMDY0MywyMDYxMSwyMDYyMCwyMDYyMiwyMDYzNywyMDU4NCwyMDYzNiwyMDYyNiwyMDYxMCwyMDYxNSwyMDgzMSwyMDk0OCwyMTI2''@;'; put 'put ''NiwyMTI2NSwyMTQxMiwyMTQxNSwyMTkwNSwyMTkyOCwyMTkyNSwyMTkzMywyMTg3OSwyMjA4NSwyMTkyMiwyMTkwNywyMTg5NiwyMTkwMywyMTk0MSwyMTg4OSwyMTkyMywyMTkwNiwyMTkyNCwyMTg4NSwyMTkwMCwyMTkyNiwyMTg4NywyMTkwOSwyMTkyMSwyMTkwMiwyMjI4NCwyMjU2OSwy''@;'; put 'put ''MjU4MywyMjU1MywyMjU1OCwyMjU2NywyMjU2MywyMjU2OCwyMjUxNywyMjYwMCwyMjU2NSwyMjU1NiwyMjU1NSwyMjU3OSwyMjU5MSwyMjU4MiwyMjU3NCwyMjU4NSwyMjU4NCwyMjU3MywyMjU3MiwyMjU4NywyMjg4MSwyMzIxNSwyMzE4OCwyMzE5OSwyMzE2MiwyMzIwMiwyMzE5OCwyMzE2''@;'; put 'put ''MCwyMzIwNiwyMzE2NCwyMzIwNSwyMzIxMiwyMzE4OSwyMzIxNCwyMzA5NSwyMzE3MiwyMzE3OCwyMzE5MSwyMzE3MSwyMzE3OSwyMzIwOSwyMzE2MywyMzE2NSwyMzE4MCwyMzE5NiwyMzE4MywyMzE4NywyMzE5NywyMzUzMCwyMzUwMSwyMzQ5OSwyMzUwOCwyMzUwNSwyMzQ5OCwyMzUwMiwy''@;'; put 'put ''MzU2NCwyMzYwMCwyMzg2MywyMzg3NSwyMzkxNSwyMzg3MywyMzg4MywyMzg3MSwyMzg2MSwyMzg4OSwyMzg4NiwyMzg5MywyMzg1OSwyMzg2NiwyMzg5MCwyMzg2OSwyMzg1NywyMzg5NywyMzg3NCwyMzg2NSwyMzg4MSwyMzg2NCwyMzg2OCwyMzg1OCwyMzg2MiwyMzg3MiwyMzg3NywyNDEz''@;'; put 'put ''MiwyNDEyOSwyNDQwOCwyNDQ4NiwyNDQ4NSwyNDQ5MSwyNDc3NywyNDc2MSwyNDc4MCwyNDgwMiwyNDc4MiwyNDc3MiwyNDg1MiwyNDgxOCwyNDg0MiwyNDg1NCwyNDgzNywyNDgyMSwyNDg1MSwyNDgyNCwyNDgyOCwyNDgzMCwyNDc2OSwyNDgzNSwyNDg1NiwyNDg2MSwyNDg0OCwyNDgzMSwy''@;'; put 'put ''NDgzNiwyNDg0MywyNTE2MiwyNTQ5MiwyNTUyMSwyNTUyMCwyNTU1MCwyNTU3MywyNTU3NiwyNTU4MywyNTUzOSwyNTc1NywyNTU4NywyNTU0NiwyNTU2OCwyNTU5MCwyNTU1NywyNTU4NiwyNTU4OSwyNTY5NywyNTU2NywyNTUzNCwyNTU2NSwyNTU2NCwyNTU0MCwyNTU2MCwyNTU1NSwyNTUz''@;'; put 'put ''OCwyNTU0MywyNTU0OCwyNTU0NywyNTU0NCwyNTU4NCwyNTU1OSwyNTU2MSwyNTkwNiwyNTk1OSwyNTk2MiwyNTk1NiwyNTk0OCwyNTk2MCwyNTk1NywyNTk5NiwyNjAxMywyNjAxNCwyNjAzMCwyNjA2NCwyNjA2NiwyNjIzNiwyNjIyMCwyNjIzNSwyNjI0MCwyNjIyNSwyNjIzMywyNjIxOCwy''@;'; put 'put ''NjIyNiwyNjM2OSwyNjg5MiwyNjgzNSwyNjg4NCwyNjg0NCwyNjkyMiwyNjg2MCwyNjg1OCwyNjg2NSwyNjg5NSwyNjgzOCwyNjg3MSwyNjg1OSwyNjg1MiwyNjg3MCwyNjg5OSwyNjg5NiwyNjg2NywyNjg0OSwyNjg4NywyNjgyOCwyNjg4OCwyNjk5MiwyNjgwNCwyNjg5NywyNjg2MywyNjgy''@;'; put 'put ''MiwyNjkwMCwyNjg3MiwyNjgzMiwyNjg3NywyNjg3NiwyNjg1NiwyNjg5MSwyNjg5MCwyNjkwMywyNjgzMCwyNjgyNCwyNjg0NSwyNjg0NiwyNjg1NCwyNjg2OCwyNjgzMywyNjg4NiwyNjgzNiwyNjg1NywyNjkwMSwyNjkxNywyNjgyMywyNzQ0OSwyNzQ1MSwyNzQ1NSwyNzQ1MiwyNzU0MCwy''@;'; put 'put ''NzU0MywyNzU0NSwyNzU0MSwyNzU4MSwyNzYzMiwyNzYzNCwyNzYzNSwyNzY5NiwyODE1NiwyODIzMCwyODIzMSwyODE5MSwyODIzMywyODI5NiwyODIyMCwyODIyMSwyODIyOSwyODI1OCwyODIwMywyODIyMywyODIyNSwyODI1MywyODI3NSwyODE4OCwyODIxMSwyODIzNSwyODIyNCwyODI0''@;'; put 'put ''MSwyODIxOSwyODE2MywyODIwNiwyODI1NCwyODI2NCwyODI1MiwyODI1NywyODIwOSwyODIwMCwyODI1NiwyODI3MywyODI2NywyODIxNywyODE5NCwyODIwOCwyODI0MywyODI2MSwyODE5OSwyODI4MCwyODI2MCwyODI3OSwyODI0NSwyODI4MSwyODI0MiwyODI2MiwyODIxMywyODIxNCwy''@;'; put 'put ''ODI1MCwyODk2MCwyODk1OCwyODk3NSwyODkyMywyODk3NCwyODk3NywyODk2MywyODk2NSwyODk2MiwyODk3OCwyODk1OSwyODk2OCwyODk4NiwyODk1NSwyOTI1OSwyOTI3NCwyOTMyMCwyOTMyMSwyOTMxOCwyOTMxNywyOTMyMywyOTQ1OCwyOTQ1MSwyOTQ4OCwyOTQ3NCwyOTQ4OSwyOTQ5''@;'; put 'put ''MSwyOTQ3OSwyOTQ5MCwyOTQ4NSwyOTQ3OCwyOTQ3NSwyOTQ5MywyOTQ1MiwyOTc0MiwyOTc0MCwyOTc0NCwyOTczOSwyOTcxOCwyOTcyMiwyOTcyOSwyOTc0MSwyOTc0NSwyOTczMiwyOTczMSwyOTcyNSwyOTczNywyOTcyOCwyOTc0NiwyOTk0NywyOTk5OSwzMDA2MywzMDA2MCwzMDE4Mywz''@;'; put 'put ''MDE3MCwzMDE3NywzMDE4MiwzMDE3MywzMDE3NSwzMDE4MCwzMDE2NywzMDM1NywzMDM1NCwzMDQyNiwzMDUzNCwzMDUzNSwzMDUzMiwzMDU0MSwzMDUzMywzMDUzOCwzMDU0MiwzMDUzOSwzMDU0MCwzMDY4NiwzMDcwMCwzMDgxNiwzMDgyMCwzMDgyMSwzMDgxMiwzMDgyOSwzMDgzMywzMDgy''@;'; put 'put ''NiwzMDgzMCwzMDgzMiwzMDgyNSwzMDgyNCwzMDgxNCwzMDgxOCwzMTA5MiwzMTA5MSwzMTA5MCwzMTA4OCwzMTIzNCwzMTI0MiwzMTIzNSwzMTI0NCwzMTIzNiwzMTM4NSwzMTQ2MiwzMTQ2MCwzMTU2MiwzMTU0NywzMTU1NiwzMTU2MCwzMTU2NCwzMTU2NiwzMTU1MiwzMTU3NiwzMTU1Nywz''@;'; put 'put ''MTkwNiwzMTkwMiwzMTkxMiwzMTkwNSwzMjA4OCwzMjExMSwzMjA5OSwzMjA4MywzMjA4NiwzMjEwMywzMjEwNiwzMjA3OSwzMjEwOSwzMjA5MiwzMjEwNywzMjA4MiwzMjA4NCwzMjEwNSwzMjA4MSwzMjA5NSwzMjA3OCwzMjU3NCwzMjU3NSwzMjYxMywzMjYxNCwzMjY3NCwzMjY3MiwzMjY3''@;'; put 'put ''MywzMjcyNywzMjg0OSwzMjg0NywzMjg0OCwzMzAyMiwzMjk4MCwzMzA5MSwzMzA5OCwzMzEwNiwzMzEwMywzMzA5NSwzMzA4NSwzMzEwMSwzMzA4MiwzMzI1NCwzMzI2MiwzMzI3MSwzMzI3MiwzMzI3MywzMzI4NCwzMzM0MCwzMzM0MSwzMzM0MywzMzM5NywzMzU5NSwzMzc0MywzMzc4NSwz''@;'; put 'put ''MzgyNywzMzcyOCwzMzc2OCwzMzgxMCwzMzc2NywzMzc2NCwzMzc4OCwzMzc4MiwzMzgwOCwzMzczNCwzMzczNiwzMzc3MSwzMzc2MywzMzcyNywzMzc5MywzMzc1NywzMzc2NSwzMzc1MiwzMzc5MSwzMzc2MSwzMzczOSwzMzc0MiwzMzc1MCwzMzc4MSwzMzczNywzMzgwMSwzMzgwNywzMzc1''@;'; put 'put ''OCwzMzgwOSwzMzc5OCwzMzczMCwzMzc3OSwzMzc0OSwzMzc4NiwzMzczNSwzMzc0NSwzMzc3MCwzMzgxMSwzMzczMSwzMzc3MiwzMzc3NCwzMzczMiwzMzc4NywzMzc1MSwzMzc2MiwzMzgxOSwzMzc1NSwzMzc5MCwzNDUyMCwzNDUzMCwzNDUzNCwzNDUxNSwzNDUzMSwzNDUyMiwzNDUzOCwz''@;'; put 'put ''NDUyNSwzNDUzOSwzNDUyNCwzNDU0MCwzNDUzNywzNDUxOSwzNDUzNiwzNDUxMywzNDg4OCwzNDkwMiwzNDkwMSwzNTAwMiwzNTAzMSwzNTAwMSwzNWUzLDM1MDA4LDM1MDA2LDM0OTk4LDM1MDA0LDM0OTk5LDM1MDA1LDM0OTk0LDM1MDczLDM1MDE3LDM1MjIxLDM1MjI0LDM1MjIzLDM1Mjkz''@;'; put 'put ''LDM1MjkwLDM1MjkxLDM1NDA2LDM1NDA1LDM1Mzg1LDM1NDE3LDM1MzkyLDM1NDE1LDM1NDE2LDM1Mzk2LDM1Mzk3LDM1NDEwLDM1NDAwLDM1NDA5LDM1NDAyLDM1NDA0LDM1NDA3LDM1OTM1LDM1OTY5LDM1OTY4LDM2MDI2LDM2MDMwLDM2MDE2LDM2MDI1LDM2MDIxLDM2MjI4LDM2MjI0LDM2''@;'; put 'put ''MjMzLDM2MzEyLDM2MzA3LDM2MzAxLDM2Mjk1LDM2MzEwLDM2MzE2LDM2MzAzLDM2MzA5LDM2MzEzLDM2Mjk2LDM2MzExLDM2MjkzLDM2NTkxLDM2NTk5LDM2NjAyLDM2NjAxLDM2NTgyLDM2NTkwLDM2NTgxLDM2NTk3LDM2NTgzLDM2NTg0LDM2NTk4LDM2NTg3LDM2NTkzLDM2NTg4LDM2NTk2''@;'; put 'put ''LDM2NTg1LDM2OTA5LDM2OTE2LDM2OTExLDM3MTI2LDM3MTY0LDM3MTI0LDM3MTE5LDM3MTE2LDM3MTI4LDM3MTEzLDM3MTE1LDM3MTIxLDM3MTIwLDM3MTI3LDM3MTI1LDM3MTIzLDM3MjE3LDM3MjIwLDM3MjE1LDM3MjE4LDM3MjE2LDM3Mzc3LDM3Mzg2LDM3NDEzLDM3Mzc5LDM3NDAyLDM3''@;'; put 'put ''NDE0LDM3MzkxLDM3Mzg4LDM3Mzc2LDM3Mzk0LDM3Mzc1LDM3MzczLDM3MzgyLDM3MzgwLDM3NDE1LDM3Mzc4LDM3NDA0LDM3NDEyLDM3NDAxLDM3Mzk5LDM3MzgxLDM3Mzk4LDM4MjY3LDM4Mjg1LDM4Mjg0LDM4Mjg4LDM4NTM1LDM4NTI2LDM4NTM2LDM4NTM3LDM4NTMxLDM4NTI4LDM4NTk0''@;'; put 'put ''LDM4NjAwLDM4NTk1LDM4NjQxLDM4NjQwLDM4NzY0LDM4NzY4LDM4NzY2LDM4OTE5LDM5MDgxLDM5MTQ3LDQwMTY2LDQwNjk3LDIwMDk5LDIwMTAwLDIwMTUwLDIwNjY5LDIwNjcxLDIwNjc4LDIwNjU0LDIwNjc2LDIwNjgyLDIwNjYwLDIwNjgwLDIwNjc0LDIwNjU2LDIwNjczLDIwNjY2LDIw''@;'; put 'put ''NjU3LDIwNjgzLDIwNjgxLDIwNjYyLDIwNjY0LDIwOTUxLDIxMTE0LDIxMTEyLDIxMTE1LDIxMTE2LDIxOTU1LDIxOTc5LDIxOTY0LDIxOTY4LDIxOTYzLDIxOTYyLDIxOTgxLDIxOTUyLDIxOTcyLDIxOTU2LDIxOTkzLDIxOTUxLDIxOTcwLDIxOTAxLDIxOTY3LDIxOTczLDIxOTg2LDIxOTc0''@;'; put 'put ''LDIxOTYwLDIyMDAyLDIxOTY1LDIxOTc3LDIxOTU0LDIyMjkyLDIyNjExLDIyNjMyLDIyNjI4LDIyNjA3LDIyNjA1LDIyNjAxLDIyNjM5LDIyNjEzLDIyNjA2LDIyNjIxLDIyNjE3LDIyNjI5LDIyNjE5LDIyNTg5LDIyNjI3LDIyNjQxLDIyNzgwLDIzMjM5LDIzMjM2LDIzMjQzLDIzMjI2LDIz''@;'; put 'put ''MjI0LDIzMjE3LDIzMjIxLDIzMjE2LDIzMjMxLDIzMjQwLDIzMjI3LDIzMjM4LDIzMjIzLDIzMjMyLDIzMjQyLDIzMjIwLDIzMjIyLDIzMjQ1LDIzMjI1LDIzMTg0LDIzNTEwLDIzNTEyLDIzNTEzLDIzNTgzLDIzNjAzLDIzOTIxLDIzOTA3LDIzODgyLDIzOTA5LDIzOTIyLDIzOTE2LDIzOTAy''@;'; put 'put ''LDIzOTEyLDIzOTExLDIzOTA2LDI0MDQ4LDI0MTQzLDI0MTQyLDI0MTM4LDI0MTQxLDI0MTM5LDI0MjYxLDI0MjY4LDI0MjYyLDI0MjY3LDI0MjYzLDI0Mzg0LDI0NDk1LDI0NDkzLDI0ODIzLDI0OTA1LDI0OTA2LDI0ODc1LDI0OTAxLDI0ODg2LDI0ODgyLDI0ODc4LDI0OTAyLDI0ODc5LDI0''@;'; put 'put ''OTExLDI0ODczLDI0ODk2LDI1MTIwLDM3MjI0LDI1MTIzLDI1MTI1LDI1MTI0LDI1NTQxLDI1NTg1LDI1NTc5LDI1NjE2LDI1NjE4LDI1NjA5LDI1NjMyLDI1NjM2LDI1NjUxLDI1NjY3LDI1NjMxLDI1NjIxLDI1NjI0LDI1NjU3LDI1NjU1LDI1NjM0LDI1NjM1LDI1NjEyLDI1NjM4LDI1NjQ4''@;'; put 'put ''LDI1NjQwLDI1NjY1LDI1NjUzLDI1NjQ3LDI1NjEwLDI1NjI2LDI1NjY0LDI1NjM3LDI1NjM5LDI1NjExLDI1NTc1LDI1NjI3LDI1NjQ2LDI1NjMzLDI1NjE0LDI1OTY3LDI2MDAyLDI2MDY3LDI2MjQ2LDI2MjUyLDI2MjYxLDI2MjU2LDI2MjUxLDI2MjUwLDI2MjY1LDI2MjYwLDI2MjMyLDI2''@;'; put 'put ''NDAwLDI2OTgyLDI2OTc1LDI2OTM2LDI2OTU4LDI2OTc4LDI2OTkzLDI2OTQzLDI2OTQ5LDI2OTg2LDI2OTM3LDI2OTQ2LDI2OTY3LDI2OTY5LDI3MDAyLDI2OTUyLDI2OTUzLDI2OTMzLDI2OTg4LDI2OTMxLDI2OTQxLDI2OTgxLDI2ODY0LDI3ZTMsMjY5MzIsMjY5ODUsMjY5NDQsMjY5OTEs''@;'; put 'put ''MjY5NDgsMjY5OTgsMjY5NjgsMjY5NDUsMjY5OTYsMjY5NTYsMjY5MzksMjY5NTUsMjY5MzUsMjY5NzIsMjY5NTksMjY5NjEsMjY5MzAsMjY5NjIsMjY5MjcsMjcwMDMsMjY5NDAsMjc0NjIsMjc0NjEsMjc0NTksMjc0NTgsMjc0NjQsMjc0NTcsMjc1NDcsNjQwMTMsMjc2NDMsMjc2NDQsMjc2''@;'; put 'put ''NDEsMjc2MzksMjc2NDAsMjgzMTUsMjgzNzQsMjgzNjAsMjgzMDMsMjgzNTIsMjgzMTksMjgzMDcsMjgzMDgsMjgzMjAsMjgzMzcsMjgzNDUsMjgzNTgsMjgzNzAsMjgzNDksMjgzNTMsMjgzMTgsMjgzNjEsMjgzNDMsMjgzMzYsMjgzNjUsMjgzMjYsMjgzNjcsMjgzMzgsMjgzNTAsMjgzNTUs''@;'; put 'put ''MjgzODAsMjgzNzYsMjgzMTMsMjgzMDYsMjgzMDIsMjgzMDEsMjgzMjQsMjgzMjEsMjgzNTEsMjgzMzksMjgzNjgsMjgzNjIsMjgzMTEsMjgzMzQsMjgzMjMsMjg5OTksMjkwMTIsMjkwMTAsMjkwMjcsMjkwMjQsMjg5OTMsMjkwMjEsMjkwMjYsMjkwNDIsMjkwNDgsMjkwMzQsMjkwMjUsMjg5''@;'; put 'put ''OTQsMjkwMTYsMjg5OTUsMjkwMDMsMjkwNDAsMjkwMjMsMjkwMDgsMjkwMTEsMjg5OTYsMjkwMDUsMjkwMTgsMjkyNjMsMjkzMjUsMjkzMjQsMjkzMjksMjkzMjgsMjkzMjYsMjk1MDAsMjk1MDYsMjk0OTksMjk0OTgsMjk1MDQsMjk1MTQsMjk1MTMsMjk3NjQsMjk3NzAsMjk3NzEsMjk3Nzgs''@;'; put 'put ''Mjk3NzcsMjk3ODMsMjk3NjAsMjk3NzUsMjk3NzYsMjk3NzQsMjk3NjIsMjk3NjYsMjk3NzMsMjk3ODAsMjk5MjEsMjk5NTEsMjk5NTAsMjk5NDksMjk5ODEsMzAwNzMsMzAwNzEsMjcwMTEsMzAxOTEsMzAyMjMsMzAyMTEsMzAxOTksMzAyMDYsMzAyMDQsMzAyMDEsMzAyMDAsMzAyMjQsMzAy''@;'; put 'put ''MDMsMzAxOTgsMzAxODksMzAxOTcsMzAyMDUsMzAzNjEsMzAzODksMzA0MjksMzA1NDksMzA1NTksMzA1NjAsMzA1NDYsMzA1NTAsMzA1NTQsMzA1NjksMzA1NjcsMzA1NDgsMzA1NTMsMzA1NzMsMzA2ODgsMzA4NTUsMzA4NzQsMzA4NjgsMzA4NjMsMzA4NTIsMzA4NjksMzA4NTMsMzA4NTQs''@;'; put 'put ''MzA4ODEsMzA4NTEsMzA4NDEsMzA4NzMsMzA4NDgsMzA4NzAsMzA4NDMsMzExMDAsMzExMDYsMzExMDEsMzEwOTcsMzEyNDksMzEyNTYsMzEyNTcsMzEyNTAsMzEyNTUsMzEyNTMsMzEyNjYsMzEyNTEsMzEyNTksMzEyNDgsMzEzOTUsMzEzOTQsMzEzOTAsMzE0NjcsMzE1OTAsMzE1ODgsMzE1''@;'; put 'put ''OTcsMzE2MDQsMzE1OTMsMzE2MDIsMzE1ODksMzE2MDMsMzE2MDEsMzE2MDAsMzE1ODUsMzE2MDgsMzE2MDYsMzE1ODcsMzE5MjIsMzE5MjQsMzE5MTksMzIxMzYsMzIxMzQsMzIxMjgsMzIxNDEsMzIxMjcsMzIxMzMsMzIxMjIsMzIxNDIsMzIxMjMsMzIxMzEsMzIxMjQsMzIxNDAsMzIxNDgs''@;'; put 'put ''MzIxMzIsMzIxMjUsMzIxNDYsMzI2MjEsMzI2MTksMzI2MTUsMzI2MTYsMzI2MjAsMzI2NzgsMzI2NzcsMzI2NzksMzI3MzEsMzI3MzIsMzI4MDEsMzMxMjQsMzMxMjAsMzMxNDMsMzMxMTYsMzMxMjksMzMxMTUsMzMxMjIsMzMxMzgsMjY0MDEsMzMxMTgsMzMxNDIsMzMxMjcsMzMxMzUsMzMw''@;'; put 'put ''OTIsMzMxMjEsMzMzMDksMzMzNTMsMzMzNDgsMzMzNDQsMzMzNDYsMzMzNDksMzQwMzMsMzM4NTUsMzM4NzgsMzM5MTAsMzM5MTMsMzM5MzUsMzM5MzMsMzM4OTMsMzM4NzMsMzM4NTYsMzM5MjYsMzM4OTUsMzM4NDAsMzM4NjksMzM5MTcsMzM4ODIsMzM4ODEsMzM5MDgsMzM5MDcsMzM4ODUs''@;'; put 'put ''MzQwNTUsMzM4ODYsMzM4NDcsMzM4NTAsMzM4NDQsMzM5MTQsMzM4NTksMzM5MTIsMzM4NDIsMzM4NjEsMzM4MzMsMzM3NTMsMzM4NjcsMzM4MzksMzM4NTgsMzM4MzcsMzM4ODcsMzM5MDQsMzM4NDksMzM4NzAsMzM4NjgsMzM4NzQsMzM5MDMsMzM5ODksMzM5MzQsMzM4NTEsMzM4NjMsMzM4''@;'; put 'put ''NDYsMzM4NDMsMzM4OTYsMzM5MTgsMzM4NjAsMzM4MzUsMzM4ODgsMzM4NzYsMzM5MDIsMzM4NzIsMzQ1NzEsMzQ1NjQsMzQ1NTEsMzQ1NzIsMzQ1NTQsMzQ1MTgsMzQ1NDksMzQ2MzcsMzQ1NTIsMzQ1NzQsMzQ1NjksMzQ1NjEsMzQ1NTAsMzQ1NzMsMzQ1NjUsMzUwMzAsMzUwMTksMzUwMjEs''@;'; put 'put ''MzUwMjIsMzUwMzgsMzUwMzUsMzUwMzQsMzUwMjAsMzUwMjQsMzUyMDUsMzUyMjcsMzUyOTUsMzUzMDEsMzUzMDAsMzUyOTcsMzUyOTYsMzUyOTgsMzUyOTIsMzUzMDIsMzU0NDYsMzU0NjIsMzU0NTUsMzU0MjUsMzUzOTEsMzU0NDcsMzU0NTgsMzU0NjAsMzU0NDUsMzU0NTksMzU0NTcsMzU0''@;'; put 'put ''NDQsMzU0NTAsMzU5MDAsMzU5MTUsMzU5MTQsMzU5NDEsMzU5NDAsMzU5NDIsMzU5NzQsMzU5NzIsMzU5NzMsMzYwNDQsMzYyMDAsMzYyMDEsMzYyNDEsMzYyMzYsMzYyMzgsMzYyMzksMzYyMzcsMzYyNDMsMzYyNDQsMzYyNDAsMzYyNDIsMzYzMzYsMzYzMjAsMzYzMzIsMzYzMzcsMzYzMzQs''@;'; put 'put ''MzYzMDQsMzYzMjksMzYzMjMsMzYzMjIsMzYzMjcsMzYzMzgsMzYzMzEsMzYzNDAsMzY2MTQsMzY2MDcsMzY2MDksMzY2MDgsMzY2MTMsMzY2MTUsMzY2MTYsMzY2MTAsMzY2MTksMzY5NDYsMzY5MjcsMzY5MzIsMzY5MzcsMzY5MjUsMzcxMzYsMzcxMzMsMzcxMzUsMzcxMzcsMzcxNDIsMzcx''@;'; put 'put ''NDAsMzcxMzEsMzcxMzQsMzcyMzAsMzcyMzEsMzc0NDgsMzc0NTgsMzc0MjQsMzc0MzQsMzc0NzgsMzc0MjcsMzc0NzcsMzc0NzAsMzc1MDcsMzc0MjIsMzc0NTAsMzc0NDYsMzc0ODUsMzc0ODQsMzc0NTUsMzc0NzIsMzc0NzksMzc0ODcsMzc0MzAsMzc0NzMsMzc0ODgsMzc0MjUsMzc0NjAs''@;'; put 'put ''Mzc0NzUsMzc0NTYsMzc0OTAsMzc0NTQsMzc0NTksMzc0NTIsMzc0NjIsMzc0MjYsMzgzMDMsMzgzMDAsMzgzMDIsMzgyOTksMzg1NDYsMzg1NDcsMzg1NDUsMzg1NTEsMzg2MDYsMzg2NTAsMzg2NTMsMzg2NDgsMzg2NDUsMzg3NzEsMzg3NzUsMzg3NzYsMzg3NzAsMzg5MjcsMzg5MjUsMzg5''@;'; put 'put ''MjYsMzkwODQsMzkxNTgsMzkxNjEsMzkzNDMsMzkzNDYsMzkzNDQsMzkzNDksMzk1OTcsMzk1OTUsMzk3NzEsNDAxNzAsNDAxNzMsNDAxNjcsNDA1NzYsNDA3MDEsMjA3MTAsMjA2OTIsMjA2OTUsMjA3MTIsMjA3MjMsMjA2OTksMjA3MTQsMjA3MDEsMjA3MDgsMjA2OTEsMjA3MTYsMjA3MjAs''@;'; put 'put ''MjA3MTksMjA3MDcsMjA3MDQsMjA5NTIsMjExMjAsMjExMjEsMjEyMjUsMjEyMjcsMjEyOTYsMjE0MjAsMjIwNTUsMjIwMzcsMjIwMjgsMjIwMzQsMjIwMTIsMjIwMzEsMjIwNDQsMjIwMTcsMjIwMzUsMjIwMTgsMjIwMTAsMjIwNDUsMjIwMjAsMjIwMTUsMjIwMDksMjI2NjUsMjI2NTIsMjI2''@;'; put 'put ''NzIsMjI2ODAsMjI2NjIsMjI2NTcsMjI2NTUsMjI2NDQsMjI2NjcsMjI2NTAsMjI2NjMsMjI2NzMsMjI2NzAsMjI2NDYsMjI2NTgsMjI2NjQsMjI2NTEsMjI2NzYsMjI2NzEsMjI3ODIsMjI4OTEsMjMyNjAsMjMyNzgsMjMyNjksMjMyNTMsMjMyNzQsMjMyNTgsMjMyNzcsMjMyNzUsMjMyODMs''@;'; put 'put ''MjMyNjYsMjMyNjQsMjMyNTksMjMyNzYsMjMyNjIsMjMyNjEsMjMyNTcsMjMyNzIsMjMyNjMsMjM0MTUsMjM1MjAsMjM1MjMsMjM2NTEsMjM5MzgsMjM5MzYsMjM5MzMsMjM5NDIsMjM5MzAsMjM5MzcsMjM5MjcsMjM5NDYsMjM5NDUsMjM5NDQsMjM5MzQsMjM5MzIsMjM5NDksMjM5MjksMjM5''@;'; put 'put ''MzUsMjQxNTIsMjQxNTMsMjQxNDcsMjQyODAsMjQyNzMsMjQyNzksMjQyNzAsMjQyODQsMjQyNzcsMjQyODEsMjQyNzQsMjQyNzYsMjQzODgsMjQzODcsMjQ0MzEsMjQ1MDIsMjQ4NzYsMjQ4NzIsMjQ4OTcsMjQ5MjYsMjQ5NDUsMjQ5NDcsMjQ5MTQsMjQ5MTUsMjQ5NDYsMjQ5NDAsMjQ5NjAs''@;'; put 'put ''MjQ5NDgsMjQ5MTYsMjQ5NTQsMjQ5MjMsMjQ5MzMsMjQ4OTEsMjQ5MzgsMjQ5MjksMjQ5MTgsMjUxMjksMjUxMjcsMjUxMzEsMjU2NDMsMjU2NzcsMjU2OTEsMjU2OTMsMjU3MTYsMjU3MTgsMjU3MTQsMjU3MTUsMjU3MjUsMjU3MTcsMjU3MDIsMjU3NjYsMjU2NzgsMjU3MzAsMjU2OTQsMjU2''@;'; put 'put ''OTIsMjU2NzUsMjU2ODMsMjU2OTYsMjU2ODAsMjU3MjcsMjU2NjMsMjU3MDgsMjU3MDcsMjU2ODksMjU3MDEsMjU3MTksMjU5NzEsMjYwMTYsMjYyNzMsMjYyNzIsMjYyNzEsMjYzNzMsMjYzNzIsMjY0MDIsMjcwNTcsMjcwNjIsMjcwODEsMjcwNDAsMjcwODYsMjcwMzAsMjcwNTYsMjcwNTIs''@;'; put 'put ''MjcwNjgsMjcwMjUsMjcwMzMsMjcwMjIsMjcwNDcsMjcwMjEsMjcwNDksMjcwNzAsMjcwNTUsMjcwNzEsMjcwNzYsMjcwNjksMjcwNDQsMjcwOTIsMjcwNjUsMjcwODIsMjcwMzQsMjcwODcsMjcwNTksMjcwMjcsMjcwNTAsMjcwNDEsMjcwMzgsMjcwOTcsMjcwMzEsMjcwMjQsMjcwNzQsMjcw''@;'; put 'put ''NjEsMjcwNDUsMjcwNzgsMjc0NjYsMjc0NjksMjc0NjcsMjc1NTAsMjc1NTEsMjc1NTIsMjc1ODcsMjc1ODgsMjc2NDYsMjgzNjYsMjg0MDUsMjg0MDEsMjg0MTksMjg0NTMsMjg0MDgsMjg0NzEsMjg0MTEsMjg0NjIsMjg0MjUsMjg0OTQsMjg0NDEsMjg0NDIsMjg0NTUsMjg0NDAsMjg0NzUs''@;'; put 'put ''Mjg0MzQsMjgzOTcsMjg0MjYsMjg0NzAsMjg1MzEsMjg0MDksMjgzOTgsMjg0NjEsMjg0ODAsMjg0NjQsMjg0NzYsMjg0NjksMjgzOTUsMjg0MjMsMjg0MzAsMjg0ODMsMjg0MjEsMjg0MTMsMjg0MDYsMjg0NzMsMjg0NDQsMjg0MTIsMjg0NzQsMjg0NDcsMjg0MjksMjg0NDYsMjg0MjQsMjg0''@;'; put 'put ''NDksMjkwNjMsMjkwNzIsMjkwNjUsMjkwNTYsMjkwNjEsMjkwNTgsMjkwNzEsMjkwNTEsMjkwNjIsMjkwNTcsMjkwNzksMjkyNTIsMjkyNjcsMjkzMzUsMjkzMzMsMjkzMzEsMjk1MDcsMjk1MTcsMjk1MjEsMjk1MTYsMjk3OTQsMjk4MTEsMjk4MDksMjk4MTMsMjk4MTAsMjk3OTksMjk4MDYs''@;'; put 'put ''Mjk5NTIsMjk5NTQsMjk5NTUsMzAwNzcsMzAwOTYsMzAyMzAsMzAyMTYsMzAyMjAsMzAyMjksMzAyMjUsMzAyMTgsMzAyMjgsMzAzOTIsMzA1OTMsMzA1ODgsMzA1OTcsMzA1OTQsMzA1NzQsMzA1OTIsMzA1NzUsMzA1OTAsMzA1OTUsMzA4OTgsMzA4OTAsMzA5MDAsMzA4OTMsMzA4ODgsMzA4''@;'; put 'put ''NDYsMzA4OTEsMzA4NzgsMzA4ODUsMzA4ODAsMzA4OTIsMzA4ODIsMzA4ODQsMzExMjgsMzExMTQsMzExMTUsMzExMjYsMzExMjUsMzExMjQsMzExMjMsMzExMjcsMzExMTIsMzExMjIsMzExMjAsMzEyNzUsMzEzMDYsMzEyODAsMzEyNzksMzEyNzIsMzEyNzAsMzE0MDAsMzE0MDMsMzE0MDQs''@;'; put 'put ''MzE0NzAsMzE2MjQsMzE2NDQsMzE2MjYsMzE2MzMsMzE2MzIsMzE2MzgsMzE2MjksMzE2MjgsMzE2NDMsMzE2MzAsMzE2MjEsMzE2NDAsMjExMjQsMzE2NDEsMzE2NTIsMzE2MTgsMzE5MzEsMzE5MzUsMzE5MzIsMzE5MzAsMzIxNjcsMzIxODMsMzIxOTQsMzIxNjMsMzIxNzAsMzIxOTMsMzIx''@;'; put 'put ''OTIsMzIxOTcsMzIxNTcsMzIyMDYsMzIxOTYsMzIxOTgsMzIyMDMsMzIyMDQsMzIxNzUsMzIxODUsMzIxNTAsMzIxODgsMzIxNTksMzIxNjYsMzIxNzQsMzIxNjksMzIxNjEsMzIyMDEsMzI2MjcsMzI3MzgsMzI3MzksMzI3NDEsMzI3MzQsMzI4MDQsMzI4NjEsMzI4NjAsMzMxNjEsMzMxNTgs''@;'; put 'put ''MzMxNTUsMzMxNTksMzMxNjUsMzMxNjQsMzMxNjMsMzMzMDEsMzM5NDMsMzM5NTYsMzM5NTMsMzM5NTEsMzM5NzgsMzM5OTgsMzM5ODYsMzM5NjQsMzM5NjYsMzM5NjMsMzM5NzcsMzM5NzIsMzM5ODUsMzM5OTcsMzM5NjIsMzM5NDYsMzM5NjksMzRlMywzMzk0OSwzMzk1OSwzMzk3OSwzMzk1''@;'; put 'put ''NCwzMzk0MCwzMzk5MSwzMzk5NiwzMzk0NywzMzk2MSwzMzk2NywzMzk2MCwzNDAwNiwzMzk0NCwzMzk3NCwzMzk5OSwzMzk1MiwzNDAwNywzNDAwNCwzNDAwMiwzNDAxMSwzMzk2OCwzMzkzNywzNDQwMSwzNDYxMSwzNDU5NSwzNDYwMCwzNDY2NywzNDYyNCwzNDYwNiwzNDU5MCwzNDU5Mywz''@;'; put 'put ''NDU4NSwzNDU4NywzNDYyNywzNDYwNCwzNDYyNSwzNDYyMiwzNDYzMCwzNDU5MiwzNDYxMCwzNDYwMiwzNDYwNSwzNDYyMCwzNDU3OCwzNDYxOCwzNDYwOSwzNDYxMywzNDYyNiwzNDU5OCwzNDU5OSwzNDYxNiwzNDU5NiwzNDU4NiwzNDYwOCwzNDU3NywzNTA2MywzNTA0NywzNTA1NywzNTA1''@;'; put 'put ''OCwzNTA2NiwzNTA3MCwzNTA1NCwzNTA2OCwzNTA2MiwzNTA2NywzNTA1NiwzNTA1MiwzNTA1MSwzNTIyOSwzNTIzMywzNTIzMSwzNTIzMCwzNTMwNSwzNTMwNywzNTMwNCwzNTQ5OSwzNTQ4MSwzNTQ2NywzNTQ3NCwzNTQ3MSwzNTQ3OCwzNTkwMSwzNTk0NCwzNTk0NSwzNjA1MywzNjA0Nywz''@;'; put 'put ''NjA1NSwzNjI0NiwzNjM2MSwzNjM1NCwzNjM1MSwzNjM2NSwzNjM0OSwzNjM2MiwzNjM1NSwzNjM1OSwzNjM1OCwzNjM1NywzNjM1MCwzNjM1MiwzNjM1NiwzNjYyNCwzNjYyNSwzNjYyMiwzNjYyMSwzNzE1NSwzNzE0OCwzNzE1MiwzNzE1NCwzNzE1MSwzNzE0OSwzNzE0NiwzNzE1NiwzNzE1''@;'; put 'put ''MywzNzE0NywzNzI0MiwzNzIzNCwzNzI0MSwzNzIzNSwzNzU0MSwzNzU0MCwzNzQ5NCwzNzUzMSwzNzQ5OCwzNzUzNiwzNzUyNCwzNzU0NiwzNzUxNywzNzU0MiwzNzUzMCwzNzU0NywzNzQ5NywzNzUyNywzNzUwMywzNzUzOSwzNzYxNCwzNzUxOCwzNzUwNiwzNzUyNSwzNzUzOCwzNzUwMSwz''@;'; put 'put ''NzUxMiwzNzUzNywzNzUxNCwzNzUxMCwzNzUxNiwzNzUyOSwzNzU0MywzNzUwMiwzNzUxMSwzNzU0NSwzNzUzMywzNzUxNSwzNzQyMSwzODU1OCwzODU2MSwzODY1NSwzODc0NCwzODc4MSwzODc3OCwzODc4MiwzODc4NywzODc4NCwzODc4NiwzODc3OSwzODc4OCwzODc4NSwzODc4MywzODg2''@;'; put 'put ''MiwzODg2MSwzODkzNCwzOTA4NSwzOTA4NiwzOTE3MCwzOTE2OCwzOTE3NSwzOTMyNSwzOTMyNCwzOTM2MywzOTM1MywzOTM1NSwzOTM1NCwzOTM2MiwzOTM1NywzOTM2NywzOTYwMSwzOTY1MSwzOTY1NSwzOTc0MiwzOTc0MywzOTc3NiwzOTc3NywzOTc3NSw0MDE3Nyw0MDE3OCw0MDE4MSw0''@;'; put 'put ''MDYxNSwyMDczNSwyMDczOSwyMDc4NCwyMDcyOCwyMDc0MiwyMDc0MywyMDcyNiwyMDczNCwyMDc0NywyMDc0OCwyMDczMywyMDc0NiwyMTEzMSwyMTEzMiwyMTIzMywyMTIzMSwyMjA4OCwyMjA4MiwyMjA5MiwyMjA2OSwyMjA4MSwyMjA5MCwyMjA4OSwyMjA4NiwyMjEwNCwyMjEwNiwyMjA4''@;'; put 'put ''MCwyMjA2NywyMjA3NywyMjA2MCwyMjA3OCwyMjA3MiwyMjA1OCwyMjA3NCwyMjI5OCwyMjY5OSwyMjY4NSwyMjcwNSwyMjY4OCwyMjY5MSwyMjcwMywyMjcwMCwyMjY5MywyMjY4OSwyMjc4MywyMzI5NSwyMzI4NCwyMzI5MywyMzI4NywyMzI4NiwyMzI5OSwyMzI4OCwyMzI5OCwyMzI4OSwy''@;'; put 'put ''MzI5NywyMzMwMywyMzMwMSwyMzMxMSwyMzY1NSwyMzk2MSwyMzk1OSwyMzk2NywyMzk1NCwyMzk3MCwyMzk1NSwyMzk1NywyMzk2OCwyMzk2NCwyMzk2OSwyMzk2MiwyMzk2NiwyNDE2OSwyNDE1NywyNDE2MCwyNDE1NiwzMjI0MywyNDI4MywyNDI4NiwyNDI4OSwyNDM5MywyNDQ5OCwyNDk3''@;'; put 'put ''MSwyNDk2MywyNDk1MywyNTAwOSwyNTAwOCwyNDk5NCwyNDk2OSwyNDk4NywyNDk3OSwyNTAwNywyNTAwNSwyNDk5MSwyNDk3OCwyNTAwMiwyNDk5MywyNDk3MywyNDkzNCwyNTAxMSwyNTEzMywyNTcxMCwyNTcxMiwyNTc1MCwyNTc2MCwyNTczMywyNTc1MSwyNTc1NiwyNTc0MywyNTczOSwy''@;'; put 'put ''NTczOCwyNTc0MCwyNTc2MywyNTc1OSwyNTcwNCwyNTc3NywyNTc1MiwyNTk3NCwyNTk3OCwyNTk3NywyNTk3OSwyNjAzNCwyNjAzNSwyNjI5MywyNjI4OCwyNjI4MSwyNjI5MCwyNjI5NSwyNjI4MiwyNjI4NywyNzEzNiwyNzE0MiwyNzE1OSwyNzEwOSwyNzEyOCwyNzE1NywyNzEyMSwyNzEw''@;'; put 'put ''OCwyNzE2OCwyNzEzNSwyNzExNiwyNzEwNiwyNzE2MywyNzE2NSwyNzEzNCwyNzE3NSwyNzEyMiwyNzExOCwyNzE1NiwyNzEyNywyNzExMSwyNzIwMCwyNzE0NCwyNzExMCwyNzEzMSwyNzE0OSwyNzEzMiwyNzExNSwyNzE0NSwyNzE0MCwyNzE2MCwyNzE3MywyNzE1MSwyNzEyNiwyNzE3NCwy''@;'; put 'put ''NzE0MywyNzEyNCwyNzE1OCwyNzQ3MywyNzU1NywyNzU1NSwyNzU1NCwyNzU1OCwyNzY0OSwyNzY0OCwyNzY0NywyNzY1MCwyODQ4MSwyODQ1NCwyODU0MiwyODU1MSwyODYxNCwyODU2MiwyODU1NywyODU1MywyODU1NiwyODUxNCwyODQ5NSwyODU0OSwyODUwNiwyODU2NiwyODUzNCwyODUy''@;'; put 'put ''NCwyODU0NiwyODUwMSwyODUzMCwyODQ5OCwyODQ5NiwyODUwMywyODU2NCwyODU2MywyODUwOSwyODQxNiwyODUxMywyODUyMywyODU0MSwyODUxOSwyODU2MCwyODQ5OSwyODU1NSwyODUyMSwyODU0MywyODU2NSwyODUxNSwyODUzNSwyODUyMiwyODUzOSwyOTEwNiwyOTEwMywyOTA4Mywy''@;'; put 'put ''OTEwNCwyOTA4OCwyOTA4MiwyOTA5NywyOTEwOSwyOTA4NSwyOTA5MywyOTA4NiwyOTA5MiwyOTA4OSwyOTA5OCwyOTA4NCwyOTA5NSwyOTEwNywyOTMzNiwyOTMzOCwyOTUyOCwyOTUyMiwyOTUzNCwyOTUzNSwyOTUzNiwyOTUzMywyOTUzMSwyOTUzNywyOTUzMCwyOTUyOSwyOTUzOCwyOTgz''@;'; put 'put ''MSwyOTgzMywyOTgzNCwyOTgzMCwyOTgyNSwyOTgyMSwyOTgyOSwyOTgzMiwyOTgyMCwyOTgxNywyOTk2MCwyOTk1OSwzMDA3OCwzMDI0NSwzMDIzOCwzMDIzMywzMDIzNywzMDIzNiwzMDI0MywzMDIzNCwzMDI0OCwzMDIzNSwzMDM2NCwzMDM2NSwzMDM2NiwzMDM2MywzMDYwNSwzMDYwNywz''@;'; put 'put ''MDYwMSwzMDYwMCwzMDkyNSwzMDkwNywzMDkyNywzMDkyNCwzMDkyOSwzMDkyNiwzMDkzMiwzMDkyMCwzMDkxNSwzMDkxNiwzMDkyMSwzMTEzMCwzMTEzNywzMTEzNiwzMTEzMiwzMTEzOCwzMTEzMSwyNzUxMCwzMTI4OSwzMTQxMCwzMTQxMiwzMTQxMSwzMTY3MSwzMTY5MSwzMTY3OCwzMTY2''@;'; put 'put ''MCwzMTY5NCwzMTY2MywzMTY3MywzMTY5MCwzMTY2OSwzMTk0MSwzMTk0NCwzMTk0OCwzMTk0NywzMjI0NywzMjIxOSwzMjIzNCwzMjIzMSwzMjIxNSwzMjIyNSwzMjI1OSwzMjI1MCwzMjIzMCwzMjI0NiwzMjI0MSwzMjI0MCwzMjIzOCwzMjIyMywzMjYzMCwzMjY4NCwzMjY4OCwzMjY4NSwz''@;'; put 'put ''Mjc0OSwzMjc0NywzMjc0NiwzMjc0OCwzMjc0MiwzMjc0NCwzMjg2OCwzMjg3MSwzMzE4NywzMzE4MywzMzE4MiwzMzE3MywzMzE4NiwzMzE3NywzMzE3NSwzMzMwMiwzMzM1OSwzMzM2MywzMzM2MiwzMzM2MCwzMzM1OCwzMzM2MSwzNDA4NCwzNDEwNywzNDA2MywzNDA0OCwzNDA4OSwzNDA2''@;'; put 'put ''MiwzNDA1NywzNDA2MSwzNDA3OSwzNDA1OCwzNDA4NywzNDA3NiwzNDA0MywzNDA5MSwzNDA0MiwzNDA1NiwzNDA2MCwzNDAzNiwzNDA5MCwzNDAzNCwzNDA2OSwzNDAzOSwzNDAyNywzNDAzNSwzNDA0NCwzNDA2NiwzNDAyNiwzNDAyNSwzNDA3MCwzNDA0NiwzNDA4OCwzNDA3NywzNDA5NCwz''@;'; put 'put ''NDA1MCwzNDA0NSwzNDA3OCwzNDAzOCwzNDA5NywzNDA4NiwzNDAyMywzNDAyNCwzNDAzMiwzNDAzMSwzNDA0MSwzNDA3MiwzNDA4MCwzNDA5NiwzNDA1OSwzNDA3MywzNDA5NSwzNDQwMiwzNDY0NiwzNDY1OSwzNDY2MCwzNDY3OSwzNDc4NSwzNDY3NSwzNDY0OCwzNDY0NCwzNDY1MSwzNDY0''@;'; put 'put ''MiwzNDY1NywzNDY1MCwzNDY0MSwzNDY1NCwzNDY2OSwzNDY2NiwzNDY0MCwzNDYzOCwzNDY1NSwzNDY1MywzNDY3MSwzNDY2OCwzNDY4MiwzNDY3MCwzNDY1MiwzNDY2MSwzNDYzOSwzNDY4MywzNDY3NywzNDY1OCwzNDY2MywzNDY2NSwzNDkwNiwzNTA3NywzNTA4NCwzNTA5MiwzNTA4Mywz''@;'; put 'put ''NTA5NSwzNTA5NiwzNTA5NywzNTA3OCwzNTA5NCwzNTA4OSwzNTA4NiwzNTA4MSwzNTIzNCwzNTIzNiwzNTIzNSwzNTMwOSwzNTMxMiwzNTMwOCwzNTUzNSwzNTUyNiwzNTUxMiwzNTUzOSwzNTUzNywzNTU0MCwzNTU0MSwzNTUxNSwzNTU0MywzNTUxOCwzNTUyMCwzNTUyNSwzNTU0NCwzNTUy''@;'; put 'put ''MywzNTUxNCwzNTUxNywzNTU0NSwzNTkwMiwzNTkxNywzNTk4MywzNjA2OSwzNjA2MywzNjA1NywzNjA3MiwzNjA1OCwzNjA2MSwzNjA3MSwzNjI1NiwzNjI1MiwzNjI1NywzNjI1MSwzNjM4NCwzNjM4NywzNjM4OSwzNjM4OCwzNjM5OCwzNjM3MywzNjM3OSwzNjM3NCwzNjM2OSwzNjM3Nywz''@;'; put 'put ''NjM5MCwzNjM5MSwzNjM3MiwzNjM3MCwzNjM3NiwzNjM3MSwzNjM4MCwzNjM3NSwzNjM3OCwzNjY1MiwzNjY0NCwzNjYzMiwzNjYzNCwzNjY0MCwzNjY0MywzNjYzMCwzNjYzMSwzNjk3OSwzNjk3NiwzNjk3NSwzNjk2NywzNjk3MSwzNzE2NywzNzE2MywzNzE2MSwzNzE2MiwzNzE3MCwzNzE1''@;'; put 'put ''OCwzNzE2NiwzNzI1MywzNzI1NCwzNzI1OCwzNzI0OSwzNzI1MCwzNzI1MiwzNzI0OCwzNzU4NCwzNzU3MSwzNzU3MiwzNzU2OCwzNzU5MywzNzU1OCwzNzU4MywzNzYxNywzNzU5OSwzNzU5MiwzNzYwOSwzNzU5MSwzNzU5NywzNzU4MCwzNzYxNSwzNzU3MCwzNzYwOCwzNzU3OCwzNzU3Niwz''@;'; put 'put ''NzU4MiwzNzYwNiwzNzU4MSwzNzU4OSwzNzU3NywzNzYwMCwzNzU5OCwzNzYwNywzNzU4NSwzNzU4NywzNzU1NywzNzYwMSwzNzU3NCwzNzU1NiwzODI2OCwzODMxNiwzODMxNSwzODMxOCwzODMyMCwzODU2NCwzODU2MiwzODYxMSwzODY2MSwzODY2NCwzODY1OCwzODc0NiwzODc5NCwzODc5''@;'; put 'put ''OCwzODc5MiwzODg2NCwzODg2MywzODk0MiwzODk0MSwzODk1MCwzODk1MywzODk1MiwzODk0NCwzODkzOSwzODk1MSwzOTA5MCwzOTE3NiwzOTE2MiwzOTE4NSwzOTE4OCwzOTE5MCwzOTE5MSwzOTE4OSwzOTM4OCwzOTM3MywzOTM3NSwzOTM3OSwzOTM4MCwzOTM3NCwzOTM2OSwzOTM4Miwz''@;'; put 'put ''OTM4NCwzOTM3MSwzOTM4MywzOTM3MiwzOTYwMywzOTY2MCwzOTY1OSwzOTY2NywzOTY2NiwzOTY2NSwzOTc1MCwzOTc0NywzOTc4MywzOTc5NiwzOTc5MywzOTc4MiwzOTc5OCwzOTc5NywzOTc5MiwzOTc4NCwzOTc4MCwzOTc4OCw0MDE4OCw0MDE4Niw0MDE4OSw0MDE5MSw0MDE4Myw0MDE5''@;'; put 'put ''OSw0MDE5Miw0MDE4NSw0MDE4Nyw0MDIwMCw0MDE5Nyw0MDE5Niw0MDU3OSw0MDY1OSw0MDcxOSw0MDcyMCwyMDc2NCwyMDc1NSwyMDc1OSwyMDc2MiwyMDc1MywyMDk1OCwyMTMwMCwyMTQ3MywyMjEyOCwyMjExMiwyMjEyNiwyMjEzMSwyMjExOCwyMjExNSwyMjEyNSwyMjEzMCwyMjExMCwy''@;'; put 'put ''MjEzNSwyMjMwMCwyMjI5OSwyMjcyOCwyMjcxNywyMjcyOSwyMjcxOSwyMjcxNCwyMjcyMiwyMjcxNiwyMjcyNiwyMzMxOSwyMzMyMSwyMzMyMywyMzMyOSwyMzMxNiwyMzMxNSwyMzMxMiwyMzMxOCwyMzMzNiwyMzMyMiwyMzMyOCwyMzMyNiwyMzUzNSwyMzk4MCwyMzk4NSwyMzk3NywyMzk3''@;'; put 'put ''NSwyMzk4OSwyMzk4NCwyMzk4MiwyMzk3OCwyMzk3NiwyMzk4NiwyMzk4MSwyMzk4MywyMzk4OCwyNDE2NywyNDE2OCwyNDE2NiwyNDE3NSwyNDI5NywyNDI5NSwyNDI5NCwyNDI5NiwyNDI5MywyNDM5NSwyNDUwOCwyNDk4OSwyNWUzLDI0OTgyLDI1MDI5LDI1MDEyLDI1MDMwLDI1MDI1LDI1''@;'; put 'put ''MDM2LDI1MDE4LDI1MDIzLDI1MDE2LDI0OTcyLDI1ODE1LDI1ODE0LDI1ODA4LDI1ODA3LDI1ODAxLDI1Nzg5LDI1NzM3LDI1Nzk1LDI1ODE5LDI1ODQzLDI1ODE3LDI1OTA3LDI1OTgzLDI1OTgwLDI2MDE4LDI2MzEyLDI2MzAyLDI2MzA0LDI2MzE0LDI2MzE1LDI2MzE5LDI2MzAxLDI2Mjk5''@;'; put 'put ''LDI2Mjk4LDI2MzE2LDI2NDAzLDI3MTg4LDI3MjM4LDI3MjA5LDI3MjM5LDI3MTg2LDI3MjQwLDI3MTk4LDI3MjI5LDI3MjQ1LDI3MjU0LDI3MjI3LDI3MjE3LDI3MTc2LDI3MjI2LDI3MTk1LDI3MTk5LDI3MjAxLDI3MjQyLDI3MjM2LDI3MjE2LDI3MjE1LDI3MjIwLDI3MjQ3LDI3MjQxLDI3''@;'; put 'put ''MjMyLDI3MTk2LDI3MjMwLDI3MjIyLDI3MjIxLDI3MjEzLDI3MjE0LDI3MjA2LDI3NDc3LDI3NDc2LDI3NDc4LDI3NTU5LDI3NTYyLDI3NTYzLDI3NTkyLDI3NTkxLDI3NjUyLDI3NjUxLDI3NjU0LDI4NTg5LDI4NjE5LDI4NTc5LDI4NjE1LDI4NjA0LDI4NjIyLDI4NjE2LDI4NTEwLDI4NjEy''@;'; put 'put ''LDI4NjA1LDI4NTc0LDI4NjE4LDI4NTg0LDI4Njc2LDI4NTgxLDI4NTkwLDI4NjAyLDI4NTg4LDI4NTg2LDI4NjIzLDI4NjA3LDI4NjAwLDI4NTc4LDI4NjE3LDI4NTg3LDI4NjIxLDI4NTkxLDI4NTk0LDI4NTkyLDI5MTI1LDI5MTIyLDI5MTE5LDI5MTEyLDI5MTQyLDI5MTIwLDI5MTIxLDI5''@;'; put 'put ''MTMxLDI5MTQwLDI5MTMwLDI5MTI3LDI5MTM1LDI5MTE3LDI5MTQ0LDI5MTE2LDI5MTI2LDI5MTQ2LDI5MTQ3LDI5MzQxLDI5MzQyLDI5NTQ1LDI5NTQyLDI5NTQzLDI5NTQ4LDI5NTQxLDI5NTQ3LDI5NTQ2LDI5ODIzLDI5ODUwLDI5ODU2LDI5ODQ0LDI5ODQyLDI5ODQ1LDI5ODU3LDI5OTYz''@;'; put 'put ''LDMwMDgwLDMwMjU1LDMwMjUzLDMwMjU3LDMwMjY5LDMwMjU5LDMwMjY4LDMwMjYxLDMwMjU4LDMwMjU2LDMwMzk1LDMwNDM4LDMwNjE4LDMwNjIxLDMwNjI1LDMwNjIwLDMwNjE5LDMwNjI2LDMwNjI3LDMwNjEzLDMwNjE3LDMwNjE1LDMwOTQxLDMwOTUzLDMwOTQ5LDMwOTU0LDMwOTQyLDMw''@;'; put 'put ''OTQ3LDMwOTM5LDMwOTQ1LDMwOTQ2LDMwOTU3LDMwOTQzLDMwOTQ0LDMxMTQwLDMxMzAwLDMxMzA0LDMxMzAzLDMxNDE0LDMxNDE2LDMxNDEzLDMxNDA5LDMxNDE1LDMxNzEwLDMxNzE1LDMxNzE5LDMxNzA5LDMxNzAxLDMxNzE3LDMxNzA2LDMxNzIwLDMxNzM3LDMxNzAwLDMxNzIyLDMxNzE0''@;'; put 'put ''LDMxNzA4LDMxNzIzLDMxNzA0LDMxNzExLDMxOTU0LDMxOTU2LDMxOTU5LDMxOTUyLDMxOTUzLDMyMjc0LDMyMjg5LDMyMjc5LDMyMjY4LDMyMjg3LDMyMjg4LDMyMjc1LDMyMjcwLDMyMjg0LDMyMjc3LDMyMjgyLDMyMjkwLDMyMjY3LDMyMjcxLDMyMjc4LDMyMjY5LDMyMjc2LDMyMjkzLDMy''@;'; put 'put ''MjkyLDMyNTc5LDMyNjM1LDMyNjM2LDMyNjM0LDMyNjg5LDMyNzUxLDMyODEwLDMyODA5LDMyODc2LDMzMjAxLDMzMTkwLDMzMTk4LDMzMjA5LDMzMjA1LDMzMTk1LDMzMjAwLDMzMTk2LDMzMjA0LDMzMjAyLDMzMjA3LDMzMTkxLDMzMjY2LDMzMzY1LDMzMzY2LDMzMzY3LDM0MTM0LDM0MTE3''@;'; put 'put ''LDM0MTU1LDM0MTI1LDM0MTMxLDM0MTQ1LDM0MTM2LDM0MTEyLDM0MTE4LDM0MTQ4LDM0MTEzLDM0MTQ2LDM0MTE2LDM0MTI5LDM0MTE5LDM0MTQ3LDM0MTEwLDM0MTM5LDM0MTYxLDM0MTI2LDM0MTU4LDM0MTY1LDM0MTMzLDM0MTUxLDM0MTQ0LDM0MTg4LDM0MTUwLDM0MTQxLDM0MTMyLDM0''@;'; put 'put ''MTQ5LDM0MTU2LDM0NDAzLDM0NDA1LDM0NDA0LDM0NzE1LDM0NzAzLDM0NzExLDM0NzA3LDM0NzA2LDM0Njk2LDM0Njg5LDM0NzEwLDM0NzEyLDM0NjgxLDM0Njk1LDM0NzIzLDM0NjkzLDM0NzA0LDM0NzA1LDM0NzE3LDM0NjkyLDM0NzA4LDM0NzE2LDM0NzE0LDM0Njk3LDM1MTAyLDM1MTEw''@;'; put 'put ''LDM1MTIwLDM1MTE3LDM1MTE4LDM1MTExLDM1MTIxLDM1MTA2LDM1MTEzLDM1MTA3LDM1MTE5LDM1MTE2LDM1MTAzLDM1MzEzLDM1NTUyLDM1NTU0LDM1NTcwLDM1NTcyLDM1NTczLDM1NTQ5LDM1NjA0LDM1NTU2LDM1NTUxLDM1NTY4LDM1NTI4LDM1NTUwLDM1NTUzLDM1NTYwLDM1NTgzLDM1''@;'; put 'put ''NTY3LDM1NTc5LDM1OTg1LDM1OTg2LDM1OTg0LDM2MDg1LDM2MDc4LDM2MDgxLDM2MDgwLDM2MDgzLDM2MjA0LDM2MjA2LDM2MjYxLDM2MjYzLDM2NDAzLDM2NDE0LDM2NDA4LDM2NDE2LDM2NDIxLDM2NDA2LDM2NDEyLDM2NDEzLDM2NDE3LDM2NDAwLDM2NDE1LDM2NTQxLDM2NjYyLDM2NjU0''@;'; put 'put ''LDM2NjYxLDM2NjU4LDM2NjY1LDM2NjYzLDM2NjYwLDM2OTgyLDM2OTg1LDM2OTg3LDM2OTk4LDM3MTE0LDM3MTcxLDM3MTczLDM3MTc0LDM3MjY3LDM3MjY0LDM3MjY1LDM3MjYxLDM3MjYzLDM3NjcxLDM3NjYyLDM3NjQwLDM3NjYzLDM3NjM4LDM3NjQ3LDM3NzU0LDM3Njg4LDM3NjkyLDM3''@;'; put 'put ''NjU5LDM3NjY3LDM3NjUwLDM3NjMzLDM3NzAyLDM3Njc3LDM3NjQ2LDM3NjQ1LDM3NTc5LDM3NjYxLDM3NjI2LDM3NjY5LDM3NjUxLDM3NjI1LDM3NjIzLDM3Njg0LDM3NjM0LDM3NjY4LDM3NjMxLDM3NjczLDM3Njg5LDM3Njg1LDM3Njc0LDM3NjUyLDM3NjQ0LDM3NjQzLDM3NjMwLDM3NjQx''@;'; put 'put ''LDM3NjMyLDM3NjI3LDM3NjU0LDM4MzMyLDM4MzQ5LDM4MzM0LDM4MzI5LDM4MzMwLDM4MzI2LDM4MzM1LDM4MzI1LDM4MzMzLDM4NTY5LDM4NjEyLDM4NjY3LDM4Njc0LDM4NjcyLDM4ODA5LDM4ODA3LDM4ODA0LDM4ODk2LDM4OTA0LDM4OTY1LDM4OTU5LDM4OTYyLDM5MjA0LDM5MTk5LDM5''@;'; put 'put ''MjA3LDM5MjA5LDM5MzI2LDM5NDA2LDM5NDA0LDM5Mzk3LDM5Mzk2LDM5NDA4LDM5Mzk1LDM5NDAyLDM5NDAxLDM5Mzk5LDM5NjA5LDM5NjE1LDM5NjA0LDM5NjExLDM5NjcwLDM5Njc0LDM5NjczLDM5NjcxLDM5NzMxLDM5ODA4LDM5ODEzLDM5ODE1LDM5ODA0LDM5ODA2LDM5ODAzLDM5ODEw''@;'; put 'put ''LDM5ODI3LDM5ODI2LDM5ODI0LDM5ODAyLDM5ODI5LDM5ODA1LDM5ODE2LDQwMjI5LDQwMjE1LDQwMjI0LDQwMjIyLDQwMjEyLDQwMjMzLDQwMjIxLDQwMjE2LDQwMjI2LDQwMjA4LDQwMjE3LDQwMjIzLDQwNTg0LDQwNTgyLDQwNTgzLDQwNjIyLDQwNjIxLDQwNjYxLDQwNjYyLDQwNjk4LDQw''@;'; put 'put ''NzIyLDQwNzY1LDIwNzc0LDIwNzczLDIwNzcwLDIwNzcyLDIwNzY4LDIwNzc3LDIxMjM2LDIyMTYzLDIyMTU2LDIyMTU3LDIyMTUwLDIyMTQ4LDIyMTQ3LDIyMTQyLDIyMTQ2LDIyMTQzLDIyMTQ1LDIyNzQyLDIyNzQwLDIyNzM1LDIyNzM4LDIzMzQxLDIzMzMzLDIzMzQ2LDIzMzMxLDIzMzQw''@;'; put 'put ''LDIzMzM1LDIzMzM0LDIzMzQzLDIzMzQyLDIzNDE5LDIzNTM3LDIzNTM4LDIzOTkxLDI0MTcyLDI0MTcwLDI0NTEwLDI0NTA3LDI1MDI3LDI1MDEzLDI1MDIwLDI1MDYzLDI1MDU2LDI1MDYxLDI1MDYwLDI1MDY0LDI1MDU0LDI1ODM5LDI1ODMzLDI1ODI3LDI1ODM1LDI1ODI4LDI1ODMyLDI1''@;'; put 'put ''OTg1LDI1OTg0LDI2MDM4LDI2MDc0LDI2MzIyLDI3Mjc3LDI3Mjg2LDI3MjY1LDI3MzAxLDI3MjczLDI3Mjk1LDI3MjkxLDI3Mjk3LDI3Mjk0LDI3MjcxLDI3MjgzLDI3Mjc4LDI3Mjg1LDI3MjY3LDI3MzA0LDI3MzAwLDI3MjgxLDI3MjYzLDI3MzAyLDI3MjkwLDI3MjY5LDI3Mjc2LDI3Mjgy''@;'; put 'put ''LDI3NDgzLDI3NTY1LDI3NjU3LDI4NjIwLDI4NTg1LDI4NjYwLDI4NjI4LDI4NjQzLDI4NjM2LDI4NjUzLDI4NjQ3LDI4NjQ2LDI4NjM4LDI4NjU4LDI4NjM3LDI4NjQyLDI4NjQ4LDI5MTUzLDI5MTY5LDI5MTYwLDI5MTcwLDI5MTU2LDI5MTY4LDI5MTU0LDI5NTU1LDI5NTUwLDI5NTUxLDI5''@;'; put 'put ''ODQ3LDI5ODc0LDI5ODY3LDI5ODQwLDI5ODY2LDI5ODY5LDI5ODczLDI5ODYxLDI5ODcxLDI5OTY4LDI5OTY5LDI5OTcwLDI5OTY3LDMwMDg0LDMwMjc1LDMwMjgwLDMwMjgxLDMwMjc5LDMwMzcyLDMwNDQxLDMwNjQ1LDMwNjM1LDMwNjQyLDMwNjQ3LDMwNjQ2LDMwNjQ0LDMwNjQxLDMwNjMy''@;'; put 'put ''LDMwNzA0LDMwOTYzLDMwOTczLDMwOTc4LDMwOTcxLDMwOTcyLDMwOTYyLDMwOTgxLDMwOTY5LDMwOTc0LDMwOTgwLDMxMTQ3LDMxMTQ0LDMxMzI0LDMxMzIzLDMxMzE4LDMxMzIwLDMxMzE2LDMxMzIyLDMxNDIyLDMxNDI0LDMxNDI1LDMxNzQ5LDMxNzU5LDMxNzMwLDMxNzQ0LDMxNzQzLDMx''@;'; put 'put ''NzM5LDMxNzU4LDMxNzMyLDMxNzU1LDMxNzMxLDMxNzQ2LDMxNzUzLDMxNzQ3LDMxNzQ1LDMxNzM2LDMxNzQxLDMxNzUwLDMxNzI4LDMxNzI5LDMxNzYwLDMxNzU0LDMxOTc2LDMyMzAxLDMyMzE2LDMyMzIyLDMyMzA3LDM4OTg0LDMyMzEyLDMyMjk4LDMyMzI5LDMyMzIwLDMyMzI3LDMyMjk3''@;'; put 'put ''LDMyMzMyLDMyMzA0LDMyMzE1LDMyMzEwLDMyMzI0LDMyMzE0LDMyNTgxLDMyNjM5LDMyNjM4LDMyNjM3LDMyNzU2LDMyNzU0LDMyODEyLDMzMjExLDMzMjIwLDMzMjI4LDMzMjI2LDMzMjIxLDMzMjIzLDMzMjEyLDMzMjU3LDMzMzcxLDMzMzcwLDMzMzcyLDM0MTc5LDM0MTc2LDM0MTkxLDM0''@;'; put 'put ''MjE1LDM0MTk3LDM0MjA4LDM0MTg3LDM0MjExLDM0MTcxLDM0MjEyLDM0MjAyLDM0MjA2LDM0MTY3LDM0MTcyLDM0MTg1LDM0MjA5LDM0MTcwLDM0MTY4LDM0MTM1LDM0MTkwLDM0MTk4LDM0MTgyLDM0MTg5LDM0MjAxLDM0MjA1LDM0MTc3LDM0MjEwLDM0MTc4LDM0MTg0LDM0MTgxLDM0MTY5''@;'; put 'put ''LDM0MTY2LDM0MjAwLDM0MTkyLDM0MjA3LDM0NDA4LDM0NzUwLDM0NzMwLDM0NzMzLDM0NzU3LDM0NzM2LDM0NzMyLDM0NzQ1LDM0NzQxLDM0NzQ4LDM0NzM0LDM0NzYxLDM0NzU1LDM0NzU0LDM0NzY0LDM0NzQzLDM0NzM1LDM0NzU2LDM0NzYyLDM0NzQwLDM0NzQyLDM0NzUxLDM0NzQ0LDM0''@;'; put 'put ''NzQ5LDM0NzgyLDM0NzM4LDM1MTI1LDM1MTIzLDM1MTMyLDM1MTM0LDM1MTM3LDM1MTU0LDM1MTI3LDM1MTM4LDM1MjQ1LDM1MjQ3LDM1MjQ2LDM1MzE0LDM1MzE1LDM1NjE0LDM1NjA4LDM1NjA2LDM1NjAxLDM1NTg5LDM1NTk1LDM1NjE4LDM1NTk5LDM1NjAyLDM1NjA1LDM1NTkxLDM1NTk3''@;'; put 'put ''LDM1NTkyLDM1NTkwLDM1NjEyLDM1NjAzLDM1NjEwLDM1OTE5LDM1OTUyLDM1OTU0LDM1OTUzLDM1OTUxLDM1OTg5LDM1OTg4LDM2MDg5LDM2MjA3LDM2NDMwLDM2NDI5LDM2NDM1LDM2NDMyLDM2NDI4LDM2NDIzLDM2Njc1LDM2NjcyLDM2OTk3LDM2OTkwLDM3MTc2LDM3Mjc0LDM3MjgyLDM3''@;'; put 'put ''Mjc1LDM3MjczLDM3Mjc5LDM3MjgxLDM3Mjc3LDM3MjgwLDM3NzkzLDM3NzYzLDM3ODA3LDM3NzMyLDM3NzE4LDM3NzAzLDM3NzU2LDM3NzIwLDM3NzI0LDM3NzUwLDM3NzA1LDM3NzEyLDM3NzEzLDM3NzI4LDM3NzQxLDM3Nzc1LDM3NzA4LDM3NzM4LDM3NzUzLDM3NzE5LDM3NzE3LDM3NzE0''@;'; put 'put ''LDM3NzExLDM3NzQ1LDM3NzUxLDM3NzU1LDM3NzI5LDM3NzI2LDM3NzMxLDM3NzM1LDM3NzYwLDM3NzEwLDM3NzIxLDM4MzQzLDM4MzM2LDM4MzQ1LDM4MzM5LDM4MzQxLDM4MzI3LDM4NTc0LDM4NTc2LDM4NTcyLDM4Njg4LDM4Njg3LDM4NjgwLDM4Njg1LDM4NjgxLDM4ODEwLDM4ODE3LDM4''@;'; put 'put ''ODEyLDM4ODE0LDM4ODEzLDM4ODY5LDM4ODY4LDM4ODk3LDM4OTc3LDM4OTgwLDM4OTg2LDM4OTg1LDM4OTgxLDM4OTc5LDM5MjA1LDM5MjExLDM5MjEyLDM5MjEwLDM5MjE5LDM5MjE4LDM5MjE1LDM5MjEzLDM5MjE3LDM5MjE2LDM5MzIwLDM5MzMxLDM5MzI5LDM5NDI2LDM5NDE4LDM5NDEy''@;'; put 'put ''LDM5NDE1LDM5NDE3LDM5NDE2LDM5NDE0LDM5NDE5LDM5NDIxLDM5NDIyLDM5NDIwLDM5NDI3LDM5NjE0LDM5Njc4LDM5Njc3LDM5NjgxLDM5Njc2LDM5NzUyLDM5ODM0LDM5ODQ4LDM5ODM4LDM5ODM1LDM5ODQ2LDM5ODQxLDM5ODQ1LDM5ODQ0LDM5ODE0LDM5ODQyLDM5ODQwLDM5ODU1LDQw''@;'; put 'put ''MjQzLDQwMjU3LDQwMjk1LDQwMjQ2LDQwMjM4LDQwMjM5LDQwMjQxLDQwMjQ4LDQwMjQwLDQwMjYxLDQwMjU4LDQwMjU5LDQwMjU0LDQwMjQ3LDQwMjU2LDQwMjUzLDMyNzU3LDQwMjM3LDQwNTg2LDQwNTg1LDQwNTg5LDQwNjI0LDQwNjQ4LDQwNjY2LDQwNjk5LDQwNzAzLDQwNzQwLDQwNzM5''@;'; put 'put ''LDQwNzM4LDQwNzg4LDQwODY0LDIwNzg1LDIwNzgxLDIwNzgyLDIyMTY4LDIyMTcyLDIyMTY3LDIyMTcwLDIyMTczLDIyMTY5LDIyODk2LDIzMzU2LDIzNjU3LDIzNjU4LDI0ZTMsMjQxNzMsMjQxNzQsMjUwNDgsMjUwNTUsMjUwNjksMjUwNzAsMjUwNzMsMjUwNjYsMjUwNzIsMjUwNjcsMjUw''@;'; put 'put ''NDYsMjUwNjUsMjU4NTUsMjU4NjAsMjU4NTMsMjU4NDgsMjU4NTcsMjU4NTksMjU4NTIsMjYwMDQsMjYwNzUsMjYzMzAsMjYzMzEsMjYzMjgsMjczMzMsMjczMjEsMjczMjUsMjczNjEsMjczMzQsMjczMjIsMjczMTgsMjczMTksMjczMzUsMjczMTYsMjczMDksMjc0ODYsMjc1OTMsMjc2NTks''@;'; put 'put ''Mjg2NzksMjg2ODQsMjg2ODUsMjg2NzMsMjg2NzcsMjg2OTIsMjg2ODYsMjg2NzEsMjg2NzIsMjg2NjcsMjg3MTAsMjg2NjgsMjg2NjMsMjg2ODIsMjkxODUsMjkxODMsMjkxNzcsMjkxODcsMjkxODEsMjk1NTgsMjk4ODAsMjk4ODgsMjk4NzcsMjk4ODksMjk4ODYsMjk4NzgsMjk4ODMsMjk4''@;'; put 'put ''OTAsMjk5NzIsMjk5NzEsMzAzMDAsMzAzMDgsMzAyOTcsMzAyODgsMzAyOTEsMzAyOTUsMzAyOTgsMzAzNzQsMzAzOTcsMzA0NDQsMzA2NTgsMzA2NTAsMzA5NzUsMzA5ODgsMzA5OTUsMzA5OTYsMzA5ODUsMzA5OTIsMzA5OTQsMzA5OTMsMzExNDksMzExNDgsMzEzMjcsMzE3NzIsMzE3ODUs''@;'; put 'put ''MzE3NjksMzE3NzYsMzE3NzUsMzE3ODksMzE3NzMsMzE3ODIsMzE3ODQsMzE3NzgsMzE3ODEsMzE3OTIsMzIzNDgsMzIzMzYsMzIzNDIsMzIzNTUsMzIzNDQsMzIzNTQsMzIzNTEsMzIzMzcsMzIzNTIsMzIzNDMsMzIzMzksMzI2OTMsMzI2OTEsMzI3NTksMzI3NjAsMzI4ODUsMzMyMzMsMzMy''@;'; put 'put ''MzQsMzMyMzIsMzMzNzUsMzMzNzQsMzQyMjgsMzQyNDYsMzQyNDAsMzQyNDMsMzQyNDIsMzQyMjcsMzQyMjksMzQyMzcsMzQyNDcsMzQyNDQsMzQyMzksMzQyNTEsMzQyNTQsMzQyNDgsMzQyNDUsMzQyMjUsMzQyMzAsMzQyNTgsMzQzNDAsMzQyMzIsMzQyMzEsMzQyMzgsMzQ0MDksMzQ3OTEs''@;'; put 'put ''MzQ3OTAsMzQ3ODYsMzQ3NzksMzQ3OTUsMzQ3OTQsMzQ3ODksMzQ3ODMsMzQ4MDMsMzQ3ODgsMzQ3NzIsMzQ3ODAsMzQ3NzEsMzQ3OTcsMzQ3NzYsMzQ3ODcsMzQ3MjQsMzQ3NzUsMzQ3NzcsMzQ4MTcsMzQ4MDQsMzQ3OTIsMzQ3ODEsMzUxNTUsMzUxNDcsMzUxNTEsMzUxNDgsMzUxNDIsMzUx''@;'; put 'put ''NTIsMzUxNTMsMzUxNDUsMzU2MjYsMzU2MjMsMzU2MTksMzU2MzUsMzU2MzIsMzU2MzcsMzU2NTUsMzU2MzEsMzU2NDQsMzU2NDYsMzU2MzMsMzU2MjEsMzU2MzksMzU2MjIsMzU2MzgsMzU2MzAsMzU2MjAsMzU2NDMsMzU2NDUsMzU2NDIsMzU5MDYsMzU5NTcsMzU5OTMsMzU5OTIsMzU5OTEs''@;'; put 'put ''MzYwOTQsMzYxMDAsMzYwOTgsMzYwOTYsMzY0NDQsMzY0NTAsMzY0NDgsMzY0MzksMzY0MzgsMzY0NDYsMzY0NTMsMzY0NTUsMzY0NDMsMzY0NDIsMzY0NDksMzY0NDUsMzY0NTcsMzY0MzYsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODMsMzcxNjAsMzcxNzgsMzcxNzksMzcxODIsMzcyODgsMzcy''@;'; put 'put ''ODUsMzcyODcsMzcyOTUsMzcyOTAsMzc4MTMsMzc3NzIsMzc3NzgsMzc4MTUsMzc3ODcsMzc3ODksMzc3NjksMzc3OTksMzc3NzQsMzc4MDIsMzc3OTAsMzc3OTgsMzc3ODEsMzc3NjgsMzc3ODUsMzc3OTEsMzc3NzMsMzc4MDksMzc3NzcsMzc4MTAsMzc3OTYsMzc4MDAsMzc4MTIsMzc3OTUs''@;'; put 'put ''Mzc3OTcsMzgzNTQsMzgzNTUsMzgzNTMsMzg1NzksMzg2MTUsMzg2MTgsMjQwMDIsMzg2MjMsMzg2MTYsMzg2MjEsMzg2OTEsMzg2OTAsMzg2OTMsMzg4MjgsMzg4MzAsMzg4MjQsMzg4MjcsMzg4MjAsMzg4MjYsMzg4MTgsMzg4MjEsMzg4NzEsMzg4NzMsMzg4NzAsMzg4NzIsMzg5MDYsMzg5''@;'; put 'put ''OTIsMzg5OTMsMzg5OTQsMzkwOTYsMzkyMzMsMzkyMjgsMzkyMjYsMzk0MzksMzk0MzUsMzk0MzMsMzk0MzcsMzk0MjgsMzk0NDEsMzk0MzQsMzk0MjksMzk0MzEsMzk0MzAsMzk2MTYsMzk2NDQsMzk2ODgsMzk2ODQsMzk2ODUsMzk3MjEsMzk3MzMsMzk3NTQsMzk3NTYsMzk3NTUsMzk4Nzks''@;'; put 'put ''Mzk4NzgsMzk4NzUsMzk4NzEsMzk4NzMsMzk4NjEsMzk4NjQsMzk4OTEsMzk4NjIsMzk4NzYsMzk4NjUsMzk4NjksNDAyODQsNDAyNzUsNDAyNzEsNDAyNjYsNDAyODMsNDAyNjcsNDAyODEsNDAyNzgsNDAyNjgsNDAyNzksNDAyNzQsNDAyNzYsNDAyODcsNDAyODAsNDAyODIsNDA1OTAsNDA1''@;'; put 'put ''ODgsNDA2NzEsNDA3MDUsNDA3MDQsNDA3MjYsNDA3NDEsNDA3NDcsNDA3NDYsNDA3NDUsNDA3NDQsNDA3ODAsNDA3ODksMjA3ODgsMjA3ODksMjExNDIsMjEyMzksMjE0MjgsMjIxODcsMjIxODksMjIxODIsMjIxODMsMjIxODYsMjIxODgsMjI3NDYsMjI3NDksMjI3NDcsMjI4MDIsMjMzNTcs''@;'; put 'put ''MjMzNTgsMjMzNTksMjQwMDMsMjQxNzYsMjQ1MTEsMjUwODMsMjU4NjMsMjU4NzIsMjU4NjksMjU4NjUsMjU4NjgsMjU4NzAsMjU5ODgsMjYwNzgsMjYwNzcsMjYzMzQsMjczNjcsMjczNjAsMjczNDAsMjczNDUsMjczNTMsMjczMzksMjczNTksMjczNTYsMjczNDQsMjczNzEsMjczNDMsMjcz''@;'; put 'put ''NDEsMjczNTgsMjc0ODgsMjc1NjgsMjc2NjAsMjg2OTcsMjg3MTEsMjg3MDQsMjg2OTQsMjg3MTUsMjg3MDUsMjg3MDYsMjg3MDcsMjg3MTMsMjg2OTUsMjg3MDgsMjg3MDAsMjg3MTQsMjkxOTYsMjkxOTQsMjkxOTEsMjkxODYsMjkxODksMjkzNDksMjkzNTAsMjkzNDgsMjkzNDcsMjkzNDUs''@;'; put 'put ''Mjk4OTksMjk4OTMsMjk4NzksMjk4OTEsMjk5NzQsMzAzMDQsMzA2NjUsMzA2NjYsMzA2NjAsMzA3MDUsMzEwMDUsMzEwMDMsMzEwMDksMzEwMDQsMzA5OTksMzEwMDYsMzExNTIsMzEzMzUsMzEzMzYsMzE3OTUsMzE4MDQsMzE4MDEsMzE3ODgsMzE4MDMsMzE5ODAsMzE5NzgsMzIzNzQsMzIz''@;'; put 'put ''NzMsMzIzNzYsMzIzNjgsMzIzNzUsMzIzNjcsMzIzNzgsMzIzNzAsMzIzNzIsMzIzNjAsMzI1ODcsMzI1ODYsMzI2NDMsMzI2NDYsMzI2OTUsMzI3NjUsMzI3NjYsMzI4ODgsMzMyMzksMzMyMzcsMzMzODAsMzMzNzcsMzMzNzksMzQyODMsMzQyODksMzQyODUsMzQyNjUsMzQyNzMsMzQyODAs''@;'; put 'put ''MzQyNjYsMzQyNjMsMzQyODQsMzQyOTAsMzQyOTYsMzQyNjQsMzQyNzEsMzQyNzUsMzQyNjgsMzQyNTcsMzQyODgsMzQyNzgsMzQyODcsMzQyNzAsMzQyNzQsMzQ4MTYsMzQ4MTAsMzQ4MTksMzQ4MDYsMzQ4MDcsMzQ4MjUsMzQ4MjgsMzQ4MjcsMzQ4MjIsMzQ4MTIsMzQ4MjQsMzQ4MTUsMzQ4''@;'; put 'put ''MjYsMzQ4MTgsMzUxNzAsMzUxNjIsMzUxNjMsMzUxNTksMzUxNjksMzUxNjQsMzUxNjAsMzUxNjUsMzUxNjEsMzUyMDgsMzUyNTUsMzUyNTQsMzUzMTgsMzU2NjQsMzU2NTYsMzU2NTgsMzU2NDgsMzU2NjcsMzU2NzAsMzU2NjgsMzU2NTksMzU2NjksMzU2NjUsMzU2NTAsMzU2NjYsMzU2NzEs''@;'; put 'put ''MzU5MDcsMzU5NTksMzU5NTgsMzU5OTQsMzYxMDIsMzYxMDMsMzYxMDUsMzYyNjgsMzYyNjYsMzYyNjksMzYyNjcsMzY0NjEsMzY0NzIsMzY0NjcsMzY0NTgsMzY0NjMsMzY0NzUsMzY1NDYsMzY2OTAsMzY2ODksMzY2ODcsMzY2ODgsMzY2OTEsMzY3ODgsMzcxODQsMzcxODMsMzcyOTYsMzcy''@;'; put 'put ''OTMsMzc4NTQsMzc4MzEsMzc4MzksMzc4MjYsMzc4NTAsMzc4NDAsMzc4ODEsMzc4NjgsMzc4MzYsMzc4NDksMzc4MDEsMzc4NjIsMzc4MzQsMzc4NDQsMzc4NzAsMzc4NTksMzc4NDUsMzc4MjgsMzc4MzgsMzc4MjQsMzc4NDIsMzc4NjMsMzgyNjksMzgzNjIsMzgzNjMsMzg2MjUsMzg2OTcs''@;'; put 'put ''Mzg2OTksMzg3MDAsMzg2OTYsMzg2OTQsMzg4MzUsMzg4MzksMzg4MzgsMzg4NzcsMzg4NzgsMzg4NzksMzkwMDQsMzkwMDEsMzkwMDUsMzg5OTksMzkxMDMsMzkxMDEsMzkwOTksMzkxMDIsMzkyNDAsMzkyMzksMzkyMzUsMzkzMzQsMzkzMzUsMzk0NTAsMzk0NDUsMzk0NjEsMzk0NTMsMzk0''@;'; put 'put ''NjAsMzk0NTEsMzk0NTgsMzk0NTYsMzk0NjMsMzk0NTksMzk0NTQsMzk0NTIsMzk0NDQsMzk2MTgsMzk2OTEsMzk2OTAsMzk2OTQsMzk2OTIsMzk3MzUsMzk5MTQsMzk5MTUsMzk5MDQsMzk5MDIsMzk5MDgsMzk5MTAsMzk5MDYsMzk5MjAsMzk4OTIsMzk4OTUsMzk5MTYsMzk5MDAsMzk4OTcs''@;'; put 'put ''Mzk5MDksMzk4OTMsMzk5MDUsMzk4OTgsNDAzMTEsNDAzMjEsNDAzMzAsNDAzMjQsNDAzMjgsNDAzMDUsNDAzMjAsNDAzMTIsNDAzMjYsNDAzMzEsNDAzMzIsNDAzMTcsNDAyOTksNDAzMDgsNDAzMDksNDAzMDQsNDAyOTcsNDAzMjUsNDAzMDcsNDAzMTUsNDAzMjIsNDAzMDMsNDAzMTMsNDAz''@;'; put 'put ''MTksNDAzMjcsNDAyOTYsNDA1OTYsNDA1OTMsNDA2NDAsNDA3MDAsNDA3NDksNDA3NjgsNDA3NjksNDA3ODEsNDA3OTAsNDA3OTEsNDA3OTIsMjEzMDMsMjIxOTQsMjIxOTcsMjIxOTUsMjI3NTUsMjMzNjUsMjQwMDYsMjQwMDcsMjQzMDIsMjQzMDMsMjQ1MTIsMjQ1MTMsMjUwODEsMjU4Nzks''@;'; put 'put ''MjU4NzgsMjU4NzcsMjU4NzUsMjYwNzksMjYzNDQsMjYzMzksMjYzNDAsMjczNzksMjczNzYsMjczNzAsMjczNjgsMjczODUsMjczNzcsMjczNzQsMjczNzUsMjg3MzIsMjg3MjUsMjg3MTksMjg3MjcsMjg3MjQsMjg3MjEsMjg3MzgsMjg3MjgsMjg3MzUsMjg3MzAsMjg3MjksMjg3MzYsMjg3''@;'; put 'put ''MzEsMjg3MjMsMjg3MzcsMjkyMDMsMjkyMDQsMjkzNTIsMjk1NjUsMjk1NjQsMjk4ODIsMzAzNzksMzAzNzgsMzAzOTgsMzA0NDUsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NjksMzA3MDYsMzEwMTMsMzEwMTEsMzEwMTUsMzEwMTYsMzEwMTIsMzEwMTcsMzExNTQsMzEzNDIsMzEzNDAsMzEzNDEs''@;'; put 'put ''MzE0NzksMzE4MTcsMzE4MTYsMzE4MTgsMzE4MTUsMzE4MTMsMzE5ODIsMzIzNzksMzIzODIsMzIzODUsMzIzODQsMzI2OTgsMzI3NjcsMzI4ODksMzMyNDMsMzMyNDEsMzMyOTEsMzMzODQsMzMzODUsMzQzMzgsMzQzMDMsMzQzMDUsMzQzMDIsMzQzMzEsMzQzMDQsMzQyOTQsMzQzMDgsMzQz''@;'; put 'put ''MTMsMzQzMDksMzQzMTYsMzQzMDEsMzQ4NDEsMzQ4MzIsMzQ4MzMsMzQ4MzksMzQ4MzUsMzQ4MzgsMzUxNzEsMzUxNzQsMzUyNTcsMzUzMTksMzU2ODAsMzU2OTAsMzU2NzcsMzU2ODgsMzU2ODMsMzU2ODUsMzU2ODcsMzU2OTMsMzYyNzAsMzY0ODYsMzY0ODgsMzY0ODQsMzY2OTcsMzY2OTQs''@;'; put 'put ''MzY2OTUsMzY2OTMsMzY2OTYsMzY2OTgsMzcwMDUsMzcxODcsMzcxODUsMzczMDMsMzczMDEsMzcyOTgsMzcyOTksMzc4OTksMzc5MDcsMzc4ODMsMzc5MjAsMzc5MDMsMzc5MDgsMzc4ODYsMzc5MDksMzc5MDQsMzc5MjgsMzc5MTMsMzc5MDEsMzc4NzcsMzc4ODgsMzc4NzksMzc4OTUsMzc5''@;'; put 'put ''MDIsMzc5MTAsMzc5MDYsMzc4ODIsMzc4OTcsMzc4ODAsMzc4OTgsMzc4ODcsMzc4ODQsMzc5MDAsMzc4NzgsMzc5MDUsMzc4OTQsMzgzNjYsMzgzNjgsMzgzNjcsMzg3MDIsMzg3MDMsMzg4NDEsMzg4NDMsMzg5MDksMzg5MTAsMzkwMDgsMzkwMTAsMzkwMTEsMzkwMDcsMzkxMDUsMzkxMDYs''@;'; put 'put ''MzkyNDgsMzkyNDYsMzkyNTcsMzkyNDQsMzkyNDMsMzkyNTEsMzk0NzQsMzk0NzYsMzk0NzMsMzk0NjgsMzk0NjYsMzk0NzgsMzk0NjUsMzk0NzAsMzk0ODAsMzk0NjksMzk2MjMsMzk2MjYsMzk2MjIsMzk2OTYsMzk2OTgsMzk2OTcsMzk5NDcsMzk5NDQsMzk5MjcsMzk5NDEsMzk5NTQsMzk5''@;'; put 'put ''MjgsNGU0LDM5OTQzLDM5OTUwLDM5OTQyLDM5OTU5LDM5OTU2LDM5OTQ1LDQwMzUxLDQwMzQ1LDQwMzU2LDQwMzQ5LDQwMzM4LDQwMzQ0LDQwMzM2LDQwMzQ3LDQwMzUyLDQwMzQwLDQwMzQ4LDQwMzYyLDQwMzQzLDQwMzUzLDQwMzQ2LDQwMzU0LDQwMzYwLDQwMzUwLDQwMzU1LDQwMzgzLDQw''@;'; put 'put ''MzYxLDQwMzQyLDQwMzU4LDQwMzU5LDQwNjAxLDQwNjAzLDQwNjAyLDQwNjc3LDQwNjc2LDQwNjc5LDQwNjc4LDQwNzUyLDQwNzUwLDQwNzk1LDQwODAwLDQwNzk4LDQwNzk3LDQwNzkzLDQwODQ5LDIwNzk0LDIwNzkzLDIxMTQ0LDIxMTQzLDIyMjExLDIyMjA1LDIyMjA2LDIzMzY4LDIzMzY3''@;'; put 'put ''LDI0MDExLDI0MDE1LDI0MzA1LDI1MDg1LDI1ODgzLDI3Mzk0LDI3Mzg4LDI3Mzk1LDI3Mzg0LDI3MzkyLDI4NzM5LDI4NzQwLDI4NzQ2LDI4NzQ0LDI4NzQ1LDI4NzQxLDI4NzQyLDI5MjEzLDI5MjEwLDI5MjA5LDI5NTY2LDI5OTc1LDMwMzE0LDMwNjcyLDMxMDIxLDMxMDI1LDMxMDIzLDMx''@;'; put 'put ''ODI4LDMxODI3LDMxOTg2LDMyMzk0LDMyMzkxLDMyMzkyLDMyMzk1LDMyMzkwLDMyMzk3LDMyNTg5LDMyNjk5LDMyODE2LDMzMjQ1LDM0MzI4LDM0MzQ2LDM0MzQyLDM0MzM1LDM0MzM5LDM0MzMyLDM0MzI5LDM0MzQzLDM0MzUwLDM0MzM3LDM0MzM2LDM0MzQ1LDM0MzM0LDM0MzQxLDM0ODU3''@;'; put 'put ''LDM0ODQ1LDM0ODQzLDM0ODQ4LDM0ODUyLDM0ODQ0LDM0ODU5LDM0ODkwLDM1MTgxLDM1MTc3LDM1MTgyLDM1MTc5LDM1MzIyLDM1NzA1LDM1NzA0LDM1NjUzLDM1NzA2LDM1NzA3LDM2MTEyLDM2MTE2LDM2MjcxLDM2NDk0LDM2NDkyLDM2NzAyLDM2Njk5LDM2NzAxLDM3MTkwLDM3MTg4LDM3''@;'; put 'put ''MTg5LDM3MzA1LDM3OTUxLDM3OTQ3LDM3OTQyLDM3OTI5LDM3OTQ5LDM3OTQ4LDM3OTM2LDM3OTQ1LDM3OTMwLDM3OTQzLDM3OTMyLDM3OTUyLDM3OTM3LDM4MzczLDM4MzcyLDM4MzcxLDM4NzA5LDM4NzE0LDM4ODQ3LDM4ODgxLDM5MDEyLDM5MTEzLDM5MTEwLDM5MTA0LDM5MjU2LDM5MjU0''@;'; put 'put ''LDM5NDgxLDM5NDg1LDM5NDk0LDM5NDkyLDM5NDkwLDM5NDg5LDM5NDgyLDM5NDg3LDM5NjI5LDM5NzAxLDM5NzAzLDM5NzA0LDM5NzAyLDM5NzM4LDM5NzYyLDM5OTc5LDM5OTY1LDM5OTY0LDM5OTgwLDM5OTcxLDM5OTc2LDM5OTc3LDM5OTcyLDM5OTY5LDQwMzc1LDQwMzc0LDQwMzgwLDQw''@;'; put 'put ''Mzg1LDQwMzkxLDQwMzk0LDQwMzk5LDQwMzgyLDQwMzg5LDQwMzg3LDQwMzc5LDQwMzczLDQwMzk4LDQwMzc3LDQwMzc4LDQwMzY0LDQwMzkyLDQwMzY5LDQwMzY1LDQwMzk2LDQwMzcxLDQwMzk3LDQwMzcwLDQwNTcwLDQwNjA0LDQwNjgzLDQwNjg2LDQwNjg1LDQwNzMxLDQwNzI4LDQwNzMw''@;'; put 'put ''LDQwNzUzLDQwNzgyLDQwODA1LDQwODA0LDQwODUwLDIwMTUzLDIyMjE0LDIyMjEzLDIyMjE5LDIyODk3LDIzMzcxLDIzMzcyLDI0MDIxLDI0MDE3LDI0MzA2LDI1ODg5LDI1ODg4LDI1ODk0LDI1ODkwLDI3NDAzLDI3NDAwLDI3NDAxLDI3NjYxLDI4NzU3LDI4NzU4LDI4NzU5LDI4NzU0LDI5''@;'; put 'put ''MjE0LDI5MjE1LDI5MzUzLDI5NTY3LDI5OTEyLDI5OTA5LDI5OTEzLDI5OTExLDMwMzE3LDMwMzgxLDMxMDI5LDMxMTU2LDMxMzQ0LDMxMzQ1LDMxODMxLDMxODM2LDMxODMzLDMxODM1LDMxODM0LDMxOTg4LDMxOTg1LDMyNDAxLDMyNTkxLDMyNjQ3LDMzMjQ2LDMzMzg3LDM0MzU2LDM0MzU3''@;'; put 'put ''LDM0MzU1LDM0MzQ4LDM0MzU0LDM0MzU4LDM0ODYwLDM0ODU2LDM0ODU0LDM0ODU4LDM0ODUzLDM1MTg1LDM1MjYzLDM1MjYyLDM1MzIzLDM1NzEwLDM1NzE2LDM1NzE0LDM1NzE4LDM1NzE3LDM1NzExLDM2MTE3LDM2NTAxLDM2NTAwLDM2NTA2LDM2NDk4LDM2NDk2LDM2NTAyLDM2NTAzLDM2''@;'; put 'put ''NzA0LDM2NzA2LDM3MTkxLDM3OTY0LDM3OTY4LDM3OTYyLDM3OTYzLDM3OTY3LDM3OTU5LDM3OTU3LDM3OTYwLDM3OTYxLDM3OTU4LDM4NzE5LDM4ODgzLDM5MDE4LDM5MDE3LDM5MTE1LDM5MjUyLDM5MjU5LDM5NTAyLDM5NTA3LDM5NTA4LDM5NTAwLDM5NTAzLDM5NDk2LDM5NDk4LDM5NDk3''@;'; put 'put ''LDM5NTA2LDM5NTA0LDM5NjMyLDM5NzA1LDM5NzIzLDM5NzM5LDM5NzY2LDM5NzY1LDQwMDA2LDQwMDA4LDM5OTk5LDQwMDA0LDM5OTkzLDM5OTg3LDQwMDAxLDM5OTk2LDM5OTkxLDM5OTg4LDM5OTg2LDM5OTk3LDM5OTkwLDQwNDExLDQwNDAyLDQwNDE0LDQwNDEwLDQwMzk1LDQwNDAwLDQw''@;'; put 'put ''NDEyLDQwNDAxLDQwNDE1LDQwNDI1LDQwNDA5LDQwNDA4LDQwNDA2LDQwNDM3LDQwNDA1LDQwNDEzLDQwNjMwLDQwNjg4LDQwNzU3LDQwNzU1LDQwNzU0LDQwNzcwLDQwODExLDQwODUzLDQwODY2LDIwNzk3LDIxMTQ1LDIyNzYwLDIyNzU5LDIyODk4LDIzMzczLDI0MDI0LDM0ODYzLDI0Mzk5''@;'; put 'put ''LDI1MDg5LDI1MDkxLDI1MDkyLDI1ODk3LDI1ODkzLDI2MDA2LDI2MzQ3LDI3NDA5LDI3NDEwLDI3NDA3LDI3NTk0LDI4NzYzLDI4NzYyLDI5MjE4LDI5NTcwLDI5NTY5LDI5NTcxLDMwMzIwLDMwNjc2LDMxODQ3LDMxODQ2LDMyNDA1LDMzMzg4LDM0MzYyLDM0MzY4LDM0MzYxLDM0MzY0LDM0''@;'; put 'put ''MzUzLDM0MzYzLDM0MzY2LDM0ODY0LDM0ODY2LDM0ODYyLDM0ODY3LDM1MTkwLDM1MTg4LDM1MTg3LDM1MzI2LDM1NzI0LDM1NzI2LDM1NzIzLDM1NzIwLDM1OTA5LDM2MTIxLDM2NTA0LDM2NzA4LDM2NzA3LDM3MzA4LDM3OTg2LDM3OTczLDM3OTgxLDM3OTc1LDM3OTgyLDM4ODUyLDM4ODUz''@;'; put 'put ''LDM4OTEyLDM5NTEwLDM5NTEzLDM5NzEwLDM5NzExLDM5NzEyLDQwMDE4LDQwMDI0LDQwMDE2LDQwMDEwLDQwMDEzLDQwMDExLDQwMDIxLDQwMDI1LDQwMDEyLDQwMDE0LDQwNDQzLDQwNDM5LDQwNDMxLDQwNDE5LDQwNDI3LDQwNDQwLDQwNDIwLDQwNDM4LDQwNDE3LDQwNDMwLDQwNDIyLDQw''@;'; put 'put ''NDM0LDQwNDMyLDQwNDE4LDQwNDI4LDQwNDM2LDQwNDM1LDQwNDI0LDQwNDI5LDQwNjQyLDQwNjU2LDQwNjkwLDQwNjkxLDQwNzEwLDQwNzMyLDQwNzYwLDQwNzU5LDQwNzU4LDQwNzcxLDQwNzgzLDQwODE3LDQwODE2LDQwODE0LDQwODE1LDIyMjI3LDIyMjIxLDIzMzc0LDIzNjYxLDI1OTAx''@;'; put 'put ''LDI2MzQ5LDI2MzUwLDI3NDExLDI4NzY3LDI4NzY5LDI4NzY1LDI4NzY4LDI5MjE5LDI5OTE1LDI5OTI1LDMwNjc3LDMxMDMyLDMxMTU5LDMxMTU4LDMxODUwLDMyNDA3LDMyNjQ5LDMzMzg5LDM0MzcxLDM0ODcyLDM0ODcxLDM0ODY5LDM0ODkxLDM1NzMyLDM1NzMzLDM2NTEwLDM2NTExLDM2''@;'; put 'put ''NTEyLDM2NTA5LDM3MzEwLDM3MzA5LDM3MzE0LDM3OTk1LDM3OTkyLDM3OTkzLDM4NjI5LDM4NzI2LDM4NzIzLDM4NzI3LDM4ODU1LDM4ODg1LDM5NTE4LDM5NjM3LDM5NzY5LDQwMDM1LDQwMDM5LDQwMDM4LDQwMDM0LDQwMDMwLDQwMDMyLDQwNDUwLDQwNDQ2LDQwNDU1LDQwNDUxLDQwNDU0''@;'; put 'put ''LDQwNDUzLDQwNDQ4LDQwNDQ5LDQwNDU3LDQwNDQ3LDQwNDQ1LDQwNDUyLDQwNjA4LDQwNzM0LDQwNzc0LDQwODIwLDQwODIxLDQwODIyLDIyMjI4LDI1OTAyLDI2MDQwLDI3NDE2LDI3NDE3LDI3NDE1LDI3NDE4LDI4NzcwLDI5MjIyLDI5MzU0LDMwNjgwLDMwNjgxLDMxMDMzLDMxODQ5LDMx''@;'; put 'put ''ODUxLDMxOTkwLDMyNDEwLDMyNDA4LDMyNDExLDMyNDA5LDMzMjQ4LDMzMjQ5LDM0Mzc0LDM0Mzc1LDM0Mzc2LDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk1LDM1MzI3LDM1NzM2LDM1NzM3LDM2NTE3LDM2NTE2LDM2NTE1LDM3OTk4LDM3OTk3LDM3OTk5LDM4MDAxLDM4MDAzLDM4NzI5LDM5MDI2''@;'; put 'put ''LDM5MjYzLDQwMDQwLDQwMDQ2LDQwMDQ1LDQwNDU5LDQwNDYxLDQwNDY0LDQwNDYzLDQwNDY2LDQwNDY1LDQwNjA5LDQwNjkzLDQwNzEzLDQwNzc1LDQwODI0LDQwODI3LDQwODI2LDQwODI1LDIyMzAyLDI4Nzc0LDMxODU1LDM0ODc2LDM2Mjc0LDM2NTE4LDM3MzE1LDM4MDA0LDM4MDA4LDM4''@;'; put 'put ''MDA2LDM4MDA1LDM5NTIwLDQwMDUyLDQwMDUxLDQwMDQ5LDQwMDUzLDQwNDY4LDQwNDY3LDQwNjk0LDQwNzE0LDQwODY4LDI4Nzc2LDI4NzczLDMxOTkxLDM0NDEwLDM0ODc4LDM0ODc3LDM0ODc5LDM1NzQyLDM1OTk2LDM2NTIxLDM2NTUzLDM4NzMxLDM5MDI3LDM5MDI4LDM5MTE2LDM5MjY1''@;'; put 'put ''LDM5MzM5LDM5NTI0LDM5NTI2LDM5NTI3LDM5NzE2LDQwNDY5LDQwNDcxLDQwNzc2LDI1MDk1LDI3NDIyLDI5MjIzLDM0MzgwLDM2NTIwLDM4MDE4LDM4MDE2LDM4MDE3LDM5NTI5LDM5NTI4LDM5NzI2LDQwNDczLDI5MjI1LDM0Mzc5LDM1NzQzLDM4MDE5LDQwMDU3LDQwNjMxLDMwMzI1LDM5''@;'; put 'put ''NTMxLDQwMDU4LDQwNDc3LDI4Nzc3LDI4Nzc4LDQwNjEyLDQwODMwLDQwNzc3LDQwODU2LDMwODQ5LDM3NTYxLDM1MDIzLDIyNzE1LDI0NjU4LDMxOTExLDIzMjkwLDk1NTYsOTU3NCw5NTU5LDk1NjgsOTU4MCw5NTcxLDk1NjIsOTU3Nyw5NTY1LDk1NTQsOTU3Miw5NTU3LDk1NjYsOTU3OCw5''@;'; put 'put ''NTY5LDk1NjAsOTU3NSw5NTYzLDk1NTUsOTU3Myw5NTU4LDk1NjcsOTU3OSw5NTcwLDk1NjEsOTU3Niw5NTY0LDk1NTMsOTU1Miw5NTgxLDk1ODIsOTU4NCw5NTgzLDY1NTE3LDEzMjQyMywzNzU5NSwxMzI1NzUsMTQ3Mzk3LDM0MTI0LDE3MDc3LDI5Njc5LDIwOTE3LDEzODk3LDE0OTgyNiwx''@;'; put 'put ''NjYzNzIsMzc3MDAsMTM3NjkxLDMzNTE4LDE0NjYzMiwzMDc4MCwyNjQzNiwyNTMxMSwxNDk4MTEsMTY2MzE0LDEzMTc0NCwxNTg2NDMsMTM1OTQxLDIwMzk1LDE0MDUyNSwyMDQ4OCwxNTkwMTcsMTYyNDM2LDE0NDg5NiwxNTAxOTMsMTQwNTYzLDIwNTIxLDEzMTk2NiwyNDQ4NCwxMzE5Njgs''@;'; put 'put ''MTMxOTExLDI4Mzc5LDEzMjEyNywyMDYwNSwyMDczNywxMzQzNCwyMDc1MCwzOTAyMCwxNDE0NywzMzgxNCwxNDk5MjQsMTMyMjMxLDIwODMyLDE0NDMwOCwyMDg0MiwxMzQxNDMsMTM5NTE2LDEzMTgxMywxNDA1OTIsMTMyNDk0LDE0MzkyMywxMzc2MDMsMjM0MjYsMzQ2ODUsMTMyNTMxLDE0''@;'; put 'put ''NjU4NSwyMDkxNCwyMDkyMCw0MDI0NCwyMDkzNywyMDk0MywyMDk0NSwxNTU4MCwyMDk0NywxNTAxODIsMjA5MTUsMjA5NjIsMjEzMTQsMjA5NzMsMzM3NDEsMjY5NDIsMTQ1MTk3LDI0NDQzLDIxMDAzLDIxMDMwLDIxMDUyLDIxMTczLDIxMDc5LDIxMTQwLDIxMTc3LDIxMTg5LDMxNzY1LDM0''@;'; put 'put ''MTE0LDIxMjE2LDM0MzE3LDE1ODQ4MywyMTI1MywxNjY2MjIsMjE4MzMsMjgzNzcsMTQ3MzI4LDEzMzQ2MCwxNDc0MzYsMjEyOTksMjEzMTYsMTM0MTE0LDI3ODUxLDEzNjk5OCwyNjY1MSwyOTY1MywyNDY1MCwxNjA0MiwxNDU0MCwxMzY5MzYsMjkxNDksMTc1NzAsMjEzNTcsMjEzNjQsMTY1''@;'; put 'put ''NTQ3LDIxMzc0LDIxMzc1LDEzNjU5OCwxMzY3MjMsMzA2OTQsMjEzOTUsMTY2NTU1LDIxNDA4LDIxNDE5LDIxNDIyLDI5NjA3LDE1MzQ1OCwxNjIxNywyOTU5NiwyMTQ0MSwyMTQ0NSwyNzcyMSwyMDA0MSwyMjUyNiwyMTQ2NSwxNTAxOSwxMzQwMzEsMjE0NzIsMTQ3NDM1LDE0Mjc1NSwyMTQ5''@;'; put 'put ''NCwxMzQyNjMsMjE1MjMsMjg3OTMsMjE4MDMsMjYxOTksMjc5OTUsMjE2MTMsMTU4NTQ3LDEzNDUxNiwyMTg1MywyMTY0NywyMTY2OCwxODM0MiwxMzY5NzMsMTM0ODc3LDE1Nzk2LDEzNDQ3NywxNjYzMzIsMTQwOTUyLDIxODMxLDE5NjkzLDIxNTUxLDI5NzE5LDIxODk0LDIxOTI5LDIyMDIx''@;'; put 'put ''LDEzNzQzMSwxNDc1MTQsMTc3NDYsMTQ4NTMzLDI2MjkxLDEzNTM0OCwyMjA3MSwyNjMxNywxNDQwMTAsMjYyNzYsMjYyODUsMjIwOTMsMjIwOTUsMzA5NjEsMjIyNTcsMzg3OTEsMjE1MDIsMjIyNzIsMjIyNTUsMjIyNTMsMTY2NzU4LDEzODU5LDEzNTc1OSwyMjM0MiwxNDc4NzcsMjc3NTgs''@;'; put 'put ''Mjg4MTEsMjIzMzgsMTQwMDEsMTU4ODQ2LDIyNTAyLDEzNjIxNCwyMjUzMSwxMzYyNzYsMTQ4MzIzLDIyNTY2LDE1MDUxNywyMjYyMCwyMjY5OCwxMzY2NSwyMjc1MiwyMjc0OCwxMzU3NDAsMjI3NzksMjM1NTEsMjIzMzksMTcyMzY4LDE0ODA4OCwzNzg0MywxMzcyOSwyMjgxNSwyNjc5MCwx''@;'; put 'put ''NDAxOSwyODI0OSwxMzY3NjYsMjMwNzYsMjE4NDMsMTM2ODUwLDM0MDUzLDIyOTg1LDEzNDQ3OCwxNTg4NDksMTU5MDE4LDEzNzE4MCwyMzAwMSwxMzcyMTEsMTM3MTM4LDE1OTE0MiwyODAxNywxMzcyNTYsMTM2OTE3LDIzMDMzLDE1OTMwMSwyMzIxMSwyMzEzOSwxNDA1NCwxNDk5MjksMjMx''@;'; put 'put ''NTksMTQwODgsMjMxOTAsMjk3OTcsMjMyNTEsMTU5NjQ5LDE0MDYyOCwxNTc0OSwxMzc0ODksMTQxMzAsMTM2ODg4LDI0MTk1LDIxMjAwLDIzNDE0LDI1OTkyLDIzNDIwLDE2MjMxOCwxNjM4OCwxODUyNSwxMzE1ODgsMjM1MDksMjQ5MjgsMTM3NzgwLDE1NDA2MCwxMzI1MTcsMjM1MzksMjM0''@;'; put 'put ''NTMsMTk3MjgsMjM1NTcsMTM4MDUyLDIzNTcxLDI5NjQ2LDIzNTcyLDEzODQwNSwxNTg1MDQsMjM2MjUsMTg2NTMsMjM2ODUsMjM3ODUsMjM3OTEsMjM5NDcsMTM4NzQ1LDEzODgwNywyMzgyNCwyMzgzMiwyMzg3OCwxMzg5MTYsMjM3MzgsMjQwMjMsMzM1MzIsMTQzODEsMTQ5NzYxLDEzOTMz''@;'; put 'put ''NywxMzk2MzUsMzM0MTUsMTQzOTAsMTUyOTgsMjQxMTAsMjcyNzQsMjQxODEsMjQxODYsMTQ4NjY4LDEzNDM1NSwyMTQxNCwyMDE1MSwyNDI3MiwyMTQxNiwxMzcwNzMsMjQwNzMsMjQzMDgsMTY0OTk0LDI0MzEzLDI0MzE1LDE0NDk2LDI0MzE2LDI2Njg2LDM3OTE1LDI0MzMzLDEzMTUyMSwx''@;'; put 'put ''OTQ3MDgsMTUwNzAsMTg2MDYsMTM1OTk0LDI0Mzc4LDE1NzgzMiwxNDAyNDAsMjQ0MDgsMTQwNDAxLDI0NDE5LDM4ODQ1LDE1OTM0MiwyNDQzNCwzNzY5NiwxNjY0NTQsMjQ0ODcsMjM5OTAsMTU3MTEsMTUyMTQ0LDEzOTExNCwxNTk5OTIsMTQwOTA0LDM3MzM0LDEzMTc0MiwxNjY0NDEsMjQ2''@;'; put 'put ''MjUsMjYyNDUsMTM3MzM1LDE0NjkxLDE1ODE1LDEzODgxLDIyNDE2LDE0MTIzNiwzMTA4OSwxNTkzNiwyNDczNCwyNDc0MCwyNDc1NSwxNDk4OTAsMTQ5OTAzLDE2MjM4NywyOTg2MCwyMDcwNSwyMzIwMCwyNDkzMiwzMzgyOCwyNDg5OCwxOTQ3MjYsMTU5NDQyLDI0OTYxLDIwOTgwLDEzMjY5''@;'; put 'put ''NCwyNDk2NywyMzQ2NiwxNDczODMsMTQxNDA3LDI1MDQzLDE2NjgxMywxNzAzMzMsMjUwNDAsMTQ2NDIsMTQxNjk2LDE0MTUwNSwyNDYxMSwyNDkyNCwyNTg4NiwyNTQ4MywxMzEzNTIsMjUyODUsMTM3MDcyLDI1MzAxLDE0Mjg2MSwyNTQ1MiwxNDk5ODMsMTQ4NzEsMjU2NTYsMjU1OTIsMTM2''@;'; put 'put ''MDc4LDEzNzIxMiwyNTc0NCwyODU1NCwxNDI5MDIsMzg5MzIsMTQ3NTk2LDE1MzM3MywyNTgyNSwyNTgyOSwzODAxMSwxNDk1MCwyNTY1OCwxNDkzNSwyNTkzMywyODQzOCwxNTAwNTYsMTUwMDUxLDI1OTg5LDI1OTY1LDI1OTUxLDE0MzQ4NiwyNjAzNywxNDk4MjQsMTkyNTUsMjYwNjUsMTY2''@;'; put 'put ''MDAsMTM3MjU3LDI2MDgwLDI2MDgzLDI0NTQzLDE0NDM4NCwyNjEzNiwxNDM4NjMsMTQzODY0LDI2MTgwLDE0Mzc4MCwxNDM3ODEsMjYxODcsMTM0NzczLDI2MjE1LDE1MjAzOCwyNjIyNywyNjIyOCwxMzg4MTMsMTQzOTIxLDE2NTM2NCwxNDM4MTYsMTUyMzM5LDMwNjYxLDE0MTU1OSwzOTMz''@;'; put 'put ''MiwyNjM3MCwxNDgzODAsMTUwMDQ5LDE1MTQ3LDI3MTMwLDE0NTM0NiwyNjQ2MiwyNjQ3MSwyNjQ2NiwxNDc5MTcsMTY4MTczLDI2NTgzLDE3NjQxLDI2NjU4LDI4MjQwLDM3NDM2LDI2NjI1LDE0NDM1OCwxNTkxMzYsMjY3MTcsMTQ0NDk1LDI3MTA1LDI3MTQ3LDE2NjYyMywyNjk5NSwyNjgx''@;'; put 'put ''OSwxNDQ4NDUsMjY4ODEsMjY4ODAsMTU2NjYsMTQ4NDksMTQ0OTU2LDE1MjMyLDI2NTQwLDI2OTc3LDE2NjQ3NCwxNzE0OCwyNjkzNCwyNzAzMiwxNTI2NSwxMzIwNDEsMzM2MzUsMjA2MjQsMjcxMjksMTQ0OTg1LDEzOTU2MiwyNzIwNSwxNDUxNTUsMjcyOTMsMTUzNDcsMjY1NDUsMjczMzYs''@;'; put 'put ''MTY4MzQ4LDE1MzczLDI3NDIxLDEzMzQxMSwyNDc5OCwyNzQ0NSwyNzUwOCwxNDEyNjEsMjgzNDEsMTQ2MTM5LDEzMjAyMSwxMzc1NjAsMTQxNDQsMjE1MzcsMTQ2MjY2LDI3NjE3LDE0NzE5NiwyNzYxMiwyNzcwMywxNDA0MjcsMTQ5NzQ1LDE1ODU0NSwyNzczOCwzMzMxOCwyNzc2OSwxNDY4''@;'; put 'put ''NzYsMTc2MDUsMTQ2ODc3LDE0Nzg3NiwxNDk3NzIsMTQ5NzYwLDE0NjYzMywxNDA1MywxNTU5NSwxMzQ0NTAsMzk4MTEsMTQzODY1LDE0MDQzMywzMjY1NSwyNjY3OSwxNTkwMTMsMTU5MTM3LDE1OTIxMSwyODA1NCwyNzk5NiwyODI4NCwyODQyMCwxNDk4ODcsMTQ3NTg5LDE1OTM0NiwzNDA5''@;'; put 'put ''OSwxNTk2MDQsMjA5MzUsMjc4MDQsMjgxODksMzM4MzgsMTY2Njg5LDI4MjA3LDE0Njk5MSwyOTc3OSwxNDczMzAsMzExODAsMjgyMzksMjMxODUsMTQzNDM1LDI4NjY0LDE0MDkzLDI4NTczLDE0Njk5MiwyODQxMCwxMzYzNDMsMTQ3NTE3LDE3NzQ5LDM3ODcyLDI4NDg0LDI4NTA4LDE1Njk0''@;'; put 'put ''LDI4NTMyLDE2ODMwNCwxNTY3NSwyODU3NSwxNDc3ODAsMjg2MjcsMTQ3NjAxLDE0Nzc5NywxNDc1MTMsMTQ3NDQwLDE0NzM4MCwxNDc3NzUsMjA5NTksMTQ3Nzk4LDE0Nzc5OSwxNDc3NzYsMTU2MTI1LDI4NzQ3LDI4Nzk4LDI4ODM5LDI4ODAxLDI4ODc2LDI4ODg1LDI4ODg2LDI4ODk1LDE2''@;'; put 'put ''NjQ0LDE1ODQ4LDI5MTA4LDI5MDc4LDE0ODA4NywyODk3MSwyODk5NywyMzE3NiwyOTAwMiwyOTAzOCwyMzcwOCwxNDgzMjUsMjkwMDcsMzc3MzAsMTQ4MTYxLDI4OTcyLDE0ODU3MCwxNTAwNTUsMTUwMDUwLDI5MTE0LDE2Njg4OCwyODg2MSwyOTE5OCwzNzk1NCwyOTIwNSwyMjgwMSwzNzk1''@;'; put 'put ''NSwyOTIyMCwzNzY5NywxNTMwOTMsMjkyMzAsMjkyNDgsMTQ5ODc2LDI2ODEzLDI5MjY5LDI5MjcxLDE1OTU3LDE0MzQyOCwyNjYzNywyODQ3NywyOTMxNCwyOTQ4MiwyOTQ4MywxNDk1MzksMTY1OTMxLDE4NjY5LDE2NTg5MiwyOTQ4MCwyOTQ4NiwyOTY0NywyOTYxMCwxMzQyMDIsMTU4MjU0''@;'; put 'put ''LDI5NjQxLDI5NzY5LDE0NzkzOCwxMzY5MzUsMTUwMDUyLDI2MTQ3LDE0MDIxLDE0OTk0MywxNDk5MDEsMTUwMDExLDI5Njg3LDI5NzE3LDI2ODgzLDE1MDA1NCwyOTc1MywxMzI1NDcsMTYwODcsMjk3ODgsMTQxNDg1LDI5NzkyLDE2NzYwMiwyOTc2NywyOTY2OCwyOTgxNCwzMzcyMSwyOTgw''@;'; put 'put ''NCwxNDEyOCwyOTgxMiwzNzg3MywyNzE4MCwyOTgyNiwxODc3MSwxNTAxNTYsMTQ3ODA3LDE1MDEzNywxNjY3OTksMjMzNjYsMTY2OTE1LDEzNzM3NCwyOTg5NiwxMzc2MDgsMjk5NjYsMjk5MjksMjk5ODIsMTY3NjQxLDEzNzgwMywyMzUxMSwxNjc1OTYsMzc3NjUsMzAwMjksMzAwMjYsMzAw''@;'; put 'put ''NTUsMzAwNjIsMTUxNDI2LDE2MTMyLDE1MDgwMywzMDA5NCwyOTc4OSwzMDExMCwzMDEzMiwzMDIxMCwzMDI1MiwzMDI4OSwzMDI4NywzMDMxOSwzMDMyNiwxNTY2NjEsMzAzNTIsMzMyNjMsMTQzMjgsMTU3OTY5LDE1Nzk2NiwzMDM2OSwzMDM3MywzMDM5MSwzMDQxMiwxNTk2NDcsMzM4OTAs''@;'; put 'put ''MTUxNzA5LDE1MTkzMywxMzg3ODAsMzA0OTQsMzA1MDIsMzA1MjgsMjU3NzUsMTUyMDk2LDMwNTUyLDE0NDA0NCwzMDYzOSwxNjYyNDQsMTY2MjQ4LDEzNjg5NywzMDcwOCwzMDcyOSwxMzYwNTQsMTUwMDM0LDI2ODI2LDMwODk1LDMwOTE5LDMwOTMxLDM4NTY1LDMxMDIyLDE1MzA1NiwzMDkz''@;'; put 'put ''NSwzMTAyOCwzMDg5NywxNjEyOTIsMzY3OTIsMzQ5NDgsMTY2Njk5LDE1NTc3OSwxNDA4MjgsMzExMTAsMzUwNzIsMjY4ODIsMzExMDQsMTUzNjg3LDMxMTMzLDE2MjYxNywzMTAzNiwzMTE0NSwyODIwMiwxNjAwMzgsMTYwNDAsMzExNzQsMTY4MjA1LDMxMTg4XSwiZXVjLWtyIjpbNDQwMzQs''@;'; put 'put ''NDQwMzUsNDQwMzcsNDQwMzgsNDQwNDMsNDQwNDQsNDQwNDUsNDQwNDYsNDQwNDcsNDQwNTYsNDQwNjIsNDQwNjMsNDQwNjUsNDQwNjYsNDQwNjcsNDQwNjksNDQwNzAsNDQwNzEsNDQwNzIsNDQwNzMsNDQwNzQsNDQwNzUsNDQwNzgsNDQwODIsNDQwODMsNDQwODQsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsNDQwODUsNDQwODYsNDQwODcsNDQwOTAsNDQwOTEsNDQwOTMsNDQwOTQsNDQwOTUsNDQwOTcsNDQwOTgsNDQwOTksNDQxMDAsNDQxMDEsNDQxMDIsNDQxMDMsNDQxMDQsNDQxMDUsNDQxMDYsNDQxMDgsNDQxMTAsNDQxMTEsNDQxMTIsNDQxMTMsNDQxMTQsNDQxMTUs''@;'; put 'put ''NDQxMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQxMTgsNDQxMTksNDQxMjEsNDQxMjIsNDQxMjMsNDQxMjUsNDQxMjYsNDQxMjcsNDQxMjgsNDQxMjksNDQxMzAsNDQxMzEsNDQxMzIsNDQxMzMsNDQxMzQsNDQxMzUsNDQxMzYsNDQxMzcsNDQxMzgsNDQxMzksNDQxNDAsNDQx''@;'; put 'put ''NDEsNDQxNDIsNDQxNDMsNDQxNDYsNDQxNDcsNDQxNDksNDQxNTAsNDQxNTMsNDQxNTUsNDQxNTYsNDQxNTcsNDQxNTgsNDQxNTksNDQxNjIsNDQxNjcsNDQxNjgsNDQxNzMsNDQxNzQsNDQxNzUsNDQxNzcsNDQxNzgsNDQxNzksNDQxODEsNDQxODIsNDQxODMsNDQxODQsNDQxODUsNDQxODYs''@;'; put 'put ''NDQxODcsNDQxOTAsNDQxOTQsNDQxOTUsNDQxOTYsNDQxOTcsNDQxOTgsNDQxOTksNDQyMDMsNDQyMDUsNDQyMDYsNDQyMDksNDQyMTAsNDQyMTEsNDQyMTIsNDQyMTMsNDQyMTQsNDQyMTUsNDQyMTgsNDQyMjIsNDQyMjMsNDQyMjQsNDQyMjYsNDQyMjcsNDQyMjksNDQyMzAsNDQyMzEsNDQy''@;'; put 'put ''MzMsNDQyMzQsNDQyMzUsNDQyMzcsNDQyMzgsNDQyMzksNDQyNDAsNDQyNDEsNDQyNDIsNDQyNDMsNDQyNDQsNDQyNDYsNDQyNDgsNDQyNDksNDQyNTAsNDQyNTEsNDQyNTIsNDQyNTMsNDQyNTQsNDQyNTUsNDQyNTgsNDQyNTksNDQyNjEsNDQyNjIsNDQyNjUsNDQyNjcsNDQyNjksNDQyNzAs''@;'; put 'put ''NDQyNzQsNDQyNzYsNDQyNzksNDQyODAsNDQyODEsNDQyODIsNDQyODMsNDQyODYsNDQyODcsNDQyODksNDQyOTAsNDQyOTEsNDQyOTMsNDQyOTUsNDQyOTYsNDQyOTcsNDQyOTgsNDQyOTksNDQzMDIsNDQzMDQsNDQzMDYsNDQzMDcsNDQzMDgsNDQzMDksNDQzMTAsNDQzMTEsNDQzMTMsNDQz''@;'; put 'put ''MTQsNDQzMTUsNDQzMTcsNDQzMTgsNDQzMTksNDQzMjEsNDQzMjIsNDQzMjMsNDQzMjQsNDQzMjUsNDQzMjYsNDQzMjcsNDQzMjgsNDQzMzAsNDQzMzEsNDQzMzQsNDQzMzUsNDQzMzYsNDQzMzcsNDQzMzgsNDQzMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNDIsNDQzNDMs''@;'; put 'put ''NDQzNDUsNDQzNDYsNDQzNDcsNDQzNDksNDQzNTAsNDQzNTEsNDQzNTIsNDQzNTMsNDQzNTQsNDQzNTUsNDQzNTgsNDQzNjAsNDQzNjIsNDQzNjMsNDQzNjQsNDQzNjUsNDQzNjYsNDQzNjcsNDQzNjksNDQzNzAsNDQzNzEsNDQzNzMsNDQzNzQsNDQzNzUsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNDQzNzcsNDQzNzgsNDQzNzksNDQzODAsNDQzODEsNDQzODIsNDQzODMsNDQzODQsNDQzODYsNDQzODgsNDQzODksNDQzOTAsNDQzOTEsNDQzOTIsNDQzOTMsNDQzOTQsNDQzOTUsNDQzOTgsNDQzOTksNDQ0MDEsNDQ0MDIsNDQ0MDcsNDQ0MDgsNDQ0MDksNDQ0MTAsNDQ0MTQs''@;'; put 'put ''NDQ0MTYsNDQ0MTksNDQ0MjAsNDQ0MjEsNDQ0MjIsNDQ0MjMsNDQ0MjYsNDQ0MjcsNDQ0MjksNDQ0MzAsNDQ0MzEsNDQ0MzMsNDQ0MzQsNDQ0MzUsNDQ0MzYsNDQ0MzcsNDQ0MzgsNDQ0MzksNDQ0NDAsNDQ0NDEsNDQ0NDIsNDQ0NDMsNDQ0NDYsNDQ0NDcsNDQ0NDgsNDQ0NDksNDQ0NTAsNDQ0''@;'; put 'put ''NTEsNDQ0NTMsNDQ0NTQsNDQ0NTUsNDQ0NTYsNDQ0NTcsNDQ0NTgsNDQ0NTksNDQ0NjAsNDQ0NjEsNDQ0NjIsNDQ0NjMsNDQ0NjQsNDQ0NjUsNDQ0NjYsNDQ0NjcsNDQ0NjgsNDQ0NjksNDQ0NzAsNDQ0NzIsNDQ0NzMsNDQ0NzQsNDQ0NzUsNDQ0NzYsNDQ0NzcsNDQ0NzgsNDQ0NzksNDQ0ODIs''@;'; put 'put ''NDQ0ODMsNDQ0ODUsNDQ0ODYsNDQ0ODcsNDQ0ODksNDQ0OTAsNDQ0OTEsNDQ0OTIsNDQ0OTMsNDQ0OTQsNDQ0OTUsNDQ0OTgsNDQ1MDAsNDQ1MDEsNDQ1MDIsNDQ1MDMsNDQ1MDQsNDQ1MDUsNDQ1MDYsNDQ1MDcsNDQ1MDksNDQ1MTAsNDQ1MTEsNDQ1MTMsNDQ1MTQsNDQ1MTUsNDQ1MTcsNDQ1''@;'; put 'put ''MTgsNDQ1MTksNDQ1MjAsNDQ1MjEsNDQ1MjIsNDQ1MjMsNDQ1MjQsNDQ1MjUsNDQ1MjYsNDQ1MjcsNDQ1MjgsNDQ1MjksNDQ1MzAsNDQ1MzEsNDQ1MzIsNDQ1MzMsNDQ1MzQsNDQ1MzUsNDQ1MzgsNDQ1MzksNDQ1NDEsNDQ1NDIsNDQ1NDYsNDQ1NDcsNDQ1NDgsNDQ1NDksNDQ1NTAsNDQ1NTEs''@;'; put 'put ''NDQ1NTQsNDQ1NTYsNDQ1NTgsNDQ1NTksNDQ1NjAsNDQ1NjEsNDQ1NjIsNDQ1NjMsNDQ1NjUsNDQ1NjYsNDQ1NjcsNDQ1NjgsNDQ1NjksNDQ1NzAsNDQ1NzEsNDQ1NzIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ1NzMsNDQ1NzQsNDQ1NzUsNDQ1NzYsNDQ1NzcsNDQ1NzgsNDQ1''@;'; put 'put ''NzksNDQ1ODAsNDQ1ODEsNDQ1ODIsNDQ1ODMsNDQ1ODQsNDQ1ODUsNDQ1ODYsNDQ1ODcsNDQ1ODgsNDQ1ODksNDQ1OTAsNDQ1OTEsNDQ1OTQsNDQ1OTUsNDQ1OTcsNDQ1OTgsNDQ2MDEsNDQ2MDMsNDQ2MDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ2MDUsNDQ2MDYsNDQ2MDcs''@;'; put 'put ''NDQ2MTAsNDQ2MTIsNDQ2MTUsNDQ2MTYsNDQ2MTcsNDQ2MTksNDQ2MjMsNDQ2MjUsNDQ2MjYsNDQ2MjcsNDQ2MjksNDQ2MzEsNDQ2MzIsNDQ2MzMsNDQ2MzQsNDQ2MzUsNDQ2MzgsNDQ2NDIsNDQ2NDMsNDQ2NDQsNDQ2NDYsNDQ2NDcsNDQ2NTAsNDQ2NTEsNDQ2NTMsNDQ2NTQsNDQ2NTUsNDQ2''@;'; put 'put ''NTcsNDQ2NTgsNDQ2NTksNDQ2NjAsNDQ2NjEsNDQ2NjIsNDQ2NjMsNDQ2NjYsNDQ2NzAsNDQ2NzEsNDQ2NzIsNDQ2NzMsNDQ2NzQsNDQ2NzUsNDQ2NzgsNDQ2NzksNDQ2ODAsNDQ2ODEsNDQ2ODIsNDQ2ODMsNDQ2ODUsNDQ2ODYsNDQ2ODcsNDQ2ODgsNDQ2ODksNDQ2OTAsNDQ2OTEsNDQ2OTIs''@;'; put 'put ''NDQ2OTMsNDQ2OTQsNDQ2OTUsNDQ2OTYsNDQ2OTcsNDQ2OTgsNDQ2OTksNDQ3MDAsNDQ3MDEsNDQ3MDIsNDQ3MDMsNDQ3MDQsNDQ3MDUsNDQ3MDYsNDQ3MDcsNDQ3MDgsNDQ3MDksNDQ3MTAsNDQ3MTEsNDQ3MTIsNDQ3MTMsNDQ3MTQsNDQ3MTUsNDQ3MTYsNDQ3MTcsNDQ3MTgsNDQ3MTksNDQ3''@;'; put 'put ''MjAsNDQ3MjEsNDQ3MjIsNDQ3MjMsNDQ3MjQsNDQ3MjUsNDQ3MjYsNDQ3MjcsNDQ3MjgsNDQ3MjksNDQ3MzAsNDQ3MzEsNDQ3MzUsNDQ3MzcsNDQ3MzgsNDQ3MzksNDQ3NDEsNDQ3NDIsNDQ3NDMsNDQ3NDQsNDQ3NDUsNDQ3NDYsNDQ3NDcsNDQ3NTAsNDQ3NTQsNDQ3NTUsNDQ3NTYsNDQ3NTcs''@;'; put 'put ''NDQ3NTgsNDQ3NTksNDQ3NjIsNDQ3NjMsNDQ3NjUsNDQ3NjYsNDQ3NjcsNDQ3NjgsNDQ3NjksNDQ3NzAsNDQ3NzEsNDQ3NzIsNDQ3NzMsNDQ3NzQsNDQ3NzUsNDQ3NzcsNDQ3NzgsNDQ3ODAsNDQ3ODIsNDQ3ODMsNDQ3ODQsNDQ3ODUsNDQ3ODYsNDQ3ODcsNDQ3ODksNDQ3OTAsNDQ3OTEsNDQ3''@;'; put 'put ''OTMsNDQ3OTQsNDQ3OTUsNDQ3OTcsNDQ3OTgsNDQ3OTksNDQ4MDAsNDQ4MDEsNDQ4MDIsNDQ4MDMsNDQ4MDQsNDQ4MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MDYsNDQ4MDksNDQ4MTAsNDQ4MTEsNDQ4MTIsNDQ4MTQsNDQ4MTUsNDQ4MTcsNDQ4MTgsNDQ4MTksNDQ4MjAs''@;'; put 'put ''NDQ4MjEsNDQ4MjIsNDQ4MjMsNDQ4MjQsNDQ4MjUsNDQ4MjYsNDQ4MjcsNDQ4MjgsNDQ4MjksNDQ4MzAsNDQ4MzEsNDQ4MzIsNDQ4MzMsNDQ4MzQsNDQ4MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MzYsNDQ4MzcsNDQ4MzgsNDQ4MzksNDQ4NDAsNDQ4NDEsNDQ4NDIsNDQ4''@;'; put 'put ''NDMsNDQ4NDYsNDQ4NDcsNDQ4NDksNDQ4NTEsNDQ4NTMsNDQ4NTQsNDQ4NTUsNDQ4NTYsNDQ4NTcsNDQ4NTgsNDQ4NTksNDQ4NjIsNDQ4NjQsNDQ4NjgsNDQ4NjksNDQ4NzAsNDQ4NzEsNDQ4NzQsNDQ4NzUsNDQ4NzYsNDQ4NzcsNDQ4NzgsNDQ4NzksNDQ4ODEsNDQ4ODIsNDQ4ODMsNDQ4ODQs''@;'; put 'put ''NDQ4ODUsNDQ4ODYsNDQ4ODcsNDQ4ODgsNDQ4ODksNDQ4OTAsNDQ4OTEsNDQ4OTQsNDQ4OTUsNDQ4OTYsNDQ4OTcsNDQ4OTgsNDQ4OTksNDQ5MDIsNDQ5MDMsNDQ5MDQsNDQ5MDUsNDQ5MDYsNDQ5MDcsNDQ5MDgsNDQ5MDksNDQ5MTAsNDQ5MTEsNDQ5MTIsNDQ5MTMsNDQ5MTQsNDQ5MTUsNDQ5''@;'; put 'put ''MTYsNDQ5MTcsNDQ5MTgsNDQ5MTksNDQ5MjAsNDQ5MjIsNDQ5MjMsNDQ5MjQsNDQ5MjUsNDQ5MjYsNDQ5MjcsNDQ5MjksNDQ5MzAsNDQ5MzEsNDQ5MzMsNDQ5MzQsNDQ5MzUsNDQ5MzcsNDQ5MzgsNDQ5MzksNDQ5NDAsNDQ5NDEsNDQ5NDIsNDQ5NDMsNDQ5NDYsNDQ5NDcsNDQ5NDgsNDQ5NTAs''@;'; put 'put ''NDQ5NTEsNDQ5NTIsNDQ5NTMsNDQ5NTQsNDQ5NTUsNDQ5NTcsNDQ5NTgsNDQ5NTksNDQ5NjAsNDQ5NjEsNDQ5NjIsNDQ5NjMsNDQ5NjQsNDQ5NjUsNDQ5NjYsNDQ5NjcsNDQ5NjgsNDQ5NjksNDQ5NzAsNDQ5NzEsNDQ5NzIsNDQ5NzMsNDQ5NzQsNDQ5NzUsNDQ5NzYsNDQ5NzcsNDQ5NzgsNDQ5''@;'; put 'put ''NzksNDQ5ODAsNDQ5ODEsNDQ5ODIsNDQ5ODMsNDQ5ODYsNDQ5ODcsNDQ5ODksNDQ5OTAsNDQ5OTEsNDQ5OTMsNDQ5OTQsNDQ5OTUsNDQ5OTYsNDQ5OTcsNDQ5OTgsNDUwMDIsNDUwMDQsNDUwMDcsNDUwMDgsNDUwMDksNDUwMTAsNDUwMTEsNDUwMTMsNDUwMTQsNDUwMTUsNDUwMTYsNDUwMTcs''@;'; put 'put ''NDUwMTgsNDUwMTksNDUwMjEsNDUwMjIsNDUwMjMsNDUwMjQsNDUwMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwMjYsNDUwMjcsNDUwMjgsNDUwMjksNDUwMzAsNDUwMzEsNDUwMzQsNDUwMzUsNDUwMzYsNDUwMzcsNDUwMzgsNDUwMzksNDUwNDIsNDUwNDMsNDUwNDUsNDUw''@;'; put 'put ''NDYsNDUwNDcsNDUwNDksNDUwNTAsNDUwNTEsNDUwNTIsNDUwNTMsNDUwNTQsNDUwNTUsNDUwNTgsNDUwNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwNjEsNDUwNjIsNDUwNjMsNDUwNjQsNDUwNjUsNDUwNjYsNDUwNjcsNDUwNjksNDUwNzAsNDUwNzEsNDUwNzMsNDUwNzQs''@;'; put 'put ''NDUwNzUsNDUwNzcsNDUwNzgsNDUwNzksNDUwODAsNDUwODEsNDUwODIsNDUwODMsNDUwODYsNDUwODcsNDUwODgsNDUwODksNDUwOTAsNDUwOTEsNDUwOTIsNDUwOTMsNDUwOTQsNDUwOTUsNDUwOTcsNDUwOTgsNDUwOTksNDUxMDAsNDUxMDEsNDUxMDIsNDUxMDMsNDUxMDQsNDUxMDUsNDUx''@;'; put 'put ''MDYsNDUxMDcsNDUxMDgsNDUxMDksNDUxMTAsNDUxMTEsNDUxMTIsNDUxMTMsNDUxMTQsNDUxMTUsNDUxMTYsNDUxMTcsNDUxMTgsNDUxMTksNDUxMjAsNDUxMjEsNDUxMjIsNDUxMjMsNDUxMjYsNDUxMjcsNDUxMjksNDUxMzEsNDUxMzMsNDUxMzUsNDUxMzYsNDUxMzcsNDUxMzgsNDUxNDIs''@;'; put 'put ''NDUxNDQsNDUxNDYsNDUxNDcsNDUxNDgsNDUxNTAsNDUxNTEsNDUxNTIsNDUxNTMsNDUxNTQsNDUxNTUsNDUxNTYsNDUxNTcsNDUxNTgsNDUxNTksNDUxNjAsNDUxNjEsNDUxNjIsNDUxNjMsNDUxNjQsNDUxNjUsNDUxNjYsNDUxNjcsNDUxNjgsNDUxNjksNDUxNzAsNDUxNzEsNDUxNzIsNDUx''@;'; put 'put ''NzMsNDUxNzQsNDUxNzUsNDUxNzYsNDUxNzcsNDUxNzgsNDUxNzksNDUxODIsNDUxODMsNDUxODUsNDUxODYsNDUxODcsNDUxODksNDUxOTAsNDUxOTEsNDUxOTIsNDUxOTMsNDUxOTQsNDUxOTUsNDUxOTgsNDUyMDAsNDUyMDIsNDUyMDMsNDUyMDQsNDUyMDUsNDUyMDYsNDUyMDcsNDUyMTEs''@;'; put 'put ''NDUyMTMsNDUyMTQsNDUyMTksNDUyMjAsNDUyMjEsNDUyMjIsNDUyMjMsNDUyMjYsNDUyMzIsNDUyMzQsNDUyMzgsNDUyMzksNDUyNDEsNDUyNDIsNDUyNDMsNDUyNDUsNDUyNDYsNDUyNDcsNDUyNDgsNDUyNDksNDUyNTAsNDUyNTEsNDUyNTQsNDUyNTgsNDUyNTksNDUyNjAsNDUyNjEsNDUy''@;'; put 'put ''NjIsNDUyNjMsNDUyNjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyNjcsNDUyNjksNDUyNzAsNDUyNzEsNDUyNzMsNDUyNzQsNDUyNzUsNDUyNzYsNDUyNzcsNDUyNzgsNDUyNzksNDUyODEsNDUyODIsNDUyODMsNDUyODQsNDUyODYsNDUyODcsNDUyODgsNDUyODksNDUyOTAs''@;'; put 'put ''NDUyOTEsNDUyOTIsNDUyOTMsNDUyOTQsNDUyOTUsNDUyOTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyOTcsNDUyOTgsNDUyOTksNDUzMDAsNDUzMDEsNDUzMDIsNDUzMDMsNDUzMDQsNDUzMDUsNDUzMDYsNDUzMDcsNDUzMDgsNDUzMDksNDUzMTAsNDUzMTEsNDUzMTIsNDUz''@;'; put 'put ''MTMsNDUzMTQsNDUzMTUsNDUzMTYsNDUzMTcsNDUzMTgsNDUzMTksNDUzMjIsNDUzMjUsNDUzMjYsNDUzMjcsNDUzMjksNDUzMzIsNDUzMzMsNDUzMzQsNDUzMzUsNDUzMzgsNDUzNDIsNDUzNDMsNDUzNDQsNDUzNDUsNDUzNDYsNDUzNTAsNDUzNTEsNDUzNTMsNDUzNTQsNDUzNTUsNDUzNTcs''@;'; put 'put ''NDUzNTgsNDUzNTksNDUzNjAsNDUzNjEsNDUzNjIsNDUzNjMsNDUzNjYsNDUzNzAsNDUzNzEsNDUzNzIsNDUzNzMsNDUzNzQsNDUzNzUsNDUzNzgsNDUzNzksNDUzODEsNDUzODIsNDUzODMsNDUzODUsNDUzODYsNDUzODcsNDUzODgsNDUzODksNDUzOTAsNDUzOTEsNDUzOTQsNDUzOTUsNDUz''@;'; put 'put ''OTgsNDUzOTksNDU0MDEsNDU0MDIsNDU0MDMsNDU0MDUsNDU0MDYsNDU0MDcsNDU0MDksNDU0MTAsNDU0MTEsNDU0MTIsNDU0MTMsNDU0MTQsNDU0MTUsNDU0MTYsNDU0MTcsNDU0MTgsNDU0MTksNDU0MjAsNDU0MjEsNDU0MjIsNDU0MjMsNDU0MjQsNDU0MjUsNDU0MjYsNDU0MjcsNDU0Mjgs''@;'; put 'put ''NDU0MjksNDU0MzAsNDU0MzEsNDU0MzQsNDU0MzUsNDU0MzcsNDU0MzgsNDU0MzksNDU0NDEsNDU0NDMsNDU0NDQsNDU0NDUsNDU0NDYsNDU0NDcsNDU0NTAsNDU0NTIsNDU0NTQsNDU0NTUsNDU0NTYsNDU0NTcsNDU0NjEsNDU0NjIsNDU0NjMsNDU0NjUsNDU0NjYsNDU0NjcsNDU0NjksNDU0''@;'; put 'put ''NzAsNDU0NzEsNDU0NzIsNDU0NzMsNDU0NzQsNDU0NzUsNDU0NzYsNDU0NzcsNDU0NzgsNDU0NzksNDU0ODEsNDU0ODIsNDU0ODMsNDU0ODQsNDU0ODUsNDU0ODYsNDU0ODcsNDU0ODgsNDU0ODksNDU0OTAsNDU0OTEsNDU0OTIsNDU0OTMsNDU0OTQsNDU0OTUsNDU0OTYsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsNDU0OTcsNDU0OTgsNDU0OTksNDU1MDAsNDU1MDEsNDU1MDIsNDU1MDMsNDU1MDQsNDU1MDUsNDU1MDYsNDU1MDcsNDU1MDgsNDU1MDksNDU1MTAsNDU1MTEsNDU1MTIsNDU1MTMsNDU1MTQsNDU1MTUsNDU1MTcsNDU1MTgsNDU1MTksNDU1MjEsNDU1MjIsNDU1''@;'; put 'put ''MjMsNDU1MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU1MjYsNDU1MjcsNDU1MjgsNDU1MjksNDU1MzAsNDU1MzEsNDU1MzQsNDU1MzYsNDU1MzcsNDU1MzgsNDU1MzksNDU1NDAsNDU1NDEsNDU1NDIsNDU1NDMsNDU1NDYsNDU1NDcsNDU1NDksNDU1NTAsNDU1NTEsNDU1NTMs''@;'; put 'put ''NDU1NTQsNDU1NTUsNDU1NTYsNDU1NTcsNDU1NTgsNDU1NTksNDU1NjAsNDU1NjIsNDU1NjQsNDU1NjYsNDU1NjcsNDU1NjgsNDU1NjksNDU1NzAsNDU1NzEsNDU1NzQsNDU1NzUsNDU1NzcsNDU1NzgsNDU1ODEsNDU1ODIsNDU1ODMsNDU1ODQsNDU1ODUsNDU1ODYsNDU1ODcsNDU1OTAsNDU1''@;'; put 'put ''OTIsNDU1OTQsNDU1OTUsNDU1OTYsNDU1OTcsNDU1OTgsNDU1OTksNDU2MDEsNDU2MDIsNDU2MDMsNDU2MDQsNDU2MDUsNDU2MDYsNDU2MDcsNDU2MDgsNDU2MDksNDU2MTAsNDU2MTEsNDU2MTIsNDU2MTMsNDU2MTQsNDU2MTUsNDU2MTYsNDU2MTcsNDU2MTgsNDU2MTksNDU2MjEsNDU2MjIs''@;'; put 'put ''NDU2MjMsNDU2MjQsNDU2MjUsNDU2MjYsNDU2MjcsNDU2MjksNDU2MzAsNDU2MzEsNDU2MzIsNDU2MzMsNDU2MzQsNDU2MzUsNDU2MzYsNDU2MzcsNDU2MzgsNDU2MzksNDU2NDAsNDU2NDEsNDU2NDIsNDU2NDMsNDU2NDQsNDU2NDUsNDU2NDYsNDU2NDcsNDU2NDgsNDU2NDksNDU2NTAsNDU2''@;'; put 'put ''NTEsNDU2NTIsNDU2NTMsNDU2NTQsNDU2NTUsNDU2NTcsNDU2NTgsNDU2NTksNDU2NjEsNDU2NjIsNDU2NjMsNDU2NjUsNDU2NjYsNDU2NjcsNDU2NjgsNDU2NjksNDU2NzAsNDU2NzEsNDU2NzQsNDU2NzUsNDU2NzYsNDU2NzcsNDU2NzgsNDU2NzksNDU2ODAsNDU2ODEsNDU2ODIsNDU2ODMs''@;'; put 'put ''NDU2ODYsNDU2ODcsNDU2ODgsNDU2ODksNDU2OTAsNDU2OTEsNDU2OTMsNDU2OTQsNDU2OTUsNDU2OTYsNDU2OTcsNDU2OTgsNDU2OTksNDU3MDIsNDU3MDMsNDU3MDQsNDU3MDYsNDU3MDcsNDU3MDgsNDU3MDksNDU3MTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3MTEsNDU3''@;'; put 'put ''MTQsNDU3MTUsNDU3MTcsNDU3MTgsNDU3MTksNDU3MjMsNDU3MjQsNDU3MjUsNDU3MjYsNDU3MjcsNDU3MzAsNDU3MzIsNDU3MzUsNDU3MzYsNDU3MzcsNDU3MzksNDU3NDEsNDU3NDIsNDU3NDMsNDU3NDUsNDU3NDYsNDU3NDcsNDU3NDksNDU3NTAsNDU3NTEsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsNDU3NTIsNDU3NTMsNDU3NTQsNDU3NTUsNDU3NTYsNDU3NTcsNDU3NTgsNDU3NTksNDU3NjAsNDU3NjEsNDU3NjIsNDU3NjMsNDU3NjQsNDU3NjUsNDU3NjYsNDU3NjcsNDU3NzAsNDU3NzEsNDU3NzMsNDU3NzQsNDU3NzUsNDU3NzcsNDU3NzksNDU3ODAsNDU3ODEsNDU3''@;'; put 'put ''ODIsNDU3ODMsNDU3ODYsNDU3ODgsNDU3OTAsNDU3OTEsNDU3OTIsNDU3OTMsNDU3OTUsNDU3OTksNDU4MDEsNDU4MDIsNDU4MDgsNDU4MDksNDU4MTAsNDU4MTQsNDU4MjAsNDU4MjEsNDU4MjIsNDU4MjYsNDU4MjcsNDU4MjksNDU4MzAsNDU4MzEsNDU4MzMsNDU4MzQsNDU4MzUsNDU4MzYs''@;'; put 'put ''NDU4MzcsNDU4MzgsNDU4MzksNDU4NDIsNDU4NDYsNDU4NDcsNDU4NDgsNDU4NDksNDU4NTAsNDU4NTEsNDU4NTMsNDU4NTQsNDU4NTUsNDU4NTYsNDU4NTcsNDU4NTgsNDU4NTksNDU4NjAsNDU4NjEsNDU4NjIsNDU4NjMsNDU4NjQsNDU4NjUsNDU4NjYsNDU4NjcsNDU4NjgsNDU4NjksNDU4''@;'; put 'put ''NzAsNDU4NzEsNDU4NzIsNDU4NzMsNDU4NzQsNDU4NzUsNDU4NzYsNDU4NzcsNDU4NzgsNDU4NzksNDU4ODAsNDU4ODEsNDU4ODIsNDU4ODMsNDU4ODQsNDU4ODUsNDU4ODYsNDU4ODcsNDU4ODgsNDU4ODksNDU4OTAsNDU4OTEsNDU4OTIsNDU4OTMsNDU4OTQsNDU4OTUsNDU4OTYsNDU4OTcs''@;'; put 'put ''NDU4OTgsNDU4OTksNDU5MDAsNDU5MDEsNDU5MDIsNDU5MDMsNDU5MDQsNDU5MDUsNDU5MDYsNDU5MDcsNDU5MTEsNDU5MTMsNDU5MTQsNDU5MTcsNDU5MjAsNDU5MjEsNDU5MjIsNDU5MjMsNDU5MjYsNDU5MjgsNDU5MzAsNDU5MzIsNDU5MzMsNDU5MzUsNDU5MzgsNDU5MzksNDU5NDEsNDU5''@;'; put 'put ''NDIsNDU5NDMsNDU5NDUsNDU5NDYsNDU5NDcsNDU5NDgsNDU5NDksNDU5NTAsNDU5NTEsNDU5NTQsNDU5NTgsNDU5NTksNDU5NjAsNDU5NjEsNDU5NjIsNDU5NjMsNDU5NjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5NjYsNDU5NjcsNDU5NjksNDU5NzAsNDU5NzEsNDU5NzMs''@;'; put 'put ''NDU5NzQsNDU5NzUsNDU5NzYsNDU5NzcsNDU5NzgsNDU5NzksNDU5ODAsNDU5ODEsNDU5ODIsNDU5ODMsNDU5ODYsNDU5ODcsNDU5ODgsNDU5ODksNDU5OTAsNDU5OTEsNDU5OTMsNDU5OTQsNDU5OTUsNDU5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5OTgsNDU5OTksNDZl''@;'; put 'put ''Myw0NjAwMSw0NjAwMiw0NjAwMyw0NjAwNCw0NjAwNSw0NjAwNiw0NjAwNyw0NjAwOCw0NjAwOSw0NjAxMCw0NjAxMSw0NjAxMiw0NjAxMyw0NjAxNCw0NjAxNSw0NjAxNiw0NjAxNyw0NjAxOCw0NjAxOSw0NjAyMiw0NjAyMyw0NjAyNSw0NjAyNiw0NjAyOSw0NjAzMSw0NjAzMyw0NjAzNCw0''@;'; put 'put ''NjAzNSw0NjAzOCw0NjA0MCw0NjA0Miw0NjA0NCw0NjA0Niw0NjA0Nyw0NjA0OSw0NjA1MCw0NjA1MSw0NjA1Myw0NjA1NCw0NjA1NSw0NjA1Nyw0NjA1OCw0NjA1OSw0NjA2MCw0NjA2MSw0NjA2Miw0NjA2Myw0NjA2NCw0NjA2NSw0NjA2Niw0NjA2Nyw0NjA2OCw0NjA2OSw0NjA3MCw0NjA3''@;'; put 'put ''MSw0NjA3Miw0NjA3Myw0NjA3NCw0NjA3NSw0NjA3Nyw0NjA3OCw0NjA3OSw0NjA4MCw0NjA4MSw0NjA4Miw0NjA4Myw0NjA4NCw0NjA4NSw0NjA4Niw0NjA4Nyw0NjA4OCw0NjA4OSw0NjA5MCw0NjA5MSw0NjA5Miw0NjA5Myw0NjA5NCw0NjA5NSw0NjA5Nyw0NjA5OCw0NjA5OSw0NjEwMCw0''@;'; put 'put ''NjEwMSw0NjEwMiw0NjEwMyw0NjEwNSw0NjEwNiw0NjEwNyw0NjEwOSw0NjExMCw0NjExMSw0NjExMyw0NjExNCw0NjExNSw0NjExNiw0NjExNyw0NjExOCw0NjExOSw0NjEyMiw0NjEyNCw0NjEyNSw0NjEyNiw0NjEyNyw0NjEyOCw0NjEyOSw0NjEzMCw0NjEzMSw0NjEzMyw0NjEzNCw0NjEz''@;'; put 'put ''NSw0NjEzNiw0NjEzNyw0NjEzOCw0NjEzOSw0NjE0MCw0NjE0MSw0NjE0Miw0NjE0Myw0NjE0NCw0NjE0NSw0NjE0Niw0NjE0Nyw0NjE0OCw0NjE0OSw0NjE1MCw0NjE1MSw0NjE1Miw0NjE1Myw0NjE1NCw0NjE1NSw0NjE1Niw0NjE1Nyw0NjE1OCw0NjE1OSw0NjE2Miw0NjE2Myw0NjE2NSw0''@;'; put 'put ''NjE2Niw0NjE2Nyw0NjE2OSw0NjE3MCw0NjE3MSw0NjE3Miw0NjE3Myw0NjE3NCw0NjE3NSw0NjE3OCw0NjE4MCw0NjE4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjE4Myw0NjE4NCw0NjE4NSw0NjE4Niw0NjE4Nyw0NjE4OSw0NjE5MCw0NjE5MSw0NjE5Miw0NjE5Myw0NjE5''@;'; put 'put ''NCw0NjE5NSw0NjE5Niw0NjE5Nyw0NjE5OCw0NjE5OSw0NjIwMCw0NjIwMSw0NjIwMiw0NjIwMyw0NjIwNCw0NjIwNSw0NjIwNiw0NjIwNyw0NjIwOSw0NjIxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjIxMSw0NjIxMiw0NjIxMyw0NjIxNCw0NjIxNSw0NjIxNyw0NjIxOCw0''@;'; put 'put ''NjIxOSw0NjIyMCw0NjIyMSw0NjIyMiw0NjIyMyw0NjIyNCw0NjIyNSw0NjIyNiw0NjIyNyw0NjIyOCw0NjIyOSw0NjIzMCw0NjIzMSw0NjIzMiw0NjIzMyw0NjIzNCw0NjIzNSw0NjIzNiw0NjIzOCw0NjIzOSw0NjI0MCw0NjI0MSw0NjI0Miw0NjI0Myw0NjI0NSw0NjI0Niw0NjI0Nyw0NjI0''@;'; put 'put ''OSw0NjI1MCw0NjI1MSw0NjI1Myw0NjI1NCw0NjI1NSw0NjI1Niw0NjI1Nyw0NjI1OCw0NjI1OSw0NjI2MCw0NjI2Miw0NjI2NCw0NjI2Niw0NjI2Nyw0NjI2OCw0NjI2OSw0NjI3MCw0NjI3MSw0NjI3Myw0NjI3NCw0NjI3NSw0NjI3Nyw0NjI3OCw0NjI3OSw0NjI4MSw0NjI4Miw0NjI4Myw0''@;'; put 'put ''NjI4NCw0NjI4NSw0NjI4Niw0NjI4Nyw0NjI4OSw0NjI5MCw0NjI5MSw0NjI5Miw0NjI5NCw0NjI5NSw0NjI5Niw0NjI5Nyw0NjI5OCw0NjI5OSw0NjMwMiw0NjMwMyw0NjMwNSw0NjMwNiw0NjMwOSw0NjMxMSw0NjMxMiw0NjMxMyw0NjMxNCw0NjMxNSw0NjMxOCw0NjMyMCw0NjMyMiw0NjMy''@;'; put 'put ''Myw0NjMyNCw0NjMyNSw0NjMyNiw0NjMyNyw0NjMyOSw0NjMzMCw0NjMzMSw0NjMzMiw0NjMzMyw0NjMzNCw0NjMzNSw0NjMzNiw0NjMzNyw0NjMzOCw0NjMzOSw0NjM0MCw0NjM0MSw0NjM0Miw0NjM0Myw0NjM0NCw0NjM0NSw0NjM0Niw0NjM0Nyw0NjM0OCw0NjM0OSw0NjM1MCw0NjM1MSw0''@;'; put 'put ''NjM1Miw0NjM1Myw0NjM1NCw0NjM1NSw0NjM1OCw0NjM1OSw0NjM2MSw0NjM2Miw0NjM2NSw0NjM2Niw0NjM2Nyw0NjM2OCw0NjM2OSw0NjM3MCw0NjM3MSw0NjM3NCw0NjM3OSw0NjM4MCw0NjM4MSw0NjM4Miw0NjM4Myw0NjM4Niw0NjM4Nyw0NjM4OSw0NjM5MCw0NjM5MSw0NjM5Myw0NjM5''@;'; put 'put ''NCw0NjM5NSw0NjM5Niw0NjM5Nyw0NjM5OCw0NjM5OSw0NjQwMiw0NjQwNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQwNyw0NjQwOCw0NjQwOSw0NjQxMCw0NjQxNCw0NjQxNSw0NjQxNyw0NjQxOCw0NjQxOSw0NjQyMSw0NjQyMiw0NjQyMyw0NjQyNCw0NjQyNSw0NjQyNiw0''@;'; put 'put ''NjQyNyw0NjQzMCw0NjQzNCw0NjQzNSw0NjQzNiw0NjQzNyw0NjQzOCw0NjQzOSw0NjQ0MCw0NjQ0MSw0NjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQ0Myw0NjQ0NCw0NjQ0NSw0NjQ0Niw0NjQ0Nyw0NjQ0OCw0NjQ0OSw0NjQ1MCw0NjQ1MSw0NjQ1Miw0NjQ1Myw0NjQ1''@;'; put 'put ''NCw0NjQ1NSw0NjQ1Niw0NjQ1Nyw0NjQ1OCw0NjQ1OSw0NjQ2MCw0NjQ2MSw0NjQ2Miw0NjQ2Myw0NjQ2NCw0NjQ2NSw0NjQ2Niw0NjQ2Nyw0NjQ2OCw0NjQ2OSw0NjQ3MCw0NjQ3MSw0NjQ3Miw0NjQ3Myw0NjQ3NCw0NjQ3NSw0NjQ3Niw0NjQ3Nyw0NjQ3OCw0NjQ3OSw0NjQ4MCw0NjQ4MSw0''@;'; put 'put ''NjQ4Miw0NjQ4Myw0NjQ4NCw0NjQ4NSw0NjQ4Niw0NjQ4Nyw0NjQ4OCw0NjQ4OSw0NjQ5MCw0NjQ5MSw0NjQ5Miw0NjQ5Myw0NjQ5NCw0NjQ5NSw0NjQ5OCw0NjQ5OSw0NjUwMSw0NjUwMiw0NjUwMyw0NjUwNSw0NjUwOCw0NjUwOSw0NjUxMCw0NjUxMSw0NjUxNCw0NjUxOCw0NjUxOSw0NjUy''@;'; put 'put ''MCw0NjUyMSw0NjUyMiw0NjUyNiw0NjUyNyw0NjUyOSw0NjUzMCw0NjUzMSw0NjUzMyw0NjUzNCw0NjUzNSw0NjUzNiw0NjUzNyw0NjUzOCw0NjUzOSw0NjU0Miw0NjU0Niw0NjU0Nyw0NjU0OCw0NjU0OSw0NjU1MCw0NjU1MSw0NjU1Myw0NjU1NCw0NjU1NSw0NjU1Niw0NjU1Nyw0NjU1OCw0''@;'; put 'put ''NjU1OSw0NjU2MCw0NjU2MSw0NjU2Miw0NjU2Myw0NjU2NCw0NjU2NSw0NjU2Niw0NjU2Nyw0NjU2OCw0NjU2OSw0NjU3MCw0NjU3MSw0NjU3Myw0NjU3NCw0NjU3NSw0NjU3Niw0NjU3Nyw0NjU3OCw0NjU3OSw0NjU4MCw0NjU4MSw0NjU4Miw0NjU4Myw0NjU4NCw0NjU4NSw0NjU4Niw0NjU4''@;'; put 'put ''Nyw0NjU4OCw0NjU4OSw0NjU5MCw0NjU5MSw0NjU5Miw0NjU5Myw0NjU5NCw0NjU5NSw0NjU5Niw0NjU5Nyw0NjU5OCw0NjU5OSw0NjYwMCw0NjYwMSw0NjYwMiw0NjYwMyw0NjYwNCw0NjYwNSw0NjYwNiw0NjYwNyw0NjYxMCw0NjYxMSw0NjYxMyw0NjYxNCw0NjYxNSw0NjYxNyw0NjYxOCw0''@;'; put 'put ''NjYxOSw0NjYyMCw0NjYyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjYyMiw0NjYyMyw0NjYyNCw0NjYyNSw0NjYyNiw0NjYyNyw0NjYyOCw0NjYzMCw0NjYzMSw0NjYzMiw0NjYzMyw0NjYzNCw0NjYzNSw0NjYzNyw0NjYzOCw0NjYzOSw0NjY0MCw0NjY0MSw0NjY0Miw0NjY0''@;'; put 'put ''Myw0NjY0NSw0NjY0Niw0NjY0Nyw0NjY0OCw0NjY0OSw0NjY1MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjY1MSw0NjY1Miw0NjY1Myw0NjY1NCw0NjY1NSw0NjY1Niw0NjY1Nyw0NjY1OCw0NjY1OSw0NjY2MCw0NjY2MSw0NjY2Miw0NjY2Myw0NjY2NSw0NjY2Niw0NjY2Nyw0''@;'; put 'put ''NjY2OCw0NjY2OSw0NjY3MCw0NjY3MSw0NjY3Miw0NjY3Myw0NjY3NCw0NjY3NSw0NjY3Niw0NjY3Nyw0NjY3OCw0NjY3OSw0NjY4MCw0NjY4MSw0NjY4Miw0NjY4Myw0NjY4NCw0NjY4NSw0NjY4Niw0NjY4Nyw0NjY4OCw0NjY4OSw0NjY5MCw0NjY5MSw0NjY5Myw0NjY5NCw0NjY5NSw0NjY5''@;'; put 'put ''Nyw0NjY5OCw0NjY5OSw0NjcwMCw0NjcwMSw0NjcwMiw0NjcwMyw0NjcwNCw0NjcwNSw0NjcwNiw0NjcwNyw0NjcwOCw0NjcwOSw0NjcxMCw0NjcxMSw0NjcxMiw0NjcxMyw0NjcxNCw0NjcxNSw0NjcxNiw0NjcxNyw0NjcxOCw0NjcxOSw0NjcyMCw0NjcyMSw0NjcyMiw0NjcyMyw0NjcyNCw0''@;'; put 'put ''NjcyNSw0NjcyNiw0NjcyNyw0NjcyOCw0NjcyOSw0NjczMCw0NjczMSw0NjczMiw0NjczMyw0NjczNCw0NjczNSw0NjczNiw0NjczNyw0NjczOCw0NjczOSw0Njc0MCw0Njc0MSw0Njc0Miw0Njc0Myw0Njc0NCw0Njc0NSw0Njc0Niw0Njc0Nyw0Njc1MCw0Njc1MSw0Njc1Myw0Njc1NCw0Njc1''@;'; put 'put ''NSw0Njc1Nyw0Njc1OCw0Njc1OSw0Njc2MCw0Njc2MSw0Njc2Miw0Njc2NSw0Njc2Niw0Njc2Nyw0Njc2OCw0Njc3MCw0Njc3MSw0Njc3Miw0Njc3Myw0Njc3NCw0Njc3NSw0Njc3Niw0Njc3Nyw0Njc3OCw0Njc3OSw0Njc4MCw0Njc4MSw0Njc4Miw0Njc4Myw0Njc4NCw0Njc4NSw0Njc4Niw0''@;'; put 'put ''Njc4Nyw0Njc4OCw0Njc4OSw0Njc5MCw0Njc5MSw0Njc5Miw0Njc5Myw0Njc5NCw0Njc5NSw0Njc5Niw0Njc5Nyw0Njc5OCw0Njc5OSw0NjgwMCw0NjgwMSw0NjgwMiw0NjgwMyw0NjgwNSw0NjgwNiw0NjgwNyw0NjgwOCw0NjgwOSw0NjgxMCw0NjgxMSw0NjgxMiw0NjgxMyxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCw0NjgxNCw0NjgxNSw0NjgxNiw0NjgxNyw0NjgxOCw0NjgxOSw0NjgyMCw0NjgyMSw0NjgyMiw0NjgyMyw0NjgyNCw0NjgyNSw0NjgyNiw0NjgyNyw0NjgyOCw0NjgyOSw0NjgzMCw0NjgzMSw0NjgzMyw0NjgzNCw0NjgzNSw0NjgzNyw0NjgzOCw0NjgzOSw0''@;'; put 'put ''Njg0MSw0Njg0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Njg0Myw0Njg0NCw0Njg0NSw0Njg0Niw0Njg0Nyw0Njg1MCw0Njg1MSw0Njg1Miw0Njg1NCw0Njg1NSw0Njg1Niw0Njg1Nyw0Njg1OCw0Njg1OSw0Njg2MCw0Njg2MSw0Njg2Miw0Njg2Myw0Njg2NCw0Njg2NSw0Njg2''@;'; put 'put ''Niw0Njg2Nyw0Njg2OCw0Njg2OSw0Njg3MCw0Njg3MSw0Njg3Miw0Njg3Myw0Njg3NCw0Njg3NSw0Njg3Niw0Njg3Nyw0Njg3OCw0Njg3OSw0Njg4MCw0Njg4MSw0Njg4Miw0Njg4Myw0Njg4NCw0Njg4NSw0Njg4Niw0Njg4Nyw0Njg5MCw0Njg5MSw0Njg5Myw0Njg5NCw0Njg5Nyw0Njg5OCw0''@;'; put 'put ''Njg5OSw0NjkwMCw0NjkwMSw0NjkwMiw0NjkwMyw0NjkwNiw0NjkwOCw0NjkwOSw0NjkxMCw0NjkxMSw0NjkxMiw0NjkxMyw0NjkxNCw0NjkxNSw0NjkxNyw0NjkxOCw0NjkxOSw0NjkyMSw0NjkyMiw0NjkyMyw0NjkyNSw0NjkyNiw0NjkyNyw0NjkyOCw0NjkyOSw0NjkzMCw0NjkzMSw0Njkz''@;'; put 'put ''NCw0NjkzNSw0NjkzNiw0NjkzNyw0NjkzOCw0NjkzOSw0Njk0MCw0Njk0MSw0Njk0Miw0Njk0Myw0Njk0NSw0Njk0Niw0Njk0Nyw0Njk0OSw0Njk1MCw0Njk1MSw0Njk1Myw0Njk1NCw0Njk1NSw0Njk1Niw0Njk1Nyw0Njk1OCw0Njk1OSw0Njk2Miw0Njk2NCw0Njk2Niw0Njk2Nyw0Njk2OCw0''@;'; put 'put ''Njk2OSw0Njk3MCw0Njk3MSw0Njk3NCw0Njk3NSw0Njk3Nyw0Njk3OCw0Njk3OSw0Njk4MSw0Njk4Miw0Njk4Myw0Njk4NCw0Njk4NSw0Njk4Niw0Njk4Nyw0Njk5MCw0Njk5NSw0Njk5Niw0Njk5Nyw0NzAwMiw0NzAwMyw0NzAwNSw0NzAwNiw0NzAwNyw0NzAwOSw0NzAxMCw0NzAxMSw0NzAx''@;'; put 'put ''Miw0NzAxMyw0NzAxNCw0NzAxNSw0NzAxOCw0NzAyMiw0NzAyMyw0NzAyNCw0NzAyNSw0NzAyNiw0NzAyNyw0NzAzMCw0NzAzMSw0NzAzMyw0NzAzNCw0NzAzNSw0NzAzNiw0NzAzNyw0NzAzOCw0NzAzOSw0NzA0MCw0NzA0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA0Miw0''@;'; put 'put ''NzA0Myw0NzA0NCw0NzA0NSw0NzA0Niw0NzA0OCw0NzA1MCw0NzA1MSw0NzA1Miw0NzA1Myw0NzA1NCw0NzA1NSw0NzA1Niw0NzA1Nyw0NzA1OCw0NzA1OSw0NzA2MCw0NzA2MSw0NzA2Miw0NzA2Myw0NzA2NCw0NzA2NSw0NzA2Niw0NzA2Nyw0NzA2OCw0NzA2OSxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCw0NzA3MCw0NzA3MSw0NzA3Miw0NzA3Myw0NzA3NCw0NzA3NSw0NzA3Niw0NzA3Nyw0NzA3OCw0NzA3OSw0NzA4MCw0NzA4MSw0NzA4Miw0NzA4Myw0NzA4Niw0NzA4Nyw0NzA4OSw0NzA5MCw0NzA5MSw0NzA5Myw0NzA5NCw0NzA5NSw0NzA5Niw0NzA5Nyw0NzA5OCw0''@;'; put 'put ''NzA5OSw0NzEwMiw0NzEwNiw0NzEwNyw0NzEwOCw0NzEwOSw0NzExMCw0NzExNCw0NzExNSw0NzExNyw0NzExOCw0NzExOSw0NzEyMSw0NzEyMiw0NzEyMyw0NzEyNCw0NzEyNSw0NzEyNiw0NzEyNyw0NzEzMCw0NzEzMiw0NzEzNCw0NzEzNSw0NzEzNiw0NzEzNyw0NzEzOCw0NzEzOSw0NzE0''@;'; put 'put ''Miw0NzE0Myw0NzE0NSw0NzE0Niw0NzE0Nyw0NzE0OSw0NzE1MCw0NzE1MSw0NzE1Miw0NzE1Myw0NzE1NCw0NzE1NSw0NzE1OCw0NzE2Miw0NzE2Myw0NzE2NCw0NzE2NSw0NzE2Niw0NzE2Nyw0NzE2OSw0NzE3MCw0NzE3MSw0NzE3Myw0NzE3NCw0NzE3NSw0NzE3Niw0NzE3Nyw0NzE3OCw0''@;'; put 'put ''NzE3OSw0NzE4MCw0NzE4MSw0NzE4Miw0NzE4Myw0NzE4NCw0NzE4Niw0NzE4OCw0NzE4OSw0NzE5MCw0NzE5MSw0NzE5Miw0NzE5Myw0NzE5NCw0NzE5NSw0NzE5OCw0NzE5OSw0NzIwMSw0NzIwMiw0NzIwMyw0NzIwNSw0NzIwNiw0NzIwNyw0NzIwOCw0NzIwOSw0NzIxMCw0NzIxMSw0NzIx''@;'; put 'put ''NCw0NzIxNiw0NzIxOCw0NzIxOSw0NzIyMCw0NzIyMSw0NzIyMiw0NzIyMyw0NzIyNSw0NzIyNiw0NzIyNyw0NzIyOSw0NzIzMCw0NzIzMSw0NzIzMiw0NzIzMyw0NzIzNCw0NzIzNSw0NzIzNiw0NzIzNyw0NzIzOCw0NzIzOSw0NzI0MCw0NzI0MSw0NzI0Miw0NzI0Myw0NzI0NCw0NzI0Niw0''@;'; put 'put ''NzI0Nyw0NzI0OCw0NzI0OSw0NzI1MCw0NzI1MSw0NzI1Miw0NzI1Myw0NzI1NCw0NzI1NSw0NzI1Niw0NzI1Nyw0NzI1OCw0NzI1OSw0NzI2MCw0NzI2MSw0NzI2Miw0NzI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI2NCw0NzI2NSw0NzI2Niw0NzI2Nyw0NzI2OCw0NzI2''@;'; put 'put ''OSw0NzI3MCw0NzI3MSw0NzI3Myw0NzI3NCw0NzI3NSw0NzI3Niw0NzI3Nyw0NzI3OCw0NzI3OSw0NzI4MSw0NzI4Miw0NzI4Myw0NzI4NSw0NzI4Niw0NzI4Nyw0NzI4OSw0NzI5MCw0NzI5MSw0NzI5Miw0NzI5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI5NCw0NzI5NSw0''@;'; put 'put ''NzI5OCw0NzMwMCw0NzMwMiw0NzMwMyw0NzMwNCw0NzMwNSw0NzMwNiw0NzMwNyw0NzMwOSw0NzMxMCw0NzMxMSw0NzMxMyw0NzMxNCw0NzMxNSw0NzMxNyw0NzMxOCw0NzMxOSw0NzMyMCw0NzMyMSw0NzMyMiw0NzMyMyw0NzMyNCw0NzMyNiw0NzMyOCw0NzMzMCw0NzMzMSw0NzMzMiw0NzMz''@;'; put 'put ''Myw0NzMzNCw0NzMzNSw0NzMzOCw0NzMzOSw0NzM0MSw0NzM0Miw0NzM0Myw0NzM0NSw0NzM0Niw0NzM0Nyw0NzM0OCw0NzM0OSw0NzM1MCw0NzM1MSw0NzM1NCw0NzM1Niw0NzM1OCw0NzM1OSw0NzM2MCw0NzM2MSw0NzM2Miw0NzM2Myw0NzM2NSw0NzM2Niw0NzM2Nyw0NzM2OCw0NzM2OSw0''@;'; put 'put ''NzM3MCw0NzM3MSw0NzM3Miw0NzM3Myw0NzM3NCw0NzM3NSw0NzM3Niw0NzM3Nyw0NzM3OCw0NzM3OSw0NzM4MCw0NzM4MSw0NzM4Miw0NzM4Myw0NzM4NSw0NzM4Niw0NzM4Nyw0NzM4OCw0NzM4OSw0NzM5MCw0NzM5MSw0NzM5Myw0NzM5NCw0NzM5NSw0NzM5Niw0NzM5Nyw0NzM5OCw0NzM5''@;'; put 'put ''OSw0NzQwMCw0NzQwMSw0NzQwMiw0NzQwMyw0NzQwNCw0NzQwNSw0NzQwNiw0NzQwNyw0NzQwOCw0NzQwOSw0NzQxMCw0NzQxMSw0NzQxMiw0NzQxMyw0NzQxNCw0NzQxNSw0NzQxNiw0NzQxNyw0NzQxOCw0NzQxOSw0NzQyMiw0NzQyMyw0NzQyNSw0NzQyNiw0NzQyNyw0NzQyOSw0NzQzMCw0''@;'; put 'put ''NzQzMSw0NzQzMiw0NzQzMyw0NzQzNCw0NzQzNSw0NzQzNyw0NzQzOCw0NzQ0MCw0NzQ0Miw0NzQ0Myw0NzQ0NCw0NzQ0NSw0NzQ0Niw0NzQ0Nyw0NzQ1MCw0NzQ1MSw0NzQ1Myw0NzQ1NCw0NzQ1NSw0NzQ1Nyw0NzQ1OCw0NzQ1OSw0NzQ2MCw0NzQ2MSw0NzQ2Miw0NzQ2Myw0NzQ2Niw0NzQ2''@;'; put 'put ''OCw0NzQ3MCw0NzQ3MSw0NzQ3Miw0NzQ3Myw0NzQ3NCw0NzQ3NSw0NzQ3OCw0NzQ3OSw0NzQ4MSw0NzQ4Miw0NzQ4Myw0NzQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzQ4Niw0NzQ4Nyw0NzQ4OCw0NzQ4OSw0NzQ5MCw0NzQ5MSw0NzQ5NCw0NzQ5Niw0NzQ5OSw0NzUwMCw0''@;'; put 'put ''NzUwMyw0NzUwNCw0NzUwNSw0NzUwNiw0NzUwNyw0NzUwOCw0NzUwOSw0NzUxMCw0NzUxMSw0NzUxMiw0NzUxMyw0NzUxNCw0NzUxNSw0NzUxNiw0NzUxNyw0NzUxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzUxOSw0NzUyMCw0NzUyMSw0NzUyMiw0NzUyMyw0NzUyNCw0NzUy''@;'; put 'put ''NSw0NzUyNiw0NzUyNyw0NzUyOCw0NzUyOSw0NzUzMCw0NzUzMSw0NzUzNCw0NzUzNSw0NzUzNyw0NzUzOCw0NzUzOSw0NzU0MSw0NzU0Miw0NzU0Myw0NzU0NCw0NzU0NSw0NzU0Niw0NzU0Nyw0NzU1MCw0NzU1Miw0NzU1NCw0NzU1NSw0NzU1Niw0NzU1Nyw0NzU1OCw0NzU1OSw0NzU2Miw0''@;'; put 'put ''NzU2Myw0NzU2NSw0NzU3MSw0NzU3Miw0NzU3Myw0NzU3NCw0NzU3NSw0NzU3OCw0NzU4MCw0NzU4Myw0NzU4NCw0NzU4Niw0NzU5MCw0NzU5MSw0NzU5Myw0NzU5NCw0NzU5NSw0NzU5Nyw0NzU5OCw0NzU5OSw0NzYwMCw0NzYwMSw0NzYwMiw0NzYwMyw0NzYwNiw0NzYxMSw0NzYxMiw0NzYx''@;'; put 'put ''Myw0NzYxNCw0NzYxNSw0NzYxOCw0NzYxOSw0NzYyMCw0NzYyMSw0NzYyMiw0NzYyMyw0NzYyNSw0NzYyNiw0NzYyNyw0NzYyOCw0NzYyOSw0NzYzMCw0NzYzMSw0NzYzMiw0NzYzMyw0NzYzNCw0NzYzNSw0NzYzNiw0NzYzOCw0NzYzOSw0NzY0MCw0NzY0MSw0NzY0Miw0NzY0Myw0NzY0NCw0''@;'; put 'put ''NzY0NSw0NzY0Niw0NzY0Nyw0NzY0OCw0NzY0OSw0NzY1MCw0NzY1MSw0NzY1Miw0NzY1Myw0NzY1NCw0NzY1NSw0NzY1Niw0NzY1Nyw0NzY1OCw0NzY1OSw0NzY2MCw0NzY2MSw0NzY2Miw0NzY2Myw0NzY2NCw0NzY2NSw0NzY2Niw0NzY2Nyw0NzY2OCw0NzY2OSw0NzY3MCw0NzY3MSw0NzY3''@;'; put 'put ''NCw0NzY3NSw0NzY3Nyw0NzY3OCw0NzY3OSw0NzY4MSw0NzY4Myw0NzY4NCw0NzY4NSw0NzY4Niw0NzY4Nyw0NzY5MCw0NzY5Miw0NzY5NSw0NzY5Niw0NzY5Nyw0NzY5OCw0NzcwMiw0NzcwMyw0NzcwNSw0NzcwNiw0NzcwNyw0NzcwOSw0NzcxMCw0NzcxMSw0NzcxMiw0NzcxMyw0NzcxNCw0''@;'; put 'put ''NzcxNSw0NzcxOCw0NzcyMiw0NzcyMyw0NzcyNCw0NzcyNSw0NzcyNiw0NzcyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzczMCw0NzczMSw0NzczMyw0NzczNCw0NzczNSw0NzczNyw0NzczOCw0NzczOSw0Nzc0MCw0Nzc0MSw0Nzc0Miw0Nzc0Myw0Nzc0NCw0Nzc0NSw0Nzc0''@;'; put 'put ''Niw0Nzc1MCw0Nzc1Miw0Nzc1Myw0Nzc1NCw0Nzc1NSw0Nzc1Nyw0Nzc1OCw0Nzc1OSw0Nzc2MCw0Nzc2MSw0Nzc2MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzc2Myw0Nzc2NCw0Nzc2NSw0Nzc2Niw0Nzc2Nyw0Nzc2OCw0Nzc2OSw0Nzc3MCw0Nzc3MSw0Nzc3Miw0Nzc3Myw0''@;'; put 'put ''Nzc3NCw0Nzc3NSw0Nzc3Niw0Nzc3Nyw0Nzc3OCw0Nzc3OSw0Nzc4MCw0Nzc4MSw0Nzc4Miw0Nzc4Myw0Nzc4Niw0Nzc4OSw0Nzc5MCw0Nzc5MSw0Nzc5Myw0Nzc5NSw0Nzc5Niw0Nzc5Nyw0Nzc5OCw0Nzc5OSw0NzgwMiw0NzgwNCw0NzgwNiw0NzgwNyw0NzgwOCw0NzgwOSw0NzgxMCw0Nzgx''@;'; put 'put ''MSw0NzgxMyw0NzgxNCw0NzgxNSw0NzgxNyw0NzgxOCw0NzgxOSw0NzgyMCw0NzgyMSw0NzgyMiw0NzgyMyw0NzgyNCw0NzgyNSw0NzgyNiw0NzgyNyw0NzgyOCw0NzgyOSw0NzgzMCw0NzgzMSw0NzgzNCw0NzgzNSw0NzgzNiw0NzgzNyw0NzgzOCw0NzgzOSw0Nzg0MCw0Nzg0MSw0Nzg0Miw0''@;'; put 'put ''Nzg0Myw0Nzg0NCw0Nzg0NSw0Nzg0Niw0Nzg0Nyw0Nzg0OCw0Nzg0OSw0Nzg1MCw0Nzg1MSw0Nzg1Miw0Nzg1Myw0Nzg1NCw0Nzg1NSw0Nzg1Niw0Nzg1Nyw0Nzg1OCw0Nzg1OSw0Nzg2MCw0Nzg2MSw0Nzg2Miw0Nzg2Myw0Nzg2NCw0Nzg2NSw0Nzg2Niw0Nzg2Nyw0Nzg2OSw0Nzg3MCw0Nzg3''@;'; put 'put ''MSw0Nzg3Myw0Nzg3NCw0Nzg3NSw0Nzg3Nyw0Nzg3OCw0Nzg3OSw0Nzg4MCw0Nzg4MSw0Nzg4Miw0Nzg4Myw0Nzg4NCw0Nzg4Niw0Nzg4OCw0Nzg5MCw0Nzg5MSw0Nzg5Miw0Nzg5Myw0Nzg5NCw0Nzg5NSw0Nzg5Nyw0Nzg5OCw0Nzg5OSw0NzkwMSw0NzkwMiw0NzkwMyw0NzkwNSw0NzkwNiw0''@;'; put 'put ''NzkwNyw0NzkwOCw0NzkwOSw0NzkxMCw0NzkxMSw0NzkxMiw0NzkxNCw0NzkxNiw0NzkxNyw0NzkxOCw0NzkxOSw0NzkyMCw0NzkyMSw0NzkyMiw0NzkyMyw0NzkyNyw0NzkyOSw0NzkzMCw0NzkzNSw0NzkzNiw0NzkzNyw0NzkzOCw0NzkzOSw0Nzk0Miw0Nzk0NCw0Nzk0Niw0Nzk0Nyw0Nzk0''@;'; put 'put ''OCw0Nzk1MCw0Nzk1Myw0Nzk1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk1NSw0Nzk1Nyw0Nzk1OCw0Nzk1OSw0Nzk2MSw0Nzk2Miw0Nzk2Myw0Nzk2NCw0Nzk2NSw0Nzk2Niw0Nzk2Nyw0Nzk2OCw0Nzk3MCw0Nzk3Miw0Nzk3Myw0Nzk3NCw0Nzk3NSw0Nzk3Niw0Nzk3Nyw0''@;'; put 'put ''Nzk3OCw0Nzk3OSw0Nzk4MSw0Nzk4Miw0Nzk4Myw0Nzk4NCw0Nzk4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk4Niw0Nzk4Nyw0Nzk4OCw0Nzk4OSw0Nzk5MCw0Nzk5MSw0Nzk5Miw0Nzk5Myw0Nzk5NCw0Nzk5NSw0Nzk5Niw0Nzk5Nyw0Nzk5OCw0Nzk5OSw0OGUzLDQ4MDAx''@;'; put 'put ''LDQ4MDAyLDQ4MDAzLDQ4MDA0LDQ4MDA1LDQ4MDA2LDQ4MDA3LDQ4MDA5LDQ4MDEwLDQ4MDExLDQ4MDEzLDQ4MDE0LDQ4MDE1LDQ4MDE3LDQ4MDE4LDQ4MDE5LDQ4MDIwLDQ4MDIxLDQ4MDIyLDQ4MDIzLDQ4MDI0LDQ4MDI1LDQ4MDI2LDQ4MDI3LDQ4MDI4LDQ4MDI5LDQ4MDMwLDQ4MDMxLDQ4''@;'; put 'put ''MDMyLDQ4MDMzLDQ4MDM0LDQ4MDM1LDQ4MDM3LDQ4MDM4LDQ4MDM5LDQ4MDQxLDQ4MDQyLDQ4MDQzLDQ4MDQ1LDQ4MDQ2LDQ4MDQ3LDQ4MDQ4LDQ4MDQ5LDQ4MDUwLDQ4MDUxLDQ4MDUzLDQ4MDU0LDQ4MDU2LDQ4MDU3LDQ4MDU4LDQ4MDU5LDQ4MDYwLDQ4MDYxLDQ4MDYyLDQ4MDYzLDQ4MDY1''@;'; put 'put ''LDQ4MDY2LDQ4MDY3LDQ4MDY5LDQ4MDcwLDQ4MDcxLDQ4MDczLDQ4MDc0LDQ4MDc1LDQ4MDc2LDQ4MDc3LDQ4MDc4LDQ4MDc5LDQ4MDgxLDQ4MDgyLDQ4MDg0LDQ4MDg1LDQ4MDg2LDQ4MDg3LDQ4MDg4LDQ4MDg5LDQ4MDkwLDQ4MDkxLDQ4MDkyLDQ4MDkzLDQ4MDk0LDQ4MDk1LDQ4MDk2LDQ4''@;'; put 'put ''MDk3LDQ4MDk4LDQ4MDk5LDQ4MTAwLDQ4MTAxLDQ4MTAyLDQ4MTAzLDQ4MTA0LDQ4MTA1LDQ4MTA2LDQ4MTA3LDQ4MTA4LDQ4MTA5LDQ4MTEwLDQ4MTExLDQ4MTEyLDQ4MTEzLDQ4MTE0LDQ4MTE1LDQ4MTE2LDQ4MTE3LDQ4MTE4LDQ4MTE5LDQ4MTIyLDQ4MTIzLDQ4MTI1LDQ4MTI2LDQ4MTI5''@;'; put 'put ''LDQ4MTMxLDQ4MTMyLDQ4MTMzLDQ4MTM0LDQ4MTM1LDQ4MTM4LDQ4MTQyLDQ4MTQ0LDQ4MTQ2LDQ4MTQ3LDQ4MTUzLDQ4MTU0LDQ4MTYwLDQ4MTYxLDQ4MTYyLDQ4MTYzLDQ4MTY2LDQ4MTY4LDQ4MTcwLDQ4MTcxLDQ4MTcyLDQ4MTc0LDQ4MTc1LDQ4MTc4LDQ4MTc5LDQ4MTgxLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MTgyLDQ4MTgzLDQ4MTg1LDQ4MTg2LDQ4MTg3LDQ4MTg4LDQ4MTg5LDQ4MTkwLDQ4MTkxLDQ4MTk0LDQ4MTk4LDQ4MTk5LDQ4MjAwLDQ4MjAyLDQ4MjAzLDQ4MjA2LDQ4MjA3LDQ4MjA5LDQ4MjEwLDQ4MjExLDQ4MjEyLDQ4MjEzLDQ4MjE0LDQ4MjE1''@;'; put 'put ''LDQ4MjE2LDQ4MjE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MjE4LDQ4MjE5LDQ4MjIwLDQ4MjIyLDQ4MjIzLDQ4MjI0LDQ4MjI1LDQ4MjI2LDQ4MjI3LDQ4MjI4LDQ4MjI5LDQ4MjMwLDQ4MjMxLDQ4MjMyLDQ4MjMzLDQ4MjM0LDQ4MjM1LDQ4MjM2LDQ4MjM3LDQ4MjM4LDQ4''@;'; put 'put ''MjM5LDQ4MjQwLDQ4MjQxLDQ4MjQyLDQ4MjQzLDQ4MjQ0LDQ4MjQ1LDQ4MjQ2LDQ4MjQ3LDQ4MjQ4LDQ4MjQ5LDQ4MjUwLDQ4MjUxLDQ4MjUyLDQ4MjUzLDQ4MjU0LDQ4MjU1LDQ4MjU2LDQ4MjU3LDQ4MjU4LDQ4MjU5LDQ4MjYyLDQ4MjYzLDQ4MjY1LDQ4MjY2LDQ4MjY5LDQ4MjcxLDQ4Mjcy''@;'; put 'put ''LDQ4MjczLDQ4Mjc0LDQ4Mjc1LDQ4Mjc4LDQ4MjgwLDQ4MjgzLDQ4Mjg0LDQ4Mjg1LDQ4Mjg2LDQ4Mjg3LDQ4MjkwLDQ4MjkxLDQ4MjkzLDQ4Mjk0LDQ4Mjk3LDQ4Mjk4LDQ4Mjk5LDQ4MzAwLDQ4MzAxLDQ4MzAyLDQ4MzAzLDQ4MzA2LDQ4MzEwLDQ4MzExLDQ4MzEyLDQ4MzEzLDQ4MzE0LDQ4''@;'; put 'put ''MzE1LDQ4MzE4LDQ4MzE5LDQ4MzIxLDQ4MzIyLDQ4MzIzLDQ4MzI1LDQ4MzI2LDQ4MzI3LDQ4MzI4LDQ4MzI5LDQ4MzMwLDQ4MzMxLDQ4MzMyLDQ4MzM0LDQ4MzM4LDQ4MzM5LDQ4MzQwLDQ4MzQyLDQ4MzQzLDQ4MzQ1LDQ4MzQ2LDQ4MzQ3LDQ4MzQ5LDQ4MzUwLDQ4MzUxLDQ4MzUyLDQ4MzUz''@;'; put 'put ''LDQ4MzU0LDQ4MzU1LDQ4MzU2LDQ4MzU3LDQ4MzU4LDQ4MzU5LDQ4MzYwLDQ4MzYxLDQ4MzYyLDQ4MzYzLDQ4MzY0LDQ4MzY1LDQ4MzY2LDQ4MzY3LDQ4MzY4LDQ4MzY5LDQ4MzcwLDQ4MzcxLDQ4Mzc1LDQ4Mzc3LDQ4Mzc4LDQ4Mzc5LDQ4MzgxLDQ4MzgyLDQ4MzgzLDQ4Mzg0LDQ4Mzg1LDQ4''@;'; put 'put ''Mzg2LDQ4Mzg3LDQ4MzkwLDQ4MzkyLDQ4Mzk0LDQ4Mzk1LDQ4Mzk2LDQ4Mzk3LDQ4Mzk4LDQ4Mzk5LDQ4NDAxLDQ4NDAyLDQ4NDAzLDQ4NDA1LDQ4NDA2LDQ4NDA3LDQ4NDA4LDQ4NDA5LDQ4NDEwLDQ4NDExLDQ4NDEyLDQ4NDEzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NDE0''@;'; put 'put ''LDQ4NDE1LDQ4NDE2LDQ4NDE3LDQ4NDE4LDQ4NDE5LDQ4NDIxLDQ4NDIyLDQ4NDIzLDQ4NDI0LDQ4NDI1LDQ4NDI2LDQ4NDI3LDQ4NDI5LDQ4NDMwLDQ4NDMxLDQ4NDMyLDQ4NDMzLDQ4NDM0LDQ4NDM1LDQ4NDM2LDQ4NDM3LDQ4NDM4LDQ4NDM5LDQ4NDQwLDQ4NDQxLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLDQ4NDQyLDQ4NDQzLDQ4NDQ0LDQ4NDQ1LDQ4NDQ2LDQ4NDQ3LDQ4NDQ5LDQ4NDUwLDQ4NDUxLDQ4NDUyLDQ4NDUzLDQ4NDU0LDQ4NDU1LDQ4NDU4LDQ4NDU5LDQ4NDYxLDQ4NDYyLDQ4NDYzLDQ4NDY1LDQ4NDY2LDQ4NDY3LDQ4NDY4LDQ4NDY5LDQ4NDcwLDQ4NDcx''@;'; put 'put ''LDQ4NDc0LDQ4NDc1LDQ4NDc2LDQ4NDc3LDQ4NDc4LDQ4NDc5LDQ4NDgwLDQ4NDgxLDQ4NDgyLDQ4NDgzLDQ4NDg1LDQ4NDg2LDQ4NDg3LDQ4NDg5LDQ4NDkwLDQ4NDkxLDQ4NDkyLDQ4NDkzLDQ4NDk0LDQ4NDk1LDQ4NDk2LDQ4NDk3LDQ4NDk4LDQ4NDk5LDQ4NTAwLDQ4NTAxLDQ4NTAyLDQ4''@;'; put 'put ''NTAzLDQ4NTA0LDQ4NTA1LDQ4NTA2LDQ4NTA3LDQ4NTA4LDQ4NTA5LDQ4NTEwLDQ4NTExLDQ4NTE0LDQ4NTE1LDQ4NTE3LDQ4NTE4LDQ4NTIzLDQ4NTI0LDQ4NTI1LDQ4NTI2LDQ4NTI3LDQ4NTMwLDQ4NTMyLDQ4NTM0LDQ4NTM1LDQ4NTM2LDQ4NTM5LDQ4NTQxLDQ4NTQyLDQ4NTQzLDQ4NTQ0''@;'; put 'put ''LDQ4NTQ1LDQ4NTQ2LDQ4NTQ3LDQ4NTQ5LDQ4NTUwLDQ4NTUxLDQ4NTUyLDQ4NTUzLDQ4NTU0LDQ4NTU1LDQ4NTU2LDQ4NTU3LDQ4NTU4LDQ4NTU5LDQ4NTYxLDQ4NTYyLDQ4NTYzLDQ4NTY0LDQ4NTY1LDQ4NTY2LDQ4NTY3LDQ4NTY5LDQ4NTcwLDQ4NTcxLDQ4NTcyLDQ4NTczLDQ4NTc0LDQ4''@;'; put 'put ''NTc1LDQ4NTc2LDQ4NTc3LDQ4NTc4LDQ4NTc5LDQ4NTgwLDQ4NTgxLDQ4NTgyLDQ4NTgzLDQ4NTg0LDQ4NTg1LDQ4NTg2LDQ4NTg3LDQ4NTg4LDQ4NTg5LDQ4NTkwLDQ4NTkxLDQ4NTkyLDQ4NTkzLDQ4NTk0LDQ4NTk1LDQ4NTk4LDQ4NTk5LDQ4NjAxLDQ4NjAyLDQ4NjAzLDQ4NjA1LDQ4NjA2''@;'; put 'put ''LDQ4NjA3LDQ4NjA4LDQ4NjA5LDQ4NjEwLDQ4NjExLDQ4NjEyLDQ4NjEzLDQ4NjE0LDQ4NjE1LDQ4NjE2LDQ4NjE4LDQ4NjE5LDQ4NjIwLDQ4NjIxLDQ4NjIyLDQ4NjIzLDQ4NjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjI2LDQ4NjI3LDQ4NjI5LDQ4NjMwLDQ4NjMxLDQ4''@;'; put 'put ''NjMzLDQ4NjM0LDQ4NjM1LDQ4NjM2LDQ4NjM3LDQ4NjM4LDQ4NjM5LDQ4NjQxLDQ4NjQyLDQ4NjQ0LDQ4NjQ2LDQ4NjQ3LDQ4NjQ4LDQ4NjQ5LDQ4NjUwLDQ4NjUxLDQ4NjU0LDQ4NjU1LDQ4NjU3LDQ4NjU4LDQ4NjU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjYxLDQ4NjYy''@;'; put 'put ''LDQ4NjYzLDQ4NjY0LDQ4NjY1LDQ4NjY2LDQ4NjY3LDQ4NjcwLDQ4NjcyLDQ4NjczLDQ4Njc0LDQ4Njc1LDQ4Njc2LDQ4Njc3LDQ4Njc4LDQ4Njc5LDQ4NjgwLDQ4NjgxLDQ4NjgyLDQ4NjgzLDQ4Njg0LDQ4Njg1LDQ4Njg2LDQ4Njg3LDQ4Njg4LDQ4Njg5LDQ4NjkwLDQ4NjkxLDQ4NjkyLDQ4''@;'; put 'put ''NjkzLDQ4Njk0LDQ4Njk1LDQ4Njk2LDQ4Njk3LDQ4Njk4LDQ4Njk5LDQ4NzAwLDQ4NzAxLDQ4NzAyLDQ4NzAzLDQ4NzA0LDQ4NzA1LDQ4NzA2LDQ4NzA3LDQ4NzEwLDQ4NzExLDQ4NzEzLDQ4NzE0LDQ4NzE1LDQ4NzE3LDQ4NzE5LDQ4NzIwLDQ4NzIxLDQ4NzIyLDQ4NzIzLDQ4NzI2LDQ4NzI4''@;'; put 'put ''LDQ4NzMyLDQ4NzMzLDQ4NzM0LDQ4NzM1LDQ4NzM4LDQ4NzM5LDQ4NzQxLDQ4NzQyLDQ4NzQzLDQ4NzQ1LDQ4NzQ3LDQ4NzQ4LDQ4NzQ5LDQ4NzUwLDQ4NzUxLDQ4NzU0LDQ4NzU4LDQ4NzU5LDQ4NzYwLDQ4NzYxLDQ4NzYyLDQ4NzY2LDQ4NzY3LDQ4NzY5LDQ4NzcwLDQ4NzcxLDQ4NzczLDQ4''@;'; put 'put ''Nzc0LDQ4Nzc1LDQ4Nzc2LDQ4Nzc3LDQ4Nzc4LDQ4Nzc5LDQ4NzgyLDQ4Nzg2LDQ4Nzg3LDQ4Nzg4LDQ4Nzg5LDQ4NzkwLDQ4NzkxLDQ4Nzk0LDQ4Nzk1LDQ4Nzk2LDQ4Nzk3LDQ4Nzk4LDQ4Nzk5LDQ4ODAwLDQ4ODAxLDQ4ODAyLDQ4ODAzLDQ4ODA0LDQ4ODA1LDQ4ODA2LDQ4ODA3LDQ4ODA5''@;'; put 'put ''LDQ4ODEwLDQ4ODExLDQ4ODEyLDQ4ODEzLDQ4ODE0LDQ4ODE1LDQ4ODE2LDQ4ODE3LDQ4ODE4LDQ4ODE5LDQ4ODIwLDQ4ODIxLDQ4ODIyLDQ4ODIzLDQ4ODI0LDQ4ODI1LDQ4ODI2LDQ4ODI3LDQ4ODI4LDQ4ODI5LDQ4ODMwLDQ4ODMxLDQ4ODMyLDQ4ODMzLDQ4ODM0LDQ4ODM1LDQ4ODM2LDQ4''@;'; put 'put ''ODM3LDQ4ODM4LDQ4ODM5LDQ4ODQwLDQ4ODQxLDQ4ODQyLDQ4ODQzLDQ4ODQ0LDQ4ODQ1LDQ4ODQ2LDQ4ODQ3LDQ4ODUwLDQ4ODUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4ODUzLDQ4ODU0LDQ4ODU3LDQ4ODU4LDQ4ODU5LDQ4ODYwLDQ4ODYxLDQ4ODYyLDQ4ODYzLDQ4ODY1''@;'; put 'put ''LDQ4ODY2LDQ4ODcwLDQ4ODcxLDQ4ODcyLDQ4ODczLDQ4ODc0LDQ4ODc1LDQ4ODc3LDQ4ODc4LDQ4ODc5LDQ4ODgwLDQ4ODgxLDQ4ODgyLDQ4ODgzLDQ4ODg0LDQ4ODg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4ODg2LDQ4ODg3LDQ4ODg4LDQ4ODg5LDQ4ODkwLDQ4ODkxLDQ4''@;'; put 'put ''ODkyLDQ4ODkzLDQ4ODk0LDQ4ODk1LDQ4ODk2LDQ4ODk4LDQ4ODk5LDQ4OTAwLDQ4OTAxLDQ4OTAyLDQ4OTAzLDQ4OTA2LDQ4OTA3LDQ4OTA4LDQ4OTA5LDQ4OTEwLDQ4OTExLDQ4OTEyLDQ4OTEzLDQ4OTE0LDQ4OTE1LDQ4OTE2LDQ4OTE3LDQ4OTE4LDQ4OTE5LDQ4OTIyLDQ4OTI2LDQ4OTI3''@;'; put 'put ''LDQ4OTI4LDQ4OTI5LDQ4OTMwLDQ4OTMxLDQ4OTMyLDQ4OTMzLDQ4OTM0LDQ4OTM1LDQ4OTM2LDQ4OTM3LDQ4OTM4LDQ4OTM5LDQ4OTQwLDQ4OTQxLDQ4OTQyLDQ4OTQzLDQ4OTQ0LDQ4OTQ1LDQ4OTQ2LDQ4OTQ3LDQ4OTQ4LDQ4OTQ5LDQ4OTUwLDQ4OTUxLDQ4OTUyLDQ4OTUzLDQ4OTU0LDQ4''@;'; put 'put ''OTU1LDQ4OTU2LDQ4OTU3LDQ4OTU4LDQ4OTU5LDQ4OTYyLDQ4OTYzLDQ4OTY1LDQ4OTY2LDQ4OTY3LDQ4OTY5LDQ4OTcwLDQ4OTcxLDQ4OTcyLDQ4OTczLDQ4OTc0LDQ4OTc1LDQ4OTc4LDQ4OTc5LDQ4OTgwLDQ4OTgyLDQ4OTgzLDQ4OTg0LDQ4OTg1LDQ4OTg2LDQ4OTg3LDQ4OTg4LDQ4OTg5''@;'; put 'put ''LDQ4OTkwLDQ4OTkxLDQ4OTkyLDQ4OTkzLDQ4OTk0LDQ4OTk1LDQ4OTk2LDQ4OTk3LDQ4OTk4LDQ4OTk5LDQ5ZTMsNDkwMDEsNDkwMDIsNDkwMDMsNDkwMDQsNDkwMDUsNDkwMDYsNDkwMDcsNDkwMDgsNDkwMDksNDkwMTAsNDkwMTEsNDkwMTIsNDkwMTMsNDkwMTQsNDkwMTUsNDkwMTYsNDkw''@;'; put 'put ''MTcsNDkwMTgsNDkwMTksNDkwMjAsNDkwMjEsNDkwMjIsNDkwMjMsNDkwMjQsNDkwMjUsNDkwMjYsNDkwMjcsNDkwMjgsNDkwMjksNDkwMzAsNDkwMzEsNDkwMzIsNDkwMzMsNDkwMzQsNDkwMzUsNDkwMzYsNDkwMzcsNDkwMzgsNDkwMzksNDkwNDAsNDkwNDEsNDkwNDIsNDkwNDMsNDkwNDUs''@;'; put 'put ''NDkwNDYsNDkwNDcsNDkwNDgsNDkwNDksNDkwNTAsNDkwNTEsNDkwNTIsNDkwNTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwNTQsNDkwNTUsNDkwNTYsNDkwNTcsNDkwNTgsNDkwNTksNDkwNjAsNDkwNjEsNDkwNjIsNDkwNjMsNDkwNjQsNDkwNjUsNDkwNjYsNDkwNjcsNDkw''@;'; put 'put ''NjgsNDkwNjksNDkwNzAsNDkwNzEsNDkwNzMsNDkwNzQsNDkwNzUsNDkwNzYsNDkwNzcsNDkwNzgsNDkwNzksNDkwODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwODEsNDkwODIsNDkwODMsNDkwODQsNDkwODUsNDkwODYsNDkwODcsNDkwODgsNDkwODksNDkwOTAsNDkwOTEs''@;'; put 'put ''NDkwOTIsNDkwOTQsNDkwOTUsNDkwOTYsNDkwOTcsNDkwOTgsNDkwOTksNDkxMDIsNDkxMDMsNDkxMDUsNDkxMDYsNDkxMDcsNDkxMDksNDkxMTAsNDkxMTEsNDkxMTIsNDkxMTMsNDkxMTQsNDkxMTUsNDkxMTcsNDkxMTgsNDkxMjAsNDkxMjIsNDkxMjMsNDkxMjQsNDkxMjUsNDkxMjYsNDkx''@;'; put 'put ''MjcsNDkxMjgsNDkxMjksNDkxMzAsNDkxMzEsNDkxMzIsNDkxMzMsNDkxMzQsNDkxMzUsNDkxMzYsNDkxMzcsNDkxMzgsNDkxMzksNDkxNDAsNDkxNDEsNDkxNDIsNDkxNDMsNDkxNDQsNDkxNDUsNDkxNDYsNDkxNDcsNDkxNDgsNDkxNDksNDkxNTAsNDkxNTEsNDkxNTIsNDkxNTMsNDkxNTQs''@;'; put 'put ''NDkxNTUsNDkxNTYsNDkxNTcsNDkxNTgsNDkxNTksNDkxNjAsNDkxNjEsNDkxNjIsNDkxNjMsNDkxNjQsNDkxNjUsNDkxNjYsNDkxNjcsNDkxNjgsNDkxNjksNDkxNzAsNDkxNzEsNDkxNzIsNDkxNzMsNDkxNzQsNDkxNzUsNDkxNzYsNDkxNzcsNDkxNzgsNDkxNzksNDkxODAsNDkxODEsNDkx''@;'; put 'put ''ODIsNDkxODMsNDkxODQsNDkxODUsNDkxODYsNDkxODcsNDkxODgsNDkxODksNDkxOTAsNDkxOTEsNDkxOTIsNDkxOTMsNDkxOTQsNDkxOTUsNDkxOTYsNDkxOTcsNDkxOTgsNDkxOTksNDkyMDAsNDkyMDEsNDkyMDIsNDkyMDMsNDkyMDQsNDkyMDUsNDkyMDYsNDkyMDcsNDkyMDgsNDkyMDks''@;'; put 'put ''NDkyMTAsNDkyMTEsNDkyMTMsNDkyMTQsNDkyMTUsNDkyMTYsNDkyMTcsNDkyMTgsNDkyMTksNDkyMjAsNDkyMjEsNDkyMjIsNDkyMjMsNDkyMjQsNDkyMjUsNDkyMjYsNDkyMjcsNDkyMjgsNDkyMjksNDkyMzAsNDkyMzEsNDkyMzIsNDkyMzQsNDkyMzUsNDkyMzYsNDkyMzcsNDkyMzgsNDky''@;'; put 'put ''MzksNDkyNDEsNDkyNDIsNDkyNDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNDUsNDkyNDYsNDkyNDcsNDkyNDksNDkyNTAsNDkyNTEsNDkyNTIsNDkyNTMsNDkyNTQsNDkyNTUsNDkyNTgsNDkyNTksNDkyNjAsNDkyNjEsNDkyNjIsNDkyNjMsNDkyNjQsNDkyNjUsNDkyNjYs''@;'; put 'put ''NDkyNjcsNDkyNjgsNDkyNjksNDkyNzAsNDkyNzEsNDkyNzIsNDkyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNzQsNDkyNzUsNDkyNzYsNDkyNzcsNDkyNzgsNDkyNzksNDkyODAsNDkyODEsNDkyODIsNDkyODMsNDkyODQsNDkyODUsNDkyODYsNDkyODcsNDkyODgsNDky''@;'; put 'put ''ODksNDkyOTAsNDkyOTEsNDkyOTIsNDkyOTMsNDkyOTQsNDkyOTUsNDkyOTgsNDkyOTksNDkzMDEsNDkzMDIsNDkzMDMsNDkzMDUsNDkzMDYsNDkzMDcsNDkzMDgsNDkzMDksNDkzMTAsNDkzMTEsNDkzMTQsNDkzMTYsNDkzMTgsNDkzMTksNDkzMjAsNDkzMjEsNDkzMjIsNDkzMjMsNDkzMjYs''@;'; put 'put ''NDkzMjksNDkzMzAsNDkzMzUsNDkzMzYsNDkzMzcsNDkzMzgsNDkzMzksNDkzNDIsNDkzNDYsNDkzNDcsNDkzNDgsNDkzNTAsNDkzNTEsNDkzNTQsNDkzNTUsNDkzNTcsNDkzNTgsNDkzNTksNDkzNjEsNDkzNjIsNDkzNjMsNDkzNjQsNDkzNjUsNDkzNjYsNDkzNjcsNDkzNzAsNDkzNzQsNDkz''@;'; put 'put ''NzUsNDkzNzYsNDkzNzcsNDkzNzgsNDkzNzksNDkzODIsNDkzODMsNDkzODUsNDkzODYsNDkzODcsNDkzODksNDkzOTAsNDkzOTEsNDkzOTIsNDkzOTMsNDkzOTQsNDkzOTUsNDkzOTgsNDk0MDAsNDk0MDIsNDk0MDMsNDk0MDQsNDk0MDUsNDk0MDYsNDk0MDcsNDk0MDksNDk0MTAsNDk0MTEs''@;'; put 'put ''NDk0MTMsNDk0MTQsNDk0MTUsNDk0MTcsNDk0MTgsNDk0MTksNDk0MjAsNDk0MjEsNDk0MjIsNDk0MjMsNDk0MjUsNDk0MjYsNDk0MjcsNDk0MjgsNDk0MzAsNDk0MzEsNDk0MzIsNDk0MzMsNDk0MzQsNDk0MzUsNDk0NDEsNDk0NDIsNDk0NDUsNDk0NDgsNDk0NDksNDk0NTAsNDk0NTEsNDk0''@;'; put 'put ''NTQsNDk0NTgsNDk0NTksNDk0NjAsNDk0NjEsNDk0NjMsNDk0NjYsNDk0NjcsNDk0NjksNDk0NzAsNDk0NzEsNDk0NzMsNDk0NzQsNDk0NzUsNDk0NzYsNDk0NzcsNDk0NzgsNDk0NzksNDk0ODIsNDk0ODYsNDk0ODcsNDk0ODgsNDk0ODksNDk0OTAsNDk0OTEsNDk0OTQsNDk0OTUsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk0OTcsNDk0OTgsNDk0OTksNDk1MDEsNDk1MDIsNDk1MDMsNDk1MDQsNDk1MDUsNDk1MDYsNDk1MDcsNDk1MTAsNDk1MTQsNDk1MTUsNDk1MTYsNDk1MTcsNDk1MTgsNDk1MTksNDk1MjEsNDk1MjIsNDk1MjMsNDk1MjUsNDk1MjYsNDk1MjcsNDk1''@;'; put 'put ''MjksNDk1MzAsNDk1MzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk1MzIsNDk1MzMsNDk1MzQsNDk1MzUsNDk1MzYsNDk1MzcsNDk1MzgsNDk1MzksNDk1NDAsNDk1NDIsNDk1NDMsNDk1NDQsNDk1NDUsNDk1NDYsNDk1NDcsNDk1NTEsNDk1NTMsNDk1NTQsNDk1NTUsNDk1NTcs''@;'; put 'put ''NDk1NTksNDk1NjAsNDk1NjEsNDk1NjIsNDk1NjMsNDk1NjYsNDk1NjgsNDk1NzAsNDk1NzEsNDk1NzIsNDk1NzQsNDk1NzUsNDk1NzgsNDk1NzksNDk1ODEsNDk1ODIsNDk1ODMsNDk1ODUsNDk1ODYsNDk1ODcsNDk1ODgsNDk1ODksNDk1OTAsNDk1OTEsNDk1OTIsNDk1OTMsNDk1OTQsNDk1''@;'; put 'put ''OTUsNDk1OTYsNDk1OTgsNDk1OTksNDk2MDAsNDk2MDEsNDk2MDIsNDk2MDMsNDk2MDUsNDk2MDYsNDk2MDcsNDk2MDksNDk2MTAsNDk2MTEsNDk2MTMsNDk2MTQsNDk2MTUsNDk2MTYsNDk2MTcsNDk2MTgsNDk2MTksNDk2MjEsNDk2MjIsNDk2MjUsNDk2MjYsNDk2MjcsNDk2MjgsNDk2Mjks''@;'; put 'put ''NDk2MzAsNDk2MzEsNDk2MzMsNDk2MzQsNDk2MzUsNDk2MzcsNDk2MzgsNDk2MzksNDk2NDEsNDk2NDIsNDk2NDMsNDk2NDQsNDk2NDUsNDk2NDYsNDk2NDcsNDk2NTAsNDk2NTIsNDk2NTMsNDk2NTQsNDk2NTUsNDk2NTYsNDk2NTcsNDk2NTgsNDk2NTksNDk2NjIsNDk2NjMsNDk2NjUsNDk2''@;'; put 'put ''NjYsNDk2NjcsNDk2NjksNDk2NzAsNDk2NzEsNDk2NzIsNDk2NzMsNDk2NzQsNDk2NzUsNDk2NzgsNDk2ODAsNDk2ODIsNDk2ODMsNDk2ODQsNDk2ODUsNDk2ODYsNDk2ODcsNDk2OTAsNDk2OTEsNDk2OTMsNDk2OTQsNDk2OTcsNDk2OTgsNDk2OTksNDk3MDAsNDk3MDEsNDk3MDIsNDk3MDMs''@;'; put 'put ''NDk3MDYsNDk3MDgsNDk3MTAsNDk3MTIsNDk3MTUsNDk3MTcsNDk3MTgsNDk3MTksNDk3MjAsNDk3MjEsNDk3MjIsNDk3MjMsNDk3MjQsNDk3MjUsNDk3MjYsNDk3MjcsNDk3MjgsNDk3MjksNDk3MzAsNDk3MzEsNDk3MzIsNDk3MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3''@;'; put 'put ''MzQsNDk3MzUsNDk3MzcsNDk3MzgsNDk3MzksNDk3NDAsNDk3NDEsNDk3NDIsNDk3NDMsNDk3NDYsNDk3NDcsNDk3NDksNDk3NTAsNDk3NTEsNDk3NTMsNDk3NTQsNDk3NTUsNDk3NTYsNDk3NTcsNDk3NTgsNDk3NTksNDk3NjEsNDk3NjIsNDk3NjMsNDk3NjQsNDk3NjYsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsNDk3NjcsNDk3NjgsNDk3NjksNDk3NzAsNDk3NzEsNDk3NzQsNDk3NzUsNDk3NzcsNDk3NzgsNDk3NzksNDk3ODEsNDk3ODIsNDk3ODMsNDk3ODQsNDk3ODUsNDk3ODYsNDk3ODcsNDk3OTAsNDk3OTIsNDk3OTQsNDk3OTUsNDk3OTYsNDk3OTcsNDk3OTgsNDk3''@;'; put 'put ''OTksNDk4MDIsNDk4MDMsNDk4MDQsNDk4MDUsNDk4MDYsNDk4MDcsNDk4MDksNDk4MTAsNDk4MTEsNDk4MTIsNDk4MTMsNDk4MTQsNDk4MTUsNDk4MTcsNDk4MTgsNDk4MjAsNDk4MjIsNDk4MjMsNDk4MjQsNDk4MjUsNDk4MjYsNDk4MjcsNDk4MzAsNDk4MzEsNDk4MzMsNDk4MzQsNDk4MzUs''@;'; put 'put ''NDk4MzgsNDk4MzksNDk4NDAsNDk4NDEsNDk4NDIsNDk4NDMsNDk4NDYsNDk4NDgsNDk4NTAsNDk4NTEsNDk4NTIsNDk4NTMsNDk4NTQsNDk4NTUsNDk4NTYsNDk4NTcsNDk4NTgsNDk4NTksNDk4NjAsNDk4NjEsNDk4NjIsNDk4NjMsNDk4NjQsNDk4NjUsNDk4NjYsNDk4NjcsNDk4NjgsNDk4''@;'; put 'put ''NjksNDk4NzAsNDk4NzEsNDk4NzIsNDk4NzMsNDk4NzQsNDk4NzUsNDk4NzYsNDk4NzcsNDk4NzgsNDk4NzksNDk4ODAsNDk4ODEsNDk4ODIsNDk4ODMsNDk4ODYsNDk4ODcsNDk4ODksNDk4OTAsNDk4OTMsNDk4OTQsNDk4OTUsNDk4OTYsNDk4OTcsNDk4OTgsNDk5MDIsNDk5MDQsNDk5MDYs''@;'; put 'put ''NDk5MDcsNDk5MDgsNDk5MDksNDk5MTEsNDk5MTQsNDk5MTcsNDk5MTgsNDk5MTksNDk5MjEsNDk5MjIsNDk5MjMsNDk5MjQsNDk5MjUsNDk5MjYsNDk5MjcsNDk5MzAsNDk5MzEsNDk5MzQsNDk5MzUsNDk5MzYsNDk5MzcsNDk5MzgsNDk5NDIsNDk5NDMsNDk5NDUsNDk5NDYsNDk5NDcsNDk5''@;'; put 'put ''NDksNDk5NTAsNDk5NTEsNDk5NTIsNDk5NTMsNDk5NTQsNDk5NTUsNDk5NTgsNDk5NTksNDk5NjIsNDk5NjMsNDk5NjQsNDk5NjUsNDk5NjYsNDk5NjcsNDk5NjgsNDk5NjksNDk5NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5NzEsNDk5NzIsNDk5NzMsNDk5NzQsNDk5NzUs''@;'; put 'put ''NDk5NzYsNDk5NzcsNDk5NzgsNDk5NzksNDk5ODAsNDk5ODEsNDk5ODIsNDk5ODMsNDk5ODQsNDk5ODUsNDk5ODYsNDk5ODcsNDk5ODgsNDk5OTAsNDk5OTEsNDk5OTIsNDk5OTMsNDk5OTQsNDk5OTUsNDk5OTYsNDk5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5OTgsNDk5''@;'; put 'put ''OTksNWU0LDUwMDAxLDUwMDAyLDUwMDAzLDUwMDA0LDUwMDA1LDUwMDA2LDUwMDA3LDUwMDA4LDUwMDA5LDUwMDEwLDUwMDExLDUwMDEyLDUwMDEzLDUwMDE0LDUwMDE1LDUwMDE2LDUwMDE3LDUwMDE4LDUwMDE5LDUwMDIwLDUwMDIxLDUwMDIyLDUwMDIzLDUwMDI2LDUwMDI3LDUwMDI5LDUw''@;'; put 'put ''MDMwLDUwMDMxLDUwMDMzLDUwMDM1LDUwMDM2LDUwMDM3LDUwMDM4LDUwMDM5LDUwMDQyLDUwMDQzLDUwMDQ2LDUwMDQ3LDUwMDQ4LDUwMDQ5LDUwMDUwLDUwMDUxLDUwMDUzLDUwMDU0LDUwMDU1LDUwMDU3LDUwMDU4LDUwMDU5LDUwMDYxLDUwMDYyLDUwMDYzLDUwMDY0LDUwMDY1LDUwMDY2''@;'; put 'put ''LDUwMDY3LDUwMDY4LDUwMDY5LDUwMDcwLDUwMDcxLDUwMDcyLDUwMDczLDUwMDc0LDUwMDc1LDUwMDc2LDUwMDc3LDUwMDc4LDUwMDc5LDUwMDgwLDUwMDgxLDUwMDgyLDUwMDgzLDUwMDg0LDUwMDg1LDUwMDg2LDUwMDg3LDUwMDg4LDUwMDg5LDUwMDkwLDUwMDkxLDUwMDkyLDUwMDkzLDUw''@;'; put 'put ''MDk0LDUwMDk1LDUwMDk2LDUwMDk3LDUwMDk4LDUwMDk5LDUwMTAwLDUwMTAxLDUwMTAyLDUwMTAzLDUwMTA0LDUwMTA1LDUwMTA2LDUwMTA3LDUwMTA4LDUwMTA5LDUwMTEwLDUwMTExLDUwMTEzLDUwMTE0LDUwMTE1LDUwMTE2LDUwMTE3LDUwMTE4LDUwMTE5LDUwMTIwLDUwMTIxLDUwMTIy''@;'; put 'put ''LDUwMTIzLDUwMTI0LDUwMTI1LDUwMTI2LDUwMTI3LDUwMTI4LDUwMTI5LDUwMTMwLDUwMTMxLDUwMTMyLDUwMTMzLDUwMTM0LDUwMTM1LDUwMTM4LDUwMTM5LDUwMTQxLDUwMTQyLDUwMTQ1LDUwMTQ3LDUwMTQ4LDUwMTQ5LDUwMTUwLDUwMTUxLDUwMTU0LDUwMTU1LDUwMTU2LDUwMTU4LDUw''@;'; put 'put ''MTU5LDUwMTYwLDUwMTYxLDUwMTYyLDUwMTYzLDUwMTY2LDUwMTY3LDUwMTY5LDUwMTcwLDUwMTcxLDUwMTcyLDUwMTczLDUwMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMTc1LDUwMTc2LDUwMTc3LDUwMTc4LDUwMTc5LDUwMTgwLDUwMTgxLDUwMTgyLDUwMTgzLDUwMTg1''@;'; put 'put ''LDUwMTg2LDUwMTg3LDUwMTg4LDUwMTg5LDUwMTkwLDUwMTkxLDUwMTkzLDUwMTk0LDUwMTk1LDUwMTk2LDUwMTk3LDUwMTk4LDUwMTk5LDUwMjAwLDUwMjAxLDUwMjAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMjAzLDUwMjA0LDUwMjA1LDUwMjA2LDUwMjA3LDUwMjA4LDUw''@;'; put 'put ''MjA5LDUwMjEwLDUwMjExLDUwMjEzLDUwMjE0LDUwMjE1LDUwMjE2LDUwMjE3LDUwMjE4LDUwMjE5LDUwMjIxLDUwMjIyLDUwMjIzLDUwMjI1LDUwMjI2LDUwMjI3LDUwMjI5LDUwMjMwLDUwMjMxLDUwMjMyLDUwMjMzLDUwMjM0LDUwMjM1LDUwMjM4LDUwMjM5LDUwMjQwLDUwMjQxLDUwMjQy''@;'; put 'put ''LDUwMjQzLDUwMjQ0LDUwMjQ1LDUwMjQ2LDUwMjQ3LDUwMjQ5LDUwMjUwLDUwMjUxLDUwMjUyLDUwMjUzLDUwMjU0LDUwMjU1LDUwMjU2LDUwMjU3LDUwMjU4LDUwMjU5LDUwMjYwLDUwMjYxLDUwMjYyLDUwMjYzLDUwMjY0LDUwMjY1LDUwMjY2LDUwMjY3LDUwMjY4LDUwMjY5LDUwMjcwLDUw''@;'; put 'put ''MjcxLDUwMjcyLDUwMjczLDUwMjc0LDUwMjc1LDUwMjc4LDUwMjc5LDUwMjgxLDUwMjgyLDUwMjgzLDUwMjg1LDUwMjg2LDUwMjg3LDUwMjg4LDUwMjg5LDUwMjkwLDUwMjkxLDUwMjk0LDUwMjk1LDUwMjk2LDUwMjk4LDUwMjk5LDUwMzAwLDUwMzAxLDUwMzAyLDUwMzAzLDUwMzA1LDUwMzA2''@;'; put 'put ''LDUwMzA3LDUwMzA4LDUwMzA5LDUwMzEwLDUwMzExLDUwMzEyLDUwMzEzLDUwMzE0LDUwMzE1LDUwMzE2LDUwMzE3LDUwMzE4LDUwMzE5LDUwMzIwLDUwMzIxLDUwMzIyLDUwMzIzLDUwMzI1LDUwMzI2LDUwMzI3LDUwMzI4LDUwMzI5LDUwMzMwLDUwMzMxLDUwMzMzLDUwMzM0LDUwMzM1LDUw''@;'; put 'put ''MzM2LDUwMzM3LDUwMzM4LDUwMzM5LDUwMzQwLDUwMzQxLDUwMzQyLDUwMzQzLDUwMzQ0LDUwMzQ1LDUwMzQ2LDUwMzQ3LDUwMzQ4LDUwMzQ5LDUwMzUwLDUwMzUxLDUwMzUyLDUwMzUzLDUwMzU0LDUwMzU1LDUwMzU2LDUwMzU3LDUwMzU4LDUwMzU5LDUwMzYxLDUwMzYyLDUwMzYzLDUwMzY1''@;'; put 'put ''LDUwMzY2LDUwMzY3LDUwMzY4LDUwMzY5LDUwMzcwLDUwMzcxLDUwMzcyLDUwMzczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMzc0LDUwMzc1LDUwMzc2LDUwMzc3LDUwMzc4LDUwMzc5LDUwMzgwLDUwMzgxLDUwMzgyLDUwMzgzLDUwMzg0LDUwMzg1LDUwMzg2LDUwMzg3LDUw''@;'; put 'put ''Mzg4LDUwMzg5LDUwMzkwLDUwMzkxLDUwMzkyLDUwMzkzLDUwMzk0LDUwMzk1LDUwMzk2LDUwMzk3LDUwMzk4LDUwMzk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNDAwLDUwNDAxLDUwNDAyLDUwNDAzLDUwNDA0LDUwNDA1LDUwNDA2LDUwNDA3LDUwNDA4LDUwNDEwLDUwNDEx''@;'; put 'put ''LDUwNDEyLDUwNDEzLDUwNDE0LDUwNDE1LDUwNDE4LDUwNDE5LDUwNDIxLDUwNDIyLDUwNDIzLDUwNDI1LDUwNDI3LDUwNDI4LDUwNDI5LDUwNDMwLDUwNDM0LDUwNDM1LDUwNDM2LDUwNDM3LDUwNDM4LDUwNDM5LDUwNDQwLDUwNDQxLDUwNDQyLDUwNDQzLDUwNDQ1LDUwNDQ2LDUwNDQ3LDUw''@;'; put 'put ''NDQ5LDUwNDUwLDUwNDUxLDUwNDUzLDUwNDU0LDUwNDU1LDUwNDU2LDUwNDU3LDUwNDU4LDUwNDU5LDUwNDYxLDUwNDYyLDUwNDYzLDUwNDY0LDUwNDY1LDUwNDY2LDUwNDY3LDUwNDY4LDUwNDY5LDUwNDcwLDUwNDcxLDUwNDc0LDUwNDc1LDUwNDc3LDUwNDc4LDUwNDc5LDUwNDgxLDUwNDgy''@;'; put 'put ''LDUwNDgzLDUwNDg0LDUwNDg1LDUwNDg2LDUwNDg3LDUwNDkwLDUwNDkyLDUwNDk0LDUwNDk1LDUwNDk2LDUwNDk3LDUwNDk4LDUwNDk5LDUwNTAyLDUwNTAzLDUwNTA3LDUwNTExLDUwNTEyLDUwNTEzLDUwNTE0LDUwNTE4LDUwNTIyLDUwNTIzLDUwNTI0LDUwNTI3LDUwNTMwLDUwNTMxLDUw''@;'; put 'put ''NTMzLDUwNTM0LDUwNTM1LDUwNTM3LDUwNTM4LDUwNTM5LDUwNTQwLDUwNTQxLDUwNTQyLDUwNTQzLDUwNTQ2LDUwNTUwLDUwNTUxLDUwNTUyLDUwNTUzLDUwNTU0LDUwNTU1LDUwNTU4LDUwNTU5LDUwNTYxLDUwNTYyLDUwNTYzLDUwNTY1LDUwNTY2LDUwNTY4LDUwNTY5LDUwNTcwLDUwNTcx''@;'; put 'put ''LDUwNTc0LDUwNTc2LDUwNTc4LDUwNTc5LDUwNTgwLDUwNTgyLDUwNTg1LDUwNTg2LDUwNTg3LDUwNTg5LDUwNTkwLDUwNTkxLDUwNTkzLDUwNTk0LDUwNTk1LDUwNTk2LDUwNTk3LDUwNTk4LDUwNTk5LDUwNjAwLDUwNjAyLDUwNjAzLDUwNjA0LDUwNjA1LDUwNjA2LDUwNjA3LDUwNjA4LDUw''@;'; put 'put ''NjA5LDUwNjEwLDUwNjExLDUwNjE0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjE1LDUwNjE4LDUwNjIzLDUwNjI0LDUwNjI1LDUwNjI2LDUwNjI3LDUwNjM1LDUwNjM3LDUwNjM5LDUwNjQyLDUwNjQzLDUwNjQ1LDUwNjQ2LDUwNjQ3LDUwNjQ5LDUwNjUwLDUwNjUxLDUwNjUy''@;'; put 'put ''LDUwNjUzLDUwNjU0LDUwNjU1LDUwNjU4LDUwNjYwLDUwNjYyLDUwNjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjY0LDUwNjY1LDUwNjY2LDUwNjY3LDUwNjcxLDUwNjczLDUwNjc0LDUwNjc1LDUwNjc3LDUwNjgwLDUwNjgxLDUwNjgyLDUwNjgzLDUwNjkwLDUwNjkxLDUw''@;'; put 'put ''NjkyLDUwNjk3LDUwNjk4LDUwNjk5LDUwNzAxLDUwNzAyLDUwNzAzLDUwNzA1LDUwNzA2LDUwNzA3LDUwNzA4LDUwNzA5LDUwNzEwLDUwNzExLDUwNzE0LDUwNzE3LDUwNzE4LDUwNzE5LDUwNzIwLDUwNzIxLDUwNzIyLDUwNzIzLDUwNzI2LDUwNzI3LDUwNzI5LDUwNzMwLDUwNzMxLDUwNzM1''@;'; put 'put ''LDUwNzM3LDUwNzM4LDUwNzQyLDUwNzQ0LDUwNzQ2LDUwNzQ4LDUwNzQ5LDUwNzUwLDUwNzUxLDUwNzU0LDUwNzU1LDUwNzU3LDUwNzU4LDUwNzU5LDUwNzYxLDUwNzYyLDUwNzYzLDUwNzY0LDUwNzY1LDUwNzY2LDUwNzY3LDUwNzcwLDUwNzc0LDUwNzc1LDUwNzc2LDUwNzc3LDUwNzc4LDUw''@;'; put 'put ''Nzc5LDUwNzgyLDUwNzgzLDUwNzg1LDUwNzg2LDUwNzg3LDUwNzg4LDUwNzg5LDUwNzkwLDUwNzkxLDUwNzkyLDUwNzkzLDUwNzk0LDUwNzk1LDUwNzk3LDUwNzk4LDUwODAwLDUwODAyLDUwODAzLDUwODA0LDUwODA1LDUwODA2LDUwODA3LDUwODEwLDUwODExLDUwODEzLDUwODE0LDUwODE1''@;'; put 'put ''LDUwODE3LDUwODE4LDUwODE5LDUwODIwLDUwODIxLDUwODIyLDUwODIzLDUwODI2LDUwODI4LDUwODMwLDUwODMxLDUwODMyLDUwODMzLDUwODM0LDUwODM1LDUwODM4LDUwODM5LDUwODQxLDUwODQyLDUwODQzLDUwODQ1LDUwODQ2LDUwODQ3LDUwODQ4LDUwODQ5LDUwODUwLDUwODUxLDUw''@;'; put 'put ''ODU0LDUwODU2LDUwODU4LDUwODU5LDUwODYwLDUwODYxLDUwODYyLDUwODYzLDUwODY2LDUwODY3LDUwODY5LDUwODcwLDUwODcxLDUwODc1LDUwODc2LDUwODc3LDUwODc4LDUwODc5LDUwODgyLDUwODg0LDUwODg2LDUwODg3LDUwODg4LDUwODg5LDUwODkwLDUwODkxLDUwODk0LG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwODk1LDUwODk3LDUwODk4LDUwODk5LDUwOTAxLDUwOTAyLDUwOTAzLDUwOTA0LDUwOTA1LDUwOTA2LDUwOTA3LDUwOTEwLDUwOTExLDUwOTE0LDUwOTE1LDUwOTE2LDUwOTE3LDUwOTE4LDUwOTE5LDUwOTIyLDUwOTIzLDUwOTI1LDUwOTI2LDUw''@;'; put 'put ''OTI3LDUwOTI5LDUwOTMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwOTMxLDUwOTMyLDUwOTMzLDUwOTM0LDUwOTM1LDUwOTM4LDUwOTM5LDUwOTQwLDUwOTQyLDUwOTQzLDUwOTQ0LDUwOTQ1LDUwOTQ2LDUwOTQ3LDUwOTUwLDUwOTUxLDUwOTUzLDUwOTU0LDUwOTU1LDUwOTU3''@;'; put 'put ''LDUwOTU4LDUwOTU5LDUwOTYwLDUwOTYxLDUwOTYyLDUwOTYzLDUwOTY2LDUwOTY4LDUwOTcwLDUwOTcxLDUwOTcyLDUwOTczLDUwOTc0LDUwOTc1LDUwOTc4LDUwOTc5LDUwOTgxLDUwOTgyLDUwOTgzLDUwOTg1LDUwOTg2LDUwOTg3LDUwOTg4LDUwOTg5LDUwOTkwLDUwOTkxLDUwOTk0LDUw''@;'; put 'put ''OTk2LDUwOTk4LDUxZTMsNTEwMDEsNTEwMDIsNTEwMDMsNTEwMDYsNTEwMDcsNTEwMDksNTEwMTAsNTEwMTEsNTEwMTMsNTEwMTQsNTEwMTUsNTEwMTYsNTEwMTcsNTEwMTksNTEwMjIsNTEwMjQsNTEwMzMsNTEwMzQsNTEwMzUsNTEwMzcsNTEwMzgsNTEwMzksNTEwNDEsNTEwNDIsNTEwNDMs''@;'; put 'put ''NTEwNDQsNTEwNDUsNTEwNDYsNTEwNDcsNTEwNDksNTEwNTAsNTEwNTIsNTEwNTMsNTEwNTQsNTEwNTUsNTEwNTYsNTEwNTcsNTEwNTgsNTEwNTksNTEwNjIsNTEwNjMsNTEwNjUsNTEwNjYsNTEwNjcsNTEwNzEsNTEwNzIsNTEwNzMsNTEwNzQsNTEwNzgsNTEwODMsNTEwODQsNTEwODUsNTEw''@;'; put 'put ''ODcsNTEwOTAsNTEwOTEsNTEwOTMsNTEwOTcsNTEwOTksNTExMDAsNTExMDEsNTExMDIsNTExMDMsNTExMDYsNTExMTEsNTExMTIsNTExMTMsNTExMTQsNTExMTUsNTExMTgsNTExMTksNTExMjEsNTExMjIsNTExMjMsNTExMjUsNTExMjYsNTExMjcsNTExMjgsNTExMjksNTExMzAsNTExMzEs''@;'; put 'put ''NTExMzQsNTExMzgsNTExMzksNTExNDAsNTExNDEsNTExNDIsNTExNDMsNTExNDYsNTExNDcsNTExNDksNTExNTEsNTExNTMsNTExNTQsNTExNTUsNTExNTYsNTExNTcsNTExNTgsNTExNTksNTExNjEsNTExNjIsNTExNjMsNTExNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEx''@;'; put 'put ''NjYsNTExNjcsNTExNjgsNTExNjksNTExNzAsNTExNzEsNTExNzMsNTExNzQsNTExNzUsNTExNzcsNTExNzgsNTExNzksNTExODEsNTExODIsNTExODMsNTExODQsNTExODUsNTExODYsNTExODcsNTExODgsNTExODksNTExOTAsNTExOTEsNTExOTIsNTExOTMsNTExOTQsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsNTExOTUsNTExOTYsNTExOTcsNTExOTgsNTExOTksNTEyMDIsNTEyMDMsNTEyMDUsNTEyMDYsNTEyMDcsNTEyMDksNTEyMTEsNTEyMTIsNTEyMTMsNTEyMTQsNTEyMTUsNTEyMTgsNTEyMjAsNTEyMjMsNTEyMjQsNTEyMjUsNTEyMjYsNTEyMjcsNTEyMzAsNTEy''@;'; put 'put ''MzEsNTEyMzMsNTEyMzQsNTEyMzUsNTEyMzcsNTEyMzgsNTEyMzksNTEyNDAsNTEyNDEsNTEyNDIsNTEyNDMsNTEyNDYsNTEyNDgsNTEyNTAsNTEyNTEsNTEyNTIsNTEyNTMsNTEyNTQsNTEyNTUsNTEyNTcsNTEyNTgsNTEyNTksNTEyNjEsNTEyNjIsNTEyNjMsNTEyNjUsNTEyNjYsNTEyNjcs''@;'; put 'put ''NTEyNjgsNTEyNjksNTEyNzAsNTEyNzEsNTEyNzQsNTEyNzUsNTEyNzgsNTEyNzksNTEyODAsNTEyODEsNTEyODIsNTEyODMsNTEyODUsNTEyODYsNTEyODcsNTEyODgsNTEyODksNTEyOTAsNTEyOTEsNTEyOTIsNTEyOTMsNTEyOTQsNTEyOTUsNTEyOTYsNTEyOTcsNTEyOTgsNTEyOTksNTEz''@;'; put 'put ''MDAsNTEzMDEsNTEzMDIsNTEzMDMsNTEzMDQsNTEzMDUsNTEzMDYsNTEzMDcsNTEzMDgsNTEzMDksNTEzMTAsNTEzMTEsNTEzMTQsNTEzMTUsNTEzMTcsNTEzMTgsNTEzMTksNTEzMjEsNTEzMjMsNTEzMjQsNTEzMjUsNTEzMjYsNTEzMjcsNTEzMzAsNTEzMzIsNTEzMzYsNTEzMzcsNTEzMzgs''@;'; put 'put ''NTEzNDIsNTEzNDMsNTEzNDQsNTEzNDUsNTEzNDYsNTEzNDcsNTEzNDksNTEzNTAsNTEzNTEsNTEzNTIsNTEzNTMsNTEzNTQsNTEzNTUsNTEzNTYsNTEzNTgsNTEzNjAsNTEzNjIsNTEzNjMsNTEzNjQsNTEzNjUsNTEzNjYsNTEzNjcsNTEzNjksNTEzNzAsNTEzNzEsNTEzNzIsNTEzNzMsNTEz''@;'; put 'put ''NzQsNTEzNzUsNTEzNzYsNTEzNzcsNTEzNzgsNTEzNzksNTEzODAsNTEzODEsNTEzODIsNTEzODMsNTEzODQsNTEzODUsNTEzODYsNTEzODcsNTEzOTAsNTEzOTEsNTEzOTIsNTEzOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEzOTQsNTEzOTUsNTEzOTcsNTEzOTgsNTEzOTks''@;'; put 'put ''NTE0MDEsNTE0MDIsNTE0MDMsNTE0MDUsNTE0MDYsNTE0MDcsNTE0MDgsNTE0MDksNTE0MTAsNTE0MTEsNTE0MTQsNTE0MTYsNTE0MTgsNTE0MTksNTE0MjAsNTE0MjEsNTE0MjIsNTE0MjMsNTE0MjYsNTE0MjcsNTE0MjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE0MzAsNTE0''@;'; put 'put ''MzEsNTE0MzIsNTE0MzMsNTE0MzQsNTE0MzUsNTE0MzYsNTE0MzcsNTE0MzgsNTE0MzksNTE0NDAsNTE0NDEsNTE0NDIsNTE0NDMsNTE0NDQsNTE0NDYsNTE0NDcsNTE0NDgsNTE0NDksNTE0NTAsNTE0NTEsNTE0NTQsNTE0NTUsNTE0NTcsNTE0NTgsNTE0NTksNTE0NjMsNTE0NjQsNTE0NjUs''@;'; put 'put ''NTE0NjYsNTE0NjcsNTE0NzAsMTIyODgsMTIyODksMTIyOTAsMTgzLDgyMjksODIzMCwxNjgsMTIyOTEsMTczLDgyMTMsODc0MSw2NTM0MCw4NzY0LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMs''@;'; put 'put ''MTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODgwMCw4ODA0LDg4MDUsODczNCw4NzU2LDE3Niw4MjQyLDgyNDMsODQ1MSw4NDkxLDY1NTA0LDY1NTA1LDY1NTA5LDk3OTQsOTc5Miw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDE2Nyw4MjUxLDk3MzQsOTczMyw5Njc1LDk2Nzks''@;'; put 'put ''OTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODU5NCw4NTkyLDg1OTMsODU5NSw4NTk2LDEyMzA3LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsODc0Myw4NzQ0''@;'; put 'put ''LDY1NTA2LDUxNDcyLDUxNDc0LDUxNDc1LDUxNDc2LDUxNDc3LDUxNDc4LDUxNDc5LDUxNDgxLDUxNDgyLDUxNDgzLDUxNDg0LDUxNDg1LDUxNDg2LDUxNDg3LDUxNDg4LDUxNDg5LDUxNDkwLDUxNDkxLDUxNDkyLDUxNDkzLDUxNDk0LDUxNDk1LDUxNDk2LDUxNDk3LDUxNDk4LDUxNDk5LG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTAxLDUxNTAyLDUxNTAzLDUxNTA0LDUxNTA1LDUxNTA2LDUxNTA3LDUxNTA5LDUxNTEwLDUxNTExLDUxNTEyLDUxNTEzLDUxNTE0LDUxNTE1LDUxNTE2LDUxNTE3LDUxNTE4LDUxNTE5LDUxNTIwLDUxNTIxLDUxNTIyLDUxNTIzLDUxNTI0''@;'; put 'put ''LDUxNTI1LDUxNTI2LDUxNTI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTI4LDUxNTI5LDUxNTMwLDUxNTMxLDUxNTMyLDUxNTMzLDUxNTM0LDUxNTM1LDUxNTM4LDUxNTM5LDUxNTQxLDUxNTQyLDUxNTQzLDUxNTQ1LDUxNTQ2LDUxNTQ3LDUxNTQ4LDUxNTQ5LDUxNTUwLDUx''@;'; put 'put ''NTUxLDUxNTU0LDUxNTU2LDUxNTU3LDUxNTU4LDUxNTU5LDUxNTYwLDUxNTYxLDUxNTYyLDUxNTYzLDUxNTY1LDUxNTY2LDUxNTY3LDg2NTgsODY2MCw4NzA0LDg3MDcsMTgwLDY1Mzc0LDcxMSw3MjgsNzMzLDczMCw3MjksMTg0LDczMSwxNjEsMTkxLDcyMCw4NzUwLDg3MjEsODcxOSwxNjQs''@;'; put 'put ''ODQ1Nyw4MjQwLDk2NjUsOTY2NCw5NjU1LDk2NTQsOTgyOCw5ODI0LDk4MjUsOTgyOSw5ODMxLDk4MjcsODg1Nyw5NjcyLDk2MzUsOTY4MCw5NjgxLDk2MTgsOTYzNiw5NjM3LDk2NDAsOTYzOSw5NjM4LDk2NDEsOTgzMiw5NzQzLDk3NDIsOTc1Niw5NzU4LDE4Miw4MjI0LDgyMjUsODU5Nyw4''@;'; put 'put ''NTk5LDg2MDEsODU5OCw4NjAwLDk4MzcsOTgzMyw5ODM0LDk4MzYsMTI5MjcsMTI4MjgsODQ3MCwxMzI1NSw4NDgyLDEzMjUwLDEzMjcyLDg0ODEsODM2NCwxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTY5LDUxNTcwLDUxNTcxLDUxNTczLDUxNTc0LDUxNTc1LDUxNTc2LDUxNTc3LDUxNTc4LDUxNTc5LDUxNTgxLDUxNTgyLDUxNTgzLDUxNTg0LDUxNTg1LDUxNTg2LDUxNTg3LDUxNTg4LDUxNTg5LDUxNTkwLDUx''@;'; put 'put ''NTkxLDUxNTk0LDUxNTk1LDUxNTk3LDUxNTk4LDUxNTk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjAxLDUxNjAyLDUxNjAzLDUxNjA0LDUxNjA1LDUxNjA2LDUxNjA3LDUxNjEwLDUxNjEyLDUxNjE0LDUxNjE1LDUxNjE2LDUxNjE3LDUxNjE4LDUxNjE5LDUxNjIwLDUxNjIx''@;'; put 'put ''LDUxNjIyLDUxNjIzLDUxNjI0LDUxNjI1LDUxNjI2LDUxNjI3LDUxNjI4LDUxNjI5LDUxNjMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjMxLDUxNjMyLDUxNjMzLDUxNjM0LDUxNjM1LDUxNjM2LDUxNjM3LDUxNjM4LDUxNjM5LDUxNjQwLDUxNjQxLDUxNjQyLDUxNjQzLDUx''@;'; put 'put ''NjQ0LDUxNjQ1LDUxNjQ2LDUxNjQ3LDUxNjUwLDUxNjUxLDUxNjUzLDUxNjU0LDUxNjU3LDUxNjU5LDUxNjYwLDUxNjYxLDUxNjYyLDUxNjYzLDUxNjY2LDUxNjY4LDUxNjcxLDUxNjcyLDUxNjc1LDY1MjgxLDY1MjgyLDY1MjgzLDY1Mjg0LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5''@;'; put 'put ''LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1''@;'; put 'put ''MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1NTEwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0''@;'; put 'put ''LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1''@;'; put 'put ''MzcyLDY1MzczLDY1NTA3LDUxNjc4LDUxNjc5LDUxNjgxLDUxNjgzLDUxNjg1LDUxNjg2LDUxNjg4LDUxNjg5LDUxNjkwLDUxNjkxLDUxNjk0LDUxNjk4LDUxNjk5LDUxNzAwLDUxNzAxLDUxNzAyLDUxNzAzLDUxNzA2LDUxNzA3LDUxNzA5LDUxNzEwLDUxNzExLDUxNzEzLDUxNzE0LDUxNzE1''@;'; put 'put ''LDUxNzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzE3LDUxNzE4LDUxNzE5LDUxNzIyLDUxNzI2LDUxNzI3LDUxNzI4LDUxNzI5LDUxNzMwLDUxNzMxLDUxNzMzLDUxNzM0LDUxNzM1LDUxNzM3LDUxNzM4LDUxNzM5LDUxNzQwLDUxNzQxLDUxNzQyLDUxNzQzLDUxNzQ0LDUx''@;'; put 'put ''NzQ1LDUxNzQ2LDUxNzQ3LDUxNzQ4LDUxNzQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzUwLDUxNzUxLDUxNzUyLDUxNzU0LDUxNzU1LDUxNzU2LDUxNzU3LDUxNzU4LDUxNzU5LDUxNzYwLDUxNzYxLDUxNzYyLDUxNzYzLDUxNzY0LDUxNzY1LDUxNzY2LDUxNzY3LDUxNzY4''@;'; put 'put ''LDUxNzY5LDUxNzcwLDUxNzcxLDUxNzcyLDUxNzczLDUxNzc0LDUxNzc1LDUxNzc2LDUxNzc3LDUxNzc4LDUxNzc5LDUxNzgwLDUxNzgxLDUxNzgyLDEyNTkzLDEyNTk0LDEyNTk1LDEyNTk2LDEyNTk3LDEyNTk4LDEyNTk5LDEyNjAwLDEyNjAxLDEyNjAyLDEyNjAzLDEyNjA0LDEyNjA1LDEy''@;'; put 'put ''NjA2LDEyNjA3LDEyNjA4LDEyNjA5LDEyNjEwLDEyNjExLDEyNjEyLDEyNjEzLDEyNjE0LDEyNjE1LDEyNjE2LDEyNjE3LDEyNjE4LDEyNjE5LDEyNjIwLDEyNjIxLDEyNjIyLDEyNjIzLDEyNjI0LDEyNjI1LDEyNjI2LDEyNjI3LDEyNjI4LDEyNjI5LDEyNjMwLDEyNjMxLDEyNjMyLDEyNjMz''@;'; put 'put ''LDEyNjM0LDEyNjM1LDEyNjM2LDEyNjM3LDEyNjM4LDEyNjM5LDEyNjQwLDEyNjQxLDEyNjQyLDEyNjQzLDEyNjQ0LDEyNjQ1LDEyNjQ2LDEyNjQ3LDEyNjQ4LDEyNjQ5LDEyNjUwLDEyNjUxLDEyNjUyLDEyNjUzLDEyNjU0LDEyNjU1LDEyNjU2LDEyNjU3LDEyNjU4LDEyNjU5LDEyNjYwLDEy''@;'; put 'put ''NjYxLDEyNjYyLDEyNjYzLDEyNjY0LDEyNjY1LDEyNjY2LDEyNjY3LDEyNjY4LDEyNjY5LDEyNjcwLDEyNjcxLDEyNjcyLDEyNjczLDEyNjc0LDEyNjc1LDEyNjc2LDEyNjc3LDEyNjc4LDEyNjc5LDEyNjgwLDEyNjgxLDEyNjgyLDEyNjgzLDEyNjg0LDEyNjg1LDEyNjg2LDUxNzgzLDUxNzg0''@;'; put 'put ''LDUxNzg1LDUxNzg2LDUxNzg3LDUxNzkwLDUxNzkxLDUxNzkzLDUxNzk0LDUxNzk1LDUxNzk3LDUxNzk4LDUxNzk5LDUxODAwLDUxODAxLDUxODAyLDUxODAzLDUxODA2LDUxODEwLDUxODExLDUxODEyLDUxODEzLDUxODE0LDUxODE1LDUxODE3LDUxODE4LG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDUxODE5LDUxODIwLDUxODIxLDUxODIyLDUxODIzLDUxODI0LDUxODI1LDUxODI2LDUxODI3LDUxODI4LDUxODI5LDUxODMwLDUxODMxLDUxODMyLDUxODMzLDUxODM0LDUxODM1LDUxODM2LDUxODM4LDUxODM5LDUxODQwLDUxODQxLDUxODQyLDUxODQzLDUxODQ1LDUxODQ2''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODQ3LDUxODQ4LDUxODQ5LDUxODUwLDUxODUxLDUxODUyLDUxODUzLDUxODU0LDUxODU1LDUxODU2LDUxODU3LDUxODU4LDUxODU5LDUxODYwLDUxODYxLDUxODYyLDUxODYzLDUxODY1LDUxODY2LDUxODY3LDUxODY4LDUxODY5LDUx''@;'; put 'put ''ODcwLDUxODcxLDUxODcyLDUxODczLDUxODc0LDUxODc1LDUxODc2LDUxODc3LDUxODc4LDUxODc5LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1''@;'; put 'put ''NTAsODU1MSw4NTUyLDg1NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4ODAsNTE4ODEsNTE4''@;'; put 'put ''ODIsNTE4ODMsNTE4ODQsNTE4ODUsNTE4ODYsNTE4ODcsNTE4ODgsNTE4ODksNTE4OTAsNTE4OTEsNTE4OTIsNTE4OTMsNTE4OTQsNTE4OTUsNTE4OTYsNTE4OTcsNTE4OTgsNTE4OTksNTE5MDIsNTE5MDMsNTE5MDUsNTE5MDYsNTE5MDcsNTE5MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNTE5MTAsNTE5MTEsNTE5MTIsNTE5MTMsNTE5MTQsNTE5MTUsNTE5MTgsNTE5MjAsNTE5MjIsNTE5MjQsNTE5MjUsNTE5MjYsNTE5MjcsNTE5MzAsNTE5MzEsNTE5MzIsNTE5MzMsNTE5MzQsNTE5MzUsNTE5MzcsNTE5MzgsNTE5MzksNTE5NDAsNTE5NDEsNTE5NDIsNTE5NDMsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NDQsNTE5NDUsNTE5NDYsNTE5NDcsNTE5NDksNTE5NTAsNTE5NTEsNTE5NTIsNTE5NTMsNTE5NTQsNTE5NTUsNTE5NTcsNTE5NTgsNTE5NTksNTE5NjAsNTE5NjEsNTE5NjIsNTE5NjMsNTE5NjQsNTE5NjUsNTE5NjYsNTE5NjcsNTE5Njgs''@;'; put 'put ''NTE5NjksNTE5NzAsNTE5NzEsNTE5NzIsNTE5NzMsNTE5NzQsNTE5NzUsNTE5NzcsNTE5NzgsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5''@;'; put 'put ''NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LDk0OTAsOTQ4OSw5NDk4LDk0OTcsOTQ5NCw5NDkzLDk0ODYsOTQ4NSw5NTAyLDk1MDMsOTUwNSw5NTA2LDk1MTAsOTUxMSw5NTEzLDk1MTQsOTUxNyw5NTE4LDk1MjEsOTUyMiw5NTI1LDk1MjYsOTUyOSw5''@;'; put 'put ''NTMwLDk1MzMsOTUzNCw5NTM2LDk1MzcsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk3OSw1MTk4MCw1MTk4MSw1MTk4Miw1MTk4Myw1MTk4NSw1MTk4Niw1MTk4Nyw1MTk4OSw1MTk5MCw1MTk5MSw1MTk5Myw1MTk5NCw1MTk5NSw1MTk5Niw1MTk5Nyw1MTk5OCw1MTk5OSw1MjAwMiw1MjAwMyw1MjAwNCw1MjAwNSw1MjAw''@;'; put 'put ''Niw1MjAwNyw1MjAwOCw1MjAwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAxMCw1MjAxMSw1MjAxMiw1MjAxMyw1MjAxNCw1MjAxNSw1MjAxNiw1MjAxNyw1MjAxOCw1MjAxOSw1MjAyMCw1MjAyMSw1MjAyMiw1MjAyMyw1MjAyNCw1MjAyNSw1MjAyNiw1MjAyNyw1MjAyOCw1''@;'; put 'put ''MjAyOSw1MjAzMCw1MjAzMSw1MjAzMiw1MjAzNCw1MjAzNSw1MjAzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAzNyw1MjAzOCw1MjAzOSw1MjA0Miw1MjA0Myw1MjA0NSw1MjA0Niw1MjA0Nyw1MjA0OSw1MjA1MCw1MjA1MSw1MjA1Miw1MjA1Myw1MjA1NCw1MjA1NSw1MjA1''@;'; put 'put ''OCw1MjA1OSw1MjA2MCw1MjA2Miw1MjA2Myw1MjA2NCw1MjA2NSw1MjA2Niw1MjA2Nyw1MjA2OSw1MjA3MCw1MjA3MSw1MjA3Miw1MjA3Myw1MjA3NCw1MjA3NSw1MjA3NiwxMzIwNSwxMzIwNiwxMzIwNyw4NDY3LDEzMjA4LDEzMjUyLDEzMjE5LDEzMjIwLDEzMjIxLDEzMjIyLDEzMjA5LDEz''@;'; put 'put ''MjEwLDEzMjExLDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE1LDEzMjE2LDEzMjE3LDEzMjE4LDEzMjU4LDEzMTk3LDEzMTk4LDEzMTk5LDEzMjYzLDEzMTkyLDEzMTkzLDEzMjU2LDEzMjIzLDEzMjI0LDEzMjMyLDEzMjMzLDEzMjM0LDEzMjM1LDEzMjM2LDEzMjM3LDEzMjM4LDEzMjM5LDEzMjQw''@;'; put 'put ''LDEzMjQxLDEzMTg0LDEzMTg1LDEzMTg2LDEzMTg3LDEzMTg4LDEzMjQyLDEzMjQzLDEzMjQ0LDEzMjQ1LDEzMjQ2LDEzMjQ3LDEzMjAwLDEzMjAxLDEzMjAyLDEzMjAzLDEzMjA0LDg0ODYsMTMyNDgsMTMyNDksMTMxOTQsMTMxOTUsMTMxOTYsMTMyNzAsMTMyNTMsMTMyMjksMTMyMzAsMTMy''@;'; put 'put ''MzEsMTMyNzUsMTMyMjUsMTMyMjYsMTMyMjcsMTMyMjgsMTMyNzcsMTMyNjQsMTMyNjcsMTMyNTEsMTMyNTcsMTMyNzYsMTMyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwNzcsNTIwNzgsNTIw''@;'; put 'put ''NzksNTIwODAsNTIwODEsNTIwODIsNTIwODMsNTIwODQsNTIwODUsNTIwODYsNTIwODcsNTIwOTAsNTIwOTEsNTIwOTIsNTIwOTMsNTIwOTQsNTIwOTUsNTIwOTYsNTIwOTcsNTIwOTgsNTIwOTksNTIxMDAsNTIxMDEsNTIxMDIsNTIxMDMsNTIxMDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsNTIxMDUsNTIxMDYsNTIxMDcsNTIxMDgsNTIxMDksNTIxMTAsNTIxMTEsNTIxMTIsNTIxMTMsNTIxMTQsNTIxMTUsNTIxMTYsNTIxMTcsNTIxMTgsNTIxMTksNTIxMjAsNTIxMjEsNTIxMjIsNTIxMjMsNTIxMjUsNTIxMjYsNTIxMjcsNTIxMjgsNTIxMjksNTIxMzAsNTIxMzEsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMzIsNTIxMzMsNTIxMzQsNTIxMzUsNTIxMzYsNTIxMzcsNTIxMzgsNTIxMzksNTIxNDAsNTIxNDEsNTIxNDIsNTIxNDMsNTIxNDQsNTIxNDUsNTIxNDYsNTIxNDcsNTIxNDgsNTIxNDksNTIxNTAsNTIxNTEsNTIxNTMsNTIxNTQsNTIxNTUs''@;'; put 'put ''NTIxNTYsNTIxNTcsNTIxNTgsNTIxNTksNTIxNjAsNTIxNjEsNTIxNjIsNTIxNjMsNTIxNjQsMTk4LDIwOCwxNzAsMjk0LG51bGwsMzA2LG51bGwsMzE5LDMyMSwyMTYsMzM4LDE4NiwyMjIsMzU4LDMzMCxudWxsLDEyODk2LDEyODk3LDEyODk4LDEyODk5LDEyOTAwLDEyOTAxLDEyOTAyLDEy''@;'; put 'put ''OTAzLDEyOTA0LDEyOTA1LDEyOTA2LDEyOTA3LDEyOTA4LDEyOTA5LDEyOTEwLDEyOTExLDEyOTEyLDEyOTEzLDEyOTE0LDEyOTE1LDEyOTE2LDEyOTE3LDEyOTE4LDEyOTE5LDEyOTIwLDEyOTIxLDEyOTIyLDEyOTIzLDk0MjQsOTQyNSw5NDI2LDk0MjcsOTQyOCw5NDI5LDk0MzAsOTQzMSw5''@;'; put 'put ''NDMyLDk0MzMsOTQzNCw5NDM1LDk0MzYsOTQzNyw5NDM4LDk0MzksOTQ0MCw5NDQxLDk0NDIsOTQ0Myw5NDQ0LDk0NDUsOTQ0Niw5NDQ3LDk0NDgsOTQ0OSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiwx''@;'; put 'put ''ODksODUzMSw4NTMyLDE4OCwxOTAsODUzOSw4NTQwLDg1NDEsODU0Miw1MjE2NSw1MjE2Niw1MjE2Nyw1MjE2OCw1MjE2OSw1MjE3MCw1MjE3MSw1MjE3Miw1MjE3Myw1MjE3NCw1MjE3NSw1MjE3Niw1MjE3Nyw1MjE3OCw1MjE3OSw1MjE4MSw1MjE4Miw1MjE4Myw1MjE4NCw1MjE4NSw1MjE4''@;'; put 'put ''Niw1MjE4Nyw1MjE4OCw1MjE4OSw1MjE5MCw1MjE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjE5Miw1MjE5Myw1MjE5NCw1MjE5NSw1MjE5Nyw1MjE5OCw1MjIwMCw1MjIwMiw1MjIwMyw1MjIwNCw1MjIwNSw1MjIwNiw1MjIwNyw1MjIwOCw1MjIwOSw1MjIxMCw1MjIxMSw1''@;'; put 'put ''MjIxMiw1MjIxMyw1MjIxNCw1MjIxNSw1MjIxNiw1MjIxNyw1MjIxOCw1MjIxOSw1MjIyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjIyMSw1MjIyMiw1MjIyMyw1MjIyNCw1MjIyNSw1MjIyNiw1MjIyNyw1MjIyOCw1MjIyOSw1MjIzMCw1MjIzMSw1MjIzMiw1MjIzMyw1MjIz''@;'; put 'put ''NCw1MjIzNSw1MjIzOCw1MjIzOSw1MjI0MSw1MjI0Miw1MjI0Myw1MjI0NSw1MjI0Niw1MjI0Nyw1MjI0OCw1MjI0OSw1MjI1MCw1MjI1MSw1MjI1NCw1MjI1NSw1MjI1Niw1MjI1OSw1MjI2MCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIwLDMyMiwyNDgsMzM5LDIyMywyNTQsMzU5''@;'; put 'put ''LDMzMSwzMjksMTI4MDAsMTI4MDEsMTI4MDIsMTI4MDMsMTI4MDQsMTI4MDUsMTI4MDYsMTI4MDcsMTI4MDgsMTI4MDksMTI4MTAsMTI4MTEsMTI4MTIsMTI4MTMsMTI4MTQsMTI4MTUsMTI4MTYsMTI4MTcsMTI4MTgsMTI4MTksMTI4MjAsMTI4MjEsMTI4MjIsMTI4MjMsMTI4MjQsMTI4MjUs''@;'; put 'put ''MTI4MjYsMTI4MjcsOTM3Miw5MzczLDkzNzQsOTM3NSw5Mzc2LDkzNzcsOTM3OCw5Mzc5LDkzODAsOTM4MSw5MzgyLDkzODMsOTM4NCw5Mzg1LDkzODYsOTM4Nyw5Mzg4LDkzODksOTM5MCw5MzkxLDkzOTIsOTM5Myw5Mzk0LDkzOTUsOTM5Niw5Mzk3LDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMz''@;'; put 'put ''Niw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDE4NSwxNzgsMTc5LDgzMDgsODMxOSw4MzIxLDgzMjIsODMyMyw4MzI0LDUyMjYxLDUyMjYyLDUyMjY2LDUyMjY3LDUyMjY5LDUyMjcxLDUyMjczLDUyMjc0LDUyMjc1LDUyMjc2LDUyMjc3LDUyMjc4''@;'; put 'put ''LDUyMjc5LDUyMjgyLDUyMjg3LDUyMjg4LDUyMjg5LDUyMjkwLDUyMjkxLDUyMjk0LDUyMjk1LDUyMjk3LDUyMjk4LDUyMjk5LDUyMzAxLDUyMzAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzAzLDUyMzA0LDUyMzA1LDUyMzA2LDUyMzA3LDUyMzEwLDUyMzE0LDUyMzE1LDUy''@;'; put 'put ''MzE2LDUyMzE3LDUyMzE4LDUyMzE5LDUyMzIxLDUyMzIyLDUyMzIzLDUyMzI1LDUyMzI3LDUyMzI5LDUyMzMwLDUyMzMxLDUyMzMyLDUyMzMzLDUyMzM0LDUyMzM1LDUyMzM3LDUyMzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzM5LDUyMzQwLDUyMzQyLDUyMzQzLDUyMzQ0''@;'; put 'put ''LDUyMzQ1LDUyMzQ2LDUyMzQ3LDUyMzQ4LDUyMzQ5LDUyMzUwLDUyMzUxLDUyMzUyLDUyMzUzLDUyMzU0LDUyMzU1LDUyMzU2LDUyMzU3LDUyMzU4LDUyMzU5LDUyMzYwLDUyMzYxLDUyMzYyLDUyMzYzLDUyMzY0LDUyMzY1LDUyMzY2LDUyMzY3LDUyMzY4LDUyMzY5LDUyMzcwLDUyMzcxLDEy''@;'; put 'put ''MzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgw''@;'; put 'put ''LDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEy''@;'; put 'put ''NDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjM3Miw1MjM3Myw1MjM3NCw1MjM3NSw1MjM3OCw1MjM3OSw1MjM4MSw1MjM4Miw1MjM4Myw1MjM4NSw1MjM4Niw1MjM4Nyw1MjM4OCw1MjM4OSw1MjM5MCw1MjM5MSw1MjM5NCw1MjM5OCw1''@;'; put 'put ''MjM5OSw1MjQwMCw1MjQwMSw1MjQwMiw1MjQwMyw1MjQwNiw1MjQwNyw1MjQwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQxMCw1MjQxMSw1MjQxMyw1MjQxNCw1MjQxNSw1MjQxNiw1MjQxNyw1MjQxOCw1MjQxOSw1MjQyMiw1MjQyNCw1MjQyNiw1MjQyNyw1MjQyOCw1MjQy''@;'; put 'put ''OSw1MjQzMCw1MjQzMSw1MjQzMyw1MjQzNCw1MjQzNSw1MjQzNyw1MjQzOCw1MjQzOSw1MjQ0MCw1MjQ0MSw1MjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ0Myw1MjQ0NCw1MjQ0NSw1MjQ0Niw1MjQ0Nyw1MjQ0OCw1MjQ0OSw1MjQ1MCw1MjQ1MSw1MjQ1Myw1MjQ1NCw1''@;'; put 'put ''MjQ1NSw1MjQ1Niw1MjQ1Nyw1MjQ1OCw1MjQ1OSw1MjQ2MSw1MjQ2Miw1MjQ2Myw1MjQ2NSw1MjQ2Niw1MjQ2Nyw1MjQ2OCw1MjQ2OSw1MjQ3MCw1MjQ3MSw1MjQ3Miw1MjQ3Myw1MjQ3NCw1MjQ3NSw1MjQ3Niw1MjQ3NywxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1''@;'; put 'put ''NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4Miwx''@;'; put 'put ''MjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUx''@;'; put 'put ''MCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsNTI0NzgsNTI0NzksNTI0ODAsNTI0ODIsNTI0ODMsNTI0ODQsNTI0ODUsNTI0ODYsNTI0ODcsNTI0OTAsNTI0OTEsNTI0OTMsNTI0OTQsNTI0OTUsNTI0OTcsNTI0OTgsNTI0OTksNTI1MDAsNTI1MDEsNTI1MDIsNTI1MDMsNTI1MDYsNTI1MDgsNTI1MTAs''@;'; put 'put ''NTI1MTEsNTI1MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1MTMsNTI1MTQsNTI1MTUsNTI1MTcsNTI1MTgsNTI1MTksNTI1MjEsNTI1MjIsNTI1MjMsNTI1MjUsNTI1MjYsNTI1MjcsNTI1MjgsNTI1MjksNTI1MzAsNTI1MzEsNTI1MzIsNTI1MzMsNTI1MzQsNTI1MzUsNTI1''@;'; put 'put ''MzYsNTI1MzgsNTI1MzksNTI1NDAsNTI1NDEsNTI1NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NDMsNTI1NDQsNTI1NDUsNTI1NDYsNTI1NDcsNTI1NDgsNTI1NDksNTI1NTAsNTI1NTEsNTI1NTIsNTI1NTMsNTI1NTQsNTI1NTUsNTI1NTYsNTI1NTcsNTI1NTgsNTI1NTks''@;'; put 'put ''NTI1NjAsNTI1NjEsNTI1NjIsNTI1NjMsNTI1NjQsNTI1NjUsNTI1NjYsNTI1NjcsNTI1NjgsNTI1NjksNTI1NzAsNTI1NzEsNTI1NzMsNTI1NzQsNTI1NzUsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMs''@;'; put 'put ''MTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''MTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU3Nyw1MjU3OCw1MjU3OSw1MjU4MSw1MjU4Miw1MjU4Myw1MjU4NCw1MjU4NSw1MjU4Niw1MjU4Nyw1MjU5MCw1MjU5Miw1MjU5NCw1MjU5NSw1MjU5Niw1MjU5Nyw1MjU5''@;'; put 'put ''OCw1MjU5OSw1MjYwMSw1MjYwMiw1MjYwMyw1MjYwNCw1MjYwNSw1MjYwNiw1MjYwNyw1MjYwOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjYwOSw1MjYxMCw1MjYxMSw1MjYxMiw1MjYxMyw1MjYxNCw1MjYxNSw1MjYxNyw1MjYxOCw1MjYxOSw1MjYyMCw1MjYyMSw1MjYyMiw1''@;'; put 'put ''MjYyMyw1MjYyNCw1MjYyNSw1MjYyNiw1MjYyNyw1MjYzMCw1MjYzMSw1MjYzMyw1MjYzNCw1MjYzNSw1MjYzNyw1MjYzOCw1MjYzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY0MCw1MjY0MSw1MjY0Miw1MjY0Myw1MjY0Niw1MjY0OCw1MjY1MCw1MjY1MSw1MjY1Miw1MjY1''@;'; put 'put ''Myw1MjY1NCw1MjY1NSw1MjY1Nyw1MjY1OCw1MjY1OSw1MjY2MCw1MjY2MSw1MjY2Miw1MjY2Myw1MjY2NCw1MjY2NSw1MjY2Niw1MjY2Nyw1MjY2OCw1MjY2OSw1MjY3MCw1MjY3MSw1MjY3Miw1MjY3Myw1MjY3NCw1MjY3NSw1MjY3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjc4LDUyNjc5LDUyNjgwLDUyNjgxLDUyNjgyLDUyNjgzLDUyNjg1LDUyNjg2LDUyNjg3LDUy''@;'; put 'put ''Njg5LDUyNjkwLDUyNjkxLDUyNjkyLDUyNjkzLDUyNjk0LDUyNjk1LDUyNjk2LDUyNjk3LDUyNjk4LDUyNjk5LDUyNzAwLDUyNzAxLDUyNzAyLDUyNzAzLDUyNzA0LDUyNzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzA2LDUyNzA3LDUyNzA4LDUyNzA5LDUyNzEwLDUyNzEx''@;'; put 'put ''LDUyNzEzLDUyNzE0LDUyNzE1LDUyNzE3LDUyNzE4LDUyNzE5LDUyNzIxLDUyNzIyLDUyNzIzLDUyNzI0LDUyNzI1LDUyNzI2LDUyNzI3LDUyNzMwLDUyNzMyLDUyNzM0LDUyNzM1LDUyNzM2LDUyNzM3LDUyNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzM5LDUyNzQxLDUy''@;'; put 'put ''NzQyLDUyNzQzLDUyNzQ1LDUyNzQ2LDUyNzQ3LDUyNzQ5LDUyNzUwLDUyNzUxLDUyNzUyLDUyNzUzLDUyNzU0LDUyNzU1LDUyNzU3LDUyNzU4LDUyNzU5LDUyNzYwLDUyNzYyLDUyNzYzLDUyNzY0LDUyNzY1LDUyNzY2LDUyNzY3LDUyNzcwLDUyNzcxLDUyNzczLDUyNzc0LDUyNzc1LDUyNzc3''@;'; put 'put ''LDUyNzc4LDUyNzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3ODAsNTI3ODEs''@;'; put 'put ''NTI3ODIsNTI3ODMsNTI3ODYsNTI3ODgsNTI3OTAsNTI3OTEsNTI3OTIsNTI3OTMsNTI3OTQsNTI3OTUsNTI3OTYsNTI3OTcsNTI3OTgsNTI3OTksNTI4MDAsNTI4MDEsNTI4MDIsNTI4MDMsNTI4MDQsNTI4MDUsNTI4MDYsNTI4MDcsNTI4MDgsNTI4MDksbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsNTI4MTAsNTI4MTEsNTI4MTIsNTI4MTMsNTI4MTQsNTI4MTUsNTI4MTYsNTI4MTcsNTI4MTgsNTI4MTksNTI4MjAsNTI4MjEsNTI4MjIsNTI4MjMsNTI4MjYsNTI4MjcsNTI4MjksNTI4MzAsNTI4MzQsNTI4MzUsNTI4MzYsNTI4MzcsNTI4MzgsNTI4MzksNTI4NDIsNTI4NDQs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4NDYsNTI4NDcsNTI4NDgsNTI4NDksNTI4NTAsNTI4NTEsNTI4NTQsNTI4NTUsNTI4NTcsNTI4NTgsNTI4NTksNTI4NjEsNTI4NjIsNTI4NjMsNTI4NjQsNTI4NjUsNTI4NjYsNTI4NjcsNTI4NzAsNTI4NzIsNTI4NzQsNTI4NzUsNTI4''@;'; put 'put ''NzYsNTI4NzcsNTI4NzgsNTI4NzksNTI4ODIsNTI4ODMsNTI4ODUsNTI4ODYsNTI4ODcsNTI4ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg5MCw1Mjg5MSw1Mjg5Miw1Mjg5Myw1Mjg5NCw1Mjg5NSw1Mjg5OCw1MjkwMiw1MjkwMyw1MjkwNCw1MjkwNSw1MjkwNiw1MjkwNyw1MjkxMCw1MjkxMSw1MjkxMiw1MjkxMyw1MjkxNCw1MjkxNSw1MjkxNiw1MjkxNyw1MjkxOCw1''@;'; put 'put ''MjkxOSw1MjkyMCw1MjkyMSw1MjkyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjkyMyw1MjkyNCw1MjkyNSw1MjkyNiw1MjkyNyw1MjkyOCw1MjkzMCw1MjkzMSw1MjkzMiw1MjkzMyw1MjkzNCw1MjkzNSw1MjkzNiw1MjkzNyw1MjkzOCw1MjkzOSw1Mjk0MCw1Mjk0MSw1Mjk0''@;'; put 'put ''Miw1Mjk0Myw1Mjk0NCw1Mjk0NSw1Mjk0Niw1Mjk0Nyw1Mjk0OCw1Mjk0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjk1MCw1Mjk1MSw1Mjk1Miw1Mjk1Myw1Mjk1NCw1Mjk1NSw1Mjk1Niw1Mjk1Nyw1Mjk1OCw1Mjk1OSw1Mjk2MCw1Mjk2MSw1Mjk2Miw1Mjk2Myw1Mjk2Niw1''@;'; put 'put ''Mjk2Nyw1Mjk2OSw1Mjk3MCw1Mjk3Myw1Mjk3NCw1Mjk3NSw1Mjk3Niw1Mjk3Nyw1Mjk3OCw1Mjk3OSw1Mjk4Miw1Mjk4Niw1Mjk4Nyw1Mjk4OCw1Mjk4OSw1Mjk5MCw1Mjk5MSw0NDAzMiw0NDAzMyw0NDAzNiw0NDAzOSw0NDA0MCw0NDA0MSw0NDA0Miw0NDA0OCw0NDA0OSw0NDA1MCw0NDA1''@;'; put 'put ''MSw0NDA1Miw0NDA1Myw0NDA1NCw0NDA1NSw0NDA1Nyw0NDA1OCw0NDA1OSw0NDA2MCw0NDA2MSw0NDA2NCw0NDA2OCw0NDA3Niw0NDA3Nyw0NDA3OSw0NDA4MCw0NDA4MSw0NDA4OCw0NDA4OSw0NDA5Miw0NDA5Niw0NDEwNyw0NDEwOSw0NDExNiw0NDEyMCw0NDEyNCw0NDE0NCw0NDE0NSw0''@;'; put 'put ''NDE0OCw0NDE1MSw0NDE1Miw0NDE1NCw0NDE2MCw0NDE2MSw0NDE2Myw0NDE2NCw0NDE2NSw0NDE2Niw0NDE2OSw0NDE3MCw0NDE3MSw0NDE3Miw0NDE3Niw0NDE4MCw0NDE4OCw0NDE4OSw0NDE5MSw0NDE5Miw0NDE5Myw0NDIwMCw0NDIwMSw0NDIwMiw0NDIwNCw0NDIwNyw0NDIwOCw0NDIx''@;'; put 'put ''Niw0NDIxNyw0NDIxOSw0NDIyMCw0NDIyMSw0NDIyNSw0NDIyOCw0NDIzMiw0NDIzNiw0NDI0NSw0NDI0Nyw0NDI1Niw0NDI1Nyw0NDI2MCw0NDI2Myw0NDI2NCw0NDI2Niw0NDI2OCw0NDI3MSw0NDI3Miw0NDI3Myw0NDI3NSw0NDI3Nyw0NDI3OCw0NDI4NCw0NDI4NSw0NDI4OCw0NDI5Miw0''@;'; put 'put ''NDI5NCw1Mjk5NCw1Mjk5NSw1Mjk5Nyw1Mjk5OCw1Mjk5OSw1MzAwMSw1MzAwMiw1MzAwMyw1MzAwNCw1MzAwNSw1MzAwNiw1MzAwNyw1MzAxMCw1MzAxMiw1MzAxNCw1MzAxNSw1MzAxNiw1MzAxNyw1MzAxOCw1MzAxOSw1MzAyMSw1MzAyMiw1MzAyMyw1MzAyNSw1MzAyNiw1MzAyNyxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzAyOSw1MzAzMCw1MzAzMSw1MzAzMiw1MzAzMyw1MzAzNCw1MzAzNSw1MzAzOCw1MzA0Miw1MzA0Myw1MzA0NCw1MzA0NSw1MzA0Niw1MzA0Nyw1MzA0OSw1MzA1MCw1MzA1MSw1MzA1Miw1MzA1Myw1MzA1NCw1MzA1NSw1MzA1Niw1MzA1Nyw1''@;'; put 'put ''MzA1OCw1MzA1OSw1MzA2MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzA2MSw1MzA2Miw1MzA2Myw1MzA2NCw1MzA2NSw1MzA2Niw1MzA2Nyw1MzA2OCw1MzA2OSw1MzA3MCw1MzA3MSw1MzA3Miw1MzA3Myw1MzA3NCw1MzA3NSw1MzA3OCw1MzA3OSw1MzA4MSw1MzA4Miw1MzA4''@;'; put 'put ''Myw1MzA4NSw1MzA4Niw1MzA4Nyw1MzA4OCw1MzA4OSw1MzA5MCw1MzA5MSw1MzA5NCw1MzA5Niw1MzA5OCw1MzA5OSw1MzEwMCw0NDMwMCw0NDMwMSw0NDMwMyw0NDMwNSw0NDMxMiw0NDMxNiw0NDMyMCw0NDMyOSw0NDMzMiw0NDMzMyw0NDM0MCw0NDM0MSw0NDM0NCw0NDM0OCw0NDM1Niw0''@;'; put 'put ''NDM1Nyw0NDM1OSw0NDM2MSw0NDM2OCw0NDM3Miw0NDM3Niw0NDM4NSw0NDM4Nyw0NDM5Niw0NDM5Nyw0NDQwMCw0NDQwMyw0NDQwNCw0NDQwNSw0NDQwNiw0NDQxMSw0NDQxMiw0NDQxMyw0NDQxNSw0NDQxNyw0NDQxOCw0NDQyNCw0NDQyNSw0NDQyOCw0NDQzMiw0NDQ0NCw0NDQ0NSw0NDQ1''@;'; put 'put ''Miw0NDQ3MSw0NDQ4MCw0NDQ4MSw0NDQ4NCw0NDQ4OCw0NDQ5Niw0NDQ5Nyw0NDQ5OSw0NDUwOCw0NDUxMiw0NDUxNiw0NDUzNiw0NDUzNyw0NDU0MCw0NDU0Myw0NDU0NCw0NDU0NSw0NDU1Miw0NDU1Myw0NDU1NSw0NDU1Nyw0NDU2NCw0NDU5Miw0NDU5Myw0NDU5Niw0NDU5OSw0NDYwMCw0''@;'; put 'put ''NDYwMiw0NDYwOCw0NDYwOSw0NDYxMSw0NDYxMyw0NDYxNCw0NDYxOCw0NDYyMCw0NDYyMSw0NDYyMiw0NDYyNCw0NDYyOCw0NDYzMCw0NDYzNiw0NDYzNyw0NDYzOSw0NDY0MCw0NDY0MSw0NDY0NSw0NDY0OCw0NDY0OSw0NDY1Miw0NDY1Niw0NDY2NCw1MzEwMSw1MzEwMiw1MzEwMyw1MzEw''@;'; put 'put ''Niw1MzEwNyw1MzEwOSw1MzExMCw1MzExMSw1MzExMyw1MzExNCw1MzExNSw1MzExNiw1MzExNyw1MzExOCw1MzExOSw1MzEyMSw1MzEyMiw1MzEyMyw1MzEyNCw1MzEyNiw1MzEyNyw1MzEyOCw1MzEyOSw1MzEzMCw1MzEzMSw1MzEzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1''@;'; put 'put ''MzEzNCw1MzEzNSw1MzEzNiw1MzEzNyw1MzEzOCw1MzEzOSw1MzE0MCw1MzE0MSw1MzE0Miw1MzE0Myw1MzE0NCw1MzE0NSw1MzE0Niw1MzE0Nyw1MzE0OCw1MzE0OSw1MzE1MCw1MzE1MSw1MzE1Miw1MzE1NCw1MzE1NSw1MzE1Niw1MzE1Nyw1MzE1OCw1MzE1OSw1MzE2MSxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCw1MzE2Miw1MzE2Myw1MzE2NCw1MzE2NSw1MzE2Niw1MzE2Nyw1MzE2OSw1MzE3MCw1MzE3MSw1MzE3Miw1MzE3Myw1MzE3NCw1MzE3NSw1MzE3Niw1MzE3Nyw1MzE3OCw1MzE3OSw1MzE4MCw1MzE4MSw1MzE4Miw1MzE4Myw1MzE4NCw1MzE4NSw1MzE4Niw1''@;'; put 'put ''MzE4Nyw1MzE4OSw1MzE5MCw1MzE5MSw1MzE5Miw1MzE5Myw1MzE5NCw1MzE5NSw0NDY2NSw0NDY2Nyw0NDY2OCw0NDY2OSw0NDY3Niw0NDY3Nyw0NDY4NCw0NDczMiw0NDczMyw0NDczNCw0NDczNiw0NDc0MCw0NDc0OCw0NDc0OSw0NDc1MSw0NDc1Miw0NDc1Myw0NDc2MCw0NDc2MSw0NDc2''@;'; put 'put ''NCw0NDc3Niw0NDc3OSw0NDc4MSw0NDc4OCw0NDc5Miw0NDc5Niw0NDgwNyw0NDgwOCw0NDgxMyw0NDgxNiw0NDg0NCw0NDg0NSw0NDg0OCw0NDg1MCw0NDg1Miw0NDg2MCw0NDg2MSw0NDg2Myw0NDg2NSw0NDg2Niw0NDg2Nyw0NDg3Miw0NDg3Myw0NDg4MCw0NDg5Miw0NDg5Myw0NDkwMCw0''@;'; put 'put ''NDkwMSw0NDkyMSw0NDkyOCw0NDkzMiw0NDkzNiw0NDk0NCw0NDk0NSw0NDk0OSw0NDk1Niw0NDk4NCw0NDk4NSw0NDk4OCw0NDk5Miw0NDk5OSw0NWUzLDQ1MDAxLDQ1MDAzLDQ1MDA1LDQ1MDA2LDQ1MDEyLDQ1MDIwLDQ1MDMyLDQ1MDMzLDQ1MDQwLDQ1MDQxLDQ1MDQ0LDQ1MDQ4LDQ1MDU2''@;'; put 'put ''LDQ1MDU3LDQ1MDYwLDQ1MDY4LDQ1MDcyLDQ1MDc2LDQ1MDg0LDQ1MDg1LDQ1MDk2LDQ1MTI0LDQ1MTI1LDQ1MTI4LDQ1MTMwLDQ1MTMyLDQ1MTM0LDQ1MTM5LDQ1MTQwLDQ1MTQxLDQ1MTQzLDQ1MTQ1LDUzMTk2LDUzMTk3LDUzMTk4LDUzMTk5LDUzMjAwLDUzMjAxLDUzMjAyLDUzMjAzLDUz''@;'; put 'put ''MjA0LDUzMjA1LDUzMjA2LDUzMjA3LDUzMjA4LDUzMjA5LDUzMjEwLDUzMjExLDUzMjEyLDUzMjEzLDUzMjE0LDUzMjE1LDUzMjE4LDUzMjE5LDUzMjIxLDUzMjIyLDUzMjIzLDUzMjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjI2LDUzMjI3LDUzMjI4LDUzMjI5LDUzMjMw''@;'; put 'put ''LDUzMjMxLDUzMjM0LDUzMjM2LDUzMjM4LDUzMjM5LDUzMjQwLDUzMjQxLDUzMjQyLDUzMjQzLDUzMjQ1LDUzMjQ2LDUzMjQ3LDUzMjQ5LDUzMjUwLDUzMjUxLDUzMjUzLDUzMjU0LDUzMjU1LDUzMjU2LDUzMjU3LDUzMjU4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjU5LDUz''@;'; put 'put ''MjYwLDUzMjYxLDUzMjYyLDUzMjYzLDUzMjY0LDUzMjY2LDUzMjY3LDUzMjY4LDUzMjY5LDUzMjcwLDUzMjcxLDUzMjczLDUzMjc0LDUzMjc1LDUzMjc2LDUzMjc3LDUzMjc4LDUzMjc5LDUzMjgwLDUzMjgxLDUzMjgyLDUzMjgzLDUzMjg0LDUzMjg1LDUzMjg2LDUzMjg3LDUzMjg4LDUzMjg5''@;'; put 'put ''LDUzMjkwLDUzMjkxLDUzMjkyLDQ1MTQ5LDQ1MTgwLDQ1MTgxLDQ1MTg0LDQ1MTg4LDQ1MTk2LDQ1MTk3LDQ1MTk5LDQ1MjAxLDQ1MjA4LDQ1MjA5LDQ1MjEwLDQ1MjEyLDQ1MjE1LDQ1MjE2LDQ1MjE3LDQ1MjE4LDQ1MjI0LDQ1MjI1LDQ1MjI3LDQ1MjI4LDQ1MjI5LDQ1MjMwLDQ1MjMxLDQ1''@;'; put 'put ''MjMzLDQ1MjM1LDQ1MjM2LDQ1MjM3LDQ1MjQwLDQ1MjQ0LDQ1MjUyLDQ1MjUzLDQ1MjU1LDQ1MjU2LDQ1MjU3LDQ1MjY0LDQ1MjY1LDQ1MjY4LDQ1MjcyLDQ1MjgwLDQ1Mjg1LDQ1MzIwLDQ1MzIxLDQ1MzIzLDQ1MzI0LDQ1MzI4LDQ1MzMwLDQ1MzMxLDQ1MzM2LDQ1MzM3LDQ1MzM5LDQ1MzQw''@;'; put 'put ''LDQ1MzQxLDQ1MzQ3LDQ1MzQ4LDQ1MzQ5LDQ1MzUyLDQ1MzU2LDQ1MzY0LDQ1MzY1LDQ1MzY3LDQ1MzY4LDQ1MzY5LDQ1Mzc2LDQ1Mzc3LDQ1MzgwLDQ1Mzg0LDQ1MzkyLDQ1MzkzLDQ1Mzk2LDQ1Mzk3LDQ1NDAwLDQ1NDA0LDQ1NDA4LDQ1NDMyLDQ1NDMzLDQ1NDM2LDQ1NDQwLDQ1NDQyLDQ1''@;'; put 'put ''NDQ4LDQ1NDQ5LDQ1NDUxLDQ1NDUzLDQ1NDU4LDQ1NDU5LDQ1NDYwLDQ1NDY0LDQ1NDY4LDQ1NDgwLDQ1NTE2LDQ1NTIwLDQ1NTI0LDQ1NTMyLDQ1NTMzLDUzMjk0LDUzMjk1LDUzMjk2LDUzMjk3LDUzMjk4LDUzMjk5LDUzMzAyLDUzMzAzLDUzMzA1LDUzMzA2LDUzMzA3LDUzMzA5LDUzMzEw''@;'; put 'put ''LDUzMzExLDUzMzEyLDUzMzEzLDUzMzE0LDUzMzE1LDUzMzE4LDUzMzIwLDUzMzIyLDUzMzIzLDUzMzI0LDUzMzI1LDUzMzI2LDUzMzI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzI5LDUzMzMwLDUzMzMxLDUzMzMzLDUzMzM0LDUzMzM1LDUzMzM3LDUzMzM4LDUzMzM5LDUz''@;'; put 'put ''MzQwLDUzMzQxLDUzMzQyLDUzMzQzLDUzMzQ1LDUzMzQ2LDUzMzQ3LDUzMzQ4LDUzMzQ5LDUzMzUwLDUzMzUxLDUzMzUyLDUzMzUzLDUzMzU0LDUzMzU1LDUzMzU4LDUzMzU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzYxLDUzMzYyLDUzMzYzLDUzMzY1LDUzMzY2LDUzMzY3''@;'; put 'put ''LDUzMzY4LDUzMzY5LDUzMzcwLDUzMzcxLDUzMzc0LDUzMzc1LDUzMzc2LDUzMzc4LDUzMzc5LDUzMzgwLDUzMzgxLDUzMzgyLDUzMzgzLDUzMzg0LDUzMzg1LDUzMzg2LDUzMzg3LDUzMzg4LDUzMzg5LDUzMzkwLDUzMzkxLDUzMzkyLDUzMzkzLDUzMzk0LDUzMzk1LDUzMzk2LDQ1NTM1LDQ1''@;'; put 'put ''NTQ0LDQ1NTQ1LDQ1NTQ4LDQ1NTUyLDQ1NTYxLDQ1NTYzLDQ1NTY1LDQ1NTcyLDQ1NTczLDQ1NTc2LDQ1NTc5LDQ1NTgwLDQ1NTg4LDQ1NTg5LDQ1NTkxLDQ1NTkzLDQ1NjAwLDQ1NjIwLDQ1NjI4LDQ1NjU2LDQ1NjYwLDQ1NjY0LDQ1NjcyLDQ1NjczLDQ1Njg0LDQ1Njg1LDQ1NjkyLDQ1NzAw''@;'; put 'put ''LDQ1NzAxLDQ1NzA1LDQ1NzEyLDQ1NzEzLDQ1NzE2LDQ1NzIwLDQ1NzIxLDQ1NzIyLDQ1NzI4LDQ1NzI5LDQ1NzMxLDQ1NzMzLDQ1NzM0LDQ1NzM4LDQ1NzQwLDQ1NzQ0LDQ1NzQ4LDQ1NzY4LDQ1NzY5LDQ1NzcyLDQ1Nzc2LDQ1Nzc4LDQ1Nzg0LDQ1Nzg1LDQ1Nzg3LDQ1Nzg5LDQ1Nzk0LDQ1''@;'; put 'put ''Nzk2LDQ1Nzk3LDQ1Nzk4LDQ1ODAwLDQ1ODAzLDQ1ODA0LDQ1ODA1LDQ1ODA2LDQ1ODA3LDQ1ODExLDQ1ODEyLDQ1ODEzLDQ1ODE1LDQ1ODE2LDQ1ODE3LDQ1ODE4LDQ1ODE5LDQ1ODIzLDQ1ODI0LDQ1ODI1LDQ1ODI4LDQ1ODMyLDQ1ODQwLDQ1ODQxLDQ1ODQzLDQ1ODQ0LDQ1ODQ1LDQ1ODUy''@;'; put 'put ''LDQ1OTA4LDQ1OTA5LDQ1OTEwLDQ1OTEyLDQ1OTE1LDQ1OTE2LDQ1OTE4LDQ1OTE5LDQ1OTI0LDQ1OTI1LDUzMzk3LDUzMzk4LDUzMzk5LDUzNDAwLDUzNDAxLDUzNDAyLDUzNDAzLDUzNDA0LDUzNDA1LDUzNDA2LDUzNDA3LDUzNDA4LDUzNDA5LDUzNDEwLDUzNDExLDUzNDE0LDUzNDE1LDUz''@;'; put 'put ''NDE3LDUzNDE4LDUzNDE5LDUzNDIxLDUzNDIyLDUzNDIzLDUzNDI0LDUzNDI1LDUzNDI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDI3LDUzNDMwLDUzNDMyLDUzNDM0LDUzNDM1LDUzNDM2LDUzNDM3LDUzNDM4LDUzNDM5LDUzNDQyLDUzNDQzLDUzNDQ1LDUzNDQ2LDUzNDQ3''@;'; put 'put ''LDUzNDUwLDUzNDUxLDUzNDUyLDUzNDUzLDUzNDU0LDUzNDU1LDUzNDU4LDUzNDYyLDUzNDYzLDUzNDY0LDUzNDY1LDUzNDY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDY3LDUzNDcwLDUzNDcxLDUzNDczLDUzNDc0LDUzNDc1LDUzNDc3LDUzNDc4LDUzNDc5LDUzNDgwLDUz''@;'; put 'put ''NDgxLDUzNDgyLDUzNDgzLDUzNDg2LDUzNDkwLDUzNDkxLDUzNDkyLDUzNDkzLDUzNDk0LDUzNDk1LDUzNDk3LDUzNDk4LDUzNDk5LDUzNTAwLDUzNTAxLDUzNTAyLDUzNTAzLDUzNTA0LDUzNTA1LDUzNTA2LDUzNTA3LDUzNTA4LDQ1OTI3LDQ1OTI5LDQ1OTMxLDQ1OTM0LDQ1OTM2LDQ1OTM3''@;'; put 'put ''LDQ1OTQwLDQ1OTQ0LDQ1OTUyLDQ1OTUzLDQ1OTU1LDQ1OTU2LDQ1OTU3LDQ1OTY0LDQ1OTY4LDQ1OTcyLDQ1OTg0LDQ1OTg1LDQ1OTkyLDQ1OTk2LDQ2MDIwLDQ2MDIxLDQ2MDI0LDQ2MDI3LDQ2MDI4LDQ2MDMwLDQ2MDMyLDQ2MDM2LDQ2MDM3LDQ2MDM5LDQ2MDQxLDQ2MDQzLDQ2MDQ1LDQ2''@;'; put 'put ''MDQ4LDQ2MDUyLDQ2MDU2LDQ2MDc2LDQ2MDk2LDQ2MTA0LDQ2MTA4LDQ2MTEyLDQ2MTIwLDQ2MTIxLDQ2MTIzLDQ2MTMyLDQ2MTYwLDQ2MTYxLDQ2MTY0LDQ2MTY4LDQ2MTc2LDQ2MTc3LDQ2MTc5LDQ2MTgxLDQ2MTg4LDQ2MjA4LDQ2MjE2LDQ2MjM3LDQ2MjQ0LDQ2MjQ4LDQ2MjUyLDQ2MjYx''@;'; put 'put ''LDQ2MjYzLDQ2MjY1LDQ2MjcyLDQ2Mjc2LDQ2MjgwLDQ2Mjg4LDQ2MjkzLDQ2MzAwLDQ2MzAxLDQ2MzA0LDQ2MzA3LDQ2MzA4LDQ2MzEwLDQ2MzE2LDQ2MzE3LDQ2MzE5LDQ2MzIxLDQ2MzI4LDQ2MzU2LDQ2MzU3LDQ2MzYwLDQ2MzYzLDQ2MzY0LDQ2MzcyLDQ2MzczLDQ2Mzc1LDQ2Mzc2LDQ2''@;'; put 'put ''Mzc3LDQ2Mzc4LDQ2Mzg0LDQ2Mzg1LDQ2Mzg4LDQ2MzkyLDUzNTA5LDUzNTEwLDUzNTExLDUzNTEyLDUzNTEzLDUzNTE0LDUzNTE1LDUzNTE2LDUzNTE4LDUzNTE5LDUzNTIwLDUzNTIxLDUzNTIyLDUzNTIzLDUzNTI0LDUzNTI1LDUzNTI2LDUzNTI3LDUzNTI4LDUzNTI5LDUzNTMwLDUzNTMx''@;'; put 'put ''LDUzNTMyLDUzNTMzLDUzNTM0LDUzNTM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTM2LDUzNTM3LDUzNTM4LDUzNTM5LDUzNTQwLDUzNTQxLDUzNTQyLDUzNTQzLDUzNTQ0LDUzNTQ1LDUzNTQ2LDUzNTQ3LDUzNTQ4LDUzNTQ5LDUzNTUwLDUzNTUxLDUzNTU0LDUzNTU1LDUz''@;'; put 'put ''NTU3LDUzNTU4LDUzNTU5LDUzNTYxLDUzNTYzLDUzNTY0LDUzNTY1LDUzNTY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTY3LDUzNTcwLDUzNTc0LDUzNTc1LDUzNTc2LDUzNTc3LDUzNTc4LDUzNTc5LDUzNTgyLDUzNTgzLDUzNTg1LDUzNTg2LDUzNTg3LDUzNTg5LDUzNTkw''@;'; put 'put ''LDUzNTkxLDUzNTkyLDUzNTkzLDUzNTk0LDUzNTk1LDUzNTk4LDUzNjAwLDUzNjAyLDUzNjAzLDUzNjA0LDUzNjA1LDUzNjA2LDUzNjA3LDUzNjA5LDUzNjEwLDUzNjExLDUzNjEzLDQ2NDAwLDQ2NDAxLDQ2NDAzLDQ2NDA0LDQ2NDA1LDQ2NDExLDQ2NDEyLDQ2NDEzLDQ2NDE2LDQ2NDIwLDQ2''@;'; put 'put ''NDI4LDQ2NDI5LDQ2NDMxLDQ2NDMyLDQ2NDMzLDQ2NDk2LDQ2NDk3LDQ2NTAwLDQ2NTA0LDQ2NTA2LDQ2NTA3LDQ2NTEyLDQ2NTEzLDQ2NTE1LDQ2NTE2LDQ2NTE3LDQ2NTIzLDQ2NTI0LDQ2NTI1LDQ2NTI4LDQ2NTMyLDQ2NTQwLDQ2NTQxLDQ2NTQzLDQ2NTQ0LDQ2NTQ1LDQ2NTUyLDQ2NTcy''@;'; put 'put ''LDQ2NjA4LDQ2NjA5LDQ2NjEyLDQ2NjE2LDQ2NjI5LDQ2NjM2LDQ2NjQ0LDQ2NjY0LDQ2NjkyLDQ2Njk2LDQ2NzQ4LDQ2NzQ5LDQ2NzUyLDQ2NzU2LDQ2NzYzLDQ2NzY0LDQ2NzY5LDQ2ODA0LDQ2ODMyLDQ2ODM2LDQ2ODQwLDQ2ODQ4LDQ2ODQ5LDQ2ODUzLDQ2ODg4LDQ2ODg5LDQ2ODkyLDQ2''@;'; put 'put ''ODk1LDQ2ODk2LDQ2OTA0LDQ2OTA1LDQ2OTA3LDQ2OTE2LDQ2OTIwLDQ2OTI0LDQ2OTMyLDQ2OTMzLDQ2OTQ0LDQ2OTQ4LDQ2OTUyLDQ2OTYwLDQ2OTYxLDQ2OTYzLDQ2OTY1LDQ2OTcyLDQ2OTczLDQ2OTc2LDQ2OTgwLDQ2OTg4LDQ2OTg5LDQ2OTkxLDQ2OTkyLDQ2OTkzLDQ2OTk0LDQ2OTk4''@;'; put 'put ''LDQ2OTk5LDUzNjE0LDUzNjE1LDUzNjE2LDUzNjE3LDUzNjE4LDUzNjE5LDUzNjIwLDUzNjIxLDUzNjIyLDUzNjIzLDUzNjI0LDUzNjI1LDUzNjI2LDUzNjI3LDUzNjI5LDUzNjMwLDUzNjMxLDUzNjMyLDUzNjMzLDUzNjM0LDUzNjM1LDUzNjM3LDUzNjM4LDUzNjM5LDUzNjQxLDUzNjQyLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjQzLDUzNjQ0LDUzNjQ1LDUzNjQ2LDUzNjQ3LDUzNjQ4LDUzNjQ5LDUzNjUwLDUzNjUxLDUzNjUyLDUzNjUzLDUzNjU0LDUzNjU1LDUzNjU2LDUzNjU3LDUzNjU4LDUzNjU5LDUzNjYwLDUzNjYxLDUzNjYyLDUzNjYzLDUzNjY2LDUzNjY3''@;'; put 'put ''LDUzNjY5LDUzNjcwLDUzNjcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjczLDUzNjc0LDUzNjc1LDUzNjc2LDUzNjc3LDUzNjc4LDUzNjc5LDUzNjgyLDUzNjg0LDUzNjg2LDUzNjg3LDUzNjg4LDUzNjg5LDUzNjkxLDUzNjkzLDUzNjk0LDUzNjk1LDUzNjk3LDUzNjk4LDUz''@;'; put 'put ''Njk5LDUzNzAwLDUzNzAxLDUzNzAyLDUzNzAzLDUzNzA0LDUzNzA1LDUzNzA2LDUzNzA3LDUzNzA4LDUzNzA5LDUzNzEwLDUzNzExLDQ3ZTMsNDcwMDEsNDcwMDQsNDcwMDgsNDcwMTYsNDcwMTcsNDcwMTksNDcwMjAsNDcwMjEsNDcwMjgsNDcwMjksNDcwMzIsNDcwNDcsNDcwNDksNDcwODQs''@;'; put 'put ''NDcwODUsNDcwODgsNDcwOTIsNDcxMDAsNDcxMDEsNDcxMDMsNDcxMDQsNDcxMDUsNDcxMTEsNDcxMTIsNDcxMTMsNDcxMTYsNDcxMjAsNDcxMjgsNDcxMjksNDcxMzEsNDcxMzMsNDcxNDAsNDcxNDEsNDcxNDQsNDcxNDgsNDcxNTYsNDcxNTcsNDcxNTksNDcxNjAsNDcxNjEsNDcxNjgsNDcx''@;'; put 'put ''NzIsNDcxODUsNDcxODcsNDcxOTYsNDcxOTcsNDcyMDAsNDcyMDQsNDcyMTIsNDcyMTMsNDcyMTUsNDcyMTcsNDcyMjQsNDcyMjgsNDcyNDUsNDcyNzIsNDcyODAsNDcyODQsNDcyODgsNDcyOTYsNDcyOTcsNDcyOTksNDczMDEsNDczMDgsNDczMTIsNDczMTYsNDczMjUsNDczMjcsNDczMjks''@;'; put 'put ''NDczMzYsNDczMzcsNDczNDAsNDczNDQsNDczNTIsNDczNTMsNDczNTUsNDczNTcsNDczNjQsNDczODQsNDczOTIsNDc0MjAsNDc0MjEsNDc0MjQsNDc0MjgsNDc0MzYsNDc0MzksNDc0NDEsNDc0NDgsNDc0NDksNDc0NTIsNDc0NTYsNDc0NjQsNDc0NjUsNTM3MTIsNTM3MTMsNTM3MTQsNTM3''@;'; put 'put ''MTUsNTM3MTYsNTM3MTcsNTM3MTgsNTM3MTksNTM3MjEsNTM3MjIsNTM3MjMsNTM3MjQsNTM3MjUsNTM3MjYsNTM3MjcsNTM3MjgsNTM3MjksNTM3MzAsNTM3MzEsNTM3MzIsNTM3MzMsNTM3MzQsNTM3MzUsNTM3MzYsNTM3MzcsNTM3MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''NTM3MzksNTM3NDAsNTM3NDEsNTM3NDIsNTM3NDMsNTM3NDQsNTM3NDUsNTM3NDYsNTM3NDcsNTM3NDksNTM3NTAsNTM3NTEsNTM3NTMsNTM3NTQsNTM3NTUsNTM3NTYsNTM3NTcsNTM3NTgsNTM3NTksNTM3NjAsNTM3NjEsNTM3NjIsNTM3NjMsNTM3NjQsNTM3NjUsNTM3NjYsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsNTM3NjgsNTM3NzAsNTM3NzEsNTM3NzIsNTM3NzMsNTM3NzQsNTM3NzUsNTM3NzcsNTM3NzgsNTM3NzksNTM3ODAsNTM3ODEsNTM3ODIsNTM3ODMsNTM3ODQsNTM3ODUsNTM3ODYsNTM3ODcsNTM3ODgsNTM3ODksNTM3OTAsNTM3OTEsNTM3OTIsNTM3OTMs''@;'; put 'put ''NTM3OTQsNTM3OTUsNTM3OTYsNTM3OTcsNTM3OTgsNTM3OTksNTM4MDAsNTM4MDEsNDc0NjcsNDc0NjksNDc0NzYsNDc0NzcsNDc0ODAsNDc0ODQsNDc0OTIsNDc0OTMsNDc0OTUsNDc0OTcsNDc0OTgsNDc1MDEsNDc1MDIsNDc1MzIsNDc1MzMsNDc1MzYsNDc1NDAsNDc1NDgsNDc1NDksNDc1''@;'; put 'put ''NTEsNDc1NTMsNDc1NjAsNDc1NjEsNDc1NjQsNDc1NjYsNDc1NjcsNDc1NjgsNDc1NjksNDc1NzAsNDc1NzYsNDc1NzcsNDc1NzksNDc1ODEsNDc1ODIsNDc1ODUsNDc1ODcsNDc1ODgsNDc1ODksNDc1OTIsNDc1OTYsNDc2MDQsNDc2MDUsNDc2MDcsNDc2MDgsNDc2MDksNDc2MTAsNDc2MTYs''@;'; put 'put ''NDc2MTcsNDc2MjQsNDc2MzcsNDc2NzIsNDc2NzMsNDc2NzYsNDc2ODAsNDc2ODIsNDc2ODgsNDc2ODksNDc2OTEsNDc2OTMsNDc2OTQsNDc2OTksNDc3MDAsNDc3MDEsNDc3MDQsNDc3MDgsNDc3MTYsNDc3MTcsNDc3MTksNDc3MjAsNDc3MjEsNDc3MjgsNDc3MjksNDc3MzIsNDc3MzYsNDc3''@;'; put 'put ''NDcsNDc3NDgsNDc3NDksNDc3NTEsNDc3NTYsNDc3ODQsNDc3ODUsNDc3ODcsNDc3ODgsNDc3OTIsNDc3OTQsNDc4MDAsNDc4MDEsNDc4MDMsNDc4MDUsNDc4MTIsNDc4MTYsNDc4MzIsNDc4MzMsNDc4NjgsNTM4MDIsNTM4MDMsNTM4MDYsNTM4MDcsNTM4MDksNTM4MTAsNTM4MTEsNTM4MTMs''@;'; put 'put ''NTM4MTQsNTM4MTUsNTM4MTYsNTM4MTcsNTM4MTgsNTM4MTksNTM4MjIsNTM4MjQsNTM4MjYsNTM4MjcsNTM4MjgsNTM4MjksNTM4MzAsNTM4MzEsNTM4MzMsNTM4MzQsNTM4MzUsNTM4MzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4MzcsNTM4MzgsNTM4MzksNTM4NDAsNTM4''@;'; put 'put ''NDEsNTM4NDIsNTM4NDMsNTM4NDQsNTM4NDUsNTM4NDYsNTM4NDcsNTM4NDgsNTM4NDksNTM4NTAsNTM4NTEsNTM4NTMsNTM4NTQsNTM4NTUsNTM4NTYsNTM4NTcsNTM4NTgsNTM4NTksNTM4NjEsNTM4NjIsNTM4NjMsNTM4NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4NjUs''@;'; put 'put ''NTM4NjYsNTM4NjcsNTM4NjgsNTM4NjksNTM4NzAsNTM4NzEsNTM4NzIsNTM4NzMsNTM4NzQsNTM4NzUsNTM4NzYsNTM4NzcsNTM4NzgsNTM4NzksNTM4ODAsNTM4ODEsNTM4ODIsNTM4ODMsNTM4ODQsNTM4ODUsNTM4ODYsNTM4ODcsNTM4OTAsNTM4OTEsNTM4OTMsNTM4OTQsNTM4OTUsNTM4''@;'; put 'put ''OTcsNTM4OTgsNTM4OTksNTM5MDAsNDc4NzIsNDc4NzYsNDc4ODUsNDc4ODcsNDc4ODksNDc4OTYsNDc5MDAsNDc5MDQsNDc5MTMsNDc5MTUsNDc5MjQsNDc5MjUsNDc5MjYsNDc5MjgsNDc5MzEsNDc5MzIsNDc5MzMsNDc5MzQsNDc5NDAsNDc5NDEsNDc5NDMsNDc5NDUsNDc5NDksNDc5NTEs''@;'; put 'put ''NDc5NTIsNDc5NTYsNDc5NjAsNDc5NjksNDc5NzEsNDc5ODAsNDgwMDgsNDgwMTIsNDgwMTYsNDgwMzYsNDgwNDAsNDgwNDQsNDgwNTIsNDgwNTUsNDgwNjQsNDgwNjgsNDgwNzIsNDgwODAsNDgwODMsNDgxMjAsNDgxMjEsNDgxMjQsNDgxMjcsNDgxMjgsNDgxMzAsNDgxMzYsNDgxMzcsNDgx''@;'; put 'put ''MzksNDgxNDAsNDgxNDEsNDgxNDMsNDgxNDUsNDgxNDgsNDgxNDksNDgxNTAsNDgxNTEsNDgxNTIsNDgxNTUsNDgxNTYsNDgxNTcsNDgxNTgsNDgxNTksNDgxNjQsNDgxNjUsNDgxNjcsNDgxNjksNDgxNzMsNDgxNzYsNDgxNzcsNDgxODAsNDgxODQsNDgxOTIsNDgxOTMsNDgxOTUsNDgxOTYs''@;'; put 'put ''NDgxOTcsNDgyMDEsNDgyMDQsNDgyMDUsNDgyMDgsNDgyMjEsNDgyNjAsNDgyNjEsNDgyNjQsNDgyNjcsNDgyNjgsNDgyNzAsNDgyNzYsNDgyNzcsNDgyNzksNTM5MDEsNTM5MDIsNTM5MDMsNTM5MDYsNTM5MDcsNTM5MDgsNTM5MTAsNTM5MTEsNTM5MTIsNTM5MTMsNTM5MTQsNTM5MTUsNTM5''@;'; put 'put ''MTcsNTM5MTgsNTM5MTksNTM5MjEsNTM5MjIsNTM5MjMsNTM5MjUsNTM5MjYsNTM5MjcsNTM5MjgsNTM5MjksNTM5MzAsNTM5MzEsNTM5MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM5MzQsNTM5MzUsNTM5MzYsNTM5MzgsNTM5MzksNTM5NDAsNTM5NDEsNTM5NDIsNTM5NDMs''@;'; put 'put ''NTM5NDYsNTM5NDcsNTM5NDksNTM5NTAsNTM5NTMsNTM5NTUsNTM5NTYsNTM5NTcsNTM5NTgsNTM5NTksNTM5NjIsNTM5NjQsNTM5NjUsNTM5NjYsNTM5NjcsNTM5NjgsNTM5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM5NzAsNTM5NzEsNTM5NzMsNTM5NzQsNTM5NzUsNTM5''@;'; put 'put ''NzcsNTM5NzgsNTM5NzksNTM5ODEsNTM5ODIsNTM5ODMsNTM5ODQsNTM5ODUsNTM5ODYsNTM5ODcsNTM5OTAsNTM5OTEsNTM5OTIsNTM5OTMsNTM5OTQsNTM5OTUsNTM5OTYsNTM5OTcsNTM5OTgsNTM5OTksNTQwMDIsNTQwMDMsNTQwMDUsNTQwMDYsNTQwMDcsNTQwMDksNTQwMTAsNDgyODEs''@;'; put 'put ''NDgyODIsNDgyODgsNDgyODksNDgyOTIsNDgyOTUsNDgyOTYsNDgzMDQsNDgzMDUsNDgzMDcsNDgzMDgsNDgzMDksNDgzMTYsNDgzMTcsNDgzMjAsNDgzMjQsNDgzMzMsNDgzMzUsNDgzMzYsNDgzMzcsNDgzNDEsNDgzNDQsNDgzNDgsNDgzNzIsNDgzNzMsNDgzNzQsNDgzNzYsNDgzODAsNDgz''@;'; put 'put ''ODgsNDgzODksNDgzOTEsNDgzOTMsNDg0MDAsNDg0MDQsNDg0MjAsNDg0MjgsNDg0NDgsNDg0NTYsNDg0NTcsNDg0NjAsNDg0NjQsNDg0NzIsNDg0NzMsNDg0ODQsNDg0ODgsNDg1MTIsNDg1MTMsNDg1MTYsNDg1MTksNDg1MjAsNDg1MjEsNDg1MjIsNDg1MjgsNDg1MjksNDg1MzEsNDg1MzMs''@;'; put 'put ''NDg1MzcsNDg1MzgsNDg1NDAsNDg1NDgsNDg1NjAsNDg1NjgsNDg1OTYsNDg1OTcsNDg2MDAsNDg2MDQsNDg2MTcsNDg2MjQsNDg2MjgsNDg2MzIsNDg2NDAsNDg2NDMsNDg2NDUsNDg2NTIsNDg2NTMsNDg2NTYsNDg2NjAsNDg2NjgsNDg2NjksNDg2NzEsNDg3MDgsNDg3MDksNDg3MTIsNDg3''@;'; put 'put ''MTYsNDg3MTgsNDg3MjQsNDg3MjUsNDg3MjcsNDg3MjksNDg3MzAsNDg3MzEsNDg3MzYsNDg3MzcsNDg3NDAsNTQwMTEsNTQwMTIsNTQwMTMsNTQwMTQsNTQwMTUsNTQwMTgsNTQwMjAsNTQwMjIsNTQwMjMsNTQwMjQsNTQwMjUsNTQwMjYsNTQwMjcsNTQwMzEsNTQwMzMsNTQwMzQsNTQwMzUs''@;'; put 'put ''NTQwMzcsNTQwMzksNTQwNDAsNTQwNDEsNTQwNDIsNTQwNDMsNTQwNDYsNTQwNTAsNTQwNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQwNTIsNTQwNTQsNTQwNTUsNTQwNTgsNTQwNTksNTQwNjEsNTQwNjIsNTQwNjMsNTQwNjUsNTQwNjYsNTQwNjcsNTQwNjgsNTQwNjksNTQw''@;'; put 'put ''NzAsNTQwNzEsNTQwNzQsNTQwNzgsNTQwNzksNTQwODAsNTQwODEsNTQwODIsNTQwODMsNTQwODYsNTQwODcsNTQwODgsNTQwODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQwOTAsNTQwOTEsNTQwOTIsNTQwOTMsNTQwOTQsNTQwOTUsNTQwOTYsNTQwOTcsNTQwOTgsNTQwOTks''@;'; put 'put ''NTQxMDAsNTQxMDEsNTQxMDIsNTQxMDMsNTQxMDQsNTQxMDUsNTQxMDYsNTQxMDcsNTQxMDgsNTQxMDksNTQxMTAsNTQxMTEsNTQxMTIsNTQxMTMsNTQxMTQsNTQxMTUsNTQxMTYsNTQxMTcsNTQxMTgsNTQxMTksNTQxMjAsNTQxMjEsNDg3NDQsNDg3NDYsNDg3NTIsNDg3NTMsNDg3NTUsNDg3''@;'; put 'put ''NTYsNDg3NTcsNDg3NjMsNDg3NjQsNDg3NjUsNDg3NjgsNDg3NzIsNDg3ODAsNDg3ODEsNDg3ODMsNDg3ODQsNDg3ODUsNDg3OTIsNDg3OTMsNDg4MDgsNDg4NDgsNDg4NDksNDg4NTIsNDg4NTUsNDg4NTYsNDg4NjQsNDg4NjcsNDg4NjgsNDg4NjksNDg4NzYsNDg4OTcsNDg5MDQsNDg5MDUs''@;'; put 'put ''NDg5MjAsNDg5MjEsNDg5MjMsNDg5MjQsNDg5MjUsNDg5NjAsNDg5NjEsNDg5NjQsNDg5NjgsNDg5NzYsNDg5NzcsNDg5ODEsNDkwNDQsNDkwNzIsNDkwOTMsNDkxMDAsNDkxMDEsNDkxMDQsNDkxMDgsNDkxMTYsNDkxMTksNDkxMjEsNDkyMTIsNDkyMzMsNDkyNDAsNDkyNDQsNDkyNDgsNDky''@;'; put 'put ''NTYsNDkyNTcsNDkyOTYsNDkyOTcsNDkzMDAsNDkzMDQsNDkzMTIsNDkzMTMsNDkzMTUsNDkzMTcsNDkzMjQsNDkzMjUsNDkzMjcsNDkzMjgsNDkzMzEsNDkzMzIsNDkzMzMsNDkzMzQsNDkzNDAsNDkzNDEsNDkzNDMsNDkzNDQsNDkzNDUsNDkzNDksNDkzNTIsNDkzNTMsNDkzNTYsNDkzNjAs''@;'; put 'put ''NDkzNjgsNDkzNjksNDkzNzEsNDkzNzIsNDkzNzMsNDkzODAsNTQxMjIsNTQxMjMsNTQxMjQsNTQxMjUsNTQxMjYsNTQxMjcsNTQxMjgsNTQxMjksNTQxMzAsNTQxMzEsNTQxMzIsNTQxMzMsNTQxMzQsNTQxMzUsNTQxMzYsNTQxMzcsNTQxMzgsNTQxMzksNTQxNDIsNTQxNDMsNTQxNDUsNTQx''@;'; put 'put ''NDYsNTQxNDcsNTQxNDksNTQxNTAsNTQxNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxNTIsNTQxNTMsNTQxNTQsNTQxNTUsNTQxNTgsNTQxNjIsNTQxNjMsNTQxNjQsNTQxNjUsNTQxNjYsNTQxNjcsNTQxNzAsNTQxNzEsNTQxNzMsNTQxNzQsNTQxNzUsNTQxNzcsNTQxNzgs''@;'; put 'put ''NTQxNzksNTQxODAsNTQxODEsNTQxODIsNTQxODMsNTQxODYsNTQxODgsNTQxOTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxOTEsNTQxOTIsNTQxOTMsNTQxOTQsNTQxOTUsNTQxOTcsNTQxOTgsNTQxOTksNTQyMDEsNTQyMDIsNTQyMDMsNTQyMDUsNTQyMDYsNTQyMDcsNTQy''@;'; put 'put ''MDgsNTQyMDksNTQyMTAsNTQyMTEsNTQyMTQsNTQyMTUsNTQyMTgsNTQyMTksNTQyMjAsNTQyMjEsNTQyMjIsNTQyMjMsNTQyMjUsNTQyMjYsNTQyMjcsNTQyMjgsNTQyMjksNTQyMzAsNDkzODEsNDkzODQsNDkzODgsNDkzOTYsNDkzOTcsNDkzOTksNDk0MDEsNDk0MDgsNDk0MTIsNDk0MTYs''@;'; put 'put ''NDk0MjQsNDk0MjksNDk0MzYsNDk0MzcsNDk0MzgsNDk0MzksNDk0NDAsNDk0NDMsNDk0NDQsNDk0NDYsNDk0NDcsNDk0NTIsNDk0NTMsNDk0NTUsNDk0NTYsNDk0NTcsNDk0NjIsNDk0NjQsNDk0NjUsNDk0NjgsNDk0NzIsNDk0ODAsNDk0ODEsNDk0ODMsNDk0ODQsNDk0ODUsNDk0OTIsNDk0''@;'; put 'put ''OTMsNDk0OTYsNDk1MDAsNDk1MDgsNDk1MDksNDk1MTEsNDk1MTIsNDk1MTMsNDk1MjAsNDk1MjQsNDk1MjgsNDk1NDEsNDk1NDgsNDk1NDksNDk1NTAsNDk1NTIsNDk1NTYsNDk1NTgsNDk1NjQsNDk1NjUsNDk1NjcsNDk1NjksNDk1NzMsNDk1NzYsNDk1NzcsNDk1ODAsNDk1ODQsNDk1OTcs''@;'; put 'put ''NDk2MDQsNDk2MDgsNDk2MTIsNDk2MjAsNDk2MjMsNDk2MjQsNDk2MzIsNDk2MzYsNDk2NDAsNDk2NDgsNDk2NDksNDk2NTEsNDk2NjAsNDk2NjEsNDk2NjQsNDk2NjgsNDk2NzYsNDk2NzcsNDk2NzksNDk2ODEsNDk2ODgsNDk2ODksNDk2OTIsNDk2OTUsNDk2OTYsNDk3MDQsNDk3MDUsNDk3''@;'; put 'put ''MDcsNDk3MDksNTQyMzEsNTQyMzMsNTQyMzQsNTQyMzUsNTQyMzYsNTQyMzcsNTQyMzgsNTQyMzksNTQyNDAsNTQyNDIsNTQyNDQsNTQyNDUsNTQyNDYsNTQyNDcsNTQyNDgsNTQyNDksNTQyNTAsNTQyNTEsNTQyNTQsNTQyNTUsNTQyNTcsNTQyNTgsNTQyNTksNTQyNjEsNTQyNjIsNTQyNjMs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyNjQsNTQyNjUsNTQyNjYsNTQyNjcsNTQyNzAsNTQyNzIsNTQyNzQsNTQyNzUsNTQyNzYsNTQyNzcsNTQyNzgsNTQyNzksNTQyODEsNTQyODIsNTQyODMsNTQyODQsNTQyODUsNTQyODYsNTQyODcsNTQyODgsNTQyODksNTQyOTAsNTQy''@;'; put 'put ''OTEsNTQyOTIsNTQyOTMsNTQyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyOTUsNTQyOTYsNTQyOTcsNTQyOTgsNTQyOTksNTQzMDAsNTQzMDIsNTQzMDMsNTQzMDQsNTQzMDUsNTQzMDYsNTQzMDcsNTQzMDgsNTQzMDksNTQzMTAsNTQzMTEsNTQzMTIsNTQzMTMsNTQzMTQs''@;'; put 'put ''NTQzMTUsNTQzMTYsNTQzMTcsNTQzMTgsNTQzMTksNTQzMjAsNTQzMjEsNTQzMjIsNTQzMjMsNTQzMjQsNTQzMjUsNTQzMjYsNTQzMjcsNDk3MTEsNDk3MTMsNDk3MTQsNDk3MTYsNDk3MzYsNDk3NDQsNDk3NDUsNDk3NDgsNDk3NTIsNDk3NjAsNDk3NjUsNDk3NzIsNDk3NzMsNDk3NzYsNDk3''@;'; put 'put ''ODAsNDk3ODgsNDk3ODksNDk3OTEsNDk3OTMsNDk4MDAsNDk4MDEsNDk4MDgsNDk4MTYsNDk4MTksNDk4MjEsNDk4MjgsNDk4MjksNDk4MzIsNDk4MzYsNDk4MzcsNDk4NDQsNDk4NDUsNDk4NDcsNDk4NDksNDk4ODQsNDk4ODUsNDk4ODgsNDk4OTEsNDk4OTIsNDk4OTksNDk5MDAsNDk5MDEs''@;'; put 'put ''NDk5MDMsNDk5MDUsNDk5MTAsNDk5MTIsNDk5MTMsNDk5MTUsNDk5MTYsNDk5MjAsNDk5MjgsNDk5MjksNDk5MzIsNDk5MzMsNDk5MzksNDk5NDAsNDk5NDEsNDk5NDQsNDk5NDgsNDk5NTYsNDk5NTcsNDk5NjAsNDk5NjEsNDk5ODksNTAwMjQsNTAwMjUsNTAwMjgsNTAwMzIsNTAwMzQsNTAw''@;'; put 'put ''NDAsNTAwNDEsNTAwNDQsNTAwNDUsNTAwNTIsNTAwNTYsNTAwNjAsNTAxMTIsNTAxMzYsNTAxMzcsNTAxNDAsNTAxNDMsNTAxNDQsNTAxNDYsNTAxNTIsNTAxNTMsNTAxNTcsNTAxNjQsNTAxNjUsNTAxNjgsNTAxODQsNTAxOTIsNTAyMTIsNTAyMjAsNTAyMjQsNTQzMjgsNTQzMjksNTQzMzAs''@;'; put 'put ''NTQzMzEsNTQzMzIsNTQzMzMsNTQzMzQsNTQzMzUsNTQzMzcsNTQzMzgsNTQzMzksNTQzNDEsNTQzNDIsNTQzNDMsNTQzNDQsNTQzNDUsNTQzNDYsNTQzNDcsNTQzNDgsNTQzNDksNTQzNTAsNTQzNTEsNTQzNTIsNTQzNTMsNTQzNTQsNTQzNTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsNTQzNTYsNTQzNTcsNTQzNTgsNTQzNTksNTQzNjAsNTQzNjEsNTQzNjIsNTQzNjMsNTQzNjUsNTQzNjYsNTQzNjcsNTQzNjksNTQzNzAsNTQzNzEsNTQzNzMsNTQzNzQsNTQzNzUsNTQzNzYsNTQzNzcsNTQzNzgsNTQzNzksNTQzODAsNTQzODIsNTQzODQsNTQzODUsNTQzODYsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQzODcsNTQzODgsNTQzODksNTQzOTAsNTQzOTEsNTQzOTQsNTQzOTUsNTQzOTcsNTQzOTgsNTQ0MDEsNTQ0MDMsNTQ0MDQsNTQ0MDUsNTQ0MDYsNTQ0MDcsNTQ0MTAsNTQ0MTIsNTQ0MTQsNTQ0MTUsNTQ0MTYsNTQ0MTcsNTQ0MTgsNTQ0MTksNTQ0''@;'; put 'put ''MjEsNTQ0MjIsNTQ0MjMsNTQ0MjQsNTQ0MjUsNTQ0MjYsNTQ0MjcsNTQ0MjgsNTQ0MjksNTAyMjgsNTAyMzYsNTAyMzcsNTAyNDgsNTAyNzYsNTAyNzcsNTAyODAsNTAyODQsNTAyOTIsNTAyOTMsNTAyOTcsNTAzMDQsNTAzMjQsNTAzMzIsNTAzNjAsNTAzNjQsNTA0MDksNTA0MTYsNTA0MTcs''@;'; put 'put ''NTA0MjAsNTA0MjQsNTA0MjYsNTA0MzEsNTA0MzIsNTA0MzMsNTA0NDQsNTA0NDgsNTA0NTIsNTA0NjAsNTA0NzIsNTA0NzMsNTA0NzYsNTA0ODAsNTA0ODgsNTA0ODksNTA0OTEsNTA0OTMsNTA1MDAsNTA1MDEsNTA1MDQsNTA1MDUsNTA1MDYsNTA1MDgsNTA1MDksNTA1MTAsNTA1MTUsNTA1''@;'; put 'put ''MTYsNTA1MTcsNTA1MTksNTA1MjAsNTA1MjEsNTA1MjUsNTA1MjYsNTA1MjgsNTA1MjksNTA1MzIsNTA1MzYsNTA1NDQsNTA1NDUsNTA1NDcsNTA1NDgsNTA1NDksNTA1NTYsNTA1NTcsNTA1NjAsNTA1NjQsNTA1NjcsNTA1NzIsNTA1NzMsNTA1NzUsNTA1NzcsNTA1ODEsNTA1ODMsNTA1ODQs''@;'; put 'put ''NTA1ODgsNTA1OTIsNTA2MDEsNTA2MTIsNTA2MTMsNTA2MTYsNTA2MTcsNTA2MTksNTA2MjAsNTA2MjEsNTA2MjIsNTA2MjgsNTA2MjksNTA2MzAsNTA2MzEsNTA2MzIsNTA2MzMsNTA2MzQsNTA2MzYsNTA2MzgsNTQ0MzAsNTQ0MzEsNTQ0MzIsNTQ0MzMsNTQ0MzQsNTQ0MzUsNTQ0MzYsNTQ0''@;'; put 'put ''MzcsNTQ0MzgsNTQ0MzksNTQ0NDAsNTQ0NDIsNTQ0NDMsNTQ0NDQsNTQ0NDUsNTQ0NDYsNTQ0NDcsNTQ0NDgsNTQ0NDksNTQ0NTAsNTQ0NTEsNTQ0NTIsNTQ0NTMsNTQ0NTQsNTQ0NTUsNTQ0NTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0NTcsNTQ0NTgsNTQ0NTksNTQ0NjAs''@;'; put 'put ''NTQ0NjEsNTQ0NjIsNTQ0NjMsNTQ0NjQsNTQ0NjUsNTQ0NjYsNTQ0NjcsNTQ0NjgsNTQ0NjksNTQ0NzAsNTQ0NzEsNTQ0NzIsNTQ0NzMsNTQ0NzQsNTQ0NzUsNTQ0NzcsNTQ0NzgsNTQ0NzksNTQ0ODEsNTQ0ODIsNTQ0ODMsNTQ0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0''@;'; put 'put ''ODYsNTQ0ODcsNTQ0ODgsNTQ0ODksNTQ0OTAsNTQ0OTEsNTQ0OTMsNTQ0OTQsNTQ0OTYsNTQ0OTcsNTQ0OTgsNTQ0OTksNTQ1MDAsNTQ1MDEsNTQ1MDIsNTQ1MDMsNTQ1MDUsNTQ1MDYsNTQ1MDcsNTQ1MDksNTQ1MTAsNTQ1MTEsNTQ1MTMsNTQ1MTQsNTQ1MTUsNTQ1MTYsNTQ1MTcsNTQ1MTgs''@;'; put 'put ''NTQ1MTksNTQ1MjEsNTQ1MjIsNTQ1MjQsNTA2NDAsNTA2NDEsNTA2NDQsNTA2NDgsNTA2NTYsNTA2NTcsNTA2NTksNTA2NjEsNTA2NjgsNTA2NjksNTA2NzAsNTA2NzIsNTA2NzYsNTA2NzgsNTA2NzksNTA2ODQsNTA2ODUsNTA2ODYsNTA2ODcsNTA2ODgsNTA2ODksNTA2OTMsNTA2OTQsNTA2''@;'; put 'put ''OTUsNTA2OTYsNTA3MDAsNTA3MDQsNTA3MTIsNTA3MTMsNTA3MTUsNTA3MTYsNTA3MjQsNTA3MjUsNTA3MjgsNTA3MzIsNTA3MzMsNTA3MzQsNTA3MzYsNTA3MzksNTA3NDAsNTA3NDEsNTA3NDMsNTA3NDUsNTA3NDcsNTA3NTIsNTA3NTMsNTA3NTYsNTA3NjAsNTA3NjgsNTA3NjksNTA3NzEs''@;'; put 'put ''NTA3NzIsNTA3NzMsNTA3ODAsNTA3ODEsNTA3ODQsNTA3OTYsNTA3OTksNTA4MDEsNTA4MDgsNTA4MDksNTA4MTIsNTA4MTYsNTA4MjQsNTA4MjUsNTA4MjcsNTA4MjksNTA4MzYsNTA4MzcsNTA4NDAsNTA4NDQsNTA4NTIsNTA4NTMsNTA4NTUsNTA4NTcsNTA4NjQsNTA4NjUsNTA4NjgsNTA4''@;'; put 'put ''NzIsNTA4NzMsNTA4NzQsNTA4ODAsNTA4ODEsNTA4ODMsNTA4ODUsNTA4OTIsNTA4OTMsNTA4OTYsNTA5MDAsNTA5MDgsNTA5MDksNTA5MTIsNTA5MTMsNTA5MjAsNTQ1MjYsNTQ1MjcsNTQ1MjgsNTQ1MjksNTQ1MzAsNTQ1MzEsNTQ1MzMsNTQ1MzQsNTQ1MzUsNTQ1MzcsNTQ1MzgsNTQ1Mzks''@;'; put 'put ''NTQ1NDEsNTQ1NDIsNTQ1NDMsNTQ1NDQsNTQ1NDUsNTQ1NDYsNTQ1NDcsNTQ1NTAsNTQ1NTIsNTQ1NTMsNTQ1NTQsNTQ1NTUsNTQ1NTYsNTQ1NTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ1NTgsNTQ1NTksNTQ1NjAsNTQ1NjEsNTQ1NjIsNTQ1NjMsNTQ1NjQsNTQ1NjUsNTQ1''@;'; put 'put ''NjYsNTQ1NjcsNTQ1NjgsNTQ1NjksNTQ1NzAsNTQ1NzEsNTQ1NzIsNTQ1NzMsNTQ1NzQsNTQ1NzUsNTQ1NzYsNTQ1NzcsNTQ1NzgsNTQ1NzksNTQ1ODAsNTQ1ODEsNTQ1ODIsNTQ1ODMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ1ODQsNTQ1ODUsNTQ1ODYsNTQ1ODcsNTQ1OTAs''@;'; put 'put ''NTQ1OTEsNTQ1OTMsNTQ1OTQsNTQ1OTUsNTQ1OTcsNTQ1OTgsNTQ1OTksNTQ2MDAsNTQ2MDEsNTQ2MDIsNTQ2MDMsNTQ2MDYsNTQ2MDgsNTQ2MTAsNTQ2MTEsNTQ2MTIsNTQ2MTMsNTQ2MTQsNTQ2MTUsNTQ2MTgsNTQ2MTksNTQ2MjEsNTQ2MjIsNTQ2MjMsNTQ2MjUsNTQ2MjYsNTQ2MjcsNTA5''@;'; put 'put ''MjEsNTA5MjQsNTA5MjgsNTA5MzYsNTA5MzcsNTA5NDEsNTA5NDgsNTA5NDksNTA5NTIsNTA5NTYsNTA5NjQsNTA5NjUsNTA5NjcsNTA5NjksNTA5NzYsNTA5NzcsNTA5ODAsNTA5ODQsNTA5OTIsNTA5OTMsNTA5OTUsNTA5OTcsNTA5OTksNTEwMDQsNTEwMDUsNTEwMDgsNTEwMTIsNTEwMTgs''@;'; put 'put ''NTEwMjAsNTEwMjEsNTEwMjMsNTEwMjUsNTEwMjYsNTEwMjcsNTEwMjgsNTEwMjksNTEwMzAsNTEwMzEsNTEwMzIsNTEwMzYsNTEwNDAsNTEwNDgsNTEwNTEsNTEwNjAsNTEwNjEsNTEwNjQsNTEwNjgsNTEwNjksNTEwNzAsNTEwNzUsNTEwNzYsNTEwNzcsNTEwNzksNTEwODAsNTEwODEsNTEw''@;'; put 'put ''ODIsNTEwODYsNTEwODgsNTEwODksNTEwOTIsNTEwOTQsNTEwOTUsNTEwOTYsNTEwOTgsNTExMDQsNTExMDUsNTExMDcsNTExMDgsNTExMDksNTExMTAsNTExMTYsNTExMTcsNTExMjAsNTExMjQsNTExMzIsNTExMzMsNTExMzUsNTExMzYsNTExMzcsNTExNDQsNTExNDUsNTExNDgsNTExNTAs''@;'; put 'put ''NTExNTIsNTExNjAsNTExNjUsNTExNzIsNTExNzYsNTExODAsNTEyMDAsNTEyMDEsNTEyMDQsNTEyMDgsNTEyMTAsNTQ2MjgsNTQ2MzAsNTQ2MzEsNTQ2MzQsNTQ2MzYsNTQ2MzgsNTQ2MzksNTQ2NDAsNTQ2NDEsNTQ2NDIsNTQ2NDMsNTQ2NDYsNTQ2NDcsNTQ2NDksNTQ2NTAsNTQ2NTEsNTQ2''@;'; put 'put ''NTMsNTQ2NTQsNTQ2NTUsNTQ2NTYsNTQ2NTcsNTQ2NTgsNTQ2NTksNTQ2NjIsNTQ2NjYsNTQ2NjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ2NjgsNTQ2NjksNTQ2NzAsNTQ2NzEsNTQ2NzMsNTQ2NzQsNTQ2NzUsNTQ2NzYsNTQ2NzcsNTQ2NzgsNTQ2NzksNTQ2ODAsNTQ2ODEs''@;'; put 'put ''NTQ2ODIsNTQ2ODMsNTQ2ODQsNTQ2ODUsNTQ2ODYsNTQ2ODcsNTQ2ODgsNTQ2ODksNTQ2OTAsNTQ2OTEsNTQ2OTIsNTQ2OTQsNTQ2OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ2OTYsNTQ2OTcsNTQ2OTgsNTQ2OTksNTQ3MDAsNTQ3MDEsNTQ3MDIsNTQ3MDMsNTQ3MDQsNTQ3''@;'; put 'put ''MDUsNTQ3MDYsNTQ3MDcsNTQ3MDgsNTQ3MDksNTQ3MTAsNTQ3MTEsNTQ3MTIsNTQ3MTMsNTQ3MTQsNTQ3MTUsNTQ3MTYsNTQ3MTcsNTQ3MTgsNTQ3MTksNTQ3MjAsNTQ3MjEsNTQ3MjIsNTQ3MjMsNTQ3MjQsNTQ3MjUsNTQ3MjYsNTQ3MjcsNTEyMTYsNTEyMTcsNTEyMTksNTEyMjEsNTEyMjIs''@;'; put 'put ''NTEyMjgsNTEyMjksNTEyMzIsNTEyMzYsNTEyNDQsNTEyNDUsNTEyNDcsNTEyNDksNTEyNTYsNTEyNjAsNTEyNjQsNTEyNzIsNTEyNzMsNTEyNzYsNTEyNzcsNTEyODQsNTEzMTIsNTEzMTMsNTEzMTYsNTEzMjAsNTEzMjIsNTEzMjgsNTEzMjksNTEzMzEsNTEzMzMsNTEzMzQsNTEzMzUsNTEz''@;'; put 'put ''MzksNTEzNDAsNTEzNDEsNTEzNDgsNTEzNTcsNTEzNTksNTEzNjEsNTEzNjgsNTEzODgsNTEzODksNTEzOTYsNTE0MDAsNTE0MDQsNTE0MTIsNTE0MTMsNTE0MTUsNTE0MTcsNTE0MjQsNTE0MjUsNTE0MjgsNTE0NDUsNTE0NTIsNTE0NTMsNTE0NTYsNTE0NjAsNTE0NjEsNTE0NjIsNTE0Njgs''@;'; put 'put ''NTE0NjksNTE0NzEsNTE0NzMsNTE0ODAsNTE1MDAsNTE1MDgsNTE1MzYsNTE1MzcsNTE1NDAsNTE1NDQsNTE1NTIsNTE1NTMsNTE1NTUsNTE1NjQsNTE1NjgsNTE1NzIsNTE1ODAsNTE1OTIsNTE1OTMsNTE1OTYsNTE2MDAsNTE2MDgsNTE2MDksNTE2MTEsNTE2MTMsNTE2NDgsNTE2NDksNTE2''@;'; put 'put ''NTIsNTE2NTUsNTE2NTYsNTE2NTgsNTE2NjQsNTE2NjUsNTE2NjcsNTQ3MzAsNTQ3MzEsNTQ3MzMsNTQ3MzQsNTQ3MzUsNTQ3MzcsNTQ3MzksNTQ3NDAsNTQ3NDEsNTQ3NDIsNTQ3NDMsNTQ3NDYsNTQ3NDgsNTQ3NTAsNTQ3NTEsNTQ3NTIsNTQ3NTMsNTQ3NTQsNTQ3NTUsNTQ3NTgsNTQ3NTks''@;'; put 'put ''NTQ3NjEsNTQ3NjIsNTQ3NjMsNTQ3NjUsNTQ3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ3NjcsNTQ3NjgsNTQ3NjksNTQ3NzAsNTQ3NzEsNTQ3NzQsNTQ3NzYsNTQ3NzgsNTQ3NzksNTQ3ODAsNTQ3ODEsNTQ3ODIsNTQ3ODMsNTQ3ODYsNTQ3ODcsNTQ3ODksNTQ3OTAsNTQ3''@;'; put 'put ''OTEsNTQ3OTMsNTQ3OTQsNTQ3OTUsNTQ3OTYsNTQ3OTcsNTQ3OTgsNTQ3OTksNTQ4MDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MDYsNTQ4MDcsNTQ4MDgsNTQ4MDksNTQ4MTAsNTQ4MTEsNTQ4MTMsNTQ4MTQsNTQ4MTUsNTQ4MTcsNTQ4MTgsNTQ4MTksNTQ4MjEsNTQ4MjIs''@;'; put 'put ''NTQ4MjMsNTQ4MjQsNTQ4MjUsNTQ4MjYsNTQ4MjcsNTQ4MjgsNTQ4MzAsNTQ4MzEsNTQ4MzIsNTQ4MzMsNTQ4MzQsNTQ4MzUsNTQ4MzYsNTQ4MzcsNTQ4MzgsNTQ4MzksNTQ4NDIsNTQ4NDMsNTE2NjksNTE2NzAsNTE2NzMsNTE2NzQsNTE2NzYsNTE2NzcsNTE2ODAsNTE2ODIsNTE2ODQsNTE2''@;'; put 'put ''ODcsNTE2OTIsNTE2OTMsNTE2OTUsNTE2OTYsNTE2OTcsNTE3MDQsNTE3MDUsNTE3MDgsNTE3MTIsNTE3MjAsNTE3MjEsNTE3MjMsNTE3MjQsNTE3MjUsNTE3MzIsNTE3MzYsNTE3NTMsNTE3ODgsNTE3ODksNTE3OTIsNTE3OTYsNTE4MDQsNTE4MDUsNTE4MDcsNTE4MDgsNTE4MDksNTE4MTYs''@;'; put 'put ''NTE4MzcsNTE4NDQsNTE4NjQsNTE5MDAsNTE5MDEsNTE5MDQsNTE5MDgsNTE5MTYsNTE5MTcsNTE5MTksNTE5MjEsNTE5MjMsNTE5MjgsNTE5MjksNTE5MzYsNTE5NDgsNTE5NTYsNTE5NzYsNTE5ODQsNTE5ODgsNTE5OTIsNTJlMyw1MjAwMSw1MjAzMyw1MjA0MCw1MjA0MSw1MjA0NCw1MjA0''@;'; put 'put ''OCw1MjA1Niw1MjA1Nyw1MjA2MSw1MjA2OCw1MjA4OCw1MjA4OSw1MjEyNCw1MjE1Miw1MjE4MCw1MjE5Niw1MjE5OSw1MjIwMSw1MjIzNiw1MjIzNyw1MjI0MCw1MjI0NCw1MjI1Miw1MjI1Myw1MjI1Nyw1MjI1OCw1MjI2Myw1MjI2NCw1MjI2NSw1MjI2OCw1MjI3MCw1MjI3Miw1MjI4MCw1''@;'; put 'put ''MjI4MSw1MjI4Myw1NDg0NSw1NDg0Niw1NDg0Nyw1NDg0OSw1NDg1MCw1NDg1MSw1NDg1Miw1NDg1NCw1NDg1NSw1NDg1OCw1NDg2MCw1NDg2Miw1NDg2Myw1NDg2NCw1NDg2Niw1NDg2Nyw1NDg3MCw1NDg3MSw1NDg3Myw1NDg3NCw1NDg3NSw1NDg3Nyw1NDg3OCw1NDg3OSw1NDg4MCw1NDg4''@;'; put 'put ''MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDg4Miw1NDg4Myw1NDg4NCw1NDg4NSw1NDg4Niw1NDg4OCw1NDg5MCw1NDg5MSw1NDg5Miw1NDg5Myw1NDg5NCw1NDg5NSw1NDg5OCw1NDg5OSw1NDkwMSw1NDkwMiw1NDkwMyw1NDkwNCw1NDkwNSw1NDkwNiw1NDkwNyw1NDkwOCw1''@;'; put 'put ''NDkwOSw1NDkxMCw1NDkxMSw1NDkxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDkxMyw1NDkxNCw1NDkxNiw1NDkxOCw1NDkxOSw1NDkyMCw1NDkyMSw1NDkyMiw1NDkyMyw1NDkyNiw1NDkyNyw1NDkyOSw1NDkzMCw1NDkzMSw1NDkzMyw1NDkzNCw1NDkzNSw1NDkzNiw1NDkz''@;'; put 'put ''Nyw1NDkzOCw1NDkzOSw1NDk0MCw1NDk0Miw1NDk0NCw1NDk0Niw1NDk0Nyw1NDk0OCw1NDk0OSw1NDk1MCw1NDk1MSw1NDk1Myw1NDk1NCw1MjI4NCw1MjI4NSw1MjI4Niw1MjI5Miw1MjI5Myw1MjI5Niw1MjMwMCw1MjMwOCw1MjMwOSw1MjMxMSw1MjMxMiw1MjMxMyw1MjMyMCw1MjMyNCw1''@;'; put 'put ''MjMyNiw1MjMyOCw1MjMzNiw1MjM0MSw1MjM3Niw1MjM3Nyw1MjM4MCw1MjM4NCw1MjM5Miw1MjM5Myw1MjM5NSw1MjM5Niw1MjM5Nyw1MjQwNCw1MjQwNSw1MjQwOCw1MjQxMiw1MjQyMCw1MjQyMSw1MjQyMyw1MjQyNSw1MjQzMiw1MjQzNiw1MjQ1Miw1MjQ2MCw1MjQ2NCw1MjQ4MSw1MjQ4''@;'; put 'put ''OCw1MjQ4OSw1MjQ5Miw1MjQ5Niw1MjUwNCw1MjUwNSw1MjUwNyw1MjUwOSw1MjUxNiw1MjUyMCw1MjUyNCw1MjUzNyw1MjU3Miw1MjU3Niw1MjU4MCw1MjU4OCw1MjU4OSw1MjU5MSw1MjU5Myw1MjYwMCw1MjYxNiw1MjYyOCw1MjYyOSw1MjYzMiw1MjYzNiw1MjY0NCw1MjY0NSw1MjY0Nyw1''@;'; put 'put ''MjY0OSw1MjY1Niw1MjY3Niw1MjY4NCw1MjY4OCw1MjcxMiw1MjcxNiw1MjcyMCw1MjcyOCw1MjcyOSw1MjczMSw1MjczMyw1Mjc0MCw1Mjc0NCw1Mjc0OCw1Mjc1Niw1Mjc2MSw1Mjc2OCw1Mjc2OSw1Mjc3Miw1Mjc3Niw1Mjc4NCw1Mjc4NSw1Mjc4Nyw1Mjc4OSw1NDk1NSw1NDk1Nyw1NDk1''@;'; put 'put ''OCw1NDk1OSw1NDk2MSw1NDk2Miw1NDk2Myw1NDk2NCw1NDk2NSw1NDk2Niw1NDk2Nyw1NDk2OCw1NDk3MCw1NDk3Miw1NDk3Myw1NDk3NCw1NDk3NSw1NDk3Niw1NDk3Nyw1NDk3OCw1NDk3OSw1NDk4Miw1NDk4Myw1NDk4NSw1NDk4Niw1NDk4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCw1NDk4OSw1NDk5MCw1NDk5MSw1NDk5Miw1NDk5NCw1NDk5NSw1NDk5Nyw1NDk5OCw1NWUzLDU1MDAyLDU1MDAzLDU1MDA0LDU1MDA1LDU1MDA2LDU1MDA3LDU1MDA5LDU1MDEwLDU1MDExLDU1MDEzLDU1MDE0LDU1MDE1LDU1MDE3LDU1MDE4LDU1MDE5LDU1MDIwLDU1MDIxLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDIyLDU1MDIzLDU1MDI1LDU1MDI2LDU1MDI3LDU1MDI4LDU1MDMwLDU1MDMxLDU1MDMyLDU1MDMzLDU1MDM0LDU1MDM1LDU1MDM4LDU1MDM5LDU1MDQxLDU1MDQyLDU1MDQzLDU1MDQ1LDU1MDQ2LDU1MDQ3LDU1MDQ4LDU1MDQ5LDU1MDUwLDU1''@;'; put 'put ''MDUxLDU1MDUyLDU1MDUzLDU1MDU0LDU1MDU1LDU1MDU2LDU1MDU4LDU1MDU5LDU1MDYwLDUyODI0LDUyODI1LDUyODI4LDUyODMxLDUyODMyLDUyODMzLDUyODQwLDUyODQxLDUyODQzLDUyODQ1LDUyODUyLDUyODUzLDUyODU2LDUyODYwLDUyODY4LDUyODY5LDUyODcxLDUyODczLDUyODgw''@;'; put 'put ''LDUyODgxLDUyODg0LDUyODg4LDUyODk2LDUyODk3LDUyODk5LDUyOTAwLDUyOTAxLDUyOTA4LDUyOTA5LDUyOTI5LDUyOTY0LDUyOTY1LDUyOTY4LDUyOTcxLDUyOTcyLDUyOTgwLDUyOTgxLDUyOTgzLDUyOTg0LDUyOTg1LDUyOTkyLDUyOTkzLDUyOTk2LDUzZTMsNTMwMDgsNTMwMDksNTMw''@;'; put 'put ''MTEsNTMwMTMsNTMwMjAsNTMwMjQsNTMwMjgsNTMwMzYsNTMwMzcsNTMwMzksNTMwNDAsNTMwNDEsNTMwNDgsNTMwNzYsNTMwNzcsNTMwODAsNTMwODQsNTMwOTIsNTMwOTMsNTMwOTUsNTMwOTcsNTMxMDQsNTMxMDUsNTMxMDgsNTMxMTIsNTMxMjAsNTMxMjUsNTMxMzIsNTMxNTMsNTMxNjAs''@;'; put 'put ''NTMxNjgsNTMxODgsNTMyMTYsNTMyMTcsNTMyMjAsNTMyMjQsNTMyMzIsNTMyMzMsNTMyMzUsNTMyMzcsNTMyNDQsNTMyNDgsNTMyNTIsNTMyNjUsNTMyNzIsNTMyOTMsNTMzMDAsNTMzMDEsNTMzMDQsNTMzMDgsNTUwNjEsNTUwNjIsNTUwNjMsNTUwNjYsNTUwNjcsNTUwNjksNTUwNzAsNTUw''@;'; put 'put ''NzEsNTUwNzMsNTUwNzQsNTUwNzUsNTUwNzYsNTUwNzcsNTUwNzgsNTUwNzksNTUwODIsNTUwODQsNTUwODYsNTUwODcsNTUwODgsNTUwODksNTUwOTAsNTUwOTEsNTUwOTQsNTUwOTUsNTUwOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUwOTgsNTUwOTksNTUxMDEsNTUxMDIs''@;'; put 'put ''NTUxMDMsNTUxMDQsNTUxMDUsNTUxMDYsNTUxMDcsNTUxMDksNTUxMTAsNTUxMTIsNTUxMTQsNTUxMTUsNTUxMTYsNTUxMTcsNTUxMTgsNTUxMTksNTUxMjIsNTUxMjMsNTUxMjUsNTUxMzAsNTUxMzEsNTUxMzIsNTUxMzMsNTUxMzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUx''@;'; put 'put ''MzUsNTUxMzgsNTUxNDAsNTUxNDIsNTUxNDMsNTUxNDQsNTUxNDYsNTUxNDcsNTUxNDksNTUxNTAsNTUxNTEsNTUxNTMsNTUxNTQsNTUxNTUsNTUxNTcsNTUxNTgsNTUxNTksNTUxNjAsNTUxNjEsNTUxNjIsNTUxNjMsNTUxNjYsNTUxNjcsNTUxNjgsNTUxNzAsNTUxNzEsNTUxNzIsNTUxNzMs''@;'; put 'put ''NTUxNzQsNTUxNzUsNTUxNzgsNTUxNzksNTMzMTYsNTMzMTcsNTMzMTksNTMzMjEsNTMzMjgsNTMzMzIsNTMzMzYsNTMzNDQsNTMzNTYsNTMzNTcsNTMzNjAsNTMzNjQsNTMzNzIsNTMzNzMsNTMzNzcsNTM0MTIsNTM0MTMsNTM0MTYsNTM0MjAsNTM0MjgsNTM0MjksNTM0MzEsNTM0MzMsNTM0''@;'; put 'put ''NDAsNTM0NDEsNTM0NDQsNTM0NDgsNTM0NDksNTM0NTYsNTM0NTcsNTM0NTksNTM0NjAsNTM0NjEsNTM0NjgsNTM0NjksNTM0NzIsNTM0NzYsNTM0ODQsNTM0ODUsNTM0ODcsNTM0ODgsNTM0ODksNTM0OTYsNTM1MTcsNTM1NTIsNTM1NTMsNTM1NTYsNTM1NjAsNTM1NjIsNTM1NjgsNTM1Njks''@;'; put 'put ''NTM1NzEsNTM1NzIsNTM1NzMsNTM1ODAsNTM1ODEsNTM1ODQsNTM1ODgsNTM1OTYsNTM1OTcsNTM1OTksNTM2MDEsNTM2MDgsNTM2MTIsNTM2MjgsNTM2MzYsNTM2NDAsNTM2NjQsNTM2NjUsNTM2NjgsNTM2NzIsNTM2ODAsNTM2ODEsNTM2ODMsNTM2ODUsNTM2OTAsNTM2OTIsNTM2OTYsNTM3''@;'; put 'put ''MjAsNTM3NDgsNTM3NTIsNTM3NjcsNTM3NjksNTM3NzYsNTM4MDQsNTM4MDUsNTM4MDgsNTM4MTIsNTM4MjAsNTM4MjEsNTM4MjMsNTM4MjUsNTM4MzIsNTM4NTIsNTUxODEsNTUxODIsNTUxODMsNTUxODUsNTUxODYsNTUxODcsNTUxODgsNTUxODksNTUxOTAsNTUxOTEsNTUxOTQsNTUxOTYs''@;'; put 'put ''NTUxOTgsNTUxOTksNTUyMDAsNTUyMDEsNTUyMDIsNTUyMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4NjAsNTM4ODgsNTM4ODksNTM4OTIsNTM4OTYsNTM5MDQsNTM5MDUsNTM5MDksNTM5MTYsNTM5MjAsNTM5MjQsNTM5''@;'; put 'put ''MzIsNTM5MzcsNTM5NDQsNTM5NDUsNTM5NDgsNTM5NTEsNTM5NTIsNTM5NTQsNTM5NjAsNTM5NjEsNTM5NjMsNTM5NzIsNTM5NzYsNTM5ODAsNTM5ODgsNTM5ODksNTRlMyw1NDAwMSw1NDAwNCw1NDAwOCw1NDAxNiw1NDAxNyw1NDAxOSw1NDAyMSw1NDAyOCw1NDAyOSw1NDAzMCw1NDAzMiw1''@;'; put 'put ''NDAzNiw1NDAzOCw1NDA0NCw1NDA0NSw1NDA0Nyw1NDA0OCw1NDA0OSw1NDA1Myw1NDA1Niw1NDA1Nyw1NDA2MCw1NDA2NCw1NDA3Miw1NDA3Myw1NDA3NSw1NDA3Niw1NDA3Nyw1NDA4NCw1NDA4NSw1NDE0MCw1NDE0MSw1NDE0NCw1NDE0OCw1NDE1Niw1NDE1Nyw1NDE1OSw1NDE2MCw1NDE2''@;'; put 'put ''MSw1NDE2OCw1NDE2OSw1NDE3Miw1NDE3Niw1NDE4NCw1NDE4NSw1NDE4Nyw1NDE4OSw1NDE5Niw1NDIwMCw1NDIwNCw1NDIxMiw1NDIxMyw1NDIxNiw1NDIxNyw1NDIyNCw1NDIzMiw1NDI0MSw1NDI0Myw1NDI1Miw1NDI1Myw1NDI1Niw1NDI2MCw1NDI2OCw1NDI2OSw1NDI3MSw1NDI3Myxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI4MCw1NDMwMSw1NDMz''@;'; put 'put ''Niw1NDM0MCw1NDM2NCw1NDM2OCw1NDM3Miw1NDM4MSw1NDM4Myw1NDM5Miw1NDM5Myw1NDM5Niw1NDM5OSw1NDQwMCw1NDQwMiw1NDQwOCw1NDQwOSw1NDQxMSw1NDQxMyw1NDQyMCw1NDQ0MSw1NDQ3Niw1NDQ4MCw1NDQ4NCw1NDQ5Miw1NDQ5NSw1NDUwNCw1NDUwOCw1NDUxMiw1NDUyMCw1''@;'; put 'put ''NDUyMyw1NDUyNSw1NDUzMiw1NDUzNiw1NDU0MCw1NDU0OCw1NDU0OSw1NDU1MSw1NDU4OCw1NDU4OSw1NDU5Miw1NDU5Niw1NDYwNCw1NDYwNSw1NDYwNyw1NDYwOSw1NDYxNiw1NDYxNyw1NDYyMCw1NDYyNCw1NDYyOSw1NDYzMiw1NDYzMyw1NDYzNSw1NDYzNyw1NDY0NCw1NDY0NSw1NDY0''@;'; put 'put ''OCw1NDY1Miw1NDY2MCw1NDY2MSw1NDY2Myw1NDY2NCw1NDY2NSw1NDY3Miw1NDY5Myw1NDcyOCw1NDcyOSw1NDczMiw1NDczNiw1NDczOCw1NDc0NCw1NDc0NSw1NDc0Nyw1NDc0OSw1NDc1Niw1NDc1Nyw1NDc2MCw1NDc2NCw1NDc3Miw1NDc3Myw1NDc3NSw1NDc3Nyw1NDc4NCw1NDc4NSw1''@;'; put 'put ''NDc4OCw1NDc5Miw1NDgwMCw1NDgwMSw1NDgwMyw1NDgwNCw1NDgwNSw1NDgxMiw1NDgxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgyMCw1NDgyOSw1NDg0MCw1NDg0MSw1NDg0NCw1NDg0OCw1NDg1Myw1NDg1Niw1NDg1Nyw1NDg1OSw1NDg2MSw1NDg2NSw1NDg2OCw1NDg2OSw1NDg3Miw1NDg3Niw1NDg4Nyw1NDg4OSw1NDg5Niw1NDg5Nyw1NDkwMCw1''@;'; put 'put ''NDkxNSw1NDkxNyw1NDkyNCw1NDkyNSw1NDkyOCw1NDkzMiw1NDk0MSw1NDk0Myw1NDk0NSw1NDk1Miw1NDk1Niw1NDk2MCw1NDk2OSw1NDk3MSw1NDk4MCw1NDk4MSw1NDk4NCw1NDk4OCw1NDk5Myw1NDk5Niw1NDk5OSw1NTAwMSw1NTAwOCw1NTAxMiw1NTAxNiw1NTAyNCw1NTAyOSw1NTAz''@;'; put 'put ''Niw1NTAzNyw1NTA0MCw1NTA0NCw1NTA1Nyw1NTA2NCw1NTA2NSw1NTA2OCw1NTA3Miw1NTA4MCw1NTA4MSw1NTA4Myw1NTA4NSw1NTA5Miw1NTA5Myw1NTA5Niw1NTEwMCw1NTEwOCw1NTExMSw1NTExMyw1NTEyMCw1NTEyMSw1NTEyNCw1NTEyNiw1NTEyNyw1NTEyOCw1NTEyOSw1NTEzNiw1''@;'; put 'put ''NTEzNyw1NTEzOSw1NTE0MSw1NTE0NSw1NTE0OCw1NTE1Miw1NTE1Niw1NTE2NCw1NTE2NSw1NTE2OSw1NTE3Niw1NTE3Nyw1NTE4MCw1NTE4NCw1NTE5Miw1NTE5Myw1NTE5NSw1NTE5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMjg1LDIwMzM5LDIwNTUxLDIwNzI5LDIxMTUyLDIxNDg3LDIxNjIxLDIxNzMzLDIyMDI1LDIzMjMzLDIzNDc4LDI2MjQ3LDI2NTUwLDI2NTUxLDI2NjA3LDI3NDY4LDI5NjM0LDMwMTQ2LDMxMjky''@;'; put 'put ''LDMzNDk5LDMzNTQwLDM0OTAzLDM0OTUyLDM1MzgyLDM2MDQwLDM2MzAzLDM2NjAzLDM2ODM4LDM5MzgxLDIxMDUxLDIxMzY0LDIxNTA4LDI0NjgyLDI0OTMyLDI3NTgwLDI5NjQ3LDMzMDUwLDM1MjU4LDM1MjgyLDM4MzA3LDIwMzU1LDIxMDAyLDIyNzE4LDIyOTA0LDIzMDE0LDI0MTc4LDI0''@;'; put 'put ''MTg1LDI1MDMxLDI1NTM2LDI2NDM4LDI2NjA0LDI2NzUxLDI4NTY3LDMwMjg2LDMwNDc1LDMwOTY1LDMxMjQwLDMxNDg3LDMxNzc3LDMyOTI1LDMzMzkwLDMzMzkzLDM1NTYzLDM4MjkxLDIwMDc1LDIxOTE3LDI2MzU5LDI4MjEyLDMwODgzLDMxNDY5LDMzODgzLDM1MDg4LDM0NjM4LDM4ODI0''@;'; put 'put ''LDIxMjA4LDIyMzUwLDIyNTcwLDIzODg0LDI0ODYzLDI1MDIyLDI1MTIxLDI1OTU0LDI2NTc3LDI3MjA0LDI4MTg3LDI5OTc2LDMwMTMxLDMwNDM1LDMwNjQwLDMyMDU4LDM3MDM5LDM3OTY5LDM3OTcwLDQwODUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMjgzLDIzNzI0LDMwMDAyLDMyOTg3LDM3NDQwLDM4Mjk2LDIxMDgzLDIyNTM2LDIzMDA0LDIzNzEz''@;'; put 'put ''LDIzODMxLDI0MjQ3LDI0Mzc4LDI0Mzk0LDI0OTUxLDI3NzQzLDMwMDc0LDMwMDg2LDMxOTY4LDMyMTE1LDMyMTc3LDMyNjUyLDMzMTA4LDMzMzEzLDM0MTkzLDM1MTM3LDM1NjExLDM3NjI4LDM4NDc3LDQwMDA3LDIwMTcxLDIwMjE1LDIwNDkxLDIwOTc3LDIyNjA3LDI0ODg3LDI0ODk0LDI0''@;'; put 'put ''OTM2LDI1OTEzLDI3MTE0LDI4NDMzLDMwMTE3LDMwMzQyLDMwNDIyLDMxNjIzLDMzNDQ1LDMzOTk1LDYzNzQ0LDM3Nzk5LDM4MjgzLDIxODg4LDIzNDU4LDIyMzUzLDYzNzQ1LDMxOTIzLDMyNjk3LDM3MzAxLDIwNTIwLDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1NDU0LDI1ODE4LDI1ODMx''@;'; put 'put ''LDI4MTkyLDI4ODQ0LDMxMDY3LDM2MzE3LDM2MzgyLDYzNzQ2LDM2OTg5LDM3NDQ1LDM3NjI0LDIwMDk0LDIwMjE0LDIwNTgxLDI0MDYyLDI0MzE0LDI0ODM4LDI2OTY3LDMzMTM3LDM0Mzg4LDM2NDIzLDM3NzQ5LDM5NDY3LDIwMDYyLDIwNjI1LDI2NDgwLDI2Njg4LDIwNzQ1LDIxMTMzLDIx''@;'; put 'put ''MTM4LDI3Mjk4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwNjUy''@;'; put 'put ''LDM3MzkyLDQwNjYwLDIxMTYzLDI0NjIzLDM2ODUwLDIwNTUyLDI1MDAxLDI1NTgxLDI1ODAyLDI2Njg0LDI3MjY4LDI4NjA4LDMzMTYwLDM1MjMzLDM4NTQ4LDIyNTMzLDI5MzA5LDI5MzU2LDI5OTU2LDMyMTIxLDMyMzY1LDMyOTM3LDM1MjExLDM1NzAwLDM2OTYzLDQwMjczLDI1MjI1LDI3''@;'; put 'put ''NzcwLDI4NTAwLDMyMDgwLDMyNTcwLDM1MzYzLDIwODYwLDI0OTA2LDMxNjQ1LDM1NjA5LDM3NDYzLDM3NzcyLDIwMTQwLDIwNDM1LDIwNTEwLDIwNjcwLDIwNzQyLDIxMTg1LDIxMTk3LDIxMzc1LDIyMzg0LDIyNjU5LDI0MjE4LDI0NDY1LDI0OTUwLDI1MDA0LDI1ODA2LDI1OTY0LDI2MjIz''@;'; put 'put ''LDI2Mjk5LDI2MzU2LDI2Nzc1LDI4MDM5LDI4ODA1LDI4OTEzLDI5ODU1LDI5ODYxLDI5ODk4LDMwMTY5LDMwODI4LDMwOTU2LDMxNDU1LDMxNDc4LDMyMDY5LDMyMTQ3LDMyNzg5LDMyODMxLDMzMDUxLDMzNjg2LDM1Njg2LDM2NjI5LDM2ODg1LDM3ODU3LDM4OTE1LDM4OTY4LDM5NTE0LDM5''@;'; put 'put ''OTEyLDIwNDE4LDIxODQzLDIyNTg2LDIyODY1LDIzMzk1LDIzNjIyLDI0NzYwLDI1MTA2LDI2NjkwLDI2ODAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODU2LDI4MzMwLDMwMDI4LDMwMzI4LDMwOTI2LDMxMjkzLDMxOTk1LDMyMzYzLDMyMzgwLDM1MzM2LDM1NDg5LDM1OTAzLDM4NTQyLDQwMzg4LDIxNDc2LDIxNDgxLDIxNTc4LDIxNjE3LDIyMjY2LDIy''@;'; put 'put ''OTkzLDIzMzk2LDIzNjExLDI0MjM1LDI1MzM1LDI1OTExLDI1OTI1LDI1OTcwLDI2MjcyLDI2NTQzLDI3MDczLDI3ODM3LDMwMjA0LDMwMzUyLDMwNTkwLDMxMjk1LDMyNjYwLDMyNzcxLDMyOTI5LDMzMTY3LDMzNTEwLDMzNTMzLDMzNzc2LDM0MjQxLDM0ODY1LDM0OTk2LDM1NDkzLDYzNzQ3''@;'; put 'put ''LDM2NzY0LDM3Njc4LDM4NTk5LDM5MDE1LDM5NjQwLDQwNzIzLDIxNzQxLDI2MDExLDI2MzU0LDI2NzY3LDMxMjk2LDM1ODk1LDQwMjg4LDIyMjU2LDIyMzcyLDIzODI1LDI2MTE4LDI2ODAxLDI2ODI5LDI4NDE0LDI5NzM2LDM0OTc0LDM5OTA4LDI3NzUyLDYzNzQ4LDM5NTkyLDIwMzc5LDIw''@;'; put 'put ''ODQ0LDIwODQ5LDIxMTUxLDIzMzgwLDI0MDM3LDI0NjU2LDI0Njg1LDI1MzI5LDI1NTExLDI1OTE1LDI5NjU3LDMxMzU0LDM0NDY3LDM2MDAyLDM4Nzk5LDIwMDE4LDIzNTIxLDI1MDk2LDI2NTI0LDI5OTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTg1LDMzNzQ3LDM1NDYzLDM1NTA2LDM2MzI4LDM2OTQyLDM3NzA3LDM4OTgyLDI0Mjc1LDI3MTEyLDM0''@;'; put 'put ''MzAzLDM3MTAxLDYzNzQ5LDIwODk2LDIzNDQ4LDIzNTMyLDI0OTMxLDI2ODc0LDI3NDU0LDI4NzQ4LDI5NzQzLDI5OTEyLDMxNjQ5LDMyNTkyLDMzNzMzLDM1MjY0LDM2MDExLDM4MzY0LDM5MjA4LDIxMDM4LDI0NjY5LDI1MzI0LDM2ODY2LDIwMzYyLDIwODA5LDIxMjgxLDIyNzQ1LDI0Mjkx''@;'; put 'put ''LDI2MzM2LDI3OTYwLDI4ODI2LDI5Mzc4LDI5NjU0LDMxNTY4LDMzMDA5LDM3OTc5LDIxMzUwLDI1NDk5LDMyNjE5LDIwMDU0LDIwNjA4LDIyNjAyLDIyNzUwLDI0NjE4LDI0ODcxLDI1Mjk2LDI3MDg4LDM5NzQ1LDIzNDM5LDMyMDI0LDMyOTQ1LDM2NzAzLDIwMTMyLDIwNjg5LDIxNjc2LDIx''@;'; put 'put ''OTMyLDIzMzA4LDIzOTY4LDI0MDM5LDI1ODk4LDI1OTM0LDI2NjU3LDI3MjExLDI5NDA5LDMwMzUwLDMwNzAzLDMyMDk0LDMyNzYxLDMzMTg0LDM0MTI2LDM0NTI3LDM2NjExLDM2Njg2LDM3MDY2LDM5MTcxLDM5NTA5LDM5ODUxLDE5OTkyLDIwMDM3LDIwMDYxLDIwMTY3LDIwNDY1LDIwODU1''@;'; put 'put ''LDIxMjQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMzEyLDIx''@;'; put 'put ''NDc1LDIxNDc3LDIxNjQ2LDIyMDM2LDIyMzg5LDIyNDM0LDIzNDk1LDIzOTQzLDI0MjcyLDI1MDg0LDI1MzA0LDI1OTM3LDI2NTUyLDI2NjAxLDI3MDgzLDI3NDcyLDI3NTkwLDI3NjI4LDI3NzE0LDI4MzE3LDI4NzkyLDI5Mzk5LDI5NTkwLDI5Njk5LDMwNjU1LDMwNjk3LDMxMzUwLDMyMTI3''@;'; put 'put ''LDMyNzc3LDMzMjc2LDMzMjg1LDMzMjkwLDMzNTAzLDM0OTE0LDM1NjM1LDM2MDkyLDM2NTQ0LDM2ODgxLDM3MDQxLDM3NDc2LDM3NTU4LDM5Mzc4LDM5NDkzLDQwMTY5LDQwNDA3LDQwODYwLDIyMjgzLDIzNjE2LDMzNzM4LDM4ODE2LDM4ODI3LDQwNjI4LDIxNTMxLDMxMzg0LDMyNjc2LDM1''@;'; put 'put ''MDMzLDM2NTU3LDM3MDg5LDIyNTI4LDIzNjI0LDI1NDk2LDMxMzkxLDIzNDcwLDI0MzM5LDMxMzUzLDMxNDA2LDMzNDIyLDM2NTI0LDIwNTE4LDIxMDQ4LDIxMjQwLDIxMzY3LDIyMjgwLDI1MzMxLDI1NDU4LDI3NDAyLDI4MDk5LDMwNTE5LDIxNDEzLDI5NTI3LDM0MTUyLDM2NDcwLDM4MzU3''@;'; put 'put ''LDI2NDI2LDI3MzMxLDI4NTI4LDM1NDM3LDM2NTU2LDM5MjQzLDYzNzUwLDI2MjMxLDI3NTEyLDM2MDIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM5NzQwLDYzNzUxLDIxNDgzLDIyMzE3LDIyODYyLDI1NTQyLDI3MTMxLDI5Njc0LDMwNzg5LDMxNDE4LDMxNDI5LDMxOTk4LDMzOTA5LDM1MjE1LDM2MjExLDM2OTE3LDM4MzEyLDIxMjQzLDIyMzQzLDMwMDIz''@;'; put 'put ''LDMxNTg0LDMzNzQwLDM3NDA2LDYzNzUyLDI3MjI0LDIwODExLDIxMDY3LDIxMTI3LDI1MTE5LDI2ODQwLDI2OTk3LDM4NTUzLDIwNjc3LDIxMTU2LDIxMjIwLDI1MDI3LDI2MDIwLDI2NjgxLDI3MTM1LDI5ODIyLDMxNTYzLDMzNDY1LDMzNzcxLDM1MjUwLDM1NjQxLDM2ODE3LDM5MjQxLDYz''@;'; put 'put ''NzUzLDIwMTcwLDIyOTM1LDI1ODEwLDI2MTI5LDI3Mjc4LDI5NzQ4LDMxMTA1LDMxMTY1LDMzNDQ5LDM0OTQyLDM0OTQzLDM1MTY3LDYzNzU0LDM3NjcwLDIwMjM1LDIxNDUwLDI0NjEzLDI1MjAxLDI3NzYyLDMyMDI2LDMyMTAyLDIwMTIwLDIwODM0LDMwNjg0LDMyOTQzLDIwMjI1LDIwMjM4''@;'; put 'put ''LDIwODU0LDIwODY0LDIxOTgwLDIyMTIwLDIyMzMxLDIyNTIyLDIyNTI0LDIyODA0LDIyODU1LDIyOTMxLDIzNDkyLDIzNjk2LDIzODIyLDI0MDQ5LDI0MTkwLDI0NTI0LDI1MjE2LDI2MDcxLDI2MDgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2Mzk4LDI2Mzk5LDI2NDYyLDI2ODI3LDI2ODIwLDI3MjMxLDI3NDUwLDI3NjgzLDI3NzczLDI3Nzc4LDI4MTAz''@;'; put 'put ''LDI5NTkyLDI5NzM0LDI5NzM4LDI5ODI2LDI5ODU5LDMwMDcyLDMwMDc5LDMwODQ5LDMwOTU5LDMxMDQxLDMxMDQ3LDMxMDQ4LDMxMDk4LDMxNjM3LDMyZTMsMzIxODYsMzI2NDgsMzI3NzQsMzI4MTMsMzI5MDgsMzUzNTIsMzU2NjMsMzU5MTIsMzYyMTUsMzc2NjUsMzc2NjgsMzkxMzgsMzky''@;'; put 'put ''NDksMzk0MzgsMzk0MzksMzk1MjUsNDA1OTQsMzIyMDIsMjAzNDIsMjE1MTMsMjUzMjYsMjY3MDgsMzczMjksMjE5MzEsMjA3OTQsNjM3NTUsNjM3NTYsMjMwNjgsMjUwNjIsNjM3NTcsMjUyOTUsMjUzNDMsNjM3NTgsNjM3NTksNjM3NjAsNjM3NjEsNjM3NjIsNjM3NjMsMzcwMjcsNjM3NjQs''@;'; put 'put ''NjM3NjUsNjM3NjYsNjM3NjcsNjM3NjgsMzU1ODIsNjM3NjksNjM3NzAsNjM3NzEsNjM3NzIsMjYyNjIsNjM3NzMsMjkwMTQsNjM3NzQsNjM3NzUsMzg2MjcsNjM3NzYsMjU0MjMsMjU0NjYsMjEzMzUsNjM3NzcsMjY1MTEsMjY5NzYsMjgyNzUsNjM3NzgsMzAwMDcsNjM3NzksNjM3ODAsNjM3''@;'; put 'put ''ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzIwMTMsNjM3ODIs''@;'; put 'put ''NjM3ODMsMzQ5MzAsMjIyMTgsMjMwNjQsNjM3ODQsNjM3ODUsNjM3ODYsNjM3ODcsNjM3ODgsMjAwMzUsNjM3ODksMjA4MzksMjI4NTYsMjY2MDgsMzI3ODQsNjM3OTAsMjI4OTksMjQxODAsMjU3NTQsMzExNzgsMjQ1NjUsMjQ2ODQsMjUyODgsMjU0NjcsMjM1MjcsMjM1MTEsMjExNjIsNjM3''@;'; put 'put ''OTEsMjI5MDAsMjQzNjEsMjQ1OTQsNjM3OTIsNjM3OTMsNjM3OTQsMjk3ODUsNjM3OTUsNjM3OTYsNjM3OTcsNjM3OTgsNjM3OTksNjM4MDAsMzkzNzcsNjM4MDEsNjM4MDIsNjM4MDMsNjM4MDQsNjM4MDUsNjM4MDYsNjM4MDcsNjM4MDgsNjM4MDksNjM4MTAsNjM4MTEsMjg2MTEsNjM4MTIs''@;'; put 'put ''NjM4MTMsMzMyMTUsMzY3ODYsMjQ4MTcsNjM4MTQsNjM4MTUsMzMxMjYsNjM4MTYsNjM4MTcsMjM2MTUsNjM4MTgsNjM4MTksNjM4MjAsNjM4MjEsNjM4MjIsNjM4MjMsNjM4MjQsNjM4MjUsMjMyNzMsMzUzNjUsMjY0OTEsMzIwMTYsNjM4MjYsNjM4MjcsNjM4MjgsNjM4MjksNjM4MzAsNjM4''@;'; put 'put ''MzEsMzMwMjEsNjM4MzIsNjM4MzMsMjM2MTIsMjc4NzcsMjEzMTEsMjgzNDYsMjI4MTAsMzM1OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAwMjUsMjAxNTAsMjAyOTQsMjE5MzQsMjIyOTYsMjI3MjcsMjQ0MDYsMjYwMzksMjYwODYsMjcyNjQsMjc1NzMsMjgyMzcsMzA3MDEsMzE0NzEsMzE3NzQsMzIyMjIsMzQ1MDcsMzQ5NjIsMzcxNzAsMzc3MjMsMjU3''@;'; put 'put ''ODcsMjg2MDYsMjk1NjIsMzAxMzYsMzY5NDgsMjE4NDYsMjIzNDksMjUwMTgsMjU4MTIsMjYzMTEsMjgxMjksMjgyNTEsMjg1MjUsMjg2MDEsMzAxOTIsMzI4MzUsMzMyMTMsMzQxMTMsMzUyMDMsMzU1MjcsMzU2NzQsMzc2NjMsMjc3OTUsMzAwMzUsMzE1NzIsMzYzNjcsMzY5NTcsMjE3NzYs''@;'; put 'put ''MjI1MzAsMjI2MTYsMjQxNjIsMjUwOTUsMjU3NTgsMjY4NDgsMzAwNzAsMzE5NTgsMzQ3MzksNDA2ODAsMjAxOTUsMjI0MDgsMjIzODIsMjI4MjMsMjM1NjUsMjM3MjksMjQxMTgsMjQ0NTMsMjUxNDAsMjU4MjUsMjk2MTksMzMyNzQsMzQ5NTUsMzYwMjQsMzg1MzgsNDA2NjcsMjM0MjksMjQ1''@;'; put 'put ''MDMsMjQ3NTUsMjA0OTgsMjA5OTIsMjEwNDAsMjIyOTQsMjI1ODEsMjI2MTUsMjM1NjYsMjM2NDgsMjM3OTgsMjM5NDcsMjQyMzAsMjQ0NjYsMjQ3NjQsMjUzNjEsMjU0ODEsMjU2MjMsMjY2OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4NzMsMjczMzAsMjgxMjAsMjgxOTMsMjgzNzIsMjg2NDQsMjkxODIsMzA0MjgsMzA1ODUsMzExNTMsMzEyOTEsMzM3''@;'; put 'put ''OTYsMzUyNDEsMzYwNzcsMzYzMzksMzY0MjQsMzY4NjcsMzY4ODQsMzY5NDcsMzcxMTcsMzc3MDksMzg1MTgsMzg4NzYsMjc2MDIsMjg2NzgsMjkyNzIsMjkzNDYsMjk1NDQsMzA1NjMsMzExNjcsMzE3MTYsMzI0MTEsMzU3MTIsMjI2OTcsMjQ3NzUsMjU5NTgsMjYxMDksMjYzMDIsMjc3ODgs''@;'; put 'put ''Mjg5NTgsMjkxMjksMzU5MzAsMzg5MzEsMjAwNzcsMzEzNjEsMjAxODksMjA5MDgsMjA5NDEsMjEyMDUsMjE1MTYsMjQ5OTksMjY0ODEsMjY3MDQsMjY4NDcsMjc5MzQsMjg1NDAsMzAxNDAsMzA2NDMsMzE0NjEsMzMwMTIsMzM4OTEsMzc1MDksMjA4MjgsMjYwMDcsMjY0NjAsMjY1MTUsMzAx''@;'; put 'put ''NjgsMzE0MzEsMzM2NTEsNjM4MzQsMzU5MTAsMzY4ODcsMzg5NTcsMjM2NjMsMzMyMTYsMzM0MzQsMzY5MjksMzY5NzUsMzczODksMjQ0NzEsMjM5NjUsMjcyMjUsMjkxMjgsMzAzMzEsMzE1NjEsMzQyNzYsMzU1ODgsMzcxNTksMzk0NzIsMjE4OTUsMjUwNzgsNjM4MzUsMzAzMTMsMzI2NDUs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQzNjcsMzQ3NDYsMzUw''@;'; put 'put ''NjQsMzcwMDcsNjM4MzYsMjc5MzEsMjg4ODksMjk2NjIsMzIwOTcsMzM4NTMsNjM4MzcsMzcyMjYsMzk0MDksNjM4MzgsMjAwOTgsMjEzNjUsMjczOTYsMjc0MTAsMjg3MzQsMjkyMTEsMzQzNDksNDA0NzgsMjEwNjgsMzY3NzEsMjM4ODgsMjU4MjksMjU5MDAsMjc0MTQsMjg2NTEsMzE4MTEs''@;'; put 'put ''MzI0MTIsMzQyNTMsMzUxNzIsMzUyNjEsMjUyODksMzMyNDAsMzQ4NDcsMjQyNjYsMjYzOTEsMjgwMTAsMjk0MzYsMjk3MDEsMjk4MDcsMzQ2OTAsMzcwODYsMjAzNTgsMjM4MjEsMjQ0ODAsMzM4MDIsMjA5MTksMjU1MDQsMzAwNTMsMjAxNDIsMjA0ODYsMjA4NDEsMjA5MzcsMjY3NTMsMjcx''@;'; put 'put ''NTMsMzE5MTgsMzE5MjEsMzE5NzUsMzMzOTEsMzU1MzgsMzY2MzUsMzczMjcsMjA0MDYsMjA3OTEsMjEyMzcsMjE1NzAsMjQzMDAsMjQ5NDIsMjUxNTAsMjYwNTMsMjczNTQsMjg2NzAsMzEwMTgsMzQyNjgsMzQ4NTEsMzgzMTcsMzk1MjIsMzk1MzAsNDA1OTksNDA2NTQsMjExNDcsMjYzMTAs''@;'; put 'put ''Mjc1MTEsMjg3MDEsMzEwMTksMzY3MDYsMzg3MjIsMjQ5NzYsMjUwODgsMjU4OTEsMjg0NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDEsMjk4MzMsMzIyNDQsMzI4NzksMzQwMzAsMzY2NDYsMzY4OTksMzc3MDYsMjA5MjUsMjEwMTUsMjExNTUsMjc5MTYsMjg4NzIsMzUwMTAsMjQyNjUsMjU5ODYsMjc1NjYsMjg2MTAsMzE4MDYsMjk1NTcsMjAxOTYs''@;'; put 'put ''MjAyNzgsMjIyNjUsNjM4MzksMjM3MzgsMjM5OTQsMjQ2MDQsMjk2MTgsMzE1MzMsMzI2NjYsMzI3MTgsMzI4MzgsMzY4OTQsMzc0MjgsMzg2NDYsMzg3MjgsMzg5MzYsNDA4MDEsMjAzNjMsMjg1ODMsMzExNTAsMzczMDAsMzg1ODMsMjEyMTQsNjM4NDAsMjU3MzYsMjU3OTYsMjczNDcsMjg1''@;'; put 'put ''MTAsMjg2OTYsMjkyMDAsMzA0MzksMzI3NjksMzQzMTAsMzQzOTYsMzYzMzUsMzY2MTMsMzg3MDYsMzk3OTEsNDA0NDIsNDA1NjUsMzA4NjAsMzExMDMsMzIxNjAsMzM3MzcsMzc2MzYsNDA1NzUsNDA1OTUsMzU1NDIsMjI3NTEsMjQzMjQsMjY0MDcsMjg3MTEsMjk5MDMsMzE4NDAsMzI4OTQs''@;'; put 'put ''MjA3NjksMjg3MTIsMjkyODIsMzA5MjIsMzYwMzQsMzYwNTgsMzYwODQsMzg2NDcsMjAxMDIsMjA2OTgsMjM1MzQsMjQyNzgsMjYwMDksMjkxMzQsMzAyNzQsMzA2MzcsMzI4NDIsMzQwNDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5ODgsMzk3MTksNDA4NDUsMjI3NDQsMjMxMDUsMjM2NTAsMjcxNTUsMjgxMjIsMjg0MzEsMzAyNjcsMzIwNDcsMzIzMTEs''@;'; put 'put ''MzQwNzgsMzUxMjgsMzc4NjAsMzg0NzUsMjExMjksMjYwNjYsMjY2MTEsMjcwNjAsMjc5NjksMjgzMTYsMjg2ODcsMjk3MDUsMjk3OTIsMzAwNDEsMzAyNDQsMzA4MjcsMzU2MjgsMzkwMDYsMjA4NDUsMjUxMzQsMzg1MjAsMjAzNzQsMjA1MjMsMjM4MzMsMjgxMzgsMzIxODQsMzY2NTAsMjQ0''@;'; put 'put ''NTksMjQ5MDAsMjY2NDcsNjM4NDEsMzg1MzQsMjEyMDIsMzI5MDcsMjA5NTYsMjA5NDAsMjY5NzQsMzEyNjAsMzIxOTAsMzM3NzcsMzg1MTcsMjA0NDIsMjEwMzMsMjE0MDAsMjE1MTksMjE3NzQsMjM2NTMsMjQ3NDMsMjY0NDYsMjY3OTIsMjgwMTIsMjkzMTMsMjk0MzIsMjk3MDIsMjk4Mjcs''@;'; put 'put ''NjM4NDIsMzAxNzgsMzE4NTIsMzI2MzMsMzI2OTYsMzM2NzMsMzUwMjMsMzUwNDEsMzczMjQsMzczMjgsMzg2MjYsMzk4ODEsMjE1MzMsMjg1NDIsMjkxMzYsMjk4NDgsMzQyOTgsMzY1MjIsMzg1NjMsNDAwMjMsNDA2MDcsMjY1MTksMjgxMDcsMjk3NDcsMzMyNTYsMzg2NzgsMzA3NjQsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzE0MzUsMzE1MjAsMzE4OTAs''@;'; put 'put ''MjU3MDUsMjk4MDIsMzAxOTQsMzA5MDgsMzA5NTIsMzkzNDAsMzk3NjQsNDA2MzUsMjM1MTgsMjQxNDksMjg0NDgsMzMxODAsMzM3MDcsMzdlMywxOTk3NSwyMTMyNSwyMzA4MSwyNDAxOCwyNDM5OCwyNDkzMCwyNTQwNSwyNjIxNywyNjM2NCwyODQxNSwyODQ1OSwyODc3MSwzMDYyMiwzMzgz''@;'; put 'put ''NiwzNDA2NywzNDg3NSwzNjYyNywzOTIzNywzOTk5NSwyMTc4OCwyNTI3MywyNjQxMSwyNzgxOSwzMzU0NSwzNTE3OCwzODc3OCwyMDEyOSwyMjkxNiwyNDUzNiwyNDUzNywyNjM5NSwzMjE3OCwzMjU5NiwzMzQyNiwzMzU3OSwzMzcyNSwzNjYzOCwzNzAxNywyMjQ3NSwyMjk2OSwyMzE4Niwy''@;'; put 'put ''MzUwNCwyNjE1MSwyNjUyMiwyNjc1NywyNzU5OSwyOTAyOCwzMjYyOSwzNjAyMywzNjA2NywzNjk5MywzOTc0OSwzMzAzMiwzNTk3OCwzODQ3NiwzOTQ4OCw0MDYxMywyMzM5MSwyNzY2NywyOTQ2NywzMDQ1MCwzMDQzMSwzMzgwNCwyMDkwNiwzNTIxOSwyMDgxMywyMDg4NSwyMTE5MywyNjgy''@;'; put 'put ''NSwyNzc5NiwzMDQ2OCwzMDQ5NiwzMjE5MSwzMjIzNiwzODc1NCw0MDYyOSwyODM1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNDA2NSwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwyNjI2OSwyNjkxOSwyODMxOSwzMDM5OSwzMDYwOSwzMzU1OSwzMzk4NiwzNDcxOSwzNzIyNSwzNzUyOCw0MDE4MCwzNDk0NiwyMDM5OCwyMDg4MiwyMTIxNSwyMjk4MiwyNDEy''@;'; put 'put ''NSwyNDkxNywyNTcyMCwyNTcyMSwyNjI4NiwyNjU3NiwyNzE2OSwyNzU5NywyNzYxMSwyOTI3OSwyOTI4MSwyOTc2MSwzMDUyMCwzMDY4MywzMjc5MSwzMzQ2OCwzMzU0MSwzNTU4NCwzNTYyNCwzNTk4MCwyNjQwOCwyNzc5MiwyOTI4NywzMDQ0NiwzMDU2NiwzMTMwMiw0MDM2MSwyNzUxOSwy''@;'; put 'put ''Nzc5NCwyMjgxOCwyNjQwNiwzMzk0NSwyMTM1OSwyMjY3NSwyMjkzNywyNDI4NywyNTU1MSwyNjE2NCwyNjQ4MywyODIxOCwyOTQ4MywzMTQ0NywzMzQ5NSwzNzY3MiwyMTIwOSwyNDA0MywyNTAwNiwyNTAzNSwyNTA5OCwyNTI4NywyNTc3MSwyNjA4MCwyNjk2OSwyNzQ5NCwyNzU5NSwyODk2''@;'; put 'put ''MSwyOTY4NywzMDA0NSwzMjMyNiwzMzMxMCwzMzUzOCwzNDE1NCwzNTQ5MSwzNjAzMSwzODY5NSw0MDI4OSwyMjY5Niw0MDY2NCwyMDQ5NywyMTAwNiwyMTU2MywyMTgzOSwyNTk5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNzc2NiwzMjAxMCwzMjAxMSwzMjg2MiwzNDQ0MiwzODI3MiwzODYzOSwyMTI0NywyNzc5NywyOTI4OSwyMTYxOSwyMzE5NCwyMzYx''@;'; put 'put ''NCwyMzg4MywyNDM5NiwyNDQ5NCwyNjQxMCwyNjgwNiwyNjk3OSwyODIyMCwyODIyOCwzMDQ3MywzMTg1OSwzMjY1NCwzNDE4MywzNTU5OCwzNjg1NSwzODc1Myw0MDY5MiwyMzczNSwyNDc1OCwyNDg0NSwyNTAwMywyNTkzNSwyNjEwNywyNjEwOCwyNzY2NSwyNzg4NywyOTU5OSwyOTY0MSwz''@;'; put 'put ''MjIyNSwzODI5MiwyMzQ5NCwzNDU4OCwzNTYwMCwyMTA4NSwyMTMzOCwyNTI5MywyNTYxNSwyNTc3OCwyNjQyMCwyNzE5MiwyNzg1MCwyOTYzMiwyOTg1NCwzMTYzNiwzMTg5MywzMjI4MywzMzE2MiwzMzMzNCwzNDE4MCwzNjg0MywzODY0OSwzOTM2MSwyMDI3NiwyMTMyMiwyMTQ1MywyMTQ2''@;'; put 'put ''NywyNTI5MiwyNTY0NCwyNTg1NiwyNjAwMSwyNzA3NSwyNzg4NiwyODUwNCwyOTY3NywzMDAzNiwzMDI0MiwzMDQzNiwzMDQ2MCwzMDkyOCwzMDk3MSwzMTAyMCwzMjA3MCwzMzMyNCwzNDc4NCwzNjgyMCwzODkzMCwzOTE1MSwyMTE4NywyNTMwMCwyNTc2NSwyODE5NiwyODQ5NyxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDMzMiwzNjI5OSwzNzI5NywzNzQ3''@;'; put 'put ''NCwzOTY2MiwzOTc0NywyMDUxNSwyMDYyMSwyMjM0NiwyMjk1MiwyMzU5MiwyNDEzNSwyNDQzOSwyNTE1MSwyNTkxOCwyNjA0MSwyNjA0OSwyNjEyMSwyNjUwNywyNzAzNiwyODM1NCwzMDkxNywzMjAzMywzMjkzOCwzMzE1MiwzMzMyMywzMzQ1OSwzMzk1MywzNDQ0NCwzNTM3MCwzNTYwNywz''@;'; put 'put ''NzAzMCwzODQ1MCw0MDg0OCwyMDQ5MywyMDQ2Nyw2Mzg0MywyMjUyMSwyNDQ3MiwyNTMwOCwyNTQ5MCwyNjQ3OSwyODIyNywyODk1MywzMDQwMywzMjk3MiwzMjk4NiwzNTA2MCwzNTA2MSwzNTA5NywzNjA2NCwzNjY0OSwzNzE5NywzODUwNiwyMDI3MSwyMDMzNiwyNDA5MSwyNjU3NSwyNjY1''@;'; put 'put ''OCwzMDMzMywzMDMzNCwzOTc0OCwyNDE2MSwyNzE0NiwyOTAzMywyOTE0MCwzMDA1OCw2Mzg0NCwzMjMyMSwzNDExNSwzNDI4MSwzOTEzMiwyMDI0MCwzMTU2NywzMjYyNCwzODMwOSwyMDk2MSwyNDA3MCwyNjgwNSwyNzcxMCwyNzcyNiwyNzg2NywyOTM1OSwzMTY4NCwzMzUzOSwyNzg2MSwy''@;'; put 'put ''OTc1NCwyMDczMSwyMTEyOCwyMjcyMSwyNTgxNiwyNzI4NywyOTg2MywzMDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDg4NywzNDMyNywzODM3MCwzODcxMyw2Mzg0NSwyMTM0MiwyNDMyMSwzNTcyMiwzNjc3NiwzNjc4MywzNzAwMiwyMTAyOSwzMDYyOSw0MDAwOSw0MDcxMiwxOTk5MywyMDQ4MiwyMDg1MywyMzY0MywyNDE4MywyNjE0MiwyNjE3MCwy''@;'; put 'put ''NjU2NCwyNjgyMSwyODg1MSwyOTk1MywzMDE0OSwzMTE3NywzMTQ1MywzNjY0NywzOTIwMCwzOTQzMiwyMDQ0NSwyMjU2MSwyMjU3NywyMzU0MiwyNjIyMiwyNzQ5MywyNzkyMSwyODI4MiwyODU0MSwyOTY2OCwyOTk5NSwzMzc2OSwzNTAzNiwzNTA5MSwzNTY3NiwzNjYyOCwyMDIzOSwyMDY5''@;'; put 'put ''MywyMTI2NCwyMTM0MCwyMzQ0MywyNDQ4OSwyNjM4MSwzMTExOSwzMzE0NSwzMzU4MywzNDA2OCwzNTA3OSwzNTIwNiwzNjY2NSwzNjY2NywzOTMzMywzOTk1NCwyNjQxMiwyMDA4NiwyMDQ3MiwyMjg1NywyMzU1MywyMzc5MSwyMzc5MiwyNTQ0NywyNjgzNCwyODkyNSwyOTA5MCwyOTczOSwz''@;'; put 'put ''MjI5OSwzNDAyOCwzNDU2MiwzNjg5OCwzNzU4Niw0MDE3OSwxOTk4MSwyMDE4NCwyMDQ2MywyMDYxMywyMTA3OCwyMTEwMywyMTU0MiwyMTY0OCwyMjQ5NiwyMjgyNywyMzE0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzM4NiwyMzQxMywyMzUwMCwyNDIyMCw2Mzg0NiwyNTIwNiwyNTk3NSwyNjAyMywyODAxNCwyODMyNSwyOTIzOCwzMTUyNiwzMTgwNywz''@;'; put 'put ''MjU2NiwzMzEwNCwzMzEwNSwzMzE3OCwzMzM0NCwzMzQzMywzMzcwNSwzNTMzMSwzNmUzLDM2MDcwLDM2MDkxLDM2MjEyLDM2MjgyLDM3MDk2LDM3MzQwLDM4NDI4LDM4NDY4LDM5Mzg1LDQwMTY3LDIxMjcxLDIwOTk4LDIxNTQ1LDIyMTMyLDIyNzA3LDIyODY4LDIyODk0LDI0NTc1LDI0OTk2''@;'; put 'put ''LDI1MTk4LDI2MTI4LDI3Nzc0LDI4OTU0LDMwNDA2LDMxODgxLDMxOTY2LDMyMDI3LDMzNDUyLDM2MDMzLDM4NjQwLDYzODQ3LDIwMzE1LDI0MzQzLDI0NDQ3LDI1MjgyLDIzODQ5LDI2Mzc5LDI2ODQyLDMwODQ0LDMyMzIzLDQwMzAwLDE5OTg5LDIwNjMzLDIxMjY5LDIxMjkwLDIxMzI5LDIy''@;'; put 'put ''OTE1LDIzMTM4LDI0MTk5LDI0NzU0LDI0OTcwLDI1MTYxLDI1MjA5LDI2ZTMsMjY1MDMsMjcwNDcsMjc2MDQsMjc2MDYsMjc2MDcsMjc2MDgsMjc4MzIsNjM4NDgsMjk3NDksMzAyMDIsMzA3MzgsMzA4NjUsMzExODksMzExOTIsMzE4NzUsMzIyMDMsMzI3MzcsMzI5MzMsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzMwODYsMzMyMTgsMzM3NzgsMzQ1ODYsMzUw''@;'; put 'put ''NDgsMzU1MTMsMzU2OTIsMzYwMjcsMzcxNDUsMzg3NTAsMzkxMzEsNDA3NjMsMjIxODgsMjMzMzgsMjQ0MjgsMjU5OTYsMjczMTUsMjc1NjcsMjc5OTYsMjg2NTcsMjg2OTMsMjkyNzcsMjk2MTMsMzYwMDcsMzYwNTEsMzg5NzEsMjQ5NzcsMjc3MDMsMzI4NTYsMzk0MjUsMjAwNDUsMjAxMDcs''@;'; put 'put ''MjAxMjMsMjAxODEsMjAyODIsMjAyODQsMjAzNTEsMjA0NDcsMjA3MzUsMjE0OTAsMjE0OTYsMjE3NjYsMjE5ODcsMjIyMzUsMjI3NjMsMjI4ODIsMjMwNTcsMjM1MzEsMjM1NDYsMjM1NTYsMjQwNTEsMjQxMDcsMjQ0NzMsMjQ2MDUsMjU0NDgsMjYwMTIsMjYwMzEsMjY2MTQsMjY2MTksMjY3''@;'; put 'put ''OTcsMjc1MTUsMjc4MDEsMjc4NjMsMjgxOTUsMjg2ODEsMjk1MDksMzA3MjIsMzEwMzgsMzEwNDAsMzEwNzIsMzExNjksMzE3MjEsMzIwMjMsMzIxMTQsMzI5MDIsMzMyOTMsMzM2NzgsMzQwMDEsMzQ1MDMsMzUwMzksMzU0MDgsMzU0MjIsMzU2MTMsMzYwNjAsMzYxOTgsMzY3ODEsMzcwMzQs''@;'; put 'put ''MzkxNjQsMzkzOTEsNDA2MDUsMjEwNjYsNjM4NDksMjYzODgsNjM4NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjA2MzIsMjEwMzQsMjM2NjUsMjU5NTUsMjc3MzMsMjk2NDIsMjk5ODcsMzAxMDksMzE2MzksMzM5NDgsMzcyNDAsMzg3MDQsMjAwODcsMjU3NDYsMjc1NzgsMjkwMjIsMzQyMTcsMTk5NzcsNjM4NTEsMjY0NDEsMjY4NjIsMjgxODMsMzM0Mzks''@;'; put 'put ''MzQwNzIsMzQ5MjMsMjU1OTEsMjg1NDUsMzczOTQsMzkwODcsMTk5NzgsMjA2NjMsMjA2ODcsMjA3NjcsMjE4MzAsMjE5MzAsMjIwMzksMjMzNjAsMjM1NzcsMjM3NzYsMjQxMjAsMjQyMDIsMjQyMjQsMjQyNTgsMjQ4MTksMjY3MDUsMjcyMzMsMjgyNDgsMjkyNDUsMjkyNDgsMjkzNzYsMzA0''@;'; put 'put ''NTYsMzEwNzcsMzE2NjUsMzI3MjQsMzUwNTksMzUzMTYsMzU0NDMsMzU5MzcsMzYwNjIsMzg2ODQsMjI2MjIsMjk4ODUsMzYwOTMsMjE5NTksNjM4NTIsMzEzMjksMzIwMzQsMzMzOTQsMjkyOTgsMjk5ODMsMjk5ODksNjM4NTMsMzE1MTMsMjI2NjEsMjI3NzksMjM5OTYsMjQyMDcsMjQyNDYs''@;'; put 'put ''MjQ0NjQsMjQ2NjEsMjUyMzQsMjU0NzEsMjU5MzMsMjYyNTcsMjYzMjksMjYzNjAsMjY2NDYsMjY4NjYsMjkzMTIsMjk3OTAsMzE1OTgsMzIxMTAsMzIyMTQsMzI2MjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI5OTcsMzMyOTgsMzQyMjMsMzUxOTksMzU0NzUsMzY4OTMsMzc2MDQsNDA2NTMsNDA3MzYsMjI4MDUsMjI4OTMsMjQxMDksMjQ3OTYsMjYxMzIs''@;'; put 'put ''MjYyMjcsMjY1MTIsMjc3MjgsMjgxMDEsMjg1MTEsMzA3MDcsMzA4ODksMzM5OTAsMzczMjMsMzc2NzUsMjAxODUsMjA2ODIsMjA4MDgsMjE4OTIsMjMzMDcsMjM0NTksMjUxNTksMjU5ODIsMjYwNTksMjgyMTAsMjkwNTMsMjk2OTcsMjk3NjQsMjk4MzEsMjk4ODcsMzAzMTYsMzExNDYsMzIy''@;'; put 'put ''MTgsMzIzNDEsMzI2ODAsMzMxNDYsMzMyMDMsMzMzMzcsMzQzMzAsMzQ3OTYsMzU0NDUsMzYzMjMsMzY5ODQsMzc1MjEsMzc5MjUsMzkyNDUsMzk4NTQsMjEzNTIsMjM2MzMsMjY5NjQsMjc4NDQsMjc5NDUsMjgyMDMsMzMyOTIsMzQyMDMsMzUxMzEsMzUzNzMsMzU0OTgsMzg2MzQsNDA4MDcs''@;'; put 'put ''MjEwODksMjYyOTcsMjc1NzAsMzI0MDYsMzQ4MTQsMzYxMDksMzgyNzUsMzg0OTMsMjU4ODUsMjgwNDEsMjkxNjYsNjM4NTQsMjI0NzgsMjI5OTUsMjM0NjgsMjQ2MTUsMjQ4MjYsMjUxMDQsMjYxNDMsMjYyMDcsMjk0ODEsMjk2ODksMzA0MjcsMzA0NjUsMzE1OTYsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI4NTQsMzI4ODIsMzMxMjUsMzU0ODgsMzcyNjYs''@;'; put 'put ''MTk5OTAsMjEyMTgsMjc1MDYsMjc5MjcsMzEyMzcsMzE1NDUsMzIwNDgsNjM4NTUsMzYwMTYsMjE0ODQsMjIwNjMsMjI2MDksMjM0NzcsMjM1NjcsMjM1NjksMjQwMzQsMjUxNTIsMjU0NzUsMjU2MjAsMjYxNTcsMjY4MDMsMjc4MzYsMjgwNDAsMjgzMzUsMjg3MDMsMjg4MzYsMjkxMzgsMjk5''@;'; put 'put ''OTAsMzAwOTUsMzAwOTQsMzAyMzMsMzE1MDUsMzE3MTIsMzE3ODcsMzIwMzIsMzIwNTcsMzQwOTIsMzQxNTcsMzQzMTEsMzUzODAsMzY4NzcsMzY5NjEsMzcwNDUsMzc1NTksMzg5MDIsMzk0NzksMjA0MzksMjM2NjAsMjY0NjMsMjgwNDksMzE5MDMsMzIzOTYsMzU2MDYsMzYxMTgsMzY4OTUs''@;'; put 'put ''MjM0MDMsMjQwNjEsMjU2MTMsMzM5ODQsMzY5NTYsMzkxMzcsMjk1NzUsMjM0MzUsMjQ3MzAsMjY0OTQsMjgxMjYsMzUzNTksMzU0OTQsMzY4NjUsMzg5MjQsMjEwNDcsNjM4NTYsMjg3NTMsMzA4NjIsMzc3ODIsMzQ5MjgsMzczMzUsMjA0NjIsMjE0NjMsMjIwMTMsMjIyMzQsMjI0MDIsMjI3''@;'; put 'put ''ODEsMjMyMzQsMjM0MzIsMjM3MjMsMjM3NDQsMjQxMDEsMjQ4MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjUxMDEsMjUxNjMsMjU0ODAsMjU2MjgsMjU5MTAsMjU5NzYsMjcxOTMsMjc1MzAsMjc3MDAsMjc5MjksMjg0NjUsMjkxNTksMjk0MTcsMjk1NjAsMjk3MDMsMjk4NzQsMzAyNDYsMzA1NjEsMzExNjgsMzEzMTksMzE0NjYsMzE5MjksMzIxNDMsMzIx''@;'; put 'put ''NzIsMzIzNTMsMzI2NzAsMzMwNjUsMzM1ODUsMzM5MzYsMzQwMTAsMzQyODIsMzQ5NjYsMzU1MDQsMzU3MjgsMzY2NjQsMzY5MzAsMzY5OTUsMzcyMjgsMzc1MjYsMzc1NjEsMzg1MzksMzg1NjcsMzg1NjgsMzg2MTQsMzg2NTYsMzg5MjAsMzkzMTgsMzk2MzUsMzk3MDYsMjE0NjAsMjI2NTQs''@;'; put 'put ''MjI4MDksMjM0MDgsMjM0ODcsMjgxMTMsMjg1MDYsMjkwODcsMjk3MjksMjk4ODEsMzI5MDEsMzM3ODksMjQwMzMsMjQ0NTUsMjQ0OTAsMjQ2NDIsMjYwOTIsMjY2NDIsMjY5OTEsMjcyMTksMjc1MjksMjc5NTcsMjgxNDcsMjk2NjcsMzA0NjIsMzA2MzYsMzE1NjUsMzIwMjAsMzMwNTksMzMz''@;'; put 'put ''MDgsMzM2MDAsMzQwMzYsMzQxNDcsMzU0MjYsMzU1MjQsMzcyNTUsMzc2NjIsMzg5MTgsMzkzNDgsMjUxMDAsMzQ4OTksMzY4NDgsMzc0NzcsMjM4MTUsMjM4NDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjM5MTMsMjk3OTEsMzMxODEsMzQ2NjQsMjg2MjksMjUzNDIsMzI3MjIsMzUxMjYsMzUxODYsMTk5OTgsMjAwNTYsMjA3MTEsMjEyMTMsMjEzMTksMjUy''@;'; put 'put ''MTUsMjYxMTksMzIzNjEsMzQ4MjEsMzg0OTQsMjAzNjUsMjEyNzMsMjIwNzAsMjI5ODcsMjMyMDQsMjM2MDgsMjM2MzAsMjM2MjksMjQwNjYsMjQzMzcsMjQ2NDMsMjYwNDUsMjYxNTksMjYxNzgsMjY1NTgsMjY2MTIsMjk0NjgsMzA2OTAsMzEwMzQsMzI3MDksMzM5NDAsMzM5OTcsMzUyMjIs''@;'; put 'put ''MzU0MzAsMzU0MzMsMzU1NTMsMzU5MjUsMzU5NjIsMjI1MTYsMjM1MDgsMjQzMzUsMjQ2ODcsMjUzMjUsMjY4OTMsMjc1NDIsMjgyNTIsMjkwNjAsMzE2OTgsMzQ2NDUsMzU2NzIsMzY2MDYsMzkxMzUsMzkxNjYsMjAyODAsMjAzNTMsMjA0NDksMjE2MjcsMjMwNzIsMjM0ODAsMjQ4OTIsMjYw''@;'; put 'put ''MzIsMjYyMTYsMjkxODAsMzAwMDMsMzEwNzAsMzIwNTEsMzMxMDIsMzMyNTEsMzM2ODgsMzQyMTgsMzQyNTQsMzQ1NjMsMzUzMzgsMzY1MjMsMzY3NjMsNjM4NTcsMzY4MDUsMjI4MzMsMjM0NjAsMjM1MjYsMjQ3MTMsMjM1MjksMjM1NjMsMjQ1MTUsMjc3NzcsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NTgsMjgxNDUsMjg2ODMsMjk5NzgsMzM0NTUsMzU1''@;'; put 'put ''NzQsMjAxNjAsMjEzMTMsNjM4NTksMzg2MTcsMjc2NjMsMjAxMjYsMjA0MjAsMjA4MTgsMjE4NTQsMjMwNzcsMjM3ODQsMjUxMDUsMjkyNzMsMzM0NjksMzM3MDYsMzQ1NTgsMzQ5MDUsMzUzNTcsMzg0NjMsMzg1OTcsMzkxODcsNDAyMDEsNDAyODUsMjI1MzgsMjM3MzEsMjM5OTcsMjQxMzIs''@;'; put 'put ''MjQ4MDEsMjQ4NTMsMjU1NjksMjcxMzgsMjgxOTcsMzcxMjIsMzc3MTYsMzg5OTAsMzk5NTIsNDA4MjMsMjM0MzMsMjM3MzYsMjUzNTMsMjYxOTEsMjY2OTYsMzA1MjQsMzg1OTMsMzg3OTcsMzg5OTYsMzk4MzksMjYwMTcsMzU1ODUsMzY1NTUsMzgzMzIsMjE4MTMsMjM3MjEsMjQwMjIsMjQy''@;'; put 'put ''NDUsMjYyNjMsMzAyODQsMzM3ODAsMzgzNDMsMjI3MzksMjUyNzYsMjkzOTAsNDAyMzIsMjAyMDgsMjI4MzAsMjQ1OTEsMjYxNzEsMjc1MjMsMzEyMDcsNDAyMzAsMjEzOTUsMjE2OTYsMjI0NjcsMjM4MzAsMjQ4NTksMjYzMjYsMjgwNzksMzA4NjEsMzM0MDYsMzg1NTIsMzg3MjQsMjEzODAs''@;'; put 'put ''MjUyMTIsMjU0OTQsMjgwODIsMzIyNjYsMzMwOTksMzg5ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsMjczODcsMzI1ODgsNDAzNjcsNDA0NzQsMjAwNjMsMjA1MzksMjA5MTgsMjI4MTIsMjQ4MjUsMjU1OTAsMjY5MjgsMjkyNDIsMzI4MjIsNjM4NjAsMzczMjYsMjQzNjksNjM4NjEsNjM4NjIsMzIwMDQsMzM1MDksMzM5MDMsMzM5NzksMzQyNzcsMzY0OTMs''@;'; put 'put ''NjM4NjMsMjAzMzUsNjM4NjQsNjM4NjUsMjI3NTYsMjMzNjMsMjQ2NjUsMjU1NjIsMjU4ODAsMjU5NjUsMjYyNjQsNjM4NjYsMjY5NTQsMjcxNzEsMjc5MTUsMjg2NzMsMjkwMzYsMzAxNjIsMzAyMjEsMzExNTUsMzEzNDQsNjM4NjcsMzI2NTAsNjM4NjgsMzUxNDAsNjM4NjksMzU3MzEsMzcz''@;'; put 'put ''MTIsMzg1MjUsNjM4NzAsMzkxNzgsMjIyNzYsMjQ0ODEsMjYwNDQsMjg0MTcsMzAyMDgsMzExNDIsMzU0ODYsMzkzNDEsMzk3NzAsNDA4MTIsMjA3NDAsMjUwMTQsMjUyMzMsMjcyNzcsMzMyMjIsMjA1NDcsMjI1NzYsMjQ0MjIsMjg5MzcsMzUzMjgsMzU1NzgsMjM0MjAsMzQzMjYsMjA0NzQs''@;'; put 'put ''MjA3OTYsMjIxOTYsMjI4NTIsMjU1MTMsMjgxNTMsMjM5NzgsMjY5ODksMjA4NzAsMjAxMDQsMjAzMTMsNjM4NzEsNjM4NzIsNjM4NzMsMjI5MTQsNjM4NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NzUsMjc0ODcsMjc3NDEsNjM4NzYsMjk4NzcsMzA5OTgsNjM4NzcsMzMyODcsMzMzNDksMzM1OTMsMzY2NzEsMzY3MDEsNjM4NzgsMzkxOTIsNjM4Nzks''@;'; put 'put ''NjM4ODAsNjM4ODEsMjAxMzQsNjM4ODIsMjI0OTUsMjQ0NDEsMjYxMzEsNjM4ODMsNjM4ODQsMzAxMjMsMzIzNzcsMzU2OTUsNjM4ODUsMzY4NzAsMzk1MTUsMjIxODEsMjI1NjcsMjMwMzIsMjMwNzEsMjM0NzYsNjM4ODYsMjQzMTAsNjM4ODcsNjM4ODgsMjU0MjQsMjU0MDMsNjM4ODksMjY5''@;'; put 'put ''NDEsMjc3ODMsMjc4MzksMjgwNDYsMjgwNTEsMjgxNDksMjg0MzYsNjM4OTAsMjg4OTUsMjg5ODIsMjkwMTcsNjM4OTEsMjkxMjMsMjkxNDEsNjM4OTIsMzA3OTksMzA4MzEsNjM4OTMsMzE2MDUsMzIyMjcsNjM4OTQsMzIzMDMsNjM4OTUsMzQ4OTMsMzY1NzUsNjM4OTYsNjM4OTcsNjM4OTgs''@;'; put 'put ''Mzc0NjcsNjM4OTksNDAxODIsNjM5MDAsNjM5MDEsNjM5MDIsMjQ3MDksMjgwMzcsNjM5MDMsMjkxMDUsNjM5MDQsNjM5MDUsMzgzMjEsMjE0MjEsNjM5MDYsNjM5MDcsNjM5MDgsMjY1NzksNjM5MDksMjg4MTQsMjg5NzYsMjk3NDQsMzMzOTgsMzM0OTAsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5MTAsMzgzMzEsMzk2NTMsNDA1NzMsMjYzMDgsNjM5MTEs''@;'; put 'put ''MjkxMjEsMzM4NjUsNjM5MTIsNjM5MTMsMjI2MDMsNjM5MTQsNjM5MTUsMjM5OTIsMjQ0MzMsNjM5MTYsMjYxNDQsMjYyNTQsMjcwMDEsMjcwNTQsMjc3MDQsMjc4OTEsMjgyMTQsMjg0ODEsMjg2MzQsMjg2OTksMjg3MTksMjkwMDgsMjkxNTEsMjk1NTIsNjM5MTcsMjk3ODcsNjM5MTgsMjk5''@;'; put 'put ''MDgsMzA0MDgsMzEzMTAsMzI0MDMsNjM5MTksNjM5MjAsMzM1MjEsMzU0MjQsMzY4MTQsNjM5MjEsMzc3MDQsNjM5MjIsMzg2ODEsNjM5MjMsNjM5MjQsMjAwMzQsMjA1MjIsNjM5MjUsMjFlMywyMTQ3MywyNjM1NSwyNzc1NywyODYxOCwyOTQ1MCwzMDU5MSwzMTMzMCwzMzQ1NCwzNDI2OSwz''@;'; put 'put ''NDMwNiw2MzkyNiwzNTAyOCwzNTQyNywzNTcwOSwzNTk0Nyw2MzkyNywzNzU1NSw2MzkyOCwzODY3NSwzODkyOCwyMDExNiwyMDIzNywyMDQyNSwyMDY1OCwyMTMyMCwyMTU2NiwyMTU1NSwyMTk3OCwyMjYyNiwyMjcxNCwyMjg4NywyMzA2NywyMzUyNCwyNDczNSw2MzkyOSwyNTAzNCwyNTk0''@;'; put 'put ''MiwyNjExMSwyNjIxMiwyNjc5MSwyNzczOCwyODU5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCwyODg3OSwyOTEwMCwyOTUyMiwzMTYxMywzNDU2OCwzNTQ5MiwzOTk4Niw0MDcxMSwyMzYyNywyNzc3OSwyOTUwOCwyOTU3NywzNzQzNCwyODMzMSwyOTc5NywzMDIzOSwzMTMzNywzMjI3NywzNDMxNCwyMDgwMCwyMjcyNSwyNTc5MywyOTkzNCwyOTk3MywzMDMy''@;'; put 'put ''MCwzMjcwNSwzNzAxMywzODYwNSwzOTI1MiwyODE5OCwyOTkyNiwzMTQwMSwzMTQwMiwzMzI1MywzNDUyMSwzNDY4MCwzNTM1NSwyMzExMywyMzQzNiwyMzQ1MSwyNjc4NSwyNjg4MCwyODAwMywyOTYwOSwyOTcxNSwyOTc0MCwzMDg3MSwzMjIzMywzMjc0NywzMzA0OCwzMzEwOSwzMzY5NCwz''@;'; put 'put ''NTkxNiwzODQ0NiwzODkyOSwyNjM1MiwyNDQ0OCwyNjEwNiwyNjUwNSwyNzc1NCwyOTU3OSwyMDUyNSwyMzA0MywyNzQ5OCwzMDcwMiwyMjgwNiwyMzkxNiwyNDAxMywyOTQ3NywzMDAzMSw2MzkzMCw2MzkzMSwyMDcwOSwyMDk4NSwyMjU3NSwyMjgyOSwyMjkzNCwyMzAwMiwyMzUyNSw2Mzkz''@;'; put 'put ''Miw2MzkzMywyMzk3MCwyNTMwMywyNTYyMiwyNTc0NywyNTg1NCw2MzkzNCwyNjMzMiw2MzkzNSwyNzIwOCw2MzkzNiwyOTE4MywyOTc5Niw2MzkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTM2OCwzMTQwNywzMjMyNywzMjM1MCwzMjc2OCwzMzEzNiw2MzkzOCwzNDc5OSwzNTIwMSwzNTYxNiwzNjk1Myw2MzkzOSwzNjk5MiwzOTI1MCwyNDk1OCwyNzQ0''@;'; put 'put ''MiwyODAyMCwzMjI4NywzNTEwOSwzNjc4NSwyMDQzMywyMDY1MywyMDg4NywyMTE5MSwyMjQ3MSwyMjY2NSwyMzQ4MSwyNDI0OCwyNDg5OCwyNzAyOSwyODA0NCwyODI2MywyODM0MiwyOTA3NiwyOTc5NCwyOTk5MiwyOTk5NiwzMjg4MywzMzU5MiwzMzk5MywzNjM2MiwzNzc4MCwzNzg1NCw2''@;'; put 'put ''Mzk0MCwyMDExMCwyMDMwNSwyMDU5OCwyMDc3OCwyMTQ0OCwyMTQ1MSwyMTQ5MSwyMzQzMSwyMzUwNywyMzU4OCwyNDg1OCwyNDk2MiwyNjEwMCwyOTI3NSwyOTU5MSwyOTc2MCwzMDQwMiwzMTA1NiwzMTEyMSwzMTE2MSwzMjAwNiwzMjcwMSwzMzQxOSwzNDI2MSwzNDM5OCwzNjgwMiwzNjkz''@;'; put 'put ''NSwzNzEwOSwzNzM1NCwzODUzMywzODYzMiwzODYzMywyMTIwNiwyNDQyMywyNjA5MywyNjE2MSwyNjY3MSwyOTAyMCwzMTI4NiwzNzA1NywzODkyMiwyMDExMyw2Mzk0MSwyNzIxOCwyNzU1MCwyODU2MCwyOTA2NSwzMjc5MiwzMzQ2NCwzNDEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjkzOSwzODU0OSwzODY0MiwzODkwNywzNDA3NCwzOTcyOSwyMDEx''@;'; put 'put ''MiwyOTA2NiwzODU5NiwyMDgwMywyMTQwNywyMTcyOSwyMjI5MSwyMjI5MCwyMjQzNSwyMzE5NSwyMzIzNiwyMzQ5MSwyNDYxNiwyNDg5NSwyNTU4OCwyNzc4MSwyNzk2MSwyODI3NCwyODMwNCwyOTIzMiwyOTUwMywyOTc4MywzMzQ4OSwzNDk0NSwzNjY3NywzNjk2MCw2Mzk0MiwzODQ5OCwz''@;'; put 'put ''OWUzLDQwMjE5LDI2Mzc2LDM2MjM0LDM3NDcwLDIwMzAxLDIwNTUzLDIwNzAyLDIxMzYxLDIyMjg1LDIyOTk2LDIzMDQxLDIzNTYxLDI0OTQ0LDI2MjU2LDI4MjA1LDI5MjM0LDI5NzcxLDMyMjM5LDMyOTYzLDMzODA2LDMzODk0LDM0MTExLDM0NjU1LDM0OTA3LDM1MDk2LDM1NTg2LDM2OTQ5''@;'; put 'put ''LDM4ODU5LDM5NzU5LDIwMDgzLDIwMzY5LDIwNzU0LDIwODQyLDYzOTQzLDIxODA3LDIxOTI5LDIzNDE4LDIzNDYxLDI0MTg4LDI0MTg5LDI0MjU0LDI0NzM2LDI0Nzk5LDI0ODQwLDI0ODQxLDI1NTQwLDI1OTEyLDI2Mzc3LDYzOTQ0LDI2NTgwLDI2NTg2LDYzOTQ1LDI2OTc3LDI2OTc4LDI3''@;'; put 'put ''ODMzLDI3OTQzLDYzOTQ2LDI4MjE2LDYzOTQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLDI4NjQxLDI5NDk0LDI5NDk1LDYzOTQ4LDI5Nzg4LDMwMDAxLDYzOTQ5LDMwMjkwLDYzOTUwLDYzOTUxLDMyMTczLDMzMjc4LDMzODQ4LDM1MDI5LDM1NDgwLDM1NTQ3LDM1NTY1LDM2NDAwLDM2NDE4LDM2OTM4LDM2OTI2LDM2OTg2LDM3MTkzLDM3MzIxLDM3NzQyLDYz''@;'; put 'put ''OTUyLDYzOTUzLDIyNTM3LDYzOTU0LDI3NjAzLDMyOTA1LDMyOTQ2LDYzOTU1LDYzOTU2LDIwODAxLDIyODkxLDIzNjA5LDYzOTU3LDYzOTU4LDI4NTE2LDI5NjA3LDMyOTk2LDM2MTAzLDYzOTU5LDM3Mzk5LDM4Mjg3LDYzOTYwLDYzOTYxLDYzOTYyLDYzOTYzLDMyODk1LDI1MTAyLDI4NzAw''@;'; put 'put ''LDMyMTA0LDM0NzAxLDYzOTY0LDIyNDMyLDI0NjgxLDI0OTAzLDI3NTc1LDM1NTE4LDM3NTA0LDM4NTc3LDIwMDU3LDIxNTM1LDI4MTM5LDM0MDkzLDM4NTEyLDM4ODk5LDM5MTUwLDI1NTU4LDI3ODc1LDM3MDA5LDIwOTU3LDI1MDMzLDMzMjEwLDQwNDQxLDIwMzgxLDIwNTA2LDIwNzM2LDIz''@;'; put 'put ''NDUyLDI0ODQ3LDI1MDg3LDI1ODM2LDI2ODg1LDI3NTg5LDMwMDk3LDMwNjkxLDMyNjgxLDMzMzgwLDM0MTkxLDM0ODExLDM0OTE1LDM1NTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM1Njk2LDM3MjkxLDIwMTA4LDIwMTk3LDIwMjM0LDYzOTY1LDYzOTY2LDIyODM5LDIzMDE2LDYzOTY3LDI0MDUwLDI0MzQ3LDI0NDExLDI0NjA5LDYzOTY4LDYzOTY5LDYz''@;'; put 'put ''OTcwLDYzOTcxLDI5MjQ2LDI5NjY5LDYzOTcyLDMwMDY0LDMwMTU3LDYzOTczLDMxMjI3LDYzOTc0LDMyNzgwLDMyODE5LDMyOTAwLDMzNTA1LDMzNjE3LDYzOTc1LDYzOTc2LDM2MDI5LDM2MDE5LDM2OTk5LDYzOTc3LDYzOTc4LDM5MTU2LDM5MTgwLDYzOTc5LDYzOTgwLDI4NzI3LDMwNDEw''@;'; put 'put ''LDMyNzE0LDMyNzE2LDMyNzY0LDM1NjEwLDIwMTU0LDIwMTYxLDIwOTk1LDIxMzYwLDYzOTgxLDIxNjkzLDIyMjQwLDIzMDM1LDIzNDkzLDI0MzQxLDI0NTI1LDI4MjcwLDYzOTgyLDYzOTgzLDMyMTA2LDMzNTg5LDYzOTg0LDM0NDUxLDM1NDY5LDYzOTg1LDM4NzY1LDM4Nzc1LDYzOTg2LDYz''@;'; put 'put ''OTg3LDE5OTY4LDIwMzE0LDIwMzUwLDIyNzc3LDI2MDg1LDI4MzIyLDM2OTIwLDM3ODA4LDM5MzUzLDIwMjE5LDIyNzY0LDIyOTIyLDIzMDAxLDI0NjQxLDYzOTg4LDYzOTg5LDMxMjUyLDYzOTkwLDMzNjE1LDM2MDM1LDIwODM3LDIxMzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTkxLDYzOTkyLDYzOTkzLDIwMTczLDIxMDk3LDIzMzgxLDMzNDcxLDIw''@;'; put 'put ''MTgwLDIxMDUwLDIxNjcyLDIyOTg1LDIzMDM5LDIzMzc2LDIzMzgzLDIzMzg4LDI0Njc1LDI0OTA0LDI4MzYzLDI4ODI1LDI5MDM4LDI5NTc0LDI5OTQzLDMwMTMzLDMwOTEzLDMyMDQzLDMyNzczLDMzMjU4LDMzNTc2LDM0MDcxLDM0MjQ5LDM1NTY2LDM2MDM5LDM4NjA0LDIwMzE2LDIxMjQy''@;'; put 'put ''LDIyMjA0LDI2MDI3LDI2MTUyLDI4Nzk2LDI4ODU2LDI5MjM3LDMyMTg5LDMzNDIxLDM3MTk2LDM4NTkyLDQwMzA2LDIzNDA5LDI2ODU1LDI3NTQ0LDI4NTM4LDMwNDMwLDIzNjk3LDI2MjgzLDI4NTA3LDMxNjY4LDMxNzg2LDM0ODcwLDM4NjIwLDE5OTc2LDIwMTgzLDIxMjgwLDIyNTgwLDIy''@;'; put 'put ''NzE1LDIyNzY3LDIyODkyLDIzNTU5LDI0MTE1LDI0MTk2LDI0MzczLDI1NDg0LDI2MjkwLDI2NDU0LDI3MTY3LDI3Mjk5LDI3NDA0LDI4NDc5LDI5MjU0LDYzOTk0LDI5NTIwLDI5ODM1LDMxNDU2LDMxOTExLDMzMTQ0LDMzMjQ3LDMzMjU1LDMzNjc0LDMzOTAwLDM0MDgzLDM0MTk2LDM0MjU1''@;'; put 'put ''LDM1MDM3LDM2MTE1LDM3MjkyLDM4MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLDM4NTU2LDIwODc3LDIxNzA1LDIyMzEyLDIzNDcyLDI1MTY1LDI2NDQ4LDI2Njg1LDI2NzcxLDI4MjIxLDI4MzcxLDI4Nzk3LDMyMjg5LDM1MDA5LDM2MDAxLDM2NjE3LDQwNzc5LDQwNzgyLDI5MjI5LDMxNjMxLDM1NTMzLDM3NjU4LDIwMjk1LDIwMzAyLDIwNzg2LDIxNjMy''@;'; put 'put ''LDIyOTkyLDI0MjEzLDI1MjY5LDI2NDg1LDI2OTkwLDI3MTU5LDI3ODIyLDI4MTg2LDI5NDAxLDI5NDgyLDMwMTQxLDMxNjcyLDMyMDUzLDMzNTExLDMzNzg1LDMzODc5LDM0Mjk1LDM1NDE5LDM2MDE1LDM2NDg3LDM2ODg5LDM3MDQ4LDM4NjA2LDQwNzk5LDIxMjE5LDIxNTE0LDIzMjY1LDIz''@;'; put 'put ''NDkwLDI1Njg4LDI1OTczLDI4NDA0LDI5MzgwLDYzOTk1LDMwMzQwLDMxMzA5LDMxNTE1LDMxODIxLDMyMzE4LDMyNzM1LDMzNjU5LDM1NjI3LDM2MDQyLDM2MTk2LDM2MzIxLDM2NDQ3LDM2ODQyLDM2ODU3LDM2OTY5LDM3ODQxLDIwMjkxLDIwMzQ2LDIwNjU5LDIwODQwLDIwODU2LDIxMDY5''@;'; put 'put ''LDIxMDk4LDIyNjI1LDIyNjUyLDIyODgwLDIzNTYwLDIzNjM3LDI0MjgzLDI0NzMxLDI1MTM2LDI2NjQzLDI3NTgzLDI3NjU2LDI4NTkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDA2LDI5NzI4LDNlNCwzMDAwOCwzMDAzMywzMDMyMiwzMTU2NCwzMTYyNywzMTY2MSwzMTY4NiwzMjM5OSwzNTQzOCwzNjY3MCwzNjY4MSwzNzQzOSwzNzUyMywzNzY2Niwz''@;'; put 'put ''NzkzMSwzODY1MSwzOTAwMiwzOTAxOSwzOTE5OCwyMDk5OSwyNTEzMCwyNTI0MCwyNzk5MywzMDMwOCwzMTQzNCwzMTY4MCwzMjExOCwyMTM0NCwyMzc0MiwyNDIxNSwyODQ3MiwyODg1NywzMTg5NiwzODY3MywzOTgyMiw0MDY3MCwyNTUwOSwyNTcyMiwzNDY3OCwxOTk2OSwyMDExNywyMDE0''@;'; put 'put ''MSwyMDU3MiwyMDU5NywyMTU3NiwyMjk3OSwyMzQ1MCwyNDEyOCwyNDIzNywyNDMxMSwyNDQ0OSwyNDc3MywyNTQwMiwyNTkxOSwyNTk3MiwyNjA2MCwyNjIzMCwyNjIzMiwyNjYyMiwyNjk4NCwyNzI3MywyNzQ5MSwyNzcxMiwyODA5NiwyODEzNiwyODE5MSwyODI1NCwyODcwMiwyODgzMywy''@;'; put 'put ''OTU4MiwyOTY5MywzMDAxMCwzMDU1NSwzMDg1NSwzMTExOCwzMTI0MywzMTM1NywzMTkzNCwzMjE0MiwzMzM1MSwzNTMzMCwzNTU2MiwzNTk5OCwzNzE2NSwzNzE5NCwzNzMzNiwzNzQ3OCwzNzU4MCwzNzY2NCwzODY2MiwzODc0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODc0OCwzODkxNCw0MDcxOCwyMTA0NiwyMTEzNywyMTg4NCwyMjU2NCwyNDA5Mywy''@;'; put 'put ''NDM1MSwyNDcxNiwyNTU1MiwyNjc5OSwyODYzOSwzMTA4NSwzMTUzMiwzMzIyOSwzNDIzNCwzNTA2OSwzNTU3NiwzNjQyMCwzNzI2MSwzODUwMCwzODU1NSwzODcxNywzODk4OCw0MDc3OCwyMDQzMCwyMDgwNiwyMDkzOSwyMTE2MSwyMjA2NiwyNDM0MCwyNDQyNywyNTUxNCwyNTgwNSwyNjA4''@;'; put 'put ''OSwyNjE3NywyNjM2MiwyNjM2MSwyNjM5NywyNjc4MSwyNjgzOSwyNzEzMywyODQzNywyODUyNiwyOTAzMSwyOTE1NywyOTIyNiwyOTg2NiwzMDUyMiwzMTA2MiwzMTA2NiwzMTE5OSwzMTI2NCwzMTM4MSwzMTg5NSwzMTk2NywzMjA2OCwzMjM2OCwzMjkwMywzNDI5OSwzNDQ2OCwzNTQxMiwz''@;'; put 'put ''NTUxOSwzNjI0OSwzNjQ4MSwzNjg5NiwzNjk3MywzNzM0NywzODQ1OSwzODYxMyw0MDE2NSwyNjA2MywzMTc1MSwzNjI3NSwzNzgyNywyMzM4NCwyMzU2MiwyMTMzMCwyNTMwNSwyOTQ2OSwyMDUxOSwyMzQ0NywyNDQ3OCwyNDc1MiwyNDkzOSwyNjgzNywyODEyMSwyOTc0MiwzMTI3OCwzMjA2''@;'; put 'put ''NiwzMjE1NiwzMjMwNSwzMzEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCwzNjM5NCwzNjQwNSwzNzc1OCwzNzkxMiwyMDMwNCwyMjM1MiwyNDAzOCwyNDIzMSwyNTM4NywzMjYxOCwyMDAyNywyMDMwMywyMDM2NywyMDU3MCwyMzAwNSwzMjk2NCwyMTYxMCwyMTYwOCwyMjAxNCwyMjg2MywyMzQ0OSwyNDAzMCwyNDI4MiwyNjIwNSwyNjQxNywyNjYwOSwyNjY2''@;'; put 'put ''NiwyNzg4MCwyNzk1NCwyODIzNCwyODU1NywyODg1NSwyOTY2NCwzMDA4NywzMTgyMCwzMjAwMiwzMjA0NCwzMjE2MiwzMzMxMSwzNDUyMywzNTM4NywzNTQ2MSwzNjIwOCwzNjQ5MCwzNjY1OSwzNjkxMywzNzE5OCwzNzIwMiwzNzk1NiwzOTM3NiwzMTQ4MSwzMTkwOSwyMDQyNiwyMDczNywy''@;'; put 'put ''MDkzNCwyMjQ3MiwyMzUzNSwyMzgwMywyNjIwMSwyNzE5NywyNzk5NCwyODMxMCwyODY1MiwyODk0MCwzMDA2MywzMTQ1OSwzNDg1MCwzNjg5NywzNjk4MSwzODYwMywzOTQyMywzMzUzNywyMDAxMywyMDIxMCwzNDg4NiwzNzMyNSwyMTM3MywyNzM1NSwyNjk4NywyNzcxMywzMzkxNCwyMjY4''@;'; put 'put ''NiwyNDk3NCwyNjM2NiwyNTMyNywyODg5MywyOTk2OSwzMDE1MSwzMjMzOCwzMzk3NiwzNTY1NywzNjEwNCwyMDA0MywyMTQ4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTY3NSwyMjMyMCwyMjMzNiwyNDUzNSwyNTM0NSwyNTM1MSwyNTcxMSwyNTkwMywyNjA4OCwyNjIzNCwyNjUyNSwyNjU0NywyNzQ5MCwyNzc0NCwyNzgwMiwyODQ2MCwzMDY5MywzMDc1''@;'; put 'put ''NywzMTA0OSwzMTA2MywzMjAyNSwzMjkzMCwzMzAyNiwzMzI2NywzMzQzNywzMzQ2MywzNDU4NCwzNTQ2OCw2Mzk5NiwzNjEwMCwzNjI4NiwzNjk3OCwzMDQ1MiwzMTI1NywzMTI4NywzMjM0MCwzMjg4NywyMTc2NywyMTk3MiwyMjY0NSwyNTM5MSwyNTYzNCwyNjE4NSwyNjE4NywyNjczMywy''@;'; put 'put ''NzAzNSwyNzUyNCwyNzk0MSwyODMzNywyOTY0NSwyOTgwMCwyOTg1NywzMDA0MywzMDEzNywzMDQzMywzMDQ5NCwzMDYwMywzMTIwNiwzMjI2NSwzMjI4NSwzMzI3NSwzNDA5NSwzNDk2NywzNTM4NiwzNjA0OSwzNjU4NywzNjc4NCwzNjkxNCwzNzgwNSwzODQ5OSwzODUxNSwzODY2MywyMDM1''@;'; put 'put ''NiwyMTQ4OSwyMzAxOCwyMzI0MSwyNDA4OSwyNjcwMiwyOTg5NCwzMDE0MiwzMTIwOSwzMTM3OCwzMzE4NywzNDU0MSwzNjA3NCwzNjMwMCwzNjg0NSwyNjAxNSwyNjM4OSw2Mzk5NywyMjUxOSwyODUwMywzMjIyMSwzNjY1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNzg3OCwzODU5OCwyNDUwMSwyNTA3NCwyODU0OCwxOTk4OCwyMDM3NiwyMDUxMSwyMTQ0''@;'; put 'put ''OSwyMTk4MywyMzkxOSwyNDA0NiwyNzQyNSwyNzQ5MiwzMDkyMywzMTY0Miw2Mzk5OCwzNjQyNSwzNjU1NCwzNjk3NCwyNTQxNywyNTY2MiwzMDUyOCwzMTM2NCwzNzY3OSwzODAxNSw0MDgxMCwyNTc3NiwyODU5MSwyOTE1OCwyOTg2NCwyOTkxNCwzMTQyOCwzMTc2MiwzMjM4NiwzMTkyMiwz''@;'; put 'put ''MjQwOCwzNTczOCwzNjEwNiwzODAxMywzOTE4NCwzOTI0NCwyMTA0OSwyMzUxOSwyNTgzMCwyNjQxMywzMjA0NiwyMDcxNywyMTQ0MywyMjY0OSwyNDkyMCwyNDkyMSwyNTA4MiwyNjAyOCwzMTQ0OSwzNTczMCwzNTczNCwyMDQ4OSwyMDUxMywyMTEwOSwyMTgwOSwyMzEwMCwyNDI4OCwyNDQz''@;'; put 'put ''MiwyNDg4NCwyNTk1MCwyNjEyNCwyNjE2NiwyNjI3NCwyNzA4NSwyODM1NiwyODQ2NiwyOTQ2MiwzMDI0MSwzMTM3OSwzMzA4MSwzMzM2OSwzMzc1MCwzMzk4MCwyMDY2MSwyMjUxMiwyMzQ4OCwyMzUyOCwyNDQyNSwyNTUwNSwzMDc1OCwzMjE4MSwzMzc1NiwzNDA4MSwzNzMxOSwzNzM2NSwy''@;'; put 'put ''MDg3NCwyNjYxMywzMTU3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCwzNjAxMiwyMDkzMiwyMjk3MSwyNDc2NSwzNDM4OSwyMDUwOCw2Mzk5OSwyMTA3NiwyMzYxMCwyNDk1NywyNTExNCwyNTI5OSwyNTg0MiwyNjAyMSwyODM2NCwzMDI0MCwzMzAzNCwzNjQ0OCwzODQ5NSwzODU4NywyMDE5MSwyMTMxNSwyMTkxMiwyMjgyNSwyNDAyOSwyNTc5NywyNzg0OSwy''@;'; put 'put ''ODE1NCwyOTU4OCwzMTM1OSwzMzMwNywzNDIxNCwzNjA2OCwzNjM2OCwzNjk4MywzNzM1MSwzODM2OSwzODQzMywzODg1NCwyMDk4NCwyMTc0NiwyMTg5NCwyNDUwNSwyNTc2NCwyODU1MiwzMjE4MCwzNjYzOSwzNjY4NSwzNzk0MSwyMDY4MSwyMzU3NCwyNzgzOCwyODE1NSwyOTk3OSwzMDY1''@;'; put 'put ''MSwzMTgwNSwzMTg0NCwzNTQ0OSwzNTUyMiwyMjU1OCwyMjk3NCwyNDA4NiwyNTQ2MywyOTI2NiwzMDA5MCwzMDU3MSwzNTU0OCwzNjAyOCwzNjYyNiwyNDMwNywyNjIyOCwyODE1MiwzMjg5MywzMzcyOSwzNTUzMSwzODczNywzOTg5NCw2NGUzLDIxMDU5LDI2MzY3LDI4MDUzLDI4Mzk5LDMy''@;'; put 'put ''MjI0LDM1NTU4LDM2OTEwLDM2OTU4LDM5NjM2LDIxMDIxLDIxMTE5LDIxNzM2LDI0OTgwLDI1MjIwLDI1MzA3LDI2Nzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODk4LDI2OTcwLDI3MTg5LDI4ODE4LDI4OTY2LDMwODEzLDMwOTc3LDMwOTkwLDMxMTg2LDMxMjQ1LDMyOTE4LDMzNDAwLDMzNDkzLDMzNjA5LDM0MTIxLDM1OTcwLDM2MjI5LDM3MjE4LDM3''@;'; put 'put ''MjU5LDM3Mjk0LDIwNDE5LDIyMjI1LDI5MTY1LDMwNjc5LDM0NTYwLDM1MzIwLDIzNTQ0LDI0NTM0LDI2NDQ5LDM3MDMyLDIxNDc0LDIyNjE4LDIzNTQxLDI0NzQwLDI0OTYxLDI1Njk2LDMyMzE3LDMyODgwLDM0MDg1LDM3NTA3LDI1Nzc0LDIwNjUyLDIzODI4LDI2MzY4LDIyNjg0LDI1Mjc3''@;'; put 'put ''LDI1NTEyLDI2ODk0LDI3ZTMsMjcxNjYsMjgyNjcsMzAzOTQsMzExNzksMzM0NjcsMzM4MzMsMzU1MzUsMzYyNjQsMzY4NjEsMzcxMzgsMzcxOTUsMzcyNzYsMzc2NDgsMzc2NTYsMzc3ODYsMzg2MTksMzk0NzgsMzk5NDksMTk5ODUsMzAwNDQsMzEwNjksMzE0ODIsMzE1NjksMzE2ODksMzIz''@;'; put 'put ''MDIsMzM5ODgsMzY0NDEsMzY0NjgsMzY2MDAsMzY4ODAsMjYxNDksMjY5NDMsMjk3NjMsMjA5ODYsMjY0MTQsNDA2NjgsMjA4MDUsMjQ1NDQsMjc3OTgsMzQ4MDIsMzQ5MDksMzQ5MzUsMjQ3NTYsMzMyMDUsMzM3OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYxMDEsMjE0NjIsMjE1NjEsMjIwNjgsMjMwOTQsMjM2MDEsMjg4MTAsMzI3MzYsMzI4NTgsMzMw''@;'; put 'put ''MzAsMzMyNjEsMzYyNTksMzcyNTcsMzk1MTksNDA0MzQsMjA1OTYsMjAxNjQsMjE0MDgsMjQ4MjcsMjgyMDQsMjM2NTIsMjAzNjAsMjA1MTYsMjE5ODgsMjM3NjksMjQxNTksMjQ2NzcsMjY3NzIsMjc4MzUsMjgxMDAsMjkxMTgsMzAxNjQsMzAxOTYsMzAzMDUsMzEyNTgsMzEzMDUsMzIxOTks''@;'; put 'put ''MzIyNTEsMzI2MjIsMzMyNjgsMzQ0NzMsMzY2MzYsMzg2MDEsMzkzNDcsNDA3ODYsMjEwNjMsMjExODksMzkxNDksMzUyNDIsMTk5NzEsMjY1NzgsMjg0MjIsMjA0MDUsMjM1MjIsMjY1MTcsMjc3ODQsMjgwMjQsMjk3MjMsMzA3NTksMzczNDEsMzc3NTYsMzQ3NTYsMzEyMDQsMzEyODEsMjQ1''@;'; put 'put ''NTUsMjAxODIsMjE2NjgsMjE4MjIsMjI3MDIsMjI5NDksMjQ4MTYsMjUxNzEsMjUzMDIsMjY0MjIsMjY5NjUsMzMzMzMsMzg0NjQsMzkzNDUsMzkzODksMjA1MjQsMjEzMzEsMjE4MjgsMjIzOTYsNjQwMDEsMjUxNzYsNjQwMDIsMjU4MjYsMjYyMTksMjY1ODksMjg2MDksMjg2NTUsMjk3MzAs''@;'; put 'put ''Mjk3NTIsMzUzNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc5''@;'; put 'put ''NDQsMjE1ODUsMjIwMjIsMjIzNzQsMjQzOTIsMjQ5ODYsMjc0NzAsMjg3NjAsMjg4NDUsMzIxODcsMzU0NzcsMjI4OTAsMzMwNjcsMjU1MDYsMzA0NzIsMzI4MjksMzYwMTAsMjI2MTIsMjU2NDUsMjcwNjcsMjM0NDUsMjQwODEsMjgyNzEsNjQwMDMsMzQxNTMsMjA4MTIsMjE0ODgsMjI4MjYs''@;'; put 'put ''MjQ2MDgsMjQ5MDcsMjc1MjYsMjc3NjAsMjc4ODgsMzE1MTgsMzI5NzQsMzM0OTIsMzYyOTQsMzcwNDAsMzkwODksNjQwMDQsMjU3OTksMjg1ODAsMjU3NDUsMjU4NjAsMjA4MTQsMjE1MjAsMjIzMDMsMzUzNDIsMjQ5MjcsMjY3NDIsNjQwMDUsMzAxNzEsMzE1NzAsMzIxMTMsMzY4OTAsMjI1''@;'; put 'put ''MzQsMjcwODQsMzMxNTEsMzUxMTQsMzY4NjQsMzg5NjksMjA2MDAsMjI4NzEsMjI5NTYsMjUyMzcsMzY4NzksMzk3MjIsMjQ5MjUsMjkzMDUsMzgzNTgsMjIzNjksMjMxMTAsMjQwNTIsMjUyMjYsMjU3NzMsMjU4NTAsMjY0ODcsMjc4NzQsMjc5NjYsMjkyMjgsMjk3NTAsMzA3NzIsMzI2MzEs''@;'; put 'put ''MzM0NTMsMzYzMTUsMzg5MzUsMjEwMjgsMjIzMzgsMjY0OTUsMjkyNTYsMjk5MjMsMzYwMDksMzY3NzQsMzczOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg0NDIsMjA4NDMsMjE0ODUsMjU0MjAsMjAzMjksMjE3NjQsMjQ3MjYsMjU5NDMsMjc4MDMsMjgwMzEsMjkyNjAsMjk0MzcsMzEyNTUsMzUyMDcsMzU5OTcsMjQ0MjksMjg1NTgsMjg5MjEsMzMxOTIs''@;'; put 'put ''MjQ4NDYsMjA0MTUsMjA1NTksMjUxNTMsMjkyNTUsMzE2ODcsMzIyMzIsMzI3NDUsMzY5NDEsMzg4MjksMzk0NDksMzYwMjIsMjIzNzgsMjQxNzksMjY1NDQsMzM4MDUsMzU0MTMsMjE1MzYsMjMzMTgsMjQxNjMsMjQyOTAsMjQzMzAsMjU5ODcsMzI5NTQsMzQxMDksMzgyODEsMzg0OTEsMjAy''@;'; put 'put ''OTYsMjEyNTMsMjEyNjEsMjEyNjMsMjE2MzgsMjE3NTQsMjIyNzUsMjQwNjcsMjQ1OTgsMjUyNDMsMjUyNjUsMjU0MjksNjQwMDYsMjc4NzMsMjgwMDYsMzAxMjksMzA3NzAsMzI5OTAsMzMwNzEsMzM1MDIsMzM4ODksMzM5NzAsMzQ5NTcsMzUwOTAsMzY4NzUsMzc2MTAsMzkxNjUsMzk4MjUs''@;'; put 'put ''MjQxMzMsMjYyOTIsMjYzMzMsMjg2ODksMjkxOTAsNjQwMDcsMjA0NjksMjExMTcsMjQ0MjYsMjQ5MTUsMjY0NTEsMjcxNjEsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU5NjEsMzkxMTEsMzkxMDgsMzk0OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2OTcsMzEyNjMsMjY5NjMsMzU1NzUsMzU5MTQsMzkwODAsMzkzNDIsMjQ0NDQsMjUyNTksMzAxMzAs''@;'; put 'put ''MzAzODIsMzQ5ODcsMzY5OTEsMzg0NjYsMjEzMDUsMjQzODAsMjQ1MTcsMjc4NTIsMjk2NDQsMzAwNTAsMzAwOTEsMzE1NTgsMzM1MzQsMzkzMjUsMjAwNDcsMzY5MjQsMTk5NzksMjAzMDksMjE0MTQsMjI3OTksMjQyNjQsMjYxNjAsMjc4MjcsMjk3ODEsMzM2NTUsMzQ2NjIsMzYwMzIsMzY5''@;'; put 'put ''NDQsMzg2ODYsMzk5NTcsMjI3MzcsMjM0MTYsMzQzODQsMzU2MDQsNDAzNzIsMjM1MDYsMjQ2ODAsMjQ3MTcsMjYwOTcsMjc3MzUsMjg0NTAsMjg1NzksMjg2OTgsMzI1OTcsMzI3NTIsMzgyODksMzgyOTAsMzg0ODAsMzg4NjcsMjExMDYsMzY2NzYsMjA5ODksMjE1NDcsMjE2ODgsMjE4NTks''@;'; put 'put ''MjE4OTgsMjczMjMsMjgwODUsMzIyMTYsMzMzODIsMzc1MzIsMzg1MTksNDA1NjksMjE1MTIsMjE3MDQsMzA0MTgsMzQ1MzIsMzgzMDgsMzgzNTYsMzg0OTIsMjAxMzAsMjAyMzMsMjMwMjIsMjMyNzAsMjQwNTUsMjQ2NTgsMjUyMzksMjY0NzcsMjY2ODksMjc3ODIsMjgyMDcsMzI1NjgsMzI5''@;'; put 'put ''MjMsMzMzMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjQwMDgs''@;'; put 'put ''NjQwMDksMzg5MTcsMjAxMzMsMjA1NjUsMjE2ODMsMjI0MTksMjI4NzQsMjM0MDEsMjM0NzUsMjUwMzIsMjY5OTksMjgwMjMsMjg3MDcsMzQ4MDksMzUyOTksMzU0NDIsMzU1NTksMzY5OTQsMzk0MDUsMzk2MDgsMjExODIsMjY2ODAsMjA1MDIsMjQxODQsMjY0NDcsMzM2MDcsMzQ4OTIsMjAx''@;'; put 'put ''MzksMjE1MjEsMjIxOTAsMjk2NzAsMzcxNDEsMzg5MTEsMzkxNzcsMzkyNTUsMzkzMjEsMjIwOTksMjI2ODcsMzQzOTUsMzUzNzcsMjUwMTAsMjczODIsMjk1NjMsMzY1NjIsMjc0NjMsMzg1NzAsMzk1MTEsMjI4NjksMjkxODQsMzYyMDMsMzg3NjEsMjA0MzYsMjM3OTYsMjQzNTgsMjUwODAs''@;'; put 'put ''MjYyMDMsMjc4ODMsMjg4NDMsMjk1NzIsMjk2MjUsMjk2OTQsMzA1MDUsMzA1NDEsMzIwNjcsMzIwOTgsMzIyOTEsMzMzMzUsMzQ4OTgsNjQwMTAsMzYwNjYsMzc0NDksMzkwMjMsMjMzNzcsMzEzNDgsMzQ4ODAsMzg5MTMsMjMyNDQsMjA0NDgsMjEzMzIsMjI4NDYsMjM4MDUsMjU0MDYsMjgw''@;'; put 'put ''MjUsMjk0MzMsMzMwMjksMzMwMzEsMzM2OTgsMzc1ODMsMzg5NjAsMjAxMzYsMjA4MDQsMjEwMDksMjI0MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQ0MTgsMjc4NDIsMjgzNjYsMjg2NzcsMjg3NTIsMjg4NDcsMjkwNzQsMjk2NzMsMjk4MDEsMzM2MTAsMzQ3MjIsMzQ5MTMsMzY4NzIsMzcwMjYsMzc3OTUsMzkzMzYsMjA4NDYsMjQ0MDcsMjQ4MDAsMjQ5''@;'; put 'put ''MzUsMjYyOTEsMzQxMzcsMzY0MjYsMzcyOTUsMzg3OTUsMjAwNDYsMjAxMTQsMjE2MjgsMjI3NDEsMjI3NzgsMjI5MDksMjM3MzMsMjQzNTksMjUxNDIsMjUxNjAsMjYxMjIsMjYyMTUsMjc2MjcsMjgwMDksMjgxMTEsMjgyNDYsMjg0MDgsMjg1NjQsMjg2NDAsMjg2NDksMjg3NjUsMjkzOTIs''@;'; put 'put ''Mjk3MzMsMjk3ODYsMjk5MjAsMzAzNTUsMzEwNjgsMzE5NDYsMzIyODYsMzI5OTMsMzM0NDYsMzM4OTksMzM5ODMsMzQzODIsMzQzOTksMzQ2NzYsMzU3MDMsMzU5NDYsMzc4MDQsMzg5MTIsMzkwMTMsMjQ3ODUsMjUxMTAsMzcyMzksMjMxMzAsMjYxMjcsMjgxNTEsMjgyMjIsMjk3NTksMzk3''@;'; put 'put ''NDYsMjQ1NzMsMjQ3OTQsMzE1MDMsMjE3MDAsMjQzNDQsMjc3NDIsMjc4NTksMjc5NDYsMjg4ODgsMzIwMDUsMzQ0MjUsMzUzNDAsNDAyNTEsMjEyNzAsMjE2NDQsMjMzMDEsMjcxOTQsMjg3NzksMzAwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzExMTcsMzExNjYsMzM0NTcsMzM3NzUsMzU0NDEsMzU2NDksMzYwMDgsMzg3NzIsNjQwMTEsMjU4NDQsMjU4''@;'; put 'put ''OTksMzA5MDYsMzA5MDcsMzEzMzksMjAwMjQsMjE5MTQsMjI4NjQsMjM0NjIsMjQxODcsMjQ3MzksMjU1NjMsMjc0ODksMjYyMTMsMjY3MDcsMjgxODUsMjkwMjksMjk4NzIsMzIwMDgsMzY5OTYsMzk1MjksMzk5NzMsMjc5NjMsMjgzNjksMjk1MDIsMzU5MDUsMzgzNDYsMjA5NzYsMjQxNDAs''@;'; put 'put ''MjQ0ODgsMjQ2NTMsMjQ4MjIsMjQ4ODAsMjQ5MDgsMjYxNzksMjYxODAsMjcwNDUsMjc4NDEsMjgyNTUsMjgzNjEsMjg1MTQsMjkwMDQsMjk4NTIsMzAzNDMsMzE2ODEsMzE3ODMsMzM2MTgsMzQ2NDcsMzY5NDUsMzg1NDEsNDA2NDMsMjEyOTUsMjIyMzgsMjQzMTUsMjQ0NTgsMjQ2NzQsMjQ3''@;'; put 'put ''MjQsMjUwNzksMjYyMTQsMjYzNzEsMjcyOTIsMjgxNDIsMjg1OTAsMjg3ODQsMjk1NDYsMzIzNjIsMzMyMTQsMzM1ODgsMzQ1MTYsMzU0OTYsMzYwMzYsMjExMjMsMjk1NTQsMjM0NDYsMjcyNDMsMzc4OTIsMjE3NDIsMjIxNTAsMjMzODksMjU5MjgsMjU5ODksMjYzMTMsMjY3ODMsMjgwNDUs''@;'; put 'put ''MjgxMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkyNDMsMzI5''@;'; put 'put ''NDgsMzcyMzcsMzk1MDEsMjAzOTksMjA1MDUsMjE0MDIsMjE1MTgsMjE1NjQsMjE4OTcsMjE5NTcsMjQxMjcsMjQ0NjAsMjY0MjksMjkwMzAsMjk2NjEsMzY4NjksMjEyMTEsMjEyMzUsMjI2MjgsMjI3MzQsMjg5MzIsMjkwNzEsMjkxNzksMzQyMjQsMzUzNDcsMjYyNDgsMzQyMTYsMjE5Mjcs''@;'; put 'put ''MjYyNDQsMjkwMDIsMzM4NDEsMjEzMjEsMjE5MTMsMjc1ODUsMjQ0MDksMjQ1MDksMjU1ODIsMjYyNDksMjg5OTksMzU1NjksMzY2MzcsNDA2MzgsMjAyNDEsMjU2NTgsMjg4NzUsMzAwNTQsMzQ0MDcsMjQ2NzYsMzU2NjIsNDA0NDAsMjA4MDcsMjA5ODIsMjEyNTYsMjc5NTgsMzMwMTYsNDA2''@;'; put 'put ''NTcsMjYxMzMsMjc0MjcsMjg4MjQsMzAxNjUsMjE1MDcsMjM2NzMsMzIwMDcsMzUzNTAsMjc0MjQsMjc0NTMsMjc0NjIsMjE1NjAsMjQ2ODgsMjc5NjUsMzI3MjUsMzMyODgsMjA2OTQsMjA5NTgsMjE5MTYsMjIxMjMsMjIyMjEsMjMwMjAsMjMzMDUsMjQwNzYsMjQ5ODUsMjQ5ODQsMjUxMzcs''@;'; put 'put ''MjYyMDYsMjYzNDIsMjkwODEsMjkxMTMsMjkxMTQsMjkzNTEsMzExNDMsMzEyMzIsMzI2OTAsMzU0NDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbF0sZ2IxODAzMDpbMTk5NzAsMTk5NzIsMTk5NzMsMTk5NzQsMTk5ODMsMTk5ODYsMTk5OTEsMTk5OTksMmU0LDIwMDAxLDIwMDAzLDIwMDA2LDIwMDA5LDIwMDE0LDIwMDE1LDIwMDE3LDIwMDE5LDIwMDIxLDIwMDIzLDIwMDI4LDIwMDMyLDIwMDMzLDIwMDM0''@;'; put 'put ''LDIwMDM2LDIwMDM4LDIwMDQyLDIwMDQ5LDIwMDUzLDIwMDU1LDIwMDU4LDIwMDU5LDIwMDY2LDIwMDY3LDIwMDY4LDIwMDY5LDIwMDcxLDIwMDcyLDIwMDc0LDIwMDc1LDIwMDc2LDIwMDc3LDIwMDc4LDIwMDc5LDIwMDgyLDIwMDg0LDIwMDg1LDIwMDg2LDIwMDg3LDIwMDg4LDIwMDg5LDIw''@;'; put 'put ''MDkwLDIwMDkxLDIwMDkyLDIwMDkzLDIwMDk1LDIwMDk2LDIwMDk3LDIwMDk4LDIwMDk5LDIwMTAwLDIwMTAxLDIwMTAzLDIwMTA2LDIwMTEyLDIwMTE4LDIwMTE5LDIwMTIxLDIwMTI0LDIwMTI1LDIwMTI2LDIwMTMxLDIwMTM4LDIwMTQzLDIwMTQ0LDIwMTQ1LDIwMTQ4LDIwMTUwLDIwMTUx''@;'; put 'put ''LDIwMTUyLDIwMTUzLDIwMTU2LDIwMTU3LDIwMTU4LDIwMTY4LDIwMTcyLDIwMTc1LDIwMTc2LDIwMTc4LDIwMTg2LDIwMTg3LDIwMTg4LDIwMTkyLDIwMTk0LDIwMTk4LDIwMTk5LDIwMjAxLDIwMjA1LDIwMjA2LDIwMjA3LDIwMjA5LDIwMjEyLDIwMjE2LDIwMjE3LDIwMjE4LDIwMjIwLDIw''@;'; put 'put ''MjIyLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjI4LDIwMjI5LDIwMjMwLDIwMjMxLDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQzLDIwMjQ0LDIwMjQ1LDIwMjQ2LDIwMjUyLDIwMjUzLDIwMjU3LDIwMjU5LDIwMjY0LDIwMjY1LDIwMjY4LDIwMjY5LDIwMjcwLDIwMjczLDIwMjc1LDIwMjc3''@;'; put 'put ''LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg3LDIwMjg4LDIwMjg5LDIwMjkwLDIwMjkyLDIwMjkzLDIwMjk1LDIwMjk2LDIwMjk3LDIwMjk4LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzIxLDIwMzIyLDIwMzI2LDIwMzI4LDIwMzMwLDIwMzMxLDIwMzMzLDIwMzM0LDIw''@;'; put 'put ''MzM3LDIwMzM4LDIwMzQxLDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUyLDIwMzUzLDIwMzU0LDIwMzU3LDIwMzU4LDIwMzU5LDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzczLDIwMzc0LDIwMzc2LDIwMzc3LDIwMzc4LDIwMzgwLDIwMzgyLDIwMzgz''@;'; put 'put ''LDIwMzg1LDIwMzg2LDIwMzg4LDIwMzk1LDIwMzk3LDIwNDAwLDIwNDAxLDIwNDAyLDIwNDAzLDIwNDA0LDIwNDA2LDIwNDA3LDIwNDA4LDIwNDA5LDIwNDEwLDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDE4LDIwNDIyLDIwNDIzLDIwNDI0LDIwNDI1LDIwNDI3LDIw''@;'; put 'put ''NDI4LDIwNDI5LDIwNDM0LDIwNDM1LDIwNDM2LDIwNDM3LDIwNDM4LDIwNDQxLDIwNDQzLDIwNDQ4LDIwNDUwLDIwNDUyLDIwNDUzLDIwNDU1LDIwNDU5LDIwNDYwLDIwNDY0LDIwNDY2LDIwNDY4LDIwNDY5LDIwNDcwLDIwNDcxLDIwNDczLDIwNDc1LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgw''@;'; put 'put ''LDIwNDgxLDIwNDgyLDIwNDgzLDIwNDg0LDIwNDg1LDIwNDg2LDIwNDg3LDIwNDg4LDIwNDg5LDIwNDkwLDIwNDkxLDIwNDk0LDIwNDk2LDIwNDk3LDIwNDk5LDIwNTAxLDIwNTAyLDIwNTAzLDIwNTA3LDIwNTA5LDIwNTEwLDIwNTEyLDIwNTE0LDIwNTE1LDIwNTE2LDIwNTE5LDIwNTIzLDIw''@;'; put 'put ''NTI3LDIwNTI4LDIwNTI5LDIwNTMwLDIwNTMxLDIwNTMyLDIwNTMzLDIwNTM0LDIwNTM1LDIwNTM2LDIwNTM3LDIwNTM5LDIwNTQxLDIwNTQzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ4LDIwNTQ5LDIwNTUwLDIwNTUzLDIwNTU0LDIwNTU1LDIwNTU3LDIwNTYwLDIwNTYxLDIwNTYyLDIwNTYz''@;'; put 'put ''LDIwNTY0LDIwNTY2LDIwNTY3LDIwNTY4LDIwNTY5LDIwNTcxLDIwNTczLDIwNTc0LDIwNTc1LDIwNTc2LDIwNTc3LDIwNTc4LDIwNTc5LDIwNTgwLDIwNTgyLDIwNTgzLDIwNTg0LDIwNTg1LDIwNTg2LDIwNTg3LDIwNTg5LDIwNTkwLDIwNTkxLDIwNTkyLDIwNTkzLDIwNTk0LDIwNTk1LDIw''@;'; put 'put ''NTk2LDIwNTk3LDIwNjAwLDIwNjAxLDIwNjAyLDIwNjA0LDIwNjA1LDIwNjA5LDIwNjEwLDIwNjExLDIwNjEyLDIwNjE0LDIwNjE1LDIwNjE3LDIwNjE4LDIwNjE5LDIwNjIwLDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI1LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjI5LDIwNjMwLDIwNjMxLDIwNjMy''@;'; put 'put ''LDIwNjMzLDIwNjM0LDIwNjM1LDIwNjM2LDIwNjM3LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjQ0LDIwNjQ2LDIwNjUwLDIwNjUxLDIwNjUzLDIwNjU0LDIwNjU1LDIwNjU2LDIwNjU3LDIwNjU5LDIwNjYwLDIwNjYxLDIwNjYyLDIwNjYzLDIwNjY0LDIwNjY1LDIwNjY4LDIw''@;'; put 'put ''NjY5LDIwNjcwLDIwNjcxLDIwNjcyLDIwNjczLDIwNjc0LDIwNjc1LDIwNjc2LDIwNjc3LDIwNjc4LDIwNjc5LDIwNjgwLDIwNjgxLDIwNjgyLDIwNjgzLDIwNjg0LDIwNjg1LDIwNjg2LDIwNjg4LDIwNjg5LDIwNjkwLDIwNjkxLDIwNjkyLDIwNjkzLDIwNjk1LDIwNjk2LDIwNjk3LDIwNjk5''@;'; put 'put ''LDIwNzAwLDIwNzAxLDIwNzAyLDIwNzAzLDIwNzA0LDIwNzA1LDIwNzA2LDIwNzA3LDIwNzA4LDIwNzA5LDIwNzEyLDIwNzEzLDIwNzE0LDIwNzE1LDIwNzE5LDIwNzIwLDIwNzIxLDIwNzIyLDIwNzI0LDIwNzI2LDIwNzI3LDIwNzI4LDIwNzI5LDIwNzMwLDIwNzMyLDIwNzMzLDIwNzM0LDIw''@;'; put 'put ''NzM1LDIwNzM2LDIwNzM3LDIwNzM4LDIwNzM5LDIwNzQwLDIwNzQxLDIwNzQ0LDIwNzQ1LDIwNzQ2LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzUxLDIwNzUyLDIwNzUzLDIwNzU1LDIwNzU2LDIwNzU3LDIwNzU4LDIwNzU5LDIwNzYwLDIwNzYxLDIwNzYyLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2''@;'; put 'put ''LDIwNzY3LDIwNzY4LDIwNzcwLDIwNzcxLDIwNzcyLDIwNzczLDIwNzc0LDIwNzc1LDIwNzc2LDIwNzc3LDIwNzc4LDIwNzc5LDIwNzgwLDIwNzgxLDIwNzgyLDIwNzgzLDIwNzg0LDIwNzg1LDIwNzg2LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkwLDIwNzkxLDIwNzkyLDIwNzkzLDIwNzk0LDIw''@;'; put 'put ''Nzk1LDIwNzk2LDIwNzk3LDIwNzk4LDIwODAyLDIwODA3LDIwODEwLDIwODEyLDIwODE0LDIwODE1LDIwODE2LDIwODE4LDIwODE5LDIwODIzLDIwODI0LDIwODI1LDIwODI3LDIwODI5LDIwODMwLDIwODMxLDIwODMyLDIwODMzLDIwODM1LDIwODM2LDIwODM4LDIwODM5LDIwODQxLDIwODQy''@;'; put 'put ''LDIwODQ3LDIwODUwLDIwODU4LDIwODYyLDIwODYzLDIwODY3LDIwODY4LDIwODcwLDIwODcxLDIwODc0LDIwODc1LDIwODc4LDIwODc5LDIwODgwLDIwODgxLDIwODgzLDIwODg0LDIwODg4LDIwODkwLDIwODkzLDIwODk0LDIwODk1LDIwODk3LDIwODk5LDIwOTAyLDIwOTAzLDIwOTA0LDIw''@;'; put 'put ''OTA1LDIwOTA2LDIwOTA5LDIwOTEwLDIwOTE2LDIwOTIwLDIwOTIxLDIwOTIyLDIwOTI2LDIwOTI3LDIwOTI5LDIwOTMwLDIwOTMxLDIwOTMzLDIwOTM2LDIwOTM4LDIwOTQxLDIwOTQyLDIwOTQ0LDIwOTQ2LDIwOTQ3LDIwOTQ4LDIwOTQ5LDIwOTUwLDIwOTUxLDIwOTUyLDIwOTUzLDIwOTU0''@;'; put 'put ''LDIwOTU2LDIwOTU4LDIwOTU5LDIwOTYyLDIwOTYzLDIwOTY1LDIwOTY2LDIwOTY3LDIwOTY4LDIwOTY5LDIwOTcwLDIwOTcyLDIwOTc0LDIwOTc3LDIwOTc4LDIwOTgwLDIwOTgzLDIwOTkwLDIwOTk2LDIwOTk3LDIxMDAxLDIxMDAzLDIxMDA0LDIxMDA3LDIxMDA4LDIxMDExLDIxMDEyLDIx''@;'; put 'put ''MDEzLDIxMDIwLDIxMDIyLDIxMDIzLDIxMDI1LDIxMDI2LDIxMDI3LDIxMDI5LDIxMDMwLDIxMDMxLDIxMDM0LDIxMDM2LDIxMDM5LDIxMDQxLDIxMDQyLDIxMDQ0LDIxMDQ1LDIxMDUyLDIxMDU0LDIxMDYwLDIxMDYxLDIxMDYyLDIxMDYzLDIxMDY0LDIxMDY1LDIxMDY3LDIxMDcwLDIxMDcx''@;'; put 'put ''LDIxMDc0LDIxMDc1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgxLDIxMDgyLDIxMDgzLDIxMDg1LDIxMDg3LDIxMDg4LDIxMDkwLDIxMDkxLDIxMDkyLDIxMDk0LDIxMDk2LDIxMDk5LDIxMTAwLDIxMTAxLDIxMTAyLDIxMTA0LDIxMTA1LDIxMTA3LDIxMTA4LDIxMTA5LDIxMTEwLDIxMTExLDIx''@;'; put 'put ''MTEyLDIxMTEzLDIxMTE0LDIxMTE1LDIxMTE2LDIxMTE4LDIxMTIwLDIxMTIzLDIxMTI0LDIxMTI1LDIxMTI2LDIxMTI3LDIxMTI5LDIxMTMwLDIxMTMxLDIxMTMyLDIxMTMzLDIxMTM0LDIxMTM1LDIxMTM3LDIxMTM4LDIxMTQwLDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ1LDIxMTQ2''@;'; put 'put ''LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY2LDIxMTY3LDIxMTY4LDIxMTcyLDIxMTczLDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc3LDIxMTc4LDIxMTc5LDIxMTgwLDIxMTgxLDIxMTg0LDIxMTg1LDIxMTg2LDIxMTg4LDIxMTg5LDIxMTkwLDIxMTkyLDIxMTk0LDIxMTk2LDIx''@;'; put 'put ''MTk3LDIxMTk4LDIxMTk5LDIxMjAxLDIxMjAzLDIxMjA0LDIxMjA1LDIxMjA3LDIxMjA5LDIxMjEwLDIxMjExLDIxMjEyLDIxMjEzLDIxMjE0LDIxMjE2LDIxMjE3LDIxMjE4LDIxMjE5LDIxMjIxLDIxMjIyLDIxMjIzLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI3LDIxMjI4LDIxMjI5LDIxMjMw''@;'; put 'put ''LDIxMjMxLDIxMjMzLDIxMjM0LDIxMjM1LDIxMjM2LDIxMjM3LDIxMjM4LDIxMjM5LDIxMjQwLDIxMjQzLDIxMjQ0LDIxMjQ1LDIxMjQ5LDIxMjUwLDIxMjUxLDIxMjUyLDIxMjU1LDIxMjU3LDIxMjU4LDIxMjU5LDIxMjYwLDIxMjYyLDIxMjY1LDIxMjY2LDIxMjY3LDIxMjY4LDIxMjcyLDIx''@;'; put 'put ''Mjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjgyLDIxMjg0LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk1LDIxMjk2LDIxMjk3LDIxMjk4LDIxMjk5LDIxMzAwLDIxMzAxLDIxMzAyLDIxMzAzLDIxMzA0LDIxMzA4LDIxMzA5LDIxMzEyLDIxMzE0LDIxMzE2''@;'; put 'put ''LDIxMzE4LDIxMzIzLDIxMzI0LDIxMzI1LDIxMzI4LDIxMzMyLDIxMzM2LDIxMzM3LDIxMzM5LDIxMzQxLDIxMzQ5LDIxMzUyLDIxMzU0LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY2LDIxMzY5LDIxMzcxLDIxMzcyLDIxMzczLDIxMzc0LDIxMzc2LDIxMzc3LDIxMzc5LDIxMzgzLDIxMzg0LDIx''@;'; put 'put ''Mzg2LDIxMzkwLDIxMzkxLDIxMzkyLDIxMzkzLDIxMzk0LDIxMzk1LDIxMzk2LDIxMzk4LDIxMzk5LDIxNDAxLDIxNDAzLDIxNDA0LDIxNDA2LDIxNDA4LDIxNDA5LDIxNDEyLDIxNDE1LDIxNDE4LDIxNDE5LDIxNDIwLDIxNDIxLDIxNDIzLDIxNDI0LDIxNDI1LDIxNDI2LDIxNDI3LDIxNDI4''@;'; put 'put ''LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDMzLDIxNDM0LDIxNDM2LDIxNDM3LDIxNDM4LDIxNDQwLDIxNDQzLDIxNDQ0LDIxNDQ1LDIxNDQ2LDIxNDQ3LDIxNDU0LDIxNDU1LDIxNDU2LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY4LDIxNDY5LDIxNDcwLDIxNDczLDIxNDc0LDIxNDc5LDIx''@;'; put 'put ''NDkyLDIxNDk4LDIxNTAyLDIxNTAzLDIxNTA0LDIxNTA2LDIxNTA5LDIxNTExLDIxNTE1LDIxNTI0LDIxNTI4LDIxNTI5LDIxNTMwLDIxNTMyLDIxNTM4LDIxNTQwLDIxNTQxLDIxNTQ2LDIxNTUyLDIxNTU1LDIxNTU4LDIxNTU5LDIxNTYyLDIxNTY1LDIxNTY3LDIxNTY5LDIxNTcwLDIxNTcy''@;'; put 'put ''LDIxNTczLDIxNTc1LDIxNTc3LDIxNTgwLDIxNTgxLDIxNTgyLDIxNTgzLDIxNTg1LDIxNTk0LDIxNTk3LDIxNTk4LDIxNTk5LDIxNjAwLDIxNjAxLDIxNjAzLDIxNjA1LDIxNjA3LDIxNjA5LDIxNjEwLDIxNjExLDIxNjEyLDIxNjEzLDIxNjE0LDIxNjE1LDIxNjE2LDIxNjIwLDIxNjI1LDIx''@;'; put 'put ''NjI2LDIxNjMwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjM5LDIxNjQwLDIxNjQxLDIxNjQyLDIxNjQ1LDIxNjQ5LDIxNjUxLDIxNjU1LDIxNjU2LDIxNjYwLDIxNjYyLDIxNjYzLDIxNjY0LDIxNjY1LDIxNjY2LDIxNjY5LDIxNjc4LDIxNjgwLDIxNjgyLDIxNjg1LDIxNjg2LDIxNjg3''@;'; put 'put ''LDIxNjg5LDIxNjkwLDIxNjkyLDIxNjk0LDIxNjk5LDIxNzAxLDIxNzA2LDIxNzA3LDIxNzE4LDIxNzIwLDIxNzIzLDIxNzI4LDIxNzI5LDIxNzMwLDIxNzMxLDIxNzMyLDIxNzM5LDIxNzQwLDIxNzQzLDIxNzQ0LDIxNzQ1LDIxNzQ4LDIxNzQ5LDIxNzUwLDIxNzUxLDIxNzUyLDIxNzUzLDIx''@;'; put 'put ''NzU1LDIxNzU4LDIxNzYwLDIxNzYyLDIxNzYzLDIxNzY0LDIxNzY1LDIxNzY4LDIxNzcwLDIxNzcxLDIxNzcyLDIxNzczLDIxNzc0LDIxNzc4LDIxNzc5LDIxNzgxLDIxNzgyLDIxNzgzLDIxNzg0LDIxNzg1LDIxNzg2LDIxNzg4LDIxNzg5LDIxNzkwLDIxNzkxLDIxNzkzLDIxNzk3LDIxNzk4''@;'; put 'put ''LDIxODAwLDIxODAxLDIxODAzLDIxODA1LDIxODEwLDIxODEyLDIxODEzLDIxODE0LDIxODE2LDIxODE3LDIxODE4LDIxODE5LDIxODIxLDIxODI0LDIxODI2LDIxODI5LDIxODMxLDIxODMyLDIxODM1LDIxODM2LDIxODM3LDIxODM4LDIxODM5LDIxODQxLDIxODQyLDIxODQzLDIxODQ0LDIx''@;'; put 'put ''ODQ3LDIxODQ4LDIxODQ5LDIxODUwLDIxODUxLDIxODUzLDIxODU0LDIxODU1LDIxODU2LDIxODU4LDIxODU5LDIxODY0LDIxODY1LDIxODY3LDIxODcxLDIxODcyLDIxODczLDIxODc0LDIxODc1LDIxODc2LDIxODgxLDIxODgyLDIxODg1LDIxODg3LDIxODkzLDIxODk0LDIxOTAwLDIxOTAx''@;'; put 'put ''LDIxOTAyLDIxOTA0LDIxOTA2LDIxOTA3LDIxOTA5LDIxOTEwLDIxOTExLDIxOTE0LDIxOTE1LDIxOTE4LDIxOTIwLDIxOTIxLDIxOTIyLDIxOTIzLDIxOTI0LDIxOTI1LDIxOTI2LDIxOTI4LDIxOTI5LDIxOTMwLDIxOTMxLDIxOTMyLDIxOTMzLDIxOTM0LDIxOTM1LDIxOTM2LDIxOTM4LDIx''@;'; put 'put ''OTQwLDIxOTQyLDIxOTQ0LDIxOTQ2LDIxOTQ4LDIxOTUxLDIxOTUyLDIxOTUzLDIxOTU0LDIxOTU1LDIxOTU4LDIxOTU5LDIxOTYwLDIxOTYyLDIxOTYzLDIxOTY2LDIxOTY3LDIxOTY4LDIxOTczLDIxOTc1LDIxOTc2LDIxOTc3LDIxOTc4LDIxOTc5LDIxOTgyLDIxOTg0LDIxOTg2LDIxOTkx''@;'; put 'put ''LDIxOTkzLDIxOTk3LDIxOTk4LDIyZTMsMjIwMDEsMjIwMDQsMjIwMDYsMjIwMDgsMjIwMDksMjIwMTAsMjIwMTEsMjIwMTIsMjIwMTUsMjIwMTgsMjIwMTksMjIwMjAsMjIwMjEsMjIwMjIsMjIwMjMsMjIwMjYsMjIwMjcsMjIwMjksMjIwMzIsMjIwMzMsMjIwMzQsMjIwMzUsMjIwMzYsMjIw''@;'; put 'put ''MzcsMjIwMzgsMjIwMzksMjIwNDEsMjIwNDIsMjIwNDQsMjIwNDUsMjIwNDgsMjIwNDksMjIwNTAsMjIwNTMsMjIwNTQsMjIwNTYsMjIwNTcsMjIwNTgsMjIwNTksMjIwNjIsMjIwNjMsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzIsMjIwNzQsMjIwNzYsMjIwNzcsMjIwNzgsMjIwODAs''@;'; put 'put ''MjIwODEsMjIwODIsMjIwODMsMjIwODQsMjIwODUsMjIwODYsMjIwODcsMjIwODgsMjIwODksMjIwOTAsMjIwOTEsMjIwOTUsMjIwOTYsMjIwOTcsMjIwOTgsMjIwOTksMjIxMDEsMjIxMDIsMjIxMDYsMjIxMDcsMjIxMDksMjIxMTAsMjIxMTEsMjIxMTIsMjIxMTMsMjIxMTUsMjIxMTcsMjIx''@;'; put 'put ''MTgsMjIxMTksMjIxMjUsMjIxMjYsMjIxMjcsMjIxMjgsMjIxMzAsMjIxMzEsMjIxMzIsMjIxMzMsMjIxMzUsMjIxMzYsMjIxMzcsMjIxMzgsMjIxNDEsMjIxNDIsMjIxNDMsMjIxNDQsMjIxNDUsMjIxNDYsMjIxNDcsMjIxNDgsMjIxNTEsMjIxNTIsMjIxNTMsMjIxNTQsMjIxNTUsMjIxNTYs''@;'; put 'put ''MjIxNTcsMjIxNjAsMjIxNjEsMjIxNjIsMjIxNjQsMjIxNjUsMjIxNjYsMjIxNjcsMjIxNjgsMjIxNjksMjIxNzAsMjIxNzEsMjIxNzIsMjIxNzMsMjIxNzQsMjIxNzUsMjIxNzYsMjIxNzcsMjIxNzgsMjIxODAsMjIxODEsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODYsMjIxODcsMjIx''@;'; put 'put ''ODgsMjIxODksMjIxOTAsMjIxOTIsMjIxOTMsMjIxOTQsMjIxOTUsMjIxOTYsMjIxOTcsMjIxOTgsMjIyMDAsMjIyMDEsMjIyMDIsMjIyMDMsMjIyMDUsMjIyMDYsMjIyMDcsMjIyMDgsMjIyMDksMjIyMTAsMjIyMTEsMjIyMTIsMjIyMTMsMjIyMTQsMjIyMTUsMjIyMTYsMjIyMTcsMjIyMTks''@;'; put 'put ''MjIyMjAsMjIyMjEsMjIyMjIsMjIyMjMsMjIyMjQsMjIyMjUsMjIyMjYsMjIyMjcsMjIyMjksMjIyMzAsMjIyMzIsMjIyMzMsMjIyMzYsMjIyNDMsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNDksMjIyNTAsMjIyNTIsMjIyNTQsMjIyNTUsMjIyNTgsMjIyNTksMjIyNjIsMjIyNjMsMjIy''@;'; put 'put ''NjQsMjIyNjcsMjIyNjgsMjIyNzIsMjIyNzMsMjIyNzQsMjIyNzcsMjIyNzksMjIyODMsMjIyODQsMjIyODUsMjIyODYsMjIyODcsMjIyODgsMjIyODksMjIyOTAsMjIyOTEsMjIyOTIsMjIyOTMsMjIyOTQsMjIyOTUsMjIyOTYsMjIyOTcsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDIsMjIzMDQs''@;'; put 'put ''MjIzMDUsMjIzMDYsMjIzMDgsMjIzMDksMjIzMTAsMjIzMTEsMjIzMTUsMjIzMjEsMjIzMjIsMjIzMjQsMjIzMjUsMjIzMjYsMjIzMjcsMjIzMjgsMjIzMzIsMjIzMzMsMjIzMzUsMjIzMzcsMjIzMzksMjIzNDAsMjIzNDEsMjIzNDIsMjIzNDQsMjIzNDUsMjIzNDcsMjIzNTQsMjIzNTUsMjIz''@;'; put 'put ''NTYsMjIzNTcsMjIzNTgsMjIzNjAsMjIzNjEsMjIzNzAsMjIzNzEsMjIzNzMsMjIzNzUsMjIzODAsMjIzODIsMjIzODQsMjIzODUsMjIzODYsMjIzODgsMjIzODksMjIzOTIsMjIzOTMsMjIzOTQsMjIzOTcsMjIzOTgsMjIzOTksMjI0MDAsMjI0MDEsMjI0MDcsMjI0MDgsMjI0MDksMjI0MTAs''@;'; put 'put ''MjI0MTMsMjI0MTQsMjI0MTUsMjI0MTYsMjI0MTcsMjI0MjAsMjI0MjEsMjI0MjIsMjI0MjMsMjI0MjQsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzcsMjI0NDAsMjI0NDIsMjI0NDQsMjI0NDcsMjI0NDgsMjI0NDksMjI0NTEsMjI0NTMsMjI0NTQsMjI0NTUsMjI0''@;'; put 'put ''NTcsMjI0NTgsMjI0NTksMjI0NjAsMjI0NjEsMjI0NjIsMjI0NjMsMjI0NjQsMjI0NjUsMjI0NjgsMjI0NjksMjI0NzAsMjI0NzEsMjI0NzIsMjI0NzMsMjI0NzQsMjI0NzYsMjI0NzcsMjI0ODAsMjI0ODEsMjI0ODMsMjI0ODYsMjI0ODcsMjI0OTEsMjI0OTIsMjI0OTQsMjI0OTcsMjI0OTgs''@;'; put 'put ''MjI0OTksMjI1MDEsMjI1MDIsMjI1MDMsMjI1MDQsMjI1MDUsMjI1MDYsMjI1MDcsMjI1MDgsMjI1MTAsMjI1MTIsMjI1MTMsMjI1MTQsMjI1MTUsMjI1MTcsMjI1MTgsMjI1MTksMjI1MjMsMjI1MjQsMjI1MjYsMjI1MjcsMjI1MjksMjI1MzEsMjI1MzIsMjI1MzMsMjI1MzYsMjI1MzcsMjI1''@;'; put 'put ''MzgsMjI1NDAsMjI1NDIsMjI1NDMsMjI1NDQsMjI1NDYsMjI1NDcsMjI1NDgsMjI1NTAsMjI1NTEsMjI1NTIsMjI1NTQsMjI1NTUsMjI1NTYsMjI1NTcsMjI1NTksMjI1NjIsMjI1NjMsMjI1NjUsMjI1NjYsMjI1NjcsMjI1NjgsMjI1NjksMjI1NzEsMjI1NzIsMjI1NzMsMjI1NzQsMjI1NzUs''@;'; put 'put ''MjI1NzcsMjI1NzgsMjI1NzksMjI1ODAsMjI1ODIsMjI1ODMsMjI1ODQsMjI1ODUsMjI1ODYsMjI1ODcsMjI1ODgsMjI1ODksMjI1OTAsMjI1OTEsMjI1OTIsMjI1OTMsMjI1OTQsMjI1OTUsMjI1OTcsMjI1OTgsMjI1OTksMjI2MDAsMjI2MDEsMjI2MDIsMjI2MDMsMjI2MDYsMjI2MDcsMjI2''@;'; put 'put ''MDgsMjI2MTAsMjI2MTEsMjI2MTMsMjI2MTQsMjI2MTUsMjI2MTcsMjI2MTgsMjI2MTksMjI2MjAsMjI2MjEsMjI2MjMsMjI2MjQsMjI2MjUsMjI2MjYsMjI2MjcsMjI2MjgsMjI2MzAsMjI2MzEsMjI2MzIsMjI2MzMsMjI2MzQsMjI2MzcsMjI2MzgsMjI2MzksMjI2NDAsMjI2NDEsMjI2NDIs''@;'; put 'put ''MjI2NDMsMjI2NDQsMjI2NDUsMjI2NDYsMjI2NDcsMjI2NDgsMjI2NDksMjI2NTAsMjI2NTEsMjI2NTIsMjI2NTMsMjI2NTUsMjI2NTgsMjI2NjAsMjI2NjIsMjI2NjMsMjI2NjQsMjI2NjYsMjI2NjcsMjI2NjgsMjI2NjksMjI2NzAsMjI2NzEsMjI2NzIsMjI2NzMsMjI2NzYsMjI2NzcsMjI2''@;'; put 'put ''NzgsMjI2NzksMjI2ODAsMjI2ODMsMjI2ODQsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTEsMjI2OTIsMjI2OTMsMjI2OTQsMjI2OTUsMjI2OTgsMjI2OTksMjI3MDAsMjI3MDEsMjI3MDIsMjI3MDMsMjI3MDQsMjI3MDUsMjI3MDYsMjI3MDcsMjI3MDgsMjI3MDksMjI3MTAsMjI3MTEs''@;'; put 'put ''MjI3MTIsMjI3MTMsMjI3MTQsMjI3MTUsMjI3MTcsMjI3MTgsMjI3MTksMjI3MjAsMjI3MjIsMjI3MjMsMjI3MjQsMjI3MjYsMjI3MjcsMjI3MjgsMjI3MjksMjI3MzAsMjI3MzEsMjI3MzIsMjI3MzMsMjI3MzQsMjI3MzUsMjI3MzYsMjI3MzgsMjI3MzksMjI3NDAsMjI3NDIsMjI3NDMsMjI3''@;'; put 'put ''NDQsMjI3NDUsMjI3NDYsMjI3NDcsMjI3NDgsMjI3NDksMjI3NTAsMjI3NTEsMjI3NTIsMjI3NTMsMjI3NTQsMjI3NTUsMjI3NTcsMjI3NTgsMjI3NTksMjI3NjAsMjI3NjEsMjI3NjIsMjI3NjUsMjI3NjcsMjI3NjksMjI3NzAsMjI3NzIsMjI3NzMsMjI3NzUsMjI3NzYsMjI3NzgsMjI3Nzks''@;'; put 'put ''MjI3ODAsMjI3ODEsMjI3ODIsMjI3ODMsMjI3ODQsMjI3ODUsMjI3ODcsMjI3ODksMjI3OTAsMjI3OTIsMjI3OTMsMjI3OTQsMjI3OTUsMjI3OTYsMjI3OTgsMjI4MDAsMjI4MDEsMjI4MDIsMjI4MDMsMjI4MDcsMjI4MDgsMjI4MTEsMjI4MTMsMjI4MTQsMjI4MTYsMjI4MTcsMjI4MTgsMjI4''@;'; put 'put ''MTksMjI4MjIsMjI4MjQsMjI4MjgsMjI4MzIsMjI4MzQsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDMsMjI4NDUsMjI4NDYsMjI4NDcsMjI4NDgsMjI4NTEsMjI4NTMsMjI4NTQsMjI4NTgsMjI4NjAsMjI4NjEsMjI4NjQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzYsMjI4NzcsMjI4Nzgs''@;'; put 'put ''MjI4NzksMjI4ODEsMjI4ODMsMjI4ODQsMjI4ODYsMjI4ODcsMjI4ODgsMjI4ODksMjI4OTAsMjI4OTEsMjI4OTIsMjI4OTMsMjI4OTQsMjI4OTUsMjI4OTYsMjI4OTcsMjI4OTgsMjI5MDEsMjI5MDMsMjI5MDYsMjI5MDcsMjI5MDgsMjI5MTAsMjI5MTEsMjI5MTIsMjI5MTcsMjI5MjEsMjI5''@;'; put 'put ''MjMsMjI5MjQsMjI5MjYsMjI5MjcsMjI5MjgsMjI5MjksMjI5MzIsMjI5MzMsMjI5MzYsMjI5MzgsMjI5MzksMjI5NDAsMjI5NDEsMjI5NDMsMjI5NDQsMjI5NDUsMjI5NDYsMjI5NTAsMjI5NTEsMjI5NTYsMjI5NTcsMjI5NjAsMjI5NjEsMjI5NjMsMjI5NjQsMjI5NjUsMjI5NjYsMjI5Njcs''@;'; put 'put ''MjI5NjgsMjI5NzAsMjI5NzIsMjI5NzMsMjI5NzUsMjI5NzYsMjI5NzcsMjI5NzgsMjI5NzksMjI5ODAsMjI5ODEsMjI5ODMsMjI5ODQsMjI5ODUsMjI5ODgsMjI5ODksMjI5OTAsMjI5OTEsMjI5OTcsMjI5OTgsMjMwMDEsMjMwMDMsMjMwMDYsMjMwMDcsMjMwMDgsMjMwMDksMjMwMTAsMjMw''@;'; put 'put ''MTIsMjMwMTQsMjMwMTUsMjMwMTcsMjMwMTgsMjMwMTksMjMwMjEsMjMwMjIsMjMwMjMsMjMwMjQsMjMwMjUsMjMwMjYsMjMwMjcsMjMwMjgsMjMwMjksMjMwMzAsMjMwMzEsMjMwMzIsMjMwMzQsMjMwMzYsMjMwMzcsMjMwMzgsMjMwNDAsMjMwNDIsMjMwNTAsMjMwNTEsMjMwNTMsMjMwNTQs''@;'; put 'put ''MjMwNTUsMjMwNTYsMjMwNTgsMjMwNjAsMjMwNjEsMjMwNjIsMjMwNjMsMjMwNjUsMjMwNjYsMjMwNjcsMjMwNjksMjMwNzAsMjMwNzMsMjMwNzQsMjMwNzYsMjMwNzgsMjMwNzksMjMwODAsMjMwODIsMjMwODMsMjMwODQsMjMwODUsMjMwODYsMjMwODcsMjMwODgsMjMwOTEsMjMwOTMsMjMw''@;'; put 'put ''OTUsMjMwOTYsMjMwOTcsMjMwOTgsMjMwOTksMjMxMDEsMjMxMDIsMjMxMDMsMjMxMDUsMjMxMDYsMjMxMDcsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTUsMjMxMTYsMjMxMTcsMjMxMTgsMjMxMTksMjMxMjAsMjMxMjEsMjMxMjIsMjMxMjMsMjMxMjQsMjMxMjYsMjMxMjcsMjMxMjgs''@;'; put 'put ''MjMxMjksMjMxMzEsMjMxMzIsMjMxMzMsMjMxMzQsMjMxMzUsMjMxMzYsMjMxMzcsMjMxMzksMjMxNDAsMjMxNDEsMjMxNDIsMjMxNDQsMjMxNDUsMjMxNDcsMjMxNDgsMjMxNDksMjMxNTAsMjMxNTEsMjMxNTIsMjMxNTMsMjMxNTQsMjMxNTUsMjMxNjAsMjMxNjEsMjMxNjMsMjMxNjQsMjMx''@;'; put 'put ''NjUsMjMxNjYsMjMxNjgsMjMxNjksMjMxNzAsMjMxNzEsMjMxNzIsMjMxNzMsMjMxNzQsMjMxNzUsMjMxNzYsMjMxNzcsMjMxNzgsMjMxNzksMjMxODAsMjMxODEsMjMxODIsMjMxODMsMjMxODQsMjMxODUsMjMxODcsMjMxODgsMjMxODksMjMxOTAsMjMxOTEsMjMxOTIsMjMxOTMsMjMxOTYs''@;'; put 'put ''MjMxOTcsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDEsMjMyMDIsMjMyMDMsMjMyMDQsMjMyMDUsMjMyMDYsMjMyMDcsMjMyMDgsMjMyMDksMjMyMTEsMjMyMTIsMjMyMTMsMjMyMTQsMjMyMTUsMjMyMTYsMjMyMTcsMjMyMjAsMjMyMjIsMjMyMjMsMjMyMjUsMjMyMjYsMjMyMjcsMjMyMjgsMjMy''@;'; put 'put ''MjksMjMyMzEsMjMyMzIsMjMyMzUsMjMyMzYsMjMyMzcsMjMyMzgsMjMyMzksMjMyNDAsMjMyNDIsMjMyNDMsMjMyNDUsMjMyNDYsMjMyNDcsMjMyNDgsMjMyNDksMjMyNTEsMjMyNTMsMjMyNTUsMjMyNTcsMjMyNTgsMjMyNTksMjMyNjEsMjMyNjIsMjMyNjMsMjMyNjYsMjMyNjgsMjMyNjks''@;'; put 'put ''MjMyNzEsMjMyNzIsMjMyNzQsMjMyNzYsMjMyNzcsMjMyNzgsMjMyNzksMjMyODAsMjMyODIsMjMyODMsMjMyODQsMjMyODUsMjMyODYsMjMyODcsMjMyODgsMjMyODksMjMyOTAsMjMyOTEsMjMyOTIsMjMyOTMsMjMyOTQsMjMyOTUsMjMyOTYsMjMyOTcsMjMyOTgsMjMyOTksMjMzMDAsMjMz''@;'; put 'put ''MDEsMjMzMDIsMjMzMDMsMjMzMDQsMjMzMDYsMjMzMDcsMjMzMDgsMjMzMDksMjMzMTAsMjMzMTEsMjMzMTIsMjMzMTMsMjMzMTQsMjMzMTUsMjMzMTYsMjMzMTcsMjMzMjAsMjMzMjEsMjMzMjIsMjMzMjMsMjMzMjQsMjMzMjUsMjMzMjYsMjMzMjcsMjMzMjgsMjMzMjksMjMzMzAsMjMzMzEs''@;'; put 'put ''MjMzMzIsMjMzMzMsMjMzMzQsMjMzMzUsMjMzMzYsMjMzMzcsMjMzMzgsMjMzMzksMjMzNDAsMjMzNDEsMjMzNDIsMjMzNDMsMjMzNDQsMjMzNDUsMjMzNDcsMjMzNDksMjMzNTAsMjMzNTIsMjMzNTMsMjMzNTQsMjMzNTUsMjMzNTYsMjMzNTcsMjMzNTgsMjMzNTksMjMzNjEsMjMzNjIsMjMz''@;'; put 'put ''NjMsMjMzNjQsMjMzNjUsMjMzNjYsMjMzNjcsMjMzNjgsMjMzNjksMjMzNzAsMjMzNzEsMjMzNzIsMjMzNzMsMjMzNzQsMjMzNzUsMjMzNzgsMjMzODIsMjMzOTAsMjMzOTIsMjMzOTMsMjMzOTksMjM0MDAsMjM0MDMsMjM0MDUsMjM0MDYsMjM0MDcsMjM0MTAsMjM0MTIsMjM0MTQsMjM0MTUs''@;'; put 'put ''MjM0MTYsMjM0MTcsMjM0MTksMjM0MjAsMjM0MjIsMjM0MjMsMjM0MjYsMjM0MzAsMjM0MzQsMjM0MzcsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDIsMjM0NDQsMjM0NDYsMjM0NTUsMjM0NjMsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzAsMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0''@;'; put 'put ''ODIsMjM0ODMsMjM0ODQsMjM0ODgsMjM0ODksMjM0OTEsMjM0OTYsMjM0OTcsMjM0OTgsMjM0OTksMjM1MDEsMjM1MDIsMjM1MDMsMjM1MDUsMjM1MDgsMjM1MDksMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MTUsMjM1MTYsMjM1MjAsMjM1MjIsMjM1MjMsMjM1MjYsMjM1Mjcs''@;'; put 'put ''MjM1MjksMjM1MzAsMjM1MzEsMjM1MzIsMjM1MzMsMjM1MzUsMjM1MzcsMjM1MzgsMjM1MzksMjM1NDAsMjM1NDEsMjM1NDIsMjM1NDMsMjM1NDksMjM1NTAsMjM1NTIsMjM1NTQsMjM1NTUsMjM1NTcsMjM1NTksMjM1NjAsMjM1NjMsMjM1NjQsMjM1NjUsMjM1NjYsMjM1NjgsMjM1NzAsMjM1''@;'; put 'put ''NzEsMjM1NzUsMjM1NzcsMjM1NzksMjM1ODIsMjM1ODMsMjM1ODQsMjM1ODUsMjM1ODcsMjM1OTAsMjM1OTIsMjM1OTMsMjM1OTQsMjM1OTUsMjM1OTcsMjM1OTgsMjM1OTksMjM2MDAsMjM2MDIsMjM2MDMsMjM2MDUsMjM2MDYsMjM2MDcsMjM2MTksMjM2MjAsMjM2MjIsMjM2MjMsMjM2Mjgs''@;'; put 'put ''MjM2MjksMjM2MzQsMjM2MzUsMjM2MzYsMjM2MzgsMjM2MzksMjM2NDAsMjM2NDIsMjM2NDMsMjM2NDQsMjM2NDUsMjM2NDcsMjM2NTAsMjM2NTIsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NTgsMjM2NTksMjM2NjAsMjM2NjEsMjM2NjQsMjM2NjYsMjM2NjcsMjM2NjgsMjM2NjksMjM2NzAsMjM2''@;'; put 'put ''NzEsMjM2NzIsMjM2NzUsMjM2NzYsMjM2NzcsMjM2NzgsMjM2ODAsMjM2ODMsMjM2ODQsMjM2ODUsMjM2ODYsMjM2ODcsMjM2ODksMjM2OTAsMjM2OTEsMjM2OTQsMjM2OTUsMjM2OTgsMjM2OTksMjM3MDEsMjM3MDksMjM3MTAsMjM3MTEsMjM3MTIsMjM3MTMsMjM3MTYsMjM3MTcsMjM3MTgs''@;'; put 'put ''MjM3MTksMjM3MjAsMjM3MjIsMjM3MjYsMjM3MjcsMjM3MjgsMjM3MzAsMjM3MzIsMjM3MzQsMjM3MzcsMjM3MzgsMjM3MzksMjM3NDAsMjM3NDIsMjM3NDQsMjM3NDYsMjM3NDcsMjM3NDksMjM3NTAsMjM3NTEsMjM3NTIsMjM3NTMsMjM3NTQsMjM3NTYsMjM3NTcsMjM3NTgsMjM3NTksMjM3''@;'; put 'put ''NjAsMjM3NjEsMjM3NjMsMjM3NjQsMjM3NjUsMjM3NjYsMjM3NjcsMjM3NjgsMjM3NzAsMjM3NzEsMjM3NzIsMjM3NzMsMjM3NzQsMjM3NzUsMjM3NzYsMjM3NzgsMjM3NzksMjM3ODMsMjM3ODUsMjM3ODcsMjM3ODgsMjM3OTAsMjM3OTEsMjM3OTMsMjM3OTQsMjM3OTUsMjM3OTYsMjM3OTcs''@;'; put 'put ''MjM3OTgsMjM3OTksMjM4MDAsMjM4MDEsMjM4MDIsMjM4MDQsMjM4MDUsMjM4MDYsMjM4MDcsMjM4MDgsMjM4MDksMjM4MTIsMjM4MTMsMjM4MTYsMjM4MTcsMjM4MTgsMjM4MTksMjM4MjAsMjM4MjEsMjM4MjMsMjM4MjQsMjM4MjUsMjM4MjYsMjM4MjcsMjM4MjksMjM4MzEsMjM4MzIsMjM4''@;'; put 'put ''MzMsMjM4MzQsMjM4MzYsMjM4MzcsMjM4MzksMjM4NDAsMjM4NDEsMjM4NDIsMjM4NDMsMjM4NDUsMjM4NDgsMjM4NTAsMjM4NTEsMjM4NTIsMjM4NTUsMjM4NTYsMjM4NTcsMjM4NTgsMjM4NTksMjM4NjEsMjM4NjIsMjM4NjMsMjM4NjQsMjM4NjUsMjM4NjYsMjM4NjcsMjM4NjgsMjM4NzEs''@;'; put 'put ''MjM4NzIsMjM4NzMsMjM4NzQsMjM4NzUsMjM4NzYsMjM4NzcsMjM4NzgsMjM4ODAsMjM4ODEsMjM4ODUsMjM4ODYsMjM4ODcsMjM4ODgsMjM4ODksMjM4OTAsMjM4OTEsMjM4OTIsMjM4OTMsMjM4OTQsMjM4OTUsMjM4OTcsMjM4OTgsMjM5MDAsMjM5MDIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5''@;'; put 'put ''MDYsMjM5MDcsMjM5MDgsMjM5MDksMjM5MTAsMjM5MTEsMjM5MTIsMjM5MTQsMjM5MTcsMjM5MTgsMjM5MjAsMjM5MjEsMjM5MjIsMjM5MjMsMjM5MjUsMjM5MjYsMjM5MjcsMjM5MjgsMjM5MjksMjM5MzAsMjM5MzEsMjM5MzIsMjM5MzMsMjM5MzQsMjM5MzUsMjM5MzYsMjM5MzcsMjM5Mzks''@;'; put 'put ''MjM5NDAsMjM5NDEsMjM5NDIsMjM5NDMsMjM5NDQsMjM5NDUsMjM5NDYsMjM5NDcsMjM5NDgsMjM5NDksMjM5NTAsMjM5NTEsMjM5NTIsMjM5NTMsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NTgsMjM5NTksMjM5NjAsMjM5NjIsMjM5NjMsMjM5NjQsMjM5NjYsMjM5NjcsMjM5NjgsMjM5''@;'; put 'put ''NjksMjM5NzAsMjM5NzEsMjM5NzIsMjM5NzMsMjM5NzQsMjM5NzUsMjM5NzYsMjM5NzcsMjM5NzgsMjM5NzksMjM5ODAsMjM5ODEsMjM5ODIsMjM5ODMsMjM5ODQsMjM5ODUsMjM5ODYsMjM5ODcsMjM5ODgsMjM5ODksMjM5OTAsMjM5OTIsMjM5OTMsMjM5OTQsMjM5OTUsMjM5OTYsMjM5OTcs''@;'; put 'put ''MjM5OTgsMjM5OTksMjRlMywyNDAwMSwyNDAwMiwyNDAwMywyNDAwNCwyNDAwNiwyNDAwNywyNDAwOCwyNDAwOSwyNDAxMCwyNDAxMSwyNDAxMiwyNDAxNCwyNDAxNSwyNDAxNiwyNDAxNywyNDAxOCwyNDAxOSwyNDAyMCwyNDAyMSwyNDAyMiwyNDAyMywyNDAyNCwyNDAyNSwyNDAyNiwyNDAy''@;'; put 'put ''OCwyNDAzMSwyNDAzMiwyNDAzNSwyNDAzNiwyNDA0MiwyNDA0NCwyNDA0NSwyNDA0OCwyNDA1MywyNDA1NCwyNDA1NiwyNDA1NywyNDA1OCwyNDA1OSwyNDA2MCwyNDA2MywyNDA2NCwyNDA2OCwyNDA3MSwyNDA3MywyNDA3NCwyNDA3NSwyNDA3NywyNDA3OCwyNDA4MiwyNDA4MywyNDA4Nywy''@;'; put 'put ''NDA5NCwyNDA5NSwyNDA5NiwyNDA5NywyNDA5OCwyNDA5OSwyNDEwMCwyNDEwMSwyNDEwNCwyNDEwNSwyNDEwNiwyNDEwNywyNDEwOCwyNDExMSwyNDExMiwyNDExNCwyNDExNSwyNDExNiwyNDExNywyNDExOCwyNDEyMSwyNDEyMiwyNDEyNiwyNDEyNywyNDEyOCwyNDEyOSwyNDEzMSwyNDEz''@;'; put 'put ''NCwyNDEzNSwyNDEzNiwyNDEzNywyNDEzOCwyNDEzOSwyNDE0MSwyNDE0MiwyNDE0MywyNDE0NCwyNDE0NSwyNDE0NiwyNDE0NywyNDE1MCwyNDE1MSwyNDE1MiwyNDE1MywyNDE1NCwyNDE1NiwyNDE1NywyNDE1OSwyNDE2MCwyNDE2MywyNDE2NCwyNDE2NSwyNDE2NiwyNDE2NywyNDE2OCwy''@;'; put 'put ''NDE2OSwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NSwyNDE3NiwyNDE3NywyNDE4MSwyNDE4MywyNDE4NSwyNDE5MCwyNDE5MywyNDE5NCwyNDE5NSwyNDE5NywyNDIwMCwyNDIwMSwyNDIwNCwyNDIwNSwyNDIwNiwyNDIxMCwyNDIxNiwyNDIxOSwyNDIyMSwyNDIyNSwyNDIy''@;'; put 'put ''NiwyNDIyNywyNDIyOCwyNDIzMiwyNDIzMywyNDIzNCwyNDIzNSwyNDIzNiwyNDIzOCwyNDIzOSwyNDI0MCwyNDI0MSwyNDI0MiwyNDI0NCwyNDI1MCwyNDI1MSwyNDI1MiwyNDI1MywyNDI1NSwyNDI1NiwyNDI1NywyNDI1OCwyNDI1OSwyNDI2MCwyNDI2MSwyNDI2MiwyNDI2MywyNDI2NCwy''@;'; put 'put ''NDI2NywyNDI2OCwyNDI2OSwyNDI3MCwyNDI3MSwyNDI3MiwyNDI3NiwyNDI3NywyNDI3OSwyNDI4MCwyNDI4MSwyNDI4MiwyNDI4NCwyNDI4NSwyNDI4NiwyNDI4NywyNDI4OCwyNDI4OSwyNDI5MCwyNDI5MSwyNDI5MiwyNDI5MywyNDI5NCwyNDI5NSwyNDI5NywyNDI5OSwyNDMwMCwyNDMw''@;'; put 'put ''MSwyNDMwMiwyNDMwMywyNDMwNCwyNDMwNSwyNDMwNiwyNDMwNywyNDMwOSwyNDMxMiwyNDMxMywyNDMxNSwyNDMxNiwyNDMxNywyNDMyNSwyNDMyNiwyNDMyNywyNDMyOSwyNDMzMiwyNDMzMywyNDMzNCwyNDMzNiwyNDMzOCwyNDM0MCwyNDM0MiwyNDM0NSwyNDM0NiwyNDM0OCwyNDM0OSwy''@;'; put 'put ''NDM1MCwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MCwyNDM3MSwyNDM3MiwyNDM3MywyNDM3NCwyNDM3NSwyNDM3NiwyNDM3OSwyNDM4MSwyNDM4MiwyNDM4MywyNDM4NSwyNDM4NiwyNDM4NywyNDM4OCwyNDM4OSwyNDM5MCwyNDM5''@;'; put 'put ''MSwyNDM5MiwyNDM5MywyNDM5NCwyNDM5NSwyNDM5NiwyNDM5NywyNDM5OCwyNDM5OSwyNDQwMSwyNDQwNCwyNDQwOSwyNDQxMCwyNDQxMSwyNDQxMiwyNDQxNCwyNDQxNSwyNDQxNiwyNDQxOSwyNDQyMSwyNDQyMywyNDQyNCwyNDQyNywyNDQzMCwyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywy''@;'; put 'put ''NDQzOCwyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ0NywyNDQ1MSwyNDQ1NCwyNDQ2MSwyNDQ2MiwyNDQ2MywyNDQ2NSwyNDQ2NywyNDQ2OCwyNDQ3MCwyNDQ3NCwyNDQ3NSwyNDQ3NywyNDQ3OCwyNDQ3OSwyNDQ4MCwyNDQ4MiwyNDQ4MywyNDQ4NCwyNDQ4NSwyNDQ4NiwyNDQ4NywyNDQ4''@;'; put 'put ''OSwyNDQ5MSwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDQ5OCwyNDQ5OSwyNDUwMCwyNDUwMiwyNDUwNCwyNDUwNSwyNDUwNiwyNDUwNywyNDUxMCwyNDUxMSwyNDUxMiwyNDUxMywyNDUxNCwyNDUxOSwyNDUyMCwyNDUyMiwyNDUyMywyNDUyNiwyNDUzMSwyNDUzMiwyNDUzMywyNDUzOCwy''@;'; put 'put ''NDUzOSwyNDU0MCwyNDU0MiwyNDU0MywyNDU0NiwyNDU0NywyNDU0OSwyNDU1MCwyNDU1MiwyNDU1MywyNDU1NiwyNDU1OSwyNDU2MCwyNDU2MiwyNDU2MywyNDU2NCwyNDU2NiwyNDU2NywyNDU2OSwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NCwyNDU4NSwyNDU4NywyNDU4OCwyNDU5MiwyNDU5''@;'; put 'put ''MywyNDU5NSwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNiwyNDYwNywyNDYxMCwyNDYxMSwyNDYxMiwyNDYyMCwyNDYyMSwyNDYyMiwyNDYyNCwyNDYyNSwyNDYyNiwyNDYyNywyNDYyOCwyNDYzMCwyNDYzMSwyNDYzMiwyNDYzMywyNDYzNCwyNDYzNywyNDYzOCwyNDY0MCwyNDY0NCwyNDY0NSwy''@;'; put 'put ''NDY0NiwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MCwyNDY1MiwyNDY1NCwyNDY1NSwyNDY1NywyNDY1OSwyNDY2MCwyNDY2MiwyNDY2MywyNDY2NCwyNDY2NywyNDY2OCwyNDY3MCwyNDY3MSwyNDY3MiwyNDY3MywyNDY3NywyNDY3OCwyNDY4NiwyNDY4OSwyNDY5MCwyNDY5MiwyNDY5MywyNDY5''@;'; put 'put ''NSwyNDcwMiwyNDcwNCwyNDcwNSwyNDcwNiwyNDcwOSwyNDcxMCwyNDcxMSwyNDcxMiwyNDcxNCwyNDcxNSwyNDcxOCwyNDcxOSwyNDcyMCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyNywyNDcyOCwyNDcyOSwyNDczMiwyNDczNCwyNDczNywyNDczOCwyNDc0MCwyNDc0MSwyNDc0MywyNDc0NSwy''@;'; put 'put ''NDc0NiwyNDc1MCwyNDc1MiwyNDc1NSwyNDc1NywyNDc1OCwyNDc1OSwyNDc2MSwyNDc2MiwyNDc2NSwyNDc2NiwyNDc2NywyNDc2OCwyNDc2OSwyNDc3MCwyNDc3MSwyNDc3MiwyNDc3NSwyNDc3NiwyNDc3NywyNDc4MCwyNDc4MSwyNDc4MiwyNDc4MywyNDc4NCwyNDc4NiwyNDc4NywyNDc4''@;'; put 'put ''OCwyNDc5MCwyNDc5MSwyNDc5MywyNDc5NSwyNDc5OCwyNDgwMSwyNDgwMiwyNDgwMywyNDgwNCwyNDgwNSwyNDgxMCwyNDgxNywyNDgxOCwyNDgyMSwyNDgyMywyNDgyNCwyNDgyNywyNDgyOCwyNDgyOSwyNDgzMCwyNDgzMSwyNDgzNCwyNDgzNSwyNDgzNiwyNDgzNywyNDgzOSwyNDg0Miwy''@;'; put 'put ''NDg0MywyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NiwyNDg1NywyNDg1OSwyNDg2MCwyNDg2MSwyNDg2MiwyNDg2NSwyNDg2NiwyNDg2OSwyNDg3MiwyNDg3MywyNDg3NCwyNDg3NiwyNDg3NywyNDg3OCwyNDg3OSwyNDg4MCwyNDg4MSwyNDg4''@;'; put 'put ''MiwyNDg4MywyNDg4NCwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OCwyNDg4OSwyNDg5MCwyNDg5MSwyNDg5MiwyNDg5MywyNDg5NCwyNDg5NiwyNDg5NywyNDg5OCwyNDg5OSwyNDkwMCwyNDkwMSwyNDkwMiwyNDkwMywyNDkwNSwyNDkwNywyNDkwOSwyNDkxMSwyNDkxMiwyNDkxNCwyNDkxNSwy''@;'; put 'put ''NDkxNiwyNDkxOCwyNDkxOSwyNDkyMCwyNDkyMSwyNDkyMiwyNDkyMywyNDkyNCwyNDkyNiwyNDkyNywyNDkyOCwyNDkyOSwyNDkzMSwyNDkzMiwyNDkzMywyNDkzNCwyNDkzNywyNDkzOCwyNDkzOSwyNDk0MCwyNDk0MSwyNDk0MiwyNDk0MywyNDk0NSwyNDk0NiwyNDk0NywyNDk0OCwyNDk1''@;'; put 'put ''MCwyNDk1MiwyNDk1MywyNDk1NCwyNDk1NSwyNDk1NiwyNDk1NywyNDk1OCwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MiwyNDk2MywyNDk2NCwyNDk2NSwyNDk2NiwyNDk2NywyNDk2OCwyNDk2OSwyNDk3MCwyNDk3MiwyNDk3MywyNDk3NSwyNDk3NiwyNDk3NywyNDk3OCwyNDk3OSwyNDk4MSwy''@;'; put 'put ''NDk4MiwyNDk4MywyNDk4NCwyNDk4NSwyNDk4NiwyNDk4NywyNDk4OCwyNDk5MCwyNDk5MSwyNDk5MiwyNDk5MywyNDk5NCwyNDk5NSwyNDk5NiwyNDk5NywyNDk5OCwyNTAwMiwyNTAwMywyNTAwNSwyNTAwNiwyNTAwNywyNTAwOCwyNTAwOSwyNTAxMCwyNTAxMSwyNTAxMiwyNTAxMywyNTAx''@;'; put 'put ''NCwyNTAxNiwyNTAxNywyNTAxOCwyNTAxOSwyNTAyMCwyNTAyMSwyNTAyMywyNTAyNCwyNTAyNSwyNTAyNywyNTAyOCwyNTAyOSwyNTAzMCwyNTAzMSwyNTAzMywyNTAzNiwyNTAzNywyNTAzOCwyNTAzOSwyNTA0MCwyNTA0MywyNTA0NSwyNTA0NiwyNTA0NywyNTA0OCwyNTA0OSwyNTA1MCwy''@;'; put 'put ''NTA1MSwyNTA1MiwyNTA1MywyNTA1NCwyNTA1NSwyNTA1NiwyNTA1NywyNTA1OCwyNTA1OSwyNTA2MCwyNTA2MSwyNTA2MywyNTA2NCwyNTA2NSwyNTA2NiwyNTA2NywyNTA2OCwyNTA2OSwyNTA3MCwyNTA3MSwyNTA3MiwyNTA3MywyNTA3NCwyNTA3NSwyNTA3NiwyNTA3OCwyNTA3OSwyNTA4''@;'; put 'put ''MCwyNTA4MSwyNTA4MiwyNTA4MywyNTA4NCwyNTA4NSwyNTA4NiwyNTA4OCwyNTA4OSwyNTA5MCwyNTA5MSwyNTA5MiwyNTA5MywyNTA5NSwyNTA5NywyNTEwNywyNTEwOCwyNTExMywyNTExNiwyNTExNywyNTExOCwyNTEyMCwyNTEyMywyNTEyNiwyNTEyNywyNTEyOCwyNTEyOSwyNTEzMSwy''@;'; put 'put ''NTEzMywyNTEzNSwyNTEzNiwyNTEzNywyNTEzOCwyNTE0MSwyNTE0MiwyNTE0NCwyNTE0NSwyNTE0NiwyNTE0NywyNTE0OCwyNTE1NCwyNTE1NiwyNTE1NywyNTE1OCwyNTE2MiwyNTE2NywyNTE2OCwyNTE3MywyNTE3NCwyNTE3NSwyNTE3NywyNTE3OCwyNTE4MCwyNTE4MSwyNTE4MiwyNTE4''@;'; put 'put ''MywyNTE4NCwyNTE4NSwyNTE4NiwyNTE4OCwyNTE4OSwyNTE5MiwyNTIwMSwyNTIwMiwyNTIwNCwyNTIwNSwyNTIwNywyNTIwOCwyNTIxMCwyNTIxMSwyNTIxMywyNTIxNywyNTIxOCwyNTIxOSwyNTIyMSwyNTIyMiwyNTIyMywyNTIyNCwyNTIyNywyNTIyOCwyNTIyOSwyNTIzMCwyNTIzMSwy''@;'; put 'put ''NTIzMiwyNTIzNiwyNTI0MSwyNTI0NCwyNTI0NSwyNTI0NiwyNTI1MSwyNTI1NCwyNTI1NSwyNTI1NywyNTI1OCwyNTI2MSwyNTI2MiwyNTI2MywyNTI2NCwyNTI2NiwyNTI2NywyNTI2OCwyNTI3MCwyNTI3MSwyNTI3MiwyNTI3NCwyNTI3OCwyNTI4MCwyNTI4MSwyNTI4MywyNTI5MSwyNTI5''@;'; put 'put ''NSwyNTI5NywyNTMwMSwyNTMwOSwyNTMxMCwyNTMxMiwyNTMxMywyNTMxNiwyNTMyMiwyNTMyMywyNTMyOCwyNTMzMCwyNTMzMywyNTMzNiwyNTMzNywyNTMzOCwyNTMzOSwyNTM0NCwyNTM0NywyNTM0OCwyNTM0OSwyNTM1MCwyNTM1NCwyNTM1NSwyNTM1NiwyNTM1NywyNTM1OSwyNTM2MCwy''@;'; put 'put ''NTM2MiwyNTM2MywyNTM2NCwyNTM2NSwyNTM2NywyNTM2OCwyNTM2OSwyNTM3MiwyNTM4MiwyNTM4MywyNTM4NSwyNTM4OCwyNTM4OSwyNTM5MCwyNTM5MiwyNTM5MywyNTM5NSwyNTM5NiwyNTM5NywyNTM5OCwyNTM5OSwyNTQwMCwyNTQwMywyNTQwNCwyNTQwNiwyNTQwNywyNTQwOCwyNTQw''@;'; put 'put ''OSwyNTQxMiwyNTQxNSwyNTQxNiwyNTQxOCwyNTQyNSwyNTQyNiwyNTQyNywyNTQyOCwyNTQzMCwyNTQzMSwyNTQzMiwyNTQzMywyNTQzNCwyNTQzNSwyNTQzNiwyNTQzNywyNTQ0MCwyNTQ0NCwyNTQ0NSwyNTQ0NiwyNTQ0OCwyNTQ1MCwyNTQ1MSwyNTQ1MiwyNTQ1NSwyNTQ1NiwyNTQ1OCwy''@;'; put 'put ''NTQ1OSwyNTQ2MCwyNTQ2MSwyNTQ2NCwyNTQ2NSwyNTQ2OCwyNTQ2OSwyNTQ3MCwyNTQ3MSwyNTQ3MywyNTQ3NSwyNTQ3NiwyNTQ3NywyNTQ3OCwyNTQ4MywyNTQ4NSwyNTQ4OSwyNTQ5MSwyNTQ5MiwyNTQ5MywyNTQ5NSwyNTQ5NywyNTQ5OCwyNTQ5OSwyNTUwMCwyNTUwMSwyNTUwMiwyNTUw''@;'; put 'put ''MywyNTUwNSwyNTUwOCwyNTUxMCwyNTUxNSwyNTUxOSwyNTUyMSwyNTUyMiwyNTUyNSwyNTUyNiwyNTUyOSwyNTUzMSwyNTUzMywyNTUzNSwyNTUzNiwyNTUzNywyNTUzOCwyNTUzOSwyNTU0MSwyNTU0MywyNTU0NCwyNTU0NiwyNTU0NywyNTU0OCwyNTU1MywyNTU1NSwyNTU1NiwyNTU1Nywy''@;'; put 'put ''NTU1OSwyNTU2MCwyNTU2MSwyNTU2MiwyNTU2MywyNTU2NCwyNTU2NSwyNTU2NywyNTU3MCwyNTU3MiwyNTU3MywyNTU3NCwyNTU3NSwyNTU3NiwyNTU3OSwyNTU4MCwyNTU4MiwyNTU4MywyNTU4NCwyNTU4NSwyNTU4NywyNTU4OSwyNTU5MSwyNTU5MywyNTU5NCwyNTU5NSwyNTU5NiwyNTU5''@;'; put 'put ''OCwyNTYwMywyNTYwNCwyNTYwNiwyNTYwNywyNTYwOCwyNTYwOSwyNTYxMCwyNTYxMywyNTYxNCwyNTYxNywyNTYxOCwyNTYyMSwyNTYyMiwyNTYyMywyNTYyNCwyNTYyNSwyNTYyNiwyNTYyOSwyNTYzMSwyNTYzNCwyNTYzNSwyNTYzNiwyNTYzNywyNTYzOSwyNTY0MCwyNTY0MSwyNTY0Mywy''@;'; put 'put ''NTY0NiwyNTY0NywyNTY0OCwyNTY0OSwyNTY1MCwyNTY1MSwyNTY1MywyNTY1NCwyNTY1NSwyNTY1NiwyNTY1NywyNTY1OSwyNTY2MCwyNTY2MiwyNTY2NCwyNTY2NiwyNTY2NywyNTY3MywyNTY3NSwyNTY3NiwyNTY3NywyNTY3OCwyNTY3OSwyNTY4MCwyNTY4MSwyNTY4MywyNTY4NSwyNTY4''@;'; put 'put ''NiwyNTY4NywyNTY4OSwyNTY5MCwyNTY5MSwyNTY5MiwyNTY5MywyNTY5NSwyNTY5NiwyNTY5NywyNTY5OCwyNTY5OSwyNTcwMCwyNTcwMSwyNTcwMiwyNTcwNCwyNTcwNiwyNTcwNywyNTcwOCwyNTcxMCwyNTcxMSwyNTcxMiwyNTcxMywyNTcxNCwyNTcxNSwyNTcxNiwyNTcxNywyNTcxOCwy''@;'; put 'put ''NTcxOSwyNTcyMywyNTcyNCwyNTcyNSwyNTcyNiwyNTcyNywyNTcyOCwyNTcyOSwyNTczMSwyNTczNCwyNTczNiwyNTczNywyNTczOCwyNTczOSwyNTc0MCwyNTc0MSwyNTc0MiwyNTc0MywyNTc0NCwyNTc0NywyNTc0OCwyNTc1MSwyNTc1MiwyNTc1NCwyNTc1NSwyNTc1NiwyNTc1NywyNTc1''@;'; put 'put ''OSwyNTc2MCwyNTc2MSwyNTc2MiwyNTc2MywyNTc2NSwyNTc2NiwyNTc2NywyNTc2OCwyNTc3MCwyNTc3MSwyNTc3NSwyNTc3NywyNTc3OCwyNTc3OSwyNTc4MCwyNTc4MiwyNTc4NSwyNTc4NywyNTc4OSwyNTc5MCwyNTc5MSwyNTc5MywyNTc5NSwyNTc5NiwyNTc5OCwyNTc5OSwyNTgwMCwy''@;'; put 'put ''NTgwMSwyNTgwMiwyNTgwMywyNTgwNCwyNTgwNywyNTgwOSwyNTgxMSwyNTgxMiwyNTgxMywyNTgxNCwyNTgxNywyNTgxOCwyNTgxOSwyNTgyMCwyNTgyMSwyNTgyMywyNTgyNCwyNTgyNSwyNTgyNywyNTgyOSwyNTgzMSwyNTgzMiwyNTgzMywyNTgzNCwyNTgzNSwyNTgzNiwyNTgzNywyNTgz''@;'; put 'put ''OCwyNTgzOSwyNTg0MCwyNTg0MSwyNTg0MiwyNTg0MywyNTg0NCwyNTg0NSwyNTg0NiwyNTg0NywyNTg0OCwyNTg0OSwyNTg1MCwyNTg1MSwyNTg1MiwyNTg1MywyNTg1NCwyNTg1NSwyNTg1NywyNTg1OCwyNTg1OSwyNTg2MCwyNTg2MSwyNTg2MiwyNTg2MywyNTg2NCwyNTg2NiwyNTg2Nywy''@;'; put 'put ''NTg2OCwyNTg2OSwyNTg3MCwyNTg3MSwyNTg3MiwyNTg3MywyNTg3NSwyNTg3NiwyNTg3NywyNTg3OCwyNTg3OSwyNTg4MSwyNTg4MiwyNTg4MywyNTg4NCwyNTg4NSwyNTg4NiwyNTg4NywyNTg4OCwyNTg4OSwyNTg5MCwyNTg5MSwyNTg5MiwyNTg5NCwyNTg5NSwyNTg5NiwyNTg5NywyNTg5''@;'; put 'put ''OCwyNTkwMCwyNTkwMSwyNTkwNCwyNTkwNSwyNTkwNiwyNTkwNywyNTkxMSwyNTkxNCwyNTkxNiwyNTkxNywyNTkyMCwyNTkyMSwyNTkyMiwyNTkyMywyNTkyNCwyNTkyNiwyNTkyNywyNTkzMCwyNTkzMSwyNTkzMywyNTkzNCwyNTkzNiwyNTkzOCwyNTkzOSwyNTk0MCwyNTk0MywyNTk0NCwy''@;'; put 'put ''NTk0NiwyNTk0OCwyNTk1MSwyNTk1MiwyNTk1MywyNTk1NiwyNTk1NywyNTk1OSwyNTk2MCwyNTk2MSwyNTk2MiwyNTk2NSwyNTk2NiwyNTk2NywyNTk2OSwyNTk3MSwyNTk3MywyNTk3NCwyNTk3NiwyNTk3NywyNTk3OCwyNTk3OSwyNTk4MCwyNTk4MSwyNTk4MiwyNTk4MywyNTk4NCwyNTk4''@;'; put 'put ''NSwyNTk4NiwyNTk4NywyNTk4OCwyNTk4OSwyNTk5MCwyNTk5MiwyNTk5MywyNTk5NCwyNTk5NywyNTk5OCwyNTk5OSwyNjAwMiwyNjAwNCwyNjAwNSwyNjAwNiwyNjAwOCwyNjAxMCwyNjAxMywyNjAxNCwyNjAxNiwyNjAxOCwyNjAxOSwyNjAyMiwyNjAyNCwyNjAyNiwyNjAyOCwyNjAzMCwy''@;'; put 'put ''NjAzMywyNjAzNCwyNjAzNSwyNjAzNiwyNjAzNywyNjAzOCwyNjAzOSwyNjA0MCwyNjA0MiwyNjA0MywyNjA0NiwyNjA0NywyNjA0OCwyNjA1MCwyNjA1NSwyNjA1NiwyNjA1NywyNjA1OCwyNjA2MSwyNjA2NCwyNjA2NSwyNjA2NywyNjA2OCwyNjA2OSwyNjA3MiwyNjA3MywyNjA3NCwyNjA3''@;'; put 'put ''NSwyNjA3NiwyNjA3NywyNjA3OCwyNjA3OSwyNjA4MSwyNjA4MywyNjA4NCwyNjA5MCwyNjA5MSwyNjA5OCwyNjA5OSwyNjEwMCwyNjEwMSwyNjEwNCwyNjEwNSwyNjEwNywyNjEwOCwyNjEwOSwyNjExMCwyNjExMSwyNjExMywyNjExNiwyNjExNywyNjExOSwyNjEyMCwyNjEyMSwyNjEyMywy''@;'; put 'put ''NjEyNSwyNjEyOCwyNjEyOSwyNjEzMCwyNjEzNCwyNjEzNSwyNjEzNiwyNjEzOCwyNjEzOSwyNjE0MCwyNjE0MiwyNjE0NSwyNjE0NiwyNjE0NywyNjE0OCwyNjE1MCwyNjE1MywyNjE1NCwyNjE1NSwyNjE1NiwyNjE1OCwyNjE2MCwyNjE2MiwyNjE2MywyNjE2NywyNjE2OCwyNjE2OSwyNjE3''@;'; put 'put ''MCwyNjE3MSwyNjE3MywyNjE3NSwyNjE3NiwyNjE3OCwyNjE4MCwyNjE4MSwyNjE4MiwyNjE4MywyNjE4NCwyNjE4NSwyNjE4NiwyNjE4OSwyNjE5MCwyNjE5MiwyNjE5MywyNjIwMCwyNjIwMSwyNjIwMywyNjIwNCwyNjIwNSwyNjIwNiwyNjIwOCwyNjIxMCwyNjIxMSwyNjIxMywyNjIxNSwy''@;'; put 'put ''NjIxNywyNjIxOCwyNjIxOSwyNjIyMCwyNjIyMSwyNjIyNSwyNjIyNiwyNjIyNywyNjIyOSwyNjIzMiwyNjIzMywyNjIzNSwyNjIzNiwyNjIzNywyNjIzOSwyNjI0MCwyNjI0MSwyNjI0MywyNjI0NSwyNjI0NiwyNjI0OCwyNjI0OSwyNjI1MCwyNjI1MSwyNjI1MywyNjI1NCwyNjI1NSwyNjI1''@;'; put 'put ''NiwyNjI1OCwyNjI1OSwyNjI2MCwyNjI2MSwyNjI2NCwyNjI2NSwyNjI2NiwyNjI2NywyNjI2OCwyNjI3MCwyNjI3MSwyNjI3MiwyNjI3MywyNjI3NCwyNjI3NSwyNjI3NiwyNjI3NywyNjI3OCwyNjI4MSwyNjI4MiwyNjI4MywyNjI4NCwyNjI4NSwyNjI4NywyNjI4OCwyNjI4OSwyNjI5MCwy''@;'; put 'put ''NjI5MSwyNjI5MywyNjI5NCwyNjI5NSwyNjI5NiwyNjI5OCwyNjI5OSwyNjMwMCwyNjMwMSwyNjMwMywyNjMwNCwyNjMwNSwyNjMwNiwyNjMwNywyNjMwOCwyNjMwOSwyNjMxMCwyNjMxMSwyNjMxMiwyNjMxMywyNjMxNCwyNjMxNSwyNjMxNiwyNjMxNywyNjMxOCwyNjMxOSwyNjMyMCwyNjMy''@;'; put 'put ''MSwyNjMyMiwyNjMyMywyNjMyNCwyNjMyNSwyNjMyNiwyNjMyNywyNjMyOCwyNjMzMCwyNjMzNCwyNjMzNSwyNjMzNiwyNjMzNywyNjMzOCwyNjMzOSwyNjM0MCwyNjM0MSwyNjM0MywyNjM0NCwyNjM0NiwyNjM0NywyNjM0OCwyNjM0OSwyNjM1MCwyNjM1MSwyNjM1MywyNjM1NywyNjM1OCwy''@;'; put 'put ''NjM2MCwyNjM2MiwyNjM2MywyNjM2NSwyNjM2OSwyNjM3MCwyNjM3MSwyNjM3MiwyNjM3MywyNjM3NCwyNjM3NSwyNjM4MCwyNjM4MiwyNjM4MywyNjM4NSwyNjM4NiwyNjM4NywyNjM5MCwyNjM5MiwyNjM5MywyNjM5NCwyNjM5NiwyNjM5OCwyNjQwMCwyNjQwMSwyNjQwMiwyNjQwMywyNjQw''@;'; put 'put ''NCwyNjQwNSwyNjQwNywyNjQwOSwyNjQxNCwyNjQxNiwyNjQxOCwyNjQxOSwyNjQyMiwyNjQyMywyNjQyNCwyNjQyNSwyNjQyNywyNjQyOCwyNjQzMCwyNjQzMSwyNjQzMywyNjQzNiwyNjQzNywyNjQzOSwyNjQ0MiwyNjQ0MywyNjQ0NSwyNjQ1MCwyNjQ1MiwyNjQ1MywyNjQ1NSwyNjQ1Niwy''@;'; put 'put ''NjQ1NywyNjQ1OCwyNjQ1OSwyNjQ2MSwyNjQ2NiwyNjQ2NywyNjQ2OCwyNjQ3MCwyNjQ3MSwyNjQ3NSwyNjQ3NiwyNjQ3OCwyNjQ4MSwyNjQ4NCwyNjQ4NiwyNjQ4OCwyNjQ4OSwyNjQ5MCwyNjQ5MSwyNjQ5MywyNjQ5NiwyNjQ5OCwyNjQ5OSwyNjUwMSwyNjUwMiwyNjUwNCwyNjUwNiwyNjUw''@;'; put 'put ''OCwyNjUwOSwyNjUxMCwyNjUxMSwyNjUxMywyNjUxNCwyNjUxNSwyNjUxNiwyNjUxOCwyNjUyMSwyNjUyMywyNjUyNywyNjUyOCwyNjUyOSwyNjUzMiwyNjUzNCwyNjUzNywyNjU0MCwyNjU0MiwyNjU0NSwyNjU0NiwyNjU0OCwyNjU1MywyNjU1NCwyNjU1NSwyNjU1NiwyNjU1NywyNjU1OCwy''@;'; put 'put ''NjU1OSwyNjU2MCwyNjU2MiwyNjU2NSwyNjU2NiwyNjU2NywyNjU2OCwyNjU2OSwyNjU3MCwyNjU3MSwyNjU3MiwyNjU3MywyNjU3NCwyNjU4MSwyNjU4MiwyNjU4MywyNjU4NywyNjU5MSwyNjU5MywyNjU5NSwyNjU5NiwyNjU5OCwyNjU5OSwyNjYwMCwyNjYwMiwyNjYwMywyNjYwNSwyNjYw''@;'; put 'put ''NiwyNjYxMCwyNjYxMywyNjYxNCwyNjYxNSwyNjYxNiwyNjYxNywyNjYxOCwyNjYxOSwyNjYyMCwyNjYyMiwyNjYyNSwyNjYyNiwyNjYyNywyNjYyOCwyNjYzMCwyNjYzNywyNjY0MCwyNjY0MiwyNjY0NCwyNjY0NSwyNjY0OCwyNjY0OSwyNjY1MCwyNjY1MSwyNjY1MiwyNjY1NCwyNjY1NSwy''@;'; put 'put ''NjY1NiwyNjY1OCwyNjY1OSwyNjY2MCwyNjY2MSwyNjY2MiwyNjY2MywyNjY2NCwyNjY2NywyNjY2OCwyNjY2OSwyNjY3MCwyNjY3MSwyNjY3MiwyNjY3MywyNjY3NiwyNjY3NywyNjY3OCwyNjY4MiwyNjY4MywyNjY4NywyNjY5NSwyNjY5OSwyNjcwMSwyNjcwMywyNjcwNiwyNjcxMCwyNjcx''@;'; put 'put ''MSwyNjcxMiwyNjcxMywyNjcxNCwyNjcxNSwyNjcxNiwyNjcxNywyNjcxOCwyNjcxOSwyNjczMCwyNjczMiwyNjczMywyNjczNCwyNjczNSwyNjczNiwyNjczNywyNjczOCwyNjczOSwyNjc0MSwyNjc0NCwyNjc0NSwyNjc0NiwyNjc0NywyNjc0OCwyNjc0OSwyNjc1MCwyNjc1MSwyNjc1Miwy''@;'; put 'put ''Njc1NCwyNjc1NiwyNjc1OSwyNjc2MCwyNjc2MSwyNjc2MiwyNjc2MywyNjc2NCwyNjc2NSwyNjc2NiwyNjc2OCwyNjc2OSwyNjc3MCwyNjc3MiwyNjc3MywyNjc3NCwyNjc3NiwyNjc3NywyNjc3OCwyNjc3OSwyNjc4MCwyNjc4MSwyNjc4MiwyNjc4MywyNjc4NCwyNjc4NSwyNjc4NywyNjc4''@;'; put 'put ''OCwyNjc4OSwyNjc5MywyNjc5NCwyNjc5NSwyNjc5NiwyNjc5OCwyNjgwMSwyNjgwMiwyNjgwNCwyNjgwNiwyNjgwNywyNjgwOCwyNjgwOSwyNjgxMCwyNjgxMSwyNjgxMiwyNjgxMywyNjgxNCwyNjgxNSwyNjgxNywyNjgxOSwyNjgyMCwyNjgyMSwyNjgyMiwyNjgyMywyNjgyNCwyNjgyNiwy''@;'; put 'put ''NjgyOCwyNjgzMCwyNjgzMSwyNjgzMiwyNjgzMywyNjgzNSwyNjgzNiwyNjgzOCwyNjgzOSwyNjg0MSwyNjg0MywyNjg0NCwyNjg0NSwyNjg0NiwyNjg0NywyNjg0OSwyNjg1MCwyNjg1MiwyNjg1MywyNjg1NCwyNjg1NSwyNjg1NiwyNjg1NywyNjg1OCwyNjg1OSwyNjg2MCwyNjg2MSwyNjg2''@;'; put 'put ''MywyNjg2NiwyNjg2NywyNjg2OCwyNjg3MCwyNjg3MSwyNjg3MiwyNjg3NSwyNjg3NywyNjg3OCwyNjg3OSwyNjg4MCwyNjg4MiwyNjg4MywyNjg4NCwyNjg4NiwyNjg4NywyNjg4OCwyNjg4OSwyNjg5MCwyNjg5MiwyNjg5NSwyNjg5NywyNjg5OSwyNjkwMCwyNjkwMSwyNjkwMiwyNjkwMywy''@;'; put 'put ''NjkwNCwyNjkwNSwyNjkwNiwyNjkwNywyNjkwOCwyNjkwOSwyNjkxMCwyNjkxMywyNjkxNCwyNjkxNSwyNjkxNywyNjkxOCwyNjkxOSwyNjkyMCwyNjkyMSwyNjkyMiwyNjkyMywyNjkyNCwyNjkyNiwyNjkyNywyNjkyOSwyNjkzMCwyNjkzMSwyNjkzMywyNjkzNCwyNjkzNSwyNjkzNiwyNjkz''@;'; put 'put ''OCwyNjkzOSwyNjk0MCwyNjk0MiwyNjk0NCwyNjk0NSwyNjk0NywyNjk0OCwyNjk0OSwyNjk1MCwyNjk1MSwyNjk1MiwyNjk1MywyNjk1NCwyNjk1NSwyNjk1NiwyNjk1NywyNjk1OCwyNjk1OSwyNjk2MCwyNjk2MSwyNjk2MiwyNjk2MywyNjk2NSwyNjk2NiwyNjk2OCwyNjk2OSwyNjk3MSwy''@;'; put 'put ''Njk3MiwyNjk3NSwyNjk3NywyNjk3OCwyNjk4MCwyNjk4MSwyNjk4MywyNjk4NCwyNjk4NSwyNjk4NiwyNjk4OCwyNjk4OSwyNjk5MSwyNjk5MiwyNjk5NCwyNjk5NSwyNjk5NiwyNjk5NywyNjk5OCwyNzAwMiwyNzAwMywyNzAwNSwyNzAwNiwyNzAwNywyNzAwOSwyNzAxMSwyNzAxMywyNzAx''@;'; put 'put ''OCwyNzAxOSwyNzAyMCwyNzAyMiwyNzAyMywyNzAyNCwyNzAyNSwyNzAyNiwyNzAyNywyNzAzMCwyNzAzMSwyNzAzMywyNzAzNCwyNzAzNywyNzAzOCwyNzAzOSwyNzA0MCwyNzA0MSwyNzA0MiwyNzA0MywyNzA0NCwyNzA0NSwyNzA0NiwyNzA0OSwyNzA1MCwyNzA1MiwyNzA1NCwyNzA1NSwy''@;'; put 'put ''NzA1NiwyNzA1OCwyNzA1OSwyNzA2MSwyNzA2MiwyNzA2NCwyNzA2NSwyNzA2NiwyNzA2OCwyNzA2OSwyNzA3MCwyNzA3MSwyNzA3MiwyNzA3NCwyNzA3NSwyNzA3NiwyNzA3NywyNzA3OCwyNzA3OSwyNzA4MCwyNzA4MSwyNzA4MywyNzA4NSwyNzA4NywyNzA4OSwyNzA5MCwyNzA5MSwyNzA5''@;'; put 'put ''MywyNzA5NCwyNzA5NSwyNzA5NiwyNzA5NywyNzA5OCwyNzEwMCwyNzEwMSwyNzEwMiwyNzEwNSwyNzEwNiwyNzEwNywyNzEwOCwyNzEwOSwyNzExMCwyNzExMSwyNzExMiwyNzExMywyNzExNCwyNzExNSwyNzExNiwyNzExOCwyNzExOSwyNzEyMCwyNzEyMSwyNzEyMywyNzEyNCwyNzEyNSwy''@;'; put 'put ''NzEyNiwyNzEyNywyNzEyOCwyNzEyOSwyNzEzMCwyNzEzMSwyNzEzMiwyNzEzNCwyNzEzNiwyNzEzNywyNzEzOCwyNzEzOSwyNzE0MCwyNzE0MSwyNzE0MiwyNzE0MywyNzE0NCwyNzE0NSwyNzE0NywyNzE0OCwyNzE0OSwyNzE1MCwyNzE1MSwyNzE1MiwyNzE1MywyNzE1NCwyNzE1NSwyNzE1''@;'; put 'put ''NiwyNzE1NywyNzE1OCwyNzE2MSwyNzE2MiwyNzE2MywyNzE2NCwyNzE2NSwyNzE2NiwyNzE2OCwyNzE3MCwyNzE3MSwyNzE3MiwyNzE3MywyNzE3NCwyNzE3NSwyNzE3NywyNzE3OSwyNzE4MCwyNzE4MSwyNzE4MiwyNzE4NCwyNzE4NiwyNzE4NywyNzE4OCwyNzE5MCwyNzE5MSwyNzE5Miwy''@;'; put 'put ''NzE5MywyNzE5NCwyNzE5NSwyNzE5NiwyNzE5OSwyNzIwMCwyNzIwMSwyNzIwMiwyNzIwMywyNzIwNSwyNzIwNiwyNzIwOCwyNzIwOSwyNzIxMCwyNzIxMSwyNzIxMiwyNzIxMywyNzIxNCwyNzIxNSwyNzIxNywyNzIxOCwyNzIxOSwyNzIyMCwyNzIyMSwyNzIyMiwyNzIyMywyNzIyNiwyNzIy''@;'; put 'put ''OCwyNzIyOSwyNzIzMCwyNzIzMSwyNzIzMiwyNzIzNCwyNzIzNSwyNzIzNiwyNzIzOCwyNzIzOSwyNzI0MCwyNzI0MSwyNzI0MiwyNzI0MywyNzI0NCwyNzI0NSwyNzI0NiwyNzI0NywyNzI0OCwyNzI1MCwyNzI1MSwyNzI1MiwyNzI1MywyNzI1NCwyNzI1NSwyNzI1NiwyNzI1OCwyNzI1OSwy''@;'; put 'put ''NzI2MSwyNzI2MiwyNzI2MywyNzI2NSwyNzI2NiwyNzI2NywyNzI2OSwyNzI3MCwyNzI3MSwyNzI3MiwyNzI3MywyNzI3NCwyNzI3NSwyNzI3NiwyNzI3NywyNzI3OSwyNzI4MiwyNzI4MywyNzI4NCwyNzI4NSwyNzI4NiwyNzI4OCwyNzI4OSwyNzI5MCwyNzI5MSwyNzI5MiwyNzI5MywyNzI5''@;'; put 'put ''NCwyNzI5NSwyNzI5NywyNzI5OCwyNzI5OSwyNzMwMCwyNzMwMSwyNzMwMiwyNzMwMywyNzMwNCwyNzMwNiwyNzMwOSwyNzMxMCwyNzMxMSwyNzMxMiwyNzMxMywyNzMxNCwyNzMxNSwyNzMxNiwyNzMxNywyNzMxOCwyNzMxOSwyNzMyMCwyNzMyMSwyNzMyMiwyNzMyMywyNzMyNCwyNzMyNSwy''@;'; put 'put ''NzMyNiwyNzMyNywyNzMyOCwyNzMyOSwyNzMzMCwyNzMzMSwyNzMzMiwyNzMzMywyNzMzNCwyNzMzNSwyNzMzNiwyNzMzNywyNzMzOCwyNzMzOSwyNzM0MCwyNzM0MSwyNzM0MiwyNzM0MywyNzM0NCwyNzM0NSwyNzM0NiwyNzM0NywyNzM0OCwyNzM0OSwyNzM1MCwyNzM1MSwyNzM1MiwyNzM1''@;'; put 'put ''MywyNzM1NCwyNzM1NSwyNzM1NiwyNzM1NywyNzM1OCwyNzM1OSwyNzM2MCwyNzM2MSwyNzM2MiwyNzM2MywyNzM2NCwyNzM2NSwyNzM2NiwyNzM2NywyNzM2OCwyNzM2OSwyNzM3MCwyNzM3MSwyNzM3MiwyNzM3MywyNzM3NCwyNzM3NSwyNzM3NiwyNzM3NywyNzM3OCwyNzM3OSwyNzM4MCwy''@;'; put 'put ''NzM4MSwyNzM4MiwyNzM4MywyNzM4NCwyNzM4NSwyNzM4NiwyNzM4NywyNzM4OCwyNzM4OSwyNzM5MCwyNzM5MSwyNzM5MiwyNzM5MywyNzM5NCwyNzM5NSwyNzM5NiwyNzM5NywyNzM5OCwyNzM5OSwyNzQwMCwyNzQwMSwyNzQwMiwyNzQwMywyNzQwNCwyNzQwNSwyNzQwNiwyNzQwNywyNzQw''@;'; put 'put ''OCwyNzQwOSwyNzQxMCwyNzQxMSwyNzQxMiwyNzQxMywyNzQxNCwyNzQxNSwyNzQxNiwyNzQxNywyNzQxOCwyNzQxOSwyNzQyMCwyNzQyMSwyNzQyMiwyNzQyMywyNzQyOSwyNzQzMCwyNzQzMiwyNzQzMywyNzQzNCwyNzQzNSwyNzQzNiwyNzQzNywyNzQzOCwyNzQzOSwyNzQ0MCwyNzQ0MSwy''@;'; put 'put ''NzQ0MywyNzQ0NCwyNzQ0NSwyNzQ0NiwyNzQ0OCwyNzQ1MSwyNzQ1MiwyNzQ1MywyNzQ1NSwyNzQ1NiwyNzQ1NywyNzQ1OCwyNzQ2MCwyNzQ2MSwyNzQ2NCwyNzQ2NiwyNzQ2NywyNzQ2OSwyNzQ3MCwyNzQ3MSwyNzQ3MiwyNzQ3MywyNzQ3NCwyNzQ3NSwyNzQ3NiwyNzQ3NywyNzQ3OCwyNzQ3''@;'; put 'put ''OSwyNzQ4MCwyNzQ4MiwyNzQ4MywyNzQ4NCwyNzQ4NSwyNzQ4NiwyNzQ4NywyNzQ4OCwyNzQ4OSwyNzQ5NiwyNzQ5NywyNzQ5OSwyNzUwMCwyNzUwMSwyNzUwMiwyNzUwMywyNzUwNCwyNzUwNSwyNzUwNiwyNzUwNywyNzUwOCwyNzUwOSwyNzUxMCwyNzUxMSwyNzUxMiwyNzUxNCwyNzUxNywy''@;'; put 'put ''NzUxOCwyNzUxOSwyNzUyMCwyNzUyNSwyNzUyOCwyNzUzMiwyNzUzNCwyNzUzNSwyNzUzNiwyNzUzNywyNzU0MCwyNzU0MSwyNzU0MywyNzU0NCwyNzU0NSwyNzU0OCwyNzU0OSwyNzU1MCwyNzU1MSwyNzU1MiwyNzU1NCwyNzU1NSwyNzU1NiwyNzU1NywyNzU1OCwyNzU1OSwyNzU2MCwyNzU2''@;'; put 'put ''MSwyNzU2MywyNzU2NCwyNzU2NSwyNzU2NiwyNzU2NywyNzU2OCwyNzU2OSwyNzU3MCwyNzU3NCwyNzU3NiwyNzU3NywyNzU3OCwyNzU3OSwyNzU4MCwyNzU4MSwyNzU4MiwyNzU4NCwyNzU4NywyNzU4OCwyNzU5MCwyNzU5MSwyNzU5MiwyNzU5MywyNzU5NCwyNzU5NiwyNzU5OCwyNzYwMCwy''@;'; put 'put ''NzYwMSwyNzYwOCwyNzYxMCwyNzYxMiwyNzYxMywyNzYxNCwyNzYxNSwyNzYxNiwyNzYxOCwyNzYxOSwyNzYyMCwyNzYyMSwyNzYyMiwyNzYyMywyNzYyNCwyNzYyNSwyNzYyOCwyNzYyOSwyNzYzMCwyNzYzMiwyNzYzMywyNzYzNCwyNzYzNiwyNzYzOCwyNzYzOSwyNzY0MCwyNzY0MiwyNzY0''@;'; put 'put ''MywyNzY0NCwyNzY0NiwyNzY0NywyNzY0OCwyNzY0OSwyNzY1MCwyNzY1MSwyNzY1MiwyNzY1NiwyNzY1NywyNzY1OCwyNzY1OSwyNzY2MCwyNzY2MiwyNzY2NiwyNzY3MSwyNzY3NiwyNzY3NywyNzY3OCwyNzY4MCwyNzY4MywyNzY4NSwyNzY5MSwyNzY5MiwyNzY5MywyNzY5NywyNzY5OSwy''@;'; put 'put ''NzcwMiwyNzcwMywyNzcwNSwyNzcwNiwyNzcwNywyNzcwOCwyNzcxMCwyNzcxMSwyNzcxNSwyNzcxNiwyNzcxNywyNzcyMCwyNzcyMywyNzcyNCwyNzcyNSwyNzcyNiwyNzcyNywyNzcyOSwyNzczMCwyNzczMSwyNzczNCwyNzczNiwyNzczNywyNzczOCwyNzc0NiwyNzc0NywyNzc0OSwyNzc1''@;'; put 'put ''MCwyNzc1MSwyNzc1NSwyNzc1NiwyNzc1NywyNzc1OCwyNzc1OSwyNzc2MSwyNzc2MywyNzc2NSwyNzc2NywyNzc2OCwyNzc3MCwyNzc3MSwyNzc3MiwyNzc3NSwyNzc3NiwyNzc4MCwyNzc4MywyNzc4NiwyNzc4NywyNzc4OSwyNzc5MCwyNzc5MywyNzc5NCwyNzc5NywyNzc5OCwyNzc5OSwy''@;'; put 'put ''NzgwMCwyNzgwMiwyNzgwNCwyNzgwNSwyNzgwNiwyNzgwOCwyNzgxMCwyNzgxNiwyNzgyMCwyNzgyMywyNzgyNCwyNzgyOCwyNzgyOSwyNzgzMCwyNzgzMSwyNzgzNCwyNzg0MCwyNzg0MSwyNzg0MiwyNzg0MywyNzg0NiwyNzg0NywyNzg0OCwyNzg1MSwyNzg1MywyNzg1NCwyNzg1NSwyNzg1''@;'; put 'put ''NywyNzg1OCwyNzg2NCwyNzg2NSwyNzg2NiwyNzg2OCwyNzg2OSwyNzg3MSwyNzg3NiwyNzg3OCwyNzg3OSwyNzg4MSwyNzg4NCwyNzg4NSwyNzg5MCwyNzg5MiwyNzg5NywyNzkwMywyNzkwNCwyNzkwNiwyNzkwNywyNzkwOSwyNzkxMCwyNzkxMiwyNzkxMywyNzkxNCwyNzkxNywyNzkxOSwy''@;'; put 'put ''NzkyMCwyNzkyMSwyNzkyMywyNzkyNCwyNzkyNSwyNzkyNiwyNzkyOCwyNzkzMiwyNzkzMywyNzkzNSwyNzkzNiwyNzkzNywyNzkzOCwyNzkzOSwyNzk0MCwyNzk0MiwyNzk0NCwyNzk0NSwyNzk0OCwyNzk0OSwyNzk1MSwyNzk1MiwyNzk1NiwyNzk1OCwyNzk1OSwyNzk2MCwyNzk2MiwyNzk2''@;'; put 'put ''NywyNzk2OCwyNzk3MCwyNzk3MiwyNzk3NywyNzk4MCwyNzk4NCwyNzk4OSwyNzk5MCwyNzk5MSwyNzk5MiwyNzk5NSwyNzk5NywyNzk5OSwyODAwMSwyODAwMiwyODAwNCwyODAwNSwyODAwNywyODAwOCwyODAxMSwyODAxMiwyODAxMywyODAxNiwyODAxNywyODAxOCwyODAxOSwyODAyMSwy''@;'; put 'put ''ODAyMiwyODAyNSwyODAyNiwyODAyNywyODAyOSwyODAzMCwyODAzMSwyODAzMiwyODAzMywyODAzNSwyODAzNiwyODAzOCwyODAzOSwyODA0MiwyODA0MywyODA0NSwyODA0NywyODA0OCwyODA1MCwyODA1NCwyODA1NSwyODA1NiwyODA1NywyODA1OCwyODA2MCwyODA2NiwyODA2OSwyODA3''@;'; put 'put ''NiwyODA3NywyODA4MCwyODA4MSwyODA4MywyODA4NCwyODA4NiwyODA4NywyODA4OSwyODA5MCwyODA5MSwyODA5MiwyODA5MywyODA5NCwyODA5NywyODA5OCwyODA5OSwyODEwNCwyODEwNSwyODEwNiwyODEwOSwyODExMCwyODExMSwyODExMiwyODExNCwyODExNSwyODExNiwyODExNywy''@;'; put 'put ''ODExOSwyODEyMiwyODEyMywyODEyNCwyODEyNywyODEzMCwyODEzMSwyODEzMywyODEzNSwyODEzNiwyODEzNywyODEzOCwyODE0MSwyODE0MywyODE0NCwyODE0NiwyODE0OCwyODE0OSwyODE1MCwyODE1MiwyODE1NCwyODE1NywyODE1OCwyODE1OSwyODE2MCwyODE2MSwyODE2MiwyODE2''@;'; put 'put ''MywyODE2NCwyODE2NiwyODE2NywyODE2OCwyODE2OSwyODE3MSwyODE3NSwyODE3OCwyODE3OSwyODE4MSwyODE4NCwyODE4NSwyODE4NywyODE4OCwyODE5MCwyODE5MSwyODE5NCwyODE5OCwyODE5OSwyODIwMCwyODIwMiwyODIwNCwyODIwNiwyODIwOCwyODIwOSwyODIxMSwyODIxMywy''@;'; put 'put ''ODIxNCwyODIxNSwyODIxNywyODIxOSwyODIyMCwyODIyMSwyODIyMiwyODIyMywyODIyNCwyODIyNSwyODIyNiwyODIyOSwyODIzMCwyODIzMSwyODIzMiwyODIzMywyODIzNCwyODIzNSwyODIzNiwyODIzOSwyODI0MCwyODI0MSwyODI0MiwyODI0NSwyODI0NywyODI0OSwyODI1MCwyODI1''@;'; put 'put ''MiwyODI1MywyODI1NCwyODI1NiwyODI1NywyODI1OCwyODI1OSwyODI2MCwyODI2MSwyODI2MiwyODI2MywyODI2NCwyODI2NSwyODI2NiwyODI2OCwyODI2OSwyODI3MSwyODI3MiwyODI3MywyODI3NCwyODI3NSwyODI3NiwyODI3NywyODI3OCwyODI3OSwyODI4MCwyODI4MSwyODI4Miwy''@;'; put 'put ''ODI4MywyODI4NCwyODI4NSwyODI4OCwyODI4OSwyODI5MCwyODI5MiwyODI5NSwyODI5NiwyODI5OCwyODI5OSwyODMwMCwyODMwMSwyODMwMiwyODMwNSwyODMwNiwyODMwNywyODMwOCwyODMwOSwyODMxMCwyODMxMSwyODMxMywyODMxNCwyODMxNSwyODMxNywyODMxOCwyODMyMCwyODMy''@;'; put 'put ''MSwyODMyMywyODMyNCwyODMyNiwyODMyOCwyODMyOSwyODMzMSwyODMzMiwyODMzMywyODMzNCwyODMzNiwyODMzOSwyODM0MSwyODM0NCwyODM0NSwyODM0OCwyODM1MCwyODM1MSwyODM1MiwyODM1NSwyODM1NiwyODM1NywyODM1OCwyODM2MCwyODM2MSwyODM2MiwyODM2NCwyODM2NSwy''@;'; put 'put ''ODM2NiwyODM2OCwyODM3MCwyODM3NCwyODM3NiwyODM3NywyODM3OSwyODM4MCwyODM4MSwyODM4NywyODM5MSwyODM5NCwyODM5NSwyODM5NiwyODM5NywyODM5OCwyODM5OSwyODQwMCwyODQwMSwyODQwMiwyODQwMywyODQwNSwyODQwNiwyODQwNywyODQwOCwyODQxMCwyODQxMSwyODQx''@;'; put 'put ''MiwyODQxMywyODQxNCwyODQxNSwyODQxNiwyODQxNywyODQxOSwyODQyMCwyODQyMSwyODQyMywyODQyNCwyODQyNiwyODQyNywyODQyOCwyODQyOSwyODQzMCwyODQzMiwyODQzMywyODQzNCwyODQzOCwyODQzOSwyODQ0MCwyODQ0MSwyODQ0MiwyODQ0MywyODQ0NCwyODQ0NSwyODQ0Niwy''@;'; put 'put ''ODQ0NywyODQ0OSwyODQ1MCwyODQ1MSwyODQ1MywyODQ1NCwyODQ1NSwyODQ1NiwyODQ2MCwyODQ2MiwyODQ2NCwyODQ2NiwyODQ2OCwyODQ2OSwyODQ3MSwyODQ3MiwyODQ3MywyODQ3NCwyODQ3NSwyODQ3NiwyODQ3NywyODQ3OSwyODQ4MCwyODQ4MSwyODQ4MiwyODQ4MywyODQ4NCwyODQ4''@;'; put 'put ''NSwyODQ4OCwyODQ4OSwyODQ5MCwyODQ5MiwyODQ5NCwyODQ5NSwyODQ5NiwyODQ5NywyODQ5OCwyODQ5OSwyODUwMCwyODUwMSwyODUwMiwyODUwMywyODUwNSwyODUwNiwyODUwNywyODUwOSwyODUxMSwyODUxMiwyODUxMywyODUxNSwyODUxNiwyODUxNywyODUxOSwyODUyMCwyODUyMSwy''@;'; put 'put ''ODUyMiwyODUyMywyODUyNCwyODUyNywyODUyOCwyODUyOSwyODUzMSwyODUzMywyODUzNCwyODUzNSwyODUzNywyODUzOSwyODU0MSwyODU0MiwyODU0MywyODU0NCwyODU0NSwyODU0NiwyODU0NywyODU0OSwyODU1MCwyODU1MSwyODU1NCwyODU1NSwyODU1OSwyODU2MCwyODU2MSwyODU2''@;'; put 'put ''MiwyODU2MywyODU2NCwyODU2NSwyODU2NiwyODU2NywyODU2OCwyODU2OSwyODU3MCwyODU3MSwyODU3MywyODU3NCwyODU3NSwyODU3NiwyODU3OCwyODU3OSwyODU4MCwyODU4MSwyODU4MiwyODU4NCwyODU4NSwyODU4NiwyODU4NywyODU4OCwyODU4OSwyODU5MCwyODU5MSwyODU5Miwy''@;'; put 'put ''ODU5MywyODU5NCwyODU5NiwyODU5NywyODU5OSwyODYwMCwyODYwMiwyODYwMywyODYwNCwyODYwNSwyODYwNiwyODYwNywyODYwOSwyODYxMSwyODYxMiwyODYxMywyODYxNCwyODYxNSwyODYxNiwyODYxOCwyODYxOSwyODYyMCwyODYyMSwyODYyMiwyODYyMywyODYyNCwyODYyNywyODYy''@;'; put 'put ''OCwyODYyOSwyODYzMCwyODYzMSwyODYzMiwyODYzMywyODYzNCwyODYzNSwyODYzNiwyODYzNywyODYzOSwyODY0MiwyODY0MywyODY0NCwyODY0NSwyODY0NiwyODY0NywyODY0OCwyODY0OSwyODY1MCwyODY1MSwyODY1MiwyODY1MywyODY1NiwyODY1NywyODY1OCwyODY1OSwyODY2MCwy''@;'; put 'put ''ODY2MSwyODY2MiwyODY2MywyODY2NCwyODY2NSwyODY2NiwyODY2NywyODY2OCwyODY2OSwyODY3MCwyODY3MSwyODY3MiwyODY3MywyODY3NCwyODY3NSwyODY3NiwyODY3NywyODY3OCwyODY3OSwyODY4MCwyODY4MSwyODY4MiwyODY4MywyODY4NCwyODY4NSwyODY4NiwyODY4NywyODY4''@;'; put 'put ''OCwyODY5MCwyODY5MSwyODY5MiwyODY5MywyODY5NCwyODY5NSwyODY5NiwyODY5NywyODcwMCwyODcwMSwyODcwMiwyODcwMywyODcwNCwyODcwNSwyODcwNiwyODcwOCwyODcwOSwyODcxMCwyODcxMSwyODcxMiwyODcxMywyODcxNCwyODcxNSwyODcxNiwyODcxNywyODcxOCwyODcxOSwy''@;'; put 'put ''ODcyMCwyODcyMSwyODcyMiwyODcyMywyODcyNCwyODcyNiwyODcyNywyODcyOCwyODczMCwyODczMSwyODczMiwyODczMywyODczNCwyODczNSwyODczNiwyODczNywyODczOCwyODczOSwyODc0MCwyODc0MSwyODc0MiwyODc0MywyODc0NCwyODc0NSwyODc0NiwyODc0NywyODc0OSwyODc1''@;'; put 'put ''MCwyODc1MiwyODc1MywyODc1NCwyODc1NSwyODc1NiwyODc1NywyODc1OCwyODc1OSwyODc2MCwyODc2MSwyODc2MiwyODc2MywyODc2NCwyODc2NSwyODc2NywyODc2OCwyODc2OSwyODc3MCwyODc3MSwyODc3MiwyODc3MywyODc3NCwyODc3NSwyODc3NiwyODc3NywyODc3OCwyODc4Miwy''@;'; put 'put ''ODc4NSwyODc4NiwyODc4NywyODc4OCwyODc5MSwyODc5MywyODc5NCwyODc5NSwyODc5NywyODgwMSwyODgwMiwyODgwMywyODgwNCwyODgwNiwyODgwNywyODgwOCwyODgxMSwyODgxMiwyODgxMywyODgxNSwyODgxNiwyODgxNywyODgxOSwyODgyMywyODgyNCwyODgyNiwyODgyNywyODgz''@;'; put 'put ''MCwyODgzMSwyODgzMiwyODgzMywyODgzNCwyODgzNSwyODgzNiwyODgzNywyODgzOCwyODgzOSwyODg0MCwyODg0MSwyODg0MiwyODg0OCwyODg1MCwyODg1MiwyODg1MywyODg1NCwyODg1OCwyODg2MiwyODg2MywyODg2OCwyODg2OSwyODg3MCwyODg3MSwyODg3MywyODg3NSwyODg3Niwy''@;'; put 'put ''ODg3NywyODg3OCwyODg3OSwyODg4MCwyODg4MSwyODg4MiwyODg4MywyODg4NCwyODg4NSwyODg4NiwyODg4NywyODg5MCwyODg5MiwyODg5MywyODg5NCwyODg5NiwyODg5NywyODg5OCwyODg5OSwyODkwMSwyODkwNiwyODkxMCwyODkxMiwyODkxMywyODkxNCwyODkxNSwyODkxNiwyODkx''@;'; put 'put ''NywyODkxOCwyODkyMCwyODkyMiwyODkyMywyODkyNCwyODkyNiwyODkyNywyODkyOCwyODkyOSwyODkzMCwyODkzMSwyODkzMiwyODkzMywyODkzNCwyODkzNSwyODkzNiwyODkzOSwyODk0MCwyODk0MSwyODk0MiwyODk0MywyODk0NSwyODk0NiwyODk0OCwyODk1MSwyODk1NSwyODk1Niwy''@;'; put 'put ''ODk1NywyODk1OCwyODk1OSwyODk2MCwyODk2MSwyODk2MiwyODk2MywyODk2NCwyODk2NSwyODk2NywyODk2OCwyODk2OSwyODk3MCwyODk3MSwyODk3MiwyODk3MywyODk3NCwyODk3OCwyODk3OSwyODk4MCwyODk4MSwyODk4MywyODk4NCwyODk4NSwyODk4NiwyODk4NywyODk4OCwyODk4''@;'; put 'put ''OSwyODk5MCwyODk5MSwyODk5MiwyODk5MywyODk5NCwyODk5NSwyODk5NiwyODk5OCwyODk5OSwyOWUzLDI5MDAxLDI5MDAzLDI5MDA1LDI5MDA3LDI5MDA4LDI5MDA5LDI5MDEwLDI5MDExLDI5MDEyLDI5MDEzLDI5MDE0LDI5MDE1LDI5MDE2LDI5MDE3LDI5MDE4LDI5MDE5LDI5MDIxLDI5''@;'; put 'put ''MDIzLDI5MDI0LDI5MDI1LDI5MDI2LDI5MDI3LDI5MDI5LDI5MDMzLDI5MDM0LDI5MDM1LDI5MDM2LDI5MDM3LDI5MDM5LDI5MDQwLDI5MDQxLDI5MDQ0LDI5MDQ1LDI5MDQ2LDI5MDQ3LDI5MDQ5LDI5MDUxLDI5MDUyLDI5MDU0LDI5MDU1LDI5MDU2LDI5MDU3LDI5MDU4LDI5MDU5LDI5MDYx''@;'; put 'put ''LDI5MDYyLDI5MDYzLDI5MDY0LDI5MDY1LDI5MDY3LDI5MDY4LDI5MDY5LDI5MDcwLDI5MDcyLDI5MDczLDI5MDc0LDI5MDc1LDI5MDc3LDI5MDc4LDI5MDc5LDI5MDgyLDI5MDgzLDI5MDg0LDI5MDg1LDI5MDg2LDI5MDg5LDI5MDkwLDI5MDkxLDI5MDkyLDI5MDkzLDI5MDk0LDI5MDk1LDI5''@;'; put 'put ''MDk3LDI5MDk4LDI5MDk5LDI5MTAxLDI5MTAyLDI5MTAzLDI5MTA0LDI5MTA1LDI5MTA2LDI5MTA4LDI5MTEwLDI5MTExLDI5MTEyLDI5MTE0LDI5MTE1LDI5MTE2LDI5MTE3LDI5MTE4LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTIyLDI5MTI0LDI5MTI1LDI5MTI2LDI5MTI3LDI5MTI4LDI5MTI5''@;'; put 'put ''LDI5MTMwLDI5MTMxLDI5MTMyLDI5MTMzLDI5MTM1LDI5MTM2LDI5MTM3LDI5MTM4LDI5MTM5LDI5MTQyLDI5MTQzLDI5MTQ0LDI5MTQ1LDI5MTQ2LDI5MTQ3LDI5MTQ4LDI5MTQ5LDI5MTUwLDI5MTUxLDI5MTUzLDI5MTU0LDI5MTU1LDI5MTU2LDI5MTU4LDI5MTYwLDI5MTYxLDI5MTYyLDI5''@;'; put 'put ''MTYzLDI5MTY0LDI5MTY1LDI5MTY3LDI5MTY4LDI5MTY5LDI5MTcwLDI5MTcxLDI5MTcyLDI5MTczLDI5MTc0LDI5MTc1LDI5MTc2LDI5MTc4LDI5MTc5LDI5MTgwLDI5MTgxLDI5MTgyLDI5MTgzLDI5MTg0LDI5MTg1LDI5MTg2LDI5MTg3LDI5MTg4LDI5MTg5LDI5MTkxLDI5MTkyLDI5MTkz''@;'; put 'put ''LDI5MTk0LDI5MTk1LDI5MTk2LDI5MTk3LDI5MTk4LDI5MTk5LDI5MjAwLDI5MjAxLDI5MjAyLDI5MjAzLDI5MjA0LDI5MjA1LDI5MjA2LDI5MjA3LDI5MjA4LDI5MjA5LDI5MjEwLDI5MjExLDI5MjEyLDI5MjE0LDI5MjE1LDI5MjE2LDI5MjE3LDI5MjE4LDI5MjE5LDI5MjIwLDI5MjIxLDI5''@;'; put 'put ''MjIyLDI5MjIzLDI5MjI1LDI5MjI3LDI5MjI5LDI5MjMwLDI5MjMxLDI5MjM0LDI5MjM1LDI5MjM2LDI5MjQyLDI5MjQ0LDI5MjQ2LDI5MjQ4LDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUyLDI5MjUzLDI5MjU0LDI5MjU3LDI5MjU4LDI5MjU5LDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY1LDI5MjY3''@;'; put 'put ''LDI5MjY4LDI5MjY5LDI5MjcxLDI5MjcyLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg0LDI5Mjg1LDI5Mjg4LDI5MjkwLDI5MjkxLDI5MjkyLDI5MjkzLDI5Mjk2LDI5Mjk3LDI5Mjk5LDI5MzAwLDI5MzAyLDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzA5LDI5MzE0LDI5''@;'; put 'put ''MzE1LDI5MzE3LDI5MzE4LDI5MzE5LDI5MzIwLDI5MzIxLDI5MzI0LDI5MzI2LDI5MzI4LDI5MzI5LDI5MzMxLDI5MzMyLDI5MzMzLDI5MzM0LDI5MzM1LDI5MzM2LDI5MzM3LDI5MzM4LDI5MzM5LDI5MzQwLDI5MzQxLDI5MzQyLDI5MzQ0LDI5MzQ1LDI5MzQ2LDI5MzQ3LDI5MzQ4LDI5MzQ5''@;'; put 'put ''LDI5MzUwLDI5MzUxLDI5MzUyLDI5MzUzLDI5MzU0LDI5MzU1LDI5MzU4LDI5MzYxLDI5MzYyLDI5MzYzLDI5MzY1LDI5MzcwLDI5MzcxLDI5MzcyLDI5MzczLDI5Mzc0LDI5Mzc1LDI5Mzc2LDI5MzgxLDI5MzgyLDI5MzgzLDI5Mzg1LDI5Mzg2LDI5Mzg3LDI5Mzg4LDI5MzkxLDI5MzkzLDI5''@;'; put 'put ''Mzk1LDI5Mzk2LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDAyLDI5NDAzLDU4NTY2LDU4NTY3LDU4NTY4LDU4NTY5LDU4NTcwLDU4NTcxLDU4NTcyLDU4NTczLDU4NTc0LDU4NTc1LDU4NTc2LDU4NTc3LDU4NTc4LDU4NTc5LDU4NTgwLDU4NTgxLDU4NTgyLDU4NTgzLDU4NTg0LDU4NTg1LDU4NTg2''@;'; put 'put ''LDU4NTg3LDU4NTg4LDU4NTg5LDU4NTkwLDU4NTkxLDU4NTkyLDU4NTkzLDU4NTk0LDU4NTk1LDU4NTk2LDU4NTk3LDU4NTk4LDU4NTk5LDU4NjAwLDU4NjAxLDU4NjAyLDU4NjAzLDU4NjA0LDU4NjA1LDU4NjA2LDU4NjA3LDU4NjA4LDU4NjA5LDU4NjEwLDU4NjExLDU4NjEyLDU4NjEzLDU4''@;'; put 'put ''NjE0LDU4NjE1LDU4NjE2LDU4NjE3LDU4NjE4LDU4NjE5LDU4NjIwLDU4NjIxLDU4NjIyLDU4NjIzLDU4NjI0LDU4NjI1LDU4NjI2LDU4NjI3LDU4NjI4LDU4NjI5LDU4NjMwLDU4NjMxLDU4NjMyLDU4NjMzLDU4NjM0LDU4NjM1LDU4NjM2LDU4NjM3LDU4NjM4LDU4NjM5LDU4NjQwLDU4NjQx''@;'; put 'put ''LDU4NjQyLDU4NjQzLDU4NjQ0LDU4NjQ1LDU4NjQ2LDU4NjQ3LDU4NjQ4LDU4NjQ5LDU4NjUwLDU4NjUxLDU4NjUyLDU4NjUzLDU4NjU0LDU4NjU1LDU4NjU2LDU4NjU3LDU4NjU4LDU4NjU5LDU4NjYwLDU4NjYxLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw3MTMsNzExLDE2OCwxMjI5MSwxMjI5''@;'; put 'put ''Myw4MjEyLDY1Mzc0LDgyMTQsODIzMCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzEwLDEyMzExLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg3NTgsODc0Myw4NzQ0LDg3MjEsODcxOSw4''@;'; put 'put ''NzQ2LDg3NDUsODcxMiw4NzU5LDg3MzAsODg2OSw4NzQxLDg3MzYsODk3OCw4ODU3LDg3NDcsODc1MCw4ODAxLDg3ODAsODc3Niw4NzY1LDg3MzMsODgwMCw4ODE0LDg4MTUsODgwNCw4ODA1LDg3MzQsODc1Nyw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjUyODQsMTY0LDY1''@;'; put 'put ''NTA0LDY1NTA1LDgyNDAsMTY3LDg0NzAsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDgyNTEsODU5NCw4NTkyLDg1OTMsODU5NSwxMjMwNyw1ODY2Miw1ODY2Myw1ODY2NCw1ODY2NSw1ODY2Niw1ODY2Nyw1ODY2OCw1ODY2OSw1ODY3MCw1''@;'; put 'put ''ODY3MSw1ODY3Miw1ODY3Myw1ODY3NCw1ODY3NSw1ODY3Niw1ODY3Nyw1ODY3OCw1ODY3OSw1ODY4MCw1ODY4MSw1ODY4Miw1ODY4Myw1ODY4NCw1ODY4NSw1ODY4Niw1ODY4Nyw1ODY4OCw1ODY4OSw1ODY5MCw1ODY5MSw1ODY5Miw1ODY5Myw1ODY5NCw1ODY5NSw1ODY5Niw1ODY5Nyw1ODY5''@;'; put 'put ''OCw1ODY5OSw1ODcwMCw1ODcwMSw1ODcwMiw1ODcwMyw1ODcwNCw1ODcwNSw1ODcwNiw1ODcwNyw1ODcwOCw1ODcwOSw1ODcxMCw1ODcxMSw1ODcxMiw1ODcxMyw1ODcxNCw1ODcxNSw1ODcxNiw1ODcxNyw1ODcxOCw1ODcxOSw1ODcyMCw1ODcyMSw1ODcyMiw1ODcyMyw1ODcyNCw1ODcyNSw1''@;'; put 'put ''ODcyNiw1ODcyNyw1ODcyOCw1ODcyOSw1ODczMCw1ODczMSw1ODczMiw1ODczMyw1ODczNCw1ODczNSw1ODczNiw1ODczNyw1ODczOCw1ODczOSw1ODc0MCw1ODc0MSw1ODc0Miw1ODc0Myw1ODc0NCw1ODc0NSw1ODc0Niw1ODc0Nyw1ODc0OCw1ODc0OSw1ODc1MCw1ODc1MSw1ODc1Miw1ODc1''@;'; put 'put ''Myw1ODc1NCw1ODc1NSw1ODc1Niw1ODc1Nyw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDU5MjM4LDU5MjM5LDU5MjQwLDU5MjQxLDU5MjQyLDU5MjQzLDkzNTIsOTM1Myw5MzU0LDkzNTUsOTM1Niw5MzU3LDkzNTgsOTM1OSw5MzYwLDkzNjEsOTM2''@;'; put 'put ''Miw5MzYzLDkzNjQsOTM2NSw5MzY2LDkzNjcsOTM2OCw5MzY5LDkzNzAsOTM3MSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkzNDUsOTM0Niw5MzQ3LDkzNDgsOTM0OSw5MzUwLDkzNTEsOTMxMiw5MzEzLDkzMTQsOTMx''@;'; put 'put ''NSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw4MzY0LDU5MjQ1LDEyODMyLDEyODMzLDEyODM0LDEyODM1LDEyODM2LDEyODM3LDEyODM4LDEyODM5LDEyODQwLDEyODQxLDU5MjQ2LDU5MjQ3LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMs''@;'; put 'put ''ODU1NCw4NTU1LDU5MjQ4LDU5MjQ5LDU4NzU4LDU4NzU5LDU4NzYwLDU4NzYxLDU4NzYyLDU4NzYzLDU4NzY0LDU4NzY1LDU4NzY2LDU4NzY3LDU4NzY4LDU4NzY5LDU4NzcwLDU4NzcxLDU4NzcyLDU4NzczLDU4Nzc0LDU4Nzc1LDU4Nzc2LDU4Nzc3LDU4Nzc4LDU4Nzc5LDU4NzgwLDU4Nzgx''@;'; put 'put ''LDU4NzgyLDU4NzgzLDU4Nzg0LDU4Nzg1LDU4Nzg2LDU4Nzg3LDU4Nzg4LDU4Nzg5LDU4NzkwLDU4NzkxLDU4NzkyLDU4NzkzLDU4Nzk0LDU4Nzk1LDU4Nzk2LDU4Nzk3LDU4Nzk4LDU4Nzk5LDU4ODAwLDU4ODAxLDU4ODAyLDU4ODAzLDU4ODA0LDU4ODA1LDU4ODA2LDU4ODA3LDU4ODA4LDU4''@;'; put 'put ''ODA5LDU4ODEwLDU4ODExLDU4ODEyLDU4ODEzLDU4ODE0LDU4ODE1LDU4ODE2LDU4ODE3LDU4ODE4LDU4ODE5LDU4ODIwLDU4ODIxLDU4ODIyLDU4ODIzLDU4ODI0LDU4ODI1LDU4ODI2LDU4ODI3LDU4ODI4LDU4ODI5LDU4ODMwLDU4ODMxLDU4ODMyLDU4ODMzLDU4ODM0LDU4ODM1LDU4ODM2''@;'; put 'put ''LDU4ODM3LDU4ODM4LDU4ODM5LDU4ODQwLDU4ODQxLDU4ODQyLDU4ODQzLDU4ODQ0LDU4ODQ1LDU4ODQ2LDU4ODQ3LDU4ODQ4LDU4ODQ5LDU4ODUwLDU4ODUxLDU4ODUyLDEyMjg4LDY1MjgxLDY1MjgyLDY1MjgzLDY1NTA5LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1''@;'; put 'put ''MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4''@;'; put 'put ''LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1MzQwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1''@;'; put 'put ''MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1Mzcz''@;'; put 'put ''LDY1NTA3LDU4ODU0LDU4ODU1LDU4ODU2LDU4ODU3LDU4ODU4LDU4ODU5LDU4ODYwLDU4ODYxLDU4ODYyLDU4ODYzLDU4ODY0LDU4ODY1LDU4ODY2LDU4ODY3LDU4ODY4LDU4ODY5LDU4ODcwLDU4ODcxLDU4ODcyLDU4ODczLDU4ODc0LDU4ODc1LDU4ODc2LDU4ODc3LDU4ODc4LDU4ODc5LDU4''@;'; put 'put ''ODgwLDU4ODgxLDU4ODgyLDU4ODgzLDU4ODg0LDU4ODg1LDU4ODg2LDU4ODg3LDU4ODg4LDU4ODg5LDU4ODkwLDU4ODkxLDU4ODkyLDU4ODkzLDU4ODk0LDU4ODk1LDU4ODk2LDU4ODk3LDU4ODk4LDU4ODk5LDU4OTAwLDU4OTAxLDU4OTAyLDU4OTAzLDU4OTA0LDU4OTA1LDU4OTA2LDU4OTA3''@;'; put 'put ''LDU4OTA4LDU4OTA5LDU4OTEwLDU4OTExLDU4OTEyLDU4OTEzLDU4OTE0LDU4OTE1LDU4OTE2LDU4OTE3LDU4OTE4LDU4OTE5LDU4OTIwLDU4OTIxLDU4OTIyLDU4OTIzLDU4OTI0LDU4OTI1LDU4OTI2LDU4OTI3LDU4OTI4LDU4OTI5LDU4OTMwLDU4OTMxLDU4OTMyLDU4OTMzLDU4OTM0LDU4''@;'; put 'put ''OTM1LDU4OTM2LDU4OTM3LDU4OTM4LDU4OTM5LDU4OTQwLDU4OTQxLDU4OTQyLDU4OTQzLDU4OTQ0LDU4OTQ1LDU4OTQ2LDU4OTQ3LDU4OTQ4LDU4OTQ5LDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1''@;'; put 'put ''LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEy''@;'; put 'put ''MzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIw''@;'; put 'put ''LDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LDU5MjUwLDU5MjUxLDU5MjUyLDU5MjUzLDU5MjU0LDU5MjU1LDU5MjU2LDU5MjU3LDU5MjU4LDU5MjU5LDU5MjYwLDU4OTUwLDU4''@;'; put 'put ''OTUxLDU4OTUyLDU4OTUzLDU4OTU0LDU4OTU1LDU4OTU2LDU4OTU3LDU4OTU4LDU4OTU5LDU4OTYwLDU4OTYxLDU4OTYyLDU4OTYzLDU4OTY0LDU4OTY1LDU4OTY2LDU4OTY3LDU4OTY4LDU4OTY5LDU4OTcwLDU4OTcxLDU4OTcyLDU4OTczLDU4OTc0LDU4OTc1LDU4OTc2LDU4OTc3LDU4OTc4''@;'; put 'put ''LDU4OTc5LDU4OTgwLDU4OTgxLDU4OTgyLDU4OTgzLDU4OTg0LDU4OTg1LDU4OTg2LDU4OTg3LDU4OTg4LDU4OTg5LDU4OTkwLDU4OTkxLDU4OTkyLDU4OTkzLDU4OTk0LDU4OTk1LDU4OTk2LDU4OTk3LDU4OTk4LDU4OTk5LDU5ZTMsNTkwMDEsNTkwMDIsNTkwMDMsNTkwMDQsNTkwMDUsNTkw''@;'; put 'put ''MDYsNTkwMDcsNTkwMDgsNTkwMDksNTkwMTAsNTkwMTEsNTkwMTIsNTkwMTMsNTkwMTQsNTkwMTUsNTkwMTYsNTkwMTcsNTkwMTgsNTkwMTksNTkwMjAsNTkwMjEsNTkwMjIsNTkwMjMsNTkwMjQsNTkwMjUsNTkwMjYsNTkwMjcsNTkwMjgsNTkwMjksNTkwMzAsNTkwMzEsNTkwMzIsNTkwMzMs''@;'; put 'put ''NTkwMzQsNTkwMzUsNTkwMzYsNTkwMzcsNTkwMzgsNTkwMzksNTkwNDAsNTkwNDEsNTkwNDIsNTkwNDMsNTkwNDQsNTkwNDUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0''@;'; put 'put ''NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEs''@;'; put 'put ''MTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1''@;'; put 'put ''MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsNTkyNjEsNTkyNjIsNTkyNjMsNTkyNjQsNTkyNjUsNTkyNjYsNTkyNjcsNTkyNjgsNTkwNDYsNTkwNDcsNTkwNDgsNTkwNDks''@;'; put 'put ''NTkwNTAsNTkwNTEsNTkwNTIsNTkwNTMsNTkwNTQsNTkwNTUsNTkwNTYsNTkwNTcsNTkwNTgsNTkwNTksNTkwNjAsNTkwNjEsNTkwNjIsNTkwNjMsNTkwNjQsNTkwNjUsNTkwNjYsNTkwNjcsNTkwNjgsNTkwNjksNTkwNzAsNTkwNzEsNTkwNzIsNTkwNzMsNTkwNzQsNTkwNzUsNTkwNzYsNTkw''@;'; put 'put ''NzcsNTkwNzgsNTkwNzksNTkwODAsNTkwODEsNTkwODIsNTkwODMsNTkwODQsNTkwODUsNTkwODYsNTkwODcsNTkwODgsNTkwODksNTkwOTAsNTkwOTEsNTkwOTIsNTkwOTMsNTkwOTQsNTkwOTUsNTkwOTYsNTkwOTcsNTkwOTgsNTkwOTksNTkxMDAsNTkxMDEsNTkxMDIsNTkxMDMsNTkxMDQs''@;'; put 'put ''NTkxMDUsNTkxMDYsNTkxMDcsNTkxMDgsNTkxMDksNTkxMTAsNTkxMTEsNTkxMTIsNTkxMTMsNTkxMTQsNTkxMTUsNTkxMTYsNTkxMTcsNTkxMTgsNTkxMTksNTkxMjAsNTkxMjEsNTkxMjIsNTkxMjMsNTkxMjQsNTkxMjUsNTkxMjYsNTkxMjcsNTkxMjgsNTkxMjksNTkxMzAsNTkxMzEsNTkx''@;'; put 'put ''MzIsNTkxMzMsNTkxMzQsNTkxMzUsNTkxMzYsNTkxMzcsNTkxMzgsNTkxMzksNTkxNDAsNTkxNDEsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsNTkyNjksNTkyNzAs''@;'; put 'put ''NTkyNzEsNTkyNzIsNTkyNzMsNTkyNzQsNTkyNzUsNTkyNzYsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksNTkyNzcsNTkyNzgsNTkyNzksNTkyODAsNTkyODEsNTky''@;'; put 'put ''ODIsNTkyODMsNjUwNzcsNjUwNzgsNjUwODEsNjUwODIsNjUwODcsNjUwODgsNjUwODUsNjUwODYsNjUwODksNjUwOTAsNjUwOTEsNjUwOTIsNTkyODQsNTkyODUsNjUwODMsNjUwODQsNjUwNzksNjUwODAsNjUwNzMsNTkyODYsNjUwNzUsNjUwNzYsNTkyODcsNTkyODgsNTkyODksNTkyOTAs''@;'; put 'put ''NTkyOTEsNTkyOTIsNTkyOTMsNTkyOTQsNTkyOTUsNTkxNDIsNTkxNDMsNTkxNDQsNTkxNDUsNTkxNDYsNTkxNDcsNTkxNDgsNTkxNDksNTkxNTAsNTkxNTEsNTkxNTIsNTkxNTMsNTkxNTQsNTkxNTUsNTkxNTYsNTkxNTcsNTkxNTgsNTkxNTksNTkxNjAsNTkxNjEsNTkxNjIsNTkxNjMsNTkx''@;'; put 'put ''NjQsNTkxNjUsNTkxNjYsNTkxNjcsNTkxNjgsNTkxNjksNTkxNzAsNTkxNzEsNTkxNzIsNTkxNzMsNTkxNzQsNTkxNzUsNTkxNzYsNTkxNzcsNTkxNzgsNTkxNzksNTkxODAsNTkxODEsNTkxODIsNTkxODMsNTkxODQsNTkxODUsNTkxODYsNTkxODcsNTkxODgsNTkxODksNTkxOTAsNTkxOTEs''@;'; put 'put ''NTkxOTIsNTkxOTMsNTkxOTQsNTkxOTUsNTkxOTYsNTkxOTcsNTkxOTgsNTkxOTksNTkyMDAsNTkyMDEsNTkyMDIsNTkyMDMsNTkyMDQsNTkyMDUsNTkyMDYsNTkyMDcsNTkyMDgsNTkyMDksNTkyMTAsNTkyMTEsNTkyMTIsNTkyMTMsNTkyMTQsNTkyMTUsNTkyMTYsNTkyMTcsNTkyMTgsNTky''@;'; put 'put ''MTksNTkyMjAsNTkyMjEsNTkyMjIsNTkyMjMsNTkyMjQsNTkyMjUsNTkyMjYsNTkyMjcsNTkyMjgsNTkyMjksNTkyMzAsNTkyMzEsNTkyMzIsNTkyMzMsNTkyMzQsNTkyMzUsNTkyMzYsNTkyMzcsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5''@;'; put 'put ''LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsNTkyOTYsNTkyOTcsNTkyOTgsNTkyOTksNTkzMDAsNTkzMDEsNTkzMDIsNTkzMDMsNTkzMDQs''@;'; put 'put ''NTkzMDUsNTkzMDYsNTkzMDcsNTkzMDgsNTkzMDksNTkzMTAsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2''@;'; put 'put ''LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsNTkzMTEsNTkzMTIsNTkzMTMsNTkzMTQsNTkzMTUsNTkzMTYsNTkzMTcsNTkzMTgsNTkzMTksNTkzMjAsNTkzMjEsNTkzMjIsNTkzMjMsNzE0LDcxNSw3MjksODIxMSw4MjEzLDgyMjksODI0NSw4NDUzLDg0NTcsODU5OCw4NTk5''@;'; put 'put ''LDg2MDAsODYwMSw4NzI1LDg3MzUsODczOSw4Nzg2LDg4MDYsODgwNyw4ODk1LDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1''@;'; put 'put ''LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NTgxLDk1ODIsOTU4Myw5NTg0LDk1ODUsOTU4Niw5NTg3LDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjA5LDk2MTAsOTYxMSw5NjEyLDk2MTMsOTYxNCw5NjE1LDk2MTksOTYyMCw5NjIxLDk2NjAsOTY2MSw5Njk4''@;'; put 'put ''LDk2OTksOTcwMCw5NzAxLDk3MzcsODg1MywxMjMwNiwxMjMxNywxMjMxOCw1OTMyNCw1OTMyNSw1OTMyNiw1OTMyNyw1OTMyOCw1OTMyOSw1OTMzMCw1OTMzMSw1OTMzMiw1OTMzMyw1OTMzNCwyNTcsMjI1LDQ2MiwyMjQsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQz''@;'; put 'put ''LDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsMjM0LDU5Myw3NzQzLDMyNCwzMjgsNTA1LDYwOSw1OTMzNyw1OTMzOCw1OTMzOSw1OTM0MCwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwx''@;'; put 'put ''MjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw1OTM0MSw1OTM0''@;'; put 'put ''Miw1OTM0Myw1OTM0NCw1OTM0NSw1OTM0Niw1OTM0Nyw1OTM0OCw1OTM0OSw1OTM1MCw1OTM1MSw1OTM1Miw1OTM1Myw1OTM1NCw1OTM1NSw1OTM1Niw1OTM1Nyw1OTM1OCw1OTM1OSw1OTM2MCw1OTM2MSwxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwx''@;'; put 'put ''MjMyOSwxMjk2MywxMzE5OCwxMzE5OSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNywxMzI1MiwxMzI2MiwxMzI2NSwxMzI2NiwxMzI2OSw2NTA3Miw2NTUwNiw2NTUwOCw1OTM2Miw4NDgxLDEyODQ5LDU5MzYzLDgyMDgsNTkzNjQsNTkzNjUsNTkzNjYsMTI1NDAsMTI0NDMsMTI0NDQsMTI1NDEs''@;'; put 'put ''MTI1NDIsMTIyOTQsMTI0NDUsMTI0NDYsNjUwOTcsNjUwOTgsNjUwOTksNjUxMDAsNjUxMDEsNjUxMDIsNjUxMDMsNjUxMDQsNjUxMDUsNjUxMDYsNjUxMDgsNjUxMDksNjUxMTAsNjUxMTEsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsNjUxMTksNjUxMjAsNjUxMjEsNjUx''@;'; put 'put ''MjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUxMjgsNjUxMjksNjUxMzAsNjUxMzEsMTIzNTAsMTIyNzIsMTIyNzMsMTIyNzQsMTIyNzUsMTIyNzYsMTIyNzcsMTIyNzgsMTIyNzksMTIyODAsMTIyODEsMTIyODIsMTIyODMsMTIyOTUsNTkzODAsNTkzODEsNTkzODIsNTkzODMsNTkzODQs''@;'; put 'put ''NTkzODUsNTkzODYsNTkzODcsNTkzODgsNTkzODksNTkzOTAsNTkzOTEsNTkzOTIsOTQ3Miw5NDczLDk0NzQsOTQ3NSw5NDc2LDk0NzcsOTQ3OCw5NDc5LDk0ODAsOTQ4MSw5NDgyLDk0ODMsOTQ4NCw5NDg1LDk0ODYsOTQ4Nyw5NDg4LDk0ODksOTQ5MCw5NDkxLDk0OTIsOTQ5Myw5NDk0LDk0''@;'; put 'put ''OTUsOTQ5Niw5NDk3LDk0OTgsOTQ5OSw5NTAwLDk1MDEsOTUwMiw5NTAzLDk1MDQsOTUwNSw5NTA2LDk1MDcsOTUwOCw5NTA5LDk1MTAsOTUxMSw5NTEyLDk1MTMsOTUxNCw5NTE1LDk1MTYsOTUxNyw5NTE4LDk1MTksOTUyMCw5NTIxLDk1MjIsOTUyMyw5NTI0LDk1MjUsOTUyNiw5NTI3LDk1''@;'; put 'put ''MjgsOTUyOSw5NTMwLDk1MzEsOTUzMiw5NTMzLDk1MzQsOTUzNSw5NTM2LDk1MzcsOTUzOCw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsOTU0Nyw1OTM5Myw1OTM5NCw1OTM5NSw1OTM5Niw1OTM5Nyw1OTM5OCw1OTM5OSw1OTQwMCw1OTQwMSw1OTQwMiw1OTQwMyw1''@;'; put 'put ''OTQwNCw1OTQwNSw1OTQwNiw1OTQwNywyOTQwNCwyOTQwNSwyOTQwNywyOTQxMCwyOTQxMSwyOTQxMiwyOTQxMywyOTQxNCwyOTQxNSwyOTQxOCwyOTQxOSwyOTQyOSwyOTQzMCwyOTQzMywyOTQzNywyOTQzOCwyOTQzOSwyOTQ0MCwyOTQ0MiwyOTQ0NCwyOTQ0NSwyOTQ0NiwyOTQ0NywyOTQ0''@;'; put 'put ''OCwyOTQ0OSwyOTQ1MSwyOTQ1MiwyOTQ1MywyOTQ1NSwyOTQ1NiwyOTQ1NywyOTQ1OCwyOTQ2MCwyOTQ2NCwyOTQ2NSwyOTQ2NiwyOTQ3MSwyOTQ3MiwyOTQ3NSwyOTQ3NiwyOTQ3OCwyOTQ3OSwyOTQ4MCwyOTQ4NSwyOTQ4NywyOTQ4OCwyOTQ5MCwyOTQ5MSwyOTQ5MywyOTQ5NCwyOTQ5OCwy''@;'; put 'put ''OTQ5OSwyOTUwMCwyOTUwMSwyOTUwNCwyOTUwNSwyOTUwNiwyOTUwNywyOTUwOCwyOTUwOSwyOTUxMCwyOTUxMSwyOTUxMiwyOTUxMywyOTUxNCwyOTUxNSwyOTUxNiwyOTUxOCwyOTUxOSwyOTUyMSwyOTUyMywyOTUyNCwyOTUyNSwyOTUyNiwyOTUyOCwyOTUyOSwyOTUzMCwyOTUzMSwyOTUz''@;'; put 'put ''MiwyOTUzMywyOTUzNCwyOTUzNSwyOTUzNywyOTUzOCwyOTUzOSwyOTU0MCwyOTU0MSwyOTU0MiwyOTU0MywyOTU0NCwyOTU0NSwyOTU0NiwyOTU0NywyOTU1MCwyOTU1MiwyOTU1Myw1NzM0NCw1NzM0NSw1NzM0Niw1NzM0Nyw1NzM0OCw1NzM0OSw1NzM1MCw1NzM1MSw1NzM1Miw1NzM1Myw1''@;'; put 'put ''NzM1NCw1NzM1NSw1NzM1Niw1NzM1Nyw1NzM1OCw1NzM1OSw1NzM2MCw1NzM2MSw1NzM2Miw1NzM2Myw1NzM2NCw1NzM2NSw1NzM2Niw1NzM2Nyw1NzM2OCw1NzM2OSw1NzM3MCw1NzM3MSw1NzM3Miw1NzM3Myw1NzM3NCw1NzM3NSw1NzM3Niw1NzM3Nyw1NzM3OCw1NzM3OSw1NzM4MCw1NzM4''@;'; put 'put ''MSw1NzM4Miw1NzM4Myw1NzM4NCw1NzM4NSw1NzM4Niw1NzM4Nyw1NzM4OCw1NzM4OSw1NzM5MCw1NzM5MSw1NzM5Miw1NzM5Myw1NzM5NCw1NzM5NSw1NzM5Niw1NzM5Nyw1NzM5OCw1NzM5OSw1NzQwMCw1NzQwMSw1NzQwMiw1NzQwMyw1NzQwNCw1NzQwNSw1NzQwNiw1NzQwNyw1NzQwOCw1''@;'; put 'put ''NzQwOSw1NzQxMCw1NzQxMSw1NzQxMiw1NzQxMyw1NzQxNCw1NzQxNSw1NzQxNiw1NzQxNyw1NzQxOCw1NzQxOSw1NzQyMCw1NzQyMSw1NzQyMiw1NzQyMyw1NzQyNCw1NzQyNSw1NzQyNiw1NzQyNyw1NzQyOCw1NzQyOSw1NzQzMCw1NzQzMSw1NzQzMiw1NzQzMyw1NzQzNCw1NzQzNSw1NzQz''@;'; put 'put ''Niw1NzQzNywyOTU1NCwyOTU1NSwyOTU1NiwyOTU1NywyOTU1OCwyOTU1OSwyOTU2MCwyOTU2MSwyOTU2MiwyOTU2MywyOTU2NCwyOTU2NSwyOTU2NywyOTU2OCwyOTU2OSwyOTU3MCwyOTU3MSwyOTU3MywyOTU3NCwyOTU3NiwyOTU3OCwyOTU4MCwyOTU4MSwyOTU4MywyOTU4NCwyOTU4Niwy''@;'; put 'put ''OTU4NywyOTU4OCwyOTU4OSwyOTU5MSwyOTU5MiwyOTU5MywyOTU5NCwyOTU5NiwyOTU5NywyOTU5OCwyOTYwMCwyOTYwMSwyOTYwMywyOTYwNCwyOTYwNSwyOTYwNiwyOTYwNywyOTYwOCwyOTYxMCwyOTYxMiwyOTYxMywyOTYxNywyOTYyMCwyOTYyMSwyOTYyMiwyOTYyNCwyOTYyNSwyOTYy''@;'; put 'put ''OCwyOTYyOSwyOTYzMCwyOTYzMSwyOTYzMywyOTYzNSwyOTYzNiwyOTYzNywyOTYzOCwyOTYzOSwyOTY0MywyOTY0NCwyOTY0NiwyOTY1MCwyOTY1MSwyOTY1MiwyOTY1MywyOTY1NCwyOTY1NSwyOTY1NiwyOTY1OCwyOTY1OSwyOTY2MCwyOTY2MSwyOTY2MywyOTY2NSwyOTY2NiwyOTY2Nywy''@;'; put 'put ''OTY2OCwyOTY3MCwyOTY3MiwyOTY3NCwyOTY3NSwyOTY3NiwyOTY3OCwyOTY3OSwyOTY4MCwyOTY4MSwyOTY4MywyOTY4NCwyOTY4NSwyOTY4NiwyOTY4Nyw1NzQzOCw1NzQzOSw1NzQ0MCw1NzQ0MSw1NzQ0Miw1NzQ0Myw1NzQ0NCw1NzQ0NSw1NzQ0Niw1NzQ0Nyw1NzQ0OCw1NzQ0OSw1NzQ1''@;'; put 'put ''MCw1NzQ1MSw1NzQ1Miw1NzQ1Myw1NzQ1NCw1NzQ1NSw1NzQ1Niw1NzQ1Nyw1NzQ1OCw1NzQ1OSw1NzQ2MCw1NzQ2MSw1NzQ2Miw1NzQ2Myw1NzQ2NCw1NzQ2NSw1NzQ2Niw1NzQ2Nyw1NzQ2OCw1NzQ2OSw1NzQ3MCw1NzQ3MSw1NzQ3Miw1NzQ3Myw1NzQ3NCw1NzQ3NSw1NzQ3Niw1NzQ3Nyw1''@;'; put 'put ''NzQ3OCw1NzQ3OSw1NzQ4MCw1NzQ4MSw1NzQ4Miw1NzQ4Myw1NzQ4NCw1NzQ4NSw1NzQ4Niw1NzQ4Nyw1NzQ4OCw1NzQ4OSw1NzQ5MCw1NzQ5MSw1NzQ5Miw1NzQ5Myw1NzQ5NCw1NzQ5NSw1NzQ5Niw1NzQ5Nyw1NzQ5OCw1NzQ5OSw1NzUwMCw1NzUwMSw1NzUwMiw1NzUwMyw1NzUwNCw1NzUw''@;'; put 'put ''NSw1NzUwNiw1NzUwNyw1NzUwOCw1NzUwOSw1NzUxMCw1NzUxMSw1NzUxMiw1NzUxMyw1NzUxNCw1NzUxNSw1NzUxNiw1NzUxNyw1NzUxOCw1NzUxOSw1NzUyMCw1NzUyMSw1NzUyMiw1NzUyMyw1NzUyNCw1NzUyNSw1NzUyNiw1NzUyNyw1NzUyOCw1NzUyOSw1NzUzMCw1NzUzMSwyOTY4OCwy''@;'; put 'put ''OTY4OSwyOTY5MCwyOTY5MSwyOTY5MiwyOTY5MywyOTY5NCwyOTY5NSwyOTY5NiwyOTY5NywyOTY5OCwyOTcwMCwyOTcwMywyOTcwNCwyOTcwNywyOTcwOCwyOTcwOSwyOTcxMCwyOTcxMywyOTcxNCwyOTcxNSwyOTcxNiwyOTcxNywyOTcxOCwyOTcxOSwyOTcyMCwyOTcyMSwyOTcyNCwyOTcy''@;'; put 'put ''NSwyOTcyNiwyOTcyNywyOTcyOCwyOTcyOSwyOTczMSwyOTczMiwyOTczNSwyOTczNywyOTczOSwyOTc0MSwyOTc0MywyOTc0NSwyOTc0NiwyOTc1MSwyOTc1MiwyOTc1MywyOTc1NCwyOTc1NSwyOTc1NywyOTc1OCwyOTc1OSwyOTc2MCwyOTc2MiwyOTc2MywyOTc2NCwyOTc2NSwyOTc2Niwy''@;'; put 'put ''OTc2NywyOTc2OCwyOTc2OSwyOTc3MCwyOTc3MSwyOTc3MiwyOTc3MywyOTc3NCwyOTc3NSwyOTc3NiwyOTc3NywyOTc3OCwyOTc3OSwyOTc4MCwyOTc4MiwyOTc4NCwyOTc4OSwyOTc5MiwyOTc5MywyOTc5NCwyOTc5NSwyOTc5NiwyOTc5NywyOTc5OCwyOTc5OSwyOTgwMCwyOTgwMSwyOTgw''@;'; put 'put ''MiwyOTgwMywyOTgwNCwyOTgwNiwyOTgwNywyOTgwOSwyOTgxMCwyOTgxMSwyOTgxMiwyOTgxMywyOTgxNiwyOTgxNywyOTgxOCw1NzUzMiw1NzUzMyw1NzUzNCw1NzUzNSw1NzUzNiw1NzUzNyw1NzUzOCw1NzUzOSw1NzU0MCw1NzU0MSw1NzU0Miw1NzU0Myw1NzU0NCw1NzU0NSw1NzU0Niw1''@;'; put 'put ''NzU0Nyw1NzU0OCw1NzU0OSw1NzU1MCw1NzU1MSw1NzU1Miw1NzU1Myw1NzU1NCw1NzU1NSw1NzU1Niw1NzU1Nyw1NzU1OCw1NzU1OSw1NzU2MCw1NzU2MSw1NzU2Miw1NzU2Myw1NzU2NCw1NzU2NSw1NzU2Niw1NzU2Nyw1NzU2OCw1NzU2OSw1NzU3MCw1NzU3MSw1NzU3Miw1NzU3Myw1NzU3''@;'; put 'put ''NCw1NzU3NSw1NzU3Niw1NzU3Nyw1NzU3OCw1NzU3OSw1NzU4MCw1NzU4MSw1NzU4Miw1NzU4Myw1NzU4NCw1NzU4NSw1NzU4Niw1NzU4Nyw1NzU4OCw1NzU4OSw1NzU5MCw1NzU5MSw1NzU5Miw1NzU5Myw1NzU5NCw1NzU5NSw1NzU5Niw1NzU5Nyw1NzU5OCw1NzU5OSw1NzYwMCw1NzYwMSw1''@;'; put 'put ''NzYwMiw1NzYwMyw1NzYwNCw1NzYwNSw1NzYwNiw1NzYwNyw1NzYwOCw1NzYwOSw1NzYxMCw1NzYxMSw1NzYxMiw1NzYxMyw1NzYxNCw1NzYxNSw1NzYxNiw1NzYxNyw1NzYxOCw1NzYxOSw1NzYyMCw1NzYyMSw1NzYyMiw1NzYyMyw1NzYyNCw1NzYyNSwyOTgxOSwyOTgyMCwyOTgyMSwyOTgy''@;'; put 'put ''MywyOTgyNiwyOTgyOCwyOTgyOSwyOTgzMCwyOTgzMiwyOTgzMywyOTgzNCwyOTgzNiwyOTgzNywyOTgzOSwyOTg0MSwyOTg0MiwyOTg0MywyOTg0NCwyOTg0NSwyOTg0NiwyOTg0NywyOTg0OCwyOTg0OSwyOTg1MCwyOTg1MSwyOTg1MywyOTg1NSwyOTg1NiwyOTg1NywyOTg1OCwyOTg1OSwy''@;'; put 'put ''OTg2MCwyOTg2MSwyOTg2MiwyOTg2NiwyOTg2NywyOTg2OCwyOTg2OSwyOTg3MCwyOTg3MSwyOTg3MiwyOTg3MywyOTg3NCwyOTg3NSwyOTg3NiwyOTg3NywyOTg3OCwyOTg3OSwyOTg4MCwyOTg4MSwyOTg4MywyOTg4NCwyOTg4NSwyOTg4NiwyOTg4NywyOTg4OCwyOTg4OSwyOTg5MCwyOTg5''@;'; put 'put ''MSwyOTg5MiwyOTg5MywyOTg5NCwyOTg5NSwyOTg5NiwyOTg5NywyOTg5OCwyOTg5OSwyOTkwMCwyOTkwMSwyOTkwMiwyOTkwMywyOTkwNCwyOTkwNSwyOTkwNywyOTkwOCwyOTkwOSwyOTkxMCwyOTkxMSwyOTkxMiwyOTkxMywyOTkxNCwyOTkxNSwyOTkxNywyOTkxOSwyOTkyMSwyOTkyNSwy''@;'; put 'put ''OTkyNywyOTkyOCwyOTkyOSwyOTkzMCwyOTkzMSwyOTkzMiwyOTkzMywyOTkzNiwyOTkzNywyOTkzOCw1NzYyNiw1NzYyNyw1NzYyOCw1NzYyOSw1NzYzMCw1NzYzMSw1NzYzMiw1NzYzMyw1NzYzNCw1NzYzNSw1NzYzNiw1NzYzNyw1NzYzOCw1NzYzOSw1NzY0MCw1NzY0MSw1NzY0Miw1NzY0''@;'; put 'put ''Myw1NzY0NCw1NzY0NSw1NzY0Niw1NzY0Nyw1NzY0OCw1NzY0OSw1NzY1MCw1NzY1MSw1NzY1Miw1NzY1Myw1NzY1NCw1NzY1NSw1NzY1Niw1NzY1Nyw1NzY1OCw1NzY1OSw1NzY2MCw1NzY2MSw1NzY2Miw1NzY2Myw1NzY2NCw1NzY2NSw1NzY2Niw1NzY2Nyw1NzY2OCw1NzY2OSw1NzY3MCw1''@;'; put 'put ''NzY3MSw1NzY3Miw1NzY3Myw1NzY3NCw1NzY3NSw1NzY3Niw1NzY3Nyw1NzY3OCw1NzY3OSw1NzY4MCw1NzY4MSw1NzY4Miw1NzY4Myw1NzY4NCw1NzY4NSw1NzY4Niw1NzY4Nyw1NzY4OCw1NzY4OSw1NzY5MCw1NzY5MSw1NzY5Miw1NzY5Myw1NzY5NCw1NzY5NSw1NzY5Niw1NzY5Nyw1NzY5''@;'; put 'put ''OCw1NzY5OSw1NzcwMCw1NzcwMSw1NzcwMiw1NzcwMyw1NzcwNCw1NzcwNSw1NzcwNiw1NzcwNyw1NzcwOCw1NzcwOSw1NzcxMCw1NzcxMSw1NzcxMiw1NzcxMyw1NzcxNCw1NzcxNSw1NzcxNiw1NzcxNyw1NzcxOCw1NzcxOSwyOTkzOSwyOTk0MSwyOTk0NCwyOTk0NSwyOTk0NiwyOTk0Nywy''@;'; put 'put ''OTk0OCwyOTk0OSwyOTk1MCwyOTk1MiwyOTk1MywyOTk1NCwyOTk1NSwyOTk1NywyOTk1OCwyOTk1OSwyOTk2MCwyOTk2MSwyOTk2MiwyOTk2MywyOTk2NCwyOTk2NiwyOTk2OCwyOTk3MCwyOTk3MiwyOTk3MywyOTk3NCwyOTk3NSwyOTk3OSwyOTk4MSwyOTk4MiwyOTk4NCwyOTk4NSwyOTk4''@;'; put 'put ''NiwyOTk4NywyOTk4OCwyOTk5MCwyOTk5MSwyOTk5NCwyOTk5OCwzMDAwNCwzMDAwNiwzMDAwOSwzMDAxMiwzMDAxMywzMDAxNSwzMDAxNywzMDAxOCwzMDAxOSwzMDAyMCwzMDAyMiwzMDAyMywzMDAyNSwzMDAyNiwzMDAyOSwzMDAzMiwzMDAzMywzMDAzNCwzMDAzNSwzMDAzNywzMDAzOCwz''@;'; put 'put ''MDAzOSwzMDA0MCwzMDA0NSwzMDA0NiwzMDA0NywzMDA0OCwzMDA0OSwzMDA1MCwzMDA1MSwzMDA1MiwzMDA1NSwzMDA1NiwzMDA1NywzMDA1OSwzMDA2MCwzMDA2MSwzMDA2MiwzMDA2MywzMDA2NCwzMDA2NSwzMDA2NywzMDA2OSwzMDA3MCwzMDA3MSwzMDA3NCwzMDA3NSwzMDA3NiwzMDA3''@;'; put 'put ''NywzMDA3OCwzMDA4MCwzMDA4MSwzMDA4MiwzMDA4NCwzMDA4NSwzMDA4Nyw1NzcyMCw1NzcyMSw1NzcyMiw1NzcyMyw1NzcyNCw1NzcyNSw1NzcyNiw1NzcyNyw1NzcyOCw1NzcyOSw1NzczMCw1NzczMSw1NzczMiw1NzczMyw1NzczNCw1NzczNSw1NzczNiw1NzczNyw1NzczOCw1NzczOSw1''@;'; put 'put ''Nzc0MCw1Nzc0MSw1Nzc0Miw1Nzc0Myw1Nzc0NCw1Nzc0NSw1Nzc0Niw1Nzc0Nyw1Nzc0OCw1Nzc0OSw1Nzc1MCw1Nzc1MSw1Nzc1Miw1Nzc1Myw1Nzc1NCw1Nzc1NSw1Nzc1Niw1Nzc1Nyw1Nzc1OCw1Nzc1OSw1Nzc2MCw1Nzc2MSw1Nzc2Miw1Nzc2Myw1Nzc2NCw1Nzc2NSw1Nzc2Niw1Nzc2''@;'; put 'put ''Nyw1Nzc2OCw1Nzc2OSw1Nzc3MCw1Nzc3MSw1Nzc3Miw1Nzc3Myw1Nzc3NCw1Nzc3NSw1Nzc3Niw1Nzc3Nyw1Nzc3OCw1Nzc3OSw1Nzc4MCw1Nzc4MSw1Nzc4Miw1Nzc4Myw1Nzc4NCw1Nzc4NSw1Nzc4Niw1Nzc4Nyw1Nzc4OCw1Nzc4OSw1Nzc5MCw1Nzc5MSw1Nzc5Miw1Nzc5Myw1Nzc5NCw1''@;'; put 'put ''Nzc5NSw1Nzc5Niw1Nzc5Nyw1Nzc5OCw1Nzc5OSw1NzgwMCw1NzgwMSw1NzgwMiw1NzgwMyw1NzgwNCw1NzgwNSw1NzgwNiw1NzgwNyw1NzgwOCw1NzgwOSw1NzgxMCw1NzgxMSw1NzgxMiw1NzgxMywzMDA4OCwzMDA4OSwzMDA5MCwzMDA5MiwzMDA5MywzMDA5NCwzMDA5NiwzMDA5OSwzMDEw''@;'; put 'put ''MSwzMDEwNCwzMDEwNywzMDEwOCwzMDExMCwzMDExNCwzMDExOCwzMDExOSwzMDEyMCwzMDEyMSwzMDEyMiwzMDEyNSwzMDEzNCwzMDEzNSwzMDEzOCwzMDEzOSwzMDE0MywzMDE0NCwzMDE0NSwzMDE1MCwzMDE1NSwzMDE1NiwzMDE1OCwzMDE1OSwzMDE2MCwzMDE2MSwzMDE2MywzMDE2Nywz''@;'; put 'put ''MDE2OSwzMDE3MCwzMDE3MiwzMDE3MywzMDE3NSwzMDE3NiwzMDE3NywzMDE4MSwzMDE4NSwzMDE4OCwzMDE4OSwzMDE5MCwzMDE5MSwzMDE5NCwzMDE5NSwzMDE5NywzMDE5OCwzMDE5OSwzMDIwMCwzMDIwMiwzMDIwMywzMDIwNSwzMDIwNiwzMDIxMCwzMDIxMiwzMDIxNCwzMDIxNSwzMDIx''@;'; put 'put ''NiwzMDIxNywzMDIxOSwzMDIyMSwzMDIyMiwzMDIyMywzMDIyNSwzMDIyNiwzMDIyNywzMDIyOCwzMDIzMCwzMDIzNCwzMDIzNiwzMDIzNywzMDIzOCwzMDI0MSwzMDI0MywzMDI0NywzMDI0OCwzMDI1MiwzMDI1NCwzMDI1NSwzMDI1NywzMDI1OCwzMDI2MiwzMDI2MywzMDI2NSwzMDI2Niwz''@;'; put 'put ''MDI2NywzMDI2OSwzMDI3MywzMDI3NCwzMDI3Niw1NzgxNCw1NzgxNSw1NzgxNiw1NzgxNyw1NzgxOCw1NzgxOSw1NzgyMCw1NzgyMSw1NzgyMiw1NzgyMyw1NzgyNCw1NzgyNSw1NzgyNiw1NzgyNyw1NzgyOCw1NzgyOSw1NzgzMCw1NzgzMSw1NzgzMiw1NzgzMyw1NzgzNCw1NzgzNSw1Nzgz''@;'; put 'put ''Niw1NzgzNyw1NzgzOCw1NzgzOSw1Nzg0MCw1Nzg0MSw1Nzg0Miw1Nzg0Myw1Nzg0NCw1Nzg0NSw1Nzg0Niw1Nzg0Nyw1Nzg0OCw1Nzg0OSw1Nzg1MCw1Nzg1MSw1Nzg1Miw1Nzg1Myw1Nzg1NCw1Nzg1NSw1Nzg1Niw1Nzg1Nyw1Nzg1OCw1Nzg1OSw1Nzg2MCw1Nzg2MSw1Nzg2Miw1Nzg2Myw1''@;'; put 'put ''Nzg2NCw1Nzg2NSw1Nzg2Niw1Nzg2Nyw1Nzg2OCw1Nzg2OSw1Nzg3MCw1Nzg3MSw1Nzg3Miw1Nzg3Myw1Nzg3NCw1Nzg3NSw1Nzg3Niw1Nzg3Nyw1Nzg3OCw1Nzg3OSw1Nzg4MCw1Nzg4MSw1Nzg4Miw1Nzg4Myw1Nzg4NCw1Nzg4NSw1Nzg4Niw1Nzg4Nyw1Nzg4OCw1Nzg4OSw1Nzg5MCw1Nzg5''@;'; put 'put ''MSw1Nzg5Miw1Nzg5Myw1Nzg5NCw1Nzg5NSw1Nzg5Niw1Nzg5Nyw1Nzg5OCw1Nzg5OSw1NzkwMCw1NzkwMSw1NzkwMiw1NzkwMyw1NzkwNCw1NzkwNSw1NzkwNiw1NzkwNywzMDI3NywzMDI3OCwzMDI3OSwzMDI4MCwzMDI4MSwzMDI4MiwzMDI4MywzMDI4NiwzMDI4NywzMDI4OCwzMDI4OSwz''@;'; put 'put ''MDI5MCwzMDI5MSwzMDI5MywzMDI5NSwzMDI5NiwzMDI5NywzMDI5OCwzMDI5OSwzMDMwMSwzMDMwMywzMDMwNCwzMDMwNSwzMDMwNiwzMDMwOCwzMDMwOSwzMDMxMCwzMDMxMSwzMDMxMiwzMDMxMywzMDMxNCwzMDMxNiwzMDMxNywzMDMxOCwzMDMyMCwzMDMyMSwzMDMyMiwzMDMyMywzMDMy''@;'; put 'put ''NCwzMDMyNSwzMDMyNiwzMDMyNywzMDMyOSwzMDMzMCwzMDMzMiwzMDMzNSwzMDMzNiwzMDMzNywzMDMzOSwzMDM0MSwzMDM0NSwzMDM0NiwzMDM0OCwzMDM0OSwzMDM1MSwzMDM1MiwzMDM1NCwzMDM1NiwzMDM1NywzMDM1OSwzMDM2MCwzMDM2MiwzMDM2MywzMDM2NCwzMDM2NSwzMDM2Niwz''@;'; put 'put ''MDM2NywzMDM2OCwzMDM2OSwzMDM3MCwzMDM3MSwzMDM3MywzMDM3NCwzMDM3NSwzMDM3NiwzMDM3NywzMDM3OCwzMDM3OSwzMDM4MCwzMDM4MSwzMDM4MywzMDM4NCwzMDM4NywzMDM4OSwzMDM5MCwzMDM5MSwzMDM5MiwzMDM5MywzMDM5NCwzMDM5NSwzMDM5NiwzMDM5NywzMDM5OCwzMDQw''@;'; put 'put ''MCwzMDQwMSwzMDQwMywyMTgzNCwzODQ2MywyMjQ2NywyNTM4NCwyMTcxMCwyMTc2OSwyMTY5NiwzMDM1MywzMDI4NCwzNDEwOCwzMDcwMiwzMzQwNiwzMDg2MSwyOTIzMywzODU1MiwzODc5NywyNzY4OCwyMzQzMywyMDQ3NCwyNTM1MywyNjI2MywyMzczNiwzMzAxOCwyNjY5NiwzMjk0Miwy''@;'; put 'put ''NjExNCwzMDQxNCwyMDk4NSwyNTk0MiwyOTEwMCwzMjc1MywzNDk0OCwyMDY1OCwyMjg4NSwyNTAzNCwyODU5NSwzMzQ1MywyNTQyMCwyNTE3MCwyMTQ4NSwyMTU0MywzMTQ5NCwyMDg0MywzMDExNiwyNDA1MiwyNTMwMCwzNjI5OSwzODc3NCwyNTIyNiwzMjc5MywyMjM2NSwzODcxMiwzMjYx''@;'; put 'put ''MCwyOTI0MCwzMDMzMywyNjU3NSwzMDMzNCwyNTY3MCwyMDMzNiwzNjEzMywyNTMwOCwzMTI1NSwyNjAwMSwyOTY3NywyNTY0NCwyNTIwMywzMzMyNCwzOTA0MSwyNjQ5NSwyOTI1NiwyNTE5OCwyNTI5MiwyMDI3NiwyOTkyMywyMTMyMiwyMTE1MCwzMjQ1OCwzNzAzMCwyNDExMCwyNjc1OCwy''@;'; put 'put ''NzAzNiwzMzE1MiwzMjQ2NSwyNjgzNCwzMDkxNywzNDQ0NCwzODIyNSwyMDYyMSwzNTg3NiwzMzUwMiwzMjk5MCwyMTI1MywzNTA5MCwyMTA5MywzMDQwNCwzMDQwNywzMDQwOSwzMDQxMSwzMDQxMiwzMDQxOSwzMDQyMSwzMDQyNSwzMDQyNiwzMDQyOCwzMDQyOSwzMDQzMCwzMDQzMiwzMDQz''@;'; put 'put ''MywzMDQzNCwzMDQzNSwzMDQzNiwzMDQzOCwzMDQzOSwzMDQ0MCwzMDQ0MSwzMDQ0MiwzMDQ0MywzMDQ0NCwzMDQ0NSwzMDQ0OCwzMDQ1MSwzMDQ1MywzMDQ1NCwzMDQ1NSwzMDQ1OCwzMDQ1OSwzMDQ2MSwzMDQ2MywzMDQ2NCwzMDQ2NiwzMDQ2NywzMDQ2OSwzMDQ3MCwzMDQ3NCwzMDQ3Niwz''@;'; put 'put ''MDQ3OCwzMDQ3OSwzMDQ4MCwzMDQ4MSwzMDQ4MiwzMDQ4MywzMDQ4NCwzMDQ4NSwzMDQ4NiwzMDQ4NywzMDQ4OCwzMDQ5MSwzMDQ5MiwzMDQ5MywzMDQ5NCwzMDQ5NywzMDQ5OSwzMDUwMCwzMDUwMSwzMDUwMywzMDUwNiwzMDUwNywzMDUwOCwzMDUxMCwzMDUxMiwzMDUxMywzMDUxNCwzMDUx''@;'; put 'put ''NSwzMDUxNiwzMDUyMSwzMDUyMywzMDUyNSwzMDUyNiwzMDUyNywzMDUzMCwzMDUzMiwzMDUzMywzMDUzNCwzMDUzNiwzMDUzNywzMDUzOCwzMDUzOSwzMDU0MCwzMDU0MSwzMDU0MiwzMDU0MywzMDU0NiwzMDU0NywzMDU0OCwzMDU0OSwzMDU1MCwzMDU1MSwzMDU1MiwzMDU1MywzMDU1Niwz''@;'; put 'put ''NDE4MCwzODY0OSwyMDQ0NSwyMjU2MSwzOTI4MSwyMzQ1MywyNTI2NSwyNTI1MywyNjI5MiwzNTk2MSw0MDA3NywyOTE5MCwyNjQ3OSwzMDg2NSwyNDc1NCwyMTMyOSwyMTI3MSwzNjc0NCwzMjk3MiwzNjEyNSwzODA0OSwyMDQ5MywyOTM4NCwyMjc5MSwyNDgxMSwyODk1MywzNDk4NywyMjg2''@;'; put 'put ''OCwzMzUxOSwyNjQxMiwzMTUyOCwyMzg0OSwzMjUwMywyOTk5NywyNzg5MywzNjQ1NCwzNjg1NiwzNjkyNCw0MDc2MywyNzYwNCwzNzE0NSwzMTUwOCwyNDQ0NCwzMDg4NywzNDAwNiwzNDEwOSwyNzYwNSwyNzYwOSwyNzYwNiwyNDA2NSwyNDE5OSwzMDIwMSwzODM4MSwyNTk0OSwyNDMzMCwy''@;'; put 'put ''NDUxNywzNjc2NywyMjcyMSwzMzIxOCwzNjk5MSwzODQ5MSwzODgyOSwzNjc5MywzMjUzNCwzNjE0MCwyNTE1MywyMDQxNSwyMTQ2NCwyMTM0MiwzNjc3NiwzNjc3NywzNjc3OSwzNjk0MSwyNjYzMSwyNDQyNiwzMzE3NiwzNDkyMCw0MDE1MCwyNDk3MSwyMTAzNSwzMDI1MCwyNDQyOCwyNTk5''@;'; put 'put ''NiwyODYyNiwyODM5MiwyMzQ4NiwyNTY3MiwyMDg1MywyMDkxMiwyNjU2NCwxOTk5MywzMTE3NywzOTI5MiwyODg1MSwzMDU1NywzMDU1OCwzMDU1OSwzMDU2MCwzMDU2NCwzMDU2NywzMDU2OSwzMDU3MCwzMDU3MywzMDU3NCwzMDU3NSwzMDU3NiwzMDU3NywzMDU3OCwzMDU3OSwzMDU4MCwz''@;'; put 'put ''MDU4MSwzMDU4MiwzMDU4MywzMDU4NCwzMDU4NiwzMDU4NywzMDU4OCwzMDU5MywzMDU5NCwzMDU5NSwzMDU5OCwzMDU5OSwzMDYwMCwzMDYwMSwzMDYwMiwzMDYwMywzMDYwNywzMDYwOCwzMDYxMSwzMDYxMiwzMDYxMywzMDYxNCwzMDYxNSwzMDYxNiwzMDYxNywzMDYxOCwzMDYxOSwzMDYy''@;'; put 'put ''MCwzMDYyMSwzMDYyMiwzMDYyNSwzMDYyNywzMDYyOCwzMDYzMCwzMDYzMiwzMDYzNSwzMDYzNywzMDYzOCwzMDYzOSwzMDY0MSwzMDY0MiwzMDY0NCwzMDY0NiwzMDY0NywzMDY0OCwzMDY0OSwzMDY1MCwzMDY1MiwzMDY1NCwzMDY1NiwzMDY1NywzMDY1OCwzMDY1OSwzMDY2MCwzMDY2MSwz''@;'; put 'put ''MDY2MiwzMDY2MywzMDY2NCwzMDY2NSwzMDY2NiwzMDY2NywzMDY2OCwzMDY3MCwzMDY3MSwzMDY3MiwzMDY3MywzMDY3NCwzMDY3NSwzMDY3NiwzMDY3NywzMDY3OCwzMDY4MCwzMDY4MSwzMDY4MiwzMDY4NSwzMDY4NiwzMDY4NywzMDY4OCwzMDY4OSwzMDY5MiwzMDE0OSwyNDE4MiwyOTYy''@;'; put 'put ''NywzMzc2MCwyNTc3MywyNTMyMCwzODA2OSwyNzg3NCwyMTMzOCwyMTE4NywyNTYxNSwzODA4MiwzMTYzNiwyMDI3MSwyNDA5MSwzMzMzNCwzMzA0NiwzMzE2MiwyODE5NiwyNzg1MCwzOTUzOSwyNTQyOSwyMTM0MCwyMTc1NCwzNDkxNywyMjQ5NiwxOTk4MSwyNDA2NywyNzQ5MywzMTgwNywz''@;'; put 'put ''NzA5NiwyNDU5OCwyNTgzMCwyOTQ2OCwzNTAwOSwyNjQ0OCwyNTE2NSwzNjEzMCwzMDU3MiwzNjM5MywzNzMxOSwyNDQyNSwzMzc1NiwzNDA4MSwzOTE4NCwyMTQ0MiwzNDQ1MywyNzUzMSwyNDgxMywyNDgwOCwyODc5OSwzMzQ4NSwzMzMyOSwyMDE3OSwyNzgxNSwzNDI1NSwyNTgwNSwzMTk2''@;'; put 'put ''MSwyNzEzMywyNjM2MSwzMzYwOSwyMTM5NywzMTU3NCwyMDM5MSwyMDg3NiwyNzk3OSwyMzYxOCwzNjQ2MSwyNTU1NCwyMTQ0OSwzMzU4MCwzMzU5MCwyNjU5NywzMDkwMCwyNTY2MSwyMzUxOSwyMzcwMCwyNDA0NiwzNTgxNSwyNTI4NiwyNjYxMiwzNTk2MiwyNTYwMCwyNTUzMCwzNDYzMywz''@;'; put 'put ''OTMwNywzNTg2MywzMjU0NCwzODEzMCwyMDEzNSwzODQxNiwzOTA3NiwyNjEyNCwyOTQ2MiwzMDY5NCwzMDY5NiwzMDY5OCwzMDcwMywzMDcwNCwzMDcwNSwzMDcwNiwzMDcwOCwzMDcwOSwzMDcxMSwzMDcxMywzMDcxNCwzMDcxNSwzMDcxNiwzMDcyMywzMDcyNCwzMDcyNSwzMDcyNiwzMDcy''@;'; put 'put ''NywzMDcyOCwzMDczMCwzMDczMSwzMDczNCwzMDczNSwzMDczNiwzMDczOSwzMDc0MSwzMDc0NSwzMDc0NywzMDc1MCwzMDc1MiwzMDc1MywzMDc1NCwzMDc1NiwzMDc2MCwzMDc2MiwzMDc2MywzMDc2NiwzMDc2NywzMDc2OSwzMDc3MCwzMDc3MSwzMDc3MywzMDc3NCwzMDc4MSwzMDc4Mywz''@;'; put 'put ''MDc4NSwzMDc4NiwzMDc4NywzMDc4OCwzMDc5MCwzMDc5MiwzMDc5MywzMDc5NCwzMDc5NSwzMDc5NywzMDc5OSwzMDgwMSwzMDgwMywzMDgwNCwzMDgwOCwzMDgwOSwzMDgxMCwzMDgxMSwzMDgxMiwzMDgxNCwzMDgxNSwzMDgxNiwzMDgxNywzMDgxOCwzMDgxOSwzMDgyMCwzMDgyMSwzMDgy''@;'; put 'put ''MiwzMDgyMywzMDgyNCwzMDgyNSwzMDgzMSwzMDgzMiwzMDgzMywzMDgzNCwzMDgzNSwzMDgzNiwzMDgzNywzMDgzOCwzMDg0MCwzMDg0MSwzMDg0MiwzMDg0MywzMDg0NSwzMDg0NiwzMDg0NywzMDg0OCwzMDg0OSwzMDg1MCwzMDg1MSwyMjMzMCwyMzU4MSwyNDEyMCwzODI3MSwyMDYwNywz''@;'; put 'put ''MjkyOCwyMTM3OCwyNTk1MCwzMDAyMSwyMTgwOSwyMDUxMywzNjIyOSwyNTIyMCwzODA0NiwyNjM5NywyMjA2NiwyODUyNiwyNDAzNCwyMTU1NywyODgxOCwzNjcxMCwyNTE5OSwyNTc2NCwyNTUwNywyNDQ0MywyODU1MiwzNzEwOCwzMzI1MSwzNjc4NCwyMzU3NiwyNjIxNiwyNDU2MSwyNzc4''@;'; put 'put ''NSwzODQ3MiwzNjIyNSwzNDkyNCwyNTc0NSwzMTIxNiwyMjQ3OCwyNzIyNSwyNTEwNCwyMTU3NiwyMDA1NiwzMTI0MywyNDgwOSwyODU0OCwzNTgwMiwyNTIxNSwzNjg5NCwzOTU2MywzMTIwNCwyMTUwNywzMDE5NiwyNTM0NSwyMTI3MywyNzc0NCwzNjgzMSwyNDM0NywzOTUzNiwzMjgyNyw0''@;'; put 'put ''MDgzMSwyMDM2MCwyMzYxMCwzNjE5NiwzMjcwOSwyNjAyMSwyODg2MSwyMDgwNSwyMDkxNCwzNDQxMSwyMzgxNSwyMzQ1NiwyNTI3NywzNzIyOCwzMDA2OCwzNjM2NCwzMTI2NCwyNDgzMywzMTYwOSwyMDE2NywzMjUwNCwzMDU5NywxOTk4NSwzMzI2MSwyMTAyMSwyMDk4NiwyNzI0OSwyMTQx''@;'; put 'put ''NiwzNjQ4NywzODE0OCwzODYwNywyODM1MywzODUwMCwyNjk3MCwzMDg1MiwzMDg1MywzMDg1NCwzMDg1NiwzMDg1OCwzMDg1OSwzMDg2MywzMDg2NCwzMDg2NiwzMDg2OCwzMDg2OSwzMDg3MCwzMDg3MywzMDg3NywzMDg3OCwzMDg4MCwzMDg4MiwzMDg4NCwzMDg4NiwzMDg4OCwzMDg4OSwz''@;'; put 'put ''MDg5MCwzMDg5MSwzMDg5MiwzMDg5MywzMDg5NCwzMDg5NSwzMDkwMSwzMDkwMiwzMDkwMywzMDkwNCwzMDkwNiwzMDkwNywzMDkwOCwzMDkwOSwzMDkxMSwzMDkxMiwzMDkxNCwzMDkxNSwzMDkxNiwzMDkxOCwzMDkxOSwzMDkyMCwzMDkyNCwzMDkyNSwzMDkyNiwzMDkyNywzMDkyOSwzMDkz''@;'; put 'put ''MCwzMDkzMSwzMDkzNCwzMDkzNSwzMDkzNiwzMDkzOCwzMDkzOSwzMDk0MCwzMDk0MSwzMDk0MiwzMDk0MywzMDk0NCwzMDk0NSwzMDk0NiwzMDk0NywzMDk0OCwzMDk0OSwzMDk1MCwzMDk1MSwzMDk1MywzMDk1NCwzMDk1NSwzMDk1NywzMDk1OCwzMDk1OSwzMDk2MCwzMDk2MSwzMDk2Mywz''@;'; put 'put ''MDk2NSwzMDk2NiwzMDk2OCwzMDk2OSwzMDk3MSwzMDk3MiwzMDk3MywzMDk3NCwzMDk3NSwzMDk3NiwzMDk3OCwzMDk3OSwzMDk4MCwzMDk4MiwzMDk4MywzMDk4NCwzMDk4NSwzMDk4NiwzMDk4NywzMDk4OCwzMDc4NCwyMDY0OCwzMDY3OSwyNTYxNiwzNTMwMiwyMjc4OCwyNTU3MSwyNDAy''@;'; put 'put ''OSwzMTM1OSwyNjk0MSwyMDI1NiwzMzMzNywyMTkxMiwyMDAxOCwzMDEyNiwzMTM4MywyNDE2MiwyNDIwMiwzODM4MywyMTAxOSwyMTU2MSwyODgxMCwyNTQ2MiwzODE4MCwyMjQwMiwyNjE0OSwyNjk0MywzNzI1NSwyMTc2NywyODE0NywzMjQzMSwzNDg1MCwyNTEzOSwzMjQ5NiwzMDEzMywz''@;'; put 'put ''MzU3NiwzMDkxMywzODYwNCwzNjc2NiwyNDkwNCwyOTk0MywzNTc4OSwyNzQ5MiwyMTA1MCwzNjE3NiwyNzQyNSwzMjg3NCwzMzkwNSwyMjI1NywyMTI1NCwyMDE3NCwxOTk5NSwyMDk0NSwzMTg5NSwzNzI1OSwzMTc1MSwyMDQxOSwzNjQ3OSwzMTcxMywzMTM4OCwyNTcwMywyMzgyOCwyMDY1''@;'; put 'put ''MiwzMzAzMCwzMDIwOSwzMTkyOSwyODE0MCwzMjczNiwyNjQ0OSwyMzM4NCwyMzU0NCwzMDkyMywyNTc3NCwyNTYxOSwyNTUxNCwyNTM4NywzODE2OSwyNTY0NSwzNjc5OCwzMTU3MiwzMDI0OSwyNTE3MSwyMjgyMywyMTU3NCwyNzUxMywyMDY0MywyNTE0MCwyNDEwMiwyNzUyNiwyMDE5NSwz''@;'; put 'put ''NjE1MSwzNDk1NSwyNDQ1MywzNjkxMCwzMDk4OSwzMDk5MCwzMDk5MSwzMDk5MiwzMDk5MywzMDk5NCwzMDk5NiwzMDk5NywzMDk5OCwzMDk5OSwzMWUzLDMxMDAxLDMxMDAyLDMxMDAzLDMxMDA0LDMxMDA1LDMxMDA3LDMxMDA4LDMxMDA5LDMxMDEwLDMxMDExLDMxMDEzLDMxMDE0LDMxMDE1''@;'; put 'put ''LDMxMDE2LDMxMDE3LDMxMDE4LDMxMDE5LDMxMDIwLDMxMDIxLDMxMDIyLDMxMDIzLDMxMDI0LDMxMDI1LDMxMDI2LDMxMDI3LDMxMDI5LDMxMDMwLDMxMDMxLDMxMDMyLDMxMDMzLDMxMDM3LDMxMDM5LDMxMDQyLDMxMDQzLDMxMDQ0LDMxMDQ1LDMxMDQ3LDMxMDUwLDMxMDUxLDMxMDUyLDMx''@;'; put 'put ''MDUzLDMxMDU0LDMxMDU1LDMxMDU2LDMxMDU3LDMxMDU4LDMxMDYwLDMxMDYxLDMxMDY0LDMxMDY1LDMxMDczLDMxMDc1LDMxMDc2LDMxMDc4LDMxMDgxLDMxMDgyLDMxMDgzLDMxMDg0LDMxMDg2LDMxMDg4LDMxMDg5LDMxMDkwLDMxMDkxLDMxMDkyLDMxMDkzLDMxMDk0LDMxMDk3LDMxMDk5''@;'; put 'put ''LDMxMTAwLDMxMTAxLDMxMTAyLDMxMTAzLDMxMTA2LDMxMTA3LDMxMTEwLDMxMTExLDMxMTEyLDMxMTEzLDMxMTE1LDMxMTE2LDMxMTE3LDMxMTE4LDMxMTIwLDMxMTIxLDMxMTIyLDI0NjA4LDMyODI5LDI1Mjg1LDIwMDI1LDIxMzMzLDM3MTEyLDI1NTI4LDMyOTY2LDI2MDg2LDI3Njk0LDIw''@;'; put 'put ''Mjk0LDI0ODE0LDI4MTI5LDM1ODA2LDI0Mzc3LDM0NTA3LDI0NDAzLDI1Mzc3LDIwODI2LDMzNjMzLDI2NzIzLDIwOTkyLDI1NDQzLDM2NDI0LDIwNDk4LDIzNzA3LDMxMDk1LDIzNTQ4LDIxMDQwLDMxMjkxLDI0NzY0LDM2OTQ3LDMwNDIzLDI0NTAzLDI0NDcxLDMwMzQwLDM2NDYwLDI4Nzgz''@;'; put 'put ''LDMwMzMxLDMxNTYxLDMwNjM0LDIwOTc5LDM3MDExLDIyNTY0LDIwMzAyLDI4NDA0LDM2ODQyLDI1OTMyLDMxNTE1LDI5MzgwLDI4MDY4LDMyNzM1LDIzMjY1LDI1MjY5LDI0MjEzLDIyMzIwLDMzOTIyLDMxNTMyLDI0MDkzLDI0MzUxLDM2ODgyLDMyNTMyLDM5MDcyLDI1NDc0LDI4MzU5LDMw''@;'; put 'put ''ODcyLDI4ODU3LDIwODU2LDM4NzQ3LDIyNDQzLDMwMDA1LDIwMjkxLDMwMDA4LDI0MjE1LDI0ODA2LDIyODgwLDI4MDk2LDI3NTgzLDMwODU3LDIxNTAwLDM4NjEzLDIwOTM5LDIwOTkzLDI1NDgxLDIxNTE0LDM4MDM1LDM1ODQzLDM2MzAwLDI5MjQxLDMwODc5LDM0Njc4LDM2ODQ1LDM1ODUz''@;'; put 'put ''LDIxNDcyLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI3LDMxMTI4LDMxMTI5LDMxMTMxLDMxMTMyLDMxMTMzLDMxMTM0LDMxMTM1LDMxMTM2LDMxMTM3LDMxMTM4LDMxMTM5LDMxMTQwLDMxMTQxLDMxMTQyLDMxMTQ0LDMxMTQ1LDMxMTQ2LDMxMTQ3LDMxMTQ4LDMxMTQ5LDMxMTUwLDMx''@;'; put 'put ''MTUxLDMxMTUyLDMxMTUzLDMxMTU0LDMxMTU2LDMxMTU3LDMxMTU4LDMxMTU5LDMxMTYwLDMxMTY0LDMxMTY3LDMxMTcwLDMxMTcyLDMxMTczLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgwLDMxMTgyLDMxMTgzLDMxMTg0LDMxMTg3LDMxMTg4LDMxMTkwLDMxMTkxLDMxMTkzLDMxMTk0LDMxMTk1''@;'; put 'put ''LDMxMTk2LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAxLDMxMjAyLDMxMjA1LDMxMjA4LDMxMjEwLDMxMjEyLDMxMjE0LDMxMjE3LDMxMjE4LDMxMjE5LDMxMjIwLDMxMjIxLDMxMjIyLDMxMjIzLDMxMjI1LDMxMjI2LDMxMjI4LDMxMjMwLDMxMjMxLDMxMjMzLDMxMjM2LDMxMjM3LDMxMjM5LDMx''@;'; put 'put ''MjQwLDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ3LDMxMjQ4LDMxMjQ5LDMxMjUwLDMxMjUxLDMxMjUzLDMxMjU0LDMxMjU2LDMxMjU3LDMxMjU5LDMxMjYwLDE5OTY5LDMwNDQ3LDIxNDg2LDM4MDI1LDM5MDMwLDQwNzE4LDM4MTg5LDIzNDUwLDM1NzQ2LDIwMDAyLDE5OTk2LDIwOTA4LDMzODkx''@;'; put 'put ''LDI1MDI2LDIxMTYwLDI2NjM1LDIwMzc1LDI0NjgzLDIwOTIzLDI3OTM0LDIwODI4LDI1MjM4LDI2MDA3LDM4NDk3LDM1OTEwLDM2ODg3LDMwMTY4LDM3MTE3LDMwNTYzLDI3NjAyLDI5MzIyLDI5NDIwLDM1ODM1LDIyNTgxLDMwNTg1LDM2MTcyLDI2NDYwLDM4MjA4LDMyOTIyLDI0MjMwLDI4''@;'; put 'put ''MTkzLDIyOTMwLDMxNDcxLDMwNzAxLDM4MjAzLDI3NTczLDI2MDI5LDMyNTI2LDIyNTM0LDIwODE3LDM4NDMxLDIzNTQ1LDIyNjk3LDIxNTQ0LDM2NDY2LDI1OTU4LDM5MDM5LDIyMjQ0LDM4MDQ1LDMwNDYyLDM2OTI5LDI1NDc5LDIxNzAyLDIyODEwLDIyODQyLDIyNDI3LDM2NTMwLDI2NDIx''@;'; put 'put ''LDM2MzQ2LDMzMzMzLDIxMDU3LDI0ODE2LDIyNTQ5LDM0NTU4LDIzNzg0LDQwNTE3LDIwNDIwLDM5MDY5LDM1NzY5LDIzMDc3LDI0Njk0LDIxMzgwLDI1MjEyLDM2OTQzLDM3MTIyLDM5Mjk1LDI0NjgxLDMyNzgwLDIwNzk5LDMyODE5LDIzNTcyLDM5Mjg1LDI3OTUzLDIwMTA4LDMxMjYxLDMx''@;'; put 'put ''MjYzLDMxMjY1LDMxMjY2LDMxMjY4LDMxMjY5LDMxMjcwLDMxMjcxLDMxMjcyLDMxMjczLDMxMjc0LDMxMjc1LDMxMjc2LDMxMjc3LDMxMjc4LDMxMjc5LDMxMjgwLDMxMjgxLDMxMjgyLDMxMjg0LDMxMjg1LDMxMjg2LDMxMjg4LDMxMjkwLDMxMjk0LDMxMjk2LDMxMjk3LDMxMjk4LDMxMjk5''@;'; put 'put ''LDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA1LDMxMzA2LDMxMzA3LDMxMzA4LDMxMzA5LDMxMzEwLDMxMzExLDMxMzEyLDMxMzE0LDMxMzE1LDMxMzE2LDMxMzE3LDMxMzE4LDMxMzIwLDMxMzIxLDMxMzIyLDMxMzIzLDMxMzI0LDMxMzI1LDMxMzI2LDMxMzI3LDMxMzI4LDMxMzI5LDMx''@;'; put 'put ''MzMwLDMxMzMxLDMxMzMyLDMxMzMzLDMxMzM0LDMxMzM1LDMxMzM2LDMxMzM3LDMxMzM4LDMxMzM5LDMxMzQwLDMxMzQxLDMxMzQyLDMxMzQzLDMxMzQ1LDMxMzQ2LDMxMzQ3LDMxMzQ5LDMxMzU1LDMxMzU2LDMxMzU3LDMxMzU4LDMxMzYyLDMxMzY1LDMxMzY3LDMxMzY5LDMxMzcwLDMxMzcx''@;'; put 'put ''LDMxMzcyLDMxMzc0LDMxMzc1LDMxMzc2LDMxMzc5LDMxMzgwLDMxMzg1LDMxMzg2LDMxMzg3LDMxMzkwLDMxMzkzLDMxMzk0LDM2MTQ0LDIxNDU3LDMyNjAyLDMxNTY3LDIwMjQwLDIwMDQ3LDM4NDAwLDI3ODYxLDI5NjQ4LDM0MjgxLDI0MDcwLDMwMDU4LDMyNzYzLDI3MTQ2LDMwNzE4LDM4''@;'; put 'put ''MDM0LDMyMzIxLDIwOTYxLDI4OTAyLDIxNDUzLDM2ODIwLDMzNTM5LDM2MTM3LDI5MzU5LDM5Mjc3LDI3ODY3LDIyMzQ2LDMzNDU5LDI2MDQxLDMyOTM4LDI1MTUxLDM4NDUwLDIyOTUyLDIwMjIzLDM1Nzc1LDMyNDQyLDI1OTE4LDMzNzc4LDM4NzUwLDIxODU3LDM5MTM0LDMyOTMzLDIxMjkw''@;'; put 'put ''LDM1ODM3LDIxNTM2LDMyOTU0LDI0MjIzLDI3ODMyLDM2MTUzLDMzNDUyLDM3MjEwLDIxNTQ1LDI3Njc1LDIwOTk4LDMyNDM5LDIyMzY3LDI4OTU0LDI3Nzc0LDMxODgxLDIyODU5LDIwMjIxLDI0NTc1LDI0ODY4LDMxOTE0LDIwMDE2LDIzNTUzLDI2NTM5LDM0NTYyLDIzNzkyLDM4MTU1LDM5''@;'; put 'put ''MTE4LDMwMTI3LDI4OTI1LDM2ODk4LDIwOTExLDMyNTQxLDM1NzczLDIyODU3LDIwOTY0LDIwMzE1LDIxNTQyLDIyODI3LDI1OTc1LDMyOTMyLDIzNDEzLDI1MjA2LDI1MjgyLDM2NzUyLDI0MTMzLDI3Njc5LDMxNTI2LDIwMjM5LDIwNDQwLDI2MzgxLDMxMzk1LDMxMzk2LDMxMzk5LDMxNDAx''@;'; put 'put ''LDMxNDAyLDMxNDAzLDMxNDA2LDMxNDA3LDMxNDA4LDMxNDA5LDMxNDEwLDMxNDEyLDMxNDEzLDMxNDE0LDMxNDE1LDMxNDE2LDMxNDE3LDMxNDE4LDMxNDE5LDMxNDIwLDMxNDIxLDMxNDIyLDMxNDI0LDMxNDI1LDMxNDI2LDMxNDI3LDMxNDI4LDMxNDI5LDMxNDMwLDMxNDMxLDMxNDMyLDMx''@;'; put 'put ''NDMzLDMxNDM0LDMxNDM2LDMxNDM3LDMxNDM4LDMxNDM5LDMxNDQwLDMxNDQxLDMxNDQyLDMxNDQzLDMxNDQ0LDMxNDQ1LDMxNDQ3LDMxNDQ4LDMxNDUwLDMxNDUxLDMxNDUyLDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYwLDMxNDYzLDMxNDY0LDMxNDY1LDMxNDY2LDMxNDY3LDMxNDY4LDMxNDcw''@;'; put 'put ''LDMxNDcyLDMxNDczLDMxNDc0LDMxNDc1LDMxNDc2LDMxNDc3LDMxNDc4LDMxNDc5LDMxNDgwLDMxNDgzLDMxNDg0LDMxNDg2LDMxNDg4LDMxNDg5LDMxNDkwLDMxNDkzLDMxNDk1LDMxNDk3LDMxNTAwLDMxNTAxLDMxNTAyLDMxNTA0LDMxNTA2LDMxNTA3LDMxNTEwLDMxNTExLDMxNTEyLDMx''@;'; put 'put ''NTE0LDMxNTE2LDMxNTE3LDMxNTE5LDMxNTIxLDMxNTIyLDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMzLDI4MDE0LDI4MDc0LDMxMTE5LDM0OTkzLDI0MzQzLDI5OTk1LDI1MjQyLDM2NzQxLDIwNDYzLDM3MzQwLDI2MDIzLDMzMDcxLDMzMTA1LDI0MjIwLDMzMTA0LDM2MjEyLDIxMTAzLDM1MjA2''@;'; put 'put ''LDM2MTcxLDIyNzk3LDIwNjEzLDIwMTg0LDM4NDI4LDI5MjM4LDMzMTQ1LDM2MTI3LDIzNTAwLDM1NzQ3LDM4NDY4LDIyOTE5LDMyNTM4LDIxNjQ4LDIyMTM0LDIyMDMwLDM1ODEzLDI1OTEzLDI3MDEwLDM4MDQxLDMwNDIyLDI4Mjk3LDI0MTc4LDI5OTc2LDI2NDM4LDI2NTc3LDMxNDg3LDMy''@;'; put 'put ''OTI1LDM2MjE0LDI0ODYzLDMxMTc0LDI1OTU0LDM2MTk1LDIwODcyLDIxMDE4LDM4MDUwLDMyNTY4LDMyOTIzLDMyNDM0LDIzNzAzLDI4MjA3LDI2NDY0LDMxNzA1LDMwMzQ3LDM5NjQwLDMzMTY3LDMyNjYwLDMxOTU3LDI1NjMwLDM4MjI0LDMxMjk1LDIxNTc4LDIxNzMzLDI3NDY4LDI1NjAx''@;'; put 'put ''LDI1MDk2LDQwNTA5LDMzMDExLDMwMTA1LDIxMTA2LDM4NzYxLDMzODgzLDI2Njg0LDM0NTMyLDM4NDAxLDM4NTQ4LDM4MTI0LDIwMDEwLDIxNTA4LDMyNDczLDI2NjgxLDM2MzE5LDMyNzg5LDI2MzU2LDI0MjE4LDMyNjk3LDMxNTM1LDMxNTM2LDMxNTM4LDMxNTQwLDMxNTQxLDMxNTQyLDMx''@;'; put 'put ''NTQzLDMxNTQ1LDMxNTQ3LDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU0LDMxNTU1LDMxNTU2LDMxNTU4LDMxNTYwLDMxNTYyLDMxNTY1LDMxNTY2LDMxNTcxLDMxNTczLDMxNTc1LDMxNTc3LDMxNTgwLDMxNTgyLDMxNTgzLDMxNTg1LDMxNTg3LDMxNTg4LDMxNTg5LDMxNTkwLDMxNTkx''@;'; put 'put ''LDMxNTkyLDMxNTkzLDMxNTk0LDMxNTk1LDMxNTk2LDMxNTk3LDMxNTk5LDMxNjAwLDMxNjAzLDMxNjA0LDMxNjA2LDMxNjA4LDMxNjEwLDMxNjEyLDMxNjEzLDMxNjE1LDMxNjE3LDMxNjE4LDMxNjE5LDMxNjIwLDMxNjIyLDMxNjIzLDMxNjI0LDMxNjI1LDMxNjI2LDMxNjI3LDMxNjI4LDMx''@;'; put 'put ''NjMwLDMxNjMxLDMxNjMzLDMxNjM0LDMxNjM1LDMxNjM4LDMxNjQwLDMxNjQxLDMxNjQyLDMxNjQzLDMxNjQ2LDMxNjQ3LDMxNjQ4LDMxNjUxLDMxNjUyLDMxNjUzLDMxNjYyLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY3LDMxNjY5LDMxNjcwLDMxNjcxLDMxNjczLDMxNjc0LDMxNjc1LDMxNjc2''@;'; put 'put ''LDMxNjc3LDMxNjc4LDMxNjc5LDMxNjgwLDMxNjgyLDMxNjgzLDMxNjg0LDIyNDY2LDMyODMxLDI2Nzc1LDI0MDM3LDI1OTE1LDIxMTUxLDI0Njg1LDQwODU4LDIwMzc5LDM2NTI0LDIwODQ0LDIzNDY3LDI0MzM5LDI0MDQxLDI3NzQyLDI1MzI5LDM2MTI5LDIwODQ5LDM4MDU3LDIxMjQ2LDI3''@;'; put 'put ''ODA3LDMzNTAzLDI5Mzk5LDIyNDM0LDI2NTAwLDM2MTQxLDIyODE1LDM2NzY0LDMzNzM1LDIxNjUzLDMxNjI5LDIwMjcyLDI3ODM3LDIzMzk2LDIyOTkzLDQwNzIzLDIxNDc2LDM0NTA2LDM5NTkyLDM1ODk1LDMyOTI5LDI1OTI1LDM5MDM4LDIyMjY2LDM4NTk5LDIxMDM4LDI5OTE2LDIxMDcy''@;'; put 'put ''LDIzNTIxLDI1MzQ2LDM1MDc0LDIwMDU0LDI1Mjk2LDI0NjE4LDI2ODc0LDIwODUxLDIzNDQ4LDIwODk2LDM1MjY2LDMxNjQ5LDM5MzAyLDMyNTkyLDI0ODE1LDI4NzQ4LDM2MTQzLDIwODA5LDI0MTkxLDM2ODkxLDI5ODA4LDM1MjY4LDIyMzE3LDMwNzg5LDI0NDAyLDQwODYzLDM4Mzk0LDM2''@;'; put 'put ''NzEyLDM5NzQwLDM1ODA5LDMwMzI4LDI2NjkwLDI2NTg4LDM2MzMwLDM2MTQ5LDIxMDUzLDM2NzQ2LDI4Mzc4LDI2ODI5LDM4MTQ5LDM3MTAxLDIyMjY5LDI2NTI0LDM1MDY1LDM2ODA3LDIxNzA0LDMxNjg1LDMxNjg4LDMxNjg5LDMxNjkwLDMxNjkxLDMxNjkzLDMxNjk0LDMxNjk1LDMxNjk2''@;'; put 'put ''LDMxNjk4LDMxNzAwLDMxNzAxLDMxNzAyLDMxNzAzLDMxNzA0LDMxNzA3LDMxNzA4LDMxNzEwLDMxNzExLDMxNzEyLDMxNzE0LDMxNzE1LDMxNzE2LDMxNzE5LDMxNzIwLDMxNzIxLDMxNzIzLDMxNzI0LDMxNzI1LDMxNzI3LDMxNzI4LDMxNzMwLDMxNzMxLDMxNzMyLDMxNzMzLDMxNzM0LDMx''@;'; put 'put ''NzM2LDMxNzM3LDMxNzM4LDMxNzM5LDMxNzQxLDMxNzQzLDMxNzQ0LDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzQ5LDMxNzUwLDMxNzUyLDMxNzUzLDMxNzU0LDMxNzU3LDMxNzU4LDMxNzYwLDMxNzYxLDMxNzYyLDMxNzYzLDMxNzY0LDMxNzY1LDMxNzY3LDMxNzY4LDMxNzY5LDMxNzcw''@;'; put 'put ''LDMxNzcxLDMxNzcyLDMxNzczLDMxNzc0LDMxNzc2LDMxNzc3LDMxNzc4LDMxNzc5LDMxNzgwLDMxNzgxLDMxNzg0LDMxNzg1LDMxNzg3LDMxNzg4LDMxNzg5LDMxNzkwLDMxNzkxLDMxNzkyLDMxNzkzLDMxNzk0LDMxNzk1LDMxNzk2LDMxNzk3LDMxNzk4LDMxNzk5LDMxODAxLDMxODAyLDMx''@;'; put 'put ''ODAzLDMxODA0LDMxODA1LDMxODA2LDMxODEwLDM5NjA4LDIzNDAxLDI4MDIzLDI3Njg2LDIwMTMzLDIzNDc1LDM5NTU5LDM3MjE5LDI1ZTMsMzcwMzksMzg4ODksMjE1NDcsMjgwODUsMjM1MDYsMjA5ODksMjE4OTgsMzI1OTcsMzI3NTIsMjU3ODgsMjU0MjEsMjYwOTcsMjUwMjIsMjQ3MTcs''@;'; put 'put ''Mjg5MzgsMjc3MzUsMjc3MjEsMjI4MzEsMjY0NzcsMzMzMjIsMjI3NDEsMjIxNTgsMzU5NDYsMjc2MjcsMzcwODUsMjI5MDksMzI3OTEsMjE0OTUsMjgwMDksMjE2MjEsMjE5MTcsMzM2NTUsMzM3NDMsMjY2ODAsMzExNjYsMjE2NDQsMjAzMDksMjE1MTIsMzA0MTgsMzU5NzcsMzg0MDIsMjc4''@;'; put 'put ''MjcsMjgwODgsMzYyMDMsMzUwODgsNDA1NDgsMzYxNTQsMjIwNzksNDA2NTcsMzAxNjUsMjQ0NTYsMjk0MDgsMjQ2ODAsMjE3NTYsMjAxMzYsMjcxNzgsMzQ5MTMsMjQ2NTgsMzY3MjAsMjE3MDAsMjg4ODgsMzQ0MjUsNDA1MTEsMjc5NDYsMjM0MzksMjQzNDQsMzI0MTgsMjE4OTcsMjAzOTks''@;'; put 'put ''Mjk0OTIsMjE1NjQsMjE0MDIsMjA1MDUsMjE1MTgsMjE2MjgsMjAwNDYsMjQ1NzMsMjk3ODYsMjI3NzQsMzM4OTksMzI5OTMsMzQ2NzYsMjkzOTIsMzE5NDYsMjgyNDYsMzE4MTEsMzE4MTIsMzE4MTMsMzE4MTQsMzE4MTUsMzE4MTYsMzE4MTcsMzE4MTgsMzE4MTksMzE4MjAsMzE4MjIsMzE4''@;'; put 'put ''MjMsMzE4MjQsMzE4MjUsMzE4MjYsMzE4MjcsMzE4MjgsMzE4MjksMzE4MzAsMzE4MzEsMzE4MzIsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4MzksMzE4NDAsMzE4NDEsMzE4NDIsMzE4NDMsMzE4NDQsMzE4NDUsMzE4NDYsMzE4NDcsMzE4NDgsMzE4NDksMzE4NTAs''@;'; put 'put ''MzE4NTEsMzE4NTIsMzE4NTMsMzE4NTQsMzE4NTUsMzE4NTYsMzE4NTcsMzE4NTgsMzE4NjEsMzE4NjIsMzE4NjMsMzE4NjQsMzE4NjUsMzE4NjYsMzE4NzAsMzE4NzEsMzE4NzIsMzE4NzMsMzE4NzQsMzE4NzUsMzE4NzYsMzE4NzcsMzE4NzgsMzE4NzksMzE4ODAsMzE4ODIsMzE4ODMsMzE4''@;'; put 'put ''ODQsMzE4ODUsMzE4ODYsMzE4ODcsMzE4ODgsMzE4OTEsMzE4OTIsMzE4OTQsMzE4OTcsMzE4OTgsMzE4OTksMzE5MDQsMzE5MDUsMzE5MDcsMzE5MTAsMzE5MTEsMzE5MTIsMzE5MTMsMzE5MTUsMzE5MTYsMzE5MTcsMzE5MTksMzE5MjAsMzE5MjQsMzE5MjUsMzE5MjYsMzE5MjcsMzE5Mjgs''@;'; put 'put ''MzE5MzAsMzE5MzEsMjQzNTksMzQzODIsMjE4MDQsMjUyNTIsMjAxMTQsMjc4MTgsMjUxNDMsMzM0NTcsMjE3MTksMjEzMjYsMjk1MDIsMjgzNjksMzAwMTEsMjEwMTAsMjEyNzAsMzU4MDUsMjcwODgsMjQ0NTgsMjQ1NzYsMjgxNDIsMjIzNTEsMjc0MjYsMjk2MTUsMjY3MDcsMzY4MjQsMzI1''@;'; put 'put ''MzEsMjU0NDIsMjQ3MzksMjE3OTYsMzAxODYsMzU5MzgsMjg5NDksMjgwNjcsMjM0NjIsMjQxODcsMzM2MTgsMjQ5MDgsNDA2NDQsMzA5NzAsMzQ2NDcsMzE3ODMsMzAzNDMsMjA5NzYsMjQ4MjIsMjkwMDQsMjYxNzksMjQxNDAsMjQ2NTMsMzU4NTQsMjg3ODQsMjUzODEsMzY3NDUsMjQ1MDks''@;'; put 'put ''MjQ2NzQsMzQ1MTYsMjIyMzgsMjc1ODUsMjQ3MjQsMjQ5MzUsMjEzMjEsMjQ4MDAsMjYyMTQsMzYxNTksMzEyMjksMjAyNTAsMjg5MDUsMjc3MTksMzU3NjMsMzU4MjYsMzI0NzIsMzM2MzYsMjYxMjcsMjMxMzAsMzk3NDYsMjc5ODUsMjgxNTEsMzU5MDUsMjc5NjMsMjAyNDksMjg3NzksMzM3''@;'; put 'put ''MTksMjUxMTAsMjQ3ODUsMzg2NjksMzYxMzUsMzEwOTYsMjA5ODcsMjIzMzQsMjI1MjIsMjY0MjYsMzAwNzIsMzEyOTMsMzEyMTUsMzE2MzcsMzE5MzUsMzE5MzYsMzE5MzgsMzE5MzksMzE5NDAsMzE5NDIsMzE5NDUsMzE5NDcsMzE5NTAsMzE5NTEsMzE5NTIsMzE5NTMsMzE5NTQsMzE5NTUs''@;'; put 'put ''MzE5NTYsMzE5NjAsMzE5NjIsMzE5NjMsMzE5NjUsMzE5NjYsMzE5NjksMzE5NzAsMzE5NzEsMzE5NzIsMzE5NzMsMzE5NzQsMzE5NzUsMzE5NzcsMzE5NzgsMzE5NzksMzE5ODAsMzE5ODEsMzE5ODIsMzE5ODQsMzE5ODUsMzE5ODYsMzE5ODcsMzE5ODgsMzE5ODksMzE5OTAsMzE5OTEsMzE5''@;'; put 'put ''OTMsMzE5OTQsMzE5OTYsMzE5OTcsMzE5OTgsMzE5OTksMzJlMywzMjAwMSwzMjAwMiwzMjAwMywzMjAwNCwzMjAwNSwzMjAwNiwzMjAwNywzMjAwOCwzMjAwOSwzMjAxMSwzMjAxMiwzMjAxMywzMjAxNCwzMjAxNSwzMjAxNiwzMjAxNywzMjAxOCwzMjAxOSwzMjAyMCwzMjAyMSwzMjAyMiwz''@;'; put 'put ''MjAyMywzMjAyNCwzMjAyNSwzMjAyNiwzMjAyNywzMjAyOCwzMjAyOSwzMjAzMCwzMjAzMSwzMjAzMywzMjAzNSwzMjAzNiwzMjAzNywzMjAzOCwzMjA0MCwzMjA0MSwzMjA0MiwzMjA0NCwzMjA0NSwzMjA0NiwzMjA0OCwzMjA0OSwzMjA1MCwzMjA1MSwzMjA1MiwzMjA1MywzMjA1NCwzMjkw''@;'; put 'put ''OCwzOTI2OSwzNjg1NywyODYwOCwzNTc0OSw0MDQ4MSwyMzAyMCwzMjQ4OSwzMjUyMSwyMTUxMywyNjQ5NywyNjg0MCwzNjc1MywzMTgyMSwzODU5OCwyMTQ1MCwyNDYxMywzMDE0MiwyNzc2MiwyMTM2MywyMzI0MSwzMjQyMywyNTM4MCwyMDk2MCwzMzAzNCwyNDA0OSwzNDAxNSwyNTIxNiwy''@;'; put 'put ''MDg2NCwyMzM5NSwyMDIzOCwzMTA4NSwyMTA1OCwyNDc2MCwyNzk4MiwyMzQ5MiwyMzQ5MCwzNTc0NSwzNTc2MCwyNjA4MiwyNDUyNCwzODQ2OSwyMjkzMSwzMjQ4NywzMjQyNiwyMjAyNSwyNjU1MSwyMjg0MSwyMDMzOSwyMzQ3OCwyMTE1MiwzMzYyNiwzOTA1MCwzNjE1OCwzMDAwMiwzODA3''@;'; put 'put ''OCwyMDU1MSwzMTI5MiwyMDIxNSwyNjU1MCwzOTU1MCwyMzIzMywyNzUxNiwzMDQxNywyMjM2MiwyMzU3NCwzMTU0NiwzODM4OCwyOTAwNiwyMDg2MCwzMjkzNywzMzM5MiwyMjkwNCwzMjUxNiwzMzU3NSwyNjgxNiwyNjYwNCwzMDg5NywzMDgzOSwyNTMxNSwyNTQ0MSwzMTYxNiwyMDQ2MSwy''@;'; put 'put ''MTA5OCwyMDk0MywzMzYxNiwyNzA5OSwzNzQ5MiwzNjM0MSwzNjE0NSwzNTI2NSwzODE5MCwzMTY2MSwyMDIxNCwzMjA1NSwzMjA1NiwzMjA1NywzMjA1OCwzMjA1OSwzMjA2MCwzMjA2MSwzMjA2MiwzMjA2MywzMjA2NCwzMjA2NSwzMjA2NiwzMjA2NywzMjA2OCwzMjA2OSwzMjA3MCwzMjA3''@;'; put 'put ''MSwzMjA3MiwzMjA3MywzMjA3NCwzMjA3NSwzMjA3NiwzMjA3NywzMjA3OCwzMjA3OSwzMjA4MCwzMjA4MSwzMjA4MiwzMjA4MywzMjA4NCwzMjA4NSwzMjA4NiwzMjA4NywzMjA4OCwzMjA4OSwzMjA5MCwzMjA5MSwzMjA5MiwzMjA5MywzMjA5NCwzMjA5NSwzMjA5NiwzMjA5NywzMjA5OCwz''@;'; put 'put ''MjA5OSwzMjEwMCwzMjEwMSwzMjEwMiwzMjEwMywzMjEwNCwzMjEwNSwzMjEwNiwzMjEwNywzMjEwOCwzMjEwOSwzMjExMSwzMjExMiwzMjExMywzMjExNCwzMjExNSwzMjExNiwzMjExNywzMjExOCwzMjEyMCwzMjEyMSwzMjEyMiwzMjEyMywzMjEyNCwzMjEyNSwzMjEyNiwzMjEyNywzMjEy''@;'; put 'put ''OCwzMjEyOSwzMjEzMCwzMjEzMSwzMjEzMiwzMjEzMywzMjEzNCwzMjEzNSwzMjEzNiwzMjEzNywzMjEzOCwzMjEzOSwzMjE0MCwzMjE0MSwzMjE0MiwzMjE0MywzMjE0NCwzMjE0NSwzMjE0NiwzMjE0NywzMjE0OCwzMjE0OSwzMjE1MCwzMjE1MSwzMjE1MiwyMDU4MSwzMzMyOCwyMTA3Mywz''@;'; put 'put ''OTI3OSwyODE3NiwyODI5MywyODA3MSwyNDMxNCwyMDcyNSwyMzAwNCwyMzU1OCwyNzk3NCwyNzc0MywzMDA4NiwzMzkzMSwyNjcyOCwyMjg3MCwzNTc2MiwyMTI4MCwzNzIzMywzODQ3NywzNDEyMSwyNjg5OCwzMDk3NywyODk2NiwzMzAxNCwyMDEzMiwzNzA2NiwyNzk3NSwzOTU1NiwyMzA0''@;'; put 'put ''NywyMjIwNCwyNTYwNSwzODEyOCwzMDY5OSwyMDM4OSwzMzA1MCwyOTQwOSwzNTI4MiwzOTI5MCwzMjU2NCwzMjQ3OCwyMTExOSwyNTk0NSwzNzIzNywzNjczNSwzNjczOSwyMTQ4MywzMTM4MiwyNTU4MSwyNTUwOSwzMDM0MiwzMTIyNCwzNDkwMywzODQ1NCwyNTEzMCwyMTE2MywzMzQxMCwy''@;'; put 'put ''NjcwOCwyNjQ4MCwyNTQ2MywzMDU3MSwzMTQ2OSwyNzkwNSwzMjQ2NywzNTI5OSwyMjk5MiwyNTEwNiwzNDI0OSwzMzQ0NSwzMDAyOCwyMDUxMSwyMDE3MSwzMDExNywzNTgxOSwyMzYyNiwyNDA2MiwzMTU2MywyNjAyMCwzNzMyOSwyMDE3MCwyNzk0MSwzNTE2NywzMjAzOSwzODE4MiwyMDE2''@;'; put 'put ''NSwzNTg4MCwzNjgyNywzODc3MSwyNjE4NywzMTEwNSwzNjgxNywyODkwOCwyODAyNCwzMjE1MywzMjE1NCwzMjE1NSwzMjE1NiwzMjE1NywzMjE1OCwzMjE1OSwzMjE2MCwzMjE2MSwzMjE2MiwzMjE2MywzMjE2NCwzMjE2NSwzMjE2NywzMjE2OCwzMjE2OSwzMjE3MCwzMjE3MSwzMjE3Miwz''@;'; put 'put ''MjE3MywzMjE3NSwzMjE3NiwzMjE3NywzMjE3OCwzMjE3OSwzMjE4MCwzMjE4MSwzMjE4MiwzMjE4MywzMjE4NCwzMjE4NSwzMjE4NiwzMjE4NywzMjE4OCwzMjE4OSwzMjE5MCwzMjE5MSwzMjE5MiwzMjE5MywzMjE5NCwzMjE5NSwzMjE5NiwzMjE5NywzMjE5OCwzMjE5OSwzMjIwMCwzMjIw''@;'; put 'put ''MSwzMjIwMiwzMjIwMywzMjIwNCwzMjIwNSwzMjIwNiwzMjIwNywzMjIwOCwzMjIwOSwzMjIxMCwzMjIxMSwzMjIxMiwzMjIxMywzMjIxNCwzMjIxNSwzMjIxNiwzMjIxNywzMjIxOCwzMjIxOSwzMjIyMCwzMjIyMSwzMjIyMiwzMjIyMywzMjIyNCwzMjIyNSwzMjIyNiwzMjIyNywzMjIyOCwz''@;'; put 'put ''MjIyOSwzMjIzMCwzMjIzMSwzMjIzMiwzMjIzMywzMjIzNCwzMjIzNSwzMjIzNiwzMjIzNywzMjIzOCwzMjIzOSwzMjI0MCwzMjI0MSwzMjI0MiwzMjI0MywzMjI0NCwzMjI0NSwzMjI0NiwzMjI0NywzMjI0OCwzMjI0OSwzMjI1MCwyMzYxMywyMTE3MCwzMzYwNiwyMDgzNCwzMzU1MCwzMDU1''@;'; put 'put ''NSwyNjIzMCw0MDEyMCwyMDE0MCwyNDc3OCwzMTkzNCwzMTkyMywzMjQ2MywyMDExNywzNTY4NiwyNjIyMywzOTA0OCwzODc0NSwyMjY1OSwyNTk2NCwzODIzNiwyNDQ1MiwzMDE1MywzODc0MiwzMTQ1NSwzMTQ1NCwyMDkyOCwyODg0NywzMTM4NCwyNTU3OCwzMTM1MCwzMjQxNiwyOTU5MCwz''@;'; put 'put ''ODg5MywyMDAzNywyODc5MiwyMDA2MSwzNzIwMiwyMTQxNywyNTkzNywyNjA4NywzMzI3NiwzMzI4NSwyMTY0NiwyMzYwMSwzMDEwNiwzODgxNiwyNTMwNCwyOTQwMSwzMDE0MSwyMzYyMSwzOTU0NSwzMzczOCwyMzYxNiwyMTYzMiwzMDY5NywyMDAzMCwyNzgyMiwzMjg1OCwyNTI5OCwyNTQ1''@;'; put 'put ''NCwyNDA0MCwyMDg1NSwzNjMxNywzNjM4MiwzODE5MSwyMDQ2NSwyMTQ3NywyNDgwNywyODg0NCwyMTA5NSwyNTQyNCw0MDUxNSwyMzA3MSwyMDUxOCwzMDUxOSwyMTM2NywzMjQ4MiwyNTczMywyNTg5OSwyNTIyNSwyNTQ5NiwyMDUwMCwyOTIzNywzNTI3MywyMDkxNSwzNTc3NiwzMjQ3Nywy''@;'; put 'put ''MjM0MywzMzc0MCwzODA1NSwyMDg5MSwyMTUzMSwyMzgwMywzMjI1MSwzMjI1MiwzMjI1MywzMjI1NCwzMjI1NSwzMjI1NiwzMjI1NywzMjI1OCwzMjI1OSwzMjI2MCwzMjI2MSwzMjI2MiwzMjI2MywzMjI2NCwzMjI2NSwzMjI2NiwzMjI2NywzMjI2OCwzMjI2OSwzMjI3MCwzMjI3MSwzMjI3''@;'; put 'put ''MiwzMjI3MywzMjI3NCwzMjI3NSwzMjI3NiwzMjI3NywzMjI3OCwzMjI3OSwzMjI4MCwzMjI4MSwzMjI4MiwzMjI4MywzMjI4NCwzMjI4NSwzMjI4NiwzMjI4NywzMjI4OCwzMjI4OSwzMjI5MCwzMjI5MSwzMjI5MiwzMjI5MywzMjI5NCwzMjI5NSwzMjI5NiwzMjI5NywzMjI5OCwzMjI5OSwz''@;'; put 'put ''MjMwMCwzMjMwMSwzMjMwMiwzMjMwMywzMjMwNCwzMjMwNSwzMjMwNiwzMjMwNywzMjMwOCwzMjMwOSwzMjMxMCwzMjMxMSwzMjMxMiwzMjMxMywzMjMxNCwzMjMxNiwzMjMxNywzMjMxOCwzMjMxOSwzMjMyMCwzMjMyMiwzMjMyMywzMjMyNCwzMjMyNSwzMjMyNiwzMjMyOCwzMjMyOSwzMjMz''@;'; put 'put ''MCwzMjMzMSwzMjMzMiwzMjMzMywzMjMzNCwzMjMzNSwzMjMzNiwzMjMzNywzMjMzOCwzMjMzOSwzMjM0MCwzMjM0MSwzMjM0MiwzMjM0MywzMjM0NCwzMjM0NSwzMjM0NiwzMjM0NywzMjM0OCwzMjM0OSwyMDQyNiwzMTQ1OSwyNzk5NCwzNzA4OSwzOTU2NywyMTg4OCwyMTY1NCwyMTM0NSwy''@;'; put 'put ''MTY3OSwyNDMyMCwyNTU3NywyNjk5OSwyMDk3NSwyNDkzNiwyMTAwMiwyMjU3MCwyMTIwOCwyMjM1MCwzMDczMywzMDQ3NSwyNDI0NywyNDk1MSwzMTk2OCwyNTE3OSwyNTIzOSwyMDEzMCwyODgyMSwzMjc3MSwyNTMzNSwyODkwMCwzODc1MiwyMjM5MSwzMzQ5OSwyNjYwNywyNjg2OSwzMDkz''@;'; put 'put ''MywzOTA2MywzMTE4NSwyMjc3MSwyMTY4MywyMTQ4NywyODIxMiwyMDgxMSwyMTA1MSwyMzQ1OCwzNTgzOCwzMjk0MywyMTgyNywyMjQzOCwyNDY5MSwyMjM1MywyMTU0OSwzMTM1NCwyNDY1NiwyMzM4MCwyNTUxMSwyNTI0OCwyMTQ3NSwyNTE4NywyMzQ5NSwyNjU0MywyMTc0MSwzMTM5MSwz''@;'; put 'put ''MzUxMCwzNzIzOSwyNDIxMSwzNTA0NCwyMjg0MCwyMjQ0NiwyNTM1OCwzNjMyOCwzMzAwNywyMjM1OSwzMTYwNywyMDM5MywyNDU1NSwyMzQ4NSwyNzQ1NCwyMTI4MSwzMTU2OCwyOTM3OCwyNjY5NCwzMDcxOSwzMDUxOCwyNjEwMywyMDkxNywyMDExMSwzMDQyMCwyMzc0MywzMTM5NywzMzkw''@;'; put 'put ''OSwyMjg2MiwzOTc0NSwyMDYwOCwzMjM1MCwzMjM1MSwzMjM1MiwzMjM1MywzMjM1NCwzMjM1NSwzMjM1NiwzMjM1NywzMjM1OCwzMjM1OSwzMjM2MCwzMjM2MSwzMjM2MiwzMjM2MywzMjM2NCwzMjM2NSwzMjM2NiwzMjM2NywzMjM2OCwzMjM2OSwzMjM3MCwzMjM3MSwzMjM3MiwzMjM3Mywz''@;'; put 'put ''MjM3NCwzMjM3NSwzMjM3NiwzMjM3NywzMjM3OCwzMjM3OSwzMjM4MCwzMjM4MSwzMjM4MiwzMjM4MywzMjM4NCwzMjM4NSwzMjM4NywzMjM4OCwzMjM4OSwzMjM5MCwzMjM5MSwzMjM5MiwzMjM5MywzMjM5NCwzMjM5NSwzMjM5NiwzMjM5NywzMjM5OCwzMjM5OSwzMjQwMCwzMjQwMSwzMjQw''@;'; put 'put ''MiwzMjQwMywzMjQwNCwzMjQwNSwzMjQwNiwzMjQwNywzMjQwOCwzMjQwOSwzMjQxMCwzMjQxMiwzMjQxMywzMjQxNCwzMjQzMCwzMjQzNiwzMjQ0MywzMjQ0NCwzMjQ3MCwzMjQ4NCwzMjQ5MiwzMjUwNSwzMjUyMiwzMjUyOCwzMjU0MiwzMjU2NywzMjU2OSwzMjU3MSwzMjU3MiwzMjU3Mywz''@;'; put 'put ''MjU3NCwzMjU3NSwzMjU3NiwzMjU3NywzMjU3OSwzMjU4MiwzMjU4MywzMjU4NCwzMjU4NSwzMjU4NiwzMjU4NywzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MSwzMjU5NCwzMjU5NSwzOTMwNCwyNDg3MSwyODI5MSwyMjM3MiwyNjExOCwyNTQxNCwyMjI1NiwyNTMyNCwyNTE5MywyNDI3NSwzODQy''@;'; put 'put ''MCwyMjQwMywyNTI4OSwyMTg5NSwzNDU5MywzMzA5OCwzNjc3MSwyMTg2MiwzMzcxMywyNjQ2OSwzNjE4MiwzNDAxMywyMzE0NiwyNjYzOSwyNTMxOCwzMTcyNiwzODQxNywyMDg0OCwyODU3MiwzNTg4OCwyNTU5NywzNTI3MiwyNTA0MiwzMjUxOCwyODg2NiwyODM4OSwyOTcwMSwyNzAyOCwy''@;'; put 'put ''OTQzNiwyNDI2NiwzNzA3MCwyNjM5MSwyODAxMCwyNTQzOCwyMTE3MSwyOTI4MiwzMjc2OSwyMDMzMiwyMzAxMywzNzIyNiwyODg4OSwyODA2MSwyMTIwMiwyMDA0OCwzODY0NywzODI1MywzNDE3NCwzMDkyMiwzMjA0NywyMDc2OSwyMjQxOCwyNTc5NCwzMjkwNywzMTg2NywyNzg4MiwyNjg2''@;'; put 'put ''NSwyNjk3NCwyMDkxOSwyMTQwMCwyNjc5MiwyOTMxMyw0MDY1NCwzMTcyOSwyOTQzMiwzMTE2MywyODQzNSwyOTcwMiwyNjQ0NiwzNzMyNCw0MDEwMCwzMTAzNiwzMzY3MywzMzYyMCwyMTUxOSwyNjY0NywyMDAyOSwyMTM4NSwyMTE2OSwzMDc4MiwyMTM4MiwyMTAzMywyMDYxNiwyMDM2Mywy''@;'; put 'put ''MDQzMiwzMjU5OCwzMjYwMSwzMjYwMywzMjYwNCwzMjYwNSwzMjYwNiwzMjYwOCwzMjYxMSwzMjYxMiwzMjYxMywzMjYxNCwzMjYxNSwzMjYxOSwzMjYyMCwzMjYyMSwzMjYyMywzMjYyNCwzMjYyNywzMjYyOSwzMjYzMCwzMjYzMSwzMjYzMiwzMjYzNCwzMjYzNSwzMjYzNiwzMjYzNywzMjYz''@;'; put 'put ''OSwzMjY0MCwzMjY0MiwzMjY0MywzMjY0NCwzMjY0NSwzMjY0NiwzMjY0NywzMjY0OCwzMjY0OSwzMjY1MSwzMjY1MywzMjY1NSwzMjY1NiwzMjY1NywzMjY1OCwzMjY1OSwzMjY2MSwzMjY2MiwzMjY2MywzMjY2NCwzMjY2NSwzMjY2NywzMjY2OCwzMjY3MiwzMjY3NCwzMjY3NSwzMjY3Nywz''@;'; put 'put ''MjY3OCwzMjY4MCwzMjY4MSwzMjY4MiwzMjY4MywzMjY4NCwzMjY4NSwzMjY4NiwzMjY4OSwzMjY5MSwzMjY5MiwzMjY5MywzMjY5NCwzMjY5NSwzMjY5OCwzMjY5OSwzMjcwMiwzMjcwNCwzMjcwNiwzMjcwNywzMjcwOCwzMjcxMCwzMjcxMSwzMjcxMiwzMjcxMywzMjcxNSwzMjcxNywzMjcx''@;'; put 'put ''OSwzMjcyMCwzMjcyMSwzMjcyMiwzMjcyMywzMjcyNiwzMjcyNywzMjcyOSwzMjczMCwzMjczMSwzMjczMiwzMjczMywzMjczNCwzMjczOCwzMjczOSwzMDE3OCwzMTQzNSwzMTg5MCwyNzgxMywzODU4MiwyMTE0NywyOTgyNywyMTczNywyMDQ1NywzMjg1MiwzMzcxNCwzNjgzMCwzODI1Niwy''@;'; put 'put ''NDI2NSwyNDYwNCwyODA2MywyNDA4OCwyNTk0NywzMzA4MCwzODE0MiwyNDY1MSwyODg2MCwzMjQ1MSwzMTkxOCwyMDkzNywyNjc1MywzMTkyMSwzMzM5MSwyMDAwNCwzNjc0MiwzNzMyNywyNjIzOCwyMDE0MiwzNTg0NSwyNTc2OSwzMjg0MiwyMDY5OCwzMDEwMywyOTEzNCwyMzUyNSwzNjc5''@;'; put 'put ''NywyODUxOCwyMDEwMiwyNTczMCwzODI0MywyNDI3OCwyNjAwOSwyMTAxNSwzNTAxMCwyODg3MiwyMTE1NSwyOTQ1NCwyOTc0NywyNjUxOSwzMDk2NywzODY3OCwyMDAyMCwzNzA1MSw0MDE1OCwyODEwNywyMDk1NSwzNjE2MSwyMTUzMywyNTI5NCwyOTYxOCwzMzc3NywzODY0Niw0MDgzNiwz''@;'; put 'put ''ODA4MywyMDI3OCwzMjY2NiwyMDk0MCwyODc4OSwzODUxNywyMzcyNSwzOTA0NiwyMTQ3OCwyMDE5NiwyODMxNiwyOTcwNSwyNzA2MCwzMDgyNywzOTMxMSwzMDA0MSwyMTAxNiwzMDI0NCwyNzk2OSwyNjYxMSwyMDg0NSw0MDg1NywzMjg0MywyMTY1NywzMTU0OCwzMTQyMywzMjc0MCwzMjc0''@;'; put 'put ''MywzMjc0NCwzMjc0NiwzMjc0NywzMjc0OCwzMjc0OSwzMjc1MSwzMjc1NCwzMjc1NiwzMjc1NywzMjc1OCwzMjc1OSwzMjc2MCwzMjc2MSwzMjc2MiwzMjc2NSwzMjc2NiwzMjc2NywzMjc3MCwzMjc3NSwzMjc3NiwzMjc3NywzMjc3OCwzMjc4MiwzMjc4MywzMjc4NSwzMjc4NywzMjc5NCwz''@;'; put 'put ''Mjc5NSwzMjc5NywzMjc5OCwzMjc5OSwzMjgwMSwzMjgwMywzMjgwNCwzMjgxMSwzMjgxMiwzMjgxMywzMjgxNCwzMjgxNSwzMjgxNiwzMjgxOCwzMjgyMCwzMjgyNSwzMjgyNiwzMjgyOCwzMjgzMCwzMjgzMiwzMjgzMywzMjgzNiwzMjgzNywzMjgzOSwzMjg0MCwzMjg0MSwzMjg0NiwzMjg0''@;'; put 'put ''NywzMjg0OCwzMjg0OSwzMjg1MSwzMjg1MywzMjg1NCwzMjg1NSwzMjg1NywzMjg1OSwzMjg2MCwzMjg2MSwzMjg2MiwzMjg2MywzMjg2NCwzMjg2NSwzMjg2NiwzMjg2NywzMjg2OCwzMjg2OSwzMjg3MCwzMjg3MSwzMjg3MiwzMjg3NSwzMjg3NiwzMjg3NywzMjg3OCwzMjg3OSwzMjg4MCwz''@;'; put 'put ''Mjg4MiwzMjg4MywzMjg4NCwzMjg4NSwzMjg4NiwzMjg4NywzMjg4OCwzMjg4OSwzMjg5MCwzMjg5MSwzMjg5MiwzMjg5MywzODUzNCwyMjQwNCwyNTMxNCwzODQ3MSwyNzAwNCwyMzA0NCwyNTYwMiwzMTY5OSwyODQzMSwzODQ3NSwzMzQ0NiwyMTM0NiwzOTA0NSwyNDIwOCwyODgwOSwyNTUy''@;'; put 'put ''MywyMTM0OCwzNDM4Myw0MDA2NSw0MDU5NSwzMDg2MCwzODcwNiwzNjMzNSwzNjE2Miw0MDU3NSwyODUxMCwzMTEwOCwyNDQwNSwzODQ3MCwyNTEzNCwzOTU0MCwyMTUyNSwzODEwOSwyMDM4NywyNjA1MywyMzY1MywyMzY0OSwzMjUzMywzNDM4NSwyNzY5NSwyNDQ1OSwyOTU3NSwyODM4OCwz''@;'; put 'put ''MjUxMSwyMzc4MiwyNTM3MSwyMzQwMiwyODM5MCwyMTM2NSwyMDA4MSwyNTUwNCwzMDA1MywyNTI0OSwzNjcxOCwyMDI2MiwyMDE3NywyNzgxNCwzMjQzOCwzNTc3MCwzMzgyMSwzNDc0NiwzMjU5OSwzNjkyMywzODE3OSwzMTY1NywzOTU4NSwzNTA2NCwzMzg1MywyNzkzMSwzOTU1OCwzMjQ3''@;'; put 'put ''NiwyMjkyMCw0MDYzNSwyOTU5NSwzMDcyMSwzNDQzNCwzOTUzMiwzOTU1NCwyMjA0MywyMTUyNywyMjQ3NSwyMDA4MCw0MDYxNCwyMTMzNCwzNjgwOCwzMzAzMywzMDYxMCwzOTMxNCwzNDU0MiwyODM4NSwzNDA2NywyNjM2NCwyNDkzMCwyODQ1OSwzMjg5NCwzMjg5NywzMjg5OCwzMjkwMSwz''@;'; put 'put ''MjkwNCwzMjkwNiwzMjkwOSwzMjkxMCwzMjkxMSwzMjkxMiwzMjkxMywzMjkxNCwzMjkxNiwzMjkxNywzMjkxOSwzMjkyMSwzMjkyNiwzMjkzMSwzMjkzNCwzMjkzNSwzMjkzNiwzMjk0MCwzMjk0NCwzMjk0NywzMjk0OSwzMjk1MCwzMjk1MiwzMjk1MywzMjk1NSwzMjk2NSwzMjk2NywzMjk2''@;'; put 'put ''OCwzMjk2OSwzMjk3MCwzMjk3MSwzMjk3NSwzMjk3NiwzMjk3NywzMjk3OCwzMjk3OSwzMjk4MCwzMjk4MSwzMjk4NCwzMjk5MSwzMjk5MiwzMjk5NCwzMjk5NSwzMjk5OCwzMzAwNiwzMzAxMywzMzAxNSwzMzAxNywzMzAxOSwzMzAyMiwzMzAyMywzMzAyNCwzMzAyNSwzMzAyNywzMzAyOCwz''@;'; put 'put ''MzAyOSwzMzAzMSwzMzAzMiwzMzAzNSwzMzAzNiwzMzA0NSwzMzA0NywzMzA0OSwzMzA1MSwzMzA1MiwzMzA1MywzMzA1NSwzMzA1NiwzMzA1NywzMzA1OCwzMzA1OSwzMzA2MCwzMzA2MSwzMzA2MiwzMzA2MywzMzA2NCwzMzA2NSwzMzA2NiwzMzA2NywzMzA2OSwzMzA3MCwzMzA3MiwzMzA3''@;'; put 'put ''NSwzMzA3NiwzMzA3NywzMzA3OSwzMzA4MSwzMzA4MiwzMzA4MywzMzA4NCwzMzA4NSwzMzA4NywzNTg4MSwzMzQyNiwzMzU3OSwzMDQ1MCwyNzY2NywyNDUzNywzMzcyNSwyOTQ4MywzMzU0MSwzODE3MCwyNzYxMSwzMDY4MywzODA4NiwyMTM1OSwzMzUzOCwyMDg4MiwyNDEyNSwzNTk4MCwz''@;'; put 'put ''NjE1MiwyMDA0MCwyOTYxMSwyNjUyMiwyNjc1NywzNzIzOCwzODY2NSwyOTAyOCwyNzgwOSwzMDQ3MywyMzE4NiwzODIwOSwyNzU5OSwzMjY1NCwyNjE1MSwyMzUwNCwyMjk2OSwyMzE5NCwzODM3NiwzODM5MSwyMDIwNCwzMzgwNCwzMzk0NSwyNzMwOCwzMDQzMSwzODE5MiwyOTQ2NywyNjc5''@;'; put 'put ''MCwyMzM5MSwzMDUxMSwzNzI3NCwzODc1MywzMTk2NCwzNjg1NSwzNTg2OCwyNDM1NywzMTg1OSwzMTE5MiwzNTI2OSwyNzg1MiwzNDU4OCwyMzQ5NCwyNDEzMCwyNjgyNSwzMDQ5NiwzMjUwMSwyMDg4NSwyMDgxMywyMTE5MywyMzA4MSwzMjUxNywzODc1NCwzMzQ5NSwyNTU1MSwzMDU5Niwz''@;'; put 'put ''NDI1NiwzMTE4NiwyODIxOCwyNDIxNywyMjkzNywzNDA2NSwyODc4MSwyNzY2NSwyNTI3OSwzMDM5OSwyNTkzNSwyNDc1MSwzODM5NywyNjEyNiwzNDcxOSw0MDQ4MywzODEyNSwyMTUxNywyMTYyOSwzNTg4NCwyNTcyMCwzMzA4OCwzMzA4OSwzMzA5MCwzMzA5MSwzMzA5MiwzMzA5MywzMzA5''@;'; put 'put ''NSwzMzA5NywzMzEwMSwzMzEwMiwzMzEwMywzMzEwNiwzMzExMCwzMzExMSwzMzExMiwzMzExNSwzMzExNiwzMzExNywzMzExOCwzMzExOSwzMzEyMSwzMzEyMiwzMzEyMywzMzEyNCwzMzEyNiwzMzEyOCwzMzEzMCwzMzEzMSwzMzEzMiwzMzEzNSwzMzEzOCwzMzEzOSwzMzE0MSwzMzE0Miwz''@;'; put 'put ''MzE0MywzMzE0NCwzMzE1MywzMzE1NSwzMzE1NiwzMzE1NywzMzE1OCwzMzE1OSwzMzE2MSwzMzE2MywzMzE2NCwzMzE2NSwzMzE2NiwzMzE2OCwzMzE3MCwzMzE3MSwzMzE3MiwzMzE3MywzMzE3NCwzMzE3NSwzMzE3NywzMzE3OCwzMzE4MiwzMzE4MywzMzE4NCwzMzE4NSwzMzE4NiwzMzE4''@;'; put 'put ''OCwzMzE4OSwzMzE5MSwzMzE5MywzMzE5NSwzMzE5NiwzMzE5NywzMzE5OCwzMzE5OSwzMzIwMCwzMzIwMSwzMzIwMiwzMzIwNCwzMzIwNSwzMzIwNiwzMzIwNywzMzIwOCwzMzIwOSwzMzIxMiwzMzIxMywzMzIxNCwzMzIxNSwzMzIyMCwzMzIyMSwzMzIyMywzMzIyNCwzMzIyNSwzMzIyNywz''@;'; put 'put ''MzIyOSwzMzIzMCwzMzIzMSwzMzIzMiwzMzIzMywzMzIzNCwzMzIzNSwyNTcyMSwzNDMyMSwyNzE2OSwzMzE4MCwzMDk1MiwyNTcwNSwzOTc2NCwyNTI3MywyNjQxMSwzMzcwNywyMjY5Niw0MDY2NCwyNzgxOSwyODQ0OCwyMzUxOCwzODQ3NiwzNTg1MSwyOTI3OSwyNjU3NiwyNTI4NywyOTI4''@;'; put 'put ''MSwyMDEzNywyMjk4MiwyNzU5NywyMjY3NSwyNjI4NiwyNDE0OSwyMTIxNSwyNDkxNywyNjQwOCwzMDQ0NiwzMDU2NiwyOTI4NywzMTMwMiwyNTM0MywyMTczOCwyMTU4NCwzODA0OCwzNzAyNywyMzA2OCwzMjQzNSwyNzY3MCwyMDAzNSwyMjkwMiwzMjc4NCwyMjg1NiwyMTMzNSwzMDAwNywz''@;'; put 'put ''ODU5MCwyMjIxOCwyNTM3NiwzMzA0MSwyNDcwMCwzODM5MywyODExOCwyMTYwMiwzOTI5NywyMDg2OSwyMzI3MywzMzAyMSwyMjk1OCwzODY3NSwyMDUyMiwyNzg3NywyMzYxMiwyNTMxMSwyMDMyMCwyMTMxMSwzMzE0NywzNjg3MCwyODM0NiwzNDA5MSwyNTI4OCwyNDE4MCwzMDkxMCwyNTc4''@;'; put 'put ''MSwyNTQ2NywyNDU2NSwyMzA2NCwzNzI0Nyw0MDQ3OSwyMzYxNSwyNTQyMywzMjgzNCwyMzQyMSwyMTg3MCwzODIxOCwzODIyMSwyODAzNywyNDc0NCwyNjU5MiwyOTQwNiwyMDk1NywyMzQyNSwzMzIzNiwzMzIzNywzMzIzOCwzMzIzOSwzMzI0MCwzMzI0MSwzMzI0MiwzMzI0MywzMzI0NCwz''@;'; put 'put ''MzI0NSwzMzI0NiwzMzI0NywzMzI0OCwzMzI0OSwzMzI1MCwzMzI1MiwzMzI1MywzMzI1NCwzMzI1NiwzMzI1NywzMzI1OSwzMzI2MiwzMzI2MywzMzI2NCwzMzI2NSwzMzI2NiwzMzI2OSwzMzI3MCwzMzI3MSwzMzI3MiwzMzI3MywzMzI3NCwzMzI3NywzMzI3OSwzMzI4MywzMzI4NywzMzI4''@;'; put 'put ''OCwzMzI4OSwzMzI5MCwzMzI5MSwzMzI5NCwzMzI5NSwzMzI5NywzMzI5OSwzMzMwMSwzMzMwMiwzMzMwMywzMzMwNCwzMzMwNSwzMzMwNiwzMzMwOSwzMzMxMiwzMzMxNiwzMzMxNywzMzMxOCwzMzMxOSwzMzMyMSwzMzMyNiwzMzMzMCwzMzMzOCwzMzM0MCwzMzM0MSwzMzM0MywzMzM0NCwz''@;'; put 'put ''MzM0NSwzMzM0NiwzMzM0NywzMzM0OSwzMzM1MCwzMzM1MiwzMzM1NCwzMzM1NiwzMzM1NywzMzM1OCwzMzM2MCwzMzM2MSwzMzM2MiwzMzM2MywzMzM2NCwzMzM2NSwzMzM2NiwzMzM2NywzMzM2OSwzMzM3MSwzMzM3MiwzMzM3MywzMzM3NCwzMzM3NiwzMzM3NywzMzM3OCwzMzM3OSwzMzM4''@;'; put 'put ''MCwzMzM4MSwzMzM4MiwzMzM4MywzMzM4NSwyNTMxOSwyNzg3MCwyOTI3NSwyNTE5NywzODA2MiwzMjQ0NSwzMzA0MywyNzk4NywyMDg5MiwyNDMyNCwyMjkwMCwyMTE2MiwyNDU5NCwyMjg5OSwyNjI2MiwzNDM4NCwzMDExMSwyNTM4NiwyNTA2MiwzMTk4MywzNTgzNCwyMTczNCwyNzQzMSw0''@;'; put 'put ''MDQ4NSwyNzU3MiwzNDI2MSwyMTU4OSwyMDU5OCwyNzgxMiwyMTg2NiwzNjI3NiwyOTIyOCwyNDA4NSwyNDU5NywyOTc1MCwyNTI5MywyNTQ5MCwyOTI2MCwyNDQ3MiwyODIyNywyNzk2NiwyNTg1NiwyODUwNCwzMDQyNCwzMDkyOCwzMDQ2MCwzMDAzNiwyMTAyOCwyMTQ2NywyMDA1MSwyNDIy''@;'; put 'put ''MiwyNjA0OSwzMjgxMCwzMjk4MiwyNTI0MywyMTYzOCwyMTAzMiwyODg0NiwzNDk1NywzNjMwNSwyNzg3MywyMTYyNCwzMjk4NiwyMjUyMSwzNTA2MCwzNjE4MCwzODUwNiwzNzE5NywyMDMyOSwyNzgwMywyMTk0MywzMDQwNiwzMDc2OCwyNTI1NiwyODkyMSwyODU1OCwyNDQyOSwzNDAyOCwy''@;'; put 'put ''Njg0MiwzMDg0NCwzMTczNSwzMzE5MiwyNjM3OSw0MDUyNywyNTQ0NywzMDg5NiwyMjM4MywzMDczOCwzODcxMywyNTIwOSwyNTI1OSwyMTEyOCwyOTc0OSwyNzYwNywzMzM4NiwzMzM4NywzMzM4OCwzMzM4OSwzMzM5MywzMzM5NywzMzM5OCwzMzM5OSwzMzQwMCwzMzQwMywzMzQwNCwzMzQw''@;'; put 'put ''OCwzMzQwOSwzMzQxMSwzMzQxMywzMzQxNCwzMzQxNSwzMzQxNywzMzQyMCwzMzQyNCwzMzQyNywzMzQyOCwzMzQyOSwzMzQzMCwzMzQzNCwzMzQzNSwzMzQzOCwzMzQ0MCwzMzQ0MiwzMzQ0MywzMzQ0NywzMzQ1OCwzMzQ2MSwzMzQ2MiwzMzQ2NiwzMzQ2NywzMzQ2OCwzMzQ3MSwzMzQ3Miwz''@;'; put 'put ''MzQ3NCwzMzQ3NSwzMzQ3NywzMzQ3OCwzMzQ4MSwzMzQ4OCwzMzQ5NCwzMzQ5NywzMzQ5OCwzMzUwMSwzMzUwNiwzMzUxMSwzMzUxMiwzMzUxMywzMzUxNCwzMzUxNiwzMzUxNywzMzUxOCwzMzUyMCwzMzUyMiwzMzUyMywzMzUyNSwzMzUyNiwzMzUyOCwzMzUzMCwzMzUzMiwzMzUzMywzMzUz''@;'; put 'put ''NCwzMzUzNSwzMzUzNiwzMzU0NiwzMzU0NywzMzU0OSwzMzU1MiwzMzU1NCwzMzU1NSwzMzU1OCwzMzU2MCwzMzU2MSwzMzU2NSwzMzU2NiwzMzU2NywzMzU2OCwzMzU2OSwzMzU3MCwzMzU3MSwzMzU3MiwzMzU3MywzMzU3NCwzMzU3NywzMzU3OCwzMzU4MiwzMzU4NCwzMzU4NiwzMzU5MSwz''@;'; put 'put ''MzU5NSwzMzU5NywyMTg2MCwzMzA4NiwzMDEzMCwzMDM4MiwyMTMwNSwzMDE3NCwyMDczMSwyMzYxNywzNTY5MiwzMTY4NywyMDU1OSwyOTI1NSwzOTU3NSwzOTEyOCwyODQxOCwyOTkyMiwzMTA4MCwyNTczNSwzMDYyOSwyNTM0MCwzOTA1NywzNjEzOSwyMTY5NywzMjg1NiwyMDA1MCwyMjM3''@;'; put 'put ''OCwzMzUyOSwzMzgwNSwyNDE3OSwyMDk3MywyOTk0MiwzNTc4MCwyMzYzMSwyMjM2OSwyNzkwMCwzOTA0NywyMzExMCwzMDc3MiwzOTc0OCwzNjg0MywzMTg5MywyMTA3OCwyNTE2OSwzODEzOCwyMDE2NiwzMzY3MCwzMzg4OSwzMzc2OSwzMzk3MCwyMjQ4NCwyNjQyMCwyMjI3NSwyNjIyMiwy''@;'; put 'put ''ODAwNiwzNTg4OSwyNjMzMywyODY4OSwyNjM5OSwyNzQ1MCwyNjY0NiwyNTExNCwyMjk3MSwxOTk3MSwyMDkzMiwyODQyMiwyNjU3OCwyNzc5MSwyMDg1NCwyNjgyNywyMjg1NSwyNzQ5NSwzMDA1NCwyMzgyMiwzMzA0MCw0MDc4NCwyNjA3MSwzMTA0OCwzMTA0MSwzOTU2OSwzNjIxNSwyMzY4''@;'; put 'put ''MiwyMDA2MiwyMDIyNSwyMTU1MSwyMjg2NSwzMDczMiwyMjEyMCwyNzY2OCwzNjgwNCwyNDMyMywyNzc3MywyNzg3NSwzNTc1NSwyNTQ4OCwzMzU5OCwzMzU5OSwzMzYwMSwzMzYwMiwzMzYwNCwzMzYwNSwzMzYwOCwzMzYxMCwzMzYxMSwzMzYxMiwzMzYxMywzMzYxNCwzMzYxOSwzMzYyMSwz''@;'; put 'put ''MzYyMiwzMzYyMywzMzYyNCwzMzYyNSwzMzYyOSwzMzYzNCwzMzY0OCwzMzY0OSwzMzY1MCwzMzY1MSwzMzY1MiwzMzY1MywzMzY1NCwzMzY1NywzMzY1OCwzMzY2MiwzMzY2MywzMzY2NCwzMzY2NSwzMzY2NiwzMzY2NywzMzY2OCwzMzY3MSwzMzY3MiwzMzY3NCwzMzY3NSwzMzY3NiwzMzY3''@;'; put 'put ''NywzMzY3OSwzMzY4MCwzMzY4MSwzMzY4NCwzMzY4NSwzMzY4NiwzMzY4NywzMzY4OSwzMzY5MCwzMzY5MywzMzY5NSwzMzY5NywzMzY5OCwzMzY5OSwzMzcwMCwzMzcwMSwzMzcwMiwzMzcwMywzMzcwOCwzMzcwOSwzMzcxMCwzMzcxMSwzMzcxNywzMzcyMywzMzcyNiwzMzcyNywzMzczMCwz''@;'; put 'put ''MzczMSwzMzczMiwzMzczNCwzMzczNiwzMzczNywzMzczOSwzMzc0MSwzMzc0MiwzMzc0NCwzMzc0NSwzMzc0NiwzMzc0NywzMzc0OSwzMzc1MSwzMzc1MywzMzc1NCwzMzc1NSwzMzc1OCwzMzc2MiwzMzc2MywzMzc2NCwzMzc2NiwzMzc2NywzMzc2OCwzMzc3MSwzMzc3MiwzMzc3MywyNDY4''@;'; put 'put ''OCwyNzk2NSwyOTMwMSwyNTE5MCwzODAzMCwzODA4NSwyMTMxNSwzNjgwMSwzMTYxNCwyMDE5MSwzNTg3OCwyMDA5NCw0MDY2MCwzODA2NSwzODA2NywyMTA2OSwyODUwOCwzNjk2MywyNzk3MywzNTg5MiwyMjU0NSwyMzg4NCwyNzQyNCwyNzQ2NSwyNjUzOCwyMTU5NSwzMzEwOCwzMjY1Miwy''@;'; put 'put ''MjY4MSwzNDEwMywyNDM3OCwyNTI1MCwyNzIwNywzODIwMSwyNTk3MCwyNDcwOCwyNjcyNSwzMDYzMSwyMDA1MiwyMDM5MiwyNDAzOSwzODgwOCwyNTc3MiwzMjcyOCwyMzc4OSwyMDQzMSwzMTM3MywyMDk5OSwzMzU0MCwxOTk4OCwyNDYyMywzMTM2MywzODA1NCwyMDQwNSwyMDE0NiwzMTIw''@;'; put 'put ''NiwyOTc0OCwyMTIyMCwzMzQ2NSwyNTgxMCwzMTE2NSwyMzUxNywyNzc3NywzODczOCwzNjczMSwyNzY4MiwyMDU0MiwyMTM3NSwyODE2NSwyNTgwNiwyNjIyOCwyNzY5NiwyNDc3MywzOTAzMSwzNTgzMSwyNDE5OCwyOTc1NiwzMTM1MSwzMTE3OSwxOTk5MiwzNzA0MSwyOTY5OSwyNzcxNCwy''@;'; put 'put ''MjIzNCwzNzE5NSwyNzg0NSwzNjIzNSwyMTMwNiwzNDUwMiwyNjM1NCwzNjUyNywyMzYyNCwzOTUzNywyODE5MiwzMzc3NCwzMzc3NSwzMzc3OSwzMzc4MCwzMzc4MSwzMzc4MiwzMzc4MywzMzc4NiwzMzc4NywzMzc4OCwzMzc5MCwzMzc5MSwzMzc5MiwzMzc5NCwzMzc5NywzMzc5OSwzMzgw''@;'; put 'put ''MCwzMzgwMSwzMzgwMiwzMzgwOCwzMzgxMCwzMzgxMSwzMzgxMiwzMzgxMywzMzgxNCwzMzgxNSwzMzgxNywzMzgxOCwzMzgxOSwzMzgyMiwzMzgyMywzMzgyNCwzMzgyNSwzMzgyNiwzMzgyNywzMzgzMywzMzgzNCwzMzgzNSwzMzgzNiwzMzgzNywzMzgzOCwzMzgzOSwzMzg0MCwzMzg0Miwz''@;'; put 'put ''Mzg0MywzMzg0NCwzMzg0NSwzMzg0NiwzMzg0NywzMzg0OSwzMzg1MCwzMzg1MSwzMzg1NCwzMzg1NSwzMzg1NiwzMzg1NywzMzg1OCwzMzg1OSwzMzg2MCwzMzg2MSwzMzg2MywzMzg2NCwzMzg2NSwzMzg2NiwzMzg2NywzMzg2OCwzMzg2OSwzMzg3MCwzMzg3MSwzMzg3MiwzMzg3NCwzMzg3''@;'; put 'put ''NSwzMzg3NiwzMzg3NywzMzg3OCwzMzg4MCwzMzg4NSwzMzg4NiwzMzg4NywzMzg4OCwzMzg5MCwzMzg5MiwzMzg5MywzMzg5NCwzMzg5NSwzMzg5NiwzMzg5OCwzMzkwMiwzMzkwMywzMzkwNCwzMzkwNiwzMzkwOCwzMzkxMSwzMzkxMywzMzkxNSwzMzkxNiwyMTQ2MiwyMzA5NCw0MDg0Mywz''@;'; put 'put ''NjI1OSwyMTQzNSwyMjI4MCwzOTA3OSwyNjQzNSwzNzI3NSwyNzg0OSwyMDg0MCwzMDE1NCwyNTMzMSwyOTM1NiwyMTA0OCwyMTE0OSwzMjU3MCwyODgyMCwzMDI2NCwyMTM2NCw0MDUyMiwyNzA2MywzMDgzMCwzODU5MiwzNTAzMywzMjY3NiwyODk4MiwyOTEyMywyMDg3MywyNjU3OSwyOTky''@;'; put 'put ''NCwyMjc1NiwyNTg4MCwyMjE5OSwzNTc1MywzOTI4NiwyNTIwMCwzMjQ2OSwyNDgyNSwyODkwOSwyMjc2NCwyMDE2MSwyMDE1NCwyNDUyNSwzODg4NywyMDIxOSwzNTc0OCwyMDk5NSwyMjkyMiwzMjQyNywyNTE3MiwyMDE3MywyNjA4NSwyNTEwMiwzMzU5MiwzMzk5MywzMzYzNSwzNDcwMSwy''@;'; put 'put ''OTA3NiwyODM0MiwyMzQ4MSwzMjQ2NiwyMDg4NywyNTU0NSwyNjU4MCwzMjkwNSwzMzU5MywzNDgzNywyMDc1NCwyMzQxOCwyMjkxNCwzNjc4NSwyMDA4MywyNzc0MSwyMDgzNywzNTEwOSwzNjcxOSwzODQ0NiwzNDEyMiwyOTc5MCwzODE2MCwzODM4NCwyODA3MCwzMzUwOSwyNDM2OSwyNTc0''@;'; put 'put ''NiwyNzkyMiwzMzgzMiwzMzEzNCw0MDEzMSwyMjYyMiwzNjE4NywxOTk3NywyMTQ0MSwzMzkxNywzMzkxOCwzMzkxOSwzMzkyMCwzMzkyMSwzMzkyMywzMzkyNCwzMzkyNSwzMzkyNiwzMzkzMCwzMzkzMywzMzkzNSwzMzkzNiwzMzkzNywzMzkzOCwzMzkzOSwzMzk0MCwzMzk0MSwzMzk0Miwz''@;'; put 'put ''Mzk0NCwzMzk0NiwzMzk0NywzMzk0OSwzMzk1MCwzMzk1MSwzMzk1MiwzMzk1NCwzMzk1NSwzMzk1NiwzMzk1NywzMzk1OCwzMzk1OSwzMzk2MCwzMzk2MSwzMzk2MiwzMzk2MywzMzk2NCwzMzk2NSwzMzk2NiwzMzk2OCwzMzk2OSwzMzk3MSwzMzk3MywzMzk3NCwzMzk3NSwzMzk3OSwzMzk4''@;'; put 'put ''MCwzMzk4MiwzMzk4NCwzMzk4NiwzMzk4NywzMzk4OSwzMzk5MCwzMzk5MSwzMzk5MiwzMzk5NSwzMzk5NiwzMzk5OCwzMzk5OSwzNDAwMiwzNDAwNCwzNDAwNSwzNDAwNywzNDAwOCwzNDAwOSwzNDAxMCwzNDAxMSwzNDAxMiwzNDAxNCwzNDAxNywzNDAxOCwzNDAyMCwzNDAyMywzNDAyNCwz''@;'; put 'put ''NDAyNSwzNDAyNiwzNDAyNywzNDAyOSwzNDAzMCwzNDAzMSwzNDAzMywzNDAzNCwzNDAzNSwzNDAzNiwzNDAzNywzNDAzOCwzNDAzOSwzNDA0MCwzNDA0MSwzNDA0MiwzNDA0MywzNDA0NSwzNDA0NiwzNDA0OCwzNDA0OSwzNDA1MCwyMDI1NCwyNTk1NSwyNjcwNSwyMTk3MSwyMDAwNywyNTYy''@;'; put 'put ''MCwzOTU3OCwyNTE5NSwyMzIzNCwyOTc5MSwzMzM5NCwyODA3MywyNjg2MiwyMDcxMSwzMzY3OCwzMDcyMiwyNjQzMiwyMTA0OSwyNzgwMSwzMjQzMywyMDY2NywyMTg2MSwyOTAyMiwzMTU3OSwyNjE5NCwyOTY0MiwzMzUxNSwyNjQ0MSwyMzY2NSwyMTAyNCwyOTA1MywzNDkyMywzODM3OCwz''@;'; put 'put ''ODQ4NSwyNTc5NywzNjE5MywzMzIwMywyMTg5MiwyNzczMywyNTE1OSwzMjU1OCwyMjY3NCwyMDI2MCwyMTgzMCwzNjE3NSwyNjE4OCwxOTk3OCwyMzU3OCwzNTA1OSwyNjc4NiwyNTQyMiwzMTI0NSwyODkwMywzMzQyMSwyMTI0MiwzODkwMiwyMzU2OSwyMTczNiwzNzA0NSwzMjQ2MSwyMjg4''@;'; put 'put ''MiwzNjE3MCwzNDUwMywzMzI5MiwzMzI5MywzNjE5OCwyNTY2OCwyMzU1NiwyNDkxMywyODA0MSwzMTAzOCwzNTc3NCwzMDc3NSwzMDAwMywyMTYyNywyMDI4MCwzNjUyMywyODE0NSwyMzA3MiwzMjQ1MywzMTA3MCwyNzc4NCwyMzQ1NywyMzE1OCwyOTk3OCwzMjk1OCwyNDkxMCwyODE4Mywy''@;'; put 'put ''Mjc2OCwyOTk4MywyOTk4OSwyOTI5OCwyMTMxOSwzMjQ5OSwzNDA1MSwzNDA1MiwzNDA1MywzNDA1NCwzNDA1NSwzNDA1NiwzNDA1NywzNDA1OCwzNDA1OSwzNDA2MSwzNDA2MiwzNDA2MywzNDA2NCwzNDA2NiwzNDA2OCwzNDA2OSwzNDA3MCwzNDA3MiwzNDA3MywzNDA3NSwzNDA3NiwzNDA3''@;'; put 'put ''NywzNDA3OCwzNDA4MCwzNDA4MiwzNDA4MywzNDA4NCwzNDA4NSwzNDA4NiwzNDA4NywzNDA4OCwzNDA4OSwzNDA5MCwzNDA5MywzNDA5NCwzNDA5NSwzNDA5NiwzNDA5NywzNDA5OCwzNDA5OSwzNDEwMCwzNDEwMSwzNDEwMiwzNDExMCwzNDExMSwzNDExMiwzNDExMywzNDExNCwzNDExNiwz''@;'; put 'put ''NDExNywzNDExOCwzNDExOSwzNDEyMywzNDEyNCwzNDEyNSwzNDEyNiwzNDEyNywzNDEyOCwzNDEyOSwzNDEzMCwzNDEzMSwzNDEzMiwzNDEzMywzNDEzNSwzNDEzNiwzNDEzOCwzNDEzOSwzNDE0MCwzNDE0MSwzNDE0MywzNDE0NCwzNDE0NSwzNDE0NiwzNDE0NywzNDE0OSwzNDE1MCwzNDE1''@;'; put 'put ''MSwzNDE1MywzNDE1NCwzNDE1NSwzNDE1NiwzNDE1NywzNDE1OCwzNDE1OSwzNDE2MCwzNDE2MSwzNDE2MywzNDE2NSwzNDE2NiwzNDE2NywzNDE2OCwzNDE3MiwzNDE3MywzNDE3NSwzNDE3NiwzNDE3NywzMDQ2NSwzMDQyNywyMTA5NywzMjk4OCwyMjMwNywyNDA3MiwyMjgzMywyOTQyMiwy''@;'; put 'put ''NjA0NSwyODI4NywzNTc5OSwyMzYwOCwzNDQxNywyMTMxMywzMDcwNywyNTM0MiwyNjEwMiwyMDE2MCwzOTEzNSwzNDQzMiwyMzQ1NCwzNTc4MiwyMTQ5MCwzMDY5MCwyMDM1MSwyMzYzMCwzOTU0MiwyMjk4NywyNDMzNSwzMTAzNCwyMjc2MywxOTk5MCwyNjYyMywyMDEwNywyNTMyNSwzNTQ3''@;'; put 'put ''NSwzNjg5MywyMTE4MywyNjE1OSwyMTk4MCwyMjEyNCwzNjg2NiwyMDE4MSwyMDM2NSwzNzMyMiwzOTI4MCwyNzY2MywyNDA2NiwyNDY0MywyMzQ2MCwzNTI3MCwzNTc5NywyNTkxMCwyNTE2MywzOTMxOCwyMzQzMiwyMzU1MSwyNTQ4MCwyMTgwNiwyMTQ2MywzMDI0NiwyMDg2MSwzNDA5Miwy''@;'; put 'put ''NjUzMCwyNjgwMywyNzUzMCwyNTIzNCwzNjc1NSwyMTQ2MCwzMzI5OCwyODExMywzMDA5NSwyMDA3MCwzNjE3NCwyMzQwOCwyOTA4NywzNDIyMywyNjI1NywyNjMyOSwzMjYyNiwzNDU2MCw0MDY1Myw0MDczNiwyMzY0NiwyNjQxNSwzNjg0OCwyNjY0MSwyNjQ2MywyNTEwMSwzMTQ0NiwyMjY2''@;'; put 'put ''MSwyNDI0NiwyNTk2OCwyODQ2NSwzNDE3OCwzNDE3OSwzNDE4MiwzNDE4NCwzNDE4NSwzNDE4NiwzNDE4NywzNDE4OCwzNDE4OSwzNDE5MCwzNDE5MiwzNDE5MywzNDE5NCwzNDE5NSwzNDE5NiwzNDE5NywzNDE5OCwzNDE5OSwzNDIwMCwzNDIwMSwzNDIwMiwzNDIwNSwzNDIwNiwzNDIwNywz''@;'; put 'put ''NDIwOCwzNDIwOSwzNDIxMCwzNDIxMSwzNDIxMywzNDIxNCwzNDIxNSwzNDIxNywzNDIxOSwzNDIyMCwzNDIyMSwzNDIyNSwzNDIyNiwzNDIyNywzNDIyOCwzNDIyOSwzNDIzMCwzNDIzMiwzNDIzNCwzNDIzNSwzNDIzNiwzNDIzNywzNDIzOCwzNDIzOSwzNDI0MCwzNDI0MiwzNDI0MywzNDI0''@;'; put 'put ''NCwzNDI0NSwzNDI0NiwzNDI0NywzNDI0OCwzNDI1MCwzNDI1MSwzNDI1MiwzNDI1MywzNDI1NCwzNDI1NywzNDI1OCwzNDI2MCwzNDI2MiwzNDI2MywzNDI2NCwzNDI2NSwzNDI2NiwzNDI2NywzNDI2OSwzNDI3MCwzNDI3MSwzNDI3MiwzNDI3MywzNDI3NCwzNDI3NSwzNDI3NywzNDI3OCwz''@;'; put 'put ''NDI3OSwzNDI4MCwzNDI4MiwzNDI4MywzNDI4NCwzNDI4NSwzNDI4NiwzNDI4NywzNDI4OCwzNDI4OSwzNDI5MCwzNDI5MSwzNDI5MiwzNDI5MywzNDI5NCwzNDI5NSwzNDI5NiwyNDY2MSwyMTA0NywzMjc4MSwyNTY4NCwzNDkyOCwyOTk5MywyNDA2OSwyNjY0MywyNTMzMiwzODY4NCwyMTQ1''@;'; put 'put ''MiwyOTI0NSwzNTg0MSwyNzcwMCwzMDU2MSwzMTI0NiwyMTU1MCwzMDYzNiwzOTAzNCwzMzMwOCwzNTgyOCwzMDgwNSwyNjM4OCwyODg2NSwyNjAzMSwyNTc0OSwyMjA3MCwyNDYwNSwzMTE2OSwyMTQ5NiwxOTk5NywyNzUxNSwzMjkwMiwyMzU0NiwyMTk4NywyMjIzNSwyMDI4MiwyMDI4NCwz''@;'; put 'put ''OTI4MiwyNDA1MSwyNjQ5NCwzMjgyNCwyNDU3OCwzOTA0MiwzNjg2NSwyMzQzNSwzNTc3MiwzNTgyOSwyNTYyOCwzMzM2OCwyNTgyMiwyMjAxMywzMzQ4NywzNzIyMSwyMDQzOSwzMjAzMiwzNjg5NSwzMTkwMywyMDcyMywyMjYwOSwyODMzNSwyMzQ4NywzNTc4NSwzMjg5OSwzNzI0MCwzMzk0''@;'; put 'put ''OCwzMTYzOSwzNDQyOSwzODUzOSwzODU0MywzMjQ4NSwzOTYzNSwzMDg2MiwyMzY4MSwzMTMxOSwzNjkzMCwzODU2NywzMTA3MSwyMzM4NSwyNTQzOSwzMTQ5OSwzNDAwMSwyNjc5NywyMTc2NiwzMjU1MywyOTcxMiwzMjAzNCwzODE0NSwyNTE1MiwyMjYwNCwyMDE4MiwyMzQyNywyMjkwNSwy''@;'; put 'put ''MjYxMiwzNDI5NywzNDI5OCwzNDMwMCwzNDMwMSwzNDMwMiwzNDMwNCwzNDMwNSwzNDMwNiwzNDMwNywzNDMwOCwzNDMxMCwzNDMxMSwzNDMxMiwzNDMxMywzNDMxNCwzNDMxNSwzNDMxNiwzNDMxNywzNDMxOCwzNDMxOSwzNDMyMCwzNDMyMiwzNDMyMywzNDMyNCwzNDMyNSwzNDMyNywzNDMy''@;'; put 'put ''OCwzNDMyOSwzNDMzMCwzNDMzMSwzNDMzMiwzNDMzMywzNDMzNCwzNDMzNSwzNDMzNiwzNDMzNywzNDMzOCwzNDMzOSwzNDM0MCwzNDM0MSwzNDM0MiwzNDM0NCwzNDM0NiwzNDM0NywzNDM0OCwzNDM0OSwzNDM1MCwzNDM1MSwzNDM1MiwzNDM1MywzNDM1NCwzNDM1NSwzNDM1NiwzNDM1Nywz''@;'; put 'put ''NDM1OCwzNDM1OSwzNDM2MSwzNDM2MiwzNDM2MywzNDM2NSwzNDM2NiwzNDM2NywzNDM2OCwzNDM2OSwzNDM3MCwzNDM3MSwzNDM3MiwzNDM3MywzNDM3NCwzNDM3NSwzNDM3NiwzNDM3NywzNDM3OCwzNDM3OSwzNDM4MCwzNDM4NiwzNDM4NywzNDM4OSwzNDM5MCwzNDM5MSwzNDM5MiwzNDM5''@;'; put 'put ''MywzNDM5NSwzNDM5NiwzNDM5NywzNDM5OSwzNDQwMCwzNDQwMSwzNDQwMywzNDQwNCwzNDQwNSwzNDQwNiwzNDQwNywzNDQwOCwzNDQwOSwzNDQxMCwyOTU0OSwyNTM3NCwzNjQyNywzNjM2NywzMjk3NCwzMzQ5MiwyNTI2MCwyMTQ4OCwyNzg4OCwzNzIxNCwyMjgyNiwyNDU3NywyNzc2MCwy''@;'; put 'put ''MjM0OSwyNTY3NCwzNjEzOCwzMDI1MSwyODM5MywyMjM2MywyNzI2NCwzMDE5MiwyODUyNSwzNTg4NSwzNTg0OCwyMjM3NCwyNzYzMSwzNDk2MiwzMDg5OSwyNTUwNiwyMTQ5NywyODg0NSwyNzc0OCwyMjYxNiwyNTY0MiwyMjUzMCwyNjg0OCwzMzE3OSwyMTc3NiwzMTk1OCwyMDUwNCwzNjUz''@;'; put 'put ''OCwyODEwOCwzNjI1NSwyODkwNywyNTQ4NywyODA1OSwyODM3MiwzMjQ4NiwzMzc5NiwyNjY5MSwzNjg2NywyODEyMCwzODUxOCwzNTc1MiwyMjg3MSwyOTMwNSwzNDI3NiwzMzE1MCwzMDE0MCwzNTQ2NiwyNjc5OSwyMTA3NiwzNjM4NiwzODE2MSwyNTU1MiwzOTA2NCwzNjQyMCwyMTg4NCwy''@;'; put 'put ''MDMwNywyNjM2NywyMjE1OSwyNDc4OSwyODA1MywyMTA1OSwyMzYyNSwyMjgyNSwyODE1NSwyMjYzNSwzZTQsMjk5ODAsMjQ2ODQsMzMzMDAsMzMwOTQsMjUzNjEsMjY0NjUsMzY4MzQsMzA1MjIsMzYzMzksMzYxNDgsMzgwODEsMjQwODYsMjEzODEsMjE1NDgsMjg4NjcsMzQ0MTMsMzQ0MTUs''@;'; put 'put ''MzQ0MTYsMzQ0MTgsMzQ0MTksMzQ0MjAsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjQsMzQ0MzUsMzQ0MzYsMzQ0MzcsMzQ0MzgsMzQ0MzksMzQ0NDAsMzQ0NDEsMzQ0NDYsMzQ0NDcsMzQ0NDgsMzQ0NDksMzQ0NTAsMzQ0NTIsMzQ0NTQsMzQ0NTUsMzQ0NTYsMzQ0NTcsMzQ0NTgsMzQ0NTksMzQ0''@;'; put 'put ''NjIsMzQ0NjMsMzQ0NjQsMzQ0NjUsMzQ0NjYsMzQ0NjksMzQ0NzAsMzQ0NzUsMzQ0NzcsMzQ0NzgsMzQ0ODIsMzQ0ODMsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTEsMzQ0OTIsMzQ0OTMsMzQ0OTQsMzQ0OTUsMzQ0OTcsMzQ0OTgsMzQ0OTksMzQ1MDEsMzQ1MDQsMzQ1MDgsMzQ1MDksMzQ1MTQs''@;'; put 'put ''MzQ1MTUsMzQ1MTcsMzQ1MTgsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjUsMzQ1MjgsMzQ1MjksMzQ1MzAsMzQ1MzEsMzQ1MzMsMzQ1MzQsMzQ1MzUsMzQ1MzYsMzQ1MzgsMzQ1MzksMzQ1NDAsMzQ1NDMsMzQ1NDksMzQ1NTAsMzQ1NTEsMzQ1NTQsMzQ1NTUsMzQ1NTYsMzQ1NTcsMzQ1NTksMzQ1''@;'; put 'put ''NjEsMzQ1NjQsMzQ1NjUsMzQ1NjYsMzQ1NzEsMzQ1NzIsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzcsMzQ1ODAsMzQ1ODIsMjc3MTIsMjQzMTEsMjA1NzIsMjAxNDEsMjQyMzcsMjU0MDIsMzMzNTEsMzY4OTAsMjY3MDQsMzcyMzAsMzA2NDMsMjE1MTYsMzgxMDgsMjQ0MjAsMzE0NjEsMjY3NDIs''@;'; put 'put ''MjU0MTMsMzE1NzAsMzI0NzksMzAxNzEsMjA1OTksMjUyMzcsMjI4MzYsMzY4NzksMjA5ODQsMzExNzEsMzEzNjEsMjIyNzAsMjQ0NjYsMzY4ODQsMjgwMzQsMjM2NDgsMjIzMDMsMjE1MjAsMjA4MjAsMjgyMzcsMjIyNDIsMjU1MTIsMzkwNTksMzMxNTEsMzQ1ODEsMzUxMTQsMzY4NjQsMjE1''@;'; put 'put ''MzQsMjM2NjMsMzMyMTYsMjUzMDIsMjUxNzYsMzMwNzMsNDA1MDEsMzg0NjQsMzk1MzQsMzk1NDgsMjY5MjUsMjI5NDksMjUyOTksMjE4MjIsMjUzNjYsMjE3MDMsMzQ1MjEsMjc5NjQsMjMwNDMsMjk5MjYsMzQ5NzIsMjc0OTgsMjI4MDYsMzU5MTYsMjQzNjcsMjgyODYsMjk2MDksMzkwMzcs''@;'; put 'put ''MjAwMjQsMjg5MTksMjM0MzYsMzA4NzEsMjU0MDUsMjYyMDIsMzAzNTgsMjQ3NzksMjM0NTEsMjMxMTMsMTk5NzUsMzMxMDksMjc3NTQsMjk1NzksMjAxMjksMjY1MDUsMzI1OTMsMjQ0NDgsMjYxMDYsMjYzOTUsMjQ1MzYsMjI5MTYsMjMwNDEsMzQ1ODUsMzQ1ODcsMzQ1ODksMzQ1OTEsMzQ1''@;'; put 'put ''OTIsMzQ1OTYsMzQ1OTgsMzQ1OTksMzQ2MDAsMzQ2MDIsMzQ2MDMsMzQ2MDQsMzQ2MDUsMzQ2MDcsMzQ2MDgsMzQ2MTAsMzQ2MTEsMzQ2MTMsMzQ2MTQsMzQ2MTYsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjQsMzQ2MjUsMzQ2MjYsMzQ2MjcsMzQ2MjgsMzQ2MjksMzQ2MzAsMzQ2MzQs''@;'; put 'put ''MzQ2MzUsMzQ2MzcsMzQ2MzksMzQ2NDAsMzQ2NDEsMzQ2NDIsMzQ2NDQsMzQ2NDUsMzQ2NDYsMzQ2NDgsMzQ2NTAsMzQ2NTEsMzQ2NTIsMzQ2NTMsMzQ2NTQsMzQ2NTUsMzQ2NTcsMzQ2NTgsMzQ2NjIsMzQ2NjMsMzQ2NjQsMzQ2NjUsMzQ2NjYsMzQ2NjcsMzQ2NjgsMzQ2NjksMzQ2NzEsMzQ2''@;'; put 'put ''NzMsMzQ2NzQsMzQ2NzUsMzQ2NzcsMzQ2NzksMzQ2ODAsMzQ2ODEsMzQ2ODIsMzQ2ODcsMzQ2ODgsMzQ2ODksMzQ2OTIsMzQ2OTQsMzQ2OTUsMzQ2OTcsMzQ2OTgsMzQ3MDAsMzQ3MDIsMzQ3MDMsMzQ3MDQsMzQ3MDUsMzQ3MDYsMzQ3MDgsMzQ3MDksMzQ3MTAsMzQ3MTIsMzQ3MTMsMzQ3MTQs''@;'; put 'put ''MzQ3MTUsMzQ3MTYsMzQ3MTcsMzQ3MTgsMzQ3MjAsMzQ3MjEsMzQ3MjIsMzQ3MjMsMzQ3MjQsMjQwMTMsMjQ0OTQsMjEzNjEsMzg4ODYsMzY4MjksMjY2OTMsMjIyNjAsMjE4MDcsMjQ3OTksMjAwMjYsMjg0OTMsMzI1MDAsMzM0NzksMzM4MDYsMjI5OTYsMjAyNTUsMjAyNjYsMjM2MTQsMzI0''@;'; put 'put ''MjgsMjY0MTAsMzQwNzQsMjE2MTksMzAwMzEsMzI5NjMsMjE4OTAsMzk3NTksMjAzMDEsMjgyMDUsMzU4NTksMjM1NjEsMjQ5NDQsMjEzNTUsMzAyMzksMjgyMDEsMzQ0NDIsMjU5OTEsMzgzOTUsMzI0NDEsMjE1NjMsMzEyODMsMzIwMTAsMzgzODIsMjE5ODUsMzI3MDUsMjk5MzQsMjUzNzMs''@;'; put 'put ''MzQ1ODMsMjgwNjUsMzEzODksMjUxMDUsMjYwMTcsMjEzNTEsMjU1NjksMjc3NzksMjQwNDMsMjE1OTYsMzgwNTYsMjAwNDQsMjc3NDUsMzU4MjAsMjM2MjcsMjYwODAsMzM0MzYsMjY3OTEsMjE1NjYsMjE1NTYsMjc1OTUsMjc0OTQsMjAxMTYsMjU0MTAsMjEzMjAsMzMzMTAsMjAyMzcsMjAz''@;'; put 'put ''OTgsMjIzNjYsMjUwOTgsMzg2NTQsMjYyMTIsMjkyODksMjEyNDcsMjExNTMsMjQ3MzUsMzU4MjMsMjYxMzIsMjkwODEsMjY1MTIsMzUxOTksMzA4MDIsMzA3MTcsMjYyMjQsMjIwNzUsMjE1NjAsMzgxNzcsMjkzMDYsMzQ3MjUsMzQ3MjYsMzQ3MjcsMzQ3MjksMzQ3MzAsMzQ3MzQsMzQ3MzYs''@;'; put 'put ''MzQ3MzcsMzQ3MzgsMzQ3NDAsMzQ3NDIsMzQ3NDMsMzQ3NDQsMzQ3NDUsMzQ3NDcsMzQ3NDgsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NTQsMzQ3NTUsMzQ3NTYsMzQ3NTcsMzQ3NTksMzQ3NjAsMzQ3NjEsMzQ3NjQsMzQ3NjUsMzQ3NjYsMzQ3NjcsMzQ3NjgsMzQ3NzIsMzQ3NzMsMzQ3NzQsMzQ3''@;'; put 'put ''NzUsMzQ3NzYsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODEsMzQ3ODIsMzQ3ODMsMzQ3ODUsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTAsMzQ3OTEsMzQ3OTIsMzQ3OTMsMzQ3OTUsMzQ3OTYsMzQ3OTcsMzQ3OTksMzQ4MDAsMzQ4MDEsMzQ4MDIsMzQ4MDMsMzQ4MDQsMzQ4MDUsMzQ4MDYsMzQ4MDcs''@;'; put 'put ''MzQ4MDgsMzQ4MTAsMzQ4MTEsMzQ4MTIsMzQ4MTMsMzQ4MTUsMzQ4MTYsMzQ4MTcsMzQ4MTgsMzQ4MjAsMzQ4MjEsMzQ4MjIsMzQ4MjMsMzQ4MjQsMzQ4MjUsMzQ4MjcsMzQ4MjgsMzQ4MjksMzQ4MzAsMzQ4MzEsMzQ4MzIsMzQ4MzMsMzQ4MzQsMzQ4MzYsMzQ4MzksMzQ4NDAsMzQ4NDEsMzQ4''@;'; put 'put ''NDIsMzQ4NDQsMzQ4NDUsMzQ4NDYsMzQ4NDcsMzQ4NDgsMzQ4NTEsMzEyMzIsMjQ2ODcsMjQwNzYsMjQ3MTMsMzMxODEsMjI4MDUsMjQ3OTYsMjkwNjAsMjg5MTEsMjgzMzAsMjc3MjgsMjkzMTIsMjcyNjgsMzQ5ODksMjQxMDksMjAwNjQsMjMyMTksMjE5MTYsMzgxMTUsMjc5MjcsMzE5OTUs''@;'; put 'put ''Mzg1NTMsMjUxMDMsMzI0NTQsMzA2MDYsMzQ0MzAsMjEyODMsMzg2ODYsMzY3NTgsMjYyNDcsMjM3NzcsMjAzODQsMjk0MjEsMTk5NzksMjE0MTQsMjI3OTksMjE1MjMsMjU0NzIsMzgxODQsMjA4MDgsMjAxODUsNDAwOTIsMzI0MjAsMjE2ODgsMzYxMzIsMzQ5MDAsMzMzMzUsMzgzODYsMjgw''@;'; put 'put ''NDYsMjQzNTgsMjMyNDQsMjYxNzQsMzg1MDUsMjk2MTYsMjk0ODYsMjE0MzksMzMxNDYsMzkzMDEsMzI2NzMsMjM0NjYsMzg1MTksMzg0ODAsMzI0NDcsMzA0NTYsMjE0MTAsMzgyNjIsMzkzMjEsMzE2NjUsMzUxNDAsMjgyNDgsMjAwNjUsMzI3MjQsMzEwNzcsMzU4MTQsMjQ4MTksMjE3MDks''@;'; put 'put ''MjAxMzksMzkwMzMsMjQwNTUsMjcyMzMsMjA2ODcsMjE1MjEsMzU5MzcsMzM4MzEsMzA4MTMsMzg2NjAsMjEwNjYsMjE3NDIsMjIxNzksMzgxNDQsMjgwNDAsMjM0NzcsMjgxMDIsMjYxOTUsMzQ4NTIsMzQ4NTMsMzQ4NTQsMzQ4NTUsMzQ4NTYsMzQ4NTcsMzQ4NTgsMzQ4NTksMzQ4NjAsMzQ4''@;'; put 'put ''NjEsMzQ4NjIsMzQ4NjMsMzQ4NjQsMzQ4NjUsMzQ4NjcsMzQ4NjgsMzQ4NjksMzQ4NzAsMzQ4NzEsMzQ4NzIsMzQ4NzQsMzQ4NzUsMzQ4NzcsMzQ4NzgsMzQ4NzksMzQ4ODEsMzQ4ODIsMzQ4ODMsMzQ4ODYsMzQ4ODcsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTUsMzQ4OTYs''@;'; put 'put ''MzQ4OTcsMzQ4OTgsMzQ4OTksMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDcsMzQ5MDgsMzQ5MDksMzQ5MTAsMzQ5MTEsMzQ5MTIsMzQ5MTgsMzQ5MTksMzQ5MjIsMzQ5MjUsMzQ5MjcsMzQ5MjksMzQ5MzEsMzQ5MzIsMzQ5MzMsMzQ5MzQsMzQ5MzYsMzQ5MzcsMzQ5MzgsMzQ5MzksMzQ5''@;'; put 'put ''NDAsMzQ5NDQsMzQ5NDcsMzQ5NTAsMzQ5NTEsMzQ5NTMsMzQ5NTQsMzQ5NTYsMzQ5NTgsMzQ5NTksMzQ5NjAsMzQ5NjEsMzQ5NjMsMzQ5NjQsMzQ5NjUsMzQ5NjcsMzQ5NjgsMzQ5NjksMzQ5NzAsMzQ5NzEsMzQ5NzMsMzQ5NzQsMzQ5NzUsMzQ5NzYsMzQ5NzcsMzQ5NzksMzQ5ODEsMzQ5ODIs''@;'; put 'put ''MzQ5ODMsMzQ5ODQsMzQ5ODUsMzQ5ODYsMjM1NjcsMjMzODksMjY2NTcsMzI5MTgsMjE4ODAsMzE1MDUsMjU5MjgsMjY5NjQsMjAxMjMsMjc0NjMsMzQ2MzgsMzg3OTUsMjEzMjcsMjUzNzUsMjU2NTgsMzcwMzQsMjYwMTIsMzI5NjEsMzU4NTYsMjA4ODksMjY4MDAsMjEzNjgsMzQ4MDksMjUw''@;'; put 'put ''MzIsMjc4NDQsMjc4OTksMzU4NzQsMjM2MzMsMzQyMTgsMzM0NTUsMzgxNTYsMjc0MjcsMzY3NjMsMjYwMzIsMjQ1NzEsMjQ1MTUsMjA0NDksMzQ4ODUsMjYxNDMsMzMxMjUsMjk0ODEsMjQ4MjYsMjA4NTIsMjEwMDksMjI0MTEsMjQ0MTgsMzcwMjYsMzQ4OTIsMzcyNjYsMjQxODQsMjY0NDcs''@;'; put 'put ''MjQ2MTUsMjI5OTUsMjA4MDQsMjA5ODIsMzMwMTYsMjEyNTYsMjc3NjksMzg1OTYsMjkwNjYsMjAyNDEsMjA0NjIsMzI2NzAsMjY0MjksMjE5NTcsMzgxNTIsMzExNjgsMzQ5NjYsMzI0ODMsMjI2ODcsMjUxMDAsMzg2NTYsMzQzOTQsMjIwNDAsMzkwMzUsMjQ0NjQsMzU3NjgsMzM5ODgsMzcy''@;'; put 'put ''MDcsMjE0NjUsMjYwOTMsMjQyMDcsMzAwNDQsMjQ2NzYsMzIxMTAsMjMxNjcsMzI0OTAsMzI0OTMsMzY3MTMsMjE5MjcsMjM0NTksMjQ3NDgsMjYwNTksMjk1NzIsMzQ5ODgsMzQ5OTAsMzQ5OTEsMzQ5OTIsMzQ5OTQsMzQ5OTUsMzQ5OTYsMzQ5OTcsMzQ5OTgsMzVlMywzNTAwMSwzNTAwMiwz''@;'; put 'put ''NTAwMywzNTAwNSwzNTAwNiwzNTAwNywzNTAwOCwzNTAxMSwzNTAxMiwzNTAxNSwzNTAxNiwzNTAxOCwzNTAxOSwzNTAyMCwzNTAyMSwzNTAyMywzNTAyNCwzNTAyNSwzNTAyNywzNTAzMCwzNTAzMSwzNTAzNCwzNTAzNSwzNTAzNiwzNTAzNywzNTAzOCwzNTA0MCwzNTA0MSwzNTA0NiwzNTA0''@;'; put 'put ''NywzNTA0OSwzNTA1MCwzNTA1MSwzNTA1MiwzNTA1MywzNTA1NCwzNTA1NSwzNTA1OCwzNTA2MSwzNTA2MiwzNTA2MywzNTA2NiwzNTA2NywzNTA2OSwzNTA3MSwzNTA3MiwzNTA3MywzNTA3NSwzNTA3NiwzNTA3NywzNTA3OCwzNTA3OSwzNTA4MCwzNTA4MSwzNTA4MywzNTA4NCwzNTA4NSwz''@;'; put 'put ''NTA4NiwzNTA4NywzNTA4OSwzNTA5MiwzNTA5MywzNTA5NCwzNTA5NSwzNTA5NiwzNTEwMCwzNTEwMSwzNTEwMiwzNTEwMywzNTEwNCwzNTEwNiwzNTEwNywzNTEwOCwzNTExMCwzNTExMSwzNTExMiwzNTExMywzNTExNiwzNTExNywzNTExOCwzNTExOSwzNTEyMSwzNTEyMiwzNTEyMywzNTEy''@;'; put 'put ''NSwzNTEyNywzNjg3MywzMDMwNywzMDUwNSwzMjQ3NCwzODc3MiwzNDIwMywyMzM5OCwzMTM0OCwzODYzNCwzNDg4MCwyMTE5NSwyOTA3MSwyNDQ5MCwyNjA5MiwzNTgxMCwyMzU0NywzOTUzNSwyNDAzMywyNzUyOSwyNzczOSwzNTc1NywzNTc1OSwzNjg3NCwzNjgwNSwyMTM4NywyNTI3Niw0''@;'; put 'put ''MDQ4Niw0MDQ5MywyMTU2OCwyMDAxMSwzMzQ2OSwyOTI3MywzNDQ2MCwyMzgzMCwzNDkwNSwyODA3OSwzODU5NywyMTcxMywyMDEyMiwzNTc2NiwyODkzNywyMTY5MywzODQwOSwyODg5NSwyODE1MywzMDQxNiwyMDAwNSwzMDc0MCwzNDU3OCwyMzcyMSwyNDMxMCwzNTMyOCwzOTA2OCwzODQx''@;'; put 'put ''NCwyODgxNCwyNzgzOSwyMjg1MiwyNTUxMywzMDUyNCwzNDg5MywyODQzNiwzMzM5NSwyMjU3NiwyOTE0MSwyMTM4OCwzMDc0NiwzODU5MywyMTc2MSwyNDQyMiwyODk3NiwyMzQ3NiwzNTg2NiwzOTU2NCwyNzUyMywyMjgzMCw0MDQ5NSwzMTIwNywyNjQ3MiwyNTE5NiwyMDMzNSwzMDExMywz''@;'; put 'put ''MjY1MCwyNzkxNSwzODQ1MSwyNzY4NywyMDIwOCwzMDE2MiwyMDg1OSwyNjY3OSwyODQ3OCwzNjk5MiwzMzEzNiwyMjkzNCwyOTgxNCwzNTEyOCwzNTEyOSwzNTEzMCwzNTEzMSwzNTEzMiwzNTEzMywzNTEzNCwzNTEzNSwzNTEzNiwzNTEzOCwzNTEzOSwzNTE0MSwzNTE0MiwzNTE0MywzNTE0''@;'; put 'put ''NCwzNTE0NSwzNTE0NiwzNTE0NywzNTE0OCwzNTE0OSwzNTE1MCwzNTE1MSwzNTE1MiwzNTE1MywzNTE1NCwzNTE1NSwzNTE1NiwzNTE1NywzNTE1OCwzNTE1OSwzNTE2MCwzNTE2MSwzNTE2MiwzNTE2MywzNTE2NCwzNTE2NSwzNTE2OCwzNTE2OSwzNTE3MCwzNTE3MSwzNTE3MiwzNTE3Mywz''@;'; put 'put ''NTE3NSwzNTE3NiwzNTE3NywzNTE3OCwzNTE3OSwzNTE4MCwzNTE4MSwzNTE4MiwzNTE4MywzNTE4NCwzNTE4NSwzNTE4NiwzNTE4NywzNTE4OCwzNTE4OSwzNTE5MCwzNTE5MSwzNTE5MiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NywzNTE5OCwzNTIwMCwzNTIwMiwzNTIwNCwzNTIwNSwzNTIw''@;'; put 'put ''NywzNTIwOCwzNTIwOSwzNTIxMCwzNTIxMSwzNTIxMiwzNTIxMywzNTIxNCwzNTIxNSwzNTIxNiwzNTIxNywzNTIxOCwzNTIxOSwzNTIyMCwzNTIyMSwzNTIyMiwzNTIyMywzNTIyNCwzNTIyNSwzNTIyNiwzNTIyNywzNTIyOCwzNTIyOSwzNTIzMCwzNTIzMSwzNTIzMiwzNTIzMywyNTY3MSwy''@;'; put 'put ''MzU5MSwzNjk2NSwzMTM3NywzNTg3NSwyMzAwMiwyMTY3NiwzMzI4MCwzMzY0NywzNTIwMSwzMjc2OCwyNjkyOCwyMjA5NCwzMjgyMiwyOTIzOSwzNzMyNiwyMDkxOCwyMDA2MywzOTAyOSwyNTQ5NCwxOTk5NCwyMTQ5NCwyNjM1NSwzMzA5OSwyMjgxMiwyODA4MiwxOTk2OCwyMjc3NywyMTMw''@;'; put 'put ''NywyNTU1OCwzODEyOSwyMDM4MSwyMDIzNCwzNDkxNSwzOTA1NiwyMjgzOSwzNjk1MSwzMTIyNywyMDIwMiwzMzAwOCwzMDA5NywyNzc3OCwyMzQ1MiwyMzAxNiwyNDQxMywyNjg4NSwzNDQzMywyMDUwNiwyNDA1MCwyMDA1NywzMDY5MSwyMDE5NywzMzQwMiwyNTIzMywyNjEzMSwzNzAwOSwy''@;'; put 'put ''MzY3MywyMDE1OSwyNDQ0MSwzMzIyMiwzNjkyMCwzMjkwMCwzMDEyMywyMDEzNCwzNTAyOCwyNDg0NywyNzU4OSwyNDUxOCwyMDA0MSwzMDQxMCwyODMyMiwzNTgxMSwzNTc1OCwzNTg1MCwzNTc5MywyNDMyMiwzMjc2NCwzMjcxNiwzMjQ2MiwzMzU4OSwzMzY0MywyMjI0MCwyNzU3NSwzODg5''@;'; put 'put ''OSwzODQ1MiwyMzAzNSwyMTUzNSwzODEzNCwyODEzOSwyMzQ5MywzOTI3OCwyMzYwOSwyNDM0MSwzODU0NCwzNTIzNCwzNTIzNSwzNTIzNiwzNTIzNywzNTIzOCwzNTIzOSwzNTI0MCwzNTI0MSwzNTI0MiwzNTI0MywzNTI0NCwzNTI0NSwzNTI0NiwzNTI0NywzNTI0OCwzNTI0OSwzNTI1MCwz''@;'; put 'put ''NTI1MSwzNTI1MiwzNTI1MywzNTI1NCwzNTI1NSwzNTI1NiwzNTI1NywzNTI1OCwzNTI1OSwzNTI2MCwzNTI2MSwzNTI2MiwzNTI2MywzNTI2NCwzNTI2NywzNTI3NywzNTI4MywzNTI4NCwzNTI4NSwzNTI4NywzNTI4OCwzNTI4OSwzNTI5MSwzNTI5MywzNTI5NSwzNTI5NiwzNTI5NywzNTI5''@;'; put 'put ''OCwzNTMwMCwzNTMwMywzNTMwNCwzNTMwNSwzNTMwNiwzNTMwOCwzNTMwOSwzNTMxMCwzNTMxMiwzNTMxMywzNTMxNCwzNTMxNiwzNTMxNywzNTMxOCwzNTMxOSwzNTMyMCwzNTMyMSwzNTMyMiwzNTMyMywzNTMyNCwzNTMyNSwzNTMyNiwzNTMyNywzNTMyOSwzNTMzMCwzNTMzMSwzNTMzMiwz''@;'; put 'put ''NTMzMywzNTMzNCwzNTMzNiwzNTMzNywzNTMzOCwzNTMzOSwzNTM0MCwzNTM0MSwzNTM0MiwzNTM0MywzNTM0NCwzNTM0NSwzNTM0NiwzNTM0NywzNTM0OCwzNTM0OSwzNTM1MCwzNTM1MSwzNTM1MiwzNTM1MywzNTM1NCwzNTM1NSwzNTM1NiwzNTM1NywyMTM2MCwzMzUyMSwyNzE4NSwyMzE1''@;'; put 'put ''Niw0MDU2MCwyNDIxMiwzMjU1MiwzMzcyMSwzMzgyOCwzMzgyOSwzMzYzOSwzNDYzMSwzNjgxNCwzNjE5NCwzMDQwOCwyNDQzMywzOTA2MiwzMDgyOCwyNjE0NCwyMTcyNywyNTMxNywyMDMyMywzMzIxOSwzMDE1MiwyNDI0OCwzODYwNSwzNjM2MiwzNDU1MywyMTY0NywyNzg5MSwyODA0NCwy''@;'; put 'put ''NzcwNCwyNDcwMywyMTE5MSwyOTk5MiwyNDE4OSwyMDI0OCwyNDczNiwyNDU1MSwyMzU4OCwzMDAwMSwzNzAzOCwzODA4MCwyOTM2OSwyNzgzMywyODIxNiwzNzE5MywyNjM3NywyMTQ1MSwyMTQ5MSwyMDMwNSwzNzMyMSwzNTgyNSwyMTQ0OCwyNDE4OCwzNjgwMiwyODEzMiwyMDExMCwzMDQw''@;'; put 'put ''MiwyNzAxNCwzNDM5OCwyNDg1OCwzMzI4NiwyMDMxMywyMDQ0NiwzNjkyNiw0MDA2MCwyNDg0MSwyODE4OSwyODE4MCwzODUzMywyMDEwNCwyMzA4OSwzODYzMiwxOTk4MiwyMzY3OSwzMTE2MSwyMzQzMSwzNTgyMSwzMjcwMSwyOTU3NywyMjQ5NSwzMzQxOSwzNzA1NywyMTUwNSwzNjkzNSwy''@;'; put 'put ''MTk0NywyMzc4NiwyNDQ4MSwyNDg0MCwyNzQ0MiwyOTQyNSwzMjk0NiwzNTQ2NSwzNTM1OCwzNTM1OSwzNTM2MCwzNTM2MSwzNTM2MiwzNTM2MywzNTM2NCwzNTM2NSwzNTM2NiwzNTM2NywzNTM2OCwzNTM2OSwzNTM3MCwzNTM3MSwzNTM3MiwzNTM3MywzNTM3NCwzNTM3NSwzNTM3NiwzNTM3''@;'; put 'put ''NywzNTM3OCwzNTM3OSwzNTM4MCwzNTM4MSwzNTM4MiwzNTM4MywzNTM4NCwzNTM4NSwzNTM4NiwzNTM4NywzNTM4OCwzNTM4OSwzNTM5MSwzNTM5MiwzNTM5MywzNTM5NCwzNTM5NSwzNTM5NiwzNTM5NywzNTM5OCwzNTM5OSwzNTQwMSwzNTQwMiwzNTQwMywzNTQwNCwzNTQwNSwzNTQwNiwz''@;'; put 'put ''NTQwNywzNTQwOCwzNTQwOSwzNTQxMCwzNTQxMSwzNTQxMiwzNTQxMywzNTQxNCwzNTQxNSwzNTQxNiwzNTQxNywzNTQxOCwzNTQxOSwzNTQyMCwzNTQyMSwzNTQyMiwzNTQyMywzNTQyNCwzNTQyNSwzNTQyNiwzNTQyNywzNTQyOCwzNTQyOSwzNTQzMCwzNTQzMSwzNTQzMiwzNTQzMywzNTQz''@;'; put 'put ''NCwzNTQzNSwzNTQzNiwzNTQzNywzNTQzOCwzNTQzOSwzNTQ0MCwzNTQ0MSwzNTQ0MiwzNTQ0MywzNTQ0NCwzNTQ0NSwzNTQ0NiwzNTQ0NywzNTQ0OCwzNTQ1MCwzNTQ1MSwzNTQ1MiwzNTQ1MywzNTQ1NCwzNTQ1NSwzNTQ1NiwyODAyMCwyMzUwNywzNTAyOSwzOTA0NCwzNTk0NywzOTUzMyw0''@;'; put 'put ''MDQ5OSwyODE3MCwyMDkwMCwyMDgwMywyMjQzNSwzNDk0NSwyMTQwNywyNTU4OCwzNjc1NywyMjI1MywyMTU5MiwyMjI3OCwyOTUwMywyODMwNCwzMjUzNiwzNjgyOCwzMzQ4OSwyNDg5NSwyNDYxNiwzODQ5OCwyNjM1MiwzMjQyMiwzNjIzNCwzNjI5MSwzODA1MywyMzczMSwzMTkwOCwyNjM3''@;'; put 'put ''NiwyNDc0MiwzODQwNSwzMjc5MiwyMDExMywzNzA5NSwyMTI0OCwzODUwNCwyMDgwMSwzNjgxNiwzNDE2NCwzNzIxMywyNjE5NywzODkwMSwyMzM4MSwyMTI3NywzMDc3NiwyNjQzNCwyNjY4NSwyMTcwNSwyODc5OCwyMzQ3MiwzNjczMywyMDg3NywyMjMxMiwyMTY4MSwyNTg3NCwyNjI0Miwz''@;'; put 'put ''NjE5MCwzNjE2MywzMzAzOSwzMzkwMCwzNjk3MywzMTk2NywyMDk5MSwzNDI5OSwyNjUzMSwyNjA4OSwyODU3NywzNDQ2OCwzNjQ4MSwyMjEyMiwzNjg5NiwzMDMzOCwyODc5MCwyOTE1NywzNjEzMSwyNTMyMSwyMTAxNywyNzkwMSwzNjE1NiwyNDU5MCwyMjY4NiwyNDk3NCwyNjM2NiwzNjE5''@;'; put 'put ''MiwyNTE2NiwyMTkzOSwyODE5NSwyNjQxMywzNjcxMSwzNTQ1NywzNTQ1OCwzNTQ1OSwzNTQ2MCwzNTQ2MSwzNTQ2MiwzNTQ2MywzNTQ2NCwzNTQ2NywzNTQ2OCwzNTQ2OSwzNTQ3MCwzNTQ3MSwzNTQ3MiwzNTQ3MywzNTQ3NCwzNTQ3NiwzNTQ3NywzNTQ3OCwzNTQ3OSwzNTQ4MCwzNTQ4MSwz''@;'; put 'put ''NTQ4MiwzNTQ4MywzNTQ4NCwzNTQ4NSwzNTQ4NiwzNTQ4NywzNTQ4OCwzNTQ4OSwzNTQ5MCwzNTQ5MSwzNTQ5MiwzNTQ5MywzNTQ5NCwzNTQ5NSwzNTQ5NiwzNTQ5NywzNTQ5OCwzNTQ5OSwzNTUwMCwzNTUwMSwzNTUwMiwzNTUwMywzNTUwNCwzNTUwNSwzNTUwNiwzNTUwNywzNTUwOCwzNTUw''@;'; put 'put ''OSwzNTUxMCwzNTUxMSwzNTUxMiwzNTUxMywzNTUxNCwzNTUxNSwzNTUxNiwzNTUxNywzNTUxOCwzNTUxOSwzNTUyMCwzNTUyMSwzNTUyMiwzNTUyMywzNTUyNCwzNTUyNSwzNTUyNiwzNTUyNywzNTUyOCwzNTUyOSwzNTUzMCwzNTUzMSwzNTUzMiwzNTUzMywzNTUzNCwzNTUzNSwzNTUzNiwz''@;'; put 'put ''NTUzNywzNTUzOCwzNTUzOSwzNTU0MCwzNTU0MSwzNTU0MiwzNTU0MywzNTU0NCwzNTU0NSwzNTU0NiwzNTU0NywzNTU0OCwzNTU0OSwzNTU1MCwzNTU1MSwzNTU1MiwzNTU1MywzNTU1NCwzNTU1NSwzODExMywzODM5MiwzMDUwNCwyNjYyOSwyNzA0OCwyMTY0MywyMDA0NSwyODg1NiwzNTc4''@;'; put 'put ''NCwyNTY4OCwyNTk5NSwyMzQyOSwzMTM2NCwyMDUzOCwyMzUyOCwzMDY1MSwyNzYxNywzNTQ0OSwzMTg5NiwyNzgzOCwzMDQxNSwyNjAyNSwzNjc1OSwyMzg1MywyMzYzNywzNDM2MCwyNjYzMiwyMTM0NCwyNTExMiwzMTQ0OSwyODI1MSwzMjUwOSwyNzE2NywzMTQ1NiwyNDQzMiwyODQ2Nywy''@;'; put 'put ''NDM1MiwyNTQ4NCwyODA3MiwyNjQ1NCwxOTk3NiwyNDA4MCwzNjEzNCwyMDE4MywzMjk2MCwzMDI2MCwzODU1NiwyNTMwNywyNjE1NywyNTIxNCwyNzgzNiwzNjIxMywyOTAzMSwzMjYxNywyMDgwNiwzMjkwMywyMTQ4NCwzNjk3NCwyNTI0MCwyMTc0NiwzNDU0NCwzNjc2MSwzMjc3MywzODE2''@;'; put 'put ''NywzNDA3MSwzNjgyNSwyNzk5MywyOTY0NSwyNjAxNSwzMDQ5NSwyOTk1NiwzMDc1OSwzMzI3NSwzNjEyNiwzODAyNCwyMDM5MCwyNjUxNywzMDEzNywzNTc4NiwzODY2MywyNTM5MSwzODIxNSwzODQ1MywzMzk3NiwyNTM3OSwzMDUyOSwyNDQ0OSwyOTQyNCwyMDEwNSwyNDU5NiwyNTk3Miwy''@;'; put 'put ''NTMyNywyNzQ5MSwyNTkxOSwzNTU1NiwzNTU1NywzNTU1OCwzNTU1OSwzNTU2MCwzNTU2MSwzNTU2MiwzNTU2MywzNTU2NCwzNTU2NSwzNTU2NiwzNTU2NywzNTU2OCwzNTU2OSwzNTU3MCwzNTU3MSwzNTU3MiwzNTU3MywzNTU3NCwzNTU3NSwzNTU3NiwzNTU3NywzNTU3OCwzNTU3OSwzNTU4''@;'; put 'put ''MCwzNTU4MSwzNTU4MiwzNTU4MywzNTU4NCwzNTU4NSwzNTU4NiwzNTU4NywzNTU4OCwzNTU4OSwzNTU5MCwzNTU5MiwzNTU5MywzNTU5NCwzNTU5NSwzNTU5NiwzNTU5NywzNTU5OCwzNTU5OSwzNTYwMCwzNTYwMSwzNTYwMiwzNTYwMywzNTYwNCwzNTYwNSwzNTYwNiwzNTYwNywzNTYwOCwz''@;'; put 'put ''NTYwOSwzNTYxMCwzNTYxMSwzNTYxMiwzNTYxMywzNTYxNCwzNTYxNSwzNTYxNiwzNTYxNywzNTYxOCwzNTYxOSwzNTYyMCwzNTYyMSwzNTYyMywzNTYyNCwzNTYyNSwzNTYyNiwzNTYyNywzNTYyOCwzNTYyOSwzNTYzMCwzNTYzMSwzNTYzMiwzNTYzMywzNTYzNCwzNTYzNSwzNTYzNiwzNTYz''@;'; put 'put ''NywzNTYzOCwzNTYzOSwzNTY0MCwzNTY0MSwzNTY0MiwzNTY0MywzNTY0NCwzNTY0NSwzNTY0NiwzNTY0NywzNTY0OCwzNTY0OSwzNTY1MCwzNTY1MSwzNTY1MiwzNTY1MywyNDEwMywzMDE1MSwzNzA3MywzNTc3NywzMzQzNywyNjUyNSwyNTkwMywyMTU1MywzNDU4NCwzMDY5MywzMjkzMCwz''@;'; put 'put ''MzAyNiwyNzcxMywyMDA0MywzMjQ1NSwzMjg0NCwzMDQ1MiwyNjg5MywyNzU0MiwyNTE5MSwyMDU0MCwyMDM1NiwyMjMzNiwyNTM1MSwyNzQ5MCwzNjI4NiwyMTQ4MiwyNjA4OCwzMjQ0MCwyNDUzNSwyNTM3MCwyNTUyNywzMzI2NywzMzI2OCwzMjYyMiwyNDA5MiwyMzc2OSwyMTA0NiwyNjIz''@;'; put 'put ''NCwzMTIwOSwzMTI1OCwzNjEzNiwyODgyNSwzMDE2NCwyODM4MiwyNzgzNSwzMTM3OCwyMDAxMywzMDQwNSwyNDU0NCwzODA0NywzNDkzNSwzMjQ1NiwzMTE4MSwzMjk1OSwzNzMyNSwyMDIxMCwyMDI0NywzMzMxMSwyMTYwOCwyNDAzMCwyNzk1NCwzNTc4OCwzMTkwOSwzNjcyNCwzMjkyMCwy''@;'; put 'put ''NDA5MCwyMTY1MCwzMDM4NSwyMzQ0OSwyNjE3MiwzOTU4OCwyOTY2NCwyNjY2NiwzNDUyMywyNjQxNywyOTQ4MiwzNTgzMiwzNTgwMywzNjg4MCwzMTQ4MSwyODg5MSwyOTAzOCwyNTI4NCwzMDYzMywyMjA2NSwyMDAyNywzMzg3OSwyNjYwOSwyMTE2MSwzNDQ5NiwzNjE0MiwzODEzNiwzMTU2''@;'; put 'put ''OSwzNTY1NCwzNTY1NSwzNTY1NiwzNTY1NywzNTY1OCwzNTY1OSwzNTY2MCwzNTY2MSwzNTY2MiwzNTY2MywzNTY2NCwzNTY2NSwzNTY2NiwzNTY2NywzNTY2OCwzNTY2OSwzNTY3MCwzNTY3MSwzNTY3MiwzNTY3MywzNTY3NCwzNTY3NSwzNTY3NiwzNTY3NywzNTY3OCwzNTY3OSwzNTY4MCwz''@;'; put 'put ''NTY4MSwzNTY4MiwzNTY4MywzNTY4NCwzNTY4NSwzNTY4NywzNTY4OCwzNTY4OSwzNTY5MCwzNTY5MSwzNTY5MywzNTY5NCwzNTY5NSwzNTY5NiwzNTY5NywzNTY5OCwzNTY5OSwzNTcwMCwzNTcwMSwzNTcwMiwzNTcwMywzNTcwNCwzNTcwNSwzNTcwNiwzNTcwNywzNTcwOCwzNTcwOSwzNTcx''@;'; put 'put ''MCwzNTcxMSwzNTcxMiwzNTcxMywzNTcxNCwzNTcxNSwzNTcxNiwzNTcxNywzNTcxOCwzNTcxOSwzNTcyMCwzNTcyMSwzNTcyMiwzNTcyMywzNTcyNCwzNTcyNSwzNTcyNiwzNTcyNywzNTcyOCwzNTcyOSwzNTczMCwzNTczMSwzNTczMiwzNTczMywzNTczNCwzNTczNSwzNTczNiwzNTczNywz''@;'; put 'put ''NTczOCwzNTczOSwzNTc0MCwzNTc0MSwzNTc0MiwzNTc0MywzNTc1NiwzNTc2MSwzNTc3MSwzNTc4MywzNTc5MiwzNTgxOCwzNTg0OSwzNTg3MCwyMDMwMywyNzg4MCwzMTA2OSwzOTU0NywyNTIzNSwyOTIyNiwyNTM0MSwxOTk4NywzMDc0MiwzNjcxNiwyNTc3NiwzNjE4NiwzMTY4NiwyNjcy''@;'; put 'put ''OSwyNDE5NiwzNTAxMywyMjkxOCwyNTc1OCwyMjc2NiwyOTM2NiwyNjg5NCwzODE4MSwzNjg2MSwzNjE4NCwyMjM2OCwzMjUxMiwzNTg0NiwyMDkzNCwyNTQxNywyNTMwNSwyMTMzMSwyNjcwMCwyOTczMCwzMzUzNywzNzE5NiwyMTgyOCwzMDUyOCwyODc5NiwyNzk3OCwyMDg1NywyMTY3Miwz''@;'; put 'put ''NjE2NCwyMzAzOSwyODM2MywyODEwMCwyMzM4OCwzMjA0MywyMDE4MCwzMTg2OSwyODM3MSwyMzM3NiwzMzI1OCwyODE3MywyMzM4MywzOTY4MywyNjgzNywzNjM5NCwyMzQ0NywzMjUwOCwyNDYzNSwzMjQzNywzNzA0OSwzNjIwOCwyMjg2MywyNTU0OSwzMTE5OSwzNjI3NSwyMTMzMCwyNjA2''@;'; put 'put ''MywzMTA2MiwzNTc4MSwzODQ1OSwzMjQ1MiwzODA3NSwzMjM4NiwyMjA2OCwzNzI1NywyNjM2OCwzMjYxOCwyMzU2MiwzNjk4MSwyNjE1MiwyNDAzOCwyMDMwNCwyNjU5MCwyMDU3MCwyMDMxNiwyMjM1MiwyNDIzMSw1OTQwOCw1OTQwOSw1OTQxMCw1OTQxMSw1OTQxMiwzNTg5NiwzNTg5Nywz''@;'; put 'put ''NTg5OCwzNTg5OSwzNTkwMCwzNTkwMSwzNTkwMiwzNTkwMywzNTkwNCwzNTkwNiwzNTkwNywzNTkwOCwzNTkwOSwzNTkxMiwzNTkxNCwzNTkxNSwzNTkxNywzNTkxOCwzNTkxOSwzNTkyMCwzNTkyMSwzNTkyMiwzNTkyMywzNTkyNCwzNTkyNiwzNTkyNywzNTkyOCwzNTkyOSwzNTkzMSwzNTkz''@;'; put 'put ''MiwzNTkzMywzNTkzNCwzNTkzNSwzNTkzNiwzNTkzOSwzNTk0MCwzNTk0MSwzNTk0MiwzNTk0MywzNTk0NCwzNTk0NSwzNTk0OCwzNTk0OSwzNTk1MCwzNTk1MSwzNTk1MiwzNTk1MywzNTk1NCwzNTk1NiwzNTk1NywzNTk1OCwzNTk1OSwzNTk2MywzNTk2NCwzNTk2NSwzNTk2NiwzNTk2Nywz''@;'; put 'put ''NTk2OCwzNTk2OSwzNTk3MSwzNTk3MiwzNTk3NCwzNTk3NSwzNTk3NiwzNTk3OSwzNTk4MSwzNTk4MiwzNTk4MywzNTk4NCwzNTk4NSwzNTk4NiwzNTk4NywzNTk4OSwzNTk5MCwzNTk5MSwzNTk5MywzNTk5NCwzNTk5NSwzNTk5NiwzNTk5NywzNTk5OCwzNTk5OSwzNmUzLDM2MDAxLDM2MDAy''@;'; put 'put ''LDM2MDAzLDM2MDA0LDM2MDA1LDM2MDA2LDM2MDA3LDM2MDA4LDM2MDA5LDM2MDEwLDM2MDExLDM2MDEyLDM2MDEzLDIwMTA5LDE5OTgwLDIwODAwLDE5OTg0LDI0MzE5LDIxMzE3LDE5OTg5LDIwMTIwLDE5OTk4LDM5NzMwLDIzNDA0LDIyMTIxLDIwMDA4LDMxMTYyLDIwMDMxLDIxMjY5LDIw''@;'; put 'put ''MDM5LDIyODI5LDI5MjQzLDIxMzU4LDI3NjY0LDIyMjM5LDMyOTk2LDM5MzE5LDI3NjAzLDMwNTkwLDQwNzI3LDIwMDIyLDIwMTI3LDQwNzIwLDIwMDYwLDIwMDczLDIwMTE1LDMzNDE2LDIzMzg3LDIxODY4LDIyMDMxLDIwMTY0LDIxMzg5LDIxNDA1LDIxNDExLDIxNDEzLDIxNDIyLDM4NzU3''@;'; put 'put ''LDM2MTg5LDIxMjc0LDIxNDkzLDIxMjg2LDIxMjk0LDIxMzEwLDM2MTg4LDIxMzUwLDIxMzQ3LDIwOTk0LDIxZTMsMjEwMDYsMjEwMzcsMjEwNDMsMjEwNTUsMjEwNTYsMjEwNjgsMjEwODYsMjEwODksMjEwODQsMzM5NjcsMjExMTcsMjExMjIsMjExMjEsMjExMzYsMjExMzksMjA4NjYsMzI1''@;'; put 'put ''OTYsMjAxNTUsMjAxNjMsMjAxNjksMjAxNjIsMjAyMDAsMjAxOTMsMjAyMDMsMjAxOTAsMjAyNTEsMjAyMTEsMjAyNTgsMjAzMjQsMjAyMTMsMjAyNjEsMjAyNjMsMjAyMzMsMjAyNjcsMjAzMTgsMjAzMjcsMjU5MTIsMjAzMTQsMjAzMTcsMzYwMTQsMzYwMTUsMzYwMTYsMzYwMTcsMzYwMTgs''@;'; put 'put ''MzYwMTksMzYwMjAsMzYwMjEsMzYwMjIsMzYwMjMsMzYwMjQsMzYwMjUsMzYwMjYsMzYwMjcsMzYwMjgsMzYwMjksMzYwMzAsMzYwMzEsMzYwMzIsMzYwMzMsMzYwMzQsMzYwMzUsMzYwMzYsMzYwMzcsMzYwMzgsMzYwMzksMzYwNDAsMzYwNDEsMzYwNDIsMzYwNDMsMzYwNDQsMzYwNDUsMzYw''@;'; put 'put ''NDYsMzYwNDcsMzYwNDgsMzYwNDksMzYwNTAsMzYwNTEsMzYwNTIsMzYwNTMsMzYwNTQsMzYwNTUsMzYwNTYsMzYwNTcsMzYwNTgsMzYwNTksMzYwNjAsMzYwNjEsMzYwNjIsMzYwNjMsMzYwNjQsMzYwNjUsMzYwNjYsMzYwNjcsMzYwNjgsMzYwNjksMzYwNzAsMzYwNzEsMzYwNzIsMzYwNzMs''@;'; put 'put ''MzYwNzQsMzYwNzUsMzYwNzYsMzYwNzcsMzYwNzgsMzYwNzksMzYwODAsMzYwODEsMzYwODIsMzYwODMsMzYwODQsMzYwODUsMzYwODYsMzYwODcsMzYwODgsMzYwODksMzYwOTAsMzYwOTEsMzYwOTIsMzYwOTMsMzYwOTQsMzYwOTUsMzYwOTYsMzYwOTcsMzYwOTgsMzYwOTksMzYxMDAsMzYx''@;'; put 'put ''MDEsMzYxMDIsMzYxMDMsMzYxMDQsMzYxMDUsMzYxMDYsMzYxMDcsMzYxMDgsMzYxMDksMjAzMTksMjAzMTEsMjAyNzQsMjAyODUsMjAzNDIsMjAzNDAsMjAzNjksMjAzNjEsMjAzNTUsMjAzNjcsMjAzNTAsMjAzNDcsMjAzOTQsMjAzNDgsMjAzOTYsMjAzNzIsMjA0NTQsMjA0NTYsMjA0NTgs''@;'; put 'put ''MjA0MjEsMjA0NDIsMjA0NTEsMjA0NDQsMjA0MzMsMjA0NDcsMjA0NzIsMjA1MjEsMjA1NTYsMjA0NjcsMjA1MjQsMjA0OTUsMjA1MjYsMjA1MjUsMjA0NzgsMjA1MDgsMjA0OTIsMjA1MTcsMjA1MjAsMjA2MDYsMjA1NDcsMjA1NjUsMjA1NTIsMjA1NTgsMjA1ODgsMjA2MDMsMjA2NDUsMjA2''@;'; put 'put ''NDcsMjA2NDksMjA2NjYsMjA2OTQsMjA3NDIsMjA3MTcsMjA3MTYsMjA3MTAsMjA3MTgsMjA3NDMsMjA3NDcsMjAxODksMjc3MDksMjAzMTIsMjAzMjUsMjA0MzAsNDA4NjQsMjc3MTgsMzE4NjAsMjA4NDYsMjQwNjEsNDA2NDksMzkzMjAsMjA4NjUsMjI4MDQsMjEyNDEsMjEyNjEsMzUzMzUs''@;'; put 'put ''MjEyNjQsMjA5NzEsMjI4MDksMjA4MjEsMjAxMjgsMjA4MjIsMjAxNDcsMzQ5MjYsMzQ5ODAsMjAxNDksMzMwNDQsMzUwMjYsMzExMDQsMjMzNDgsMzQ4MTksMzI2OTYsMjA5MDcsMjA5MTMsMjA5MjUsMjA5MjQsMzYxMTAsMzYxMTEsMzYxMTIsMzYxMTMsMzYxMTQsMzYxMTUsMzYxMTYsMzYx''@;'; put 'put ''MTcsMzYxMTgsMzYxMTksMzYxMjAsMzYxMjEsMzYxMjIsMzYxMjMsMzYxMjQsMzYxMjgsMzYxNzcsMzYxNzgsMzYxODMsMzYxOTEsMzYxOTcsMzYyMDAsMzYyMDEsMzYyMDIsMzYyMDQsMzYyMDYsMzYyMDcsMzYyMDksMzYyMTAsMzYyMTYsMzYyMTcsMzYyMTgsMzYyMTksMzYyMjAsMzYyMjEs''@;'; put 'put ''MzYyMjIsMzYyMjMsMzYyMjQsMzYyMjYsMzYyMjcsMzYyMzAsMzYyMzEsMzYyMzIsMzYyMzMsMzYyMzYsMzYyMzcsMzYyMzgsMzYyMzksMzYyNDAsMzYyNDIsMzYyNDMsMzYyNDUsMzYyNDYsMzYyNDcsMzYyNDgsMzYyNDksMzYyNTAsMzYyNTEsMzYyNTIsMzYyNTMsMzYyNTQsMzYyNTYsMzYy''@;'; put 'put ''NTcsMzYyNTgsMzYyNjAsMzYyNjEsMzYyNjIsMzYyNjMsMzYyNjQsMzYyNjUsMzYyNjYsMzYyNjcsMzYyNjgsMzYyNjksMzYyNzAsMzYyNzEsMzYyNzIsMzYyNzQsMzYyNzgsMzYyNzksMzYyODEsMzYyODMsMzYyODUsMzYyODgsMzYyODksMzYyOTAsMzYyOTMsMzYyOTUsMzYyOTYsMzYyOTcs''@;'; put 'put ''MzYyOTgsMzYzMDEsMzYzMDQsMzYzMDYsMzYzMDcsMzYzMDgsMjA5MzUsMjA4ODYsMjA4OTgsMjA5MDEsMzU3NDQsMzU3NTAsMzU3NTEsMzU3NTQsMzU3NjQsMzU3NjUsMzU3NjcsMzU3NzgsMzU3NzksMzU3ODcsMzU3OTEsMzU3OTAsMzU3OTQsMzU3OTUsMzU3OTYsMzU3OTgsMzU4MDAsMzU4''@;'; put 'put ''MDEsMzU4MDQsMzU4MDcsMzU4MDgsMzU4MTIsMzU4MTYsMzU4MTcsMzU4MjIsMzU4MjQsMzU4MjcsMzU4MzAsMzU4MzMsMzU4MzYsMzU4MzksMzU4NDAsMzU4NDIsMzU4NDQsMzU4NDcsMzU4NTIsMzU4NTUsMzU4NTcsMzU4NTgsMzU4NjAsMzU4NjEsMzU4NjIsMzU4NjUsMzU4NjcsMzU4NjQs''@;'; put 'put ''MzU4NjksMzU4NzEsMzU4NzIsMzU4NzMsMzU4NzcsMzU4NzksMzU4ODIsMzU4ODMsMzU4ODYsMzU4ODcsMzU4OTAsMzU4OTEsMzU4OTMsMzU4OTQsMjEzNTMsMjEzNzAsMzg0MjksMzg0MzQsMzg0MzMsMzg0NDksMzg0NDIsMzg0NjEsMzg0NjAsMzg0NjYsMzg0NzMsMzg0ODQsMzg0OTUsMzg1''@;'; put 'put ''MDMsMzg1MDgsMzg1MTQsMzg1MTYsMzg1MzYsMzg1NDEsMzg1NTEsMzg1NzYsMzcwMTUsMzcwMTksMzcwMjEsMzcwMTcsMzcwMzYsMzcwMjUsMzcwNDQsMzcwNDMsMzcwNDYsMzcwNTAsMzYzMDksMzYzMTIsMzYzMTMsMzYzMTYsMzYzMjAsMzYzMjEsMzYzMjIsMzYzMjUsMzYzMjYsMzYzMjcs''@;'; put 'put ''MzYzMjksMzYzMzMsMzYzMzQsMzYzMzYsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDIsMzYzNDgsMzYzNTAsMzYzNTEsMzYzNTIsMzYzNTMsMzYzNTQsMzYzNTUsMzYzNTYsMzYzNTgsMzYzNTksMzYzNjAsMzYzNjMsMzYzNjUsMzYzNjYsMzYzNjgsMzYzNjksMzYzNzAsMzYzNzEsMzYzNzMsMzYz''@;'; put 'put ''NzQsMzYzNzUsMzYzNzYsMzYzNzcsMzYzNzgsMzYzNzksMzYzODAsMzYzODQsMzYzODUsMzYzODgsMzYzODksMzYzOTAsMzYzOTEsMzYzOTIsMzYzOTUsMzYzOTcsMzY0MDAsMzY0MDIsMzY0MDMsMzY0MDQsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MTEsMzY0MTIsMzY0MTQsMzY0MTUsMzY0MTks''@;'; put 'put ''MzY0MjEsMzY0MjIsMzY0MjgsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzIsMzY0MzUsMzY0MzYsMzY0MzcsMzY0MzgsMzY0MzksMzY0NDAsMzY0NDIsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDcsMzY0NDgsMzY0NDksMzY0NTAsMzY0NTEsMzY0NTIsMzY0NTMsMzY0NTUsMzY0NTYsMzY0''@;'; put 'put ''NTgsMzY0NTksMzY0NjIsMzY0NjUsMzcwNDgsMzcwNDAsMzcwNzEsMzcwNjEsMzcwNTQsMzcwNzIsMzcwNjAsMzcwNjMsMzcwNzUsMzcwOTQsMzcwOTAsMzcwODQsMzcwNzksMzcwODMsMzcwOTksMzcxMDMsMzcxMTgsMzcxMjQsMzcxNTQsMzcxNTAsMzcxNTUsMzcxNjksMzcxNjcsMzcxNzcs''@;'; put 'put ''MzcxODcsMzcxOTAsMjEwMDUsMjI4NTAsMjExNTQsMjExNjQsMjExNjUsMjExODIsMjE3NTksMjEyMDAsMjEyMDYsMjEyMzIsMjE0NzEsMjkxNjYsMzA2NjksMjQzMDgsMjA5ODEsMjA5ODgsMzk3MjcsMjE0MzAsMjQzMjEsMzAwNDIsMjQwNDcsMjIzNDgsMjI0NDEsMjI0MzMsMjI2NTQsMjI3''@;'; put 'put ''MTYsMjI3MjUsMjI3MzcsMjIzMTMsMjIzMTYsMjIzMTQsMjIzMjMsMjIzMjksMjIzMTgsMjIzMTksMjIzNjQsMjIzMzEsMjIzMzgsMjIzNzcsMjI0MDUsMjIzNzksMjI0MDYsMjIzOTYsMjIzOTUsMjIzNzYsMjIzODEsMjIzOTAsMjIzODcsMjI0NDUsMjI0MzYsMjI0MTIsMjI0NTAsMjI0Nzks''@;'; put 'put ''MjI0MzksMjI0NTIsMjI0MTksMjI0MzIsMjI0ODUsMjI0ODgsMjI0OTAsMjI0ODksMjI0ODIsMjI0NTYsMjI1MTYsMjI1MTEsMjI1MjAsMjI1MDAsMjI0OTMsMzY0NjcsMzY0NjksMzY0NzEsMzY0NzIsMzY0NzMsMzY0NzQsMzY0NzUsMzY0NzcsMzY0NzgsMzY0ODAsMzY0ODIsMzY0ODMsMzY0''@;'; put 'put ''ODQsMzY0ODYsMzY0ODgsMzY0ODksMzY0OTAsMzY0OTEsMzY0OTIsMzY0OTMsMzY0OTQsMzY0OTcsMzY0OTgsMzY0OTksMzY1MDEsMzY1MDIsMzY1MDMsMzY1MDQsMzY1MDUsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTEsMzY1MTIsMzY1MTMsMzY1MTQsMzY1MTUsMzY1MTYsMzY1MTcsMzY1MTgs''@;'; put 'put ''MzY1MTksMzY1MjAsMzY1MjEsMzY1MjIsMzY1MjUsMzY1MjYsMzY1MjgsMzY1MjksMzY1MzEsMzY1MzIsMzY1MzMsMzY1MzQsMzY1MzUsMzY1MzYsMzY1MzcsMzY1MzksMzY1NDAsMzY1NDEsMzY1NDIsMzY1NDMsMzY1NDQsMzY1NDUsMzY1NDYsMzY1NDcsMzY1NDgsMzY1NDksMzY1NTAsMzY1''@;'; put 'put ''NTEsMzY1NTIsMzY1NTMsMzY1NTQsMzY1NTUsMzY1NTYsMzY1NTcsMzY1NTksMzY1NjAsMzY1NjEsMzY1NjIsMzY1NjMsMzY1NjQsMzY1NjUsMzY1NjYsMzY1NjcsMzY1NjgsMzY1NjksMzY1NzAsMzY1NzEsMzY1NzIsMzY1NzMsMzY1NzQsMzY1NzUsMzY1NzYsMzY1NzcsMzY1NzgsMzY1Nzks''@;'; put 'put ''MzY1ODAsMjI1MzksMjI1NDEsMjI1MjUsMjI1MDksMjI1MjgsMjI1NTgsMjI1NTMsMjI1OTYsMjI1NjAsMjI2MjksMjI2MzYsMjI2NTcsMjI2NjUsMjI2ODIsMjI2NTYsMzkzMzYsNDA3MjksMjUwODcsMzM0MDEsMzM0MDUsMzM0MDcsMzM0MjMsMzM0MTgsMzM0NDgsMzM0MTIsMzM0MjIsMzM0''@;'; put 'put ''MjUsMzM0MzEsMzM0MzMsMzM0NTEsMzM0NjQsMzM0NzAsMzM0NTYsMzM0ODAsMzM0ODIsMzM1MDcsMzM0MzIsMzM0NjMsMzM0NTQsMzM0ODMsMzM0ODQsMzM0NzMsMzM0NDksMzM0NjAsMzM0NDEsMzM0NTAsMzM0MzksMzM0NzYsMzM0ODYsMzM0NDQsMzM1MDUsMzM1NDUsMzM1MjcsMzM1MDgs''@;'; put 'put ''MzM1NTEsMzM1NDMsMzM1MDAsMzM1MjQsMzM0OTAsMzM0OTYsMzM1NDgsMzM1MzEsMzM0OTEsMzM1NTMsMzM1NjIsMzM1NDIsMzM1NTYsMzM1NTcsMzM1MDQsMzM0OTMsMzM1NjQsMzM2MTcsMzM2MjcsMzM2MjgsMzM1NDQsMzM2ODIsMzM1OTYsMzM1ODgsMzM1ODUsMzM2OTEsMzM2MzAsMzM1''@;'; put 'put ''ODMsMzM2MTUsMzM2MDcsMzM2MDMsMzM2MzEsMzM2MDAsMzM1NTksMzM2MzIsMzM1ODEsMzM1OTQsMzM1ODcsMzM2MzgsMzM2MzcsMzY1ODEsMzY1ODIsMzY1ODMsMzY1ODQsMzY1ODUsMzY1ODYsMzY1ODcsMzY1ODgsMzY1ODksMzY1OTAsMzY1OTEsMzY1OTIsMzY1OTMsMzY1OTQsMzY1OTUs''@;'; put 'put ''MzY1OTYsMzY1OTcsMzY1OTgsMzY1OTksMzY2MDAsMzY2MDEsMzY2MDIsMzY2MDMsMzY2MDQsMzY2MDUsMzY2MDYsMzY2MDcsMzY2MDgsMzY2MDksMzY2MTAsMzY2MTEsMzY2MTIsMzY2MTMsMzY2MTQsMzY2MTUsMzY2MTYsMzY2MTcsMzY2MTgsMzY2MTksMzY2MjAsMzY2MjEsMzY2MjIsMzY2''@;'; put 'put ''MjMsMzY2MjQsMzY2MjUsMzY2MjYsMzY2MjcsMzY2MjgsMzY2MjksMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzMsMzY2MzQsMzY2MzUsMzY2MzYsMzY2MzcsMzY2MzgsMzY2MzksMzY2NDAsMzY2NDEsMzY2NDIsMzY2NDMsMzY2NDQsMzY2NDUsMzY2NDYsMzY2NDcsMzY2NDgsMzY2NDksMzY2NTAs''@;'; put 'put ''MzY2NTEsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NTUsMzY2NTYsMzY2NTcsMzY2NTgsMzY2NTksMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjQsMzY2NjUsMzY2NjYsMzY2NjcsMzY2NjgsMzY2NjksMzY2NzAsMzY2NzEsMzY2NzIsMzY2NzMsMzY2NzQsMzY2NzUsMzY2NzYsMzM2NDAsMzM1''@;'; put 'put ''NjMsMzM2NDEsMzM2NDQsMzM2NDIsMzM2NDUsMzM2NDYsMzM3MTIsMzM2NTYsMzM3MTUsMzM3MTYsMzM2OTYsMzM3MDYsMzM2ODMsMzM2OTIsMzM2NjksMzM2NjAsMzM3MTgsMzM3MDUsMzM2NjEsMzM3MjAsMzM2NTksMzM2ODgsMzM2OTQsMzM3MDQsMzM3MjIsMzM3MjQsMzM3MjksMzM3OTMs''@;'; put 'put ''MzM3NjUsMzM3NTIsMjI1MzUsMzM4MTYsMzM4MDMsMzM3NTcsMzM3ODksMzM3NTAsMzM4MjAsMzM4NDgsMzM4MDksMzM3OTgsMzM3NDgsMzM3NTksMzM4MDcsMzM3OTUsMzM3ODQsMzM3ODUsMzM3NzAsMzM3MzMsMzM3MjgsMzM4MzAsMzM3NzYsMzM3NjEsMzM4ODQsMzM4NzMsMzM4ODIsMzM4''@;'; put 'put ''ODEsMzM5MDcsMzM5MjcsMzM5MjgsMzM5MTQsMzM5MjksMzM5MTIsMzM4NTIsMzM4NjIsMzM4OTcsMzM5MTAsMzM5MzIsMzM5MzQsMzM4NDEsMzM5MDEsMzM5ODUsMzM5OTcsMzRlMywzNDAyMiwzMzk4MSwzNDAwMywzMzk5NCwzMzk4MywzMzk3OCwzNDAxNiwzMzk1MywzMzk3NywzMzk3Miwz''@;'; put 'put ''Mzk0MywzNDAyMSwzNDAxOSwzNDA2MCwyOTk2NSwzNDEwNCwzNDAzMiwzNDEwNSwzNDA3OSwzNDEwNiwzNjY3NywzNjY3OCwzNjY3OSwzNjY4MCwzNjY4MSwzNjY4MiwzNjY4MywzNjY4NCwzNjY4NSwzNjY4NiwzNjY4NywzNjY4OCwzNjY4OSwzNjY5MCwzNjY5MSwzNjY5MiwzNjY5MywzNjY5''@;'; put 'put ''NCwzNjY5NSwzNjY5NiwzNjY5NywzNjY5OCwzNjY5OSwzNjcwMCwzNjcwMSwzNjcwMiwzNjcwMywzNjcwNCwzNjcwNSwzNjcwNiwzNjcwNywzNjcwOCwzNjcwOSwzNjcxNCwzNjczNiwzNjc0OCwzNjc1NCwzNjc2NSwzNjc2OCwzNjc2OSwzNjc3MCwzNjc3MiwzNjc3MywzNjc3NCwzNjc3NSwz''@;'; put 'put ''Njc3OCwzNjc4MCwzNjc4MSwzNjc4MiwzNjc4MywzNjc4NiwzNjc4NywzNjc4OCwzNjc4OSwzNjc5MSwzNjc5MiwzNjc5NCwzNjc5NSwzNjc5NiwzNjc5OSwzNjgwMCwzNjgwMywzNjgwNiwzNjgwOSwzNjgxMCwzNjgxMSwzNjgxMiwzNjgxMywzNjgxNSwzNjgxOCwzNjgyMiwzNjgyMywzNjgy''@;'; put 'put ''NiwzNjgzMiwzNjgzMywzNjgzNSwzNjgzOSwzNjg0NCwzNjg0NywzNjg0OSwzNjg1MCwzNjg1MiwzNjg1MywzNjg1NCwzNjg1OCwzNjg1OSwzNjg2MCwzNjg2MiwzNjg2MywzNjg3MSwzNjg3MiwzNjg3NiwzNjg3OCwzNjg4MywzNjg4NSwzNjg4OCwzNDEzNCwzNDEwNywzNDA0NywzNDA0NCwz''@;'; put 'put ''NDEzNywzNDEyMCwzNDE1MiwzNDE0OCwzNDE0MiwzNDE3MCwzMDYyNiwzNDExNSwzNDE2MiwzNDE3MSwzNDIxMiwzNDIxNiwzNDE4MywzNDE5MSwzNDE2OSwzNDIyMiwzNDIwNCwzNDE4MSwzNDIzMywzNDIzMSwzNDIyNCwzNDI1OSwzNDI0MSwzNDI2OCwzNDMwMywzNDM0MywzNDMwOSwzNDM0''@;'; put 'put ''NSwzNDMyNiwzNDM2NCwyNDMxOCwyNDMyOCwyMjg0NCwyMjg0OSwzMjgyMywyMjg2OSwyMjg3NCwyMjg3MiwyMTI2MywyMzU4NiwyMzU4OSwyMzU5NiwyMzYwNCwyNTE2NCwyNTE5NCwyNTI0NywyNTI3NSwyNTI5MCwyNTMwNiwyNTMwMywyNTMyNiwyNTM3OCwyNTMzNCwyNTQwMSwyNTQxOSwy''@;'; put 'put ''NTQxMSwyNTUxNywyNTU5MCwyNTQ1NywyNTQ2NiwyNTQ4NiwyNTUyNCwyNTQ1MywyNTUxNiwyNTQ4MiwyNTQ0OSwyNTUxOCwyNTUzMiwyNTU4NiwyNTU5MiwyNTU2OCwyNTU5OSwyNTU0MCwyNTU2NiwyNTU1MCwyNTY4MiwyNTU0MiwyNTUzNCwyNTY2OSwyNTY2NSwyNTYxMSwyNTYyNywyNTYz''@;'; put 'put ''MiwyNTYxMiwyNTYzOCwyNTYzMywyNTY5NCwyNTczMiwyNTcwOSwyNTc1MCwzNjg4OSwzNjg5MiwzNjg5OSwzNjkwMCwzNjkwMSwzNjkwMywzNjkwNCwzNjkwNSwzNjkwNiwzNjkwNywzNjkwOCwzNjkxMiwzNjkxMywzNjkxNCwzNjkxNSwzNjkxNiwzNjkxOSwzNjkyMSwzNjkyMiwzNjkyNSwz''@;'; put 'put ''NjkyNywzNjkyOCwzNjkzMSwzNjkzMywzNjkzNCwzNjkzNiwzNjkzNywzNjkzOCwzNjkzOSwzNjk0MCwzNjk0MiwzNjk0OCwzNjk0OSwzNjk1MCwzNjk1MywzNjk1NCwzNjk1NiwzNjk1NywzNjk1OCwzNjk1OSwzNjk2MCwzNjk2MSwzNjk2NCwzNjk2NiwzNjk2NywzNjk2OSwzNjk3MCwzNjk3''@;'; put 'put ''MSwzNjk3MiwzNjk3NSwzNjk3NiwzNjk3NywzNjk3OCwzNjk3OSwzNjk4MiwzNjk4MywzNjk4NCwzNjk4NSwzNjk4NiwzNjk4NywzNjk4OCwzNjk5MCwzNjk5MywzNjk5NiwzNjk5NywzNjk5OCwzNjk5OSwzNzAwMSwzNzAwMiwzNzAwNCwzNzAwNSwzNzAwNiwzNzAwNywzNzAwOCwzNzAxMCwz''@;'; put 'put ''NzAxMiwzNzAxNCwzNzAxNiwzNzAxOCwzNzAyMCwzNzAyMiwzNzAyMywzNzAyNCwzNzAyOCwzNzAyOSwzNzAzMSwzNzAzMiwzNzAzMywzNzAzNSwzNzAzNywzNzA0MiwzNzA0NywzNzA1MiwzNzA1MywzNzA1NSwzNzA1NiwyNTcyMiwyNTc4MywyNTc4NCwyNTc1MywyNTc4NiwyNTc5MiwyNTgw''@;'; put 'put ''OCwyNTgxNSwyNTgyOCwyNTgyNiwyNTg2NSwyNTg5MywyNTkwMiwyNDMzMSwyNDUzMCwyOTk3NywyNDMzNywyMTM0MywyMTQ4OSwyMTUwMSwyMTQ4MSwyMTQ4MCwyMTQ5OSwyMTUyMiwyMTUyNiwyMTUxMCwyMTU3OSwyMTU4NiwyMTU4NywyMTU4OCwyMTU5MCwyMTU3MSwyMTUzNywyMTU5MSwy''@;'; put 'put ''MTU5MywyMTUzOSwyMTU1NCwyMTYzNCwyMTY1MiwyMTYyMywyMTYxNywyMTYwNCwyMTY1OCwyMTY1OSwyMTYzNiwyMTYyMiwyMTYwNiwyMTY2MSwyMTcxMiwyMTY3NywyMTY5OCwyMTY4NCwyMTcxNCwyMTY3MSwyMTY3MCwyMTcxNSwyMTcxNiwyMTYxOCwyMTY2NywyMTcxNywyMTY5MSwyMTY5''@;'; put 'put ''NSwyMTcwOCwyMTcyMSwyMTcyMiwyMTcyNCwyMTY3MywyMTY3NCwyMTY2OCwyMTcyNSwyMTcxMSwyMTcyNiwyMTc4NywyMTczNSwyMTc5MiwyMTc1NywyMTc4MCwyMTc0NywyMTc5NCwyMTc5NSwyMTc3NSwyMTc3NywyMTc5OSwyMTgwMiwyMTg2MywyMTkwMywyMTk0MSwyMTgzMywyMTg2OSwy''@;'; put 'put ''MTgyNSwyMTg0NSwyMTgyMywyMTg0MCwyMTgyMCwzNzA1OCwzNzA1OSwzNzA2MiwzNzA2NCwzNzA2NSwzNzA2NywzNzA2OCwzNzA2OSwzNzA3NCwzNzA3NiwzNzA3NywzNzA3OCwzNzA4MCwzNzA4MSwzNzA4MiwzNzA4NiwzNzA4NywzNzA4OCwzNzA5MSwzNzA5MiwzNzA5MywzNzA5NywzNzA5''@;'; put 'put ''OCwzNzEwMCwzNzEwMiwzNzEwNCwzNzEwNSwzNzEwNiwzNzEwNywzNzEwOSwzNzExMCwzNzExMSwzNzExMywzNzExNCwzNzExNSwzNzExNiwzNzExOSwzNzEyMCwzNzEyMSwzNzEyMywzNzEyNSwzNzEyNiwzNzEyNywzNzEyOCwzNzEyOSwzNzEzMCwzNzEzMSwzNzEzMiwzNzEzMywzNzEzNCwz''@;'; put 'put ''NzEzNSwzNzEzNiwzNzEzNywzNzEzOCwzNzEzOSwzNzE0MCwzNzE0MSwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0NywzNzE0OCwzNzE0OSwzNzE1MSwzNzE1MiwzNzE1MywzNzE1NiwzNzE1NywzNzE1OCwzNzE1OSwzNzE2MCwzNzE2MSwzNzE2MiwzNzE2MywzNzE2NCwzNzE2NSwzNzE2''@;'; put 'put ''NiwzNzE2OCwzNzE3MCwzNzE3MSwzNzE3MiwzNzE3MywzNzE3NCwzNzE3NSwzNzE3NiwzNzE3OCwzNzE3OSwzNzE4MCwzNzE4MSwzNzE4MiwzNzE4MywzNzE4NCwzNzE4NSwzNzE4NiwzNzE4OCwyMTgxNSwyMTg0NiwyMTg3NywyMTg3OCwyMTg3OSwyMTgxMSwyMTgwOCwyMTg1MiwyMTg5OSwy''@;'; put 'put ''MTk3MCwyMTg5MSwyMTkzNywyMTk0NSwyMTg5NiwyMTg4OSwyMTkxOSwyMTg4NiwyMTk3NCwyMTkwNSwyMTg4MywyMTk4MywyMTk0OSwyMTk1MCwyMTkwOCwyMTkxMywyMTk5NCwyMjAwNywyMTk2MSwyMjA0NywyMTk2OSwyMTk5NSwyMTk5NiwyMTk3MiwyMTk5MCwyMTk4MSwyMTk1NiwyMTk5''@;'; put 'put ''OSwyMTk4OSwyMjAwMiwyMjAwMywyMTk2NCwyMTk2NSwyMTk5MiwyMjAwNSwyMTk4OCwzNjc1NiwyMjA0NiwyMjAyNCwyMjAyOCwyMjAxNywyMjA1MiwyMjA1MSwyMjAxNCwyMjAxNiwyMjA1NSwyMjA2MSwyMjEwNCwyMjA3MywyMjEwMywyMjA2MCwyMjA5MywyMjExNCwyMjEwNSwyMjEwOCwy''@;'; put 'put ''MjA5MiwyMjEwMCwyMjE1MCwyMjExNiwyMjEyOSwyMjEyMywyMjEzOSwyMjE0MCwyMjE0OSwyMjE2MywyMjE5MSwyMjIyOCwyMjIzMSwyMjIzNywyMjI0MSwyMjI2MSwyMjI1MSwyMjI2NSwyMjI3MSwyMjI3NiwyMjI4MiwyMjI4MSwyMjMwMCwyNDA3OSwyNDA4OSwyNDA4NCwyNDA4MSwyNDEx''@;'; put 'put ''MywyNDEyMywyNDEyNCwzNzE4OSwzNzE5MSwzNzE5MiwzNzIwMSwzNzIwMywzNzIwNCwzNzIwNSwzNzIwNiwzNzIwOCwzNzIwOSwzNzIxMSwzNzIxMiwzNzIxNSwzNzIxNiwzNzIyMiwzNzIyMywzNzIyNCwzNzIyNywzNzIyOSwzNzIzNSwzNzI0MiwzNzI0MywzNzI0NCwzNzI0OCwzNzI0OSwz''@;'; put 'put ''NzI1MCwzNzI1MSwzNzI1MiwzNzI1NCwzNzI1NiwzNzI1OCwzNzI2MiwzNzI2MywzNzI2NywzNzI2OCwzNzI2OSwzNzI3MCwzNzI3MSwzNzI3MiwzNzI3MywzNzI3NiwzNzI3NywzNzI3OCwzNzI3OSwzNzI4MCwzNzI4MSwzNzI4NCwzNzI4NSwzNzI4NiwzNzI4NywzNzI4OCwzNzI4OSwzNzI5''@;'; put 'put ''MSwzNzI5MiwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwMywzNzMwNCwzNzMwNSwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMCwzNzMxMSwzNzMxMiwzNzMxMywzNzMxNCwzNzMxNSwzNzMxNiwzNzMxNywzNzMxOCwzNzMyMCwzNzMyMywzNzMyOCwzNzMzMCwzNzMzMSwzNzMzMiwz''@;'; put 'put ''NzMzMywzNzMzNCwzNzMzNSwzNzMzNiwzNzMzNywzNzMzOCwzNzMzOSwzNzM0MSwzNzM0MiwzNzM0MywzNzM0NCwzNzM0NSwzNzM0NiwzNzM0NywzNzM0OCwzNzM0OSwyNDExOSwyNDEzMiwyNDE0OCwyNDE1NSwyNDE1OCwyNDE2MSwyMzY5MiwyMzY3NCwyMzY5MywyMzY5NiwyMzcwMiwyMzY4''@;'; put 'put ''OCwyMzcwNCwyMzcwNSwyMzY5NywyMzcwNiwyMzcwOCwyMzczMywyMzcxNCwyMzc0MSwyMzcyNCwyMzcyMywyMzcyOSwyMzcxNSwyMzc0NSwyMzczNSwyMzc0OCwyMzc2MiwyMzc4MCwyMzc1NSwyMzc4MSwyMzgxMCwyMzgxMSwyMzg0NywyMzg0NiwyMzg1NCwyMzg0NCwyMzgzOCwyMzgxNCwy''@;'; put 'put ''MzgzNSwyMzg5NiwyMzg3MCwyMzg2MCwyMzg2OSwyMzkxNiwyMzg5OSwyMzkxOSwyMzkwMSwyMzkxNSwyMzg4MywyMzg4MiwyMzkxMywyMzkyNCwyMzkzOCwyMzk2MSwyMzk2NSwzNTk1NSwyMzk5MSwyNDAwNSwyNDQzNSwyNDQzOSwyNDQ1MCwyNDQ1NSwyNDQ1NywyNDQ2MCwyNDQ2OSwyNDQ3''@;'; put 'put ''MywyNDQ3NiwyNDQ4OCwyNDQ5MywyNDUwMSwyNDUwOCwzNDkxNCwyNDQxNywyOTM1NywyOTM2MCwyOTM2NCwyOTM2NywyOTM2OCwyOTM3OSwyOTM3NywyOTM5MCwyOTM4OSwyOTM5NCwyOTQxNiwyOTQyMywyOTQxNywyOTQyNiwyOTQyOCwyOTQzMSwyOTQ0MSwyOTQyNywyOTQ0MywyOTQzNCwz''@;'; put 'put ''NzM1MCwzNzM1MSwzNzM1MiwzNzM1MywzNzM1NCwzNzM1NSwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2MiwzNzM2MywzNzM2NCwzNzM2NSwzNzM2NiwzNzM2NywzNzM2OCwzNzM2OSwzNzM3MCwzNzM3MSwzNzM3MiwzNzM3MywzNzM3NCwzNzM3NSwzNzM3NiwzNzM3''@;'; put 'put ''NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM4NywzNzM4OCwzNzM4OSwzNzM5MCwzNzM5MSwzNzM5MiwzNzM5MywzNzM5NCwzNzM5NSwzNzM5NiwzNzM5NywzNzM5OCwzNzM5OSwzNzQwMCwzNzQwMSwzNzQwMiwzNzQwMywzNzQwNCwz''@;'; put 'put ''NzQwNSwzNzQwNiwzNzQwNywzNzQwOCwzNzQwOSwzNzQxMCwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNSwzNzQxNiwzNzQxNywzNzQxOCwzNzQxOSwzNzQyMCwzNzQyMSwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNSwzNzQyNiwzNzQyNywzNzQyOCwzNzQyOSwzNzQzMCwzNzQzMSwzNzQz''@;'; put 'put ''MiwzNzQzMywzNzQzNCwzNzQzNSwzNzQzNiwzNzQzNywzNzQzOCwzNzQzOSwzNzQ0MCwzNzQ0MSwzNzQ0MiwzNzQ0MywzNzQ0NCwzNzQ0NSwyOTQzNSwyOTQ2MywyOTQ1OSwyOTQ3MywyOTQ1MCwyOTQ3MCwyOTQ2OSwyOTQ2MSwyOTQ3NCwyOTQ5NywyOTQ3NywyOTQ4NCwyOTQ5NiwyOTQ4OSwy''@;'; put 'put ''OTUyMCwyOTUxNywyOTUyNywyOTUzNiwyOTU0OCwyOTU1MSwyOTU2NiwzMzMwNywyMjgyMSwzOTE0MywyMjgyMCwyMjc4NiwzOTI2NywzOTI3MSwzOTI3MiwzOTI3MywzOTI3NCwzOTI3NSwzOTI3NiwzOTI4NCwzOTI4NywzOTI5MywzOTI5NiwzOTMwMCwzOTMwMywzOTMwNiwzOTMwOSwzOTMx''@;'; put 'put ''MiwzOTMxMywzOTMxNSwzOTMxNiwzOTMxNywyNDE5MiwyNDIwOSwyNDIwMywyNDIxNCwyNDIyOSwyNDIyNCwyNDI0OSwyNDI0NSwyNDI1NCwyNDI0MywzNjE3OSwyNDI3NCwyNDI3MywyNDI4MywyNDI5NiwyNDI5OCwzMzIxMCwyNDUxNiwyNDUyMSwyNDUzNCwyNDUyNywyNDU3OSwyNDU1OCwy''@;'; put 'put ''NDU4MCwyNDU0NSwyNDU0OCwyNDU3NCwyNDU4MSwyNDU4MiwyNDU1NCwyNDU1NywyNDU2OCwyNDYwMSwyNDYyOSwyNDYxNCwyNDYwMywyNDU5MSwyNDU4OSwyNDYxNywyNDYxOSwyNDU4NiwyNDYzOSwyNDYwOSwyNDY5NiwyNDY5NywyNDY5OSwyNDY5OCwyNDY0MiwzNzQ0NiwzNzQ0NywzNzQ0''@;'; put 'put ''OCwzNzQ0OSwzNzQ1MCwzNzQ1MSwzNzQ1MiwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NiwzNzQ1NywzNzQ1OCwzNzQ1OSwzNzQ2MCwzNzQ2MSwzNzQ2MiwzNzQ2MywzNzQ2NCwzNzQ2NSwzNzQ2NiwzNzQ2NywzNzQ2OCwzNzQ2OSwzNzQ3MCwzNzQ3MSwzNzQ3MiwzNzQ3MywzNzQ3NCwzNzQ3NSwz''@;'; put 'put ''NzQ3NiwzNzQ3NywzNzQ3OCwzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4MiwzNzQ4MywzNzQ4NCwzNzQ4NSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ4OSwzNzQ5MCwzNzQ5MSwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OCwzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMiwzNzUwMywzNzUw''@;'; put 'put ''NCwzNzUwNSwzNzUwNiwzNzUwNywzNzUwOCwzNzUwOSwzNzUxMCwzNzUxMSwzNzUxMiwzNzUxMywzNzUxNCwzNzUxNSwzNzUxNiwzNzUxNywzNzUxOSwzNzUyMCwzNzUyMSwzNzUyMiwzNzUyMywzNzUyNCwzNzUyNSwzNzUyNiwzNzUyNywzNzUyOCwzNzUyOSwzNzUzMCwzNzUzMSwzNzUzMiwz''@;'; put 'put ''NzUzMywzNzUzNCwzNzUzNSwzNzUzNiwzNzUzNywzNzUzOCwzNzUzOSwzNzU0MCwzNzU0MSwzNzU0MiwzNzU0MywyNDY4MiwyNDcwMSwyNDcyNiwyNDczMCwyNDc0OSwyNDczMywyNDcwNywyNDcyMiwyNDcxNiwyNDczMSwyNDgxMiwyNDc2MywyNDc1MywyNDc5NywyNDc5MiwyNDc3NCwyNDc5''@;'; put 'put ''NCwyNDc1NiwyNDg2NCwyNDg3MCwyNDg1MywyNDg2NywyNDgyMCwyNDgzMiwyNDg0NiwyNDg3NSwyNDkwNiwyNDk0OSwyNTAwNCwyNDk4MCwyNDk5OSwyNTAxNSwyNTA0NCwyNTA3NywyNDU0MSwzODU3OSwzODM3NywzODM3OSwzODM4NSwzODM4NywzODM4OSwzODM5MCwzODM5NiwzODM5OCwz''@;'; put 'put ''ODQwMywzODQwNCwzODQwNiwzODQwOCwzODQxMCwzODQxMSwzODQxMiwzODQxMywzODQxNSwzODQxOCwzODQyMSwzODQyMiwzODQyMywzODQyNSwzODQyNiwyMDAxMiwyOTI0NywyNTEwOSwyNzcwMSwyNzczMiwyNzc0MCwyNzcyMiwyNzgxMSwyNzc4MSwyNzc5MiwyNzc5NiwyNzc4OCwyNzc1''@;'; put 'put ''MiwyNzc1MywyNzc2NCwyNzc2NiwyNzc4MiwyNzgxNywyNzg1NiwyNzg2MCwyNzgyMSwyNzg5NSwyNzg5NiwyNzg4OSwyNzg2MywyNzgyNiwyNzg3MiwyNzg2MiwyNzg5OCwyNzg4MywyNzg4NiwyNzgyNSwyNzg1OSwyNzg4NywyNzkwMiwzNzU0NCwzNzU0NSwzNzU0NiwzNzU0NywzNzU0OCwz''@;'; put 'put ''NzU0OSwzNzU1MSwzNzU1MiwzNzU1MywzNzU1NCwzNzU1NSwzNzU1NiwzNzU1NywzNzU1OCwzNzU1OSwzNzU2MCwzNzU2MSwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NiwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MiwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NywzNzU3''@;'; put 'put ''OCwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4MywzNzU4NCwzNzU4NSwzNzU4NiwzNzU4NywzNzU4OCwzNzU4OSwzNzU5MCwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NCwzNzU5NSwzNzU5NiwzNzU5NywzNzU5OCwzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMiwzNzYwMywzNzYwNCwzNzYwNSwz''@;'; put 'put ''NzYwNiwzNzYwNywzNzYwOCwzNzYwOSwzNzYxMCwzNzYxMSwzNzYxMiwzNzYxMywzNzYxNCwzNzYxNSwzNzYxNiwzNzYxNywzNzYxOCwzNzYxOSwzNzYyMCwzNzYyMSwzNzYyMiwzNzYyMywzNzYyNCwzNzYyNSwzNzYyNiwzNzYyNywzNzYyOCwzNzYyOSwzNzYzMCwzNzYzMSwzNzYzMiwzNzYz''@;'; put 'put ''MywzNzYzNCwzNzYzNSwzNzYzNiwzNzYzNywzNzYzOCwzNzYzOSwzNzY0MCwzNzY0MSwyNzk2MSwyNzk0MywyNzkxNiwyNzk3MSwyNzk3NiwyNzkxMSwyNzkwOCwyNzkyOSwyNzkxOCwyNzk0NywyNzk4MSwyNzk1MCwyNzk1NywyNzkzMCwyNzk4MywyNzk4NiwyNzk4OCwyNzk1NSwyODA0OSwy''@;'; put 'put ''ODAxNSwyODA2MiwyODA2NCwyNzk5OCwyODA1MSwyODA1MiwyNzk5NiwyOGUzLDI4MDI4LDI4MDAzLDI4MTg2LDI4MTAzLDI4MTAxLDI4MTI2LDI4MTc0LDI4MDk1LDI4MTI4LDI4MTc3LDI4MTM0LDI4MTI1LDI4MTIxLDI4MTgyLDI4MDc1LDI4MTcyLDI4MDc4LDI4MjAzLDI4MjcwLDI4MjM4''@;'; put 'put ''LDI4MjY3LDI4MzM4LDI4MjU1LDI4Mjk0LDI4MjQzLDI4MjQ0LDI4MjEwLDI4MTk3LDI4MjI4LDI4MzgzLDI4MzM3LDI4MzEyLDI4Mzg0LDI4NDYxLDI4Mzg2LDI4MzI1LDI4MzI3LDI4MzQ5LDI4MzQ3LDI4MzQzLDI4Mzc1LDI4MzQwLDI4MzY3LDI4MzAzLDI4MzU0LDI4MzE5LDI4NTE0LDI4''@;'; put 'put ''NDg2LDI4NDg3LDI4NDUyLDI4NDM3LDI4NDA5LDI4NDYzLDI4NDcwLDI4NDkxLDI4NTMyLDI4NDU4LDI4NDI1LDI4NDU3LDI4NTUzLDI4NTU3LDI4NTU2LDI4NTM2LDI4NTMwLDI4NTQwLDI4NTM4LDI4NjI1LDM3NjQyLDM3NjQzLDM3NjQ0LDM3NjQ1LDM3NjQ2LDM3NjQ3LDM3NjQ4LDM3NjQ5''@;'; put 'put ''LDM3NjUwLDM3NjUxLDM3NjUyLDM3NjUzLDM3NjU0LDM3NjU1LDM3NjU2LDM3NjU3LDM3NjU4LDM3NjU5LDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY0LDM3NjY1LDM3NjY2LDM3NjY3LDM3NjY4LDM3NjY5LDM3NjcwLDM3NjcxLDM3NjcyLDM3NjczLDM3Njc0LDM3Njc1LDM3Njc2LDM3''@;'; put 'put ''Njc3LDM3Njc4LDM3Njc5LDM3NjgwLDM3NjgxLDM3NjgyLDM3NjgzLDM3Njg0LDM3Njg1LDM3Njg2LDM3Njg3LDM3Njg4LDM3Njg5LDM3NjkwLDM3NjkxLDM3NjkyLDM3NjkzLDM3Njk1LDM3Njk2LDM3Njk3LDM3Njk4LDM3Njk5LDM3NzAwLDM3NzAxLDM3NzAyLDM3NzAzLDM3NzA0LDM3NzA1''@;'; put 'put ''LDM3NzA2LDM3NzA3LDM3NzA4LDM3NzA5LDM3NzEwLDM3NzExLDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE1LDM3NzE2LDM3NzE3LDM3NzE4LDM3NzE5LDM3NzIwLDM3NzIxLDM3NzIyLDM3NzIzLDM3NzI0LDM3NzI1LDM3NzI2LDM3NzI3LDM3NzI4LDM3NzI5LDM3NzMwLDM3NzMxLDM3NzMyLDM3''@;'; put 'put ''NzMzLDM3NzM0LDM3NzM1LDM3NzM2LDM3NzM3LDM3NzM5LDI4NjE3LDI4NTgzLDI4NjAxLDI4NTk4LDI4NjEwLDI4NjQxLDI4NjU0LDI4NjM4LDI4NjQwLDI4NjU1LDI4Njk4LDI4NzA3LDI4Njk5LDI4NzI5LDI4NzI1LDI4NzUxLDI4NzY2LDIzNDI0LDIzNDI4LDIzNDQ1LDIzNDQzLDIzNDYx''@;'; put 'put ''LDIzNDgwLDI5OTk5LDM5NTgyLDI1NjUyLDIzNTI0LDIzNTM0LDM1MTIwLDIzNTM2LDM2NDIzLDM1NTkxLDM2NzkwLDM2ODE5LDM2ODIxLDM2ODM3LDM2ODQ2LDM2ODM2LDM2ODQxLDM2ODM4LDM2ODUxLDM2ODQwLDM2ODY5LDM2ODY4LDM2ODc1LDM2OTAyLDM2ODgxLDM2ODc3LDM2ODg2LDM2''@;'; put 'put ''ODk3LDM2OTE3LDM2OTE4LDM2OTA5LDM2OTExLDM2OTMyLDM2OTQ1LDM2OTQ2LDM2OTQ0LDM2OTY4LDM2OTUyLDM2OTYyLDM2OTU1LDI2Mjk3LDM2OTgwLDM2OTg5LDM2OTk0LDM3ZTMsMzY5OTUsMzcwMDMsMjQ0MDAsMjQ0MDcsMjQ0MDYsMjQ0MDgsMjM2MTEsMjE2NzUsMjM2MzIsMjM2NDEs''@;'; put 'put ''MjM0MDksMjM2NTEsMjM2NTQsMzI3MDAsMjQzNjIsMjQzNjEsMjQzNjUsMzMzOTYsMjQzODAsMzk3MzksMjM2NjIsMjI5MTMsMjI5MTUsMjI5MjUsMjI5NTMsMjI5NTQsMjI5NDcsMzc3NDAsMzc3NDEsMzc3NDIsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDYsMzc3NDcsMzc3NDgsMzc3NDksMzc3''@;'; put 'put ''NTAsMzc3NTEsMzc3NTIsMzc3NTMsMzc3NTQsMzc3NTUsMzc3NTYsMzc3NTcsMzc3NTgsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjMsMzc3NjQsMzc3NjUsMzc3NjYsMzc3NjcsMzc3NjgsMzc3NjksMzc3NzAsMzc3NzEsMzc3NzIsMzc3NzMsMzc3NzQsMzc3NzYsMzc3NzcsMzc3Nzgs''@;'; put 'put ''Mzc3NzksMzc3ODAsMzc3ODEsMzc3ODIsMzc3ODMsMzc3ODQsMzc3ODUsMzc3ODYsMzc3ODcsMzc3ODgsMzc3ODksMzc3OTAsMzc3OTEsMzc3OTIsMzc3OTMsMzc3OTQsMzc3OTUsMzc3OTYsMzc3OTcsMzc3OTgsMzc3OTksMzc4MDAsMzc4MDEsMzc4MDIsMzc4MDMsMzc4MDQsMzc4MDUsMzc4''@;'; put 'put ''MDYsMzc4MDcsMzc4MDgsMzc4MDksMzc4MTAsMzc4MTEsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTUsMzc4MTYsMzc4MTcsMzc4MTgsMzc4MTksMzc4MjAsMzc4MjEsMzc4MjIsMzc4MjMsMzc4MjQsMzc4MjUsMzc4MjYsMzc4MjcsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzIsMzc4MzMs''@;'; put 'put ''Mzc4MzUsMzc4MzYsMzc4MzcsMjI5MzUsMjI5ODYsMjI5NTUsMjI5NDIsMjI5NDgsMjI5OTQsMjI5NjIsMjI5NTksMjI5OTksMjI5NzQsMjMwNDUsMjMwNDYsMjMwMDUsMjMwNDgsMjMwMTEsMjNlMywyMzAzMywyMzA1MiwyMzA0OSwyMzA5MCwyMzA5MiwyMzA1NywyMzA3NSwyMzA1OSwyMzEw''@;'; put 'put ''NCwyMzE0MywyMzExNCwyMzEyNSwyMzEwMCwyMzEzOCwyMzE1NywzMzAwNCwyMzIxMCwyMzE5NSwyMzE1OSwyMzE2MiwyMzIzMCwyMzI3NSwyMzIxOCwyMzI1MCwyMzI1MiwyMzIyNCwyMzI2NCwyMzI2NywyMzI4MSwyMzI1NCwyMzI3MCwyMzI1NiwyMzI2MCwyMzMwNSwyMzMxOSwyMzMxOCwy''@;'; put 'put ''MzM0NiwyMzM1MSwyMzM2MCwyMzU3MywyMzU4MCwyMzM4NiwyMzM5NywyMzQxMSwyMzM3NywyMzM3OSwyMzM5NCwzOTU0MSwzOTU0MywzOTU0NCwzOTU0NiwzOTU1MSwzOTU0OSwzOTU1MiwzOTU1MywzOTU1NywzOTU2MCwzOTU2MiwzOTU2OCwzOTU3MCwzOTU3MSwzOTU3NCwzOTU3NiwzOTU3''@;'; put 'put ''OSwzOTU4MCwzOTU4MSwzOTU4MywzOTU4NCwzOTU4NiwzOTU4NywzOTU4OSwzOTU5MSwzMjQxNSwzMjQxNywzMjQxOSwzMjQyMSwzMjQyNCwzMjQyNSwzNzgzOCwzNzgzOSwzNzg0MCwzNzg0MSwzNzg0MiwzNzg0MywzNzg0NCwzNzg0NSwzNzg0NywzNzg0OCwzNzg0OSwzNzg1MCwzNzg1MSwz''@;'; put 'put ''Nzg1MiwzNzg1MywzNzg1NCwzNzg1NSwzNzg1NiwzNzg1NywzNzg1OCwzNzg1OSwzNzg2MCwzNzg2MSwzNzg2MiwzNzg2MywzNzg2NCwzNzg2NSwzNzg2NiwzNzg2NywzNzg2OCwzNzg2OSwzNzg3MCwzNzg3MSwzNzg3MiwzNzg3MywzNzg3NCwzNzg3NSwzNzg3NiwzNzg3NywzNzg3OCwzNzg3''@;'; put 'put ''OSwzNzg4MCwzNzg4MSwzNzg4MiwzNzg4MywzNzg4NCwzNzg4NSwzNzg4NiwzNzg4NywzNzg4OCwzNzg4OSwzNzg5MCwzNzg5MSwzNzg5MiwzNzg5MywzNzg5NCwzNzg5NSwzNzg5NiwzNzg5NywzNzg5OCwzNzg5OSwzNzkwMCwzNzkwMSwzNzkwMiwzNzkwMywzNzkwNCwzNzkwNSwzNzkwNiwz''@;'; put 'put ''NzkwNywzNzkwOCwzNzkwOSwzNzkxMCwzNzkxMSwzNzkxMiwzNzkxMywzNzkxNCwzNzkxNSwzNzkxNiwzNzkxNywzNzkxOCwzNzkxOSwzNzkyMCwzNzkyMSwzNzkyMiwzNzkyMywzNzkyNCwzNzkyNSwzNzkyNiwzNzkyNywzNzkyOCwzNzkyOSwzNzkzMCwzNzkzMSwzNzkzMiwzNzkzMywzNzkz''@;'; put 'put ''NCwzMjQyOSwzMjQzMiwzMjQ0NiwzMjQ0OCwzMjQ0OSwzMjQ1MCwzMjQ1NywzMjQ1OSwzMjQ2MCwzMjQ2NCwzMjQ2OCwzMjQ3MSwzMjQ3NSwzMjQ4MCwzMjQ4MSwzMjQ4OCwzMjQ5MSwzMjQ5NCwzMjQ5NSwzMjQ5NywzMjQ5OCwzMjUyNSwzMjUwMiwzMjUwNiwzMjUwNywzMjUxMCwzMjUxMywz''@;'; put 'put ''MjUxNCwzMjUxNSwzMjUxOSwzMjUyMCwzMjUyMywzMjUyNCwzMjUyNywzMjUyOSwzMjUzMCwzMjUzNSwzMjUzNywzMjU0MCwzMjUzOSwzMjU0MywzMjU0NSwzMjU0NiwzMjU0NywzMjU0OCwzMjU0OSwzMjU1MCwzMjU1MSwzMjU1NCwzMjU1NSwzMjU1NiwzMjU1NywzMjU1OSwzMjU2MCwzMjU2''@;'; put 'put ''MSwzMjU2MiwzMjU2MywzMjU2NSwyNDE4NiwzMDA3OSwyNDAyNywzMDAxNCwzNzAxMywyOTU4MiwyOTU4NSwyOTYxNCwyOTYwMiwyOTU5OSwyOTY0NywyOTYzNCwyOTY0OSwyOTYyMywyOTYxOSwyOTYzMiwyOTY0MSwyOTY0MCwyOTY2OSwyOTY1NywzOTAzNiwyOTcwNiwyOTY3MywyOTY3MSwy''@;'; put 'put ''OTY2MiwyOTYyNiwyOTY4MiwyOTcxMSwyOTczOCwyOTc4NywyOTczNCwyOTczMywyOTczNiwyOTc0NCwyOTc0MiwyOTc0MCwzNzkzNSwzNzkzNiwzNzkzNywzNzkzOCwzNzkzOSwzNzk0MCwzNzk0MSwzNzk0MiwzNzk0MywzNzk0NCwzNzk0NSwzNzk0NiwzNzk0NywzNzk0OCwzNzk0OSwzNzk1''@;'; put 'put ''MSwzNzk1MiwzNzk1MywzNzk1NCwzNzk1NSwzNzk1NiwzNzk1NywzNzk1OCwzNzk1OSwzNzk2MCwzNzk2MSwzNzk2MiwzNzk2MywzNzk2NCwzNzk2NSwzNzk2NiwzNzk2NywzNzk2OCwzNzk2OSwzNzk3MCwzNzk3MSwzNzk3MiwzNzk3MywzNzk3NCwzNzk3NSwzNzk3NiwzNzk3NywzNzk3OCwz''@;'; put 'put ''Nzk3OSwzNzk4MCwzNzk4MSwzNzk4MiwzNzk4MywzNzk4NCwzNzk4NSwzNzk4NiwzNzk4NywzNzk4OCwzNzk4OSwzNzk5MCwzNzk5MSwzNzk5MiwzNzk5MywzNzk5NCwzNzk5NiwzNzk5NywzNzk5OCwzNzk5OSwzOGUzLDM4MDAxLDM4MDAyLDM4MDAzLDM4MDA0LDM4MDA1LDM4MDA2LDM4MDA3''@;'; put 'put ''LDM4MDA4LDM4MDA5LDM4MDEwLDM4MDExLDM4MDEyLDM4MDEzLDM4MDE0LDM4MDE1LDM4MDE2LDM4MDE3LDM4MDE4LDM4MDE5LDM4MDIwLDM4MDMzLDM4MDM4LDM4MDQwLDM4MDg3LDM4MDk1LDM4MDk5LDM4MTAwLDM4MTA2LDM4MTE4LDM4MTM5LDM4MTcyLDM4MTc2LDI5NzIzLDI5NzIyLDI5''@;'; put 'put ''NzYxLDI5Nzg4LDI5NzgzLDI5NzgxLDI5Nzg1LDI5ODE1LDI5ODA1LDI5ODIyLDI5ODUyLDI5ODM4LDI5ODI0LDI5ODI1LDI5ODMxLDI5ODM1LDI5ODU0LDI5ODY0LDI5ODY1LDI5ODQwLDI5ODYzLDI5OTA2LDI5ODgyLDM4ODkwLDM4ODkxLDM4ODkyLDI2NDQ0LDI2NDUxLDI2NDYyLDI2NDQw''@;'; put 'put ''LDI2NDczLDI2NTMzLDI2NTAzLDI2NDc0LDI2NDgzLDI2NTIwLDI2NTM1LDI2NDg1LDI2NTM2LDI2NTI2LDI2NTQxLDI2NTA3LDI2NDg3LDI2NDkyLDI2NjA4LDI2NjMzLDI2NTg0LDI2NjM0LDI2NjAxLDI2NTQ0LDI2NjM2LDI2NTg1LDI2NTQ5LDI2NTg2LDI2NTQ3LDI2NTg5LDI2NjI0LDI2''@;'; put 'put ''NTYzLDI2NTUyLDI2NTk0LDI2NjM4LDI2NTYxLDI2NjIxLDI2Njc0LDI2Njc1LDI2NzIwLDI2NzIxLDI2NzAyLDI2NzIyLDI2NjkyLDI2NzI0LDI2NzU1LDI2NjUzLDI2NzA5LDI2NzI2LDI2Njg5LDI2NzI3LDI2Njg4LDI2Njg2LDI2Njk4LDI2Njk3LDI2NjY1LDI2ODA1LDI2NzY3LDI2NzQw''@;'; put 'put ''LDI2NzQzLDI2NzcxLDI2NzMxLDI2ODE4LDI2OTkwLDI2ODc2LDI2OTExLDI2OTEyLDI2ODczLDM4MTgzLDM4MTk1LDM4MjA1LDM4MjExLDM4MjE2LDM4MjE5LDM4MjI5LDM4MjM0LDM4MjQwLDM4MjU0LDM4MjYwLDM4MjYxLDM4MjYzLDM4MjY0LDM4MjY1LDM4MjY2LDM4MjY3LDM4MjY4LDM4''@;'; put 'put ''MjY5LDM4MjcwLDM4MjcyLDM4MjczLDM4Mjc0LDM4Mjc1LDM4Mjc2LDM4Mjc3LDM4Mjc4LDM4Mjc5LDM4MjgwLDM4MjgxLDM4MjgyLDM4MjgzLDM4Mjg0LDM4Mjg1LDM4Mjg2LDM4Mjg3LDM4Mjg4LDM4Mjg5LDM4MjkwLDM4MjkxLDM4MjkyLDM4MjkzLDM4Mjk0LDM4Mjk1LDM4Mjk2LDM4Mjk3''@;'; put 'put ''LDM4Mjk4LDM4Mjk5LDM4MzAwLDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA0LDM4MzA1LDM4MzA2LDM4MzA3LDM4MzA4LDM4MzA5LDM4MzEwLDM4MzExLDM4MzEyLDM4MzEzLDM4MzE0LDM4MzE1LDM4MzE2LDM4MzE3LDM4MzE4LDM4MzE5LDM4MzIwLDM4MzIxLDM4MzIyLDM4MzIzLDM4MzI0LDM4''@;'; put 'put ''MzI1LDM4MzI2LDM4MzI3LDM4MzI4LDM4MzI5LDM4MzMwLDM4MzMxLDM4MzMyLDM4MzMzLDM4MzM0LDM4MzM1LDM4MzM2LDM4MzM3LDM4MzM4LDM4MzM5LDM4MzQwLDM4MzQxLDM4MzQyLDM4MzQzLDM4MzQ0LDM4MzQ1LDM4MzQ2LDM4MzQ3LDI2OTE2LDI2ODY0LDI2ODkxLDI2ODgxLDI2OTY3''@;'; put 'put ''LDI2ODUxLDI2ODk2LDI2OTkzLDI2OTM3LDI2OTc2LDI2OTQ2LDI2OTczLDI3MDEyLDI2OTg3LDI3MDA4LDI3MDMyLDI3ZTMsMjY5MzIsMjcwODQsMjcwMTUsMjcwMTYsMjcwODYsMjcwMTcsMjY5ODIsMjY5NzksMjcwMDEsMjcwMzUsMjcwNDcsMjcwNjcsMjcwNTEsMjcwNTMsMjcwOTIsMjcw''@;'; put 'put ''NTcsMjcwNzMsMjcwODIsMjcxMDMsMjcwMjksMjcxMDQsMjcwMjEsMjcxMzUsMjcxODMsMjcxMTcsMjcxNTksMjcxNjAsMjcyMzcsMjcxMjIsMjcyMDQsMjcxOTgsMjcyOTYsMjcyMTYsMjcyMjcsMjcxODksMjcyNzgsMjcyNTcsMjcxOTcsMjcxNzYsMjcyMjQsMjcyNjAsMjcyODEsMjcyODAs''@;'; put 'put ''MjczMDUsMjcyODcsMjczMDcsMjk0OTUsMjk1MjIsMjc1MjEsMjc1MjIsMjc1MjcsMjc1MjQsMjc1MzgsMjc1MzksMjc1MzMsMjc1NDYsMjc1NDcsMjc1NTMsMjc1NjIsMzY3MTUsMzY3MTcsMzY3MjEsMzY3MjIsMzY3MjMsMzY3MjUsMzY3MjYsMzY3MjgsMzY3MjcsMzY3MjksMzY3MzAsMzY3''@;'; put 'put ''MzIsMzY3MzQsMzY3MzcsMzY3MzgsMzY3NDAsMzY3NDMsMzY3NDcsMzgzNDgsMzgzNDksMzgzNTAsMzgzNTEsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNTYsMzgzNTcsMzgzNTgsMzgzNTksMzgzNjAsMzgzNjEsMzgzNjIsMzgzNjMsMzgzNjQsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgs''@;'; put 'put ''MzgzNjksMzgzNzAsMzgzNzEsMzgzNzIsMzgzNzMsMzgzNzQsMzgzNzUsMzgzODAsMzgzOTksMzg0MDcsMzg0MTksMzg0MjQsMzg0MjcsMzg0MzAsMzg0MzIsMzg0MzUsMzg0MzYsMzg0MzcsMzg0MzgsMzg0MzksMzg0NDAsMzg0NDEsMzg0NDMsMzg0NDQsMzg0NDUsMzg0NDcsMzg0NDgsMzg0''@;'; put 'put ''NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjIsMzg0NjUsMzg0NjcsMzg0NzQsMzg0NzgsMzg0NzksMzg0ODEsMzg0ODIsMzg0ODMsMzg0ODYsMzg0ODcsMzg0ODgsMzg0ODksMzg0OTAsMzg0OTIsMzg0OTMsMzg0OTQsMzg0OTYsMzg0OTksMzg1MDEsMzg1MDIsMzg1MDcsMzg1MDksMzg1MTAs''@;'; put 'put ''Mzg1MTEsMzg1MTIsMzg1MTMsMzg1MTUsMzg1MjAsMzg1MjEsMzg1MjIsMzg1MjMsMzg1MjQsMzg1MjUsMzg1MjYsMzg1MjcsMzg1MjgsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzUsMzg1MzcsMzg1MzgsMzY3NDksMzY3NTAsMzY3NTEsMzY3NjAsMzY3NjIsMzY1NTgsMjUwOTksMjUx''@;'; put 'put ''MTEsMjUxMTUsMjUxMTksMjUxMjIsMjUxMjEsMjUxMjUsMjUxMjQsMjUxMzIsMzMyNTUsMjk5MzUsMjk5NDAsMjk5NTEsMjk5NjcsMjk5NjksMjk5NzEsMjU5MDgsMjYwOTQsMjYwOTUsMjYwOTYsMjYxMjIsMjYxMzcsMjY0ODIsMjYxMTUsMjYxMzMsMjYxMTIsMjg4MDUsMjYzNTksMjYxNDEs''@;'; put 'put ''MjYxNjQsMjYxNjEsMjYxNjYsMjYxNjUsMzI3NzQsMjYyMDcsMjYxOTYsMjYxNzcsMjYxOTEsMjYxOTgsMjYyMDksMjYxOTksMjYyMzEsMjYyNDQsMjYyNTIsMjYyNzksMjYyNjksMjYzMDIsMjYzMzEsMjYzMzIsMjYzNDIsMjYzNDUsMzYxNDYsMzYxNDcsMzYxNTAsMzYxNTUsMzYxNTcsMzYx''@;'; put 'put ''NjAsMzYxNjUsMzYxNjYsMzYxNjgsMzYxNjksMzYxNjcsMzYxNzMsMzYxODEsMzYxODUsMzUyNzEsMzUyNzQsMzUyNzUsMzUyNzYsMzUyNzgsMzUyNzksMzUyODAsMzUyODEsMjkyOTQsMjkzNDMsMjkyNzcsMjkyODYsMjkyOTUsMjkzMTAsMjkzMTEsMjkzMTYsMjkzMjMsMjkzMjUsMjkzMjcs''@;'; put 'put ''MjkzMzAsMjUzNTIsMjUzOTQsMjU1MjAsMzg1NDAsMzg1NDIsMzg1NDUsMzg1NDYsMzg1NDcsMzg1NDksMzg1NTAsMzg1NTQsMzg1NTUsMzg1NTcsMzg1NTgsMzg1NTksMzg1NjAsMzg1NjEsMzg1NjIsMzg1NjMsMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjgsMzg1NjksMzg1NzAsMzg1NzEsMzg1''@;'; put 'put ''NzIsMzg1NzMsMzg1NzQsMzg1NzUsMzg1NzcsMzg1NzgsMzg1ODAsMzg1ODEsMzg1ODMsMzg1ODQsMzg1ODYsMzg1ODcsMzg1OTEsMzg1OTQsMzg1OTUsMzg2MDAsMzg2MDIsMzg2MDMsMzg2MDgsMzg2MDksMzg2MTEsMzg2MTIsMzg2MTQsMzg2MTUsMzg2MTYsMzg2MTcsMzg2MTgsMzg2MTks''@;'; put 'put ''Mzg2MjAsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MjUsMzg2MjYsMzg2MjcsMzg2MjgsMzg2MjksMzg2MzAsMzg2MzEsMzg2MzUsMzg2MzYsMzg2MzcsMzg2MzgsMzg2NDAsMzg2NDEsMzg2NDIsMzg2NDQsMzg2NDUsMzg2NDgsMzg2NTAsMzg2NTEsMzg2NTIsMzg2NTMsMzg2NTUsMzg2NTgsMzg2''@;'; put 'put ''NTksMzg2NjEsMzg2NjYsMzg2NjcsMzg2NjgsMzg2NzIsMzg2NzMsMzg2NzQsMzg2NzYsMzg2NzcsMzg2NzksMzg2ODAsMzg2ODEsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODcsMzg2ODgsMjU2NjMsMjU4MTYsMzI3NzIsMjc2MjYsMjc2MzUsMjc2NDUsMjc2MzcsMjc2NDEsMjc2NTMsMjc2NTUs''@;'; put 'put ''Mjc2NTQsMjc2NjEsMjc2NjksMjc2NzIsMjc2NzMsMjc2NzQsMjc2ODEsMjc2ODksMjc2ODQsMjc2OTAsMjc2OTgsMjU5MDksMjU5NDEsMjU5NjMsMjkyNjEsMjkyNjYsMjkyNzAsMjkyMzIsMzQ0MDIsMjEwMTQsMzI5MjcsMzI5MjQsMzI5MTUsMzI5NTYsMjYzNzgsMzI5NTcsMzI5NDUsMzI5''@;'; put 'put ''MzksMzI5NDEsMzI5NDgsMzI5NTEsMzI5OTksMzNlMywzMzAwMSwzMzAwMiwzMjk4NywzMjk2MiwzMjk2NCwzMjk4NSwzMjk3MywzMjk4MywyNjM4NCwzMjk4OSwzMzAwMywzMzAwOSwzMzAxMiwzMzAwNSwzMzAzNywzMzAzOCwzMzAxMCwzMzAyMCwyNjM4OSwzMzA0MiwzNTkzMCwzMzA3OCwz''@;'; put 'put ''MzA1NCwzMzA2OCwzMzA0OCwzMzA3NCwzMzA5NiwzMzEwMCwzMzEwNywzMzE0MCwzMzExMywzMzExNCwzMzEzNywzMzEyMCwzMzEyOSwzMzE0OCwzMzE0OSwzMzEzMywzMzEyNywyMjYwNSwyMzIyMSwzMzE2MCwzMzE1NCwzMzE2OSwyODM3MywzMzE4NywzMzE5NCwzMzIyOCwyNjQwNiwzMzIy''@;'; put 'put ''NiwzMzIxMSwzODY4OSwzODY5MCwzODY5MSwzODY5MiwzODY5MywzODY5NCwzODY5NSwzODY5NiwzODY5NywzODY5OSwzODcwMCwzODcwMiwzODcwMywzODcwNSwzODcwNywzODcwOCwzODcwOSwzODcxMCwzODcxMSwzODcxNCwzODcxNSwzODcxNiwzODcxNywzODcxOSwzODcyMCwzODcyMSwz''@;'; put 'put ''ODcyMiwzODcyMywzODcyNCwzODcyNSwzODcyNiwzODcyNywzODcyOCwzODcyOSwzODczMCwzODczMSwzODczMiwzODczMywzODczNCwzODczNSwzODczNiwzODczNywzODc0MCwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0OCwzODc0OSwzODc1MSwzODc1NSwzODc1NiwzODc1OCwzODc1''@;'; put 'put ''OSwzODc2MCwzODc2MiwzODc2MywzODc2NCwzODc2NSwzODc2NiwzODc2NywzODc2OCwzODc2OSwzODc3MCwzODc3MywzODc3NSwzODc3NiwzODc3NywzODc3OCwzODc3OSwzODc4MSwzODc4MiwzODc4MywzODc4NCwzODc4NSwzODc4NiwzODc4NywzODc4OCwzODc5MCwzODc5MSwzODc5Miwz''@;'; put 'put ''ODc5MywzODc5NCwzODc5NiwzODc5OCwzODc5OSwzODgwMCwzODgwMywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxMSwzODgxMiwzODgxMywzMzIxNywzMzE5MCwyNzQyOCwyNzQ0NywyNzQ0OSwyNzQ1OSwyNzQ2MiwyNzQ4MSwzOTEyMSwzOTEyMiwzOTEyMywzOTEyNSwzOTEy''@;'; put 'put ''OSwzOTEzMCwyNzU3MSwyNDM4NCwyNzU4NiwzNTMxNSwyNmUzLDQwNzg1LDI2MDAzLDI2MDQ0LDI2MDU0LDI2MDUyLDI2MDUxLDI2MDYwLDI2MDYyLDI2MDY2LDI2MDcwLDI4ODAwLDI4ODI4LDI4ODIyLDI4ODI5LDI4ODU5LDI4ODY0LDI4ODU1LDI4ODQzLDI4ODQ5LDI4OTA0LDI4ODc0LDI4''@;'; put 'put ''OTQ0LDI4OTQ3LDI4OTUwLDI4OTc1LDI4OTc3LDI5MDQzLDI5MDIwLDI5MDMyLDI4OTk3LDI5MDQyLDI5MDAyLDI5MDQ4LDI5MDUwLDI5MDgwLDI5MTA3LDI5MTA5LDI5MDk2LDI5MDg4LDI5MTUyLDI5MTQwLDI5MTU5LDI5MTc3LDI5MjEzLDI5MjI0LDI4NzgwLDI4OTUyLDI5MDMwLDI5MTEz''@;'; put 'put ''LDI1MTUwLDI1MTQ5LDI1MTU1LDI1MTYwLDI1MTYxLDMxMDM1LDMxMDQwLDMxMDQ2LDMxMDQ5LDMxMDY3LDMxMDY4LDMxMDU5LDMxMDY2LDMxMDc0LDMxMDYzLDMxMDcyLDMxMDg3LDMxMDc5LDMxMDk4LDMxMTA5LDMxMTE0LDMxMTMwLDMxMTQzLDMxMTU1LDI0NTI5LDI0NTI4LDM4ODE0LDM4''@;'; put 'put ''ODE1LDM4ODE3LDM4ODE4LDM4ODIwLDM4ODIxLDM4ODIyLDM4ODIzLDM4ODI0LDM4ODI1LDM4ODI2LDM4ODI4LDM4ODMwLDM4ODMyLDM4ODMzLDM4ODM1LDM4ODM3LDM4ODM4LDM4ODM5LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQzLDM4ODQ0LDM4ODQ1LDM4ODQ2LDM4ODQ3LDM4ODQ4LDM4ODQ5''@;'; put 'put ''LDM4ODUwLDM4ODUxLDM4ODUyLDM4ODUzLDM4ODU0LDM4ODU1LDM4ODU2LDM4ODU3LDM4ODU4LDM4ODU5LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODYzLDM4ODY0LDM4ODY1LDM4ODY2LDM4ODY3LDM4ODY4LDM4ODY5LDM4ODcwLDM4ODcxLDM4ODcyLDM4ODczLDM4ODc0LDM4ODc1LDM4ODc2LDM4''@;'; put 'put ''ODc3LDM4ODc4LDM4ODc5LDM4ODgwLDM4ODgxLDM4ODgyLDM4ODgzLDM4ODg0LDM4ODg1LDM4ODg4LDM4ODk0LDM4ODk1LDM4ODk2LDM4ODk3LDM4ODk4LDM4OTAwLDM4OTAzLDM4OTA0LDM4OTA1LDM4OTA2LDM4OTA3LDM4OTA4LDM4OTA5LDM4OTEwLDM4OTExLDM4OTEyLDM4OTEzLDM4OTE0''@;'; put 'put ''LDM4OTE1LDM4OTE2LDM4OTE3LDM4OTE4LDM4OTE5LDM4OTIwLDM4OTIxLDM4OTIyLDM4OTIzLDM4OTI0LDM4OTI1LDM4OTI2LDI0NjM2LDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NjY1LDI0Njc1LDI0NzQ3LDI0ODM4LDI0ODQ1LDI0OTI1LDI1MDAxLDI0OTg5LDI1MDM1LDI1MDQxLDI1''@;'; put 'put ''MDk0LDMyODk2LDMyODk1LDI3Nzk1LDI3ODk0LDI4MTU2LDMwNzEwLDMwNzEyLDMwNzIwLDMwNzI5LDMwNzQzLDMwNzQ0LDMwNzM3LDI2MDI3LDMwNzY1LDMwNzQ4LDMwNzQ5LDMwNzc3LDMwNzc4LDMwNzc5LDMwNzUxLDMwNzgwLDMwNzU3LDMwNzY0LDMwNzU1LDMwNzYxLDMwNzk4LDMwODI5''@;'; put 'put ''LDMwODA2LDMwODA3LDMwNzU4LDMwODAwLDMwNzkxLDMwNzk2LDMwODI2LDMwODc1LDMwODY3LDMwODc0LDMwODU1LDMwODc2LDMwODgxLDMwODgzLDMwODk4LDMwOTA1LDMwODg1LDMwOTMyLDMwOTM3LDMwOTIxLDMwOTU2LDMwOTYyLDMwOTgxLDMwOTY0LDMwOTk1LDMxMDEyLDMxMDA2LDMx''@;'; put 'put ''MDI4LDQwODU5LDQwNjk3LDQwNjk5LDQwNzAwLDMwNDQ5LDMwNDY4LDMwNDc3LDMwNDU3LDMwNDcxLDMwNDcyLDMwNDkwLDMwNDk4LDMwNDg5LDMwNTA5LDMwNTAyLDMwNTE3LDMwNTIwLDMwNTQ0LDMwNTQ1LDMwNTM1LDMwNTMxLDMwNTU0LDMwNTY4LDM4OTI3LDM4OTI4LDM4OTI5LDM4OTMw''@;'; put 'put ''LDM4OTMxLDM4OTMyLDM4OTMzLDM4OTM0LDM4OTM1LDM4OTM2LDM4OTM3LDM4OTM4LDM4OTM5LDM4OTQwLDM4OTQxLDM4OTQyLDM4OTQzLDM4OTQ0LDM4OTQ1LDM4OTQ2LDM4OTQ3LDM4OTQ4LDM4OTQ5LDM4OTUwLDM4OTUxLDM4OTUyLDM4OTUzLDM4OTU0LDM4OTU1LDM4OTU2LDM4OTU3LDM4''@;'; put 'put ''OTU4LDM4OTU5LDM4OTYwLDM4OTYxLDM4OTYyLDM4OTYzLDM4OTY0LDM4OTY1LDM4OTY2LDM4OTY3LDM4OTY4LDM4OTY5LDM4OTcwLDM4OTcxLDM4OTcyLDM4OTczLDM4OTc0LDM4OTc1LDM4OTc2LDM4OTc3LDM4OTc4LDM4OTc5LDM4OTgwLDM4OTgxLDM4OTgyLDM4OTgzLDM4OTg0LDM4OTg1''@;'; put 'put ''LDM4OTg2LDM4OTg3LDM4OTg4LDM4OTg5LDM4OTkwLDM4OTkxLDM4OTkyLDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk2LDM4OTk3LDM4OTk4LDM4OTk5LDM5ZTMsMzkwMDEsMzkwMDIsMzkwMDMsMzkwMDQsMzkwMDUsMzkwMDYsMzkwMDcsMzkwMDgsMzkwMDksMzkwMTAsMzkwMTEsMzkwMTIsMzkw''@;'; put 'put ''MTMsMzkwMTQsMzkwMTUsMzkwMTYsMzkwMTcsMzkwMTgsMzkwMTksMzkwMjAsMzkwMjEsMzkwMjIsMzA1NjIsMzA1NjUsMzA1OTEsMzA2MDUsMzA1ODksMzA1OTIsMzA2MDQsMzA2MDksMzA2MjMsMzA2MjQsMzA2NDAsMzA2NDUsMzA2NTMsMzAwMTAsMzAwMTYsMzAwMzAsMzAwMjcsMzAwMjQs''@;'; put 'put ''MzAwNDMsMzAwNjYsMzAwNzMsMzAwODMsMzI2MDAsMzI2MDksMzI2MDcsMzU0MDAsMzI2MTYsMzI2MjgsMzI2MjUsMzI2MzMsMzI2NDEsMzI2MzgsMzA0MTMsMzA0MzcsMzQ4NjYsMzgwMjEsMzgwMjIsMzgwMjMsMzgwMjcsMzgwMjYsMzgwMjgsMzgwMjksMzgwMzEsMzgwMzIsMzgwMzYsMzgw''@;'; put 'put ''MzksMzgwMzcsMzgwNDIsMzgwNDMsMzgwNDQsMzgwNTEsMzgwNTIsMzgwNTksMzgwNTgsMzgwNjEsMzgwNjAsMzgwNjMsMzgwNjQsMzgwNjYsMzgwNjgsMzgwNzAsMzgwNzEsMzgwNzIsMzgwNzMsMzgwNzQsMzgwNzYsMzgwNzcsMzgwNzksMzgwODQsMzgwODgsMzgwODksMzgwOTAsMzgwOTEs''@;'; put 'put ''MzgwOTIsMzgwOTMsMzgwOTQsMzgwOTYsMzgwOTcsMzgwOTgsMzgxMDEsMzgxMDIsMzgxMDMsMzgxMDUsMzgxMDQsMzgxMDcsMzgxMTAsMzgxMTEsMzgxMTIsMzgxMTQsMzgxMTYsMzgxMTcsMzgxMTksMzgxMjAsMzgxMjIsMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjYsMzkwMjcsMzkwMjgsMzkw''@;'; put 'put ''NTEsMzkwNTQsMzkwNTgsMzkwNjEsMzkwNjUsMzkwNzUsMzkwODAsMzkwODEsMzkwODIsMzkwODMsMzkwODQsMzkwODUsMzkwODYsMzkwODcsMzkwODgsMzkwODksMzkwOTAsMzkwOTEsMzkwOTIsMzkwOTMsMzkwOTQsMzkwOTUsMzkwOTYsMzkwOTcsMzkwOTgsMzkwOTksMzkxMDAsMzkxMDEs''@;'; put 'put ''MzkxMDIsMzkxMDMsMzkxMDQsMzkxMDUsMzkxMDYsMzkxMDcsMzkxMDgsMzkxMDksMzkxMTAsMzkxMTEsMzkxMTIsMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkxMTcsMzkxMTksMzkxMjAsMzkxMjQsMzkxMjYsMzkxMjcsMzkxMzEsMzkxMzIsMzkxMzMsMzkxMzYsMzkxMzcsMzkxMzgsMzkx''@;'; put 'put ''MzksMzkxNDAsMzkxNDEsMzkxNDIsMzkxNDUsMzkxNDYsMzkxNDcsMzkxNDgsMzkxNDksMzkxNTAsMzkxNTEsMzkxNTIsMzkxNTMsMzkxNTQsMzkxNTUsMzkxNTYsMzkxNTcsMzkxNTgsMzkxNTksMzkxNjAsMzkxNjEsMzkxNjIsMzkxNjMsMzkxNjQsMzkxNjUsMzkxNjYsMzkxNjcsMzkxNjgs''@;'; put 'put ''MzkxNjksMzkxNzAsMzkxNzEsMzkxNzIsMzkxNzMsMzkxNzQsMzkxNzUsMzgxMjEsMzgxMjMsMzgxMjYsMzgxMjcsMzgxMzEsMzgxMzIsMzgxMzMsMzgxMzUsMzgxMzcsMzgxNDAsMzgxNDEsMzgxNDMsMzgxNDcsMzgxNDYsMzgxNTAsMzgxNTEsMzgxNTMsMzgxNTQsMzgxNTcsMzgxNTgsMzgx''@;'; put 'put ''NTksMzgxNjIsMzgxNjMsMzgxNjQsMzgxNjUsMzgxNjYsMzgxNjgsMzgxNzEsMzgxNzMsMzgxNzQsMzgxNzUsMzgxNzgsMzgxODYsMzgxODcsMzgxODUsMzgxODgsMzgxOTMsMzgxOTQsMzgxOTYsMzgxOTgsMzgxOTksMzgyMDAsMzgyMDQsMzgyMDYsMzgyMDcsMzgyMTAsMzgxOTcsMzgyMTIs''@;'; put 'put ''MzgyMTMsMzgyMTQsMzgyMTcsMzgyMjAsMzgyMjIsMzgyMjMsMzgyMjYsMzgyMjcsMzgyMjgsMzgyMzAsMzgyMzEsMzgyMzIsMzgyMzMsMzgyMzUsMzgyMzgsMzgyMzksMzgyMzcsMzgyNDEsMzgyNDIsMzgyNDQsMzgyNDUsMzgyNDYsMzgyNDcsMzgyNDgsMzgyNDksMzgyNTAsMzgyNTEsMzgy''@;'; put 'put ''NTIsMzgyNTUsMzgyNTcsMzgyNTgsMzgyNTksMzgyMDIsMzA2OTUsMzA3MDAsMzg2MDEsMzExODksMzEyMTMsMzEyMDMsMzEyMTEsMzEyMzgsMjM4NzksMzEyMzUsMzEyMzQsMzEyNjIsMzEyNTIsMzkxNzYsMzkxNzcsMzkxNzgsMzkxNzksMzkxODAsMzkxODIsMzkxODMsMzkxODUsMzkxODYs''@;'; put 'put ''MzkxODcsMzkxODgsMzkxODksMzkxOTAsMzkxOTEsMzkxOTIsMzkxOTMsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTcsMzkxOTgsMzkxOTksMzkyMDAsMzkyMDEsMzkyMDIsMzkyMDMsMzkyMDQsMzkyMDUsMzkyMDYsMzkyMDcsMzkyMDgsMzkyMDksMzkyMTAsMzkyMTEsMzkyMTIsMzkyMTMsMzky''@;'; put 'put ''MTUsMzkyMTYsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjIsMzkyMjMsMzkyMjQsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMjksMzkyMzAsMzkyMzEsMzkyMzIsMzkyMzMsMzkyMzQsMzkyMzUsMzkyMzYsMzkyMzcsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDEsMzkyNDIs''@;'; put 'put ''MzkyNDMsMzkyNDQsMzkyNDUsMzkyNDYsMzkyNDcsMzkyNDgsMzkyNDksMzkyNTAsMzkyNTEsMzkyNTQsMzkyNTUsMzkyNTYsMzkyNTcsMzkyNTgsMzkyNTksMzkyNjAsMzkyNjEsMzkyNjIsMzkyNjMsMzkyNjQsMzkyNjUsMzkyNjYsMzkyNjgsMzkyNzAsMzkyODMsMzkyODgsMzkyODksMzky''@;'; put 'put ''OTEsMzkyOTQsMzkyOTgsMzkyOTksMzkzMDUsMzEyODksMzEyODcsMzEzMTMsNDA2NTUsMzkzMzMsMzEzNDQsMzAzNDQsMzAzNTAsMzAzNTUsMzAzNjEsMzAzNzIsMjk5MTgsMjk5MjAsMjk5OTYsNDA0ODAsNDA0ODIsNDA0ODgsNDA0ODksNDA0OTAsNDA0OTEsNDA0OTIsNDA0OTgsNDA0OTcs''@;'; put 'put ''NDA1MDIsNDA1MDQsNDA1MDMsNDA1MDUsNDA1MDYsNDA1MTAsNDA1MTMsNDA1MTQsNDA1MTYsNDA1MTgsNDA1MTksNDA1MjAsNDA1MjEsNDA1MjMsNDA1MjQsNDA1MjYsNDA1MjksNDA1MzMsNDA1MzUsNDA1MzgsNDA1MzksNDA1NDAsNDA1NDIsNDA1NDcsNDA1NTAsNDA1NTEsNDA1NTIsNDA1''@;'; put 'put ''NTMsNDA1NTQsNDA1NTUsNDA1NTYsNDA1NjEsNDA1NTcsNDA1NjMsMzAwOTgsMzAxMDAsMzAxMDIsMzAxMTIsMzAxMDksMzAxMjQsMzAxMTUsMzAxMzEsMzAxMzIsMzAxMzYsMzAxNDgsMzAxMjksMzAxMjgsMzAxNDcsMzAxNDYsMzAxNjYsMzAxNTcsMzAxNzksMzAxODQsMzAxODIsMzAxODAs''@;'; put 'put ''MzAxODcsMzAxODMsMzAyMTEsMzAxOTMsMzAyMDQsMzAyMDcsMzAyMjQsMzAyMDgsMzAyMTMsMzAyMjAsMzAyMzEsMzAyMTgsMzAyNDUsMzAyMzIsMzAyMjksMzAyMzMsMzkzMDgsMzkzMTAsMzkzMjIsMzkzMjMsMzkzMjQsMzkzMjUsMzkzMjYsMzkzMjcsMzkzMjgsMzkzMjksMzkzMzAsMzkz''@;'; put 'put ''MzEsMzkzMzIsMzkzMzQsMzkzMzUsMzkzMzcsMzkzMzgsMzkzMzksMzkzNDAsMzkzNDEsMzkzNDIsMzkzNDMsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDcsMzkzNDgsMzkzNDksMzkzNTAsMzkzNTEsMzkzNTIsMzkzNTMsMzkzNTQsMzkzNTUsMzkzNTYsMzkzNTcsMzkzNTgsMzkzNTksMzkzNjAs''@;'; put 'put ''MzkzNjEsMzkzNjIsMzkzNjMsMzkzNjQsMzkzNjUsMzkzNjYsMzkzNjcsMzkzNjgsMzkzNjksMzkzNzAsMzkzNzEsMzkzNzIsMzkzNzMsMzkzNzQsMzkzNzUsMzkzNzYsMzkzNzcsMzkzNzgsMzkzNzksMzkzODAsMzkzODEsMzkzODIsMzkzODMsMzkzODQsMzkzODUsMzkzODYsMzkzODcsMzkz''@;'; put 'put ''ODgsMzkzODksMzkzOTAsMzkzOTEsMzkzOTIsMzkzOTMsMzkzOTQsMzkzOTUsMzkzOTYsMzkzOTcsMzkzOTgsMzkzOTksMzk0MDAsMzk0MDEsMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDUsMzk0MDYsMzk0MDcsMzk0MDgsMzk0MDksMzk0MTAsMzk0MTEsMzk0MTIsMzk0MTMsMzk0MTQsMzk0MTUs''@;'; put 'put ''Mzk0MTYsMzk0MTcsMzAyMzUsMzAyNjgsMzAyNDIsMzAyNDAsMzAyNzIsMzAyNTMsMzAyNTYsMzAyNzEsMzAyNjEsMzAyNzUsMzAyNzAsMzAyNTksMzAyODUsMzAzMDIsMzAyOTIsMzAzMDAsMzAyOTQsMzAzMTUsMzAzMTksMzI3MTQsMzE0NjIsMzEzNTIsMzEzNTMsMzEzNjAsMzEzNjYsMzEz''@;'; put 'put ''NjgsMzEzODEsMzEzOTgsMzEzOTIsMzE0MDQsMzE0MDAsMzE0MDUsMzE0MTEsMzQ5MTYsMzQ5MjEsMzQ5MzAsMzQ5NDEsMzQ5NDMsMzQ5NDYsMzQ5NzgsMzUwMTQsMzQ5OTksMzUwMDQsMzUwMTcsMzUwNDIsMzUwMjIsMzUwNDMsMzUwNDUsMzUwNTcsMzUwOTgsMzUwNjgsMzUwNDgsMzUwNzAs''@;'; put 'put ''MzUwNTYsMzUxMDUsMzUwOTcsMzUwOTEsMzUwOTksMzUwODIsMzUxMjQsMzUxMTUsMzUxMjYsMzUxMzcsMzUxNzQsMzUxOTUsMzAwOTEsMzI5OTcsMzAzODYsMzAzODgsMzA2ODQsMzI3ODYsMzI3ODgsMzI3OTAsMzI3OTYsMzI4MDAsMzI4MDIsMzI4MDUsMzI4MDYsMzI4MDcsMzI4MDksMzI4''@;'; put 'put ''MDgsMzI4MTcsMzI3NzksMzI4MjEsMzI4MzUsMzI4MzgsMzI4NDUsMzI4NTAsMzI4NzMsMzI4ODEsMzUyMDMsMzkwMzIsMzkwNDAsMzkwNDMsMzk0MTgsMzk0MTksMzk0MjAsMzk0MjEsMzk0MjIsMzk0MjMsMzk0MjQsMzk0MjUsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MjksMzk0MzAsMzk0MzEs''@;'; put 'put ''Mzk0MzIsMzk0MzMsMzk0MzQsMzk0MzUsMzk0MzYsMzk0MzcsMzk0MzgsMzk0MzksMzk0NDAsMzk0NDEsMzk0NDIsMzk0NDMsMzk0NDQsMzk0NDUsMzk0NDYsMzk0NDcsMzk0NDgsMzk0NDksMzk0NTAsMzk0NTEsMzk0NTIsMzk0NTMsMzk0NTQsMzk0NTUsMzk0NTYsMzk0NTcsMzk0NTgsMzk0''@;'; put 'put ''NTksMzk0NjAsMzk0NjEsMzk0NjIsMzk0NjMsMzk0NjQsMzk0NjUsMzk0NjYsMzk0NjcsMzk0NjgsMzk0NjksMzk0NzAsMzk0NzEsMzk0NzIsMzk0NzMsMzk0NzQsMzk0NzUsMzk0NzYsMzk0NzcsMzk0NzgsMzk0NzksMzk0ODAsMzk0ODEsMzk0ODIsMzk0ODMsMzk0ODQsMzk0ODUsMzk0ODYs''@;'; put 'put ''Mzk0ODcsMzk0ODgsMzk0ODksMzk0OTAsMzk0OTEsMzk0OTIsMzk0OTMsMzk0OTQsMzk0OTUsMzk0OTYsMzk0OTcsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDEsMzk1MDIsMzk1MDMsMzk1MDQsMzk1MDUsMzk1MDYsMzk1MDcsMzk1MDgsMzk1MDksMzk1MTAsMzk1MTEsMzk1MTIsMzk1MTMsMzkw''@;'; put 'put ''NDksMzkwNTIsMzkwNTMsMzkwNTUsMzkwNjAsMzkwNjYsMzkwNjcsMzkwNzAsMzkwNzEsMzkwNzMsMzkwNzQsMzkwNzcsMzkwNzgsMzQzODEsMzQzODgsMzQ0MTIsMzQ0MTQsMzQ0MzEsMzQ0MjYsMzQ0MjgsMzQ0MjcsMzQ0NzIsMzQ0NDUsMzQ0NDMsMzQ0NzYsMzQ0NjEsMzQ0NzEsMzQ0Njcs''@;'; put 'put ''MzQ0NzQsMzQ0NTEsMzQ0NzMsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MTAsMzQ0ODAsMzQ0OTAsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ1MTEsMzQ0ODQsMzQ1MzcsMzQ1NDUsMzQ1NDYsMzQ1NDEsMzQ1NDcsMzQ1MTIsMzQ1NzksMzQ1MjYsMzQ1NDgsMzQ1MjcsMzQ1MjAsMzQ1MTMsMzQ1NjMsMzQ1''@;'; put 'put ''NjcsMzQ1NTIsMzQ1NjgsMzQ1NzAsMzQ1NzMsMzQ1NjksMzQ1OTUsMzQ2MTksMzQ1OTAsMzQ1OTcsMzQ2MDYsMzQ1ODYsMzQ2MjIsMzQ2MzIsMzQ2MTIsMzQ2MDksMzQ2MDEsMzQ2MTUsMzQ2MjMsMzQ2OTAsMzQ1OTQsMzQ2ODUsMzQ2ODYsMzQ2ODMsMzQ2NTYsMzQ2NzIsMzQ2MzYsMzQ2NzAs''@;'; put 'put ''MzQ2OTksMzQ2NDMsMzQ2NTksMzQ2ODQsMzQ2NjAsMzQ2NDksMzQ2NjEsMzQ3MDcsMzQ3MzUsMzQ3MjgsMzQ3NzAsMzk1MTQsMzk1MTUsMzk1MTYsMzk1MTcsMzk1MTgsMzk1MTksMzk1MjAsMzk1MjEsMzk1MjIsMzk1MjMsMzk1MjQsMzk1MjUsMzk1MjYsMzk1MjcsMzk1MjgsMzk1MjksMzk1''@;'; put 'put ''MzAsMzk1MzEsMzk1MzgsMzk1NTUsMzk1NjEsMzk1NjUsMzk1NjYsMzk1NzIsMzk1NzMsMzk1NzcsMzk1OTAsMzk1OTMsMzk1OTQsMzk1OTUsMzk1OTYsMzk1OTcsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDMsMzk2MDQsMzk2MDUsMzk2MDksMzk2MTEsMzk2MTMsMzk2MTQsMzk2MTUsMzk2MTks''@;'; put 'put ''Mzk2MjAsMzk2MjIsMzk2MjMsMzk2MjQsMzk2MjUsMzk2MjYsMzk2MjksMzk2MzAsMzk2MzEsMzk2MzIsMzk2MzQsMzk2MzYsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDEsMzk2NDIsMzk2NDMsMzk2NDQsMzk2NDUsMzk2NDYsMzk2NDgsMzk2NTAsMzk2NTEsMzk2NTIsMzk2NTMsMzk2NTUsMzk2''@;'; put 'put ''NTYsMzk2NTcsMzk2NTgsMzk2NjAsMzk2NjIsMzk2NjQsMzk2NjUsMzk2NjYsMzk2NjcsMzk2NjgsMzk2NjksMzk2NzAsMzk2NzEsMzk2NzIsMzk2NzQsMzk2NzYsMzk2NzcsMzk2NzgsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODQsMzk2ODUsMzk2ODYsMzQ3NTgsMzQ2OTYsMzQ2OTMs''@;'; put 'put ''MzQ3MzMsMzQ3MTEsMzQ2OTEsMzQ3MzEsMzQ3ODksMzQ3MzIsMzQ3NDEsMzQ3MzksMzQ3NjMsMzQ3NzEsMzQ3NDksMzQ3NjksMzQ3NTIsMzQ3NjIsMzQ3NzksMzQ3OTQsMzQ3ODQsMzQ3OTgsMzQ4MzgsMzQ4MzUsMzQ4MTQsMzQ4MjYsMzQ4NDMsMzQ4NDksMzQ4NzMsMzQ4NzYsMzI1NjYsMzI1''@;'; put 'put ''NzgsMzI1ODAsMzI1ODEsMzMyOTYsMzE0ODIsMzE0ODUsMzE0OTYsMzE0OTEsMzE0OTIsMzE1MDksMzE0OTgsMzE1MzEsMzE1MDMsMzE1NTksMzE1NDQsMzE1MzAsMzE1MTMsMzE1MzQsMzE1MzcsMzE1MjAsMzE1MjUsMzE1MjQsMzE1MzksMzE1NTAsMzE1MTgsMzE1NzYsMzE1NzgsMzE1NTcs''@;'; put 'put ''MzE2MDUsMzE1NjQsMzE1ODEsMzE1ODQsMzE1OTgsMzE2MTEsMzE1ODYsMzE2MDIsMzE2MDEsMzE2MzIsMzE2NTQsMzE2NTUsMzE2NzIsMzE2NjAsMzE2NDUsMzE2NTYsMzE2MjEsMzE2NTgsMzE2NDQsMzE2NTAsMzE2NTksMzE2NjgsMzE2OTcsMzE2ODEsMzE2OTIsMzE3MDksMzE3MDYsMzE3''@;'; put 'put ''MTcsMzE3MTgsMzE3MjIsMzE3NTYsMzE3NDIsMzE3NDAsMzE3NTksMzE3NjYsMzE3NTUsMzk2ODcsMzk2ODksMzk2OTAsMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTcsMzk2OTgsMzk3MDAsMzk3MDEsMzk3MDIsMzk3MDMsMzk3MDQsMzk3MDUsMzk3MDYsMzk3MDcsMzk3MDgs''@;'; put 'put ''Mzk3MDksMzk3MTAsMzk3MTIsMzk3MTMsMzk3MTQsMzk3MTYsMzk3MTcsMzk3MTgsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjMsMzk3MjQsMzk3MjUsMzk3MjYsMzk3MjgsMzk3MjksMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzQsMzk3MzUsMzk3MzYsMzk3MzcsMzk3MzgsMzk3NDEsMzk3''@;'; put 'put ''NDIsMzk3NDMsMzk3NDQsMzk3NTAsMzk3NTQsMzk3NTUsMzk3NTYsMzk3NTgsMzk3NjAsMzk3NjIsMzk3NjMsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NjgsMzk3NjksMzk3NzAsMzk3NzEsMzk3NzIsMzk3NzMsMzk3NzQsMzk3NzUsMzk3NzYsMzk3NzcsMzk3NzgsMzk3NzksMzk3ODAsMzk3ODEs''@;'; put 'put ''Mzk3ODIsMzk3ODMsMzk3ODQsMzk3ODUsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTEsMzk3OTIsMzk3OTMsMzk3OTQsMzk3OTUsMzk3OTYsMzk3OTcsMzk3OTgsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDIsMzk4MDMsMzE3NzUsMzE3ODYsMzE3ODIsMzE4MDAsMzE4MDksMzE4''@;'; put 'put ''MDgsMzMyNzgsMzMyODEsMzMyODIsMzMyODQsMzMyNjAsMzQ4ODQsMzMzMTMsMzMzMTQsMzMzMTUsMzMzMjUsMzMzMjcsMzMzMjAsMzMzMjMsMzMzMzYsMzMzMzksMzMzMzEsMzMzMzIsMzMzNDIsMzMzNDgsMzMzNTMsMzMzNTUsMzMzNTksMzMzNzAsMzMzNzUsMzMzODQsMzQ5NDIsMzQ5NDks''@;'; put 'put ''MzQ5NTIsMzUwMzIsMzUwMzksMzUxNjYsMzI2NjksMzI2NzEsMzI2NzksMzI2ODcsMzI2ODgsMzI2OTAsMzE4NjgsMjU5MjksMzE4ODksMzE5MDEsMzE5MDAsMzE5MDIsMzE5MDYsMzE5MjIsMzE5MzIsMzE5MzMsMzE5MzcsMzE5NDMsMzE5NDgsMzE5NDksMzE5NDQsMzE5NDEsMzE5NTksMzE5''@;'; put 'put ''NzYsMzMzOTAsMjYyODAsMzI3MDMsMzI3MTgsMzI3MjUsMzI3NDEsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTAsMzI3NTUsMzE5OTIsMzIxMTksMzIxNjYsMzIxNzQsMzIzMjcsMzI0MTEsNDA2MzIsNDA2MjgsMzYyMTEsMzYyMjgsMzYyNDQsMzYyNDEsMzYyNzMsMzYxOTksMzYyMDUsMzU5MTEs''@;'; put 'put ''MzU5MTMsMzcxOTQsMzcyMDAsMzcxOTgsMzcxOTksMzcyMjAsMzk4MDQsMzk4MDUsMzk4MDYsMzk4MDcsMzk4MDgsMzk4MDksMzk4MTAsMzk4MTEsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTYsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjAsMzk4MjEsMzk4MjIsMzk4MjMsMzk4MjQsMzk4''@;'; put 'put ''MjUsMzk4MjYsMzk4MjcsMzk4MjgsMzk4MjksMzk4MzAsMzk4MzEsMzk4MzIsMzk4MzMsMzk4MzQsMzk4MzUsMzk4MzYsMzk4MzcsMzk4MzgsMzk4MzksMzk4NDAsMzk4NDEsMzk4NDIsMzk4NDMsMzk4NDQsMzk4NDUsMzk4NDYsMzk4NDcsMzk4NDgsMzk4NDksMzk4NTAsMzk4NTEsMzk4NTIs''@;'; put 'put ''Mzk4NTMsMzk4NTQsMzk4NTUsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NTksMzk4NjAsMzk4NjEsMzk4NjIsMzk4NjMsMzk4NjQsMzk4NjUsMzk4NjYsMzk4NjcsMzk4NjgsMzk4NjksMzk4NzAsMzk4NzEsMzk4NzIsMzk4NzMsMzk4NzQsMzk4NzUsMzk4NzYsMzk4NzcsMzk4NzgsMzk4NzksMzk4''@;'; put 'put ''ODAsMzk4ODEsMzk4ODIsMzk4ODMsMzk4ODQsMzk4ODUsMzk4ODYsMzk4ODcsMzk4ODgsMzk4ODksMzk4OTAsMzk4OTEsMzk4OTIsMzk4OTMsMzk4OTQsMzk4OTUsMzk4OTYsMzk4OTcsMzk4OTgsMzk4OTksMzcyMTgsMzcyMTcsMzcyMzIsMzcyMjUsMzcyMzEsMzcyNDUsMzcyNDYsMzcyMzQs''@;'; put 'put ''MzcyMzYsMzcyNDEsMzcyNjAsMzcyNTMsMzcyNjQsMzcyNjEsMzcyNjUsMzcyODIsMzcyODMsMzcyOTAsMzcyOTMsMzcyOTQsMzcyOTUsMzczMDEsMzczMDAsMzczMDYsMzU5MjUsNDA1NzQsMzYyODAsMzYzMzEsMzYzNTcsMzY0NDEsMzY0NTcsMzYyNzcsMzYyODcsMzYyODQsMzYyODIsMzYy''@;'; put 'put ''OTIsMzYzMTAsMzYzMTEsMzYzMTQsMzYzMTgsMzYzMDIsMzYzMDMsMzYzMTUsMzYyOTQsMzYzMzIsMzYzNDMsMzYzNDQsMzYzMjMsMzYzNDUsMzYzNDcsMzYzMjQsMzYzNjEsMzYzNDksMzYzNzIsMzYzODEsMzYzODMsMzYzOTYsMzYzOTgsMzYzODcsMzYzOTksMzY0MTAsMzY0MTYsMzY0MDks''@;'; put 'put ''MzY0MDUsMzY0MTMsMzY0MDEsMzY0MjUsMzY0MTcsMzY0MTgsMzY0MzMsMzY0MzQsMzY0MjYsMzY0NjQsMzY0NzAsMzY0NzYsMzY0NjMsMzY0NjgsMzY0ODUsMzY0OTUsMzY1MDAsMzY0OTYsMzY1MDgsMzY1MTAsMzU5NjAsMzU5NzAsMzU5NzgsMzU5NzMsMzU5OTIsMzU5ODgsMjYwMTEsMzUy''@;'; put 'put ''ODYsMzUyOTQsMzUyOTAsMzUyOTIsMzk5MDAsMzk5MDEsMzk5MDIsMzk5MDMsMzk5MDQsMzk5MDUsMzk5MDYsMzk5MDcsMzk5MDgsMzk5MDksMzk5MTAsMzk5MTEsMzk5MTIsMzk5MTMsMzk5MTQsMzk5MTUsMzk5MTYsMzk5MTcsMzk5MTgsMzk5MTksMzk5MjAsMzk5MjEsMzk5MjIsMzk5MjMs''@;'; put 'put ''Mzk5MjQsMzk5MjUsMzk5MjYsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzEsMzk5MzIsMzk5MzMsMzk5MzQsMzk5MzUsMzk5MzYsMzk5MzcsMzk5MzgsMzk5MzksMzk5NDAsMzk5NDEsMzk5NDIsMzk5NDMsMzk5NDQsMzk5NDUsMzk5NDYsMzk5NDcsMzk5NDgsMzk5NDksMzk5NTAsMzk5''@;'; put 'put ''NTEsMzk5NTIsMzk5NTMsMzk5NTQsMzk5NTUsMzk5NTYsMzk5NTcsMzk5NTgsMzk5NTksMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjMsMzk5NjQsMzk5NjUsMzk5NjYsMzk5NjcsMzk5NjgsMzk5NjksMzk5NzAsMzk5NzEsMzk5NzIsMzk5NzMsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5Nzgs''@;'; put 'put ''Mzk5NzksMzk5ODAsMzk5ODEsMzk5ODIsMzk5ODMsMzk5ODQsMzk5ODUsMzk5ODYsMzk5ODcsMzk5ODgsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTIsMzk5OTMsMzk5OTQsMzk5OTUsMzUzMDEsMzUzMDcsMzUzMTEsMzUzOTAsMzU2MjIsMzg3MzksMzg2MzMsMzg2NDMsMzg2MzksMzg2NjIsMzg2''@;'; put 'put ''NTcsMzg2NjQsMzg2NzEsMzg2NzAsMzg2OTgsMzg3MDEsMzg3MDQsMzg3MTgsNDA4MzIsNDA4MzUsNDA4MzcsNDA4MzgsNDA4MzksNDA4NDAsNDA4NDEsNDA4NDIsNDA4NDQsNDA3MDIsNDA3MTUsNDA3MTcsMzg1ODUsMzg1ODgsMzg1ODksMzg2MDYsMzg2MTAsMzA2NTUsMzg2MjQsMzc1MTgs''@;'; put 'put ''Mzc1NTAsMzc1NzYsMzc2OTQsMzc3MzgsMzc4MzQsMzc3NzUsMzc5NTAsMzc5OTUsNDAwNjMsNDAwNjYsNDAwNjksNDAwNzAsNDAwNzEsNDAwNzIsMzEyNjcsNDAwNzUsNDAwNzgsNDAwODAsNDAwODEsNDAwODIsNDAwODQsNDAwODUsNDAwOTAsNDAwOTEsNDAwOTQsNDAwOTUsNDAwOTYsNDAw''@;'; put 'put ''OTcsNDAwOTgsNDAwOTksNDAxMDEsNDAxMDIsNDAxMDMsNDAxMDQsNDAxMDUsNDAxMDcsNDAxMDksNDAxMTAsNDAxMTIsNDAxMTMsNDAxMTQsNDAxMTUsNDAxMTYsNDAxMTcsNDAxMTgsNDAxMTksNDAxMjIsNDAxMjMsNDAxMjQsNDAxMjUsNDAxMzIsNDAxMzMsNDAxMzQsNDAxMzUsNDAxMzgs''@;'; put 'put ''NDAxMzksMzk5OTYsMzk5OTcsMzk5OTgsMzk5OTksNGU0LDQwMDAxLDQwMDAyLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA2LDQwMDA3LDQwMDA4LDQwMDA5LDQwMDEwLDQwMDExLDQwMDEyLDQwMDEzLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE3LDQwMDE4LDQwMDE5LDQwMDIwLDQwMDIxLDQwMDIy''@;'; put 'put ''LDQwMDIzLDQwMDI0LDQwMDI1LDQwMDI2LDQwMDI3LDQwMDI4LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDMyLDQwMDMzLDQwMDM0LDQwMDM1LDQwMDM2LDQwMDM3LDQwMDM4LDQwMDM5LDQwMDQwLDQwMDQxLDQwMDQyLDQwMDQzLDQwMDQ0LDQwMDQ1LDQwMDQ2LDQwMDQ3LDQwMDQ4LDQwMDQ5LDQw''@;'; put 'put ''MDUwLDQwMDUxLDQwMDUyLDQwMDUzLDQwMDU0LDQwMDU1LDQwMDU2LDQwMDU3LDQwMDU4LDQwMDU5LDQwMDYxLDQwMDYyLDQwMDY0LDQwMDY3LDQwMDY4LDQwMDczLDQwMDc0LDQwMDc2LDQwMDc5LDQwMDgzLDQwMDg2LDQwMDg3LDQwMDg4LDQwMDg5LDQwMDkzLDQwMTA2LDQwMTA4LDQwMTEx''@;'; put 'put ''LDQwMTIxLDQwMTI2LDQwMTI3LDQwMTI4LDQwMTI5LDQwMTMwLDQwMTM2LDQwMTM3LDQwMTQ1LDQwMTQ2LDQwMTU0LDQwMTU1LDQwMTYwLDQwMTYxLDQwMTQwLDQwMTQxLDQwMTQyLDQwMTQzLDQwMTQ0LDQwMTQ3LDQwMTQ4LDQwMTQ5LDQwMTUxLDQwMTUyLDQwMTUzLDQwMTU2LDQwMTU3LDQw''@;'; put 'put ''MTU5LDQwMTYyLDM4NzgwLDM4Nzg5LDM4ODAxLDM4ODAyLDM4ODA0LDM4ODMxLDM4ODI3LDM4ODE5LDM4ODM0LDM4ODM2LDM5NjAxLDM5NjAwLDM5NjA3LDQwNTM2LDM5NjA2LDM5NjEwLDM5NjEyLDM5NjE3LDM5NjE2LDM5NjIxLDM5NjE4LDM5NjI3LDM5NjI4LDM5NjMzLDM5NzQ5LDM5NzQ3''@;'; put 'put ''LDM5NzUxLDM5NzUzLDM5NzUyLDM5NzU3LDM5NzYxLDM5MTQ0LDM5MTgxLDM5MjE0LDM5MjUzLDM5MjUyLDM5NjQ3LDM5NjQ5LDM5NjU0LDM5NjYzLDM5NjU5LDM5Njc1LDM5NjYxLDM5NjczLDM5Njg4LDM5Njk1LDM5Njk5LDM5NzExLDM5NzE1LDQwNjM3LDQwNjM4LDMyMzE1LDQwNTc4LDQw''@;'; put 'put ''NTgzLDQwNTg0LDQwNTg3LDQwNTk0LDM3ODQ2LDQwNjA1LDQwNjA3LDQwNjY3LDQwNjY4LDQwNjY5LDQwNjcyLDQwNjcxLDQwNjc0LDQwNjgxLDQwNjc5LDQwNjc3LDQwNjgyLDQwNjg3LDQwNzM4LDQwNzQ4LDQwNzUxLDQwNzYxLDQwNzU5LDQwNzY1LDQwNzY2LDQwNzcyLDQwMTYzLDQwMTY0''@;'; put 'put ''LDQwMTY1LDQwMTY2LDQwMTY3LDQwMTY4LDQwMTY5LDQwMTcwLDQwMTcxLDQwMTcyLDQwMTczLDQwMTc0LDQwMTc1LDQwMTc2LDQwMTc3LDQwMTc4LDQwMTc5LDQwMTgwLDQwMTgxLDQwMTgyLDQwMTgzLDQwMTg0LDQwMTg1LDQwMTg2LDQwMTg3LDQwMTg4LDQwMTg5LDQwMTkwLDQwMTkxLDQw''@;'; put 'put ''MTkyLDQwMTkzLDQwMTk0LDQwMTk1LDQwMTk2LDQwMTk3LDQwMTk4LDQwMTk5LDQwMjAwLDQwMjAxLDQwMjAyLDQwMjAzLDQwMjA0LDQwMjA1LDQwMjA2LDQwMjA3LDQwMjA4LDQwMjA5LDQwMjEwLDQwMjExLDQwMjEyLDQwMjEzLDQwMjE0LDQwMjE1LDQwMjE2LDQwMjE3LDQwMjE4LDQwMjE5''@;'; put 'put ''LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjIzLDQwMjI0LDQwMjI1LDQwMjI2LDQwMjI3LDQwMjI4LDQwMjI5LDQwMjMwLDQwMjMxLDQwMjMyLDQwMjMzLDQwMjM0LDQwMjM1LDQwMjM2LDQwMjM3LDQwMjM4LDQwMjM5LDQwMjQwLDQwMjQxLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjQ1LDQwMjQ2LDQw''@;'; put 'put ''MjQ3LDQwMjQ4LDQwMjQ5LDQwMjUwLDQwMjUxLDQwMjUyLDQwMjUzLDQwMjU0LDQwMjU1LDQwMjU2LDQwMjU3LDQwMjU4LDU3OTA4LDU3OTA5LDU3OTEwLDU3OTExLDU3OTEyLDU3OTEzLDU3OTE0LDU3OTE1LDU3OTE2LDU3OTE3LDU3OTE4LDU3OTE5LDU3OTIwLDU3OTIxLDU3OTIyLDU3OTIz''@;'; put 'put ''LDU3OTI0LDU3OTI1LDU3OTI2LDU3OTI3LDU3OTI4LDU3OTI5LDU3OTMwLDU3OTMxLDU3OTMyLDU3OTMzLDU3OTM0LDU3OTM1LDU3OTM2LDU3OTM3LDU3OTM4LDU3OTM5LDU3OTQwLDU3OTQxLDU3OTQyLDU3OTQzLDU3OTQ0LDU3OTQ1LDU3OTQ2LDU3OTQ3LDU3OTQ4LDU3OTQ5LDU3OTUwLDU3''@;'; put 'put ''OTUxLDU3OTUyLDU3OTUzLDU3OTU0LDU3OTU1LDU3OTU2LDU3OTU3LDU3OTU4LDU3OTU5LDU3OTYwLDU3OTYxLDU3OTYyLDU3OTYzLDU3OTY0LDU3OTY1LDU3OTY2LDU3OTY3LDU3OTY4LDU3OTY5LDU3OTcwLDU3OTcxLDU3OTcyLDU3OTczLDU3OTc0LDU3OTc1LDU3OTc2LDU3OTc3LDU3OTc4''@;'; put 'put ''LDU3OTc5LDU3OTgwLDU3OTgxLDU3OTgyLDU3OTgzLDU3OTg0LDU3OTg1LDU3OTg2LDU3OTg3LDU3OTg4LDU3OTg5LDU3OTkwLDU3OTkxLDU3OTkyLDU3OTkzLDU3OTk0LDU3OTk1LDU3OTk2LDU3OTk3LDU3OTk4LDU3OTk5LDU4ZTMsNTgwMDEsNDAyNTksNDAyNjAsNDAyNjEsNDAyNjIsNDAy''@;'; put 'put ''NjMsNDAyNjQsNDAyNjUsNDAyNjYsNDAyNjcsNDAyNjgsNDAyNjksNDAyNzAsNDAyNzEsNDAyNzIsNDAyNzMsNDAyNzQsNDAyNzUsNDAyNzYsNDAyNzcsNDAyNzgsNDAyNzksNDAyODAsNDAyODEsNDAyODIsNDAyODMsNDAyODQsNDAyODUsNDAyODYsNDAyODcsNDAyODgsNDAyODksNDAyOTAs''@;'; put 'put ''NDAyOTEsNDAyOTIsNDAyOTMsNDAyOTQsNDAyOTUsNDAyOTYsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDAsNDAzMDEsNDAzMDIsNDAzMDMsNDAzMDQsNDAzMDUsNDAzMDYsNDAzMDcsNDAzMDgsNDAzMDksNDAzMTAsNDAzMTEsNDAzMTIsNDAzMTMsNDAzMTQsNDAzMTUsNDAzMTYsNDAzMTcsNDAz''@;'; put 'put ''MTgsNDAzMTksNDAzMjAsNDAzMjEsNDAzMjIsNDAzMjMsNDAzMjQsNDAzMjUsNDAzMjYsNDAzMjcsNDAzMjgsNDAzMjksNDAzMzAsNDAzMzEsNDAzMzIsNDAzMzMsNDAzMzQsNDAzMzUsNDAzMzYsNDAzMzcsNDAzMzgsNDAzMzksNDAzNDAsNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNDUs''@;'; put 'put ''NDAzNDYsNDAzNDcsNDAzNDgsNDAzNDksNDAzNTAsNDAzNTEsNDAzNTIsNDAzNTMsNDAzNTQsNTgwMDIsNTgwMDMsNTgwMDQsNTgwMDUsNTgwMDYsNTgwMDcsNTgwMDgsNTgwMDksNTgwMTAsNTgwMTEsNTgwMTIsNTgwMTMsNTgwMTQsNTgwMTUsNTgwMTYsNTgwMTcsNTgwMTgsNTgwMTksNTgw''@;'; put 'put ''MjAsNTgwMjEsNTgwMjIsNTgwMjMsNTgwMjQsNTgwMjUsNTgwMjYsNTgwMjcsNTgwMjgsNTgwMjksNTgwMzAsNTgwMzEsNTgwMzIsNTgwMzMsNTgwMzQsNTgwMzUsNTgwMzYsNTgwMzcsNTgwMzgsNTgwMzksNTgwNDAsNTgwNDEsNTgwNDIsNTgwNDMsNTgwNDQsNTgwNDUsNTgwNDYsNTgwNDcs''@;'; put 'put ''NTgwNDgsNTgwNDksNTgwNTAsNTgwNTEsNTgwNTIsNTgwNTMsNTgwNTQsNTgwNTUsNTgwNTYsNTgwNTcsNTgwNTgsNTgwNTksNTgwNjAsNTgwNjEsNTgwNjIsNTgwNjMsNTgwNjQsNTgwNjUsNTgwNjYsNTgwNjcsNTgwNjgsNTgwNjksNTgwNzAsNTgwNzEsNTgwNzIsNTgwNzMsNTgwNzQsNTgw''@;'; put 'put ''NzUsNTgwNzYsNTgwNzcsNTgwNzgsNTgwNzksNTgwODAsNTgwODEsNTgwODIsNTgwODMsNTgwODQsNTgwODUsNTgwODYsNTgwODcsNTgwODgsNTgwODksNTgwOTAsNTgwOTEsNTgwOTIsNTgwOTMsNTgwOTQsNTgwOTUsNDAzNTUsNDAzNTYsNDAzNTcsNDAzNTgsNDAzNTksNDAzNjAsNDAzNjEs''@;'; put 'put ''NDAzNjIsNDAzNjMsNDAzNjQsNDAzNjUsNDAzNjYsNDAzNjcsNDAzNjgsNDAzNjksNDAzNzAsNDAzNzEsNDAzNzIsNDAzNzMsNDAzNzQsNDAzNzUsNDAzNzYsNDAzNzcsNDAzNzgsNDAzNzksNDAzODAsNDAzODEsNDAzODIsNDAzODMsNDAzODQsNDAzODUsNDAzODYsNDAzODcsNDAzODgsNDAz''@;'; put 'put ''ODksNDAzOTAsNDAzOTEsNDAzOTIsNDAzOTMsNDAzOTQsNDAzOTUsNDAzOTYsNDAzOTcsNDAzOTgsNDAzOTksNDA0MDAsNDA0MDEsNDA0MDIsNDA0MDMsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MDgsNDA0MDksNDA0MTAsNDA0MTEsNDA0MTIsNDA0MTMsNDA0MTQsNDA0MTUsNDA0MTYs''@;'; put 'put ''NDA0MTcsNDA0MTgsNDA0MTksNDA0MjAsNDA0MjEsNDA0MjIsNDA0MjMsNDA0MjQsNDA0MjUsNDA0MjYsNDA0MjcsNDA0MjgsNDA0MjksNDA0MzAsNDA0MzEsNDA0MzIsNDA0MzMsNDA0MzQsNDA0MzUsNDA0MzYsNDA0MzcsNDA0MzgsNDA0MzksNDA0NDAsNDA0NDEsNDA0NDIsNDA0NDMsNDA0''@;'; put 'put ''NDQsNDA0NDUsNDA0NDYsNDA0NDcsNDA0NDgsNDA0NDksNDA0NTAsNTgwOTYsNTgwOTcsNTgwOTgsNTgwOTksNTgxMDAsNTgxMDEsNTgxMDIsNTgxMDMsNTgxMDQsNTgxMDUsNTgxMDYsNTgxMDcsNTgxMDgsNTgxMDksNTgxMTAsNTgxMTEsNTgxMTIsNTgxMTMsNTgxMTQsNTgxMTUsNTgxMTYs''@;'; put 'put ''NTgxMTcsNTgxMTgsNTgxMTksNTgxMjAsNTgxMjEsNTgxMjIsNTgxMjMsNTgxMjQsNTgxMjUsNTgxMjYsNTgxMjcsNTgxMjgsNTgxMjksNTgxMzAsNTgxMzEsNTgxMzIsNTgxMzMsNTgxMzQsNTgxMzUsNTgxMzYsNTgxMzcsNTgxMzgsNTgxMzksNTgxNDAsNTgxNDEsNTgxNDIsNTgxNDMsNTgx''@;'; put 'put ''NDQsNTgxNDUsNTgxNDYsNTgxNDcsNTgxNDgsNTgxNDksNTgxNTAsNTgxNTEsNTgxNTIsNTgxNTMsNTgxNTQsNTgxNTUsNTgxNTYsNTgxNTcsNTgxNTgsNTgxNTksNTgxNjAsNTgxNjEsNTgxNjIsNTgxNjMsNTgxNjQsNTgxNjUsNTgxNjYsNTgxNjcsNTgxNjgsNTgxNjksNTgxNzAsNTgxNzEs''@;'; put 'put ''NTgxNzIsNTgxNzMsNTgxNzQsNTgxNzUsNTgxNzYsNTgxNzcsNTgxNzgsNTgxNzksNTgxODAsNTgxODEsNTgxODIsNTgxODMsNTgxODQsNTgxODUsNTgxODYsNTgxODcsNTgxODgsNTgxODksNDA0NTEsNDA0NTIsNDA0NTMsNDA0NTQsNDA0NTUsNDA0NTYsNDA0NTcsNDA0NTgsNDA0NTksNDA0''@;'; put 'put ''NjAsNDA0NjEsNDA0NjIsNDA0NjMsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjcsNDA0NjgsNDA0NjksNDA0NzAsNDA0NzEsNDA0NzIsNDA0NzMsNDA0NzQsNDA0NzUsNDA0NzYsNDA0NzcsNDA0NzgsNDA0ODQsNDA0ODcsNDA0OTQsNDA0OTYsNDA1MDAsNDA1MDcsNDA1MDgsNDA1MTIsNDA1MjUs''@;'; put 'put ''NDA1MjgsNDA1MzAsNDA1MzEsNDA1MzIsNDA1MzQsNDA1MzcsNDA1NDEsNDA1NDMsNDA1NDQsNDA1NDUsNDA1NDYsNDA1NDksNDA1NTgsNDA1NTksNDA1NjIsNDA1NjQsNDA1NjUsNDA1NjYsNDA1NjcsNDA1NjgsNDA1NjksNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzMsNDA1NzYsNDA1NzcsNDA1''@;'; put 'put ''NzksNDA1ODAsNDA1ODEsNDA1ODIsNDA1ODUsNDA1ODYsNDA1ODgsNDA1ODksNDA1OTAsNDA1OTEsNDA1OTIsNDA1OTMsNDA1OTYsNDA1OTcsNDA1OTgsNDA1OTksNDA2MDAsNDA2MDEsNDA2MDIsNDA2MDMsNDA2MDQsNDA2MDYsNDA2MDgsNDA2MDksNDA2MTAsNDA2MTEsNDA2MTIsNDA2MTMs''@;'; put 'put ''NDA2MTUsNDA2MTYsNDA2MTcsNDA2MTgsNTgxOTAsNTgxOTEsNTgxOTIsNTgxOTMsNTgxOTQsNTgxOTUsNTgxOTYsNTgxOTcsNTgxOTgsNTgxOTksNTgyMDAsNTgyMDEsNTgyMDIsNTgyMDMsNTgyMDQsNTgyMDUsNTgyMDYsNTgyMDcsNTgyMDgsNTgyMDksNTgyMTAsNTgyMTEsNTgyMTIsNTgy''@;'; put 'put ''MTMsNTgyMTQsNTgyMTUsNTgyMTYsNTgyMTcsNTgyMTgsNTgyMTksNTgyMjAsNTgyMjEsNTgyMjIsNTgyMjMsNTgyMjQsNTgyMjUsNTgyMjYsNTgyMjcsNTgyMjgsNTgyMjksNTgyMzAsNTgyMzEsNTgyMzIsNTgyMzMsNTgyMzQsNTgyMzUsNTgyMzYsNTgyMzcsNTgyMzgsNTgyMzksNTgyNDAs''@;'; put 'put ''NTgyNDEsNTgyNDIsNTgyNDMsNTgyNDQsNTgyNDUsNTgyNDYsNTgyNDcsNTgyNDgsNTgyNDksNTgyNTAsNTgyNTEsNTgyNTIsNTgyNTMsNTgyNTQsNTgyNTUsNTgyNTYsNTgyNTcsNTgyNTgsNTgyNTksNTgyNjAsNTgyNjEsNTgyNjIsNTgyNjMsNTgyNjQsNTgyNjUsNTgyNjYsNTgyNjcsNTgy''@;'; put 'put ''NjgsNTgyNjksNTgyNzAsNTgyNzEsNTgyNzIsNTgyNzMsNTgyNzQsNTgyNzUsNTgyNzYsNTgyNzcsNTgyNzgsNTgyNzksNTgyODAsNTgyODEsNTgyODIsNTgyODMsNDA2MTksNDA2MjAsNDA2MjEsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjUsNDA2MjYsNDA2MjcsNDA2MjksNDA2MzAsNDA2MzEs''@;'; put 'put ''NDA2MzMsNDA2MzQsNDA2MzYsNDA2MzksNDA2NDAsNDA2NDEsNDA2NDIsNDA2NDMsNDA2NDUsNDA2NDYsNDA2NDcsNDA2NDgsNDA2NTAsNDA2NTEsNDA2NTIsNDA2NTYsNDA2NTgsNDA2NTksNDA2NjEsNDA2NjIsNDA2NjMsNDA2NjUsNDA2NjYsNDA2NzAsNDA2NzMsNDA2NzUsNDA2NzYsNDA2''@;'; put 'put ''NzgsNDA2ODAsNDA2ODMsNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTEsNDA2OTIsNDA2OTMsNDA2OTQsNDA2OTUsNDA2OTYsNDA2OTgsNDA3MDEsNDA3MDMsNDA3MDQsNDA3MDUsNDA3MDYsNDA3MDcsNDA3MDgsNDA3MDksNDA3MTAsNDA3MTEsNDA3MTIsNDA3MTMs''@;'; put 'put ''NDA3MTQsNDA3MTYsNDA3MTksNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjUsNDA3MjYsNDA3MjgsNDA3MzAsNDA3MzEsNDA3MzIsNDA3MzMsNDA3MzQsNDA3MzUsNDA3MzcsNDA3MzksNDA3NDAsNDA3NDEsNDA3NDIsNDA3NDMsNDA3NDQsNDA3NDUsNDA3NDYsNDA3NDcsNDA3NDksNDA3NTAsNDA3''@;'; put 'put ''NTIsNDA3NTMsNTgyODQsNTgyODUsNTgyODYsNTgyODcsNTgyODgsNTgyODksNTgyOTAsNTgyOTEsNTgyOTIsNTgyOTMsNTgyOTQsNTgyOTUsNTgyOTYsNTgyOTcsNTgyOTgsNTgyOTksNTgzMDAsNTgzMDEsNTgzMDIsNTgzMDMsNTgzMDQsNTgzMDUsNTgzMDYsNTgzMDcsNTgzMDgsNTgzMDks''@;'; put 'put ''NTgzMTAsNTgzMTEsNTgzMTIsNTgzMTMsNTgzMTQsNTgzMTUsNTgzMTYsNTgzMTcsNTgzMTgsNTgzMTksNTgzMjAsNTgzMjEsNTgzMjIsNTgzMjMsNTgzMjQsNTgzMjUsNTgzMjYsNTgzMjcsNTgzMjgsNTgzMjksNTgzMzAsNTgzMzEsNTgzMzIsNTgzMzMsNTgzMzQsNTgzMzUsNTgzMzYsNTgz''@;'; put 'put ''MzcsNTgzMzgsNTgzMzksNTgzNDAsNTgzNDEsNTgzNDIsNTgzNDMsNTgzNDQsNTgzNDUsNTgzNDYsNTgzNDcsNTgzNDgsNTgzNDksNTgzNTAsNTgzNTEsNTgzNTIsNTgzNTMsNTgzNTQsNTgzNTUsNTgzNTYsNTgzNTcsNTgzNTgsNTgzNTksNTgzNjAsNTgzNjEsNTgzNjIsNTgzNjMsNTgzNjQs''@;'; put 'put ''NTgzNjUsNTgzNjYsNTgzNjcsNTgzNjgsNTgzNjksNTgzNzAsNTgzNzEsNTgzNzIsNTgzNzMsNTgzNzQsNTgzNzUsNTgzNzYsNTgzNzcsNDA3NTQsNDA3NTUsNDA3NTYsNDA3NTcsNDA3NTgsNDA3NjAsNDA3NjIsNDA3NjQsNDA3NjcsNDA3NjgsNDA3NjksNDA3NzAsNDA3NzEsNDA3NzMsNDA3''@;'; put 'put ''NzQsNDA3NzUsNDA3NzYsNDA3NzcsNDA3NzgsNDA3NzksNDA3ODAsNDA3ODEsNDA3ODIsNDA3ODMsNDA3ODYsNDA3ODcsNDA3ODgsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTMsNDA3OTQsNDA3OTUsNDA3OTYsNDA3OTcsNDA3OTgsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDIsNDA4MDMs''@;'; put 'put ''NDA4MDQsNDA4MDUsNDA4MDYsNDA4MDcsNDA4MDgsNDA4MDksNDA4MTAsNDA4MTEsNDA4MTIsNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTgsNDA4MTksNDA4MjAsNDA4MjEsNDA4MjIsNDA4MjMsNDA4MjQsNDA4MjUsNDA4MjYsNDA4MjcsNDA4MjgsNDA4MjksNDA4MzAsNDA4''@;'; put 'put ''MzMsNDA4MzQsNDA4NDUsNDA4NDYsNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTEsNDA4NTIsNDA4NTMsNDA4NTQsNDA4NTUsNDA4NTYsNDA4NjAsNDA4NjEsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjgsNDA4NjksNjM3ODgsNjM4NjUsNjM4OTMsNjM5NzUsNjM5ODUsNTgzNzgs''@;'; put 'put ''NTgzNzksNTgzODAsNTgzODEsNTgzODIsNTgzODMsNTgzODQsNTgzODUsNTgzODYsNTgzODcsNTgzODgsNTgzODksNTgzOTAsNTgzOTEsNTgzOTIsNTgzOTMsNTgzOTQsNTgzOTUsNTgzOTYsNTgzOTcsNTgzOTgsNTgzOTksNTg0MDAsNTg0MDEsNTg0MDIsNTg0MDMsNTg0MDQsNTg0MDUsNTg0''@;'; put 'put ''MDYsNTg0MDcsNTg0MDgsNTg0MDksNTg0MTAsNTg0MTEsNTg0MTIsNTg0MTMsNTg0MTQsNTg0MTUsNTg0MTYsNTg0MTcsNTg0MTgsNTg0MTksNTg0MjAsNTg0MjEsNTg0MjIsNTg0MjMsNTg0MjQsNTg0MjUsNTg0MjYsNTg0MjcsNTg0MjgsNTg0MjksNTg0MzAsNTg0MzEsNTg0MzIsNTg0MzMs''@;'; put 'put ''NTg0MzQsNTg0MzUsNTg0MzYsNTg0MzcsNTg0MzgsNTg0MzksNTg0NDAsNTg0NDEsNTg0NDIsNTg0NDMsNTg0NDQsNTg0NDUsNTg0NDYsNTg0NDcsNTg0NDgsNTg0NDksNTg0NTAsNTg0NTEsNTg0NTIsNTg0NTMsNTg0NTQsNTg0NTUsNTg0NTYsNTg0NTcsNTg0NTgsNTg0NTksNTg0NjAsNTg0''@;'; put 'put ''NjEsNTg0NjIsNTg0NjMsNTg0NjQsNTg0NjUsNTg0NjYsNTg0NjcsNTg0NjgsNTg0NjksNTg0NzAsNTg0NzEsNjQwMTIsNjQwMTMsNjQwMTQsNjQwMTUsNjQwMTcsNjQwMTksNjQwMjAsNjQwMjQsNjQwMzEsNjQwMzIsNjQwMzMsNjQwMzUsNjQwMzYsNjQwMzksNjQwNDAsNjQwNDEsMTE5MDUs''@;'; put 'put ''NTk0MTQsNTk0MTUsNTk0MTYsMTE5MDgsMTM0MjcsMTMzODMsMTE5MTIsMTE5MTUsNTk0MjIsMTM3MjYsMTM4NTAsMTM4MzgsMTE5MTYsMTE5MjcsMTQ3MDIsMTQ2MTYsNTk0MzAsMTQ3OTksMTQ4MTUsMTQ5NjMsMTQ4MDAsNTk0MzUsNTk0MzYsMTUxODIsMTU0NzAsMTU1ODQsMTE5NDMsNTk0''@;'; put 'put ''NDEsNTk0NDIsMTE5NDYsMTY0NzAsMTY3MzUsMTE5NTAsMTcyMDcsMTE5NTUsMTE5NTgsMTE5NTksNTk0NTEsMTczMjksMTczMjQsMTE5NjMsMTczNzMsMTc2MjIsMTgwMTcsMTc5OTYsNTk0NTksMTgyMTEsMTgyMTcsMTgzMDAsMTgzMTcsMTE5NzgsMTg3NTksMTg4MTAsMTg4MTMsMTg4MTgs''@;'; put 'put ''MTg4MTksMTg4MjEsMTg4MjIsMTg4NDcsMTg4NDMsMTg4NzEsMTg4NzAsNTk0NzYsNTk0NzcsMTk2MTksMTk2MTUsMTk2MTYsMTk2MTcsMTk1NzUsMTk2MTgsMTk3MzEsMTk3MzIsMTk3MzMsMTk3MzQsMTk3MzUsMTk3MzYsMTk3MzcsMTk4ODYsNTk0OTIsNTg0NzIsNTg0NzMsNTg0NzQsNTg0''@;'; put 'put ''NzUsNTg0NzYsNTg0NzcsNTg0NzgsNTg0NzksNTg0ODAsNTg0ODEsNTg0ODIsNTg0ODMsNTg0ODQsNTg0ODUsNTg0ODYsNTg0ODcsNTg0ODgsNTg0ODksNTg0OTAsNTg0OTEsNTg0OTIsNTg0OTMsNTg0OTQsNTg0OTUsNTg0OTYsNTg0OTcsNTg0OTgsNTg0OTksNTg1MDAsNTg1MDEsNTg1MDIs''@;'; put 'put ''NTg1MDMsNTg1MDQsNTg1MDUsNTg1MDYsNTg1MDcsNTg1MDgsNTg1MDksNTg1MTAsNTg1MTEsNTg1MTIsNTg1MTMsNTg1MTQsNTg1MTUsNTg1MTYsNTg1MTcsNTg1MTgsNTg1MTksNTg1MjAsNTg1MjEsNTg1MjIsNTg1MjMsNTg1MjQsNTg1MjUsNTg1MjYsNTg1MjcsNTg1MjgsNTg1MjksNTg1''@;'; put 'put ''MzAsNTg1MzEsNTg1MzIsNTg1MzMsNTg1MzQsNTg1MzUsNTg1MzYsNTg1MzcsNTg1MzgsNTg1MzksNTg1NDAsNTg1NDEsNTg1NDIsNTg1NDMsNTg1NDQsNTg1NDUsNTg1NDYsNTg1NDcsNTg1NDgsNTg1NDksNTg1NTAsNTg1NTEsNTg1NTIsNTg1NTMsNTg1NTQsNTg1NTUsNTg1NTYsNTg1NTcs''@;'; put 'put ''NTg1NTgsNTg1NTksNTg1NjAsNTg1NjEsNTg1NjIsNTg1NjMsNTg1NjQsNTg1NjVdLCJnYjE4MDMwLXJhbmdlcyI6W1swLDEyOF0sWzM2LDE2NV0sWzM4LDE2OV0sWzQ1LDE3OF0sWzUwLDE4NF0sWzgxLDIxNl0sWzg5LDIyNl0sWzk1LDIzNV0sWzk2LDIzOF0sWzEwMCwyNDRdLFsxMDMsMjQ4''@;'; put 'put ''XSxbMTA0LDI1MV0sWzEwNSwyNTNdLFsxMDksMjU4XSxbMTI2LDI3Nl0sWzEzMywyODRdLFsxNDgsMzAwXSxbMTcyLDMyNV0sWzE3NSwzMjldLFsxNzksMzM0XSxbMjA4LDM2NF0sWzMwNiw0NjNdLFszMDcsNDY1XSxbMzA4LDQ2N10sWzMwOSw0NjldLFszMTAsNDcxXSxbMzExLDQ3M10sWzMx''@;'; put 'put ''Miw0NzVdLFszMTMsNDc3XSxbMzQxLDUwNl0sWzQyOCw1OTRdLFs0NDMsNjEwXSxbNTQ0LDcxMl0sWzU0NSw3MTZdLFs1NTgsNzMwXSxbNzQxLDkzMF0sWzc0Miw5MzhdLFs3NDksOTYyXSxbNzUwLDk3MF0sWzgwNSwxMDI2XSxbODE5LDExMDRdLFs4MjAsMTEwNl0sWzc5MjIsODIwOV0sWzc5''@;'; put 'put ''MjQsODIxNV0sWzc5MjUsODIxOF0sWzc5MjcsODIyMl0sWzc5MzQsODIzMV0sWzc5NDMsODI0MV0sWzc5NDQsODI0NF0sWzc5NDUsODI0Nl0sWzc5NTAsODI1Ml0sWzgwNjIsODM2NV0sWzgxNDgsODQ1Ml0sWzgxNDksODQ1NF0sWzgxNTIsODQ1OF0sWzgxNjQsODQ3MV0sWzgxNzQsODQ4Ml0s''@;'; put 'put ''WzgyMzYsODU1Nl0sWzgyNDAsODU3MF0sWzgyNjIsODU5Nl0sWzgyNjQsODYwMl0sWzgzNzQsODcxM10sWzgzODAsODcyMF0sWzgzODEsODcyMl0sWzgzODQsODcyNl0sWzgzODgsODczMV0sWzgzOTAsODczN10sWzgzOTIsODc0MF0sWzgzOTMsODc0Ml0sWzgzOTQsODc0OF0sWzgzOTYsODc1''@;'; put 'put ''MV0sWzg0MDEsODc2MF0sWzg0MDYsODc2Nl0sWzg0MTYsODc3N10sWzg0MTksODc4MV0sWzg0MjQsODc4N10sWzg0MzcsODgwMl0sWzg0MzksODgwOF0sWzg0NDUsODgxNl0sWzg0ODIsODg1NF0sWzg0ODUsODg1OF0sWzg0OTYsODg3MF0sWzg1MjEsODg5Nl0sWzg2MDMsODk3OV0sWzg5MzYs''@;'; put 'put ''OTMyMl0sWzg5NDYsOTM3Ml0sWzkwNDYsOTU0OF0sWzkwNTAsOTU4OF0sWzkwNjMsOTYxNl0sWzkwNjYsOTYyMl0sWzkwNzYsOTYzNF0sWzkwOTIsOTY1Ml0sWzkxMDAsOTY2Ml0sWzkxMDgsOTY3Ml0sWzkxMTEsOTY3Nl0sWzkxMTMsOTY4MF0sWzkxMzEsOTcwMl0sWzkxNjIsOTczNV0sWzkx''@;'; put 'put ''NjQsOTczOF0sWzkyMTgsOTc5M10sWzkyMTksOTc5NV0sWzExMzI5LDExOTA2XSxbMTEzMzEsMTE5MDldLFsxMTMzNCwxMTkxM10sWzExMzM2LDExOTE3XSxbMTEzNDYsMTE5MjhdLFsxMTM2MSwxMTk0NF0sWzExMzYzLDExOTQ3XSxbMTEzNjYsMTE5NTFdLFsxMTM3MCwxMTk1Nl0sWzExMzcy''@;'; put 'put ''LDExOTYwXSxbMTEzNzUsMTE5NjRdLFsxMTM4OSwxMTk3OV0sWzExNjgyLDEyMjg0XSxbMTE2ODYsMTIyOTJdLFsxMTY4NywxMjMxMl0sWzExNjkyLDEyMzE5XSxbMTE2OTQsMTIzMzBdLFsxMTcxNCwxMjM1MV0sWzExNzE2LDEyNDM2XSxbMTE3MjMsMTI0NDddLFsxMTcyNSwxMjUzNV0sWzEx''@;'; put 'put ''NzMwLDEyNTQzXSxbMTE3MzYsMTI1ODZdLFsxMTk4MiwxMjg0Ml0sWzExOTg5LDEyODUwXSxbMTIxMDIsMTI5NjRdLFsxMjMzNiwxMzIwMF0sWzEyMzQ4LDEzMjE1XSxbMTIzNTAsMTMyMThdLFsxMjM4NCwxMzI1M10sWzEyMzkzLDEzMjYzXSxbMTIzOTUsMTMyNjddLFsxMjM5NywxMzI3MF0s''@;'; put 'put ''WzEyNTEwLDEzMzg0XSxbMTI1NTMsMTM0MjhdLFsxMjg1MSwxMzcyN10sWzEyOTYyLDEzODM5XSxbMTI5NzMsMTM4NTFdLFsxMzczOCwxNDYxN10sWzEzODIzLDE0NzAzXSxbMTM5MTksMTQ4MDFdLFsxMzkzMywxNDgxNl0sWzE0MDgwLDE0OTY0XSxbMTQyOTgsMTUxODNdLFsxNDU4NSwxNTQ3''@;'; put 'put ''MV0sWzE0Njk4LDE1NTg1XSxbMTU1ODMsMTY0NzFdLFsxNTg0NywxNjczNl0sWzE2MzE4LDE3MjA4XSxbMTY0MzQsMTczMjVdLFsxNjQzOCwxNzMzMF0sWzE2NDgxLDE3Mzc0XSxbMTY3MjksMTc2MjNdLFsxNzEwMiwxNzk5N10sWzE3MTIyLDE4MDE4XSxbMTczMTUsMTgyMTJdLFsxNzMyMCwx''@;'; put 'put ''ODIxOF0sWzE3NDAyLDE4MzAxXSxbMTc0MTgsMTgzMThdLFsxNzg1OSwxODc2MF0sWzE3OTA5LDE4ODExXSxbMTc5MTEsMTg4MTRdLFsxNzkxNSwxODgyMF0sWzE3OTE2LDE4ODIzXSxbMTc5MzYsMTg4NDRdLFsxNzkzOSwxODg0OF0sWzE3OTYxLDE4ODcyXSxbMTg2NjQsMTk1NzZdLFsxODcw''@;'; put 'put ''MywxOTYyMF0sWzE4ODE0LDE5NzM4XSxbMTg5NjIsMTk4ODddLFsxOTA0Myw0MDg3MF0sWzMzNDY5LDU5MjQ0XSxbMzM0NzAsNTkzMzZdLFszMzQ3MSw1OTM2N10sWzMzNDg0LDU5NDEzXSxbMzM0ODUsNTk0MTddLFszMzQ5MCw1OTQyM10sWzMzNDk3LDU5NDMxXSxbMzM1MDEsNTk0MzddLFsz''@;'; put 'put ''MzUwNSw1OTQ0M10sWzMzNTEzLDU5NDUyXSxbMzM1MjAsNTk0NjBdLFszMzUzNiw1OTQ3OF0sWzMzNTUwLDU5NDkzXSxbMzc4NDUsNjM3ODldLFszNzkyMSw2Mzg2Nl0sWzM3OTQ4LDYzODk0XSxbMzgwMjksNjM5NzZdLFszODAzOCw2Mzk4Nl0sWzM4MDY0LDY0MDE2XSxbMzgwNjUsNjQwMThd''@;'; put 'put ''LFszODA2Niw2NDAyMV0sWzM4MDY5LDY0MDI1XSxbMzgwNzUsNjQwMzRdLFszODA3Niw2NDAzN10sWzM4MDc4LDY0MDQyXSxbMzkxMDgsNjUwNzRdLFszOTEwOSw2NTA5M10sWzM5MTEzLDY1MTA3XSxbMzkxMTQsNjUxMTJdLFszOTExNSw2NTEyN10sWzM5MTE2LDY1MTMyXSxbMzkyNjUsNjUz''@;'; put 'put ''NzVdLFszOTM5NCw2NTUxMF0sWzE4OWUzLDY1NTM2XV0samlzMDIwODpbMTIyODgsMTIyODksMTIyOTAsNjUyOTIsNjUyOTQsMTI1MzksNjUzMDYsNjUzMDcsNjUzMTEsNjUyODEsMTI0NDMsMTI0NDQsMTgwLDY1MzQ0LDE2OCw2NTM0Miw2NTUwNyw2NTM0MywxMjU0MSwxMjU0MiwxMjQ0NSwx''@;'; put 'put ''MjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw4MjEzLDgyMDgsNjUyOTUsNjUzNDAsNjUzNzQsODc0MSw2NTM3Miw4MjMwLDgyMjksODIxNiw4MjE3LDgyMjAsODIyMSw2NTI4OCw2NTI4OSwxMjMwOCwxMjMwOSw2NTMzOSw2NTM0MSw2NTM3MSw2NTM3MywxMjI5Niwx''@;'; put 'put ''MjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSw2NTI5MSw2NTI5MywxNzcsMjE1LDI0Nyw2NTMwOSw4ODAwLDY1MzA4LDY1MzEwLDg4MDYsODgwNyw4NzM0LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTUwOSw2NTI4NCw2NTUw''@;'; put 'put ''NCw2NTUwNSw2NTI4NSw2NTI4Myw2NTI4Niw2NTI5MCw2NTMxMiwxNjcsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4MjUxLDEyMzA2LDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODc0Myw4NzQ0LDY1NTA2LDg2NTgsODY2MCw4NzA0LDg3MDcsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODQ5MSw4MjQwLDk4Mzks''@;'; put 'put ''OTgzNyw5ODM0LDgyMjQsODIyNSwxODIsbnVsbCxudWxsLG51bGwsbnVsbCw5NzExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAy''@;'; put 'put ''LDY1MzAzLDY1MzA0LDY1MzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUz''@;'; put 'put ''MzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTks''@;'; put 'put ''NjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsbnVsbCxudWxsLG51bGwsbnVsbCwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwx''@;'; put 'put ''MjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5''@;'; put 'put ''MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwx''@;'; put 'put ''MjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI0NDksMTI0NTAsMTI0NTEsMTI0''@;'; put 'put ''NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0Nzks''@;'; put 'put ''MTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1''@;'; put 'put ''MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQs''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAy''@;'; put 'put ''NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5''@;'; put 'put ''NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3''@;'; put 'put ''Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTMxMiw5MzEzLDkzMTQsOTMx''@;'; put 'put ''NSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsOTMyNyw5MzI4LDkzMjksOTMzMCw5MzMxLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCwxMzEyOSwxMzA3NiwxMzA5MCwxMzEzMywxMzA4''@;'; put 'put ''MCwxMzA5NSwxMzA1OSwxMzExMCwxMzEzNywxMzE0MywxMzA2OSwxMzA5NCwxMzA5MSwxMzA5OSwxMzEzMCwxMzExNSwxMzIxMiwxMzIxMywxMzIxNCwxMzE5OCwxMzE5OSwxMzI1MiwxMzIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTMxNzksMTIzMTcsMTIz''@;'; put 'put ''MTksODQ3MCwxMzI2MSw4NDgxLDEyOTY0LDEyOTY1LDEyOTY2LDEyOTY3LDEyOTY4LDEyODQ5LDEyODUwLDEyODU3LDEzMTgyLDEzMTgxLDEzMTgwLDg3ODYsODgwMSw4NzQ3LDg3NTAsODcyMSw4NzMwLDg4NjksODczNiw4NzM1LDg4OTUsODc1Nyw4NzQ1LDg3NDYsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDEyNCwyMTc4MiwyMzA0MywzODQ2MywyMTY5NiwyNDg1OSwyNTM4NCwyMzAzMCwzNjg5OCwz''@;'; put 'put ''MzkwOSwzMzU2NCwzMTMxMiwyNDc0NiwyNTU2OSwyODE5NywyNjA5MywzMzg5NCwzMzQ0NiwzOTkyNSwyNjc3MSwyMjMxMSwyNjAxNywyNTIwMSwyMzQ1MSwyMjk5MiwzNDQyNywzOTE1NiwzMjA5OCwzMjE5MCwzOTgyMiwyNTExMCwzMTkwMywzNDk5OSwyMzQzMywyNDI0NSwyNTM1MywyNjI2''@;'; put 'put ''MywyNjY5NiwzODM0MywzODc5NywyNjQ0NywyMDE5NywyMDIzNCwyMDMwMSwyMDM4MSwyMDU1MywyMjI1OCwyMjgzOSwyMjk5NiwyMzA0MSwyMzU2MSwyNDc5OSwyNDg0NywyNDk0NCwyNjEzMSwyNjg4NSwyODg1OCwzMDAzMSwzMDA2NCwzMTIyNywzMjE3MywzMjIzOSwzMjk2MywzMzgwNiwz''@;'; put 'put ''NDkxNSwzNTU4NiwzNjk0OSwzNjk4NiwyMTMwNywyMDExNywyMDEzMywyMjQ5NSwzMjk0NiwzNzA1NywzMDk1OSwxOTk2OCwyMjc2OSwyODMyMiwzNjkyMCwzMTI4MiwzMzU3NiwzMzQxOSwzOTk4MywyMDgwMSwyMTM2MCwyMTY5MywyMTcyOSwyMjI0MCwyMzAzNSwyNDM0MSwzOTE1NCwyODEz''@;'; put 'put ''OSwzMjk5NiwzNDA5MywzODQ5OCwzODUxMiwzODU2MCwzODkwNywyMTUxNSwyMTQ5MSwyMzQzMSwyODg3OSwzMjcwMSwzNjgwMiwzODYzMiwyMTM1OSw0MDI4NCwzMTQxOCwxOTk4NSwzMDg2NywzMzI3NiwyODE5OCwyMjA0MCwyMTc2NCwyNzQyMSwzNDA3NCwzOTk5NSwyMzAxMywyMTQxNywy''@;'; put 'put ''ODAwNiwyOTkxNiwzODI4NywyMjA4MiwyMDExMywzNjkzOSwzODY0MiwzMzYxNSwzOTE4MCwyMTQ3MywyMTk0MiwyMzM0NCwyNDQzMywyNjE0NCwyNjM1NSwyNjYyOCwyNzcwNCwyNzg5MSwyNzk0NSwyOTc4NywzMDQwOCwzMTMxMCwzODk2NCwzMzUyMSwzNDkwNywzNTQyNCwzNzYxMywyODA4''@;'; put 'put ''MiwzMDEyMywzMDQxMCwzOTM2NSwyNDc0MiwzNTU4NSwzNjIzNCwzODMyMiwyNzAyMiwyMTQyMSwyMDg3MCwyMjI5MCwyMjU3NiwyMjg1MiwyMzQ3NiwyNDMxMCwyNDYxNiwyNTUxMywyNTU4OCwyNzgzOSwyODQzNiwyODgxNCwyODk0OCwyOTAxNywyOTE0MSwyOTUwMywzMjI1NywzMzM5OCwz''@;'; put 'put ''MzQ4OSwzNDE5OSwzNjk2MCwzNzQ2Nyw0MDIxOSwyMjYzMywyNjA0NCwyNzczOCwyOTk4OSwyMDk4NSwyMjgzMCwyMjg4NSwyNDQ0OCwyNDU0MCwyNTI3NiwyNjEwNiwyNzE3OCwyNzQzMSwyNzU3MiwyOTU3OSwzMjcwNSwzNTE1OCw0MDIzNiw0MDIwNiw0MDY0NCwyMzcxMywyNzc5OCwzMzY1''@;'; put 'put ''OSwyMDc0MCwyMzYyNywyNTAxNCwzMzIyMiwyNjc0MiwyOTI4MSwyMDA1NywyMDQ3NCwyMTM2OCwyNDY4MSwyODIwMSwzMTMxMSwzODg5OSwxOTk3OSwyMTI3MCwyMDIwNiwyMDMwOSwyMDI4NSwyMDM4NSwyMDMzOSwyMTE1MiwyMTQ4NywyMjAyNSwyMjc5OSwyMzIzMywyMzQ3OCwyMzUyMSwz''@;'; put 'put ''MTE4NSwyNjI0NywyNjUyNCwyNjU1MCwyNzQ2OCwyNzgyNywyODc3OSwyOTYzNCwzMTExNywzMTE2NiwzMTI5MiwzMTYyMywzMzQ1NywzMzQ5OSwzMzU0MCwzMzY1NSwzMzc3NSwzMzc0NywzNDY2MiwzNTUwNiwyMjA1NywzNjAwOCwzNjgzOCwzNjk0MiwzODY4NiwzNDQ0MiwyMDQyMCwyMzc4''@;'; put 'put ''NCwyNTEwNSwyOTI3MywzMDAxMSwzMzI1MywzMzQ2OSwzNDU1OCwzNjAzMiwzODU5NywzOTE4NywzOTM4MSwyMDE3MSwyMDI1MCwzNTI5OSwyMjIzOCwyMjYwMiwyMjczMCwyNDMxNSwyNDU1NSwyNDYxOCwyNDcyNCwyNDY3NCwyNTA0MCwyNTEwNiwyNTI5NiwyNTkxMywzOTc0NSwyNjIxNCwy''@;'; put 'put ''NjgwMCwyODAyMywyODc4NCwzMDAyOCwzMDM0MiwzMjExNywzMzQ0NSwzNDgwOSwzODI4MywzODU0MiwzNTk5NywyMDk3NywyMTE4MiwyMjgwNiwyMTY4MywyMzQ3NSwyMzgzMCwyNDkzNiwyNzAxMCwyODA3OSwzMDg2MSwzMzk5NSwzNDkwMywzNTQ0MiwzNzc5OSwzOTYwOCwyODAxMiwzOTMz''@;'; put 'put ''NiwzNDUyMSwyMjQzNSwyNjYyMywzNDUxMCwzNzM5MCwyMTEyMywyMjE1MSwyMTUwOCwyNDI3NSwyNTMxMywyNTc4NSwyNjY4NCwyNjY4MCwyNzU3OSwyOTU1NCwzMDkwNiwzMTMzOSwzNTIyNiwzNTI4MiwzNjIwMywzNjYxMSwzNzEwMSwzODMwNywzODU0OCwzODc2MSwyMzM5OCwyMzczMSwy''@;'; put 'put ''NzAwNSwzODk4OSwzODk5MCwyNTQ5OSwzMTUyMCwyNzE3OSwyNzI2MywyNjgwNiwzOTk0OSwyODUxMSwyMTEwNiwyMTkxNywyNDY4OCwyNTMyNCwyNzk2MywyODE2NywyODM2OSwzMzg4MywzNTA4OCwzNjY3NiwxOTk4OCwzOTk5MywyMTQ5NCwyNjkwNywyNzE5NCwzODc4OCwyNjY2NiwyMDgy''@;'; put 'put ''OCwzMTQyNywzMzk3MCwzNzM0MCwzNzc3MiwyMjEwNyw0MDIzMiwyNjY1OCwzMzU0MSwzMzg0MSwzMTkwOSwyMWUzLDMzNDc3LDI5OTI2LDIwMDk0LDIwMzU1LDIwODk2LDIzNTA2LDIxMDAyLDIxMjA4LDIxMjIzLDI0MDU5LDIxOTE0LDIyNTcwLDIzMDE0LDIzNDM2LDIzNDQ4LDIzNTE1LDI0''@;'; put 'put ''MTc4LDI0MTg1LDI0NzM5LDI0ODYzLDI0OTMxLDI1MDIyLDI1NTYzLDI1OTU0LDI2NTc3LDI2NzA3LDI2ODc0LDI3NDU0LDI3NDc1LDI3NzM1LDI4NDUwLDI4NTY3LDI4NDg1LDI5ODcyLDI5OTc2LDMwNDM1LDMwNDc1LDMxNDg3LDMxNjQ5LDMxNzc3LDMyMjMzLDMyNTY2LDMyNzUyLDMyOTI1''@;'; put 'put ''LDMzMzgyLDMzNjk0LDM1MjUxLDM1NTMyLDM2MDExLDM2OTk2LDM3OTY5LDM4MjkxLDM4Mjg5LDM4MzA2LDM4NTAxLDM4ODY3LDM5MjA4LDMzMzA0LDIwMDI0LDIxNTQ3LDIzNzM2LDI0MDEyLDI5NjA5LDMwMjg0LDMwNTI0LDIzNzIxLDMyNzQ3LDM2MTA3LDM4NTkzLDM4OTI5LDM4OTk2LDM5''@;'; put 'put ''ZTMsMjAyMjUsMjAyMzgsMjEzNjEsMjE5MTYsMjIxMjAsMjI1MjIsMjI4NTUsMjMzMDUsMjM0OTIsMjM2OTYsMjQwNzYsMjQxOTAsMjQ1MjQsMjU1ODIsMjY0MjYsMjYwNzEsMjYwODIsMjYzOTksMjY4MjcsMjY4MjAsMjcyMzEsMjQxMTIsMjc1ODksMjc2NzEsMjc3NzMsMzAwNzksMzEwNDgs''@;'; put 'put ''MjMzOTUsMzEyMzIsMzJlMywyNDUwOSwzNTIxNSwzNTM1MiwzNjAyMCwzNjIxNSwzNjU1NiwzNjYzNywzOTEzOCwzOTQzOCwzOTc0MCwyMDA5NiwyMDYwNSwyMDczNiwyMjkzMSwyMzQ1MiwyNTEzNSwyNTIxNiwyNTgzNiwyNzQ1MCwyOTM0NCwzMDA5NywzMTA0NywzMjY4MSwzNDgxMSwzNTUx''@;'; put 'put ''NiwzNTY5NiwyNTUxNiwzMzczOCwzODgxNiwyMTUxMywyMTUwNywyMTkzMSwyNjcwOCwyNzIyNCwzNTQ0MCwzMDc1OSwyNjQ4NSw0MDY1MywyMTM2NCwyMzQ1OCwzMzA1MCwzNDM4NCwzNjg3MCwxOTk5MiwyMDAzNywyMDE2NywyMDI0MSwyMTQ1MCwyMTU2MCwyMzQ3MCwyNDMzOSwyNDYxMywy''@;'; put 'put ''NTkzNywyNjQyOSwyNzcxNCwyNzc2MiwyNzg3NSwyODc5MiwyOTY5OSwzMTM1MCwzMTQwNiwzMTQ5NiwzMjAyNiwzMTk5OCwzMjEwMiwyNjA4NywyOTI3NSwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTMxMiwyNTM2OSwyODE5MiwzNDM5NCwzNTM3NywzNjMxNywzNzYyNCwyODQxNywzMTE0''@;'; put 'put ''MiwzOTc3MCwyMDEzNiwyMDEzOSwyMDE0MCwyMDM3OSwyMDM4NCwyMDY4OSwyMDgwNywzMTQ3OCwyMDg0OSwyMDk4MiwyMTMzMiwyMTI4MSwyMTM3NSwyMTQ4MywyMTkzMiwyMjY1OSwyMzc3NywyNDM3NSwyNDM5NCwyNDYyMywyNDY1NiwyNDY4NSwyNTM3NSwyNTk0NSwyNzIxMSwyNzg0MSwy''@;'; put 'put ''OTM3OCwyOTQyMSwzMDcwMywzMzAxNiwzMzAyOSwzMzI4OCwzNDEyNiwzNzExMSwzNzg1NywzODkxMSwzOTI1NSwzOTUxNCwyMDIwOCwyMDk1NywyMzU5NywyNjI0MSwyNjk4OSwyMzYxNiwyNjM1NCwyNjk5NywyOTU3NywyNjcwNCwzMTg3MywyMDY3NywyMTIyMCwyMjM0MywyNDA2MiwzNzY3''@;'; put 'put ''MCwyNjAyMCwyNzQyNywyNzQ1MywyOTc0OCwzMTEwNSwzMTE2NSwzMTU2MywzMjIwMiwzMzQ2NSwzMzc0MCwzNDk0MywzNTE2NywzNTY0MSwzNjgxNywzNzMyOSwyMTUzNSwzNzUwNCwyMDA2MSwyMDUzNCwyMTQ3NywyMTMwNiwyOTM5OSwyOTU5MCwzMDY5NywzMzUxMCwzNjUyNywzOTM2Niwz''@;'; put 'put ''OTM2OCwzOTM3OCwyMDg1NSwyNDg1OCwzNDM5OCwyMTkzNiwzMTM1NCwyMDU5OCwyMzUwNywzNjkzNSwzODUzMywyMDAxOCwyNzM1NSwzNzM1MSwyMzYzMywyMzYyNCwyNTQ5NiwzMTM5MSwyNzc5NSwzODc3MiwzNjcwNSwzMTQwMiwyOTA2NiwzODUzNiwzMTg3NCwyNjY0NywzMjM2OCwyNjcw''@;'; put 'put ''NSwzNzc0MCwyMTIzNCwyMTUzMSwzNDIxOSwzNTM0NywzMjY3NiwzNjU1NywzNzA4OSwyMTM1MCwzNDk1MiwzMTA0MSwyMDQxOCwyMDY3MCwyMTAwOSwyMDgwNCwyMTg0MywyMjMxNywyOTY3NCwyMjQxMSwyMjg2NSwyNDQxOCwyNDQ1MiwyNDY5MywyNDk1MCwyNDkzNSwyNTAwMSwyNTUyMiwy''@;'; put 'put ''NTY1OCwyNTk2NCwyNjIyMywyNjY5MCwyODE3OSwzMDA1NCwzMTI5MywzMTk5NSwzMjA3NiwzMjE1MywzMjMzMSwzMjYxOSwzMzU1MCwzMzYxMCwzNDUwOSwzNTMzNiwzNTQyNywzNTY4NiwzNjYwNSwzODkzOCw0MDMzNSwzMzQ2NCwzNjgxNCwzOTkxMiwyMTEyNywyNTExOSwyNTczMSwyODYw''@;'; put 'put ''OCwzODU1MywyNjY4OSwyMDYyNSwyNzQyNCwyNzc3MCwyODUwMCwzMTM0OCwzMjA4MCwzNDg4MCwzNTM2MywyNjM3NiwyMDIxNCwyMDUzNywyMDUxOCwyMDU4MSwyMDg2MCwyMTA0OCwyMTA5MSwyMTkyNywyMjI4NywyMjUzMywyMzI0NCwyNDMxNCwyNTAxMCwyNTA4MCwyNTMzMSwyNTQ1OCwy''@;'; put 'put ''NjkwOCwyNzE3NywyOTMwOSwyOTM1NiwyOTQ4NiwzMDc0MCwzMDgzMSwzMjEyMSwzMDQ3NiwzMjkzNywzNTIxMSwzNTYwOSwzNjA2NiwzNjU2MiwzNjk2MywzNzc0OSwzODUyMiwzODk5NywzOTQ0Myw0MDU2OCwyMDgwMywyMTQwNywyMTQyNywyNDE4NywyNDM1OCwyODE4NywyODMwNCwyOTU3''@;'; put 'put ''MiwyOTY5NCwzMjA2NywzMzMzNSwzNTMyOCwzNTU3OCwzODQ4MCwyMDA0NiwyMDQ5MSwyMTQ3NiwyMTYyOCwyMjI2NiwyMjk5MywyMzM5NiwyNDA0OSwyNDIzNSwyNDM1OSwyNTE0NCwyNTkyNSwyNjU0MywyODI0NiwyOTM5MiwzMTk0NiwzNDk5NiwzMjkyOSwzMjk5MywzMzc3NiwzNDM4Miwz''@;'; put 'put ''NTQ2MywzNjMyOCwzNzQzMSwzODU5OSwzOTAxNSw0MDcyMywyMDExNiwyMDExNCwyMDIzNywyMTMyMCwyMTU3NywyMTU2NiwyMzA4NywyNDQ2MCwyNDQ4MSwyNDczNSwyNjc5MSwyNzI3OCwyOTc4NiwzMDg0OSwzNTQ4NiwzNTQ5MiwzNTcwMywzNzI2NCwyMDA2MiwzOTg4MSwyMDEzMiwyMDM0''@;'; put 'put ''OCwyMDM5OSwyMDUwNSwyMDUwMiwyMDgwOSwyMDg0NCwyMTE1MSwyMTE3NywyMTI0NiwyMTQwMiwyMTQ3NSwyMTUyMSwyMTUxOCwyMTg5NywyMjM1MywyMjQzNCwyMjkwOSwyMzM4MCwyMzM4OSwyMzQzOSwyNDAzNywyNDAzOSwyNDA1NSwyNDE4NCwyNDE5NSwyNDIxOCwyNDI0NywyNDM0NCwy''@;'; put 'put ''NDY1OCwyNDkwOCwyNTIzOSwyNTMwNCwyNTUxMSwyNTkxNSwyNjExNCwyNjE3OSwyNjM1NiwyNjQ3NywyNjY1NywyNjc3NSwyNzA4MywyNzc0MywyNzk0NiwyODAwOSwyODIwNywyODMxNywzMDAwMiwzMDM0MywzMDgyOCwzMTI5NSwzMTk2OCwzMjAwNSwzMjAyNCwzMjA5NCwzMjE3NywzMjc4''@;'; put 'put ''OSwzMjc3MSwzMjk0MywzMjk0NSwzMzEwOCwzMzE2NywzMzMyMiwzMzYxOCwzNDg5MiwzNDkxMywzNTYxMSwzNjAwMiwzNjA5MiwzNzA2NiwzNzIzNywzNzQ4OSwzMDc4MywzNzYyOCwzODMwOCwzODQ3NywzODkxNywzOTMyMSwzOTY0MCw0MDI1MSwyMTA4MywyMTE2MywyMTQ5NSwyMTUxMiwy''@;'; put 'put ''Mjc0MSwyNTMzNSwyODY0MCwzNTk0NiwzNjcwMyw0MDYzMywyMDgxMSwyMTA1MSwyMTU3OCwyMjI2OSwzMTI5NiwzNzIzOSw0MDI4OCw0MDY1OCwyOTUwOCwyODQyNSwzMzEzNiwyOTk2OSwyNDU3MywyNDc5NCwzOTU5MiwyOTQwMywzNjc5NiwyNzQ5MiwzODkxNSwyMDE3MCwyMjI1NiwyMjM3''@;'; put 'put ''MiwyMjcxOCwyMzEzMCwyNDY4MCwyNTAzMSwyNjEyNywyNjExOCwyNjY4MSwyNjgwMSwyODE1MSwzMDE2NSwzMjA1OCwzMzM5MCwzOTc0NiwyMDEyMywyMDMwNCwyMTQ0OSwyMTc2NiwyMzkxOSwyNDAzOCwyNDA0NiwyNjYxOSwyNzgwMSwyOTgxMSwzMDcyMiwzNTQwOCwzNzc4MiwzNTAzOSwy''@;'; put 'put ''MjM1MiwyNDIzMSwyNTM4NywyMDY2MSwyMDY1MiwyMDg3NywyNjM2OCwyMTcwNSwyMjYyMiwyMjk3MSwyMzQ3MiwyNDQyNSwyNTE2NSwyNTUwNSwyNjY4NSwyNzUwNywyODE2OCwyODc5NywzNzMxOSwyOTMxMiwzMDc0MSwzMDc1OCwzMTA4NSwyNTk5OCwzMjA0OCwzMzc1NiwzNTAwOSwzNjYx''@;'; put 'put ''NywzODU1NSwyMTA5MiwyMjMxMiwyNjQ0OCwzMjYxOCwzNjAwMSwyMDkxNiwyMjMzOCwzODQ0MiwyMjU4NiwyNzAxOCwzMjk0OCwyMTY4MiwyMzgyMiwyMjUyNCwzMDg2OSw0MDQ0MiwyMDMxNiwyMTA2NiwyMTY0MywyNTY2MiwyNjE1MiwyNjM4OCwyNjYxMywzMTM2NCwzMTU3NCwzMjAzNCwz''@;'; put 'put ''NzY3OSwyNjcxNiwzOTg1MywzMTU0NSwyMTI3MywyMDg3NCwyMTA0NywyMzUxOSwyNTMzNCwyNTc3NCwyNTgzMCwyNjQxMywyNzU3OCwzNDIxNywzODYwOSwzMDM1MiwzOTg5NCwyNTQyMCwzNzYzOCwzOTg1MSwzMDM5OSwyNjE5NCwxOTk3NywyMDYzMiwyMTQ0MiwyMzY2NSwyNDgwOCwyNTc0''@;'; put 'put ''NiwyNTk1NSwyNjcxOSwyOTE1OCwyOTY0MiwyOTk4NywzMTYzOSwzMjM4NiwzNDQ1MywzNTcxNSwzNjA1OSwzNzI0MCwzOTE4NCwyNjAyOCwyNjI4MywyNzUzMSwyMDE4MSwyMDE4MCwyMDI4MiwyMDM1MSwyMTA1MCwyMTQ5NiwyMTQ5MCwyMTk4NywyMjIzNSwyMjc2MywyMjk4NywyMjk4NSwy''@;'; put 'put ''MzAzOSwyMzM3NiwyMzYyOSwyNDA2NiwyNDEwNywyNDUzNSwyNDYwNSwyNTM1MSwyNTkwMywyMzM4OCwyNjAzMSwyNjA0NSwyNjA4OCwyNjUyNSwyNzQ5MCwyNzUxNSwyNzY2MywyOTUwOSwzMTA0OSwzMTE2OSwzMTk5MiwzMjAyNSwzMjA0MywzMjkzMCwzMzAyNiwzMzI2NywzNTIyMiwzNTQy''@;'; put 'put ''MiwzNTQzMywzNTQzMCwzNTQ2OCwzNTU2NiwzNjAzOSwzNjA2MCwzODYwNCwzOTE2NCwyNzUwMywyMDEwNywyMDI4NCwyMDM2NSwyMDgxNiwyMzM4MywyMzU0NiwyNDkwNCwyNTM0NSwyNjE3OCwyNzQyNSwyODM2MywyNzgzNSwyOTI0NiwyOTg4NSwzMDE2NCwzMDkxMywzMTAzNCwzMjc4MCwz''@;'; put 'put ''MjgxOSwzMzI1OCwzMzk0MCwzNjc2NiwyNzcyOCw0MDU3NSwyNDMzNSwzNTY3Miw0MDIzNSwzMTQ4MiwzNjYwMCwyMzQzNywzODYzNSwxOTk3MSwyMTQ4OSwyMjUxOSwyMjgzMywyMzI0MSwyMzQ2MCwyNDcxMywyODI4NywyODQyMiwzMDE0MiwzNjA3NCwyMzQ1NSwzNDA0OCwzMTcxMiwyMDU5''@;'; put 'put ''NCwyNjYxMiwzMzQzNywyMzY0OSwzNDEyMiwzMjI4NiwzMzI5NCwyMDg4OSwyMzU1NiwyNTQ0OCwzNjE5OCwyNjAxMiwyOTAzOCwzMTAzOCwzMjAyMywzMjc3MywzNTYxMywzNjU1NCwzNjk3NCwzNDUwMywzNzAzNCwyMDUxMSwyMTI0MiwyMzYxMCwyNjQ1MSwyODc5NiwyOTIzNywzNzE5Niwz''@;'; put 'put ''NzMyMCwzNzY3NSwzMzUwOSwyMzQ5MCwyNDM2OSwyNDgyNSwyMDAyNywyMTQ2MiwyMzQzMiwyNTE2MywyNjQxNywyNzUzMCwyOTQxNywyOTY2NCwzMTI3OCwzMzEzMSwzNjI1OSwzNzIwMiwzOTMxOCwyMDc1NCwyMTQ2MywyMTYxMCwyMzU1MSwyNTQ4MCwyNzE5MywzMjE3MiwzODY1NiwyMjIz''@;'; put 'put ''NCwyMTQ1NCwyMTYwOCwyMzQ0NywyMzYwMSwyNDAzMCwyMDQ2MiwyNDgzMywyNTM0MiwyNzk1NCwzMTE2OCwzMTE3OSwzMjA2NiwzMjMzMywzMjcyMiwzMzI2MSwzMzMxMSwzMzkzNiwzNDg4NiwzNTE4NiwzNTcyOCwzNjQ2OCwzNjY1NSwzNjkxMywzNzE5NSwzNzIyOCwzODU5OCwzNzI3Niwy''@;'; put 'put ''MDE2MCwyMDMwMywyMDgwNSwyMTMxMywyNDQ2NywyNTEwMiwyNjU4MCwyNzcxMywyODE3MSwyOTUzOSwzMjI5NCwzNzMyNSwzNzUwNywyMTQ2MCwyMjgwOSwyMzQ4NywyODExMywzMTA2OSwzMjMwMiwzMTg5OSwyMjY1NCwyOTA4NywyMDk4NiwzNDg5OSwzNjg0OCwyMDQyNiwyMzgwMywyNjE0''@;'; put 'put ''OSwzMDYzNiwzMTQ1OSwzMzMwOCwzOTQyMywyMDkzNCwyNDQ5MCwyNjA5MiwyNjk5MSwyNzUyOSwyODE0NywyODMxMCwyODUxNiwzMDQ2MiwzMjAyMCwyNDAzMywzNjk4MSwzNzI1NSwzODkxOCwyMDk2NiwyMTAyMSwyNTE1MiwyNjI1NywyNjMyOSwyODE4NiwyNDI0NiwzMjIxMCwzMjYyNiwy''@;'; put 'put ''NjM2MCwzNDIyMywzNDI5NSwzNTU3NiwyMTE2MSwyMTQ2NSwyMjg5OSwyNDIwNywyNDQ2NCwyNDY2MSwzNzYwNCwzODUwMCwyMDY2MywyMDc2NywyMTIxMywyMTI4MCwyMTMxOSwyMTQ4NCwyMTczNiwyMTgzMCwyMTgwOSwyMjAzOSwyMjg4OCwyMjk3NCwyMzEwMCwyMzQ3NywyMzU1OCwyMzU2''@;'; put 'put ''NywyMzU2OSwyMzU3OCwyNDE5NiwyNDIwMiwyNDI4OCwyNDQzMiwyNTIxNSwyNTIyMCwyNTMwNywyNTQ4NCwyNTQ2MywyNjExOSwyNjEyNCwyNjE1NywyNjIzMCwyNjQ5NCwyNjc4NiwyNzE2NywyNzE4OSwyNzgzNiwyODA0MCwyODE2OSwyODI0OCwyODk4OCwyODk2NiwyOTAzMSwzMDE1MSwz''@;'; put 'put ''MDQ2NSwzMDgxMywzMDk3NywzMTA3NywzMTIxNiwzMTQ1NiwzMTUwNSwzMTkxMSwzMjA1NywzMjkxOCwzMzc1MCwzMzkzMSwzNDEyMSwzNDkwOSwzNTA1OSwzNTM1OSwzNTM4OCwzNTQxMiwzNTQ0MywzNTkzNywzNjA2MiwzNzI4NCwzNzQ3OCwzNzc1OCwzNzkxMiwzODU1NiwzODgwOCwxOTk3''@;'; put 'put ''OCwxOTk3NiwxOTk5OCwyMDA1NSwyMDg4NywyMTEwNCwyMjQ3OCwyMjU4MCwyMjczMiwyMzMzMCwyNDEyMCwyNDc3MywyNTg1NCwyNjQ2NSwyNjQ1NCwyNzk3MiwyOTM2NiwzMDA2NywzMTMzMSwzMzk3NiwzNTY5OCwzNzMwNCwzNzY2NCwyMjA2NSwyMjUxNiwzOTE2NiwyNTMyNSwyNjg5Mywy''@;'; put 'put ''NzU0MiwyOTE2NSwzMjM0MCwzMjg4NywzMzM5NCwzNTMwMiwzOTEzNSwzNDY0NSwzNjc4NSwyMzYxMSwyMDI4MCwyMDQ0OSwyMDQwNSwyMTc2NywyMzA3MiwyMzUxNywyMzUyOSwyNDUxNSwyNDkxMCwyNTM5MSwyNjAzMiwyNjE4NywyNjg2MiwyNzAzNSwyODAyNCwyODE0NSwzMDAwMywzMDEz''@;'; put 'put ''NywzMDQ5NSwzMTA3MCwzMTIwNiwzMjA1MSwzMzI1MSwzMzQ1NSwzNDIxOCwzNTI0MiwzNTM4NiwzNjUyMywzNjc2MywzNjkxNCwzNzM0MSwzODY2MywyMDE1NCwyMDE2MSwyMDk5NSwyMjY0NSwyMjc2NCwyMzU2MywyOTk3OCwyMzYxMywzMzEwMiwzNTMzOCwzNjgwNSwzODQ5OSwzODc2NSwz''@;'; put 'put ''MTUyNSwzNTUzNSwzODkyMCwzNzIxOCwyMjI1OSwyMTQxNiwzNjg4NywyMTU2MSwyMjQwMiwyNDEwMSwyNTUxMiwyNzcwMCwyODgxMCwzMDU2MSwzMTg4MywzMjczNiwzNDkyOCwzNjkzMCwzNzIwNCwzNzY0OCwzNzY1NiwzODU0MywyOTc5MCwzOTYyMCwyMzgxNSwyMzkxMywyNTk2OCwyNjUz''@;'; put 'put ''MCwzNjI2NCwzODYxOSwyNTQ1NCwyNjQ0MSwyNjkwNSwzMzczMywzODkzNSwzODU5MiwzNTA3MCwyODU0OCwyNTcyMiwyMzU0NCwxOTk5MCwyODcxNiwzMDA0NSwyNjE1OSwyMDkzMiwyMTA0NiwyMTIxOCwyMjk5NSwyNDQ0OSwyNDYxNSwyNTEwNCwyNTkxOSwyNTk3MiwyNjE0MywyNjIyOCwy''@;'; put 'put ''Njg2NiwyNjY0NiwyNzQ5MSwyODE2NSwyOTI5OCwyOTk4MywzMDQyNywzMTkzNCwzMjg1NCwyMjc2OCwzNTA2OSwzNTE5OSwzNTQ4OCwzNTQ3NSwzNTUzMSwzNjg5MywzNzI2NiwzODczOCwzODc0NSwyNTk5MywzMTI0NiwzMzAzMCwzODU4NywyNDEwOSwyNDc5NiwyNTExNCwyNjAyMSwyNjEz''@;'; put 'put ''MiwyNjUxMiwzMDcwNywzMTMwOSwzMTgyMSwzMjMxOCwzMzAzNCwzNjAxMiwzNjE5NiwzNjMyMSwzNjQ0NywzMDg4OSwyMDk5OSwyNTMwNSwyNTUwOSwyNTY2NiwyNTI0MCwzNTM3MywzMTM2MywzMTY4MCwzNTUwMCwzODYzNCwzMjExOCwzMzI5MiwzNDYzMywyMDE4NSwyMDgwOCwyMTMxNSwy''@;'; put 'put ''MTM0NCwyMzQ1OSwyMzU1NCwyMzU3NCwyNDAyOSwyNTEyNiwyNTE1OSwyNTc3NiwyNjY0MywyNjY3NiwyNzg0OSwyNzk3MywyNzkyNywyNjU3OSwyODUwOCwyOTAwNiwyOTA1MywyNjA1OSwzMTM1OSwzMTY2MSwzMjIxOCwzMjMzMCwzMjY4MCwzMzE0NiwzMzMwNywzMzMzNywzNDIxNCwzNTQz''@;'; put 'put ''OCwzNjA0NiwzNjM0MSwzNjk4NCwzNjk4MywzNzU0OSwzNzUyMSwzODI3NSwzOTg1NCwyMTA2OSwyMTg5MiwyODQ3MiwyODk4MiwyMDg0MCwzMTEwOSwzMjM0MSwzMzIwMywzMTk1MCwyMjA5MiwyMjYwOSwyMzcyMCwyNTUxNCwyNjM2NiwyNjM2NSwyNjk3MCwyOTQwMSwzMDA5NSwzMDA5NCwz''@;'; put 'put ''MDk5MCwzMTA2MiwzMTE5OSwzMTg5NSwzMjAzMiwzMjA2OCwzNDMxMSwzNTM4MCwzODQ1OSwzNjk2MSw0MDczNiwyMDcxMSwyMTEwOSwyMTQ1MiwyMTQ3NCwyMDQ4OSwyMTkzMCwyMjc2NiwyMjg2MywyOTI0NSwyMzQzNSwyMzY1MiwyMTI3NywyNDgwMywyNDgxOSwyNTQzNiwyNTQ3NSwyNTQw''@;'; put 'put ''NywyNTUzMSwyNTgwNSwyNjA4OSwyNjM2MSwyNDAzNSwyNzA4NSwyNzEzMywyODQzNywyOTE1NywyMDEwNSwzMDE4NSwzMDQ1NiwzMTM3OSwzMTk2NywzMjIwNywzMjE1NiwzMjg2NSwzMzYwOSwzMzYyNCwzMzkwMCwzMzk4MCwzNDI5OSwzNTAxMywzNjIwOCwzNjg2NSwzNjk3MywzNzc4Mywz''@;'; put 'put ''ODY4NCwzOTQ0MiwyMDY4NywyMjY3OSwyNDk3NCwzMzIzNSwzNDEwMSwzNjEwNCwzNjg5NiwyMDQxOSwyMDU5NiwyMTA2MywyMTM2MywyNDY4NywyNTQxNywyNjQ2MywyODIwNCwzNjI3NSwzNjg5NSwyMDQzOSwyMzY0NiwzNjA0MiwyNjA2MywzMjE1NCwyMTMzMCwzNDk2NiwyMDg1NCwyNTUz''@;'; put 'put ''OSwyMzM4NCwyMzQwMywyMzU2MiwyNTYxMywyNjQ0OSwzNjk1NiwyMDE4MiwyMjgxMCwyMjgyNiwyNzc2MCwzNTQwOSwyMTgyMiwyMjU0OSwyMjk0OSwyNDgxNiwyNTE3MSwyNjU2MSwzMzMzMywyNjk2NSwzODQ2NCwzOTM2NCwzOTQ2NCwyMDMwNywyMjUzNCwyMzU1MCwzMjc4NCwyMzcyOSwy''@;'; put 'put ''NDExMSwyNDQ1MywyNDYwOCwyNDkwNywyNTE0MCwyNjM2NywyNzg4OCwyODM4MiwzMjk3NCwzMzE1MSwzMzQ5MiwzNDk1NSwzNjAyNCwzNjg2NCwzNjkxMCwzODUzOCw0MDY2NywzOTg5OSwyMDE5NSwyMTQ4OCwyMjgyMywzMTUzMiwzNzI2MSwzODk4OCw0MDQ0MSwyODM4MSwyODcxMSwyMTMz''@;'; put 'put ''MSwyMTgyOCwyMzQyOSwyNTE3NiwyNTI0NiwyNTI5OSwyNzgxMCwyODY1NSwyOTczMCwzNTM1MSwzNzk0NCwyODYwOSwzNTU4MiwzMzU5MiwyMDk2NywzNDU1MiwyMTQ4MiwyMTQ4MSwyMDI5NCwzNjk0OCwzNjc4NCwyMjg5MCwzMzA3MywyNDA2MSwzMTQ2NiwzNjc5OSwyNjg0MiwzNTg5NSwy''@;'; put 'put ''OTQzMiw0MDAwOCwyNzE5NywzNTUwNCwyMDAyNSwyMTMzNiwyMjAyMiwyMjM3NCwyNTI4NSwyNTUwNiwyNjA4NiwyNzQ3MCwyODEyOSwyODI1MSwyODg0NSwzMDcwMSwzMTQ3MSwzMTY1OCwzMjE4NywzMjgyOSwzMjk2NiwzNDUwNywzNTQ3NywzNzcyMywyMjI0MywyMjcyNywyNDM4MiwyNjAy''@;'; put 'put ''OSwyNjI2MiwyNzI2NCwyNzU3MywzMDAwNywzNTUyNywyMDUxNiwzMDY5MywyMjMyMCwyNDM0NywyNDY3NywyNjIzNCwyNzc0NCwzMDE5NiwzMTI1OCwzMjYyMiwzMzI2OCwzNDU4NCwzNjkzMywzOTM0NywzMTY4OSwzMDA0NCwzMTQ4MSwzMTU2OSwzMzk4OCwzNjg4MCwzMTIwOSwzMTM3OCwz''@;'; put 'put ''MzU5MCwyMzI2NSwzMDUyOCwyMDAxMywyMDIxMCwyMzQ0OSwyNDU0NCwyNTI3NywyNjE3MiwyNjYwOSwyNzg4MCwzNDQxMSwzNDkzNSwzNTM4NywzNzE5OCwzNzYxOSwzOTM3NiwyNzE1OSwyODcxMCwyOTQ4MiwzMzUxMSwzMzg3OSwzNjAxNSwxOTk2OSwyMDgwNiwyMDkzOSwyMTg5OSwyMzU0''@;'; put 'put ''MSwyNDA4NiwyNDExNSwyNDE5MywyNDM0MCwyNDM3MywyNDQyNywyNDUwMCwyNTA3NCwyNTM2MSwyNjI3NCwyNjM5NywyODUyNiwyOTI2NiwzMDAxMCwzMDUyMiwzMjg4NCwzMzA4MSwzMzE0NCwzNDY3OCwzNTUxOSwzNTU0OCwzNjIyOSwzNjMzOSwzNzUzMCwzODI2MywzODkxNCw0MDE2NSwy''@;'; put 'put ''MTE4OSwyNTQzMSwzMDQ1MiwyNjM4OSwyNzc4NCwyOTY0NSwzNjAzNSwzNzgwNiwzODUxNSwyNzk0MSwyMjY4NCwyNjg5NCwyNzA4NCwzNjg2MSwzNzc4NiwzMDE3MSwzNjg5MCwyMjYxOCwyNjYyNiwyNTUyNCwyNzEzMSwyMDI5MSwyODQ2MCwyNjU4NCwzNjc5NSwzNDA4NiwzMjE4MCwzNzcx''@;'; put 'put ''NiwyNjk0MywyODUyOCwyMjM3OCwyMjc3NSwyMzM0MCwzMjA0NCwyOTIyNiwyMTUxNCwzNzM0Nyw0MDM3MiwyMDE0MSwyMDMwMiwyMDU3MiwyMDU5NywyMTA1OSwzNTk5OCwyMTU3NiwyMjU2NCwyMzQ1MCwyNDA5MywyNDIxMywyNDIzNywyNDMxMSwyNDM1MSwyNDcxNiwyNTI2OSwyNTQwMiwy''@;'; put 'put ''NTU1MiwyNjc5OSwyNzcxMiwzMDg1NSwzMTExOCwzMTI0MywzMjIyNCwzMzM1MSwzNTMzMCwzNTU1OCwzNjQyMCwzNjg4MywzNzA0OCwzNzE2NSwzNzMzNiw0MDcxOCwyNzg3NywyNTY4OCwyNTgyNiwyNTk3MywyODQwNCwzMDM0MCwzMTUxNSwzNjk2OSwzNzg0MSwyODM0NiwyMTc0NiwyNDUw''@;'; put 'put ''NSwyNTc2NCwzNjY4NSwzNjg0NSwzNzQ0NCwyMDg1NiwyMjYzNSwyMjgyNSwyMzYzNywyNDIxNSwyODE1NSwzMjM5OSwyOTk4MCwzNjAyOCwzNjU3OCwzOTAwMywyODg1NywyMDI1MywyNzU4MywyODU5MywzZTQsMzg2NTEsMjA4MTQsMjE1MjAsMjI1ODEsMjI2MTUsMjI5NTYsMjM2NDgsMjQ0''@;'; put 'put ''NjYsMjYwMDcsMjY0NjAsMjgxOTMsMzAzMzEsMzM3NTksMzYwNzcsMzY4ODQsMzcxMTcsMzc3MDksMzA3NTcsMzA3NzgsMjExNjIsMjQyMzAsMjIzMDMsMjI5MDAsMjQ1OTQsMjA0OTgsMjA4MjYsMjA5MDgsMjA5NDEsMjA5OTIsMjE3NzYsMjI2MTIsMjI2MTYsMjI4NzEsMjM0NDUsMjM3OTgs''@;'; put 'put ''MjM5NDcsMjQ3NjQsMjUyMzcsMjU2NDUsMjY0ODEsMjY2OTEsMjY4MTIsMjY4NDcsMzA0MjMsMjgxMjAsMjgyNzEsMjgwNTksMjg3ODMsMjkxMjgsMjQ0MDMsMzAxNjgsMzEwOTUsMzE1NjEsMzE1NzIsMzE1NzAsMzE5NTgsMzIxMTMsMjEwNDAsMzM4OTEsMzQxNTMsMzQyNzYsMzUzNDIsMzU1''@;'; put 'put ''ODgsMzU5MTAsMzYzNjcsMzY4NjcsMzY4NzksMzc5MTMsMzg1MTgsMzg5NTcsMzk0NzIsMzgzNjAsMjA2ODUsMjEyMDUsMjE1MTYsMjI1MzAsMjM1NjYsMjQ5OTksMjU3NTgsMjc5MzQsMzA2NDMsMzE0NjEsMzMwMTIsMzM3OTYsMzY5NDcsMzc1MDksMjM3NzYsNDAxOTksMjEzMTEsMjQ0NzEs''@;'; put 'put ''MjQ0OTksMjgwNjAsMjkzMDUsMzA1NjMsMzExNjcsMzE3MTYsMjc2MDIsMjk0MjAsMzU1MDEsMjY2MjcsMjcyMzMsMjA5ODQsMzEzNjEsMjY5MzIsMjM2MjYsNDAxODIsMzM1MTUsMjM0OTMsMzcxOTMsMjg3MDIsMjIxMzYsMjM2NjMsMjQ3NzUsMjU5NTgsMjc3ODgsMzU5MzAsMzY5MjksMzg5''@;'; put 'put ''MzEsMjE1ODUsMjYzMTEsMzczODksMjI4NTYsMzcwMjcsMjA4NjksMjAwNDUsMjA5NzAsMzQyMDEsMzU1OTgsMjg3NjAsMjU0NjYsMzc3MDcsMjY5NzgsMzkzNDgsMzIyNjAsMzAwNzEsMjEzMzUsMjY5NzYsMzY1NzUsMzg2MjcsMjc3NDEsMjAxMDgsMjM2MTIsMjQzMzYsMzY4NDEsMjEyNTAs''@;'; put 'put ''MzYwNDksMzI5MDUsMzQ0MjUsMjQzMTksMjYwODUsMjAwODMsMjA4MzcsMjI5MTQsMjM2MTUsMzg4OTQsMjAyMTksMjI5MjIsMjQ1MjUsMzU0NjksMjg2NDEsMzExNTIsMzEwNzQsMjM1MjcsMzM5MDUsMjk0ODMsMjkxMDUsMjQxODAsMjQ1NjUsMjU0NjcsMjU3NTQsMjkxMjMsMzE4OTYsMjAw''@;'; put 'put ''MzUsMjQzMTYsMjAwNDMsMjI0OTIsMjIxNzgsMjQ3NDUsMjg2MTEsMzIwMTMsMzMwMjEsMzMwNzUsMzMyMTUsMzY3ODYsMzUyMjMsMzQ0NjgsMjQwNTIsMjUyMjYsMjU3NzMsMzUyMDcsMjY0ODcsMjc4NzQsMjc5NjYsMjk3NTAsMzA3NzIsMjMxMTAsMzI2MjksMzM0NTMsMzkzNDAsMjA0Njcs''@;'; put 'put ''MjQyNTksMjUzMDksMjU0OTAsMjU5NDMsMjY0NzksMzA0MDMsMjkyNjAsMzI5NzIsMzI5NTQsMzY2NDksMzcxOTcsMjA0OTMsMjI1MjEsMjMxODYsMjY3NTcsMjY5OTUsMjkwMjgsMjk0MzcsMzYwMjMsMjI3NzAsMzYwNjQsMzg1MDYsMzY4ODksMzQ2ODcsMzEyMDQsMzA2OTUsMzM4MzMsMjAy''@;'; put 'put ''NzEsMjEwOTMsMjEzMzgsMjUyOTMsMjY1NzUsMjc4NTAsMzAzMzMsMzE2MzYsMzE4OTMsMzMzMzQsMzQxODAsMzY4NDMsMjYzMzMsMjg0NDgsMjkxOTAsMzIyODMsMzM3MDcsMzkzNjEsNDA2MTQsMjA5ODksMzE2NjUsMzA4MzQsMzE2NzIsMzI5MDMsMzE1NjAsMjczNjgsMjQxNjEsMzI5MDgs''@;'; put 'put ''MzAwMzMsMzAwNDgsMjA4NDMsMzc0NzQsMjgzMDAsMzAzMzAsMzcyNzEsMzk2NTgsMjAyNDAsMzI2MjQsMjUyNDQsMzE1NjcsMzgzMDksNDAxNjksMjIxMzgsMjI2MTcsMzQ1MzIsMzg1ODgsMjAyNzYsMjEwMjgsMjEzMjIsMjE0NTMsMjE0NjcsMjQwNzAsMjU2NDQsMjYwMDEsMjY0OTUsMjc3''@;'; put 'put ''MTAsMjc3MjYsMjkyNTYsMjkzNTksMjk2NzcsMzAwMzYsMzIzMjEsMzMzMjQsMzQyODEsMzYwMDksMzE2ODQsMzczMTgsMjkwMzMsMzg5MzAsMzkxNTEsMjU0MDUsMjYyMTcsMzAwNTgsMzA0MzYsMzA5MjgsMzQxMTUsMzQ1NDIsMjEyOTAsMjEzMjksMjE1NDIsMjI5MTUsMjQxOTksMjQ0NDQs''@;'; put 'put ''MjQ3NTQsMjUxNjEsMjUyMDksMjUyNTksMjZlMywyNzYwNCwyNzg1MiwzMDEzMCwzMDM4MiwzMDg2NSwzMTE5MiwzMjIwMywzMjYzMSwzMjkzMywzNDk4NywzNTUxMywzNjAyNywzNjk5MSwzODc1MCwzOTEzMSwyNzE0NywzMTgwMCwyMDYzMywyMzYxNCwyNDQ5NCwyNjUwMywyNzYwOCwyOTc0''@;'; put 'put ''OSwzMDQ3MywzMjY1NCw0MDc2MywyNjU3MCwzMTI1NSwyMTMwNSwzMDA5MSwzOTY2MSwyNDQyMiwzMzE4MSwzMzc3NywzMjkyMCwyNDM4MCwyNDUxNywzMDA1MCwzMTU1OCwzNjkyNCwyNjcyNywyMzAxOSwyMzE5NSwzMjAxNiwzMDMzNCwzNTYyOCwyMDQ2OSwyNDQyNiwyNzE2MSwyNzcwMywy''@;'; put 'put ''ODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTQxMywzNTk2MSwyNDI4NywyNTU1MSwzMDE0OSwzMTE4NiwzMzQ5NSwzNzY3MiwzNzYxOCwzMzk0OCwzNDU0MSwzOTk4MSwyMTY5NywyNDQyOCwyNTk5NiwyNzk5NiwyODY5MywzNjAwNywzNjA1MSwzODk3MSwyNTkzNSwyOTk0MiwxOTk4MSwyMDE4''@;'; put 'put ''NCwyMjQ5NiwyMjgyNywyMzE0MiwyMzUwMCwyMDkwNCwyNDA2NywyNDIyMCwyNDU5OCwyNTIwNiwyNTk3NSwyNjAyMywyNjIyMiwyODAxNCwyOTIzOCwzMTUyNiwzMzEwNCwzMzE3OCwzMzQzMywzNTY3NiwzNmUzLDM2MDcwLDM2MjEyLDM4NDI4LDM4NDY4LDIwMzk4LDI1NzcxLDI3NDk0LDMz''@;'; put 'put ''MzEwLDMzODg5LDM0MTU0LDM3MDk2LDIzNTUzLDI2OTYzLDM5MDgwLDMzOTE0LDM0MTM1LDIwMjM5LDIxMTAzLDI0NDg5LDI0MTMzLDI2MzgxLDMxMTE5LDMzMTQ1LDM1MDc5LDM1MjA2LDI4MTQ5LDI0MzQzLDI1MTczLDI3ODMyLDIwMTc1LDI5Mjg5LDM5ODI2LDIwOTk4LDIxNTYzLDIyMTMy''@;'; put 'put ''LDIyNzA3LDI0OTk2LDI1MTk4LDI4OTU0LDIyODk0LDMxODgxLDMxOTY2LDMyMDI3LDM4NjQwLDI1OTkxLDMyODYyLDE5OTkzLDIwMzQxLDIwODUzLDIyNTkyLDI0MTYzLDI0MTc5LDI0MzMwLDI2NTY0LDIwMDA2LDM0MTA5LDM4MjgxLDM4NDkxLDMxODU5LDM4OTEzLDIwNzMxLDIyNzIxLDMw''@;'; put 'put ''Mjk0LDMwODg3LDIxMDI5LDMwNjI5LDM0MDY1LDMxNjIyLDIwNTU5LDIyNzkzLDI5MjU1LDMxNjg3LDMyMjMyLDM2Nzk0LDM2ODIwLDM2OTQxLDIwNDE1LDIxMTkzLDIzMDgxLDI0MzIxLDM4ODI5LDIwNDQ1LDMzMzAzLDM3NjEwLDIyMjc1LDI1NDI5LDI3NDk3LDI5OTk1LDM1MDM2LDM2NjI4''@;'; put 'put ''LDMxMjk4LDIxMjE1LDIyNjc1LDI0OTE3LDI1MDk4LDI2Mjg2LDI3NTk3LDMxODA3LDMzNzY5LDIwNTE1LDIwNDcyLDIxMjUzLDIxNTc0LDIyNTc3LDIyODU3LDIzNDUzLDIzNzkyLDIzNzkxLDIzODQ5LDI0MjE0LDI1MjY1LDI1NDQ3LDI1OTE4LDI2MDQxLDI2Mzc5LDI3ODYxLDI3ODczLDI4''@;'; put 'put ''OTIxLDMwNzcwLDMyMjk5LDMyOTkwLDMzNDU5LDMzODA0LDM0MDI4LDM0NTYyLDM1MDkwLDM1MzcwLDM1OTE0LDM3MDMwLDM3NTg2LDM5MTY1LDQwMTc5LDQwMzAwLDIwMDQ3LDIwMTI5LDIwNjIxLDIxMDc4LDIyMzQ2LDIyOTUyLDI0MTI1LDI0NTM2LDI0NTM3LDI1MTUxLDI2MjkyLDI2Mzk1''@;'; put 'put ''LDI2NTc2LDI2ODM0LDIwODgyLDMyMDMzLDMyOTM4LDMzMTkyLDM1NTg0LDM1OTgwLDM2MDMxLDM3NTAyLDM4NDUwLDIxNTM2LDM4OTU2LDIxMjcxLDIwNjkzLDIxMzQwLDIyNjk2LDI1Nzc4LDI2NDIwLDI5Mjg3LDMwNTY2LDMxMzAyLDM3MzUwLDIxMTg3LDI3ODA5LDI3NTI2LDIyNTI4LDI0''@;'; put 'put ''MTQwLDIyODY4LDI2NDEyLDMyNzYzLDIwOTYxLDMwNDA2LDI1NzA1LDMwOTUyLDM5NzY0LDQwNjM1LDIyNDc1LDIyOTY5LDI2MTUxLDI2NTIyLDI3NTk4LDIxNzM3LDI3MDk3LDI0MTQ5LDMzMTgwLDI2NTE3LDM5ODUwLDI2NjIyLDQwMDE4LDI2NzE3LDIwMTM0LDIwNDUxLDIxNDQ4LDI1Mjcz''@;'; put 'put ''LDI2NDExLDI3ODE5LDM2ODA0LDIwMzk3LDMyMzY1LDQwNjM5LDE5OTc1LDI0OTMwLDI4Mjg4LDI4NDU5LDM0MDY3LDIxNjE5LDI2NDEwLDM5NzQ5LDI0MDUxLDMxNjM3LDIzNzI0LDIzNDk0LDM0NTg4LDI4MjM0LDM0MDAxLDMxMjUyLDMzMDMyLDIyOTM3LDMxODg1LDI3NjY1LDMwNDk2LDIx''@;'; put 'put ''MjA5LDIyODE4LDI4OTYxLDI5Mjc5LDMwNjgzLDM4Njk1LDQwMjg5LDI2ODkxLDIzMTY3LDIzMDY0LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDMwNDMxLDM2ODU1LDM3NTI4LDQwMTgwLDIzMDE4LDI5Mjc3LDI4MzU3LDIwODEzLDI2ODI1LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjM0LDI1NzIw''@;'; put 'put ''LDI3MTY5LDMzNTM4LDIyOTE2LDIzMzkxLDI3NjExLDI5NDY3LDMwNDUwLDMyMTc4LDMyNzkxLDMzOTQ1LDIwNzg2LDI2NDA4LDQwNjY1LDMwNDQ2LDI2NDY2LDIxMjQ3LDM5MTczLDIzNTg4LDI1MTQ3LDMxODcwLDM2MDE2LDIxODM5LDI0NzU4LDMyMDExLDM4MjcyLDIxMjQ5LDIwMDYzLDIw''@;'; put 'put ''OTE4LDIyODEyLDI5MjQyLDMyODIyLDM3MzI2LDI0MzU3LDMwNjkwLDIxMzgwLDI0NDQxLDMyMDA0LDM0MjIwLDM1Mzc5LDM2NDkzLDM4NzQyLDI2NjExLDM0MjIyLDM3OTcxLDI0ODQxLDI0ODQwLDI3ODMzLDMwMjkwLDM1NTY1LDM2NjY0LDIxODA3LDIwMzA1LDIwNzc4LDIxMTkxLDIxNDUx''@;'; put 'put ''LDIzNDYxLDI0MTg5LDI0NzM2LDI0OTYyLDI1NTU4LDI2Mzc3LDI2NTg2LDI4MjYzLDI4MDQ0LDI5NDk0LDI5NDk1LDMwMDAxLDMxMDU2LDM1MDI5LDM1NDgwLDM2OTM4LDM3MDA5LDM3MTA5LDM4NTk2LDM0NzAxLDIyODA1LDIwMTA0LDIwMzEzLDE5OTgyLDM1NDY1LDM2NjcxLDM4OTI4LDIw''@;'; put 'put ''NjUzLDI0MTg4LDIyOTM0LDIzNDgxLDI0MjQ4LDI1NTYyLDI1NTk0LDI1NzkzLDI2MzMyLDI2OTU0LDI3MDk2LDI3OTE1LDI4MzQyLDI5MDc2LDI5OTkyLDMxNDA3LDMyNjUwLDMyNzY4LDMzODY1LDMzOTkzLDM1MjAxLDM1NjE3LDM2MzYyLDM2OTY1LDM4NTI1LDM5MTc4LDI0OTU4LDI1MjMz''@;'; put 'put ''LDI3NDQyLDI3Nzc5LDI4MDIwLDMyNzE2LDMyNzY0LDI4MDk2LDMyNjQ1LDM0NzQ2LDM1MDY0LDI2NDY5LDMzNzEzLDM4OTcyLDM4NjQ3LDI3OTMxLDMyMDk3LDMzODUzLDM3MjI2LDIwMDgxLDIxMzY1LDIzODg4LDI3Mzk2LDI4NjUxLDM0MjUzLDM0MzQ5LDM1MjM5LDIxMDMzLDIxNTE5LDIz''@;'; put 'put ''NjUzLDI2NDQ2LDI2NzkyLDI5NzAyLDI5ODI3LDMwMTc4LDM1MDIzLDM1MDQxLDM3MzI0LDM4NjI2LDM4NTIwLDI0NDU5LDI5NTc1LDMxNDM1LDMzODcwLDI1NTA0LDMwMDUzLDIxMTI5LDI3OTY5LDI4MzE2LDI5NzA1LDMwMDQxLDMwODI3LDMxODkwLDM4NTM0LDMxNDUyLDQwODQ1LDIwNDA2''@;'; put 'put ''LDI0OTQyLDI2MDUzLDM0Mzk2LDIwMTAyLDIwMTQyLDIwNjk4LDIwMDAxLDIwOTQwLDIzNTM0LDI2MDA5LDI2NzUzLDI4MDkyLDI5NDcxLDMwMjc0LDMwNjM3LDMxMjYwLDMxOTc1LDMzMzkxLDM1NTM4LDM2OTg4LDM3MzI3LDM4NTE3LDM4OTM2LDIxMTQ3LDMyMjA5LDIwNTIzLDIxNDAwLDI2''@;'; put 'put ''NTE5LDI4MTA3LDI5MTM2LDI5NzQ3LDMzMjU2LDM2NjUwLDM4NTYzLDQwMDIzLDQwNjA3LDI5NzkyLDIyNTkzLDI4MDU3LDMyMDQ3LDM5MDA2LDIwMTk2LDIwMjc4LDIwMzYzLDIwOTE5LDIxMTY5LDIzOTk0LDI0NjA0LDI5NjE4LDMxMDM2LDMzNDkxLDM3NDI4LDM4NTgzLDM4NjQ2LDM4NjY2''@;'; put 'put ''LDQwNTk5LDQwODAyLDI2Mjc4LDI3NTA4LDIxMDE1LDIxMTU1LDI4ODcyLDM1MDEwLDI0MjY1LDI0NjUxLDI0OTc2LDI4NDUxLDI5MDAxLDMxODA2LDMyMjQ0LDMyODc5LDM0MDMwLDM2ODk5LDM3Njc2LDIxNTcwLDM5NzkxLDI3MzQ3LDI4ODA5LDM2MDM0LDM2MzM1LDM4NzA2LDIxMTcyLDIz''@;'; put 'put ''MTA1LDI0MjY2LDI0MzI0LDI2MzkxLDI3MDA0LDI3MDI4LDI4MDEwLDI4NDMxLDI5MjgyLDI5NDM2LDMxNzI1LDMyNzY5LDMyODk0LDM0NjM1LDM3MDcwLDIwODQ1LDQwNTk1LDMxMTA4LDMyOTA3LDM3NjgyLDM1NTQyLDIwNTI1LDIxNjQ0LDM1NDQxLDI3NDk4LDM2MDM2LDMzMDMxLDI0Nzg1''@;'; put 'put ''LDI2NTI4LDQwNDM0LDIwMTIxLDIwMTIwLDM5OTUyLDM1NDM1LDM0MjQxLDM0MTUyLDI2ODgwLDI4Mjg2LDMwODcxLDMzMTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQzMzIsMTk5ODQsMTk5ODksMjAwMTAsMjAwMTcsMjAwMjIsMjAwMjgs''@;'; put 'put ''MjAwMzEsMjAwMzQsMjAwNTQsMjAwNTYsMjAwOTgsMjAxMDEsMzU5NDcsMjAxMDYsMzMyOTgsMjQzMzMsMjAxMTAsMjAxMjYsMjAxMjcsMjAxMjgsMjAxMzAsMjAxNDQsMjAxNDcsMjAxNTAsMjAxNzQsMjAxNzMsMjAxNjQsMjAxNjYsMjAxNjIsMjAxODMsMjAxOTAsMjAyMDUsMjAxOTEsMjAy''@;'; put 'put ''MTUsMjAyMzMsMjAzMTQsMjAyNzIsMjAzMTUsMjAzMTcsMjAzMTEsMjAyOTUsMjAzNDIsMjAzNjAsMjAzNjcsMjAzNzYsMjAzNDcsMjAzMjksMjAzMzYsMjAzNjksMjAzMzUsMjAzNTgsMjAzNzQsMjA3NjAsMjA0MzYsMjA0NDcsMjA0MzAsMjA0NDAsMjA0NDMsMjA0MzMsMjA0NDIsMjA0MzIs''@;'; put 'put ''MjA0NTIsMjA0NTMsMjA1MDYsMjA1MjAsMjA1MDAsMjA1MjIsMjA1MTcsMjA0ODUsMjAyNTIsMjA0NzAsMjA1MTMsMjA1MjEsMjA1MjQsMjA0NzgsMjA0NjMsMjA0OTcsMjA0ODYsMjA1NDcsMjA1NTEsMjYzNzEsMjA1NjUsMjA1NjAsMjA1NTIsMjA1NzAsMjA1NjYsMjA1ODgsMjA2MDAsMjA2''@;'; put 'put ''MDgsMjA2MzQsMjA2MTMsMjA2NjAsMjA2NTgsMjA2ODEsMjA2ODIsMjA2NTksMjA2NzQsMjA2OTQsMjA3MDIsMjA3MDksMjA3MTcsMjA3MDcsMjA3MTgsMjA3MjksMjA3MjUsMjA3NDUsMjA3MzcsMjA3MzgsMjA3NTgsMjA3NTcsMjA3NTYsMjA3NjIsMjA3NjksMjA3OTQsMjA3OTEsMjA3OTYs''@;'; put 'put ''MjA3OTUsMjA3OTksMjA4MDAsMjA4MTgsMjA4MTIsMjA4MjAsMjA4MzQsMzE0ODAsMjA4NDEsMjA4NDIsMjA4NDYsMjA4NjQsMjA4NjYsMjIyMzIsMjA4NzYsMjA4NzMsMjA4NzksMjA4ODEsMjA4ODMsMjA4ODUsMjA4ODYsMjA5MDAsMjA5MDIsMjA4OTgsMjA5MDUsMjA5MDYsMjA5MDcsMjA5''@;'; put 'put ''MTUsMjA5MTMsMjA5MTQsMjA5MTIsMjA5MTcsMjA5MjUsMjA5MzMsMjA5MzcsMjA5NTUsMjA5NjAsMzQzODksMjA5NjksMjA5NzMsMjA5NzYsMjA5ODEsMjA5OTAsMjA5OTYsMjEwMDMsMjEwMTIsMjEwMDYsMjEwMzEsMjEwMzQsMjEwMzgsMjEwNDMsMjEwNDksMjEwNzEsMjEwNjAsMjEwNjcs''@;'; put 'put ''MjEwNjgsMjEwODYsMjEwNzYsMjEwOTgsMjExMDgsMjEwOTcsMjExMDcsMjExMTksMjExMTcsMjExMzMsMjExNDAsMjExMzgsMjExMDUsMjExMjgsMjExMzcsMzY3NzYsMzY3NzUsMjExNjQsMjExNjUsMjExODAsMjExNzMsMjExODUsMjExOTcsMjEyMDcsMjEyMTQsMjEyMTksMjEyMjIsMzkx''@;'; put 'put ''NDksMjEyMTYsMjEyMzUsMjEyMzcsMjEyNDAsMjEyNDEsMjEyNTQsMjEyNTYsMzAwMDgsMjEyNjEsMjEyNjQsMjEyNjMsMjEyNjksMjEyNzQsMjEyODMsMjEyOTUsMjEyOTcsMjEyOTksMjEzMDQsMjEzMTIsMjEzMTgsMjEzMTcsMTk5OTEsMjEzMjEsMjEzMjUsMjA5NTAsMjEzNDIsMjEzNTMs''@;'; put 'put ''MjEzNTgsMjI4MDgsMjEzNzEsMjEzNjcsMjEzNzgsMjEzOTgsMjE0MDgsMjE0MTQsMjE0MTMsMjE0MjIsMjE0MjQsMjE0MzAsMjE0NDMsMzE3NjIsMzg2MTcsMjE0NzEsMjYzNjQsMjkxNjYsMjE0ODYsMjE0ODAsMjE0ODUsMjE0OTgsMjE1MDUsMjE1NjUsMjE1NjgsMjE1NDgsMjE1NDksMjE1''@;'; put 'put ''NjQsMjE1NTAsMjE1NTgsMjE1NDUsMjE1MzMsMjE1ODIsMjE2NDcsMjE2MjEsMjE2NDYsMjE1OTksMjE2MTcsMjE2MjMsMjE2MTYsMjE2NTAsMjE2MjcsMjE2MzIsMjE2MjIsMjE2MzYsMjE2NDgsMjE2MzgsMjE3MDMsMjE2NjYsMjE2ODgsMjE2NjksMjE2NzYsMjE3MDAsMjE3MDQsMjE2NzIs''@;'; put 'put ''MjE2NzUsMjE2OTgsMjE2NjgsMjE2OTQsMjE2OTIsMjE3MjAsMjE3MzMsMjE3MzQsMjE3NzUsMjE3ODAsMjE3NTcsMjE3NDIsMjE3NDEsMjE3NTQsMjE3MzAsMjE4MTcsMjE4MjQsMjE4NTksMjE4MzYsMjE4MDYsMjE4NTIsMjE4MjksMjE4NDYsMjE4NDcsMjE4MTYsMjE4MTEsMjE4NTMsMjE5''@;'; put 'put ''MTMsMjE4ODgsMjE2NzksMjE4OTgsMjE5MTksMjE4ODMsMjE4ODYsMjE5MTIsMjE5MTgsMjE5MzQsMjE4ODQsMjE4OTEsMjE5MjksMjE4OTUsMjE5MjgsMjE5NzgsMjE5NTcsMjE5ODMsMjE5NTYsMjE5ODAsMjE5ODgsMjE5NzIsMjIwMzYsMjIwMDcsMjIwMzgsMjIwMTQsMjIwMTMsMjIwNDMs''@;'; put 'put ''MjIwMDksMjIwOTQsMjIwOTYsMjkxNTEsMjIwNjgsMjIwNzAsMjIwNjYsMjIwNzIsMjIxMjMsMjIxMTYsMjIwNjMsMjIxMjQsMjIxMjIsMjIxNTAsMjIxNDQsMjIxNTQsMjIxNzYsMjIxNjQsMjIxNTksMjIxODEsMjIxOTAsMjIxOTgsMjIxOTYsMjIyMTAsMjIyMDQsMjIyMDksMjIyMTEsMjIy''@;'; put 'put ''MDgsMjIyMTYsMjIyMjIsMjIyMjUsMjIyMjcsMjIyMzEsMjIyNTQsMjIyNjUsMjIyNzIsMjIyNzEsMjIyNzYsMjIyODEsMjIyODAsMjIyODMsMjIyODUsMjIyOTEsMjIyOTYsMjIyOTQsMjE5NTksMjIzMDAsMjIzMTAsMjIzMjcsMjIzMjgsMjIzNTAsMjIzMzEsMjIzMzYsMjIzNTEsMjIzNzcs''@;'; put 'put ''MjI0NjQsMjI0MDgsMjIzNjksMjIzOTksMjI0MDksMjI0MTksMjI0MzIsMjI0NTEsMjI0MzYsMjI0NDIsMjI0NDgsMjI0NjcsMjI0NzAsMjI0ODQsMjI0ODIsMjI0ODMsMjI1MzgsMjI0ODYsMjI0OTksMjI1MzksMjI1NTMsMjI1NTcsMjI2NDIsMjI1NjEsMjI2MjYsMjI2MDMsMjI2NDAsMjc1''@;'; put 'put ''ODQsMjI2MTAsMjI1ODksMjI2NDksMjI2NjEsMjI3MTMsMjI2ODcsMjI2OTksMjI3MTQsMjI3NTAsMjI3MTUsMjI3MTIsMjI3MDIsMjI3MjUsMjI3MzksMjI3MzcsMjI3NDMsMjI3NDUsMjI3NDQsMjI3NTcsMjI3NDgsMjI3NTYsMjI3NTEsMjI3NjcsMjI3NzgsMjI3NzcsMjI3NzksMjI3ODAs''@;'; put 'put ''MjI3ODEsMjI3ODYsMjI3OTQsMjI4MDAsMjI4MTEsMjY3OTAsMjI4MjEsMjI4MjgsMjI4MjksMjI4MzQsMjI4NDAsMjI4NDYsMzE0NDIsMjI4NjksMjI4NjQsMjI4NjIsMjI4NzQsMjI4NzIsMjI4ODIsMjI4ODAsMjI4ODcsMjI4OTIsMjI4ODksMjI5MDQsMjI5MTMsMjI5NDEsMjAzMTgsMjAz''@;'; put 'put ''OTUsMjI5NDcsMjI5NjIsMjI5ODIsMjMwMTYsMjMwMDQsMjI5MjUsMjMwMDEsMjMwMDIsMjMwNzcsMjMwNzEsMjMwNTcsMjMwNjgsMjMwNDksMjMwNjYsMjMxMDQsMjMxNDgsMjMxMTMsMjMwOTMsMjMwOTQsMjMxMzgsMjMxNDYsMjMxOTQsMjMyMjgsMjMyMzAsMjMyNDMsMjMyMzQsMjMyMjks''@;'; put 'put ''MjMyNjcsMjMyNTUsMjMyNzAsMjMyNzMsMjMyNTQsMjMyOTAsMjMyOTEsMjMzMDgsMjMzMDcsMjMzMTgsMjMzNDYsMjMyNDgsMjMzMzgsMjMzNTAsMjMzNTgsMjMzNjMsMjMzNjUsMjMzNjAsMjMzNzcsMjMzODEsMjMzODYsMjMzODcsMjMzOTcsMjM0MDEsMjM0MDgsMjM0MTEsMjM0MTMsMjM0''@;'; put 'put ''MTYsMjU5OTIsMjM0MTgsMjM0MjQsMjM0MjcsMjM0NjIsMjM0ODAsMjM0OTEsMjM0OTUsMjM0OTcsMjM1MDgsMjM1MDQsMjM1MjQsMjM1MjYsMjM1MjIsMjM1MTgsMjM1MjUsMjM1MzEsMjM1MzYsMjM1NDIsMjM1MzksMjM1NTcsMjM1NTksMjM1NjAsMjM1NjUsMjM1NzEsMjM1ODQsMjM1ODYs''@;'; put 'put ''MjM1OTIsMjM2MDgsMjM2MDksMjM2MTcsMjM2MjIsMjM2MzAsMjM2MzUsMjM2MzIsMjM2MzEsMjM0MDksMjM2NjAsMjM2NjIsMjAwNjYsMjM2NzAsMjM2NzMsMjM2OTIsMjM2OTcsMjM3MDAsMjI5MzksMjM3MjMsMjM3MzksMjM3MzQsMjM3NDAsMjM3MzUsMjM3NDksMjM3NDIsMjM3NTEsMjM3''@;'; put 'put ''NjksMjM3ODUsMjM4MDUsMjM4MDIsMjM3ODksMjM5NDgsMjM3ODYsMjM4MTksMjM4MjksMjM4MzEsMjM5MDAsMjM4MzksMjM4MzUsMjM4MjUsMjM4MjgsMjM4NDIsMjM4MzQsMjM4MzMsMjM4MzIsMjM4ODQsMjM4OTAsMjM4ODYsMjM4ODMsMjM5MTYsMjM5MjMsMjM5MjYsMjM5NDMsMjM5NDAs''@;'; put 'put ''MjM5MzgsMjM5NzAsMjM5NjUsMjM5ODAsMjM5ODIsMjM5OTcsMjM5NTIsMjM5OTEsMjM5OTYsMjQwMDksMjQwMTMsMjQwMTksMjQwMTgsMjQwMjIsMjQwMjcsMjQwNDMsMjQwNTAsMjQwNTMsMjQwNzUsMjQwOTAsMjQwODksMjQwODEsMjQwOTEsMjQxMTgsMjQxMTksMjQxMzIsMjQxMzEsMjQx''@;'; put 'put ''MjgsMjQxNDIsMjQxNTEsMjQxNDgsMjQxNTksMjQxNjIsMjQxNjQsMjQxMzUsMjQxODEsMjQxODIsMjQxODYsNDA2MzYsMjQxOTEsMjQyMjQsMjQyNTcsMjQyNTgsMjQyNjQsMjQyNzIsMjQyNzEsMjQyNzgsMjQyOTEsMjQyODUsMjQyODIsMjQyODMsMjQyOTAsMjQyODksMjQyOTYsMjQyOTcs''@;'; put 'put ''MjQzMDAsMjQzMDUsMjQzMDcsMjQzMDQsMjQzMDgsMjQzMTIsMjQzMTgsMjQzMjMsMjQzMjksMjQ0MTMsMjQ0MTIsMjQzMzEsMjQzMzcsMjQzNDIsMjQzNjEsMjQzNjUsMjQzNzYsMjQzODUsMjQzOTIsMjQzOTYsMjQzOTgsMjQzNjcsMjQ0MDEsMjQ0MDYsMjQ0MDcsMjQ0MDksMjQ0MTcsMjQ0''@;'; put 'put ''MjksMjQ0MzUsMjQ0MzksMjQ0NTEsMjQ0NTAsMjQ0NDcsMjQ0NTgsMjQ0NTYsMjQ0NjUsMjQ0NTUsMjQ0NzgsMjQ0NzMsMjQ0NzIsMjQ0ODAsMjQ0ODgsMjQ0OTMsMjQ1MDgsMjQ1MzQsMjQ1NzEsMjQ1NDgsMjQ1NjgsMjQ1NjEsMjQ1NDEsMjQ3NTUsMjQ1NzUsMjQ2MDksMjQ2NzIsMjQ2MDEs''@;'; put 'put ''MjQ1OTIsMjQ2MTcsMjQ1OTAsMjQ2MjUsMjQ2MDMsMjQ1OTcsMjQ2MTksMjQ2MTQsMjQ1OTEsMjQ2MzQsMjQ2NjYsMjQ2NDEsMjQ2ODIsMjQ2OTUsMjQ2NzEsMjQ2NTAsMjQ2NDYsMjQ2NTMsMjQ2NzUsMjQ2NDMsMjQ2NzYsMjQ2NDIsMjQ2ODQsMjQ2ODMsMjQ2NjUsMjQ3MDUsMjQ3MTcsMjQ4''@;'; put 'put ''MDcsMjQ3MDcsMjQ3MzAsMjQ3MDgsMjQ3MzEsMjQ3MjYsMjQ3MjcsMjQ3MjIsMjQ3NDMsMjQ3MTUsMjQ4MDEsMjQ3NjAsMjQ4MDAsMjQ3ODcsMjQ3NTYsMjQ1NjAsMjQ3NjUsMjQ3NzQsMjQ3NTcsMjQ3OTIsMjQ5MDksMjQ4NTMsMjQ4MzgsMjQ4MjIsMjQ4MjMsMjQ4MzIsMjQ4MjAsMjQ4MjYs''@;'; put 'put ''MjQ4MzUsMjQ4NjUsMjQ4MjcsMjQ4MTcsMjQ4NDUsMjQ4NDYsMjQ5MDMsMjQ4OTQsMjQ4NzIsMjQ4NzEsMjQ5MDYsMjQ4OTUsMjQ4OTIsMjQ4NzYsMjQ4ODQsMjQ4OTMsMjQ4OTgsMjQ5MDAsMjQ5NDcsMjQ5NTEsMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MzksMjQ5NDgsMjQ5NDMsMjQ5MzMsMjQ5''@;'; put 'put ''NDUsMjQ5MjcsMjQ5MjUsMjQ5MTUsMjQ5NDksMjQ5ODUsMjQ5ODIsMjQ5NjcsMjUwMDQsMjQ5ODAsMjQ5ODYsMjQ5NzAsMjQ5NzcsMjUwMDMsMjUwMDYsMjUwMzYsMjUwMzQsMjUwMzMsMjUwNzksMjUwMzIsMjUwMjcsMjUwMzAsMjUwMTgsMjUwMzUsMzI2MzMsMjUwMzcsMjUwNjIsMjUwNTks''@;'; put 'put ''MjUwNzgsMjUwODIsMjUwNzYsMjUwODcsMjUwODUsMjUwODQsMjUwODYsMjUwODgsMjUwOTYsMjUwOTcsMjUxMDEsMjUxMDAsMjUxMDgsMjUxMTUsMjUxMTgsMjUxMjEsMjUxMzAsMjUxMzQsMjUxMzYsMjUxMzgsMjUxMzksMjUxNTMsMjUxNjYsMjUxODIsMjUxODcsMjUxNzksMjUxODQsMjUx''@;'; put 'put ''OTIsMjUyMTIsMjUyMTgsMjUyMjUsMjUyMTQsMjUyMzQsMjUyMzUsMjUyMzgsMjUzMDAsMjUyMTksMjUyMzYsMjUzMDMsMjUyOTcsMjUyNzUsMjUyOTUsMjUzNDMsMjUyODYsMjU4MTIsMjUyODgsMjUzMDgsMjUyOTIsMjUyOTAsMjUyODIsMjUyODcsMjUyNDMsMjUyODksMjUzNTYsMjUzMjYs''@;'; put 'put ''MjUzMjksMjUzODMsMjUzNDYsMjUzNTIsMjUzMjcsMjUzMzMsMjU0MjQsMjU0MDYsMjU0MjEsMjU2MjgsMjU0MjMsMjU0OTQsMjU0ODYsMjU0NzIsMjU1MTUsMjU0NjIsMjU1MDcsMjU0ODcsMjU0ODEsMjU1MDMsMjU1MjUsMjU0NTEsMjU0NDksMjU1MzQsMjU1NzcsMjU1MzYsMjU1NDIsMjU1''@;'; put 'put ''NzEsMjU1NDUsMjU1NTQsMjU1OTAsMjU1NDAsMjU2MjIsMjU2NTIsMjU2MDYsMjU2MTksMjU2MzgsMjU2NTQsMjU4ODUsMjU2MjMsMjU2NDAsMjU2MTUsMjU3MDMsMjU3MTEsMjU3MTgsMjU2NzgsMjU4OTgsMjU3NDksMjU3NDcsMjU3NjUsMjU3NjksMjU3MzYsMjU3ODgsMjU4MTgsMjU4MTAs''@;'; put 'put ''MjU3OTcsMjU3OTksMjU3ODcsMjU4MTYsMjU3OTQsMjU4NDEsMjU4MzEsMzMyODksMjU4MjQsMjU4MjUsMjUyNjAsMjU4MjcsMjU4MzksMjU5MDAsMjU4NDYsMjU4NDQsMjU4NDIsMjU4NTAsMjU4NTYsMjU4NTMsMjU4ODAsMjU4ODQsMjU4NjEsMjU4OTIsMjU4OTEsMjU4OTksMjU5MDgsMjU5''@;'; put 'put ''MDksMjU5MTEsMjU5MTAsMjU5MTIsMzAwMjcsMjU5MjgsMjU5NDIsMjU5NDEsMjU5MzMsMjU5NDQsMjU5NTAsMjU5NDksMjU5NzAsMjU5NzYsMjU5ODYsMjU5ODcsMzU3MjIsMjYwMTEsMjYwMTUsMjYwMjcsMjYwMzksMjYwNTEsMjYwNTQsMjYwNDksMjYwNTIsMjYwNjAsMjYwNjYsMjYwNzUs''@;'; put 'put ''MjYwNzMsMjYwODAsMjYwODEsMjYwOTcsMjY0ODIsMjYxMjIsMjYxMTUsMjYxMDcsMjY0ODMsMjYxNjUsMjYxNjYsMjYxNjQsMjYxNDAsMjYxOTEsMjYxODAsMjYxODUsMjYxNzcsMjYyMDYsMjYyMDUsMjYyMTIsMjYyMTUsMjYyMTYsMjYyMDcsMjYyMTAsMjYyMjQsMjYyNDMsMjYyNDgsMjYy''@;'; put 'put ''NTQsMjYyNDksMjYyNDQsMjYyNjQsMjYyNjksMjYzMDUsMjYyOTcsMjYzMTMsMjYzMDIsMjYzMDAsMjYzMDgsMjYyOTYsMjYzMjYsMjYzMzAsMjYzMzYsMjYxNzUsMjYzNDIsMjYzNDUsMjYzNTIsMjYzNTcsMjYzNTksMjYzODMsMjYzOTAsMjYzOTgsMjY0MDYsMjY0MDcsMzg3MTIsMjY0MTQs''@;'; put 'put ''MjY0MzEsMjY0MjIsMjY0MzMsMjY0MjQsMjY0MjMsMjY0MzgsMjY0NjIsMjY0NjQsMjY0NTcsMjY0NjcsMjY0NjgsMjY1MDUsMjY0ODAsMjY1MzcsMjY0OTIsMjY0NzQsMjY1MDgsMjY1MDcsMjY1MzQsMjY1MjksMjY1MDEsMjY1NTEsMjY2MDcsMjY1NDgsMjY2MDQsMjY1NDcsMjY2MDEsMjY1''@;'; put 'put ''NTIsMjY1OTYsMjY1OTAsMjY1ODksMjY1OTQsMjY2MDYsMjY1NTMsMjY1NzQsMjY1NjYsMjY1OTksMjcyOTIsMjY2NTQsMjY2OTQsMjY2NjUsMjY2ODgsMjY3MDEsMjY2NzQsMjY3MDIsMjY4MDMsMjY2NjcsMjY3MTMsMjY3MjMsMjY3NDMsMjY3NTEsMjY3ODMsMjY3NjcsMjY3OTcsMjY3NzIs''@;'; put 'put ''MjY3ODEsMjY3NzksMjY3NTUsMjczMTAsMjY4MDksMjY3NDAsMjY4MDUsMjY3ODQsMjY4MTAsMjY4OTUsMjY3NjUsMjY3NTAsMjY4ODEsMjY4MjYsMjY4ODgsMjY4NDAsMjY5MTQsMjY5MTgsMjY4NDksMjY4OTIsMjY4MjksMjY4MzYsMjY4NTUsMjY4MzcsMjY5MzQsMjY4OTgsMjY4ODQsMjY4''@;'; put 'put ''MzksMjY4NTEsMjY5MTcsMjY4NzMsMjY4NDgsMjY4NjMsMjY5MjAsMjY5MjIsMjY5MDYsMjY5MTUsMjY5MTMsMjY4MjIsMjcwMDEsMjY5OTksMjY5NzIsMjdlMywyNjk4NywyNjk2NCwyNzAwNiwyNjk5MCwyNjkzNywyNjk5NiwyNjk0MSwyNjk2OSwyNjkyOCwyNjk3NywyNjk3NCwyNjk3Mywy''@;'; put 'put ''NzAwOSwyNjk4NiwyNzA1OCwyNzA1NCwyNzA4OCwyNzA3MSwyNzA3MywyNzA5MSwyNzA3MCwyNzA4NiwyMzUyOCwyNzA4MiwyNzEwMSwyNzA2NywyNzA3NSwyNzA0NywyNzE4MiwyNzAyNSwyNzA0MCwyNzAzNiwyNzAyOSwyNzA2MCwyNzEwMiwyNzExMiwyNzEzOCwyNzE2MywyNzEzNSwyNzQw''@;'; put 'put ''MiwyNzEyOSwyNzEyMiwyNzExMSwyNzE0MSwyNzA1NywyNzE2NiwyNzExNywyNzE1NiwyNzExNSwyNzE0NiwyNzE1NCwyNzMyOSwyNzE3MSwyNzE1NSwyNzIwNCwyNzE0OCwyNzI1MCwyNzE5MCwyNzI1NiwyNzIwNywyNzIzNCwyNzIyNSwyNzIzOCwyNzIwOCwyNzE5MiwyNzE3MCwyNzI4MCwy''@;'; put 'put ''NzI3NywyNzI5NiwyNzI2OCwyNzI5OCwyNzI5OSwyNzI4NywzNDMyNywyNzMyMywyNzMzMSwyNzMzMCwyNzMyMCwyNzMxNSwyNzMwOCwyNzM1OCwyNzM0NSwyNzM1OSwyNzMwNiwyNzM1NCwyNzM3MCwyNzM4NywyNzM5NywzNDMyNiwyNzM4NiwyNzQxMCwyNzQxNCwzOTcyOSwyNzQyMywyNzQ0''@;'; put 'put ''OCwyNzQ0NywzMDQyOCwyNzQ0OSwzOTE1MCwyNzQ2MywyNzQ1OSwyNzQ2NSwyNzQ3MiwyNzQ4MSwyNzQ3NiwyNzQ4MywyNzQ4NywyNzQ4OSwyNzUxMiwyNzUxMywyNzUxOSwyNzUyMCwyNzUyNCwyNzUyMywyNzUzMywyNzU0NCwyNzU0MSwyNzU1MCwyNzU1NiwyNzU2MiwyNzU2MywyNzU2Nywy''@;'; put 'put ''NzU3MCwyNzU2OSwyNzU3MSwyNzU3NSwyNzU4MCwyNzU5MCwyNzU5NSwyNzYwMywyNzYxNSwyNzYyOCwyNzYyNywyNzYzNSwyNzYzMSw0MDYzOCwyNzY1NiwyNzY2NywyNzY2OCwyNzY3NSwyNzY4NCwyNzY4MywyNzc0MiwyNzczMywyNzc0NiwyNzc1NCwyNzc3OCwyNzc4OSwyNzgwMiwyNzc3''@;'; put 'put ''NywyNzgwMywyNzc3NCwyNzc1MiwyNzc2MywyNzc5NCwyNzc5MiwyNzg0NCwyNzg4OSwyNzg1OSwyNzgzNywyNzg2MywyNzg0NSwyNzg2OSwyNzgyMiwyNzgyNSwyNzgzOCwyNzgzNCwyNzg2NywyNzg4NywyNzg2NSwyNzg4MiwyNzkzNSwzNDg5MywyNzk1OCwyNzk0NywyNzk2NSwyNzk2MCwy''@;'; put 'put ''NzkyOSwyNzk1NywyNzk1NSwyNzkyMiwyNzkxNiwyODAwMywyODA1MSwyODAwNCwyNzk5NCwyODAyNSwyNzk5MywyODA0NiwyODA1MywyODY0NCwyODAzNywyODE1MywyODE4MSwyODE3MCwyODA4NSwyODEwMywyODEzNCwyODA4OCwyODEwMiwyODE0MCwyODEyNiwyODEwOCwyODEzNiwyODEx''@;'; put 'put ''NCwyODEwMSwyODE1NCwyODEyMSwyODEzMiwyODExNywyODEzOCwyODE0MiwyODIwNSwyODI3MCwyODIwNiwyODE4NSwyODI3NCwyODI1NSwyODIyMiwyODE5NSwyODI2NywyODIwMywyODI3OCwyODIzNywyODE5MSwyODIyNywyODIxOCwyODIzOCwyODE5NiwyODQxNSwyODE4OSwyODIxNiwy''@;'; put 'put ''ODI5MCwyODMzMCwyODMxMiwyODM2MSwyODM0MywyODM3MSwyODM0OSwyODMzNSwyODM1NiwyODMzOCwyODM3MiwyODM3MywyODMwMywyODMyNSwyODM1NCwyODMxOSwyODQ4MSwyODQzMywyODc0OCwyODM5NiwyODQwOCwyODQxNCwyODQ3OSwyODQwMiwyODQ2NSwyODM5OSwyODQ2NiwyODM2''@;'; put 'put ''NCwyODQ3OCwyODQzNSwyODQwNywyODU1MCwyODUzOCwyODUzNiwyODU0NSwyODU0NCwyODUyNywyODUwNywyODY1OSwyODUyNSwyODU0NiwyODU0MCwyODUwNCwyODU1OCwyODU2MSwyODYxMCwyODUxOCwyODU5NSwyODU3OSwyODU3NywyODU4MCwyODYwMSwyODYxNCwyODU4NiwyODYzOSwy''@;'; put 'put ''ODYyOSwyODY1MiwyODYyOCwyODYzMiwyODY1NywyODY1NCwyODYzNSwyODY4MSwyODY4MywyODY2NiwyODY4OSwyODY3MywyODY4NywyODY3MCwyODY5OSwyODY5OCwyODUzMiwyODcwMSwyODY5NiwyODcwMywyODcyMCwyODczNCwyODcyMiwyODc1MywyODc3MSwyODgyNSwyODgxOCwyODg0''@;'; put 'put ''NywyODkxMywyODg0NCwyODg1NiwyODg1MSwyODg0NiwyODg5NSwyODg3NSwyODg5MywyODg4OSwyODkzNywyODkyNSwyODk1NiwyODk1MywyOTAyOSwyOTAxMywyOTA2NCwyOTAzMCwyOTAyNiwyOTAwNCwyOTAxNCwyOTAzNiwyOTA3MSwyOTE3OSwyOTA2MCwyOTA3NywyOTA5NiwyOTEwMCwy''@;'; put 'put ''OTE0MywyOTExMywyOTExOCwyOTEzOCwyOTEyOSwyOTE0MCwyOTEzNCwyOTE1MiwyOTE2NCwyOTE1OSwyOTE3MywyOTE4MCwyOTE3NywyOTE4MywyOTE5NywyOTIwMCwyOTIxMSwyOTIyNCwyOTIyOSwyOTIyOCwyOTIzMiwyOTIzNCwyOTI0MywyOTI0NCwyOTI0NywyOTI0OCwyOTI1NCwyOTI1''@;'; put 'put ''OSwyOTI3MiwyOTMwMCwyOTMxMCwyOTMxNCwyOTMxMywyOTMxOSwyOTMzMCwyOTMzNCwyOTM0NiwyOTM1MSwyOTM2OSwyOTM2MiwyOTM3OSwyOTM4MiwyOTM4MCwyOTM5MCwyOTM5NCwyOTQxMCwyOTQwOCwyOTQwOSwyOTQzMywyOTQzMSwyMDQ5NSwyOTQ2MywyOTQ1MCwyOTQ2OCwyOTQ2Miwy''@;'; put 'put ''OTQ2OSwyOTQ5MiwyOTQ4NywyOTQ4MSwyOTQ3NywyOTUwMiwyOTUxOCwyOTUxOSw0MDY2NCwyOTUyNywyOTU0NiwyOTU0NCwyOTU1MiwyOTU2MCwyOTU1NywyOTU2MywyOTU2MiwyOTY0MCwyOTYxOSwyOTY0NiwyOTYyNywyOTYzMiwyOTY2OSwyOTY3OCwyOTY2MiwyOTg1OCwyOTcwMSwyOTgw''@;'; put 'put ''NywyOTczMywyOTY4OCwyOTc0NiwyOTc1NCwyOTc4MSwyOTc1OSwyOTc5MSwyOTc4NSwyOTc2MSwyOTc4OCwyOTgwMSwyOTgwOCwyOTc5NSwyOTgwMiwyOTgxNCwyOTgyMiwyOTgzNSwyOTg1NCwyOTg2MywyOTg5OCwyOTkwMywyOTkwOCwyOTY4MSwyOTkyMCwyOTkyMywyOTkyNywyOTkyOSwy''@;'; put 'put ''OTkzNCwyOTkzOCwyOTkzNiwyOTkzNywyOTk0NCwyOTk0MywyOTk1NiwyOTk1NSwyOTk1NywyOTk2NCwyOTk2NiwyOTk2NSwyOTk3MywyOTk3MSwyOTk4MiwyOTk5MCwyOTk5NiwzMDAxMiwzMDAyMCwzMDAyOSwzMDAyNiwzMDAyNSwzMDA0MywzMDAyMiwzMDA0MiwzMDA1NywzMDA1MiwzMDA1''@;'; put 'put ''NSwzMDA1OSwzMDA2MSwzMDA3MiwzMDA3MCwzMDA4NiwzMDA4NywzMDA2OCwzMDA5MCwzMDA4OSwzMDA4MiwzMDEwMCwzMDEwNiwzMDEwOSwzMDExNywzMDExNSwzMDE0NiwzMDEzMSwzMDE0NywzMDEzMywzMDE0MSwzMDEzNiwzMDE0MCwzMDEyOSwzMDE1NywzMDE1NCwzMDE2MiwzMDE2OSwz''@;'; put 'put ''MDE3OSwzMDE3NCwzMDIwNiwzMDIwNywzMDIwNCwzMDIwOSwzMDE5MiwzMDIwMiwzMDE5NCwzMDE5NSwzMDIxOSwzMDIyMSwzMDIxNywzMDIzOSwzMDI0NywzMDI0MCwzMDI0MSwzMDI0MiwzMDI0NCwzMDI2MCwzMDI1NiwzMDI2NywzMDI3OSwzMDI4MCwzMDI3OCwzMDMwMCwzMDI5NiwzMDMw''@;'; put 'put ''NSwzMDMwNiwzMDMxMiwzMDMxMywzMDMxNCwzMDMxMSwzMDMxNiwzMDMyMCwzMDMyMiwzMDMyNiwzMDMyOCwzMDMzMiwzMDMzNiwzMDMzOSwzMDM0NCwzMDM0NywzMDM1MCwzMDM1OCwzMDM1NSwzMDM2MSwzMDM2MiwzMDM4NCwzMDM4OCwzMDM5MiwzMDM5MywzMDM5NCwzMDQwMiwzMDQxMywz''@;'; put 'put ''MDQyMiwzMDQxOCwzMDQzMCwzMDQzMywzMDQzNywzMDQzOSwzMDQ0MiwzNDM1MSwzMDQ1OSwzMDQ3MiwzMDQ3MSwzMDQ2OCwzMDUwNSwzMDUwMCwzMDQ5NCwzMDUwMSwzMDUwMiwzMDQ5MSwzMDUxOSwzMDUyMCwzMDUzNSwzMDU1NCwzMDU2OCwzMDU3MSwzMDU1NSwzMDU2NSwzMDU5MSwzMDU5''@;'; put 'put ''MCwzMDU4NSwzMDYwNiwzMDYwMywzMDYwOSwzMDYyNCwzMDYyMiwzMDY0MCwzMDY0NiwzMDY0OSwzMDY1NSwzMDY1MiwzMDY1MywzMDY1MSwzMDY2MywzMDY2OSwzMDY3OSwzMDY4MiwzMDY4NCwzMDY5MSwzMDcwMiwzMDcxNiwzMDczMiwzMDczOCwzMTAxNCwzMDc1MiwzMTAxOCwzMDc4OSwz''@;'; put 'put ''MDg2MiwzMDgzNiwzMDg1NCwzMDg0NCwzMDg3NCwzMDg2MCwzMDg4MywzMDkwMSwzMDg5MCwzMDg5NSwzMDkyOSwzMDkxOCwzMDkyMywzMDkzMiwzMDkxMCwzMDkwOCwzMDkxNywzMDkyMiwzMDk1NiwzMDk1MSwzMDkzOCwzMDk3MywzMDk2NCwzMDk4MywzMDk5NCwzMDk5MywzMTAwMSwzMTAy''@;'; put 'put ''MCwzMTAxOSwzMTA0MCwzMTA3MiwzMTA2MywzMTA3MSwzMTA2NiwzMTA2MSwzMTA1OSwzMTA5OCwzMTEwMywzMTExNCwzMTEzMywzMTE0Myw0MDc3OSwzMTE0NiwzMTE1MCwzMTE1NSwzMTE2MSwzMTE2MiwzMTE3NywzMTE4OSwzMTIwNywzMTIxMiwzMTIwMSwzMTIwMywzMTI0MCwzMTI0NSwz''@;'; put 'put ''MTI1NiwzMTI1NywzMTI2NCwzMTI2MywzMTEwNCwzMTI4MSwzMTI5MSwzMTI5NCwzMTI4NywzMTI5OSwzMTMxOSwzMTMwNSwzMTMyOSwzMTMzMCwzMTMzNyw0MDg2MSwzMTM0NCwzMTM1MywzMTM1NywzMTM2OCwzMTM4MywzMTM4MSwzMTM4NCwzMTM4MiwzMTQwMSwzMTQzMiwzMTQwOCwzMTQx''@;'; put 'put ''NCwzMTQyOSwzMTQyOCwzMTQyMywzNjk5NSwzMTQzMSwzMTQzNCwzMTQzNywzMTQzOSwzMTQ0NSwzMTQ0MywzMTQ0OSwzMTQ1MCwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MiwzMTQ2OSwzMTQ3MiwzMTQ5MCwzMTUwMywzMTQ5OCwzMTQ5NCwzMTUzOSwzMTUxMiwzMTUxMywzMTUxOCwzMTU0MSwz''@;'; put 'put ''MTUyOCwzMTU0MiwzMTU2OCwzMTYxMCwzMTQ5MiwzMTU2NSwzMTQ5OSwzMTU2NCwzMTU1NywzMTYwNSwzMTU4OSwzMTYwNCwzMTU5MSwzMTYwMCwzMTYwMSwzMTU5NiwzMTU5OCwzMTY0NSwzMTY0MCwzMTY0NywzMTYyOSwzMTY0NCwzMTY0MiwzMTYyNywzMTYzNCwzMTYzMSwzMTU4MSwzMTY0''@;'; put 'put ''MSwzMTY5MSwzMTY4MSwzMTY5MiwzMTY5NSwzMTY2OCwzMTY4NiwzMTcwOSwzMTcyMSwzMTc2MSwzMTc2NCwzMTcxOCwzMTcxNywzMTg0MCwzMTc0NCwzMTc1MSwzMTc2MywzMTczMSwzMTczNSwzMTc2NywzMTc1NywzMTczNCwzMTc3OSwzMTc4MywzMTc4NiwzMTc3NSwzMTc5OSwzMTc4Nywz''@;'; put 'put ''MTgwNSwzMTgyMCwzMTgxMSwzMTgyOCwzMTgyMywzMTgwOCwzMTgyNCwzMTgzMiwzMTgzOSwzMTg0NCwzMTgzMCwzMTg0NSwzMTg1MiwzMTg2MSwzMTg3NSwzMTg4OCwzMTkwOCwzMTkxNywzMTkwNiwzMTkxNSwzMTkwNSwzMTkxMiwzMTkyMywzMTkyMiwzMTkyMSwzMTkxOCwzMTkyOSwzMTkz''@;'; put 'put ''MywzMTkzNiwzMTk0MSwzMTkzOCwzMTk2MCwzMTk1NCwzMTk2NCwzMTk3MCwzOTczOSwzMTk4MywzMTk4NiwzMTk4OCwzMTk5MCwzMTk5NCwzMjAwNiwzMjAwMiwzMjAyOCwzMjAyMSwzMjAxMCwzMjA2OSwzMjA3NSwzMjA0NiwzMjA1MCwzMjA2MywzMjA1MywzMjA3MCwzMjExNSwzMjA4Niwz''@;'; put 'put ''MjA3OCwzMjExNCwzMjEwNCwzMjExMCwzMjA3OSwzMjA5OSwzMjE0NywzMjEzNywzMjA5MSwzMjE0MywzMjEyNSwzMjE1NSwzMjE4NiwzMjE3NCwzMjE2MywzMjE4MSwzMjE5OSwzMjE4OSwzMjE3MSwzMjMxNywzMjE2MiwzMjE3NSwzMjIyMCwzMjE4NCwzMjE1OSwzMjE3NiwzMjIxNiwzMjIy''@;'; put 'put ''MSwzMjIyOCwzMjIyMiwzMjI1MSwzMjI0MiwzMjIyNSwzMjI2MSwzMjI2NiwzMjI5MSwzMjI4OSwzMjI3NCwzMjMwNSwzMjI4NywzMjI2NSwzMjI2NywzMjI5MCwzMjMyNiwzMjM1OCwzMjMxNSwzMjMwOSwzMjMxMywzMjMyMywzMjMxMSwzMjMwNiwzMjMxNCwzMjM1OSwzMjM0OSwzMjM0Miwz''@;'; put 'put ''MjM1MCwzMjM0NSwzMjM0NiwzMjM3NywzMjM2MiwzMjM2MSwzMjM4MCwzMjM3OSwzMjM4NywzMjIxMywzMjM4MSwzNjc4MiwzMjM4MywzMjM5MiwzMjM5MywzMjM5NiwzMjQwMiwzMjQwMCwzMjQwMywzMjQwNCwzMjQwNiwzMjM5OCwzMjQxMSwzMjQxMiwzMjU2OCwzMjU3MCwzMjU4MSwzMjU4''@;'; put 'put ''OCwzMjU4OSwzMjU5MCwzMjU5MiwzMjU5MywzMjU5NywzMjU5NiwzMjYwMCwzMjYwNywzMjYwOCwzMjYxNiwzMjYxNywzMjYxNSwzMjYzMiwzMjY0MiwzMjY0NiwzMjY0MywzMjY0OCwzMjY0NywzMjY1MiwzMjY2MCwzMjY3MCwzMjY2OSwzMjY2NiwzMjY3NSwzMjY4NywzMjY5MCwzMjY5Nywz''@;'; put 'put ''MjY4NiwzMjY5NCwzMjY5NiwzNTY5NywzMjcwOSwzMjcxMCwzMjcxNCwzMjcyNSwzMjcyNCwzMjczNywzMjc0MiwzMjc0NSwzMjc1NSwzMjc2MSwzOTEzMiwzMjc3NCwzMjc3MiwzMjc3OSwzMjc4NiwzMjc5MiwzMjc5MywzMjc5NiwzMjgwMSwzMjgwOCwzMjgzMSwzMjgyNywzMjg0MiwzMjgz''@;'; put 'put ''OCwzMjg1MCwzMjg1NiwzMjg1OCwzMjg2MywzMjg2NiwzMjg3MiwzMjg4MywzMjg4MiwzMjg4MCwzMjg4NiwzMjg4OSwzMjg5MywzMjg5NSwzMjkwMCwzMjkwMiwzMjkwMSwzMjkyMywzMjkxNSwzMjkyMiwzMjk0MSwyMDg4MCwzMjk0MCwzMjk4NywzMjk5NywzMjk4NSwzMjk4OSwzMjk2NCwz''@;'; put 'put ''Mjk4NiwzMjk4MiwzMzAzMywzMzAwNywzMzAwOSwzMzA1MSwzMzA2NSwzMzA1OSwzMzA3MSwzMzA5OSwzODUzOSwzMzA5NCwzMzA4NiwzMzEwNywzMzEwNSwzMzAyMCwzMzEzNywzMzEzNCwzMzEyNSwzMzEyNiwzMzE0MCwzMzE1NSwzMzE2MCwzMzE2MiwzMzE1MiwzMzE1NCwzMzE4NCwzMzE3''@;'; put 'put ''MywzMzE4OCwzMzE4NywzMzExOSwzMzE3MSwzMzE5MywzMzIwMCwzMzIwNSwzMzIxNCwzMzIwOCwzMzIxMywzMzIxNiwzMzIxOCwzMzIxMCwzMzIyNSwzMzIyOSwzMzIzMywzMzI0MSwzMzI0MCwzMzIyNCwzMzI0MiwzMzI0NywzMzI0OCwzMzI1NSwzMzI3NCwzMzI3NSwzMzI3OCwzMzI4MSwz''@;'; put 'put ''MzI4MiwzMzI4NSwzMzI4NywzMzI5MCwzMzI5MywzMzI5NiwzMzMwMiwzMzMyMSwzMzMyMywzMzMzNiwzMzMzMSwzMzM0NCwzMzM2OSwzMzM2OCwzMzM3MywzMzM3MCwzMzM3NSwzMzM4MCwzMzM3OCwzMzM4NCwzMzM4NiwzMzM4NywzMzMyNiwzMzM5MywzMzM5OSwzMzQwMCwzMzQwNiwzMzQy''@;'; put 'put ''MSwzMzQyNiwzMzQ1MSwzMzQzOSwzMzQ2NywzMzQ1MiwzMzUwNSwzMzUwNywzMzUwMywzMzQ5MCwzMzUyNCwzMzUyMywzMzUzMCwzMzY4MywzMzUzOSwzMzUzMSwzMzUyOSwzMzUwMiwzMzU0MiwzMzUwMCwzMzU0NSwzMzQ5NywzMzU4OSwzMzU4OCwzMzU1OCwzMzU4NiwzMzU4NSwzMzYwMCwz''@;'; put 'put ''MzU5MywzMzYxNiwzMzYwNSwzMzU4MywzMzU3OSwzMzU1OSwzMzU2MCwzMzY2OSwzMzY5MCwzMzcwNiwzMzY5NSwzMzY5OCwzMzY4NiwzMzU3MSwzMzY3OCwzMzY3MSwzMzY3NCwzMzY2MCwzMzcxNywzMzY1MSwzMzY1MywzMzY5NiwzMzY3MywzMzcwNCwzMzc4MCwzMzgxMSwzMzc3MSwzMzc0''@;'; put 'put ''MiwzMzc4OSwzMzc5NSwzMzc1MiwzMzgwMywzMzcyOSwzMzc4MywzMzc5OSwzMzc2MCwzMzc3OCwzMzgwNSwzMzgyNiwzMzgyNCwzMzcyNSwzMzg0OCwzNDA1NCwzMzc4NywzMzkwMSwzMzgzNCwzMzg1MiwzNDEzOCwzMzkyNCwzMzkxMSwzMzg5OSwzMzk2NSwzMzkwMiwzMzkyMiwzMzg5Nywz''@;'; put 'put ''Mzg2MiwzMzgzNiwzMzkwMywzMzkxMywzMzg0NSwzMzk5NCwzMzg5MCwzMzk3NywzMzk4MywzMzk1MSwzNDAwOSwzMzk5NywzMzk3OSwzNDAxMCwzNGUzLDMzOTg1LDMzOTkwLDM0MDA2LDMzOTUzLDM0MDgxLDM0MDQ3LDM0MDM2LDM0MDcxLDM0MDcyLDM0MDkyLDM0MDc5LDM0MDY5LDM0MDY4''@;'; put 'put ''LDM0MDQ0LDM0MTEyLDM0MTQ3LDM0MTM2LDM0MTIwLDM0MTEzLDM0MzA2LDM0MTIzLDM0MTMzLDM0MTc2LDM0MjEyLDM0MTg0LDM0MTkzLDM0MTg2LDM0MjE2LDM0MTU3LDM0MTk2LDM0MjAzLDM0MjgyLDM0MTgzLDM0MjA0LDM0MTY3LDM0MTc0LDM0MTkyLDM0MjQ5LDM0MjM0LDM0MjU1LDM0''@;'; put 'put ''MjMzLDM0MjU2LDM0MjYxLDM0MjY5LDM0Mjc3LDM0MjY4LDM0Mjk3LDM0MzE0LDM0MzIzLDM0MzE1LDM0MzAyLDM0Mjk4LDM0MzEwLDM0MzM4LDM0MzMwLDM0MzUyLDM0MzY3LDM0MzgxLDIwMDUzLDM0Mzg4LDM0Mzk5LDM0NDA3LDM0NDE3LDM0NDUxLDM0NDY3LDM0NDczLDM0NDc0LDM0NDQz''@;'; put 'put ''LDM0NDQ0LDM0NDg2LDM0NDc5LDM0NTAwLDM0NTAyLDM0NDgwLDM0NTA1LDM0ODUxLDM0NDc1LDM0NTE2LDM0NTI2LDM0NTM3LDM0NTQwLDM0NTI3LDM0NTIzLDM0NTQzLDM0NTc4LDM0NTY2LDM0NTY4LDM0NTYwLDM0NTYzLDM0NTU1LDM0NTc3LDM0NTY5LDM0NTczLDM0NTUzLDM0NTcwLDM0''@;'; put 'put ''NjEyLDM0NjIzLDM0NjE1LDM0NjE5LDM0NTk3LDM0NjAxLDM0NTg2LDM0NjU2LDM0NjU1LDM0NjgwLDM0NjM2LDM0NjM4LDM0Njc2LDM0NjQ3LDM0NjY0LDM0NjcwLDM0NjQ5LDM0NjQzLDM0NjU5LDM0NjY2LDM0ODIxLDM0NzIyLDM0NzE5LDM0NjkwLDM0NzM1LDM0NzYzLDM0NzQ5LDM0NzUy''@;'; put 'put ''LDM0NzY4LDM4NjE0LDM0NzMxLDM0NzU2LDM0NzM5LDM0NzU5LDM0NzU4LDM0NzQ3LDM0Nzk5LDM0ODAyLDM0Nzg0LDM0ODMxLDM0ODI5LDM0ODE0LDM0ODA2LDM0ODA3LDM0ODMwLDM0NzcwLDM0ODMzLDM0ODM4LDM0ODM3LDM0ODUwLDM0ODQ5LDM0ODY1LDM0ODcwLDM0ODczLDM0ODU1LDM0''@;'; put 'put ''ODc1LDM0ODg0LDM0ODgyLDM0ODk4LDM0OTA1LDM0OTEwLDM0OTE0LDM0OTIzLDM0OTQ1LDM0OTQyLDM0OTc0LDM0OTMzLDM0OTQxLDM0OTk3LDM0OTMwLDM0OTQ2LDM0OTY3LDM0OTYyLDM0OTkwLDM0OTY5LDM0OTc4LDM0OTU3LDM0OTgwLDM0OTkyLDM1MDA3LDM0OTkzLDM1MDExLDM1MDEy''@;'; put 'put ''LDM1MDI4LDM1MDMyLDM1MDMzLDM1MDM3LDM1MDY1LDM1MDc0LDM1MDY4LDM1MDYwLDM1MDQ4LDM1MDU4LDM1MDc2LDM1MDg0LDM1MDgyLDM1MDkxLDM1MTM5LDM1MTAyLDM1MTA5LDM1MTE0LDM1MTE1LDM1MTM3LDM1MTQwLDM1MTMxLDM1MTI2LDM1MTI4LDM1MTQ4LDM1MTAxLDM1MTY4LDM1''@;'; put 'put ''MTY2LDM1MTc0LDM1MTcyLDM1MTgxLDM1MTc4LDM1MTgzLDM1MTg4LDM1MTkxLDM1MTk4LDM1MjAzLDM1MjA4LDM1MjEwLDM1MjE5LDM1MjI0LDM1MjMzLDM1MjQxLDM1MjM4LDM1MjQ0LDM1MjQ3LDM1MjUwLDM1MjU4LDM1MjYxLDM1MjYzLDM1MjY0LDM1MjkwLDM1MjkyLDM1MjkzLDM1MzAz''@;'; put 'put ''LDM1MzE2LDM1MzIwLDM1MzMxLDM1MzUwLDM1MzQ0LDM1MzQwLDM1MzU1LDM1MzU3LDM1MzY1LDM1MzgyLDM1MzkzLDM1NDE5LDM1NDEwLDM1Mzk4LDM1NDAwLDM1NDUyLDM1NDM3LDM1NDM2LDM1NDI2LDM1NDYxLDM1NDU4LDM1NDYwLDM1NDk2LDM1NDg5LDM1NDczLDM1NDkzLDM1NDk0LDM1''@;'; put 'put ''NDgyLDM1NDkxLDM1NTI0LDM1NTMzLDM1NTIyLDM1NTQ2LDM1NTYzLDM1NTcxLDM1NTU5LDM1NTU2LDM1NTY5LDM1NjA0LDM1NTUyLDM1NTU0LDM1NTc1LDM1NTUwLDM1NTQ3LDM1NTk2LDM1NTkxLDM1NjEwLDM1NTUzLDM1NjA2LDM1NjAwLDM1NjA3LDM1NjE2LDM1NjM1LDM4ODI3LDM1NjIy''@;'; put 'put ''LDM1NjI3LDM1NjQ2LDM1NjI0LDM1NjQ5LDM1NjYwLDM1NjYzLDM1NjYyLDM1NjU3LDM1NjcwLDM1Njc1LDM1Njc0LDM1NjkxLDM1Njc5LDM1NjkyLDM1Njk1LDM1NzAwLDM1NzA5LDM1NzEyLDM1NzI0LDM1NzI2LDM1NzMwLDM1NzMxLDM1NzM0LDM1NzM3LDM1NzM4LDM1ODk4LDM1OTA1LDM1''@;'; put 'put ''OTAzLDM1OTEyLDM1OTE2LDM1OTE4LDM1OTIwLDM1OTI1LDM1OTM4LDM1OTQ4LDM1OTYwLDM1OTYyLDM1OTcwLDM1OTc3LDM1OTczLDM1OTc4LDM1OTgxLDM1OTgyLDM1OTg4LDM1OTY0LDM1OTkyLDI1MTE3LDM2MDEzLDM2MDEwLDM2MDI5LDM2MDE4LDM2MDE5LDM2MDE0LDM2MDIyLDM2MDQw''@;'; put 'put ''LDM2MDMzLDM2MDY4LDM2MDY3LDM2MDU4LDM2MDkzLDM2MDkwLDM2MDkxLDM2MTAwLDM2MTAxLDM2MTA2LDM2MTAzLDM2MTExLDM2MTA5LDM2MTEyLDQwNzgyLDM2MTE1LDM2MDQ1LDM2MTE2LDM2MTE4LDM2MTk5LDM2MjA1LDM2MjA5LDM2MjExLDM2MjI1LDM2MjQ5LDM2MjkwLDM2Mjg2LDM2''@;'; put 'put ''MjgyLDM2MzAzLDM2MzE0LDM2MzEwLDM2MzAwLDM2MzE1LDM2Mjk5LDM2MzMwLDM2MzMxLDM2MzE5LDM2MzIzLDM2MzQ4LDM2MzYwLDM2MzYxLDM2MzUxLDM2MzgxLDM2MzgyLDM2MzY4LDM2MzgzLDM2NDE4LDM2NDA1LDM2NDAwLDM2NDA0LDM2NDI2LDM2NDIzLDM2NDI1LDM2NDI4LDM2NDMy''@;'; put 'put ''LDM2NDI0LDM2NDQxLDM2NDUyLDM2NDQ4LDM2Mzk0LDM2NDUxLDM2NDM3LDM2NDcwLDM2NDY2LDM2NDc2LDM2NDgxLDM2NDg3LDM2NDg1LDM2NDg0LDM2NDkxLDM2NDkwLDM2NDk5LDM2NDk3LDM2NTAwLDM2NTA1LDM2NTIyLDM2NTEzLDM2NTI0LDM2NTI4LDM2NTUwLDM2NTI5LDM2NTQyLDM2''@;'; put 'put ''NTQ5LDM2NTUyLDM2NTU1LDM2NTcxLDM2NTc5LDM2NjA0LDM2NjAzLDM2NTg3LDM2NjA2LDM2NjE4LDM2NjEzLDM2NjI5LDM2NjI2LDM2NjMzLDM2NjI3LDM2NjM2LDM2NjM5LDM2NjM1LDM2NjIwLDM2NjQ2LDM2NjU5LDM2NjY3LDM2NjY1LDM2Njc3LDM2Njc0LDM2NjcwLDM2Njg0LDM2Njgx''@;'; put 'put ''LDM2Njc4LDM2Njg2LDM2Njk1LDM2NzAwLDM2NzA2LDM2NzA3LDM2NzA4LDM2NzY0LDM2NzY3LDM2NzcxLDM2NzgxLDM2NzgzLDM2NzkxLDM2ODI2LDM2ODM3LDM2ODM0LDM2ODQyLDM2ODQ3LDM2OTk5LDM2ODUyLDM2ODY5LDM2ODU3LDM2ODU4LDM2ODgxLDM2ODg1LDM2ODk3LDM2ODc3LDM2''@;'; put 'put ''ODk0LDM2ODg2LDM2ODc1LDM2OTAzLDM2OTE4LDM2OTE3LDM2OTIxLDM2ODU2LDM2OTQzLDM2OTQ0LDM2OTQ1LDM2OTQ2LDM2ODc4LDM2OTM3LDM2OTI2LDM2OTUwLDM2OTUyLDM2OTU4LDM2OTY4LDM2OTc1LDM2OTgyLDM4NTY4LDM2OTc4LDM2OTk0LDM2OTg5LDM2OTkzLDM2OTkyLDM3MDAy''@;'; put 'put ''LDM3MDAxLDM3MDA3LDM3MDMyLDM3MDM5LDM3MDQxLDM3MDQ1LDM3MDkwLDM3MDkyLDI1MTYwLDM3MDgzLDM3MTIyLDM3MTM4LDM3MTQ1LDM3MTcwLDM3MTY4LDM3MTk0LDM3MjA2LDM3MjA4LDM3MjE5LDM3MjIxLDM3MjI1LDM3MjM1LDM3MjM0LDM3MjU5LDM3MjU3LDM3MjUwLDM3MjgyLDM3''@;'; put 'put ''MjkxLDM3Mjk1LDM3MjkwLDM3MzAxLDM3MzAwLDM3MzA2LDM3MzEyLDM3MzEzLDM3MzIxLDM3MzIzLDM3MzI4LDM3MzM0LDM3MzQzLDM3MzQ1LDM3MzM5LDM3MzcyLDM3MzY1LDM3MzY2LDM3NDA2LDM3Mzc1LDM3Mzk2LDM3NDIwLDM3Mzk3LDM3MzkzLDM3NDcwLDM3NDYzLDM3NDQ1LDM3NDQ5''@;'; put 'put ''LDM3NDc2LDM3NDQ4LDM3NTI1LDM3NDM5LDM3NDUxLDM3NDU2LDM3NTMyLDM3NTI2LDM3NTIzLDM3NTMxLDM3NDY2LDM3NTgzLDM3NTYxLDM3NTU5LDM3NjA5LDM3NjQ3LDM3NjI2LDM3NzAwLDM3Njc4LDM3NjU3LDM3NjY2LDM3NjU4LDM3NjY3LDM3NjkwLDM3Njg1LDM3NjkxLDM3NzI0LDM3''@;'; put 'put ''NzI4LDM3NzU2LDM3NzQyLDM3NzE4LDM3ODA4LDM3ODA0LDM3ODA1LDM3NzgwLDM3ODE3LDM3ODQ2LDM3ODQ3LDM3ODY0LDM3ODYxLDM3ODQ4LDM3ODI3LDM3ODUzLDM3ODQwLDM3ODMyLDM3ODYwLDM3OTE0LDM3OTA4LDM3OTA3LDM3ODkxLDM3ODk1LDM3OTA0LDM3OTQyLDM3OTMxLDM3OTQx''@;'; put 'put ''LDM3OTIxLDM3OTQ2LDM3OTUzLDM3OTcwLDM3OTU2LDM3OTc5LDM3OTg0LDM3OTg2LDM3OTgyLDM3OTk0LDM3NDE3LDM4ZTMsMzgwMDUsMzgwMDcsMzgwMTMsMzc5NzgsMzgwMTIsMzgwMTQsMzgwMTcsMzgwMTUsMzgyNzQsMzgyNzksMzgyODIsMzgyOTIsMzgyOTQsMzgyOTYsMzgyOTcsMzgz''@;'; put 'put ''MDQsMzgzMTIsMzgzMTEsMzgzMTcsMzgzMzIsMzgzMzEsMzgzMjksMzgzMzQsMzgzNDYsMjg2NjIsMzgzMzksMzgzNDksMzgzNDgsMzgzNTcsMzgzNTYsMzgzNTgsMzgzNjQsMzgzNjksMzgzNzMsMzgzNzAsMzg0MzMsMzg0NDAsMzg0NDYsMzg0NDcsMzg0NjYsMzg0NzYsMzg0NzksMzg0NzUs''@;'; put 'put ''Mzg1MTksMzg0OTIsMzg0OTQsMzg0OTMsMzg0OTUsMzg1MDIsMzg1MTQsMzg1MDgsMzg1NDEsMzg1NTIsMzg1NDksMzg1NTEsMzg1NzAsMzg1NjcsMzg1NzcsMzg1NzgsMzg1NzYsMzg1ODAsMzg1ODIsMzg1ODQsMzg1ODUsMzg2MDYsMzg2MDMsMzg2MDEsMzg2MDUsMzUxNDksMzg2MjAsMzg2''@;'; put 'put ''NjksMzg2MTMsMzg2NDksMzg2NjAsMzg2NjIsMzg2NjQsMzg2NzUsMzg2NzAsMzg2NzMsMzg2NzEsMzg2NzgsMzg2ODEsMzg2OTIsMzg2OTgsMzg3MDQsMzg3MTMsMzg3MTcsMzg3MTgsMzg3MjQsMzg3MjYsMzg3MjgsMzg3MjIsMzg3MjksMzg3NDgsMzg3NTIsMzg3NTYsMzg3NTgsMzg3NjAs''@;'; put 'put ''MjEyMDIsMzg3NjMsMzg3NjksMzg3NzcsMzg3ODksMzg3ODAsMzg3ODUsMzg3NzgsMzg3OTAsMzg3OTUsMzg3OTksMzg4MDAsMzg4MTIsMzg4MjQsMzg4MjIsMzg4MTksMzg4MzUsMzg4MzYsMzg4NTEsMzg4NTQsMzg4NTYsMzg4NTksMzg4NzYsMzg4OTMsNDA3ODMsMzg4OTgsMzE0NTUsMzg5''@;'; put 'put ''MDIsMzg5MDEsMzg5MjcsMzg5MjQsMzg5NjgsMzg5NDgsMzg5NDUsMzg5NjcsMzg5NzMsMzg5ODIsMzg5OTEsMzg5ODcsMzkwMTksMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjgsMzkwMjcsMzkwODIsMzkwODcsMzkwODksMzkwOTQsMzkxMDgsMzkxMDcsMzkxMTAsMzkxNDUsMzkxNDcsMzkxNzEs''@;'; put 'put ''MzkxNzcsMzkxODYsMzkxODgsMzkxOTIsMzkyMDEsMzkxOTcsMzkxOTgsMzkyMDQsMzkyMDAsMzkyMTIsMzkyMTQsMzkyMjksMzkyMzAsMzkyMzQsMzkyNDEsMzkyMzcsMzkyNDgsMzkyNDMsMzkyNDksMzkyNTAsMzkyNDQsMzkyNTMsMzkzMTksMzkzMjAsMzkzMzMsMzkzNDEsMzkzNDIsMzkz''@;'; put 'put ''NTYsMzkzOTEsMzkzODcsMzkzODksMzkzODQsMzkzNzcsMzk0MDUsMzk0MDYsMzk0MDksMzk0MTAsMzk0MTksMzk0MTYsMzk0MjUsMzk0MzksMzk0MjksMzkzOTQsMzk0NDksMzk0NjcsMzk0NzksMzk0OTMsMzk0OTAsMzk0ODgsMzk0OTEsMzk0ODYsMzk1MDksMzk1MDEsMzk1MTUsMzk1MTEs''@;'; put 'put ''Mzk1MTksMzk1MjIsMzk1MjUsMzk1MjQsMzk1MjksMzk1MzEsMzk1MzAsMzk1OTcsMzk2MDAsMzk2MTIsMzk2MTYsMzk2MzEsMzk2MzMsMzk2MzUsMzk2MzYsMzk2NDYsMzk2NDcsMzk2NTAsMzk2NTEsMzk2NTQsMzk2NjMsMzk2NTksMzk2NjIsMzk2NjgsMzk2NjUsMzk2NzEsMzk2NzUsMzk2''@;'; put 'put ''ODYsMzk3MDQsMzk3MDYsMzk3MTEsMzk3MTQsMzk3MTUsMzk3MTcsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjYsMzk3MjcsMzk3MzAsMzk3NDgsMzk3NDcsMzk3NTksMzk3NTcsMzk3NTgsMzk3NjEsMzk3NjgsMzk3OTYsMzk4MjcsMzk4MTEsMzk4MjUsMzk4MzAsMzk4MzEsMzk4Mzks''@;'; put 'put ''Mzk4NDAsMzk4NDgsMzk4NjAsMzk4NzIsMzk4ODIsMzk4NjUsMzk4NzgsMzk4ODcsMzk4ODksMzk4OTAsMzk5MDcsMzk5MDYsMzk5MDgsMzk4OTIsMzk5MDUsMzk5OTQsMzk5MjIsMzk5MjEsMzk5MjAsMzk5NTcsMzk5NTYsMzk5NDUsMzk5NTUsMzk5NDgsMzk5NDIsMzk5NDQsMzk5NTQsMzk5''@;'; put 'put ''NDYsMzk5NDAsMzk5ODIsMzk5NjMsMzk5NzMsMzk5NzIsMzk5NjksMzk5ODQsNDAwMDcsMzk5ODYsNDAwMDYsMzk5OTgsNDAwMjYsNDAwMzIsNDAwMzksNDAwNTQsNDAwNTYsNDAxNjcsNDAxNzIsNDAxNzYsNDAyMDEsNDAyMDAsNDAxNzEsNDAxOTUsNDAxOTgsNDAyMzQsNDAyMzAsNDAzNjcs''@;'; put 'put ''NDAyMjcsNDAyMjMsNDAyNjAsNDAyMTMsNDAyMTAsNDAyNTcsNDAyNTUsNDAyNTQsNDAyNjIsNDAyNjQsNDAyODUsNDAyODYsNDAyOTIsNDAyNzMsNDAyNzIsNDAyODEsNDAzMDYsNDAzMjksNDAzMjcsNDAzNjMsNDAzMDMsNDAzMTQsNDAzNDYsNDAzNTYsNDAzNjEsNDAzNzAsNDAzODgsNDAz''@;'; put 'put ''ODUsNDAzNzksNDAzNzYsNDAzNzgsNDAzOTAsNDAzOTksNDAzODYsNDA0MDksNDA0MDMsNDA0NDAsNDA0MjIsNDA0MjksNDA0MzEsNDA0NDUsNDA0NzQsNDA0NzUsNDA0NzgsNDA1NjUsNDA1NjksNDA1NzMsNDA1NzcsNDA1ODQsNDA1ODcsNDA1ODgsNDA1OTQsNDA1OTcsNDA1OTMsNDA2MDUs''@;'; put 'put ''NDA2MTMsNDA2MTcsNDA2MzIsNDA2MTgsNDA2MjEsMzg3NTMsNDA2NTIsNDA2NTQsNDA2NTUsNDA2NTYsNDA2NjAsNDA2NjgsNDA2NzAsNDA2NjksNDA2NzIsNDA2NzcsNDA2ODAsNDA2ODcsNDA2OTIsNDA2OTQsNDA2OTUsNDA2OTcsNDA2OTksNDA3MDAsNDA3MDEsNDA3MTEsNDA3MTIsMzAz''@;'; put 'put ''OTEsNDA3MjUsNDA3MzcsNDA3NDgsNDA3NjYsNDA3NzgsNDA3ODYsNDA3ODgsNDA4MDMsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDYsNDA4MDcsNDA4MTIsNDA4MTAsNDA4MjMsNDA4MTgsNDA4MjIsNDA4NTMsNDA4NjAsNDA4NjQsMjI1NzUsMjcwNzksMzY5NTMsMjk3OTYsMjA5NTYsMjkwODEs''@;'; 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 ''bnVsbCxudWxsLDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0''@;'; put 'put ''LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIx''@;'; put 'put ''NjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4''@;'; put 'put ''LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1''@;'; put 'put ''NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYw''@;'; put 'put ''LDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4''@;'; put 'put ''MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIy''@;'; put 'put ''LDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMw''@;'; put 'put ''ODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1''@;'; put 'put ''LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2''@;'; put 'put ''NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1''@;'; put 'put ''LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYz''@;'; put 'put ''OTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0''@;'; put 'put ''LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; 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 ''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 ''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 ''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 ''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 ''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 ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDY1NTA2LDY1NTA4''@;'; put 'put ''LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSw4NzU3LDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4''@;'; put 'put ''LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIx''@;'; put 'put ''NDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEy''@;'; put 'put ''LDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0''@;'; put 'put ''ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1''@;'; put 'put ''LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4''@;'; put 'put ''MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgy''@;'; put 'put ''LDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMw''@;'; put 'put ''NTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMw''@;'; put 'put ''LDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2''@;'; put 'put ''MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3''@;'; put 'put ''LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3''@;'; put 'put ''OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIz''@;'; put 'put ''LDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0samlzMDIxMjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzI4LDcx''@;'; put 'put ''MSwxODQsNzI5LDczMywxNzUsNzMxLDczMCw2NTM3NCw5MDAsOTAxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjEsMTY2LDE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTg2LDE3MCwxNjksMTc0LDg0ODIsMTY0LDg0NzAsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkwMiw5MDQsOTA1LDkwNiw5MzgsbnVsbCw5MDgsbnVsbCw5MTAs''@;'; put 'put ''OTM5LG51bGwsOTExLG51bGwsbnVsbCxudWxsLG51bGwsOTQwLDk0MSw5NDIsOTQzLDk3MCw5MTIsOTcyLDk2Miw5NzMsOTcxLDk0NCw5NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM4LDEwMzksbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE4LDExMTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTgsMjcyLG51bGwsMjk0LG51bGwsMzA2LG51bGwsMzIxLDMxOSxudWxsLDMzMCwyMTYsMzM4LG51bGwsMzU4LDIyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjIsMzIwLDMyOSwzMzEsMjQ4LDMzOSwyMjMsMzU5LDI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxu''@;'; put 'put ''dWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5MywxOTIsMTk2''@;'; put 'put ''LDE5NCwyNTgsNDYxLDI1NiwyNjAsMTk3LDE5NSwyNjIsMjY0LDI2OCwxOTksMjY2LDI3MCwyMDEsMjAwLDIwMywyMDIsMjgyLDI3OCwyNzQsMjgwLG51bGwsMjg0LDI4NiwyOTAsMjg4LDI5MiwyMDUsMjA0LDIwNywyMDYsNDYzLDMwNCwyOTgsMzAyLDI5NiwzMDgsMzEwLDMxMywzMTcsMzE1''@;'; put 'put ''LDMyMywzMjcsMzI1LDIwOSwyMTEsMjEwLDIxNCwyMTIsNDY1LDMzNiwzMzIsMjEzLDM0MCwzNDQsMzQyLDM0NiwzNDgsMzUyLDM1MCwzNTYsMzU0LDIxOCwyMTcsMjIwLDIxOSwzNjQsNDY3LDM2OCwzNjIsMzcwLDM2NiwzNjAsNDcxLDQ3NSw0NzMsNDY5LDM3MiwyMjEsMzc2LDM3NCwzNzcs''@;'; put 'put ''MzgxLDM3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIyNSwyMjQsMjI4LDIyNiwyNTksNDYyLDI1NywyNjEsMjI5LDIyNywyNjMsMjY1LDI2OSwyMzEsMjY3LDI3MSwyMzMsMjMyLDIzNSwyMzQsMjgzLDI3OSwyNzUsMjgxLDUwMSwyODUsMjg3LG51bGwsMjg5LDI5Mywy''@;'; put 'put ''MzcsMjM2LDIzOSwyMzgsNDY0LG51bGwsMjk5LDMwMywyOTcsMzA5LDMxMSwzMTQsMzE4LDMxNiwzMjQsMzI4LDMyNiwyNDEsMjQzLDI0MiwyNDYsMjQ0LDQ2NiwzMzcsMzMzLDI0NSwzNDEsMzQ1LDM0MywzNDcsMzQ5LDM1MywzNTEsMzU3LDM1NSwyNTAsMjQ5LDI1MiwyNTEsMzY1LDQ2OCwz''@;'; put 'put ''NjksMzYzLDM3MSwzNjcsMzYxLDQ3Miw0NzYsNDc0LDQ3MCwzNzMsMjUzLDI1NSwzNzUsMzc4LDM4MiwzODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; 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 ''bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5''@;'; put 'put ''OTcwLDE5OTcyLDE5OTczLDE5OTgwLDE5OTg2LDE5OTk5LDIwMDAzLDIwMDA0LDIwMDA4LDIwMDExLDIwMDE0LDIwMDE1LDIwMDE2LDIwMDIxLDIwMDMyLDIwMDMzLDIwMDM2LDIwMDM5LDIwMDQ5LDIwMDU4LDIwMDYwLDIwMDY3LDIwMDcyLDIwMDczLDIwMDg0LDIwMDg1LDIwMDg5LDIwMDk1''@;'; put 'put ''LDIwMTA5LDIwMTE4LDIwMTE5LDIwMTI1LDIwMTQzLDIwMTUzLDIwMTYzLDIwMTc2LDIwMTg2LDIwMTg3LDIwMTkyLDIwMTkzLDIwMTk0LDIwMjAwLDIwMjA3LDIwMjA5LDIwMjExLDIwMjEzLDIwMjIxLDIwMjIyLDIwMjIzLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjMyLDIwMjM1LDIwMjM2LDIw''@;'; put 'put ''MjQyLDIwMjQ1LDIwMjQ2LDIwMjQ3LDIwMjQ5LDIwMjcwLDIwMjczLDIwMzIwLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg4LDIwMjkwLDIwMjk2LDIwMjk3LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzEyLDIwMzE5LDIwMzIzLDIwMzMwLDIwMzMy''@;'; put 'put ''LDIwMzM0LDIwMzM3LDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUwLDIwMzUzLDIwMzU0LDIwMzU2LDIwMzU3LDIwMzYxLDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzcyLDIwMzc1LDIwMzc3LDIwMzc4LDIwMzgyLDIwMzgzLDIwNDAyLDIwNDA3LDIw''@;'; put 'put ''NDA5LDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDIxLDIwNDIyLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDMxLDIwNDM0LDIwNDQ0LDIwNDQ4LDIwNDUwLDIwNDY0LDIwNDY2LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDg0LDIwNDg3''@;'; put 'put ''LDIwNDkwLDIwNDkyLDIwNDk0LDIwNDk2LDIwNDk5LDIwNTAzLDIwNTA0LDIwNTA3LDIwNTA4LDIwNTA5LDIwNTEwLDIwNTE0LDIwNTE5LDIwNTI2LDIwNTI4LDIwNTMwLDIwNTMxLDIwNTMzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ5LDIwNTUwLDIwNTU0LDIwNTU2LDIwNTU4LDIwNTYxLDIw''@;'; put 'put ''NTYyLDIwNTYzLDIwNTY3LDIwNTY5LDIwNTc1LDIwNTc2LDIwNTc4LDIwNTc5LDIwNTgyLDIwNTgzLDIwNTg2LDIwNTg5LDIwNTkyLDIwNTkzLDIwNTM5LDIwNjA5LDIwNjExLDIwNjEyLDIwNjE0LDIwNjE4LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjMwLDIwNjM1''@;'; put 'put ''LDIwNjM2LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjUwLDIwNjU1LDIwNjU2LDIwNjY1LDIwNjY2LDIwNjY5LDIwNjcyLDIwNjc1LDIwNjc2LDIwNjc5LDIwNjg0LDIwNjg2LDIwNjg4LDIwNjkxLDIwNjkyLDIwNjk2LDIwNzAwLDIwNzAxLDIwNzAzLDIwNzA2LDIwNzA4LDIw''@;'; put 'put ''NzEwLDIwNzEyLDIwNzEzLDIwNzE5LDIwNzIxLDIwNzI2LDIwNzMwLDIwNzM0LDIwNzM5LDIwNzQyLDIwNzQzLDIwNzQ0LDIwNzQ3LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzIyLDIwNzUyLDIwNzU5LDIwNzYxLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzcxLDIwNzc1LDIwNzc2LDIwNzgw''@;'; put 'put ''LDIwNzgxLDIwNzgzLDIwNzg1LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkyLDIwNzkzLDIwODAyLDIwODEwLDIwODE1LDIwODE5LDIwODIxLDIwODIzLDIwODI0LDIwODMxLDIwODM2LDIwODM4LDIwODYyLDIwODY3LDIwODY4LDIwODc1LDIwODc4LDIwODg4LDIwODkzLDIwODk3LDIwODk5LDIw''@;'; put 'put ''OTA5LDIwOTIwLDIwOTIyLDIwOTI0LDIwOTI2LDIwOTI3LDIwOTMwLDIwOTM2LDIwOTQzLDIwOTQ1LDIwOTQ2LDIwOTQ3LDIwOTQ5LDIwOTUyLDIwOTU4LDIwOTYyLDIwOTY1LDIwOTc0LDIwOTc4LDIwOTc5LDIwOTgwLDIwOTgzLDIwOTkzLDIwOTk0LDIwOTk3LDIxMDEwLDIxMDExLDIxMDEz''@;'; put 'put ''LDIxMDE0LDIxMDE2LDIxMDI2LDIxMDMyLDIxMDQxLDIxMDQyLDIxMDQ1LDIxMDUyLDIxMDYxLDIxMDY1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgyLDIxMDg0LDIxMDg3LDIxMDg4LDIxMDg5LDIxMDk0LDIxMTAyLDIxMTExLDIxMTEyLDIxMTEzLDIxMTIwLDIxMTIyLDIxMTI1LDIxMTMwLDIx''@;'; put 'put ''MTMyLDIxMTM5LDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY3LDIxMTY4LDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc4LDIxMTc5LDIxMTgxLDIxMTg0LDIxMTg4LDIxMTkwLDIxMTkyLDIxMTk2LDIxMTk5LDIxMjAxLDIxMjA0''@;'; put 'put ''LDIxMjA2LDIxMjExLDIxMjEyLDIxMjE3LDIxMjIxLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI4LDIxMjMyLDIxMjMzLDIxMjM2LDIxMjM4LDIxMjM5LDIxMjQ4LDIxMjUxLDIxMjU4LDIxMjU5LDIxMjYwLDIxMjY1LDIxMjY3LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjg1LDIx''@;'; put 'put ''Mjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk2LDIxMjk4LDIxMzAxLDIxMzA4LDIxMzA5LDIxMzEwLDIxMzE0LDIxMzI0LDIxMzIzLDIxMzM3LDIxMzM5LDIxMzQ1LDIxMzQ3LDIxMzQ5LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY5LDIxMzc0LDIxMzc5LDIxMzgzLDIxMzg0''@;'; put 'put ''LDIxMzkwLDIxMzk1LDIxMzk2LDIxNDAxLDIxNDA1LDIxNDA5LDIxNDEyLDIxNDE4LDIxNDE5LDIxNDIzLDIxNDI2LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDM0LDIxNDM3LDIxNDQwLDIxNDQ1LDIxNDU1LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY5LDIxNDcwLDIxNDcyLDIx''@;'; put 'put ''NDc4LDIxNDc5LDIxNDkzLDIxNTA2LDIxNTIzLDIxNTMwLDIxNTM3LDIxNTQzLDIxNTQ0LDIxNTQ2LDIxNTUxLDIxNTUzLDIxNTU2LDIxNTU3LDIxNTcxLDIxNTcyLDIxNTc1LDIxNTgxLDIxNTgzLDIxNTk4LDIxNjAyLDIxNjA0LDIxNjA2LDIxNjA3LDIxNjA5LDIxNjExLDIxNjEzLDIxNjE0''@;'; put 'put ''LDIxNjIwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjQwLDIxNjQxLDIxNjQ1LDIxNjQ5LDIxNjUzLDIxNjU0LDIxNjYwLDIxNjYzLDIxNjY1LDIxNjcwLDIxNjcxLDIxNjczLDIxNjc0LDIxNjc3LDIxNjc4LDIxNjgxLDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkxLDIxNjk1LDIxNzAyLDIx''@;'; put 'put ''NzA2LDIxNzA5LDIxNzEwLDIxNzI4LDIxNzM4LDIxNzQwLDIxNzQzLDIxNzUwLDIxNzU2LDIxNzU4LDIxNzU5LDIxNzYwLDIxNzYxLDIxNzY1LDIxNzY4LDIxNzY5LDIxNzcyLDIxNzczLDIxNzc0LDIxNzgxLDIxODAyLDIxODAzLDIxODEwLDIxODEzLDIxODE0LDIxODE5LDIxODIwLDIxODIx''@;'; put 'put ''LDIxODI1LDIxODMxLDIxODMzLDIxODM0LDIxODM3LDIxODQwLDIxODQxLDIxODQ4LDIxODUwLDIxODUxLDIxODU0LDIxODU2LDIxODU3LDIxODYwLDIxODYyLDIxODg3LDIxODg5LDIxODkwLDIxODk0LDIxODk2LDIxOTAyLDIxOTAzLDIxOTA1LDIxOTA2LDIxOTA3LDIxOTA4LDIxOTExLDIx''@;'; put 'put ''OTIzLDIxOTI0LDIxOTMzLDIxOTM4LDIxOTUxLDIxOTUzLDIxOTU1LDIxOTU4LDIxOTYxLDIxOTYzLDIxOTY0LDIxOTY2LDIxOTY5LDIxOTcwLDIxOTcxLDIxOTc1LDIxOTc2LDIxOTc5LDIxOTgyLDIxOTg2LDIxOTkzLDIyMDA2LDIyMDE1LDIyMDIxLDIyMDI0LDIyMDI2LDIyMDI5LDIyMDMw''@;'; put 'put ''LDIyMDMxLDIyMDMyLDIyMDMzLDIyMDM0LDIyMDQxLDIyMDYwLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDczLDIyMDc1LDIyMDc2LDIyMDc3LDIyMDc5LDIyMDgwLDIyMDgxLDIyMDgzLDIyMDg0LDIyMDg2LDIyMDg5LDIyMDkxLDIyMDkzLDIyMDk1LDIyMTAwLDIyMTEwLDIyMTEyLDIy''@;'; put 'put ''MTEzLDIyMTE0LDIyMTE1LDIyMTE4LDIyMTIxLDIyMTI1LDIyMTI3LDIyMTI5LDIyMTMwLDIyMTMzLDIyMTQ4LDIyMTQ5LDIyMTUyLDIyMTU1LDIyMTU2LDIyMTY1LDIyMTY5LDIyMTcwLDIyMTczLDIyMTc0LDIyMTc1LDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg3LDIyMTg4LDIyMTg5''@;'; put 'put ''LDIyMTkzLDIyMTk1LDIyMTk5LDIyMjA2LDIyMjEzLDIyMjE3LDIyMjE4LDIyMjE5LDIyMjIzLDIyMjI0LDIyMjIwLDIyMjIxLDIyMjMzLDIyMjM2LDIyMjM3LDIyMjM5LDIyMjQxLDIyMjQ0LDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjU3LDIyMjUxLDIyMjUzLDIyMjYyLDIyMjYzLDIy''@;'; put 'put ''MjczLDIyMjc0LDIyMjc5LDIyMjgyLDIyMjg0LDIyMjg5LDIyMjkzLDIyMjk4LDIyMjk5LDIyMzAxLDIyMzA0LDIyMzA2LDIyMzA3LDIyMzA4LDIyMzA5LDIyMzEzLDIyMzE0LDIyMzE2LDIyMzE4LDIyMzE5LDIyMzIzLDIyMzI0LDIyMzMzLDIyMzM0LDIyMzM1LDIyMzQxLDIyMzQyLDIyMzQ4''@;'; put 'put ''LDIyMzQ5LDIyMzU0LDIyMzcwLDIyMzczLDIyMzc1LDIyMzc2LDIyMzc5LDIyMzgxLDIyMzgyLDIyMzgzLDIyMzg0LDIyMzg1LDIyMzg3LDIyMzg4LDIyMzg5LDIyMzkxLDIyMzkzLDIyMzk0LDIyMzk1LDIyMzk2LDIyMzk4LDIyNDAxLDIyNDAzLDIyNDEyLDIyNDIwLDIyNDIzLDIyNDI1LDIy''@;'; put 'put ''NDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDMzLDIyNDIxLDIyNDM5LDIyNDQwLDIyNDQxLDIyNDQ0LDIyNDU2LDIyNDYxLDIyNDcxLDIyNDcyLDIyNDc2LDIyNDc5LDIyNDg1LDIyNDkzLDIyNDk0LDIyNTAwLDIyNTAyLDIyNTAzLDIyNTA1LDIyNTA5LDIyNTEyLDIyNTE3LDIyNTE4''@;'; put 'put ''LDIyNTIwLDIyNTI1LDIyNTI2LDIyNTI3LDIyNTMxLDIyNTMyLDIyNTM2LDIyNTM3LDIyNDk3LDIyNTQwLDIyNTQxLDIyNTU1LDIyNTU4LDIyNTU5LDIyNTYwLDIyNTY2LDIyNTY3LDIyNTczLDIyNTc4LDIyNTg1LDIyNTkxLDIyNjAxLDIyNjA0LDIyNjA1LDIyNjA3LDIyNjA4LDIyNjEzLDIy''@;'; put 'put ''NjIzLDIyNjI1LDIyNjI4LDIyNjMxLDIyNjMyLDIyNjQ4LDIyNjUyLDIyNjU1LDIyNjU2LDIyNjU3LDIyNjYzLDIyNjY0LDIyNjY1LDIyNjY2LDIyNjY4LDIyNjY5LDIyNjcxLDIyNjcyLDIyNjc2LDIyNjc4LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjk0LDIyNjk3LDIyNzA1LDIyNzA2''@;'; put 'put ''LDIyNzI0LDIyNzE2LDIyNzIyLDIyNzI4LDIyNzMzLDIyNzM0LDIyNzM2LDIyNzM4LDIyNzQwLDIyNzQyLDIyNzQ2LDIyNzQ5LDIyNzUzLDIyNzU0LDIyNzYxLDIyNzcxLDIyNzg5LDIyNzkwLDIyNzk1LDIyNzk2LDIyODAyLDIyODAzLDIyODA0LDM0MzY5LDIyODEzLDIyODE3LDIyODE5LDIy''@;'; put 'put ''ODIwLDIyODI0LDIyODMxLDIyODMyLDIyODM1LDIyODM3LDIyODM4LDIyODQ3LDIyODUxLDIyODU0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODkxLDIyODkzLDIyODk1LDIyODk4LDIyOTAxLDIyOTAyLDIyOTA1LDIyOTA3LDIyOTA4''@;'; put 'put ''LDIyOTIzLDIyOTI0LDIyOTI2LDIyOTMwLDIyOTMzLDIyOTM1LDIyOTQzLDIyOTQ4LDIyOTUxLDIyOTU3LDIyOTU4LDIyOTU5LDIyOTYwLDIyOTYzLDIyOTY3LDIyOTcwLDIyOTcyLDIyOTc3LDIyOTc5LDIyOTgwLDIyOTg0LDIyOTg2LDIyOTg5LDIyOTk0LDIzMDA1LDIzMDA2LDIzMDA3LDIz''@;'; put 'put ''MDExLDIzMDEyLDIzMDE1LDIzMDIyLDIzMDIzLDIzMDI1LDIzMDI2LDIzMDI4LDIzMDMxLDIzMDQwLDIzMDQ0LDIzMDUyLDIzMDUzLDIzMDU0LDIzMDU4LDIzMDU5LDIzMDcwLDIzMDc1LDIzMDc2LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDg1LDIzMDg4LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEy''@;'; put 'put ''LDIzMTE2LDIzMTIwLDIzMTI1LDIzMTM0LDIzMTM5LDIzMTQxLDIzMTQzLDIzMTQ5LDIzMTU5LDIzMTYyLDIzMTYzLDIzMTY2LDIzMTc5LDIzMTg0LDIzMTg3LDIzMTkwLDIzMTkzLDIzMTk2LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAyLDIzMjA3LDIzMjEyLDIzMjE3LDIzMjE4LDIzMjE5LDIz''@;'; put 'put ''MjIxLDIzMjI0LDIzMjI2LDIzMjI3LDIzMjMxLDIzMjM2LDIzMjM4LDIzMjQwLDIzMjQ3LDIzMjU4LDIzMjYwLDIzMjY0LDIzMjY5LDIzMjc0LDIzMjc4LDIzMjg1LDIzMjg2LDIzMjkzLDIzMjk2LDIzMjk3LDIzMzA0LDIzMzE5LDIzMzQ4LDIzMzIxLDIzMzIzLDIzMzI1LDIzMzI5LDIzMzMz''@;'; put 'put ''LDIzMzQxLDIzMzUyLDIzMzYxLDIzMzcxLDIzMzcyLDIzMzc4LDIzMzgyLDIzMzkwLDIzNDAwLDIzNDA2LDIzNDA3LDIzNDIwLDIzNDIxLDIzNDIyLDIzNDIzLDIzNDI1LDIzNDI4LDIzNDMwLDIzNDM0LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQzLDIzNDQ0LDIzNDQ2LDIzNDY0LDIzNDY1LDIz''@;'; put 'put ''NDY4LDIzNDY5LDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDg0LDIzNDg4LDIzNDg5LDIzNTAxLDIzNTAzLDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTIwLDIzNTM1LDIzNTM3LDIzNTQwLDIzNTQ5LDIzNTY0LDIzNTc1LDIzNTgyLDIzNTgzLDIzNTg3LDIzNTkw''@;'; put 'put ''LDIzNTkzLDIzNTk1LDIzNTk2LDIzNTk4LDIzNjAwLDIzNjAyLDIzNjA1LDIzNjA2LDIzNjQxLDIzNjQyLDIzNjQ0LDIzNjUwLDIzNjUxLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjYxLDIzNjY0LDIzNjY4LDIzNjY5LDIzNjc0LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjg3LDIzNjg4LDIzNjkwLDIz''@;'; put 'put ''Njk1LDIzNjk4LDIzNzA5LDIzNzExLDIzNzEyLDIzNzE0LDIzNzE1LDIzNzE4LDIzNzIyLDIzNzMwLDIzNzMyLDIzNzMzLDIzNzM4LDIzNzUzLDIzNzU1LDIzNzYyLDIzNzczLDIzNzY3LDIzNzkwLDIzNzkzLDIzNzk0LDIzNzk2LDIzODA5LDIzODE0LDIzODIxLDIzODI2LDIzODUxLDIzODQz''@;'; put 'put ''LDIzODQ0LDIzODQ2LDIzODQ3LDIzODU3LDIzODYwLDIzODY1LDIzODY5LDIzODcxLDIzODc0LDIzODc1LDIzODc4LDIzODgwLDIzODkzLDIzODg5LDIzODk3LDIzODgyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA4LDIzOTE0LDIzOTE3LDIzOTIwLDIzOTI5LDIzOTMwLDIzOTM0LDIz''@;'; put 'put ''OTM1LDIzOTM3LDIzOTM5LDIzOTQ0LDIzOTQ2LDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTYxLDIzOTYzLDIzOTY3LDIzOTY4LDIzOTc1LDIzOTc5LDIzOTg0LDIzOTg4LDIzOTkyLDIzOTkzLDI0MDAzLDI0MDA3LDI0MDExLDI0MDE2LDI0MDE0LDI0MDI0LDI0MDI1LDI0MDMyLDI0MDM2''@;'; put 'put ''LDI0MDQxLDI0MDU2LDI0MDU3LDI0MDY0LDI0MDcxLDI0MDc3LDI0MDgyLDI0MDg0LDI0MDg1LDI0MDg4LDI0MDk1LDI0MDk2LDI0MTEwLDI0MTA0LDI0MTE0LDI0MTE3LDI0MTI2LDI0MTM5LDI0MTQ0LDI0MTM3LDI0MTQ1LDI0MTUwLDI0MTUyLDI0MTU1LDI0MTU2LDI0MTU4LDI0MTY4LDI0''@;'; put 'put ''MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc2LDI0MTkyLDI0MjAzLDI0MjA2LDI0MjI2LDI0MjI4LDI0MjI5LDI0MjMyLDI0MjM0LDI0MjM2LDI0MjQxLDI0MjQzLDI0MjUzLDI0MjU0LDI0MjU1LDI0MjYyLDI0MjY4LDI0MjY3LDI0MjcwLDI0MjczLDI0Mjc0LDI0Mjc2LDI0Mjc3''@;'; put 'put ''LDI0Mjg0LDI0Mjg2LDI0MjkzLDI0Mjk5LDI0MzIyLDI0MzI2LDI0MzI3LDI0MzI4LDI0MzM0LDI0MzQ1LDI0MzQ4LDI0MzQ5LDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcyLDI0Mzc0LDI0Mzc5LDI0MzgxLDI0MzgzLDI0Mzg0LDI0''@;'; put 'put ''Mzg4LDI0Mzg5LDI0MzkxLDI0Mzk3LDI0NDAwLDI0NDA0LDI0NDA4LDI0NDExLDI0NDE2LDI0NDE5LDI0NDIwLDI0NDIzLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDQwLDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDU3LDI0NDYxLDI0NDYzLDI0NDcwLDI0NDc2LDI0NDc3LDI0NDgyLDI0NDg3''@;'; put 'put ''LDI0NDkxLDI0NDg0LDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NTA0LDI0NTE2LDI0NTE5LDI0NTIwLDI0NTIxLDI0NTIzLDI0NTI4LDI0NTI5LDI0NTMwLDI0NTMxLDI0NTMyLDI0NTQyLDI0NTQ1LDI0NTQ2LDI0NTUyLDI0NTUzLDI0NTU0LDI0NTU2LDI0NTU3LDI0NTU4LDI0NTU5LDI0''@;'; put 'put ''NTYyLDI0NTYzLDI0NTY2LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg2LDI0NTg5LDI0NTk1LDI0NTk2LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA3LDI0NjEyLDI0NjIxLDI0NjI3LDI0NjI5LDI0NjQwLDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUyLDI0NjU3LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY5''@;'; put 'put ''LDI0NjczLDI0Njc5LDI0Njg5LDI0NzAyLDI0NzAzLDI0NzA2LDI0NzEwLDI0NzEyLDI0NzE0LDI0NzE4LDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI4LDI0NzMzLDI0NzM0LDI0NzM4LDI0NzQwLDI0NzQxLDI0NzQ0LDI0NzUyLDI0NzUzLDI0NzU5LDI0NzYzLDI0NzY2LDI0NzcwLDI0NzcyLDI0''@;'; put 'put ''Nzc2LDI0Nzc3LDI0Nzc4LDI0Nzc5LDI0NzgyLDI0NzgzLDI0Nzg4LDI0Nzg5LDI0NzkzLDI0Nzk1LDI0Nzk3LDI0Nzk4LDI0ODAyLDI0ODA1LDI0ODE4LDI0ODIxLDI0ODI0LDI0ODI4LDI0ODI5LDI0ODM0LDI0ODM5LDI0ODQyLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUy''@;'; put 'put ''LDI0ODU0LDI0ODU1LDI0ODU3LDI0ODYwLDI0ODYyLDI0ODY2LDI0ODc0LDI0ODc1LDI0ODgwLDI0ODgxLDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg5LDI0ODk3LDI0OTAxLDI0OTAyLDI0OTA1LDI0OTI2LDI0OTI4LDI0OTQwLDI0OTQ2LDI0OTUyLDI0OTU1LDI0OTU2LDI0OTU5LDI0OTYwLDI0''@;'; put 'put ''OTYxLDI0OTYzLDI0OTY0LDI0OTcxLDI0OTczLDI0OTc4LDI0OTc5LDI0OTgzLDI0OTg0LDI0OTg4LDI0OTg5LDI0OTkxLDI0OTkyLDI0OTk3LDI1ZTMsMjUwMDIsMjUwMDUsMjUwMTYsMjUwMTcsMjUwMjAsMjUwMjQsMjUwMjUsMjUwMjYsMjUwMzgsMjUwMzksMjUwNDUsMjUwNTIsMjUwNTMs''@;'; put 'put ''MjUwNTQsMjUwNTUsMjUwNTcsMjUwNTgsMjUwNjMsMjUwNjUsMjUwNjEsMjUwNjgsMjUwNjksMjUwNzEsMjUwODksMjUwOTEsMjUwOTIsMjUwOTUsMjUxMDcsMjUxMDksMjUxMTYsMjUxMjAsMjUxMjIsMjUxMjMsMjUxMjcsMjUxMjksMjUxMzEsMjUxNDUsMjUxNDksMjUxNTQsMjUxNTUsMjUx''@;'; put 'put ''NTYsMjUxNTgsMjUxNjQsMjUxNjgsMjUxNjksMjUxNzAsMjUxNzIsMjUxNzQsMjUxNzgsMjUxODAsMjUxODgsMjUxOTcsMjUxOTksMjUyMDMsMjUyMTAsMjUyMTMsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyNTQsMjUyNTYsMjUyNjcsMjUyNzAsMjUyNzEsMjUyNzQsMjUyNzgsMjUyNzks''@;'; put 'put ''MjUyODQsMjUyOTQsMjUzMDEsMjUzMDIsMjUzMDYsMjUzMjIsMjUzMzAsMjUzMzIsMjUzNDAsMjUzNDEsMjUzNDcsMjUzNDgsMjUzNTQsMjUzNTUsMjUzNTcsMjUzNjAsMjUzNjMsMjUzNjYsMjUzNjgsMjUzODUsMjUzODYsMjUzODksMjUzOTcsMjUzOTgsMjU0MDEsMjU0MDQsMjU0MDksMjU0''@;'; put 'put ''MTAsMjU0MTEsMjU0MTIsMjU0MTQsMjU0MTgsMjU0MTksMjU0MjIsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzIsMjU0MzUsMjU0NDUsMjU0NDYsMjU0NTIsMjU0NTMsMjU0NTcsMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjgsMjU0NjksMjU0NzEsMjU0NzQsMjU0NzYsMjU0NzksMjU0ODIsMjU0ODgs''@;'; put 'put ''MjU0OTIsMjU0OTMsMjU0OTcsMjU0OTgsMjU1MDIsMjU1MDgsMjU1MTAsMjU1MTcsMjU1MTgsMjU1MTksMjU1MzMsMjU1MzcsMjU1NDEsMjU1NDQsMjU1NTAsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NjQsMjU1NjgsMjU1NzMsMjU1NzgsMjU1ODAsMjU1ODYsMjU1ODcsMjU1ODksMjU1''@;'; put 'put ''OTIsMjU1OTMsMjU2MDksMjU2MTAsMjU2MTYsMjU2MTgsMjU2MjAsMjU2MjQsMjU2MzAsMjU2MzIsMjU2MzQsMjU2MzYsMjU2MzcsMjU2NDEsMjU2NDIsMjU2NDcsMjU2NDgsMjU2NTMsMjU2NjEsMjU2NjMsMjU2NzUsMjU2NzksMjU2ODEsMjU2ODIsMjU2ODMsMjU2ODQsMjU2OTAsMjU2OTEs''@;'; put 'put ''MjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTksMjU3MDksMjU3MTUsMjU3MTYsMjU3MjMsMjU3MjUsMjU3MzMsMjU3MzUsMjU3NDMsMjU3NDQsMjU3NDUsMjU3NTIsMjU3NTMsMjU3NTUsMjU3NTcsMjU3NTksMjU3NjEsMjU3NjMsMjU3NjYsMjU3NjgsMjU3NzIsMjU3NzksMjU3''@;'; put 'put ''ODksMjU3OTAsMjU3OTEsMjU3OTYsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDYsMjU4MDgsMjU4MDksMjU4MTMsMjU4MTUsMjU4MjgsMjU4MjksMjU4MzMsMjU4MzQsMjU4MzcsMjU4NDAsMjU4NDUsMjU4NDcsMjU4NTEsMjU4NTUsMjU4NTcsMjU4NjAsMjU4NjQsMjU4NjUsMjU4NjYs''@;'; put 'put ''MjU4NzEsMjU4NzUsMjU4NzYsMjU4NzgsMjU4ODEsMjU4ODMsMjU4ODYsMjU4ODcsMjU4OTAsMjU4OTQsMjU4OTcsMjU5MDIsMjU5MDUsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjMsMjU5MjcsMjU5MjksMjU5MzYsMjU5MzgsMjU5NDAsMjU5NTEsMjU5NTIsMjU5NTksMjU5NjMsMjU5NzgsMjU5''@;'; put 'put ''ODEsMjU5ODUsMjU5ODksMjU5OTQsMjYwMDIsMjYwMDUsMjYwMDgsMjYwMTMsMjYwMTYsMjYwMTksMjYwMjIsMjYwMzAsMjYwMzQsMjYwMzUsMjYwMzYsMjYwNDcsMjYwNTAsMjYwNTYsMjYwNTcsMjYwNjIsMjYwNjQsMjYwNjgsMjYwNzAsMjYwNzIsMjYwNzksMjYwOTYsMjYwOTgsMjYxMDAs''@;'; put 'put ''MjYxMDEsMjYxMDUsMjYxMTAsMjYxMTEsMjYxMTIsMjYxMTYsMjYxMjAsMjYxMjEsMjYxMjUsMjYxMjksMjYxMzAsMjYxMzMsMjYxMzQsMjYxNDEsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjEsMjYx''@;'; put 'put ''NjMsMjYxNjksMjYxNjcsMjYxNzYsMjYxODEsMjYxODIsMjYxODYsMjYxODgsMjYxOTMsMjYxOTAsMjYxOTksMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDgsMjYyMDksMjYzNjMsMjYyMTgsMjYyMTksMjYyMjAsMjYyMzgsMjYyMjcsMjYyMjksMjYyMzksMjYyMzEsMjYyMzIsMjYyMzMs''@;'; put 'put ''MjYyMzUsMjYyNDAsMjYyMzYsMjYyNTEsMjYyNTIsMjYyNTMsMjYyNTYsMjYyNTgsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzEsMjYyNzIsMjYyNzYsMjYyODUsMjYyODksMjYyOTAsMjYyOTMsMjYyOTksMjYzMDMsMjYzMDQsMjYzMDYsMjYzMDcsMjYzMTIsMjYzMTYsMjYzMTgsMjYz''@;'; put 'put ''MTksMjYzMjQsMjYzMzEsMjYzMzUsMjYzNDQsMjYzNDcsMjYzNDgsMjYzNTAsMjYzNjIsMjYzNzMsMjYzNzUsMjYzODIsMjYzODcsMjYzOTMsMjYzOTYsMjY0MDAsMjY0MDIsMjY0MTksMjY0MzAsMjY0MzcsMjY0MzksMjY0NDAsMjY0NDQsMjY0NTIsMjY0NTMsMjY0NjEsMjY0NzAsMjY0NzYs''@;'; put 'put ''MjY0NzgsMjY0ODQsMjY0ODYsMjY0OTEsMjY0OTcsMjY1MDAsMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTUsMjY1MTgsMjY1MjAsMjY1MjEsMjY1MjMsMjY1NDQsMjY1NDUsMjY1NDYsMjY1NDksMjY1NTUsMjY1NTYsMjY1NTcsMjY2MTcsMjY1NjAsMjY1NjIsMjY1NjMsMjY1NjUsMjY1NjgsMjY1''@;'; put 'put ''NjksMjY1NzgsMjY1ODMsMjY1ODUsMjY1ODgsMjY1OTMsMjY1OTgsMjY2MDgsMjY2MTAsMjY2MTQsMjY2MTUsMjY3MDYsMjY2NDQsMjY2NDksMjY2NTMsMjY2NTUsMjY2NjQsMjY2NjMsMjY2NjgsMjY2NjksMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzUsMjY2ODMsMjY2ODcsMjY2OTIsMjY2OTMs''@;'; put 'put ''MjY2OTgsMjY3MDAsMjY3MDksMjY3MTEsMjY3MTIsMjY3MTUsMjY3MzEsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3NDEsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NTQsMjY3NTYsMjY3NTgsMjY3NjAsMjY3NzQsMjY3NzYsMjY3NzgsMjY3ODAsMjY3ODUsMjY3ODcsMjY3''@;'; put 'put ''ODksMjY3OTMsMjY3OTQsMjY3OTgsMjY4MDIsMjY4MTEsMjY4MjEsMjY4MjQsMjY4MjgsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzgsMjY4NDEsMjY4NDQsMjY4NDUsMjY4NTMsMjY4NTYsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjQsMjY4NjUsMjY4NjksMjY4NzAsMjY4NzUs''@;'; put 'put ''MjY4NzYsMjY4NzcsMjY4ODYsMjY4ODksMjY4OTAsMjY4OTYsMjY4OTcsMjY4OTksMjY5MDIsMjY5MDMsMjY5MjksMjY5MzEsMjY5MzMsMjY5MzYsMjY5MzksMjY5NDYsMjY5NDksMjY5NTMsMjY5NTgsMjY5NjcsMjY5NzEsMjY5NzksMjY5ODAsMjY5ODEsMjY5ODIsMjY5ODQsMjY5ODUsMjY5''@;'; put 'put ''ODgsMjY5OTIsMjY5OTMsMjY5OTQsMjcwMDIsMjcwMDMsMjcwMDcsMjcwMDgsMjcwMjEsMjcwMjYsMjcwMzAsMjcwMzIsMjcwNDEsMjcwNDUsMjcwNDYsMjcwNDgsMjcwNTEsMjcwNTMsMjcwNTUsMjcwNjMsMjcwNjQsMjcwNjYsMjcwNjgsMjcwNzcsMjcwODAsMjcwODksMjcwOTQsMjcwOTUs''@;'; put 'put ''MjcxMDYsMjcxMDksMjcxMTgsMjcxMTksMjcxMjEsMjcxMjMsMjcxMjUsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzksMjcxNTEsMjcxNTMsMjcxNTcsMjcxNjIsMjcxNjUsMjcxNjgsMjcxNzIsMjcxNzYsMjcxODQsMjcxODYsMjcxODgsMjcxOTEsMjcxOTUsMjcxOTgsMjcxOTksMjcyMDUsMjcy''@;'; put 'put ''MDYsMjcyMDksMjcyMTAsMjcyMTQsMjcyMTYsMjcyMTcsMjcyMTgsMjcyMjEsMjcyMjIsMjcyMjcsMjcyMzYsMjcyMzksMjcyNDIsMjcyNDksMjcyNTEsMjcyNjIsMjcyNjUsMjcyNjcsMjcyNzAsMjcyNzEsMjcyNzMsMjcyNzUsMjcyODEsMjcyOTEsMjcyOTMsMjcyOTQsMjcyOTUsMjczMDEs''@;'; put 'put ''MjczMDcsMjczMTEsMjczMTIsMjczMTMsMjczMTYsMjczMjUsMjczMjYsMjczMjcsMjczMzQsMjczMzcsMjczMzYsMjczNDAsMjczNDQsMjczNDgsMjczNDksMjczNTAsMjczNTYsMjczNTcsMjczNjQsMjczNjcsMjczNzIsMjczNzYsMjczNzcsMjczNzgsMjczODgsMjczODksMjczOTQsMjcz''@;'; put 'put ''OTUsMjczOTgsMjczOTksMjc0MDEsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTUsMjc0MTksMjc0MjIsMjc0MjgsMjc0MzIsMjc0MzUsMjc0MzYsMjc0MzksMjc0NDUsMjc0NDYsMjc0NTEsMjc0NTUsMjc0NjIsMjc0NjYsMjc0NjksMjc0NzQsMjc0NzgsMjc0ODAsMjc0ODUsMjc0ODgsMjc0OTUs''@;'; put 'put ''Mjc0OTksMjc1MDIsMjc1MDQsMjc1MDksMjc1MTcsMjc1MTgsMjc1MjIsMjc1MjUsMjc1NDMsMjc1NDcsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NjAsMjc1NjEsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjgsMjc1NzYsMjc1NzcsMjc1ODEsMjc1ODIsMjc1ODcsMjc1ODgsMjc1OTMsMjc1''@;'; put 'put ''OTYsMjc2MDYsMjc2MTAsMjc2MTcsMjc2MTksMjc2MjIsMjc2MjMsMjc2MzAsMjc2MzMsMjc2MzksMjc2NDEsMjc2NDcsMjc2NTAsMjc2NTIsMjc2NTMsMjc2NTcsMjc2NjEsMjc2NjIsMjc2NjQsMjc2NjYsMjc2NzMsMjc2NzksMjc2ODYsMjc2ODcsMjc2ODgsMjc2OTIsMjc2OTQsMjc2OTks''@;'; put 'put ''Mjc3MDEsMjc3MDIsMjc3MDYsMjc3MDcsMjc3MTEsMjc3MjIsMjc3MjMsMjc3MjUsMjc3MjcsMjc3MzAsMjc3MzIsMjc3MzcsMjc3MzksMjc3NDAsMjc3NTUsMjc3NTcsMjc3NTksMjc3NjQsMjc3NjYsMjc3NjgsMjc3NjksMjc3NzEsMjc3ODEsMjc3ODIsMjc3ODMsMjc3ODUsMjc3OTYsMjc3''@;'; put 'put ''OTcsMjc3OTksMjc4MDAsMjc4MDQsMjc4MDcsMjc4MjQsMjc4MjYsMjc4MjgsMjc4NDIsMjc4NDYsMjc4NTMsMjc4NTUsMjc4NTYsMjc4NTcsMjc4NTgsMjc4NjAsMjc4NjIsMjc4NjYsMjc4NjgsMjc4NzIsMjc4NzksMjc4ODEsMjc4ODMsMjc4ODQsMjc4ODYsMjc4OTAsMjc4OTIsMjc5MDgs''@;'; put 'put ''Mjc5MTEsMjc5MTQsMjc5MTgsMjc5MTksMjc5MjEsMjc5MjMsMjc5MzAsMjc5NDIsMjc5NDMsMjc5NDQsMjc3NTEsMjc5NTAsMjc5NTEsMjc5NTMsMjc5NjEsMjc5NjQsMjc5NjcsMjc5OTEsMjc5OTgsMjc5OTksMjgwMDEsMjgwMDUsMjgwMDcsMjgwMTUsMjgwMTYsMjgwMjgsMjgwMzQsMjgw''@;'; put 'put ''MzksMjgwNDksMjgwNTAsMjgwNTIsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNzQsMjgwNzYsMjgwODQsMjgwODcsMjgwODksMjgwOTMsMjgwOTUsMjgxMDAsMjgxMDQsMjgxMDYsMjgxMTAsMjgxMTEsMjgxMTgsMjgxMjMsMjgxMjUsMjgxMjcsMjgxMjgsMjgxMzAsMjgxMzMsMjgxMzcsMjgxNDMs''@;'; put 'put ''MjgxNDQsMjgxNDgsMjgxNTAsMjgxNTYsMjgxNjAsMjgxNjQsMjgxOTAsMjgxOTQsMjgxOTksMjgyMTAsMjgyMTQsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjgsMjgyMjksMjgyMzIsMjgyMzMsMjgyMzUsMjgyMzksMjgyNDEsMjgyNDIsMjgyNDMsMjgyNDQsMjgyNDcsMjgyNTIsMjgyNTMsMjgy''@;'; put 'put ''NTQsMjgyNTgsMjgyNTksMjgyNjQsMjgyNzUsMjgyODMsMjgyODUsMjgzMDEsMjgzMDcsMjgzMTMsMjgzMjAsMjgzMjcsMjgzMzMsMjgzMzQsMjgzMzcsMjgzMzksMjgzNDcsMjgzNTEsMjgzNTIsMjgzNTMsMjgzNTUsMjgzNTksMjgzNjAsMjgzNjIsMjgzNjUsMjgzNjYsMjgzNjcsMjgzOTUs''@;'; put 'put ''MjgzOTcsMjgzOTgsMjg0MDksMjg0MTEsMjg0MTMsMjg0MjAsMjg0MjQsMjg0MjYsMjg0MjgsMjg0MjksMjg0MzgsMjg0NDAsMjg0NDIsMjg0NDMsMjg0NTQsMjg0NTcsMjg0NTgsMjg0NjMsMjg0NjQsMjg0NjcsMjg0NzAsMjg0NzUsMjg0NzYsMjg0NjEsMjg0OTUsMjg0OTcsMjg0OTgsMjg0''@;'; put 'put ''OTksMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDksMjg1MTAsMjg1MTMsMjg1MTQsMjg1MjAsMjg1MjQsMjg1NDEsMjg1NDIsMjg1NDcsMjg1NTEsMjg1NTIsMjg1NTUsMjg1NTYsMjg1NTcsMjg1NjAsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjYsMjg1NzAsMjg1NzUsMjg1NzYsMjg1ODEsMjg1ODIs''@;'; put 'put ''Mjg1ODMsMjg1ODQsMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTcsMjg1OTgsMjg2MDQsMjg2MTMsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MzQsMjg2MzgsMjg2NDgsMjg2NDksMjg2NTYsMjg2NjEsMjg2NjUsMjg2NjgsMjg2NjksMjg2NzIsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODUsMjg2OTUsMjg3''@;'; put 'put ''MDQsMjg3MDcsMjg3MTksMjg3MjQsMjg3MjcsMjg3MjksMjg3MzIsMjg3MzksMjg3NDAsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NTYsMjg3NTcsMjg3NjUsMjg3NjYsMjg3NTAsMjg3NzIsMjg3NzMsMjg3ODAsMjg3ODIsMjg3ODksMjg3OTAsMjg3OTgsMjg4MDEsMjg4MDUsMjg4MDYs''@;'; put 'put ''Mjg4MjAsMjg4MjEsMjg4MjIsMjg4MjMsMjg4MjQsMjg4MjcsMjg4MzYsMjg4NDMsMjg4NDgsMjg4NDksMjg4NTIsMjg4NTUsMjg4NzQsMjg4ODEsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODgsMjg4OTIsMjg5MDAsMjg5MjIsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5''@;'; put 'put ''MzksMjg5NDAsMjg5NDMsMjg5NTgsMjg5NjAsMjg5NzEsMjg5NzMsMjg5NzUsMjg5NzYsMjg5NzcsMjg5ODQsMjg5OTMsMjg5OTcsMjg5OTgsMjg5OTksMjkwMDIsMjkwMDMsMjkwMDgsMjkwMTAsMjkwMTUsMjkwMTgsMjkwMjAsMjkwMjIsMjkwMjQsMjkwMzIsMjkwNDksMjkwNTYsMjkwNjEs''@;'; put 'put ''MjkwNjMsMjkwNjgsMjkwNzQsMjkwODIsMjkwODMsMjkwODgsMjkwOTAsMjkxMDMsMjkxMDQsMjkxMDYsMjkxMDcsMjkxMTQsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjQsMjkxMzEsMjkxMzIsMjkxMzksMjkxNDIsMjkxNDUsMjkxNDYsMjkxNDgsMjkxNzYsMjkxODIsMjkxODQsMjkxOTEsMjkx''@;'; put 'put ''OTIsMjkxOTMsMjkyMDMsMjkyMDcsMjkyMTAsMjkyMTMsMjkyMTUsMjkyMjAsMjkyMjcsMjkyMzEsMjkyMzYsMjkyNDAsMjkyNDEsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTMsMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjcsMjkyNjksMjkyNzAsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMs''@;'; put 'put ''MjkyODgsMjkyOTEsMjkyOTQsMjkyOTUsMjkyOTcsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMTEsMjkzMTYsMjkzMjEsMjkzMjUsMjkzMjYsMjkzMzEsMjkzMzksMjkzNTIsMjkzNTcsMjkzNTgsMjkzNjEsMjkzNjQsMjkzNzQsMjkzNzcsMjkzODMsMjkzODUsMjkzODgsMjkzOTcsMjkz''@;'; put 'put ''OTgsMjk0MDAsMjk0MDcsMjk0MTMsMjk0MjcsMjk0MjgsMjk0MzQsMjk0MzUsMjk0MzgsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDcsMjk0NTEsMjk0NTMsMjk0NTgsMjk0NTksMjk0NjQsMjk0NjUsMjk0NzAsMjk0NzQsMjk0NzYsMjk0NzksMjk0ODAsMjk0ODQsMjk0ODksMjk0OTAsMjk0OTMs''@;'; put 'put ''Mjk0OTgsMjk0OTksMjk1MDEsMjk1MDcsMjk1MTcsMjk1MjAsMjk1MjIsMjk1MjYsMjk1MjgsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzYsMjk1NDIsMjk1NDMsMjk1NDUsMjk1NDcsMjk1NDgsMjk1NTAsMjk1NTEsMjk1NTMsMjk1NTksMjk1NjEsMjk1NjQsMjk1NjgsMjk1NjksMjk1NzEsMjk1''@;'; put 'put ''NzMsMjk1NzQsMjk1ODIsMjk1ODQsMjk1ODcsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTYsMjk1OTgsMjk1OTksMjk2MDAsMjk2MDIsMjk2MDUsMjk2MDYsMjk2MTAsMjk2MTEsMjk2MTMsMjk2MjEsMjk2MjMsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzEsMjk2MzcsMjk2MzgsMjk2NDEsMjk2NDMs''@;'; put 'put ''Mjk2NDQsMjk2NDcsMjk2NTAsMjk2NTEsMjk2NTQsMjk2NTcsMjk2NjEsMjk2NjUsMjk2NjcsMjk2NzAsMjk2NzEsMjk2NzMsMjk2ODQsMjk2ODUsMjk2ODcsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTMsMjk2OTUsMjk2OTYsMjk2OTcsMjk3MDAsMjk3MDMsMjk3MDYsMjk3MTMsMjk3MjIsMjk3''@;'; put 'put ''MjMsMjk3MzIsMjk3MzQsMjk3MzYsMjk3MzcsMjk3MzgsMjk3MzksMjk3NDAsMjk3NDEsMjk3NDIsMjk3NDMsMjk3NDQsMjk3NDUsMjk3NTMsMjk3NjAsMjk3NjMsMjk3NjQsMjk3NjYsMjk3NjcsMjk3NzEsMjk3NzMsMjk3NzcsMjk3NzgsMjk3ODMsMjk3ODksMjk3OTQsMjk3OTgsMjk3OTks''@;'; put 'put ''Mjk4MDAsMjk4MDMsMjk4MDUsMjk4MDYsMjk4MDksMjk4MTAsMjk4MjQsMjk4MjUsMjk4MjksMjk4MzAsMjk4MzEsMjk4MzMsMjk4MzksMjk4NDAsMjk4NDEsMjk4NDIsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTIsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTksMjk4NjIsMjk4NjQsMjk4NjUsMjk4''@;'; put 'put ''NjYsMjk4NjcsMjk4NzAsMjk4NzEsMjk4NzMsMjk4NzQsMjk4NzcsMjk4ODEsMjk4ODMsMjk4ODcsMjk4OTYsMjk4OTcsMjk5MDAsMjk5MDQsMjk5MDcsMjk5MTIsMjk5MTQsMjk5MTUsMjk5MTgsMjk5MTksMjk5MjQsMjk5MjgsMjk5MzAsMjk5MzEsMjk5MzUsMjk5NDAsMjk5NDYsMjk5NDcs''@;'; put 'put ''Mjk5NDgsMjk5NTEsMjk5NTgsMjk5NzAsMjk5NzQsMjk5NzUsMjk5ODQsMjk5ODUsMjk5ODgsMjk5OTEsMjk5OTMsMjk5OTQsMjk5OTksMzAwMDYsMzAwMDksMzAwMTMsMzAwMTQsMzAwMTUsMzAwMTYsMzAwMTksMzAwMjMsMzAwMjQsMzAwMzAsMzAwMzIsMzAwMzQsMzAwMzksMzAwNDYsMzAw''@;'; put 'put ''NDcsMzAwNDksMzAwNjMsMzAwNjUsMzAwNzMsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODEsMzAwODUsMzAwOTYsMzAwOTgsMzAwOTksMzAxMDEsMzAxMDUsMzAxMDgsMzAxMTQsMzAxMTYsMzAxMzIsMzAxMzgsMzAxNDMsMzAxNDQsMzAxNDUsMzAxNDgsMzAxNTAsMzAxNTYs''@;'; put 'put ''MzAxNTgsMzAxNTksMzAxNjcsMzAxNzIsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODAsMzAxODMsMzAxODgsMzAxOTAsMzAxOTEsMzAxOTMsMzAyMDEsMzAyMDgsMzAyMTAsMzAyMTEsMzAyMTIsMzAyMTUsMzAyMTYsMzAyMTgsMzAyMjAsMzAyMjMsMzAyMjYsMzAyMjcsMzAyMjksMzAyMzAsMzAy''@;'; put 'put ''MzMsMzAyMzUsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDMsMzAyNDUsMzAyNDYsMzAyNDksMzAyNTMsMzAyNTgsMzAyNTksMzAyNjEsMzAyNjQsMzAyNjUsMzAyNjYsMzAyNjgsMzAyODIsMzAyNzIsMzAyNzMsMzAyNzUsMzAyNzYsMzAyNzcsMzAyODEsMzAyODMsMzAyOTMsMzAyOTcsMzAzMDMs''@;'; put 'put ''MzAzMDgsMzAzMDksMzAzMTcsMzAzMTgsMzAzMTksMzAzMjEsMzAzMjQsMzAzMzcsMzAzNDEsMzAzNDgsMzAzNDksMzAzNTcsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjcsMzAzNjgsMzAzNzAsMzAzNzEsMzAzNzIsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzgsMzAzODEsMzAzOTcsMzA0''@;'; put 'put ''MDEsMzA0MDUsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTQsMzA0MjAsMzA0MjUsMzA0MzIsMzA0MzgsMzA0NDAsMzA0NDQsMzA0NDgsMzA0NDksMzA0NTQsMzA0NTcsMzA0NjAsMzA0NjQsMzA0NzAsMzA0NzQsMzA0NzgsMzA0ODIsMzA0ODQsMzA0ODUsMzA0ODcsMzA0ODksMzA0OTAsMzA0OTIs''@;'; put 'put ''MzA0OTgsMzA1MDQsMzA1MDksMzA1MTAsMzA1MTEsMzA1MTYsMzA1MTcsMzA1MTgsMzA1MjEsMzA1MjUsMzA1MjYsMzA1MzAsMzA1MzMsMzA1MzQsMzA1MzgsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NTAsMzA1NTEsMzA1NTYsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjIsMzA1NjQsMzA1''@;'; put 'put ''NjcsMzA1NzAsMzA1NzIsMzA1NzYsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODYsMzA1ODksMzA1OTIsMzA1OTYsMzA2MDQsMzA2MDUsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTgsMzA2MjMsMzA2MjYsMzA2MzEsMzA2MzQsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDUsMzA2NTQsMzA2NTksMzA2NjUs''@;'; put 'put ''MzA2NzMsMzA2NzQsMzA2NzcsMzA2ODEsMzA2ODYsMzA2ODcsMzA2ODgsMzA2OTIsMzA2OTQsMzA2OTgsMzA3MDAsMzA3MDQsMzA3MDUsMzA3MDgsMzA3MTIsMzA3MTUsMzA3MjUsMzA3MjYsMzA3MjksMzA3MzMsMzA3MzQsMzA3MzcsMzA3NDksMzA3NTMsMzA3NTQsMzA3NTUsMzA3NjUsMzA3''@;'; put 'put ''NjYsMzA3NjgsMzA3NzMsMzA3NzUsMzA3ODcsMzA3ODgsMzA3OTEsMzA3OTIsMzA3OTYsMzA3OTgsMzA4MDIsMzA4MTIsMzA4MTQsMzA4MTYsMzA4MTcsMzA4MTksMzA4MjAsMzA4MjQsMzA4MjYsMzA4MzAsMzA4NDIsMzA4NDYsMzA4NTgsMzA4NjMsMzA4NjgsMzA4NzIsMzA4ODEsMzA4Nzcs''@;'; put 'put ''MzA4NzgsMzA4NzksMzA4ODQsMzA4ODgsMzA4OTIsMzA4OTMsMzA4OTYsMzA4OTcsMzA4OTgsMzA4OTksMzA5MDcsMzA5MDksMzA5MTEsMzA5MTksMzA5MjAsMzA5MjEsMzA5MjQsMzA5MjYsMzA5MzAsMzA5MzEsMzA5MzMsMzA5MzQsMzA5NDgsMzA5MzksMzA5NDMsMzA5NDQsMzA5NDUsMzA5''@;'; put 'put ''NTAsMzA5NTQsMzA5NjIsMzA5NjMsMzA5NzYsMzA5NjYsMzA5NjcsMzA5NzAsMzA5NzEsMzA5NzUsMzA5ODIsMzA5ODgsMzA5OTIsMzEwMDIsMzEwMDQsMzEwMDYsMzEwMDcsMzEwMDgsMzEwMTMsMzEwMTUsMzEwMTcsMzEwMjEsMzEwMjUsMzEwMjgsMzEwMjksMzEwMzUsMzEwMzcsMzEwMzks''@;'; put 'put ''MzEwNDQsMzEwNDUsMzEwNDYsMzEwNTAsMzEwNTEsMzEwNTUsMzEwNTcsMzEwNjAsMzEwNjQsMzEwNjcsMzEwNjgsMzEwNzksMzEwODEsMzEwODMsMzEwOTAsMzEwOTcsMzEwOTksMzExMDAsMzExMDIsMzExMTUsMzExMTYsMzExMjEsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjgsMzEx''@;'; put 'put ''MzEsMzExMzIsMzExMzcsMzExNDQsMzExNDUsMzExNDcsMzExNTEsMzExNTMsMzExNTYsMzExNjAsMzExNjMsMzExNzAsMzExNzIsMzExNzUsMzExNzYsMzExNzgsMzExODMsMzExODgsMzExOTAsMzExOTQsMzExOTcsMzExOTgsMzEyMDAsMzEyMDIsMzEyMDUsMzEyMTAsMzEyMTEsMzEyMTMs''@;'; put 'put ''MzEyMTcsMzEyMjQsMzEyMjgsMzEyMzQsMzEyMzUsMzEyMzksMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDksMzEyNTMsMzEyNTksMzEyNjIsMzEyNjUsMzEyNzEsMzEyNzUsMzEyNzcsMzEyNzksMzEyODAsMzEyODQsMzEyODUsMzEyODgsMzEyODksMzEyOTAsMzEzMDAsMzEzMDEsMzEzMDMsMzEz''@;'; put 'put ''MDQsMzEzMDgsMzEzMTcsMzEzMTgsMzEzMjEsMzEzMjQsMzEzMjUsMzEzMjcsMzEzMjgsMzEzMzMsMzEzMzUsMzEzMzgsMzEzNDEsMzEzNDksMzEzNTIsMzEzNTgsMzEzNjAsMzEzNjIsMzEzNjUsMzEzNjYsMzEzNzAsMzEzNzEsMzEzNzYsMzEzNzcsMzEzODAsMzEzOTAsMzEzOTIsMzEzOTUs''@;'; put 'put ''MzE0MDQsMzE0MTEsMzE0MTMsMzE0MTcsMzE0MTksMzE0MjAsMzE0MzAsMzE0MzMsMzE0MzYsMzE0MzgsMzE0NDEsMzE0NTEsMzE0NjQsMzE0NjUsMzE0NjcsMzE0NjgsMzE0NzMsMzE0NzYsMzE0ODMsMzE0ODUsMzE0ODYsMzE0OTUsMzE1MDgsMzE1MTksMzE1MjMsMzE1MjcsMzE1MjksMzE1''@;'; put 'put ''MzAsMzE1MzEsMzE1MzMsMzE1MzQsMzE1MzUsMzE1MzYsMzE1MzcsMzE1NDAsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTksMzE1NjYsMzE1NzMsMzE1ODQsMzE1ODgsMzE1OTAsMzE1OTMsMzE1OTQsMzE1OTcsMzE1OTksMzE2MDIsMzE2MDMsMzE2MDcsMzE2MjAsMzE2MjUsMzE2MzAs''@;'; put 'put ''MzE2MzIsMzE2MzMsMzE2MzgsMzE2NDMsMzE2NDYsMzE2NDgsMzE2NTMsMzE2NjAsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjksMzE2NzAsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2ODIsMzE2ODUsMzE2ODgsMzE2OTAsMzE3MDAsMzE3MDIsMzE3MDMsMzE3MDUsMzE3MDYsMzE3MDcsMzE3''@;'; put 'put ''MjAsMzE3MjIsMzE3MzAsMzE3MzIsMzE3MzMsMzE3MzYsMzE3MzcsMzE3MzgsMzE3NDAsMzE3NDIsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NTAsMzE3NTMsMzE3NTUsMzE3NTYsMzE3NTgsMzE3NTksMzE3NjksMzE3NzEsMzE3NzYsMzE3ODEsMzE3ODIsMzE3ODQsMzE3ODgsMzE3OTMs''@;'; put 'put ''MzE3OTUsMzE3OTYsMzE3OTgsMzE4MDEsMzE4MDIsMzE4MTQsMzE4MTgsMzE4MjksMzE4MjUsMzE4MjYsMzE4MjcsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4NDEsMzE4NDMsMzE4NDcsMzE4NDksMzE4NTMsMzE4NTQsMzE4NTYsMzE4NTgsMzE4NjUsMzE4NjgsMzE4''@;'; put 'put ''NjksMzE4NzgsMzE4NzksMzE4ODcsMzE4OTIsMzE5MDIsMzE5MDQsMzE5MTAsMzE5MjAsMzE5MjYsMzE5MjcsMzE5MzAsMzE5MzEsMzE5MzIsMzE5MzUsMzE5NDAsMzE5NDMsMzE5NDQsMzE5NDUsMzE5NDksMzE5NTEsMzE5NTUsMzE5NTYsMzE5NTcsMzE5NTksMzE5NjEsMzE5NjIsMzE5NjUs''@;'; put 'put ''MzE5NzQsMzE5NzcsMzE5NzksMzE5ODksMzIwMDMsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTUsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjIsMzIwMjksMzIwMzAsMzIwMzUsMzIwMzgsMzIwNDIsMzIwNDUsMzIwNDksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjQsMzIwNjUsMzIwNzEsMzIwNzIsMzIw''@;'; put 'put ''NzcsMzIwODEsMzIwODMsMzIwODcsMzIwODksMzIwOTAsMzIwOTIsMzIwOTMsMzIxMDEsMzIxMDMsMzIxMDYsMzIxMTIsMzIxMjAsMzIxMjIsMzIxMjMsMzIxMjcsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzMsMzIxMzQsMzIxMzYsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDUsMzIxNTAsMzIxNTEs''@;'; put 'put ''MzIxNTcsMzIxNTgsMzIxNjYsMzIxNjcsMzIxNzAsMzIxNzksMzIxODIsMzIxODMsMzIxODUsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMTUsMzIyMTcsMzIyNTYsMzIyMjYsMzIyMjksMzIyMzAsMzIyMzQsMzIyMzUsMzIyMzcsMzIyNDEsMzIy''@;'; put 'put ''NDUsMzIyNDYsMzIyNDksMzIyNTAsMzIyNjQsMzIyNzIsMzIyNzMsMzIyNzcsMzIyNzksMzIyODQsMzIyODUsMzIyODgsMzIyOTUsMzIyOTYsMzIzMDAsMzIzMDEsMzIzMDMsMzIzMDcsMzIzMTAsMzIzMTksMzIzMjQsMzIzMjUsMzIzMjcsMzIzMzQsMzIzMzYsMzIzMzgsMzIzNDQsMzIzNTEs''@;'; put 'put ''MzIzNTMsMzIzNTQsMzIzNTcsMzIzNjMsMzIzNjYsMzIzNjcsMzIzNzEsMzIzNzYsMzIzODIsMzIzODUsMzIzOTAsMzIzOTEsMzIzOTQsMzIzOTcsMzI0MDEsMzI0MDUsMzI0MDgsMzI0MTAsMzI0MTMsMzI0MTQsMzI1NzIsMzI1NzEsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzksMzI1ODAsMzI1''@;'; put 'put ''ODMsMzI1OTEsMzI1OTQsMzI1OTUsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDksMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MjEsMzI2MjUsMzI2MzcsMzI2MzgsMzI2MzksMzI2NDAsMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NjIsMzI2NjMsMzI2NjgsMzI2NzMsMzI2NzQs''@;'; put 'put ''MzI2NzgsMzI2ODIsMzI2ODUsMzI2OTIsMzI3MDAsMzI3MDMsMzI3MDQsMzI3MDcsMzI3MTIsMzI3MTgsMzI3MTksMzI3MzEsMzI3MzUsMzI3MzksMzI3NDEsMzI3NDQsMzI3NDgsMzI3NTAsMzI3NTEsMzI3NTQsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzUsMzI3NzYsMzI3NzgsMzI3''@;'; put 'put ''ODEsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3ODgsMzI3OTAsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDAsMzI4MDQsMzI4MDYsMzI4MTIsMzI4MTQsMzI4MTYsMzI4MjAsMzI4MjEsMzI4MjMsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzYsMzI4NjQsMzI4NjgsMzI4NzAs''@;'; put 'put ''MzI4NzcsMzI4ODEsMzI4ODUsMzI4OTcsMzI5MDQsMzI5MTAsMzI5MjQsMzI5MjYsMzI5MzQsMzI5MzUsMzI5MzksMzI5NTIsMzI5NTMsMzI5NjgsMzI5NzMsMzI5NzUsMzI5NzgsMzI5ODAsMzI5ODEsMzI5ODMsMzI5ODQsMzI5OTIsMzMwMDUsMzMwMDYsMzMwMDgsMzMwMTAsMzMwMTEsMzMw''@;'; put 'put ''MTQsMzMwMTcsMzMwMTgsMzMwMjIsMzMwMjcsMzMwMzUsMzMwNDYsMzMwNDcsMzMwNDgsMzMwNTIsMzMwNTQsMzMwNTYsMzMwNjAsMzMwNjMsMzMwNjgsMzMwNzIsMzMwNzcsMzMwODIsMzMwODQsMzMwOTMsMzMwOTUsMzMwOTgsMzMxMDAsMzMxMDYsMzMxMTEsMzMxMjAsMzMxMjEsMzMxMjcs''@;'; put 'put ''MzMxMjgsMzMxMjksMzMxMzMsMzMxMzUsMzMxNDMsMzMxNTMsMzMxNjgsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNjMsMzMxNjYsMzMxNzQsMzMxNzYsMzMxNzksMzMxODIsMzMxODYsMzMxOTgsMzMyMDIsMzMyMDQsMzMyMTEsMzMyMjcsMzMyMTksMzMyMjEsMzMyMjYsMzMyMzAsMzMyMzEsMzMy''@;'; put 'put ''MzcsMzMyMzksMzMyNDMsMzMyNDUsMzMyNDYsMzMyNDksMzMyNTIsMzMyNTksMzMyNjAsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzIsMzMyNzMsMzMyNzcsMzMyNzksMzMyODAsMzMyODMsMzMyOTUsMzMyOTksMzMzMDAsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTMsMzMzMTQs''@;'; put 'put ''MzMzMjAsMzMzMzAsMzMzMzIsMzMzMzgsMzMzNDcsMzMzNDgsMzMzNDksMzMzNTAsMzMzNTUsMzMzNTgsMzMzNTksMzMzNjEsMzMzNjYsMzMzNzIsMzMzNzYsMzMzNzksMzMzODMsMzMzODksMzMzOTYsMzM0MDMsMzM0MDUsMzM0MDcsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTIsMzM0MTUsMzM0''@;'; put 'put ''MTcsMzM0MTgsMzM0MjIsMzM0MjUsMzM0MjgsMzM0MzAsMzM0MzIsMzM0MzQsMzM0MzUsMzM0NDAsMzM0NDEsMzM0NDMsMzM0NDQsMzM0NDcsMzM0NDgsMzM0NDksMzM0NTAsMzM0NTQsMzM0NTYsMzM0NTgsMzM0NjAsMzM0NjMsMzM0NjYsMzM0NjgsMzM0NzAsMzM0NzEsMzM0NzgsMzM0ODgs''@;'; put 'put ''MzM0OTMsMzM0OTgsMzM1MDQsMzM1MDYsMzM1MDgsMzM1MTIsMzM1MTQsMzM1MTcsMzM1MTksMzM1MjYsMzM1MjcsMzM1MzMsMzM1MzQsMzM1MzYsMzM1MzcsMzM1NDMsMzM1NDQsMzM1NDYsMzM1NDcsMzM2MjAsMzM1NjMsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjksMzM1NzAsMzM1ODAsMzM1''@;'; put 'put ''ODEsMzM1ODIsMzM1ODQsMzM1ODcsMzM1OTEsMzM1OTQsMzM1OTYsMzM1OTcsMzM2MDIsMzM2MDMsMzM2MDQsMzM2MDcsMzM2MTMsMzM2MTQsMzM2MTcsMzM2MjEsMzM2MjIsMzM2MjMsMzM2NDgsMzM2NTYsMzM2NjEsMzM2NjMsMzM2NjQsMzM2NjYsMzM2NjgsMzM2NzAsMzM2NzcsMzM2ODIs''@;'; put 'put ''MzM2ODQsMzM2ODUsMzM2ODgsMzM2ODksMzM2OTEsMzM2OTIsMzM2OTMsMzM3MDIsMzM3MDMsMzM3MDUsMzM3MDgsMzM3MjYsMzM3MjcsMzM3MjgsMzM3MzUsMzM3MzcsMzM3NDMsMzM3NDQsMzM3NDUsMzM3NDgsMzM3NTcsMzM2MTksMzM3NjgsMzM3NzAsMzM3ODIsMzM3ODQsMzM3ODUsMzM3''@;'; put 'put ''ODgsMzM3OTMsMzM3OTgsMzM4MDIsMzM4MDcsMzM4MDksMzM4MTMsMzM4MTcsMzM3MDksMzM4MzksMzM4NDksMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjYsMzM4NjksMzM4NzEsMzM4NzMsMzM4NzQsMzM4NzgsMzM4ODAsMzM4ODEsMzM4ODIsMzM4ODQsMzM4ODgsMzM4OTIsMzM4OTMsMzM4OTUs''@;'; put 'put ''MzM4OTgsMzM5MDQsMzM5MDcsMzM5MDgsMzM5MTAsMzM5MTIsMzM5MTYsMzM5MTcsMzM5MjEsMzM5MjUsMzM5MzgsMzM5MzksMzM5NDEsMzM5NTAsMzM5NTgsMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjcsMzM5NjksMzM5NzIsMzM5NzgsMzM5ODEsMzM5ODIsMzM5ODQsMzM5ODYsMzM5OTEsMzM5''@;'; put 'put ''OTIsMzM5OTYsMzM5OTksMzQwMDMsMzQwMTIsMzQwMjMsMzQwMjYsMzQwMzEsMzQwMzIsMzQwMzMsMzQwMzQsMzQwMzksMzQwOTgsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNTAsMzQwNTEsMzQwNTUsMzQwNjAsMzQwNjIsMzQwNjQsMzQwNzYsMzQwNzgsMzQwODIsMzQwODMsMzQwODQsMzQwODUs''@;'; put 'put ''MzQwODcsMzQwOTAsMzQwOTEsMzQwOTUsMzQwOTksMzQxMDAsMzQxMDIsMzQxMTEsMzQxMTgsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzQsMzQxMzcsMzQxNDAsMzQxNDEsMzQxNDIsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDgsMzQxNTUsMzQxNTksMzQxNjksMzQx''@;'; put 'put ''NzAsMzQxNzEsMzQxNzMsMzQxNzUsMzQxNzcsMzQxODEsMzQxODIsMzQxODUsMzQxODcsMzQxODgsMzQxOTEsMzQxOTUsMzQyMDAsMzQyMDUsMzQyMDcsMzQyMDgsMzQyMTAsMzQyMTMsMzQyMTUsMzQyMjgsMzQyMzAsMzQyMzEsMzQyMzIsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDIs''@;'; put 'put ''MzQyNDcsMzQyNTAsMzQyNTEsMzQyNTQsMzQyMjEsMzQyNjQsMzQyNjYsMzQyNzEsMzQyNzIsMzQyNzgsMzQyODAsMzQyODUsMzQyOTEsMzQyOTQsMzQzMDAsMzQzMDMsMzQzMDQsMzQzMDgsMzQzMDksMzQzMTcsMzQzMTgsMzQzMjAsMzQzMjEsMzQzMjIsMzQzMjgsMzQzMjksMzQzMzEsMzQz''@;'; put 'put ''MzQsMzQzMzcsMzQzNDMsMzQzNDUsMzQzNTgsMzQzNjAsMzQzNjIsMzQzNjQsMzQzNjUsMzQzNjgsMzQzNzAsMzQzNzQsMzQzODYsMzQzODcsMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTcsMzQ0MDAsMzQ0MDEsMzQ0MDIsMzQ0MDMsMzQ0MDQsMzQ0MDksMzQ0MTIsMzQ0MTUsMzQ0MjEs''@;'; put 'put ''MzQ0MjIsMzQ0MjMsMzQ0MjYsMzQ0NDUsMzQ0NDksMzQ0NTQsMzQ0NTYsMzQ0NTgsMzQ0NjAsMzQ0NjUsMzQ0NzAsMzQ0NzEsMzQ0NzIsMzQ0NzcsMzQ0ODEsMzQ0ODMsMzQ0ODQsMzQ0ODUsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTUsMzQ0OTYsMzQ0OTcsMzQ0OTksMzQ1MDEsMzQ1MTMsMzQ1''@;'; put 'put ''MTQsMzQ1MTcsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjgsMzQ1MzEsMzQ1MzMsMzQ1MzUsMzQ0NDAsMzQ1NTQsMzQ1NTYsMzQ1NTcsMzQ1NjQsMzQ1NjUsMzQ1NjcsMzQ1NzEsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzksMzQ1ODAsMzQ1ODUsMzQ1OTAsMzQ1OTEsMzQ1OTMsMzQ1OTUsMzQ2MDAs''@;'; put 'put ''MzQ2MDYsMzQ2MDcsMzQ2MDksMzQ2MTAsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjIsMzQ2MjQsMzQ2MjcsMzQ2MjksMzQ2MzcsMzQ2NDgsMzQ2NTMsMzQ2NTcsMzQ2NjAsMzQ2NjEsMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2ODMsMzQ2OTEsMzQ2OTIsMzQ2OTMsMzQ2OTQsMzQ2OTUsMzQ2''@;'; put 'put ''OTYsMzQ2OTcsMzQ2OTksMzQ3MDAsMzQ3MDQsMzQ3MDcsMzQ3MDksMzQ3MTEsMzQ3MTIsMzQ3MTMsMzQ3MTgsMzQ3MjAsMzQ3MjMsMzQ3MjcsMzQ3MzIsMzQ3MzMsMzQ3MzQsMzQ3MzcsMzQ3NDEsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NjAsMzQ3NjEsMzQ3NjIsMzQ3NjYsMzQ3NzMsMzQ3NzQs''@;'; put 'put ''MzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODMsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTQsMzQ3OTUsMzQ3OTcsMzQ4MDEsMzQ4MDMsMzQ4MDgsMzQ4MTAsMzQ4MTUsMzQ4MTcsMzQ4MTksMzQ4MjIsMzQ4MjUsMzQ4MjYsMzQ4MjcsMzQ4MzIsMzQ4NDEsMzQ4MzQsMzQ4MzUsMzQ4MzYsMzQ4NDAsMzQ4''@;'; put 'put ''NDIsMzQ4NDMsMzQ4NDQsMzQ4NDYsMzQ4NDcsMzQ4NTYsMzQ4NjEsMzQ4NjIsMzQ4NjQsMzQ4NjYsMzQ4NjksMzQ4NzQsMzQ4NzYsMzQ4ODEsMzQ4ODMsMzQ4ODUsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTcsMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDgsMzQ5MTEs''@;'; put 'put ''MzQ5MTIsMzQ5MTYsMzQ5MjEsMzQ5MjksMzQ5MzcsMzQ5MzksMzQ5NDQsMzQ5NjgsMzQ5NzAsMzQ5NzEsMzQ5NzIsMzQ5NzUsMzQ5NzYsMzQ5ODQsMzQ5ODYsMzUwMDIsMzUwMDUsMzUwMDYsMzUwMDgsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjIsMzUwMjUsMzUwMjYsMzUwMjcsMzUw''@;'; put 'put ''MzUsMzUwMzgsMzUwNDcsMzUwNTUsMzUwNTYsMzUwNTcsMzUwNjEsMzUwNjMsMzUwNzMsMzUwNzgsMzUwODUsMzUwODYsMzUwODcsMzUwOTMsMzUwOTQsMzUwOTYsMzUwOTcsMzUwOTgsMzUxMDAsMzUxMDQsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMjAsMzUxMjEsMzUxMjIsMzUxMjUsMzUxMjks''@;'; put 'put ''MzUxMzAsMzUxMzQsMzUxMzYsMzUxMzgsMzUxNDEsMzUxNDIsMzUxNDUsMzUxNTEsMzUxNTQsMzUxNTksMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzksMzUxODIsMzUxODQsMzUxODcsMzUxODksMzUxOTQsMzUxOTUsMzUxOTYsMzUxOTcsMzUyMDksMzUyMTMsMzUy''@;'; put 'put ''MTYsMzUyMjAsMzUyMjEsMzUyMjcsMzUyMjgsMzUyMzEsMzUyMzIsMzUyMzcsMzUyNDgsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNjAsMzUyODQsMzUyODUsMzUyODYsMzUyODcsMzUyODgsMzUzMDEsMzUzMDUsMzUzMDcsMzUzMDksMzUzMTMsMzUzMTUsMzUzMTgsMzUzMjEsMzUzMjUs''@;'; put 'put ''MzUzMjcsMzUzMzIsMzUzMzMsMzUzMzUsMzUzNDMsMzUzNDUsMzUzNDYsMzUzNDgsMzUzNDksMzUzNTgsMzUzNjAsMzUzNjIsMzUzNjQsMzUzNjYsMzUzNzEsMzUzNzIsMzUzNzUsMzUzODEsMzUzODMsMzUzODksMzUzOTAsMzUzOTIsMzUzOTUsMzUzOTcsMzUzOTksMzU0MDEsMzU0MDUsMzU0''@;'; put 'put ''MDYsMzU0MTEsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MjAsMzU0MjEsMzU0MjUsMzU0MjksMzU0MzEsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDksMzU0NTAsMzU0NTEsMzU0NTQsMzU0NTUsMzU0NTYsMzU0NTksMzU0NjIsMzU0NjcsMzU0NzEsMzU0NzIsMzU0NzQsMzU0NzgsMzU0NzksMzU0ODEs''@;'; put 'put ''MzU0ODcsMzU0OTUsMzU0OTcsMzU1MDIsMzU1MDMsMzU1MDcsMzU1MTAsMzU1MTEsMzU1MTUsMzU1MTgsMzU1MjMsMzU1MjYsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzcsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDMsMzU1NDksMzU1NTEsMzU1NjQsMzU1NjgsMzU1NzIsMzU1NzMsMzU1NzQsMzU1''@;'; put 'put ''ODAsMzU1ODMsMzU1ODksMzU1OTAsMzU1OTUsMzU2MDEsMzU2MTIsMzU2MTQsMzU2MTUsMzU1OTQsMzU2MjksMzU2MzIsMzU2MzksMzU2NDQsMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMzU2NTQsMzU2NTYsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NzMsMzU2NjEsMzU2NzgsMzU2ODMsMzU2OTMs''@;'; put 'put ''MzU3MDIsMzU3MDQsMzU3MDUsMzU3MDgsMzU3MTAsMzU3MTMsMzU3MTYsMzU3MTcsMzU3MjMsMzU3MjUsMzU3MjcsMzU3MzIsMzU3MzMsMzU3NDAsMzU3NDIsMzU3NDMsMzU4OTYsMzU4OTcsMzU5MDEsMzU5MDIsMzU5MDksMzU5MTEsMzU5MTMsMzU5MTUsMzU5MTksMzU5MjEsMzU5MjMsMzU5''@;'; put 'put ''MjQsMzU5MjcsMzU5MjgsMzU5MzEsMzU5MzMsMzU5MjksMzU5MzksMzU5NDAsMzU5NDIsMzU5NDQsMzU5NDUsMzU5NDksMzU5NTUsMzU5NTcsMzU5NTgsMzU5NjMsMzU5NjYsMzU5NzQsMzU5NzUsMzU5NzksMzU5ODQsMzU5ODYsMzU5ODcsMzU5OTMsMzU5OTUsMzU5OTYsMzYwMDQsMzYwMjUs''@;'; put 'put ''MzYwMjYsMzYwMzcsMzYwMzgsMzYwNDEsMzYwNDMsMzYwNDcsMzYwNTQsMzYwNTMsMzYwNTcsMzYwNjEsMzYwNjUsMzYwNzIsMzYwNzYsMzYwNzksMzYwODAsMzYwODIsMzYwODUsMzYwODcsMzYwODgsMzYwOTQsMzYwOTUsMzYwOTcsMzYwOTksMzYxMDUsMzYxMTQsMzYxMTksMzYxMjMsMzYx''@;'; put 'put ''OTcsMzYyMDEsMzYyMDQsMzYyMDYsMzYyMjMsMzYyMjYsMzYyMjgsMzYyMzIsMzYyMzcsMzYyNDAsMzYyNDEsMzYyNDUsMzYyNTQsMzYyNTUsMzYyNTYsMzYyNjIsMzYyNjcsMzYyNjgsMzYyNzEsMzYyNzQsMzYyNzcsMzYyNzksMzYyODEsMzYyODMsMzYyODgsMzYyOTMsMzYyOTQsMzYyOTUs''@;'; put 'put ''MzYyOTYsMzYyOTgsMzYzMDIsMzYzMDUsMzYzMDgsMzYzMDksMzYzMTEsMzYzMTMsMzYzMjQsMzYzMjUsMzYzMjcsMzYzMzIsMzYzMzYsMzYyODQsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDksMzYzNTMsMzYzNTYsMzYzNTcsMzYzNTgsMzYzNjMsMzYzNjksMzYzNzIsMzYzNzQsMzYzODQsMzYz''@;'; put 'put ''ODUsMzYzODYsMzYzODcsMzYzOTAsMzYzOTEsMzY0MDEsMzY0MDMsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MDksMzY0MTMsMzY0MTYsMzY0MTcsMzY0MjcsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzYsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDksMzY0NTAsMzY0NTcsMzY0NjAsMzY0NjEs''@;'; put 'put ''MzY0NjMsMzY0NjQsMzY0NjUsMzY0NzMsMzY0NzQsMzY0NzUsMzY0ODIsMzY0ODMsMzY0ODksMzY0OTYsMzY0OTgsMzY1MDEsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTAsMzY1MTQsMzY1MTksMzY1MjEsMzY1MjUsMzY1MjYsMzY1MzEsMzY1MzMsMzY1MzgsMzY1MzksMzY1NDQsMzY1NDUsMzY1''@;'; put 'put ''NDcsMzY1NDgsMzY1NTEsMzY1NTksMzY1NjEsMzY1NjQsMzY1NzIsMzY1ODQsMzY1OTAsMzY1OTIsMzY1OTMsMzY1OTksMzY2MDEsMzY2MDIsMzY1ODksMzY2MDgsMzY2MTAsMzY2MTUsMzY2MTYsMzY2MjMsMzY2MjQsMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzgsMzY2NDAsMzY2NDEsMzY2NDMs''@;'; put 'put ''MzY2NDUsMzY2NDcsMzY2NDgsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjYsMzY2NzIsMzY2NzMsMzY2NzUsMzY2NzksMzY2ODcsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTYsMzY3MDEsMzY3MDIsMzY3MDksMzY3NjUsMzY3NjgsMzY3''@;'; put 'put ''NjksMzY3NzIsMzY3NzMsMzY3NzQsMzY3ODksMzY3OTAsMzY3OTIsMzY3OTgsMzY4MDAsMzY4MDEsMzY4MDYsMzY4MTAsMzY4MTEsMzY4MTMsMzY4MTYsMzY4MTgsMzY4MTksMzY4MjEsMzY4MzIsMzY4MzUsMzY4MzYsMzY4NDAsMzY4NDYsMzY4NDksMzY4NTMsMzY4NTQsMzY4NTksMzY4NjIs''@;'; put 'put ''MzY4NjYsMzY4NjgsMzY4NzIsMzY4NzYsMzY4ODgsMzY4OTEsMzY5MDQsMzY5MDUsMzY5MTEsMzY5MDYsMzY5MDgsMzY5MDksMzY5MTUsMzY5MTYsMzY5MTksMzY5MjcsMzY5MzEsMzY5MzIsMzY5NDAsMzY5NTUsMzY5NTcsMzY5NjIsMzY5NjYsMzY5NjcsMzY5NzIsMzY5NzYsMzY5ODAsMzY5''@;'; put 'put ''ODUsMzY5OTcsMzdlMywzNzAwMywzNzAwNCwzNzAwNiwzNzAwOCwzNzAxMywzNzAxNSwzNzAxNiwzNzAxNywzNzAxOSwzNzAyNCwzNzAyNSwzNzAyNiwzNzAyOSwzNzA0MCwzNzA0MiwzNzA0MywzNzA0NCwzNzA0NiwzNzA1MywzNzA2OCwzNzA1NCwzNzA1OSwzNzA2MCwzNzA2MSwzNzA2Mywz''@;'; put 'put ''NzA2NCwzNzA3NywzNzA3OSwzNzA4MCwzNzA4MSwzNzA4NCwzNzA4NSwzNzA4NywzNzA5MywzNzA3NCwzNzExMCwzNzA5OSwzNzEwMywzNzEwNCwzNzEwOCwzNzExOCwzNzExOSwzNzEyMCwzNzEyNCwzNzEyNSwzNzEyNiwzNzEyOCwzNzEzMywzNzEzNiwzNzE0MCwzNzE0MiwzNzE0MywzNzE0''@;'; put 'put ''NCwzNzE0NiwzNzE0OCwzNzE1MCwzNzE1MiwzNzE1NywzNzE1NCwzNzE1NSwzNzE1OSwzNzE2MSwzNzE2NiwzNzE2NywzNzE2OSwzNzE3MiwzNzE3NCwzNzE3NSwzNzE3NywzNzE3OCwzNzE4MCwzNzE4MSwzNzE4NywzNzE5MSwzNzE5MiwzNzE5OSwzNzIwMywzNzIwNywzNzIwOSwzNzIxMCwz''@;'; put 'put ''NzIxMSwzNzIxNywzNzIyMCwzNzIyMywzNzIyOSwzNzIzNiwzNzI0MSwzNzI0MiwzNzI0MywzNzI0OSwzNzI1MSwzNzI1MywzNzI1NCwzNzI1OCwzNzI2MiwzNzI2NSwzNzI2NywzNzI2OCwzNzI2OSwzNzI3MiwzNzI3OCwzNzI4MSwzNzI4NiwzNzI4OCwzNzI5MiwzNzI5MywzNzI5NCwzNzI5''@;'; put 'put ''NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMSwzNzMxNCwzNzMxNSwzNzMxNywzNzMzMSwzNzMzMiwzNzMzNSwzNzMzNywzNzMzOCwzNzM0MiwzNzM0OCwzNzM0OSwzNzM1MywzNzM1NCwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwz''@;'; put 'put ''NzM2NywzNzM2OSwzNzM3MSwzNzM3MywzNzM3NiwzNzM3NywzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NSwzNzM4NiwzNzM4OCwzNzM5MiwzNzM5NCwzNzM5NSwzNzM5OCwzNzQwMCwzNzQwNCwzNzQwNSwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNiwzNzQyMiwzNzQyMywzNzQy''@;'; put 'put ''NCwzNzQyNywzNzQyOSwzNzQzMCwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNiwzNzQzOCwzNzQ0MCwzNzQ0MiwzNzQ0MywzNzQ0NiwzNzQ0NywzNzQ1MCwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NywzNzQ2NCwzNzQ2NSwzNzQ2OCwzNzQ2OSwzNzQ3MiwzNzQ3MywzNzQ3NywzNzQ3OSwzNzQ4MCwz''@;'; put 'put ''NzQ4MSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMywzNzUxMiwzNzUxMywzNzUxNCwzNzUxNywzNzUxOCwzNzUyMiwzNzUyNywzNzUyOSwzNzUzNSwzNzUzNiwzNzU0MCwzNzU0MSwzNzU0MywzNzU0NCwzNzU0''@;'; put 'put ''NywzNzU1MSwzNzU1NCwzNzU1OCwzNzU2MCwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NiwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4NCwzNzU4NywzNzU4OSwzNzU5MSwzNzU5MiwzNzU5Mywz''@;'; put 'put ''NzU5NiwzNzU5NywzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMywzNzYwNSwzNzYwNywzNzYwOCwzNzYxMiwzNzYxNCwzNzYxNiwzNzYyNSwzNzYyNywzNzYzMSwzNzYzMiwzNzYzNCwzNzY0MCwzNzY0NSwzNzY0OSwzNzY1MiwzNzY1MywzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NSwzNzY2''@;'; put 'put ''OCwzNzY2OSwzNzY3MSwzNzY3MywzNzY3NCwzNzY4MywzNzY4NCwzNzY4NiwzNzY4NywzNzcwMywzNzcwNCwzNzcwNSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNywzNzcxOSwzNzcyMCwzNzcyMiwzNzcyNiwzNzczMiwzNzczMywzNzczNSwzNzczNywzNzczOCwzNzc0MSwzNzc0MywzNzc0NCwz''@;'; put 'put ''Nzc0NSwzNzc0NywzNzc0OCwzNzc1MCwzNzc1NCwzNzc1NywzNzc1OSwzNzc2MCwzNzc2MSwzNzc2MiwzNzc2OCwzNzc3MCwzNzc3MSwzNzc3MywzNzc3NSwzNzc3OCwzNzc4MSwzNzc4NCwzNzc4NywzNzc5MCwzNzc5MywzNzc5NSwzNzc5NiwzNzc5OCwzNzgwMCwzNzgwMywzNzgxMiwzNzgx''@;'; put 'put ''MywzNzgxNCwzNzgxOCwzNzgwMSwzNzgyNSwzNzgyOCwzNzgyOSwzNzgzMCwzNzgzMSwzNzgzMywzNzgzNCwzNzgzNSwzNzgzNiwzNzgzNywzNzg0MywzNzg0OSwzNzg1MiwzNzg1NCwzNzg1NSwzNzg1OCwzNzg2MiwzNzg2MywzNzg4MSwzNzg3OSwzNzg4MCwzNzg4MiwzNzg4MywzNzg4NSwz''@;'; put 'put ''Nzg4OSwzNzg5MCwzNzg5MiwzNzg5NiwzNzg5NywzNzkwMSwzNzkwMiwzNzkwMywzNzkwOSwzNzkxMCwzNzkxMSwzNzkxOSwzNzkzNCwzNzkzNSwzNzkzNywzNzkzOCwzNzkzOSwzNzk0MCwzNzk0NywzNzk1MSwzNzk0OSwzNzk1NSwzNzk1NywzNzk2MCwzNzk2MiwzNzk2NCwzNzk3MywzNzk3''@;'; put 'put ''NywzNzk4MCwzNzk4MywzNzk4NSwzNzk4NywzNzk5MiwzNzk5NSwzNzk5NywzNzk5OCwzNzk5OSwzODAwMSwzODAwMiwzODAyMCwzODAxOSwzODI2NCwzODI2NSwzODI3MCwzODI3NiwzODI4MCwzODI4NCwzODI4NSwzODI4NiwzODMwMSwzODMwMiwzODMwMywzODMwNSwzODMxMCwzODMxMywz''@;'; put 'put ''ODMxNSwzODMxNiwzODMyNCwzODMyNiwzODMzMCwzODMzMywzODMzNSwzODM0MiwzODM0NCwzODM0NSwzODM0NywzODM1MiwzODM1MywzODM1NCwzODM1NSwzODM2MSwzODM2MiwzODM2NSwzODM2NiwzODM2NywzODM2OCwzODM3MiwzODM3NCwzODQyOSwzODQzMCwzODQzNCwzODQzNiwzODQz''@;'; put 'put ''NywzODQzOCwzODQ0NCwzODQ0OSwzODQ1MSwzODQ1NSwzODQ1NiwzODQ1NywzODQ1OCwzODQ2MCwzODQ2MSwzODQ2NSwzODQ4MiwzODQ4NCwzODQ4NiwzODQ4NywzODQ4OCwzODQ5NywzODUxMCwzODUxNiwzODUyMywzODUyNCwzODUyNiwzODUyNywzODUyOSwzODUzMCwzODUzMSwzODUzMiwz''@;'; put 'put ''ODUzNywzODU0NSwzODU1MCwzODU1NCwzODU1NywzODU1OSwzODU2NCwzODU2NSwzODU2NiwzODU2OSwzODU3NCwzODU3NSwzODU3OSwzODU4NiwzODYwMiwzODYxMCwyMzk4NiwzODYxNiwzODYxOCwzODYyMSwzODYyMiwzODYyMywzODYzMywzODYzOSwzODY0MSwzODY1MCwzODY1OCwzODY1''@;'; put 'put ''OSwzODY2MSwzODY2NSwzODY4MiwzODY4MywzODY4NSwzODY4OSwzODY5MCwzODY5MSwzODY5NiwzODcwNSwzODcwNywzODcyMSwzODcyMywzODczMCwzODczNCwzODczNSwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0NywzODc1NSwzODc1OSwzODc2MiwzODc2NiwzODc3MSwzODc3NCwz''@;'; put 'put ''ODc3NSwzODc3NiwzODc3OSwzODc4MSwzODc4MywzODc4NCwzODc5MywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxNCwzODgxNSwzODgxOCwzODgyOCwzODgzMCwzODgzMywzODgzNCwzODgzNywzODgzOCwzODg0MCwzODg0MSwzODg0MiwzODg0NCwzODg0NiwzODg0NywzODg0''@;'; put 'put ''OSwzODg1MiwzODg1MywzODg1NSwzODg1NywzODg1OCwzODg2MCwzODg2MSwzODg2MiwzODg2NCwzODg2NSwzODg2OCwzODg3MSwzODg3MiwzODg3MywzODg3NywzODg3OCwzODg4MCwzODg3NSwzODg4MSwzODg4NCwzODg5NSwzODg5NywzODkwMCwzODkwMywzODkwNCwzODkwNiwzODkxOSwz''@;'; put 'put ''ODkyMiwzODkzNywzODkyNSwzODkyNiwzODkzMiwzODkzNCwzODk0MCwzODk0MiwzODk0NCwzODk0NywzODk1MCwzODk1NSwzODk1OCwzODk1OSwzODk2MCwzODk2MiwzODk2MywzODk2NSwzODk0OSwzODk3NCwzODk4MCwzODk4MywzODk4NiwzODk5MywzODk5NCwzODk5NSwzODk5OCwzODk5''@;'; put 'put ''OSwzOTAwMSwzOTAwMiwzOTAxMCwzOTAxMSwzOTAxMywzOTAxNCwzOTAxOCwzOTAyMCwzOTA4MywzOTA4NSwzOTA4NiwzOTA4OCwzOTA5MiwzOTA5NSwzOTA5NiwzOTA5OCwzOTA5OSwzOTEwMywzOTEwNiwzOTEwOSwzOTExMiwzOTExNiwzOTEzNywzOTEzOSwzOTE0MSwzOTE0MiwzOTE0Mywz''@;'; put 'put ''OTE0NiwzOTE1NSwzOTE1OCwzOTE3MCwzOTE3NSwzOTE3NiwzOTE4NSwzOTE4OSwzOTE5MCwzOTE5MSwzOTE5NCwzOTE5NSwzOTE5NiwzOTE5OSwzOTIwMiwzOTIwNiwzOTIwNywzOTIxMSwzOTIxNywzOTIxOCwzOTIxOSwzOTIyMCwzOTIyMSwzOTIyNSwzOTIyNiwzOTIyNywzOTIyOCwzOTIz''@;'; put 'put ''MiwzOTIzMywzOTIzOCwzOTIzOSwzOTI0MCwzOTI0NSwzOTI0NiwzOTI1MiwzOTI1NiwzOTI1NywzOTI1OSwzOTI2MCwzOTI2MiwzOTI2MywzOTI2NCwzOTMyMywzOTMyNSwzOTMyNywzOTMzNCwzOTM0NCwzOTM0NSwzOTM0NiwzOTM0OSwzOTM1MywzOTM1NCwzOTM1NywzOTM1OSwzOTM2Mywz''@;'; put 'put ''OTM2OSwzOTM3OSwzOTM4MCwzOTM4NSwzOTM4NiwzOTM4OCwzOTM5MCwzOTM5OSwzOTQwMiwzOTQwMywzOTQwNCwzOTQwOCwzOTQxMiwzOTQxMywzOTQxNywzOTQyMSwzOTQyMiwzOTQyNiwzOTQyNywzOTQyOCwzOTQzNSwzOTQzNiwzOTQ0MCwzOTQ0MSwzOTQ0NiwzOTQ1NCwzOTQ1NiwzOTQ1''@;'; put 'put ''OCwzOTQ1OSwzOTQ2MCwzOTQ2MywzOTQ2OSwzOTQ3MCwzOTQ3NSwzOTQ3NywzOTQ3OCwzOTQ4MCwzOTQ5NSwzOTQ4OSwzOTQ5MiwzOTQ5OCwzOTQ5OSwzOTUwMCwzOTUwMiwzOTUwNSwzOTUwOCwzOTUxMCwzOTUxNywzOTU5NCwzOTU5NiwzOTU5OCwzOTU5OSwzOTYwMiwzOTYwNCwzOTYwNSwz''@;'; put 'put ''OTYwNiwzOTYwOSwzOTYxMSwzOTYxNCwzOTYxNSwzOTYxNywzOTYxOSwzOTYyMiwzOTYyNCwzOTYzMCwzOTYzMiwzOTYzNCwzOTYzNywzOTYzOCwzOTYzOSwzOTY0MywzOTY0NCwzOTY0OCwzOTY1MiwzOTY1MywzOTY1NSwzOTY1NywzOTY2MCwzOTY2NiwzOTY2NywzOTY2OSwzOTY3MywzOTY3''@;'; put 'put ''NCwzOTY3NywzOTY3OSwzOTY4MCwzOTY4MSwzOTY4MiwzOTY4MywzOTY4NCwzOTY4NSwzOTY4OCwzOTY4OSwzOTY5MSwzOTY5MiwzOTY5MywzOTY5NCwzOTY5NiwzOTY5OCwzOTcwMiwzOTcwNSwzOTcwNywzOTcwOCwzOTcxMiwzOTcxOCwzOTcyMywzOTcyNSwzOTczMSwzOTczMiwzOTczMywz''@;'; put 'put ''OTczNSwzOTczNywzOTczOCwzOTc0MSwzOTc1MiwzOTc1NSwzOTc1NiwzOTc2NSwzOTc2NiwzOTc2NywzOTc3MSwzOTc3NCwzOTc3NywzOTc3OSwzOTc4MSwzOTc4MiwzOTc4NCwzOTc4NiwzOTc4NywzOTc4OCwzOTc4OSwzOTc5MCwzOTc5NSwzOTc5NywzOTc5OSwzOTgwMCwzOTgwMSwzOTgw''@;'; put 'put ''NywzOTgwOCwzOTgxMiwzOTgxMywzOTgxNCwzOTgxNSwzOTgxNywzOTgxOCwzOTgxOSwzOTgyMSwzOTgyMywzOTgyNCwzOTgyOCwzOTgzNCwzOTgzNywzOTgzOCwzOTg0NiwzOTg0NywzOTg0OSwzOTg1MiwzOTg1NiwzOTg1NywzOTg1OCwzOTg2MywzOTg2NCwzOTg2NywzOTg2OCwzOTg3MCwz''@;'; put 'put ''OTg3MSwzOTg3MywzOTg3OSwzOTg4MCwzOTg4NiwzOTg4OCwzOTg5NSwzOTg5NiwzOTkwMSwzOTkwMywzOTkwOSwzOTkxMSwzOTkxNCwzOTkxNSwzOTkxOSwzOTkyMywzOTkyNywzOTkyOCwzOTkyOSwzOTkzMCwzOTkzMywzOTkzNSwzOTkzNiwzOTkzOCwzOTk0NywzOTk1MSwzOTk1MywzOTk1''@;'; put 'put ''OCwzOTk2MCwzOTk2MSwzOTk2MiwzOTk2NCwzOTk2NiwzOTk3MCwzOTk3MSwzOTk3NCwzOTk3NSwzOTk3NiwzOTk3NywzOTk3OCwzOTk4NSwzOTk4OSwzOTk5MCwzOTk5MSwzOTk5Nyw0MDAwMSw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwOSw0MDAxMCw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxOSw0''@;'; put 'put ''MDAyMCw0MDAyMiw0MDAyNCw0MDAyNyw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzNSw0MDA0MSw0MDA0Miw0MDAyOCw0MDA0Myw0MDA0MCw0MDA0Niw0MDA0OCw0MDA1MCw0MDA1Myw0MDA1NSw0MDA1OSw0MDE2Niw0MDE3OCw0MDE4Myw0MDE4NSw0MDIwMyw0MDE5NCw0MDIwOSw0MDIxNSw0MDIx''@;'; put 'put ''Niw0MDIyMCw0MDIyMSw0MDIyMiw0MDIzOSw0MDI0MCw0MDI0Miw0MDI0Myw0MDI0NCw0MDI1MCw0MDI1Miw0MDI2MSw0MDI1Myw0MDI1OCw0MDI1OSw0MDI2Myw0MDI2Niw0MDI3NSw0MDI3Niw0MDI4Nyw0MDI5MSw0MDI5MCw0MDI5Myw0MDI5Nyw0MDI5OCw0MDI5OSw0MDMwNCw0MDMxMCw0''@;'; put 'put ''MDMxMSw0MDMxNSw0MDMxNiw0MDMxOCw0MDMyMyw0MDMyNCw0MDMyNiw0MDMzMCw0MDMzMyw0MDMzNCw0MDMzOCw0MDMzOSw0MDM0MSw0MDM0Miw0MDM0Myw0MDM0NCw0MDM1Myw0MDM2Miw0MDM2NCw0MDM2Niw0MDM2OSw0MDM3Myw0MDM3Nyw0MDM4MCw0MDM4Myw0MDM4Nyw0MDM5MSw0MDM5''@;'; put 'put ''Myw0MDM5NCw0MDQwNCw0MDQwNSw0MDQwNiw0MDQwNyw0MDQxMCw0MDQxNCw0MDQxNSw0MDQxNiw0MDQyMSw0MDQyMyw0MDQyNSw0MDQyNyw0MDQzMCw0MDQzMiw0MDQzNSw0MDQzNiw0MDQ0Niw0MDQ1OCw0MDQ1MCw0MDQ1NSw0MDQ2Miw0MDQ2NCw0MDQ2NSw0MDQ2Niw0MDQ2OSw0MDQ3MCw0''@;'; put 'put ''MDQ3Myw0MDQ3Niw0MDQ3Nyw0MDU3MCw0MDU3MSw0MDU3Miw0MDU3Niw0MDU3OCw0MDU3OSw0MDU4MCw0MDU4MSw0MDU4Myw0MDU5MCw0MDU5MSw0MDU5OCw0MDYwMCw0MDYwMyw0MDYwNiw0MDYxMiw0MDYxNiw0MDYyMCw0MDYyMiw0MDYyMyw0MDYyNCw0MDYyNyw0MDYyOCw0MDYyOSw0MDY0''@;'; put 'put ''Niw0MDY0OCw0MDY1MSw0MDY2MSw0MDY3MSw0MDY3Niw0MDY3OSw0MDY4NCw0MDY4NSw0MDY4Niw0MDY4OCw0MDY4OSw0MDY5MCw0MDY5Myw0MDY5Niw0MDcwMyw0MDcwNiw0MDcwNyw0MDcxMyw0MDcxOSw0MDcyMCw0MDcyMSw0MDcyMiw0MDcyNCw0MDcyNiw0MDcyNyw0MDcyOSw0MDczMCw0''@;'; put 'put ''MDczMSw0MDczNSw0MDczOCw0MDc0Miw0MDc0Niw0MDc0Nyw0MDc1MSw0MDc1Myw0MDc1NCw0MDc1Niw0MDc1OSw0MDc2MSw0MDc2Miw0MDc2NCw0MDc2NSw0MDc2Nyw0MDc2OSw0MDc3MSw0MDc3Miw0MDc3Myw0MDc3NCw0MDc3NSw0MDc4Nyw0MDc4OSw0MDc5MCw0MDc5MSw0MDc5Miw0MDc5''@;'; put 'put ''NCw0MDc5Nyw0MDc5OCw0MDgwOCw0MDgwOSw0MDgxMyw0MDgxNCw0MDgxNSw0MDgxNiw0MDgxNyw0MDgxOSw0MDgyMSw0MDgyNiw0MDgyOSw0MDg0Nyw0MDg0OCw0MDg0OSw0MDg1MCw0MDg1Miw0MDg1NCw0MDg1NSw0MDg2Miw0MDg2NSw0MDg2Niw0MDg2Nyw0MDg2OSxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVs''@;'; put 'put ''bCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLGlibTg2NjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1''@;'; put 'put ''LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsOTYxNyw5NjE4LDk2MTksOTQ3NCw5NTA4LDk1NjksOTU3MCw5NTU4LDk1NTcsOTU3MSw5NTUz''@;'; put 'put ''LDk1NTksOTU2NSw5NTY0LDk1NjMsOTQ4OCw5NDkyLDk1MjQsOTUxNiw5NTAwLDk0NzIsOTUzMiw5NTY2LDk1NjcsOTU2Miw5NTU2LDk1NzcsOTU3NCw5NTY4LDk1NTIsOTU4MCw5NTc1LDk1NzYsOTU3Miw5NTczLDk1NjEsOTU2MCw5NTU0LDk1NTUsOTU3OSw5NTc4LDk0OTYsOTQ4NCw5NjA4''@;'; put 'put ''LDk2MDQsOTYxMiw5NjE2LDk2MDAsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMDI1LDExMDUsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDM4LDExMTgsMTc2LDg3MjksMTgzLDg3MzAsODQ3MCwx''@;'; put 'put ''NjQsOTYzMiwxNjBdLCJpc28tODg1OS0yIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDcy''@;'; put 'put ''OCwzMjEsMTY0LDMxNywzNDYsMTY3LDE2OCwzNTIsMzUwLDM1NiwzNzcsMTczLDM4MSwzNzksMTc2LDI2MSw3MzEsMzIyLDE4MCwzMTgsMzQ3LDcxMSwxODQsMzUzLDM1MSwzNTcsMzc4LDczMywzODIsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAz''@;'; put 'put ''LDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQs''@;'; put 'put ''MzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sImlzby04ODU5LTMiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1''@;'; put 'put ''NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyOTQsNzI4LDE2MywxNjQsbnVsbCwyOTIsMTY3LDE2OCwzMDQsMzUwLDI4NiwzMDgsMTczLG51bGwsMzc5LDE3NiwyOTUsMTc4LDE3OSwxODAsMTgxLDI5MywxODMsMTg0LDMwNSwzNTEsMjg3LDMwOSwxODksbnVsbCwzODAsMTkyLDE5MywxOTQs''@;'; put 'put ''bnVsbCwxOTYsMjY2LDI2NCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNyxudWxsLDIwOSwyMTAsMjExLDIxMiwyODgsMjE0LDIxNSwyODQsMjE3LDIxOCwyMTksMjIwLDM2NCwzNDgsMjIzLDIyNCwyMjUsMjI2LG51bGwsMjI4LDI2NywyNjUsMjMxLDIzMiwyMzMsMjM0LDIz''@;'; put 'put ''NSwyMzYsMjM3LDIzOCwyMzksbnVsbCwyNDEsMjQyLDI0MywyNDQsMjg5LDI0NiwyNDcsMjg1LDI0OSwyNTAsMjUxLDI1MiwzNjUsMzQ5LDcyOV0sImlzby04ODU5LTQiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0''@;'; put 'put ''LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMzEyLDM0MiwxNjQsMjk2LDMxNSwxNjcsMTY4LDM1MiwyNzQsMjkwLDM1OCwxNzMsMzgxLDE3NSwxNzYsMjYxLDczMSwzNDMsMTgwLDI5NywzMTYsNzExLDE4NCwzNTMs''@;'; put 'put ''Mjc1LDI5MSwzNTksMzMwLDM4MiwzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjk4LDI3MiwzMjUsMzMyLDMxMCwyMTIsMjEzLDIxNCwyMTUsMjE2LDM3MCwyMTgsMjE5LDIyMCwzNjAsMzYyLDIyMywyNTcsMjI1LDIyNiwy''@;'; put 'put ''MjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyOTksMjczLDMyNiwzMzMsMzExLDI0NCwyNDUsMjQ2LDI0NywyNDgsMzcxLDI1MCwyNTEsMjUyLDM2MSwzNjMsNzI5XSwiaXNvLTg4NTktNSI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2''@;'; put 'put ''LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDE3MywxMDM4''@;'; put 'put ''LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcx''@;'; put 'put ''LDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4NDcw''@;'; put 'put ''LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDE2NywxMTE4LDExMTldLCJpc28tODg1OS02IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2''@;'; put 'put ''LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCxudWxsLG51bGwsMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU0OCwxNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCwxNTYzLG51bGwsbnVsbCxudWxsLDE1NjcsbnVsbCwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDE1OTEs''@;'; put 'put ''MTU5MiwxNTkzLDE1OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MDAsMTYwMSwxNjAyLDE2MDMsMTYwNCwxNjA1LDE2MDYsMTYwNywxNjA4LDE2MDksMTYxMCwxNjExLDE2MTIsMTYxMywxNjE0LDE2MTUsMTYxNiwxNjE3LDE2MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGws''@;'; put 'put ''bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sImlzby04ODU5LTciOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2''@;'; put 'put ''LDE1NywxNTgsMTU5LDE2MCw4MjE2LDgyMTcsMTYzLDgzNjQsODM2NywxNjYsMTY3LDE2OCwxNjksODkwLDE3MSwxNzIsMTczLG51bGwsODIxMywxNzYsMTc3LDE3OCwxNzksOTAwLDkwMSw5MDIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkx''@;'; put 'put ''Niw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1''@;'; put 'put ''Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLCJpc28tODg1OS04IjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2''@;'; put 'put ''LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3''@;'; put 'put ''LDE4OCwxODksMTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51''@;'; put 'put ''bGwsbnVsbCw4MjE1LDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgy''@;'; put 'put ''MDcsbnVsbF0sImlzby04ODU5LTEwIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDI3NCwy''@;'; put 'put ''OTAsMjk4LDI5NiwzMTAsMTY3LDMxNSwyNzIsMzUyLDM1OCwzODEsMTczLDM2MiwzMzAsMTc2LDI2MSwyNzUsMjkxLDI5OSwyOTcsMzExLDE4MywzMTYsMjczLDM1MywzNTksMzgyLDgyMTMsMzYzLDMzMSwyNTYsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMzAyLDI2OCwyMDEsMjgwLDIwMywy''@;'; put 'put ''NzgsMjA1LDIwNiwyMDcsMjA4LDMyNSwzMzIsMjExLDIxMiwyMTMsMjE0LDM2MCwyMTYsMzcwLDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDI1NywyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwzMDMsMjY5LDIzMywyODEsMjM1LDI3OSwyMzcsMjM4LDIzOSwyNDAsMzI2LDMzMywyNDMsMjQ0LDI0''@;'; put 'put ''NSwyNDYsMzYxLDI0OCwzNzEsMjUwLDI1MSwyNTIsMjUzLDI1NCwzMTJdLCJpc28tODg1OS0xMyI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0''@;'; put 'put ''LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDgyMjEsMTYyLDE2MywxNjQsODIyMiwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgsMTc5LDgyMjAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1Niwy''@;'; put 'put ''NjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5''@;'; put 'put ''MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw4MjE3XSwiaXNvLTg4NTktMTQiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0''@;'; put 'put ''NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw3NjgyLDc2ODMsMTYzLDI2NiwyNjcsNzY5MCwxNjcsNzgwOCwxNjksNzgxMCw3NjkxLDc5MjIsMTczLDE3NCwzNzYsNzcxMCw3NzExLDI4OCwyODksNzc0NCw3NzQ1LDE4Miw3NzY2''@;'; put 'put ''LDc4MDksNzc2Nyw3ODExLDc3NzYsNzkyMyw3ODEyLDc4MTMsNzc3NywxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMzcyLDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDc3ODYsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMzc0''@;'; put 'put ''LDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMzczLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDc3ODcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMzc1LDI1NV0sImlzby04ODU5LTE1IjpbMTI4LDEyOSwxMzAsMTMx''@;'; put 'put ''LDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2NCwxNjUsMzUyLDE2NywzNTMsMTY5LDE3MCwxNzEsMTcy''@;'; put 'put ''LDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwzODEsMTgxLDE4MiwxODMsMzgyLDE4NSwxODYsMTg3LDMzOCwzMzksMzc2LDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMs''@;'; put 'put ''MjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwy''@;'; put 'put ''NTVdLCJpc28tODg1OS0xNiI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNjEsMzIxLDgz''@;'; put 'put ''NjQsODIyMiwzNTIsMTY3LDM1MywxNjksNTM2LDE3MSwzNzcsMTczLDM3OCwzNzksMTc2LDE3NywyNjgsMzIyLDM4MSw4MjIxLDE4MiwxODMsMzgyLDI2OSw1MzcsMTg3LDMzOCwzMzksMzc2LDM4MCwxOTIsMTkzLDE5NCwyNTgsMTk2LDI2MiwxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQs''@;'; put 'put ''MjA1LDIwNiwyMDcsMjcyLDMyMywyMTAsMjExLDIxMiwzMzYsMjE0LDM0NiwzNjgsMjE3LDIxOCwyMTksMjIwLDI4MCw1MzgsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjYzLDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNzMsMzI0LDI0MiwyNDMsMjQ0LDMzNywy''@;'; put 'put ''NDYsMzQ3LDM2OSwyNDksMjUwLDI1MSwyNTIsMjgxLDUzOSwyNTVdLCJrb2k4LXIiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAs''@;'; put 'put ''ODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQs''@;'; put 'put ''OTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwx''@;'; put 'put ''MDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0Nywx''@;'; put 'put ''MDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLCJrb2k4LXUiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUs''@;'; put 'put ''MTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsMTEwOCw5NTU2LDExMTAsMTExMSw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsMTE2OSwxMTE4LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSwxMDI4LDk1NzEsMTAzMCwxMDMxLDk1NzQsOTU3NSw5NTc2LDk1Nzcs''@;'; put 'put ''OTU3OCwxMTY4LDEwMzgsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwx''@;'; put 'put ''MDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwx''@;'; put 'put ''MDYzLDEwNjZdLG1hY2ludG9zaDpbMTk2LDE5NywxOTksMjAxLDIwOSwyMTQsMjIwLDIyNSwyMjQsMjI2LDIyOCwyMjcsMjI5LDIzMSwyMzMsMjMyLDIzNCwyMzUsMjM3LDIzNiwyMzgsMjM5LDI0MSwyNDMsMjQyLDI0NCwyNDYsMjQ1LDI1MCwyNDksMjUxLDI1Miw4MjI0LDE3NiwxNjIsMTYz''@;'; put 'put ''LDE2Nyw4MjI2LDE4MiwyMjMsMTc0LDE2OSw4NDgyLDE4MCwxNjgsODgwMCwxOTgsMjE2LDg3MzQsMTc3LDg4MDQsODgwNSwxNjUsMTgxLDg3MDYsODcyMSw4NzE5LDk2MCw4NzQ3LDE3MCwxODYsOTM3LDIzMCwyNDgsMTkxLDE2MSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIz''@;'; put 'put ''MCwxNjAsMTkyLDE5NSwyMTMsMzM4LDMzOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsOTY3NCwyNTUsMzc2LDgyNjAsODM2NCw4MjQ5LDgyNTAsNjQyNTcsNjQyNTgsODIyNSwxODMsODIxOCw4MjIyLDgyNDAsMTk0LDIwMiwxOTMsMjAzLDIwMCwyMDUsMjA2LDIwNywyMDQs''@;'; put 'put ''MjExLDIxMiw2Mzc0MywyMTAsMjE4LDIxOSwyMTcsMzA1LDcxMCw3MzIsMTc1LDcyOCw3MjksNzMwLDE4NCw3MzMsNzMxLDcxMV0sIndpbmRvd3MtODc0IjpbODM2NCwxMjksMTMwLDEzMSwxMzIsODIzMCwxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYs''@;'; put 'put ''ODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMzU4NSwzNTg2LDM1ODcsMzU4OCwzNTg5LDM1OTAsMzU5MSwzNTkyLDM1OTMsMzU5NCwzNTk1LDM1OTYsMzU5NywzNTk4LDM1OTksMzYwMCwzNjAxLDM2MDIsMzYwMywzNjA0''@;'; put 'put ''LDM2MDUsMzYwNiwzNjA3LDM2MDgsMzYwOSwzNjEwLDM2MTEsMzYxMiwzNjEzLDM2MTQsMzYxNSwzNjE2LDM2MTcsMzYxOCwzNjE5LDM2MjAsMzYyMSwzNjIyLDM2MjMsMzYyNCwzNjI1LDM2MjYsMzYyNywzNjI4LDM2MjksMzYzMCwzNjMxLDM2MzIsMzYzMywzNjM0LDM2MzUsMzYzNiwzNjM3''@;'; put 'put ''LDM2MzgsMzYzOSwzNjQwLDM2NDEsMzY0MixudWxsLG51bGwsbnVsbCxudWxsLDM2NDcsMzY0OCwzNjQ5LDM2NTAsMzY1MSwzNjUyLDM2NTMsMzY1NCwzNjU1LDM2NTYsMzY1NywzNjU4LDM2NTksMzY2MCwzNjYxLDM2NjIsMzY2MywzNjY0LDM2NjUsMzY2NiwzNjY3LDM2NjgsMzY2OSwzNjcw''@;'; put 'put ''LDM2NzEsMzY3MiwzNjczLDM2NzQsMzY3NSxudWxsLG51bGwsbnVsbCxudWxsXSwid2luZG93cy0xMjUwIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwzNTIsODI0OSwzNDYsMzU2LDM4MSwzNzcsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4''@;'; put 'put ''MjExLDgyMTIsMTUyLDg0ODIsMzUzLDgyNTAsMzQ3LDM1NywzODIsMzc4LDE2MCw3MTEsNzI4LDMyMSwxNjQsMjYwLDE2NiwxNjcsMTY4LDE2OSwzNTAsMTcxLDE3MiwxNzMsMTc0LDM3OSwxNzYsMTc3LDczMSwzMjIsMTgwLDE4MSwxODIsMTgzLDE4NCwyNjEsMzUxLDE4NywzMTcsNzMzLDMx''@;'; put 'put ''OCwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwyMTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMx''@;'; put 'put ''LDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSwid2luZG93cy0xMjUxIjpbMTAyNiwxMDI3LDgyMTgsMTEwNyw4MjIyLDgyMzAsODIyNCw4MjI1LDgzNjQsODI0MCwx''@;'; put 'put ''MDMzLDgyNDksMTAzNCwxMDM2LDEwMzUsMTAzOSwxMTA2LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTExMyw4MjUwLDExMTQsMTExNiwxMTE1LDExMTksMTYwLDEwMzgsMTExOCwxMDMyLDE2NCwxMTY4LDE2NiwxNjcsMTAyNSwxNjksMTAyOCwxNzEsMTcy''@;'; put 'put ''LDE3MywxNzQsMTAzMSwxNzYsMTc3LDEwMzAsMTExMCwxMTY5LDE4MSwxODIsMTgzLDExMDUsODQ3MCwxMTA4LDE4NywxMTEyLDEwMjksMTEwOSwxMTExLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEw''@;'; put 'put ''NTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEw''@;'; put 'put ''ODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDNdLCJ3aW5kb3dzLTEyNTIiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMzgxLDE0''@;'; put 'put ''MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDM4MiwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4''@;'; put 'put ''MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIz''@;'; put 'put ''LDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLCJ3aW5kb3dzLTEyNTMiOls4MzY0LDEyOSw4MjE4LDQwMiw4''@;'; put 'put ''MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDkwMSw5MDIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5''@;'; put 'put ''LG51bGwsMTcxLDE3MiwxNzMsMTc0LDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCwxODEsMTgyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51''@;'; put 'put ''bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3''@;'; put 'put ''MSw5NzIsOTczLDk3NCxudWxsXSwid2luZG93cy0xMjU0IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAs''@;'; put 'put ''MzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5Niwx''@;'; put 'put ''OTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI4NiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwzMDQsMzUwLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIz''@;'; put 'put ''OCwyMzksMjg3LDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDMwNSwzNTEsMjU1XSwid2luZG93cy0xMjU1IjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgy''@;'; put 'put ''MTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzYyLDE2NSwxNjYsMTY3LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4Mywx''@;'; put 'put ''ODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsMTkxLDE0NTYsMTQ1NywxNDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsMTQ2NiwxNDY3LDE0NjgsMTQ2OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsbnVsbCxudWxs''@;'; put 'put ''LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxs''@;'; put 'put ''LG51bGwsODIwNiw4MjA3LG51bGxdLCJ3aW5kb3dzLTEyNTYiOls4MzY0LDE2NjIsODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxNjU3LDgyNDksMzM4LDE2NzAsMTY4OCwxNjcyLDE3MTEsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNzA1LDg0ODIs''@;'; put 'put ''MTY4MSw4MjUwLDMzOSw4MjA0LDgyMDUsMTcyMiwxNjAsMTU0OCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MjYsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTU2MywxODcsMTg4LDE4OSwxOTAsMTU2NywxNzI5''@;'; put 'put ''LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMjE1LDE1OTEsMTU5MiwxNTkzLDE1OTQsMTYwMCwxNjAxLDE2MDIsMTYwMywyMjQsMTYwNCwy''@;'; put 'put ''MjYsMTYwNSwxNjA2LDE2MDcsMTYwOCwyMzEsMjMyLDIzMywyMzQsMjM1LDE2MDksMTYxMCwyMzgsMjM5LDE2MTEsMTYxMiwxNjEzLDE2MTQsMjQ0LDE2MTUsMTYxNiwyNDcsMTYxNywyNDksMTYxOCwyNTEsMjUyLDgyMDYsODIwNywxNzQ2XSwid2luZG93cy0xMjU3IjpbODM2NCwxMjksODIx''@;'; put 'put ''OCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTY4LDcxMSwxODQsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE3NSw3MzEsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LG51bGwsMTY2LDE2''@;'; put 'put ''NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUy''@;'; put 'put ''LDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIs''@;'; put 'put ''MzQ3LDM2MywyNTIsMzgwLDM4Miw3MjldLCJ3aW5kb3dzLTEyNTgiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQs''@;'; put 'put ''ODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwyNTgs''@;'; put 'put ''MTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMyw3NjgsMjA1LDIwNiwyMDcsMjcyLDIwOSw3NzcsMjExLDIxMiw0MTYsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDQzMSw3NzEsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDc2OSwy''@;'; put 'put ''MzcsMjM4LDIzOSwyNzMsMjQxLDgwMywyNDMsMjQ0LDQxNywyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsNDMyLDgzNjMsMjU1XSwieC1tYWMtY3lyaWxsaWMiOlsxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMs''@;'; put 'put ''MTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsODIyNCwxNzYsMTE2OCwxNjMsMTY3LDgyMjYsMTgyLDEwMzAsMTc0LDE2OSw4NDgyLDEwMjYsMTEwNiw4ODAwLDEwMjcsMTEwNyw4''@;'; put 'put ''NzM0LDE3Nyw4ODA0LDg4MDUsMTExMCwxODEsMTE2OSwxMDMyLDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzMywxMTEzLDEwMzQsMTExNCwxMTEyLDEwMjksMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDEwMzUsMTExNSwxMDM2LDExMTYsMTEwOSw4MjExLDgyMTIsODIy''@;'; put 'put ''MCw4MjIxLDgyMTYsODIxNywyNDcsODIyMiwxMDM4LDExMTgsMTAzOSwxMTE5LDg0NzAsMTAyNSwxMTA1LDExMDMsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkx''@;'; put 'put ''LDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiw4MzY0XX19KHRoaXN8fHt9KX0sNjQzMTg6ZnVuY3Rpb24oUWUsTWUsUil7IWZ1bmN0aW9uKG9lKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24geChJZSxYZSx0dCl7cmV0dXJuIFhlPD1JZSYmSWU8''@;'; put 'put ''PXR0fVFlLmV4cG9ydHMmJiFvZVsiZW5jb2RpbmctaW5kZXhlcyJdJiYob2VbImVuY29kaW5nLWluZGV4ZXMiXT1SKDY3OTUxKVsiZW5jb2RpbmctaW5kZXhlcyJdKTt2YXIgc2U9TWF0aC5mbG9vcjtmdW5jdGlvbiBNKEllKXtpZih2b2lkIDA9PT1JZSlyZXR1cm57fTtpZihJZT09PU9iamVj''@;'; put 'put ''dChJZSkpcmV0dXJuIEllO3Rocm93IFR5cGVFcnJvcigiQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gZGljdGlvbmFyeSIpfWZ1bmN0aW9uIGooSWUpe3JldHVybiAwPD1JZSYmSWU8PTEyN312YXIgRz1qLEQ9LTE7ZnVuY3Rpb24gVChJZSl7dGhpcy50b2tlbnM9W10uc2xpY2UuY2Fs''@;'; put 'put ''bChJZSksdGhpcy50b2tlbnMucmV2ZXJzZSgpfVQucHJvdG90eXBlPXtlbmRPZlN0cmVhbTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnRva2Vucy5sZW5ndGh9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RoP3RoaXMudG9rZW5zLnBvcCgpOkR9LHByZXBlbmQ6ZnVu''@;'; put 'put ''Y3Rpb24oSWUpe2lmKEFycmF5LmlzQXJyYXkoSWUpKWZvcih2YXIgWGU9SWU7WGUubGVuZ3RoOyl0aGlzLnRva2Vucy5wdXNoKFhlLnBvcCgpKTtlbHNlIHRoaXMudG9rZW5zLnB1c2goSWUpfSxwdXNoOmZ1bmN0aW9uKEllKXtpZihBcnJheS5pc0FycmF5KEllKSlmb3IodmFyIFhlPUllO1hl''@;'; put 'put ''Lmxlbmd0aDspdGhpcy50b2tlbnMudW5zaGlmdChYZS5zaGlmdCgpKTtlbHNlIHRoaXMudG9rZW5zLnVuc2hpZnQoSWUpfX07dmFyIEU9LTE7ZnVuY3Rpb24geihJZSxYZSl7aWYoSWUpdGhyb3cgVHlwZUVycm9yKCJEZWNvZGVyIGVycm9yIik7cmV0dXJuIFhlfHw2NTUzM31mdW5jdGlvbiBO''@;'; put 'put ''KEllKXt0aHJvdyBUeXBlRXJyb3IoIlRoZSBjb2RlIHBvaW50ICIrSWUrIiBjb3VsZCBub3QgYmUgZW5jb2RlZC4iKX1mdW5jdGlvbiBZKEllKXtyZXR1cm4gSWU9U3RyaW5nKEllKS50cmltKCkudG9Mb3dlckNhc2UoKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocSxJ''@;'; put 'put ''ZSk/cVtJZV06bnVsbH12YXIgVT1be2VuY29kaW5nczpbe2xhYmVsczpbInVuaWNvZGUtMS0xLXV0Zi04IiwidXRmLTgiLCJ1dGY4Il0sbmFtZToiVVRGLTgifV0saGVhZGluZzoiVGhlIEVuY29kaW5nIn0se2VuY29kaW5nczpbe2xhYmVsczpbIjg2NiIsImNwODY2IiwiY3NpYm04NjYiLCJp''@;'; put 'put ''Ym04NjYiXSxuYW1lOiJJQk04NjYifSx7bGFiZWxzOlsiY3Npc29sYXRpbjIiLCJpc28tODg1OS0yIiwiaXNvLWlyLTEwMSIsImlzbzg4NTktMiIsImlzbzg4NTkyIiwiaXNvXzg4NTktMiIsImlzb184ODU5LTI6MTk4NyIsImwyIiwibGF0aW4yIl0sbmFtZToiSVNPLTg4NTktMiJ9LHtsYWJl''@;'; put 'put ''bHM6WyJjc2lzb2xhdGluMyIsImlzby04ODU5LTMiLCJpc28taXItMTA5IiwiaXNvODg1OS0zIiwiaXNvODg1OTMiLCJpc29fODg1OS0zIiwiaXNvXzg4NTktMzoxOTg4IiwibDMiLCJsYXRpbjMiXSxuYW1lOiJJU08tODg1OS0zIn0se2xhYmVsczpbImNzaXNvbGF0aW40IiwiaXNvLTg4NTkt''@;'; put 'put ''NCIsImlzby1pci0xMTAiLCJpc284ODU5LTQiLCJpc284ODU5NCIsImlzb184ODU5LTQiLCJpc29fODg1OS00OjE5ODgiLCJsNCIsImxhdGluNCJdLG5hbWU6IklTTy04ODU5LTQifSx7bGFiZWxzOlsiY3Npc29sYXRpbmN5cmlsbGljIiwiY3lyaWxsaWMiLCJpc28tODg1OS01IiwiaXNvLWly''@;'; put 'put ''LTE0NCIsImlzbzg4NTktNSIsImlzbzg4NTk1IiwiaXNvXzg4NTktNSIsImlzb184ODU5LTU6MTk4OCJdLG5hbWU6IklTTy04ODU5LTUifSx7bGFiZWxzOlsiYXJhYmljIiwiYXNtby03MDgiLCJjc2lzbzg4NTk2ZSIsImNzaXNvODg1OTZpIiwiY3Npc29sYXRpbmFyYWJpYyIsImVjbWEtMTE0''@;'; put 'put ''IiwiaXNvLTg4NTktNiIsImlzby04ODU5LTYtZSIsImlzby04ODU5LTYtaSIsImlzby1pci0xMjciLCJpc284ODU5LTYiLCJpc284ODU5NiIsImlzb184ODU5LTYiLCJpc29fODg1OS02OjE5ODciXSxuYW1lOiJJU08tODg1OS02In0se2xhYmVsczpbImNzaXNvbGF0aW5ncmVlayIsImVjbWEt''@;'; put 'put ''MTE4IiwiZWxvdF85MjgiLCJncmVlayIsImdyZWVrOCIsImlzby04ODU5LTciLCJpc28taXItMTI2IiwiaXNvODg1OS03IiwiaXNvODg1OTciLCJpc29fODg1OS03IiwiaXNvXzg4NTktNzoxOTg3Iiwic3VuX2V1X2dyZWVrIl0sbmFtZToiSVNPLTg4NTktNyJ9LHtsYWJlbHM6WyJjc2lzbzg4''@;'; put 'put ''NTk4ZSIsImNzaXNvbGF0aW5oZWJyZXciLCJoZWJyZXciLCJpc28tODg1OS04IiwiaXNvLTg4NTktOC1lIiwiaXNvLWlyLTEzOCIsImlzbzg4NTktOCIsImlzbzg4NTk4IiwiaXNvXzg4NTktOCIsImlzb184ODU5LTg6MTk4OCIsInZpc3VhbCJdLG5hbWU6IklTTy04ODU5LTgifSx7bGFiZWxz''@;'; put 'put ''OlsiY3Npc284ODU5OGkiLCJpc28tODg1OS04LWkiLCJsb2dpY2FsIl0sbmFtZToiSVNPLTg4NTktOC1JIn0se2xhYmVsczpbImNzaXNvbGF0aW42IiwiaXNvLTg4NTktMTAiLCJpc28taXItMTU3IiwiaXNvODg1OS0xMCIsImlzbzg4NTkxMCIsImw2IiwibGF0aW42Il0sbmFtZToiSVNPLTg4''@;'; put 'put ''NTktMTAifSx7bGFiZWxzOlsiaXNvLTg4NTktMTMiLCJpc284ODU5LTEzIiwiaXNvODg1OTEzIl0sbmFtZToiSVNPLTg4NTktMTMifSx7bGFiZWxzOlsiaXNvLTg4NTktMTQiLCJpc284ODU5LTE0IiwiaXNvODg1OTE0Il0sbmFtZToiSVNPLTg4NTktMTQifSx7bGFiZWxzOlsiY3Npc29sYXRp''@;'; put 'put ''bjkiLCJpc28tODg1OS0xNSIsImlzbzg4NTktMTUiLCJpc284ODU5MTUiLCJpc29fODg1OS0xNSIsImw5Il0sbmFtZToiSVNPLTg4NTktMTUifSx7bGFiZWxzOlsiaXNvLTg4NTktMTYiXSxuYW1lOiJJU08tODg1OS0xNiJ9LHtsYWJlbHM6WyJjc2tvaThyIiwia29pIiwia29pOCIsImtvaTgt''@;'; put 'put ''ciIsImtvaThfciJdLG5hbWU6IktPSTgtUiJ9LHtsYWJlbHM6WyJrb2k4LXJ1Iiwia29pOC11Il0sbmFtZToiS09JOC1VIn0se2xhYmVsczpbImNzbWFjaW50b3NoIiwibWFjIiwibWFjaW50b3NoIiwieC1tYWMtcm9tYW4iXSxuYW1lOiJtYWNpbnRvc2gifSx7bGFiZWxzOlsiZG9zLTg3NCIs''@;'; put 'put ''Imlzby04ODU5LTExIiwiaXNvODg1OS0xMSIsImlzbzg4NTkxMSIsInRpcy02MjAiLCJ3aW5kb3dzLTg3NCJdLG5hbWU6IndpbmRvd3MtODc0In0se2xhYmVsczpbImNwMTI1MCIsIndpbmRvd3MtMTI1MCIsIngtY3AxMjUwIl0sbmFtZToid2luZG93cy0xMjUwIn0se2xhYmVsczpbImNwMTI1''@;'; put 'put ''MSIsIndpbmRvd3MtMTI1MSIsIngtY3AxMjUxIl0sbmFtZToid2luZG93cy0xMjUxIn0se2xhYmVsczpbImFuc2lfeDMuNC0xOTY4IiwiYXNjaWkiLCJjcDEyNTIiLCJjcDgxOSIsImNzaXNvbGF0aW4xIiwiaWJtODE5IiwiaXNvLTg4NTktMSIsImlzby1pci0xMDAiLCJpc284ODU5LTEiLCJp''@;'; put 'put ''c284ODU5MSIsImlzb184ODU5LTEiLCJpc29fODg1OS0xOjE5ODciLCJsMSIsImxhdGluMSIsInVzLWFzY2lpIiwid2luZG93cy0xMjUyIiwieC1jcDEyNTIiXSxuYW1lOiJ3aW5kb3dzLTEyNTIifSx7bGFiZWxzOlsiY3AxMjUzIiwid2luZG93cy0xMjUzIiwieC1jcDEyNTMiXSxuYW1lOiJ3''@;'; put 'put ''aW5kb3dzLTEyNTMifSx7bGFiZWxzOlsiY3AxMjU0IiwiY3Npc29sYXRpbjUiLCJpc28tODg1OS05IiwiaXNvLWlyLTE0OCIsImlzbzg4NTktOSIsImlzbzg4NTk5IiwiaXNvXzg4NTktOSIsImlzb184ODU5LTk6MTk4OSIsImw1IiwibGF0aW41Iiwid2luZG93cy0xMjU0IiwieC1jcDEyNTQi''@;'; put 'put ''XSxuYW1lOiJ3aW5kb3dzLTEyNTQifSx7bGFiZWxzOlsiY3AxMjU1Iiwid2luZG93cy0xMjU1IiwieC1jcDEyNTUiXSxuYW1lOiJ3aW5kb3dzLTEyNTUifSx7bGFiZWxzOlsiY3AxMjU2Iiwid2luZG93cy0xMjU2IiwieC1jcDEyNTYiXSxuYW1lOiJ3aW5kb3dzLTEyNTYifSx7bGFiZWxzOlsi''@;'; put 'put ''Y3AxMjU3Iiwid2luZG93cy0xMjU3IiwieC1jcDEyNTciXSxuYW1lOiJ3aW5kb3dzLTEyNTcifSx7bGFiZWxzOlsiY3AxMjU4Iiwid2luZG93cy0xMjU4IiwieC1jcDEyNTgiXSxuYW1lOiJ3aW5kb3dzLTEyNTgifSx7bGFiZWxzOlsieC1tYWMtY3lyaWxsaWMiLCJ4LW1hYy11a3JhaW5pYW4i''@;'; put 'put ''XSxuYW1lOiJ4LW1hYy1jeXJpbGxpYyJ9XSxoZWFkaW5nOiJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNoaW5lc2UiLCJjc2diMjMxMiIsImNzaXNvNThnYjIzMTI4MCIsImdiMjMxMiIsImdiXzIzMTIiLCJnYl8yMzEyLTgwIiwiZ2JrIiwi''@;'; put 'put ''aXNvLWlyLTU4IiwieC1nYmsiXSxuYW1lOiJHQksifSx7bGFiZWxzOlsiZ2IxODAzMCJdLG5hbWU6ImdiMTgwMzAifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImJpZzUiLCJiaWc1LWhr''@;'; put 'put ''c2NzIiwiY24tYmlnNSIsImNzYmlnNSIsIngteC1iaWc1Il0sbmFtZToiQmlnNSJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNzZXVjcGtkZm10amFwYW5lc2UiLCJldWMtanAiLCJ4''@;'; put 'put ''LWV1Yy1qcCJdLG5hbWU6IkVVQy1KUCJ9LHtsYWJlbHM6WyJjc2lzbzIwMjJqcCIsImlzby0yMDIyLWpwIl0sbmFtZToiSVNPLTIwMjItSlAifSx7bGFiZWxzOlsiY3NzaGlmdGppcyIsIm1zOTMyIiwibXNfa2FuamkiLCJzaGlmdC1qaXMiLCJzaGlmdF9qaXMiLCJzamlzIiwid2luZG93cy0z''@;'; put 'put ''MWoiLCJ4LXNqaXMiXSxuYW1lOiJTaGlmdF9KSVMifV0saGVhZGluZzoiTGVnYWN5IG11bHRpLWJ5dGUgSmFwYW5lc2UgZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNzZXVja3IiLCJjc2tzYzU2MDExOTg3IiwiZXVjLWtyIiwiaXNvLWlyLTE0OSIsImtvcmVhbiIsImtzX2Nf''@;'; put 'put ''NTYwMS0xOTg3Iiwia3NfY181NjAxLTE5ODkiLCJrc2M1NjAxIiwia3NjXzU2MDEiLCJ3aW5kb3dzLTk0OSJdLG5hbWU6IkVVQy1LUiJ9XSxoZWFkaW5nOiJMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzIn0se2VuY29kaW5nczpbe2xhYmVsczpbImNzaXNvMjAyMmtyIiwiaHot''@;'; put 'put ''Z2ItMjMxMiIsImlzby0yMDIyLWNuIiwiaXNvLTIwMjItY24tZXh0IiwiaXNvLTIwMjIta3IiXSxuYW1lOiJyZXBsYWNlbWVudCJ9LHtsYWJlbHM6WyJ1dGYtMTZiZSJdLG5hbWU6IlVURi0xNkJFIn0se2xhYmVsczpbInV0Zi0xNiIsInV0Zi0xNmxlIl0sbmFtZToiVVRGLTE2TEUifSx7bGFi''@;'; put 'put ''ZWxzOlsieC11c2VyLWRlZmluZWQiXSxuYW1lOiJ4LXVzZXItZGVmaW5lZCJ9XSxoZWFkaW5nOiJMZWdhY3kgbWlzY2VsbGFuZW91cyBlbmNvZGluZ3MifV0scT17fTtVLmZvckVhY2goZnVuY3Rpb24oSWUpe0llLmVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKFhlKXtYZS5sYWJlbHMuZm9y''@;'; put 'put ''RWFjaChmdW5jdGlvbih0dCl7cVt0dF09WGV9KX0pfSk7dmFyIGIsSj17fSxlZT17fTtmdW5jdGlvbiByZShJZSxYZSl7cmV0dXJuIFhlJiZYZVtJZV18fG51bGx9ZnVuY3Rpb24gaWUoSWUsWGUpe3ZhciB0dD1YZS5pbmRleE9mKEllKTtyZXR1cm4tMT09PXR0P251bGw6dHR9ZnVuY3Rpb24g''@;'; put 'put ''dWUoSWUpe2lmKCEoImVuY29kaW5nLWluZGV4ZXMiaW4gb2UpKXRocm93IEVycm9yKCJJbmRleGVzIG1pc3NpbmcuIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBmaXJzdD8iKTtyZXR1cm4gb2VbImVuY29kaW5nLWluZGV4ZXMiXVtJZV19dmFyIEYsSD0i''@;'; put 'put ''dXRmLTgiO2Z1bmN0aW9uIGcoSWUsWGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGcpKXRocm93IFR5cGVFcnJvcigiQ2FsbGVkIGFzIGEgZnVuY3Rpb24uIERpZCB5b3UgZm9yZ2V0ICduZXcnPyIpO0llPXZvaWQgMCE9PUllP1N0cmluZyhJZSk6SCxYZT1NKFhlKSx0aGlzLl9lbmNvZGluZz1u''@;'; put 'put ''dWxsLHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9pZ25vcmVCT009ITEsdGhpcy5fQk9Nc2Vlbj0hMSx0aGlzLl9lcnJvcl9tb2RlPSJyZXBsYWNlbWVudCIsdGhpcy5fZG9fbm90X2ZsdXNoPSExO3ZhciB0dD1ZKEllKTtpZihudWxsPT09dHR8fCJyZXBsYWNlbWVudCI9PT10dC5uYW1lKXRo''@;'; put 'put ''cm93IFJhbmdlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrSWUpO2lmKCFlZVt0dC5uYW1lXSl0aHJvdyBFcnJvcigiRGVjb2RlciBub3QgcHJlc2VudC4gRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzIGZpcnN0PyIpO3ZhciBaZT10aGlzO3JldHVybiBa''@;'; put 'put ''ZS5fZW5jb2Rpbmc9dHQsWGUuZmF0YWwmJihaZS5fZXJyb3JfbW9kZT0iZmF0YWwiKSxYZS5pZ25vcmVCT00mJihaZS5faWdub3JlQk9NPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPVplLl9lbmNvZGluZy5uYW1lLnRvTG93ZXJDYXNlKCksdGhpcy5mYXRhbD0i''@;'; put 'put ''ZmF0YWwiPT09WmUuX2Vycm9yX21vZGUsdGhpcy5pZ25vcmVCT009WmUuX2lnbm9yZUJPTSksWmV9ZnVuY3Rpb24gQyhJZSxYZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgQykpdGhyb3cgVHlwZUVycm9yKCJDYWxsZWQgYXMgYSBmdW5jdGlvbi4gRGlkIHlvdSBmb3JnZXQgJ25ldyc/Iik7aWYo''@;'; put 'put ''WGU9TShYZSksdGhpcy5fZW5jb2Rpbmc9bnVsbCx0aGlzLl9lbmNvZGVyPW51bGwsdGhpcy5fZG9fbm90X2ZsdXNoPSExLHRoaXMuX2ZhdGFsPVhlLmZhdGFsPyJmYXRhbCI6InJlcGxhY2VtZW50IixYZS5OT05TVEFOREFSRF9hbGxvd0xlZ2FjeUVuY29kaW5nKXt2YXIgWmU9WShJZT12b2lk''@;'; put 'put ''IDAhPT1JZT9TdHJpbmcoSWUpOkgpO2lmKG51bGw9PT1aZXx8InJlcGxhY2VtZW50Ij09PVplLm5hbWUpdGhyb3cgUmFuZ2VFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitJZSk7aWYoIUpbWmUubmFtZV0pdGhyb3cgRXJyb3IoIkVuY29kZXIgbm90IHByZXNlbnQuIERpZCB5b3UgZm9yZ2V0''@;'; put 'put ''IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcyBmaXJzdD8iKTt0aGlzLl9lbmNvZGluZz1aZX1lbHNlIHRoaXMuX2VuY29kaW5nPVkoInV0Zi04Iiksdm9pZCAwIT09SWUmJiJjb25zb2xlImluIG9lJiZjb25zb2xlLndhcm4oIlRleHRFbmNvZGVyIGNvbnN0cnVjdG9yIGNhbGxlZCB3''@;'; put 'put ''aXRoIGVuY29kaW5nIGxhYmVsLCB3aGljaCBpcyBpZ25vcmVkLiIpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHl8fCh0aGlzLmVuY29kaW5nPXRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKSksdGhpc31mdW5jdGlvbiBrKEllKXt2YXIgWGU9SWUuZmF0YWwsdHQ9MCxaZT0w''@;'; put 'put ''LGN0PTAsa2U9MTI4LEFlPTE5MTt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oamUsaXQpe2lmKGl0PT09RCYmMCE9PWN0KXJldHVybiBjdD0wLHooWGUpO2lmKGl0PT09RClyZXR1cm4gRTtpZigwPT09Y3Qpe2lmKHgoaXQsMCwxMjcpKXJldHVybiBpdDtpZih4KGl0LDE5NCwyMjMpKWN0PTEsdHQ9''@;'; put 'put ''MzEmaXQ7ZWxzZSBpZih4KGl0LDIyNCwyMzkpKTIyND09PWl0JiYoa2U9MTYwKSwyMzc9PT1pdCYmKEFlPTE1OSksY3Q9Mix0dD0xNSZpdDtlbHNle2lmKCF4KGl0LDI0MCwyNDQpKXJldHVybiB6KFhlKTsyNDA9PT1pdCYmKGtlPTE0NCksMjQ0PT09aXQmJihBZT0xNDMpLGN0PTMsdHQ9NyZp''@;'; put 'put ''dH1yZXR1cm4gbnVsbH1pZigheChpdCxrZSxBZSkpcmV0dXJuIHR0PWN0PVplPTAsa2U9MTI4LEFlPTE5MSxqZS5wcmVwZW5kKGl0KSx6KFhlKTtpZihrZT0xMjgsQWU9MTkxLHR0PXR0PDw2fDYzJml0LChaZSs9MSkhPT1jdClyZXR1cm4gbnVsbDt2YXIgc3Q9dHQ7cmV0dXJuIHR0PWN0PVpl''@;'; put 'put ''PTAsc3R9fWZ1bmN0aW9uIF8oSWUpe3RoaXMuaGFuZGxlcj1mdW5jdGlvbih0dCxaZSl7aWYoWmU9PT1EKXJldHVybiBFO2lmKEcoWmUpKXJldHVybiBaZTt2YXIgY3Qsa2U7eChaZSwxMjgsMjA0Nyk/KGN0PTEsa2U9MTkyKTp4KFplLDIwNDgsNjU1MzUpPyhjdD0yLGtlPTIyNCk6eChaZSw2''@;'; put 'put ''NTUzNiwxMTE0MTExKSYmKGN0PTMsa2U9MjQwKTtmb3IodmFyIEFlPVsoWmU+PjYqY3QpK2tlXTtjdD4wOylBZS5wdXNoKDEyOHw2MyZaZT4+NiooY3QtMSkpLGN0LT0xO3JldHVybiBBZX19ZnVuY3Rpb24gcChJZSxYZSl7dmFyIHR0PVhlLmZhdGFsO3RoaXMuaGFuZGxlcj1mdW5jdGlvbiha''@;'; put 'put ''ZSxjdCl7aWYoY3Q9PT1EKXJldHVybiBFO2lmKGooY3QpKXJldHVybiBjdDt2YXIga2U9SWVbY3QtMTI4XTtyZXR1cm4gbnVsbD09PWtlP3oodHQpOmtlfX1mdW5jdGlvbiB3KEllLFhlKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oWmUsY3Qpe2lmKGN0PT09RClyZXR1cm4gRTtpZihHKGN0KSly''@;'; put 'put ''ZXR1cm4gY3Q7dmFyIGtlPWllKGN0LEllKTtyZXR1cm4gbnVsbD09PWtlJiZOKGN0KSxrZSsxMjh9fWZ1bmN0aW9uIEsoSWUpe3ZhciBYZT1JZS5mYXRhbCx0dD0wLFplPTAsY3Q9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oa2UsQWUpe2lmKEFlPT09RCYmMD09PXR0JiYwPT09WmUmJjA9PT1j''@;'; put 'put ''dClyZXR1cm4gRTt2YXIgamU7aWYoQWU9PT1EJiYoMCE9PXR0fHwwIT09WmV8fDAhPT1jdCkmJih0dD0wLFplPTAsY3Q9MCx6KFhlKSksMCE9PWN0KXtqZT1udWxsLHgoQWUsNDgsNTcpJiYoamU9ZnVuY3Rpb24gbGUoSWUpe2lmKEllPjM5NDE5JiZJZTwxODllM3x8SWU+MTIzNzU3NSlyZXR1''@;'; put 'put ''cm4gbnVsbDtpZig3NDU3PT09SWUpcmV0dXJuIDU5MzM1O3ZhciBjdCxYZT0wLHR0PTAsWmU9dWUoImdiMTgwMzAtcmFuZ2VzIik7Zm9yKGN0PTA7Y3Q8WmUubGVuZ3RoOysrY3Qpe3ZhciBrZT1aZVtjdF07aWYoIShrZVswXTw9SWUpKWJyZWFrO1hlPWtlWzBdLHR0PWtlWzFdfXJldHVybiB0''@;'; put 'put ''dCtJZS1YZX0oMTAqKDEyNiooMTAqKHR0LTEyOSkrWmUtNDgpK2N0LTEyOSkrQWUtNDgpKTt2YXIgaXQ9W1plLGN0LEFlXTtyZXR1cm4gdHQ9MCxaZT0wLGN0PTAsbnVsbD09PWplPyhrZS5wcmVwZW5kKGl0KSx6KFhlKSk6amV9aWYoMCE9PVplKXJldHVybiB4KEFlLDEyOSwyNTQpPyhjdD1B''@;'; put 'put ''ZSxudWxsKTooa2UucHJlcGVuZChbWmUsQWVdKSx0dD0wLFplPTAseihYZSkpO2lmKDAhPT10dCl7aWYoeChBZSw0OCw1NykpcmV0dXJuIFplPUFlLG51bGw7dmFyIHN0PXR0LHh0PW51bGw7dHQ9MDt2YXIgRnQ9QWU8MTI3PzY0OjY1O3JldHVybih4KEFlLDY0LDEyNil8fHgoQWUsMTI4LDI1''@;'; put 'put ''NCkpJiYoeHQ9MTkwKihzdC0xMjkpKyhBZS1GdCkpLG51bGw9PT0oamU9bnVsbD09PXh0P251bGw6cmUoeHQsdWUoImdiMTgwMzAiKSkpJiZqKEFlKSYma2UucHJlcGVuZChBZSksbnVsbD09PWplP3ooWGUpOmplfXJldHVybiBqKEFlKT9BZToxMjg9PT1BZT84MzY0OngoQWUsMTI5LDI1NCk/''@;'; put 'put ''KHR0PUFlLG51bGwpOnooWGUpfX1mdW5jdGlvbiB0ZShJZSxYZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKFplLGN0KXtpZihjdD09PUQpcmV0dXJuIEU7aWYoRyhjdCkpcmV0dXJuIGN0O2lmKDU4ODUzPT09Y3QpcmV0dXJuIE4oY3QpO2lmKFhlJiY4MzY0PT09Y3QpcmV0dXJuIDEyODt2YXIg''@;'; put 'put ''a2U9aWUoY3QsdWUoImdiMTgwMzAiKSk7aWYobnVsbCE9PWtlKXt2YXIgamU9a2UlMTkwO3JldHVybltzZShrZS8xOTApKzEyOSxqZSsoamU8NjM/NjQ6NjUpXX1pZihYZSlyZXR1cm4gTihjdCk7a2U9ZnVuY3Rpb24gYWUoSWUpe2lmKDU5MzM1PT09SWUpcmV0dXJuIDc0NTc7dmFyIGN0LFhl''@;'; put 'put ''PTAsdHQ9MCxaZT11ZSgiZ2IxODAzMC1yYW5nZXMiKTtmb3IoY3Q9MDtjdDxaZS5sZW5ndGg7KytjdCl7dmFyIGtlPVplW2N0XTtpZighKGtlWzFdPD1JZSkpYnJlYWs7WGU9a2VbMV0sdHQ9a2VbMF19cmV0dXJuIHR0K0llLVhlfShjdCk7dmFyIHN0PXNlKGtlLzEwLzEyNi8xMCkseHQ9c2Uo''@;'; put 'put ''KGtlLT0xMCpzdCoxMjYqMTApLzEwLzEyNiksRnQ9c2UoKGtlLT0xMCp4dCoxMjYpLzEwKTtyZXR1cm5bc3QrMTI5LHh0KzQ4LEZ0KzEyOSxrZS0xMCpGdCs0OF19fWZ1bmN0aW9uIGNlKEllKXt2YXIgWGU9SWUuZmF0YWwsdHQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oWmUsY3Qpe2lmKGN0''@;'; put 'put ''PT09RCYmMCE9PXR0KXJldHVybiB0dD0wLHooWGUpO2lmKGN0PT09RCYmMD09PXR0KXJldHVybiBFO2lmKDAhPT10dCl7dmFyIGtlPXR0LEFlPW51bGw7dHQ9MDt2YXIgamU9Y3Q8MTI3PzY0Ojk4O3N3aXRjaCgoeChjdCw2NCwxMjYpfHx4KGN0LDE2MSwyNTQpKSYmKEFlPTE1Nyooa2UtMTI5''@;'; put 'put ''KSsoY3QtamUpKSxBZSl7Y2FzZSAxMTMzOnJldHVyblsyMDIsNzcyXTtjYXNlIDExMzU6cmV0dXJuWzIwMiw3ODBdO2Nhc2UgMTE2NDpyZXR1cm5bMjM0LDc3Ml07Y2FzZSAxMTY2OnJldHVyblsyMzQsNzgwXX12YXIgaXQ9bnVsbD09PUFlP251bGw6cmUoQWUsdWUoImJpZzUiKSk7cmV0dXJu''@;'; put 'put ''IG51bGw9PT1pdCYmaihjdCkmJlplLnByZXBlbmQoY3QpLG51bGw9PT1pdD96KFhlKTppdH1yZXR1cm4gaihjdCk/Y3Q6eChjdCwxMjksMjU0KT8odHQ9Y3QsbnVsbCk6eihYZSl9fWZ1bmN0aW9uIGhlKEllKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24odHQsWmUpe2lmKFplPT09RClyZXR1cm4g''@;'; put 'put ''RTtpZihHKFplKSlyZXR1cm4gWmU7dmFyIGN0PWZ1bmN0aW9uIEEoSWUpe3ZhciBYZT1GPUZ8fHVlKCJiaWc1IikubWFwKGZ1bmN0aW9uKHR0LFplKXtyZXR1cm4gWmU8NTAyND9udWxsOnR0fSk7cmV0dXJuIDk1NTI9PT1JZXx8OTU2Nj09PUllfHw5NTY5PT09SWV8fDk1Nzg9PT1JZXx8MjEz''@;'; put 'put ''MTM9PT1JZXx8MjEzMTc9PT1JZT9YZS5sYXN0SW5kZXhPZihJZSk6aWUoSWUsWGUpfShaZSk7aWYobnVsbD09PWN0KXJldHVybiBOKFplKTt2YXIga2U9c2UoY3QvMTU3KSsxMjk7aWYoa2U8MTYxKXJldHVybiBOKFplKTt2YXIgQWU9Y3QlMTU3O3JldHVybltrZSxBZSsoQWU8NjM/NjQ6OTgp''@;'; put 'put ''XX19ZnVuY3Rpb24gU2UoSWUpe3ZhciBYZT1JZS5mYXRhbCx0dD0hMSxaZT0wO3RoaXMuaGFuZGxlcj1mdW5jdGlvbihjdCxrZSl7aWYoa2U9PT1EJiYwIT09WmUpcmV0dXJuIFplPTAseihYZSk7aWYoa2U9PT1EJiYwPT09WmUpcmV0dXJuIEU7aWYoMTQyPT09WmUmJngoa2UsMTYxLDIyMykp''@;'; put 'put ''cmV0dXJuIFplPTAsNjUyMTYra2U7aWYoMTQzPT09WmUmJngoa2UsMTYxLDI1NCkpcmV0dXJuIHR0PSEwLFplPWtlLG51bGw7aWYoMCE9PVplKXt2YXIgQWU9WmU7WmU9MDt2YXIgamU9bnVsbDtyZXR1cm4geChBZSwxNjEsMjU0KSYmeChrZSwxNjEsMjU0KSYmKGplPXJlKDk0KihBZS0xNjEp''@;'; put 'put ''KyhrZS0xNjEpLHVlKHR0PyJqaXMwMjEyIjoiamlzMDIwOCIpKSksdHQ9ITEseChrZSwxNjEsMjU0KXx8Y3QucHJlcGVuZChrZSksbnVsbD09PWplP3ooWGUpOmplfXJldHVybiBqKGtlKT9rZToxNDI9PT1rZXx8MTQzPT09a2V8fHgoa2UsMTYxLDI1NCk/KFplPWtlLG51bGwpOnooWGUpfX1m''@;'; put 'put ''dW5jdGlvbiBMZShJZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LFplKXtpZihaZT09PUQpcmV0dXJuIEU7aWYoRyhaZSkpcmV0dXJuIFplO2lmKDE2NT09PVplKXJldHVybiA5MjtpZig4MjU0PT09WmUpcmV0dXJuIDEyNjtpZih4KFplLDY1Mzc3LDY1NDM5KSlyZXR1cm5bMTQyLFplLTY1''@;'; put 'put ''Mzc3KzE2MV07ODcyMj09PVplJiYoWmU9NjUyOTMpO3ZhciBjdD1pZShaZSx1ZSgiamlzMDIwOCIpKTtyZXR1cm4gbnVsbD09PWN0P04oWmUpOltzZShjdC85NCkrMTYxLGN0JTk0KzE2MV19fWZ1bmN0aW9uIEhlKEllKXt2YXIgWGU9SWUuZmF0YWwsWmU9MCxrZT0wLEFlPSExO3RoaXMuaGFu''@;'; put 'put ''ZGxlcj1mdW5jdGlvbihqZSxpdCl7c3dpdGNoKFplKXtkZWZhdWx0OmNhc2UgMDpyZXR1cm4gMjc9PT1pdD8oWmU9NSxudWxsKTp4KGl0LDAsMTI3KSYmMTQhPT1pdCYmMTUhPT1pdCYmMjchPT1pdD8oQWU9ITEsaXQpOml0PT09RD9FOihBZT0hMSx6KFhlKSk7Y2FzZSAxOnJldHVybiAyNz09''@;'; put 'put ''PWl0PyhaZT01LG51bGwpOjkyPT09aXQ/KEFlPSExLDE2NSk6MTI2PT09aXQ/KEFlPSExLDgyNTQpOngoaXQsMCwxMjcpJiYxNCE9PWl0JiYxNSE9PWl0JiYyNyE9PWl0JiY5MiE9PWl0JiYxMjYhPT1pdD8oQWU9ITEsaXQpOml0PT09RD9FOihBZT0hMSx6KFhlKSk7Y2FzZSAyOnJldHVybiAy''@;'; put 'put ''Nz09PWl0PyhaZT01LG51bGwpOngoaXQsMzMsOTUpPyhBZT0hMSw2NTM0NCtpdCk6aXQ9PT1EP0U6KEFlPSExLHooWGUpKTtjYXNlIDM6cmV0dXJuIDI3PT09aXQ/KFplPTUsbnVsbCk6eChpdCwzMywxMjYpPyhBZT0hMSxrZT1pdCxaZT00LG51bGwpOml0PT09RD9FOihBZT0hMSx6KFhlKSk7''@;'; put 'put ''Y2FzZSA0OmlmKDI3PT09aXQpcmV0dXJuIFplPTUseihYZSk7aWYoeChpdCwzMywxMjYpKXtaZT0zO3ZhciB4dD1yZSg5NCooa2UtMzMpK2l0LTMzLHVlKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09eHQ/eihYZSk6eHR9cmV0dXJuIGl0PT09RD8oWmU9MyxqZS5wcmVwZW5kKGl0KSx6KFhl''@;'; put 'put ''KSk6KFplPTMseihYZSkpO2Nhc2UgNTpyZXR1cm4gMzY9PT1pdHx8NDA9PT1pdD8oa2U9aXQsWmU9NixudWxsKTooamUucHJlcGVuZChpdCksQWU9ITEsWmU9MCx6KFhlKSk7Y2FzZSA2OnZhciBGdD1rZTtrZT0wO3ZhciBPdD1udWxsO2lmKDQwPT09RnQmJjY2PT09aXQmJihPdD0wKSw0MD09''@;'; put 'put ''PUZ0JiY3ND09PWl0JiYoT3Q9MSksNDA9PT1GdCYmNzM9PT1pdCYmKE90PTIpLDM2PT09RnQmJig2ND09PWl0fHw2Nj09PWl0KSYmKE90PTMpLG51bGwhPT1PdCl7WmU9WmU9T3Q7dmFyIEt0PUFlO3JldHVybiBBZT0hMCxLdD96KFhlKTpudWxsfXJldHVybiBqZS5wcmVwZW5kKFtGdCxpdF0p''@;'; put 'put ''LEFlPSExLFplPTAseihYZSl9fX1mdW5jdGlvbiB4ZShJZSl7dmFyIFplPTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGN0LGtlKXtpZihrZT09PUQmJjAhPT1aZSlyZXR1cm4gY3QucHJlcGVuZChrZSksWmU9MCxbMjcsNDAsNjZdO2lmKGtlPT09RCYmMD09PVplKXJldHVybiBFO2lmKCEoMCE9''@;'; put 'put ''PVplJiYxIT09WmV8fDE0IT09a2UmJjE1IT09a2UmJjI3IT09a2UpKXJldHVybiBOKDY1NTMzKTtpZigwPT09WmUmJkcoa2UpKXJldHVybiBrZTtpZigxPT09WmUmJihHKGtlKSYmOTIhPT1rZSYmMTI2IT09a2V8fDE2NT09a2V8fDgyNTQ9PWtlKSl7aWYoRyhrZSkpcmV0dXJuIGtlO2lmKDE2''@;'; put 'put ''NT09PWtlKXJldHVybiA5MjtpZig4MjU0PT09a2UpcmV0dXJuIDEyNn1pZihHKGtlKSYmMCE9PVplKXJldHVybiBjdC5wcmVwZW5kKGtlKSxaZT0wLFsyNyw0MCw2Nl07aWYoKDE2NT09PWtlfHw4MjU0PT09a2UpJiYxIT09WmUpcmV0dXJuIGN0LnByZXBlbmQoa2UpLFplPTEsWzI3LDQwLDc0''@;'; put 'put ''XTs4NzIyPT09a2UmJihrZT02NTI5Myk7dmFyIEFlPWllKGtlLHVlKCJqaXMwMjA4IikpO3JldHVybiBudWxsPT09QWU/TihrZSk6MiE9PVplPyhjdC5wcmVwZW5kKGtlKSxaZT0yLFsyNywzNiw2Nl0pOltzZShBZS85NCkrMzMsQWUlOTQrMzNdfX1mdW5jdGlvbiBEZShJZSl7dmFyIFhlPUll''@;'; put 'put ''LmZhdGFsLHR0PTA7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKFplLGN0KXtpZihjdD09PUQmJjAhPT10dClyZXR1cm4gdHQ9MCx6KFhlKTtpZihjdD09PUQmJjA9PT10dClyZXR1cm4gRTtpZigwIT09dHQpe3ZhciBrZT10dCxBZT1udWxsO3R0PTA7dmFyIGplPWN0PDEyNz82NDo2NSxpdD1rZTwx''@;'; put 'put ''NjA/MTI5OjE5MztpZigoeChjdCw2NCwxMjYpfHx4KGN0LDEyOCwyNTIpKSYmKEFlPTE4OCooa2UtaXQpK2N0LWplKSx4KEFlLDg4MzYsMTA3MTUpKXJldHVybiA0ODUwOCtBZTt2YXIgc3Q9bnVsbD09PUFlP251bGw6cmUoQWUsdWUoImppczAyMDgiKSk7cmV0dXJuIG51bGw9PT1zdCYmaihj''@;'; put 'put ''dCkmJlplLnByZXBlbmQoY3QpLG51bGw9PT1zdD96KFhlKTpzdH1yZXR1cm4gaihjdCl8fDEyOD09PWN0P2N0OngoY3QsMTYxLDIyMyk/NjUyMTYrY3Q6eChjdCwxMjksMTU5KXx8eChjdCwyMjQsMjUyKT8odHQ9Y3QsbnVsbCk6eihYZSl9fWZ1bmN0aW9uIEJlKEllKXt0aGlzLmhhbmRsZXI9''@;'; put 'put ''ZnVuY3Rpb24odHQsWmUpe2lmKFplPT09RClyZXR1cm4gRTtpZihHKFplKXx8MTI4PT09WmUpcmV0dXJuIFplO2lmKDE2NT09PVplKXJldHVybiA5MjtpZig4MjU0PT09WmUpcmV0dXJuIDEyNjtpZih4KFplLDY1Mzc3LDY1NDM5KSlyZXR1cm4gWmUtNjUzNzcrMTYxOzg3MjI9PT1aZSYmKFpl''@;'; put 'put ''PTY1MjkzKTt2YXIgY3Q9ZnVuY3Rpb24gVyhJZSl7cmV0dXJuKGI9Ynx8dWUoImppczAyMDgiKS5tYXAoZnVuY3Rpb24odHQsWmUpe3JldHVybiB4KFplLDgyNzIsODgzNSk/bnVsbDp0dH0pKS5pbmRleE9mKEllKX0oWmUpO2lmKG51bGw9PT1jdClyZXR1cm4gTihaZSk7dmFyIGtlPXNlKGN0''@;'; put 'put ''LzE4OCksamU9Y3QlMTg4O3JldHVybltrZSsoa2U8MzE/MTI5OjE5MyksamUrKGplPDYzPzY0OjY1KV19fWZ1bmN0aW9uIEdlKEllKXt2YXIgWGU9SWUuZmF0YWwsdHQ9MDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oWmUsY3Qpe2lmKGN0PT09RCYmMCE9PXR0KXJldHVybiB0dD0wLHooWGUpO2lm''@;'; put 'put ''KGN0PT09RCYmMD09PXR0KXJldHVybiBFO2lmKDAhPT10dCl7dmFyIGtlPXR0LEFlPW51bGw7dHQ9MCx4KGN0LDY1LDI1NCkmJihBZT0xOTAqKGtlLTEyOSkrKGN0LTY1KSk7dmFyIGplPW51bGw9PT1BZT9udWxsOnJlKEFlLHVlKCJldWMta3IiKSk7cmV0dXJuIG51bGw9PT1BZSYmaihjdCkm''@;'; put 'put ''JlplLnByZXBlbmQoY3QpLG51bGw9PT1qZT96KFhlKTpqZX1yZXR1cm4gaihjdCk/Y3Q6eChjdCwxMjksMjU0KT8odHQ9Y3QsbnVsbCk6eihYZSl9fWZ1bmN0aW9uIFVlKEllKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24odHQsWmUpe2lmKFplPT09RClyZXR1cm4gRTtpZihHKFplKSlyZXR1cm4g''@;'; put 'put ''WmU7dmFyIGN0PWllKFplLHVlKCJldWMta3IiKSk7cmV0dXJuIG51bGw9PT1jdD9OKFplKTpbc2UoY3QvMTkwKSsxMjksY3QlMTkwKzY1XX19ZnVuY3Rpb24gcWUoSWUsWGUpe3ZhciB0dD1JZT4+OCxaZT0yNTUmSWU7cmV0dXJuIFhlP1t0dCxaZV06W1plLHR0XX1mdW5jdGlvbiBvdChJZSxY''@;'; put 'put ''ZSl7dmFyIHR0PVhlLmZhdGFsLFplPW51bGwsY3Q9bnVsbDt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oa2UsQWUpe2lmKEFlPT09RCYmKG51bGwhPT1aZXx8bnVsbCE9PWN0KSlyZXR1cm4geih0dCk7aWYoQWU9PT1EJiZudWxsPT09WmUmJm51bGw9PT1jdClyZXR1cm4gRTtpZihudWxsPT09WmUp''@;'; put 'put ''cmV0dXJuIFplPUFlLG51bGw7dmFyIGplO2lmKGplPUllPyhaZTw8OCkrQWU6KEFlPDw4KStaZSxaZT1udWxsLG51bGwhPT1jdCl7dmFyIGl0PWN0O3JldHVybiBjdD1udWxsLHgoamUsNTYzMjAsNTczNDMpPzY1NTM2KzEwMjQqKGl0LTU1Mjk2KSsoamUtNTYzMjApOihrZS5wcmVwZW5kKHFl''@;'; put 'put ''KGplLEllKSkseih0dCkpfXJldHVybiB4KGplLDU1Mjk2LDU2MzE5KT8oY3Q9amUsbnVsbCk6eChqZSw1NjMyMCw1NzM0Myk/eih0dCk6amV9fWZ1bmN0aW9uIEZlKEllLFhlKXt0aGlzLmhhbmRsZXI9ZnVuY3Rpb24oWmUsY3Qpe2lmKGN0PT09RClyZXR1cm4gRTtpZih4KGN0LDAsNjU1MzUp''@;'; put 'put ''KXJldHVybiBxZShjdCxJZSk7dmFyIGtlPXFlKDU1Mjk2KyhjdC02NTUzNj4+MTApLEllKSxBZT1xZSg1NjMyMCsoY3QtNjU1MzYmMTAyMyksSWUpO3JldHVybiBrZS5jb25jYXQoQWUpfX1mdW5jdGlvbiB3ZShJZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LFplKXtyZXR1cm4gWmU9PT1E''@;'; put 'put ''P0U6aihaZSk/WmU6NjMzNjArWmUtMTI4fX1mdW5jdGlvbiBFZShJZSl7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKHR0LFplKXtyZXR1cm4gWmU9PT1EP0U6RyhaZSk/WmU6eChaZSw2MzM2MCw2MzQ4Nyk/WmUtNjMzNjArMTI4Ok4oWmUpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkmJihPYmplY3Qu''@;'; put 'put ''ZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsImVuY29kaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuY29kaW5nLm5hbWUudG9Mb3dlckNhc2UoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZy5wcm90b3R5cGUsImZhdGFsIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuImZh''@;'; put 'put ''dGFsIj09PXRoaXMuX2Vycm9yX21vZGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGcucHJvdG90eXBlLCJpZ25vcmVCT00iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWdub3JlQk9NfX0pKSxnLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24oWGUsdHQpe3ZhciBaZTtaZT0ib2Jq''@;'; put 'put ''ZWN0Ij09dHlwZW9mIFhlJiZYZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP25ldyBVaW50OEFycmF5KFhlKToib2JqZWN0Ij09dHlwZW9mIFhlJiYiYnVmZmVyImluIFhlJiZYZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uZXcgVWludDhBcnJheShYZS5idWZmZXIsWGUuYnl0ZU9m''@;'; put 'put ''ZnNldCxYZS5ieXRlTGVuZ3RoKTpuZXcgVWludDhBcnJheSgwKSx0dD1NKHR0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9kZWNvZGVyPWVlW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDoiZmF0YWwiPT09dGhpcy5fZXJyb3JfbW9kZX0pLHRoaXMuX0JPTXNlZW49ITEpLHRoaXMu''@;'; put 'put ''X2RvX25vdF9mbHVzaD0hIXR0LnN0cmVhbTtmb3IodmFyIEFlLGN0PW5ldyBUKFplKSxrZT1bXTs7KXt2YXIgamU9Y3QucmVhZCgpO2lmKGplPT09RHx8KEFlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihjdCxqZSkpPT09RSlicmVhaztudWxsIT09QWUmJihBcnJheS5pc0FycmF5KEFlKT9rZS5w''@;'; put 'put ''dXNoLmFwcGx5KGtlLEFlKTprZS5wdXNoKEFlKSl9aWYoIXRoaXMuX2RvX25vdF9mbHVzaCl7ZG97aWYoKEFlPXRoaXMuX2RlY29kZXIuaGFuZGxlcihjdCxjdC5yZWFkKCkpKT09PUUpYnJlYWs7bnVsbCE9PUFlJiYoQXJyYXkuaXNBcnJheShBZSk/a2UucHVzaC5hcHBseShrZSxBZSk6a2Uu''@;'; put 'put ''cHVzaChBZSkpfXdoaWxlKCFjdC5lbmRPZlN0cmVhbSgpKTt0aGlzLl9kZWNvZGVyPW51bGx9cmV0dXJuIGZ1bmN0aW9uIGl0KHN0KXtyZXR1cm4gZnVuY3Rpb24gbShJZSxYZSl7cmV0dXJuLTEhPT1JZS5pbmRleE9mKFhlKX0oWyJVVEYtOCIsIlVURi0xNkxFIiwiVVRGLTE2QkUiXSx0aGlz''@;'; put 'put ''Ll9lbmNvZGluZy5uYW1lKSYmIXRoaXMuX2lnbm9yZUJPTSYmIXRoaXMuX0JPTXNlZW4mJihzdC5sZW5ndGg+MCYmNjUyNzk9PT1zdFswXT8odGhpcy5fQk9Nc2Vlbj0hMCxzdC5zaGlmdCgpKTpzdC5sZW5ndGg+MCYmKHRoaXMuX0JPTXNlZW49ITApKSxmdW5jdGlvbiBJKEllKXtmb3IodmFy''@;'; put 'put ''IFhlPSIiLHR0PTA7dHQ8SWUubGVuZ3RoOysrdHQpe3ZhciBaZT1JZVt0dF07WmU8PTY1NTM1P1hlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFplKTooWmUtPTY1NTM2LFhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhaZT4+MTApLDU2MzIwKygxMDIzJlplKSkpfXJldHVybiBYZX0oc3Qp''@;'; put 'put ''fS5jYWxsKHRoaXMsa2UpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShDLnByb3RvdHlwZSwiZW5jb2RpbmciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5jb2RpbmcubmFtZS50b0xvd2VyQ2FzZSgpfX0pLEMucHJvdG90eXBlLmVuY29kZT1m''@;'; put 'put ''dW5jdGlvbihYZSx0dCl7WGU9dm9pZCAwPT09WGU/IiI6U3RyaW5nKFhlKSx0dD1NKHR0KSx0aGlzLl9kb19ub3RfZmx1c2h8fCh0aGlzLl9lbmNvZGVyPUpbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiJmYXRhbCI9PT10aGlzLl9mYXRhbH0pKSx0aGlzLl9kb19ub3RfZmx1c2g9ISF0''@;'; put 'put ''dC5zdHJlYW07Zm9yKHZhciBrZSxaZT1uZXcgVChmdW5jdGlvbiBPKEllKXtmb3IodmFyIFhlPVN0cmluZyhJZSksdHQ9WGUubGVuZ3RoLFplPTAsY3Q9W107WmU8dHQ7KXt2YXIga2U9WGUuY2hhckNvZGVBdChaZSk7aWYoa2U8NTUyOTZ8fGtlPjU3MzQzKWN0LnB1c2goa2UpO2Vsc2UgaWYo''@;'; put 'put ''NTYzMjA8PWtlJiZrZTw9NTczNDMpY3QucHVzaCg2NTUzMyk7ZWxzZSBpZig1NTI5Njw9a2UmJmtlPD01NjMxOSlpZihaZT09PXR0LTEpY3QucHVzaCg2NTUzMyk7ZWxzZXt2YXIgQWU9WGUuY2hhckNvZGVBdChaZSsxKTs1NjMyMDw9QWUmJkFlPD01NzM0Mz8oY3QucHVzaCg2NTUzNisoKDEw''@;'; put 'put ''MjMma2UpPDwxMCkrKDEwMjMmQWUpKSxaZSs9MSk6Y3QucHVzaCg2NTUzMyl9WmUrPTF9cmV0dXJuIGN0fShYZSkpLGN0PVtdOzspe3ZhciBBZT1aZS5yZWFkKCk7aWYoQWU9PT1EfHwoa2U9dGhpcy5fZW5jb2Rlci5oYW5kbGVyKFplLEFlKSk9PT1FKWJyZWFrO0FycmF5LmlzQXJyYXkoa2Up''@;'; put 'put ''P2N0LnB1c2guYXBwbHkoY3Qsa2UpOmN0LnB1c2goa2UpfWlmKCF0aGlzLl9kb19ub3RfZmx1c2gpe2Zvcig7KGtlPXRoaXMuX2VuY29kZXIuaGFuZGxlcihaZSxaZS5yZWFkKCkpKSE9PUU7KUFycmF5LmlzQXJyYXkoa2UpP2N0LnB1c2guYXBwbHkoY3Qsa2UpOmN0LnB1c2goa2UpO3RoaXMu''@;'; put 'put ''X2VuY29kZXI9bnVsbH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoY3QpfSxKWyJVVEYtOCJdPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IF8oSWUpfSxlZVsiVVRGLTgiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBrKEllKX0sImVuY29kaW5nLWluZGV4ZXMiaW4gb2UmJlUuZm9yRWFjaChmdW5j''@;'; put 'put ''dGlvbihJZSl7IkxlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MiPT09SWUuaGVhZGluZyYmSWUuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oWGUpe3ZhciB0dD1YZS5uYW1lLFplPXVlKHR0LnRvTG93ZXJDYXNlKCkpO2VlW3R0XT1mdW5jdGlvbihjdCl7cmV0dXJuIG5ldyBwKFplLGN0''@;'; put 'put ''KX0sSlt0dF09ZnVuY3Rpb24oY3Qpe3JldHVybiBuZXcgdyhaZSxjdCl9fSl9KSxlZS5HQks9ZnVuY3Rpb24oSWUpe3JldHVybiBuZXcgSyhJZSl9LEouR0JLPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IHRlKEllLCEwKX0sSi5nYjE4MDMwPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IHRlKEll''@;'; put 'put ''KX0sZWUuZ2IxODAzMD1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBLKEllKX0sSi5CaWc1PWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IGhlKEllKX0sZWUuQmlnNT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBjZShJZSl9LEpbIkVVQy1KUCJdPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IExlKEll''@;'; put 'put ''KX0sZWVbIkVVQy1KUCJdPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IFNlKEllKX0sSlsiSVNPLTIwMjItSlAiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyB4ZShJZSl9LGVlWyJJU08tMjAyMi1KUCJdPWZ1bmN0aW9uKEllKXtyZXR1cm4gbmV3IEhlKEllKX0sSi5TaGlmdF9KSVM9ZnVuY3Rp''@;'; put 'put ''b24oSWUpe3JldHVybiBuZXcgQmUoSWUpfSxlZS5TaGlmdF9KSVM9ZnVuY3Rpb24oSWUpe3JldHVybiBuZXcgRGUoSWUpfSxKWyJFVUMtS1IiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBVZShJZSl9LGVlWyJFVUMtS1IiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBHZShJZSl9LEpbIlVU''@;'; put 'put ''Ri0xNkJFIl09ZnVuY3Rpb24oSWUpe3JldHVybiBuZXcgRmUoITAsSWUpfSxlZVsiVVRGLTE2QkUiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyBvdCghMCxJZSl9LEpbIlVURi0xNkxFIl09ZnVuY3Rpb24oSWUpe3JldHVybiBuZXcgRmUoITEsSWUpfSxlZVsiVVRGLTE2TEUiXT1mdW5jdGlv''@;'; put 'put ''bihJZSl7cmV0dXJuIG5ldyBvdCghMSxJZSl9LEpbIngtdXNlci1kZWZpbmVkIl09ZnVuY3Rpb24oSWUpe3JldHVybiBuZXcgRWUoSWUpfSxlZVsieC11c2VyLWRlZmluZWQiXT1mdW5jdGlvbihJZSl7cmV0dXJuIG5ldyB3ZShJZSl9LG9lLlRleHRFbmNvZGVyfHwob2UuVGV4dEVuY29kZXI9''@;'; put 'put ''Qyksb2UuVGV4dERlY29kZXJ8fChvZS5UZXh0RGVjb2Rlcj1nKSxRZS5leHBvcnRzJiYoUWUuZXhwb3J0cz17VGV4dEVuY29kZXI6b2UuVGV4dEVuY29kZXIsVGV4dERlY29kZXI6b2UuVGV4dERlY29kZXIsRW5jb2RpbmdJbmRleGVzOm9lWyJlbmNvZGluZy1pbmRleGVzIl19KX0odGhpc3x8''@;'; put 'put ''e30pfSwzMzk4OlFlPT57ZnVuY3Rpb24gUihvZSl7dHJ5e2lmKCFnbG9iYWwubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoe3JldHVybiExfXZhciB4PWdsb2JhbC5sb2NhbFN0b3JhZ2Vbb2VdO3JldHVybiBudWxsIT14JiYidHJ1ZSI9PT1TdHJpbmcoeCkudG9Mb3dlckNhc2UoKX1RZS5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uIE1lKG9lLHgpe2lmKFIoIm5vRGVwcmVjYXRpb24iKSlyZXR1cm4gb2U7dmFyIG09ITE7cmV0dXJuIGZ1bmN0aW9uIHNlKCl7aWYoIW0pe2lmKFIoInRocm93RGVwcmVjYXRpb24iKSl0aHJvdyBuZXcgRXJyb3IoeCk7UigidHJhY2VEZXByZWNhdGlvbiIpP2NvbnNv''@;'; put 'put ''bGUudHJhY2UoeCk6Y29uc29sZS53YXJuKHgpLG09ITB9cmV0dXJuIG9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSwxMjk1NDooUWUsTWUsUik9PnshZnVuY3Rpb24ob2UpeyJ1c2Ugc3RyaWN0IjtvZS5leHBvcnRzLmlzX3VyaT1tLG9lLmV4cG9ydHMuaXNfaHR0cF91cmk9c2Usb2UuZXhw''@;'; put 'put ''b3J0cy5pc19odHRwc191cmk9TSxvZS5leHBvcnRzLmlzX3dlYl91cmk9TyxvZS5leHBvcnRzLmlzVXJpPW0sb2UuZXhwb3J0cy5pc0h0dHBVcmk9c2Usb2UuZXhwb3J0cy5pc0h0dHBzVXJpPU0sb2UuZXhwb3J0cy5pc1dlYlVyaT1PO3ZhciB4PWZ1bmN0aW9uKEkpe3JldHVybiBJLm1hdGNo''@;'; put 'put ''KC8oPzooW146XC8/I10rKTopPyg/OlwvXC8oW15cLz8jXSopKT8oW14/I10qKSg/Olw/KFteI10qKSk/KD86IyguKikpPy8pfTtmdW5jdGlvbiBtKEkpe2lmKEkmJiEvW15hLXowLTlcOlwvXD9cI1xbXF1cQFwhXCRcJlwnXChcKVwqXCtcLFw7XD1cLlwtXF9cflwlXS9pLnRlc3QoSSkmJiEv''@;'; put 'put ''JVteMC05YS1mXS9pLnRlc3QoSSkmJiEvJVswLTlhLWZdKDo/W14wLTlhLWZdfCQpL2kudGVzdChJKSl7dmFyIGosRCxULEUseixHPSIiLE49IiI7aWYoRD0oaj14KEkpKVsyXSxUPWpbM10sRT1qWzRdLHo9als1XSwoRz1qWzFdKSYmRy5sZW5ndGgmJlQubGVuZ3RoPj0wKXtpZihEJiZELmxl''@;'; put 'put ''bmd0aCl7aWYoMCE9PVQubGVuZ3RoJiYhL15cLy8udGVzdChUKSlyZXR1cm59ZWxzZSBpZigvXlwvXC8vLnRlc3QoVCkpcmV0dXJuO2lmKC9eW2Etel1bYS16MC05XCtcLVwuXSokLy50ZXN0KEcudG9Mb3dlckNhc2UoKSkpcmV0dXJuIE4rPUcrIjoiLEQmJkQubGVuZ3RoJiYoTis9Ii8vIitE''@;'; put 'put ''KSxOKz1ULEUmJkUubGVuZ3RoJiYoTis9Ij8iK0UpLHomJnoubGVuZ3RoJiYoTis9IiMiK3opLE59fX1mdW5jdGlvbiBzZShJLGope2lmKG0oSSkpe3ZhciBHLEUsTixCLEQ9IiIsVD0iIix6PSIiLFo9IiI7aWYoVD0oRz14KEkpKVsyXSxFPUdbM10sTj1HWzRdLEI9R1s1XSxEPUdbMV0pe2lm''@;'; put 'put ''KGope2lmKCJodHRwcyIhPUQudG9Mb3dlckNhc2UoKSlyZXR1cm59ZWxzZSBpZigiaHR0cCIhPUQudG9Mb3dlckNhc2UoKSlyZXR1cm47aWYoVClyZXR1cm4vOihcZCspJC8udGVzdChUKSYmKHo9VC5tYXRjaCgvOihcZCspJC8pWzBdLFQ9VC5yZXBsYWNlKC86XGQrJC8sIiIpKSxaKz1EKyI6''@;'; put 'put ''IixaKz0iLy8iK1QseiYmKForPXopLForPUUsTiYmTi5sZW5ndGgmJihaKz0iPyIrTiksQiYmQi5sZW5ndGgmJihaKz0iIyIrQiksWn19fWZ1bmN0aW9uIE0oSSl7cmV0dXJuIHNlKEksITApfWZ1bmN0aW9uIE8oSSl7cmV0dXJuIHNlKEkpfHxNKEkpfX0oUWU9Ui5ubWQoUWUpKX0sODY2MToo''@;'; put 'put ''UWUsTWUsUik9PntRZS5leHBvcnRzPVIoODY2MSl9LDM1MzU4OihRZSxNZSxSKT0+e3ZhciBvZT17Ii4vYWYiOjExNTQ0LCIuL2FmLmpzIjoxMTU0NCwiLi9hciI6MzMxMDgsIi4vYXItZHoiOjUyMTU1LCIuL2FyLWR6LmpzIjo1MjE1NSwiLi9hci1rdyI6NTM1ODMsIi4vYXIta3cuanMiOjUz''@;'; put 'put ''NTgzLCIuL2FyLWx5Ijo0MTYzOCwiLi9hci1seS5qcyI6NDE2MzgsIi4vYXItbWEiOjg3ODIzLCIuL2FyLW1hLmpzIjo4NzgyMywiLi9hci1wcyI6NzcxMiwiLi9hci1wcy5qcyI6NzcxMiwiLi9hci1zYSI6NzgyNjEsIi4vYXItc2EuanMiOjc4MjYxLCIuL2FyLXRuIjo1NjcwMywiLi9hci10''@;'; put 'put ''bi5qcyI6NTY3MDMsIi4vYXIuanMiOjMzMTA4LCIuL2F6Ijo0NjUwOCwiLi9hei5qcyI6NDY1MDgsIi4vYmUiOjE2NzY2LCIuL2JlLmpzIjoxNjc2NiwiLi9iZyI6Mjg1NjQsIi4vYmcuanMiOjI4NTY0LCIuL2JtIjo5NzQ2MiwiLi9ibS5qcyI6OTc0NjIsIi4vYm4iOjE3MTA3LCIuL2JuLWJk''@;'; put 'put ''Ijo0MzQzOCwiLi9ibi1iZC5qcyI6NDM0MzgsIi4vYm4uanMiOjE3MTA3LCIuL2JvIjo5MDA0LCIuL2JvLmpzIjo5MDA0LCIuL2JyIjo1MDkyNywiLi9ici5qcyI6NTA5MjcsIi4vYnMiOjg3NzY4LCIuL2JzLmpzIjo4Nzc2OCwiLi9jYSI6NTYyOTEsIi4vY2EuanMiOjU2MjkxLCIuL2NzIjo4''@;'; put 'put ''NTMwMSwiLi9jcy5qcyI6ODUzMDEsIi4vY3YiOjY2NjY2LCIuL2N2LmpzIjo2NjY2NiwiLi9jeSI6NTUxNjMsIi4vY3kuanMiOjU1MTYzLCIuL2RhIjo4NzM2MCwiLi9kYS5qcyI6ODczNjAsIi4vZGUiOjQ1OTMyLCIuL2RlLWF0Ijo0MzI0OCwiLi9kZS1hdC5qcyI6NDMyNDgsIi4vZGUtY2gi''@;'; put 'put ''OjgzMjIyLCIuL2RlLWNoLmpzIjo4MzIyMiwiLi9kZS5qcyI6NDU5MzIsIi4vZHYiOjY0MDUsIi4vZHYuanMiOjY0MDUsIi4vZWwiOjYwNzE4LCIuL2VsLmpzIjo2MDcxOCwiLi9lbi1hdSI6MzYzMTksIi4vZW4tYXUuanMiOjM2MzE5LCIuL2VuLWNhIjo4MDU5NywiLi9lbi1jYS5qcyI6ODA1''@;'; put 'put ''OTcsIi4vZW4tZ2IiOjUxODAwLCIuL2VuLWdiLmpzIjo1MTgwMCwiLi9lbi1pZSI6ODA3LCIuL2VuLWllLmpzIjo4MDcsIi4vZW4taWwiOjk1OTYwLCIuL2VuLWlsLmpzIjo5NTk2MCwiLi9lbi1pbiI6ODQ0MTgsIi4vZW4taW4uanMiOjg0NDE4LCIuL2VuLW56Ijo0Njg2NSwiLi9lbi1uei5q''@;'; put 'put ''cyI6NDY4NjUsIi4vZW4tc2ciOjMyNjQ3LCIuL2VuLXNnLmpzIjozMjY0NywiLi9lbyI6NjE5MzEsIi4vZW8uanMiOjYxOTMxLCIuL2VzIjo0NjY3OSwiLi9lcy1kbyI6NDE4MDUsIi4vZXMtZG8uanMiOjQxODA1LCIuL2VzLW14Ijo4MzQ0NSwiLi9lcy1teC5qcyI6ODM0NDUsIi4vZXMtdXMi''@;'; put 'put ''OjgxNTE2LCIuL2VzLXVzLmpzIjo4MTUxNiwiLi9lcy5qcyI6NDY2NzksIi4vZXQiOjg4MTUwLCIuL2V0LmpzIjo4ODE1MCwiLi9ldSI6ODA3NTcsIi4vZXUuanMiOjgwNzU3LCIuL2ZhIjo2NTc0MiwiLi9mYS5qcyI6NjU3NDIsIi4vZmkiOjMzOTU4LCIuL2ZpLmpzIjozMzk1OCwiLi9maWwi''@;'; put 'put ''OjQ2NzIwLCIuL2ZpbC5qcyI6NDY3MjAsIi4vZm8iOjk4MzUyLCIuL2ZvLmpzIjo5ODM1MiwiLi9mciI6NDA1OSwiLi9mci1jYSI6NDIwOTYsIi4vZnItY2EuanMiOjQyMDk2LCIuL2ZyLWNoIjo5NTc1OSwiLi9mci1jaC5qcyI6OTU3NTksIi4vZnIuanMiOjQwNTksIi4vZnkiOjE1OTU4LCIu''@;'; put 'put ''L2Z5LmpzIjoxNTk1OCwiLi9nYSI6OTQxNDMsIi4vZ2EuanMiOjk0MTQzLCIuL2dkIjo2NzAyOCwiLi9nZC5qcyI6NjcwMjgsIi4vZ2wiOjgwNDI4LCIuL2dsLmpzIjo4MDQyOCwiLi9nb20tZGV2YSI6NzY4NjEsIi4vZ29tLWRldmEuanMiOjc2ODYxLCIuL2dvbS1sYXRuIjo1NzcxOCwiLi9n''@;'; put 'put ''b20tbGF0bi5qcyI6NTc3MTgsIi4vZ3UiOjI2ODI3LCIuL2d1LmpzIjoyNjgyNywiLi9oZSI6MjE5MzYsIi4vaGUuanMiOjIxOTM2LCIuL2hpIjozMTMzMiwiLi9oaS5qcyI6MzEzMzIsIi4vaHIiOjkxOTU3LCIuL2hyLmpzIjo5MTk1NywiLi9odSI6NDg5MjgsIi4vaHUuanMiOjQ4OTI4LCIu''@;'; put 'put ''L2h5LWFtIjo1NjIxNSwiLi9oeS1hbS5qcyI6NTYyMTUsIi4vaWQiOjU4NiwiLi9pZC5qcyI6NTg2LCIuL2lzIjo5MDIxMSwiLi9pcy5qcyI6OTAyMTEsIi4vaXQiOjcwMTcwLCIuL2l0LWNoIjoyMjM0MCwiLi9pdC1jaC5qcyI6MjIzNDAsIi4vaXQuanMiOjcwMTcwLCIuL2phIjozOTc3MCwi''@;'; put 'put ''Li9qYS5qcyI6Mzk3NzAsIi4vanYiOjczODc1LCIuL2p2LmpzIjo3Mzg3NSwiLi9rYSI6Nzk0OTksIi4va2EuanMiOjc5NDk5LCIuL2trIjo5MzU3MywiLi9ray5qcyI6OTM1NzMsIi4va20iOjY4ODA3LCIuL2ttLmpzIjo2ODgwNywiLi9rbiI6NjUwODIsIi4va24uanMiOjY1MDgyLCIuL2tv''@;'; put 'put ''IjoyMDEzNywiLi9rby5qcyI6MjAxMzcsIi4va3UiOjcwMTExLCIuL2t1LWttciI6NjM3NDQsIi4va3Uta21yLmpzIjo2Mzc0NCwiLi9rdS5qcyI6NzAxMTEsIi4va3kiOjk5MTg3LCIuL2t5LmpzIjo5OTE4NywiLi9sYiI6MzU5NjksIi4vbGIuanMiOjM1OTY5LCIuL2xvIjozMzUyNiwiLi9s''@;'; put 'put ''by5qcyI6MzM1MjYsIi4vbHQiOjkwNDExLCIuL2x0LmpzIjo5MDQxMSwiLi9sdiI6MzI2MjEsIi4vbHYuanMiOjMyNjIxLCIuL21lIjo4NTg2OSwiLi9tZS5qcyI6ODU4NjksIi4vbWkiOjM1ODgxLCIuL21pLmpzIjozNTg4MSwiLi9tayI6OTIzOTEsIi4vbWsuanMiOjkyMzkxLCIuL21sIjoy''@;'; put 'put ''MTEyNiwiLi9tbC5qcyI6MjExMjYsIi4vbW4iOjQ0ODkyLCIuL21uLmpzIjo0NDg5MiwiLi9tciI6NTkwODAsIi4vbXIuanMiOjU5MDgwLCIuL21zIjo3MDM5OSwiLi9tcy1teSI6MjU5NTAsIi4vbXMtbXkuanMiOjI1OTUwLCIuL21zLmpzIjo3MDM5OSwiLi9tdCI6Nzk5MDIsIi4vbXQuanMi''@;'; put 'put ''Ojc5OTAyLCIuL215Ijo3Mjk4NSwiLi9teS5qcyI6NzI5ODUsIi4vbmIiOjY3ODU5LCIuL25iLmpzIjo2Nzg1OSwiLi9uZSI6MTM2NDIsIi4vbmUuanMiOjEzNjQyLCIuL25sIjo2NTQ0MSwiLi9ubC1iZSI6OTk4NzUsIi4vbmwtYmUuanMiOjk5ODc1LCIuL25sLmpzIjo2NTQ0MSwiLi9ubiI6''@;'; put 'put ''ODEzMTEsIi4vbm4uanMiOjgxMzExLCIuL29jLWxuYyI6NzI1NjcsIi4vb2MtbG5jLmpzIjo3MjU2NywiLi9wYS1pbiI6NTY5NjIsIi4vcGEtaW4uanMiOjU2OTYyLCIuL3BsIjo2MTA2MywiLi9wbC5qcyI6NjEwNjMsIi4vcHQiOjc4NzE5LCIuL3B0LWJyIjo5NzQ3NiwiLi9wdC1ici5qcyI6''@;'; put 'put ''OTc0NzYsIi4vcHQuanMiOjc4NzE5LCIuL3JvIjo1MTAwNCwiLi9yby5qcyI6NTEwMDQsIi4vcnUiOjUxMzI2LCIuL3J1LmpzIjo1MTMyNiwiLi9zZCI6NzI2MDgsIi4vc2QuanMiOjcyNjA4LCIuL3NlIjoxMzkxMSwiLi9zZS5qcyI6MTM5MTEsIi4vc2kiOjI1MTQ3LCIuL3NpLmpzIjoyNTE0''@;'; put 'put ''NywiLi9zayI6MjM3NDEsIi4vc2suanMiOjIzNzQxLCIuL3NsIjo5M2UzLCIuL3NsLmpzIjo5M2UzLCIuL3NxIjo2MDQ1MSwiLi9zcS5qcyI6NjA0NTEsIi4vc3IiOjU1MDQ2LCIuL3NyLWN5cmwiOjQwOTA1LCIuL3NyLWN5cmwuanMiOjQwOTA1LCIuL3NyLmpzIjo1NTA0NiwiLi9zcyI6ODU3''@;'; put 'put ''NjUsIi4vc3MuanMiOjg1NzY1LCIuL3N2Ijo5OTI5MCwiLi9zdi5qcyI6OTkyOTAsIi4vc3ciOjUzNDQ5LCIuL3N3LmpzIjo1MzQ0OSwiLi90YSI6NzI2ODgsIi4vdGEuanMiOjcyNjg4LCIuL3RlIjozMjA2MCwiLi90ZS5qcyI6MzIwNjAsIi4vdGV0Ijo5MzI5MCwiLi90ZXQuanMiOjkzMjkw''@;'; put 'put ''LCIuL3RnIjo4Mjk0LCIuL3RnLmpzIjo4Mjk0LCIuL3RoIjoxMjMxLCIuL3RoLmpzIjoxMjMxLCIuL3RrIjozNzQ2LCIuL3RrLmpzIjozNzQ2LCIuL3RsLXBoIjo0OTA0MCwiLi90bC1waC5qcyI6NDkwNDAsIi4vdGxoIjoxNzE4NywiLi90bGguanMiOjE3MTg3LCIuL3RyIjo2MDE1MywiLi90''@;'; put 'put ''ci5qcyI6NjAxNTMsIi4vdHpsIjo4ODUyMSwiLi90emwuanMiOjg4NTIxLCIuL3R6bSI6MTgwMTAsIi4vdHptLWxhdG4iOjIyMjM0LCIuL3R6bS1sYXRuLmpzIjoyMjIzNCwiLi90em0uanMiOjE4MDEwLCIuL3VnLWNuIjo2MzM0OSwiLi91Zy1jbi5qcyI6NjMzNDksIi4vdWsiOjY4NDc5LCIu''@;'; put 'put ''L3VrLmpzIjo2ODQ3OSwiLi91ciI6NDMwMjQsIi4vdXIuanMiOjQzMDI0LCIuL3V6IjoxOTgwMCwiLi91ei1sYXRuIjo3MjM3NiwiLi91ei1sYXRuLmpzIjo3MjM3NiwiLi91ei5qcyI6MTk4MDAsIi4vdmkiOjg5MzY2LCIuL3ZpLmpzIjo4OTM2NiwiLi94LXBzZXVkbyI6Njk3MDIsIi4veC1w''@;'; put 'put ''c2V1ZG8uanMiOjY5NzAyLCIuL3lvIjo3MjY1NSwiLi95by5qcyI6NzI2NTUsIi4vemgtY24iOjU3NSwiLi96aC1jbi5qcyI6NTc1LCIuL3poLWhrIjoxODM1MSwiLi96aC1oay5qcyI6MTgzNTEsIi4vemgtbW8iOjUxNjI2LCIuL3poLW1vLmpzIjo1MTYyNiwiLi96aC10dyI6ODg4NywiLi96''@;'; put 'put ''aC10dy5qcyI6ODg4N307ZnVuY3Rpb24geChzZSl7dmFyIE09bShzZSk7cmV0dXJuIFIoTSl9ZnVuY3Rpb24gbShzZSl7aWYoIVIubyhvZSxzZSkpe3ZhciBNPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK3NlKyInIik7dGhyb3cgTS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixN''@;'; put 'put ''fXJldHVybiBvZVtzZV19eC5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKG9lKX0seC5yZXNvbHZlPW0sUWUuZXhwb3J0cz14LHguaWQ9MzUzNTh9LDgzMzM3OigpPT57fSw3ODk4MjooKT0+e30sNDc3OTA6KCk9Pnt9LDc3OTY1OigpPT57fSw2NjA4OTooKT0+e30sNzkzNjg6''@;'; put 'put ''KCk9Pnt9LDE1NzkxOigpPT57fSw2MTA5MzooKT0+e30sNjQ2ODg6KCk9Pnt9LDUxMDY5OigpPT57fSwxNTM0MDooKT0+e30sNzk4Mzg6KCk9Pnt9LDYzNzc5OigpPT57fSw3NzE5OTooKT0+e30sMjkyOTM6UWU9PntmdW5jdGlvbiBNZShvZSx4LG0sc2UsTSxPLEkpe3RyeXt2YXIgaj1vZVtP''@;'; put 'put ''XShJKSxHPWoudmFsdWV9Y2F0Y2goRCl7cmV0dXJuIHZvaWQgbShEKX1qLmRvbmU/eChHKTpQcm9taXNlLnJlc29sdmUoRykudGhlbihzZSxNKX1RZS5leHBvcnRzPWZ1bmN0aW9uIFIob2Upe3JldHVybiBmdW5jdGlvbigpe3ZhciB4PXRoaXMsbT1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9t''@;'; put 'put ''aXNlKGZ1bmN0aW9uKHNlLE0pe3ZhciBPPW9lLmFwcGx5KHgsbSk7ZnVuY3Rpb24gSShHKXtNZShPLHNlLE0sSSxqLCJuZXh0IixHKX1mdW5jdGlvbiBqKEcpe01lKE8sc2UsTSxJLGosInRocm93IixHKX1JKHZvaWQgMCl9KX19LFFlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxRZS5leHBvcnRz''@;'; put 'put ''LmRlZmF1bHQ9UWUuZXhwb3J0c30sMzE0ODM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDE5MTUwKSx4PVIoNzUyMTIpLG09VHlwZUVycm9yO1FlLmV4cG9ydHM9ZnVuY3Rpb24oc2Upe2lmKG9lKHNlKSlyZXR1cm4gc2U7dGhyb3cgbmV3IG0oeChzZSkrIiBpcyBub3QgYSBm''@;'; put 'put ''dW5jdGlvbiIpfX0sMjc2NzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDM0MDYpLHg9U3RyaW5nLG09VHlwZUVycm9yO1FlLmV4cG9ydHM9ZnVuY3Rpb24oc2Upe2lmKG9lKHNlKSlyZXR1cm4gc2U7dGhyb3cgbmV3IG0oIkNhbid0IHNldCAiK3goc2UpKyIgYXMgYSBwcm90''@;'; put 'put ''b3R5cGUiKX19LDM3NzMxOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig5NzU0MSkuaGFzO1FlLmV4cG9ydHM9ZnVuY3Rpb24oeCl7cmV0dXJuIG9lKHgpLHh9fSw3MDgyNDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTgwMTIpLHg9Uig5Nzk1MSksbT1SKDQ0''@;'; put 'put ''NjQ4KS5mLHNlPW9lKCJ1bnNjb3BhYmxlcyIpLE09QXJyYXkucHJvdG90eXBlO3ZvaWQgMD09PU1bc2VdJiZtKE0sc2Use2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTp4KG51bGwpfSksUWUuZXhwb3J0cz1mdW5jdGlvbihPKXtNW3NlXVtPXT0hMH19LDExMDg6KFFlLE1lLFIpPT57InVzZSBzdHJp''@;'; put 'put ''Y3QiO3ZhciBvZT1SKDMyNjMzKSx4PVN0cmluZyxtPVR5cGVFcnJvcjtRZS5leHBvcnRzPWZ1bmN0aW9uKHNlKXtpZihvZShzZSkpcmV0dXJuIHNlO3Rocm93IG5ldyBtKHgoc2UpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sNzQ4MjQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1S''@;'; put 'put ''KDkzMTYyKSx4PVIoNzQ4NSksbT1SKDcxNzEpLHNlPWZ1bmN0aW9uKE0pe3JldHVybiBmdW5jdGlvbihPLEksail7dmFyIEc9b2UoTyksRD1tKEcpO2lmKDA9PT1EKXJldHVybiFNJiYtMTt2YXIgRSxUPXgoaixEKTtpZihNJiZJIT1JKXtmb3IoO0Q+VDspaWYoKEU9R1tUKytdKSE9RSlyZXR1''@;'; put 'put ''cm4hMH1lbHNlIGZvcig7RD5UO1QrKylpZigoTXx8VCBpbiBHKSYmR1tUXT09PUkpcmV0dXJuIE18fFR8fDA7cmV0dXJuIU0mJi0xfX07UWUuZXhwb3J0cz17aW5jbHVkZXM6c2UoITApLGluZGV4T2Y6c2UoITEpfX0sMzkyMDY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2''@;'; put 'put ''Mzg3KSx4PVIoNjcyNzcpLG09VHlwZUVycm9yLHNlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsTT1vZSYmIWZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcylyZXR1cm4hMDt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLmxlbmd0''@;'; put 'put ''aD0xfWNhdGNoKE8pe3JldHVybiBPIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKTtRZS5leHBvcnRzPU0/ZnVuY3Rpb24oTyxJKXtpZih4KE8pJiYhc2UoTywibGVuZ3RoIikud3JpdGFibGUpdGhyb3cgbmV3IG0oIkNhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgiKTtyZXR1cm4gTy5sZW5n''@;'; put 'put ''dGg9SX06ZnVuY3Rpb24oTyxJKXtyZXR1cm4gTy5sZW5ndGg9SX19LDc3NjM5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNyk7UWUuZXhwb3J0cz1vZShbXS5zbGljZSl9LDg2Njc1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNykseD1vZSh7''@;'; put 'put ''fS50b1N0cmluZyksbT1vZSgiIi5zbGljZSk7UWUuZXhwb3J0cz1mdW5jdGlvbihzZSl7cmV0dXJuIG0oeChzZSksOCwtMSl9fSw3MTgyNDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzg1OTUpLHg9UigxOTE1MCksbT1SKDg2Njc1KSxNPVIoNTgwMTIpKCJ0b1N0cmluZ1Rh''@;'; put 'put ''ZyIpLE89T2JqZWN0LEk9IkFyZ3VtZW50cyI9PT1tKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7UWUuZXhwb3J0cz1vZT9tOmZ1bmN0aW9uKEcpe3ZhciBELFQsRTtyZXR1cm4gdm9pZCAwPT09Rz8iVW5kZWZpbmVkIjpudWxsPT09Rz8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihU''@;'; put 'put ''PWZ1bmN0aW9uKEcsRCl7dHJ5e3JldHVybiBHW0RdfWNhdGNoe319KEQ9TyhHKSxNKSk/VDpJP20oRCk6Ik9iamVjdCI9PT0oRT1tKEQpKSYmeChELmNhbGxlZSk/IkFyZ3VtZW50cyI6RX19LDQ4NjM5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzOGUzKSx4PVIoODgwNzgp''@;'; put 'put ''LG09Uig1NDEyMiksc2U9Uig0NDY0OCk7UWUuZXhwb3J0cz1mdW5jdGlvbihNLE8sSSl7Zm9yKHZhciBqPXgoTyksRz1zZS5mLEQ9bS5mLFQ9MDtUPGoubGVuZ3RoO1QrKyl7dmFyIEU9altUXTshb2UoTSxFKSYmKCFJfHwhb2UoSSxFKSkmJkcoTSxFLEQoTyxFKSl9fX0sMzY2Nzg6KFFlLE1l''@;'; put 'put ''LFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2Mzg3KSx4PVIoNDQ2NDgpLG09Uig3Nzc3Myk7UWUuZXhwb3J0cz1vZT9mdW5jdGlvbihzZSxNLE8pe3JldHVybiB4LmYoc2UsTSxtKDEsTykpfTpmdW5jdGlvbihzZSxNLE8pe3JldHVybiBzZVtNXT1PLHNlfX0sNzc3NzM6UWU9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7UWUuZXhwb3J0cz1mdW5jdGlvbihNZSxSKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmTWUpLGNvbmZpZ3VyYWJsZTohKDImTWUpLHdyaXRhYmxlOiEoNCZNZSksdmFsdWU6Un19fSw1ODc5NTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDYzODcpLHg9Uig0NDY0''@;'; put 'put ''OCksbT1SKDc3NzczKTtRZS5leHBvcnRzPWZ1bmN0aW9uKHNlLE0sTyl7b2U/eC5mKHNlLE0sbSgwLE8pKTpzZVtNXT1PfX0sMzEwODM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDE5MTUwKSx4PVIoNDQ2NDgpLG09UigxNjk4MCksc2U9Uig0ODEwNCk7UWUuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbihNLE8sSSxqKXtqfHwoaj17fSk7dmFyIEc9ai5lbnVtZXJhYmxlLEQ9dm9pZCAwIT09ai5uYW1lP2oubmFtZTpPO2lmKG9lKEkpJiZtKEksRCxqKSxqLmdsb2JhbClHP01bT109STpzZShPLEkpO2Vsc2V7dHJ5e2oudW5zYWZlP01bT10mJihHPSEwKTpkZWxldGUgTVtPXX1jYXRj''@;'; put 'put ''aHt9Rz9NW09dPUk6eC5mKE0sTyx7dmFsdWU6SSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohai5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IWoubm9uV3JpdGFibGV9KX1yZXR1cm4gTX19LDQ4MTA0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyMDU5OCkseD1PYmpl''@;'; put 'put ''Y3QuZGVmaW5lUHJvcGVydHk7UWUuZXhwb3J0cz1mdW5jdGlvbihtLHNlKXt0cnl7eChvZSxtLHt2YWx1ZTpzZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaHtvZVttXT1zZX1yZXR1cm4gc2V9fSw0MzE5NTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNzUy''@;'; put 'put ''MTIpLHg9VHlwZUVycm9yO1FlLmV4cG9ydHM9ZnVuY3Rpb24obSxzZSl7aWYoIWRlbGV0ZSBtW3NlXSl0aHJvdyBuZXcgeCgiQ2Fubm90IGRlbGV0ZSBwcm9wZXJ0eSAiK29lKHNlKSsiIG9mICIrb2UobSkpfX0sNDYzODc6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDU1NTky''@;'; put 'put ''KTtRZS5leHBvcnRzPSFvZShmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSl9LDU1OTg4OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyMDU5OCkseD1SKDMyNjMzKSxtPW9lLmRv''@;'; put 'put ''Y3VtZW50LHNlPXgobSkmJngobS5jcmVhdGVFbGVtZW50KTtRZS5leHBvcnRzPWZ1bmN0aW9uKE0pe3JldHVybiBzZT9tLmNyZWF0ZUVsZW1lbnQoTSk6e319fSwzMzE2OlFlPT57InVzZSBzdHJpY3QiO3ZhciBNZT1UeXBlRXJyb3I7UWUuZXhwb3J0cz1mdW5jdGlvbihvZSl7aWYob2U+OTAw''@;'; put 'put ''NzE5OTI1NDc0MDk5MSl0aHJvdyBNZSgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIG9lfX0sMjc5Mjg6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgQnVuJiZCdW4mJiJzdHJpbmciPT10eXBlb2YgQnVuLnZlcnNpb259LDMw''@;'; put 'put ''NjY0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig2NzYwNyk7UWUuZXhwb3J0cz0vKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdChvZSl9LDE5NDI1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyMDU5OCkseD1SKDg2Njc1KTtRZS5l''@;'; put 'put ''eHBvcnRzPSJwcm9jZXNzIj09PXgob2UucHJvY2Vzcyl9LDY3NjA3OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9dHlwZW9mIG5hdmlnYXRvcjwidSImJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8IiJ9LDM1Njc5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSSxqLG9l''@;'; put 'put ''PVIoMjA1OTgpLHg9Uig2NzYwNyksbT1vZS5wcm9jZXNzLHNlPW9lLkRlbm8sTT1tJiZtLnZlcnNpb25zfHxzZSYmc2UudmVyc2lvbixPPU0mJk0udjg7TyYmKGo9KEk9Ty5zcGxpdCgiLiIpKVswXT4wJiZJWzBdPDQ/MTorKElbMF0rSVsxXSkpLCFqJiZ4JiYoIShJPXgubWF0Y2goL0VkZ2Vc''@;'; put 'put ''LyhcZCspLykpfHxJWzFdPj03NCkmJihJPXgubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihqPStJWzFdKSxRZS5leHBvcnRzPWp9LDU4NTQwOlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3Bl''@;'; put 'put ''cnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sOTg4NTQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDU4NjA3KSx4PUVycm9yLG09b2UoIiIucmVwbGFjZSksc2U9U3RyaW5nKG5ldyB4KCJ6eGNhc2QiKS5zdGFjayksTT0v''@;'; put 'put ''XG5ccyphdCBbXjpdKjpbXlxuXSovLE89TS50ZXN0KHNlKTtRZS5leHBvcnRzPWZ1bmN0aW9uKEksail7aWYoTyYmInN0cmluZyI9PXR5cGVvZiBJJiYheC5wcmVwYXJlU3RhY2tUcmFjZSlmb3IoO2otLTspST1tKEksTSwiIik7cmV0dXJuIEl9fSwyMjMwNDooUWUsTWUsUik9PnsidXNlIHN0''@;'; put 'put ''cmljdCI7dmFyIG9lPVIoMzY2NzgpLHg9Uig5ODg1NCksbT1SKDc0OTY0KSxzZT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtRZS5leHBvcnRzPWZ1bmN0aW9uKE0sTyxJLGope20mJihzZT9zZShNLE8pOm9lKE0sInN0YWNrIix4KEksaikpKX19LDc0OTY0OihRZSxNZSxSKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgb2U9Uig1NTU5MikseD1SKDc3NzczKTtRZS5leHBvcnRzPSFvZShmdW5jdGlvbigpe3ZhciBtPW5ldyBFcnJvcigiYSIpO3JldHVybiEoInN0YWNrImluIG0pfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KG0sInN0YWNrIix4KDEsNykpLDchPT1tLnN0YWNrKX0pfSwyODM2Nzoo''@;'; put 'put ''UWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjA1OTgpLHg9Uig1NDEyMikuZixtPVIoMzY2NzgpLHNlPVIoMzEwODMpLE09Uig0ODEwNCksTz1SKDQ4NjM5KSxJPVIoMTYzNjMpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oaixHKXt2YXIgTixCLFosWSxVLEQ9ai50YXJnZXQsVD1qLmds''@;'; put 'put ''b2JhbCxFPWouc3RhdDtpZihOPVQ/b2U6RT9vZVtEXXx8TShELHt9KTpvZVtEXSYmb2VbRF0ucHJvdG90eXBlKWZvcihCIGluIEcpe2lmKFk9R1tCXSxaPWouZG9udENhbGxHZXRTZXQ/KFU9eChOLEIpKSYmVS52YWx1ZTpOW0JdLCFJKFQ/QjpEKyhFPyIuIjoiIyIpK0Isai5mb3JjZWQpJiZ2''@;'; put 'put ''b2lkIDAhPT1aKXtpZih0eXBlb2YgWT09dHlwZW9mIFopY29udGludWU7TyhZLFopfShqLnNoYW18fFomJlouc2hhbSkmJm0oWSwic2hhbSIsITApLHNlKE4sQixZLGopfX19LDU1NTkyOlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9ZnVuY3Rpb24oTWUpe3RyeXtyZXR1cm4hIU1lKCl9''@;'; put 'put ''Y2F0Y2h7cmV0dXJuITB9fX0sNDAyMjA6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDc1MTU3KSx4PUZ1bmN0aW9uLnByb3RvdHlwZSxtPXguYXBwbHksc2U9eC5jYWxsO1FlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwob2U/c2Uu''@;'; put 'put ''YmluZChtKTpmdW5jdGlvbigpe3JldHVybiBzZS5hcHBseShtLGFyZ3VtZW50cyl9KX0sNzg4MTE6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM2MjkpLHg9UigzMTQ4MyksbT1SKDc1MTU3KSxzZT1vZShvZS5iaW5kKTtRZS5leHBvcnRzPWZ1bmN0aW9uKE0sTyl7cmV0dXJu''@;'; put 'put ''IHgoTSksdm9pZCAwPT09Tz9NOm0/c2UoTSxPKTpmdW5jdGlvbigpe3JldHVybiBNLmFwcGx5KE8sYXJndW1lbnRzKX19fSw3NTE1NzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTU1OTIpO1FlLmV4cG9ydHM9IW9lKGZ1bmN0aW9uKCl7dmFyIHg9ZnVuY3Rpb24oKXt9LmJp''@;'; put 'put ''bmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgeHx8eC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KX0sNDY5MjY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDc1MTU3KSx4PUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1FlLmV4cG9ydHM9b2U/eC5iaW5kKHgpOmZ1''@;'; put 'put ''bmN0aW9uKCl7cmV0dXJuIHguYXBwbHkoeCxhcmd1bWVudHMpfX0sODk5ODE6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2Mzg3KSx4PVIoMzhlMyksbT1GdW5jdGlvbi5wcm90b3R5cGUsc2U9b2UmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsTT14KG0sIm5h''@;'; put 'put ''bWUiKSxPPU0mJiJzb21ldGhpbmciPT09ZnVuY3Rpb24oKXt9Lm5hbWUsST1NJiYoIW9lfHxvZSYmc2UobSwibmFtZSIpLmNvbmZpZ3VyYWJsZSk7UWUuZXhwb3J0cz17RVhJU1RTOk0sUFJPUEVSOk8sQ09ORklHVVJBQkxFOkl9fSw2OTIyNzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IG9lPVIoNTg2MDcpLHg9UigzMTQ4Myk7UWUuZXhwb3J0cz1mdW5jdGlvbihtLHNlLE0pe3RyeXtyZXR1cm4gb2UoeChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sc2UpW01dKSl9Y2F0Y2h7fX19LDM2Mjk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDg2Njc1''@;'; put 'put ''KSx4PVIoNTg2MDcpO1FlLmV4cG9ydHM9ZnVuY3Rpb24obSl7aWYoIkZ1bmN0aW9uIj09PW9lKG0pKXJldHVybiB4KG0pfX0sNTg2MDc6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDc1MTU3KSx4PUZ1bmN0aW9uLnByb3RvdHlwZSxtPXguY2FsbCxzZT1vZSYmeC5iaW5kLmJp''@;'; put 'put ''bmQobSxtKTtRZS5leHBvcnRzPW9lP3NlOmZ1bmN0aW9uKE0pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtLmFwcGx5KE0sYXJndW1lbnRzKX19fSwxMjIwMjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjA1OTgpLHg9UigxOTE1MCk7UWUuZXhwb3J0cz1mdW5jdGlvbihz''@;'; put 'put ''ZSxNKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2Z1bmN0aW9uKHNlKXtyZXR1cm4geChzZSk/c2U6dm9pZCAwfShvZVtzZV0pOm9lW3NlXSYmb2Vbc2VdW01dfX0sNzU0MjQ6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1mdW5jdGlvbihNZSl7cmV0dXJue2l0ZXJhdG9yOk1lLG5l''@;'; put 'put ''eHQ6TWUubmV4dCxkb25lOiExfX19LDM2OTMyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig3MTgyNCkseD1SKDg2MTE1KSxtPVIoOTQ0NjgpLHNlPVIoMTkyNTgpLE89Uig1ODAxMikoIml0ZXJhdG9yIik7UWUuZXhwb3J0cz1mdW5jdGlvbihJKXtpZighbShJKSlyZXR1cm4g''@;'; put 'put ''eChJLE8pfHx4KEksIkBAaXRlcmF0b3IiKXx8c2Vbb2UoSSldfX0sNDM1ODQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2OTI2KSx4PVIoMzE0ODMpLG09UigxMTA4KSxzZT1SKDc1MjEyKSxNPVIoMzY5MzIpLE89VHlwZUVycm9yO1FlLmV4cG9ydHM9ZnVuY3Rpb24oSSxq''@;'; put 'put ''KXt2YXIgRz1hcmd1bWVudHMubGVuZ3RoPDI/TShJKTpqO2lmKHgoRykpcmV0dXJuIG0ob2UoRyxJKSk7dGhyb3cgbmV3IE8oc2UoSSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDg0NTI0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNykseD1SKDY3Mjc3KSxtPVIoMTkx''@;'; put 'put ''NTApLHNlPVIoODY2NzUpLE09Uig2ODMzMiksTz1vZShbXS5wdXNoKTtRZS5leHBvcnRzPWZ1bmN0aW9uKEkpe2lmKG0oSSkpcmV0dXJuIEk7aWYoeChJKSl7Zm9yKHZhciBqPUkubGVuZ3RoLEc9W10sRD0wO0Q8ajtEKyspe3ZhciBUPUlbRF07InN0cmluZyI9PXR5cGVvZiBUP08oRyxUKToo''@;'; put 'put ''Im51bWJlciI9PXR5cGVvZiBUfHwiTnVtYmVyIj09PXNlKFQpfHwiU3RyaW5nIj09PXNlKFQpKSYmTyhHLE0oVCkpfXZhciBFPUcubGVuZ3RoLHo9ITA7cmV0dXJuIGZ1bmN0aW9uKE4sQil7aWYoeilyZXR1cm4gej0hMSxCO2lmKHgodGhpcykpcmV0dXJuIEI7Zm9yKHZhciBaPTA7WjxFO1or''@;'; put 'put ''KylpZihHW1pdPT09TilyZXR1cm4gQn19fX0sODYxMTU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDMxNDgzKSx4PVIoOTQ0NjgpO1FlLmV4cG9ydHM9ZnVuY3Rpb24obSxzZSl7dmFyIE09bVtzZV07cmV0dXJuIHgoTSk/dm9pZCAwOm9lKE0pfX0sNDM2MzI6KFFlLE1lLFIp''@;'; put 'put ''PT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDMxNDgzKSx4PVIoMTEwOCksbT1SKDQ2OTI2KSxzZT1SKDY0NTUwKSxNPVIoNzU0MjQpLE89IkludmFsaWQgc2l6ZSIsST1SYW5nZUVycm9yLGo9VHlwZUVycm9yLEc9TWF0aC5tYXgsRD1mdW5jdGlvbihULEUpe3RoaXMuc2V0PVQsdGhpcy5zaXpl''@;'; put 'put ''PUcoRSwwKSx0aGlzLmhhcz1vZShULmhhcyksdGhpcy5rZXlzPW9lKFQua2V5cyl9O0QucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBNKHgobSh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKFQpe3JldHVybiBtKHRoaXMuaGFzLHRoaXMu''@;'; put 'put ''c2V0LFQpfX0sUWUuZXhwb3J0cz1mdW5jdGlvbihUKXt4KFQpO3ZhciBFPStULnNpemU7aWYoRSE9RSl0aHJvdyBuZXcgaihPKTt2YXIgej1zZShFKTtpZih6PDApdGhyb3cgbmV3IEkoTyk7cmV0dXJuIG5ldyBEKFQseil9fSw5NjMzOTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9l''@;'; put 'put ''PVIoNTg2MDcpLHg9UigzMTk1MCksbT1NYXRoLmZsb29yLHNlPW9lKCIiLmNoYXJBdCksTT1vZSgiIi5yZXBsYWNlKSxPPW9lKCIiLnNsaWNlKSxJPS9cJChbJCYnYF18XGR7MSwyfXw8W14+XSo+KS9nLGo9L1wkKFskJidgXXxcZHsxLDJ9KS9nO1FlLmV4cG9ydHM9ZnVuY3Rpb24oRyxELFQs''@;'; put 'put ''RSx6LE4pe3ZhciBCPVQrRy5sZW5ndGgsWj1FLmxlbmd0aCxZPWo7cmV0dXJuIHZvaWQgMCE9PXomJih6PXgoeiksWT1JKSxNKE4sWSxmdW5jdGlvbihVLHEpe3ZhciBKO3N3aXRjaChzZShxLDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiBHO2Nhc2UiYCI6cmV0dXJuIE8o''@;'; put 'put ''RCwwLFQpO2Nhc2UiJyI6cmV0dXJuIE8oRCxCKTtjYXNlIjwiOko9eltPKHEsMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIGVlPStxO2lmKDA9PT1lZSlyZXR1cm4gVTtpZihlZT5aKXt2YXIgcmU9bShlZS8xMCk7cmV0dXJuIDA9PT1yZT9VOnJlPD1aP3ZvaWQgMD09PUVbcmUtMV0/c2UocSwx''@;'; put 'put ''KTpFW3JlLTFdK3NlKHEsMSk6VX1KPUVbZWUtMV19cmV0dXJuIHZvaWQgMD09PUo/IiI6Sn0pfX0sMjA1OTg6ZnVuY3Rpb24oUWUpeyJ1c2Ugc3RyaWN0Ijt2YXIgTWU9ZnVuY3Rpb24oUil7cmV0dXJuIFImJlIuTWF0aD09PU1hdGgmJlJ9O1FlLmV4cG9ydHM9TWUoIm9iamVjdCI9PXR5cGVv''@;'; put 'put ''ZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8TWUoIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fE1lKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fE1lKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxNZSgib2JqZWN0Ij09dHlwZW9mIHRoaXMmJnRoaXMp''@;'; put 'put ''fHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwzOGUzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNykseD1SKDMxOTUwKSxtPW9lKHt9Lmhhc093blByb3BlcnR5KTtRZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1''@;'; put 'put ''bmN0aW9uKE0sTyl7cmV0dXJuIG0oeChNKSxPKX19LDM0NjcwOlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9e319LDg3MzcyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxMjIwMik7UWUuZXhwb3J0cz1vZSgiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKX0sNTcy''@;'; put 'put ''NDQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2Mzg3KSx4PVIoNTU1OTIpLG09Uig1NTk4OCk7UWUuZXhwb3J0cz0hb2UmJiF4KGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkobSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g''@;'; put 'put ''N319KS5hfSl9LDU1ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTg2MDcpLHg9Uig1NTU5MiksbT1SKDg2Njc1KSxzZT1PYmplY3QsTT1vZSgiIi5zcGxpdCk7UWUuZXhwb3J0cz14KGZ1bmN0aW9uKCl7cmV0dXJuIXNlKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9''@;'; put 'put ''KT9mdW5jdGlvbihPKXtyZXR1cm4iU3RyaW5nIj09PW0oTyk/TShPLCIiKTpzZShPKX06c2V9LDE3Mjk2OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxOTE1MCkseD1SKDMyNjMzKSxtPVIoMjE2MTIpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oc2UsTSxPKXt2YXIgSSxqO3JldHVy''@;'; put 'put ''biBtJiZvZShJPU0uY29uc3RydWN0b3IpJiZJIT09TyYmeChqPUkucHJvdG90eXBlKSYmaiE9PU8ucHJvdG90eXBlJiZtKHNlLGopLHNlfX0sMjY5MzE6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDU4NjA3KSx4PVIoMTkxNTApLG09Uig0ODM1Niksc2U9b2UoRnVuY3Rpb24u''@;'; put 'put ''dG9TdHJpbmcpO3gobS5pbnNwZWN0U291cmNlKXx8KG0uaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihNKXtyZXR1cm4gc2UoTSl9KSxRZS5leHBvcnRzPW0uaW5zcGVjdFNvdXJjZX0sNjQ4NTU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDMyNjMzKSx4PVIoMzY2NzgpO1FlLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24obSxzZSl7b2Uoc2UpJiYiY2F1c2UiaW4gc2UmJngobSwiY2F1c2UiLHNlLmNhdXNlKX19LDQ3MzY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBFLHosTixvZT1SKDQ4NjkxKSx4PVIoMjA1OTgpLG09UigzMjYzMyksc2U9UigzNjY3OCksTT1SKDM4ZTMpLE89''@;'; put 'put ''Uig0ODM1NiksST1SKDc5NjYyKSxqPVIoMzQ2NzApLEc9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixEPXguVHlwZUVycm9yO2lmKG9lfHxPLnN0YXRlKXt2YXIgWT1PLnN0YXRlfHwoTy5zdGF0ZT1uZXcoMCx4LldlYWtNYXApKTtZLmdldD1ZLmdldCxZLmhhcz1ZLmhhcyxZLnNldD1Z''@;'; put 'put ''LnNldCxFPWZ1bmN0aW9uKHEsSil7aWYoWS5oYXMocSkpdGhyb3cgbmV3IEQoRyk7cmV0dXJuIEouZmFjYWRlPXEsWS5zZXQocSxKKSxKfSx6PWZ1bmN0aW9uKHEpe3JldHVybiBZLmdldChxKXx8e319LE49ZnVuY3Rpb24ocSl7cmV0dXJuIFkuaGFzKHEpfX1lbHNle3ZhciBVPUkoInN0YXRl''@;'; put 'put ''Iik7altVXT0hMCxFPWZ1bmN0aW9uKHEsSil7aWYoTShxLFUpKXRocm93IG5ldyBEKEcpO3JldHVybiBKLmZhY2FkZT1xLHNlKHEsVSxKKSxKfSx6PWZ1bmN0aW9uKHEpe3JldHVybiBNKHEsVSk/cVtVXTp7fX0sTj1mdW5jdGlvbihxKXtyZXR1cm4gTShxLFUpfX1RZS5leHBvcnRzPXtzZXQ6''@;'; put 'put ''RSxnZXQ6eixoYXM6TixlbmZvcmNlOmZ1bmN0aW9uKHEpe3JldHVybiBOKHEpP3oocSk6RShxLHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHEpe3JldHVybiBmdW5jdGlvbihKKXt2YXIgZWU7aWYoIW0oSil8fChlZT16KEopKS50eXBlIT09cSl0aHJvdyBuZXcgRCgiSW5jb21wYXRpYmxlIHJl''@;'; put 'put ''Y2VpdmVyLCAiK3ErIiByZXF1aXJlZCIpO3JldHVybiBlZX19fX0sNjY3OTI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDU4MDEyKSx4PVIoMTkyNTgpLG09b2UoIml0ZXJhdG9yIiksc2U9QXJyYXkucHJvdG90eXBlO1FlLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuIHZv''@;'; put 'put ''aWQgMCE9PU0mJih4LkFycmF5PT09TXx8c2VbbV09PT1NKX19LDY3Mjc3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig4NjY3NSk7UWUuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihtKXtyZXR1cm4iQXJyYXkiPT09b2UobSl9fSwxOTE1MDpRZT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgTWU9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsO1FlLmV4cG9ydHM9dHlwZW9mIE1lPiJ1IiYmdm9pZCAwIT09TWU/ZnVuY3Rpb24oUil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFJ8fFI9PT1NZX06ZnVuY3Rpb24oUil7cmV0dXJuImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIFJ9fSwxNjM2MzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTU1OTIpLHg9UigxOTE1MCksbT0vI3xcLnByb3RvdHlwZVwuLyxzZT1mdW5jdGlvbihHLEQpe3ZhciBUPU9bTShHKV07cmV0dXJuIFQ9PT1qfHxUIT09SSYmKHgoRCk/b2UoRCk6ISFEKX0sTT1z''@;'; put 'put ''ZS5ub3JtYWxpemU9ZnVuY3Rpb24oRyl7cmV0dXJuIFN0cmluZyhHKS5yZXBsYWNlKG0sIi4iKS50b0xvd2VyQ2FzZSgpfSxPPXNlLmRhdGE9e30sST1zZS5OQVRJVkU9Ik4iLGo9c2UuUE9MWUZJTEw9IlAiO1FlLmV4cG9ydHM9c2V9LDk0NDY4OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9y''@;'; put 'put ''dHM9ZnVuY3Rpb24oTWUpe3JldHVybiBudWxsPT1NZX19LDMyNjMzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxOTE1MCk7UWUuZXhwb3J0cz1mdW5jdGlvbih4KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHg/bnVsbCE9PXg6b2UoeCl9fSw0MzQwNjooUWUsTWUsUik9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIG9lPVIoMzI2MzMpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oeCl7cmV0dXJuIG9lKHgpfHxudWxsPT09eH19LDg4Nzg4OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9ITF9LDg4ODY3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzMjYzMykseD1S''@;'; put 'put ''KDg2Njc1KSxzZT1SKDU4MDEyKSgibWF0Y2giKTtRZS5leHBvcnRzPWZ1bmN0aW9uKE0pe3ZhciBPO3JldHVybiBvZShNKSYmKHZvaWQgMCE9PShPPU1bc2VdKT8hIU86IlJlZ0V4cCI9PT14KE0pKX19LDkyOTk4OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxMjIwMikseD1S''@;'; put 'put ''KDE5MTUwKSxtPVIoNDY4KSxzZT1SKDY2OTk1KSxNPU9iamVjdDtRZS5leHBvcnRzPXNlP2Z1bmN0aW9uKE8pe3JldHVybiJzeW1ib2wiPT10eXBlb2YgT306ZnVuY3Rpb24oTyl7dmFyIEk9b2UoIlN5bWJvbCIpO3JldHVybiB4KEkpJiZtKEkucHJvdG90eXBlLE0oTykpfX0sMTEzODooUWUs''@;'; put 'put ''TWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDY5MjYpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oeCxtLHNlKXtmb3IodmFyIEksaixNPXNlP3g6eC5pdGVyYXRvcixPPXgubmV4dDshKEk9b2UoTyxNKSkuZG9uZTspaWYodm9pZCAwIT09KGo9bShJLnZhbHVlKSkpcmV0dXJuIGp9fSwzMDc4''@;'; put 'put ''NzooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNzg4MTEpLHg9Uig0NjkyNiksbT1SKDExMDgpLHNlPVIoNzUyMTIpLE09Uig2Njc5MiksTz1SKDcxNzEpLEk9Uig0NjgpLGo9Uig0MzU4NCksRz1SKDM2OTMyKSxEPVIoNjY1NDIpLFQ9VHlwZUVycm9yLEU9ZnVuY3Rpb24oTixC''@;'; put 'put ''KXt0aGlzLnN0b3BwZWQ9Tix0aGlzLnJlc3VsdD1CfSx6PUUucHJvdG90eXBlO1FlLmV4cG9ydHM9ZnVuY3Rpb24oTixCLFope3ZhciBpZSx1ZSxsZSxhZSxXLGIsQSxVPSEoIVp8fCFaLkFTX0VOVFJJRVMpLHE9ISghWnx8IVouSVNfUkVDT1JEKSxKPSEoIVp8fCFaLklTX0lURVJBVE9SKSxl''@;'; put 'put ''ZT0hKCFafHwhWi5JTlRFUlJVUFRFRCkscmU9b2UoQixaJiZaLnRoYXQpLEY9ZnVuY3Rpb24oZyl7cmV0dXJuIGllJiZEKGllLCJub3JtYWwiLGcpLG5ldyBFKCEwLGcpfSxIPWZ1bmN0aW9uKGcpe3JldHVybiBVPyhtKGcpLGVlP3JlKGdbMF0sZ1sxXSxGKTpyZShnWzBdLGdbMV0pKTplZT9y''@;'; put 'put ''ZShnLEYpOnJlKGcpfTtpZihxKWllPU4uaXRlcmF0b3I7ZWxzZSBpZihKKWllPU47ZWxzZXtpZighKHVlPUcoTikpKXRocm93IG5ldyBUKHNlKE4pKyIgaXMgbm90IGl0ZXJhYmxlIik7aWYoTSh1ZSkpe2ZvcihsZT0wLGFlPU8oTik7YWU+bGU7bGUrKylpZigoVz1IKE5bbGVdKSkmJkkoeixX''@;'; put 'put ''KSlyZXR1cm4gVztyZXR1cm4gbmV3IEUoITEpfWllPWooTix1ZSl9Zm9yKGI9cT9OLm5leHQ6aWUubmV4dDshKEE9eChiLGllKSkuZG9uZTspe3RyeXtXPUgoQS52YWx1ZSl9Y2F0Y2goZyl7RChpZSwidGhyb3ciLGcpfWlmKCJvYmplY3QiPT10eXBlb2YgVyYmVyYmSSh6LFcpKXJldHVybiBX''@;'; put 'put ''fXJldHVybiBuZXcgRSghMSl9fSw2NjU0MjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDY5MjYpLHg9UigxMTA4KSxtPVIoODYxMTUpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oc2UsTSxPKXt2YXIgSSxqO3goc2UpO3RyeXtpZighKEk9bShzZSwicmV0dXJuIikpKXtpZigidGhy''@;'; put 'put ''b3ciPT09TSl0aHJvdyBPO3JldHVybiBPfUk9b2UoSSxzZSl9Y2F0Y2goRyl7aj0hMCxJPUd9aWYoInRocm93Ij09PU0pdGhyb3cgTztpZihqKXRocm93IEk7cmV0dXJuIHgoSSksT319LDE5MjU4OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9e319LDcxNzE6KFFlLE1lLFIpPT57InVz''@;'; put 'put ''ZSBzdHJpY3QiO3ZhciBvZT1SKDk0MjM3KTtRZS5leHBvcnRzPWZ1bmN0aW9uKHgpe3JldHVybiBvZSh4Lmxlbmd0aCl9fSwxNjk4MDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTg2MDcpLHg9Uig1NTU5MiksbT1SKDE5MTUwKSxzZT1SKDM4ZTMpLE09Uig0NjM4NyksTz1S''@;'; put 'put ''KDg5OTgxKS5DT05GSUdVUkFCTEUsST1SKDI2OTMxKSxqPVIoNDczNiksRz1qLmVuZm9yY2UsRD1qLmdldCxUPVN0cmluZyxFPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx6PW9lKCIiLnNsaWNlKSxOPW9lKCIiLnJlcGxhY2UpLEI9b2UoW10uam9pbiksWj1NJiYheChmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biA4IT09RShmdW5jdGlvbigpe30sImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSxZPVN0cmluZyhTdHJpbmcpLnNwbGl0KCJTdHJpbmciKSxVPVFlLmV4cG9ydHM9ZnVuY3Rpb24ocSxKLGVlKXsiU3ltYm9sKCI9PT16KFQoSiksMCw3KSYmKEo9IlsiK04oVChKKSwvXlN5bWJvbFwoKFte''@;'; put 'put ''KV0qKVwpLiokLywiJDEiKSsiXSIpLGVlJiZlZS5nZXR0ZXImJihKPSJnZXQgIitKKSxlZSYmZWUuc2V0dGVyJiYoSj0ic2V0ICIrSiksKCFzZShxLCJuYW1lIil8fE8mJnEubmFtZSE9PUopJiYoTT9FKHEsIm5hbWUiLHt2YWx1ZTpKLGNvbmZpZ3VyYWJsZTohMH0pOnEubmFtZT1KKSxaJiZl''@;'; put 'put ''ZSYmc2UoZWUsImFyaXR5IikmJnEubGVuZ3RoIT09ZWUuYXJpdHkmJkUocSwibGVuZ3RoIix7dmFsdWU6ZWUuYXJpdHl9KTt0cnl7ZWUmJnNlKGVlLCJjb25zdHJ1Y3RvciIpJiZlZS5jb25zdHJ1Y3Rvcj9NJiZFKHEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6cS5wcm90b3R5cGUmJihx''@;'; put 'put ''LnByb3RvdHlwZT12b2lkIDApfWNhdGNoe312YXIgcmU9RyhxKTtyZXR1cm4gc2UocmUsInNvdXJjZSIpfHwocmUuc291cmNlPUIoWSwic3RyaW5nIj09dHlwZW9mIEo/SjoiIikpLHF9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1VKGZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcykmJkQo''@;'; put 'put ''dGhpcykuc291cmNlfHxJKHRoaXMpfSwidG9TdHJpbmciKX0sMTg1NTY6UWU9PnsidXNlIHN0cmljdCI7dmFyIE1lPU1hdGguY2VpbCxSPU1hdGguZmxvb3I7UWUuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbih4KXt2YXIgbT0reDtyZXR1cm4obT4wP1I6TWUpKG0pfX0sMzkxMTY6KFFl''@;'; put 'put ''LE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDY4MzMyKTtRZS5leHBvcnRzPWZ1bmN0aW9uKHgsbSl7cmV0dXJuIHZvaWQgMD09PXg/YXJndW1lbnRzLmxlbmd0aDwyPyIiOm06b2UoeCl9fSw5Nzk1MTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIFksb2U9UigxMTA4KSx4PVIo''@;'; put 'put ''NzExNjgpLG09Uig1ODU0MCksc2U9UigzNDY3MCksTT1SKDg3MzcyKSxPPVIoNTU5ODgpLEk9Uig3OTY2MiksRD0icHJvdG90eXBlIixUPSJzY3JpcHQiLEU9SSgiSUVfUFJPVE8iKSx6PWZ1bmN0aW9uKCl7fSxOPWZ1bmN0aW9uKHEpe3JldHVybiI8IitUKyI+IitxKyI8LyIrVCsiPiJ9LEI9''@;'; put 'put ''ZnVuY3Rpb24ocSl7cS53cml0ZShOKCIiKSkscS5jbG9zZSgpO3ZhciBKPXEucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gcT1udWxsLEp9LFU9ZnVuY3Rpb24oKXt0cnl7WT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaHt9VT10eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3Vt''@;'; put 'put ''ZW50LmRvbWFpbiYmWT9CKFkpOmZ1bmN0aW9uKCl7dmFyIGVlLHE9TygiaWZyYW1lIiksSj0iamF2YSIrVCsiOiI7cmV0dXJuIHEuc3R5bGUuZGlzcGxheT0ibm9uZSIsTS5hcHBlbmRDaGlsZChxKSxxLnNyYz1TdHJpbmcoSiksKGVlPXEuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3Blbigp''@;'; put 'put ''LGVlLndyaXRlKE4oImRvY3VtZW50LkY9T2JqZWN0IikpLGVlLmNsb3NlKCksZWUuRn0oKTpCKFkpO2Zvcih2YXIgcT1tLmxlbmd0aDtxLS07KWRlbGV0ZSBVW0RdW21bcV1dO3JldHVybiBVKCl9O3NlW0VdPSEwLFFlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oSixlZSl7dmFy''@;'; put 'put ''IHJlO3JldHVybiBudWxsIT09Sj8oeltEXT1vZShKKSxyZT1uZXcgeix6W0RdPW51bGwscmVbRV09Sik6cmU9VSgpLHZvaWQgMD09PWVlP3JlOnguZihyZSxlZSl9fSw3MTE2ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDYzODcpLHg9UigyNjkyOSksbT1SKDQ0NjQ4KSxz''@;'; put 'put ''ZT1SKDExMDgpLE09Uig5MzE2MiksTz1SKDEwMTQzKTtNZS5mPW9lJiYheD9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihqLEcpe3NlKGopO2Zvcih2YXIgTixEPU0oRyksVD1PKEcpLEU9VC5sZW5ndGgsej0wO0U+ejspbS5mKGosTj1UW3orK10sRFtOXSk7cmV0dXJuIGp9fSw0''@;'; put 'put ''NDY0ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDYzODcpLHg9Uig1NzI0NCksbT1SKDI2OTI5KSxzZT1SKDExMDgpLE09Uig1OTQxMCksTz1UeXBlRXJyb3IsST1PYmplY3QuZGVmaW5lUHJvcGVydHksaj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEc9ImVu''@;'; put 'put ''dW1lcmFibGUiLEQ9ImNvbmZpZ3VyYWJsZSIsVD0id3JpdGFibGUiO01lLmY9b2U/bT9mdW5jdGlvbih6LE4sQil7aWYoc2UoeiksTj1NKE4pLHNlKEIpLCJmdW5jdGlvbiI9PXR5cGVvZiB6JiYicHJvdG90eXBlIj09PU4mJiJ2YWx1ZSJpbiBCJiZUIGluIEImJiFCW1RdKXt2YXIgWj1qKHos''@;'; put 'put ''Tik7WiYmWltUXSYmKHpbTl09Qi52YWx1ZSxCPXtjb25maWd1cmFibGU6RCBpbiBCP0JbRF06WltEXSxlbnVtZXJhYmxlOkcgaW4gQj9CW0ddOlpbR10sd3JpdGFibGU6ITF9KX1yZXR1cm4gSSh6LE4sQil9Okk6ZnVuY3Rpb24oeixOLEIpe2lmKHNlKHopLE49TShOKSxzZShCKSx4KXRyeXty''@;'; put 'put ''ZXR1cm4gSSh6LE4sQil9Y2F0Y2h7fWlmKCJnZXQiaW4gQnx8InNldCJpbiBCKXRocm93IG5ldyBPKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBCJiYoeltOXT1CLnZhbHVlKSx6fX0sNTQxMjI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2''@;'; put 'put ''Mzg3KSx4PVIoNDY5MjYpLG09UigzOTYyKSxzZT1SKDc3NzczKSxNPVIoOTMxNjIpLE89Uig1OTQxMCksST1SKDM4ZTMpLGo9Uig1NzI0NCksRz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO01lLmY9b2U/RzpmdW5jdGlvbihULEUpe2lmKFQ9TShUKSxFPU8oRSksail0cnl7cmV0''@;'; put 'put ''dXJuIEcoVCxFKX1jYXRjaHt9aWYoSShULEUpKXJldHVybiBzZSgheChtLmYsVCxFKSxUW0VdKX19LDM2MTQzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyMzMxMyksbT1SKDU4NTQwKS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO01lLmY9T2JqZWN0LmdldE93blBy''@;'; put 'put ''b3BlcnR5TmFtZXN8fGZ1bmN0aW9uKE0pe3JldHVybiBvZShNLG0pfX0sMjgwNzA6KFFlLE1lKT0+eyJ1c2Ugc3RyaWN0IjtNZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDQ2ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTg2MDcpO1FlLmV4cG9ydHM9b2Uo''@;'; put 'put ''e30uaXNQcm90b3R5cGVPZil9LDIzMzEzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNykseD1SKDM4ZTMpLG09Uig5MzE2Miksc2U9Uig3NDgyNCkuaW5kZXhPZixNPVIoMzQ2NzApLE89b2UoW10ucHVzaCk7UWUuZXhwb3J0cz1mdW5jdGlvbihJLGope3ZhciBFLEc9''@;'; put 'put ''bShJKSxEPTAsVD1bXTtmb3IoRSBpbiBHKSF4KE0sRSkmJngoRyxFKSYmTyhULEUpO2Zvcig7ai5sZW5ndGg+RDspeChHLEU9altEKytdKSYmKH5zZShULEUpfHxPKFQsRSkpO3JldHVybiBUfX0sMTAxNDM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDIzMzEzKSx4PVIoNTg1''@;'; put 'put ''NDApO1FlLmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHNlKXtyZXR1cm4gb2Uoc2UseCl9fSwzOTYyOihRZSxNZSk9PnsidXNlIHN0cmljdCI7dmFyIFI9e30ucHJvcGVydHlJc0VudW1lcmFibGUsb2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcix4PW9lJiYhUi5jYWxs''@;'; put 'put ''KHsxOjJ9LDEpO01lLmY9eD9mdW5jdGlvbihzZSl7dmFyIE09b2UodGhpcyxzZSk7cmV0dXJuISFNJiZNLmVudW1lcmFibGV9OlJ9LDIxNjEyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig2OTIyNykseD1SKDMyNjMzKSxtPVIoODgyNzUpLHNlPVIoMjc2Nyk7UWUuZXhwb3J0''@;'; put 'put ''cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgSSxNPSExLE89e307dHJ5eyhJPW9lKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShPLFtdKSxNPU8gaW5zdGFuY2VvZiBBcnJheX1jYXRjaHt9cmV0dXJuIGZ1bmN0aW9u''@;'; put 'put ''KEcsRCl7cmV0dXJuIG0oRyksc2UoRCkseChHKSYmKE0/SShHLEQpOkcuX19wcm90b19fPUQpLEd9fSgpOnZvaWQgMCl9LDkzODY1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig0NjkyNikseD1SKDE5MTUwKSxtPVIoMzI2MzMpLHNlPVR5cGVFcnJvcjtRZS5leHBvcnRzPWZ1''@;'; put 'put ''bmN0aW9uKE0sTyl7dmFyIEksajtpZigic3RyaW5nIj09PU8mJngoST1NLnRvU3RyaW5nKSYmIW0oaj1vZShJLE0pKXx8eChJPU0udmFsdWVPZikmJiFtKGo9b2UoSSxNKSl8fCJzdHJpbmciIT09TyYmeChJPU0udG9TdHJpbmcpJiYhbShqPW9lKEksTSkpKXJldHVybiBqO3Rocm93IG5ldyBz''@;'; put 'put ''ZSgiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw4ODA3ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMTIyMDIpLHg9Uig1ODYwNyksbT1SKDM2MTQzKSxzZT1SKDI4MDcwKSxNPVIoMTEwOCksTz14KFtdLmNvbmNhdCk7UWUuZXhwb3J0cz1v''@;'; put 'put ''ZSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24oail7dmFyIEc9bS5mKE0oaikpLEQ9c2UuZjtyZXR1cm4gRD9PKEcsRChqKSk6R319LDYwMzIxOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig0NDY0OCkuZjtRZS5leHBvcnRzPWZ1bmN0aW9uKHgsbSxzZSl7c2UgaW4g''@;'; put 'put ''eHx8b2UoeCxzZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBtW3NlXX0sc2V0OmZ1bmN0aW9uKE0pe21bc2VdPU19fSl9fSwyMjc1NDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMTEwOCk7UWUuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB4PW9lKHRo''@;'; put 'put ''aXMpLG09IiI7cmV0dXJuIHguaGFzSW5kaWNlcyYmKG0rPSJkIikseC5nbG9iYWwmJihtKz0iZyIpLHguaWdub3JlQ2FzZSYmKG0rPSJpIikseC5tdWx0aWxpbmUmJihtKz0ibSIpLHguZG90QWxsJiYobSs9InMiKSx4LnVuaWNvZGUmJihtKz0idSIpLHgudW5pY29kZVNldHMmJihtKz0idiIp''@;'; put 'put ''LHguc3RpY2t5JiYobSs9InkiKSxtfX0sMzcwNzU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2OTI2KSx4PVIoMzhlMyksbT1SKDQ2OCksc2U9UigyMjc1NCksTT1SZWdFeHAucHJvdG90eXBlO1FlLmV4cG9ydHM9ZnVuY3Rpb24oTyl7dmFyIEk9Ty5mbGFncztyZXR1cm4g''@;'; put 'put ''dm9pZCAwIT09SXx8ImZsYWdzImluIE18fHgoTywiZmxhZ3MiKXx8IW0oTSxPKT9JOm9lKHNlLE8pfX0sODgyNzU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDk0NDY4KSx4PVR5cGVFcnJvcjtRZS5leHBvcnRzPWZ1bmN0aW9uKG0pe2lmKG9lKG0pKXRocm93IG5ldyB4KCJD''@;'; put 'put ''YW4ndCBjYWxsIG1ldGhvZCBvbiAiK20pO3JldHVybiBtfX0sNDMyNDk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBELG9lPVIoMjA1OTgpLHg9Uig0MDIyMCksbT1SKDE5MTUwKSxzZT1SKDI3OTI4KSxNPVIoNjc2MDcpLE89Uig3NzYzOSksST1SKDI3OTY3KSxqPW9lLkZ1bmN0aW9u''@;'; put 'put ''LEc9L01TSUUgLlwuLy50ZXN0KE0pfHxzZSYmKChEPW9lLkJ1bi52ZXJzaW9uLnNwbGl0KCIuIikpLmxlbmd0aDwzfHwiMCI9PT1EWzBdJiYoRFsxXTwzfHwiMyI9PT1EWzFdJiYiMCI9PT1EWzJdKSk7UWUuZXhwb3J0cz1mdW5jdGlvbihELFQpe3ZhciBFPVQ/MjoxO3JldHVybiBHP2Z1bmN0''@;'; put 'put ''aW9uKHosTil7dmFyIEI9SShhcmd1bWVudHMubGVuZ3RoLDEpPkUsWj1tKHopP3o6aih6KSxZPUI/Tyhhcmd1bWVudHMsRSk6W10sVT1CP2Z1bmN0aW9uKCl7eChaLHRoaXMsWSl9Olo7cmV0dXJuIFQ/RChVLE4pOkQoVSl9OkR9fSwxNDQ1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIg''@;'; put 'put ''b2U9Uig5NzU0MSkseD1SKDIxOTEwKSxtPW9lLlNldCxzZT1vZS5hZGQ7UWUuZXhwb3J0cz1mdW5jdGlvbihNKXt2YXIgTz1uZXcgbTtyZXR1cm4geChNLGZ1bmN0aW9uKEkpe3NlKE8sSSl9KSxPfX0sODAyMTM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM3NzMxKSx4PVIo''@;'; put 'put ''OTc1NDEpLG09UigxNDQ1KSxzZT1SKDMwMzM5KSxNPVIoNDM2MzIpLE89UigyMTkxMCksST1SKDExMzgpLGo9eC5oYXMsRz14LnJlbW92ZTtRZS5leHBvcnRzPWZ1bmN0aW9uKFQpe3ZhciBFPW9lKHRoaXMpLHo9TShUKSxOPW0oRSk7cmV0dXJuIHNlKEUpPD16LnNpemU/TyhFLGZ1bmN0aW9u''@;'; put 'put ''KEIpe3ouaW5jbHVkZXMoQikmJkcoTixCKX0pOkkoei5nZXRJdGVyYXRvcigpLGZ1bmN0aW9uKEIpe2ooRSxCKSYmRyhOLEIpfSksTn19LDk3NTQxOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig1ODYwNykseD1TZXQucHJvdG90eXBlO1FlLmV4cG9ydHM9e1NldCxhZGQ6b2Uo''@;'; put 'put ''eC5hZGQpLGhhczpvZSh4LmhhcykscmVtb3ZlOm9lKHguZGVsZXRlKSxwcm90bzp4fX0sNjE4Nzk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM3NzMxKSx4PVIoOTc1NDEpLG09UigzMDMzOSksc2U9Uig0MzYzMiksTT1SKDIxOTEwKSxPPVIoMTEzOCksST14LlNldCxqPXgu''@;'; put 'put ''YWRkLEc9eC5oYXM7UWUuZXhwb3J0cz1mdW5jdGlvbihUKXt2YXIgRT1vZSh0aGlzKSx6PXNlKFQpLE49bmV3IEk7cmV0dXJuIG0oRSk+ei5zaXplP08oei5nZXRJdGVyYXRvcigpLGZ1bmN0aW9uKEIpe0coRSxCKSYmaihOLEIpfSk6TShFLGZ1bmN0aW9uKEIpe3ouaW5jbHVkZXMoQikmJmoo''@;'; put 'put ''TixCKX0pLE59fSw3MzYyNDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzc3MzEpLHg9Uig5NzU0MSkuaGFzLG09UigzMDMzOSksc2U9Uig0MzYzMiksTT1SKDIxOTEwKSxPPVIoMTEzOCksST1SKDY2NTQyKTtRZS5leHBvcnRzPWZ1bmN0aW9uKEcpe3ZhciBEPW9lKHRoaXMp''@;'; put 'put ''LFQ9c2UoRyk7aWYobShEKTw9VC5zaXplKXJldHVybiExIT09TShELGZ1bmN0aW9uKHope2lmKFQuaW5jbHVkZXMoeikpcmV0dXJuITF9LCEwKTt2YXIgRT1ULmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1PKEUsZnVuY3Rpb24oeil7aWYoeChELHopKXJldHVybiBJKEUsIm5vcm1hbCIsITEp''@;'; put 'put ''fSl9fSw3NDgzOTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzc3MzEpLHg9UigzMDMzOSksbT1SKDIxOTEwKSxzZT1SKDQzNjMyKTtRZS5leHBvcnRzPWZ1bmN0aW9uKE8pe3ZhciBJPW9lKHRoaXMpLGo9c2UoTyk7cmV0dXJuISh4KEkpPmouc2l6ZSkmJiExIT09bShJLGZ1''@;'; put 'put ''bmN0aW9uKEcpe2lmKCFqLmluY2x1ZGVzKEcpKXJldHVybiExfSwhMCl9fSw5NjA2MjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMzc3MzEpLHg9Uig5NzU0MSkuaGFzLG09UigzMDMzOSksc2U9Uig0MzYzMiksTT1SKDExMzgpLE89Uig2NjU0Mik7UWUuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbihqKXt2YXIgRz1vZSh0aGlzKSxEPXNlKGopO2lmKG0oRyk8RC5zaXplKXJldHVybiExO3ZhciBUPUQuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PU0oVCxmdW5jdGlvbihFKXtpZigheChHLEUpKXJldHVybiBPKFQsIm5vcm1hbCIsITEpfSl9fSwyMTkxMDooUWUsTWUsUik9PnsidXNl''@;'; put 'put ''IHN0cmljdCI7dmFyIG9lPVIoNTg2MDcpLHg9UigxMTM4KSxtPVIoOTc1NDEpLHNlPW0uU2V0LE09bS5wcm90byxPPW9lKE0uZm9yRWFjaCksST1vZShNLmtleXMpLGo9SShuZXcgc2UpLm5leHQ7UWUuZXhwb3J0cz1mdW5jdGlvbihHLEQsVCl7cmV0dXJuIFQ/eCh7aXRlcmF0b3I6SShHKSxu''@;'; put 'put ''ZXh0Omp9LEQpOk8oRyxEKX19LDUzNTA1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxMjIwMikseD1mdW5jdGlvbihtKXtyZXR1cm57c2l6ZTptLGhhczpmdW5jdGlvbigpe3JldHVybiExfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57''@;'; put 'put ''ZG9uZTohMH19fX19fTtRZS5leHBvcnRzPWZ1bmN0aW9uKG0pe3ZhciBzZT1vZSgiU2V0Iik7dHJ5eyhuZXcgc2UpW21dKHgoMCkpO3RyeXtyZXR1cm4obmV3IHNlKVttXSh4KC0xKSksITF9Y2F0Y2h7cmV0dXJuITB9fWNhdGNoe3JldHVybiExfX19LDMwMzM5OihRZSxNZSxSKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgb2U9Uig2OTIyNykseD1SKDk3NTQxKTtRZS5leHBvcnRzPW9lKHgucHJvdG8sInNpemUiLCJnZXQiKXx8ZnVuY3Rpb24obSl7cmV0dXJuIG0uc2l6ZX19LDg1MDM5OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzNzczMSkseD1SKDk3NTQxKSxtPVIoMTQ0''@;'; put 'put ''NSksc2U9Uig0MzYzMiksTT1SKDExMzgpLE89eC5hZGQsST14LmhhcyxqPXgucmVtb3ZlO1FlLmV4cG9ydHM9ZnVuY3Rpb24oRCl7dmFyIFQ9b2UodGhpcyksRT1zZShEKS5nZXRJdGVyYXRvcigpLHo9bShUKTtyZXR1cm4gTShFLGZ1bmN0aW9uKE4pe0koVCxOKT9qKHosTik6Tyh6LE4pfSks''@;'; put 'put ''en19LDIwNTA3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigzNzczMSkseD1SKDk3NTQxKS5hZGQsbT1SKDE0NDUpLHNlPVIoNDM2MzIpLE09UigxMTM4KTtRZS5leHBvcnRzPWZ1bmN0aW9uKEkpe3ZhciBqPW9lKHRoaXMpLEc9c2UoSSkuZ2V0SXRlcmF0b3IoKSxEPW0oaik7''@;'; put 'put ''cmV0dXJuIE0oRyxmdW5jdGlvbihUKXt4KEQsVCl9KSxEfX0sNzk2NjI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDg3NDg0KSx4PVIoNjM5NTEpLG09b2UoImtleXMiKTtRZS5leHBvcnRzPWZ1bmN0aW9uKHNlKXtyZXR1cm4gbVtzZV18fChtW3NlXT14KHNlKSl9fSw0ODM1''@;'; put 'put ''NjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoODg3ODgpLHg9UigyMDU5OCksbT1SKDQ4MTA0KSxzZT0iX19jb3JlLWpzX3NoYXJlZF9fIixNPVFlLmV4cG9ydHM9eFtzZV18fG0oc2Use30pOyhNLnZlcnNpb25zfHwoTS52ZXJzaW9ucz1bXSkpLnB1c2goe3ZlcnNpb246IjMu''@;'; put 'put ''MzcuMSIsbW9kZTpvZT8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiJceGE5IDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSIsbGljZW5zZToiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zNy4xL0xJQ0VOU0UiLHNvdXJjZToiaHR0''@;'; put 'put ''cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMifSl9LDg3NDg0OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig0ODM1Nik7UWUuZXhwb3J0cz1mdW5jdGlvbih4LG0pe3JldHVybiBvZVt4XXx8KG9lW3hdPW18fHt9KX19LDM2NTA2OihRZSxNZSxSKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgb2U9UigzNTY3OSkseD1SKDU1NTkyKSxzZT1SKDIwNTk4KS5TdHJpbmc7UWUuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiF4KGZ1bmN0aW9uKCl7dmFyIE09U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIXNlKE0pfHwhKE9iamVjdChN''@;'; put 'put ''KWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZvZSYmb2U8NDF9KX0sNzU5NjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIGllLHVlLGxlLGFlLG9lPVIoMjA1OTgpLHg9Uig0MDIyMCksbT1SKDc4ODExKSxzZT1SKDE5MTUwKSxNPVIoMzhlMyksTz1SKDU1NTkyKSxJPVIo''@;'; put 'put ''ODczNzIpLGo9Uig3NzYzOSksRz1SKDU1OTg4KSxEPVIoMjc5NjcpLFQ9UigzMDY2NCksRT1SKDE5NDI1KSx6PW9lLnNldEltbWVkaWF0ZSxOPW9lLmNsZWFySW1tZWRpYXRlLEI9b2UucHJvY2VzcyxaPW9lLkRpc3BhdGNoLFk9b2UuRnVuY3Rpb24sVT1vZS5NZXNzYWdlQ2hhbm5lbCxxPW9l''@;'; put 'put ''LlN0cmluZyxKPTAsZWU9e30scmU9Im9ucmVhZHlzdGF0ZWNoYW5nZSI7TyhmdW5jdGlvbigpe2llPW9lLmxvY2F0aW9ufSk7dmFyIFc9ZnVuY3Rpb24oSCl7aWYoTShlZSxIKSl7dmFyIGc9ZWVbSF07ZGVsZXRlIGVlW0hdLGcoKX19LGI9ZnVuY3Rpb24oSCl7cmV0dXJuIGZ1bmN0aW9uKCl7''@;'; put 'put ''VyhIKX19LEE9ZnVuY3Rpb24oSCl7VyhILmRhdGEpfSxGPWZ1bmN0aW9uKEgpe29lLnBvc3RNZXNzYWdlKHEoSCksaWUucHJvdG9jb2wrIi8vIitpZS5ob3N0KX07KCF6fHwhTikmJih6PWZ1bmN0aW9uKGcpe0QoYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgQz1zZShnKT9nOlkoZyksaz1qKGFy''@;'; put 'put ''Z3VtZW50cywxKTtyZXR1cm4gZWVbKytKXT1mdW5jdGlvbigpe3goQyx2b2lkIDAsayl9LHVlKEopLEp9LE49ZnVuY3Rpb24oZyl7ZGVsZXRlIGVlW2ddfSxFP3VlPWZ1bmN0aW9uKEgpe0IubmV4dFRpY2soYihIKSl9OlomJloubm93P3VlPWZ1bmN0aW9uKEgpe1oubm93KGIoSCkpfTpVJiYh''@;'; put 'put ''VD8oYWU9KGxlPW5ldyBVKS5wb3J0MixsZS5wb3J0MS5vbm1lc3NhZ2U9QSx1ZT1tKGFlLnBvc3RNZXNzYWdlLGFlKSk6b2UuYWRkRXZlbnRMaXN0ZW5lciYmc2Uob2UucG9zdE1lc3NhZ2UpJiYhb2UuaW1wb3J0U2NyaXB0cyYmaWUmJiJmaWxlOiIhPT1pZS5wcm90b2NvbCYmIU8oRik/KHVl''@;'; put 'put ''PUYsb2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsQSwhMSkpOnVlPXJlIGluIEcoInNjcmlwdCIpP2Z1bmN0aW9uKEgpe0kuYXBwZW5kQ2hpbGQoRygic2NyaXB0IikpW3JlXT1mdW5jdGlvbigpe0kucmVtb3ZlQ2hpbGQodGhpcyksVyhIKX19OmZ1bmN0aW9uKEgpe3NldFRpbWVvdXQo''@;'; put 'put ''YihIKSwwKX0pLFFlLmV4cG9ydHM9e3NldDp6LGNsZWFyOk59fSw3NDg1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig2NDU1MCkseD1NYXRoLm1heCxtPU1hdGgubWluO1FlLmV4cG9ydHM9ZnVuY3Rpb24oc2UsTSl7dmFyIE89b2Uoc2UpO3JldHVybiBPPDA/eChPK00sMCk6''@;'; put 'put ''bShPLE0pfX0sOTMxNjI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDU1OCkseD1SKDg4Mjc1KTtRZS5leHBvcnRzPWZ1bmN0aW9uKG0pe3JldHVybiBvZSh4KG0pKX19LDY0NTUwOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigxODU1Nik7UWUuZXhwb3J0cz1m''@;'; put 'put ''dW5jdGlvbih4KXt2YXIgbT0reDtyZXR1cm4gbSE9bXx8MD09PW0/MDpvZShtKX19LDk0MjM3OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig2NDU1MCkseD1NYXRoLm1pbjtRZS5leHBvcnRzPWZ1bmN0aW9uKG0pe3ZhciBzZT1vZShtKTtyZXR1cm4gc2U+MD94KHNlLDkwMDcx''@;'; put 'put ''OTkyNTQ3NDA5OTEpOjB9fSwzMTk1MDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoODgyNzUpLHg9T2JqZWN0O1FlLmV4cG9ydHM9ZnVuY3Rpb24obSl7cmV0dXJuIHgob2UobSkpfX0sODU2NTY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDQ2OTI2KSx4PVIo''@;'; put 'put ''MzI2MzMpLG09Uig5Mjk5OCksc2U9Uig4NjExNSksTT1SKDkzODY1KSxPPVIoNTgwMTIpLEk9VHlwZUVycm9yLGo9TygidG9QcmltaXRpdmUiKTtRZS5leHBvcnRzPWZ1bmN0aW9uKEcsRCl7aWYoIXgoRyl8fG0oRykpcmV0dXJuIEc7dmFyIEUsVD1zZShHLGopO2lmKFQpe2lmKHZvaWQgMD09''@;'; put 'put ''PUQmJihEPSJkZWZhdWx0IiksRT1vZShULEcsRCksIXgoRSl8fG0oRSkpcmV0dXJuIEU7dGhyb3cgbmV3IEkoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT1EJiYoRD0ibnVtYmVyIiksTShHLEQpfX0sNTk0MTA6KFFlLE1lLFIpPT57''@;'; put 'put ''InVzZSBzdHJpY3QiO3ZhciBvZT1SKDg1NjU2KSx4PVIoOTI5OTgpO1FlLmV4cG9ydHM9ZnVuY3Rpb24obSl7dmFyIHNlPW9lKG0sInN0cmluZyIpO3JldHVybiB4KHNlKT9zZTpzZSsiIn19LDM4NTk1OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbT17fTttW1IoNTgwMTIpKCJ0b1N0''@;'; put 'put ''cmluZ1RhZyIpXT0ieiIsUWUuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcobSl9LDY4MzMyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9Uig3MTgyNCkseD1TdHJpbmc7UWUuZXhwb3J0cz1mdW5jdGlvbihtKXtpZigiU3ltYm9sIj09PW9lKG0pKXRocm93IG5ldyBUeXBl''@;'; put 'put ''RXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIHgobSl9fSw3NTIxMjpRZT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTWU9U3RyaW5nO1FlLmV4cG9ydHM9ZnVuY3Rpb24oUil7dHJ5e3JldHVybiBNZShSKX1jYXRjaHtyZXR1cm4iT2JqZWN0In19''@;'; put 'put ''fSw2Mzk1MTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNTg2MDcpLHg9MCxtPU1hdGgucmFuZG9tKCksc2U9b2UoMS4udG9TdHJpbmcpO1FlLmV4cG9ydHM9ZnVuY3Rpb24oTSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1NPyIiOk0pKyIpXyIrc2UoKyt4K20sMzYpfX0s''@;'; put 'put ''NjY5OTU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDM2NTA2KTtRZS5leHBvcnRzPW9lJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSwyNjkyOTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoNDYzODcpLHg9Uig1NTU5''@;'; put 'put ''Mik7UWUuZXhwb3J0cz1vZSYmeChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbigpe30sInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSl9LDI3OTY3OlFlPT57InVzZSBzdHJpY3QiO3ZhciBNZT1UeXBlRXJy''@;'; put 'put ''b3I7UWUuZXhwb3J0cz1mdW5jdGlvbihSLG9lKXtpZihSPG9lKXRocm93IG5ldyBNZSgiTm90IGVub3VnaCBhcmd1bWVudHMiKTtyZXR1cm4gUn19LDQ4NjkxOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyMDU5OCkseD1SKDE5MTUwKSxtPW9lLldlYWtNYXA7UWUuZXhwb3J0''@;'; put 'put ''cz14KG0pJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKG0pKX0sNTgwMTI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDIwNTk4KSx4PVIoODc0ODQpLG09UigzOGUzKSxzZT1SKDYzOTUxKSxNPVIoMzY1MDYpLE89Uig2Njk5NSksST1vZS5TeW1ib2wsaj14KCJ3a3MiKSxH''@;'; put 'put ''PU8/SS5mb3J8fEk6SSYmSS53aXRob3V0U2V0dGVyfHxzZTtRZS5leHBvcnRzPWZ1bmN0aW9uKEQpe3JldHVybiBtKGosRCl8fChqW0RdPU0mJm0oSSxEKT9JW0RdOkcoIlN5bWJvbC4iK0QpKSxqW0RdfX0sMzI5MzA6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDEyMjAyKSx4''@;'; put 'put ''PVIoMzhlMyksbT1SKDM2Njc4KSxzZT1SKDQ2OCksTT1SKDIxNjEyKSxPPVIoNDg2MzkpLEk9Uig2MDMyMSksaj1SKDE3Mjk2KSxHPVIoMzkxMTYpLEQ9Uig2NDg1NSksVD1SKDIyMzA0KSxFPVIoNDYzODcpLHo9Uig4ODc4OCk7UWUuZXhwb3J0cz1mdW5jdGlvbihOLEIsWixZKXt2YXIgVT0i''@;'; put 'put ''c3RhY2tUcmFjZUxpbWl0IixxPVk/MjoxLEo9Ti5zcGxpdCgiLiIpLGVlPUpbSi5sZW5ndGgtMV0scmU9b2UuYXBwbHkobnVsbCxKKTtpZihyZSl7dmFyIGllPXJlLnByb3RvdHlwZTtpZigheiYmeChpZSwiY2F1c2UiKSYmZGVsZXRlIGllLmNhdXNlLCFaKXJldHVybiByZTt2YXIgdWU9b2Uo''@;'; put 'put ''IkVycm9yIiksbGU9QihmdW5jdGlvbihhZSxXKXt2YXIgYj1HKFk/VzphZSx2b2lkIDApLEE9WT9uZXcgcmUoYWUpOm5ldyByZTtyZXR1cm4gdm9pZCAwIT09YiYmbShBLCJtZXNzYWdlIixiKSxUKEEsbGUsQS5zdGFjaywyKSx0aGlzJiZzZShpZSx0aGlzKSYmaihBLHRoaXMsbGUpLGFyZ3Vt''@;'; put 'put ''ZW50cy5sZW5ndGg+cSYmRChBLGFyZ3VtZW50c1txXSksQX0pO2lmKGxlLnByb3RvdHlwZT1pZSwiRXJyb3IiIT09ZWU/TT9NKGxlLHVlKTpPKGxlLHVlLHtuYW1lOiEwfSk6RSYmVSBpbiByZSYmKEkobGUscmUsVSksSShsZSxyZSwicHJlcGFyZVN0YWNrVHJhY2UiKSksTyhsZSxyZSksIXop''@;'; put 'put ''dHJ5e2llLm5hbWUhPT1lZSYmbShpZSwibmFtZSIsZWUpLGllLmNvbnN0cnVjdG9yPWxlfWNhdGNoe31yZXR1cm4gbGV9fX0sMzkwOTI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4PVIoMzE5NTApLG09Uig3MTcxKSxzZT1SKDY0NTUwKSxNPVIoNzA4MjQpO29l''@;'; put 'put ''KHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2F0OmZ1bmN0aW9uKEkpe3ZhciBqPXgodGhpcyksRz1tKGopLEQ9c2UoSSksVD1EPj0wP0Q6RytEO3JldHVybiBUPDB8fFQ+PUc/dm9pZCAwOmpbVF19fSksTSgiYXQiKX0sNzc1MjU6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1S''@;'; put 'put ''KDI4MzY3KSx4PVIoMzE5NTApLG09Uig3MTcxKSxzZT1SKDM5MjA2KSxNPVIoMzMxNik7b2Uoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOlIoNTU1OTIpKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2''@;'; put 'put ''fSwxKX0pfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChEKXtyZXR1cm4gRCBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uKFQpe3ZhciBFPXgodGhpcyksej1tKEUpLE49''@;'; put 'put ''YXJndW1lbnRzLmxlbmd0aDtNKHorTik7Zm9yKHZhciBCPTA7QjxOO0IrKylFW3pdPWFyZ3VtZW50c1tCXSx6Kys7cmV0dXJuIHNlKEUseiksen19KX0sNjgxNDY6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1IoNzA4MjQpKCJmbGF0TWFwIil9LDkzOTA5OihRZSxNZSxSKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0IjtSKDcwODI0KSgiZmxhdCIpfSwyOTc2MDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjgzNjcpLHg9UigzMTk1MCksbT1SKDcxNzEpLHNlPVIoMzkyMDYpLE09Uig0MzE5NSksTz1SKDMzMTYpO29lKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNl''@;'; put 'put ''ZDoxIT09W10udW5zaGlmdCgwKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS51bnNoaWZ0KCl9Y2F0Y2goRCl7cmV0dXJuIEQgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7dW5zaGlmdDpmdW5jdGlvbihUKXt2YXIg''@;'; put 'put ''RT14KHRoaXMpLHo9bShFKSxOPWFyZ3VtZW50cy5sZW5ndGg7aWYoTil7Tyh6K04pO2Zvcih2YXIgQj16O0ItLTspe3ZhciBaPUIrTjtCIGluIEU/RVtaXT1FW0JdOk0oRSxaKX1mb3IodmFyIFk9MDtZPE47WSsrKUVbWV09YXJndW1lbnRzW1ldfXJldHVybiBzZShFLHorTil9fSl9LDQ5NTM3''@;'; put 'put ''OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyODM2NykseD1SKDIwNTk4KSxtPVIoNDAyMjApLHNlPVIoMzI5MzApLE09IldlYkFzc2VtYmx5IixPPXhbTV0sST03IT09bmV3IEVycm9yKCJlIix7Y2F1c2U6N30pLmNhdXNlLGo9ZnVuY3Rpb24oRCxUKXt2YXIgRT17fTtFW0Rd''@;'; put 'put ''PXNlKEQsVCxJKSxvZSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGFyaXR5OjEsZm9yY2VkOkl9LEUpfSxHPWZ1bmN0aW9uKEQsVCl7aWYoTyYmT1tEXSl7dmFyIEU9e307RVtEXT1zZShNKyIuIitELFQsSSksb2Uoe3RhcmdldDpNLHN0YXQ6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6MSxm''@;'; put 'put ''b3JjZWQ6SX0sRSl9fTtqKCJFcnJvciIsZnVuY3Rpb24oRCl7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBtKEQsdGhpcyxhcmd1bWVudHMpfX0pLGooIkV2YWxFcnJvciIsZnVuY3Rpb24oRCl7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBtKEQsdGhpcyxhcmd1bWVudHMpfX0pLGooIlJh''@;'; put 'put ''bmdlRXJyb3IiLGZ1bmN0aW9uKEQpe3JldHVybiBmdW5jdGlvbihFKXtyZXR1cm4gbShELHRoaXMsYXJndW1lbnRzKX19KSxqKCJSZWZlcmVuY2VFcnJvciIsZnVuY3Rpb24oRCl7cmV0dXJuIGZ1bmN0aW9uKEUpe3JldHVybiBtKEQsdGhpcyxhcmd1bWVudHMpfX0pLGooIlN5bnRheEVycm9y''@;'; put 'put ''IixmdW5jdGlvbihEKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIG0oRCx0aGlzLGFyZ3VtZW50cyl9fSksaigiVHlwZUVycm9yIixmdW5jdGlvbihEKXtyZXR1cm4gZnVuY3Rpb24oRSl7cmV0dXJuIG0oRCx0aGlzLGFyZ3VtZW50cyl9fSksaigiVVJJRXJyb3IiLGZ1bmN0aW9uKEQpe3Jl''@;'; put 'put ''dHVybiBmdW5jdGlvbihFKXtyZXR1cm4gbShELHRoaXMsYXJndW1lbnRzKX19KSxHKCJDb21waWxlRXJyb3IiLGZ1bmN0aW9uKEQpe3JldHVybiBmdW5jdGlvbihFKXtyZXR1cm4gbShELHRoaXMsYXJndW1lbnRzKX19KSxHKCJMaW5rRXJyb3IiLGZ1bmN0aW9uKEQpe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihFKXtyZXR1cm4gbShELHRoaXMsYXJndW1lbnRzKX19KSxHKCJSdW50aW1lRXJyb3IiLGZ1bmN0aW9uKEQpe3JldHVybiBmdW5jdGlvbihFKXtyZXR1cm4gbShELHRoaXMsYXJndW1lbnRzKX19KX0sOTU0OTM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4PVIo''@;'; put 'put ''MTIyMDIpLG09Uig0MDIyMCksc2U9Uig0NjkyNiksTT1SKDU4NjA3KSxPPVIoNTU1OTIpLEk9UigxOTE1MCksaj1SKDkyOTk4KSxHPVIoNzc2MzkpLEQ9Uig4NDUyNCksVD1SKDM2NTA2KSxFPVN0cmluZyx6PXgoIkpTT04iLCJzdHJpbmdpZnkiKSxOPU0oLy4vLmV4ZWMpLEI9TSgiIi5jaGFy''@;'; put 'put ''QXQpLFo9TSgiIi5jaGFyQ29kZUF0KSxZPU0oIiIucmVwbGFjZSksVT1NKDEuLnRvU3RyaW5nKSxxPS9bXHVEODAwLVx1REZGRl0vZyxKPS9eW1x1RDgwMC1cdURCRkZdJC8sZWU9L15bXHVEQzAwLVx1REZGRl0kLyxyZT0hVHx8TyhmdW5jdGlvbigpe3ZhciBhZT14KCJTeW1ib2wiKSgic3Ry''@;'; put 'put ''aW5naWZ5IGRldGVjdGlvbiIpO3JldHVybiJbbnVsbF0iIT09eihbYWVdKXx8Int9IiE9PXooe2E6YWV9KXx8Int9IiE9PXooT2JqZWN0KGFlKSl9KSxpZT1PKGZ1bmN0aW9uKCl7cmV0dXJuJyJcXHVkZjA2XFx1ZDgzNCInIT09eigiXHVkZjA2XHVkODM0Iil8fCciXFx1ZGVhZCInIT09eigi''@;'; put 'put ''XHVkZWFkIil9KSx1ZT1mdW5jdGlvbihhZSxXKXt2YXIgYj1HKGFyZ3VtZW50cyksQT1EKFcpO2lmKEkoQSl8fHZvaWQgMCE9PWFlJiYhaihhZSkpcmV0dXJuIGJbMV09ZnVuY3Rpb24oRixIKXtpZihJKEEpJiYoSD1zZShBLHRoaXMsRShGKSxIKSksIWooSCkpcmV0dXJuIEh9LG0oeixudWxs''@;'; put 'put ''LGIpfSxsZT1mdW5jdGlvbihhZSxXLGIpe3ZhciBBPUIoYixXLTEpLEY9QihiLFcrMSk7cmV0dXJuIE4oSixhZSkmJiFOKGVlLEYpfHxOKGVlLGFlKSYmIU4oSixBKT8iXFx1IitVKFooYWUsMCksMTYpOmFlfTt6JiZvZSh7dGFyZ2V0OiJKU09OIixzdGF0OiEwLGFyaXR5OjMsZm9yY2VkOnJl''@;'; put 'put ''fHxpZX0se3N0cmluZ2lmeTpmdW5jdGlvbihXLGIsQSl7dmFyIEY9Ryhhcmd1bWVudHMpLEg9bShyZT91ZTp6LG51bGwsRik7cmV0dXJuIGllJiYic3RyaW5nIj09dHlwZW9mIEg/WShILHEsbGUpOkh9fSl9LDU3NzI6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4''@;'; put 'put ''PVIoMzA3ODcpLG09Uig1ODc5NSk7b2Uoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwfSx7ZnJvbUVudHJpZXM6ZnVuY3Rpb24oTSl7dmFyIE89e307cmV0dXJuIHgoTSxmdW5jdGlvbihJLGope20oTyxJLGopfSx7QVNfRU5UUklFUzohMH0pLE99fSl9LDY5ODc1OihRZSxNZSxSKT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgb2U9UigyODM2NykseD1SKDgwMjEzKTtvZSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFSKDUzNTA1KSgiZGlmZmVyZW5jZSIpfSx7ZGlmZmVyZW5jZTp4fSl9LDE2MDkzOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyODM2Nyks''@;'; put 'put ''eD1SKDU1NTkyKSxtPVIoNjE4NzkpO29lKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IVIoNTM1MDUpKCJpbnRlcnNlY3Rpb24iKXx8eChmdW5jdGlvbigpe3JldHVybiIzLDIiIT09U3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwyLDNdKS5pbnRlcnNlY3Rpb24o''@;'; put 'put ''bmV3IFNldChbMywyXSkpKSl9KX0se2ludGVyc2VjdGlvbjptfSl9LDk1NjA4OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgb2U9UigyODM2NykseD1SKDczNjI0KTtvZSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFSKDUzNTA1KSgiaXNEaXNqb2ludEZyb20i''@;'; put 'put ''KX0se2lzRGlzam9pbnRGcm9tOnh9KX0sMTY0OTM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4PVIoNzQ4MzkpO29lKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IVIoNTM1MDUpKCJpc1N1YnNldE9mIil9LHtpc1N1YnNldE9mOnh9KX0s''@;'; put 'put ''NjE5MzQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4PVIoOTYwNjIpO29lKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IVIoNTM1MDUpKCJpc1N1cGVyc2V0T2YiKX0se2lzU3VwZXJzZXRPZjp4fSl9LDEwMTAxOihRZSxNZSxSKT0+eyJ1''@;'; put 'put ''c2Ugc3RyaWN0Ijt2YXIgb2U9UigyODM2NykseD1SKDg1MDM5KTtvZSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFSKDUzNTA1KSgic3ltbWV0cmljRGlmZmVyZW5jZSIpfSx7c3ltbWV0cmljRGlmZmVyZW5jZTp4fSl9LDI2ODg5OihRZSxNZSxSKT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgb2U9UigyODM2NykseD1SKDIwNTA3KTtvZSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFSKDUzNTA1KSgidW5pb24iKX0se3VuaW9uOnh9KX0sMTYyMjk6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO3ZhciBvZT1SKDI4MzY3KSx4PVIoNDY5MjYpLG09''@;'; put 'put ''Uig1ODYwNyksc2U9Uig4ODI3NSksTT1SKDE5MTUwKSxPPVIoOTQ0NjgpLEk9Uig4ODg2Nyksaj1SKDY4MzMyKSxHPVIoODYxMTUpLEQ9UigzNzA3NSksVD1SKDk2MzM5KSxFPVIoNTgwMTIpLHo9Uig4ODc4OCksTj1FKCJyZXBsYWNlIiksQj1UeXBlRXJyb3IsWj1tKCIiLmluZGV4T2YpLFk9''@;'; put 'put ''bSgiIi5yZXBsYWNlKSxVPW0oIiIuc2xpY2UpLHE9TWF0aC5tYXg7b2Uoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGxhY2VBbGw6ZnVuY3Rpb24oZWUscmUpe3ZhciB1ZSxsZSxhZSxXLGIsQSxGLEgsZyxpZT1zZSh0aGlzKSxDPTAsaz0wLF89IiI7aWYoIU8oZWUpKXtpZigodWU9''@;'; put 'put ''SShlZSkpJiYobGU9aihzZShEKGVlKSkpLCF+WihsZSwiZyIpKSl0aHJvdyBuZXcgQigiYC5yZXBsYWNlQWxsYCBkb2VzIG5vdCBhbGxvdyBub24tZ2xvYmFsIHJlZ2V4ZXMiKTtpZihhZT1HKGVlLE4pKXJldHVybiB4KGFlLGVlLGllLHJlKTtpZih6JiZ1ZSlyZXR1cm4gWShqKGllKSxlZSxy''@;'; put 'put ''ZSl9Zm9yKFc9aihpZSksYj1qKGVlKSwoQT1NKHJlKSl8fChyZT1qKHJlKSksSD1xKDEsRj1iLmxlbmd0aCksQz1aKFcsYik7LTEhPT1DOylnPUE/aihyZShiLEMsVykpOlQoYixXLEMsW10sdm9pZCAwLHJlKSxfKz1VKFcsayxDKStnLGs9QytGLEM9QytIPlcubGVuZ3RoPy0xOlooVyxiLEMr''@;'; put 'put ''SCk7cmV0dXJuIGs8Vy5sZW5ndGgmJihfKz1VKFcsaykpLF99fSl9LDk5MDI2OihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0IjtSKDY5ODc1KX0sMTIyNjg6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1IoMTYwOTMpfSwzMjIyOTooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7Uig5NTYwOCl9LDQx''@;'; put 'put ''ODUyOihRZSxNZSxSKT0+eyJ1c2Ugc3RyaWN0IjtSKDE2NDkzKX0sNjIyNDM6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1IoNjE5MzQpfSw1ODI4MDooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7UigxMDEwMSl9LDk4MzQ6KFFlLE1lLFIpPT57InVzZSBzdHJpY3QiO1IoMjY4ODkpfSw2ODc2''@;'; put 'put ''ODooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjgzNjcpLHg9UigyMDU5OCksbT1SKDc1OTYpLmNsZWFyO29lKHtnbG9iYWw6ITAsYmluZDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDp4LmNsZWFySW1tZWRpYXRlIT09bX0se2NsZWFySW1tZWRpYXRlOm19KX0sMTAzNjM6KFFl''@;'; put 'put ''LE1lLFIpPT57InVzZSBzdHJpY3QiO1IoNjg3NjgpLFIoODIzMDYpfSw4MjMwNjooUWUsTWUsUik9PnsidXNlIHN0cmljdCI7dmFyIG9lPVIoMjgzNjcpLHg9UigyMDU5OCksbT1SKDc1OTYpLnNldCxzZT1SKDQzMjQ5KSxNPXguc2V0SW1tZWRpYXRlP3NlKG0sITEpOm07b2Uoe2dsb2JhbDoh''@;'; put 'put ''MCxiaW5kOiEwLGVudW1lcmFibGU6ITAsZm9yY2VkOnguc2V0SW1tZWRpYXRlIT09TX0se3NldEltbWVkaWF0ZTpNfSl9LDMyMTk6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImFlcy0xMjgtZWNiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MCwi''@;'; put 'put ''bW9kZSI6IkVDQiIsInR5cGUiOiJibG9jayJ9LCJhZXMtMTkyLWVjYiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjAsIm1vZGUiOiJFQ0IiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTI1Ni1lY2IiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjowLCJtb2RlIjoiRUNCIiwi''@;'; put 'put ''dHlwZSI6ImJsb2NrIn0sImFlcy0xMjgtY2JjIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDQkMiLCJ0eXBlIjoiYmxvY2sifSwiYWVzLTE5Mi1jYmMiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoxOTIsIml2IjoxNiwibW9kZSI6IkNCQyIsInR5cGUiOiJibG9j''@;'; put 'put ''ayJ9LCJhZXMtMjU2LWNiYyI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczEyOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczE5MiI6eyJj''@;'; put 'put ''aXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlczI1NiI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjI1NiwiaXYiOjE2LCJtb2RlIjoiQ0JDIiwidHlwZSI6ImJsb2NrIn0sImFlcy0xMjgtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtl''@;'; put 'put ''eSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJp''@;'; put 'put ''diI6MTYsIm1vZGUiOiJDRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY2ZiOCI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2RlIjoiQ0ZCOCIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmI4Ijp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYs''@;'; put 'put ''Im1vZGUiOiJDRkI4IiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjgiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNGQjgiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY2ZiMSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjEyOCwiaXYiOjE2LCJtb2Rl''@;'; put 'put ''IjoiQ0ZCMSIsInR5cGUiOiJzdHJlYW0ifSwiYWVzLTE5Mi1jZmIxIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDRkIxIiwidHlwZSI6InN0cmVhbSJ9LCJhZXMtMjU2LWNmYjEiOnsiY2lwaGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxNiwibW9kZSI6IkNG''@;'; put 'put ''QjEiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xOTItb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBl''@;'; put 'put ''Ijoic3RyZWFtIn0sImFlcy0yNTYtb2ZiIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJPRkIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0xMjgtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFt''@;'; put 'put ''In0sImFlcy0xOTItY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTkyLCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0yNTYtY3RyIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MjU2LCJpdiI6MTYsIm1vZGUiOiJDVFIiLCJ0eXBlIjoic3RyZWFtIn0sImFlcy0x''@;'; put 'put ''MjgtZ2NtIjp7ImNpcGhlciI6IkFFUyIsImtleSI6MTI4LCJpdiI6MTIsIm1vZGUiOiJHQ00iLCJ0eXBlIjoiYXV0aCJ9LCJhZXMtMTkyLWdjbSI6eyJjaXBoZXIiOiJBRVMiLCJrZXkiOjE5MiwiaXYiOjEyLCJtb2RlIjoiR0NNIiwidHlwZSI6ImF1dGgifSwiYWVzLTI1Ni1nY20iOnsiY2lw''@;'; put 'put ''aGVyIjoiQUVTIiwia2V5IjoyNTYsIml2IjoxMiwibW9kZSI6IkdDTSIsInR5cGUiOiJhdXRoIn19Jyl9LDYyOTUxOlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJzaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTIyNCIs''@;'; put 'put ''ImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwiUlNBLVNIQTIyNCI6eyJzaWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWMifSwic2hhMjU2V2l0aFJTQUVuY3J5cHRp''@;'; put 'put ''b24iOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwIn0sIlJTQS1TSEEyNTYiOnsic2lnbiI6ImVjZHNhL3JzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIw''@;'; put 'put ''MTA1MDAwNDIwIn0sInNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uIjp7InNpZ24iOiJyc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJSU0EtU0hBMzg0Ijp7InNpZ24iOiJlY2RzYS9yc2EiLCJoYXNoIjoic2hhMzg0Iiwi''@;'; put 'put ''aWQiOiIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMCJ9LCJzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbiI6eyJzaWduIjoicnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTUxMiI6eyJz''@;'; put 'put ''aWduIjoiZWNkc2EvcnNhIiwiaGFzaCI6InNoYTUxMiIsImlkIjoiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDAifSwiUlNBLVNIQTEiOnsic2lnbiI6InJzYSIsImhhc2giOiJzaGExIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQifSwiZWNkc2Et''@;'; put 'put ''d2l0aC1TSEExIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGExIiwiaWQiOiIifSwic2hhMjU2Ijp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGEyNTYiLCJpZCI6IiJ9LCJzaGEyMjQiOnsic2lnbiI6ImVjZHNhIiwiaGFzaCI6InNoYTIyNCIsImlkIjoiIn0sInNoYTM4NCI6eyJzaWdu''@;'; put 'put ''IjoiZWNkc2EiLCJoYXNoIjoic2hhMzg0IiwiaWQiOiIifSwic2hhNTEyIjp7InNpZ24iOiJlY2RzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMSIsImlkIjoiIn0sIkRTQS1TSEExIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoi''@;'; put 'put ''c2hhMSIsImlkIjoiIn0sIkRTQSI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTEiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEEyMjQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEyMjQiLCJpZCI6IiJ9LCJEU0EtU0hBMjI0Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjI0IiwiaWQiOiIi''@;'; put 'put ''fSwiRFNBLVdJVEgtU0hBMjU2Ijp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhMjU2IiwiaWQiOiIifSwiRFNBLVNIQTI1NiI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTI1NiIsImlkIjoiIn0sIkRTQS1XSVRILVNIQTM4NCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InNoYTM4NCIsImlkIjoi''@;'; put 'put ''In0sIkRTQS1TSEEzODQiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGEzODQiLCJpZCI6IiJ9LCJEU0EtV0lUSC1TSEE1MTIiOnsic2lnbiI6ImRzYSIsImhhc2giOiJzaGE1MTIiLCJpZCI6IiJ9LCJEU0EtU0hBNTEyIjp7InNpZ24iOiJkc2EiLCJoYXNoIjoic2hhNTEyIiwiaWQiOiIifSwi''@;'; put 'put ''RFNBLVJJUEVNRDE2MCI6eyJzaWduIjoiZHNhIiwiaGFzaCI6InJtZDE2MCIsImlkIjoiIn0sInJpcGVtZDE2MFdpdGhSU0EiOnsic2lnbiI6InJzYSIsImhhc2giOiJybWQxNjAiLCJpZCI6IjMwMjEzMDA5MDYwNTJiMjQwMzAyMDEwNTAwMDQxNCJ9LCJSU0EtUklQRU1EMTYwIjp7InNpZ24i''@;'; put 'put ''OiJyc2EiLCJoYXNoIjoicm1kMTYwIiwiaWQiOiIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTQifSwibWQ1V2l0aFJTQUVuY3J5cHRpb24iOnsic2lnbiI6InJzYSIsImhhc2giOiJtZDUiLCJpZCI6IjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMCJ9LCJSU0EtTUQ1''@;'; put 'put ''Ijp7InNpZ24iOiJyc2EiLCJoYXNoIjoibWQ1IiwiaWQiOiIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAifX0nKX0sNjQ1ODk6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjEuMy4xMzIuMC4xMCI6InNlY3AyNTZrMSIsIjEuMy4xMzIuMC4z''@;'; put 'put ''MyI6InAyMjQiLCIxLjIuODQwLjEwMDQ1LjMuMS4xIjoicDE5MiIsIjEuMi44NDAuMTAwNDUuMy4xLjciOiJwMjU2IiwiMS4zLjEzMi4wLjM0IjoicDM4NCIsIjEuMy4xMzIuMC4zNSI6InA1MjEifScpfSwyMzI0MTpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPUpTT04ucGFyc2UoJ3si''@;'; put 'put ''bW9kcDEiOnsiZ2VuIjoiMDIiLCJwcmltZSI6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2''@;'; put 'put ''ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZiJ9LCJtb2RwMiI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzli''@;'; put 'put ''MjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZm''@;'; put 'put ''ZmZmZmZmZmZmZmZmZiJ9LCJtb2RwNSI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZk''@;'; put 'put ''ZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRj''@;'; put 'put ''ZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRj''@;'; put 'put ''NGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZi''@;'; put 'put ''ZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2Ex''@;'; put 'put ''ODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2OGZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE1Ijp7Imdl''@;'; put 'put ''biI6IjAyIiwicHJpbWUiOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1''@;'; put 'put ''YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYy''@;'; put 'put ''MDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1''@;'; put 'put ''MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3''@;'; put 'put ''NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmYifSwibW9kcDE2Ijp7ImdlbiI6IjAyIiwicHJpbWUiOiJmZmZmZmZm''@;'; put 'put ''ZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3''@;'; put 'put ''ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2''@;'; put 'put ''NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3''@;'; put 'put ''MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3''@;'; put 'put ''YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4''@;'; put 'put ''ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQz''@;'; put 'put ''NWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxNyI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNj''@;'; put 'put ''ZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQz''@;'; put 'put ''OWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUy''@;'; put 'put ''YmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUw''@;'; put 'put ''NGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdl''@;'; put 'put ''NmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4''@;'; put 'put ''MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNl''@;'; put 'put ''ZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4''@;'; put 'put ''MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBl''@;'; put 'put ''YjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmIn0sIm1vZHAxOCI6eyJnZW4iOiIwMiIsInByaW1lIjoiZmZmZmZmZmZmZmZmZmZmZmM5MGZk''@;'; put 'put ''YWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0''@;'; put 'put ''MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgw''@;'; put 'put ''NGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1''@;'; put 'put ''MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3''@;'; put 'put ''YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThl''@;'; put 'put ''ZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZj''@;'; put 'put ''M2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUx''@;'; put 'put ''MmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1''@;'; put 'put ''NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2''@;'; put 'put ''OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhi''@;'; put 'put ''ZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1''@;'; put 'put ''NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZj''@;'; put 'put ''ODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmYifX0nKX0sMTYzNjpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPXtyRToiNi41LjUifX0sNDMyNjc6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyI4NzQwIiwiXHU0M2Yw''@;'; put 'put ''XHU0YzMyXHU0NjAzXHU0NWE2XHU0NTc4XHV7MjcyNjd9XHU0ZDc3XHU0NWIzXHV7MjdjYjF9XHU0Y2UyXHV7MjdjYzV9XHUzYjk1XHU0NzM2XHU0NzQ0XHU0YzQ3XHU0YzQwXHV7MjQyYmZ9XHV7MjM2MTd9XHV7MjczNTJ9XHV7MjZlOGJ9XHV7MjcwZDJ9XHU0YzU3XHV7MmEzNTF9XHU0NzRm''@;'; put 'put ''XHU0NWRhXHU0Yzg1XHV7MjdjNmN9XHU0ZDA3XHU0YWE0XHU0NmExXHV7MjZiMjN9XHU3MjI1XHV7MjVhNTR9XHV7MjFhNjN9XHV7MjNlMDZ9XHV7MjNmNjF9XHU2NjRkXHU1NmZiIl0sWyI4NzY3IiwiXHU3ZDk1XHU1OTFkXHV7MjhiYjl9XHUzZGY0XHU5NzM0XHV7MjdiZWZ9XHU1YmRiXHV7''@;'; put 'put ''MjFkNWV9XHU1YWE0XHUzNjI1XHV7MjllYjB9XHU1YWQxXHU1YmI3XHU1Y2ZjXHU2NzZlXHU4NTkzXHV7Mjk5NDV9XHU3NDYxXHU3NDlkXHUzODc1XHV7MjFkNTN9XHV7MjM2OWV9XHV7MjYwMjF9XHUzZWVjIl0sWyI4N2ExIiwiXHV7MjU4ZGV9XHUzYWY1XHU3YWZjXHU5Zjk3XHV7MjQxNjF9''@;'; put 'put ''XHV7Mjg5MGR9XHV7MjMxZWF9XHV7MjBhOGF9XHV7MjMyNWV9XHU0MzBhXHU4NDg0XHU5Zjk2XHU5NDJmXHU0OTMwXHU4NjEzXHU1ODk2XHU5NzRhXHU5MjE4XHU3OWQwXHU3YTMyXHU2NjYwXHU2YTI5XHU4ODlkXHU3NDRjXHU3YmM1XHU2NzgyXHU3YTJjXHU1MjRmXHU5MDQ2XHUzNGU2XHU3''@;'; put 'put ''M2M0XHV7MjVkYjl9XHU3NGM2XHU5ZmM3XHU1N2IzXHU0OTJmXHU1NDRjXHU0MTMxXHV7MjM2OGV9XHU1ODE4XHU3YTcyXHV7MjdiNjV9XHU4YjhmXHU0NmFlXHV7MjZlODh9XHU0MTgxXHV7MjVkOTl9XHU3YmFlXHV7MjI0YmN9XHU5ZmM4XHV7MjI0YzF9XHV7MjI0Yzl9XHV7MjI0Y2N9XHU5''@;'; put 'put ''ZmM5XHU4NTA0XHV7MjM1YmJ9XHU0MGI0XHU5ZmNhXHU0NGUxXHV7MmFkZmZ9XHU2MmMxXHU3MDZlXHU5ZmNiIl0sWyI4ODQwIiwiXHUzMWMwIiw0LCJcdXsyMDEwY31cdTMxYzVcdXsyMDBkMX1cdXsyMDBjZH1cdTMxYzZcdTMxYzdcdXsyMDBjYn1cdXsyMWZlOH1cdTMxYzhcdXsyMDBjYX1c''@;'; put 'put ''dTMxYzlcdTMxY2FcdTMxY2JcdTMxY2NcdXsyMDEwZX1cdTMxY2RcdTMxY2VcdTAxMDBceGMxXHUwMWNkXHhjMFx1MDExMlx4YzlcdTAxMWFceGM4XHUwMTRjXHhkM1x1MDFkMVx4ZDJcdTBmZmZceGNhXHUwMzA0XHUxZWJlXHUwZmZmXHhjYVx1MDMwY1x1MWVjMFx4Y2FcdTAxMDFceGUxXHUw''@;'; put 'put ''MWNlXHhlMFx1MDI1MVx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQyXHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhIl0sWyI4OGExIiwiXHUwMWRjXHhmY1x1MGZmZlx4ZWFcdTAzMDRcdTFlYmZcdTBmZmZceGVh''@;'; put 'put ''XHUwMzBjXHUxZWMxXHhlYVx1MDI2MVx1MjNkYVx1MjNkYiJdLFsiODk0MCIsIlx1ezJhM2E5fVx1ezIxMTQ1fSJdLFsiODk0MyIsIlx1NjUwYSJdLFsiODk0NiIsIlx1NGUzZFx1NmVkZFx1OWQ0ZVx1OTFkZiJdLFsiODk0YyIsIlx1ezI3NzM1fVx1NjQ5MVx1NGYxYVx1NGYyOFx1NGZhOFx1''@;'; put 'put ''NTE1Nlx1NTE3NFx1NTE5Y1x1NTFlNFx1NTJhMVx1NTJhOFx1NTMzYlx1NTM0ZVx1NTNkMVx1NTNkOFx1NTZlMlx1NThmMFx1NTkwNFx1NTkwN1x1NTkzMlx1NTkzNFx1NWI2Nlx1NWI5ZVx1NWI5Zlx1NWM5YVx1NWU4Nlx1NjAzYlx1NjU4OVx1NjdmZVx1NjgwNFx1Njg2NVx1NmQ0ZVx1NzBi''@;'; put 'put ''Y1x1NzUzNVx1N2VhNFx1N2VhY1x1N2ViYVx1N2VjN1x1N2VjZlx1N2VkZlx1N2YwNlx1N2YzN1x1ODI3YVx1ODJjZlx1ODM2Zlx1ODljNlx1OGJiZVx1OGJlMlx1OGY2Nlx1OGY2N1x1OGY2ZSJdLFsiODlhMSIsIlx1NzQxMVx1N2NmY1x1N2RjZFx1Njk0Nlx1N2FjOVx1NTIyNyJdLFsiODlh''@;'; put 'put ''YiIsIlx1OTE4Y1x1NzhiOFx1OTE1ZVx1ODBiYyJdLFsiODliMCIsIlx1OGQwYlx1ODBmNlx1ezIwOWU3fSJdLFsiODliNSIsIlx1ODA5Zlx1OWVjN1x1NGNjZFx1OWRjOVx1OWUwY1x1NGMzZVx1ezI5ZGY2fVx1ezI3MDBlfVx1OWUwYVx1ezJhMTMzfVx1MzVjMSJdLFsiODljMSIsIlx1NmU5''@;'; put 'put ''YVx1ODIzZVx1NzUxOSJdLFsiODljNSIsIlx1NDkxMVx1OWE2Y1x1OWE4Zlx1OWY5OVx1Nzk4N1x1ezI4NDZjfVx1ezIxZGNhfVx1ezIwNWQwfVx1ezIyYWU2fVx1NGUyNFx1NGU4MVx1NGU4MFx1NGU4N1x1NGViZlx1NGVlYlx1NGYzN1x1MzQ0Y1x1NGZiZFx1M2U0OFx1NTAwM1x1NTA4OFx1''@;'; put 'put ''MzQ3ZFx1MzQ5M1x1MzRhNVx1NTE4Nlx1NTkwNVx1NTFkYlx1NTFmY1x1NTIwNVx1NGU4OVx1NTI3OVx1NTI5MFx1NTMyN1x1MzVjN1x1NTNhOVx1MzU1MVx1NTNiMFx1MzU1M1x1NTNjMlx1NTQyM1x1MzU2ZFx1MzU3Mlx1MzY4MVx1NTQ5M1x1NTRhM1x1NTRiNFx1NTRiOVx1NTRkMFx1NTRl''@;'; put 'put ''Zlx1NTUxOFx1NTUyM1x1NTUyOFx1MzU5OFx1NTUzZlx1MzVhNVx1MzViZlx1NTVkN1x1MzVjNSJdLFsiOGE0MCIsIlx1ezI3ZDg0fVx1NTUyNSJdLFsiOGE0MyIsIlx1ezIwYzQyfVx1ezIwZDE1fVx1ezI1MTJifVx1NTU5MFx1ezIyY2M2fVx1MzllY1x1ezIwMzQxfVx1OGU0Nlx1ezI0ZGI4''@;'; put 'put ''fVx1ezI5NGU1fVx1NDA1M1x1ezI4MGJlfVx1Nzc3YVx1ezIyYzM4fVx1M2EzNFx1NDdkNVx1ezI4MTVkfVx1ezI2OWYyfVx1ezI0ZGVhfVx1NjRkZFx1ezIwZDdjfVx1ezIwZmI0fVx1ezIwY2Q1fVx1ezIxMGY0fVx1NjQ4ZFx1OGU3ZVx1ezIwZTk2fVx1ezIwYzBifVx1ezIwZjY0fVx1ezIy''@;'; put 'put ''Y2E5fVx1ezI4MjU2fVx1ezI0NGQzfSJdLFsiOGE2NCIsIlx1ezIwZDQ2fVx1ezI5YTRkfVx1ezI4MGU5fVx1NDdmNFx1ezI0ZWE3fVx1ezIyY2MyfVx1OWFiMlx1M2E2N1x1ezI5NWY0fVx1M2ZlZFx1MzUwNlx1ezI1MmM3fVx1ezI5N2Q0fVx1ezI3OGM4fVx1ezIyZDQ0fVx1OWQ2ZVx1OTgx''@;'; put 'put ''NSJdLFsiOGE3NiIsIlx1NDNkOVx1ezI2MGE1fVx1NjRiNFx1NTRlM1x1ezIyZDRjfVx1ezIyYmNhfVx1ezIxMDc3fVx1MzlmYlx1ezIxMDZmfSJdLFsiOGFhMSIsIlx1ezI2NmRhfVx1ezI2NzE2fVx1ezI3OWEwfVx1NjRlYVx1ezI1MDUyfVx1ezIwYzQzfVx1OGU2OFx1ezIyMWExfVx1ezI4''@;'; put 'put ''YjRjfVx1ezIwNzMxfSJdLFsiOGFhYyIsIlx1NDgwYlx1ezIwMWE5fVx1M2ZmYVx1NTg3M1x1ezIyZDhkfSJdLFsiOGFiMiIsIlx1ezI0NWM4fVx1ezIwNGZjfVx1ezI2MDk3fVx1ezIwZjRjfVx1ezIwZDk2fVx1NTU3OVx1NDBiYlx1NDNiYSJdLFsiOGFiYiIsIlx1NGFiNFx1ezIyYTY2fVx1''@;'; put 'put ''ezIxMDlkfVx1ODFhYVx1OThmNVx1ezIwZDljfVx1NjM3OVx1MzlmZVx1ezIyNzc1fVx1OGRjMFx1NTZhMVx1NjQ3Y1x1M2U0MyJdLFsiOGFjOSIsIlx1ezJhNjAxfVx1ezIwZTA5fVx1ezIyYWNmfVx1ezIyY2M5fSJdLFsiOGFjZSIsIlx1ezIxMGM4fVx1ezIzOWMyfVx1Mzk5Mlx1M2EwNlx1''@;'; put 'put ''ezI4MjlifVx1MzU3OFx1ezI1ZTQ5fVx1ezIyMGM3fVx1NTY1Mlx1ezIwZjMxfVx1ezIyY2IyfVx1ezI5NzIwfVx1MzRiY1x1NmMzZFx1ezI0ZTNifSJdLFsiOGFkZiIsIlx1ezI3NTc0fVx1ezIyZThifVx1ezIyMjA4fVx1ezJhNjVifVx1ezI4Y2NkfVx1ezIwZTdhfVx1ezIwYzM0fVx1ezI2''@;'; put 'put ''ODFjfVx1N2Y5M1x1ezIxMGNmfVx1ezIyODAzfVx1ezIyOTM5fVx1MzVmYlx1ezI1MWUzfVx1ezIwZThjfVx1ezIwZjhkfVx1ezIwZWFhfVx1M2Y5M1x1ezIwZjMwfVx1ezIwZDQ3fVx1ezIxMTRmfVx1ezIwZTRjfSJdLFsiOGFmNiIsIlx1ezIwZWFifVx1ezIwYmE5fVx1ezIwZDQ4fVx1ezIx''@;'; put 'put ''MGMwfVx1ezIxMTNkfVx1M2ZmOVx1ezIyNjk2fVx1NjQzMlx1ezIwZmFkfSJdLFsiOGI0MCIsIlx1ezIzM2Y0fVx1ezI3NjM5fVx1ezIyYmNlfVx1ezIwZDdlfVx1ezIwZDdmfVx1ezIyYzUxfVx1ezIyYzU1fVx1M2ExOFx1ezIwZTk4fVx1ezIxMGM3fVx1ezIwZjJlfVx1ezJhNjMyfVx1ezI2''@;'; put 'put ''YjUwfVx1ezI4Y2QyfVx1ezI4ZDk5fVx1ezI4Y2NhfVx1OTVhYVx1NTRjY1x1ODJjNFx1NTViOSJdLFsiOGI1NSIsIlx1ezI5ZWMzfVx1OWMyNlx1OWFiNlx1ezI3NzVlfVx1ezIyZGVlfVx1NzE0MFx1ODE2ZFx1ODBlY1x1NWMxY1x1ezI2NTcyfVx1ODEzNFx1Mzc5N1x1NTM1Zlx1ezI4MGJk''@;'; put 'put ''fVx1OTFiNlx1ezIwZWZhfVx1ezIwZTBmfVx1ezIwZTc3fVx1ezIwZWZifVx1MzVkZFx1ezI0ZGVifVx1MzYwOVx1ezIwY2Q2fVx1NTZhZlx1ezIyN2I1fVx1ezIxMGM5fVx1ezIwZTEwfVx1ezIwZTc4fVx1ezIxMDc4fVx1ezIxMTQ4fVx1ezI4MjA3fVx1ezIxNDU1fVx1ezIwZTc5fVx1ezI0''@;'; put 'put ''ZTUwfVx1ezIyZGE0fVx1NWE1NFx1ezIxMDFkfVx1ezIxMDFlfVx1ezIxMGY1fVx1ezIxMGY2fVx1NTc5Y1x1ezIwZTExfSJdLFsiOGJhMSIsIlx1ezI3Njk0fVx1ezI4MmNkfVx1ezIwZmI1fVx1ezIwZTdifVx1ezI1MTdlfVx1MzcwM1x1ezIwZmI2fVx1ezIxMTgwfVx1ezI1MmQ4fVx1ezJh''@;'; put 'put ''MmJkfVx1ezI0OWRhfVx1ezIxODNhfVx1ezI0MTc3fVx1ezI4MjdjfVx1NTg5OVx1NTI2OFx1MzYxYVx1ezI1NzNkfVx1N2JiMlx1NWI2OFx1NDgwMFx1NGIyY1x1OWYyN1x1NDllN1x1OWMxZlx1OWI4ZFx1ezI1Yjc0fVx1ezIzMTNkfVx1NTVmYlx1MzVmMlx1NTY4OVx1NGUyOFx1NTkwMlx1''@;'; put 'put ''ezIxYmMxfVx1ezJmODc4fVx1OTc1MVx1ezIwMDg2fVx1NGU1Ylx1NGViYlx1MzUzZVx1NWMyM1x1NWY1MVx1NWZjNFx1MzhmYVx1NjI0Y1x1NjUzNVx1NmI3YVx1NmMzNVx1NmMzYVx1NzA2Y1x1NzIyYlx1NGUyY1x1NzJhZFx1ezI0OGU5fVx1N2Y1Mlx1NzkzYlx1N2NmOVx1N2Y1M1x1ezI2''@;'; put 'put ''MjZhfVx1MzRjMSJdLFsiOGJkZSIsIlx1ezI2MzRifVx1ODAwMlx1ODA4MFx1ezI2NjEyfVx1ezI2OTUxfVx1NTM1ZFx1ODg2NFx1ODljMVx1ezI3OGIyfVx1OGJhMFx1OGQxZFx1OTQ4NVx1OTU3OFx1OTU3Zlx1OTVlOFx1ezI4ZTBmfVx1OTdlNlx1OTg3NVx1OThjZVx1OThkZVx1OTk2M1x1''@;'; put 'put ''ezI5ODEwfVx1OWM3Y1x1OWUxZlx1OWVjNFx1NmI2Zlx1ZjkwN1x1NGUzN1x1ezIwMDg3fVx1OTYxZFx1NjIzN1x1OTRhMiJdLFsiOGM0MCIsIlx1NTAzYlx1NmRmZVx1ezI5YzczfVx1OWZhNlx1M2RjOVx1ODg4Zlx1ezI0MTRlfVx1NzA3N1x1NWNmNVx1NGIyMFx1ezI1MWNkfVx1MzU1OVx1''@;'; put 'put ''ezI1ZDMwfVx1NjEyMlx1ezI4YTMyfVx1OGZhN1x1OTFmNlx1NzE5MVx1NjcxOVx1NzNiYVx1ezIzMjgxfVx1ezJhMTA3fVx1M2M4Ylx1ezIxOTgwfVx1NGIxMFx1NzhlNFx1NzQwMlx1NTFhZVx1ezI4NzBmfVx1NDAwOVx1NmE2M1x1ezJhMmJhfVx1NDIyM1x1ODYwZlx1ezIwYTZmfVx1N2Ey''@;'; put 'put ''YVx1ezI5OTQ3fVx1ezI4YWVhfVx1OTc1NVx1NzA0ZFx1NTMyNFx1ezIyMDdlfVx1OTNmNFx1NzZkOVx1ezI4OWUzfVx1OWZhN1x1NzdkZFx1NGVhM1x1NGZmMFx1NTBiY1x1NGUyZlx1NGYxN1x1OWZhOFx1NTQzNFx1N2Q4Ylx1NTg5Mlx1NThkMFx1ezIxZGI2fVx1NWU5Mlx1NWU5OVx1NWZj''@;'; put 'put ''Mlx1ezIyNzEyfVx1NjU4YiJdLFsiOGNhMSIsIlx1ezIzM2Y5fVx1NjkxOVx1NmE0M1x1ezIzYzYzfVx1NmNmZiJdLFsiOGNhNyIsIlx1NzIwMFx1ezI0NTA1fVx1NzM4Y1x1M2VkYlx1ezI0YTEzfVx1NWIxNVx1NzRiOVx1OGI4M1x1ezI1Y2E0fVx1ezI1Njk1fVx1N2E5M1x1N2JlY1x1N2Nj''@;'; put 'put ''M1x1N2U2Y1x1ODJmOFx1ODU5N1x1OWZhOVx1ODg5MFx1OWZhYVx1OGViOVx1OWZhYlx1OGZjZlx1ODU1Zlx1OTllMFx1OTIyMVx1OWZhY1x1ezI4ZGI5fVx1ezIxNDNmfVx1NDA3MVx1NDJhMlx1NWExYSJdLFsiOGNjOSIsIlx1OTg2OFx1Njc2Ylx1NDI3Nlx1NTczZCJdLFsiOGNjZSIsIlx1''@;'; put 'put ''ODVkNlx1ezI0OTdifVx1ODJiZlx1ezI3MTBkfVx1NGM4MVx1ezI2ZDc0fVx1NWQ3Ylx1ezI2YjE1fVx1ezI2ZmJlfVx1OWZhZFx1OWZhZVx1NWI5Nlx1OWZhZlx1NjZlN1x1N2U1Ylx1NmU1N1x1NzljYVx1M2Q4OFx1NDRjM1x1ezIzMjU2fVx1ezIyNzk2fVx1NDM5YVx1NDUzNiJdLFsiOGNl''@;'; put 'put ''NiIsIlx1NWNkNVx1ezIzYjFhfVx1OGFmOVx1NWM3OFx1M2QxMlx1ezIzNTUxfVx1NWQ3OFx1OWZiMlx1NzE1N1x1NDU1OFx1ezI0MGVjfVx1ezIxZTIzfVx1NGM3N1x1Mzk3OFx1MzQ0YVx1ezIwMWE0fVx1ezI2YzQxfVx1OGFjY1x1NGZiNFx1ezIwMjM5fVx1NTliZlx1ODE2Y1x1OTg1Nlx1''@;'; put 'put ''ezI5OGZhfVx1NWYzYiJdLFsiOGQ0MCIsIlx1ezIwYjlmfSJdLFsiOGQ0MiIsIlx1ezIyMWMxfVx1ezI4OTZkfVx1NDEwMlx1NDZiYlx1ezI5MDc5fVx1M2YwN1x1OWZiM1x1ezJhMWI1fVx1NDBmOFx1MzdkNlx1NDZmN1x1ezI2YzQ2fVx1NDE3Y1x1ezI4NmIyfVx1ezI3M2ZmfVx1NDU2ZFx1''@;'; put 'put ''MzhkNFx1ezI1NDlhfVx1NDU2MVx1NDUxYlx1NGQ4OVx1NGM3Ylx1NGQ3Nlx1NDVlYVx1M2ZjOFx1ezI0YjBmfVx1MzY2MVx1NDRkZVx1NDRiZFx1NDFlZFx1NWQzZVx1NWQ0OFx1NWQ1Nlx1M2RmY1x1MzgwZlx1NWRhNFx1NWRiOVx1MzgyMFx1MzgzOFx1NWU0Mlx1NWViZFx1NWYyNVx1NWY4''@;'; put 'put ''M1x1MzkwOFx1MzkxNFx1MzkzZlx1Mzk0ZFx1NjBkN1x1NjEzZFx1NWNlNVx1Mzk4OVx1NjFiN1x1NjFiOVx1NjFjZlx1MzliOFx1NjIyY1x1NjI5MFx1NjJlNVx1NjMxOFx1MzlmOFx1NTZiMSJdLFsiOGRhMSIsIlx1M2EwM1x1NjNlMlx1NjNmYlx1NjQwN1x1NjQ1YVx1M2E0Ylx1NjRjMFx1''@;'; put 'put ''NWQxNVx1NTYyMVx1OWY5Zlx1M2E5N1x1NjU4Nlx1M2FiZFx1NjVmZlx1NjY1M1x1M2FmMlx1NjY5Mlx1M2IyMlx1NjcxNlx1M2I0Mlx1NjdhNFx1NjgwMFx1M2I1OFx1Njg0YVx1Njg4NFx1M2I3Mlx1M2I3MVx1M2I3Ylx1NjkwOVx1Njk0M1x1NzI1Y1x1Njk2NFx1Njk5Zlx1Njk4NVx1M2Ji''@;'; put 'put ''Y1x1NjlkNlx1M2JkZFx1NmE2NVx1NmE3NFx1NmE3MVx1NmE4Mlx1M2JlY1x1NmE5OVx1M2JmMlx1NmFhYlx1NmFiNVx1NmFkNFx1NmFmNlx1NmI4MVx1NmJjMVx1NmJlYVx1NmM3NVx1NmNhYVx1M2NjYlx1NmQwMlx1NmQwNlx1NmQyNlx1NmQ4MVx1M2NlZlx1NmRhNFx1NmRiMVx1NmUxNVx1''@;'; put 'put ''NmUxOFx1NmUyOVx1NmU4Nlx1ezI4OWMwfVx1NmViYlx1NmVlMlx1NmVkYVx1OWY3Zlx1NmVlOFx1NmVlOVx1NmYyNFx1NmYzNFx1M2Q0Nlx1ezIzZjQxfVx1NmY4MVx1NmZiZVx1M2Q2YVx1M2Q3NVx1NzFiN1x1NWM5OVx1M2Q4YVx1NzAyY1x1M2Q5MVx1NzA1MFx1NzA1NFx1NzA2Zlx1NzA3''@;'; put 'put ''Zlx1NzA4OVx1ezIwMzI1fVx1NDNjMVx1MzVmMVx1ezIwZWQ4fSJdLFsiOGU0MCIsIlx1ezIzZWQ3fVx1NTdiZVx1ezI2ZWQzfVx1NzEzZVx1ezI1N2UwfVx1MzY0ZVx1NjlhMlx1ezI4YmU5fVx1NWI3NFx1N2E0OVx1ezI1OGUxfVx1ezI5NGQ5fVx1N2E2NVx1N2E3ZFx1ezI1OWFjfVx1N2Fi''@;'; put 'put ''Ylx1N2FiMFx1N2FjMlx1N2FjM1x1NzFkMVx1ezI2NDhkfVx1NDFjYVx1N2FkYVx1N2FkZFx1N2FlYVx1NDFlZlx1NTRiMlx1ezI1YzAxfVx1N2IwYlx1N2I1NVx1N2IyOVx1ezI1MzBlfVx1ezI1Y2ZlfVx1N2JhMlx1N2I2Zlx1ODM5Y1x1ezI1YmI0fVx1ezI2YzdmfVx1N2JkMFx1ODQyMVx1''@;'; put 'put ''N2I5Mlx1N2JiOFx1ezI1ZDIwfVx1M2RhZFx1ezI1YzY1fVx1ODQ5Mlx1N2JmYVx1N2MwNlx1N2MzNVx1ezI1Y2MxfVx1N2M0NFx1N2M4M1x1ezI0ODgyfVx1N2NhNlx1NjY3ZFx1ezI0NTc4fVx1N2NjOVx1N2NjN1x1N2NlNlx1N2M3NFx1N2NmM1x1N2NmNVx1N2NjZSJdLFsiOGVhMSIsIlx1''@;'; put 'put ''N2U2N1x1NDUxZFx1ezI2ZTQ0fVx1N2Q1ZFx1ezI2ZWQ2fVx1NzQ4ZFx1N2Q4OVx1N2RhYlx1NzEzNVx1N2RiM1x1N2RkMlx1ezI0MDU3fVx1ezI2MDI5fVx1N2RlNFx1M2QxM1x1N2RmNVx1ezIxN2Y5fVx1N2RlNVx1ezI4MzZkfVx1N2UxZFx1ezI2MTIxfVx1ezI2MTVhfVx1N2U2ZVx1N2U5''@;'; put 'put ''Mlx1NDMyYlx1OTQ2Y1x1N2UyN1x1N2Y0MFx1N2Y0MVx1N2Y0N1x1NzkzNlx1ezI2MmQwfVx1OTllMVx1N2Y5N1x1ezI2MzUxfVx1N2ZhM1x1ezIxNjYxfVx1ezIwMDY4fVx1NDU1Y1x1ezIzNzY2fVx1NDUwM1x1ezI4MzNhfVx1N2ZmYVx1ezI2NDg5fVx1ODAwNVx1ODAwOFx1ODAxZFx1ODAy''@;'; put 'put ''OFx1ODAyZlx1ezJhMDg3fVx1ezI2Y2MzfVx1ODAzYlx1ODAzY1x1ODA2MVx1ezIyNzE0fVx1NDk4OVx1ezI2NjI2fVx1ezIzZGUzfVx1ezI2NmU4fVx1NjcyNVx1ODBhN1x1ezI4YTQ4fVx1ODEwN1x1ODExYVx1NThiMFx1ezIyNmY2fVx1NmM3Zlx1ezI2NDk4fVx1ezI0ZmI4fVx1NjRlN1x1''@;'; put 'put ''ezIxNDhhfVx1ODIxOFx1ezIxODVlfVx1NmE1M1x1ezI0YTY1fVx1ezI0YTk1fVx1NDQ3YVx1ODIyOVx1ezIwYjBkfVx1ezI2YTUyfVx1ezIzZDdlfVx1NGZmOVx1ezIxNGZkfVx1ODRlMlx1ODM2Mlx1ezI2YjBhfVx1ezI0OWE3fVx1ezIzNTMwfVx1ezIxNzczfVx1ezIzZGY4fVx1ODJhYVx1''@;'; put 'put ''NjkxYlx1ezJmOTk0fVx1NDFkYiJdLFsiOGY0MCIsIlx1ODU0Ylx1ODJkMFx1ODMxYVx1ezIwZTE2fVx1ezIxN2I0fVx1MzZjMVx1ezIzMTdkfVx1ezIzNTVhfVx1ODI3Ylx1ODJlMlx1ODMxOFx1ezIzZThifVx1ezI2ZGEzfVx1ezI2YjA1fVx1ezI2Yjk3fVx1ezIzNWNlfVx1M2RiZlx1ODMx''@;'; put 'put ''ZFx1NTVlY1x1ODM4NVx1NDUwYlx1ezI2ZGE1fVx1ODNhY1x1ODNjMVx1ODNkM1x1MzQ3ZVx1ezI2ZWQ0fVx1NmE1N1x1ODU1YVx1MzQ5Nlx1ezI2ZTQyfVx1ezIyZWVmfVx1ODQ1OFx1ezI1YmU0fVx1ODQ3MVx1M2RkM1x1NDRlNFx1NmFhN1x1ODQ0YVx1ezIzY2I1fVx1Nzk1OFx1ODRhOFx1''@;'; put 'put ''ezI2Yjk2fVx1ezI2ZTc3fVx1ezI2ZTQzfVx1ODRkZVx1ODQwZlx1ODM5MVx1NDRhMFx1ODQ5M1x1ODRlNFx1ezI1YzkxfVx1NDI0MFx1ezI1Y2MwfVx1NDU0M1x1ODUzNFx1NWFmMlx1ezI2ZTk5fVx1NDUyN1x1ODU3M1x1NDUxNlx1NjdiZlx1ODYxNiJdLFsiOGZhMSIsIlx1ezI4NjI1fVx1''@;'; put 'put ''ezI4NjNifVx1ODVjMVx1ezI3MDg4fVx1ODYwMlx1ezIxNTgyfVx1ezI3MGNkfVx1ezJmOWIyfVx1NDU2YVx1ODYyOFx1MzY0OFx1ezIxOGEyfVx1NTNmN1x1ezI3MzlhfVx1ODY3ZVx1ODc3MVx1ezJhMGY4fVx1ODdlZVx1ezIyYzI3fVx1ODdiMVx1ODdkYVx1ODgwZlx1NTY2MVx1ODY2Y1x1''@;'; put 'put ''Njg1Nlx1NDYwZlx1ODg0NVx1ODg0Nlx1ezI3NWUwfVx1ezIzZGI5fVx1ezI3NWU0fVx1ODg1ZVx1ODg5Y1x1NDY1Ylx1ODhiNFx1ODhiNVx1NjNjMVx1ODhjNVx1Nzc3N1x1ezI3NzBmfVx1ODk4N1x1ODk4YVx1ODlhNlx1ODlhOVx1ODlhN1x1ODliY1x1ezI4YTI1fVx1ODllN1x1ezI3OTI0''@;'; put 'put ''fVx1ezI3YWJkfVx1OGE5Y1x1Nzc5M1x1OTFmZVx1OGE5MFx1ezI3YTU5fVx1N2FlOVx1ezI3YjNhfVx1ezIzZjhmfVx1NDcxM1x1ezI3YjM4fVx1NzE3Y1x1OGIwY1x1OGIxZlx1ezI1NDMwfVx1ezI1NTY1fVx1OGIzZlx1OGI0Y1x1OGI0ZFx1OGFhOVx1ezI0YTdhfVx1OGI5MFx1OGI5Ylx1''@;'; put 'put ''OGFhZlx1ezIxNmRmfVx1NDYxNVx1ODg0Zlx1OGM5Ylx1ezI3ZDU0fVx1ezI3ZDhmfVx1ezJmOWQ0fVx1MzcyNVx1ezI3ZDUzfVx1OGNkNlx1ezI3ZDk4fVx1ezI3ZGJkfVx1OGQxMlx1OGQwM1x1ezIxOTEwfVx1OGNkYlx1NzA1Y1x1OGQxMVx1ezI0Y2M5fVx1M2VkMFx1OGQ3NyJdLFsiOTA0''@;'; put 'put ''MCIsIlx1OGRhOVx1ezI4MDAyfVx1ezIxMDE0fVx1ezI0OThhfVx1M2I3Y1x1ezI4MWJjfVx1ezI3MTBjfVx1N2FlN1x1OGVhZFx1OGViNlx1OGVjM1x1OTJkNFx1OGYxOVx1OGYyZFx1ezI4MzY1fVx1ezI4NDEyfVx1OGZhNVx1OTMwM1x1ezJhMjlmfVx1ezIwYTUwfVx1OGZiM1x1NDkyYVx1''@;'; put 'put ''ezI4OWRlfVx1ezI4NTNkfVx1ezIzZGJifVx1NWVmOFx1ezIzMjYyfVx1OGZmOVx1ezJhMDE0fVx1ezI4NmJjfVx1ezI4NTAxfVx1ezIyMzI1fVx1Mzk4MFx1ezI2ZWQ3fVx1OTAzN1x1ezI4NTNjfVx1ezI3YWJlfVx1OTA2MVx1ezI4NTZjfVx1ezI4NjBifVx1OTBhOFx1ezI4NzEzfVx1OTBj''@;'; put 'put ''NFx1ezI4NmU2fVx1OTBhZVx1OTBmZFx1OTE2N1x1M2FmMFx1OTFhOVx1OTFjNFx1N2NhY1x1ezI4OTMzfVx1ezIxZTg5fVx1OTIwZVx1NmM5Zlx1OTI0MVx1OTI2Mlx1ezI1NWI5fVx1OTJiOVx1ezI4YWM2fVx1ezIzYzlifVx1ezI4YjBjfVx1ezI1NWRifSJdLFsiOTBhMSIsIlx1ezIwZDMx''@;'; put 'put ''fVx1OTMyY1x1OTM2Ylx1ezI4YWUxfVx1ezI4YmVifVx1NzA4Zlx1NWFjM1x1ezI4YWUyfVx1ezI4YWU1fVx1NDk2NVx1OTI0NFx1ezI4YmVjfVx1ezI4YzM5fVx1ezI4YmZmfVx1OTM3M1x1OTQ1Ylx1OGViY1x1OTU4NVx1OTVhNlx1OTQyNlx1OTVhMFx1NmZmNlx1NDJiOVx1ezIyNjdhfVx1''@;'; put 'put ''ezI4NmQ4fVx1ezIxMjdjfVx1ezIzZTJlfVx1NDlkZlx1NmMxY1x1OTY3Ylx1OTY5Nlx1NDE2Y1x1OTZhM1x1ezI2ZWQ1fVx1NjFkYVx1OTZiNlx1NzhmNVx1ezI4YWUwfVx1OTZiZFx1NTNjY1x1NDlhMVx1ezI2Y2I4fVx1ezIwMjc0fVx1ezI2NDEwfVx1ezI5MGFmfVx1ezI5MGU1fVx1ezI0''@;'; put 'put ''YWQxfVx1ezIxOTE1fVx1ezIzMzBhfVx1OTczMVx1ODY0Mlx1OTczNlx1NGEwZlx1NDUzZFx1NDU4NVx1ezI0YWU5fVx1NzA3NVx1NWI0MVx1OTcxYlx1OTc1Y1x1ezI5MWQ1fVx1OTc1N1x1NWI0YVx1ezI5MWVifVx1OTc1Zlx1OTQyNVx1NTBkMFx1ezIzMGI3fVx1ezIzMGJjfVx1OTc4OVx1''@;'; put 'put ''OTc5Zlx1OTdiMVx1OTdiZVx1OTdjMFx1OTdkMlx1OTdlMFx1ezI1NDZjfVx1OTdlZVx1NzQxY1x1ezI5NDMzfVx1OTdmZlx1OTdmNVx1ezI5NDFkfVx1ezI3OTdhfVx1NGFkMVx1OTgzNFx1OTgzM1x1OTg0Ylx1OTg2Nlx1M2IwZVx1ezI3MTc1fVx1M2Q1MVx1ezIwNjMwfVx1ezI0MTVjfSJd''@;'; put 'put ''LFsiOTE0MCIsIlx1ezI1NzA2fVx1OThjYVx1OThiN1x1OThjOFx1OThjN1x1NGFmZlx1ezI2ZDI3fVx1ezIxNmQzfVx1NTViMFx1OThlMVx1OThlNlx1OThlY1x1OTM3OFx1OTkzOVx1ezI0YTI5fVx1NGI3Mlx1ezI5ODU3fVx1ezI5OTA1fVx1OTlmNVx1OWEwY1x1OWEzYlx1OWExMFx1OWE1''@;'; put 'put ''OFx1ezI1NzI1fVx1MzZjNFx1ezI5MGIxfVx1ezI5YmQ1fVx1OWFlMFx1OWFlMlx1ezI5YjA1fVx1OWFmNFx1NGMwZVx1OWIxNFx1OWIyZFx1ezI4NjAwfVx1NTAzNFx1OWIzNFx1ezI2OWE4fVx1MzhjM1x1ezIzMDdkfVx1OWI1MFx1OWI0MFx1ezI5ZDNlfVx1NWE0NVx1ezIxODYzfVx1OWI4''@;'; put 'put ''ZVx1ezI0MjRifVx1OWMwMlx1OWJmZlx1OWMwY1x1ezI5ZTY4fVx1OWRkNFx1ezI5ZmI3fVx1ezJhMTkyfVx1ezJhMWFifVx1ezJhMGUxfVx1ezJhMTIzfVx1ezJhMWRmfVx1OWQ3ZVx1OWQ4M1x1ezJhMTM0fVx1OWUwZVx1Njg4OCJdLFsiOTFhMSIsIlx1OWRjNFx1ezIyMTVifVx1ezJhMTkz''@;'; put 'put ''fVx1ezJhMjIwfVx1ezIxOTNifVx1ezJhMjMzfVx1OWQzOVx1ezJhMGI5fVx1ezJhMmI0fVx1OWU5MFx1OWU5NVx1OWU5ZVx1OWVhMlx1NGQzNFx1OWVhYVx1OWVhZlx1ezI0MzY0fVx1OWVjMVx1M2I2MFx1MzllNVx1M2QxZFx1NGYzMlx1MzdiZVx1ezI4YzJifVx1OWYwMlx1OWYwOFx1NGI5''@;'; put 'put ''Nlx1OTQyNFx1ezI2ZGEyfVx1OWYxN1x1OWYxNlx1OWYzOVx1NTY5Zlx1NTY4YVx1OWY0NVx1OTliOFx1ezI5MDhifVx1OTdmMlx1ODQ3Zlx1OWY2Mlx1OWY2OVx1N2FkY1x1OWY4ZVx1NzIxNlx1NGJiZVx1ezI0OTc1fVx1ezI0OWJifVx1NzE3N1x1ezI0OWY4fVx1ezI0MzQ4fVx1ezI0YTUx''@;'; put 'put ''fVx1NzM5ZVx1ezI4YmRhfVx1ezIxOGZhfVx1Nzk5Zlx1ezI4OTdlfVx1ezI4ZTM2fVx1OTM2OVx1OTNmM1x1ezI4YTQ0fVx1OTJlY1x1OTM4MVx1OTNjYlx1ezI4OTZjfVx1ezI0NGI5fVx1NzIxN1x1M2VlYlx1Nzc3Mlx1N2E0M1x1NzBkMFx1ezI0NDczfVx1ezI0M2Y4fVx1NzE3ZVx1ezIx''@;'; put 'put ''N2VmfVx1NzBhM1x1ezIxOGJlfVx1ezIzNTk5fVx1M2VjN1x1ezIxODg1fVx1ezI1NDJmfVx1ezIxN2Y4fVx1MzcyMlx1ezIxNmZifVx1ezIxODM5fVx1MzZlMVx1ezIxNzc0fVx1ezIxOGQxfVx1ezI1ZjRifVx1MzcyM1x1ezIxNmMwfVx1NTc1Ylx1ezI0YTI1fVx1ezIxM2ZlfVx1ezIxMmE4''@;'; put 'put ''fSJdLFsiOTI0MCIsIlx1ezIxM2M2fVx1ezIxNGI2fVx1ODUwM1x1ezIzNmE2fVx1ODUwM1x1ODQ1NVx1ezI0OTk0fVx1ezI3MTY1fVx1ezIzZTMxfVx1ezI1NTVjfVx1ezIzZWZifVx1ezI3MDUyfVx1NDRmNFx1ezIzNmVlfVx1ezI5OTlkfVx1ezI2ZjI2fVx1NjdmOVx1MzczM1x1M2MxNVx1''@;'; put 'put ''M2RlN1x1NTg2Y1x1ezIxOTIyfVx1NjgxMFx1NDA1N1x1ezIzNzNmfVx1ezI0MGUxfVx1ezI0MDhifVx1ezI0MTBmfVx1ezI2YzIxfVx1NTRjYlx1NTY5ZVx1ezI2NmIxfVx1NTY5Mlx1ezIwZmRmfVx1ezIwYmE4fVx1ezIwZTBkfVx1OTNjNlx1ezI4YjEzfVx1OTM5Y1x1NGVmOFx1NTEyYlx1''@;'; put 'put ''MzgxOVx1ezI0NDM2fVx1NGViY1x1ezIwNDY1fVx1ezIwMzdmfVx1NGY0Ylx1NGY4YVx1ezI1NjUxfVx1NWE2OFx1ezIwMWFifVx1ezIwM2NifVx1Mzk5OVx1ezIwMzBhfVx1ezIwNDE0fVx1MzQzNVx1NGYyOVx1ezIwMmMwfVx1ezI4ZWIzfVx1ezIwMjc1fVx1OGFkYVx1ezIwMjBjfVx1NGU5''@;'; put 'put ''OCJdLFsiOTJhMSIsIlx1NTBjZFx1NTEwZFx1NGZhMlx1NGYwM1x1ezI0YTBlfVx1ezIzZThhfVx1NGY0Mlx1NTAyZVx1NTA2Y1x1NTA4MVx1NGZjY1x1NGZlNVx1NTA1OFx1NTBmY1x1NTE1OVx1NTE1Ylx1NTE1ZFx1NTE1ZVx1NmU3Nlx1ezIzNTk1fVx1ezIzZTM5fVx1ezIzZWJmfVx1NmQ3''@;'; put 'put ''Mlx1ezIxODg0fVx1ezIzZTg5fVx1NTFhOFx1NTFjM1x1ezIwNWUwfVx1NDRkZFx1ezIwNGEzfVx1ezIwNDkyfVx1ezIwNDkxfVx1OGQ3YVx1ezI4YTljfVx1ezIwNzBlfVx1NTI1OVx1NTJhNFx1ezIwODczfVx1NTJlMVx1OTM2ZVx1NDY3YVx1NzE4Y1x1ezI0MzhjfVx1ezIwYzIwfVx1ezI0''@;'; put 'put ''OWFjfVx1ezIxMGU0fVx1NjlkMVx1ezIwZTFkfVx1NzQ3OVx1M2VkZVx1NzQ5OVx1NzQxNFx1NzQ1Nlx1NzM5OFx1NGI4ZVx1ezI0YWJjfVx1ezI0MDhkfVx1NTNkMFx1MzU4NFx1NzIwZlx1ezI0MGM5fVx1NTViNFx1ezIwMzQ1fVx1NTRjZFx1ezIwYmM2fVx1NTcxZFx1OTI1ZFx1OTZmNFx1''@;'; put 'put ''OTM2Nlx1NTdkZFx1NTc4ZFx1NTc3Zlx1MzYzZVx1NThjYlx1NWE5OVx1ezI4YTQ2fVx1ezIxNmZhfVx1ezIxNzZmfVx1ezIxNzEwfVx1NWEyY1x1NTliOFx1OTI4Zlx1NWE3ZVx1NWFjZlx1NWExMlx1ezI1OTQ2fVx1ezIxOWYzfVx1ezIxODYxfVx1ezI0Mjk1fVx1MzZmNVx1NmQwNVx1NzQ0''@;'; put 'put ''M1x1NWEyMVx1ezI1ZTgzfSJdLFsiOTM0MCIsIlx1NWE4MVx1ezI4YmQ3fVx1ezIwNDEzfVx1OTNlMFx1NzQ4Y1x1ezIxMzAzfVx1NzEwNVx1NDk3Mlx1OTQwOFx1ezI4OWZifVx1OTNiZFx1MzdhMFx1NWMxZVx1NWM5ZVx1NWU1ZVx1NWU0OFx1ezIxOTk2fVx1ezIxOTdjfVx1ezIzYWVlfVx1''@;'; put 'put ''NWVjZFx1NWI0Zlx1ezIxOTAzfVx1ezIxOTA0fVx1MzcwMVx1ezIxOGEwfVx1MzZkZFx1ezIxNmZlfVx1MzZkM1x1ODEyYVx1ezI4YTQ3fVx1ezIxZGJhfVx1ezIzNDcyfVx1ezI4OWE4fVx1NWYwY1x1NWYwZVx1ezIxOTI3fVx1ezIxN2FifVx1NWE2Ylx1ezIxNzNifVx1NWI0NFx1ODYxNFx1''@;'; put 'put ''ezI3NWZkfVx1ODg2MFx1NjA3ZVx1ezIyODYwfVx1ezIyNjJifVx1NWZkYlx1M2ViOFx1ezIyNWFmfVx1ezIyNWJlfVx1ezI5MDg4fVx1ezI2ZjczfVx1NjFjMFx1ezIwMDNlfVx1ezIwMDQ2fVx1ezIyNjFifVx1NjE5OVx1NjE5OFx1NjA3NVx1ezIyYzlifVx1ezIyZDA3fVx1ezI0NmQ0fVx1''@;'; put 'put ''ezI5MTRkfSJdLFsiOTNhMSIsIlx1NjQ3MVx1ezI0NjY1fVx1ezIyYjZhfVx1M2EyOVx1ezIyYjIyfVx1ezIzNDUwfVx1ezI5OGVhfVx1ezIyZTc4fVx1NjMzN1x1ezJhNDVifVx1NjRiNlx1NjMzMVx1NjNkMVx1ezI0OWUzfVx1ezIyZDY3fVx1NjJhNFx1ezIyY2ExfVx1NjQzYlx1NjU2Ylx1''@;'; put 'put ''Njk3Mlx1M2JmNFx1ezIzMDhlfVx1ezIzMmFkfVx1ezI0OTg5fVx1ezIzMmFifVx1NTUwZFx1ezIzMmUwfVx1ezIxOGQ5fVx1ezI5NDNmfVx1NjZjZVx1ezIzMjg5fVx1ezIzMWIzfVx1M2FlMFx1NDE5MFx1ezI1NTg0fVx1ezI4YjIyfVx1ezI1NThmfVx1ezIxNmZjfVx1ezI1NTVifVx1ezI1''@;'; put 'put ''NDI1fVx1NzhlZVx1ezIzMTAzfVx1ezIxODJhfVx1ezIzMjM0fVx1MzQ2NFx1ezIzMjBmfVx1ezIzMTgyfVx1ezI0MmM5fVx1NjY4ZVx1ezI2ZDI0fVx1NjY2Ylx1NGI5M1x1NjYzMFx1ezI3ODcwfVx1ezIxZGVifVx1NjY2M1x1ezIzMmQyfVx1ezIzMmUxfVx1NjYxZVx1ezI1ODcyfVx1Mzhk''@;'; put 'put ''MVx1ezIzODNhfVx1ezIzN2JjfVx1M2I5OVx1ezIzN2EyfVx1ezIzM2ZlfVx1NzRkMFx1M2I5Nlx1Njc4Zlx1ezI0NjJhfVx1NjhiNlx1NjgxZVx1M2JjNFx1NmFiZVx1Mzg2M1x1ezIzN2Q1fVx1ezI0NDg3fVx1NmEzM1x1NmE1Mlx1NmFjOVx1NmIwNVx1ezIxOTEyfVx1NjUxMVx1Njg5OFx1''@;'; put 'put ''NmE0Y1x1M2JkN1x1NmE3YVx1NmI1N1x1ezIzZmMwfVx1ezIzYzlhfVx1OTNhMFx1OTJmMlx1ezI4YmVhfVx1ezI4YWNifSJdLFsiOTQ0MCIsIlx1OTI4OVx1ezI4MDFlfVx1ezI4OWRjfVx1OTQ2N1x1NmRhNVx1NmYwYlx1ezI0OWVjfVx1NmQ2N1x1ezIzZjdmfVx1M2Q4Zlx1NmUwNFx1ezI0''@;'; put 'put ''MDNjfVx1NWEzZFx1NmUwYVx1NTg0N1x1NmQyNFx1Nzg0Mlx1NzEzYlx1ezI0MzFhfVx1ezI0Mjc2fVx1NzBmMVx1NzI1MFx1NzI4N1x1NzI5NFx1ezI0NzhmfVx1ezI0NzI1fVx1NTE3OVx1ezI0YWE0fVx1ezIwNWVifVx1NzQ3YVx1ezIzZWY4fVx1ezIzNjVmfVx1ezI0YTRhfVx1ezI0OTE3''@;'; put 'put ''fVx1ezI1ZmUxfVx1M2YwNlx1M2ViMVx1ezI0YWRmfVx1ezI4YzIzfVx1ezIzZjM1fVx1NjBhN1x1M2VmM1x1NzRjY1x1NzQzY1x1OTM4N1x1NzQzN1x1NDQ5Zlx1ezI2ZGVhfVx1NDU1MVx1NzU4M1x1M2Y2M1x1ezI0Y2Q5fVx1ezI0ZDA2fVx1M2Y1OFx1NzU1NVx1NzY3M1x1ezJhNWM2fVx1''@;'; put 'put ''M2IxOVx1NzQ2OFx1ezI4YWNjfVx1ezI0OWFifVx1ezI0OThlfVx1M2FmYiJdLFsiOTRhMSIsIlx1M2RjZFx1ezI0YTRlfVx1M2VmZlx1ezI0OWM1fVx1ezI0OGYzfVx1OTFmYVx1NTczMlx1OTM0Mlx1ezI4YWUzfVx1ezIxODY0fVx1NTBkZlx1ezI1MjIxfVx1ezI1MWU3fVx1Nzc3OFx1ezIz''@;'; put 'put ''MjMyfVx1NzcwZVx1NzcwZlx1Nzc3Ylx1ezI0Njk3fVx1ezIzNzgxfVx1M2E1ZVx1ezI0OGYwfVx1NzQzOFx1NzQ5Ylx1M2ViZlx1ezI0YWJhfVx1ezI0YWM3fVx1NDBjOFx1ezI0YTk2fVx1ezI2MWFlfVx1OTMwN1x1ezI1NTgxfVx1NzgxZVx1Nzg4ZFx1Nzg4OFx1NzhkMlx1NzNkMFx1Nzk1''@;'; put 'put ''OVx1ezI3NzQxfVx1ezI1NmUzfVx1NDEwZVx1Nzk5Ylx1ODQ5Nlx1NzlhNVx1NmEyZFx1ezIzZWZhfVx1N2EzYVx1NzlmNFx1NDE2ZVx1ezIxNmU2fVx1NDEzMlx1OTIzNVx1NzlmMVx1ezIwZDRjfVx1ezI0OThjfVx1ezIwMjk5fVx1ezIzZGJhfVx1ezIxNzZlfVx1MzU5N1x1NTU2Ylx1MzU3''@;'; put 'put ''MFx1MzZhYVx1ezIwMWQ0fVx1ezIwYzBkfVx1N2FlMlx1NWE1OVx1ezIyNmY1fVx1ezI1YWFmfVx1ezI1YTljfVx1NWEwZFx1ezIwMjVifVx1NzhmMFx1NWEyYVx1ezI1YmM2fVx1N2FmZVx1NDFmOVx1N2M1ZFx1N2M2ZFx1NDIxMVx1ezI1YmIzfVx1ezI1ZWJjfVx1ezI1ZWE2fVx1N2NjZFx1''@;'; put 'put ''ezI0OWY5fVx1ezIxN2IwfVx1N2M4ZVx1N2M3Y1x1N2NhZVx1NmFiMlx1N2RkY1x1N2UwN1x1N2RkM1x1N2Y0ZVx1ezI2MjYxfSJdLFsiOTU0MCIsIlx1ezI2MTVjfVx1ezI3YjQ4fVx1N2Q5N1x1ezI1ZTgyfVx1NDI2YVx1ezI2Yjc1fVx1ezIwOTE2fVx1NjdkNlx1ezIwMDRlfVx1ezIzNWNm''@;'; put 'put ''fVx1NTdjNFx1ezI2NDEyfVx1ezI2M2Y4fVx1ezI0OTYyfVx1N2ZkZFx1N2IyN1x1ezIwODJjfVx1ezI1YWU5fVx1ezI1ZDQzfVx1N2IwY1x1ezI1ZTBlfVx1OTllNlx1ODY0NVx1OWE2M1x1NmExY1x1ezIzNDNmfVx1MzllMlx1ezI0OWY3fVx1ezI2NWFkfVx1OWExZlx1ezI2NWEwfVx1ODQ4''@;'; put 'put ''MFx1ezI3MTI3fVx1ezI2Y2QxfVx1NDRlYVx1ODEzN1x1NDQwMlx1ODBjNlx1ODEwOVx1ODE0Mlx1ezI2N2I0fVx1OThjM1x1ezI2YTQyfVx1ODI2Mlx1ODI2NVx1ezI2YTUxfVx1ODQ1M1x1ezI2ZGE3fVx1ODYxMFx1ezI3MjFifVx1NWE4Nlx1NDE3Zlx1ezIxODQwfVx1NWIyYlx1ezIxOGEx''@;'; put 'put ''fVx1NWFlNFx1ezIxOGQ4fVx1ODZhMFx1ezJmOWJjfVx1ezIzZDhmfVx1ODgyZFx1ezI3NDIyfVx1NWEwMiJdLFsiOTVhMSIsIlx1ODg2ZVx1NGY0NVx1ODg4N1x1ODhiZlx1ODhlNlx1ODk2NVx1ODk0ZFx1ezI1NjgzfVx1ODk1NFx1ezI3Nzg1fVx1ezI3Nzg0fVx1ezI4YmY1fVx1ezI4YmQ5''@;'; put 'put ''fVx1ezI4YjljfVx1ezI4OWY5fVx1M2VhZFx1ODRhM1x1NDZmNVx1NDZjZlx1MzdmMlx1OGEzZFx1OGExY1x1ezI5NDQ4fVx1NWY0ZFx1OTIyYlx1ezI0Mjg0fVx1NjVkNFx1NzEyOVx1NzBjNFx1ezIxODQ1fVx1OWQ2ZFx1OGM5Zlx1OGNlOVx1ezI3ZGRjfVx1NTk5YVx1NzdjM1x1NTlmMFx1''@;'; put 'put ''NDM2ZVx1MzZkNFx1OGUyYVx1OGVhN1x1ezI0YzA5fVx1OGYzMFx1OGY0YVx1NDJmNFx1NmM1OFx1NmZiYlx1ezIyMzIxfVx1NDg5Ylx1NmY3OVx1NmU4Ylx1ezIxN2RhfVx1OWJlOVx1MzZiNVx1ezI0OTJmfVx1OTBiYlx1OTA5N1x1NTU3MVx1NDkwNlx1OTFiYlx1OTQwNFx1ezI4YTRifVx1''@;'; put 'put ''NDA2Mlx1ezI4YWZjfVx1OTQyN1x1ezI4YzFkfVx1ezI4YzNifVx1ODRlNVx1OGEyYlx1OTU5OVx1OTVhN1x1OTU5N1x1OTU5Nlx1ezI4ZDM0fVx1NzQ0NVx1M2VjMlx1ezI0OGZmfVx1ezI0YTQyfVx1ezI0M2VhfVx1M2VlN1x1ezIzMjI1fVx1OTY4Zlx1ezI4ZWU3fVx1ezI4ZTY2fVx1ezI4''@;'; put 'put ''ZTY1fVx1M2VjY1x1ezI0OWVkfVx1ezI0YTc4fVx1ezIzZmVlfVx1NzQxMlx1NzQ2Ylx1M2VmY1x1OTc0MVx1ezI5MGIwfSJdLFsiOTY0MCIsIlx1Njg0N1x1NGExZFx1ezI5MDkzfVx1ezI1N2RmfVx1OTc1ZFx1OTM2OFx1ezI4OTg5fVx1ezI4YzI2fVx1ezI4YjJmfVx1ezI2M2JlfVx1OTJi''@;'; put 'put ''YVx1NWIxMVx1OGI2OVx1NDkzY1x1NzNmOVx1ezI0MjFifVx1OTc5Ylx1OTc3MVx1OTkzOFx1ezIwZjI2fVx1NWRjMVx1ezI4YmM1fVx1ezI0YWIyfVx1OTgxZlx1ezI5NGRhfVx1OTJmNlx1ezI5NWQ3fVx1OTFlNVx1NDRjMFx1ezI4YjUwfVx1ezI0YTY3fVx1ezI4YjY0fVx1OThkY1x1ezI4''@;'; put 'put ''YTQ1fVx1M2YwMFx1OTIyYVx1NDkyNVx1ODQxNFx1OTkzYlx1OTk0ZFx1ezI3YjA2fVx1M2RmZFx1OTk5Ylx1NGI2Zlx1OTlhYVx1OWE1Y1x1ezI4YjY1fVx1ezI1OGM4fVx1NmE4Zlx1OWEyMVx1NWFmZVx1OWEyZlx1ezI5OGYxfVx1NGI5MFx1ezI5OTQ4fVx1OTliY1x1NGJiZFx1NGI5N1x1''@;'; put 'put ''OTM3ZFx1NTg3Mlx1ezIxMzAyfVx1NTgyMlx1ezI0OWI4fSJdLFsiOTZhMSIsIlx1ezIxNGU4fVx1Nzg0NFx1ezIyNzFmfVx1ezIzZGI4fVx1NjhjNVx1M2Q3ZFx1OTQ1OFx1MzkyN1x1NjE1MFx1ezIyNzgxfVx1ezIyOTZifVx1NjEwN1x1OWM0Zlx1OWM1M1x1OWM3Ylx1OWMzNVx1OWMxMFx1''@;'; put 'put ''OWI3Zlx1OWJjZlx1ezI5ZTJkfVx1OWI5Zlx1ezJhMWY1fVx1ezJhMGZlfVx1OWQyMVx1NGNhZVx1ezI0MTA0fVx1OWUxOFx1NGNiMFx1OWQwY1x1ezJhMWI0fVx1ezJhMGVkfVx1ezJhMGYzfVx1ezI5OTJmfVx1OWRhNVx1ODRiZFx1ezI2ZTEyfVx1ezI2ZmRmfVx1ezI2YjgyfVx1ODVmY1x1''@;'; put 'put ''NDUzM1x1ezI2ZGE0fVx1ezI2ZTg0fVx1ezI2ZGYwfVx1ODQyMFx1ODVlZVx1ezI2ZTAwfVx1ezIzN2Q3fVx1ezI2MDY0fVx1NzllMlx1ezIzNTljfVx1ezIzNjQwfVx1NDkyZFx1ezI0OWRlfVx1M2Q2Mlx1OTNkYlx1OTJiZVx1OTM0OFx1ezIwMmJmfVx1NzhiOVx1OTI3N1x1OTQ0ZFx1NGZl''@;'; put 'put ''NFx1MzQ0MFx1OTA2NFx1ezI1NTVkfVx1NzgzZFx1Nzg1NFx1NzhiNlx1Nzg0Ylx1ezIxNzU3fVx1ezIzMWM5fVx1ezI0OTQxfVx1MzY5YVx1NGY3Mlx1NmZkYVx1NmZkOVx1NzAxZVx1NzAxZVx1NTQxNFx1ezI0MWI1fVx1NTdiYlx1NThmM1x1NTc4YVx1OWQxNlx1NTdkN1x1NzEzNFx1MzRh''@;'; put 'put ''Zlx1ezI0MWFjfVx1NzFlYlx1ezI2YzQwfVx1ezI0Zjk3fVx1NWIyOFx1ezIxN2I1fVx1ezI4YTQ5fSJdLFsiOTc0MCIsIlx1NjEwY1x1NWFjZVx1NWEwYlx1NDJiY1x1ezI0NDg4fVx1MzcyY1x1NGI3Ylx1ezI4OWZjfVx1OTNiYlx1OTNiOFx1ezIxOGQ2fVx1ezIwZjFkfVx1ODQ3Mlx1ezI2''@;'; put 'put ''Y2MwfVx1ezIxNDEzfVx1ezI0MmZhfVx1ezIyYzI2fVx1ezI0M2MxfVx1NTk5NFx1ezIzZGI3fVx1ezI2NzQxfVx1N2RhOFx1ezI2MTVifVx1ezI2MGE0fVx1ezI0OWI5fVx1ezI0OThifVx1ezI4OWZhfVx1OTJlNVx1NzNlMlx1M2VlOVx1NzRiNFx1ezI4YjYzfVx1ezIxODlmfVx1M2VlMVx1''@;'; put 'put ''ezI0YWIzfVx1NmFkOFx1NzNmM1x1NzNmYlx1M2VkNlx1ezI0YTNlfVx1ezI0YTk0fVx1ezIxN2Q5fVx1ezI0YTY2fVx1ezIwM2E3fVx1ezIxNDI0fVx1ezI0OWU1fVx1NzQ0OFx1ezI0OTE2fVx1NzBhNVx1ezI0OTc2fVx1OTI4NFx1NzNlNlx1OTM1Zlx1ezIwNGZlfVx1OTMzMVx1ezI4YWNl''@;'; put 'put ''fVx1ezI4YTE2fVx1OTM4Nlx1ezI4YmU3fVx1ezI1NWQ1fVx1NDkzNVx1ezI4YTgyfVx1NzE2YiJdLFsiOTdhMSIsIlx1ezI0OTQzfVx1ezIwY2ZmfVx1NTZhNFx1ezIwNjFhfVx1ezIwYmVifVx1ezIwY2I4fVx1NTUwMlx1NzljNFx1ezIxN2ZhfVx1N2RmZVx1ezIxNmMyfVx1ezI0YTUwfVx1''@;'; put 'put ''ezIxODUyfVx1NDUyZVx1OTQwMVx1MzcwYVx1ezI4YWMwfVx1ezI0OWFkfVx1NTliMFx1ezIxOGJmfVx1ezIxODgzfVx1ezI3NDg0fVx1NWFhMVx1MzZlMlx1ezIzZDVifVx1MzZiMFx1OTI1Zlx1NWE3OVx1ezI4YTgxfVx1ezIxODYyfVx1OTM3NFx1M2NjZFx1ezIwYWI0fVx1NGE5Nlx1Mzk4''@;'; put 'put ''YVx1NTBmNFx1M2Q2OVx1M2Q0Y1x1ezIxMzljfVx1NzE3NVx1NDJmYlx1ezI4MjE4fVx1NmUwZlx1ezI5MGU0fVx1NDRlYlx1NmQ1N1x1ezI3ZTRmfVx1NzA2N1x1NmNhZlx1M2NkNlx1ezIzZmVkfVx1ezIzZTJkfVx1NmUwMlx1NmYwY1x1M2Q2Zlx1ezIwM2Y1fVx1NzU1MVx1MzZiY1x1MzRj''@;'; put 'put ''OFx1NDY4MFx1M2VkYVx1NDg3MVx1NTljNFx1OTI2ZVx1NDkzZVx1OGY0MVx1ezI4YzFjfVx1ezI2YmMwfVx1NTgxMlx1NTdjOFx1MzZkNlx1ezIxNDUyfVx1NzBmZVx1ezI0MzYyfVx1ezI0YTcxfVx1ezIyZmUzfVx1ezIxMmIwfVx1ezIyM2JkfVx1NjhiOVx1Njk2N1x1ezIxMzk4fVx1ezIz''@;'; put 'put ''NGU1fVx1ezI3YmY0fVx1ezIzNmRmfVx1ezI4YTgzfVx1ezIzN2Q2fVx1ezIzM2ZhfVx1ezI0YzlmfVx1NmExYVx1ezIzNmFkfVx1ezI2Y2I3fVx1ODQzZVx1NDRkZlx1NDRjZSJdLFsiOTg0MCIsIlx1ezI2ZDI2fVx1ezI2ZDUxfVx1ezI2YzgyfVx1ezI2ZmRlfVx1NmYxN1x1ezI3MTA5fVx1''@;'; put 'put ''ODMzZFx1ezIxNzNhfVx1ODNlZFx1ezI2YzgwfVx1ezI3MDUzfVx1ezIxN2RifVx1NTk4OVx1NWE4Mlx1ezIxN2IzfVx1NWE2MVx1NWE3MVx1ezIxOTA1fVx1ezI0MWZjfVx1MzcyZFx1NTllZlx1ezIxNzNjfVx1MzZjN1x1NzE4ZVx1OTM5MFx1NjY5YVx1ezI0MmE1fVx1NWE2ZVx1NWEyYlx1''@;'; put 'put ''ezI0MjkzfVx1NmEyYlx1ezIzZWY5fVx1ezI3NzM2fVx1ezI0NDVifVx1ezI0MmNhfVx1NzExZFx1ezI0MjU5fVx1ezI4OWUxfVx1NGZiMFx1ezI2ZDI4fVx1NWNjMlx1ezI0NGNlfVx1ezI3ZTRkfVx1ezI0M2JkfVx1NmEwY1x1ezI0MjU2fVx1ezIxMzA0fVx1NzBhNlx1NzEzM1x1ezI0M2U5''@;'; put 'put ''fVx1M2RhNVx1NmNkZlx1ezJmODI1fVx1ezI0YTRmfVx1N2U2NVx1NTllYlx1NWQyZlx1M2RmM1x1NWY1Y1x1ezI0YTVkfVx1ezIxN2RmfVx1N2RhNFx1ODQyNiJdLFsiOThhMSIsIlx1NTQ4NVx1ezIzYWZhfVx1ezIzMzAwfVx1ezIwMjE0fVx1NTc3ZVx1ezIwOGQ1fVx1ezIwNjE5fVx1M2Zl''@;'; put 'put ''NVx1ezIxZjllfVx1ezJhMmI2fVx1NzAwM1x1ezI5MTVifVx1NWQ3MFx1NzM4Zlx1N2NkM1x1ezI4YTU5fVx1ezI5NDIwfVx1NGZjOFx1N2ZlN1x1NzJjZFx1NzMxMFx1ezI3YWY0fVx1NzMzOFx1NzMzOVx1ezI1NmY2fVx1NzM0MVx1NzM0OFx1M2VhOVx1ezI3YjE4fVx1OTA2Y1x1NzFmNVx1''@;'; put 'put ''ezI0OGYyfVx1NzNlMVx1ODFmNlx1M2VjYVx1NzcwY1x1M2VkMVx1NmNhMlx1NTZmZFx1NzQxOVx1NzQxZVx1NzQxZlx1M2VlMlx1M2VmMFx1M2VmNFx1M2VmYVx1NzRkM1x1M2YwZVx1M2Y1M1x1NzU0Mlx1NzU2ZFx1NzU3Mlx1NzU4ZFx1M2Y3Y1x1NzVjOFx1NzVkY1x1M2ZjMFx1NzY0ZFx1''@;'; put 'put ''M2ZkN1x1NzY3NFx1M2ZkY1x1NzY3YVx1ezI0ZjVjfVx1NzE4OFx1NTYyM1x1ODk4MFx1NTg2OVx1NDAxZFx1Nzc0M1x1NDAzOVx1Njc2MVx1NDA0NVx1MzVkYlx1Nzc5OFx1NDA2YVx1NDA2Zlx1NWM1ZVx1NzdiZVx1NzdjYlx1NThmMlx1NzgxOFx1NzBiOVx1NzgxY1x1NDBhOFx1NzgzOVx1''@;'; put 'put ''Nzg0N1x1Nzg1MVx1Nzg2Nlx1ODQ0OFx1ezI1NTM1fVx1NzkzM1x1NjgwM1x1NzkzMlx1NDEwMyJdLFsiOTk0MCIsIlx1NDEwOVx1Nzk5MVx1Nzk5OVx1OGZiYlx1N2EwNlx1OGZiY1x1NDE2N1x1N2E5MVx1NDFiMlx1N2FiY1x1ODI3OVx1NDFjNFx1N2FjZlx1N2FkYlx1NDFjZlx1NGUyMVx1''@;'; put 'put ''N2I2Mlx1N2I2Y1x1N2I3Ylx1N2MxMlx1N2MxYlx1NDI2MFx1NDI3YVx1N2M3Ylx1N2M5Y1x1NDI4Y1x1N2NiOFx1NDI5NFx1N2NlZFx1OGY5M1x1NzBjMFx1ezIwY2NmfVx1N2RjZlx1N2RkNFx1N2RkMFx1N2RmZFx1N2ZhZVx1N2ZiNFx1NzI5Zlx1NDM5N1x1ODAyMFx1ODAyNVx1N2IzOVx1''@;'; put 'put ''ODAyZVx1ODAzMVx1ODA1NFx1M2RjY1x1NTdiNFx1NzBhMFx1ODBiN1x1ODBlOVx1NDNlZFx1ODEwY1x1NzMyYVx1ODEwZVx1ODExMlx1NzU2MFx1ODExNFx1NDQwMVx1M2IzOVx1ODE1Nlx1ODE1OVx1ODE1YSJdLFsiOTlhMSIsIlx1NDQxM1x1NTgzYVx1ODE3Y1x1ODE4NFx1NDQyNVx1ODE5''@;'; put 'put ''M1x1NDQyZFx1ODFhNVx1NTdlZlx1ODFjMVx1ODFlNFx1ODI1NFx1NDQ4Zlx1ODJhNlx1ODI3Nlx1ODJjYVx1ODJkOFx1ODJmZlx1NDRiMFx1ODM1N1x1OTY2OVx1Njk4YVx1ODQwNVx1NzBmNVx1ODQ2NFx1NjBlM1x1ODQ4OFx1NDUwNFx1ODRiZVx1ODRlMVx1ODRmOFx1ODUxMFx1ODUzOFx1''@;'; put 'put ''ODU1Mlx1NDUzYlx1ODU2Zlx1ODU3MFx1ODVlMFx1NDU3N1x1ODY3Mlx1ODY5Mlx1ODZiMlx1ODZlZlx1OTY0NVx1ODc4Ylx1NDYwNlx1NDYxN1x1ODhhZVx1ODhmZlx1ODkyNFx1ODk0N1x1ODk5MVx1ezI3OTY3fVx1OGEyOVx1OGEzOFx1OGE5NFx1OGFiNFx1OGM1MVx1OGNkNFx1OGNmMlx1''@;'; put 'put ''OGQxY1x1NDc5OFx1NTg1Zlx1OGRjM1x1NDdlZFx1NGVlZVx1OGUzYVx1NTVkOFx1NTc1NFx1OGU3MVx1NTVmNVx1OGViMFx1NDgzN1x1OGVjZVx1OGVlMlx1OGVlNFx1OGVlZFx1OGVmMlx1OGZiN1x1OGZjMVx1OGZjYVx1OGZjY1x1OTAzM1x1OTljNFx1NDhhZFx1OThlMFx1OTIxM1x1NDkx''@;'; put 'put ''ZVx1OTIyOFx1OTI1OFx1OTI2Ylx1OTJiMVx1OTJhZVx1OTJiZiJdLFsiOWE0MCIsIlx1OTJlM1x1OTJlYlx1OTJmM1x1OTJmNFx1OTJmZFx1OTM0M1x1OTM4NFx1OTNhZFx1NDk0NVx1NDk1MVx1OWViZlx1OTQxN1x1NTMwMVx1OTQxZFx1OTQyZFx1OTQzZVx1NDk2YVx1OTQ1NFx1OTQ3OVx1''@;'; put 'put ''OTUyZFx1OTVhMlx1NDlhN1x1OTVmNFx1OTYzM1x1NDllNVx1NjdhMFx1NGEyNFx1OTc0MFx1NGEzNVx1OTdiMlx1OTdjMlx1NTY1NFx1NGFlNFx1NjBlOFx1OThiOVx1NGIxOVx1OThmMVx1NTg0NFx1OTkwZVx1OTkxOVx1NTFiNFx1OTkxY1x1OTkzN1x1OTk0Mlx1OTk1ZFx1OTk2Mlx1NGI3''@;'; put 'put ''MFx1OTljNVx1NGI5ZFx1OWEzY1x1OWIwZlx1N2E4M1x1OWI2OVx1OWI4MVx1OWJkZFx1OWJmMVx1OWJmNFx1NGM2ZFx1OWMyMFx1Mzc2Zlx1ezIxYmMyfVx1OWQ0OVx1OWMzYSJdLFsiOWFhMSIsIlx1OWVmZVx1NTY1MFx1OWQ5M1x1OWRiZFx1OWRjMFx1OWRmY1x1OTRmNlx1OGZiNlx1OWU3''@;'; put 'put ''Ylx1OWVhY1x1OWViMVx1OWViZFx1OWVjNlx1OTRkY1x1OWVlMlx1OWVmMVx1OWVmOFx1N2FjOFx1OWY0NFx1ezIwMDk0fVx1ezIwMmI3fVx1ezIwM2EwfVx1NjkxYVx1OTRjM1x1NTlhY1x1ezIwNGQ3fVx1NTg0MFx1OTRjMVx1MzdiOVx1ezIwNWQ1fVx1ezIwNjE1fVx1ezIwNjc2fVx1ezIx''@;'; put 'put ''NmJhfVx1NTc1N1x1NzE3M1x1ezIwYWMyfVx1ezIwYWNkfVx1ezIwYmJmfVx1NTQ2YVx1ezJmODNifVx1ezIwYmNifVx1NTQ5ZVx1ezIwYmZifVx1ezIwYzNifVx1ezIwYzUzfVx1ezIwYzY1fVx1ezIwYzdjfVx1NjBlN1x1ezIwYzhkfVx1NTY3YVx1ezIwY2I1fVx1ezIwY2RkfVx1ezIwY2Vk''@;'; put 'put ''fVx1ezIwZDZmfVx1ezIwZGIyfVx1ezIwZGM4fVx1Njk1NVx1OWMyZlx1ODdhNVx1ezIwZTA0fVx1ezIwZTBlfVx1ezIwZWQ3fVx1ezIwZjkwfVx1ezIwZjJkfVx1ezIwZTczfVx1NWMyMFx1ezIwZmJjfVx1NWUwYlx1ezIxMDVjfVx1ezIxMDRmfVx1ezIxMDc2fVx1NjcxZVx1ezIxMDdifVx1''@;'; put 'put ''ezIxMDg4fVx1ezIxMDk2fVx1MzY0N1x1ezIxMGJmfVx1ezIxMGQzfVx1ezIxMTJmfVx1ezIxMTNifVx1NTM2NFx1ODRhZFx1ezIxMmUzfVx1ezIxMzc1fVx1ezIxMzM2fVx1OGI4MVx1ezIxNTc3fVx1ezIxNjE5fVx1ezIxN2MzfVx1ezIxN2M3fVx1NGU3OFx1NzBiYlx1ezIxODJkfVx1ezIx''@;'; put 'put ''OTZhfSJdLFsiOWI0MCIsIlx1ezIxYTJkfVx1ezIxYTQ1fVx1ezIxYzJhfVx1ezIxYzcwfVx1ezIxY2FjfVx1ezIxZWM4fVx1NjJjM1x1ezIxZWQ1fVx1ezIxZjE1fVx1NzE5OFx1Njg1NVx1ezIyMDQ1fVx1NjllOVx1MzZjOFx1ezIyMjdjfVx1ezIyM2Q3fVx1ezIyM2ZhfVx1ezIyNzJhfVx1''@;'; put 'put ''ezIyODcxfVx1ezIyOTRmfVx1ODJmZFx1ezIyOTY3fVx1ezIyOTkzfVx1ezIyYWQ1fVx1ODlhNVx1ezIyYWU4fVx1OGZhMFx1ezIyYjBlfVx1OTdiOFx1ezIyYjNmfVx1OTg0N1x1OWFiZFx1ezIyYzRjfSJdLFsiOWI2MiIsIlx1ezIyYzg4fVx1ezIyY2I3fVx1ezI1YmU4fVx1ezIyZDA4fVx1''@;'; put 'put ''ezIyZDEyfVx1ezIyZGI3fVx1ezIyZDk1fVx1ezIyZTQyfVx1ezIyZjc0fVx1ezIyZmNjfVx1ezIzMDMzfVx1ezIzMDY2fVx1ezIzMzFmfVx1ezIzM2RlfVx1NWZiMVx1NjY0OFx1NjZiZlx1ezI3YTc5fVx1ezIzNTY3fVx1ezIzNWYzfVx1NzIwMVx1ezI0OWJhfVx1NzdkN1x1ezIzNjFhfVx1''@;'; put 'put ''ezIzNzE2fVx1N2U4N1x1ezIwMzQ2fVx1NThiNVx1NjcwZSJdLFsiOWJhMSIsIlx1NjkxOFx1ezIzYWE3fVx1ezI3NjU3fVx1ezI1ZmUyfVx1ezIzZTExfVx1ezIzZWI5fVx1ezI3NWZlfVx1ezIyMDlhfVx1NDhkMFx1NGFiOFx1ezI0MTE5fVx1ezI4YTlhfVx1ezI0MmVlfVx1ezI0MzBkfVx1''@;'; put 'put ''ezI0MDNifVx1ezI0MzM0fVx1ezI0Mzk2fVx1ezI0YTQ1fVx1ezIwNWNhfVx1NTFkMlx1ezIwNjExfVx1NTk5Zlx1ezIxZWE4fVx1M2JiZVx1ezIzY2ZmfVx1ezI0NDA0fVx1ezI0NGQ2fVx1NTc4OFx1ezI0Njc0fVx1Mzk5Ylx1ezI0NzJmfVx1ezI4NWU4fVx1ezI5OWM5fVx1Mzc2Mlx1ezIy''@;'; put 'put ''MWMzfVx1OGI1ZVx1ezI4YjRlfVx1OTlkNlx1ezI0ODEyfVx1ezI0OGZifVx1ezI0YTE1fVx1NzIwOVx1ezI0YWMwfVx1ezIwYzc4fVx1NTk2NVx1ezI0ZWE1fVx1ezI0Zjg2fVx1ezIwNzc5fVx1OGVkYVx1ezI1MDJjfVx1NTI4Zlx1NTczZlx1NzE3MVx1ezI1Mjk5fVx1ezI1NDE5fVx1ezIz''@;'; put 'put ''ZjRhfVx1ezI0YWE3fVx1NTViY1x1ezI1NDQ2fVx1ezI1NDZlfVx1ezI2YjUyfVx1OTFkNFx1MzQ3M1x1ezI1NTNmfVx1ezI3NjMyfVx1ezI1NTVlfVx1NDcxOFx1ezI1NTYyfVx1ezI1NTY2fVx1ezI1N2M3fVx1ezI0OTNmfVx1ezI1ODVkfVx1NTA2Nlx1MzRmYlx1ezIzM2NjfVx1NjBkZVx1''@;'; put 'put ''ezI1OTAzfVx1NDc3Y1x1ezI4OTQ4fVx1ezI1YWFlfVx1ezI1Yjg5fVx1ezI1YzA2fVx1ezIxZDkwfVx1NTdhMVx1NzE1MVx1NmZiNlx1ezI2MTAyfVx1ezI3YzEyfVx1OTA1Nlx1ezI2MWIyfVx1ezI0ZjlhfVx1OGI2Mlx1ezI2NDAyfVx1ezI2NDRhfSJdLFsiOWM0MCIsIlx1NWQ1Ylx1ezI2''@;'; put 'put ''YmY3fVx1OGYzNlx1ezI2NDg0fVx1ezIxOTFjfVx1OGFlYVx1ezI0OWY2fVx1ezI2NDg4fVx1ezIzZmVmfVx1ezI2NTEyfVx1NGJjMFx1ezI2NWJmfVx1ezI2NmI1fVx1ezIyNzFifVx1OTQ2NVx1ezI1N2UxfVx1NjE5NVx1NWEyN1x1ezJmOGNkfVx1NGZiYlx1NTZiOVx1ezI0NTIxfVx1ezI2''@;'; put 'put ''NmZjfVx1NGU2YVx1ezI0OTM0fVx1OTY1Nlx1NmQ4Zlx1ezI2Y2JkfVx1MzYxOFx1ODk3N1x1ezI2Nzk5fVx1ezI2ODZlfVx1ezI2NDExfVx1ezI2ODVlfVx1NzFkZlx1ezI2OGM3fVx1N2I0Mlx1ezI5MGMwfVx1ezIwYTExfVx1ezI2OTI2fVx1OTEwNFx1ezI2OTM5fVx1N2E0NVx1OWRmMFx1''@;'; put 'put ''ezI2OWZhfVx1OWEyNlx1ezI2YTJkfVx1MzY1Zlx1ezI2NDY5fVx1ezIwMDIxfVx1Nzk4M1x1ezI2YTM0fVx1ezI2YjVifVx1NWQyY1x1ezIzNTE5fVx1ODNjZlx1ezI2YjlkfVx1NDZkMFx1ezI2Y2E0fVx1NzUzYlx1ODg2NVx1ezI2ZGFlfVx1NThiNiJdLFsiOWNhMSIsIlx1MzcxY1x1ezIy''@;'; put 'put ''NThkfVx1ezI3MDRifVx1ezI3MWNkfVx1M2M1NFx1ezI3MjgwfVx1ezI3Mjg1fVx1OTI4MVx1ezIyMTdhfVx1ezI3MjhifVx1OTMzMFx1ezI3MmU2fVx1ezI0OWQwfVx1NmMzOVx1OTQ5Zlx1ezI3NDUwfVx1ezIwZWY4fVx1ODgyN1x1ODhmNVx1ezIyOTI2fVx1ezI4NDczfVx1ezIxN2IxfVx1''@;'; put 'put ''NmViOFx1ezI0YTJhfVx1ezIxODIwfVx1MzlhNFx1MzZiOVx1NWMxMFx1NzllM1x1NDUzZlx1NjZiNlx1ezI5Y2FkfVx1ezI5OGE0fVx1ODk0M1x1ezI3N2NjfVx1ezI3ODU4fVx1NTZkNlx1NDBkZlx1ezIxNjBhfVx1MzlhMVx1ezIzNzJmfVx1ezI4MGU4fVx1ezIxM2M1fVx1NzFhZFx1ODM2''@;'; put 'put ''Nlx1ezI3OWRkfVx1ezI5MWE4fVx1NWE2N1x1NGNiN1x1ezI3MGFmfVx1ezI4OWFifVx1ezI3OWZkfVx1ezI3YTBhfVx1ezI3YjBifVx1ezI3ZDY2fVx1ezI0MTdhfVx1N2I0M1x1Nzk3ZVx1ezI4MDA5fVx1NmZiNVx1ezJhMmRmfVx1NmEwM1x1ezI4MzE4fVx1NTNhMlx1ezI2ZTA3fVx1OTNi''@;'; put 'put ''Zlx1NjgzNlx1OTc1ZFx1ezI4MTZmfVx1ezI4MDIzfVx1ezI2OWI1fVx1ezIxM2VkfVx1ezIzMjJmfVx1ezI4MDQ4fVx1NWQ4NVx1ezI4YzMwfVx1ezI4MDgzfVx1NTcxNVx1OTgyM1x1ezI4OTQ5fVx1NWRhYlx1ezI0OTg4fVx1NjViZVx1NjlkNVx1NTNkMlx1ezI0YWE1fVx1ezIzZjgxfVx1''@;'; put 'put ''M2MxMVx1NjczNlx1ezI4MDkwfVx1ezI4MGY0fVx1ezI4MTJlfVx1ezIxZmExfVx1ezI4MTRmfSJdLFsiOWQ0MCIsIlx1ezI4MTg5fVx1ezI4MWFmfVx1ezI4MjFhfVx1ezI4MzA2fVx1ezI4MzJmfVx1ezI4MzhhfVx1MzVjYVx1ezI4NDY4fVx1ezI4NmFhfVx1NDhmYVx1NjNlNlx1ezI4OTU2''@;'; put 'put ''fVx1NzgwOFx1OTI1NVx1ezI4OWI4fVx1NDNmMlx1ezI4OWU3fVx1NDNkZlx1ezI4OWU4fVx1ezI4YjQ2fVx1ezI4YmQ0fVx1NTlmOFx1ezI4YzA5fVx1OGYwYlx1ezI4ZmM1fVx1ezI5MGVjfVx1N2I1MVx1ezI5MTEwfVx1ezI5MTNjfVx1M2RmN1x1ezI5MTVlfVx1ezI0YWNhfVx1OGZkMFx1''@;'; put 'put ''NzI4Zlx1NTY4Ylx1ezI5NGU3fVx1ezI5NWU5fVx1ezI5NWIwfVx1ezI5NWI4fVx1ezI5NzMyfVx1ezI5OGQxfVx1ezI5OTQ5fVx1ezI5OTZhfVx1ezI5OWMzfVx1ezI5YTI4fVx1ezI5YjBlfVx1ezI5ZDVhfVx1ezI5ZDlifVx1N2U5Zlx1ezI5ZWY4fVx1ezI5ZjIzfVx1NGNhNFx1OTU0N1x1''@;'; put 'put ''ezJhMjkzfVx1NzFhMlx1ezJhMmZmfVx1NGQ5MVx1OTAxMlx1ezJhNWNifVx1NGQ5Y1x1ezIwYzljfVx1OGZiZVx1NTVjMSJdLFsiOWRhMSIsIlx1OGZiYVx1ezIyNGIwfVx1OGZiOVx1ezI0YTkzfVx1NDUwOVx1N2U3Zlx1NmY1Nlx1NmFiMVx1NGVlYVx1MzRlNFx1ezI4YjJjfVx1ezI3ODlk''@;'; put 'put ''fVx1MzczYVx1OGU4MFx1ezIxN2Y1fVx1ezI4MDI0fVx1ezI4YjZjfVx1ezI4Yjk5fVx1ezI3YTNlfVx1ezI2NmFmfVx1M2RlYlx1ezI3NjU1fVx1ezIzY2I3fVx1ezI1NjM1fVx1ezI1OTU2fVx1NGU5YVx1ezI1ZTgxfVx1ezI2MjU4fVx1NTZiZlx1ezIwZTZkfVx1OGUwZVx1NWI2ZFx1ezIz''@;'; put 'put ''ZTg4fVx1ezI0YzllfVx1NjNkZVx1NjJkMFx1ezIxN2Y2fVx1ezIxODdifVx1NjUzMFx1NTYyZFx1ezI1YzRhfVx1NTQxYVx1ezI1MzExfVx1M2RjNlx1ezI5ZDk4fVx1NGM3ZFx1NTYyMlx1NTYxZVx1N2Y0OVx1ezI1ZWQ4fVx1NTk3NVx1ezIzZDQwfVx1ODc3MFx1NGUxY1x1ezIwZmVhfVx1''@;'; put 'put ''ezIwZDQ5fVx1ezIzNmJhfVx1ODExN1x1OWQ1ZVx1OGQxOFx1NzYzYlx1OWM0NVx1NzY0ZVx1NzdiOVx1OTM0NVx1NTQzMlx1ODE0OFx1ODJmN1x1NTYyNVx1ODEzMlx1ODQxOFx1ODBiZFx1NTVlYVx1Nzk2Mlx1NTY0M1x1NTQxNlx1ezIwZTlkfVx1MzVjZVx1NTYwNVx1NTVmMVx1NjZmMVx1''@;'; put 'put ''ezI4MmUyfVx1MzYyZFx1NzUzNFx1NTVmMFx1NTViYVx1NTQ5N1x1NTU3Mlx1ezIwYzQxfVx1ezIwYzk2fVx1NWVkMFx1ezI1MTQ4fVx1ezIwZTc2fVx1ezIyYzYyfSJdLFsiOWU0MCIsIlx1ezIwZWEyfVx1OWVhYlx1N2Q1YVx1NTVkZVx1ezIxMDc1fVx1NjI5ZFx1OTc2ZFx1NTQ5NFx1OGNj''@;'; put 'put ''ZFx1NzFmNlx1OTE3Nlx1NjNmY1x1NjNiOVx1NjNmZVx1NTU2OVx1ezIyYjQzfVx1OWM3Mlx1ezIyZWIzfVx1NTE5YVx1MzRkZlx1ezIwZGE3fVx1NTFhN1x1NTQ0ZFx1NTUxZVx1NTUxM1x1NzY2Nlx1OGUyZFx1ezI2ODhhfVx1NzViMVx1ODBiNlx1ODgwNFx1ODc4Nlx1ODhjN1x1ODFiNlx1''@;'; put 'put ''ODQxY1x1ezIxMGMxfVx1NDRlY1x1NzMwNFx1ezI0NzA2fVx1NWI5MFx1ODMwYlx1ezI2ODkzfVx1NTY3Ylx1ezIyNmY0fVx1ezI3ZDJmfVx1ezI0MWEzfVx1ezI3ZDczfVx1ezI2ZWQwfVx1ezI3MmI2fVx1OTE3MFx1ezIxMWQ5fVx1OTIwOFx1ezIzY2ZjfVx1ezJhNmE5fVx1ezIwZWFjfVx1''@;'; put 'put ''ezIwZWY5fVx1NzI2Nlx1ezIxY2EyfVx1NDc0ZVx1ezI0ZmMyfVx1ezI3ZmY5fVx1ezIwZmVifVx1NDBmYSJdLFsiOWVhMSIsIlx1OWM1ZFx1NjUxZlx1ezIyZGEwfVx1NDhmM1x1ezI0N2UwfVx1ezI5ZDdjfVx1ezIwZmVjfVx1ezIwZTBhfVx1NjA2Mlx1ezI3NWEzfVx1ezIwZmVkfSJdLFsi''@;'; put 'put ''OWVhZCIsIlx1ezI2MDQ4fVx1ezIxMTg3fVx1NzFhM1x1N2U4ZVx1OWQ1MFx1NGUxYVx1NGUwNFx1MzU3N1x1NWIwZFx1NmNiMlx1NTM2N1x1MzZhY1x1MzlkY1x1NTM3ZFx1MzZhNVx1ezI0NjE4fVx1NTg5YVx1ezI0YjZlfVx1ODIyZFx1NTQ0Ylx1NTdhYVx1ezI1YTk1fVx1ezIwOTc5fSJd''@;'; put 'put ''LFsiOWVjNSIsIlx1M2E1Mlx1ezIyNDY1fVx1NzM3NFx1ezI5ZWFjfVx1NGQwOVx1OWJlZFx1ezIzY2ZlfVx1ezI5ZjMwfVx1NGM1Ylx1ezI0ZmE5fVx1ezI5NTllfVx1ezI5ZmRlfVx1ODQ1Y1x1ezIzZGI2fVx1ezI3MmIyfVx1ezI2N2IzfVx1ezIzNzIwfVx1NjMyZVx1N2QyNVx1ezIzZWY3''@;'; put 'put ''fVx1ezIzZTJjfVx1M2EyYVx1OTAwOFx1NTJjY1x1M2U3NFx1MzY3YVx1NDVlOVx1ezIwNDhlfVx1NzY0MFx1NWFmMFx1ezIwZWI2fVx1Nzg3YVx1ezI3ZjJlfVx1NThhN1x1NDBiZlx1NTY3Y1x1OWI4Ylx1NWQ3NFx1NzY1NFx1ezJhNDM0fVx1OWU4NVx1NGNlMVx1NzVmOVx1MzdmYlx1NjEx''@;'; put 'put ''OVx1ezIzMGRhfVx1ezI0M2YyfSJdLFsiOWVmNSIsIlx1NTY1ZFx1ezIxMmE5fVx1NTdhN1x1ezI0OTYzfVx1ezI5ZTA2fVx1NTIzNFx1ezI3MGFlfVx1MzVhZFx1NmM0YVx1OWQ3YyJdLFsiOWY0MCIsIlx1N2M1Nlx1OWIzOVx1NTdkZVx1ezIxNzZjfVx1NWM1M1x1NjRkM1x1ezI5NGQwfVx1''@;'; put 'put ''ezI2MzM1fVx1ezI3MTY0fVx1ODZhZFx1ezIwZDI4fVx1ezI2ZDIyfVx1ezI0YWUyfVx1ezIwZDcxfSJdLFsiOWY0ZiIsIlx1NTFmZVx1ezIxZjBmfVx1NWQ4ZVx1OTcwM1x1ezIxZGQxfVx1OWU4MVx1OTA0Y1x1N2IxZlx1OWIwMlx1NWNkMVx1N2JhM1x1NjI2OFx1NjMzNVx1OWFmZlx1N2Jj''@;'; put 'put ''Zlx1OWIyYVx1N2M3ZVx1OWIyZVx1N2M0Mlx1N2M4Nlx1OWMxNVx1N2JmY1x1OWIwOVx1OWYxN1x1OWMxYlx1ezI0OTNlfVx1OWY1YVx1NTU3M1x1NWJjM1x1NGZmZFx1OWU5OFx1NGZmMlx1NTI2MFx1M2UwNlx1NTJkMVx1NTc2N1x1NTA1Nlx1NTliN1x1NWUxMlx1OTdjOFx1OWRhYlx1OGY1''@;'; put 'put ''Y1x1NTQ2OVx1OTdiNFx1OTk0MFx1OTdiYVx1NTMyY1x1NjEzMCJdLFsiOWZhMSIsIlx1NjkyY1x1NTNkYVx1OWMwYVx1OWQwMlx1NGMzYlx1OTY0MVx1Njk4MFx1NTBhNlx1NzU0Nlx1ezIxNzZkfVx1OTlkYVx1NTI3MyJdLFsiOWZhZSIsIlx1OTE1OVx1OTY4MVx1OTE1YyJdLFsiOWZiMiIs''@;'; put 'put ''Ilx1OTE1MVx1ezI4ZTk3fVx1NjM3Zlx1ezI2ZDIzfVx1NmFjYVx1NTYxMVx1OTE4ZVx1NzU3YVx1NjI4NVx1ezIwM2ZjfVx1NzM0Zlx1N2M3MFx1ezI1YzIxfVx1ezIzY2ZkfSJdLFsiOWZjMSIsIlx1ezI0OTE5fVx1NzZkNlx1OWI5ZFx1NGUyYVx1ezIwY2Q0fVx1ODNiZVx1ODg0MiJdLFsi''@;'; put 'put ''OWZjOSIsIlx1NWM0YVx1NjljMFx1NTBlZFx1NTc3YVx1NTIxZlx1NWRmNVx1NGVjZVx1NmMzMVx1ezIwMWYyfVx1NGYzOVx1NTQ5Y1x1NTRkYVx1NTI5YVx1OGQ4Mlx1MzVmZVx1NWYwY1x1MzVmMyJdLFsiOWZkYiIsIlx1NmI1Mlx1OTE3Y1x1OWZhNVx1OWI5N1x1OTgyZVx1OThiNFx1OWFi''@;'; put 'put ''YVx1OWVhOFx1OWU4NFx1NzE3YVx1N2IxNCJdLFsiOWZlNyIsIlx1NmJmYVx1ODgxOFx1N2Y3OCJdLFsiOWZlYiIsIlx1NTYyMFx1ezJhNjRhfVx1OGU3N1x1OWY1MyJdLFsiOWZmMCIsIlx1OGRkNFx1OGU0Zlx1OWUxY1x1OGUwMVx1NjI4Mlx1ezI4MzdkfVx1OGUyOFx1OGU3NVx1N2FkM1x1''@;'; put 'put ''ezI0YTc3fVx1N2EzZVx1NzhkOFx1NmNlYVx1OGE2N1x1NzYwNyJdLFsiYTA0MCIsIlx1ezI4YTVhfVx1OWYyNlx1NmNjZVx1ODdkNlx1NzVjM1x1ezJhMmIyfVx1Nzg1M1x1ezJmODQwfVx1OGQwY1x1NzJlMlx1NzM3MVx1OGIyZFx1NzMwMlx1NzRmMVx1OGNlYlx1ezI0YWJifVx1ODYyZlx1''@;'; put 'put ''NWZiYVx1ODhhMFx1NDRiNyJdLFsiYTA1NSIsIlx1ezIxODNifVx1ezI2ZTA1fSJdLFsiYTA1OCIsIlx1OGE3ZVx1ezIyNTFifSJdLFsiYTA1YiIsIlx1NjBmZFx1NzY2N1x1OWFkN1x1OWQ0NFx1OTM2ZVx1OWI4Zlx1ODdmNSJdLFsiYTA2MyIsIlx1ODgwZlx1OGNmN1x1NzMyY1x1OTcyMVx1''@;'; put 'put ''OWJiMFx1MzVkNlx1NzJiMlx1NGMwN1x1N2M1MVx1OTk0YVx1ezI2MTU5fVx1NjE1OVx1NGMwNFx1OWU5Nlx1NjE3ZCJdLFsiYTA3MyIsIlx1NTc1Zlx1NjE2Zlx1NjJhNlx1NjIzOVx1NjJjZVx1M2E1Y1x1NjFlMlx1NTNhYVx1ezIzM2Y1fVx1NjM2NFx1NjgwMlx1MzVkMiJdLFsiYTBhMSIs''@;'; put 'put ''Ilx1NWQ1N1x1ezI4YmMyfVx1OGZkYVx1ezI4ZTM5fSJdLFsiYTBhNiIsIlx1NTBkOVx1ezIxZDQ2fVx1NzkwNlx1NTMzMlx1OTYzOFx1ezIwZjNifVx1NDA2NSJdLFsiYTBhZSIsIlx1NzdmZSJdLFsiYTBiMCIsIlx1N2NjMlx1ezI1ZjFhfVx1N2NkYVx1N2EyZFx1ODA2Nlx1ODA2M1x1N2Q0''@;'; put 'put ''ZFx1NzUwNVx1NzRmMlx1ODk5NFx1ODIxYVx1NjcwY1x1ODA2Mlx1ezI3NDg2fVx1ODA1Ylx1NzRmMFx1ODEwM1x1NzcyNFx1ODk4OVx1ezI2N2NjfVx1NzU1M1x1ezI2ZWQxfVx1ODdhOVx1ODdjZVx1ODFjOFx1ODc4Y1x1OGE0OVx1OGNhZFx1OGI0M1x1NzcyYlx1NzRmOFx1ODRkYVx1MzYz''@;'; put 'put ''NVx1NjliMlx1OGRhNiJdLFsiYTBkNCIsIlx1ODlhOVx1NzQ2OFx1NmRiOVx1ODdjMVx1ezI0MDExfVx1NzRlN1x1M2RkYlx1NzE3Nlx1NjBhNFx1NjE5Y1x1M2NkMVx1NzE2Mlx1NjA3NyJdLFsiYTBlMiIsIlx1N2Y3MVx1ezI4YjJkfVx1NzI1MFx1NjBlOVx1NGI3ZVx1NTIyMFx1M2MxOFx1''@;'; put 'put ''ezIzY2M3fVx1ezI1ZWQ3fVx1ezI3NjU2fVx1ezI1NTMxfVx1ezIxOTQ0fVx1ezIxMmZlfVx1ezI5OTAzfVx1ezI2ZGRjfVx1ezI3MGFkfVx1NWNjMVx1ezI2MWFkfVx1ezI4YTBmfVx1ezIzNjc3fVx1ezIwMGVlfVx1ezI2ODQ2fVx1ezI0ZjBlfVx1NDU2Mlx1NWIxZlx1ezI2MzRjfVx1OWY1''@;'; put 'put ''MFx1OWVhNlx1ezI2MjZifSJdLFsiYTNjMCIsIlx1MjQwMCIsMzEsIlx1MjQyMSJdLFsiYzZhMSIsIlx1MjQ2MCIsOSwiXHUyNDc0Iiw5LCJcdTIxNzAiLDksIlx1NGUzNlx1NGUzZlx1NGU4NVx1NGVhMFx1NTE4Mlx1NTE5Nlx1NTFhYlx1NTJmOVx1NTMzOFx1NTM2OVx1NTNiNlx1NTkwYVx1''@;'; put 'put ''NWI4MFx1NWRkYlx1MmYzM1x1NWU3Zlx1NWVmNFx1NWY1MFx1NWY2MVx1NjUzNFx1NjVlMFx1NzU5Mlx1NzY3Nlx1OGZiNVx1OTZiNlx4YThcdTAyYzZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdWZmM2JcdWZmM2RcdTI3M2Rc''@;'; put 'put ''dTMwNDEiLDIzXSxbImM3NDAiLCJcdTMwNTkiLDU4LCJcdTMwYTFcdTMwYTJcdTMwYTNcdTMwYTQiXSxbImM3YTEiLCJcdTMwYTUiLDgxLCJcdTA0MTAiLDUsIlx1MDQwMVx1MDQxNiIsNF0sWyJjODQwIiwiXHUwNDFiIiwyNiwiXHUwNDUxXHUwNDM2IiwyNSwiXHUyMWU3XHUyMWI4XHUyMWI5''@;'; put 'put ''XHUzMWNmXHV7MjAwY2N9XHU0ZTVhXHV7MjAwOGF9XHU1MjAyXHU0NDkxIl0sWyJjOGExIiwiXHU5ZmIwXHU1MTg4XHU5ZmIxXHV7Mjc2MDd9Il0sWyJjOGNkIiwiXHVmZmUyXHVmZmU0XHVmZjA3XHVmZjAyXHUzMjMxXHUyMTE2XHUyMTIxXHUzMDliXHUzMDljXHUyZTgwXHUyZTg0XHUyZTg2''@;'; put 'put ''XHUyZTg3XHUyZTg4XHUyZThhXHUyZThjXHUyZThkXHUyZTk1XHUyZTljXHUyZTlkXHUyZWE1XHUyZWE3XHUyZWFhXHUyZWFjXHUyZWFlXHUyZWI2XHUyZWJjXHUyZWJlXHUyZWM2XHUyZWNhXHUyZWNjXHUyZWNkXHUyZWNmXHUyZWQ2XHUyZWQ3XHUyZWRlXHUyZWUzIl0sWyJjOGY1IiwiXHUw''@;'; put 'put ''MjgzXHUwMjUwXHUwMjViXHUwMjU0XHUwMjc1XHUwMTUzXHhmOFx1MDE0Ylx1MDI4YVx1MDI2YSJdLFsiZjlmZSIsIlx1ZmZlZCJdLFsiZmE0MCIsIlx1ezIwNTQ3fVx1OTJkYlx1ezIwNWRmfVx1ezIzZmM1fVx1ODU0Y1x1NDJiNVx1NzNlZlx1NTFiNVx1MzY0OVx1ezI0OTQyfVx1ezI4OWU0''@;'; put 'put ''fVx1OTM0NFx1ezIxOWRifVx1ODJlZVx1ezIzY2M4fVx1NzgzY1x1Njc0NFx1NjJkZlx1ezI0OTMzfVx1ezI4OWFhfVx1ezIwMmEwfVx1ezI2YmIzfVx1ezIxMzA1fVx1NGZhYlx1ezIyNGVkfVx1NTAwOFx1ezI2ZDI5fVx1ezI3YTg0fVx1ezIzNjAwfVx1ezI0YWIxfVx1ezIyNTEzfVx1NTAy''@;'; put 'put ''OVx1ezIwMzdlfVx1NWZhNFx1ezIwMzgwfVx1ezIwMzQ3fVx1NmVkYlx1ezIwNDFmfVx1NTA3ZFx1NTEwMVx1MzQ3YVx1NTEwZVx1OTg2Y1x1Mzc0M1x1ODQxNlx1ezI0OWE0fVx1ezIwNDg3fVx1NTE2MFx1ezIzM2I0fVx1NTE2YVx1ezIwYmZmfVx1ezIyMGZjfVx1ezIwMmU1fVx1ezIyNTMw''@;'; put 'put ''fVx1ezIwNThlfVx1ezIzMjMzfVx1ezIxOTgzfVx1NWI4Mlx1ODc3ZFx1ezIwNWIzfVx1ezIzYzk5fVx1NTFiMlx1NTFiOCJdLFsiZmFhMSIsIlx1OWQzNFx1NTFjOVx1NTFjZlx1NTFkMVx1M2NkY1x1NTFkM1x1ezI0YWE2fVx1NTFiM1x1NTFlMlx1NTM0Mlx1NTFlZFx1ODNjZFx1NjkzZVx1''@;'; put 'put ''ezIzNzJkfVx1NWY3Ylx1NTIwYlx1NTIyNlx1NTIzY1x1NTJiNVx1NTI1N1x1NTI5NFx1NTJiOVx1NTJjNVx1N2MxNVx1ODU0Mlx1NTJlMFx1ODYwZFx1ezI2YjEzfVx1NTMwNVx1ezI4YWRlfVx1NTU0OVx1NmVkOVx1ezIzZjgwfVx1ezIwOTU0fVx1ezIzZmVjfVx1NTMzM1x1NTM0NFx1ezIw''@;'; put 'put ''YmUyfVx1NmNjYlx1ezIxNzI2fVx1NjgxYlx1NzNkNVx1NjA0YVx1M2VhYVx1MzhjY1x1ezIxNmU4fVx1NzFkZFx1NDRhMlx1NTM2ZFx1NTM3NFx1ezI4NmFifVx1NTM3ZVx1NTM3Zlx1ezIxNTk2fVx1ezIxNjEzfVx1NzdlNlx1NTM5M1x1ezI4YTlifVx1NTNhMFx1NTNhYlx1NTNhZVx1NzNh''@;'; put 'put ''N1x1ezI1NzcyfVx1M2Y1OVx1NzM5Y1x1NTNjMVx1NTNjNVx1NmM0OVx1NGU0OVx1NTdmZVx1NTNkOVx1M2FhYlx1ezIwYjhmfVx1NTNlMFx1ezIzZmVifVx1ezIyZGEzfVx1NTNmNlx1ezIwYzc3fVx1NTQxM1x1NzA3OVx1NTUyYlx1NjY1N1x1NmQ1Ylx1NTQ2ZFx1ezI2YjUzfVx1ezIwZDc0''@;'; put 'put ''fVx1NTU1ZFx1NTQ4Zlx1NTRhNFx1NDdhNlx1ezIxNzBkfVx1ezIwZWRkfVx1M2RiNFx1ezIwZDRkfSJdLFsiZmI0MCIsIlx1ezI4OWJjfVx1ezIyNjk4fVx1NTU0N1x1NGNlZFx1NTQyZlx1NzQxN1x1NTU4Nlx1NTVhOVx1NTYwNVx1ezIxOGQ3fVx1ezI0MDNhfVx1NDU1Mlx1ezI0NDM1fVx1''@;'; put 'put ''NjZiM1x1ezIxMGI0fVx1NTYzN1x1NjZjZFx1ezIzMjhhfVx1NjZhNFx1NjZhZFx1NTY0ZFx1NTY0Zlx1NzhmMVx1NTZmMVx1OTc4N1x1NTNmZVx1NTcwMFx1NTZlZlx1NTZlZFx1ezI4YjY2fVx1MzYyM1x1ezIxMjRmfVx1NTc0Nlx1ezI0MWE1fVx1NmM2ZVx1NzA4Ylx1NTc0Mlx1MzZiMVx1''@;'; put 'put ''ezI2YzdlfVx1NTdlNlx1ezIxNDE2fVx1NTgwM1x1ezIxNDU0fVx1ezI0MzYzfVx1NTgyNlx1ezI0YmY1fVx1NTg1Y1x1NThhYVx1MzU2MVx1NThlMFx1NThkY1x1ezIxMjNjfVx1NThmYlx1NWJmZlx1NTc0M1x1ezJhMTUwfVx1ezI0Mjc4fVx1OTNkM1x1MzVhMVx1NTkxZlx1NjhhNlx1MzZj''@;'; put 'put ''M1x1NmU1OSJdLFsiZmJhMSIsIlx1ezIxNjNlfVx1NWEyNFx1NTU1M1x1ezIxNjkyfVx1ODUwNVx1NTljOVx1ezIwZDRlfVx1ezI2YzgxfVx1ezI2ZDJhfVx1ezIxN2RjfVx1NTlkOVx1ezIxN2ZifVx1ezIxN2IyfVx1ezI2ZGE2fVx1NmQ3MVx1ezIxODI4fVx1ezIxNmQ1fVx1NTlmOVx1ezI2''@;'; put 'put ''ZTQ1fVx1NWFhYlx1NWE2M1x1MzZlNlx1ezI0OWE5fVx1NWE3N1x1MzcwOFx1NWE5Nlx1NzQ2NVx1NWFkM1x1ezI2ZmExfVx1ezIyNTU0fVx1M2Q4NVx1ezIxOTExfVx1MzczMlx1ezIxNmI4fVx1NWU4M1x1NTJkMFx1NWI3Nlx1NjU4OFx1NWI3Y1x1ezI3YTBlfVx1NDAwNFx1NDg1ZFx1ezIw''@;'; put 'put ''MjA0fVx1NWJkNVx1NjE2MFx1ezIxYTM0fVx1ezI1OWNjfVx1ezIwNWE1fVx1NWJmM1x1NWI5ZFx1NGQxMFx1NWMwNVx1ezIxYjQ0fVx1NWMxM1x1NzNjZVx1NWMxNFx1ezIxY2E1fVx1ezI2YjI4fVx1NWM0OVx1NDhkZFx1NWM4NVx1NWNlOVx1NWNlZlx1NWQ4Ylx1ezIxZGY5fVx1ezIxZTM3''@;'; put 'put ''fVx1NWQxMFx1NWQxOFx1NWQ0Nlx1ezIxZWE0fVx1NWNiYVx1NWRkN1x1ODJmY1x1MzgyZFx1ezI0OTAxfVx1ezIyMDQ5fVx1ezIyMTczfVx1ODI4N1x1MzgzNlx1M2JjMlx1NWUyZVx1NmE4YVx1NWU3NVx1NWU3YVx1ezI0NGJjfVx1ezIwY2QzfVx1NTNhNlx1NGViN1x1NWVkMFx1NTNhOFx1''@;'; put 'put ''ezIxNzcxfVx1NWUwOVx1NWVmNFx1ezI4NDgyfSJdLFsiZmM0MCIsIlx1NWVmOVx1NWVmYlx1MzhhMFx1NWVmY1x1NjgzZVx1OTQxYlx1NWYwZFx1ezIwMWMxfVx1ezJmODk0fVx1M2FkZVx1NDhhZVx1ezIxMzNhfVx1NWYzYVx1ezI2ODg4fVx1ezIyM2QwfVx1NWY1OFx1ezIyNDcxfVx1NWY2''@;'; put 'put ''M1x1OTdiZFx1ezI2ZTZlfVx1NWY3Mlx1OTM0MFx1ezI4YTM2fVx1NWZhN1x1NWRiNlx1M2Q1Zlx1ezI1MjUwfVx1ezIxZjZhfVx1ezI3MGY4fVx1ezIyNjY4fVx1OTFkNlx1ezIwMjllfVx1ezI4YTI5fVx1NjAzMVx1NjY4NVx1ezIxODc3fVx1Mzk2M1x1M2RjN1x1MzYzOVx1NTc5MFx1ezIy''@;'; put 'put ''N2I0fVx1Nzk3MVx1M2U0MFx1NjA5ZVx1NjBhNFx1NjBiM1x1ezI0OTgyfVx1ezI0OThmfVx1ezI3YTUzfVx1NzRhNFx1NTBlMVx1NWFhMFx1NjE2NFx1ODQyNFx1NjE0Mlx1ezJmOGE2fVx1ezI2ZWQyfVx1NjE4MVx1NTFmNFx1ezIwNjU2fVx1NjE4N1x1NWJhYVx1ezIzZmI3fSJdLFsiZmNh''@;'; put 'put ''MSIsIlx1ezIyODVmfVx1NjFkM1x1ezI4YjlkfVx1ezI5OTVkfVx1NjFkMFx1MzkzMlx1ezIyOTgwfVx1ezIyOGMxfVx1NjAyM1x1NjE1Y1x1NjUxZVx1NjM4Ylx1ezIwMTE4fVx1NjJjNVx1ezIxNzcwfVx1NjJkNVx1ezIyZTBkfVx1NjM2Y1x1ezI0OWRmfVx1M2ExN1x1NjQzOFx1NjNmOFx1''@;'; put 'put ''ezIxMzhlfVx1ezIxN2ZjfVx1NjQ5MFx1NmY4YVx1ezIyZTM2fVx1OTgxNFx1ezI0MDhjfVx1ezI1NzFkfVx1NjRlMVx1NjRlNVx1OTQ3Ylx1M2E2Nlx1NjQzYVx1M2E1N1x1NjU0ZFx1NmYxNlx1ezI0YTI4fVx1ezI0YTIzfVx1NjU4NVx1NjU2ZFx1NjU1Zlx1ezIzMDdlfVx1NjViNVx1ezI0''@;'; put 'put ''OTQwfVx1NGIzN1x1NjVkMVx1NDBkOFx1ezIxODI5fVx1NjVlMFx1NjVlM1x1NWZkZlx1ezIzNDAwfVx1NjYxOFx1ezIzMWY3fVx1ezIzMWY4fVx1NjY0NFx1ezIzMWE0fVx1ezIzMWE1fVx1NjY0Ylx1ezIwZTc1fVx1NjY2N1x1ezI1MWU2fVx1NjY3M1x1NjY3NFx1ezIxZTNkfVx1ezIzMjMx''@;'; put 'put ''fVx1ezI4NWY0fVx1ezIzMWM4fVx1ezI1MzEzfVx1NzdjNVx1ezIyOGY3fVx1OTlhNFx1NjcwMlx1ezI0MzljfVx1ezI0YTIxfVx1M2IyYlx1NjlmYVx1ezIzN2MyfVx1Njc1ZVx1Njc2N1x1Njc2Mlx1ezI0MWNkfVx1ezI5MGVkfVx1NjdkN1x1NDRlOVx1NjgyMlx1NmU1MFx1OTIzY1x1Njgw''@;'; put 'put ''MVx1ezIzM2U2fVx1ezI2ZGEwfVx1Njg1ZCJdLFsiZmQ0MCIsIlx1ezIzNDZmfVx1NjllMVx1NmEwYlx1ezI4YWRmfVx1Njk3M1x1NjhjM1x1ezIzNWNkfVx1NjkwMVx1NjkwMFx1M2QzMlx1M2EwMVx1ezIzNjNjfVx1M2I4MFx1NjdhY1x1Njk2MVx1ezI4YTRhfVx1NDJmY1x1NjkzNlx1Njk5''@;'; put 'put ''OFx1M2JhMVx1ezIwM2M5fVx1ODM2M1x1NTA5MFx1NjlmOVx1ezIzNjU5fVx1ezIyMTJhfVx1NmE0NVx1ezIzNzAzfVx1NmE5ZFx1M2JmM1x1NjdiMVx1NmFjOFx1ezI5MTljfVx1M2MwZFx1NmIxZFx1ezIwOTIzfVx1NjBkZVx1NmIzNVx1NmI3NFx1ezIyN2NkfVx1NmViNVx1ezIzYWRifVx1''@;'; put 'put ''ezIwM2I1fVx1ezIxOTU4fVx1Mzc0MFx1NTQyMVx1ezIzYjVhfVx1NmJlMVx1ezIzZWZjfVx1NmJkY1x1NmMzN1x1ezIyNDhifVx1ezI0OGYxfVx1ezI2YjUxfVx1NmM1YVx1ODIyNlx1NmM3OVx1ezIzZGJjfVx1NDRjNVx1ezIzZGJkfVx1ezI0MWE0fVx1ezI0OTBjfVx1ezI0OTAwfSJdLFsi''@;'; put 'put ''ZmRhMSIsIlx1ezIzY2M5fVx1MzZlNVx1M2NlYlx1ezIwZDMyfVx1OWI4M1x1ezIzMWY5fVx1ezIyNDkxfVx1N2Y4Zlx1NjgzN1x1ezI2ZDI1fVx1ezI2ZGExfVx1ezI2ZGVifVx1NmQ5Nlx1NmQ1Y1x1NmU3Y1x1NmYwNFx1ezI0OTdmfVx1ezI0MDg1fVx1ezI2ZTcyfVx1ODUzM1x1ezI2Zjc0''@;'; put 'put ''fVx1NTFjN1x1NmM5Y1x1NmUxZFx1ODQyZVx1ezI4YjIxfVx1NmUyZlx1ezIzZTJmfVx1NzQ1M1x1ezIzZjgyfVx1NzljY1x1NmU0Zlx1NWE5MVx1ezIzMDRifVx1NmZmOFx1MzcwZFx1NmY5ZFx1ezIzZTMwfVx1NmVmYVx1ezIxNDk3fVx1ezI0MDNkfVx1NDU1NVx1OTNmMFx1NmY0NFx1NmY1''@;'; put 'put ''Y1x1M2Q0ZVx1NmY3NFx1ezI5MTcwfVx1M2QzYlx1NmY5Zlx1ezI0MTQ0fVx1NmZkM1x1ezI0MDkxfVx1ezI0MTU1fVx1ezI0MDM5fVx1ezIzZmYwfVx1ezIzZmI0fVx1ezI0MTNmfVx1NTFkZlx1ezI0MTU2fVx1ezI0MTU3fVx1ezI0MTQwfVx1ezI2MWRkfVx1NzA0Ylx1NzA3ZVx1NzBhN1x1''@;'; put 'put ''NzA4MVx1NzBjY1x1NzBkNVx1NzBkNlx1NzBkZlx1NDEwNFx1M2RlOFx1NzFiNFx1NzE5Nlx1ezI0Mjc3fVx1NzEyYlx1NzE0NVx1NWE4OFx1NzE0YVx1NzE2ZVx1NWM5Y1x1ezI0MzY1fVx1NzE0Zlx1OTM2Mlx1ezI0MmMxfVx1NzEyY1x1ezI0NDVhfVx1ezI0YTI3fVx1ezI0YTIyfVx1NzFi''@;'; put 'put ''YVx1ezI4YmU4fVx1NzBiZFx1NzIwZSJdLFsiZmU0MCIsIlx1OTQ0Mlx1NzIxNVx1NTkxMVx1OTQ0M1x1NzIyNFx1OTM0MVx1ezI1NjA1fVx1NzIyZVx1NzI0MFx1ezI0OTc0fVx1NjhiZFx1NzI1NVx1NzI1N1x1M2U1NVx1ezIzMDQ0fVx1NjgwZFx1NmYzZFx1NzI4Mlx1NzMyYVx1NzMyYlx1''@;'; put 'put ''ezI0ODIzfVx1ezI4ODJifVx1NDhlZFx1ezI4ODA0fVx1NzMyOFx1NzMyZVx1NzNjZlx1NzNhYVx1ezIwYzNhfVx1ezI2YTJlfVx1NzNjOVx1NzQ0OVx1ezI0MWUyfVx1ezIxNmU3fVx1ezI0YTI0fVx1NjYyM1x1MzZjNVx1ezI0OWI3fVx1ezI0OThkfVx1ezI0OWZifVx1NzNmN1x1NzQxNVx1''@;'; put 'put ''NjkwM1x1ezI0YTI2fVx1NzQzOVx1ezIwNWMzfVx1M2VkN1x1NzQ1Y1x1ezIyOGFkfVx1NzQ2MFx1ezI4ZWIyfVx1NzQ0N1x1NzNlNFx1NzQ3Nlx1ODNiOVx1NzQ2Y1x1MzczMFx1NzQ3NFx1OTNmMVx1NmEyY1x1NzQ4Mlx1NDk1M1x1ezI0YThjfSJdLFsiZmVhMSIsIlx1ezI0MTVmfVx1ezI0''@;'; put 'put ''YTc5fVx1ezI4YjhmfVx1NWI0Nlx1ezI4YzAzfVx1ezIxODllfVx1NzRjOFx1ezIxOTg4fVx1NzUwZVx1NzRlOVx1NzUxZVx1ezI4ZWQ5fVx1ezIxYTRifVx1NWJkN1x1ezI4ZWFjfVx1OTM4NVx1NzU0ZFx1NzU0YVx1NzU2N1x1NzU2ZVx1ezI0ZjgyfVx1M2YwNFx1ezI0ZDEzfVx1NzU4ZVx1''@;'; put 'put ''NzQ1ZFx1NzU5ZVx1NzViNFx1NzYwMlx1NzYyY1x1NzY1MVx1NzY0Zlx1NzY2Zlx1NzY3Nlx1ezI2M2Y1fVx1NzY5MFx1ODFlZlx1MzdmOFx1ezI2OTExfVx1ezI2OTBlfVx1NzZhMVx1NzZhNVx1NzZiN1x1NzZjY1x1ezI2ZjlmfVx1ODQ2Mlx1ezI1MDlkfVx1ezI1MTdkfVx1ezIxZTFjfVx1''@;'; put 'put ''NzcxZVx1NzcyNlx1Nzc0MFx1NjRhZlx1ezI1MjIwfVx1Nzc1OFx1ezIzMmFjfVx1NzdhZlx1ezI4OTY0fVx1ezI4OTY4fVx1ezIxNmMxfVx1NzdmNFx1NzgwOVx1ezIxMzc2fVx1ezI0YTEyfVx1NjhjYVx1NzhhZlx1NzhjN1x1NzhkM1x1OTZhNVx1NzkyZVx1ezI1NWUwfVx1NzhkN1x1Nzkz''@;'; put 'put ''NFx1NzhiMVx1ezI3NjBjfVx1OGZiOFx1ODg4NFx1ezI4YjJifVx1ezI2MDgzfVx1ezIyNjFjfVx1Nzk4Nlx1ODkwMFx1NjkwMlx1Nzk4MFx1ezI1ODU3fVx1Nzk5ZFx1ezI3YjM5fVx1NzkzY1x1NzlhOVx1NmUyYVx1ezI3MTI2fVx1M2VhOFx1NzljNlx1ezI5MTBkfVx1NzlkNCJdXScpfSw3''@;'; put 'put ''NDQ4ODpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjcsIlx1MjBhYyJdLFsiODE0MCIsIlx1NGUwMlx1NGUwNFx1NGUwNVx1NGUwNlx1NGUwZlx1NGUxMlx1NGUxN1x1NGUxZlx1NGUyMFx1NGUyMVx1NGUyM1x1NGUyNlx1NGUyOVx1''@;'; put 'put ''NGUyZVx1NGUyZlx1NGUzMVx1NGUzM1x1NGUzNVx1NGUzN1x1NGUzY1x1NGU0MFx1NGU0MVx1NGU0Mlx1NGU0NFx1NGU0Nlx1NGU0YVx1NGU1MVx1NGU1NVx1NGU1N1x1NGU1YVx1NGU1Ylx1NGU2Mlx1NGU2M1x1NGU2NFx1NGU2NVx1NGU2N1x1NGU2OFx1NGU2YSIsNSwiXHU0ZTcyXHU0ZTc0''@;'; put 'put ''Iiw5LCJcdTRlN2YiLDYsIlx1NGU4N1x1NGU4YSJdLFsiODE4MCIsIlx1NGU5MFx1NGU5Nlx1NGU5N1x1NGU5OVx1NGU5Y1x1NGU5ZFx1NGU5ZVx1NGVhM1x1NGVhYVx1NGVhZlx1NGViMFx1NGViMVx1NGViNFx1NGViNlx1NGViN1x1NGViOFx1NGViOVx1NGViY1x1NGViZFx1NGViZVx1NGVj''@;'; put 'put ''OFx1NGVjY1x1NGVjZlx1NGVkMFx1NGVkMlx1NGVkYVx1NGVkYlx1NGVkY1x1NGVlMFx1NGVlMlx1NGVlNlx1NGVlN1x1NGVlOVx1NGVlZFx1NGVlZVx1NGVlZlx1NGVmMVx1NGVmNFx1NGVmOFx1NGVmOVx1NGVmYVx1NGVmY1x1NGVmZVx1NGYwMFx1NGYwMiIsNiwiXHU0ZjBiXHU0ZjBjXHU0''@;'; put 'put ''ZjEyIiw0LCJcdTRmMWNcdTRmMWRcdTRmMjFcdTRmMjNcdTRmMjhcdTRmMjlcdTRmMmNcdTRmMmRcdTRmMmVcdTRmMzFcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2UiLDQsIlx1NGY0NFx1NGY0NVx1NGY0NyIsNSwiXHU0ZjUyXHU0ZjU0XHU0ZjU2XHU0ZjYxXHU0ZjYyXHU0''@;'; put 'put ''ZjY2XHU0ZjY4XHU0ZjZhXHU0ZjZiXHU0ZjZkXHU0ZjZlXHU0ZjcxXHU0ZjcyXHU0Zjc1XHU0Zjc3XHU0Zjc4XHU0Zjc5XHU0ZjdhXHU0ZjdkXHU0ZjgwXHU0ZjgxXHU0ZjgyXHU0Zjg1XHU0Zjg2XHU0Zjg3XHU0ZjhhXHU0ZjhjXHU0ZjhlXHU0ZjkwXHU0ZjkyXHU0ZjkzXHU0Zjk1XHU0Zjk2''@;'; put 'put ''XHU0Zjk4XHU0Zjk5XHU0ZjlhXHU0ZjljXHU0ZjllXHU0ZjlmXHU0ZmExXHU0ZmEyIl0sWyI4MjQwIiwiXHU0ZmE0XHU0ZmFiXHU0ZmFkXHU0ZmIwIiw0LCJcdTRmYjYiLDgsIlx1NGZjMFx1NGZjMVx1NGZjMlx1NGZjNlx1NGZjN1x1NGZjOFx1NGZjOVx1NGZjYlx1NGZjY1x1NGZjZFx1NGZk''@;'; put 'put ''MiIsNCwiXHU0ZmQ5XHU0ZmRiXHU0ZmUwXHU0ZmUyXHU0ZmU0XHU0ZmU1XHU0ZmU3XHU0ZmViXHU0ZmVjXHU0ZmYwXHU0ZmYyXHU0ZmY0XHU0ZmY1XHU0ZmY2XHU0ZmY3XHU0ZmY5XHU0ZmZiXHU0ZmZjXHU0ZmZkXHU0ZmZmIiwxMV0sWyI4MjgwIiwiXHU1MDBiXHU1MDBlXHU1MDEwXHU1MDEx''@;'; put 'put ''XHU1MDEzXHU1MDE1XHU1MDE2XHU1MDE3XHU1MDFiXHU1MDFkXHU1MDFlXHU1MDIwXHU1MDIyXHU1MDIzXHU1MDI0XHU1MDI3XHU1MDJiXHU1MDJmIiwxMCwiXHU1MDNiXHU1MDNkXHU1MDNmXHU1MDQwXHU1MDQxXHU1MDQyXHU1MDQ0XHU1MDQ1XHU1MDQ2XHU1MDQ5XHU1MDRhXHU1MDRiXHU1''@;'; put 'put ''MDRkXHU1MDUwIiw0LCJcdTUwNTZcdTUwNTdcdTUwNThcdTUwNTlcdTUwNWJcdTUwNWQiLDcsIlx1NTA2NiIsNSwiXHU1MDZkIiw4LCJcdTUwNzhcdTUwNzlcdTUwN2FcdTUwN2NcdTUwN2RcdTUwODFcdTUwODJcdTUwODNcdTUwODRcdTUwODZcdTUwODdcdTUwODlcdTUwOGFcdTUwOGJcdTUw''@;'; put 'put ''OGNcdTUwOGUiLDIwLCJcdTUwYTRcdTUwYTZcdTUwYWFcdTUwYWJcdTUwYWQiLDQsIlx1NTBiMyIsNiwiXHU1MGJjIl0sWyI4MzQwIiwiXHU1MGJkIiwxNywiXHU1MGQwIiw1LCJcdTUwZDdcdTUwZDhcdTUwZDlcdTUwZGIiLDEwLCJcdTUwZThcdTUwZTlcdTUwZWFcdTUwZWJcdTUwZWZcdTUw''@;'; put 'put ''ZjBcdTUwZjFcdTUwZjJcdTUwZjRcdTUwZjYiLDQsIlx1NTBmYyIsOSwiXHU1MTA4Il0sWyI4MzgwIiwiXHU1MTA5XHU1MTBhXHU1MTBjIiw1LCJcdTUxMTMiLDEzLCJcdTUxMjIiLDI4LCJcdTUxNDJcdTUxNDdcdTUxNGFcdTUxNGNcdTUxNGVcdTUxNGZcdTUxNTBcdTUxNTJcdTUxNTNcdTUx''@;'; put 'put ''NTdcdTUxNThcdTUxNTlcdTUxNWJcdTUxNWQiLDQsIlx1NTE2M1x1NTE2NFx1NTE2Nlx1NTE2N1x1NTE2OVx1NTE2YVx1NTE2Zlx1NTE3Mlx1NTE3YVx1NTE3ZVx1NTE3Zlx1NTE4M1x1NTE4NFx1NTE4Nlx1NTE4N1x1NTE4YVx1NTE4Ylx1NTE4ZVx1NTE4Zlx1NTE5MFx1NTE5MVx1NTE5M1x1''@;'; put 'put ''NTE5NFx1NTE5OFx1NTE5YVx1NTE5ZFx1NTE5ZVx1NTE5Zlx1NTFhMVx1NTFhM1x1NTFhNiIsNCwiXHU1MWFkXHU1MWFlXHU1MWI0XHU1MWI4XHU1MWI5XHU1MWJhXHU1MWJlXHU1MWJmXHU1MWMxXHU1MWMyXHU1MWMzXHU1MWM1XHU1MWM4XHU1MWNhXHU1MWNkXHU1MWNlXHU1MWQwXHU1MWQy''@;'; put 'put ''Iiw1XSxbIjg0NDAiLCJcdTUxZDhcdTUxZDlcdTUxZGFcdTUxZGNcdTUxZGVcdTUxZGZcdTUxZTJcdTUxZTNcdTUxZTUiLDUsIlx1NTFlY1x1NTFlZVx1NTFmMVx1NTFmMlx1NTFmNFx1NTFmN1x1NTFmZVx1NTIwNFx1NTIwNVx1NTIwOVx1NTIwYlx1NTIwY1x1NTIwZlx1NTIxMFx1NTIxM1x1''@;'; put 'put ''NTIxNFx1NTIxNVx1NTIxY1x1NTIxZVx1NTIxZlx1NTIyMVx1NTIyMlx1NTIyM1x1NTIyNVx1NTIyNlx1NTIyN1x1NTIyYVx1NTIyY1x1NTIyZlx1NTIzMVx1NTIzMlx1NTIzNFx1NTIzNVx1NTIzY1x1NTIzZVx1NTI0NCIsNSwiXHU1MjRiXHU1MjRlXHU1MjRmXHU1MjUyXHU1MjUzXHU1MjU1''@;'; put 'put ''XHU1MjU3XHU1MjU4Il0sWyI4NDgwIiwiXHU1MjU5XHU1MjVhXHU1MjViXHU1MjVkXHU1MjVmXHU1MjYwXHU1MjYyXHU1MjYzXHU1MjY0XHU1MjY2XHU1MjY4XHU1MjZiXHU1MjZjXHU1MjZkXHU1MjZlXHU1MjcwXHU1MjcxXHU1MjczIiw5LCJcdTUyN2VcdTUyODBcdTUyODMiLDQsIlx1NTI4''@;'; put 'put ''OSIsNiwiXHU1MjkxXHU1MjkyXHU1Mjk0Iiw2LCJcdTUyOWNcdTUyYTRcdTUyYTVcdTUyYTZcdTUyYTdcdTUyYWVcdTUyYWZcdTUyYjBcdTUyYjQiLDksIlx1NTJjMFx1NTJjMVx1NTJjMlx1NTJjNFx1NTJjNVx1NTJjNlx1NTJjOFx1NTJjYVx1NTJjY1x1NTJjZFx1NTJjZVx1NTJjZlx1NTJk''@;'; put 'put ''MVx1NTJkM1x1NTJkNFx1NTJkNVx1NTJkN1x1NTJkOSIsNSwiXHU1MmUwXHU1MmUxXHU1MmUyXHU1MmUzXHU1MmU1IiwxMCwiXHU1MmYxIiw3LCJcdTUyZmJcdTUyZmNcdTUyZmRcdTUzMDFcdTUzMDJcdTUzMDNcdTUzMDRcdTUzMDdcdTUzMDlcdTUzMGFcdTUzMGJcdTUzMGNcdTUzMGUiXSxb''@;'; put 'put ''Ijg1NDAiLCJcdTUzMTFcdTUzMTJcdTUzMTNcdTUzMTRcdTUzMThcdTUzMWJcdTUzMWNcdTUzMWVcdTUzMWZcdTUzMjJcdTUzMjRcdTUzMjVcdTUzMjdcdTUzMjhcdTUzMjlcdTUzMmJcdTUzMmNcdTUzMmRcdTUzMmYiLDksIlx1NTMzY1x1NTMzZFx1NTM0MFx1NTM0Mlx1NTM0NFx1NTM0Nlx1''@;'; put 'put ''NTM0Ylx1NTM0Y1x1NTM0ZFx1NTM1MFx1NTM1NFx1NTM1OFx1NTM1OVx1NTM1Ylx1NTM1ZFx1NTM2NVx1NTM2OFx1NTM2YVx1NTM2Y1x1NTM2ZFx1NTM3Mlx1NTM3Nlx1NTM3OVx1NTM3Ylx1NTM3Y1x1NTM3ZFx1NTM3ZVx1NTM4MFx1NTM4MVx1NTM4M1x1NTM4N1x1NTM4OFx1NTM4YVx1NTM4''@;'; put 'put ''ZVx1NTM4ZiJdLFsiODU4MCIsIlx1NTM5MCIsNCwiXHU1Mzk2XHU1Mzk3XHU1Mzk5XHU1MzliXHU1MzljXHU1MzllXHU1M2EwXHU1M2ExXHU1M2E0XHU1M2E3XHU1M2FhXHU1M2FiXHU1M2FjXHU1M2FkXHU1M2FmIiw2LCJcdTUzYjdcdTUzYjhcdTUzYjlcdTUzYmFcdTUzYmNcdTUzYmRcdTUz''@;'; put 'put ''YmVcdTUzYzBcdTUzYzMiLDQsIlx1NTNjZVx1NTNjZlx1NTNkMFx1NTNkMlx1NTNkM1x1NTNkNVx1NTNkYVx1NTNkY1x1NTNkZFx1NTNkZVx1NTNlMVx1NTNlMlx1NTNlN1x1NTNmNFx1NTNmYVx1NTNmZVx1NTNmZlx1NTQwMFx1NTQwMlx1NTQwNVx1NTQwN1x1NTQwYlx1NTQxNFx1NTQxOFx1''@;'; put 'put ''NTQxOVx1NTQxYVx1NTQxY1x1NTQyMlx1NTQyNFx1NTQyNVx1NTQyYVx1NTQzMFx1NTQzM1x1NTQzNlx1NTQzN1x1NTQzYVx1NTQzZFx1NTQzZlx1NTQ0MVx1NTQ0Mlx1NTQ0NFx1NTQ0NVx1NTQ0N1x1NTQ0OVx1NTQ0Y1x1NTQ0ZFx1NTQ0ZVx1NTQ0Zlx1NTQ1MVx1NTQ1YVx1NTQ1ZCIsNCwi''@;'; put 'put ''XHU1NDYzXHU1NDY1XHU1NDY3XHU1NDY5Iiw3LCJcdTU0NzRcdTU0NzlcdTU0N2FcdTU0N2VcdTU0N2ZcdTU0ODFcdTU0ODNcdTU0ODVcdTU0ODdcdTU0ODhcdTU0ODlcdTU0OGFcdTU0OGRcdTU0OTFcdTU0OTNcdTU0OTdcdTU0OThcdTU0OWNcdTU0OWVcdTU0OWZcdTU0YTBcdTU0YTEiXSxb''@;'; put 'put ''Ijg2NDAiLCJcdTU0YTJcdTU0YTVcdTU0YWVcdTU0YjBcdTU0YjJcdTU0YjVcdTU0YjZcdTU0YjdcdTU0YjlcdTU0YmFcdTU0YmNcdTU0YmVcdTU0YzNcdTU0YzVcdTU0Y2FcdTU0Y2JcdTU0ZDZcdTU0ZDhcdTU0ZGJcdTU0ZTAiLDQsIlx1NTRlYlx1NTRlY1x1NTRlZlx1NTRmMFx1NTRmMVx1''@;'; put 'put ''NTRmNCIsNSwiXHU1NGZiXHU1NGZlXHU1NTAwXHU1NTAyXHU1NTAzXHU1NTA0XHU1NTA1XHU1NTA4XHU1NTBhIiw0LCJcdTU1MTJcdTU1MTNcdTU1MTUiLDUsIlx1NTUxY1x1NTUxZFx1NTUxZVx1NTUxZlx1NTUyMVx1NTUyNVx1NTUyNiJdLFsiODY4MCIsIlx1NTUyOFx1NTUyOVx1NTUyYlx1''@;'; put 'put ''NTUyZFx1NTUzMlx1NTUzNFx1NTUzNVx1NTUzNlx1NTUzOFx1NTUzOVx1NTUzYVx1NTUzYlx1NTUzZFx1NTU0MFx1NTU0Mlx1NTU0NVx1NTU0N1x1NTU0OFx1NTU0YiIsNCwiXHU1NTUxXHU1NTUyXHU1NTUzXHU1NTU0XHU1NTU3Iiw0LCJcdTU1NWRcdTU1NWVcdTU1NWZcdTU1NjBcdTU1NjJc''@;'; put 'put ''dTU1NjNcdTU1NjhcdTU1NjlcdTU1NmJcdTU1NmYiLDUsIlx1NTU3OVx1NTU3YVx1NTU3ZFx1NTU3Zlx1NTU4NVx1NTU4Nlx1NTU4Y1x1NTU4ZFx1NTU4ZVx1NTU5MFx1NTU5Mlx1NTU5M1x1NTU5NVx1NTU5Nlx1NTU5N1x1NTU5YVx1NTU5Ylx1NTU5ZVx1NTVhMCIsNiwiXHU1NWE4Iiw4LCJc''@;'; put 'put ''dTU1YjJcdTU1YjRcdTU1YjZcdTU1YjhcdTU1YmFcdTU1YmNcdTU1YmYiLDQsIlx1NTVjNlx1NTVjN1x1NTVjOFx1NTVjYVx1NTVjYlx1NTVjZVx1NTVjZlx1NTVkMFx1NTVkNVx1NTVkNyIsNCwiXHU1NWRlXHU1NWUwXHU1NWUyXHU1NWU3XHU1NWU5XHU1NWVkXHU1NWVlXHU1NWYwXHU1NWYx''@;'; put 'put ''XHU1NWY0XHU1NWY2XHU1NWY4Iiw0LCJcdTU1ZmZcdTU2MDJcdTU2MDNcdTU2MDRcdTU2MDUiXSxbIjg3NDAiLCJcdTU2MDZcdTU2MDdcdTU2MGFcdTU2MGJcdTU2MGRcdTU2MTAiLDcsIlx1NTYxOVx1NTYxYVx1NTYxY1x1NTYxZFx1NTYyMFx1NTYyMVx1NTYyMlx1NTYyNVx1NTYyNlx1NTYy''@;'; put 'put ''OFx1NTYyOVx1NTYyYVx1NTYyYlx1NTYyZVx1NTYyZlx1NTYzMFx1NTYzM1x1NTYzNVx1NTYzN1x1NTYzOFx1NTYzYVx1NTYzY1x1NTYzZFx1NTYzZVx1NTY0MCIsMTEsIlx1NTY0ZiIsNCwiXHU1NjU1XHU1NjU2XHU1NjVhXHU1NjViXHU1NjVkIiw0XSxbIjg3ODAiLCJcdTU2NjNcdTU2NjVc''@;'; put 'put ''dTU2NjZcdTU2NjdcdTU2NmRcdTU2NmVcdTU2NmZcdTU2NzBcdTU2NzJcdTU2NzNcdTU2NzRcdTU2NzVcdTU2NzdcdTU2NzhcdTU2NzlcdTU2N2FcdTU2N2QiLDcsIlx1NTY4NyIsNiwiXHU1NjkwXHU1NjkxXHU1NjkyXHU1Njk0IiwxNCwiXHU1NmE0IiwxMCwiXHU1NmIwIiw2LCJcdTU2Yjhc''@;'; put 'put ''dTU2YjlcdTU2YmFcdTU2YmJcdTU2YmQiLDEyLCJcdTU2Y2IiLDgsIlx1NTZkNVx1NTZkNlx1NTZkOFx1NTZkOVx1NTZkY1x1NTZlM1x1NTZlNSIsNSwiXHU1NmVjXHU1NmVlXHU1NmVmXHU1NmYyXHU1NmYzXHU1NmY2XHU1NmY3XHU1NmY4XHU1NmZiXHU1NmZjXHU1NzAwXHU1NzAxXHU1NzAy''@;'; put 'put ''XHU1NzA1XHU1NzA3XHU1NzBiIiw2XSxbIjg4NDAiLCJcdTU3MTIiLDksIlx1NTcxZFx1NTcxZVx1NTcyMFx1NTcyMVx1NTcyMlx1NTcyNFx1NTcyNVx1NTcyNlx1NTcyN1x1NTcyYlx1NTczMVx1NTczMlx1NTczNCIsNCwiXHU1NzNjXHU1NzNkXHU1NzNmXHU1NzQxXHU1NzQzXHU1NzQ0XHU1''@;'; put 'put ''NzQ1XHU1NzQ2XHU1NzQ4XHU1NzQ5XHU1NzRiXHU1NzUyIiw0LCJcdTU3NThcdTU3NTlcdTU3NjJcdTU3NjNcdTU3NjVcdTU3NjdcdTU3NmNcdTU3NmVcdTU3NzBcdTU3NzFcdTU3NzJcdTU3NzRcdTU3NzVcdTU3NzhcdTU3NzlcdTU3N2FcdTU3N2RcdTU3N2VcdTU3N2ZcdTU3ODAiXSxbIjg4''@;'; put 'put ''ODAiLCJcdTU3ODFcdTU3ODdcdTU3ODhcdTU3ODlcdTU3OGFcdTU3OGQiLDQsIlx1NTc5NCIsNiwiXHU1NzljXHU1NzlkXHU1NzllXHU1NzlmXHU1N2E1XHU1N2E4XHU1N2FhXHU1N2FjXHU1N2FmXHU1N2IwXHU1N2IxXHU1N2IzXHU1N2I1XHU1N2I2XHU1N2I3XHU1N2I5Iiw4LCJcdTU3YzQi''@;'; put 'put ''LDYsIlx1NTdjY1x1NTdjZFx1NTdkMFx1NTdkMVx1NTdkM1x1NTdkNlx1NTdkN1x1NTdkYlx1NTdkY1x1NTdkZVx1NTdlMVx1NTdlMlx1NTdlM1x1NTdlNSIsNywiXHU1N2VlXHU1N2YwXHU1N2YxXHU1N2YyXHU1N2YzXHU1N2Y1XHU1N2Y2XHU1N2Y3XHU1N2ZiXHU1N2ZjXHU1N2ZlXHU1N2Zm''@;'; put 'put ''XHU1ODAxXHU1ODAzXHU1ODA0XHU1ODA1XHU1ODA4XHU1ODA5XHU1ODBhXHU1ODBjXHU1ODBlXHU1ODBmXHU1ODEwXHU1ODEyXHU1ODEzXHU1ODE0XHU1ODE2XHU1ODE3XHU1ODE4XHU1ODFhXHU1ODFiXHU1ODFjXHU1ODFkXHU1ODFmXHU1ODIyXHU1ODIzXHU1ODI1Iiw0LCJcdTU4MmIiLDQs''@;'; put 'put ''Ilx1NTgzMVx1NTgzMlx1NTgzM1x1NTgzNFx1NTgzNiIsN10sWyI4OTQwIiwiXHU1ODNlIiw1LCJcdTU4NDUiLDYsIlx1NTg0ZVx1NTg0Zlx1NTg1MFx1NTg1Mlx1NTg1M1x1NTg1NVx1NTg1Nlx1NTg1N1x1NTg1OSIsNCwiXHU1ODVmIiw1LCJcdTU4NjYiLDQsIlx1NTg2ZCIsMTYsIlx1NTg3''@;'; put 'put ''Zlx1NTg4Mlx1NTg4NFx1NTg4Nlx1NTg4N1x1NTg4OFx1NTg4YVx1NTg4Ylx1NTg4YyJdLFsiODk4MCIsIlx1NTg4ZCIsNCwiXHU1ODk0Iiw0LCJcdTU4OWJcdTU4OWNcdTU4OWRcdTU4YTAiLDcsIlx1NThhYSIsMTcsIlx1NThiZFx1NThiZVx1NThiZlx1NThjMFx1NThjMlx1NThjM1x1NThj''@;'; put 'put ''NFx1NThjNiIsMTAsIlx1NThkMlx1NThkM1x1NThkNFx1NThkNiIsMTMsIlx1NThlNSIsNSwiXHU1OGVkXHU1OGVmXHU1OGYxXHU1OGYyXHU1OGY0XHU1OGY1XHU1OGY3XHU1OGY4XHU1OGZhIiw3LCJcdTU5MDNcdTU5MDVcdTU5MDZcdTU5MDgiLDQsIlx1NTkwZVx1NTkxMFx1NTkxMVx1NTkx''@;'; put 'put ''Mlx1NTkxM1x1NTkxN1x1NTkxOFx1NTkxYlx1NTkxZFx1NTkxZVx1NTkyMFx1NTkyMVx1NTkyMlx1NTkyM1x1NTkyNlx1NTkyOFx1NTkyY1x1NTkzMFx1NTkzMlx1NTkzM1x1NTkzNVx1NTkzNlx1NTkzYiJdLFsiOGE0MCIsIlx1NTkzZFx1NTkzZVx1NTkzZlx1NTk0MFx1NTk0M1x1NTk0NVx1''@;'; put 'put ''NTk0Nlx1NTk0YVx1NTk0Y1x1NTk0ZFx1NTk1MFx1NTk1Mlx1NTk1M1x1NTk1OVx1NTk1YiIsNCwiXHU1OTYxXHU1OTYzXHU1OTY0XHU1OTY2IiwxMiwiXHU1OTc1XHU1OTc3XHU1OTdhXHU1OTdiXHU1OTdjXHU1OTdlXHU1OTdmXHU1OTgwXHU1OTg1XHU1OTg5XHU1OThiXHU1OThjXHU1OThl''@;'; put 'put ''XHU1OThmXHU1OTkwXHU1OTkxXHU1OTk0XHU1OTk1XHU1OTk4XHU1OTlhXHU1OTliXHU1OTljXHU1OTlkXHU1OTlmXHU1OWEwXHU1OWExXHU1OWEyXHU1OWE2Il0sWyI4YTgwIiwiXHU1OWE3XHU1OWFjXHU1OWFkXHU1OWIwXHU1OWIxXHU1OWIzIiw1LCJcdTU5YmFcdTU5YmNcdTU5YmRcdTU5''@;'; put 'put ''YmYiLDYsIlx1NTljN1x1NTljOFx1NTljOVx1NTljY1x1NTljZFx1NTljZVx1NTljZlx1NTlkNVx1NTlkNlx1NTlkOVx1NTlkYlx1NTlkZSIsNCwiXHU1OWU0XHU1OWU2XHU1OWU3XHU1OWU5XHU1OWVhXHU1OWViXHU1OWVkIiwxMSwiXHU1OWZhXHU1OWZjXHU1OWZkXHU1OWZlXHU1YTAwXHU1''@;'; put 'put ''YTAyXHU1YTBhXHU1YTBiXHU1YTBkXHU1YTBlXHU1YTBmXHU1YTEwXHU1YTEyXHU1YTE0XHU1YTE1XHU1YTE2XHU1YTE3XHU1YTE5XHU1YTFhXHU1YTFiXHU1YTFkXHU1YTFlXHU1YTIxXHU1YTIyXHU1YTI0XHU1YTI2XHU1YTI3XHU1YTI4XHU1YTJhIiw2LCJcdTVhMzNcdTVhMzVcdTVhMzci''@;'; put 'put ''LDQsIlx1NWEzZFx1NWEzZVx1NWEzZlx1NWE0MSIsNCwiXHU1YTQ3XHU1YTQ4XHU1YTRiIiw5LCJcdTVhNTZcdTVhNTdcdTVhNThcdTVhNTlcdTVhNWIiLDVdLFsiOGI0MCIsIlx1NWE2MVx1NWE2M1x1NWE2NFx1NWE2NVx1NWE2Nlx1NWE2OFx1NWE2OVx1NWE2YiIsOCwiXHU1YTc4XHU1YTc5''@;'; put 'put ''XHU1YTdiXHU1YTdjXHU1YTdkXHU1YTdlXHU1YTgwIiwxNywiXHU1YTkzIiw2LCJcdTVhOWMiLDEzLCJcdTVhYWJcdTVhYWMiXSxbIjhiODAiLCJcdTVhYWQiLDQsIlx1NWFiNFx1NWFiNlx1NWFiN1x1NWFiOSIsNCwiXHU1YWJmXHU1YWMwXHU1YWMzIiw1LCJcdTVhY2FcdTVhY2JcdTVhY2Qi''@;'; put 'put ''LDQsIlx1NWFkM1x1NWFkNVx1NWFkN1x1NWFkOVx1NWFkYVx1NWFkYlx1NWFkZFx1NWFkZVx1NWFkZlx1NWFlMlx1NWFlNFx1NWFlNVx1NWFlN1x1NWFlOFx1NWFlYVx1NWFlYyIsNCwiXHU1YWYyIiwyMiwiXHU1YjBhIiwxMSwiXHU1YjE4IiwyNSwiXHU1YjMzXHU1YjM1XHU1YjM2XHU1YjM4''@;'; put 'put ''Iiw3LCJcdTViNDEiLDZdLFsiOGM0MCIsIlx1NWI0OCIsNywiXHU1YjUyXHU1YjU2XHU1YjVlXHU1YjYwXHU1YjYxXHU1YjY3XHU1YjY4XHU1YjZiXHU1YjZkXHU1YjZlXHU1YjZmXHU1YjcyXHU1Yjc0XHU1Yjc2XHU1Yjc3XHU1Yjc4XHU1Yjc5XHU1YjdiXHU1YjdjXHU1YjdlXHU1YjdmXHU1''@;'; put 'put ''YjgyXHU1Yjg2XHU1YjhhXHU1YjhkXHU1YjhlXHU1YjkwXHU1YjkxXHU1YjkyXHU1Yjk0XHU1Yjk2XHU1YjlmXHU1YmE3XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFlXHU1YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJiXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmMzXHU1YmM4''@;'; put 'put ''XHU1YmM5XHU1YmNhXHU1YmNiXHU1YmNkXHU1YmNlXHU1YmNmIl0sWyI4YzgwIiwiXHU1YmQxXHU1YmQ0Iiw4LCJcdTViZTBcdTViZTJcdTViZTNcdTViZTZcdTViZTdcdTViZTkiLDQsIlx1NWJlZlx1NWJmMSIsNiwiXHU1YmZkXHU1YmZlXHU1YzAwXHU1YzAyXHU1YzAzXHU1YzA1XHU1YzA3''@;'; put 'put ''XHU1YzA4XHU1YzBiXHU1YzBjXHU1YzBkXHU1YzBlXHU1YzEwXHU1YzEyXHU1YzEzXHU1YzE3XHU1YzE5XHU1YzFiXHU1YzFlXHU1YzFmXHU1YzIwXHU1YzIxXHU1YzIzXHU1YzI2XHU1YzI4XHU1YzI5XHU1YzJhXHU1YzJiXHU1YzJkXHU1YzJlXHU1YzJmXHU1YzMwXHU1YzMyXHU1YzMzXHU1''@;'; put 'put ''YzM1XHU1YzM2XHU1YzM3XHU1YzQzXHU1YzQ0XHU1YzQ2XHU1YzQ3XHU1YzRjXHU1YzRkXHU1YzUyXHU1YzUzXHU1YzU0XHU1YzU2XHU1YzU3XHU1YzU4XHU1YzVhXHU1YzViXHU1YzVjXHU1YzVkXHU1YzVmXHU1YzYyXHU1YzY0XHU1YzY3Iiw2LCJcdTVjNzBcdTVjNzIiLDYsIlx1NWM3Ylx1''@;'; put 'put ''NWM3Y1x1NWM3ZFx1NWM3ZVx1NWM4MFx1NWM4MyIsNCwiXHU1Yzg5XHU1YzhhXHU1YzhiXHU1YzhlXHU1YzhmXHU1YzkyXHU1YzkzXHU1Yzk1XHU1YzlkIiw0LCJcdTVjYTQiLDRdLFsiOGQ0MCIsIlx1NWNhYVx1NWNhZVx1NWNhZlx1NWNiMFx1NWNiMlx1NWNiNFx1NWNiNlx1NWNiOVx1NWNi''@;'; put 'put ''YVx1NWNiYlx1NWNiY1x1NWNiZVx1NWNjMFx1NWNjMlx1NWNjM1x1NWNjNSIsNSwiXHU1Y2NjIiw1LCJcdTVjZDMiLDUsIlx1NWNkYSIsNiwiXHU1Y2UyXHU1Y2UzXHU1Y2U3XHU1Y2U5XHU1Y2ViXHU1Y2VjXHU1Y2VlXHU1Y2VmXHU1Y2YxIiw5LCJcdTVjZmMiLDRdLFsiOGQ4MCIsIlx1NWQw''@;'; put 'put ''MVx1NWQwNFx1NWQwNVx1NWQwOCIsNSwiXHU1ZDBmIiw0LCJcdTVkMTVcdTVkMTdcdTVkMThcdTVkMTlcdTVkMWFcdTVkMWNcdTVkMWRcdTVkMWYiLDQsIlx1NWQyNVx1NWQyOFx1NWQyYVx1NWQyYlx1NWQyY1x1NWQyZiIsNCwiXHU1ZDM1Iiw3LCJcdTVkM2YiLDcsIlx1NWQ0OFx1NWQ0OVx1''@;'; put 'put ''NWQ0ZCIsMTAsIlx1NWQ1OVx1NWQ1YVx1NWQ1Y1x1NWQ1ZSIsMTAsIlx1NWQ2YVx1NWQ2ZFx1NWQ2ZVx1NWQ3MFx1NWQ3MVx1NWQ3Mlx1NWQ3M1x1NWQ3NSIsMTIsIlx1NWQ4MyIsMjEsIlx1NWQ5YVx1NWQ5Ylx1NWQ5Y1x1NWQ5ZVx1NWQ5Zlx1NWRhMCJdLFsiOGU0MCIsIlx1NWRhMSIsMjEs''@;'; put 'put ''Ilx1NWRiOCIsMTIsIlx1NWRjNiIsNiwiXHU1ZGNlIiwxMiwiXHU1ZGRjXHU1ZGRmXHU1ZGUwXHU1ZGUzXHU1ZGU0XHU1ZGVhXHU1ZGVjXHU1ZGVkIl0sWyI4ZTgwIiwiXHU1ZGYwXHU1ZGY1XHU1ZGY2XHU1ZGY4Iiw0LCJcdTVkZmZcdTVlMDBcdTVlMDRcdTVlMDdcdTVlMDlcdTVlMGFcdTVl''@;'; put 'put ''MGJcdTVlMGRcdTVlMGVcdTVlMTJcdTVlMTNcdTVlMTdcdTVlMWUiLDcsIlx1NWUyOCIsNCwiXHU1ZTJmXHU1ZTMwXHU1ZTMyIiw0LCJcdTVlMzlcdTVlM2FcdTVlM2VcdTVlM2ZcdTVlNDBcdTVlNDFcdTVlNDNcdTVlNDYiLDUsIlx1NWU0ZCIsNiwiXHU1ZTU2Iiw0LCJcdTVlNWNcdTVlNWRc''@;'; put 'put ''dTVlNWZcdTVlNjBcdTVlNjMiLDE0LCJcdTVlNzVcdTVlNzdcdTVlNzlcdTVlN2VcdTVlODFcdTVlODJcdTVlODNcdTVlODVcdTVlODhcdTVlODlcdTVlOGNcdTVlOGRcdTVlOGVcdTVlOTJcdTVlOThcdTVlOWJcdTVlOWRcdTVlYTFcdTVlYTJcdTVlYTNcdTVlYTRcdTVlYTgiLDQsIlx1NWVh''@;'; put 'put ''ZSIsNCwiXHU1ZWI0XHU1ZWJhXHU1ZWJiXHU1ZWJjXHU1ZWJkXHU1ZWJmIiw2XSxbIjhmNDAiLCJcdTVlYzZcdTVlYzdcdTVlYzhcdTVlY2IiLDUsIlx1NWVkNFx1NWVkNVx1NWVkN1x1NWVkOFx1NWVkOVx1NWVkYVx1NWVkYyIsMTEsIlx1NWVlOVx1NWVlYiIsOCwiXHU1ZWY1XHU1ZWY4XHU1''@;'; put 'put ''ZWY5XHU1ZWZiXHU1ZWZjXHU1ZWZkXHU1ZjA1XHU1ZjA2XHU1ZjA3XHU1ZjA5XHU1ZjBjXHU1ZjBkXHU1ZjBlXHU1ZjEwXHU1ZjEyXHU1ZjE0XHU1ZjE2XHU1ZjE5XHU1ZjFhXHU1ZjFjXHU1ZjFkXHU1ZjFlXHU1ZjIxXHU1ZjIyXHU1ZjIzXHU1ZjI0Il0sWyI4ZjgwIiwiXHU1ZjI4XHU1ZjJi''@;'; put 'put ''XHU1ZjJjXHU1ZjJlXHU1ZjMwXHU1ZjMyIiw2LCJcdTVmM2JcdTVmM2RcdTVmM2VcdTVmM2ZcdTVmNDEiLDE0LCJcdTVmNTFcdTVmNTRcdTVmNTlcdTVmNWFcdTVmNWJcdTVmNWNcdTVmNWVcdTVmNWZcdTVmNjBcdTVmNjNcdTVmNjVcdTVmNjdcdTVmNjhcdTVmNmJcdTVmNmVcdTVmNmZcdTVm''@;'; put 'put ''NzJcdTVmNzRcdTVmNzVcdTVmNzZcdTVmNzhcdTVmN2FcdTVmN2RcdTVmN2VcdTVmN2ZcdTVmODNcdTVmODZcdTVmOGRcdTVmOGVcdTVmOGZcdTVmOTFcdTVmOTNcdTVmOTRcdTVmOTZcdTVmOWFcdTVmOWJcdTVmOWRcdTVmOWVcdTVmOWZcdTVmYTBcdTVmYTIiLDUsIlx1NWZhOVx1NWZhYlx1''@;'; put 'put ''NWZhY1x1NWZhZiIsNSwiXHU1ZmI2XHU1ZmI4XHU1ZmI5XHU1ZmJhXHU1ZmJiXHU1ZmJlIiw0LCJcdTVmYzdcdTVmYzhcdTVmY2FcdTVmY2JcdTVmY2VcdTVmZDNcdTVmZDRcdTVmZDVcdTVmZGFcdTVmZGJcdTVmZGNcdTVmZGVcdTVmZGZcdTVmZTJcdTVmZTNcdTVmZTVcdTVmZTZcdTVmZThc''@;'; put 'put ''dTVmZTlcdTVmZWNcdTVmZWZcdTVmZjBcdTVmZjJcdTVmZjNcdTVmZjRcdTVmZjZcdTVmZjdcdTVmZjlcdTVmZmFcdTVmZmNcdTYwMDciXSxbIjkwNDAiLCJcdTYwMDhcdTYwMDlcdTYwMGJcdTYwMGNcdTYwMTBcdTYwMTFcdTYwMTNcdTYwMTdcdTYwMThcdTYwMWFcdTYwMWVcdTYwMWZcdTYw''@;'; put 'put ''MjJcdTYwMjNcdTYwMjRcdTYwMmNcdTYwMmRcdTYwMmVcdTYwMzAiLDQsIlx1NjAzNiIsNCwiXHU2MDNkXHU2MDNlXHU2MDQwXHU2MDQ0Iiw2LCJcdTYwNGNcdTYwNGVcdTYwNGZcdTYwNTFcdTYwNTNcdTYwNTRcdTYwNTZcdTYwNTdcdTYwNThcdTYwNWJcdTYwNWNcdTYwNWVcdTYwNWZcdTYw''@;'; put 'put ''NjBcdTYwNjFcdTYwNjVcdTYwNjZcdTYwNmVcdTYwNzFcdTYwNzJcdTYwNzRcdTYwNzVcdTYwNzdcdTYwN2VcdTYwODAiXSxbIjkwODAiLCJcdTYwODFcdTYwODJcdTYwODVcdTYwODZcdTYwODdcdTYwODhcdTYwOGFcdTYwOGJcdTYwOGVcdTYwOGZcdTYwOTBcdTYwOTFcdTYwOTNcdTYwOTVc''@;'; put 'put ''dTYwOTdcdTYwOThcdTYwOTlcdTYwOWNcdTYwOWVcdTYwYTFcdTYwYTJcdTYwYTRcdTYwYTVcdTYwYTdcdTYwYTlcdTYwYWFcdTYwYWVcdTYwYjBcdTYwYjNcdTYwYjVcdTYwYjZcdTYwYjdcdTYwYjlcdTYwYmFcdTYwYmQiLDcsIlx1NjBjN1x1NjBjOFx1NjBjOVx1NjBjYyIsNCwiXHU2MGQy''@;'; put 'put ''XHU2MGQzXHU2MGQ0XHU2MGQ2XHU2MGQ3XHU2MGQ5XHU2MGRiXHU2MGRlXHU2MGUxIiw0LCJcdTYwZWFcdTYwZjFcdTYwZjJcdTYwZjVcdTYwZjdcdTYwZjhcdTYwZmIiLDQsIlx1NjEwMlx1NjEwM1x1NjEwNFx1NjEwNVx1NjEwN1x1NjEwYVx1NjEwYlx1NjEwY1x1NjExMCIsNCwiXHU2MTE2''@;'; put 'put ''XHU2MTE3XHU2MTE4XHU2MTE5XHU2MTFiXHU2MTFjXHU2MTFkXHU2MTFlXHU2MTIxXHU2MTIyXHU2MTI1XHU2MTI4XHU2MTI5XHU2MTJhXHU2MTJjIiwxOCwiXHU2MTQwIiw2XSxbIjkxNDAiLCJcdTYxNDdcdTYxNDlcdTYxNGJcdTYxNGRcdTYxNGZcdTYxNTBcdTYxNTJcdTYxNTNcdTYxNTRc''@;'; put 'put ''dTYxNTYiLDYsIlx1NjE1ZVx1NjE1Zlx1NjE2MFx1NjE2MVx1NjE2M1x1NjE2NFx1NjE2NVx1NjE2Nlx1NjE2OSIsNiwiXHU2MTcxXHU2MTcyXHU2MTczXHU2MTc0XHU2MTc2XHU2MTc4IiwxOCwiXHU2MThjXHU2MThkXHU2MThmIiw0LCJcdTYxOTUiXSxbIjkxODAiLCJcdTYxOTYiLDYsIlx1''@;'; put 'put ''NjE5ZSIsOCwiXHU2MWFhXHU2MWFiXHU2MWFkIiw5LCJcdTYxYjgiLDUsIlx1NjFiZlx1NjFjMFx1NjFjMVx1NjFjMyIsNCwiXHU2MWM5XHU2MWNjIiw0LCJcdTYxZDNcdTYxZDUiLDE2LCJcdTYxZTciLDEzLCJcdTYxZjYiLDgsIlx1NjIwMCIsNSwiXHU2MjA3XHU2MjA5XHU2MjEzXHU2MjE0''@;'; put 'put ''XHU2MjE5XHU2MjFjXHU2MjFkXHU2MjFlXHU2MjIwXHU2MjIzXHU2MjI2XHU2MjI3XHU2MjI4XHU2MjI5XHU2MjJiXHU2MjJkXHU2MjJmXHU2MjMwXHU2MjMxXHU2MjMyXHU2MjM1XHU2MjM2XHU2MjM4Iiw0LCJcdTYyNDJcdTYyNDRcdTYyNDVcdTYyNDZcdTYyNGEiXSxbIjkyNDAiLCJcdTYy''@;'; put 'put ''NGZcdTYyNTBcdTYyNTVcdTYyNTZcdTYyNTdcdTYyNTlcdTYyNWFcdTYyNWMiLDYsIlx1NjI2NFx1NjI2NVx1NjI2OFx1NjI3MVx1NjI3Mlx1NjI3NFx1NjI3NVx1NjI3N1x1NjI3OFx1NjI3YVx1NjI3Ylx1NjI3ZFx1NjI4MVx1NjI4Mlx1NjI4M1x1NjI4NVx1NjI4Nlx1NjI4N1x1NjI4OFx1''@;'; put 'put ''NjI4YiIsNSwiXHU2Mjk0XHU2Mjk5XHU2MjljXHU2MjlkXHU2MjllXHU2MmEzXHU2MmE2XHU2MmE3XHU2MmE5XHU2MmFhXHU2MmFkXHU2MmFlXHU2MmFmXHU2MmIwXHU2MmIyXHU2MmIzXHU2MmI0XHU2MmI2XHU2MmI3XHU2MmI4XHU2MmJhXHU2MmJlXHU2MmMwXHU2MmMxIl0sWyI5MjgwIiwi''@;'; put 'put ''XHU2MmMzXHU2MmNiXHU2MmNmXHU2MmQxXHU2MmQ1XHU2MmRkXHU2MmRlXHU2MmUwXHU2MmUxXHU2MmU0XHU2MmVhXHU2MmViXHU2MmYwXHU2MmYyXHU2MmY1XHU2MmY4XHU2MmY5XHU2MmZhXHU2MmZiXHU2MzAwXHU2MzAzXHU2MzA0XHU2MzA1XHU2MzA2XHU2MzBhXHU2MzBiXHU2MzBjXHU2''@;'; put 'put ''MzBkXHU2MzBmXHU2MzEwXHU2MzEyXHU2MzEzXHU2MzE0XHU2MzE1XHU2MzE3XHU2MzE4XHU2MzE5XHU2MzFjXHU2MzI2XHU2MzI3XHU2MzI5XHU2MzJjXHU2MzJkXHU2MzJlXHU2MzMwXHU2MzMxXHU2MzMzIiw1LCJcdTYzM2JcdTYzM2NcdTYzM2VcdTYzM2ZcdTYzNDBcdTYzNDFcdTYzNDRc''@;'; put 'put ''dTYzNDdcdTYzNDhcdTYzNGFcdTYzNTFcdTYzNTJcdTYzNTNcdTYzNTRcdTYzNTYiLDcsIlx1NjM2MFx1NjM2NFx1NjM2NVx1NjM2Nlx1NjM2OFx1NjM2YVx1NjM2Ylx1NjM2Y1x1NjM2Zlx1NjM3MFx1NjM3Mlx1NjM3M1x1NjM3NFx1NjM3NVx1NjM3OFx1NjM3OVx1NjM3Y1x1NjM3ZFx1NjM3''@;'; put 'put ''ZVx1NjM3Zlx1NjM4MVx1NjM4M1x1NjM4NFx1NjM4NVx1NjM4Nlx1NjM4Ylx1NjM4ZFx1NjM5MVx1NjM5M1x1NjM5NFx1NjM5NVx1NjM5N1x1NjM5OSIsNiwiXHU2M2ExXHU2M2E0XHU2M2E2XHU2M2FiXHU2M2FmXHU2M2IxXHU2M2IyXHU2M2I1XHU2M2I2XHU2M2I5XHU2M2JiXHU2M2JkXHU2''@;'; put 'put ''M2JmXHU2M2MwIl0sWyI5MzQwIiwiXHU2M2MxXHU2M2MyXHU2M2MzXHU2M2M1XHU2M2M3XHU2M2M4XHU2M2NhXHU2M2NiXHU2M2NjXHU2M2QxXHU2M2QzXHU2M2Q0XHU2M2Q1XHU2M2Q3Iiw2LCJcdTYzZGZcdTYzZTJcdTYzZTQiLDQsIlx1NjNlYlx1NjNlY1x1NjNlZVx1NjNlZlx1NjNmMFx1''@;'; put 'put ''NjNmMVx1NjNmM1x1NjNmNVx1NjNmN1x1NjNmOVx1NjNmYVx1NjNmYlx1NjNmY1x1NjNmZVx1NjQwM1x1NjQwNFx1NjQwNiIsNCwiXHU2NDBkXHU2NDBlXHU2NDExXHU2NDEyXHU2NDE1Iiw1LCJcdTY0MWRcdTY0MWZcdTY0MjJcdTY0MjNcdTY0MjQiXSxbIjkzODAiLCJcdTY0MjVcdTY0Mjdc''@;'; put 'put ''dTY0MjhcdTY0MjlcdTY0MmJcdTY0MmUiLDUsIlx1NjQzNSIsNCwiXHU2NDNiXHU2NDNjXHU2NDNlXHU2NDQwXHU2NDQyXHU2NDQzXHU2NDQ5XHU2NDRiIiw2LCJcdTY0NTNcdTY0NTVcdTY0NTZcdTY0NTdcdTY0NTkiLDQsIlx1NjQ1ZiIsNywiXHU2NDY4XHU2NDZhXHU2NDZiXHU2NDZjXHU2''@;'; put 'put ''NDZlIiw5LCJcdTY0N2IiLDYsIlx1NjQ4M1x1NjQ4Nlx1NjQ4OCIsOCwiXHU2NDkzXHU2NDk0XHU2NDk3XHU2NDk4XHU2NDlhXHU2NDliXHU2NDljXHU2NDlkXHU2NDlmIiw0LCJcdTY0YTVcdTY0YTZcdTY0YTdcdTY0YThcdTY0YWFcdTY0YWJcdTY0YWZcdTY0YjFcdTY0YjJcdTY0YjNcdTY0''@;'; put 'put ''YjRcdTY0YjZcdTY0YjlcdTY0YmJcdTY0YmRcdTY0YmVcdTY0YmZcdTY0YzFcdTY0YzNcdTY0YzRcdTY0YzYiLDYsIlx1NjRjZlx1NjRkMVx1NjRkM1x1NjRkNFx1NjRkNVx1NjRkNlx1NjRkOVx1NjRkYSJdLFsiOTQ0MCIsIlx1NjRkYlx1NjRkY1x1NjRkZFx1NjRkZlx1NjRlMFx1NjRlMVx1''@;'; put 'put ''NjRlM1x1NjRlNVx1NjRlNyIsMjQsIlx1NjUwMSIsNywiXHU2NTBhIiw3LCJcdTY1MTMiLDQsIlx1NjUxOSIsOF0sWyI5NDgwIiwiXHU2NTIyXHU2NTIzXHU2NTI0XHU2NTI2Iiw0LCJcdTY1MmNcdTY1MmRcdTY1MzBcdTY1MzFcdTY1MzJcdTY1MzNcdTY1MzdcdTY1M2FcdTY1M2NcdTY1M2Rc''@;'; put 'put ''dTY1NDAiLDQsIlx1NjU0Nlx1NjU0N1x1NjU0YVx1NjU0Ylx1NjU0ZFx1NjU0ZVx1NjU1MFx1NjU1Mlx1NjU1M1x1NjU1NFx1NjU1N1x1NjU1OFx1NjU1YVx1NjU1Y1x1NjU1Zlx1NjU2MFx1NjU2MVx1NjU2NFx1NjU2NVx1NjU2N1x1NjU2OFx1NjU2OVx1NjU2YVx1NjU2ZFx1NjU2ZVx1NjU2''@;'; put 'put ''Zlx1NjU3MVx1NjU3M1x1NjU3NVx1NjU3Nlx1NjU3OCIsMTQsIlx1NjU4OFx1NjU4OVx1NjU4YVx1NjU4ZFx1NjU4ZVx1NjU4Zlx1NjU5Mlx1NjU5NFx1NjU5NVx1NjU5Nlx1NjU5OFx1NjU5YVx1NjU5ZFx1NjU5ZVx1NjVhMFx1NjVhMlx1NjVhM1x1NjVhNlx1NjVhOFx1NjVhYVx1NjVhY1x1''@;'; put 'put ''NjVhZVx1NjViMSIsNywiXHU2NWJhXHU2NWJiXHU2NWJlXHU2NWJmXHU2NWMwXHU2NWMyXHU2NWM3XHU2NWM4XHU2NWM5XHU2NWNhXHU2NWNkXHU2NWQwXHU2NWQxXHU2NWQzXHU2NWQ0XHU2NWQ1XHU2NWQ4Iiw3LCJcdTY1ZTFcdTY1ZTNcdTY1ZTRcdTY1ZWFcdTY1ZWIiXSxbIjk1NDAiLCJc''@;'; put 'put ''dTY1ZjJcdTY1ZjNcdTY1ZjRcdTY1ZjVcdTY1ZjhcdTY1ZjlcdTY1ZmIiLDQsIlx1NjYwMVx1NjYwNFx1NjYwNVx1NjYwN1x1NjYwOFx1NjYwOVx1NjYwYlx1NjYwZFx1NjYxMFx1NjYxMVx1NjYxMlx1NjYxNlx1NjYxN1x1NjYxOFx1NjYxYVx1NjYxYlx1NjYxY1x1NjYxZVx1NjYyMVx1NjYy''@;'; put 'put ''Mlx1NjYyM1x1NjYyNFx1NjYyNlx1NjYyOVx1NjYyYVx1NjYyYlx1NjYyY1x1NjYyZVx1NjYzMFx1NjYzMlx1NjYzM1x1NjYzNyIsNCwiXHU2NjNkXHU2NjNmXHU2NjQwXHU2NjQyXHU2NjQ0Iiw2LCJcdTY2NGRcdTY2NGVcdTY2NTBcdTY2NTFcdTY2NTgiXSxbIjk1ODAiLCJcdTY2NTlcdTY2''@;'; put 'put ''NWJcdTY2NWNcdTY2NWRcdTY2NWVcdTY2NjBcdTY2NjJcdTY2NjNcdTY2NjVcdTY2NjdcdTY2NjkiLDQsIlx1NjY3MVx1NjY3Mlx1NjY3M1x1NjY3NVx1NjY3OFx1NjY3OVx1NjY3Ylx1NjY3Y1x1NjY3ZFx1NjY3Zlx1NjY4MFx1NjY4MVx1NjY4M1x1NjY4NVx1NjY4Nlx1NjY4OFx1NjY4OVx1''@;'; put 'put ''NjY4YVx1NjY4Ylx1NjY4ZFx1NjY4ZVx1NjY4Zlx1NjY5MFx1NjY5Mlx1NjY5M1x1NjY5NFx1NjY5NVx1NjY5OCIsNCwiXHU2NjllIiw4LCJcdTY2YTkiLDQsIlx1NjZhZiIsNCwiXHU2NmI1XHU2NmI2XHU2NmI3XHU2NmI4XHU2NmJhXHU2NmJiXHU2NmJjXHU2NmJkXHU2NmJmIiwyNSwiXHU2''@;'; put 'put ''NmRhXHU2NmRlIiw3LCJcdTY2ZTdcdTY2ZThcdTY2ZWEiLDUsIlx1NjZmMVx1NjZmNVx1NjZmNlx1NjZmOFx1NjZmYVx1NjZmYlx1NjZmZFx1NjcwMVx1NjcwMlx1NjcwMyJdLFsiOTY0MCIsIlx1NjcwNFx1NjcwNVx1NjcwNlx1NjcwN1x1NjcwY1x1NjcwZVx1NjcwZlx1NjcxMVx1NjcxMlx1''@;'; put 'put ''NjcxM1x1NjcxNlx1NjcxOFx1NjcxOVx1NjcxYVx1NjcxY1x1NjcxZVx1NjcyMCIsNSwiXHU2NzI3XHU2NzI5XHU2NzJlXHU2NzMwXHU2NzMyXHU2NzMzXHU2NzM2XHU2NzM3XHU2NzM4XHU2NzM5XHU2NzNiXHU2NzNjXHU2NzNlXHU2NzNmXHU2NzQxXHU2NzQ0XHU2NzQ1XHU2NzQ3XHU2NzRh''@;'; put 'put ''XHU2NzRiXHU2NzRkXHU2NzUyXHU2NzU0XHU2NzU1XHU2NzU3Iiw0LCJcdTY3NWRcdTY3NjJcdTY3NjNcdTY3NjRcdTY3NjZcdTY3NjdcdTY3NmJcdTY3NmNcdTY3NmVcdTY3NzFcdTY3NzRcdTY3NzYiXSxbIjk2ODAiLCJcdTY3NzhcdTY3NzlcdTY3N2FcdTY3N2JcdTY3N2RcdTY3ODBcdTY3''@;'; put 'put ''ODJcdTY3ODNcdTY3ODVcdTY3ODZcdTY3ODhcdTY3OGFcdTY3OGNcdTY3OGRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTJcdTY3OTNcdTY3OTRcdTY3OTZcdTY3OTlcdTY3OWJcdTY3OWZcdTY3YTBcdTY3YTFcdTY3YTRcdTY3YTZcdTY3YTlcdTY3YWNcdTY3YWVcdTY3YjFcdTY3YjJcdTY3YjRc''@;'; put 'put ''dTY3YjkiLDcsIlx1NjdjMlx1NjdjNSIsOSwiXHU2N2Q1XHU2N2Q2XHU2N2Q3XHU2N2RiXHU2N2RmXHU2N2UxXHU2N2UzXHU2N2U0XHU2N2U2XHU2N2U3XHU2N2U4XHU2N2VhXHU2N2ViXHU2N2VkXHU2N2VlXHU2N2YyXHU2N2Y1Iiw3LCJcdTY3ZmVcdTY4MDFcdTY4MDJcdTY4MDNcdTY4MDRc''@;'; put 'put ''dTY4MDZcdTY4MGRcdTY4MTBcdTY4MTJcdTY4MTRcdTY4MTVcdTY4MTgiLDQsIlx1NjgxZVx1NjgxZlx1NjgyMFx1NjgyMiIsNiwiXHU2ODJiIiw2LCJcdTY4MzRcdTY4MzVcdTY4MzZcdTY4M2FcdTY4M2JcdTY4M2ZcdTY4NDdcdTY4NGJcdTY4NGRcdTY4NGZcdTY4NTJcdTY4NTYiLDVdLFsi''@;'; put 'put ''OTc0MCIsIlx1Njg1Y1x1Njg1ZFx1Njg1ZVx1Njg1Zlx1Njg2YVx1Njg2YyIsNywiXHU2ODc1XHU2ODc4Iiw4LCJcdTY4ODJcdTY4ODRcdTY4ODciLDcsIlx1Njg5MFx1Njg5MVx1Njg5Mlx1Njg5NFx1Njg5NVx1Njg5Nlx1Njg5OCIsOSwiXHU2OGEzXHU2OGE0XHU2OGE1XHU2OGE5XHU2OGFh''@;'; put 'put ''XHU2OGFiXHU2OGFjXHU2OGFlXHU2OGIxXHU2OGIyXHU2OGI0XHU2OGI2XHU2OGI3XHU2OGI4Il0sWyI5NzgwIiwiXHU2OGI5Iiw2LCJcdTY4YzFcdTY4YzMiLDUsIlx1NjhjYVx1NjhjY1x1NjhjZVx1NjhjZlx1NjhkMFx1NjhkMVx1NjhkM1x1NjhkNFx1NjhkNlx1NjhkN1x1NjhkOVx1Njhk''@;'; put 'put ''YiIsNCwiXHU2OGUxXHU2OGUyXHU2OGU0Iiw5LCJcdTY4ZWZcdTY4ZjJcdTY4ZjNcdTY4ZjRcdTY4ZjZcdTY4ZjdcdTY4ZjhcdTY4ZmJcdTY4ZmRcdTY4ZmVcdTY4ZmZcdTY5MDBcdTY5MDJcdTY5MDNcdTY5MDRcdTY5MDYiLDQsIlx1NjkwY1x1NjkwZlx1NjkxMVx1NjkxMyIsMTEsIlx1Njky''@;'; put 'put ''MVx1NjkyMlx1NjkyM1x1NjkyNSIsNywiXHU2OTJlXHU2OTJmXHU2OTMxXHU2OTMyXHU2OTMzXHU2OTM1XHU2OTM2XHU2OTM3XHU2OTM4XHU2OTNhXHU2OTNiXHU2OTNjXHU2OTNlXHU2OTQwXHU2OTQxXHU2OTQzIiwxNiwiXHU2OTU1XHU2OTU2XHU2OTU4XHU2OTU5XHU2OTViXHU2OTVjXHU2''@;'; put 'put ''OTVmIl0sWyI5ODQwIiwiXHU2OTYxXHU2OTYyXHU2OTY0XHU2OTY1XHU2OTY3XHU2OTY4XHU2OTY5XHU2OTZhXHU2OTZjXHU2OTZkXHU2OTZmXHU2OTcwXHU2OTcyIiw0LCJcdTY5N2FcdTY5N2JcdTY5N2RcdTY5N2VcdTY5N2ZcdTY5ODFcdTY5ODNcdTY5ODVcdTY5OGFcdTY5OGJcdTY5OGNc''@;'; put 'put ''dTY5OGUiLDUsIlx1Njk5Nlx1Njk5N1x1Njk5OVx1Njk5YVx1Njk5ZCIsOSwiXHU2OWE5XHU2OWFhXHU2OWFjXHU2OWFlXHU2OWFmXHU2OWIwXHU2OWIyXHU2OWIzXHU2OWI1XHU2OWI2XHU2OWI4XHU2OWI5XHU2OWJhXHU2OWJjXHU2OWJkIl0sWyI5ODgwIiwiXHU2OWJlXHU2OWJmXHU2OWMw''@;'; put 'put ''XHU2OWMyIiw3LCJcdTY5Y2JcdTY5Y2RcdTY5Y2ZcdTY5ZDFcdTY5ZDJcdTY5ZDNcdTY5ZDUiLDUsIlx1NjlkY1x1NjlkZFx1NjlkZVx1NjllMSIsMTEsIlx1NjllZVx1NjllZlx1NjlmMFx1NjlmMVx1NjlmMyIsOSwiXHU2OWZlXHU2YTAwIiw5LCJcdTZhMGIiLDExLCJcdTZhMTkiLDUsIlx1''@;'; put 'put ''NmEyMFx1NmEyMiIsNSwiXHU2YTI5XHU2YTJiXHU2YTJjXHU2YTJkXHU2YTJlXHU2YTMwXHU2YTMyXHU2YTMzXHU2YTM0XHU2YTM2Iiw2LCJcdTZhM2YiLDQsIlx1NmE0NVx1NmE0Nlx1NmE0OCIsNywiXHU2YTUxIiw2LCJcdTZhNWEiXSxbIjk5NDAiLCJcdTZhNWMiLDQsIlx1NmE2Mlx1NmE2''@;'; put 'put ''M1x1NmE2NFx1NmE2NiIsMTAsIlx1NmE3MiIsNiwiXHU2YTdhXHU2YTdiXHU2YTdkXHU2YTdlXHU2YTdmXHU2YTgxXHU2YTgyXHU2YTgzXHU2YTg1Iiw4LCJcdTZhOGZcdTZhOTIiLDQsIlx1NmE5OCIsNywiXHU2YWExIiw1XSxbIjk5ODAiLCJcdTZhYTdcdTZhYThcdTZhYWFcdTZhYWQiLDEx''@;'; put 'put ''NCwiXHU2YjI1XHU2YjI2XHU2YjI4Iiw2XSxbIjlhNDAiLCJcdTZiMmZcdTZiMzBcdTZiMzFcdTZiMzNcdTZiMzRcdTZiMzVcdTZiMzZcdTZiMzhcdTZiM2JcdTZiM2NcdTZiM2RcdTZiM2ZcdTZiNDBcdTZiNDFcdTZiNDJcdTZiNDRcdTZiNDVcdTZiNDhcdTZiNGFcdTZiNGJcdTZiNGQiLDEx''@;'; put 'put ''LCJcdTZiNWEiLDcsIlx1NmI2OFx1NmI2OVx1NmI2YiIsMTMsIlx1NmI3YVx1NmI3ZFx1NmI3ZVx1NmI3Zlx1NmI4MFx1NmI4NVx1NmI4OCJdLFsiOWE4MCIsIlx1NmI4Y1x1NmI4ZVx1NmI4Zlx1NmI5MFx1NmI5MVx1NmI5NFx1NmI5NVx1NmI5N1x1NmI5OFx1NmI5OVx1NmI5YyIsNCwiXHU2''@;'; put 'put ''YmEyIiw3LCJcdTZiYWIiLDcsIlx1NmJiNlx1NmJiOCIsNiwiXHU2YmMwXHU2YmMzXHU2YmM0XHU2YmM2Iiw0LCJcdTZiY2NcdTZiY2VcdTZiZDBcdTZiZDFcdTZiZDhcdTZiZGFcdTZiZGMiLDQsIlx1NmJlMiIsNywiXHU2YmVjXHU2YmVkXHU2YmVlXHU2YmYwXHU2YmYxXHU2YmYyXHU2YmY0''@;'; put 'put ''XHU2YmY2XHU2YmY3XHU2YmY4XHU2YmZhXHU2YmZiXHU2YmZjXHU2YmZlIiw2LCJcdTZjMDgiLDQsIlx1NmMwZVx1NmMxMlx1NmMxN1x1NmMxY1x1NmMxZFx1NmMxZVx1NmMyMFx1NmMyM1x1NmMyNVx1NmMyYlx1NmMyY1x1NmMyZFx1NmMzMVx1NmMzM1x1NmMzNlx1NmMzN1x1NmMzOVx1NmMz''@;'; put 'put ''YVx1NmMzYlx1NmMzY1x1NmMzZVx1NmMzZlx1NmM0M1x1NmM0NFx1NmM0NVx1NmM0OFx1NmM0YiIsNCwiXHU2YzUxXHU2YzUyXHU2YzUzXHU2YzU2XHU2YzU4Il0sWyI5YjQwIiwiXHU2YzU5XHU2YzVhXHU2YzYyXHU2YzYzXHU2YzY1XHU2YzY2XHU2YzY3XHU2YzZiIiw0LCJcdTZjNzFcdTZj''@;'; put 'put ''NzNcdTZjNzVcdTZjNzdcdTZjNzhcdTZjN2FcdTZjN2JcdTZjN2NcdTZjN2ZcdTZjODBcdTZjODRcdTZjODdcdTZjOGFcdTZjOGJcdTZjOGRcdTZjOGVcdTZjOTFcdTZjOTJcdTZjOTVcdTZjOTZcdTZjOTdcdTZjOThcdTZjOWFcdTZjOWNcdTZjOWRcdTZjOWVcdTZjYTBcdTZjYTJcdTZjYThc''@;'; put 'put ''dTZjYWNcdTZjYWZcdTZjYjBcdTZjYjRcdTZjYjVcdTZjYjZcdTZjYjdcdTZjYmFcdTZjYzBcdTZjYzFcdTZjYzJcdTZjYzNcdTZjYzZcdTZjYzdcdTZjYzhcdTZjY2JcdTZjY2RcdTZjY2VcdTZjY2ZcdTZjZDFcdTZjZDJcdTZjZDgiXSxbIjliODAiLCJcdTZjZDlcdTZjZGFcdTZjZGNcdTZj''@;'; put 'put ''ZGRcdTZjZGZcdTZjZTRcdTZjZTZcdTZjZTdcdTZjZTlcdTZjZWNcdTZjZWRcdTZjZjJcdTZjZjRcdTZjZjlcdTZjZmZcdTZkMDBcdTZkMDJcdTZkMDNcdTZkMDVcdTZkMDZcdTZkMDhcdTZkMDlcdTZkMGFcdTZkMGRcdTZkMGZcdTZkMTBcdTZkMTFcdTZkMTNcdTZkMTRcdTZkMTVcdTZkMTZc''@;'; put 'put ''dTZkMThcdTZkMWNcdTZkMWRcdTZkMWYiLDUsIlx1NmQyNlx1NmQyOFx1NmQyOVx1NmQyY1x1NmQyZFx1NmQyZlx1NmQzMFx1NmQzNFx1NmQzNlx1NmQzN1x1NmQzOFx1NmQzYVx1NmQzZlx1NmQ0MFx1NmQ0Mlx1NmQ0NFx1NmQ0OVx1NmQ0Y1x1NmQ1MFx1NmQ1NVx1NmQ1Nlx1NmQ1N1x1NmQ1''@;'; put 'put ''OFx1NmQ1Ylx1NmQ1ZFx1NmQ1Zlx1NmQ2MVx1NmQ2Mlx1NmQ2NFx1NmQ2NVx1NmQ2N1x1NmQ2OFx1NmQ2Ylx1NmQ2Y1x1NmQ2ZFx1NmQ3MFx1NmQ3MVx1NmQ3Mlx1NmQ3M1x1NmQ3NVx1NmQ3Nlx1NmQ3OVx1NmQ3YVx1NmQ3Ylx1NmQ3ZCIsNCwiXHU2ZDgzXHU2ZDg0XHU2ZDg2XHU2ZDg3XHU2''@;'; put 'put ''ZDhhXHU2ZDhiXHU2ZDhkXHU2ZDhmXHU2ZDkwXHU2ZDkyXHU2ZDk2Iiw0LCJcdTZkOWNcdTZkYTJcdTZkYTVcdTZkYWNcdTZkYWRcdTZkYjBcdTZkYjFcdTZkYjNcdTZkYjRcdTZkYjZcdTZkYjdcdTZkYjkiLDUsIlx1NmRjMVx1NmRjMlx1NmRjM1x1NmRjOFx1NmRjOVx1NmRjYSJdLFsiOWM0''@;'; put 'put ''MCIsIlx1NmRjZFx1NmRjZVx1NmRjZlx1NmRkMFx1NmRkMlx1NmRkM1x1NmRkNFx1NmRkNVx1NmRkN1x1NmRkYVx1NmRkYlx1NmRkY1x1NmRkZlx1NmRlMlx1NmRlM1x1NmRlNVx1NmRlN1x1NmRlOFx1NmRlOVx1NmRlYVx1NmRlZFx1NmRlZlx1NmRmMFx1NmRmMlx1NmRmNFx1NmRmNVx1NmRm''@;'; put 'put ''Nlx1NmRmOFx1NmRmYVx1NmRmZCIsNywiXHU2ZTA2XHU2ZTA3XHU2ZTA4XHU2ZTA5XHU2ZTBiXHU2ZTBmXHU2ZTEyXHU2ZTEzXHU2ZTE1XHU2ZTE4XHU2ZTE5XHU2ZTFiXHU2ZTFjXHU2ZTFlXHU2ZTFmXHU2ZTIyXHU2ZTI2XHU2ZTI3XHU2ZTI4XHU2ZTJhXHU2ZTJjXHU2ZTJlXHU2ZTMwXHU2''@;'; put 'put ''ZTMxXHU2ZTMzXHU2ZTM1Il0sWyI5YzgwIiwiXHU2ZTM2XHU2ZTM3XHU2ZTM5XHU2ZTNiIiw3LCJcdTZlNDUiLDcsIlx1NmU0Zlx1NmU1MFx1NmU1MVx1NmU1Mlx1NmU1NVx1NmU1N1x1NmU1OVx1NmU1YVx1NmU1Y1x1NmU1ZFx1NmU1ZVx1NmU2MCIsMTAsIlx1NmU2Y1x1NmU2ZFx1NmU2ZiIs''@;'; put 'put ''MTQsIlx1NmU4MFx1NmU4MVx1NmU4Mlx1NmU4NFx1NmU4N1x1NmU4OFx1NmU4YSIsNCwiXHU2ZTkxIiw2LCJcdTZlOTlcdTZlOWFcdTZlOWJcdTZlOWRcdTZlOWVcdTZlYTBcdTZlYTFcdTZlYTNcdTZlYTRcdTZlYTZcdTZlYThcdTZlYTlcdTZlYWJcdTZlYWNcdTZlYWRcdTZlYWVcdTZlYjBc''@;'; put 'put ''dTZlYjNcdTZlYjVcdTZlYjhcdTZlYjlcdTZlYmNcdTZlYmVcdTZlYmZcdTZlYzBcdTZlYzNcdTZlYzRcdTZlYzVcdTZlYzZcdTZlYzhcdTZlYzlcdTZlY2FcdTZlY2NcdTZlY2RcdTZlY2VcdTZlZDBcdTZlZDJcdTZlZDZcdTZlZDhcdTZlZDlcdTZlZGJcdTZlZGNcdTZlZGRcdTZlZTNcdTZl''@;'; put 'put ''ZTdcdTZlZWEiLDVdLFsiOWQ0MCIsIlx1NmVmMFx1NmVmMVx1NmVmMlx1NmVmM1x1NmVmNVx1NmVmNlx1NmVmN1x1NmVmOFx1NmVmYSIsNywiXHU2ZjAzXHU2ZjA0XHU2ZjA1XHU2ZjA3XHU2ZjA4XHU2ZjBhIiw0LCJcdTZmMTBcdTZmMTFcdTZmMTJcdTZmMTYiLDksIlx1NmYyMVx1NmYyMlx1''@;'; put 'put ''NmYyM1x1NmYyNVx1NmYyNlx1NmYyN1x1NmYyOFx1NmYyY1x1NmYyZVx1NmYzMFx1NmYzMlx1NmYzNFx1NmYzNVx1NmYzNyIsNiwiXHU2ZjNmXHU2ZjQwXHU2ZjQxXHU2ZjQyIl0sWyI5ZDgwIiwiXHU2ZjQzXHU2ZjQ0XHU2ZjQ1XHU2ZjQ4XHU2ZjQ5XHU2ZjRhXHU2ZjRjXHU2ZjRlIiw5LCJc''@;'; put 'put ''dTZmNTlcdTZmNWFcdTZmNWJcdTZmNWRcdTZmNWZcdTZmNjBcdTZmNjFcdTZmNjNcdTZmNjRcdTZmNjVcdTZmNjciLDUsIlx1NmY2Zlx1NmY3MFx1NmY3MVx1NmY3M1x1NmY3NVx1NmY3Nlx1NmY3N1x1NmY3OVx1NmY3Ylx1NmY3ZCIsNiwiXHU2Zjg1XHU2Zjg2XHU2Zjg3XHU2ZjhhXHU2Zjhi''@;'; put 'put ''XHU2ZjhmIiwxMiwiXHU2ZjlkXHU2ZjllXHU2ZjlmXHU2ZmEwXHU2ZmEyIiw0LCJcdTZmYTgiLDEwLCJcdTZmYjRcdTZmYjVcdTZmYjdcdTZmYjhcdTZmYmEiLDUsIlx1NmZjMVx1NmZjMyIsNSwiXHU2ZmNhIiw2LCJcdTZmZDMiLDEwLCJcdTZmZGZcdTZmZTJcdTZmZTNcdTZmZTRcdTZmZTUi''@;'; put 'put ''XSxbIjllNDAiLCJcdTZmZTYiLDcsIlx1NmZmMCIsMzIsIlx1NzAxMiIsNywiXHU3MDFjIiw2LCJcdTcwMjQiLDZdLFsiOWU4MCIsIlx1NzAyYiIsOSwiXHU3MDM2XHU3MDM3XHU3MDM4XHU3MDNhIiwxNywiXHU3MDRkXHU3MDRlXHU3MDUwIiwxMywiXHU3MDVmIiwxMSwiXHU3MDZlXHU3MDcx''@;'; put 'put ''XHU3MDcyXHU3MDczXHU3MDc0XHU3MDc3XHU3MDc5XHU3MDdhXHU3MDdiXHU3MDdkXHU3MDgxXHU3MDgyXHU3MDgzXHU3MDg0XHU3MDg2XHU3MDg3XHU3MDg4XHU3MDhiXHU3MDhjXHU3MDhkXHU3MDhmXHU3MDkwXHU3MDkxXHU3MDkzXHU3MDk3XHU3MDk4XHU3MDlhXHU3MDliXHU3MDllIiwx''@;'; put 'put ''MiwiXHU3MGIwXHU3MGIyXHU3MGI0XHU3MGI1XHU3MGI2XHU3MGJhXHU3MGJlXHU3MGJmXHU3MGM0XHU3MGM1XHU3MGM2XHU3MGM3XHU3MGM5XHU3MGNiIiwxMiwiXHU3MGRhIl0sWyI5ZjQwIiwiXHU3MGRjXHU3MGRkXHU3MGRlXHU3MGUwXHU3MGUxXHU3MGUyXHU3MGUzXHU3MGU1XHU3MGVh''@;'; put 'put ''XHU3MGVlXHU3MGYwIiw2LCJcdTcwZjhcdTcwZmFcdTcwZmJcdTcwZmNcdTcwZmUiLDEwLCJcdTcxMGIiLDQsIlx1NzExMVx1NzExMlx1NzExNFx1NzExN1x1NzExYiIsMTAsIlx1NzEyNyIsNywiXHU3MTMyXHU3MTMzXHU3MTM0Il0sWyI5ZjgwIiwiXHU3MTM1XHU3MTM3IiwxMywiXHU3MTQ2''@;'; put 'put ''XHU3MTQ3XHU3MTQ4XHU3MTQ5XHU3MTRiXHU3MTRkXHU3MTRmIiwxMiwiXHU3MTVkXHU3MTVmIiw0LCJcdTcxNjVcdTcxNjkiLDQsIlx1NzE2Zlx1NzE3MFx1NzE3MVx1NzE3NFx1NzE3NVx1NzE3Nlx1NzE3N1x1NzE3OVx1NzE3Ylx1NzE3Y1x1NzE3ZSIsNSwiXHU3MTg1Iiw0LCJcdTcxOGJc''@;'; put 'put ''dTcxOGNcdTcxOGRcdTcxOGVcdTcxOTBcdTcxOTFcdTcxOTJcdTcxOTNcdTcxOTVcdTcxOTZcdTcxOTdcdTcxOWEiLDQsIlx1NzFhMSIsNiwiXHU3MWE5XHU3MWFhXHU3MWFiXHU3MWFkIiw1LCJcdTcxYjRcdTcxYjZcdTcxYjdcdTcxYjhcdTcxYmEiLDgsIlx1NzFjNCIsOSwiXHU3MWNmIiw0''@;'; put 'put ''XSxbImEwNDAiLCJcdTcxZDYiLDksIlx1NzFlMVx1NzFlMlx1NzFlM1x1NzFlNFx1NzFlNlx1NzFlOCIsNSwiXHU3MWVmIiw5LCJcdTcxZmEiLDExLCJcdTcyMDciLDE5XSxbImEwODAiLCJcdTcyMWJcdTcyMWNcdTcyMWUiLDksIlx1NzIyOVx1NzIyYlx1NzIyZFx1NzIyZVx1NzIyZlx1NzIz''@;'; put 'put ''Mlx1NzIzM1x1NzIzNFx1NzIzYVx1NzIzY1x1NzIzZVx1NzI0MCIsNiwiXHU3MjQ5XHU3MjRhXHU3MjRiXHU3MjRlXHU3MjRmXHU3MjUwXHU3MjUxXHU3MjUzXHU3MjU0XHU3MjU1XHU3MjU3XHU3MjU4XHU3MjVhXHU3MjVjXHU3MjVlXHU3MjYwXHU3MjYzXHU3MjY0XHU3MjY1XHU3MjY4XHU3''@;'; put 'put ''MjZhXHU3MjZiXHU3MjZjXHU3MjZkXHU3MjcwXHU3MjcxXHU3MjczXHU3Mjc0XHU3Mjc2XHU3Mjc3XHU3Mjc4XHU3MjdiXHU3MjdjXHU3MjdkXHU3MjgyXHU3MjgzXHU3Mjg1Iiw0LCJcdTcyOGNcdTcyOGVcdTcyOTBcdTcyOTFcdTcyOTMiLDExLCJcdTcyYTAiLDExLCJcdTcyYWVcdTcyYjFc''@;'; put 'put ''dTcyYjJcdTcyYjNcdTcyYjVcdTcyYmEiLDYsIlx1NzJjNVx1NzJjNlx1NzJjN1x1NzJjOVx1NzJjYVx1NzJjYlx1NzJjY1x1NzJjZlx1NzJkMVx1NzJkM1x1NzJkNFx1NzJkNVx1NzJkNlx1NzJkOFx1NzJkYVx1NzJkYiJdLFsiYTFhMSIsIlx1MzAwMFx1MzAwMVx1MzAwMlx4YjdcdTAyYzlc''@;'; put 'put ''dTAyYzdceGE4XHUzMDAzXHUzMDA1XHUyMDE0XHVmZjVlXHUyMDE2XHUyMDI2XHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0XHUzMDE1XHUzMDA4Iiw3LCJcdTMwMTZcdTMwMTdcdTMwMTBcdTMwMTFceGIxXHhkN1x4ZjdcdTIyMzZcdTIyMjdcdTIyMjhcdTIyMTFcdTIyMGZcdTIyMmFc''@;'; put 'put ''dTIyMjlcdTIyMDhcdTIyMzdcdTIyMWFcdTIyYTVcdTIyMjVcdTIyMjBcdTIzMTJcdTIyOTlcdTIyMmJcdTIyMmVcdTIyNjFcdTIyNGNcdTIyNDhcdTIyM2RcdTIyMWRcdTIyNjBcdTIyNmVcdTIyNmZcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzVcdTIyMzRcdTI2NDJcdTI2NDBceGIwXHUyMDMy''@;'; put 'put ''XHUyMDMzXHUyMTAzXHVmZjA0XHhhNFx1ZmZlMFx1ZmZlMVx1MjAzMFx4YTdcdTIxMTZcdTI2MDZcdTI2MDVcdTI1Y2JcdTI1Y2ZcdTI1Y2VcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YjNcdTI1YjJcdTIwM2JcdTIxOTJcdTIxOTBcdTIxOTFcdTIxOTNcdTMwMTMiXSxbImEyYTEiLCJc''@;'; put 'put ''dTIxNzAiLDldLFsiYTJiMSIsIlx1MjQ4OCIsMTksIlx1MjQ3NCIsMTksIlx1MjQ2MCIsOV0sWyJhMmU1IiwiXHUzMjIwIiw5XSxbImEyZjEiLCJcdTIxNjAiLDExXSxbImEzYTEiLCJcdWZmMDFcdWZmMDJcdWZmMDNcdWZmZTVcdWZmMDUiLDg4LCJcdWZmZTMiXSxbImE0YTEiLCJcdTMwNDEi''@;'; put 'put ''LDgyXSxbImE1YTEiLCJcdTMwYTEiLDg1XSxbImE2YTEiLCJcdTAzOTEiLDE2LCJcdTAzYTMiLDZdLFsiYTZjMSIsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNl0sWyJhNmUwIiwiXHVmZTM1XHVmZTM2XHVmZTM5XHVmZTNhXHVmZTNmXHVmZTQwXHVmZTNkXHVmZTNlXHVmZTQxXHVmZTQyXHVmZTQz''@;'; put 'put ''XHVmZTQ0Il0sWyJhNmVlIiwiXHVmZTNiXHVmZTNjXHVmZTM3XHVmZTM4XHVmZTMxIl0sWyJhNmY0IiwiXHVmZTMzXHVmZTM0Il0sWyJhN2ExIiwiXHUwNDEwIiw1LCJcdTA0MDFcdTA0MTYiLDI1XSxbImE3ZDEiLCJcdTA0MzAiLDUsIlx1MDQ1MVx1MDQzNiIsMjVdLFsiYTg0MCIsIlx1MDJj''@;'; put 'put ''YVx1MDJjYlx1MDJkOVx1MjAxM1x1MjAxNVx1MjAyNVx1MjAzNVx1MjEwNVx1MjEwOVx1MjE5Nlx1MjE5N1x1MjE5OFx1MjE5OVx1MjIxNVx1MjIxZlx1MjIyM1x1MjI1Mlx1MjI2Nlx1MjI2N1x1MjJiZlx1MjU1MCIsMzUsIlx1MjU4MSIsNl0sWyJhODgwIiwiXHUyNTg4Iiw3LCJcdTI1OTNc''@;'; put 'put ''dTI1OTRcdTI1OTVcdTI1YmNcdTI1YmRcdTI1ZTJcdTI1ZTNcdTI1ZTRcdTI1ZTVcdTI2MDlcdTIyOTVcdTMwMTJcdTMwMWRcdTMwMWUiXSxbImE4YTEiLCJcdTAxMDFceGUxXHUwMWNlXHhlMFx1MDExM1x4ZTlcdTAxMWJceGU4XHUwMTJiXHhlZFx1MDFkMFx4ZWNcdTAxNGRceGYzXHUwMWQy''@;'; put 'put ''XHhmMlx1MDE2Ylx4ZmFcdTAxZDRceGY5XHUwMWQ2XHUwMWQ4XHUwMWRhXHUwMWRjXHhmY1x4ZWFcdTAyNTEiXSxbImE4YmQiLCJcdTAxNDRcdTAxNDgiXSxbImE4YzAiLCJcdTAyNjEiXSxbImE4YzUiLCJcdTMxMDUiLDM2XSxbImE5NDAiLCJcdTMwMjEiLDgsIlx1MzJhM1x1MzM4ZVx1MzM4''@;'; put 'put ''Zlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzNhMVx1MzNjNFx1MzNjZVx1MzNkMVx1MzNkMlx1MzNkNVx1ZmUzMFx1ZmZlMlx1ZmZlNCJdLFsiYTk1OSIsIlx1MjEyMVx1MzIzMSJdLFsiYTk1YyIsIlx1MjAxMCJdLFsiYTk2MCIsIlx1MzBmY1x1MzA5Ylx1MzA5Y1x1MzBmZFx1MzBmZVx1MzAwNlx1''@;'; put 'put ''MzA5ZFx1MzA5ZVx1ZmU0OSIsOSwiXHVmZTU0XHVmZTU1XHVmZTU2XHVmZTU3XHVmZTU5Iiw4XSxbImE5ODAiLCJcdWZlNjIiLDQsIlx1ZmU2OFx1ZmU2OVx1ZmU2YVx1ZmU2YiJdLFsiYTk5NiIsIlx1MzAwNyJdLFsiYTlhNCIsIlx1MjUwMCIsNzVdLFsiYWE0MCIsIlx1NzJkY1x1NzJkZFx1''@;'; put 'put ''NzJkZlx1NzJlMiIsNSwiXHU3MmVhXHU3MmViXHU3MmY1XHU3MmY2XHU3MmY5XHU3MmZkXHU3MmZlXHU3MmZmXHU3MzAwXHU3MzAyXHU3MzA0Iiw1LCJcdTczMGJcdTczMGNcdTczMGRcdTczMGZcdTczMTBcdTczMTFcdTczMTJcdTczMTRcdTczMThcdTczMTlcdTczMWFcdTczMWZcdTczMjBc''@;'; put 'put ''dTczMjNcdTczMjRcdTczMjZcdTczMjdcdTczMjhcdTczMmRcdTczMmZcdTczMzBcdTczMzJcdTczMzNcdTczMzVcdTczMzZcdTczM2FcdTczM2JcdTczM2NcdTczM2RcdTczNDAiLDhdLFsiYWE4MCIsIlx1NzM0OVx1NzM0YVx1NzM0Ylx1NzM0Y1x1NzM0ZVx1NzM0Zlx1NzM1MVx1NzM1M1x1''@;'; put 'put ''NzM1NFx1NzM1NVx1NzM1Nlx1NzM1OCIsNywiXHU3MzYxIiwxMCwiXHU3MzZlXHU3MzcwXHU3MzcxIl0sWyJhYjQwIiwiXHU3MzcyIiwxMSwiXHU3MzdmIiw0LCJcdTczODVcdTczODZcdTczODhcdTczOGFcdTczOGNcdTczOGRcdTczOGZcdTczOTBcdTczOTJcdTczOTNcdTczOTRcdTczOTVc''@;'; put 'put ''dTczOTdcdTczOThcdTczOTlcdTczOWFcdTczOWNcdTczOWRcdTczOWVcdTczYTBcdTczYTFcdTczYTMiLDUsIlx1NzNhYVx1NzNhY1x1NzNhZFx1NzNiMVx1NzNiNFx1NzNiNVx1NzNiNlx1NzNiOFx1NzNiOVx1NzNiY1x1NzNiZFx1NzNiZVx1NzNiZlx1NzNjMVx1NzNjMyIsNF0sWyJhYjgw''@;'; put 'put ''IiwiXHU3M2NiXHU3M2NjXHU3M2NlXHU3M2QyIiw2LCJcdTczZGFcdTczZGJcdTczZGNcdTczZGRcdTczZGZcdTczZTFcdTczZTJcdTczZTNcdTczZTRcdTczZTZcdTczZThcdTczZWFcdTczZWJcdTczZWNcdTczZWVcdTczZWZcdTczZjBcdTczZjFcdTczZjMiLDRdLFsiYWM0MCIsIlx1NzNm''@;'; put 'put ''OCIsMTAsIlx1NzQwNFx1NzQwN1x1NzQwOFx1NzQwYlx1NzQwY1x1NzQwZFx1NzQwZVx1NzQxMSIsOCwiXHU3NDFjIiw1LCJcdTc0MjNcdTc0MjRcdTc0MjdcdTc0MjlcdTc0MmJcdTc0MmRcdTc0MmZcdTc0MzFcdTc0MzJcdTc0MzciLDQsIlx1NzQzZFx1NzQzZVx1NzQzZlx1NzQ0MFx1NzQ0''@;'; put 'put ''MiIsMTFdLFsiYWM4MCIsIlx1NzQ0ZSIsNiwiXHU3NDU2XHU3NDU4XHU3NDVkXHU3NDYwIiwxMiwiXHU3NDZlXHU3NDZmXHU3NDcxIiw0LCJcdTc0NzhcdTc0NzlcdTc0N2EiXSxbImFkNDAiLCJcdTc0N2JcdTc0N2NcdTc0N2RcdTc0N2ZcdTc0ODJcdTc0ODRcdTc0ODVcdTc0ODZcdTc0ODhc''@;'; put 'put ''dTc0ODlcdTc0OGFcdTc0OGNcdTc0OGRcdTc0OGZcdTc0OTEiLDEwLCJcdTc0OWRcdTc0OWYiLDcsIlx1NzRhYSIsMTUsIlx1NzRiYiIsMTJdLFsiYWQ4MCIsIlx1NzRjOCIsOSwiXHU3NGQzIiw4LCJcdTc0ZGRcdTc0ZGZcdTc0ZTFcdTc0ZTVcdTc0ZTciLDYsIlx1NzRmMFx1NzRmMVx1NzRm''@;'; put 'put ''MiJdLFsiYWU0MCIsIlx1NzRmM1x1NzRmNVx1NzRmOCIsNiwiXHU3NTAwXHU3NTAxXHU3NTAyXHU3NTAzXHU3NTA1Iiw3LCJcdTc1MGVcdTc1MTBcdTc1MTJcdTc1MTRcdTc1MTVcdTc1MTZcdTc1MTdcdTc1MWJcdTc1MWRcdTc1MWVcdTc1MjAiLDQsIlx1NzUyNlx1NzUyN1x1NzUyYVx1NzUy''@;'; put 'put ''ZVx1NzUzNFx1NzUzNlx1NzUzOVx1NzUzY1x1NzUzZFx1NzUzZlx1NzU0MVx1NzU0Mlx1NzU0M1x1NzU0NFx1NzU0Nlx1NzU0N1x1NzU0OVx1NzU0YVx1NzU0ZFx1NzU1MFx1NzU1MVx1NzU1Mlx1NzU1M1x1NzU1NVx1NzU1Nlx1NzU1N1x1NzU1OCJdLFsiYWU4MCIsIlx1NzU1ZCIsNywiXHU3''@;'; put 'put ''NTY3XHU3NTY4XHU3NTY5XHU3NTZiIiw2LCJcdTc1NzNcdTc1NzVcdTc1NzZcdTc1NzdcdTc1N2EiLDQsIlx1NzU4MFx1NzU4MVx1NzU4Mlx1NzU4NFx1NzU4NVx1NzU4NyJdLFsiYWY0MCIsIlx1NzU4OFx1NzU4OVx1NzU4YVx1NzU4Y1x1NzU4ZFx1NzU4ZVx1NzU5MFx1NzU5M1x1NzU5NVx1''@;'; put 'put ''NzU5OFx1NzU5Ylx1NzU5Y1x1NzU5ZVx1NzVhMlx1NzVhNiIsNCwiXHU3NWFkXHU3NWI2XHU3NWI3XHU3NWJhXHU3NWJiXHU3NWJmXHU3NWMwXHU3NWMxXHU3NWM2XHU3NWNiXHU3NWNjXHU3NWNlXHU3NWNmXHU3NWQwXHU3NWQxXHU3NWQzXHU3NWQ3XHU3NWQ5XHU3NWRhXHU3NWRjXHU3NWRk''@;'; put 'put ''XHU3NWRmXHU3NWUwXHU3NWUxXHU3NWU1XHU3NWU5XHU3NWVjXHU3NWVkXHU3NWVlXHU3NWVmXHU3NWYyXHU3NWYzXHU3NWY1XHU3NWY2XHU3NWY3XHU3NWY4XHU3NWZhXHU3NWZiXHU3NWZkXHU3NWZlXHU3NjAyXHU3NjA0XHU3NjA2XHU3NjA3Il0sWyJhZjgwIiwiXHU3NjA4XHU3NjA5XHU3''@;'; put 'put ''NjBiXHU3NjBkXHU3NjBlXHU3NjBmXHU3NjExXHU3NjEyXHU3NjEzXHU3NjE0XHU3NjE2XHU3NjFhXHU3NjFjXHU3NjFkXHU3NjFlXHU3NjIxXHU3NjIzXHU3NjI3XHU3NjI4XHU3NjJjXHU3NjJlXHU3NjJmXHU3NjMxXHU3NjMyXHU3NjM2XHU3NjM3XHU3NjM5XHU3NjNhXHU3NjNiXHU3NjNk''@;'; put 'put ''XHU3NjQxXHU3NjQyXHU3NjQ0Il0sWyJiMDQwIiwiXHU3NjQ1Iiw2LCJcdTc2NGUiLDUsIlx1NzY1NVx1NzY1NyIsNCwiXHU3NjVkXHU3NjVmXHU3NjYwXHU3NjYxXHU3NjYyXHU3NjY0Iiw2LCJcdTc2NmNcdTc2NmRcdTc2NmVcdTc2NzAiLDcsIlx1NzY3OVx1NzY3YVx1NzY3Y1x1NzY3Zlx1''@;'; put 'put ''NzY4MFx1NzY4MVx1NzY4M1x1NzY4NVx1NzY4OVx1NzY4YVx1NzY4Y1x1NzY4ZFx1NzY4Zlx1NzY5MFx1NzY5Mlx1NzY5NFx1NzY5NVx1NzY5N1x1NzY5OFx1NzY5YVx1NzY5YiJdLFsiYjA4MCIsIlx1NzY5YyIsNywiXHU3NmE1Iiw4LCJcdTc2YWZcdTc2YjBcdTc2YjNcdTc2YjUiLDksIlx1''@;'; put 'put ''NzZjMFx1NzZjMVx1NzZjM1x1NTU0YVx1OTYzZlx1NTdjM1x1NjMyOFx1NTRjZVx1NTUwOVx1NTRjMFx1NzY5MVx1NzY0Y1x1ODUzY1x1NzdlZVx1ODI3ZVx1Nzg4ZFx1NzIzMVx1OTY5OFx1OTc4ZFx1NmMyOFx1NWI4OVx1NGZmYVx1NjMwOVx1NjY5N1x1NWNiOFx1ODBmYVx1Njg0OFx1ODBh''@;'; put 'put ''ZVx1NjYwMlx1NzZjZVx1NTFmOVx1NjU1Nlx1NzFhY1x1N2ZmMVx1ODg4NFx1NTBiMlx1NTk2NVx1NjFjYVx1NmZiM1x1ODJhZFx1NjM0Y1x1NjI1Mlx1NTNlZFx1NTQyN1x1N2IwNlx1NTE2Ylx1NzVhNFx1NWRmNFx1NjJkNFx1OGRjYlx1OTc3Nlx1NjI4YVx1ODAxOVx1NTc1ZFx1OTczOFx1''@;'; put 'put ''N2Y2Mlx1NzIzOFx1NzY3ZFx1NjdjZlx1NzY3ZVx1NjQ0Nlx1NGY3MFx1OGQyNVx1NjJkY1x1N2ExN1x1NjU5MVx1NzNlZFx1NjQyY1x1NjI3M1x1ODIyY1x1OTg4MVx1Njc3Zlx1NzI0OFx1NjI2ZVx1NjJjY1x1NGYzNFx1NzRlM1x1NTM0YVx1NTI5ZVx1N2VjYVx1OTBhNlx1NWUyZVx1Njg4''@;'; put 'put ''Nlx1Njk5Y1x1ODE4MFx1N2VkMVx1NjhkMlx1NzhjNVx1ODY4Y1x1OTU1MVx1NTA4ZFx1OGMyNFx1ODJkZVx1ODBkZVx1NTMwNVx1ODkxMlx1NTI2NSJdLFsiYjE0MCIsIlx1NzZjNFx1NzZjN1x1NzZjOVx1NzZjYlx1NzZjY1x1NzZkM1x1NzZkNVx1NzZkOVx1NzZkYVx1NzZkY1x1NzZkZFx1''@;'; put 'put ''NzZkZVx1NzZlMCIsNCwiXHU3NmU2Iiw3LCJcdTc2ZjBcdTc2ZjNcdTc2ZjVcdTc2ZjZcdTc2ZjdcdTc2ZmFcdTc2ZmJcdTc2ZmRcdTc2ZmZcdTc3MDBcdTc3MDJcdTc3MDNcdTc3MDVcdTc3MDZcdTc3MGFcdTc3MGNcdTc3MGUiLDEwLCJcdTc3MWJcdTc3MWNcdTc3MWRcdTc3MWVcdTc3MjFc''@;'; put 'put ''dTc3MjNcdTc3MjRcdTc3MjVcdTc3MjdcdTc3MmFcdTc3MmIiXSxbImIxODAiLCJcdTc3MmNcdTc3MmVcdTc3MzAiLDQsIlx1NzczOVx1NzczYlx1NzczZFx1NzczZVx1NzczZlx1Nzc0Mlx1Nzc0NFx1Nzc0NVx1Nzc0Nlx1Nzc0OCIsNywiXHU3NzUyIiw3LCJcdTc3NWNcdTg1ODRcdTk2Zjlc''@;'; put 'put ''dTRmZGRcdTU4MjFcdTk5NzFcdTViOWRcdTYyYjFcdTYyYTVcdTY2YjRcdThjNzlcdTljOGRcdTcyMDZcdTY3NmZcdTc4OTFcdTYwYjJcdTUzNTFcdTUzMTdcdThmODhcdTgwY2NcdThkMWRcdTk0YTFcdTUwMGRcdTcyYzhcdTU5MDdcdTYwZWJcdTcxMTlcdTg4YWJcdTU5NTRcdTgyZWZcdTY3''@;'; put 'put ''MmNcdTdiMjhcdTVkMjlcdTdlZjdcdTc1MmRcdTZjZjVcdThlNjZcdThmZjhcdTkwM2NcdTlmM2JcdTZiZDRcdTkxMTlcdTdiMTRcdTVmN2NcdTc4YTdcdTg0ZDZcdTg1M2RcdTZiZDVcdTZiZDlcdTZiZDZcdTVlMDFcdTVlODdcdTc1ZjlcdTk1ZWRcdTY1NWRcdTVmMGFcdTVmYzVcdThmOWZc''@;'; put 'put ''dTU4YzFcdTgxYzJcdTkwN2ZcdTk2NWJcdTk3YWRcdThmYjlcdTdmMTZcdThkMmNcdTYyNDFcdTRmYmZcdTUzZDhcdTUzNWVcdThmYThcdThmYTlcdThmYWJcdTkwNGRcdTY4MDdcdTVmNmFcdTgxOThcdTg4NjhcdTljZDZcdTYxOGJcdTUyMmJcdTc2MmFcdTVmNmNcdTY1OGNcdTZmZDJcdTZl''@;'; put 'put ''ZThcdTViYmVcdTY0NDhcdTUxNzVcdTUxYjBcdTY3YzRcdTRlMTlcdTc5YzlcdTk5N2NcdTcwYjMiXSxbImIyNDAiLCJcdTc3NWRcdTc3NWVcdTc3NWZcdTc3NjBcdTc3NjRcdTc3NjdcdTc3NjlcdTc3NmFcdTc3NmQiLDExLCJcdTc3N2FcdTc3N2JcdTc3N2NcdTc3ODFcdTc3ODJcdTc3ODNc''@;'; put 'put ''dTc3ODYiLDUsIlx1Nzc4Zlx1Nzc5MFx1Nzc5MyIsMTEsIlx1NzdhMVx1NzdhM1x1NzdhNFx1NzdhNlx1NzdhOFx1NzdhYlx1NzdhZFx1NzdhZVx1NzdhZlx1NzdiMVx1NzdiMlx1NzdiNFx1NzdiNiIsNF0sWyJiMjgwIiwiXHU3N2JjXHU3N2JlXHU3N2MwIiwxMiwiXHU3N2NlIiw4LCJcdTc3''@;'; put 'put ''ZDhcdTc3ZDlcdTc3ZGFcdTc3ZGQiLDQsIlx1NzdlNFx1NzVjNVx1NWU3Nlx1NzNiYlx1ODNlMFx1NjRhZFx1NjJlOFx1OTRiNVx1NmNlMlx1NTM1YVx1NTJjM1x1NjQwZlx1OTRjMlx1N2I5NFx1NGYyZlx1NWUxYlx1ODIzNlx1ODExNlx1ODE4YVx1NmUyNFx1NmNjYVx1OWE3M1x1NjM1NVx1''@;'; put 'put ''NTM1Y1x1NTRmYVx1ODg2NVx1NTdlMFx1NGUwZFx1NWUwM1x1NmI2NVx1N2MzZlx1OTBlOFx1NjAxNlx1NjRlNlx1NzMxY1x1ODhjMVx1Njc1MFx1NjI0ZFx1OGQyMlx1Nzc2Y1x1OGUyOVx1OTFjN1x1NWY2OVx1ODNkY1x1ODUyMVx1OTkxMFx1NTNjMlx1ODY5NVx1NmI4Ylx1NjBlZFx1NjBl''@;'; put 'put ''OFx1NzA3Zlx1ODJjZFx1ODIzMVx1NGVkM1x1NmNhN1x1ODVjZlx1NjRjZFx1N2NkOVx1NjlmZFx1NjZmOVx1ODM0OVx1NTM5NVx1N2I1Nlx1NGZhN1x1NTE4Y1x1NmQ0Ylx1NWM0Mlx1OGU2ZFx1NjNkMlx1NTNjOVx1ODMyY1x1ODMzNlx1NjdlNVx1NzhiNFx1NjQzZFx1NWJkZlx1NWM5NFx1''@;'; put 'put ''NWRlZVx1OGJlN1x1NjJjNlx1NjdmNFx1OGM3YVx1NjQwMFx1NjNiYVx1ODc0OVx1OTk4Ylx1OGMxN1x1N2YyMFx1OTRmMlx1NGVhN1x1OTYxMFx1OThhNFx1NjYwY1x1NzMxNiJdLFsiYjM0MCIsIlx1NzdlNlx1NzdlOFx1NzdlYVx1NzdlZlx1NzdmMFx1NzdmMVx1NzdmMlx1NzdmNFx1Nzdm''@;'; put 'put ''NVx1NzdmN1x1NzdmOVx1NzdmYVx1NzdmYlx1NzdmY1x1NzgwMyIsNSwiXHU3ODBhXHU3ODBiXHU3ODBlXHU3ODBmXHU3ODEwXHU3ODEzXHU3ODE1XHU3ODE5XHU3ODFiXHU3ODFlXHU3ODIwXHU3ODIxXHU3ODIyXHU3ODI0XHU3ODI4XHU3ODJhXHU3ODJiXHU3ODJlXHU3ODJmXHU3ODMxXHU3''@;'; put 'put ''ODMyXHU3ODMzXHU3ODM1XHU3ODM2XHU3ODNkXHU3ODNmXHU3ODQxXHU3ODQyXHU3ODQzXHU3ODQ0XHU3ODQ2XHU3ODQ4XHU3ODQ5XHU3ODRhXHU3ODRiXHU3ODRkXHU3ODRmXHU3ODUxXHU3ODUzXHU3ODU0XHU3ODU4XHU3ODU5XHU3ODVhIl0sWyJiMzgwIiwiXHU3ODViXHU3ODVjXHU3ODVl''@;'; put 'put ''IiwxMSwiXHU3ODZmIiw3LCJcdTc4NzhcdTc4NzlcdTc4N2FcdTc4N2JcdTc4N2QiLDYsIlx1NTczYVx1NWMxZFx1NWUzOFx1OTU3Zlx1NTA3Zlx1ODBhMFx1NTM4Mlx1NjU1ZVx1NzU0NVx1NTUzMVx1NTAyMVx1OGQ4NVx1NjI4NFx1OTQ5ZVx1NjcxZFx1NTYzMlx1NmY2ZVx1NWRlMlx1NTQz''@;'; put 'put ''NVx1NzA5Mlx1OGY2Nlx1NjI2Zlx1NjRhNFx1NjNhM1x1NWY3Ylx1NmY4OFx1OTBmNFx1ODFlM1x1OGZiMFx1NWMxOFx1NjY2OFx1NWZmMVx1NmM4OVx1OTY0OFx1OGQ4MVx1ODg2Y1x1NjQ5MVx1NzlmMFx1NTdjZVx1NmE1OVx1NjIxMFx1NTQ0OFx1NGU1OFx1N2EwYlx1NjBlOVx1NmY4NFx1''@;'; put 'put ''OGJkYVx1NjI3Zlx1OTAxZVx1OWE4Ylx1NzllNFx1NTQwM1x1NzVmNFx1NjMwMVx1NTMxOVx1NmM2MFx1OGZkZlx1NWYxYlx1OWE3MFx1ODAzYlx1OWY3Zlx1NGY4OFx1NWMzYVx1OGQ2NFx1N2ZjNVx1NjVhNVx1NzBiZFx1NTE0NVx1NTFiMlx1ODY2Ylx1NWQwN1x1NWJhMFx1NjJiZFx1OTE2''@;'; put 'put ''Y1x1NzU3NFx1OGUwY1x1N2EyMFx1NjEwMVx1N2I3OVx1NGVjN1x1N2VmOFx1Nzc4NVx1NGUxMVx1ODFlZFx1NTIxZFx1NTFmYVx1NmE3MVx1NTNhOFx1OGU4N1x1OTUwNFx1OTZjZlx1NmVjMVx1OTY2NFx1Njk1YSJdLFsiYjQ0MCIsIlx1Nzg4NFx1Nzg4NVx1Nzg4Nlx1Nzg4OFx1Nzg4YVx1''@;'; put 'put ''Nzg4Ylx1Nzg4Zlx1Nzg5MFx1Nzg5Mlx1Nzg5NFx1Nzg5NVx1Nzg5Nlx1Nzg5OVx1Nzg5ZFx1Nzg5ZVx1NzhhMFx1NzhhMlx1NzhhNFx1NzhhNlx1NzhhOCIsNywiXHU3OGI1XHU3OGI2XHU3OGI3XHU3OGI4XHU3OGJhXHU3OGJiXHU3OGJjXHU3OGJkXHU3OGJmXHU3OGMwXHU3OGMyXHU3OGMz''@;'; put 'put ''XHU3OGM0XHU3OGM2XHU3OGM3XHU3OGM4XHU3OGNjXHU3OGNkXHU3OGNlXHU3OGNmXHU3OGQxXHU3OGQyXHU3OGQzXHU3OGQ2XHU3OGQ3XHU3OGQ4XHU3OGRhIiw5XSxbImI0ODAiLCJcdTc4ZTRcdTc4ZTVcdTc4ZTZcdTc4ZTdcdTc4ZTlcdTc4ZWFcdTc4ZWJcdTc4ZWQiLDQsIlx1NzhmM1x1''@;'; put 'put ''NzhmNVx1NzhmNlx1NzhmOFx1NzhmOVx1NzhmYiIsNSwiXHU3OTAyXHU3OTAzXHU3OTA0XHU3OTA2Iiw2LCJcdTc4NDBcdTUwYThcdTc3ZDdcdTY0MTBcdTg5ZTZcdTU5MDRcdTYzZTNcdTVkZGRcdTdhN2ZcdTY5M2RcdTRmMjBcdTgyMzlcdTU1OThcdTRlMzJcdTc1YWVcdTdhOTdcdTVlNjJc''@;'; put 'put ''dTVlOGFcdTk1ZWZcdTUyMWJcdTU0MzlcdTcwOGFcdTYzNzZcdTk1MjRcdTU3ODJcdTY2MjVcdTY5M2ZcdTkxODdcdTU1MDdcdTZkZjNcdTdlYWZcdTg4MjJcdTYyMzNcdTdlZjBcdTc1YjVcdTgzMjhcdTc4YzFcdTk2Y2NcdThmOWVcdTYxNDhcdTc0ZjdcdThiY2RcdTZiNjRcdTUyM2FcdThk''@;'; put 'put ''NTBcdTZiMjFcdTgwNmFcdTg0NzFcdTU2ZjFcdTUzMDZcdTRlY2VcdTRlMWJcdTUxZDFcdTdjOTdcdTkxOGJcdTdjMDdcdTRmYzNcdThlN2ZcdTdiZTFcdTdhOWNcdTY0NjdcdTVkMTRcdTUwYWNcdTgxMDZcdTc2MDFcdTdjYjlcdTZkZWNcdTdmZTBcdTY3NTFcdTViNThcdTViZjhcdTc4Y2Jc''@;'; put 'put ''dTY0YWVcdTY0MTNcdTYzYWFcdTYzMmJcdTk1MTlcdTY0MmRcdThmYmVcdTdiNTRcdTc2MjlcdTYyNTNcdTU5MjdcdTU0NDZcdTZiNzlcdTUwYTNcdTYyMzRcdTVlMjZcdTZiODZcdTRlZTNcdThkMzdcdTg4OGJcdTVmODVcdTkwMmUiXSxbImI1NDAiLCJcdTc5MGQiLDUsIlx1NzkxNCIsOSwi''@;'; put 'put ''XHU3OTFmIiw0LCJcdTc5MjUiLDE0LCJcdTc5MzUiLDQsIlx1NzkzZFx1NzkzZlx1Nzk0Mlx1Nzk0M1x1Nzk0NFx1Nzk0NVx1Nzk0N1x1Nzk0YSIsOCwiXHU3OTU0XHU3OTU1XHU3OTU4XHU3OTU5XHU3OTYxXHU3OTYzIl0sWyJiNTgwIiwiXHU3OTY0XHU3OTY2XHU3OTY5XHU3OTZhXHU3OTZi''@;'; put 'put ''XHU3OTZjXHU3OTZlXHU3OTcwIiw2LCJcdTc5NzlcdTc5N2IiLDQsIlx1Nzk4Mlx1Nzk4M1x1Nzk4Nlx1Nzk4N1x1Nzk4OFx1Nzk4OVx1Nzk4Ylx1Nzk4Y1x1Nzk4ZFx1Nzk4ZVx1Nzk5MFx1Nzk5MVx1Nzk5Mlx1NjAyMFx1ODAzZFx1NjJjNVx1NGUzOVx1NTM1NVx1OTBmOFx1NjNiOFx1ODBj''@;'; put 'put ''Nlx1NjVlNlx1NmMyZVx1NGY0Nlx1NjBlZVx1NmRlMVx1OGJkZVx1NWYzOVx1ODZjYlx1NWY1M1x1NjMyMVx1NTE1YVx1ODM2MVx1Njg2M1x1NTIwMFx1NjM2M1x1OGU0OFx1NTAxMlx1NWM5Ylx1Nzk3N1x1NWJmY1x1NTIzMFx1N2EzYlx1NjBiY1x1OTA1M1x1NzZkN1x1NWZiN1x1NWY5N1x1''@;'; put 'put ''NzY4NFx1OGU2Y1x1NzA2Zlx1NzY3Ylx1N2I0OVx1NzdhYVx1NTFmM1x1OTA5M1x1NTgyNFx1NGY0ZVx1NmVmNFx1OGZlYVx1NjU0Y1x1N2IxYlx1NzJjNFx1NmRhNFx1N2ZkZlx1NWFlMVx1NjJiNVx1NWU5NVx1NTczMFx1ODQ4Mlx1N2IyY1x1NWUxZFx1NWYxZlx1OTAxMlx1N2YxNFx1OThh''@;'; put 'put ''MFx1NjM4Mlx1NmVjN1x1Nzg5OFx1NzBiOVx1NTE3OFx1OTc1Ylx1NTdhYlx1NzUzNVx1NGY0M1x1NzUzOFx1NWU5N1x1NjBlNlx1NTk2MFx1NmRjMFx1NmJiZlx1Nzg4OVx1NTNmY1x1OTZkNVx1NTFjYlx1NTIwMVx1NjM4OVx1NTQwYVx1OTQ5M1x1OGMwM1x1OGRjY1x1NzIzOVx1Nzg5Zlx1''@;'; put 'put ''ODc3Nlx1OGZlZFx1OGMwZFx1NTNlMCJdLFsiYjY0MCIsIlx1Nzk5MyIsNiwiXHU3OTliIiwxMSwiXHU3OWE4IiwxMCwiXHU3OWI0Iiw0LCJcdTc5YmNcdTc5YmZcdTc5YzJcdTc5YzRcdTc5YzVcdTc5YzdcdTc5YzhcdTc5Y2FcdTc5Y2NcdTc5Y2VcdTc5Y2ZcdTc5ZDBcdTc5ZDNcdTc5ZDRc''@;'; put 'put ''dTc5ZDZcdTc5ZDdcdTc5ZDkiLDUsIlx1NzllMFx1NzllMVx1NzllMlx1NzllNVx1NzllOFx1NzllYSJdLFsiYjY4MCIsIlx1NzllY1x1NzllZVx1NzlmMSIsNiwiXHU3OWY5XHU3OWZhXHU3OWZjXHU3OWZlXHU3OWZmXHU3YTAxXHU3YTA0XHU3YTA1XHU3YTA3XHU3YTA4XHU3YTA5XHU3YTBh''@;'; put 'put ''XHU3YTBjXHU3YTBmIiw0LCJcdTdhMTVcdTdhMTZcdTdhMThcdTdhMTlcdTdhMWJcdTdhMWNcdTRlMDFcdTc2ZWZcdTUzZWVcdTk0ODlcdTk4NzZcdTlmMGVcdTk1MmRcdTViOWFcdThiYTJcdTRlMjJcdTRlMWNcdTUxYWNcdTg0NjNcdTYxYzJcdTUyYThcdTY4MGJcdTRmOTdcdTYwNmJcdTUx''@;'; put 'put ''YmJcdTZkMWVcdTUxNWNcdTYyOTZcdTY1OTdcdTk2NjFcdThjNDZcdTkwMTdcdTc1ZDhcdTkwZmRcdTc3NjNcdTZiZDJcdTcyOGFcdTcyZWNcdThiZmJcdTU4MzVcdTc3NzlcdThkNGNcdTY3NWNcdTk1NDBcdTgwOWFcdTVlYTZcdTZlMjFcdTU5OTJcdTdhZWZcdTc3ZWRcdTk1M2JcdTZiYjVc''@;'; put 'put ''dTY1YWRcdTdmMGVcdTU4MDZcdTUxNTFcdTk2MWZcdTViZjlcdTU4YTlcdTU0MjhcdThlNzJcdTY1NjZcdTk4N2ZcdTU2ZTRcdTk0OWRcdTc2ZmVcdTkwNDFcdTYzODdcdTU0YzZcdTU5MWFcdTU5M2FcdTU3OWJcdThlYjJcdTY3MzVcdThkZmFcdTgyMzVcdTUyNDFcdTYwZjBcdTU4MTVcdTg2''@;'; put 'put ''ZmVcdTVjZThcdTllNDVcdTRmYzRcdTk4OWRcdThiYjlcdTVhMjVcdTYwNzZcdTUzODRcdTYyN2NcdTkwNGZcdTkxMDJcdTk5N2ZcdTYwNjlcdTgwMGNcdTUxM2ZcdTgwMzNcdTVjMTRcdTk5NzVcdTZkMzFcdTRlOGMiXSxbImI3NDAiLCJcdTdhMWRcdTdhMWZcdTdhMjFcdTdhMjJcdTdhMjQi''@;'; put 'put ''LDE0LCJcdTdhMzRcdTdhMzVcdTdhMzZcdTdhMzhcdTdhM2FcdTdhM2VcdTdhNDAiLDUsIlx1N2E0NyIsOSwiXHU3YTUyIiw0LCJcdTdhNTgiLDE2XSxbImI3ODAiLCJcdTdhNjkiLDYsIlx1N2E3MVx1N2E3Mlx1N2E3M1x1N2E3NVx1N2E3Ylx1N2E3Y1x1N2E3ZFx1N2E3ZVx1N2E4Mlx1N2E4''@;'; put 'put ''NVx1N2E4N1x1N2E4OVx1N2E4YVx1N2E4Ylx1N2E4Y1x1N2E4ZVx1N2E4Zlx1N2E5MFx1N2E5M1x1N2E5NFx1N2E5OVx1N2E5YVx1N2E5Ylx1N2E5ZVx1N2FhMVx1N2FhMlx1OGQzMFx1NTNkMVx1N2Y1YVx1N2I0Zlx1NGYxMFx1NGU0Zlx1OTYwMFx1NmNkNVx1NzNkMFx1ODVlOVx1NWUwNlx1''@;'; put 'put ''NzU2YVx1N2ZmYlx1NmEwYVx1NzdmZVx1OTQ5Mlx1N2U0MVx1NTFlMVx1NzBlNlx1NTNjZFx1OGZkNFx1ODMwM1x1OGQyOVx1NzJhZlx1OTk2ZFx1NmNkYlx1NTc0YVx1ODJiM1x1NjViOVx1ODBhYVx1NjIzZlx1OTYzMlx1NTlhOFx1NGVmZlx1OGJiZlx1N2ViYVx1NjUzZVx1ODNmMlx1OTc1''@;'; put 'put ''ZVx1NTU2MVx1OThkZVx1ODBhNVx1NTMyYVx1OGJmZFx1NTQyMFx1ODBiYVx1NWU5Zlx1NmNiOFx1OGQzOVx1ODJhY1x1OTE1YVx1NTQyOVx1NmMxYlx1NTIwNlx1N2ViN1x1NTc1Zlx1NzExYVx1NmM3ZVx1N2M4OVx1NTk0Ylx1NGVmZFx1NWZmZlx1NjEyNFx1N2NhYVx1NGUzMFx1NWMwMVx1''@;'; put 'put ''NjdhYlx1ODcwMlx1NWNmMFx1OTUwYlx1OThjZVx1NzVhZlx1NzBmZFx1OTAyMlx1NTFhZlx1N2YxZFx1OGJiZFx1NTk0OVx1NTFlNFx1NGY1Ylx1NTQyNlx1NTkyYlx1NjU3N1x1ODBhNFx1NWI3NVx1NjI3Nlx1NjJjMlx1OGY5MFx1NWU0NVx1NmMxZlx1N2IyNlx1NGYwZlx1NGZkOFx1Njcw''@;'; put 'put ''ZCJdLFsiYjg0MCIsIlx1N2FhM1x1N2FhNFx1N2FhN1x1N2FhOVx1N2FhYVx1N2FhYlx1N2FhZSIsNCwiXHU3YWI0IiwxMCwiXHU3YWMwIiwxMCwiXHU3YWNjIiw5LCJcdTdhZDdcdTdhZDhcdTdhZGFcdTdhZGJcdTdhZGNcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTRcdTdhZTciLDUsIlx1N2Fl''@;'; put 'put ''ZVx1N2FmMFx1N2FmMVx1N2FmMlx1N2FmMyJdLFsiYjg4MCIsIlx1N2FmNCIsNCwiXHU3YWZiXHU3YWZjXHU3YWZlXHU3YjAwXHU3YjAxXHU3YjAyXHU3YjA1XHU3YjA3XHU3YjA5XHU3YjBjXHU3YjBkXHU3YjBlXHU3YjEwXHU3YjEyXHU3YjEzXHU3YjE2XHU3YjE3XHU3YjE4XHU3YjFhXHU3''@;'; put 'put ''YjFjXHU3YjFkXHU3YjFmXHU3YjIxXHU3YjIyXHU3YjIzXHU3YjI3XHU3YjI5XHU3YjJkXHU2ZDZlXHU2ZGFhXHU3OThmXHU4OGIxXHU1ZjE3XHU3NTJiXHU2MjlhXHU4Zjg1XHU0ZmVmXHU5MWRjXHU2NWE3XHU4MTJmXHU4MTUxXHU1ZTljXHU4MTUwXHU4ZDc0XHU1MjZmXHU4OTg2XHU4ZDRi''@;'; put 'put ''XHU1OTBkXHU1MDg1XHU0ZWQ4XHU5NjFjXHU3MjM2XHU4MTc5XHU4ZDFmXHU1YmNjXHU4YmEzXHU5NjQ0XHU1OTg3XHU3ZjFhXHU1NDkwXHU1Njc2XHU1NjBlXHU4YmU1XHU2NTM5XHU2OTgyXHU5NDk5XHU3NmQ2XHU2ZTg5XHU1ZTcyXHU3NTE4XHU2NzQ2XHU2N2QxXHU3YWZmXHU4MDlkXHU4''@;'; put 'put ''ZDc2XHU2MTFmXHU3OWM2XHU2NTYyXHU4ZDYzXHU1MTg4XHU1MjFhXHU5NGEyXHU3ZjM4XHU4MDliXHU3ZWIyXHU1Yzk3XHU2ZTJmXHU2NzYwXHU3YmQ5XHU3NjhiXHU5YWQ4XHU4MThmXHU3Zjk0XHU3Y2Q1XHU2NDFlXHU5NTUwXHU3YTNmXHU1NDRhXHU1NGU1XHU2YjRjXHU2NDAxXHU2MjA4''@;'; put 'put ''XHU5ZTNkXHU4MGYzXHU3NTk5XHU1MjcyXHU5NzY5XHU4NDViXHU2ODNjXHU4NmU0XHU5NjAxXHU5Njk0XHU5NGVjXHU0ZTJhXHU1NDA0XHU3ZWQ5XHU2ODM5XHU4ZGRmXHU4MDE1XHU2NmY0XHU1ZTlhXHU3ZmI5Il0sWyJiOTQwIiwiXHU3YjJmXHU3YjMwXHU3YjMyXHU3YjM0XHU3YjM1XHU3''@;'; put 'put ''YjM2XHU3YjM3XHU3YjM5XHU3YjNiXHU3YjNkXHU3YjNmIiw1LCJcdTdiNDZcdTdiNDhcdTdiNGFcdTdiNGRcdTdiNGVcdTdiNTNcdTdiNTVcdTdiNTdcdTdiNTlcdTdiNWNcdTdiNWVcdTdiNWZcdTdiNjFcdTdiNjMiLDEwLCJcdTdiNmZcdTdiNzBcdTdiNzNcdTdiNzRcdTdiNzZcdTdiNzhc''@;'; put 'put ''dTdiN2FcdTdiN2NcdTdiN2RcdTdiN2ZcdTdiODFcdTdiODJcdTdiODNcdTdiODRcdTdiODYiLDYsIlx1N2I4ZVx1N2I4ZiJdLFsiYjk4MCIsIlx1N2I5MVx1N2I5Mlx1N2I5M1x1N2I5Nlx1N2I5OFx1N2I5OVx1N2I5YVx1N2I5Ylx1N2I5ZVx1N2I5Zlx1N2JhMFx1N2JhM1x1N2JhNFx1N2Jh''@;'; put 'put ''NVx1N2JhZVx1N2JhZlx1N2JiMFx1N2JiMlx1N2JiM1x1N2JiNVx1N2JiNlx1N2JiN1x1N2JiOSIsNywiXHU3YmMyXHU3YmMzXHU3YmM0XHU1N2MyXHU4MDNmXHU2ODk3XHU1ZGU1XHU2NTNiXHU1MjlmXHU2MDZkXHU5ZjlhXHU0ZjliXHU4ZWFjXHU1MTZjXHU1YmFiXHU1ZjEzXHU1ZGU5XHU2''@;'; put 'put ''YzVlXHU2MmYxXHU4ZDIxXHU1MTcxXHU5NGE5XHU1MmZlXHU2YzlmXHU4MmRmXHU3MmQ3XHU1N2EyXHU2Nzg0XHU4ZDJkXHU1OTFmXHU4ZjljXHU4M2M3XHU1NDk1XHU3YjhkXHU0ZjMwXHU2Y2JkXHU1YjY0XHU1OWQxXHU5ZjEzXHU1M2U0XHU4NmNhXHU5YWE4XHU4YzM3XHU4MGExXHU2NTQ1''@;'; put 'put ''XHU5ODdlXHU1NmZhXHU5NmM3XHU1MjJlXHU3NGRjXHU1MjUwXHU1YmUxXHU2MzAyXHU4OTAyXHU0ZTU2XHU2MmQwXHU2MDJhXHU2OGZhXHU1MTczXHU1Yjk4XHU1MWEwXHU4OWMyXHU3YmExXHU5OTg2XHU3ZjUwXHU2MGVmXHU3MDRjXHU4ZDJmXHU1MTQ5XHU1ZTdmXHU5MDFiXHU3NDcwXHU4''@;'; put 'put ''OWM0XHU1NzJkXHU3ODQ1XHU1ZjUyXHU5ZjlmXHU5NWZhXHU4ZjY4XHU5YjNjXHU4YmUxXHU3Njc4XHU2ODQyXHU2N2RjXHU4ZGVhXHU4ZDM1XHU1MjNkXHU4ZjhhXHU2ZWRhXHU2OGNkXHU5NTA1XHU5MGVkXHU1NmZkXHU2NzljXHU4OGY5XHU4ZmM3XHU1NGM4Il0sWyJiYTQwIiwiXHU3YmM1''@;'; put 'put ''XHU3YmM4XHU3YmM5XHU3YmNhXHU3YmNiXHU3YmNkXHU3YmNlXHU3YmNmXHU3YmQwXHU3YmQyXHU3YmQ0Iiw0LCJcdTdiZGJcdTdiZGNcdTdiZGVcdTdiZGZcdTdiZTBcdTdiZTJcdTdiZTNcdTdiZTRcdTdiZTdcdTdiZThcdTdiZTlcdTdiZWJcdTdiZWNcdTdiZWRcdTdiZWZcdTdiZjBcdTdi''@;'; put 'put ''ZjIiLDQsIlx1N2JmOFx1N2JmOVx1N2JmYVx1N2JmYlx1N2JmZFx1N2JmZiIsNywiXHU3YzA4XHU3YzA5XHU3YzBhXHU3YzBkXHU3YzBlXHU3YzEwIiw1LCJcdTdjMTdcdTdjMThcdTdjMTkiXSxbImJhODAiLCJcdTdjMWEiLDQsIlx1N2MyMCIsNSwiXHU3YzI4XHU3YzI5XHU3YzJiIiwxMiwi''@;'; put 'put ''XHU3YzM5Iiw1LCJcdTdjNDJcdTlhYjhcdTViNjlcdTZkNzdcdTZjMjZcdTRlYTVcdTViYjNcdTlhODdcdTkxNjNcdTYxYThcdTkwYWZcdTk3ZTlcdTU0MmJcdTZkYjVcdTViZDJcdTUxZmRcdTU1OGFcdTdmNTVcdTdmZjBcdTY0YmNcdTYzNGRcdTY1ZjFcdTYxYmVcdTYwOGRcdTcxMGFcdTZj''@;'; put 'put ''NTdcdTZjNDlcdTU5MmZcdTY3NmRcdTgyMmFcdTU4ZDVcdTU2OGVcdThjNmFcdTZiZWJcdTkwZGRcdTU5N2RcdTgwMTdcdTUzZjdcdTZkNjlcdTU0NzVcdTU1OWRcdTgzNzdcdTgzY2ZcdTY4MzhcdTc5YmVcdTU0OGNcdTRmNTVcdTU0MDhcdTc2ZDJcdThjODlcdTk2MDJcdTZjYjNcdTZkYjhc''@;'; put 'put ''dThkNmJcdTg5MTBcdTllNjRcdThkM2FcdTU2M2ZcdTllZDFcdTc1ZDVcdTVmODhcdTcyZTBcdTYwNjhcdTU0ZmNcdTRlYThcdTZhMmFcdTg4NjFcdTYwNTJcdThmNzBcdTU0YzRcdTcwZDhcdTg2NzlcdTllM2ZcdTZkMmFcdTViOGZcdTVmMThcdTdlYTJcdTU1ODlcdTRmYWZcdTczMzRcdTU0''@;'; put 'put ''M2NcdTUzOWFcdTUwMTlcdTU0MGVcdTU0N2NcdTRlNGVcdTVmZmRcdTc0NWFcdTU4ZjZcdTg0NmJcdTgwZTFcdTg3NzRcdTcyZDBcdTdjY2FcdTZlNTYiXSxbImJiNDAiLCJcdTdjNDMiLDksIlx1N2M0ZSIsMzYsIlx1N2M3NSIsNSwiXHU3YzdlIiw5XSxbImJiODAiLCJcdTdjODhcdTdjOGEi''@;'; put 'put ''LDYsIlx1N2M5M1x1N2M5NFx1N2M5Nlx1N2M5OVx1N2M5YVx1N2M5Ylx1N2NhMFx1N2NhMVx1N2NhM1x1N2NhNlx1N2NhN1x1N2NhOFx1N2NhOVx1N2NhYlx1N2NhY1x1N2NhZFx1N2NhZlx1N2NiMFx1N2NiNCIsNCwiXHU3Y2JhXHU3Y2JiXHU1ZjI3XHU4NjRlXHU1NTJjXHU2MmE0XHU0ZTky''@;'; put 'put ''XHU2Y2FhXHU2MjM3XHU4MmIxXHU1NGQ3XHU1MzRlXHU3MzNlXHU2ZWQxXHU3NTNiXHU1MjEyXHU1MzE2XHU4YmRkXHU2OWQwXHU1ZjhhXHU2MDAwXHU2ZGVlXHU1NzRmXHU2YjIyXHU3M2FmXHU2ODUzXHU4ZmQ4XHU3ZjEzXHU2MzYyXHU2MGEzXHU1NTI0XHU3NWVhXHU4YzYyXHU3MTE1XHU2''@;'; put 'put ''ZGEzXHU1YmE2XHU1ZTdiXHU4MzUyXHU2MTRjXHU5ZWM0XHU3OGZhXHU4NzU3XHU3YzI3XHU3Njg3XHU1MWYwXHU2MGY2XHU3MTRjXHU2NjQzXHU1ZTRjXHU2MDRkXHU4YzBlXHU3MDcwXHU2MzI1XHU4Zjg5XHU1ZmJkXHU2MDYyXHU4NmQ0XHU1NmRlXHU2YmMxXHU2MDk0XHU2MTY3XHU1MzQ5''@;'; put 'put ''XHU2MGUwXHU2NjY2XHU4ZDNmXHU3OWZkXHU0ZjFhXHU3MGU5XHU2YzQ3XHU4YmIzXHU4YmYyXHU3ZWQ4XHU4MzY0XHU2NjBmXHU1YTVhXHU5YjQyXHU2ZDUxXHU2ZGY3XHU4YzQxXHU2ZDNiXHU0ZjE5XHU3MDZiXHU4M2I3XHU2MjE2XHU2MGQxXHU5NzBkXHU4ZDI3XHU3OTc4XHU1MWZiXHU1''@;'; put 'put ''NzNlXHU1N2ZhXHU2NzNhXHU3NTc4XHU3YTNkXHU3OWVmXHU3Yjk1Il0sWyJiYzQwIiwiXHU3Y2JmXHU3Y2MwXHU3Y2MyXHU3Y2MzXHU3Y2M0XHU3Y2M2XHU3Y2M5XHU3Y2NiXHU3Y2NlIiw2LCJcdTdjZDhcdTdjZGFcdTdjZGJcdTdjZGRcdTdjZGVcdTdjZTEiLDYsIlx1N2NlOSIsNSwiXHU3''@;'; put 'put ''Y2YwIiw3LCJcdTdjZjlcdTdjZmFcdTdjZmMiLDEzLCJcdTdkMGIiLDVdLFsiYmM4MCIsIlx1N2QxMSIsMTQsIlx1N2QyMVx1N2QyM1x1N2QyNFx1N2QyNVx1N2QyNlx1N2QyOFx1N2QyOVx1N2QyYVx1N2QyY1x1N2QyZFx1N2QyZVx1N2QzMCIsNiwiXHU4MDhjXHU5OTY1XHU4ZmY5XHU2ZmMw''@;'; put 'put ''XHU4YmE1XHU5ZTIxXHU1OWVjXHU3ZWU5XHU3ZjA5XHU1NDA5XHU2NzgxXHU2OGQ4XHU4ZjkxXHU3YzRkXHU5NmM2XHU1M2NhXHU2MDI1XHU3NWJlXHU2YzcyXHU1MzczXHU1YWM5XHU3ZWE3XHU2MzI0XHU1MWUwXHU4MTBhXHU1ZGYxXHU4NGRmXHU2MjgwXHU1MTgwXHU1YjYzXHU0ZjBlXHU3''@;'; put 'put ''OTZkXHU1MjQyXHU2MGI4XHU2ZDRlXHU1YmM0XHU1YmMyXHU4YmExXHU4YmIwXHU2NWUyXHU1ZmNjXHU5NjQ1XHU1OTkzXHU3ZWU3XHU3ZWFhXHU1NjA5XHU2N2I3XHU1OTM5XHU0ZjczXHU1YmI2XHU1MmEwXHU4MzVhXHU5ODhhXHU4ZDNlXHU3NTMyXHU5NGJlXHU1MDQ3XHU3YTNjXHU0ZWY3''@;'; put 'put ''XHU2N2I2XHU5YTdlXHU1YWMxXHU2YjdjXHU3NmQxXHU1NzVhXHU1YzE2XHU3YjNhXHU5NWY0XHU3MTRlXHU1MTdjXHU4MGE5XHU4MjcwXHU1OTc4XHU3ZjA0XHU4MzI3XHU2OGMwXHU2N2VjXHU3OGIxXHU3ODc3XHU2MmUzXHU2MzYxXHU3YjgwXHU0ZmVkXHU1MjZhXHU1MWNmXHU4MzUwXHU2''@;'; put 'put ''OWRiXHU5Mjc0XHU4ZGY1XHU4ZDMxXHU4OWMxXHU5NTJlXHU3YmFkXHU0ZWY2Il0sWyJiZDQwIiwiXHU3ZDM3Iiw1NCwiXHU3ZDZmIiw3XSxbImJkODAiLCJcdTdkNzgiLDMyLCJcdTUwNjVcdTgyMzBcdTUyNTFcdTk5NmZcdTZlMTBcdTZlODVcdTZkYTdcdTVlZmFcdTUwZjVcdTU5ZGNcdTVj''@;'; put 'put ''MDZcdTZkNDZcdTZjNWZcdTc1ODZcdTg0OGJcdTY4NjhcdTU5NTZcdThiYjJcdTUzMjBcdTkxNzFcdTk2NGRcdTg1NDlcdTY5MTJcdTc5MDFcdTcxMjZcdTgwZjZcdTRlYTRcdTkwY2FcdTZkNDdcdTlhODRcdTVhMDdcdTU2YmNcdTY0MDVcdTk0ZjBcdTc3ZWJcdTRmYTVcdTgxMWFcdTcyZTFc''@;'; put 'put ''dTg5ZDJcdTk5N2FcdTdmMzRcdTdlZGVcdTUyN2ZcdTY1NTlcdTkxNzVcdThmN2ZcdThmODNcdTUzZWJcdTdhOTZcdTYzZWRcdTYzYTVcdTc2ODZcdTc5ZjhcdTg4NTdcdTk2MzZcdTYyMmFcdTUyYWJcdTgyODJcdTY4NTRcdTY3NzBcdTYzNzdcdTc3NmJcdTdhZWRcdTZkMDFcdTdlZDNcdTg5''@;'; put 'put ''ZTNcdTU5ZDBcdTYyMTJcdTg1YzlcdTgyYTVcdTc1NGNcdTUwMWZcdTRlY2JcdTc1YTVcdThiZWJcdTVjNGFcdTVkZmVcdTdiNGJcdTY1YTRcdTkxZDFcdTRlY2FcdTZkMjVcdTg5NWZcdTdkMjdcdTk1MjZcdTRlYzVcdThjMjhcdThmZGJcdTk3NzNcdTY2NGJcdTc5ODFcdThmZDFcdTcwZWNc''@;'; put 'put ''dTZkNzgiXSxbImJlNDAiLCJcdTdkOTkiLDEyLCJcdTdkYTciLDYsIlx1N2RhZiIsNDJdLFsiYmU4MCIsIlx1N2RkYSIsMzIsIlx1NWMzZFx1NTJiMlx1ODM0Nlx1NTE2Mlx1ODMwZVx1Nzc1Ylx1NjY3Nlx1OWNiOFx1NGVhY1x1NjBjYVx1N2NiZVx1N2NiM1x1N2VjZlx1NGU5NVx1OGI2Nlx1''@;'; put 'put ''NjY2Zlx1OTg4OFx1OTc1OVx1NTg4M1x1NjU2Y1x1OTU1Y1x1NWY4NFx1NzVjOVx1OTc1Nlx1N2FkZlx1N2FkZVx1NTFjMFx1NzBhZlx1N2E5OFx1NjNlYVx1N2E3Nlx1N2VhMFx1NzM5Nlx1OTdlZFx1NGU0NVx1NzA3OFx1NGU1ZFx1OTE1Mlx1NTNhOVx1NjU1MVx1NjVlN1x1ODFmY1x1ODIw''@;'; put 'put ''NVx1NTQ4ZVx1NWMzMVx1NzU5YVx1OTdhMFx1NjJkOFx1NzJkOVx1NzViZFx1NWM0NVx1OWE3OVx1ODNjYVx1NWM0MFx1NTQ4MFx1NzdlOVx1NGUzZVx1NmNhZVx1ODA1YVx1NjJkMlx1NjM2ZVx1NWRlOFx1NTE3N1x1OGRkZFx1OGUxZVx1OTUyZlx1NGZmMVx1NTNlNVx1NjBlN1x1NzBhY1x1''@;'; put 'put ''NTI2N1x1NjM1MFx1OWU0M1x1NWExZlx1NTAyNlx1NzczN1x1NTM3N1x1N2VlMlx1NjQ4NVx1NjUyYlx1NjI4OVx1NjM5OFx1NTAxNFx1NzIzNVx1ODljOVx1NTFiM1x1OGJjMFx1N2VkZFx1NTc0N1x1ODNjY1x1OTRhN1x1NTE5Ylx1NTQxYlx1NWNmYiJdLFsiYmY0MCIsIlx1N2RmYiIsNjJd''@;'; put 'put ''LFsiYmY4MCIsIlx1N2UzYVx1N2UzYyIsNCwiXHU3ZTQyIiw0LCJcdTdlNDgiLDIxLCJcdTRmY2FcdTdhZTNcdTZkNWFcdTkwZTFcdTlhOGZcdTU1ODBcdTU0OTZcdTUzNjFcdTU0YWZcdTVmMDBcdTYzZTlcdTY5NzdcdTUxZWZcdTYxNjhcdTUyMGFcdTU4MmFcdTUyZDhcdTU3NGVcdTc4MGRc''@;'; put 'put ''dTc3MGJcdTVlYjdcdTYxNzdcdTdjZTBcdTYyNWJcdTYyOTdcdTRlYTJcdTcwOTVcdTgwMDNcdTYyZjdcdTcwZTRcdTk3NjBcdTU3NzdcdTgyZGJcdTY3ZWZcdTY4ZjVcdTc4ZDVcdTk4OTdcdTc5ZDFcdTU4ZjNcdTU0YjNcdTUzZWZcdTZlMzRcdTUxNGJcdTUyM2JcdTViYTJcdThiZmVcdTgw''@;'; put 'put ''YWZcdTU1NDNcdTU3YTZcdTYwNzNcdTU3NTFcdTU0MmRcdTdhN2FcdTYwNTBcdTViNTRcdTYzYTdcdTYyYTBcdTUzZTNcdTYyNjNcdTViYzdcdTY3YWZcdTU0ZWRcdTdhOWZcdTgyZTZcdTkxNzdcdTVlOTNcdTg4ZTRcdTU5MzhcdTU3YWVcdTYzMGVcdThkZThcdTgwZWZcdTU3NTdcdTdiNzdc''@;'; put 'put ''dTRmYTlcdTVmZWJcdTViYmRcdTZiM2VcdTUzMjFcdTdiNTBcdTcyYzJcdTY4NDZcdTc3ZmZcdTc3MzZcdTY1ZjdcdTUxYjVcdTRlOGZcdTc2ZDRcdTVjYmZcdTdhYTVcdTg0NzVcdTU5NGVcdTliNDFcdTUwODAiXSxbImMwNDAiLCJcdTdlNWUiLDM1LCJcdTdlODMiLDIzLCJcdTdlOWNcdTdl''@;'; put 'put ''OWRcdTdlOWUiXSxbImMwODAiLCJcdTdlYWVcdTdlYjRcdTdlYmJcdTdlYmNcdTdlZDZcdTdlZTRcdTdlZWNcdTdlZjlcdTdmMGFcdTdmMTBcdTdmMWVcdTdmMzdcdTdmMzlcdTdmM2IiLDYsIlx1N2Y0M1x1N2Y0NiIsOSwiXHU3ZjUyXHU3ZjUzXHU5OTg4XHU2MTI3XHU2ZTgzXHU1NzY0XHU2''@;'; put 'put ''NjA2XHU2MzQ2XHU1NmYwXHU2MmVjXHU2MjY5XHU1ZWQzXHU5NjE0XHU1NzgzXHU2MmM5XHU1NTg3XHU4NzIxXHU4MTRhXHU4ZmEzXHU1NTY2XHU4M2IxXHU2NzY1XHU4ZDU2XHU4NGRkXHU1YTZhXHU2ODBmXHU2MmU2XHU3YmVlXHU5NjExXHU1MTcwXHU2ZjljXHU4YzMwXHU2M2ZkXHU4OWM4''@;'; put 'put ''XHU2MWQyXHU3ZjA2XHU3MGMyXHU2ZWU1XHU3NDA1XHU2OTk0XHU3MmZjXHU1ZWNhXHU5MGNlXHU2NzE3XHU2ZDZhXHU2MzVlXHU1MmIzXHU3MjYyXHU4MDAxXHU0ZjZjXHU1OWU1XHU5MTZhXHU3MGQ5XHU2ZDlkXHU1MmQyXHU0ZTUwXHU5NmY3XHU5NTZkXHU4NTdlXHU3OGNhXHU3ZDJmXHU1''@;'; put 'put ''MTIxXHU1NzkyXHU2NGMyXHU4MDhiXHU3YzdiXHU2Y2VhXHU2OGYxXHU2OTVlXHU1MWI3XHU1Mzk4XHU2OGE4XHU3MjgxXHU5ZWNlXHU3YmYxXHU3MmY4XHU3OWJiXHU2ZjEzXHU3NDA2XHU2NzRlXHU5MWNjXHU5Y2E0XHU3OTNjXHU4Mzg5XHU4MzU0XHU1NDBmXHU2ODE3XHU0ZTNkXHU1Mzg5''@;'; put 'put ''XHU1MmIxXHU3ODNlXHU1Mzg2XHU1MjI5XHU1MDg4XHU0ZjhiXHU0ZmQwIl0sWyJjMTQwIiwiXHU3ZjU2XHU3ZjU5XHU3ZjViXHU3ZjVjXHU3ZjVkXHU3ZjVlXHU3ZjYwXHU3ZjYzIiw0LCJcdTdmNmJcdTdmNmNcdTdmNmRcdTdmNmZcdTdmNzBcdTdmNzNcdTdmNzVcdTdmNzZcdTdmNzdcdTdm''@;'; put 'put ''NzhcdTdmN2FcdTdmN2JcdTdmN2NcdTdmN2RcdTdmN2ZcdTdmODBcdTdmODIiLDcsIlx1N2Y4Ylx1N2Y4ZFx1N2Y4ZiIsNCwiXHU3Zjk1Iiw0LCJcdTdmOWJcdTdmOWNcdTdmYTBcdTdmYTJcdTdmYTNcdTdmYTVcdTdmYTZcdTdmYTgiLDYsIlx1N2ZiMSJdLFsiYzE4MCIsIlx1N2ZiMyIsNCwi''@;'; put 'put ''XHU3ZmJhXHU3ZmJiXHU3ZmJlXHU3ZmMwXHU3ZmMyXHU3ZmMzXHU3ZmM0XHU3ZmM2XHU3ZmM3XHU3ZmM4XHU3ZmM5XHU3ZmNiXHU3ZmNkXHU3ZmNmIiw0LCJcdTdmZDZcdTdmZDdcdTdmZDkiLDUsIlx1N2ZlMlx1N2ZlM1x1NzVlMlx1N2FjYlx1N2M5Mlx1NmNhNVx1OTZiNlx1NTI5Ylx1NzQ4''@;'; put 'put ''M1x1NTRlOVx1NGZlOVx1ODA1NFx1ODNiMlx1OGZkZVx1OTU3MFx1NWVjOVx1NjAxY1x1NmQ5Zlx1NWUxOFx1NjU1Ylx1ODEzOFx1OTRmZVx1NjA0Ylx1NzBiY1x1N2VjM1x1N2NhZVx1NTFjOVx1Njg4MVx1N2NiMVx1ODI2Zlx1NGUyNFx1OGY4Nlx1OTFjZlx1NjY3ZVx1NGVhZVx1OGMwNVx1''@;'; put 'put ''NjRhOVx1ODA0YVx1NTBkYVx1NzU5N1x1NzFjZVx1NWJlNVx1OGZiZFx1NmY2Nlx1NGU4Nlx1NjQ4Mlx1OTU2M1x1NWVkNlx1NjU5OVx1NTIxN1x1ODhjMlx1NzBjOFx1NTJhM1x1NzMwZVx1NzQzM1x1Njc5N1x1NzhmN1x1OTcxNlx1NGUzNFx1OTBiYlx1OWNkZVx1NmRjYlx1NTFkYlx1OGQ0''@;'; put 'put ''MVx1NTQxZFx1NjJjZVx1NzNiMlx1ODNmMVx1OTZmNlx1OWY4NFx1OTRjM1x1NGYzNlx1N2Y5YVx1NTFjY1x1NzA3NVx1OTY3NVx1NWNhZFx1OTg4Nlx1NTNlNlx1NGVlNFx1NmU5Y1x1NzQwOVx1NjliNFx1Nzg2Ylx1OTk4Zlx1NzU1OVx1NTIxOFx1NzYyNFx1NmQ0MVx1NjdmM1x1NTE2ZFx1''@;'; put 'put ''OWY5OVx1ODA0Ylx1NTQ5OVx1N2IzY1x1N2FiZiJdLFsiYzI0MCIsIlx1N2ZlNFx1N2ZlN1x1N2ZlOFx1N2ZlYVx1N2ZlYlx1N2ZlY1x1N2ZlZFx1N2ZlZlx1N2ZmMlx1N2ZmNCIsNiwiXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDAyXHU4MDA3XHU4MDA4XHU4MDA5XHU4MDBhXHU4MDBlXHU4MDBm''@;'; put 'put ''XHU4MDExXHU4MDEzXHU4MDFhXHU4MDFiXHU4MDFkXHU4MDFlXHU4MDFmXHU4MDIxXHU4MDIzXHU4MDI0XHU4MDJiIiw1LCJcdTgwMzJcdTgwMzRcdTgwMzlcdTgwM2FcdTgwM2NcdTgwM2VcdTgwNDBcdTgwNDFcdTgwNDRcdTgwNDVcdTgwNDdcdTgwNDhcdTgwNDlcdTgwNGVcdTgwNGZcdTgw''@;'; put 'put ''NTBcdTgwNTFcdTgwNTNcdTgwNTVcdTgwNTZcdTgwNTciXSxbImMyODAiLCJcdTgwNTlcdTgwNWIiLDEzLCJcdTgwNmIiLDUsIlx1ODA3MiIsMTEsIlx1OTY4Nlx1NTc4NFx1NjJlMlx1OTY0N1x1Njk3Y1x1NWEwNFx1NjQwMlx1N2JkM1x1NmYwZlx1OTY0Ylx1ODJhNlx1NTM2Mlx1OTg4NVx1''@;'; put 'put ''NWU5MFx1NzA4OVx1NjNiM1x1NTM2NFx1ODY0Zlx1OWM4MVx1OWU5M1x1Nzg4Y1x1OTczMlx1OGRlZlx1OGQ0Mlx1OWU3Zlx1NmY1ZVx1Nzk4NFx1NWY1NVx1OTY0Nlx1NjIyZVx1OWE3NFx1NTQxNVx1OTRkZFx1NGZhM1x1NjVjNVx1NWM2NVx1NWM2MVx1N2YxNVx1ODY1MVx1NmMyZlx1NWY4''@;'; put 'put ''Ylx1NzM4N1x1NmVlNFx1N2VmZlx1NWNlNlx1NjMxYlx1NWI2YVx1NmVlNlx1NTM3NVx1NGU3MVx1NjNhMFx1NzU2NVx1NjJhMVx1OGY2ZVx1NGYyNlx1NGVkMVx1NmNhNlx1N2ViNlx1OGJiYVx1ODQxZFx1ODdiYVx1N2Y1N1x1OTAzYlx1OTUyM1x1N2JhOVx1OWFhMVx1ODhmOFx1ODQzZFx1''@;'; put 'put ''NmQxYlx1OWE4Nlx1N2VkY1x1NTk4OFx1OWViYlx1NzM5Ylx1NzgwMVx1ODY4Mlx1OWE2Y1x1OWE4Mlx1NTYxYlx1NTQxN1x1NTdjYlx1NGU3MFx1OWVhNlx1NTM1Nlx1OGZjOFx1ODEwOVx1Nzc5Mlx1OTk5Mlx1ODZlZVx1NmVlMVx1ODUxM1x1NjZmY1x1NjE2Mlx1NmYyYiJdLFsiYzM0MCIs''@;'; put 'put ''Ilx1ODA3ZVx1ODA4MVx1ODA4Mlx1ODA4NVx1ODA4OFx1ODA4YVx1ODA4ZCIsNSwiXHU4MDk0XHU4MDk1XHU4MDk3XHU4MDk5XHU4MDllXHU4MGEzXHU4MGE2XHU4MGE3XHU4MGE4XHU4MGFjXHU4MGIwXHU4MGIzXHU4MGI1XHU4MGI2XHU4MGI4XHU4MGI5XHU4MGJiXHU4MGM1XHU4MGM3Iiw0''@;'; put 'put ''LCJcdTgwY2YiLDYsIlx1ODBkOFx1ODBkZlx1ODBlMFx1ODBlMlx1ODBlM1x1ODBlNlx1ODBlZVx1ODBmNVx1ODBmN1x1ODBmOVx1ODBmYlx1ODBmZVx1ODBmZlx1ODEwMFx1ODEwMVx1ODEwM1x1ODEwNFx1ODEwNVx1ODEwN1x1ODEwOFx1ODEwYiJdLFsiYzM4MCIsIlx1ODEwY1x1ODExNVx1''@;'; put 'put ''ODExN1x1ODExOVx1ODExYlx1ODExY1x1ODExZFx1ODExZiIsMTIsIlx1ODEyZFx1ODEyZVx1ODEzMFx1ODEzM1x1ODEzNFx1ODEzNVx1ODEzN1x1ODEzOSIsNCwiXHU4MTNmXHU4YzI5XHU4MjkyXHU4MzJiXHU3NmYyXHU2YzEzXHU1ZmQ5XHU4M2JkXHU3MzJiXHU4MzA1XHU5NTFhXHU2YmRi''@;'; put 'put ''XHU3N2RiXHU5NGM2XHU1MzZmXHU4MzAyXHU1MTkyXHU1ZTNkXHU4YzhjXHU4ZDM4XHU0ZTQ4XHU3M2FiXHU2NzlhXHU2ODg1XHU5MTc2XHU5NzA5XHU3MTY0XHU2Y2ExXHU3NzA5XHU1YTkyXHU5NTQxXHU2YmNmXHU3ZjhlXHU2NjI3XHU1YmQwXHU1OWI5XHU1YTlhXHU5NWU4XHU5NWY3XHU0''@;'; put 'put ''ZWVjXHU4NDBjXHU4NDk5XHU2YWFjXHU3NmRmXHU5NTMwXHU3MzFiXHU2OGE2XHU1YjVmXHU3NzJmXHU5MTlhXHU5NzYxXHU3Y2RjXHU4ZmY3XHU4YzFjXHU1ZjI1XHU3YzczXHU3OWQ4XHU4OWM1XHU2Y2NjXHU4NzFjXHU1YmM2XHU1ZTQyXHU2OGM5XHU3NzIwXHU3ZWY1XHU1MTk1XHU1MTRk''@;'; put 'put ''XHU1MmM5XHU1YTI5XHU3ZjA1XHU5NzYyXHU4MmQ3XHU2M2NmXHU3Nzg0XHU4NWQwXHU3OWQyXHU2ZTNhXHU1ZTk5XHU1OTk5XHU4NTExXHU3MDZkXHU2YzExXHU2MmJmXHU3NmJmXHU2NTRmXHU2MGFmXHU5NWZkXHU2NjBlXHU4NzlmXHU5ZTIzXHU5NGVkXHU1NDBkXHU1NDdkXHU4YzJjXHU2''@;'; put 'put ''NDc4Il0sWyJjNDQwIiwiXHU4MTQwIiw1LCJcdTgxNDdcdTgxNDlcdTgxNGRcdTgxNGVcdTgxNGZcdTgxNTJcdTgxNTZcdTgxNTdcdTgxNThcdTgxNWIiLDQsIlx1ODE2MVx1ODE2Mlx1ODE2M1x1ODE2NFx1ODE2Nlx1ODE2OFx1ODE2YVx1ODE2Ylx1ODE2Y1x1ODE2Zlx1ODE3Mlx1ODE3M1x1''@;'; put 'put ''ODE3NVx1ODE3Nlx1ODE3N1x1ODE3OFx1ODE4MVx1ODE4MyIsNCwiXHU4MTg5XHU4MThiXHU4MThjXHU4MThkXHU4MThlXHU4MTkwXHU4MTkyIiw1LCJcdTgxOTlcdTgxOWFcdTgxOWUiLDQsIlx1ODFhNFx1ODFhNSJdLFsiYzQ4MCIsIlx1ODFhN1x1ODFhOVx1ODFhYiIsNywiXHU4MWI0Iiw1''@;'; put 'put ''LCJcdTgxYmNcdTgxYmRcdTgxYmVcdTgxYmZcdTgxYzRcdTgxYzVcdTgxYzdcdTgxYzhcdTgxYzlcdTgxY2JcdTgxY2QiLDYsIlx1NjQ3OVx1ODYxMVx1NmEyMVx1ODE5Y1x1NzhlOFx1NjQ2OVx1OWI1NFx1NjJiOVx1NjcyYlx1ODNhYlx1NThhOFx1OWVkOFx1NmNhYlx1NmYyMFx1NWJkZVx1''@;'; put 'put ''OTY0Y1x1OGMwYlx1NzI1Zlx1NjdkMFx1NjJjN1x1NzI2MVx1NGVhOVx1NTljNlx1NmJjZFx1NTg5M1x1NjZhZVx1NWU1NVx1NTJkZlx1NjE1NVx1NjcyOFx1NzZlZVx1Nzc2Nlx1NzI2N1x1N2E0Nlx1NjJmZlx1NTRlYVx1NTQ1MFx1OTRhMFx1OTBhM1x1NWExY1x1N2ViM1x1NmMxNlx1NGU0''@;'; put 'put ''M1x1NTk3Nlx1ODAxMFx1NTk0OFx1NTM1N1x1NzUzN1x1OTZiZVx1NTZjYVx1NjMyMFx1ODExMVx1NjA3Y1x1OTVmOVx1NmRkNlx1NTQ2Mlx1OTk4MVx1NTE4NVx1NWFlOVx1ODBmZFx1NTlhZVx1OTcxM1x1NTAyYVx1NmNlNVx1NWMzY1x1NjJkZlx1NGY2MFx1NTMzZlx1ODE3Ylx1OTAwNlx1''@;'; put 'put ''NmViYVx1ODUyYlx1NjJjOFx1NWU3NFx1NzhiZVx1NjRiNVx1NjM3Ylx1NWZmNVx1NWExOFx1OTE3Zlx1OWUxZlx1NWMzZlx1NjM0Zlx1ODA0Mlx1NWI3ZFx1NTU2ZVx1OTU0YVx1OTU0ZFx1NmQ4NVx1NjBhOFx1NjdlMFx1NzJkZVx1NTFkZFx1NWI4MSJdLFsiYzU0MCIsIlx1ODFkNCIsMTQs''@;'; put 'put ''Ilx1ODFlNFx1ODFlNVx1ODFlNlx1ODFlOFx1ODFlOVx1ODFlYlx1ODFlZSIsNCwiXHU4MWY1Iiw1LCJcdTgxZmRcdTgxZmZcdTgyMDNcdTgyMDciLDQsIlx1ODIwZVx1ODIwZlx1ODIxMVx1ODIxM1x1ODIxNSIsNSwiXHU4MjFkXHU4MjIwXHU4MjI0XHU4MjI1XHU4MjI2XHU4MjI3XHU4MjI5''@;'; put 'put ''XHU4MjJlXHU4MjMyXHU4MjNhXHU4MjNjXHU4MjNkXHU4MjNmIl0sWyJjNTgwIiwiXHU4MjQwXHU4MjQxXHU4MjQyXHU4MjQzXHU4MjQ1XHU4MjQ2XHU4MjQ4XHU4MjRhXHU4MjRjXHU4MjRkXHU4MjRlXHU4MjUwIiw3LCJcdTgyNTlcdTgyNWJcdTgyNWNcdTgyNWRcdTgyNWVcdTgyNjAiLDcs''@;'; put 'put ''Ilx1ODI2OVx1NjJlN1x1NmNkZVx1NzI1Ylx1NjI2ZFx1OTRhZVx1N2ViZFx1ODExM1x1NmQ1M1x1NTE5Y1x1NWYwNFx1NTk3NFx1NTJhYVx1NjAxMlx1NTk3M1x1NjY5Nlx1ODY1MFx1NzU5Zlx1NjMyYVx1NjFlNlx1N2NlZlx1OGJmYVx1NTRlNlx1NmIyN1x1OWUyNVx1NmJiNFx1ODVkNVx1''@;'; put 'put ''NTQ1NVx1NTA3Nlx1NmNhNFx1NTU2YVx1OGRiNFx1NzIyY1x1NWUxNVx1NjAxNVx1NzQzNlx1NjJjZFx1NjM5Mlx1NzI0Y1x1NWY5OFx1NmU0M1x1NmQzZVx1NjUwMFx1NmY1OFx1NzZkOFx1NzhkMFx1NzZmY1x1NzU1NFx1NTIyNFx1NTNkYlx1NGU1M1x1NWU5ZVx1NjVjMVx1ODAyYVx1ODBk''@;'; put 'put ''Nlx1NjI5Ylx1NTQ4Nlx1NTIyOFx1NzBhZVx1ODg4ZFx1OGRkMVx1NmNlMVx1NTQ3OFx1ODBkYVx1NTdmOVx1ODhmNFx1OGQ1NFx1OTY2YVx1OTE0ZFx1NGY2OVx1NmM5Ylx1NTViN1x1NzZjNlx1NzgzMFx1NjJhOFx1NzBmOVx1NmY4ZVx1NWY2ZFx1ODRlY1x1NjhkYVx1Nzg3Y1x1N2JmN1x1''@;'; put 'put ''ODFhOFx1NjcwYlx1OWU0Zlx1NjM2N1x1NzhiMFx1NTc2Zlx1NzgxMlx1OTczOVx1NjI3OVx1NjJhYlx1NTI4OFx1NzQzNVx1NmJkNyJdLFsiYzY0MCIsIlx1ODI2YVx1ODI2Ylx1ODI2Y1x1ODI2ZFx1ODI3MVx1ODI3NVx1ODI3Nlx1ODI3N1x1ODI3OFx1ODI3Ylx1ODI3Y1x1ODI4MFx1ODI4''@;'; put 'put ''MVx1ODI4M1x1ODI4NVx1ODI4Nlx1ODI4N1x1ODI4OVx1ODI4Y1x1ODI5MFx1ODI5M1x1ODI5NFx1ODI5NVx1ODI5Nlx1ODI5YVx1ODI5Ylx1ODI5ZVx1ODJhMFx1ODJhMlx1ODJhM1x1ODJhN1x1ODJiMlx1ODJiNVx1ODJiNlx1ODJiYVx1ODJiYlx1ODJiY1x1ODJiZlx1ODJjMFx1ODJjMlx1''@;'; put 'put ''ODJjM1x1ODJjNVx1ODJjNlx1ODJjOVx1ODJkMFx1ODJkNlx1ODJkOVx1ODJkYVx1ODJkZFx1ODJlMlx1ODJlN1x1ODJlOFx1ODJlOVx1ODJlYVx1ODJlY1x1ODJlZFx1ODJlZVx1ODJmMFx1ODJmMlx1ODJmM1x1ODJmNVx1ODJmNlx1ODJmOCJdLFsiYzY4MCIsIlx1ODJmYVx1ODJmYyIsNCwi''@;'; put 'put ''XHU4MzBhXHU4MzBiXHU4MzBkXHU4MzEwXHU4MzEyXHU4MzEzXHU4MzE2XHU4MzE4XHU4MzE5XHU4MzFkIiw5LCJcdTgzMjlcdTgzMmFcdTgzMmVcdTgzMzBcdTgzMzJcdTgzMzdcdTgzM2JcdTgzM2RcdTU1NjRcdTgxM2VcdTc1YjJcdTc2YWVcdTUzMzlcdTc1ZGVcdTUwZmJcdTVjNDFcdThi''@;'; put 'put ''NmNcdTdiYzdcdTUwNGZcdTcyNDdcdTlhOTdcdTk4ZDhcdTZmMDJcdTc0ZTJcdTc5NjhcdTY0ODdcdTc3YTVcdTYyZmNcdTk4OTFcdThkMmJcdTU0YzFcdTgwNThcdTRlNTJcdTU3NmFcdTgyZjlcdTg0MGRcdTVlNzNcdTUxZWRcdTc0ZjZcdThiYzRcdTVjNGZcdTU3NjFcdTZjZmNcdTk4ODdc''@;'; put 'put ''dTVhNDZcdTc4MzRcdTliNDRcdThmZWJcdTdjOTVcdTUyNTZcdTYyNTFcdTk0ZmFcdTRlYzZcdTgzODZcdTg0NjFcdTgzZTlcdTg0YjJcdTU3ZDRcdTY3MzRcdTU3MDNcdTY2NmVcdTZkNjZcdThjMzFcdTY2ZGRcdTcwMTFcdTY3MWZcdTZiM2FcdTY4MTZcdTYyMWFcdTU5YmJcdTRlMDNcdTUx''@;'; put 'put ''YzRcdTZmMDZcdTY3ZDJcdTZjOGZcdTUxNzZcdTY4Y2JcdTU5NDdcdTZiNjdcdTc1NjZcdTVkMGVcdTgxMTBcdTlmNTBcdTY1ZDdcdTc5NDhcdTc5NDFcdTlhOTFcdThkNzdcdTVjODJcdTRlNWVcdTRmMDFcdTU0MmZcdTU5NTFcdTc4MGNcdTU2NjhcdTZjMTRcdThmYzRcdTVmMDNcdTZjN2Rc''@;'; put 'put ''dTZjZTNcdThiYWJcdTYzOTAiXSxbImM3NDAiLCJcdTgzM2VcdTgzM2ZcdTgzNDFcdTgzNDJcdTgzNDRcdTgzNDVcdTgzNDhcdTgzNGEiLDQsIlx1ODM1M1x1ODM1NSIsNCwiXHU4MzVkXHU4MzYyXHU4MzcwIiw2LCJcdTgzNzlcdTgzN2FcdTgzN2UiLDYsIlx1ODM4N1x1ODM4OFx1ODM4YVx1''@;'; put 'put ''ODM4Ylx1ODM4Y1x1ODM4ZFx1ODM4Zlx1ODM5MFx1ODM5MVx1ODM5NFx1ODM5NVx1ODM5Nlx1ODM5N1x1ODM5OVx1ODM5YVx1ODM5ZFx1ODM5Zlx1ODNhMSIsNiwiXHU4M2FjXHU4M2FkXHU4M2FlIl0sWyJjNzgwIiwiXHU4M2FmXHU4M2I1XHU4M2JiXHU4M2JlXHU4M2JmXHU4M2MyXHU4M2Mz''@;'; put 'put ''XHU4M2M0XHU4M2M2XHU4M2M4XHU4M2M5XHU4M2NiXHU4M2NkXHU4M2NlXHU4M2QwXHU4M2QxXHU4M2QyXHU4M2QzXHU4M2Q1XHU4M2Q3XHU4M2Q5XHU4M2RhXHU4M2RiXHU4M2RlXHU4M2UyXHU4M2UzXHU4M2U0XHU4M2U2XHU4M2U3XHU4M2U4XHU4M2ViXHU4M2VjXHU4M2VkXHU2MDcwXHU2''@;'; put 'put ''ZDNkXHU3Mjc1XHU2MjY2XHU5NDhlXHU5NGM1XHU1MzQzXHU4ZmMxXHU3YjdlXHU0ZWRmXHU4YzI2XHU0ZTdlXHU5ZWQ0XHU5NGIxXHU5NGIzXHU1MjRkXHU2ZjVjXHU5MDYzXHU2ZDQ1XHU4YzM0XHU1ODExXHU1ZDRjXHU2YjIwXHU2YjQ5XHU2N2FhXHU1NDViXHU4MTU0XHU3ZjhjXHU1ODk5''@;'; put 'put ''XHU4NTM3XHU1ZjNhXHU2MmEyXHU2YTQ3XHU5NTM5XHU2NTcyXHU2MDg0XHU2ODY1XHU3N2E3XHU0ZTU0XHU0ZmE4XHU1ZGU3XHU5Nzk4XHU2NGFjXHU3ZmQ4XHU1Y2VkXHU0ZmNmXHU3YThkXHU1MjA3XHU4MzA0XHU0ZTE0XHU2MDJmXHU3YTgzXHU5NGE2XHU0ZmI1XHU0ZWIyXHU3OWU2XHU3''@;'; put 'put ''NDM0XHU1MmU0XHU4MmI5XHU2NGQyXHU3OWJkXHU1YmRkXHU2YzgxXHU5NzUyXHU4ZjdiXHU2YzIyXHU1MDNlXHU1MzdmXHU2ZTA1XHU2NGNlXHU2Njc0XHU2YzMwXHU2MGM1XHU5ODc3XHU4YmY3XHU1ZTg2XHU3NDNjXHU3YTc3XHU3OWNiXHU0ZTE4XHU5MGIxXHU3NDAzXHU2YzQyXHU1NmRh''@;'; put 'put ''XHU5MTRiXHU2Y2M1XHU4ZDhiXHU1MzNhXHU4NmM2XHU2NmYyXHU4ZWFmXHU1YzQ4XHU5YTcxXHU2ZTIwIl0sWyJjODQwIiwiXHU4M2VlXHU4M2VmXHU4M2YzIiw0LCJcdTgzZmFcdTgzZmJcdTgzZmNcdTgzZmVcdTgzZmZcdTg0MDBcdTg0MDJcdTg0MDVcdTg0MDdcdTg0MDhcdTg0MDlcdTg0''@;'; put 'put ''MGFcdTg0MTBcdTg0MTIiLDUsIlx1ODQxOVx1ODQxYVx1ODQxYlx1ODQxZSIsNSwiXHU4NDI5Iiw3LCJcdTg0MzIiLDUsIlx1ODQzOVx1ODQzYVx1ODQzYlx1ODQzZSIsNywiXHU4NDQ3XHU4NDQ4XHU4NDQ5Il0sWyJjODgwIiwiXHU4NDRhIiw2LCJcdTg0NTIiLDQsIlx1ODQ1OFx1ODQ1ZFx1''@;'; put 'put ''ODQ1ZVx1ODQ1Zlx1ODQ2MFx1ODQ2Mlx1ODQ2NCIsNCwiXHU4NDZhXHU4NDZlXHU4NDZmXHU4NDcwXHU4NDcyXHU4NDc0XHU4NDc3XHU4NDc5XHU4NDdiXHU4NDdjXHU1M2Q2XHU1YTM2XHU5ZjhiXHU4ZGEzXHU1M2JiXHU1NzA4XHU5OGE3XHU2NzQzXHU5MTliXHU2Y2M5XHU1MTY4XHU3NWNh''@;'; put 'put ''XHU2MmYzXHU3MmFjXHU1MjM4XHU1MjlkXHU3ZjNhXHU3MDk0XHU3NjM4XHU1Mzc0XHU5ZTRhXHU2OWI3XHU3ODZlXHU5NmMwXHU4OGQ5XHU3ZmE0XHU3MTM2XHU3MWMzXHU1MTg5XHU2N2QzXHU3NGU0XHU1OGU0XHU2NTE4XHU1NmI3XHU4YmE5XHU5OTc2XHU2MjcwXHU3ZWQ1XHU2MGY5XHU3''@;'; put 'put ''MGVkXHU1OGVjXHU0ZWMxXHU0ZWJhXHU1ZmNkXHU5N2U3XHU0ZWZiXHU4YmE0XHU1MjAzXHU1OThhXHU3ZWFiXHU2MjU0XHU0ZWNkXHU2NWU1XHU2MjBlXHU4MzM4XHU4NGM5XHU4MzYzXHU4NzhkXHU3MTk0XHU2ZWI2XHU1YmI5XHU3ZWQyXHU1MTk3XHU2M2M5XHU2N2Q0XHU4MDg5XHU4MzM5''@;'; put 'put ''XHU4ODE1XHU1MTEyXHU1YjdhXHU1OTgyXHU4ZmIxXHU0ZTczXHU2YzVkXHU1MTY1XHU4OTI1XHU4ZjZmXHU5NjJlXHU4NTRhXHU3NDVlXHU5NTEwXHU5NWYwXHU2ZGE2XHU4MmU1XHU1ZjMxXHU2NDkyXHU2ZDEyXHU4NDI4XHU4MTZlXHU5Y2MzXHU1ODVlXHU4ZDViXHU0ZTA5XHU1M2MxIl0s''@;'; put 'put ''WyJjOTQwIiwiXHU4NDdkIiw0LCJcdTg0ODNcdTg0ODRcdTg0ODVcdTg0ODZcdTg0OGFcdTg0OGRcdTg0OGYiLDcsIlx1ODQ5OFx1ODQ5YVx1ODQ5Ylx1ODQ5ZFx1ODQ5ZVx1ODQ5Zlx1ODRhMFx1ODRhMiIsMTIsIlx1ODRiMFx1ODRiMVx1ODRiM1x1ODRiNVx1ODRiNlx1ODRiN1x1ODRiYlx1''@;'; put 'put ''ODRiY1x1ODRiZVx1ODRjMFx1ODRjMlx1ODRjM1x1ODRjNVx1ODRjNlx1ODRjN1x1ODRjOFx1ODRjYlx1ODRjY1x1ODRjZVx1ODRjZlx1ODRkMlx1ODRkNFx1ODRkNVx1ODRkNyJdLFsiYzk4MCIsIlx1ODRkOCIsNCwiXHU4NGRlXHU4NGUxXHU4NGUyXHU4NGU0XHU4NGU3Iiw0LCJcdTg0ZWRc''@;'; put 'put ''dTg0ZWVcdTg0ZWZcdTg0ZjEiLDEwLCJcdTg0ZmRcdTg0ZmVcdTg1MDBcdTg1MDFcdTg1MDJcdTRmMWVcdTY1NjNcdTY4NTFcdTU1ZDNcdTRlMjdcdTY0MTRcdTlhOWFcdTYyNmJcdTVhYzJcdTc0NWZcdTgyNzJcdTZkYTlcdTY4ZWVcdTUwZTdcdTgzOGVcdTc4MDJcdTY3NDBcdTUyMzlcdTZj''@;'; put 'put ''OTlcdTdlYjFcdTUwYmJcdTU1NjVcdTcxNWVcdTdiNWJcdTY2NTJcdTczY2FcdTgyZWJcdTY3NDlcdTVjNzFcdTUyMjBcdTcxN2RcdTg4NmJcdTk1ZWFcdTk2NTVcdTY0YzVcdThkNjFcdTgxYjNcdTU1ODRcdTZjNTVcdTYyNDdcdTdmMmVcdTU4OTJcdTRmMjRcdTU1NDZcdThkNGZcdTY2NGNc''@;'; put 'put ''dTRlMGFcdTVjMWFcdTg4ZjNcdTY4YTJcdTYzNGVcdTdhMGRcdTcwZTdcdTgyOGRcdTUyZmFcdTk3ZjZcdTVjMTFcdTU0ZThcdTkwYjVcdTdlY2RcdTU5NjJcdThkNGFcdTg2YzdcdTgyMGNcdTgyMGRcdThkNjZcdTY0NDRcdTVjMDRcdTYxNTFcdTZkODlcdTc5M2VcdThiYmVcdTc4MzdcdTc1''@;'; put 'put ''MzNcdTU0N2JcdTRmMzhcdThlYWJcdTZkZjFcdTVhMjBcdTdlYzVcdTc5NWVcdTZjODhcdTViYTFcdTVhNzZcdTc1MWFcdTgwYmVcdTYxNGVcdTZlMTdcdTU4ZjBcdTc1MWZcdTc1MjVcdTcyNzJcdTUzNDdcdTdlZjMiXSxbImNhNDAiLCJcdTg1MDMiLDgsIlx1ODUwZFx1ODUwZVx1ODUwZlx1''@;'; put 'put ''ODUxMFx1ODUxMlx1ODUxNFx1ODUxNVx1ODUxNlx1ODUxOFx1ODUxOVx1ODUxYlx1ODUxY1x1ODUxZFx1ODUxZVx1ODUyMFx1ODUyMiIsOCwiXHU4NTJkIiw5LCJcdTg1M2UiLDQsIlx1ODU0NFx1ODU0NVx1ODU0Nlx1ODU0N1x1ODU0YiIsMTBdLFsiY2E4MCIsIlx1ODU1N1x1ODU1OFx1ODU1''@;'; put 'put ''YVx1ODU1Ylx1ODU1Y1x1ODU1ZFx1ODU1ZiIsNCwiXHU4NTY1XHU4NTY2XHU4NTY3XHU4NTY5Iiw4LCJcdTg1NzNcdTg1NzVcdTg1NzZcdTg1NzdcdTg1NzhcdTg1N2NcdTg1N2RcdTg1N2ZcdTg1ODBcdTg1ODFcdTc3MDFcdTc2ZGJcdTUyNjlcdTgwZGNcdTU3MjNcdTVlMDhcdTU5MzFcdTcy''@;'; put 'put ''ZWVcdTY1YmRcdTZlN2ZcdThiZDdcdTVjMzhcdTg2NzFcdTUzNDFcdTc3ZjNcdTYyZmVcdTY1ZjZcdTRlYzBcdTk4ZGZcdTg2ODBcdTViOWVcdThiYzZcdTUzZjJcdTc3ZTJcdTRmN2ZcdTVjNGVcdTlhNzZcdTU5Y2JcdTVmMGZcdTc5M2FcdTU4ZWJcdTRlMTZcdTY3ZmZcdTRlOGJcdTYyZWRc''@;'; put 'put ''dThhOTNcdTkwMWRcdTUyYmZcdTY2MmZcdTU1ZGNcdTU2NmNcdTkwMDJcdTRlZDVcdTRmOGRcdTkxY2FcdTk5NzBcdTZjMGZcdTVlMDJcdTYwNDNcdTViYTRcdTg5YzZcdThiZDVcdTY1MzZcdTYyNGJcdTk5OTZcdTViODhcdTViZmZcdTYzODhcdTU1MmVcdTUzZDdcdTc2MjZcdTUxN2RcdTg1''@;'; put 'put ''MmNcdTY3YTJcdTY4YjNcdTZiOGFcdTYyOTJcdThmOTNcdTUzZDRcdTgyMTJcdTZkZDFcdTc1OGZcdTRlNjZcdThkNGVcdTViNzBcdTcxOWZcdTg1YWZcdTY2OTFcdTY2ZDlcdTdmNzJcdTg3MDBcdTllY2RcdTlmMjBcdTVjNWVcdTY3MmZcdThmZjBcdTY4MTFcdTY3NWZcdTYyMGRcdTdhZDZc''@;'; put 'put ''dTU4ODVcdTVlYjZcdTY1NzBcdTZmMzEiXSxbImNiNDAiLCJcdTg1ODJcdTg1ODNcdTg1ODZcdTg1ODgiLDYsIlx1ODU5MCIsMTAsIlx1ODU5ZCIsNiwiXHU4NWE1XHU4NWE2XHU4NWE3XHU4NWE5XHU4NWFiXHU4NWFjXHU4NWFkXHU4NWIxIiw1LCJcdTg1YjhcdTg1YmEiLDYsIlx1ODVjMiIs''@;'; put 'put ''NiwiXHU4NWNhIiw0LCJcdTg1ZDFcdTg1ZDIiXSxbImNiODAiLCJcdTg1ZDRcdTg1ZDYiLDUsIlx1ODVkZCIsNiwiXHU4NWU1XHU4NWU2XHU4NWU3XHU4NWU4XHU4NWVhIiwxNCwiXHU2MDU1XHU1MjM3XHU4MDBkXHU2NDU0XHU4ODcwXHU3NTI5XHU1ZTA1XHU2ODEzXHU2MmY0XHU5NzFjXHU1''@;'; put 'put ''M2NjXHU3MjNkXHU4YzAxXHU2YzM0XHU3NzYxXHU3YTBlXHU1NDJlXHU3N2FjXHU5ODdhXHU4MjFjXHU4YmY0XHU3ODU1XHU2NzE0XHU3MGMxXHU2NWFmXHU2NDk1XHU1NjM2XHU2MDFkXHU3OWMxXHU1M2Y4XHU0ZTFkXHU2YjdiXHU4MDg2XHU1YmZhXHU1NWUzXHU1NmRiXHU0ZjNhXHU0ZjNj''@;'; put 'put ''XHU5OTcyXHU1ZGYzXHU2NzdlXHU4MDM4XHU2MDAyXHU5ODgyXHU5MDAxXHU1YjhiXHU4YmJjXHU4YmY1XHU2NDFjXHU4MjU4XHU2NGRlXHU1NWZkXHU4MmNmXHU5MTY1XHU0ZmQ3XHU3ZDIwXHU5MDFmXHU3YzlmXHU1MGYzXHU1ODUxXHU2ZWFmXHU1YmJmXHU4YmM5XHU4MDgzXHU5MTc4XHU4''@;'; put 'put ''NDljXHU3Yjk3XHU4NjdkXHU5NjhiXHU5NjhmXHU3ZWU1XHU5YWQzXHU3ODhlXHU1YzgxXHU3YTU3XHU5MDQyXHU5NmE3XHU3OTVmXHU1YjU5XHU2MzVmXHU3YjBiXHU4NGQxXHU2OGFkXHU1NTA2XHU3ZjI5XHU3NDEwXHU3ZDIyXHU5NTAxXHU2MjQwXHU1ODRjXHU0ZWQ2XHU1YjgzXHU1OTc5''@;'; put 'put ''XHU1ODU0Il0sWyJjYzQwIiwiXHU4NWY5XHU4NWZhXHU4NWZjXHU4NWZkXHU4NWZlXHU4NjAwIiw0LCJcdTg2MDYiLDEwLCJcdTg2MTJcdTg2MTNcdTg2MTRcdTg2MTVcdTg2MTciLDE1LCJcdTg2MjhcdTg2MmEiLDEzLCJcdTg2MzlcdTg2M2FcdTg2M2JcdTg2M2RcdTg2M2VcdTg2M2ZcdTg2''@;'; put 'put ''NDAiXSxbImNjODAiLCJcdTg2NDEiLDExLCJcdTg2NTJcdTg2NTNcdTg2NTUiLDQsIlx1ODY1Ylx1ODY1Y1x1ODY1ZFx1ODY1Zlx1ODY2MFx1ODY2MVx1ODY2MyIsNywiXHU3MzZkXHU2MzFlXHU4ZTRiXHU4ZTBmXHU4MGNlXHU4MmQ0XHU2MmFjXHU1M2YwXHU2Y2YwXHU5MTVlXHU1OTJhXHU2''@;'; put 'put ''MDAxXHU2YzcwXHU1NzRkXHU2NDRhXHU4ZDJhXHU3NjJiXHU2ZWU5XHU1NzViXHU2YTgwXHU3NWYwXHU2ZjZkXHU4YzJkXHU4YzA4XHU1NzY2XHU2YmVmXHU4ODkyXHU3OGIzXHU2M2EyXHU1M2Y5XHU3MGFkXHU2YzY0XHU1ODU4XHU2NDJhXHU1ODAyXHU2OGUwXHU4MTliXHU1NTEwXHU3Y2Q2''@;'; put 'put ''XHU1MDE4XHU4ZWJhXHU2ZGNjXHU4ZDlmXHU3MGViXHU2MzhmXHU2ZDliXHU2ZWQ0XHU3ZWU2XHU4NDA0XHU2ODQzXHU5MDAzXHU2ZGQ4XHU5Njc2XHU4YmE4XHU1OTU3XHU3Mjc5XHU4NWU0XHU4MTdlXHU3NWJjXHU4YThhXHU2OGFmXHU1MjU0XHU4ZTIyXHU5NTExXHU2M2QwXHU5ODk4XHU4''@;'; put 'put ''ZTQ0XHU1NTdjXHU0ZjUzXHU2NmZmXHU1NjhmXHU2MGQ1XHU2ZDk1XHU1MjQzXHU1YzQ5XHU1OTI5XHU2ZGZiXHU1ODZiXHU3NTMwXHU3NTFjXHU2MDZjXHU4MjE0XHU4MTQ2XHU2MzExXHU2NzYxXHU4ZmUyXHU3NzNhXHU4ZGYzXHU4ZDM0XHU5NGMxXHU1ZTE2XHU1Mzg1XHU1NDJjXHU3MGMz''@;'; put 'put ''Il0sWyJjZDQwIiwiXHU4NjZkXHU4NjZmXHU4NjcwXHU4NjcyIiw2LCJcdTg2ODMiLDYsIlx1ODY4ZSIsNCwiXHU4Njk0XHU4Njk2Iiw1LCJcdTg2OWUiLDQsIlx1ODZhNVx1ODZhNlx1ODZhYlx1ODZhZFx1ODZhZVx1ODZiMlx1ODZiM1x1ODZiN1x1ODZiOFx1ODZiOVx1ODZiYiIsNCwiXHU4''@;'; put 'put ''NmMxXHU4NmMyXHU4NmMzXHU4NmM1XHU4NmM4XHU4NmNjXHU4NmNkXHU4NmQyXHU4NmQzXHU4NmQ1XHU4NmQ2XHU4NmQ3XHU4NmRhXHU4NmRjIl0sWyJjZDgwIiwiXHU4NmRkXHU4NmUwXHU4NmUxXHU4NmUyXHU4NmUzXHU4NmU1XHU4NmU2XHU4NmU3XHU4NmU4XHU4NmVhXHU4NmViXHU4NmVj''@;'; put 'put ''XHU4NmVmXHU4NmY1XHU4NmY2XHU4NmY3XHU4NmZhXHU4NmZiXHU4NmZjXHU4NmZkXHU4NmZmXHU4NzAxXHU4NzA0XHU4NzA1XHU4NzA2XHU4NzBiXHU4NzBjXHU4NzBlXHU4NzBmXHU4NzEwXHU4NzExXHU4NzE0XHU4NzE2XHU2YzQwXHU1ZWY3XHU1MDVjXHU0ZWFkXHU1ZWFkXHU2MzNhXHU4''@;'; put 'put ''MjQ3XHU5MDFhXHU2ODUwXHU5MTZlXHU3N2IzXHU1NDBjXHU5NGRjXHU1ZjY0XHU3YWU1XHU2ODc2XHU2MzQ1XHU3YjUyXHU3ZWRmXHU3NWRiXHU1MDc3XHU2Mjk1XHU1OTM0XHU5MDBmXHU1MWY4XHU3OWMzXHU3YTgxXHU1NmZlXHU1ZjkyXHU5MDE0XHU2ZDgyXHU1YzYwXHU1NzFmXHU1NDEw''@;'; put 'put ''XHU1MTU0XHU2ZTRkXHU1NmUyXHU2M2E4XHU5ODkzXHU4MTdmXHU4NzE1XHU4OTJhXHU5MDAwXHU1NDFlXHU1YzZmXHU4MWMwXHU2MmQ2XHU2MjU4XHU4MTMxXHU5ZTM1XHU5NjQwXHU5YTZlXHU5YTdjXHU2OTJkXHU1OWE1XHU2MmQzXHU1NTNlXHU2MzE2XHU1NGM3XHU4NmQ5XHU2ZDNjXHU1''@;'; put 'put ''YTAzXHU3NGU2XHU4ODljXHU2YjZhXHU1OTE2XHU4YzRjXHU1ZjJmXHU2ZTdlXHU3M2E5XHU5ODdkXHU0ZTM4XHU3MGY3XHU1YjhjXHU3ODk3XHU2MzNkXHU2NjVhXHU3Njk2XHU2MGNiXHU1YjliXHU1YTQ5XHU0ZTA3XHU4MTU1XHU2YzZhXHU3MzhiXHU0ZWExXHU2Nzg5XHU3ZjUxXHU1Zjgw''@;'; put 'put ''XHU2NWZhXHU2NzFiXHU1ZmQ4XHU1OTg0XHU1YTAxIl0sWyJjZTQwIiwiXHU4NzE5XHU4NzFiXHU4NzFkXHU4NzFmXHU4NzIwXHU4NzI0XHU4NzI2XHU4NzI3XHU4NzI4XHU4NzJhXHU4NzJiXHU4NzJjXHU4NzJkXHU4NzJmXHU4NzMwXHU4NzMyXHU4NzMzXHU4NzM1XHU4NzM2XHU4NzM4XHU4''@;'; put 'put ''NzM5XHU4NzNhXHU4NzNjXHU4NzNkXHU4NzQwIiw2LCJcdTg3NGFcdTg3NGJcdTg3NGRcdTg3NGZcdTg3NTBcdTg3NTFcdTg3NTJcdTg3NTRcdTg3NTVcdTg3NTZcdTg3NThcdTg3NWEiLDUsIlx1ODc2MVx1ODc2Mlx1ODc2NiIsNywiXHU4NzZmXHU4NzcxXHU4NzcyXHU4NzczXHU4Nzc1Il0s''@;'; put 'put ''WyJjZTgwIiwiXHU4Nzc3XHU4Nzc4XHU4Nzc5XHU4NzdhXHU4NzdmXHU4NzgwXHU4NzgxXHU4Nzg0XHU4Nzg2XHU4Nzg3XHU4Nzg5XHU4NzhhXHU4NzhjXHU4NzhlIiw0LCJcdTg3OTRcdTg3OTVcdTg3OTZcdTg3OTgiLDYsIlx1ODdhMCIsNCwiXHU1ZGNkXHU1ZmFlXHU1MzcxXHU5N2U2XHU4''@;'; put 'put ''ZmRkXHU2ODQ1XHU1NmY0XHU1NTJmXHU2MGRmXHU0ZTNhXHU2ZjRkXHU3ZWY0XHU4MmM3XHU4NDBlXHU1OWQ0XHU0ZjFmXHU0ZjJhXHU1YzNlXHU3ZWFjXHU2NzJhXHU4NTFhXHU1NDczXHU3NTRmXHU4MGMzXHU1NTgyXHU5YjRmXHU0ZjRkXHU2ZTJkXHU4YzEzXHU1YzA5XHU2MTcwXHU1MzZi''@;'; put 'put ''XHU3NjFmXHU2ZTI5XHU4NjhhXHU2NTg3XHU5NWZiXHU3ZWI5XHU1NDNiXHU3YTMzXHU3ZDBhXHU5NWVlXHU1NWUxXHU3ZmMxXHU3NGVlXHU2MzFkXHU4NzE3XHU2ZGExXHU3YTlkXHU2MjExXHU2NWExXHU1MzY3XHU2M2UxXHU2YzgzXHU1ZGViXHU1NDVjXHU5NGE4XHU0ZTRjXHU2YzYxXHU4''@;'; put 'put ''YmVjXHU1YzRiXHU2NWUwXHU4MjljXHU2OGE3XHU1NDNlXHU1NDM0XHU2YmNiXHU2YjY2XHU0ZTk0XHU2MzQyXHU1MzQ4XHU4MjFlXHU0ZjBkXHU0ZmFlXHU1NzVlXHU2MjBhXHU5NmZlXHU2NjY0XHU3MjY5XHU1MmZmXHU1MmExXHU2MDlmXHU4YmVmXHU2NjE0XHU3MTk5XHU2NzkwXHU4OTdm''@;'; put 'put ''XHU3ODUyXHU3N2ZkXHU2NjcwXHU1NjNiXHU1NDM4XHU5NTIxXHU3MjdhIl0sWyJjZjQwIiwiXHU4N2E1XHU4N2E2XHU4N2E3XHU4N2E5XHU4N2FhXHU4N2FlXHU4N2IwXHU4N2IxXHU4N2IyXHU4N2I0XHU4N2I2XHU4N2I3XHU4N2I4XHU4N2I5XHU4N2JiXHU4N2JjXHU4N2JlXHU4N2JmXHU4''@;'; put 'put ''N2MxIiw0LCJcdTg3YzdcdTg3YzhcdTg3YzlcdTg3Y2MiLDQsIlx1ODdkNCIsNiwiXHU4N2RjXHU4N2RkXHU4N2RlXHU4N2RmXHU4N2UxXHU4N2UyXHU4N2UzXHU4N2U0XHU4N2U2XHU4N2U3XHU4N2U4XHU4N2U5XHU4N2ViXHU4N2VjXHU4N2VkXHU4N2VmIiw5XSxbImNmODAiLCJcdTg3ZmFc''@;'; put 'put ''dTg3ZmJcdTg3ZmNcdTg3ZmRcdTg3ZmZcdTg4MDBcdTg4MDFcdTg4MDJcdTg4MDQiLDUsIlx1ODgwYiIsNywiXHU4ODE0XHU4ODE3XHU4ODE4XHU4ODE5XHU4ODFhXHU4ODFjIiw0LCJcdTg4MjNcdTdhMDBcdTYwNmZcdTVlMGNcdTYwODlcdTgxOWRcdTU5MTVcdTYwZGNcdTcxODRcdTcwZWZc''@;'; put 'put ''dTZlYWFcdTZjNTBcdTcyODBcdTZhODRcdTg4YWRcdTVlMmRcdTRlNjBcdTVhYjNcdTU1OWNcdTk0ZTNcdTZkMTdcdTdjZmJcdTk2OTlcdTYyMGZcdTdlYzZcdTc3OGVcdTg2N2VcdTUzMjNcdTk3MWVcdThmOTZcdTY2ODdcdTVjZTFcdTRmYTBcdTcyZWRcdTRlMGJcdTUzYTZcdTU5MGZcdTU0''@;'; put 'put ''MTNcdTYzODBcdTk1MjhcdTUxNDhcdTRlZDlcdTljOWNcdTdlYTRcdTU0YjhcdThkMjRcdTg4NTRcdTgyMzdcdTk1ZjJcdTZkOGVcdTVmMjZcdTVhY2NcdTY2M2VcdTk2NjlcdTczYjBcdTczMmVcdTUzYmZcdTgxN2FcdTk5ODVcdTdmYTFcdTViYWFcdTk2NzdcdTk2NTBcdTdlYmZcdTc2Zjhc''@;'; put 'put ''dTUzYTJcdTk1NzZcdTk5OTlcdTdiYjFcdTg5NDRcdTZlNThcdTRlNjFcdTdmZDRcdTc5NjVcdThiZTZcdTYwZjNcdTU0Y2RcdTRlYWJcdTk4NzlcdTVkZjdcdTZhNjFcdTUwY2ZcdTU0MTFcdThjNjFcdTg0MjdcdTc4NWRcdTk3MDRcdTUyNGFcdTU0ZWVcdTU2YTNcdTk1MDBcdTZkODhcdTVi''@;'; put 'put ''YjVcdTZkYzZcdTY2NTMiXSxbImQwNDAiLCJcdTg4MjQiLDEzLCJcdTg4MzMiLDUsIlx1ODgzYVx1ODgzYlx1ODgzZFx1ODgzZVx1ODgzZlx1ODg0MVx1ODg0Mlx1ODg0M1x1ODg0NiIsNSwiXHU4ODRlIiw1LCJcdTg4NTVcdTg4NTZcdTg4NThcdTg4NWEiLDYsIlx1ODg2Nlx1ODg2N1x1ODg2''@;'; put 'put ''YVx1ODg2ZFx1ODg2Zlx1ODg3MVx1ODg3M1x1ODg3NFx1ODg3NVx1ODg3Nlx1ODg3OFx1ODg3OVx1ODg3YSJdLFsiZDA4MCIsIlx1ODg3Ylx1ODg3Y1x1ODg4MFx1ODg4M1x1ODg4Nlx1ODg4N1x1ODg4OVx1ODg4YVx1ODg4Y1x1ODg4ZVx1ODg4Zlx1ODg5MFx1ODg5MVx1ODg5M1x1ODg5NFx1''@;'; put 'put ''ODg5NVx1ODg5NyIsNCwiXHU4ODlkIiw0LCJcdTg4YTNcdTg4YTUiLDUsIlx1NWMwZlx1NWI1ZFx1NjgyMVx1ODA5Nlx1NTU3OFx1N2IxMVx1NjU0OFx1Njk1NFx1NGU5Ylx1NmI0N1x1ODc0ZVx1OTc4Ylx1NTM0Zlx1NjMxZlx1NjQzYVx1OTBhYVx1NjU5Y1x1ODBjMVx1OGMxMFx1NTE5OVx1''@;'; put 'put ''NjhiMFx1NTM3OFx1ODdmOVx1NjFjOFx1NmNjNFx1NmNmYlx1OGMyMlx1NWM1MVx1ODVhYVx1ODJhZlx1OTUwY1x1NmIyM1x1OGY5Ylx1NjViMFx1NWZmYlx1NWZjM1x1NGZlMVx1ODg0NVx1NjYxZlx1ODE2NVx1NzMyOVx1NjBmYVx1NTE3NFx1NTIxMVx1NTc4Ylx1NWY2Mlx1OTBhMlx1ODg0''@;'; put 'put ''Y1x1OTE5Mlx1NWU3OFx1Njc0Zlx1NjAyN1x1NTlkM1x1NTE0NFx1NTFmNlx1ODBmOFx1NTMwOFx1NmM3OVx1OTZjNFx1NzE4YVx1NGYxMVx1NGZlZVx1N2Y5ZVx1NjczZFx1NTVjNVx1OTUwOFx1NzljMFx1ODg5Nlx1N2VlM1x1NTg5Zlx1NjIwY1x1OTcwMFx1ODY1YVx1NTYxOFx1OTg3Ylx1''@;'; put 'put ''NWY5MFx1OGJiOFx1ODRjNFx1OTE1N1x1NTNkOVx1NjVlZFx1NWU4Zlx1NzU1Y1x1NjA2NFx1N2Q2ZVx1NWE3Zlx1N2VlYVx1N2VlZFx1OGY2OVx1NTVhN1x1NWJhM1x1NjBhY1x1NjVjYlx1NzM4NCJdLFsiZDE0MCIsIlx1ODhhY1x1ODhhZVx1ODhhZlx1ODhiMFx1ODhiMiIsNCwiXHU4OGI4''@;'; put 'put ''XHU4OGI5XHU4OGJhXHU4OGJiXHU4OGJkXHU4OGJlXHU4OGJmXHU4OGMwXHU4OGMzXHU4OGM0XHU4OGM3XHU4OGM4XHU4OGNhXHU4OGNiXHU4OGNjXHU4OGNkXHU4OGNmXHU4OGQwXHU4OGQxXHU4OGQzXHU4OGQ2XHU4OGQ3XHU4OGRhIiw0LCJcdTg4ZTBcdTg4ZTFcdTg4ZTZcdTg4ZTdcdTg4''@;'; put 'put ''ZTkiLDYsIlx1ODhmMlx1ODhmNVx1ODhmNlx1ODhmN1x1ODhmYVx1ODhmYlx1ODhmZFx1ODhmZlx1ODkwMFx1ODkwMVx1ODkwMyIsNV0sWyJkMTgwIiwiXHU4OTA5XHU4OTBiIiw0LCJcdTg5MTFcdTg5MTQiLDQsIlx1ODkxYyIsNCwiXHU4OTIyXHU4OTIzXHU4OTI0XHU4OTI2XHU4OTI3XHU4''@;'; put 'put ''OTI4XHU4OTI5XHU4OTJjXHU4OTJkXHU4OTJlXHU4OTJmXHU4OTMxXHU4OTMyXHU4OTMzXHU4OTM1XHU4OTM3XHU5MDA5XHU3NjYzXHU3NzI5XHU3ZWRhXHU5Nzc0XHU4NTliXHU1YjY2XHU3YTc0XHU5NmVhXHU4ODQwXHU1MmNiXHU3MThmXHU1ZmFhXHU2NWVjXHU4YmUyXHU1YmZiXHU5YTZm''@;'; put 'put ''XHU1ZGUxXHU2Yjg5XHU2YzViXHU4YmFkXHU4YmFmXHU5MDBhXHU4ZmM1XHU1MzhiXHU2MmJjXHU5ZTI2XHU5ZTJkXHU1NDQwXHU0ZTJiXHU4MmJkXHU3MjU5XHU4NjljXHU1ZDE2XHU4ODU5XHU2ZGFmXHU5NmM1XHU1NGQxXHU0ZTlhXHU4YmI2XHU3MTA5XHU1NGJkXHU5NjA5XHU3MGRmXHU2''@;'; put 'put ''ZGY5XHU3NmQwXHU0ZTI1XHU3ODE0XHU4NzEyXHU1Y2E5XHU1ZWY2XHU4YTAwXHU5ODljXHU5NjBlXHU3MDhlXHU2Y2JmXHU1OTQ0XHU2M2E5XHU3NzNjXHU4ODRkXHU2ZjE0XHU4MjczXHU1ODMwXHU3MWQ1XHU1MzhjXHU3ODFhXHU5NmMxXHU1NTAxXHU1ZjY2XHU3MTMwXHU1YmI0XHU4YzFh''@;'; put 'put ''XHU5YThjXHU2YjgzXHU1OTJlXHU5ZTJmXHU3OWU3XHU2NzY4XHU2MjZjXHU0ZjZmXHU3NWExXHU3ZjhhXHU2ZDBiXHU5NjMzXHU2YzI3XHU0ZWYwXHU3NWQyXHU1MTdiXHU2ODM3XHU2ZjNlXHU5MDgwXHU4MTcwXHU1OTk2XHU3NDc2Il0sWyJkMjQwIiwiXHU4OTM4Iiw4LCJcdTg5NDJcdTg5''@;'; put 'put ''NDNcdTg5NDUiLDI0LCJcdTg5NjAiLDUsIlx1ODk2NyIsMTksIlx1ODk3YyJdLFsiZDI4MCIsIlx1ODk3ZFx1ODk3ZVx1ODk4MFx1ODk4Mlx1ODk4NFx1ODk4NVx1ODk4NyIsMjYsIlx1NjQ0N1x1NWMyN1x1OTA2NVx1N2E5MVx1OGMyM1x1NTlkYVx1NTRhY1x1ODIwMFx1ODM2Zlx1ODk4MVx1''@;'; put 'put ''ODAwMFx1NjkzMFx1NTY0ZVx1ODAzNlx1NzIzN1x1OTFjZVx1NTFiNlx1NGU1Zlx1OTg3NVx1NjM5Nlx1NGUxYVx1NTNmNlx1NjZmM1x1ODE0Ylx1NTkxY1x1NmRiMlx1NGUwMFx1NThmOVx1NTMzYlx1NjNkNlx1OTRmMVx1NGY5ZFx1NGYwYVx1ODg2M1x1OTg5MFx1NTkzN1x1OTA1N1x1Nzlm''@;'; put 'put ''Ylx1NGVlYVx1ODBmMFx1NzU5MVx1NmM4Mlx1NWI5Y1x1NTllOFx1NWY1ZFx1NjkwNVx1ODY4MVx1NTAxYVx1NWRmMlx1NGU1OVx1NzdlM1x1NGVlNVx1ODI3YVx1NjI5MVx1NjYxM1x1OTA5MVx1NWM3OVx1NGViZlx1NWY3OVx1ODFjNlx1OTAzOFx1ODA4NFx1NzVhYlx1NGVhNlx1ODhkNFx1''@;'; put 'put ''NjEwZlx1NmJjNVx1NWZjNlx1NGU0OVx1NzZjYVx1NmVhMlx1OGJlM1x1OGJhZVx1OGMwYVx1OGJkMVx1NWYwMlx1N2ZmY1x1N2ZjY1x1N2VjZVx1ODMzNVx1ODM2Ylx1NTZlMFx1NmJiN1x1OTdmM1x1OTYzNFx1NTlmYlx1NTQxZlx1OTRmNlx1NmRlYlx1NWJjNVx1OTk2ZVx1NWMzOVx1NWYx''@;'; put 'put ''NVx1OTY5MCJdLFsiZDM0MCIsIlx1ODlhMiIsMzAsIlx1ODljM1x1ODljZFx1ODlkM1x1ODlkNFx1ODlkNVx1ODlkN1x1ODlkOFx1ODlkOVx1ODlkYlx1ODlkZFx1ODlkZlx1ODllMFx1ODllMVx1ODllMlx1ODllNFx1ODllN1x1ODllOFx1ODllOVx1ODllYVx1ODllY1x1ODllZFx1ODllZVx1''@;'; put 'put ''ODlmMFx1ODlmMVx1ODlmMlx1ODlmNCIsNl0sWyJkMzgwIiwiXHU4OWZiIiw0LCJcdThhMDEiLDUsIlx1OGEwOCIsMjEsIlx1NTM3MFx1ODJmMVx1NmEzMVx1NWE3NFx1OWU3MFx1NWU5NFx1N2YyOFx1ODNiOVx1ODQyNFx1ODQyNVx1ODM2N1x1ODc0N1x1OGZjZVx1OGQ2Mlx1NzZjOFx1NWY3''@;'; put 'put ''MVx1OTg5Nlx1Nzg2Y1x1NjYyMFx1NTRkZlx1NjJlNVx1NGY2M1x1ODFjM1x1NzVjOFx1NWViOFx1OTZjZFx1OGUwYVx1ODZmOVx1NTQ4Zlx1NmNmM1x1NmQ4Y1x1NmMzOFx1NjA3Zlx1NTJjN1x1NzUyOFx1NWU3ZFx1NGYxOFx1NjBhMFx1NWZlN1x1NWMyNFx1NzUzMVx1OTBhZVx1OTRjMFx1''@;'; put 'put ''NzJiOVx1NmNiOVx1NmUzOFx1OTE0OVx1NjcwOVx1NTNjYlx1NTNmM1x1NGY1MVx1OTFjOVx1OGJmMVx1NTNjOFx1NWU3Y1x1OGZjMlx1NmRlNFx1NGU4ZVx1NzZjMlx1Njk4Nlx1ODY1ZVx1NjExYVx1ODIwNlx1NGY1OVx1NGZkZVx1OTAzZVx1OWM3Y1x1NjEwOVx1NmUxZFx1NmUxNFx1OTY4''@;'; put 'put ''NVx1NGU4OFx1NWEzMVx1OTZlOFx1NGUwZVx1NWM3Zlx1NzliOVx1NWI4N1x1OGJlZFx1N2ZiZFx1NzM4OVx1NTdkZlx1ODI4Ylx1OTBjMVx1NTQwMVx1OTA0N1x1NTViYlx1NWNlYVx1NWZhMVx1NjEwOFx1NmIzMlx1NzJmMVx1ODBiMlx1OGE4OSJdLFsiZDQ0MCIsIlx1OGExZSIsMzEsIlx1''@;'; put 'put ''OGEzZiIsOCwiXHU4YTQ5IiwyMV0sWyJkNDgwIiwiXHU4YTVmIiwyNSwiXHU4YTdhIiw2LCJcdTZkNzRcdTViZDNcdTg4ZDVcdTk4ODRcdThjNmJcdTlhNmRcdTllMzNcdTZlMGFcdTUxYTRcdTUxNDNcdTU3YTNcdTg4ODFcdTUzOWZcdTYzZjRcdThmOTVcdTU2ZWRcdTU0NThcdTU3MDZcdTcz''@;'; put 'put ''M2ZcdTZlOTBcdTdmMThcdThmZGNcdTgyZDFcdTYxM2ZcdTYwMjhcdTk2NjJcdTY2ZjBcdTdlYTZcdThkOGFcdThkYzNcdTk0YTVcdTVjYjNcdTdjYTRcdTY3MDhcdTYwYTZcdTk2MDVcdTgwMThcdTRlOTFcdTkwZTdcdTUzMDBcdTk2NjhcdTUxNDFcdThmZDBcdTg1NzRcdTkxNWRcdTY2NTVc''@;'; put 'put ''dTk3ZjVcdTViNTVcdTUzMWRcdTc4MzhcdTY3NDJcdTY4M2RcdTU0YzlcdTcwN2VcdTViYjBcdThmN2RcdTUxOGRcdTU3MjhcdTU0YjFcdTY1MTJcdTY2ODJcdThkNWVcdThkNDNcdTgxMGZcdTg0NmNcdTkwNmRcdTdjZGZcdTUxZmZcdTg1ZmJcdTY3YTNcdTY1ZTlcdTZmYTFcdTg2YTRcdThl''@;'; put 'put ''ODFcdTU2NmFcdTkwMjBcdTc2ODJcdTcwNzZcdTcxZTVcdThkMjNcdTYyZTlcdTUyMTlcdTZjZmRcdThkM2NcdTYwMGVcdTU4OWVcdTYxOGVcdTY2ZmVcdThkNjBcdTYyNGVcdTU1YjNcdTZlMjNcdTY3MmRcdThmNjciXSxbImQ1NDAiLCJcdThhODEiLDcsIlx1OGE4YiIsNywiXHU4YTk0Iiw0''@;'; put 'put ''Nl0sWyJkNTgwIiwiXHU4YWMzIiwzMiwiXHU5NGUxXHU5NWY4XHU3NzI4XHU2ODA1XHU2OWE4XHU1NDhiXHU0ZTRkXHU3MGI4XHU4YmM4XHU2NDU4XHU2NThiXHU1Yjg1XHU3YTg0XHU1MDNhXHU1YmU4XHU3N2JiXHU2YmUxXHU4YTc5XHU3Yzk4XHU2Y2JlXHU3NmNmXHU2NWE5XHU4Zjk3XHU1''@;'; put 'put ''ZDJkXHU1YzU1XHU4NjM4XHU2ODA4XHU1MzYwXHU2MjE4XHU3YWQ5XHU2ZTViXHU3ZWZkXHU2YTFmXHU3YWUwXHU1ZjcwXHU2ZjMzXHU1ZjIwXHU2MzhjXHU2ZGE4XHU2NzU2XHU0ZTA4XHU1ZTEwXHU4ZDI2XHU0ZWQ3XHU4MGMwXHU3NjM0XHU5NjljXHU2MmRiXHU2NjJkXHU2MjdlXHU2Y2Jj''@;'; put 'put ''XHU4ZDc1XHU3MTY3XHU3ZjY5XHU1MTQ2XHU4MDg3XHU1M2VjXHU5MDZlXHU2Mjk4XHU1NGYyXHU4NmYwXHU4Zjk5XHU4MDA1XHU5NTE3XHU4NTE3XHU4ZmQ5XHU2ZDU5XHU3M2NkXHU2NTlmXHU3NzFmXHU3NTA0XHU3ODI3XHU4MWZiXHU4ZDFlXHU5NDg4XHU0ZmE2XHU2Nzk1XHU3NWI5XHU4''@;'; put 'put ''YmNhXHU5NzA3XHU2MzJmXHU5NTQ3XHU5NjM1XHU4NGI4XHU2MzIzXHU3NzQxXHU1ZjgxXHU3MmYwXHU0ZTg5XHU2MDE0XHU2NTc0XHU2MmVmXHU2YjYzXHU2NTNmIl0sWyJkNjQwIiwiXHU4YWU0IiwzNCwiXHU4YjA4IiwyN10sWyJkNjgwIiwiXHU4YjI0XHU4YjI1XHU4YjI3IiwzMCwiXHU1''@;'; put 'put ''ZTI3XHU3NWM3XHU5MGQxXHU4YmMxXHU4MjlkXHU2NzlkXHU2NTJmXHU1NDMxXHU4NzE4XHU3N2U1XHU4MGEyXHU4MTAyXHU2YzQxXHU0ZTRiXHU3ZWM3XHU4MDRjXHU3NmY0XHU2OTBkXHU2Yjk2XHU2MjY3XHU1MDNjXHU0Zjg0XHU1NzQwXHU2MzA3XHU2YjYyXHU4ZGJlXHU1M2VhXHU2NWU4''@;'; put 'put ''XHU3ZWI4XHU1ZmQ3XHU2MzFhXHU2M2I3XHU4MWYzXHU4MWY0XHU3ZjZlXHU1ZTFjXHU1Y2Q5XHU1MjM2XHU2NjdhXHU3OWU5XHU3YTFhXHU4ZDI4XHU3MDk5XHU3NWQ0XHU2ZWRlXHU2Y2JiXHU3YTkyXHU0ZTJkXHU3NmM1XHU1ZmUwXHU5NDlmXHU4ODc3XHU3ZWM4XHU3OWNkXHU4MGJmXHU5''@;'; put 'put ''MWNkXHU0ZWYyXHU0ZjE3XHU4MjFmXHU1NDY4XHU1ZGRlXHU2ZDMyXHU4YmNjXHU3Y2E1XHU4Zjc0XHU4MDk4XHU1ZTFhXHU1NDkyXHU3NmIxXHU1Yjk5XHU2NjNjXHU5YWE0XHU3M2UwXHU2ODJhXHU4NmRiXHU2NzMxXHU3MzJhXHU4YmY4XHU4YmRiXHU5MDEwXHU3YWY5XHU3MGRiXHU3MTZl''@;'; put 'put ''XHU2MmM0XHU3N2E5XHU1NjMxXHU0ZTNiXHU4NDU3XHU2N2YxXHU1MmE5XHU4NmMwXHU4ZDJlXHU5NGY4XHU3YjUxIl0sWyJkNzQwIiwiXHU4YjQ2IiwzMSwiXHU4YjY3Iiw0LCJcdThiNmQiLDI1XSxbImQ3ODAiLCJcdThiODciLDI0LCJcdThiYWNcdThiYjFcdThiYmJcdThiYzdcdThiZDBc''@;'; put 'put ''dThiZWFcdThjMDlcdThjMWVcdTRmNGZcdTZjZThcdTc5NWRcdTlhN2JcdTYyOTNcdTcyMmFcdTYyZmRcdTRlMTNcdTc4MTZcdThmNmNcdTY0YjBcdThkNWFcdTdiYzZcdTY4NjlcdTVlODRcdTg4YzVcdTU5ODZcdTY0OWVcdTU4ZWVcdTcyYjZcdTY5MGVcdTk1MjVcdThmZmRcdThkNThcdTU3''@;'; put 'put ''NjBcdTdmMDBcdThjMDZcdTUxYzZcdTYzNDlcdTYyZDlcdTUzNTNcdTY4NGNcdTc0MjJcdTgzMDFcdTkxNGNcdTU1NDRcdTc3NDBcdTcwN2NcdTZkNGFcdTUxNzlcdTU0YThcdThkNDRcdTU5ZmZcdTZlY2JcdTZkYzRcdTViNWNcdTdkMmJcdTRlZDRcdTdjN2RcdTZlZDNcdTViNTBcdTgxZWFc''@;'; put 'put ''dTZlMGRcdTViNTdcdTliMDNcdTY4ZDVcdThlMmFcdTViOTdcdTdlZmNcdTYwM2JcdTdlYjVcdTkwYjlcdThkNzBcdTU5NGZcdTYzY2RcdTc5ZGZcdThkYjNcdTUzNTJcdTY1Y2ZcdTc5NTZcdThiYzVcdTk2M2JcdTdlYzRcdTk0YmJcdTdlODJcdTU2MzRcdTkxODlcdTY3MDBcdTdmNmFcdTVj''@;'; put 'put ''MGFcdTkwNzVcdTY2MjhcdTVkZTZcdTRmNTBcdTY3ZGVcdTUwNWFcdTRmNWNcdTU3NTBcdTVlYTciXSxbImQ4NDAiLCJcdThjMzgiLDgsIlx1OGM0Mlx1OGM0M1x1OGM0NFx1OGM0NVx1OGM0OFx1OGM0YVx1OGM0Ylx1OGM0ZCIsNywiXHU4YzU2XHU4YzU3XHU4YzU4XHU4YzU5XHU4YzViIiw1''@;'; put 'put ''LCJcdThjNjMiLDYsIlx1OGM2YyIsNiwiXHU4Yzc0XHU4Yzc1XHU4Yzc2XHU4Yzc3XHU4YzdiIiw2LCJcdThjODNcdThjODRcdThjODZcdThjODciXSxbImQ4ODAiLCJcdThjODhcdThjOGJcdThjOGQiLDYsIlx1OGM5NVx1OGM5Nlx1OGM5N1x1OGM5OSIsMjAsIlx1NGU4ZFx1NGUwY1x1NTE0''@;'; put 'put ''MFx1NGUxMFx1NWVmZlx1NTM0NVx1NGUxNVx1NGU5OFx1NGUxZVx1OWIzMlx1NWI2Y1x1NTY2OVx1NGUyOFx1NzliYVx1NGUzZlx1NTMxNVx1NGU0N1x1NTkyZFx1NzIzYlx1NTM2ZVx1NmMxMFx1NTZkZlx1ODBlNFx1OTk5N1x1NmJkM1x1Nzc3ZVx1OWYxN1x1NGUzNlx1NGU5Zlx1OWYxMFx1''@;'; put 'put ''NGU1Y1x1NGU2OVx1NGU5M1x1ODI4OFx1NWI1Ylx1NTU2Y1x1NTYwZlx1NGVjNFx1NTM4ZFx1NTM5ZFx1NTNhM1x1NTNhNVx1NTNhZVx1OTc2NVx1OGQ1ZFx1NTMxYVx1NTNmNVx1NTMyNlx1NTMyZVx1NTMzZVx1OGQ1Y1x1NTM2Nlx1NTM2M1x1NTIwMlx1NTIwOFx1NTIwZVx1NTIyZFx1NTIz''@;'; put 'put ''M1x1NTIzZlx1NTI0MFx1NTI0Y1x1NTI1ZVx1NTI2MVx1NTI1Y1x1ODRhZlx1NTI3ZFx1NTI4Mlx1NTI4MVx1NTI5MFx1NTI5M1x1NTE4Mlx1N2Y1NFx1NGViYlx1NGVjM1x1NGVjOVx1NGVjMlx1NGVlOFx1NGVlMVx1NGVlYlx1NGVkZVx1NGYxYlx1NGVmM1x1NGYyMlx1NGY2NFx1NGVmNVx1''@;'; put 'put ''NGYyNVx1NGYyN1x1NGYwOVx1NGYyYlx1NGY1ZVx1NGY2N1x1NjUzOFx1NGY1YVx1NGY1ZCJdLFsiZDk0MCIsIlx1OGNhZSIsNjJdLFsiZDk4MCIsIlx1OGNlZCIsMzIsIlx1NGY1Zlx1NGY1N1x1NGYzMlx1NGYzZFx1NGY3Nlx1NGY3NFx1NGY5MVx1NGY4OVx1NGY4M1x1NGY4Zlx1NGY3ZVx1''@;'; put 'put ''NGY3Ylx1NGZhYVx1NGY3Y1x1NGZhY1x1NGY5NFx1NGZlNlx1NGZlOFx1NGZlYVx1NGZjNVx1NGZkYVx1NGZlM1x1NGZkY1x1NGZkMVx1NGZkZlx1NGZmOFx1NTAyOVx1NTA0Y1x1NGZmM1x1NTAyY1x1NTAwZlx1NTAyZVx1NTAyZFx1NGZmZVx1NTAxY1x1NTAwY1x1NTAyNVx1NTAyOFx1NTA3''@;'; put 'put ''ZVx1NTA0M1x1NTA1NVx1NTA0OFx1NTA0ZVx1NTA2Y1x1NTA3Ylx1NTBhNVx1NTBhN1x1NTBhOVx1NTBiYVx1NTBkNlx1NTEwNlx1NTBlZFx1NTBlY1x1NTBlNlx1NTBlZVx1NTEwN1x1NTEwYlx1NGVkZFx1NmMzZFx1NGY1OFx1NGY2NVx1NGZjZVx1OWZhMFx1NmM0Nlx1N2M3NFx1NTE2ZVx1''@;'; put 'put ''NWRmZFx1OWVjOVx1OTk5OFx1NTE4MVx1NTkxNFx1NTJmOVx1NTMwZFx1OGEwN1x1NTMxMFx1NTFlYlx1NTkxOVx1NTE1NVx1NGVhMFx1NTE1Nlx1NGViM1x1ODg2ZVx1ODhhNFx1NGViNVx1ODExNFx1ODhkMlx1Nzk4MFx1NWIzNFx1ODgwM1x1N2ZiOFx1NTFhYlx1NTFiMVx1NTFiZFx1NTFi''@;'; put 'put ''YyJdLFsiZGE0MCIsIlx1OGQwZSIsMTQsIlx1OGQyMFx1OGQ1MVx1OGQ1Mlx1OGQ1N1x1OGQ1Zlx1OGQ2NVx1OGQ2OFx1OGQ2OVx1OGQ2YVx1OGQ2Y1x1OGQ2ZVx1OGQ2Zlx1OGQ3MVx1OGQ3Mlx1OGQ3OCIsOCwiXHU4ZDgyXHU4ZDgzXHU4ZDg2XHU4ZDg3XHU4ZDg4XHU4ZDg5XHU4ZDhjIiw0''@;'; put 'put ''LCJcdThkOTJcdThkOTNcdThkOTUiLDksIlx1OGRhMFx1OGRhMSJdLFsiZGE4MCIsIlx1OGRhMlx1OGRhNCIsMTIsIlx1OGRiMlx1OGRiNlx1OGRiN1x1OGRiOVx1OGRiYlx1OGRiZFx1OGRjMFx1OGRjMVx1OGRjMlx1OGRjNVx1OGRjN1x1OGRjOFx1OGRjOVx1OGRjYVx1OGRjZFx1OGRkMFx1''@;'; put 'put ''OGRkMlx1OGRkM1x1OGRkNFx1NTFjN1x1NTE5Nlx1NTFhMlx1NTFhNVx1OGJhMFx1OGJhNlx1OGJhN1x1OGJhYVx1OGJiNFx1OGJiNVx1OGJiN1x1OGJjMlx1OGJjM1x1OGJjYlx1OGJjZlx1OGJjZVx1OGJkMlx1OGJkM1x1OGJkNFx1OGJkNlx1OGJkOFx1OGJkOVx1OGJkY1x1OGJkZlx1OGJl''@;'; put 'put ''MFx1OGJlNFx1OGJlOFx1OGJlOVx1OGJlZVx1OGJmMFx1OGJmM1x1OGJmNlx1OGJmOVx1OGJmY1x1OGJmZlx1OGMwMFx1OGMwMlx1OGMwNFx1OGMwN1x1OGMwY1x1OGMwZlx1OGMxMVx1OGMxMlx1OGMxNFx1OGMxNVx1OGMxNlx1OGMxOVx1OGMxYlx1OGMxOFx1OGMxZFx1OGMxZlx1OGMyMFx1''@;'; put 'put ''OGMyMVx1OGMyNVx1OGMyN1x1OGMyYVx1OGMyYlx1OGMyZVx1OGMyZlx1OGMzMlx1OGMzM1x1OGMzNVx1OGMzNlx1NTM2OVx1NTM3YVx1OTYxZFx1OTYyMlx1OTYyMVx1OTYzMVx1OTYyYVx1OTYzZFx1OTYzY1x1OTY0Mlx1OTY0OVx1OTY1NFx1OTY1Zlx1OTY2N1x1OTY2Y1x1OTY3Mlx1OTY3''@;'; put 'put ''NFx1OTY4OFx1OTY4ZFx1OTY5N1x1OTZiMFx1OTA5N1x1OTA5Ylx1OTA5ZFx1OTA5OVx1OTBhY1x1OTBhMVx1OTBiNFx1OTBiM1x1OTBiNlx1OTBiYSJdLFsiZGI0MCIsIlx1OGRkNVx1OGRkOFx1OGRkOVx1OGRkY1x1OGRlMFx1OGRlMVx1OGRlMlx1OGRlNVx1OGRlNlx1OGRlN1x1OGRlOVx1''@;'; put 'put ''OGRlZFx1OGRlZVx1OGRmMFx1OGRmMVx1OGRmMlx1OGRmNFx1OGRmNlx1OGRmY1x1OGRmZSIsNiwiXHU4ZTA2XHU4ZTA3XHU4ZTA4XHU4ZTBiXHU4ZTBkXHU4ZTBlXHU4ZTEwXHU4ZTExXHU4ZTEyXHU4ZTEzXHU4ZTE1Iiw3LCJcdThlMjBcdThlMjFcdThlMjQiLDQsIlx1OGUyYlx1OGUyZFx1''@;'; put 'put ''OGUzMFx1OGUzMlx1OGUzM1x1OGUzNFx1OGUzNlx1OGUzN1x1OGUzOFx1OGUzYlx1OGUzY1x1OGUzZSJdLFsiZGI4MCIsIlx1OGUzZlx1OGU0M1x1OGU0NVx1OGU0Nlx1OGU0YyIsNCwiXHU4ZTUzIiw1LCJcdThlNWEiLDExLCJcdThlNjdcdThlNjhcdThlNmFcdThlNmJcdThlNmVcdThlNzFc''@;'; put 'put ''dTkwYjhcdTkwYjBcdTkwY2ZcdTkwYzVcdTkwYmVcdTkwZDBcdTkwYzRcdTkwYzdcdTkwZDNcdTkwZTZcdTkwZTJcdTkwZGNcdTkwZDdcdTkwZGJcdTkwZWJcdTkwZWZcdTkwZmVcdTkxMDRcdTkxMjJcdTkxMWVcdTkxMjNcdTkxMzFcdTkxMmZcdTkxMzlcdTkxNDNcdTkxNDZcdTUyMGRcdTU5''@;'; put 'put ''NDJcdTUyYTJcdTUyYWNcdTUyYWRcdTUyYmVcdTU0ZmZcdTUyZDBcdTUyZDZcdTUyZjBcdTUzZGZcdTcxZWVcdTc3Y2RcdTVlZjRcdTUxZjVcdTUxZmNcdTliMmZcdTUzYjZcdTVmMDFcdTc1NWFcdTVkZWZcdTU3NGNcdTU3YTlcdTU3YTFcdTU4N2VcdTU4YmNcdTU4YzVcdTU4ZDFcdTU3Mjlc''@;'; put 'put ''dTU3MmNcdTU3MmFcdTU3MzNcdTU3MzlcdTU3MmVcdTU3MmZcdTU3NWNcdTU3M2JcdTU3NDJcdTU3NjlcdTU3ODVcdTU3NmJcdTU3ODZcdTU3N2NcdTU3N2JcdTU3NjhcdTU3NmRcdTU3NzZcdTU3NzNcdTU3YWRcdTU3YTRcdTU3OGNcdTU3YjJcdTU3Y2ZcdTU3YTdcdTU3YjRcdTU3OTNcdTU3''@;'; put 'put ''YTBcdTU3ZDVcdTU3ZDhcdTU3ZGFcdTU3ZDlcdTU3ZDJcdTU3YjhcdTU3ZjRcdTU3ZWZcdTU3ZjhcdTU3ZTRcdTU3ZGQiXSxbImRjNDAiLCJcdThlNzNcdThlNzVcdThlNzciLDQsIlx1OGU3ZFx1OGU3ZVx1OGU4MFx1OGU4Mlx1OGU4M1x1OGU4NFx1OGU4Nlx1OGU4OCIsNiwiXHU4ZTkxXHU4''@;'; put 'put ''ZTkyXHU4ZTkzXHU4ZTk1Iiw2LCJcdThlOWRcdThlOWYiLDExLCJcdThlYWRcdThlYWVcdThlYjBcdThlYjFcdThlYjMiLDYsIlx1OGViYiIsN10sWyJkYzgwIiwiXHU4ZWMzIiwxMCwiXHU4ZWNmIiwyMSwiXHU1ODBiXHU1ODBkXHU1N2ZkXHU1N2VkXHU1ODAwXHU1ODFlXHU1ODE5XHU1ODQ0''@;'; put 'put ''XHU1ODIwXHU1ODY1XHU1ODZjXHU1ODgxXHU1ODg5XHU1ODlhXHU1ODgwXHU5OWE4XHU5ZjE5XHU2MWZmXHU4Mjc5XHU4MjdkXHU4MjdmXHU4MjhmXHU4MjhhXHU4MmE4XHU4Mjg0XHU4MjhlXHU4MjkxXHU4Mjk3XHU4Mjk5XHU4MmFiXHU4MmI4XHU4MmJlXHU4MmIwXHU4MmM4XHU4MmNhXHU4''@;'; put 'put ''MmUzXHU4Mjk4XHU4MmI3XHU4MmFlXHU4MmNiXHU4MmNjXHU4MmMxXHU4MmE5XHU4MmI0XHU4MmExXHU4MmFhXHU4MjlmXHU4MmM0XHU4MmNlXHU4MmE0XHU4MmUxXHU4MzA5XHU4MmY3XHU4MmU0XHU4MzBmXHU4MzA3XHU4MmRjXHU4MmY0XHU4MmQyXHU4MmQ4XHU4MzBjXHU4MmZiXHU4MmQz''@;'; put 'put ''XHU4MzExXHU4MzFhXHU4MzA2XHU4MzE0XHU4MzE1XHU4MmUwXHU4MmQ1XHU4MzFjXHU4MzUxXHU4MzViXHU4MzVjXHU4MzA4XHU4MzkyXHU4MzNjXHU4MzM0XHU4MzMxXHU4MzliXHU4MzVlXHU4MzJmXHU4MzRmXHU4MzQ3XHU4MzQzXHU4MzVmXHU4MzQwXHU4MzE3XHU4MzYwXHU4MzJkXHU4''@;'; put 'put ''MzNhXHU4MzMzXHU4MzY2XHU4MzY1Il0sWyJkZDQwIiwiXHU4ZWU1Iiw2Ml0sWyJkZDgwIiwiXHU4ZjI0IiwzMiwiXHU4MzY4XHU4MzFiXHU4MzY5XHU4MzZjXHU4MzZhXHU4MzZkXHU4MzZlXHU4M2IwXHU4Mzc4XHU4M2IzXHU4M2I0XHU4M2EwXHU4M2FhXHU4MzkzXHU4MzljXHU4Mzg1XHU4''@;'; put 'put ''MzdjXHU4M2I2XHU4M2E5XHU4MzdkXHU4M2I4XHU4MzdiXHU4Mzk4XHU4MzllXHU4M2E4XHU4M2JhXHU4M2JjXHU4M2MxXHU4NDAxXHU4M2U1XHU4M2Q4XHU1ODA3XHU4NDE4XHU4NDBiXHU4M2RkXHU4M2ZkXHU4M2Q2XHU4NDFjXHU4NDM4XHU4NDExXHU4NDA2XHU4M2Q0XHU4M2RmXHU4NDBm''@;'; put 'put ''XHU4NDAzXHU4M2Y4XHU4M2Y5XHU4M2VhXHU4M2M1XHU4M2MwXHU4NDI2XHU4M2YwXHU4M2UxXHU4NDVjXHU4NDUxXHU4NDVhXHU4NDU5XHU4NDczXHU4NDg3XHU4NDg4XHU4NDdhXHU4NDg5XHU4NDc4XHU4NDNjXHU4NDQ2XHU4NDY5XHU4NDc2XHU4NDhjXHU4NDhlXHU4NDMxXHU4NDZkXHU4''@;'; put 'put ''NGMxXHU4NGNkXHU4NGQwXHU4NGU2XHU4NGJkXHU4NGQzXHU4NGNhXHU4NGJmXHU4NGJhXHU4NGUwXHU4NGExXHU4NGI5XHU4NGI0XHU4NDk3XHU4NGU1XHU4NGUzXHU4NTBjXHU3NTBkXHU4NTM4XHU4NGYwXHU4NTM5XHU4NTFmXHU4NTNhIl0sWyJkZTQwIiwiXHU4ZjQ1IiwzMiwiXHU4ZjZh''@;'; put 'put ''XHU4ZjgwXHU4ZjhjXHU4ZjkyXHU4ZjlkXHU4ZmEwXHU4ZmExXHU4ZmEyXHU4ZmE0XHU4ZmE1XHU4ZmE2XHU4ZmE3XHU4ZmFhXHU4ZmFjXHU4ZmFkXHU4ZmFlXHU4ZmFmXHU4ZmIyXHU4ZmIzXHU4ZmI0XHU4ZmI1XHU4ZmI3XHU4ZmI4XHU4ZmJhXHU4ZmJiXHU4ZmJjXHU4ZmJmXHU4ZmMwXHU4''@;'; put 'put ''ZmMzXHU4ZmM2Il0sWyJkZTgwIiwiXHU4ZmM5Iiw0LCJcdThmY2ZcdThmZDJcdThmZDZcdThmZDdcdThmZGFcdThmZTBcdThmZTFcdThmZTNcdThmZTdcdThmZWNcdThmZWZcdThmZjFcdThmZjJcdThmZjRcdThmZjVcdThmZjZcdThmZmFcdThmZmJcdThmZmNcdThmZmVcdThmZmZcdTkwMDdc''@;'; put 'put ''dTkwMDhcdTkwMGNcdTkwMGVcdTkwMTNcdTkwMTVcdTkwMThcdTg1NTZcdTg1M2JcdTg0ZmZcdTg0ZmNcdTg1NTlcdTg1NDhcdTg1NjhcdTg1NjRcdTg1NWVcdTg1N2FcdTc3YTJcdTg1NDNcdTg1NzJcdTg1N2JcdTg1YTRcdTg1YThcdTg1ODdcdTg1OGZcdTg1NzlcdTg1YWVcdTg1OWNcdTg1''@;'; put 'put ''ODVcdTg1YjlcdTg1YjdcdTg1YjBcdTg1ZDNcdTg1YzFcdTg1ZGNcdTg1ZmZcdTg2MjdcdTg2MDVcdTg2MjlcdTg2MTZcdTg2M2NcdTVlZmVcdTVmMDhcdTU5M2NcdTU5NDFcdTgwMzdcdTU5NTVcdTU5NWFcdTU5NThcdTUzMGZcdTVjMjJcdTVjMjVcdTVjMmNcdTVjMzRcdTYyNGNcdTYyNmFc''@;'; put 'put ''dTYyOWZcdTYyYmJcdTYyY2FcdTYyZGFcdTYyZDdcdTYyZWVcdTYzMjJcdTYyZjZcdTYzMzlcdTYzNGJcdTYzNDNcdTYzYWRcdTYzZjZcdTYzNzFcdTYzN2FcdTYzOGVcdTYzYjRcdTYzNmRcdTYzYWNcdTYzOGFcdTYzNjlcdTYzYWVcdTYzYmNcdTYzZjJcdTYzZjhcdTYzZTBcdTYzZmZcdTYz''@;'; put 'put ''YzRcdTYzZGVcdTYzY2VcdTY0NTJcdTYzYzZcdTYzYmVcdTY0NDVcdTY0NDFcdTY0MGJcdTY0MWJcdTY0MjBcdTY0MGNcdTY0MjZcdTY0MjFcdTY0NWVcdTY0ODRcdTY0NmRcdTY0OTYiXSxbImRmNDAiLCJcdTkwMTlcdTkwMWNcdTkwMjNcdTkwMjRcdTkwMjVcdTkwMjciLDUsIlx1OTAzMCIs''@;'; put 'put ''NCwiXHU5MDM3XHU5MDM5XHU5MDNhXHU5MDNkXHU5MDNmXHU5MDQwXHU5MDQzXHU5MDQ1XHU5MDQ2XHU5MDQ4Iiw0LCJcdTkwNGVcdTkwNTRcdTkwNTVcdTkwNTZcdTkwNTlcdTkwNWFcdTkwNWMiLDUsIlx1OTA2NFx1OTA2Nlx1OTA2N1x1OTA2OVx1OTA2YVx1OTA2Ylx1OTA2Y1x1OTA2ZiIs''@;'; put 'put ''NCwiXHU5MDc2Iiw2LCJcdTkwN2VcdTkwODEiXSxbImRmODAiLCJcdTkwODRcdTkwODVcdTkwODZcdTkwODdcdTkwODlcdTkwOGFcdTkwOGMiLDQsIlx1OTA5Mlx1OTA5NFx1OTA5Nlx1OTA5OFx1OTA5YVx1OTA5Y1x1OTA5ZVx1OTA5Zlx1OTBhMFx1OTBhNFx1OTBhNVx1OTBhN1x1OTBhOFx1''@;'; put 'put ''OTBhOVx1OTBhYlx1OTBhZFx1OTBiMlx1OTBiN1x1OTBiY1x1OTBiZFx1OTBiZlx1OTBjMFx1NjQ3YVx1NjRiN1x1NjRiOFx1NjQ5OVx1NjRiYVx1NjRjMFx1NjRkMFx1NjRkN1x1NjRlNFx1NjRlMlx1NjUwOVx1NjUyNVx1NjUyZVx1NWYwYlx1NWZkMlx1NzUxOVx1NWYxMVx1NTM1Zlx1NTNm''@;'; put 'put ''MVx1NTNmZFx1NTNlOVx1NTNlOFx1NTNmYlx1NTQxMlx1NTQxNlx1NTQwNlx1NTQ0Ylx1NTQ1Mlx1NTQ1M1x1NTQ1NFx1NTQ1Nlx1NTQ0M1x1NTQyMVx1NTQ1N1x1NTQ1OVx1NTQyM1x1NTQzMlx1NTQ4Mlx1NTQ5NFx1NTQ3N1x1NTQ3MVx1NTQ2NFx1NTQ5YVx1NTQ5Ylx1NTQ4NFx1NTQ3Nlx1''@;'; put 'put ''NTQ2Nlx1NTQ5ZFx1NTRkMFx1NTRhZFx1NTRjMlx1NTRiNFx1NTRkMlx1NTRhN1x1NTRhNlx1NTRkM1x1NTRkNFx1NTQ3Mlx1NTRhM1x1NTRkNVx1NTRiYlx1NTRiZlx1NTRjY1x1NTRkOVx1NTRkYVx1NTRkY1x1NTRhOVx1NTRhYVx1NTRhNFx1NTRkZFx1NTRjZlx1NTRkZVx1NTUxYlx1NTRl''@;'; put 'put ''N1x1NTUyMFx1NTRmZFx1NTUxNFx1NTRmM1x1NTUyMlx1NTUyM1x1NTUwZlx1NTUxMVx1NTUyN1x1NTUyYVx1NTU2N1x1NTU4Zlx1NTViNVx1NTU0OVx1NTU2ZFx1NTU0MVx1NTU1NVx1NTUzZlx1NTU1MFx1NTUzYyJdLFsiZTA0MCIsIlx1OTBjMlx1OTBjM1x1OTBjNlx1OTBjOFx1OTBjOVx1''@;'; put 'put ''OTBjYlx1OTBjY1x1OTBjZFx1OTBkMlx1OTBkNFx1OTBkNVx1OTBkNlx1OTBkOFx1OTBkOVx1OTBkYVx1OTBkZVx1OTBkZlx1OTBlMFx1OTBlM1x1OTBlNFx1OTBlNVx1OTBlOVx1OTBlYVx1OTBlY1x1OTBlZVx1OTBmMFx1OTBmMVx1OTBmMlx1OTBmM1x1OTBmNVx1OTBmNlx1OTBmN1x1OTBm''@;'; put 'put ''OVx1OTBmYVx1OTBmYlx1OTBmY1x1OTBmZlx1OTEwMFx1OTEwMVx1OTEwM1x1OTEwNSIsMTksIlx1OTExYVx1OTExYlx1OTExYyJdLFsiZTA4MCIsIlx1OTExZFx1OTExZlx1OTEyMFx1OTEyMVx1OTEyNCIsMTAsIlx1OTEzMFx1OTEzMiIsNiwiXHU5MTNhIiw4LCJcdTkxNDRcdTU1MzdcdTU1''@;'; put 'put ''NTZcdTU1NzVcdTU1NzZcdTU1NzdcdTU1MzNcdTU1MzBcdTU1NWNcdTU1OGJcdTU1ZDJcdTU1ODNcdTU1YjFcdTU1YjlcdTU1ODhcdTU1ODFcdTU1OWZcdTU1N2VcdTU1ZDZcdTU1OTFcdTU1N2JcdTU1ZGZcdTU1YmRcdTU1YmVcdTU1OTRcdTU1OTlcdTU1ZWFcdTU1ZjdcdTU1YzlcdTU2MWZc''@;'; put 'put ''dTU1ZDFcdTU1ZWJcdTU1ZWNcdTU1ZDRcdTU1ZTZcdTU1ZGRcdTU1YzRcdTU1ZWZcdTU1ZTVcdTU1ZjJcdTU1ZjNcdTU1Y2NcdTU1Y2RcdTU1ZThcdTU1ZjVcdTU1ZTRcdThmOTRcdTU2MWVcdTU2MDhcdTU2MGNcdTU2MDFcdTU2MjRcdTU2MjNcdTU1ZmVcdTU2MDBcdTU2MjdcdTU2MmRcdTU2''@;'; put 'put ''NThcdTU2MzlcdTU2NTdcdTU2MmNcdTU2NGRcdTU2NjJcdTU2NTlcdTU2NWNcdTU2NGNcdTU2NTRcdTU2ODZcdTU2NjRcdTU2NzFcdTU2NmJcdTU2N2JcdTU2N2NcdTU2ODVcdTU2OTNcdTU2YWZcdTU2ZDRcdTU2ZDdcdTU2ZGRcdTU2ZTFcdTU2ZjVcdTU2ZWJcdTU2ZjlcdTU2ZmZcdTU3MDRc''@;'; put 'put ''dTU3MGFcdTU3MDlcdTU3MWNcdTVlMGZcdTVlMTlcdTVlMTRcdTVlMTFcdTVlMzFcdTVlM2JcdTVlM2MiXSxbImUxNDAiLCJcdTkxNDVcdTkxNDdcdTkxNDhcdTkxNTFcdTkxNTNcdTkxNTRcdTkxNTVcdTkxNTZcdTkxNThcdTkxNTlcdTkxNWJcdTkxNWNcdTkxNWZcdTkxNjBcdTkxNjZcdTkx''@;'; put 'put ''NjdcdTkxNjhcdTkxNmJcdTkxNmRcdTkxNzNcdTkxN2FcdTkxN2JcdTkxN2NcdTkxODAiLDQsIlx1OTE4Nlx1OTE4OFx1OTE4YVx1OTE4ZVx1OTE4Zlx1OTE5MyIsNiwiXHU5MTljIiw1LCJcdTkxYTQiLDUsIlx1OTFhYlx1OTFhY1x1OTFiMFx1OTFiMVx1OTFiMlx1OTFiM1x1OTFiNlx1OTFi''@;'; put 'put ''N1x1OTFiOFx1OTFiOVx1OTFiYiJdLFsiZTE4MCIsIlx1OTFiYyIsMTAsIlx1OTFjOFx1OTFjYlx1OTFkMFx1OTFkMiIsOSwiXHU5MWRkIiw4LCJcdTVlMzdcdTVlNDRcdTVlNTRcdTVlNWJcdTVlNWVcdTVlNjFcdTVjOGNcdTVjN2FcdTVjOGRcdTVjOTBcdTVjOTZcdTVjODhcdTVjOThcdTVj''@;'; put 'put ''OTlcdTVjOTFcdTVjOWFcdTVjOWNcdTVjYjVcdTVjYTJcdTVjYmRcdTVjYWNcdTVjYWJcdTVjYjFcdTVjYTNcdTVjYzFcdTVjYjdcdTVjYzRcdTVjZDJcdTVjZTRcdTVjY2JcdTVjZTVcdTVkMDJcdTVkMDNcdTVkMjdcdTVkMjZcdTVkMmVcdTVkMjRcdTVkMWVcdTVkMDZcdTVkMWJcdTVkNThc''@;'; put 'put ''dTVkM2VcdTVkMzRcdTVkM2RcdTVkNmNcdTVkNWJcdTVkNmZcdTVkNWRcdTVkNmJcdTVkNGJcdTVkNGFcdTVkNjlcdTVkNzRcdTVkODJcdTVkOTlcdTVkOWRcdThjNzNcdTVkYjdcdTVkYzVcdTVmNzNcdTVmNzdcdTVmODJcdTVmODdcdTVmODlcdTVmOGNcdTVmOTVcdTVmOTlcdTVmOWNcdTVm''@;'; put 'put ''YThcdTVmYWRcdTVmYjVcdTVmYmNcdTg4NjJcdTVmNjFcdTcyYWRcdTcyYjBcdTcyYjRcdTcyYjdcdTcyYjhcdTcyYzNcdTcyYzFcdTcyY2VcdTcyY2RcdTcyZDJcdTcyZThcdTcyZWZcdTcyZTlcdTcyZjJcdTcyZjRcdTcyZjdcdTczMDFcdTcyZjNcdTczMDNcdTcyZmEiXSxbImUyNDAiLCJc''@;'; put 'put ''dTkxZTYiLDYyXSxbImUyODAiLCJcdTkyMjUiLDMyLCJcdTcyZmJcdTczMTdcdTczMTNcdTczMjFcdTczMGFcdTczMWVcdTczMWRcdTczMTVcdTczMjJcdTczMzlcdTczMjVcdTczMmNcdTczMzhcdTczMzFcdTczNTBcdTczNGRcdTczNTdcdTczNjBcdTczNmNcdTczNmZcdTczN2VcdTgyMWJc''@;'; put 'put ''dTU5MjVcdTk4ZTdcdTU5MjRcdTU5MDJcdTk5NjNcdTk5NjciLDUsIlx1OTk3NFx1OTk3N1x1OTk3ZFx1OTk4MFx1OTk4NFx1OTk4N1x1OTk4YVx1OTk4ZFx1OTk5MFx1OTk5MVx1OTk5M1x1OTk5NFx1OTk5NVx1NWU4MFx1NWU5MVx1NWU4Ylx1NWU5Nlx1NWVhNVx1NWVhMFx1NWViOVx1NWVi''@;'; put 'put ''NVx1NWViZVx1NWViM1x1OGQ1M1x1NWVkMlx1NWVkMVx1NWVkYlx1NWVlOFx1NWVlYVx1ODFiYVx1NWZjNFx1NWZjOVx1NWZkNlx1NWZjZlx1NjAwM1x1NWZlZVx1NjAwNFx1NWZlMVx1NWZlNFx1NWZmZVx1NjAwNVx1NjAwNlx1NWZlYVx1NWZlZFx1NWZmOFx1NjAxOVx1NjAzNVx1NjAyNlx1''@;'; put 'put ''NjAxYlx1NjAwZlx1NjAwZFx1NjAyOVx1NjAyYlx1NjAwYVx1NjAzZlx1NjAyMVx1NjA3OFx1NjA3OVx1NjA3Ylx1NjA3YVx1NjA0MiJdLFsiZTM0MCIsIlx1OTI0NiIsNDUsIlx1OTI3NSIsMTZdLFsiZTM4MCIsIlx1OTI4NiIsNywiXHU5MjhmIiwyNCwiXHU2MDZhXHU2MDdkXHU2MDk2XHU2''@;'; put 'put ''MDlhXHU2MGFkXHU2MDlkXHU2MDgzXHU2MDkyXHU2MDhjXHU2MDliXHU2MGVjXHU2MGJiXHU2MGIxXHU2MGRkXHU2MGQ4XHU2MGM2XHU2MGRhXHU2MGI0XHU2MTIwXHU2MTI2XHU2MTE1XHU2MTIzXHU2MGY0XHU2MTAwXHU2MTBlXHU2MTJiXHU2MTRhXHU2MTc1XHU2MWFjXHU2MTk0XHU2MWE3''@;'; put 'put ''XHU2MWI3XHU2MWQ0XHU2MWY1XHU1ZmRkXHU5NmIzXHU5NWU5XHU5NWViXHU5NWYxXHU5NWYzXHU5NWY1XHU5NWY2XHU5NWZjXHU5NWZlXHU5NjAzXHU5NjA0XHU5NjA2XHU5NjA4XHU5NjBhXHU5NjBiXHU5NjBjXHU5NjBkXHU5NjBmXHU5NjEyXHU5NjE1XHU5NjE2XHU5NjE3XHU5NjE5XHU5''@;'; put 'put ''NjFhXHU0ZTJjXHU3MjNmXHU2MjE1XHU2YzM1XHU2YzU0XHU2YzVjXHU2YzRhXHU2Y2EzXHU2Yzg1XHU2YzkwXHU2Yzk0XHU2YzhjXHU2YzY4XHU2YzY5XHU2Yzc0XHU2Yzc2XHU2Yzg2XHU2Y2E5XHU2Y2QwXHU2Y2Q0XHU2Y2FkXHU2Y2Y3XHU2Y2Y4XHU2Y2YxXHU2Y2Q3XHU2Y2IyXHU2Y2Uw''@;'; put 'put ''XHU2Y2Q2XHU2Y2ZhXHU2Y2ViXHU2Y2VlXHU2Y2IxXHU2Y2QzXHU2Y2VmXHU2Y2ZlIl0sWyJlNDQwIiwiXHU5MmE4Iiw1LCJcdTkyYWYiLDI0LCJcdTkyYzkiLDMxXSxbImU0ODAiLCJcdTkyZTkiLDMyLCJcdTZkMzlcdTZkMjdcdTZkMGNcdTZkNDNcdTZkNDhcdTZkMDdcdTZkMDRcdTZkMTlc''@;'; put 'put ''dTZkMGVcdTZkMmJcdTZkNGRcdTZkMmVcdTZkMzVcdTZkMWFcdTZkNGZcdTZkNTJcdTZkNTRcdTZkMzNcdTZkOTFcdTZkNmZcdTZkOWVcdTZkYTBcdTZkNWVcdTZkOTNcdTZkOTRcdTZkNWNcdTZkNjBcdTZkN2NcdTZkNjNcdTZlMWFcdTZkYzdcdTZkYzVcdTZkZGVcdTZlMGVcdTZkYmZcdTZk''@;'; put 'put ''ZTBcdTZlMTFcdTZkZTZcdTZkZGRcdTZkZDlcdTZlMTZcdTZkYWJcdTZlMGNcdTZkYWVcdTZlMmJcdTZlNmVcdTZlNGVcdTZlNmJcdTZlYjJcdTZlNWZcdTZlODZcdTZlNTNcdTZlNTRcdTZlMzJcdTZlMjVcdTZlNDRcdTZlZGZcdTZlYjFcdTZlOThcdTZlZTBcdTZmMmRcdTZlZTJcdTZlYTVc''@;'; put 'put ''dTZlYTdcdTZlYmRcdTZlYmJcdTZlYjdcdTZlZDdcdTZlYjRcdTZlY2ZcdTZlOGZcdTZlYzJcdTZlOWZcdTZmNjJcdTZmNDZcdTZmNDdcdTZmMjRcdTZmMTVcdTZlZjlcdTZmMmZcdTZmMzZcdTZmNGJcdTZmNzRcdTZmMmFcdTZmMDlcdTZmMjlcdTZmODlcdTZmOGRcdTZmOGNcdTZmNzhcdTZm''@;'; put 'put ''NzJcdTZmN2NcdTZmN2FcdTZmZDEiXSxbImU1NDAiLCJcdTkzMGEiLDUxLCJcdTkzM2YiLDEwXSxbImU1ODAiLCJcdTkzNGEiLDMxLCJcdTkzNmJcdTZmYzlcdTZmYTdcdTZmYjlcdTZmYjZcdTZmYzJcdTZmZTFcdTZmZWVcdTZmZGVcdTZmZTBcdTZmZWZcdTcwMWFcdTcwMjNcdTcwMWJcdTcw''@;'; put 'put ''MzlcdTcwMzVcdTcwNGZcdTcwNWVcdTViODBcdTViODRcdTViOTVcdTViOTNcdTViYTVcdTViYjhcdTc1MmZcdTlhOWVcdTY0MzRcdTViZTRcdTViZWVcdTg5MzBcdTViZjBcdThlNDdcdThiMDdcdThmYjZcdThmZDNcdThmZDVcdThmZTVcdThmZWVcdThmZTRcdThmZTlcdThmZTZcdThmZjNc''@;'; put 'put ''dThmZThcdTkwMDVcdTkwMDRcdTkwMGJcdTkwMjZcdTkwMTFcdTkwMGRcdTkwMTZcdTkwMjFcdTkwMzVcdTkwMzZcdTkwMmRcdTkwMmZcdTkwNDRcdTkwNTFcdTkwNTJcdTkwNTBcdTkwNjhcdTkwNThcdTkwNjJcdTkwNWJcdTY2YjlcdTkwNzRcdTkwN2RcdTkwODJcdTkwODhcdTkwODNcdTkw''@;'; put 'put ''OGJcdTVmNTBcdTVmNTdcdTVmNTZcdTVmNThcdTVjM2JcdTU0YWJcdTVjNTBcdTVjNTlcdTViNzFcdTVjNjNcdTVjNjZcdTdmYmNcdTVmMmFcdTVmMjlcdTVmMmRcdTgyNzRcdTVmM2NcdTliM2JcdTVjNmVcdTU5ODFcdTU5ODNcdTU5OGRcdTU5YTlcdTU5YWFcdTU5YTMiXSxbImU2NDAiLCJc''@;'; put 'put ''dTkzNmMiLDM0LCJcdTkzOTAiLDI3XSxbImU2ODAiLCJcdTkzYWMiLDI5LCJcdTkzY2JcdTkzY2NcdTkzY2RcdTU5OTdcdTU5Y2FcdTU5YWJcdTU5OWVcdTU5YTRcdTU5ZDJcdTU5YjJcdTU5YWZcdTU5ZDdcdTU5YmVcdTVhMDVcdTVhMDZcdTU5ZGRcdTVhMDhcdTU5ZTNcdTU5ZDhcdTU5Zjlc''@;'; put 'put ''dTVhMGNcdTVhMDlcdTVhMzJcdTVhMzRcdTVhMTFcdTVhMjNcdTVhMTNcdTVhNDBcdTVhNjdcdTVhNGFcdTVhNTVcdTVhM2NcdTVhNjJcdTVhNzVcdTgwZWNcdTVhYWFcdTVhOWJcdTVhNzdcdTVhN2FcdTVhYmVcdTVhZWJcdTVhYjJcdTVhZDJcdTVhZDRcdTVhYjhcdTVhZTBcdTVhZTNcdTVh''@;'; put 'put ''ZjFcdTVhZDZcdTVhZTZcdTVhZDhcdTVhZGNcdTViMDlcdTViMTdcdTViMTZcdTViMzJcdTViMzdcdTViNDBcdTVjMTVcdTVjMWNcdTViNWFcdTViNjVcdTViNzNcdTViNTFcdTViNTNcdTViNjJcdTlhNzVcdTlhNzdcdTlhNzhcdTlhN2FcdTlhN2ZcdTlhN2RcdTlhODBcdTlhODFcdTlhODVc''@;'; put 'put ''dTlhODhcdTlhOGFcdTlhOTBcdTlhOTJcdTlhOTNcdTlhOTZcdTlhOThcdTlhOWJcdTlhOWNcdTlhOWRcdTlhOWZcdTlhYTBcdTlhYTJcdTlhYTNcdTlhYTVcdTlhYTdcdTdlOWZcdTdlYTFcdTdlYTNcdTdlYTVcdTdlYThcdTdlYTkiXSxbImU3NDAiLCJcdTkzY2UiLDcsIlx1OTNkNyIsNTRd''@;'; put 'put ''LFsiZTc4MCIsIlx1OTQwZSIsMzIsIlx1N2VhZFx1N2ViMFx1N2ViZVx1N2VjMFx1N2VjMVx1N2VjMlx1N2VjOVx1N2VjYlx1N2VjY1x1N2VkMFx1N2VkNFx1N2VkN1x1N2VkYlx1N2VlMFx1N2VlMVx1N2VlOFx1N2VlYlx1N2VlZVx1N2VlZlx1N2VmMVx1N2VmMlx1N2YwZFx1N2VmNlx1N2Vm''@;'; put 'put ''YVx1N2VmYlx1N2VmZVx1N2YwMVx1N2YwMlx1N2YwM1x1N2YwN1x1N2YwOFx1N2YwYlx1N2YwY1x1N2YwZlx1N2YxMVx1N2YxMlx1N2YxN1x1N2YxOVx1N2YxY1x1N2YxYlx1N2YxZlx1N2YyMSIsNiwiXHU3ZjJhXHU3ZjJiXHU3ZjJjXHU3ZjJkXHU3ZjJmIiw0LCJcdTdmMzVcdTVlN2FcdTc1''@;'; put 'put ''N2ZcdTVkZGJcdTc1M2VcdTkwOTVcdTczOGVcdTczOTFcdTczYWVcdTczYTJcdTczOWZcdTczY2ZcdTczYzJcdTczZDFcdTczYjdcdTczYjNcdTczYzBcdTczYzlcdTczYzhcdTczZTVcdTczZDlcdTk4N2NcdTc0MGFcdTczZTlcdTczZTdcdTczZGVcdTczYmFcdTczZjJcdTc0MGZcdTc0MmFc''@;'; put 'put ''dTc0NWJcdTc0MjZcdTc0MjVcdTc0MjhcdTc0MzBcdTc0MmVcdTc0MmMiXSxbImU4NDAiLCJcdTk0MmYiLDE0LCJcdTk0M2YiLDQzLCJcdTk0NmNcdTk0NmRcdTk0NmVcdTk0NmYiXSxbImU4ODAiLCJcdTk0NzAiLDIwLCJcdTk0OTFcdTk0OTZcdTk0OThcdTk0YzdcdTk0Y2ZcdTk0ZDNcdTk0''@;'; put 'put ''ZDRcdTk0ZGFcdTk0ZTZcdTk0ZmJcdTk1MWNcdTk1MjBcdTc0MWJcdTc0MWFcdTc0NDFcdTc0NWNcdTc0NTdcdTc0NTVcdTc0NTlcdTc0NzdcdTc0NmRcdTc0N2VcdTc0OWNcdTc0OGVcdTc0ODBcdTc0ODFcdTc0ODdcdTc0OGJcdTc0OWVcdTc0YThcdTc0YTlcdTc0OTBcdTc0YTdcdTc0ZDJc''@;'; put 'put ''dTc0YmFcdTk3ZWFcdTk3ZWJcdTk3ZWNcdTY3NGNcdTY3NTNcdTY3NWVcdTY3NDhcdTY3NjlcdTY3YTVcdTY3ODdcdTY3NmFcdTY3NzNcdTY3OThcdTY3YTdcdTY3NzVcdTY3YThcdTY3OWVcdTY3YWRcdTY3OGJcdTY3NzdcdTY3N2NcdTY3ZjBcdTY4MDlcdTY3ZDhcdTY4MGFcdTY3ZTlcdTY3''@;'; put 'put ''YjBcdTY4MGNcdTY3ZDlcdTY3YjVcdTY3ZGFcdTY3YjNcdTY3ZGRcdTY4MDBcdTY3YzNcdTY3YjhcdTY3ZTJcdTY4MGVcdTY3YzFcdTY3ZmRcdTY4MzJcdTY4MzNcdTY4NjBcdTY4NjFcdTY4NGVcdTY4NjJcdTY4NDRcdTY4NjRcdTY4ODNcdTY4MWRcdTY4NTVcdTY4NjZcdTY4NDFcdTY4Njdc''@;'; put 'put ''dTY4NDBcdTY4M2VcdTY4NGFcdTY4NDlcdTY4MjlcdTY4YjVcdTY4OGZcdTY4NzRcdTY4NzdcdTY4OTNcdTY4NmJcdTY4YzJcdTY5NmVcdTY4ZmNcdTY5MWZcdTY5MjBcdTY4ZjkiXSxbImU5NDAiLCJcdTk1MjdcdTk1MzNcdTk1M2RcdTk1NDNcdTk1NDhcdTk1NGJcdTk1NTVcdTk1NWFcdTk1''@;'; put 'put ''NjBcdTk1NmVcdTk1NzRcdTk1NzVcdTk1NzciLDcsIlx1OTU4MCIsNDJdLFsiZTk4MCIsIlx1OTVhYiIsMzIsIlx1NjkyNFx1NjhmMFx1NjkwYlx1NjkwMVx1Njk1N1x1NjhlM1x1NjkxMFx1Njk3MVx1NjkzOVx1Njk2MFx1Njk0Mlx1Njk1ZFx1Njk4NFx1Njk2Ylx1Njk4MFx1Njk5OFx1Njk3''@;'; put 'put ''OFx1NjkzNFx1NjljY1x1Njk4N1x1Njk4OFx1NjljZVx1Njk4OVx1Njk2Nlx1Njk2M1x1Njk3OVx1Njk5Ylx1NjlhN1x1NjliYlx1NjlhYlx1NjlhZFx1NjlkNFx1NjliMVx1NjljMVx1NjljYVx1NjlkZlx1Njk5NVx1NjllMFx1Njk4ZFx1NjlmZlx1NmEyZlx1NjllZFx1NmExN1x1NmExOFx1''@;'; put 'put ''NmE2NVx1NjlmMlx1NmE0NFx1NmEzZVx1NmFhMFx1NmE1MFx1NmE1Ylx1NmEzNVx1NmE4ZVx1NmE3OVx1NmEzZFx1NmEyOFx1NmE1OFx1NmE3Y1x1NmE5MVx1NmE5MFx1NmFhOVx1NmE5N1x1NmFhYlx1NzMzN1x1NzM1Mlx1NmI4MVx1NmI4Mlx1NmI4N1x1NmI4NFx1NmI5Mlx1NmI5M1x1NmI4''@;'; put 'put ''ZFx1NmI5YVx1NmI5Ylx1NmJhMVx1NmJhYVx1OGY2Ylx1OGY2ZFx1OGY3MVx1OGY3Mlx1OGY3M1x1OGY3NVx1OGY3Nlx1OGY3OFx1OGY3N1x1OGY3OVx1OGY3YVx1OGY3Y1x1OGY3ZVx1OGY4MVx1OGY4Mlx1OGY4NFx1OGY4N1x1OGY4YiJdLFsiZWE0MCIsIlx1OTVjYyIsMjcsIlx1OTVlY1x1''@;'; put 'put ''OTVmZlx1OTYwN1x1OTYxM1x1OTYxOFx1OTYxYlx1OTYxZVx1OTYyMFx1OTYyMyIsNiwiXHU5NjJiXHU5NjJjXHU5NjJkXHU5NjJmXHU5NjMwXHU5NjM3XHU5NjM4XHU5NjM5XHU5NjNhXHU5NjNlXHU5NjQxXHU5NjQzXHU5NjRhXHU5NjRlXHU5NjRmXHU5NjUxXHU5NjUyXHU5NjUzXHU5NjU2''@;'; put 'put ''XHU5NjU3Il0sWyJlYTgwIiwiXHU5NjU4XHU5NjU5XHU5NjVhXHU5NjVjXHU5NjVkXHU5NjVlXHU5NjYwXHU5NjYzXHU5NjY1XHU5NjY2XHU5NjZiXHU5NjZkIiw0LCJcdTk2NzNcdTk2NzgiLDEyLCJcdTk2ODdcdTk2ODlcdTk2OGFcdThmOGRcdThmOGVcdThmOGZcdThmOThcdThmOWFcdThl''@;'; put 'put ''Y2VcdTYyMGJcdTYyMTdcdTYyMWJcdTYyMWZcdTYyMjJcdTYyMjFcdTYyMjVcdTYyMjRcdTYyMmNcdTgxZTdcdTc0ZWZcdTc0ZjRcdTc0ZmZcdTc1MGZcdTc1MTFcdTc1MTNcdTY1MzRcdTY1ZWVcdTY1ZWZcdTY1ZjBcdTY2MGFcdTY2MTlcdTY3NzJcdTY2MDNcdTY2MTVcdTY2MDBcdTcwODVc''@;'; put 'put ''dTY2ZjdcdTY2MWRcdTY2MzRcdTY2MzFcdTY2MzZcdTY2MzVcdTgwMDZcdTY2NWZcdTY2NTRcdTY2NDFcdTY2NGZcdTY2NTZcdTY2NjFcdTY2NTdcdTY2NzdcdTY2ODRcdTY2OGNcdTY2YTdcdTY2OWRcdTY2YmVcdTY2ZGJcdTY2ZGNcdTY2ZTZcdTY2ZTlcdThkMzJcdThkMzNcdThkMzZcdThk''@;'; put 'put ''M2JcdThkM2RcdThkNDBcdThkNDVcdThkNDZcdThkNDhcdThkNDlcdThkNDdcdThkNGRcdThkNTVcdThkNTlcdTg5YzdcdTg5Y2FcdTg5Y2JcdTg5Y2NcdTg5Y2VcdTg5Y2ZcdTg5ZDBcdTg5ZDFcdTcyNmVcdTcyOWZcdTcyNWRcdTcyNjZcdTcyNmZcdTcyN2VcdTcyN2ZcdTcyODRcdTcyOGJc''@;'; put 'put ''dTcyOGRcdTcyOGZcdTcyOTJcdTYzMDhcdTYzMzJcdTYzYjAiXSxbImViNDAiLCJcdTk2OGNcdTk2OGVcdTk2OTFcdTk2OTJcdTk2OTNcdTk2OTVcdTk2OTZcdTk2OWFcdTk2OWJcdTk2OWQiLDksIlx1OTZhOCIsNywiXHU5NmIxXHU5NmIyXHU5NmI0XHU5NmI1XHU5NmI3XHU5NmI4XHU5NmJh''@;'; put 'put ''XHU5NmJiXHU5NmJmXHU5NmMyXHU5NmMzXHU5NmM4XHU5NmNhXHU5NmNiXHU5NmQwXHU5NmQxXHU5NmQzXHU5NmQ0XHU5NmQ2Iiw5LCJcdTk2ZTEiLDYsIlx1OTZlYiJdLFsiZWI4MCIsIlx1OTZlY1x1OTZlZFx1OTZlZVx1OTZmMFx1OTZmMVx1OTZmMlx1OTZmNFx1OTZmNVx1OTZmOFx1OTZm''@;'; put 'put ''YVx1OTZmYlx1OTZmY1x1OTZmZFx1OTZmZlx1OTcwMlx1OTcwM1x1OTcwNVx1OTcwYVx1OTcwYlx1OTcwY1x1OTcxMFx1OTcxMVx1OTcxMlx1OTcxNFx1OTcxNVx1OTcxNyIsNCwiXHU5NzFkXHU5NzFmXHU5NzIwXHU2NDNmXHU2NGQ4XHU4MDA0XHU2YmVhXHU2YmYzXHU2YmZkXHU2YmY1XHU2''@;'; put 'put ''YmY5XHU2YzA1XHU2YzA3XHU2YzA2XHU2YzBkXHU2YzE1XHU2YzE4XHU2YzE5XHU2YzFhXHU2YzIxXHU2YzI5XHU2YzI0XHU2YzJhXHU2YzMyXHU2NTM1XHU2NTU1XHU2NTZiXHU3MjRkXHU3MjUyXHU3MjU2XHU3MjMwXHU4NjYyXHU1MjE2XHU4MDlmXHU4MDljXHU4MDkzXHU4MGJjXHU2NzBh''@;'; put 'put ''XHU4MGJkXHU4MGIxXHU4MGFiXHU4MGFkXHU4MGI0XHU4MGI3XHU4MGU3XHU4MGU4XHU4MGU5XHU4MGVhXHU4MGRiXHU4MGMyXHU4MGM0XHU4MGQ5XHU4MGNkXHU4MGQ3XHU2NzEwXHU4MGRkXHU4MGViXHU4MGYxXHU4MGY0XHU4MGVkXHU4MTBkXHU4MTBlXHU4MGYyXHU4MGZjXHU2NzE1XHU4''@;'; put 'put ''MTEyXHU4YzVhXHU4MTM2XHU4MTFlXHU4MTJjXHU4MTE4XHU4MTMyXHU4MTQ4XHU4MTRjXHU4MTUzXHU4MTc0XHU4MTU5XHU4MTVhXHU4MTcxXHU4MTYwXHU4MTY5XHU4MTdjXHU4MTdkXHU4MTZkXHU4MTY3XHU1ODRkXHU1YWI1XHU4MTg4XHU4MTgyXHU4MTkxXHU2ZWQ1XHU4MWEzXHU4MWFh''@;'; put 'put ''XHU4MWNjXHU2NzI2XHU4MWNhXHU4MWJiIl0sWyJlYzQwIiwiXHU5NzIxIiw4LCJcdTk3MmJcdTk3MmNcdTk3MmVcdTk3MmZcdTk3MzFcdTk3MzMiLDQsIlx1OTczYVx1OTczYlx1OTczY1x1OTczZFx1OTczZiIsMTgsIlx1OTc1NFx1OTc1NVx1OTc1N1x1OTc1OFx1OTc1YVx1OTc1Y1x1OTc1''@;'; put 'put ''ZFx1OTc1Zlx1OTc2M1x1OTc2NFx1OTc2Nlx1OTc2N1x1OTc2OFx1OTc2YSIsN10sWyJlYzgwIiwiXHU5NzcyXHU5Nzc1XHU5Nzc3Iiw0LCJcdTk3N2QiLDcsIlx1OTc4NiIsNCwiXHU5NzhjXHU5NzhlXHU5NzhmXHU5NzkwXHU5NzkzXHU5Nzk1XHU5Nzk2XHU5Nzk3XHU5Nzk5Iiw0LCJcdTgx''@;'; put 'put ''YzFcdTgxYTZcdTZiMjRcdTZiMzdcdTZiMzlcdTZiNDNcdTZiNDZcdTZiNTlcdTk4ZDFcdTk4ZDJcdTk4ZDNcdTk4ZDVcdTk4ZDlcdTk4ZGFcdTZiYjNcdTVmNDBcdTZiYzJcdTg5ZjNcdTY1OTBcdTlmNTFcdTY1OTNcdTY1YmNcdTY1YzZcdTY1YzRcdTY1YzNcdTY1Y2NcdTY1Y2VcdTY1ZDJc''@;'; put 'put ''dTY1ZDZcdTcwODBcdTcwOWNcdTcwOTZcdTcwOWRcdTcwYmJcdTcwYzBcdTcwYjdcdTcwYWJcdTcwYjFcdTcwZThcdTcwY2FcdTcxMTBcdTcxMTNcdTcxMTZcdTcxMmZcdTcxMzFcdTcxNzNcdTcxNWNcdTcxNjhcdTcxNDVcdTcxNzJcdTcxNGFcdTcxNzhcdTcxN2FcdTcxOThcdTcxYjNcdTcx''@;'; put 'put ''YjVcdTcxYThcdTcxYTBcdTcxZTBcdTcxZDRcdTcxZTdcdTcxZjlcdTcyMWRcdTcyMjhcdTcwNmNcdTcxMThcdTcxNjZcdTcxYjlcdTYyM2VcdTYyM2RcdTYyNDNcdTYyNDhcdTYyNDlcdTc5M2JcdTc5NDBcdTc5NDZcdTc5NDlcdTc5NWJcdTc5NWNcdTc5NTNcdTc5NWFcdTc5NjJcdTc5NTdc''@;'; put 'put ''dTc5NjBcdTc5NmZcdTc5NjdcdTc5N2FcdTc5ODVcdTc5OGFcdTc5OWFcdTc5YTdcdTc5YjNcdTVmZDFcdTVmZDAiXSxbImVkNDAiLCJcdTk3OWVcdTk3OWZcdTk3YTFcdTk3YTJcdTk3YTQiLDYsIlx1OTdhY1x1OTdhZVx1OTdiMFx1OTdiMVx1OTdiM1x1OTdiNSIsNDZdLFsiZWQ4MCIsIlx1''@;'; put 'put ''OTdlNFx1OTdlNVx1OTdlOFx1OTdlZSIsNCwiXHU5N2Y0XHU5N2Y3IiwyMywiXHU2MDNjXHU2MDVkXHU2MDVhXHU2MDY3XHU2MDQxXHU2MDU5XHU2MDYzXHU2MGFiXHU2MTA2XHU2MTBkXHU2MTVkXHU2MWE5XHU2MTlkXHU2MWNiXHU2MWQxXHU2MjA2XHU4MDgwXHU4MDdmXHU2YzkzXHU2Y2Y2''@;'; put 'put ''XHU2ZGZjXHU3N2Y2XHU3N2Y4XHU3ODAwXHU3ODA5XHU3ODE3XHU3ODE4XHU3ODExXHU2NWFiXHU3ODJkXHU3ODFjXHU3ODFkXHU3ODM5XHU3ODNhXHU3ODNiXHU3ODFmXHU3ODNjXHU3ODI1XHU3ODJjXHU3ODIzXHU3ODI5XHU3ODRlXHU3ODZkXHU3ODU2XHU3ODU3XHU3ODI2XHU3ODUwXHU3''@;'; put 'put ''ODQ3XHU3ODRjXHU3ODZhXHU3ODliXHU3ODkzXHU3ODlhXHU3ODg3XHU3ODljXHU3OGExXHU3OGEzXHU3OGIyXHU3OGI5XHU3OGE1XHU3OGQ0XHU3OGQ5XHU3OGM5XHU3OGVjXHU3OGYyXHU3OTA1XHU3OGY0XHU3OTEzXHU3OTI0XHU3OTFlXHU3OTM0XHU5ZjliXHU5ZWY5XHU5ZWZiXHU5ZWZj''@;'; put 'put ''XHU3NmYxXHU3NzA0XHU3NzBkXHU3NmY5XHU3NzA3XHU3NzA4XHU3NzFhXHU3NzIyXHU3NzE5XHU3NzJkXHU3NzI2XHU3NzM1XHU3NzM4XHU3NzUwXHU3NzUxXHU3NzQ3XHU3NzQzXHU3NzVhXHU3NzY4Il0sWyJlZTQwIiwiXHU5ODBmIiw2Ml0sWyJlZTgwIiwiXHU5ODRlIiwzMiwiXHU3NzYy''@;'; put 'put ''XHU3NzY1XHU3NzdmXHU3NzhkXHU3NzdkXHU3NzgwXHU3NzhjXHU3NzkxXHU3NzlmXHU3N2EwXHU3N2IwXHU3N2I1XHU3N2JkXHU3NTNhXHU3NTQwXHU3NTRlXHU3NTRiXHU3NTQ4XHU3NTViXHU3NTcyXHU3NTc5XHU3NTgzXHU3ZjU4XHU3ZjYxXHU3ZjVmXHU4YTQ4XHU3ZjY4XHU3Zjc0XHU3''@;'; put 'put ''ZjcxXHU3Zjc5XHU3ZjgxXHU3ZjdlXHU3NmNkXHU3NmU1XHU4ODMyXHU5NDg1XHU5NDg2XHU5NDg3XHU5NDhiXHU5NDhhXHU5NDhjXHU5NDhkXHU5NDhmXHU5NDkwXHU5NDk0XHU5NDk3XHU5NDk1XHU5NDlhXHU5NDliXHU5NDljXHU5NGEzXHU5NGE0XHU5NGFiXHU5NGFhXHU5NGFkXHU5NGFj''@;'; put 'put ''XHU5NGFmXHU5NGIwXHU5NGIyXHU5NGI0XHU5NGI2Iiw0LCJcdTk0YmNcdTk0YmRcdTk0YmZcdTk0YzRcdTk0YzgiLDYsIlx1OTRkMFx1OTRkMVx1OTRkMlx1OTRkNVx1OTRkNlx1OTRkN1x1OTRkOVx1OTRkOFx1OTRkYlx1OTRkZVx1OTRkZlx1OTRlMFx1OTRlMlx1OTRlNFx1OTRlNVx1OTRl''@;'; put 'put ''N1x1OTRlOFx1OTRlYSJdLFsiZWY0MCIsIlx1OTg2ZiIsNSwiXHU5ODhiXHU5ODhlXHU5ODkyXHU5ODk1XHU5ODk5XHU5OGEzXHU5OGE4IiwzNywiXHU5OGNmXHU5OGQwXHU5OGQ0XHU5OGQ2XHU5OGQ3XHU5OGRiXHU5OGRjXHU5OGRkXHU5OGUwIiw0XSxbImVmODAiLCJcdTk4ZTVcdTk4ZTZc''@;'; put 'put ''dTk4ZTkiLDMwLCJcdTk0ZTlcdTk0ZWJcdTk0ZWVcdTk0ZWZcdTk0ZjNcdTk0ZjRcdTk0ZjVcdTk0ZjdcdTk0ZjlcdTk0ZmNcdTk0ZmRcdTk0ZmZcdTk1MDNcdTk1MDJcdTk1MDZcdTk1MDdcdTk1MDlcdTk1MGFcdTk1MGRcdTk1MGVcdTk1MGZcdTk1MTIiLDQsIlx1OTUxOFx1OTUxYlx1OTUx''@;'; put 'put ''ZFx1OTUxZVx1OTUxZlx1OTUyMlx1OTUyYVx1OTUyYlx1OTUyOVx1OTUyY1x1OTUzMVx1OTUzMlx1OTUzNFx1OTUzNlx1OTUzN1x1OTUzOFx1OTUzY1x1OTUzZVx1OTUzZlx1OTU0Mlx1OTUzNVx1OTU0NFx1OTU0NVx1OTU0Nlx1OTU0OVx1OTU0Y1x1OTU0ZVx1OTU0Zlx1OTU1Mlx1OTU1M1x1''@;'; put 'put ''OTU1NFx1OTU1Nlx1OTU1N1x1OTU1OFx1OTU1OVx1OTU1Ylx1OTU1ZVx1OTU1Zlx1OTU1ZFx1OTU2MVx1OTU2Mlx1OTU2NCIsOCwiXHU5NTZmXHU5NTcxXHU5NTcyXHU5NTczXHU5NTNhXHU3N2U3XHU3N2VjXHU5NmM5XHU3OWQ1XHU3OWVkXHU3OWUzXHU3OWViXHU3YTA2XHU1ZDQ3XHU3YTAz''@;'; put 'put ''XHU3YTAyXHU3YTFlXHU3YTE0Il0sWyJmMDQwIiwiXHU5OTA4Iiw0LCJcdTk5MGVcdTk5MGZcdTk5MTEiLDI4LCJcdTk5MmYiLDI2XSxbImYwODAiLCJcdTk5NGEiLDksIlx1OTk1NiIsMTIsIlx1OTk2NFx1OTk2Nlx1OTk3M1x1OTk3OFx1OTk3OVx1OTk3Ylx1OTk3ZVx1OTk4Mlx1OTk4M1x1''@;'; put 'put ''OTk4OVx1N2EzOVx1N2EzN1x1N2E1MVx1OWVjZlx1OTlhNVx1N2E3MFx1NzY4OFx1NzY4ZVx1NzY5M1x1NzY5OVx1NzZhNFx1NzRkZVx1NzRlMFx1NzUyY1x1OWUyMFx1OWUyMlx1OWUyOCIsNCwiXHU5ZTMyXHU5ZTMxXHU5ZTM2XHU5ZTM4XHU5ZTM3XHU5ZTM5XHU5ZTNhXHU5ZTNlXHU5ZTQx''@;'; put 'put ''XHU5ZTQyXHU5ZTQ0XHU5ZTQ2XHU5ZTQ3XHU5ZTQ4XHU5ZTQ5XHU5ZTRiXHU5ZTRjXHU5ZTRlXHU5ZTUxXHU5ZTU1XHU5ZTU3XHU5ZTVhXHU5ZTViXHU5ZTVjXHU5ZTVlXHU5ZTYzXHU5ZTY2Iiw2LCJcdTllNzFcdTllNmRcdTllNzNcdTc1OTJcdTc1OTRcdTc1OTZcdTc1YTBcdTc1OWRcdTc1''@;'; put 'put ''YWNcdTc1YTNcdTc1YjNcdTc1YjRcdTc1YjhcdTc1YzRcdTc1YjFcdTc1YjBcdTc1YzNcdTc1YzJcdTc1ZDZcdTc1Y2RcdTc1ZTNcdTc1ZThcdTc1ZTZcdTc1ZTRcdTc1ZWJcdTc1ZTdcdTc2MDNcdTc1ZjFcdTc1ZmNcdTc1ZmZcdTc2MTBcdTc2MDBcdTc2MDVcdTc2MGNcdTc2MTdcdTc2MGFc''@;'; put 'put ''dTc2MjVcdTc2MThcdTc2MTVcdTc2MTkiXSxbImYxNDAiLCJcdTk5OGNcdTk5OGVcdTk5OWEiLDEwLCJcdTk5YTZcdTk5YTdcdTk5YTkiLDQ3XSxbImYxODAiLCJcdTk5ZDkiLDMyLCJcdTc2MWJcdTc2M2NcdTc2MjJcdTc2MjBcdTc2NDBcdTc2MmRcdTc2MzBcdTc2M2ZcdTc2MzVcdTc2NDNc''@;'; put 'put ''dTc2M2VcdTc2MzNcdTc2NGRcdTc2NWVcdTc2NTRcdTc2NWNcdTc2NTZcdTc2NmJcdTc2NmZcdTdmY2FcdTdhZTZcdTdhNzhcdTdhNzlcdTdhODBcdTdhODZcdTdhODhcdTdhOTVcdTdhYTZcdTdhYTBcdTdhYWNcdTdhYThcdTdhYWRcdTdhYjNcdTg4NjRcdTg4NjlcdTg4NzJcdTg4N2RcdTg4''@;'; put 'put ''N2ZcdTg4ODJcdTg4YTJcdTg4YzZcdTg4YjdcdTg4YmNcdTg4YzlcdTg4ZTJcdTg4Y2VcdTg4ZTNcdTg4ZTVcdTg4ZjFcdTg5MWFcdTg4ZmNcdTg4ZThcdTg4ZmVcdTg4ZjBcdTg5MjFcdTg5MTlcdTg5MTNcdTg5MWJcdTg5MGFcdTg5MzRcdTg5MmJcdTg5MzZcdTg5NDFcdTg5NjZcdTg5N2Jc''@;'; put 'put ''dTc1OGJcdTgwZTVcdTc2YjJcdTc2YjRcdTc3ZGNcdTgwMTJcdTgwMTRcdTgwMTZcdTgwMWNcdTgwMjBcdTgwMjJcdTgwMjVcdTgwMjZcdTgwMjdcdTgwMjlcdTgwMjhcdTgwMzFcdTgwMGJcdTgwMzVcdTgwNDNcdTgwNDZcdTgwNGRcdTgwNTJcdTgwNjlcdTgwNzFcdTg5ODNcdTk4NzhcdTk4''@;'; put 'put ''ODBcdTk4ODMiXSxbImYyNDAiLCJcdTk5ZmEiLDYyXSxbImYyODAiLCJcdTlhMzkiLDMyLCJcdTk4ODlcdTk4OGNcdTk4OGRcdTk4OGZcdTk4OTRcdTk4OWFcdTk4OWJcdTk4OWVcdTk4OWZcdTk4YTFcdTk4YTJcdTk4YTVcdTk4YTZcdTg2NGRcdTg2NTRcdTg2NmNcdTg2NmVcdTg2N2ZcdTg2''@;'; put 'put ''N2FcdTg2N2NcdTg2N2JcdTg2YThcdTg2OGRcdTg2OGJcdTg2YWNcdTg2OWRcdTg2YTdcdTg2YTNcdTg2YWFcdTg2OTNcdTg2YTlcdTg2YjZcdTg2YzRcdTg2YjVcdTg2Y2VcdTg2YjBcdTg2YmFcdTg2YjFcdTg2YWZcdTg2YzlcdTg2Y2ZcdTg2YjRcdTg2ZTlcdTg2ZjFcdTg2ZjJcdTg2ZWRc''@;'; put 'put ''dTg2ZjNcdTg2ZDBcdTg3MTNcdTg2ZGVcdTg2ZjRcdTg2ZGZcdTg2ZDhcdTg2ZDFcdTg3MDNcdTg3MDdcdTg2ZjhcdTg3MDhcdTg3MGFcdTg3MGRcdTg3MDlcdTg3MjNcdTg3M2JcdTg3MWVcdTg3MjVcdTg3MmVcdTg3MWFcdTg3M2VcdTg3NDhcdTg3MzRcdTg3MzFcdTg3MjlcdTg3MzdcdTg3''@;'; put 'put ''M2ZcdTg3ODJcdTg3MjJcdTg3N2RcdTg3N2VcdTg3N2JcdTg3NjBcdTg3NzBcdTg3NGNcdTg3NmVcdTg3OGJcdTg3NTNcdTg3NjNcdTg3N2NcdTg3NjRcdTg3NTlcdTg3NjVcdTg3OTNcdTg3YWZcdTg3YThcdTg3ZDIiXSxbImYzNDAiLCJcdTlhNWEiLDE3LCJcdTlhNzJcdTlhODNcdTlhODlc''@;'; put 'put ''dTlhOGRcdTlhOGVcdTlhOTRcdTlhOTVcdTlhOTlcdTlhYTZcdTlhYTkiLDYsIlx1OWFiMlx1OWFiM1x1OWFiNFx1OWFiNVx1OWFiOVx1OWFiYlx1OWFiZFx1OWFiZVx1OWFiZlx1OWFjM1x1OWFjNFx1OWFjNiIsNCwiXHU5YWNkXHU5YWNlXHU5YWNmXHU5YWQwXHU5YWQyXHU5YWQ0XHU5YWQ1''@;'; put 'put ''XHU5YWQ2XHU5YWQ3XHU5YWQ5XHU5YWRhXHU5YWRiXHU5YWRjIl0sWyJmMzgwIiwiXHU5YWRkXHU5YWRlXHU5YWUwXHU5YWUyXHU5YWUzXHU5YWU0XHU5YWU1XHU5YWU3XHU5YWU4XHU5YWU5XHU5YWVhXHU5YWVjXHU5YWVlXHU5YWYwIiw4LCJcdTlhZmFcdTlhZmMiLDYsIlx1OWIwNFx1OWIw''@;'; put 'put ''NVx1OWIwNlx1ODdjNlx1ODc4OFx1ODc4NVx1ODdhZFx1ODc5N1x1ODc4M1x1ODdhYlx1ODdlNVx1ODdhY1x1ODdiNVx1ODdiM1x1ODdjYlx1ODdkM1x1ODdiZFx1ODdkMVx1ODdjMFx1ODdjYVx1ODdkYlx1ODdlYVx1ODdlMFx1ODdlZVx1ODgxNlx1ODgxM1x1ODdmZVx1ODgwYVx1ODgxYlx1''@;'; put 'put ''ODgyMVx1ODgzOVx1ODgzY1x1N2YzNlx1N2Y0Mlx1N2Y0NFx1N2Y0NVx1ODIxMFx1N2FmYVx1N2FmZFx1N2IwOFx1N2IwM1x1N2IwNFx1N2IxNVx1N2IwYVx1N2IyYlx1N2IwZlx1N2I0N1x1N2IzOFx1N2IyYVx1N2IxOVx1N2IyZVx1N2IzMVx1N2IyMFx1N2IyNVx1N2IyNFx1N2IzM1x1N2Iz''@;'; put 'put ''ZVx1N2IxZVx1N2I1OFx1N2I1YVx1N2I0NVx1N2I3NVx1N2I0Y1x1N2I1ZFx1N2I2MFx1N2I2ZVx1N2I3Ylx1N2I2Mlx1N2I3Mlx1N2I3MVx1N2I5MFx1N2JhNlx1N2JhN1x1N2JiOFx1N2JhY1x1N2I5ZFx1N2JhOFx1N2I4NVx1N2JhYVx1N2I5Y1x1N2JhMlx1N2JhYlx1N2JiNFx1N2JkMVx1''@;'; put 'put ''N2JjMVx1N2JjY1x1N2JkZFx1N2JkYVx1N2JlNVx1N2JlNlx1N2JlYVx1N2MwY1x1N2JmZVx1N2JmY1x1N2MwZlx1N2MxNlx1N2MwYiJdLFsiZjQ0MCIsIlx1OWIwN1x1OWIwOSIsNSwiXHU5YjEwXHU5YjExXHU5YjEyXHU5YjE0IiwxMCwiXHU5YjIwXHU5YjIxXHU5YjIyXHU5YjI0IiwxMCwi''@;'; put 'put ''XHU5YjMwXHU5YjMxXHU5YjMzIiw3LCJcdTliM2RcdTliM2VcdTliM2ZcdTliNDBcdTliNDZcdTliNGFcdTliNGJcdTliNGNcdTliNGVcdTliNTBcdTliNTJcdTliNTNcdTliNTUiLDVdLFsiZjQ4MCIsIlx1OWI1YiIsMzIsIlx1N2MxZlx1N2MyYVx1N2MyNlx1N2MzOFx1N2M0MVx1N2M0MFx1''@;'; put 'put ''ODFmZVx1ODIwMVx1ODIwMlx1ODIwNFx1ODFlY1x1ODg0NFx1ODIyMVx1ODIyMlx1ODIyM1x1ODIyZFx1ODIyZlx1ODIyOFx1ODIyYlx1ODIzOFx1ODIzYlx1ODIzM1x1ODIzNFx1ODIzZVx1ODI0NFx1ODI0OVx1ODI0Ylx1ODI0Zlx1ODI1YVx1ODI1Zlx1ODI2OFx1ODg3ZVx1ODg4NVx1ODg4''@;'; put 'put ''OFx1ODhkOFx1ODhkZlx1ODk1ZVx1N2Y5ZFx1N2Y5Zlx1N2ZhN1x1N2ZhZlx1N2ZiMFx1N2ZiMlx1N2M3Y1x1NjU0OVx1N2M5MVx1N2M5ZFx1N2M5Y1x1N2M5ZVx1N2NhMlx1N2NiMlx1N2NiY1x1N2NiZFx1N2NjMVx1N2NjN1x1N2NjY1x1N2NjZFx1N2NjOFx1N2NjNVx1N2NkN1x1N2NlOFx1''@;'; put 'put ''ODI2ZVx1NjZhOFx1N2ZiZlx1N2ZjZVx1N2ZkNVx1N2ZlNVx1N2ZlMVx1N2ZlNlx1N2ZlOVx1N2ZlZVx1N2ZmM1x1N2NmOFx1N2Q3N1x1N2RhNlx1N2RhZVx1N2U0N1x1N2U5Ylx1OWViOFx1OWViNFx1OGQ3M1x1OGQ4NFx1OGQ5NFx1OGQ5MVx1OGRiMVx1OGQ2N1x1OGQ2ZFx1OGM0N1x1OGM0''@;'; put 'put ''OVx1OTE0YVx1OTE1MFx1OTE0ZVx1OTE0Zlx1OTE2NCJdLFsiZjU0MCIsIlx1OWI3YyIsNjJdLFsiZjU4MCIsIlx1OWJiYiIsMzIsIlx1OTE2Mlx1OTE2MVx1OTE3MFx1OTE2OVx1OTE2Zlx1OTE3ZFx1OTE3ZVx1OTE3Mlx1OTE3NFx1OTE3OVx1OTE4Y1x1OTE4NVx1OTE5MFx1OTE4ZFx1OTE5''@;'; put 'put ''MVx1OTFhMlx1OTFhM1x1OTFhYVx1OTFhZFx1OTFhZVx1OTFhZlx1OTFiNVx1OTFiNFx1OTFiYVx1OGM1NVx1OWU3ZVx1OGRiOFx1OGRlYlx1OGUwNVx1OGU1OVx1OGU2OVx1OGRiNVx1OGRiZlx1OGRiY1x1OGRiYVx1OGRjNFx1OGRkNlx1OGRkN1x1OGRkYVx1OGRkZVx1OGRjZVx1OGRjZlx1''@;'; put 'put ''OGRkYlx1OGRjNlx1OGRlY1x1OGRmN1x1OGRmOFx1OGRlM1x1OGRmOVx1OGRmYlx1OGRlNFx1OGUwOVx1OGRmZFx1OGUxNFx1OGUxZFx1OGUxZlx1OGUyY1x1OGUyZVx1OGUyM1x1OGUyZlx1OGUzYVx1OGU0MFx1OGUzOVx1OGUzNVx1OGUzZFx1OGUzMVx1OGU0OVx1OGU0MVx1OGU0Mlx1OGU1''@;'; put 'put ''MVx1OGU1Mlx1OGU0YVx1OGU3MFx1OGU3Nlx1OGU3Y1x1OGU2Zlx1OGU3NFx1OGU4NVx1OGU4Zlx1OGU5NFx1OGU5MFx1OGU5Y1x1OGU5ZVx1OGM3OFx1OGM4Mlx1OGM4YVx1OGM4NVx1OGM5OFx1OGM5NFx1NjU5Ylx1ODlkNlx1ODlkZVx1ODlkYVx1ODlkYyJdLFsiZjY0MCIsIlx1OWJkYyIs''@;'; put 'put ''NjJdLFsiZjY4MCIsIlx1OWMxYiIsMzIsIlx1ODllNVx1ODllYlx1ODllZlx1OGEzZVx1OGIyNlx1OTc1M1x1OTZlOVx1OTZmM1x1OTZlZlx1OTcwNlx1OTcwMVx1OTcwOFx1OTcwZlx1OTcwZVx1OTcyYVx1OTcyZFx1OTczMFx1OTczZVx1OWY4MFx1OWY4M1x1OWY4NSIsNSwiXHU5ZjhjXHU5''@;'; put 'put ''ZWZlXHU5ZjBiXHU5ZjBkXHU5NmI5XHU5NmJjXHU5NmJkXHU5NmNlXHU5NmQyXHU3N2JmXHU5NmUwXHU5MjhlXHU5MmFlXHU5MmM4XHU5MzNlXHU5MzZhXHU5M2NhXHU5MzhmXHU5NDNlXHU5NDZiXHU5YzdmXHU5YzgyXHU5Yzg1XHU5Yzg2XHU5Yzg3XHU5Yzg4XHU3YTIzXHU5YzhiXHU5Yzhl''@;'; put 'put ''XHU5YzkwXHU5YzkxXHU5YzkyXHU5Yzk0XHU5Yzk1XHU5YzlhXHU5YzliXHU5YzllIiw1LCJcdTljYTUiLDQsIlx1OWNhYlx1OWNhZFx1OWNhZVx1OWNiMCIsNywiXHU5Y2JhXHU5Y2JiXHU5Y2JjXHU5Y2JkXHU5Y2M0XHU5Y2M1XHU5Y2M2XHU5Y2M3XHU5Y2NhXHU5Y2NiIl0sWyJmNzQwIiwi''@;'; put 'put ''XHU5YzNjIiw2Ml0sWyJmNzgwIiwiXHU5YzdiXHU5YzdkXHU5YzdlXHU5YzgwXHU5YzgzXHU5Yzg0XHU5Yzg5XHU5YzhhXHU5YzhjXHU5YzhmXHU5YzkzXHU5Yzk2XHU5Yzk3XHU5Yzk4XHU5Yzk5XHU5YzlkXHU5Y2FhXHU5Y2FjXHU5Y2FmXHU5Y2I5XHU5Y2JlIiw0LCJcdTljYzhcdTljYzlc''@;'; put 'put ''dTljZDFcdTljZDJcdTljZGFcdTljZGJcdTljZTBcdTljZTFcdTljY2MiLDQsIlx1OWNkM1x1OWNkNFx1OWNkNVx1OWNkN1x1OWNkOFx1OWNkOVx1OWNkY1x1OWNkZFx1OWNkZlx1OWNlMlx1OTc3Y1x1OTc4NVx1OTc5MVx1OTc5Mlx1OTc5NFx1OTdhZlx1OTdhYlx1OTdhM1x1OTdiMlx1OTdi''@;'; put 'put ''NFx1OWFiMVx1OWFiMFx1OWFiN1x1OWU1OFx1OWFiNlx1OWFiYVx1OWFiY1x1OWFjMVx1OWFjMFx1OWFjNVx1OWFjMlx1OWFjYlx1OWFjY1x1OWFkMVx1OWI0NVx1OWI0M1x1OWI0N1x1OWI0OVx1OWI0OFx1OWI0ZFx1OWI1MVx1OThlOFx1OTkwZFx1OTkyZVx1OTk1NVx1OTk1NFx1OWFkZlx1''@;'; put 'put ''OWFlMVx1OWFlNlx1OWFlZlx1OWFlYlx1OWFmYlx1OWFlZFx1OWFmOVx1OWIwOFx1OWIwZlx1OWIxM1x1OWIxZlx1OWIyM1x1OWViZFx1OWViZVx1N2UzYlx1OWU4Mlx1OWU4N1x1OWU4OFx1OWU4Ylx1OWU5Mlx1OTNkNlx1OWU5ZFx1OWU5Zlx1OWVkYlx1OWVkY1x1OWVkZFx1OWVlMFx1OWVk''@;'; put 'put ''Zlx1OWVlMlx1OWVlOVx1OWVlN1x1OWVlNVx1OWVlYVx1OWVlZlx1OWYyMlx1OWYyY1x1OWYyZlx1OWYzOVx1OWYzN1x1OWYzZFx1OWYzZVx1OWY0NCJdLFsiZjg0MCIsIlx1OWNlMyIsNjJdLFsiZjg4MCIsIlx1OWQyMiIsMzJdLFsiZjk0MCIsIlx1OWQ0MyIsNjJdLFsiZjk4MCIsIlx1OWQ4''@;'; put 'put ''MiIsMzJdLFsiZmE0MCIsIlx1OWRhMyIsNjJdLFsiZmE4MCIsIlx1OWRlMiIsMzJdLFsiZmI0MCIsIlx1OWUwMyIsMjcsIlx1OWUyNFx1OWUyN1x1OWUyZVx1OWUzMFx1OWUzNFx1OWUzYlx1OWUzY1x1OWU0MFx1OWU0ZFx1OWU1MFx1OWU1Mlx1OWU1M1x1OWU1NFx1OWU1Nlx1OWU1OVx1OWU1''@;'; put 'put ''ZFx1OWU1Zlx1OWU2MFx1OWU2MVx1OWU2Mlx1OWU2NVx1OWU2ZVx1OWU2Zlx1OWU3Mlx1OWU3NCIsOSwiXHU5ZTgwIl0sWyJmYjgwIiwiXHU5ZTgxXHU5ZTgzXHU5ZTg0XHU5ZTg1XHU5ZTg2XHU5ZTg5XHU5ZThhXHU5ZThjIiw1LCJcdTllOTQiLDgsIlx1OWU5ZVx1OWVhMCIsNSwiXHU5ZWE3''@;'; put 'put ''XHU5ZWE4XHU5ZWE5XHU5ZWFhIl0sWyJmYzQwIiwiXHU5ZWFiIiw4LCJcdTllYjVcdTllYjZcdTllYjdcdTllYjlcdTllYmFcdTllYmNcdTllYmYiLDQsIlx1OWVjNVx1OWVjNlx1OWVjN1x1OWVjOFx1OWVjYVx1OWVjYlx1OWVjY1x1OWVkMFx1OWVkMlx1OWVkM1x1OWVkNVx1OWVkNlx1OWVk''@;'; put 'put ''N1x1OWVkOVx1OWVkYVx1OWVkZVx1OWVlMVx1OWVlM1x1OWVlNFx1OWVlNlx1OWVlOFx1OWVlYlx1OWVlY1x1OWVlZFx1OWVlZVx1OWVmMCIsOCwiXHU5ZWZhXHU5ZWZkXHU5ZWZmIiw2XSxbImZjODAiLCJcdTlmMDYiLDQsIlx1OWYwY1x1OWYwZlx1OWYxMVx1OWYxMlx1OWYxNFx1OWYxNVx1''@;'; put 'put ''OWYxNlx1OWYxOFx1OWYxYSIsNSwiXHU5ZjIxXHU5ZjIzIiw4LCJcdTlmMmRcdTlmMmVcdTlmMzBcdTlmMzEiXSxbImZkNDAiLCJcdTlmMzIiLDQsIlx1OWYzOFx1OWYzYVx1OWYzY1x1OWYzZiIsNCwiXHU5ZjQ1IiwxMCwiXHU5ZjUyIiwzOF0sWyJmZDgwIiwiXHU5Zjc5Iiw1LCJcdTlmODFc''@;'; put 'put ''dTlmODJcdTlmOGQiLDExLCJcdTlmOWNcdTlmOWRcdTlmOWVcdTlmYTEiLDQsIlx1ZjkyY1x1Zjk3OVx1Zjk5NVx1ZjllN1x1ZjlmMSJdLFsiZmU0MCIsIlx1ZmEwY1x1ZmEwZFx1ZmEwZVx1ZmEwZlx1ZmExMVx1ZmExM1x1ZmExNFx1ZmExOFx1ZmExZlx1ZmEyMFx1ZmEyMVx1ZmEyM1x1ZmEy''@;'; put 'put ''NFx1ZmEyN1x1ZmEyOFx1ZmEyOSJdXScpfSwyMTE2NjpRZT0+eyJ1c2Ugc3RyaWN0IjtRZS5leHBvcnRzPUpTT04ucGFyc2UoJ1tbIjAiLCJcXHUwMDAwIiwxMjddLFsiODE0MSIsIlx1YWMwMlx1YWMwM1x1YWMwNVx1YWMwNlx1YWMwYiIsNCwiXHVhYzE4XHVhYzFlXHVhYzFmXHVhYzIxXHVh''@;'; put 'put ''YzIyXHVhYzIzXHVhYzI1Iiw2LCJcdWFjMmVcdWFjMzJcdWFjMzNcdWFjMzQiXSxbIjgxNjEiLCJcdWFjMzVcdWFjMzZcdWFjMzdcdWFjM2FcdWFjM2JcdWFjM2RcdWFjM2VcdWFjM2ZcdWFjNDEiLDksIlx1YWM0Y1x1YWM0ZSIsNSwiXHVhYzU1Il0sWyI4MTgxIiwiXHVhYzU2XHVhYzU3XHVh''@;'; put 'put ''YzU5XHVhYzVhXHVhYzViXHVhYzVkIiwxOCwiXHVhYzcyXHVhYzczXHVhYzc1XHVhYzc2XHVhYzc5XHVhYzdiIiw0LCJcdWFjODJcdWFjODdcdWFjODhcdWFjOGRcdWFjOGVcdWFjOGZcdWFjOTFcdWFjOTJcdWFjOTNcdWFjOTUiLDYsIlx1YWM5ZVx1YWNhMiIsNSwiXHVhY2FiXHVhY2FkXHVh''@;'; put 'put ''Y2FlXHVhY2IxIiw2LCJcdWFjYmFcdWFjYmVcdWFjYmZcdWFjYzBcdWFjYzJcdWFjYzNcdWFjYzVcdWFjYzZcdWFjYzdcdWFjYzlcdWFjY2FcdWFjY2JcdWFjY2QiLDcsIlx1YWNkNlx1YWNkOCIsNywiXHVhY2UyXHVhY2UzXHVhY2U1XHVhY2U2XHVhY2U5XHVhY2ViXHVhY2VkXHVhY2VlXHVh''@;'; put 'put ''Y2YyXHVhY2Y0XHVhY2Y3Iiw0LCJcdWFjZmVcdWFjZmZcdWFkMDFcdWFkMDJcdWFkMDNcdWFkMDVcdWFkMDciLDQsIlx1YWQwZVx1YWQxMFx1YWQxMlx1YWQxMyJdLFsiODI0MSIsIlx1YWQxNFx1YWQxNVx1YWQxNlx1YWQxN1x1YWQxOVx1YWQxYVx1YWQxYlx1YWQxZFx1YWQxZVx1YWQxZlx1''@;'; put 'put ''YWQyMSIsNywiXHVhZDJhXHVhZDJiXHVhZDJlIiw1XSxbIjgyNjEiLCJcdWFkMzZcdWFkMzdcdWFkMzlcdWFkM2FcdWFkM2JcdWFkM2QiLDYsIlx1YWQ0Nlx1YWQ0OFx1YWQ0YSIsNSwiXHVhZDUxXHVhZDUyXHVhZDUzXHVhZDU1XHVhZDU2XHVhZDU3Il0sWyI4MjgxIiwiXHVhZDU5Iiw3LCJc''@;'; put 'put ''dWFkNjJcdWFkNjQiLDcsIlx1YWQ2ZVx1YWQ2Zlx1YWQ3MVx1YWQ3Mlx1YWQ3N1x1YWQ3OFx1YWQ3OVx1YWQ3YVx1YWQ3ZVx1YWQ4MFx1YWQ4MyIsNCwiXHVhZDhhXHVhZDhiXHVhZDhkXHVhZDhlXHVhZDhmXHVhZDkxIiwxMCwiXHVhZDllIiw1LCJcdWFkYTUiLDE3LCJcdWFkYjgiLDcsIlx1''@;'; put 'put ''YWRjMlx1YWRjM1x1YWRjNVx1YWRjNlx1YWRjN1x1YWRjOSIsNiwiXHVhZGQyXHVhZGQ0Iiw3LCJcdWFkZGRcdWFkZGVcdWFkZGZcdWFkZTFcdWFkZTJcdWFkZTNcdWFkZTUiLDE4XSxbIjgzNDEiLCJcdWFkZmFcdWFkZmJcdWFkZmRcdWFkZmVcdWFlMDIiLDUsIlx1YWUwYVx1YWUwY1x1YWUw''@;'; put 'put ''ZSIsNSwiXHVhZTE1Iiw3XSxbIjgzNjEiLCJcdWFlMWQiLDE4LCJcdWFlMzJcdWFlMzNcdWFlMzVcdWFlMzZcdWFlMzlcdWFlM2JcdWFlM2MiXSxbIjgzODEiLCJcdWFlM2RcdWFlM2VcdWFlM2ZcdWFlNDJcdWFlNDRcdWFlNDdcdWFlNDhcdWFlNDlcdWFlNGJcdWFlNGZcdWFlNTFcdWFlNTJc''@;'; put 'put ''dWFlNTNcdWFlNTVcdWFlNTciLDQsIlx1YWU1ZVx1YWU2Mlx1YWU2M1x1YWU2NFx1YWU2Nlx1YWU2N1x1YWU2YVx1YWU2Ylx1YWU2ZFx1YWU2ZVx1YWU2Zlx1YWU3MSIsNiwiXHVhZTdhXHVhZTdlIiw1LCJcdWFlODYiLDUsIlx1YWU4ZCIsNDYsIlx1YWViZlx1YWVjMVx1YWVjMlx1YWVjM1x1''@;'; put 'put ''YWVjNSIsNiwiXHVhZWNlXHVhZWQyIiw1LCJcdWFlZGFcdWFlZGJcdWFlZGQiLDhdLFsiODQ0MSIsIlx1YWVlNlx1YWVlN1x1YWVlOVx1YWVlYVx1YWVlY1x1YWVlZSIsNSwiXHVhZWY1XHVhZWY2XHVhZWY3XHVhZWY5XHVhZWZhXHVhZWZiXHVhZWZkIiw4XSxbIjg0NjEiLCJcdWFmMDZcdWFm''@;'; put 'put ''MDlcdWFmMGFcdWFmMGJcdWFmMGNcdWFmMGVcdWFmMGZcdWFmMTEiLDE4XSxbIjg0ODEiLCJcdWFmMjQiLDcsIlx1YWYyZVx1YWYyZlx1YWYzMVx1YWYzM1x1YWYzNSIsNiwiXHVhZjNlXHVhZjQwXHVhZjQ0XHVhZjQ1XHVhZjQ2XHVhZjQ3XHVhZjRhIiw1LCJcdWFmNTEiLDEwLCJcdWFmNWUi''@;'; put 'put ''LDUsIlx1YWY2NiIsMTgsIlx1YWY3YSIsNSwiXHVhZjgxXHVhZjgyXHVhZjgzXHVhZjg1XHVhZjg2XHVhZjg3XHVhZjg5Iiw2LCJcdWFmOTJcdWFmOTNcdWFmOTRcdWFmOTYiLDUsIlx1YWY5ZCIsMjYsIlx1YWZiYVx1YWZiYlx1YWZiZFx1YWZiZSJdLFsiODU0MSIsIlx1YWZiZlx1YWZjMSIs''@;'; put 'put ''NSwiXHVhZmNhXHVhZmNjXHVhZmNmIiw0LCJcdWFmZDUiLDYsIlx1YWZkZCIsNF0sWyI4NTYxIiwiXHVhZmUyIiw1LCJcdWFmZWEiLDUsIlx1YWZmMlx1YWZmM1x1YWZmNVx1YWZmNlx1YWZmN1x1YWZmOSIsNiwiXHViMDAyXHViMDAzIl0sWyI4NTgxIiwiXHViMDA1Iiw2LCJcdWIwMGRcdWIw''@;'; put 'put ''MGVcdWIwMGZcdWIwMTFcdWIwMTJcdWIwMTNcdWIwMTUiLDYsIlx1YjAxZSIsOSwiXHViMDI5IiwyNiwiXHViMDQ2XHViMDQ3XHViMDQ5XHViMDRiXHViMDRkXHViMDRmXHViMDUwXHViMDUxXHViMDUyXHViMDU2XHViMDU4XHViMDVhXHViMDViXHViMDVjXHViMDVlIiwyOSwiXHViMDdlXHVi''@;'; put 'put ''MDdmXHViMDgxXHViMDgyXHViMDgzXHViMDg1Iiw2LCJcdWIwOGVcdWIwOTBcdWIwOTIiLDUsIlx1YjA5Ylx1YjA5ZFx1YjA5ZVx1YjBhM1x1YjBhNCJdLFsiODY0MSIsIlx1YjBhNVx1YjBhNlx1YjBhN1x1YjBhYVx1YjBiMFx1YjBiMlx1YjBiNlx1YjBiN1x1YjBiOVx1YjBiYVx1YjBiYlx1''@;'; put 'put ''YjBiZCIsNiwiXHViMGM2XHViMGNhIiw1LCJcdWIwZDIiXSxbIjg2NjEiLCJcdWIwZDNcdWIwZDVcdWIwZDZcdWIwZDdcdWIwZDkiLDYsIlx1YjBlMVx1YjBlMlx1YjBlM1x1YjBlNFx1YjBlNiIsMTBdLFsiODY4MSIsIlx1YjBmMSIsMjIsIlx1YjEwYVx1YjEwZFx1YjEwZVx1YjEwZlx1YjEx''@;'; put 'put ''MVx1YjExNFx1YjExNVx1YjExNlx1YjExN1x1YjExYVx1YjExZSIsNCwiXHViMTI2XHViMTI3XHViMTI5XHViMTJhXHViMTJiXHViMTJkIiw2LCJcdWIxMzZcdWIxM2EiLDUsIlx1YjE0Mlx1YjE0M1x1YjE0NVx1YjE0Nlx1YjE0N1x1YjE0OSIsNiwiXHViMTUyXHViMTUzXHViMTU2XHViMTU3''@;'; put 'put ''XHViMTU5XHViMTVhXHViMTViXHViMTVkXHViMTVlXHViMTVmXHViMTYxIiwyMiwiXHViMTdhXHViMTdiXHViMTdkXHViMTdlXHViMTdmXHViMTgxXHViMTgzIiw0LCJcdWIxOGFcdWIxOGNcdWIxOGVcdWIxOGZcdWIxOTBcdWIxOTFcdWIxOTVcdWIxOTZcdWIxOTdcdWIxOTlcdWIxOWFcdWIx''@;'; put 'put ''OWJcdWIxOWQiXSxbIjg3NDEiLCJcdWIxOWUiLDksIlx1YjFhOSIsMTVdLFsiODc2MSIsIlx1YjFiOSIsMTgsIlx1YjFjZFx1YjFjZVx1YjFjZlx1YjFkMVx1YjFkMlx1YjFkM1x1YjFkNSJdLFsiODc4MSIsIlx1YjFkNiIsNSwiXHViMWRlXHViMWUwIiw3LCJcdWIxZWFcdWIxZWJcdWIxZWRc''@;'; put 'put ''dWIxZWVcdWIxZWZcdWIxZjEiLDcsIlx1YjFmYVx1YjFmY1x1YjFmZSIsNSwiXHViMjA2XHViMjA3XHViMjA5XHViMjBhXHViMjBkIiw2LCJcdWIyMTZcdWIyMThcdWIyMWEiLDUsIlx1YjIyMSIsMTgsIlx1YjIzNSIsNiwiXHViMjNkIiwyNiwiXHViMjU5XHViMjVhXHViMjViXHViMjVkXHVi''@;'; put 'put ''MjVlXHViMjVmXHViMjYxIiw2LCJcdWIyNmEiLDRdLFsiODg0MSIsIlx1YjI2ZiIsNCwiXHViMjc2Iiw1LCJcdWIyN2QiLDYsIlx1YjI4Nlx1YjI4N1x1YjI4OFx1YjI4YSIsNF0sWyI4ODYxIiwiXHViMjhmXHViMjkyXHViMjkzXHViMjk1XHViMjk2XHViMjk3XHViMjliIiw0LCJcdWIyYTJc''@;'; put 'put ''dWIyYTRcdWIyYTdcdWIyYThcdWIyYTlcdWIyYWJcdWIyYWRcdWIyYWVcdWIyYWZcdWIyYjFcdWIyYjJcdWIyYjNcdWIyYjVcdWIyYjZcdWIyYjciXSxbIjg4ODEiLCJcdWIyYjgiLDE1LCJcdWIyY2FcdWIyY2JcdWIyY2RcdWIyY2VcdWIyY2ZcdWIyZDFcdWIyZDMiLDQsIlx1YjJkYVx1YjJk''@;'; put 'put ''Y1x1YjJkZVx1YjJkZlx1YjJlMFx1YjJlMVx1YjJlM1x1YjJlN1x1YjJlOVx1YjJlYVx1YjJmMFx1YjJmMVx1YjJmMlx1YjJmNlx1YjJmY1x1YjJmZFx1YjJmZVx1YjMwMlx1YjMwM1x1YjMwNVx1YjMwNlx1YjMwN1x1YjMwOSIsNiwiXHViMzEyXHViMzE2Iiw1LCJcdWIzMWQiLDU0LCJcdWIz''@;'; put 'put ''NTdcdWIzNTlcdWIzNWFcdWIzNWRcdWIzNjBcdWIzNjFcdWIzNjJcdWIzNjMiXSxbIjg5NDEiLCJcdWIzNjZcdWIzNjhcdWIzNmFcdWIzNmNcdWIzNmRcdWIzNmZcdWIzNzJcdWIzNzNcdWIzNzVcdWIzNzZcdWIzNzdcdWIzNzkiLDYsIlx1YjM4Mlx1YjM4NiIsNSwiXHViMzhkIl0sWyI4OTYx''@;'; put 'put ''IiwiXHViMzhlXHViMzhmXHViMzkxXHViMzkyXHViMzkzXHViMzk1IiwxMCwiXHViM2EyIiw1LCJcdWIzYTlcdWIzYWFcdWIzYWJcdWIzYWQiXSxbIjg5ODEiLCJcdWIzYWUiLDIxLCJcdWIzYzZcdWIzYzdcdWIzYzlcdWIzY2FcdWIzY2RcdWIzY2ZcdWIzZDFcdWIzZDJcdWIzZDNcdWIzZDZc''@;'; put 'put ''dWIzZDhcdWIzZGFcdWIzZGNcdWIzZGVcdWIzZGZcdWIzZTFcdWIzZTJcdWIzZTNcdWIzZTVcdWIzZTZcdWIzZTdcdWIzZTkiLDE4LCJcdWIzZmQiLDE4LCJcdWI0MTEiLDYsIlx1YjQxOVx1YjQxYVx1YjQxYlx1YjQxZFx1YjQxZVx1YjQxZlx1YjQyMSIsNiwiXHViNDJhXHViNDJjIiw3LCJc''@;'; put 'put ''dWI0MzUiLDE1XSxbIjhhNDEiLCJcdWI0NDUiLDEwLCJcdWI0NTJcdWI0NTNcdWI0NTVcdWI0NTZcdWI0NTdcdWI0NTkiLDYsIlx1YjQ2Mlx1YjQ2NFx1YjQ2NiJdLFsiOGE2MSIsIlx1YjQ2NyIsNCwiXHViNDZkIiwxOCwiXHViNDgxXHViNDgyIl0sWyI4YTgxIiwiXHViNDgzIiw0LCJcdWI0''@;'; put 'put ''ODkiLDE5LCJcdWI0OWUiLDUsIlx1YjRhNVx1YjRhNlx1YjRhN1x1YjRhOVx1YjRhYVx1YjRhYlx1YjRhZCIsNywiXHViNGI2XHViNGI4XHViNGJhIiw1LCJcdWI0YzFcdWI0YzJcdWI0YzNcdWI0YzVcdWI0YzZcdWI0YzdcdWI0YzkiLDYsIlx1YjRkMVx1YjRkMlx1YjRkM1x1YjRkNFx1YjRk''@;'; put 'put ''NiIsNSwiXHViNGRlXHViNGRmXHViNGUxXHViNGUyXHViNGU1XHViNGU3Iiw0LCJcdWI0ZWVcdWI0ZjBcdWI0ZjIiLDUsIlx1YjRmOSIsMjYsIlx1YjUxNlx1YjUxN1x1YjUxOVx1YjUxYVx1YjUxZCJdLFsiOGI0MSIsIlx1YjUxZSIsNSwiXHViNTI2XHViNTJiIiw0LCJcdWI1MzJcdWI1MzNc''@;'; put 'put ''dWI1MzVcdWI1MzZcdWI1MzdcdWI1MzkiLDYsIlx1YjU0Mlx1YjU0NiJdLFsiOGI2MSIsIlx1YjU0N1x1YjU0OFx1YjU0OVx1YjU0YVx1YjU0ZVx1YjU0Zlx1YjU1MVx1YjU1Mlx1YjU1M1x1YjU1NSIsNiwiXHViNTVlXHViNTYyIiw4XSxbIjhiODEiLCJcdWI1NmIiLDUyLCJcdWI1YTJcdWI1''@;'; put 'put ''YTNcdWI1YTVcdWI1YTZcdWI1YTdcdWI1YTlcdWI1YWNcdWI1YWRcdWI1YWVcdWI1YWZcdWI1YjJcdWI1YjYiLDQsIlx1YjViZVx1YjViZlx1YjVjMVx1YjVjMlx1YjVjM1x1YjVjNSIsNiwiXHViNWNlXHViNWQyIiw1LCJcdWI1ZDkiLDE4LCJcdWI1ZWQiLDE4XSxbIjhjNDEiLCJcdWI2MDAi''@;'; put 'put ''LDE1LCJcdWI2MTJcdWI2MTNcdWI2MTVcdWI2MTZcdWI2MTdcdWI2MTkiLDRdLFsiOGM2MSIsIlx1YjYxZSIsNiwiXHViNjI2Iiw1LCJcdWI2MmQiLDYsIlx1YjYzNSIsNV0sWyI4YzgxIiwiXHViNjNiIiwxMiwiXHViNjQ5IiwyNiwiXHViNjY1XHViNjY2XHViNjY3XHViNjY5Iiw1MCwiXHVi''@;'; put 'put ''NjllXHViNjlmXHViNmExXHViNmEyXHViNmEzXHViNmE1Iiw1LCJcdWI2YWRcdWI2YWVcdWI2YWZcdWI2YjBcdWI2YjIiLDE2XSxbIjhkNDEiLCJcdWI2YzMiLDE2LCJcdWI2ZDUiLDhdLFsiOGQ2MSIsIlx1YjZkZSIsMTcsIlx1YjZmMVx1YjZmMlx1YjZmM1x1YjZmNVx1YjZmNlx1YjZmN1x1''@;'; put 'put ''YjZmOVx1YjZmYSJdLFsiOGQ4MSIsIlx1YjZmYiIsNCwiXHViNzAyXHViNzAzXHViNzA0XHViNzA2IiwzMywiXHViNzJhXHViNzJiXHViNzJkXHViNzJlXHViNzMxIiw2LCJcdWI3M2FcdWI3M2MiLDcsIlx1Yjc0NVx1Yjc0Nlx1Yjc0N1x1Yjc0OVx1Yjc0YVx1Yjc0Ylx1Yjc0ZCIsNiwiXHVi''@;'; put 'put ''NzU2Iiw5LCJcdWI3NjFcdWI3NjJcdWI3NjNcdWI3NjVcdWI3NjZcdWI3NjdcdWI3NjkiLDYsIlx1Yjc3Mlx1Yjc3NFx1Yjc3NiIsNSwiXHViNzdlXHViNzdmXHViNzgxXHViNzgyXHViNzgzXHViNzg1Iiw2LCJcdWI3OGVcdWI3OTNcdWI3OTRcdWI3OTVcdWI3OWFcdWI3OWJcdWI3OWRcdWI3''@;'; put 'put ''OWUiXSxbIjhlNDEiLCJcdWI3OWZcdWI3YTEiLDYsIlx1YjdhYVx1YjdhZSIsNSwiXHViN2I2XHViN2I3XHViN2I5Iiw4XSxbIjhlNjEiLCJcdWI3YzIiLDQsIlx1YjdjOFx1YjdjYSIsMTldLFsiOGU4MSIsIlx1YjdkZSIsMTMsIlx1YjdlZVx1YjdlZlx1YjdmMVx1YjdmMlx1YjdmM1x1Yjdm''@;'; put 'put ''NSIsNiwiXHViN2ZlXHViODAyIiw0LCJcdWI4MGFcdWI4MGJcdWI4MGRcdWI4MGVcdWI4MGZcdWI4MTEiLDYsIlx1YjgxYVx1YjgxY1x1YjgxZSIsNSwiXHViODI2XHViODI3XHViODI5XHViODJhXHViODJiXHViODJkIiw2LCJcdWI4MzZcdWI4M2EiLDUsIlx1Yjg0MVx1Yjg0Mlx1Yjg0M1x1''@;'; put 'put ''Yjg0NSIsMTEsIlx1Yjg1Mlx1Yjg1NCIsNywiXHViODVlXHViODVmXHViODYxXHViODYyXHViODYzXHViODY1Iiw2LCJcdWI4NmVcdWI4NzBcdWI4NzIiLDUsIlx1Yjg3OVx1Yjg3YVx1Yjg3Ylx1Yjg3ZCIsN10sWyI4ZjQxIiwiXHViODg1Iiw3LCJcdWI4OGUiLDE3XSxbIjhmNjEiLCJcdWI4''@;'; put 'put ''YTAiLDcsIlx1YjhhOSIsNiwiXHViOGIxXHViOGIyXHViOGIzXHViOGI1XHViOGI2XHViOGI3XHViOGI5Iiw0XSxbIjhmODEiLCJcdWI4YmVcdWI4YmZcdWI4YzJcdWI4YzRcdWI4YzYiLDUsIlx1YjhjZFx1YjhjZVx1YjhjZlx1YjhkMVx1YjhkMlx1YjhkM1x1YjhkNSIsNywiXHViOGRlXHVi''@;'; put 'put ''OGUwXHViOGUyIiw1LCJcdWI4ZWFcdWI4ZWJcdWI4ZWRcdWI4ZWVcdWI4ZWZcdWI4ZjEiLDYsIlx1YjhmYVx1YjhmY1x1YjhmZSIsNSwiXHViOTA1IiwxOCwiXHViOTE5Iiw2LCJcdWI5MjEiLDI2LCJcdWI5M2VcdWI5M2ZcdWI5NDFcdWI5NDJcdWI5NDNcdWI5NDUiLDYsIlx1Yjk0ZFx1Yjk0''@;'; put 'put ''ZVx1Yjk1MFx1Yjk1MiIsNV0sWyI5MDQxIiwiXHViOTVhXHViOTViXHViOTVkXHViOTVlXHViOTVmXHViOTYxIiw2LCJcdWI5NmFcdWI5NmNcdWI5NmUiLDUsIlx1Yjk3Nlx1Yjk3N1x1Yjk3OVx1Yjk3YVx1Yjk3Ylx1Yjk3ZCJdLFsiOTA2MSIsIlx1Yjk3ZSIsNSwiXHViOTg2XHViOTg4XHVi''@;'; put 'put ''OThiXHViOThjXHViOThmIiwxNV0sWyI5MDgxIiwiXHViOTlmIiwxMiwiXHViOWFlXHViOWFmXHViOWIxXHViOWIyXHViOWIzXHViOWI1Iiw2LCJcdWI5YmVcdWI5YzBcdWI5YzIiLDUsIlx1YjljYVx1YjljYlx1YjljZFx1YjlkMyIsNCwiXHViOWRhXHViOWRjXHViOWRmXHViOWUwXHViOWUy''@;'; put 'put ''XHViOWU2XHViOWU3XHViOWU5XHViOWVhXHViOWViXHViOWVkIiw2LCJcdWI5ZjZcdWI5ZmIiLDQsIlx1YmEwMiIsNSwiXHViYTA5IiwxMSwiXHViYTE2IiwzMywiXHViYTNhXHViYTNiXHViYTNkXHViYTNlXHViYTNmXHViYTQxXHViYTQzXHViYTQ0XHViYTQ1XHViYTQ2Il0sWyI5MTQxIiwi''@;'; put 'put ''XHViYTQ3XHViYTRhXHViYTRjXHViYTRmXHViYTUwXHViYTUxXHViYTUyXHViYTU2XHViYTU3XHViYTU5XHViYTVhXHViYTViXHViYTVkIiw2LCJcdWJhNjZcdWJhNmEiLDVdLFsiOTE2MSIsIlx1YmE3Mlx1YmE3M1x1YmE3NVx1YmE3Nlx1YmE3N1x1YmE3OSIsOSwiXHViYTg2XHViYTg4XHVi''@;'; put 'put ''YTg5XHViYThhXHViYThiXHViYThkIiw1XSxbIjkxODEiLCJcdWJhOTMiLDIwLCJcdWJhYWFcdWJhYWRcdWJhYWVcdWJhYWZcdWJhYjFcdWJhYjMiLDQsIlx1YmFiYVx1YmFiY1x1YmFiZSIsNSwiXHViYWM1XHViYWM2XHViYWM3XHViYWM5IiwxNCwiXHViYWRhIiwzMywiXHViYWZkXHViYWZl''@;'; put 'put ''XHViYWZmXHViYjAxXHViYjAyXHViYjAzXHViYjA1Iiw3LCJcdWJiMGVcdWJiMTBcdWJiMTIiLDUsIlx1YmIxOVx1YmIxYVx1YmIxYlx1YmIxZFx1YmIxZVx1YmIxZlx1YmIyMSIsNl0sWyI5MjQxIiwiXHViYjI4XHViYjJhXHViYjJjIiw3LCJcdWJiMzdcdWJiMzlcdWJiM2FcdWJiM2YiLDQs''@;'; put 'put ''Ilx1YmI0Nlx1YmI0OFx1YmI0YVx1YmI0Ylx1YmI0Y1x1YmI0ZVx1YmI1MVx1YmI1MiJdLFsiOTI2MSIsIlx1YmI1M1x1YmI1NVx1YmI1Nlx1YmI1N1x1YmI1OSIsNywiXHViYjYyXHViYjY0Iiw3LCJcdWJiNmQiLDRdLFsiOTI4MSIsIlx1YmI3MiIsMjEsIlx1YmI4OVx1YmI4YVx1YmI4Ylx1''@;'; put 'put ''YmI4ZFx1YmI4ZVx1YmI4Zlx1YmI5MSIsMTgsIlx1YmJhNVx1YmJhNlx1YmJhN1x1YmJhOVx1YmJhYVx1YmJhYlx1YmJhZCIsNiwiXHViYmI1XHViYmI2XHViYmI4Iiw3LCJcdWJiYzFcdWJiYzJcdWJiYzNcdWJiYzVcdWJiYzZcdWJiYzdcdWJiYzkiLDYsIlx1YmJkMVx1YmJkMlx1YmJkNCIs''@;'; put 'put ''MzUsIlx1YmJmYVx1YmJmYlx1YmJmZFx1YmJmZVx1YmMwMSJdLFsiOTM0MSIsIlx1YmMwMyIsNCwiXHViYzBhXHViYzBlXHViYzEwXHViYzEyXHViYzEzXHViYzE5XHViYzFhXHViYzIwXHViYzIxXHViYzIyXHViYzIzXHViYzI2XHViYzI4XHViYzJhXHViYzJiXHViYzJjXHViYzJlXHViYzJm''@;'; put 'put ''XHViYzMyXHViYzMzXHViYzM1Il0sWyI5MzYxIiwiXHViYzM2XHViYzM3XHViYzM5Iiw2LCJcdWJjNDJcdWJjNDZcdWJjNDdcdWJjNDhcdWJjNGFcdWJjNGJcdWJjNGVcdWJjNGZcdWJjNTEiLDhdLFsiOTM4MSIsIlx1YmM1YVx1YmM1Ylx1YmM1Y1x1YmM1ZSIsMzcsIlx1YmM4Nlx1YmM4N1x1''@;'; put 'put ''YmM4OVx1YmM4YVx1YmM4ZFx1YmM4ZiIsNCwiXHViYzk2XHViYzk4XHViYzliIiw0LCJcdWJjYTJcdWJjYTNcdWJjYTVcdWJjYTZcdWJjYTkiLDYsIlx1YmNiMlx1YmNiNiIsNSwiXHViY2JlXHViY2JmXHViY2MxXHViY2MyXHViY2MzXHViY2M1Iiw3LCJcdWJjY2VcdWJjZDJcdWJjZDNcdWJj''@;'; put 'put ''ZDRcdWJjZDZcdWJjZDdcdWJjZDlcdWJjZGFcdWJjZGJcdWJjZGQiLDIyLCJcdWJjZjdcdWJjZjlcdWJjZmFcdWJjZmJcdWJjZmQiXSxbIjk0NDEiLCJcdWJjZmUiLDUsIlx1YmQwNlx1YmQwOFx1YmQwYSIsNSwiXHViZDExXHViZDEyXHViZDEzXHViZDE1Iiw4XSxbIjk0NjEiLCJcdWJkMWUi''@;'; put 'put ''LDUsIlx1YmQyNSIsNiwiXHViZDJkIiwxMl0sWyI5NDgxIiwiXHViZDNhIiw1LCJcdWJkNDEiLDYsIlx1YmQ0YVx1YmQ0Ylx1YmQ0ZFx1YmQ0ZVx1YmQ0Zlx1YmQ1MSIsNiwiXHViZDVhIiw5LCJcdWJkNjVcdWJkNjZcdWJkNjdcdWJkNjkiLDIyLCJcdWJkODJcdWJkODNcdWJkODVcdWJkODZc''@;'; put 'put ''dWJkOGIiLDQsIlx1YmQ5Mlx1YmQ5NFx1YmQ5Nlx1YmQ5N1x1YmQ5OFx1YmQ5Ylx1YmQ5ZCIsNiwiXHViZGE1IiwxMCwiXHViZGIxIiw2LCJcdWJkYjkiLDI0XSxbIjk1NDEiLCJcdWJkZDJcdWJkZDNcdWJkZDZcdWJkZDdcdWJkZDlcdWJkZGFcdWJkZGJcdWJkZGQiLDExLCJcdWJkZWEiLDUs''@;'; put 'put ''Ilx1YmRmMSJdLFsiOTU2MSIsIlx1YmRmMlx1YmRmM1x1YmRmNVx1YmRmNlx1YmRmN1x1YmRmOSIsNiwiXHViZTAxXHViZTAyXHViZTA0XHViZTA2Iiw1LCJcdWJlMGVcdWJlMGZcdWJlMTFcdWJlMTJcdWJlMTMiXSxbIjk1ODEiLCJcdWJlMTUiLDYsIlx1YmUxZVx1YmUyMCIsMzUsIlx1YmU0''@;'; put 'put ''Nlx1YmU0N1x1YmU0OVx1YmU0YVx1YmU0Ylx1YmU0ZFx1YmU0ZiIsNCwiXHViZTU2XHViZTU4XHViZTVjXHViZTVkXHViZTVlXHViZTVmXHViZTYyXHViZTYzXHViZTY1XHViZTY2XHViZTY3XHViZTY5XHViZTZiIiw0LCJcdWJlNzJcdWJlNzYiLDQsIlx1YmU3ZVx1YmU3Zlx1YmU4MVx1YmU4''@;'; put 'put ''Mlx1YmU4M1x1YmU4NSIsNiwiXHViZThlXHViZTkyIiw1LCJcdWJlOWEiLDEzLCJcdWJlYTkiLDE0XSxbIjk2NDEiLCJcdWJlYjgiLDIzLCJcdWJlZDJcdWJlZDMiXSxbIjk2NjEiLCJcdWJlZDVcdWJlZDZcdWJlZDkiLDYsIlx1YmVlMVx1YmVlMlx1YmVlNiIsNSwiXHViZWVkIiw4XSxbIjk2''@;'; put 'put ''ODEiLCJcdWJlZjYiLDEwLCJcdWJmMDIiLDUsIlx1YmYwYSIsMTMsIlx1YmYxYVx1YmYxZSIsMzMsIlx1YmY0Mlx1YmY0M1x1YmY0NVx1YmY0Nlx1YmY0N1x1YmY0OSIsNiwiXHViZjUyXHViZjUzXHViZjU0XHViZjU2Iiw0NF0sWyI5NzQxIiwiXHViZjgzIiwxNiwiXHViZjk1Iiw4XSxbIjk3''@;'; put 'put ''NjEiLCJcdWJmOWUiLDE3LCJcdWJmYjEiLDddLFsiOTc4MSIsIlx1YmZiOSIsMTEsIlx1YmZjNiIsNSwiXHViZmNlXHViZmNmXHViZmQxXHViZmQyXHViZmQzXHViZmQ1Iiw2LCJcdWJmZGRcdWJmZGVcdWJmZTBcdWJmZTIiLDg5LCJcdWMwM2RcdWMwM2VcdWMwM2YiXSxbIjk4NDEiLCJcdWMw''@;'; put 'put ''NDAiLDE2LCJcdWMwNTIiLDUsIlx1YzA1OVx1YzA1YVx1YzA1YiJdLFsiOTg2MSIsIlx1YzA1ZFx1YzA1ZVx1YzA1Zlx1YzA2MSIsNiwiXHVjMDZhIiwxNV0sWyI5ODgxIiwiXHVjMDdhIiwyMSwiXHVjMDkyXHVjMDkzXHVjMDk1XHVjMDk2XHVjMDk3XHVjMDk5Iiw2LCJcdWMwYTJcdWMwYTRc''@;'; put 'put ''dWMwYTYiLDUsIlx1YzBhZVx1YzBiMVx1YzBiMlx1YzBiNyIsNCwiXHVjMGJlXHVjMGMyXHVjMGMzXHVjMGM0XHVjMGM2XHVjMGM3XHVjMGNhXHVjMGNiXHVjMGNkXHVjMGNlXHVjMGNmXHVjMGQxIiw2LCJcdWMwZGFcdWMwZGUiLDUsIlx1YzBlNlx1YzBlN1x1YzBlOVx1YzBlYVx1YzBlYlx1''@;'; put 'put ''YzBlZCIsNiwiXHVjMGY2XHVjMGY4XHVjMGZhIiw1LCJcdWMxMDFcdWMxMDJcdWMxMDNcdWMxMDVcdWMxMDZcdWMxMDdcdWMxMDkiLDYsIlx1YzExMVx1YzExMlx1YzExM1x1YzExNFx1YzExNiIsNSwiXHVjMTIxXHVjMTIyXHVjMTI1XHVjMTI4XHVjMTI5XHVjMTJhXHVjMTJiXHVjMTJlIl0s''@;'; put 'put ''WyI5OTQxIiwiXHVjMTMyXHVjMTMzXHVjMTM0XHVjMTM1XHVjMTM3XHVjMTNhXHVjMTNiXHVjMTNkXHVjMTNlXHVjMTNmXHVjMTQxIiw2LCJcdWMxNGFcdWMxNGUiLDUsIlx1YzE1Nlx1YzE1NyJdLFsiOTk2MSIsIlx1YzE1OVx1YzE1YVx1YzE1Ylx1YzE1ZCIsNiwiXHVjMTY2XHVjMTZhIiw1''@;'; put 'put ''LCJcdWMxNzFcdWMxNzJcdWMxNzNcdWMxNzVcdWMxNzZcdWMxNzdcdWMxNzlcdWMxN2FcdWMxN2IiXSxbIjk5ODEiLCJcdWMxN2MiLDgsIlx1YzE4NiIsNSwiXHVjMThmXHVjMTkxXHVjMTkyXHVjMTkzXHVjMTk1XHVjMTk3Iiw0LCJcdWMxOWVcdWMxYTBcdWMxYTJcdWMxYTNcdWMxYTRcdWMx''@;'; put 'put ''YTZcdWMxYTdcdWMxYWFcdWMxYWJcdWMxYWRcdWMxYWVcdWMxYWZcdWMxYjEiLDExLCJcdWMxYmUiLDUsIlx1YzFjNVx1YzFjNlx1YzFjN1x1YzFjOVx1YzFjYVx1YzFjYlx1YzFjZCIsNiwiXHVjMWQ1XHVjMWQ2XHVjMWQ5Iiw2LCJcdWMxZTFcdWMxZTJcdWMxZTNcdWMxZTVcdWMxZTZcdWMx''@;'; put 'put ''ZTdcdWMxZTkiLDYsIlx1YzFmMlx1YzFmNCIsNywiXHVjMWZlXHVjMWZmXHVjMjAxXHVjMjAyXHVjMjAzXHVjMjA1Iiw2LCJcdWMyMGVcdWMyMTBcdWMyMTIiLDUsIlx1YzIxYVx1YzIxYlx1YzIxZFx1YzIxZVx1YzIyMVx1YzIyMlx1YzIyMyJdLFsiOWE0MSIsIlx1YzIyNFx1YzIyNVx1YzIy''@;'; put 'put ''Nlx1YzIyN1x1YzIyYVx1YzIyY1x1YzIyZVx1YzIzMFx1YzIzM1x1YzIzNSIsMTZdLFsiOWE2MSIsIlx1YzI0Nlx1YzI0N1x1YzI0OSIsNiwiXHVjMjUyXHVjMjUzXHVjMjU1XHVjMjU2XHVjMjU3XHVjMjU5Iiw2LCJcdWMyNjFcdWMyNjJcdWMyNjNcdWMyNjRcdWMyNjYiXSxbIjlhODEiLCJc''@;'; put 'put ''dWMyNjciLDQsIlx1YzI2ZVx1YzI2Zlx1YzI3MVx1YzI3Mlx1YzI3M1x1YzI3NSIsNiwiXHVjMjdlXHVjMjgwXHVjMjgyIiw1LCJcdWMyOGEiLDUsIlx1YzI5MSIsNiwiXHVjMjk5XHVjMjlhXHVjMjljXHVjMjllIiw1LCJcdWMyYTZcdWMyYTdcdWMyYTlcdWMyYWFcdWMyYWJcdWMyYWUiLDUs''@;'; put 'put ''Ilx1YzJiNlx1YzJiOFx1YzJiYSIsMzMsIlx1YzJkZVx1YzJkZlx1YzJlMVx1YzJlMlx1YzJlNSIsNSwiXHVjMmVlXHVjMmYwXHVjMmYyXHVjMmYzXHVjMmY0XHVjMmY1XHVjMmY3XHVjMmZhXHVjMmZkXHVjMmZlXHVjMmZmXHVjMzAxIiw2LCJcdWMzMGFcdWMzMGJcdWMzMGVcdWMzMGYiXSxb''@;'; put 'put ''IjliNDEiLCJcdWMzMTBcdWMzMTFcdWMzMTJcdWMzMTZcdWMzMTdcdWMzMTlcdWMzMWFcdWMzMWJcdWMzMWQiLDYsIlx1YzMyNlx1YzMyN1x1YzMyYSIsOF0sWyI5YjYxIiwiXHVjMzMzIiwxNywiXHVjMzQ2Iiw3XSxbIjliODEiLCJcdWMzNGUiLDI1LCJcdWMzNmFcdWMzNmJcdWMzNmRcdWMz''@;'; put 'put ''NmVcdWMzNmZcdWMzNzFcdWMzNzMiLDQsIlx1YzM3YVx1YzM3Ylx1YzM3ZSIsNSwiXHVjMzg1XHVjMzg2XHVjMzg3XHVjMzg5XHVjMzhhXHVjMzhiXHVjMzhkIiw1MCwiXHVjM2MxIiwyMiwiXHVjM2RhIl0sWyI5YzQxIiwiXHVjM2RiXHVjM2RkXHVjM2RlXHVjM2UxXHVjM2UzIiw0LCJcdWMz''@;'; put 'put ''ZWFcdWMzZWJcdWMzZWNcdWMzZWUiLDUsIlx1YzNmNlx1YzNmN1x1YzNmOSIsNV0sWyI5YzYxIiwiXHVjM2ZmIiw4LCJcdWM0MDkiLDYsIlx1YzQxMSIsOV0sWyI5YzgxIiwiXHVjNDFiIiw4LCJcdWM0MjUiLDYsIlx1YzQyZFx1YzQyZVx1YzQyZlx1YzQzMVx1YzQzMlx1YzQzM1x1YzQzNSIs''@;'; put 'put ''NiwiXHVjNDNlIiw5LCJcdWM0NDkiLDI2LCJcdWM0NjZcdWM0NjdcdWM0NjlcdWM0NmFcdWM0NmJcdWM0NmQiLDYsIlx1YzQ3Nlx1YzQ3N1x1YzQ3OFx1YzQ3YSIsNSwiXHVjNDgxIiwxOCwiXHVjNDk1Iiw2LCJcdWM0OWQiLDEyXSxbIjlkNDEiLCJcdWM0YWEiLDEzLCJcdWM0YjlcdWM0YmFc''@;'; put 'put ''dWM0YmJcdWM0YmQiLDhdLFsiOWQ2MSIsIlx1YzRjNiIsMjVdLFsiOWQ4MSIsIlx1YzRlMCIsOCwiXHVjNGVhIiw1LCJcdWM0ZjJcdWM0ZjNcdWM0ZjVcdWM0ZjZcdWM0ZjdcdWM0ZjlcdWM0ZmJcdWM0ZmNcdWM0ZmRcdWM0ZmVcdWM1MDIiLDksIlx1YzUwZFx1YzUwZVx1YzUwZlx1YzUxMVx1''@;'; put 'put ''YzUxMlx1YzUxM1x1YzUxNSIsNiwiXHVjNTFkIiwxMCwiXHVjNTJhXHVjNTJiXHVjNTJkXHVjNTJlXHVjNTJmXHVjNTMxIiw2LCJcdWM1M2FcdWM1M2NcdWM1M2UiLDUsIlx1YzU0Nlx1YzU0N1x1YzU0Ylx1YzU0Zlx1YzU1MFx1YzU1MVx1YzU1Mlx1YzU1Nlx1YzU1YVx1YzU1Ylx1YzU1Y1x1''@;'; put 'put ''YzU1Zlx1YzU2Mlx1YzU2M1x1YzU2NVx1YzU2Nlx1YzU2N1x1YzU2OSIsNiwiXHVjNTcyXHVjNTc2Iiw1LCJcdWM1N2VcdWM1N2ZcdWM1ODFcdWM1ODJcdWM1ODNcdWM1ODVcdWM1ODZcdWM1ODhcdWM1ODlcdWM1OGFcdWM1OGJcdWM1OGVcdWM1OTBcdWM1OTJcdWM1OTNcdWM1OTQiXSxbIjll''@;'; put 'put ''NDEiLCJcdWM1OTZcdWM1OTlcdWM1OWFcdWM1OWJcdWM1OWRcdWM1OWVcdWM1OWZcdWM1YTEiLDcsIlx1YzVhYSIsOSwiXHVjNWI2Il0sWyI5ZTYxIiwiXHVjNWI3XHVjNWJhXHVjNWJmIiw0LCJcdWM1Y2JcdWM1Y2RcdWM1Y2ZcdWM1ZDJcdWM1ZDNcdWM1ZDVcdWM1ZDZcdWM1ZDdcdWM1ZDki''@;'; put 'put ''LDYsIlx1YzVlMlx1YzVlNFx1YzVlNlx1YzVlNyJdLFsiOWU4MSIsIlx1YzVlOFx1YzVlOVx1YzVlYVx1YzVlYlx1YzVlZlx1YzVmMVx1YzVmMlx1YzVmM1x1YzVmNVx1YzVmOFx1YzVmOVx1YzVmYVx1YzVmYlx1YzYwMlx1YzYwM1x1YzYwNFx1YzYwOVx1YzYwYVx1YzYwYlx1YzYwZFx1YzYw''@;'; put 'put ''ZVx1YzYwZlx1YzYxMSIsNiwiXHVjNjFhXHVjNjFkIiw2LCJcdWM2MjZcdWM2MjdcdWM2MjlcdWM2MmFcdWM2MmJcdWM2MmZcdWM2MzFcdWM2MzJcdWM2MzZcdWM2MzhcdWM2M2FcdWM2M2NcdWM2M2RcdWM2M2VcdWM2M2ZcdWM2NDJcdWM2NDNcdWM2NDVcdWM2NDZcdWM2NDdcdWM2NDkiLDYs''@;'; put 'put ''Ilx1YzY1Mlx1YzY1NiIsNSwiXHVjNjVlXHVjNjVmXHVjNjYxIiwxMCwiXHVjNjZkXHVjNjZlXHVjNjcwXHVjNjcyIiw1LCJcdWM2N2FcdWM2N2JcdWM2N2RcdWM2N2VcdWM2N2ZcdWM2ODEiLDYsIlx1YzY4YVx1YzY4Y1x1YzY4ZSIsNSwiXHVjNjk2XHVjNjk3XHVjNjk5XHVjNjlhXHVjNjli''@;'; put 'put ''XHVjNjlkIiw2LCJcdWM2YTYiXSxbIjlmNDEiLCJcdWM2YThcdWM2YWEiLDUsIlx1YzZiMlx1YzZiM1x1YzZiNVx1YzZiNlx1YzZiN1x1YzZiYiIsNCwiXHVjNmMyXHVjNmM0XHVjNmM2Iiw1LCJcdWM2Y2UiXSxbIjlmNjEiLCJcdWM2Y2ZcdWM2ZDFcdWM2ZDJcdWM2ZDNcdWM2ZDUiLDYsIlx1''@;'; put 'put ''YzZkZVx1YzZkZlx1YzZlMiIsNSwiXHVjNmVhXHVjNmViXHVjNmVkXHVjNmVlXHVjNmVmXHVjNmYxXHVjNmYyIl0sWyI5ZjgxIiwiXHVjNmYzIiw0LCJcdWM2ZmFcdWM2ZmJcdWM2ZmNcdWM2ZmUiLDUsIlx1YzcwNlx1YzcwN1x1YzcwOVx1YzcwYVx1YzcwYlx1YzcwZCIsNiwiXHVjNzE2XHVj''@;'; put 'put ''NzE4XHVjNzFhIiw1LCJcdWM3MjJcdWM3MjNcdWM3MjVcdWM3MjZcdWM3MjdcdWM3MjkiLDYsIlx1YzczMlx1YzczNFx1YzczNlx1YzczOFx1YzczOVx1YzczYVx1YzczYlx1YzczZVx1YzczZlx1Yzc0MVx1Yzc0Mlx1Yzc0M1x1Yzc0NSIsNCwiXHVjNzRiXHVjNzRlXHVjNzUwXHVjNzU5XHVj''@;'; put 'put ''NzVhXHVjNzViXHVjNzVkXHVjNzVlXHVjNzVmXHVjNzYxIiw2LCJcdWM3NjlcdWM3NmFcdWM3NmMiLDcsIlx1Yzc3Nlx1Yzc3N1x1Yzc3OVx1Yzc3YVx1Yzc3Ylx1Yzc3Zlx1Yzc4MFx1Yzc4MVx1Yzc4Mlx1Yzc4Nlx1Yzc4Ylx1Yzc4Y1x1Yzc4ZFx1Yzc4Zlx1Yzc5Mlx1Yzc5M1x1Yzc5NVx1''@;'; put 'put ''Yzc5OVx1Yzc5YiIsNCwiXHVjN2EyXHVjN2E3Iiw0LCJcdWM3YWVcdWM3YWZcdWM3YjFcdWM3YjJcdWM3YjNcdWM3YjVcdWM3YjZcdWM3YjciXSxbImEwNDEiLCJcdWM3YjhcdWM3YjlcdWM3YmFcdWM3YmJcdWM3YmVcdWM3YzIiLDUsIlx1YzdjYVx1YzdjYlx1YzdjZFx1YzdjZlx1YzdkMSIs''@;'; put 'put ''NiwiXHVjN2Q5XHVjN2RhXHVjN2RiXHVjN2RjIl0sWyJhMDYxIiwiXHVjN2RlIiw1LCJcdWM3ZTVcdWM3ZTZcdWM3ZTdcdWM3ZTlcdWM3ZWFcdWM3ZWJcdWM3ZWQiLDEzXSxbImEwODEiLCJcdWM3ZmIiLDQsIlx1YzgwMlx1YzgwM1x1YzgwNVx1YzgwNlx1YzgwN1x1YzgwOVx1YzgwYiIsNCwi''@;'; put 'put ''XHVjODEyXHVjODE0XHVjODE3Iiw0LCJcdWM4MWVcdWM4MWZcdWM4MjFcdWM4MjJcdWM4MjNcdWM4MjUiLDYsIlx1YzgyZVx1YzgzMFx1YzgzMiIsNSwiXHVjODM5XHVjODNhXHVjODNiXHVjODNkXHVjODNlXHVjODNmXHVjODQxIiw2LCJcdWM4NGFcdWM4NGJcdWM4NGUiLDUsIlx1Yzg1NSIs''@;'; put 'put ''MjYsIlx1Yzg3Mlx1Yzg3M1x1Yzg3NVx1Yzg3Nlx1Yzg3N1x1Yzg3OVx1Yzg3YiIsNCwiXHVjODgyXHVjODg0XHVjODg4XHVjODg5XHVjODhhXHVjODhlIiw1LCJcdWM4OTUiLDcsIlx1Yzg5ZVx1YzhhMFx1YzhhMlx1YzhhM1x1YzhhNCJdLFsiYTE0MSIsIlx1YzhhNVx1YzhhNlx1YzhhN1x1''@;'; put 'put ''YzhhOSIsMTgsIlx1YzhiZVx1YzhiZlx1YzhjMFx1YzhjMSJdLFsiYTE2MSIsIlx1YzhjMlx1YzhjM1x1YzhjNVx1YzhjNlx1YzhjN1x1YzhjOVx1YzhjYVx1YzhjYlx1YzhjZCIsNiwiXHVjOGQ2XHVjOGQ4XHVjOGRhIiw1LCJcdWM4ZTJcdWM4ZTNcdWM4ZTUiXSxbImExODEiLCJcdWM4ZTYi''@;'; put 'put ''LDE0LCJcdWM4ZjYiLDUsIlx1YzhmZVx1YzhmZlx1YzkwMVx1YzkwMlx1YzkwM1x1YzkwNyIsNCwiXHVjOTBlXHUzMDAwXHUzMDAxXHUzMDAyXHhiN1x1MjAyNVx1MjAyNlx4YThcdTMwMDNceGFkXHUyMDE1XHUyMjI1XHVmZjNjXHUyMjNjXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUzMDE0''@;'; put 'put ''XHUzMDE1XHUzMDA4Iiw5LCJceGIxXHhkN1x4ZjdcdTIyNjBcdTIyNjRcdTIyNjVcdTIyMWVcdTIyMzRceGIwXHUyMDMyXHUyMDMzXHUyMTAzXHUyMTJiXHVmZmUwXHVmZmUxXHVmZmU1XHUyNjQyXHUyNjQwXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHhhN1x1''@;'; put 'put ''MjAzYlx1MjYwNlx1MjYwNVx1MjVjYlx1MjVjZlx1MjVjZVx1MjVjN1x1MjVjNlx1MjVhMVx1MjVhMFx1MjViM1x1MjViMlx1MjViZFx1MjViY1x1MjE5Mlx1MjE5MFx1MjE5MVx1MjE5M1x1MjE5NFx1MzAxM1x1MjI2YVx1MjI2Ylx1MjIxYVx1MjIzZFx1MjIxZFx1MjIzNVx1MjIyYlx1MjIy''@;'; put 'put ''Y1x1MjIwOFx1MjIwYlx1MjI4Nlx1MjI4N1x1MjI4Mlx1MjI4M1x1MjIyYVx1MjIyOVx1MjIyN1x1MjIyOFx1ZmZlMiJdLFsiYTI0MSIsIlx1YzkxMFx1YzkxMiIsNSwiXHVjOTE5IiwxOF0sWyJhMjYxIiwiXHVjOTJkIiw2LCJcdWM5MzUiLDE4XSxbImEyODEiLCJcdWM5NDgiLDcsIlx1Yzk1''@;'; put 'put ''Mlx1Yzk1M1x1Yzk1NVx1Yzk1Nlx1Yzk1N1x1Yzk1OSIsNiwiXHVjOTYyXHVjOTY0Iiw3LCJcdWM5NmRcdWM5NmVcdWM5NmZcdTIxZDJcdTIxZDRcdTIyMDBcdTIyMDNceGI0XHVmZjVlXHUwMmM3XHUwMmQ4XHUwMmRkXHUwMmRhXHUwMmQ5XHhiOFx1MDJkYlx4YTFceGJmXHUwMmQwXHUyMjJl''@;'; put 'put ''XHUyMjExXHUyMjBmXHhhNFx1MjEwOVx1MjAzMFx1MjVjMVx1MjVjMFx1MjViN1x1MjViNlx1MjY2NFx1MjY2MFx1MjY2MVx1MjY2NVx1MjY2N1x1MjY2M1x1MjI5OVx1MjVjOFx1MjVhM1x1MjVkMFx1MjVkMVx1MjU5Mlx1MjVhNFx1MjVhNVx1MjVhOFx1MjVhN1x1MjVhNlx1MjVhOVx1MjY2''@;'; put 'put ''OFx1MjYwZlx1MjYwZVx1MjYxY1x1MjYxZVx4YjZcdTIwMjBcdTIwMjFcdTIxOTVcdTIxOTdcdTIxOTlcdTIxOTZcdTIxOThcdTI2NmRcdTI2NjlcdTI2NmFcdTI2NmNcdTMyN2ZcdTMyMWNcdTIxMTZcdTMzYzdcdTIxMjJcdTMzYzJcdTMzZDhcdTIxMjFcdTIwYWNceGFlIl0sWyJhMzQxIiwi''@;'; put 'put ''XHVjOTcxXHVjOTcyXHVjOTczXHVjOTc1Iiw2LCJcdWM5N2QiLDEwLCJcdWM5OGFcdWM5OGJcdWM5OGRcdWM5OGVcdWM5OGYiXSxbImEzNjEiLCJcdWM5OTEiLDYsIlx1Yzk5YVx1Yzk5Y1x1Yzk5ZSIsMTZdLFsiYTM4MSIsIlx1YzlhZiIsMTYsIlx1YzljMlx1YzljM1x1YzljNVx1YzljNlx1''@;'; put 'put ''YzljOVx1YzljYiIsNCwiXHVjOWQyXHVjOWQ0XHVjOWQ3XHVjOWQ4XHVjOWRiXHVmZjAxIiw1OCwiXHVmZmU2XHVmZjNkIiwzMiwiXHVmZmUzIl0sWyJhNDQxIiwiXHVjOWRlXHVjOWRmXHVjOWUxXHVjOWUzXHVjOWU1XHVjOWU2XHVjOWU4XHVjOWU5XHVjOWVhXHVjOWViXHVjOWVlXHVjOWYy''@;'; put 'put ''Iiw1LCJcdWM5ZmFcdWM5ZmJcdWM5ZmRcdWM5ZmVcdWM5ZmZcdWNhMDFcdWNhMDJcdWNhMDNcdWNhMDQiXSxbImE0NjEiLCJcdWNhMDVcdWNhMDZcdWNhMDdcdWNhMGFcdWNhMGUiLDUsIlx1Y2ExNVx1Y2ExNlx1Y2ExN1x1Y2ExOSIsMTJdLFsiYTQ4MSIsIlx1Y2EyNlx1Y2EyN1x1Y2EyOFx1''@;'; put 'put ''Y2EyYSIsMjgsIlx1MzEzMSIsOTNdLFsiYTU0MSIsIlx1Y2E0NyIsNCwiXHVjYTRlXHVjYTRmXHVjYTUxXHVjYTUyXHVjYTUzXHVjYTU1Iiw2LCJcdWNhNWVcdWNhNjIiLDUsIlx1Y2E2OVx1Y2E2YSJdLFsiYTU2MSIsIlx1Y2E2YiIsMTcsIlx1Y2E3ZSIsNSwiXHVjYTg1XHVjYTg2Il0sWyJh''@;'; put 'put ''NTgxIiwiXHVjYTg3IiwxNiwiXHVjYTk5IiwxNCwiXHUyMTcwIiw5XSxbImE1YjAiLCJcdTIxNjAiLDldLFsiYTVjMSIsIlx1MDM5MSIsMTYsIlx1MDNhMyIsNl0sWyJhNWUxIiwiXHUwM2IxIiwxNiwiXHUwM2MzIiw2XSxbImE2NDEiLCJcdWNhYTgiLDE5LCJcdWNhYmVcdWNhYmZcdWNhYzFc''@;'; put 'put ''dWNhYzJcdWNhYzNcdWNhYzUiXSxbImE2NjEiLCJcdWNhYzYiLDUsIlx1Y2FjZVx1Y2FkMFx1Y2FkMlx1Y2FkNFx1Y2FkNVx1Y2FkNlx1Y2FkN1x1Y2FkYSIsNSwiXHVjYWUxIiw2XSxbImE2ODEiLCJcdWNhZThcdWNhZTlcdWNhZWFcdWNhZWJcdWNhZWQiLDYsIlx1Y2FmNSIsMTgsIlx1Y2Iw''@;'; put 'put ''OVx1Y2IwYVx1MjUwMFx1MjUwMlx1MjUwY1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1''@;'; put 'put ''MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1MjUzOFx1MjU0Mlx1MjUxMlx1MjUxMVx1MjUxYVx1MjUxOVx1MjUxNlx1MjUxNVx1MjUwZVx1MjUwZFx1MjUxZVx1MjUxZlx1MjUyMVx1MjUyMlx1MjUyNlx1MjUyN1x1MjUyOVx1MjUyYVx1MjUyZFx1MjUyZVx1MjUzMVx1MjUzMlx1MjUzNVx1MjUz''@;'; put 'put ''Nlx1MjUzOVx1MjUzYVx1MjUzZFx1MjUzZVx1MjU0MFx1MjU0MVx1MjU0MyIsN10sWyJhNzQxIiwiXHVjYjBiIiw0LCJcdWNiMTFcdWNiMTJcdWNiMTNcdWNiMTVcdWNiMTZcdWNiMTdcdWNiMTkiLDYsIlx1Y2IyMiIsN10sWyJhNzYxIiwiXHVjYjJhIiwyMiwiXHVjYjQyXHVjYjQzXHVjYjQ0''@;'; put 'put ''Il0sWyJhNzgxIiwiXHVjYjQ1XHVjYjQ2XHVjYjQ3XHVjYjRhXHVjYjRiXHVjYjRkXHVjYjRlXHVjYjRmXHVjYjUxIiw2LCJcdWNiNWFcdWNiNWJcdWNiNWNcdWNiNWUiLDUsIlx1Y2I2NSIsNywiXHUzMzk1XHUzMzk2XHUzMzk3XHUyMTEzXHUzMzk4XHUzM2M0XHUzM2EzXHUzM2E0XHUzM2E1''@;'; put 'put ''XHUzM2E2XHUzMzk5Iiw5LCJcdTMzY2FcdTMzOGRcdTMzOGVcdTMzOGZcdTMzY2ZcdTMzODhcdTMzODlcdTMzYzhcdTMzYTdcdTMzYThcdTMzYjAiLDksIlx1MzM4MCIsNCwiXHUzM2JhIiw1LCJcdTMzOTAiLDQsIlx1MjEyNlx1MzNjMFx1MzNjMVx1MzM4YVx1MzM4Ylx1MzM4Y1x1MzNkNlx1''@;'; put 'put ''MzNjNVx1MzNhZFx1MzNhZVx1MzNhZlx1MzNkYlx1MzNhOVx1MzNhYVx1MzNhYlx1MzNhY1x1MzNkZFx1MzNkMFx1MzNkM1x1MzNjM1x1MzNjOVx1MzNkY1x1MzNjNiJdLFsiYTg0MSIsIlx1Y2I2ZCIsMTAsIlx1Y2I3YSIsMTRdLFsiYTg2MSIsIlx1Y2I4OSIsMTgsIlx1Y2I5ZCIsNl0sWyJh''@;'; put 'put ''ODgxIiwiXHVjYmE0IiwxOSwiXHVjYmI5IiwxMSwiXHhjNlx4ZDBceGFhXHUwMTI2Il0sWyJhOGE2IiwiXHUwMTMyIl0sWyJhOGE4IiwiXHUwMTNmXHUwMTQxXHhkOFx1MDE1Mlx4YmFceGRlXHUwMTY2XHUwMTRhIl0sWyJhOGIxIiwiXHUzMjYwIiwyNywiXHUyNGQwIiwyNSwiXHUyNDYwIiwx''@;'; put 'put ''NCwiXHhiZFx1MjE1M1x1MjE1NFx4YmNceGJlXHUyMTViXHUyMTVjXHUyMTVkXHUyMTVlIl0sWyJhOTQxIiwiXHVjYmM1IiwxNCwiXHVjYmQ1IiwxMF0sWyJhOTYxIiwiXHVjYmUwXHVjYmUxXHVjYmUyXHVjYmUzXHVjYmU1XHVjYmU2XHVjYmU4XHVjYmVhIiwxOF0sWyJhOTgxIiwiXHVjYmZk''@;'; put 'put ''IiwxNCwiXHVjYzBlXHVjYzBmXHVjYzExXHVjYzEyXHVjYzEzXHVjYzE1Iiw2LCJcdWNjMWVcdWNjMWZcdWNjMjBcdWNjMjNcdWNjMjRceGU2XHUwMTExXHhmMFx1MDEyN1x1MDEzMVx1MDEzM1x1MDEzOFx1MDE0MFx1MDE0Mlx4ZjhcdTAxNTNceGRmXHhmZVx1MDE2N1x1MDE0Ylx1MDE0OVx1''@;'; put 'put ''MzIwMCIsMjcsIlx1MjQ5YyIsMjUsIlx1MjQ3NCIsMTQsIlx4YjlceGIyXHhiM1x1MjA3NFx1MjA3Zlx1MjA4MVx1MjA4Mlx1MjA4M1x1MjA4NCJdLFsiYWE0MSIsIlx1Y2MyNVx1Y2MyNlx1Y2MyYVx1Y2MyYlx1Y2MyZFx1Y2MyZlx1Y2MzMSIsNiwiXHVjYzNhXHVjYzNmIiw0LCJcdWNjNDZc''@;'; put 'put ''dWNjNDdcdWNjNDlcdWNjNGFcdWNjNGJcdWNjNGRcdWNjNGUiXSxbImFhNjEiLCJcdWNjNGYiLDQsIlx1Y2M1Nlx1Y2M1YSIsNSwiXHVjYzYxXHVjYzYyXHVjYzYzXHVjYzY1XHVjYzY3XHVjYzY5Iiw2LCJcdWNjNzFcdWNjNzIiXSxbImFhODEiLCJcdWNjNzNcdWNjNzRcdWNjNzYiLDI5LCJc''@;'; put 'put ''dTMwNDEiLDgyXSxbImFiNDEiLCJcdWNjOTRcdWNjOTVcdWNjOTZcdWNjOTdcdWNjOWFcdWNjOWJcdWNjOWRcdWNjOWVcdWNjOWZcdWNjYTEiLDYsIlx1Y2NhYVx1Y2NhZSIsNSwiXHVjY2I2XHVjY2I3XHVjY2I5Il0sWyJhYjYxIiwiXHVjY2JhXHVjY2JiXHVjY2JkIiw2LCJcdWNjYzZcdWNj''@;'; put 'put ''YzhcdWNjY2EiLDUsIlx1Y2NkMVx1Y2NkMlx1Y2NkM1x1Y2NkNSIsNV0sWyJhYjgxIiwiXHVjY2RiIiw4LCJcdWNjZTUiLDYsIlx1Y2NlZFx1Y2NlZVx1Y2NlZlx1Y2NmMSIsMTIsIlx1MzBhMSIsODVdLFsiYWM0MSIsIlx1Y2NmZVx1Y2NmZlx1Y2QwMFx1Y2QwMiIsNSwiXHVjZDBhXHVjZDBi''@;'; put 'put ''XHVjZDBkXHVjZDBlXHVjZDBmXHVjZDExIiw2LCJcdWNkMWFcdWNkMWNcdWNkMWVcdWNkMWZcdWNkMjAiXSxbImFjNjEiLCJcdWNkMjFcdWNkMjJcdWNkMjNcdWNkMjVcdWNkMjZcdWNkMjdcdWNkMjlcdWNkMmFcdWNkMmJcdWNkMmQiLDExLCJcdWNkM2EiLDRdLFsiYWM4MSIsIlx1Y2QzZiIs''@;'; put 'put ''MjgsIlx1Y2Q1ZFx1Y2Q1ZVx1Y2Q1Zlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhY2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImFkNDEiLCJcdWNkNjFcdWNkNjJcdWNkNjNcdWNkNjUiLDYsIlx1Y2Q2ZVx1Y2Q3MFx1Y2Q3MiIsNSwiXHVjZDc5Iiw3XSxbImFk''@;'; put 'put ''NjEiLCJcdWNkODEiLDYsIlx1Y2Q4OSIsMTAsIlx1Y2Q5Nlx1Y2Q5N1x1Y2Q5OVx1Y2Q5YVx1Y2Q5Ylx1Y2Q5ZFx1Y2Q5ZVx1Y2Q5ZiJdLFsiYWQ4MSIsIlx1Y2RhMFx1Y2RhMVx1Y2RhMlx1Y2RhM1x1Y2RhNlx1Y2RhOFx1Y2RhYSIsNSwiXHVjZGIxIiwxOCwiXHVjZGM1Il0sWyJhZTQxIiwi''@;'; put 'put ''XHVjZGM2Iiw1LCJcdWNkY2RcdWNkY2VcdWNkY2ZcdWNkZDEiLDE2XSxbImFlNjEiLCJcdWNkZTIiLDUsIlx1Y2RlOVx1Y2RlYVx1Y2RlYlx1Y2RlZFx1Y2RlZVx1Y2RlZlx1Y2RmMSIsNiwiXHVjZGZhXHVjZGZjXHVjZGZlIiw0XSxbImFlODEiLCJcdWNlMDNcdWNlMDVcdWNlMDZcdWNlMDdc''@;'; put 'put ''dWNlMDlcdWNlMGFcdWNlMGJcdWNlMGQiLDYsIlx1Y2UxNVx1Y2UxNlx1Y2UxN1x1Y2UxOFx1Y2UxYSIsNSwiXHVjZTIyXHVjZTIzXHVjZTI1XHVjZTI2XHVjZTI3XHVjZTI5XHVjZTJhXHVjZTJiIl0sWyJhZjQxIiwiXHVjZTJjXHVjZTJkXHVjZTJlXHVjZTJmXHVjZTMyXHVjZTM0XHVjZTM2''@;'; put 'put ''IiwxOV0sWyJhZjYxIiwiXHVjZTRhIiwxMywiXHVjZTVhXHVjZTViXHVjZTVkXHVjZTVlXHVjZTYyIiw1LCJcdWNlNmFcdWNlNmMiXSxbImFmODEiLCJcdWNlNmUiLDUsIlx1Y2U3Nlx1Y2U3N1x1Y2U3OVx1Y2U3YVx1Y2U3Ylx1Y2U3ZCIsNiwiXHVjZTg2XHVjZTg4XHVjZThhIiw1LCJcdWNl''@;'; put 'put ''OTJcdWNlOTNcdWNlOTVcdWNlOTZcdWNlOTdcdWNlOTkiXSxbImIwNDEiLCJcdWNlOWEiLDUsIlx1Y2VhMlx1Y2VhNiIsNSwiXHVjZWFlIiwxMl0sWyJiMDYxIiwiXHVjZWJiIiw1LCJcdWNlYzIiLDE5XSxbImIwODEiLCJcdWNlZDYiLDEzLCJcdWNlZTZcdWNlZTdcdWNlZTlcdWNlZWFcdWNl''@;'; put 'put ''ZWQiLDYsIlx1Y2VmNlx1Y2VmYSIsNSwiXHVhYzAwXHVhYzAxXHVhYzA0XHVhYzA3XHVhYzA4XHVhYzA5XHVhYzBhXHVhYzEwIiw3LCJcdWFjMTkiLDQsIlx1YWMyMFx1YWMyNFx1YWMyY1x1YWMyZFx1YWMyZlx1YWMzMFx1YWMzMVx1YWMzOFx1YWMzOVx1YWMzY1x1YWM0MFx1YWM0Ylx1YWM0''@;'; put 'put ''ZFx1YWM1NFx1YWM1OFx1YWM1Y1x1YWM3MFx1YWM3MVx1YWM3NFx1YWM3N1x1YWM3OFx1YWM3YVx1YWM4MFx1YWM4MVx1YWM4M1x1YWM4NFx1YWM4NVx1YWM4Nlx1YWM4OVx1YWM4YVx1YWM4Ylx1YWM4Y1x1YWM5MFx1YWM5NFx1YWM5Y1x1YWM5ZFx1YWM5Zlx1YWNhMFx1YWNhMVx1YWNhOFx1''@;'; put 'put ''YWNhOVx1YWNhYVx1YWNhY1x1YWNhZlx1YWNiMFx1YWNiOFx1YWNiOVx1YWNiYlx1YWNiY1x1YWNiZFx1YWNjMVx1YWNjNFx1YWNjOFx1YWNjY1x1YWNkNVx1YWNkN1x1YWNlMFx1YWNlMVx1YWNlNFx1YWNlN1x1YWNlOFx1YWNlYVx1YWNlY1x1YWNlZlx1YWNmMFx1YWNmMVx1YWNmM1x1YWNm''@;'; put 'put ''NVx1YWNmNlx1YWNmY1x1YWNmZFx1YWQwMFx1YWQwNFx1YWQwNiJdLFsiYjE0MSIsIlx1Y2YwMlx1Y2YwM1x1Y2YwNVx1Y2YwNlx1Y2YwN1x1Y2YwOSIsNiwiXHVjZjEyXHVjZjE0XHVjZjE2Iiw1LCJcdWNmMWRcdWNmMWVcdWNmMWZcdWNmMjFcdWNmMjJcdWNmMjMiXSxbImIxNjEiLCJcdWNm''@;'; put 'put ''MjUiLDYsIlx1Y2YyZVx1Y2YzMiIsNSwiXHVjZjM5IiwxMV0sWyJiMTgxIiwiXHVjZjQ1IiwxNCwiXHVjZjU2XHVjZjU3XHVjZjU5XHVjZjVhXHVjZjViXHVjZjVkIiw2LCJcdWNmNjZcdWNmNjhcdWNmNmFcdWNmNmJcdWNmNmNcdWFkMGNcdWFkMGRcdWFkMGZcdWFkMTFcdWFkMThcdWFkMWNc''@;'; put 'put ''dWFkMjBcdWFkMjlcdWFkMmNcdWFkMmRcdWFkMzRcdWFkMzVcdWFkMzhcdWFkM2NcdWFkNDRcdWFkNDVcdWFkNDdcdWFkNDlcdWFkNTBcdWFkNTRcdWFkNThcdWFkNjFcdWFkNjNcdWFkNmNcdWFkNmRcdWFkNzBcdWFkNzNcdWFkNzRcdWFkNzVcdWFkNzZcdWFkN2JcdWFkN2NcdWFkN2RcdWFk''@;'; put 'put ''N2ZcdWFkODFcdWFkODJcdWFkODhcdWFkODlcdWFkOGNcdWFkOTBcdWFkOWNcdWFkOWRcdWFkYTRcdWFkYjdcdWFkYzBcdWFkYzFcdWFkYzRcdWFkYzhcdWFkZDBcdWFkZDFcdWFkZDNcdWFkZGNcdWFkZTBcdWFkZTRcdWFkZjhcdWFkZjlcdWFkZmNcdWFkZmZcdWFlMDBcdWFlMDFcdWFlMDhc''@;'; put 'put ''dWFlMDlcdWFlMGJcdWFlMGRcdWFlMTRcdWFlMzBcdWFlMzFcdWFlMzRcdWFlMzdcdWFlMzhcdWFlM2FcdWFlNDBcdWFlNDFcdWFlNDNcdWFlNDVcdWFlNDZcdWFlNGFcdWFlNGNcdWFlNGRcdWFlNGVcdWFlNTBcdWFlNTRcdWFlNTZcdWFlNWNcdWFlNWRcdWFlNWZcdWFlNjBcdWFlNjFcdWFl''@;'; put 'put ''NjVcdWFlNjhcdWFlNjlcdWFlNmNcdWFlNzBcdWFlNzgiXSxbImIyNDEiLCJcdWNmNmRcdWNmNmVcdWNmNmZcdWNmNzJcdWNmNzNcdWNmNzVcdWNmNzZcdWNmNzdcdWNmNzkiLDYsIlx1Y2Y4MVx1Y2Y4Mlx1Y2Y4M1x1Y2Y4NFx1Y2Y4NiIsNSwiXHVjZjhkIl0sWyJiMjYxIiwiXHVjZjhlIiwx''@;'; put 'put ''OCwiXHVjZmEyIiw1LCJcdWNmYTkiXSxbImIyODEiLCJcdWNmYWEiLDUsIlx1Y2ZiMSIsMTgsIlx1Y2ZjNSIsNiwiXHVhZTc5XHVhZTdiXHVhZTdjXHVhZTdkXHVhZTg0XHVhZTg1XHVhZThjXHVhZWJjXHVhZWJkXHVhZWJlXHVhZWMwXHVhZWM0XHVhZWNjXHVhZWNkXHVhZWNmXHVhZWQwXHVh''@;'; put 'put ''ZWQxXHVhZWQ4XHVhZWQ5XHVhZWRjXHVhZWU4XHVhZWViXHVhZWVkXHVhZWY0XHVhZWY4XHVhZWZjXHVhZjA3XHVhZjA4XHVhZjBkXHVhZjEwXHVhZjJjXHVhZjJkXHVhZjMwXHVhZjMyXHVhZjM0XHVhZjNjXHVhZjNkXHVhZjNmXHVhZjQxXHVhZjQyXHVhZjQzXHVhZjQ4XHVhZjQ5XHVhZjUw''@;'; put 'put ''XHVhZjVjXHVhZjVkXHVhZjY0XHVhZjY1XHVhZjc5XHVhZjgwXHVhZjg0XHVhZjg4XHVhZjkwXHVhZjkxXHVhZjk1XHVhZjljXHVhZmI4XHVhZmI5XHVhZmJjXHVhZmMwXHVhZmM3XHVhZmM4XHVhZmM5XHVhZmNiXHVhZmNkXHVhZmNlXHVhZmQ0XHVhZmRjXHVhZmU4XHVhZmU5XHVhZmYwXHVh''@;'; put 'put ''ZmYxXHVhZmY0XHVhZmY4XHViMDAwXHViMDAxXHViMDA0XHViMDBjXHViMDEwXHViMDE0XHViMDFjXHViMDFkXHViMDI4XHViMDQ0XHViMDQ1XHViMDQ4XHViMDRhXHViMDRjXHViMDRlXHViMDUzXHViMDU0XHViMDU1XHViMDU3XHViMDU5Il0sWyJiMzQxIiwiXHVjZmNjIiwxOSwiXHVjZmUy''@;'; put 'put ''XHVjZmUzXHVjZmU1XHVjZmU2XHVjZmU3XHVjZmU5Il0sWyJiMzYxIiwiXHVjZmVhIiw1LCJcdWNmZjJcdWNmZjRcdWNmZjYiLDUsIlx1Y2ZmZFx1Y2ZmZVx1Y2ZmZlx1ZDAwMVx1ZDAwMlx1ZDAwM1x1ZDAwNSIsNV0sWyJiMzgxIiwiXHVkMDBiIiw1LCJcdWQwMTIiLDUsIlx1ZDAxOSIsMTks''@;'; put 'put ''Ilx1YjA1ZFx1YjA3Y1x1YjA3ZFx1YjA4MFx1YjA4NFx1YjA4Y1x1YjA4ZFx1YjA4Zlx1YjA5MVx1YjA5OFx1YjA5OVx1YjA5YVx1YjA5Y1x1YjA5Zlx1YjBhMFx1YjBhMVx1YjBhMlx1YjBhOFx1YjBhOVx1YjBhYiIsNCwiXHViMGIxXHViMGIzXHViMGI0XHViMGI1XHViMGI4XHViMGJjXHVi''@;'; put 'put ''MGM0XHViMGM1XHViMGM3XHViMGM4XHViMGM5XHViMGQwXHViMGQxXHViMGQ0XHViMGQ4XHViMGUwXHViMGU1XHViMTA4XHViMTA5XHViMTBiXHViMTBjXHViMTEwXHViMTEyXHViMTEzXHViMTE4XHViMTE5XHViMTFiXHViMTFjXHViMTFkXHViMTIzXHViMTI0XHViMTI1XHViMTI4XHViMTJj''@;'; put 'put ''XHViMTM0XHViMTM1XHViMTM3XHViMTM4XHViMTM5XHViMTQwXHViMTQxXHViMTQ0XHViMTQ4XHViMTUwXHViMTUxXHViMTU0XHViMTU1XHViMTU4XHViMTVjXHViMTYwXHViMTc4XHViMTc5XHViMTdjXHViMTgwXHViMTgyXHViMTg4XHViMTg5XHViMThiXHViMThkXHViMTkyXHViMTkzXHVi''@;'; put 'put ''MTk0XHViMTk4XHViMTljXHViMWE4XHViMWNjXHViMWQwXHViMWQ0XHViMWRjXHViMWRkIl0sWyJiNDQxIiwiXHVkMDJlIiw1LCJcdWQwMzZcdWQwMzdcdWQwMzlcdWQwM2FcdWQwM2JcdWQwM2QiLDYsIlx1ZDA0Nlx1ZDA0OFx1ZDA0YSIsNV0sWyJiNDYxIiwiXHVkMDUxXHVkMDUyXHVkMDUz''@;'; put 'put ''XHVkMDU1XHVkMDU2XHVkMDU3XHVkMDU5Iiw2LCJcdWQwNjEiLDEwLCJcdWQwNmVcdWQwNmYiXSxbImI0ODEiLCJcdWQwNzFcdWQwNzJcdWQwNzNcdWQwNzUiLDYsIlx1ZDA3ZVx1ZDA3Zlx1ZDA4MFx1ZDA4MiIsMTgsIlx1YjFkZlx1YjFlOFx1YjFlOVx1YjFlY1x1YjFmMFx1YjFmOVx1YjFm''@;'; put 'put ''Ylx1YjFmZFx1YjIwNFx1YjIwNVx1YjIwOFx1YjIwYlx1YjIwY1x1YjIxNFx1YjIxNVx1YjIxN1x1YjIxOVx1YjIyMFx1YjIzNFx1YjIzY1x1YjI1OFx1YjI1Y1x1YjI2MFx1YjI2OFx1YjI2OVx1YjI3NFx1YjI3NVx1YjI3Y1x1YjI4NFx1YjI4NVx1YjI4OVx1YjI5MFx1YjI5MVx1YjI5NFx1''@;'; put 'put ''YjI5OFx1YjI5OVx1YjI5YVx1YjJhMFx1YjJhMVx1YjJhM1x1YjJhNVx1YjJhNlx1YjJhYVx1YjJhY1x1YjJiMFx1YjJiNFx1YjJjOFx1YjJjOVx1YjJjY1x1YjJkMFx1YjJkMlx1YjJkOFx1YjJkOVx1YjJkYlx1YjJkZFx1YjJlMlx1YjJlNFx1YjJlNVx1YjJlNlx1YjJlOFx1YjJlYiIsNCwi''@;'; put 'put ''XHViMmYzXHViMmY0XHViMmY1XHViMmY3Iiw0LCJcdWIyZmZcdWIzMDBcdWIzMDFcdWIzMDRcdWIzMDhcdWIzMTBcdWIzMTFcdWIzMTNcdWIzMTRcdWIzMTVcdWIzMWNcdWIzNTRcdWIzNTVcdWIzNTZcdWIzNThcdWIzNWJcdWIzNWNcdWIzNWVcdWIzNWZcdWIzNjRcdWIzNjUiXSxbImI1NDEi''@;'; put 'put ''LCJcdWQwOTUiLDE0LCJcdWQwYTZcdWQwYTdcdWQwYTlcdWQwYWFcdWQwYWJcdWQwYWQiLDVdLFsiYjU2MSIsIlx1ZDBiM1x1ZDBiNlx1ZDBiOFx1ZDBiYSIsNSwiXHVkMGMyXHVkMGMzXHVkMGM1XHVkMGM2XHVkMGM3XHVkMGNhIiw1LCJcdWQwZDJcdWQwZDYiLDRdLFsiYjU4MSIsIlx1ZDBk''@;'; put 'put ''Ylx1ZDBkZVx1ZDBkZlx1ZDBlMVx1ZDBlMlx1ZDBlM1x1ZDBlNSIsNiwiXHVkMGVlXHVkMGYyIiw1LCJcdWQwZjkiLDExLCJcdWIzNjdcdWIzNjlcdWIzNmJcdWIzNmVcdWIzNzBcdWIzNzFcdWIzNzRcdWIzNzhcdWIzODBcdWIzODFcdWIzODNcdWIzODRcdWIzODVcdWIzOGNcdWIzOTBcdWIz''@;'; put 'put ''OTRcdWIzYTBcdWIzYTFcdWIzYThcdWIzYWNcdWIzYzRcdWIzYzVcdWIzYzhcdWIzY2JcdWIzY2NcdWIzY2VcdWIzZDBcdWIzZDRcdWIzZDVcdWIzZDdcdWIzZDlcdWIzZGJcdWIzZGRcdWIzZTBcdWIzZTRcdWIzZThcdWIzZmNcdWI0MTBcdWI0MThcdWI0MWNcdWI0MjBcdWI0MjhcdWI0Mjlc''@;'; put 'put ''dWI0MmJcdWI0MzRcdWI0NTBcdWI0NTFcdWI0NTRcdWI0NThcdWI0NjBcdWI0NjFcdWI0NjNcdWI0NjVcdWI0NmNcdWI0ODBcdWI0ODhcdWI0OWRcdWI0YTRcdWI0YThcdWI0YWNcdWI0YjVcdWI0YjdcdWI0YjlcdWI0YzBcdWI0YzRcdWI0YzhcdWI0ZDBcdWI0ZDVcdWI0ZGNcdWI0ZGRcdWI0''@;'; put 'put ''ZTBcdWI0ZTNcdWI0ZTRcdWI0ZTZcdWI0ZWNcdWI0ZWRcdWI0ZWZcdWI0ZjFcdWI0ZjhcdWI1MTRcdWI1MTVcdWI1MThcdWI1MWJcdWI1MWNcdWI1MjRcdWI1MjVcdWI1MjdcdWI1MjhcdWI1MjlcdWI1MmFcdWI1MzBcdWI1MzFcdWI1MzRcdWI1MzgiXSxbImI2NDEiLCJcdWQxMDUiLDcsIlx1''@;'; put 'put ''ZDEwZSIsMTddLFsiYjY2MSIsIlx1ZDEyMCIsMTUsIlx1ZDEzMlx1ZDEzM1x1ZDEzNVx1ZDEzNlx1ZDEzN1x1ZDEzOVx1ZDEzYlx1ZDEzY1x1ZDEzZFx1ZDEzZSJdLFsiYjY4MSIsIlx1ZDEzZlx1ZDE0Mlx1ZDE0NiIsNSwiXHVkMTRlXHVkMTRmXHVkMTUxXHVkMTUyXHVkMTUzXHVkMTU1Iiw2''@;'; put 'put ''LCJcdWQxNWVcdWQxNjBcdWQxNjIiLDUsIlx1ZDE2OVx1ZDE2YVx1ZDE2Ylx1ZDE2ZFx1YjU0MFx1YjU0MVx1YjU0M1x1YjU0NFx1YjU0NVx1YjU0Ylx1YjU0Y1x1YjU0ZFx1YjU1MFx1YjU1NFx1YjU1Y1x1YjU1ZFx1YjU1Zlx1YjU2MFx1YjU2MVx1YjVhMFx1YjVhMVx1YjVhNFx1YjVhOFx1''@;'; put 'put ''YjVhYVx1YjVhYlx1YjViMFx1YjViMVx1YjViM1x1YjViNFx1YjViNVx1YjViYlx1YjViY1x1YjViZFx1YjVjMFx1YjVjNFx1YjVjY1x1YjVjZFx1YjVjZlx1YjVkMFx1YjVkMVx1YjVkOFx1YjVlY1x1YjYxMFx1YjYxMVx1YjYxNFx1YjYxOFx1YjYyNVx1YjYyY1x1YjYzNFx1YjY0OFx1YjY2''@;'; put 'put ''NFx1YjY2OFx1YjY5Y1x1YjY5ZFx1YjZhMFx1YjZhNFx1YjZhYlx1YjZhY1x1YjZiMVx1YjZkNFx1YjZmMFx1YjZmNFx1YjZmOFx1YjcwMFx1YjcwMVx1YjcwNVx1YjcyOFx1YjcyOVx1YjcyY1x1YjcyZlx1YjczMFx1YjczOFx1YjczOVx1YjczYlx1Yjc0NFx1Yjc0OFx1Yjc0Y1x1Yjc1NFx1''@;'; put 'put ''Yjc1NVx1Yjc2MFx1Yjc2NFx1Yjc2OFx1Yjc3MFx1Yjc3MVx1Yjc3M1x1Yjc3NVx1Yjc3Y1x1Yjc3ZFx1Yjc4MFx1Yjc4NFx1Yjc4Y1x1Yjc4ZFx1Yjc4Zlx1Yjc5MFx1Yjc5MVx1Yjc5Mlx1Yjc5Nlx1Yjc5NyJdLFsiYjc0MSIsIlx1ZDE2ZSIsMTMsIlx1ZDE3ZCIsNiwiXHVkMTg1XHVkMTg2''@;'; put 'put ''XHVkMTg3XHVkMTg5XHVkMThhIl0sWyJiNzYxIiwiXHVkMThiIiwyMCwiXHVkMWEyXHVkMWEzXHVkMWE1XHVkMWE2XHVkMWE3Il0sWyJiNzgxIiwiXHVkMWE5Iiw2LCJcdWQxYjJcdWQxYjRcdWQxYjZcdWQxYjdcdWQxYjhcdWQxYjlcdWQxYmJcdWQxYmRcdWQxYmVcdWQxYmZcdWQxYzEiLDE0''@;'; put 'put ''LCJcdWI3OThcdWI3OTlcdWI3OWNcdWI3YTBcdWI3YThcdWI3YTlcdWI3YWJcdWI3YWNcdWI3YWRcdWI3YjRcdWI3YjVcdWI3YjhcdWI3YzdcdWI3YzlcdWI3ZWNcdWI3ZWRcdWI3ZjBcdWI3ZjRcdWI3ZmNcdWI3ZmRcdWI3ZmZcdWI4MDBcdWI4MDFcdWI4MDdcdWI4MDhcdWI4MDlcdWI4MGNc''@;'; put 'put ''dWI4MTBcdWI4MThcdWI4MTlcdWI4MWJcdWI4MWRcdWI4MjRcdWI4MjVcdWI4MjhcdWI4MmNcdWI4MzRcdWI4MzVcdWI4MzdcdWI4MzhcdWI4MzlcdWI4NDBcdWI4NDRcdWI4NTFcdWI4NTNcdWI4NWNcdWI4NWRcdWI4NjBcdWI4NjRcdWI4NmNcdWI4NmRcdWI4NmZcdWI4NzFcdWI4NzhcdWI4''@;'; put 'put ''N2NcdWI4OGRcdWI4YThcdWI4YjBcdWI4YjRcdWI4YjhcdWI4YzBcdWI4YzFcdWI4YzNcdWI4YzVcdWI4Y2NcdWI4ZDBcdWI4ZDRcdWI4ZGRcdWI4ZGZcdWI4ZTFcdWI4ZThcdWI4ZTlcdWI4ZWNcdWI4ZjBcdWI4ZjhcdWI4ZjlcdWI4ZmJcdWI4ZmRcdWI5MDRcdWI5MThcdWI5MjBcdWI5M2Nc''@;'; put 'put ''dWI5M2RcdWI5NDBcdWI5NDRcdWI5NGNcdWI5NGZcdWI5NTFcdWI5NThcdWI5NTlcdWI5NWNcdWI5NjBcdWI5NjhcdWI5NjkiXSxbImI4NDEiLCJcdWQxZDAiLDcsIlx1ZDFkOSIsMTddLFsiYjg2MSIsIlx1ZDFlYiIsOCwiXHVkMWY1XHVkMWY2XHVkMWY3XHVkMWY5IiwxM10sWyJiODgxIiwi''@;'; put 'put ''XHVkMjA4XHVkMjBhIiw1LCJcdWQyMTEiLDI0LCJcdWI5NmJcdWI5NmRcdWI5NzRcdWI5NzVcdWI5NzhcdWI5N2NcdWI5ODRcdWI5ODVcdWI5ODdcdWI5ODlcdWI5OGFcdWI5OGRcdWI5OGVcdWI5YWNcdWI5YWRcdWI5YjBcdWI5YjRcdWI5YmNcdWI5YmRcdWI5YmZcdWI5YzFcdWI5YzhcdWI5''@;'; put 'put ''YzlcdWI5Y2NcdWI5Y2UiLDQsIlx1YjlkOFx1YjlkOVx1YjlkYlx1YjlkZFx1YjlkZVx1YjllMVx1YjllM1x1YjllNFx1YjllNVx1YjllOFx1YjllY1x1YjlmNFx1YjlmNVx1YjlmN1x1YjlmOFx1YjlmOVx1YjlmYVx1YmEwMFx1YmEwMVx1YmEwOFx1YmExNVx1YmEzOFx1YmEzOVx1YmEzY1x1''@;'; put 'put ''YmE0MFx1YmE0Mlx1YmE0OFx1YmE0OVx1YmE0Ylx1YmE0ZFx1YmE0ZVx1YmE1M1x1YmE1NFx1YmE1NVx1YmE1OFx1YmE1Y1x1YmE2NFx1YmE2NVx1YmE2N1x1YmE2OFx1YmE2OVx1YmE3MFx1YmE3MVx1YmE3NFx1YmE3OFx1YmE4M1x1YmE4NFx1YmE4NVx1YmE4N1x1YmE4Y1x1YmFhOFx1YmFh''@;'; put 'put ''OVx1YmFhYlx1YmFhY1x1YmFiMFx1YmFiMlx1YmFiOFx1YmFiOVx1YmFiYlx1YmFiZFx1YmFjNFx1YmFjOFx1YmFkOFx1YmFkOVx1YmFmYyJdLFsiYjk0MSIsIlx1ZDIyYVx1ZDIyYlx1ZDIyZVx1ZDIyZlx1ZDIzMVx1ZDIzMlx1ZDIzM1x1ZDIzNSIsNiwiXHVkMjNlXHVkMjQwXHVkMjQyIiw1''@;'; put 'put ''LCJcdWQyNDlcdWQyNGFcdWQyNGJcdWQyNGMiXSxbImI5NjEiLCJcdWQyNGQiLDE0LCJcdWQyNWQiLDYsIlx1ZDI2NVx1ZDI2Nlx1ZDI2N1x1ZDI2OCJdLFsiYjk4MSIsIlx1ZDI2OSIsMjIsIlx1ZDI4Mlx1ZDI4M1x1ZDI4NVx1ZDI4Nlx1ZDI4N1x1ZDI4OVx1ZDI4YVx1ZDI4Ylx1ZDI4Y1x1''@;'; put 'put ''YmIwMFx1YmIwNFx1YmIwZFx1YmIwZlx1YmIxMVx1YmIxOFx1YmIxY1x1YmIyMFx1YmIyOVx1YmIyYlx1YmIzNFx1YmIzNVx1YmIzNlx1YmIzOFx1YmIzYlx1YmIzY1x1YmIzZFx1YmIzZVx1YmI0NFx1YmI0NVx1YmI0N1x1YmI0OVx1YmI0ZFx1YmI0Zlx1YmI1MFx1YmI1NFx1YmI1OFx1YmI2''@;'; put 'put ''MVx1YmI2M1x1YmI2Y1x1YmI4OFx1YmI4Y1x1YmI5MFx1YmJhNFx1YmJhOFx1YmJhY1x1YmJiNFx1YmJiN1x1YmJjMFx1YmJjNFx1YmJjOFx1YmJkMFx1YmJkM1x1YmJmOFx1YmJmOVx1YmJmY1x1YmJmZlx1YmMwMFx1YmMwMlx1YmMwOFx1YmMwOVx1YmMwYlx1YmMwY1x1YmMwZFx1YmMwZlx1''@;'; put 'put ''YmMxMVx1YmMxNCIsNCwiXHViYzFiIiw0LCJcdWJjMjRcdWJjMjVcdWJjMjdcdWJjMjlcdWJjMmRcdWJjMzBcdWJjMzFcdWJjMzRcdWJjMzhcdWJjNDBcdWJjNDFcdWJjNDNcdWJjNDRcdWJjNDVcdWJjNDlcdWJjNGNcdWJjNGRcdWJjNTBcdWJjNWRcdWJjODRcdWJjODVcdWJjODhcdWJjOGJc''@;'; put 'put ''dWJjOGNcdWJjOGVcdWJjOTRcdWJjOTVcdWJjOTciXSxbImJhNDEiLCJcdWQyOGRcdWQyOGVcdWQyOGZcdWQyOTJcdWQyOTNcdWQyOTRcdWQyOTYiLDUsIlx1ZDI5ZFx1ZDI5ZVx1ZDI5Zlx1ZDJhMVx1ZDJhMlx1ZDJhM1x1ZDJhNSIsNiwiXHVkMmFkIl0sWyJiYTYxIiwiXHVkMmFlXHVkMmFm''@;'; put 'put ''XHVkMmIwXHVkMmIyIiw1LCJcdWQyYmFcdWQyYmJcdWQyYmRcdWQyYmVcdWQyYzFcdWQyYzMiLDQsIlx1ZDJjYVx1ZDJjYyIsNV0sWyJiYTgxIiwiXHVkMmQyXHVkMmQzXHVkMmQ1XHVkMmQ2XHVkMmQ3XHVkMmQ5XHVkMmRhXHVkMmRiXHVkMmRkIiw2LCJcdWQyZTYiLDksIlx1ZDJmMlx1ZDJm''@;'; put 'put ''M1x1ZDJmNVx1ZDJmNlx1ZDJmN1x1ZDJmOVx1ZDJmYVx1YmM5OVx1YmM5YVx1YmNhMFx1YmNhMVx1YmNhNFx1YmNhN1x1YmNhOFx1YmNiMFx1YmNiMVx1YmNiM1x1YmNiNFx1YmNiNVx1YmNiY1x1YmNiZFx1YmNjMFx1YmNjNFx1YmNjZFx1YmNjZlx1YmNkMFx1YmNkMVx1YmNkNVx1YmNkOFx1''@;'; put 'put ''YmNkY1x1YmNmNFx1YmNmNVx1YmNmNlx1YmNmOFx1YmNmY1x1YmQwNFx1YmQwNVx1YmQwN1x1YmQwOVx1YmQxMFx1YmQxNFx1YmQyNFx1YmQyY1x1YmQ0MFx1YmQ0OFx1YmQ0OVx1YmQ0Y1x1YmQ1MFx1YmQ1OFx1YmQ1OVx1YmQ2NFx1YmQ2OFx1YmQ4MFx1YmQ4MVx1YmQ4NFx1YmQ4N1x1YmQ4''@;'; put 'put ''OFx1YmQ4OVx1YmQ4YVx1YmQ5MFx1YmQ5MVx1YmQ5M1x1YmQ5NVx1YmQ5OVx1YmQ5YVx1YmQ5Y1x1YmRhNFx1YmRiMFx1YmRiOFx1YmRkNFx1YmRkNVx1YmRkOFx1YmRkY1x1YmRlOVx1YmRmMFx1YmRmNFx1YmRmOFx1YmUwMFx1YmUwM1x1YmUwNVx1YmUwY1x1YmUwZFx1YmUxMFx1YmUxNFx1''@;'; put 'put ''YmUxY1x1YmUxZFx1YmUxZlx1YmU0NFx1YmU0NVx1YmU0OFx1YmU0Y1x1YmU0ZVx1YmU1NFx1YmU1NVx1YmU1N1x1YmU1OVx1YmU1YVx1YmU1Ylx1YmU2MFx1YmU2MVx1YmU2NCJdLFsiYmI0MSIsIlx1ZDJmYiIsNCwiXHVkMzAyXHVkMzA0XHVkMzA2Iiw1LCJcdWQzMGZcdWQzMTFcdWQzMTJc''@;'; put 'put ''dWQzMTNcdWQzMTVcdWQzMTciLDQsIlx1ZDMxZVx1ZDMyMlx1ZDMyMyJdLFsiYmI2MSIsIlx1ZDMyNFx1ZDMyNlx1ZDMyN1x1ZDMyYVx1ZDMyYlx1ZDMyZFx1ZDMyZVx1ZDMyZlx1ZDMzMSIsNiwiXHVkMzNhXHVkMzNlIiw1LCJcdWQzNDZcdWQzNDdcdWQzNDhcdWQzNDkiXSxbImJiODEiLCJc''@;'; put 'put ''dWQzNGEiLDMxLCJcdWJlNjhcdWJlNmFcdWJlNzBcdWJlNzFcdWJlNzNcdWJlNzRcdWJlNzVcdWJlN2JcdWJlN2NcdWJlN2RcdWJlODBcdWJlODRcdWJlOGNcdWJlOGRcdWJlOGZcdWJlOTBcdWJlOTFcdWJlOThcdWJlOTlcdWJlYThcdWJlZDBcdWJlZDFcdWJlZDRcdWJlZDdcdWJlZDhcdWJl''@;'; put 'put ''ZTBcdWJlZTNcdWJlZTRcdWJlZTVcdWJlZWNcdWJmMDFcdWJmMDhcdWJmMDlcdWJmMThcdWJmMTlcdWJmMWJcdWJmMWNcdWJmMWRcdWJmNDBcdWJmNDFcdWJmNDRcdWJmNDhcdWJmNTBcdWJmNTFcdWJmNTVcdWJmOTRcdWJmYjBcdWJmYzVcdWJmY2NcdWJmY2RcdWJmZDBcdWJmZDRcdWJmZGNc''@;'; put 'put ''dWJmZGZcdWJmZTFcdWMwM2NcdWMwNTFcdWMwNThcdWMwNWNcdWMwNjBcdWMwNjhcdWMwNjlcdWMwOTBcdWMwOTFcdWMwOTRcdWMwOThcdWMwYTBcdWMwYTFcdWMwYTNcdWMwYTVcdWMwYWNcdWMwYWRcdWMwYWZcdWMwYjBcdWMwYjNcdWMwYjRcdWMwYjVcdWMwYjZcdWMwYmNcdWMwYmRcdWMw''@;'; put 'put ''YmZcdWMwYzBcdWMwYzFcdWMwYzVcdWMwYzhcdWMwYzlcdWMwY2NcdWMwZDBcdWMwZDhcdWMwZDlcdWMwZGJcdWMwZGNcdWMwZGRcdWMwZTQiXSxbImJjNDEiLCJcdWQzNmEiLDE3LCJcdWQzN2VcdWQzN2ZcdWQzODFcdWQzODJcdWQzODNcdWQzODVcdWQzODZcdWQzODciXSxbImJjNjEiLCJc''@;'; put 'put ''dWQzODhcdWQzODlcdWQzOGFcdWQzOGJcdWQzOGVcdWQzOTIiLDUsIlx1ZDM5YVx1ZDM5Ylx1ZDM5ZFx1ZDM5ZVx1ZDM5Zlx1ZDNhMSIsNiwiXHVkM2FhXHVkM2FjXHVkM2FlIl0sWyJiYzgxIiwiXHVkM2FmIiw0LCJcdWQzYjVcdWQzYjZcdWQzYjdcdWQzYjlcdWQzYmFcdWQzYmJcdWQzYmQi''@;'; put 'put ''LDYsIlx1ZDNjNlx1ZDNjN1x1ZDNjYSIsNSwiXHVkM2QxIiw1LCJcdWMwZTVcdWMwZThcdWMwZWNcdWMwZjRcdWMwZjVcdWMwZjdcdWMwZjlcdWMxMDBcdWMxMDRcdWMxMDhcdWMxMTBcdWMxMTVcdWMxMWMiLDQsIlx1YzEyM1x1YzEyNFx1YzEyNlx1YzEyN1x1YzEyY1x1YzEyZFx1YzEyZlx1''@;'; put 'put ''YzEzMFx1YzEzMVx1YzEzNlx1YzEzOFx1YzEzOVx1YzEzY1x1YzE0MFx1YzE0OFx1YzE0OVx1YzE0Ylx1YzE0Y1x1YzE0ZFx1YzE1NFx1YzE1NVx1YzE1OFx1YzE1Y1x1YzE2NFx1YzE2NVx1YzE2N1x1YzE2OFx1YzE2OVx1YzE3MFx1YzE3NFx1YzE3OFx1YzE4NVx1YzE4Y1x1YzE4ZFx1YzE4''@;'; put 'put ''ZVx1YzE5MFx1YzE5NFx1YzE5Nlx1YzE5Y1x1YzE5ZFx1YzE5Zlx1YzFhMVx1YzFhNVx1YzFhOFx1YzFhOVx1YzFhY1x1YzFiMFx1YzFiZFx1YzFjNFx1YzFjOFx1YzFjY1x1YzFkNFx1YzFkN1x1YzFkOFx1YzFlMFx1YzFlNFx1YzFlOFx1YzFmMFx1YzFmMVx1YzFmM1x1YzFmY1x1YzFmZFx1''@;'; put 'put ''YzIwMFx1YzIwNFx1YzIwY1x1YzIwZFx1YzIwZlx1YzIxMVx1YzIxOFx1YzIxOVx1YzIxY1x1YzIxZlx1YzIyMFx1YzIyOFx1YzIyOVx1YzIyYlx1YzIyZCJdLFsiYmQ0MSIsIlx1ZDNkN1x1ZDNkOSIsNywiXHVkM2UyXHVkM2U0Iiw3LCJcdWQzZWVcdWQzZWZcdWQzZjFcdWQzZjJcdWQzZjNc''@;'; put 'put ''dWQzZjVcdWQzZjZcdWQzZjciXSxbImJkNjEiLCJcdWQzZjhcdWQzZjlcdWQzZmFcdWQzZmJcdWQzZmVcdWQ0MDBcdWQ0MDIiLDUsIlx1ZDQwOSIsMTNdLFsiYmQ4MSIsIlx1ZDQxNyIsNSwiXHVkNDFlIiwyNSwiXHVjMjJmXHVjMjMxXHVjMjMyXHVjMjM0XHVjMjQ4XHVjMjUwXHVjMjUxXHVj''@;'; put 'put ''MjU0XHVjMjU4XHVjMjYwXHVjMjY1XHVjMjZjXHVjMjZkXHVjMjcwXHVjMjc0XHVjMjdjXHVjMjdkXHVjMjdmXHVjMjgxXHVjMjg4XHVjMjg5XHVjMjkwXHVjMjk4XHVjMjliXHVjMjlkXHVjMmE0XHVjMmE1XHVjMmE4XHVjMmFjXHVjMmFkXHVjMmI0XHVjMmI1XHVjMmI3XHVjMmI5XHVjMmRj''@;'; put 'put ''XHVjMmRkXHVjMmUwXHVjMmUzXHVjMmU0XHVjMmViXHVjMmVjXHVjMmVkXHVjMmVmXHVjMmYxXHVjMmY2XHVjMmY4XHVjMmY5XHVjMmZiXHVjMmZjXHVjMzAwXHVjMzA4XHVjMzA5XHVjMzBjXHVjMzBkXHVjMzEzXHVjMzE0XHVjMzE1XHVjMzE4XHVjMzFjXHVjMzI0XHVjMzI1XHVjMzI4XHVj''@;'; put 'put ''MzI5XHVjMzQ1XHVjMzY4XHVjMzY5XHVjMzZjXHVjMzcwXHVjMzcyXHVjMzc4XHVjMzc5XHVjMzdjXHVjMzdkXHVjMzg0XHVjMzg4XHVjMzhjXHVjM2MwXHVjM2Q4XHVjM2Q5XHVjM2RjXHVjM2RmXHVjM2UwXHVjM2UyXHVjM2U4XHVjM2U5XHVjM2VkXHVjM2Y0XHVjM2Y1XHVjM2Y4XHVjNDA4''@;'; put 'put ''XHVjNDEwXHVjNDI0XHVjNDJjXHVjNDMwIl0sWyJiZTQxIiwiXHVkNDM4Iiw3LCJcdWQ0NDFcdWQ0NDJcdWQ0NDNcdWQ0NDUiLDE0XSxbImJlNjEiLCJcdWQ0NTQiLDcsIlx1ZDQ1ZFx1ZDQ1ZVx1ZDQ1Zlx1ZDQ2MVx1ZDQ2Mlx1ZDQ2M1x1ZDQ2NSIsNywiXHVkNDZlXHVkNDcwXHVkNDcxXHVk''@;'; put 'put ''NDcyIl0sWyJiZTgxIiwiXHVkNDczIiw0LCJcdWQ0N2FcdWQ0N2JcdWQ0N2RcdWQ0N2VcdWQ0ODFcdWQ0ODMiLDQsIlx1ZDQ4YVx1ZDQ4Y1x1ZDQ4ZSIsNSwiXHVkNDk1Iiw4LCJcdWM0MzRcdWM0M2NcdWM0M2RcdWM0NDhcdWM0NjRcdWM0NjVcdWM0NjhcdWM0NmNcdWM0NzRcdWM0NzVcdWM0''@;'; put 'put ''NzlcdWM0ODBcdWM0OTRcdWM0OWNcdWM0YjhcdWM0YmNcdWM0ZTlcdWM0ZjBcdWM0ZjFcdWM0ZjRcdWM0ZjhcdWM0ZmFcdWM0ZmZcdWM1MDBcdWM1MDFcdWM1MGNcdWM1MTBcdWM1MTRcdWM1MWNcdWM1MjhcdWM1MjlcdWM1MmNcdWM1MzBcdWM1MzhcdWM1MzlcdWM1M2JcdWM1M2RcdWM1NDRc''@;'; put 'put ''dWM1NDVcdWM1NDhcdWM1NDlcdWM1NGFcdWM1NGNcdWM1NGRcdWM1NGVcdWM1NTNcdWM1NTRcdWM1NTVcdWM1NTdcdWM1NThcdWM1NTlcdWM1NWRcdWM1NWVcdWM1NjBcdWM1NjFcdWM1NjRcdWM1NjhcdWM1NzBcdWM1NzFcdWM1NzNcdWM1NzRcdWM1NzVcdWM1N2NcdWM1N2RcdWM1ODBcdWM1''@;'; put 'put ''ODRcdWM1ODdcdWM1OGNcdWM1OGRcdWM1OGZcdWM1OTFcdWM1OTVcdWM1OTdcdWM1OThcdWM1OWNcdWM1YTBcdWM1YTlcdWM1YjRcdWM1YjVcdWM1YjhcdWM1YjlcdWM1YmJcdWM1YmNcdWM1YmRcdWM1YmVcdWM1YzQiLDYsIlx1YzVjY1x1YzVjZSJdLFsiYmY0MSIsIlx1ZDQ5ZSIsMTAsIlx1''@;'; put 'put ''ZDRhYSIsMTRdLFsiYmY2MSIsIlx1ZDRiOSIsMTgsIlx1ZDRjZFx1ZDRjZVx1ZDRjZlx1ZDRkMVx1ZDRkMlx1ZDRkM1x1ZDRkNSJdLFsiYmY4MSIsIlx1ZDRkNiIsNSwiXHVkNGRkXHVkNGRlXHVkNGUwIiw3LCJcdWQ0ZTlcdWQ0ZWFcdWQ0ZWJcdWQ0ZWRcdWQ0ZWVcdWQ0ZWZcdWQ0ZjEiLDYs''@;'; put 'put ''Ilx1ZDRmOVx1ZDRmYVx1ZDRmY1x1YzVkMFx1YzVkMVx1YzVkNFx1YzVkOFx1YzVlMFx1YzVlMVx1YzVlM1x1YzVlNVx1YzVlY1x1YzVlZFx1YzVlZVx1YzVmMFx1YzVmNFx1YzVmNlx1YzVmN1x1YzVmYyIsNSwiXHVjNjA1XHVjNjA2XHVjNjA3XHVjNjA4XHVjNjBjXHVjNjEwXHVjNjE4XHVj''@;'; put 'put ''NjE5XHVjNjFiXHVjNjFjXHVjNjI0XHVjNjI1XHVjNjI4XHVjNjJjXHVjNjJkXHVjNjJlXHVjNjMwXHVjNjMzXHVjNjM0XHVjNjM1XHVjNjM3XHVjNjM5XHVjNjNiXHVjNjQwXHVjNjQxXHVjNjQ0XHVjNjQ4XHVjNjUwXHVjNjUxXHVjNjUzXHVjNjU0XHVjNjU1XHVjNjVjXHVjNjVkXHVjNjYw''@;'; put 'put ''XHVjNjZjXHVjNjZmXHVjNjcxXHVjNjc4XHVjNjc5XHVjNjdjXHVjNjgwXHVjNjg4XHVjNjg5XHVjNjhiXHVjNjhkXHVjNjk0XHVjNjk1XHVjNjk4XHVjNjljXHVjNmE0XHVjNmE1XHVjNmE3XHVjNmE5XHVjNmIwXHVjNmIxXHVjNmI0XHVjNmI4XHVjNmI5XHVjNmJhXHVjNmMwXHVjNmMxXHVj''@;'; put 'put ''NmMzXHVjNmM1XHVjNmNjXHVjNmNkXHVjNmQwXHVjNmQ0XHVjNmRjXHVjNmRkXHVjNmUwXHVjNmUxXHVjNmU4Il0sWyJjMDQxIiwiXHVkNGZlIiw1LCJcdWQ1MDVcdWQ1MDZcdWQ1MDdcdWQ1MDlcdWQ1MGFcdWQ1MGJcdWQ1MGQiLDYsIlx1ZDUxNlx1ZDUxOCIsNV0sWyJjMDYxIiwiXHVkNTFl''@;'; put 'put ''IiwyNV0sWyJjMDgxIiwiXHVkNTM4XHVkNTM5XHVkNTNhXHVkNTNiXHVkNTNlXHVkNTNmXHVkNTQxXHVkNTQyXHVkNTQzXHVkNTQ1Iiw2LCJcdWQ1NGVcdWQ1NTBcdWQ1NTIiLDUsIlx1ZDU1YVx1ZDU1Ylx1ZDU1ZFx1ZDU1ZVx1ZDU1Zlx1ZDU2MVx1ZDU2Mlx1ZDU2M1x1YzZlOVx1YzZlY1x1''@;'; put 'put ''YzZmMFx1YzZmOFx1YzZmOVx1YzZmZFx1YzcwNFx1YzcwNVx1YzcwOFx1YzcwY1x1YzcxNFx1YzcxNVx1YzcxN1x1YzcxOVx1YzcyMFx1YzcyMVx1YzcyNFx1YzcyOFx1YzczMFx1YzczMVx1YzczM1x1YzczNVx1YzczN1x1YzczY1x1YzczZFx1Yzc0MFx1Yzc0NFx1Yzc0YVx1Yzc0Y1x1Yzc0''@;'; put 'put ''ZFx1Yzc0Zlx1Yzc1MSIsNywiXHVjNzVjXHVjNzYwXHVjNzY4XHVjNzZiXHVjNzc0XHVjNzc1XHVjNzc4XHVjNzdjXHVjNzdkXHVjNzdlXHVjNzgzXHVjNzg0XHVjNzg1XHVjNzg3XHVjNzg4XHVjNzg5XHVjNzhhXHVjNzhlXHVjNzkwXHVjNzkxXHVjNzk0XHVjNzk2XHVjNzk3XHVjNzk4XHVj''@;'; put 'put ''NzlhXHVjN2EwXHVjN2ExXHVjN2EzXHVjN2E0XHVjN2E1XHVjN2E2XHVjN2FjXHVjN2FkXHVjN2IwXHVjN2I0XHVjN2JjXHVjN2JkXHVjN2JmXHVjN2MwXHVjN2MxXHVjN2M4XHVjN2M5XHVjN2NjXHVjN2NlXHVjN2QwXHVjN2Q4XHVjN2RkXHVjN2U0XHVjN2U4XHVjN2VjXHVjODAwXHVjODAx''@;'; put 'put ''XHVjODA0XHVjODA4XHVjODBhIl0sWyJjMTQxIiwiXHVkNTY0XHVkNTY2XHVkNTY3XHVkNTZhXHVkNTZjXHVkNTZlIiw1LCJcdWQ1NzZcdWQ1NzdcdWQ1NzlcdWQ1N2FcdWQ1N2JcdWQ1N2QiLDYsIlx1ZDU4Nlx1ZDU4YVx1ZDU4YiJdLFsiYzE2MSIsIlx1ZDU4Y1x1ZDU4ZFx1ZDU4ZVx1ZDU4''@;'; put 'put ''Zlx1ZDU5MSIsMTksIlx1ZDVhNlx1ZDVhNyJdLFsiYzE4MSIsIlx1ZDVhOCIsMzEsIlx1YzgxMFx1YzgxMVx1YzgxM1x1YzgxNVx1YzgxNlx1YzgxY1x1YzgxZFx1YzgyMFx1YzgyNFx1YzgyY1x1YzgyZFx1YzgyZlx1YzgzMVx1YzgzOFx1YzgzY1x1Yzg0MFx1Yzg0OFx1Yzg0OVx1Yzg0Y1x1''@;'; put 'put ''Yzg0ZFx1Yzg1NFx1Yzg3MFx1Yzg3MVx1Yzg3NFx1Yzg3OFx1Yzg3YVx1Yzg4MFx1Yzg4MVx1Yzg4M1x1Yzg4NVx1Yzg4Nlx1Yzg4N1x1Yzg4Ylx1Yzg4Y1x1Yzg4ZFx1Yzg5NFx1Yzg5ZFx1Yzg5Zlx1YzhhMVx1YzhhOFx1YzhiY1x1YzhiZFx1YzhjNFx1YzhjOFx1YzhjY1x1YzhkNFx1Yzhk''@;'; put 'put ''NVx1YzhkN1x1YzhkOVx1YzhlMFx1YzhlMVx1YzhlNFx1YzhmNVx1YzhmY1x1YzhmZFx1YzkwMFx1YzkwNFx1YzkwNVx1YzkwNlx1YzkwY1x1YzkwZFx1YzkwZlx1YzkxMVx1YzkxOFx1YzkyY1x1YzkzNFx1Yzk1MFx1Yzk1MVx1Yzk1NFx1Yzk1OFx1Yzk2MFx1Yzk2MVx1Yzk2M1x1Yzk2Y1x1''@;'; put 'put ''Yzk3MFx1Yzk3NFx1Yzk3Y1x1Yzk4OFx1Yzk4OVx1Yzk4Y1x1Yzk5MFx1Yzk5OFx1Yzk5OVx1Yzk5Ylx1Yzk5ZFx1YzljMFx1YzljMVx1YzljNFx1YzljN1x1YzljOFx1YzljYVx1YzlkMFx1YzlkMVx1YzlkMyJdLFsiYzI0MSIsIlx1ZDVjYVx1ZDVjYlx1ZDVjZFx1ZDVjZVx1ZDVjZlx1ZDVk''@;'; put 'put ''MVx1ZDVkMyIsNCwiXHVkNWRhXHVkNWRjXHVkNWRlIiw1LCJcdWQ1ZTZcdWQ1ZTdcdWQ1ZTlcdWQ1ZWFcdWQ1ZWJcdWQ1ZWRcdWQ1ZWUiXSxbImMyNjEiLCJcdWQ1ZWYiLDQsIlx1ZDVmNlx1ZDVmOFx1ZDVmYSIsNSwiXHVkNjAyXHVkNjAzXHVkNjA1XHVkNjA2XHVkNjA3XHVkNjA5Iiw2LCJc''@;'; put 'put ''dWQ2MTIiXSxbImMyODEiLCJcdWQ2MTYiLDUsIlx1ZDYxZFx1ZDYxZVx1ZDYxZlx1ZDYyMVx1ZDYyMlx1ZDYyM1x1ZDYyNSIsNywiXHVkNjJlIiw5LCJcdWQ2M2FcdWQ2M2JcdWM5ZDVcdWM5ZDZcdWM5ZDlcdWM5ZGFcdWM5ZGNcdWM5ZGRcdWM5ZTBcdWM5ZTJcdWM5ZTRcdWM5ZTdcdWM5ZWNc''@;'; put 'put ''dWM5ZWRcdWM5ZWZcdWM5ZjBcdWM5ZjFcdWM5ZjhcdWM5ZjlcdWM5ZmNcdWNhMDBcdWNhMDhcdWNhMDlcdWNhMGJcdWNhMGNcdWNhMGRcdWNhMTRcdWNhMThcdWNhMjlcdWNhNGNcdWNhNGRcdWNhNTBcdWNhNTRcdWNhNWNcdWNhNWRcdWNhNWZcdWNhNjBcdWNhNjFcdWNhNjhcdWNhN2RcdWNh''@;'; put 'put ''ODRcdWNhOThcdWNhYmNcdWNhYmRcdWNhYzBcdWNhYzRcdWNhY2NcdWNhY2RcdWNhY2ZcdWNhZDFcdWNhZDNcdWNhZDhcdWNhZDlcdWNhZTBcdWNhZWNcdWNhZjRcdWNiMDhcdWNiMTBcdWNiMTRcdWNiMThcdWNiMjBcdWNiMjFcdWNiNDFcdWNiNDhcdWNiNDlcdWNiNGNcdWNiNTBcdWNiNThc''@;'; put 'put ''dWNiNTlcdWNiNWRcdWNiNjRcdWNiNzhcdWNiNzlcdWNiOWNcdWNiYjhcdWNiZDRcdWNiZTRcdWNiZTdcdWNiZTlcdWNjMGNcdWNjMGRcdWNjMTBcdWNjMTRcdWNjMWNcdWNjMWRcdWNjMjFcdWNjMjJcdWNjMjdcdWNjMjhcdWNjMjlcdWNjMmNcdWNjMmVcdWNjMzBcdWNjMzhcdWNjMzlcdWNj''@;'; put 'put ''M2IiXSxbImMzNDEiLCJcdWQ2M2RcdWQ2M2VcdWQ2M2ZcdWQ2NDFcdWQ2NDJcdWQ2NDNcdWQ2NDRcdWQ2NDZcdWQ2NDdcdWQ2NGFcdWQ2NGNcdWQ2NGVcdWQ2NGZcdWQ2NTBcdWQ2NTJcdWQ2NTNcdWQ2NTZcdWQ2NTdcdWQ2NTlcdWQ2NWFcdWQ2NWJcdWQ2NWQiLDRdLFsiYzM2MSIsIlx1ZDY2''@;'; put 'put ''MiIsNCwiXHVkNjY4XHVkNjZhIiw1LCJcdWQ2NzJcdWQ2NzNcdWQ2NzUiLDExXSxbImMzODEiLCJcdWQ2ODFcdWQ2ODJcdWQ2ODRcdWQ2ODYiLDUsIlx1ZDY4ZVx1ZDY4Zlx1ZDY5MVx1ZDY5Mlx1ZDY5M1x1ZDY5NSIsNywiXHVkNjllXHVkNmEwXHVkNmEyIiw1LCJcdWQ2YTlcdWQ2YWFcdWNj''@;'; put 'put ''M2NcdWNjM2RcdWNjM2VcdWNjNDRcdWNjNDVcdWNjNDhcdWNjNGNcdWNjNTRcdWNjNTVcdWNjNTdcdWNjNThcdWNjNTlcdWNjNjBcdWNjNjRcdWNjNjZcdWNjNjhcdWNjNzBcdWNjNzVcdWNjOThcdWNjOTlcdWNjOWNcdWNjYTBcdWNjYThcdWNjYTlcdWNjYWJcdWNjYWNcdWNjYWRcdWNjYjRc''@;'; put 'put ''dWNjYjVcdWNjYjhcdWNjYmNcdWNjYzRcdWNjYzVcdWNjYzdcdWNjYzlcdWNjZDBcdWNjZDRcdWNjZTRcdWNjZWNcdWNjZjBcdWNkMDFcdWNkMDhcdWNkMDlcdWNkMGNcdWNkMTBcdWNkMThcdWNkMTlcdWNkMWJcdWNkMWRcdWNkMjRcdWNkMjhcdWNkMmNcdWNkMzlcdWNkNWNcdWNkNjBcdWNk''@;'; put 'put ''NjRcdWNkNmNcdWNkNmRcdWNkNmZcdWNkNzFcdWNkNzhcdWNkODhcdWNkOTRcdWNkOTVcdWNkOThcdWNkOWNcdWNkYTRcdWNkYTVcdWNkYTdcdWNkYTlcdWNkYjBcdWNkYzRcdWNkY2NcdWNkZDBcdWNkZThcdWNkZWNcdWNkZjBcdWNkZjhcdWNkZjlcdWNkZmJcdWNkZmRcdWNlMDRcdWNlMDhc''@;'; put 'put ''dWNlMGNcdWNlMTRcdWNlMTlcdWNlMjBcdWNlMjFcdWNlMjRcdWNlMjhcdWNlMzBcdWNlMzFcdWNlMzNcdWNlMzUiXSxbImM0NDEiLCJcdWQ2YWJcdWQ2YWRcdWQ2YWVcdWQ2YWZcdWQ2YjEiLDcsIlx1ZDZiYVx1ZDZiYyIsNywiXHVkNmM2XHVkNmM3XHVkNmM5XHVkNmNhXHVkNmNiIl0sWyJj''@;'; put 'put ''NDYxIiwiXHVkNmNkXHVkNmNlXHVkNmNmXHVkNmQwXHVkNmQyXHVkNmQzXHVkNmQ1XHVkNmQ2XHVkNmQ4XHVkNmRhIiw1LCJcdWQ2ZTFcdWQ2ZTJcdWQ2ZTNcdWQ2ZTVcdWQ2ZTZcdWQ2ZTdcdWQ2ZTkiLDRdLFsiYzQ4MSIsIlx1ZDZlZVx1ZDZlZlx1ZDZmMVx1ZDZmMlx1ZDZmM1x1ZDZmNFx1''@;'; put 'put ''ZDZmNiIsNSwiXHVkNmZlXHVkNmZmXHVkNzAxXHVkNzAyXHVkNzAzXHVkNzA1IiwxMSwiXHVkNzEyXHVkNzEzXHVkNzE0XHVjZTU4XHVjZTU5XHVjZTVjXHVjZTVmXHVjZTYwXHVjZTYxXHVjZTY4XHVjZTY5XHVjZTZiXHVjZTZkXHVjZTc0XHVjZTc1XHVjZTc4XHVjZTdjXHVjZTg0XHVjZTg1''@;'; put 'put ''XHVjZTg3XHVjZTg5XHVjZTkwXHVjZTkxXHVjZTk0XHVjZTk4XHVjZWEwXHVjZWExXHVjZWEzXHVjZWE0XHVjZWE1XHVjZWFjXHVjZWFkXHVjZWMxXHVjZWU0XHVjZWU1XHVjZWU4XHVjZWViXHVjZWVjXHVjZWY0XHVjZWY1XHVjZWY3XHVjZWY4XHVjZWY5XHVjZjAwXHVjZjAxXHVjZjA0XHVj''@;'; put 'put ''ZjA4XHVjZjEwXHVjZjExXHVjZjEzXHVjZjE1XHVjZjFjXHVjZjIwXHVjZjI0XHVjZjJjXHVjZjJkXHVjZjJmXHVjZjMwXHVjZjMxXHVjZjM4XHVjZjU0XHVjZjU1XHVjZjU4XHVjZjVjXHVjZjY0XHVjZjY1XHVjZjY3XHVjZjY5XHVjZjcwXHVjZjcxXHVjZjc0XHVjZjc4XHVjZjgwXHVjZjg1''@;'; put 'put ''XHVjZjhjXHVjZmExXHVjZmE4XHVjZmIwXHVjZmM0XHVjZmUwXHVjZmUxXHVjZmU0XHVjZmU4XHVjZmYwXHVjZmYxXHVjZmYzXHVjZmY1XHVjZmZjXHVkMDAwXHVkMDA0XHVkMDExXHVkMDE4XHVkMDJkXHVkMDM0XHVkMDM1XHVkMDM4XHVkMDNjIl0sWyJjNTQxIiwiXHVkNzE1XHVkNzE2XHVk''@;'; put 'put ''NzE3XHVkNzFhXHVkNzFiXHVkNzFkXHVkNzFlXHVkNzFmXHVkNzIxIiw2LCJcdWQ3MmFcdWQ3MmNcdWQ3MmUiLDUsIlx1ZDczNlx1ZDczN1x1ZDczOSJdLFsiYzU2MSIsIlx1ZDczYVx1ZDczYlx1ZDczZCIsNiwiXHVkNzQ1XHVkNzQ2XHVkNzQ4XHVkNzRhIiw1LCJcdWQ3NTJcdWQ3NTNcdWQ3''@;'; put 'put ''NTVcdWQ3NWEiLDRdLFsiYzU4MSIsIlx1ZDc1Zlx1ZDc2Mlx1ZDc2NFx1ZDc2Nlx1ZDc2N1x1ZDc2OFx1ZDc2YVx1ZDc2Ylx1ZDc2ZFx1ZDc2ZVx1ZDc2Zlx1ZDc3MVx1ZDc3Mlx1ZDc3M1x1ZDc3NSIsNiwiXHVkNzdlXHVkNzdmXHVkNzgwXHVkNzgyIiw1LCJcdWQ3OGFcdWQ3OGJcdWQwNDRc''@;'; put 'put ''dWQwNDVcdWQwNDdcdWQwNDlcdWQwNTBcdWQwNTRcdWQwNThcdWQwNjBcdWQwNmNcdWQwNmRcdWQwNzBcdWQwNzRcdWQwN2NcdWQwN2RcdWQwODFcdWQwYTRcdWQwYTVcdWQwYThcdWQwYWNcdWQwYjRcdWQwYjVcdWQwYjdcdWQwYjlcdWQwYzBcdWQwYzFcdWQwYzRcdWQwYzhcdWQwYzlcdWQw''@;'; put 'put ''ZDBcdWQwZDFcdWQwZDNcdWQwZDRcdWQwZDVcdWQwZGNcdWQwZGRcdWQwZTBcdWQwZTRcdWQwZWNcdWQwZWRcdWQwZWZcdWQwZjBcdWQwZjFcdWQwZjhcdWQxMGRcdWQxMzBcdWQxMzFcdWQxMzRcdWQxMzhcdWQxM2FcdWQxNDBcdWQxNDFcdWQxNDNcdWQxNDRcdWQxNDVcdWQxNGNcdWQxNGRc''@;'; put 'put ''dWQxNTBcdWQxNTRcdWQxNWNcdWQxNWRcdWQxNWZcdWQxNjFcdWQxNjhcdWQxNmNcdWQxN2NcdWQxODRcdWQxODhcdWQxYTBcdWQxYTFcdWQxYTRcdWQxYThcdWQxYjBcdWQxYjFcdWQxYjNcdWQxYjVcdWQxYmFcdWQxYmNcdWQxYzBcdWQxZDhcdWQxZjRcdWQxZjhcdWQyMDdcdWQyMDlcdWQy''@;'; put 'put ''MTBcdWQyMmNcdWQyMmRcdWQyMzBcdWQyMzRcdWQyM2NcdWQyM2RcdWQyM2ZcdWQyNDFcdWQyNDhcdWQyNWMiXSxbImM2NDEiLCJcdWQ3OGRcdWQ3OGVcdWQ3OGZcdWQ3OTEiLDYsIlx1ZDc5YVx1ZDc5Y1x1ZDc5ZSIsNV0sWyJjNmExIiwiXHVkMjY0XHVkMjgwXHVkMjgxXHVkMjg0XHVkMjg4''@;'; put 'put ''XHVkMjkwXHVkMjkxXHVkMjk1XHVkMjljXHVkMmEwXHVkMmE0XHVkMmFjXHVkMmIxXHVkMmI4XHVkMmI5XHVkMmJjXHVkMmJmXHVkMmMwXHVkMmMyXHVkMmM4XHVkMmM5XHVkMmNiXHVkMmQ0XHVkMmQ4XHVkMmRjXHVkMmU0XHVkMmU1XHVkMmYwXHVkMmYxXHVkMmY0XHVkMmY4XHVkMzAwXHVk''@;'; put 'put ''MzAxXHVkMzAzXHVkMzA1XHVkMzBjXHVkMzBkXHVkMzBlXHVkMzEwXHVkMzE0XHVkMzE2XHVkMzFjXHVkMzFkXHVkMzFmXHVkMzIwXHVkMzIxXHVkMzI1XHVkMzI4XHVkMzI5XHVkMzJjXHVkMzMwXHVkMzM4XHVkMzM5XHVkMzNiXHVkMzNjXHVkMzNkXHVkMzQ0XHVkMzQ1XHVkMzdjXHVkMzdk''@;'; put 'put ''XHVkMzgwXHVkMzg0XHVkMzhjXHVkMzhkXHVkMzhmXHVkMzkwXHVkMzkxXHVkMzk4XHVkMzk5XHVkMzljXHVkM2EwXHVkM2E4XHVkM2E5XHVkM2FiXHVkM2FkXHVkM2I0XHVkM2I4XHVkM2JjXHVkM2M0XHVkM2M1XHVkM2M4XHVkM2M5XHVkM2QwXHVkM2Q4XHVkM2UxXHVkM2UzXHVkM2VjXHVk''@;'; put 'put ''M2VkXHVkM2YwXHVkM2Y0XHVkM2ZjXHVkM2ZkXHVkM2ZmXHVkNDAxIl0sWyJjN2ExIiwiXHVkNDA4XHVkNDFkXHVkNDQwXHVkNDQ0XHVkNDVjXHVkNDYwXHVkNDY0XHVkNDZkXHVkNDZmXHVkNDc4XHVkNDc5XHVkNDdjXHVkNDdmXHVkNDgwXHVkNDgyXHVkNDg4XHVkNDg5XHVkNDhiXHVkNDhk''@;'; put 'put ''XHVkNDk0XHVkNGE5XHVkNGNjXHVkNGQwXHVkNGQ0XHVkNGRjXHVkNGRmXHVkNGU4XHVkNGVjXHVkNGYwXHVkNGY4XHVkNGZiXHVkNGZkXHVkNTA0XHVkNTA4XHVkNTBjXHVkNTE0XHVkNTE1XHVkNTE3XHVkNTNjXHVkNTNkXHVkNTQwXHVkNTQ0XHVkNTRjXHVkNTRkXHVkNTRmXHVkNTUxXHVk''@;'; put 'put ''NTU4XHVkNTU5XHVkNTVjXHVkNTYwXHVkNTY1XHVkNTY4XHVkNTY5XHVkNTZiXHVkNTZkXHVkNTc0XHVkNTc1XHVkNTc4XHVkNTdjXHVkNTg0XHVkNTg1XHVkNTg3XHVkNTg4XHVkNTg5XHVkNTkwXHVkNWE1XHVkNWM4XHVkNWM5XHVkNWNjXHVkNWQwXHVkNWQyXHVkNWQ4XHVkNWQ5XHVkNWRi''@;'; put 'put ''XHVkNWRkXHVkNWU0XHVkNWU1XHVkNWU4XHVkNWVjXHVkNWY0XHVkNWY1XHVkNWY3XHVkNWY5XHVkNjAwXHVkNjAxXHVkNjA0XHVkNjA4XHVkNjEwXHVkNjExXHVkNjEzXHVkNjE0XHVkNjE1XHVkNjFjXHVkNjIwIl0sWyJjOGExIiwiXHVkNjI0XHVkNjJkXHVkNjM4XHVkNjM5XHVkNjNjXHVk''@;'; put 'put ''NjQwXHVkNjQ1XHVkNjQ4XHVkNjQ5XHVkNjRiXHVkNjRkXHVkNjUxXHVkNjU0XHVkNjU1XHVkNjU4XHVkNjVjXHVkNjY3XHVkNjY5XHVkNjcwXHVkNjcxXHVkNjc0XHVkNjgzXHVkNjg1XHVkNjhjXHVkNjhkXHVkNjkwXHVkNjk0XHVkNjlkXHVkNjlmXHVkNmExXHVkNmE4XHVkNmFjXHVkNmIw''@;'; put 'put ''XHVkNmI5XHVkNmJiXHVkNmM0XHVkNmM1XHVkNmM4XHVkNmNjXHVkNmQxXHVkNmQ0XHVkNmQ3XHVkNmQ5XHVkNmUwXHVkNmU0XHVkNmU4XHVkNmYwXHVkNmY1XHVkNmZjXHVkNmZkXHVkNzAwXHVkNzA0XHVkNzExXHVkNzE4XHVkNzE5XHVkNzFjXHVkNzIwXHVkNzI4XHVkNzI5XHVkNzJiXHVk''@;'; put 'put ''NzJkXHVkNzM0XHVkNzM1XHVkNzM4XHVkNzNjXHVkNzQ0XHVkNzQ3XHVkNzQ5XHVkNzUwXHVkNzUxXHVkNzU0XHVkNzU2XHVkNzU3XHVkNzU4XHVkNzU5XHVkNzYwXHVkNzYxXHVkNzYzXHVkNzY1XHVkNzY5XHVkNzZjXHVkNzcwXHVkNzc0XHVkNzdjXHVkNzdkXHVkNzgxXHVkNzg4XHVkNzg5''@;'; put 'put ''XHVkNzhjXHVkNzkwXHVkNzk4XHVkNzk5XHVkNzliXHVkNzlkIl0sWyJjYWExIiwiXHU0ZjNkXHU0ZjczXHU1MDQ3XHU1MGY5XHU1MmEwXHU1M2VmXHU1NDc1XHU1NGU1XHU1NjA5XHU1YWMxXHU1YmI2XHU2Njg3XHU2N2I2XHU2N2I3XHU2N2VmXHU2YjRjXHU3M2MyXHU3NWMyXHU3YTNjXHU4''@;'; put 'put ''MmRiXHU4MzA0XHU4ODU3XHU4ODg4XHU4YTM2XHU4Y2M4XHU4ZGNmXHU4ZWZiXHU4ZmU2XHU5OWQ1XHU1MjNiXHU1Mzc0XHU1NDA0XHU2MDZhXHU2MTY0XHU2YmJjXHU3M2NmXHU4MTFhXHU4OWJhXHU4OWQyXHU5NWEzXHU0ZjgzXHU1MjBhXHU1OGJlXHU1OTc4XHU1OWU2XHU1ZTcyXHU1ZTc5''@;'; put 'put ''XHU2MWM3XHU2M2MwXHU2NzQ2XHU2N2VjXHU2ODdmXHU2Zjk3XHU3NjRlXHU3NzBiXHU3OGY1XHU3YTA4XHU3YWZmXHU3YzIxXHU4MDlkXHU4MjZlXHU4MjcxXHU4YWViXHU5NTkzXHU0ZTZiXHU1NTlkXHU2NmY3XHU2ZTM0XHU3OGEzXHU3YWVkXHU4NDViXHU4OTEwXHU4NzRlXHU5N2E4XHU1''@;'; put 'put ''MmQ4XHU1NzRlXHU1ODJhXHU1ZDRjXHU2MTFmXHU2MWJlXHU2MjIxXHU2NTYyXHU2N2QxXHU2YTQ0XHU2ZTFiXHU3NTE4XHU3NWIzXHU3NmUzXHU3N2IwXHU3ZDNhXHU5MGFmXHU5NDUxXHU5NDUyXHU5Zjk1Il0sWyJjYmExIiwiXHU1MzIzXHU1Y2FjXHU3NTMyXHU4MGRiXHU5MjQwXHU5NTk4''@;'; put 'put ''XHU1MjViXHU1ODA4XHU1OWRjXHU1Y2ExXHU1ZDE3XHU1ZWI3XHU1ZjNhXHU1ZjRhXHU2MTc3XHU2YzVmXHU3NTdhXHU3NTg2XHU3Y2UwXHU3ZDczXHU3ZGIxXHU3ZjhjXHU4MTU0XHU4MjIxXHU4NTkxXHU4OTQxXHU4YjFiXHU5MmZjXHU5NjRkXHU5YzQ3XHU0ZWNiXHU0ZWY3XHU1MDBiXHU1''@;'; put 'put ''MWYxXHU1ODRmXHU2MTM3XHU2MTNlXHU2MTY4XHU2NTM5XHU2OWVhXHU2ZjExXHU3NWE1XHU3Njg2XHU3NmQ2XHU3Yjg3XHU4MmE1XHU4NGNiXHVmOTAwXHU5M2E3XHU5NThiXHU1NTgwXHU1YmEyXHU1NzUxXHVmOTAxXHU3Y2IzXHU3ZmI5XHU5MWI1XHU1MDI4XHU1M2JiXHU1YzQ1XHU1ZGU4''@;'; put 'put ''XHU2MmQyXHU2MzZlXHU2NGRhXHU2NGU3XHU2ZTIwXHU3MGFjXHU3OTViXHU4ZGRkXHU4ZTFlXHVmOTAyXHU5MDdkXHU5MjQ1XHU5MmY4XHU0ZTdlXHU0ZWY2XHU1MDY1XHU1ZGZlXHU1ZWZhXHU2MTA2XHU2OTU3XHU4MTcxXHU4NjU0XHU4ZTQ3XHU5Mzc1XHU5YTJiXHU0ZTVlXHU1MDkxXHU2''@;'; put 'put ''NzcwXHU2ODQwXHU1MTA5XHU1MjhkXHU1MjkyXHU2YWEyIl0sWyJjY2ExIiwiXHU3N2JjXHU5MjEwXHU5ZWQ0XHU1MmFiXHU2MDJmXHU4ZmYyXHU1MDQ4XHU2MWE5XHU2M2VkXHU2NGNhXHU2ODNjXHU2YTg0XHU2ZmMwXHU4MTg4XHU4OWExXHU5Njk0XHU1ODA1XHU3MjdkXHU3MmFjXHU3NTA0''@;'; put 'put ''XHU3ZDc5XHU3ZTZkXHU4MGE5XHU4OThiXHU4Yjc0XHU5MDYzXHU5ZDUxXHU2Mjg5XHU2YzdhXHU2ZjU0XHU3ZDUwXHU3ZjNhXHU4YTIzXHU1MTdjXHU2MTRhXHU3YjlkXHU4YjE5XHU5MjU3XHU5MzhjXHU0ZWFjXHU0ZmQzXHU1MDFlXHU1MGJlXHU1MTA2XHU1MmMxXHU1MmNkXHU1MzdmXHU1''@;'; put 'put ''NzcwXHU1ODgzXHU1ZTlhXHU1ZjkxXHU2MTc2XHU2MWFjXHU2NGNlXHU2NTZjXHU2NjZmXHU2NmJiXHU2NmY0XHU2ODk3XHU2ZDg3XHU3MDg1XHU3MGYxXHU3NDlmXHU3NGE1XHU3NGNhXHU3NWQ5XHU3ODZjXHU3OGVjXHU3YWRmXHU3YWY2XHU3ZDQ1XHU3ZDkzXHU4MDE1XHU4MDNmXHU4MTFi''@;'; put 'put ''XHU4Mzk2XHU4YjY2XHU4ZjE1XHU5MDE1XHU5M2UxXHU5ODAzXHU5ODM4XHU5YTVhXHU5YmU4XHU0ZmMyXHU1NTUzXHU1ODNhXHU1OTUxXHU1YjYzXHU1YzQ2XHU2MGI4XHU2MjEyXHU2ODQyXHU2OGIwIl0sWyJjZGExIiwiXHU2OGU4XHU2ZWFhXHU3NTRjXHU3Njc4XHU3OGNlXHU3YTNkXHU3''@;'; put 'put ''Y2ZiXHU3ZTZiXHU3ZTdjXHU4YTA4XHU4YWExXHU4YzNmXHU5NjhlXHU5ZGM0XHU1M2U0XHU1M2U5XHU1NDRhXHU1NDcxXHU1NmZhXHU1OWQxXHU1YjY0XHU1YzNiXHU1ZWFiXHU2MmY3XHU2NTM3XHU2NTQ1XHU2NTcyXHU2NmEwXHU2N2FmXHU2OWMxXHU2Y2JkXHU3NWZjXHU3NjkwXHU3Nzdl''@;'; put 'put ''XHU3YTNmXHU3Zjk0XHU4MDAzXHU4MGExXHU4MThmXHU4MmU2XHU4MmZkXHU4M2YwXHU4NWMxXHU4ODMxXHU4OGI0XHU4YWE1XHVmOTAzXHU4ZjljXHU5MzJlXHU5NmM3XHU5ODY3XHU5YWQ4XHU5ZjEzXHU1NGVkXHU2NTliXHU2NmYyXHU2ODhmXHU3YTQwXHU4YzM3XHU5ZDYwXHU1NmYwXHU1''@;'; put 'put ''NzY0XHU1ZDExXHU2NjA2XHU2OGIxXHU2OGNkXHU2ZWZlXHU3NDI4XHU4ODllXHU5YmU0XHU2YzY4XHVmOTA0XHU5YWE4XHU0ZjliXHU1MTZjXHU1MTcxXHU1MjlmXHU1YjU0XHU1ZGU1XHU2MDUwXHU2MDZkXHU2MmYxXHU2M2E3XHU2NTNiXHU3M2Q5XHU3YTdhXHU4NmEzXHU4Y2EyXHU5Nzhm''@;'; put 'put ''XHU0ZTMyXHU1YmUxXHU2MjA4XHU2NzljXHU3NGRjIl0sWyJjZWExIiwiXHU3OWQxXHU4M2QzXHU4YTg3XHU4YWIyXHU4ZGU4XHU5MDRlXHU5MzRiXHU5ODQ2XHU1ZWQzXHU2OWU4XHU4NWZmXHU5MGVkXHVmOTA1XHU1MWEwXHU1Yjk4XHU1YmVjXHU2MTYzXHU2OGZhXHU2YjNlXHU3MDRjXHU3''@;'; put 'put ''NDJmXHU3NGQ4XHU3YmExXHU3ZjUwXHU4M2M1XHU4OWMwXHU4Y2FiXHU5NWRjXHU5OTI4XHU1MjJlXHU2MDVkXHU2MmVjXHU5MDAyXHU0ZjhhXHU1MTQ5XHU1MzIxXHU1OGQ5XHU1ZWUzXHU2NmUwXHU2ZDM4XHU3MDlhXHU3MmMyXHU3M2Q2XHU3YjUwXHU4MGYxXHU5NDViXHU1MzY2XHU2Mzli''@;'; put 'put ''XHU3ZjZiXHU0ZTU2XHU1MDgwXHU1ODRhXHU1OGRlXHU2MDJhXHU2MTI3XHU2MmQwXHU2OWQwXHU5YjQxXHU1YjhmXHU3ZDE4XHU4MGIxXHU4ZjVmXHU0ZWE0XHU1MGQxXHU1NGFjXHU1NWFjXHU1YjBjXHU1ZGEwXHU1ZGU3XHU2NTJhXHU2NTRlXHU2ODIxXHU2YTRiXHU3MmUxXHU3NjhlXHU3''@;'; put 'put ''N2VmXHU3ZDVlXHU3ZmY5XHU4MWEwXHU4NTRlXHU4NmRmXHU4ZjAzXHU4ZjRlXHU5MGNhXHU5OTAzXHU5YTU1XHU5YmFiXHU0ZTE4XHU0ZTQ1XHU0ZTVkXHU0ZWM3XHU0ZmYxXHU1MTc3XHU1MmZlIl0sWyJjZmExIiwiXHU1MzQwXHU1M2UzXHU1M2U1XHU1NDhlXHU1NjE0XHU1Nzc1XHU1N2Ey''@;'; put 'put ''XHU1YmM3XHU1ZDg3XHU1ZWQwXHU2MWZjXHU2MmQ4XHU2NTUxXHU2N2I4XHU2N2U5XHU2OWNiXHU2YjUwXHU2YmM2XHU2YmVjXHU2YzQyXHU2ZTlkXHU3MDc4XHU3MmQ3XHU3Mzk2XHU3NDAzXHU3N2JmXHU3N2U5XHU3YTc2XHU3ZDdmXHU4MDA5XHU4MWZjXHU4MjA1XHU4MjBhXHU4MmRmXHU4''@;'; put 'put ''ODYyXHU4YjMzXHU4Y2ZjXHU4ZWMwXHU5MDExXHU5MGIxXHU5MjY0XHU5MmI2XHU5OWQyXHU5YTQ1XHU5Y2U5XHU5ZGQ3XHU5ZjljXHU1NzBiXHU1YzQwXHU4M2NhXHU5N2EwXHU5N2FiXHU5ZWI0XHU1NDFiXHU3YTk4XHU3ZmE0XHU4OGQ5XHU4ZWNkXHU5MGUxXHU1ODAwXHU1YzQ4XHU2Mzk4''@;'; put 'put ''XHU3YTlmXHU1YmFlXHU1ZjEzXHU3YTc5XHU3YWFlXHU4MjhlXHU4ZWFjXHU1MDI2XHU1MjM4XHU1MmY4XHU1Mzc3XHU1NzA4XHU2MmYzXHU2MzcyXHU2YjBhXHU2ZGMzXHU3NzM3XHU1M2E1XHU3MzU3XHU4NTY4XHU4ZTc2XHU5NWQ1XHU2NzNhXHU2YWMzXHU2ZjcwXHU4YTZkXHU4ZWNjXHU5''@;'; put 'put ''OTRiXHVmOTA2XHU2Njc3XHU2Yjc4XHU4Y2I0Il0sWyJkMGExIiwiXHU5YjNjXHVmOTA3XHU1M2ViXHU1NzJkXHU1OTRlXHU2M2M2XHU2OWZiXHU3M2VhXHU3ODQ1XHU3YWJhXHU3YWM1XHU3Y2ZlXHU4NDc1XHU4OThmXHU4ZDczXHU5MDM1XHU5NWE4XHU1MmZiXHU1NzQ3XHU3NTQ3XHU3YjYw''@;'; put 'put ''XHU4M2NjXHU5MjFlXHVmOTA4XHU2YTU4XHU1MTRiXHU1MjRiXHU1Mjg3XHU2MjFmXHU2OGQ4XHU2OTc1XHU5Njk5XHU1MGM1XHU1MmE0XHU1MmU0XHU2MWMzXHU2NWE0XHU2ODM5XHU2OWZmXHU3NDdlXHU3YjRiXHU4MmI5XHU4M2ViXHU4OWIyXHU4YjM5XHU4ZmQxXHU5OTQ5XHVmOTA5XHU0''@;'; put 'put ''ZWNhXHU1OTk3XHU2NGQyXHU2NjExXHU2YThlXHU3NDM0XHU3OTgxXHU3OWJkXHU4MmE5XHU4ODdlXHU4ODdmXHU4OTVmXHVmOTBhXHU5MzI2XHU0ZjBiXHU1M2NhXHU2MDI1XHU2MjcxXHU2YzcyXHU3ZDFhXHU3ZDY2XHU0ZTk4XHU1MTYyXHU3N2RjXHU4MGFmXHU0ZjAxXHU0ZjBlXHU1MTc2''@;'; put 'put ''XHU1MTgwXHU1NWRjXHU1NjY4XHU1NzNiXHU1N2ZhXHU1N2ZjXHU1OTE0XHU1OTQ3XHU1OTkzXHU1YmM0XHU1YzkwXHU1ZDBlXHU1ZGYxXHU1ZTdlXHU1ZmNjXHU2MjgwXHU2NWQ3XHU2NWUzIl0sWyJkMWExIiwiXHU2NzFlXHU2NzFmXHU2NzVlXHU2OGNiXHU2OGM0XHU2YTVmXHU2YjNhXHU2''@;'; put 'put ''YzIzXHU2YzdkXHU2YzgyXHU2ZGM3XHU3Mzk4XHU3NDI2XHU3NDJhXHU3NDgyXHU3NGEzXHU3NTc4XHU3NTdmXHU3ODgxXHU3OGVmXHU3OTQxXHU3OTQ3XHU3OTQ4XHU3OTdhXHU3Yjk1XHU3ZDAwXHU3ZGJhXHU3Zjg4XHU4MDA2XHU4MDJkXHU4MDhjXHU4YTE4XHU4YjRmXHU4YzQ4XHU4ZDc3''@;'; put 'put ''XHU5MzIxXHU5MzI0XHU5OGUyXHU5OTUxXHU5YTBlXHU5YTBmXHU5YTY1XHU5ZTkyXHU3ZGNhXHU0Zjc2XHU1NDA5XHU2MmVlXHU2ODU0XHU5MWQxXHU1NWFiXHU1MTNhXHVmOTBiXHVmOTBjXHU1YTFjXHU2MWU2XHVmOTBkXHU2MmNmXHU2MmZmXHVmOTBlIiw1LCJcdTkwYTNcdWY5MTQiLDQs''@;'; put 'put ''Ilx1OGFmZVx1ZjkxOVx1ZjkxYVx1ZjkxYlx1ZjkxY1x1NjY5Nlx1ZjkxZFx1NzE1Nlx1ZjkxZVx1ZjkxZlx1OTZlM1x1ZjkyMFx1NjM0Zlx1NjM3YVx1NTM1N1x1ZjkyMVx1Njc4Zlx1Njk2MFx1NmU3M1x1ZjkyMlx1NzUzN1x1ZjkyM1x1ZjkyNFx1ZjkyNSJdLFsiZDJhMSIsIlx1N2QwZFx1''@;'; put 'put ''ZjkyNlx1ZjkyN1x1ODg3Mlx1NTZjYVx1NWExOFx1ZjkyOCIsNCwiXHU0ZTQzXHVmOTJkXHU1MTY3XHU1OTQ4XHU2N2YwXHU4MDEwXHVmOTJlXHU1OTczXHU1ZTc0XHU2NDlhXHU3OWNhXHU1ZmY1XHU2MDZjXHU2MmM4XHU2MzdiXHU1YmU3XHU1YmQ3XHU1MmFhXHVmOTJmXHU1OTc0XHU1ZjI5''@;'; put 'put ''XHU2MDEyXHVmOTMwXHVmOTMxXHVmOTMyXHU3NDU5XHVmOTMzIiw1LCJcdTk5ZDFcdWY5MzkiLDEwLCJcdTZmYzNcdWY5NDRcdWY5NDVcdTgxYmZcdThmYjJcdTYwZjFcdWY5NDZcdWY5NDdcdTgxNjZcdWY5NDhcdWY5NDlcdTVjM2ZcdWY5NGEiLDcsIlx1NWFlOVx1OGEyNVx1Njc3Ylx1N2Qx''@;'; put 'put ''MFx1Zjk1MiIsNSwiXHU4MGZkXHVmOTU4XHVmOTU5XHU1YzNjXHU2Y2U1XHU1MzNmXHU2ZWJhXHU1OTFhXHU4MzM2Il0sWyJkM2ExIiwiXHU0ZTM5XHU0ZWI2XHU0ZjQ2XHU1NWFlXHU1NzE4XHU1OGM3XHU1ZjU2XHU2NWI3XHU2NWU2XHU2YTgwXHU2YmI1XHU2ZTRkXHU3N2VkXHU3YWVmXHU3''@;'; put 'put ''YzFlXHU3ZGRlXHU4NmNiXHU4ODkyXHU5MTMyXHU5MzViXHU2NGJiXHU2ZmJlXHU3MzdhXHU3NWI4XHU5MDU0XHU1NTU2XHU1NzRkXHU2MWJhXHU2NGQ0XHU2NmM3XHU2ZGUxXHU2ZTViXHU2ZjZkXHU2ZmI5XHU3NWYwXHU4MDQzXHU4MWJkXHU4NTQxXHU4OTgzXHU4YWM3XHU4YjVhXHU5MzFm''@;'; put 'put ''XHU2YzkzXHU3NTUzXHU3YjU0XHU4ZTBmXHU5MDVkXHU1NTEwXHU1ODAyXHU1ODU4XHU1ZTYyXHU2MjA3XHU2NDllXHU2OGUwXHU3NTc2XHU3Y2Q2XHU4N2IzXHU5ZWU4XHU0ZWUzXHU1Nzg4XHU1NzZlXHU1OTI3XHU1YzBkXHU1Y2IxXHU1ZTM2XHU1Zjg1XHU2MjM0XHU2NGUxXHU3M2IzXHU4''@;'; put 'put ''MWZhXHU4ODhiXHU4Y2I4XHU5NjhhXHU5ZWRiXHU1Yjg1XHU1ZmI3XHU2MGIzXHU1MDEyXHU1MjAwXHU1MjMwXHU1NzE2XHU1ODM1XHU1ODU3XHU1YzBlXHU1YzYwXHU1Y2Y2XHU1ZDhiXHU1ZWE2XHU1ZjkyXHU2MGJjXHU2MzExXHU2Mzg5XHU2NDE3XHU2ODQzIl0sWyJkNGExIiwiXHU2OGY5''@;'; put 'put ''XHU2YWMyXHU2ZGQ4XHU2ZTIxXHU2ZWQ0XHU2ZmU0XHU3MWZlXHU3NmRjXHU3Nzc5XHU3OWIxXHU3YTNiXHU4NDA0XHU4OWE5XHU4Y2VkXHU4ZGYzXHU4ZTQ4XHU5MDAzXHU5MDE0XHU5MDUzXHU5MGZkXHU5MzRkXHU5Njc2XHU5N2RjXHU2YmQyXHU3MDA2XHU3MjU4XHU3MmEyXHU3MzY4XHU3''@;'; put 'put ''NzYzXHU3OWJmXHU3YmU0XHU3ZTliXHU4YjgwXHU1OGE5XHU2MGM3XHU2NTY2XHU2NWZkXHU2NmJlXHU2YzhjXHU3MTFlXHU3MWM5XHU4YzVhXHU5ODEzXHU0ZTZkXHU3YTgxXHU0ZWRkXHU1MWFjXHU1MWNkXHU1MmQ1XHU1NDBjXHU2MWE3XHU2NzcxXHU2ODUwXHU2OGRmXHU2ZDFlXHU2Zjdj''@;'; put 'put ''XHU3NWJjXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDYzXHU5Mjg1XHU1MTVjXHU2NTk3XHU2NzVjXHU2NzkzXHU3NWQ4XHU3YWM3XHU4MzczXHVmOTVhXHU4YzQ2XHU5MDE3XHU5ODJkXHU1YzZmXHU4MWMwXHU4MjlhXHU5MDQxXHU5MDZmXHU5MjBkXHU1Zjk3XHU1ZDlkXHU2YTU5XHU3MWM4XHU3''@;'; put 'put ''NjdiXHU3YjQ5XHU4NWU0XHU4YjA0XHU5MTI3XHU5YTMwXHU1NTg3XHU2MWY2XHVmOTViXHU3NjY5XHU3Zjg1Il0sWyJkNWExIiwiXHU4NjNmXHU4N2JhXHU4OGY4XHU5MDhmXHVmOTVjXHU2ZDFiXHU3MGQ5XHU3M2RlXHU3ZDYxXHU4NDNkXHVmOTVkXHU5MTZhXHU5OWYxXHVmOTVlXHU0ZTgy''@;'; put 'put ''XHU1Mzc1XHU2YjA0XHU2YjEyXHU3MDNlXHU3MjFiXHU4NjJkXHU5ZTFlXHU1MjRjXHU4ZmEzXHU1ZDUwXHU2NGU1XHU2NTJjXHU2YjE2XHU2ZmViXHU3YzQzXHU3ZTljXHU4NWNkXHU4OTY0XHU4OWJkXHU2MmM5XHU4MWQ4XHU4ODFmXHU1ZWNhXHU2NzE3XHU2ZDZhXHU3MmZjXHU3NDA1XHU3''@;'; put 'put ''NDZmXHU4NzgyXHU5MGRlXHU0Zjg2XHU1ZDBkXHU1ZmEwXHU4NDBhXHU1MWI3XHU2M2EwXHU3NTY1XHU0ZWFlXHU1MDA2XHU1MTY5XHU1MWM5XHU2ODgxXHU2YTExXHU3Y2FlXHU3Y2IxXHU3Y2U3XHU4MjZmXHU4YWQyXHU4ZjFiXHU5MWNmXHU0ZmI2XHU1MTM3XHU1MmY1XHU1NDQyXHU1ZWVj''@;'; put 'put ''XHU2MTZlXHU2MjNlXHU2NWM1XHU2YWRhXHU2ZmZlXHU3OTJhXHU4NWRjXHU4ODIzXHU5NWFkXHU5YTYyXHU5YTZhXHU5ZTk3XHU5ZWNlXHU1MjliXHU2NmM2XHU2Yjc3XHU3MDFkXHU3OTJiXHU4ZjYyXHU5NzQyXHU2MTkwXHU2MjAwXHU2NTIzXHU2ZjIzIl0sWyJkNmExIiwiXHU3MTQ5XHU3''@;'; put 'put ''NDg5XHU3ZGY0XHU4MDZmXHU4NGVlXHU4ZjI2XHU5MDIzXHU5MzRhXHU1MWJkXHU1MjE3XHU1MmEzXHU2ZDBjXHU3MGM4XHU4OGMyXHU1ZWM5XHU2NTgyXHU2YmFlXHU2ZmMyXHU3YzNlXHU3Mzc1XHU0ZWU0XHU0ZjM2XHU1NmY5XHVmOTVmXHU1Y2JhXHU1ZGJhXHU2MDFjXHU3M2IyXHU3YjJk''@;'; put 'put ''XHU3ZjlhXHU3ZmNlXHU4MDQ2XHU5MDFlXHU5MjM0XHU5NmY2XHU5NzQ4XHU5ODE4XHU5ZjYxXHU0ZjhiXHU2ZmE3XHU3OWFlXHU5MWI0XHU5NmI3XHU1MmRlXHVmOTYwXHU2NDg4XHU2NGM0XHU2YWQzXHU2ZjVlXHU3MDE4XHU3MjEwXHU3NmU3XHU4MDAxXHU4NjA2XHU4NjVjXHU4ZGVmXHU4''@;'; put 'put ''ZjA1XHU5NzMyXHU5YjZmXHU5ZGZhXHU5ZTc1XHU3ODhjXHU3OTdmXHU3ZGEwXHU4M2M5XHU5MzA0XHU5ZTdmXHU5ZTkzXHU4YWQ2XHU1OGRmXHU1ZjA0XHU2NzI3XHU3MDI3XHU3NGNmXHU3YzYwXHU4MDdlXHU1MTIxXHU3MDI4XHU3MjYyXHU3OGNhXHU4Y2MyXHU4Y2RhXHU4Y2Y0XHU5NmY3''@;'; put 'put ''XHU0ZTg2XHU1MGRhXHU1YmVlXHU1ZWQ2XHU2NTk5XHU3MWNlXHU3NjQyXHU3N2FkXHU4MDRhXHU4NGZjIl0sWyJkN2ExIiwiXHU5MDdjXHU5YjI3XHU5ZjhkXHU1OGQ4XHU1YTQxXHU1YzYyXHU2YTEzXHU2ZGRhXHU2ZjBmXHU3NjNiXHU3ZDJmXHU3ZTM3XHU4NTFlXHU4OTM4XHU5M2U0XHU5''@;'; put 'put ''NjRiXHU1Mjg5XHU2NWQyXHU2N2YzXHU2OWI0XHU2ZDQxXHU2ZTljXHU3MDBmXHU3NDA5XHU3NDYwXHU3NTU5XHU3NjI0XHU3ODZiXHU4YjJjXHU5ODVlXHU1MTZkXHU2MjJlXHU5Njc4XHU0Zjk2XHU1MDJiXHU1ZDE5XHU2ZGVhXHU3ZGI4XHU4ZjJhXHU1ZjhiXHU2MTQ0XHU2ODE3XHVmOTYx''@;'; put 'put ''XHU5Njg2XHU1MmQyXHU4MDhiXHU1MWRjXHU1MWNjXHU2OTVlXHU3YTFjXHU3ZGJlXHU4M2YxXHU5Njc1XHU0ZmRhXHU1MjI5XHU1Mzk4XHU1NDBmXHU1NTBlXHU1YzY1XHU2MGE3XHU2NzRlXHU2OGE4XHU2ZDZjXHU3MjgxXHU3MmY4XHU3NDA2XHU3NDgzXHVmOTYyXHU3NWUyXHU3YzZjXHU3''@;'; put 'put ''Zjc5XHU3ZmI4XHU4Mzg5XHU4OGNmXHU4OGUxXHU5MWNjXHU5MWQwXHU5NmUyXHU5YmM5XHU1NDFkXHU2ZjdlXHU3MWQwXHU3NDk4XHU4NWZhXHU4ZWFhXHU5NmEzXHU5YzU3XHU5ZTlmXHU2Nzk3XHU2ZGNiXHU3NDMzXHU4MWU4XHU5NzE2XHU3ODJjIl0sWyJkOGExIiwiXHU3YWNiXHU3YjIw''@;'; put 'put ''XHU3YzkyXHU2NDY5XHU3NDZhXHU3NWYyXHU3OGJjXHU3OGU4XHU5OWFjXHU5YjU0XHU5ZWJiXHU1YmRlXHU1ZTU1XHU2ZjIwXHU4MTljXHU4M2FiXHU5MDg4XHU0ZTA3XHU1MzRkXHU1YTI5XHU1ZGQyXHU1ZjRlXHU2MTYyXHU2MzNkXHU2NjY5XHU2NmZjXHU2ZWZmXHU2ZjJiXHU3MDYzXHU3''@;'; put 'put ''NzllXHU4NDJjXHU4NTEzXHU4ODNiXHU4ZjEzXHU5OTQ1XHU5YzNiXHU1NTFjXHU2MmI5XHU2NzJiXHU2Y2FiXHU4MzA5XHU4OTZhXHU5NzdhXHU0ZWExXHU1OTg0XHU1ZmQ4XHU1ZmQ5XHU2NzFiXHU3ZGIyXHU3ZjU0XHU4MjkyXHU4MzJiXHU4M2JkXHU4ZjFlXHU5MDk5XHU1N2NiXHU1OWI5''@;'; put 'put ''XHU1YTkyXHU1YmQwXHU2NjI3XHU2NzlhXHU2ODg1XHU2YmNmXHU3MTY0XHU3Zjc1XHU4Y2I3XHU4Y2UzXHU5MDgxXHU5YjQ1XHU4MTA4XHU4YzhhXHU5NjRjXHU5YTQwXHU5ZWE1XHU1YjVmXHU2YzEzXHU3MzFiXHU3NmYyXHU3NmRmXHU4NDBjXHU1MWFhXHU4OTkzXHU1MTRkXHU1MTk1XHU1''@;'; put 'put ''MmM5XHU2OGM5XHU2Yzk0XHU3NzA0XHU3NzIwXHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWI1XHU2ZWM1Il0sWyJkOWExIiwiXHU4NTExXHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU2NjlkXHU2OTI3XHU2ZTlmXHU3NmJmXHU3NzkxXHU4MzE3XHU4NGMyXHU4NzlmXHU5MTY5XHU5Mjk4XHU5Y2Y0''@;'; put 'put ''XHU4ODgyXHU0ZmFlXHU1MTkyXHU1MmRmXHU1OWM2XHU1ZTNkXHU2MTU1XHU2NDc4XHU2NDc5XHU2NmFlXHU2N2QwXHU2YTIxXHU2YmNkXHU2YmRiXHU3MjVmXHU3MjYxXHU3NDQxXHU3NzM4XHU3N2RiXHU4MDE3XHU4MmJjXHU4MzA1XHU4YjAwXHU4YjI4XHU4YzhjXHU2NzI4XHU2YzkwXHU3''@;'; put 'put ''MjY3XHU3NmVlXHU3NzY2XHU3YTQ2XHU5ZGE5XHU2YjdmXHU2YzkyXHU1OTIyXHU2NzI2XHU4NDk5XHU1MzZmXHU1ODkzXHU1OTk5XHU1ZWRmXHU2M2NmXHU2NjM0XHU2NzczXHU2ZTNhXHU3MzJiXHU3YWQ3XHU4MmQ3XHU5MzI4XHU1MmQ5XHU1ZGViXHU2MWFlXHU2MWNiXHU2MjBhXHU2MmM3''@;'; put 'put ''XHU2NGFiXHU2NWUwXHU2OTU5XHU2YjY2XHU2YmNiXHU3MTIxXHU3M2Y3XHU3NTVkXHU3ZTQ2XHU4MjFlXHU4MzAyXHU4NTZhXHU4YWEzXHU4Y2JmXHU5NzI3XHU5ZDYxXHU1OGE4XHU5ZWQ4XHU1MDExXHU1MjBlXHU1NDNiXHU1NTRmXHU2NTg3Il0sWyJkYWExIiwiXHU2Yzc2XHU3ZDBhXHU3''@;'; put 'put ''ZDBiXHU4MDVlXHU4NjhhXHU5NTgwXHU5NmVmXHU1MmZmXHU2Yzk1XHU3MjY5XHU1NDczXHU1YTlhXHU1YzNlXHU1ZDRiXHU1ZjRjXHU1ZmFlXHU2NzJhXHU2OGI2XHU2OTYzXHU2ZTNjXHU2ZTQ0XHU3NzA5XHU3YzczXHU3ZjhlXHU4NTg3XHU4YjBlXHU4ZmY3XHU5NzYxXHU5ZWY0XHU1Y2I3''@;'; put 'put ''XHU2MGI2XHU2MTBkXHU2MWFiXHU2NTRmXHU2NWZiXHU2NWZjXHU2YzExXHU2Y2VmXHU3MzlmXHU3M2M5XHU3ZGUxXHU5NTk0XHU1YmM2XHU4NzFjXHU4YjEwXHU1MjVkXHU1MzVhXHU2MmNkXHU2NDBmXHU2NGIyXHU2NzM0XHU2YTM4XHU2Y2NhXHU3M2MwXHU3NDllXHU3Yjk0XHU3Yzk1XHU3''@;'; put 'put ''ZTFiXHU4MThhXHU4MjM2XHU4NTg0XHU4ZmViXHU5NmY5XHU5OWMxXHU0ZjM0XHU1MzRhXHU1M2NkXHU1M2RiXHU2MmNjXHU2NDJjXHU2NTAwXHU2NTkxXHU2OWMzXHU2Y2VlXHU2ZjU4XHU3M2VkXHU3NTU0XHU3NjIyXHU3NmU0XHU3NmZjXHU3OGQwXHU3OGZiXHU3OTJjXHU3ZDQ2XHU4MjJj''@;'; put 'put ''XHU4N2UwXHU4ZmQ0XHU5ODEyXHU5OGVmXHU1MmMzXHU2MmQ0XHU2NGE1XHU2ZTI0XHU2ZjUxIl0sWyJkYmExIiwiXHU3NjdjXHU4ZGNiXHU5MWIxXHU5MjYyXHU5YWVlXHU5YjQzXHU1MDIzXHU1MDhkXHU1NzRhXHU1OWE4XHU1YzI4XHU1ZTQ3XHU1Zjc3XHU2MjNmXHU2NTNlXHU2NWI5XHU2''@;'; put 'put ''NWMxXHU2NjA5XHU2NzhiXHU2OTljXHU2ZWMyXHU3OGM1XHU3ZDIxXHU4MGFhXHU4MTgwXHU4MjJiXHU4MmIzXHU4NGExXHU4NjhjXHU4YTJhXHU4YjE3XHU5MGE2XHU5NjMyXHU5ZjkwXHU1MDBkXHU0ZmYzXHVmOTYzXHU1N2Y5XHU1Zjk4XHU2MmRjXHU2MzkyXHU2NzZmXHU2ZTQzXHU3MTE5''@;'; put 'put ''XHU3NmMzXHU4MGNjXHU4MGRhXHU4OGY0XHU4OGY1XHU4OTE5XHU4Y2UwXHU4ZjI5XHU5MTRkXHU5NjZhXHU0ZjJmXHU0ZjcwXHU1ZTFiXHU2N2NmXHU2ODIyXHU3NjdkXHU3NjdlXHU5YjQ0XHU1ZTYxXHU2YTBhXHU3MTY5XHU3MWQ0XHU3NTZhXHVmOTY0XHU3ZTQxXHU4NTQzXHU4NWU5XHU5''@;'; put 'put ''OGRjXHU0ZjEwXHU3YjRmXHU3ZjcwXHU5NWE1XHU1MWUxXHU1ZTA2XHU2OGI1XHU2YzNlXHU2YzRlXHU2Y2RiXHU3MmFmXHU3YmM0XHU4MzAzXHU2Y2Q1XHU3NDNhXHU1MGZiXHU1Mjg4XHU1OGMxXHU2NGQ4XHU2YTk3XHU3NGE3XHU3NjU2Il0sWyJkY2ExIiwiXHU3OGE3XHU4NjE3XHU5NWUy''@;'; put 'put ''XHU5NzM5XHVmOTY1XHU1MzVlXHU1ZjAxXHU4YjhhXHU4ZmE4XHU4ZmFmXHU5MDhhXHU1MjI1XHU3N2E1XHU5YzQ5XHU5ZjA4XHU0ZTE5XHU1MDAyXHU1MTc1XHU1YzViXHU1ZTc3XHU2NjFlXHU2NjNhXHU2N2M0XHU2OGM1XHU3MGIzXHU3NTAxXHU3NWM1XHU3OWM5XHU3YWRkXHU4ZjI3XHU5''@;'; put 'put ''OTIwXHU5YTA4XHU0ZmRkXHU1ODIxXHU1ODMxXHU1YmY2XHU2NjZlXHU2YjY1XHU2ZDExXHU2ZTdhXHU2ZjdkXHU3M2U0XHU3NTJiXHU4M2U5XHU4OGRjXHU4OTEzXHU4YjVjXHU4ZjE0XHU0ZjBmXHU1MGQ1XHU1MzEwXHU1MzVjXHU1YjkzXHU1ZmE5XHU2NzBkXHU3OThmXHU4MTc5XHU4MzJm''@;'; put 'put ''XHU4NTE0XHU4OTA3XHU4OTg2XHU4ZjM5XHU4ZjNiXHU5OWE1XHU5YzEyXHU2NzJjXHU0ZTc2XHU0ZmY4XHU1OTQ5XHU1YzAxXHU1Y2VmXHU1Y2YwXHU2MzY3XHU2OGQyXHU3MGZkXHU3MWEyXHU3NDJiXHU3ZTJiXHU4NGVjXHU4NzAyXHU5MDIyXHU5MmQyXHU5Y2YzXHU0ZTBkXHU0ZWQ4XHU0''@;'; put 'put ''ZmVmXHU1MDg1XHU1MjU2XHU1MjZmXHU1NDI2XHU1NDkwXHU1N2UwXHU1OTJiXHU1YTY2Il0sWyJkZGExIiwiXHU1YjVhXHU1Yjc1XHU1YmNjXHU1ZTljXHVmOTY2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2ZDZlXHU2ZWE1XHU3MjM2XHU3YjI2XHU3YzNmXHU3ZjM2XHU4MTUwXHU4MTUxXHU4MTlh''@;'; put 'put ''XHU4MjQwXHU4Mjk5XHU4M2E5XHU4YTAzXHU4Y2EwXHU4Y2U2XHU4Y2ZiXHU4ZDc0XHU4ZGJhXHU5MGU4XHU5MWRjXHU5NjFjXHU5NjQ0XHU5OWQ5XHU5Y2U3XHU1MzE3XHU1MjA2XHU1NDI5XHU1Njc0XHU1OGIzXHU1OTU0XHU1OTZlXHU1ZmZmXHU2MWE0XHU2MjZlXHU2NjEwXHU2YzdlXHU3''@;'; put 'put ''MTFhXHU3NmM2XHU3Yzg5XHU3Y2RlXHU3ZDFiXHU4MmFjXHU4Y2MxXHU5NmYwXHVmOTY3XHU0ZjViXHU1ZjE3XHU1ZjdmXHU2MmMyXHU1ZDI5XHU2NzBiXHU2OGRhXHU3ODdjXHU3ZTQzXHU5ZDZjXHU0ZTE1XHU1MDk5XHU1MzE1XHU1MzJhXHU1MzUxXHU1OTgzXHU1YTYyXHU1ZTg3XHU2MGIy''@;'; put 'put ''XHU2MThhXHU2MjQ5XHU2Mjc5XHU2NTkwXHU2Nzg3XHU2OWE3XHU2YmQ0XHU2YmQ2XHU2YmQ3XHU2YmQ4XHU2Y2I4XHVmOTY4XHU3NDM1XHU3NWZhXHU3ODEyXHU3ODkxXHU3OWQ1XHU3OWQ4XHU3YzgzXHU3ZGNiXHU3ZmUxXHU4MGE1Il0sWyJkZWExIiwiXHU4MTNlXHU4MWMyXHU4M2YyXHU4''@;'; put 'put ''NzFhXHU4OGU4XHU4YWI5XHU4YjZjXHU4Y2JiXHU5MTE5XHU5NzVlXHU5OGRiXHU5ZjNiXHU1NmFjXHU1YjJhXHU1ZjZjXHU2NThjXHU2YWIzXHU2YmFmXHU2ZDVjXHU2ZmYxXHU3MDE1XHU3MjVkXHU3M2FkXHU4Y2E3XHU4Y2QzXHU5ODNiXHU2MTkxXHU2YzM3XHU4MDU4XHU5YTAxXHU0ZTRk''@;'; put 'put ''XHU0ZThiXHU0ZTliXHU0ZWQ1XHU0ZjNhXHU0ZjNjXHU0ZjdmXHU0ZmRmXHU1MGZmXHU1M2YyXHU1M2Y4XHU1NTA2XHU1NWUzXHU1NmRiXHU1OGViXHU1OTYyXHU1YTExXHU1YmViXHU1YmZhXHU1YzA0XHU1ZGYzXHU1ZTJiXHU1Zjk5XHU2MDFkXHU2MzY4XHU2NTljXHU2NWFmXHU2N2Y2XHU2''@;'; put 'put ''N2ZiXHU2OGFkXHU2YjdiXHU2Yzk5XHU2Y2Q3XHU2ZTIzXHU3MDA5XHU3MzQ1XHU3ODAyXHU3OTNlXHU3OTQwXHU3OTYwXHU3OWMxXHU3YmU5XHU3ZDE3XHU3ZDcyXHU4MDg2XHU4MjBkXHU4MzhlXHU4NGQxXHU4NmM3XHU4OGRmXHU4YTUwXHU4YTVlXHU4YjFkXHU4Y2RjXHU4ZDY2XHU4ZmFk''@;'; put 'put ''XHU5MGFhXHU5OGZjXHU5OWRmXHU5ZTlkXHU1MjRhXHVmOTY5XHU2NzE0XHVmOTZhIl0sWyJkZmExIiwiXHU1MDk4XHU1MjJhXHU1YzcxXHU2NTYzXHU2YzU1XHU3M2NhXHU3NTIzXHU3NTlkXHU3Yjk3XHU4NDljXHU5MTc4XHU5NzMwXHU0ZTc3XHU2NDkyXHU2YmJhXHU3MTVlXHU4NWE5XHU0''@;'; put 'put ''ZTA5XHVmOTZiXHU2NzQ5XHU2OGVlXHU2ZTE3XHU4MjlmXHU4NTE4XHU4ODZiXHU2M2Y3XHU2ZjgxXHU5MjEyXHU5OGFmXHU0ZTBhXHU1MGI3XHU1MGNmXHU1MTFmXHU1NTQ2XHU1NWFhXHU1NjE3XHU1YjQwXHU1YzE5XHU1Y2UwXHU1ZTM4XHU1ZThhXHU1ZWEwXHU1ZWMyXHU2MGYzXHU2ODUx''@;'; put 'put ''XHU2YTYxXHU2ZTU4XHU3MjNkXHU3MjQwXHU3MmMwXHU3NmY4XHU3OTY1XHU3YmIxXHU3ZmQ0XHU4OGYzXHU4OWY0XHU4YTczXHU4YzYxXHU4Y2RlXHU5NzFjXHU1ODVlXHU3NGJkXHU4Y2ZkXHU1NWM3XHVmOTZjXHU3YTYxXHU3ZDIyXHU4MjcyXHU3MjcyXHU3NTFmXHU3NTI1XHVmOTZkXHU3''@;'; put 'put ''YjE5XHU1ODg1XHU1OGZiXHU1ZGJjXHU1ZThmXHU1ZWI2XHU1ZjkwXHU2MDU1XHU2MjkyXHU2MzdmXHU2NTRkXHU2NjkxXHU2NmQ5XHU2NmY4XHU2ODE2XHU2OGYyXHU3MjgwXHU3NDVlXHU3YjZlXHU3ZDZlXHU3ZGQ2XHU3ZjcyIl0sWyJlMGExIiwiXHU4MGU1XHU4MjEyXHU4NWFmXHU4OTdm''@;'; put 'put ''XHU4YTkzXHU5MDFkXHU5MmU0XHU5ZWNkXHU5ZjIwXHU1OTE1XHU1OTZkXHU1ZTJkXHU2MGRjXHU2NjE0XHU2NjczXHU2NzkwXHU2YzUwXHU2ZGM1XHU2ZjVmXHU3N2YzXHU3OGE5XHU4NGM2XHU5MWNiXHU5MzJiXHU0ZWQ5XHU1MGNhXHU1MTQ4XHU1NTg0XHU1YjBiXHU1YmEzXHU2MjQ3XHU2''@;'; put 'put ''NTdlXHU2NWNiXHU2ZTMyXHU3MTdkXHU3NDAxXHU3NDQ0XHU3NDg3XHU3NGJmXHU3NjZjXHU3OWFhXHU3ZGRhXHU3ZTU1XHU3ZmE4XHU4MTdhXHU4MWIzXHU4MjM5XHU4NjFhXHU4N2VjXHU4YTc1XHU4ZGUzXHU5MDc4XHU5MjkxXHU5NDI1XHU5OTRkXHU5YmFlXHU1MzY4XHU1YzUxXHU2OTU0''@;'; put 'put ''XHU2Y2M0XHU2ZDI5XHU2ZTJiXHU4MjBjXHU4NTliXHU4OTNiXHU4YTJkXHU4YWFhXHU5NmVhXHU5ZjY3XHU1MjYxXHU2NmI5XHU2YmIyXHU3ZTk2XHU4N2ZlXHU4ZDBkXHU5NTgzXHU5NjVkXHU2NTFkXHU2ZDg5XHU3MWVlXHVmOTZlXHU1N2NlXHU1OWQzXHU1YmFjXHU2MDI3XHU2MGZhXHU2''@;'; put 'put ''MjEwXHU2NjFmXHU2NjVmXHU3MzI5XHU3M2Y5XHU3NmRiXHU3NzAxXHU3YjZjIl0sWyJlMWExIiwiXHU4MDU2XHU4MDcyXHU4MTY1XHU4YWEwXHU5MTkyXHU0ZTE2XHU1MmUyXHU2YjcyXHU2ZDE3XHU3YTA1XHU3YjM5XHU3ZDMwXHVmOTZmXHU4Y2IwXHU1M2VjXHU1NjJmXHU1ODUxXHU1YmI1''@;'; put 'put ''XHU1YzBmXHU1YzExXHU1ZGUyXHU2MjQwXHU2MzgzXHU2NDE0XHU2NjJkXHU2OGIzXHU2Y2JjXHU2ZDg4XHU2ZWFmXHU3MDFmXHU3MGE0XHU3MWQyXHU3NTI2XHU3NThmXHU3NThlXHU3NjE5XHU3YjExXHU3YmUwXHU3YzJiXHU3ZDIwXHU3ZDM5XHU4NTJjXHU4NTZkXHU4NjA3XHU4YTM0XHU5''@;'; put 'put ''MDBkXHU5MDYxXHU5MGI1XHU5MmI3XHU5N2Y2XHU5YTM3XHU0ZmQ3XHU1YzZjXHU2NzVmXHU2ZDkxXHU3YzlmXHU3ZThjXHU4YjE2XHU4ZDE2XHU5MDFmXHU1YjZiXHU1ZGZkXHU2NDBkXHU4NGMwXHU5MDVjXHU5OGUxXHU3Mzg3XHU1YjhiXHU2MDlhXHU2NzdlXHU2ZGRlXHU4YTFmXHU4YWE2''@;'; put 'put ''XHU5MDAxXHU5ODBjXHU1MjM3XHVmOTcwXHU3MDUxXHU3ODhlXHU5Mzk2XHU4ODcwXHU5MWQ3XHU0ZmVlXHU1M2Q3XHU1NWZkXHU1NmRhXHU1NzgyXHU1OGZkXHU1YWMyXHU1Yjg4XHU1Y2FiXHU1Y2MwXHU1ZTI1XHU2MTAxIl0sWyJlMmExIiwiXHU2MjBkXHU2MjRiXHU2Mzg4XHU2NDFjXHU2''@;'; put 'put ''NTM2XHU2NTc4XHU2YTM5XHU2YjhhXHU2YzM0XHU2ZDE5XHU2ZjMxXHU3MWU3XHU3MmU5XHU3Mzc4XHU3NDA3XHU3NGIyXHU3NjI2XHU3NzYxXHU3OWMwXHU3YTU3XHU3YWVhXHU3Y2I5XHU3ZDhmXHU3ZGFjXHU3ZTYxXHU3ZjllXHU4MTI5XHU4MzMxXHU4NDkwXHU4NGRhXHU4NWVhXHU4ODk2''@;'; put 'put ''XHU4YWIwXHU4YjkwXHU4ZjM4XHU5MDQyXHU5MDgzXHU5MTZjXHU5Mjk2XHU5MmI5XHU5NjhiXHU5NmE3XHU5NmE4XHU5NmQ2XHU5NzAwXHU5ODA4XHU5OTk2XHU5YWQzXHU5YjFhXHU1M2Q0XHU1ODdlXHU1OTE5XHU1YjcwXHU1YmJmXHU2ZGQxXHU2ZjVhXHU3MTlmXHU3NDIxXHU3NGI5XHU4''@;'; put 'put ''MDg1XHU4M2ZkXHU1ZGUxXHU1Zjg3XHU1ZmFhXHU2MDQyXHU2NWVjXHU2ODEyXHU2OTZmXHU2YTUzXHU2Yjg5XHU2ZDM1XHU2ZGYzXHU3M2UzXHU3NmZlXHU3N2FjXHU3YjRkXHU3ZDE0XHU4MTIzXHU4MjFjXHU4MzQwXHU4NGY0XHU4NTYzXHU4YTYyXHU4YWM0XHU5MTg3XHU5MzFlXHU5ODA2''@;'; put 'put ''XHU5OWI0XHU2MjBjXHU4ODUzXHU4ZmYwXHU5MjY1XHU1ZDA3XHU1ZDI3Il0sWyJlM2ExIiwiXHU1ZDY5XHU3NDVmXHU4MTlkXHU4NzY4XHU2ZmQ1XHU2MmZlXHU3ZmQyXHU4OTM2XHU4OTcyXHU0ZTFlXHU0ZTU4XHU1MGU3XHU1MmRkXHU1MzQ3XHU2MjdmXHU2NjA3XHU3ZTY5XHU4ODA1XHU5''@;'; put 'put ''NjVlXHU0ZjhkXHU1MzE5XHU1NjM2XHU1OWNiXHU1YWE0XHU1YzM4XHU1YzRlXHU1YzRkXHU1ZTAyXHU1ZjExXHU2MDQzXHU2NWJkXHU2NjJmXHU2NjQyXHU2N2JlXHU2N2Y0XHU3MzFjXHU3N2UyXHU3OTNhXHU3ZmM1XHU4NDk0XHU4NGNkXHU4OTk2XHU4YTY2XHU4YTY5XHU4YWUxXHU4YzU1''@;'; put 'put ''XHU4YzdhXHU1N2Y0XHU1YmQ0XHU1ZjBmXHU2MDZmXHU2MmVkXHU2OTBkXHU2Yjk2XHU2ZTVjXHU3MTg0XHU3YmQyXHU4NzU1XHU4YjU4XHU4ZWZlXHU5OGRmXHU5OGZlXHU0ZjM4XHU0ZjgxXHU0ZmUxXHU1NDdiXHU1YTIwXHU1YmI4XHU2MTNjXHU2NWIwXHU2NjY4XHU3MWZjXHU3NTMzXHU3''@;'; put 'put ''OTVlXHU3ZDMzXHU4MTRlXHU4MWUzXHU4Mzk4XHU4NWFhXHU4NWNlXHU4NzAzXHU4YTBhXHU4ZWFiXHU4ZjliXHVmOTcxXHU4ZmM1XHU1OTMxXHU1YmE0XHU1YmU2XHU2MDg5XHU1YmU5XHU1YzBiXHU1ZmMzXHU2YzgxIl0sWyJlNGExIiwiXHVmOTcyXHU2ZGYxXHU3MDBiXHU3NTFhXHU4MmFm''@;'; put 'put ''XHU4YWY2XHU0ZWMwXHU1MzQxXHVmOTczXHU5NmQ5XHU2YzBmXHU0ZTllXHU0ZmM0XHU1MTUyXHU1NTVlXHU1YTI1XHU1Y2U4XHU2MjExXHU3MjU5XHU4MmJkXHU4M2FhXHU4NmZlXHU4ODU5XHU4YTFkXHU5NjNmXHU5NmM1XHU5OTEzXHU5ZDA5XHU5ZDVkXHU1ODBhXHU1Y2IzXHU1ZGJkXHU1''@;'; put 'put ''ZTQ0XHU2MGUxXHU2MTE1XHU2M2UxXHU2YTAyXHU2ZTI1XHU5MTAyXHU5MzU0XHU5ODRlXHU5YzEwXHU5Zjc3XHU1Yjg5XHU1Y2I4XHU2MzA5XHU2NjRmXHU2ODQ4XHU3NzNjXHU5NmMxXHU5NzhkXHU5ODU0XHU5YjlmXHU2NWExXHU4YjAxXHU4ZWNiXHU5NWJjXHU1NTM1XHU1Y2E5XHU1ZGQ2''@;'; put 'put ''XHU1ZWI1XHU2Njk3XHU3NjRjXHU4M2Y0XHU5NWM3XHU1OGQzXHU2MmJjXHU3MmNlXHU5ZDI4XHU0ZWYwXHU1OTJlXHU2MDBmXHU2NjNiXHU2YjgzXHU3OWU3XHU5ZDI2XHU1MzkzXHU1NGMwXHU1N2MzXHU1ZDE2XHU2MTFiXHU2NmQ2XHU2ZGFmXHU3ODhkXHU4MjdlXHU5Njk4XHU5NzQ0XHU1''@;'; put 'put ''Mzg0XHU2MjdjXHU2Mzk2XHU2ZGIyXHU3ZTBhXHU4MTRiXHU5ODRkIl0sWyJlNWExIiwiXHU2YWZiXHU3ZjRjXHU5ZGFmXHU5ZTFhXHU0ZTVmXHU1MDNiXHU1MWI2XHU1OTFjXHU2MGY5XHU2M2Y2XHU2OTMwXHU3MjNhXHU4MDM2XHVmOTc0XHU5MWNlXHU1ZjMxXHVmOTc1XHVmOTc2XHU3ZDA0''@;'; put 'put ''XHU4MmU1XHU4NDZmXHU4NGJiXHU4NWU1XHU4ZThkXHVmOTc3XHU0ZjZmXHVmOTc4XHVmOTc5XHU1OGU0XHU1YjQzXHU2MDU5XHU2M2RhXHU2NTE4XHU2NTZkXHU2Njk4XHVmOTdhXHU2OTRhXHU2YTIzXHU2ZDBiXHU3MDAxXHU3MTZjXHU3NWQyXHU3NjBkXHU3OWIzXHU3YTcwXHVmOTdiXHU3''@;'; put 'put ''ZjhhXHVmOTdjXHU4OTQ0XHVmOTdkXHU4YjkzXHU5MWMwXHU5NjdkXHVmOTdlXHU5OTBhXHU1NzA0XHU1ZmExXHU2NWJjXHU2ZjAxXHU3NjAwXHU3OWE2XHU4YTllXHU5OWFkXHU5YjVhXHU5ZjZjXHU1MTA0XHU2MWI2XHU2MjkxXHU2YThkXHU4MWM2XHU1MDQzXHU1ODMwXHU1ZjY2XHU3MTA5''@;'; put 'put ''XHU4YTAwXHU4YWZhXHU1YjdjXHU4NjE2XHU0ZmZhXHU1MTNjXHU1NmI0XHU1OTQ0XHU2M2E5XHU2ZGY5XHU1ZGFhXHU2OTZkXHU1MTg2XHU0ZTg4XHU0ZjU5XHVmOTdmXHVmOTgwXHVmOTgxXHU1OTgyXHVmOTgyIl0sWyJlNmExIiwiXHVmOTgzXHU2YjVmXHU2YzVkXHVmOTg0XHU3NGI1XHU3''@;'; put 'put ''OTE2XHVmOTg1XHU4MjA3XHU4MjQ1XHU4MzM5XHU4ZjNmXHU4ZjVkXHVmOTg2XHU5OTE4XHVmOTg3XHVmOTg4XHVmOTg5XHU0ZWE2XHVmOThhXHU1N2RmXHU1Zjc5XHU2NjEzXHVmOThiXHVmOThjXHU3NWFiXHU3ZTc5XHU4YjZmXHVmOThkXHU5MDA2XHU5YTViXHU1NmE1XHU1ODI3XHU1OWY4''@;'; put 'put ''XHU1YTFmXHU1YmI0XHVmOThlXHU1ZWY2XHVmOThmXHVmOTkwXHU2MzUwXHU2MzNiXHVmOTkxXHU2OTNkXHU2Yzg3XHU2Y2JmXHU2ZDhlXHU2ZDkzXHU2ZGY1XHU2ZjE0XHVmOTkyXHU3MGRmXHU3MTM2XHU3MTU5XHVmOTkzXHU3MWMzXHU3MWQ1XHVmOTk0XHU3ODRmXHU3ODZmXHVmOTk1XHU3''@;'; put 'put ''Yjc1XHU3ZGUzXHVmOTk2XHU3ZTJmXHVmOTk3XHU4ODRkXHU4ZWRmXHVmOTk4XHVmOTk5XHVmOTlhXHU5MjViXHVmOTliXHU5Y2Y2XHVmOTljXHVmOTlkXHVmOTllXHU2MDg1XHU2ZDg1XHVmOTlmXHU3MWIxXHVmOWEwXHVmOWExXHU5NWIxXHU1M2FkXHVmOWEyXHVmOWEzXHVmOWE0XHU2N2Qz''@;'; put 'put ''XHVmOWE1XHU3MDhlXHU3MTMwXHU3NDMwXHU4Mjc2XHU4MmQyIl0sWyJlN2ExIiwiXHVmOWE2XHU5NWJiXHU5YWU1XHU5ZTdkXHU2NmM0XHVmOWE3XHU3MWMxXHU4NDQ5XHVmOWE4XHVmOWE5XHU1ODRiXHVmOWFhXHVmOWFiXHU1ZGI4XHU1ZjcxXHVmOWFjXHU2NjIwXHU2NjhlXHU2OTc5XHU2''@;'; put 'put ''OWFlXHU2YzM4XHU2Y2YzXHU2ZTM2XHU2ZjQxXHU2ZmRhXHU3MDFiXHU3MDJmXHU3MTUwXHU3MWRmXHU3MzcwXHVmOWFkXHU3NDViXHVmOWFlXHU3NGQ0XHU3NmM4XHU3YTRlXHU3ZTkzXHVmOWFmXHVmOWIwXHU4MmYxXHU4YTYwXHU4ZmNlXHVmOWIxXHU5MzQ4XHVmOWIyXHU5NzE5XHVmOWIz''@;'; put 'put ''XHVmOWI0XHU0ZTQyXHU1MDJhXHVmOWI1XHU1MjA4XHU1M2UxXHU2NmYzXHU2YzZkXHU2ZmNhXHU3MzBhXHU3NzdmXHU3YTYyXHU4MmFlXHU4NWRkXHU4NjAyXHVmOWI2XHU4OGQ0XHU4YTYzXHU4YjdkXHU4YzZiXHVmOWI3XHU5MmIzXHVmOWI4XHU5NzEzXHU5ODEwXHU0ZTk0XHU0ZjBkXHU0''@;'; put 'put ''ZmM5XHU1MGIyXHU1MzQ4XHU1NDNlXHU1NDMzXHU1NWRhXHU1ODYyXHU1OGJhXHU1OTY3XHU1YTFiXHU1YmU0XHU2MDlmXHVmOWI5XHU2MWNhXHU2NTU2XHU2NWZmXHU2NjY0XHU2OGE3XHU2YzVhXHU2ZmIzIl0sWyJlOGExIiwiXHU3MGNmXHU3MWFjXHU3MzUyXHU3YjdkXHU4NzA4XHU4YWE0''@;'; put 'put ''XHU5YzMyXHU5ZjA3XHU1YzRiXHU2YzgzXHU3MzQ0XHU3Mzg5XHU5MjNhXHU2ZWFiXHU3NDY1XHU3NjFmXHU3YTY5XHU3ZTE1XHU4NjBhXHU1MTQwXHU1OGM1XHU2NGMxXHU3NGVlXHU3NTE1XHU3NjcwXHU3ZmMxXHU5MDk1XHU5NmNkXHU5OTU0XHU2ZTI2XHU3NGU2XHU3YWE5XHU3YWFhXHU4''@;'; put 'put ''MWU1XHU4NmQ5XHU4Nzc4XHU4YTFiXHU1YTQ5XHU1YjhjXHU1YjliXHU2OGExXHU2OTAwXHU2ZDYzXHU3M2E5XHU3NDEzXHU3NDJjXHU3ODk3XHU3ZGU5XHU3ZmViXHU4MTE4XHU4MTU1XHU4MzllXHU4YzRjXHU5NjJlXHU5ODExXHU2NmYwXHU1ZjgwXHU2NWZhXHU2Nzg5XHU2YzZhXHU3Mzhi''@;'; put 'put ''XHU1MDJkXHU1YTAzXHU2YjZhXHU3N2VlXHU1OTE2XHU1ZDZjXHU1ZGNkXHU3MzI1XHU3NTRmXHVmOWJhXHVmOWJiXHU1MGU1XHU1MWY5XHU1ODJmXHU1OTJkXHU1OTk2XHU1OWRhXHU1YmU1XHVmOWJjXHVmOWJkXHU1ZGEyXHU2MmQ3XHU2NDE2XHU2NDkzXHU2NGZlXHVmOWJlXHU2NmRjXHVm''@;'; put 'put ''OWJmXHU2YTQ4XHVmOWMwXHU3MWZmXHU3NDY0XHVmOWMxIl0sWyJlOWExIiwiXHU3YTg4XHU3YWFmXHU3ZTQ3XHU3ZTVlXHU4MDAwXHU4MTcwXHVmOWMyXHU4N2VmXHU4OTgxXHU4YjIwXHU5MDU5XHVmOWMzXHU5MDgwXHU5OTUyXHU2MTdlXHU2YjMyXHU2ZDc0XHU3ZTFmXHU4OTI1XHU4ZmIx''@;'; put 'put ''XHU0ZmQxXHU1MGFkXHU1MTk3XHU1MmM3XHU1N2M3XHU1ODg5XHU1YmI5XHU1ZWI4XHU2MTQyXHU2OTk1XHU2ZDhjXHU2ZTY3XHU2ZWI2XHU3MTk0XHU3NDYyXHU3NTI4XHU3NTJjXHU4MDczXHU4MzM4XHU4NGM5XHU4ZTBhXHU5Mzk0XHU5M2RlXHVmOWM0XHU0ZThlXHU0ZjUxXHU1MDc2XHU1''@;'; put 'put ''MTJhXHU1M2M4XHU1M2NiXHU1M2YzXHU1Yjg3XHU1YmQzXHU1YzI0XHU2MTFhXHU2MTgyXHU2NWY0XHU3MjViXHU3Mzk3XHU3NDQwXHU3NmMyXHU3OTUwXHU3OTkxXHU3OWI5XHU3ZDA2XHU3ZmJkXHU4MjhiXHU4NWQ1XHU4NjVlXHU4ZmMyXHU5MDQ3XHU5MGY1XHU5MWVhXHU5Njg1XHU5NmU4''@;'; put 'put ''XHU5NmU5XHU1MmQ2XHU1ZjY3XHU2NWVkXHU2NjMxXHU2ODJmXHU3MTVjXHU3YTM2XHU5MGMxXHU5ODBhXHU0ZTkxXHVmOWM1XHU2YTUyXHU2YjllXHU2ZjkwXHU3MTg5XHU4MDE4XHU4MmI4XHU4NTUzIl0sWyJlYWExIiwiXHU5MDRiXHU5Njk1XHU5NmYyXHU5N2ZiXHU4NTFhXHU5YjMxXHU0''@;'; put 'put ''ZTkwXHU3MThhXHU5NmM0XHU1MTQzXHU1MzlmXHU1NGUxXHU1NzEzXHU1NzEyXHU1N2EzXHU1YTliXHU1YWM0XHU1YmMzXHU2MDI4XHU2MTNmXHU2M2Y0XHU2Yzg1XHU2ZDM5XHU2ZTcyXHU2ZTkwXHU3MjMwXHU3MzNmXHU3NDU3XHU4MmQxXHU4ODgxXHU4ZjQ1XHU5MDYwXHVmOWM2XHU5NjYy''@;'; put 'put ''XHU5ODU4XHU5ZDFiXHU2NzA4XHU4ZDhhXHU5MjVlXHU0ZjRkXHU1MDQ5XHU1MGRlXHU1MzcxXHU1NzBkXHU1OWQ0XHU1YTAxXHU1YzA5XHU2MTcwXHU2NjkwXHU2ZTJkXHU3MjMyXHU3NDRiXHU3ZGVmXHU4MGMzXHU4NDBlXHU4NDY2XHU4NTNmXHU4NzVmXHU4ODViXHU4OTE4XHU4YjAyXHU5''@;'; put 'put ''MDU1XHU5N2NiXHU5YjRmXHU0ZTczXHU0ZjkxXHU1MTEyXHU1MTZhXHVmOWM3XHU1NTJmXHU1NWE5XHU1YjdhXHU1YmE1XHU1ZTdjXHU1ZTdkXHU1ZWJlXHU2MGEwXHU2MGRmXHU2MTA4XHU2MTA5XHU2M2M0XHU2NTM4XHU2NzA5XHVmOWM4XHU2N2Q0XHU2N2RhXHVmOWM5XHU2OTYxXHU2OTYy''@;'; put 'put ''XHU2Y2I5XHU2ZDI3XHVmOWNhXHU2ZTM4XHVmOWNiIl0sWyJlYmExIiwiXHU2ZmUxXHU3MzM2XHU3MzM3XHVmOWNjXHU3NDVjXHU3NTMxXHVmOWNkXHU3NjUyXHVmOWNlXHVmOWNmXHU3ZGFkXHU4MWZlXHU4NDM4XHU4OGQ1XHU4YTk4XHU4YWRiXHU4YWVkXHU4ZTMwXHU4ZTQyXHU5MDRhXHU5''@;'; put 'put ''MDNlXHU5MDdhXHU5MTQ5XHU5MWM5XHU5MzZlXHVmOWQwXHVmOWQxXHU1ODA5XHVmOWQyXHU2YmQzXHU4MDg5XHU4MGIyXHVmOWQzXHVmOWQ0XHU1MTQxXHU1OTZiXHU1YzM5XHVmOWQ1XHVmOWQ2XHU2ZjY0XHU3M2E3XHU4MGU0XHU4ZDA3XHVmOWQ3XHU5MjE3XHU5NThmXHVmOWQ4XHVmOWQ5''@;'; put 'put ''XHVmOWRhXHVmOWRiXHU4MDdmXHU2MjBlXHU3MDFjXHU3ZDY4XHU4NzhkXHVmOWRjXHU1N2EwXHU2MDY5XHU2MTQ3XHU2YmI3XHU4YWJlXHU5MjgwXHU5NmIxXHU0ZTU5XHU1NDFmXHU2ZGViXHU4NTJkXHU5NjcwXHU5N2YzXHU5OGVlXHU2M2Q2XHU2Y2UzXHU5MDkxXHU1MWRkXHU2MWM5XHU4''@;'; put 'put ''MWJhXHU5ZGY5XHU0ZjlkXHU1MDFhXHU1MTAwXHU1YjljXHU2MTBmXHU2MWZmXHU2NGVjXHU2OTA1XHU2YmM1XHU3NTkxXHU3N2UzXHU3ZmE5XHU4MjY0XHU4NThmXHU4N2ZiXHU4ODYzXHU4YWJjIl0sWyJlY2ExIiwiXHU4YjcwXHU5MWFiXHU0ZThjXHU0ZWU1XHU0ZjBhXHVmOWRkXHVmOWRl''@;'; put 'put ''XHU1OTM3XHU1OWU4XHVmOWRmXHU1ZGYyXHU1ZjFiXHU1ZjViXHU2MDIxXHVmOWUwXHVmOWUxXHVmOWUyXHVmOWUzXHU3MjNlXHU3M2U1XHVmOWU0XHU3NTcwXHU3NWNkXHVmOWU1XHU3OWZiXHVmOWU2XHU4MDBjXHU4MDMzXHU4MDg0XHU4MmUxXHU4MzUxXHVmOWU3XHVmOWU4XHU4Y2JkXHU4''@;'; put 'put ''Y2IzXHU5MDg3XHVmOWU5XHVmOWVhXHU5OGY0XHU5OTBjXHVmOWViXHVmOWVjXHU3MDM3XHU3NmNhXHU3ZmNhXHU3ZmNjXHU3ZmZjXHU4YjFhXHU0ZWJhXHU0ZWMxXHU1MjAzXHU1MzcwXHVmOWVkXHU1NGJkXHU1NmUwXHU1OWZiXHU1YmM1XHU1ZjE1XHU1ZmNkXHU2ZTZlXHVmOWVlXHVmOWVm''@;'; put 'put ''XHU3ZDZhXHU4MzM1XHVmOWYwXHU4NjkzXHU4YThkXHVmOWYxXHU5NzZkXHU5Nzc3XHVmOWYyXHVmOWYzXHU0ZTAwXHU0ZjVhXHU0ZjdlXHU1OGY5XHU2NWU1XHU2ZWEyXHU5MDM4XHU5M2IwXHU5OWI5XHU0ZWZiXHU1OGVjXHU1OThhXHU1OWQ5XHU2MDQxXHVmOWY0XHVmOWY1XHU3YTE0XHVm''@;'; put 'put ''OWY2XHU4MzRmXHU4Y2MzXHU1MTY1XHU1MzQ0Il0sWyJlZGExIiwiXHVmOWY3XHVmOWY4XHVmOWY5XHU0ZWNkXHU1MjY5XHU1YjU1XHU4MmJmXHU0ZWQ0XHU1MjNhXHU1NGE4XHU1OWM5XHU1OWZmXHU1YjUwXHU1YjU3XHU1YjVjXHU2MDYzXHU2MTQ4XHU2ZWNiXHU3MDk5XHU3MTZlXHU3Mzg2''@;'; put 'put ''XHU3NGY3XHU3NWI1XHU3OGMxXHU3ZDJiXHU4MDA1XHU4MWVhXHU4MzI4XHU4NTE3XHU4NWM5XHU4YWVlXHU4Y2M3XHU5NmNjXHU0ZjVjXHU1MmZhXHU1NmJjXHU2NWFiXHU2NjI4XHU3MDdjXHU3MGI4XHU3MjM1XHU3ZGJkXHU4MjhkXHU5MTRjXHU5NmMwXHU5ZDcyXHU1YjcxXHU2OGU3XHU2''@;'; put 'put ''Yjk4XHU2ZjdhXHU3NmRlXHU1YzkxXHU2NmFiXHU2ZjViXHU3YmI0XHU3YzJhXHU4ODM2XHU5NmRjXHU0ZTA4XHU0ZWQ3XHU1MzIwXHU1ODM0XHU1OGJiXHU1OGVmXHU1OTZjXHU1YzA3XHU1ZTMzXHU1ZTg0XHU1ZjM1XHU2MzhjXHU2NmIyXHU2NzU2XHU2YTFmXHU2YWEzXHU2YjBjXHU2ZjNm''@;'; put 'put ''XHU3MjQ2XHVmOWZhXHU3MzUwXHU3NDhiXHU3YWUwXHU3Y2E3XHU4MTc4XHU4MWRmXHU4MWU3XHU4MzhhXHU4NDZjXHU4NTIzXHU4NTk0XHU4NWNmXHU4OGRkXHU4ZDEzXHU5MWFjXHU5NTc3Il0sWyJlZWExIiwiXHU5NjljXHU1MThkXHU1NGM5XHU1NzI4XHU1YmIwXHU2MjRkXHU2NzUwXHU2''@;'; put 'put ''ODNkXHU2ODkzXHU2ZTNkXHU2ZWQzXHU3MDdkXHU3ZTIxXHU4OGMxXHU4Y2ExXHU4ZjA5XHU5ZjRiXHU5ZjRlXHU3MjJkXHU3YjhmXHU4YWNkXHU5MzFhXHU0ZjQ3XHU0ZjRlXHU1MTMyXHU1NDgwXHU1OWQwXHU1ZTk1XHU2MmI1XHU2Nzc1XHU2OTZlXHU2YTE3XHU2Y2FlXHU2ZTFhXHU3MmQ5''@;'; put 'put ''XHU3MzJhXHU3NWJkXHU3YmI4XHU3ZDM1XHU4MmU3XHU4M2Y5XHU4NDU3XHU4NWY3XHU4YTViXHU4Y2FmXHU4ZTg3XHU5MDE5XHU5MGI4XHU5NmNlXHU5ZjVmXHU1MmUzXHU1NDBhXHU1YWUxXHU1YmMyXHU2NDU4XHU2NTc1XHU2ZWY0XHU3MmM0XHVmOWZiXHU3Njg0XHU3YTRkXHU3YjFiXHU3''@;'; put 'put ''YzRkXHU3ZTNlXHU3ZmRmXHU4MzdiXHU4YjJiXHU4Y2NhXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU4ZmVhXHU4ZmY5XHU5MDY5XHU5M2QxXHU0ZjQzXHU0ZjdhXHU1MGIzXHU1MTY4XHU1MTc4XHU1MjRkXHU1MjZhXHU1ODYxXHU1ODdjXHU1OTYwXHU1YzA4XHU1YzU1XHU1ZWRiXHU2MDliXHU2MjMw''@;'; put 'put ''XHU2ODEzXHU2YmJmXHU2YzA4XHU2ZmIxIl0sWyJlZmExIiwiXHU3MTRlXHU3NDIwXHU3NTMwXHU3NTM4XHU3NTUxXHU3NjcyXHU3YjRjXHU3YjhiXHU3YmFkXHU3YmM2XHU3ZThmXHU4YTZlXHU4ZjNlXHU4ZjQ5XHU5MjNmXHU5MjkzXHU5MzIyXHU5NDJiXHU5NmZiXHU5ODVhXHU5ODZiXHU5''@;'; put 'put ''OTFlXHU1MjA3XHU2MjJhXHU2Mjk4XHU2ZDU5XHU3NjY0XHU3YWNhXHU3YmMwXHU3ZDc2XHU1MzYwXHU1Y2JlXHU1ZTk3XHU2ZjM4XHU3MGI5XHU3Yzk4XHU5NzExXHU5YjhlXHU5ZWRlXHU2M2E1XHU2NDdhXHU4Nzc2XHU0ZTAxXHU0ZTk1XHU0ZWFkXHU1MDVjXHU1MDc1XHU1NDQ4XHU1OWMz''@;'; put 'put ''XHU1YjlhXHU1ZTQwXHU1ZWFkXHU1ZWY3XHU1ZjgxXHU2MGM1XHU2MzNhXHU2NTNmXHU2NTc0XHU2NWNjXHU2Njc2XHU2Njc4XHU2N2ZlXHU2OTY4XHU2YTg5XHU2YjYzXHU2YzQwXHU2ZGMwXHU2ZGU4XHU2ZTFmXHU2ZTVlXHU3MDFlXHU3MGExXHU3MzhlXHU3M2ZkXHU3NTNhXHU3NzViXHU3''@;'; put 'put ''ODg3XHU3OThlXHU3YTBiXHU3YTdkXHU3Y2JlXHU3ZDhlXHU4MjQ3XHU4YTAyXHU4YWVhXHU4YzllXHU5MTJkXHU5MTRhXHU5MWQ4XHU5MjY2XHU5MmNjXHU5MzIwXHU5NzA2XHU5NzU2Il0sWyJmMGExIiwiXHU5NzVjXHU5ODAyXHU5ZjBlXHU1MjM2XHU1MjkxXHU1NTdjXHU1ODI0XHU1ZTFk''@;'; put 'put ''XHU1ZjFmXHU2MDhjXHU2M2QwXHU2OGFmXHU2ZmRmXHU3OTZkXHU3YjJjXHU4MWNkXHU4NWJhXHU4OGZkXHU4YWY4XHU4ZTQ0XHU5MThkXHU5NjY0XHU5NjliXHU5NzNkXHU5ODRjXHU5ZjRhXHU0ZmNlXHU1MTQ2XHU1MWNiXHU1MmE5XHU1NjMyXHU1ZjE0XHU1ZjZiXHU2M2FhXHU2NGNkXHU2''@;'; put 'put ''NWU5XHU2NjQxXHU2NmZhXHU2NmY5XHU2NzFkXHU2ODlkXHU2OGQ3XHU2OWZkXHU2ZjE1XHU2ZjZlXHU3MTY3XHU3MWU1XHU3MjJhXHU3NGFhXHU3NzNhXHU3OTU2XHU3OTVhXHU3OWRmXHU3YTIwXHU3YTk1XHU3Yzk3XHU3Y2RmXHU3ZDQ0XHU3ZTcwXHU4MDg3XHU4NWZiXHU4NmE0XHU4YTU0''@;'; put 'put ''XHU4YWJmXHU4ZDk5XHU4ZTgxXHU5MDIwXHU5MDZkXHU5MWUzXHU5NjNiXHU5NmQ1XHU5Y2U1XHU2NWNmXHU3YzA3XHU4ZGIzXHU5M2MzXHU1YjU4XHU1YzBhXHU1MzUyXHU2MmQ5XHU3MzFkXHU1MDI3XHU1Yjk3XHU1ZjllXHU2MGIwXHU2MTZiXHU2OGQ1XHU2ZGQ5XHU3NDJlXHU3YTJlXHU3''@;'; put 'put ''ZDQyXHU3ZDljXHU3ZTMxXHU4MTZiIl0sWyJmMWExIiwiXHU4ZTJhXHU4ZTM1XHU5MzdlXHU5NDE4XHU0ZjUwXHU1NzUwXHU1ZGU2XHU1ZWE3XHU2MzJiXHU3ZjZhXHU0ZTNiXHU0ZjRmXHU0ZjhmXHU1MDVhXHU1OWRkXHU4MGM0XHU1NDZhXHU1NDY4XHU1NWZlXHU1OTRmXHU1Yjk5XHU1ZGRl''@;'; put 'put ''XHU1ZWRhXHU2NjVkXHU2NzMxXHU2N2YxXHU2ODJhXHU2Y2U4XHU2ZDMyXHU2ZTRhXHU2ZjhkXHU3MGI3XHU3M2UwXHU3NTg3XHU3YzRjXHU3ZDAyXHU3ZDJjXHU3ZGEyXHU4MjFmXHU4NmRiXHU4YTNiXHU4YTg1XHU4ZDcwXHU4ZThhXHU4ZjMzXHU5MDMxXHU5MTRlXHU5MTUyXHU5NDQ0XHU5''@;'; put 'put ''OWQwXHU3YWY5XHU3Y2E1XHU0ZmNhXHU1MTAxXHU1MWM2XHU1N2M4XHU1YmVmXHU1Y2ZiXHU2NjU5XHU2YTNkXHU2ZDVhXHU2ZTk2XHU2ZmVjXHU3MTBjXHU3NTZmXHU3YWUzXHU4ODIyXHU5MDIxXHU5MDc1XHU5NmNiXHU5OWZmXHU4MzAxXHU0ZTJkXHU0ZWYyXHU4ODQ2XHU5MWNkXHU1Mzdk''@;'; put 'put ''XHU2YWRiXHU2OTZiXHU2YzQxXHU4NDdhXHU1ODllXHU2MThlXHU2NmZlXHU2MmVmXHU3MGRkXHU3NTExXHU3NWM3XHU3ZTUyXHU4NGI4XHU4YjQ5XHU4ZDA4XHU0ZTRiXHU1M2VhIl0sWyJmMmExIiwiXHU1NGFiXHU1NzMwXHU1NzQwXHU1ZmQ3XHU2MzAxXHU2MzA3XHU2NDZmXHU2NTJmXHU2''@;'; put 'put ''NWU4XHU2NjdhXHU2NzlkXHU2N2IzXHU2YjYyXHU2YzYwXHU2YzlhXHU2ZjJjXHU3N2U1XHU3ODI1XHU3OTQ5XHU3OTU3XHU3ZDE5XHU4MGEyXHU4MTAyXHU4MWYzXHU4MjlkXHU4MmI3XHU4NzE4XHU4YThjXHVmOWZjXHU4ZDA0XHU4ZGJlXHU5MDcyXHU3NmY0XHU3YTE5XHU3YTM3XHU3ZTU0''@;'; put 'put ''XHU4MDc3XHU1NTA3XHU1NWQ0XHU1ODc1XHU2MzJmXHU2NDIyXHU2NjQ5XHU2NjRiXHU2ODZkXHU2OTliXHU2Yjg0XHU2ZDI1XHU2ZWIxXHU3M2NkXHU3NDY4XHU3NGExXHU3NTViXHU3NWI5XHU3NmUxXHU3NzFlXHU3NzhiXHU3OWU2XHU3ZTA5XHU3ZTFkXHU4MWZiXHU4NTJmXHU4ODk3XHU4''@;'; put 'put ''YTNhXHU4Y2QxXHU4ZWViXHU4ZmIwXHU5MDMyXHU5M2FkXHU5NjYzXHU5NjczXHU5NzA3XHU0Zjg0XHU1M2YxXHU1OWVhXHU1YWM5XHU1ZTE5XHU2ODRlXHU3NGM2XHU3NWJlXHU3OWU5XHU3YTkyXHU4MWEzXHU4NmVkXHU4Y2VhXHU4ZGNjXHU4ZmVkXHU2NTlmXHU2NzE1XHVmOWZkXHU1N2Y3''@;'; put 'put ''XHU2ZjU3XHU3ZGRkXHU4ZjJmIl0sWyJmM2ExIiwiXHU5M2Y2XHU5NmM2XHU1ZmI1XHU2MWYyXHU2Zjg0XHU0ZTE0XHU0Zjk4XHU1MDFmXHU1M2M5XHU1NWRmXHU1ZDZmXHU1ZGVlXHU2YjIxXHU2YjY0XHU3OGNiXHU3YjlhXHVmOWZlXHU4ZTQ5XHU4ZWNhXHU5MDZlXHU2MzQ5XHU2NDNlXHU3''@;'; put 'put ''NzQwXHU3YTg0XHU5MzJmXHU5NDdmXHU5ZjZhXHU2NGIwXHU2ZmFmXHU3MWU2XHU3NGE4XHU3NGRhXHU3YWM0XHU3YzEyXHU3ZTgyXHU3Y2IyXHU3ZTk4XHU4YjlhXHU4ZDBhXHU5NDdkXHU5OTEwXHU5OTRjXHU1MjM5XHU1YmRmXHU2NGU2XHU2NzJkXHU3ZDJlXHU1MGVkXHU1M2MzXHU1ODc5''@;'; put 'put ''XHU2MTU4XHU2MTU5XHU2MWZhXHU2NWFjXHU3YWQ5XHU4YjkyXHU4Yjk2XHU1MDA5XHU1MDIxXHU1Mjc1XHU1NTMxXHU1YTNjXHU1ZWUwXHU1ZjcwXHU2MTM0XHU2NTVlXHU2NjBjXHU2NjM2XHU2NmEyXHU2OWNkXHU2ZWM0XHU2ZjMyXHU3MzE2XHU3NjIxXHU3YTkzXHU4MTM5XHU4MjU5XHU4''@;'; put 'put ''M2Q2XHU4NGJjXHU1MGI1XHU1N2YwXHU1YmMwXHU1YmU4XHU1ZjY5XHU2M2ExXHU3ODI2XHU3ZGI1XHU4M2RjXHU4NTIxXHU5MWM3XHU5MWY1XHU1MThhXHU2N2Y1XHU3YjU2Il0sWyJmNGExIiwiXHU4Y2FjXHU1MWM0XHU1OWJiXHU2MGJkXHU4NjU1XHU1MDFjXHVmOWZmXHU1MjU0XHU1YzNh''@;'; put 'put ''XHU2MTdkXHU2MjFhXHU2MmQzXHU2NGYyXHU2NWE1XHU2ZWNjXHU3NjIwXHU4MTBhXHU4ZTYwXHU5NjVmXHU5NmJiXHU0ZWRmXHU1MzQzXHU1NTk4XHU1OTI5XHU1ZGRkXHU2NGM1XHU2Y2M5XHU2ZGZhXHU3Mzk0XHU3YTdmXHU4MjFiXHU4NWE2XHU4Y2U0XHU4ZTEwXHU5MDc3XHU5MWU3XHU5''@;'; put 'put ''NWUxXHU5NjIxXHU5N2M2XHU1MWY4XHU1NGYyXHU1NTg2XHU1ZmI5XHU2NGE0XHU2Zjg4XHU3ZGI0XHU4ZjFmXHU4ZjRkXHU5NDM1XHU1MGM5XHU1YzE2XHU2Y2JlXHU2ZGZiXHU3NTFiXHU3N2JiXHU3YzNkXHU3YzY0XHU4YTc5XHU4YWMyXHU1ODFlXHU1OWJlXHU1ZTE2XHU2Mzc3XHU3MjUy''@;'; put 'put ''XHU3NThhXHU3NzZiXHU4YWRjXHU4Y2JjXHU4ZjEyXHU1ZWYzXHU2Njc0XHU2ZGY4XHU4MDdkXHU4M2MxXHU4YWNiXHU5NzUxXHU5YmQ2XHVmYTAwXHU1MjQzXHU2NmZmXHU2ZDk1XHU2ZWVmXHU3ZGUwXHU4YWU2XHU5MDJlXHU5MDVlXHU5YWQ0XHU1MjFkXHU1MjdmXHU1NGU4XHU2MTk0XHU2''@;'; put 'put ''Mjg0XHU2MmRiXHU2OGEyIl0sWyJmNWExIiwiXHU2OTEyXHU2OTVhXHU2YTM1XHU3MDkyXHU3MTI2XHU3ODVkXHU3OTAxXHU3OTBlXHU3OWQyXHU3YTBkXHU4MDk2XHU4Mjc4XHU4MmQ1XHU4MzQ5XHU4NTQ5XHU4YzgyXHU4ZDg1XHU5MTYyXHU5MThiXHU5MWFlXHU0ZmMzXHU1NmQxXHU3MWVk''@;'; put 'put ''XHU3N2Q3XHU4NzAwXHU4OWY4XHU1YmY4XHU1ZmQ2XHU2NzUxXHU5MGE4XHU1M2UyXHU1ODVhXHU1YmY1XHU2MGE0XHU2MTgxXHU2NDYwXHU3ZTNkXHU4MDcwXHU4NTI1XHU5MjgzXHU2NGFlXHU1MGFjXHU1ZDE0XHU2NzAwXHU1ODljXHU2MmJkXHU2M2E4XHU2OTBlXHU2OTc4XHU2YTFlXHU2''@;'; put 'put ''ZTZiXHU3NmJhXHU3OWNiXHU4MmJiXHU4NDI5XHU4YWNmXHU4ZGE4XHU4ZmZkXHU5MTEyXHU5MTRiXHU5MTljXHU5MzEwXHU5MzE4XHU5MzlhXHU5NmRiXHU5YTM2XHU5YzBkXHU0ZTExXHU3NTVjXHU3OTVkXHU3YWZhXHU3YjUxXHU3YmM5XHU3ZTJlXHU4NGM0XHU4ZTU5XHU4ZTc0XHU4ZWY4''@;'; put 'put ''XHU5MDEwXHU2NjI1XHU2OTNmXHU3NDQzXHU1MWZhXHU2NzJlXHU5ZWRjXHU1MTQ1XHU1ZmUwXHU2Yzk2XHU4N2YyXHU4ODVkXHU4ODc3XHU2MGI0XHU4MWI1XHU4NDAzIl0sWyJmNmExIiwiXHU4ZDA1XHU1M2Q2XHU1NDM5XHU1NjM0XHU1YTM2XHU1YzMxXHU3MDhhXHU3ZmUwXHU4MDVhXHU4''@;'; put 'put ''MTA2XHU4MWVkXHU4ZGEzXHU5MTg5XHU5YTVmXHU5ZGYyXHU1MDc0XHU0ZWM0XHU1M2EwXHU2MGZiXHU2ZTJjXHU1YzY0XHU0Zjg4XHU1MDI0XHU1NWU0XHU1Y2Q5XHU1ZTVmXHU2MDY1XHU2ODk0XHU2Y2JiXHU2ZGM0XHU3MWJlXHU3NWQ0XHU3NWY0XHU3NjYxXHU3YTFhXHU3YTQ5XHU3ZGM3''@;'; put 'put ''XHU3ZGZiXHU3ZjZlXHU4MWY0XHU4NmE5XHU4ZjFjXHU5NmM5XHU5OWIzXHU5ZjUyXHU1MjQ3XHU1MmM1XHU5OGVkXHU4OWFhXHU0ZTAzXHU2N2QyXHU2ZjA2XHU0ZmI1XHU1YmUyXHU2Nzk1XHU2Yzg4XHU2ZDc4XHU3NDFiXHU3ODI3XHU5MWRkXHU5MzdjXHU4N2M0XHU3OWU0XHU3YTMxXHU1''@;'; put 'put ''ZmViXHU0ZWQ2XHU1NGE0XHU1NTNlXHU1OGFlXHU1OWE1XHU2MGYwXHU2MjUzXHU2MmQ2XHU2NzM2XHU2OTU1XHU4MjM1XHU5NjQwXHU5OWIxXHU5OWRkXHU1MDJjXHU1MzUzXHU1NTQ0XHU1NzdjXHVmYTAxXHU2MjU4XHVmYTAyXHU2NGUyXHU2NjZiXHU2N2RkXHU2ZmMxXHU2ZmVmXHU3NDIy''@;'; put 'put ''XHU3NDM4XHU4YTE3Il0sWyJmN2ExIiwiXHU5NDM4XHU1NDUxXHU1NjA2XHU1NzY2XHU1ZjQ4XHU2MTlhXHU2YjRlXHU3MDU4XHU3MGFkXHU3ZGJiXHU4YTk1XHU1OTZhXHU4MTJiXHU2M2EyXHU3NzA4XHU4MDNkXHU4Y2FhXHU1ODU0XHU2NDJkXHU2OWJiXHU1Yjk1XHU1ZTExXHU2ZTZmXHVm''@;'; put 'put ''YTAzXHU4NTY5XHU1MTRjXHU1M2YwXHU1OTJhXHU2MDIwXHU2MTRiXHU2Yjg2XHU2YzcwXHU2Y2YwXHU3YjFlXHU4MGNlXHU4MmQ0XHU4ZGM2XHU5MGIwXHU5OGIxXHVmYTA0XHU2NGM3XHU2ZmE0XHU2NDkxXHU2NTA0XHU1MTRlXHU1NDEwXHU1NzFmXHU4YTBlXHU2MTVmXHU2ODc2XHVmYTA1''@;'; put 'put ''XHU3NWRiXHU3YjUyXHU3ZDcxXHU5MDFhXHU1ODA2XHU2OWNjXHU4MTdmXHU4OTJhXHU5MDAwXHU5ODM5XHU1MDc4XHU1OTU3XHU1OWFjXHU2Mjk1XHU5MDBmXHU5YjJhXHU2MTVkXHU3Mjc5XHU5NWQ2XHU1NzYxXHU1YTQ2XHU1ZGY0XHU2MjhhXHU2NGFkXHU2NGZhXHU2Nzc3XHU2Y2UyXHU2''@;'; put 'put ''ZDNlXHU3MjJjXHU3NDM2XHU3ODM0XHU3Zjc3XHU4MmFkXHU4ZGRiXHU5ODE3XHU1MjI0XHU1NzQyXHU2NzdmXHU3MjQ4XHU3NGUzXHU4Y2E5XHU4ZmE2XHU5MjExIl0sWyJmOGExIiwiXHU5NjJhXHU1MTZiXHU1M2VkXHU2MzRjXHU0ZjY5XHU1NTA0XHU2MDk2XHU2NTU3XHU2YzliXHU2ZDdm''@;'; put 'put ''XHU3MjRjXHU3MmZkXHU3YTE3XHU4OTg3XHU4YzlkXHU1ZjZkXHU2ZjhlXHU3MGY5XHU4MWE4XHU2MTBlXHU0ZmJmXHU1MDRmXHU2MjQxXHU3MjQ3XHU3YmM3XHU3ZGU4XHU3ZmU5XHU5MDRkXHU5N2FkXHU5YTE5XHU4Y2I2XHU1NzZhXHU1ZTczXHU2N2IwXHU4NDBkXHU4YTU1XHU1NDIwXHU1''@;'; put 'put ''YjE2XHU1ZTYzXHU1ZWUyXHU1ZjBhXHU2NTgzXHU4MGJhXHU4NTNkXHU5NTg5XHU5NjViXHU0ZjQ4XHU1MzA1XHU1MzBkXHU1MzBmXHU1NDg2XHU1NGZhXHU1NzAzXHU1ZTAzXHU2MDE2XHU2MjliXHU2MmIxXHU2MzU1XHVmYTA2XHU2Y2UxXHU2ZDY2XHU3NWIxXHU3ODMyXHU4MGRlXHU4MTJm''@;'; put 'put ''XHU4MmRlXHU4NDYxXHU4NGIyXHU4ODhkXHU4OTEyXHU5MDBiXHU5MmVhXHU5OGZkXHU5YjkxXHU1ZTQ1XHU2NmI0XHU2NmRkXHU3MDExXHU3MjA2XHVmYTA3XHU0ZmY1XHU1MjdkXHU1ZjZhXHU2MTUzXHU2NzUzXHU2YTE5XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4Yzc5XHU5OGM3XHU5''@;'; put 'put ''OGM0XHU5YTQzIl0sWyJmOWExIiwiXHU1NGMxXHU3YTFmXHU2OTUzXHU4YWY3XHU4YzRhXHU5OGE4XHU5OWFlXHU1ZjdjXHU2MmFiXHU3NWIyXHU3NmFlXHU4OGFiXHU5MDdmXHU5NjQyXHU1MzM5XHU1ZjNjXHU1ZmM1XHU2Y2NjXHU3M2NjXHU3NTYyXHU3NThiXHU3YjQ2XHU4MmZlXHU5OTlk''@;'; put 'put ''XHU0ZTRmXHU5MDNjXHU0ZTBiXHU0ZjU1XHU1M2E2XHU1OTBmXHU1ZWM4XHU2NjMwXHU2Y2IzXHU3NDU1XHU4Mzc3XHU4NzY2XHU4Y2MwXHU5MDUwXHU5NzFlXHU5YzE1XHU1OGQxXHU1Yjc4XHU4NjUwXHU4YjE0XHU5ZGI0XHU1YmQyXHU2MDY4XHU2MDhkXHU2NWYxXHU2YzU3XHU2ZjIyXHU2''@;'; put 'put ''ZmEzXHU3MDFhXHU3ZjU1XHU3ZmYwXHU5NTkxXHU5NTkyXHU5NjUwXHU5N2QzXHU1MjcyXHU4ZjQ0XHU1MWZkXHU1NDJiXHU1NGI4XHU1NTYzXHU1NThhXHU2YWJiXHU2ZGI1XHU3ZGQ4XHU4MjY2XHU5MjljXHU5Njc3XHU5ZTc5XHU1NDA4XHU1NGM4XHU3NmQyXHU4NmU0XHU5NWE0XHU5NWQ0''@;'; put 'put ''XHU5NjVjXHU0ZWEyXHU0ZjA5XHU1OWVlXHU1YWU2XHU1ZGY3XHU2MDUyXHU2Mjk3XHU2NzZkXHU2ODQxXHU2Yzg2XHU2ZTJmXHU3ZjM4XHU4MDliXHU4MjJhIl0sWyJmYWExIiwiXHVmYTA4XHVmYTA5XHU5ODA1XHU0ZWE1XHU1MDU1XHU1NGIzXHU1NzkzXHU1OTVhXHU1YjY5XHU1YmIzXHU2''@;'; put 'put ''MWM4XHU2OTc3XHU2ZDc3XHU3MDIzXHU4N2Y5XHU4OWUzXHU4YTcyXHU4YWU3XHU5MDgyXHU5OWVkXHU5YWI4XHU1MmJlXHU2ODM4XHU1MDE2XHU1ZTc4XHU2NzRmXHU4MzQ3XHU4ODRjXHU0ZWFiXHU1NDExXHU1NmFlXHU3M2U2XHU5MTE1XHU5N2ZmXHU5OTA5XHU5OTU3XHU5OTk5XHU1NjUz''@;'; put 'put ''XHU1ODlmXHU4NjViXHU4YTMxXHU2MWIyXHU2YWY2XHU3MzdiXHU4ZWQyXHU2YjQ3XHU5NmFhXHU5YTU3XHU1OTU1XHU3MjAwXHU4ZDZiXHU5NzY5XHU0ZmQ0XHU1Y2Y0XHU1ZjI2XHU2MWY4XHU2NjViXHU2Y2ViXHU3MGFiXHU3Mzg0XHU3M2I5XHU3M2ZlXHU3NzI5XHU3NzRkXHU3ZDQzXHU3''@;'; put 'put ''ZDYyXHU3ZTIzXHU4MjM3XHU4ODUyXHVmYTBhXHU4Y2UyXHU5MjQ5XHU5ODZmXHU1YjUxXHU3YTc0XHU4ODQwXHU5ODAxXHU1YWNjXHU0ZmUwXHU1MzU0XHU1OTNlXHU1Y2ZkXHU2MzNlXHU2ZDc5XHU3MmY5XHU4MTA1XHU4MTA3XHU4M2EyXHU5MmNmXHU5ODMwXHU0ZWE4XHU1MTQ0XHU1MjEx''@;'; put 'put ''XHU1NzhiIl0sWyJmYmExIiwiXHU1ZjYyXHU2Y2MyXHU2ZWNlXHU3MDA1XHU3MDUwXHU3MGFmXHU3MTkyXHU3M2U5XHU3NDY5XHU4MzRhXHU4N2EyXHU4ODYxXHU5MDA4XHU5MGEyXHU5M2EzXHU5OWE4XHU1MTZlXHU1ZjU3XHU2MGUwXHU2MTY3XHU2NmIzXHU4NTU5XHU4ZTRhXHU5MWFmXHU5''@;'; put 'put ''NzhiXHU0ZTRlXHU0ZTkyXHU1NDdjXHU1OGQ1XHU1OGZhXHU1OTdkXHU1Y2I1XHU1ZjI3XHU2MjM2XHU2MjQ4XHU2NjBhXHU2NjY3XHU2YmViXHU2ZDY5XHU2ZGNmXHU2ZTU2XHU2ZWY4XHU2Zjk0XHU2ZmUwXHU2ZmU5XHU3MDVkXHU3MmQwXHU3NDI1XHU3NDVhXHU3NGUwXHU3NjkzXHU3OTVj''@;'; put 'put ''XHU3Y2NhXHU3ZTFlXHU4MGUxXHU4MmE2XHU4NDZiXHU4NGJmXHU4NjRlXHU4NjVmXHU4Nzc0XHU4Yjc3XHU4YzZhXHU5M2FjXHU5ODAwXHU5ODY1XHU2MGQxXHU2MjE2XHU5MTc3XHU1YTVhXHU2NjBmXHU2ZGY3XHU2ZTNlXHU3NDNmXHU5YjQyXHU1ZmZkXHU2MGRhXHU3YjBmXHU1NGM0XHU1''@;'; put 'put ''ZjE4XHU2YzVlXHU2Y2QzXHU2ZDJhXHU3MGQ4XHU3ZDA1XHU4Njc5XHU4YTBjXHU5ZDNiXHU1MzE2XHU1NDhjXHU1YjA1XHU2YTNhXHU3MDZiXHU3NTc1Il0sWyJmY2ExIiwiXHU3OThkXHU3OWJlXHU4MmIxXHU4M2VmXHU4YTcxXHU4YjQxXHU4Y2E4XHU5Nzc0XHVmYTBiXHU2NGY0XHU2NTJi''@;'; put 'put ''XHU3OGJhXHU3OGJiXHU3YTZiXHU0ZTM4XHU1NTlhXHU1OTUwXHU1YmE2XHU1ZTdiXHU2MGEzXHU2M2RiXHU2YjYxXHU2NjY1XHU2ODUzXHU2ZTE5XHU3MTY1XHU3NGIwXHU3ZDA4XHU5MDg0XHU5YTY5XHU5YzI1XHU2ZDNiXHU2ZWQxXHU3MzNlXHU4YzQxXHU5NWNhXHU1MWYwXHU1ZTRjXHU1''@;'; put 'put ''ZmE4XHU2MDRkXHU2MGY2XHU2MTMwXHU2MTRjXHU2NjQzXHU2NjQ0XHU2OWE1XHU2Y2MxXHU2ZTVmXHU2ZWM5XHU2ZjYyXHU3MTRjXHU3NDljXHU3Njg3XHU3YmMxXHU3YzI3XHU4MzUyXHU4NzU3XHU5MDUxXHU5NjhkXHU5ZWMzXHU1MzJmXHU1NmRlXHU1ZWZiXHU1ZjhhXHU2MDYyXHU2MDk0''@;'; put 'put ''XHU2MWY3XHU2NjY2XHU2NzAzXHU2YTljXHU2ZGVlXHU2ZmFlXHU3MDcwXHU3MzZhXHU3ZTZhXHU4MWJlXHU4MzM0XHU4NmQ0XHU4YWE4XHU4Y2M0XHU1MjgzXHU3MzcyXHU1Yjk2XHU2YTZiXHU5NDA0XHU1NGVlXHU1Njg2XHU1YjVkXHU2NTQ4XHU2NTg1XHU2NmM5XHU2ODlmXHU2ZDhkXHU2''@;'; put 'put ''ZGM2Il0sWyJmZGExIiwiXHU3MjNiXHU4MGI0XHU5MTc1XHU5YTRkXHU0ZmFmXHU1MDE5XHU1MzlhXHU1NDBlXHU1NDNjXHU1NTg5XHU1NWM1XHU1ZTNmXHU1ZjhjXHU2NzNkXHU3MTY2XHU3M2RkXHU5MDA1XHU1MmRiXHU1MmYzXHU1ODY0XHU1OGNlXHU3MTA0XHU3MThmXHU3MWZiXHU4NWIw''@;'; put 'put ''XHU4YTEzXHU2Njg4XHU4NWE4XHU1NWE3XHU2Njg0XHU3MTRhXHU4NDMxXHU1MzQ5XHU1NTk5XHU2YmMxXHU1ZjU5XHU1ZmJkXHU2M2VlXHU2Njg5XHU3MTQ3XHU4YWYxXHU4ZjFkXHU5ZWJlXHU0ZjExXHU2NDNhXHU3MGNiXHU3NTY2XHU4NjY3XHU2MDY0XHU4YjRlXHU5ZGY4XHU1MTQ3XHU1''@;'; put 'put ''MWY2XHU1MzA4XHU2ZDM2XHU4MGY4XHU5ZWQxXHU2NjE1XHU2YjIzXHU3MDk4XHU3NWQ1XHU1NDAzXHU1Yzc5XHU3ZDA3XHU4YTE2XHU2YjIwXHU2YjNkXHU2YjQ2XHU1NDM4XHU2MDcwXHU2ZDNkXHU3ZmQ1XHU4MjA4XHU1MGQ2XHU1MWRlXHU1NTljXHU1NjZiXHU1NmNkXHU1OWVjXHU1YjA5''@;'; put 'put ''XHU1ZTBjXHU2MTk5XHU2MTk4XHU2MjMxXHU2NjVlXHU2NmU2XHU3MTk5XHU3MWI5XHU3MWJhXHU3MmE3XHU3OWE3XHU3YTAwXHU3ZmIyXHU4YTcwIl1dJyl9LDcyMzI0OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyN10sWyJhMTQw''@;'; put 'put ''IiwiXHUzMDAwXHVmZjBjXHUzMDAxXHUzMDAyXHVmZjBlXHUyMDI3XHVmZjFiXHVmZjFhXHVmZjFmXHVmZjAxXHVmZTMwXHUyMDI2XHUyMDI1XHVmZTUwXHVmZTUxXHVmZTUyXHhiN1x1ZmU1NFx1ZmU1NVx1ZmU1Nlx1ZmU1N1x1ZmY1Y1x1MjAxM1x1ZmUzMVx1MjAxNFx1ZmUzM1x1MjU3NFx1''@;'; put 'put ''ZmUzNFx1ZmU0Zlx1ZmYwOFx1ZmYwOVx1ZmUzNVx1ZmUzNlx1ZmY1Ylx1ZmY1ZFx1ZmUzN1x1ZmUzOFx1MzAxNFx1MzAxNVx1ZmUzOVx1ZmUzYVx1MzAxMFx1MzAxMVx1ZmUzYlx1ZmUzY1x1MzAwYVx1MzAwYlx1ZmUzZFx1ZmUzZVx1MzAwOFx1MzAwOVx1ZmUzZlx1ZmU0MFx1MzAwY1x1MzAw''@;'; put 'put ''ZFx1ZmU0MVx1ZmU0Mlx1MzAwZVx1MzAwZlx1ZmU0M1x1ZmU0NFx1ZmU1OVx1ZmU1YSJdLFsiYTFhMSIsIlx1ZmU1Ylx1ZmU1Y1x1ZmU1ZFx1ZmU1ZVx1MjAxOFx1MjAxOVx1MjAxY1x1MjAxZFx1MzAxZFx1MzAxZVx1MjAzNVx1MjAzMlx1ZmYwM1x1ZmYwNlx1ZmYwYVx1MjAzYlx4YTdcdTMw''@;'; put 'put ''MDNcdTI1Y2JcdTI1Y2ZcdTI1YjNcdTI1YjJcdTI1Y2VcdTI2MDZcdTI2MDVcdTI1YzdcdTI1YzZcdTI1YTFcdTI1YTBcdTI1YmRcdTI1YmNcdTMyYTNcdTIxMDVceGFmXHVmZmUzXHVmZjNmXHUwMmNkXHVmZTQ5XHVmZTRhXHVmZTRkXHVmZTRlXHVmZTRiXHVmZTRjXHVmZTVmXHVmZTYwXHVm''@;'; put 'put ''ZTYxXHVmZjBiXHVmZjBkXHhkN1x4ZjdceGIxXHUyMjFhXHVmZjFjXHVmZjFlXHVmZjFkXHUyMjY2XHUyMjY3XHUyMjYwXHUyMjFlXHUyMjUyXHUyMjYxXHVmZTYyIiw0LCJcdWZmNWVcdTIyMjlcdTIyMmFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTMzZDJcdTMzZDFcdTIyMmJcdTIyMmVc''@;'; put 'put ''dTIyMzVcdTIyMzRcdTI2NDBcdTI2NDJcdTIyOTVcdTIyOTlcdTIxOTFcdTIxOTNcdTIxOTBcdTIxOTJcdTIxOTZcdTIxOTdcdTIxOTlcdTIxOThcdTIyMjVcdTIyMjNcdWZmMGYiXSxbImEyNDAiLCJcdWZmM2NcdTIyMTVcdWZlNjhcdWZmMDRcdWZmZTVcdTMwMTJcdWZmZTBcdWZmZTFcdWZm''@;'; put 'put ''MDVcdWZmMjBcdTIxMDNcdTIxMDlcdWZlNjlcdWZlNmFcdWZlNmJcdTMzZDVcdTMzOWNcdTMzOWRcdTMzOWVcdTMzY2VcdTMzYTFcdTMzOGVcdTMzOGZcdTMzYzRceGIwXHU1MTU5XHU1MTViXHU1MTVlXHU1MTVkXHU1MTYxXHU1MTYzXHU1NWU3XHU3NGU5XHU3Y2NlXHUyNTgxIiw3LCJcdTI1''@;'; put 'put ''OGZcdTI1OGVcdTI1OGRcdTI1OGNcdTI1OGJcdTI1OGFcdTI1ODlcdTI1M2NcdTI1MzRcdTI1MmNcdTI1MjRcdTI1MWNcdTI1OTRcdTI1MDBcdTI1MDJcdTI1OTVcdTI1MGNcdTI1MTBcdTI1MTRcdTI1MThcdTI1NmQiXSxbImEyYTEiLCJcdTI1NmVcdTI1NzBcdTI1NmZcdTI1NTBcdTI1NWVc''@;'; put 'put ''dTI1NmFcdTI1NjFcdTI1ZTJcdTI1ZTNcdTI1ZTVcdTI1ZTRcdTI1NzFcdTI1NzJcdTI1NzNcdWZmMTAiLDksIlx1MjE2MCIsOSwiXHUzMDIxIiw4LCJcdTUzNDFcdTUzNDRcdTUzNDVcdWZmMjEiLDI1LCJcdWZmNDEiLDIxXSxbImEzNDAiLCJcdWZmNTdcdWZmNThcdWZmNTlcdWZmNWFcdTAz''@;'; put 'put ''OTEiLDE2LCJcdTAzYTMiLDYsIlx1MDNiMSIsMTYsIlx1MDNjMyIsNiwiXHUzMTA1IiwxMF0sWyJhM2ExIiwiXHUzMTEwIiwyNSwiXHUwMmQ5XHUwMmM5XHUwMmNhXHUwMmM3XHUwMmNiIl0sWyJhM2UxIiwiXHUyMGFjIl0sWyJhNDQwIiwiXHU0ZTAwXHU0ZTU5XHU0ZTAxXHU0ZTAzXHU0ZTQz''@;'; put 'put ''XHU0ZTVkXHU0ZTg2XHU0ZThjXHU0ZWJhXHU1MTNmXHU1MTY1XHU1MTZiXHU1MWUwXHU1MjAwXHU1MjAxXHU1MjliXHU1MzE1XHU1MzQxXHU1MzVjXHU1M2M4XHU0ZTA5XHU0ZTBiXHU0ZTA4XHU0ZTBhXHU0ZTJiXHU0ZTM4XHU1MWUxXHU0ZTQ1XHU0ZTQ4XHU0ZTVmXHU0ZTVlXHU0ZThlXHU0''@;'; put 'put ''ZWExXHU1MTQwXHU1MjAzXHU1MmZhXHU1MzQzXHU1M2M5XHU1M2UzXHU1NzFmXHU1OGViXHU1OTE1XHU1OTI3XHU1OTczXHU1YjUwXHU1YjUxXHU1YjUzXHU1YmY4XHU1YzBmXHU1YzIyXHU1YzM4XHU1YzcxXHU1ZGRkXHU1ZGU1XHU1ZGYxXHU1ZGYyXHU1ZGYzXHU1ZGZlXHU1ZTcyXHU1ZWZl''@;'; put 'put ''XHU1ZjBiXHU1ZjEzXHU2MjRkIl0sWyJhNGExIiwiXHU0ZTExXHU0ZTEwXHU0ZTBkXHU0ZTJkXHU0ZTMwXHU0ZTM5XHU0ZTRiXHU1YzM5XHU0ZTg4XHU0ZTkxXHU0ZTk1XHU0ZTkyXHU0ZTk0XHU0ZWEyXHU0ZWMxXHU0ZWMwXHU0ZWMzXHU0ZWM2XHU0ZWM3XHU0ZWNkXHU0ZWNhXHU0ZWNiXHU0''@;'; put 'put ''ZWM0XHU1MTQzXHU1MTQxXHU1MTY3XHU1MTZkXHU1MTZlXHU1MTZjXHU1MTk3XHU1MWY2XHU1MjA2XHU1MjA3XHU1MjA4XHU1MmZiXHU1MmZlXHU1MmZmXHU1MzE2XHU1MzM5XHU1MzQ4XHU1MzQ3XHU1MzQ1XHU1MzVlXHU1Mzg0XHU1M2NiXHU1M2NhXHU1M2NkXHU1OGVjXHU1OTI5XHU1OTJi''@;'; put 'put ''XHU1OTJhXHU1OTJkXHU1YjU0XHU1YzExXHU1YzI0XHU1YzNhXHU1YzZmXHU1ZGY0XHU1ZTdiXHU1ZWZmXHU1ZjE0XHU1ZjE1XHU1ZmMzXHU2MjA4XHU2MjM2XHU2MjRiXHU2MjRlXHU2NTJmXHU2NTg3XHU2NTk3XHU2NWE0XHU2NWI5XHU2NWU1XHU2NmYwXHU2NzA4XHU2NzI4XHU2YjIwXHU2''@;'; put 'put ''YjYyXHU2Yjc5XHU2YmNiXHU2YmQ0XHU2YmRiXHU2YzBmXHU2YzM0XHU3MDZiXHU3MjJhXHU3MjM2XHU3MjNiXHU3MjQ3XHU3MjU5XHU3MjViXHU3MmFjXHU3MzhiXHU0ZTE5Il0sWyJhNTQwIiwiXHU0ZTE2XHU0ZTE1XHU0ZTE0XHU0ZTE4XHU0ZTNiXHU0ZTRkXHU0ZTRmXHU0ZTRlXHU0ZWU1''@;'; put 'put ''XHU0ZWQ4XHU0ZWQ0XHU0ZWQ1XHU0ZWQ2XHU0ZWQ3XHU0ZWUzXHU0ZWU0XHU0ZWQ5XHU0ZWRlXHU1MTQ1XHU1MTQ0XHU1MTg5XHU1MThhXHU1MWFjXHU1MWY5XHU1MWZhXHU1MWY4XHU1MjBhXHU1MmEwXHU1MjlmXHU1MzA1XHU1MzA2XHU1MzE3XHU1MzFkXHU0ZWRmXHU1MzRhXHU1MzQ5XHU1''@;'; put 'put ''MzYxXHU1MzYwXHU1MzZmXHU1MzZlXHU1M2JiXHU1M2VmXHU1M2U0XHU1M2YzXHU1M2VjXHU1M2VlXHU1M2U5XHU1M2U4XHU1M2ZjXHU1M2Y4XHU1M2Y1XHU1M2ViXHU1M2U2XHU1M2VhXHU1M2YyXHU1M2YxXHU1M2YwXHU1M2U1XHU1M2VkXHU1M2ZiXHU1NmRiXHU1NmRhXHU1OTE2Il0sWyJh''@;'; put 'put ''NWExIiwiXHU1OTJlXHU1OTMxXHU1OTc0XHU1OTc2XHU1YjU1XHU1YjgzXHU1YzNjXHU1ZGU4XHU1ZGU3XHU1ZGU2XHU1ZTAyXHU1ZTAzXHU1ZTczXHU1ZTdjXHU1ZjAxXHU1ZjE4XHU1ZjE3XHU1ZmM1XHU2MjBhXHU2MjUzXHU2MjU0XHU2MjUyXHU2MjUxXHU2NWE1XHU2NWU2XHU2NzJlXHU2''@;'; put 'put ''NzJjXHU2NzJhXHU2NzJiXHU2NzJkXHU2YjYzXHU2YmNkXHU2YzExXHU2YzEwXHU2YzM4XHU2YzQxXHU2YzQwXHU2YzNlXHU3MmFmXHU3Mzg0XHU3Mzg5XHU3NGRjXHU3NGU2XHU3NTE4XHU3NTFmXHU3NTI4XHU3NTI5XHU3NTMwXHU3NTMxXHU3NTMyXHU3NTMzXHU3NThiXHU3NjdkXHU3NmFl''@;'; put 'put ''XHU3NmJmXHU3NmVlXHU3N2RiXHU3N2UyXHU3N2YzXHU3OTNhXHU3OWJlXHU3YTc0XHU3YWNiXHU0ZTFlXHU0ZTFmXHU0ZTUyXHU0ZTUzXHU0ZTY5XHU0ZTk5XHU0ZWE0XHU0ZWE2XHU0ZWE1XHU0ZWZmXHU0ZjA5XHU0ZjE5XHU0ZjBhXHU0ZjE1XHU0ZjBkXHU0ZjEwXHU0ZjExXHU0ZjBmXHU0''@;'; put 'put ''ZWYyXHU0ZWY2XHU0ZWZiXHU0ZWYwXHU0ZWYzXHU0ZWZkXHU0ZjAxXHU0ZjBiXHU1MTQ5XHU1MTQ3XHU1MTQ2XHU1MTQ4XHU1MTY4Il0sWyJhNjQwIiwiXHU1MTcxXHU1MThkXHU1MWIwXHU1MjE3XHU1MjExXHU1MjEyXHU1MjBlXHU1MjE2XHU1MmEzXHU1MzA4XHU1MzIxXHU1MzIwXHU1Mzcw''@;'; put 'put ''XHU1MzcxXHU1NDA5XHU1NDBmXHU1NDBjXHU1NDBhXHU1NDEwXHU1NDAxXHU1NDBiXHU1NDA0XHU1NDExXHU1NDBkXHU1NDA4XHU1NDAzXHU1NDBlXHU1NDA2XHU1NDEyXHU1NmUwXHU1NmRlXHU1NmRkXHU1NzMzXHU1NzMwXHU1NzI4XHU1NzJkXHU1NzJjXHU1NzJmXHU1NzI5XHU1OTE5XHU1''@;'; put 'put ''OTFhXHU1OTM3XHU1OTM4XHU1OTg0XHU1OTc4XHU1OTgzXHU1OTdkXHU1OTc5XHU1OTgyXHU1OTgxXHU1YjU3XHU1YjU4XHU1Yjg3XHU1Yjg4XHU1Yjg1XHU1Yjg5XHU1YmZhXHU1YzE2XHU1Yzc5XHU1ZGRlXHU1ZTA2XHU1ZTc2XHU1ZTc0Il0sWyJhNmExIiwiXHU1ZjBmXHU1ZjFiXHU1ZmQ5''@;'; put 'put ''XHU1ZmQ2XHU2MjBlXHU2MjBjXHU2MjBkXHU2MjEwXHU2MjYzXHU2MjViXHU2MjU4XHU2NTM2XHU2NWU5XHU2NWU4XHU2NWVjXHU2NWVkXHU2NmYyXHU2NmYzXHU2NzA5XHU2NzNkXHU2NzM0XHU2NzMxXHU2NzM1XHU2YjIxXHU2YjY0XHU2YjdiXHU2YzE2XHU2YzVkXHU2YzU3XHU2YzU5XHU2''@;'; put 'put ''YzVmXHU2YzYwXHU2YzUwXHU2YzU1XHU2YzYxXHU2YzViXHU2YzRkXHU2YzRlXHU3MDcwXHU3MjVmXHU3MjVkXHU3NjdlXHU3YWY5XHU3YzczXHU3Y2Y4XHU3ZjM2XHU3ZjhhXHU3ZmJkXHU4MDAxXHU4MDAzXHU4MDBjXHU4MDEyXHU4MDMzXHU4MDdmXHU4MDg5XHU4MDhiXHU4MDhjXHU4MWUz''@;'; put 'put ''XHU4MWVhXHU4MWYzXHU4MWZjXHU4MjBjXHU4MjFiXHU4MjFmXHU4MjZlXHU4MjcyXHU4MjdlXHU4NjZiXHU4ODQwXHU4ODRjXHU4ODYzXHU4OTdmXHU5NjIxXHU0ZTMyXHU0ZWE4XHU0ZjRkXHU0ZjRmXHU0ZjQ3XHU0ZjU3XHU0ZjVlXHU0ZjM0XHU0ZjViXHU0ZjU1XHU0ZjMwXHU0ZjUwXHU0''@;'; put 'put ''ZjUxXHU0ZjNkXHU0ZjNhXHU0ZjM4XHU0ZjQzXHU0ZjU0XHU0ZjNjXHU0ZjQ2XHU0ZjYzIl0sWyJhNzQwIiwiXHU0ZjVjXHU0ZjYwXHU0ZjJmXHU0ZjRlXHU0ZjM2XHU0ZjU5XHU0ZjVkXHU0ZjQ4XHU0ZjVhXHU1MTRjXHU1MTRiXHU1MTRkXHU1MTc1XHU1MWI2XHU1MWI3XHU1MjI1XHU1MjI0''@;'; put 'put ''XHU1MjI5XHU1MjJhXHU1MjI4XHU1MmFiXHU1MmE5XHU1MmFhXHU1MmFjXHU1MzIzXHU1MzczXHU1Mzc1XHU1NDFkXHU1NDJkXHU1NDFlXHU1NDNlXHU1NDI2XHU1NDRlXHU1NDI3XHU1NDQ2XHU1NDQzXHU1NDMzXHU1NDQ4XHU1NDQyXHU1NDFiXHU1NDI5XHU1NDRhXHU1NDM5XHU1NDNiXHU1''@;'; put 'put ''NDM4XHU1NDJlXHU1NDM1XHU1NDM2XHU1NDIwXHU1NDNjXHU1NDQwXHU1NDMxXHU1NDJiXHU1NDFmXHU1NDJjXHU1NmVhXHU1NmYwXHU1NmU0XHU1NmViXHU1NzRhXHU1NzUxXHU1NzQwXHU1NzRkIl0sWyJhN2ExIiwiXHU1NzQ3XHU1NzRlXHU1NzNlXHU1NzUwXHU1NzRmXHU1NzNiXHU1OGVm''@;'; put 'put ''XHU1OTNlXHU1OTlkXHU1OTkyXHU1OWE4XHU1OTllXHU1OWEzXHU1OTk5XHU1OTk2XHU1OThkXHU1OWE0XHU1OTkzXHU1OThhXHU1OWE1XHU1YjVkXHU1YjVjXHU1YjVhXHU1YjViXHU1YjhjXHU1YjhiXHU1YjhmXHU1YzJjXHU1YzQwXHU1YzQxXHU1YzNmXHU1YzNlXHU1YzkwXHU1YzkxXHU1''@;'; put 'put ''Yzk0XHU1YzhjXHU1ZGViXHU1ZTBjXHU1ZThmXHU1ZTg3XHU1ZThhXHU1ZWY3XHU1ZjA0XHU1ZjFmXHU1ZjY0XHU1ZjYyXHU1Zjc3XHU1Zjc5XHU1ZmQ4XHU1ZmNjXHU1ZmQ3XHU1ZmNkXHU1ZmYxXHU1ZmViXHU1ZmY4XHU1ZmVhXHU2MjEyXHU2MjExXHU2Mjg0XHU2Mjk3XHU2Mjk2XHU2Mjgw''@;'; put 'put ''XHU2Mjc2XHU2Mjg5XHU2MjZkXHU2MjhhXHU2MjdjXHU2MjdlXHU2Mjc5XHU2MjczXHU2MjkyXHU2MjZmXHU2Mjk4XHU2MjZlXHU2Mjk1XHU2MjkzXHU2MjkxXHU2Mjg2XHU2NTM5XHU2NTNiXHU2NTM4XHU2NWYxXHU2NmY0XHU2NzVmXHU2NzRlXHU2NzRmXHU2NzUwXHU2NzUxXHU2NzVjXHU2''@;'; put 'put ''NzU2XHU2NzVlXHU2NzQ5XHU2NzQ2XHU2NzYwIl0sWyJhODQwIiwiXHU2NzUzXHU2NzU3XHU2YjY1XHU2YmNmXHU2YzQyXHU2YzVlXHU2Yzk5XHU2YzgxXHU2Yzg4XHU2Yzg5XHU2Yzg1XHU2YzliXHU2YzZhXHU2YzdhXHU2YzkwXHU2YzcwXHU2YzhjXHU2YzY4XHU2Yzk2XHU2YzkyXHU2Yzdk''@;'; put 'put ''XHU2YzgzXHU2YzcyXHU2YzdlXHU2Yzc0XHU2Yzg2XHU2Yzc2XHU2YzhkXHU2Yzk0XHU2Yzk4XHU2YzgyXHU3MDc2XHU3MDdjXHU3MDdkXHU3MDc4XHU3MjYyXHU3MjYxXHU3MjYwXHU3MmM0XHU3MmMyXHU3Mzk2XHU3NTJjXHU3NTJiXHU3NTM3XHU3NTM4XHU3NjgyXHU3NmVmXHU3N2UzXHU3''@;'; put 'put ''OWMxXHU3OWMwXHU3OWJmXHU3YTc2XHU3Y2ZiXHU3ZjU1XHU4MDk2XHU4MDkzXHU4MDlkXHU4MDk4XHU4MDliXHU4MDlhXHU4MGIyXHU4MjZmXHU4MjkyIl0sWyJhOGExIiwiXHU4MjhiXHU4MjhkXHU4OThiXHU4OWQyXHU4YTAwXHU4YzM3XHU4YzQ2XHU4YzU1XHU4YzlkXHU4ZDY0XHU4ZDcw''@;'; put 'put ''XHU4ZGIzXHU4ZWFiXHU4ZWNhXHU4ZjliXHU4ZmIwXHU4ZmMyXHU4ZmM2XHU4ZmM1XHU4ZmM0XHU1ZGUxXHU5MDkxXHU5MGEyXHU5MGFhXHU5MGE2XHU5MGEzXHU5MTQ5XHU5MWM2XHU5MWNjXHU5NjMyXHU5NjJlXHU5NjMxXHU5NjJhXHU5NjJjXHU0ZTI2XHU0ZTU2XHU0ZTczXHU0ZThiXHU0''@;'; put 'put ''ZTliXHU0ZTllXHU0ZWFiXHU0ZWFjXHU0ZjZmXHU0ZjlkXHU0ZjhkXHU0ZjczXHU0ZjdmXHU0ZjZjXHU0ZjliXHU0ZjhiXHU0Zjg2XHU0ZjgzXHU0ZjcwXHU0Zjc1XHU0Zjg4XHU0ZjY5XHU0ZjdiXHU0Zjk2XHU0ZjdlXHU0ZjhmXHU0ZjkxXHU0ZjdhXHU1MTU0XHU1MTUyXHU1MTU1XHU1MTY5''@;'; put 'put ''XHU1MTc3XHU1MTc2XHU1MTc4XHU1MWJkXHU1MWZkXHU1MjNiXHU1MjM4XHU1MjM3XHU1MjNhXHU1MjMwXHU1MjJlXHU1MjM2XHU1MjQxXHU1MmJlXHU1MmJiXHU1MzUyXHU1MzU0XHU1MzUzXHU1MzUxXHU1MzY2XHU1Mzc3XHU1Mzc4XHU1Mzc5XHU1M2Q2XHU1M2Q0XHU1M2Q3XHU1NDczXHU1''@;'; put 'put ''NDc1Il0sWyJhOTQwIiwiXHU1NDk2XHU1NDc4XHU1NDk1XHU1NDgwXHU1NDdiXHU1NDc3XHU1NDg0XHU1NDkyXHU1NDg2XHU1NDdjXHU1NDkwXHU1NDcxXHU1NDc2XHU1NDhjXHU1NDlhXHU1NDYyXHU1NDY4XHU1NDhiXHU1NDdkXHU1NDhlXHU1NmZhXHU1NzgzXHU1Nzc3XHU1NzZhXHU1NzY5''@;'; put 'put ''XHU1NzYxXHU1NzY2XHU1NzY0XHU1NzdjXHU1OTFjXHU1OTQ5XHU1OTQ3XHU1OTQ4XHU1OTQ0XHU1OTU0XHU1OWJlXHU1OWJiXHU1OWQ0XHU1OWI5XHU1OWFlXHU1OWQxXHU1OWM2XHU1OWQwXHU1OWNkXHU1OWNiXHU1OWQzXHU1OWNhXHU1OWFmXHU1OWIzXHU1OWQyXHU1OWM1XHU1YjVmXHU1''@;'; put 'put ''YjY0XHU1YjYzXHU1Yjk3XHU1YjlhXHU1Yjk4XHU1YjljXHU1Yjk5XHU1YjliXHU1YzFhXHU1YzQ4XHU1YzQ1Il0sWyJhOWExIiwiXHU1YzQ2XHU1Y2I3XHU1Y2ExXHU1Y2I4XHU1Y2E5XHU1Y2FiXHU1Y2IxXHU1Y2IzXHU1ZTE4XHU1ZTFhXHU1ZTE2XHU1ZTE1XHU1ZTFiXHU1ZTExXHU1ZTc4''@;'; put 'put ''XHU1ZTlhXHU1ZTk3XHU1ZTljXHU1ZTk1XHU1ZTk2XHU1ZWY2XHU1ZjI2XHU1ZjI3XHU1ZjI5XHU1ZjgwXHU1ZjgxXHU1ZjdmXHU1ZjdjXHU1ZmRkXHU1ZmUwXHU1ZmZkXHU1ZmY1XHU1ZmZmXHU2MDBmXHU2MDE0XHU2MDJmXHU2MDM1XHU2MDE2XHU2MDJhXHU2MDE1XHU2MDIxXHU2MDI3XHU2''@;'; put 'put ''MDI5XHU2MDJiXHU2MDFiXHU2MjE2XHU2MjE1XHU2MjNmXHU2MjNlXHU2MjQwXHU2MjdmXHU2MmM5XHU2MmNjXHU2MmM0XHU2MmJmXHU2MmMyXHU2MmI5XHU2MmQyXHU2MmRiXHU2MmFiXHU2MmQzXHU2MmQ0XHU2MmNiXHU2MmM4XHU2MmE4XHU2MmJkXHU2MmJjXHU2MmQwXHU2MmQ5XHU2MmM3''@;'; put 'put ''XHU2MmNkXHU2MmI1XHU2MmRhXHU2MmIxXHU2MmQ4XHU2MmQ2XHU2MmQ3XHU2MmM2XHU2MmFjXHU2MmNlXHU2NTNlXHU2NWE3XHU2NWJjXHU2NWZhXHU2NjE0XHU2NjEzXHU2NjBjXHU2NjA2XHU2NjAyXHU2NjBlXHU2NjAwXHU2NjBmXHU2NjE1XHU2NjBhIl0sWyJhYTQwIiwiXHU2NjA3XHU2''@;'; put 'put ''NzBkXHU2NzBiXHU2NzZkXHU2NzhiXHU2Nzk1XHU2NzcxXHU2NzljXHU2NzczXHU2Nzc3XHU2Nzg3XHU2NzlkXHU2Nzk3XHU2NzZmXHU2NzcwXHU2NzdmXHU2Nzg5XHU2NzdlXHU2NzkwXHU2Nzc1XHU2NzlhXHU2NzkzXHU2NzdjXHU2NzZhXHU2NzcyXHU2YjIzXHU2YjY2XHU2YjY3XHU2Yjdm''@;'; put 'put ''XHU2YzEzXHU2YzFiXHU2Y2UzXHU2Y2U4XHU2Y2YzXHU2Y2IxXHU2Y2NjXHU2Y2U1XHU2Y2IzXHU2Y2JkXHU2Y2JlXHU2Y2JjXHU2Y2UyXHU2Y2FiXHU2Y2Q1XHU2Y2QzXHU2Y2I4XHU2Y2M0XHU2Y2I5XHU2Y2MxXHU2Y2FlXHU2Y2Q3XHU2Y2M1XHU2Y2YxXHU2Y2JmXHU2Y2JiXHU2Y2UxXHU2''@;'; put 'put ''Y2RiXHU2Y2NhXHU2Y2FjXHU2Y2VmXHU2Y2RjXHU2Y2Q2XHU2Y2UwIl0sWyJhYWExIiwiXHU3MDk1XHU3MDhlXHU3MDkyXHU3MDhhXHU3MDk5XHU3MjJjXHU3MjJkXHU3MjM4XHU3MjQ4XHU3MjY3XHU3MjY5XHU3MmMwXHU3MmNlXHU3MmQ5XHU3MmQ3XHU3MmQwXHU3M2E5XHU3M2E4XHU3Mzlm''@;'; put 'put ''XHU3M2FiXHU3M2E1XHU3NTNkXHU3NTlkXHU3NTk5XHU3NTlhXHU3Njg0XHU3NmMyXHU3NmYyXHU3NmY0XHU3N2U1XHU3N2ZkXHU3OTNlXHU3OTQwXHU3OTQxXHU3OWM5XHU3OWM4XHU3YTdhXHU3YTc5XHU3YWZhXHU3Y2ZlXHU3ZjU0XHU3ZjhjXHU3ZjhiXHU4MDA1XHU4MGJhXHU4MGE1XHU4''@;'; put 'put ''MGEyXHU4MGIxXHU4MGExXHU4MGFiXHU4MGE5XHU4MGI0XHU4MGFhXHU4MGFmXHU4MWU1XHU4MWZlXHU4MjBkXHU4MmIzXHU4MjlkXHU4Mjk5XHU4MmFkXHU4MmJkXHU4MjlmXHU4MmI5XHU4MmIxXHU4MmFjXHU4MmE1XHU4MmFmXHU4MmI4XHU4MmEzXHU4MmIwXHU4MmJlXHU4MmI3XHU4NjRl''@;'; put 'put ''XHU4NjcxXHU1MjFkXHU4ODY4XHU4ZWNiXHU4ZmNlXHU4ZmQ0XHU4ZmQxXHU5MGI1XHU5MGI4XHU5MGIxXHU5MGI2XHU5MWM3XHU5MWQxXHU5NTc3XHU5NTgwXHU5NjFjXHU5NjQwXHU5NjNmXHU5NjNiXHU5NjQ0Il0sWyJhYjQwIiwiXHU5NjQyXHU5NmI5XHU5NmU4XHU5NzUyXHU5NzVlXHU0''@;'; put 'put ''ZTlmXHU0ZWFkXHU0ZWFlXHU0ZmUxXHU0ZmI1XHU0ZmFmXHU0ZmJmXHU0ZmUwXHU0ZmQxXHU0ZmNmXHU0ZmRkXHU0ZmMzXHU0ZmI2XHU0ZmQ4XHU0ZmRmXHU0ZmNhXHU0ZmQ3XHU0ZmFlXHU0ZmQwXHU0ZmM0XHU0ZmMyXHU0ZmRhXHU0ZmNlXHU0ZmRlXHU0ZmI3XHU1MTU3XHU1MTkyXHU1MTkx''@;'; put 'put ''XHU1MWEwXHU1MjRlXHU1MjQzXHU1MjRhXHU1MjRkXHU1MjRjXHU1MjRiXHU1MjQ3XHU1MmM3XHU1MmM5XHU1MmMzXHU1MmMxXHU1MzBkXHU1MzU3XHU1MzdiXHU1MzlhXHU1M2RiXHU1NGFjXHU1NGMwXHU1NGE4XHU1NGNlXHU1NGM5XHU1NGI4XHU1NGE2XHU1NGIzXHU1NGM3XHU1NGMyXHU1''@;'; put 'put ''NGJkXHU1NGFhXHU1NGMxIl0sWyJhYmExIiwiXHU1NGM0XHU1NGM4XHU1NGFmXHU1NGFiXHU1NGIxXHU1NGJiXHU1NGE5XHU1NGE3XHU1NGJmXHU1NmZmXHU1NzgyXHU1NzhiXHU1N2EwXHU1N2EzXHU1N2EyXHU1N2NlXHU1N2FlXHU1NzkzXHU1OTU1XHU1OTUxXHU1OTRmXHU1OTRlXHU1OTUw''@;'; put 'put ''XHU1OWRjXHU1OWQ4XHU1OWZmXHU1OWUzXHU1OWU4XHU1YTAzXHU1OWU1XHU1OWVhXHU1OWRhXHU1OWU2XHU1YTAxXHU1OWZiXHU1YjY5XHU1YmEzXHU1YmE2XHU1YmE0XHU1YmEyXHU1YmE1XHU1YzAxXHU1YzRlXHU1YzRmXHU1YzRkXHU1YzRiXHU1Y2Q5XHU1Y2QyXHU1ZGY3XHU1ZTFkXHU1''@;'; put 'put ''ZTI1XHU1ZTFmXHU1ZTdkXHU1ZWEwXHU1ZWE2XHU1ZWZhXHU1ZjA4XHU1ZjJkXHU1ZjY1XHU1Zjg4XHU1Zjg1XHU1ZjhhXHU1ZjhiXHU1Zjg3XHU1ZjhjXHU1Zjg5XHU2MDEyXHU2MDFkXHU2MDIwXHU2MDI1XHU2MDBlXHU2MDI4XHU2MDRkXHU2MDcwXHU2MDY4XHU2MDYyXHU2MDQ2XHU2MDQz''@;'; put 'put ''XHU2MDZjXHU2MDZiXHU2MDZhXHU2MDY0XHU2MjQxXHU2MmRjXHU2MzE2XHU2MzA5XHU2MmZjXHU2MmVkXHU2MzAxXHU2MmVlXHU2MmZkXHU2MzA3XHU2MmYxXHU2MmY3Il0sWyJhYzQwIiwiXHU2MmVmXHU2MmVjXHU2MmZlXHU2MmY0XHU2MzExXHU2MzAyXHU2NTNmXHU2NTQ1XHU2NWFiXHU2''@;'; put 'put ''NWJkXHU2NWUyXHU2NjI1XHU2NjJkXHU2NjIwXHU2NjI3XHU2NjJmXHU2NjFmXHU2NjI4XHU2NjMxXHU2NjI0XHU2NmY3XHU2N2ZmXHU2N2QzXHU2N2YxXHU2N2Q0XHU2N2QwXHU2N2VjXHU2N2I2XHU2N2FmXHU2N2Y1XHU2N2U5XHU2N2VmXHU2N2M0XHU2N2QxXHU2N2I0XHU2N2RhXHU2N2U1''@;'; put 'put ''XHU2N2I4XHU2N2NmXHU2N2RlXHU2N2YzXHU2N2IwXHU2N2Q5XHU2N2UyXHU2N2RkXHU2N2QyXHU2YjZhXHU2YjgzXHU2Yjg2XHU2YmI1XHU2YmQyXHU2YmQ3XHU2YzFmXHU2Y2M5XHU2ZDBiXHU2ZDMyXHU2ZDJhXHU2ZDQxXHU2ZDI1XHU2ZDBjXHU2ZDMxXHU2ZDFlXHU2ZDE3Il0sWyJhY2Ex''@;'; put 'put ''IiwiXHU2ZDNiXHU2ZDNkXHU2ZDNlXHU2ZDM2XHU2ZDFiXHU2Y2Y1XHU2ZDM5XHU2ZDI3XHU2ZDM4XHU2ZDI5XHU2ZDJlXHU2ZDM1XHU2ZDBlXHU2ZDJiXHU3MGFiXHU3MGJhXHU3MGIzXHU3MGFjXHU3MGFmXHU3MGFkXHU3MGI4XHU3MGFlXHU3MGE0XHU3MjMwXHU3MjcyXHU3MjZmXHU3Mjc0''@;'; put 'put ''XHU3MmU5XHU3MmUwXHU3MmUxXHU3M2I3XHU3M2NhXHU3M2JiXHU3M2IyXHU3M2NkXHU3M2MwXHU3M2IzXHU3NTFhXHU3NTJkXHU3NTRmXHU3NTRjXHU3NTRlXHU3NTRiXHU3NWFiXHU3NWE0XHU3NWE1XHU3NWEyXHU3NWEzXHU3Njc4XHU3Njg2XHU3Njg3XHU3Njg4XHU3NmM4XHU3NmM2XHU3''@;'; put 'put ''NmMzXHU3NmM1XHU3NzAxXHU3NmY5XHU3NmY4XHU3NzA5XHU3NzBiXHU3NmZlXHU3NmZjXHU3NzA3XHU3N2RjXHU3ODAyXHU3ODE0XHU3ODBjXHU3ODBkXHU3OTQ2XHU3OTQ5XHU3OTQ4XHU3OTQ3XHU3OWI5XHU3OWJhXHU3OWQxXHU3OWQyXHU3OWNiXHU3YTdmXHU3YTgxXHU3YWZmXHU3YWZk''@;'; put 'put ''XHU3YzdkXHU3ZDAyXHU3ZDA1XHU3ZDAwXHU3ZDA5XHU3ZDA3XHU3ZDA0XHU3ZDA2XHU3ZjM4XHU3ZjhlXHU3ZmJmXHU4MDA0Il0sWyJhZDQwIiwiXHU4MDEwXHU4MDBkXHU4MDExXHU4MDM2XHU4MGQ2XHU4MGU1XHU4MGRhXHU4MGMzXHU4MGM0XHU4MGNjXHU4MGUxXHU4MGRiXHU4MGNlXHU4''@;'; put 'put ''MGRlXHU4MGU0XHU4MGRkXHU4MWY0XHU4MjIyXHU4MmU3XHU4MzAzXHU4MzA1XHU4MmUzXHU4MmRiXHU4MmU2XHU4MzA0XHU4MmU1XHU4MzAyXHU4MzA5XHU4MmQyXHU4MmQ3XHU4MmYxXHU4MzAxXHU4MmRjXHU4MmQ0XHU4MmQxXHU4MmRlXHU4MmQzXHU4MmRmXHU4MmVmXHU4MzA2XHU4NjUw''@;'; put 'put ''XHU4Njc5XHU4NjdiXHU4NjdhXHU4ODRkXHU4ODZiXHU4OTgxXHU4OWQ0XHU4YTA4XHU4YTAyXHU4YTAzXHU4YzllXHU4Y2EwXHU4ZDc0XHU4ZDczXHU4ZGI0XHU4ZWNkXHU4ZWNjXHU4ZmYwXHU4ZmU2XHU4ZmUyXHU4ZmVhXHU4ZmU1Il0sWyJhZGExIiwiXHU4ZmVkXHU4ZmViXHU4ZmU0XHU4''@;'; put 'put ''ZmU4XHU5MGNhXHU5MGNlXHU5MGMxXHU5MGMzXHU5MTRiXHU5MTRhXHU5MWNkXHU5NTgyXHU5NjUwXHU5NjRiXHU5NjRjXHU5NjRkXHU5NzYyXHU5NzY5XHU5N2NiXHU5N2VkXHU5N2YzXHU5ODAxXHU5OGE4XHU5OGRiXHU5OGRmXHU5OTk2XHU5OTk5XHU0ZTU4XHU0ZWIzXHU1MDBjXHU1MDBk''@;'; put 'put ''XHU1MDIzXHU0ZmVmXHU1MDI2XHU1MDI1XHU0ZmY4XHU1MDI5XHU1MDE2XHU1MDA2XHU1MDNjXHU1MDFmXHU1MDFhXHU1MDEyXHU1MDExXHU0ZmZhXHU1MDAwXHU1MDE0XHU1MDI4XHU0ZmYxXHU1MDIxXHU1MDBiXHU1MDE5XHU1MDE4XHU0ZmYzXHU0ZmVlXHU1MDJkXHU1MDJhXHU0ZmZlXHU1''@;'; put 'put ''MDJiXHU1MDA5XHU1MTdjXHU1MWE0XHU1MWE1XHU1MWEyXHU1MWNkXHU1MWNjXHU1MWM2XHU1MWNiXHU1MjU2XHU1MjVjXHU1MjU0XHU1MjViXHU1MjVkXHU1MzJhXHU1MzdmXHU1MzlmXHU1MzlkXHU1M2RmXHU1NGU4XHU1NTEwXHU1NTAxXHU1NTM3XHU1NGZjXHU1NGU1XHU1NGYyXHU1NTA2''@;'; put 'put ''XHU1NGZhXHU1NTE0XHU1NGU5XHU1NGVkXHU1NGUxXHU1NTA5XHU1NGVlXHU1NGVhIl0sWyJhZTQwIiwiXHU1NGU2XHU1NTI3XHU1NTA3XHU1NGZkXHU1NTBmXHU1NzAzXHU1NzA0XHU1N2MyXHU1N2Q0XHU1N2NiXHU1N2MzXHU1ODA5XHU1OTBmXHU1OTU3XHU1OTU4XHU1OTVhXHU1YTExXHU1''@;'; put 'put ''YTE4XHU1YTFjXHU1YTFmXHU1YTFiXHU1YTEzXHU1OWVjXHU1YTIwXHU1YTIzXHU1YTI5XHU1YTI1XHU1YTBjXHU1YTA5XHU1YjZiXHU1YzU4XHU1YmIwXHU1YmIzXHU1YmI2XHU1YmI0XHU1YmFlXHU1YmI1XHU1YmI5XHU1YmI4XHU1YzA0XHU1YzUxXHU1YzU1XHU1YzUwXHU1Y2VkXHU1Y2Zk''@;'; put 'put ''XHU1Y2ZiXHU1Y2VhXHU1Y2U4XHU1Y2YwXHU1Y2Y2XHU1ZDAxXHU1Y2Y0XHU1ZGVlXHU1ZTJkXHU1ZTJiXHU1ZWFiXHU1ZWFkXHU1ZWE3XHU1ZjMxXHU1ZjkyXHU1ZjkxXHU1ZjkwXHU2MDU5Il0sWyJhZWExIiwiXHU2MDYzXHU2MDY1XHU2MDUwXHU2MDU1XHU2MDZkXHU2MDY5XHU2MDZmXHU2''@;'; put 'put ''MDg0XHU2MDlmXHU2MDlhXHU2MDhkXHU2MDk0XHU2MDhjXHU2MDg1XHU2MDk2XHU2MjQ3XHU2MmYzXHU2MzA4XHU2MmZmXHU2MzRlXHU2MzNlXHU2MzJmXHU2MzU1XHU2MzQyXHU2MzQ2XHU2MzRmXHU2MzQ5XHU2MzNhXHU2MzUwXHU2MzNkXHU2MzJhXHU2MzJiXHU2MzI4XHU2MzRkXHU2MzRj''@;'; put 'put ''XHU2NTQ4XHU2NTQ5XHU2NTk5XHU2NWMxXHU2NWM1XHU2NjQyXHU2NjQ5XHU2NjRmXHU2NjQzXHU2NjUyXHU2NjRjXHU2NjQ1XHU2NjQxXHU2NmY4XHU2NzE0XHU2NzE1XHU2NzE3XHU2ODIxXHU2ODM4XHU2ODQ4XHU2ODQ2XHU2ODUzXHU2ODM5XHU2ODQyXHU2ODU0XHU2ODI5XHU2OGIzXHU2''@;'; put 'put ''ODE3XHU2ODRjXHU2ODUxXHU2ODNkXHU2N2Y0XHU2ODUwXHU2ODQwXHU2ODNjXHU2ODQzXHU2ODJhXHU2ODQ1XHU2ODEzXHU2ODE4XHU2ODQxXHU2YjhhXHU2Yjg5XHU2YmI3XHU2YzIzXHU2YzI3XHU2YzI4XHU2YzI2XHU2YzI0XHU2Y2YwXHU2ZDZhXHU2ZDk1XHU2ZDg4XHU2ZDg3XHU2ZDY2''@;'; put 'put ''XHU2ZDc4XHU2ZDc3XHU2ZDU5XHU2ZDkzIl0sWyJhZjQwIiwiXHU2ZDZjXHU2ZDg5XHU2ZDZlXHU2ZDVhXHU2ZDc0XHU2ZDY5XHU2ZDhjXHU2ZDhhXHU2ZDc5XHU2ZDg1XHU2ZDY1XHU2ZDk0XHU3MGNhXHU3MGQ4XHU3MGU0XHU3MGQ5XHU3MGM4XHU3MGNmXHU3MjM5XHU3Mjc5XHU3MmZjXHU3''@;'; put 'put ''MmY5XHU3MmZkXHU3MmY4XHU3MmY3XHU3Mzg2XHU3M2VkXHU3NDA5XHU3M2VlXHU3M2UwXHU3M2VhXHU3M2RlXHU3NTU0XHU3NTVkXHU3NTVjXHU3NTVhXHU3NTU5XHU3NWJlXHU3NWM1XHU3NWM3XHU3NWIyXHU3NWIzXHU3NWJkXHU3NWJjXHU3NWI5XHU3NWMyXHU3NWI4XHU3NjhiXHU3NmIw''@;'; put 'put ''XHU3NmNhXHU3NmNkXHU3NmNlXHU3NzI5XHU3NzFmXHU3NzIwXHU3NzI4XHU3N2U5XHU3ODMwXHU3ODI3XHU3ODM4XHU3ODFkXHU3ODM0XHU3ODM3Il0sWyJhZmExIiwiXHU3ODI1XHU3ODJkXHU3ODIwXHU3ODFmXHU3ODMyXHU3OTU1XHU3OTUwXHU3OTYwXHU3OTVmXHU3OTU2XHU3OTVlXHU3''@;'; put 'put ''OTVkXHU3OTU3XHU3OTVhXHU3OWU0XHU3OWUzXHU3OWU3XHU3OWRmXHU3OWU2XHU3OWU5XHU3OWQ4XHU3YTg0XHU3YTg4XHU3YWQ5XHU3YjA2XHU3YjExXHU3Yzg5XHU3ZDIxXHU3ZDE3XHU3ZDBiXHU3ZDBhXHU3ZDIwXHU3ZDIyXHU3ZDE0XHU3ZDEwXHU3ZDE1XHU3ZDFhXHU3ZDFjXHU3ZDBk''@;'; put 'put ''XHU3ZDE5XHU3ZDFiXHU3ZjNhXHU3ZjVmXHU3Zjk0XHU3ZmM1XHU3ZmMxXHU4MDA2XHU4MDE4XHU4MDE1XHU4MDE5XHU4MDE3XHU4MDNkXHU4MDNmXHU4MGYxXHU4MTAyXHU4MGYwXHU4MTA1XHU4MGVkXHU4MGY0XHU4MTA2XHU4MGY4XHU4MGYzXHU4MTA4XHU4MGZkXHU4MTBhXHU4MGZjXHU4''@;'; put 'put ''MGVmXHU4MWVkXHU4MWVjXHU4MjAwXHU4MjEwXHU4MjJhXHU4MjJiXHU4MjI4XHU4MjJjXHU4MmJiXHU4MzJiXHU4MzUyXHU4MzU0XHU4MzRhXHU4MzM4XHU4MzUwXHU4MzQ5XHU4MzM1XHU4MzM0XHU4MzRmXHU4MzMyXHU4MzM5XHU4MzM2XHU4MzE3XHU4MzQwXHU4MzMxXHU4MzI4XHU4MzQz''@;'; put 'put ''Il0sWyJiMDQwIiwiXHU4NjU0XHU4NjhhXHU4NmFhXHU4NjkzXHU4NmE0XHU4NmE5XHU4NjhjXHU4NmEzXHU4NjljXHU4ODcwXHU4ODc3XHU4ODgxXHU4ODgyXHU4ODdkXHU4ODc5XHU4YTE4XHU4YTEwXHU4YTBlXHU4YTBjXHU4YTE1XHU4YTBhXHU4YTE3XHU4YTEzXHU4YTE2XHU4YTBmXHU4''@;'; put 'put ''YTExXHU4YzQ4XHU4YzdhXHU4Yzc5XHU4Y2ExXHU4Y2EyXHU4ZDc3XHU4ZWFjXHU4ZWQyXHU4ZWQ0XHU4ZWNmXHU4ZmIxXHU5MDAxXHU5MDA2XHU4ZmY3XHU5MDAwXHU4ZmZhXHU4ZmY0XHU5MDAzXHU4ZmZkXHU5MDA1XHU4ZmY4XHU5MDk1XHU5MGUxXHU5MGRkXHU5MGUyXHU5MTUyXHU5MTRk''@;'; put 'put ''XHU5MTRjXHU5MWQ4XHU5MWRkXHU5MWQ3XHU5MWRjXHU5MWQ5XHU5NTgzXHU5NjYyXHU5NjYzXHU5NjYxIl0sWyJiMGExIiwiXHU5NjViXHU5NjVkXHU5NjY0XHU5NjU4XHU5NjVlXHU5NmJiXHU5OGUyXHU5OWFjXHU5YWE4XHU5YWQ4XHU5YjI1XHU5YjMyXHU5YjNjXHU0ZTdlXHU1MDdhXHU1''@;'; put 'put ''MDdkXHU1MDVjXHU1MDQ3XHU1MDQzXHU1MDRjXHU1MDVhXHU1MDQ5XHU1MDY1XHU1MDc2XHU1MDRlXHU1MDU1XHU1MDc1XHU1MDc0XHU1MDc3XHU1MDRmXHU1MDBmXHU1MDZmXHU1MDZkXHU1MTVjXHU1MTk1XHU1MWYwXHU1MjZhXHU1MjZmXHU1MmQyXHU1MmQ5XHU1MmQ4XHU1MmQ1XHU1MzEw''@;'; put 'put ''XHU1MzBmXHU1MzE5XHU1MzNmXHU1MzQwXHU1MzNlXHU1M2MzXHU2NmZjXHU1NTQ2XHU1NTZhXHU1NTY2XHU1NTQ0XHU1NTVlXHU1NTYxXHU1NTQzXHU1NTRhXHU1NTMxXHU1NTU2XHU1NTRmXHU1NTU1XHU1NTJmXHU1NTY0XHU1NTM4XHU1NTJlXHU1NTVjXHU1NTJjXHU1NTYzXHU1NTMzXHU1''@;'; put 'put ''NTQxXHU1NTU3XHU1NzA4XHU1NzBiXHU1NzA5XHU1N2RmXHU1ODA1XHU1ODBhXHU1ODA2XHU1N2UwXHU1N2U0XHU1N2ZhXHU1ODAyXHU1ODM1XHU1N2Y3XHU1N2Y5XHU1OTIwXHU1OTYyXHU1YTM2XHU1YTQxXHU1YTQ5XHU1YTY2XHU1YTZhXHU1YTQwIl0sWyJiMTQwIiwiXHU1YTNjXHU1YTYy''@;'; put 'put ''XHU1YTVhXHU1YTQ2XHU1YTRhXHU1YjcwXHU1YmM3XHU1YmM1XHU1YmM0XHU1YmMyXHU1YmJmXHU1YmM2XHU1YzA5XHU1YzA4XHU1YzA3XHU1YzYwXHU1YzVjXHU1YzVkXHU1ZDA3XHU1ZDA2XHU1ZDBlXHU1ZDFiXHU1ZDE2XHU1ZDIyXHU1ZDExXHU1ZDI5XHU1ZDE0XHU1ZDE5XHU1ZDI0XHU1''@;'; put 'put ''ZDI3XHU1ZDE3XHU1ZGUyXHU1ZTM4XHU1ZTM2XHU1ZTMzXHU1ZTM3XHU1ZWI3XHU1ZWI4XHU1ZWI2XHU1ZWI1XHU1ZWJlXHU1ZjM1XHU1ZjM3XHU1ZjU3XHU1ZjZjXHU1ZjY5XHU1ZjZiXHU1Zjk3XHU1Zjk5XHU1ZjllXHU1Zjk4XHU1ZmExXHU1ZmEwXHU1ZjljXHU2MDdmXHU2MGEzXHU2MDg5''@;'; put 'put ''XHU2MGEwXHU2MGE4XHU2MGNiXHU2MGI0XHU2MGU2XHU2MGJkIl0sWyJiMWExIiwiXHU2MGM1XHU2MGJiXHU2MGI1XHU2MGRjXHU2MGJjXHU2MGQ4XHU2MGQ1XHU2MGM2XHU2MGRmXHU2MGI4XHU2MGRhXHU2MGM3XHU2MjFhXHU2MjFiXHU2MjQ4XHU2M2EwXHU2M2E3XHU2MzcyXHU2Mzk2XHU2''@;'; put 'put ''M2EyXHU2M2E1XHU2Mzc3XHU2MzY3XHU2Mzk4XHU2M2FhXHU2MzcxXHU2M2E5XHU2Mzg5XHU2MzgzXHU2MzliXHU2MzZiXHU2M2E4XHU2Mzg0XHU2Mzg4XHU2Mzk5XHU2M2ExXHU2M2FjXHU2MzkyXHU2MzhmXHU2MzgwXHU2MzdiXHU2MzY5XHU2MzY4XHU2MzdhXHU2NTVkXHU2NTU2XHU2NTUx''@;'; put 'put ''XHU2NTU5XHU2NTU3XHU1NTVmXHU2NTRmXHU2NTU4XHU2NTU1XHU2NTU0XHU2NTljXHU2NTliXHU2NWFjXHU2NWNmXHU2NWNiXHU2NWNjXHU2NWNlXHU2NjVkXHU2NjVhXHU2NjY0XHU2NjY4XHU2NjY2XHU2NjVlXHU2NmY5XHU1MmQ3XHU2NzFiXHU2ODgxXHU2OGFmXHU2OGEyXHU2ODkzXHU2''@;'; put 'put ''OGI1XHU2ODdmXHU2ODc2XHU2OGIxXHU2OGE3XHU2ODk3XHU2OGIwXHU2ODgzXHU2OGM0XHU2OGFkXHU2ODg2XHU2ODg1XHU2ODk0XHU2ODlkXHU2OGE4XHU2ODlmXHU2OGExXHU2ODgyXHU2YjMyXHU2YmJhIl0sWyJiMjQwIiwiXHU2YmViXHU2YmVjXHU2YzJiXHU2ZDhlXHU2ZGJjXHU2ZGYz''@;'; put 'put ''XHU2ZGQ5XHU2ZGIyXHU2ZGUxXHU2ZGNjXHU2ZGU0XHU2ZGZiXHU2ZGZhXHU2ZTA1XHU2ZGM3XHU2ZGNiXHU2ZGFmXHU2ZGQxXHU2ZGFlXHU2ZGRlXHU2ZGY5XHU2ZGI4XHU2ZGY3XHU2ZGY1XHU2ZGM1XHU2ZGQyXHU2ZTFhXHU2ZGI1XHU2ZGRhXHU2ZGViXHU2ZGQ4XHU2ZGVhXHU2ZGYxXHU2''@;'; put 'put ''ZGVlXHU2ZGU4XHU2ZGM2XHU2ZGM0XHU2ZGFhXHU2ZGVjXHU2ZGJmXHU2ZGU2XHU3MGY5XHU3MTA5XHU3MTBhXHU3MGZkXHU3MGVmXHU3MjNkXHU3MjdkXHU3MjgxXHU3MzFjXHU3MzFiXHU3MzE2XHU3MzEzXHU3MzE5XHU3Mzg3XHU3NDA1XHU3NDBhXHU3NDAzXHU3NDA2XHU3M2ZlXHU3NDBk''@;'; put 'put ''XHU3NGUwXHU3NGY2Il0sWyJiMmExIiwiXHU3NGY3XHU3NTFjXHU3NTIyXHU3NTY1XHU3NTY2XHU3NTYyXHU3NTcwXHU3NThmXHU3NWQ0XHU3NWQ1XHU3NWI1XHU3NWNhXHU3NWNkXHU3NjhlXHU3NmQ0XHU3NmQyXHU3NmRiXHU3NzM3XHU3NzNlXHU3NzNjXHU3NzM2XHU3NzM4XHU3NzNhXHU3''@;'; put 'put ''ODZiXHU3ODQzXHU3ODRlXHU3OTY1XHU3OTY4XHU3OTZkXHU3OWZiXHU3YTkyXHU3YTk1XHU3YjIwXHU3YjI4XHU3YjFiXHU3YjJjXHU3YjI2XHU3YjE5XHU3YjFlXHU3YjJlXHU3YzkyXHU3Yzk3XHU3Yzk1XHU3ZDQ2XHU3ZDQzXHU3ZDcxXHU3ZDJlXHU3ZDM5XHU3ZDNjXHU3ZDQwXHU3ZDMw''@;'; put 'put ''XHU3ZDMzXHU3ZDQ0XHU3ZDJmXHU3ZDQyXHU3ZDMyXHU3ZDMxXHU3ZjNkXHU3ZjllXHU3ZjlhXHU3ZmNjXHU3ZmNlXHU3ZmQyXHU4MDFjXHU4MDRhXHU4MDQ2XHU4MTJmXHU4MTE2XHU4MTIzXHU4MTJiXHU4MTI5XHU4MTMwXHU4MTI0XHU4MjAyXHU4MjM1XHU4MjM3XHU4MjM2XHU4MjM5XHU4''@;'; put 'put ''MzhlXHU4MzllXHU4Mzk4XHU4Mzc4XHU4M2EyXHU4Mzk2XHU4M2JkXHU4M2FiXHU4MzkyXHU4MzhhXHU4MzkzXHU4Mzg5XHU4M2EwXHU4Mzc3XHU4MzdiXHU4MzdjIl0sWyJiMzQwIiwiXHU4Mzg2XHU4M2E3XHU4NjU1XHU1ZjZhXHU4NmM3XHU4NmMwXHU4NmI2XHU4NmM0XHU4NmI1XHU4NmM2''@;'; put 'put ''XHU4NmNiXHU4NmIxXHU4NmFmXHU4NmM5XHU4ODUzXHU4ODllXHU4ODg4XHU4OGFiXHU4ODkyXHU4ODk2XHU4ODhkXHU4ODhiXHU4OTkzXHU4OThmXHU4YTJhXHU4YTFkXHU4YTIzXHU4YTI1XHU4YTMxXHU4YTJkXHU4YTFmXHU4YTFiXHU4YTIyXHU4YzQ5XHU4YzVhXHU4Y2E5XHU4Y2FjXHU4''@;'; put 'put ''Y2FiXHU4Y2E4XHU4Y2FhXHU4Y2E3XHU4ZDY3XHU4ZDY2XHU4ZGJlXHU4ZGJhXHU4ZWRiXHU4ZWRmXHU5MDE5XHU5MDBkXHU5MDFhXHU5MDE3XHU5MDIzXHU5MDFmXHU5MDFkXHU5MDEwXHU5MDE1XHU5MDFlXHU5MDIwXHU5MDBmXHU5MDIyXHU5MDE2XHU5MDFiXHU5MDE0Il0sWyJiM2ExIiwi''@;'; put 'put ''XHU5MGU4XHU5MGVkXHU5MGZkXHU5MTU3XHU5MWNlXHU5MWY1XHU5MWU2XHU5MWUzXHU5MWU3XHU5MWVkXHU5MWU5XHU5NTg5XHU5NjZhXHU5Njc1XHU5NjczXHU5Njc4XHU5NjcwXHU5Njc0XHU5Njc2XHU5Njc3XHU5NjZjXHU5NmMwXHU5NmVhXHU5NmU5XHU3YWUwXHU3YWRmXHU5ODAyXHU5''@;'; put 'put ''ODAzXHU5YjVhXHU5Y2U1XHU5ZTc1XHU5ZTdmXHU5ZWE1XHU5ZWJiXHU1MGEyXHU1MDhkXHU1MDg1XHU1MDk5XHU1MDkxXHU1MDgwXHU1MDk2XHU1MDk4XHU1MDlhXHU2NzAwXHU1MWYxXHU1MjcyXHU1Mjc0XHU1Mjc1XHU1MjY5XHU1MmRlXHU1MmRkXHU1MmRiXHU1MzVhXHU1M2E1XHU1NTdi''@;'; put 'put ''XHU1NTgwXHU1NWE3XHU1NTdjXHU1NThhXHU1NTlkXHU1NTk4XHU1NTgyXHU1NTljXHU1NWFhXHU1NTk0XHU1NTg3XHU1NThiXHU1NTgzXHU1NWIzXHU1NWFlXHU1NTlmXHU1NTNlXHU1NWIyXHU1NTlhXHU1NWJiXHU1NWFjXHU1NWIxXHU1NTdlXHU1NTg5XHU1NWFiXHU1NTk5XHU1NzBkXHU1''@;'; put 'put ''ODJmXHU1ODJhXHU1ODM0XHU1ODI0XHU1ODMwXHU1ODMxXHU1ODIxXHU1ODFkXHU1ODIwXHU1OGY5XHU1OGZhXHU1OTYwIl0sWyJiNDQwIiwiXHU1YTc3XHU1YTlhXHU1YTdmXHU1YTkyXHU1YTliXHU1YWE3XHU1YjczXHU1YjcxXHU1YmQyXHU1YmNjXHU1YmQzXHU1YmQwXHU1YzBhXHU1YzBi''@;'; put 'put ''XHU1YzMxXHU1ZDRjXHU1ZDUwXHU1ZDM0XHU1ZDQ3XHU1ZGZkXHU1ZTQ1XHU1ZTNkXHU1ZTQwXHU1ZTQzXHU1ZTdlXHU1ZWNhXHU1ZWMxXHU1ZWMyXHU1ZWM0XHU1ZjNjXHU1ZjZkXHU1ZmE5XHU1ZmFhXHU1ZmE4XHU2MGQxXHU2MGUxXHU2MGIyXHU2MGI2XHU2MGUwXHU2MTFjXHU2MTIzXHU2''@;'; put 'put ''MGZhXHU2MTE1XHU2MGYwXHU2MGZiXHU2MGY0XHU2MTY4XHU2MGYxXHU2MTBlXHU2MGY2XHU2MTA5XHU2MTAwXHU2MTEyXHU2MjFmXHU2MjQ5XHU2M2EzXHU2MzhjXHU2M2NmXHU2M2MwXHU2M2U5XHU2M2M5XHU2M2M2XHU2M2NkIl0sWyJiNGExIiwiXHU2M2QyXHU2M2UzXHU2M2QwXHU2M2Ux''@;'; put 'put ''XHU2M2Q2XHU2M2VkXHU2M2VlXHU2Mzc2XHU2M2Y0XHU2M2VhXHU2M2RiXHU2NDUyXHU2M2RhXHU2M2Y5XHU2NTVlXHU2NTY2XHU2NTYyXHU2NTYzXHU2NTkxXHU2NTkwXHU2NWFmXHU2NjZlXHU2NjcwXHU2Njc0XHU2Njc2XHU2NjZmXHU2NjkxXHU2NjdhXHU2NjdlXHU2Njc3XHU2NmZlXHU2''@;'; put 'put ''NmZmXHU2NzFmXHU2NzFkXHU2OGZhXHU2OGQ1XHU2OGUwXHU2OGQ4XHU2OGQ3XHU2OTA1XHU2OGRmXHU2OGY1XHU2OGVlXHU2OGU3XHU2OGY5XHU2OGQyXHU2OGYyXHU2OGUzXHU2OGNiXHU2OGNkXHU2OTBkXHU2OTEyXHU2OTBlXHU2OGM5XHU2OGRhXHU2OTZlXHU2OGZiXHU2YjNlXHU2YjNh''@;'; put 'put ''XHU2YjNkXHU2Yjk4XHU2Yjk2XHU2YmJjXHU2YmVmXHU2YzJlXHU2YzJmXHU2YzJjXHU2ZTJmXHU2ZTM4XHU2ZTU0XHU2ZTIxXHU2ZTMyXHU2ZTY3XHU2ZTRhXHU2ZTIwXHU2ZTI1XHU2ZTIzXHU2ZTFiXHU2ZTViXHU2ZTU4XHU2ZTI0XHU2ZTU2XHU2ZTZlXHU2ZTJkXHU2ZTI2XHU2ZTZmXHU2''@;'; put 'put ''ZTM0XHU2ZTRkXHU2ZTNhXHU2ZTJjXHU2ZTQzXHU2ZTFkXHU2ZTNlXHU2ZWNiIl0sWyJiNTQwIiwiXHU2ZTg5XHU2ZTE5XHU2ZTRlXHU2ZTYzXHU2ZTQ0XHU2ZTcyXHU2ZTY5XHU2ZTVmXHU3MTE5XHU3MTFhXHU3MTI2XHU3MTMwXHU3MTIxXHU3MTM2XHU3MTZlXHU3MTFjXHU3MjRjXHU3Mjg0''@;'; put 'put ''XHU3MjgwXHU3MzM2XHU3MzI1XHU3MzM0XHU3MzI5XHU3NDNhXHU3NDJhXHU3NDMzXHU3NDIyXHU3NDI1XHU3NDM1XHU3NDM2XHU3NDM0XHU3NDJmXHU3NDFiXHU3NDI2XHU3NDI4XHU3NTI1XHU3NTI2XHU3NTZiXHU3NTZhXHU3NWUyXHU3NWRiXHU3NWUzXHU3NWQ5XHU3NWQ4XHU3NWRlXHU3''@;'; put 'put ''NWUwXHU3NjdiXHU3NjdjXHU3Njk2XHU3NjkzXHU3NmI0XHU3NmRjXHU3NzRmXHU3N2VkXHU3ODVkXHU3ODZjXHU3ODZmXHU3YTBkXHU3YTA4XHU3YTBiXHU3YTA1XHU3YTAwXHU3YTk4Il0sWyJiNWExIiwiXHU3YTk3XHU3YTk2XHU3YWU1XHU3YWUzXHU3YjQ5XHU3YjU2XHU3YjQ2XHU3YjUw''@;'; put 'put ''XHU3YjUyXHU3YjU0XHU3YjRkXHU3YjRiXHU3YjRmXHU3YjUxXHU3YzlmXHU3Y2E1XHU3ZDVlXHU3ZDUwXHU3ZDY4XHU3ZDU1XHU3ZDJiXHU3ZDZlXHU3ZDcyXHU3ZDYxXHU3ZDY2XHU3ZDYyXHU3ZDcwXHU3ZDczXHU1NTg0XHU3ZmQ0XHU3ZmQ1XHU4MDBiXHU4MDUyXHU4MDg1XHU4MTU1XHU4''@;'; put 'put ''MTU0XHU4MTRiXHU4MTUxXHU4MTRlXHU4MTM5XHU4MTQ2XHU4MTNlXHU4MTRjXHU4MTUzXHU4MTc0XHU4MjEyXHU4MjFjXHU4M2U5XHU4NDAzXHU4M2Y4XHU4NDBkXHU4M2UwXHU4M2M1XHU4NDBiXHU4M2MxXHU4M2VmXHU4M2YxXHU4M2Y0XHU4NDU3XHU4NDBhXHU4M2YwXHU4NDBjXHU4M2Nj''@;'; put 'put ''XHU4M2ZkXHU4M2YyXHU4M2NhXHU4NDM4XHU4NDBlXHU4NDA0XHU4M2RjXHU4NDA3XHU4M2Q0XHU4M2RmXHU4NjViXHU4NmRmXHU4NmQ5XHU4NmVkXHU4NmQ0XHU4NmRiXHU4NmU0XHU4NmQwXHU4NmRlXHU4ODU3XHU4OGMxXHU4OGMyXHU4OGIxXHU4OTgzXHU4OTk2XHU4YTNiXHU4YTYwXHU4''@;'; put 'put ''YTU1XHU4YTVlXHU4YTNjXHU4YTQxIl0sWyJiNjQwIiwiXHU4YTU0XHU4YTViXHU4YTUwXHU4YTQ2XHU4YTM0XHU4YTNhXHU4YTM2XHU4YTU2XHU4YzYxXHU4YzgyXHU4Y2FmXHU4Y2JjXHU4Y2IzXHU4Y2JkXHU4Y2MxXHU4Y2JiXHU4Y2MwXHU4Y2I0XHU4Y2I3XHU4Y2I2XHU4Y2JmXHU4Y2I4''@;'; put 'put ''XHU4ZDhhXHU4ZDg1XHU4ZDgxXHU4ZGNlXHU4ZGRkXHU4ZGNiXHU4ZGRhXHU4ZGQxXHU4ZGNjXHU4ZGRiXHU4ZGM2XHU4ZWZiXHU4ZWY4XHU4ZWZjXHU4ZjljXHU5MDJlXHU5MDM1XHU5MDMxXHU5MDM4XHU5MDMyXHU5MDM2XHU5MTAyXHU5MGY1XHU5MTA5XHU5MGZlXHU5MTYzXHU5MTY1XHU5''@;'; put 'put ''MWNmXHU5MjE0XHU5MjE1XHU5MjIzXHU5MjA5XHU5MjFlXHU5MjBkXHU5MjEwXHU5MjA3XHU5MjExXHU5NTk0XHU5NThmXHU5NThiXHU5NTkxIl0sWyJiNmExIiwiXHU5NTkzXHU5NTkyXHU5NThlXHU5NjhhXHU5NjhlXHU5NjhiXHU5NjdkXHU5Njg1XHU5Njg2XHU5NjhkXHU5NjcyXHU5Njg0''@;'; put 'put ''XHU5NmMxXHU5NmM1XHU5NmM0XHU5NmM2XHU5NmM3XHU5NmVmXHU5NmYyXHU5N2NjXHU5ODA1XHU5ODA2XHU5ODA4XHU5OGU3XHU5OGVhXHU5OGVmXHU5OGU5XHU5OGYyXHU5OGVkXHU5OWFlXHU5OWFkXHU5ZWMzXHU5ZWNkXHU5ZWQxXHU0ZTgyXHU1MGFkXHU1MGI1XHU1MGIyXHU1MGIzXHU1''@;'; put 'put ''MGM1XHU1MGJlXHU1MGFjXHU1MGI3XHU1MGJiXHU1MGFmXHU1MGM3XHU1MjdmXHU1Mjc3XHU1MjdkXHU1MmRmXHU1MmU2XHU1MmU0XHU1MmUyXHU1MmUzXHU1MzJmXHU1NWRmXHU1NWU4XHU1NWQzXHU1NWU2XHU1NWNlXHU1NWRjXHU1NWM3XHU1NWQxXHU1NWUzXHU1NWU0XHU1NWVmXHU1NWRh''@;'; put 'put ''XHU1NWUxXHU1NWM1XHU1NWM2XHU1NWU1XHU1NWM5XHU1NzEyXHU1NzEzXHU1ODVlXHU1ODUxXHU1ODU4XHU1ODU3XHU1ODVhXHU1ODU0XHU1ODZiXHU1ODRjXHU1ODZkXHU1ODRhXHU1ODYyXHU1ODUyXHU1ODRiXHU1OTY3XHU1YWMxXHU1YWM5XHU1YWNjXHU1YWJlXHU1YWJkXHU1YWJjIl0s''@;'; put 'put ''WyJiNzQwIiwiXHU1YWIzXHU1YWMyXHU1YWIyXHU1ZDY5XHU1ZDZmXHU1ZTRjXHU1ZTc5XHU1ZWM5XHU1ZWM4XHU1ZjEyXHU1ZjU5XHU1ZmFjXHU1ZmFlXHU2MTFhXHU2MTBmXHU2MTQ4XHU2MTFmXHU2MGYzXHU2MTFiXHU2MGY5XHU2MTAxXHU2MTA4XHU2MTRlXHU2MTRjXHU2MTQ0XHU2MTRk''@;'; put 'put ''XHU2MTNlXHU2MTM0XHU2MTI3XHU2MTBkXHU2MTA2XHU2MTM3XHU2MjIxXHU2MjIyXHU2NDEzXHU2NDNlXHU2NDFlXHU2NDJhXHU2NDJkXHU2NDNkXHU2NDJjXHU2NDBmXHU2NDFjXHU2NDE0XHU2NDBkXHU2NDM2XHU2NDE2XHU2NDE3XHU2NDA2XHU2NTZjXHU2NTlmXHU2NWIwXHU2Njk3XHU2''@;'; put 'put ''Njg5XHU2Njg3XHU2Njg4XHU2Njk2XHU2Njg0XHU2Njk4XHU2NjhkXHU2NzAzXHU2OTk0XHU2OTZkIl0sWyJiN2ExIiwiXHU2OTVhXHU2OTc3XHU2OTYwXHU2OTU0XHU2OTc1XHU2OTMwXHU2OTgyXHU2OTRhXHU2OTY4XHU2OTZiXHU2OTVlXHU2OTUzXHU2OTc5XHU2OTg2XHU2OTVkXHU2OTYz''@;'; put 'put ''XHU2OTViXHU2YjQ3XHU2YjcyXHU2YmMwXHU2YmJmXHU2YmQzXHU2YmZkXHU2ZWEyXHU2ZWFmXHU2ZWQzXHU2ZWI2XHU2ZWMyXHU2ZTkwXHU2ZTlkXHU2ZWM3XHU2ZWM1XHU2ZWE1XHU2ZTk4XHU2ZWJjXHU2ZWJhXHU2ZWFiXHU2ZWQxXHU2ZTk2XHU2ZTljXHU2ZWM0XHU2ZWQ0XHU2ZWFhXHU2''@;'; put 'put ''ZWE3XHU2ZWI0XHU3MTRlXHU3MTU5XHU3MTY5XHU3MTY0XHU3MTQ5XHU3MTY3XHU3MTVjXHU3MTZjXHU3MTY2XHU3MTRjXHU3MTY1XHU3MTVlXHU3MTQ2XHU3MTY4XHU3MTU2XHU3MjNhXHU3MjUyXHU3MzM3XHU3MzQ1XHU3MzNmXHU3MzNlXHU3NDZmXHU3NDVhXHU3NDU1XHU3NDVmXHU3NDVl''@;'; put 'put ''XHU3NDQxXHU3NDNmXHU3NDU5XHU3NDViXHU3NDVjXHU3NTc2XHU3NTc4XHU3NjAwXHU3NWYwXHU3NjAxXHU3NWYyXHU3NWYxXHU3NWZhXHU3NWZmXHU3NWY0XHU3NWYzXHU3NmRlXHU3NmRmXHU3NzViXHU3NzZiXHU3NzY2XHU3NzVlXHU3NzYzIl0sWyJiODQwIiwiXHU3Nzc5XHU3NzZhXHU3''@;'; put 'put ''NzZjXHU3NzVjXHU3NzY1XHU3NzY4XHU3NzYyXHU3N2VlXHU3ODhlXHU3OGIwXHU3ODk3XHU3ODk4XHU3ODhjXHU3ODg5XHU3ODdjXHU3ODkxXHU3ODkzXHU3ODdmXHU3OTdhXHU3OTdmXHU3OTgxXHU4NDJjXHU3OWJkXHU3YTFjXHU3YTFhXHU3YTIwXHU3YTE0XHU3YTFmXHU3YTFlXHU3YTlm''@;'; put 'put ''XHU3YWEwXHU3Yjc3XHU3YmMwXHU3YjYwXHU3YjZlXHU3YjY3XHU3Y2IxXHU3Y2IzXHU3Y2I1XHU3ZDkzXHU3ZDc5XHU3ZDkxXHU3ZDgxXHU3ZDhmXHU3ZDViXHU3ZjZlXHU3ZjY5XHU3ZjZhXHU3ZjcyXHU3ZmE5XHU3ZmE4XHU3ZmE0XHU4MDU2XHU4MDU4XHU4MDg2XHU4MDg0XHU4MTcxXHU4''@;'; put 'put ''MTcwXHU4MTc4XHU4MTY1XHU4MTZlXHU4MTczXHU4MTZiIl0sWyJiOGExIiwiXHU4MTc5XHU4MTdhXHU4MTY2XHU4MjA1XHU4MjQ3XHU4NDgyXHU4NDc3XHU4NDNkXHU4NDMxXHU4NDc1XHU4NDY2XHU4NDZiXHU4NDQ5XHU4NDZjXHU4NDViXHU4NDNjXHU4NDM1XHU4NDYxXHU4NDYzXHU4NDY5''@;'; put 'put ''XHU4NDZkXHU4NDQ2XHU4NjVlXHU4NjVjXHU4NjVmXHU4NmY5XHU4NzEzXHU4NzA4XHU4NzA3XHU4NzAwXHU4NmZlXHU4NmZiXHU4NzAyXHU4NzAzXHU4NzA2XHU4NzBhXHU4ODU5XHU4OGRmXHU4OGQ0XHU4OGQ5XHU4OGRjXHU4OGQ4XHU4OGRkXHU4OGUxXHU4OGNhXHU4OGQ1XHU4OGQyXHU4''@;'; put 'put ''OTljXHU4OWUzXHU4YTZiXHU4YTcyXHU4YTczXHU4YTY2XHU4YTY5XHU4YTcwXHU4YTg3XHU4YTdjXHU4YTYzXHU4YWEwXHU4YTcxXHU4YTg1XHU4YTZkXHU4YTYyXHU4YTZlXHU4YTZjXHU4YTc5XHU4YTdiXHU4YTNlXHU4YTY4XHU4YzYyXHU4YzhhXHU4Yzg5XHU4Y2NhXHU4Y2M3XHU4Y2M4''@;'; put 'put ''XHU4Y2M0XHU4Y2IyXHU4Y2MzXHU4Y2MyXHU4Y2M1XHU4ZGUxXHU4ZGRmXHU4ZGU4XHU4ZGVmXHU4ZGYzXHU4ZGZhXHU4ZGVhXHU4ZGU0XHU4ZGU2XHU4ZWIyXHU4ZjAzXHU4ZjA5XHU4ZWZlXHU4ZjBhIl0sWyJiOTQwIiwiXHU4ZjlmXHU4ZmIyXHU5MDRiXHU5MDRhXHU5MDUzXHU5MDQyXHU5''@;'; put 'put ''MDU0XHU5MDNjXHU5MDU1XHU5MDUwXHU5MDQ3XHU5MDRmXHU5MDRlXHU5MDRkXHU5MDUxXHU5MDNlXHU5MDQxXHU5MTEyXHU5MTE3XHU5MTZjXHU5MTZhXHU5MTY5XHU5MWM5XHU5MjM3XHU5MjU3XHU5MjM4XHU5MjNkXHU5MjQwXHU5MjNlXHU5MjViXHU5MjRiXHU5MjY0XHU5MjUxXHU5MjM0''@;'; put 'put ''XHU5MjQ5XHU5MjRkXHU5MjQ1XHU5MjM5XHU5MjNmXHU5MjVhXHU5NTk4XHU5Njk4XHU5Njk0XHU5Njk1XHU5NmNkXHU5NmNiXHU5NmM5XHU5NmNhXHU5NmY3XHU5NmZiXHU5NmY5XHU5NmY2XHU5NzU2XHU5Nzc0XHU5Nzc2XHU5ODEwXHU5ODExXHU5ODEzXHU5ODBhXHU5ODEyXHU5ODBjXHU5''@;'; put 'put ''OGZjXHU5OGY0Il0sWyJiOWExIiwiXHU5OGZkXHU5OGZlXHU5OWIzXHU5OWIxXHU5OWI0XHU5YWUxXHU5Y2U5XHU5ZTgyXHU5ZjBlXHU5ZjEzXHU5ZjIwXHU1MGU3XHU1MGVlXHU1MGU1XHU1MGQ2XHU1MGVkXHU1MGRhXHU1MGQ1XHU1MGNmXHU1MGQxXHU1MGYxXHU1MGNlXHU1MGU5XHU1MTYy''@;'; put 'put ''XHU1MWYzXHU1MjgzXHU1MjgyXHU1MzMxXHU1M2FkXHU1NWZlXHU1NjAwXHU1NjFiXHU1NjE3XHU1NWZkXHU1NjE0XHU1NjA2XHU1NjA5XHU1NjBkXHU1NjBlXHU1NWY3XHU1NjE2XHU1NjFmXHU1NjA4XHU1NjEwXHU1NWY2XHU1NzE4XHU1NzE2XHU1ODc1XHU1ODdlXHU1ODgzXHU1ODkzXHU1''@;'; put 'put ''ODhhXHU1ODc5XHU1ODg1XHU1ODdkXHU1OGZkXHU1OTI1XHU1OTIyXHU1OTI0XHU1OTZhXHU1OTY5XHU1YWUxXHU1YWU2XHU1YWU5XHU1YWQ3XHU1YWQ2XHU1YWQ4XHU1YWUzXHU1Yjc1XHU1YmRlXHU1YmU3XHU1YmUxXHU1YmU1XHU1YmU2XHU1YmU4XHU1YmUyXHU1YmU0XHU1YmRmXHU1YzBk''@;'; put 'put ''XHU1YzYyXHU1ZDg0XHU1ZDg3XHU1ZTViXHU1ZTYzXHU1ZTU1XHU1ZTU3XHU1ZTU0XHU1ZWQzXHU1ZWQ2XHU1ZjBhXHU1ZjQ2XHU1ZjcwXHU1ZmI5XHU2MTQ3Il0sWyJiYTQwIiwiXHU2MTNmXHU2MTRiXHU2MTc3XHU2MTYyXHU2MTYzXHU2MTVmXHU2MTVhXHU2MTU4XHU2MTc1XHU2MjJhXHU2''@;'; put 'put ''NDg3XHU2NDU4XHU2NDU0XHU2NGE0XHU2NDc4XHU2NDVmXHU2NDdhXHU2NDUxXHU2NDY3XHU2NDM0XHU2NDZkXHU2NDdiXHU2NTcyXHU2NWExXHU2NWQ3XHU2NWQ2XHU2NmEyXHU2NmE4XHU2NjlkXHU2OTljXHU2OWE4XHU2OTk1XHU2OWMxXHU2OWFlXHU2OWQzXHU2OWNiXHU2OTliXHU2OWI3''@;'; put 'put ''XHU2OWJiXHU2OWFiXHU2OWI0XHU2OWQwXHU2OWNkXHU2OWFkXHU2OWNjXHU2OWE2XHU2OWMzXHU2OWEzXHU2YjQ5XHU2YjRjXHU2YzMzXHU2ZjMzXHU2ZjE0XHU2ZWZlXHU2ZjEzXHU2ZWY0XHU2ZjI5XHU2ZjNlXHU2ZjIwXHU2ZjJjXHU2ZjBmXHU2ZjAyXHU2ZjIyIl0sWyJiYWExIiwiXHU2''@;'; put 'put ''ZWZmXHU2ZWVmXHU2ZjA2XHU2ZjMxXHU2ZjM4XHU2ZjMyXHU2ZjIzXHU2ZjE1XHU2ZjJiXHU2ZjJmXHU2Zjg4XHU2ZjJhXHU2ZWVjXHU2ZjAxXHU2ZWYyXHU2ZWNjXHU2ZWY3XHU3MTk0XHU3MTk5XHU3MTdkXHU3MThhXHU3MTg0XHU3MTkyXHU3MjNlXHU3MjkyXHU3Mjk2XHU3MzQ0XHU3MzUw''@;'; put 'put ''XHU3NDY0XHU3NDYzXHU3NDZhXHU3NDcwXHU3NDZkXHU3NTA0XHU3NTkxXHU3NjI3XHU3NjBkXHU3NjBiXHU3NjA5XHU3NjEzXHU3NmUxXHU3NmUzXHU3Nzg0XHU3NzdkXHU3NzdmXHU3NzYxXHU3OGMxXHU3ODlmXHU3OGE3XHU3OGIzXHU3OGE5XHU3OGEzXHU3OThlXHU3OThmXHU3OThkXHU3''@;'; put 'put ''YTJlXHU3YTMxXHU3YWFhXHU3YWE5XHU3YWVkXHU3YWVmXHU3YmExXHU3Yjk1XHU3YjhiXHU3Yjc1XHU3Yjk3XHU3YjlkXHU3Yjk0XHU3YjhmXHU3YmI4XHU3Yjg3XHU3Yjg0XHU3Y2I5XHU3Y2JkXHU3Y2JlXHU3ZGJiXHU3ZGIwXHU3ZDljXHU3ZGJkXHU3ZGJlXHU3ZGEwXHU3ZGNhXHU3ZGI0''@;'; put 'put ''XHU3ZGIyXHU3ZGIxXHU3ZGJhXHU3ZGEyXHU3ZGJmXHU3ZGI1XHU3ZGI4XHU3ZGFkXHU3ZGQyXHU3ZGM3XHU3ZGFjIl0sWyJiYjQwIiwiXHU3ZjcwXHU3ZmUwXHU3ZmUxXHU3ZmRmXHU4MDVlXHU4MDVhXHU4MDg3XHU4MTUwXHU4MTgwXHU4MThmXHU4MTg4XHU4MThhXHU4MTdmXHU4MTgyXHU4''@;'; put 'put ''MWU3XHU4MWZhXHU4MjA3XHU4MjE0XHU4MjFlXHU4MjRiXHU4NGM5XHU4NGJmXHU4NGM2XHU4NGM0XHU4NDk5XHU4NDllXHU4NGIyXHU4NDljXHU4NGNiXHU4NGI4XHU4NGMwXHU4NGQzXHU4NDkwXHU4NGJjXHU4NGQxXHU4NGNhXHU4NzNmXHU4NzFjXHU4NzNiXHU4NzIyXHU4NzI1XHU4NzM0''@;'; put 'put ''XHU4NzE4XHU4NzU1XHU4NzM3XHU4NzI5XHU4OGYzXHU4OTAyXHU4OGY0XHU4OGY5XHU4OGY4XHU4OGZkXHU4OGU4XHU4OTFhXHU4OGVmXHU4YWE2XHU4YThjXHU4YTllXHU4YWEzXHU4YThkXHU4YWExXHU4YTkzXHU4YWE0Il0sWyJiYmExIiwiXHU4YWFhXHU4YWE1XHU4YWE4XHU4YTk4XHU4''@;'; put 'put ''YTkxXHU4YTlhXHU4YWE3XHU4YzZhXHU4YzhkXHU4YzhjXHU4Y2QzXHU4Y2QxXHU4Y2QyXHU4ZDZiXHU4ZDk5XHU4ZDk1XHU4ZGZjXHU4ZjE0XHU4ZjEyXHU4ZjE1XHU4ZjEzXHU4ZmEzXHU5MDYwXHU5MDU4XHU5MDVjXHU5MDYzXHU5MDU5XHU5MDVlXHU5MDYyXHU5MDVkXHU5MDViXHU5MTE5''@;'; put 'put ''XHU5MTE4XHU5MTFlXHU5MTc1XHU5MTc4XHU5MTc3XHU5MTc0XHU5Mjc4XHU5MjgwXHU5Mjg1XHU5Mjk4XHU5Mjk2XHU5MjdiXHU5MjkzXHU5MjljXHU5MmE4XHU5MjdjXHU5MjkxXHU5NWExXHU5NWE4XHU5NWE5XHU5NWEzXHU5NWE1XHU5NWE0XHU5Njk5XHU5NjljXHU5NjliXHU5NmNjXHU5''@;'; put 'put ''NmQyXHU5NzAwXHU5NzdjXHU5Nzg1XHU5N2Y2XHU5ODE3XHU5ODE4XHU5OGFmXHU5OGIxXHU5OTAzXHU5OTA1XHU5OTBjXHU5OTA5XHU5OWMxXHU5YWFmXHU5YWIwXHU5YWU2XHU5YjQxXHU5YjQyXHU5Y2Y0XHU5Y2Y2XHU5Y2YzXHU5ZWJjXHU5ZjNiXHU5ZjRhXHU1MTA0XHU1MTAwXHU1MGZi''@;'; put 'put ''XHU1MGY1XHU1MGY5XHU1MTAyXHU1MTA4XHU1MTA5XHU1MTA1XHU1MWRjIl0sWyJiYzQwIiwiXHU1Mjg3XHU1Mjg4XHU1Mjg5XHU1MjhkXHU1MjhhXHU1MmYwXHU1M2IyXHU1NjJlXHU1NjNiXHU1NjM5XHU1NjMyXHU1NjNmXHU1NjM0XHU1NjI5XHU1NjUzXHU1NjRlXHU1NjU3XHU1Njc0XHU1''@;'; put 'put ''NjM2XHU1NjJmXHU1NjMwXHU1ODgwXHU1ODlmXHU1ODllXHU1OGIzXHU1ODljXHU1OGFlXHU1OGE5XHU1OGE2XHU1OTZkXHU1YjA5XHU1YWZiXHU1YjBiXHU1YWY1XHU1YjBjXHU1YjA4XHU1YmVlXHU1YmVjXHU1YmU5XHU1YmViXHU1YzY0XHU1YzY1XHU1ZDlkXHU1ZDk0XHU1ZTYyXHU1ZTVm''@;'; put 'put ''XHU1ZTYxXHU1ZWUyXHU1ZWRhXHU1ZWRmXHU1ZWRkXHU1ZWUzXHU1ZWUwXHU1ZjQ4XHU1ZjcxXHU1ZmI3XHU1ZmI1XHU2MTc2XHU2MTY3XHU2MTZlXHU2MTVkXHU2MTU1XHU2MTgyIl0sWyJiY2ExIiwiXHU2MTdjXHU2MTcwXHU2MTZiXHU2MTdlXHU2MWE3XHU2MTkwXHU2MWFiXHU2MThlXHU2''@;'; put 'put ''MWFjXHU2MTlhXHU2MWE0XHU2MTk0XHU2MWFlXHU2MjJlXHU2NDY5XHU2NDZmXHU2NDc5XHU2NDllXHU2NGIyXHU2NDg4XHU2NDkwXHU2NGIwXHU2NGE1XHU2NDkzXHU2NDk1XHU2NGE5XHU2NDkyXHU2NGFlXHU2NGFkXHU2NGFiXHU2NDlhXHU2NGFjXHU2NDk5XHU2NGEyXHU2NGIzXHU2NTc1''@;'; put 'put ''XHU2NTc3XHU2NTc4XHU2NmFlXHU2NmFiXHU2NmI0XHU2NmIxXHU2YTIzXHU2YTFmXHU2OWU4XHU2YTAxXHU2YTFlXHU2YTE5XHU2OWZkXHU2YTIxXHU2YTEzXHU2YTBhXHU2OWYzXHU2YTAyXHU2YTA1XHU2OWVkXHU2YTExXHU2YjUwXHU2YjRlXHU2YmE0XHU2YmM1XHU2YmM2XHU2ZjNmXHU2''@;'; put 'put ''ZjdjXHU2Zjg0XHU2ZjUxXHU2ZjY2XHU2ZjU0XHU2Zjg2XHU2ZjZkXHU2ZjViXHU2Zjc4XHU2ZjZlXHU2ZjhlXHU2ZjdhXHU2ZjcwXHU2ZjY0XHU2Zjk3XHU2ZjU4XHU2ZWQ1XHU2ZjZmXHU2ZjYwXHU2ZjVmXHU3MTlmXHU3MWFjXHU3MWIxXHU3MWE4XHU3MjU2XHU3MjliXHU3MzRlXHU3MzU3''@;'; put 'put ''XHU3NDY5XHU3NDhiXHU3NDgzIl0sWyJiZDQwIiwiXHU3NDdlXHU3NDgwXHU3NTdmXHU3NjIwXHU3NjI5XHU3NjFmXHU3NjI0XHU3NjI2XHU3NjIxXHU3NjIyXHU3NjlhXHU3NmJhXHU3NmU0XHU3NzhlXHU3Nzg3XHU3NzhjXHU3NzkxXHU3NzhiXHU3OGNiXHU3OGM1XHU3OGJhXHU3OGNhXHU3''@;'; put 'put ''OGJlXHU3OGQ1XHU3OGJjXHU3OGQwXHU3YTNmXHU3YTNjXHU3YTQwXHU3YTNkXHU3YTM3XHU3YTNiXHU3YWFmXHU3YWFlXHU3YmFkXHU3YmIxXHU3YmM0XHU3YmI0XHU3YmM2XHU3YmM3XHU3YmMxXHU3YmEwXHU3YmNjXHU3Y2NhXHU3ZGUwXHU3ZGY0XHU3ZGVmXHU3ZGZiXHU3ZGQ4XHU3ZGVj''@;'; put 'put ''XHU3ZGRkXHU3ZGU4XHU3ZGUzXHU3ZGRhXHU3ZGRlXHU3ZGU5XHU3ZDllXHU3ZGQ5XHU3ZGYyXHU3ZGY5XHU3Zjc1XHU3Zjc3XHU3ZmFmIl0sWyJiZGExIiwiXHU3ZmU5XHU4MDI2XHU4MTliXHU4MTljXHU4MTlkXHU4MWEwXHU4MTlhXHU4MTk4XHU4NTE3XHU4NTNkXHU4NTFhXHU4NGVlXHU4''@;'; put 'put ''NTJjXHU4NTJkXHU4NTEzXHU4NTExXHU4NTIzXHU4NTIxXHU4NTE0XHU4NGVjXHU4NTI1XHU4NGZmXHU4NTA2XHU4NzgyXHU4Nzc0XHU4Nzc2XHU4NzYwXHU4NzY2XHU4Nzc4XHU4NzY4XHU4NzU5XHU4NzU3XHU4NzRjXHU4NzUzXHU4ODViXHU4ODVkXHU4OTEwXHU4OTA3XHU4OTEyXHU4OTEz''@;'; put 'put ''XHU4OTE1XHU4OTBhXHU4YWJjXHU4YWQyXHU4YWM3XHU4YWM0XHU4YTk1XHU4YWNiXHU4YWY4XHU4YWIyXHU4YWM5XHU4YWMyXHU4YWJmXHU4YWIwXHU4YWQ2XHU4YWNkXHU4YWI2XHU4YWI5XHU4YWRiXHU4YzRjXHU4YzRlXHU4YzZjXHU4Y2UwXHU4Y2RlXHU4Y2U2XHU4Y2U0XHU4Y2VjXHU4''@;'; put 'put ''Y2VkXHU4Y2UyXHU4Y2UzXHU4Y2RjXHU4Y2VhXHU4Y2UxXHU4ZDZkXHU4ZDlmXHU4ZGEzXHU4ZTJiXHU4ZTEwXHU4ZTFkXHU4ZTIyXHU4ZTBmXHU4ZTI5XHU4ZTFmXHU4ZTIxXHU4ZTFlXHU4ZWJhXHU4ZjFkXHU4ZjFiXHU4ZjFmXHU4ZjI5XHU4ZjI2XHU4ZjJhXHU4ZjFjXHU4ZjFlIl0sWyJi''@;'; put 'put ''ZTQwIiwiXHU4ZjI1XHU5MDY5XHU5MDZlXHU5MDY4XHU5MDZkXHU5MDc3XHU5MTMwXHU5MTJkXHU5MTI3XHU5MTMxXHU5MTg3XHU5MTg5XHU5MThiXHU5MTgzXHU5MmM1XHU5MmJiXHU5MmI3XHU5MmVhXHU5MmFjXHU5MmU0XHU5MmMxXHU5MmIzXHU5MmJjXHU5MmQyXHU5MmM3XHU5MmYwXHU5''@;'; put 'put ''MmIyXHU5NWFkXHU5NWIxXHU5NzA0XHU5NzA2XHU5NzA3XHU5NzA5XHU5NzYwXHU5NzhkXHU5NzhiXHU5NzhmXHU5ODIxXHU5ODJiXHU5ODFjXHU5OGIzXHU5OTBhXHU5OTEzXHU5OTEyXHU5OTE4XHU5OWRkXHU5OWQwXHU5OWRmXHU5OWRiXHU5OWQxXHU5OWQ1XHU5OWQyXHU5OWQ5XHU5YWI3''@;'; put 'put ''XHU5YWVlXHU5YWVmXHU5YjI3XHU5YjQ1XHU5YjQ0XHU5Yjc3XHU5YjZmXHU5ZDA2XHU5ZDA5Il0sWyJiZWExIiwiXHU5ZDAzXHU5ZWE5XHU5ZWJlXHU5ZWNlXHU1OGE4XHU5ZjUyXHU1MTEyXHU1MTE4XHU1MTE0XHU1MTEwXHU1MTE1XHU1MTgwXHU1MWFhXHU1MWRkXHU1MjkxXHU1MjkzXHU1''@;'; put 'put ''MmYzXHU1NjU5XHU1NjZiXHU1Njc5XHU1NjY5XHU1NjY0XHU1Njc4XHU1NjZhXHU1NjY4XHU1NjY1XHU1NjcxXHU1NjZmXHU1NjZjXHU1NjYyXHU1Njc2XHU1OGMxXHU1OGJlXHU1OGM3XHU1OGM1XHU1OTZlXHU1YjFkXHU1YjM0XHU1Yjc4XHU1YmYwXHU1YzBlXHU1ZjRhXHU2MWIyXHU2MTkx''@;'; put 'put ''XHU2MWE5XHU2MThhXHU2MWNkXHU2MWI2XHU2MWJlXHU2MWNhXHU2MWM4XHU2MjMwXHU2NGM1XHU2NGMxXHU2NGNiXHU2NGJiXHU2NGJjXHU2NGRhXHU2NGM0XHU2NGM3XHU2NGMyXHU2NGNkXHU2NGJmXHU2NGQyXHU2NGQ0XHU2NGJlXHU2NTc0XHU2NmM2XHU2NmM5XHU2NmI5XHU2NmM0XHU2''@;'; put 'put ''NmM3XHU2NmI4XHU2YTNkXHU2YTM4XHU2YTNhXHU2YTU5XHU2YTZiXHU2YTU4XHU2YTM5XHU2YTQ0XHU2YTYyXHU2YTYxXHU2YTRiXHU2YTQ3XHU2YTM1XHU2YTVmXHU2YTQ4XHU2YjU5XHU2Yjc3XHU2YzA1XHU2ZmMyXHU2ZmIxXHU2ZmExIl0sWyJiZjQwIiwiXHU2ZmMzXHU2ZmE0XHU2ZmMx''@;'; put 'put ''XHU2ZmE3XHU2ZmIzXHU2ZmMwXHU2ZmI5XHU2ZmI2XHU2ZmE2XHU2ZmEwXHU2ZmI0XHU3MWJlXHU3MWM5XHU3MWQwXHU3MWQyXHU3MWM4XHU3MWQ1XHU3MWI5XHU3MWNlXHU3MWQ5XHU3MWRjXHU3MWMzXHU3MWM0XHU3MzY4XHU3NDljXHU3NGEzXHU3NDk4XHU3NDlmXHU3NDllXHU3NGUyXHU3''@;'; put 'put ''NTBjXHU3NTBkXHU3NjM0XHU3NjM4XHU3NjNhXHU3NmU3XHU3NmU1XHU3N2EwXHU3NzllXHU3NzlmXHU3N2E1XHU3OGU4XHU3OGRhXHU3OGVjXHU3OGU3XHU3OWE2XHU3YTRkXHU3YTRlXHU3YTQ2XHU3YTRjXHU3YTRiXHU3YWJhXHU3YmQ5XHU3YzExXHU3YmM5XHU3YmU0XHU3YmRiXHU3YmUx''@;'; put 'put ''XHU3YmU5XHU3YmU2XHU3Y2Q1XHU3Y2Q2XHU3ZTBhIl0sWyJiZmExIiwiXHU3ZTExXHU3ZTA4XHU3ZTFiXHU3ZTIzXHU3ZTFlXHU3ZTFkXHU3ZTA5XHU3ZTEwXHU3Zjc5XHU3ZmIyXHU3ZmYwXHU3ZmYxXHU3ZmVlXHU4MDI4XHU4MWIzXHU4MWE5XHU4MWE4XHU4MWZiXHU4MjA4XHU4MjU4XHU4''@;'; put 'put ''MjU5XHU4NTRhXHU4NTU5XHU4NTQ4XHU4NTY4XHU4NTY5XHU4NTQzXHU4NTQ5XHU4NTZkXHU4NTZhXHU4NTVlXHU4NzgzXHU4NzlmXHU4NzllXHU4N2EyXHU4NzhkXHU4ODYxXHU4OTJhXHU4OTMyXHU4OTI1XHU4OTJiXHU4OTIxXHU4OWFhXHU4OWE2XHU4YWU2XHU4YWZhXHU4YWViXHU4YWYx''@;'; put 'put ''XHU4YjAwXHU4YWRjXHU4YWU3XHU4YWVlXHU4YWZlXHU4YjAxXHU4YjAyXHU4YWY3XHU4YWVkXHU4YWYzXHU4YWY2XHU4YWZjXHU4YzZiXHU4YzZkXHU4YzkzXHU4Y2Y0XHU4ZTQ0XHU4ZTMxXHU4ZTM0XHU4ZTQyXHU4ZTM5XHU4ZTM1XHU4ZjNiXHU4ZjJmXHU4ZjM4XHU4ZjMzXHU4ZmE4XHU4''@;'; put 'put ''ZmE2XHU5MDc1XHU5MDc0XHU5MDc4XHU5MDcyXHU5MDdjXHU5MDdhXHU5MTM0XHU5MTkyXHU5MzIwXHU5MzM2XHU5MmY4XHU5MzMzXHU5MzJmXHU5MzIyXHU5MmZjXHU5MzJiXHU5MzA0XHU5MzFhIl0sWyJjMDQwIiwiXHU5MzEwXHU5MzI2XHU5MzIxXHU5MzE1XHU5MzJlXHU5MzE5XHU5NWJi''@;'; put 'put ''XHU5NmE3XHU5NmE4XHU5NmFhXHU5NmQ1XHU5NzBlXHU5NzExXHU5NzE2XHU5NzBkXHU5NzEzXHU5NzBmXHU5NzViXHU5NzVjXHU5NzY2XHU5Nzk4XHU5ODMwXHU5ODM4XHU5ODNiXHU5ODM3XHU5ODJkXHU5ODM5XHU5ODI0XHU5OTEwXHU5OTI4XHU5OTFlXHU5OTFiXHU5OTIxXHU5OTFhXHU5''@;'; put 'put ''OWVkXHU5OWUyXHU5OWYxXHU5YWI4XHU5YWJjXHU5YWZiXHU5YWVkXHU5YjI4XHU5YjkxXHU5ZDE1XHU5ZDIzXHU5ZDI2XHU5ZDI4XHU5ZDEyXHU5ZDFiXHU5ZWQ4XHU5ZWQ0XHU5ZjhkXHU5ZjljXHU1MTJhXHU1MTFmXHU1MTIxXHU1MTMyXHU1MmY1XHU1NjhlXHU1NjgwXHU1NjkwXHU1Njg1''@;'; put 'put ''XHU1Njg3Il0sWyJjMGExIiwiXHU1NjhmXHU1OGQ1XHU1OGQzXHU1OGQxXHU1OGNlXHU1YjMwXHU1YjJhXHU1YjI0XHU1YjdhXHU1YzM3XHU1YzY4XHU1ZGJjXHU1ZGJhXHU1ZGJkXHU1ZGI4XHU1ZTZiXHU1ZjRjXHU1ZmJkXHU2MWM5XHU2MWMyXHU2MWM3XHU2MWU2XHU2MWNiXHU2MjMyXHU2''@;'; put 'put ''MjM0XHU2NGNlXHU2NGNhXHU2NGQ4XHU2NGUwXHU2NGYwXHU2NGU2XHU2NGVjXHU2NGYxXHU2NGUyXHU2NGVkXHU2NTgyXHU2NTgzXHU2NmQ5XHU2NmQ2XHU2YTgwXHU2YTk0XHU2YTg0XHU2YWEyXHU2YTljXHU2YWRiXHU2YWEzXHU2YTdlXHU2YTk3XHU2YTkwXHU2YWEwXHU2YjVjXHU2YmFl''@;'; put 'put ''XHU2YmRhXHU2YzA4XHU2ZmQ4XHU2ZmYxXHU2ZmRmXHU2ZmUwXHU2ZmRiXHU2ZmU0XHU2ZmViXHU2ZmVmXHU2ZjgwXHU2ZmVjXHU2ZmUxXHU2ZmU5XHU2ZmQ1XHU2ZmVlXHU2ZmYwXHU3MWU3XHU3MWRmXHU3MWVlXHU3MWU2XHU3MWU1XHU3MWVkXHU3MWVjXHU3MWY0XHU3MWUwXHU3MjM1XHU3''@;'; put 'put ''MjQ2XHU3MzcwXHU3MzcyXHU3NGE5XHU3NGIwXHU3NGE2XHU3NGE4XHU3NjQ2XHU3NjQyXHU3NjRjXHU3NmVhXHU3N2IzXHU3N2FhXHU3N2IwXHU3N2FjIl0sWyJjMTQwIiwiXHU3N2E3XHU3N2FkXHU3N2VmXHU3OGY3XHU3OGZhXHU3OGY0XHU3OGVmXHU3OTAxXHU3OWE3XHU3OWFhXHU3YTU3''@;'; put 'put ''XHU3YWJmXHU3YzA3XHU3YzBkXHU3YmZlXHU3YmY3XHU3YzBjXHU3YmUwXHU3Y2UwXHU3Y2RjXHU3Y2RlXHU3Y2UyXHU3Y2RmXHU3Y2Q5XHU3Y2RkXHU3ZTJlXHU3ZTNlXHU3ZTQ2XHU3ZTM3XHU3ZTMyXHU3ZTQzXHU3ZTJiXHU3ZTNkXHU3ZTMxXHU3ZTQ1XHU3ZTQxXHU3ZTM0XHU3ZTM5XHU3''@;'; put 'put ''ZTQ4XHU3ZTM1XHU3ZTNmXHU3ZTJmXHU3ZjQ0XHU3ZmYzXHU3ZmZjXHU4MDcxXHU4MDcyXHU4MDcwXHU4MDZmXHU4MDczXHU4MWM2XHU4MWMzXHU4MWJhXHU4MWMyXHU4MWMwXHU4MWJmXHU4MWJkXHU4MWM5XHU4MWJlXHU4MWU4XHU4MjA5XHU4MjcxXHU4NWFhIl0sWyJjMWExIiwiXHU4NTg0''@;'; put 'put ''XHU4NTdlXHU4NTljXHU4NTkxXHU4NTk0XHU4NWFmXHU4NTliXHU4NTg3XHU4NWE4XHU4NThhXHU4NjY3XHU4N2MwXHU4N2QxXHU4N2IzXHU4N2QyXHU4N2M2XHU4N2FiXHU4N2JiXHU4N2JhXHU4N2M4XHU4N2NiXHU4OTNiXHU4OTM2XHU4OTQ0XHU4OTM4XHU4OTNkXHU4OWFjXHU4YjBlXHU4''@;'; put 'put ''YjE3XHU4YjE5XHU4YjFiXHU4YjBhXHU4YjIwXHU4YjFkXHU4YjA0XHU4YjEwXHU4YzQxXHU4YzNmXHU4YzczXHU4Y2ZhXHU4Y2ZkXHU4Y2ZjXHU4Y2Y4XHU4Y2ZiXHU4ZGE4XHU4ZTQ5XHU4ZTRiXHU4ZTQ4XHU4ZTRhXHU4ZjQ0XHU4ZjNlXHU4ZjQyXHU4ZjQ1XHU4ZjNmXHU5MDdmXHU5MDdk''@;'; put 'put ''XHU5MDg0XHU5MDgxXHU5MDgyXHU5MDgwXHU5MTM5XHU5MWEzXHU5MTllXHU5MTljXHU5MzRkXHU5MzgyXHU5MzI4XHU5Mzc1XHU5MzRhXHU5MzY1XHU5MzRiXHU5MzE4XHU5MzdlXHU5MzZjXHU5MzViXHU5MzcwXHU5MzVhXHU5MzU0XHU5NWNhXHU5NWNiXHU5NWNjXHU5NWM4XHU5NWM2XHU5''@;'; put 'put ''NmIxXHU5NmI4XHU5NmQ2XHU5NzFjXHU5NzFlXHU5N2EwXHU5N2QzXHU5ODQ2XHU5OGI2XHU5OTM1XHU5YTAxIl0sWyJjMjQwIiwiXHU5OWZmXHU5YmFlXHU5YmFiXHU5YmFhXHU5YmFkXHU5ZDNiXHU5ZDNmXHU5ZThiXHU5ZWNmXHU5ZWRlXHU5ZWRjXHU5ZWRkXHU5ZWRiXHU5ZjNlXHU5ZjRi''@;'; put 'put ''XHU1M2UyXHU1Njk1XHU1NmFlXHU1OGQ5XHU1OGQ4XHU1YjM4XHU1ZjVkXHU2MWUzXHU2MjMzXHU2NGY0XHU2NGYyXHU2NGZlXHU2NTA2XHU2NGZhXHU2NGZiXHU2NGY3XHU2NWI3XHU2NmRjXHU2NzI2XHU2YWIzXHU2YWFjXHU2YWMzXHU2YWJiXHU2YWI4XHU2YWMyXHU2YWFlXHU2YWFmXHU2''@;'; put 'put ''YjVmXHU2Yjc4XHU2YmFmXHU3MDA5XHU3MDBiXHU2ZmZlXHU3MDA2XHU2ZmZhXHU3MDExXHU3MDBmXHU3MWZiXHU3MWZjXHU3MWZlXHU3MWY4XHU3Mzc3XHU3Mzc1XHU3NGE3XHU3NGJmXHU3NTE1XHU3NjU2XHU3NjU4Il0sWyJjMmExIiwiXHU3NjUyXHU3N2JkXHU3N2JmXHU3N2JiXHU3N2Jj''@;'; put 'put ''XHU3OTBlXHU3OWFlXHU3YTYxXHU3YTYyXHU3YTYwXHU3YWM0XHU3YWM1XHU3YzJiXHU3YzI3XHU3YzJhXHU3YzFlXHU3YzIzXHU3YzIxXHU3Y2U3XHU3ZTU0XHU3ZTU1XHU3ZTVlXHU3ZTVhXHU3ZTYxXHU3ZTUyXHU3ZTU5XHU3ZjQ4XHU3ZmY5XHU3ZmZiXHU4MDc3XHU4MDc2XHU4MWNkXHU4''@;'; put 'put ''MWNmXHU4MjBhXHU4NWNmXHU4NWE5XHU4NWNkXHU4NWQwXHU4NWM5XHU4NWIwXHU4NWJhXHU4NWI5XHU4NWE2XHU4N2VmXHU4N2VjXHU4N2YyXHU4N2UwXHU4OTg2XHU4OWIyXHU4OWY0XHU4YjI4XHU4YjM5XHU4YjJjXHU4YjJiXHU4YzUwXHU4ZDA1XHU4ZTU5XHU4ZTYzXHU4ZTY2XHU4ZTY0''@;'; put 'put ''XHU4ZTVmXHU4ZTU1XHU4ZWMwXHU4ZjQ5XHU4ZjRkXHU5MDg3XHU5MDgzXHU5MDg4XHU5MWFiXHU5MWFjXHU5MWQwXHU5Mzk0XHU5MzhhXHU5Mzk2XHU5M2EyXHU5M2IzXHU5M2FlXHU5M2FjXHU5M2IwXHU5Mzk4XHU5MzlhXHU5Mzk3XHU5NWQ0XHU5NWQ2XHU5NWQwXHU5NWQ1XHU5NmUyXHU5''@;'; put 'put ''NmRjXHU5NmQ5XHU5NmRiXHU5NmRlXHU5NzI0XHU5N2EzXHU5N2E2Il0sWyJjMzQwIiwiXHU5N2FkXHU5N2Y5XHU5ODRkXHU5ODRmXHU5ODRjXHU5ODRlXHU5ODUzXHU5OGJhXHU5OTNlXHU5OTNmXHU5OTNkXHU5OTJlXHU5OWE1XHU5YTBlXHU5YWMxXHU5YjAzXHU5YjA2XHU5YjRmXHU5YjRl''@;'; put 'put ''XHU5YjRkXHU5YmNhXHU5YmM5XHU5YmZkXHU5YmM4XHU5YmMwXHU5ZDUxXHU5ZDVkXHU5ZDYwXHU5ZWUwXHU5ZjE1XHU5ZjJjXHU1MTMzXHU1NmE1XHU1OGRlXHU1OGRmXHU1OGUyXHU1YmY1XHU5ZjkwXHU1ZWVjXHU2MWYyXHU2MWY3XHU2MWY2XHU2MWY1XHU2NTAwXHU2NTBmXHU2NmUwXHU2''@;'; put 'put ''NmRkXHU2YWU1XHU2YWRkXHU2YWRhXHU2YWQzXHU3MDFiXHU3MDFmXHU3MDI4XHU3MDFhXHU3MDFkXHU3MDE1XHU3MDE4XHU3MjA2XHU3MjBkXHU3MjU4XHU3MmEyXHU3Mzc4Il0sWyJjM2ExIiwiXHU3MzdhXHU3NGJkXHU3NGNhXHU3NGUzXHU3NTg3XHU3NTg2XHU3NjVmXHU3NjYxXHU3N2M3''@;'; put 'put ''XHU3OTE5XHU3OWIxXHU3YTZiXHU3YTY5XHU3YzNlXHU3YzNmXHU3YzM4XHU3YzNkXHU3YzM3XHU3YzQwXHU3ZTZiXHU3ZTZkXHU3ZTc5XHU3ZTY5XHU3ZTZhXHU3Zjg1XHU3ZTczXHU3ZmI2XHU3ZmI5XHU3ZmI4XHU4MWQ4XHU4NWU5XHU4NWRkXHU4NWVhXHU4NWQ1XHU4NWU0XHU4NWU1XHU4''@;'; put 'put ''NWY3XHU4N2ZiXHU4ODA1XHU4ODBkXHU4N2Y5XHU4N2ZlXHU4OTYwXHU4OTVmXHU4OTU2XHU4OTVlXHU4YjQxXHU4YjVjXHU4YjU4XHU4YjQ5XHU4YjVhXHU4YjRlXHU4YjRmXHU4YjQ2XHU4YjU5XHU4ZDA4XHU4ZDBhXHU4ZTdjXHU4ZTcyXHU4ZTg3XHU4ZTc2XHU4ZTZjXHU4ZTdhXHU4ZTc0''@;'; put 'put ''XHU4ZjU0XHU4ZjRlXHU4ZmFkXHU5MDhhXHU5MDhiXHU5MWIxXHU5MWFlXHU5M2UxXHU5M2QxXHU5M2RmXHU5M2MzXHU5M2M4XHU5M2RjXHU5M2RkXHU5M2Q2XHU5M2UyXHU5M2NkXHU5M2Q4XHU5M2U0XHU5M2Q3XHU5M2U4XHU5NWRjXHU5NmI0XHU5NmUzXHU5NzJhXHU5NzI3XHU5NzYxXHU5''@;'; put 'put ''N2RjXHU5N2ZiXHU5ODVlIl0sWyJjNDQwIiwiXHU5ODU4XHU5ODViXHU5OGJjXHU5OTQ1XHU5OTQ5XHU5YTE2XHU5YTE5XHU5YjBkXHU5YmU4XHU5YmU3XHU5YmQ2XHU5YmRiXHU5ZDg5XHU5ZDYxXHU5ZDcyXHU5ZDZhXHU5ZDZjXHU5ZTkyXHU5ZTk3XHU5ZTkzXHU5ZWI0XHU1MmY4XHU1NmE4''@;'; put 'put ''XHU1NmI3XHU1NmI2XHU1NmI0XHU1NmJjXHU1OGU0XHU1YjQwXHU1YjQzXHU1YjdkXHU1YmY2XHU1ZGM5XHU2MWY4XHU2MWZhXHU2NTE4XHU2NTE0XHU2NTE5XHU2NmU2XHU2NzI3XHU2YWVjXHU3MDNlXHU3MDMwXHU3MDMyXHU3MjEwXHU3MzdiXHU3NGNmXHU3NjYyXHU3NjY1XHU3OTI2XHU3''@;'; put 'put ''OTJhXHU3OTJjXHU3OTJiXHU3YWM3XHU3YWY2XHU3YzRjXHU3YzQzXHU3YzRkXHU3Y2VmXHU3Y2YwXHU4ZmFlXHU3ZTdkXHU3ZTdjIl0sWyJjNGExIiwiXHU3ZTgyXHU3ZjRjXHU4MDAwXHU4MWRhXHU4MjY2XHU4NWZiXHU4NWY5XHU4NjExXHU4NWZhXHU4NjA2XHU4NjBiXHU4NjA3XHU4NjBh''@;'; put 'put ''XHU4ODE0XHU4ODE1XHU4OTY0XHU4OWJhXHU4OWY4XHU4YjcwXHU4YjZjXHU4YjY2XHU4YjZmXHU4YjVmXHU4YjZiXHU4ZDBmXHU4ZDBkXHU4ZTg5XHU4ZTgxXHU4ZTg1XHU4ZTgyXHU5MWI0XHU5MWNiXHU5NDE4XHU5NDAzXHU5M2ZkXHU5NWUxXHU5NzMwXHU5OGM0XHU5OTUyXHU5OTUxXHU5''@;'; put 'put ''OWE4XHU5YTJiXHU5YTMwXHU5YTM3XHU5YTM1XHU5YzEzXHU5YzBkXHU5ZTc5XHU5ZWI1XHU5ZWU4XHU5ZjJmXHU5ZjVmXHU5ZjYzXHU5ZjYxXHU1MTM3XHU1MTM4XHU1NmMxXHU1NmMwXHU1NmMyXHU1OTE0XHU1YzZjXHU1ZGNkXHU2MWZjXHU2MWZlXHU2NTFkXHU2NTFjXHU2NTk1XHU2NmU5''@;'; put 'put ''XHU2YWZiXHU2YjA0XHU2YWZhXHU2YmIyXHU3MDRjXHU3MjFiXHU3MmE3XHU3NGQ2XHU3NGQ0XHU3NjY5XHU3N2QzXHU3YzUwXHU3ZThmXHU3ZThjXHU3ZmJjXHU4NjE3XHU4NjJkXHU4NjFhXHU4ODIzXHU4ODIyXHU4ODIxXHU4ODFmXHU4OTZhXHU4OTZjXHU4OWJkXHU4Yjc0Il0sWyJjNTQw''@;'; put 'put ''IiwiXHU4Yjc3XHU4YjdkXHU4ZDEzXHU4ZThhXHU4ZThkXHU4ZThiXHU4ZjVmXHU4ZmFmXHU5MWJhXHU5NDJlXHU5NDMzXHU5NDM1XHU5NDNhXHU5NDM4XHU5NDMyXHU5NDJiXHU5NWUyXHU5NzM4XHU5NzM5XHU5NzMyXHU5N2ZmXHU5ODY3XHU5ODY1XHU5OTU3XHU5YTQ1XHU5YTQzXHU5YTQw''@;'; put 'put ''XHU5YTNlXHU5YWNmXHU5YjU0XHU5YjUxXHU5YzJkXHU5YzI1XHU5ZGFmXHU5ZGI0XHU5ZGMyXHU5ZGI4XHU5ZTlkXHU5ZWVmXHU5ZjE5XHU5ZjVjXHU5ZjY2XHU5ZjY3XHU1MTNjXHU1MTNiXHU1NmM4XHU1NmNhXHU1NmM5XHU1YjdmXHU1ZGQ0XHU1ZGQyXHU1ZjRlXHU2MWZmXHU2NTI0XHU2''@;'; put 'put ''YjBhXHU2YjYxXHU3MDUxXHU3MDU4XHU3MzgwXHU3NGU0XHU3NThhXHU3NjZlXHU3NjZjIl0sWyJjNWExIiwiXHU3OWIzXHU3YzYwXHU3YzVmXHU4MDdlXHU4MDdkXHU4MWRmXHU4OTcyXHU4OTZmXHU4OWZjXHU4YjgwXHU4ZDE2XHU4ZDE3XHU4ZTkxXHU4ZTkzXHU4ZjYxXHU5MTQ4XHU5NDQ0''@;'; put 'put ''XHU5NDUxXHU5NDUyXHU5NzNkXHU5NzNlXHU5N2MzXHU5N2MxXHU5ODZiXHU5OTU1XHU5YTU1XHU5YTRkXHU5YWQyXHU5YjFhXHU5YzQ5XHU5YzMxXHU5YzNlXHU5YzNiXHU5ZGQzXHU5ZGQ3XHU5ZjM0XHU5ZjZjXHU5ZjZhXHU5Zjk0XHU1NmNjXHU1ZGQ2XHU2MjAwXHU2NTIzXHU2NTJiXHU2''@;'; put 'put ''NTJhXHU2NmVjXHU2YjEwXHU3NGRhXHU3YWNhXHU3YzY0XHU3YzYzXHU3YzY1XHU3ZTkzXHU3ZTk2XHU3ZTk0XHU4MWUyXHU4NjM4XHU4NjNmXHU4ODMxXHU4YjhhXHU5MDkwXHU5MDhmXHU5NDYzXHU5NDYwXHU5NDY0XHU5NzY4XHU5ODZmXHU5OTVjXHU5YTVhXHU5YTViXHU5YTU3XHU5YWQz''@;'; put 'put ''XHU5YWQ0XHU5YWQxXHU5YzU0XHU5YzU3XHU5YzU2XHU5ZGU1XHU5ZTlmXHU5ZWY0XHU1NmQxXHU1OGU5XHU2NTJjXHU3MDVlXHU3NjcxXHU3NjcyXHU3N2Q3XHU3ZjUwXHU3Zjg4XHU4ODM2XHU4ODM5XHU4ODYyXHU4YjkzXHU4YjkyIl0sWyJjNjQwIiwiXHU4Yjk2XHU4Mjc3XHU4ZDFiXHU5''@;'; put 'put ''MWMwXHU5NDZhXHU5NzQyXHU5NzQ4XHU5NzQ0XHU5N2M2XHU5ODcwXHU5YTVmXHU5YjIyXHU5YjU4XHU5YzVmXHU5ZGY5XHU5ZGZhXHU5ZTdjXHU5ZTdkXHU5ZjA3XHU5Zjc3XHU5ZjcyXHU1ZWYzXHU2YjE2XHU3MDYzXHU3YzZjXHU3YzZlXHU4ODNiXHU4OWMwXHU4ZWExXHU5MWMxXHU5NDcy''@;'; put 'put ''XHU5NDcwXHU5ODcxXHU5OTVlXHU5YWQ2XHU5YjIzXHU5ZWNjXHU3MDY0XHU3N2RhXHU4YjlhXHU5NDc3XHU5N2M5XHU5YTYyXHU5YTY1XHU3ZTljXHU4YjljXHU4ZWFhXHU5MWM1XHU5NDdkXHU5NDdlXHU5NDdjXHU5Yzc3XHU5Yzc4XHU5ZWY3XHU4YzU0XHU5NDdmXHU5ZTFhXHU3MjI4XHU5''@;'; put 'put ''YTZhXHU5YjMxXHU5ZTFiXHU5ZTFlXHU3YzcyIl0sWyJjOTQwIiwiXHU0ZTQyXHU0ZTVjXHU1MWY1XHU1MzFhXHU1MzgyXHU0ZTA3XHU0ZTBjXHU0ZTQ3XHU0ZThkXHU1NmQ3XHVmYTBjXHU1YzZlXHU1ZjczXHU0ZTBmXHU1MTg3XHU0ZTBlXHU0ZTJlXHU0ZTkzXHU0ZWMyXHU0ZWM5XHU0ZWM4''@;'; put 'put ''XHU1MTk4XHU1MmZjXHU1MzZjXHU1M2I5XHU1NzIwXHU1OTAzXHU1OTJjXHU1YzEwXHU1ZGZmXHU2NWUxXHU2YmIzXHU2YmNjXHU2YzE0XHU3MjNmXHU0ZTMxXHU0ZTNjXHU0ZWU4XHU0ZWRjXHU0ZWU5XHU0ZWUxXHU0ZWRkXHU0ZWRhXHU1MjBjXHU1MzFjXHU1MzRjXHU1NzIyXHU1NzIzXHU1''@;'; put 'put ''OTE3XHU1OTJmXHU1YjgxXHU1Yjg0XHU1YzEyXHU1YzNiXHU1Yzc0XHU1YzczXHU1ZTA0XHU1ZTgwXHU1ZTgyXHU1ZmM5XHU2MjA5XHU2MjUwXHU2YzE1Il0sWyJjOWExIiwiXHU2YzM2XHU2YzQzXHU2YzNmXHU2YzNiXHU3MmFlXHU3MmIwXHU3MzhhXHU3OWI4XHU4MDhhXHU5NjFlXHU0ZjBl''@;'; put 'put ''XHU0ZjE4XHU0ZjJjXHU0ZWY1XHU0ZjE0XHU0ZWYxXHU0ZjAwXHU0ZWY3XHU0ZjA4XHU0ZjFkXHU0ZjAyXHU0ZjA1XHU0ZjIyXHU0ZjEzXHU0ZjA0XHU0ZWY0XHU0ZjEyXHU1MWIxXHU1MjEzXHU1MjA5XHU1MjEwXHU1MmE2XHU1MzIyXHU1MzFmXHU1MzRkXHU1MzhhXHU1NDA3XHU1NmUxXHU1''@;'; put 'put ''NmRmXHU1NzJlXHU1NzJhXHU1NzM0XHU1OTNjXHU1OTgwXHU1OTdjXHU1OTg1XHU1OTdiXHU1OTdlXHU1OTc3XHU1OTdmXHU1YjU2XHU1YzE1XHU1YzI1XHU1YzdjXHU1YzdhXHU1YzdiXHU1YzdlXHU1ZGRmXHU1ZTc1XHU1ZTg0XHU1ZjAyXHU1ZjFhXHU1Zjc0XHU1ZmQ1XHU1ZmQ0XHU1ZmNm''@;'; put 'put ''XHU2MjVjXHU2MjVlXHU2MjY0XHU2MjYxXHU2MjY2XHU2MjYyXHU2MjU5XHU2MjYwXHU2MjVhXHU2MjY1XHU2NWVmXHU2NWVlXHU2NzNlXHU2NzM5XHU2NzM4XHU2NzNiXHU2NzNhXHU2NzNmXHU2NzNjXHU2NzMzXHU2YzE4XHU2YzQ2XHU2YzUyXHU2YzVjXHU2YzRmXHU2YzRhXHU2YzU0XHU2''@;'; put 'put ''YzRiIl0sWyJjYTQwIiwiXHU2YzRjXHU3MDcxXHU3MjVlXHU3MmI0XHU3MmI1XHU3MzhlXHU3NTJhXHU3NjdmXHU3YTc1XHU3ZjUxXHU4Mjc4XHU4MjdjXHU4MjgwXHU4MjdkXHU4MjdmXHU4NjRkXHU4OTdlXHU5MDk5XHU5MDk3XHU5MDk4XHU5MDliXHU5MDk0XHU5NjIyXHU5NjI0XHU5NjIw''@;'; put 'put ''XHU5NjIzXHU0ZjU2XHU0ZjNiXHU0ZjYyXHU0ZjQ5XHU0ZjUzXHU0ZjY0XHU0ZjNlXHU0ZjY3XHU0ZjUyXHU0ZjVmXHU0ZjQxXHU0ZjU4XHU0ZjJkXHU0ZjMzXHU0ZjNmXHU0ZjYxXHU1MThmXHU1MWI5XHU1MjFjXHU1MjFlXHU1MjIxXHU1MmFkXHU1MmFlXHU1MzA5XHU1MzYzXHU1MzcyXHU1''@;'; put 'put ''MzhlXHU1MzhmXHU1NDMwXHU1NDM3XHU1NDJhXHU1NDU0XHU1NDQ1XHU1NDE5XHU1NDFjXHU1NDI1XHU1NDE4Il0sWyJjYWExIiwiXHU1NDNkXHU1NDRmXHU1NDQxXHU1NDI4XHU1NDI0XHU1NDQ3XHU1NmVlXHU1NmU3XHU1NmU1XHU1NzQxXHU1NzQ1XHU1NzRjXHU1NzQ5XHU1NzRiXHU1NzUy''@;'; put 'put ''XHU1OTA2XHU1OTQwXHU1OWE2XHU1OTk4XHU1OWEwXHU1OTk3XHU1OThlXHU1OWEyXHU1OTkwXHU1OThmXHU1OWE3XHU1OWExXHU1YjhlXHU1YjkyXHU1YzI4XHU1YzJhXHU1YzhkXHU1YzhmXHU1Yzg4XHU1YzhiXHU1Yzg5XHU1YzkyXHU1YzhhXHU1Yzg2XHU1YzkzXHU1Yzk1XHU1ZGUwXHU1''@;'; put 'put ''ZTBhXHU1ZTBlXHU1ZThiXHU1ZTg5XHU1ZThjXHU1ZTg4XHU1ZThkXHU1ZjA1XHU1ZjFkXHU1Zjc4XHU1Zjc2XHU1ZmQyXHU1ZmQxXHU1ZmQwXHU1ZmVkXHU1ZmU4XHU1ZmVlXHU1ZmYzXHU1ZmUxXHU1ZmU0XHU1ZmUzXHU1ZmZhXHU1ZmVmXHU1ZmY3XHU1ZmZiXHU2MDAwXHU1ZmY0XHU2MjNh''@;'; put 'put ''XHU2MjgzXHU2MjhjXHU2MjhlXHU2MjhmXHU2Mjk0XHU2Mjg3XHU2MjcxXHU2MjdiXHU2MjdhXHU2MjcwXHU2MjgxXHU2Mjg4XHU2Mjc3XHU2MjdkXHU2MjcyXHU2Mjc0XHU2NTM3XHU2NWYwXHU2NWY0XHU2NWYzXHU2NWYyXHU2NWY1XHU2NzQ1XHU2NzQ3Il0sWyJjYjQwIiwiXHU2NzU5XHU2''@;'; put 'put ''NzU1XHU2NzRjXHU2NzQ4XHU2NzVkXHU2NzRkXHU2NzVhXHU2NzRiXHU2YmQwXHU2YzE5XHU2YzFhXHU2Yzc4XHU2YzY3XHU2YzZiXHU2Yzg0XHU2YzhiXHU2YzhmXHU2YzcxXHU2YzZmXHU2YzY5XHU2YzlhXHU2YzZkXHU2Yzg3XHU2Yzk1XHU2YzljXHU2YzY2XHU2YzczXHU2YzY1XHU2Yzdi''@;'; put 'put ''XHU2YzhlXHU3MDc0XHU3MDdhXHU3MjYzXHU3MmJmXHU3MmJkXHU3MmMzXHU3MmM2XHU3MmMxXHU3MmJhXHU3MmM1XHU3Mzk1XHU3Mzk3XHU3MzkzXHU3Mzk0XHU3MzkyXHU3NTNhXHU3NTM5XHU3NTk0XHU3NTk1XHU3NjgxXHU3OTNkXHU4MDM0XHU4MDk1XHU4MDk5XHU4MDkwXHU4MDkyXHU4''@;'; put 'put ''MDljXHU4MjkwXHU4MjhmXHU4Mjg1XHU4MjhlXHU4MjkxXHU4MjkzIl0sWyJjYmExIiwiXHU4MjhhXHU4MjgzXHU4Mjg0XHU4Yzc4XHU4ZmM5XHU4ZmJmXHU5MDlmXHU5MGExXHU5MGE1XHU5MDllXHU5MGE3XHU5MGEwXHU5NjMwXHU5NjI4XHU5NjJmXHU5NjJkXHU0ZTMzXHU0Zjk4XHU0Zjdj''@;'; put 'put ''XHU0Zjg1XHU0ZjdkXHU0ZjgwXHU0Zjg3XHU0Zjc2XHU0Zjc0XHU0Zjg5XHU0Zjg0XHU0Zjc3XHU0ZjRjXHU0Zjk3XHU0ZjZhXHU0ZjlhXHU0Zjc5XHU0ZjgxXHU0Zjc4XHU0ZjkwXHU0ZjljXHU0Zjk0XHU0ZjllXHU0ZjkyXHU0ZjgyXHU0Zjk1XHU0ZjZiXHU0ZjZlXHU1MTllXHU1MWJjXHU1''@;'; put 'put ''MWJlXHU1MjM1XHU1MjMyXHU1MjMzXHU1MjQ2XHU1MjMxXHU1MmJjXHU1MzBhXHU1MzBiXHU1MzNjXHU1MzkyXHU1Mzk0XHU1NDg3XHU1NDdmXHU1NDgxXHU1NDkxXHU1NDgyXHU1NDg4XHU1NDZiXHU1NDdhXHU1NDdlXHU1NDY1XHU1NDZjXHU1NDc0XHU1NDY2XHU1NDhkXHU1NDZmXHU1NDYx''@;'; put 'put ''XHU1NDYwXHU1NDk4XHU1NDYzXHU1NDY3XHU1NDY0XHU1NmY3XHU1NmY5XHU1NzZmXHU1NzcyXHU1NzZkXHU1NzZiXHU1NzcxXHU1NzcwXHU1Nzc2XHU1NzgwXHU1Nzc1XHU1NzdiXHU1NzczXHU1Nzc0XHU1NzYyIl0sWyJjYzQwIiwiXHU1NzY4XHU1NzdkXHU1OTBjXHU1OTQ1XHU1OWI1XHU1''@;'; put 'put ''OWJhXHU1OWNmXHU1OWNlXHU1OWIyXHU1OWNjXHU1OWMxXHU1OWI2XHU1OWJjXHU1OWMzXHU1OWQ2XHU1OWIxXHU1OWJkXHU1OWMwXHU1OWM4XHU1OWI0XHU1OWM3XHU1YjYyXHU1YjY1XHU1YjkzXHU1Yjk1XHU1YzQ0XHU1YzQ3XHU1Y2FlXHU1Y2E0XHU1Y2EwXHU1Y2I1XHU1Y2FmXHU1Y2E4''@;'; put 'put ''XHU1Y2FjXHU1YzlmXHU1Y2EzXHU1Y2FkXHU1Y2EyXHU1Y2FhXHU1Y2E3XHU1YzlkXHU1Y2E1XHU1Y2I2XHU1Y2IwXHU1Y2E2XHU1ZTE3XHU1ZTE0XHU1ZTE5XHU1ZjI4XHU1ZjIyXHU1ZjIzXHU1ZjI0XHU1ZjU0XHU1ZjgyXHU1ZjdlXHU1ZjdkXHU1ZmRlXHU1ZmU1XHU2MDJkXHU2MDI2XHU2''@;'; put 'put ''MDE5XHU2MDMyXHU2MDBiIl0sWyJjY2ExIiwiXHU2MDM0XHU2MDBhXHU2MDE3XHU2MDMzXHU2MDFhXHU2MDFlXHU2MDJjXHU2MDIyXHU2MDBkXHU2MDEwXHU2MDJlXHU2MDEzXHU2MDExXHU2MDBjXHU2MDA5XHU2MDFjXHU2MjE0XHU2MjNkXHU2MmFkXHU2MmI0XHU2MmQxXHU2MmJlXHU2MmFh''@;'; put 'put ''XHU2MmI2XHU2MmNhXHU2MmFlXHU2MmIzXHU2MmFmXHU2MmJiXHU2MmE5XHU2MmIwXHU2MmI4XHU2NTNkXHU2NWE4XHU2NWJiXHU2NjA5XHU2NWZjXHU2NjA0XHU2NjEyXHU2NjA4XHU2NWZiXHU2NjAzXHU2NjBiXHU2NjBkXHU2NjA1XHU2NWZkXHU2NjExXHU2NjEwXHU2NmY2XHU2NzBhXHU2''@;'; put 'put ''Nzg1XHU2NzZjXHU2NzhlXHU2NzkyXHU2Nzc2XHU2NzdiXHU2Nzk4XHU2Nzg2XHU2Nzg0XHU2Nzc0XHU2NzhkXHU2NzhjXHU2NzdhXHU2NzlmXHU2NzkxXHU2Nzk5XHU2NzgzXHU2NzdkXHU2NzgxXHU2Nzc4XHU2Nzc5XHU2Nzk0XHU2YjI1XHU2YjgwXHU2YjdlXHU2YmRlXHU2YzFkXHU2Yzkz''@;'; put 'put ''XHU2Y2VjXHU2Y2ViXHU2Y2VlXHU2Y2Q5XHU2Y2I2XHU2Y2Q0XHU2Y2FkXHU2Y2U3XHU2Y2I3XHU2Y2QwXHU2Y2MyXHU2Y2JhXHU2Y2MzXHU2Y2M2XHU2Y2VkXHU2Y2YyIl0sWyJjZDQwIiwiXHU2Y2QyXHU2Y2RkXHU2Y2I0XHU2YzhhXHU2YzlkXHU2YzgwXHU2Y2RlXHU2Y2MwXHU2ZDMwXHU2''@;'; put 'put ''Y2NkXHU2Y2M3XHU2Y2IwXHU2Y2Y5XHU2Y2NmXHU2Y2U5XHU2Y2QxXHU3MDk0XHU3MDk4XHU3MDg1XHU3MDkzXHU3MDg2XHU3MDg0XHU3MDkxXHU3MDk2XHU3MDgyXHU3MDlhXHU3MDgzXHU3MjZhXHU3MmQ2XHU3MmNiXHU3MmQ4XHU3MmM5XHU3MmRjXHU3MmQyXHU3MmQ0XHU3MmRhXHU3MmNj''@;'; put 'put ''XHU3MmQxXHU3M2E0XHU3M2ExXHU3M2FkXHU3M2E2XHU3M2EyXHU3M2EwXHU3M2FjXHU3MzlkXHU3NGRkXHU3NGU4XHU3NTNmXHU3NTQwXHU3NTNlXHU3NThjXHU3NTk4XHU3NmFmXHU3NmYzXHU3NmYxXHU3NmYwXHU3NmY1XHU3N2Y4XHU3N2ZjXHU3N2Y5XHU3N2ZiXHU3N2ZhIl0sWyJjZGEx''@;'; put 'put ''IiwiXHU3N2Y3XHU3OTQyXHU3OTNmXHU3OWM1XHU3YTc4XHU3YTdiXHU3YWZiXHU3Yzc1XHU3Y2ZkXHU4MDM1XHU4MDhmXHU4MGFlXHU4MGEzXHU4MGI4XHU4MGI1XHU4MGFkXHU4MjIwXHU4MmEwXHU4MmMwXHU4MmFiXHU4MjlhXHU4Mjk4XHU4MjliXHU4MmI1XHU4MmE3XHU4MmFlXHU4MmJj''@;'; put 'put ''XHU4MjllXHU4MmJhXHU4MmI0XHU4MmE4XHU4MmExXHU4MmE5XHU4MmMyXHU4MmE0XHU4MmMzXHU4MmI2XHU4MmEyXHU4NjcwXHU4NjZmXHU4NjZkXHU4NjZlXHU4YzU2XHU4ZmQyXHU4ZmNiXHU4ZmQzXHU4ZmNkXHU4ZmQ2XHU4ZmQ1XHU4ZmQ3XHU5MGIyXHU5MGI0XHU5MGFmXHU5MGIzXHU5''@;'; put 'put ''MGIwXHU5NjM5XHU5NjNkXHU5NjNjXHU5NjNhXHU5NjQzXHU0ZmNkXHU0ZmM1XHU0ZmQzXHU0ZmIyXHU0ZmM5XHU0ZmNiXHU0ZmMxXHU0ZmQ0XHU0ZmRjXHU0ZmQ5XHU0ZmJiXHU0ZmIzXHU0ZmRiXHU0ZmM3XHU0ZmQ2XHU0ZmJhXHU0ZmMwXHU0ZmI5XHU0ZmVjXHU1MjQ0XHU1MjQ5XHU1MmMw''@;'; put 'put ''XHU1MmMyXHU1MzNkXHU1MzdjXHU1Mzk3XHU1Mzk2XHU1Mzk5XHU1Mzk4XHU1NGJhXHU1NGExXHU1NGFkXHU1NGE1XHU1NGNmIl0sWyJjZTQwIiwiXHU1NGMzXHU4MzBkXHU1NGI3XHU1NGFlXHU1NGQ2XHU1NGI2XHU1NGM1XHU1NGM2XHU1NGEwXHU1NDcwXHU1NGJjXHU1NGEyXHU1NGJlXHU1''@;'; put 'put ''NDcyXHU1NGRlXHU1NGIwXHU1N2I1XHU1NzllXHU1NzlmXHU1N2E0XHU1NzhjXHU1Nzk3XHU1NzlkXHU1NzliXHU1Nzk0XHU1Nzk4XHU1NzhmXHU1Nzk5XHU1N2E1XHU1NzlhXHU1Nzk1XHU1OGY0XHU1OTBkXHU1OTUzXHU1OWUxXHU1OWRlXHU1OWVlXHU1YTAwXHU1OWYxXHU1OWRkXHU1OWZh''@;'; put 'put ''XHU1OWZkXHU1OWZjXHU1OWY2XHU1OWU0XHU1OWYyXHU1OWY3XHU1OWRiXHU1OWU5XHU1OWYzXHU1OWY1XHU1OWUwXHU1OWZlXHU1OWY0XHU1OWVkXHU1YmE4XHU1YzRjXHU1Y2QwXHU1Y2Q4XHU1Y2NjXHU1Y2Q3XHU1Y2NiXHU1Y2RiIl0sWyJjZWExIiwiXHU1Y2RlXHU1Y2RhXHU1Y2M5XHU1''@;'; put 'put ''Y2M3XHU1Y2NhXHU1Y2Q2XHU1Y2QzXHU1Y2Q0XHU1Y2NmXHU1Y2M4XHU1Y2M2XHU1Y2NlXHU1Y2RmXHU1Y2Y4XHU1ZGY5XHU1ZTIxXHU1ZTIyXHU1ZTIzXHU1ZTIwXHU1ZTI0XHU1ZWIwXHU1ZWE0XHU1ZWEyXHU1ZTliXHU1ZWEzXHU1ZWE1XHU1ZjA3XHU1ZjJlXHU1ZjU2XHU1Zjg2XHU2MDM3''@;'; put 'put ''XHU2MDM5XHU2MDU0XHU2MDcyXHU2MDVlXHU2MDQ1XHU2MDUzXHU2MDQ3XHU2MDQ5XHU2MDViXHU2MDRjXHU2MDQwXHU2MDQyXHU2MDVmXHU2MDI0XHU2MDQ0XHU2MDU4XHU2MDY2XHU2MDZlXHU2MjQyXHU2MjQzXHU2MmNmXHU2MzBkXHU2MzBiXHU2MmY1XHU2MzBlXHU2MzAzXHU2MmViXHU2''@;'; put 'put ''MmY5XHU2MzBmXHU2MzBjXHU2MmY4XHU2MmY2XHU2MzAwXHU2MzEzXHU2MzE0XHU2MmZhXHU2MzE1XHU2MmZiXHU2MmYwXHU2NTQxXHU2NTQzXHU2NWFhXHU2NWJmXHU2NjM2XHU2NjIxXHU2NjMyXHU2NjM1XHU2NjFjXHU2NjI2XHU2NjIyXHU2NjMzXHU2NjJiXHU2NjNhXHU2NjFkXHU2NjM0''@;'; put 'put ''XHU2NjM5XHU2NjJlXHU2NzBmXHU2NzEwXHU2N2MxXHU2N2YyXHU2N2M4XHU2N2JhIl0sWyJjZjQwIiwiXHU2N2RjXHU2N2JiXHU2N2Y4XHU2N2Q4XHU2N2MwXHU2N2I3XHU2N2M1XHU2N2ViXHU2N2U0XHU2N2RmXHU2N2I1XHU2N2NkXHU2N2IzXHU2N2Y3XHU2N2Y2XHU2N2VlXHU2N2UzXHU2''@;'; put 'put ''N2MyXHU2N2I5XHU2N2NlXHU2N2U3XHU2N2YwXHU2N2IyXHU2N2ZjXHU2N2M2XHU2N2VkXHU2N2NjXHU2N2FlXHU2N2U2XHU2N2RiXHU2N2ZhXHU2N2M5XHU2N2NhXHU2N2MzXHU2N2VhXHU2N2NiXHU2YjI4XHU2YjgyXHU2Yjg0XHU2YmI2XHU2YmQ2XHU2YmQ4XHU2YmUwXHU2YzIwXHU2YzIx''@;'; put 'put ''XHU2ZDI4XHU2ZDM0XHU2ZDJkXHU2ZDFmXHU2ZDNjXHU2ZDNmXHU2ZDEyXHU2ZDBhXHU2Y2RhXHU2ZDMzXHU2ZDA0XHU2ZDE5XHU2ZDNhXHU2ZDFhXHU2ZDExXHU2ZDAwXHU2ZDFkXHU2ZDQyIl0sWyJjZmExIiwiXHU2ZDAxXHU2ZDE4XHU2ZDM3XHU2ZDAzXHU2ZDBmXHU2ZDQwXHU2ZDA3XHU2''@;'; put 'put ''ZDIwXHU2ZDJjXHU2ZDA4XHU2ZDIyXHU2ZDA5XHU2ZDEwXHU3MGI3XHU3MDlmXHU3MGJlXHU3MGIxXHU3MGIwXHU3MGExXHU3MGI0XHU3MGI1XHU3MGE5XHU3MjQxXHU3MjQ5XHU3MjRhXHU3MjZjXHU3MjcwXHU3MjczXHU3MjZlXHU3MmNhXHU3MmU0XHU3MmU4XHU3MmViXHU3MmRmXHU3MmVh''@;'; put 'put ''XHU3MmU2XHU3MmUzXHU3Mzg1XHU3M2NjXHU3M2MyXHU3M2M4XHU3M2M1XHU3M2I5XHU3M2I2XHU3M2I1XHU3M2I0XHU3M2ViXHU3M2JmXHU3M2M3XHU3M2JlXHU3M2MzXHU3M2M2XHU3M2I4XHU3M2NiXHU3NGVjXHU3NGVlXHU3NTJlXHU3NTQ3XHU3NTQ4XHU3NWE3XHU3NWFhXHU3Njc5XHU3''@;'; put 'put ''NmM0XHU3NzA4XHU3NzAzXHU3NzA0XHU3NzA1XHU3NzBhXHU3NmY3XHU3NmZiXHU3NmZhXHU3N2U3XHU3N2U4XHU3ODA2XHU3ODExXHU3ODEyXHU3ODA1XHU3ODEwXHU3ODBmXHU3ODBlXHU3ODA5XHU3ODAzXHU3ODEzXHU3OTRhXHU3OTRjXHU3OTRiXHU3OTQ1XHU3OTQ0XHU3OWQ1XHU3OWNk''@;'; put 'put ''XHU3OWNmXHU3OWQ2XHU3OWNlXHU3YTgwIl0sWyJkMDQwIiwiXHU3YTdlXHU3YWQxXHU3YjAwXHU3YjAxXHU3YzdhXHU3Yzc4XHU3Yzc5XHU3YzdmXHU3YzgwXHU3YzgxXHU3ZDAzXHU3ZDA4XHU3ZDAxXHU3ZjU4XHU3ZjkxXHU3ZjhkXHU3ZmJlXHU4MDA3XHU4MDBlXHU4MDBmXHU4MDE0XHU4''@;'; put 'put ''MDM3XHU4MGQ4XHU4MGM3XHU4MGUwXHU4MGQxXHU4MGM4XHU4MGMyXHU4MGQwXHU4MGM1XHU4MGUzXHU4MGQ5XHU4MGRjXHU4MGNhXHU4MGQ1XHU4MGM5XHU4MGNmXHU4MGQ3XHU4MGU2XHU4MGNkXHU4MWZmXHU4MjIxXHU4Mjk0XHU4MmQ5XHU4MmZlXHU4MmY5XHU4MzA3XHU4MmU4XHU4MzAw''@;'; put 'put ''XHU4MmQ1XHU4MzNhXHU4MmViXHU4MmQ2XHU4MmY0XHU4MmVjXHU4MmUxXHU4MmYyXHU4MmY1XHU4MzBjXHU4MmZiXHU4MmY2XHU4MmYwXHU4MmVhIl0sWyJkMGExIiwiXHU4MmU0XHU4MmUwXHU4MmZhXHU4MmYzXHU4MmVkXHU4Njc3XHU4Njc0XHU4NjdjXHU4NjczXHU4ODQxXHU4ODRlXHU4''@;'; put 'put ''ODY3XHU4ODZhXHU4ODY5XHU4OWQzXHU4YTA0XHU4YTA3XHU4ZDcyXHU4ZmUzXHU4ZmUxXHU4ZmVlXHU4ZmUwXHU5MGYxXHU5MGJkXHU5MGJmXHU5MGQ1XHU5MGM1XHU5MGJlXHU5MGM3XHU5MGNiXHU5MGM4XHU5MWQ0XHU5MWQzXHU5NjU0XHU5NjRmXHU5NjUxXHU5NjUzXHU5NjRhXHU5NjRl''@;'; put 'put ''XHU1MDFlXHU1MDA1XHU1MDA3XHU1MDEzXHU1MDIyXHU1MDMwXHU1MDFiXHU0ZmY1XHU0ZmY0XHU1MDMzXHU1MDM3XHU1MDJjXHU0ZmY2XHU0ZmY3XHU1MDE3XHU1MDFjXHU1MDIwXHU1MDI3XHU1MDM1XHU1MDJmXHU1MDMxXHU1MDBlXHU1MTVhXHU1MTk0XHU1MTkzXHU1MWNhXHU1MWM0XHU1''@;'; put 'put ''MWM1XHU1MWM4XHU1MWNlXHU1MjYxXHU1MjVhXHU1MjUyXHU1MjVlXHU1MjVmXHU1MjU1XHU1MjYyXHU1MmNkXHU1MzBlXHU1MzllXHU1NTI2XHU1NGUyXHU1NTE3XHU1NTEyXHU1NGU3XHU1NGYzXHU1NGU0XHU1NTFhXHU1NGZmXHU1NTA0XHU1NTA4XHU1NGViXHU1NTExXHU1NTA1XHU1NGYx''@;'; put 'put ''Il0sWyJkMTQwIiwiXHU1NTBhXHU1NGZiXHU1NGY3XHU1NGY4XHU1NGUwXHU1NTBlXHU1NTAzXHU1NTBiXHU1NzAxXHU1NzAyXHU1N2NjXHU1ODMyXHU1N2Q1XHU1N2QyXHU1N2JhXHU1N2M2XHU1N2JkXHU1N2JjXHU1N2I4XHU1N2I2XHU1N2JmXHU1N2M3XHU1N2QwXHU1N2I5XHU1N2MxXHU1''@;'; put 'put ''OTBlXHU1OTRhXHU1YTE5XHU1YTE2XHU1YTJkXHU1YTJlXHU1YTE1XHU1YTBmXHU1YTE3XHU1YTBhXHU1YTFlXHU1YTMzXHU1YjZjXHU1YmE3XHU1YmFkXHU1YmFjXHU1YzAzXHU1YzU2XHU1YzU0XHU1Y2VjXHU1Y2ZmXHU1Y2VlXHU1Y2YxXHU1Y2Y3XHU1ZDAwXHU1Y2Y5XHU1ZTI5XHU1ZTI4''@;'; put 'put ''XHU1ZWE4XHU1ZWFlXHU1ZWFhXHU1ZWFjXHU1ZjMzXHU1ZjMwXHU1ZjY3XHU2MDVkXHU2MDVhXHU2MDY3Il0sWyJkMWExIiwiXHU2MDQxXHU2MGEyXHU2MDg4XHU2MDgwXHU2MDkyXHU2MDgxXHU2MDlkXHU2MDgzXHU2MDk1XHU2MDliXHU2MDk3XHU2MDg3XHU2MDljXHU2MDhlXHU2MjE5XHU2''@;'; put 'put ''MjQ2XHU2MmYyXHU2MzEwXHU2MzU2XHU2MzJjXHU2MzQ0XHU2MzQ1XHU2MzM2XHU2MzQzXHU2M2U0XHU2MzM5XHU2MzRiXHU2MzRhXHU2MzNjXHU2MzI5XHU2MzQxXHU2MzM0XHU2MzU4XHU2MzU0XHU2MzU5XHU2MzJkXHU2MzQ3XHU2MzMzXHU2MzVhXHU2MzUxXHU2MzM4XHU2MzU3XHU2MzQw''@;'; put 'put ''XHU2MzQ4XHU2NTRhXHU2NTQ2XHU2NWM2XHU2NWMzXHU2NWM0XHU2NWMyXHU2NjRhXHU2NjVmXHU2NjQ3XHU2NjUxXHU2NzEyXHU2NzEzXHU2ODFmXHU2ODFhXHU2ODQ5XHU2ODMyXHU2ODMzXHU2ODNiXHU2ODRiXHU2ODRmXHU2ODE2XHU2ODMxXHU2ODFjXHU2ODM1XHU2ODJiXHU2ODJkXHU2''@;'; put 'put ''ODJmXHU2ODRlXHU2ODQ0XHU2ODM0XHU2ODFkXHU2ODEyXHU2ODE0XHU2ODI2XHU2ODI4XHU2ODJlXHU2ODRkXHU2ODNhXHU2ODI1XHU2ODIwXHU2YjJjXHU2YjJmXHU2YjJkXHU2YjMxXHU2YjM0XHU2YjZkXHU4MDgyXHU2Yjg4XHU2YmU2XHU2YmU0Il0sWyJkMjQwIiwiXHU2YmU4XHU2YmUz''@;'; put 'put ''XHU2YmUyXHU2YmU3XHU2YzI1XHU2ZDdhXHU2ZDYzXHU2ZDY0XHU2ZDc2XHU2ZDBkXHU2ZDYxXHU2ZDkyXHU2ZDU4XHU2ZDYyXHU2ZDZkXHU2ZDZmXHU2ZDkxXHU2ZDhkXHU2ZGVmXHU2ZDdmXHU2ZDg2XHU2ZDVlXHU2ZDY3XHU2ZDYwXHU2ZDk3XHU2ZDcwXHU2ZDdjXHU2ZDVmXHU2ZDgyXHU2''@;'; put 'put ''ZDk4XHU2ZDJmXHU2ZDY4XHU2ZDhiXHU2ZDdlXHU2ZDgwXHU2ZDg0XHU2ZDE2XHU2ZDgzXHU2ZDdiXHU2ZDdkXHU2ZDc1XHU2ZDkwXHU3MGRjXHU3MGQzXHU3MGQxXHU3MGRkXHU3MGNiXHU3ZjM5XHU3MGUyXHU3MGQ3XHU3MGQyXHU3MGRlXHU3MGUwXHU3MGQ0XHU3MGNkXHU3MGM1XHU3MGM2''@;'; put 'put ''XHU3MGM3XHU3MGRhXHU3MGNlXHU3MGUxXHU3MjQyXHU3Mjc4Il0sWyJkMmExIiwiXHU3Mjc3XHU3Mjc2XHU3MzAwXHU3MmZhXHU3MmY0XHU3MmZlXHU3MmY2XHU3MmYzXHU3MmZiXHU3MzAxXHU3M2QzXHU3M2Q5XHU3M2U1XHU3M2Q2XHU3M2JjXHU3M2U3XHU3M2UzXHU3M2U5XHU3M2RjXHU3''@;'; put 'put ''M2QyXHU3M2RiXHU3M2Q0XHU3M2RkXHU3M2RhXHU3M2Q3XHU3M2Q4XHU3M2U4XHU3NGRlXHU3NGRmXHU3NGY0XHU3NGY1XHU3NTIxXHU3NTViXHU3NTVmXHU3NWIwXHU3NWMxXHU3NWJiXHU3NWM0XHU3NWMwXHU3NWJmXHU3NWI2XHU3NWJhXHU3NjhhXHU3NmM5XHU3NzFkXHU3NzFiXHU3NzEw''@;'; put 'put ''XHU3NzEzXHU3NzEyXHU3NzIzXHU3NzExXHU3NzE1XHU3NzE5XHU3NzFhXHU3NzIyXHU3NzI3XHU3ODIzXHU3ODJjXHU3ODIyXHU3ODM1XHU3ODJmXHU3ODI4XHU3ODJlXHU3ODJiXHU3ODIxXHU3ODI5XHU3ODMzXHU3ODJhXHU3ODMxXHU3OTU0XHU3OTViXHU3OTRmXHU3OTVjXHU3OTUzXHU3''@;'; put 'put ''OTUyXHU3OTUxXHU3OWViXHU3OWVjXHU3OWUwXHU3OWVlXHU3OWVkXHU3OWVhXHU3OWRjXHU3OWRlXHU3OWRkXHU3YTg2XHU3YTg5XHU3YTg1XHU3YThiXHU3YThjXHU3YThhXHU3YTg3XHU3YWQ4XHU3YjEwIl0sWyJkMzQwIiwiXHU3YjA0XHU3YjEzXHU3YjA1XHU3YjBmXHU3YjA4XHU3YjBh''@;'; put 'put ''XHU3YjBlXHU3YjA5XHU3YjEyXHU3Yzg0XHU3YzkxXHU3YzhhXHU3YzhjXHU3Yzg4XHU3YzhkXHU3Yzg1XHU3ZDFlXHU3ZDFkXHU3ZDExXHU3ZDBlXHU3ZDE4XHU3ZDE2XHU3ZDEzXHU3ZDFmXHU3ZDEyXHU3ZDBmXHU3ZDBjXHU3ZjVjXHU3ZjYxXHU3ZjVlXHU3ZjYwXHU3ZjVkXHU3ZjViXHU3''@;'; put 'put ''Zjk2XHU3ZjkyXHU3ZmMzXHU3ZmMyXHU3ZmMwXHU4MDE2XHU4MDNlXHU4MDM5XHU4MGZhXHU4MGYyXHU4MGY5XHU4MGY1XHU4MTAxXHU4MGZiXHU4MTAwXHU4MjAxXHU4MjJmXHU4MjI1XHU4MzMzXHU4MzJkXHU4MzQ0XHU4MzE5XHU4MzUxXHU4MzI1XHU4MzU2XHU4MzNmXHU4MzQxXHU4MzI2''@;'; put 'put ''XHU4MzFjXHU4MzIyIl0sWyJkM2ExIiwiXHU4MzQyXHU4MzRlXHU4MzFiXHU4MzJhXHU4MzA4XHU4MzNjXHU4MzRkXHU4MzE2XHU4MzI0XHU4MzIwXHU4MzM3XHU4MzJmXHU4MzI5XHU4MzQ3XHU4MzQ1XHU4MzRjXHU4MzUzXHU4MzFlXHU4MzJjXHU4MzRiXHU4MzI3XHU4MzQ4XHU4NjUzXHU4''@;'; put 'put ''NjUyXHU4NmEyXHU4NmE4XHU4Njk2XHU4NjhkXHU4NjkxXHU4NjllXHU4Njg3XHU4Njk3XHU4Njg2XHU4NjhiXHU4NjlhXHU4Njg1XHU4NmE1XHU4Njk5XHU4NmExXHU4NmE3XHU4Njk1XHU4Njk4XHU4NjhlXHU4NjlkXHU4NjkwXHU4Njk0XHU4ODQzXHU4ODQ0XHU4ODZkXHU4ODc1XHU4ODc2''@;'; put 'put ''XHU4ODcyXHU4ODgwXHU4ODcxXHU4ODdmXHU4ODZmXHU4ODgzXHU4ODdlXHU4ODc0XHU4ODdjXHU4YTEyXHU4YzQ3XHU4YzU3XHU4YzdiXHU4Y2E0XHU4Y2EzXHU4ZDc2XHU4ZDc4XHU4ZGI1XHU4ZGI3XHU4ZGI2XHU4ZWQxXHU4ZWQzXHU4ZmZlXHU4ZmY1XHU5MDAyXHU4ZmZmXHU4ZmZiXHU5''@;'; put 'put ''MDA0XHU4ZmZjXHU4ZmY2XHU5MGQ2XHU5MGUwXHU5MGQ5XHU5MGRhXHU5MGUzXHU5MGRmXHU5MGU1XHU5MGQ4XHU5MGRiXHU5MGQ3XHU5MGRjXHU5MGU0XHU5MTUwIl0sWyJkNDQwIiwiXHU5MTRlXHU5MTRmXHU5MWQ1XHU5MWUyXHU5MWRhXHU5NjVjXHU5NjVmXHU5NmJjXHU5OGUzXHU5YWRm''@;'; put 'put ''XHU5YjJmXHU0ZTdmXHU1MDcwXHU1MDZhXHU1MDYxXHU1MDVlXHU1MDYwXHU1MDUzXHU1MDRiXHU1MDVkXHU1MDcyXHU1MDQ4XHU1MDRkXHU1MDQxXHU1MDViXHU1MDRhXHU1MDYyXHU1MDE1XHU1MDQ1XHU1MDVmXHU1MDY5XHU1MDZiXHU1MDYzXHU1MDY0XHU1MDQ2XHU1MDQwXHU1MDZlXHU1''@;'; put 'put ''MDczXHU1MDU3XHU1MDUxXHU1MWQwXHU1MjZiXHU1MjZkXHU1MjZjXHU1MjZlXHU1MmQ2XHU1MmQzXHU1MzJkXHU1MzljXHU1NTc1XHU1NTc2XHU1NTNjXHU1NTRkXHU1NTUwXHU1NTM0XHU1NTJhXHU1NTUxXHU1NTYyXHU1NTM2XHU1NTM1XHU1NTMwXHU1NTUyXHU1NTQ1Il0sWyJkNGExIiwi''@;'; put 'put ''XHU1NTBjXHU1NTMyXHU1NTY1XHU1NTRlXHU1NTM5XHU1NTQ4XHU1NTJkXHU1NTNiXHU1NTQwXHU1NTRiXHU1NzBhXHU1NzA3XHU1N2ZiXHU1ODE0XHU1N2UyXHU1N2Y2XHU1N2RjXHU1N2Y0XHU1ODAwXHU1N2VkXHU1N2ZkXHU1ODA4XHU1N2Y4XHU1ODBiXHU1N2YzXHU1N2NmXHU1ODA3XHU1''@;'; put 'put ''N2VlXHU1N2UzXHU1N2YyXHU1N2U1XHU1N2VjXHU1N2UxXHU1ODBlXHU1N2ZjXHU1ODEwXHU1N2U3XHU1ODAxXHU1ODBjXHU1N2YxXHU1N2U5XHU1N2YwXHU1ODBkXHU1ODA0XHU1OTVjXHU1YTYwXHU1YTU4XHU1YTU1XHU1YTY3XHU1YTVlXHU1YTM4XHU1YTM1XHU1YTZkXHU1YTUwXHU1YTVm''@;'; put 'put ''XHU1YTY1XHU1YTZjXHU1YTUzXHU1YTY0XHU1YTU3XHU1YTQzXHU1YTVkXHU1YTUyXHU1YTQ0XHU1YTViXHU1YTQ4XHU1YThlXHU1YTNlXHU1YTRkXHU1YTM5XHU1YTRjXHU1YTcwXHU1YTY5XHU1YTQ3XHU1YTUxXHU1YTU2XHU1YTQyXHU1YTVjXHU1YjcyXHU1YjZlXHU1YmMxXHU1YmMwXHU1''@;'; put 'put ''YzU5XHU1ZDFlXHU1ZDBiXHU1ZDFkXHU1ZDFhXHU1ZDIwXHU1ZDBjXHU1ZDI4XHU1ZDBkXHU1ZDI2XHU1ZDI1XHU1ZDBmIl0sWyJkNTQwIiwiXHU1ZDMwXHU1ZDEyXHU1ZDIzXHU1ZDFmXHU1ZDJlXHU1ZTNlXHU1ZTM0XHU1ZWIxXHU1ZWI0XHU1ZWI5XHU1ZWIyXHU1ZWIzXHU1ZjM2XHU1ZjM4''@;'; put 'put ''XHU1ZjliXHU1Zjk2XHU1ZjlmXHU2MDhhXHU2MDkwXHU2MDg2XHU2MGJlXHU2MGIwXHU2MGJhXHU2MGQzXHU2MGQ0XHU2MGNmXHU2MGU0XHU2MGQ5XHU2MGRkXHU2MGM4XHU2MGIxXHU2MGRiXHU2MGI3XHU2MGNhXHU2MGJmXHU2MGMzXHU2MGNkXHU2MGMwXHU2MzMyXHU2MzY1XHU2MzhhXHU2''@;'; put 'put ''MzgyXHU2MzdkXHU2M2JkXHU2MzllXHU2M2FkXHU2MzlkXHU2Mzk3XHU2M2FiXHU2MzhlXHU2MzZmXHU2Mzg3XHU2MzkwXHU2MzZlXHU2M2FmXHU2Mzc1XHU2MzljXHU2MzZkXHU2M2FlXHU2MzdjXHU2M2E0XHU2MzNiXHU2MzlmIl0sWyJkNWExIiwiXHU2Mzc4XHU2Mzg1XHU2MzgxXHU2Mzkx''@;'; put 'put ''XHU2MzhkXHU2MzcwXHU2NTUzXHU2NWNkXHU2NjY1XHU2NjYxXHU2NjViXHU2NjU5XHU2NjVjXHU2NjYyXHU2NzE4XHU2ODc5XHU2ODg3XHU2ODkwXHU2ODljXHU2ODZkXHU2ODZlXHU2OGFlXHU2OGFiXHU2OTU2XHU2ODZmXHU2OGEzXHU2OGFjXHU2OGE5XHU2ODc1XHU2ODc0XHU2OGIyXHU2''@;'; put 'put ''ODhmXHU2ODc3XHU2ODkyXHU2ODdjXHU2ODZiXHU2ODcyXHU2OGFhXHU2ODgwXHU2ODcxXHU2ODdlXHU2ODliXHU2ODk2XHU2ODhiXHU2OGEwXHU2ODg5XHU2OGE0XHU2ODc4XHU2ODdiXHU2ODkxXHU2ODhjXHU2ODhhXHU2ODdkXHU2YjM2XHU2YjMzXHU2YjM3XHU2YjM4XHU2YjkxXHU2Yjhm''@;'; put 'put ''XHU2YjhkXHU2YjhlXHU2YjhjXHU2YzJhXHU2ZGMwXHU2ZGFiXHU2ZGI0XHU2ZGIzXHU2ZTc0XHU2ZGFjXHU2ZGU5XHU2ZGUyXHU2ZGI3XHU2ZGY2XHU2ZGQ0XHU2ZTAwXHU2ZGM4XHU2ZGUwXHU2ZGRmXHU2ZGQ2XHU2ZGJlXHU2ZGU1XHU2ZGRjXHU2ZGRkXHU2ZGRiXHU2ZGY0XHU2ZGNhXHU2''@;'; put 'put ''ZGJkXHU2ZGVkXHU2ZGYwXHU2ZGJhXHU2ZGQ1XHU2ZGMyXHU2ZGNmXHU2ZGM5Il0sWyJkNjQwIiwiXHU2ZGQwXHU2ZGYyXHU2ZGQzXHU2ZGZkXHU2ZGQ3XHU2ZGNkXHU2ZGUzXHU2ZGJiXHU3MGZhXHU3MTBkXHU3MGY3XHU3MTE3XHU3MGY0XHU3MTBjXHU3MGYwXHU3MTA0XHU3MGYzXHU3MTEw''@;'; put 'put ''XHU3MGZjXHU3MGZmXHU3MTA2XHU3MTEzXHU3MTAwXHU3MGY4XHU3MGY2XHU3MTBiXHU3MTAyXHU3MTBlXHU3MjdlXHU3MjdiXHU3MjdjXHU3MjdmXHU3MzFkXHU3MzE3XHU3MzA3XHU3MzExXHU3MzE4XHU3MzBhXHU3MzA4XHU3MmZmXHU3MzBmXHU3MzFlXHU3Mzg4XHU3M2Y2XHU3M2Y4XHU3''@;'; put 'put ''M2Y1XHU3NDA0XHU3NDAxXHU3M2ZkXHU3NDA3XHU3NDAwXHU3M2ZhXHU3M2ZjXHU3M2ZmXHU3NDBjXHU3NDBiXHU3M2Y0XHU3NDA4XHU3NTY0XHU3NTYzXHU3NWNlXHU3NWQyXHU3NWNmIl0sWyJkNmExIiwiXHU3NWNiXHU3NWNjXHU3NWQxXHU3NWQwXHU3NjhmXHU3Njg5XHU3NmQzXHU3NzM5''@;'; put 'put ''XHU3NzJmXHU3NzJkXHU3NzMxXHU3NzMyXHU3NzM0XHU3NzMzXHU3NzNkXHU3NzI1XHU3NzNiXHU3NzM1XHU3ODQ4XHU3ODUyXHU3ODQ5XHU3ODRkXHU3ODRhXHU3ODRjXHU3ODI2XHU3ODQ1XHU3ODUwXHU3OTY0XHU3OTY3XHU3OTY5XHU3OTZhXHU3OTYzXHU3OTZiXHU3OTYxXHU3OWJiXHU3''@;'; put 'put ''OWZhXHU3OWY4XHU3OWY2XHU3OWY3XHU3YThmXHU3YTk0XHU3YTkwXHU3YjM1XHU3YjQ3XHU3YjM0XHU3YjI1XHU3YjMwXHU3YjIyXHU3YjI0XHU3YjMzXHU3YjE4XHU3YjJhXHU3YjFkXHU3YjMxXHU3YjJiXHU3YjJkXHU3YjJmXHU3YjMyXHU3YjM4XHU3YjFhXHU3YjIzXHU3Yzk0XHU3Yzk4''@;'; put 'put ''XHU3Yzk2XHU3Y2EzXHU3ZDM1XHU3ZDNkXHU3ZDM4XHU3ZDM2XHU3ZDNhXHU3ZDQ1XHU3ZDJjXHU3ZDI5XHU3ZDQxXHU3ZDQ3XHU3ZDNlXHU3ZDNmXHU3ZDRhXHU3ZDNiXHU3ZDI4XHU3ZjYzXHU3Zjk1XHU3ZjljXHU3ZjlkXHU3ZjliXHU3ZmNhXHU3ZmNiXHU3ZmNkXHU3ZmQwXHU3ZmQxXHU3''@;'; put 'put ''ZmM3XHU3ZmNmXHU3ZmM5XHU4MDFmIl0sWyJkNzQwIiwiXHU4MDFlXHU4MDFiXHU4MDQ3XHU4MDQzXHU4MDQ4XHU4MTE4XHU4MTI1XHU4MTE5XHU4MTFiXHU4MTJkXHU4MTFmXHU4MTJjXHU4MTFlXHU4MTIxXHU4MTE1XHU4MTI3XHU4MTFkXHU4MTIyXHU4MjExXHU4MjM4XHU4MjMzXHU4MjNh''@;'; put 'put ''XHU4MjM0XHU4MjMyXHU4Mjc0XHU4MzkwXHU4M2EzXHU4M2E4XHU4MzhkXHU4MzdhXHU4MzczXHU4M2E0XHU4Mzc0XHU4MzhmXHU4MzgxXHU4Mzk1XHU4Mzk5XHU4Mzc1XHU4Mzk0XHU4M2E5XHU4MzdkXHU4MzgzXHU4MzhjXHU4MzlkXHU4MzliXHU4M2FhXHU4MzhiXHU4MzdlXHU4M2E1XHU4''@;'; put 'put ''M2FmXHU4Mzg4XHU4Mzk3XHU4M2IwXHU4MzdmXHU4M2E2XHU4Mzg3XHU4M2FlXHU4Mzc2XHU4MzlhXHU4NjU5XHU4NjU2XHU4NmJmXHU4NmI3Il0sWyJkN2ExIiwiXHU4NmMyXHU4NmMxXHU4NmM1XHU4NmJhXHU4NmIwXHU4NmM4XHU4NmI5XHU4NmIzXHU4NmI4XHU4NmNjXHU4NmI0XHU4NmJi''@;'; put 'put ''XHU4NmJjXHU4NmMzXHU4NmJkXHU4NmJlXHU4ODUyXHU4ODg5XHU4ODk1XHU4OGE4XHU4OGEyXHU4OGFhXHU4ODlhXHU4ODkxXHU4OGExXHU4ODlmXHU4ODk4XHU4OGE3XHU4ODk5XHU4ODliXHU4ODk3XHU4OGE0XHU4OGFjXHU4ODhjXHU4ODkzXHU4ODhlXHU4OTgyXHU4OWQ2XHU4OWQ5XHU4''@;'; put 'put ''OWQ1XHU4YTMwXHU4YTI3XHU4YTJjXHU4YTFlXHU4YzM5XHU4YzNiXHU4YzVjXHU4YzVkXHU4YzdkXHU4Y2E1XHU4ZDdkXHU4ZDdiXHU4ZDc5XHU4ZGJjXHU4ZGMyXHU4ZGI5XHU4ZGJmXHU4ZGMxXHU4ZWQ4XHU4ZWRlXHU4ZWRkXHU4ZWRjXHU4ZWQ3XHU4ZWUwXHU4ZWUxXHU5MDI0XHU5MDBi''@;'; put 'put ''XHU5MDExXHU5MDFjXHU5MDBjXHU5MDIxXHU5MGVmXHU5MGVhXHU5MGYwXHU5MGY0XHU5MGYyXHU5MGYzXHU5MGQ0XHU5MGViXHU5MGVjXHU5MGU5XHU5MTU2XHU5MTU4XHU5MTVhXHU5MTUzXHU5MTU1XHU5MWVjXHU5MWY0XHU5MWYxXHU5MWYzXHU5MWY4XHU5MWU0XHU5MWY5XHU5MWVhIl0s''@;'; put 'put ''WyJkODQwIiwiXHU5MWViXHU5MWY3XHU5MWU4XHU5MWVlXHU5NTdhXHU5NTg2XHU5NTg4XHU5NjdjXHU5NjZkXHU5NjZiXHU5NjcxXHU5NjZmXHU5NmJmXHU5NzZhXHU5ODA0XHU5OGU1XHU5OTk3XHU1MDliXHU1MDk1XHU1MDk0XHU1MDllXHU1MDhiXHU1MGEzXHU1MDgzXHU1MDhjXHU1MDhl''@;'; put 'put ''XHU1MDlkXHU1MDY4XHU1MDljXHU1MDkyXHU1MDgyXHU1MDg3XHU1MTVmXHU1MWQ0XHU1MzEyXHU1MzExXHU1M2E0XHU1M2E3XHU1NTkxXHU1NWE4XHU1NWE1XHU1NWFkXHU1NTc3XHU1NjQ1XHU1NWEyXHU1NTkzXHU1NTg4XHU1NThmXHU1NWI1XHU1NTgxXHU1NWEzXHU1NTkyXHU1NWE0XHU1''@;'; put 'put ''NTdkXHU1NThjXHU1NWE2XHU1NTdmXHU1NTk1XHU1NWExXHU1NThlXHU1NzBjXHU1ODI5XHU1ODM3Il0sWyJkOGExIiwiXHU1ODE5XHU1ODFlXHU1ODI3XHU1ODIzXHU1ODI4XHU1N2Y1XHU1ODQ4XHU1ODI1XHU1ODFjXHU1ODFiXHU1ODMzXHU1ODNmXHU1ODM2XHU1ODJlXHU1ODM5XHU1ODM4''@;'; put 'put ''XHU1ODJkXHU1ODJjXHU1ODNiXHU1OTYxXHU1YWFmXHU1YTk0XHU1YTlmXHU1YTdhXHU1YWEyXHU1YTllXHU1YTc4XHU1YWE2XHU1YTdjXHU1YWE1XHU1YWFjXHU1YTk1XHU1YWFlXHU1YTM3XHU1YTg0XHU1YThhXHU1YTk3XHU1YTgzXHU1YThiXHU1YWE5XHU1YTdiXHU1YTdkXHU1YThjXHU1''@;'; put 'put ''YTljXHU1YThmXHU1YTkzXHU1YTlkXHU1YmVhXHU1YmNkXHU1YmNiXHU1YmQ0XHU1YmQxXHU1YmNhXHU1YmNlXHU1YzBjXHU1YzMwXHU1ZDM3XHU1ZDQzXHU1ZDZiXHU1ZDQxXHU1ZDRiXHU1ZDNmXHU1ZDM1XHU1ZDUxXHU1ZDRlXHU1ZDU1XHU1ZDMzXHU1ZDNhXHU1ZDUyXHU1ZDNkXHU1ZDMx''@;'; put 'put ''XHU1ZDU5XHU1ZDQyXHU1ZDM5XHU1ZDQ5XHU1ZDM4XHU1ZDNjXHU1ZDMyXHU1ZDM2XHU1ZDQwXHU1ZDQ1XHU1ZTQ0XHU1ZTQxXHU1ZjU4XHU1ZmE2XHU1ZmE1XHU1ZmFiXHU2MGM5XHU2MGI5XHU2MGNjXHU2MGUyXHU2MGNlXHU2MGM0XHU2MTE0Il0sWyJkOTQwIiwiXHU2MGYyXHU2MTBhXHU2''@;'; put 'put ''MTE2XHU2MTA1XHU2MGY1XHU2MTEzXHU2MGY4XHU2MGZjXHU2MGZlXHU2MGMxXHU2MTAzXHU2MTE4XHU2MTFkXHU2MTEwXHU2MGZmXHU2MTA0XHU2MTBiXHU2MjRhXHU2Mzk0XHU2M2IxXHU2M2IwXHU2M2NlXHU2M2U1XHU2M2U4XHU2M2VmXHU2M2MzXHU2NDlkXHU2M2YzXHU2M2NhXHU2M2Uw''@;'; put 'put ''XHU2M2Y2XHU2M2Q1XHU2M2YyXHU2M2Y1XHU2NDYxXHU2M2RmXHU2M2JlXHU2M2RkXHU2M2RjXHU2M2M0XHU2M2Q4XHU2M2QzXHU2M2MyXHU2M2M3XHU2M2NjXHU2M2NiXHU2M2M4XHU2M2YwXHU2M2Q3XHU2M2Q5XHU2NTMyXHU2NTY3XHU2NTZhXHU2NTY0XHU2NTVjXHU2NTY4XHU2NTY1XHU2''@;'; put 'put ''NThjXHU2NTlkXHU2NTllXHU2NWFlXHU2NWQwXHU2NWQyIl0sWyJkOWExIiwiXHU2NjdjXHU2NjZjXHU2NjdiXHU2NjgwXHU2NjcxXHU2Njc5XHU2NjZhXHU2NjcyXHU2NzAxXHU2OTBjXHU2OGQzXHU2OTA0XHU2OGRjXHU2OTJhXHU2OGVjXHU2OGVhXHU2OGYxXHU2OTBmXHU2OGQ2XHU2OGY3''@;'; put 'put ''XHU2OGViXHU2OGU0XHU2OGY2XHU2OTEzXHU2OTEwXHU2OGYzXHU2OGUxXHU2OTA3XHU2OGNjXHU2OTA4XHU2OTcwXHU2OGI0XHU2OTExXHU2OGVmXHU2OGM2XHU2OTE0XHU2OGY4XHU2OGQwXHU2OGZkXHU2OGZjXHU2OGU4XHU2OTBiXHU2OTBhXHU2OTE3XHU2OGNlXHU2OGM4XHU2OGRkXHU2''@;'; put 'put ''OGRlXHU2OGU2XHU2OGY0XHU2OGQxXHU2OTA2XHU2OGQ0XHU2OGU5XHU2OTE1XHU2OTI1XHU2OGM3XHU2YjM5XHU2YjNiXHU2YjNmXHU2YjNjXHU2Yjk0XHU2Yjk3XHU2Yjk5XHU2Yjk1XHU2YmJkXHU2YmYwXHU2YmYyXHU2YmYzXHU2YzMwXHU2ZGZjXHU2ZTQ2XHU2ZTQ3XHU2ZTFmXHU2ZTQ5''@;'; put 'put ''XHU2ZTg4XHU2ZTNjXHU2ZTNkXHU2ZTQ1XHU2ZTYyXHU2ZTJiXHU2ZTNmXHU2ZTQxXHU2ZTVkXHU2ZTczXHU2ZTFjXHU2ZTMzXHU2ZTRiXHU2ZTQwXHU2ZTUxXHU2ZTNiXHU2ZTAzXHU2ZTJlXHU2ZTVlIl0sWyJkYTQwIiwiXHU2ZTY4XHU2ZTVjXHU2ZTYxXHU2ZTMxXHU2ZTI4XHU2ZTYwXHU2''@;'; put 'put ''ZTcxXHU2ZTZiXHU2ZTM5XHU2ZTIyXHU2ZTMwXHU2ZTUzXHU2ZTY1XHU2ZTI3XHU2ZTc4XHU2ZTY0XHU2ZTc3XHU2ZTU1XHU2ZTc5XHU2ZTUyXHU2ZTY2XHU2ZTM1XHU2ZTM2XHU2ZTVhXHU3MTIwXHU3MTFlXHU3MTJmXHU3MGZiXHU3MTJlXHU3MTMxXHU3MTIzXHU3MTI1XHU3MTIyXHU3MTMy''@;'; put 'put ''XHU3MTFmXHU3MTI4XHU3MTNhXHU3MTFiXHU3MjRiXHU3MjVhXHU3Mjg4XHU3Mjg5XHU3Mjg2XHU3Mjg1XHU3MjhiXHU3MzEyXHU3MzBiXHU3MzMwXHU3MzIyXHU3MzMxXHU3MzMzXHU3MzI3XHU3MzMyXHU3MzJkXHU3MzI2XHU3MzIzXHU3MzM1XHU3MzBjXHU3NDJlXHU3NDJjXHU3NDMwXHU3''@;'; put 'put ''NDJiXHU3NDE2Il0sWyJkYWExIiwiXHU3NDFhXHU3NDIxXHU3NDJkXHU3NDMxXHU3NDI0XHU3NDIzXHU3NDFkXHU3NDI5XHU3NDIwXHU3NDMyXHU3NGZiXHU3NTJmXHU3NTZmXHU3NTZjXHU3NWU3XHU3NWRhXHU3NWUxXHU3NWU2XHU3NWRkXHU3NWRmXHU3NWU0XHU3NWQ3XHU3Njk1XHU3Njky''@;'; put 'put ''XHU3NmRhXHU3NzQ2XHU3NzQ3XHU3NzQ0XHU3NzRkXHU3NzQ1XHU3NzRhXHU3NzRlXHU3NzRiXHU3NzRjXHU3N2RlXHU3N2VjXHU3ODYwXHU3ODY0XHU3ODY1XHU3ODVjXHU3ODZkXHU3ODcxXHU3ODZhXHU3ODZlXHU3ODcwXHU3ODY5XHU3ODY4XHU3ODVlXHU3ODYyXHU3OTc0XHU3OTczXHU3''@;'; put 'put ''OTcyXHU3OTcwXHU3YTAyXHU3YTBhXHU3YTAzXHU3YTBjXHU3YTA0XHU3YTk5XHU3YWU2XHU3YWU0XHU3YjRhXHU3YjNiXHU3YjQ0XHU3YjQ4XHU3YjRjXHU3YjRlXHU3YjQwXHU3YjU4XHU3YjQ1XHU3Y2EyXHU3YzllXHU3Y2E4XHU3Y2ExXHU3ZDU4XHU3ZDZmXHU3ZDYzXHU3ZDUzXHU3ZDU2''@;'; put 'put ''XHU3ZDY3XHU3ZDZhXHU3ZDRmXHU3ZDZkXHU3ZDVjXHU3ZDZiXHU3ZDUyXHU3ZDU0XHU3ZDY5XHU3ZDUxXHU3ZDVmXHU3ZDRlXHU3ZjNlXHU3ZjNmXHU3ZjY1Il0sWyJkYjQwIiwiXHU3ZjY2XHU3ZmEyXHU3ZmEwXHU3ZmExXHU3ZmQ3XHU4MDUxXHU4MDRmXHU4MDUwXHU4MGZlXHU4MGQ0XHU4''@;'; put 'put ''MTQzXHU4MTRhXHU4MTUyXHU4MTRmXHU4MTQ3XHU4MTNkXHU4MTRkXHU4MTNhXHU4MWU2XHU4MWVlXHU4MWY3XHU4MWY4XHU4MWY5XHU4MjA0XHU4MjNjXHU4MjNkXHU4MjNmXHU4Mjc1XHU4MzNiXHU4M2NmXHU4M2Y5XHU4NDIzXHU4M2MwXHU4M2U4XHU4NDEyXHU4M2U3XHU4M2U0XHU4M2Zj''@;'; put 'put ''XHU4M2Y2XHU4NDEwXHU4M2M2XHU4M2M4XHU4M2ViXHU4M2UzXHU4M2JmXHU4NDAxXHU4M2RkXHU4M2U1XHU4M2Q4XHU4M2ZmXHU4M2UxXHU4M2NiXHU4M2NlXHU4M2Q2XHU4M2Y1XHU4M2M5XHU4NDA5XHU4NDBmXHU4M2RlXHU4NDExXHU4NDA2XHU4M2MyXHU4M2YzIl0sWyJkYmExIiwiXHU4''@;'; put 'put ''M2Q1XHU4M2ZhXHU4M2M3XHU4M2QxXHU4M2VhXHU4NDEzXHU4M2MzXHU4M2VjXHU4M2VlXHU4M2M0XHU4M2ZiXHU4M2Q3XHU4M2UyXHU4NDFiXHU4M2RiXHU4M2ZlXHU4NmQ4XHU4NmUyXHU4NmU2XHU4NmQzXHU4NmUzXHU4NmRhXHU4NmVhXHU4NmRkXHU4NmViXHU4NmRjXHU4NmVjXHU4NmU5''@;'; put 'put ''XHU4NmQ3XHU4NmU4XHU4NmQxXHU4ODQ4XHU4ODU2XHU4ODU1XHU4OGJhXHU4OGQ3XHU4OGI5XHU4OGI4XHU4OGMwXHU4OGJlXHU4OGI2XHU4OGJjXHU4OGI3XHU4OGJkXHU4OGIyXHU4OTAxXHU4OGM5XHU4OTk1XHU4OTk4XHU4OTk3XHU4OWRkXHU4OWRhXHU4OWRiXHU4YTRlXHU4YTRkXHU4''@;'; put 'put ''YTM5XHU4YTU5XHU4YTQwXHU4YTU3XHU4YTU4XHU4YTQ0XHU4YTQ1XHU4YTUyXHU4YTQ4XHU4YTUxXHU4YTRhXHU4YTRjXHU4YTRmXHU4YzVmXHU4YzgxXHU4YzgwXHU4Y2JhXHU4Y2JlXHU4Y2IwXHU4Y2I5XHU4Y2I1XHU4ZDg0XHU4ZDgwXHU4ZDg5XHU4ZGQ4XHU4ZGQzXHU4ZGNkXHU4ZGM3''@;'; put 'put ''XHU4ZGQ2XHU4ZGRjXHU4ZGNmXHU4ZGQ1XHU4ZGQ5XHU4ZGM4XHU4ZGQ3XHU4ZGM1XHU4ZWVmXHU4ZWY3XHU4ZWZhIl0sWyJkYzQwIiwiXHU4ZWY5XHU4ZWU2XHU4ZWVlXHU4ZWU1XHU4ZWY1XHU4ZWU3XHU4ZWU4XHU4ZWY2XHU4ZWViXHU4ZWYxXHU4ZWVjXHU4ZWY0XHU4ZWU5XHU5MDJkXHU5''@;'; put 'put ''MDM0XHU5MDJmXHU5MTA2XHU5MTJjXHU5MTA0XHU5MGZmXHU5MGZjXHU5MTA4XHU5MGY5XHU5MGZiXHU5MTAxXHU5MTAwXHU5MTA3XHU5MTA1XHU5MTAzXHU5MTYxXHU5MTY0XHU5MTVmXHU5MTYyXHU5MTYwXHU5MjAxXHU5MjBhXHU5MjI1XHU5MjAzXHU5MjFhXHU5MjI2XHU5MjBmXHU5MjBj''@;'; put 'put ''XHU5MjAwXHU5MjEyXHU5MWZmXHU5MWZkXHU5MjA2XHU5MjA0XHU5MjI3XHU5MjAyXHU5MjFjXHU5MjI0XHU5MjE5XHU5MjE3XHU5MjA1XHU5MjE2XHU5NTdiXHU5NThkXHU5NThjXHU5NTkwXHU5Njg3XHU5NjdlXHU5Njg4Il0sWyJkY2ExIiwiXHU5Njg5XHU5NjgzXHU5NjgwXHU5NmMyXHU5''@;'; put 'put ''NmM4XHU5NmMzXHU5NmYxXHU5NmYwXHU5NzZjXHU5NzcwXHU5NzZlXHU5ODA3XHU5OGE5XHU5OGViXHU5Y2U2XHU5ZWY5XHU0ZTgzXHU0ZTg0XHU0ZWI2XHU1MGJkXHU1MGJmXHU1MGM2XHU1MGFlXHU1MGM0XHU1MGNhXHU1MGI0XHU1MGM4XHU1MGMyXHU1MGIwXHU1MGMxXHU1MGJhXHU1MGIx''@;'; put 'put ''XHU1MGNiXHU1MGM5XHU1MGI2XHU1MGI4XHU1MWQ3XHU1MjdhXHU1Mjc4XHU1MjdiXHU1MjdjXHU1NWMzXHU1NWRiXHU1NWNjXHU1NWQwXHU1NWNiXHU1NWNhXHU1NWRkXHU1NWMwXHU1NWQ0XHU1NWM0XHU1NWU5XHU1NWJmXHU1NWQyXHU1NThkXHU1NWNmXHU1NWQ1XHU1NWUyXHU1NWQ2XHU1''@;'; put 'put ''NWM4XHU1NWYyXHU1NWNkXHU1NWQ5XHU1NWMyXHU1NzE0XHU1ODUzXHU1ODY4XHU1ODY0XHU1ODRmXHU1ODRkXHU1ODQ5XHU1ODZmXHU1ODU1XHU1ODRlXHU1ODVkXHU1ODU5XHU1ODY1XHU1ODViXHU1ODNkXHU1ODYzXHU1ODcxXHU1OGZjXHU1YWM3XHU1YWM0XHU1YWNiXHU1YWJhXHU1YWI4''@;'; put 'put ''XHU1YWIxXHU1YWI1XHU1YWIwXHU1YWJmXHU1YWM4XHU1YWJiXHU1YWM2Il0sWyJkZDQwIiwiXHU1YWI3XHU1YWMwXHU1YWNhXHU1YWI0XHU1YWI2XHU1YWNkXHU1YWI5XHU1YTkwXHU1YmQ2XHU1YmQ4XHU1YmQ5XHU1YzFmXHU1YzMzXHU1ZDcxXHU1ZDYzXHU1ZDRhXHU1ZDY1XHU1ZDcyXHU1''@;'; put 'put ''ZDZjXHU1ZDVlXHU1ZDY4XHU1ZDY3XHU1ZDYyXHU1ZGYwXHU1ZTRmXHU1ZTRlXHU1ZTRhXHU1ZTRkXHU1ZTRiXHU1ZWM1XHU1ZWNjXHU1ZWM2XHU1ZWNiXHU1ZWM3XHU1ZjQwXHU1ZmFmXHU1ZmFkXHU2MGY3XHU2MTQ5XHU2MTRhXHU2MTJiXHU2MTQ1XHU2MTM2XHU2MTMyXHU2MTJlXHU2MTQ2''@;'; put 'put ''XHU2MTJmXHU2MTRmXHU2MTI5XHU2MTQwXHU2MjIwXHU5MTY4XHU2MjIzXHU2MjI1XHU2MjI0XHU2M2M1XHU2M2YxXHU2M2ViXHU2NDEwXHU2NDEyXHU2NDA5XHU2NDIwXHU2NDI0Il0sWyJkZGExIiwiXHU2NDMzXHU2NDQzXHU2NDFmXHU2NDE1XHU2NDE4XHU2NDM5XHU2NDM3XHU2NDIyXHU2''@;'; put 'put ''NDIzXHU2NDBjXHU2NDI2XHU2NDMwXHU2NDI4XHU2NDQxXHU2NDM1XHU2NDJmXHU2NDBhXHU2NDFhXHU2NDQwXHU2NDI1XHU2NDI3XHU2NDBiXHU2M2U3XHU2NDFiXHU2NDJlXHU2NDIxXHU2NDBlXHU2NTZmXHU2NTkyXHU2NWQzXHU2Njg2XHU2NjhjXHU2Njk1XHU2NjkwXHU2NjhiXHU2Njhh''@;'; put 'put ''XHU2Njk5XHU2Njk0XHU2Njc4XHU2NzIwXHU2OTY2XHU2OTVmXHU2OTM4XHU2OTRlXHU2OTYyXHU2OTcxXHU2OTNmXHU2OTQ1XHU2OTZhXHU2OTM5XHU2OTQyXHU2OTU3XHU2OTU5XHU2OTdhXHU2OTQ4XHU2OTQ5XHU2OTM1XHU2OTZjXHU2OTMzXHU2OTNkXHU2OTY1XHU2OGYwXHU2OTc4XHU2''@;'; put 'put ''OTM0XHU2OTY5XHU2OTQwXHU2OTZmXHU2OTQ0XHU2OTc2XHU2OTU4XHU2OTQxXHU2OTc0XHU2OTRjXHU2OTNiXHU2OTRiXHU2OTM3XHU2OTVjXHU2OTRmXHU2OTUxXHU2OTMyXHU2OTUyXHU2OTJmXHU2OTdiXHU2OTNjXHU2YjQ2XHU2YjQ1XHU2YjQzXHU2YjQyXHU2YjQ4XHU2YjQxXHU2Yjli''@;'; put 'put ''XHVmYTBkXHU2YmZiXHU2YmZjIl0sWyJkZTQwIiwiXHU2YmY5XHU2YmY3XHU2YmY4XHU2ZTliXHU2ZWQ2XHU2ZWM4XHU2ZThmXHU2ZWMwXHU2ZTlmXHU2ZTkzXHU2ZTk0XHU2ZWEwXHU2ZWIxXHU2ZWI5XHU2ZWM2XHU2ZWQyXHU2ZWJkXHU2ZWMxXHU2ZTllXHU2ZWM5XHU2ZWI3XHU2ZWIwXHU2''@;'; put 'put ''ZWNkXHU2ZWE2XHU2ZWNmXHU2ZWIyXHU2ZWJlXHU2ZWMzXHU2ZWRjXHU2ZWQ4XHU2ZTk5XHU2ZTkyXHU2ZThlXHU2ZThkXHU2ZWE0XHU2ZWExXHU2ZWJmXHU2ZWIzXHU2ZWQwXHU2ZWNhXHU2ZTk3XHU2ZWFlXHU2ZWEzXHU3MTQ3XHU3MTU0XHU3MTUyXHU3MTYzXHU3MTYwXHU3MTQxXHU3MTVk''@;'; put 'put ''XHU3MTYyXHU3MTcyXHU3MTc4XHU3MTZhXHU3MTYxXHU3MTQyXHU3MTU4XHU3MTQzXHU3MTRiXHU3MTcwXHU3MTVmXHU3MTUwXHU3MTUzIl0sWyJkZWExIiwiXHU3MTQ0XHU3MTRkXHU3MTVhXHU3MjRmXHU3MjhkXHU3MjhjXHU3MjkxXHU3MjkwXHU3MjhlXHU3MzNjXHU3MzQyXHU3MzNiXHU3''@;'; put 'put ''MzNhXHU3MzQwXHU3MzRhXHU3MzQ5XHU3NDQ0XHU3NDRhXHU3NDRiXHU3NDUyXHU3NDUxXHU3NDU3XHU3NDQwXHU3NDRmXHU3NDUwXHU3NDRlXHU3NDQyXHU3NDQ2XHU3NDRkXHU3NDU0XHU3NGUxXHU3NGZmXHU3NGZlXHU3NGZkXHU3NTFkXHU3NTc5XHU3NTc3XHU2OTgzXHU3NWVmXHU3NjBm''@;'; put 'put ''XHU3NjAzXHU3NWY3XHU3NWZlXHU3NWZjXHU3NWY5XHU3NWY4XHU3NjEwXHU3NWZiXHU3NWY2XHU3NWVkXHU3NWY1XHU3NWZkXHU3Njk5XHU3NmI1XHU3NmRkXHU3NzU1XHU3NzVmXHU3NzYwXHU3NzUyXHU3NzU2XHU3NzVhXHU3NzY5XHU3NzY3XHU3NzU0XHU3NzU5XHU3NzZkXHU3N2UwXHU3''@;'; put 'put ''ODg3XHU3ODlhXHU3ODk0XHU3ODhmXHU3ODg0XHU3ODk1XHU3ODg1XHU3ODg2XHU3OGExXHU3ODgzXHU3ODc5XHU3ODk5XHU3ODgwXHU3ODk2XHU3ODdiXHU3OTdjXHU3OTgyXHU3OTdkXHU3OTc5XHU3YTExXHU3YTE4XHU3YTE5XHU3YTEyXHU3YTE3XHU3YTE1XHU3YTIyXHU3YTEzIl0sWyJk''@;'; put 'put ''ZjQwIiwiXHU3YTFiXHU3YTEwXHU3YWEzXHU3YWEyXHU3YTllXHU3YWViXHU3YjY2XHU3YjY0XHU3YjZkXHU3Yjc0XHU3YjY5XHU3YjcyXHU3YjY1XHU3YjczXHU3YjcxXHU3YjcwXHU3YjYxXHU3Yjc4XHU3Yjc2XHU3YjYzXHU3Y2IyXHU3Y2I0XHU3Y2FmXHU3ZDg4XHU3ZDg2XHU3ZDgwXHU3''@;'; put 'put ''ZDhkXHU3ZDdmXHU3ZDg1XHU3ZDdhXHU3ZDhlXHU3ZDdiXHU3ZDgzXHU3ZDdjXHU3ZDhjXHU3ZDk0XHU3ZDg0XHU3ZDdkXHU3ZDkyXHU3ZjZkXHU3ZjZiXHU3ZjY3XHU3ZjY4XHU3ZjZjXHU3ZmE2XHU3ZmE1XHU3ZmE3XHU3ZmRiXHU3ZmRjXHU4MDIxXHU4MTY0XHU4MTYwXHU4MTc3XHU4MTVj''@;'; put 'put ''XHU4MTY5XHU4MTViXHU4MTYyXHU4MTcyXHU2NzIxXHU4MTVlXHU4MTc2XHU4MTY3XHU4MTZmIl0sWyJkZmExIiwiXHU4MTQ0XHU4MTYxXHU4MjFkXHU4MjQ5XHU4MjQ0XHU4MjQwXHU4MjQyXHU4MjQ1XHU4NGYxXHU4NDNmXHU4NDU2XHU4NDc2XHU4NDc5XHU4NDhmXHU4NDhkXHU4NDY1XHU4''@;'; put 'put ''NDUxXHU4NDQwXHU4NDg2XHU4NDY3XHU4NDMwXHU4NDRkXHU4NDdkXHU4NDVhXHU4NDU5XHU4NDc0XHU4NDczXHU4NDVkXHU4NTA3XHU4NDVlXHU4NDM3XHU4NDNhXHU4NDM0XHU4NDdhXHU4NDQzXHU4NDc4XHU4NDMyXHU4NDQ1XHU4NDI5XHU4M2Q5XHU4NDRiXHU4NDJmXHU4NDQyXHU4NDJk''@;'; put 'put ''XHU4NDVmXHU4NDcwXHU4NDM5XHU4NDRlXHU4NDRjXHU4NDUyXHU4NDZmXHU4NGM1XHU4NDhlXHU4NDNiXHU4NDQ3XHU4NDM2XHU4NDMzXHU4NDY4XHU4NDdlXHU4NDQ0XHU4NDJiXHU4NDYwXHU4NDU0XHU4NDZlXHU4NDUwXHU4NzBiXHU4NzA0XHU4NmY3XHU4NzBjXHU4NmZhXHU4NmQ2XHU4''@;'; put 'put ''NmY1XHU4NzRkXHU4NmY4XHU4NzBlXHU4NzA5XHU4NzAxXHU4NmY2XHU4NzBkXHU4NzA1XHU4OGQ2XHU4OGNiXHU4OGNkXHU4OGNlXHU4OGRlXHU4OGRiXHU4OGRhXHU4OGNjXHU4OGQwXHU4OTg1XHU4OTliXHU4OWRmXHU4OWU1XHU4OWU0Il0sWyJlMDQwIiwiXHU4OWUxXHU4OWUwXHU4OWUy''@;'; put 'put ''XHU4OWRjXHU4OWU2XHU4YTc2XHU4YTg2XHU4YTdmXHU4YTYxXHU4YTNmXHU4YTc3XHU4YTgyXHU4YTg0XHU4YTc1XHU4YTgzXHU4YTgxXHU4YTc0XHU4YTdhXHU4YzNjXHU4YzRiXHU4YzRhXHU4YzY1XHU4YzY0XHU4YzY2XHU4Yzg2XHU4Yzg0XHU4Yzg1XHU4Y2NjXHU4ZDY4XHU4ZDY5XHU4''@;'; put 'put ''ZDkxXHU4ZDhjXHU4ZDhlXHU4ZDhmXHU4ZDhkXHU4ZDkzXHU4ZDk0XHU4ZDkwXHU4ZDkyXHU4ZGYwXHU4ZGUwXHU4ZGVjXHU4ZGYxXHU4ZGVlXHU4ZGQwXHU4ZGU5XHU4ZGUzXHU4ZGUyXHU4ZGU3XHU4ZGYyXHU4ZGViXHU4ZGY0XHU4ZjA2XHU4ZWZmXHU4ZjAxXHU4ZjAwXHU4ZjA1XHU4ZjA3''@;'; put 'put ''XHU4ZjA4XHU4ZjAyXHU4ZjBiXHU5MDUyXHU5MDNmIl0sWyJlMGExIiwiXHU5MDQ0XHU5MDQ5XHU5MDNkXHU5MTEwXHU5MTBkXHU5MTBmXHU5MTExXHU5MTE2XHU5MTE0XHU5MTBiXHU5MTBlXHU5MTZlXHU5MTZmXHU5MjQ4XHU5MjUyXHU5MjMwXHU5MjNhXHU5MjY2XHU5MjMzXHU5MjY1XHU5''@;'; put 'put ''MjVlXHU5MjgzXHU5MjJlXHU5MjRhXHU5MjQ2XHU5MjZkXHU5MjZjXHU5MjRmXHU5MjYwXHU5MjY3XHU5MjZmXHU5MjM2XHU5MjYxXHU5MjcwXHU5MjMxXHU5MjU0XHU5MjYzXHU5MjUwXHU5MjcyXHU5MjRlXHU5MjUzXHU5MjRjXHU5MjU2XHU5MjMyXHU5NTlmXHU5NTljXHU5NTllXHU5NTli''@;'; put 'put ''XHU5NjkyXHU5NjkzXHU5NjkxXHU5Njk3XHU5NmNlXHU5NmZhXHU5NmZkXHU5NmY4XHU5NmY1XHU5NzczXHU5Nzc3XHU5Nzc4XHU5NzcyXHU5ODBmXHU5ODBkXHU5ODBlXHU5OGFjXHU5OGY2XHU5OGY5XHU5OWFmXHU5OWIyXHU5OWIwXHU5OWI1XHU5YWFkXHU5YWFiXHU5YjViXHU5Y2VhXHU5''@;'; put 'put ''Y2VkXHU5Y2U3XHU5ZTgwXHU5ZWZkXHU1MGU2XHU1MGQ0XHU1MGQ3XHU1MGU4XHU1MGYzXHU1MGRiXHU1MGVhXHU1MGRkXHU1MGU0XHU1MGQzXHU1MGVjXHU1MGYwXHU1MGVmXHU1MGUzXHU1MGUwIl0sWyJlMTQwIiwiXHU1MWQ4XHU1MjgwXHU1MjgxXHU1MmU5XHU1MmViXHU1MzMwXHU1M2Fj''@;'; put 'put ''XHU1NjI3XHU1NjE1XHU1NjBjXHU1NjEyXHU1NWZjXHU1NjBmXHU1NjFjXHU1NjAxXHU1NjEzXHU1NjAyXHU1NWZhXHU1NjFkXHU1NjA0XHU1NWZmXHU1NWY5XHU1ODg5XHU1ODdjXHU1ODkwXHU1ODk4XHU1ODg2XHU1ODgxXHU1ODdmXHU1ODc0XHU1ODhiXHU1ODdhXHU1ODg3XHU1ODkxXHU1''@;'; put 'put ''ODhlXHU1ODc2XHU1ODgyXHU1ODg4XHU1ODdiXHU1ODk0XHU1ODhmXHU1OGZlXHU1OTZiXHU1YWRjXHU1YWVlXHU1YWU1XHU1YWQ1XHU1YWVhXHU1YWRhXHU1YWVkXHU1YWViXHU1YWYzXHU1YWUyXHU1YWUwXHU1YWRiXHU1YWVjXHU1YWRlXHU1YWRkXHU1YWQ5XHU1YWU4XHU1YWRmXHU1Yjc3''@;'; put 'put ''XHU1YmUwIl0sWyJlMWExIiwiXHU1YmUzXHU1YzYzXHU1ZDgyXHU1ZDgwXHU1ZDdkXHU1ZDg2XHU1ZDdhXHU1ZDgxXHU1ZDc3XHU1ZDhhXHU1ZDg5XHU1ZDg4XHU1ZDdlXHU1ZDdjXHU1ZDhkXHU1ZDc5XHU1ZDdmXHU1ZTU4XHU1ZTU5XHU1ZTUzXHU1ZWQ4XHU1ZWQxXHU1ZWQ3XHU1ZWNlXHU1''@;'; put 'put ''ZWRjXHU1ZWQ1XHU1ZWQ5XHU1ZWQyXHU1ZWQ0XHU1ZjQ0XHU1ZjQzXHU1ZjZmXHU1ZmI2XHU2MTJjXHU2MTI4XHU2MTQxXHU2MTVlXHU2MTcxXHU2MTczXHU2MTUyXHU2MTUzXHU2MTcyXHU2MTZjXHU2MTgwXHU2MTc0XHU2MTU0XHU2MTdhXHU2MTViXHU2MTY1XHU2MTNiXHU2MTZhXHU2MTYx''@;'; put 'put ''XHU2MTU2XHU2MjI5XHU2MjI3XHU2MjJiXHU2NDJiXHU2NDRkXHU2NDViXHU2NDVkXHU2NDc0XHU2NDc2XHU2NDcyXHU2NDczXHU2NDdkXHU2NDc1XHU2NDY2XHU2NGE2XHU2NDRlXHU2NDgyXHU2NDVlXHU2NDVjXHU2NDRiXHU2NDUzXHU2NDYwXHU2NDUwXHU2NDdmXHU2NDNmXHU2NDZjXHU2''@;'; put 'put ''NDZiXHU2NDU5XHU2NDY1XHU2NDc3XHU2NTczXHU2NWEwXHU2NmExXHU2NmEwXHU2NjlmXHU2NzA1XHU2NzA0XHU2NzIyXHU2OWIxXHU2OWI2XHU2OWM5Il0sWyJlMjQwIiwiXHU2OWEwXHU2OWNlXHU2OTk2XHU2OWIwXHU2OWFjXHU2OWJjXHU2OTkxXHU2OTk5XHU2OThlXHU2OWE3XHU2OThk''@;'; put 'put ''XHU2OWE5XHU2OWJlXHU2OWFmXHU2OWJmXHU2OWM0XHU2OWJkXHU2OWE0XHU2OWQ0XHU2OWI5XHU2OWNhXHU2OTlhXHU2OWNmXHU2OWIzXHU2OTkzXHU2OWFhXHU2OWExXHU2OTllXHU2OWQ5XHU2OTk3XHU2OTkwXHU2OWMyXHU2OWI1XHU2OWE1XHU2OWM2XHU2YjRhXHU2YjRkXHU2YjRiXHU2''@;'; put 'put ''YjllXHU2YjlmXHU2YmEwXHU2YmMzXHU2YmM0XHU2YmZlXHU2ZWNlXHU2ZWY1XHU2ZWYxXHU2ZjAzXHU2ZjI1XHU2ZWY4XHU2ZjM3XHU2ZWZiXHU2ZjJlXHU2ZjA5XHU2ZjRlXHU2ZjE5XHU2ZjFhXHU2ZjI3XHU2ZjE4XHU2ZjNiXHU2ZjEyXHU2ZWVkXHU2ZjBhIl0sWyJlMmExIiwiXHU2ZjM2''@;'; put 'put ''XHU2ZjczXHU2ZWY5XHU2ZWVlXHU2ZjJkXHU2ZjQwXHU2ZjMwXHU2ZjNjXHU2ZjM1XHU2ZWViXHU2ZjA3XHU2ZjBlXHU2ZjQzXHU2ZjA1XHU2ZWZkXHU2ZWY2XHU2ZjM5XHU2ZjFjXHU2ZWZjXHU2ZjNhXHU2ZjFmXHU2ZjBkXHU2ZjFlXHU2ZjA4XHU2ZjIxXHU3MTg3XHU3MTkwXHU3MTg5XHU3''@;'; put 'put ''MTgwXHU3MTg1XHU3MTgyXHU3MThmXHU3MTdiXHU3MTg2XHU3MTgxXHU3MTk3XHU3MjQ0XHU3MjUzXHU3Mjk3XHU3Mjk1XHU3MjkzXHU3MzQzXHU3MzRkXHU3MzUxXHU3MzRjXHU3NDYyXHU3NDczXHU3NDcxXHU3NDc1XHU3NDcyXHU3NDY3XHU3NDZlXHU3NTAwXHU3NTAyXHU3NTAzXHU3NTdk''@;'; put 'put ''XHU3NTkwXHU3NjE2XHU3NjA4XHU3NjBjXHU3NjE1XHU3NjExXHU3NjBhXHU3NjE0XHU3NmI4XHU3NzgxXHU3NzdjXHU3Nzg1XHU3NzgyXHU3NzZlXHU3NzgwXHU3NzZmXHU3NzdlXHU3NzgzXHU3OGIyXHU3OGFhXHU3OGI0XHU3OGFkXHU3OGE4XHU3ODdlXHU3OGFiXHU3ODllXHU3OGE1XHU3''@;'; put 'put ''OGEwXHU3OGFjXHU3OGEyXHU3OGE0XHU3OTk4XHU3OThhXHU3OThiXHU3OTk2XHU3OTk1XHU3OTk0XHU3OTkzIl0sWyJlMzQwIiwiXHU3OTk3XHU3OTg4XHU3OTkyXHU3OTkwXHU3YTJiXHU3YTRhXHU3YTMwXHU3YTJmXHU3YTI4XHU3YTI2XHU3YWE4XHU3YWFiXHU3YWFjXHU3YWVlXHU3Yjg4''@;'; put 'put ''XHU3YjljXHU3YjhhXHU3YjkxXHU3YjkwXHU3Yjk2XHU3YjhkXHU3YjhjXHU3YjliXHU3YjhlXHU3Yjg1XHU3Yjk4XHU1Mjg0XHU3Yjk5XHU3YmE0XHU3YjgyXHU3Y2JiXHU3Y2JmXHU3Y2JjXHU3Y2JhXHU3ZGE3XHU3ZGI3XHU3ZGMyXHU3ZGEzXHU3ZGFhXHU3ZGMxXHU3ZGMwXHU3ZGM1XHU3''@;'; put 'put ''ZDlkXHU3ZGNlXHU3ZGM0XHU3ZGM2XHU3ZGNiXHU3ZGNjXHU3ZGFmXHU3ZGI5XHU3ZDk2XHU3ZGJjXHU3ZDlmXHU3ZGE2XHU3ZGFlXHU3ZGE5XHU3ZGExXHU3ZGM5XHU3ZjczXHU3ZmUyXHU3ZmUzXHU3ZmU1XHU3ZmRlIl0sWyJlM2ExIiwiXHU4MDI0XHU4MDVkXHU4MDVjXHU4MTg5XHU4MTg2''@;'; put 'put ''XHU4MTgzXHU4MTg3XHU4MThkXHU4MThjXHU4MThiXHU4MjE1XHU4NDk3XHU4NGE0XHU4NGExXHU4NDlmXHU4NGJhXHU4NGNlXHU4NGMyXHU4NGFjXHU4NGFlXHU4NGFiXHU4NGI5XHU4NGI0XHU4NGMxXHU4NGNkXHU4NGFhXHU4NDlhXHU4NGIxXHU4NGQwXHU4NDlkXHU4NGE3XHU4NGJiXHU4''@;'; put 'put ''NGEyXHU4NDk0XHU4NGM3XHU4NGNjXHU4NDliXHU4NGE5XHU4NGFmXHU4NGE4XHU4NGQ2XHU4NDk4XHU4NGI2XHU4NGNmXHU4NGEwXHU4NGQ3XHU4NGQ0XHU4NGQyXHU4NGRiXHU4NGIwXHU4NDkxXHU4NjYxXHU4NzMzXHU4NzIzXHU4NzI4XHU4NzZiXHU4NzQwXHU4NzJlXHU4NzFlXHU4NzIx''@;'; put 'put ''XHU4NzE5XHU4NzFiXHU4NzQzXHU4NzJjXHU4NzQxXHU4NzNlXHU4NzQ2XHU4NzIwXHU4NzMyXHU4NzJhXHU4NzJkXHU4NzNjXHU4NzEyXHU4NzNhXHU4NzMxXHU4NzM1XHU4NzQyXHU4NzI2XHU4NzI3XHU4NzM4XHU4NzI0XHU4NzFhXHU4NzMwXHU4NzExXHU4OGY3XHU4OGU3XHU4OGYxXHU4''@;'; put 'put ''OGYyXHU4OGZhXHU4OGZlXHU4OGVlXHU4OGZjXHU4OGY2XHU4OGZiIl0sWyJlNDQwIiwiXHU4OGYwXHU4OGVjXHU4OGViXHU4OTlkXHU4OWExXHU4OTlmXHU4OTllXHU4OWU5XHU4OWViXHU4OWU4XHU4YWFiXHU4YTk5XHU4YThiXHU4YTkyXHU4YThmXHU4YTk2XHU4YzNkXHU4YzY4XHU4YzY5''@;'; put 'put ''XHU4Y2Q1XHU4Y2NmXHU4Y2Q3XHU4ZDk2XHU4ZTA5XHU4ZTAyXHU4ZGZmXHU4ZTBkXHU4ZGZkXHU4ZTBhXHU4ZTAzXHU4ZTA3XHU4ZTA2XHU4ZTA1XHU4ZGZlXHU4ZTAwXHU4ZTA0XHU4ZjEwXHU4ZjExXHU4ZjBlXHU4ZjBkXHU5MTIzXHU5MTFjXHU5MTIwXHU5MTIyXHU5MTFmXHU5MTFkXHU5''@;'; put 'put ''MTFhXHU5MTI0XHU5MTIxXHU5MTFiXHU5MTdhXHU5MTcyXHU5MTc5XHU5MTczXHU5MmE1XHU5MmE0XHU5Mjc2XHU5MjliXHU5MjdhXHU5MmEwXHU5Mjk0XHU5MmFhXHU5MjhkIl0sWyJlNGExIiwiXHU5MmE2XHU5MjlhXHU5MmFiXHU5Mjc5XHU5Mjk3XHU5MjdmXHU5MmEzXHU5MmVlXHU5Mjhl''@;'; put 'put ''XHU5MjgyXHU5Mjk1XHU5MmEyXHU5MjdkXHU5Mjg4XHU5MmExXHU5MjhhXHU5Mjg2XHU5MjhjXHU5Mjk5XHU5MmE3XHU5MjdlXHU5Mjg3XHU5MmE5XHU5MjlkXHU5MjhiXHU5MjJkXHU5NjllXHU5NmExXHU5NmZmXHU5NzU4XHU5NzdkXHU5NzdhXHU5NzdlXHU5NzgzXHU5NzgwXHU5NzgyXHU5''@;'; put 'put ''NzdiXHU5Nzg0XHU5NzgxXHU5NzdmXHU5N2NlXHU5N2NkXHU5ODE2XHU5OGFkXHU5OGFlXHU5OTAyXHU5OTAwXHU5OTA3XHU5OTlkXHU5OTljXHU5OWMzXHU5OWI5XHU5OWJiXHU5OWJhXHU5OWMyXHU5OWJkXHU5OWM3XHU5YWIxXHU5YWUzXHU5YWU3XHU5YjNlXHU5YjNmXHU5YjYwXHU5YjYx''@;'; put 'put ''XHU5YjVmXHU5Y2YxXHU5Y2YyXHU5Y2Y1XHU5ZWE3XHU1MGZmXHU1MTAzXHU1MTMwXHU1MGY4XHU1MTA2XHU1MTA3XHU1MGY2XHU1MGZlXHU1MTBiXHU1MTBjXHU1MGZkXHU1MTBhXHU1MjhiXHU1MjhjXHU1MmYxXHU1MmVmXHU1NjQ4XHU1NjQyXHU1NjRjXHU1NjM1XHU1NjQxXHU1NjRhXHU1''@;'; put 'put ''NjQ5XHU1NjQ2XHU1NjU4Il0sWyJlNTQwIiwiXHU1NjVhXHU1NjQwXHU1NjMzXHU1NjNkXHU1NjJjXHU1NjNlXHU1NjM4XHU1NjJhXHU1NjNhXHU1NzFhXHU1OGFiXHU1ODlkXHU1OGIxXHU1OGEwXHU1OGEzXHU1OGFmXHU1OGFjXHU1OGE1XHU1OGExXHU1OGZmXHU1YWZmXHU1YWY0XHU1YWZk''@;'; put 'put ''XHU1YWY3XHU1YWY2XHU1YjAzXHU1YWY4XHU1YjAyXHU1YWY5XHU1YjAxXHU1YjA3XHU1YjA1XHU1YjBmXHU1YzY3XHU1ZDk5XHU1ZDk3XHU1ZDlmXHU1ZDkyXHU1ZGEyXHU1ZDkzXHU1ZDk1XHU1ZGEwXHU1ZDljXHU1ZGExXHU1ZDlhXHU1ZDllXHU1ZTY5XHU1ZTVkXHU1ZTYwXHU1ZTVjXHU3''@;'; put 'put ''ZGYzXHU1ZWRiXHU1ZWRlXHU1ZWUxXHU1ZjQ5XHU1ZmIyXHU2MThiXHU2MTgzXHU2MTc5XHU2MWIxXHU2MWIwXHU2MWEyXHU2MTg5Il0sWyJlNWExIiwiXHU2MTliXHU2MTkzXHU2MWFmXHU2MWFkXHU2MTlmXHU2MTkyXHU2MWFhXHU2MWExXHU2MThkXHU2MTY2XHU2MWIzXHU2MjJkXHU2NDZl''@;'; put 'put ''XHU2NDcwXHU2NDk2XHU2NGEwXHU2NDg1XHU2NDk3XHU2NDljXHU2NDhmXHU2NDhiXHU2NDhhXHU2NDhjXHU2NGEzXHU2NDlmXHU2NDY4XHU2NGIxXHU2NDk4XHU2NTc2XHU2NTdhXHU2NTc5XHU2NTdiXHU2NWIyXHU2NWIzXHU2NmI1XHU2NmIwXHU2NmE5XHU2NmIyXHU2NmI3XHU2NmFhXHU2''@;'; put 'put ''NmFmXHU2YTAwXHU2YTA2XHU2YTE3XHU2OWU1XHU2OWY4XHU2YTE1XHU2OWYxXHU2OWU0XHU2YTIwXHU2OWZmXHU2OWVjXHU2OWUyXHU2YTFiXHU2YTFkXHU2OWZlXHU2YTI3XHU2OWYyXHU2OWVlXHU2YTE0XHU2OWY3XHU2OWU3XHU2YTQwXHU2YTA4XHU2OWU2XHU2OWZiXHU2YTBkXHU2OWZj''@;'; put 'put ''XHU2OWViXHU2YTA5XHU2YTA0XHU2YTE4XHU2YTI1XHU2YTBmXHU2OWY2XHU2YTI2XHU2YTA3XHU2OWY0XHU2YTE2XHU2YjUxXHU2YmE1XHU2YmEzXHU2YmEyXHU2YmE2XHU2YzAxXHU2YzAwXHU2YmZmXHU2YzAyXHU2ZjQxXHU2ZjI2XHU2ZjdlXHU2Zjg3XHU2ZmM2XHU2ZjkyIl0sWyJlNjQw''@;'; put 'put ''IiwiXHU2ZjhkXHU2Zjg5XHU2ZjhjXHU2ZjYyXHU2ZjRmXHU2Zjg1XHU2ZjVhXHU2Zjk2XHU2Zjc2XHU2ZjZjXHU2ZjgyXHU2ZjU1XHU2ZjcyXHU2ZjUyXHU2ZjUwXHU2ZjU3XHU2Zjk0XHU2ZjkzXHU2ZjVkXHU2ZjAwXHU2ZjYxXHU2ZjZiXHU2ZjdkXHU2ZjY3XHU2ZjkwXHU2ZjUzXHU2Zjhi''@;'; put 'put ''XHU2ZjY5XHU2ZjdmXHU2Zjk1XHU2ZjYzXHU2Zjc3XHU2ZjZhXHU2ZjdiXHU3MWIyXHU3MWFmXHU3MTliXHU3MWIwXHU3MWEwXHU3MTlhXHU3MWE5XHU3MWI1XHU3MTlkXHU3MWE1XHU3MTllXHU3MWE0XHU3MWExXHU3MWFhXHU3MTljXHU3MWE3XHU3MWIzXHU3Mjk4XHU3MjlhXHU3MzU4XHU3''@;'; put 'put ''MzUyXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzVkXHU3MzViXHU3MzYxXHU3MzVhXHU3MzU5Il0sWyJlNmExIiwiXHU3MzYyXHU3NDg3XHU3NDg5XHU3NDhhXHU3NDg2XHU3NDgxXHU3NDdkXHU3NDg1XHU3NDg4XHU3NDdjXHU3NDc5XHU3NTA4XHU3NTA3XHU3NTdlXHU3NjI1XHU3NjFlXHU3NjE5''@;'; put 'put ''XHU3NjFkXHU3NjFjXHU3NjIzXHU3NjFhXHU3NjI4XHU3NjFiXHU3NjljXHU3NjlkXHU3NjllXHU3NjliXHU3NzhkXHU3NzhmXHU3Nzg5XHU3Nzg4XHU3OGNkXHU3OGJiXHU3OGNmXHU3OGNjXHU3OGQxXHU3OGNlXHU3OGQ0XHU3OGM4XHU3OGMzXHU3OGM0XHU3OGM5XHU3OTlhXHU3OWExXHU3''@;'; put 'put ''OWEwXHU3OTljXHU3OWEyXHU3OTliXHU2Yjc2XHU3YTM5XHU3YWIyXHU3YWI0XHU3YWIzXHU3YmI3XHU3YmNiXHU3YmJlXHU3YmFjXHU3YmNlXHU3YmFmXHU3YmI5XHU3YmNhXHU3YmI1XHU3Y2M1XHU3Y2M4XHU3Y2NjXHU3Y2NiXHU3ZGY3XHU3ZGRiXHU3ZGVhXHU3ZGU3XHU3ZGQ3XHU3ZGUx''@;'; put 'put ''XHU3ZTAzXHU3ZGZhXHU3ZGU2XHU3ZGY2XHU3ZGYxXHU3ZGYwXHU3ZGVlXHU3ZGRmXHU3Zjc2XHU3ZmFjXHU3ZmIwXHU3ZmFkXHU3ZmVkXHU3ZmViXHU3ZmVhXHU3ZmVjXHU3ZmU2XHU3ZmU4XHU4MDY0XHU4MDY3XHU4MWEzXHU4MTlmIl0sWyJlNzQwIiwiXHU4MTllXHU4MTk1XHU4MWEyXHU4''@;'; put 'put ''MTk5XHU4MTk3XHU4MjE2XHU4MjRmXHU4MjUzXHU4MjUyXHU4MjUwXHU4MjRlXHU4MjUxXHU4NTI0XHU4NTNiXHU4NTBmXHU4NTAwXHU4NTI5XHU4NTBlXHU4NTA5XHU4NTBkXHU4NTFmXHU4NTBhXHU4NTI3XHU4NTFjXHU4NGZiXHU4NTJiXHU4NGZhXHU4NTA4XHU4NTBjXHU4NGY0XHU4NTJh''@;'; put 'put ''XHU4NGYyXHU4NTE1XHU4NGY3XHU4NGViXHU4NGYzXHU4NGZjXHU4NTEyXHU4NGVhXHU4NGU5XHU4NTE2XHU4NGZlXHU4NTI4XHU4NTFkXHU4NTJlXHU4NTAyXHU4NGZkXHU4NTFlXHU4NGY2XHU4NTMxXHU4NTI2XHU4NGU3XHU4NGU4XHU4NGYwXHU4NGVmXHU4NGY5XHU4NTE4XHU4NTIwXHU4''@;'; put 'put ''NTMwXHU4NTBiXHU4NTE5XHU4NTJmXHU4NjYyIl0sWyJlN2ExIiwiXHU4NzU2XHU4NzYzXHU4NzY0XHU4Nzc3XHU4N2UxXHU4NzczXHU4NzU4XHU4NzU0XHU4NzViXHU4NzUyXHU4NzYxXHU4NzVhXHU4NzUxXHU4NzVlXHU4NzZkXHU4NzZhXHU4NzUwXHU4NzRlXHU4NzVmXHU4NzVkXHU4NzZm''@;'; put 'put ''XHU4NzZjXHU4NzdhXHU4NzZlXHU4NzVjXHU4NzY1XHU4NzRmXHU4NzdiXHU4Nzc1XHU4NzYyXHU4NzY3XHU4NzY5XHU4ODVhXHU4OTA1XHU4OTBjXHU4OTE0XHU4OTBiXHU4OTE3XHU4OTE4XHU4OTE5XHU4OTA2XHU4OTE2XHU4OTExXHU4OTBlXHU4OTA5XHU4OWEyXHU4OWE0XHU4OWEzXHU4''@;'; put 'put ''OWVkXHU4OWYwXHU4OWVjXHU4YWNmXHU4YWM2XHU4YWI4XHU4YWQzXHU4YWQxXHU4YWQ0XHU4YWQ1XHU4YWJiXHU4YWQ3XHU4YWJlXHU4YWMwXHU4YWM1XHU4YWQ4XHU4YWMzXHU4YWJhXHU4YWJkXHU4YWQ5XHU4YzNlXHU4YzRkXHU4YzhmXHU4Y2U1XHU4Y2RmXHU4Y2Q5XHU4Y2U4XHU4Y2Rh''@;'; put 'put ''XHU4Y2RkXHU4Y2U3XHU4ZGEwXHU4ZDljXHU4ZGExXHU4ZDliXHU4ZTIwXHU4ZTIzXHU4ZTI1XHU4ZTI0XHU4ZTJlXHU4ZTE1XHU4ZTFiXHU4ZTE2XHU4ZTExXHU4ZTE5XHU4ZTI2XHU4ZTI3Il0sWyJlODQwIiwiXHU4ZTE0XHU4ZTEyXHU4ZTE4XHU4ZTEzXHU4ZTFjXHU4ZTE3XHU4ZTFhXHU4''@;'; put 'put ''ZjJjXHU4ZjI0XHU4ZjE4XHU4ZjFhXHU4ZjIwXHU4ZjIzXHU4ZjE2XHU4ZjE3XHU5MDczXHU5MDcwXHU5MDZmXHU5MDY3XHU5MDZiXHU5MTJmXHU5MTJiXHU5MTI5XHU5MTJhXHU5MTMyXHU5MTI2XHU5MTJlXHU5MTg1XHU5MTg2XHU5MThhXHU5MTgxXHU5MTgyXHU5MTg0XHU5MTgwXHU5MmQw''@;'; put 'put ''XHU5MmMzXHU5MmM0XHU5MmMwXHU5MmQ5XHU5MmI2XHU5MmNmXHU5MmYxXHU5MmRmXHU5MmQ4XHU5MmU5XHU5MmQ3XHU5MmRkXHU5MmNjXHU5MmVmXHU5MmMyXHU5MmU4XHU5MmNhXHU5MmM4XHU5MmNlXHU5MmU2XHU5MmNkXHU5MmQ1XHU5MmM5XHU5MmUwXHU5MmRlXHU5MmU3XHU5MmQxXHU5''@;'; put 'put ''MmQzIl0sWyJlOGExIiwiXHU5MmI1XHU5MmUxXHU5MmM2XHU5MmI0XHU5NTdjXHU5NWFjXHU5NWFiXHU5NWFlXHU5NWIwXHU5NmE0XHU5NmEyXHU5NmQzXHU5NzA1XHU5NzA4XHU5NzAyXHU5NzVhXHU5NzhhXHU5NzhlXHU5Nzg4XHU5N2QwXHU5N2NmXHU5ODFlXHU5ODFkXHU5ODI2XHU5ODI5''@;'; put 'put ''XHU5ODI4XHU5ODIwXHU5ODFiXHU5ODI3XHU5OGIyXHU5OTA4XHU5OGZhXHU5OTExXHU5OTE0XHU5OTE2XHU5OTE3XHU5OTE1XHU5OWRjXHU5OWNkXHU5OWNmXHU5OWQzXHU5OWQ0XHU5OWNlXHU5OWM5XHU5OWQ2XHU5OWQ4XHU5OWNiXHU5OWQ3XHU5OWNjXHU5YWIzXHU5YWVjXHU5YWViXHU5''@;'; put 'put ''YWYzXHU5YWYyXHU5YWYxXHU5YjQ2XHU5YjQzXHU5YjY3XHU5Yjc0XHU5YjcxXHU5YjY2XHU5Yjc2XHU5Yjc1XHU5YjcwXHU5YjY4XHU5YjY0XHU5YjZjXHU5Y2ZjXHU5Y2ZhXHU5Y2ZkXHU5Y2ZmXHU5Y2Y3XHU5ZDA3XHU5ZDAwXHU5Y2Y5XHU5Y2ZiXHU5ZDA4XHU5ZDA1XHU5ZDA0XHU5ZTgz''@;'; put 'put ''XHU5ZWQzXHU5ZjBmXHU5ZjEwXHU1MTFjXHU1MTEzXHU1MTE3XHU1MTFhXHU1MTExXHU1MWRlXHU1MzM0XHU1M2UxXHU1NjcwXHU1NjYwXHU1NjZlIl0sWyJlOTQwIiwiXHU1NjczXHU1NjY2XHU1NjYzXHU1NjZkXHU1NjcyXHU1NjVlXHU1Njc3XHU1NzFjXHU1NzFiXHU1OGM4XHU1OGJkXHU1''@;'; put 'put ''OGM5XHU1OGJmXHU1OGJhXHU1OGMyXHU1OGJjXHU1OGM2XHU1YjE3XHU1YjE5XHU1YjFiXHU1YjIxXHU1YjE0XHU1YjEzXHU1YjEwXHU1YjE2XHU1YjI4XHU1YjFhXHU1YjIwXHU1YjFlXHU1YmVmXHU1ZGFjXHU1ZGIxXHU1ZGE5XHU1ZGE3XHU1ZGI1XHU1ZGIwXHU1ZGFlXHU1ZGFhXHU1ZGE4''@;'; put 'put ''XHU1ZGIyXHU1ZGFkXHU1ZGFmXHU1ZGI0XHU1ZTY3XHU1ZTY4XHU1ZTY2XHU1ZTZmXHU1ZWU5XHU1ZWU3XHU1ZWU2XHU1ZWU4XHU1ZWU1XHU1ZjRiXHU1ZmJjXHU2MTlkXHU2MWE4XHU2MTk2XHU2MWM1XHU2MWI0XHU2MWM2XHU2MWMxXHU2MWNjXHU2MWJhIl0sWyJlOWExIiwiXHU2MWJmXHU2''@;'; put 'put ''MWI4XHU2MThjXHU2NGQ3XHU2NGQ2XHU2NGQwXHU2NGNmXHU2NGM5XHU2NGJkXHU2NDg5XHU2NGMzXHU2NGRiXHU2NGYzXHU2NGQ5XHU2NTMzXHU2NTdmXHU2NTdjXHU2NWEyXHU2NmM4XHU2NmJlXHU2NmMwXHU2NmNhXHU2NmNiXHU2NmNmXHU2NmJkXHU2NmJiXHU2NmJhXHU2NmNjXHU2NzIz''@;'; put 'put ''XHU2YTM0XHU2YTY2XHU2YTQ5XHU2YTY3XHU2YTMyXHU2YTY4XHU2YTNlXHU2YTVkXHU2YTZkXHU2YTc2XHU2YTViXHU2YTUxXHU2YTI4XHU2YTVhXHU2YTNiXHU2YTNmXHU2YTQxXHU2YTZhXHU2YTY0XHU2YTUwXHU2YTRmXHU2YTU0XHU2YTZmXHU2YTY5XHU2YTYwXHU2YTNjXHU2YTVlXHU2''@;'; put 'put ''YTU2XHU2YTU1XHU2YTRkXHU2YTRlXHU2YTQ2XHU2YjU1XHU2YjU0XHU2YjU2XHU2YmE3XHU2YmFhXHU2YmFiXHU2YmM4XHU2YmM3XHU2YzA0XHU2YzAzXHU2YzA2XHU2ZmFkXHU2ZmNiXHU2ZmEzXHU2ZmM3XHU2ZmJjXHU2ZmNlXHU2ZmM4XHU2ZjVlXHU2ZmM0XHU2ZmJkXHU2ZjllXHU2ZmNh''@;'; put 'put ''XHU2ZmE4XHU3MDA0XHU2ZmE1XHU2ZmFlXHU2ZmJhXHU2ZmFjXHU2ZmFhXHU2ZmNmXHU2ZmJmXHU2ZmI4Il0sWyJlYTQwIiwiXHU2ZmEyXHU2ZmM5XHU2ZmFiXHU2ZmNkXHU2ZmFmXHU2ZmIyXHU2ZmIwXHU3MWM1XHU3MWMyXHU3MWJmXHU3MWI4XHU3MWQ2XHU3MWMwXHU3MWMxXHU3MWNiXHU3''@;'; put 'put ''MWQ0XHU3MWNhXHU3MWM3XHU3MWNmXHU3MWJkXHU3MWQ4XHU3MWJjXHU3MWM2XHU3MWRhXHU3MWRiXHU3MjlkXHU3MjllXHU3MzY5XHU3MzY2XHU3MzY3XHU3MzZjXHU3MzY1XHU3MzZiXHU3MzZhXHU3NDdmXHU3NDlhXHU3NGEwXHU3NDk0XHU3NDkyXHU3NDk1XHU3NGExXHU3NTBiXHU3NTgw''@;'; put 'put ''XHU3NjJmXHU3NjJkXHU3NjMxXHU3NjNkXHU3NjMzXHU3NjNjXHU3NjM1XHU3NjMyXHU3NjMwXHU3NmJiXHU3NmU2XHU3NzlhXHU3NzlkXHU3N2ExXHU3NzljXHU3NzliXHU3N2EyXHU3N2EzXHU3Nzk1XHU3Nzk5Il0sWyJlYWExIiwiXHU3Nzk3XHU3OGRkXHU3OGU5XHU3OGU1XHU3OGVhXHU3''@;'; put 'put ''OGRlXHU3OGUzXHU3OGRiXHU3OGUxXHU3OGUyXHU3OGVkXHU3OGRmXHU3OGUwXHU3OWE0XHU3YTQ0XHU3YTQ4XHU3YTQ3XHU3YWI2XHU3YWI4XHU3YWI1XHU3YWIxXHU3YWI3XHU3YmRlXHU3YmUzXHU3YmU3XHU3YmRkXHU3YmQ1XHU3YmU1XHU3YmRhXHU3YmU4XHU3YmY5XHU3YmQ0XHU3YmVh''@;'; put 'put ''XHU3YmUyXHU3YmRjXHU3YmViXHU3YmQ4XHU3YmRmXHU3Y2QyXHU3Y2Q0XHU3Y2Q3XHU3Y2QwXHU3Y2QxXHU3ZTEyXHU3ZTIxXHU3ZTE3XHU3ZTBjXHU3ZTFmXHU3ZTIwXHU3ZTEzXHU3ZTBlXHU3ZTFjXHU3ZTE1XHU3ZTFhXHU3ZTIyXHU3ZTBiXHU3ZTBmXHU3ZTE2XHU3ZTBkXHU3ZTE0XHU3''@;'; put 'put ''ZTI1XHU3ZTI0XHU3ZjQzXHU3ZjdiXHU3ZjdjXHU3ZjdhXHU3ZmIxXHU3ZmVmXHU4MDJhXHU4MDI5XHU4MDZjXHU4MWIxXHU4MWE2XHU4MWFlXHU4MWI5XHU4MWI1XHU4MWFiXHU4MWIwXHU4MWFjXHU4MWI0XHU4MWIyXHU4MWI3XHU4MWE3XHU4MWYyXHU4MjU1XHU4MjU2XHU4MjU3XHU4NTU2''@;'; put 'put ''XHU4NTQ1XHU4NTZiXHU4NTRkXHU4NTUzXHU4NTYxXHU4NTU4Il0sWyJlYjQwIiwiXHU4NTQwXHU4NTQ2XHU4NTY0XHU4NTQxXHU4NTYyXHU4NTQ0XHU4NTUxXHU4NTQ3XHU4NTYzXHU4NTNlXHU4NTViXHU4NTcxXHU4NTRlXHU4NTZlXHU4NTc1XHU4NTU1XHU4NTY3XHU4NTYwXHU4NThjXHU4''@;'; put 'put ''NTY2XHU4NTVkXHU4NTU0XHU4NTY1XHU4NTZjXHU4NjYzXHU4NjY1XHU4NjY0XHU4NzliXHU4NzhmXHU4Nzk3XHU4NzkzXHU4NzkyXHU4Nzg4XHU4NzgxXHU4Nzk2XHU4Nzk4XHU4Nzc5XHU4Nzg3XHU4N2EzXHU4Nzg1XHU4NzkwXHU4NzkxXHU4NzlkXHU4Nzg0XHU4Nzk0XHU4NzljXHU4Nzlh''@;'; put 'put ''XHU4Nzg5XHU4OTFlXHU4OTI2XHU4OTMwXHU4OTJkXHU4OTJlXHU4OTI3XHU4OTMxXHU4OTIyXHU4OTI5XHU4OTIzXHU4OTJmXHU4OTJjXHU4OTFmXHU4OWYxXHU4YWUwIl0sWyJlYmExIiwiXHU4YWUyXHU4YWYyXHU4YWY0XHU4YWY1XHU4YWRkXHU4YjE0XHU4YWU0XHU4YWRmXHU4YWYwXHU4''@;'; put 'put ''YWM4XHU4YWRlXHU4YWUxXHU4YWU4XHU4YWZmXHU4YWVmXHU4YWZiXHU4YzkxXHU4YzkyXHU4YzkwXHU4Y2Y1XHU4Y2VlXHU4Y2YxXHU4Y2YwXHU4Y2YzXHU4ZDZjXHU4ZDZlXHU4ZGE1XHU4ZGE3XHU4ZTMzXHU4ZTNlXHU4ZTM4XHU4ZTQwXHU4ZTQ1XHU4ZTM2XHU4ZTNjXHU4ZTNkXHU4ZTQx''@;'; put 'put ''XHU4ZTMwXHU4ZTNmXHU4ZWJkXHU4ZjM2XHU4ZjJlXHU4ZjM1XHU4ZjMyXHU4ZjM5XHU4ZjM3XHU4ZjM0XHU5MDc2XHU5MDc5XHU5MDdiXHU5MDg2XHU5MGZhXHU5MTMzXHU5MTM1XHU5MTM2XHU5MTkzXHU5MTkwXHU5MTkxXHU5MThkXHU5MThmXHU5MzI3XHU5MzFlXHU5MzA4XHU5MzFmXHU5''@;'; put 'put ''MzA2XHU5MzBmXHU5MzdhXHU5MzM4XHU5MzNjXHU5MzFiXHU5MzIzXHU5MzEyXHU5MzAxXHU5MzQ2XHU5MzJkXHU5MzBlXHU5MzBkXHU5MmNiXHU5MzFkXHU5MmZhXHU5MzI1XHU5MzEzXHU5MmY5XHU5MmY3XHU5MzM0XHU5MzAyXHU5MzI0XHU5MmZmXHU5MzI5XHU5MzM5XHU5MzM1XHU5MzJh''@;'; put 'put ''XHU5MzE0XHU5MzBjIl0sWyJlYzQwIiwiXHU5MzBiXHU5MmZlXHU5MzA5XHU5MzAwXHU5MmZiXHU5MzE2XHU5NWJjXHU5NWNkXHU5NWJlXHU5NWI5XHU5NWJhXHU5NWI2XHU5NWJmXHU5NWI1XHU5NWJkXHU5NmE5XHU5NmQ0XHU5NzBiXHU5NzEyXHU5NzEwXHU5Nzk5XHU5Nzk3XHU5Nzk0XHU5''@;'; put 'put ''N2YwXHU5N2Y4XHU5ODM1XHU5ODJmXHU5ODMyXHU5OTI0XHU5OTFmXHU5OTI3XHU5OTI5XHU5OTllXHU5OWVlXHU5OWVjXHU5OWU1XHU5OWU0XHU5OWYwXHU5OWUzXHU5OWVhXHU5OWU5XHU5OWU3XHU5YWI5XHU5YWJmXHU5YWI0XHU5YWJiXHU5YWY2XHU5YWZhXHU5YWY5XHU5YWY3XHU5YjMz''@;'; put 'put ''XHU5YjgwXHU5Yjg1XHU5Yjg3XHU5YjdjXHU5YjdlXHU5YjdiXHU5YjgyXHU5YjkzXHU5YjkyXHU5YjkwXHU5YjdhXHU5Yjk1Il0sWyJlY2ExIiwiXHU5YjdkXHU5Yjg4XHU5ZDI1XHU5ZDE3XHU5ZDIwXHU5ZDFlXHU5ZDE0XHU5ZDI5XHU5ZDFkXHU5ZDE4XHU5ZDIyXHU5ZDEwXHU5ZDE5XHU5''@;'; put 'put ''ZDFmXHU5ZTg4XHU5ZTg2XHU5ZTg3XHU5ZWFlXHU5ZWFkXHU5ZWQ1XHU5ZWQ2XHU5ZWZhXHU5ZjEyXHU5ZjNkXHU1MTI2XHU1MTI1XHU1MTIyXHU1MTI0XHU1MTIwXHU1MTI5XHU1MmY0XHU1NjkzXHU1NjhjXHU1NjhkXHU1Njg2XHU1Njg0XHU1NjgzXHU1NjdlXHU1NjgyXHU1NjdmXHU1Njgx''@;'; put 'put ''XHU1OGQ2XHU1OGQ0XHU1OGNmXHU1OGQyXHU1YjJkXHU1YjI1XHU1YjMyXHU1YjIzXHU1YjJjXHU1YjI3XHU1YjI2XHU1YjJmXHU1YjJlXHU1YjdiXHU1YmYxXHU1YmYyXHU1ZGI3XHU1ZTZjXHU1ZTZhXHU1ZmJlXHU1ZmJiXHU2MWMzXHU2MWI1XHU2MWJjXHU2MWU3XHU2MWUwXHU2MWU1XHU2''@;'; put 'put ''MWU0XHU2MWU4XHU2MWRlXHU2NGVmXHU2NGU5XHU2NGUzXHU2NGViXHU2NGU0XHU2NGU4XHU2NTgxXHU2NTgwXHU2NWI2XHU2NWRhXHU2NmQyXHU2YThkXHU2YTk2XHU2YTgxXHU2YWE1XHU2YTg5XHU2YTlmXHU2YTliXHU2YWExXHU2YTllXHU2YTg3XHU2YTkzXHU2YThlIl0sWyJlZDQwIiwi''@;'; put 'put ''XHU2YTk1XHU2YTgzXHU2YWE4XHU2YWE0XHU2YTkxXHU2YTdmXHU2YWE2XHU2YTlhXHU2YTg1XHU2YThjXHU2YTkyXHU2YjViXHU2YmFkXHU2YzA5XHU2ZmNjXHU2ZmE5XHU2ZmY0XHU2ZmQ0XHU2ZmUzXHU2ZmRjXHU2ZmVkXHU2ZmU3XHU2ZmU2XHU2ZmRlXHU2ZmYyXHU2ZmRkXHU2ZmUyXHU2''@;'; put 'put ''ZmU4XHU3MWUxXHU3MWYxXHU3MWU4XHU3MWYyXHU3MWU0XHU3MWYwXHU3MWUyXHU3MzczXHU3MzZlXHU3MzZmXHU3NDk3XHU3NGIyXHU3NGFiXHU3NDkwXHU3NGFhXHU3NGFkXHU3NGIxXHU3NGE1XHU3NGFmXHU3NTEwXHU3NTExXHU3NTEyXHU3NTBmXHU3NTg0XHU3NjQzXHU3NjQ4XHU3NjQ5''@;'; put 'put ''XHU3NjQ3XHU3NmE0XHU3NmU5XHU3N2I1XHU3N2FiXHU3N2IyXHU3N2I3XHU3N2I2Il0sWyJlZGExIiwiXHU3N2I0XHU3N2IxXHU3N2E4XHU3N2YwXHU3OGYzXHU3OGZkXHU3OTAyXHU3OGZiXHU3OGZjXHU3OGYyXHU3OTA1XHU3OGY5XHU3OGZlXHU3OTA0XHU3OWFiXHU3OWE4XHU3YTVjXHU3''@;'; put 'put ''YTViXHU3YTU2XHU3YTU4XHU3YTU0XHU3YTVhXHU3YWJlXHU3YWMwXHU3YWMxXHU3YzA1XHU3YzBmXHU3YmYyXHU3YzAwXHU3YmZmXHU3YmZiXHU3YzBlXHU3YmY0XHU3YzBiXHU3YmYzXHU3YzAyXHU3YzA5XHU3YzAzXHU3YzAxXHU3YmY4XHU3YmZkXHU3YzA2XHU3YmYwXHU3YmYxXHU3YzEw''@;'; put 'put ''XHU3YzBhXHU3Y2U4XHU3ZTJkXHU3ZTNjXHU3ZTQyXHU3ZTMzXHU5ODQ4XHU3ZTM4XHU3ZTJhXHU3ZTQ5XHU3ZTQwXHU3ZTQ3XHU3ZTI5XHU3ZTRjXHU3ZTMwXHU3ZTNiXHU3ZTM2XHU3ZTQ0XHU3ZTNhXHU3ZjQ1XHU3ZjdmXHU3ZjdlXHU3ZjdkXHU3ZmY0XHU3ZmYyXHU4MDJjXHU4MWJiXHU4''@;'; put 'put ''MWM0XHU4MWNjXHU4MWNhXHU4MWM1XHU4MWM3XHU4MWJjXHU4MWU5XHU4MjViXHU4MjVhXHU4MjVjXHU4NTgzXHU4NTgwXHU4NThmXHU4NWE3XHU4NTk1XHU4NWEwXHU4NThiXHU4NWEzXHU4NTdiXHU4NWE0XHU4NTlhXHU4NTllIl0sWyJlZTQwIiwiXHU4NTc3XHU4NTdjXHU4NTg5XHU4NWEx''@;'; put 'put ''XHU4NTdhXHU4NTc4XHU4NTU3XHU4NThlXHU4NTk2XHU4NTg2XHU4NThkXHU4NTk5XHU4NTlkXHU4NTgxXHU4NWEyXHU4NTgyXHU4NTg4XHU4NTg1XHU4NTc5XHU4NTc2XHU4NTk4XHU4NTkwXHU4NTlmXHU4NjY4XHU4N2JlXHU4N2FhXHU4N2FkXHU4N2M1XHU4N2IwXHU4N2FjXHU4N2I5XHU4''@;'; put 'put ''N2I1XHU4N2JjXHU4N2FlXHU4N2M5XHU4N2MzXHU4N2MyXHU4N2NjXHU4N2I3XHU4N2FmXHU4N2M0XHU4N2NhXHU4N2I0XHU4N2I2XHU4N2JmXHU4N2I4XHU4N2JkXHU4N2RlXHU4N2IyXHU4OTM1XHU4OTMzXHU4OTNjXHU4OTNlXHU4OTQxXHU4OTUyXHU4OTM3XHU4OTQyXHU4OWFkXHU4OWFm''@;'; put 'put ''XHU4OWFlXHU4OWYyXHU4OWYzXHU4YjFlIl0sWyJlZWExIiwiXHU4YjE4XHU4YjE2XHU4YjExXHU4YjA1XHU4YjBiXHU4YjIyXHU4YjBmXHU4YjEyXHU4YjE1XHU4YjA3XHU4YjBkXHU4YjA4XHU4YjA2XHU4YjFjXHU4YjEzXHU4YjFhXHU4YzRmXHU4YzcwXHU4YzcyXHU4YzcxXHU4YzZmXHU4''@;'; put 'put ''Yzk1XHU4Yzk0XHU4Y2Y5XHU4ZDZmXHU4ZTRlXHU4ZTRkXHU4ZTUzXHU4ZTUwXHU4ZTRjXHU4ZTQ3XHU4ZjQzXHU4ZjQwXHU5MDg1XHU5MDdlXHU5MTM4XHU5MTlhXHU5MWEyXHU5MTliXHU5MTk5XHU5MTlmXHU5MWExXHU5MTlkXHU5MWEwXHU5M2ExXHU5MzgzXHU5M2FmXHU5MzY0XHU5MzU2''@;'; put 'put ''XHU5MzQ3XHU5MzdjXHU5MzU4XHU5MzVjXHU5Mzc2XHU5MzQ5XHU5MzUwXHU5MzUxXHU5MzYwXHU5MzZkXHU5MzhmXHU5MzRjXHU5MzZhXHU5Mzc5XHU5MzU3XHU5MzU1XHU5MzUyXHU5MzRmXHU5MzcxXHU5Mzc3XHU5MzdiXHU5MzYxXHU5MzVlXHU5MzYzXHU5MzY3XHU5MzgwXHU5MzRlXHU5''@;'; put 'put ''MzU5XHU5NWM3XHU5NWMwXHU5NWM5XHU5NWMzXHU5NWM1XHU5NWI3XHU5NmFlXHU5NmIwXHU5NmFjXHU5NzIwXHU5NzFmXHU5NzE4XHU5NzFkXHU5NzE5XHU5NzlhXHU5N2ExXHU5NzljIl0sWyJlZjQwIiwiXHU5NzllXHU5NzlkXHU5N2Q1XHU5N2Q0XHU5N2YxXHU5ODQxXHU5ODQ0XHU5ODRh''@;'; put 'put ''XHU5ODQ5XHU5ODQ1XHU5ODQzXHU5OTI1XHU5OTJiXHU5OTJjXHU5OTJhXHU5OTMzXHU5OTMyXHU5OTJmXHU5OTJkXHU5OTMxXHU5OTMwXHU5OTk4XHU5OWEzXHU5OWExXHU5YTAyXHU5OWZhXHU5OWY0XHU5OWY3XHU5OWY5XHU5OWY4XHU5OWY2XHU5OWZiXHU5OWZkXHU5OWZlXHU5OWZjXHU5''@;'; put 'put ''YTAzXHU5YWJlXHU5YWZlXHU5YWZkXHU5YjAxXHU5YWZjXHU5YjQ4XHU5YjlhXHU5YmE4XHU5YjllXHU5YjliXHU5YmE2XHU5YmExXHU5YmE1XHU5YmE0XHU5Yjg2XHU5YmEyXHU5YmEwXHU5YmFmXHU5ZDMzXHU5ZDQxXHU5ZDY3XHU5ZDM2XHU5ZDJlXHU5ZDJmXHU5ZDMxXHU5ZDM4XHU5ZDMw''@;'; put 'put ''Il0sWyJlZmExIiwiXHU5ZDQ1XHU5ZDQyXHU5ZDQzXHU5ZDNlXHU5ZDM3XHU5ZDQwXHU5ZDNkXHU3ZmY1XHU5ZDJkXHU5ZThhXHU5ZTg5XHU5ZThkXHU5ZWIwXHU5ZWM4XHU5ZWRhXHU5ZWZiXHU5ZWZmXHU5ZjI0XHU5ZjIzXHU5ZjIyXHU5ZjU0XHU5ZmEwXHU1MTMxXHU1MTJkXHU1MTJlXHU1''@;'; put 'put ''Njk4XHU1NjljXHU1Njk3XHU1NjlhXHU1NjlkXHU1Njk5XHU1OTcwXHU1YjNjXHU1YzY5XHU1YzZhXHU1ZGMwXHU1ZTZkXHU1ZTZlXHU2MWQ4XHU2MWRmXHU2MWVkXHU2MWVlXHU2MWYxXHU2MWVhXHU2MWYwXHU2MWViXHU2MWQ2XHU2MWU5XHU2NGZmXHU2NTA0XHU2NGZkXHU2NGY4XHU2NTAx''@;'; put 'put ''XHU2NTAzXHU2NGZjXHU2NTk0XHU2NWRiXHU2NmRhXHU2NmRiXHU2NmQ4XHU2YWM1XHU2YWI5XHU2YWJkXHU2YWUxXHU2YWM2XHU2YWJhXHU2YWI2XHU2YWI3XHU2YWM3XHU2YWI0XHU2YWFkXHU2YjVlXHU2YmM5XHU2YzBiXHU3MDA3XHU3MDBjXHU3MDBkXHU3MDAxXHU3MDA1XHU3MDE0XHU3''@;'; put 'put ''MDBlXHU2ZmZmXHU3MDAwXHU2ZmZiXHU3MDI2XHU2ZmZjXHU2ZmY3XHU3MDBhXHU3MjAxXHU3MWZmXHU3MWY5XHU3MjAzXHU3MWZkXHU3Mzc2Il0sWyJmMDQwIiwiXHU3NGI4XHU3NGMwXHU3NGI1XHU3NGMxXHU3NGJlXHU3NGI2XHU3NGJiXHU3NGMyXHU3NTE0XHU3NTEzXHU3NjVjXHU3NjY0''@;'; put 'put ''XHU3NjU5XHU3NjUwXHU3NjUzXHU3NjU3XHU3NjVhXHU3NmE2XHU3NmJkXHU3NmVjXHU3N2MyXHU3N2JhXHU3OGZmXHU3OTBjXHU3OTEzXHU3OTE0XHU3OTA5XHU3OTEwXHU3OTEyXHU3OTExXHU3OWFkXHU3OWFjXHU3YTVmXHU3YzFjXHU3YzI5XHU3YzE5XHU3YzIwXHU3YzFmXHU3YzJkXHU3''@;'; put 'put ''YzFkXHU3YzI2XHU3YzI4XHU3YzIyXHU3YzI1XHU3YzMwXHU3ZTVjXHU3ZTUwXHU3ZTU2XHU3ZTYzXHU3ZTU4XHU3ZTYyXHU3ZTVmXHU3ZTUxXHU3ZTYwXHU3ZTU3XHU3ZTUzXHU3ZmI1XHU3ZmIzXHU3ZmY3XHU3ZmY4XHU4MDc1XHU4MWQxXHU4MWQyIl0sWyJmMGExIiwiXHU4MWQwXHU4MjVm''@;'; put 'put ''XHU4MjVlXHU4NWI0XHU4NWM2XHU4NWMwXHU4NWMzXHU4NWMyXHU4NWIzXHU4NWI1XHU4NWJkXHU4NWM3XHU4NWM0XHU4NWJmXHU4NWNiXHU4NWNlXHU4NWM4XHU4NWM1XHU4NWIxXHU4NWI2XHU4NWQyXHU4NjI0XHU4NWI4XHU4NWI3XHU4NWJlXHU4NjY5XHU4N2U3XHU4N2U2XHU4N2UyXHU4''@;'; put 'put ''N2RiXHU4N2ViXHU4N2VhXHU4N2U1XHU4N2RmXHU4N2YzXHU4N2U0XHU4N2Q0XHU4N2RjXHU4N2QzXHU4N2VkXHU4N2Q4XHU4N2UzXHU4N2E0XHU4N2Q3XHU4N2Q5XHU4ODAxXHU4N2Y0XHU4N2U4XHU4N2RkXHU4OTUzXHU4OTRiXHU4OTRmXHU4OTRjXHU4OTQ2XHU4OTUwXHU4OTUxXHU4OTQ5''@;'; put 'put ''XHU4YjJhXHU4YjI3XHU4YjIzXHU4YjMzXHU4YjMwXHU4YjM1XHU4YjQ3XHU4YjJmXHU4YjNjXHU4YjNlXHU4YjMxXHU4YjI1XHU4YjM3XHU4YjI2XHU4YjM2XHU4YjJlXHU4YjI0XHU4YjNiXHU4YjNkXHU4YjNhXHU4YzQyXHU4Yzc1XHU4Yzk5XHU4Yzk4XHU4Yzk3XHU4Y2ZlXHU4ZDA0XHU4''@;'; put 'put ''ZDAyXHU4ZDAwXHU4ZTVjXHU4ZTYyXHU4ZTYwXHU4ZTU3XHU4ZTU2XHU4ZTVlXHU4ZTY1XHU4ZTY3Il0sWyJmMTQwIiwiXHU4ZTViXHU4ZTVhXHU4ZTYxXHU4ZTVkXHU4ZTY5XHU4ZTU0XHU4ZjQ2XHU4ZjQ3XHU4ZjQ4XHU4ZjRiXHU5MTI4XHU5MTNhXHU5MTNiXHU5MTNlXHU5MWE4XHU5MWE1''@;'; put 'put ''XHU5MWE3XHU5MWFmXHU5MWFhXHU5M2I1XHU5MzhjXHU5MzkyXHU5M2I3XHU5MzliXHU5MzlkXHU5Mzg5XHU5M2E3XHU5MzhlXHU5M2FhXHU5MzllXHU5M2E2XHU5Mzk1XHU5Mzg4XHU5Mzk5XHU5MzlmXHU5MzhkXHU5M2IxXHU5MzkxXHU5M2IyXHU5M2E0XHU5M2E4XHU5M2I0XHU5M2EzXHU5''@;'; put 'put ''M2E1XHU5NWQyXHU5NWQzXHU5NWQxXHU5NmIzXHU5NmQ3XHU5NmRhXHU1ZGMyXHU5NmRmXHU5NmQ4XHU5NmRkXHU5NzIzXHU5NzIyXHU5NzI1XHU5N2FjXHU5N2FlXHU5N2E4XHU5N2FiXHU5N2E0XHU5N2FhIl0sWyJmMWExIiwiXHU5N2EyXHU5N2E1XHU5N2Q3XHU5N2Q5XHU5N2Q2XHU5N2Q4''@;'; put 'put ''XHU5N2ZhXHU5ODUwXHU5ODUxXHU5ODUyXHU5OGI4XHU5OTQxXHU5OTNjXHU5OTNhXHU5YTBmXHU5YTBiXHU5YTA5XHU5YTBkXHU5YTA0XHU5YTExXHU5YTBhXHU5YTA1XHU5YTA3XHU5YTA2XHU5YWMwXHU5YWRjXHU5YjA4XHU5YjA0XHU5YjA1XHU5YjI5XHU5YjM1XHU5YjRhXHU5YjRjXHU5''@;'; put 'put ''YjRiXHU5YmM3XHU5YmM2XHU5YmMzXHU5YmJmXHU5YmMxXHU5YmI1XHU5YmI4XHU5YmQzXHU5YmI2XHU5YmM0XHU5YmI5XHU5YmJkXHU5ZDVjXHU5ZDUzXHU5ZDRmXHU5ZDRhXHU5ZDViXHU5ZDRiXHU5ZDU5XHU5ZDU2XHU5ZDRjXHU5ZDU3XHU5ZDUyXHU5ZDU0XHU5ZDVmXHU5ZDU4XHU5ZDVh''@;'; put 'put ''XHU5ZThlXHU5ZThjXHU5ZWRmXHU5ZjAxXHU5ZjAwXHU5ZjE2XHU5ZjI1XHU5ZjJiXHU5ZjJhXHU5ZjI5XHU5ZjI4XHU5ZjRjXHU5ZjU1XHU1MTM0XHU1MTM1XHU1Mjk2XHU1MmY3XHU1M2I0XHU1NmFiXHU1NmFkXHU1NmE2XHU1NmE3XHU1NmFhXHU1NmFjXHU1OGRhXHU1OGRkXHU1OGRiXHU1''@;'; put 'put ''OTEyXHU1YjNkXHU1YjNlXHU1YjNmXHU1ZGMzXHU1ZTcwIl0sWyJmMjQwIiwiXHU1ZmJmXHU2MWZiXHU2NTA3XHU2NTEwXHU2NTBkXHU2NTA5XHU2NTBjXHU2NTBlXHU2NTg0XHU2NWRlXHU2NWRkXHU2NmRlXHU2YWU3XHU2YWUwXHU2YWNjXHU2YWQxXHU2YWQ5XHU2YWNiXHU2YWRmXHU2YWRj''@;'; put 'put ''XHU2YWQwXHU2YWViXHU2YWNmXHU2YWNkXHU2YWRlXHU2YjYwXHU2YmIwXHU2YzBjXHU3MDE5XHU3MDI3XHU3MDIwXHU3MDE2XHU3MDJiXHU3MDIxXHU3MDIyXHU3MDIzXHU3MDI5XHU3MDE3XHU3MDI0XHU3MDFjXHU3MDJhXHU3MjBjXHU3MjBhXHU3MjA3XHU3MjAyXHU3MjA1XHU3MmE1XHU3''@;'; put 'put ''MmE2XHU3MmE0XHU3MmEzXHU3MmExXHU3NGNiXHU3NGM1XHU3NGI3XHU3NGMzXHU3NTE2XHU3NjYwXHU3N2M5XHU3N2NhXHU3N2M0XHU3N2YxXHU3OTFkXHU3OTFiIl0sWyJmMmExIiwiXHU3OTIxXHU3OTFjXHU3OTE3XHU3OTFlXHU3OWIwXHU3YTY3XHU3YTY4XHU3YzMzXHU3YzNjXHU3YzM5''@;'; put 'put ''XHU3YzJjXHU3YzNiXHU3Y2VjXHU3Y2VhXHU3ZTc2XHU3ZTc1XHU3ZTc4XHU3ZTcwXHU3ZTc3XHU3ZTZmXHU3ZTdhXHU3ZTcyXHU3ZTc0XHU3ZTY4XHU3ZjRiXHU3ZjRhXHU3ZjgzXHU3Zjg2XHU3ZmI3XHU3ZmZkXHU3ZmZlXHU4MDc4XHU4MWQ3XHU4MWQ1XHU4MjY0XHU4MjYxXHU4MjYzXHU4''@;'; put 'put ''NWViXHU4NWYxXHU4NWVkXHU4NWQ5XHU4NWUxXHU4NWU4XHU4NWRhXHU4NWQ3XHU4NWVjXHU4NWYyXHU4NWY4XHU4NWQ4XHU4NWRmXHU4NWUzXHU4NWRjXHU4NWQxXHU4NWYwXHU4NWU2XHU4NWVmXHU4NWRlXHU4NWUyXHU4ODAwXHU4N2ZhXHU4ODAzXHU4N2Y2XHU4N2Y3XHU4ODA5XHU4ODBj''@;'; put 'put ''XHU4ODBiXHU4ODA2XHU4N2ZjXHU4ODA4XHU4N2ZmXHU4ODBhXHU4ODAyXHU4OTYyXHU4OTVhXHU4OTViXHU4OTU3XHU4OTYxXHU4OTVjXHU4OTU4XHU4OTVkXHU4OTU5XHU4OTg4XHU4OWI3XHU4OWI2XHU4OWY2XHU4YjUwXHU4YjQ4XHU4YjRhXHU4YjQwXHU4YjUzXHU4YjU2XHU4YjU0XHU4''@;'; put 'put ''YjRiXHU4YjU1Il0sWyJmMzQwIiwiXHU4YjUxXHU4YjQyXHU4YjUyXHU4YjU3XHU4YzQzXHU4Yzc3XHU4Yzc2XHU4YzlhXHU4ZDA2XHU4ZDA3XHU4ZDA5XHU4ZGFjXHU4ZGFhXHU4ZGFkXHU4ZGFiXHU4ZTZkXHU4ZTc4XHU4ZTczXHU4ZTZhXHU4ZTZmXHU4ZTdiXHU4ZWMyXHU4ZjUyXHU4ZjUx''@;'; put 'put ''XHU4ZjRmXHU4ZjUwXHU4ZjUzXHU4ZmI0XHU5MTQwXHU5MTNmXHU5MWIwXHU5MWFkXHU5M2RlXHU5M2M3XHU5M2NmXHU5M2MyXHU5M2RhXHU5M2QwXHU5M2Y5XHU5M2VjXHU5M2NjXHU5M2Q5XHU5M2E5XHU5M2U2XHU5M2NhXHU5M2Q0XHU5M2VlXHU5M2UzXHU5M2Q1XHU5M2M0XHU5M2NlXHU5''@;'; put 'put ''M2MwXHU5M2QyXHU5M2U3XHU5NTdkXHU5NWRhXHU5NWRiXHU5NmUxXHU5NzI5XHU5NzJiXHU5NzJjXHU5NzI4XHU5NzI2Il0sWyJmM2ExIiwiXHU5N2IzXHU5N2I3XHU5N2I2XHU5N2RkXHU5N2RlXHU5N2RmXHU5ODVjXHU5ODU5XHU5ODVkXHU5ODU3XHU5OGJmXHU5OGJkXHU5OGJiXHU5OGJl''@;'; put 'put ''XHU5OTQ4XHU5OTQ3XHU5OTQzXHU5OWE2XHU5OWE3XHU5YTFhXHU5YTE1XHU5YTI1XHU5YTFkXHU5YTI0XHU5YTFiXHU5YTIyXHU5YTIwXHU5YTI3XHU5YTIzXHU5YTFlXHU5YTFjXHU5YTE0XHU5YWMyXHU5YjBiXHU5YjBhXHU5YjBlXHU5YjBjXHU5YjM3XHU5YmVhXHU5YmViXHU5YmUwXHU5''@;'; put 'put ''YmRlXHU5YmU0XHU5YmU2XHU5YmUyXHU5YmYwXHU5YmQ0XHU5YmQ3XHU5YmVjXHU5YmRjXHU5YmQ5XHU5YmU1XHU5YmQ1XHU5YmUxXHU5YmRhXHU5ZDc3XHU5ZDgxXHU5ZDhhXHU5ZDg0XHU5ZDg4XHU5ZDcxXHU5ZDgwXHU5ZDc4XHU5ZDg2XHU5ZDhiXHU5ZDhjXHU5ZDdkXHU5ZDZiXHU5ZDc0''@;'; put 'put ''XHU5ZDc1XHU5ZDcwXHU5ZDY5XHU5ZDg1XHU5ZDczXHU5ZDdiXHU5ZDgyXHU5ZDZmXHU5ZDc5XHU5ZDdmXHU5ZDg3XHU5ZDY4XHU5ZTk0XHU5ZTkxXHU5ZWMwXHU5ZWZjXHU5ZjJkXHU5ZjQwXHU5ZjQxXHU5ZjRkXHU5ZjU2XHU5ZjU3XHU5ZjU4XHU1MzM3XHU1NmIyIl0sWyJmNDQwIiwiXHU1''@;'; put 'put ''NmI1XHU1NmIzXHU1OGUzXHU1YjQ1XHU1ZGM2XHU1ZGM3XHU1ZWVlXHU1ZWVmXHU1ZmMwXHU1ZmMxXHU2MWY5XHU2NTE3XHU2NTE2XHU2NTE1XHU2NTEzXHU2NWRmXHU2NmU4XHU2NmUzXHU2NmU0XHU2YWYzXHU2YWYwXHU2YWVhXHU2YWU4XHU2YWY5XHU2YWYxXHU2YWVlXHU2YWVmXHU3MDNj''@;'; put 'put ''XHU3MDM1XHU3MDJmXHU3MDM3XHU3MDM0XHU3MDMxXHU3MDQyXHU3MDM4XHU3MDNmXHU3MDNhXHU3MDM5XHU3MDQwXHU3MDNiXHU3MDMzXHU3MDQxXHU3MjEzXHU3MjE0XHU3MmE4XHU3MzdkXHU3MzdjXHU3NGJhXHU3NmFiXHU3NmFhXHU3NmJlXHU3NmVkXHU3N2NjXHU3N2NlXHU3N2NmXHU3''@;'; put 'put ''N2NkXHU3N2YyXHU3OTI1XHU3OTIzXHU3OTI3XHU3OTI4XHU3OTI0XHU3OTI5Il0sWyJmNGExIiwiXHU3OWIyXHU3YTZlXHU3YTZjXHU3YTZkXHU3YWY3XHU3YzQ5XHU3YzQ4XHU3YzRhXHU3YzQ3XHU3YzQ1XHU3Y2VlXHU3ZTdiXHU3ZTdlXHU3ZTgxXHU3ZTgwXHU3ZmJhXHU3ZmZmXHU4MDc5''@;'; put 'put ''XHU4MWRiXHU4MWQ5XHU4MjBiXHU4MjY4XHU4MjY5XHU4NjIyXHU4NWZmXHU4NjAxXHU4NWZlXHU4NjFiXHU4NjAwXHU4NWY2XHU4NjA0XHU4NjA5XHU4NjA1XHU4NjBjXHU4NWZkXHU4ODE5XHU4ODEwXHU4ODExXHU4ODE3XHU4ODEzXHU4ODE2XHU4OTYzXHU4OTY2XHU4OWI5XHU4OWY3XHU4''@;'; put 'put ''YjYwXHU4YjZhXHU4YjVkXHU4YjY4XHU4YjYzXHU4YjY1XHU4YjY3XHU4YjZkXHU4ZGFlXHU4ZTg2XHU4ZTg4XHU4ZTg0XHU4ZjU5XHU4ZjU2XHU4ZjU3XHU4ZjU1XHU4ZjU4XHU4ZjVhXHU5MDhkXHU5MTQzXHU5MTQxXHU5MWI3XHU5MWI1XHU5MWIyXHU5MWIzXHU5NDBiXHU5NDEzXHU5M2Zi''@;'; put 'put ''XHU5NDIwXHU5NDBmXHU5NDE0XHU5M2ZlXHU5NDE1XHU5NDEwXHU5NDI4XHU5NDE5XHU5NDBkXHU5M2Y1XHU5NDAwXHU5M2Y3XHU5NDA3XHU5NDBlXHU5NDE2XHU5NDEyXHU5M2ZhXHU5NDA5XHU5M2Y4XHU5NDBhXHU5M2ZmIl0sWyJmNTQwIiwiXHU5M2ZjXHU5NDBjXHU5M2Y2XHU5NDExXHU5''@;'; put 'put ''NDA2XHU5NWRlXHU5NWUwXHU5NWRmXHU5NzJlXHU5NzJmXHU5N2I5XHU5N2JiXHU5N2ZkXHU5N2ZlXHU5ODYwXHU5ODYyXHU5ODYzXHU5ODVmXHU5OGMxXHU5OGMyXHU5OTUwXHU5OTRlXHU5OTU5XHU5OTRjXHU5OTRiXHU5OTUzXHU5YTMyXHU5YTM0XHU5YTMxXHU5YTJjXHU5YTJhXHU5YTM2''@;'; put 'put ''XHU5YTI5XHU5YTJlXHU5YTM4XHU5YTJkXHU5YWM3XHU5YWNhXHU5YWM2XHU5YjEwXHU5YjEyXHU5YjExXHU5YzBiXHU5YzA4XHU5YmY3XHU5YzA1XHU5YzEyXHU5YmY4XHU5YzQwXHU5YzA3XHU5YzBlXHU5YzA2XHU5YzE3XHU5YzE0XHU5YzA5XHU5ZDlmXHU5ZDk5XHU5ZGE0XHU5ZDlkXHU5''@;'; put 'put ''ZDkyXHU5ZDk4XHU5ZDkwXHU5ZDliIl0sWyJmNWExIiwiXHU5ZGEwXHU5ZDk0XHU5ZDljXHU5ZGFhXHU5ZDk3XHU5ZGExXHU5ZDlhXHU5ZGEyXHU5ZGE4XHU5ZDllXHU5ZGEzXHU5ZGJmXHU5ZGE5XHU5ZDk2XHU5ZGE2XHU5ZGE3XHU5ZTk5XHU5ZTliXHU5ZTlhXHU5ZWU1XHU5ZWU0XHU5ZWU3''@;'; put 'put ''XHU5ZWU2XHU5ZjMwXHU5ZjJlXHU5ZjViXHU5ZjYwXHU5ZjVlXHU5ZjVkXHU5ZjU5XHU5ZjkxXHU1MTNhXHU1MTM5XHU1Mjk4XHU1Mjk3XHU1NmMzXHU1NmJkXHU1NmJlXHU1YjQ4XHU1YjQ3XHU1ZGNiXHU1ZGNmXHU1ZWYxXHU2MWZkXHU2NTFiXHU2YjAyXHU2YWZjXHU2YjAzXHU2YWY4XHU2''@;'; put 'put ''YjAwXHU3MDQzXHU3MDQ0XHU3MDRhXHU3MDQ4XHU3MDQ5XHU3MDQ1XHU3MDQ2XHU3MjFkXHU3MjFhXHU3MjE5XHU3MzdlXHU3NTE3XHU3NjZhXHU3N2QwXHU3OTJkXHU3OTMxXHU3OTJmXHU3YzU0XHU3YzUzXHU3Y2YyXHU3ZThhXHU3ZTg3XHU3ZTg4XHU3ZThiXHU3ZTg2XHU3ZThkXHU3ZjRk''@;'; put 'put ''XHU3ZmJiXHU4MDMwXHU4MWRkXHU4NjE4XHU4NjJhXHU4NjI2XHU4NjFmXHU4NjIzXHU4NjFjXHU4NjE5XHU4NjI3XHU4NjJlXHU4NjIxXHU4NjIwXHU4NjI5XHU4NjFlXHU4NjI1Il0sWyJmNjQwIiwiXHU4ODI5XHU4ODFkXHU4ODFiXHU4ODIwXHU4ODI0XHU4ODFjXHU4ODJiXHU4ODRhXHU4''@;'; put 'put ''OTZkXHU4OTY5XHU4OTZlXHU4OTZiXHU4OWZhXHU4Yjc5XHU4Yjc4XHU4YjQ1XHU4YjdhXHU4YjdiXHU4ZDEwXHU4ZDE0XHU4ZGFmXHU4ZThlXHU4ZThjXHU4ZjVlXHU4ZjViXHU4ZjVkXHU5MTQ2XHU5MTQ0XHU5MTQ1XHU5MWI5XHU5NDNmXHU5NDNiXHU5NDM2XHU5NDI5XHU5NDNkXHU5NDNj''@;'; put 'put ''XHU5NDMwXHU5NDM5XHU5NDJhXHU5NDM3XHU5NDJjXHU5NDQwXHU5NDMxXHU5NWU1XHU5NWU0XHU5NWUzXHU5NzM1XHU5NzNhXHU5N2JmXHU5N2UxXHU5ODY0XHU5OGM5XHU5OGM2XHU5OGMwXHU5OTU4XHU5OTU2XHU5YTM5XHU5YTNkXHU5YTQ2XHU5YTQ0XHU5YTQyXHU5YTQxXHU5YTNhIl0s''@;'; put 'put ''WyJmNmExIiwiXHU5YTNmXHU5YWNkXHU5YjE1XHU5YjE3XHU5YjE4XHU5YjE2XHU5YjNhXHU5YjUyXHU5YzJiXHU5YzFkXHU5YzFjXHU5YzJjXHU5YzIzXHU5YzI4XHU5YzI5XHU5YzI0XHU5YzIxXHU5ZGI3XHU5ZGI2XHU5ZGJjXHU5ZGMxXHU5ZGM3XHU5ZGNhXHU5ZGNmXHU5ZGJlXHU5ZGM1''@;'; put 'put ''XHU5ZGMzXHU5ZGJiXHU5ZGI1XHU5ZGNlXHU5ZGI5XHU5ZGJhXHU5ZGFjXHU5ZGM4XHU5ZGIxXHU5ZGFkXHU5ZGNjXHU5ZGIzXHU5ZGNkXHU5ZGIyXHU5ZTdhXHU5ZTljXHU5ZWViXHU5ZWVlXHU5ZWVkXHU5ZjFiXHU5ZjE4XHU5ZjFhXHU5ZjMxXHU5ZjRlXHU5ZjY1XHU5ZjY0XHU5ZjkyXHU0''@;'; put 'put ''ZWI5XHU1NmM2XHU1NmM1XHU1NmNiXHU1OTcxXHU1YjRiXHU1YjRjXHU1ZGQ1XHU1ZGQxXHU1ZWYyXHU2NTIxXHU2NTIwXHU2NTI2XHU2NTIyXHU2YjBiXHU2YjA4XHU2YjA5XHU2YzBkXHU3MDU1XHU3MDU2XHU3MDU3XHU3MDUyXHU3MjFlXHU3MjFmXHU3MmE5XHU3MzdmXHU3NGQ4XHU3NGQ1''@;'; put 'put ''XHU3NGQ5XHU3NGQ3XHU3NjZkXHU3NmFkXHU3OTM1XHU3OWI0XHU3YTcwXHU3YTcxXHU3YzU3XHU3YzVjXHU3YzU5XHU3YzViXHU3YzVhIl0sWyJmNzQwIiwiXHU3Y2Y0XHU3Y2YxXHU3ZTkxXHU3ZjRmXHU3Zjg3XHU4MWRlXHU4MjZiXHU4NjM0XHU4NjM1XHU4NjMzXHU4NjJjXHU4NjMyXHU4''@;'; put 'put ''NjM2XHU4ODJjXHU4ODI4XHU4ODI2XHU4ODJhXHU4ODI1XHU4OTcxXHU4OWJmXHU4OWJlXHU4OWZiXHU4YjdlXHU4Yjg0XHU4YjgyXHU4Yjg2XHU4Yjg1XHU4YjdmXHU4ZDE1XHU4ZTk1XHU4ZTk0XHU4ZTlhXHU4ZTkyXHU4ZTkwXHU4ZTk2XHU4ZTk3XHU4ZjYwXHU4ZjYyXHU5MTQ3XHU5NDRj''@;'; put 'put ''XHU5NDUwXHU5NDRhXHU5NDRiXHU5NDRmXHU5NDQ3XHU5NDQ1XHU5NDQ4XHU5NDQ5XHU5NDQ2XHU5NzNmXHU5N2UzXHU5ODZhXHU5ODY5XHU5OGNiXHU5OTU0XHU5OTViXHU5YTRlXHU5YTUzXHU5YTU0XHU5YTRjXHU5YTRmXHU5YTQ4XHU5YTRhIl0sWyJmN2ExIiwiXHU5YTQ5XHU5YTUyXHU5''@;'; put 'put ''YTUwXHU5YWQwXHU5YjE5XHU5YjJiXHU5YjNiXHU5YjU2XHU5YjU1XHU5YzQ2XHU5YzQ4XHU5YzNmXHU5YzQ0XHU5YzM5XHU5YzMzXHU5YzQxXHU5YzNjXHU5YzM3XHU5YzM0XHU5YzMyXHU5YzNkXHU5YzM2XHU5ZGRiXHU5ZGQyXHU5ZGRlXHU5ZGRhXHU5ZGNiXHU5ZGQwXHU5ZGRjXHU5ZGQx''@;'; put 'put ''XHU5ZGRmXHU5ZGU5XHU5ZGQ5XHU5ZGQ4XHU5ZGQ2XHU5ZGY1XHU5ZGQ1XHU5ZGRkXHU5ZWI2XHU5ZWYwXHU5ZjM1XHU5ZjMzXHU5ZjMyXHU5ZjQyXHU5ZjZiXHU5Zjk1XHU5ZmEyXHU1MTNkXHU1Mjk5XHU1OGU4XHU1OGU3XHU1OTcyXHU1YjRkXHU1ZGQ4XHU4ODJmXHU1ZjRmXHU2MjAxXHU2''@;'; put 'put ''MjAzXHU2MjA0XHU2NTI5XHU2NTI1XHU2NTk2XHU2NmViXHU2YjExXHU2YjEyXHU2YjBmXHU2YmNhXHU3MDViXHU3MDVhXHU3MjIyXHU3MzgyXHU3MzgxXHU3MzgzXHU3NjcwXHU3N2Q0XHU3YzY3XHU3YzY2XHU3ZTk1XHU4MjZjXHU4NjNhXHU4NjQwXHU4NjM5XHU4NjNjXHU4NjMxXHU4NjNi''@;'; put 'put ''XHU4NjNlXHU4ODMwXHU4ODMyXHU4ODJlXHU4ODMzXHU4OTc2XHU4OTc0XHU4OTczXHU4OWZlIl0sWyJmODQwIiwiXHU4YjhjXHU4YjhlXHU4YjhiXHU4Yjg4XHU4YzQ1XHU4ZDE5XHU4ZTk4XHU4ZjY0XHU4ZjYzXHU5MWJjXHU5NDYyXHU5NDU1XHU5NDVkXHU5NDU3XHU5NDVlXHU5N2M0XHU5''@;'; put 'put ''N2M1XHU5ODAwXHU5YTU2XHU5YTU5XHU5YjFlXHU5YjFmXHU5YjIwXHU5YzUyXHU5YzU4XHU5YzUwXHU5YzRhXHU5YzRkXHU5YzRiXHU5YzU1XHU5YzU5XHU5YzRjXHU5YzRlXHU5ZGZiXHU5ZGY3XHU5ZGVmXHU5ZGUzXHU5ZGViXHU5ZGY4XHU5ZGU0XHU5ZGY2XHU5ZGUxXHU5ZGVlXHU5ZGU2''@;'; put 'put ''XHU5ZGYyXHU5ZGYwXHU5ZGUyXHU5ZGVjXHU5ZGY0XHU5ZGYzXHU5ZGU4XHU5ZGVkXHU5ZWMyXHU5ZWQwXHU5ZWYyXHU5ZWYzXHU5ZjA2XHU5ZjFjXHU5ZjM4XHU5ZjM3XHU5ZjM2XHU5ZjQzXHU5ZjRmIl0sWyJmOGExIiwiXHU5ZjcxXHU5ZjcwXHU5ZjZlXHU5ZjZmXHU1NmQzXHU1NmNkXHU1''@;'; put 'put ''YjRlXHU1YzZkXHU2NTJkXHU2NmVkXHU2NmVlXHU2YjEzXHU3MDVmXHU3MDYxXHU3MDVkXHU3MDYwXHU3MjIzXHU3NGRiXHU3NGU1XHU3N2Q1XHU3OTM4XHU3OWI3XHU3OWI2XHU3YzZhXHU3ZTk3XHU3Zjg5XHU4MjZkXHU4NjQzXHU4ODM4XHU4ODM3XHU4ODM1XHU4ODRiXHU4Yjk0XHU4Yjk1''@;'; put 'put ''XHU4ZTllXHU4ZTlmXHU4ZWEwXHU4ZTlkXHU5MWJlXHU5MWJkXHU5MWMyXHU5NDZiXHU5NDY4XHU5NDY5XHU5NmU1XHU5NzQ2XHU5NzQzXHU5NzQ3XHU5N2M3XHU5N2U1XHU5YTVlXHU5YWQ1XHU5YjU5XHU5YzYzXHU5YzY3XHU5YzY2XHU5YzYyXHU5YzVlXHU5YzYwXHU5ZTAyXHU5ZGZlXHU5''@;'; put 'put ''ZTA3XHU5ZTAzXHU5ZTA2XHU5ZTA1XHU5ZTAwXHU5ZTAxXHU5ZTA5XHU5ZGZmXHU5ZGZkXHU5ZTA0XHU5ZWEwXHU5ZjFlXHU5ZjQ2XHU5Zjc0XHU5Zjc1XHU5Zjc2XHU1NmQ0XHU2NTJlXHU2NWI4XHU2YjE4XHU2YjE5XHU2YjE3XHU2YjFhXHU3MDYyXHU3MjI2XHU3MmFhXHU3N2Q4XHU3N2Q5''@;'; put 'put ''XHU3OTM5XHU3YzY5XHU3YzZiXHU3Y2Y2XHU3ZTlhIl0sWyJmOTQwIiwiXHU3ZTk4XHU3ZTliXHU3ZTk5XHU4MWUwXHU4MWUxXHU4NjQ2XHU4NjQ3XHU4NjQ4XHU4OTc5XHU4OTdhXHU4OTdjXHU4OTdiXHU4OWZmXHU4Yjk4XHU4Yjk5XHU4ZWE1XHU4ZWE0XHU4ZWEzXHU5NDZlXHU5NDZkXHU5''@;'; put 'put ''NDZmXHU5NDcxXHU5NDczXHU5NzQ5XHU5ODcyXHU5OTVmXHU5YzY4XHU5YzZlXHU5YzZkXHU5ZTBiXHU5ZTBkXHU5ZTEwXHU5ZTBmXHU5ZTEyXHU5ZTExXHU5ZWExXHU5ZWY1XHU5ZjA5XHU5ZjQ3XHU5Zjc4XHU5ZjdiXHU5ZjdhXHU5Zjc5XHU1NzFlXHU3MDY2XHU3YzZmXHU4ODNjXHU4ZGIy''@;'; put 'put ''XHU4ZWE2XHU5MWMzXHU5NDc0XHU5NDc4XHU5NDc2XHU5NDc1XHU5YTYwXHU5Yzc0XHU5YzczXHU5YzcxXHU5Yzc1XHU5ZTE0XHU5ZTEzXHU5ZWY2XHU5ZjBhIl0sWyJmOWExIiwiXHU5ZmE0XHU3MDY4XHU3MDY1XHU3Y2Y3XHU4NjZhXHU4ODNlXHU4ODNkXHU4ODNmXHU4YjllXHU4YzljXHU4''@;'; put 'put ''ZWE5XHU4ZWM5XHU5NzRiXHU5ODczXHU5ODc0XHU5OGNjXHU5OTYxXHU5OWFiXHU5YTY0XHU5YTY2XHU5YTY3XHU5YjI0XHU5ZTE1XHU5ZTE3XHU5ZjQ4XHU2MjA3XHU2YjFlXHU3MjI3XHU4NjRjXHU4ZWE4XHU5NDgyXHU5NDgwXHU5NDgxXHU5YTY5XHU5YTY4XHU5YjJlXHU5ZTE5XHU3MjI5''@;'; put 'put ''XHU4NjRiXHU4YjlmXHU5NDgzXHU5Yzc5XHU5ZWI3XHU3Njc1XHU5YTZiXHU5YzdhXHU5ZTFkXHU3MDY5XHU3MDZhXHU5ZWE0XHU5ZjdlXHU5ZjQ5XHU5Zjk4XHU3ODgxXHU5MmI5XHU4OGNmXHU1OGJiXHU2MDUyXHU3Y2E3XHU1YWZhXHUyNTU0XHUyNTY2XHUyNTU3XHUyNTYwXHUyNTZjXHUy''@;'; put 'put ''NTYzXHUyNTVhXHUyNTY5XHUyNTVkXHUyNTUyXHUyNTY0XHUyNTU1XHUyNTVlXHUyNTZhXHUyNTYxXHUyNTU4XHUyNTY3XHUyNTViXHUyNTUzXHUyNTY1XHUyNTU2XHUyNTVmXHUyNTZiXHUyNTYyXHUyNTU5XHUyNTY4XHUyNTVjXHUyNTUxXHUyNTUwXHUyNTZkXHUyNTZlXHUyNTcwXHUyNTZm''@;'; put 'put ''XHUyNTkzIl1dJyl9LDU2NDA2OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9SlNPTi5wYXJzZSgnW1siMCIsIlxcdTAwMDAiLDEyN10sWyI4ZWExIiwiXHVmZjYxIiw2Ml0sWyJhMWExIiwiXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFiXHVmZjFm''@;'; put 'put ''XHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZcdTIwMjVc''@;'; put 'put ''dTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDgiLDksIlx1ZmYwYlx1ZmYwZFx4YjFceGQ3XHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIxZVx1MjIzNFx1MjY0Mlx1MjY0''@;'; put 'put ''MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3Il0sWyJhMmExIiwiXHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIyXHUyNWJk''@;'; put 'put ''XHUyNWJjXHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyJhMmJhIiwiXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5Il0sWyJhMmNhIiwiXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQyXHUyMWQ0XHUyMjAwXHUyMjAzIl0s''@;'; put 'put ''WyJhMmRjIiwiXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjIl0sWyJhMmYyIiwiXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNiJdLFsiYTJm''@;'; put 'put ''ZSIsIlx1MjVlZiJdLFsiYTNiMCIsIlx1ZmYxMCIsOV0sWyJhM2MxIiwiXHVmZjIxIiwyNV0sWyJhM2UxIiwiXHVmZjQxIiwyNV0sWyJhNGExIiwiXHUzMDQxIiw4Ml0sWyJhNWExIiwiXHUzMGExIiw4NV0sWyJhNmExIiwiXHUwMzkxIiwxNiwiXHUwM2EzIiw2XSxbImE2YzEiLCJcdTAzYjEi''@;'; put 'put ''LDE2LCJcdTAzYzMiLDZdLFsiYTdhMSIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyJhN2QxIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDI1XSxbImE4YTEiLCJcdTI1MDBcdTI1MDJcdTI1MGNcdTI1MTBcdTI1MThcdTI1MTRcdTI1MWNcdTI1MmNcdTI1MjRcdTI1MzRcdTI1''@;'; put 'put ''M2NcdTI1MDFcdTI1MDNcdTI1MGZcdTI1MTNcdTI1MWJcdTI1MTdcdTI1MjNcdTI1MzNcdTI1MmJcdTI1M2JcdTI1NGJcdTI1MjBcdTI1MmZcdTI1MjhcdTI1MzdcdTI1M2ZcdTI1MWRcdTI1MzBcdTI1MjVcdTI1MzhcdTI1NDIiXSxbImFkYTEiLCJcdTI0NjAiLDE5LCJcdTIxNjAiLDldLFsi''@;'; put 'put ''YWRjMCIsIlx1MzM0OVx1MzMxNFx1MzMyMlx1MzM0ZFx1MzMxOFx1MzMyN1x1MzMwM1x1MzMzNlx1MzM1MVx1MzM1N1x1MzMwZFx1MzMyNlx1MzMyM1x1MzMyYlx1MzM0YVx1MzMzYlx1MzM5Y1x1MzM5ZFx1MzM5ZVx1MzM4ZVx1MzM4Zlx1MzNjNFx1MzNhMSJdLFsiYWRkZiIsIlx1MzM3Ylx1''@;'; put 'put ''MzAxZFx1MzAxZlx1MjExNlx1MzNjZFx1MjEyMVx1MzJhNCIsNCwiXHUzMjMxXHUzMjMyXHUzMjM5XHUzMzdlXHUzMzdkXHUzMzdjXHUyMjUyXHUyMjYxXHUyMjJiXHUyMjJlXHUyMjExXHUyMjFhXHUyMmE1XHUyMjIwXHUyMjFmXHUyMmJmXHUyMjM1XHUyMjI5XHUyMjJhIl0sWyJiMGExIiwi''@;'; put 'put ''XHU0ZTljXHU1NTE2XHU1YTAzXHU5NjNmXHU1NGMwXHU2MTFiXHU2MzI4XHU1OWY2XHU5MDIyXHU4NDc1XHU4MzFjXHU3YTUwXHU2MGFhXHU2M2UxXHU2ZTI1XHU2NWVkXHU4NDY2XHU4MmE2XHU5YmY1XHU2ODkzXHU1NzI3XHU2NWExXHU2MjcxXHU1YjliXHU1OWQwXHU4NjdiXHU5OGY0XHU3''@;'; put 'put ''ZDYyXHU3ZGJlXHU5YjhlXHU2MjE2XHU3YzlmXHU4OGI3XHU1Yjg5XHU1ZWI1XHU2MzA5XHU2Njk3XHU2ODQ4XHU5NWM3XHU5NzhkXHU2NzRmXHU0ZWU1XHU0ZjBhXHU0ZjRkXHU0ZjlkXHU1MDQ5XHU1NmYyXHU1OTM3XHU1OWQ0XHU1YTAxXHU1YzA5XHU2MGRmXHU2MTBmXHU2MTcwXHU2NjEz''@;'; put 'put ''XHU2OTA1XHU3MGJhXHU3NTRmXHU3NTcwXHU3OWZiXHU3ZGFkXHU3ZGVmXHU4MGMzXHU4NDBlXHU4ODYzXHU4YjAyXHU5MDU1XHU5MDdhXHU1MzNiXHU0ZTk1XHU0ZWE1XHU1N2RmXHU4MGIyXHU5MGMxXHU3OGVmXHU0ZTAwXHU1OGYxXHU2ZWEyXHU5MDM4XHU3YTMyXHU4MzI4XHU4MjhiXHU5''@;'; put 'put ''YzJmXHU1MTQxXHU1MzcwXHU1NGJkXHU1NGUxXHU1NmUwXHU1OWZiXHU1ZjE1XHU5OGYyXHU2ZGViXHU4MGU0XHU4NTJkIl0sWyJiMWExIiwiXHU5NjYyXHU5NjcwXHU5NmEwXHU5N2ZiXHU1NDBiXHU1M2YzXHU1Yjg3XHU3MGNmXHU3ZmJkXHU4ZmMyXHU5NmU4XHU1MzZmXHU5ZDVjXHU3YWJh''@;'; put 'put ''XHU0ZTExXHU3ODkzXHU4MWZjXHU2ZTI2XHU1NjE4XHU1NTA0XHU2YjFkXHU4NTFhXHU5YzNiXHU1OWU1XHU1M2E5XHU2ZDY2XHU3NGRjXHU5NThmXHU1NjQyXHU0ZTkxXHU5MDRiXHU5NmYyXHU4MzRmXHU5OTBjXHU1M2UxXHU1NWI2XHU1YjMwXHU1ZjcxXHU2NjIwXHU2NmYzXHU2ODA0XHU2''@;'; put 'put ''YzM4XHU2Y2YzXHU2ZDI5XHU3NDViXHU3NmM4XHU3YTRlXHU5ODM0XHU4MmYxXHU4ODViXHU4YTYwXHU5MmVkXHU2ZGIyXHU3NWFiXHU3NmNhXHU5OWM1XHU2MGE2XHU4YjAxXHU4ZDhhXHU5NWIyXHU2OThlXHU1M2FkXHU1MTg2XHU1NzEyXHU1ODMwXHU1OTQ0XHU1YmI0XHU1ZWY2XHU2MDI4''@;'; put 'put ''XHU2M2E5XHU2M2Y0XHU2Y2JmXHU2ZjE0XHU3MDhlXHU3MTE0XHU3MTU5XHU3MWQ1XHU3MzNmXHU3ZTAxXHU4Mjc2XHU4MmQxXHU4NTk3XHU5MDYwXHU5MjViXHU5ZDFiXHU1ODY5XHU2NWJjXHU2YzVhXHU3NTI1XHU1MWY5XHU1OTJlXHU1OTY1XHU1ZjgwXHU1ZmRjIl0sWyJiMmExIiwiXHU2''@;'; put 'put ''MmJjXHU2NWZhXHU2YTJhXHU2YjI3XHU2YmI0XHU3MzhiXHU3ZmMxXHU4OTU2XHU5ZDJjXHU5ZDBlXHU5ZWM0XHU1Y2ExXHU2Yzk2XHU4MzdiXHU1MTA0XHU1YzRiXHU2MWI2XHU4MWM2XHU2ODc2XHU3MjYxXHU0ZTU5XHU0ZmZhXHU1Mzc4XHU2MDY5XHU2ZTI5XHU3YTRmXHU5N2YzXHU0ZTBi''@;'; put 'put ''XHU1MzE2XHU0ZWVlXHU0ZjU1XHU0ZjNkXHU0ZmExXHU0ZjczXHU1MmEwXHU1M2VmXHU1NjA5XHU1OTBmXHU1YWMxXHU1YmI2XHU1YmUxXHU3OWQxXHU2Njg3XHU2NzljXHU2N2I2XHU2YjRjXHU2Y2IzXHU3MDZiXHU3M2MyXHU3OThkXHU3OWJlXHU3YTNjXHU3Yjg3XHU4MmIxXHU4MmRiXHU4''@;'; put 'put ''MzA0XHU4Mzc3XHU4M2VmXHU4M2QzXHU4NzY2XHU4YWIyXHU1NjI5XHU4Y2E4XHU4ZmU2XHU5MDRlXHU5NzFlXHU4NjhhXHU0ZmM0XHU1Y2U4XHU2MjExXHU3MjU5XHU3NTNiXHU4MWU1XHU4MmJkXHU4NmZlXHU4Y2MwXHU5NmM1XHU5OTEzXHU5OWQ1XHU0ZWNiXHU0ZjFhXHU4OWUzXHU1NmRl''@;'; put 'put ''XHU1ODRhXHU1OGNhXHU1ZWZiXHU1ZmViXHU2MDJhXHU2MDk0XHU2MDYyXHU2MWQwXHU2MjEyXHU2MmQwXHU2NTM5Il0sWyJiM2ExIiwiXHU5YjQxXHU2NjY2XHU2OGIwXHU2ZDc3XHU3MDcwXHU3NTRjXHU3Njg2XHU3ZDc1XHU4MmE1XHU4N2Y5XHU5NThiXHU5NjhlXHU4YzlkXHU1MWYxXHU1''@;'; put 'put ''MmJlXHU1OTE2XHU1NGIzXHU1YmIzXHU1ZDE2XHU2MTY4XHU2OTgyXHU2ZGFmXHU3ODhkXHU4NGNiXHU4ODU3XHU4YTcyXHU5M2E3XHU5YWI4XHU2ZDZjXHU5OWE4XHU4NmQ5XHU1N2EzXHU2N2ZmXHU4NmNlXHU5MjBlXHU1MjgzXHU1Njg3XHU1NDA0XHU1ZWQzXHU2MmUxXHU2NGI5XHU2ODNj''@;'; put 'put ''XHU2ODM4XHU2YmJiXHU3MzcyXHU3OGJhXHU3YTZiXHU4OTlhXHU4OWQyXHU4ZDZiXHU4ZjAzXHU5MGVkXHU5NWEzXHU5Njk0XHU5NzY5XHU1YjY2XHU1Y2IzXHU2OTdkXHU5ODRkXHU5ODRlXHU2MzliXHU3YjIwXHU2YTJiXHU2YTdmXHU2OGI2XHU5YzBkXHU2ZjVmXHU1MjcyXHU1NTlkXHU2''@;'; put 'put ''MDcwXHU2MmVjXHU2ZDNiXHU2ZTA3XHU2ZWQxXHU4NDViXHU4OTEwXHU4ZjQ0XHU0ZTE0XHU5YzM5XHU1M2Y2XHU2OTFiXHU2YTNhXHU5Nzg0XHU2ODJhXHU1MTVjXHU3YWMzXHU4NGIyXHU5MWRjXHU5MzhjXHU1NjViXHU5ZDI4XHU2ODIyXHU4MzA1XHU4NDMxIl0sWyJiNGExIiwiXHU3Y2E1''@;'; put 'put ''XHU1MjA4XHU4MmM1XHU3NGU2XHU0ZTdlXHU0ZjgzXHU1MWEwXHU1YmQyXHU1MjBhXHU1MmQ4XHU1MmU3XHU1ZGZiXHU1NTlhXHU1ODJhXHU1OWU2XHU1YjhjXHU1Yjk4XHU1YmRiXHU1ZTcyXHU1ZTc5XHU2MGEzXHU2MTFmXHU2MTYzXHU2MWJlXHU2M2RiXHU2NTYyXHU2N2QxXHU2ODUzXHU2''@;'; put 'put ''OGZhXHU2YjNlXHU2YjUzXHU2YzU3XHU2ZjIyXHU2Zjk3XHU2ZjQ1XHU3NGIwXHU3NTE4XHU3NmUzXHU3NzBiXHU3YWZmXHU3YmExXHU3YzIxXHU3ZGU5XHU3ZjM2XHU3ZmYwXHU4MDlkXHU4MjY2XHU4MzllXHU4OWIzXHU4YWNjXHU4Y2FiXHU5MDg0XHU5NDUxXHU5NTkzXHU5NTkxXHU5NWEy''@;'; put 'put ''XHU5NjY1XHU5N2QzXHU5OTI4XHU4MjE4XHU0ZTM4XHU1NDJiXHU1Y2I4XHU1ZGNjXHU3M2E5XHU3NjRjXHU3NzNjXHU1Y2E5XHU3ZmViXHU4ZDBiXHU5NmMxXHU5ODExXHU5ODU0XHU5ODU4XHU0ZjAxXHU0ZjBlXHU1MzcxXHU1NTljXHU1NjY4XHU1N2ZhXHU1OTQ3XHU1YjA5XHU1YmM0XHU1''@;'; put 'put ''YzkwXHU1ZTBjXHU1ZTdlXHU1ZmNjXHU2M2VlXHU2NzNhXHU2NWQ3XHU2NWUyXHU2NzFmXHU2OGNiXHU2OGM0Il0sWyJiNWExIiwiXHU2YTVmXHU1ZTMwXHU2YmM1XHU2YzE3XHU2YzdkXHU3NTdmXHU3OTQ4XHU1YjYzXHU3YTAwXHU3ZDAwXHU1ZmJkXHU4OThmXHU4YTE4XHU4Y2I0XHU4ZDc3''@;'; put 'put ''XHU4ZWNjXHU4ZjFkXHU5OGUyXHU5YTBlXHU5YjNjXHU0ZTgwXHU1MDdkXHU1MTAwXHU1OTkzXHU1YjljXHU2MjJmXHU2MjgwXHU2NGVjXHU2YjNhXHU3MmEwXHU3NTkxXHU3OTQ3XHU3ZmE5XHU4N2ZiXHU4YWJjXHU4YjcwXHU2M2FjXHU4M2NhXHU5N2EwXHU1NDA5XHU1NDAzXHU1NWFiXHU2''@;'; put 'put ''ODU0XHU2YTU4XHU4YTcwXHU3ODI3XHU2Nzc1XHU5ZWNkXHU1Mzc0XHU1YmEyXHU4MTFhXHU4NjUwXHU5MDA2XHU0ZTE4XHU0ZTQ1XHU0ZWM3XHU0ZjExXHU1M2NhXHU1NDM4XHU1YmFlXHU1ZjEzXHU2MDI1XHU2NTUxXHU2NzNkXHU2YzQyXHU2YzcyXHU2Y2UzXHU3MDc4XHU3NDAzXHU3YTc2''@;'; put 'put ''XHU3YWFlXHU3YjA4XHU3ZDFhXHU3Y2ZlXHU3ZDY2XHU2NWU3XHU3MjViXHU1M2JiXHU1YzQ1XHU1ZGU4XHU2MmQyXHU2MmUwXHU2MzE5XHU2ZTIwXHU4NjVhXHU4YTMxXHU4ZGRkXHU5MmY4XHU2ZjAxXHU3OWE2XHU5YjVhXHU0ZWE4XHU0ZWFiXHU0ZWFjIl0sWyJiNmExIiwiXHU0ZjliXHU0''@;'; put 'put ''ZmEwXHU1MGQxXHU1MTQ3XHU3YWY2XHU1MTcxXHU1MWY2XHU1MzU0XHU1MzIxXHU1MzdmXHU1M2ViXHU1NWFjXHU1ODgzXHU1Y2UxXHU1ZjM3XHU1ZjRhXHU2MDJmXHU2MDUwXHU2MDZkXHU2MzFmXHU2NTU5XHU2YTRiXHU2Y2MxXHU3MmMyXHU3MmVkXHU3N2VmXHU4MGY4XHU4MTA1XHU4MjA4''@;'; put 'put ''XHU4NTRlXHU5MGY3XHU5M2UxXHU5N2ZmXHU5OTU3XHU5YTVhXHU0ZWYwXHU1MWRkXHU1YzJkXHU2NjgxXHU2OTZkXHU1YzQwXHU2NmYyXHU2OTc1XHU3Mzg5XHU2ODUwXHU3YzgxXHU1MGM1XHU1MmU0XHU1NzQ3XHU1ZGZlXHU5MzI2XHU2NWE0XHU2YjIzXHU2YjNkXHU3NDM0XHU3OTgxXHU3''@;'; put 'put ''OWJkXHU3YjRiXHU3ZGNhXHU4MmI5XHU4M2NjXHU4ODdmXHU4OTVmXHU4YjM5XHU4ZmQxXHU5MWQxXHU1NDFmXHU5MjgwXHU0ZTVkXHU1MDM2XHU1M2U1XHU1MzNhXHU3MmQ3XHU3Mzk2XHU3N2U5XHU4MmU2XHU4ZWFmXHU5OWM2XHU5OWM4XHU5OWQyXHU1MTc3XHU2MTFhXHU4NjVlXHU1NWIw''@;'; put 'put ''XHU3YTdhXHU1MDc2XHU1YmQzXHU5MDQ3XHU5Njg1XHU0ZTMyXHU2YWRiXHU5MWU3XHU1YzUxXHU1YzQ4Il0sWyJiN2ExIiwiXHU2Mzk4XHU3YTlmXHU2YzkzXHU5Nzc0XHU4ZjYxXHU3YWFhXHU3MThhXHU5Njg4XHU3YzgyXHU2ODE3XHU3ZTcwXHU2ODUxXHU5MzZjXHU1MmYyXHU1NDFiXHU4''@;'; put 'put ''NWFiXHU4YTEzXHU3ZmE0XHU4ZWNkXHU5MGUxXHU1MzY2XHU4ODg4XHU3OTQxXHU0ZmMyXHU1MGJlXHU1MjExXHU1MTQ0XHU1NTUzXHU1NzJkXHU3M2VhXHU1NzhiXHU1OTUxXHU1ZjYyXHU1Zjg0XHU2MDc1XHU2MTc2XHU2MTY3XHU2MWE5XHU2M2IyXHU2NDNhXHU2NTZjXHU2NjZmXHU2ODQy''@;'; put 'put ''XHU2ZTEzXHU3NTY2XHU3YTNkXHU3Y2ZiXHU3ZDRjXHU3ZDk5XHU3ZTRiXHU3ZjZiXHU4MzBlXHU4MzRhXHU4NmNkXHU4YTA4XHU4YTYzXHU4YjY2XHU4ZWZkXHU5ODFhXHU5ZDhmXHU4MmI4XHU4ZmNlXHU5YmU4XHU1Mjg3XHU2MjFmXHU2NDgzXHU2ZmMwXHU5Njk5XHU2ODQxXHU1MDkxXHU2''@;'; put 'put ''YjIwXHU2YzdhXHU2ZjU0XHU3YTc0XHU3ZDUwXHU4ODQwXHU4YTIzXHU2NzA4XHU0ZWY2XHU1MDM5XHU1MDI2XHU1MDY1XHU1MTdjXHU1MjM4XHU1MjYzXHU1NWE3XHU1NzBmXHU1ODA1XHU1YWNjXHU1ZWZhXHU2MWIyXHU2MWY4XHU2MmYzXHU2MzcyIl0sWyJiOGExIiwiXHU2OTFjXHU2YTI5''@;'; put 'put ''XHU3MjdkXHU3MmFjXHU3MzJlXHU3ODE0XHU3ODZmXHU3ZDc5XHU3NzBjXHU4MGE5XHU4OThiXHU4YjE5XHU4Y2UyXHU4ZWQyXHU5MDYzXHU5Mzc1XHU5NjdhXHU5ODU1XHU5YTEzXHU5ZTc4XHU1MTQzXHU1MzlmXHU1M2IzXHU1ZTdiXHU1ZjI2XHU2ZTFiXHU2ZTkwXHU3Mzg0XHU3M2ZlXHU3''@;'; put 'put ''ZDQzXHU4MjM3XHU4YTAwXHU4YWZhXHU5NjUwXHU0ZTRlXHU1MDBiXHU1M2U0XHU1NDdjXHU1NmZhXHU1OWQxXHU1YjY0XHU1ZGYxXHU1ZWFiXHU1ZjI3XHU2MjM4XHU2NTQ1XHU2N2FmXHU2ZTU2XHU3MmQwXHU3Y2NhXHU4OGI0XHU4MGExXHU4MGUxXHU4M2YwXHU4NjRlXHU4YTg3XHU4ZGU4''@;'; put 'put ''XHU5MjM3XHU5NmM3XHU5ODY3XHU5ZjEzXHU0ZTk0XHU0ZTkyXHU0ZjBkXHU1MzQ4XHU1NDQ5XHU1NDNlXHU1YTJmXHU1ZjhjXHU1ZmExXHU2MDlmXHU2OGE3XHU2YThlXHU3NDVhXHU3ODgxXHU4YTllXHU4YWE0XHU4Yjc3XHU5MTkwXHU0ZTVlXHU5YmM5XHU0ZWE0XHU0ZjdjXHU0ZmFmXHU1''@;'; put 'put ''MDE5XHU1MDE2XHU1MTQ5XHU1MTZjXHU1MjlmXHU1MmI5XHU1MmZlXHU1MzlhXHU1M2UzXHU1NDExIl0sWyJiOWExIiwiXHU1NDBlXHU1NTg5XHU1NzUxXHU1N2EyXHU1OTdkXHU1YjU0XHU1YjVkXHU1YjhmXHU1ZGU1XHU1ZGU3XHU1ZGY3XHU1ZTc4XHU1ZTgzXHU1ZTlhXHU1ZWI3XHU1ZjE4''@;'; put 'put ''XHU2MDUyXHU2MTRjXHU2Mjk3XHU2MmQ4XHU2M2E3XHU2NTNiXHU2NjAyXHU2NjQzXHU2NmY0XHU2NzZkXHU2ODIxXHU2ODk3XHU2OWNiXHU2YzVmXHU2ZDJhXHU2ZDY5XHU2ZTJmXHU2ZTlkXHU3NTMyXHU3Njg3XHU3ODZjXHU3YTNmXHU3Y2UwXHU3ZDA1XHU3ZDE4XHU3ZDVlXHU3ZGIxXHU4''@;'; put 'put ''MDE1XHU4MDAzXHU4MGFmXHU4MGIxXHU4MTU0XHU4MThmXHU4MjJhXHU4MzUyXHU4ODRjXHU4ODYxXHU4YjFiXHU4Y2EyXHU4Y2ZjXHU5MGNhXHU5MTc1XHU5MjcxXHU3ODNmXHU5MmZjXHU5NWE0XHU5NjRkXHU5ODA1XHU5OTk5XHU5YWQ4XHU5ZDNiXHU1MjViXHU1MmFiXHU1M2Y3XHU1NDA4''@;'; put 'put ''XHU1OGQ1XHU2MmY3XHU2ZmUwXHU4YzZhXHU4ZjVmXHU5ZWI5XHU1MTRiXHU1MjNiXHU1NDRhXHU1NmZkXHU3YTQwXHU5MTc3XHU5ZDYwXHU5ZWQyXHU3MzQ0XHU2ZjA5XHU4MTcwXHU3NTExXHU1ZmZkXHU2MGRhXHU5YWE4XHU3MmRiXHU4ZmJjIl0sWyJiYWExIiwiXHU2YjY0XHU5ODAzXHU0''@;'; put 'put ''ZWNhXHU1NmYwXHU1NzY0XHU1OGJlXHU1YTVhXHU2MDY4XHU2MWM3XHU2NjBmXHU2NjA2XHU2ODM5XHU2OGIxXHU2ZGY3XHU3NWQ1XHU3ZDNhXHU4MjZlXHU5YjQyXHU0ZTliXHU0ZjUwXHU1M2M5XHU1NTA2XHU1ZDZmXHU1ZGU2XHU1ZGVlXHU2N2ZiXHU2Yzk5XHU3NDczXHU3ODAyXHU4YTUw''@;'; put 'put ''XHU5Mzk2XHU4OGRmXHU1NzUwXHU1ZWE3XHU2MzJiXHU1MGI1XHU1MGFjXHU1MThkXHU2NzAwXHU1NGM5XHU1ODVlXHU1OWJiXHU1YmIwXHU1ZjY5XHU2MjRkXHU2M2ExXHU2ODNkXHU2YjczXHU2ZTA4XHU3MDdkXHU5MWM3XHU3MjgwXHU3ODE1XHU3ODI2XHU3OTZkXHU2NThlXHU3ZDMwXHU4''@;'; put 'put ''M2RjXHU4OGMxXHU4ZjA5XHU5NjliXHU1MjY0XHU1NzI4XHU2NzUwXHU3ZjZhXHU4Y2ExXHU1MWI0XHU1NzQyXHU5NjJhXHU1ODNhXHU2OThhXHU4MGI0XHU1NGIyXHU1ZDBlXHU1N2ZjXHU3ODk1XHU5ZGZhXHU0ZjVjXHU1MjRhXHU1NDhiXHU2NDNlXHU2NjI4XHU2NzE0XHU2N2Y1XHU3YTg0''@;'; put 'put ''XHU3YjU2XHU3ZDIyXHU5MzJmXHU2ODVjXHU5YmFkXHU3YjM5XHU1MzE5XHU1MThhXHU1MjM3Il0sWyJiYmExIiwiXHU1YmRmXHU2MmY2XHU2NGFlXHU2NGU2XHU2NzJkXHU2YmJhXHU4NWE5XHU5NmQxXHU3NjkwXHU5YmQ2XHU2MzRjXHU5MzA2XHU5YmFiXHU3NmJmXHU2NjUyXHU0ZTA5XHU1''@;'; put 'put ''MDk4XHU1M2MyXHU1YzcxXHU2MGU4XHU2NDkyXHU2NTYzXHU2ODVmXHU3MWU2XHU3M2NhXHU3NTIzXHU3Yjk3XHU3ZTgyXHU4Njk1XHU4YjgzXHU4Y2RiXHU5MTc4XHU5OTEwXHU2NWFjXHU2NmFiXHU2YjhiXHU0ZWQ1XHU0ZWQ0XHU0ZjNhXHU0ZjdmXHU1MjNhXHU1M2Y4XHU1M2YyXHU1NWUz''@;'; put 'put ''XHU1NmRiXHU1OGViXHU1OWNiXHU1OWM5XHU1OWZmXHU1YjUwXHU1YzRkXHU1ZTAyXHU1ZTJiXHU1ZmQ3XHU2MDFkXHU2MzA3XHU2NTJmXHU1YjVjXHU2NWFmXHU2NWJkXHU2NWU4XHU2NzlkXHU2YjYyXHU2YjdiXHU2YzBmXHU3MzQ1XHU3OTQ5XHU3OWMxXHU3Y2Y4XHU3ZDE5XHU3ZDJiXHU4''@;'; put 'put ''MGEyXHU4MTAyXHU4MWYzXHU4OTk2XHU4YTVlXHU4YTY5XHU4YTY2XHU4YThjXHU4YWVlXHU4Y2M3XHU4Y2RjXHU5NmNjXHU5OGZjXHU2YjZmXHU0ZThiXHU0ZjNjXHU0ZjhkXHU1MTUwXHU1YjU3XHU1YmZhXHU2MTQ4XHU2MzAxXHU2NjQyIl0sWyJiY2ExIiwiXHU2YjIxXHU2ZWNiXHU2Y2Ji''@;'; put 'put ''XHU3MjNlXHU3NGJkXHU3NWQ0XHU3OGMxXHU3OTNhXHU4MDBjXHU4MDMzXHU4MWVhXHU4NDk0XHU4ZjllXHU2YzUwXHU5ZTdmXHU1ZjBmXHU4YjU4XHU5ZDJiXHU3YWZhXHU4ZWY4XHU1YjhkXHU5NmViXHU0ZTAzXHU1M2YxXHU1N2Y3XHU1OTMxXHU1YWM5XHU1YmE0XHU2MDg5XHU2ZTdmXHU2''@;'; put 'put ''ZjA2XHU3NWJlXHU4Y2VhXHU1YjlmXHU4NTAwXHU3YmUwXHU1MDcyXHU2N2Y0XHU4MjlkXHU1YzYxXHU4NTRhXHU3ZTFlXHU4MjBlXHU1MTk5XHU1YzA0XHU2MzY4XHU4ZDY2XHU2NTljXHU3MTZlXHU3OTNlXHU3ZDE3XHU4MDA1XHU4YjFkXHU4ZWNhXHU5MDZlXHU4NmM3XHU5MGFhXHU1MDFm''@;'; put 'put ''XHU1MmZhXHU1YzNhXHU2NzUzXHU3MDdjXHU3MjM1XHU5MTRjXHU5MWM4XHU5MzJiXHU4MmU1XHU1YmMyXHU1ZjMxXHU2MGY5XHU0ZTNiXHU1M2Q2XHU1Yjg4XHU2MjRiXHU2NzMxXHU2YjhhXHU3MmU5XHU3M2UwXHU3YTJlXHU4MTZiXHU4ZGEzXHU5MTUyXHU5OTk2XHU1MTEyXHU1M2Q3XHU1''@;'; put 'put ''NDZhXHU1YmZmXHU2Mzg4XHU2YTM5XHU3ZGFjXHU5NzAwXHU1NmRhXHU1M2NlXHU1NDY4Il0sWyJiZGExIiwiXHU1Yjk3XHU1YzMxXHU1ZGRlXHU0ZmVlXHU2MTAxXHU2MmZlXHU2ZDMyXHU3OWMwXHU3OWNiXHU3ZDQyXHU3ZTRkXHU3ZmQyXHU4MWVkXHU4MjFmXHU4NDkwXHU4ODQ2XHU4OTcy''@;'; put 'put ''XHU4YjkwXHU4ZTc0XHU4ZjJmXHU5MDMxXHU5MTRiXHU5MTZjXHU5NmM2XHU5MTljXHU0ZWMwXHU0ZjRmXHU1MTQ1XHU1MzQxXHU1ZjkzXHU2MjBlXHU2N2Q0XHU2YzQxXHU2ZTBiXHU3MzYzXHU3ZTI2XHU5MWNkXHU5MjgzXHU1M2Q0XHU1OTE5XHU1YmJmXHU2ZGQxXHU3OTVkXHU3ZTJlXHU3''@;'; put 'put ''YzliXHU1ODdlXHU3MTlmXHU1MWZhXHU4ODUzXHU4ZmYwXHU0ZmNhXHU1Y2ZiXHU2NjI1XHU3N2FjXHU3YWUzXHU4MjFjXHU5OWZmXHU1MWM2XHU1ZmFhXHU2NWVjXHU2OTZmXHU2Yjg5XHU2ZGYzXHU2ZTk2XHU2ZjY0XHU3NmZlXHU3ZDE0XHU1ZGUxXHU5MDc1XHU5MTg3XHU5ODA2XHU1MWU2''@;'; put 'put ''XHU1MjFkXHU2MjQwXHU2NjkxXHU2NmQ5XHU2ZTFhXHU1ZWI2XHU3ZGQyXHU3ZjcyXHU2NmY4XHU4NWFmXHU4NWY3XHU4YWY4XHU1MmE5XHU1M2Q5XHU1OTczXHU1ZThmXHU1ZjkwXHU2MDU1XHU5MmU0XHU5NjY0XHU1MGI3XHU1MTFmIl0sWyJiZWExIiwiXHU1MmRkXHU1MzIwXHU1MzQ3XHU1''@;'; put 'put ''M2VjXHU1NGU4XHU1NTQ2XHU1NTMxXHU1NjE3XHU1OTY4XHU1OWJlXHU1YTNjXHU1YmI1XHU1YzA2XHU1YzBmXHU1YzExXHU1YzFhXHU1ZTg0XHU1ZThhXHU1ZWUwXHU1ZjcwXHU2MjdmXHU2Mjg0XHU2MmRiXHU2MzhjXHU2Mzc3XHU2NjA3XHU2NjBjXHU2NjJkXHU2Njc2XHU2NzdlXHU2OGEy''@;'; put 'put ''XHU2YTFmXHU2YTM1XHU2Y2JjXHU2ZDg4XHU2ZTA5XHU2ZTU4XHU3MTNjXHU3MTI2XHU3MTY3XHU3NWM3XHU3NzAxXHU3ODVkXHU3OTAxXHU3OTY1XHU3OWYwXHU3YWUwXHU3YjExXHU3Y2E3XHU3ZDM5XHU4MDk2XHU4M2Q2XHU4NDhiXHU4NTQ5XHU4ODVkXHU4OGYzXHU4YTFmXHU4YTNjXHU4''@;'; put 'put ''YTU0XHU4YTczXHU4YzYxXHU4Y2RlXHU5MWE0XHU5MjY2XHU5MzdlXHU5NDE4XHU5NjljXHU5Nzk4XHU0ZTBhXHU0ZTA4XHU0ZTFlXHU0ZTU3XHU1MTk3XHU1MjcwXHU1N2NlXHU1ODM0XHU1OGNjXHU1YjIyXHU1ZTM4XHU2MGM1XHU2NGZlXHU2NzYxXHU2NzU2XHU2ZDQ0XHU3MmI2XHU3NTcz''@;'; put 'put ''XHU3YTYzXHU4NGI4XHU4YjcyXHU5MWI4XHU5MzIwXHU1NjMxXHU1N2Y0XHU5OGZlIl0sWyJiZmExIiwiXHU2MmVkXHU2OTBkXHU2Yjk2XHU3MWVkXHU3ZTU0XHU4MDc3XHU4MjcyXHU4OWU2XHU5OGRmXHU4NzU1XHU4ZmIxXHU1YzNiXHU0ZjM4XHU0ZmUxXHU0ZmI1XHU1NTA3XHU1YTIwXHU1''@;'; put 'put ''YmRkXHU1YmU5XHU1ZmMzXHU2MTRlXHU2MzJmXHU2NWIwXHU2NjRiXHU2OGVlXHU2OTliXHU2ZDc4XHU2ZGYxXHU3NTMzXHU3NWI5XHU3NzFmXHU3OTVlXHU3OWU2XHU3ZDMzXHU4MWUzXHU4MmFmXHU4NWFhXHU4OWFhXHU4YTNhXHU4ZWFiXHU4ZjliXHU5MDMyXHU5MWRkXHU5NzA3XHU0ZWJh''@;'; put 'put ''XHU0ZWMxXHU1MjAzXHU1ODc1XHU1OGVjXHU1YzBiXHU3NTFhXHU1YzNkXHU4MTRlXHU4YTBhXHU4ZmM1XHU5NjYzXHU5NzZkXHU3YjI1XHU4YWNmXHU5ODA4XHU5MTYyXHU1NmYzXHU1M2E4XHU5MDE3XHU1NDM5XHU1NzgyXHU1ZTI1XHU2M2E4XHU2YzM0XHU3MDhhXHU3NzYxXHU3YzhiXHU3''@;'; put 'put ''ZmUwXHU4ODcwXHU5MDQyXHU5MTU0XHU5MzEwXHU5MzE4XHU5NjhmXHU3NDVlXHU5YWM0XHU1ZDA3XHU1ZDY5XHU2NTcwXHU2N2EyXHU4ZGE4XHU5NmRiXHU2MzZlXHU2NzQ5XHU2OTE5XHU4M2M1XHU5ODE3XHU5NmMwXHU4OGZlIl0sWyJjMGExIiwiXHU2Zjg0XHU2NDdhXHU1YmY4XHU0ZTE2''@;'; put 'put ''XHU3MDJjXHU3NTVkXHU2NjJmXHU1MWM0XHU1MjM2XHU1MmUyXHU1OWQzXHU1ZjgxXHU2MDI3XHU2MjEwXHU2NTNmXHU2NTc0XHU2NjFmXHU2Njc0XHU2OGYyXHU2ODE2XHU2YjYzXHU2ZTA1XHU3MjcyXHU3NTFmXHU3NmRiXHU3Y2JlXHU4MDU2XHU1OGYwXHU4OGZkXHU4OTdmXHU4YWEwXHU4''@;'; put 'put ''YTkzXHU4YWNiXHU5MDFkXHU5MTkyXHU5NzUyXHU5NzU5XHU2NTg5XHU3YTBlXHU4MTA2XHU5NmJiXHU1ZTJkXHU2MGRjXHU2MjFhXHU2NWE1XHU2NjE0XHU2NzkwXHU3N2YzXHU3YTRkXHU3YzRkXHU3ZTNlXHU4MTBhXHU4Y2FjXHU4ZDY0XHU4ZGUxXHU4ZTVmXHU3OGE5XHU1MjA3XHU2MmQ5''@;'; put 'put ''XHU2M2E1XHU2NDQyXHU2Mjk4XHU4YTJkXHU3YTgzXHU3YmMwXHU4YWFjXHU5NmVhXHU3ZDc2XHU4MjBjXHU4NzQ5XHU0ZWQ5XHU1MTQ4XHU1MzQzXHU1MzYwXHU1YmEzXHU1YzAyXHU1YzE2XHU1ZGRkXHU2MjI2XHU2MjQ3XHU2NGIwXHU2ODEzXHU2ODM0XHU2Y2M5XHU2ZDQ1XHU2ZDE3XHU2''@;'; put 'put ''N2QzXHU2ZjVjXHU3MTRlXHU3MTdkXHU2NWNiXHU3YTdmXHU3YmFkXHU3ZGRhIl0sWyJjMWExIiwiXHU3ZTRhXHU3ZmE4XHU4MTdhXHU4MjFiXHU4MjM5XHU4NWE2XHU4YTZlXHU4Y2NlXHU4ZGY1XHU5MDc4XHU5MDc3XHU5MmFkXHU5MjkxXHU5NTgzXHU5YmFlXHU1MjRkXHU1NTg0XHU2ZjM4''@;'; put 'put ''XHU3MTM2XHU1MTY4XHU3OTg1XHU3ZTU1XHU4MWIzXHU3Y2NlXHU1NjRjXHU1ODUxXHU1Y2E4XHU2M2FhXHU2NmZlXHU2NmZkXHU2OTVhXHU3MmQ5XHU3NThmXHU3NThlXHU3OTBlXHU3OTU2XHU3OWRmXHU3Yzk3XHU3ZDIwXHU3ZDQ0XHU4NjA3XHU4YTM0XHU5NjNiXHU5MDYxXHU5ZjIwXHU1''@;'; put 'put ''MGU3XHU1Mjc1XHU1M2NjXHU1M2UyXHU1MDA5XHU1NWFhXHU1OGVlXHU1OTRmXHU3MjNkXHU1YjhiXHU1YzY0XHU1MzFkXHU2MGUzXHU2MGYzXHU2MzVjXHU2MzgzXHU2MzNmXHU2M2JiXHU2NGNkXHU2NWU5XHU2NmY5XHU1ZGUzXHU2OWNkXHU2OWZkXHU2ZjE1XHU3MWU1XHU0ZTg5XHU3NWU5''@;'; put 'put ''XHU3NmY4XHU3YTkzXHU3Y2RmXHU3ZGNmXHU3ZDljXHU4MDYxXHU4MzQ5XHU4MzU4XHU4NDZjXHU4NGJjXHU4NWZiXHU4OGM1XHU4ZDcwXHU5MDAxXHU5MDZkXHU5Mzk3XHU5NzFjXHU5YTEyXHU1MGNmXHU1ODk3XHU2MThlIl0sWyJjMmExIiwiXHU4MWQzXHU4NTM1XHU4ZDA4XHU5MDIwXHU0''@;'; put 'put ''ZmMzXHU1MDc0XHU1MjQ3XHU1MzczXHU2MDZmXHU2MzQ5XHU2NzVmXHU2ZTJjXHU4ZGIzXHU5MDFmXHU0ZmQ3XHU1YzVlXHU4Y2NhXHU2NWNmXHU3ZDlhXHU1MzUyXHU4ODk2XHU1MTc2XHU2M2MzXHU1YjU4XHU1YjZiXHU1YzBhXHU2NDBkXHU2NzUxXHU5MDVjXHU0ZWQ2XHU1OTFhXHU1OTJh''@;'; put 'put ''XHU2YzcwXHU4YTUxXHU1NTNlXHU1ODE1XHU1OWE1XHU2MGYwXHU2MjUzXHU2N2MxXHU4MjM1XHU2OTU1XHU5NjQwXHU5OWM0XHU5YTI4XHU0ZjUzXHU1ODA2XHU1YmZlXHU4MDEwXHU1Y2IxXHU1ZTJmXHU1Zjg1XHU2MDIwXHU2MTRiXHU2MjM0XHU2NmZmXHU2Y2YwXHU2ZWRlXHU4MGNlXHU4''@;'; put 'put ''MTdmXHU4MmQ0XHU4ODhiXHU4Y2I4XHU5MDAwXHU5MDJlXHU5NjhhXHU5ZWRiXHU5YmRiXHU0ZWUzXHU1M2YwXHU1OTI3XHU3YjJjXHU5MThkXHU5ODRjXHU5ZGY5XHU2ZWRkXHU3MDI3XHU1MzUzXHU1NTQ0XHU1Yjg1XHU2MjU4XHU2MjllXHU2MmQzXHU2Y2EyXHU2ZmVmXHU3NDIyXHU4YTE3''@;'; put 'put ''XHU5NDM4XHU2ZmMxXHU4YWZlXHU4MzM4XHU1MWU3XHU4NmY4XHU1M2VhIl0sWyJjM2ExIiwiXHU1M2U5XHU0ZjQ2XHU5MDU0XHU4ZmIwXHU1OTZhXHU4MTMxXHU1ZGZkXHU3YWVhXHU4ZmJmXHU2OGRhXHU4YzM3XHU3MmY4XHU5YzQ4XHU2YTNkXHU4YWIwXHU0ZTM5XHU1MzU4XHU1NjA2XHU1''@;'; put 'put ''NzY2XHU2MmM1XHU2M2EyXHU2NWU2XHU2YjRlXHU2ZGUxXHU2ZTViXHU3MGFkXHU3N2VkXHU3YWVmXHU3YmFhXHU3ZGJiXHU4MDNkXHU4MGM2XHU4NmNiXHU4YTk1XHU5MzViXHU1NmUzXHU1OGM3XHU1ZjNlXHU2NWFkXHU2Njk2XHU2YTgwXHU2YmI1XHU3NTM3XHU4YWM3XHU1MDI0XHU3N2U1''@;'; put 'put ''XHU1NzMwXHU1ZjFiXHU2MDY1XHU2NjdhXHU2YzYwXHU3NWY0XHU3YTFhXHU3ZjZlXHU4MWY0XHU4NzE4XHU5MDQ1XHU5OWIzXHU3YmM5XHU3NTVjXHU3YWY5XHU3YjUxXHU4NGM0XHU5MDEwXHU3OWU5XHU3YTkyXHU4MzM2XHU1YWUxXHU3NzQwXHU0ZTJkXHU0ZWYyXHU1Yjk5XHU1ZmUwXHU2''@;'; put 'put ''MmJkXHU2NjNjXHU2N2YxXHU2Y2U4XHU4NjZiXHU4ODc3XHU4YTNiXHU5MTRlXHU5MmYzXHU5OWQwXHU2YTE3XHU3MDI2XHU3MzJhXHU4MmU3XHU4NDU3XHU4Y2FmXHU0ZTAxXHU1MTQ2XHU1MWNiXHU1NThiXHU1YmY1Il0sWyJjNGExIiwiXHU1ZTE2XHU1ZTMzXHU1ZTgxXHU1ZjE0XHU1ZjM1''@;'; put 'put ''XHU1ZjZiXHU1ZmI0XHU2MWYyXHU2MzExXHU2NmEyXHU2NzFkXHU2ZjZlXHU3MjUyXHU3NTNhXHU3NzNhXHU4MDc0XHU4MTM5XHU4MTc4XHU4Nzc2XHU4YWJmXHU4YWRjXHU4ZDg1XHU4ZGYzXHU5MjlhXHU5NTc3XHU5ODAyXHU5Y2U1XHU1MmM1XHU2MzU3XHU3NmY0XHU2NzE1XHU2Yzg4XHU3''@;'; put 'put ''M2NkXHU4Y2MzXHU5M2FlXHU5NjczXHU2ZDI1XHU1ODljXHU2OTBlXHU2OWNjXHU4ZmZkXHU5MzlhXHU3NWRiXHU5MDFhXHU1ODVhXHU2ODAyXHU2M2I0XHU2OWZiXHU0ZjQzXHU2ZjJjXHU2N2Q4XHU4ZmJiXHU4NTI2XHU3ZGI0XHU5MzU0XHU2OTNmXHU2ZjcwXHU1NzZhXHU1OGY3XHU1YjJj''@;'; put 'put ''XHU3ZDJjXHU3MjJhXHU1NDBhXHU5MWUzXHU5ZGI0XHU0ZWFkXHU0ZjRlXHU1MDVjXHU1MDc1XHU1MjQzXHU4YzllXHU1NDQ4XHU1ODI0XHU1YjlhXHU1ZTFkXHU1ZTk1XHU1ZWFkXHU1ZWY3XHU1ZjFmXHU2MDhjXHU2MmI1XHU2MzNhXHU2M2QwXHU2OGFmXHU2YzQwXHU3ODg3XHU3OThlXHU3''@;'; put 'put ''YTBiXHU3ZGUwXHU4MjQ3XHU4YTAyXHU4YWU2XHU4ZTQ0XHU5MDEzIl0sWyJjNWExIiwiXHU5MGI4XHU5MTJkXHU5MWQ4XHU5ZjBlXHU2Y2U1XHU2NDU4XHU2NGUyXHU2NTc1XHU2ZWY0XHU3Njg0XHU3YjFiXHU5MDY5XHU5M2QxXHU2ZWJhXHU1NGYyXHU1ZmI5XHU2NGE0XHU4ZjRkXHU4ZmVk''@;'; put 'put ''XHU5MjQ0XHU1MTc4XHU1ODZiXHU1OTI5XHU1YzU1XHU1ZTk3XHU2ZGZiXHU3ZThmXHU3NTFjXHU4Y2JjXHU4ZWUyXHU5ODViXHU3MGI5XHU0ZjFkXHU2YmJmXHU2ZmIxXHU3NTMwXHU5NmZiXHU1MTRlXHU1NDEwXHU1ODM1XHU1ODU3XHU1OWFjXHU1YzYwXHU1ZjkyXHU2NTk3XHU2NzVjXHU2''@;'; put 'put ''ZTIxXHU3NjdiXHU4M2RmXHU4Y2VkXHU5MDE0XHU5MGZkXHU5MzRkXHU3ODI1XHU3ODNhXHU1MmFhXHU1ZWE2XHU1NzFmXHU1OTc0XHU2MDEyXHU1MDEyXHU1MTVhXHU1MWFjXHU1MWNkXHU1MjAwXHU1NTEwXHU1ODU0XHU1ODU4XHU1OTU3XHU1Yjk1XHU1Y2Y2XHU1ZDhiXHU2MGJjXHU2Mjk1''@;'; put 'put ''XHU2NDJkXHU2NzcxXHU2ODQzXHU2OGJjXHU2OGRmXHU3NmQ3XHU2ZGQ4XHU2ZTZmXHU2ZDliXHU3MDZmXHU3MWM4XHU1ZjUzXHU3NWQ4XHU3OTc3XHU3YjQ5XHU3YjU0XHU3YjUyXHU3Y2Q2XHU3ZDcxXHU1MjMwIl0sWyJjNmExIiwiXHU4NDYzXHU4NTY5XHU4NWU0XHU4YTBlXHU4YjA0XHU4''@;'; put 'put ''YzQ2XHU4ZTBmXHU5MDAzXHU5MDBmXHU5NDE5XHU5Njc2XHU5ODJkXHU5YTMwXHU5NWQ4XHU1MGNkXHU1MmQ1XHU1NDBjXHU1ODAyXHU1YzBlXHU2MWE3XHU2NDllXHU2ZDFlXHU3N2IzXHU3YWU1XHU4MGY0XHU4NDA0XHU5MDUzXHU5Mjg1XHU1Y2UwXHU5ZDA3XHU1MzNmXHU1Zjk3XHU1ZmIz''@;'; put 'put ''XHU2ZDljXHU3Mjc5XHU3NzYzXHU3OWJmXHU3YmU0XHU2YmQyXHU3MmVjXHU4YWFkXHU2ODAzXHU2YTYxXHU1MWY4XHU3YTgxXHU2OTM0XHU1YzRhXHU5Y2Y2XHU4MmViXHU1YmM1XHU5MTQ5XHU3MDFlXHU1Njc4XHU1YzZmXHU2MGM3XHU2NTY2XHU2YzhjXHU4YzVhXHU5MDQxXHU5ODEzXHU1''@;'; put 'put ''NDUxXHU2NmM3XHU5MjBkXHU1OTQ4XHU5MGEzXHU1MTg1XHU0ZTRkXHU1MWVhXHU4NTk5XHU4YjBlXHU3MDU4XHU2MzdhXHU5MzRiXHU2OTYyXHU5OWI0XHU3ZTA0XHU3NTc3XHU1MzU3XHU2OTYwXHU4ZWRmXHU5NmUzXHU2YzVkXHU0ZThjXHU1YzNjXHU1ZjEwXHU4ZmU5XHU1MzAyXHU4Y2Qx''@;'; put 'put ''XHU4MDg5XHU4Njc5XHU1ZWZmXHU2NWU1XHU0ZTczXHU1MTY1Il0sWyJjN2ExIiwiXHU1OTgyXHU1YzNmXHU5N2VlXHU0ZWZiXHU1OThhXHU1ZmNkXHU4YThkXHU2ZmUxXHU3OWIwXHU3OTYyXHU1YmU3XHU4NDcxXHU3MzJiXHU3MWIxXHU1ZTc0XHU1ZmY1XHU2MzdiXHU2NDlhXHU3MWMzXHU3''@;'; put 'put ''Yzk4XHU0ZTQzXHU1ZWZjXHU0ZTRiXHU1N2RjXHU1NmEyXHU2MGE5XHU2ZmMzXHU3ZDBkXHU4MGZkXHU4MTMzXHU4MWJmXHU4ZmIyXHU4OTk3XHU4NmE0XHU1ZGY0XHU2MjhhXHU2NGFkXHU4OTg3XHU2Nzc3XHU2Y2UyXHU2ZDNlXHU3NDM2XHU3ODM0XHU1YTQ2XHU3Zjc1XHU4MmFkXHU5OWFj''@;'; put 'put ''XHU0ZmYzXHU1ZWMzXHU2MmRkXHU2MzkyXHU2NTU3XHU2NzZmXHU3NmMzXHU3MjRjXHU4MGNjXHU4MGJhXHU4ZjI5XHU5MTRkXHU1MDBkXHU1N2Y5XHU1YTkyXHU2ODg1XHU2OTczXHU3MTY0XHU3MmZkXHU4Y2I3XHU1OGYyXHU4Y2UwXHU5NjZhXHU5MDE5XHU4NzdmXHU3OWU0XHU3N2U3XHU4''@;'; put 'put ''NDI5XHU0ZjJmXHU1MjY1XHU1MzVhXHU2MmNkXHU2N2NmXHU2Y2NhXHU3NjdkXHU3Yjk0XHU3Yzk1XHU4MjM2XHU4NTg0XHU4ZmViXHU2NmRkXHU2ZjIwXHU3MjA2XHU3ZTFiXHU4M2FiXHU5OWMxXHU5ZWE2Il0sWyJjOGExIiwiXHU1MWZkXHU3YmIxXHU3ODcyXHU3YmI4XHU4MDg3XHU3YjQ4''@;'; put 'put ''XHU2YWU4XHU1ZTYxXHU4MDhjXHU3NTUxXHU3NTYwXHU1MTZiXHU5MjYyXHU2ZThjXHU3NjdhXHU5MTk3XHU5YWVhXHU0ZjEwXHU3ZjcwXHU2MjljXHU3YjRmXHU5NWE1XHU5Y2U5XHU1NjdhXHU1ODU5XHU4NmU0XHU5NmJjXHU0ZjM0XHU1MjI0XHU1MzRhXHU1M2NkXHU1M2RiXHU1ZTA2XHU2''@;'; put 'put ''NDJjXHU2NTkxXHU2NzdmXHU2YzNlXHU2YzRlXHU3MjQ4XHU3MmFmXHU3M2VkXHU3NTU0XHU3ZTQxXHU4MjJjXHU4NWU5XHU4Y2E5XHU3YmM0XHU5MWM2XHU3MTY5XHU5ODEyXHU5OGVmXHU2MzNkXHU2NjY5XHU3NTZhXHU3NmU0XHU3OGQwXHU4NTQzXHU4NmVlXHU1MzJhXHU1MzUxXHU1NDI2''@;'; put 'put ''XHU1OTgzXHU1ZTg3XHU1ZjdjXHU2MGIyXHU2MjQ5XHU2Mjc5XHU2MmFiXHU2NTkwXHU2YmQ0XHU2Y2NjXHU3NWIyXHU3NmFlXHU3ODkxXHU3OWQ4XHU3ZGNiXHU3Zjc3XHU4MGE1XHU4OGFiXHU4YWI5XHU4Y2JiXHU5MDdmXHU5NzVlXHU5OGRiXHU2YTBiXHU3YzM4XHU1MDk5XHU1YzNlXHU1''@;'; put 'put ''ZmFlXHU2Nzg3XHU2YmQ4XHU3NDM1XHU3NzA5XHU3ZjhlIl0sWyJjOWExIiwiXHU5ZjNiXHU2N2NhXHU3YTE3XHU1MzM5XHU3NThiXHU5YWVkXHU1ZjY2XHU4MTlkXHU4M2YxXHU4MDk4XHU1ZjNjXHU1ZmM1XHU3NTYyXHU3YjQ2XHU5MDNjXHU2ODY3XHU1OWViXHU1YTliXHU3ZDEwXHU3Njdl''@;'; put 'put ''XHU4YjJjXHU0ZmY1XHU1ZjZhXHU2YTE5XHU2YzM3XHU2ZjAyXHU3NGUyXHU3OTY4XHU4ODY4XHU4YTU1XHU4Yzc5XHU1ZWRmXHU2M2NmXHU3NWM1XHU3OWQyXHU4MmQ3XHU5MzI4XHU5MmYyXHU4NDljXHU4NmVkXHU5YzJkXHU1NGMxXHU1ZjZjXHU2NThjXHU2ZDVjXHU3MDE1XHU4Y2E3XHU4''@;'; put 'put ''Y2QzXHU5ODNiXHU2NTRmXHU3NGY2XHU0ZTBkXHU0ZWQ4XHU1N2UwXHU1OTJiXHU1YTY2XHU1YmNjXHU1MWE4XHU1ZTAzXHU1ZTljXHU2MDE2XHU2Mjc2XHU2NTc3XHU2NWE3XHU2NjZlXHU2ZDZlXHU3MjM2XHU3YjI2XHU4MTUwXHU4MTlhXHU4Mjk5XHU4YjVjXHU4Y2EwXHU4Y2U2XHU4ZDc0''@;'; put 'put ''XHU5NjFjXHU5NjQ0XHU0ZmFlXHU2NGFiXHU2YjY2XHU4MjFlXHU4NDYxXHU4NTZhXHU5MGU4XHU1YzAxXHU2OTUzXHU5OGE4XHU4NDdhXHU4NTU3XHU0ZjBmXHU1MjZmXHU1ZmE5XHU1ZTQ1XHU2NzBkIl0sWyJjYWExIiwiXHU3OThmXHU4MTc5XHU4OTA3XHU4OTg2XHU2ZGY1XHU1ZjE3XHU2''@;'; put 'put ''MjU1XHU2Y2I4XHU0ZWNmXHU3MjY5XHU5YjkyXHU1MjA2XHU1NDNiXHU1Njc0XHU1OGIzXHU2MWE0XHU2MjZlXHU3MTFhXHU1OTZlXHU3Yzg5XHU3Y2RlXHU3ZDFiXHU5NmYwXHU2NTg3XHU4MDVlXHU0ZTE5XHU0Zjc1XHU1MTc1XHU1ODQwXHU1ZTYzXHU1ZTczXHU1ZjBhXHU2N2M0XHU0ZTI2''@;'; put 'put ''XHU4NTNkXHU5NTg5XHU5NjViXHU3YzczXHU5ODAxXHU1MGZiXHU1OGMxXHU3NjU2XHU3OGE3XHU1MjI1XHU3N2E1XHU4NTExXHU3Yjg2XHU1MDRmXHU1OTA5XHU3MjQ3XHU3YmM3XHU3ZGU4XHU4ZmJhXHU4ZmQ0XHU5MDRkXHU0ZmJmXHU1MmM5XHU1YTI5XHU1ZjAxXHU5N2FkXHU0ZmRkXHU4''@;'; put 'put ''MjE3XHU5MmVhXHU1NzAzXHU2MzU1XHU2YjY5XHU3NTJiXHU4OGRjXHU4ZjE0XHU3YTQyXHU1MmRmXHU1ODkzXHU2MTU1XHU2MjBhXHU2NmFlXHU2YmNkXHU3YzNmXHU4M2U5XHU1MDIzXHU0ZmY4XHU1MzA1XHU1NDQ2XHU1ODMxXHU1OTQ5XHU1YjlkXHU1Y2YwXHU1Y2VmXHU1ZDI5XHU1ZTk2''@;'; put 'put ''XHU2MmIxXHU2MzY3XHU2NTNlXHU2NWI5XHU2NzBiIl0sWyJjYmExIiwiXHU2Y2Q1XHU2Y2UxXHU3MGY5XHU3ODMyXHU3ZTJiXHU4MGRlXHU4MmIzXHU4NDBjXHU4NGVjXHU4NzAyXHU4OTEyXHU4YTJhXHU4YzRhXHU5MGE2XHU5MmQyXHU5OGZkXHU5Y2YzXHU5ZDZjXHU0ZTRmXHU0ZWExXHU1''@;'; put 'put ''MDhkXHU1MjU2XHU1NzRhXHU1OWE4XHU1ZTNkXHU1ZmQ4XHU1ZmQ5XHU2MjNmXHU2NmI0XHU2NzFiXHU2N2QwXHU2OGQyXHU1MTkyXHU3ZDIxXHU4MGFhXHU4MWE4XHU4YjAwXHU4YzhjXHU4Y2JmXHU5MjdlXHU5NjMyXHU1NDIwXHU5ODJjXHU1MzE3XHU1MGQ1XHU1MzVjXHU1OGE4XHU2NGIy''@;'; put 'put ''XHU2NzM0XHU3MjY3XHU3NzY2XHU3YTQ2XHU5MWU2XHU1MmMzXHU2Y2ExXHU2Yjg2XHU1ODAwXHU1ZTRjXHU1OTU0XHU2NzJjXHU3ZmZiXHU1MWUxXHU3NmM2XHU2NDY5XHU3OGU4XHU5YjU0XHU5ZWJiXHU1N2NiXHU1OWI5XHU2NjI3XHU2NzlhXHU2YmNlXHU1NGU5XHU2OWQ5XHU1ZTU1XHU4''@;'; put 'put ''MTljXHU2Nzk1XHU5YmFhXHU2N2ZlXHU5YzUyXHU2ODVkXHU0ZWE2XHU0ZmUzXHU1M2M4XHU2MmI5XHU2NzJiXHU2Y2FiXHU4ZmM0XHU0ZmFkXHU3ZTZkXHU5ZWJmXHU0ZTA3XHU2MTYyXHU2ZTgwIl0sWyJjY2ExIiwiXHU2ZjJiXHU4NTEzXHU1NDczXHU2NzJhXHU5YjQ1XHU1ZGYzXHU3Yjk1''@;'; put 'put ''XHU1Y2FjXHU1YmM2XHU4NzFjXHU2ZTRhXHU4NGQxXHU3YTE0XHU4MTA4XHU1OTk5XHU3YzhkXHU2YzExXHU3NzIwXHU1MmQ5XHU1OTIyXHU3MTIxXHU3MjVmXHU3N2RiXHU5NzI3XHU5ZDYxXHU2OTBiXHU1YTdmXHU1YTE4XHU1MWE1XHU1NDBkXHU1NDdkXHU2NjBlXHU3NmRmXHU4ZmY3XHU5''@;'; put 'put ''Mjk4XHU5Y2Y0XHU1OWVhXHU3MjVkXHU2ZWM1XHU1MTRkXHU2OGM5XHU3ZGJmXHU3ZGVjXHU5NzYyXHU5ZWJhXHU2NDc4XHU2YTIxXHU4MzAyXHU1OTg0XHU1YjVmXHU2YmRiXHU3MzFiXHU3NmYyXHU3ZGIyXHU4MDE3XHU4NDk5XHU1MTMyXHU2NzI4XHU5ZWQ5XHU3NmVlXHU2NzYyXHU1MmZm''@;'; put 'put ''XHU5OTA1XHU1YzI0XHU2MjNiXHU3YzdlXHU4Y2IwXHU1NTRmXHU2MGI2XHU3ZDBiXHU5NTgwXHU1MzAxXHU0ZTVmXHU1MWI2XHU1OTFjXHU3MjNhXHU4MDM2XHU5MWNlXHU1ZjI1XHU3N2UyXHU1Mzg0XHU1Zjc5XHU3ZDA0XHU4NWFjXHU4YTMzXHU4ZThkXHU5NzU2XHU2N2YzXHU4NWFlXHU5''@;'; put 'put ''NDUzXHU2MTA5XHU2MTA4XHU2Y2I5XHU3NjUyIl0sWyJjZGExIiwiXHU4YWVkXHU4ZjM4XHU1NTJmXHU0ZjUxXHU1MTJhXHU1MmM3XHU1M2NiXHU1YmE1XHU1ZTdkXHU2MGEwXHU2MTgyXHU2M2Q2XHU2NzA5XHU2N2RhXHU2ZTY3XHU2ZDhjXHU3MzM2XHU3MzM3XHU3NTMxXHU3OTUwXHU4OGQ1''@;'; put 'put ''XHU4YTk4XHU5MDRhXHU5MDkxXHU5MGY1XHU5NmM0XHU4NzhkXHU1OTE1XHU0ZTg4XHU0ZjU5XHU0ZTBlXHU4YTg5XHU4ZjNmXHU5ODEwXHU1MGFkXHU1ZTdjXHU1OTk2XHU1YmI5XHU1ZWI4XHU2M2RhXHU2M2ZhXHU2NGMxXHU2NmRjXHU2OTRhXHU2OWQ4XHU2ZDBiXHU2ZWI2XHU3MTk0XHU3''@;'; put 'put ''NTI4XHU3YWFmXHU3ZjhhXHU4MDAwXHU4NDQ5XHU4NGM5XHU4OTgxXHU4YjIxXHU4ZTBhXHU5MDY1XHU5NjdkXHU5OTBhXHU2MTdlXHU2MjkxXHU2YjMyXHU2YzgzXHU2ZDc0XHU3ZmNjXHU3ZmZjXHU2ZGMwXHU3Zjg1XHU4N2JhXHU4OGY4XHU2NzY1XHU4M2IxXHU5ODNjXHU5NmY3XHU2ZDFi''@;'; put 'put ''XHU3ZDYxXHU4NDNkXHU5MTZhXHU0ZTcxXHU1Mzc1XHU1ZDUwXHU2YjA0XHU2ZmViXHU4NWNkXHU4NjJkXHU4OWE3XHU1MjI5XHU1NDBmXHU1YzY1XHU2NzRlXHU2OGE4XHU3NDA2XHU3NDgzIl0sWyJjZWExIiwiXHU3NWUyXHU4OGNmXHU4OGUxXHU5MWNjXHU5NmUyXHU5Njc4XHU1ZjhiXHU3''@;'; put 'put ''Mzg3XHU3YWNiXHU4NDRlXHU2M2EwXHU3NTY1XHU1Mjg5XHU2ZDQxXHU2ZTljXHU3NDA5XHU3NTU5XHU3ODZiXHU3YzkyXHU5Njg2XHU3YWRjXHU5ZjhkXHU0ZmI2XHU2MTZlXHU2NWM1XHU4NjVjXHU0ZTg2XHU0ZWFlXHU1MGRhXHU0ZTIxXHU1MWNjXHU1YmVlXHU2NTk5XHU2ODgxXHU2ZGJj''@;'; put 'put ''XHU3MzFmXHU3NjQyXHU3N2FkXHU3YTFjXHU3Y2U3XHU4MjZmXHU4YWQyXHU5MDdjXHU5MWNmXHU5Njc1XHU5ODE4XHU1MjliXHU3ZGQxXHU1MDJiXHU1Mzk4XHU2Nzk3XHU2ZGNiXHU3MWQwXHU3NDMzXHU4MWU4XHU4ZjJhXHU5NmEzXHU5YzU3XHU5ZTlmXHU3NDYwXHU1ODQxXHU2ZDk5XHU3''@;'; put 'put ''ZDJmXHU5ODVlXHU0ZWU0XHU0ZjM2XHU0ZjhiXHU1MWI3XHU1MmIxXHU1ZGJhXHU2MDFjXHU3M2IyXHU3OTNjXHU4MmQzXHU5MjM0XHU5NmI3XHU5NmY2XHU5NzBhXHU5ZTk3XHU5ZjYyXHU2NmE2XHU2Yjc0XHU1MjE3XHU1MmEzXHU3MGM4XHU4OGMyXHU1ZWM5XHU2MDRiXHU2MTkwXHU2ZjIz''@;'; put 'put ''XHU3MTQ5XHU3YzNlXHU3ZGY0XHU4MDZmIl0sWyJjZmExIiwiXHU4NGVlXHU5MDIzXHU5MzJjXHU1NDQyXHU5YjZmXHU2YWQzXHU3MDg5XHU4Y2MyXHU4ZGVmXHU5NzMyXHU1MmI0XHU1YTQxXHU1ZWNhXHU1ZjA0XHU2NzE3XHU2OTdjXHU2OTk0XHU2ZDZhXHU2ZjBmXHU3MjYyXHU3MmZjXHU3''@;'; put 'put ''YmVkXHU4MDAxXHU4MDdlXHU4NzRiXHU5MGNlXHU1MTZkXHU5ZTkzXHU3OTg0XHU4MDhiXHU5MzMyXHU4YWQ2XHU1MDJkXHU1NDhjXHU4YTcxXHU2YjZhXHU4Y2M0XHU4MTA3XHU2MGQxXHU2N2EwXHU5ZGYyXHU0ZTk5XHU0ZTk4XHU5YzEwXHU4YTZiXHU4NWMxXHU4NTY4XHU2OTAwXHU2ZTdl''@;'; put 'put ''XHU3ODk3XHU4MTU1Il0sWyJkMGExIiwiXHU1ZjBjXHU0ZTEwXHU0ZTE1XHU0ZTJhXHU0ZTMxXHU0ZTM2XHU0ZTNjXHU0ZTNmXHU0ZTQyXHU0ZTU2XHU0ZTU4XHU0ZTgyXHU0ZTg1XHU4YzZiXHU0ZThhXHU4MjEyXHU1ZjBkXHU0ZThlXHU0ZTllXHU0ZTlmXHU0ZWEwXHU0ZWEyXHU0ZWIwXHU0''@;'; put 'put ''ZWIzXHU0ZWI2XHU0ZWNlXHU0ZWNkXHU0ZWM0XHU0ZWM2XHU0ZWMyXHU0ZWQ3XHU0ZWRlXHU0ZWVkXHU0ZWRmXHU0ZWY3XHU0ZjA5XHU0ZjVhXHU0ZjMwXHU0ZjViXHU0ZjVkXHU0ZjU3XHU0ZjQ3XHU0Zjc2XHU0Zjg4XHU0ZjhmXHU0Zjk4XHU0ZjdiXHU0ZjY5XHU0ZjcwXHU0ZjkxXHU0ZjZm''@;'; put 'put ''XHU0Zjg2XHU0Zjk2XHU1MTE4XHU0ZmQ0XHU0ZmRmXHU0ZmNlXHU0ZmQ4XHU0ZmRiXHU0ZmQxXHU0ZmRhXHU0ZmQwXHU0ZmU0XHU0ZmU1XHU1MDFhXHU1MDI4XHU1MDE0XHU1MDJhXHU1MDI1XHU1MDA1XHU0ZjFjXHU0ZmY2XHU1MDIxXHU1MDI5XHU1MDJjXHU0ZmZlXHU0ZmVmXHU1MDExXHU1''@;'; put 'put ''MDA2XHU1MDQzXHU1MDQ3XHU2NzAzXHU1MDU1XHU1MDUwXHU1MDQ4XHU1MDVhXHU1MDU2XHU1MDZjXHU1MDc4XHU1MDgwXHU1MDlhXHU1MDg1XHU1MGI0XHU1MGIyIl0sWyJkMWExIiwiXHU1MGM5XHU1MGNhXHU1MGIzXHU1MGMyXHU1MGQ2XHU1MGRlXHU1MGU1XHU1MGVkXHU1MGUzXHU1MGVl''@;'; put 'put ''XHU1MGY5XHU1MGY1XHU1MTA5XHU1MTAxXHU1MTAyXHU1MTE2XHU1MTE1XHU1MTE0XHU1MTFhXHU1MTIxXHU1MTNhXHU1MTM3XHU1MTNjXHU1MTNiXHU1MTNmXHU1MTQwXHU1MTUyXHU1MTRjXHU1MTU0XHU1MTYyXHU3YWY4XHU1MTY5XHU1MTZhXHU1MTZlXHU1MTgwXHU1MTgyXHU1NmQ4XHU1''@;'; put 'put ''MThjXHU1MTg5XHU1MThmXHU1MTkxXHU1MTkzXHU1MTk1XHU1MTk2XHU1MWE0XHU1MWE2XHU1MWEyXHU1MWE5XHU1MWFhXHU1MWFiXHU1MWIzXHU1MWIxXHU1MWIyXHU1MWIwXHU1MWI1XHU1MWJkXHU1MWM1XHU1MWM5XHU1MWRiXHU1MWUwXHU4NjU1XHU1MWU5XHU1MWVkXHU1MWYwXHU1MWY1''@;'; put 'put ''XHU1MWZlXHU1MjA0XHU1MjBiXHU1MjE0XHU1MjBlXHU1MjI3XHU1MjJhXHU1MjJlXHU1MjMzXHU1MjM5XHU1MjRmXHU1MjQ0XHU1MjRiXHU1MjRjXHU1MjVlXHU1MjU0XHU1MjZhXHU1Mjc0XHU1MjY5XHU1MjczXHU1MjdmXHU1MjdkXHU1MjhkXHU1Mjk0XHU1MjkyXHU1MjcxXHU1Mjg4XHU1''@;'; put 'put ''MjkxXHU4ZmE4Il0sWyJkMmExIiwiXHU4ZmE3XHU1MmFjXHU1MmFkXHU1MmJjXHU1MmI1XHU1MmMxXHU1MmNkXHU1MmQ3XHU1MmRlXHU1MmUzXHU1MmU2XHU5OGVkXHU1MmUwXHU1MmYzXHU1MmY1XHU1MmY4XHU1MmY5XHU1MzA2XHU1MzA4XHU3NTM4XHU1MzBkXHU1MzEwXHU1MzBmXHU1MzE1''@;'; put 'put ''XHU1MzFhXHU1MzIzXHU1MzJmXHU1MzMxXHU1MzMzXHU1MzM4XHU1MzQwXHU1MzQ2XHU1MzQ1XHU0ZTE3XHU1MzQ5XHU1MzRkXHU1MWQ2XHU1MzVlXHU1MzY5XHU1MzZlXHU1OTE4XHU1MzdiXHU1Mzc3XHU1MzgyXHU1Mzk2XHU1M2EwXHU1M2E2XHU1M2E1XHU1M2FlXHU1M2IwXHU1M2I2XHU1''@;'; put 'put ''M2MzXHU3YzEyXHU5NmQ5XHU1M2RmXHU2NmZjXHU3MWVlXHU1M2VlXHU1M2U4XHU1M2VkXHU1M2ZhXHU1NDAxXHU1NDNkXHU1NDQwXHU1NDJjXHU1NDJkXHU1NDNjXHU1NDJlXHU1NDM2XHU1NDI5XHU1NDFkXHU1NDRlXHU1NDhmXHU1NDc1XHU1NDhlXHU1NDVmXHU1NDcxXHU1NDc3XHU1NDcw''@;'; put 'put ''XHU1NDkyXHU1NDdiXHU1NDgwXHU1NDc2XHU1NDg0XHU1NDkwXHU1NDg2XHU1NGM3XHU1NGEyXHU1NGI4XHU1NGE1XHU1NGFjXHU1NGM0XHU1NGM4XHU1NGE4Il0sWyJkM2ExIiwiXHU1NGFiXHU1NGMyXHU1NGE0XHU1NGJlXHU1NGJjXHU1NGQ4XHU1NGU1XHU1NGU2XHU1NTBmXHU1NTE0XHU1''@;'; put 'put ''NGZkXHU1NGVlXHU1NGVkXHU1NGZhXHU1NGUyXHU1NTM5XHU1NTQwXHU1NTYzXHU1NTRjXHU1NTJlXHU1NTVjXHU1NTQ1XHU1NTU2XHU1NTU3XHU1NTM4XHU1NTMzXHU1NTVkXHU1NTk5XHU1NTgwXHU1NGFmXHU1NThhXHU1NTlmXHU1NTdiXHU1NTdlXHU1NTk4XHU1NTllXHU1NWFlXHU1NTdj''@;'; put 'put ''XHU1NTgzXHU1NWE5XHU1NTg3XHU1NWE4XHU1NWRhXHU1NWM1XHU1NWRmXHU1NWM0XHU1NWRjXHU1NWU0XHU1NWQ0XHU1NjE0XHU1NWY3XHU1NjE2XHU1NWZlXHU1NWZkXHU1NjFiXHU1NWY5XHU1NjRlXHU1NjUwXHU3MWRmXHU1NjM0XHU1NjM2XHU1NjMyXHU1NjM4XHU1NjZiXHU1NjY0XHU1''@;'; put 'put ''NjJmXHU1NjZjXHU1NjZhXHU1Njg2XHU1NjgwXHU1NjhhXHU1NmEwXHU1Njk0XHU1NjhmXHU1NmE1XHU1NmFlXHU1NmI2XHU1NmI0XHU1NmMyXHU1NmJjXHU1NmMxXHU1NmMzXHU1NmMwXHU1NmM4XHU1NmNlXHU1NmQxXHU1NmQzXHU1NmQ3XHU1NmVlXHU1NmY5XHU1NzAwXHU1NmZmXHU1NzA0''@;'; put 'put ''XHU1NzA5Il0sWyJkNGExIiwiXHU1NzA4XHU1NzBiXHU1NzBkXHU1NzEzXHU1NzE4XHU1NzE2XHU1NWM3XHU1NzFjXHU1NzI2XHU1NzM3XHU1NzM4XHU1NzRlXHU1NzNiXHU1NzQwXHU1NzRmXHU1NzY5XHU1N2MwXHU1Nzg4XHU1NzYxXHU1NzdmXHU1Nzg5XHU1NzkzXHU1N2EwXHU1N2IzXHU1''@;'; put 'put ''N2E0XHU1N2FhXHU1N2IwXHU1N2MzXHU1N2M2XHU1N2Q0XHU1N2QyXHU1N2QzXHU1ODBhXHU1N2Q2XHU1N2UzXHU1ODBiXHU1ODE5XHU1ODFkXHU1ODcyXHU1ODIxXHU1ODYyXHU1ODRiXHU1ODcwXHU2YmMwXHU1ODUyXHU1ODNkXHU1ODc5XHU1ODg1XHU1OGI5XHU1ODlmXHU1OGFiXHU1OGJh''@;'; put 'put ''XHU1OGRlXHU1OGJiXHU1OGI4XHU1OGFlXHU1OGM1XHU1OGQzXHU1OGQxXHU1OGQ3XHU1OGQ5XHU1OGQ4XHU1OGU1XHU1OGRjXHU1OGU0XHU1OGRmXHU1OGVmXHU1OGZhXHU1OGY5XHU1OGZiXHU1OGZjXHU1OGZkXHU1OTAyXHU1OTBhXHU1OTEwXHU1OTFiXHU2OGE2XHU1OTI1XHU1OTJjXHU1''@;'; put 'put ''OTJkXHU1OTMyXHU1OTM4XHU1OTNlXHU3YWQyXHU1OTU1XHU1OTUwXHU1OTRlXHU1OTVhXHU1OTU4XHU1OTYyXHU1OTYwXHU1OTY3XHU1OTZjXHU1OTY5Il0sWyJkNWExIiwiXHU1OTc4XHU1OTgxXHU1OTlkXHU0ZjVlXHU0ZmFiXHU1OWEzXHU1OWIyXHU1OWM2XHU1OWU4XHU1OWRjXHU1OThk''@;'; put 'put ''XHU1OWQ5XHU1OWRhXHU1YTI1XHU1YTFmXHU1YTExXHU1YTFjXHU1YTA5XHU1YTFhXHU1YTQwXHU1YTZjXHU1YTQ5XHU1YTM1XHU1YTM2XHU1YTYyXHU1YTZhXHU1YTlhXHU1YWJjXHU1YWJlXHU1YWNiXHU1YWMyXHU1YWJkXHU1YWUzXHU1YWQ3XHU1YWU2XHU1YWU5XHU1YWQ2XHU1YWZhXHU1''@;'; put 'put ''YWZiXHU1YjBjXHU1YjBiXHU1YjE2XHU1YjMyXHU1YWQwXHU1YjJhXHU1YjM2XHU1YjNlXHU1YjQzXHU1YjQ1XHU1YjQwXHU1YjUxXHU1YjU1XHU1YjVhXHU1YjViXHU1YjY1XHU1YjY5XHU1YjcwXHU1YjczXHU1Yjc1XHU1Yjc4XHU2NTg4XHU1YjdhXHU1YjgwXHU1YjgzXHU1YmE2XHU1YmI4''@;'; put 'put ''XHU1YmMzXHU1YmM3XHU1YmM5XHU1YmQ0XHU1YmQwXHU1YmU0XHU1YmU2XHU1YmUyXHU1YmRlXHU1YmU1XHU1YmViXHU1YmYwXHU1YmY2XHU1YmYzXHU1YzA1XHU1YzA3XHU1YzA4XHU1YzBkXHU1YzEzXHU1YzIwXHU1YzIyXHU1YzI4XHU1YzM4XHU1YzM5XHU1YzQxXHU1YzQ2XHU1YzRlXHU1''@;'; put 'put ''YzUzIl0sWyJkNmExIiwiXHU1YzUwXHU1YzRmXHU1YjcxXHU1YzZjXHU1YzZlXHU0ZTYyXHU1Yzc2XHU1Yzc5XHU1YzhjXHU1YzkxXHU1Yzk0XHU1OTliXHU1Y2FiXHU1Y2JiXHU1Y2I2XHU1Y2JjXHU1Y2I3XHU1Y2M1XHU1Y2JlXHU1Y2M3XHU1Y2Q5XHU1Y2U5XHU1Y2ZkXHU1Y2ZhXHU1Y2Vk''@;'; put 'put ''XHU1ZDhjXHU1Y2VhXHU1ZDBiXHU1ZDE1XHU1ZDE3XHU1ZDVjXHU1ZDFmXHU1ZDFiXHU1ZDExXHU1ZDE0XHU1ZDIyXHU1ZDFhXHU1ZDE5XHU1ZDE4XHU1ZDRjXHU1ZDUyXHU1ZDRlXHU1ZDRiXHU1ZDZjXHU1ZDczXHU1ZDc2XHU1ZDg3XHU1ZDg0XHU1ZDgyXHU1ZGEyXHU1ZDlkXHU1ZGFjXHU1''@;'; put 'put ''ZGFlXHU1ZGJkXHU1ZDkwXHU1ZGI3XHU1ZGJjXHU1ZGM5XHU1ZGNkXHU1ZGQzXHU1ZGQyXHU1ZGQ2XHU1ZGRiXHU1ZGViXHU1ZGYyXHU1ZGY1XHU1ZTBiXHU1ZTFhXHU1ZTE5XHU1ZTExXHU1ZTFiXHU1ZTM2XHU1ZTM3XHU1ZTQ0XHU1ZTQzXHU1ZTQwXHU1ZTRlXHU1ZTU3XHU1ZTU0XHU1ZTVm''@;'; put 'put ''XHU1ZTYyXHU1ZTY0XHU1ZTQ3XHU1ZTc1XHU1ZTc2XHU1ZTdhXHU5ZWJjXHU1ZTdmXHU1ZWEwXHU1ZWMxXHU1ZWMyXHU1ZWM4XHU1ZWQwXHU1ZWNmIl0sWyJkN2ExIiwiXHU1ZWQ2XHU1ZWUzXHU1ZWRkXHU1ZWRhXHU1ZWRiXHU1ZWUyXHU1ZWUxXHU1ZWU4XHU1ZWU5XHU1ZWVjXHU1ZWYxXHU1''@;'; put 'put ''ZWYzXHU1ZWYwXHU1ZWY0XHU1ZWY4XHU1ZWZlXHU1ZjAzXHU1ZjA5XHU1ZjVkXHU1ZjVjXHU1ZjBiXHU1ZjExXHU1ZjE2XHU1ZjI5XHU1ZjJkXHU1ZjM4XHU1ZjQxXHU1ZjQ4XHU1ZjRjXHU1ZjRlXHU1ZjJmXHU1ZjUxXHU1ZjU2XHU1ZjU3XHU1ZjU5XHU1ZjYxXHU1ZjZkXHU1ZjczXHU1Zjc3''@;'; put 'put ''XHU1ZjgzXHU1ZjgyXHU1ZjdmXHU1ZjhhXHU1Zjg4XHU1ZjkxXHU1Zjg3XHU1ZjllXHU1Zjk5XHU1Zjk4XHU1ZmEwXHU1ZmE4XHU1ZmFkXHU1ZmJjXHU1ZmQ2XHU1ZmZiXHU1ZmU0XHU1ZmY4XHU1ZmYxXHU1ZmRkXHU2MGIzXHU1ZmZmXHU2MDIxXHU2MDYwXHU2MDE5XHU2MDEwXHU2MDI5XHU2''@;'; put 'put ''MDBlXHU2MDMxXHU2MDFiXHU2MDE1XHU2MDJiXHU2MDI2XHU2MDBmXHU2MDNhXHU2MDVhXHU2MDQxXHU2MDZhXHU2MDc3XHU2MDVmXHU2MDRhXHU2MDQ2XHU2MDRkXHU2MDYzXHU2MDQzXHU2MDY0XHU2MDQyXHU2MDZjXHU2MDZiXHU2MDU5XHU2MDgxXHU2MDhkXHU2MGU3XHU2MDgzXHU2MDlh''@;'; put 'put ''Il0sWyJkOGExIiwiXHU2MDg0XHU2MDliXHU2MDk2XHU2MDk3XHU2MDkyXHU2MGE3XHU2MDhiXHU2MGUxXHU2MGI4XHU2MGUwXHU2MGQzXHU2MGI0XHU1ZmYwXHU2MGJkXHU2MGM2XHU2MGI1XHU2MGQ4XHU2MTRkXHU2MTE1XHU2MTA2XHU2MGY2XHU2MGY3XHU2MTAwXHU2MGY0XHU2MGZhXHU2''@;'; put 'put ''MTAzXHU2MTIxXHU2MGZiXHU2MGYxXHU2MTBkXHU2MTBlXHU2MTQ3XHU2MTNlXHU2MTI4XHU2MTI3XHU2MTRhXHU2MTNmXHU2MTNjXHU2MTJjXHU2MTM0XHU2MTNkXHU2MTQyXHU2MTQ0XHU2MTczXHU2MTc3XHU2MTU4XHU2MTU5XHU2MTVhXHU2MTZiXHU2MTc0XHU2MTZmXHU2MTY1XHU2MTcx''@;'; put 'put ''XHU2MTVmXHU2MTVkXHU2MTUzXHU2MTc1XHU2MTk5XHU2MTk2XHU2MTg3XHU2MWFjXHU2MTk0XHU2MTlhXHU2MThhXHU2MTkxXHU2MWFiXHU2MWFlXHU2MWNjXHU2MWNhXHU2MWM5XHU2MWY3XHU2MWM4XHU2MWMzXHU2MWM2XHU2MWJhXHU2MWNiXHU3Zjc5XHU2MWNkXHU2MWU2XHU2MWUzXHU2''@;'; put 'put ''MWY2XHU2MWZhXHU2MWY0XHU2MWZmXHU2MWZkXHU2MWZjXHU2MWZlXHU2MjAwXHU2MjA4XHU2MjA5XHU2MjBkXHU2MjBjXHU2MjE0XHU2MjFiIl0sWyJkOWExIiwiXHU2MjFlXHU2MjIxXHU2MjJhXHU2MjJlXHU2MjMwXHU2MjMyXHU2MjMzXHU2MjQxXHU2MjRlXHU2MjVlXHU2MjYzXHU2MjVi''@;'; put 'put ''XHU2MjYwXHU2MjY4XHU2MjdjXHU2MjgyXHU2Mjg5XHU2MjdlXHU2MjkyXHU2MjkzXHU2Mjk2XHU2MmQ0XHU2MjgzXHU2Mjk0XHU2MmQ3XHU2MmQxXHU2MmJiXHU2MmNmXHU2MmZmXHU2MmM2XHU2NGQ0XHU2MmM4XHU2MmRjXHU2MmNjXHU2MmNhXHU2MmMyXHU2MmM3XHU2MjliXHU2MmM5XHU2''@;'; put 'put ''MzBjXHU2MmVlXHU2MmYxXHU2MzI3XHU2MzAyXHU2MzA4XHU2MmVmXHU2MmY1XHU2MzUwXHU2MzNlXHU2MzRkXHU2NDFjXHU2MzRmXHU2Mzk2XHU2MzhlXHU2MzgwXHU2M2FiXHU2Mzc2XHU2M2EzXHU2MzhmXHU2Mzg5XHU2MzlmXHU2M2I1XHU2MzZiXHU2MzY5XHU2M2JlXHU2M2U5XHU2M2Mw''@;'; put 'put ''XHU2M2M2XHU2M2UzXHU2M2M5XHU2M2QyXHU2M2Y2XHU2M2M0XHU2NDE2XHU2NDM0XHU2NDA2XHU2NDEzXHU2NDI2XHU2NDM2XHU2NTFkXHU2NDE3XHU2NDI4XHU2NDBmXHU2NDY3XHU2NDZmXHU2NDc2XHU2NDRlXHU2NTJhXHU2NDk1XHU2NDkzXHU2NGE1XHU2NGE5XHU2NDg4XHU2NGJjIl0s''@;'; put 'put ''WyJkYWExIiwiXHU2NGRhXHU2NGQyXHU2NGM1XHU2NGM3XHU2NGJiXHU2NGQ4XHU2NGMyXHU2NGYxXHU2NGU3XHU4MjA5XHU2NGUwXHU2NGUxXHU2MmFjXHU2NGUzXHU2NGVmXHU2NTJjXHU2NGY2XHU2NGY0XHU2NGYyXHU2NGZhXHU2NTAwXHU2NGZkXHU2NTE4XHU2NTFjXHU2NTA1XHU2NTI0''@;'; put 'put ''XHU2NTIzXHU2NTJiXHU2NTM0XHU2NTM1XHU2NTM3XHU2NTM2XHU2NTM4XHU3NTRiXHU2NTQ4XHU2NTU2XHU2NTU1XHU2NTRkXHU2NTU4XHU2NTVlXHU2NTVkXHU2NTcyXHU2NTc4XHU2NTgyXHU2NTgzXHU4YjhhXHU2NTliXHU2NTlmXHU2NWFiXHU2NWI3XHU2NWMzXHU2NWM2XHU2NWMxXHU2''@;'; put 'put ''NWM0XHU2NWNjXHU2NWQyXHU2NWRiXHU2NWQ5XHU2NWUwXHU2NWUxXHU2NWYxXHU2NzcyXHU2NjBhXHU2NjAzXHU2NWZiXHU2NzczXHU2NjM1XHU2NjM2XHU2NjM0XHU2NjFjXHU2NjRmXHU2NjQ0XHU2NjQ5XHU2NjQxXHU2NjVlXHU2NjVkXHU2NjY0XHU2NjY3XHU2NjY4XHU2NjVmXHU2NjYy''@;'; put 'put ''XHU2NjcwXHU2NjgzXHU2Njg4XHU2NjhlXHU2Njg5XHU2Njg0XHU2Njk4XHU2NjlkXHU2NmMxXHU2NmI5XHU2NmM5XHU2NmJlXHU2NmJjIl0sWyJkYmExIiwiXHU2NmM0XHU2NmI4XHU2NmQ2XHU2NmRhXHU2NmUwXHU2NjNmXHU2NmU2XHU2NmU5XHU2NmYwXHU2NmY1XHU2NmY3XHU2NzBmXHU2''@;'; put 'put ''NzE2XHU2NzFlXHU2NzI2XHU2NzI3XHU5NzM4XHU2NzJlXHU2NzNmXHU2NzM2XHU2NzQxXHU2NzM4XHU2NzM3XHU2NzQ2XHU2NzVlXHU2NzYwXHU2NzU5XHU2NzYzXHU2NzY0XHU2Nzg5XHU2NzcwXHU2N2E5XHU2NzdjXHU2NzZhXHU2NzhjXHU2NzhiXHU2N2E2XHU2N2ExXHU2Nzg1XHU2N2I3''@;'; put 'put ''XHU2N2VmXHU2N2I0XHU2N2VjXHU2N2IzXHU2N2U5XHU2N2I4XHU2N2U0XHU2N2RlXHU2N2RkXHU2N2UyXHU2N2VlXHU2N2I5XHU2N2NlXHU2N2M2XHU2N2U3XHU2YTljXHU2ODFlXHU2ODQ2XHU2ODI5XHU2ODQwXHU2ODRkXHU2ODMyXHU2ODRlXHU2OGIzXHU2ODJiXHU2ODU5XHU2ODYzXHU2''@;'; put 'put ''ODc3XHU2ODdmXHU2ODlmXHU2ODhmXHU2OGFkXHU2ODk0XHU2ODlkXHU2ODliXHU2ODgzXHU2YWFlXHU2OGI5XHU2ODc0XHU2OGI1XHU2OGEwXHU2OGJhXHU2OTBmXHU2ODhkXHU2ODdlXHU2OTAxXHU2OGNhXHU2OTA4XHU2OGQ4XHU2OTIyXHU2OTI2XHU2OGUxXHU2OTBjXHU2OGNkIl0sWyJk''@;'; put 'put ''Y2ExIiwiXHU2OGQ0XHU2OGU3XHU2OGQ1XHU2OTM2XHU2OTEyXHU2OTA0XHU2OGQ3XHU2OGUzXHU2OTI1XHU2OGY5XHU2OGUwXHU2OGVmXHU2OTI4XHU2OTJhXHU2OTFhXHU2OTIzXHU2OTIxXHU2OGM2XHU2OTc5XHU2OTc3XHU2OTVjXHU2OTc4XHU2OTZiXHU2OTU0XHU2OTdlXHU2OTZlXHU2''@;'; put 'put ''OTM5XHU2OTc0XHU2OTNkXHU2OTU5XHU2OTMwXHU2OTYxXHU2OTVlXHU2OTVkXHU2OTgxXHU2OTZhXHU2OWIyXHU2OWFlXHU2OWQwXHU2OWJmXHU2OWMxXHU2OWQzXHU2OWJlXHU2OWNlXHU1YmU4XHU2OWNhXHU2OWRkXHU2OWJiXHU2OWMzXHU2OWE3XHU2YTJlXHU2OTkxXHU2OWEwXHU2OTlj''@;'; put 'put ''XHU2OTk1XHU2OWI0XHU2OWRlXHU2OWU4XHU2YTAyXHU2YTFiXHU2OWZmXHU2YjBhXHU2OWY5XHU2OWYyXHU2OWU3XHU2YTA1XHU2OWIxXHU2YTFlXHU2OWVkXHU2YTE0XHU2OWViXHU2YTBhXHU2YTEyXHU2YWMxXHU2YTIzXHU2YTEzXHU2YTQ0XHU2YTBjXHU2YTcyXHU2YTM2XHU2YTc4XHU2''@;'; put 'put ''YTQ3XHU2YTYyXHU2YTU5XHU2YTY2XHU2YTQ4XHU2YTM4XHU2YTIyXHU2YTkwXHU2YThkXHU2YWEwXHU2YTg0XHU2YWEyXHU2YWEzIl0sWyJkZGExIiwiXHU2YTk3XHU4NjE3XHU2YWJiXHU2YWMzXHU2YWMyXHU2YWI4XHU2YWIzXHU2YWFjXHU2YWRlXHU2YWQxXHU2YWRmXHU2YWFhXHU2YWRh''@;'; put 'put ''XHU2YWVhXHU2YWZiXHU2YjA1XHU4NjE2XHU2YWZhXHU2YjEyXHU2YjE2XHU5YjMxXHU2YjFmXHU2YjM4XHU2YjM3XHU3NmRjXHU2YjM5XHU5OGVlXHU2YjQ3XHU2YjQzXHU2YjQ5XHU2YjUwXHU2YjU5XHU2YjU0XHU2YjViXHU2YjVmXHU2YjYxXHU2Yjc4XHU2Yjc5XHU2YjdmXHU2YjgwXHU2''@;'; put 'put ''Yjg0XHU2YjgzXHU2YjhkXHU2Yjk4XHU2Yjk1XHU2YjllXHU2YmE0XHU2YmFhXHU2YmFiXHU2YmFmXHU2YmIyXHU2YmIxXHU2YmIzXHU2YmI3XHU2YmJjXHU2YmM2XHU2YmNiXHU2YmQzXHU2YmRmXHU2YmVjXHU2YmViXHU2YmYzXHU2YmVmXHU5ZWJlXHU2YzA4XHU2YzEzXHU2YzE0XHU2YzFi''@;'; put 'put ''XHU2YzI0XHU2YzIzXHU2YzVlXHU2YzU1XHU2YzYyXHU2YzZhXHU2YzgyXHU2YzhkXHU2YzlhXHU2YzgxXHU2YzliXHU2YzdlXHU2YzY4XHU2YzczXHU2YzkyXHU2YzkwXHU2Y2M0XHU2Y2YxXHU2Y2QzXHU2Y2JkXHU2Y2Q3XHU2Y2M1XHU2Y2RkXHU2Y2FlXHU2Y2IxXHU2Y2JlIl0sWyJkZWEx''@;'; put 'put ''IiwiXHU2Y2JhXHU2Y2RiXHU2Y2VmXHU2Y2Q5XHU2Y2VhXHU2ZDFmXHU4ODRkXHU2ZDM2XHU2ZDJiXHU2ZDNkXHU2ZDM4XHU2ZDE5XHU2ZDM1XHU2ZDMzXHU2ZDEyXHU2ZDBjXHU2ZDYzXHU2ZDkzXHU2ZDY0XHU2ZDVhXHU2ZDc5XHU2ZDU5XHU2ZDhlXHU2ZDk1XHU2ZmU0XHU2ZDg1XHU2ZGY5''@;'; put 'put ''XHU2ZTE1XHU2ZTBhXHU2ZGI1XHU2ZGM3XHU2ZGU2XHU2ZGI4XHU2ZGM2XHU2ZGVjXHU2ZGRlXHU2ZGNjXHU2ZGU4XHU2ZGQyXHU2ZGM1XHU2ZGZhXHU2ZGQ5XHU2ZGU0XHU2ZGQ1XHU2ZGVhXHU2ZGVlXHU2ZTJkXHU2ZTZlXHU2ZTJlXHU2ZTE5XHU2ZTcyXHU2ZTVmXHU2ZTNlXHU2ZTIzXHU2''@;'; put 'put ''ZTZiXHU2ZTJiXHU2ZTc2XHU2ZTRkXHU2ZTFmXHU2ZTQzXHU2ZTNhXHU2ZTRlXHU2ZTI0XHU2ZWZmXHU2ZTFkXHU2ZTM4XHU2ZTgyXHU2ZWFhXHU2ZTk4XHU2ZWM5XHU2ZWI3XHU2ZWQzXHU2ZWJkXHU2ZWFmXHU2ZWM0XHU2ZWIyXHU2ZWQ0XHU2ZWQ1XHU2ZThmXHU2ZWE1XHU2ZWMyXHU2ZTlm''@;'; put 'put ''XHU2ZjQxXHU2ZjExXHU3MDRjXHU2ZWVjXHU2ZWY4XHU2ZWZlXHU2ZjNmXHU2ZWYyXHU2ZjMxXHU2ZWVmXHU2ZjMyXHU2ZWNjIl0sWyJkZmExIiwiXHU2ZjNlXHU2ZjEzXHU2ZWY3XHU2Zjg2XHU2ZjdhXHU2Zjc4XHU2ZjgxXHU2ZjgwXHU2ZjZmXHU2ZjViXHU2ZmYzXHU2ZjZkXHU2ZjgyXHU2''@;'; put 'put ''ZjdjXHU2ZjU4XHU2ZjhlXHU2ZjkxXHU2ZmMyXHU2ZjY2XHU2ZmIzXHU2ZmEzXHU2ZmExXHU2ZmE0XHU2ZmI5XHU2ZmM2XHU2ZmFhXHU2ZmRmXHU2ZmQ1XHU2ZmVjXHU2ZmQ0XHU2ZmQ4XHU2ZmYxXHU2ZmVlXHU2ZmRiXHU3MDA5XHU3MDBiXHU2ZmZhXHU3MDExXHU3MDAxXHU3MDBmXHU2ZmZl''@;'; put 'put ''XHU3MDFiXHU3MDFhXHU2Zjc0XHU3MDFkXHU3MDE4XHU3MDFmXHU3MDMwXHU3MDNlXHU3MDMyXHU3MDUxXHU3MDYzXHU3MDk5XHU3MDkyXHU3MGFmXHU3MGYxXHU3MGFjXHU3MGI4XHU3MGIzXHU3MGFlXHU3MGRmXHU3MGNiXHU3MGRkXHU3MGQ5XHU3MTA5XHU3MGZkXHU3MTFjXHU3MTE5XHU3''@;'; put 'put ''MTY1XHU3MTU1XHU3MTg4XHU3MTY2XHU3MTYyXHU3MTRjXHU3MTU2XHU3MTZjXHU3MThmXHU3MWZiXHU3MTg0XHU3MTk1XHU3MWE4XHU3MWFjXHU3MWQ3XHU3MWI5XHU3MWJlXHU3MWQyXHU3MWM5XHU3MWQ0XHU3MWNlXHU3MWUwXHU3MWVjXHU3MWU3XHU3MWY1XHU3MWZjIl0sWyJlMGExIiwi''@;'; put 'put ''XHU3MWY5XHU3MWZmXHU3MjBkXHU3MjEwXHU3MjFiXHU3MjI4XHU3MjJkXHU3MjJjXHU3MjMwXHU3MjMyXHU3MjNiXHU3MjNjXHU3MjNmXHU3MjQwXHU3MjQ2XHU3MjRiXHU3MjU4XHU3Mjc0XHU3MjdlXHU3MjgyXHU3MjgxXHU3Mjg3XHU3MjkyXHU3Mjk2XHU3MmEyXHU3MmE3XHU3MmI5XHU3''@;'; put 'put ''MmIyXHU3MmMzXHU3MmM2XHU3MmM0XHU3MmNlXHU3MmQyXHU3MmUyXHU3MmUwXHU3MmUxXHU3MmY5XHU3MmY3XHU1MDBmXHU3MzE3XHU3MzBhXHU3MzFjXHU3MzE2XHU3MzFkXHU3MzM0XHU3MzJmXHU3MzI5XHU3MzI1XHU3MzNlXHU3MzRlXHU3MzRmXHU5ZWQ4XHU3MzU3XHU3MzZhXHU3MzY4''@;'; put 'put ''XHU3MzcwXHU3Mzc4XHU3Mzc1XHU3MzdiXHU3MzdhXHU3M2M4XHU3M2IzXHU3M2NlXHU3M2JiXHU3M2MwXHU3M2U1XHU3M2VlXHU3M2RlXHU3NGEyXHU3NDA1XHU3NDZmXHU3NDI1XHU3M2Y4XHU3NDMyXHU3NDNhXHU3NDU1XHU3NDNmXHU3NDVmXHU3NDU5XHU3NDQxXHU3NDVjXHU3NDY5XHU3''@;'; put 'put ''NDcwXHU3NDYzXHU3NDZhXHU3NDc2XHU3NDdlXHU3NDhiXHU3NDllXHU3NGE3XHU3NGNhXHU3NGNmXHU3NGQ0XHU3M2YxIl0sWyJlMWExIiwiXHU3NGUwXHU3NGUzXHU3NGU3XHU3NGU5XHU3NGVlXHU3NGYyXHU3NGYwXHU3NGYxXHU3NGY4XHU3NGY3XHU3NTA0XHU3NTAzXHU3NTA1XHU3NTBj''@;'; put 'put ''XHU3NTBlXHU3NTBkXHU3NTE1XHU3NTEzXHU3NTFlXHU3NTI2XHU3NTJjXHU3NTNjXHU3NTQ0XHU3NTRkXHU3NTRhXHU3NTQ5XHU3NTViXHU3NTQ2XHU3NTVhXHU3NTY5XHU3NTY0XHU3NTY3XHU3NTZiXHU3NTZkXHU3NTc4XHU3NTc2XHU3NTg2XHU3NTg3XHU3NTc0XHU3NThhXHU3NTg5XHU3''@;'; put 'put ''NTgyXHU3NTk0XHU3NTlhXHU3NTlkXHU3NWE1XHU3NWEzXHU3NWMyXHU3NWIzXHU3NWMzXHU3NWI1XHU3NWJkXHU3NWI4XHU3NWJjXHU3NWIxXHU3NWNkXHU3NWNhXHU3NWQyXHU3NWQ5XHU3NWUzXHU3NWRlXHU3NWZlXHU3NWZmXHU3NWZjXHU3NjAxXHU3NWYwXHU3NWZhXHU3NWYyXHU3NWYz''@;'; put 'put ''XHU3NjBiXHU3NjBkXHU3NjA5XHU3NjFmXHU3NjI3XHU3NjIwXHU3NjIxXHU3NjIyXHU3NjI0XHU3NjM0XHU3NjMwXHU3NjNiXHU3NjQ3XHU3NjQ4XHU3NjQ2XHU3NjVjXHU3NjU4XHU3NjYxXHU3NjYyXHU3NjY4XHU3NjY5XHU3NjZhXHU3NjY3XHU3NjZjXHU3NjcwIl0sWyJlMmExIiwiXHU3''@;'; put 'put ''NjcyXHU3Njc2XHU3Njc4XHU3NjdjXHU3NjgwXHU3NjgzXHU3Njg4XHU3NjhiXHU3NjhlXHU3Njk2XHU3NjkzXHU3Njk5XHU3NjlhXHU3NmIwXHU3NmI0XHU3NmI4XHU3NmI5XHU3NmJhXHU3NmMyXHU3NmNkXHU3NmQ2XHU3NmQyXHU3NmRlXHU3NmUxXHU3NmU1XHU3NmU3XHU3NmVhXHU4NjJm''@;'; put 'put ''XHU3NmZiXHU3NzA4XHU3NzA3XHU3NzA0XHU3NzI5XHU3NzI0XHU3NzFlXHU3NzI1XHU3NzI2XHU3NzFiXHU3NzM3XHU3NzM4XHU3NzQ3XHU3NzVhXHU3NzY4XHU3NzZiXHU3NzViXHU3NzY1XHU3NzdmXHU3NzdlXHU3Nzc5XHU3NzhlXHU3NzhiXHU3NzkxXHU3N2EwXHU3NzllXHU3N2IwXHU3''@;'; put 'put ''N2I2XHU3N2I5XHU3N2JmXHU3N2JjXHU3N2JkXHU3N2JiXHU3N2M3XHU3N2NkXHU3N2Q3XHU3N2RhXHU3N2RjXHU3N2UzXHU3N2VlXHU3N2ZjXHU3ODBjXHU3ODEyXHU3OTI2XHU3ODIwXHU3OTJhXHU3ODQ1XHU3ODhlXHU3ODc0XHU3ODg2XHU3ODdjXHU3ODlhXHU3ODhjXHU3OGEzXHU3OGI1''@;'; put 'put ''XHU3OGFhXHU3OGFmXHU3OGQxXHU3OGM2XHU3OGNiXHU3OGQ0XHU3OGJlXHU3OGJjXHU3OGM1XHU3OGNhXHU3OGVjIl0sWyJlM2ExIiwiXHU3OGU3XHU3OGRhXHU3OGZkXHU3OGY0XHU3OTA3XHU3OTEyXHU3OTExXHU3OTE5XHU3OTJjXHU3OTJiXHU3OTQwXHU3OTYwXHU3OTU3XHU3OTVmXHU3''@;'; put 'put ''OTVhXHU3OTU1XHU3OTUzXHU3OTdhXHU3OTdmXHU3OThhXHU3OTlkXHU3OWE3XHU5ZjRiXHU3OWFhXHU3OWFlXHU3OWIzXHU3OWI5XHU3OWJhXHU3OWM5XHU3OWQ1XHU3OWU3XHU3OWVjXHU3OWUxXHU3OWUzXHU3YTA4XHU3YTBkXHU3YTE4XHU3YTE5XHU3YTIwXHU3YTFmXHU3OTgwXHU3YTMx''@;'; put 'put ''XHU3YTNiXHU3YTNlXHU3YTM3XHU3YTQzXHU3YTU3XHU3YTQ5XHU3YTYxXHU3YTYyXHU3YTY5XHU5ZjlkXHU3YTcwXHU3YTc5XHU3YTdkXHU3YTg4XHU3YTk3XHU3YTk1XHU3YTk4XHU3YTk2XHU3YWE5XHU3YWM4XHU3YWIwXHU3YWI2XHU3YWM1XHU3YWM0XHU3YWJmXHU5MDgzXHU3YWM3XHU3''@;'; put 'put ''YWNhXHU3YWNkXHU3YWNmXHU3YWQ1XHU3YWQzXHU3YWQ5XHU3YWRhXHU3YWRkXHU3YWUxXHU3YWUyXHU3YWU2XHU3YWVkXHU3YWYwXHU3YjAyXHU3YjBmXHU3YjBhXHU3YjA2XHU3YjMzXHU3YjE4XHU3YjE5XHU3YjFlXHU3YjM1XHU3YjI4XHU3YjM2XHU3YjUwIl0sWyJlNGExIiwiXHU3Yjdh''@;'; put 'put ''XHU3YjA0XHU3YjRkXHU3YjBiXHU3YjRjXHU3YjQ1XHU3Yjc1XHU3YjY1XHU3Yjc0XHU3YjY3XHU3YjcwXHU3YjcxXHU3YjZjXHU3YjZlXHU3YjlkXHU3Yjk4XHU3YjlmXHU3YjhkXHU3YjljXHU3YjlhXHU3YjhiXHU3YjkyXHU3YjhmXHU3YjVkXHU3Yjk5XHU3YmNiXHU3YmMxXHU3YmNjXHU3''@;'; put 'put ''YmNmXHU3YmI0XHU3YmM2XHU3YmRkXHU3YmU5XHU3YzExXHU3YzE0XHU3YmU2XHU3YmU1XHU3YzYwXHU3YzAwXHU3YzA3XHU3YzEzXHU3YmYzXHU3YmY3XHU3YzE3XHU3YzBkXHU3YmY2XHU3YzIzXHU3YzI3XHU3YzJhXHU3YzFmXHU3YzM3XHU3YzJiXHU3YzNkXHU3YzRjXHU3YzQzXHU3YzU0''@;'; put 'put ''XHU3YzRmXHU3YzQwXHU3YzUwXHU3YzU4XHU3YzVmXHU3YzY0XHU3YzU2XHU3YzY1XHU3YzZjXHU3Yzc1XHU3YzgzXHU3YzkwXHU3Y2E0XHU3Y2FkXHU3Y2EyXHU3Y2FiXHU3Y2ExXHU3Y2E4XHU3Y2IzXHU3Y2IyXHU3Y2IxXHU3Y2FlXHU3Y2I5XHU3Y2JkXHU3Y2MwXHU3Y2M1XHU3Y2MyXHU3''@;'; put 'put ''Y2Q4XHU3Y2QyXHU3Y2RjXHU3Y2UyXHU5YjNiXHU3Y2VmXHU3Y2YyXHU3Y2Y0XHU3Y2Y2XHU3Y2ZhXHU3ZDA2Il0sWyJlNWExIiwiXHU3ZDAyXHU3ZDFjXHU3ZDE1XHU3ZDBhXHU3ZDQ1XHU3ZDRiXHU3ZDJlXHU3ZDMyXHU3ZDNmXHU3ZDM1XHU3ZDQ2XHU3ZDczXHU3ZDU2XHU3ZDRlXHU3ZDcy''@;'; put 'put ''XHU3ZDY4XHU3ZDZlXHU3ZDRmXHU3ZDYzXHU3ZDkzXHU3ZDg5XHU3ZDViXHU3ZDhmXHU3ZDdkXHU3ZDliXHU3ZGJhXHU3ZGFlXHU3ZGEzXHU3ZGI1XHU3ZGM3XHU3ZGJkXHU3ZGFiXHU3ZTNkXHU3ZGEyXHU3ZGFmXHU3ZGRjXHU3ZGI4XHU3ZDlmXHU3ZGIwXHU3ZGQ4XHU3ZGRkXHU3ZGU0XHU3''@;'; put 'put ''ZGRlXHU3ZGZiXHU3ZGYyXHU3ZGUxXHU3ZTA1XHU3ZTBhXHU3ZTIzXHU3ZTIxXHU3ZTEyXHU3ZTMxXHU3ZTFmXHU3ZTA5XHU3ZTBiXHU3ZTIyXHU3ZTQ2XHU3ZTY2XHU3ZTNiXHU3ZTM1XHU3ZTM5XHU3ZTQzXHU3ZTM3XHU3ZTMyXHU3ZTNhXHU3ZTY3XHU3ZTVkXHU3ZTU2XHU3ZTVlXHU3ZTU5''@;'; put 'put ''XHU3ZTVhXHU3ZTc5XHU3ZTZhXHU3ZTY5XHU3ZTdjXHU3ZTdiXHU3ZTgzXHU3ZGQ1XHU3ZTdkXHU4ZmFlXHU3ZTdmXHU3ZTg4XHU3ZTg5XHU3ZThjXHU3ZTkyXHU3ZTkwXHU3ZTkzXHU3ZTk0XHU3ZTk2XHU3ZThlXHU3ZTliXHU3ZTljXHU3ZjM4XHU3ZjNhIl0sWyJlNmExIiwiXHU3ZjQ1XHU3''@;'; put 'put ''ZjRjXHU3ZjRkXHU3ZjRlXHU3ZjUwXHU3ZjUxXHU3ZjU1XHU3ZjU0XHU3ZjU4XHU3ZjVmXHU3ZjYwXHU3ZjY4XHU3ZjY5XHU3ZjY3XHU3Zjc4XHU3ZjgyXHU3Zjg2XHU3ZjgzXHU3Zjg4XHU3Zjg3XHU3ZjhjXHU3Zjk0XHU3ZjllXHU3ZjlkXHU3ZjlhXHU3ZmEzXHU3ZmFmXHU3ZmIyXHU3ZmI5''@;'; put 'put ''XHU3ZmFlXHU3ZmI2XHU3ZmI4XHU4YjcxXHU3ZmM1XHU3ZmM2XHU3ZmNhXHU3ZmQ1XHU3ZmQ0XHU3ZmUxXHU3ZmU2XHU3ZmU5XHU3ZmYzXHU3ZmY5XHU5OGRjXHU4MDA2XHU4MDA0XHU4MDBiXHU4MDEyXHU4MDE4XHU4MDE5XHU4MDFjXHU4MDIxXHU4MDI4XHU4MDNmXHU4MDNiXHU4MDRhXHU4''@;'; put 'put ''MDQ2XHU4MDUyXHU4MDU4XHU4MDVhXHU4MDVmXHU4MDYyXHU4MDY4XHU4MDczXHU4MDcyXHU4MDcwXHU4MDc2XHU4MDc5XHU4MDdkXHU4MDdmXHU4MDg0XHU4MDg2XHU4MDg1XHU4MDliXHU4MDkzXHU4MDlhXHU4MGFkXHU1MTkwXHU4MGFjXHU4MGRiXHU4MGU1XHU4MGQ5XHU4MGRkXHU4MGM0''@;'; put 'put ''XHU4MGRhXHU4MGQ2XHU4MTA5XHU4MGVmXHU4MGYxXHU4MTFiXHU4MTI5XHU4MTIzXHU4MTJmXHU4MTRiIl0sWyJlN2ExIiwiXHU5NjhiXHU4MTQ2XHU4MTNlXHU4MTUzXHU4MTUxXHU4MGZjXHU4MTcxXHU4MTZlXHU4MTY1XHU4MTY2XHU4MTc0XHU4MTgzXHU4MTg4XHU4MThhXHU4MTgwXHU4''@;'; put 'put ''MTgyXHU4MWEwXHU4MTk1XHU4MWE0XHU4MWEzXHU4MTVmXHU4MTkzXHU4MWE5XHU4MWIwXHU4MWI1XHU4MWJlXHU4MWI4XHU4MWJkXHU4MWMwXHU4MWMyXHU4MWJhXHU4MWM5XHU4MWNkXHU4MWQxXHU4MWQ5XHU4MWQ4XHU4MWM4XHU4MWRhXHU4MWRmXHU4MWUwXHU4MWU3XHU4MWZhXHU4MWZi''@;'; put 'put ''XHU4MWZlXHU4MjAxXHU4MjAyXHU4MjA1XHU4MjA3XHU4MjBhXHU4MjBkXHU4MjEwXHU4MjE2XHU4MjI5XHU4MjJiXHU4MjM4XHU4MjMzXHU4MjQwXHU4MjU5XHU4MjU4XHU4MjVkXHU4MjVhXHU4MjVmXHU4MjY0XHU4MjYyXHU4MjY4XHU4MjZhXHU4MjZiXHU4MjJlXHU4MjcxXHU4Mjc3XHU4''@;'; put 'put ''Mjc4XHU4MjdlXHU4MjhkXHU4MjkyXHU4MmFiXHU4MjlmXHU4MmJiXHU4MmFjXHU4MmUxXHU4MmUzXHU4MmRmXHU4MmQyXHU4MmY0XHU4MmYzXHU4MmZhXHU4MzkzXHU4MzAzXHU4MmZiXHU4MmY5XHU4MmRlXHU4MzA2XHU4MmRjXHU4MzA5XHU4MmQ5Il0sWyJlOGExIiwiXHU4MzM1XHU4MzM0''@;'; put 'put ''XHU4MzE2XHU4MzMyXHU4MzMxXHU4MzQwXHU4MzM5XHU4MzUwXHU4MzQ1XHU4MzJmXHU4MzJiXHU4MzE3XHU4MzE4XHU4Mzg1XHU4MzlhXHU4M2FhXHU4MzlmXHU4M2EyXHU4Mzk2XHU4MzIzXHU4MzhlXHU4Mzg3XHU4MzhhXHU4MzdjXHU4M2I1XHU4MzczXHU4Mzc1XHU4M2EwXHU4Mzg5XHU4''@;'; put 'put ''M2E4XHU4M2Y0XHU4NDEzXHU4M2ViXHU4M2NlXHU4M2ZkXHU4NDAzXHU4M2Q4XHU4NDBiXHU4M2MxXHU4M2Y3XHU4NDA3XHU4M2UwXHU4M2YyXHU4NDBkXHU4NDIyXHU4NDIwXHU4M2JkXHU4NDM4XHU4NTA2XHU4M2ZiXHU4NDZkXHU4NDJhXHU4NDNjXHU4NTVhXHU4NDg0XHU4NDc3XHU4NDZi''@;'; put 'put ''XHU4NGFkXHU4NDZlXHU4NDgyXHU4NDY5XHU4NDQ2XHU4NDJjXHU4NDZmXHU4NDc5XHU4NDM1XHU4NGNhXHU4NDYyXHU4NGI5XHU4NGJmXHU4NDlmXHU4NGQ5XHU4NGNkXHU4NGJiXHU4NGRhXHU4NGQwXHU4NGMxXHU4NGM2XHU4NGQ2XHU4NGExXHU4NTIxXHU4NGZmXHU4NGY0XHU4NTE3XHU4''@;'; put 'put ''NTE4XHU4NTJjXHU4NTFmXHU4NTE1XHU4NTE0XHU4NGZjXHU4NTQwXHU4NTYzXHU4NTU4XHU4NTQ4Il0sWyJlOWExIiwiXHU4NTQxXHU4NjAyXHU4NTRiXHU4NTU1XHU4NTgwXHU4NWE0XHU4NTg4XHU4NTkxXHU4NThhXHU4NWE4XHU4NTZkXHU4NTk0XHU4NTliXHU4NWVhXHU4NTg3XHU4NTlj''@;'; put 'put ''XHU4NTc3XHU4NTdlXHU4NTkwXHU4NWM5XHU4NWJhXHU4NWNmXHU4NWI5XHU4NWQwXHU4NWQ1XHU4NWRkXHU4NWU1XHU4NWRjXHU4NWY5XHU4NjBhXHU4NjEzXHU4NjBiXHU4NWZlXHU4NWZhXHU4NjA2XHU4NjIyXHU4NjFhXHU4NjMwXHU4NjNmXHU4NjRkXHU0ZTU1XHU4NjU0XHU4NjVmXHU4''@;'; put 'put ''NjY3XHU4NjcxXHU4NjkzXHU4NmEzXHU4NmE5XHU4NmFhXHU4NjhiXHU4NjhjXHU4NmI2XHU4NmFmXHU4NmM0XHU4NmM2XHU4NmIwXHU4NmM5XHU4ODIzXHU4NmFiXHU4NmQ0XHU4NmRlXHU4NmU5XHU4NmVjXHU4NmRmXHU4NmRiXHU4NmVmXHU4NzEyXHU4NzA2XHU4NzA4XHU4NzAwXHU4NzAz''@;'; put 'put ''XHU4NmZiXHU4NzExXHU4NzA5XHU4NzBkXHU4NmY5XHU4NzBhXHU4NzM0XHU4NzNmXHU4NzM3XHU4NzNiXHU4NzI1XHU4NzI5XHU4NzFhXHU4NzYwXHU4NzVmXHU4Nzc4XHU4NzRjXHU4NzRlXHU4Nzc0XHU4NzU3XHU4NzY4XHU4NzZlXHU4NzU5Il0sWyJlYWExIiwiXHU4NzUzXHU4NzYzXHU4''@;'; put 'put ''NzZhXHU4ODA1XHU4N2EyXHU4NzlmXHU4NzgyXHU4N2FmXHU4N2NiXHU4N2JkXHU4N2MwXHU4N2QwXHU5NmQ2XHU4N2FiXHU4N2M0XHU4N2IzXHU4N2M3XHU4N2M2XHU4N2JiXHU4N2VmXHU4N2YyXHU4N2UwXHU4ODBmXHU4ODBkXHU4N2ZlXHU4N2Y2XHU4N2Y3XHU4ODBlXHU4N2QyXHU4ODEx''@;'; put 'put ''XHU4ODE2XHU4ODE1XHU4ODIyXHU4ODIxXHU4ODMxXHU4ODM2XHU4ODM5XHU4ODI3XHU4ODNiXHU4ODQ0XHU4ODQyXHU4ODUyXHU4ODU5XHU4ODVlXHU4ODYyXHU4ODZiXHU4ODgxXHU4ODdlXHU4ODllXHU4ODc1XHU4ODdkXHU4OGI1XHU4ODcyXHU4ODgyXHU4ODk3XHU4ODkyXHU4OGFlXHU4''@;'; put 'put ''ODk5XHU4OGEyXHU4ODhkXHU4OGE0XHU4OGIwXHU4OGJmXHU4OGIxXHU4OGMzXHU4OGM0XHU4OGQ0XHU4OGQ4XHU4OGQ5XHU4OGRkXHU4OGY5XHU4OTAyXHU4OGZjXHU4OGY0XHU4OGU4XHU4OGYyXHU4OTA0XHU4OTBjXHU4OTBhXHU4OTEzXHU4OTQzXHU4OTFlXHU4OTI1XHU4OTJhXHU4OTJi''@;'; put 'put ''XHU4OTQxXHU4OTQ0XHU4OTNiXHU4OTM2XHU4OTM4XHU4OTRjXHU4OTFkXHU4OTYwXHU4OTVlIl0sWyJlYmExIiwiXHU4OTY2XHU4OTY0XHU4OTZkXHU4OTZhXHU4OTZmXHU4OTc0XHU4OTc3XHU4OTdlXHU4OTgzXHU4OTg4XHU4OThhXHU4OTkzXHU4OTk4XHU4OWExXHU4OWE5XHU4OWE2XHU4''@;'; put 'put ''OWFjXHU4OWFmXHU4OWIyXHU4OWJhXHU4OWJkXHU4OWJmXHU4OWMwXHU4OWRhXHU4OWRjXHU4OWRkXHU4OWU3XHU4OWY0XHU4OWY4XHU4YTAzXHU4YTE2XHU4YTEwXHU4YTBjXHU4YTFiXHU4YTFkXHU4YTI1XHU4YTM2XHU4YTQxXHU4YTViXHU4YTUyXHU4YTQ2XHU4YTQ4XHU4YTdjXHU4YTZk''@;'; put 'put ''XHU4YTZjXHU4YTYyXHU4YTg1XHU4YTgyXHU4YTg0XHU4YWE4XHU4YWExXHU4YTkxXHU4YWE1XHU4YWE2XHU4YTlhXHU4YWEzXHU4YWM0XHU4YWNkXHU4YWMyXHU4YWRhXHU4YWViXHU4YWYzXHU4YWU3XHU4YWU0XHU4YWYxXHU4YjE0XHU4YWUwXHU4YWUyXHU4YWY3XHU4YWRlXHU4YWRiXHU4''@;'; put 'put ''YjBjXHU4YjA3XHU4YjFhXHU4YWUxXHU4YjE2XHU4YjEwXHU4YjE3XHU4YjIwXHU4YjMzXHU5N2FiXHU4YjI2XHU4YjJiXHU4YjNlXHU4YjI4XHU4YjQxXHU4YjRjXHU4YjRmXHU4YjRlXHU4YjQ5XHU4YjU2XHU4YjViXHU4YjVhXHU4YjZiIl0sWyJlY2ExIiwiXHU4YjVmXHU4YjZjXHU4YjZm''@;'; put 'put ''XHU4Yjc0XHU4YjdkXHU4YjgwXHU4YjhjXHU4YjhlXHU4YjkyXHU4YjkzXHU4Yjk2XHU4Yjk5XHU4YjlhXHU4YzNhXHU4YzQxXHU4YzNmXHU4YzQ4XHU4YzRjXHU4YzRlXHU4YzUwXHU4YzU1XHU4YzYyXHU4YzZjXHU4Yzc4XHU4YzdhXHU4YzgyXHU4Yzg5XHU4Yzg1XHU4YzhhXHU4YzhkXHU4''@;'; put 'put ''YzhlXHU4Yzk0XHU4YzdjXHU4Yzk4XHU2MjFkXHU4Y2FkXHU4Y2FhXHU4Y2JkXHU4Y2IyXHU4Y2IzXHU4Y2FlXHU4Y2I2XHU4Y2M4XHU4Y2MxXHU4Y2U0XHU4Y2UzXHU4Y2RhXHU4Y2ZkXHU4Y2ZhXHU4Y2ZiXHU4ZDA0XHU4ZDA1XHU4ZDBhXHU4ZDA3XHU4ZDBmXHU4ZDBkXHU4ZDEwXHU5ZjRl''@;'; put 'put ''XHU4ZDEzXHU4Y2NkXHU4ZDE0XHU4ZDE2XHU4ZDY3XHU4ZDZkXHU4ZDcxXHU4ZDczXHU4ZDgxXHU4ZDk5XHU4ZGMyXHU4ZGJlXHU4ZGJhXHU4ZGNmXHU4ZGRhXHU4ZGQ2XHU4ZGNjXHU4ZGRiXHU4ZGNiXHU4ZGVhXHU4ZGViXHU4ZGRmXHU4ZGUzXHU4ZGZjXHU4ZTA4XHU4ZTA5XHU4ZGZmXHU4''@;'; put 'put ''ZTFkXHU4ZTFlXHU4ZTEwXHU4ZTFmXHU4ZTQyXHU4ZTM1XHU4ZTMwXHU4ZTM0XHU4ZTRhIl0sWyJlZGExIiwiXHU4ZTQ3XHU4ZTQ5XHU4ZTRjXHU4ZTUwXHU4ZTQ4XHU4ZTU5XHU4ZTY0XHU4ZTYwXHU4ZTJhXHU4ZTYzXHU4ZTU1XHU4ZTc2XHU4ZTcyXHU4ZTdjXHU4ZTgxXHU4ZTg3XHU4ZTg1''@;'; put 'put ''XHU4ZTg0XHU4ZThiXHU4ZThhXHU4ZTkzXHU4ZTkxXHU4ZTk0XHU4ZTk5XHU4ZWFhXHU4ZWExXHU4ZWFjXHU4ZWIwXHU4ZWM2XHU4ZWIxXHU4ZWJlXHU4ZWM1XHU4ZWM4XHU4ZWNiXHU4ZWRiXHU4ZWUzXHU4ZWZjXHU4ZWZiXHU4ZWViXHU4ZWZlXHU4ZjBhXHU4ZjA1XHU4ZjE1XHU4ZjEyXHU4''@;'; put 'put ''ZjE5XHU4ZjEzXHU4ZjFjXHU4ZjFmXHU4ZjFiXHU4ZjBjXHU4ZjI2XHU4ZjMzXHU4ZjNiXHU4ZjM5XHU4ZjQ1XHU4ZjQyXHU4ZjNlXHU4ZjRjXHU4ZjQ5XHU4ZjQ2XHU4ZjRlXHU4ZjU3XHU4ZjVjXHU4ZjYyXHU4ZjYzXHU4ZjY0XHU4ZjljXHU4ZjlmXHU4ZmEzXHU4ZmFkXHU4ZmFmXHU4ZmI3''@;'; put 'put ''XHU4ZmRhXHU4ZmU1XHU4ZmUyXHU4ZmVhXHU4ZmVmXHU5MDg3XHU4ZmY0XHU5MDA1XHU4ZmY5XHU4ZmZhXHU5MDExXHU5MDE1XHU5MDIxXHU5MDBkXHU5MDFlXHU5MDE2XHU5MDBiXHU5MDI3XHU5MDM2XHU5MDM1XHU5MDM5XHU4ZmY4Il0sWyJlZWExIiwiXHU5MDRmXHU5MDUwXHU5MDUxXHU5''@;'; put 'put ''MDUyXHU5MDBlXHU5MDQ5XHU5MDNlXHU5MDU2XHU5MDU4XHU5MDVlXHU5MDY4XHU5MDZmXHU5MDc2XHU5NmE4XHU5MDcyXHU5MDgyXHU5MDdkXHU5MDgxXHU5MDgwXHU5MDhhXHU5MDg5XHU5MDhmXHU5MGE4XHU5MGFmXHU5MGIxXHU5MGI1XHU5MGUyXHU5MGU0XHU2MjQ4XHU5MGRiXHU5MTAy''@;'; put 'put ''XHU5MTEyXHU5MTE5XHU5MTMyXHU5MTMwXHU5MTRhXHU5MTU2XHU5MTU4XHU5MTYzXHU5MTY1XHU5MTY5XHU5MTczXHU5MTcyXHU5MThiXHU5MTg5XHU5MTgyXHU5MWEyXHU5MWFiXHU5MWFmXHU5MWFhXHU5MWI1XHU5MWI0XHU5MWJhXHU5MWMwXHU5MWMxXHU5MWM5XHU5MWNiXHU5MWQwXHU5''@;'; put 'put ''MWQ2XHU5MWRmXHU5MWUxXHU5MWRiXHU5MWZjXHU5MWY1XHU5MWY2XHU5MjFlXHU5MWZmXHU5MjE0XHU5MjJjXHU5MjE1XHU5MjExXHU5MjVlXHU5MjU3XHU5MjQ1XHU5MjQ5XHU5MjY0XHU5MjQ4XHU5Mjk1XHU5MjNmXHU5MjRiXHU5MjUwXHU5MjljXHU5Mjk2XHU5MjkzXHU5MjliXHU5MjVh''@;'; put 'put ''XHU5MmNmXHU5MmI5XHU5MmI3XHU5MmU5XHU5MzBmXHU5MmZhXHU5MzQ0XHU5MzJlIl0sWyJlZmExIiwiXHU5MzE5XHU5MzIyXHU5MzFhXHU5MzIzXHU5MzNhXHU5MzM1XHU5MzNiXHU5MzVjXHU5MzYwXHU5MzdjXHU5MzZlXHU5MzU2XHU5M2IwXHU5M2FjXHU5M2FkXHU5Mzk0XHU5M2I5XHU5''@;'; put 'put ''M2Q2XHU5M2Q3XHU5M2U4XHU5M2U1XHU5M2Q4XHU5M2MzXHU5M2RkXHU5M2QwXHU5M2M4XHU5M2U0XHU5NDFhXHU5NDE0XHU5NDEzXHU5NDAzXHU5NDA3XHU5NDEwXHU5NDM2XHU5NDJiXHU5NDM1XHU5NDIxXHU5NDNhXHU5NDQxXHU5NDUyXHU5NDQ0XHU5NDViXHU5NDYwXHU5NDYyXHU5NDVl''@;'; put 'put ''XHU5NDZhXHU5MjI5XHU5NDcwXHU5NDc1XHU5NDc3XHU5NDdkXHU5NDVhXHU5NDdjXHU5NDdlXHU5NDgxXHU5NDdmXHU5NTgyXHU5NTg3XHU5NThhXHU5NTk0XHU5NTk2XHU5NTk4XHU5NTk5XHU5NWEwXHU5NWE4XHU5NWE3XHU5NWFkXHU5NWJjXHU5NWJiXHU5NWI5XHU5NWJlXHU5NWNhXHU2''@;'; put 'put ''ZmY2XHU5NWMzXHU5NWNkXHU5NWNjXHU5NWQ1XHU5NWQ0XHU5NWQ2XHU5NWRjXHU5NWUxXHU5NWU1XHU5NWUyXHU5NjIxXHU5NjI4XHU5NjJlXHU5NjJmXHU5NjQyXHU5NjRjXHU5NjRmXHU5NjRiXHU5Njc3XHU5NjVjXHU5NjVlIl0sWyJmMGExIiwiXHU5NjVkXHU5NjVmXHU5NjY2XHU5Njcy''@;'; put 'put ''XHU5NjZjXHU5NjhkXHU5Njk4XHU5Njk1XHU5Njk3XHU5NmFhXHU5NmE3XHU5NmIxXHU5NmIyXHU5NmIwXHU5NmI0XHU5NmI2XHU5NmI4XHU5NmI5XHU5NmNlXHU5NmNiXHU5NmM5XHU5NmNkXHU4OTRkXHU5NmRjXHU5NzBkXHU5NmQ1XHU5NmY5XHU5NzA0XHU5NzA2XHU5NzA4XHU5NzEzXHU5''@;'; put 'put ''NzBlXHU5NzExXHU5NzBmXHU5NzE2XHU5NzE5XHU5NzI0XHU5NzJhXHU5NzMwXHU5NzM5XHU5NzNkXHU5NzNlXHU5NzQ0XHU5NzQ2XHU5NzQ4XHU5NzQyXHU5NzQ5XHU5NzVjXHU5NzYwXHU5NzY0XHU5NzY2XHU5NzY4XHU1MmQyXHU5NzZiXHU5NzcxXHU5Nzc5XHU5Nzg1XHU5NzdjXHU5Nzgx''@;'; put 'put ''XHU5NzdhXHU5Nzg2XHU5NzhiXHU5NzhmXHU5NzkwXHU5NzljXHU5N2E4XHU5N2E2XHU5N2EzXHU5N2IzXHU5N2I0XHU5N2MzXHU5N2M2XHU5N2M4XHU5N2NiXHU5N2RjXHU5N2VkXHU5ZjRmXHU5N2YyXHU3YWRmXHU5N2Y2XHU5N2Y1XHU5ODBmXHU5ODBjXHU5ODM4XHU5ODI0XHU5ODIxXHU5''@;'; put 'put ''ODM3XHU5ODNkXHU5ODQ2XHU5ODRmXHU5ODRiXHU5ODZiXHU5ODZmXHU5ODcwIl0sWyJmMWExIiwiXHU5ODcxXHU5ODc0XHU5ODczXHU5OGFhXHU5OGFmXHU5OGIxXHU5OGI2XHU5OGM0XHU5OGMzXHU5OGM2XHU5OGU5XHU5OGViXHU5OTAzXHU5OTA5XHU5OTEyXHU5OTE0XHU5OTE4XHU5OTIx''@;'; put 'put ''XHU5OTFkXHU5OTFlXHU5OTI0XHU5OTIwXHU5OTJjXHU5OTJlXHU5OTNkXHU5OTNlXHU5OTQyXHU5OTQ5XHU5OTQ1XHU5OTUwXHU5OTRiXHU5OTUxXHU5OTUyXHU5OTRjXHU5OTU1XHU5OTk3XHU5OTk4XHU5OWE1XHU5OWFkXHU5OWFlXHU5OWJjXHU5OWRmXHU5OWRiXHU5OWRkXHU5OWQ4XHU5''@;'; put 'put ''OWQxXHU5OWVkXHU5OWVlXHU5OWYxXHU5OWYyXHU5OWZiXHU5OWY4XHU5YTAxXHU5YTBmXHU5YTA1XHU5OWUyXHU5YTE5XHU5YTJiXHU5YTM3XHU5YTQ1XHU5YTQyXHU5YTQwXHU5YTQzXHU5YTNlXHU5YTU1XHU5YTRkXHU5YTViXHU5YTU3XHU5YTVmXHU5YTYyXHU5YTY1XHU5YTY0XHU5YTY5''@;'; put 'put ''XHU5YTZiXHU5YTZhXHU5YWFkXHU5YWIwXHU5YWJjXHU5YWMwXHU5YWNmXHU5YWQxXHU5YWQzXHU5YWQ0XHU5YWRlXHU5YWRmXHU5YWUyXHU5YWUzXHU5YWU2XHU5YWVmXHU5YWViXHU5YWVlXHU5YWY0XHU5YWYxXHU5YWY3Il0sWyJmMmExIiwiXHU5YWZiXHU5YjA2XHU5YjE4XHU5YjFhXHU5''@;'; put 'put ''YjFmXHU5YjIyXHU5YjIzXHU5YjI1XHU5YjI3XHU5YjI4XHU5YjI5XHU5YjJhXHU5YjJlXHU5YjJmXHU5YjMyXHU5YjQ0XHU5YjQzXHU5YjRmXHU5YjRkXHU5YjRlXHU5YjUxXHU5YjU4XHU5Yjc0XHU5YjkzXHU5YjgzXHU5YjkxXHU5Yjk2XHU5Yjk3XHU5YjlmXHU5YmEwXHU5YmE4XHU5YmI0''@;'; put 'put ''XHU5YmMwXHU5YmNhXHU5YmI5XHU5YmM2XHU5YmNmXHU5YmQxXHU5YmQyXHU5YmUzXHU5YmUyXHU5YmU0XHU5YmQ0XHU5YmUxXHU5YzNhXHU5YmYyXHU5YmYxXHU5YmYwXHU5YzE1XHU5YzE0XHU5YzA5XHU5YzEzXHU5YzBjXHU5YzA2XHU5YzA4XHU5YzEyXHU5YzBhXHU5YzA0XHU5YzJlXHU5''@;'; put 'put ''YzFiXHU5YzI1XHU5YzI0XHU5YzIxXHU5YzMwXHU5YzQ3XHU5YzMyXHU5YzQ2XHU5YzNlXHU5YzVhXHU5YzYwXHU5YzY3XHU5Yzc2XHU5Yzc4XHU5Y2U3XHU5Y2VjXHU5Y2YwXHU5ZDA5XHU5ZDA4XHU5Y2ViXHU5ZDAzXHU5ZDA2XHU5ZDJhXHU5ZDI2XHU5ZGFmXHU5ZDIzXHU5ZDFmXHU5ZDQ0''@;'; put 'put ''XHU5ZDE1XHU5ZDEyXHU5ZDQxXHU5ZDNmXHU5ZDNlXHU5ZDQ2XHU5ZDQ4Il0sWyJmM2ExIiwiXHU5ZDVkXHU5ZDVlXHU5ZDY0XHU5ZDUxXHU5ZDUwXHU5ZDU5XHU5ZDcyXHU5ZDg5XHU5ZDg3XHU5ZGFiXHU5ZDZmXHU5ZDdhXHU5ZDlhXHU5ZGE0XHU5ZGE5XHU5ZGIyXHU5ZGM0XHU5ZGMxXHU5''@;'; put 'put ''ZGJiXHU5ZGI4XHU5ZGJhXHU5ZGM2XHU5ZGNmXHU5ZGMyXHU5ZGQ5XHU5ZGQzXHU5ZGY4XHU5ZGU2XHU5ZGVkXHU5ZGVmXHU5ZGZkXHU5ZTFhXHU5ZTFiXHU5ZTFlXHU5ZTc1XHU5ZTc5XHU5ZTdkXHU5ZTgxXHU5ZTg4XHU5ZThiXHU5ZThjXHU5ZTkyXHU5ZTk1XHU5ZTkxXHU5ZTlkXHU5ZWE1''@;'; put 'put ''XHU5ZWE5XHU5ZWI4XHU5ZWFhXHU5ZWFkXHU5NzYxXHU5ZWNjXHU5ZWNlXHU5ZWNmXHU5ZWQwXHU5ZWQ0XHU5ZWRjXHU5ZWRlXHU5ZWRkXHU5ZWUwXHU5ZWU1XHU5ZWU4XHU5ZWVmXHU5ZWY0XHU5ZWY2XHU5ZWY3XHU5ZWY5XHU5ZWZiXHU5ZWZjXHU5ZWZkXHU5ZjA3XHU5ZjA4XHU3NmI3XHU5''@;'; put 'put ''ZjE1XHU5ZjIxXHU5ZjJjXHU5ZjNlXHU5ZjRhXHU5ZjUyXHU5ZjU0XHU5ZjYzXHU5ZjVmXHU5ZjYwXHU5ZjYxXHU5ZjY2XHU5ZjY3XHU5ZjZjXHU5ZjZhXHU5Zjc3XHU5ZjcyXHU5Zjc2XHU5Zjk1XHU5ZjljXHU5ZmEwIl0sWyJmNGExIiwiXHU1ODJmXHU2OWM3XHU5MDU5XHU3NDY0XHU1MWRj''@;'; put 'put ''XHU3MTk5Il0sWyJmOWExIiwiXHU3ZThhXHU4OTFjXHU5MzQ4XHU5Mjg4XHU4NGRjXHU0ZmM5XHU3MGJiXHU2NjMxXHU2OGM4XHU5MmY5XHU2NmZiXHU1ZjQ1XHU0ZTI4XHU0ZWUxXHU0ZWZjXHU0ZjAwXHU0ZjAzXHU0ZjM5XHU0ZjU2XHU0ZjkyXHU0ZjhhXHU0ZjlhXHU0Zjk0XHU0ZmNkXHU1''@;'; put 'put ''MDQwXHU1MDIyXHU0ZmZmXHU1MDFlXHU1MDQ2XHU1MDcwXHU1MDQyXHU1MDk0XHU1MGY0XHU1MGQ4XHU1MTRhXHU1MTY0XHU1MTlkXHU1MWJlXHU1MWVjXHU1MjE1XHU1MjljXHU1MmE2XHU1MmMwXHU1MmRiXHU1MzAwXHU1MzA3XHU1MzI0XHU1MzcyXHU1MzkzXHU1M2IyXHU1M2RkXHVmYTBl''@;'; put 'put ''XHU1NDljXHU1NDhhXHU1NGE5XHU1NGZmXHU1NTg2XHU1NzU5XHU1NzY1XHU1N2FjXHU1N2M4XHU1N2M3XHVmYTBmXHVmYTEwXHU1ODllXHU1OGIyXHU1OTBiXHU1OTUzXHU1OTViXHU1OTVkXHU1OTYzXHU1OWE0XHU1OWJhXHU1YjU2XHU1YmMwXHU3NTJmXHU1YmQ4XHU1YmVjXHU1YzFlXHU1''@;'; put 'put ''Y2E2XHU1Y2JhXHU1Y2Y1XHU1ZDI3XHU1ZDUzXHVmYTExXHU1ZDQyXHU1ZDZkXHU1ZGI4XHU1ZGI5XHU1ZGQwXHU1ZjIxXHU1ZjM0XHU1ZjY3XHU1ZmI3Il0sWyJmYWExIiwiXHU1ZmRlXHU2MDVkXHU2MDg1XHU2MDhhXHU2MGRlXHU2MGQ1XHU2MTIwXHU2MGYyXHU2MTExXHU2MTM3XHU2MTMw''@;'; put 'put ''XHU2MTk4XHU2MjEzXHU2MmE2XHU2M2Y1XHU2NDYwXHU2NDlkXHU2NGNlXHU2NTRlXHU2NjAwXHU2NjE1XHU2NjNiXHU2NjA5XHU2NjJlXHU2NjFlXHU2NjI0XHU2NjY1XHU2NjU3XHU2NjU5XHVmYTEyXHU2NjczXHU2Njk5XHU2NmEwXHU2NmIyXHU2NmJmXHU2NmZhXHU2NzBlXHVmOTI5XHU2''@;'; put 'put ''NzY2XHU2N2JiXHU2ODUyXHU2N2MwXHU2ODAxXHU2ODQ0XHU2OGNmXHVmYTEzXHU2OTY4XHVmYTE0XHU2OTk4XHU2OWUyXHU2YTMwXHU2YTZiXHU2YTQ2XHU2YTczXHU2YTdlXHU2YWUyXHU2YWU0XHU2YmQ2XHU2YzNmXHU2YzVjXHU2Yzg2XHU2YzZmXHU2Y2RhXHU2ZDA0XHU2ZDg3XHU2ZDZm''@;'; put 'put ''XHU2ZDk2XHU2ZGFjXHU2ZGNmXHU2ZGY4XHU2ZGYyXHU2ZGZjXHU2ZTM5XHU2ZTVjXHU2ZTI3XHU2ZTNjXHU2ZWJmXHU2Zjg4XHU2ZmI1XHU2ZmY1XHU3MDA1XHU3MDA3XHU3MDI4XHU3MDg1XHU3MGFiXHU3MTBmXHU3MTA0XHU3MTVjXHU3MTQ2XHU3MTQ3XHVmYTE1XHU3MWMxXHU3MWZlXHU3''@;'; put 'put ''MmIxIl0sWyJmYmExIiwiXHU3MmJlXHU3MzI0XHVmYTE2XHU3Mzc3XHU3M2JkXHU3M2M5XHU3M2Q2XHU3M2UzXHU3M2QyXHU3NDA3XHU3M2Y1XHU3NDI2XHU3NDJhXHU3NDI5XHU3NDJlXHU3NDYyXHU3NDg5XHU3NDlmXHU3NTAxXHU3NTZmXHU3NjgyXHU3NjljXHU3NjllXHU3NjliXHU3NmE2''@;'; put 'put ''XHVmYTE3XHU3NzQ2XHU1MmFmXHU3ODIxXHU3ODRlXHU3ODY0XHU3ODdhXHU3OTMwXHVmYTE4XHVmYTE5XHVmYTFhXHU3OTk0XHVmYTFiXHU3OTliXHU3YWQxXHU3YWU3XHVmYTFjXHU3YWViXHU3YjllXHVmYTFkXHU3ZDQ4XHU3ZDVjXHU3ZGI3XHU3ZGEwXHU3ZGQ2XHU3ZTUyXHU3ZjQ3XHU3''@;'; put 'put ''ZmExXHVmYTFlXHU4MzAxXHU4MzYyXHU4MzdmXHU4M2M3XHU4M2Y2XHU4NDQ4XHU4NGI0XHU4NTUzXHU4NTU5XHU4NTZiXHVmYTFmXHU4NWIwXHVmYTIwXHVmYTIxXHU4ODA3XHU4OGY1XHU4YTEyXHU4YTM3XHU4YTc5XHU4YWE3XHU4YWJlXHU4YWRmXHVmYTIyXHU4YWY2XHU4YjUzXHU4Yjdm''@;'; put 'put ''XHU4Y2YwXHU4Y2Y0XHU4ZDEyXHU4ZDc2XHVmYTIzXHU4ZWNmXHVmYTI0XHVmYTI1XHU5MDY3XHU5MGRlXHVmYTI2XHU5MTE1XHU5MTI3XHU5MWRhIl0sWyJmY2ExIiwiXHU5MWQ3XHU5MWRlXHU5MWVkXHU5MWVlXHU5MWU0XHU5MWU1XHU5MjA2XHU5MjEwXHU5MjBhXHU5MjNhXHU5MjQwXHU5''@;'; put 'put ''MjNjXHU5MjRlXHU5MjU5XHU5MjUxXHU5MjM5XHU5MjY3XHU5MmE3XHU5Mjc3XHU5Mjc4XHU5MmU3XHU5MmQ3XHU5MmQ5XHU5MmQwXHVmYTI3XHU5MmQ1XHU5MmUwXHU5MmQzXHU5MzI1XHU5MzIxXHU5MmZiXHVmYTI4XHU5MzFlXHU5MmZmXHU5MzFkXHU5MzAyXHU5MzcwXHU5MzU3XHU5M2E0''@;'; put 'put ''XHU5M2M2XHU5M2RlXHU5M2Y4XHU5NDMxXHU5NDQ1XHU5NDQ4XHU5NTkyXHVmOWRjXHVmYTI5XHU5NjlkXHU5NmFmXHU5NzMzXHU5NzNiXHU5NzQzXHU5NzRkXHU5NzRmXHU5NzUxXHU5NzU1XHU5ODU3XHU5ODY1XHVmYTJhXHVmYTJiXHU5OTI3XHVmYTJjXHU5OTllXHU5YTRlXHU5YWQ5XHU5''@;'; put 'put ''YWRjXHU5Yjc1XHU5YjcyXHU5YjhmXHU5YmIxXHU5YmJiXHU5YzAwXHU5ZDcwXHU5ZDZiXHVmYTJkXHU5ZTE5XHU5ZWQxIl0sWyJmY2YxIiwiXHUyMTcwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDIiXSxbIjhmYTJhZiIsIlx1MDJkOFx1MDJjN1x4YjhcdTAyZDlcdTAyZGRceGFmXHUw''@;'; put 'put ''MmRiXHUwMmRhXHVmZjVlXHUwMzg0XHUwMzg1Il0sWyI4ZmEyYzIiLCJceGExXHhhNlx4YmYiXSxbIjhmYTJlYiIsIlx4YmFceGFhXHhhOVx4YWVcdTIxMjJceGE0XHUyMTE2Il0sWyI4ZmE2ZTEiLCJcdTAzODZcdTAzODhcdTAzODlcdTAzOGFcdTAzYWEiXSxbIjhmYTZlNyIsIlx1MDM4YyJd''@;'; put 'put ''LFsiOGZhNmU5IiwiXHUwMzhlXHUwM2FiIl0sWyI4ZmE2ZWMiLCJcdTAzOGYiXSxbIjhmYTZmMSIsIlx1MDNhY1x1MDNhZFx1MDNhZVx1MDNhZlx1MDNjYVx1MDM5MFx1MDNjY1x1MDNjMlx1MDNjZFx1MDNjYlx1MDNiMFx1MDNjZSJdLFsiOGZhN2MyIiwiXHUwNDAyIiwxMCwiXHUwNDBlXHUw''@;'; put 'put ''NDBmIl0sWyI4ZmE3ZjIiLCJcdTA0NTIiLDEwLCJcdTA0NWVcdTA0NWYiXSxbIjhmYTlhMSIsIlx4YzZcdTAxMTAiXSxbIjhmYTlhNCIsIlx1MDEyNiJdLFsiOGZhOWE2IiwiXHUwMTMyIl0sWyI4ZmE5YTgiLCJcdTAxNDFcdTAxM2YiXSxbIjhmYTlhYiIsIlx1MDE0YVx4ZDhcdTAxNTIiXSxb''@;'; put 'put ''IjhmYTlhZiIsIlx1MDE2Nlx4ZGUiXSxbIjhmYTljMSIsIlx4ZTZcdTAxMTFceGYwXHUwMTI3XHUwMTMxXHUwMTMzXHUwMTM4XHUwMTQyXHUwMTQwXHUwMTQ5XHUwMTRiXHhmOFx1MDE1M1x4ZGZcdTAxNjdceGZlIl0sWyI4ZmFhYTEiLCJceGMxXHhjMFx4YzRceGMyXHUwMTAyXHUwMWNkXHUw''@;'; put 'put ''MTAwXHUwMTA0XHhjNVx4YzNcdTAxMDZcdTAxMDhcdTAxMGNceGM3XHUwMTBhXHUwMTBlXHhjOVx4YzhceGNiXHhjYVx1MDExYVx1MDExNlx1MDExMlx1MDExOCJdLFsiOGZhYWJhIiwiXHUwMTFjXHUwMTFlXHUwMTIyXHUwMTIwXHUwMTI0XHhjZFx4Y2NceGNmXHhjZVx1MDFjZlx1MDEzMFx1''@;'; put 'put ''MDEyYVx1MDEyZVx1MDEyOFx1MDEzNFx1MDEzNlx1MDEzOVx1MDEzZFx1MDEzYlx1MDE0M1x1MDE0N1x1MDE0NVx4ZDFceGQzXHhkMlx4ZDZceGQ0XHUwMWQxXHUwMTUwXHUwMTRjXHhkNVx1MDE1NFx1MDE1OFx1MDE1Nlx1MDE1YVx1MDE1Y1x1MDE2MFx1MDE1ZVx1MDE2NFx1MDE2Mlx4ZGFc''@;'; put 'put ''eGQ5XHhkY1x4ZGJcdTAxNmNcdTAxZDNcdTAxNzBcdTAxNmFcdTAxNzJcdTAxNmVcdTAxNjhcdTAxZDdcdTAxZGJcdTAxZDlcdTAxZDVcdTAxNzRceGRkXHUwMTc4XHUwMTc2XHUwMTc5XHUwMTdkXHUwMTdiIl0sWyI4ZmFiYTEiLCJceGUxXHhlMFx4ZTRceGUyXHUwMTAzXHUwMWNlXHUwMTAx''@;'; put 'put ''XHUwMTA1XHhlNVx4ZTNcdTAxMDdcdTAxMDlcdTAxMGRceGU3XHUwMTBiXHUwMTBmXHhlOVx4ZThceGViXHhlYVx1MDExYlx1MDExN1x1MDExM1x1MDExOVx1MDFmNVx1MDExZFx1MDExZiJdLFsiOGZhYmJkIiwiXHUwMTIxXHUwMTI1XHhlZFx4ZWNceGVmXHhlZVx1MDFkMCJdLFsiOGZhYmM1''@;'; put 'put ''IiwiXHUwMTJiXHUwMTJmXHUwMTI5XHUwMTM1XHUwMTM3XHUwMTNhXHUwMTNlXHUwMTNjXHUwMTQ0XHUwMTQ4XHUwMTQ2XHhmMVx4ZjNceGYyXHhmNlx4ZjRcdTAxZDJcdTAxNTFcdTAxNGRceGY1XHUwMTU1XHUwMTU5XHUwMTU3XHUwMTViXHUwMTVkXHUwMTYxXHUwMTVmXHUwMTY1XHUwMTYz''@;'; put 'put ''XHhmYVx4ZjlceGZjXHhmYlx1MDE2ZFx1MDFkNFx1MDE3MVx1MDE2Ylx1MDE3M1x1MDE2Zlx1MDE2OVx1MDFkOFx1MDFkY1x1MDFkYVx1MDFkNlx1MDE3NVx4ZmRceGZmXHUwMTc3XHUwMTdhXHUwMTdlXHUwMTdjIl0sWyI4ZmIwYTEiLCJcdTRlMDJcdTRlMDRcdTRlMDVcdTRlMGNcdTRlMTJc''@;'; put 'put ''dTRlMWZcdTRlMjNcdTRlMjRcdTRlMjhcdTRlMmJcdTRlMmVcdTRlMmZcdTRlMzBcdTRlMzVcdTRlNDBcdTRlNDFcdTRlNDRcdTRlNDdcdTRlNTFcdTRlNWFcdTRlNWNcdTRlNjNcdTRlNjhcdTRlNjlcdTRlNzRcdTRlNzVcdTRlNzlcdTRlN2ZcdTRlOGRcdTRlOTZcdTRlOTdcdTRlOWRcdTRl''@;'; put 'put ''YWZcdTRlYjlcdTRlYzNcdTRlZDBcdTRlZGFcdTRlZGJcdTRlZTBcdTRlZTFcdTRlZTJcdTRlZThcdTRlZWZcdTRlZjFcdTRlZjNcdTRlZjVcdTRlZmRcdTRlZmVcdTRlZmZcdTRmMDBcdTRmMDJcdTRmMDNcdTRmMDhcdTRmMGJcdTRmMGNcdTRmMTJcdTRmMTVcdTRmMTZcdTRmMTdcdTRmMTlc''@;'; put 'put ''dTRmMmVcdTRmMzFcdTRmNjBcdTRmMzNcdTRmMzVcdTRmMzdcdTRmMzlcdTRmM2JcdTRmM2VcdTRmNDBcdTRmNDJcdTRmNDhcdTRmNDlcdTRmNGJcdTRmNGNcdTRmNTJcdTRmNTRcdTRmNTZcdTRmNThcdTRmNWZcdTRmNjNcdTRmNmFcdTRmNmNcdTRmNmVcdTRmNzFcdTRmNzdcdTRmNzhcdTRm''@;'; put 'put ''NzlcdTRmN2FcdTRmN2RcdTRmN2VcdTRmODFcdTRmODJcdTRmODQiXSxbIjhmYjFhMSIsIlx1NGY4NVx1NGY4OVx1NGY4YVx1NGY4Y1x1NGY4ZVx1NGY5MFx1NGY5Mlx1NGY5M1x1NGY5NFx1NGY5N1x1NGY5OVx1NGY5YVx1NGY5ZVx1NGY5Zlx1NGZiMlx1NGZiN1x1NGZiOVx1NGZiYlx1NGZi''@;'; put 'put ''Y1x1NGZiZFx1NGZiZVx1NGZjMFx1NGZjMVx1NGZjNVx1NGZjNlx1NGZjOFx1NGZjOVx1NGZjYlx1NGZjY1x1NGZjZFx1NGZjZlx1NGZkMlx1NGZkY1x1NGZlMFx1NGZlMlx1NGZmMFx1NGZmMlx1NGZmY1x1NGZmZFx1NGZmZlx1NTAwMFx1NTAwMVx1NTAwNFx1NTAwN1x1NTAwYVx1NTAwY1x1''@;'; put 'put ''NTAwZVx1NTAxMFx1NTAxM1x1NTAxN1x1NTAxOFx1NTAxYlx1NTAxY1x1NTAxZFx1NTAxZVx1NTAyMlx1NTAyN1x1NTAyZVx1NTAzMFx1NTAzMlx1NTAzM1x1NTAzNVx1NTA0MFx1NTA0MVx1NTA0Mlx1NTA0NVx1NTA0Nlx1NTA0YVx1NTA0Y1x1NTA0ZVx1NTA1MVx1NTA1Mlx1NTA1M1x1NTA1''@;'; put 'put ''N1x1NTA1OVx1NTA1Zlx1NTA2MFx1NTA2Mlx1NTA2M1x1NTA2Nlx1NTA2N1x1NTA2YVx1NTA2ZFx1NTA3MFx1NTA3MVx1NTAzYlx1NTA4MVx1NTA4M1x1NTA4NFx1NTA4Nlx1NTA4YVx1NTA4ZVx1NTA4Zlx1NTA5MCJdLFsiOGZiMmExIiwiXHU1MDkyXHU1MDkzXHU1MDk0XHU1MDk2XHU1MDli''@;'; put 'put ''XHU1MDljXHU1MDllIiw0LCJcdTUwYWFcdTUwYWZcdTUwYjBcdTUwYjlcdTUwYmFcdTUwYmRcdTUwYzBcdTUwYzNcdTUwYzRcdTUwYzdcdTUwY2NcdTUwY2VcdTUwZDBcdTUwZDNcdTUwZDRcdTUwZDhcdTUwZGNcdTUwZGRcdTUwZGZcdTUwZTJcdTUwZTRcdTUwZTZcdTUwZThcdTUwZTlcdTUw''@;'; put 'put ''ZWZcdTUwZjFcdTUwZjZcdTUwZmFcdTUwZmVcdTUxMDNcdTUxMDZcdTUxMDdcdTUxMDhcdTUxMGJcdTUxMGNcdTUxMGRcdTUxMGVcdTUwZjJcdTUxMTBcdTUxMTdcdTUxMTlcdTUxMWJcdTUxMWNcdTUxMWRcdTUxMWVcdTUxMjNcdTUxMjdcdTUxMjhcdTUxMmNcdTUxMmRcdTUxMmZcdTUxMzFc''@;'; put 'put ''dTUxMzNcdTUxMzRcdTUxMzVcdTUxMzhcdTUxMzlcdTUxNDJcdTUxNGFcdTUxNGZcdTUxNTNcdTUxNTVcdTUxNTdcdTUxNThcdTUxNWZcdTUxNjRcdTUxNjZcdTUxN2VcdTUxODNcdTUxODRcdTUxOGJcdTUxOGVcdTUxOThcdTUxOWRcdTUxYTFcdTUxYTNcdTUxYWRcdTUxYjhcdTUxYmFcdTUx''@;'; put 'put ''YmNcdTUxYmVcdTUxYmZcdTUxYzIiXSxbIjhmYjNhMSIsIlx1NTFjOFx1NTFjZlx1NTFkMVx1NTFkMlx1NTFkM1x1NTFkNVx1NTFkOFx1NTFkZVx1NTFlMlx1NTFlNVx1NTFlZVx1NTFmMlx1NTFmM1x1NTFmNFx1NTFmN1x1NTIwMVx1NTIwMlx1NTIwNVx1NTIxMlx1NTIxM1x1NTIxNVx1NTIx''@;'; put 'put ''Nlx1NTIxOFx1NTIyMlx1NTIyOFx1NTIzMVx1NTIzMlx1NTIzNVx1NTIzY1x1NTI0NVx1NTI0OVx1NTI1NVx1NTI1N1x1NTI1OFx1NTI1YVx1NTI1Y1x1NTI1Zlx1NTI2MFx1NTI2MVx1NTI2Nlx1NTI2ZVx1NTI3N1x1NTI3OFx1NTI3OVx1NTI4MFx1NTI4Mlx1NTI4NVx1NTI4YVx1NTI4Y1x1''@;'; put 'put ''NTI5M1x1NTI5NVx1NTI5Nlx1NTI5N1x1NTI5OFx1NTI5YVx1NTI5Y1x1NTJhNFx1NTJhNVx1NTJhNlx1NTJhN1x1NTJhZlx1NTJiMFx1NTJiNlx1NTJiN1x1NTJiOFx1NTJiYVx1NTJiYlx1NTJiZFx1NTJjMFx1NTJjNFx1NTJjNlx1NTJjOFx1NTJjY1x1NTJjZlx1NTJkMVx1NTJkNFx1NTJk''@;'; put 'put ''Nlx1NTJkYlx1NTJkY1x1NTJlMVx1NTJlNVx1NTJlOFx1NTJlOVx1NTJlYVx1NTJlY1x1NTJmMFx1NTJmMVx1NTJmNFx1NTJmNlx1NTJmN1x1NTMwMFx1NTMwM1x1NTMwYVx1NTMwYiJdLFsiOGZiNGExIiwiXHU1MzBjXHU1MzExXHU1MzEzXHU1MzE4XHU1MzFiXHU1MzFjXHU1MzFlXHU1MzFm''@;'; put 'put ''XHU1MzI1XHU1MzI3XHU1MzI4XHU1MzI5XHU1MzJiXHU1MzJjXHU1MzJkXHU1MzMwXHU1MzMyXHU1MzM1XHU1MzNjXHU1MzNkXHU1MzNlXHU1MzQyXHU1MzRjXHU1MzRiXHU1MzU5XHU1MzViXHU1MzYxXHU1MzYzXHU1MzY1XHU1MzZjXHU1MzZkXHU1MzcyXHU1Mzc5XHU1MzdlXHU1MzgzXHU1''@;'; put 'put ''Mzg3XHU1Mzg4XHU1MzhlXHU1MzkzXHU1Mzk0XHU1Mzk5XHU1MzlkXHU1M2ExXHU1M2E0XHU1M2FhXHU1M2FiXHU1M2FmXHU1M2IyXHU1M2I0XHU1M2I1XHU1M2I3XHU1M2I4XHU1M2JhXHU1M2JkXHU1M2MwXHU1M2M1XHU1M2NmXHU1M2QyXHU1M2QzXHU1M2Q1XHU1M2RhXHU1M2RkXHU1M2Rl''@;'; put 'put ''XHU1M2UwXHU1M2U2XHU1M2U3XHU1M2Y1XHU1NDAyXHU1NDEzXHU1NDFhXHU1NDIxXHU1NDI3XHU1NDI4XHU1NDJhXHU1NDJmXHU1NDMxXHU1NDM0XHU1NDM1XHU1NDQzXHU1NDQ0XHU1NDQ3XHU1NDRkXHU1NDRmXHU1NDVlXHU1NDYyXHU1NDY0XHU1NDY2XHU1NDY3XHU1NDY5XHU1NDZiXHU1''@;'; put 'put ''NDZkXHU1NDZlXHU1NDc0XHU1NDdmIl0sWyI4ZmI1YTEiLCJcdTU0ODFcdTU0ODNcdTU0ODVcdTU0ODhcdTU0ODlcdTU0OGRcdTU0OTFcdTU0OTVcdTU0OTZcdTU0OWNcdTU0OWZcdTU0YTFcdTU0YTZcdTU0YTdcdTU0YTlcdTU0YWFcdTU0YWRcdTU0YWVcdTU0YjFcdTU0YjdcdTU0YjlcdTU0''@;'; put 'put ''YmFcdTU0YmJcdTU0YmZcdTU0YzZcdTU0Y2FcdTU0Y2RcdTU0Y2VcdTU0ZTBcdTU0ZWFcdTU0ZWNcdTU0ZWZcdTU0ZjZcdTU0ZmNcdTU0ZmVcdTU0ZmZcdTU1MDBcdTU1MDFcdTU1MDVcdTU1MDhcdTU1MDlcdTU1MGNcdTU1MGRcdTU1MGVcdTU1MTVcdTU1MmFcdTU1MmJcdTU1MzJcdTU1MzVc''@;'; put 'put ''dTU1MzZcdTU1M2JcdTU1M2NcdTU1M2RcdTU1NDFcdTU1NDdcdTU1NDlcdTU1NGFcdTU1NGRcdTU1NTBcdTU1NTFcdTU1NThcdTU1NWFcdTU1NWJcdTU1NWVcdTU1NjBcdTU1NjFcdTU1NjRcdTU1NjZcdTU1N2ZcdTU1ODFcdTU1ODJcdTU1ODZcdTU1ODhcdTU1OGVcdTU1OGZcdTU1OTFcdTU1''@;'; put 'put ''OTJcdTU1OTNcdTU1OTRcdTU1OTdcdTU1YTNcdTU1YTRcdTU1YWRcdTU1YjJcdTU1YmZcdTU1YzFcdTU1YzNcdTU1YzZcdTU1YzlcdTU1Y2JcdTU1Y2NcdTU1Y2VcdTU1ZDFcdTU1ZDIiXSxbIjhmYjZhMSIsIlx1NTVkM1x1NTVkN1x1NTVkOFx1NTVkYlx1NTVkZVx1NTVlMlx1NTVlOVx1NTVm''@;'; put 'put ''Nlx1NTVmZlx1NTYwNVx1NTYwOFx1NTYwYVx1NTYwZCIsNSwiXHU1NjE5XHU1NjJjXHU1NjMwXHU1NjMzXHU1NjM1XHU1NjM3XHU1NjM5XHU1NjNiXHU1NjNjXHU1NjNkXHU1NjNmXHU1NjQwXHU1NjQxXHU1NjQzXHU1NjQ0XHU1NjQ2XHU1NjQ5XHU1NjRiXHU1NjRkXHU1NjRmXHU1NjU0XHU1''@;'; put 'put ''NjVlXHU1NjYwXHU1NjYxXHU1NjYyXHU1NjYzXHU1NjY2XHU1NjY5XHU1NjZkXHU1NjZmXHU1NjcxXHU1NjcyXHU1Njc1XHU1Njg0XHU1Njg1XHU1Njg4XHU1NjhiXHU1NjhjXHU1Njk1XHU1Njk5XHU1NjlhXHU1NjlkXHU1NjllXHU1NjlmXHU1NmE2XHU1NmE3XHU1NmE4XHU1NmE5XHU1NmFi''@;'; put 'put ''XHU1NmFjXHU1NmFkXHU1NmIxXHU1NmIzXHU1NmI3XHU1NmJlXHU1NmM1XHU1NmM5XHU1NmNhXHU1NmNiXHU1NmNmXHU1NmQwXHU1NmNjXHU1NmNkXHU1NmQ5XHU1NmRjXHU1NmRkXHU1NmRmXHU1NmUxXHU1NmU0Iiw0LCJcdTU2ZjFcdTU2ZWJcdTU2ZWQiXSxbIjhmYjdhMSIsIlx1NTZmNlx1''@;'; put 'put ''NTZmN1x1NTcwMVx1NTcwMlx1NTcwN1x1NTcwYVx1NTcwY1x1NTcxMVx1NTcxNVx1NTcxYVx1NTcxYlx1NTcxZFx1NTcyMFx1NTcyMlx1NTcyM1x1NTcyNFx1NTcyNVx1NTcyOVx1NTcyYVx1NTcyY1x1NTcyZVx1NTcyZlx1NTczM1x1NTczNFx1NTczZFx1NTczZVx1NTczZlx1NTc0NVx1NTc0''@;'; put 'put ''Nlx1NTc0Y1x1NTc0ZFx1NTc1Mlx1NTc2Mlx1NTc2NVx1NTc2N1x1NTc2OFx1NTc2Ylx1NTc2ZCIsNCwiXHU1NzczXHU1Nzc0XHU1Nzc1XHU1Nzc3XHU1Nzc5XHU1NzdhXHU1NzdiXHU1NzdjXHU1NzdlXHU1NzgxXHU1NzgzXHU1NzhjXHU1Nzk0XHU1Nzk3XHU1Nzk5XHU1NzlhXHU1NzljXHU1''@;'; put 'put ''NzlkXHU1NzllXHU1NzlmXHU1N2ExXHU1Nzk1XHU1N2E3XHU1N2E4XHU1N2E5XHU1N2FjXHU1N2I4XHU1N2JkXHU1N2M3XHU1N2M4XHU1N2NjXHU1N2NmXHU1N2Q1XHU1N2RkXHU1N2RlXHU1N2U0XHU1N2U2XHU1N2U3XHU1N2U5XHU1N2VkXHU1N2YwXHU1N2Y1XHU1N2Y2XHU1N2Y4XHU1N2Zk''@;'; put 'put ''XHU1N2ZlXHU1N2ZmXHU1ODAzXHU1ODA0XHU1ODA4XHU1ODA5XHU1N2UxIl0sWyI4ZmI4YTEiLCJcdTU4MGNcdTU4MGRcdTU4MWJcdTU4MWVcdTU4MWZcdTU4MjBcdTU4MjZcdTU4MjdcdTU4MmRcdTU4MzJcdTU4MzlcdTU4M2ZcdTU4NDlcdTU4NGNcdTU4NGRcdTU4NGZcdTU4NTBcdTU4NTVc''@;'; put 'put ''dTU4NWZcdTU4NjFcdTU4NjRcdTU4NjdcdTU4NjhcdTU4NzhcdTU4N2NcdTU4N2ZcdTU4ODBcdTU4ODFcdTU4ODdcdTU4ODhcdTU4ODlcdTU4OGFcdTU4OGNcdTU4OGRcdTU4OGZcdTU4OTBcdTU4OTRcdTU4OTZcdTU4OWRcdTU4YTBcdTU4YTFcdTU4YTJcdTU4YTZcdTU4YTlcdTU4YjFcdTU4''@;'; put 'put ''YjJcdTU4YzRcdTU4YmNcdTU4YzJcdTU4YzhcdTU4Y2RcdTU4Y2VcdTU4ZDBcdTU4ZDJcdTU4ZDRcdTU4ZDZcdTU4ZGFcdTU4ZGRcdTU4ZTFcdTU4ZTJcdTU4ZTlcdTU4ZjNcdTU5MDVcdTU5MDZcdTU5MGJcdTU5MGNcdTU5MTJcdTU5MTNcdTU5MTRcdTg2NDFcdTU5MWRcdTU5MjFcdTU5MjNc''@;'; put 'put ''dTU5MjRcdTU5MjhcdTU5MmZcdTU5MzBcdTU5MzNcdTU5MzVcdTU5MzZcdTU5M2ZcdTU5NDNcdTU5NDZcdTU5NTJcdTU5NTNcdTU5NTlcdTU5NWJcdTU5NWRcdTU5NWVcdTU5NWZcdTU5NjFcdTU5NjNcdTU5NmJcdTU5NmQiXSxbIjhmYjlhMSIsIlx1NTk2Zlx1NTk3Mlx1NTk3NVx1NTk3Nlx1''@;'; put 'put ''NTk3OVx1NTk3Ylx1NTk3Y1x1NTk4Ylx1NTk4Y1x1NTk4ZVx1NTk5Mlx1NTk5NVx1NTk5N1x1NTk5Zlx1NTlhNFx1NTlhN1x1NTlhZFx1NTlhZVx1NTlhZlx1NTliMFx1NTliM1x1NTliN1x1NTliYVx1NTliY1x1NTljMVx1NTljM1x1NTljNFx1NTljOFx1NTljYVx1NTljZFx1NTlkMlx1NTlk''@;'; put 'put ''ZFx1NTlkZVx1NTlkZlx1NTllM1x1NTllNFx1NTllN1x1NTllZVx1NTllZlx1NTlmMVx1NTlmMlx1NTlmNFx1NTlmN1x1NWEwMFx1NWEwNFx1NWEwY1x1NWEwZFx1NWEwZVx1NWExMlx1NWExM1x1NWExZVx1NWEyM1x1NWEyNFx1NWEyN1x1NWEyOFx1NWEyYVx1NWEyZFx1NWEzMFx1NWE0NFx1''@;'; put 'put ''NWE0NVx1NWE0N1x1NWE0OFx1NWE0Y1x1NWE1MFx1NWE1NVx1NWE1ZVx1NWE2M1x1NWE2NVx1NWE2N1x1NWE2ZFx1NWE3N1x1NWE3YVx1NWE3Ylx1NWE3ZVx1NWE4Ylx1NWE5MFx1NWE5M1x1NWE5Nlx1NWE5OVx1NWE5Y1x1NWE5ZVx1NWE5Zlx1NWFhMFx1NWFhMlx1NWFhN1x1NWFhY1x1NWFi''@;'; put 'put ''MVx1NWFiMlx1NWFiM1x1NWFiNVx1NWFiOFx1NWFiYVx1NWFiYlx1NWFiZiJdLFsiOGZiYWExIiwiXHU1YWM0XHU1YWM2XHU1YWM4XHU1YWNmXHU1YWRhXHU1YWRjXHU1YWUwXHU1YWU1XHU1YWVhXHU1YWVlXHU1YWY1XHU1YWY2XHU1YWZkXHU1YjAwXHU1YjAxXHU1YjA4XHU1YjE3XHU1YjM0''@;'; put 'put ''XHU1YjE5XHU1YjFiXHU1YjFkXHU1YjIxXHU1YjI1XHU1YjJkXHU1YjM4XHU1YjQxXHU1YjRiXHU1YjRjXHU1YjUyXHU1YjU2XHU1YjVlXHU1YjY4XHU1YjZlXHU1YjZmXHU1YjdjXHU1YjdkXHU1YjdlXHU1YjdmXHU1YjgxXHU1Yjg0XHU1Yjg2XHU1YjhhXHU1YjhlXHU1YjkwXHU1YjkxXHU1''@;'; put 'put ''YjkzXHU1Yjk0XHU1Yjk2XHU1YmE4XHU1YmE5XHU1YmFjXHU1YmFkXHU1YmFmXHU1YmIxXHU1YmIyXHU1YmI3XHU1YmJhXHU1YmJjXHU1YmMwXHU1YmMxXHU1YmNkXHU1YmNmXHU1YmQ2Iiw0LCJcdTViZTBcdTViZWZcdTViZjFcdTViZjRcdTViZmRcdTVjMGNcdTVjMTdcdTVjMWVcdTVjMWZc''@;'; put 'put ''dTVjMjNcdTVjMjZcdTVjMjlcdTVjMmJcdTVjMmNcdTVjMmVcdTVjMzBcdTVjMzJcdTVjMzVcdTVjMzZcdTVjNTlcdTVjNWFcdTVjNWNcdTVjNjJcdTVjNjNcdTVjNjdcdTVjNjhcdTVjNjkiXSxbIjhmYmJhMSIsIlx1NWM2ZFx1NWM3MFx1NWM3NFx1NWM3NVx1NWM3YVx1NWM3Ylx1NWM3Y1x1''@;'; put 'put ''NWM3ZFx1NWM4N1x1NWM4OFx1NWM4YVx1NWM4Zlx1NWM5Mlx1NWM5ZFx1NWM5Zlx1NWNhMFx1NWNhMlx1NWNhM1x1NWNhNlx1NWNhYVx1NWNiMlx1NWNiNFx1NWNiNVx1NWNiYVx1NWNjOVx1NWNjYlx1NWNkMlx1NWNkZFx1NWNkN1x1NWNlZVx1NWNmMVx1NWNmMlx1NWNmNFx1NWQwMVx1NWQw''@;'; put 'put ''Nlx1NWQwZFx1NWQxMlx1NWQyYlx1NWQyM1x1NWQyNFx1NWQyNlx1NWQyN1x1NWQzMVx1NWQzNFx1NWQzOVx1NWQzZFx1NWQzZlx1NWQ0Mlx1NWQ0M1x1NWQ0Nlx1NWQ0OFx1NWQ1NVx1NWQ1MVx1NWQ1OVx1NWQ0YVx1NWQ1Zlx1NWQ2MFx1NWQ2MVx1NWQ2Mlx1NWQ2NFx1NWQ2YVx1NWQ2ZFx1''@;'; put 'put ''NWQ3MFx1NWQ3OVx1NWQ3YVx1NWQ3ZVx1NWQ3Zlx1NWQ4MVx1NWQ4M1x1NWQ4OFx1NWQ4YVx1NWQ5Mlx1NWQ5M1x1NWQ5NFx1NWQ5NVx1NWQ5OVx1NWQ5Ylx1NWQ5Zlx1NWRhMFx1NWRhN1x1NWRhYlx1NWRiMFx1NWRiNFx1NWRiOFx1NWRiOVx1NWRjM1x1NWRjN1x1NWRjYlx1NWRkMFx1NWRj''@;'; put 'put ''ZVx1NWRkOFx1NWRkOVx1NWRlMFx1NWRlNCJdLFsiOGZiY2ExIiwiXHU1ZGU5XHU1ZGY4XHU1ZGY5XHU1ZTAwXHU1ZTA3XHU1ZTBkXHU1ZTEyXHU1ZTE0XHU1ZTE1XHU1ZTE4XHU1ZTFmXHU1ZTIwXHU1ZTJlXHU1ZTI4XHU1ZTMyXHU1ZTM1XHU1ZTNlXHU1ZTRiXHU1ZTUwXHU1ZTQ5XHU1ZTUx''@;'; put 'put ''XHU1ZTU2XHU1ZTU4XHU1ZTViXHU1ZTVjXHU1ZTVlXHU1ZTY4XHU1ZTZhIiw0LCJcdTVlNzBcdTVlODBcdTVlOGJcdTVlOGVcdTVlYTJcdTVlYTRcdTVlYTVcdTVlYThcdTVlYWFcdTVlYWNcdTVlYjFcdTVlYjNcdTVlYmRcdTVlYmVcdTVlYmZcdTVlYzZcdTVlY2NcdTVlY2JcdTVlY2VcdTVl''@;'; put 'put ''ZDFcdTVlZDJcdTVlZDRcdTVlZDVcdTVlZGNcdTVlZGVcdTVlZTVcdTVlZWJcdTVmMDJcdTVmMDZcdTVmMDdcdTVmMDhcdTVmMGVcdTVmMTlcdTVmMWNcdTVmMWRcdTVmMjFcdTVmMjJcdTVmMjNcdTVmMjRcdTVmMjhcdTVmMmJcdTVmMmNcdTVmMmVcdTVmMzBcdTVmMzRcdTVmMzZcdTVmM2Jc''@;'; put 'put ''dTVmM2RcdTVmM2ZcdTVmNDBcdTVmNDRcdTVmNDVcdTVmNDdcdTVmNGRcdTVmNTBcdTVmNTRcdTVmNThcdTVmNWJcdTVmNjBcdTVmNjNcdTVmNjRcdTVmNjciXSxbIjhmYmRhMSIsIlx1NWY2Zlx1NWY3Mlx1NWY3NFx1NWY3NVx1NWY3OFx1NWY3YVx1NWY3ZFx1NWY3ZVx1NWY4OVx1NWY4ZFx1''@;'; put 'put ''NWY4Zlx1NWY5Nlx1NWY5Y1x1NWY5ZFx1NWZhMlx1NWZhN1x1NWZhYlx1NWZhNFx1NWZhY1x1NWZhZlx1NWZiMFx1NWZiMVx1NWZiOFx1NWZjNFx1NWZjN1x1NWZjOFx1NWZjOVx1NWZjYlx1NWZkMCIsNCwiXHU1ZmRlXHU1ZmUxXHU1ZmUyXHU1ZmU4XHU1ZmU5XHU1ZmVhXHU1ZmVjXHU1ZmVk''@;'; put 'put ''XHU1ZmVlXHU1ZmVmXHU1ZmYyXHU1ZmYzXHU1ZmY2XHU1ZmZhXHU1ZmZjXHU2MDA3XHU2MDBhXHU2MDBkXHU2MDEzXHU2MDE0XHU2MDE3XHU2MDE4XHU2MDFhXHU2MDFmXHU2MDI0XHU2MDJkXHU2MDMzXHU2MDM1XHU2MDQwXHU2MDQ3XHU2MDQ4XHU2MDQ5XHU2MDRjXHU2MDUxXHU2MDU0XHU2''@;'; put 'put ''MDU2XHU2MDU3XHU2MDVkXHU2MDYxXHU2MDY3XHU2MDcxXHU2MDdlXHU2MDdmXHU2MDgyXHU2MDg2XHU2MDg4XHU2MDhhXHU2MDhlXHU2MDkxXHU2MDkzXHU2MDk1XHU2MDk4XHU2MDlkXHU2MDllXHU2MGEyXHU2MGE0XHU2MGE1XHU2MGE4XHU2MGIwXHU2MGIxXHU2MGI3Il0sWyI4ZmJlYTEi''@;'; put 'put ''LCJcdTYwYmJcdTYwYmVcdTYwYzJcdTYwYzRcdTYwYzhcdTYwYzlcdTYwY2FcdTYwY2JcdTYwY2VcdTYwY2ZcdTYwZDRcdTYwZDVcdTYwZDlcdTYwZGJcdTYwZGRcdTYwZGVcdTYwZTJcdTYwZTVcdTYwZjJcdTYwZjVcdTYwZjhcdTYwZmNcdTYwZmRcdTYxMDJcdTYxMDdcdTYxMGFcdTYxMGNc''@;'; put 'put ''dTYxMTAiLDQsIlx1NjExNlx1NjExN1x1NjExOVx1NjExY1x1NjExZVx1NjEyMlx1NjEyYVx1NjEyYlx1NjEzMFx1NjEzMVx1NjEzNVx1NjEzNlx1NjEzN1x1NjEzOVx1NjE0MVx1NjE0NVx1NjE0Nlx1NjE0OVx1NjE1ZVx1NjE2MFx1NjE2Y1x1NjE3Mlx1NjE3OFx1NjE3Ylx1NjE3Y1x1NjE3''@;'; put 'put ''Zlx1NjE4MFx1NjE4MVx1NjE4M1x1NjE4NFx1NjE4Ylx1NjE4ZFx1NjE5Mlx1NjE5M1x1NjE5N1x1NjE5OFx1NjE5Y1x1NjE5ZFx1NjE5Zlx1NjFhMFx1NjFhNVx1NjFhOFx1NjFhYVx1NjFhZFx1NjFiOFx1NjFiOVx1NjFiY1x1NjFjMFx1NjFjMVx1NjFjMlx1NjFjZVx1NjFjZlx1NjFkNVx1''@;'; put 'put ''NjFkY1x1NjFkZFx1NjFkZVx1NjFkZlx1NjFlMVx1NjFlMlx1NjFlN1x1NjFlOVx1NjFlNSJdLFsiOGZiZmExIiwiXHU2MWVjXHU2MWVkXHU2MWVmXHU2MjAxXHU2MjAzXHU2MjA0XHU2MjA3XHU2MjEzXHU2MjE1XHU2MjFjXHU2MjIwXHU2MjIyXHU2MjIzXHU2MjI3XHU2MjI5XHU2MjJiXHU2''@;'; put 'put ''MjM5XHU2MjNkXHU2MjQyXHU2MjQzXHU2MjQ0XHU2MjQ2XHU2MjRjXHU2MjUwXHU2MjUxXHU2MjUyXHU2MjU0XHU2MjU2XHU2MjVhXHU2MjVjXHU2MjY0XHU2MjZkXHU2MjZmXHU2MjczXHU2MjdhXHU2MjdkXHU2MjhkXHU2MjhlXHU2MjhmXHU2MjkwXHU2MmE2XHU2MmE4XHU2MmIzXHU2MmI2''@;'; put 'put ''XHU2MmI3XHU2MmJhXHU2MmJlXHU2MmJmXHU2MmM0XHU2MmNlXHU2MmQ1XHU2MmQ2XHU2MmRhXHU2MmVhXHU2MmYyXHU2MmY0XHU2MmZjXHU2MmZkXHU2MzAzXHU2MzA0XHU2MzBhXHU2MzBiXHU2MzBkXHU2MzEwXHU2MzEzXHU2MzE2XHU2MzE4XHU2MzI5XHU2MzJhXHU2MzJkXHU2MzM1XHU2''@;'; put 'put ''MzM2XHU2MzM5XHU2MzNjXHU2MzQxXHU2MzQyXHU2MzQzXHU2MzQ0XHU2MzQ2XHU2MzRhXHU2MzRiXHU2MzRlXHU2MzUyXHU2MzUzXHU2MzU0XHU2MzU4XHU2MzViXHU2MzY1XHU2MzY2XHU2MzZjXHU2MzZkXHU2MzcxXHU2Mzc0XHU2Mzc1Il0sWyI4ZmMwYTEiLCJcdTYzNzhcdTYzN2NcdTYz''@;'; put 'put ''N2RcdTYzN2ZcdTYzODJcdTYzODRcdTYzODdcdTYzOGFcdTYzOTBcdTYzOTRcdTYzOTVcdTYzOTlcdTYzOWFcdTYzOWVcdTYzYTRcdTYzYTZcdTYzYWRcdTYzYWVcdTYzYWZcdTYzYmRcdTYzYzFcdTYzYzVcdTYzYzhcdTYzY2VcdTYzZDFcdTYzZDNcdTYzZDRcdTYzZDVcdTYzZGNcdTYzZTBc''@;'; put 'put ''dTYzZTVcdTYzZWFcdTYzZWNcdTYzZjJcdTYzZjNcdTYzZjVcdTYzZjhcdTYzZjlcdTY0MDlcdTY0MGFcdTY0MTBcdTY0MTJcdTY0MTRcdTY0MThcdTY0MWVcdTY0MjBcdTY0MjJcdTY0MjRcdTY0MjVcdTY0MjlcdTY0MmFcdTY0MmZcdTY0MzBcdTY0MzVcdTY0M2RcdTY0M2ZcdTY0NGJcdTY0''@;'; put 'put ''NGZcdTY0NTFcdTY0NTJcdTY0NTNcdTY0NTRcdTY0NWFcdTY0NWJcdTY0NWNcdTY0NWRcdTY0NWZcdTY0NjBcdTY0NjFcdTY0NjNcdTY0NmRcdTY0NzNcdTY0NzRcdTY0N2JcdTY0N2RcdTY0ODVcdTY0ODdcdTY0OGZcdTY0OTBcdTY0OTFcdTY0OThcdTY0OTlcdTY0OWJcdTY0OWRcdTY0OWZc''@;'; put 'put ''dTY0YTFcdTY0YTNcdTY0YTZcdTY0YThcdTY0YWNcdTY0YjNcdTY0YmRcdTY0YmVcdTY0YmYiXSxbIjhmYzFhMSIsIlx1NjRjNFx1NjRjOVx1NjRjYVx1NjRjYlx1NjRjY1x1NjRjZVx1NjRkMFx1NjRkMVx1NjRkNVx1NjRkN1x1NjRlNFx1NjRlNVx1NjRlOVx1NjRlYVx1NjRlZFx1NjRmMFx1''@;'; put 'put ''NjRmNVx1NjRmN1x1NjRmYlx1NjRmZlx1NjUwMVx1NjUwNFx1NjUwOFx1NjUwOVx1NjUwYVx1NjUwZlx1NjUxM1x1NjUxNFx1NjUxNlx1NjUxOVx1NjUxYlx1NjUxZVx1NjUxZlx1NjUyMlx1NjUyNlx1NjUyOVx1NjUyZVx1NjUzMVx1NjUzYVx1NjUzY1x1NjUzZFx1NjU0M1x1NjU0N1x1NjU0''@;'; put 'put ''OVx1NjU1MFx1NjU1Mlx1NjU1NFx1NjU1Zlx1NjU2MFx1NjU2N1x1NjU2Ylx1NjU3YVx1NjU3ZFx1NjU4MVx1NjU4NVx1NjU4YVx1NjU5Mlx1NjU5NVx1NjU5OFx1NjU5ZFx1NjVhMFx1NjVhM1x1NjVhNlx1NjVhZVx1NjViMlx1NjViM1x1NjViNFx1NjViZlx1NjVjMlx1NjVjOFx1NjVjOVx1''@;'; put 'put ''NjVjZVx1NjVkMFx1NjVkNFx1NjVkNlx1NjVkOFx1NjVkZlx1NjVmMFx1NjVmMlx1NjVmNFx1NjVmNVx1NjVmOVx1NjVmZVx1NjVmZlx1NjYwMFx1NjYwNFx1NjYwOFx1NjYwOVx1NjYwZFx1NjYxMVx1NjYxMlx1NjYxNVx1NjYxNlx1NjYxZCJdLFsiOGZjMmExIiwiXHU2NjFlXHU2NjIxXHU2''@;'; put 'put ''NjIyXHU2NjIzXHU2NjI0XHU2NjI2XHU2NjI5XHU2NjJhXHU2NjJiXHU2NjJjXHU2NjJlXHU2NjMwXHU2NjMxXHU2NjMzXHU2NjM5XHU2NjM3XHU2NjQwXHU2NjQ1XHU2NjQ2XHU2NjRhXHU2NjRjXHU2NjUxXHU2NjRlXHU2NjU3XHU2NjU4XHU2NjU5XHU2NjViXHU2NjVjXHU2NjYwXHU2NjYx''@;'; put 'put ''XHU2NmZiXHU2NjZhXHU2NjZiXHU2NjZjXHU2NjdlXHU2NjczXHU2Njc1XHU2NjdmXHU2Njc3XHU2Njc4XHU2Njc5XHU2NjdiXHU2NjgwXHU2NjdjXHU2NjhiXHU2NjhjXHU2NjhkXHU2NjkwXHU2NjkyXHU2Njk5XHU2NjlhXHU2NjliXHU2NjljXHU2NjlmXHU2NmEwXHU2NmE0XHU2NmFkXHU2''@;'; put 'put ''NmIxXHU2NmIyXHU2NmI1XHU2NmJiXHU2NmJmXHU2NmMwXHU2NmMyXHU2NmMzXHU2NmM4XHU2NmNjXHU2NmNlXHU2NmNmXHU2NmQ0XHU2NmRiXHU2NmRmXHU2NmU4XHU2NmViXHU2NmVjXHU2NmVlXHU2NmZhXHU2NzA1XHU2NzA3XHU2NzBlXHU2NzEzXHU2NzE5XHU2NzFjXHU2NzIwXHU2NzIy''@;'; put 'put ''XHU2NzMzXHU2NzNlXHU2NzQ1XHU2NzQ3XHU2NzQ4XHU2NzRjXHU2NzU0XHU2NzU1XHU2NzVkIl0sWyI4ZmMzYTEiLCJcdTY3NjZcdTY3NmNcdTY3NmVcdTY3NzRcdTY3NzZcdTY3N2JcdTY3ODFcdTY3ODRcdTY3OGVcdTY3OGZcdTY3OTFcdTY3OTNcdTY3OTZcdTY3OThcdTY3OTlcdTY3OWJc''@;'; put 'put ''dTY3YjBcdTY3YjFcdTY3YjJcdTY3YjVcdTY3YmJcdTY3YmNcdTY3YmRcdTY3ZjlcdTY3YzBcdTY3YzJcdTY3YzNcdTY3YzVcdTY3YzhcdTY3YzlcdTY3ZDJcdTY3ZDdcdTY3ZDlcdTY3ZGNcdTY3ZTFcdTY3ZTZcdTY3ZjBcdTY3ZjJcdTY3ZjZcdTY3ZjdcdTY4NTJcdTY4MTRcdTY4MTlcdTY4''@;'; put 'put ''MWRcdTY4MWZcdTY4MjhcdTY4MjdcdTY4MmNcdTY4MmRcdTY4MmZcdTY4MzBcdTY4MzFcdTY4MzNcdTY4M2JcdTY4M2ZcdTY4NDRcdTY4NDVcdTY4NGFcdTY4NGNcdTY4NTVcdTY4NTdcdTY4NThcdTY4NWJcdTY4NmJcdTY4NmUiLDQsIlx1Njg3NVx1Njg3OVx1Njg3YVx1Njg3Ylx1Njg3Y1x1''@;'; put 'put ''Njg4Mlx1Njg4NFx1Njg4Nlx1Njg4OFx1Njg5Nlx1Njg5OFx1Njg5YVx1Njg5Y1x1NjhhMVx1NjhhM1x1NjhhNVx1NjhhOVx1NjhhYVx1NjhhZVx1NjhiMlx1NjhiYlx1NjhjNVx1NjhjOFx1NjhjY1x1NjhjZiJdLFsiOGZjNGExIiwiXHU2OGQwXHU2OGQxXHU2OGQzXHU2OGQ2XHU2OGQ5XHU2''@;'; put 'put ''OGRjXHU2OGRkXHU2OGU1XHU2OGU4XHU2OGVhXHU2OGViXHU2OGVjXHU2OGVkXHU2OGYwXHU2OGYxXHU2OGY1XHU2OGY2XHU2OGZiXHU2OGZjXHU2OGZkXHU2OTA2XHU2OTA5XHU2OTBhXHU2OTEwXHU2OTExXHU2OTEzXHU2OTE2XHU2OTE3XHU2OTMxXHU2OTMzXHU2OTM1XHU2OTM4XHU2OTNi''@;'; put 'put ''XHU2OTQyXHU2OTQ1XHU2OTQ5XHU2OTRlXHU2OTU3XHU2OTViXHU2OTYzXHU2OTY0XHU2OTY1XHU2OTY2XHU2OTY4XHU2OTY5XHU2OTZjXHU2OTcwXHU2OTcxXHU2OTcyXHU2OTdhXHU2OTdiXHU2OTdmXHU2OTgwXHU2OThkXHU2OTkyXHU2OTk2XHU2OTk4XHU2OWExXHU2OWE1XHU2OWE2XHU2''@;'; put 'put ''OWE4XHU2OWFiXHU2OWFkXHU2OWFmXHU2OWI3XHU2OWI4XHU2OWJhXHU2OWJjXHU2OWM1XHU2OWM4XHU2OWQxXHU2OWQ2XHU2OWQ3XHU2OWUyXHU2OWU1XHU2OWVlXHU2OWVmXHU2OWYxXHU2OWYzXHU2OWY1XHU2OWZlXHU2YTAwXHU2YTAxXHU2YTAzXHU2YTBmXHU2YTExXHU2YTE1XHU2YTFh''@;'; put 'put ''XHU2YTFkXHU2YTIwXHU2YTI0XHU2YTI4XHU2YTMwXHU2YTMyIl0sWyI4ZmM1YTEiLCJcdTZhMzRcdTZhMzdcdTZhM2JcdTZhM2VcdTZhM2ZcdTZhNDVcdTZhNDZcdTZhNDlcdTZhNGFcdTZhNGVcdTZhNTBcdTZhNTFcdTZhNTJcdTZhNTVcdTZhNTZcdTZhNWJcdTZhNjRcdTZhNjdcdTZhNmFc''@;'; put 'put ''dTZhNzFcdTZhNzNcdTZhN2VcdTZhODFcdTZhODNcdTZhODZcdTZhODdcdTZhODlcdTZhOGJcdTZhOTFcdTZhOWJcdTZhOWRcdTZhOWVcdTZhOWZcdTZhYTVcdTZhYWJcdTZhYWZcdTZhYjBcdTZhYjFcdTZhYjRcdTZhYmRcdTZhYmVcdTZhYmZcdTZhYzZcdTZhYzlcdTZhYzhcdTZhY2NcdTZh''@;'; put 'put ''ZDBcdTZhZDRcdTZhZDVcdTZhZDZcdTZhZGNcdTZhZGRcdTZhZTRcdTZhZTdcdTZhZWNcdTZhZjBcdTZhZjFcdTZhZjJcdTZhZmNcdTZhZmRcdTZiMDJcdTZiMDNcdTZiMDZcdTZiMDdcdTZiMDlcdTZiMGZcdTZiMTBcdTZiMTFcdTZiMTdcdTZiMWJcdTZiMWVcdTZiMjRcdTZiMjhcdTZiMmJc''@;'; put 'put ''dTZiMmNcdTZiMmZcdTZiMzVcdTZiMzZcdTZiM2JcdTZiM2ZcdTZiNDZcdTZiNGFcdTZiNGRcdTZiNTJcdTZiNTZcdTZiNThcdTZiNWRcdTZiNjBcdTZiNjdcdTZiNmJcdTZiNmVcdTZiNzBcdTZiNzVcdTZiN2QiXSxbIjhmYzZhMSIsIlx1NmI3ZVx1NmI4Mlx1NmI4NVx1NmI5N1x1NmI5Ylx1''@;'; put 'put ''NmI5Zlx1NmJhMFx1NmJhMlx1NmJhM1x1NmJhOFx1NmJhOVx1NmJhY1x1NmJhZFx1NmJhZVx1NmJiMFx1NmJiOFx1NmJiOVx1NmJiZFx1NmJiZVx1NmJjM1x1NmJjNFx1NmJjOVx1NmJjY1x1NmJkNlx1NmJkYVx1NmJlMVx1NmJlM1x1NmJlNlx1NmJlN1x1NmJlZVx1NmJmMVx1NmJmN1x1NmJm''@;'; put 'put ''OVx1NmJmZlx1NmMwMlx1NmMwNFx1NmMwNVx1NmMwOVx1NmMwZFx1NmMwZVx1NmMxMFx1NmMxMlx1NmMxOVx1NmMxZlx1NmMyNlx1NmMyN1x1NmMyOFx1NmMyY1x1NmMyZVx1NmMzM1x1NmMzNVx1NmMzNlx1NmMzYVx1NmMzYlx1NmMzZlx1NmM0YVx1NmM0Ylx1NmM0ZFx1NmM0Zlx1NmM1Mlx1''@;'; put 'put ''NmM1NFx1NmM1OVx1NmM1Ylx1NmM1Y1x1NmM2Ylx1NmM2ZFx1NmM2Zlx1NmM3NFx1NmM3Nlx1NmM3OFx1NmM3OVx1NmM3Ylx1NmM4NVx1NmM4Nlx1NmM4N1x1NmM4OVx1NmM5NFx1NmM5NVx1NmM5N1x1NmM5OFx1NmM5Y1x1NmM5Zlx1NmNiMFx1NmNiMlx1NmNiNFx1NmNjMlx1NmNjNlx1NmNj''@;'; put 'put ''ZFx1NmNjZlx1NmNkMFx1NmNkMVx1NmNkMlx1NmNkNFx1NmNkNiJdLFsiOGZjN2ExIiwiXHU2Y2RhXHU2Y2RjXHU2Y2UwXHU2Y2U3XHU2Y2U5XHU2Y2ViXHU2Y2VjXHU2Y2VlXHU2Y2YyXHU2Y2Y0XHU2ZDA0XHU2ZDA3XHU2ZDBhXHU2ZDBlXHU2ZDBmXHU2ZDExXHU2ZDEzXHU2ZDFhXHU2ZDI2''@;'; put 'put ''XHU2ZDI3XHU2ZDI4XHU2YzY3XHU2ZDJlXHU2ZDJmXHU2ZDMxXHU2ZDM5XHU2ZDNjXHU2ZDNmXHU2ZDU3XHU2ZDVlXHU2ZDVmXHU2ZDYxXHU2ZDY1XHU2ZDY3XHU2ZDZmXHU2ZDcwXHU2ZDdjXHU2ZDgyXHU2ZDg3XHU2ZDkxXHU2ZDkyXHU2ZDk0XHU2ZDk2XHU2ZDk3XHU2ZDk4XHU2ZGFhXHU2''@;'; put 'put ''ZGFjXHU2ZGI0XHU2ZGI3XHU2ZGI5XHU2ZGJkXHU2ZGJmXHU2ZGM0XHU2ZGM4XHU2ZGNhXHU2ZGNlXHU2ZGNmXHU2ZGQ2XHU2ZGRiXHU2ZGRkXHU2ZGRmXHU2ZGUwXHU2ZGUyXHU2ZGU1XHU2ZGU5XHU2ZGVmXHU2ZGYwXHU2ZGY0XHU2ZGY2XHU2ZGZjXHU2ZTAwXHU2ZTA0XHU2ZTFlXHU2ZTIy''@;'; put 'put ''XHU2ZTI3XHU2ZTMyXHU2ZTM2XHU2ZTM5XHU2ZTNiXHU2ZTNjXHU2ZTQ0XHU2ZTQ1XHU2ZTQ4XHU2ZTQ5XHU2ZTRiXHU2ZTRmXHU2ZTUxXHU2ZTUyXHU2ZTUzXHU2ZTU0XHU2ZTU3XHU2ZTVjXHU2ZTVkXHU2ZTVlIl0sWyI4ZmM4YTEiLCJcdTZlNjJcdTZlNjNcdTZlNjhcdTZlNzNcdTZlN2Jc''@;'; put 'put ''dTZlN2RcdTZlOGRcdTZlOTNcdTZlOTlcdTZlYTBcdTZlYTdcdTZlYWRcdTZlYWVcdTZlYjFcdTZlYjNcdTZlYmJcdTZlYmZcdTZlYzBcdTZlYzFcdTZlYzNcdTZlYzdcdTZlYzhcdTZlY2FcdTZlY2RcdTZlY2VcdTZlY2ZcdTZlZWJcdTZlZWRcdTZlZWVcdTZlZjlcdTZlZmJcdTZlZmRcdTZm''@;'; put 'put ''MDRcdTZmMDhcdTZmMGFcdTZmMGNcdTZmMGRcdTZmMTZcdTZmMThcdTZmMWFcdTZmMWJcdTZmMjZcdTZmMjlcdTZmMmFcdTZmMmZcdTZmMzBcdTZmMzNcdTZmMzZcdTZmM2JcdTZmM2NcdTZmMmRcdTZmNGZcdTZmNTFcdTZmNTJcdTZmNTNcdTZmNTdcdTZmNTlcdTZmNWFcdTZmNWRcdTZmNWVc''@;'; put 'put ''dTZmNjFcdTZmNjJcdTZmNjhcdTZmNmNcdTZmN2RcdTZmN2VcdTZmODNcdTZmODdcdTZmODhcdTZmOGJcdTZmOGNcdTZmOGRcdTZmOTBcdTZmOTJcdTZmOTNcdTZmOTRcdTZmOTZcdTZmOWFcdTZmOWZcdTZmYTBcdTZmYTVcdTZmYTZcdTZmYTdcdTZmYThcdTZmYWVcdTZmYWZcdTZmYjBcdTZm''@;'; put 'put ''YjVcdTZmYjZcdTZmYmNcdTZmYzVcdTZmYzdcdTZmYzhcdTZmY2EiXSxbIjhmYzlhMSIsIlx1NmZkYVx1NmZkZVx1NmZlOFx1NmZlOVx1NmZmMFx1NmZmNVx1NmZmOVx1NmZmY1x1NmZmZFx1NzAwMFx1NzAwNVx1NzAwNlx1NzAwN1x1NzAwZFx1NzAxN1x1NzAyMFx1NzAyM1x1NzAyZlx1NzAz''@;'; put 'put ''NFx1NzAzN1x1NzAzOVx1NzAzY1x1NzA0M1x1NzA0NFx1NzA0OFx1NzA0OVx1NzA0YVx1NzA0Ylx1NzA1NFx1NzA1NVx1NzA1ZFx1NzA1ZVx1NzA0ZVx1NzA2NFx1NzA2NVx1NzA2Y1x1NzA2ZVx1NzA3NVx1NzA3Nlx1NzA3ZVx1NzA4MVx1NzA4NVx1NzA4Nlx1NzA5NCIsNCwiXHU3MDliXHU3''@;'; put 'put ''MGE0XHU3MGFiXHU3MGIwXHU3MGIxXHU3MGI0XHU3MGI3XHU3MGNhXHU3MGQxXHU3MGQzXHU3MGQ0XHU3MGQ1XHU3MGQ2XHU3MGQ4XHU3MGRjXHU3MGU0XHU3MGZhXHU3MTAzIiw0LCJcdTcxMGJcdTcxMGNcdTcxMGZcdTcxMWVcdTcxMjBcdTcxMmJcdTcxMmRcdTcxMmZcdTcxMzBcdTcxMzFc''@;'; put 'put ''dTcxMzhcdTcxNDFcdTcxNDVcdTcxNDZcdTcxNDdcdTcxNGFcdTcxNGJcdTcxNTBcdTcxNTJcdTcxNTdcdTcxNWFcdTcxNWNcdTcxNWVcdTcxNjAiXSxbIjhmY2FhMSIsIlx1NzE2OFx1NzE3OVx1NzE4MFx1NzE4NVx1NzE4N1x1NzE4Y1x1NzE5Mlx1NzE5YVx1NzE5Ylx1NzFhMFx1NzFhMlx1''@;'; put 'put ''NzFhZlx1NzFiMFx1NzFiMlx1NzFiM1x1NzFiYVx1NzFiZlx1NzFjMFx1NzFjMVx1NzFjNFx1NzFjYlx1NzFjY1x1NzFkM1x1NzFkNlx1NzFkOVx1NzFkYVx1NzFkY1x1NzFmOFx1NzFmZVx1NzIwMFx1NzIwN1x1NzIwOFx1NzIwOVx1NzIxM1x1NzIxN1x1NzIxYVx1NzIxZFx1NzIxZlx1NzIy''@;'; put 'put ''NFx1NzIyYlx1NzIyZlx1NzIzNFx1NzIzOFx1NzIzOVx1NzI0MVx1NzI0Mlx1NzI0M1x1NzI0NVx1NzI0ZVx1NzI0Zlx1NzI1MFx1NzI1M1x1NzI1NVx1NzI1Nlx1NzI1YVx1NzI1Y1x1NzI1ZVx1NzI2MFx1NzI2M1x1NzI2OFx1NzI2Ylx1NzI2ZVx1NzI2Zlx1NzI3MVx1NzI3N1x1NzI3OFx1''@;'; put 'put ''NzI3Ylx1NzI3Y1x1NzI3Zlx1NzI4NFx1NzI4OVx1NzI4ZFx1NzI4ZVx1NzI5M1x1NzI5Ylx1NzJhOFx1NzJhZFx1NzJhZVx1NzJiMVx1NzJiNFx1NzJiZVx1NzJjMVx1NzJjN1x1NzJjOVx1NzJjY1x1NzJkNVx1NzJkNlx1NzJkOFx1NzJkZlx1NzJlNVx1NzJmM1x1NzJmNFx1NzJmYVx1NzJm''@;'; put 'put ''YiJdLFsiOGZjYmExIiwiXHU3MmZlXHU3MzAyXHU3MzA0XHU3MzA1XHU3MzA3XHU3MzBiXHU3MzBkXHU3MzEyXHU3MzEzXHU3MzE4XHU3MzE5XHU3MzFlXHU3MzIyXHU3MzI0XHU3MzI3XHU3MzI4XHU3MzJjXHU3MzMxXHU3MzMyXHU3MzM1XHU3MzNhXHU3MzNiXHU3MzNkXHU3MzQzXHU3MzRk''@;'; put 'put ''XHU3MzUwXHU3MzUyXHU3MzU2XHU3MzU4XHU3MzVkXHU3MzVlXHU3MzVmXHU3MzYwXHU3MzY2XHU3MzY3XHU3MzY5XHU3MzZiXHU3MzZjXHU3MzZlXHU3MzZmXHU3MzcxXHU3Mzc3XHU3Mzc5XHU3MzdjXHU3MzgwXHU3MzgxXHU3MzgzXHU3Mzg1XHU3Mzg2XHU3MzhlXHU3MzkwXHU3MzkzXHU3''@;'; put 'put ''Mzk1XHU3Mzk3XHU3Mzk4XHU3MzljXHU3MzllXHU3MzlmXHU3M2EwXHU3M2EyXHU3M2E1XHU3M2E2XHU3M2FhXHU3M2FiXHU3M2FkXHU3M2I1XHU3M2I3XHU3M2I5XHU3M2JjXHU3M2JkXHU3M2JmXHU3M2M1XHU3M2M2XHU3M2M5XHU3M2NiXHU3M2NjXHU3M2NmXHU3M2QyXHU3M2QzXHU3M2Q2''@;'; put 'put ''XHU3M2Q5XHU3M2RkXHU3M2UxXHU3M2UzXHU3M2U2XHU3M2U3XHU3M2U5XHU3M2Y0XHU3M2Y1XHU3M2Y3XHU3M2Y5XHU3M2ZhXHU3M2ZiXHU3M2ZkIl0sWyI4ZmNjYTEiLCJcdTczZmZcdTc0MDBcdTc0MDFcdTc0MDRcdTc0MDdcdTc0MGFcdTc0MTFcdTc0MWFcdTc0MWJcdTc0MjRcdTc0MjZc''@;'; put 'put ''dTc0MjgiLDksIlx1NzQzOVx1NzQ0MFx1NzQ0M1x1NzQ0NFx1NzQ0Nlx1NzQ0N1x1NzQ0Ylx1NzQ0ZFx1NzQ1MVx1NzQ1Mlx1NzQ1N1x1NzQ1ZFx1NzQ2Mlx1NzQ2Nlx1NzQ2N1x1NzQ2OFx1NzQ2Ylx1NzQ2ZFx1NzQ2ZVx1NzQ3MVx1NzQ3Mlx1NzQ4MFx1NzQ4MVx1NzQ4NVx1NzQ4Nlx1NzQ4''@;'; put 'put ''N1x1NzQ4OVx1NzQ4Zlx1NzQ5MFx1NzQ5MVx1NzQ5Mlx1NzQ5OFx1NzQ5OVx1NzQ5YVx1NzQ5Y1x1NzQ5Zlx1NzRhMFx1NzRhMVx1NzRhM1x1NzRhNlx1NzRhOFx1NzRhOVx1NzRhYVx1NzRhYlx1NzRhZVx1NzRhZlx1NzRiMVx1NzRiMlx1NzRiNVx1NzRiOVx1NzRiYlx1NzRiZlx1NzRjOFx1''@;'; put 'put ''NzRjOVx1NzRjY1x1NzRkMFx1NzRkM1x1NzRkOFx1NzRkYVx1NzRkYlx1NzRkZVx1NzRkZlx1NzRlNFx1NzRlOFx1NzRlYVx1NzRlYlx1NzRlZlx1NzRmNFx1NzRmYVx1NzRmYlx1NzRmY1x1NzRmZlx1NzUwNiJdLFsiOGZjZGExIiwiXHU3NTEyXHU3NTE2XHU3NTE3XHU3NTIwXHU3NTIxXHU3''@;'; put 'put ''NTI0XHU3NTI3XHU3NTI5XHU3NTJhXHU3NTJmXHU3NTM2XHU3NTM5XHU3NTNkXHU3NTNlXHU3NTNmXHU3NTQwXHU3NTQzXHU3NTQ3XHU3NTQ4XHU3NTRlXHU3NTUwXHU3NTUyXHU3NTU3XHU3NTVlXHU3NTVmXHU3NTYxXHU3NTZmXHU3NTcxXHU3NTc5Iiw1LCJcdTc1ODFcdTc1ODVcdTc1OTBc''@;'; put 'put ''dTc1OTJcdTc1OTNcdTc1OTVcdTc1OTlcdTc1OWNcdTc1YTJcdTc1YTRcdTc1YjRcdTc1YmFcdTc1YmZcdTc1YzBcdTc1YzFcdTc1YzRcdTc1YzZcdTc1Y2NcdTc1Y2VcdTc1Y2ZcdTc1ZDdcdTc1ZGNcdTc1ZGZcdTc1ZTBcdTc1ZTFcdTc1ZTRcdTc1ZTdcdTc1ZWNcdTc1ZWVcdTc1ZWZcdTc1''@;'; put 'put ''ZjFcdTc1ZjlcdTc2MDBcdTc2MDJcdTc2MDNcdTc2MDRcdTc2MDdcdTc2MDhcdTc2MGFcdTc2MGNcdTc2MGZcdTc2MTJcdTc2MTNcdTc2MTVcdTc2MTZcdTc2MTlcdTc2MWJcdTc2MWNcdTc2MWRcdTc2MWVcdTc2MjNcdTc2MjVcdTc2MjZcdTc2MjlcdTc2MmRcdTc2MzJcdTc2MzNcdTc2MzVc''@;'; put 'put ''dTc2MzhcdTc2MzkiXSxbIjhmY2VhMSIsIlx1NzYzYVx1NzYzY1x1NzY0YVx1NzY0MFx1NzY0MVx1NzY0M1x1NzY0NFx1NzY0NVx1NzY0OVx1NzY0Ylx1NzY1NVx1NzY1OVx1NzY1Zlx1NzY2NFx1NzY2NVx1NzY2ZFx1NzY2ZVx1NzY2Zlx1NzY3MVx1NzY3NFx1NzY4MVx1NzY4NVx1NzY4Y1x1''@;'; put 'put ''NzY4ZFx1NzY5NVx1NzY5Ylx1NzY5Y1x1NzY5ZFx1NzY5Zlx1NzZhMFx1NzZhMiIsNiwiXHU3NmFhXHU3NmFkXHU3NmJkXHU3NmMxXHU3NmM1XHU3NmM5XHU3NmNiXHU3NmNjXHU3NmNlXHU3NmQ0XHU3NmQ5XHU3NmUwXHU3NmU2XHU3NmU4XHU3NmVjXHU3NmYwXHU3NmYxXHU3NmY2XHU3NmY5''@;'; put 'put ''XHU3NmZjXHU3NzAwXHU3NzA2XHU3NzBhXHU3NzBlXHU3NzEyXHU3NzE0XHU3NzE1XHU3NzE3XHU3NzE5XHU3NzFhXHU3NzFjXHU3NzIyXHU3NzI4XHU3NzJkXHU3NzJlXHU3NzJmXHU3NzM0XHU3NzM1XHU3NzM2XHU3NzM5XHU3NzNkXHU3NzNlXHU3NzQyXHU3NzQ1XHU3NzQ2XHU3NzRhXHU3''@;'; put 'put ''NzRkXHU3NzRlXHU3NzRmXHU3NzUyXHU3NzU2XHU3NzU3XHU3NzVjXHU3NzVlXHU3NzVmXHU3NzYwXHU3NzYyIl0sWyI4ZmNmYTEiLCJcdTc3NjRcdTc3NjdcdTc3NmFcdTc3NmNcdTc3NzBcdTc3NzJcdTc3NzNcdTc3NzRcdTc3N2FcdTc3N2RcdTc3ODBcdTc3ODRcdTc3OGNcdTc3OGRcdTc3''@;'; put 'put ''OTRcdTc3OTVcdTc3OTZcdTc3OWFcdTc3OWZcdTc3YTJcdTc3YTdcdTc3YWFcdTc3YWVcdTc3YWZcdTc3YjFcdTc3YjVcdTc3YmVcdTc3YzNcdTc3YzlcdTc3ZDFcdTc3ZDJcdTc3ZDVcdTc3ZDlcdTc3ZGVcdTc3ZGZcdTc3ZTBcdTc3ZTRcdTc3ZTZcdTc3ZWFcdTc3ZWNcdTc3ZjBcdTc3ZjFc''@;'; put 'put ''dTc3ZjRcdTc3ZjhcdTc3ZmJcdTc4MDVcdTc4MDZcdTc4MDlcdTc4MGRcdTc4MGVcdTc4MTFcdTc4MWRcdTc4MjFcdTc4MjJcdTc4MjNcdTc4MmRcdTc4MmVcdTc4MzBcdTc4MzVcdTc4MzdcdTc4NDNcdTc4NDRcdTc4NDdcdTc4NDhcdTc4NGNcdTc4NGVcdTc4NTJcdTc4NWNcdTc4NWVcdTc4''@;'; put 'put ''NjBcdTc4NjFcdTc4NjNcdTc4NjRcdTc4NjhcdTc4NmFcdTc4NmVcdTc4N2FcdTc4N2VcdTc4OGFcdTc4OGZcdTc4OTRcdTc4OThcdTc4YTFcdTc4OWRcdTc4OWVcdTc4OWZcdTc4YTRcdTc4YThcdTc4YWNcdTc4YWRcdTc4YjBcdTc4YjFcdTc4YjJcdTc4YjMiXSxbIjhmZDBhMSIsIlx1Nzhi''@;'; put 'put ''Ylx1NzhiZFx1NzhiZlx1NzhjN1x1NzhjOFx1NzhjOVx1NzhjY1x1NzhjZVx1NzhkMlx1NzhkM1x1NzhkNVx1NzhkNlx1NzhlNFx1NzhkYlx1NzhkZlx1NzhlMFx1NzhlMVx1NzhlNlx1NzhlYVx1NzhmMlx1NzhmM1x1NzkwMFx1NzhmNlx1NzhmN1x1NzhmYVx1NzhmYlx1NzhmZlx1NzkwNlx1''@;'; put 'put ''NzkwY1x1NzkxMFx1NzkxYVx1NzkxY1x1NzkxZVx1NzkxZlx1NzkyMFx1NzkyNVx1NzkyN1x1NzkyOVx1NzkyZFx1NzkzMVx1NzkzNFx1NzkzNVx1NzkzYlx1NzkzZFx1NzkzZlx1Nzk0NFx1Nzk0NVx1Nzk0Nlx1Nzk0YVx1Nzk0Ylx1Nzk0Zlx1Nzk1MVx1Nzk1NFx1Nzk1OFx1Nzk1Ylx1Nzk1''@;'; put 'put ''Y1x1Nzk2N1x1Nzk2OVx1Nzk2Ylx1Nzk3Mlx1Nzk3OVx1Nzk3Ylx1Nzk3Y1x1Nzk3ZVx1Nzk4Ylx1Nzk4Y1x1Nzk5MVx1Nzk5M1x1Nzk5NFx1Nzk5NVx1Nzk5Nlx1Nzk5OFx1Nzk5Ylx1Nzk5Y1x1NzlhMVx1NzlhOFx1NzlhOVx1NzlhYlx1NzlhZlx1NzliMVx1NzliNFx1NzliOFx1NzliYlx1''@;'; put 'put ''NzljMlx1NzljNFx1NzljN1x1NzljOFx1NzljYVx1NzljZlx1NzlkNFx1NzlkNlx1NzlkYVx1NzlkZFx1NzlkZSJdLFsiOGZkMWExIiwiXHU3OWUwXHU3OWUyXHU3OWU1XHU3OWVhXHU3OWViXHU3OWVkXHU3OWYxXHU3OWY4XHU3OWZjXHU3YTAyXHU3YTAzXHU3YTA3XHU3YTA5XHU3YTBhXHU3''@;'; put 'put ''YTBjXHU3YTExXHU3YTE1XHU3YTFiXHU3YTFlXHU3YTIxXHU3YTI3XHU3YTJiXHU3YTJkXHU3YTJmXHU3YTMwXHU3YTM0XHU3YTM1XHU3YTM4XHU3YTM5XHU3YTNhXHU3YTQ0XHU3YTQ1XHU3YTQ3XHU3YTQ4XHU3YTRjXHU3YTU1XHU3YTU2XHU3YTU5XHU3YTVjXHU3YTVkXHU3YTVmXHU3YTYw''@;'; put 'put ''XHU3YTY1XHU3YTY3XHU3YTZhXHU3YTZkXHU3YTc1XHU3YTc4XHU3YTdlXHU3YTgwXHU3YTgyXHU3YTg1XHU3YTg2XHU3YThhXHU3YThiXHU3YTkwXHU3YTkxXHU3YTk0XHU3YTllXHU3YWEwXHU3YWEzXHU3YWFjXHU3YWIzXHU3YWI1XHU3YWI5XHU3YWJiXHU3YWJjXHU3YWM2XHU3YWM5XHU3''@;'; put 'put ''YWNjXHU3YWNlXHU3YWQxXHU3YWRiXHU3YWU4XHU3YWU5XHU3YWViXHU3YWVjXHU3YWYxXHU3YWY0XHU3YWZiXHU3YWZkXHU3YWZlXHU3YjA3XHU3YjE0XHU3YjFmXHU3YjIzXHU3YjI3XHU3YjI5XHU3YjJhXHU3YjJiXHU3YjJkXHU3YjJlXHU3YjJmXHU3YjMwIl0sWyI4ZmQyYTEiLCJcdTdi''@;'; put 'put ''MzFcdTdiMzRcdTdiM2RcdTdiM2ZcdTdiNDBcdTdiNDFcdTdiNDdcdTdiNGVcdTdiNTVcdTdiNjBcdTdiNjRcdTdiNjZcdTdiNjlcdTdiNmFcdTdiNmRcdTdiNmZcdTdiNzJcdTdiNzNcdTdiNzdcdTdiODRcdTdiODlcdTdiOGVcdTdiOTBcdTdiOTFcdTdiOTZcdTdiOWJcdTdiOWVcdTdiYTBc''@;'; put 'put ''dTdiYTVcdTdiYWNcdTdiYWZcdTdiYjBcdTdiYjJcdTdiYjVcdTdiYjZcdTdiYmFcdTdiYmJcdTdiYmNcdTdiYmRcdTdiYzJcdTdiYzVcdTdiYzhcdTdiY2FcdTdiZDRcdTdiZDZcdTdiZDdcdTdiZDlcdTdiZGFcdTdiZGJcdTdiZThcdTdiZWFcdTdiZjJcdTdiZjRcdTdiZjVcdTdiZjhcdTdi''@;'; put 'put ''ZjlcdTdiZmFcdTdiZmNcdTdiZmVcdTdjMDFcdTdjMDJcdTdjMDNcdTdjMDRcdTdjMDZcdTdjMDlcdTdjMGJcdTdjMGNcdTdjMGVcdTdjMGZcdTdjMTlcdTdjMWJcdTdjMjBcdTdjMjVcdTdjMjZcdTdjMjhcdTdjMmNcdTdjMzFcdTdjMzNcdTdjMzRcdTdjMzZcdTdjMzlcdTdjM2FcdTdjNDZc''@;'; put 'put ''dTdjNGFcdTdjNTVcdTdjNTFcdTdjNTJcdTdjNTNcdTdjNTkiLDVdLFsiOGZkM2ExIiwiXHU3YzYxXHU3YzYzXHU3YzY3XHU3YzY5XHU3YzZkXHU3YzZlXHU3YzcwXHU3YzcyXHU3Yzc5XHU3YzdjXHU3YzdkXHU3Yzg2XHU3Yzg3XHU3YzhmXHU3Yzk0XHU3YzllXHU3Y2EwXHU3Y2E2XHU3Y2Iw''@;'; put 'put ''XHU3Y2I2XHU3Y2I3XHU3Y2JhXHU3Y2JiXHU3Y2JjXHU3Y2JmXHU3Y2M0XHU3Y2M3XHU3Y2M4XHU3Y2M5XHU3Y2NkXHU3Y2NmXHU3Y2QzXHU3Y2Q0XHU3Y2Q1XHU3Y2Q3XHU3Y2Q5XHU3Y2RhXHU3Y2RkXHU3Y2U2XHU3Y2U5XHU3Y2ViXHU3Y2Y1XHU3ZDAzXHU3ZDA3XHU3ZDA4XHU3ZDA5XHU3''@;'; put 'put ''ZDBmXHU3ZDExXHU3ZDEyXHU3ZDEzXHU3ZDE2XHU3ZDFkXHU3ZDFlXHU3ZDIzXHU3ZDI2XHU3ZDJhXHU3ZDJkXHU3ZDMxXHU3ZDNjXHU3ZDNkXHU3ZDNlXHU3ZDQwXHU3ZDQxXHU3ZDQ3XHU3ZDQ4XHU3ZDRkXHU3ZDUxXHU3ZDUzXHU3ZDU3XHU3ZDU5XHU3ZDVhXHU3ZDVjXHU3ZDVkXHU3ZDY1''@;'; put 'put ''XHU3ZDY3XHU3ZDZhXHU3ZDcwXHU3ZDc4XHU3ZDdhXHU3ZDdiXHU3ZDdmXHU3ZDgxXHU3ZDgyXHU3ZDgzXHU3ZDg1XHU3ZDg2XHU3ZDg4XHU3ZDhiXHU3ZDhjXHU3ZDhkXHU3ZDkxXHU3ZDk2XHU3ZDk3XHU3ZDlkIl0sWyI4ZmQ0YTEiLCJcdTdkOWVcdTdkYTZcdTdkYTdcdTdkYWFcdTdkYjNc''@;'; put 'put ''dTdkYjZcdTdkYjdcdTdkYjlcdTdkYzIiLDQsIlx1N2RjY1x1N2RjZFx1N2RjZVx1N2RkN1x1N2RkOVx1N2UwMFx1N2RlMlx1N2RlNVx1N2RlNlx1N2RlYVx1N2RlYlx1N2RlZFx1N2RmMVx1N2RmNVx1N2RmNlx1N2RmOVx1N2RmYVx1N2UwOFx1N2UxMFx1N2UxMVx1N2UxNVx1N2UxN1x1N2Ux''@;'; put 'put ''Y1x1N2UxZFx1N2UyMFx1N2UyN1x1N2UyOFx1N2UyY1x1N2UyZFx1N2UyZlx1N2UzM1x1N2UzNlx1N2UzZlx1N2U0NFx1N2U0NVx1N2U0N1x1N2U0ZVx1N2U1MFx1N2U1Mlx1N2U1OFx1N2U1Zlx1N2U2MVx1N2U2Mlx1N2U2NVx1N2U2Ylx1N2U2ZVx1N2U2Zlx1N2U3M1x1N2U3OFx1N2U3ZVx1''@;'; put 'put ''N2U4MVx1N2U4Nlx1N2U4N1x1N2U4YVx1N2U4ZFx1N2U5MVx1N2U5NVx1N2U5OFx1N2U5YVx1N2U5ZFx1N2U5ZVx1N2YzY1x1N2YzYlx1N2YzZFx1N2YzZVx1N2YzZlx1N2Y0M1x1N2Y0NFx1N2Y0N1x1N2Y0Zlx1N2Y1Mlx1N2Y1M1x1N2Y1Ylx1N2Y1Y1x1N2Y1ZFx1N2Y2MVx1N2Y2M1x1N2Y2''@;'; put 'put ''NFx1N2Y2NVx1N2Y2Nlx1N2Y2ZCJdLFsiOGZkNWExIiwiXHU3ZjcxXHU3ZjdkXHU3ZjdlXHU3ZjdmXHU3ZjgwXHU3ZjhiXHU3ZjhkXHU3ZjhmXHU3ZjkwXHU3ZjkxXHU3Zjk2XHU3Zjk3XHU3ZjljXHU3ZmExXHU3ZmEyXHU3ZmE2XHU3ZmFhXHU3ZmFkXHU3ZmI0XHU3ZmJjXHU3ZmJmXHU3ZmMw''@;'; put 'put ''XHU3ZmMzXHU3ZmM4XHU3ZmNlXHU3ZmNmXHU3ZmRiXHU3ZmRmXHU3ZmUzXHU3ZmU1XHU3ZmU4XHU3ZmVjXHU3ZmVlXHU3ZmVmXHU3ZmYyXHU3ZmZhXHU3ZmZkXHU3ZmZlXHU3ZmZmXHU4MDA3XHU4MDA4XHU4MDBhXHU4MDBkXHU4MDBlXHU4MDBmXHU4MDExXHU4MDEzXHU4MDE0XHU4MDE2XHU4''@;'; put 'put ''MDFkXHU4MDFlXHU4MDFmXHU4MDIwXHU4MDI0XHU4MDI2XHU4MDJjXHU4MDJlXHU4MDMwXHU4MDM0XHU4MDM1XHU4MDM3XHU4MDM5XHU4MDNhXHU4MDNjXHU4MDNlXHU4MDQwXHU4MDQ0XHU4MDYwXHU4MDY0XHU4MDY2XHU4MDZkXHU4MDcxXHU4MDc1XHU4MDgxXHU4MDg4XHU4MDhlXHU4MDlj''@;'; put 'put ''XHU4MDllXHU4MGE2XHU4MGE3XHU4MGFiXHU4MGI4XHU4MGI5XHU4MGM4XHU4MGNkXHU4MGNmXHU4MGQyXHU4MGQ0XHU4MGQ1XHU4MGQ3XHU4MGQ4XHU4MGUwXHU4MGVkXHU4MGVlIl0sWyI4ZmQ2YTEiLCJcdTgwZjBcdTgwZjJcdTgwZjNcdTgwZjZcdTgwZjlcdTgwZmFcdTgwZmVcdTgxMDNc''@;'; put 'put ''dTgxMGJcdTgxMTZcdTgxMTdcdTgxMThcdTgxMWNcdTgxMWVcdTgxMjBcdTgxMjRcdTgxMjdcdTgxMmNcdTgxMzBcdTgxMzVcdTgxM2FcdTgxM2NcdTgxNDVcdTgxNDdcdTgxNGFcdTgxNGNcdTgxNTJcdTgxNTdcdTgxNjBcdTgxNjFcdTgxNjdcdTgxNjhcdTgxNjlcdTgxNmRcdTgxNmZcdTgx''@;'; put 'put ''NzdcdTgxODFcdTgxOTBcdTgxODRcdTgxODVcdTgxODZcdTgxOGJcdTgxOGVcdTgxOTZcdTgxOThcdTgxOWJcdTgxOWVcdTgxYTJcdTgxYWVcdTgxYjJcdTgxYjRcdTgxYmJcdTgxY2JcdTgxYzNcdTgxYzVcdTgxY2FcdTgxY2VcdTgxY2ZcdTgxZDVcdTgxZDdcdTgxZGJcdTgxZGRcdTgxZGVc''@;'; put 'put ''dTgxZTFcdTgxZTRcdTgxZWJcdTgxZWNcdTgxZjBcdTgxZjFcdTgxZjJcdTgxZjVcdTgxZjZcdTgxZjhcdTgxZjlcdTgxZmRcdTgxZmZcdTgyMDBcdTgyMDNcdTgyMGZcdTgyMTNcdTgyMTRcdTgyMTlcdTgyMWFcdTgyMWRcdTgyMjFcdTgyMjJcdTgyMjhcdTgyMzJcdTgyMzRcdTgyM2FcdTgy''@;'; put 'put ''NDNcdTgyNDRcdTgyNDVcdTgyNDYiXSxbIjhmZDdhMSIsIlx1ODI0Ylx1ODI0ZVx1ODI0Zlx1ODI1MVx1ODI1Nlx1ODI1Y1x1ODI2MFx1ODI2M1x1ODI2N1x1ODI2ZFx1ODI3NFx1ODI3Ylx1ODI3ZFx1ODI3Zlx1ODI4MFx1ODI4MVx1ODI4M1x1ODI4NFx1ODI4N1x1ODI4OVx1ODI4YVx1ODI4''@;'; put 'put ''ZVx1ODI5MVx1ODI5NFx1ODI5Nlx1ODI5OFx1ODI5YVx1ODI5Ylx1ODJhMFx1ODJhMVx1ODJhM1x1ODJhNFx1ODJhN1x1ODJhOFx1ODJhOVx1ODJhYVx1ODJhZVx1ODJiMFx1ODJiMlx1ODJiNFx1ODJiN1x1ODJiYVx1ODJiY1x1ODJiZVx1ODJiZlx1ODJjNlx1ODJkMFx1ODJkNVx1ODJkYVx1''@;'; put 'put ''ODJlMFx1ODJlMlx1ODJlNFx1ODJlOFx1ODJlYVx1ODJlZFx1ODJlZlx1ODJmNlx1ODJmN1x1ODJmZFx1ODJmZVx1ODMwMFx1ODMwMVx1ODMwN1x1ODMwOFx1ODMwYVx1ODMwYlx1ODM1NFx1ODMxYlx1ODMxZFx1ODMxZVx1ODMxZlx1ODMyMVx1ODMyMlx1ODMyY1x1ODMyZFx1ODMyZVx1ODMz''@;'; put 'put ''MFx1ODMzM1x1ODMzN1x1ODMzYVx1ODMzY1x1ODMzZFx1ODM0Mlx1ODM0M1x1ODM0NFx1ODM0N1x1ODM0ZFx1ODM0ZVx1ODM1MVx1ODM1NVx1ODM1Nlx1ODM1N1x1ODM3MFx1ODM3OCJdLFsiOGZkOGExIiwiXHU4MzdkXHU4MzdmXHU4MzgwXHU4MzgyXHU4Mzg0XHU4Mzg2XHU4MzhkXHU4Mzky''@;'; put 'put ''XHU4Mzk0XHU4Mzk1XHU4Mzk4XHU4Mzk5XHU4MzliXHU4MzljXHU4MzlkXHU4M2E2XHU4M2E3XHU4M2E5XHU4M2FjXHU4M2JlXHU4M2JmXHU4M2MwXHU4M2M3XHU4M2M5XHU4M2NmXHU4M2QwXHU4M2QxXHU4M2Q0XHU4M2RkXHU4MzUzXHU4M2U4XHU4M2VhXHU4M2Y2XHU4M2Y4XHU4M2Y5XHU4''@;'; put 'put ''M2ZjXHU4NDAxXHU4NDA2XHU4NDBhXHU4NDBmXHU4NDExXHU4NDE1XHU4NDE5XHU4M2FkXHU4NDJmXHU4NDM5XHU4NDQ1XHU4NDQ3XHU4NDQ4XHU4NDRhXHU4NDRkXHU4NDRmXHU4NDUxXHU4NDUyXHU4NDU2XHU4NDU4XHU4NDU5XHU4NDVhXHU4NDVjXHU4NDYwXHU4NDY0XHU4NDY1XHU4NDY3''@;'; put 'put ''XHU4NDZhXHU4NDcwXHU4NDczXHU4NDc0XHU4NDc2XHU4NDc4XHU4NDdjXHU4NDdkXHU4NDgxXHU4NDg1XHU4NDkyXHU4NDkzXHU4NDk1XHU4NDllXHU4NGE2XHU4NGE4XHU4NGE5XHU4NGFhXHU4NGFmXHU4NGIxXHU4NGI0XHU4NGJhXHU4NGJkXHU4NGJlXHU4NGMwXHU4NGMyXHU4NGM3XHU4''@;'; put 'put ''NGM4XHU4NGNjXHU4NGNmXHU4NGQzIl0sWyI4ZmQ5YTEiLCJcdTg0ZGNcdTg0ZTdcdTg0ZWFcdTg0ZWZcdTg0ZjBcdTg0ZjFcdTg0ZjJcdTg0ZjdcdTg1MzJcdTg0ZmFcdTg0ZmJcdTg0ZmRcdTg1MDJcdTg1MDNcdTg1MDdcdTg1MGNcdTg1MGVcdTg1MTBcdTg1MWNcdTg1MWVcdTg1MjJcdTg1''@;'; put 'put ''MjNcdTg1MjRcdTg1MjVcdTg1MjdcdTg1MmFcdTg1MmJcdTg1MmZcdTg1MzNcdTg1MzRcdTg1MzZcdTg1M2ZcdTg1NDZcdTg1NGYiLDQsIlx1ODU1Nlx1ODU1OVx1ODU1YyIsNiwiXHU4NTY0XHU4NTZiXHU4NTZmXHU4NTc5XHU4NTdhXHU4NTdiXHU4NTdkXHU4NTdmXHU4NTgxXHU4NTg1XHU4''@;'; put 'put ''NTg2XHU4NTg5XHU4NThiXHU4NThjXHU4NThmXHU4NTkzXHU4NTk4XHU4NTlkXHU4NTlmXHU4NWEwXHU4NWEyXHU4NWE1XHU4NWE3XHU4NWI0XHU4NWI2XHU4NWI3XHU4NWI4XHU4NWJjXHU4NWJkXHU4NWJlXHU4NWJmXHU4NWMyXHU4NWM3XHU4NWNhXHU4NWNiXHU4NWNlXHU4NWFkXHU4NWQ4''@;'; put 'put ''XHU4NWRhXHU4NWRmXHU4NWUwXHU4NWU2XHU4NWU4XHU4NWVkXHU4NWYzXHU4NWY2XHU4NWZjIl0sWyI4ZmRhYTEiLCJcdTg1ZmZcdTg2MDBcdTg2MDRcdTg2MDVcdTg2MGRcdTg2MGVcdTg2MTBcdTg2MTFcdTg2MTJcdTg2MThcdTg2MTlcdTg2MWJcdTg2MWVcdTg2MjFcdTg2MjdcdTg2Mjlc''@;'; put 'put ''dTg2MzZcdTg2MzhcdTg2M2FcdTg2M2NcdTg2M2RcdTg2NDBcdTg2NDJcdTg2NDZcdTg2NTJcdTg2NTNcdTg2NTZcdTg2NTdcdTg2NThcdTg2NTlcdTg2NWRcdTg2NjAiLDQsIlx1ODY2OVx1ODY2Y1x1ODY2Zlx1ODY3NVx1ODY3Nlx1ODY3N1x1ODY3YVx1ODY4ZFx1ODY5MVx1ODY5Nlx1ODY5''@;'; put 'put ''OFx1ODY5YVx1ODY5Y1x1ODZhMVx1ODZhNlx1ODZhN1x1ODZhOFx1ODZhZFx1ODZiMVx1ODZiM1x1ODZiNFx1ODZiNVx1ODZiN1x1ODZiOFx1ODZiOVx1ODZiZlx1ODZjMFx1ODZjMVx1ODZjM1x1ODZjNVx1ODZkMVx1ODZkMlx1ODZkNVx1ODZkN1x1ODZkYVx1ODZkY1x1ODZlMFx1ODZlM1x1''@;'; put 'put ''ODZlNVx1ODZlN1x1ODY4OFx1ODZmYVx1ODZmY1x1ODZmZFx1ODcwNFx1ODcwNVx1ODcwN1x1ODcwYlx1ODcwZVx1ODcwZlx1ODcxMFx1ODcxM1x1ODcxNFx1ODcxOVx1ODcxZVx1ODcxZlx1ODcyMVx1ODcyMyJdLFsiOGZkYmExIiwiXHU4NzI4XHU4NzJlXHU4NzJmXHU4NzMxXHU4NzMyXHU4''@;'; put 'put ''NzM5XHU4NzNhXHU4NzNjXHU4NzNkXHU4NzNlXHU4NzQwXHU4NzQzXHU4NzQ1XHU4NzRkXHU4NzU4XHU4NzVkXHU4NzYxXHU4NzY0XHU4NzY1XHU4NzZmXHU4NzcxXHU4NzcyXHU4NzdiXHU4NzgzIiw2LCJcdTg3OGJcdTg3OGNcdTg3OTBcdTg3OTNcdTg3OTVcdTg3OTdcdTg3OThcdTg3OTlc''@;'; put 'put ''dTg3OWVcdTg3YTBcdTg3YTNcdTg3YTdcdTg3YWNcdTg3YWRcdTg3YWVcdTg3YjFcdTg3YjVcdTg3YmVcdTg3YmZcdTg3YzFcdTg3YzhcdTg3YzlcdTg3Y2FcdTg3Y2VcdTg3ZDVcdTg3ZDZcdTg3ZDlcdTg3ZGFcdTg3ZGNcdTg3ZGZcdTg3ZTJcdTg3ZTNcdTg3ZTRcdTg3ZWFcdTg3ZWJcdTg3''@;'; put 'put ''ZWRcdTg3ZjFcdTg3ZjNcdTg3ZjhcdTg3ZmFcdTg3ZmZcdTg4MDFcdTg4MDNcdTg4MDZcdTg4MDlcdTg4MGFcdTg4MGJcdTg4MTBcdTg4MTlcdTg4MTJcdTg4MTNcdTg4MTRcdTg4MThcdTg4MWFcdTg4MWJcdTg4MWNcdTg4MWVcdTg4MWZcdTg4MjhcdTg4MmRcdTg4MmVcdTg4MzBcdTg4MzJc''@;'; put 'put ''dTg4MzUiXSxbIjhmZGNhMSIsIlx1ODgzYVx1ODgzY1x1ODg0MVx1ODg0M1x1ODg0NVx1ODg0OFx1ODg0OVx1ODg0YVx1ODg0Ylx1ODg0ZVx1ODg1MVx1ODg1NVx1ODg1Nlx1ODg1OFx1ODg1YVx1ODg1Y1x1ODg1Zlx1ODg2MFx1ODg2NFx1ODg2OVx1ODg3MVx1ODg3OVx1ODg3Ylx1ODg4MFx1''@;'; put 'put ''ODg5OFx1ODg5YVx1ODg5Ylx1ODg5Y1x1ODg5Zlx1ODhhMFx1ODhhOFx1ODhhYVx1ODhiYVx1ODhiZFx1ODhiZVx1ODhjMFx1ODhjYSIsNCwiXHU4OGQxXHU4OGQyXHU4OGQzXHU4OGRiXHU4OGRlXHU4OGU3XHU4OGVmXHU4OGYwXHU4OGYxXHU4OGY1XHU4OGY3XHU4OTAxXHU4OTA2XHU4OTBk''@;'; put 'put ''XHU4OTBlXHU4OTBmXHU4OTE1XHU4OTE2XHU4OTE4XHU4OTE5XHU4OTFhXHU4OTFjXHU4OTIwXHU4OTI2XHU4OTI3XHU4OTI4XHU4OTMwXHU4OTMxXHU4OTMyXHU4OTM1XHU4OTM5XHU4OTNhXHU4OTNlXHU4OTQwXHU4OTQyXHU4OTQ1XHU4OTQ2XHU4OTQ5XHU4OTRmXHU4OTUyXHU4OTU3XHU4''@;'; put 'put ''OTVhXHU4OTViXHU4OTVjXHU4OTYxXHU4OTYyXHU4OTYzXHU4OTZiXHU4OTZlXHU4OTcwXHU4OTczXHU4OTc1XHU4OTdhIl0sWyI4ZmRkYTEiLCJcdTg5N2JcdTg5N2NcdTg5N2RcdTg5ODlcdTg5OGRcdTg5OTBcdTg5OTRcdTg5OTVcdTg5OWJcdTg5OWNcdTg5OWZcdTg5YTBcdTg5YTVcdTg5''@;'; put 'put ''YjBcdTg5YjRcdTg5YjVcdTg5YjZcdTg5YjdcdTg5YmNcdTg5ZDQiLDQsIlx1ODllNVx1ODllOVx1ODllYlx1ODllZFx1ODlmMVx1ODlmM1x1ODlmNlx1ODlmOVx1ODlmZFx1ODlmZlx1OGEwNFx1OGEwNVx1OGEwN1x1OGEwZlx1OGExMVx1OGExMlx1OGExNFx1OGExNVx1OGExZVx1OGEyMFx1''@;'; put 'put ''OGEyMlx1OGEyNFx1OGEyNlx1OGEyYlx1OGEyY1x1OGEyZlx1OGEzNVx1OGEzN1x1OGEzZFx1OGEzZVx1OGE0MFx1OGE0M1x1OGE0NVx1OGE0N1x1OGE0OVx1OGE0ZFx1OGE0ZVx1OGE1M1x1OGE1Nlx1OGE1N1x1OGE1OFx1OGE1Y1x1OGE1ZFx1OGE2MVx1OGE2NVx1OGE2N1x1OGE3NVx1OGE3''@;'; put 'put ''Nlx1OGE3N1x1OGE3OVx1OGE3YVx1OGE3Ylx1OGE3ZVx1OGE3Zlx1OGE4MFx1OGE4M1x1OGE4Nlx1OGE4Ylx1OGE4Zlx1OGE5MFx1OGE5Mlx1OGE5Nlx1OGE5N1x1OGE5OVx1OGE5Zlx1OGFhN1x1OGFhOVx1OGFhZVx1OGFhZlx1OGFiMyJdLFsiOGZkZWExIiwiXHU4YWI2XHU4YWI3XHU4YWJi''@;'; put 'put ''XHU4YWJlXHU4YWMzXHU4YWM2XHU4YWM4XHU4YWM5XHU4YWNhXHU4YWQxXHU4YWQzXHU4YWQ0XHU4YWQ1XHU4YWQ3XHU4YWRkXHU4YWRmXHU4YWVjXHU4YWYwXHU4YWY0XHU4YWY1XHU4YWY2XHU4YWZjXHU4YWZmXHU4YjA1XHU4YjA2XHU4YjBiXHU4YjExXHU4YjFjXHU4YjFlXHU4YjFmXHU4''@;'; put 'put ''YjBhXHU4YjJkXHU4YjMwXHU4YjM3XHU4YjNjXHU4YjQyIiw0LCJcdThiNDhcdThiNTJcdThiNTNcdThiNTRcdThiNTlcdThiNGRcdThiNWVcdThiNjNcdThiNmRcdThiNzZcdThiNzhcdThiNzlcdThiN2NcdThiN2VcdThiODFcdThiODRcdThiODVcdThiOGJcdThiOGRcdThiOGZcdThiOTRc''@;'; put 'put ''dThiOTVcdThiOWNcdThiOWVcdThiOWZcdThjMzhcdThjMzlcdThjM2RcdThjM2VcdThjNDVcdThjNDdcdThjNDlcdThjNGJcdThjNGZcdThjNTFcdThjNTNcdThjNTRcdThjNTdcdThjNThcdThjNWJcdThjNWRcdThjNTlcdThjNjNcdThjNjRcdThjNjZcdThjNjhcdThjNjlcdThjNmRcdThj''@;'; put 'put ''NzNcdThjNzVcdThjNzZcdThjN2JcdThjN2VcdThjODYiXSxbIjhmZGZhMSIsIlx1OGM4N1x1OGM4Ylx1OGM5MFx1OGM5Mlx1OGM5M1x1OGM5OVx1OGM5Ylx1OGM5Y1x1OGNhNFx1OGNiOVx1OGNiYVx1OGNjNVx1OGNjNlx1OGNjOVx1OGNjYlx1OGNjZlx1OGNkNlx1OGNkNVx1OGNkOVx1OGNk''@;'; put 'put ''ZFx1OGNlMVx1OGNlOFx1OGNlY1x1OGNlZlx1OGNmMFx1OGNmMlx1OGNmNVx1OGNmN1x1OGNmOFx1OGNmZVx1OGNmZlx1OGQwMVx1OGQwM1x1OGQwOVx1OGQxMlx1OGQxN1x1OGQxYlx1OGQ2NVx1OGQ2OVx1OGQ2Y1x1OGQ2ZVx1OGQ3Zlx1OGQ4Mlx1OGQ4NFx1OGQ4OFx1OGQ4ZFx1OGQ5MFx1''@;'; put 'put ''OGQ5MVx1OGQ5NVx1OGQ5ZVx1OGQ5Zlx1OGRhMFx1OGRhNlx1OGRhYlx1OGRhY1x1OGRhZlx1OGRiMlx1OGRiNVx1OGRiN1x1OGRiOVx1OGRiYlx1OGRjMFx1OGRjNVx1OGRjNlx1OGRjN1x1OGRjOFx1OGRjYVx1OGRjZVx1OGRkMVx1OGRkNFx1OGRkNVx1OGRkN1x1OGRkOVx1OGRlNFx1OGRl''@;'; put 'put ''NVx1OGRlN1x1OGRlY1x1OGRmMFx1OGRiY1x1OGRmMVx1OGRmMlx1OGRmNFx1OGRmZFx1OGUwMVx1OGUwNFx1OGUwNVx1OGUwNlx1OGUwYlx1OGUxMVx1OGUxNFx1OGUxNlx1OGUyMFx1OGUyMVx1OGUyMiJdLFsiOGZlMGExIiwiXHU4ZTIzXHU4ZTI2XHU4ZTI3XHU4ZTMxXHU4ZTMzXHU4ZTM2''@;'; put 'put ''XHU4ZTM3XHU4ZTM4XHU4ZTM5XHU4ZTNkXHU4ZTQwXHU4ZTQxXHU4ZTRiXHU4ZTRkXHU4ZTRlXHU4ZTRmXHU4ZTU0XHU4ZTViXHU4ZTVjXHU4ZTVkXHU4ZTVlXHU4ZTYxXHU4ZTYyXHU4ZTY5XHU4ZTZjXHU4ZTZkXHU4ZTZmXHU4ZTcwXHU4ZTcxXHU4ZTc5XHU4ZTdhXHU4ZTdiXHU4ZTgyXHU4''@;'; put 'put ''ZTgzXHU4ZTg5XHU4ZTkwXHU4ZTkyXHU4ZTk1XHU4ZTlhXHU4ZTliXHU4ZTlkXHU4ZTllXHU4ZWEyXHU4ZWE3XHU4ZWE5XHU4ZWFkXHU4ZWFlXHU4ZWIzXHU4ZWI1XHU4ZWJhXHU4ZWJiXHU4ZWMwXHU4ZWMxXHU4ZWMzXHU4ZWM0XHU4ZWM3XHU4ZWNmXHU4ZWQxXHU4ZWQ0XHU4ZWRjXHU4ZWU4''@;'; put 'put ''XHU4ZWVlXHU4ZWYwXHU4ZWYxXHU4ZWY3XHU4ZWY5XHU4ZWZhXHU4ZWVkXHU4ZjAwXHU4ZjAyXHU4ZjA3XHU4ZjA4XHU4ZjBmXHU4ZjEwXHU4ZjE2XHU4ZjE3XHU4ZjE4XHU4ZjFlXHU4ZjIwXHU4ZjIxXHU4ZjIzXHU4ZjI1XHU4ZjI3XHU4ZjI4XHU4ZjJjXHU4ZjJkXHU4ZjJlXHU4ZjM0XHU4''@;'; put 'put ''ZjM1XHU4ZjM2XHU4ZjM3XHU4ZjNhXHU4ZjQwXHU4ZjQxIl0sWyI4ZmUxYTEiLCJcdThmNDNcdThmNDdcdThmNGZcdThmNTEiLDQsIlx1OGY1OFx1OGY1ZFx1OGY1ZVx1OGY2NVx1OGY5ZFx1OGZhMFx1OGZhMVx1OGZhNFx1OGZhNVx1OGZhNlx1OGZiNVx1OGZiNlx1OGZiOFx1OGZiZVx1OGZj''@;'; put 'put ''MFx1OGZjMVx1OGZjNlx1OGZjYVx1OGZjYlx1OGZjZFx1OGZkMFx1OGZkMlx1OGZkM1x1OGZkNVx1OGZlMFx1OGZlM1x1OGZlNFx1OGZlOFx1OGZlZVx1OGZmMVx1OGZmNVx1OGZmNlx1OGZmYlx1OGZmZVx1OTAwMlx1OTAwNFx1OTAwOFx1OTAwY1x1OTAxOFx1OTAxYlx1OTAyOFx1OTAyOVx1''@;'; put 'put ''OTAyZlx1OTAyYVx1OTAyY1x1OTAyZFx1OTAzM1x1OTAzNFx1OTAzN1x1OTAzZlx1OTA0M1x1OTA0NFx1OTA0Y1x1OTA1Ylx1OTA1ZFx1OTA2Mlx1OTA2Nlx1OTA2N1x1OTA2Y1x1OTA3MFx1OTA3NFx1OTA3OVx1OTA4NVx1OTA4OFx1OTA4Ylx1OTA4Y1x1OTA4ZVx1OTA5MFx1OTA5NVx1OTA5''@;'; put 'put ''N1x1OTA5OFx1OTA5OVx1OTA5Ylx1OTBhMFx1OTBhMVx1OTBhMlx1OTBhNVx1OTBiMFx1OTBiMlx1OTBiM1x1OTBiNFx1OTBiNlx1OTBiZFx1OTBjY1x1OTBiZVx1OTBjMyJdLFsiOGZlMmExIiwiXHU5MGM0XHU5MGM1XHU5MGM3XHU5MGM4XHU5MGQ1XHU5MGQ3XHU5MGQ4XHU5MGQ5XHU5MGRj''@;'; put 'put ''XHU5MGRkXHU5MGRmXHU5MGU1XHU5MGQyXHU5MGY2XHU5MGViXHU5MGVmXHU5MGYwXHU5MGY0XHU5MGZlXHU5MGZmXHU5MTAwXHU5MTA0XHU5MTA1XHU5MTA2XHU5MTA4XHU5MTBkXHU5MTEwXHU5MTE0XHU5MTE2XHU5MTE3XHU5MTE4XHU5MTFhXHU5MTFjXHU5MTFlXHU5MTIwXHU5MTI1XHU5''@;'; put 'put ''MTIyXHU5MTIzXHU5MTI3XHU5MTI5XHU5MTJlXHU5MTJmXHU5MTMxXHU5MTM0XHU5MTM2XHU5MTM3XHU5MTM5XHU5MTNhXHU5MTNjXHU5MTNkXHU5MTQzXHU5MTQ3XHU5MTQ4XHU5MTRmXHU5MTUzXHU5MTU3XHU5MTU5XHU5MTVhXHU5MTViXHU5MTYxXHU5MTY0XHU5MTY3XHU5MTZkXHU5MTc0''@;'; put 'put ''XHU5MTc5XHU5MTdhXHU5MTdiXHU5MTgxXHU5MTgzXHU5MTg1XHU5MTg2XHU5MThhXHU5MThlXHU5MTkxXHU5MTkzXHU5MTk0XHU5MTk1XHU5MTk4XHU5MTllXHU5MWExXHU5MWE2XHU5MWE4XHU5MWFjXHU5MWFkXHU5MWFlXHU5MWIwXHU5MWIxXHU5MWIyXHU5MWIzXHU5MWI2XHU5MWJiXHU5''@;'; put 'put ''MWJjXHU5MWJkXHU5MWJmIl0sWyI4ZmUzYTEiLCJcdTkxYzJcdTkxYzNcdTkxYzVcdTkxZDNcdTkxZDRcdTkxZDdcdTkxZDlcdTkxZGFcdTkxZGVcdTkxZTRcdTkxZTVcdTkxZTlcdTkxZWFcdTkxZWMiLDUsIlx1OTFmN1x1OTFmOVx1OTFmYlx1OTFmZFx1OTIwMFx1OTIwMVx1OTIwNFx1OTIw''@;'; put 'put ''NVx1OTIwNlx1OTIwN1x1OTIwOVx1OTIwYVx1OTIwY1x1OTIxMFx1OTIxMlx1OTIxM1x1OTIxNlx1OTIxOFx1OTIxY1x1OTIxZFx1OTIyM1x1OTIyNFx1OTIyNVx1OTIyNlx1OTIyOFx1OTIyZVx1OTIyZlx1OTIzMFx1OTIzM1x1OTIzNVx1OTIzNlx1OTIzOFx1OTIzOVx1OTIzYVx1OTIzY1x1''@;'; put 'put ''OTIzZVx1OTI0MFx1OTI0Mlx1OTI0M1x1OTI0Nlx1OTI0N1x1OTI0YVx1OTI0ZFx1OTI0ZVx1OTI0Zlx1OTI1MVx1OTI1OFx1OTI1OVx1OTI1Y1x1OTI1ZFx1OTI2MFx1OTI2MVx1OTI2NVx1OTI2N1x1OTI2OFx1OTI2OVx1OTI2ZVx1OTI2Zlx1OTI3MFx1OTI3NSIsNCwiXHU5MjdiXHU5Mjdj''@;'; put 'put ''XHU5MjdkXHU5MjdmXHU5Mjg4XHU5Mjg5XHU5MjhhXHU5MjhkXHU5MjhlXHU5MjkyXHU5Mjk3Il0sWyI4ZmU0YTEiLCJcdTkyOTlcdTkyOWZcdTkyYTBcdTkyYTRcdTkyYTVcdTkyYTdcdTkyYThcdTkyYWJcdTkyYWZcdTkyYjJcdTkyYjZcdTkyYjhcdTkyYmFcdTkyYmJcdTkyYmNcdTkyYmRc''@;'; put 'put ''dTkyYmYiLDQsIlx1OTJjNVx1OTJjNlx1OTJjN1x1OTJjOFx1OTJjYlx1OTJjY1x1OTJjZFx1OTJjZVx1OTJkMFx1OTJkM1x1OTJkNVx1OTJkN1x1OTJkOFx1OTJkOVx1OTJkY1x1OTJkZFx1OTJkZlx1OTJlMFx1OTJlMVx1OTJlM1x1OTJlNVx1OTJlN1x1OTJlOFx1OTJlY1x1OTJlZVx1OTJm''@;'; put 'put ''MFx1OTJmOVx1OTJmYlx1OTJmZlx1OTMwMFx1OTMwMlx1OTMwOFx1OTMwZFx1OTMxMVx1OTMxNFx1OTMxNVx1OTMxY1x1OTMxZFx1OTMxZVx1OTMxZlx1OTMyMVx1OTMyNFx1OTMyNVx1OTMyN1x1OTMyOVx1OTMyYVx1OTMzM1x1OTMzNFx1OTMzNlx1OTMzN1x1OTM0N1x1OTM0OFx1OTM0OVx1''@;'; put 'put ''OTM1MFx1OTM1MVx1OTM1Mlx1OTM1NVx1OTM1N1x1OTM1OFx1OTM1YVx1OTM1ZVx1OTM2NFx1OTM2NVx1OTM2N1x1OTM2OVx1OTM2YVx1OTM2ZFx1OTM2Zlx1OTM3MFx1OTM3MVx1OTM3M1x1OTM3NFx1OTM3NiJdLFsiOGZlNWExIiwiXHU5MzdhXHU5MzdkXHU5MzdmXHU5MzgwXHU5MzgxXHU5''@;'; put 'put ''MzgyXHU5Mzg4XHU5MzhhXHU5MzhiXHU5MzhkXHU5MzhmXHU5MzkyXHU5Mzk1XHU5Mzk4XHU5MzliXHU5MzllXHU5M2ExXHU5M2EzXHU5M2E0XHU5M2E2XHU5M2E4XHU5M2FiXHU5M2I0XHU5M2I1XHU5M2I2XHU5M2JhXHU5M2E5XHU5M2MxXHU5M2M0XHU5M2M1XHU5M2M2XHU5M2M3XHU5M2M5''@;'; put 'put ''Iiw0LCJcdTkzZDNcdTkzZDlcdTkzZGNcdTkzZGVcdTkzZGZcdTkzZTJcdTkzZTZcdTkzZTdcdTkzZjlcdTkzZjdcdTkzZjhcdTkzZmFcdTkzZmJcdTkzZmRcdTk0MDFcdTk0MDJcdTk0MDRcdTk0MDhcdTk0MDlcdTk0MGRcdTk0MGVcdTk0MGZcdTk0MTVcdTk0MTZcdTk0MTdcdTk0MWZcdTk0''@;'; put 'put ''MmVcdTk0MmZcdTk0MzFcdTk0MzJcdTk0MzNcdTk0MzRcdTk0M2JcdTk0M2ZcdTk0M2RcdTk0NDNcdTk0NDVcdTk0NDhcdTk0NGFcdTk0NGNcdTk0NTVcdTk0NTlcdTk0NWNcdTk0NWZcdTk0NjFcdTk0NjNcdTk0NjhcdTk0NmJcdTk0NmRcdTk0NmVcdTk0NmZcdTk0NzFcdTk0NzJcdTk0ODRc''@;'; put 'put ''dTk0ODNcdTk1NzhcdTk1NzkiXSxbIjhmZTZhMSIsIlx1OTU3ZVx1OTU4NFx1OTU4OFx1OTU4Y1x1OTU4ZFx1OTU4ZVx1OTU5ZFx1OTU5ZVx1OTU5Zlx1OTVhMVx1OTVhNlx1OTVhOVx1OTVhYlx1OTVhY1x1OTViNFx1OTViNlx1OTViYVx1OTViZFx1OTViZlx1OTVjNlx1OTVjOFx1OTVjOVx1''@;'; put 'put ''OTVjYlx1OTVkMFx1OTVkMVx1OTVkMlx1OTVkM1x1OTVkOVx1OTVkYVx1OTVkZFx1OTVkZVx1OTVkZlx1OTVlMFx1OTVlNFx1OTVlNlx1OTYxZFx1OTYxZVx1OTYyMlx1OTYyNFx1OTYyNVx1OTYyNlx1OTYyY1x1OTYzMVx1OTYzM1x1OTYzN1x1OTYzOFx1OTYzOVx1OTYzYVx1OTYzY1x1OTYz''@;'; put 'put ''ZFx1OTY0MVx1OTY1Mlx1OTY1NFx1OTY1Nlx1OTY1N1x1OTY1OFx1OTY2MVx1OTY2ZVx1OTY3NFx1OTY3Ylx1OTY3Y1x1OTY3ZVx1OTY3Zlx1OTY4MVx1OTY4Mlx1OTY4M1x1OTY4NFx1OTY4OVx1OTY5MVx1OTY5Nlx1OTY5YVx1OTY5ZFx1OTY5Zlx1OTZhNFx1OTZhNVx1OTZhNlx1OTZhOVx1''@;'; put 'put ''OTZhZVx1OTZhZlx1OTZiM1x1OTZiYVx1OTZjYVx1OTZkMlx1NWRiMlx1OTZkOFx1OTZkYVx1OTZkZFx1OTZkZVx1OTZkZlx1OTZlOVx1OTZlZlx1OTZmMVx1OTZmYVx1OTcwMiJdLFsiOGZlN2ExIiwiXHU5NzAzXHU5NzA1XHU5NzA5XHU5NzFhXHU5NzFiXHU5NzFkXHU5NzIxXHU5NzIyXHU5''@;'; put 'put ''NzIzXHU5NzI4XHU5NzMxXHU5NzMzXHU5NzQxXHU5NzQzXHU5NzRhXHU5NzRlXHU5NzRmXHU5NzU1XHU5NzU3XHU5NzU4XHU5NzVhXHU5NzViXHU5NzYzXHU5NzY3XHU5NzZhXHU5NzZlXHU5NzczXHU5Nzc2XHU5Nzc3XHU5Nzc4XHU5NzdiXHU5NzdkXHU5NzdmXHU5NzgwXHU5Nzg5XHU5Nzk1''@;'; put 'put ''XHU5Nzk2XHU5Nzk3XHU5Nzk5XHU5NzlhXHU5NzllXHU5NzlmXHU5N2EyXHU5N2FjXHU5N2FlXHU5N2IxXHU5N2IyXHU5N2I1XHU5N2I2XHU5N2I4XHU5N2I5XHU5N2JhXHU5N2JjXHU5N2JlXHU5N2JmXHU5N2MxXHU5N2M0XHU5N2M1XHU5N2M3XHU5N2M5XHU5N2NhXHU5N2NjXHU5N2NkXHU5''@;'; put 'put ''N2NlXHU5N2QwXHU5N2QxXHU5N2Q0XHU5N2Q3XHU5N2Q4XHU5N2Q5XHU5N2RkXHU5N2RlXHU5N2UwXHU5N2RiXHU5N2UxXHU5N2U0XHU5N2VmXHU5N2YxXHU5N2Y0XHU5N2Y3XHU5N2Y4XHU5N2ZhXHU5ODA3XHU5ODBhXHU5ODE5XHU5ODBkXHU5ODBlXHU5ODE0XHU5ODE2XHU5ODFjXHU5ODFl''@;'; put 'put ''XHU5ODIwXHU5ODIzXHU5ODI2Il0sWyI4ZmU4YTEiLCJcdTk4MmJcdTk4MmVcdTk4MmZcdTk4MzBcdTk4MzJcdTk4MzNcdTk4MzVcdTk4MjVcdTk4M2VcdTk4NDRcdTk4NDdcdTk4NGFcdTk4NTFcdTk4NTJcdTk4NTNcdTk4NTZcdTk4NTdcdTk4NTlcdTk4NWFcdTk4NjJcdTk4NjNcdTk4NjVc''@;'; put 'put ''dTk4NjZcdTk4NmFcdTk4NmNcdTk4YWJcdTk4YWRcdTk4YWVcdTk4YjBcdTk4YjRcdTk4YjdcdTk4YjhcdTk4YmFcdTk4YmJcdTk4YmZcdTk4YzJcdTk4YzVcdTk4YzhcdTk4Y2NcdTk4ZTFcdTk4ZTNcdTk4ZTVcdTk4ZTZcdTk4ZTdcdTk4ZWFcdTk4ZjNcdTk4ZjZcdTk5MDJcdTk5MDdcdTk5''@;'; put 'put ''MDhcdTk5MTFcdTk5MTVcdTk5MTZcdTk5MTdcdTk5MWFcdTk5MWJcdTk5MWNcdTk5MWZcdTk5MjJcdTk5MjZcdTk5MjdcdTk5MmJcdTk5MzEiLDQsIlx1OTkzOVx1OTkzYVx1OTkzYlx1OTkzY1x1OTk0MFx1OTk0MVx1OTk0Nlx1OTk0N1x1OTk0OFx1OTk0ZFx1OTk0ZVx1OTk1NFx1OTk1OFx1''@;'; put 'put ''OTk1OVx1OTk1Ylx1OTk1Y1x1OTk1ZVx1OTk1Zlx1OTk2MFx1OTk5Ylx1OTk5ZFx1OTk5Zlx1OTlhNlx1OTliMFx1OTliMVx1OTliMlx1OTliNSJdLFsiOGZlOWExIiwiXHU5OWI5XHU5OWJhXHU5OWJkXHU5OWJmXHU5OWMzXHU5OWM5XHU5OWQzXHU5OWQ0XHU5OWQ5XHU5OWRhXHU5OWRjXHU5''@;'; put 'put ''OWRlXHU5OWU3XHU5OWVhXHU5OWViXHU5OWVjXHU5OWYwXHU5OWY0XHU5OWY1XHU5OWY5XHU5OWZkXHU5OWZlXHU5YTAyXHU5YTAzXHU5YTA0XHU5YTBiXHU5YTBjXHU5YTEwXHU5YTExXHU5YTE2XHU5YTFlXHU5YTIwXHU5YTIyXHU5YTIzXHU5YTI0XHU5YTI3XHU5YTJkXHU5YTJlXHU5YTMz''@;'; put 'put ''XHU5YTM1XHU5YTM2XHU5YTM4XHU5YTQ3XHU5YTQxXHU5YTQ0XHU5YTRhXHU5YTRiXHU5YTRjXHU5YTRlXHU5YTUxXHU5YTU0XHU5YTU2XHU5YTVkXHU5YWFhXHU5YWFjXHU5YWFlXHU5YWFmXHU5YWIyXHU5YWI0XHU5YWI1XHU5YWI2XHU5YWI5XHU5YWJiXHU5YWJlXHU5YWJmXHU5YWMxXHU5''@;'; put 'put ''YWMzXHU5YWM2XHU5YWM4XHU5YWNlXHU5YWQwXHU5YWQyXHU5YWQ1XHU5YWQ2XHU5YWQ3XHU5YWRiXHU5YWRjXHU5YWUwXHU5YWU0XHU5YWU1XHU5YWU3XHU5YWU5XHU5YWVjXHU5YWYyXHU5YWYzXHU5YWY1XHU5YWY5XHU5YWZhXHU5YWZkXHU5YWZmIiw0XSxbIjhmZWFhMSIsIlx1OWIwNFx1''@;'; put 'put ''OWIwNVx1OWIwOFx1OWIwOVx1OWIwYlx1OWIwY1x1OWIwZFx1OWIwZVx1OWIxMFx1OWIxMlx1OWIxNlx1OWIxOVx1OWIxYlx1OWIxY1x1OWIyMFx1OWIyNlx1OWIyYlx1OWIyZFx1OWIzM1x1OWIzNFx1OWIzNVx1OWIzN1x1OWIzOVx1OWIzYVx1OWIzZFx1OWI0OFx1OWI0Ylx1OWI0Y1x1OWI1''@;'; put 'put ''NVx1OWI1Nlx1OWI1N1x1OWI1Ylx1OWI1ZVx1OWI2MVx1OWI2M1x1OWI2NVx1OWI2Nlx1OWI2OFx1OWI2YSIsNCwiXHU5YjczXHU5Yjc1XHU5Yjc3XHU5Yjc4XHU5Yjc5XHU5YjdmXHU5YjgwXHU5Yjg0XHU5Yjg1XHU5Yjg2XHU5Yjg3XHU5Yjg5XHU5YjhhXHU5YjhiXHU5YjhkXHU5YjhmXHU5''@;'; put 'put ''YjkwXHU5Yjk0XHU5YjlhXHU5YjlkXHU5YjllXHU5YmE2XHU5YmE3XHU5YmE5XHU5YmFjXHU5YmIwXHU5YmIxXHU5YmIyXHU5YmI3XHU5YmI4XHU5YmJiXHU5YmJjXHU5YmJlXHU5YmJmXHU5YmMxXHU5YmM3XHU5YmM4XHU5YmNlXHU5YmQwXHU5YmQ3XHU5YmQ4XHU5YmRkXHU5YmRmXHU5YmU1''@;'; put 'put ''XHU5YmU3XHU5YmVhXHU5YmViXHU5YmVmXHU5YmYzXHU5YmY3XHU5YmY4Il0sWyI4ZmViYTEiLCJcdTliZjlcdTliZmFcdTliZmRcdTliZmZcdTljMDBcdTljMDJcdTljMGJcdTljMGZcdTljMTFcdTljMTZcdTljMThcdTljMTlcdTljMWFcdTljMWNcdTljMWVcdTljMjJcdTljMjNcdTljMjYi''@;'; put 'put ''LDQsIlx1OWMzMVx1OWMzNVx1OWMzNlx1OWMzN1x1OWMzZFx1OWM0MVx1OWM0M1x1OWM0NFx1OWM0NVx1OWM0OVx1OWM0YVx1OWM0ZVx1OWM0Zlx1OWM1MFx1OWM1M1x1OWM1NFx1OWM1Nlx1OWM1OFx1OWM1Ylx1OWM1ZFx1OWM1ZVx1OWM1Zlx1OWM2M1x1OWM2OVx1OWM2YVx1OWM1Y1x1OWM2''@;'; put 'put ''Ylx1OWM2OFx1OWM2ZVx1OWM3MFx1OWM3Mlx1OWM3NVx1OWM3N1x1OWM3Ylx1OWNlNlx1OWNmMlx1OWNmN1x1OWNmOVx1OWQwYlx1OWQwMlx1OWQxMVx1OWQxN1x1OWQxOFx1OWQxY1x1OWQxZFx1OWQxZVx1OWQyZlx1OWQzMFx1OWQzMlx1OWQzM1x1OWQzNFx1OWQzYVx1OWQzY1x1OWQ0NVx1''@;'; put 'put ''OWQzZFx1OWQ0Mlx1OWQ0M1x1OWQ0N1x1OWQ0YVx1OWQ1M1x1OWQ1NFx1OWQ1Zlx1OWQ2M1x1OWQ2Mlx1OWQ2NVx1OWQ2OVx1OWQ2YVx1OWQ2Ylx1OWQ3MFx1OWQ3Nlx1OWQ3N1x1OWQ3YiJdLFsiOGZlY2ExIiwiXHU5ZDdjXHU5ZDdlXHU5ZDgzXHU5ZDg0XHU5ZDg2XHU5ZDhhXHU5ZDhkXHU5''@;'; put 'put ''ZDhlXHU5ZDkyXHU5ZDkzXHU5ZDk1XHU5ZDk2XHU5ZDk3XHU5ZDk4XHU5ZGExXHU5ZGFhXHU5ZGFjXHU5ZGFlXHU5ZGIxXHU5ZGI1XHU5ZGI5XHU5ZGJjXHU5ZGJmXHU5ZGMzXHU5ZGM3XHU5ZGM5XHU5ZGNhXHU5ZGQ0XHU5ZGQ1XHU5ZGQ2XHU5ZGQ3XHU5ZGRhXHU5ZGRlXHU5ZGRmXHU5ZGUw''@;'; put 'put ''XHU5ZGU1XHU5ZGU3XHU5ZGU5XHU5ZGViXHU5ZGVlXHU5ZGYwXHU5ZGYzXHU5ZGY0XHU5ZGZlXHU5ZTBhXHU5ZTAyXHU5ZTA3XHU5ZTBlXHU5ZTEwXHU5ZTExXHU5ZTEyXHU5ZTE1XHU5ZTE2XHU5ZTE5XHU5ZTFjXHU5ZTFkXHU5ZTdhXHU5ZTdiXHU5ZTdjXHU5ZTgwXHU5ZTgyXHU5ZTgzXHU5''@;'; put 'put ''ZTg0XHU5ZTg1XHU5ZTg3XHU5ZThlXHU5ZThmXHU5ZTk2XHU5ZTk4XHU5ZTliXHU5ZTllXHU5ZWE0XHU5ZWE4XHU5ZWFjXHU5ZWFlXHU5ZWFmXHU5ZWIwXHU5ZWIzXHU5ZWI0XHU5ZWI1XHU5ZWM2XHU5ZWM4XHU5ZWNiXHU5ZWQ1XHU5ZWRmXHU5ZWU0XHU5ZWU3XHU5ZWVjXHU5ZWVkXHU5ZWVl''@;'; put 'put ''XHU5ZWYwXHU5ZWYxXHU5ZWYyXHU5ZWY1Il0sWyI4ZmVkYTEiLCJcdTllZjhcdTllZmZcdTlmMDJcdTlmMDNcdTlmMDlcdTlmMGZcdTlmMTBcdTlmMTFcdTlmMTJcdTlmMTRcdTlmMTZcdTlmMTdcdTlmMTlcdTlmMWFcdTlmMWJcdTlmMWZcdTlmMjJcdTlmMjZcdTlmMmFcdTlmMmJcdTlmMmZc''@;'; put 'put ''dTlmMzFcdTlmMzJcdTlmMzRcdTlmMzdcdTlmMzlcdTlmM2FcdTlmM2NcdTlmM2RcdTlmM2ZcdTlmNDFcdTlmNDMiLDQsIlx1OWY1M1x1OWY1NVx1OWY1Nlx1OWY1N1x1OWY1OFx1OWY1YVx1OWY1ZFx1OWY1ZVx1OWY2OFx1OWY2OVx1OWY2ZCIsNCwiXHU5ZjczXHU5Zjc1XHU5ZjdhXHU5Zjdk''@;'; put 'put ''XHU5ZjhmXHU5ZjkwXHU5ZjkxXHU5ZjkyXHU5Zjk0XHU5Zjk2XHU5Zjk3XHU5ZjllXHU5ZmExXHU5ZmEyXHU5ZmEzXHU5ZmE1Il1dJyl9LDk5MTI5OlFlPT57InVzZSBzdHJpY3QiO1FlLmV4cG9ydHM9SlNPTi5wYXJzZSgneyJ1Q2hhcnMiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYs''@;'; put 'put ''MjM1LDIzOCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgy''@;'; put 'put ''MzEsODI0MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4''@;'; put 'put ''NTQsODg1OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5''@;'; put 'put ''NjAsMTE5NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4Mzks''@;'; put 'put ''MTM4NTEsMTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYsMTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4''@;'; put 'put ''NDQsMTg4NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgs''@;'; put 'put ''NjQwMjEsNjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIsNjUzNzUsNjU1MTAsNjU1MzZdLCJnYkNoYXJzIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5''@;'; put 'put ''LDIwOCwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4''@;'; put 'put ''MjM2LDgyNDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgzOTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5''@;'; put 'put ''MDc2LDkwOTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEsMTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3''@;'; put 'put ''MTYsMTE3MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIzODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgs''@;'; put 'put ''MTU1ODMsMTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAsMTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0''@;'; put 'put ''NzAsMzM0NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQs''@;'; put 'put ''MzkxMTUsMzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX0nKX0sNTU5MTQ6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyJhMTQwIiwiXHVlNGM2Iiw2Ml0sWyJhMTgwIiwiXHVlNTA1IiwzMl0sWyJhMjQwIiwiXHVlNTI2Iiw2Ml0sWyJhMjgwIiwiXHVlNTY1Iiwz''@;'; put 'put ''Ml0sWyJhMmFiIiwiXHVlNzY2Iiw1XSxbImEyZTMiLCJcdTIwYWNcdWU3NmQiXSxbImEyZWYiLCJcdWU3NmVcdWU3NmYiXSxbImEyZmQiLCJcdWU3NzBcdWU3NzEiXSxbImEzNDAiLCJcdWU1ODYiLDYyXSxbImEzODAiLCJcdWU1YzUiLDMxLCJcdTMwMDAiXSxbImE0NDAiLCJcdWU1ZTYiLDYy''@;'; put 'put ''XSxbImE0ODAiLCJcdWU2MjUiLDMyXSxbImE0ZjQiLCJcdWU3NzIiLDEwXSxbImE1NDAiLCJcdWU2NDYiLDYyXSxbImE1ODAiLCJcdWU2ODUiLDMyXSxbImE1ZjciLCJcdWU3N2QiLDddLFsiYTY0MCIsIlx1ZTZhNiIsNjJdLFsiYTY4MCIsIlx1ZTZlNSIsMzJdLFsiYTZiOSIsIlx1ZTc4NSIs''@;'; put 'put ''N10sWyJhNmQ5IiwiXHVlNzhkIiw2XSxbImE2ZWMiLCJcdWU3OTRcdWU3OTUiXSxbImE2ZjMiLCJcdWU3OTYiXSxbImE2ZjYiLCJcdWU3OTciLDhdLFsiYTc0MCIsIlx1ZTcwNiIsNjJdLFsiYTc4MCIsIlx1ZTc0NSIsMzJdLFsiYTdjMiIsIlx1ZTdhMCIsMTRdLFsiYTdmMiIsIlx1ZTdhZiIs''@;'; put 'put ''MTJdLFsiYTg5NiIsIlx1ZTdiYyIsMTBdLFsiYThiYyIsIlx1ZTdjNyJdLFsiYThiZiIsIlx1MDFmOSJdLFsiYThjMSIsIlx1ZTdjOVx1ZTdjYVx1ZTdjYlx1ZTdjYyJdLFsiYThlYSIsIlx1ZTdjZCIsMjBdLFsiYTk1OCIsIlx1ZTdlMiJdLFsiYTk1YiIsIlx1ZTdlMyJdLFsiYTk1ZCIsIlx1''@;'; put 'put ''ZTdlNFx1ZTdlNVx1ZTdlNiJdLFsiYTk4OSIsIlx1MzAzZVx1MmZmMCIsMTFdLFsiYTk5NyIsIlx1ZTdmNCIsMTJdLFsiYTlmMCIsIlx1ZTgwMSIsMTRdLFsiYWFhMSIsIlx1ZTAwMCIsOTNdLFsiYWJhMSIsIlx1ZTA1ZSIsOTNdLFsiYWNhMSIsIlx1ZTBiYyIsOTNdLFsiYWRhMSIsIlx1ZTEx''@;'; put 'put ''YSIsOTNdLFsiYWVhMSIsIlx1ZTE3OCIsOTNdLFsiYWZhMSIsIlx1ZTFkNiIsOTNdLFsiZDdmYSIsIlx1ZTgxMCIsNF0sWyJmOGExIiwiXHVlMjM0Iiw5M10sWyJmOWExIiwiXHVlMjkyIiw5M10sWyJmYWExIiwiXHVlMmYwIiw5M10sWyJmYmExIiwiXHVlMzRlIiw5M10sWyJmY2ExIiwiXHVl''@;'; put 'put ''M2FjIiw5M10sWyJmZGExIiwiXHVlNDBhIiw5M10sWyJmZTUwIiwiXHUyZTgxXHVlODE2XHVlODE3XHVlODE4XHUyZTg0XHUzNDczXHUzNDQ3XHUyZTg4XHUyZThiXHVlODFlXHUzNTllXHUzNjFhXHUzNjBlXHUyZThjXHUyZTk3XHUzOTZlXHUzOTE4XHVlODI2XHUzOWNmXHUzOWRmXHUzYTcz''@;'; put 'put ''XHUzOWQwXHVlODJiXHVlODJjXHUzYjRlXHUzYzZlXHUzY2UwXHUyZWE3XHVlODMxXHVlODMyXHUyZWFhXHU0MDU2XHU0MTVmXHUyZWFlXHU0MzM3XHUyZWIzXHUyZWI2XHUyZWI3XHVlODNiXHU0M2IxXHU0M2FjXHUyZWJiXHU0M2RkXHU0NGQ2XHU0NjYxXHU0NjRjXHVlODQzIl0sWyJmZTgw''@;'; put 'put ''IiwiXHU0NzIzXHU0NzI5XHU0NzdjXHU0NzhkXHUyZWNhXHU0OTQ3XHU0OTdhXHU0OTdkXHU0OTgyXHU0OTgzXHU0OTg1XHU0OTg2XHU0OTlmXHU0OTliXHU0OWI3XHU0OWI2XHVlODU0XHVlODU1XHU0Y2EzXHU0YzlmXHU0Y2EwXHU0Y2ExXHU0Yzc3XHU0Y2EyXHU0ZDEzIiw2LCJcdTRkYWVc''@;'; put 'put ''dWU4NjRcdWU0NjgiLDkzXV0nKX0sNDA2Nzk6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCdbWyIwIiwiXFx1MDAwMCIsMTI4XSxbImExIiwiXHVmZjYxIiw2Ml0sWyI4MTQwIiwiXHUzMDAwXHUzMDAxXHUzMDAyXHVmZjBjXHVmZjBlXHUzMGZiXHVmZjFhXHVmZjFi''@;'; put 'put ''XHVmZjFmXHVmZjAxXHUzMDliXHUzMDljXHhiNFx1ZmY0MFx4YThcdWZmM2VcdWZmZTNcdWZmM2ZcdTMwZmRcdTMwZmVcdTMwOWRcdTMwOWVcdTMwMDNcdTRlZGRcdTMwMDVcdTMwMDZcdTMwMDdcdTMwZmNcdTIwMTVcdTIwMTBcdWZmMGZcdWZmM2NcdWZmNWVcdTIyMjVcdWZmNWNcdTIwMjZc''@;'; put 'put ''dTIwMjVcdTIwMThcdTIwMTlcdTIwMWNcdTIwMWRcdWZmMDhcdWZmMDlcdTMwMTRcdTMwMTVcdWZmM2JcdWZmM2RcdWZmNWJcdWZmNWRcdTMwMDgiLDksIlx1ZmYwYlx1ZmYwZFx4YjFceGQ3Il0sWyI4MTgwIiwiXHhmN1x1ZmYxZFx1MjI2MFx1ZmYxY1x1ZmYxZVx1MjI2Nlx1MjI2N1x1MjIx''@;'; put 'put ''ZVx1MjIzNFx1MjY0Mlx1MjY0MFx4YjBcdTIwMzJcdTIwMzNcdTIxMDNcdWZmZTVcdWZmMDRcdWZmZTBcdWZmZTFcdWZmMDVcdWZmMDNcdWZmMDZcdWZmMGFcdWZmMjBceGE3XHUyNjA2XHUyNjA1XHUyNWNiXHUyNWNmXHUyNWNlXHUyNWM3XHUyNWM2XHUyNWExXHUyNWEwXHUyNWIzXHUyNWIy''@;'; put 'put ''XHUyNWJkXHUyNWJjXHUyMDNiXHUzMDEyXHUyMTkyXHUyMTkwXHUyMTkxXHUyMTkzXHUzMDEzIl0sWyI4MWI4IiwiXHUyMjA4XHUyMjBiXHUyMjg2XHUyMjg3XHUyMjgyXHUyMjgzXHUyMjJhXHUyMjI5Il0sWyI4MWM4IiwiXHUyMjI3XHUyMjI4XHVmZmUyXHUyMWQyXHUyMWQ0XHUyMjAwXHUy''@;'; put 'put ''MjAzIl0sWyI4MWRhIiwiXHUyMjIwXHUyMmE1XHUyMzEyXHUyMjAyXHUyMjA3XHUyMjYxXHUyMjUyXHUyMjZhXHUyMjZiXHUyMjFhXHUyMjNkXHUyMjFkXHUyMjM1XHUyMjJiXHUyMjJjIl0sWyI4MWYwIiwiXHUyMTJiXHUyMDMwXHUyNjZmXHUyNjZkXHUyNjZhXHUyMDIwXHUyMDIxXHhiNiJd''@;'; put 'put ''LFsiODFmYyIsIlx1MjVlZiJdLFsiODI0ZiIsIlx1ZmYxMCIsOV0sWyI4MjYwIiwiXHVmZjIxIiwyNV0sWyI4MjgxIiwiXHVmZjQxIiwyNV0sWyI4MjlmIiwiXHUzMDQxIiw4Ml0sWyI4MzQwIiwiXHUzMGExIiw2Ml0sWyI4MzgwIiwiXHUzMGUwIiwyMl0sWyI4MzlmIiwiXHUwMzkxIiwxNiwi''@;'; put 'put ''XHUwM2EzIiw2XSxbIjgzYmYiLCJcdTAzYjEiLDE2LCJcdTAzYzMiLDZdLFsiODQ0MCIsIlx1MDQxMCIsNSwiXHUwNDAxXHUwNDE2IiwyNV0sWyI4NDcwIiwiXHUwNDMwIiw1LCJcdTA0NTFcdTA0MzYiLDddLFsiODQ4MCIsIlx1MDQzZSIsMTddLFsiODQ5ZiIsIlx1MjUwMFx1MjUwMlx1MjUw''@;'; put 'put ''Y1x1MjUxMFx1MjUxOFx1MjUxNFx1MjUxY1x1MjUyY1x1MjUyNFx1MjUzNFx1MjUzY1x1MjUwMVx1MjUwM1x1MjUwZlx1MjUxM1x1MjUxYlx1MjUxN1x1MjUyM1x1MjUzM1x1MjUyYlx1MjUzYlx1MjU0Ylx1MjUyMFx1MjUyZlx1MjUyOFx1MjUzN1x1MjUzZlx1MjUxZFx1MjUzMFx1MjUyNVx1''@;'; put 'put ''MjUzOFx1MjU0MiJdLFsiODc0MCIsIlx1MjQ2MCIsMTksIlx1MjE2MCIsOV0sWyI4NzVmIiwiXHUzMzQ5XHUzMzE0XHUzMzIyXHUzMzRkXHUzMzE4XHUzMzI3XHUzMzAzXHUzMzM2XHUzMzUxXHUzMzU3XHUzMzBkXHUzMzI2XHUzMzIzXHUzMzJiXHUzMzRhXHUzMzNiXHUzMzljXHUzMzlkXHUz''@;'; put 'put ''MzllXHUzMzhlXHUzMzhmXHUzM2M0XHUzM2ExIl0sWyI4NzdlIiwiXHUzMzdiIl0sWyI4NzgwIiwiXHUzMDFkXHUzMDFmXHUyMTE2XHUzM2NkXHUyMTIxXHUzMmE0Iiw0LCJcdTMyMzFcdTMyMzJcdTMyMzlcdTMzN2VcdTMzN2RcdTMzN2NcdTIyNTJcdTIyNjFcdTIyMmJcdTIyMmVcdTIyMTFc''@;'; put 'put ''dTIyMWFcdTIyYTVcdTIyMjBcdTIyMWZcdTIyYmZcdTIyMzVcdTIyMjlcdTIyMmEiXSxbIjg4OWYiLCJcdTRlOWNcdTU1MTZcdTVhMDNcdTk2M2ZcdTU0YzBcdTYxMWJcdTYzMjhcdTU5ZjZcdTkwMjJcdTg0NzVcdTgzMWNcdTdhNTBcdTYwYWFcdTYzZTFcdTZlMjVcdTY1ZWRcdTg0NjZcdTgy''@;'; put 'put ''YTZcdTliZjVcdTY4OTNcdTU3MjdcdTY1YTFcdTYyNzFcdTViOWJcdTU5ZDBcdTg2N2JcdTk4ZjRcdTdkNjJcdTdkYmVcdTliOGVcdTYyMTZcdTdjOWZcdTg4YjdcdTViODlcdTVlYjVcdTYzMDlcdTY2OTdcdTY4NDhcdTk1YzdcdTk3OGRcdTY3NGZcdTRlZTVcdTRmMGFcdTRmNGRcdTRmOWRc''@;'; put 'put ''dTUwNDlcdTU2ZjJcdTU5MzdcdTU5ZDRcdTVhMDFcdTVjMDlcdTYwZGZcdTYxMGZcdTYxNzBcdTY2MTNcdTY5MDVcdTcwYmFcdTc1NGZcdTc1NzBcdTc5ZmJcdTdkYWRcdTdkZWZcdTgwYzNcdTg0MGVcdTg4NjNcdThiMDJcdTkwNTVcdTkwN2FcdTUzM2JcdTRlOTVcdTRlYTVcdTU3ZGZcdTgw''@;'; put 'put ''YjJcdTkwYzFcdTc4ZWZcdTRlMDBcdTU4ZjFcdTZlYTJcdTkwMzhcdTdhMzJcdTgzMjhcdTgyOGJcdTljMmZcdTUxNDFcdTUzNzBcdTU0YmRcdTU0ZTFcdTU2ZTBcdTU5ZmJcdTVmMTVcdTk4ZjJcdTZkZWJcdTgwZTRcdTg1MmQiXSxbIjg5NDAiLCJcdTk2NjJcdTk2NzBcdTk2YTBcdTk3ZmJc''@;'; put 'put ''dTU0MGJcdTUzZjNcdTViODdcdTcwY2ZcdTdmYmRcdThmYzJcdTk2ZThcdTUzNmZcdTlkNWNcdTdhYmFcdTRlMTFcdTc4OTNcdTgxZmNcdTZlMjZcdTU2MThcdTU1MDRcdTZiMWRcdTg1MWFcdTljM2JcdTU5ZTVcdTUzYTlcdTZkNjZcdTc0ZGNcdTk1OGZcdTU2NDJcdTRlOTFcdTkwNGJcdTk2''@;'; put 'put ''ZjJcdTgzNGZcdTk5MGNcdTUzZTFcdTU1YjZcdTViMzBcdTVmNzFcdTY2MjBcdTY2ZjNcdTY4MDRcdTZjMzhcdTZjZjNcdTZkMjlcdTc0NWJcdTc2YzhcdTdhNGVcdTk4MzRcdTgyZjFcdTg4NWJcdThhNjBcdTkyZWRcdTZkYjJcdTc1YWJcdTc2Y2FcdTk5YzVcdTYwYTZcdThiMDFcdThkOGFc''@;'; put 'put ''dTk1YjJcdTY5OGVcdTUzYWRcdTUxODYiXSxbIjg5ODAiLCJcdTU3MTJcdTU4MzBcdTU5NDRcdTViYjRcdTVlZjZcdTYwMjhcdTYzYTlcdTYzZjRcdTZjYmZcdTZmMTRcdTcwOGVcdTcxMTRcdTcxNTlcdTcxZDVcdTczM2ZcdTdlMDFcdTgyNzZcdTgyZDFcdTg1OTdcdTkwNjBcdTkyNWJcdTlk''@;'; put 'put ''MWJcdTU4NjlcdTY1YmNcdTZjNWFcdTc1MjVcdTUxZjlcdTU5MmVcdTU5NjVcdTVmODBcdTVmZGNcdTYyYmNcdTY1ZmFcdTZhMmFcdTZiMjdcdTZiYjRcdTczOGJcdTdmYzFcdTg5NTZcdTlkMmNcdTlkMGVcdTllYzRcdTVjYTFcdTZjOTZcdTgzN2JcdTUxMDRcdTVjNGJcdTYxYjZcdTgxYzZc''@;'; put 'put ''dTY4NzZcdTcyNjFcdTRlNTlcdTRmZmFcdTUzNzhcdTYwNjlcdTZlMjlcdTdhNGZcdTk3ZjNcdTRlMGJcdTUzMTZcdTRlZWVcdTRmNTVcdTRmM2RcdTRmYTFcdTRmNzNcdTUyYTBcdTUzZWZcdTU2MDlcdTU5MGZcdTVhYzFcdTViYjZcdTViZTFcdTc5ZDFcdTY2ODdcdTY3OWNcdTY3YjZcdTZi''@;'; put 'put ''NGNcdTZjYjNcdTcwNmJcdTczYzJcdTc5OGRcdTc5YmVcdTdhM2NcdTdiODdcdTgyYjFcdTgyZGJcdTgzMDRcdTgzNzdcdTgzZWZcdTgzZDNcdTg3NjZcdThhYjJcdTU2MjlcdThjYThcdThmZTZcdTkwNGVcdTk3MWVcdTg2OGFcdTRmYzRcdTVjZThcdTYyMTFcdTcyNTlcdTc1M2JcdTgxZTVc''@;'; put 'put ''dTgyYmRcdTg2ZmVcdThjYzBcdTk2YzVcdTk5MTNcdTk5ZDVcdTRlY2JcdTRmMWFcdTg5ZTNcdTU2ZGVcdTU4NGFcdTU4Y2FcdTVlZmJcdTVmZWJcdTYwMmFcdTYwOTRcdTYwNjJcdTYxZDBcdTYyMTJcdTYyZDBcdTY1MzkiXSxbIjhhNDAiLCJcdTliNDFcdTY2NjZcdTY4YjBcdTZkNzdcdTcw''@;'; put 'put ''NzBcdTc1NGNcdTc2ODZcdTdkNzVcdTgyYTVcdTg3ZjlcdTk1OGJcdTk2OGVcdThjOWRcdTUxZjFcdTUyYmVcdTU5MTZcdTU0YjNcdTViYjNcdTVkMTZcdTYxNjhcdTY5ODJcdTZkYWZcdTc4OGRcdTg0Y2JcdTg4NTdcdThhNzJcdTkzYTdcdTlhYjhcdTZkNmNcdTk5YThcdTg2ZDlcdTU3YTNc''@;'; put 'put ''dTY3ZmZcdTg2Y2VcdTkyMGVcdTUyODNcdTU2ODdcdTU0MDRcdTVlZDNcdTYyZTFcdTY0YjlcdTY4M2NcdTY4MzhcdTZiYmJcdTczNzJcdTc4YmFcdTdhNmJcdTg5OWFcdTg5ZDJcdThkNmJcdThmMDNcdTkwZWRcdTk1YTNcdTk2OTRcdTk3NjlcdTViNjZcdTVjYjNcdTY5N2RcdTk4NGRcdTk4''@;'; put 'put ''NGVcdTYzOWJcdTdiMjBcdTZhMmIiXSxbIjhhODAiLCJcdTZhN2ZcdTY4YjZcdTljMGRcdTZmNWZcdTUyNzJcdTU1OWRcdTYwNzBcdTYyZWNcdTZkM2JcdTZlMDdcdTZlZDFcdTg0NWJcdTg5MTBcdThmNDRcdTRlMTRcdTljMzlcdTUzZjZcdTY5MWJcdTZhM2FcdTk3ODRcdTY4MmFcdTUxNWNc''@;'; put 'put ''dTdhYzNcdTg0YjJcdTkxZGNcdTkzOGNcdTU2NWJcdTlkMjhcdTY4MjJcdTgzMDVcdTg0MzFcdTdjYTVcdTUyMDhcdTgyYzVcdTc0ZTZcdTRlN2VcdTRmODNcdTUxYTBcdTViZDJcdTUyMGFcdTUyZDhcdTUyZTdcdTVkZmJcdTU1OWFcdTU4MmFcdTU5ZTZcdTViOGNcdTViOThcdTViZGJcdTVl''@;'; put 'put ''NzJcdTVlNzlcdTYwYTNcdTYxMWZcdTYxNjNcdTYxYmVcdTYzZGJcdTY1NjJcdTY3ZDFcdTY4NTNcdTY4ZmFcdTZiM2VcdTZiNTNcdTZjNTdcdTZmMjJcdTZmOTdcdTZmNDVcdTc0YjBcdTc1MThcdTc2ZTNcdTc3MGJcdTdhZmZcdTdiYTFcdTdjMjFcdTdkZTlcdTdmMzZcdTdmZjBcdTgwOWRc''@;'; put 'put ''dTgyNjZcdTgzOWVcdTg5YjNcdThhY2NcdThjYWJcdTkwODRcdTk0NTFcdTk1OTNcdTk1OTFcdTk1YTJcdTk2NjVcdTk3ZDNcdTk5MjhcdTgyMThcdTRlMzhcdTU0MmJcdTVjYjhcdTVkY2NcdTczYTlcdTc2NGNcdTc3M2NcdTVjYTlcdTdmZWJcdThkMGJcdTk2YzFcdTk4MTFcdTk4NTRcdTk4''@;'; put 'put ''NThcdTRmMDFcdTRmMGVcdTUzNzFcdTU1OWNcdTU2NjhcdTU3ZmFcdTU5NDdcdTViMDlcdTViYzRcdTVjOTBcdTVlMGNcdTVlN2VcdTVmY2NcdTYzZWVcdTY3M2FcdTY1ZDdcdTY1ZTJcdTY3MWZcdTY4Y2JcdTY4YzQiXSxbIjhiNDAiLCJcdTZhNWZcdTVlMzBcdTZiYzVcdTZjMTdcdTZjN2Rc''@;'; put 'put ''dTc1N2ZcdTc5NDhcdTViNjNcdTdhMDBcdTdkMDBcdTVmYmRcdTg5OGZcdThhMThcdThjYjRcdThkNzdcdThlY2NcdThmMWRcdTk4ZTJcdTlhMGVcdTliM2NcdTRlODBcdTUwN2RcdTUxMDBcdTU5OTNcdTViOWNcdTYyMmZcdTYyODBcdTY0ZWNcdTZiM2FcdTcyYTBcdTc1OTFcdTc5NDdcdTdm''@;'; put 'put ''YTlcdTg3ZmJcdThhYmNcdThiNzBcdTYzYWNcdTgzY2FcdTk3YTBcdTU0MDlcdTU0MDNcdTU1YWJcdTY4NTRcdTZhNThcdThhNzBcdTc4MjdcdTY3NzVcdTllY2RcdTUzNzRcdTViYTJcdTgxMWFcdTg2NTBcdTkwMDZcdTRlMThcdTRlNDVcdTRlYzdcdTRmMTFcdTUzY2FcdTU0MzhcdTViYWVc''@;'; put 'put ''dTVmMTNcdTYwMjVcdTY1NTEiXSxbIjhiODAiLCJcdTY3M2RcdTZjNDJcdTZjNzJcdTZjZTNcdTcwNzhcdTc0MDNcdTdhNzZcdTdhYWVcdTdiMDhcdTdkMWFcdTdjZmVcdTdkNjZcdTY1ZTdcdTcyNWJcdTUzYmJcdTVjNDVcdTVkZThcdTYyZDJcdTYyZTBcdTYzMTlcdTZlMjBcdTg2NWFcdThh''@;'; put 'put ''MzFcdThkZGRcdTkyZjhcdTZmMDFcdTc5YTZcdTliNWFcdTRlYThcdTRlYWJcdTRlYWNcdTRmOWJcdTRmYTBcdTUwZDFcdTUxNDdcdTdhZjZcdTUxNzFcdTUxZjZcdTUzNTRcdTUzMjFcdTUzN2ZcdTUzZWJcdTU1YWNcdTU4ODNcdTVjZTFcdTVmMzdcdTVmNGFcdTYwMmZcdTYwNTBcdTYwNmRc''@;'; put 'put ''dTYzMWZcdTY1NTlcdTZhNGJcdTZjYzFcdTcyYzJcdTcyZWRcdTc3ZWZcdTgwZjhcdTgxMDVcdTgyMDhcdTg1NGVcdTkwZjdcdTkzZTFcdTk3ZmZcdTk5NTdcdTlhNWFcdTRlZjBcdTUxZGRcdTVjMmRcdTY2ODFcdTY5NmRcdTVjNDBcdTY2ZjJcdTY5NzVcdTczODlcdTY4NTBcdTdjODFcdTUw''@;'; put 'put ''YzVcdTUyZTRcdTU3NDdcdTVkZmVcdTkzMjZcdTY1YTRcdTZiMjNcdTZiM2RcdTc0MzRcdTc5ODFcdTc5YmRcdTdiNGJcdTdkY2FcdTgyYjlcdTgzY2NcdTg4N2ZcdTg5NWZcdThiMzlcdThmZDFcdTkxZDFcdTU0MWZcdTkyODBcdTRlNWRcdTUwMzZcdTUzZTVcdTUzM2FcdTcyZDdcdTczOTZc''@;'; put 'put ''dTc3ZTlcdTgyZTZcdThlYWZcdTk5YzZcdTk5YzhcdTk5ZDJcdTUxNzdcdTYxMWFcdTg2NWVcdTU1YjBcdTdhN2FcdTUwNzZcdTViZDNcdTkwNDdcdTk2ODVcdTRlMzJcdTZhZGJcdTkxZTdcdTVjNTFcdTVjNDgiXSxbIjhjNDAiLCJcdTYzOThcdTdhOWZcdTZjOTNcdTk3NzRcdThmNjFcdTdh''@;'; put 'put ''YWFcdTcxOGFcdTk2ODhcdTdjODJcdTY4MTdcdTdlNzBcdTY4NTFcdTkzNmNcdTUyZjJcdTU0MWJcdTg1YWJcdThhMTNcdTdmYTRcdThlY2RcdTkwZTFcdTUzNjZcdTg4ODhcdTc5NDFcdTRmYzJcdTUwYmVcdTUyMTFcdTUxNDRcdTU1NTNcdTU3MmRcdTczZWFcdTU3OGJcdTU5NTFcdTVmNjJc''@;'; put 'put ''dTVmODRcdTYwNzVcdTYxNzZcdTYxNjdcdTYxYTlcdTYzYjJcdTY0M2FcdTY1NmNcdTY2NmZcdTY4NDJcdTZlMTNcdTc1NjZcdTdhM2RcdTdjZmJcdTdkNGNcdTdkOTlcdTdlNGJcdTdmNmJcdTgzMGVcdTgzNGFcdTg2Y2RcdThhMDhcdThhNjNcdThiNjZcdThlZmRcdTk4MWFcdTlkOGZcdTgy''@;'; put 'put ''YjhcdThmY2VcdTliZTgiXSxbIjhjODAiLCJcdTUyODdcdTYyMWZcdTY0ODNcdTZmYzBcdTk2OTlcdTY4NDFcdTUwOTFcdTZiMjBcdTZjN2FcdTZmNTRcdTdhNzRcdTdkNTBcdTg4NDBcdThhMjNcdTY3MDhcdTRlZjZcdTUwMzlcdTUwMjZcdTUwNjVcdTUxN2NcdTUyMzhcdTUyNjNcdTU1YTdc''@;'; put 'put ''dTU3MGZcdTU4MDVcdTVhY2NcdTVlZmFcdTYxYjJcdTYxZjhcdTYyZjNcdTYzNzJcdTY5MWNcdTZhMjlcdTcyN2RcdTcyYWNcdTczMmVcdTc4MTRcdTc4NmZcdTdkNzlcdTc3MGNcdTgwYTlcdTg5OGJcdThiMTlcdThjZTJcdThlZDJcdTkwNjNcdTkzNzVcdTk2N2FcdTk4NTVcdTlhMTNcdTll''@;'; put 'put ''NzhcdTUxNDNcdTUzOWZcdTUzYjNcdTVlN2JcdTVmMjZcdTZlMWJcdTZlOTBcdTczODRcdTczZmVcdTdkNDNcdTgyMzdcdThhMDBcdThhZmFcdTk2NTBcdTRlNGVcdTUwMGJcdTUzZTRcdTU0N2NcdTU2ZmFcdTU5ZDFcdTViNjRcdTVkZjFcdTVlYWJcdTVmMjdcdTYyMzhcdTY1NDVcdTY3YWZc''@;'; put 'put ''dTZlNTZcdTcyZDBcdTdjY2FcdTg4YjRcdTgwYTFcdTgwZTFcdTgzZjBcdTg2NGVcdThhODdcdThkZThcdTkyMzdcdTk2YzdcdTk4NjdcdTlmMTNcdTRlOTRcdTRlOTJcdTRmMGRcdTUzNDhcdTU0NDlcdTU0M2VcdTVhMmZcdTVmOGNcdTVmYTFcdTYwOWZcdTY4YTdcdTZhOGVcdTc0NWFcdTc4''@;'; put 'put ''ODFcdThhOWVcdThhYTRcdThiNzdcdTkxOTBcdTRlNWVcdTliYzlcdTRlYTRcdTRmN2NcdTRmYWZcdTUwMTlcdTUwMTZcdTUxNDlcdTUxNmNcdTUyOWZcdTUyYjlcdTUyZmVcdTUzOWFcdTUzZTNcdTU0MTEiXSxbIjhkNDAiLCJcdTU0MGVcdTU1ODlcdTU3NTFcdTU3YTJcdTU5N2RcdTViNTRc''@;'; put 'put ''dTViNWRcdTViOGZcdTVkZTVcdTVkZTdcdTVkZjdcdTVlNzhcdTVlODNcdTVlOWFcdTVlYjdcdTVmMThcdTYwNTJcdTYxNGNcdTYyOTdcdTYyZDhcdTYzYTdcdTY1M2JcdTY2MDJcdTY2NDNcdTY2ZjRcdTY3NmRcdTY4MjFcdTY4OTdcdTY5Y2JcdTZjNWZcdTZkMmFcdTZkNjlcdTZlMmZcdTZl''@;'; put 'put ''OWRcdTc1MzJcdTc2ODdcdTc4NmNcdTdhM2ZcdTdjZTBcdTdkMDVcdTdkMThcdTdkNWVcdTdkYjFcdTgwMTVcdTgwMDNcdTgwYWZcdTgwYjFcdTgxNTRcdTgxOGZcdTgyMmFcdTgzNTJcdTg4NGNcdTg4NjFcdThiMWJcdThjYTJcdThjZmNcdTkwY2FcdTkxNzVcdTkyNzFcdTc4M2ZcdTkyZmNc''@;'; put 'put ''dTk1YTRcdTk2NGQiXSxbIjhkODAiLCJcdTk4MDVcdTk5OTlcdTlhZDhcdTlkM2JcdTUyNWJcdTUyYWJcdTUzZjdcdTU0MDhcdTU4ZDVcdTYyZjdcdTZmZTBcdThjNmFcdThmNWZcdTllYjlcdTUxNGJcdTUyM2JcdTU0NGFcdTU2ZmRcdTdhNDBcdTkxNzdcdTlkNjBcdTllZDJcdTczNDRcdTZm''@;'; put 'put ''MDlcdTgxNzBcdTc1MTFcdTVmZmRcdTYwZGFcdTlhYThcdTcyZGJcdThmYmNcdTZiNjRcdTk4MDNcdTRlY2FcdTU2ZjBcdTU3NjRcdTU4YmVcdTVhNWFcdTYwNjhcdTYxYzdcdTY2MGZcdTY2MDZcdTY4MzlcdTY4YjFcdTZkZjdcdTc1ZDVcdTdkM2FcdTgyNmVcdTliNDJcdTRlOWJcdTRmNTBc''@;'; put 'put ''dTUzYzlcdTU1MDZcdTVkNmZcdTVkZTZcdTVkZWVcdTY3ZmJcdTZjOTlcdTc0NzNcdTc4MDJcdThhNTBcdTkzOTZcdTg4ZGZcdTU3NTBcdTVlYTdcdTYzMmJcdTUwYjVcdTUwYWNcdTUxOGRcdTY3MDBcdTU0YzlcdTU4NWVcdTU5YmJcdTViYjBcdTVmNjlcdTYyNGRcdTYzYTFcdTY4M2RcdTZi''@;'; put 'put ''NzNcdTZlMDhcdTcwN2RcdTkxYzdcdTcyODBcdTc4MTVcdTc4MjZcdTc5NmRcdTY1OGVcdTdkMzBcdTgzZGNcdTg4YzFcdThmMDlcdTk2OWJcdTUyNjRcdTU3MjhcdTY3NTBcdTdmNmFcdThjYTFcdTUxYjRcdTU3NDJcdTk2MmFcdTU4M2FcdTY5OGFcdTgwYjRcdTU0YjJcdTVkMGVcdTU3ZmNc''@;'; put 'put ''dTc4OTVcdTlkZmFcdTRmNWNcdTUyNGFcdTU0OGJcdTY0M2VcdTY2MjhcdTY3MTRcdTY3ZjVcdTdhODRcdTdiNTZcdTdkMjJcdTkzMmZcdTY4NWNcdTliYWRcdTdiMzlcdTUzMTlcdTUxOGFcdTUyMzciXSxbIjhlNDAiLCJcdTViZGZcdTYyZjZcdTY0YWVcdTY0ZTZcdTY3MmRcdTZiYmFcdTg1''@;'; put 'put ''YTlcdTk2ZDFcdTc2OTBcdTliZDZcdTYzNGNcdTkzMDZcdTliYWJcdTc2YmZcdTY2NTJcdTRlMDlcdTUwOThcdTUzYzJcdTVjNzFcdTYwZThcdTY0OTJcdTY1NjNcdTY4NWZcdTcxZTZcdTczY2FcdTc1MjNcdTdiOTdcdTdlODJcdTg2OTVcdThiODNcdThjZGJcdTkxNzhcdTk5MTBcdTY1YWNc''@;'; put 'put ''dTY2YWJcdTZiOGJcdTRlZDVcdTRlZDRcdTRmM2FcdTRmN2ZcdTUyM2FcdTUzZjhcdTUzZjJcdTU1ZTNcdTU2ZGJcdTU4ZWJcdTU5Y2JcdTU5YzlcdTU5ZmZcdTViNTBcdTVjNGRcdTVlMDJcdTVlMmJcdTVmZDdcdTYwMWRcdTYzMDdcdTY1MmZcdTViNWNcdTY1YWZcdTY1YmRcdTY1ZThcdTY3''@;'; put 'put ''OWRcdTZiNjIiXSxbIjhlODAiLCJcdTZiN2JcdTZjMGZcdTczNDVcdTc5NDlcdTc5YzFcdTdjZjhcdTdkMTlcdTdkMmJcdTgwYTJcdTgxMDJcdTgxZjNcdTg5OTZcdThhNWVcdThhNjlcdThhNjZcdThhOGNcdThhZWVcdThjYzdcdThjZGNcdTk2Y2NcdTk4ZmNcdTZiNmZcdTRlOGJcdTRmM2Nc''@;'; put 'put ''dTRmOGRcdTUxNTBcdTViNTdcdTViZmFcdTYxNDhcdTYzMDFcdTY2NDJcdTZiMjFcdTZlY2JcdTZjYmJcdTcyM2VcdTc0YmRcdTc1ZDRcdTc4YzFcdTc5M2FcdTgwMGNcdTgwMzNcdTgxZWFcdTg0OTRcdThmOWVcdTZjNTBcdTllN2ZcdTVmMGZcdThiNThcdTlkMmJcdTdhZmFcdThlZjhcdTVi''@;'; put 'put ''OGRcdTk2ZWJcdTRlMDNcdTUzZjFcdTU3ZjdcdTU5MzFcdTVhYzlcdTViYTRcdTYwODlcdTZlN2ZcdTZmMDZcdTc1YmVcdThjZWFcdTViOWZcdTg1MDBcdTdiZTBcdTUwNzJcdTY3ZjRcdTgyOWRcdTVjNjFcdTg1NGFcdTdlMWVcdTgyMGVcdTUxOTlcdTVjMDRcdTYzNjhcdThkNjZcdTY1OWNc''@;'; put 'put ''dTcxNmVcdTc5M2VcdTdkMTdcdTgwMDVcdThiMWRcdThlY2FcdTkwNmVcdTg2YzdcdTkwYWFcdTUwMWZcdTUyZmFcdTVjM2FcdTY3NTNcdTcwN2NcdTcyMzVcdTkxNGNcdTkxYzhcdTkzMmJcdTgyZTVcdTViYzJcdTVmMzFcdTYwZjlcdTRlM2JcdTUzZDZcdTViODhcdTYyNGJcdTY3MzFcdTZi''@;'; put 'put ''OGFcdTcyZTlcdTczZTBcdTdhMmVcdTgxNmJcdThkYTNcdTkxNTJcdTk5OTZcdTUxMTJcdTUzZDdcdTU0NmFcdTViZmZcdTYzODhcdTZhMzlcdTdkYWNcdTk3MDBcdTU2ZGFcdTUzY2VcdTU0NjgiXSxbIjhmNDAiLCJcdTViOTdcdTVjMzFcdTVkZGVcdTRmZWVcdTYxMDFcdTYyZmVcdTZkMzJc''@;'; put 'put ''dTc5YzBcdTc5Y2JcdTdkNDJcdTdlNGRcdTdmZDJcdTgxZWRcdTgyMWZcdTg0OTBcdTg4NDZcdTg5NzJcdThiOTBcdThlNzRcdThmMmZcdTkwMzFcdTkxNGJcdTkxNmNcdTk2YzZcdTkxOWNcdTRlYzBcdTRmNGZcdTUxNDVcdTUzNDFcdTVmOTNcdTYyMGVcdTY3ZDRcdTZjNDFcdTZlMGJcdTcz''@;'; put 'put ''NjNcdTdlMjZcdTkxY2RcdTkyODNcdTUzZDRcdTU5MTlcdTViYmZcdTZkZDFcdTc5NWRcdTdlMmVcdTdjOWJcdTU4N2VcdTcxOWZcdTUxZmFcdTg4NTNcdThmZjBcdTRmY2FcdTVjZmJcdTY2MjVcdTc3YWNcdTdhZTNcdTgyMWNcdTk5ZmZcdTUxYzZcdTVmYWFcdTY1ZWNcdTY5NmZcdTZiODlc''@;'; put 'put ''dTZkZjMiXSxbIjhmODAiLCJcdTZlOTZcdTZmNjRcdTc2ZmVcdTdkMTRcdTVkZTFcdTkwNzVcdTkxODdcdTk4MDZcdTUxZTZcdTUyMWRcdTYyNDBcdTY2OTFcdTY2ZDlcdTZlMWFcdTVlYjZcdTdkZDJcdTdmNzJcdTY2ZjhcdTg1YWZcdTg1ZjdcdThhZjhcdTUyYTlcdTUzZDlcdTU5NzNcdTVl''@;'; put 'put ''OGZcdTVmOTBcdTYwNTVcdTkyZTRcdTk2NjRcdTUwYjdcdTUxMWZcdTUyZGRcdTUzMjBcdTUzNDdcdTUzZWNcdTU0ZThcdTU1NDZcdTU1MzFcdTU2MTdcdTU5NjhcdTU5YmVcdTVhM2NcdTViYjVcdTVjMDZcdTVjMGZcdTVjMTFcdTVjMWFcdTVlODRcdTVlOGFcdTVlZTBcdTVmNzBcdTYyN2Zc''@;'; put 'put ''dTYyODRcdTYyZGJcdTYzOGNcdTYzNzdcdTY2MDdcdTY2MGNcdTY2MmRcdTY2NzZcdTY3N2VcdTY4YTJcdTZhMWZcdTZhMzVcdTZjYmNcdTZkODhcdTZlMDlcdTZlNThcdTcxM2NcdTcxMjZcdTcxNjdcdTc1YzdcdTc3MDFcdTc4NWRcdTc5MDFcdTc5NjVcdTc5ZjBcdTdhZTBcdTdiMTFcdTdj''@;'; put 'put ''YTdcdTdkMzlcdTgwOTZcdTgzZDZcdTg0OGJcdTg1NDlcdTg4NWRcdTg4ZjNcdThhMWZcdThhM2NcdThhNTRcdThhNzNcdThjNjFcdThjZGVcdTkxYTRcdTkyNjZcdTkzN2VcdTk0MThcdTk2OWNcdTk3OThcdTRlMGFcdTRlMDhcdTRlMWVcdTRlNTdcdTUxOTdcdTUyNzBcdTU3Y2VcdTU4MzRc''@;'; put 'put ''dTU4Y2NcdTViMjJcdTVlMzhcdTYwYzVcdTY0ZmVcdTY3NjFcdTY3NTZcdTZkNDRcdTcyYjZcdTc1NzNcdTdhNjNcdTg0YjhcdThiNzJcdTkxYjhcdTkzMjBcdTU2MzFcdTU3ZjRcdTk4ZmUiXSxbIjkwNDAiLCJcdTYyZWRcdTY5MGRcdTZiOTZcdTcxZWRcdTdlNTRcdTgwNzdcdTgyNzJcdTg5''@;'; put 'put ''ZTZcdTk4ZGZcdTg3NTVcdThmYjFcdTVjM2JcdTRmMzhcdTRmZTFcdTRmYjVcdTU1MDdcdTVhMjBcdTViZGRcdTViZTlcdTVmYzNcdTYxNGVcdTYzMmZcdTY1YjBcdTY2NGJcdTY4ZWVcdTY5OWJcdTZkNzhcdTZkZjFcdTc1MzNcdTc1YjlcdTc3MWZcdTc5NWVcdTc5ZTZcdTdkMzNcdTgxZTNc''@;'; put 'put ''dTgyYWZcdTg1YWFcdTg5YWFcdThhM2FcdThlYWJcdThmOWJcdTkwMzJcdTkxZGRcdTk3MDdcdTRlYmFcdTRlYzFcdTUyMDNcdTU4NzVcdTU4ZWNcdTVjMGJcdTc1MWFcdTVjM2RcdTgxNGVcdThhMGFcdThmYzVcdTk2NjNcdTk3NmRcdTdiMjVcdThhY2ZcdTk4MDhcdTkxNjJcdTU2ZjNcdTUz''@;'; put 'put ''YTgiXSxbIjkwODAiLCJcdTkwMTdcdTU0MzlcdTU3ODJcdTVlMjVcdTYzYThcdTZjMzRcdTcwOGFcdTc3NjFcdTdjOGJcdTdmZTBcdTg4NzBcdTkwNDJcdTkxNTRcdTkzMTBcdTkzMThcdTk2OGZcdTc0NWVcdTlhYzRcdTVkMDdcdTVkNjlcdTY1NzBcdTY3YTJcdThkYThcdTk2ZGJcdTYzNmVc''@;'; put 'put ''dTY3NDlcdTY5MTlcdTgzYzVcdTk4MTdcdTk2YzBcdTg4ZmVcdTZmODRcdTY0N2FcdTViZjhcdTRlMTZcdTcwMmNcdTc1NWRcdTY2MmZcdTUxYzRcdTUyMzZcdTUyZTJcdTU5ZDNcdTVmODFcdTYwMjdcdTYyMTBcdTY1M2ZcdTY1NzRcdTY2MWZcdTY2NzRcdTY4ZjJcdTY4MTZcdTZiNjNcdTZl''@;'; put 'put ''MDVcdTcyNzJcdTc1MWZcdTc2ZGJcdTdjYmVcdTgwNTZcdTU4ZjBcdTg4ZmRcdTg5N2ZcdThhYTBcdThhOTNcdThhY2JcdTkwMWRcdTkxOTJcdTk3NTJcdTk3NTlcdTY1ODlcdTdhMGVcdTgxMDZcdTk2YmJcdTVlMmRcdTYwZGNcdTYyMWFcdTY1YTVcdTY2MTRcdTY3OTBcdTc3ZjNcdTdhNGRc''@;'; put 'put ''dTdjNGRcdTdlM2VcdTgxMGFcdThjYWNcdThkNjRcdThkZTFcdThlNWZcdTc4YTlcdTUyMDdcdTYyZDlcdTYzYTVcdTY0NDJcdTYyOThcdThhMmRcdTdhODNcdTdiYzBcdThhYWNcdTk2ZWFcdTdkNzZcdTgyMGNcdTg3NDlcdTRlZDlcdTUxNDhcdTUzNDNcdTUzNjBcdTViYTNcdTVjMDJcdTVj''@;'; put 'put ''MTZcdTVkZGRcdTYyMjZcdTYyNDdcdTY0YjBcdTY4MTNcdTY4MzRcdTZjYzlcdTZkNDVcdTZkMTdcdTY3ZDNcdTZmNWNcdTcxNGVcdTcxN2RcdTY1Y2JcdTdhN2ZcdTdiYWRcdTdkZGEiXSxbIjkxNDAiLCJcdTdlNGFcdTdmYThcdTgxN2FcdTgyMWJcdTgyMzlcdTg1YTZcdThhNmVcdThjY2Vc''@;'; put 'put ''dThkZjVcdTkwNzhcdTkwNzdcdTkyYWRcdTkyOTFcdTk1ODNcdTliYWVcdTUyNGRcdTU1ODRcdTZmMzhcdTcxMzZcdTUxNjhcdTc5ODVcdTdlNTVcdTgxYjNcdTdjY2VcdTU2NGNcdTU4NTFcdTVjYThcdTYzYWFcdTY2ZmVcdTY2ZmRcdTY5NWFcdTcyZDlcdTc1OGZcdTc1OGVcdTc5MGVcdTc5''@;'; put 'put ''NTZcdTc5ZGZcdTdjOTdcdTdkMjBcdTdkNDRcdTg2MDdcdThhMzRcdTk2M2JcdTkwNjFcdTlmMjBcdTUwZTdcdTUyNzVcdTUzY2NcdTUzZTJcdTUwMDlcdTU1YWFcdTU4ZWVcdTU5NGZcdTcyM2RcdTViOGJcdTVjNjRcdTUzMWRcdTYwZTNcdTYwZjNcdTYzNWNcdTYzODNcdTYzM2ZcdTYzYmIi''@;'; put 'put ''XSxbIjkxODAiLCJcdTY0Y2RcdTY1ZTlcdTY2ZjlcdTVkZTNcdTY5Y2RcdTY5ZmRcdTZmMTVcdTcxZTVcdTRlODlcdTc1ZTlcdTc2ZjhcdTdhOTNcdTdjZGZcdTdkY2ZcdTdkOWNcdTgwNjFcdTgzNDlcdTgzNThcdTg0NmNcdTg0YmNcdTg1ZmJcdTg4YzVcdThkNzBcdTkwMDFcdTkwNmRcdTkz''@;'; put 'put ''OTdcdTk3MWNcdTlhMTJcdTUwY2ZcdTU4OTdcdTYxOGVcdTgxZDNcdTg1MzVcdThkMDhcdTkwMjBcdTRmYzNcdTUwNzRcdTUyNDdcdTUzNzNcdTYwNmZcdTYzNDlcdTY3NWZcdTZlMmNcdThkYjNcdTkwMWZcdTRmZDdcdTVjNWVcdThjY2FcdTY1Y2ZcdTdkOWFcdTUzNTJcdTg4OTZcdTUxNzZc''@;'; put 'put ''dTYzYzNcdTViNThcdTViNmJcdTVjMGFcdTY0MGRcdTY3NTFcdTkwNWNcdTRlZDZcdTU5MWFcdTU5MmFcdTZjNzBcdThhNTFcdTU1M2VcdTU4MTVcdTU5YTVcdTYwZjBcdTYyNTNcdTY3YzFcdTgyMzVcdTY5NTVcdTk2NDBcdTk5YzRcdTlhMjhcdTRmNTNcdTU4MDZcdTViZmVcdTgwMTBcdTVj''@;'; put 'put ''YjFcdTVlMmZcdTVmODVcdTYwMjBcdTYxNGJcdTYyMzRcdTY2ZmZcdTZjZjBcdTZlZGVcdTgwY2VcdTgxN2ZcdTgyZDRcdTg4OGJcdThjYjhcdTkwMDBcdTkwMmVcdTk2OGFcdTllZGJcdTliZGJcdTRlZTNcdTUzZjBcdTU5MjdcdTdiMmNcdTkxOGRcdTk4NGNcdTlkZjlcdTZlZGRcdTcwMjdc''@;'; put 'put ''dTUzNTNcdTU1NDRcdTViODVcdTYyNThcdTYyOWVcdTYyZDNcdTZjYTJcdTZmZWZcdTc0MjJcdThhMTdcdTk0MzhcdTZmYzFcdThhZmVcdTgzMzhcdTUxZTdcdTg2ZjhcdTUzZWEiXSxbIjkyNDAiLCJcdTUzZTlcdTRmNDZcdTkwNTRcdThmYjBcdTU5NmFcdTgxMzFcdTVkZmRcdTdhZWFcdThm''@;'; put 'put ''YmZcdTY4ZGFcdThjMzdcdTcyZjhcdTljNDhcdTZhM2RcdThhYjBcdTRlMzlcdTUzNThcdTU2MDZcdTU3NjZcdTYyYzVcdTYzYTJcdTY1ZTZcdTZiNGVcdTZkZTFcdTZlNWJcdTcwYWRcdTc3ZWRcdTdhZWZcdTdiYWFcdTdkYmJcdTgwM2RcdTgwYzZcdTg2Y2JcdThhOTVcdTkzNWJcdTU2ZTNc''@;'; put 'put ''dTU4YzdcdTVmM2VcdTY1YWRcdTY2OTZcdTZhODBcdTZiYjVcdTc1MzdcdThhYzdcdTUwMjRcdTc3ZTVcdTU3MzBcdTVmMWJcdTYwNjVcdTY2N2FcdTZjNjBcdTc1ZjRcdTdhMWFcdTdmNmVcdTgxZjRcdTg3MThcdTkwNDVcdTk5YjNcdTdiYzlcdTc1NWNcdTdhZjlcdTdiNTFcdTg0YzQiXSxb''@;'; put 'put ''IjkyODAiLCJcdTkwMTBcdTc5ZTlcdTdhOTJcdTgzMzZcdTVhZTFcdTc3NDBcdTRlMmRcdTRlZjJcdTViOTlcdTVmZTBcdTYyYmRcdTY2M2NcdTY3ZjFcdTZjZThcdTg2NmJcdTg4NzdcdThhM2JcdTkxNGVcdTkyZjNcdTk5ZDBcdTZhMTdcdTcwMjZcdTczMmFcdTgyZTdcdTg0NTdcdThjYWZc''@;'; put 'put ''dTRlMDFcdTUxNDZcdTUxY2JcdTU1OGJcdTViZjVcdTVlMTZcdTVlMzNcdTVlODFcdTVmMTRcdTVmMzVcdTVmNmJcdTVmYjRcdTYxZjJcdTYzMTFcdTY2YTJcdTY3MWRcdTZmNmVcdTcyNTJcdTc1M2FcdTc3M2FcdTgwNzRcdTgxMzlcdTgxNzhcdTg3NzZcdThhYmZcdThhZGNcdThkODVcdThk''@;'; put 'put ''ZjNcdTkyOWFcdTk1NzdcdTk4MDJcdTljZTVcdTUyYzVcdTYzNTdcdTc2ZjRcdTY3MTVcdTZjODhcdTczY2RcdThjYzNcdTkzYWVcdTk2NzNcdTZkMjVcdTU4OWNcdTY5MGVcdTY5Y2NcdThmZmRcdTkzOWFcdTc1ZGJcdTkwMWFcdTU4NWFcdTY4MDJcdTYzYjRcdTY5ZmJcdTRmNDNcdTZmMmNc''@;'; put 'put ''dTY3ZDhcdThmYmJcdTg1MjZcdTdkYjRcdTkzNTRcdTY5M2ZcdTZmNzBcdTU3NmFcdTU4ZjdcdTViMmNcdTdkMmNcdTcyMmFcdTU0MGFcdTkxZTNcdTlkYjRcdTRlYWRcdTRmNGVcdTUwNWNcdTUwNzVcdTUyNDNcdThjOWVcdTU0NDhcdTU4MjRcdTViOWFcdTVlMWRcdTVlOTVcdTVlYWRcdTVl''@;'; put 'put ''ZjdcdTVmMWZcdTYwOGNcdTYyYjVcdTYzM2FcdTYzZDBcdTY4YWZcdTZjNDBcdTc4ODdcdTc5OGVcdTdhMGJcdTdkZTBcdTgyNDdcdThhMDJcdThhZTZcdThlNDRcdTkwMTMiXSxbIjkzNDAiLCJcdTkwYjhcdTkxMmRcdTkxZDhcdTlmMGVcdTZjZTVcdTY0NThcdTY0ZTJcdTY1NzVcdTZlZjRc''@;'; put 'put ''dTc2ODRcdTdiMWJcdTkwNjlcdTkzZDFcdTZlYmFcdTU0ZjJcdTVmYjlcdTY0YTRcdThmNGRcdThmZWRcdTkyNDRcdTUxNzhcdTU4NmJcdTU5MjlcdTVjNTVcdTVlOTdcdTZkZmJcdTdlOGZcdTc1MWNcdThjYmNcdThlZTJcdTk4NWJcdTcwYjlcdTRmMWRcdTZiYmZcdTZmYjFcdTc1MzBcdTk2''@;'; put 'put ''ZmJcdTUxNGVcdTU0MTBcdTU4MzVcdTU4NTdcdTU5YWNcdTVjNjBcdTVmOTJcdTY1OTdcdTY3NWNcdTZlMjFcdTc2N2JcdTgzZGZcdThjZWRcdTkwMTRcdTkwZmRcdTkzNGRcdTc4MjVcdTc4M2FcdTUyYWFcdTVlYTZcdTU3MWZcdTU5NzRcdTYwMTJcdTUwMTJcdTUxNWFcdTUxYWMiXSxbIjkz''@;'; put 'put ''ODAiLCJcdTUxY2RcdTUyMDBcdTU1MTBcdTU4NTRcdTU4NThcdTU5NTdcdTViOTVcdTVjZjZcdTVkOGJcdTYwYmNcdTYyOTVcdTY0MmRcdTY3NzFcdTY4NDNcdTY4YmNcdTY4ZGZcdTc2ZDdcdTZkZDhcdTZlNmZcdTZkOWJcdTcwNmZcdTcxYzhcdTVmNTNcdTc1ZDhcdTc5NzdcdTdiNDlcdTdi''@;'; put 'put ''NTRcdTdiNTJcdTdjZDZcdTdkNzFcdTUyMzBcdTg0NjNcdTg1NjlcdTg1ZTRcdThhMGVcdThiMDRcdThjNDZcdThlMGZcdTkwMDNcdTkwMGZcdTk0MTlcdTk2NzZcdTk4MmRcdTlhMzBcdTk1ZDhcdTUwY2RcdTUyZDVcdTU0MGNcdTU4MDJcdTVjMGVcdTYxYTdcdTY0OWVcdTZkMWVcdTc3YjNc''@;'; put 'put ''dTdhZTVcdTgwZjRcdTg0MDRcdTkwNTNcdTkyODVcdTVjZTBcdTlkMDdcdTUzM2ZcdTVmOTdcdTVmYjNcdTZkOWNcdTcyNzlcdTc3NjNcdTc5YmZcdTdiZTRcdTZiZDJcdTcyZWNcdThhYWRcdTY4MDNcdTZhNjFcdTUxZjhcdTdhODFcdTY5MzRcdTVjNGFcdTljZjZcdTgyZWJcdTViYzVcdTkx''@;'; put 'put ''NDlcdTcwMWVcdTU2NzhcdTVjNmZcdTYwYzdcdTY1NjZcdTZjOGNcdThjNWFcdTkwNDFcdTk4MTNcdTU0NTFcdTY2YzdcdTkyMGRcdTU5NDhcdTkwYTNcdTUxODVcdTRlNGRcdTUxZWFcdTg1OTlcdThiMGVcdTcwNThcdTYzN2FcdTkzNGJcdTY5NjJcdTk5YjRcdTdlMDRcdTc1NzdcdTUzNTdc''@;'; put 'put ''dTY5NjBcdThlZGZcdTk2ZTNcdTZjNWRcdTRlOGNcdTVjM2NcdTVmMTBcdThmZTlcdTUzMDJcdThjZDFcdTgwODlcdTg2NzlcdTVlZmZcdTY1ZTVcdTRlNzNcdTUxNjUiXSxbIjk0NDAiLCJcdTU5ODJcdTVjM2ZcdTk3ZWVcdTRlZmJcdTU5OGFcdTVmY2RcdThhOGRcdTZmZTFcdTc5YjBcdTc5''@;'; put 'put ''NjJcdTViZTdcdTg0NzFcdTczMmJcdTcxYjFcdTVlNzRcdTVmZjVcdTYzN2JcdTY0OWFcdTcxYzNcdTdjOThcdTRlNDNcdTVlZmNcdTRlNGJcdTU3ZGNcdTU2YTJcdTYwYTlcdTZmYzNcdTdkMGRcdTgwZmRcdTgxMzNcdTgxYmZcdThmYjJcdTg5OTdcdTg2YTRcdTVkZjRcdTYyOGFcdTY0YWRc''@;'; put 'put ''dTg5ODdcdTY3NzdcdTZjZTJcdTZkM2VcdTc0MzZcdTc4MzRcdTVhNDZcdTdmNzVcdTgyYWRcdTk5YWNcdTRmZjNcdTVlYzNcdTYyZGRcdTYzOTJcdTY1NTdcdTY3NmZcdTc2YzNcdTcyNGNcdTgwY2NcdTgwYmFcdThmMjlcdTkxNGRcdTUwMGRcdTU3ZjlcdTVhOTJcdTY4ODUiXSxbIjk0ODAi''@;'; put 'put ''LCJcdTY5NzNcdTcxNjRcdTcyZmRcdThjYjdcdTU4ZjJcdThjZTBcdTk2NmFcdTkwMTlcdTg3N2ZcdTc5ZTRcdTc3ZTdcdTg0MjlcdTRmMmZcdTUyNjVcdTUzNWFcdTYyY2RcdTY3Y2ZcdTZjY2FcdTc2N2RcdTdiOTRcdTdjOTVcdTgyMzZcdTg1ODRcdThmZWJcdTY2ZGRcdTZmMjBcdTcyMDZc''@;'; put 'put ''dTdlMWJcdTgzYWJcdTk5YzFcdTllYTZcdTUxZmRcdTdiYjFcdTc4NzJcdTdiYjhcdTgwODdcdTdiNDhcdTZhZThcdTVlNjFcdTgwOGNcdTc1NTFcdTc1NjBcdTUxNmJcdTkyNjJcdTZlOGNcdTc2N2FcdTkxOTdcdTlhZWFcdTRmMTBcdTdmNzBcdTYyOWNcdTdiNGZcdTk1YTVcdTljZTlcdTU2''@;'; put 'put ''N2FcdTU4NTlcdTg2ZTRcdTk2YmNcdTRmMzRcdTUyMjRcdTUzNGFcdTUzY2RcdTUzZGJcdTVlMDZcdTY0MmNcdTY1OTFcdTY3N2ZcdTZjM2VcdTZjNGVcdTcyNDhcdTcyYWZcdTczZWRcdTc1NTRcdTdlNDFcdTgyMmNcdTg1ZTlcdThjYTlcdTdiYzRcdTkxYzZcdTcxNjlcdTk4MTJcdTk4ZWZc''@;'; put 'put ''dTYzM2RcdTY2NjlcdTc1NmFcdTc2ZTRcdTc4ZDBcdTg1NDNcdTg2ZWVcdTUzMmFcdTUzNTFcdTU0MjZcdTU5ODNcdTVlODdcdTVmN2NcdTYwYjJcdTYyNDlcdTYyNzlcdTYyYWJcdTY1OTBcdTZiZDRcdTZjY2NcdTc1YjJcdTc2YWVcdTc4OTFcdTc5ZDhcdTdkY2JcdTdmNzdcdTgwYTVcdTg4''@;'; put 'put ''YWJcdThhYjlcdThjYmJcdTkwN2ZcdTk3NWVcdTk4ZGJcdTZhMGJcdTdjMzhcdTUwOTlcdTVjM2VcdTVmYWVcdTY3ODdcdTZiZDhcdTc0MzVcdTc3MDlcdTdmOGUiXSxbIjk1NDAiLCJcdTlmM2JcdTY3Y2FcdTdhMTdcdTUzMzlcdTc1OGJcdTlhZWRcdTVmNjZcdTgxOWRcdTgzZjFcdTgwOThc''@;'; put 'put ''dTVmM2NcdTVmYzVcdTc1NjJcdTdiNDZcdTkwM2NcdTY4NjdcdTU5ZWJcdTVhOWJcdTdkMTBcdTc2N2VcdThiMmNcdTRmZjVcdTVmNmFcdTZhMTlcdTZjMzdcdTZmMDJcdTc0ZTJcdTc5NjhcdTg4NjhcdThhNTVcdThjNzlcdTVlZGZcdTYzY2ZcdTc1YzVcdTc5ZDJcdTgyZDdcdTkzMjhcdTky''@;'; put 'put ''ZjJcdTg0OWNcdTg2ZWRcdTljMmRcdTU0YzFcdTVmNmNcdTY1OGNcdTZkNWNcdTcwMTVcdThjYTdcdThjZDNcdTk4M2JcdTY1NGZcdTc0ZjZcdTRlMGRcdTRlZDhcdTU3ZTBcdTU5MmJcdTVhNjZcdTViY2NcdTUxYThcdTVlMDNcdTVlOWNcdTYwMTZcdTYyNzZcdTY1NzciXSxbIjk1ODAiLCJc''@;'; put 'put ''dTY1YTdcdTY2NmVcdTZkNmVcdTcyMzZcdTdiMjZcdTgxNTBcdTgxOWFcdTgyOTlcdThiNWNcdThjYTBcdThjZTZcdThkNzRcdTk2MWNcdTk2NDRcdTRmYWVcdTY0YWJcdTZiNjZcdTgyMWVcdTg0NjFcdTg1NmFcdTkwZThcdTVjMDFcdTY5NTNcdTk4YThcdTg0N2FcdTg1NTdcdTRmMGZcdTUy''@;'; put 'put ''NmZcdTVmYTlcdTVlNDVcdTY3MGRcdTc5OGZcdTgxNzlcdTg5MDdcdTg5ODZcdTZkZjVcdTVmMTdcdTYyNTVcdTZjYjhcdTRlY2ZcdTcyNjlcdTliOTJcdTUyMDZcdTU0M2JcdTU2NzRcdTU4YjNcdTYxYTRcdTYyNmVcdTcxMWFcdTU5NmVcdTdjODlcdTdjZGVcdTdkMWJcdTk2ZjBcdTY1ODdc''@;'; put 'put ''dTgwNWVcdTRlMTlcdTRmNzVcdTUxNzVcdTU4NDBcdTVlNjNcdTVlNzNcdTVmMGFcdTY3YzRcdTRlMjZcdTg1M2RcdTk1ODlcdTk2NWJcdTdjNzNcdTk4MDFcdTUwZmJcdTU4YzFcdTc2NTZcdTc4YTdcdTUyMjVcdTc3YTVcdTg1MTFcdTdiODZcdTUwNGZcdTU5MDlcdTcyNDdcdTdiYzdcdTdk''@;'; put 'put ''ZThcdThmYmFcdThmZDRcdTkwNGRcdTRmYmZcdTUyYzlcdTVhMjlcdTVmMDFcdTk3YWRcdTRmZGRcdTgyMTdcdTkyZWFcdTU3MDNcdTYzNTVcdTZiNjlcdTc1MmJcdTg4ZGNcdThmMTRcdTdhNDJcdTUyZGZcdTU4OTNcdTYxNTVcdTYyMGFcdTY2YWVcdTZiY2RcdTdjM2ZcdTgzZTlcdTUwMjNc''@;'; put 'put ''dTRmZjhcdTUzMDVcdTU0NDZcdTU4MzFcdTU5NDlcdTViOWRcdTVjZjBcdTVjZWZcdTVkMjlcdTVlOTZcdTYyYjFcdTYzNjdcdTY1M2VcdTY1YjlcdTY3MGIiXSxbIjk2NDAiLCJcdTZjZDVcdTZjZTFcdTcwZjlcdTc4MzJcdTdlMmJcdTgwZGVcdTgyYjNcdTg0MGNcdTg0ZWNcdTg3MDJcdTg5''@;'; put 'put ''MTJcdThhMmFcdThjNGFcdTkwYTZcdTkyZDJcdTk4ZmRcdTljZjNcdTlkNmNcdTRlNGZcdTRlYTFcdTUwOGRcdTUyNTZcdTU3NGFcdTU5YThcdTVlM2RcdTVmZDhcdTVmZDlcdTYyM2ZcdTY2YjRcdTY3MWJcdTY3ZDBcdTY4ZDJcdTUxOTJcdTdkMjFcdTgwYWFcdTgxYThcdThiMDBcdThjOGNc''@;'; put 'put ''dThjYmZcdTkyN2VcdTk2MzJcdTU0MjBcdTk4MmNcdTUzMTdcdTUwZDVcdTUzNWNcdTU4YThcdTY0YjJcdTY3MzRcdTcyNjdcdTc3NjZcdTdhNDZcdTkxZTZcdTUyYzNcdTZjYTFcdTZiODZcdTU4MDBcdTVlNGNcdTU5NTRcdTY3MmNcdTdmZmJcdTUxZTFcdTc2YzYiXSxbIjk2ODAiLCJcdTY0''@;'; put 'put ''NjlcdTc4ZThcdTliNTRcdTllYmJcdTU3Y2JcdTU5YjlcdTY2MjdcdTY3OWFcdTZiY2VcdTU0ZTlcdTY5ZDlcdTVlNTVcdTgxOWNcdTY3OTVcdTliYWFcdTY3ZmVcdTljNTJcdTY4NWRcdTRlYTZcdTRmZTNcdTUzYzhcdTYyYjlcdTY3MmJcdTZjYWJcdThmYzRcdTRmYWRcdTdlNmRcdTllYmZc''@;'; put 'put ''dTRlMDdcdTYxNjJcdTZlODBcdTZmMmJcdTg1MTNcdTU0NzNcdTY3MmFcdTliNDVcdTVkZjNcdTdiOTVcdTVjYWNcdTViYzZcdTg3MWNcdTZlNGFcdTg0ZDFcdTdhMTRcdTgxMDhcdTU5OTlcdTdjOGRcdTZjMTFcdTc3MjBcdTUyZDlcdTU5MjJcdTcxMjFcdTcyNWZcdTc3ZGJcdTk3MjdcdTlk''@;'; put 'put ''NjFcdTY5MGJcdTVhN2ZcdTVhMThcdTUxYTVcdTU0MGRcdTU0N2RcdTY2MGVcdTc2ZGZcdThmZjdcdTkyOThcdTljZjRcdTU5ZWFcdTcyNWRcdTZlYzVcdTUxNGRcdTY4YzlcdTdkYmZcdTdkZWNcdTk3NjJcdTllYmFcdTY0NzhcdTZhMjFcdTgzMDJcdTU5ODRcdTViNWZcdTZiZGJcdTczMWJc''@;'; put 'put ''dTc2ZjJcdTdkYjJcdTgwMTdcdTg0OTlcdTUxMzJcdTY3MjhcdTllZDlcdTc2ZWVcdTY3NjJcdTUyZmZcdTk5MDVcdTVjMjRcdTYyM2JcdTdjN2VcdThjYjBcdTU1NGZcdTYwYjZcdTdkMGJcdTk1ODBcdTUzMDFcdTRlNWZcdTUxYjZcdTU5MWNcdTcyM2FcdTgwMzZcdTkxY2VcdTVmMjVcdTc3''@;'; put 'put ''ZTJcdTUzODRcdTVmNzlcdTdkMDRcdTg1YWNcdThhMzNcdThlOGRcdTk3NTZcdTY3ZjNcdTg1YWVcdTk0NTNcdTYxMDlcdTYxMDhcdTZjYjlcdTc2NTIiXSxbIjk3NDAiLCJcdThhZWRcdThmMzhcdTU1MmZcdTRmNTFcdTUxMmFcdTUyYzdcdTUzY2JcdTViYTVcdTVlN2RcdTYwYTBcdTYxODJc''@;'; put 'put ''dTYzZDZcdTY3MDlcdTY3ZGFcdTZlNjdcdTZkOGNcdTczMzZcdTczMzdcdTc1MzFcdTc5NTBcdTg4ZDVcdThhOThcdTkwNGFcdTkwOTFcdTkwZjVcdTk2YzRcdTg3OGRcdTU5MTVcdTRlODhcdTRmNTlcdTRlMGVcdThhODlcdThmM2ZcdTk4MTBcdTUwYWRcdTVlN2NcdTU5OTZcdTViYjlcdTVl''@;'; put 'put ''YjhcdTYzZGFcdTYzZmFcdTY0YzFcdTY2ZGNcdTY5NGFcdTY5ZDhcdTZkMGJcdTZlYjZcdTcxOTRcdTc1MjhcdTdhYWZcdTdmOGFcdTgwMDBcdTg0NDlcdTg0YzlcdTg5ODFcdThiMjFcdThlMGFcdTkwNjVcdTk2N2RcdTk5MGFcdTYxN2VcdTYyOTFcdTZiMzIiXSxbIjk3ODAiLCJcdTZjODNc''@;'; put 'put ''dTZkNzRcdTdmY2NcdTdmZmNcdTZkYzBcdTdmODVcdTg3YmFcdTg4ZjhcdTY3NjVcdTgzYjFcdTk4M2NcdTk2ZjdcdTZkMWJcdTdkNjFcdTg0M2RcdTkxNmFcdTRlNzFcdTUzNzVcdTVkNTBcdTZiMDRcdTZmZWJcdTg1Y2RcdTg2MmRcdTg5YTdcdTUyMjlcdTU0MGZcdTVjNjVcdTY3NGVcdTY4''@;'; put 'put ''YThcdTc0MDZcdTc0ODNcdTc1ZTJcdTg4Y2ZcdTg4ZTFcdTkxY2NcdTk2ZTJcdTk2NzhcdTVmOGJcdTczODdcdTdhY2JcdTg0NGVcdTYzYTBcdTc1NjVcdTUyODlcdTZkNDFcdTZlOWNcdTc0MDlcdTc1NTlcdTc4NmJcdTdjOTJcdTk2ODZcdTdhZGNcdTlmOGRcdTRmYjZcdTYxNmVcdTY1YzVc''@;'; put 'put ''dTg2NWNcdTRlODZcdTRlYWVcdTUwZGFcdTRlMjFcdTUxY2NcdTViZWVcdTY1OTlcdTY4ODFcdTZkYmNcdTczMWZcdTc2NDJcdTc3YWRcdTdhMWNcdTdjZTdcdTgyNmZcdThhZDJcdTkwN2NcdTkxY2ZcdTk2NzVcdTk4MThcdTUyOWJcdTdkZDFcdTUwMmJcdTUzOThcdTY3OTdcdTZkY2JcdTcx''@;'; put 'put ''ZDBcdTc0MzNcdTgxZThcdThmMmFcdTk2YTNcdTljNTdcdTllOWZcdTc0NjBcdTU4NDFcdTZkOTlcdTdkMmZcdTk4NWVcdTRlZTRcdTRmMzZcdTRmOGJcdTUxYjdcdTUyYjFcdTVkYmFcdTYwMWNcdTczYjJcdTc5M2NcdTgyZDNcdTkyMzRcdTk2YjdcdTk2ZjZcdTk3MGFcdTllOTdcdTlmNjJc''@;'; put 'put ''dTY2YTZcdTZiNzRcdTUyMTdcdTUyYTNcdTcwYzhcdTg4YzJcdTVlYzlcdTYwNGJcdTYxOTBcdTZmMjNcdTcxNDlcdTdjM2VcdTdkZjRcdTgwNmYiXSxbIjk4NDAiLCJcdTg0ZWVcdTkwMjNcdTkzMmNcdTU0NDJcdTliNmZcdTZhZDNcdTcwODlcdThjYzJcdThkZWZcdTk3MzJcdTUyYjRcdTVh''@;'; put 'put ''NDFcdTVlY2FcdTVmMDRcdTY3MTdcdTY5N2NcdTY5OTRcdTZkNmFcdTZmMGZcdTcyNjJcdTcyZmNcdTdiZWRcdTgwMDFcdTgwN2VcdTg3NGJcdTkwY2VcdTUxNmRcdTllOTNcdTc5ODRcdTgwOGJcdTkzMzJcdThhZDZcdTUwMmRcdTU0OGNcdThhNzFcdTZiNmFcdThjYzRcdTgxMDdcdTYwZDFc''@;'; put 'put ''dTY3YTBcdTlkZjJcdTRlOTlcdTRlOThcdTljMTBcdThhNmJcdTg1YzFcdTg1NjhcdTY5MDBcdTZlN2VcdTc4OTdcdTgxNTUiXSxbIjk4OWYiLCJcdTVmMGNcdTRlMTBcdTRlMTVcdTRlMmFcdTRlMzFcdTRlMzZcdTRlM2NcdTRlM2ZcdTRlNDJcdTRlNTZcdTRlNThcdTRlODJcdTRlODVcdThj''@;'; put 'put ''NmJcdTRlOGFcdTgyMTJcdTVmMGRcdTRlOGVcdTRlOWVcdTRlOWZcdTRlYTBcdTRlYTJcdTRlYjBcdTRlYjNcdTRlYjZcdTRlY2VcdTRlY2RcdTRlYzRcdTRlYzZcdTRlYzJcdTRlZDdcdTRlZGVcdTRlZWRcdTRlZGZcdTRlZjdcdTRmMDlcdTRmNWFcdTRmMzBcdTRmNWJcdTRmNWRcdTRmNTdc''@;'; put 'put ''dTRmNDdcdTRmNzZcdTRmODhcdTRmOGZcdTRmOThcdTRmN2JcdTRmNjlcdTRmNzBcdTRmOTFcdTRmNmZcdTRmODZcdTRmOTZcdTUxMThcdTRmZDRcdTRmZGZcdTRmY2VcdTRmZDhcdTRmZGJcdTRmZDFcdTRmZGFcdTRmZDBcdTRmZTRcdTRmZTVcdTUwMWFcdTUwMjhcdTUwMTRcdTUwMmFcdTUw''@;'; put 'put ''MjVcdTUwMDVcdTRmMWNcdTRmZjZcdTUwMjFcdTUwMjlcdTUwMmNcdTRmZmVcdTRmZWZcdTUwMTFcdTUwMDZcdTUwNDNcdTUwNDdcdTY3MDNcdTUwNTVcdTUwNTBcdTUwNDhcdTUwNWFcdTUwNTZcdTUwNmNcdTUwNzhcdTUwODBcdTUwOWFcdTUwODVcdTUwYjRcdTUwYjIiXSxbIjk5NDAiLCJc''@;'; put 'put ''dTUwYzlcdTUwY2FcdTUwYjNcdTUwYzJcdTUwZDZcdTUwZGVcdTUwZTVcdTUwZWRcdTUwZTNcdTUwZWVcdTUwZjlcdTUwZjVcdTUxMDlcdTUxMDFcdTUxMDJcdTUxMTZcdTUxMTVcdTUxMTRcdTUxMWFcdTUxMjFcdTUxM2FcdTUxMzdcdTUxM2NcdTUxM2JcdTUxM2ZcdTUxNDBcdTUxNTJcdTUx''@;'; put 'put ''NGNcdTUxNTRcdTUxNjJcdTdhZjhcdTUxNjlcdTUxNmFcdTUxNmVcdTUxODBcdTUxODJcdTU2ZDhcdTUxOGNcdTUxODlcdTUxOGZcdTUxOTFcdTUxOTNcdTUxOTVcdTUxOTZcdTUxYTRcdTUxYTZcdTUxYTJcdTUxYTlcdTUxYWFcdTUxYWJcdTUxYjNcdTUxYjFcdTUxYjJcdTUxYjBcdTUxYjVc''@;'; put 'put ''dTUxYmRcdTUxYzVcdTUxYzlcdTUxZGJcdTUxZTBcdTg2NTVcdTUxZTlcdTUxZWQiXSxbIjk5ODAiLCJcdTUxZjBcdTUxZjVcdTUxZmVcdTUyMDRcdTUyMGJcdTUyMTRcdTUyMGVcdTUyMjdcdTUyMmFcdTUyMmVcdTUyMzNcdTUyMzlcdTUyNGZcdTUyNDRcdTUyNGJcdTUyNGNcdTUyNWVcdTUy''@;'; put 'put ''NTRcdTUyNmFcdTUyNzRcdTUyNjlcdTUyNzNcdTUyN2ZcdTUyN2RcdTUyOGRcdTUyOTRcdTUyOTJcdTUyNzFcdTUyODhcdTUyOTFcdThmYThcdThmYTdcdTUyYWNcdTUyYWRcdTUyYmNcdTUyYjVcdTUyYzFcdTUyY2RcdTUyZDdcdTUyZGVcdTUyZTNcdTUyZTZcdTk4ZWRcdTUyZTBcdTUyZjNc''@;'; put 'put ''dTUyZjVcdTUyZjhcdTUyZjlcdTUzMDZcdTUzMDhcdTc1MzhcdTUzMGRcdTUzMTBcdTUzMGZcdTUzMTVcdTUzMWFcdTUzMjNcdTUzMmZcdTUzMzFcdTUzMzNcdTUzMzhcdTUzNDBcdTUzNDZcdTUzNDVcdTRlMTdcdTUzNDlcdTUzNGRcdTUxZDZcdTUzNWVcdTUzNjlcdTUzNmVcdTU5MThcdTUz''@;'; put 'put ''N2JcdTUzNzdcdTUzODJcdTUzOTZcdTUzYTBcdTUzYTZcdTUzYTVcdTUzYWVcdTUzYjBcdTUzYjZcdTUzYzNcdTdjMTJcdTk2ZDlcdTUzZGZcdTY2ZmNcdTcxZWVcdTUzZWVcdTUzZThcdTUzZWRcdTUzZmFcdTU0MDFcdTU0M2RcdTU0NDBcdTU0MmNcdTU0MmRcdTU0M2NcdTU0MmVcdTU0MzZc''@;'; put 'put ''dTU0MjlcdTU0MWRcdTU0NGVcdTU0OGZcdTU0NzVcdTU0OGVcdTU0NWZcdTU0NzFcdTU0NzdcdTU0NzBcdTU0OTJcdTU0N2JcdTU0ODBcdTU0NzZcdTU0ODRcdTU0OTBcdTU0ODZcdTU0YzdcdTU0YTJcdTU0YjhcdTU0YTVcdTU0YWNcdTU0YzRcdTU0YzhcdTU0YTgiXSxbIjlhNDAiLCJcdTU0''@;'; put 'put ''YWJcdTU0YzJcdTU0YTRcdTU0YmVcdTU0YmNcdTU0ZDhcdTU0ZTVcdTU0ZTZcdTU1MGZcdTU1MTRcdTU0ZmRcdTU0ZWVcdTU0ZWRcdTU0ZmFcdTU0ZTJcdTU1MzlcdTU1NDBcdTU1NjNcdTU1NGNcdTU1MmVcdTU1NWNcdTU1NDVcdTU1NTZcdTU1NTdcdTU1MzhcdTU1MzNcdTU1NWRcdTU1OTlc''@;'; put 'put ''dTU1ODBcdTU0YWZcdTU1OGFcdTU1OWZcdTU1N2JcdTU1N2VcdTU1OThcdTU1OWVcdTU1YWVcdTU1N2NcdTU1ODNcdTU1YTlcdTU1ODdcdTU1YThcdTU1ZGFcdTU1YzVcdTU1ZGZcdTU1YzRcdTU1ZGNcdTU1ZTRcdTU1ZDRcdTU2MTRcdTU1ZjdcdTU2MTZcdTU1ZmVcdTU1ZmRcdTU2MWJcdTU1''@;'; put 'put ''ZjlcdTU2NGVcdTU2NTBcdTcxZGZcdTU2MzRcdTU2MzZcdTU2MzJcdTU2MzgiXSxbIjlhODAiLCJcdTU2NmJcdTU2NjRcdTU2MmZcdTU2NmNcdTU2NmFcdTU2ODZcdTU2ODBcdTU2OGFcdTU2YTBcdTU2OTRcdTU2OGZcdTU2YTVcdTU2YWVcdTU2YjZcdTU2YjRcdTU2YzJcdTU2YmNcdTU2YzFc''@;'; put 'put ''dTU2YzNcdTU2YzBcdTU2YzhcdTU2Y2VcdTU2ZDFcdTU2ZDNcdTU2ZDdcdTU2ZWVcdTU2ZjlcdTU3MDBcdTU2ZmZcdTU3MDRcdTU3MDlcdTU3MDhcdTU3MGJcdTU3MGRcdTU3MTNcdTU3MThcdTU3MTZcdTU1YzdcdTU3MWNcdTU3MjZcdTU3MzdcdTU3MzhcdTU3NGVcdTU3M2JcdTU3NDBcdTU3''@;'; put 'put ''NGZcdTU3NjlcdTU3YzBcdTU3ODhcdTU3NjFcdTU3N2ZcdTU3ODlcdTU3OTNcdTU3YTBcdTU3YjNcdTU3YTRcdTU3YWFcdTU3YjBcdTU3YzNcdTU3YzZcdTU3ZDRcdTU3ZDJcdTU3ZDNcdTU4MGFcdTU3ZDZcdTU3ZTNcdTU4MGJcdTU4MTlcdTU4MWRcdTU4NzJcdTU4MjFcdTU4NjJcdTU4NGJc''@;'; put 'put ''dTU4NzBcdTZiYzBcdTU4NTJcdTU4M2RcdTU4NzlcdTU4ODVcdTU4YjlcdTU4OWZcdTU4YWJcdTU4YmFcdTU4ZGVcdTU4YmJcdTU4YjhcdTU4YWVcdTU4YzVcdTU4ZDNcdTU4ZDFcdTU4ZDdcdTU4ZDlcdTU4ZDhcdTU4ZTVcdTU4ZGNcdTU4ZTRcdTU4ZGZcdTU4ZWZcdTU4ZmFcdTU4ZjlcdTU4''@;'; put 'put ''ZmJcdTU4ZmNcdTU4ZmRcdTU5MDJcdTU5MGFcdTU5MTBcdTU5MWJcdTY4YTZcdTU5MjVcdTU5MmNcdTU5MmRcdTU5MzJcdTU5MzhcdTU5M2VcdTdhZDJcdTU5NTVcdTU5NTBcdTU5NGVcdTU5NWFcdTU5NThcdTU5NjJcdTU5NjBcdTU5NjdcdTU5NmNcdTU5NjkiXSxbIjliNDAiLCJcdTU5Nzhc''@;'; put 'put ''dTU5ODFcdTU5OWRcdTRmNWVcdTRmYWJcdTU5YTNcdTU5YjJcdTU5YzZcdTU5ZThcdTU5ZGNcdTU5OGRcdTU5ZDlcdTU5ZGFcdTVhMjVcdTVhMWZcdTVhMTFcdTVhMWNcdTVhMDlcdTVhMWFcdTVhNDBcdTVhNmNcdTVhNDlcdTVhMzVcdTVhMzZcdTVhNjJcdTVhNmFcdTVhOWFcdTVhYmNcdTVh''@;'; put 'put ''YmVcdTVhY2JcdTVhYzJcdTVhYmRcdTVhZTNcdTVhZDdcdTVhZTZcdTVhZTlcdTVhZDZcdTVhZmFcdTVhZmJcdTViMGNcdTViMGJcdTViMTZcdTViMzJcdTVhZDBcdTViMmFcdTViMzZcdTViM2VcdTViNDNcdTViNDVcdTViNDBcdTViNTFcdTViNTVcdTViNWFcdTViNWJcdTViNjVcdTViNjlc''@;'; put 'put ''dTViNzBcdTViNzNcdTViNzVcdTViNzhcdTY1ODhcdTViN2FcdTViODAiXSxbIjliODAiLCJcdTViODNcdTViYTZcdTViYjhcdTViYzNcdTViYzdcdTViYzlcdTViZDRcdTViZDBcdTViZTRcdTViZTZcdTViZTJcdTViZGVcdTViZTVcdTViZWJcdTViZjBcdTViZjZcdTViZjNcdTVjMDVcdTVj''@;'; put 'put ''MDdcdTVjMDhcdTVjMGRcdTVjMTNcdTVjMjBcdTVjMjJcdTVjMjhcdTVjMzhcdTVjMzlcdTVjNDFcdTVjNDZcdTVjNGVcdTVjNTNcdTVjNTBcdTVjNGZcdTViNzFcdTVjNmNcdTVjNmVcdTRlNjJcdTVjNzZcdTVjNzlcdTVjOGNcdTVjOTFcdTVjOTRcdTU5OWJcdTVjYWJcdTVjYmJcdTVjYjZc''@;'; put 'put ''dTVjYmNcdTVjYjdcdTVjYzVcdTVjYmVcdTVjYzdcdTVjZDlcdTVjZTlcdTVjZmRcdTVjZmFcdTVjZWRcdTVkOGNcdTVjZWFcdTVkMGJcdTVkMTVcdTVkMTdcdTVkNWNcdTVkMWZcdTVkMWJcdTVkMTFcdTVkMTRcdTVkMjJcdTVkMWFcdTVkMTlcdTVkMThcdTVkNGNcdTVkNTJcdTVkNGVcdTVk''@;'; put 'put ''NGJcdTVkNmNcdTVkNzNcdTVkNzZcdTVkODdcdTVkODRcdTVkODJcdTVkYTJcdTVkOWRcdTVkYWNcdTVkYWVcdTVkYmRcdTVkOTBcdTVkYjdcdTVkYmNcdTVkYzlcdTVkY2RcdTVkZDNcdTVkZDJcdTVkZDZcdTVkZGJcdTVkZWJcdTVkZjJcdTVkZjVcdTVlMGJcdTVlMWFcdTVlMTlcdTVlMTFc''@;'; put 'put ''dTVlMWJcdTVlMzZcdTVlMzdcdTVlNDRcdTVlNDNcdTVlNDBcdTVlNGVcdTVlNTdcdTVlNTRcdTVlNWZcdTVlNjJcdTVlNjRcdTVlNDdcdTVlNzVcdTVlNzZcdTVlN2FcdTllYmNcdTVlN2ZcdTVlYTBcdTVlYzFcdTVlYzJcdTVlYzhcdTVlZDBcdTVlY2YiXSxbIjljNDAiLCJcdTVlZDZcdTVl''@;'; put 'put ''ZTNcdTVlZGRcdTVlZGFcdTVlZGJcdTVlZTJcdTVlZTFcdTVlZThcdTVlZTlcdTVlZWNcdTVlZjFcdTVlZjNcdTVlZjBcdTVlZjRcdTVlZjhcdTVlZmVcdTVmMDNcdTVmMDlcdTVmNWRcdTVmNWNcdTVmMGJcdTVmMTFcdTVmMTZcdTVmMjlcdTVmMmRcdTVmMzhcdTVmNDFcdTVmNDhcdTVmNGNc''@;'; put 'put ''dTVmNGVcdTVmMmZcdTVmNTFcdTVmNTZcdTVmNTdcdTVmNTlcdTVmNjFcdTVmNmRcdTVmNzNcdTVmNzdcdTVmODNcdTVmODJcdTVmN2ZcdTVmOGFcdTVmODhcdTVmOTFcdTVmODdcdTVmOWVcdTVmOTlcdTVmOThcdTVmYTBcdTVmYThcdTVmYWRcdTVmYmNcdTVmZDZcdTVmZmJcdTVmZTRcdTVm''@;'; put 'put ''ZjhcdTVmZjFcdTVmZGRcdTYwYjNcdTVmZmZcdTYwMjFcdTYwNjAiXSxbIjljODAiLCJcdTYwMTlcdTYwMTBcdTYwMjlcdTYwMGVcdTYwMzFcdTYwMWJcdTYwMTVcdTYwMmJcdTYwMjZcdTYwMGZcdTYwM2FcdTYwNWFcdTYwNDFcdTYwNmFcdTYwNzdcdTYwNWZcdTYwNGFcdTYwNDZcdTYwNGRc''@;'; put 'put ''dTYwNjNcdTYwNDNcdTYwNjRcdTYwNDJcdTYwNmNcdTYwNmJcdTYwNTlcdTYwODFcdTYwOGRcdTYwZTdcdTYwODNcdTYwOWFcdTYwODRcdTYwOWJcdTYwOTZcdTYwOTdcdTYwOTJcdTYwYTdcdTYwOGJcdTYwZTFcdTYwYjhcdTYwZTBcdTYwZDNcdTYwYjRcdTVmZjBcdTYwYmRcdTYwYzZcdTYw''@;'; put 'put ''YjVcdTYwZDhcdTYxNGRcdTYxMTVcdTYxMDZcdTYwZjZcdTYwZjdcdTYxMDBcdTYwZjRcdTYwZmFcdTYxMDNcdTYxMjFcdTYwZmJcdTYwZjFcdTYxMGRcdTYxMGVcdTYxNDdcdTYxM2VcdTYxMjhcdTYxMjdcdTYxNGFcdTYxM2ZcdTYxM2NcdTYxMmNcdTYxMzRcdTYxM2RcdTYxNDJcdTYxNDRc''@;'; put 'put ''dTYxNzNcdTYxNzdcdTYxNThcdTYxNTlcdTYxNWFcdTYxNmJcdTYxNzRcdTYxNmZcdTYxNjVcdTYxNzFcdTYxNWZcdTYxNWRcdTYxNTNcdTYxNzVcdTYxOTlcdTYxOTZcdTYxODdcdTYxYWNcdTYxOTRcdTYxOWFcdTYxOGFcdTYxOTFcdTYxYWJcdTYxYWVcdTYxY2NcdTYxY2FcdTYxYzlcdTYx''@;'; put 'put ''ZjdcdTYxYzhcdTYxYzNcdTYxYzZcdTYxYmFcdTYxY2JcdTdmNzlcdTYxY2RcdTYxZTZcdTYxZTNcdTYxZjZcdTYxZmFcdTYxZjRcdTYxZmZcdTYxZmRcdTYxZmNcdTYxZmVcdTYyMDBcdTYyMDhcdTYyMDlcdTYyMGRcdTYyMGNcdTYyMTRcdTYyMWIiXSxbIjlkNDAiLCJcdTYyMWVcdTYyMjFc''@;'; put 'put ''dTYyMmFcdTYyMmVcdTYyMzBcdTYyMzJcdTYyMzNcdTYyNDFcdTYyNGVcdTYyNWVcdTYyNjNcdTYyNWJcdTYyNjBcdTYyNjhcdTYyN2NcdTYyODJcdTYyODlcdTYyN2VcdTYyOTJcdTYyOTNcdTYyOTZcdTYyZDRcdTYyODNcdTYyOTRcdTYyZDdcdTYyZDFcdTYyYmJcdTYyY2ZcdTYyZmZcdTYy''@;'; put 'put ''YzZcdTY0ZDRcdTYyYzhcdTYyZGNcdTYyY2NcdTYyY2FcdTYyYzJcdTYyYzdcdTYyOWJcdTYyYzlcdTYzMGNcdTYyZWVcdTYyZjFcdTYzMjdcdTYzMDJcdTYzMDhcdTYyZWZcdTYyZjVcdTYzNTBcdTYzM2VcdTYzNGRcdTY0MWNcdTYzNGZcdTYzOTZcdTYzOGVcdTYzODBcdTYzYWJcdTYzNzZc''@;'; put 'put ''dTYzYTNcdTYzOGZcdTYzODlcdTYzOWZcdTYzYjVcdTYzNmIiXSxbIjlkODAiLCJcdTYzNjlcdTYzYmVcdTYzZTlcdTYzYzBcdTYzYzZcdTYzZTNcdTYzYzlcdTYzZDJcdTYzZjZcdTYzYzRcdTY0MTZcdTY0MzRcdTY0MDZcdTY0MTNcdTY0MjZcdTY0MzZcdTY1MWRcdTY0MTdcdTY0MjhcdTY0''@;'; put 'put ''MGZcdTY0NjdcdTY0NmZcdTY0NzZcdTY0NGVcdTY1MmFcdTY0OTVcdTY0OTNcdTY0YTVcdTY0YTlcdTY0ODhcdTY0YmNcdTY0ZGFcdTY0ZDJcdTY0YzVcdTY0YzdcdTY0YmJcdTY0ZDhcdTY0YzJcdTY0ZjFcdTY0ZTdcdTgyMDlcdTY0ZTBcdTY0ZTFcdTYyYWNcdTY0ZTNcdTY0ZWZcdTY1MmNc''@;'; put 'put ''dTY0ZjZcdTY0ZjRcdTY0ZjJcdTY0ZmFcdTY1MDBcdTY0ZmRcdTY1MThcdTY1MWNcdTY1MDVcdTY1MjRcdTY1MjNcdTY1MmJcdTY1MzRcdTY1MzVcdTY1MzdcdTY1MzZcdTY1MzhcdTc1NGJcdTY1NDhcdTY1NTZcdTY1NTVcdTY1NGRcdTY1NThcdTY1NWVcdTY1NWRcdTY1NzJcdTY1NzhcdTY1''@;'; put 'put ''ODJcdTY1ODNcdThiOGFcdTY1OWJcdTY1OWZcdTY1YWJcdTY1YjdcdTY1YzNcdTY1YzZcdTY1YzFcdTY1YzRcdTY1Y2NcdTY1ZDJcdTY1ZGJcdTY1ZDlcdTY1ZTBcdTY1ZTFcdTY1ZjFcdTY3NzJcdTY2MGFcdTY2MDNcdTY1ZmJcdTY3NzNcdTY2MzVcdTY2MzZcdTY2MzRcdTY2MWNcdTY2NGZc''@;'; put 'put ''dTY2NDRcdTY2NDlcdTY2NDFcdTY2NWVcdTY2NWRcdTY2NjRcdTY2NjdcdTY2NjhcdTY2NWZcdTY2NjJcdTY2NzBcdTY2ODNcdTY2ODhcdTY2OGVcdTY2ODlcdTY2ODRcdTY2OThcdTY2OWRcdTY2YzFcdTY2YjlcdTY2YzlcdTY2YmVcdTY2YmMiXSxbIjllNDAiLCJcdTY2YzRcdTY2YjhcdTY2''@;'; put 'put ''ZDZcdTY2ZGFcdTY2ZTBcdTY2M2ZcdTY2ZTZcdTY2ZTlcdTY2ZjBcdTY2ZjVcdTY2ZjdcdTY3MGZcdTY3MTZcdTY3MWVcdTY3MjZcdTY3MjdcdTk3MzhcdTY3MmVcdTY3M2ZcdTY3MzZcdTY3NDFcdTY3MzhcdTY3MzdcdTY3NDZcdTY3NWVcdTY3NjBcdTY3NTlcdTY3NjNcdTY3NjRcdTY3ODlc''@;'; put 'put ''dTY3NzBcdTY3YTlcdTY3N2NcdTY3NmFcdTY3OGNcdTY3OGJcdTY3YTZcdTY3YTFcdTY3ODVcdTY3YjdcdTY3ZWZcdTY3YjRcdTY3ZWNcdTY3YjNcdTY3ZTlcdTY3YjhcdTY3ZTRcdTY3ZGVcdTY3ZGRcdTY3ZTJcdTY3ZWVcdTY3YjlcdTY3Y2VcdTY3YzZcdTY3ZTdcdTZhOWNcdTY4MWVcdTY4''@;'; put 'put ''NDZcdTY4MjlcdTY4NDBcdTY4NGRcdTY4MzJcdTY4NGUiXSxbIjllODAiLCJcdTY4YjNcdTY4MmJcdTY4NTlcdTY4NjNcdTY4NzdcdTY4N2ZcdTY4OWZcdTY4OGZcdTY4YWRcdTY4OTRcdTY4OWRcdTY4OWJcdTY4ODNcdTZhYWVcdTY4YjlcdTY4NzRcdTY4YjVcdTY4YTBcdTY4YmFcdTY5MGZc''@;'; put 'put ''dTY4OGRcdTY4N2VcdTY5MDFcdTY4Y2FcdTY5MDhcdTY4ZDhcdTY5MjJcdTY5MjZcdTY4ZTFcdTY5MGNcdTY4Y2RcdTY4ZDRcdTY4ZTdcdTY4ZDVcdTY5MzZcdTY5MTJcdTY5MDRcdTY4ZDdcdTY4ZTNcdTY5MjVcdTY4ZjlcdTY4ZTBcdTY4ZWZcdTY5MjhcdTY5MmFcdTY5MWFcdTY5MjNcdTY5''@;'; put 'put ''MjFcdTY4YzZcdTY5NzlcdTY5NzdcdTY5NWNcdTY5NzhcdTY5NmJcdTY5NTRcdTY5N2VcdTY5NmVcdTY5MzlcdTY5NzRcdTY5M2RcdTY5NTlcdTY5MzBcdTY5NjFcdTY5NWVcdTY5NWRcdTY5ODFcdTY5NmFcdTY5YjJcdTY5YWVcdTY5ZDBcdTY5YmZcdTY5YzFcdTY5ZDNcdTY5YmVcdTY5Y2Vc''@;'; put 'put ''dTViZThcdTY5Y2FcdTY5ZGRcdTY5YmJcdTY5YzNcdTY5YTdcdTZhMmVcdTY5OTFcdTY5YTBcdTY5OWNcdTY5OTVcdTY5YjRcdTY5ZGVcdTY5ZThcdTZhMDJcdTZhMWJcdTY5ZmZcdTZiMGFcdTY5ZjlcdTY5ZjJcdTY5ZTdcdTZhMDVcdTY5YjFcdTZhMWVcdTY5ZWRcdTZhMTRcdTY5ZWJcdTZh''@;'; put 'put ''MGFcdTZhMTJcdTZhYzFcdTZhMjNcdTZhMTNcdTZhNDRcdTZhMGNcdTZhNzJcdTZhMzZcdTZhNzhcdTZhNDdcdTZhNjJcdTZhNTlcdTZhNjZcdTZhNDhcdTZhMzhcdTZhMjJcdTZhOTBcdTZhOGRcdTZhYTBcdTZhODRcdTZhYTJcdTZhYTMiXSxbIjlmNDAiLCJcdTZhOTdcdTg2MTdcdTZhYmJc''@;'; put 'put ''dTZhYzNcdTZhYzJcdTZhYjhcdTZhYjNcdTZhYWNcdTZhZGVcdTZhZDFcdTZhZGZcdTZhYWFcdTZhZGFcdTZhZWFcdTZhZmJcdTZiMDVcdTg2MTZcdTZhZmFcdTZiMTJcdTZiMTZcdTliMzFcdTZiMWZcdTZiMzhcdTZiMzdcdTc2ZGNcdTZiMzlcdTk4ZWVcdTZiNDdcdTZiNDNcdTZiNDlcdTZi''@;'; put 'put ''NTBcdTZiNTlcdTZiNTRcdTZiNWJcdTZiNWZcdTZiNjFcdTZiNzhcdTZiNzlcdTZiN2ZcdTZiODBcdTZiODRcdTZiODNcdTZiOGRcdTZiOThcdTZiOTVcdTZiOWVcdTZiYTRcdTZiYWFcdTZiYWJcdTZiYWZcdTZiYjJcdTZiYjFcdTZiYjNcdTZiYjdcdTZiYmNcdTZiYzZcdTZiY2JcdTZiZDNc''@;'; put 'put ''dTZiZGZcdTZiZWNcdTZiZWJcdTZiZjNcdTZiZWYiXSxbIjlmODAiLCJcdTllYmVcdTZjMDhcdTZjMTNcdTZjMTRcdTZjMWJcdTZjMjRcdTZjMjNcdTZjNWVcdTZjNTVcdTZjNjJcdTZjNmFcdTZjODJcdTZjOGRcdTZjOWFcdTZjODFcdTZjOWJcdTZjN2VcdTZjNjhcdTZjNzNcdTZjOTJcdTZj''@;'; put 'put ''OTBcdTZjYzRcdTZjZjFcdTZjZDNcdTZjYmRcdTZjZDdcdTZjYzVcdTZjZGRcdTZjYWVcdTZjYjFcdTZjYmVcdTZjYmFcdTZjZGJcdTZjZWZcdTZjZDlcdTZjZWFcdTZkMWZcdTg4NGRcdTZkMzZcdTZkMmJcdTZkM2RcdTZkMzhcdTZkMTlcdTZkMzVcdTZkMzNcdTZkMTJcdTZkMGNcdTZkNjNc''@;'; put 'put ''dTZkOTNcdTZkNjRcdTZkNWFcdTZkNzlcdTZkNTlcdTZkOGVcdTZkOTVcdTZmZTRcdTZkODVcdTZkZjlcdTZlMTVcdTZlMGFcdTZkYjVcdTZkYzdcdTZkZTZcdTZkYjhcdTZkYzZcdTZkZWNcdTZkZGVcdTZkY2NcdTZkZThcdTZkZDJcdTZkYzVcdTZkZmFcdTZkZDlcdTZkZTRcdTZkZDVcdTZk''@;'; put 'put ''ZWFcdTZkZWVcdTZlMmRcdTZlNmVcdTZlMmVcdTZlMTlcdTZlNzJcdTZlNWZcdTZlM2VcdTZlMjNcdTZlNmJcdTZlMmJcdTZlNzZcdTZlNGRcdTZlMWZcdTZlNDNcdTZlM2FcdTZlNGVcdTZlMjRcdTZlZmZcdTZlMWRcdTZlMzhcdTZlODJcdTZlYWFcdTZlOThcdTZlYzlcdTZlYjdcdTZlZDNc''@;'; put 'put ''dTZlYmRcdTZlYWZcdTZlYzRcdTZlYjJcdTZlZDRcdTZlZDVcdTZlOGZcdTZlYTVcdTZlYzJcdTZlOWZcdTZmNDFcdTZmMTFcdTcwNGNcdTZlZWNcdTZlZjhcdTZlZmVcdTZmM2ZcdTZlZjJcdTZmMzFcdTZlZWZcdTZmMzJcdTZlY2MiXSxbImUwNDAiLCJcdTZmM2VcdTZmMTNcdTZlZjdcdTZm''@;'; put 'put ''ODZcdTZmN2FcdTZmNzhcdTZmODFcdTZmODBcdTZmNmZcdTZmNWJcdTZmZjNcdTZmNmRcdTZmODJcdTZmN2NcdTZmNThcdTZmOGVcdTZmOTFcdTZmYzJcdTZmNjZcdTZmYjNcdTZmYTNcdTZmYTFcdTZmYTRcdTZmYjlcdTZmYzZcdTZmYWFcdTZmZGZcdTZmZDVcdTZmZWNcdTZmZDRcdTZmZDhc''@;'; put 'put ''dTZmZjFcdTZmZWVcdTZmZGJcdTcwMDlcdTcwMGJcdTZmZmFcdTcwMTFcdTcwMDFcdTcwMGZcdTZmZmVcdTcwMWJcdTcwMWFcdTZmNzRcdTcwMWRcdTcwMThcdTcwMWZcdTcwMzBcdTcwM2VcdTcwMzJcdTcwNTFcdTcwNjNcdTcwOTlcdTcwOTJcdTcwYWZcdTcwZjFcdTcwYWNcdTcwYjhcdTcw''@;'; put 'put ''YjNcdTcwYWVcdTcwZGZcdTcwY2JcdTcwZGQiXSxbImUwODAiLCJcdTcwZDlcdTcxMDlcdTcwZmRcdTcxMWNcdTcxMTlcdTcxNjVcdTcxNTVcdTcxODhcdTcxNjZcdTcxNjJcdTcxNGNcdTcxNTZcdTcxNmNcdTcxOGZcdTcxZmJcdTcxODRcdTcxOTVcdTcxYThcdTcxYWNcdTcxZDdcdTcxYjlc''@;'; put 'put ''dTcxYmVcdTcxZDJcdTcxYzlcdTcxZDRcdTcxY2VcdTcxZTBcdTcxZWNcdTcxZTdcdTcxZjVcdTcxZmNcdTcxZjlcdTcxZmZcdTcyMGRcdTcyMTBcdTcyMWJcdTcyMjhcdTcyMmRcdTcyMmNcdTcyMzBcdTcyMzJcdTcyM2JcdTcyM2NcdTcyM2ZcdTcyNDBcdTcyNDZcdTcyNGJcdTcyNThcdTcy''@;'; put 'put ''NzRcdTcyN2VcdTcyODJcdTcyODFcdTcyODdcdTcyOTJcdTcyOTZcdTcyYTJcdTcyYTdcdTcyYjlcdTcyYjJcdTcyYzNcdTcyYzZcdTcyYzRcdTcyY2VcdTcyZDJcdTcyZTJcdTcyZTBcdTcyZTFcdTcyZjlcdTcyZjdcdTUwMGZcdTczMTdcdTczMGFcdTczMWNcdTczMTZcdTczMWRcdTczMzRc''@;'; put 'put ''dTczMmZcdTczMjlcdTczMjVcdTczM2VcdTczNGVcdTczNGZcdTllZDhcdTczNTdcdTczNmFcdTczNjhcdTczNzBcdTczNzhcdTczNzVcdTczN2JcdTczN2FcdTczYzhcdTczYjNcdTczY2VcdTczYmJcdTczYzBcdTczZTVcdTczZWVcdTczZGVcdTc0YTJcdTc0MDVcdTc0NmZcdTc0MjVcdTcz''@;'; put 'put ''ZjhcdTc0MzJcdTc0M2FcdTc0NTVcdTc0M2ZcdTc0NWZcdTc0NTlcdTc0NDFcdTc0NWNcdTc0NjlcdTc0NzBcdTc0NjNcdTc0NmFcdTc0NzZcdTc0N2VcdTc0OGJcdTc0OWVcdTc0YTdcdTc0Y2FcdTc0Y2ZcdTc0ZDRcdTczZjEiXSxbImUxNDAiLCJcdTc0ZTBcdTc0ZTNcdTc0ZTdcdTc0ZTlc''@;'; put 'put ''dTc0ZWVcdTc0ZjJcdTc0ZjBcdTc0ZjFcdTc0ZjhcdTc0ZjdcdTc1MDRcdTc1MDNcdTc1MDVcdTc1MGNcdTc1MGVcdTc1MGRcdTc1MTVcdTc1MTNcdTc1MWVcdTc1MjZcdTc1MmNcdTc1M2NcdTc1NDRcdTc1NGRcdTc1NGFcdTc1NDlcdTc1NWJcdTc1NDZcdTc1NWFcdTc1NjlcdTc1NjRcdTc1''@;'; put 'put ''NjdcdTc1NmJcdTc1NmRcdTc1NzhcdTc1NzZcdTc1ODZcdTc1ODdcdTc1NzRcdTc1OGFcdTc1ODlcdTc1ODJcdTc1OTRcdTc1OWFcdTc1OWRcdTc1YTVcdTc1YTNcdTc1YzJcdTc1YjNcdTc1YzNcdTc1YjVcdTc1YmRcdTc1YjhcdTc1YmNcdTc1YjFcdTc1Y2RcdTc1Y2FcdTc1ZDJcdTc1ZDlc''@;'; put 'put ''dTc1ZTNcdTc1ZGVcdTc1ZmVcdTc1ZmYiXSxbImUxODAiLCJcdTc1ZmNcdTc2MDFcdTc1ZjBcdTc1ZmFcdTc1ZjJcdTc1ZjNcdTc2MGJcdTc2MGRcdTc2MDlcdTc2MWZcdTc2MjdcdTc2MjBcdTc2MjFcdTc2MjJcdTc2MjRcdTc2MzRcdTc2MzBcdTc2M2JcdTc2NDdcdTc2NDhcdTc2NDZcdTc2''@;'; put 'put ''NWNcdTc2NThcdTc2NjFcdTc2NjJcdTc2NjhcdTc2NjlcdTc2NmFcdTc2NjdcdTc2NmNcdTc2NzBcdTc2NzJcdTc2NzZcdTc2NzhcdTc2N2NcdTc2ODBcdTc2ODNcdTc2ODhcdTc2OGJcdTc2OGVcdTc2OTZcdTc2OTNcdTc2OTlcdTc2OWFcdTc2YjBcdTc2YjRcdTc2YjhcdTc2YjlcdTc2YmFc''@;'; put 'put ''dTc2YzJcdTc2Y2RcdTc2ZDZcdTc2ZDJcdTc2ZGVcdTc2ZTFcdTc2ZTVcdTc2ZTdcdTc2ZWFcdTg2MmZcdTc2ZmJcdTc3MDhcdTc3MDdcdTc3MDRcdTc3MjlcdTc3MjRcdTc3MWVcdTc3MjVcdTc3MjZcdTc3MWJcdTc3MzdcdTc3MzhcdTc3NDdcdTc3NWFcdTc3NjhcdTc3NmJcdTc3NWJcdTc3''@;'; put 'put ''NjVcdTc3N2ZcdTc3N2VcdTc3NzlcdTc3OGVcdTc3OGJcdTc3OTFcdTc3YTBcdTc3OWVcdTc3YjBcdTc3YjZcdTc3YjlcdTc3YmZcdTc3YmNcdTc3YmRcdTc3YmJcdTc3YzdcdTc3Y2RcdTc3ZDdcdTc3ZGFcdTc3ZGNcdTc3ZTNcdTc3ZWVcdTc3ZmNcdTc4MGNcdTc4MTJcdTc5MjZcdTc4MjBc''@;'; put 'put ''dTc5MmFcdTc4NDVcdTc4OGVcdTc4NzRcdTc4ODZcdTc4N2NcdTc4OWFcdTc4OGNcdTc4YTNcdTc4YjVcdTc4YWFcdTc4YWZcdTc4ZDFcdTc4YzZcdTc4Y2JcdTc4ZDRcdTc4YmVcdTc4YmNcdTc4YzVcdTc4Y2FcdTc4ZWMiXSxbImUyNDAiLCJcdTc4ZTdcdTc4ZGFcdTc4ZmRcdTc4ZjRcdTc5''@;'; put 'put ''MDdcdTc5MTJcdTc5MTFcdTc5MTlcdTc5MmNcdTc5MmJcdTc5NDBcdTc5NjBcdTc5NTdcdTc5NWZcdTc5NWFcdTc5NTVcdTc5NTNcdTc5N2FcdTc5N2ZcdTc5OGFcdTc5OWRcdTc5YTdcdTlmNGJcdTc5YWFcdTc5YWVcdTc5YjNcdTc5YjlcdTc5YmFcdTc5YzlcdTc5ZDVcdTc5ZTdcdTc5ZWNc''@;'; put 'put ''dTc5ZTFcdTc5ZTNcdTdhMDhcdTdhMGRcdTdhMThcdTdhMTlcdTdhMjBcdTdhMWZcdTc5ODBcdTdhMzFcdTdhM2JcdTdhM2VcdTdhMzdcdTdhNDNcdTdhNTdcdTdhNDlcdTdhNjFcdTdhNjJcdTdhNjlcdTlmOWRcdTdhNzBcdTdhNzlcdTdhN2RcdTdhODhcdTdhOTdcdTdhOTVcdTdhOThcdTdh''@;'; put 'put ''OTZcdTdhYTlcdTdhYzhcdTdhYjAiXSxbImUyODAiLCJcdTdhYjZcdTdhYzVcdTdhYzRcdTdhYmZcdTkwODNcdTdhYzdcdTdhY2FcdTdhY2RcdTdhY2ZcdTdhZDVcdTdhZDNcdTdhZDlcdTdhZGFcdTdhZGRcdTdhZTFcdTdhZTJcdTdhZTZcdTdhZWRcdTdhZjBcdTdiMDJcdTdiMGZcdTdiMGFc''@;'; put 'put ''dTdiMDZcdTdiMzNcdTdiMThcdTdiMTlcdTdiMWVcdTdiMzVcdTdiMjhcdTdiMzZcdTdiNTBcdTdiN2FcdTdiMDRcdTdiNGRcdTdiMGJcdTdiNGNcdTdiNDVcdTdiNzVcdTdiNjVcdTdiNzRcdTdiNjdcdTdiNzBcdTdiNzFcdTdiNmNcdTdiNmVcdTdiOWRcdTdiOThcdTdiOWZcdTdiOGRcdTdi''@;'; put 'put ''OWNcdTdiOWFcdTdiOGJcdTdiOTJcdTdiOGZcdTdiNWRcdTdiOTlcdTdiY2JcdTdiYzFcdTdiY2NcdTdiY2ZcdTdiYjRcdTdiYzZcdTdiZGRcdTdiZTlcdTdjMTFcdTdjMTRcdTdiZTZcdTdiZTVcdTdjNjBcdTdjMDBcdTdjMDdcdTdjMTNcdTdiZjNcdTdiZjdcdTdjMTdcdTdjMGRcdTdiZjZc''@;'; put 'put ''dTdjMjNcdTdjMjdcdTdjMmFcdTdjMWZcdTdjMzdcdTdjMmJcdTdjM2RcdTdjNGNcdTdjNDNcdTdjNTRcdTdjNGZcdTdjNDBcdTdjNTBcdTdjNThcdTdjNWZcdTdjNjRcdTdjNTZcdTdjNjVcdTdjNmNcdTdjNzVcdTdjODNcdTdjOTBcdTdjYTRcdTdjYWRcdTdjYTJcdTdjYWJcdTdjYTFcdTdj''@;'; put 'put ''YThcdTdjYjNcdTdjYjJcdTdjYjFcdTdjYWVcdTdjYjlcdTdjYmRcdTdjYzBcdTdjYzVcdTdjYzJcdTdjZDhcdTdjZDJcdTdjZGNcdTdjZTJcdTliM2JcdTdjZWZcdTdjZjJcdTdjZjRcdTdjZjZcdTdjZmFcdTdkMDYiXSxbImUzNDAiLCJcdTdkMDJcdTdkMWNcdTdkMTVcdTdkMGFcdTdkNDVc''@;'; put 'put ''dTdkNGJcdTdkMmVcdTdkMzJcdTdkM2ZcdTdkMzVcdTdkNDZcdTdkNzNcdTdkNTZcdTdkNGVcdTdkNzJcdTdkNjhcdTdkNmVcdTdkNGZcdTdkNjNcdTdkOTNcdTdkODlcdTdkNWJcdTdkOGZcdTdkN2RcdTdkOWJcdTdkYmFcdTdkYWVcdTdkYTNcdTdkYjVcdTdkYzdcdTdkYmRcdTdkYWJcdTdl''@;'; put 'put ''M2RcdTdkYTJcdTdkYWZcdTdkZGNcdTdkYjhcdTdkOWZcdTdkYjBcdTdkZDhcdTdkZGRcdTdkZTRcdTdkZGVcdTdkZmJcdTdkZjJcdTdkZTFcdTdlMDVcdTdlMGFcdTdlMjNcdTdlMjFcdTdlMTJcdTdlMzFcdTdlMWZcdTdlMDlcdTdlMGJcdTdlMjJcdTdlNDZcdTdlNjZcdTdlM2JcdTdlMzVc''@;'; put 'put ''dTdlMzlcdTdlNDNcdTdlMzciXSxbImUzODAiLCJcdTdlMzJcdTdlM2FcdTdlNjdcdTdlNWRcdTdlNTZcdTdlNWVcdTdlNTlcdTdlNWFcdTdlNzlcdTdlNmFcdTdlNjlcdTdlN2NcdTdlN2JcdTdlODNcdTdkZDVcdTdlN2RcdThmYWVcdTdlN2ZcdTdlODhcdTdlODlcdTdlOGNcdTdlOTJcdTdl''@;'; put 'put ''OTBcdTdlOTNcdTdlOTRcdTdlOTZcdTdlOGVcdTdlOWJcdTdlOWNcdTdmMzhcdTdmM2FcdTdmNDVcdTdmNGNcdTdmNGRcdTdmNGVcdTdmNTBcdTdmNTFcdTdmNTVcdTdmNTRcdTdmNThcdTdmNWZcdTdmNjBcdTdmNjhcdTdmNjlcdTdmNjdcdTdmNzhcdTdmODJcdTdmODZcdTdmODNcdTdmODhc''@;'; put 'put ''dTdmODdcdTdmOGNcdTdmOTRcdTdmOWVcdTdmOWRcdTdmOWFcdTdmYTNcdTdmYWZcdTdmYjJcdTdmYjlcdTdmYWVcdTdmYjZcdTdmYjhcdThiNzFcdTdmYzVcdTdmYzZcdTdmY2FcdTdmZDVcdTdmZDRcdTdmZTFcdTdmZTZcdTdmZTlcdTdmZjNcdTdmZjlcdTk4ZGNcdTgwMDZcdTgwMDRcdTgw''@;'; put 'put ''MGJcdTgwMTJcdTgwMThcdTgwMTlcdTgwMWNcdTgwMjFcdTgwMjhcdTgwM2ZcdTgwM2JcdTgwNGFcdTgwNDZcdTgwNTJcdTgwNThcdTgwNWFcdTgwNWZcdTgwNjJcdTgwNjhcdTgwNzNcdTgwNzJcdTgwNzBcdTgwNzZcdTgwNzlcdTgwN2RcdTgwN2ZcdTgwODRcdTgwODZcdTgwODVcdTgwOWJc''@;'; put 'put ''dTgwOTNcdTgwOWFcdTgwYWRcdTUxOTBcdTgwYWNcdTgwZGJcdTgwZTVcdTgwZDlcdTgwZGRcdTgwYzRcdTgwZGFcdTgwZDZcdTgxMDlcdTgwZWZcdTgwZjFcdTgxMWJcdTgxMjlcdTgxMjNcdTgxMmZcdTgxNGIiXSxbImU0NDAiLCJcdTk2OGJcdTgxNDZcdTgxM2VcdTgxNTNcdTgxNTFcdTgw''@;'; put 'put ''ZmNcdTgxNzFcdTgxNmVcdTgxNjVcdTgxNjZcdTgxNzRcdTgxODNcdTgxODhcdTgxOGFcdTgxODBcdTgxODJcdTgxYTBcdTgxOTVcdTgxYTRcdTgxYTNcdTgxNWZcdTgxOTNcdTgxYTlcdTgxYjBcdTgxYjVcdTgxYmVcdTgxYjhcdTgxYmRcdTgxYzBcdTgxYzJcdTgxYmFcdTgxYzlcdTgxY2Rc''@;'; put 'put ''dTgxZDFcdTgxZDlcdTgxZDhcdTgxYzhcdTgxZGFcdTgxZGZcdTgxZTBcdTgxZTdcdTgxZmFcdTgxZmJcdTgxZmVcdTgyMDFcdTgyMDJcdTgyMDVcdTgyMDdcdTgyMGFcdTgyMGRcdTgyMTBcdTgyMTZcdTgyMjlcdTgyMmJcdTgyMzhcdTgyMzNcdTgyNDBcdTgyNTlcdTgyNThcdTgyNWRcdTgy''@;'; put 'put ''NWFcdTgyNWZcdTgyNjQiXSxbImU0ODAiLCJcdTgyNjJcdTgyNjhcdTgyNmFcdTgyNmJcdTgyMmVcdTgyNzFcdTgyNzdcdTgyNzhcdTgyN2VcdTgyOGRcdTgyOTJcdTgyYWJcdTgyOWZcdTgyYmJcdTgyYWNcdTgyZTFcdTgyZTNcdTgyZGZcdTgyZDJcdTgyZjRcdTgyZjNcdTgyZmFcdTgzOTNc''@;'; put 'put ''dTgzMDNcdTgyZmJcdTgyZjlcdTgyZGVcdTgzMDZcdTgyZGNcdTgzMDlcdTgyZDlcdTgzMzVcdTgzMzRcdTgzMTZcdTgzMzJcdTgzMzFcdTgzNDBcdTgzMzlcdTgzNTBcdTgzNDVcdTgzMmZcdTgzMmJcdTgzMTdcdTgzMThcdTgzODVcdTgzOWFcdTgzYWFcdTgzOWZcdTgzYTJcdTgzOTZcdTgz''@;'; put 'put ''MjNcdTgzOGVcdTgzODdcdTgzOGFcdTgzN2NcdTgzYjVcdTgzNzNcdTgzNzVcdTgzYTBcdTgzODlcdTgzYThcdTgzZjRcdTg0MTNcdTgzZWJcdTgzY2VcdTgzZmRcdTg0MDNcdTgzZDhcdTg0MGJcdTgzYzFcdTgzZjdcdTg0MDdcdTgzZTBcdTgzZjJcdTg0MGRcdTg0MjJcdTg0MjBcdTgzYmRc''@;'; put 'put ''dTg0MzhcdTg1MDZcdTgzZmJcdTg0NmRcdTg0MmFcdTg0M2NcdTg1NWFcdTg0ODRcdTg0NzdcdTg0NmJcdTg0YWRcdTg0NmVcdTg0ODJcdTg0NjlcdTg0NDZcdTg0MmNcdTg0NmZcdTg0NzlcdTg0MzVcdTg0Y2FcdTg0NjJcdTg0YjlcdTg0YmZcdTg0OWZcdTg0ZDlcdTg0Y2RcdTg0YmJcdTg0''@;'; put 'put ''ZGFcdTg0ZDBcdTg0YzFcdTg0YzZcdTg0ZDZcdTg0YTFcdTg1MjFcdTg0ZmZcdTg0ZjRcdTg1MTdcdTg1MThcdTg1MmNcdTg1MWZcdTg1MTVcdTg1MTRcdTg0ZmNcdTg1NDBcdTg1NjNcdTg1NThcdTg1NDgiXSxbImU1NDAiLCJcdTg1NDFcdTg2MDJcdTg1NGJcdTg1NTVcdTg1ODBcdTg1YTRc''@;'; put 'put ''dTg1ODhcdTg1OTFcdTg1OGFcdTg1YThcdTg1NmRcdTg1OTRcdTg1OWJcdTg1ZWFcdTg1ODdcdTg1OWNcdTg1NzdcdTg1N2VcdTg1OTBcdTg1YzlcdTg1YmFcdTg1Y2ZcdTg1YjlcdTg1ZDBcdTg1ZDVcdTg1ZGRcdTg1ZTVcdTg1ZGNcdTg1ZjlcdTg2MGFcdTg2MTNcdTg2MGJcdTg1ZmVcdTg1''@;'; put 'put ''ZmFcdTg2MDZcdTg2MjJcdTg2MWFcdTg2MzBcdTg2M2ZcdTg2NGRcdTRlNTVcdTg2NTRcdTg2NWZcdTg2NjdcdTg2NzFcdTg2OTNcdTg2YTNcdTg2YTlcdTg2YWFcdTg2OGJcdTg2OGNcdTg2YjZcdTg2YWZcdTg2YzRcdTg2YzZcdTg2YjBcdTg2YzlcdTg4MjNcdTg2YWJcdTg2ZDRcdTg2ZGVc''@;'; put 'put ''dTg2ZTlcdTg2ZWMiXSxbImU1ODAiLCJcdTg2ZGZcdTg2ZGJcdTg2ZWZcdTg3MTJcdTg3MDZcdTg3MDhcdTg3MDBcdTg3MDNcdTg2ZmJcdTg3MTFcdTg3MDlcdTg3MGRcdTg2ZjlcdTg3MGFcdTg3MzRcdTg3M2ZcdTg3MzdcdTg3M2JcdTg3MjVcdTg3MjlcdTg3MWFcdTg3NjBcdTg3NWZcdTg3''@;'; put 'put ''NzhcdTg3NGNcdTg3NGVcdTg3NzRcdTg3NTdcdTg3NjhcdTg3NmVcdTg3NTlcdTg3NTNcdTg3NjNcdTg3NmFcdTg4MDVcdTg3YTJcdTg3OWZcdTg3ODJcdTg3YWZcdTg3Y2JcdTg3YmRcdTg3YzBcdTg3ZDBcdTk2ZDZcdTg3YWJcdTg3YzRcdTg3YjNcdTg3YzdcdTg3YzZcdTg3YmJcdTg3ZWZc''@;'; put 'put ''dTg3ZjJcdTg3ZTBcdTg4MGZcdTg4MGRcdTg3ZmVcdTg3ZjZcdTg3ZjdcdTg4MGVcdTg3ZDJcdTg4MTFcdTg4MTZcdTg4MTVcdTg4MjJcdTg4MjFcdTg4MzFcdTg4MzZcdTg4MzlcdTg4MjdcdTg4M2JcdTg4NDRcdTg4NDJcdTg4NTJcdTg4NTlcdTg4NWVcdTg4NjJcdTg4NmJcdTg4ODFcdTg4''@;'; put 'put ''N2VcdTg4OWVcdTg4NzVcdTg4N2RcdTg4YjVcdTg4NzJcdTg4ODJcdTg4OTdcdTg4OTJcdTg4YWVcdTg4OTlcdTg4YTJcdTg4OGRcdTg4YTRcdTg4YjBcdTg4YmZcdTg4YjFcdTg4YzNcdTg4YzRcdTg4ZDRcdTg4ZDhcdTg4ZDlcdTg4ZGRcdTg4ZjlcdTg5MDJcdTg4ZmNcdTg4ZjRcdTg4ZThc''@;'; put 'put ''dTg4ZjJcdTg5MDRcdTg5MGNcdTg5MGFcdTg5MTNcdTg5NDNcdTg5MWVcdTg5MjVcdTg5MmFcdTg5MmJcdTg5NDFcdTg5NDRcdTg5M2JcdTg5MzZcdTg5MzhcdTg5NGNcdTg5MWRcdTg5NjBcdTg5NWUiXSxbImU2NDAiLCJcdTg5NjZcdTg5NjRcdTg5NmRcdTg5NmFcdTg5NmZcdTg5NzRcdTg5''@;'; put 'put ''NzdcdTg5N2VcdTg5ODNcdTg5ODhcdTg5OGFcdTg5OTNcdTg5OThcdTg5YTFcdTg5YTlcdTg5YTZcdTg5YWNcdTg5YWZcdTg5YjJcdTg5YmFcdTg5YmRcdTg5YmZcdTg5YzBcdTg5ZGFcdTg5ZGNcdTg5ZGRcdTg5ZTdcdTg5ZjRcdTg5ZjhcdThhMDNcdThhMTZcdThhMTBcdThhMGNcdThhMWJc''@;'; put 'put ''dThhMWRcdThhMjVcdThhMzZcdThhNDFcdThhNWJcdThhNTJcdThhNDZcdThhNDhcdThhN2NcdThhNmRcdThhNmNcdThhNjJcdThhODVcdThhODJcdThhODRcdThhYThcdThhYTFcdThhOTFcdThhYTVcdThhYTZcdThhOWFcdThhYTNcdThhYzRcdThhY2RcdThhYzJcdThhZGFcdThhZWJcdThh''@;'; put 'put ''ZjNcdThhZTciXSxbImU2ODAiLCJcdThhZTRcdThhZjFcdThiMTRcdThhZTBcdThhZTJcdThhZjdcdThhZGVcdThhZGJcdThiMGNcdThiMDdcdThiMWFcdThhZTFcdThiMTZcdThiMTBcdThiMTdcdThiMjBcdThiMzNcdTk3YWJcdThiMjZcdThiMmJcdThiM2VcdThiMjhcdThiNDFcdThiNGNc''@;'; put 'put ''dThiNGZcdThiNGVcdThiNDlcdThiNTZcdThiNWJcdThiNWFcdThiNmJcdThiNWZcdThiNmNcdThiNmZcdThiNzRcdThiN2RcdThiODBcdThiOGNcdThiOGVcdThiOTJcdThiOTNcdThiOTZcdThiOTlcdThiOWFcdThjM2FcdThjNDFcdThjM2ZcdThjNDhcdThjNGNcdThjNGVcdThjNTBcdThj''@;'; put 'put ''NTVcdThjNjJcdThjNmNcdThjNzhcdThjN2FcdThjODJcdThjODlcdThjODVcdThjOGFcdThjOGRcdThjOGVcdThjOTRcdThjN2NcdThjOThcdTYyMWRcdThjYWRcdThjYWFcdThjYmRcdThjYjJcdThjYjNcdThjYWVcdThjYjZcdThjYzhcdThjYzFcdThjZTRcdThjZTNcdThjZGFcdThjZmRc''@;'; put 'put ''dThjZmFcdThjZmJcdThkMDRcdThkMDVcdThkMGFcdThkMDdcdThkMGZcdThkMGRcdThkMTBcdTlmNGVcdThkMTNcdThjY2RcdThkMTRcdThkMTZcdThkNjdcdThkNmRcdThkNzFcdThkNzNcdThkODFcdThkOTlcdThkYzJcdThkYmVcdThkYmFcdThkY2ZcdThkZGFcdThkZDZcdThkY2NcdThk''@;'; put 'put ''ZGJcdThkY2JcdThkZWFcdThkZWJcdThkZGZcdThkZTNcdThkZmNcdThlMDhcdThlMDlcdThkZmZcdThlMWRcdThlMWVcdThlMTBcdThlMWZcdThlNDJcdThlMzVcdThlMzBcdThlMzRcdThlNGEiXSxbImU3NDAiLCJcdThlNDdcdThlNDlcdThlNGNcdThlNTBcdThlNDhcdThlNTlcdThlNjRc''@;'; put 'put ''dThlNjBcdThlMmFcdThlNjNcdThlNTVcdThlNzZcdThlNzJcdThlN2NcdThlODFcdThlODdcdThlODVcdThlODRcdThlOGJcdThlOGFcdThlOTNcdThlOTFcdThlOTRcdThlOTlcdThlYWFcdThlYTFcdThlYWNcdThlYjBcdThlYzZcdThlYjFcdThlYmVcdThlYzVcdThlYzhcdThlY2JcdThl''@;'; put 'put ''ZGJcdThlZTNcdThlZmNcdThlZmJcdThlZWJcdThlZmVcdThmMGFcdThmMDVcdThmMTVcdThmMTJcdThmMTlcdThmMTNcdThmMWNcdThmMWZcdThmMWJcdThmMGNcdThmMjZcdThmMzNcdThmM2JcdThmMzlcdThmNDVcdThmNDJcdThmM2VcdThmNGNcdThmNDlcdThmNDZcdThmNGVcdThmNTdc''@;'; put 'put ''dThmNWMiXSxbImU3ODAiLCJcdThmNjJcdThmNjNcdThmNjRcdThmOWNcdThmOWZcdThmYTNcdThmYWRcdThmYWZcdThmYjdcdThmZGFcdThmZTVcdThmZTJcdThmZWFcdThmZWZcdTkwODdcdThmZjRcdTkwMDVcdThmZjlcdThmZmFcdTkwMTFcdTkwMTVcdTkwMjFcdTkwMGRcdTkwMWVcdTkw''@;'; put 'put ''MTZcdTkwMGJcdTkwMjdcdTkwMzZcdTkwMzVcdTkwMzlcdThmZjhcdTkwNGZcdTkwNTBcdTkwNTFcdTkwNTJcdTkwMGVcdTkwNDlcdTkwM2VcdTkwNTZcdTkwNThcdTkwNWVcdTkwNjhcdTkwNmZcdTkwNzZcdTk2YThcdTkwNzJcdTkwODJcdTkwN2RcdTkwODFcdTkwODBcdTkwOGFcdTkwODlc''@;'; put 'put ''dTkwOGZcdTkwYThcdTkwYWZcdTkwYjFcdTkwYjVcdTkwZTJcdTkwZTRcdTYyNDhcdTkwZGJcdTkxMDJcdTkxMTJcdTkxMTlcdTkxMzJcdTkxMzBcdTkxNGFcdTkxNTZcdTkxNThcdTkxNjNcdTkxNjVcdTkxNjlcdTkxNzNcdTkxNzJcdTkxOGJcdTkxODlcdTkxODJcdTkxYTJcdTkxYWJcdTkx''@;'; put 'put ''YWZcdTkxYWFcdTkxYjVcdTkxYjRcdTkxYmFcdTkxYzBcdTkxYzFcdTkxYzlcdTkxY2JcdTkxZDBcdTkxZDZcdTkxZGZcdTkxZTFcdTkxZGJcdTkxZmNcdTkxZjVcdTkxZjZcdTkyMWVcdTkxZmZcdTkyMTRcdTkyMmNcdTkyMTVcdTkyMTFcdTkyNWVcdTkyNTdcdTkyNDVcdTkyNDlcdTkyNjRc''@;'; put 'put ''dTkyNDhcdTkyOTVcdTkyM2ZcdTkyNGJcdTkyNTBcdTkyOWNcdTkyOTZcdTkyOTNcdTkyOWJcdTkyNWFcdTkyY2ZcdTkyYjlcdTkyYjdcdTkyZTlcdTkzMGZcdTkyZmFcdTkzNDRcdTkzMmUiXSxbImU4NDAiLCJcdTkzMTlcdTkzMjJcdTkzMWFcdTkzMjNcdTkzM2FcdTkzMzVcdTkzM2JcdTkz''@;'; put 'put ''NWNcdTkzNjBcdTkzN2NcdTkzNmVcdTkzNTZcdTkzYjBcdTkzYWNcdTkzYWRcdTkzOTRcdTkzYjlcdTkzZDZcdTkzZDdcdTkzZThcdTkzZTVcdTkzZDhcdTkzYzNcdTkzZGRcdTkzZDBcdTkzYzhcdTkzZTRcdTk0MWFcdTk0MTRcdTk0MTNcdTk0MDNcdTk0MDdcdTk0MTBcdTk0MzZcdTk0MmJc''@;'; put 'put ''dTk0MzVcdTk0MjFcdTk0M2FcdTk0NDFcdTk0NTJcdTk0NDRcdTk0NWJcdTk0NjBcdTk0NjJcdTk0NWVcdTk0NmFcdTkyMjlcdTk0NzBcdTk0NzVcdTk0NzdcdTk0N2RcdTk0NWFcdTk0N2NcdTk0N2VcdTk0ODFcdTk0N2ZcdTk1ODJcdTk1ODdcdTk1OGFcdTk1OTRcdTk1OTZcdTk1OThcdTk1''@;'; put 'put ''OTkiXSxbImU4ODAiLCJcdTk1YTBcdTk1YThcdTk1YTdcdTk1YWRcdTk1YmNcdTk1YmJcdTk1YjlcdTk1YmVcdTk1Y2FcdTZmZjZcdTk1YzNcdTk1Y2RcdTk1Y2NcdTk1ZDVcdTk1ZDRcdTk1ZDZcdTk1ZGNcdTk1ZTFcdTk1ZTVcdTk1ZTJcdTk2MjFcdTk2MjhcdTk2MmVcdTk2MmZcdTk2NDJc''@;'; put 'put ''dTk2NGNcdTk2NGZcdTk2NGJcdTk2NzdcdTk2NWNcdTk2NWVcdTk2NWRcdTk2NWZcdTk2NjZcdTk2NzJcdTk2NmNcdTk2OGRcdTk2OThcdTk2OTVcdTk2OTdcdTk2YWFcdTk2YTdcdTk2YjFcdTk2YjJcdTk2YjBcdTk2YjRcdTk2YjZcdTk2YjhcdTk2YjlcdTk2Y2VcdTk2Y2JcdTk2YzlcdTk2''@;'; put 'put ''Y2RcdTg5NGRcdTk2ZGNcdTk3MGRcdTk2ZDVcdTk2ZjlcdTk3MDRcdTk3MDZcdTk3MDhcdTk3MTNcdTk3MGVcdTk3MTFcdTk3MGZcdTk3MTZcdTk3MTlcdTk3MjRcdTk3MmFcdTk3MzBcdTk3MzlcdTk3M2RcdTk3M2VcdTk3NDRcdTk3NDZcdTk3NDhcdTk3NDJcdTk3NDlcdTk3NWNcdTk3NjBc''@;'; put 'put ''dTk3NjRcdTk3NjZcdTk3NjhcdTUyZDJcdTk3NmJcdTk3NzFcdTk3NzlcdTk3ODVcdTk3N2NcdTk3ODFcdTk3N2FcdTk3ODZcdTk3OGJcdTk3OGZcdTk3OTBcdTk3OWNcdTk3YThcdTk3YTZcdTk3YTNcdTk3YjNcdTk3YjRcdTk3YzNcdTk3YzZcdTk3YzhcdTk3Y2JcdTk3ZGNcdTk3ZWRcdTlm''@;'; put 'put ''NGZcdTk3ZjJcdTdhZGZcdTk3ZjZcdTk3ZjVcdTk4MGZcdTk4MGNcdTk4MzhcdTk4MjRcdTk4MjFcdTk4MzdcdTk4M2RcdTk4NDZcdTk4NGZcdTk4NGJcdTk4NmJcdTk4NmZcdTk4NzAiXSxbImU5NDAiLCJcdTk4NzFcdTk4NzRcdTk4NzNcdTk4YWFcdTk4YWZcdTk4YjFcdTk4YjZcdTk4YzRc''@;'; put 'put ''dTk4YzNcdTk4YzZcdTk4ZTlcdTk4ZWJcdTk5MDNcdTk5MDlcdTk5MTJcdTk5MTRcdTk5MThcdTk5MjFcdTk5MWRcdTk5MWVcdTk5MjRcdTk5MjBcdTk5MmNcdTk5MmVcdTk5M2RcdTk5M2VcdTk5NDJcdTk5NDlcdTk5NDVcdTk5NTBcdTk5NGJcdTk5NTFcdTk5NTJcdTk5NGNcdTk5NTVcdTk5''@;'; put 'put ''OTdcdTk5OThcdTk5YTVcdTk5YWRcdTk5YWVcdTk5YmNcdTk5ZGZcdTk5ZGJcdTk5ZGRcdTk5ZDhcdTk5ZDFcdTk5ZWRcdTk5ZWVcdTk5ZjFcdTk5ZjJcdTk5ZmJcdTk5ZjhcdTlhMDFcdTlhMGZcdTlhMDVcdTk5ZTJcdTlhMTlcdTlhMmJcdTlhMzdcdTlhNDVcdTlhNDJcdTlhNDBcdTlhNDMi''@;'; put 'put ''XSxbImU5ODAiLCJcdTlhM2VcdTlhNTVcdTlhNGRcdTlhNWJcdTlhNTdcdTlhNWZcdTlhNjJcdTlhNjVcdTlhNjRcdTlhNjlcdTlhNmJcdTlhNmFcdTlhYWRcdTlhYjBcdTlhYmNcdTlhYzBcdTlhY2ZcdTlhZDFcdTlhZDNcdTlhZDRcdTlhZGVcdTlhZGZcdTlhZTJcdTlhZTNcdTlhZTZcdTlh''@;'; put 'put ''ZWZcdTlhZWJcdTlhZWVcdTlhZjRcdTlhZjFcdTlhZjdcdTlhZmJcdTliMDZcdTliMThcdTliMWFcdTliMWZcdTliMjJcdTliMjNcdTliMjVcdTliMjdcdTliMjhcdTliMjlcdTliMmFcdTliMmVcdTliMmZcdTliMzJcdTliNDRcdTliNDNcdTliNGZcdTliNGRcdTliNGVcdTliNTFcdTliNThc''@;'; put 'put ''dTliNzRcdTliOTNcdTliODNcdTliOTFcdTliOTZcdTliOTdcdTliOWZcdTliYTBcdTliYThcdTliYjRcdTliYzBcdTliY2FcdTliYjlcdTliYzZcdTliY2ZcdTliZDFcdTliZDJcdTliZTNcdTliZTJcdTliZTRcdTliZDRcdTliZTFcdTljM2FcdTliZjJcdTliZjFcdTliZjBcdTljMTVcdTlj''@;'; put 'put ''MTRcdTljMDlcdTljMTNcdTljMGNcdTljMDZcdTljMDhcdTljMTJcdTljMGFcdTljMDRcdTljMmVcdTljMWJcdTljMjVcdTljMjRcdTljMjFcdTljMzBcdTljNDdcdTljMzJcdTljNDZcdTljM2VcdTljNWFcdTljNjBcdTljNjdcdTljNzZcdTljNzhcdTljZTdcdTljZWNcdTljZjBcdTlkMDlc''@;'; put 'put ''dTlkMDhcdTljZWJcdTlkMDNcdTlkMDZcdTlkMmFcdTlkMjZcdTlkYWZcdTlkMjNcdTlkMWZcdTlkNDRcdTlkMTVcdTlkMTJcdTlkNDFcdTlkM2ZcdTlkM2VcdTlkNDZcdTlkNDgiXSxbImVhNDAiLCJcdTlkNWRcdTlkNWVcdTlkNjRcdTlkNTFcdTlkNTBcdTlkNTlcdTlkNzJcdTlkODlcdTlk''@;'; put 'put ''ODdcdTlkYWJcdTlkNmZcdTlkN2FcdTlkOWFcdTlkYTRcdTlkYTlcdTlkYjJcdTlkYzRcdTlkYzFcdTlkYmJcdTlkYjhcdTlkYmFcdTlkYzZcdTlkY2ZcdTlkYzJcdTlkZDlcdTlkZDNcdTlkZjhcdTlkZTZcdTlkZWRcdTlkZWZcdTlkZmRcdTllMWFcdTllMWJcdTllMWVcdTllNzVcdTllNzlc''@;'; put 'put ''dTllN2RcdTllODFcdTllODhcdTllOGJcdTllOGNcdTllOTJcdTllOTVcdTllOTFcdTllOWRcdTllYTVcdTllYTlcdTllYjhcdTllYWFcdTllYWRcdTk3NjFcdTllY2NcdTllY2VcdTllY2ZcdTllZDBcdTllZDRcdTllZGNcdTllZGVcdTllZGRcdTllZTBcdTllZTVcdTllZThcdTllZWYiXSxb''@;'; put 'put ''ImVhODAiLCJcdTllZjRcdTllZjZcdTllZjdcdTllZjlcdTllZmJcdTllZmNcdTllZmRcdTlmMDdcdTlmMDhcdTc2YjdcdTlmMTVcdTlmMjFcdTlmMmNcdTlmM2VcdTlmNGFcdTlmNTJcdTlmNTRcdTlmNjNcdTlmNWZcdTlmNjBcdTlmNjFcdTlmNjZcdTlmNjdcdTlmNmNcdTlmNmFcdTlmNzdc''@;'; put 'put ''dTlmNzJcdTlmNzZcdTlmOTVcdTlmOWNcdTlmYTBcdTU4MmZcdTY5YzdcdTkwNTlcdTc0NjRcdTUxZGNcdTcxOTkiXSxbImVkNDAiLCJcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRl''@;'; put 'put ''ZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZcdTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGFcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZc''@;'; put 'put ''dTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0OWNcdTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGYiXSxbImVkODAiLCJcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5''@;'; put 'put ''NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZcdTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVc''@;'; put 'put ''dTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYyYTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2''@;'; put 'put ''NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJcdTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJc''@;'; put 'put ''dTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmZcdTZkOTZcdTZkYWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcw''@;'; put 'put ''ODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjEiXSxbImVlNDAiLCJcdTcyYmVcdTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlcdTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVc''@;'; put 'put ''dTc0NjJcdTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUyYWZcdTc4MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZhMThcdWZhMTlcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdh''@;'; put 'put ''ZWJcdTdiOWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFcdWZhMWVcdTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhcdTg0YjRcdTg1NTNcdTg1NTkiXSxbImVlODAiLCJcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFc''@;'; put 'put ''dTg4MDdcdTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThjZjBcdThjZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZhMjVcdTkwNjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGFcdTkxZDdcdTkx''@;'; put 'put ''ZGVcdTkxZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlcdTkyNTFcdTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhcdTkyZTdcdTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVc''@;'; put 'put ''dTkzMjFcdTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkzZjhcdTk0MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZhMjlcdTk2OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3''@;'; put 'put ''NTVcdTk4NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDlcdTlhZGNcdTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDEiXSxbImVlZWYiLCJcdTIxNzAiLDksIlx1ZmZlMlx1ZmZlNFx1''@;'; put 'put ''ZmYwN1x1ZmYwMiJdLFsiZjA0MCIsIlx1ZTAwMCIsNjJdLFsiZjA4MCIsIlx1ZTAzZiIsMTI0XSxbImYxNDAiLCJcdWUwYmMiLDYyXSxbImYxODAiLCJcdWUwZmIiLDEyNF0sWyJmMjQwIiwiXHVlMTc4Iiw2Ml0sWyJmMjgwIiwiXHVlMWI3IiwxMjRdLFsiZjM0MCIsIlx1ZTIzNCIsNjJdLFsi''@;'; put 'put ''ZjM4MCIsIlx1ZTI3MyIsMTI0XSxbImY0NDAiLCJcdWUyZjAiLDYyXSxbImY0ODAiLCJcdWUzMmYiLDEyNF0sWyJmNTQwIiwiXHVlM2FjIiw2Ml0sWyJmNTgwIiwiXHVlM2ViIiwxMjRdLFsiZjY0MCIsIlx1ZTQ2OCIsNjJdLFsiZjY4MCIsIlx1ZTRhNyIsMTI0XSxbImY3NDAiLCJcdWU1MjQi''@;'; put 'put ''LDYyXSxbImY3ODAiLCJcdWU1NjMiLDEyNF0sWyJmODQwIiwiXHVlNWUwIiw2Ml0sWyJmODgwIiwiXHVlNjFmIiwxMjRdLFsiZjk0MCIsIlx1ZTY5YyJdLFsiZmE0MCIsIlx1MjE3MCIsOSwiXHUyMTYwIiw5LCJcdWZmZTJcdWZmZTRcdWZmMDdcdWZmMDJcdTMyMzFcdTIxMTZcdTIxMjFcdTIy''@;'; put 'put ''MzVcdTdlOGFcdTg5MWNcdTkzNDhcdTkyODhcdTg0ZGNcdTRmYzlcdTcwYmJcdTY2MzFcdTY4YzhcdTkyZjlcdTY2ZmJcdTVmNDVcdTRlMjhcdTRlZTFcdTRlZmNcdTRmMDBcdTRmMDNcdTRmMzlcdTRmNTZcdTRmOTJcdTRmOGFcdTRmOWFcdTRmOTRcdTRmY2RcdTUwNDBcdTUwMjJcdTRmZmZc''@;'; put 'put ''dTUwMWVcdTUwNDZcdTUwNzBcdTUwNDJcdTUwOTRcdTUwZjRcdTUwZDhcdTUxNGEiXSxbImZhODAiLCJcdTUxNjRcdTUxOWRcdTUxYmVcdTUxZWNcdTUyMTVcdTUyOWNcdTUyYTZcdTUyYzBcdTUyZGJcdTUzMDBcdTUzMDdcdTUzMjRcdTUzNzJcdTUzOTNcdTUzYjJcdTUzZGRcdWZhMGVcdTU0''@;'; put 'put ''OWNcdTU0OGFcdTU0YTlcdTU0ZmZcdTU1ODZcdTU3NTlcdTU3NjVcdTU3YWNcdTU3YzhcdTU3YzdcdWZhMGZcdWZhMTBcdTU4OWVcdTU4YjJcdTU5MGJcdTU5NTNcdTU5NWJcdTU5NWRcdTU5NjNcdTU5YTRcdTU5YmFcdTViNTZcdTViYzBcdTc1MmZcdTViZDhcdTViZWNcdTVjMWVcdTVjYTZc''@;'; put 'put ''dTVjYmFcdTVjZjVcdTVkMjdcdTVkNTNcdWZhMTFcdTVkNDJcdTVkNmRcdTVkYjhcdTVkYjlcdTVkZDBcdTVmMjFcdTVmMzRcdTVmNjdcdTVmYjdcdTVmZGVcdTYwNWRcdTYwODVcdTYwOGFcdTYwZGVcdTYwZDVcdTYxMjBcdTYwZjJcdTYxMTFcdTYxMzdcdTYxMzBcdTYxOThcdTYyMTNcdTYy''@;'; put 'put ''YTZcdTYzZjVcdTY0NjBcdTY0OWRcdTY0Y2VcdTY1NGVcdTY2MDBcdTY2MTVcdTY2M2JcdTY2MDlcdTY2MmVcdTY2MWVcdTY2MjRcdTY2NjVcdTY2NTdcdTY2NTlcdWZhMTJcdTY2NzNcdTY2OTlcdTY2YTBcdTY2YjJcdTY2YmZcdTY2ZmFcdTY3MGVcdWY5MjlcdTY3NjZcdTY3YmJcdTY4NTJc''@;'; put 'put ''dTY3YzBcdTY4MDFcdTY4NDRcdTY4Y2ZcdWZhMTNcdTY5NjhcdWZhMTRcdTY5OThcdTY5ZTJcdTZhMzBcdTZhNmJcdTZhNDZcdTZhNzNcdTZhN2VcdTZhZTJcdTZhZTRcdTZiZDZcdTZjM2ZcdTZjNWNcdTZjODZcdTZjNmZcdTZjZGFcdTZkMDRcdTZkODdcdTZkNmYiXSxbImZiNDAiLCJcdTZk''@;'; put 'put ''OTZcdTZkYWNcdTZkY2ZcdTZkZjhcdTZkZjJcdTZkZmNcdTZlMzlcdTZlNWNcdTZlMjdcdTZlM2NcdTZlYmZcdTZmODhcdTZmYjVcdTZmZjVcdTcwMDVcdTcwMDdcdTcwMjhcdTcwODVcdTcwYWJcdTcxMGZcdTcxMDRcdTcxNWNcdTcxNDZcdTcxNDdcdWZhMTVcdTcxYzFcdTcxZmVcdTcyYjFc''@;'; put 'put ''dTcyYmVcdTczMjRcdWZhMTZcdTczNzdcdTczYmRcdTczYzlcdTczZDZcdTczZTNcdTczZDJcdTc0MDdcdTczZjVcdTc0MjZcdTc0MmFcdTc0MjlcdTc0MmVcdTc0NjJcdTc0ODlcdTc0OWZcdTc1MDFcdTc1NmZcdTc2ODJcdTc2OWNcdTc2OWVcdTc2OWJcdTc2YTZcdWZhMTdcdTc3NDZcdTUy''@;'; put 'put ''YWZcdTc4MjFcdTc4NGVcdTc4NjRcdTc4N2FcdTc5MzBcdWZhMThcdWZhMTkiXSxbImZiODAiLCJcdWZhMWFcdTc5OTRcdWZhMWJcdTc5OWJcdTdhZDFcdTdhZTdcdWZhMWNcdTdhZWJcdTdiOWVcdWZhMWRcdTdkNDhcdTdkNWNcdTdkYjdcdTdkYTBcdTdkZDZcdTdlNTJcdTdmNDdcdTdmYTFc''@;'; put 'put ''dWZhMWVcdTgzMDFcdTgzNjJcdTgzN2ZcdTgzYzdcdTgzZjZcdTg0NDhcdTg0YjRcdTg1NTNcdTg1NTlcdTg1NmJcdWZhMWZcdTg1YjBcdWZhMjBcdWZhMjFcdTg4MDdcdTg4ZjVcdThhMTJcdThhMzdcdThhNzlcdThhYTdcdThhYmVcdThhZGZcdWZhMjJcdThhZjZcdThiNTNcdThiN2ZcdThj''@;'; put 'put ''ZjBcdThjZjRcdThkMTJcdThkNzZcdWZhMjNcdThlY2ZcdWZhMjRcdWZhMjVcdTkwNjdcdTkwZGVcdWZhMjZcdTkxMTVcdTkxMjdcdTkxZGFcdTkxZDdcdTkxZGVcdTkxZWRcdTkxZWVcdTkxZTRcdTkxZTVcdTkyMDZcdTkyMTBcdTkyMGFcdTkyM2FcdTkyNDBcdTkyM2NcdTkyNGVcdTkyNTlc''@;'; put 'put ''dTkyNTFcdTkyMzlcdTkyNjdcdTkyYTdcdTkyNzdcdTkyNzhcdTkyZTdcdTkyZDdcdTkyZDlcdTkyZDBcdWZhMjdcdTkyZDVcdTkyZTBcdTkyZDNcdTkzMjVcdTkzMjFcdTkyZmJcdWZhMjhcdTkzMWVcdTkyZmZcdTkzMWRcdTkzMDJcdTkzNzBcdTkzNTdcdTkzYTRcdTkzYzZcdTkzZGVcdTkz''@;'; put 'put ''ZjhcdTk0MzFcdTk0NDVcdTk0NDhcdTk1OTJcdWY5ZGNcdWZhMjlcdTk2OWRcdTk2YWZcdTk3MzNcdTk3M2JcdTk3NDNcdTk3NGRcdTk3NGZcdTk3NTFcdTk3NTVcdTk4NTdcdTk4NjVcdWZhMmFcdWZhMmJcdTk5MjdcdWZhMmNcdTk5OWVcdTlhNGVcdTlhZDkiXSxbImZjNDAiLCJcdTlhZGNc''@;'; put 'put ''dTliNzVcdTliNzJcdTliOGZcdTliYjFcdTliYmJcdTljMDBcdTlkNzBcdTlkNmJcdWZhMmRcdTllMTlcdTllZDEiXV0nKX0sMTU1Nzk6UWU9PnsidXNlIHN0cmljdCI7UWUuZXhwb3J0cz1KU09OLnBhcnNlKCd7IjIuMTYuODQwLjEuMTAxLjMuNC4xLjEiOiJhZXMtMTI4LWVjYiIsIjIuMTYu''@;'; put 'put ''ODQwLjEuMTAxLjMuNC4xLjIiOiJhZXMtMTI4LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjMiOiJhZXMtMTI4LW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQiOiJhZXMtMTI4LWNmYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxIjoiYWVzLTE5Mi1lY2IiLCIyLjE2Ljg0MC4xLjEw''@;'; put 'put ''MS4zLjQuMS4yMiI6ImFlcy0xOTItY2JjIiwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjMiOiJhZXMtMTkyLW9mYiIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0IjoiYWVzLTE5Mi1jZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MSI6ImFlcy0yNTYtZWNiIiwiMi4xNi44NDAuMS4xMDEuMy40''@;'; put 'put ''LjEuNDIiOiJhZXMtMjU2LWNiYyIsIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzIjoiYWVzLTI1Ni1vZmIiLCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NCI6ImFlcy0yNTYtY2ZiIn0nKX19LFFlPT57UWUoUWUucz0xODcxMyl9XSk7'';'; 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.9ec1a56a8dd198cf-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 ''KHNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXI9c2VsZi53ZWJwYWNrQ2h1bmtkYXRhY29udHJvbGxlcnx8W10pLnB1c2goW1s0NjFdLHsyNDA1MDooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoMTg4ODMpLHQoNTQ5NDApLHQoMzkyNzEpLHQoNTI0NDQpLHQoMjYyMDMpLHQoMTU2MjYp''@;'; put 'put ''LHQoODgwMjUpLHQoNTY0NDIpLHQoMzI4OTkpLHQoNjYzNzQpLHQoNDI0NiksdCgyMjkxMyksdCgxMDc0MyksdCg2NTg0NiksdCg5MzUzKSx0KDk2OTM1KSx0KDkyNTY4KTt2YXIgTXQ9dCg4MzgzOCk7d2luZG93Lmdsb2JhbD13aW5kb3csd2luZG93Lmdsb2JhbC5CdWZmZXI9d2luZG93Lmds''@;'; put 'put ''b2JhbC5CdWZmZXJ8fE10LkJ1ZmZlcix3aW5kb3cucHJvY2Vzcz17dmVyc2lvbjoiIn19LDEzOTgxOihjLGwpPT57InVzZSBzdHJpY3QiO2wuYnl0ZUxlbmd0aD1mdW5jdGlvbiBpKGcpe3ZhciBEPWYoZykseD1EWzFdO3JldHVybiAzKihEWzBdK3gpLzQteH0sbC50b0J5dGVBcnJheT1mdW5j''@;'; put 'put ''dGlvbiBwKGcpe3ZhciBELFQsRj1mKGcpLHg9RlswXSxBPUZbMV0sQz1uZXcgZShmdW5jdGlvbiB2KGcsRCxGKXtyZXR1cm4gMyooRCtGKS80LUZ9KDAseCxBKSksST0wLE09QT4wP3gtNDp4O2ZvcihUPTA7VDxNO1QrPTQpRD1uW2cuY2hhckNvZGVBdChUKV08PDE4fG5bZy5jaGFyQ29kZUF0''@;'; put 'put ''KFQrMSldPDwxMnxuW2cuY2hhckNvZGVBdChUKzIpXTw8NnxuW2cuY2hhckNvZGVBdChUKzMpXSxDW0krK109RD4+MTYmMjU1LENbSSsrXT1EPj44JjI1NSxDW0krK109MjU1JkQ7cmV0dXJuIDI9PT1BJiYoRD1uW2cuY2hhckNvZGVBdChUKV08PDJ8bltnLmNoYXJDb2RlQXQoVCsxKV0+PjQs''@;'; put 'put ''Q1tJKytdPTI1NSZEKSwxPT09QSYmKEQ9bltnLmNoYXJDb2RlQXQoVCldPDwxMHxuW2cuY2hhckNvZGVBdChUKzEpXTw8NHxuW2cuY2hhckNvZGVBdChUKzIpXT4+MixDW0krK109RD4+OCYyNTUsQ1tJKytdPTI1NSZEKSxDfSxsLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24gRShnKXtmb3IodmFy''@;'; put 'put ''IEQsRj1nLmxlbmd0aCx4PUYlMyxBPVtdLEM9MTYzODMsST0wLE09Ri14O0k8TTtJKz1DKUEucHVzaCh5KGcsSSxJK0M+TT9NOkkrQykpO3JldHVybiAxPT09eD9BLnB1c2godFsoRD1nW0YtMV0pPj4yXSt0W0Q8PDQmNjNdKyI9PSIpOjI9PT14JiZBLnB1c2godFsoRD0oZ1tGLTJdPDw4KStn''@;'; put 'put ''W0YtMV0pPj4xMF0rdFtEPj40JjYzXSt0W0Q8PDImNjNdKyI9IiksQS5qb2luKCIiKX07Zm9yKHZhciB0PVtdLG49W10sZT10eXBlb2YgVWludDhBcnJheTwidSI/VWludDhBcnJheTpBcnJheSxzPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6''@;'; put 'put ''MDEyMzQ1Njc4OSsvIixhPTA7YTw2NDsrK2EpdFthXT1zW2FdLG5bcy5jaGFyQ29kZUF0KGEpXT1hO2Z1bmN0aW9uIGYoZyl7dmFyIEQ9Zy5sZW5ndGg7aWYoRCU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFy''@;'; put 'put ''IEY9Zy5pbmRleE9mKCI9Iik7cmV0dXJuLTE9PT1GJiYoRj1EKSxbRixGPT09RD8wOjQtRiU0XX1mdW5jdGlvbiBkKGcpe3JldHVybiB0W2c+PjE4JjYzXSt0W2c+PjEyJjYzXSt0W2c+PjYmNjNdK3RbNjMmZ119ZnVuY3Rpb24geShnLEQsRil7Zm9yKHZhciBBPVtdLEM9RDtDPEY7Qys9MylB''@;'; put 'put ''LnB1c2goZCgoZ1tDXTw8MTYmMTY3MTE2ODApKyhnW0MrMV08PDgmNjUyODApKygyNTUmZ1tDKzJdKSkpO3JldHVybiBBLmpvaW4oIiIpfW5bNDVdPTYyLG5bOTVdPTYzfSw4MzgzODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMTM5ODEpLGU9dCgyMjAyMCkscz0iZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgU3ltYm9sJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sLmZvcj9TeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpOm51bGw7bC5CdWZmZXI9aSxsLlNsb3dCdWZmZXI9ZnVuY3Rpb24gQyhoKXtyZXR1cm4raCE9aCYmKGg9MCksaS5hbGxvYygraCl9LGwu''@;'; put 'put ''SU5TUEVDVF9NQVhfQllURVM9NTA7dmFyIGE9MjE0NzQ4MzY0NztmdW5jdGlvbiBmKGgpe2lmKGg+YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK2grJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO3ZhciByPW5ldyBVaW50OEFycmF5KGgpO3JldHVybiBPYmpl''@;'; put 'put ''Y3Quc2V0UHJvdG90eXBlT2YocixpLnByb3RvdHlwZSkscn1mdW5jdGlvbiBpKGgscixvKXtpZigibnVtYmVyIj09dHlwZW9mIGgpe2lmKCJzdHJpbmciPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4g''@;'; put 'put ''UmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4geShoKX1yZXR1cm4gdihoLHIsbyl9ZnVuY3Rpb24gdihoLHIsbyl7aWYoInN0cmluZyI9PXR5cGVvZiBoKXJldHVybiBmdW5jdGlvbiBFKGgscil7aWYoKCJzdHJpbmciIT10eXBlb2Ygcnx8IiI9PT1yKSYmKHI9InV0ZjgiKSwhaS5pc0Vu''@;'; put 'put ''Y29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7dmFyIG89MHxJKGgsciksbT1mKG8pLHc9bS53cml0ZShoLHIpO3JldHVybiB3IT09byYmKG09bS5zbGljZSgwLHcpKSxtfShoLHIpO2lmKEFycmF5QnVmZmVyLmlzVmlldyhoKSlyZXR1cm4gZnVu''@;'; put 'put ''Y3Rpb24gRChoKXtpZih0bihoLFVpbnQ4QXJyYXkpKXt2YXIgcj1uZXcgVWludDhBcnJheShoKTtyZXR1cm4gRihyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKX1yZXR1cm4gZyhoKX0oaCk7aWYobnVsbD09aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1l''@;'; put 'put ''bnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBoKTtpZih0bihoLEFycmF5QnVmZmVyKXx8aCYmdG4oaC5idWZmZXIsQXJyYXlCdWZmZXIpfHx0eXBlb2Yg''@;'; put 'put ''U2hhcmVkQXJyYXlCdWZmZXI8InUiJiYodG4oaCxTaGFyZWRBcnJheUJ1ZmZlcil8fGgmJnRuKGguYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIEYoaCxyLG8pO2lmKCJudW1iZXIiPT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInZhbHVlIiBhcmd1bWVudCBt''@;'; put 'put ''dXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTt2YXIgbT1oLnZhbHVlT2YmJmgudmFsdWVPZigpO2lmKG51bGwhPW0mJm0hPT1oKXJldHVybiBpLmZyb20obSxyLG8pO3ZhciB3PWZ1bmN0aW9uIHgoaCl7aWYoaS5pc0J1ZmZlcihoKSl7dmFyIHI9MHxB''@;'; put 'put ''KGgubGVuZ3RoKSxvPWYocik7cmV0dXJuIDA9PT1vLmxlbmd0aHx8aC5jb3B5KG8sMCwwLHIpLG99cmV0dXJuIHZvaWQgMCE9PWgubGVuZ3RoPyJudW1iZXIiIT10eXBlb2YgaC5sZW5ndGh8fHluKGgubGVuZ3RoKT9mKDApOmcoaCk6IkJ1ZmZlciI9PT1oLnR5cGUmJkFycmF5LmlzQXJyYXko''@;'; put 'put ''aC5kYXRhKT9nKGguZGF0YSk6dm9pZCAwfShoKTtpZih3KXJldHVybiB3O2lmKHR5cGVvZiBTeW1ib2w8InUiJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiBoW1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIGkuZnJvbShoW1N5bWJvbC50b1ByaW1pdGl2''@;'; put 'put ''ZV0oInN0cmluZyIpLHIsbyk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgaCl9ZnVu''@;'; put 'put ''Y3Rpb24gcChoKXtpZigibnVtYmVyIiE9dHlwZW9mIGgpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihoPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytoKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAi''@;'; put 'put ''c2l6ZSInKX1mdW5jdGlvbiB5KGgpe3JldHVybiBwKGgpLGYoaDwwPzA6MHxBKGgpKX1mdW5jdGlvbiBnKGgpe2Zvcih2YXIgcj1oLmxlbmd0aDwwPzA6MHxBKGgubGVuZ3RoKSxvPWYociksbT0wO208cjttKz0xKW9bbV09MjU1JmhbbV07cmV0dXJuIG99ZnVuY3Rpb24gRihoLHIsbyl7aWYo''@;'; put 'put ''cjwwfHxoLmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcignIm9mZnNldCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7aWYoaC5ieXRlTGVuZ3RoPHIrKG98fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCcibGVuZ3RoIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMn''@;'; put 'put ''KTt2YXIgbTtyZXR1cm4gbT12b2lkIDA9PT1yJiZ2b2lkIDA9PT1vP25ldyBVaW50OEFycmF5KGgpOnZvaWQgMD09PW8/bmV3IFVpbnQ4QXJyYXkoaCxyKTpuZXcgVWludDhBcnJheShoLHIsbyksT2JqZWN0LnNldFByb3RvdHlwZU9mKG0saS5wcm90b3R5cGUpLG19ZnVuY3Rpb24gQShoKXtp''@;'; put 'put ''ZihoPj1hKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IithLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8aH1mdW5jdGlvbiBJKGgscil7aWYoaS5pc0J1ZmZlcihoKSlyZXR1cm4gaC5s''@;'; put 'put ''ZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGgpfHx0bihoLEFycmF5QnVmZmVyKSlyZXR1cm4gaC5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgaCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1''@;'; put 'put ''ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgaCk7dmFyIG89aC5sZW5ndGgsbT1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFtJiYwPT09bylyZXR1cm4gMDtmb3IodmFyIHc9ITE7Oylzd2l0Y2gocil7Y2FzZSJhc2NpaSI6Y2Fz''@;'; put 'put ''ZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gbztjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBjbihoKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKm87Y2FzZSJoZXgiOnJldHVybiBvPj4+MTtjYXNl''@;'; put 'put ''ImJhc2U2NCI6cmV0dXJuIGhuKGgpLmxlbmd0aDtkZWZhdWx0OmlmKHcpcmV0dXJuIG0/LTE6Y24oaCkubGVuZ3RoO3I9KCIiK3IpLnRvTG93ZXJDYXNlKCksdz0hMH19ZnVuY3Rpb24gTShoLHIsbyl7dmFyIG09ITE7aWYoKHZvaWQgMD09PXJ8fHI8MCkmJihyPTApLHI+dGhpcy5sZW5ndGh8''@;'; put 'put ''fCgodm9pZCAwPT09b3x8bz50aGlzLmxlbmd0aCkmJihvPXRoaXMubGVuZ3RoKSxvPD0wKXx8KG8+Pj49MCk8PShyPj4+PTApKXJldHVybiIiO2ZvcihofHwoaD0idXRmOCIpOzspc3dpdGNoKGgpe2Nhc2UiaGV4IjpyZXR1cm4gTXQodGhpcyxyLG8pO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6''@;'; put 'put ''cmV0dXJuIF8odGhpcyxyLG8pO2Nhc2UiYXNjaWkiOnJldHVybiBYKHRoaXMscixvKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBydCh0aGlzLHIsbyk7Y2FzZSJiYXNlNjQiOnJldHVybiBkdCh0aGlzLHIsbyk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUi''@;'; put 'put ''OmNhc2UidXRmLTE2bGUiOnJldHVybiBndCh0aGlzLHIsbyk7ZGVmYXVsdDppZihtKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIraCk7aD0oaCsiIikudG9Mb3dlckNhc2UoKSxtPSEwfX1mdW5jdGlvbiBUKGgscixvKXt2YXIgbT1oW3JdO2hbcl09aFtvXSxoW29d''@;'; put 'put ''PW19ZnVuY3Rpb24gYihoLHIsbyxtLHcpe2lmKDA9PT1oLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIG8/KG09byxvPTApOm8+MjE0NzQ4MzY0Nz9vPTIxNDc0ODM2NDc6bzwtMjE0NzQ4MzY0OCYmKG89LTIxNDc0ODM2NDgpLHluKG89K28pJiYobz13PzA6aC5sZW5ndGgt''@;'; put 'put ''MSksbzwwJiYobz1oLmxlbmd0aCtvKSxvPj1oLmxlbmd0aCl7aWYodylyZXR1cm4tMTtvPWgubGVuZ3RoLTF9ZWxzZSBpZihvPDApe2lmKCF3KXJldHVybi0xO289MH1pZigic3RyaW5nIj09dHlwZW9mIHImJihyPWkuZnJvbShyLG0pKSxpLmlzQnVmZmVyKHIpKXJldHVybiAwPT09ci5sZW5n''@;'; put 'put ''dGg/LTE6TChoLHIsbyxtLHcpO2lmKCJudW1iZXIiPT10eXBlb2YgcilyZXR1cm4gciY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP3c/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGgscixvKTpVaW50OEFycmF5LnByb3RvdHlw''@;'; put 'put ''ZS5sYXN0SW5kZXhPZi5jYWxsKGgscixvKTpMKGgsW3JdLG8sbSx3KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBMKGgscixvLG0sdyl7dmFyIEgsSz0xLCQ9aC5sZW5ndGgsUnQ9ci5sZW5ndGg7aWYodm9pZCAw''@;'; put 'put ''IT09bSYmKCJ1Y3MyIj09PShtPVN0cmluZyhtKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW18fCJ1dGYxNmxlIj09PW18fCJ1dGYtMTZsZSI9PT1tKSl7aWYoaC5sZW5ndGg8Mnx8ci5sZW5ndGg8MilyZXR1cm4tMTtLPTIsJC89MixSdC89MixvLz0yfWZ1bmN0aW9uIG50KHF0LGVuKXty''@;'; put 'put ''ZXR1cm4gMT09PUs/cXRbZW5dOnF0LnJlYWRVSW50MTZCRShlbipLKX1pZih3KXt2YXIgUT0tMTtmb3IoSD1vO0g8JDtIKyspaWYobnQoaCxIKT09PW50KHIsLTE9PT1RPzA6SC1RKSl7aWYoLTE9PT1RJiYoUT1IKSxILVErMT09PVJ0KXJldHVybiBRKkt9ZWxzZS0xIT09USYmKEgtPUgtUSks''@;'; put 'put ''UT0tMX1lbHNlIGZvcihvK1J0PiQmJihvPSQtUnQpLEg9bztIPj0wO0gtLSl7Zm9yKHZhciBpdD0hMCx6dD0wO3p0PFJ0O3p0KyspaWYobnQoaCxIK3p0KSE9PW50KHIsenQpKXtpdD0hMTticmVha31pZihpdClyZXR1cm4gSH1yZXR1cm4tMX1mdW5jdGlvbiBVKGgscixvLG0pe289TnVtYmVy''@;'; put 'put ''KG8pfHwwO3ZhciB3PWgubGVuZ3RoLW87bT8obT1OdW1iZXIobSkpPncmJihtPXcpOm09dzt2YXIgSz1yLmxlbmd0aDttPksvMiYmKG09Sy8yKTtmb3IodmFyICQ9MDskPG07KyskKXt2YXIgUnQ9cGFyc2VJbnQoci5zdWJzdHIoMiokLDIpLDE2KTtpZih5bihSdCkpcmV0dXJuICQ7aFtvKyRd''@;'; put 'put ''PVJ0fXJldHVybiAkfWZ1bmN0aW9uIFooaCxyLG8sbSl7cmV0dXJuIGFuKGNuKHIsaC5sZW5ndGgtbyksaCxvLG0pfWZ1bmN0aW9uIGV0KGgscixvLG0pe3JldHVybiBhbihmdW5jdGlvbiBkbihoKXtmb3IodmFyIHI9W10sbz0wO288aC5sZW5ndGg7KytvKXIucHVzaCgyNTUmaC5jaGFyQ29k''@;'; put 'put ''ZUF0KG8pKTtyZXR1cm4gcn0ociksaCxvLG0pfWZ1bmN0aW9uIHR0KGgscixvLG0pe3JldHVybiBhbihobihyKSxoLG8sbSl9ZnVuY3Rpb24gcHQoaCxyLG8sbSl7cmV0dXJuIGFuKGZ1bmN0aW9uIHBuKGgscil7Zm9yKHZhciBvLG0sSz1bXSwkPTA7JDxoLmxlbmd0aCYmISgoci09Mik8MCk7''@;'; put 'put ''KyskKW09KG89aC5jaGFyQ29kZUF0KCQpKT4+OCxLLnB1c2gobyUyNTYpLEsucHVzaChtKTtyZXR1cm4gS30ocixoLmxlbmd0aC1vKSxoLG8sbSl9ZnVuY3Rpb24gZHQoaCxyLG8pe3JldHVybiBuLmZyb21CeXRlQXJyYXkoMD09PXImJm89PT1oLmxlbmd0aD9oOmguc2xpY2UocixvKSl9ZnVu''@;'; put 'put ''Y3Rpb24gXyhoLHIsbyl7bz1NYXRoLm1pbihoLmxlbmd0aCxvKTtmb3IodmFyIG09W10sdz1yO3c8bzspe3ZhciBudCxILFEsaXQsSz1oW3ddLCQ9bnVsbCxSdD1LPjIzOT80Oks+MjIzPzM6Sz4xOTE/MjoxO2lmKHcrUnQ8PW8pc3dpdGNoKFJ0KXtjYXNlIDE6SzwxMjgmJigkPUspO2JyZWFr''@;'; put 'put ''O2Nhc2UgMjoxMjg9PSgxOTImKG50PWhbdysxXSkpJiYoaXQ9KDMxJkspPDw2fDYzJm50KT4xMjcmJigkPWl0KTticmVhaztjYXNlIDM6SD1oW3crMl0sMTI4PT0oMTkyJihudD1oW3crMV0pKSYmMTI4PT0oMTkyJkgpJiYoaXQ9KDE1JkspPDwxMnwoNjMmbnQpPDw2fDYzJkgpPjIwNDcmJihp''@;'; put 'put ''dDw1NTI5Nnx8aXQ+NTczNDMpJiYoJD1pdCk7YnJlYWs7Y2FzZSA0Okg9aFt3KzJdLFE9aFt3KzNdLDEyOD09KDE5MiYobnQ9aFt3KzFdKSkmJjEyOD09KDE5MiZIKSYmMTI4PT0oMTkyJlEpJiYoaXQ9KDE1JkspPDwxOHwoNjMmbnQpPDwxMnwoNjMmSCk8PDZ8NjMmUSk+NjU1MzUmJml0PDEx''@;'; put 'put ''MTQxMTImJigkPWl0KX1udWxsPT09JD8oJD02NTUzMyxSdD0xKTokPjY1NTM1JiYobS5wdXNoKCgkLT02NTUzNik+Pj4xMCYxMDIzfDU1Mjk2KSwkPTU2MzIwfDEwMjMmJCksbS5wdXNoKCQpLHcrPVJ0fXJldHVybiBmdW5jdGlvbiBZKGgpe3ZhciByPWgubGVuZ3RoO2lmKHI8PVYpcmV0dXJu''@;'; put 'put ''IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGgpO2Zvcih2YXIgbz0iIixtPTA7bTxyOylvKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxoLnNsaWNlKG0sbSs9VikpO3JldHVybiBvfShtKX1sLmtNYXhMZW5ndGg9YSwhKGkuVFlQRURfQVJSQVlfU1VQUE9SVD1m''@;'; put 'put ''dW5jdGlvbiB1KCl7dHJ5e3ZhciBoPW5ldyBVaW50OEFycmF5KDEpLHI9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YocixVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGgsciksNDI9PT1oLmZvbygpfWNh''@;'; put 'put ''dGNoe3JldHVybiExfX0oKSkmJnR5cGVvZiBjb25zb2xlPCJ1IiYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBsYWNrcyB0eXBlZCBhcnJheSAoVWludDhBcnJheSkgc3VwcG9ydCB3aGljaCBpcyByZXF1aXJlZCBieSBgYnVm''@;'; put 'put ''ZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLnByb3RvdHlwZSwicGFyZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihpLmlzQnVmZmVyKHRoaXMpKXJldHVy''@;'; put 'put ''biB0aGlzLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaS5wcm90b3R5cGUsIm9mZnNldCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoaS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLGkucG9vbFNpemU9ODE5MixpLmZyb209ZnVuY3Rp''@;'; put 'put ''b24oaCxyLG8pe3JldHVybiB2KGgscixvKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKGkucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoaSxVaW50OEFycmF5KSxpLmFsbG9jPWZ1bmN0aW9uKGgscixvKXtyZXR1cm4gZnVuY3Rpb24gZChoLHIs''@;'; put 'put ''byl7cmV0dXJuIHAoaCksaDw9MD9mKGgpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBvP2YoaCkuZmlsbChyLG8pOmYoaCkuZmlsbChyKTpmKGgpfShoLHIsbyl9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oaCl7cmV0dXJuIHkoaCl9LGkuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGgp''@;'; put 'put ''e3JldHVybiB5KGgpfSxpLmlzQnVmZmVyPWZ1bmN0aW9uKHIpe3JldHVybiBudWxsIT1yJiYhMD09PXIuX2lzQnVmZmVyJiZyIT09aS5wcm90b3R5cGV9LGkuY29tcGFyZT1mdW5jdGlvbihyLG8pe2lmKHRuKHIsVWludDhBcnJheSkmJihyPWkuZnJvbShyLHIub2Zmc2V0LHIuYnl0ZUxlbmd0''@;'; put 'put ''aCkpLHRuKG8sVWludDhBcnJheSkmJihvPWkuZnJvbShvLG8ub2Zmc2V0LG8uYnl0ZUxlbmd0aCkpLCFpLmlzQnVmZmVyKHIpfHwhaS5pc0J1ZmZlcihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImJ1ZjEiLCAiYnVmMiIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVy''@;'; put 'put ''IG9yIFVpbnQ4QXJyYXknKTtpZihyPT09bylyZXR1cm4gMDtmb3IodmFyIG09ci5sZW5ndGgsdz1vLmxlbmd0aCxLPTAsJD1NYXRoLm1pbihtLHcpO0s8JDsrK0spaWYocltLXSE9PW9bS10pe209cltLXSx3PW9bS107YnJlYWt9cmV0dXJuIG08dz8tMTp3PG0/MTowfSxpLmlzRW5jb2Rpbmc9''@;'; put 'put ''ZnVuY3Rpb24ocil7c3dpdGNoKFN0cmluZyhyKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6''@;'; put 'put ''Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGkuY29uY2F0PWZ1bmN0aW9uKHIsbyl7aWYoIUFycmF5LmlzQXJyYXkocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1yLmxl''@;'; put 'put ''bmd0aClyZXR1cm4gaS5hbGxvYygwKTt2YXIgbTtpZih2b2lkIDA9PT1vKWZvcihvPTAsbT0wO208ci5sZW5ndGg7KyttKW8rPXJbbV0ubGVuZ3RoO3ZhciB3PWkuYWxsb2NVbnNhZmUobyksSz0wO2ZvcihtPTA7bTxyLmxlbmd0aDsrK20pe3ZhciAkPXJbbV07aWYodG4oJCxVaW50OEFycmF5''@;'; put 'put ''KSlLKyQubGVuZ3RoPncubGVuZ3RoP2kuZnJvbSgkKS5jb3B5KHcsSyk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodywkLEspO2Vsc2V7aWYoIWkuaXNCdWZmZXIoJCkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVy''@;'; put 'put ''cycpOyQuY29weSh3LEspfUsrPSQubGVuZ3RofXJldHVybiB3fSxpLmJ5dGVMZW5ndGg9SSxpLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsaS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7aWYociUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIg''@;'; put 'put ''c2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgbz0wO288cjtvKz0yKVQodGhpcyxvLG8rMSk7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciByPXRoaXMubGVuZ3RoO2lmKHIlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigi''@;'; put 'put ''QnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIG89MDtvPHI7bys9NClUKHRoaXMsbyxvKzMpLFQodGhpcyxvKzEsbysyKTtyZXR1cm4gdGhpc30saS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7aWYociU4IT0w''@;'; put 'put ''KXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgbz0wO288cjtvKz04KVQodGhpcyxvLG8rNyksVCh0aGlzLG8rMSxvKzYpLFQodGhpcyxvKzIsbys1KSxUKHRoaXMsbyszLG8rNCk7cmV0dXJuIHRoaXN9LGku''@;'; put 'put ''cHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPWkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1yPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP18odGhpcywwLHIpOk0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpLnByb3RvdHlwZS5lcXVh''@;'; put 'put ''bHM9ZnVuY3Rpb24ocil7aWYoIWkuaXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09cnx8MD09PWkuY29tcGFyZSh0aGlzLHIpfSxpLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHI9IiIsbz1s''@;'; put 'put ''LklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiByPXRoaXMudG9TdHJpbmcoImhleCIsMCxvKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPm8mJihyKz0iIC4uLiAiKSwiPEJ1ZmZlciAiK3IrIj4ifSxzJiYoaS5wcm90b3R5cGVbc109aS5wcm90b3R5cGUuaW5z''@;'; put 'put ''cGVjdCksaS5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihyLG8sbSx3LEspe2lmKHRuKHIsVWludDhBcnJheSkmJihyPWkuZnJvbShyLHIub2Zmc2V0LHIuYnl0ZUxlbmd0aCkpLCFpLmlzQnVmZmVyKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAidGFyZ2V0IiBhcmd1bWVudCBtdXN0''@;'; put 'put ''IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHIpO2lmKHZvaWQgMD09PW8mJihvPTApLHZvaWQgMD09PW0mJihtPXI/ci5sZW5ndGg6MCksdm9pZCAwPT09dyYmKHc9MCksdm9pZCAwPT09SyYmKEs9dGhpcy5sZW5ndGgpLG88MHx8''@;'; put 'put ''bT5yLmxlbmd0aHx8dzwwfHxLPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZih3Pj1LJiZvPj1tKXJldHVybiAwO2lmKHc+PUspcmV0dXJuLTE7aWYobz49bSlyZXR1cm4gMTtpZih0aGlzPT09cilyZXR1cm4gMDtmb3IodmFyICQ9KEs+''@;'; put 'put ''Pj49MCktKHc+Pj49MCksUnQ9KG0+Pj49MCktKG8+Pj49MCksbnQ9TWF0aC5taW4oJCxSdCksSD10aGlzLnNsaWNlKHcsSyksUT1yLnNsaWNlKG8sbSksaXQ9MDtpdDxudDsrK2l0KWlmKEhbaXRdIT09UVtpdF0peyQ9SFtpdF0sUnQ9UVtpdF07YnJlYWt9cmV0dXJuICQ8UnQ/LTE6UnQ8JD8x''@;'; put 'put ''OjB9LGkucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihyLG8sbSl9LGkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24ocixvLG0pe3JldHVybiBiKHRoaXMscixvLG0sITApfSxpLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlv''@;'; put 'put ''bihyLG8sbSl7cmV0dXJuIGIodGhpcyxyLG8sbSwhMSl9LGkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHIsbyxtLHcpe2lmKHZvaWQgMD09PW8pdz0idXRmOCIsbT10aGlzLmxlbmd0aCxvPTA7ZWxzZSBpZih2b2lkIDA9PT1tJiYic3RyaW5nIj09dHlwZW9mIG8pdz1vLG09dGhpcy5sZW5n''@;'; put 'put ''dGgsbz0wO2Vsc2V7aWYoIWlzRmluaXRlKG8pKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtvPj4+PTAsaXNGaW5pdGUobSk/KG0+Pj49MCx2b2lkIDA9PT13JiYodz0idXRm''@;'; put 'put ''OCIpKToodz1tLG09dm9pZCAwKX12YXIgSz10aGlzLmxlbmd0aC1vO2lmKCh2b2lkIDA9PT1tfHxtPkspJiYobT1LKSxyLmxlbmd0aD4wJiYobTwwfHxvPDApfHxvPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5k''@;'; put 'put ''cyIpO3d8fCh3PSJ1dGY4Iik7Zm9yKHZhciAkPSExOzspc3dpdGNoKHcpe2Nhc2UiaGV4IjpyZXR1cm4gVSh0aGlzLHIsbyxtKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBaKHRoaXMscixvLG0pO2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGV0''@;'; put 'put ''KHRoaXMscixvLG0pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gdHQodGhpcyxyLG8sbSk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBwdCh0aGlzLHIsbyxtKTtkZWZhdWx0OmlmKCQpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBl''@;'; put 'put ''bmNvZGluZzogIit3KTt3PSgiIit3KS50b0xvd2VyQ2FzZSgpLCQ9ITB9fSxpLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBWPTQwOTY7ZnVuY3Rp''@;'; put 'put ''b24gWChoLHIsbyl7dmFyIG09IiI7bz1NYXRoLm1pbihoLmxlbmd0aCxvKTtmb3IodmFyIHc9cjt3PG87Kyt3KW0rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3Jmhbd10pO3JldHVybiBtfWZ1bmN0aW9uIHJ0KGgscixvKXt2YXIgbT0iIjtvPU1hdGgubWluKGgubGVuZ3RoLG8pO2Zvcih2YXIg''@;'; put 'put ''dz1yO3c8bzsrK3cpbSs9U3RyaW5nLmZyb21DaGFyQ29kZShoW3ddKTtyZXR1cm4gbX1mdW5jdGlvbiBNdChoLHIsbyl7dmFyIG09aC5sZW5ndGg7KCFyfHxyPDApJiYocj0wKSwoIW98fG88MHx8bz5tKSYmKG89bSk7Zm9yKHZhciB3PSIiLEs9cjtLPG87KytLKXcrPUVuW2hbS11dO3JldHVy''@;'; put 'put ''biB3fWZ1bmN0aW9uIGd0KGgscixvKXtmb3IodmFyIG09aC5zbGljZShyLG8pLHc9IiIsSz0wO0s8bS5sZW5ndGgtMTtLKz0yKXcrPVN0cmluZy5mcm9tQ2hhckNvZGUobVtLXSsyNTYqbVtLKzFdKTtyZXR1cm4gd31mdW5jdGlvbiBqdChoLHIsbyl7aWYoaCUxIT0wfHxoPDApdGhyb3cgbmV3''@;'; put 'put ''IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGgrcj5vKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gTnQoaCxyLG8sbSx3LEspe2lmKCFpLmlzQnVmZmVyKGgpKXRocm93IG5ldyBUeXBlRXJy''@;'; put 'put ''b3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihyPnd8fHI8Syl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYobyttPmgubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBv''@;'; put 'put ''dXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBfdChoLHIsbyxtLHcsSyl7aWYobyttPmgubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihvPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHJuKGgscixv''@;'; put 'put ''LG0sdyl7cmV0dXJuIHI9K3Isbz4+Pj0wLHd8fF90KGgsMCxvLDQpLGUud3JpdGUoaCxyLG8sbSwyMyw0KSxvKzR9ZnVuY3Rpb24gTHQoaCxyLG8sbSx3KXtyZXR1cm4gcj0rcixvPj4+PTAsd3x8X3QoaCwwLG8sOCksZS53cml0ZShoLHIsbyxtLDUyLDgpLG8rOH1pLnByb3RvdHlwZS5zbGlj''@;'; put 'put ''ZT1mdW5jdGlvbihyLG8pe3ZhciBtPXRoaXMubGVuZ3RoOyhyPX5+cik8MD8ocis9bSk8MCYmKHI9MCk6cj5tJiYocj1tKSwobz12b2lkIDA9PT1vP206fn5vKTwwPyhvKz1tKTwwJiYobz0wKTpvPm0mJihvPW0pLG88ciYmKG89cik7dmFyIHc9dGhpcy5zdWJhcnJheShyLG8pO3JldHVybiBP''@;'; put 'put ''YmplY3Quc2V0UHJvdG90eXBlT2YodyxpLnByb3RvdHlwZSksd30saS5wcm90b3R5cGUucmVhZFVpbnRMRT1pLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKHIsbyxtKXtyPj4+PTAsbz4+Pj0wLG18fGp0KHIsbyx0aGlzLmxlbmd0aCk7Zm9yKHZhciB3PXRoaXNbcl0sSz0xLCQ9MDsr''@;'; put 'put ''KyQ8byYmKEsqPTI1Nik7KXcrPXRoaXNbciskXSpLO3JldHVybiB3fSxpLnByb3RvdHlwZS5yZWFkVWludEJFPWkucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24ocixvLG0pe3I+Pj49MCxvPj4+PTAsbXx8anQocixvLHRoaXMubGVuZ3RoKTtmb3IodmFyIHc9dGhpc1tyKy0tb10sSz0x''@;'; put 'put ''O28+MCYmKEsqPTI1Nik7KXcrPXRoaXNbcistLW9dKks7cmV0dXJuIHd9LGkucHJvdG90eXBlLnJlYWRVaW50OD1pLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24ocixvKXtyZXR1cm4gcj4+Pj0wLG98fGp0KHIsMSx0aGlzLmxlbmd0aCksdGhpc1tyXX0saS5wcm90b3R5cGUucmVhZFVp''@;'; put 'put ''bnQxNkxFPWkucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihyLG8pe3JldHVybiByPj4+PTAsb3x8anQociwyLHRoaXMubGVuZ3RoKSx0aGlzW3JdfHRoaXNbcisxXTw8OH0saS5wcm90b3R5cGUucmVhZFVpbnQxNkJFPWkucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihy''@;'; put 'put ''LG8pe3JldHVybiByPj4+PTAsb3x8anQociwyLHRoaXMubGVuZ3RoKSx0aGlzW3JdPDw4fHRoaXNbcisxXX0saS5wcm90b3R5cGUucmVhZFVpbnQzMkxFPWkucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihyLG8pe3JldHVybiByPj4+PTAsb3x8anQociw0LHRoaXMubGVuZ3RoKSwo''@;'; put 'put ''dGhpc1tyXXx0aGlzW3IrMV08PDh8dGhpc1tyKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tyKzNdfSxpLnByb3RvdHlwZS5yZWFkVWludDMyQkU9aS5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIHI+Pj49MCxvfHxqdChyLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2''@;'; put 'put ''KnRoaXNbcl0rKHRoaXNbcisxXTw8MTZ8dGhpc1tyKzJdPDw4fHRoaXNbciszXSl9LGkucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihyLG8sbSl7cj4+Pj0wLG8+Pj49MCxtfHxqdChyLG8sdGhpcy5sZW5ndGgpO2Zvcih2YXIgdz10aGlzW3JdLEs9MSwkPTA7KyskPG8mJihLKj0yNTYp''@;'; put 'put ''Oyl3Kz10aGlzW3IrJF0qSztyZXR1cm4gdz49KEsqPTEyOCkmJih3LT1NYXRoLnBvdygyLDgqbykpLHd9LGkucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihyLG8sbSl7cj4+Pj0wLG8+Pj49MCxtfHxqdChyLG8sdGhpcy5sZW5ndGgpO2Zvcih2YXIgdz1vLEs9MSwkPXRoaXNbcistLXdd''@;'; put 'put ''O3c+MCYmKEsqPTI1Nik7KSQrPXRoaXNbcistLXddKks7cmV0dXJuICQ+PShLKj0xMjgpJiYoJC09TWF0aC5wb3coMiw4Km8pKSwkfSxpLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihyLG8pe3JldHVybiByPj4+PTAsb3x8anQociwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tyXT8tMSoo''@;'; put 'put ''MjU1LXRoaXNbcl0rMSk6dGhpc1tyXX0saS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24ocixvKXtyPj4+PTAsb3x8anQociwyLHRoaXMubGVuZ3RoKTt2YXIgbT10aGlzW3JdfHRoaXNbcisxXTw8ODtyZXR1cm4gMzI3NjgmbT80Mjk0OTAxNzYwfG06bX0saS5wcm90b3R5cGUucmVh''@;'; put 'put ''ZEludDE2QkU9ZnVuY3Rpb24ocixvKXtyPj4+PTAsb3x8anQociwyLHRoaXMubGVuZ3RoKTt2YXIgbT10aGlzW3IrMV18dGhpc1tyXTw8ODtyZXR1cm4gMzI3NjgmbT80Mjk0OTAxNzYwfG06bX0saS5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24ocixvKXtyZXR1cm4gcj4+Pj0wLG98''@;'; put 'put ''fGp0KHIsNCx0aGlzLmxlbmd0aCksdGhpc1tyXXx0aGlzW3IrMV08PDh8dGhpc1tyKzJdPDwxNnx0aGlzW3IrM108PDI0fSxpLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihyLG8pe3JldHVybiByPj4+PTAsb3x8anQociw0LHRoaXMubGVuZ3RoKSx0aGlzW3JdPDwyNHx0aGlzW3Ir''@;'; put 'put ''MV08PDE2fHRoaXNbcisyXTw8OHx0aGlzW3IrM119LGkucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIHI+Pj49MCxvfHxqdChyLDQsdGhpcy5sZW5ndGgpLGUucmVhZCh0aGlzLHIsITAsMjMsNCl9LGkucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHIs''@;'; put 'put ''byl7cmV0dXJuIHI+Pj49MCxvfHxqdChyLDQsdGhpcy5sZW5ndGgpLGUucmVhZCh0aGlzLHIsITEsMjMsNCl9LGkucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihyLG8pe3JldHVybiByPj4+PTAsb3x8anQociw4LHRoaXMubGVuZ3RoKSxlLnJlYWQodGhpcyxyLCEwLDUyLDgpfSxp''@;'; put 'put ''LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24ocixvKXtyZXR1cm4gcj4+Pj0wLG98fGp0KHIsOCx0aGlzLmxlbmd0aCksZS5yZWFkKHRoaXMsciwhMSw1Miw4KX0saS5wcm90b3R5cGUud3JpdGVVaW50TEU9aS5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24ocixvLG0sdyl7''@;'; put 'put ''cj0rcixvPj4+PTAsbT4+Pj0wLHd8fE50KHRoaXMscixvLG0sTWF0aC5wb3coMiw4Km0pLTEsMCk7dmFyICQ9MSxSdD0wO2Zvcih0aGlzW29dPTI1NSZyOysrUnQ8bSYmKCQqPTI1Nik7KXRoaXNbbytSdF09ci8kJjI1NTtyZXR1cm4gbyttfSxpLnByb3RvdHlwZS53cml0ZVVpbnRCRT1pLnBy''@;'; put 'put ''b3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihyLG8sbSx3KXtyPStyLG8+Pj49MCxtPj4+PTAsd3x8TnQodGhpcyxyLG8sbSxNYXRoLnBvdygyLDgqbSktMSwwKTt2YXIgJD1tLTEsUnQ9MTtmb3IodGhpc1tvKyRdPTI1NSZyOy0tJD49MCYmKFJ0Kj0yNTYpOyl0aGlzW28rJF09ci9SdCYy''@;'; put 'put ''NTU7cmV0dXJuIG8rbX0saS5wcm90b3R5cGUud3JpdGVVaW50OD1pLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sMSwyNTUsMCksdGhpc1tvXT0yNTUmcixvKzF9LGkucHJvdG90eXBlLndyaXRlVWludDE2TEU9''@;'; put 'put ''aS5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihyLG8sbSl7cmV0dXJuIHI9K3Isbz4+Pj0wLG18fE50KHRoaXMscixvLDIsNjU1MzUsMCksdGhpc1tvXT0yNTUmcix0aGlzW28rMV09cj4+PjgsbysyfSxpLnByb3RvdHlwZS53cml0ZVVpbnQxNkJFPWkucHJvdG90eXBlLndyaXRl''@;'; put 'put ''VUludDE2QkU9ZnVuY3Rpb24ocixvLG0pe3JldHVybiByPStyLG8+Pj49MCxtfHxOdCh0aGlzLHIsbywyLDY1NTM1LDApLHRoaXNbb109cj4+PjgsdGhpc1tvKzFdPTI1NSZyLG8rMn0saS5wcm90b3R5cGUud3JpdGVVaW50MzJMRT1pLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9u''@;'; put 'put ''KHIsbyxtKXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sNCw0Mjk0OTY3Mjk1LDApLHRoaXNbbyszXT1yPj4+MjQsdGhpc1tvKzJdPXI+Pj4xNix0aGlzW28rMV09cj4+PjgsdGhpc1tvXT0yNTUmcixvKzR9LGkucHJvdG90eXBlLndyaXRlVWludDMyQkU9aS5wcm90b3R5cGUu''@;'; put 'put ''d3JpdGVVSW50MzJCRT1mdW5jdGlvbihyLG8sbSl7cmV0dXJuIHI9K3Isbz4+Pj0wLG18fE50KHRoaXMscixvLDQsNDI5NDk2NzI5NSwwKSx0aGlzW29dPXI+Pj4yNCx0aGlzW28rMV09cj4+PjE2LHRoaXNbbysyXT1yPj4+OCx0aGlzW28rM109MjU1JnIsbys0fSxpLnByb3RvdHlwZS53cml0''@;'; put 'put ''ZUludExFPWZ1bmN0aW9uKHIsbyxtLHcpe2lmKHI9K3Isbz4+Pj0wLCF3KXt2YXIgSz1NYXRoLnBvdygyLDgqbS0xKTtOdCh0aGlzLHIsbyxtLEstMSwtSyl9dmFyICQ9MCxSdD0xLG50PTA7Zm9yKHRoaXNbb109MjU1JnI7KyskPG0mJihSdCo9MjU2KTspcjwwJiYwPT09bnQmJjAhPT10aGlz''@;'; put 'put ''W28rJC0xXSYmKG50PTEpLHRoaXNbbyskXT0oci9SdHwwKS1udCYyNTU7cmV0dXJuIG8rbX0saS5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihyLG8sbSx3KXtpZihyPStyLG8+Pj49MCwhdyl7dmFyIEs9TWF0aC5wb3coMiw4Km0tMSk7TnQodGhpcyxyLG8sbSxLLTEsLUspfXZhciAk''@;'; put 'put ''PW0tMSxSdD0xLG50PTA7Zm9yKHRoaXNbbyskXT0yNTUmcjstLSQ+PTAmJihSdCo9MjU2KTspcjwwJiYwPT09bnQmJjAhPT10aGlzW28rJCsxXSYmKG50PTEpLHRoaXNbbyskXT0oci9SdHwwKS1udCYyNTU7cmV0dXJuIG8rbX0saS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHIsbyxt''@;'; put 'put ''KXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sMSwxMjcsLTEyOCkscjwwJiYocj0yNTUrcisxKSx0aGlzW29dPTI1NSZyLG8rMX0saS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sMiwzMjc2''@;'; put 'put ''NywtMzI3NjgpLHRoaXNbb109MjU1JnIsdGhpc1tvKzFdPXI+Pj44LG8rMn0saS5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sMiwzMjc2NywtMzI3NjgpLHRoaXNbb109cj4+PjgsdGhpc1tvKzFdPTI1NSZy''@;'; put 'put ''LG8rMn0saS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4gcj0rcixvPj4+PTAsbXx8TnQodGhpcyxyLG8sNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW29dPTI1NSZyLHRoaXNbbysxXT1yPj4+OCx0aGlzW28rMl09cj4+PjE2LHRoaXNbbyszXT1y''@;'; put 'put ''Pj4+MjQsbys0fSxpLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24ocixvLG0pe3JldHVybiByPStyLG8+Pj49MCxtfHxOdCh0aGlzLHIsbyw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHI8MCYmKHI9NDI5NDk2NzI5NStyKzEpLHRoaXNbb109cj4+PjI0LHRoaXNbbysxXT1yPj4+''@;'; put 'put ''MTYsdGhpc1tvKzJdPXI+Pj44LHRoaXNbbyszXT0yNTUmcixvKzR9LGkucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihyLG8sbSl7cmV0dXJuIHJuKHRoaXMscixvLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24ocixvLG0pe3JldHVybiBybih0aGlzLHIs''@;'; put 'put ''bywhMSxtKX0saS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihyLG8sbSl7cmV0dXJuIEx0KHRoaXMscixvLCEwLG0pfSxpLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHIsbyxtKXtyZXR1cm4gTHQodGhpcyxyLG8sITEsbSl9LGkucHJvdG90eXBlLmNvcHk9ZnVu''@;'; put 'put ''Y3Rpb24ocixvLG0sdyl7aWYoIWkuaXNCdWZmZXIocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyIik7aWYobXx8KG09MCksIXcmJjAhPT13JiYodz10aGlzLmxlbmd0aCksbz49ci5sZW5ndGgmJihvPXIubGVuZ3RoKSxvfHwobz0wKSx3PjAmJnc8''@;'; put 'put ''bSYmKHc9bSksdz09PW18fDA9PT1yLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKG88MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG08MHx8bT49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91''@;'; put 'put ''dCBvZiByYW5nZSIpO2lmKHc8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTt3PnRoaXMubGVuZ3RoJiYodz10aGlzLmxlbmd0aCksci5sZW5ndGgtbzx3LW0mJih3PXIubGVuZ3RoLW8rbSk7dmFyIEs9dy1tO3JldHVybiB0aGlzPT09ciYmImZ1bmN0''@;'; put 'put ''aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4/dGhpcy5jb3B5V2l0aGluKG8sbSx3KTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChyLHRoaXMuc3ViYXJyYXkobSx3KSxvKSxLfSxpLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKHIsbyxtLHcpe2lmKCJz''@;'; put 'put ''dHJpbmciPT10eXBlb2Ygcil7aWYoInN0cmluZyI9PXR5cGVvZiBvPyh3PW8sbz0wLG09dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbSYmKHc9bSxtPXRoaXMubGVuZ3RoKSx2b2lkIDAhPT13JiYic3RyaW5nIiE9dHlwZW9mIHcpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2Rpbmcg''@;'; put 'put ''bXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgdyYmIWkuaXNFbmNvZGluZyh3KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3cpO2lmKDE9PT1yLmxlbmd0aCl7dmFyIEs9ci5jaGFyQ29kZUF0KDApOygidXRmOCI9PT13JiZLPDEyOHx8Imxh''@;'; put 'put ''dGluMSI9PT13KSYmKHI9Syl9fWVsc2UibnVtYmVyIj09dHlwZW9mIHI/ciY9MjU1OiJib29sZWFuIj09dHlwZW9mIHImJihyPU51bWJlcihyKSk7aWYobzwwfHx0aGlzLmxlbmd0aDxvfHx0aGlzLmxlbmd0aDxtKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtp''@;'; put 'put ''ZihtPD1vKXJldHVybiB0aGlzO3ZhciAkO2lmKG8+Pj49MCxtPXZvaWQgMD09PW0/dGhpcy5sZW5ndGg6bT4+PjAscnx8KHI9MCksIm51bWJlciI9PXR5cGVvZiByKWZvcigkPW87JDxtOysrJCl0aGlzWyRdPXI7ZWxzZXt2YXIgUnQ9aS5pc0J1ZmZlcihyKT9yOmkuZnJvbShyLHcpLG50PVJ0''@;'; put 'put ''Lmxlbmd0aDtpZigwPT09bnQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlICInK3IrJyIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgInZhbHVlIicpO2ZvcigkPTA7JDxtLW87KyskKXRoaXNbJCtvXT1SdFskJW50XX1yZXR1cm4gdGhpc307dmFyIHVuPS9bXisvMC05QS1aYS16LV9d''@;'; put 'put ''L2c7ZnVuY3Rpb24gY24oaCxyKXtyPXJ8fDEvMDtmb3IodmFyIG8sbT1oLmxlbmd0aCx3PW51bGwsSz1bXSwkPTA7JDxtOysrJCl7aWYoKG89aC5jaGFyQ29kZUF0KCQpKT41NTI5NSYmbzw1NzM0NCl7aWYoIXcpe2lmKG8+NTYzMTkpeyhyLT0zKT4tMSYmSy5wdXNoKDIzOSwxOTEsMTg5KTtj''@;'; put 'put ''b250aW51ZX1pZigkKzE9PT1tKXsoci09Myk+LTEmJksucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9dz1vO2NvbnRpbnVlfWlmKG88NTYzMjApeyhyLT0zKT4tMSYmSy5wdXNoKDIzOSwxOTEsMTg5KSx3PW87Y29udGludWV9bz02NTUzNisody01NTI5Njw8MTB8by01NjMyMCl9ZWxzZSB3''@;'; put 'put ''JiYoci09Myk+LTEmJksucHVzaCgyMzksMTkxLDE4OSk7aWYodz1udWxsLG88MTI4KXtpZigoci09MSk8MClicmVhaztLLnB1c2gobyl9ZWxzZSBpZihvPDIwNDgpe2lmKChyLT0yKTwwKWJyZWFrO0sucHVzaChvPj42fDE5Miw2MyZvfDEyOCl9ZWxzZSBpZihvPDY1NTM2KXtpZigoci09Myk8''@;'; put 'put ''MClicmVhaztLLnB1c2gobz4+MTJ8MjI0LG8+PjYmNjN8MTI4LDYzJm98MTI4KX1lbHNle2lmKCEobzwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKChyLT00KTwwKWJyZWFrO0sucHVzaChvPj4xOHwyNDAsbz4+MTImNjN8MTI4LG8+PjYmNjN8MTI4''@;'; put 'put ''LDYzJm98MTI4KX19cmV0dXJuIEt9ZnVuY3Rpb24gaG4oaCl7cmV0dXJuIG4udG9CeXRlQXJyYXkoZnVuY3Rpb24gUXQoaCl7aWYoKGg9KGg9aC5zcGxpdCgiPSIpWzBdKS50cmltKCkucmVwbGFjZSh1biwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7aC5sZW5ndGglNCE9MDspaCs9Ij0i''@;'; put 'put ''O3JldHVybiBofShoKSl9ZnVuY3Rpb24gYW4oaCxyLG8sbSl7Zm9yKHZhciB3PTA7dzxtJiYhKHcrbz49ci5sZW5ndGh8fHc+PWgubGVuZ3RoKTsrK3cpclt3K29dPWhbd107cmV0dXJuIHd9ZnVuY3Rpb24gdG4oaCxyKXtyZXR1cm4gaCBpbnN0YW5jZW9mIHJ8fG51bGwhPWgmJm51bGwhPWgu''@;'; put 'put ''Y29uc3RydWN0b3ImJm51bGwhPWguY29uc3RydWN0b3IubmFtZSYmaC5jb25zdHJ1Y3Rvci5uYW1lPT09ci5uYW1lfWZ1bmN0aW9uIHluKGgpe3JldHVybiBoIT1ofXZhciBFbj1mdW5jdGlvbigpe2Zvcih2YXIgaD0iMDEyMzQ1Njc4OWFiY2RlZiIscj1uZXcgQXJyYXkoMjU2KSxvPTA7bzwx''@;'; put 'put ''NjsrK28pZm9yKHZhciBtPTE2Km8sdz0wO3c8MTY7Kyt3KXJbbSt3XT1oW29dK2hbd107cmV0dXJuIHJ9KCl9LDIyMDIwOihjLGwpPT57bC5yZWFkPWZ1bmN0aW9uKHQsbixlLHMsYSl7dmFyIHUsZixpPTgqYS1zLTEsdj0oMTw8aSktMSxwPXY+PjEsZD0tNyx5PWU/YS0xOjAsRT1lPy0xOjEs''@;'; put 'put ''Zz10W24reV07Zm9yKHkrPUUsdT1nJigxPDwtZCktMSxnPj49LWQsZCs9aTtkPjA7dT0yNTYqdSt0W24reV0seSs9RSxkLT04KTtmb3IoZj11JigxPDwtZCktMSx1Pj49LWQsZCs9cztkPjA7Zj0yNTYqZit0W24reV0seSs9RSxkLT04KTtpZigwPT09dSl1PTEtcDtlbHNle2lmKHU9PT12KXJl''@;'; put 'put ''dHVybiBmP05hTjoxLzAqKGc/LTE6MSk7Zis9TWF0aC5wb3coMixzKSx1LT1wfXJldHVybihnPy0xOjEpKmYqTWF0aC5wb3coMix1LXMpfSxsLndyaXRlPWZ1bmN0aW9uKHQsbixlLHMsYSx1KXt2YXIgZixpLHYscD04KnUtYS0xLGQ9KDE8PHApLTEseT1kPj4xLEU9MjM9PT1hP01hdGgucG93''@;'; put 'put ''KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxnPXM/MDp1LTEsRD1zPzE6LTEsRj1uPDB8fDA9PT1uJiYxL248MD8xOjA7Zm9yKG49TWF0aC5hYnMobiksaXNOYU4obil8fG49PT0xLzA/KGk9aXNOYU4obik/MTowLGY9ZCk6KGY9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMiksbioo''@;'; put 'put ''dj1NYXRoLnBvdygyLC1mKSk8MSYmKGYtLSx2Kj0yKSwobis9Zit5Pj0xP0UvdjpFKk1hdGgucG93KDIsMS15KSkqdj49MiYmKGYrKyx2Lz0yKSxmK3k+PWQ/KGk9MCxmPWQpOmYreT49MT8oaT0obip2LTEpKk1hdGgucG93KDIsYSksZis9eSk6KGk9bipNYXRoLnBvdygyLHktMSkqTWF0aC5w''@;'; put 'put ''b3coMixhKSxmPTApKTthPj04O3RbZStnXT0yNTUmaSxnKz1ELGkvPTI1NixhLT04KTtmb3IoZj1mPDxhfGkscCs9YTtwPjA7dFtlK2ddPTI1NSZmLGcrPUQsZi89MjU2LHAtPTgpO3RbZStnLURdfD0xMjgqRn19LDk2OTM1OigpPT57InVzZSBzdHJpY3QiO2NvbnN0IGM9Z2xvYmFsVGhpcztm''@;'; put 'put ''dW5jdGlvbiBsKE8pe3JldHVybihjLl9fWm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIikrT31jb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscz1PYmplY3QuZGVmaW5lUHJvcGVydHksYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsdT1PYmplY3QuY3Jl''@;'; put 'put ''YXRlLGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLGk9ImFkZEV2ZW50TGlzdGVuZXIiLHY9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHA9bChpKSxkPWwodikseT0idHJ1ZSIsRT0iZmFsc2UiLGc9bCgiIik7ZnVuY3Rpb24gRChPLFIpe3JldHVybiBab25lLmN1cnJlbnQud3JhcChPLFIpfWZ1bmN0''@;'; put 'put ''aW9uIEYoTyxSLEIsUCxOKXtyZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKE8sUixCLFAsTil9Y29uc3QgeD1sLEE9dHlwZW9mIHdpbmRvdzwidSIsQz1BP3dpbmRvdzp2b2lkIDAsST1BJiZDfHxnbG9iYWxUaGlzLE09InJlbW92ZUF0dHJpYnV0ZSI7ZnVuY3Rpb24gVChP''@;'; put 'put ''LFIpe2ZvcihsZXQgQj1PLmxlbmd0aC0xO0I+PTA7Qi0tKSJmdW5jdGlvbiI9PXR5cGVvZiBPW0JdJiYoT1tCXT1EKE9bQl0sUisiXyIrQikpO3JldHVybiBPfWZ1bmN0aW9uIEwoTyl7cmV0dXJuIU98fCExIT09Ty53cml0YWJsZSYmISgiZnVuY3Rpb24iPT10eXBlb2YgTy5nZXQmJnR5cGVv''@;'; put 'put ''ZiBPLnNldD4idSIpfWNvbnN0IFU9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLFo9ISgibnciaW4gSSkmJnR5cGVvZiBJLnByb2Nlc3M8InUiJiYiW29iamVjdCBwcm9jZXNzXSI9PT1JLnByb2Nlc3MudG9TdHJpbmcoKSxl''@;'; put 'put ''dD0hWiYmIVUmJiEoIUF8fCFDLkhUTUxFbGVtZW50KSx0dD10eXBlb2YgSS5wcm9jZXNzPCJ1IiYmIltvYmplY3QgcHJvY2Vzc10iPT09SS5wcm9jZXNzLnRvU3RyaW5nKCkmJiFVJiYhKCFBfHwhQy5IVE1MRWxlbWVudCkscHQ9e30sZHQ9ZnVuY3Rpb24oTyl7aWYoIShPPU98fEkuZXZlbnQp''@;'; put 'put ''KXJldHVybjtsZXQgUj1wdFtPLnR5cGVdO1J8fChSPXB0W08udHlwZV09eCgiT05fUFJPUEVSVFkiK08udHlwZSkpO2NvbnN0IEI9dGhpc3x8Ty50YXJnZXR8fEksUD1CW1JdO2xldCBOO3JldHVybiBldCYmQj09PUMmJiJlcnJvciI9PT1PLnR5cGU/KE49UCYmUC5jYWxsKHRoaXMsTy5tZXNz''@;'; put 'put ''YWdlLE8uZmlsZW5hbWUsTy5saW5lbm8sTy5jb2xubyxPLmVycm9yKSwhMD09PU4mJk8ucHJldmVudERlZmF1bHQoKSk6KE49UCYmUC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbnVsbCE9TiYmIU4mJk8ucHJldmVudERlZmF1bHQoKSksTn07ZnVuY3Rpb24gXyhPLFIsQil7bGV0IFA9ZShPLFIp''@;'; put 'put ''O2lmKCFQJiZCJiZlKEIsUikmJihQPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLCFQfHwhUC5jb25maWd1cmFibGUpcmV0dXJuO2NvbnN0IE49eCgib24iK1IrInBhdGNoZWQiKTtpZihPLmhhc093blByb3BlcnR5KE4pJiZPW05dKXJldHVybjtkZWxldGUgUC53cml0YWJsZSxk''@;'; put 'put ''ZWxldGUgUC52YWx1ZTtjb25zdCBKPVAuZ2V0LG90PVAuc2V0LHN0PVIuc2xpY2UoMik7bGV0IGx0PXB0W3N0XTtsdHx8KGx0PXB0W3N0XT14KCJPTl9QUk9QRVJUWSIrc3QpKSxQLnNldD1mdW5jdGlvbihTdCl7bGV0IHV0PXRoaXM7IXV0JiZPPT09SSYmKHV0PUkpLHV0JiYoImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIHV0W2x0XSYmdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdCxkdCksb3QmJm90LmNhbGwodXQsbnVsbCksdXRbbHRdPVN0LCJmdW5jdGlvbiI9PXR5cGVvZiBTdCYmdXQuYWRkRXZlbnRMaXN0ZW5lcihzdCxkdCwhMSkpfSxQLmdldD1mdW5jdGlvbigpe2xldCBTdD10aGlzO2lm''@;'; put 'put ''KCFTdCYmTz09PUkmJihTdD1JKSwhU3QpcmV0dXJuIG51bGw7Y29uc3QgdXQ9U3RbbHRdO2lmKHV0KXJldHVybiB1dDtpZihKKXtsZXQgYnQ9Si5jYWxsKHRoaXMpO2lmKGJ0KXJldHVybiBQLnNldC5jYWxsKHRoaXMsYnQpLCJmdW5jdGlvbiI9PXR5cGVvZiBTdFtNXSYmU3QucmVtb3ZlQXR0''@;'; put 'put ''cmlidXRlKFIpLGJ0fXJldHVybiBudWxsfSxzKE8sUixQKSxPW05dPSEwfWZ1bmN0aW9uIFYoTyxSLEIpe2lmKFIpZm9yKGxldCBQPTA7UDxSLmxlbmd0aDtQKyspXyhPLCJvbiIrUltQXSxCKTtlbHNle2NvbnN0IFA9W107Zm9yKGNvbnN0IE4gaW4gTykib24iPT1OLnNsaWNlKDAsMikmJlAu''@;'; put 'put ''cHVzaChOKTtmb3IobGV0IE49MDtOPFAubGVuZ3RoO04rKylfKE8sUFtOXSxCKX19Y29uc3QgWT14KCJvcmlnaW5hbEluc3RhbmNlIik7ZnVuY3Rpb24gWChPKXtjb25zdCBSPUlbT107aWYoIVIpcmV0dXJuO0lbeChPKV09UixJW09dPWZ1bmN0aW9uKCl7Y29uc3QgTj1UKGFyZ3VtZW50cyxP''@;'; put 'put ''KTtzd2l0Y2goTi5sZW5ndGgpe2Nhc2UgMDp0aGlzW1ldPW5ldyBSO2JyZWFrO2Nhc2UgMTp0aGlzW1ldPW5ldyBSKE5bMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW1ldPW5ldyBSKE5bMF0sTlsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbWV09bmV3IFIoTlswXSxOWzFdLE5bMl0pO2JyZWFrO2Nhc2Ug''@;'; put 'put ''NDp0aGlzW1ldPW5ldyBSKE5bMF0sTlsxXSxOWzJdLE5bM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LGd0KElbT10sUik7Y29uc3QgQj1uZXcgUihmdW5jdGlvbigpe30pO2xldCBQO2ZvcihQIGluIEIpIlhNTEh0dHBSZXF1ZXN0Ij09''@;'; put 'put ''PU8mJiJyZXNwb25zZUJsb2IiPT09UHx8ZnVuY3Rpb24oTil7ImZ1bmN0aW9uIj09dHlwZW9mIEJbTl0/SVtPXS5wcm90b3R5cGVbTl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tZXVtOXS5hcHBseSh0aGlzW1ldLGFyZ3VtZW50cyl9OnMoSVtPXS5wcm90b3R5cGUsTix7c2V0OmZ1bmN0aW9u''@;'; put 'put ''KEopeyJmdW5jdGlvbiI9PXR5cGVvZiBKPyh0aGlzW1ldW05dPUQoSixPKyIuIitOKSxndCh0aGlzW1ldW05dLEopKTp0aGlzW1ldW05dPUp9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW1ldW05dfX0pfShQKTtmb3IoUCBpbiBSKSJwcm90b3R5cGUiIT09UCYmUi5oYXNPd25Qcm9wZXJ0''@;'; put 'put ''eShQKSYmKElbT11bUF09UltQXSl9ZnVuY3Rpb24gcnQoTyxSLEIpe2xldCBQPU87Zm9yKDtQJiYhUC5oYXNPd25Qcm9wZXJ0eShSKTspUD1hKFApOyFQJiZPW1JdJiYoUD1PKTtjb25zdCBOPXgoUik7bGV0IEo9bnVsbDtpZihQJiYoIShKPVBbTl0pfHwhUC5oYXNPd25Qcm9wZXJ0eShOKSkm''@;'; put 'put ''JihKPVBbTl09UFtSXSxMKFAmJmUoUCxSKSkpKXtjb25zdCBzdD1CKEosTixSKTtQW1JdPWZ1bmN0aW9uKCl7cmV0dXJuIHN0KHRoaXMsYXJndW1lbnRzKX0sZ3QoUFtSXSxKKX1yZXR1cm4gSn1mdW5jdGlvbiBNdChPLFIsQil7bGV0IFA9bnVsbDtmdW5jdGlvbiBOKEope2NvbnN0IG90PUou''@;'; put 'put ''ZGF0YTtyZXR1cm4gb3QuYXJnc1tvdC5jYklkeF09ZnVuY3Rpb24oKXtKLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFAuYXBwbHkob3QudGFyZ2V0LG90LmFyZ3MpLEp9UD1ydChPLFIsSj0+ZnVuY3Rpb24ob3Qsc3Qpe2NvbnN0IGx0PUIob3Qsc3QpO3JldHVybiBsdC5jYklkeD49''@;'; put 'put ''MCYmImZ1bmN0aW9uIj09dHlwZW9mIHN0W2x0LmNiSWR4XT9GKGx0Lm5hbWUsc3RbbHQuY2JJZHhdLGx0LE4pOkouYXBwbHkob3Qsc3QpfSl9ZnVuY3Rpb24gZ3QoTyxSKXtPW3goIk9yaWdpbmFsRGVsZWdhdGUiKV09Un1sZXQganQ9ITEsTnQ9ITE7ZnVuY3Rpb24gcm4oKXtpZihqdClyZXR1''@;'; put 'put ''cm4gTnQ7anQ9ITA7dHJ5e2NvbnN0IE89Qy5uYXZpZ2F0b3IudXNlckFnZW50OygtMSE9PU8uaW5kZXhPZigiTVNJRSAiKXx8LTEhPT1PLmluZGV4T2YoIlRyaWRlbnQvIil8fC0xIT09Ty5pbmRleE9mKCJFZGdlLyIpKSYmKE50PSEwKX1jYXRjaHt9cmV0dXJuIE50fWxldCBMdD0hMTtpZih0''@;'; put 'put ''eXBlb2Ygd2luZG93PCJ1Iil0cnl7Y29uc3QgTz1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtMdD0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsTyxPKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsTyxPKX1j''@;'; put 'put ''YXRjaHtMdD0hMX1jb25zdCB1bj17dXNlRzohMH0sUXQ9e30sY249e30sZG49bmV3IFJlZ0V4cCgiXiIrZysiKFxcdyspKHRydWV8ZmFsc2UpJCIpLHBuPXgoInByb3BhZ2F0aW9uU3RvcHBlZCIpO2Z1bmN0aW9uIGhuKE8sUil7Y29uc3QgQj0oUj9SKE8pOk8pK0UsUD0oUj9SKE8pOk8pK3ks''@;'; put 'put ''Tj1nK0IsSj1nK1A7UXRbT109e30sUXRbT11bRV09TixRdFtPXVt5XT1KfWZ1bmN0aW9uIGFuKE8sUixCLFApe2NvbnN0IE49UCYmUC5hZGR8fGksSj1QJiZQLnJtfHx2LG90PVAmJlAubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLHN0PVAmJlAucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5l''@;'; put 'put ''cnMiLGx0PXgoTiksU3Q9Ii4iK04rIjoiLHV0PSJwcmVwZW5kTGlzdGVuZXIiLGJ0PSIuIit1dCsiOiIsRXQ9ZnVuY3Rpb24obXQscSxVdCl7aWYobXQuaXNSZW1vdmVkKXJldHVybjtjb25zdCBKdD1tdC5jYWxsYmFjaztsZXQgWHQ7Im9iamVjdCI9PXR5cGVvZiBKdCYmSnQuaGFuZGxlRXZl''@;'; put 'put ''bnQmJihtdC5jYWxsYmFjaz1jdD0+SnQuaGFuZGxlRXZlbnQoY3QpLG10Lm9yaWdpbmFsRGVsZWdhdGU9SnQpO3RyeXttdC5pbnZva2UobXQscSxbVXRdKX1jYXRjaChjdCl7WHQ9Y3R9Y29uc3QgSHQ9bXQub3B0aW9ucztyZXR1cm4gSHQmJiJvYmplY3QiPT10eXBlb2YgSHQmJkh0Lm9uY2Um''@;'; put 'put ''JnFbSl0uY2FsbChxLFV0LnR5cGUsbXQub3JpZ2luYWxEZWxlZ2F0ZT9tdC5vcmlnaW5hbERlbGVnYXRlOm10LmNhbGxiYWNrLEh0KSxYdH07ZnVuY3Rpb24ga3QobXQscSxVdCl7aWYoIShxPXF8fE8uZXZlbnQpKXJldHVybjtjb25zdCBKdD1tdHx8cS50YXJnZXR8fE8sWHQ9SnRbUXRbcS50''@;'; put 'put ''eXBlXVtVdD95OkVdXTtpZihYdCl7Y29uc3QgSHQ9W107aWYoMT09PVh0Lmxlbmd0aCl7Y29uc3QgY3Q9RXQoWHRbMF0sSnQscSk7Y3QmJkh0LnB1c2goY3QpfWVsc2V7Y29uc3QgY3Q9WHQuc2xpY2UoKTtmb3IobGV0IFd0PTA7V3Q8Y3QubGVuZ3RoJiYoIXF8fCEwIT09cVtwbl0pO1d0Kysp''@;'; put 'put ''e2NvbnN0IEl0PUV0KGN0W1d0XSxKdCxxKTtJdCYmSHQucHVzaChJdCl9fWlmKDE9PT1IdC5sZW5ndGgpdGhyb3cgSHRbMF07Zm9yKGxldCBjdD0wO2N0PEh0Lmxlbmd0aDtjdCsrKXtjb25zdCBXdD1IdFtjdF07Ui5uYXRpdmVTY2hlZHVsZU1pY3JvVGFzaygoKT0+e3Rocm93IFd0fSl9fX1j''@;'; put 'put ''b25zdCBHdD1mdW5jdGlvbihtdCl7cmV0dXJuIGt0KHRoaXMsbXQsITEpfSxCdD1mdW5jdGlvbihtdCl7cmV0dXJuIGt0KHRoaXMsbXQsITApfTtmdW5jdGlvbiBvbihtdCxxKXtpZighbXQpcmV0dXJuITE7bGV0IFV0PSEwO3EmJnZvaWQgMCE9PXEudXNlRyYmKFV0PXEudXNlRyk7Y29uc3Qg''@;'; put 'put ''SnQ9cSYmcS52aDtsZXQgWHQ9ITA7cSYmdm9pZCAwIT09cS5jaGtEdXAmJihYdD1xLmNoa0R1cCk7bGV0IEh0PSExO3EmJnZvaWQgMCE9PXEucnQmJihIdD1xLnJ0KTtsZXQgY3Q9bXQ7Zm9yKDtjdCYmIWN0Lmhhc093blByb3BlcnR5KE4pOyljdD1hKGN0KTtpZighY3QmJm10W05dJiYoY3Q9''@;'; put 'put ''bXQpLCFjdHx8Y3RbbHRdKXJldHVybiExO2NvbnN0IFd0PXEmJnEuZXZlbnROYW1lVG9TdHJpbmcsSXQ9e30seHQ9Y3RbbHRdPWN0W05dLHl0PWN0W3goSildPWN0W0pdLE90PWN0W3gob3QpXT1jdFtvdF0sbm49Y3RbeChzdCldPWN0W3N0XTtsZXQgWnQ7cSYmcS5wcmVwZW5kJiYoWnQ9Y3Rb''@;'; put 'put ''eChxLnByZXBlbmQpXT1jdFtxLnByZXBlbmRdKTtjb25zdCBZdD1VdD9mdW5jdGlvbihrKXtpZighSXQuaXNFeGlzdGluZylyZXR1cm4geHQuY2FsbChJdC50YXJnZXQsSXQuZXZlbnROYW1lLEl0LmNhcHR1cmU/QnQ6R3QsSXQub3B0aW9ucyl9OmZ1bmN0aW9uKGspe3JldHVybiB4dC5jYWxs''@;'; put 'put ''KEl0LnRhcmdldCxJdC5ldmVudE5hbWUsay5pbnZva2UsSXQub3B0aW9ucyl9LEN0PVV0P2Z1bmN0aW9uKGspe2lmKCFrLmlzUmVtb3ZlZCl7Y29uc3QgRz1RdFtrLmV2ZW50TmFtZV07bGV0IHZ0O0cmJih2dD1HW2suY2FwdHVyZT95OkVdKTtjb25zdCBUdD12dCYmay50YXJnZXRbdnRdO2lm''@;'; put 'put ''KFR0KWZvcihsZXQgZnQ9MDtmdDxUdC5sZW5ndGg7ZnQrKylpZihUdFtmdF09PT1rKXtUdC5zcGxpY2UoZnQsMSksay5pc1JlbW92ZWQ9ITAsay5yZW1vdmVBYm9ydExpc3RlbmVyJiYoay5yZW1vdmVBYm9ydExpc3RlbmVyKCksay5yZW1vdmVBYm9ydExpc3RlbmVyPW51bGwpLDA9PT1UdC5s''@;'; put 'put ''ZW5ndGgmJihrLmFsbFJlbW92ZWQ9ITAsay50YXJnZXRbdnRdPW51bGwpO2JyZWFrfX1pZihrLmFsbFJlbW92ZWQpcmV0dXJuIHl0LmNhbGwoay50YXJnZXQsay5ldmVudE5hbWUsay5jYXB0dXJlP0J0Okd0LGsub3B0aW9ucyl9OmZ1bmN0aW9uKGspe3JldHVybiB5dC5jYWxsKGsudGFyZ2V0''@;'; put 'put ''LGsuZXZlbnROYW1lLGsuaW52b2tlLGsub3B0aW9ucyl9LE1uPXEmJnEuZGlmZj9xLmRpZmY6ZnVuY3Rpb24oayxHKXtjb25zdCB2dD10eXBlb2YgRztyZXR1cm4iZnVuY3Rpb24iPT09dnQmJmsuY2FsbGJhY2s9PT1HfHwib2JqZWN0Ij09PXZ0JiZrLm9yaWdpbmFsRGVsZWdhdGU9PT1HfSxn''@;'; put 'put ''bj1ab25lW3goIlVOUEFUQ0hFRF9FVkVOVFMiKV0sUG49T1t4KCJQQVNTSVZFX0VWRU5UUyIpXSxXPWZ1bmN0aW9uKGssRyx2dCxUdCxmdD0hMSx3dD0hMSl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgRnQ9dGhpc3x8TztsZXQgRHQ9YXJndW1lbnRzWzBdO3EmJnEudHJhbnNmZXJFdmVudE5h''@;'; put 'put ''bWUmJihEdD1xLnRyYW5zZmVyRXZlbnROYW1lKER0KSk7bGV0IEt0PWFyZ3VtZW50c1sxXTtpZighS3QpcmV0dXJuIGsuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKFomJiJ1bmNhdWdodEV4Y2VwdGlvbiI9PT1EdClyZXR1cm4gay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bGV0ICR0PSExO2lm''@;'; put 'put ''KCJmdW5jdGlvbiIhPXR5cGVvZiBLdCl7aWYoIUt0LmhhbmRsZUV2ZW50KXJldHVybiBrLmFwcGx5KHRoaXMsYXJndW1lbnRzKTskdD0hMH1pZihKdCYmIUp0KGssS3QsRnQsYXJndW1lbnRzKSlyZXR1cm47Y29uc3Qgdm49THQmJiEhUG4mJi0xIT09UG4uaW5kZXhPZihEdCksZm49ZnVuY3Rp''@;'; put 'put ''b24geihrKXtpZigib2JqZWN0Ij09dHlwZW9mIGsmJm51bGwhPT1rKXtjb25zdCBHPXsuLi5rfTtyZXR1cm4gay5zaWduYWwmJihHLnNpZ25hbD1rLnNpZ25hbCksR31yZXR1cm4ga30oZnVuY3Rpb24gQXQoayxHKXtyZXR1cm4hTHQmJiJvYmplY3QiPT10eXBlb2YgayYmaz8hIWsuY2FwdHVy''@;'; put 'put ''ZTpMdCYmRz8iYm9vbGVhbiI9PXR5cGVvZiBrP3tjYXB0dXJlOmsscGFzc2l2ZTohMH06az8ib2JqZWN0Ij09dHlwZW9mIGsmJiExIT09ay5wYXNzaXZlP3suLi5rLHBhc3NpdmU6ITB9Oms6e3Bhc3NpdmU6ITB9Omt9KGFyZ3VtZW50c1syXSx2bikpLHhuPWZuPy5zaWduYWw7aWYoeG4/LmFi''@;'; put 'put ''b3J0ZWQpcmV0dXJuO2lmKGduKWZvcihsZXQgbG49MDtsbjxnbi5sZW5ndGg7bG4rKylpZihEdD09PWduW2xuXSlyZXR1cm4gdm4/ay5jYWxsKEZ0LER0LEt0LGZuKTprLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtjb25zdCBBbj0hIWZuJiYoImJvb2xlYW4iPT10eXBlb2YgZm58fGZuLmNhcHR1''@;'; put 'put ''cmUpLFJuPSEoIWZufHwib2JqZWN0IiE9dHlwZW9mIGZuKSYmZm4ub25jZSxDbj1ab25lLmN1cnJlbnQ7bGV0IHduPVF0W0R0XTt3bnx8KGhuKER0LFd0KSx3bj1RdFtEdF0pO2NvbnN0IEZuPXduW0FuP3k6RV07bGV0IEluLFRuPUZ0W0ZuXSxEbj0hMTtpZihUbil7aWYoRG49ITAsWHQpZm9y''@;'; put 'put ''KGxldCBsbj0wO2xuPFRuLmxlbmd0aDtsbisrKWlmKE1uKFRuW2xuXSxLdCkpcmV0dXJufWVsc2UgVG49RnRbRm5dPVtdO2NvbnN0IGJuPUZ0LmNvbnN0cnVjdG9yLm5hbWUsam49Y25bYm5dO2puJiYoSW49am5bRHRdKSxJbnx8KEluPWJuK0crKFd0P1d0KER0KTpEdCkpLEl0Lm9wdGlvbnM9''@;'; put 'put ''Zm4sUm4mJihJdC5vcHRpb25zLm9uY2U9ITEpLEl0LnRhcmdldD1GdCxJdC5jYXB0dXJlPUFuLEl0LmV2ZW50TmFtZT1EdCxJdC5pc0V4aXN0aW5nPURuO2NvbnN0IFNuPVV0P3VuOnZvaWQgMDtTbiYmKFNuLnRhc2tEYXRhPUl0KSx4biYmKEl0Lm9wdGlvbnMuc2lnbmFsPXZvaWQgMCk7Y29u''@;'; put 'put ''c3Qgc249Q24uc2NoZWR1bGVFdmVudFRhc2soSW4sS3QsU24sdnQsVHQpO2lmKHhuKXtJdC5vcHRpb25zLnNpZ25hbD14bjtjb25zdCBsbj0oKT0+c24uem9uZS5jYW5jZWxUYXNrKHNuKTtrLmNhbGwoeG4sImFib3J0Iixsbix7b25jZTohMH0pLHNuLnJlbW92ZUFib3J0TGlzdGVuZXI9KCk9''@;'; put 'put ''PnhuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0Iixsbil9cmV0dXJuIEl0LnRhcmdldD1udWxsLFNuJiYoU24udGFza0RhdGE9bnVsbCksUm4mJihJdC5vcHRpb25zLm9uY2U9ITApLCFMdCYmImJvb2xlYW4iPT10eXBlb2Ygc24ub3B0aW9uc3x8KHNuLm9wdGlvbnM9Zm4pLHNuLnRhcmdl''@;'; put 'put ''dD1GdCxzbi5jYXB0dXJlPUFuLHNuLmV2ZW50TmFtZT1EdCwkdCYmKHNuLm9yaWdpbmFsRGVsZWdhdGU9S3QpLHd0P1RuLnVuc2hpZnQoc24pOlRuLnB1c2goc24pLGZ0P0Z0OnZvaWQgMH19O3JldHVybiBjdFtOXT1XKHh0LFN0LFl0LEN0LEh0KSxadCYmKGN0W3V0XT1XKFp0LGJ0LGZ1bmN0''@;'; put 'put ''aW9uKGspe3JldHVybiBadC5jYWxsKEl0LnRhcmdldCxJdC5ldmVudE5hbWUsay5pbnZva2UsSXQub3B0aW9ucyl9LEN0LEh0LCEwKSksY3RbSl09ZnVuY3Rpb24oKXtjb25zdCBrPXRoaXN8fE87bGV0IEc9YXJndW1lbnRzWzBdO3EmJnEudHJhbnNmZXJFdmVudE5hbWUmJihHPXEudHJhbnNm''@;'; put 'put ''ZXJFdmVudE5hbWUoRykpO2NvbnN0IHZ0PWFyZ3VtZW50c1syXSxUdD0hIXZ0JiYoImJvb2xlYW4iPT10eXBlb2YgdnR8fHZ0LmNhcHR1cmUpLGZ0PWFyZ3VtZW50c1sxXTtpZighZnQpcmV0dXJuIHl0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihKdCYmIUp0KHl0LGZ0LGssYXJndW1lbnRz''@;'; put 'put ''KSlyZXR1cm47Y29uc3Qgd3Q9UXRbR107bGV0IEZ0O3d0JiYoRnQ9d3RbVHQ/eTpFXSk7Y29uc3QgRHQ9RnQmJmtbRnRdO2lmKER0KWZvcihsZXQgS3Q9MDtLdDxEdC5sZW5ndGg7S3QrKyl7Y29uc3QgJHQ9RHRbS3RdO2lmKE1uKCR0LGZ0KSlyZXR1cm4gRHQuc3BsaWNlKEt0LDEpLCR0Lmlz''@;'; put 'put ''UmVtb3ZlZD0hMCwwIT09RHQubGVuZ3RofHwoJHQuYWxsUmVtb3ZlZD0hMCxrW0Z0XT1udWxsLFR0fHwic3RyaW5nIiE9dHlwZW9mIEcpfHwoa1tnKyJPTl9QUk9QRVJUWSIrR109bnVsbCksJHQuem9uZS5jYW5jZWxUYXNrKCR0KSxIdD9rOnZvaWQgMH1yZXR1cm4geXQuYXBwbHkodGhpcyxh''@;'; put 'put ''cmd1bWVudHMpfSxjdFtvdF09ZnVuY3Rpb24oKXtjb25zdCBrPXRoaXN8fE87bGV0IEc9YXJndW1lbnRzWzBdO3EmJnEudHJhbnNmZXJFdmVudE5hbWUmJihHPXEudHJhbnNmZXJFdmVudE5hbWUoRykpO2NvbnN0IHZ0PVtdLFR0PXRuKGssV3Q/V3QoRyk6Ryk7Zm9yKGxldCBmdD0wO2Z0PFR0''@;'; put 'put ''Lmxlbmd0aDtmdCsrKXtjb25zdCB3dD1UdFtmdF07dnQucHVzaCh3dC5vcmlnaW5hbERlbGVnYXRlP3d0Lm9yaWdpbmFsRGVsZWdhdGU6d3QuY2FsbGJhY2spfXJldHVybiB2dH0sY3Rbc3RdPWZ1bmN0aW9uKCl7Y29uc3Qgaz10aGlzfHxPO2xldCBHPWFyZ3VtZW50c1swXTtpZihHKXtxJiZx''@;'; put 'put ''LnRyYW5zZmVyRXZlbnROYW1lJiYoRz1xLnRyYW5zZmVyRXZlbnROYW1lKEcpKTtjb25zdCB2dD1RdFtHXTtpZih2dCl7Y29uc3Qgd3Q9a1t2dFtFXV0sRnQ9a1t2dFt5XV07aWYod3Qpe2NvbnN0IER0PXd0LnNsaWNlKCk7Zm9yKGxldCBLdD0wO0t0PER0Lmxlbmd0aDtLdCsrKXtjb25zdCAk''@;'; put 'put ''dD1EdFtLdF07dGhpc1tKXS5jYWxsKHRoaXMsRywkdC5vcmlnaW5hbERlbGVnYXRlPyR0Lm9yaWdpbmFsRGVsZWdhdGU6JHQuY2FsbGJhY2ssJHQub3B0aW9ucyl9fWlmKEZ0KXtjb25zdCBEdD1GdC5zbGljZSgpO2ZvcihsZXQgS3Q9MDtLdDxEdC5sZW5ndGg7S3QrKyl7Y29uc3QgJHQ9RHRb''@;'; put 'put ''S3RdO3RoaXNbSl0uY2FsbCh0aGlzLEcsJHQub3JpZ2luYWxEZWxlZ2F0ZT8kdC5vcmlnaW5hbERlbGVnYXRlOiR0LmNhbGxiYWNrLCR0Lm9wdGlvbnMpfX19fWVsc2V7Y29uc3QgdnQ9T2JqZWN0LmtleXMoayk7Zm9yKGxldCBUdD0wO1R0PHZ0Lmxlbmd0aDtUdCsrKXtjb25zdCB3dD1kbi5l''@;'; put 'put ''eGVjKHZ0W1R0XSk7bGV0IEZ0PXd0JiZ3dFsxXTtGdCYmInJlbW92ZUxpc3RlbmVyIiE9PUZ0JiZ0aGlzW3N0XS5jYWxsKHRoaXMsRnQpfXRoaXNbc3RdLmNhbGwodGhpcywicmVtb3ZlTGlzdGVuZXIiKX1pZihIdClyZXR1cm4gdGhpc30sZ3QoY3RbTl0seHQpLGd0KGN0W0pdLHl0KSxubiYm''@;'; put 'put ''Z3QoY3Rbc3RdLG5uKSxPdCYmZ3QoY3Rbb3RdLE90KSwhMH1sZXQgVnQ9W107Zm9yKGxldCBtdD0wO210PEIubGVuZ3RoO210KyspVnRbbXRdPW9uKEJbbXRdLFApO3JldHVybiBWdH1mdW5jdGlvbiB0bihPLFIpe2lmKCFSKXtjb25zdCBKPVtdO2ZvcihsZXQgb3QgaW4gTyl7Y29uc3Qgc3Q9''@;'; put 'put ''ZG4uZXhlYyhvdCk7bGV0IGx0PXN0JiZzdFsxXTtpZihsdCYmKCFSfHxsdD09PVIpKXtjb25zdCBTdD1PW290XTtpZihTdClmb3IobGV0IHV0PTA7dXQ8U3QubGVuZ3RoO3V0KyspSi5wdXNoKFN0W3V0XSl9fXJldHVybiBKfWxldCBCPVF0W1JdO0J8fChobihSKSxCPVF0W1JdKTtjb25zdCBQ''@;'; put 'put ''PU9bQltFXV0sTj1PW0JbeV1dO3JldHVybiBQP04/UC5jb25jYXQoTik6UC5zbGljZSgpOk4/Ti5zbGljZSgpOltdfWZ1bmN0aW9uIHluKE8sUil7Y29uc3QgQj1PLkV2ZW50O0ImJkIucHJvdG90eXBlJiZSLnBhdGNoTWV0aG9kKEIucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRp''@;'; put 'put ''b24iLFA9PmZ1bmN0aW9uKE4sSil7Tltwbl09ITAsUCYmUC5hcHBseShOLEopfSl9Y29uc3QgaD14KCJ6b25lVGFzayIpO2Z1bmN0aW9uIHIoTyxSLEIsUCl7bGV0IE49bnVsbCxKPW51bGw7Qis9UDtjb25zdCBvdD17fTtmdW5jdGlvbiBzdChTdCl7Y29uc3QgdXQ9U3QuZGF0YTtyZXR1cm4g''@;'; put 'put ''dXQuYXJnc1swXT1mdW5jdGlvbigpe3JldHVybiBTdC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx1dC5oYW5kbGVJZD1OLmFwcGx5KE8sdXQuYXJncyksU3R9ZnVuY3Rpb24gbHQoU3Qpe3JldHVybiBKLmNhbGwoTyxTdC5kYXRhLmhhbmRsZUlkKX1OPXJ0KE8sUis9UCxTdD0+ZnVu''@;'; put 'put ''Y3Rpb24odXQsYnQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBidFswXSl7Y29uc3QgRXQ9e2lzUGVyaW9kaWM6IkludGVydmFsIj09PVAsZGVsYXk6IlRpbWVvdXQiPT09UHx8IkludGVydmFsIj09PVA/YnRbMV18fDA6dm9pZCAwLGFyZ3M6YnR9LGt0PWJ0WzBdO2J0WzBdPWZ1bmN0aW9uKCl7''@;'; put 'put ''dHJ5e3JldHVybiBrdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtFdC5pc1BlcmlvZGljfHwoIm51bWJlciI9PXR5cGVvZiBFdC5oYW5kbGVJZD9kZWxldGUgb3RbRXQuaGFuZGxlSWRdOkV0LmhhbmRsZUlkJiYoRXQuaGFuZGxlSWRbaF09bnVsbCkpfX07Y29uc3QgR3Q9RihSLGJ0''@;'; put 'put ''WzBdLEV0LHN0LGx0KTtpZighR3QpcmV0dXJuIEd0O2NvbnN0IEJ0PUd0LmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBCdD9vdFtCdF09R3Q6QnQmJihCdFtoXT1HdCksQnQmJkJ0LnJlZiYmQnQudW5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBCdC5yZWYmJiJmdW5jdGlv''@;'; put 'put ''biI9PXR5cGVvZiBCdC51bnJlZiYmKEd0LnJlZj1CdC5yZWYuYmluZChCdCksR3QudW5yZWY9QnQudW5yZWYuYmluZChCdCkpLCJudW1iZXIiPT10eXBlb2YgQnR8fEJ0P0J0Okd0fXJldHVybiBTdC5hcHBseShPLGJ0KX0pLEo9cnQoTyxCLFN0PT5mdW5jdGlvbih1dCxidCl7Y29uc3QgRXQ9''@;'; put 'put ''YnRbMF07bGV0IGt0OyJudW1iZXIiPT10eXBlb2YgRXQ/a3Q9b3RbRXRdOihrdD1FdCYmRXRbaF0sa3R8fChrdD1FdCkpLGt0JiYic3RyaW5nIj09dHlwZW9mIGt0LnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1rdC5zdGF0ZSYmKGt0LmNhbmNlbEZuJiZrdC5kYXRhLmlzUGVyaW9kaWN8fDA9PT1r''@;'; put 'put ''dC5ydW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIEV0P2RlbGV0ZSBvdFtFdF06RXQmJihFdFtoXT1udWxsKSxrdC56b25lLmNhbmNlbFRhc2soa3QpKTpTdC5hcHBseShPLGJ0KX0pfWZ1bmN0aW9uIEsoTyxSLEIpe2lmKCFCfHwwPT09Qi5sZW5ndGgpcmV0dXJuIFI7Y29uc3QgUD1CLmZp''@;'; put 'put ''bHRlcihKPT5KLnRhcmdldD09PU8pO2lmKCFQfHwwPT09UC5sZW5ndGgpcmV0dXJuIFI7Y29uc3QgTj1QWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIFIuZmlsdGVyKEo9Pi0xPT09Ti5pbmRleE9mKEopKX1mdW5jdGlvbiAkKE8sUixCLFApe08mJlYoTyxLKE8sUixCKSxQKX1mdW5jdGlv''@;'; put 'put ''biBSdChPKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTykuZmlsdGVyKFI9PlIuc3RhcnRzV2l0aCgib24iKSYmUi5sZW5ndGg+MikubWFwKFI9PlIuc3Vic3RyaW5nKDIpKX1mdW5jdGlvbiB6dChPLFIsQixQLE4pe2NvbnN0IEo9Wm9uZS5fX3N5bWJvbF9fKFApO2lmKFJb''@;'; put 'put ''Sl0pcmV0dXJuO2NvbnN0IG90PVJbSl09UltQXTtSW1BdPWZ1bmN0aW9uKHN0LGx0LFN0KXtyZXR1cm4gbHQmJmx0LnByb3RvdHlwZSYmTi5mb3JFYWNoKGZ1bmN0aW9uKHV0KXtjb25zdCBidD1gJHtCfS4ke1B9OjpgK3V0LEV0PWx0LnByb3RvdHlwZTt0cnl7aWYoRXQuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkodXQpKXtjb25zdCBrdD1PLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFdCx1dCk7a3QmJmt0LnZhbHVlPyhrdC52YWx1ZT1PLndyYXBXaXRoQ3VycmVudFpvbmUoa3QudmFsdWUsYnQpLE8uX3JlZGVmaW5lUHJvcGVydHkobHQucHJvdG90eXBlLHV0LGt0KSk6RXRbdXRdJiYo''@;'; put 'put ''RXRbdXRdPU8ud3JhcFdpdGhDdXJyZW50Wm9uZShFdFt1dF0sYnQpKX1lbHNlIEV0W3V0XSYmKEV0W3V0XT1PLndyYXBXaXRoQ3VycmVudFpvbmUoRXRbdXRdLGJ0KSl9Y2F0Y2h7fX0pLG90LmNhbGwoUixzdCxsdCxTdCl9LE8uYXR0YWNoT3JpZ2luVG9QYXRjaGVkKFJbUF0sb3QpfWNvbnN0''@;'; put 'put ''IG1uPWZ1bmN0aW9uIG4oKXtjb25zdCBPPWdsb2JhbFRoaXMsUj0hMD09PU9bbCgiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2siKV07aWYoTy5ab25lJiYoUnx8ImZ1bmN0aW9uIiE9dHlwZW9mIE8uWm9uZS5fX3N5bWJvbF9fKSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQu''@;'; put 'put ''Iik7cmV0dXJuIE8uWm9uZT8/PWZ1bmN0aW9uIHQoKXtjb25zdCBPPWMucGVyZm9ybWFuY2U7ZnVuY3Rpb24gUihBdCl7TyYmTy5tYXJrJiZPLm1hcmsoQXQpfWZ1bmN0aW9uIEIoQXQsYXQpe08mJk8ubWVhc3VyZSYmTy5tZWFzdXJlKEF0LGF0KX1SKCJab25lIik7bGV0IFA9KCgpPT57Y2xh''@;'; put 'put ''c3MgQXR7c3RhdGlje3RoaXMuX19zeW1ib2xfXz1sfXN0YXRpYyBhc3NlcnRab25lUGF0Y2hlZCgpe2lmKGMuUHJvbWlzZSE9PUl0LlpvbmVBd2FyZVByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJab25lLmpzIGhhcyBkZXRlY3RlZCB0aGF0IFpvbmVBd2FyZVByb21pc2UgYCh3aW5kb3d8Z2xv''@;'; put 'put ''YmFsKS5Qcm9taXNlYCBoYXMgYmVlbiBvdmVyd3JpdHRlbi5cbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5q''@;'; put 'put ''cyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLikiKX1zdGF0aWMgZ2V0IHJvb3QoKXtsZXQgUz1BdC5jdXJyZW50O2Zvcig7Uy5wYXJlbnQ7KVM9Uy5wYXJlbnQ7cmV0dXJuIFN9c3RhdGljIGdldCBjdXJyZW50KCl7cmV0dXJu''@;'; put 'put ''IHl0LnpvbmV9c3RhdGljIGdldCBjdXJyZW50VGFzaygpe3JldHVybiBPdH1zdGF0aWMgX19sb2FkX3BhdGNoKFMsaixodD0hMSl7aWYoSXQuaGFzT3duUHJvcGVydHkoUykpe2NvbnN0IFB0PSEwPT09Y1tsKCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVjayIpXTtpZighaHQmJlB0KXRocm93IEVy''@;'; put 'put ''cm9yKCJBbHJlYWR5IGxvYWRlZCBwYXRjaDogIitTKX1lbHNlIGlmKCFjWyJfX1pvbmVfZGlzYWJsZV8iK1NdKXtjb25zdCBQdD0iWm9uZToiK1M7UihQdCksSXRbU109aihjLEF0LHh0KSxCKFB0LFB0KX19Z2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9Z2V0IG5hbWUoKXtyZXR1''@;'; put 'put ''cm4gdGhpcy5fbmFtZX1jb25zdHJ1Y3RvcihTLGope3RoaXMuX3BhcmVudD1TLHRoaXMuX25hbWU9aj9qLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWomJmoucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyBKKHRoaXMsdGhpcy5fcGFyZW50''@;'; put 'put ''JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxqKX1nZXQoUyl7Y29uc3Qgaj10aGlzLmdldFpvbmVXaXRoKFMpO2lmKGopcmV0dXJuIGouX3Byb3BlcnRpZXNbU119Z2V0Wm9uZVdpdGgoUyl7bGV0IGo9dGhpcztmb3IoO2o7KXtpZihqLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KFMp''@;'; put 'put ''KXJldHVybiBqO2o9ai5fcGFyZW50fXJldHVybiBudWxsfWZvcmsoUyl7aWYoIVMpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyxTKX13cmFwKFMsail7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFMpdGhyb3cg''@;'; put 'put ''bmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK1MpO2NvbnN0IGh0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyxTLGopLFB0PXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFB0LnJ1bkd1YXJkZWQoaHQsdGhpcyxhcmd1bWVudHMsail9fXJ1bihTLGos''@;'; put 'put ''aHQsUHQpe3l0PXtwYXJlbnQ6eXQsem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxTLGosaHQsUHQpfWZpbmFsbHl7eXQ9eXQucGFyZW50fX1ydW5HdWFyZGVkKFMsaj1udWxsLGh0LFB0KXt5dD17cGFyZW50Onl0LHpvbmU6dGhpc307dHJ5e3Ry''@;'; put 'put ''eXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLFMsaixodCxQdCl9Y2F0Y2goWXQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLFl0KSl0aHJvdyBZdH19ZmluYWxseXt5dD15dC5wYXJlbnR9fXJ1blRhc2soUyxqLGh0KXtpZihTLnpvbmUhPXRo''@;'; put 'put ''aXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKFMuem9uZXx8b24pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKFMuc3RhdGU9PT1WdCYmKFMudHlwZT09PVd0fHxTLnR5''@;'; put 'put ''cGU9PT1jdCkpcmV0dXJuO2NvbnN0IFB0PVMuc3RhdGUhPVV0O1B0JiZTLl90cmFuc2l0aW9uVG8oVXQscSksUy5ydW5Db3VudCsrO2NvbnN0IFl0PU90O090PVMseXQ9e3BhcmVudDp5dCx6b25lOnRoaXN9O3RyeXtTLnR5cGU9PWN0JiZTLmRhdGEmJiFTLmRhdGEuaXNQZXJpb2RpYyYmKFMu''@;'; put 'put ''Y2FuY2VsRm49dm9pZCAwKTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrKHRoaXMsUyxqLGh0KX1jYXRjaChDdCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsQ3QpKXRocm93IEN0fX1maW5hbGx5e1Muc3RhdGUhPT1WdCYmUy5zdGF0ZSE9''@;'; put 'put ''PVh0JiYoUy50eXBlPT1XdHx8Uy5kYXRhJiZTLmRhdGEuaXNQZXJpb2RpYz9QdCYmUy5fdHJhbnNpdGlvblRvKHEsVXQpOihTLnJ1bkNvdW50PTAsdGhpcy5fdXBkYXRlVGFza0NvdW50KFMsLTEpLFB0JiZTLl90cmFuc2l0aW9uVG8oVnQsVXQsVnQpKSkseXQ9eXQucGFyZW50LE90PVl0fX1z''@;'; put 'put ''Y2hlZHVsZVRhc2soUyl7aWYoUy56b25lJiZTLnpvbmUhPT10aGlzKXtsZXQgaHQ9dGhpcztmb3IoO2h0Oyl7aWYoaHQ9PT1TLnpvbmUpdGhyb3cgRXJyb3IoYGNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICR7dGhpcy5uYW1lfSB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2lu''@;'; put 'put ''YWwgem9uZSAke1Muem9uZS5uYW1lfWApO2h0PWh0LnBhcmVudH19Uy5fdHJhbnNpdGlvblRvKG10LFZ0KTtjb25zdCBqPVtdO1MuX3pvbmVEZWxlZ2F0ZXM9aixTLl96b25lPXRoaXM7dHJ5e1M9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLFMpfWNhdGNoKGh0KXt0aHJv''@;'; put 'put ''dyBTLl90cmFuc2l0aW9uVG8oWHQsbXQsVnQpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGh0KSxodH1yZXR1cm4gUy5fem9uZURlbGVnYXRlcz09PWomJnRoaXMuX3VwZGF0ZVRhc2tDb3VudChTLDEpLFMuc3RhdGU9PW10JiZTLl90cmFuc2l0aW9uVG8ocSxtdCksU31z''@;'; put 'put ''Y2hlZHVsZU1pY3JvVGFzayhTLGosaHQsUHQpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgb3QoSHQsUyxqLGh0LFB0LHZvaWQgMCkpfXNjaGVkdWxlTWFjcm9UYXNrKFMsaixodCxQdCxZdCl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBvdChjdCxTLGosaHQsUHQsWXQpKX1z''@;'; put 'put ''Y2hlZHVsZUV2ZW50VGFzayhTLGosaHQsUHQsWXQpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgb3QoV3QsUyxqLGh0LFB0LFl0KSl9Y2FuY2VsVGFzayhTKXtpZihTLnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6''@;'; put 'put ''b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKFMuem9uZXx8b24pLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKFMuc3RhdGU9PT1xfHxTLnN0YXRlPT09VXQpe1MuX3RyYW5zaXRpb25UbyhKdCxxLFV0KTt0cnl7dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRh''@;'; put 'put ''c2sodGhpcyxTKX1jYXRjaChqKXt0aHJvdyBTLl90cmFuc2l0aW9uVG8oWHQsSnQpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLGopLGp9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChTLC0xKSxTLl90cmFuc2l0aW9uVG8oVnQsSnQpLFMucnVuQ291bnQ9MCxTfX1f''@;'; put 'put ''dXBkYXRlVGFza0NvdW50KFMsail7Y29uc3QgaHQ9Uy5fem9uZURlbGVnYXRlczstMT09aiYmKFMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKGxldCBQdD0wO1B0PGh0Lmxlbmd0aDtQdCsrKWh0W1B0XS5fdXBkYXRlVGFza0NvdW50KFMudHlwZSxqKX19cmV0dXJuIEF0fSkoKTtjb25zdCBO''@;'; put 'put ''PXtuYW1lOiIiLG9uSGFzVGFzazooQXQsYXQsUyxqKT0+QXQuaGFzVGFzayhTLGopLG9uU2NoZWR1bGVUYXNrOihBdCxhdCxTLGopPT5BdC5zY2hlZHVsZVRhc2soUyxqKSxvbkludm9rZVRhc2s6KEF0LGF0LFMsaixodCxQdCk9PkF0Lmludm9rZVRhc2soUyxqLGh0LFB0KSxvbkNhbmNlbFRh''@;'; put 'put ''c2s6KEF0LGF0LFMsaik9PkF0LmNhbmNlbFRhc2soUyxqKX07Y2xhc3MgSntnZXQgem9uZSgpe3JldHVybiB0aGlzLl96b25lfWNvbnN0cnVjdG9yKGF0LFMsail7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuX3pvbmU9YXQsdGhp''@;'; put 'put ''cy5fcGFyZW50RGVsZWdhdGU9Uyx0aGlzLl9mb3JrWlM9aiYmKGomJmoub25Gb3JrP2o6Uy5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1qJiYoai5vbkZvcms/UzpTLl9mb3JrRGxndCksdGhpcy5fZm9ya0N1cnJab25lPWomJihqLm9uRm9yaz90aGlzLl96b25lOlMuX2ZvcmtDdXJyWm9uZSks''@;'; put 'put ''dGhpcy5faW50ZXJjZXB0WlM9aiYmKGoub25JbnRlcmNlcHQ/ajpTLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1qJiYoai5vbkludGVyY2VwdD9TOlMuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPWomJihqLm9uSW50ZXJjZXB0P3RoaXMuX3pvbmU6''@;'; put 'put ''Uy5faW50ZXJjZXB0Q3VyclpvbmUpLHRoaXMuX2ludm9rZVpTPWomJihqLm9uSW52b2tlP2o6Uy5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9aiYmKGoub25JbnZva2U/UzpTLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1qJiYoai5vbkludm9rZT90aGlzLl96b25lOlMu''@;'; put 'put ''X2ludm9rZUN1cnJab25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPWomJihqLm9uSGFuZGxlRXJyb3I/ajpTLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9aiYmKGoub25IYW5kbGVFcnJvcj9TOlMuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9u''@;'; put 'put ''ZT1qJiYoai5vbkhhbmRsZUVycm9yP3RoaXMuX3pvbmU6Uy5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9aiYmKGoub25TY2hlZHVsZVRhc2s/ajpTLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1qJiYoai5vblNjaGVkdWxlVGFzaz9T''@;'; put 'put ''OlMuX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPWomJihqLm9uU2NoZWR1bGVUYXNrP3RoaXMuX3pvbmU6Uy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLHRoaXMuX2ludm9rZVRhc2taUz1qJiYoai5vbkludm9rZVRhc2s/ajpTLl9pbnZva2VUYXNrWlMpLHRo''@;'; put 'put ''aXMuX2ludm9rZVRhc2tEbGd0PWomJihqLm9uSW52b2tlVGFzaz9TOlMuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9aiYmKGoub25JbnZva2VUYXNrP3RoaXMuX3pvbmU6Uy5faW52b2tlVGFza0N1cnJab25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9aiYmKGoub25D''@;'; put 'put ''YW5jZWxUYXNrP2o6Uy5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1qJiYoai5vbkNhbmNlbFRhc2s/UzpTLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPWomJihqLm9uQ2FuY2VsVGFzaz90aGlzLl96b25lOlMuX2NhbmNlbFRhc2tDdXJyWm9u''@;'; put 'put ''ZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7Y29uc3QgaHQ9aiYmai5vbkhhc1Rhc2s7KGh0fHxTJiZTLl9oYXNUYXNrWlMpJiYodGhpcy5faGFzVGFza1pT''@;'; put 'put ''PWh0P2o6Tix0aGlzLl9oYXNUYXNrRGxndD1TLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dGhpcy5fem9uZSxqLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Tix0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PVMsdGhpcy5fc2No''@;'; put 'put ''ZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy5fem9uZSksai5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9Tix0aGlzLl9pbnZva2VUYXNrRGxndD1TLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLl96b25lKSxqLm9uQ2FuY2VsVGFza3x8KHRoaXMuX2NhbmNlbFRhc2taUz1O''@;'; put 'put ''LHRoaXMuX2NhbmNlbFRhc2tEbGd0PVMsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPXRoaXMuX3pvbmUpKX1mb3JrKGF0LFMpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsYXQsUyk6bmV3IFAoYXQsUyl9aW50ZXJjZXB0''@;'; put 'put ''KGF0LFMsail7cmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTP3RoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRoaXMuX2ludGVyY2VwdERsZ3QsdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsYXQsUyxqKTpTfWludm9rZShhdCxTLGosaHQsUHQpe3JldHVybiB0aGlzLl9pbnZva2VaUz90aGlz''@;'; put 'put ''Ll9pbnZva2VaUy5vbkludm9rZSh0aGlzLl9pbnZva2VEbGd0LHRoaXMuX2ludm9rZUN1cnJab25lLGF0LFMsaixodCxQdCk6Uy5hcHBseShqLGh0KX1oYW5kbGVFcnJvcihhdCxTKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9y''@;'; put 'put ''KHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLGF0LFMpfXNjaGVkdWxlVGFzayhhdCxTKXtsZXQgaj1TO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmai5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3du''@;'; put 'put ''ZXIpLGo9dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSxhdCxTKSxqfHwoaj1TKTtlbHNlIGlmKFMuc2NoZWR1bGVGbilTLnNjaGVkdWxlRm4oUyk7ZWxzZXtpZihTLnR5cGUhPUh0KXRo''@;'; put 'put ''cm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7R3QoUyl9cmV0dXJuIGp9aW52b2tlVGFzayhhdCxTLGosaHQpe3JldHVybiB0aGlzLl9pbnZva2VUYXNrWlM/dGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCx0aGlz''@;'; put 'put ''Ll9pbnZva2VUYXNrQ3VyclpvbmUsYXQsUyxqLGh0KTpTLmNhbGxiYWNrLmFwcGx5KGosaHQpfWNhbmNlbFRhc2soYXQsUyl7bGV0IGo7aWYodGhpcy5fY2FuY2VsVGFza1pTKWo9dGhpcy5fY2FuY2VsVGFza1pTLm9uQ2FuY2VsVGFzayh0aGlzLl9jYW5jZWxUYXNrRGxndCx0aGlzLl9jYW5j''@;'; put 'put ''ZWxUYXNrQ3VyclpvbmUsYXQsUyk7ZWxzZXtpZighUy5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO2o9Uy5jYW5jZWxGbihTKX1yZXR1cm4gan1oYXNUYXNrKGF0LFMpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2so''@;'; put 'put ''dGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLGF0LFMpfWNhdGNoKGope3RoaXMuaGFuZGxlRXJyb3IoYXQsail9fV91cGRhdGVUYXNrQ291bnQoYXQsUyl7Y29uc3Qgaj10aGlzLl90YXNrQ291bnRzLGh0PWpbYXRdLFB0PWpbYXRdPWh0K1M7aWYoUHQ8MCl0aHJvdyBu''@;'; put 'put ''ZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTswIT1odCYmMCE9UHR8fHRoaXMuaGFzVGFzayh0aGlzLl96b25lLHttaWNyb1Rhc2s6ai5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6ai5tYWNyb1Rhc2s+MCxldmVudFRhc2s6ai5ldmVudFRhc2s+MCxj''@;'; put 'put ''aGFuZ2U6YXR9KX19Y2xhc3Mgb3R7Y29uc3RydWN0b3IoYXQsUyxqLGh0LFB0LFl0KXtpZih0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9YXQsdGhpcy5zb3VyY2U9Uyx0''@;'; put 'put ''aGlzLmRhdGE9aHQsdGhpcy5zY2hlZHVsZUZuPVB0LHRoaXMuY2FuY2VsRm49WXQsIWopdGhyb3cgbmV3IEVycm9yKCJjYWxsYmFjayBpcyBub3QgZGVmaW5lZCIpO3RoaXMuY2FsbGJhY2s9ajtjb25zdCBDdD10aGlzO3RoaXMuaW52b2tlPWF0PT09V3QmJmh0JiZodC51c2VHP290Lmludm9r''@;'; put 'put ''ZVRhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gb3QuaW52b2tlVGFzay5jYWxsKGMsQ3QsdGhpcyxhcmd1bWVudHMpfX1zdGF0aWMgaW52b2tlVGFzayhhdCxTLGope2F0fHwoYXQ9dGhpcyksbm4rKzt0cnl7cmV0dXJuIGF0LnJ1bkNvdW50KyssYXQuem9uZS5ydW5UYXNrKGF0LFMsail9ZmluYWxs''@;'; put 'put ''eXsxPT1ubiYmQnQoKSxubi0tfX1nZXQgem9uZSgpe3JldHVybiB0aGlzLl96b25lfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLl9zdGF0ZX1jYW5jZWxTY2hlZHVsZVJlcXVlc3QoKXt0aGlzLl90cmFuc2l0aW9uVG8oVnQsbXQpfV90cmFuc2l0aW9uVG8oYXQsUyxqKXtpZih0aGlzLl9zdGF0''@;'; put 'put ''ZSE9PVMmJnRoaXMuX3N0YXRlIT09ail0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy50eXBlfSAnJHt0aGlzLnNvdXJjZX0nOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyR7YXR9JywgZXhwZWN0aW5nIHN0YXRlICcke1N9JyR7aj8iIG9yICciK2orIiciOiIifSwgd2FzICcke3RoaXMuX3N0YXRl''@;'; put 'put ''fScuYCk7dGhpcy5fc3RhdGU9YXQsYXQ9PVZ0JiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX10b1N0cmluZygpe3JldHVybiB0aGlzLmRhdGEmJnR5cGVvZiB0aGlzLmRhdGEuaGFuZGxlSWQ8InUiP3RoaXMuZGF0YS5oYW5kbGVJZC50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9T''@;'; put 'put ''dHJpbmcuY2FsbCh0aGlzKX10b0pTT04oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX19Y29uc3Qgc3Q9bCgic2V0VGltZW91dCIpLGx0PWwoIlByb21p''@;'; put 'put ''c2UiKSxTdD1sKCJ0aGVuIik7bGV0IEV0LHV0PVtdLGJ0PSExO2Z1bmN0aW9uIGt0KEF0KXtpZihFdHx8Y1tsdF0mJihFdD1jW2x0XS5yZXNvbHZlKDApKSxFdCl7bGV0IGF0PUV0W1N0XTthdHx8KGF0PUV0LnRoZW4pLGF0LmNhbGwoRXQsQXQpfWVsc2UgY1tzdF0oQXQsMCl9ZnVuY3Rpb24g''@;'; put 'put ''R3QoQXQpezA9PT1ubiYmMD09PXV0Lmxlbmd0aCYma3QoQnQpLEF0JiZ1dC5wdXNoKEF0KX1mdW5jdGlvbiBCdCgpe2lmKCFidCl7Zm9yKGJ0PSEwO3V0Lmxlbmd0aDspe2NvbnN0IEF0PXV0O3V0PVtdO2ZvcihsZXQgYXQ9MDthdDxBdC5sZW5ndGg7YXQrKyl7Y29uc3QgUz1BdFthdF07dHJ5''@;'; put 'put ''e1Muem9uZS5ydW5UYXNrKFMsbnVsbCxudWxsKX1jYXRjaChqKXt4dC5vblVuaGFuZGxlZEVycm9yKGopfX19eHQubWljcm90YXNrRHJhaW5Eb25lKCksYnQ9ITF9fWNvbnN0IG9uPXtuYW1lOiJOTyBaT05FIn0sVnQ9Im5vdFNjaGVkdWxlZCIsbXQ9InNjaGVkdWxpbmciLHE9InNjaGVkdWxl''@;'; put 'put ''ZCIsVXQ9InJ1bm5pbmciLEp0PSJjYW5jZWxpbmciLFh0PSJ1bmtub3duIixIdD0ibWljcm9UYXNrIixjdD0ibWFjcm9UYXNrIixXdD0iZXZlbnRUYXNrIixJdD17fSx4dD17c3ltYm9sOmwsY3VycmVudFpvbmVGcmFtZTooKT0+eXQsb25VbmhhbmRsZWRFcnJvcjpadCxtaWNyb3Rhc2tEcmFp''@;'; put 'put ''bkRvbmU6WnQsc2NoZWR1bGVNaWNyb1Rhc2s6R3Qsc2hvd1VuY2F1Z2h0RXJyb3I6KCk9PiFQW2woImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3IiKV0scGF0Y2hFdmVudFRhcmdldDooKT0+W10scGF0Y2hPblByb3BlcnRpZXM6WnQscGF0Y2hNZXRob2Q6KCk9Plp0LGJpbmRBcmd1''@;'; put 'put ''bWVudHM6KCk9PltdLHBhdGNoVGhlbjooKT0+WnQscGF0Y2hNYWNyb1Rhc2s6KCk9Plp0LHBhdGNoRXZlbnRQcm90b3R5cGU6KCk9Plp0LGlzSUVPckVkZ2U6KCk9PiExLGdldEdsb2JhbE9iamVjdHM6KCk9Pnt9LE9iamVjdERlZmluZVByb3BlcnR5OigpPT5adCxPYmplY3RHZXRPd25Qcm9w''@;'; put 'put ''ZXJ0eURlc2NyaXB0b3I6KCk9Pnt9LE9iamVjdENyZWF0ZTooKT0+e30sQXJyYXlTbGljZTooKT0+W10scGF0Y2hDbGFzczooKT0+WnQsd3JhcFdpdGhDdXJyZW50Wm9uZTooKT0+WnQsZmlsdGVyUHJvcGVydGllczooKT0+W10sYXR0YWNoT3JpZ2luVG9QYXRjaGVkOigpPT5adCxfcmVkZWZp''@;'; put 'put ''bmVQcm9wZXJ0eTooKT0+WnQscGF0Y2hDYWxsYmFja3M6KCk9Plp0LG5hdGl2ZVNjaGVkdWxlTWljcm9UYXNrOmt0fTtsZXQgeXQ9e3BhcmVudDpudWxsLHpvbmU6bmV3IFAobnVsbCxudWxsKX0sT3Q9bnVsbCxubj0wO2Z1bmN0aW9uIFp0KCl7fXJldHVybiBCKCJab25lIiwiWm9uZSIpLFB9''@;'; put 'put ''KCksTy5ab25lfSgpOyhmdW5jdGlvbiBlbihPKXsoZnVuY3Rpb24gUShPKXtPLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKFIsQixQKT0+e2NvbnN0IE49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixKPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxzdD1QLnN5bWJvbCxs''@;'; put 'put ''dD1bXSxTdD0hMSE9PVJbc3QoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0sdXQ9c3QoIlByb21pc2UiKSxidD1zdCgidGhlbiIpLEV0PSJfX2NyZWF0aW9uVHJhY2VfXyI7UC5vblVuaGFuZGxlZEVycm9yPXo9PntpZihQLnNob3dVbmNhdWdodEVycm9y''@;'; put 'put ''KCkpe2NvbnN0IFc9eiYmei5yZWplY3Rpb247Vz9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixXIGluc3RhbmNlb2YgRXJyb3I/Vy5tZXNzYWdlOlcsIjsgWm9uZToiLHouem9uZS5uYW1lLCI7IFRhc2s6Iix6LnRhc2smJnoudGFzay5zb3VyY2UsIjsgVmFs''@;'; put 'put ''dWU6IixXLFcgaW5zdGFuY2VvZiBFcnJvcj9XLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih6KX19LFAubWljcm90YXNrRHJhaW5Eb25lPSgpPT57Zm9yKDtsdC5sZW5ndGg7KXtjb25zdCB6PWx0LnNoaWZ0KCk7dHJ5e3ouem9uZS5ydW5HdWFyZGVkKCgpPT57dGhyb3cgei50aHJvd09y''@;'; put 'put ''aWdpbmFsP3oucmVqZWN0aW9uOnp9KX1jYXRjaChXKXtHdChXKX19fTtjb25zdCBrdD1zdCgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiBHdCh6KXtQLm9uVW5oYW5kbGVkRXJyb3Ioeik7dHJ5e2NvbnN0IFc9QltrdF07ImZ1bmN0aW9uIj09dHlwZW9mIFcm''@;'; put 'put ''JlcuY2FsbCh0aGlzLHopfWNhdGNoe319ZnVuY3Rpb24gQnQoeil7cmV0dXJuIHomJnoudGhlbn1mdW5jdGlvbiBvbih6KXtyZXR1cm4gen1mdW5jdGlvbiBWdCh6KXtyZXR1cm4gQ3QucmVqZWN0KHopfWNvbnN0IG10PXN0KCJzdGF0ZSIpLHE9c3QoInZhbHVlIiksVXQ9c3QoImZpbmFsbHki''@;'; put 'put ''KSxKdD1zdCgicGFyZW50UHJvbWlzZVZhbHVlIiksWHQ9c3QoInBhcmVudFByb21pc2VTdGF0ZSIpLEh0PSJQcm9taXNlLnRoZW4iLGN0PW51bGwsV3Q9ITAsSXQ9ITEseHQ9MDtmdW5jdGlvbiB5dCh6LFcpe3JldHVybiBrPT57dHJ5e0F0KHosVyxrKX1jYXRjaChHKXtBdCh6LCExLEcpfX19''@;'; put 'put ''Y29uc3QgT3Q9ZnVuY3Rpb24oKXtsZXQgej0hMTtyZXR1cm4gZnVuY3Rpb24oayl7cmV0dXJuIGZ1bmN0aW9uKCl7enx8KHo9ITAsay5hcHBseShudWxsLGFyZ3VtZW50cykpfX19LG5uPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixadD1zdCgiY3VycmVudFRhc2tUcmFjZSIpO2Z1''@;'; put 'put ''bmN0aW9uIEF0KHosVyxrKXtjb25zdCBHPU90KCk7aWYoej09PWspdGhyb3cgbmV3IFR5cGVFcnJvcihubik7aWYoelttdF09PT1jdCl7bGV0IHZ0PW51bGw7dHJ5eygib2JqZWN0Ij09dHlwZW9mIGt8fCJmdW5jdGlvbiI9PXR5cGVvZiBrKSYmKHZ0PWsmJmsudGhlbil9Y2F0Y2goVHQpe3Jl''@;'; put 'put ''dHVybiBHKCgpPT57QXQoeiwhMSxUdCl9KSgpLHp9aWYoVyE9PUl0JiZrIGluc3RhbmNlb2YgQ3QmJmsuaGFzT3duUHJvcGVydHkobXQpJiZrLmhhc093blByb3BlcnR5KHEpJiZrW210XSE9PWN0KVMoayksQXQoeixrW210XSxrW3FdKTtlbHNlIGlmKFchPT1JdCYmImZ1bmN0aW9uIj09dHlw''@;'; put 'put ''ZW9mIHZ0KXRyeXt2dC5jYWxsKGssRyh5dCh6LFcpKSxHKHl0KHosITEpKSl9Y2F0Y2goVHQpe0coKCk9PntBdCh6LCExLFR0KX0pKCl9ZWxzZXt6W210XT1XO2NvbnN0IFR0PXpbcV07aWYoeltxXT1rLHpbVXRdPT09VXQmJlc9PT1XdCYmKHpbbXRdPXpbWHRdLHpbcV09eltKdF0pLFc9PT1J''@;'; put 'put ''dCYmayBpbnN0YW5jZW9mIEVycm9yKXtjb25zdCBmdD1CLmN1cnJlbnRUYXNrJiZCLmN1cnJlbnRUYXNrLmRhdGEmJkIuY3VycmVudFRhc2suZGF0YVtFdF07ZnQmJkooayxadCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6ZnR9KX1mb3IobGV0IGZ0''@;'; put 'put ''PTA7ZnQ8VHQubGVuZ3RoOylqKHosVHRbZnQrK10sVHRbZnQrK10sVHRbZnQrK10sVHRbZnQrK10pO2lmKDA9PVR0Lmxlbmd0aCYmVz09SXQpe3pbbXRdPXh0O2xldCBmdD1rO3RyeXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIitmdW5jdGlvbiBvdCh6KXtyZXR1''@;'; put 'put ''cm4geiYmei50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KHouY29uc3RydWN0b3ImJnouY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoeik6ej96LnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHopfShrKSsoayYm''@;'; put 'put ''ay5zdGFjaz8iXG4iK2suc3RhY2s6IiIpKX1jYXRjaCh3dCl7ZnQ9d3R9U3QmJihmdC50aHJvd09yaWdpbmFsPSEwKSxmdC5yZWplY3Rpb249ayxmdC5wcm9taXNlPXosZnQuem9uZT1CLmN1cnJlbnQsZnQudGFzaz1CLmN1cnJlbnRUYXNrLGx0LnB1c2goZnQpLFAuc2NoZWR1bGVNaWNyb1Rh''@;'; put 'put ''c2soKX19fXJldHVybiB6fWNvbnN0IGF0PXN0KCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlciIpO2Z1bmN0aW9uIFMoeil7aWYoelttdF09PT14dCl7dHJ5e2NvbnN0IFc9QlthdF07VyYmImZ1bmN0aW9uIj09dHlwZW9mIFcmJlcuY2FsbCh0aGlzLHtyZWplY3Rpb246eltxXSxwcm9taXNlOnp9''@;'; put 'put ''KX1jYXRjaHt9elttdF09SXQ7Zm9yKGxldCBXPTA7VzxsdC5sZW5ndGg7VysrKXo9PT1sdFtXXS5wcm9taXNlJiZsdC5zcGxpY2UoVywxKX19ZnVuY3Rpb24gaih6LFcsayxHLHZ0KXtTKHopO2NvbnN0IFR0PXpbbXRdLGZ0PVR0PyJmdW5jdGlvbiI9PXR5cGVvZiBHP0c6b246ImZ1bmN0aW9u''@;'; put 'put ''Ij09dHlwZW9mIHZ0P3Z0OlZ0O1cuc2NoZWR1bGVNaWNyb1Rhc2soSHQsKCk9Pnt0cnl7Y29uc3Qgd3Q9eltxXSxGdD0hIWsmJlV0PT09a1tVdF07RnQmJihrW0p0XT13dCxrW1h0XT1UdCk7Y29uc3QgRHQ9Vy5ydW4oZnQsdm9pZCAwLEZ0JiZmdCE9PVZ0JiZmdCE9PW9uP1tdOlt3dF0pO0F0''@;'; put 'put ''KGssITAsRHQpfWNhdGNoKHd0KXtBdChrLCExLHd0KX19LGspfWNvbnN0IFB0PWZ1bmN0aW9uKCl7fSxZdD1SLkFnZ3JlZ2F0ZUVycm9yO2NsYXNzIEN0e3N0YXRpYyB0b1N0cmluZygpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifXN0YXRp''@;'; put 'put ''YyByZXNvbHZlKFcpe3JldHVybiBXIGluc3RhbmNlb2YgQ3Q/VzpBdChuZXcgdGhpcyhudWxsKSxXdCxXKX1zdGF0aWMgcmVqZWN0KFcpe3JldHVybiBBdChuZXcgdGhpcyhudWxsKSxJdCxXKX1zdGF0aWMgd2l0aFJlc29sdmVycygpe2NvbnN0IFc9e307cmV0dXJuIFcucHJvbWlzZT1uZXcg''@;'; put 'put ''Q3QoKGssRyk9PntXLnJlc29sdmU9ayxXLnJlamVjdD1HfSksV31zdGF0aWMgYW55KFcpe2lmKCFXfHwiZnVuY3Rpb24iIT10eXBlb2YgV1tTeW1ib2wuaXRlcmF0b3JdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgWXQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpO2NvbnN0''@;'; put 'put ''IGs9W107bGV0IEc9MDt0cnl7Zm9yKGxldCBmdCBvZiBXKUcrKyxrLnB1c2goQ3QucmVzb2x2ZShmdCkpfWNhdGNoe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgWXQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpfWlmKDA9PT1HKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcg''@;'; put 'put ''WXQoW10sIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkIikpO2xldCB2dD0hMTtjb25zdCBUdD1bXTtyZXR1cm4gbmV3IEN0KChmdCx3dCk9Pntmb3IobGV0IEZ0PTA7RnQ8ay5sZW5ndGg7RnQrKylrW0Z0XS50aGVuKER0PT57dnR8fCh2dD0hMCxmdChEdCkpfSxEdD0+e1R0LnB1c2goRHQp''@;'; put 'put ''LEctLSwwPT09RyYmKHZ0PSEwLHd0KG5ldyBZdChUdCwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQiKSkpfSl9KX1zdGF0aWMgcmFjZShXKXtsZXQgayxHLHZ0PW5ldyB0aGlzKCh3dCxGdCk9PntrPXd0LEc9RnR9KTtmdW5jdGlvbiBUdCh3dCl7ayh3dCl9ZnVuY3Rpb24gZnQod3Qpe0co''@;'; put 'put ''d3QpfWZvcihsZXQgd3Qgb2YgVylCdCh3dCl8fCh3dD10aGlzLnJlc29sdmUod3QpKSx3dC50aGVuKFR0LGZ0KTtyZXR1cm4gdnR9c3RhdGljIGFsbChXKXtyZXR1cm4gQ3QuYWxsV2l0aENhbGxiYWNrKFcpfXN0YXRpYyBhbGxTZXR0bGVkKFcpe3JldHVybih0aGlzJiZ0aGlzLnByb3RvdHlw''@;'; put 'put ''ZSBpbnN0YW5jZW9mIEN0P3RoaXM6Q3QpLmFsbFdpdGhDYWxsYmFjayhXLHt0aGVuQ2FsbGJhY2s6Rz0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6R30pLGVycm9yQ2FsbGJhY2s6Rz0+KHtzdGF0dXM6InJlamVjdGVkIixyZWFzb246R30pfSl9c3RhdGljIGFsbFdpdGhDYWxsYmFjayhX''@;'; put 'put ''LGspe2xldCBHLHZ0LFR0PW5ldyB0aGlzKChEdCxLdCk9PntHPUR0LHZ0PUt0fSksZnQ9Mix3dD0wO2NvbnN0IEZ0PVtdO2ZvcihsZXQgRHQgb2YgVyl7QnQoRHQpfHwoRHQ9dGhpcy5yZXNvbHZlKER0KSk7Y29uc3QgS3Q9d3Q7dHJ5e0R0LnRoZW4oJHQ9PntGdFtLdF09az9rLnRoZW5DYWxs''@;'; put 'put ''YmFjaygkdCk6JHQsZnQtLSwwPT09ZnQmJkcoRnQpfSwkdD0+e2s/KEZ0W0t0XT1rLmVycm9yQ2FsbGJhY2soJHQpLGZ0LS0sMD09PWZ0JiZHKEZ0KSk6dnQoJHQpfSl9Y2F0Y2goJHQpe3Z0KCR0KX1mdCsrLHd0Kyt9cmV0dXJuIGZ0LT0yLDA9PT1mdCYmRyhGdCksVHR9Y29uc3RydWN0b3Io''@;'; put 'put ''Vyl7Y29uc3Qgaz10aGlzO2lmKCEoayBpbnN0YW5jZW9mIEN0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO2tbbXRdPWN0LGtbcV09W107dHJ5e2NvbnN0IEc9T3QoKTtXJiZXKEcoeXQoayxXdCkpLEcoeXQoayxJdCkpKX1jYXRjaChHKXtBdChr''@;'; put 'put ''LCExLEcpfX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJQcm9taXNlIn1nZXRbU3ltYm9sLnNwZWNpZXNdKCl7cmV0dXJuIEN0fXRoZW4oVyxrKXtsZXQgRz10aGlzLmNvbnN0cnVjdG9yPy5bU3ltYm9sLnNwZWNpZXNdOyghR3x8ImZ1bmN0aW9uIiE9dHlwZW9mIEcpJiYoRz10''@;'; put 'put ''aGlzLmNvbnN0cnVjdG9yfHxDdCk7Y29uc3QgdnQ9bmV3IEcoUHQpLFR0PUIuY3VycmVudDtyZXR1cm4gdGhpc1ttdF09PWN0P3RoaXNbcV0ucHVzaChUdCx2dCxXLGspOmoodGhpcyxUdCx2dCxXLGspLHZ0fWNhdGNoKFcpe3JldHVybiB0aGlzLnRoZW4obnVsbCxXKX1maW5hbGx5KFcpe2xl''@;'; put 'put ''dCBrPXRoaXMuY29uc3RydWN0b3I/LltTeW1ib2wuc3BlY2llc107KCFrfHwiZnVuY3Rpb24iIT10eXBlb2YgaykmJihrPUN0KTtjb25zdCBHPW5ldyBrKFB0KTtHW1V0XT1VdDtjb25zdCB2dD1CLmN1cnJlbnQ7cmV0dXJuIHRoaXNbbXRdPT1jdD90aGlzW3FdLnB1c2godnQsRyxXLFcpOmoo''@;'; put 'put ''dGhpcyx2dCxHLFcsVyksR319Q3QucmVzb2x2ZT1DdC5yZXNvbHZlLEN0LnJlamVjdD1DdC5yZWplY3QsQ3QucmFjZT1DdC5yYWNlLEN0LmFsbD1DdC5hbGw7Y29uc3QgT249Ult1dF09Ui5Qcm9taXNlO1IuUHJvbWlzZT1DdDtjb25zdCBNbj1zdCgidGhlblBhdGNoZWQiKTtmdW5jdGlvbiBn''@;'; put 'put ''bih6KXtjb25zdCBXPXoucHJvdG90eXBlLGs9TihXLCJ0aGVuIik7aWYoayYmKCExPT09ay53cml0YWJsZXx8IWsuY29uZmlndXJhYmxlKSlyZXR1cm47Y29uc3QgRz1XLnRoZW47V1tidF09Ryx6LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHZ0LFR0KXtyZXR1cm4gbmV3IEN0KCh3dCxGdCk9''@;'; put 'put ''PntHLmNhbGwodGhpcyx3dCxGdCl9KS50aGVuKHZ0LFR0KX0seltNbl09ITB9cmV0dXJuIFAucGF0Y2hUaGVuPWduLE9uJiYoZ24oT24pLHJ0KFIsImZldGNoIix6PT5mdW5jdGlvbiBQbih6KXtyZXR1cm4gZnVuY3Rpb24oVyxrKXtsZXQgRz16LmFwcGx5KFcsayk7aWYoRyBpbnN0YW5jZW9m''@;'; put 'put ''IEN0KXJldHVybiBHO2xldCB2dD1HLmNvbnN0cnVjdG9yO3JldHVybiB2dFtNbl18fGduKHZ0KSxHfX0oeikpKSxQcm9taXNlW0IuX19zeW1ib2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPWx0LEN0fSl9KShPKSxmdW5jdGlvbiBpdChPKXtPLl9fbG9hZF9wYXRjaCgidG9TdHJpbmci''@;'; put 'put ''LFI9Pntjb25zdCBCPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxQPXgoIk9yaWdpbmFsRGVsZWdhdGUiKSxOPXgoIlByb21pc2UiKSxKPXgoIkVycm9yIiksb3Q9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7Y29uc3QgdXQ9dGhpc1tQXTtpZih1dClyZXR1cm4i''@;'; put 'put ''ZnVuY3Rpb24iPT10eXBlb2YgdXQ/Qi5jYWxsKHV0KTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodXQpO2lmKHRoaXM9PT1Qcm9taXNlKXtjb25zdCBidD1SW05dO2lmKGJ0KXJldHVybiBCLmNhbGwoYnQpfWlmKHRoaXM9PT1FcnJvcil7Y29uc3QgYnQ9UltKXTtpZihidClyZXR1''@;'; put 'put ''cm4gQi5jYWxsKGJ0KX19cmV0dXJuIEIuY2FsbCh0aGlzKX07b3RbUF09QixGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9b3Q7Y29uc3Qgc3Q9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09''@;'; put 'put ''dHlwZW9mIFByb21pc2UmJnRoaXMgaW5zdGFuY2VvZiBQcm9taXNlPyJbb2JqZWN0IFByb21pc2VdIjpzdC5jYWxsKHRoaXMpfX0pfShPKSxmdW5jdGlvbiBxdChPKXtPLl9fbG9hZF9wYXRjaCgidXRpbCIsKFIsQixQKT0+e2NvbnN0IE49UnQoUik7UC5wYXRjaE9uUHJvcGVydGllcz1WLFAu''@;'; put 'put ''cGF0Y2hNZXRob2Q9cnQsUC5iaW5kQXJndW1lbnRzPVQsUC5wYXRjaE1hY3JvVGFzaz1NdDtjb25zdCBKPUIuX19zeW1ib2xfXygiQkxBQ0tfTElTVEVEX0VWRU5UUyIpLG90PUIuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO1Jbb3RdJiYoUltKXT1SW290XSksUltKXSYmKEJbSl09''@;'; put 'put ''QltvdF09UltKXSksUC5wYXRjaEV2ZW50UHJvdG90eXBlPXluLFAucGF0Y2hFdmVudFRhcmdldD1hbixQLmlzSUVPckVkZ2U9cm4sUC5PYmplY3REZWZpbmVQcm9wZXJ0eT1zLFAuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWUsUC5PYmplY3RDcmVhdGU9dSxQLkFycmF5U2xpY2U9''@;'; put 'put ''ZixQLnBhdGNoQ2xhc3M9WCxQLndyYXBXaXRoQ3VycmVudFpvbmU9RCxQLmZpbHRlclByb3BlcnRpZXM9SyxQLmF0dGFjaE9yaWdpblRvUGF0Y2hlZD1ndCxQLl9yZWRlZmluZVByb3BlcnR5PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxQLnBhdGNoQ2FsbGJhY2tzPXp0LFAuZ2V0R2xvYmFsT2Jq''@;'; put 'put ''ZWN0cz0oKT0+KHtnbG9iYWxTb3VyY2VzOmNuLHpvbmVTeW1ib2xFdmVudE5hbWVzOlF0LGV2ZW50TmFtZXM6Tixpc0Jyb3dzZXI6ZXQsaXNNaXg6dHQsaXNOb2RlOlosVFJVRV9TVFI6eSxGQUxTRV9TVFI6RSxaT05FX1NZTUJPTF9QUkVGSVg6ZyxBRERfRVZFTlRfTElTVEVORVJfU1RSOmks''@;'; put 'put ''UkVNT1ZFX0VWRU5UX0xJU1RFTkVSX1NUUjp2fSl9KX0oTyl9KShtbiksZnVuY3Rpb24gSChPKXtPLl9fbG9hZF9wYXRjaCgibGVnYWN5IixSPT57Y29uc3QgQj1SW08uX19zeW1ib2xfXygibGVnYWN5UGF0Y2giKV07QiYmQigpfSksTy5fX2xvYWRfcGF0Y2goInRpbWVycyIsUj0+e2NvbnN0''@;'; put 'put ''IEI9InNldCIsUD0iY2xlYXIiO3IoUixCLFAsIlRpbWVvdXQiKSxyKFIsQixQLCJJbnRlcnZhbCIpLHIoUixCLFAsIkltbWVkaWF0ZSIpfSksTy5fX2xvYWRfcGF0Y2goInJlcXVlc3RBbmltYXRpb25GcmFtZSIsUj0+e3IoUiwicmVxdWVzdCIsImNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiks''@;'; put 'put ''cihSLCJtb3pSZXF1ZXN0IiwibW96Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSxyKFIsIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpfSksTy5fX2xvYWRfcGF0Y2goImJsb2NraW5nIiwoUixCKT0+e2NvbnN0IFA9WyJhbGVydCIsInByb21wdCIsImNv''@;'; put 'put ''bmZpcm0iXTtmb3IobGV0IE49MDtOPFAubGVuZ3RoO04rKylydChSLFBbTl0sKG90LHN0LGx0KT0+ZnVuY3Rpb24oU3QsdXQpe3JldHVybiBCLmN1cnJlbnQucnVuKG90LFIsdXQsbHQpfSl9KSxPLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLChSLEIsUCk9PnsoZnVuY3Rpb24gdyhPLFIp''@;'; put 'put ''e1IucGF0Y2hFdmVudFByb3RvdHlwZShPLFIpfSkoUixQKSxmdW5jdGlvbiBtKE8sUil7aWYoWm9uZVtSLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSlyZXR1cm47Y29uc3R7ZXZlbnROYW1lczpCLHpvbmVTeW1ib2xFdmVudE5hbWVzOlAsVFJVRV9TVFI6TixGQUxTRV9TVFI6SixaT05F''@;'; put 'put ''X1NZTUJPTF9QUkVGSVg6b3R9PVIuZ2V0R2xvYmFsT2JqZWN0cygpO2ZvcihsZXQgbHQ9MDtsdDxCLmxlbmd0aDtsdCsrKXtjb25zdCBTdD1CW2x0XSxFdD1vdCsoU3QrSiksa3Q9b3QrKFN0K04pO1BbU3RdPXt9LFBbU3RdW0pdPUV0LFBbU3RdW05dPWt0fWNvbnN0IHN0PU8uRXZlbnRUYXJn''@;'; put 'put ''ZXQ7c3QmJnN0LnByb3RvdHlwZSYmUi5wYXRjaEV2ZW50VGFyZ2V0KE8sUixbc3QmJnN0LnByb3RvdHlwZV0pfShSLFApO2NvbnN0IE49Ui5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O04mJk4ucHJvdG90eXBlJiZQLnBhdGNoRXZlbnRUYXJnZXQoUixQLFtOLnByb3RvdHlwZV0pfSksTy5f''@;'; put 'put ''X2xvYWRfcGF0Y2goIk11dGF0aW9uT2JzZXJ2ZXIiLChSLEIsUCk9PntYKCJNdXRhdGlvbk9ic2VydmVyIiksWCgiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIpfSksTy5fX2xvYWRfcGF0Y2goIkludGVyc2VjdGlvbk9ic2VydmVyIiwoUixCLFApPT57WCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIi''@;'; put 'put ''KX0pLE8uX19sb2FkX3BhdGNoKCJGaWxlUmVhZGVyIiwoUixCLFApPT57WCgiRmlsZVJlYWRlciIpfSksTy5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoUixCLFApPT57IWZ1bmN0aW9uIG50KE8sUil7aWYoWiYmIXR0fHxab25lW08uc3ltYm9sKCJwYXRjaEV2ZW50cyIpXSlyZXR1cm47''@;'; put 'put ''Y29uc3QgQj1SLl9fWm9uZV9pZ25vcmVfb25fcHJvcGVydGllcztsZXQgUD1bXTtpZihldCl7Y29uc3QgTj13aW5kb3c7UD1QLmNvbmNhdChbIkRvY3VtZW50IiwiU1ZHRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIkhUTUxCb2R5RWxlbWVudCIsIkhUTUxNZWRpYUVsZW1lbnQi''@;'; put 'put ''LCJIVE1MRnJhbWVTZXRFbGVtZW50IiwiSFRNTEZyYW1lRWxlbWVudCIsIkhUTUxJRnJhbWVFbGVtZW50IiwiSFRNTE1hcnF1ZWVFbGVtZW50IiwiV29ya2VyIl0pO2NvbnN0IEo9ZnVuY3Rpb24gX3QoKXt0cnl7Y29uc3QgTz1DLm5hdmlnYXRvci51c2VyQWdlbnQ7aWYoLTEhPT1PLmluZGV4''@;'; put 'put ''T2YoIk1TSUUgIil8fC0xIT09Ty5pbmRleE9mKCJUcmlkZW50LyIpKXJldHVybiEwfWNhdGNoe31yZXR1cm4hMX0oKT9be3RhcmdldDpOLGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107JChOLFJ0KE4pLEImJkIuY29uY2F0KEopLGEoTikpfVA9UC5jb25jYXQoWyJYTUxIdHRwUmVx''@;'; put 'put ''dWVzdCIsIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQiLCJJREJJbmRleCIsIklEQlJlcXVlc3QiLCJJREJPcGVuREJSZXF1ZXN0IiwiSURCRGF0YWJhc2UiLCJJREJUcmFuc2FjdGlvbiIsIklEQkN1cnNvciIsIldlYlNvY2tldCJdKTtmb3IobGV0IE49MDtOPFAubGVuZ3RoO04rKyl7Y29u''@;'; put 'put ''c3QgSj1SW1BbTl1dO0omJkoucHJvdG90eXBlJiYkKEoucHJvdG90eXBlLFJ0KEoucHJvdG90eXBlKSxCKX19KFAsUil9KSxPLl9fbG9hZF9wYXRjaCgiY3VzdG9tRWxlbWVudHMiLChSLEIsUCk9PnshZnVuY3Rpb24gbyhPLFIpe2NvbnN0e2lzQnJvd3NlcjpCLGlzTWl4OlB9PVIuZ2V0R2xv''@;'; put 'put ''YmFsT2JqZWN0cygpOyhCfHxQKSYmTy5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIE8mJlIucGF0Y2hDYWxsYmFja3MoUixPLmN1c3RvbUVsZW1lbnRzLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNr''@;'; put 'put ''IiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIiwiZm9ybUFzc29jaWF0ZWRDYWxsYmFjayIsImZvcm1EaXNhYmxlZENhbGxiYWNrIiwiZm9ybVJlc2V0Q2FsbGJhY2siLCJmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2siXSl9KFIsUCl9KSxPLl9fbG9hZF9wYXRj''@;'; put 'put ''aCgiWEhSIiwoUixCKT0+eyFmdW5jdGlvbiBTdCh1dCl7Y29uc3QgYnQ9dXQuWE1MSHR0cFJlcXVlc3Q7aWYoIWJ0KXJldHVybjtjb25zdCBFdD1idC5wcm90b3R5cGU7bGV0IEd0PUV0W3BdLEJ0PUV0W2RdO2lmKCFHdCl7Y29uc3QgeHQ9dXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtp''@;'; put 'put ''Zih4dCl7Y29uc3QgeXQ9eHQucHJvdG90eXBlO0d0PXl0W3BdLEJ0PXl0W2RdfX1jb25zdCBvbj0icmVhZHlzdGF0ZWNoYW5nZSIsVnQ9InNjaGVkdWxlZCI7ZnVuY3Rpb24gbXQoeHQpe2NvbnN0IHl0PXh0LmRhdGEsT3Q9eXQudGFyZ2V0O090W290XT0hMSxPdFtsdF09ITE7Y29uc3Qgbm49''@;'; put 'put ''T3RbSl07R3R8fChHdD1PdFtwXSxCdD1PdFtkXSksbm4mJkJ0LmNhbGwoT3Qsb24sbm4pO2NvbnN0IFp0PU90W0pdPSgpPT57aWYoT3QucmVhZHlTdGF0ZT09PU90LkRPTkUpaWYoIXl0LmFib3J0ZWQmJk90W290XSYmeHQuc3RhdGU9PT1WdCl7Y29uc3QgYXQ9T3RbQi5fX3N5bWJvbF9fKCJs''@;'; put 'put ''b2FkZmFsc2UiKV07aWYoMCE9PU90LnN0YXR1cyYmYXQmJmF0Lmxlbmd0aD4wKXtjb25zdCBTPXh0Lmludm9rZTt4dC5pbnZva2U9ZnVuY3Rpb24oKXtjb25zdCBqPU90W0IuX19zeW1ib2xfXygibG9hZGZhbHNlIildO2ZvcihsZXQgaHQ9MDtodDxqLmxlbmd0aDtodCsrKWpbaHRdPT09eHQm''@;'; put 'put ''Jmouc3BsaWNlKGh0LDEpOyF5dC5hYm9ydGVkJiZ4dC5zdGF0ZT09PVZ0JiZTLmNhbGwoeHQpfSxhdC5wdXNoKHh0KX1lbHNlIHh0Lmludm9rZSgpfWVsc2UheXQuYWJvcnRlZCYmITE9PT1PdFtvdF0mJihPdFtsdF09ITApfTtyZXR1cm4gR3QuY2FsbChPdCxvbixadCksT3RbUF18fChPdFtQ''@;'; put 'put ''XT14dCksV3QuYXBwbHkoT3QseXQuYXJncyksT3Rbb3RdPSEwLHh0fWZ1bmN0aW9uIHEoKXt9ZnVuY3Rpb24gVXQoeHQpe2NvbnN0IHl0PXh0LmRhdGE7cmV0dXJuIHl0LmFib3J0ZWQ9ITAsSXQuYXBwbHkoeXQudGFyZ2V0LHl0LmFyZ3MpfWNvbnN0IEp0PXJ0KEV0LCJvcGVuIiwoKT0+ZnVu''@;'; put 'put ''Y3Rpb24oeHQseXQpe3JldHVybiB4dFtOXT0wPT15dFsyXSx4dFtzdF09eXRbMV0sSnQuYXBwbHkoeHQseXQpfSksSHQ9eCgiZmV0Y2hUYXNrQWJvcnRpbmciKSxjdD14KCJmZXRjaFRhc2tTY2hlZHVsaW5nIiksV3Q9cnQoRXQsInNlbmQiLCgpPT5mdW5jdGlvbih4dCx5dCl7aWYoITA9PT1C''@;'; put 'put ''LmN1cnJlbnRbY3RdfHx4dFtOXSlyZXR1cm4gV3QuYXBwbHkoeHQseXQpO3tjb25zdCBPdD17dGFyZ2V0Onh0LHVybDp4dFtzdF0saXNQZXJpb2RpYzohMSxhcmdzOnl0LGFib3J0ZWQ6ITF9LG5uPUYoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLHEsT3QsbXQsVXQpO3h0JiYhMD09PXh0W2x0XSYm''@;'; put 'put ''IU90LmFib3J0ZWQmJm5uLnN0YXRlPT09VnQmJm5uLmludm9rZSgpfX0pLEl0PXJ0KEV0LCJhYm9ydCIsKCk9PmZ1bmN0aW9uKHh0LHl0KXtjb25zdCBPdD1mdW5jdGlvbiBrdCh4dCl7cmV0dXJuIHh0W1BdfSh4dCk7aWYoT3QmJiJzdHJpbmciPT10eXBlb2YgT3QudHlwZSl7aWYobnVsbD09''@;'; put 'put ''T3QuY2FuY2VsRm58fE90LmRhdGEmJk90LmRhdGEuYWJvcnRlZClyZXR1cm47T3Quem9uZS5jYW5jZWxUYXNrKE90KX1lbHNlIGlmKCEwPT09Qi5jdXJyZW50W0h0XSlyZXR1cm4gSXQuYXBwbHkoeHQseXQpfSl9KFIpO2NvbnN0IFA9eCgieGhyVGFzayIpLE49eCgieGhyU3luYyIpLEo9eCgi''@;'; put 'put ''eGhyTGlzdGVuZXIiKSxvdD14KCJ4aHJTY2hlZHVsZWQiKSxzdD14KCJ4aHJVUkwiKSxsdD14KCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSksTy5fX2xvYWRfcGF0Y2goImdlb2xvY2F0aW9uIixSPT57Ui5uYXZpZ2F0b3ImJlIubmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZmdW5jdGlvbiBi''@;'; put 'put ''KE8sUil7Y29uc3QgQj1PLmNvbnN0cnVjdG9yLm5hbWU7Zm9yKGxldCBQPTA7UDxSLmxlbmd0aDtQKyspe2NvbnN0IE49UltQXSxKPU9bTl07aWYoSil7aWYoIUwoZShPLE4pKSljb250aW51ZTtPW05dPShzdD0+e2NvbnN0IGx0PWZ1bmN0aW9uKCl7cmV0dXJuIHN0LmFwcGx5KHRoaXMsVChh''@;'; put 'put ''cmd1bWVudHMsQisiLiIrTikpfTtyZXR1cm4gZ3QobHQsc3QpLGx0fSkoSil9fX0oUi5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSksTy5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsKFIsQik9PntmdW5j''@;'; put 'put ''dGlvbiBQKE4pe3JldHVybiBmdW5jdGlvbihKKXt0bihSLE4pLmZvckVhY2goc3Q9Pntjb25zdCBsdD1SLlByb21pc2VSZWplY3Rpb25FdmVudDtpZihsdCl7Y29uc3QgU3Q9bmV3IGx0KE4se3Byb21pc2U6Si5wcm9taXNlLHJlYXNvbjpKLnJlamVjdGlvbn0pO3N0Lmludm9rZShTdCl9fSl9''@;'; put 'put ''fVIuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoQlt4KCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1QKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxCW3goInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPVAoInJlamVjdGlvbmhhbmRsZWQiKSl9KSxPLl9fbG9hZF9wYXRjaCgi''@;'; put 'put ''cXVldWVNaWNyb3Rhc2siLChSLEIsUCk9PnshZnVuY3Rpb24gRW4oTyxSKXtSLnBhdGNoTWV0aG9kKE8sInF1ZXVlTWljcm90YXNrIixCPT5mdW5jdGlvbihQLE4pe1pvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygicXVldWVNaWNyb3Rhc2siLE5bMF0pfSl9KFIsUCl9KX0obW4pfSw5''@;'; put 'put ''MjU2ODooYyxsLHQpPT57InVzZSBzdHJpY3QiO2NvbnN0IG49dCg4MjU3NCk7SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cz1mdW5jdGlvbihJKXtsZXQgTT10aGlzLnJlc29sdmVkT3B0aW9ucygpLFQ9ZnVuY3Rpb24gQyhJKXt2YXIgWixldCx0dCxwdCxkdCxN''@;'; put 'put ''PUkuYXZhaWxhYmxlRm9ybWF0cyxUPUkudGltZUZvcm1hdHMsYj1JLmRhdGVGb3JtYXRzLEw9SS5tZWRpdW0sVT1bXSxfPVtdLFY9W107ZnVuY3Rpb24gWShYLHJ0KXt2YXIgTXQ9bmV3IEFycmF5KChYLm1hdGNoKC9NL2cpfHxbXSkubGVuZ3RoKzEpLGd0PW5ldyBBcnJheSgoWC5tYXRjaCgv''@;'; put 'put ''RS9nKXx8W10pLmxlbmd0aCsxKTtyZXR1cm4gTXQubGVuZ3RoPjImJihydD1ydC5yZXBsYWNlKC8oTXxMKSsvLE10LmpvaW4oIiQxIikpKSxndC5sZW5ndGg+MiYmKHJ0PXJ0LnJlcGxhY2UoLyhbRWVjXSkrLyxndC5qb2luKCIkMSIpKSkscnR9Zm9yKFogaW4gTSlNLmhhc093blByb3BlcnR5''@;'; put 'put ''KFopJiYoKHR0PUEoZXQ9WShaLE1bWl0pKSkmJihVLnB1c2godHQpLEYodHQpP1YucHVzaChldCk6eCh0dCkmJl8ucHVzaChldCkpKTtmb3IocHQ9MDtwdDxfLmxlbmd0aDtwdCs9MSlmb3IoZHQ9MDtkdDxWLmxlbmd0aDtkdCs9MSkodHQ9QShldD1MLnJlcGxhY2UoInswfSIsX1twdF0pLnJl''@;'; put 'put ''cGxhY2UoInsxfSIsVltkdF0pLnJlcGxhY2UoL15bLFxzXSt8Wyxcc10rJC9naSwiIikpKSYmVS5wdXNoKHR0KTtmb3IoWiBpbiBUKVQuaGFzT3duUHJvcGVydHkoWikmJigodHQ9QShldD1ZKFosVFtaXSkpKSYmVS5wdXNoKHR0KSk7Zm9yKFogaW4gYiliLmhhc093blByb3BlcnR5KFopJiYo''@;'; put 'put ''KHR0PUEoZXQ9WShaLGJbWl0pKSkmJlUucHVzaCh0dCkpO3JldHVybiBVfShuLmRhdGUuZm9ybWF0cyksYj17fTtmb3IodmFyIEwgaW4gZilzLmNhbGwoZixMKSYmKGJbIltbIitMKyJdXSJdPU1bTF0pO2xldCBaPWZ1bmN0aW9uIGkoSSxNLFQpe2Zvcih2YXIgXyxkdD0tMS8wLFY9MCxZPU0u''@;'; put 'put ''bGVuZ3RoO1Y8WTspe3ZhciBYPU1bVl0scnQ9MDtmb3IodmFyIE10IGluIGYpaWYocy5jYWxsKGYsTXQpKXt2YXIgZ3Q9SVsiW1siK010KyJdXSJdLGp0PXMuY2FsbChYLE10KT9YW010XTp2b2lkIDA7aWYodm9pZCAwPT09Z3QmJnZvaWQgMCE9PWp0KXJ0LT0yMDtlbHNlIGlmKHZvaWQgMCE9''@;'; put 'put ''PWd0JiZ2b2lkIDA9PT1qdClydC09MTIwO2Vsc2V7dmFyIE50PVsiMi1kaWdpdCIsIm51bWVyaWMiLCJuYXJyb3ciLCJzaG9ydCIsImxvbmciXSxfdD1hLmNhbGwoTnQsZ3QpLHJuPWEuY2FsbChOdCxqdCksTHQ9TWF0aC5tYXgoTWF0aC5taW4ocm4tX3QsMiksLTIpO1QmJigoIm51bWVyaWMi''@;'; put 'put ''PT09Z3R8fCIyLWRpZ2l0Ij09PWd0KSYmIm51bWVyaWMiIT09anQmJiIyLWRpZ2l0IiE9PWp0fHwibnVtZXJpYyIhPT1ndCYmIjItZGlnaXQiIT09Z3QmJigiMi1kaWdpdCI9PT1qdHx8Im51bWVyaWMiPT09anQpKSYmKHJ0LT04KSwyPT09THQ/cnQtPTY6MT09PUx0P3J0LT0zOi0xPT09THQ/''@;'; put 'put ''cnQtPTY6LTI9PT1MdCYmKHJ0LT04KX19cnQ+ZHQmJihkdD1ydCxfPVgpLFYrK31yZXR1cm4gX30oYixUKTtyZXR1cm4gZnVuY3Rpb24gZShJLE0pe2lmKCFpc0Zpbml0ZShNKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB2YWxpZCBkYXRlIHBhc3NlZCB0byBmb3JtYXRUb1BhcnRz''@;'; put 'put ''Iik7Zm9yKHZhciBfLFQ9ImVuLVVTIixiPUkucGF0dGVybixaPShuZXcgSW50bC5OdW1iZXJGb3JtYXQoW1RdLHt1c2VHcm91cGluZzohMX0pLG5ldyBJbnRsLk51bWJlckZvcm1hdChbVF0se21pbmltdW1JbnRlZ2VyRGlnaXRzOjIsdXNlR3JvdXBpbmc6ITF9KSxmdW5jdGlvbiB2KEksTSxU''@;'; put 'put ''KXt2YXIgYj1uZXcgRGF0ZShJKSxMPSJnZXQiKyhUfHwiIik7cmV0dXJueyJbW3dlZWtkYXldXSI6YltMKyJEYXkiXSgpLCJbW2VyYV1dIjorKGJbTCsiRnVsbFllYXIiXSgpPj0wKSwiW1t5ZWFyXV0iOmJbTCsiRnVsbFllYXIiXSgpLCJbW21vbnRoXV0iOmJbTCsiTW9udGgiXSgpLCJbW2Rh''@;'; put 'put ''eV1dIjpiW0wrIkRhdGUiXSgpLCJbW2hvdXJdXSI6YltMKyJIb3VycyJdKCksIltbbWludXRlXV0iOmJbTCsiTWludXRlcyJdKCksIltbc2Vjb25kXV0iOmJbTCsiU2Vjb25kcyJdKCksIltbaW5EU1RdXSI6ITF9fShNKSksZXQ9ImdyZWdvcnkiLHR0PW4uZGF0ZS5jYWxlbmRhcnMscHQ9W10s''@;'; put 'put ''ZHQ9L3soW159XSspfS9nLFY9MDtudWxsIT09KF89ZHQuZXhlYyhiKSk7KXtWPF8uaW5kZXgmJnB0LnB1c2goe3R5cGU6InNlcGFyYXRvciIsdmFsdWU6Yi5zdWJzdHIoVixfLmluZGV4LVYpfSk7dmFyIFk9X1sxXSxYPW51bGw7aWYocy5jYWxsKEksWSkpe3ZhciBydCxNdD1JW1ldLGd0PVpb''@;'; put 'put ''IltbIitZKyJdXSJdO2lmKCJ5ZWFyIj09PVkmJmd0PD0wP2d0PTEtZ3Q6Im1vbnRoIj09PVk/Z3QrKzoiaG91ciI9PT1ZJiYhMD09PUlbIltbaG91cjEyXV0iXSYmKHJ0PShndCU9MTIpIT09WlsiW1siK1krIl1dIl0sMD09PWd0JiYhMD09PUlbIltbaG91ck5vMF1dIl0mJihndD0xMikpLCJu''@;'; put 'put ''dW1lcmljIj09PU10KVg9Z3Q7ZWxzZSBpZigiMi1kaWdpdCI9PT1NdCkoWD1ndCkubGVuZ3RoPjImJihYPVguc2xpY2UoLTIpKTtlbHNlIGlmKE10IGluIHUpc3dpdGNoKFkpe2Nhc2UibW9udGgiOlg9cCh0dCxldCwibW9udGhzIixNdCxaWyJbWyIrWSsiXV0iXSk7YnJlYWs7Y2FzZSJ3ZWVr''@;'; put 'put ''ZGF5Ijp0cnl7WD1wKHR0LGV0LCJkYXlzIixNdCxaWyJbWyIrWSsiXV0iXSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB3ZWVrZGF5IGRhdGEgZm9yIGxvY2FsZSAiK1QpfWJyZWFrO2Nhc2UidGltZVpvbmVOYW1lIjpYPSIiO2JyZWFrO2RlZmF1bHQ6WD1aWyJbWyIr''@;'; put 'put ''WSsiXV0iXX19ZWxzZSJhbXBtIj09PVkmJihYPXAodHQsZXQsImRheVBlcmlvZHMiLHJ0PyJwbSI6ImFtIikpO251bGwhPT1YJiYocHQucHVzaCh7dHlwZTpfWzFdLHZhbHVlOlh9KSxWPV8uaW5kZXgrX1swXS5sZW5ndGgpfXJldHVybiBWPGIubGVuZ3RoJiZwdC5wdXNoKHt0eXBlOiJzZXBh''@;'; put 'put ''cmF0b3IiLHZhbHVlOmIuc3Vic3RyKFYpfSkscHR9KFosSSl9O3ZhciBzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1BcnJheS5wcm90b3R5cGUuaW5kZXhPZix1PU9iamVjdC5jcmVhdGUobnVsbCx7bmFycm93Ont9LHNob3J0Ont9LGxvbmc6e319KSxmPXt3ZWVrZGF5Olsi''@;'; put 'put ''bmFycm93Iiwic2hvcnQiLCJsb25nIl0sZXJhOlsibmFycm93Iiwic2hvcnQiLCJsb25nIl0seWVhcjpbIjItZGlnaXQiLCJudW1lcmljIl0sbW9udGg6WyIyLWRpZ2l0IiwibnVtZXJpYyIsIm5hcnJvdyIsInNob3J0IiwibG9uZyJdLGRheTpbIjItZGlnaXQiLCJudW1lcmljIl0saG91cjpb''@;'; put 'put ''IjItZGlnaXQiLCJudW1lcmljIl0sbWludXRlOlsiMi1kaWdpdCIsIm51bWVyaWMiXSxzZWNvbmQ6WyIyLWRpZ2l0IiwibnVtZXJpYyJdLHRpbWVab25lTmFtZTpbInNob3J0IiwibG9uZyJdfTtmdW5jdGlvbiBwKEksTSxULGIsTCl7dmFyIFU9SVtNXSYmSVtNXVtUXT9JW01dW1RdOkkuZ3Jl''@;'; put 'put ''Z29yeVtUXSxaPXtuYXJyb3c6WyJzaG9ydCIsImxvbmciXSxzaG9ydDpbImxvbmciLCJuYXJyb3ciXSxsb25nOlsic2hvcnQiLCJuYXJyb3ciXX0sZXQ9cy5jYWxsKFUsYik/VVtiXTpzLmNhbGwoVSxaW2JdWzBdKT9VW1pbYl1bMF1dOlVbWltiXVsxXV07cmV0dXJuIG51bGwhPUw/ZXRbTF06''@;'; put 'put ''ZXR9dmFyIGQ9Lyg/OltFZWNdezEsNn18R3sxLDV9fCg/Olt5WXVdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18YXxbaGtIS117MSwyfXxtezEsMn18c3sxLDJ9fHp7MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2cseT0vW1F4WFZPdlpBU2pnRkR3V0lRcUhdLyxFPXttb250aDpb''@;'; put 'put ''Im51bWVyaWMiLCIyLWRpZ2l0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il0sd2Vla2RheTpbInNob3J0Iiwic2hvcnQiLCJzaG9ydCIsImxvbmciLCJuYXJyb3ciXSxlcmE6WyJzaG9ydCIsInNob3J0Iiwic2hvcnQiLCJsb25nIiwibmFycm93Il19LGc9WyJ3ZWVrZGF5IiwiZXJhIiwieWVh''@;'; put 'put ''ciIsIm1vbnRoIiwiZGF5Il0sRD1bImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJ0aW1lWm9uZU5hbWUiXTtmdW5jdGlvbiBGKEkpe2Zvcih2YXIgTT0wO008RC5sZW5ndGg7TSs9MSlpZihJLmhhc093blByb3BlcnR5KERbTV0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHgoSSl7Zm9y''@;'; put 'put ''KHZhciBNPTA7TTxnLmxlbmd0aDtNKz0xKWlmKEkuaGFzT3duUHJvcGVydHkoZ1tNXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQShJKXtpZigheS50ZXN0KEkpKXt2YXIgTT17fTtyZXR1cm4gTS5wYXR0ZXJuPUkucmVwbGFjZShkLGZ1bmN0aW9uKFQpe3N3aXRjaChULmNoYXJBdCgw''@;'; put 'put ''KSl7Y2FzZSJFIjpjYXNlImUiOmNhc2UiYyI6cmV0dXJuIE0ud2Vla2RheT1FLndlZWtkYXlbVC5sZW5ndGgtMV0sInt3ZWVrZGF5fSI7Y2FzZSJHIjpyZXR1cm4gTS5lcmE9RS5lcmFbVC5sZW5ndGgtMV0sIntlcmF9IjtjYXNlInkiOmNhc2UiWSI6Y2FzZSJ1IjpjYXNlIlUiOnJldHVybiBN''@;'; put 'put ''LnllYXI9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsInt5ZWFyfSI7Y2FzZSJNIjpjYXNlIkwiOnJldHVybiBNLm1vbnRoPUUubW9udGhbVC5sZW5ndGgtMV0sInttb250aH0iO2Nhc2UiZCI6cmV0dXJuIE0uZGF5PTI9PT1ULmxlbmd0aD8iMi1kaWdpdCI6Im51bWVyaWMiLCJ7''@;'; put 'put ''ZGF5fSI7Y2FzZSJhIjpyZXR1cm4ie2FtcG19IjtjYXNlImgiOmNhc2UiSCI6Y2FzZSJrIjpjYXNlIksiOnJldHVybiBNLmhvdXI9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0IjoibnVtZXJpYyIsIntob3VyfSI7Y2FzZSJtIjpyZXR1cm4gTS5taW51dGU9Mj09PVQubGVuZ3RoPyIyLWRpZ2l0Ijoi''@;'; put 'put ''bnVtZXJpYyIsInttaW51dGV9IjtjYXNlInMiOnJldHVybiBNLnNlY29uZD0yPT09VC5sZW5ndGg/IjItZGlnaXQiOiJudW1lcmljIiwie3NlY29uZH0iO2Nhc2UieiI6cmV0dXJuIE0udGltZVpvbmVOYW1lPVQubGVuZ3RoPDQ/InNob3J0IjoibG9uZyIsInt0aW1lWm9uZU5hbWV9In19KSxN''@;'; put 'put ''LnBhdHRlcm49TS5wYXR0ZXJuLnJlcGxhY2UoLycoW14nXSopJy9nLGZ1bmN0aW9uKFQsYil7cmV0dXJuIGJ8fCInIn0pLE0ucGF0dGVybi5pbmRleE9mKCJ7YW1wbX0iKT4tMSYmKE0uaG91cjEyPSEwLE0ucGF0dGVybjEyPU0ucGF0dGVybixNLnBhdHRlcm49TS5wYXR0ZXJuLnJlcGxhY2Uo''@;'; put 'put ''InthbXBtfSIsIiIpLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKSksTX19fSw2NjM3NDooYyxsLHQpPT57dCg4Mjk3NSksdCg0Nzg5OSksdCg5Mzg2MyksdCg0NTcwKSx0KDk2NTExKSx0KDk1ODUzKSx0KDk3MDc1KSx0KDM1MDQpLHQoNTQ5MTMpLHQo''@;'; put 'put ''Mzk4MTMpLHQoODY1MTEpLHQoNTg4ODgpLHQoODE0NDkpLHQoNDc4NzQpLHQoMzQ2MDkpLHQoMzM3MDYpLHQoMTk2MjApLHQoNTc3NjIpLHQoMTUxNDQpLHQoNzUzNjkpLHQoNzYyMDkpLHQoOTUxNjUpLHQoNTYwOTQpfSwzMjg5OTooYyxsLHQpPT57dCgxMzI5MiksdCg1MjM0NiksdCg5NDI5''@;'; put 'put ''KSx0KDc4NDkpLHQoNDg5NTEpLGMuZXhwb3J0cz1EYXRlfSwzOTI3MTooYyxsLHQpPT57dCg2NTA0OSksdCg3MDQ4OSksdCg5NTUwMiksdCg1NjA5NCl9LDIyOTEzOihjLGwsdCk9Pnt0KDE3NDgyKSx0KDgyOTc1KSx0KDM1ODkwKSx0KDkzMzg2KSx0KDU2MDk0KX0sODgwMjU6KGMsbCx0KT0+''@;'; put 'put ''e3QoNzY2NDgpLHQoNTU3NzEpLHQoODIzOTIpLHQoNzIzMzUpLHQoNzQ4OTYpLHQoOTQ1MjEpLHQoMjkxNDcpLHQoNDEzMTgpLHQoODQzNTIpLHQoMTUzMjcpLHQoNTc1MDkpLHQoMTU5MDkpLHQoNzk1ODQpLHQoNDAzNDUpLHQoOTkxMzQpLHQoNjc5MDEpLHQoNDY1OTIpLHQoNTYwOTQpfSwx''@;'; put 'put ''NTYyNjooYyxsLHQpPT57dCg2NDUwOSksdCgzNzcyNyksdCg2NzAxKSx0KDM0NDE5KSx0KDkxOTMzKSx0KDU1NTM4KSx0KDM5NDk3KSx0KDQxMDQpLHQoNjAyMTApLHQoNTY1NzYpLHQoODQ0MzcpLHQoODgwNTApLHQoNTYwOTQpfSw1NDk0MDooYyxsLHQpPT57dCg5OTY1MCksdCg5MzUpLHQo''@;'; put 'put ''NjYwNjQpLHQoODk0NDgpLHQoMjI2NDIpLHQoNTNlMyksdCg4ODY0NyksdCg4MTg5NSksdCg0ODIzNiksdCg3MzgyMiksdCgxNTU3MiksdCg2OTMxOCksdCg2NTAzMiksdCg3OTA3MyksdCgxMTQzMCksdCgzODQ1MSksdCgxODEzMiksdCgxNzQ4MiksdCg1NjA5NCl9LDI2MjAzOihjLGwsdCk9''@;'; put 'put ''Pnt0KDk2MTA4KSx0KDU2MDk0KX0sNTI0NDQ6KGMsbCx0KT0+e3QoOTA1NzEpLHQoNTYwOTQpfSw2NTg0NjooYyxsLHQpPT57dCg3MTAzKSx0KDgyNTg2KSx0KDkyNTUyKSx0KDQzNzYpLHQoNzUxNTMpLHQoMTE4NzkpLHQoNTI2NTApLHQoMzExMDQpLHQoMjE4ODMpLHQoMzU0MzMpLHQoNTVl''@;'; put 'put ''MyksdCgxNTkzMiksdCg1NDQzKSx0KDI2MzE2KSx0KDU2MDk0KX0sNDI0NjooYyxsLHQpPT57dCg4MzAxKSx0KDk0MTE2KSx0KDc4NjA0KSx0KDM5NjM4KSx0KDQwNDApLHQoNjgzMDUpLHQoNzQ3MDEpLHQoMjAzNDEpLHQoNTYwOTQpfSwxMDc0MzooYyxsLHQpPT57dCgxNzQ4MiksdCg4Mjk3''@;'; put 'put ''NSksdCgzNTg5MCksdCg3MTYzMiksdCg1NjA5NCl9LDU2NDQyOihjLGwsdCk9Pnt0KDEyMjIwKSx0KDIzNDgzKSx0KDIwOTU3KSx0KDgyOTc1KSx0KDMyNDA1KSx0KDE3MjI0KSx0KDI4ODcyKSx0KDQ0ODk0KSx0KDEwMTc3KSx0KDY0OTc5KSx0KDg5MDExKSx0KDU0NTkxKSx0KDQ3MzM0KSx0''@;'; put 'put ''KDcwODMpLHQoNjkyMTMpLHQoMzg0MzcpLHQoNjIyMjApLHQoNzY1NDkpLHQoNDI4MTgpLHQoMjg1NDMpLHQoMzU1OSksdCg4NDE1MyksdCg0MDQwKSx0KDY4MzA1KSx0KDc0NzAxKSx0KDIwMzQxKSx0KDU2MDk0KX0sMTg4ODM6KGMsbCx0KT0+e3QoOTk2NTApLHQoMTc0ODIpLHQoNTYwOTQp''@;'; put 'put ''fSw5MzUzOihjLGwsdCk9Pnt0KDc3NDkxKSx0KDc0OTA3KSx0KDc5MTAwKSx0KDE5MjY5KSx0KDkxMzE5KSx0KDc5NzMyKSx0KDExNzYpLHQoMzEwNyksdCg2MTY5MSksdCg1NjA5NCl9LDYzMzg3OmM9PntjLmV4cG9ydHM9ZnVuY3Rpb24obCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGwpdGhy''@;'; put 'put ''b3cgVHlwZUVycm9yKGwrIiBpcyBub3QgYSBmdW5jdGlvbiEiKTtyZXR1cm4gbH19LDE1MTIyOihjLGwsdCk9Pnt2YXIgbj10KDU1MDg5KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJiJOdW1iZXIiIT1uKGUpKXRocm93IFR5cGVFcnJvcihzKTtyZXR1''@;'; put 'put ''cm4rZX19LDg4MTg0OihjLGwsdCk9Pnt2YXIgbj10KDY3NTc0KSgidW5zY29wYWJsZXMiKSxlPUFycmF5LnByb3RvdHlwZTtudWxsPT1lW25dJiZ0KDMzMzQxKShlLG4se30pLGMuZXhwb3J0cz1mdW5jdGlvbihzKXtlW25dW3NdPSEwfX0sMjg4Mjg6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgbj10KDkxMjEyKSghMCk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxhKXtyZXR1cm4gcysoYT9uKGUscykubGVuZ3RoOjEpfX0sMTY0NDA6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsLHQsbixlKXtpZighKGwgaW5zdGFuY2VvZiB0KXx8dm9pZCAwIT09ZSYmZSBpbiBsKXRocm93IFR5cGVF''@;'; put 'put ''cnJvcihuKyI6IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiBsfX0sNDIyODooYyxsLHQpPT57dmFyIG49dCg0MzMwNSk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFuKGUpKXRocm93IFR5cGVFcnJvcihlKyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gZX19LDg0NDM4Oihj''@;'; put 'put ''LGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgxODI3MCksZT10KDcwMTU3KSxzPXQoODE0ODUpO2MuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbih1LGYpe3ZhciBpPW4odGhpcyksdj1zKGkubGVuZ3RoKSxwPWUodSx2KSxkPWUoZix2KSx5PWFyZ3VtZW50cy5sZW5ndGg+Mj9h''@;'; put 'put ''cmd1bWVudHNbMl06dm9pZCAwLEU9TWF0aC5taW4oKHZvaWQgMD09PXk/djplKHksdikpLWQsdi1wKSxnPTE7Zm9yKGQ8cCYmcDxkK0UmJihnPS0xLGQrPUUtMSxwKz1FLTEpO0UtLSA+MDspZCBpbiBpP2lbcF09aVtkXTpkZWxldGUgaVtwXSxwKz1nLGQrPWc7cmV0dXJuIGl9fSwzNTU2NDoo''@;'; put 'put ''YyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMTgyNzApLGU9dCg3MDE1Nykscz10KDgxNDg1KTtjLmV4cG9ydHM9ZnVuY3Rpb24odSl7Zm9yKHZhciBmPW4odGhpcyksaT1zKGYubGVuZ3RoKSx2PWFyZ3VtZW50cy5sZW5ndGgscD1lKHY+MT9hcmd1bWVudHNbMV06dm9pZCAwLGkpLGQ9''@;'; put 'put ''dj4yP2FyZ3VtZW50c1syXTp2b2lkIDAseT12b2lkIDA9PT1kP2k6ZShkLGkpO3k+cDspZltwKytdPXU7cmV0dXJuIGZ9fSw4MDk1NjooYyxsLHQpPT57dmFyIG49dCg0ODc5MCk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyl7dmFyIGE9W107cmV0dXJuIG4oZSwhMSxhLnB1c2gsYSxzKSxhfX0s''@;'; put 'put ''NjE0NjQ6KGMsbCx0KT0+e3ZhciBuPXQoNTcyMjEpLGU9dCg4MTQ4NSkscz10KDcwMTU3KTtjLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKHUsZixpKXt2YXIgeSx2PW4odSkscD1lKHYubGVuZ3RoKSxkPXMoaSxwKTtpZihhJiZmIT1mKXtmb3IoO3A+ZDspaWYoKHk9dltk''@;'; put 'put ''KytdKSE9eSlyZXR1cm4hMH1lbHNlIGZvcig7cD5kO2QrKylpZigoYXx8ZCBpbiB2KSYmdltkXT09PWYpcmV0dXJuIGF8fGR8fDA7cmV0dXJuIWEmJi0xfX19LDY2MTc5OihjLGwsdCk9Pnt2YXIgbj10KDM1MDUyKSxlPXQoNjEyNDkpLHM9dCgxODI3MCksYT10KDgxNDg1KSx1PXQoOTMxOTEp''@;'; put 'put ''O2MuZXhwb3J0cz1mdW5jdGlvbihmLGkpe3ZhciB2PTE9PWYscD0yPT1mLGQ9Mz09Zix5PTQ9PWYsRT02PT1mLGc9NT09Znx8RSxEPWl8fHU7cmV0dXJuIGZ1bmN0aW9uKEYseCxBKXtmb3IodmFyIFUsWixDPXMoRiksST1lKEMpLE09bih4LEEsMyksVD1hKEkubGVuZ3RoKSxiPTAsTD12P0Qo''@;'; put 'put ''RixUKTpwP0QoRiwwKTp2b2lkIDA7VD5iO2IrKylpZigoZ3x8YiBpbiBJKSYmKFo9TShVPUlbYl0sYixDKSxmKSlpZih2KUxbYl09WjtlbHNlIGlmKFopc3dpdGNoKGYpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIFU7Y2FzZSA2OnJldHVybiBiO2Nhc2UgMjpMLnB1c2goVSl9ZWxz''@;'; put 'put ''ZSBpZih5KXJldHVybiExO3JldHVybiBFPy0xOmR8fHk/eTpMfX19LDY1NDM6KGMsbCx0KT0+e3ZhciBuPXQoNjMzODcpLGU9dCgxODI3MCkscz10KDYxMjQ5KSxhPXQoODE0ODUpO2MuZXhwb3J0cz1mdW5jdGlvbih1LGYsaSx2LHApe24oZik7dmFyIGQ9ZSh1KSx5PXMoZCksRT1hKGQubGVu''@;'; put 'put ''Z3RoKSxnPXA/RS0xOjAsRD1wPy0xOjE7aWYoaTwyKWZvcig7Oyl7aWYoZyBpbiB5KXt2PXlbZ10sZys9RDticmVha31pZihnKz1ELHA/ZzwwOkU8PWcpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDtwP2c+PTA6RT5n''@;'; put 'put ''O2crPUQpZyBpbiB5JiYodj1mKHYseVtnXSxnLGQpKTtyZXR1cm4gdn19LDYzNjA2OihjLGwsdCk9Pnt2YXIgbj10KDQzMzA1KSxlPXQoNzc5ODEpLHM9dCg2NzU3NCkoInNwZWNpZXMiKTtjLmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIHU7cmV0dXJuIGUoYSkmJigiZnVuY3Rpb24iPT10eXBl''@;'; put 'put ''b2YodT1hLmNvbnN0cnVjdG9yKSYmKHU9PT1BcnJheXx8ZSh1LnByb3RvdHlwZSkpJiYodT12b2lkIDApLG4odSkmJm51bGw9PT0odT11W3NdKSYmKHU9dm9pZCAwKSksdm9pZCAwPT09dT9BcnJheTp1fX0sOTMxOTE6KGMsbCx0KT0+e3ZhciBuPXQoNjM2MDYpO2MuZXhwb3J0cz1mdW5jdGlv''@;'; put 'put ''bihlLHMpe3JldHVybiBuZXcobihlKSkocyl9fSwxNTUzODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNjMzODcpLGU9dCg0MzMwNSkscz10KDI0ODc3KSxhPVtdLnNsaWNlLHU9e307Yy5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKHYpe3ZhciBwPW4odGhpcyksZD1h''@;'; put 'put ''LmNhbGwoYXJndW1lbnRzLDEpLHk9ZnVuY3Rpb24oKXt2YXIgRT1kLmNvbmNhdChhLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB5P2Z1bmN0aW9uKGksdixwKXtpZighKHYgaW4gdSkpe2Zvcih2YXIgZD1bXSx5PTA7eTx2O3krKylkW3ldPSJhWyIreSsiXSI7dVt2''@;'; put 'put ''XT1GdW5jdGlvbigiRixhIiwicmV0dXJuIG5ldyBGKCIrZC5qb2luKCIsIikrIikiKX1yZXR1cm4gdVt2XShpLHApfShwLEUubGVuZ3RoLEUpOnMocCxFLHYpfTtyZXR1cm4gZShwLnByb3RvdHlwZSkmJih5LnByb3RvdHlwZT1wLnByb3RvdHlwZSkseX19LDM0ODQ4OihjLGwsdCk9Pnt2YXIg''@;'; put 'put ''bj10KDU1MDg5KSxlPXQoNjc1NzQpKCJ0b1N0cmluZ1RhZyIpLHM9IkFyZ3VtZW50cyI9PW4oZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTtjLmV4cG9ydHM9ZnVuY3Rpb24odSl7dmFyIGYsaSx2O3JldHVybiB2b2lkIDA9PT11PyJVbmRlZmluZWQiOm51bGw9PT11PyJOdWxsIjoi''@;'; put 'put ''c3RyaW5nIj09dHlwZW9mKGk9ZnVuY3Rpb24odSxmKXt0cnl7cmV0dXJuIHVbZl19Y2F0Y2h7fX0oZj1PYmplY3QodSksZSkpP2k6cz9uKGYpOiJPYmplY3QiPT0odj1uKGYpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGYuY2FsbGVlPyJBcmd1bWVudHMiOnZ9fSw1NTA4OTpjPT57dmFyIGw9e30u''@;'; put 'put ''dG9TdHJpbmc7Yy5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCkuc2xpY2UoOCwtMSl9fSwzNjE5NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDc5NjcpLmYsZT10KDg0NzE5KSxzPXQoOTYwNjUpLGE9dCgzNTA1MiksdT10KDE2NDQwKSxmPXQoNDg3OTApLGk9''@;'; put 'put ''dCg5ODE3NSksdj10KDc0OTcwKSxwPXQoNTU3NjIpLGQ9dCgxNzYzKSx5PXQoMTI5ODgpLmZhc3RLZXksRT10KDEyODg4KSxnPWQ/Il9zIjoic2l6ZSIsRD1mdW5jdGlvbihGLHgpe3ZhciBDLEE9eSh4KTtpZigiRiIhPT1BKXJldHVybiBGLl9pW0FdO2ZvcihDPUYuX2Y7QztDPUMubilpZihD''@;'; put 'put ''Lms9PXgpcmV0dXJuIEN9O2MuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oRix4LEEsQyl7dmFyIEk9RihmdW5jdGlvbihNLFQpe3UoTSxJLHgsIl9pIiksTS5fdD14LE0uX2k9ZShudWxsKSxNLl9mPXZvaWQgMCxNLl9sPXZvaWQgMCxNW2ddPTAsbnVsbCE9VCYmZihULEEsTVtD''@;'; put 'put ''XSxNKX0pO3JldHVybiBzKEkucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgVD1FKHRoaXMseCksYj1ULl9pLEw9VC5fZjtMO0w9TC5uKUwucj0hMCxMLnAmJihMLnA9TC5wLm49dm9pZCAwKSxkZWxldGUgYltMLmldO1QuX2Y9VC5fbD12b2lkIDAsVFtnXT0wfSxkZWxldGU6''@;'; put 'put ''ZnVuY3Rpb24oTSl7dmFyIFQ9RSh0aGlzLHgpLGI9RChULE0pO2lmKGIpe3ZhciBMPWIubixVPWIucDtkZWxldGUgVC5faVtiLmldLGIucj0hMCxVJiYoVS5uPUwpLEwmJihMLnA9VSksVC5fZj09YiYmKFQuX2Y9TCksVC5fbD09YiYmKFQuX2w9VSksVFtnXS0tfXJldHVybiEhYn0sZm9yRWFj''@;'; put 'put ''aDpmdW5jdGlvbihUKXtFKHRoaXMseCk7Zm9yKHZhciBMLGI9YShULGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO0w9TD9MLm46dGhpcy5fZjspZm9yKGIoTC52LEwuayx0aGlzKTtMJiZMLnI7KUw9TC5wfSxoYXM6ZnVuY3Rpb24oVCl7cmV0dXJuISFEKEUodGhp''@;'; put 'put ''cyx4KSxUKX19KSxkJiZuKEkucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcyx4KVtnXX19KSxJfSxkZWY6ZnVuY3Rpb24oRix4LEEpe3ZhciBJLE0sQz1EKEYseCk7cmV0dXJuIEM/Qy52PUE6KEYuX2w9Qz17aTpNPXkoeCwhMCksazp4LHY6QSxwOkk9Ri5f''@;'; put 'put ''bCxuOnZvaWQgMCxyOiExfSxGLl9mfHwoRi5fZj1DKSxJJiYoSS5uPUMpLEZbZ10rKywiRiIhPT1NJiYoRi5faVtNXT1DKSksRn0sZ2V0RW50cnk6RCxzZXRTdHJvbmc6ZnVuY3Rpb24oRix4LEEpe2koRix4LGZ1bmN0aW9uKEMsSSl7dGhpcy5fdD1FKEMseCksdGhpcy5faz1JLHRoaXMuX2w9''@;'; put 'put ''dm9pZCAwfSxmdW5jdGlvbigpe2Zvcih2YXIgQz10aGlzLEk9Qy5fayxNPUMuX2w7TSYmTS5yOylNPU0ucDtyZXR1cm4gQy5fdCYmKEMuX2w9TT1NP00ubjpDLl90Ll9mKT92KDAsImtleXMiPT1JP00uazoidmFsdWVzIj09ST9NLnY6W00uayxNLnZdKTooQy5fdD12b2lkIDAsdigxKSl9LEE/''@;'; put 'put ''ImVudHJpZXMiOiJ2YWx1ZXMiLCFBLCEwKSxwKHgpfX19LDk5ODgyOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5NjA2NSksZT10KDEyOTg4KS5nZXRXZWFrLHM9dCg0MjI4KSxhPXQoNDMzMDUpLHU9dCgxNjQ0MCksZj10KDQ4NzkwKSxpPXQoNjYxNzkpLHY9dCg1NzkxNykscD10''@;'; put 'put ''KDEyODg4KSxkPWkoNSkseT1pKDYpLEU9MCxnPWZ1bmN0aW9uKHgpe3JldHVybiB4Ll9sfHwoeC5fbD1uZXcgRCl9LEQ9ZnVuY3Rpb24oKXt0aGlzLmE9W119LEY9ZnVuY3Rpb24oeCxBKXtyZXR1cm4gZCh4LmEsZnVuY3Rpb24oQyl7cmV0dXJuIENbMF09PT1BfSl9O0QucHJvdG90eXBlPXtn''@;'; put 'put ''ZXQ6ZnVuY3Rpb24oeCl7dmFyIEE9Rih0aGlzLHgpO2lmKEEpcmV0dXJuIEFbMV19LGhhczpmdW5jdGlvbih4KXtyZXR1cm4hIUYodGhpcyx4KX0sc2V0OmZ1bmN0aW9uKHgsQSl7dmFyIEM9Rih0aGlzLHgpO0M/Q1sxXT1BOnRoaXMuYS5wdXNoKFt4LEFdKX0sZGVsZXRlOmZ1bmN0aW9uKHgp''@;'; put 'put ''e3ZhciBBPXkodGhpcy5hLGZ1bmN0aW9uKEMpe3JldHVybiBDWzBdPT09eH0pO3JldHVybn5BJiZ0aGlzLmEuc3BsaWNlKEEsMSksISF+QX19LGMuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24oeCxBLEMsSSl7dmFyIE09eChmdW5jdGlvbihULGIpe3UoVCxNLEEsIl9pIiksVC5f''@;'; put 'put ''dD1BLFQuX2k9RSsrLFQuX2w9dm9pZCAwLG51bGwhPWImJmYoYixDLFRbSV0sVCl9KTtyZXR1cm4gbihNLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKFQpe2lmKCFhKFQpKXJldHVybiExO3ZhciBiPWUoVCk7cmV0dXJuITA9PT1iP2cocCh0aGlzLEEpKS5kZWxldGUoVCk6YiYmdihiLHRo''@;'; put 'put ''aXMuX2kpJiZkZWxldGUgYlt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKGIpe2lmKCFhKGIpKXJldHVybiExO3ZhciBMPWUoYik7cmV0dXJuITA9PT1MP2cocCh0aGlzLEEpKS5oYXMoYik6TCYmdihMLHRoaXMuX2kpfX0pLE19LGRlZjpmdW5jdGlvbih4LEEsQyl7dmFyIEk9ZShzKEEpLCEwKTty''@;'; put 'put ''ZXR1cm4hMD09PUk/Zyh4KS5zZXQoQSxDKTpJW3guX2ldPUMseH0sdWZzdG9yZTpnfX0sNTg5MzM6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDY3NTI2KSxlPXQoOTIxMjcpLHM9dCgyODg1OSksYT10KDk2MDY1KSx1PXQoMTI5ODgpLGY9dCg0ODc5MCksaT10KDE2NDQwKSx2PXQo''@;'; put 'put ''NDMzMDUpLHA9dCg3OTQ0OCksZD10KDk4OTMxKSx5PXQoMzg0NCksRT10KDk4ODgwKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZyxELEYseCxBLEMpe3ZhciBJPW5bZ10sTT1JLFQ9QT8ic2V0IjoiYWRkIixiPU0mJk0ucHJvdG90eXBlLEw9e30sVT1mdW5jdGlvbihfKXt2YXIgVj1iW19dO3MoYixf''@;'; put 'put ''LCJkZWxldGUiPT1fP2Z1bmN0aW9uKFkpe3JldHVybiEoQyYmIXYoWSkpJiZWLmNhbGwodGhpcywwPT09WT8wOlkpfToiaGFzIj09Xz9mdW5jdGlvbihYKXtyZXR1cm4hKEMmJiF2KFgpKSYmVi5jYWxsKHRoaXMsMD09PVg/MDpYKX06ImdldCI9PV8/ZnVuY3Rpb24oWCl7cmV0dXJuIEMmJiF2''@;'; put 'put ''KFgpP3ZvaWQgMDpWLmNhbGwodGhpcywwPT09WD8wOlgpfToiYWRkIj09Xz9mdW5jdGlvbihYKXtyZXR1cm4gVi5jYWxsKHRoaXMsMD09PVg/MDpYKSx0aGlzfTpmdW5jdGlvbihYLHJ0KXtyZXR1cm4gVi5jYWxsKHRoaXMsMD09PVg/MDpYLHJ0KSx0aGlzfSl9O2lmKCJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBNJiYoQ3x8Yi5mb3JFYWNoJiYhcChmdW5jdGlvbigpeyhuZXcgTSkuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIFo9bmV3IE0sZXQ9WltUXShDP3t9Oi0wLDEpIT1aLHR0PXAoZnVuY3Rpb24oKXtaLmhhcygxKX0pLHB0PWQoZnVuY3Rpb24oXyl7bmV3IE0oXyl9KSxkdD0hQyYmcChm''@;'; put 'put ''dW5jdGlvbigpe2Zvcih2YXIgXz1uZXcgTSxWPTU7Vi0tOylfW1RdKFYsVik7cmV0dXJuIV8uaGFzKC0wKX0pO3B0fHwoKE09RChmdW5jdGlvbihfLFYpe2koXyxNLGcpO3ZhciBZPUUobmV3IEksXyxNKTtyZXR1cm4gbnVsbCE9ViYmZihWLEEsWVtUXSxZKSxZfSkpLnByb3RvdHlwZT1iLGIu''@;'; put 'put ''Y29uc3RydWN0b3I9TSksKHR0fHxkdCkmJihVKCJkZWxldGUiKSxVKCJoYXMiKSxBJiZVKCJnZXQiKSksKGR0fHxldCkmJlUoVCksQyYmYi5jbGVhciYmZGVsZXRlIGIuY2xlYXJ9ZWxzZSBNPXguZ2V0Q29uc3RydWN0b3IoRCxnLEEsVCksYShNLnByb3RvdHlwZSxGKSx1Lk5FRUQ9ITA7cmV0''@;'; put 'put ''dXJuIHkoTSxnKSxMW2ddPU0sZShlLkcrZS5XK2UuRiooTSE9SSksTCksQ3x8eC5zZXRTdHJvbmcoTSxnLEEpLE19fSw1NjA5NDpjPT57dmFyIGw9Yy5leHBvcnRzPXt2ZXJzaW9uOiIyLjYuMTIifTsibnVtYmVyIj09dHlwZW9mIF9fZSYmKF9fZT1sKX0sNjcyMjc6KGMsbCx0KT0+eyJ1c2Ug''@;'; put 'put ''c3RyaWN0Ijt2YXIgbj10KDQ3OTY3KSxlPXQoMTE5OTYpO2MuZXhwb3J0cz1mdW5jdGlvbihzLGEsdSl7YSBpbiBzP24uZihzLGEsZSgwLHUpKTpzW2FdPXV9fSwzNTA1MjooYyxsLHQpPT57dmFyIG49dCg2MzM4Nyk7Yy5leHBvcnRzPWZ1bmN0aW9uKGUscyxhKXtpZihuKGUpLHZvaWQgMD09''@;'; put 'put ''PXMpcmV0dXJuIGU7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGUuY2FsbChzLHUpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHUsZil7cmV0dXJuIGUuY2FsbChzLHUsZil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24odSxmLGkpe3JldHVybiBlLmNhbGwocyx1''@;'; put 'put ''LGYsaSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHMsYXJndW1lbnRzKX19fSw1NTM4NTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNzk0NDgpLGU9RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSxzPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nLGE9ZnVuY3Rpb24o''@;'; put 'put ''dSl7cmV0dXJuIHU+OT91OiIwIit1fTtjLmV4cG9ydHM9bihmdW5jdGlvbigpe3JldHVybiIwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVoiIT1zLmNhbGwobmV3IERhdGUoLTUwMDAwMDAwMDAwMDAxKSl9KXx8IW4oZnVuY3Rpb24oKXtzLmNhbGwobmV3IERhdGUoTmFOKSl9KT9mdW5jdGlvbigp''@;'; put 'put ''e2lmKCFpc0Zpbml0ZShlLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciBmPXRoaXMsaT1mLmdldFVUQ0Z1bGxZZWFyKCksdj1mLmdldFVUQ01pbGxpc2Vjb25kcygpLHA9aTwwPyItIjppPjk5OTk/IisiOiIiO3JldHVybiBwKygiMDAwMDAi''@;'; put 'put ''K01hdGguYWJzKGkpKS5zbGljZShwPy02Oi00KSsiLSIrYShmLmdldFVUQ01vbnRoKCkrMSkrIi0iK2EoZi5nZXRVVENEYXRlKCkpKyJUIithKGYuZ2V0VVRDSG91cnMoKSkrIjoiK2EoZi5nZXRVVENNaW51dGVzKCkpKyI6IithKGYuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKHY+OTk/djoiMCIr''@;'; put 'put ''YSh2KSkrIloifTpzfSwyMDEwNzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDIyOCksZT10KDgzMDQ4KSxzPSJudW1iZXIiO2MuZXhwb3J0cz1mdW5jdGlvbihhKXtpZigic3RyaW5nIiE9PWEmJmEhPT1zJiYiZGVmYXVsdCIhPT1hKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0''@;'; put 'put ''IGhpbnQiKTtyZXR1cm4gZShuKHRoaXMpLGEhPXMpfX0sMzM0NDpjPT57Yy5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKG51bGw9PWwpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitsKTtyZXR1cm4gbH19LDE3NjM6KGMsbCx0KT0+e2MuZXhwb3J0cz0hdCg3OTQ0OCko''@;'; put 'put ''ZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw0NjAzNDooYyxsLHQpPT57dmFyIG49dCg0MzMwNSksZT10KDY3NTI2KS5kb2N1bWVudCxzPW4oZSkmJm4oZS5jcmVhdGVFbGVtZW50KTtjLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHM/ZS5jcmVhdGVFbGVtZW50KGEpOnt9fX0sODYxNDA6Yz0+e2MuZXhwb3J0cz0iY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9m''@;'; put 'put ''Ii5zcGxpdCgiLCIpfSwxNTk2OTooYyxsLHQpPT57dmFyIG49dCg1MTMxMSksZT10KDEwNjApLHM9dCg4NDQ5KTtjLmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIHU9bihhKSxmPWUuZjtpZihmKWZvcih2YXIgZCxpPWYoYSksdj1zLmYscD0wO2kubGVuZ3RoPnA7KXYuY2FsbChhLGQ9aVtwKytd''@;'; put 'put ''KSYmdS5wdXNoKGQpO3JldHVybiB1fX0sOTIxMjc6KGMsbCx0KT0+e3ZhciBuPXQoNjc1MjYpLGU9dCg1NjA5NCkscz10KDMzMzQxKSxhPXQoMjg4NTkpLHU9dCgzNTA1MiksZj0icHJvdG90eXBlIixpPWZ1bmN0aW9uKHYscCxkKXt2YXIgSSxNLFQsYix5PXYmaS5GLEU9diZpLkcsRD12Jmku''@;'; put 'put ''UCxGPXYmaS5CLHg9RT9uOnYmaS5TP25bcF18fChuW3BdPXt9KToobltwXXx8e30pW2ZdLEE9RT9lOmVbcF18fChlW3BdPXt9KSxDPUFbZl18fChBW2ZdPXt9KTtmb3IoSSBpbiBFJiYoZD1wKSxkKVQ9KChNPSF5JiZ4JiZ2b2lkIDAhPT14W0ldKT94OmQpW0ldLGI9RiYmTT91KFQsbik6RCYm''@;'; put 'put ''ImZ1bmN0aW9uIj09dHlwZW9mIFQ/dShGdW5jdGlvbi5jYWxsLFQpOlQseCYmYSh4LEksVCx2JmkuVSksQVtJXSE9VCYmcyhBLEksYiksRCYmQ1tJXSE9VCYmKENbSV09VCl9O24uY29yZT1lLGkuRj0xLGkuRz0yLGkuUz00LGkuUD04LGkuQj0xNixpLlc9MzIsaS5VPTY0LGkuUj0xMjgsYy5l''@;'; put 'put ''eHBvcnRzPWl9LDI1MjAzOihjLGwsdCk9Pnt2YXIgbj10KDY3NTc0KSgibWF0Y2giKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHM9Ly4vO3RyeXsiLy4vIltlXShzKX1jYXRjaHt0cnl7cmV0dXJuIHNbbl09ITEsISIvLi8iW2VdKHMpfWNhdGNoe319cmV0dXJuITB9fSw3OTQ0ODpjPT57''@;'; put 'put ''Yy5leHBvcnRzPWZ1bmN0aW9uKGwpe3RyeXtyZXR1cm4hIWwoKX1jYXRjaHtyZXR1cm4hMH19fSw2OTIyODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoOTQxMTYpO3ZhciBuPXQoMjg4NTkpLGU9dCgzMzM0MSkscz10KDc5NDQ4KSxhPXQoMzM0NCksdT10KDY3NTc0KSxmPXQoNjk2MDApLGk9''@;'; put 'put ''dSgic3BlY2llcyIpLHY9IXMoZnVuY3Rpb24oKXt2YXIgZD0vLi87cmV0dXJuIGQuZXhlYz1mdW5jdGlvbigpe3ZhciB5PVtdO3JldHVybiB5Lmdyb3Vwcz17YToiNyJ9LHl9LCI3IiE9PSIiLnJlcGxhY2UoZCwiJDxhPiIpfSkscD1mdW5jdGlvbigpe3ZhciBkPS8oPzopLyx5PWQuZXhlYztk''@;'; put 'put ''LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4geS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBFPSJhYiIuc3BsaXQoZCk7cmV0dXJuIDI9PT1FLmxlbmd0aCYmImEiPT09RVswXSYmImIiPT09RVsxXX0oKTtjLmV4cG9ydHM9ZnVuY3Rpb24oZCx5LEUpe3ZhciBnPXUoZCksRD0hcyhmdW5jdGlv''@;'; put 'put ''bigpe3ZhciBNPXt9O3JldHVybiBNW2ddPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW2RdKE0pfSksRj1EPyFzKGZ1bmN0aW9uKCl7dmFyIE09ITEsVD0vYS87cmV0dXJuIFQuZXhlYz1mdW5jdGlvbigpe3JldHVybiBNPSEwLG51bGx9LCJzcGxpdCI9PT1kJiYoVC5jb25zdHJ1Y3Rvcj17''@;'; put 'put ''fSxULmNvbnN0cnVjdG9yW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIFR9KSxUW2ddKCIiKSwhTX0pOnZvaWQgMDtpZighRHx8IUZ8fCJyZXBsYWNlIj09PWQmJiF2fHwic3BsaXQiPT09ZCYmIXApe3ZhciB4PS8uL1tnXSxBPUUoYSxnLCIiW2RdLGZ1bmN0aW9uKFQsYixMLFUsWil7cmV0dXJuIGIu''@;'; put 'put ''ZXhlYz09PWY/RCYmIVo/e2RvbmU6ITAsdmFsdWU6eC5jYWxsKGIsTCxVKX06e2RvbmU6ITAsdmFsdWU6VC5jYWxsKEwsYixVKX06e2RvbmU6ITF9fSksST1BWzFdO24oU3RyaW5nLnByb3RvdHlwZSxkLEFbMF0pLGUoUmVnRXhwLnByb3RvdHlwZSxnLDI9PXk/ZnVuY3Rpb24oTSxUKXtyZXR1''@;'; put 'put ''cm4gSS5jYWxsKE0sdGhpcyxUKX06ZnVuY3Rpb24oTSl7cmV0dXJuIEkuY2FsbChNLHRoaXMpfSl9fX0sMTE1ODooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDIyOCk7Yy5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9bih0aGlzKSxzPSIiO3JldHVybiBlLmdsb2JhbCYmKHMrPSJn''@;'; put 'put ''IiksZS5pZ25vcmVDYXNlJiYocys9ImkiKSxlLm11bHRpbGluZSYmKHMrPSJtIiksZS51bmljb2RlJiYocys9InUiKSxlLnN0aWNreSYmKHMrPSJ5Iiksc319LDQ4NzkwOihjLGwsdCk9Pnt2YXIgbj10KDM1MDUyKSxlPXQoOTczNjgpLHM9dCgxNTA4KSxhPXQoNDIyOCksdT10KDgxNDg1KSxm''@;'; put 'put ''PXQoMjA3NjIpLGk9e30sdj17fSxwPWMuZXhwb3J0cz1mdW5jdGlvbihkLHksRSxnLEQpe3ZhciBDLEksTSxULEY9RD9mdW5jdGlvbigpe3JldHVybiBkfTpmKGQpLHg9bihFLGcseT8yOjEpLEE9MDtpZigiZnVuY3Rpb24iIT10eXBlb2YgRil0aHJvdyBUeXBlRXJyb3IoZCsiIGlzIG5vdCBp''@;'; put 'put ''dGVyYWJsZSEiKTtpZihzKEYpKXtmb3IoQz11KGQubGVuZ3RoKTtDPkE7QSsrKWlmKChUPXk/eChhKEk9ZFtBXSlbMF0sSVsxXSk6eChkW0FdKSk9PT1pfHxUPT09dilyZXR1cm4gVH1lbHNlIGZvcihNPUYuY2FsbChkKTshKEk9TS5uZXh0KCkpLmRvbmU7KWlmKChUPWUoTSx4LEkudmFsdWUs''@;'; put 'put ''eSkpPT09aXx8VD09PXYpcmV0dXJuIFR9O3AuQlJFQUs9aSxwLlJFVFVSTj12fSw0OTQ2MTooYyxsLHQpPT57Yy5leHBvcnRzPXQoNDQ1NTYpKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LDY3NTI2OmM9Pnt2YXIgbD1jLmV4cG9ydHM9dHlwZW9mIHdp''@;'; put 'put ''bmRvdzwidSImJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzp0eXBlb2Ygc2VsZjwidSImJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBfX2cmJihfX2c9bCl9LDU3OTE3OmM9Pnt2YXIgbD17fS5oYXNPd25Qcm9wZXJ0eTtj''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5jYWxsKHQsbil9fSwzMzM0MTooYyxsLHQpPT57dmFyIG49dCg0Nzk2NyksZT10KDExOTk2KTtjLmV4cG9ydHM9dCgxNzYzKT9mdW5jdGlvbihzLGEsdSl7cmV0dXJuIG4uZihzLGEsZSgxLHUpKX06ZnVuY3Rpb24ocyxhLHUpe3JldHVy''@;'; put 'put ''biBzW2FdPXUsc319LDYxMzA4OihjLGwsdCk9Pnt2YXIgbj10KDY3NTI2KS5kb2N1bWVudDtjLmV4cG9ydHM9biYmbi5kb2N1bWVudEVsZW1lbnR9LDIyOTU2OihjLGwsdCk9PntjLmV4cG9ydHM9IXQoMTc2MykmJiF0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5l''@;'; put 'put ''UHJvcGVydHkodCg0NjAzNCkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw5ODg4MDooYyxsLHQpPT57dmFyIG49dCg0MzMwNSksZT10KDI1MTcwKS5zZXQ7Yy5leHBvcnRzPWZ1bmN0aW9uKHMsYSx1KXt2YXIgaSxmPWEuY29uc3RydWN0b3I7cmV0dXJuIGYh''@;'; put 'put ''PT11JiYiZnVuY3Rpb24iPT10eXBlb2YgZiYmKGk9Zi5wcm90b3R5cGUpIT09dS5wcm90b3R5cGUmJm4oaSkmJmUmJmUocyxpKSxzfX0sMjQ4Nzc6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsLHQsbil7dmFyIGU9dm9pZCAwPT09bjtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZT9s''@;'; put 'put ''KCk6bC5jYWxsKG4pO2Nhc2UgMTpyZXR1cm4gZT9sKHRbMF0pOmwuY2FsbChuLHRbMF0pO2Nhc2UgMjpyZXR1cm4gZT9sKHRbMF0sdFsxXSk6bC5jYWxsKG4sdFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIGU/bCh0WzBdLHRbMV0sdFsyXSk6bC5jYWxsKG4sdFswXSx0WzFdLHRbMl0pO2Nhc2Ug''@;'; put 'put ''NDpyZXR1cm4gZT9sKHRbMF0sdFsxXSx0WzJdLHRbM10pOmwuY2FsbChuLHRbMF0sdFsxXSx0WzJdLHRbM10pfXJldHVybiBsLmFwcGx5KG4sdCl9fSw2MTI0OTooYyxsLHQpPT57dmFyIG49dCg1NTA4OSk7Yy5leHBvcnRzPU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09i''@;'; put 'put ''amVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSwxNTA4OihjLGwsdCk9Pnt2YXIgbj10KDYwOTA2KSxlPXQoNjc1NzQpKCJpdGVyYXRvciIpLHM9QXJyYXkucHJvdG90eXBlO2MuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gdm9p''@;'; put 'put ''ZCAwIT09YSYmKG4uQXJyYXk9PT1hfHxzW2VdPT09YSl9fSw3Nzk4MTooYyxsLHQpPT57dmFyIG49dCg1NTA4OSk7Yy5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHMpe3JldHVybiJBcnJheSI9PW4ocyl9fSwzMzg0MjooYyxsLHQpPT57dmFyIG49dCg0MzMwNSksZT1NYXRoLmZs''@;'; put 'put ''b29yO2MuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4hbihhKSYmaXNGaW5pdGUoYSkmJmUoYSk9PT1hfX0sNDMzMDU6Yz0+e2MuZXhwb3J0cz1mdW5jdGlvbihsKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGw/bnVsbCE9PWw6ImZ1bmN0aW9uIj09dHlwZW9mIGx9fSw5NTQxMTooYyxsLHQp''@;'; put 'put ''PT57dmFyIG49dCg0MzMwNSksZT10KDU1MDg5KSxzPXQoNjc1NzQpKCJtYXRjaCIpO2MuZXhwb3J0cz1mdW5jdGlvbihhKXt2YXIgdTtyZXR1cm4gbihhKSYmKHZvaWQgMCE9PSh1PWFbc10pPyEhdToiUmVnRXhwIj09ZShhKSl9fSw5NzM2ODooYyxsLHQpPT57dmFyIG49dCg0MjI4KTtjLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24oZSxzLGEsdSl7dHJ5e3JldHVybiB1P3MobihhKVswXSxhWzFdKTpzKGEpfWNhdGNoKGkpe3ZhciBmPWUucmV0dXJuO3Rocm93IHZvaWQgMCE9PWYmJm4oZi5jYWxsKGUpKSxpfX19LDYwMzI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDg0NzE5KSxlPXQo''@;'; put 'put ''MTE5OTYpLHM9dCgzODQ0KSxhPXt9O3QoMzMzNDEpKGEsdCg2NzU3NCkoIml0ZXJhdG9yIiksZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGMuZXhwb3J0cz1mdW5jdGlvbih1LGYsaSl7dS5wcm90b3R5cGU9bihhLHtuZXh0OmUoMSxpKX0pLHModSxmKyIgSXRlcmF0b3IiKX19LDk4MTc1Oihj''@;'; put 'put ''LGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgyMjc1MCksZT10KDkyMTI3KSxzPXQoMjg4NTkpLGE9dCgzMzM0MSksdT10KDYwOTA2KSxmPXQoNjAzMiksaT10KDM4NDQpLHY9dCg0MDYyNykscD10KDY3NTc0KSgiaXRlcmF0b3IiKSxkPSEoW10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkp''@;'; put 'put ''LEU9ImtleXMiLGc9InZhbHVlcyIsRD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtjLmV4cG9ydHM9ZnVuY3Rpb24oRix4LEEsQyxJLE0sVCl7ZihBLHgsQyk7dmFyIFYsWSxYLGI9ZnVuY3Rpb24ocnQpe2lmKCFkJiZydCBpbiBldClyZXR1cm4gZXRbcnRdO3N3aXRjaChydCl7Y2FzZSBFOmNh''@;'; put 'put ''c2UgZzpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEEodGhpcyxydCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQSh0aGlzLHJ0KX19LEw9eCsiIEl0ZXJhdG9yIixVPUk9PWcsWj0hMSxldD1GLnByb3RvdHlwZSx0dD1ldFtwXXx8ZXRbIkBAaXRlcmF0b3IiXXx8SSYmZXRb''@;'; put 'put ''SV0scHQ9dHR8fGIoSSksZHQ9ST9VP2IoImVudHJpZXMiKTpwdDp2b2lkIDAsXz0iQXJyYXkiPT14JiZldC5lbnRyaWVzfHx0dDtpZihfJiYoWD12KF8uY2FsbChuZXcgRikpKSE9PU9iamVjdC5wcm90b3R5cGUmJlgubmV4dCYmKGkoWCxMLCEwKSwhbiYmImZ1bmN0aW9uIiE9dHlwZW9mIFhb''@;'; put 'put ''cF0mJmEoWCxwLEQpKSxVJiZ0dCYmdHQubmFtZSE9PWcmJihaPSEwLHB0PWZ1bmN0aW9uKCl7cmV0dXJuIHR0LmNhbGwodGhpcyl9KSwoIW58fFQpJiYoZHx8Wnx8IWV0W3BdKSYmYShldCxwLHB0KSx1W3hdPXB0LHVbTF09RCxJKWlmKFY9e3ZhbHVlczpVP3B0OmIoZyksa2V5czpNP3B0OmIo''@;'; put 'put ''RSksZW50cmllczpkdH0sVClmb3IoWSBpbiBWKVkgaW4gZXR8fHMoZXQsWSxWW1ldKTtlbHNlIGUoZS5QK2UuRiooZHx8WikseCxWKTtyZXR1cm4gVn19LDk4OTMxOihjLGwsdCk9Pnt2YXIgbj10KDY3NTc0KSgiaXRlcmF0b3IiKSxlPSExO3RyeXt2YXIgcz1bN11bbl0oKTtzLnJldHVybj1m''@;'; put 'put ''dW5jdGlvbigpe2U9ITB9LEFycmF5LmZyb20ocyxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaHt9Yy5leHBvcnRzPWZ1bmN0aW9uKGEsdSl7aWYoIXUmJiFlKXJldHVybiExO3ZhciBmPSExO3RyeXt2YXIgaT1bN10sdj1pW25dKCk7di5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6Zj0h''@;'; put 'put ''MH19LGlbbl09ZnVuY3Rpb24oKXtyZXR1cm4gdn0sYShpKX1jYXRjaHt9cmV0dXJuIGZ9fSw3NDk3MDpjPT57Yy5leHBvcnRzPWZ1bmN0aW9uKGwsdCl7cmV0dXJue3ZhbHVlOnQsZG9uZTohIWx9fX0sNjA5MDY6Yz0+e2MuZXhwb3J0cz17fX0sMjI3NTA6Yz0+e2MuZXhwb3J0cz0hMX0sNzU1''@;'; put 'put ''NTE6Yz0+e3ZhciBsPU1hdGguZXhwbTE7Yy5leHBvcnRzPSFsfHxsKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fGwoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1sKC0yZS0xNyk/ZnVuY3Rpb24obil7cmV0dXJuIDA9PShuPStuKT9uOm4+LTFlLTYmJm48MWUtNj9uK24qbi8yOk1h''@;'; put 'put ''dGguZXhwKG4pLTF9Omx9LDcyMTIyOihjLGwsdCk9Pnt2YXIgbj10KDM3MzMpLGU9TWF0aC5wb3cscz1lKDIsLTUyKSxhPWUoMiwtMjMpLHU9ZSgyLDEyNykqKDItYSksZj1lKDIsLTEyNik7Yy5leHBvcnRzPU1hdGguZnJvdW5kfHxmdW5jdGlvbihwKXt2YXIgRSxnLGQ9TWF0aC5hYnMocCks''@;'; put 'put ''eT1uKHApO3JldHVybiBkPGY/eSooZC9mL2ErMS9zLTEvcykqZiphOihnPShFPSgxK2EvcykqZCktKEUtZCkpPnV8fGchPWc/eSooMS8wKTp5Kmd9fSw3MTQ3MzpjPT57Yy5leHBvcnRzPU1hdGgubG9nMXB8fGZ1bmN0aW9uKHQpe3JldHVybih0PSt0KT4tMWUtOCYmdDwxZS04P3QtdCp0LzI6''@;'; put 'put ''TWF0aC5sb2coMSt0KX19LDM3MzM6Yz0+e2MuZXhwb3J0cz1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiAwPT0odD0rdCl8fHQhPXQ/dDp0PDA/LTE6MX19LDEyOTg4OihjLGwsdCk9Pnt2YXIgbj10KDQ0MTUpKCJtZXRhIiksZT10KDQzMzA1KSxzPXQoNTc5MTcpLGE9dCg0Nzk2Nyku''@;'; put 'put ''Zix1PTAsZj1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxpPSF0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybiBmKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksdj1mdW5jdGlvbihnKXthKGcsbix7dmFsdWU6e2k6Ik8iKyArK3Usdzp7fX19KX0sRT1j''@;'; put 'put ''LmV4cG9ydHM9e0tFWTpuLE5FRUQ6ITEsZmFzdEtleTpmdW5jdGlvbihnLEQpe2lmKCFlKGcpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgZz9nOigic3RyaW5nIj09dHlwZW9mIGc/IlMiOiJQIikrZztpZighcyhnLG4pKXtpZighZihnKSlyZXR1cm4iRiI7aWYoIUQpcmV0dXJuIkUiO3YoZyl9''@;'; put 'put ''cmV0dXJuIGdbbl0uaX0sZ2V0V2VhazpmdW5jdGlvbihnLEQpe2lmKCFzKGcsbikpe2lmKCFmKGcpKXJldHVybiEwO2lmKCFEKXJldHVybiExO3YoZyl9cmV0dXJuIGdbbl0ud30sb25GcmVlemU6ZnVuY3Rpb24oZyl7cmV0dXJuIGkmJkUuTkVFRCYmZihnKSYmIXMoZyxuKSYmdihnKSxnfX19''@;'; put 'put ''LDk3MzgwOihjLGwsdCk9Pnt2YXIgbj10KDkzMzg2KSxlPXQoOTIxMjcpLHM9dCg0NDU1NikoIm1ldGFkYXRhIiksYT1zLnN0b3JlfHwocy5zdG9yZT1uZXcodCg3OTM5NykpKSx1PWZ1bmN0aW9uKEUsZyxEKXt2YXIgRj1hLmdldChFKTtpZighRil7aWYoIUQpcmV0dXJuO2Euc2V0KEUsRj1u''@;'; put 'put ''ZXcgbil9dmFyIHg9Ri5nZXQoZyk7aWYoIXgpe2lmKCFEKXJldHVybjtGLnNldChnLHg9bmV3IG4pfXJldHVybiB4fTtjLmV4cG9ydHM9e3N0b3JlOmEsbWFwOnUsaGFzOmZ1bmN0aW9uKEUsZyxEKXt2YXIgRj11KGcsRCwhMSk7cmV0dXJuIHZvaWQgMCE9PUYmJkYuaGFzKEUpfSxnZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oRSxnLEQpe3ZhciBGPXUoZyxELCExKTtyZXR1cm4gdm9pZCAwPT09Rj92b2lkIDA6Ri5nZXQoRSl9LHNldDpmdW5jdGlvbihFLGcsRCxGKXt1KEQsRiwhMCkuc2V0KEUsZyl9LGtleXM6ZnVuY3Rpb24oRSxnKXt2YXIgRD11KEUsZywhMSksRj1bXTtyZXR1cm4gRCYmRC5mb3JFYWNo''@;'; put 'put ''KGZ1bmN0aW9uKHgsQSl7Ri5wdXNoKEEpfSksRn0sa2V5OmZ1bmN0aW9uKEUpe3JldHVybiB2b2lkIDA9PT1FfHwic3ltYm9sIj09dHlwZW9mIEU/RTpTdHJpbmcoRSl9LGV4cDpmdW5jdGlvbihFKXtlKGUuUywiUmVmbGVjdCIsRSl9fX0sMjgyMDY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgbj10KDE3NjMpLGU9dCg1MTMxMSkscz10KDEwNjApLGE9dCg4NDQ5KSx1PXQoMTgyNzApLGY9dCg2MTI0OSksaT1PYmplY3QuYXNzaWduO2MuZXhwb3J0cz0haXx8dCg3OTQ0OCkoZnVuY3Rpb24oKXt2YXIgdj17fSxwPXt9LGQ9U3ltYm9sKCkseT0iYWJjZGVmZ2hpamtsbW5vcHFyc3Qi''@;'; put 'put ''O3JldHVybiB2W2RdPTcseS5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbihFKXtwW0VdPUV9KSw3IT1pKHt9LHYpW2RdfHxPYmplY3Qua2V5cyhpKHt9LHApKS5qb2luKCIiKSE9eX0pP2Z1bmN0aW9uKHAsZCl7Zm9yKHZhciB5PXUocCksRT1hcmd1bWVudHMubGVuZ3RoLGc9MSxEPXMuZixG''@;'; put 'put ''PWEuZjtFPmc7KWZvcih2YXIgTSx4PWYoYXJndW1lbnRzW2crK10pLEE9RD9lKHgpLmNvbmNhdChEKHgpKTplKHgpLEM9QS5sZW5ndGgsST0wO0M+STspTT1BW0krK10sKCFufHxGLmNhbGwoeCxNKSkmJih5W01dPXhbTV0pO3JldHVybiB5fTppfSw4NDcxOTooYyxsLHQpPT57dmFyIG49dCg0''@;'; put 'put ''MjI4KSxlPXQoMjE2MjYpLHM9dCg4NjE0MCksYT10KDQwNzY2KSgiSUVfUFJPVE8iKSx1PWZ1bmN0aW9uKCl7fSxmPSJwcm90b3R5cGUiLGk9ZnVuY3Rpb24oKXt2YXIgRSx2PXQoNDYwMzQpKCJpZnJhbWUiKSxwPXMubGVuZ3RoO2Zvcih2LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQoNjEzMDgp''@;'; put 'put ''LmFwcGVuZENoaWxkKHYpLHYuc3JjPSJqYXZhc2NyaXB0OiIsKEU9di5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksRS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxFLmNsb3NlKCksaT1FLkY7cC0tOylkZWxldGUgaVtmXVtzW3BdXTtyZXR1cm4g''@;'; put 'put ''aSgpfTtjLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24ocCxkKXt2YXIgeTtyZXR1cm4gbnVsbCE9PXA/KHVbZl09bihwKSx5PW5ldyB1LHVbZl09bnVsbCx5W2FdPXApOnk9aSgpLHZvaWQgMD09PWQ/eTplKHksZCl9fSw0Nzk2NzooYyxsLHQpPT57dmFyIG49dCg0MjI4KSxlPXQo''@;'; put 'put ''MjI5NTYpLHM9dCg4MzA0OCksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7bC5mPXQoMTc2Myk/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGYsaSx2KXtpZihuKGYpLGk9cyhpLCEwKSxuKHYpLGUpdHJ5e3JldHVybiBhKGYsaSx2KX1jYXRjaHt9aWYoImdldCJpbiB2fHwic2V0Imlu''@;'; put 'put ''IHYpdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEiKTtyZXR1cm4idmFsdWUiaW4gdiYmKGZbaV09di52YWx1ZSksZn19LDIxNjI2OihjLGwsdCk9Pnt2YXIgbj10KDQ3OTY3KSxlPXQoNDIyOCkscz10KDUxMzExKTtjLmV4cG9ydHM9dCgxNzYzKT9PYmplY3QuZGVm''@;'; put 'put ''aW5lUHJvcGVydGllczpmdW5jdGlvbih1LGYpe2UodSk7Zm9yKHZhciBkLGk9cyhmKSx2PWkubGVuZ3RoLHA9MDt2PnA7KW4uZih1LGQ9aVtwKytdLGZbZF0pO3JldHVybiB1fX0sNjg2NDE6KGMsbCx0KT0+e3ZhciBuPXQoODQ0OSksZT10KDExOTk2KSxzPXQoNTcyMjEpLGE9dCg4MzA0OCks''@;'; put 'put ''dT10KDU3OTE3KSxmPXQoMjI5NTYpLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtsLmY9dCgxNzYzKT9pOmZ1bmN0aW9uKHAsZCl7aWYocD1zKHApLGQ9YShkLCEwKSxmKXRyeXtyZXR1cm4gaShwLGQpfWNhdGNoe31pZih1KHAsZCkpcmV0dXJuIGUoIW4uZi5jYWxsKHAsZCks''@;'; put 'put ''cFtkXSl9fSw0NzY1OihjLGwsdCk9Pnt2YXIgbj10KDU3MjIxKSxlPXQoNTk0MTUpLmYscz17fS50b1N0cmluZyxhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107''@;'; put 'put ''Yy5leHBvcnRzLmY9ZnVuY3Rpb24oaSl7cmV0dXJuIGEmJiJbb2JqZWN0IFdpbmRvd10iPT1zLmNhbGwoaSk/ZnVuY3Rpb24oZil7dHJ5e3JldHVybiBlKGYpfWNhdGNoe3JldHVybiBhLnNsaWNlKCl9fShpKTplKG4oaSkpfX0sNTk0MTU6KGMsbCx0KT0+e3ZhciBuPXQoMzQ1NjEpLGU9dCg4''@;'; put 'put ''NjE0MCkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtsLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGEpe3JldHVybiBuKGEsZSl9fSwxMDYwOihjLGwpPT57bC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDQwNjI3OihjLGwsdCk9Pnt2YXIgbj10''@;'; put 'put ''KDU3OTE3KSxlPXQoMTgyNzApLHM9dCg0MDc2NikoIklFX1BST1RPIiksYT1PYmplY3QucHJvdG90eXBlO2MuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHUpe3JldHVybiB1PWUodSksbih1LHMpP3Vbc106ImZ1bmN0aW9uIj09dHlwZW9mIHUuY29uc3RydWN0b3Im''@;'; put 'put ''JnUgaW5zdGFuY2VvZiB1LmNvbnN0cnVjdG9yP3UuY29uc3RydWN0b3IucHJvdG90eXBlOnUgaW5zdGFuY2VvZiBPYmplY3Q/YTpudWxsfX0sMzQ1NjE6KGMsbCx0KT0+e3ZhciBuPXQoNTc5MTcpLGU9dCg1NzIyMSkscz10KDYxNDY0KSghMSksYT10KDQwNzY2KSgiSUVfUFJPVE8iKTtjLmV4''@;'; put 'put ''cG9ydHM9ZnVuY3Rpb24odSxmKXt2YXIgZCxpPWUodSksdj0wLHA9W107Zm9yKGQgaW4gaSlkIT1hJiZuKGksZCkmJnAucHVzaChkKTtmb3IoO2YubGVuZ3RoPnY7KW4oaSxkPWZbdisrXSkmJih+cyhwLGQpfHxwLnB1c2goZCkpO3JldHVybiBwfX0sNTEzMTE6KGMsbCx0KT0+e3ZhciBuPXQo''@;'; put 'put ''MzQ1NjEpLGU9dCg4NjE0MCk7Yy5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihhKXtyZXR1cm4gbihhLGUpfX0sODQ0OTooYyxsKT0+e2wuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sODA5MjM6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg1NjA5NCkscz10KDc5NDQ4KTtj''@;'; put 'put ''LmV4cG9ydHM9ZnVuY3Rpb24oYSx1KXt2YXIgZj0oZS5PYmplY3R8fHt9KVthXXx8T2JqZWN0W2FdLGk9e307aVthXT11KGYpLG4obi5TK24uRipzKGZ1bmN0aW9uKCl7ZigxKX0pLCJPYmplY3QiLGkpfX0sOTYyMjI6KGMsbCx0KT0+e3ZhciBuPXQoNTk0MTUpLGU9dCgxMDYwKSxzPXQoNDIy''@;'; put 'put ''OCksYT10KDY3NTI2KS5SZWZsZWN0O2MuZXhwb3J0cz1hJiZhLm93bktleXN8fGZ1bmN0aW9uKGYpe3ZhciBpPW4uZihzKGYpKSx2PWUuZjtyZXR1cm4gdj9pLmNvbmNhdCh2KGYpKTppfX0sMzM1ODk6KGMsbCx0KT0+e3ZhciBuPXQoNjc1MjYpLnBhcnNlRmxvYXQsZT10KDQwNjI5KS50cmlt''@;'; put 'put ''O2MuZXhwb3J0cz0xL24odCg3ODQ1MSkrIi0wIikhPS0xLzA/ZnVuY3Rpb24oYSl7dmFyIHU9ZShTdHJpbmcoYSksMyksZj1uKHUpO3JldHVybiAwPT09ZiYmIi0iPT11LmNoYXJBdCgwKT8tMDpmfTpufSw4MjczODooYyxsLHQpPT57dmFyIG49dCg2NzUyNikucGFyc2VJbnQsZT10KDQwNjI5''@;'; put 'put ''KS50cmltLHM9dCg3ODQ1MSksYT0vXlstK10/MFt4WF0vO2MuZXhwb3J0cz04IT09bihzKyIwOCIpfHwyMiE9PW4ocysiMHgxNiIpP2Z1bmN0aW9uKGYsaSl7dmFyIHY9ZShTdHJpbmcoZiksMyk7cmV0dXJuIG4odixpPj4+MHx8KGEudGVzdCh2KT8xNjoxMCkpfTpufSwxMTk5NjpjPT57Yy5l''@;'; put 'put ''eHBvcnRzPWZ1bmN0aW9uKGwsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmwpLGNvbmZpZ3VyYWJsZTohKDImbCksd3JpdGFibGU6ISg0JmwpLHZhbHVlOnR9fX0sOTYwNjU6KGMsbCx0KT0+e3ZhciBuPXQoMjg4NTkpO2MuZXhwb3J0cz1mdW5jdGlvbihlLHMsYSl7Zm9yKHZhciB1IGluIHMp''@;'; put 'put ''bihlLHUsc1t1XSxhKTtyZXR1cm4gZX19LDI4ODU5OihjLGwsdCk9Pnt2YXIgbj10KDY3NTI2KSxlPXQoMzMzNDEpLHM9dCg1NzkxNyksYT10KDQ0MTUpKCJzcmMiKSx1PXQoNDk0NjEpLGY9InRvU3RyaW5nIixpPSgiIit1KS5zcGxpdChmKTt0KDU2MDk0KS5pbnNwZWN0U291cmNlPWZ1bmN0''@;'; put 'put ''aW9uKHYpe3JldHVybiB1LmNhbGwodil9LChjLmV4cG9ydHM9ZnVuY3Rpb24odixwLGQseSl7dmFyIEU9ImZ1bmN0aW9uIj09dHlwZW9mIGQ7RSYmKHMoZCwibmFtZSIpfHxlKGQsIm5hbWUiLHApKSx2W3BdIT09ZCYmKEUmJihzKGQsYSl8fGUoZCxhLHZbcF0/IiIrdltwXTppLmpvaW4oU3Ry''@;'; put 'put ''aW5nKHApKSkpLHY9PT1uP3ZbcF09ZDp5P3ZbcF0/dltwXT1kOmUodixwLGQpOihkZWxldGUgdltwXSxlKHYscCxkKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLGYsZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1thXXx8dS5jYWxsKHRoaXMpfSl9LDUyNTM1''@;'; put 'put ''OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgzNDg0OCksZT1SZWdFeHAucHJvdG90eXBlLmV4ZWM7Yy5leHBvcnRzPWZ1bmN0aW9uKHMsYSl7dmFyIHU9cy5leGVjO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB1KXt2YXIgZj11LmNhbGwocyxhKTtpZigib2JqZWN0IiE9dHlwZW9mIGYp''@;'; put 'put ''dGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGZ9aWYoIlJlZ0V4cCIhPT1uKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNv''@;'; put 'put ''bXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gZS5jYWxsKHMsYSl9fSw2OTYwMDooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBwLGQsbj10KDExNTgpLGU9UmVnRXhwLnByb3RvdHlwZS5leGVjLHM9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGE9ZSx1PSJsYXN0SW5kZXgiLGY9KGQ9L2Iq''@;'; put 'put ''L2csZS5jYWxsKHA9L2EvLCJhIiksZS5jYWxsKGQsImEiKSwwIT09cFt1XXx8MCE9PWRbdV0pLGk9dm9pZCAwIT09LygpPz8vLmV4ZWMoIiIpWzFdOyhmfHxpKSYmKGE9ZnVuY3Rpb24oZCl7dmFyIEUsZyxELEYseT10aGlzO3JldHVybiBpJiYoZz1uZXcgUmVnRXhwKCJeIit5LnNvdXJjZSsi''@;'; put 'put ''JCg/IVxccykiLG4uY2FsbCh5KSkpLGYmJihFPXlbdV0pLEQ9ZS5jYWxsKHksZCksZiYmRCYmKHlbdV09eS5nbG9iYWw/RC5pbmRleCtEWzBdLmxlbmd0aDpFKSxpJiZEJiZELmxlbmd0aD4xJiZzLmNhbGwoRFswXSxnLGZ1bmN0aW9uKCl7Zm9yKEY9MTtGPGFyZ3VtZW50cy5sZW5ndGgtMjtG''@;'; put 'put ''Kyspdm9pZCAwPT09YXJndW1lbnRzW0ZdJiYoRFtGXT12b2lkIDApfSksRH0pLGMuZXhwb3J0cz1hfSw3MzU5OmM9PntjLmV4cG9ydHM9T2JqZWN0LmlzfHxmdW5jdGlvbih0LG4pe3JldHVybiB0PT09bj8wIT09dHx8MS90PT0xL246dCE9dCYmbiE9bn19LDI1MTcwOihjLGwsdCk9Pnt2YXIg''@;'; put 'put ''bj10KDQzMzA1KSxlPXQoNDIyOCkscz1mdW5jdGlvbihhLHUpe2lmKGUoYSksIW4odSkmJm51bGwhPT11KXRocm93IFR5cGVFcnJvcih1KyI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIil9O2MuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9m''@;'; put 'put ''dW5jdGlvbihhLHUsZil7dHJ5eyhmPXQoMzUwNTIpKEZ1bmN0aW9uLmNhbGwsdCg2ODY0MSkuZihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQsMikpKGEsW10pLHU9IShhIGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoe3U9ITB9cmV0dXJuIGZ1bmN0aW9uKHYscCl7cmV0dXJuIHMo''@;'; put 'put ''dixwKSx1P3YuX19wcm90b19fPXA6Zih2LHApLHZ9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazpzfX0sNTU3NjI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDY3NTI2KSxlPXQoNDc5NjcpLHM9dCgxNzYzKSxhPXQoNjc1NzQpKCJzcGVjaWVzIik7Yy5leHBvcnRzPWZ1bmN0aW9uKHUp''@;'; put 'put ''e3ZhciBmPW5bdV07cyYmZiYmIWZbYV0mJmUuZihmLGEse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LDM4NDQ6KGMsbCx0KT0+e3ZhciBuPXQoNDc5NjcpLmYsZT10KDU3OTE3KSxzPXQoNjc1NzQpKCJ0b1N0cmluZ1RhZyIpO2MuZXhwb3J0cz1mdW5j''@;'; put 'put ''dGlvbihhLHUsZil7YSYmIWUoYT1mP2E6YS5wcm90b3R5cGUscykmJm4oYSxzLHtjb25maWd1cmFibGU6ITAsdmFsdWU6dX0pfX0sNDA3NjY6KGMsbCx0KT0+e3ZhciBuPXQoNDQ1NTYpKCJrZXlzIiksZT10KDQ0MTUpO2MuZXhwb3J0cz1mdW5jdGlvbihzKXtyZXR1cm4gbltzXXx8KG5bc109''@;'; put 'put ''ZShzKSl9fSw0NDU1NjooYyxsLHQpPT57dmFyIG49dCg1NjA5NCksZT10KDY3NTI2KSxzPSJfX2NvcmUtanNfc2hhcmVkX18iLGE9ZVtzXXx8KGVbc109e30pOyhjLmV4cG9ydHM9ZnVuY3Rpb24odSxmKXtyZXR1cm4gYVt1XXx8KGFbdV09dm9pZCAwIT09Zj9mOnt9KX0pKCJ2ZXJzaW9ucyIs''@;'; put 'put ''W10pLnB1c2goe3ZlcnNpb246bi52ZXJzaW9uLG1vZGU6dCgyMjc1MCk/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiXHhhOSAyMDIwIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIn0pfSwxOTE5MDooYyxsLHQpPT57dmFyIG49dCg0MjI4KSxlPXQoNjMzODcpLHM9dCg2NzU3NCko''@;'; put 'put ''InNwZWNpZXMiKTtjLmV4cG9ydHM9ZnVuY3Rpb24oYSx1KXt2YXIgaSxmPW4oYSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWZ8fG51bGw9PShpPW4oZilbc10pP3U6ZShpKX19LDg2ODg0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg3OTQ0OCk7Yy5leHBvcnRzPWZ1bmN0''@;'; put 'put ''aW9uKGUscyl7cmV0dXJuISFlJiZuKGZ1bmN0aW9uKCl7cz9lLmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6ZS5jYWxsKG51bGwpfSl9fSw5MTIxMjooYyxsLHQpPT57dmFyIG49dCgyNzA4NyksZT10KDMzNDQpO2MuZXhwb3J0cz1mdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24oYSx1KXt2''@;'; put 'put ''YXIgcCxkLGY9U3RyaW5nKGUoYSkpLGk9bih1KSx2PWYubGVuZ3RoO3JldHVybiBpPDB8fGk+PXY/cz8iIjp2b2lkIDA6KHA9Zi5jaGFyQ29kZUF0KGkpKTw1NTI5Nnx8cD41NjMxOXx8aSsxPT09dnx8KGQ9Zi5jaGFyQ29kZUF0KGkrMSkpPDU2MzIwfHxkPjU3MzQzP3M/Zi5jaGFyQXQoaSk6''@;'; put 'put ''cDpzP2Yuc2xpY2UoaSxpKzIpOmQtNTYzMjArKHAtNTUyOTY8PDEwKSs2NTUzNn19fSw3ODk0MjooYyxsLHQpPT57dmFyIG49dCg5NTQxMSksZT10KDMzNDQpO2MuZXhwb3J0cz1mdW5jdGlvbihzLGEsdSl7aWYobihhKSl0aHJvdyBUeXBlRXJyb3IoIlN0cmluZyMiK3UrIiBkb2Vzbid0IGFj''@;'; put 'put ''Y2VwdCByZWdleCEiKTtyZXR1cm4gU3RyaW5nKGUocykpfX0sNTI0Njg6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg3OTQ0OCkscz10KDMzNDQpLGE9LyIvZyx1PWZ1bmN0aW9uKGYsaSx2LHApe3ZhciBkPVN0cmluZyhzKGYpKSx5PSI8IitpO3JldHVybiIiIT09diYmKHkrPSIgIit2''@;'; put 'put ''Kyc9IicrU3RyaW5nKHApLnJlcGxhY2UoYSwiJnF1b3Q7IikrJyInKSx5KyI+IitkKyI8LyIraSsiPiJ9O2MuZXhwb3J0cz1mdW5jdGlvbihmLGkpe3ZhciB2PXt9O3ZbZl09aSh1KSxuKG4uUCtuLkYqZShmdW5jdGlvbigpe3ZhciBwPSIiW2ZdKCciJyk7cmV0dXJuIHAhPT1wLnRvTG93ZXJD''@;'; put 'put ''YXNlKCl8fHAuc3BsaXQoJyInKS5sZW5ndGg+M30pLCJTdHJpbmciLHYpfX0sMjc5MjY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDI3MDg3KSxlPXQoMzM0NCk7Yy5leHBvcnRzPWZ1bmN0aW9uKGEpe3ZhciB1PVN0cmluZyhlKHRoaXMpKSxmPSIiLGk9bihhKTtpZihpPDB8fGk9''@;'; put 'put ''PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7aT4wOyhpPj4+PTEpJiYodSs9dSkpMSZpJiYoZis9dSk7cmV0dXJuIGZ9fSw0MDYyOTooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDMzNDQpLHM9dCg3OTQ0OCksYT10KDc4NDUxKSx1PSJb''@;'; put 'put ''IithKyJdIixpPVJlZ0V4cCgiXiIrdSt1KyIqIiksdj1SZWdFeHAodSt1KyIqJCIpLHA9ZnVuY3Rpb24oeSxFLGcpe3ZhciBEPXt9LEY9cyhmdW5jdGlvbigpe3JldHVybiEhYVt5XSgpfHwiXHUyMDBiXHg4NSIhPSJcdTIwMGJceDg1Ilt5XSgpfSkseD1EW3ldPUY/RShkKTphW3ldO2cmJihE''@;'; put 'put ''W2ddPXgpLG4obi5QK24uRipGLCJTdHJpbmciLEQpfSxkPXAudHJpbT1mdW5jdGlvbih5LEUpe3JldHVybiB5PVN0cmluZyhlKHkpKSwxJkUmJih5PXkucmVwbGFjZShpLCIiKSksMiZFJiYoeT15LnJlcGxhY2UodiwiIikpLHl9O2MuZXhwb3J0cz1wfSw3ODQ1MTpjPT57Yy5leHBvcnRzPSJc''@;'; put 'put ''dFxuXHZcZlxyIFx4YTBcdTE2ODBcdTE4MGVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMGFcdTIwMmZcdTIwNWZcdTMwMDBcdTIwMjhcdTIwMjlcdWZlZmYifSw3MDE1NzooYyxsLHQpPT57dmFyIG49dCgyNzA4NyksZT1N''@;'; put 'put ''YXRoLm1heCxzPU1hdGgubWluO2MuZXhwb3J0cz1mdW5jdGlvbihhLHUpe3JldHVybihhPW4oYSkpPDA/ZShhK3UsMCk6cyhhLHUpfX0sMjcwODc6Yz0+e3ZhciBsPU1hdGguY2VpbCx0PU1hdGguZmxvb3I7Yy5leHBvcnRzPWZ1bmN0aW9uKG4pe3JldHVybiBpc05hTihuPStuKT8wOihuPjA/''@;'; put 'put ''dDpsKShuKX19LDU3MjIxOihjLGwsdCk9Pnt2YXIgbj10KDYxMjQ5KSxlPXQoMzM0NCk7Yy5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiBuKGUocykpfX0sODE0ODU6KGMsbCx0KT0+e3ZhciBuPXQoMjcwODcpLGU9TWF0aC5taW47Yy5leHBvcnRzPWZ1bmN0aW9uKHMpe3JldHVybiBzPjA/''@;'; put 'put ''ZShuKHMpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSwxODI3MDooYyxsLHQpPT57dmFyIG49dCgzMzQ0KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdChuKGUpKX19LDgzMDQ4OihjLGwsdCk9Pnt2YXIgbj10KDQzMzA1KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXtpZighbihl''@;'; put 'put ''KSlyZXR1cm4gZTt2YXIgYSx1O2lmKHMmJiJmdW5jdGlvbiI9PXR5cGVvZihhPWUudG9TdHJpbmcpJiYhbih1PWEuY2FsbChlKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihhPWUudmFsdWVPZikmJiFuKHU9YS5jYWxsKGUpKXx8IXMmJiJmdW5jdGlvbiI9PXR5cGVvZihhPWUudG9TdHJpbmcpJiYh''@;'; put 'put ''bih1PWEuY2FsbChlKSkpcmV0dXJuIHU7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LDQ0MTU6Yz0+e3ZhciBsPTAsdD1NYXRoLnJhbmRvbSgpO2MuZXhwb3J0cz1mdW5jdGlvbihuKXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZv''@;'; put 'put ''aWQgMD09PW4/IiI6biwiKV8iLCgrK2wrdCkudG9TdHJpbmcoMzYpKX19LDEyODg4OihjLGwsdCk9Pnt2YXIgbj10KDQzMzA1KTtjLmV4cG9ydHM9ZnVuY3Rpb24oZSxzKXtpZighbihlKXx8ZS5fdCE9PXMpdGhyb3cgVHlwZUVycm9yKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrcysiIHJl''@;'; put 'put ''cXVpcmVkISIpO3JldHVybiBlfX0sMjMwMTE6KGMsbCx0KT0+e3ZhciBuPXQoNjc1MjYpLGU9dCg1NjA5NCkscz10KDIyNzUwKSxhPXQoNDc5NjApLHU9dCg0Nzk2NykuZjtjLmV4cG9ydHM9ZnVuY3Rpb24oZil7dmFyIGk9ZS5TeW1ib2x8fChlLlN5bWJvbD1zP3t9Om4uU3ltYm9sfHx7fSk7''@;'; put 'put ''Il8iIT1mLmNoYXJBdCgwKSYmIShmIGluIGkpJiZ1KGksZix7dmFsdWU6YS5mKGYpfSl9fSw0Nzk2MDooYyxsLHQpPT57bC5mPXQoNjc1NzQpfSw2NzU3NDooYyxsLHQpPT57dmFyIG49dCg0NDU1NikoIndrcyIpLGU9dCg0NDE1KSxzPXQoNjc1MjYpLlN5bWJvbCxhPSJmdW5jdGlvbiI9PXR5''@;'; put 'put ''cGVvZiBzOyhjLmV4cG9ydHM9ZnVuY3Rpb24oZil7cmV0dXJuIG5bZl18fChuW2ZdPWEmJnNbZl18fChhP3M6ZSkoIlN5bWJvbC4iK2YpKX0pLnN0b3JlPW59LDIwNzYyOihjLGwsdCk9Pnt2YXIgbj10KDM0ODQ4KSxlPXQoNjc1NzQpKCJpdGVyYXRvciIpLHM9dCg2MDkwNik7Yy5leHBvcnRz''@;'; put 'put ''PXQoNTYwOTQpLmdldEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKGEpe2lmKG51bGwhPWEpcmV0dXJuIGFbZV18fGFbIkBAaXRlcmF0b3IiXXx8c1tuKGEpXX19LDE5NjIwOihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUCwiQXJyYXkiLHtjb3B5V2l0aGluOnQoODQ0MzgpfSksdCg4ODE4''@;'; put 'put ''NCkoImNvcHlXaXRoaW4iKX0sNTg4ODg6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNjYxNzkpKDQpO24obi5QK24uRiohdCg4Njg4NCkoW10uZXZlcnksITApLCJBcnJheSIse2V2ZXJ5OmZ1bmN0aW9uKGEpe3JldHVybiBlKHRoaXMsYSxhcmd1bWVudHNbMV0p''@;'; put 'put ''fX0pfSw1Nzc2MjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlAsIkFycmF5Iix7ZmlsbDp0KDM1NTY0KX0pLHQoODgxODQpKCJmaWxsIil9LDM5ODEzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSgyKTtuKG4uUCtuLkYqIXQoODY4ODQpKFtd''@;'; put 'put ''LmZpbHRlciwhMCksIkFycmF5Iix7ZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKHRoaXMsYSxhcmd1bWVudHNbMV0pfX0pfSw3NTM2OTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NjE3OSkoNikscz0iZmluZEluZGV4IixhPSEwO3MgaW5bXSYmQXJyYXko''@;'; put 'put ''MSlbc10oZnVuY3Rpb24oKXthPSExfSksbihuLlArbi5GKmEsIkFycmF5Iix7ZmluZEluZGV4OmZ1bmN0aW9uKGYpe3JldHVybiBlKHRoaXMsZixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksdCg4ODE4NCkocyl9LDE1MTQ0OihjLGwsdCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSg1KSxzPSJmaW5kIixhPSEwO3MgaW5bXSYmQXJyYXkoMSlbc10oZnVuY3Rpb24oKXthPSExfSksbihuLlArbi5GKmEsIkFycmF5Iix7ZmluZDpmdW5jdGlvbihmKXtyZXR1cm4gZSh0aGlzLGYsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50''@;'; put 'put ''c1sxXTp2b2lkIDApfX0pLHQoODgxODQpKHMpfSwzNTA0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSgwKSxzPXQoODY4ODQpKFtdLmZvckVhY2gsITApO24obi5QK24uRiohcywiQXJyYXkiLHtmb3JFYWNoOmZ1bmN0aW9uKHUpe3JldHVybiBlKHRo''@;'; put 'put ''aXMsdSxhcmd1bWVudHNbMV0pfX0pfSw5Mzg2MzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoMzUwNTIpLGU9dCg5MjEyNykscz10KDE4MjcwKSxhPXQoOTczNjgpLHU9dCgxNTA4KSxmPXQoODE0ODUpLGk9dCg2NzIyNyksdj10KDIwNzYyKTtlKGUuUytlLkYqIXQoOTg5MzEpKGZ1''@;'; put 'put ''bmN0aW9uKHApe0FycmF5LmZyb20ocCl9KSwiQXJyYXkiLHtmcm9tOmZ1bmN0aW9uKGQpe3ZhciBDLEksTSxULHk9cyhkKSxFPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6QXJyYXksZz1hcmd1bWVudHMubGVuZ3RoLEQ9Zz4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsRj12b2lkIDAhPT1E''@;'; put 'put ''LHg9MCxBPXYoeSk7aWYoRiYmKEQ9bihELGc+Mj9hcmd1bWVudHNbMl06dm9pZCAwLDIpKSxudWxsPT1BfHxFPT1BcnJheSYmdShBKSlmb3IoST1uZXcgRShDPWYoeS5sZW5ndGgpKTtDPng7eCsrKWkoSSx4LEY/RCh5W3hdLHgpOnlbeF0pO2Vsc2UgZm9yKFQ9QS5jYWxsKHkpLEk9bmV3IEU7''@;'; put 'put ''IShNPVQubmV4dCgpKS5kb25lO3grKylpKEkseCxGP2EoVCxELFtNLnZhbHVlLHhdLCEwKTpNLnZhbHVlKTtyZXR1cm4gSS5sZW5ndGg9eCxJfX0pfSwzNDYwOTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2MTQ2NCkoITEpLHM9W10uaW5kZXhPZixhPSEhcyYm''@;'; put 'put ''MS9bMV0uaW5kZXhPZigxLC0wKTwwO24obi5QK24uRiooYXx8IXQoODY4ODQpKHMpKSwiQXJyYXkiLHtpbmRleE9mOmZ1bmN0aW9uKGYpe3JldHVybiBhP3MuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwOmUodGhpcyxmLGFyZ3VtZW50c1sxXSl9fSl9LDQ3ODk5OihjLGwsdCk9Pnt2YXIgbj10''@;'; put 'put ''KDkyMTI3KTtuKG4uUywiQXJyYXkiLHtpc0FycmF5OnQoNzc5ODEpfSl9LDk1MTY1OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg4ODE4NCksZT10KDc0OTcwKSxzPXQoNjA5MDYpLGE9dCg1NzIyMSk7Yy5leHBvcnRzPXQoOTgxNzUpKEFycmF5LCJBcnJheSIsZnVuY3Rpb24odSxm''@;'; put 'put ''KXt0aGlzLl90PWEodSksdGhpcy5faT0wLHRoaXMuX2s9Zn0sZnVuY3Rpb24oKXt2YXIgdT10aGlzLl90LGY9dGhpcy5fayxpPXRoaXMuX2krKztyZXR1cm4hdXx8aT49dS5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGUoMSkpOmUoMCwia2V5cyI9PWY/aToidmFsdWVzIj09Zj91W2ldOltpLHVb''@;'; put 'put ''aV1dKX0sInZhbHVlcyIpLHMuQXJndW1lbnRzPXMuQXJyYXksbigia2V5cyIpLG4oInZhbHVlcyIpLG4oImVudHJpZXMiKX0sOTY1MTE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNTcyMjEpLHM9W10uam9pbjtuKG4uUCtuLkYqKHQoNjEyNDkpIT1PYmplY3R8''@;'; put 'put ''fCF0KDg2ODg0KShzKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbih1KXtyZXR1cm4gcy5jYWxsKGUodGhpcyksdm9pZCAwPT09dT8iLCI6dSl9fSl9LDMzNzA2OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDU3MjIxKSxzPXQoMjcwODcpLGE9dCg4MTQ4NSksdT1b''@;'; put 'put ''XS5sYXN0SW5kZXhPZixmPSEhdSYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MDtuKG4uUCtuLkYqKGZ8fCF0KDg2ODg0KSh1KSksIkFycmF5Iix7bGFzdEluZGV4T2Y6ZnVuY3Rpb24odil7aWYoZilyZXR1cm4gdS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIHA9ZSh0aGlzKSxkPWEo''@;'; put 'put ''cC5sZW5ndGgpLHk9ZC0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJih5PU1hdGgubWluKHkscyhhcmd1bWVudHNbMV0pKSkseTwwJiYoeT1kK3kpO3k+PTA7eS0tKWlmKHkgaW4gcCYmcFt5XT09PXYpcmV0dXJuIHl8fDA7cmV0dXJuLTF9fSl9LDU0OTEzOihjLGwsdCk9PnsidXNlIHN0cmlj''@;'; put 'put ''dCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSgxKTtuKG4uUCtuLkYqIXQoODY4ODQpKFtdLm1hcCwhMCksIkFycmF5Iix7bWFwOmZ1bmN0aW9uKGEpe3JldHVybiBlKHRoaXMsYSxhcmd1bWVudHNbMV0pfX0pfSw0NTcwOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyks''@;'; put 'put ''ZT10KDY3MjI3KTtuKG4uUytuLkYqdCg3OTQ0OCkoZnVuY3Rpb24oKXtmdW5jdGlvbiBzKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChzKWluc3RhbmNlb2Ygcyl9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLHU9YXJndW1lbnRzLmxlbmd0aCxmPW5ldygiZnVuY3Rpb24i''@;'; put 'put ''PT10eXBlb2YgdGhpcz90aGlzOkFycmF5KSh1KTt1PmE7KWUoZixhLGFyZ3VtZW50c1thKytdKTtyZXR1cm4gZi5sZW5ndGg9dSxmfX0pfSw0Nzg3NDooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NTQzKTtuKG4uUCtuLkYqIXQoODY4ODQpKFtdLnJlZHVjZVJp''@;'; put 'put ''Z2h0LCEwKSwiQXJyYXkiLHtyZWR1Y2VSaWdodDpmdW5jdGlvbihhKXtyZXR1cm4gZSh0aGlzLGEsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHNbMV0sITApfX0pfSw4MTQ0OTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTIxMjcpLGU9dCg2NTQzKTtuKG4uUCtuLkYqIXQoODY4''@;'; put 'put ''ODQpKFtdLnJlZHVjZSwhMCksIkFycmF5Iix7cmVkdWNlOmZ1bmN0aW9uKGEpe3JldHVybiBlKHRoaXMsYSxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMSl9fSl9LDk1ODUzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDYxMzA4KSxzPXQoNTUwODkp''@;'; put 'put ''LGE9dCg3MDE1NyksdT10KDgxNDg1KSxmPVtdLnNsaWNlO24obi5QK24uRip0KDc5NDQ4KShmdW5jdGlvbigpe2UmJmYuY2FsbChlKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uKHYscCl7dmFyIGQ9dSh0aGlzLmxlbmd0aCkseT1zKHRoaXMpO2lmKHA9dm9pZCAwPT09cD9kOnAsIkFycmF5''@;'; put 'put ''Ij09eSlyZXR1cm4gZi5jYWxsKHRoaXMsdixwKTtmb3IodmFyIEU9YSh2LGQpLGc9YShwLGQpLEQ9dShnLUUpLEY9bmV3IEFycmF5KEQpLHg9MDt4PEQ7eCsrKUZbeF09IlN0cmluZyI9PXk/dGhpcy5jaGFyQXQoRSt4KTp0aGlzW0UreF07cmV0dXJuIEZ9fSl9LDg2NTExOihjLGwsdCk9Pnsi''@;'; put 'put ''dXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDY2MTc5KSgzKTtuKG4uUCtuLkYqIXQoODY4ODQpKFtdLnNvbWUsITApLCJBcnJheSIse3NvbWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGUodGhpcyxhLGFyZ3VtZW50c1sxXSl9fSl9LDk3MDc1OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFy''@;'; put 'put ''IG49dCg5MjEyNyksZT10KDYzMzg3KSxzPXQoMTgyNzApLGE9dCg3OTQ0OCksdT1bXS5zb3J0LGY9WzEsMiwzXTtuKG4uUCtuLkYqKGEoZnVuY3Rpb24oKXtmLnNvcnQodm9pZCAwKX0pfHwhYShmdW5jdGlvbigpe2Yuc29ydChudWxsKX0pfHwhdCg4Njg4NCkodSkpLCJBcnJheSIse3NvcnQ6''@;'; put 'put ''ZnVuY3Rpb24odil7cmV0dXJuIHZvaWQgMD09PXY/dS5jYWxsKHModGhpcykpOnUuY2FsbChzKHRoaXMpLGUodikpfX0pfSw3NjIwOTooYyxsLHQpPT57dCg1NTc2MikoIkFycmF5Iil9LDEzMjkyOihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUywiRGF0ZSIse25vdzpmdW5jdGlvbigp''@;'; put 'put ''e3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pfSw5NDI5OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KSxlPXQoNTUzODUpO24obi5QK24uRiooRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmchPT1lKSwiRGF0ZSIse3RvSVNPU3RyaW5nOmV9KX0sNTIzNDY6KGMsbCx0KT0+eyJ1c2Ugc3Ry''@;'; put 'put ''aWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoMTgyNzApLHM9dCg4MzA0OCk7bihuLlArbi5GKnQoNzk0NDgpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7''@;'; put 'put ''cmV0dXJuIDF9fSl9KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbih1KXt2YXIgZj1lKHRoaXMpLGk9cyhmKTtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGl8fGlzRmluaXRlKGkpP2YudG9JU09TdHJpbmcoKTpudWxsfX0pfSw0ODk1MTooYyxsLHQpPT57dmFyIG49dCg2NzU3NCkoInRvUHJpbWl0''@;'; put 'put ''aXZlIiksZT1EYXRlLnByb3RvdHlwZTtuIGluIGV8fHQoMzMzNDEpKGUsbix0KDIwMTA3KSl9LDc4NDk6KGMsbCx0KT0+e3ZhciBuPURhdGUucHJvdG90eXBlLGU9IkludmFsaWQgRGF0ZSIscz0idG9TdHJpbmciLGE9bltzXSx1PW4uZ2V0VGltZTtuZXcgRGF0ZShOYU4pKyIiIT1lJiZ0KDI4''@;'; put 'put ''ODU5KShuLHMsZnVuY3Rpb24oKXt2YXIgaT11LmNhbGwodGhpcyk7cmV0dXJuIGk9PWk/YS5jYWxsKHRoaXMpOmV9KX0sNjUwNDk6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5QLCJGdW5jdGlvbiIse2JpbmQ6dCgxNTUzOCl9KX0sOTU1MDI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2''@;'; put 'put ''YXIgbj10KDQzMzA1KSxlPXQoNDA2MjcpLHM9dCg2NzU3NCkoImhhc0luc3RhbmNlIiksYT1GdW5jdGlvbi5wcm90b3R5cGU7cyBpbiBhfHx0KDQ3OTY3KS5mKGEscyx7dmFsdWU6ZnVuY3Rpb24odSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXN8fCFuKHUpKXJldHVybiExO2lmKCFuKHRo''@;'; put 'put ''aXMucHJvdG90eXBlKSlyZXR1cm4gdSBpbnN0YW5jZW9mIHRoaXM7Zm9yKDt1PWUodSk7KWlmKHRoaXMucHJvdG90eXBlPT09dSlyZXR1cm4hMDtyZXR1cm4hMX19KX0sNzA0ODk6KGMsbCx0KT0+e3ZhciBuPXQoNDc5NjcpLmYsZT1GdW5jdGlvbi5wcm90b3R5cGUscz0vXlxzKmZ1bmN0aW9u''@;'; put 'put ''IChbXiAoXSopLyxhPSJuYW1lIjthIGluIGV8fHQoMTc2MykmJm4oZSxhLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybigiIit0aGlzKS5tYXRjaChzKVsxXX1jYXRjaHtyZXR1cm4iIn19fSl9LDkzMzg2OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgz''@;'; put 'put ''NjE5NyksZT10KDEyODg4KSxzPSJNYXAiO2MuZXhwb3J0cz10KDU4OTMzKShzLGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2dldDpmdW5jdGlvbih1KXt2YXIgZj1uLmdldEVudHJ5''@;'; put 'put ''KGUodGhpcyxzKSx1KTtyZXR1cm4gZiYmZi52fSxzZXQ6ZnVuY3Rpb24odSxmKXtyZXR1cm4gbi5kZWYoZSh0aGlzLHMpLDA9PT11PzA6dSxmKX19LG4sITApfSw3NjY0ODooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDcxNDczKSxzPU1hdGguc3FydCxhPU1hdGguYWNvc2g7bihuLlMr''@;'; put 'put ''bi5GKiEoYSYmNzEwPT1NYXRoLmZsb29yKGEoTnVtYmVyLk1BWF9WQUxVRSkpJiZhKDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbihmKXtyZXR1cm4oZj0rZik8MT9OYU46Zj45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyhmKStNYXRoLkxOMjplKGYtMStzKGYtMSkqcyhmKzEp''@;'; put 'put ''KX19KX0sNTU3NzE6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9TWF0aC5hc2luaDtuKG4uUytuLkYqIShlJiYxL2UoMCk+MCksIk1hdGgiLHthc2luaDpmdW5jdGlvbiBzKGEpe3JldHVybiBpc0Zpbml0ZShhPSthKSYmMCE9YT9hPDA/LXMoLWEpOk1hdGgubG9nKGErTWF0aC5zcXJ0KGEq''@;'; put 'put ''YSsxKSk6YX19KX0sODIzOTI6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9TWF0aC5hdGFuaDtuKG4uUytuLkYqIShlJiYxL2UoLTApPDApLCJNYXRoIix7YXRhbmg6ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PShhPSthKT9hOk1hdGgubG9nKCgxK2EpLygxLWEpKS8yfX0pfSw3MjMzNTooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5MjEyNyksZT10KDM3MzMpO24obi5TLCJNYXRoIix7Y2JydDpmdW5jdGlvbihhKXtyZXR1cm4gZShhPSthKSpNYXRoLnBvdyhNYXRoLmFicyhhKSwxLzMpfX0pfSw3NDg5NjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlMsIk1hdGgiLHtjbHozMjpmdW5jdGlv''@;'; put 'put ''bihzKXtyZXR1cm4ocz4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHMrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSw5NDUyMTooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT1NYXRoLmV4cDtuKG4uUywiTWF0aCIse2Nvc2g6ZnVuY3Rpb24oYSl7cmV0dXJuKGUoYT0rYSkrZSgtYSkpLzJ9''@;'; put 'put ''fSl9LDI5MTQ3OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KSxlPXQoNzU1NTEpO24obi5TK24uRiooZSE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTplfSl9LDQxMzE4OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUywiTWF0aCIse2Zyb3VuZDp0KDcyMTIyKX0pfSw4NDM1MjooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5MjEyNyksZT1NYXRoLmFicztuKG4uUywiTWF0aCIse2h5cG90OmZ1bmN0aW9uKGEsdSl7Zm9yKHZhciBkLHksZj0wLGk9MCx2PWFyZ3VtZW50cy5sZW5ndGgscD0wO2k8djspcDwoZD1lKGFyZ3VtZW50c1tpKytdKSk/KGY9ZiooeT1wL2QpKnkrMSxwPWQpOmYrPWQ+''@;'; put 'put ''MD8oeT1kL3ApKnk6ZDtyZXR1cm4gcD09PTEvMD8xLzA6cCpNYXRoLnNxcnQoZil9fSl9LDE1MzI3OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KSxlPU1hdGguaW11bDtuKG4uUytuLkYqdCg3OTQ0OCkoZnVuY3Rpb24oKXtyZXR1cm4tNSE9ZSg0Mjk0OTY3Mjk1LDUpfHwyIT1lLmxlbmd0aH0p''@;'; put 'put ''LCJNYXRoIix7aW11bDpmdW5jdGlvbihhLHUpe3ZhciBmPTY1NTM1LGk9K2Esdj0rdSxwPWYmaSxkPWYmdjtyZXR1cm4gMHxwKmQrKChmJmk+Pj4xNikqZCtwKihmJnY+Pj4xNik8PDE2Pj4+MCl9fSl9LDU3NTA5OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUywiTWF0aCIse2xvZzEw''@;'; put 'put ''OmZ1bmN0aW9uKHMpe3JldHVybiBNYXRoLmxvZyhzKSpNYXRoLkxPRzEwRX19KX0sMTU5MDk6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJNYXRoIix7bG9nMXA6dCg3MTQ3Myl9KX0sNzk1ODQ6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJNYXRoIix7bG9nMjpmdW5j''@;'; put 'put ''dGlvbihzKXtyZXR1cm4gTWF0aC5sb2cocykvTWF0aC5MTjJ9fSl9LDQwMzQ1OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUywiTWF0aCIse3NpZ246dCgzNzMzKX0pfSw5OTEzNDooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDc1NTUxKSxzPU1hdGguZXhwO24obi5TK24uRip0''@;'; put 'put ''KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybi0yZS0xNyE9IU1hdGguc2luaCgtMmUtMTcpfSksIk1hdGgiLHtzaW5oOmZ1bmN0aW9uKHUpe3JldHVybiBNYXRoLmFicyh1PSt1KTwxPyhlKHUpLWUoLXUpKS8yOihzKHUtMSktcygtdS0xKSkqKE1hdGguRS8yKX19KX0sNjc5MDE6KGMsbCx0KT0+''@;'; put 'put ''e3ZhciBuPXQoOTIxMjcpLGU9dCg3NTU1MSkscz1NYXRoLmV4cDtuKG4uUywiTWF0aCIse3Rhbmg6ZnVuY3Rpb24odSl7dmFyIGY9ZSh1PSt1KSxpPWUoLXUpO3JldHVybiBmPT0xLzA/MTppPT0xLzA/LTE6KGYtaSkvKHModSkrcygtdSkpfX0pfSw0NjU5MjooYyxsLHQpPT57dmFyIG49dCg5''@;'; put 'put ''MjEyNyk7bihuLlMsIk1hdGgiLHt0cnVuYzpmdW5jdGlvbihzKXtyZXR1cm4ocz4wP01hdGguZmxvb3I6TWF0aC5jZWlsKShzKX19KX0sNjQ1MDk6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDY3NTI2KSxlPXQoNTc5MTcpLHM9dCg1NTA4OSksYT10KDk4ODgwKSx1PXQoODMwNDgp''@;'; put 'put ''LGY9dCg3OTQ0OCksaT10KDU5NDE1KS5mLHY9dCg2ODY0MSkuZixwPXQoNDc5NjcpLmYsZD10KDQwNjI5KS50cmltLHk9Ik51bWJlciIsRT1uW3ldLGc9RSxEPUUucHJvdG90eXBlLEY9cyh0KDg0NzE5KShEKSk9PXkseD0idHJpbSJpbiBTdHJpbmcucHJvdG90eXBlLEE9ZnVuY3Rpb24oVCl7''@;'; put 'put ''dmFyIGI9dShULCExKTtpZigic3RyaW5nIj09dHlwZW9mIGImJmIubGVuZ3RoPjIpe3ZhciBVLFosZXQsTD0oYj14P2IudHJpbSgpOmQoYiwzKSkuY2hhckNvZGVBdCgwKTtpZig0Mz09PUx8fDQ1PT09TCl7aWYoODg9PT0oVT1iLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1VKXJldHVybiBOYU59''@;'; put 'put ''ZWxzZSBpZig0OD09PUwpe3N3aXRjaChiLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpaPTIsZXQ9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpaPTgsZXQ9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rYn1mb3IodmFyIF8sdHQ9Yi5zbGljZSgyKSxwdD0wLGR0PXR0Lmxlbmd0aDtw''@;'; put 'put ''dDxkdDtwdCsrKWlmKChfPXR0LmNoYXJDb2RlQXQocHQpKTw0OHx8Xz5ldClyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludCh0dCxaKX19cmV0dXJuK2J9O2lmKCFFKCIgMG8xIil8fCFFKCIwYjEiKXx8RSgiKzB4MSIpKXtFPWZ1bmN0aW9uKGIpe3ZhciBMPWFyZ3VtZW50cy5sZW5ndGg8MT8w''@;'; put 'put ''OmIsVT10aGlzO3JldHVybiBVIGluc3RhbmNlb2YgRSYmKEY/ZihmdW5jdGlvbigpe0QudmFsdWVPZi5jYWxsKFUpfSk6cyhVKSE9eSk/YShuZXcgZyhBKEwpKSxVLEUpOkEoTCl9O2Zvcih2YXIgTSxDPXQoMTc2Myk/aShnKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5G''@;'; put 'put ''SU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksST0wO0MubGVuZ3RoPkk7SSsr''@;'; put 'put ''KWUoZyxNPUNbSV0pJiYhZShFLE0pJiZwKEUsTSx2KGcsTSkpO0UucHJvdG90eXBlPUQsRC5jb25zdHJ1Y3Rvcj1FLHQoMjg4NTkpKG4seSxFKX19LDM0NDE5OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUywiTnVtYmVyIix7RVBTSUxPTjpNYXRoLnBvdygyLC01Mil9KX0sOTE5MzM6''@;'; put 'put ''KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg2NzUyNikuaXNGaW5pdGU7bihuLlMsIk51bWJlciIse2lzRmluaXRlOmZ1bmN0aW9uKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYSYmZShhKX19KX0sNTU1Mzg6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJOdW1iZXIiLHtp''@;'; put 'put ''c0ludGVnZXI6dCgzMzg0Mil9KX0sMzk0OTc6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihzKXtyZXR1cm4gcyE9c319KX0sNDEwNDooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDMzODQyKSxzPU1hdGguYWJzO24obi5TLCJOdW1i''@;'; put 'put ''ZXIiLHtpc1NhZmVJbnRlZ2VyOmZ1bmN0aW9uKHUpe3JldHVybiBlKHUpJiZzKHUpPD05MDA3MTk5MjU0NzQwOTkxfX0pfSw2MDIxMDooYyxsLHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSw1NjU3NjooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlMsIk51bWJlciIse01JTl9TQUZFX0lOVEVHRVI6LTkwMDcxOTkyNTQ3NDA5OTF9KX0sODQ0Mzc6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCgzMzU4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9ZSksIk51bWJlciIse3BhcnNl''@;'; put 'put ''RmxvYXQ6ZX0pfSw4ODA1MDooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDgyNzM4KTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9ZSksIk51bWJlciIse3BhcnNlSW50OmV9KX0sMzc3Mjc6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoMjcwODcpLHM9''@;'; put 'put ''dCgxNTEyMiksYT10KDI3OTI2KSx1PTEuLnRvRml4ZWQsZj1NYXRoLmZsb29yLGk9WzAsMCwwLDAsMCwwXSx2PSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixwPSIwIixkPWZ1bmN0aW9uKEYseCl7Zm9yKHZhciBBPS0xLEM9eDsrK0E8NjspaVtBXT0oQys9RippW0Fd''@;'; put 'put ''KSUxZTcsQz1mKEMvMWU3KX0seT1mdW5jdGlvbihGKXtmb3IodmFyIHg9NixBPTA7LS14Pj0wOylpW3hdPWYoKEErPWlbeF0pL0YpLEE9QSVGKjFlN30sRT1mdW5jdGlvbigpe2Zvcih2YXIgRj02LHg9IiI7LS1GPj0wOylpZigiIiE9PXh8fDA9PT1GfHwwIT09aVtGXSl7dmFyIEE9U3RyaW5n''@;'; put 'put ''KGlbRl0pO3g9IiI9PT14P0E6eCthLmNhbGwocCw3LUEubGVuZ3RoKStBfXJldHVybiB4fSxnPWZ1bmN0aW9uKEYseCxBKXtyZXR1cm4gMD09PXg/QTp4JTI9PTE/ZyhGLHgtMSxBKkYpOmcoRipGLHgvMixBKX07bihuLlArbi5GKighIXUmJigiMC4wMDAiIT09OGUtNS50b0ZpeGVkKDMpfHwi''@;'; put 'put ''MSIhPT0uOS50b0ZpeGVkKDApfHwiMS4yNSIhPT0xLjI1NS50b0ZpeGVkKDIpfHwiMTAwMDAwMDAwMDAwMDAwMDEyOCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkpfHwhdCg3OTQ0OCkoZnVuY3Rpb24oKXt1LmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b0ZpeGVkOmZ1bmN0aW9u''@;'; put 'put ''KHgpe3ZhciBULGIsTCxVLEE9cyh0aGlzLHYpLEM9ZSh4KSxJPSIiLE09cDtpZihDPDB8fEM+MjApdGhyb3cgUmFuZ2VFcnJvcih2KTtpZihBIT1BKXJldHVybiJOYU4iO2lmKEE8PS0xZTIxfHxBPj0xZTIxKXJldHVybiBTdHJpbmcoQSk7aWYoQTwwJiYoST0iLSIsQT0tQSksQT4xZS0yMSlp''@;'; put 'put ''ZihUPWZ1bmN0aW9uKEYpe2Zvcih2YXIgeD0wLEE9RjtBPj00MDk2Oyl4Kz0xMixBLz00MDk2O2Zvcig7QT49MjspeCs9MSxBLz0yO3JldHVybiB4fShBKmcoMiw2OSwxKSktNjksYj1UPDA/QSpnKDIsLVQsMSk6QS9nKDIsVCwxKSxiKj00NTAzNTk5NjI3MzcwNDk2LChUPTUyLVQpPjApe2Zv''@;'; put 'put ''cihkKDAsYiksTD1DO0w+PTc7KWQoMWU3LDApLEwtPTc7Zm9yKGQoZygxMCxMLDEpLDApLEw9VC0xO0w+PTIzOyl5KDE8PDIzKSxMLT0yMzt5KDE8PEwpLGQoMSwxKSx5KDIpLE09RSgpfWVsc2UgZCgwLGIpLGQoMTw8LVQsMCksTT1FKCkrYS5jYWxsKHAsQyk7cmV0dXJuIE09Qz4wP0krKChV''@;'; put 'put ''PU0ubGVuZ3RoKTw9Qz8iMC4iK2EuY2FsbChwLEMtVSkrTTpNLnNsaWNlKDAsVS1DKSsiLiIrTS5zbGljZShVLUMpKTpJK019fSl9LDY3MDE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoNzk0NDgpLHM9dCgxNTEyMiksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtu''@;'; put 'put ''LkYqKGUoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFlKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZil7dmFyIGk9cyh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9u''@;'; put 'put ''ISIpO3JldHVybiB2b2lkIDA9PT1mP2EuY2FsbChpKTphLmNhbGwoaSxmKX19KX0sMTE0MzA6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TK24uRiwiT2JqZWN0Iix7YXNzaWduOnQoMjgyMDYpfSl9LDkzNTooYyxsLHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlMsIk9iamVjdCIse2Ny''@;'; put 'put ''ZWF0ZTp0KDg0NzE5KX0pfSw4OTQ0ODooYyxsLHQpPT57dmFyIG49dCg5MjEyNyk7bihuLlMrbi5GKiF0KDE3NjMpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0aWVzOnQoMjE2MjYpfSl9LDY2MDY0OihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KTtuKG4uUytuLkYqIXQoMTc2MyksIk9iamVjdCIs''@;'; put 'put ''e2RlZmluZVByb3BlcnR5OnQoNDc5NjcpLmZ9KX0sNDgyMzY6KGMsbCx0KT0+e3ZhciBuPXQoNDMzMDUpLGU9dCgxMjk4OCkub25GcmVlemU7dCg4MDkyMykoImZyZWV6ZSIsZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBzJiZuKHUpP3MoZSh1KSk6dX19KX0sMjI2NDI6''@;'; put 'put ''KGMsbCx0KT0+e3ZhciBuPXQoNTcyMjEpLGU9dCg2ODY0MSkuZjt0KDgwOTIzKSgiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLHUpe3JldHVybiBlKG4oYSksdSl9fSl9LDgxODk1OihjLGwsdCk9Pnt0KDgwOTIzKSgiZ2V0T3duUHJvcGVy''@;'; put 'put ''dHlOYW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4gdCg0NzY1KS5mfSl9LDUzZTM6KGMsbCx0KT0+e3ZhciBuPXQoMTgyNzApLGU9dCg0MDYyNyk7dCg4MDkyMykoImdldFByb3RvdHlwZU9mIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZShuKGEpKX19KX0sNzkwNzM6KGMs''@;'; put 'put ''bCx0KT0+e3ZhciBuPXQoNDMzMDUpO3QoODA5MjMpKCJpc0V4dGVuc2libGUiLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4hIW4oYSkmJighZXx8ZShhKSl9fSl9LDY5MzE4OihjLGwsdCk9Pnt2YXIgbj10KDQzMzA1KTt0KDgwOTIzKSgiaXNGcm96ZW4iLGZ1bmN0aW9u''@;'; put 'put ''KGUpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4hbihhKXx8ISFlJiZlKGEpfX0pfSw2NTAzMjooYyxsLHQpPT57dmFyIG49dCg0MzMwNSk7dCg4MDkyMykoImlzU2VhbGVkIixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIW4oYSl8fCEhZSYmZShhKX19KX0sMzg0NTE6''@;'; put 'put ''KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJPYmplY3QiLHtpczp0KDczNTkpfSl9LDg4NjQ3OihjLGwsdCk9Pnt2YXIgbj10KDE4MjcwKSxlPXQoNTEzMTEpO3QoODA5MjMpKCJrZXlzIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZShuKGEpKX19KX0sMTU1''@;'; put 'put ''NzI6KGMsbCx0KT0+e3ZhciBuPXQoNDMzMDUpLGU9dCgxMjk4OCkub25GcmVlemU7dCg4MDkyMykoInByZXZlbnRFeHRlbnNpb25zIixmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIHMmJm4odSk/cyhlKHUpKTp1fX0pfSw3MzgyMjooYyxsLHQpPT57dmFyIG49dCg0MzMw''@;'; put 'put ''NSksZT10KDEyOTg4KS5vbkZyZWV6ZTt0KDgwOTIzKSgic2VhbCIsZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBzJiZuKHUpP3MoZSh1KSk6dX19KX0sMTgxMzI6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJPYmplY3QiLHtzZXRQcm90b3R5cGVPZjp0KDI1''@;'; put 'put ''MTcwKS5zZXR9KX0sMTc0ODI6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDM0ODQ4KSxlPXt9O2VbdCg2NzU3NCkoInRvU3RyaW5nVGFnIildPSJ6IixlKyIiIT0iW29iamVjdCB6XSImJnQoMjg4NTkpKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixmdW5jdGlvbigpe3JldHVy''@;'; put 'put ''biJbb2JqZWN0ICIrbih0aGlzKSsiXSJ9LCEwKX0sOTYxMDg6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCgzMzU4OSk7bihuLkcrbi5GKihwYXJzZUZsb2F0IT1lKSx7cGFyc2VGbG9hdDplfSl9LDkwNTcxOihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KSxlPXQoODI3MzgpO24obi5HK24u''@;'; put 'put ''RioocGFyc2VJbnQhPWUpLHtwYXJzZUludDplfSl9LDcxMDM6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg2MzM4Nykscz10KDQyMjgpLGE9KHQoNjc1MjYpLlJlZmxlY3R8fHt9KS5hcHBseSx1PUZ1bmN0aW9uLmFwcGx5O24obi5TK24uRiohdCg3OTQ0OCkoZnVuY3Rpb24oKXthKGZ1''@;'; put 'put ''bmN0aW9uKCl7fSl9KSwiUmVmbGVjdCIse2FwcGx5OmZ1bmN0aW9uKGksdixwKXt2YXIgZD1lKGkpLHk9cyhwKTtyZXR1cm4gYT9hKGQsdix5KTp1LmNhbGwoZCx2LHkpfX0pfSw4MjU4NjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDg0NzE5KSxzPXQoNjMzODcpLGE9dCg0MjI4KSx1''@;'; put 'put ''PXQoNDMzMDUpLGY9dCg3OTQ0OCksaT10KDE1NTM4KSx2PSh0KDY3NTI2KS5SZWZsZWN0fHx7fSkuY29uc3RydWN0LHA9ZihmdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXt9cmV0dXJuISh2KGZ1bmN0aW9uKCl7fSxbXSx5KWluc3RhbmNlb2YgeSl9KSxkPSFmKGZ1bmN0aW9uKCl7dihmdW5jdGlv''@;'; put 'put ''bigpe30pfSk7bihuLlMrbi5GKihwfHxkKSwiUmVmbGVjdCIse2NvbnN0cnVjdDpmdW5jdGlvbihFLGcpe3MoRSksYShnKTt2YXIgRD1hcmd1bWVudHMubGVuZ3RoPDM/RTpzKGFyZ3VtZW50c1syXSk7aWYoZCYmIXApcmV0dXJuIHYoRSxnLEQpO2lmKEU9PUQpe3N3aXRjaChnLmxlbmd0aCl7''@;'; put 'put ''Y2FzZSAwOnJldHVybiBuZXcgRTtjYXNlIDE6cmV0dXJuIG5ldyBFKGdbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IEUoZ1swXSxnWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBFKGdbMF0sZ1sxXSxnWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBFKGdbMF0sZ1sxXSxnWzJdLGdbM10pfXZhciBGPVtudWxs''@;'; put 'put ''XTtyZXR1cm4gRi5wdXNoLmFwcGx5KEYsZyksbmV3KGkuYXBwbHkoRSxGKSl9dmFyIHg9RC5wcm90b3R5cGUsQT1lKHUoeCk/eDpPYmplY3QucHJvdG90eXBlKSxDPUZ1bmN0aW9uLmFwcGx5LmNhbGwoRSxBLGcpO3JldHVybiB1KEMpP0M6QX19KX0sOTI1NTI6KGMsbCx0KT0+e3ZhciBuPXQo''@;'; put 'put ''NDc5NjcpLGU9dCg5MjEyNykscz10KDQyMjgpLGE9dCg4MzA0OCk7ZShlLlMrZS5GKnQoNzk0NDgpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZixp''@;'; put 'put ''LHYpe3MoZiksaT1hKGksITApLHModik7dHJ5e3JldHVybiBuLmYoZixpLHYpLCEwfWNhdGNoe3JldHVybiExfX19KX0sNDM3NjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDY4NjQxKS5mLHM9dCg0MjI4KTtuKG4uUywiUmVmbGVjdCIse2RlbGV0ZVByb3BlcnR5OmZ1bmN0aW9uKHUs''@;'; put 'put ''Zil7dmFyIGk9ZShzKHUpLGYpO3JldHVybiEoaSYmIWkuY29uZmlndXJhYmxlKSYmZGVsZXRlIHVbZl19fSl9LDc1MTUzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDQyMjgpLHM9ZnVuY3Rpb24oYSl7dGhpcy5fdD1lKGEpLHRoaXMuX2k9MDt2YXIgZix1PXRo''@;'; put 'put ''aXMuX2s9W107Zm9yKGYgaW4gYSl1LnB1c2goZil9O3QoNjAzMikocywiT2JqZWN0IixmdW5jdGlvbigpe3ZhciBmLGE9dGhpcyx1PWEuX2s7ZG97aWYoYS5faT49dS5sZW5ndGgpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX13aGlsZSghKChmPXVbYS5faSsrXSlpbiBhLl90KSk7cmV0''@;'; put 'put ''dXJue3ZhbHVlOmYsZG9uZTohMX19KSxuKG4uUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbih1KXtyZXR1cm4gbmV3IHModSl9fSl9LDUyNjUwOihjLGwsdCk9Pnt2YXIgbj10KDY4NjQxKSxlPXQoOTIxMjcpLHM9dCg0MjI4KTtlKGUuUywiUmVmbGVjdCIse2dldE93blByb3BlcnR5''@;'; put 'put ''RGVzY3JpcHRvcjpmdW5jdGlvbih1LGYpe3JldHVybiBuLmYocyh1KSxmKX19KX0sMzExMDQ6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg0MDYyNykscz10KDQyMjgpO24obi5TLCJSZWZsZWN0Iix7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odSl7cmV0dXJuIGUocyh1KSl9fSl9LDEx''@;'; put 'put ''ODc5OihjLGwsdCk9Pnt2YXIgbj10KDY4NjQxKSxlPXQoNDA2MjcpLHM9dCg1NzkxNyksYT10KDkyMTI3KSx1PXQoNDMzMDUpLGY9dCg0MjI4KTthKGEuUywiUmVmbGVjdCIse2dldDpmdW5jdGlvbiBpKHYscCl7dmFyIHksRSxkPWFyZ3VtZW50cy5sZW5ndGg8Mz92OmFyZ3VtZW50c1syXTty''@;'; put 'put ''ZXR1cm4gZih2KT09PWQ/dltwXTooeT1uLmYodixwKSk/cyh5LCJ2YWx1ZSIpP3kudmFsdWU6dm9pZCAwIT09eS5nZXQ/eS5nZXQuY2FsbChkKTp2b2lkIDA6dShFPWUodikpP2koRSxwLGQpOnZvaWQgMH19KX0sMjE4ODM6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJSZWZsZWN0''@;'; put 'put ''Iix7aGFzOmZ1bmN0aW9uKHMsYSl7cmV0dXJuIGEgaW4gc319KX0sMzU0MzM6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpLGU9dCg0MjI4KSxzPU9iamVjdC5pc0V4dGVuc2libGU7bihuLlMsIlJlZmxlY3QiLHtpc0V4dGVuc2libGU6ZnVuY3Rpb24odSl7cmV0dXJuIGUodSksIXN8fHModSl9''@;'; put 'put ''fSl9LDU1ZTM6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5TLCJSZWZsZWN0Iix7b3duS2V5czp0KDk2MjIyKX0pfSwxNTkzMjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDQyMjgpLHM9T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO24obi5TLCJSZWZsZWN0Iix7cHJldmVudEV4''@;'; put 'put ''dGVuc2lvbnM6ZnVuY3Rpb24odSl7ZSh1KTt0cnl7cmV0dXJuIHMmJnModSksITB9Y2F0Y2h7cmV0dXJuITF9fX0pfSwyNjMxNjooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDI1MTcwKTtlJiZuKG4uUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGEsdSl7ZS5jaGVj''@;'; put 'put ''ayhhLHUpO3RyeXtyZXR1cm4gZS5zZXQoYSx1KSwhMH1jYXRjaHtyZXR1cm4hMX19fSl9LDU0NDM6KGMsbCx0KT0+e3ZhciBuPXQoNDc5NjcpLGU9dCg2ODY0MSkscz10KDQwNjI3KSxhPXQoNTc5MTcpLHU9dCg5MjEyNyksZj10KDExOTk2KSxpPXQoNDIyOCksdj10KDQzMzA1KTt1KHUuUywi''@;'; put 'put ''UmVmbGVjdCIse3NldDpmdW5jdGlvbiBwKGQseSxFKXt2YXIgRix4LGc9YXJndW1lbnRzLmxlbmd0aDw0P2Q6YXJndW1lbnRzWzNdLEQ9ZS5mKGkoZCkseSk7aWYoIUQpe2lmKHYoeD1zKGQpKSlyZXR1cm4gcCh4LHksRSxnKTtEPWYoMCl9aWYoYShELCJ2YWx1ZSIpKXtpZighMT09PUQud3Jp''@;'; put 'put ''dGFibGV8fCF2KGcpKXJldHVybiExO2lmKEY9ZS5mKGcseSkpe2lmKEYuZ2V0fHxGLnNldHx8ITE9PT1GLndyaXRhYmxlKXJldHVybiExO0YudmFsdWU9RSxuLmYoZyx5LEYpfWVsc2Ugbi5mKGcseSxmKDAsRSkpO3JldHVybiEwfXJldHVybiB2b2lkIDAhPT1ELnNldCYmKEQuc2V0LmNhbGwo''@;'; put 'put ''ZyxFKSwhMCl9fSl9LDgzMDE6KGMsbCx0KT0+e3ZhciBuPXQoNjc1MjYpLGU9dCg5ODg4MCkscz10KDQ3OTY3KS5mLGE9dCg1OTQxNSkuZix1PXQoOTU0MTEpLGY9dCgxMTU4KSxpPW4uUmVnRXhwLHY9aSxwPWkucHJvdG90eXBlLGQ9L2EvZyx5PS9hL2csRT1uZXcgaShkKSE9PWQ7aWYodCgx''@;'; put 'put ''NzYzKSYmKCFFfHx0KDc5NDQ4KShmdW5jdGlvbigpe3JldHVybiB5W3QoNjc1NzQpKCJtYXRjaCIpXT0hMSxpKGQpIT1kfHxpKHkpPT15fHwiL2EvaSIhPWkoZCwiaSIpfSkpKXtpPWZ1bmN0aW9uKEEsQyl7dmFyIEk9dGhpcyBpbnN0YW5jZW9mIGksTT11KEEpLFQ9dm9pZCAwPT09QztyZXR1''@;'; put 'put ''cm4hSSYmTSYmQS5jb25zdHJ1Y3Rvcj09PWkmJlQ/QTplKEU/bmV3IHYoTSYmIVQ/QS5zb3VyY2U6QSxDKTp2KChNPUEgaW5zdGFuY2VvZiBpKT9BLnNvdXJjZTpBLE0mJlQ/Zi5jYWxsKEEpOkMpLEk/dGhpczpwLGkpfTtmb3IodmFyIGc9ZnVuY3Rpb24oeCl7eCBpbiBpfHxzKGkseCx7Y29u''@;'; put 'put ''ZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB2W3hdfSxzZXQ6ZnVuY3Rpb24oQSl7dlt4XT1BfX0pfSxEPWEodiksRj0wO0QubGVuZ3RoPkY7KWcoRFtGKytdKTtwLmNvbnN0cnVjdG9yPWksaS5wcm90b3R5cGU9cCx0KDI4ODU5KShuLCJSZWdFeHAiLGkpfXQoNTU3NjIpKCJS''@;'; put 'put ''ZWdFeHAiKX0sOTQxMTY6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDY5NjAwKTt0KDkyMTI3KSh7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDpuIT09Ly4vLmV4ZWN9LHtleGVjOm59KX0sMzk2Mzg6KGMsbCx0KT0+e3QoMTc2MykmJiJnIiE9Ly4vZy5mbGFncyYmdCg0''@;'; put 'put ''Nzk2NykuZihSZWdFeHAucHJvdG90eXBlLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6dCgxMTU4KX0pfSw0MDQwOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg0MjI4KSxlPXQoODE0ODUpLHM9dCgyODgyOCksYT10KDUyNTM1KTt0KDY5MjI4KSgibWF0Y2giLDEsZnVuY3Rp''@;'; put 'put ''b24odSxmLGksdil7cmV0dXJuW2Z1bmN0aW9uKGQpe3ZhciB5PXUodGhpcyksRT1kPy5bZl07cmV0dXJuIHZvaWQgMCE9PUU/RS5jYWxsKGQseSk6bmV3IFJlZ0V4cChkKVtmXShTdHJpbmcoeSkpfSxmdW5jdGlvbihwKXt2YXIgZD12KGkscCx0aGlzKTtpZihkLmRvbmUpcmV0dXJuIGQudmFs''@;'; put 'put ''dWU7dmFyIHk9bihwKSxFPVN0cmluZyh0aGlzKTtpZigheS5nbG9iYWwpcmV0dXJuIGEoeSxFKTt2YXIgZz15LnVuaWNvZGU7eS5sYXN0SW5kZXg9MDtmb3IodmFyIHgsRD1bXSxGPTA7bnVsbCE9PSh4PWEoeSxFKSk7KXt2YXIgQT1TdHJpbmcoeFswXSk7RFtGXT1BLCIiPT09QSYmKHkubGFz''@;'; put 'put ''dEluZGV4PXMoRSxlKHkubGFzdEluZGV4KSxnKSksRisrfXJldHVybiAwPT09Rj9udWxsOkR9XX0pfSw2ODMwNTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNDIyOCksZT10KDE4MjcwKSxzPXQoODE0ODUpLGE9dCgyNzA4NyksdT10KDI4ODI4KSxmPXQoNTI1MzUpLGk9TWF0aC5t''@;'; put 'put ''YXgsdj1NYXRoLm1pbixwPU1hdGguZmxvb3IsZD0vXCQoWyQmYCddfFxkXGQ/fDxbXj5dKj4pL2cseT0vXCQoWyQmYCddfFxkXGQ/KS9nLEU9ZnVuY3Rpb24oZyl7cmV0dXJuIHZvaWQgMD09PWc/ZzpTdHJpbmcoZyl9O3QoNjkyMjgpKCJyZXBsYWNlIiwyLGZ1bmN0aW9uKGcsRCxGLHgpe3Jl''@;'; put 'put ''dHVybltmdW5jdGlvbihJLE0pe3ZhciBUPWcodGhpcyksYj1JPy5bRF07cmV0dXJuIHZvaWQgMCE9PWI/Yi5jYWxsKEksVCxNKTpGLmNhbGwoU3RyaW5nKFQpLEksTSl9LGZ1bmN0aW9uKEMsSSl7dmFyIE09eChGLEMsdGhpcyxJKTtpZihNLmRvbmUpcmV0dXJuIE0udmFsdWU7dmFyIFQ9bihD''@;'; put 'put ''KSxiPVN0cmluZyh0aGlzKSxMPSJmdW5jdGlvbiI9PXR5cGVvZiBJO0x8fChJPVN0cmluZyhJKSk7dmFyIFU9VC5nbG9iYWw7aWYoVSl7dmFyIFo9VC51bmljb2RlO1QubGFzdEluZGV4PTB9Zm9yKHZhciBldD1bXTs7KXt2YXIgdHQ9ZihULGIpO2lmKG51bGw9PT10dHx8KGV0LnB1c2godHQp''@;'; put 'put ''LCFVKSlicmVhazsiIj09PVN0cmluZyh0dFswXSkmJihULmxhc3RJbmRleD11KGIscyhULmxhc3RJbmRleCksWikpfWZvcih2YXIgZHQ9IiIsXz0wLFY9MDtWPGV0Lmxlbmd0aDtWKyspe3R0PWV0W1ZdO2Zvcih2YXIgWT1TdHJpbmcodHRbMF0pLFg9aSh2KGEodHQuaW5kZXgpLGIubGVuZ3Ro''@;'; put 'put ''KSwwKSxydD1bXSxNdD0xO010PHR0Lmxlbmd0aDtNdCsrKXJ0LnB1c2goRSh0dFtNdF0pKTt2YXIgZ3Q9dHQuZ3JvdXBzO2lmKEwpe3ZhciBqdD1bWV0uY29uY2F0KHJ0LFgsYik7dm9pZCAwIT09Z3QmJmp0LnB1c2goZ3QpO3ZhciBOdD1TdHJpbmcoSS5hcHBseSh2b2lkIDAsanQpKX1lbHNl''@;'; put 'put ''IE50PUEoWSxiLFgscnQsZ3QsSSk7WD49XyYmKGR0Kz1iLnNsaWNlKF8sWCkrTnQsXz1YK1kubGVuZ3RoKX1yZXR1cm4gZHQrYi5zbGljZShfKX1dO2Z1bmN0aW9uIEEoQyxJLE0sVCxiLEwpe3ZhciBVPU0rQy5sZW5ndGgsWj1ULmxlbmd0aCxldD15O3JldHVybiB2b2lkIDAhPT1iJiYoYj1l''@;'; put 'put ''KGIpLGV0PWQpLEYuY2FsbChMLGV0LGZ1bmN0aW9uKHR0LHB0KXt2YXIgZHQ7c3dpdGNoKHB0LmNoYXJBdCgwKSl7Y2FzZSIkIjpyZXR1cm4iJCI7Y2FzZSImIjpyZXR1cm4gQztjYXNlImAiOnJldHVybiBJLnNsaWNlKDAsTSk7Y2FzZSInIjpyZXR1cm4gSS5zbGljZShVKTtjYXNlIjwiOmR0''@;'; put 'put ''PWJbcHQuc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIF89K3B0O2lmKDA9PT1fKXJldHVybiB0dDtpZihfPlope3ZhciBWPXAoXy8xMCk7cmV0dXJuIDA9PT1WP3R0OlY8PVo/dm9pZCAwPT09VFtWLTFdP3B0LmNoYXJBdCgxKTpUW1YtMV0rcHQuY2hhckF0KDEpOnR0fWR0PVRbXy0x''@;'; put 'put ''XX1yZXR1cm4gdm9pZCAwPT09ZHQ/IiI6ZHR9KX19KX0sNzQ3MDE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDQyMjgpLGU9dCg3MzU5KSxzPXQoNTI1MzUpO3QoNjkyMjgpKCJzZWFyY2giLDEsZnVuY3Rpb24oYSx1LGYsaSl7cmV0dXJuW2Z1bmN0aW9uKHApe3ZhciBkPWEodGhp''@;'; put 'put ''cykseT1wPy5bdV07cmV0dXJuIHZvaWQgMCE9PXk/eS5jYWxsKHAsZCk6bmV3IFJlZ0V4cChwKVt1XShTdHJpbmcoZCkpfSxmdW5jdGlvbih2KXt2YXIgcD1pKGYsdix0aGlzKTtpZihwLmRvbmUpcmV0dXJuIHAudmFsdWU7dmFyIGQ9bih2KSx5PVN0cmluZyh0aGlzKSxFPWQubGFzdEluZGV4''@;'; put 'put ''O2UoRSwwKXx8KGQubGFzdEluZGV4PTApO3ZhciBnPXMoZCx5KTtyZXR1cm4gZShkLmxhc3RJbmRleCxFKXx8KGQubGFzdEluZGV4PUUpLG51bGw9PT1nPy0xOmcuaW5kZXh9XX0pfSwyMDM0MTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoOTU0MTEpLGU9dCg0MjI4KSxzPXQoMTkx''@;'; put 'put ''OTApLGE9dCgyODgyOCksdT10KDgxNDg1KSxmPXQoNTI1MzUpLGk9dCg2OTYwMCksdj10KDc5NDQ4KSxwPU1hdGgubWluLGQ9W10ucHVzaCx5PSJzcGxpdCIsRT0ibGVuZ3RoIixnPSJsYXN0SW5kZXgiLEQ9NDI5NDk2NzI5NSxGPSF2KGZ1bmN0aW9uKCl7UmVnRXhwKEQsInkiKX0pO3QoNjky''@;'; put 'put ''MjgpKCJzcGxpdCIsMixmdW5jdGlvbih4LEEsQyxJKXt2YXIgTTtyZXR1cm4gTT0iYyI9PSJhYmJjIlt5XSgvKGIpKi8pWzFdfHw0IT0idGVzdCJbeV0oLyg/OikvLC0xKVtFXXx8MiE9ImFiIlt5XSgvKD86YWIpKi8pW0VdfHw0IT0iLiJbeV0oLyguPykoLj8pLylbRV18fCIuIlt5XSgvKCko''@;'; put 'put ''KS8pW0VdPjF8fCIiW3ldKC8uPy8pW0VdP2Z1bmN0aW9uKFQsYil7dmFyIEw9U3RyaW5nKHRoaXMpO2lmKHZvaWQgMD09PVQmJjA9PT1iKXJldHVybltdO2lmKCFuKFQpKXJldHVybiBDLmNhbGwoTCxULGIpO2Zvcih2YXIgZHQsXyxWLFU9W10sZXQ9MCx0dD12b2lkIDA9PT1iP0Q6Yj4+PjAs''@;'; put 'put ''cHQ9bmV3IFJlZ0V4cChULnNvdXJjZSwoVC5pZ25vcmVDYXNlPyJpIjoiIikrKFQubXVsdGlsaW5lPyJtIjoiIikrKFQudW5pY29kZT8idSI6IiIpKyhULnN0aWNreT8ieSI6IiIpKyJnIik7KGR0PWkuY2FsbChwdCxMKSkmJiEoKF89cHRbZ10pPmV0JiYoVS5wdXNoKEwuc2xpY2UoZXQsZHQu''@;'; put 'put ''aW5kZXgpKSxkdFtFXT4xJiZkdC5pbmRleDxMW0VdJiZkLmFwcGx5KFUsZHQuc2xpY2UoMSkpLFY9ZHRbMF1bRV0sZXQ9XyxVW0VdPj10dCkpOylwdFtnXT09PWR0LmluZGV4JiZwdFtnXSsrO3JldHVybiBldD09PUxbRV0/KFZ8fCFwdC50ZXN0KCIiKSkmJlUucHVzaCgiIik6VS5wdXNoKEwu''@;'; put 'put ''c2xpY2UoZXQpKSxVW0VdPnR0P1Uuc2xpY2UoMCx0dCk6VX06IjAiW3ldKHZvaWQgMCwwKVtFXT9mdW5jdGlvbihULGIpe3JldHVybiB2b2lkIDA9PT1UJiYwPT09Yj9bXTpDLmNhbGwodGhpcyxULGIpfTpDLFtmdW5jdGlvbihiLEwpe3ZhciBVPXgodGhpcyksWj1iPy5bQV07cmV0dXJuIHZv''@;'; put 'put ''aWQgMCE9PVo/Wi5jYWxsKGIsVSxMKTpNLmNhbGwoU3RyaW5nKFUpLGIsTCl9LGZ1bmN0aW9uKFQsYil7dmFyIEw9SShNLFQsdGhpcyxiLE0hPT1DKTtpZihMLmRvbmUpcmV0dXJuIEwudmFsdWU7dmFyIFU9ZShUKSxaPVN0cmluZyh0aGlzKSxldD1zKFUsUmVnRXhwKSx0dD1VLnVuaWNvZGUs''@;'; put 'put ''ZHQ9bmV3IGV0KEY/VToiXig/OiIrVS5zb3VyY2UrIikiLChVLmlnbm9yZUNhc2U/ImkiOiIiKSsoVS5tdWx0aWxpbmU/Im0iOiIiKSsoVS51bmljb2RlPyJ1IjoiIikrKEY/InkiOiJnIikpLF89dm9pZCAwPT09Yj9EOmI+Pj4wO2lmKDA9PT1fKXJldHVybltdO2lmKDA9PT1aLmxlbmd0aCly''@;'; put 'put ''ZXR1cm4gbnVsbD09PWYoZHQsWik/W1pdOltdO2Zvcih2YXIgVj0wLFk9MCxYPVtdO1k8Wi5sZW5ndGg7KXtkdC5sYXN0SW5kZXg9Rj9ZOjA7dmFyIE10LHJ0PWYoZHQsRj9aOlouc2xpY2UoWSkpO2lmKG51bGw9PT1ydHx8KE10PXAodShkdC5sYXN0SW5kZXgrKEY/MDpZKSksWi5sZW5ndGgp''@;'; put 'put ''KT09PVYpWT1hKFosWSx0dCk7ZWxzZXtpZihYLnB1c2goWi5zbGljZShWLFkpKSxYLmxlbmd0aD09PV8pcmV0dXJuIFg7Zm9yKHZhciBndD0xO2d0PD1ydC5sZW5ndGgtMTtndCsrKWlmKFgucHVzaChydFtndF0pLFgubGVuZ3RoPT09XylyZXR1cm4gWDtZPVY9TXR9fXJldHVybiBYLnB1c2go''@;'; put 'put ''Wi5zbGljZShWKSksWH1dfSl9LDc4NjA0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCgzOTYzOCk7dmFyIG49dCg0MjI4KSxlPXQoMTE1OCkscz10KDE3NjMpLGE9InRvU3RyaW5nIix1PS8uL1thXSxmPWZ1bmN0aW9uKGkpe3QoMjg4NTkpKFJlZ0V4cC5wcm90b3R5cGUsYSxpLCEwKX07dCg3''@;'; put 'put ''OTQ0OCkoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPXUuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pP2YoZnVuY3Rpb24oKXt2YXIgdj1uKHRoaXMpO3JldHVybiIvIi5jb25jYXQodi5zb3VyY2UsIi8iLCJmbGFncyJpbiB2P3YuZmxhZ3M6IXMmJnYgaW5zdGFuY2VvZiBSZWdFeHA/''@;'; put 'put ''ZS5jYWxsKHYpOnZvaWQgMCl9KTp1Lm5hbWUhPWEmJmYoZnVuY3Rpb24oKXtyZXR1cm4gdS5jYWxsKHRoaXMpfSl9LDcxNjMyOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCgzNjE5NyksZT10KDEyODg4KTtjLmV4cG9ydHM9dCg1ODkzMykoIlNldCIsZnVuY3Rpb24oYSl7cmV0dXJu''@;'; put 'put ''IGZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHUpe3JldHVybiBuLmRlZihlKHRoaXMsIlNldCIpLHU9MD09PXU/MDp1LHUpfX0sbil9LDY0OTc5OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCg1''@;'; put 'put ''MjQ2OCkoImFuY2hvciIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuKHRoaXMsImEiLCJuYW1lIixzKX19KX0sODkwMTE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiYmlnIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlz''@;'; put 'put ''LCJiaWciLCIiLCIiKX19KX0sNTQ1OTE6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiYmxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LDQ3MzM0OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCg1MjQ2OCko''@;'; put 'put ''ImJvbGQiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsImIiLCIiLCIiKX19KX0sMzI0MDU6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoOTEyMTIpKCExKTtuKG4uUCwiU3RyaW5nIix7Y29kZVBvaW50QXQ6ZnVuY3Rpb24oYSl7''@;'; put 'put ''cmV0dXJuIGUodGhpcyxhKX19KX0sMTcyMjQ6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KDkyMTI3KSxlPXQoODE0ODUpLHM9dCg3ODk0MiksYT0iZW5kc1dpdGgiLHU9IiJbYV07bihuLlArbi5GKnQoMjUyMDMpKGEpLCJTdHJpbmciLHtlbmRzV2l0aDpmdW5jdGlvbihpKXt2YXIg''@;'; put 'put ''dj1zKHRoaXMsaSxhKSxwPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGQ9ZSh2Lmxlbmd0aCkseT12b2lkIDA9PT1wP2Q6TWF0aC5taW4oZShwKSxkKSxFPVN0cmluZyhpKTtyZXR1cm4gdT91LmNhbGwodixFLHkpOnYuc2xpY2UoeS1FLmxlbmd0aCx5KT09PUV9fSl9''@;'; put 'put ''LDcwODM6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgiZml4ZWQiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInR0IiwiIiwiIil9fSl9LDY5MjEzOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImZvbnRjb2xvciIsZnVuY3Rpb24o''@;'; put 'put ''bil7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBuKHRoaXMsImZvbnQiLCJjb2xvciIscyl9fSl9LDM4NDM3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImZvbnRzaXplIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIG4odGhpcywiZm9udCIsInNpemUi''@;'; put 'put ''LHMpfX0pfSwxMjIyMDooYyxsLHQpPT57dmFyIG49dCg5MjEyNyksZT10KDcwMTU3KSxzPVN0cmluZy5mcm9tQ2hhckNvZGUsYT1TdHJpbmcuZnJvbUNvZGVQb2ludDtuKG4uUytuLkYqKCEhYSYmMSE9YS5sZW5ndGgpLCJTdHJpbmciLHtmcm9tQ29kZVBvaW50OmZ1bmN0aW9uKGYpe2Zvcih2''@;'; put 'put ''YXIgZCxpPVtdLHY9YXJndW1lbnRzLmxlbmd0aCxwPTA7dj5wOyl7aWYoZD0rYXJndW1lbnRzW3ArK10sZShkLDExMTQxMTEpIT09ZCl0aHJvdyBSYW5nZUVycm9yKGQrIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Iik7aS5wdXNoKGQ8NjU1MzY/cyhkKTpzKDU1Mjk2KygoZC09NjU1MzYp''@;'; put 'put ''Pj4xMCksZCUxMDI0KzU2MzIwKSl9cmV0dXJuIGkuam9pbigiIil9fSl9LDI4ODcyOihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDc4OTQyKSxzPSJpbmNsdWRlcyI7bihuLlArbi5GKnQoMjUyMDMpKHMpLCJTdHJpbmciLHtpbmNsdWRlczpmdW5jdGlvbih1KXty''@;'; put 'put ''ZXR1cm4hIX5lKHRoaXMsdSxzKS5pbmRleE9mKHUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSw2MjIyMDooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoNTI0NjgpKCJpdGFsaWNzIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlz''@;'; put 'put ''LCJpIiwiIiwiIil9fSl9LDgyOTc1OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MTIxMikoITApO3QoOTgxNzUpKFN0cmluZywiU3RyaW5nIixmdW5jdGlvbihlKXt0aGlzLl90PVN0cmluZyhlKSx0aGlzLl9pPTB9LGZ1bmN0aW9uKCl7dmFyIGEsZT10aGlzLl90LHM9dGhpcy5f''@;'; put 'put ''aTtyZXR1cm4gcz49ZS5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTooYT1uKGUscyksdGhpcy5faSs9YS5sZW5ndGgse3ZhbHVlOmEsZG9uZTohMX0pfSl9LDc2NTQ5OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dCg1MjQ2OCkoImxpbmsiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlv''@;'; put 'put ''bihzKXtyZXR1cm4gbih0aGlzLCJhIiwiaHJlZiIscyl9fSl9LDIzNDgzOihjLGwsdCk9Pnt2YXIgbj10KDkyMTI3KSxlPXQoNTcyMjEpLHM9dCg4MTQ4NSk7bihuLlMsIlN0cmluZyIse3JhdzpmdW5jdGlvbih1KXtmb3IodmFyIGY9ZSh1LnJhdyksaT1zKGYubGVuZ3RoKSx2PWFyZ3VtZW50''@;'; put 'put ''cy5sZW5ndGgscD1bXSxkPTA7aT5kOylwLnB1c2goU3RyaW5nKGZbZCsrXSkpLGQ8diYmcC5wdXNoKFN0cmluZyhhcmd1bWVudHNbZF0pKTtyZXR1cm4gcC5qb2luKCIiKX19KX0sNDQ4OTQ6KGMsbCx0KT0+e3ZhciBuPXQoOTIxMjcpO24obi5QLCJTdHJpbmciLHtyZXBlYXQ6dCgyNzkyNil9''@;'; put 'put ''KX0sNDI4MTg6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgic21hbGwiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LDEwMTc3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIG49dCg5MjEyNyksZT10KDgxNDg1''@;'; put 'put ''KSxzPXQoNzg5NDIpLGE9InN0YXJ0c1dpdGgiLHU9IiJbYV07bihuLlArbi5GKnQoMjUyMDMpKGEpLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uKGkpe3ZhciB2PXModGhpcyxpLGEpLHA9ZShNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx2Lmxl''@;'; put 'put ''bmd0aCkpLGQ9U3RyaW5nKGkpO3JldHVybiB1P3UuY2FsbCh2LGQscCk6di5zbGljZShwLHArZC5sZW5ndGgpPT09ZH19KX0sMjg1NDM6KGMsbCx0KT0+eyJ1c2Ugc3RyaWN0Ijt0KDUyNDY4KSgic3RyaWtlIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLCJz''@;'; put 'put ''dHJpa2UiLCIiLCIiKX19KX0sMzU1OTooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoNTI0NjgpKCJzdWIiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInN1YiIsIiIsIiIpfX0pfSw4NDE1MzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoNTI0NjgpKCJzdXAi''@;'; put 'put ''LGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsInN1cCIsIiIsIiIpfX0pfSwyMDk1NzooYyxsLHQpPT57InVzZSBzdHJpY3QiO3QoNDA2MjkpKCJ0cmltIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLDMpfX0pfSw5OTY1MDoo''@;'; put 'put ''YyxsLHQpPT57InVzZSBzdHJpY3QiO3ZhciBuPXQoNjc1MjYpLGU9dCg1NzkxNykscz10KDE3NjMpLGE9dCg5MjEyNyksdT10KDI4ODU5KSxmPXQoMTI5ODgpLktFWSxpPXQoNzk0NDgpLHY9dCg0NDU1NikscD10KDM4NDQpLGQ9dCg0NDE1KSx5PXQoNjc1NzQpLEU9dCg0Nzk2MCksZz10KDIz''@;'; put 'put ''MDExKSxEPXQoMTU5NjkpLEY9dCg3Nzk4MSkseD10KDQyMjgpLEE9dCg0MzMwNSksQz10KDE4MjcwKSxJPXQoNTcyMjEpLE09dCg4MzA0OCksVD10KDExOTk2KSxiPXQoODQ3MTkpLEw9dCg0NzY1KSxVPXQoNjg2NDEpLFo9dCgxMDYwKSxldD10KDQ3OTY3KSx0dD10KDUxMzExKSxwdD1VLmYs''@;'; put 'put ''ZHQ9ZXQuZixfPUwuZixWPW4uU3ltYm9sLFk9bi5KU09OLFg9WSYmWS5zdHJpbmdpZnkscnQ9InByb3RvdHlwZSIsTXQ9eSgiX2hpZGRlbiIpLGd0PXkoInRvUHJpbWl0aXZlIiksanQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsTnQ9digic3ltYm9sLXJlZ2lzdHJ5IiksX3Q9digic3ltYm9s''@;'; put 'put ''cyIpLHJuPXYoIm9wLXN5bWJvbHMiKSxMdD1PYmplY3RbcnRdLHVuPSJmdW5jdGlvbiI9PXR5cGVvZiBWJiYhIVouZixRdD1uLlFPYmplY3QsY249IVF0fHwhUXRbcnRdfHwhUXRbcnRdLmZpbmRDaGlsZCxkbj1zJiZpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPWIoZHQoe30sImEiLHtnZXQ6ZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gZHQodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24obnQsSCxRKXt2YXIgaXQ9cHQoTHQsSCk7aXQmJmRlbGV0ZSBMdFtIXSxkdChudCxILFEpLGl0JiZudCE9PUx0JiZkdChMdCxILGl0KX06ZHQscG49ZnVuY3Rpb24obnQpe3ZhciBIPV90W250''@;'; put 'put ''XT1iKFZbcnRdKTtyZXR1cm4gSC5faz1udCxIfSxobj11biYmInN5bWJvbCI9PXR5cGVvZiBWLml0ZXJhdG9yP2Z1bmN0aW9uKG50KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIG50fTpmdW5jdGlvbihudCl7cmV0dXJuIG50IGluc3RhbmNlb2YgVn0sYW49ZnVuY3Rpb24oSCxRLGl0KXtyZXR1''@;'; put 'put ''cm4gSD09PUx0JiZhbihybixRLGl0KSx4KEgpLFE9TShRLCEwKSx4KGl0KSxlKF90LFEpPyhpdC5lbnVtZXJhYmxlPyhlKEgsTXQpJiZIW010XVtRXSYmKEhbTXRdW1FdPSExKSxpdD1iKGl0LHtlbnVtZXJhYmxlOlQoMCwhMSl9KSk6KGUoSCxNdCl8fGR0KEgsTXQsVCgxLHt9KSksSFtNdF1b''@;'; put 'put ''UV09ITApLGRuKEgsUSxpdCkpOmR0KEgsUSxpdCl9LHRuPWZ1bmN0aW9uKEgsUSl7eChIKTtmb3IodmFyIGVuLGl0PUQoUT1JKFEpKSx6dD0wLHF0PWl0Lmxlbmd0aDtxdD56dDspYW4oSCxlbj1pdFt6dCsrXSxRW2VuXSk7cmV0dXJuIEh9LEVuPWZ1bmN0aW9uKEgpe3ZhciBRPWp0LmNhbGwo''@;'; put 'put ''dGhpcyxIPU0oSCwhMCkpO3JldHVybiEodGhpcz09PUx0JiZlKF90LEgpJiYhZShybixIKSkmJighKFF8fCFlKHRoaXMsSCl8fCFlKF90LEgpfHxlKHRoaXMsTXQpJiZ0aGlzW010XVtIXSl8fFEpfSxoPWZ1bmN0aW9uKEgsUSl7aWYoSD1JKEgpLFE9TShRLCEwKSxIIT09THR8fCFlKF90LFEp''@;'; put 'put ''fHxlKHJuLFEpKXt2YXIgaXQ9cHQoSCxRKTtyZXR1cm4gaXQmJmUoX3QsUSkmJiEoZShILE10KSYmSFtNdF1bUV0pJiYoaXQuZW51bWVyYWJsZT0hMCksaXR9fSxyPWZ1bmN0aW9uKEgpe2Zvcih2YXIgcXQsUT1fKEkoSCkpLGl0PVtdLHp0PTA7US5sZW5ndGg+enQ7KSFlKF90LHF0PVFbenQr''@;'; put 'put ''K10pJiZxdCE9TXQmJnF0IT1mJiZpdC5wdXNoKHF0KTtyZXR1cm4gaXR9LG89ZnVuY3Rpb24oSCl7Zm9yKHZhciBlbixRPUg9PT1MdCxpdD1fKFE/cm46SShIKSksenQ9W10scXQ9MDtpdC5sZW5ndGg+cXQ7KWUoX3QsZW49aXRbcXQrK10pJiYoIVF8fGUoTHQsZW4pKSYmenQucHVzaChfdFtl''@;'; put 'put ''bl0pO3JldHVybiB6dH07dW58fCh1KChWPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIFYpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhIik7dmFyIEg9ZChhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCksUT1mdW5jdGlvbihp''@;'; put 'put ''dCl7dGhpcz09PUx0JiZRLmNhbGwocm4saXQpLGUodGhpcyxNdCkmJmUodGhpc1tNdF0sSCkmJih0aGlzW010XVtIXT0hMSksZG4odGhpcyxILFQoMSxpdCkpfTtyZXR1cm4gcyYmY24mJmRuKEx0LEgse2NvbmZpZ3VyYWJsZTohMCxzZXQ6UX0pLHBuKEgpfSlbcnRdLCJ0b1N0cmluZyIsZnVu''@;'; put 'put ''Y3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLFUuZj1oLGV0LmY9YW4sdCg1OTQxNSkuZj1MLmY9cix0KDg0NDkpLmY9RW4sWi5mPW8scyYmIXQoMjI3NTApJiZ1KEx0LCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsRW4sITApLEUuZj1mdW5jdGlvbihudCl7cmV0dXJuIHBuKHkobnQpKX0pLGEoYS5H''@;'; put 'put ''K2EuVythLkYqIXVuLHtTeW1ib2w6Vn0pO2Zvcih2YXIgbT0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksdz0wO20u''@;'; put 'put ''bGVuZ3RoPnc7KXkobVt3KytdKTtmb3IodmFyIEs9dHQoeS5zdG9yZSksJD0wO0subGVuZ3RoPiQ7KWcoS1skKytdKTthKGEuUythLkYqIXVuLCJTeW1ib2wiLHtmb3I6ZnVuY3Rpb24obnQpe3JldHVybiBlKE50LG50Kz0iIik/TnRbbnRdOk50W250XT1WKG50KX0sa2V5Rm9yOmZ1bmN0aW9u''@;'; put 'put ''KEgpe2lmKCFobihIKSl0aHJvdyBUeXBlRXJyb3IoSCsiIGlzIG5vdCBhIHN5bWJvbCEiKTtmb3IodmFyIFEgaW4gTnQpaWYoTnRbUV09PT1IKXJldHVybiBRfSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtjbj0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Y249ITF9fSksYShhLlMrYS5GKiF1biwi''@;'; put 'put ''T2JqZWN0Iix7Y3JlYXRlOmZ1bmN0aW9uKEgsUSl7cmV0dXJuIHZvaWQgMD09PVE/YihIKTp0bihiKEgpLFEpfSxkZWZpbmVQcm9wZXJ0eTphbixkZWZpbmVQcm9wZXJ0aWVzOnRuLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjpoLGdldE93blByb3BlcnR5TmFtZXM6cixnZXRPd25Qcm9wZXJ0''@;'; put 'put ''eVN5bWJvbHM6b30pO3ZhciBSdD1pKGZ1bmN0aW9uKCl7Wi5mKDEpfSk7YShhLlMrYS5GKlJ0LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24oSCl7cmV0dXJuIFouZihDKEgpKX19KSxZJiZhKGEuUythLkYqKCF1bnx8aShmdW5jdGlvbigpe3ZhciBudD1WKCk7cmV0''@;'; put 'put ''dXJuIltudWxsXSIhPVgoW250XSl8fCJ7fSIhPVgoe2E6bnR9KXx8Int9IiE9WChPYmplY3QobnQpKX0pKSwiSlNPTiIse3N0cmluZ2lmeTpmdW5jdGlvbihIKXtmb3IodmFyIHp0LHF0LFE9W0hdLGl0PTE7YXJndW1lbnRzLmxlbmd0aD5pdDspUS5wdXNoKGFyZ3VtZW50c1tpdCsrXSk7aWYo''@;'; put 'put ''cXQ9enQ9UVsxXSwoQSh6dCl8fHZvaWQgMCE9PUgpJiYhaG4oSCkpcmV0dXJuIEYoenQpfHwoenQ9ZnVuY3Rpb24oZW4sbW4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBxdCYmKG1uPXF0LmNhbGwodGhpcyxlbixtbikpLCFobihtbikpcmV0dXJuIG1ufSksUVsxXT16dCxYLmFwcGx5KFksUSl9''@;'; put 'put ''fSksVltydF1bZ3RdfHx0KDMzMzQxKShWW3J0XSxndCxWW3J0XS52YWx1ZU9mKSxwKFYsIlN5bWJvbCIpLHAoTWF0aCwiTWF0aCIsITApLHAobi5KU09OLCJKU09OIiwhMCl9LDc5Mzk3OihjLGwsdCk9PnsidXNlIHN0cmljdCI7dmFyIEYsbj10KDY3NTI2KSxlPXQoNjYxNzkpKDApLHM9dCgy''@;'; put 'put ''ODg1OSksYT10KDEyOTg4KSx1PXQoMjgyMDYpLGY9dCg5OTg4MiksaT10KDQzMzA1KSx2PXQoMTI4ODgpLHA9dCgxMjg4OCksZD0hbi5BY3RpdmVYT2JqZWN0JiYiQWN0aXZlWE9iamVjdCJpbiBuLHk9IldlYWtNYXAiLEU9YS5nZXRXZWFrLGc9T2JqZWN0LmlzRXh0ZW5zaWJsZSxEPWYudWZz''@;'; put 'put ''dG9yZSx4PWZ1bmN0aW9uKEkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sQT17Z2V0OmZ1bmN0aW9uKE0pe2lmKGkoTSkpe3ZhciBUPUUoTSk7cmV0dXJuITA9PT1UP0Qodih0aGlzLHkpKS5nZXQoTSk6''@;'; put 'put ''VD9UW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbihNLFQpe3JldHVybiBmLmRlZih2KHRoaXMseSksTSxUKX19LEM9Yy5leHBvcnRzPXQoNTg5MzMpKHkseCxBLGYsITAsITApO3AmJmQmJih1KChGPWYuZ2V0Q29uc3RydWN0b3IoeCx5KSkucHJvdG90eXBlLEEpLGEuTkVFRD0hMCxl''@;'; put 'put ''KFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0sZnVuY3Rpb24oSSl7dmFyIE09Qy5wcm90b3R5cGUsVD1NW0ldO3MoTSxJLGZ1bmN0aW9uKGIsTCl7aWYoaShiKSYmIWcoYikpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyBGKTt2YXIgVT10aGlzLl9mW0ldKGIsTCk7cmV0dXJuInNldCI9PUk/''@;'; put 'put ''dGhpczpVfXJldHVybiBULmNhbGwodGhpcyxiLEwpfSl9KSl9LDc3NDkxOihjLGwsdCk9Pnt2YXIgbj10KDk3MzgwKSxlPXQoNDIyOCkscz1uLmtleSxhPW4uc2V0O24uZXhwKHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlvbihmLGksdixwKXthKGYsaSxlKHYpLHMocCkpfX0pfSw3NDkwNzooYyxs''@;'; put 'put ''LHQpPT57dmFyIG49dCg5NzM4MCksZT10KDQyMjgpLHM9bi5rZXksYT1uLm1hcCx1PW4uc3RvcmU7bi5leHAoe2RlbGV0ZU1ldGFkYXRhOmZ1bmN0aW9uKGksdil7dmFyIHA9YXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpzKGFyZ3VtZW50c1syXSksZD1hKGUodikscCwhMSk7aWYodm9pZCAw''@;'; put 'put ''PT09ZHx8IWQuZGVsZXRlKGkpKXJldHVybiExO2lmKGQuc2l6ZSlyZXR1cm4hMDt2YXIgeT11LmdldCh2KTtyZXR1cm4geS5kZWxldGUocCksISF5LnNpemV8fHUuZGVsZXRlKHYpfX0pfSwxOTI2OTooYyxsLHQpPT57dmFyIG49dCg3MTYzMiksZT10KDgwOTU2KSxzPXQoOTczODApLGE9dCg0''@;'; put 'put ''MjI4KSx1PXQoNDA2MjcpLGY9cy5rZXlzLGk9cy5rZXksdj1mdW5jdGlvbihwLGQpe3ZhciB5PWYocCxkKSxFPXUocCk7aWYobnVsbD09PUUpcmV0dXJuIHk7dmFyIGc9dihFLGQpO3JldHVybiBnLmxlbmd0aD95Lmxlbmd0aD9lKG5ldyBuKHkuY29uY2F0KGcpKSk6Zzp5fTtzLmV4cCh7Z2V0''@;'; put 'put ''TWV0YWRhdGFLZXlzOmZ1bmN0aW9uKGQpe3JldHVybiB2KGEoZCksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDppKGFyZ3VtZW50c1sxXSkpfX0pfSw3OTEwMDooYyxsLHQpPT57dmFyIG49dCg5NzM4MCksZT10KDQyMjgpLHM9dCg0MDYyNyksYT1uLmhhcyx1PW4uZ2V0LGY9bi5rZXksaT1m''@;'; put 'put ''dW5jdGlvbih2LHAsZCl7aWYoYSh2LHAsZCkpcmV0dXJuIHUodixwLGQpO3ZhciBFPXMocCk7cmV0dXJuIG51bGwhPT1FP2kodixFLGQpOnZvaWQgMH07bi5leHAoe2dldE1ldGFkYXRhOmZ1bmN0aW9uKHAsZCl7cmV0dXJuIGkocCxlKGQpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6Zihh''@;'; put 'put ''cmd1bWVudHNbMl0pKX19KX0sNzk3MzI6KGMsbCx0KT0+e3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPW4ua2V5cyxhPW4ua2V5O24uZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24oZil7cmV0dXJuIHMoZShmKSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOmEoYXJndW1lbnRz''@;'; put 'put ''WzFdKSl9fSl9LDkxMzE5OihjLGwsdCk9Pnt2YXIgbj10KDk3MzgwKSxlPXQoNDIyOCkscz1uLmdldCxhPW4ua2V5O24uZXhwKHtnZXRPd25NZXRhZGF0YTpmdW5jdGlvbihmLGkpe3JldHVybiBzKGYsZShpKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmEoYXJndW1lbnRzWzJdKSl9fSl9''@;'; put 'put ''LDExNzY6KGMsbCx0KT0+e3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPXQoNDA2MjcpLGE9bi5oYXMsdT1uLmtleSxmPWZ1bmN0aW9uKGksdixwKXtpZihhKGksdixwKSlyZXR1cm4hMDt2YXIgeT1zKHYpO3JldHVybiBudWxsIT09eSYmZihpLHkscCl9O24uZXhwKHtoYXNNZXRhZGF0YTpm''@;'; put 'put ''dW5jdGlvbih2LHApe3JldHVybiBmKHYsZShwKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnUoYXJndW1lbnRzWzJdKSl9fSl9LDMxMDc6KGMsbCx0KT0+e3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPW4uaGFzLGE9bi5rZXk7bi5leHAoe2hhc093bk1ldGFkYXRhOmZ1bmN0aW9uKGYs''@;'; put 'put ''aSl7cmV0dXJuIHMoZixlKGkpLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6YShhcmd1bWVudHNbMl0pKX19KX0sNjE2OTE6KGMsbCx0KT0+e3ZhciBuPXQoOTczODApLGU9dCg0MjI4KSxzPXQoNjMzODcpLGE9bi5rZXksdT1uLnNldDtuLmV4cCh7bWV0YWRhdGE6ZnVuY3Rpb24oaSx2KXty''@;'; put 'put ''ZXR1cm4gZnVuY3Rpb24oZCx5KXt1KGksdiwodm9pZCAwIT09eT9lOnMpKGQpLGEoeSkpfX19KX0sMzU4OTA6KGMsbCx0KT0+e2Zvcih2YXIgbj10KDk1MTY1KSxlPXQoNTEzMTEpLHM9dCgyODg1OSksYT10KDY3NTI2KSx1PXQoMzMzNDEpLGY9dCg2MDkwNiksaT10KDY3NTc0KSx2PWkoIml0''@;'; put 'put ''ZXJhdG9yIikscD1pKCJ0b1N0cmluZ1RhZyIpLGQ9Zi5BcnJheSx5PXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlzdDohMCxEYXRh''@;'; put 'put ''VHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiExLE5vZGVMaXN0''@;'; put 'put ''OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNvdXJjZUJ1ZmZl''@;'; put 'put ''ckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sRT1lKHkpLGc9MDtnPEUubGVuZ3RoO2crKyl7dmFyIEMsRD1FW2ddLEY9eVtEXSx4PWFbRF0sQT14JiZ4LnByb3RvdHlwZTtpZihBJiYoQVt2XXx8dShB''@;'; put 'put ''LHYsZCksQVtwXXx8dShBLHAsRCksZltEXT1kLEYpKWZvcihDIGluIG4pQVtDXXx8cyhBLEMsbltDXSwhMCl9fSw4MjU3NDpjPT57InVzZSBzdHJpY3QiO2MuZXhwb3J0cz1KU09OLnBhcnNlKCd7ImxvY2FsZSI6ImVuIiwiZGF0ZSI6eyJjYSI6WyJncmVnb3J5IiwiYnVkZGhpc3QiLCJjaGlu''@;'; put 'put ''ZXNlIiwiY29wdGljIiwiZGFuZ2kiLCJldGhpb2FhIiwiZXRoaW9waWMiLCJnZW5lcmljIiwiaGVicmV3IiwiaW5kaWFuIiwiaXNsYW1pYyIsImlzbGFtaWNjIiwiamFwYW5lc2UiLCJwZXJzaWFuIiwicm9jIl0sImhvdXJObzAiOnRydWUsImhvdXIxMiI6dHJ1ZSwiZm9ybWF0cyI6eyJzaG9y''@;'; put 'put ''dCI6InsxfSwgezB9IiwibWVkaXVtIjoiezF9LCB7MH0iLCJmdWxsIjoiezF9IFwnYXRcJyB7MH0iLCJsb25nIjoiezF9IFwnYXRcJyB7MH0iLCJhdmFpbGFibGVGb3JtYXRzIjp7ImQiOiJkIiwiRSI6ImNjYyIsIkVkIjoiZCBFIiwiRWhtIjoiRSBoOm1tIGEiLCJFSG0iOiJFIEhIOm1tIiwi''@;'; put 'put ''RWhtcyI6IkUgaDptbTpzcyBhIiwiRUhtcyI6IkUgSEg6bW06c3MiLCJHeSI6InkgRyIsIkd5TU1NIjoiTU1NIHkgRyIsIkd5TU1NZCI6Ik1NTSBkLCB5IEciLCJHeU1NTUVkIjoiRSwgTU1NIGQsIHkgRyIsImgiOiJoIGEiLCJIIjoiSEgiLCJobSI6Img6bW0gYSIsIkhtIjoiSEg6bW0iLCJo''@;'; put 'put ''bXMiOiJoOm1tOnNzIGEiLCJIbXMiOiJISDptbTpzcyIsImhtc3YiOiJoOm1tOnNzIGEgdiIsIkhtc3YiOiJISDptbTpzcyB2IiwiaG12IjoiaDptbSBhIHYiLCJIbXYiOiJISDptbSB2IiwiTSI6IkwiLCJNZCI6Ik0vZCIsIk1FZCI6IkUsIE0vZCIsIk1NTSI6IkxMTCIsIk1NTWQiOiJNTU0g''@;'; put 'put ''ZCIsIk1NTUVkIjoiRSwgTU1NIGQiLCJNTU1NZCI6Ik1NTU0gZCIsIm1zIjoibW06c3MiLCJ5IjoieSIsInlNIjoiTS95IiwieU1kIjoiTS9kL3kiLCJ5TUVkIjoiRSwgTS9kL3kiLCJ5TU1NIjoiTU1NIHkiLCJ5TU1NZCI6Ik1NTSBkLCB5IiwieU1NTUVkIjoiRSwgTU1NIGQsIHkiLCJ5TU1N''@;'; put 'put ''TSI6Ik1NTU0geSIsInlRUVEiOiJRUVEgeSIsInlRUVFRIjoiUVFRUSB5In0sImRhdGVGb3JtYXRzIjp7InlNTU1NRUVFRWQiOiJFRUVFLCBNTU1NIGQsIHkiLCJ5TU1NTWQiOiJNTU1NIGQsIHkiLCJ5TU1NZCI6Ik1NTSBkLCB5IiwieU1kIjoiTS9kL3l5In0sInRpbWVGb3JtYXRzIjp7Imht''@;'; put 'put ''bXNzenp6eiI6Img6bW06c3MgYSB6enp6IiwiaG1zeiI6Img6bW06c3MgYSB6IiwiaG1zIjoiaDptbTpzcyBhIiwiaG0iOiJoOm1tIGEifX0sImNhbGVuZGFycyI6eyJidWRkaGlzdCI6eyJtb250aHMiOnsibmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8i''@;'; put 'put ''LCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3Qi''@;'; put 'put ''LCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJN''@;'; put 'put ''b25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQkUiXSwic2hvcnQiOlsiQkUiXSwibG9uZyI6WyJCRSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiY2hpbmVzZSI6eyJt''@;'; put 'put ''b250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNbzEiLCJNbzIiLCJNbzMiLCJNbzQiLCJNbzUiLCJNbzYiLCJNbzciLCJNbzgiLCJNbzkiLCJNbzEwIiwiTW8xMSIsIk1vMTIiXSwibG9uZyI6WyJN''@;'; put 'put ''b250aDEiLCJNb250aDIiLCJNb250aDMiLCJNb250aDQiLCJNb250aDUiLCJNb250aDYiLCJNb250aDciLCJNb250aDgiLCJNb250aDkiLCJNb250aDEwIiwiTW9udGgxMSIsIk1vbnRoMTIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQi''@;'; put 'put ''OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImNv''@;'; put 'put ''cHRpYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIl0sInNob3J0IjpbIlRvdXQiLCJCYWJhIiwiSGF0b3IiLCJLaWFoayIsIlRvYmEiLCJBbXNoaXIiLCJCYXJhbWhhdCIsIkJhcmFtb3VkYSIsIkJh''@;'; put 'put ''c2hhbnMiLCJQYW9uYSIsIkVwZXAiLCJNZXNyYSIsIk5hc2llIl0sImxvbmciOlsiVG91dCIsIkJhYmEiLCJIYXRvciIsIktpYWhrIiwiVG9iYSIsIkFtc2hpciIsIkJhcmFtaGF0IiwiQmFyYW1vdWRhIiwiQmFzaGFucyIsIlBhb25hIiwiRXBlcCIsIk1lc3JhIiwiTmFzaWUiXX0sImRheXMi''@;'; put 'put ''OnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0''@;'; put 'put ''dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkVSQTAiLCJFUkExIl0sInNob3J0IjpbIkVSQTAiLCJFUkExIl0sImxvbmciOlsiRVJBMCIsIkVSQTEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImRhbmdpIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIz''@;'; put 'put ''IiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIk1vMSIsIk1vMiIsIk1vMyIsIk1vNCIsIk1vNSIsIk1vNiIsIk1vNyIsIk1vOCIsIk1vOSIsIk1vMTAiLCJNbzExIiwiTW8xMiJdLCJsb25nIjpbIk1vbnRoMSIsIk1vbnRoMiIsIk1vbnRoMyIsIk1v''@;'; put 'put ''bnRoNCIsIk1vbnRoNSIsIk1vbnRoNiIsIk1vbnRoNyIsIk1vbnRoOCIsIk1vbnRoOSIsIk1vbnRoMTAiLCJNb250aDExIiwiTW9udGgxMiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJU''@;'; put 'put ''aHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZXRoaW9waWMiOnsibW9udGhzIjp7Im5hcnJvdyI6''@;'; put 'put ''WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyJdLCJzaG9ydCI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJO''@;'; put 'put ''ZWhhc3NlIiwiUGFndW1lbiJdLCJsb25nIjpbIk1lc2tlcmVtIiwiVGVrZW10IiwiSGVkYXIiLCJUYWhzYXMiLCJUZXIiLCJZZWthdGl0IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFzc2UiLCJQYWd1bWVuIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJT''@;'; put 'put ''IiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFz''@;'; put 'put ''Ijp7Im5hcnJvdyI6WyJFUkEwIiwiRVJBMSJdLCJzaG9ydCI6WyJFUkEwIiwiRVJBMSJdLCJsb25nIjpbIkVSQTAiLCJFUkExIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJldGhpb2FhIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2''@;'; put 'put ''IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSwic2hvcnQiOlsiTWVza2VyZW0iLCJUZWtlbXQiLCJIZWRhciIsIlRhaHNhcyIsIlRlciIsIllla2F0aXQiLCJNZWdhYml0IiwiTWlhemlhIiwiR2VuYm90IiwiU2VuZSIsIkhhbWxlIiwiTmVoYXNzZSIsIlBhZ3VtZW4iXSwibG9u''@;'; put 'put ''ZyI6WyJNZXNrZXJlbSIsIlRla2VtdCIsIkhlZGFyIiwiVGFoc2FzIiwiVGVyIiwiWWVrYXRpdCIsIk1lZ2FiaXQiLCJNaWF6aWEiLCJHZW5ib3QiLCJTZW5lIiwiSGFtbGUiLCJOZWhhc3NlIiwiUGFndW1lbiJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwi''@;'; put 'put ''UyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiRVJBMCJdLCJz''@;'; put 'put ''aG9ydCI6WyJFUkEwIl0sImxvbmciOlsiRVJBMCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwiZ2VuZXJpYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNMDEi''@;'; put 'put ''LCJNMDIiLCJNMDMiLCJNMDQiLCJNMDUiLCJNMDYiLCJNMDciLCJNMDgiLCJNMDkiLCJNMTAiLCJNMTEiLCJNMTIiXSwibG9uZyI6WyJNMDEiLCJNMDIiLCJNMDMiLCJNMDQiLCJNMDUiLCJNMDYiLCJNMDciLCJNMDgiLCJNMDkiLCJNMTAiLCJNMTEiLCJNMTIiXX0sImRheXMiOnsibmFycm93''@;'; put 'put ''IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0s''@;'; put 'put ''ImVyYXMiOnsibmFycm93IjpbIkVSQTAiLCJFUkExIl0sInNob3J0IjpbIkVSQTAiLCJFUkExIl0sImxvbmciOlsiRVJBMCIsIkVSQTEiXX0sImRheVBlcmlvZHMiOnsiYW0iOiJBTSIsInBtIjoiUE0ifX0sImdyZWdvcnkiOnsibW9udGhzIjp7Im5hcnJvdyI6WyJKIiwiRiIsIk0iLCJBIiwi''@;'; put 'put ''TSIsIkoiLCJKIiwiQSIsIlMiLCJPIiwiTiIsIkQiXSwic2hvcnQiOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sImxvbmciOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIs''@;'; put 'put ''Ikp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXX0sImRheXMiOnsibmFycm93IjpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSwic2hvcnQiOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0''@;'; put 'put ''Il0sImxvbmciOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sImVyYXMiOnsibmFycm93IjpbIkIiLCJBIiwiQkNFIiwiQ0UiXSwic2hvcnQiOlsiQkMiLCJBRCIsIkJDRSIsIkNFIl0sImxvbmciOlsiQmVm''@;'; put 'put ''b3JlIENocmlzdCIsIkFubm8gRG9taW5pIiwiQmVmb3JlIENvbW1vbiBFcmEiLCJDb21tb24gRXJhIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJoZWJyZXciOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIx''@;'; put 'put ''MCIsIjExIiwiMTIiLCIxMyIsIjciXSwic2hvcnQiOlsiVGlzaHJpIiwiSGVzaHZhbiIsIktpc2xldiIsIlRldmV0IiwiU2hldmF0IiwiQWRhciBJIiwiQWRhciIsIk5pc2FuIiwiSXlhciIsIlNpdmFuIiwiVGFtdXoiLCJBdiIsIkVsdWwiLCJBZGFyIElJIl0sImxvbmciOlsiVGlzaHJpIiwi''@;'; put 'put ''SGVzaHZhbiIsIktpc2xldiIsIlRldmV0IiwiU2hldmF0IiwiQWRhciBJIiwiQWRhciIsIk5pc2FuIiwiSXlhciIsIlNpdmFuIiwiVGFtdXoiLCJBdiIsIkVsdWwiLCJBZGFyIElJIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1''@;'; put 'put ''biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBTSJdLCJzaG9ydCI6WyJBTSJdLCJsb25n''@;'; put 'put ''IjpbIkFNIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJpbmRpYW4iOnsibW9udGhzIjp7Im5hcnJvdyI6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSwic2hvcnQiOlsiQ2hhaXRyYSIsIlZhaXNha2hhIiwiSnlhaXN0''@;'; put 'put ''aGEiLCJBc2FkaGEiLCJTcmF2YW5hIiwiQmhhZHJhIiwiQXN2aW5hIiwiS2FydGlrYSIsIkFncmFoYXlhbmEiLCJQYXVzYSIsIk1hZ2hhIiwiUGhhbGd1bmEiXSwibG9uZyI6WyJDaGFpdHJhIiwiVmFpc2FraGEiLCJKeWFpc3RoYSIsIkFzYWRoYSIsIlNyYXZhbmEiLCJCaGFkcmEiLCJBc3Zp''@;'; put 'put ''bmEiLCJLYXJ0aWthIiwiQWdyYWhheWFuYSIsIlBhdXNhIiwiTWFnaGEiLCJQaGFsZ3VuYSJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJT''@;'; put 'put ''dW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiU2FrYSJdLCJzaG9ydCI6WyJTYWthIl0sImxvbmciOlsiU2FrYSJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9''@;'; put 'put ''fSwiaXNsYW1pYyI6eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNdWguIiwiU2FmLiIsIlJhYi4gSSIsIlJhYi4gSUkiLCJKdW0uIEkiLCJKdW0uIElJIiwiUmFqLiIsIlNoYS4iLCJSYW0u''@;'; put 'put ''IiwiU2hhdy4iLCJEaHVcdTAyYmJsLVEuIiwiRGh1XHUwMmJibC1ILiJdLCJsb25nIjpbIk11aGFycmFtIiwiU2FmYXIiLCJSYWJpXHUwMmJiIEkiLCJSYWJpXHUwMmJiIElJIiwiSnVtYWRhIEkiLCJKdW1hZGEgSUkiLCJSYWphYiIsIlNoYVx1MDJiYmJhbiIsIlJhbWFkYW4iLCJTaGF3d2Fs''@;'; put 'put ''IiwiRGh1XHUwMmJibC1RaVx1MDJiYmRhaCIsIkRodVx1MDJiYmwtSGlqamFoIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIs''@;'; put 'put ''Ik1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBSCJdLCJzaG9ydCI6WyJBSCJdLCJsb25nIjpbIkFIIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJpc2xhbWljYyI6''@;'; put 'put ''eyJtb250aHMiOnsibmFycm93IjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLCJzaG9ydCI6WyJNdWguIiwiU2FmLiIsIlJhYi4gSSIsIlJhYi4gSUkiLCJKdW0uIEkiLCJKdW0uIElJIiwiUmFqLiIsIlNoYS4iLCJSYW0uIiwiU2hhdy4iLCJE''@;'; put 'put ''aHVcdTAyYmJsLVEuIiwiRGh1XHUwMmJibC1ILiJdLCJsb25nIjpbIk11aGFycmFtIiwiU2FmYXIiLCJSYWJpXHUwMmJiIEkiLCJSYWJpXHUwMmJiIElJIiwiSnVtYWRhIEkiLCJKdW1hZGEgSUkiLCJSYWphYiIsIlNoYVx1MDJiYmJhbiIsIlJhbWFkYW4iLCJTaGF3d2FsIiwiRGh1XHUwMmJi''@;'; put 'put ''bC1RaVx1MDJiYmRhaCIsIkRodVx1MDJiYmwtSGlqamFoIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1''@;'; put 'put ''ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJBSCJdLCJzaG9ydCI6WyJBSCJdLCJsb25nIjpbIkFIIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJqYXBhbmVzZSI6eyJtb250aHMiOnsi''@;'; put 'put ''bmFycm93IjpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLCJzaG9ydCI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwibG9uZyI6WyJKYW51YXJ5IiwiRmVicnVh''@;'; put 'put ''cnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwiUyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJU''@;'; put 'put ''dWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiVGFpa2EgKDY0NVx1MjAxMzY1MCkiLCJIYWt1Y2hpICg2NTBc''@;'; put 'put ''dTIwMTM2NzEpIiwiSGFrdWhcdTAxNGQgKDY3Mlx1MjAxMzY4NikiLCJTaHVjaFx1MDE0ZCAoNjg2XHUyMDEzNzAxKSIsIlRhaWhcdTAxNGQgKDcwMVx1MjAxMzcwNCkiLCJLZWl1biAoNzA0XHUyMDEzNzA4KSIsIldhZFx1MDE0ZCAoNzA4XHUyMDEzNzE1KSIsIlJlaWtpICg3MTVcdTIwMTM3''@;'; put 'put ''MTcpIiwiWVx1MDE0ZHJcdTAxNGQgKDcxN1x1MjAxMzcyNCkiLCJKaW5raSAoNzI0XHUyMDEzNzI5KSIsIlRlbnB5XHUwMTRkICg3MjlcdTIwMTM3NDkpIiwiVGVucHlcdTAxNGQta2FtcFx1MDE0ZCAoNzQ5LTc0OSkiLCJUZW5weVx1MDE0ZC1zaFx1MDE0ZGhcdTAxNGQgKDc0OS03NTcpIiwi''@;'; put 'put ''VGVucHlcdTAxNGQtaFx1MDE0ZGppICg3NTctNzY1KSIsIlRlbnB5XHUwMTRkLWppbmdvICg3NjUtNzY3KSIsIkppbmdvLWtlaXVuICg3NjctNzcwKSIsIkhcdTAxNGRraSAoNzcwXHUyMDEzNzgwKSIsIlRlbi1cdTAxNGQgKDc4MS03ODIpIiwiRW5yeWFrdSAoNzgyXHUyMDEzODA2KSIsIkRh''@;'; put 'put ''aWRcdTAxNGQgKDgwNlx1MjAxMzgxMCkiLCJLXHUwMTRkbmluICg4MTBcdTIwMTM4MjQpIiwiVGVuY2hcdTAxNGQgKDgyNFx1MjAxMzgzNCkiLCJKXHUwMTRkd2EgKDgzNFx1MjAxMzg0OCkiLCJLYWpcdTAxNGQgKDg0OFx1MjAxMzg1MSkiLCJOaW5qdSAoODUxXHUyMDEzODU0KSIsIlNhaWtc''@;'; put 'put ''dTAxNGQgKDg1NFx1MjAxMzg1NykiLCJUZW4tYW4gKDg1Ny04NTkpIiwiSlx1MDE0ZGdhbiAoODU5XHUyMDEzODc3KSIsIkdhbmd5XHUwMTRkICg4NzdcdTIwMTM4ODUpIiwiTmlubmEgKDg4NVx1MjAxMzg4OSkiLCJLYW5weVx1MDE0ZCAoODg5XHUyMDEzODk4KSIsIlNoXHUwMTRkdGFpICg4''@;'; put 'put ''OThcdTIwMTM5MDEpIiwiRW5naSAoOTAxXHUyMDEzOTIzKSIsIkVuY2hcdTAxNGQgKDkyM1x1MjAxMzkzMSkiLCJKXHUwMTRkaGVpICg5MzFcdTIwMTM5MzgpIiwiVGVuZ3lcdTAxNGQgKDkzOFx1MjAxMzk0NykiLCJUZW5yeWFrdSAoOTQ3XHUyMDEzOTU3KSIsIlRlbnRva3UgKDk1N1x1MjAx''@;'; put 'put ''Mzk2MSkiLCJcdTAxNGN3YSAoOTYxXHUyMDEzOTY0KSIsIktcdTAxNGRoXHUwMTRkICg5NjRcdTIwMTM5NjgpIiwiQW5uYSAoOTY4XHUyMDEzOTcwKSIsIlRlbnJva3UgKDk3MFx1MjAxMzk3MykiLCJUZW5cdTIwMTllbiAoOTczXHUyMDEzOTc2KSIsIkpcdTAxNGRnZW4gKDk3Nlx1MjAxMzk3''@;'; put 'put ''OCkiLCJUZW5nZW4gKDk3OFx1MjAxMzk4MykiLCJFaWthbiAoOTgzXHUyMDEzOTg1KSIsIkthbm5hICg5ODVcdTIwMTM5ODcpIiwiRWllbiAoOTg3XHUyMDEzOTg5KSIsIkVpc28gKDk4OVx1MjAxMzk5MCkiLCJTaFx1MDE0ZHJ5YWt1ICg5OTBcdTIwMTM5OTUpIiwiQ2hcdTAxNGR0b2t1ICg5''@;'; put 'put ''OTVcdTIwMTM5OTkpIiwiQ2hcdTAxNGRoXHUwMTRkICg5OTlcdTIwMTMxMDA0KSIsIkthbmtcdTAxNGQgKDEwMDRcdTIwMTMxMDEyKSIsIkNoXHUwMTRkd2EgKDEwMTJcdTIwMTMxMDE3KSIsIkthbm5pbiAoMTAxN1x1MjAxMzEwMjEpIiwiSmlhbiAoMTAyMVx1MjAxMzEwMjQpIiwiTWFuanUg''@;'; put 'put ''KDEwMjRcdTIwMTMxMDI4KSIsIkNoXHUwMTRkZ2VuICgxMDI4XHUyMDEzMTAzNykiLCJDaFx1MDE0ZHJ5YWt1ICgxMDM3XHUyMDEzMTA0MCkiLCJDaFx1MDE0ZGt5XHUwMTZiICgxMDQwXHUyMDEzMTA0NCkiLCJLYW50b2t1ICgxMDQ0XHUyMDEzMTA0NikiLCJFaXNoXHUwMTRkICgxMDQ2XHUy''@;'; put 'put ''MDEzMTA1MykiLCJUZW5naSAoMTA1M1x1MjAxMzEwNTgpIiwiS1x1MDE0ZGhlaSAoMTA1OFx1MjAxMzEwNjUpIiwiSmlyeWFrdSAoMTA2NVx1MjAxMzEwNjkpIiwiRW5reVx1MDE2YiAoMTA2OVx1MjAxMzEwNzQpIiwiU2hcdTAxNGRobyAoMTA3NFx1MjAxMzEwNzcpIiwiU2hcdTAxNGRyeWFr''@;'; put 'put ''dSAoMTA3N1x1MjAxMzEwODEpIiwiRWloXHUwMTRkICgxMDgxXHUyMDEzMTA4NCkiLCJcdTAxNGN0b2t1ICgxMDg0XHUyMDEzMTA4NykiLCJLYW5qaSAoMTA4N1x1MjAxMzEwOTQpIiwiS2FoXHUwMTRkICgxMDk0XHUyMDEzMTA5NikiLCJFaWNoXHUwMTRkICgxMDk2XHUyMDEzMTA5NykiLCJK''@;'; put 'put ''XHUwMTRkdG9rdSAoMTA5N1x1MjAxMzEwOTkpIiwiS1x1MDE0ZHdhICgxMDk5XHUyMDEzMTEwNCkiLCJDaFx1MDE0ZGppICgxMTA0XHUyMDEzMTEwNikiLCJLYXNoXHUwMTRkICgxMTA2XHUyMDEzMTEwOCkiLCJUZW5uaW4gKDExMDhcdTIwMTMxMTEwKSIsIlRlbi1laSAoMTExMC0xMTEzKSIs''@;'; put 'put ''IkVpa3lcdTAxNmIgKDExMTNcdTIwMTMxMTE4KSIsIkdlblx1MjAxOWVpICgxMTE4XHUyMDEzMTEyMCkiLCJIXHUwMTRkYW4gKDExMjBcdTIwMTMxMTI0KSIsIlRlbmppICgxMTI0XHUyMDEzMTEyNikiLCJEYWlqaSAoMTEyNlx1MjAxMzExMzEpIiwiVGVuc2hcdTAxNGQgKDExMzFcdTIwMTMx''@;'; put 'put ''MTMyKSIsIkNoXHUwMTRkc2hcdTAxNGQgKDExMzJcdTIwMTMxMTM1KSIsIkhcdTAxNGRlbiAoMTEzNVx1MjAxMzExNDEpIiwiRWlqaSAoMTE0MVx1MjAxMzExNDIpIiwiS1x1MDE0ZGppICgxMTQyXHUyMDEzMTE0NCkiLCJUZW5cdTIwMTl5XHUwMTRkICgxMTQ0XHUyMDEzMTE0NSkiLCJLeVx1''@;'; put 'put ''MDE2YmFuICgxMTQ1XHUyMDEzMTE1MSkiLCJOaW5wZWkgKDExNTFcdTIwMTMxMTU0KSIsIkt5XHUwMTZianUgKDExNTRcdTIwMTMxMTU2KSIsIkhcdTAxNGRnZW4gKDExNTZcdTIwMTMxMTU5KSIsIkhlaWppICgxMTU5XHUyMDEzMTE2MCkiLCJFaXJ5YWt1ICgxMTYwXHUyMDEzMTE2MSkiLCJc''@;'; put 'put ''dTAxNGNobyAoMTE2MVx1MjAxMzExNjMpIiwiQ2hcdTAxNGRrYW4gKDExNjNcdTIwMTMxMTY1KSIsIkVpbWFuICgxMTY1XHUyMDEzMTE2NikiLCJOaW5cdTIwMTlhbiAoMTE2Nlx1MjAxMzExNjkpIiwiS2FcdTAxNGQgKDExNjlcdTIwMTMxMTcxKSIsIlNoXHUwMTRkYW4gKDExNzFcdTIwMTMx''@;'; put 'put ''MTc1KSIsIkFuZ2VuICgxMTc1XHUyMDEzMTE3NykiLCJKaXNoXHUwMTRkICgxMTc3XHUyMDEzMTE4MSkiLCJZXHUwMTRkd2EgKDExODFcdTIwMTMxMTgyKSIsIkp1ZWkgKDExODJcdTIwMTMxMTg0KSIsIkdlbnJ5YWt1ICgxMTg0XHUyMDEzMTE4NSkiLCJCdW5qaSAoMTE4NVx1MjAxMzExOTAp''@;'; put 'put ''IiwiS2Vua3lcdTAxNmIgKDExOTBcdTIwMTMxMTk5KSIsIlNoXHUwMTRkamkgKDExOTlcdTIwMTMxMjAxKSIsIktlbm5pbiAoMTIwMVx1MjAxMzEyMDQpIiwiR2Vua3lcdTAxNmIgKDEyMDRcdTIwMTMxMjA2KSIsIktlblx1MjAxOWVpICgxMjA2XHUyMDEzMTIwNykiLCJKXHUwMTRkZ2VuICgx''@;'; put 'put ''MjA3XHUyMDEzMTIxMSkiLCJLZW5yeWFrdSAoMTIxMVx1MjAxMzEyMTMpIiwiS2VucFx1MDE0ZCAoMTIxM1x1MjAxMzEyMTkpIiwiSlx1MDE0ZGt5XHUwMTZiICgxMjE5XHUyMDEzMTIyMikiLCJKXHUwMTRkXHUwMTRkICgxMjIyXHUyMDEzMTIyNCkiLCJHZW5uaW4gKDEyMjRcdTIwMTMxMjI1''@;'; put 'put ''KSIsIkthcm9rdSAoMTIyNVx1MjAxMzEyMjcpIiwiQW50ZWkgKDEyMjdcdTIwMTMxMjI5KSIsIkthbmtpICgxMjI5XHUyMDEzMTIzMikiLCJKXHUwMTRkZWkgKDEyMzJcdTIwMTMxMjMzKSIsIlRlbnB1a3UgKDEyMzNcdTIwMTMxMjM0KSIsIkJ1bnJ5YWt1ICgxMjM0XHUyMDEzMTIzNSkiLCJL''@;'; put 'put ''YXRlaSAoMTIzNVx1MjAxMzEyMzgpIiwiUnlha3VuaW4gKDEyMzhcdTIwMTMxMjM5KSIsIkVuXHUyMDE5XHUwMTRkICgxMjM5XHUyMDEzMTI0MCkiLCJOaW5qaSAoMTI0MFx1MjAxMzEyNDMpIiwiS2FuZ2VuICgxMjQzXHUyMDEzMTI0NykiLCJIXHUwMTRkamkgKDEyNDdcdTIwMTMxMjQ5KSIs''@;'; put 'put ''IktlbmNoXHUwMTRkICgxMjQ5XHUyMDEzMTI1NikiLCJLXHUwMTRkZ2VuICgxMjU2XHUyMDEzMTI1NykiLCJTaFx1MDE0ZGthICgxMjU3XHUyMDEzMTI1OSkiLCJTaFx1MDE0ZGdlbiAoMTI1OVx1MjAxMzEyNjApIiwiQnVuXHUyMDE5XHUwMTRkICgxMjYwXHUyMDEzMTI2MSkiLCJLXHUwMTRk''@;'; put 'put ''Y2hcdTAxNGQgKDEyNjFcdTIwMTMxMjY0KSIsIkJ1blx1MjAxOWVpICgxMjY0XHUyMDEzMTI3NSkiLCJLZW5qaSAoMTI3NVx1MjAxMzEyNzgpIiwiS1x1MDE0ZGFuICgxMjc4XHUyMDEzMTI4OCkiLCJTaFx1MDE0ZFx1MDE0ZCAoMTI4OFx1MjAxMzEyOTMpIiwiRWluaW4gKDEyOTNcdTIwMTMx''@;'; put 'put ''Mjk5KSIsIlNoXHUwMTRkYW4gKDEyOTlcdTIwMTMxMzAyKSIsIktlbmdlbiAoMTMwMlx1MjAxMzEzMDMpIiwiS2FnZW4gKDEzMDNcdTIwMTMxMzA2KSIsIlRva3VqaSAoMTMwNlx1MjAxMzEzMDgpIiwiRW5reVx1MDE0ZCAoMTMwOFx1MjAxMzEzMTEpIiwiXHUwMTRjY2hcdTAxNGQgKDEzMTFc''@;'; put 'put ''dTIwMTMxMzEyKSIsIlNoXHUwMTRkd2EgKDEzMTJcdTIwMTMxMzE3KSIsIkJ1bnBcdTAxNGQgKDEzMTdcdTIwMTMxMzE5KSIsIkdlblx1MDE0ZCAoMTMxOVx1MjAxMzEzMjEpIiwiR2Vua1x1MDE0ZCAoMTMyMVx1MjAxMzEzMjQpIiwiU2hcdTAxNGRjaFx1MDE2YiAoMTMyNFx1MjAxMzEzMjYp''@;'; put 'put ''IiwiS2FyeWFrdSAoMTMyNlx1MjAxMzEzMjkpIiwiR2VudG9rdSAoMTMyOVx1MjAxMzEzMzEpIiwiR2Vua1x1MDE0ZCAoMTMzMVx1MjAxMzEzMzQpIiwiS2VubXUgKDEzMzRcdTIwMTMxMzM2KSIsIkVuZ2VuICgxMzM2XHUyMDEzMTM0MCkiLCJLXHUwMTRka29rdSAoMTM0MFx1MjAxMzEzNDYp''@;'; put 'put ''IiwiU2hcdTAxNGRoZWkgKDEzNDZcdTIwMTMxMzcwKSIsIktlbnRva3UgKDEzNzBcdTIwMTMxMzcyKSIsIkJ1bmNoXHUwMTZiICgxMzcyXHUyMDEzMTM3NSkiLCJUZW5qdSAoMTM3NVx1MjAxMzEzNzkpIiwiS1x1MDE0ZHJ5YWt1ICgxMzc5XHUyMDEzMTM4MSkiLCJLXHUwMTRkd2EgKDEzODFc''@;'; put 'put ''dTIwMTMxMzg0KSIsIkdlbmNoXHUwMTZiICgxMzg0XHUyMDEzMTM5MikiLCJNZWl0b2t1ICgxMzg0XHUyMDEzMTM4NykiLCJLYWtlaSAoMTM4N1x1MjAxMzEzODkpIiwiS1x1MDE0ZFx1MDE0ZCAoMTM4OVx1MjAxMzEzOTApIiwiTWVpdG9rdSAoMTM5MFx1MjAxMzEzOTQpIiwiXHUwMTRjZWkg''@;'; put 'put ''KDEzOTRcdTIwMTMxNDI4KSIsIlNoXHUwMTRkY2hcdTAxNGQgKDE0MjhcdTIwMTMxNDI5KSIsIkVpa3lcdTAxNGQgKDE0MjlcdTIwMTMxNDQxKSIsIktha2l0c3UgKDE0NDFcdTIwMTMxNDQ0KSIsIkJ1blx1MjAxOWFuICgxNDQ0XHUyMDEzMTQ0OSkiLCJIXHUwMTRkdG9rdSAoMTQ0OVx1MjAx''@;'; put 'put ''MzE0NTIpIiwiS3lcdTAxNGR0b2t1ICgxNDUyXHUyMDEzMTQ1NSkiLCJLXHUwMTRkc2hcdTAxNGQgKDE0NTVcdTIwMTMxNDU3KSIsIkNoXHUwMTRkcm9rdSAoMTQ1N1x1MjAxMzE0NjApIiwiS2Fuc2hcdTAxNGQgKDE0NjBcdTIwMTMxNDY2KSIsIkJ1bnNoXHUwMTRkICgxNDY2XHUyMDEzMTQ2''@;'; put 'put ''NykiLCJcdTAxNGNuaW4gKDE0NjdcdTIwMTMxNDY5KSIsIkJ1bm1laSAoMTQ2OVx1MjAxMzE0ODcpIiwiQ2hcdTAxNGRreVx1MDE0ZCAoMTQ4N1x1MjAxMzE0ODkpIiwiRW50b2t1ICgxNDg5XHUyMDEzMTQ5MikiLCJNZWlcdTAxNGQgKDE0OTJcdTIwMTMxNTAxKSIsIkJ1bmtpICgxNTAxXHUy''@;'; put 'put ''MDEzMTUwNCkiLCJFaXNoXHUwMTRkICgxNTA0XHUyMDEzMTUyMSkiLCJUYWllaSAoMTUyMVx1MjAxMzE1MjgpIiwiS3lcdTAxNGRyb2t1ICgxNTI4XHUyMDEzMTUzMikiLCJUZW5idW4gKDE1MzJcdTIwMTMxNTU1KSIsIktcdTAxNGRqaSAoMTU1NVx1MjAxMzE1NTgpIiwiRWlyb2t1ICgxNTU4''@;'; put 'put ''XHUyMDEzMTU3MCkiLCJHZW5raSAoMTU3MFx1MjAxMzE1NzMpIiwiVGVuc2hcdTAxNGQgKDE1NzNcdTIwMTMxNTkyKSIsIkJ1bnJva3UgKDE1OTJcdTIwMTMxNTk2KSIsIktlaWNoXHUwMTRkICgxNTk2XHUyMDEzMTYxNSkiLCJHZW5uYSAoMTYxNVx1MjAxMzE2MjQpIiwiS2FuXHUyMDE5ZWkg''@;'; put 'put ''KDE2MjRcdTIwMTMxNjQ0KSIsIlNoXHUwMTRkaG8gKDE2NDRcdTIwMTMxNjQ4KSIsIktlaWFuICgxNjQ4XHUyMDEzMTY1MikiLCJKXHUwMTRkXHUwMTRkICgxNjUyXHUyMDEzMTY1NSkiLCJNZWlyZWtpICgxNjU1XHUyMDEzMTY1OCkiLCJNYW5qaSAoMTY1OFx1MjAxMzE2NjEpIiwiS2FuYnVu''@;'; put 'put ''ICgxNjYxXHUyMDEzMTY3MykiLCJFbnBcdTAxNGQgKDE2NzNcdTIwMTMxNjgxKSIsIlRlbm5hICgxNjgxXHUyMDEzMTY4NCkiLCJKXHUwMTRka3lcdTAxNGQgKDE2ODRcdTIwMTMxNjg4KSIsIkdlbnJva3UgKDE2ODhcdTIwMTMxNzA0KSIsIkhcdTAxNGRlaSAoMTcwNFx1MjAxMzE3MTEpIiwi''@;'; put 'put ''U2hcdTAxNGR0b2t1ICgxNzExXHUyMDEzMTcxNikiLCJLeVx1MDE0ZGhcdTAxNGQgKDE3MTZcdTIwMTMxNzM2KSIsIkdlbmJ1biAoMTczNlx1MjAxMzE3NDEpIiwiS2FucFx1MDE0ZCAoMTc0MVx1MjAxMzE3NDQpIiwiRW5reVx1MDE0ZCAoMTc0NFx1MjAxMzE3NDgpIiwiS2FuXHUyMDE5ZW4g''@;'; put 'put ''KDE3NDhcdTIwMTMxNzUxKSIsIkhcdTAxNGRyZWtpICgxNzUxXHUyMDEzMTc2NCkiLCJNZWl3YSAoMTc2NFx1MjAxMzE3NzIpIiwiQW5cdTIwMTllaSAoMTc3Mlx1MjAxMzE3ODEpIiwiVGVubWVpICgxNzgxXHUyMDEzMTc4OSkiLCJLYW5zZWkgKDE3ODlcdTIwMTMxODAxKSIsIkt5XHUwMTRk''@;'; put 'put ''d2EgKDE4MDFcdTIwMTMxODA0KSIsIkJ1bmthICgxODA0XHUyMDEzMTgxOCkiLCJCdW5zZWkgKDE4MThcdTIwMTMxODMwKSIsIlRlbnBcdTAxNGQgKDE4MzBcdTIwMTMxODQ0KSIsIktcdTAxNGRrYSAoMTg0NFx1MjAxMzE4NDgpIiwiS2FlaSAoMTg0OFx1MjAxMzE4NTQpIiwiQW5zZWkgKDE4''@;'; put 'put ''NTRcdTIwMTMxODYwKSIsIk1hblx1MjAxOWVuICgxODYwXHUyMDEzMTg2MSkiLCJCdW5reVx1MDE2YiAoMTg2MVx1MjAxMzE4NjQpIiwiR2VuamkgKDE4NjRcdTIwMTMxODY1KSIsIktlaVx1MDE0ZCAoMTg2NVx1MjAxMzE4NjgpIiwiTSIsIlQiLCJTIiwiSCJdLCJzaG9ydCI6WyJUYWlrYSAo''@;'; put 'put ''NjQ1XHUyMDEzNjUwKSIsIkhha3VjaGkgKDY1MFx1MjAxMzY3MSkiLCJIYWt1aFx1MDE0ZCAoNjcyXHUyMDEzNjg2KSIsIlNodWNoXHUwMTRkICg2ODZcdTIwMTM3MDEpIiwiVGFpaFx1MDE0ZCAoNzAxXHUyMDEzNzA0KSIsIktlaXVuICg3MDRcdTIwMTM3MDgpIiwiV2FkXHUwMTRkICg3MDhc''@;'; put 'put ''dTIwMTM3MTUpIiwiUmVpa2kgKDcxNVx1MjAxMzcxNykiLCJZXHUwMTRkclx1MDE0ZCAoNzE3XHUyMDEzNzI0KSIsIkppbmtpICg3MjRcdTIwMTM3MjkpIiwiVGVucHlcdTAxNGQgKDcyOVx1MjAxMzc0OSkiLCJUZW5weVx1MDE0ZC1rYW1wXHUwMTRkICg3NDktNzQ5KSIsIlRlbnB5XHUwMTRk''@;'; put 'put ''LXNoXHUwMTRkaFx1MDE0ZCAoNzQ5LTc1NykiLCJUZW5weVx1MDE0ZC1oXHUwMTRkamkgKDc1Ny03NjUpIiwiVGVucHlcdTAxNGQtamluZ28gKDc2NS03NjcpIiwiSmluZ28ta2VpdW4gKDc2Ny03NzApIiwiSFx1MDE0ZGtpICg3NzBcdTIwMTM3ODApIiwiVGVuLVx1MDE0ZCAoNzgxLTc4Miki''@;'; put 'put ''LCJFbnJ5YWt1ICg3ODJcdTIwMTM4MDYpIiwiRGFpZFx1MDE0ZCAoODA2XHUyMDEzODEwKSIsIktcdTAxNGRuaW4gKDgxMFx1MjAxMzgyNCkiLCJUZW5jaFx1MDE0ZCAoODI0XHUyMDEzODM0KSIsIkpcdTAxNGR3YSAoODM0XHUyMDEzODQ4KSIsIkthalx1MDE0ZCAoODQ4XHUyMDEzODUxKSIs''@;'; put 'put ''Ik5pbmp1ICg4NTFcdTIwMTM4NTQpIiwiU2Fpa1x1MDE0ZCAoODU0XHUyMDEzODU3KSIsIlRlbi1hbiAoODU3LTg1OSkiLCJKXHUwMTRkZ2FuICg4NTlcdTIwMTM4NzcpIiwiR2FuZ3lcdTAxNGQgKDg3N1x1MjAxMzg4NSkiLCJOaW5uYSAoODg1XHUyMDEzODg5KSIsIkthbnB5XHUwMTRkICg4''@;'; put 'put ''ODlcdTIwMTM4OTgpIiwiU2hcdTAxNGR0YWkgKDg5OFx1MjAxMzkwMSkiLCJFbmdpICg5MDFcdTIwMTM5MjMpIiwiRW5jaFx1MDE0ZCAoOTIzXHUyMDEzOTMxKSIsIkpcdTAxNGRoZWkgKDkzMVx1MjAxMzkzOCkiLCJUZW5neVx1MDE0ZCAoOTM4XHUyMDEzOTQ3KSIsIlRlbnJ5YWt1ICg5NDdc''@;'; put 'put ''dTIwMTM5NTcpIiwiVGVudG9rdSAoOTU3XHUyMDEzOTYxKSIsIlx1MDE0Y3dhICg5NjFcdTIwMTM5NjQpIiwiS1x1MDE0ZGhcdTAxNGQgKDk2NFx1MjAxMzk2OCkiLCJBbm5hICg5NjhcdTIwMTM5NzApIiwiVGVucm9rdSAoOTcwXHUyMDEzOTczKSIsIlRlblx1MjAxOWVuICg5NzNcdTIwMTM5''@;'; put 'put ''NzYpIiwiSlx1MDE0ZGdlbiAoOTc2XHUyMDEzOTc4KSIsIlRlbmdlbiAoOTc4XHUyMDEzOTgzKSIsIkVpa2FuICg5ODNcdTIwMTM5ODUpIiwiS2FubmEgKDk4NVx1MjAxMzk4NykiLCJFaWVuICg5ODdcdTIwMTM5ODkpIiwiRWlzbyAoOTg5XHUyMDEzOTkwKSIsIlNoXHUwMTRkcnlha3UgKDk5''@;'; put 'put ''MFx1MjAxMzk5NSkiLCJDaFx1MDE0ZHRva3UgKDk5NVx1MjAxMzk5OSkiLCJDaFx1MDE0ZGhcdTAxNGQgKDk5OVx1MjAxMzEwMDQpIiwiS2Fua1x1MDE0ZCAoMTAwNFx1MjAxMzEwMTIpIiwiQ2hcdTAxNGR3YSAoMTAxMlx1MjAxMzEwMTcpIiwiS2FubmluICgxMDE3XHUyMDEzMTAyMSkiLCJK''@;'; put 'put ''aWFuICgxMDIxXHUyMDEzMTAyNCkiLCJNYW5qdSAoMTAyNFx1MjAxMzEwMjgpIiwiQ2hcdTAxNGRnZW4gKDEwMjhcdTIwMTMxMDM3KSIsIkNoXHUwMTRkcnlha3UgKDEwMzdcdTIwMTMxMDQwKSIsIkNoXHUwMTRka3lcdTAxNmIgKDEwNDBcdTIwMTMxMDQ0KSIsIkthbnRva3UgKDEwNDRcdTIw''@;'; put 'put ''MTMxMDQ2KSIsIkVpc2hcdTAxNGQgKDEwNDZcdTIwMTMxMDUzKSIsIlRlbmdpICgxMDUzXHUyMDEzMTA1OCkiLCJLXHUwMTRkaGVpICgxMDU4XHUyMDEzMTA2NSkiLCJKaXJ5YWt1ICgxMDY1XHUyMDEzMTA2OSkiLCJFbmt5XHUwMTZiICgxMDY5XHUyMDEzMTA3NCkiLCJTaFx1MDE0ZGhvICgx''@;'; put 'put ''MDc0XHUyMDEzMTA3NykiLCJTaFx1MDE0ZHJ5YWt1ICgxMDc3XHUyMDEzMTA4MSkiLCJFaWhcdTAxNGQgKDEwODFcdTIwMTMxMDg0KSIsIlx1MDE0Y3Rva3UgKDEwODRcdTIwMTMxMDg3KSIsIkthbmppICgxMDg3XHUyMDEzMTA5NCkiLCJLYWhcdTAxNGQgKDEwOTRcdTIwMTMxMDk2KSIsIkVp''@;'; put 'put ''Y2hcdTAxNGQgKDEwOTZcdTIwMTMxMDk3KSIsIkpcdTAxNGR0b2t1ICgxMDk3XHUyMDEzMTA5OSkiLCJLXHUwMTRkd2EgKDEwOTlcdTIwMTMxMTA0KSIsIkNoXHUwMTRkamkgKDExMDRcdTIwMTMxMTA2KSIsIkthc2hcdTAxNGQgKDExMDZcdTIwMTMxMTA4KSIsIlRlbm5pbiAoMTEwOFx1MjAx''@;'; put 'put ''MzExMTApIiwiVGVuLWVpICgxMTEwLTExMTMpIiwiRWlreVx1MDE2YiAoMTExM1x1MjAxMzExMTgpIiwiR2VuXHUyMDE5ZWkgKDExMThcdTIwMTMxMTIwKSIsIkhcdTAxNGRhbiAoMTEyMFx1MjAxMzExMjQpIiwiVGVuamkgKDExMjRcdTIwMTMxMTI2KSIsIkRhaWppICgxMTI2XHUyMDEzMTEz''@;'; put 'put ''MSkiLCJUZW5zaFx1MDE0ZCAoMTEzMVx1MjAxMzExMzIpIiwiQ2hcdTAxNGRzaFx1MDE0ZCAoMTEzMlx1MjAxMzExMzUpIiwiSFx1MDE0ZGVuICgxMTM1XHUyMDEzMTE0MSkiLCJFaWppICgxMTQxXHUyMDEzMTE0MikiLCJLXHUwMTRkamkgKDExNDJcdTIwMTMxMTQ0KSIsIlRlblx1MjAxOXlc''@;'; put 'put ''dTAxNGQgKDExNDRcdTIwMTMxMTQ1KSIsIkt5XHUwMTZiYW4gKDExNDVcdTIwMTMxMTUxKSIsIk5pbnBlaSAoMTE1MVx1MjAxMzExNTQpIiwiS3lcdTAxNmJqdSAoMTE1NFx1MjAxMzExNTYpIiwiSFx1MDE0ZGdlbiAoMTE1Nlx1MjAxMzExNTkpIiwiSGVpamkgKDExNTlcdTIwMTMxMTYwKSIs''@;'; put 'put ''IkVpcnlha3UgKDExNjBcdTIwMTMxMTYxKSIsIlx1MDE0Y2hvICgxMTYxXHUyMDEzMTE2MykiLCJDaFx1MDE0ZGthbiAoMTE2M1x1MjAxMzExNjUpIiwiRWltYW4gKDExNjVcdTIwMTMxMTY2KSIsIk5pblx1MjAxOWFuICgxMTY2XHUyMDEzMTE2OSkiLCJLYVx1MDE0ZCAoMTE2OVx1MjAxMzEx''@;'; put 'put ''NzEpIiwiU2hcdTAxNGRhbiAoMTE3MVx1MjAxMzExNzUpIiwiQW5nZW4gKDExNzVcdTIwMTMxMTc3KSIsIkppc2hcdTAxNGQgKDExNzdcdTIwMTMxMTgxKSIsIllcdTAxNGR3YSAoMTE4MVx1MjAxMzExODIpIiwiSnVlaSAoMTE4Mlx1MjAxMzExODQpIiwiR2Vucnlha3UgKDExODRcdTIwMTMx''@;'; put 'put ''MTg1KSIsIkJ1bmppICgxMTg1XHUyMDEzMTE5MCkiLCJLZW5reVx1MDE2YiAoMTE5MFx1MjAxMzExOTkpIiwiU2hcdTAxNGRqaSAoMTE5OVx1MjAxMzEyMDEpIiwiS2VubmluICgxMjAxXHUyMDEzMTIwNCkiLCJHZW5reVx1MDE2YiAoMTIwNFx1MjAxMzEyMDYpIiwiS2VuXHUyMDE5ZWkgKDEy''@;'; put 'put ''MDZcdTIwMTMxMjA3KSIsIkpcdTAxNGRnZW4gKDEyMDdcdTIwMTMxMjExKSIsIktlbnJ5YWt1ICgxMjExXHUyMDEzMTIxMykiLCJLZW5wXHUwMTRkICgxMjEzXHUyMDEzMTIxOSkiLCJKXHUwMTRka3lcdTAxNmIgKDEyMTlcdTIwMTMxMjIyKSIsIkpcdTAxNGRcdTAxNGQgKDEyMjJcdTIwMTMx''@;'; put 'put ''MjI0KSIsIkdlbm5pbiAoMTIyNFx1MjAxMzEyMjUpIiwiS2Fyb2t1ICgxMjI1XHUyMDEzMTIyNykiLCJBbnRlaSAoMTIyN1x1MjAxMzEyMjkpIiwiS2Fua2kgKDEyMjlcdTIwMTMxMjMyKSIsIkpcdTAxNGRlaSAoMTIzMlx1MjAxMzEyMzMpIiwiVGVucHVrdSAoMTIzM1x1MjAxMzEyMzQpIiwi''@;'; put 'put ''QnVucnlha3UgKDEyMzRcdTIwMTMxMjM1KSIsIkthdGVpICgxMjM1XHUyMDEzMTIzOCkiLCJSeWFrdW5pbiAoMTIzOFx1MjAxMzEyMzkpIiwiRW5cdTIwMTlcdTAxNGQgKDEyMzlcdTIwMTMxMjQwKSIsIk5pbmppICgxMjQwXHUyMDEzMTI0MykiLCJLYW5nZW4gKDEyNDNcdTIwMTMxMjQ3KSIs''@;'; put 'put ''IkhcdTAxNGRqaSAoMTI0N1x1MjAxMzEyNDkpIiwiS2VuY2hcdTAxNGQgKDEyNDlcdTIwMTMxMjU2KSIsIktcdTAxNGRnZW4gKDEyNTZcdTIwMTMxMjU3KSIsIlNoXHUwMTRka2EgKDEyNTdcdTIwMTMxMjU5KSIsIlNoXHUwMTRkZ2VuICgxMjU5XHUyMDEzMTI2MCkiLCJCdW5cdTIwMTlcdTAx''@;'; put 'put ''NGQgKDEyNjBcdTIwMTMxMjYxKSIsIktcdTAxNGRjaFx1MDE0ZCAoMTI2MVx1MjAxMzEyNjQpIiwiQnVuXHUyMDE5ZWkgKDEyNjRcdTIwMTMxMjc1KSIsIktlbmppICgxMjc1XHUyMDEzMTI3OCkiLCJLXHUwMTRkYW4gKDEyNzhcdTIwMTMxMjg4KSIsIlNoXHUwMTRkXHUwMTRkICgxMjg4XHUy''@;'; put 'put ''MDEzMTI5MykiLCJFaW5pbiAoMTI5M1x1MjAxMzEyOTkpIiwiU2hcdTAxNGRhbiAoMTI5OVx1MjAxMzEzMDIpIiwiS2VuZ2VuICgxMzAyXHUyMDEzMTMwMykiLCJLYWdlbiAoMTMwM1x1MjAxMzEzMDYpIiwiVG9rdWppICgxMzA2XHUyMDEzMTMwOCkiLCJFbmt5XHUwMTRkICgxMzA4XHUyMDEz''@;'; put 'put ''MTMxMSkiLCJcdTAxNGNjaFx1MDE0ZCAoMTMxMVx1MjAxMzEzMTIpIiwiU2hcdTAxNGR3YSAoMTMxMlx1MjAxMzEzMTcpIiwiQnVucFx1MDE0ZCAoMTMxN1x1MjAxMzEzMTkpIiwiR2VuXHUwMTRkICgxMzE5XHUyMDEzMTMyMSkiLCJHZW5rXHUwMTRkICgxMzIxXHUyMDEzMTMyNCkiLCJTaFx1''@;'; put 'put ''MDE0ZGNoXHUwMTZiICgxMzI0XHUyMDEzMTMyNikiLCJLYXJ5YWt1ICgxMzI2XHUyMDEzMTMyOSkiLCJHZW50b2t1ICgxMzI5XHUyMDEzMTMzMSkiLCJHZW5rXHUwMTRkICgxMzMxXHUyMDEzMTMzNCkiLCJLZW5tdSAoMTMzNFx1MjAxMzEzMzYpIiwiRW5nZW4gKDEzMzZcdTIwMTMxMzQwKSIs''@;'; put 'put ''IktcdTAxNGRrb2t1ICgxMzQwXHUyMDEzMTM0NikiLCJTaFx1MDE0ZGhlaSAoMTM0Nlx1MjAxMzEzNzApIiwiS2VudG9rdSAoMTM3MFx1MjAxMzEzNzIpIiwiQnVuY2hcdTAxNmIgKDEzNzJcdTIwMTMxMzc1KSIsIlRlbmp1ICgxMzc1XHUyMDEzMTM3OSkiLCJLXHUwMTRkcnlha3UgKDEzNzlc''@;'; put 'put ''dTIwMTMxMzgxKSIsIktcdTAxNGR3YSAoMTM4MVx1MjAxMzEzODQpIiwiR2VuY2hcdTAxNmIgKDEzODRcdTIwMTMxMzkyKSIsIk1laXRva3UgKDEzODRcdTIwMTMxMzg3KSIsIktha2VpICgxMzg3XHUyMDEzMTM4OSkiLCJLXHUwMTRkXHUwMTRkICgxMzg5XHUyMDEzMTM5MCkiLCJNZWl0b2t1''@;'; put 'put ''ICgxMzkwXHUyMDEzMTM5NCkiLCJcdTAxNGNlaSAoMTM5NFx1MjAxMzE0MjgpIiwiU2hcdTAxNGRjaFx1MDE0ZCAoMTQyOFx1MjAxMzE0MjkpIiwiRWlreVx1MDE0ZCAoMTQyOVx1MjAxMzE0NDEpIiwiS2FraXRzdSAoMTQ0MVx1MjAxMzE0NDQpIiwiQnVuXHUyMDE5YW4gKDE0NDRcdTIwMTMx''@;'; put 'put ''NDQ5KSIsIkhcdTAxNGR0b2t1ICgxNDQ5XHUyMDEzMTQ1MikiLCJLeVx1MDE0ZHRva3UgKDE0NTJcdTIwMTMxNDU1KSIsIktcdTAxNGRzaFx1MDE0ZCAoMTQ1NVx1MjAxMzE0NTcpIiwiQ2hcdTAxNGRyb2t1ICgxNDU3XHUyMDEzMTQ2MCkiLCJLYW5zaFx1MDE0ZCAoMTQ2MFx1MjAxMzE0NjYp''@;'; put 'put ''IiwiQnVuc2hcdTAxNGQgKDE0NjZcdTIwMTMxNDY3KSIsIlx1MDE0Y25pbiAoMTQ2N1x1MjAxMzE0NjkpIiwiQnVubWVpICgxNDY5XHUyMDEzMTQ4NykiLCJDaFx1MDE0ZGt5XHUwMTRkICgxNDg3XHUyMDEzMTQ4OSkiLCJFbnRva3UgKDE0ODlcdTIwMTMxNDkyKSIsIk1laVx1MDE0ZCAoMTQ5''@;'; put 'put ''Mlx1MjAxMzE1MDEpIiwiQnVua2kgKDE1MDFcdTIwMTMxNTA0KSIsIkVpc2hcdTAxNGQgKDE1MDRcdTIwMTMxNTIxKSIsIlRhaWVpICgxNTIxXHUyMDEzMTUyOCkiLCJLeVx1MDE0ZHJva3UgKDE1MjhcdTIwMTMxNTMyKSIsIlRlbmJ1biAoMTUzMlx1MjAxMzE1NTUpIiwiS1x1MDE0ZGppICgx''@;'; put 'put ''NTU1XHUyMDEzMTU1OCkiLCJFaXJva3UgKDE1NThcdTIwMTMxNTcwKSIsIkdlbmtpICgxNTcwXHUyMDEzMTU3MykiLCJUZW5zaFx1MDE0ZCAoMTU3M1x1MjAxMzE1OTIpIiwiQnVucm9rdSAoMTU5Mlx1MjAxMzE1OTYpIiwiS2VpY2hcdTAxNGQgKDE1OTZcdTIwMTMxNjE1KSIsIkdlbm5hICgx''@;'; put 'put ''NjE1XHUyMDEzMTYyNCkiLCJLYW5cdTIwMTllaSAoMTYyNFx1MjAxMzE2NDQpIiwiU2hcdTAxNGRobyAoMTY0NFx1MjAxMzE2NDgpIiwiS2VpYW4gKDE2NDhcdTIwMTMxNjUyKSIsIkpcdTAxNGRcdTAxNGQgKDE2NTJcdTIwMTMxNjU1KSIsIk1laXJla2kgKDE2NTVcdTIwMTMxNjU4KSIsIk1h''@;'; put 'put ''bmppICgxNjU4XHUyMDEzMTY2MSkiLCJLYW5idW4gKDE2NjFcdTIwMTMxNjczKSIsIkVucFx1MDE0ZCAoMTY3M1x1MjAxMzE2ODEpIiwiVGVubmEgKDE2ODFcdTIwMTMxNjg0KSIsIkpcdTAxNGRreVx1MDE0ZCAoMTY4NFx1MjAxMzE2ODgpIiwiR2Vucm9rdSAoMTY4OFx1MjAxMzE3MDQpIiwi''@;'; put 'put ''SFx1MDE0ZGVpICgxNzA0XHUyMDEzMTcxMSkiLCJTaFx1MDE0ZHRva3UgKDE3MTFcdTIwMTMxNzE2KSIsIkt5XHUwMTRkaFx1MDE0ZCAoMTcxNlx1MjAxMzE3MzYpIiwiR2VuYnVuICgxNzM2XHUyMDEzMTc0MSkiLCJLYW5wXHUwMTRkICgxNzQxXHUyMDEzMTc0NCkiLCJFbmt5XHUwMTRkICgx''@;'; put 'put ''NzQ0XHUyMDEzMTc0OCkiLCJLYW5cdTIwMTllbiAoMTc0OFx1MjAxMzE3NTEpIiwiSFx1MDE0ZHJla2kgKDE3NTFcdTIwMTMxNzY0KSIsIk1laXdhICgxNzY0XHUyMDEzMTc3MikiLCJBblx1MjAxOWVpICgxNzcyXHUyMDEzMTc4MSkiLCJUZW5tZWkgKDE3ODFcdTIwMTMxNzg5KSIsIkthbnNl''@;'; put 'put ''aSAoMTc4OVx1MjAxMzE4MDEpIiwiS3lcdTAxNGR3YSAoMTgwMVx1MjAxMzE4MDQpIiwiQnVua2EgKDE4MDRcdTIwMTMxODE4KSIsIkJ1bnNlaSAoMTgxOFx1MjAxMzE4MzApIiwiVGVucFx1MDE0ZCAoMTgzMFx1MjAxMzE4NDQpIiwiS1x1MDE0ZGthICgxODQ0XHUyMDEzMTg0OCkiLCJLYWVp''@;'; put 'put ''ICgxODQ4XHUyMDEzMTg1NCkiLCJBbnNlaSAoMTg1NFx1MjAxMzE4NjApIiwiTWFuXHUyMDE5ZW4gKDE4NjBcdTIwMTMxODYxKSIsIkJ1bmt5XHUwMTZiICgxODYxXHUyMDEzMTg2NCkiLCJHZW5qaSAoMTg2NFx1MjAxMzE4NjUpIiwiS2VpXHUwMTRkICgxODY1XHUyMDEzMTg2OCkiLCJNZWlq''@;'; put 'put ''aSIsIlRhaXNoXHUwMTRkIiwiU2hcdTAxNGR3YSIsIkhlaXNlaSJdLCJsb25nIjpbIlRhaWthICg2NDVcdTIwMTM2NTApIiwiSGFrdWNoaSAoNjUwXHUyMDEzNjcxKSIsIkhha3VoXHUwMTRkICg2NzJcdTIwMTM2ODYpIiwiU2h1Y2hcdTAxNGQgKDY4Nlx1MjAxMzcwMSkiLCJUYWloXHUwMTRk''@;'; put 'put ''ICg3MDFcdTIwMTM3MDQpIiwiS2VpdW4gKDcwNFx1MjAxMzcwOCkiLCJXYWRcdTAxNGQgKDcwOFx1MjAxMzcxNSkiLCJSZWlraSAoNzE1XHUyMDEzNzE3KSIsIllcdTAxNGRyXHUwMTRkICg3MTdcdTIwMTM3MjQpIiwiSmlua2kgKDcyNFx1MjAxMzcyOSkiLCJUZW5weVx1MDE0ZCAoNzI5XHUy''@;'; put 'put ''MDEzNzQ5KSIsIlRlbnB5XHUwMTRkLWthbXBcdTAxNGQgKDc0OS03NDkpIiwiVGVucHlcdTAxNGQtc2hcdTAxNGRoXHUwMTRkICg3NDktNzU3KSIsIlRlbnB5XHUwMTRkLWhcdTAxNGRqaSAoNzU3LTc2NSkiLCJUZW5weVx1MDE0ZC1qaW5nbyAoNzY1LTc2NykiLCJKaW5nby1rZWl1biAoNzY3''@;'; put 'put ''LTc3MCkiLCJIXHUwMTRka2kgKDc3MFx1MjAxMzc4MCkiLCJUZW4tXHUwMTRkICg3ODEtNzgyKSIsIkVucnlha3UgKDc4Mlx1MjAxMzgwNikiLCJEYWlkXHUwMTRkICg4MDZcdTIwMTM4MTApIiwiS1x1MDE0ZG5pbiAoODEwXHUyMDEzODI0KSIsIlRlbmNoXHUwMTRkICg4MjRcdTIwMTM4MzQp''@;'; put 'put ''IiwiSlx1MDE0ZHdhICg4MzRcdTIwMTM4NDgpIiwiS2FqXHUwMTRkICg4NDhcdTIwMTM4NTEpIiwiTmluanUgKDg1MVx1MjAxMzg1NCkiLCJTYWlrXHUwMTRkICg4NTRcdTIwMTM4NTcpIiwiVGVuLWFuICg4NTctODU5KSIsIkpcdTAxNGRnYW4gKDg1OVx1MjAxMzg3NykiLCJHYW5neVx1MDE0''@;'; put 'put ''ZCAoODc3XHUyMDEzODg1KSIsIk5pbm5hICg4ODVcdTIwMTM4ODkpIiwiS2FucHlcdTAxNGQgKDg4OVx1MjAxMzg5OCkiLCJTaFx1MDE0ZHRhaSAoODk4XHUyMDEzOTAxKSIsIkVuZ2kgKDkwMVx1MjAxMzkyMykiLCJFbmNoXHUwMTRkICg5MjNcdTIwMTM5MzEpIiwiSlx1MDE0ZGhlaSAoOTMx''@;'; put 'put ''XHUyMDEzOTM4KSIsIlRlbmd5XHUwMTRkICg5MzhcdTIwMTM5NDcpIiwiVGVucnlha3UgKDk0N1x1MjAxMzk1NykiLCJUZW50b2t1ICg5NTdcdTIwMTM5NjEpIiwiXHUwMTRjd2EgKDk2MVx1MjAxMzk2NCkiLCJLXHUwMTRkaFx1MDE0ZCAoOTY0XHUyMDEzOTY4KSIsIkFubmEgKDk2OFx1MjAx''@;'; put 'put ''Mzk3MCkiLCJUZW5yb2t1ICg5NzBcdTIwMTM5NzMpIiwiVGVuXHUyMDE5ZW4gKDk3M1x1MjAxMzk3NikiLCJKXHUwMTRkZ2VuICg5NzZcdTIwMTM5NzgpIiwiVGVuZ2VuICg5NzhcdTIwMTM5ODMpIiwiRWlrYW4gKDk4M1x1MjAxMzk4NSkiLCJLYW5uYSAoOTg1XHUyMDEzOTg3KSIsIkVpZW4g''@;'; put 'put ''KDk4N1x1MjAxMzk4OSkiLCJFaXNvICg5ODlcdTIwMTM5OTApIiwiU2hcdTAxNGRyeWFrdSAoOTkwXHUyMDEzOTk1KSIsIkNoXHUwMTRkdG9rdSAoOTk1XHUyMDEzOTk5KSIsIkNoXHUwMTRkaFx1MDE0ZCAoOTk5XHUyMDEzMTAwNCkiLCJLYW5rXHUwMTRkICgxMDA0XHUyMDEzMTAxMikiLCJD''@;'; put 'put ''aFx1MDE0ZHdhICgxMDEyXHUyMDEzMTAxNykiLCJLYW5uaW4gKDEwMTdcdTIwMTMxMDIxKSIsIkppYW4gKDEwMjFcdTIwMTMxMDI0KSIsIk1hbmp1ICgxMDI0XHUyMDEzMTAyOCkiLCJDaFx1MDE0ZGdlbiAoMTAyOFx1MjAxMzEwMzcpIiwiQ2hcdTAxNGRyeWFrdSAoMTAzN1x1MjAxMzEwNDAp''@;'; put 'put ''IiwiQ2hcdTAxNGRreVx1MDE2YiAoMTA0MFx1MjAxMzEwNDQpIiwiS2FudG9rdSAoMTA0NFx1MjAxMzEwNDYpIiwiRWlzaFx1MDE0ZCAoMTA0Nlx1MjAxMzEwNTMpIiwiVGVuZ2kgKDEwNTNcdTIwMTMxMDU4KSIsIktcdTAxNGRoZWkgKDEwNThcdTIwMTMxMDY1KSIsIkppcnlha3UgKDEwNjVc''@;'; put 'put ''dTIwMTMxMDY5KSIsIkVua3lcdTAxNmIgKDEwNjlcdTIwMTMxMDc0KSIsIlNoXHUwMTRkaG8gKDEwNzRcdTIwMTMxMDc3KSIsIlNoXHUwMTRkcnlha3UgKDEwNzdcdTIwMTMxMDgxKSIsIkVpaFx1MDE0ZCAoMTA4MVx1MjAxMzEwODQpIiwiXHUwMTRjdG9rdSAoMTA4NFx1MjAxMzEwODcpIiwi''@;'; put 'put ''S2FuamkgKDEwODdcdTIwMTMxMDk0KSIsIkthaFx1MDE0ZCAoMTA5NFx1MjAxMzEwOTYpIiwiRWljaFx1MDE0ZCAoMTA5Nlx1MjAxMzEwOTcpIiwiSlx1MDE0ZHRva3UgKDEwOTdcdTIwMTMxMDk5KSIsIktcdTAxNGR3YSAoMTA5OVx1MjAxMzExMDQpIiwiQ2hcdTAxNGRqaSAoMTEwNFx1MjAx''@;'; put 'put ''MzExMDYpIiwiS2FzaFx1MDE0ZCAoMTEwNlx1MjAxMzExMDgpIiwiVGVubmluICgxMTA4XHUyMDEzMTExMCkiLCJUZW4tZWkgKDExMTAtMTExMykiLCJFaWt5XHUwMTZiICgxMTEzXHUyMDEzMTExOCkiLCJHZW5cdTIwMTllaSAoMTExOFx1MjAxMzExMjApIiwiSFx1MDE0ZGFuICgxMTIwXHUy''@;'; put 'put ''MDEzMTEyNCkiLCJUZW5qaSAoMTEyNFx1MjAxMzExMjYpIiwiRGFpamkgKDExMjZcdTIwMTMxMTMxKSIsIlRlbnNoXHUwMTRkICgxMTMxXHUyMDEzMTEzMikiLCJDaFx1MDE0ZHNoXHUwMTRkICgxMTMyXHUyMDEzMTEzNSkiLCJIXHUwMTRkZW4gKDExMzVcdTIwMTMxMTQxKSIsIkVpamkgKDEx''@;'; put 'put ''NDFcdTIwMTMxMTQyKSIsIktcdTAxNGRqaSAoMTE0Mlx1MjAxMzExNDQpIiwiVGVuXHUyMDE5eVx1MDE0ZCAoMTE0NFx1MjAxMzExNDUpIiwiS3lcdTAxNmJhbiAoMTE0NVx1MjAxMzExNTEpIiwiTmlucGVpICgxMTUxXHUyMDEzMTE1NCkiLCJLeVx1MDE2Ymp1ICgxMTU0XHUyMDEzMTE1Niki''@;'; put 'put ''LCJIXHUwMTRkZ2VuICgxMTU2XHUyMDEzMTE1OSkiLCJIZWlqaSAoMTE1OVx1MjAxMzExNjApIiwiRWlyeWFrdSAoMTE2MFx1MjAxMzExNjEpIiwiXHUwMTRjaG8gKDExNjFcdTIwMTMxMTYzKSIsIkNoXHUwMTRka2FuICgxMTYzXHUyMDEzMTE2NSkiLCJFaW1hbiAoMTE2NVx1MjAxMzExNjYp''@;'; put 'put ''IiwiTmluXHUyMDE5YW4gKDExNjZcdTIwMTMxMTY5KSIsIkthXHUwMTRkICgxMTY5XHUyMDEzMTE3MSkiLCJTaFx1MDE0ZGFuICgxMTcxXHUyMDEzMTE3NSkiLCJBbmdlbiAoMTE3NVx1MjAxMzExNzcpIiwiSmlzaFx1MDE0ZCAoMTE3N1x1MjAxMzExODEpIiwiWVx1MDE0ZHdhICgxMTgxXHUy''@;'; put 'put ''MDEzMTE4MikiLCJKdWVpICgxMTgyXHUyMDEzMTE4NCkiLCJHZW5yeWFrdSAoMTE4NFx1MjAxMzExODUpIiwiQnVuamkgKDExODVcdTIwMTMxMTkwKSIsIktlbmt5XHUwMTZiICgxMTkwXHUyMDEzMTE5OSkiLCJTaFx1MDE0ZGppICgxMTk5XHUyMDEzMTIwMSkiLCJLZW5uaW4gKDEyMDFcdTIw''@;'; put 'put ''MTMxMjA0KSIsIkdlbmt5XHUwMTZiICgxMjA0XHUyMDEzMTIwNikiLCJLZW5cdTIwMTllaSAoMTIwNlx1MjAxMzEyMDcpIiwiSlx1MDE0ZGdlbiAoMTIwN1x1MjAxMzEyMTEpIiwiS2Vucnlha3UgKDEyMTFcdTIwMTMxMjEzKSIsIktlbnBcdTAxNGQgKDEyMTNcdTIwMTMxMjE5KSIsIkpcdTAx''@;'; put 'put ''NGRreVx1MDE2YiAoMTIxOVx1MjAxMzEyMjIpIiwiSlx1MDE0ZFx1MDE0ZCAoMTIyMlx1MjAxMzEyMjQpIiwiR2VubmluICgxMjI0XHUyMDEzMTIyNSkiLCJLYXJva3UgKDEyMjVcdTIwMTMxMjI3KSIsIkFudGVpICgxMjI3XHUyMDEzMTIyOSkiLCJLYW5raSAoMTIyOVx1MjAxMzEyMzIpIiwi''@;'; put 'put ''Slx1MDE0ZGVpICgxMjMyXHUyMDEzMTIzMykiLCJUZW5wdWt1ICgxMjMzXHUyMDEzMTIzNCkiLCJCdW5yeWFrdSAoMTIzNFx1MjAxMzEyMzUpIiwiS2F0ZWkgKDEyMzVcdTIwMTMxMjM4KSIsIlJ5YWt1bmluICgxMjM4XHUyMDEzMTIzOSkiLCJFblx1MjAxOVx1MDE0ZCAoMTIzOVx1MjAxMzEy''@;'; put 'put ''NDApIiwiTmluamkgKDEyNDBcdTIwMTMxMjQzKSIsIkthbmdlbiAoMTI0M1x1MjAxMzEyNDcpIiwiSFx1MDE0ZGppICgxMjQ3XHUyMDEzMTI0OSkiLCJLZW5jaFx1MDE0ZCAoMTI0OVx1MjAxMzEyNTYpIiwiS1x1MDE0ZGdlbiAoMTI1Nlx1MjAxMzEyNTcpIiwiU2hcdTAxNGRrYSAoMTI1N1x1''@;'; put 'put ''MjAxMzEyNTkpIiwiU2hcdTAxNGRnZW4gKDEyNTlcdTIwMTMxMjYwKSIsIkJ1blx1MjAxOVx1MDE0ZCAoMTI2MFx1MjAxMzEyNjEpIiwiS1x1MDE0ZGNoXHUwMTRkICgxMjYxXHUyMDEzMTI2NCkiLCJCdW5cdTIwMTllaSAoMTI2NFx1MjAxMzEyNzUpIiwiS2VuamkgKDEyNzVcdTIwMTMxMjc4''@;'; put 'put ''KSIsIktcdTAxNGRhbiAoMTI3OFx1MjAxMzEyODgpIiwiU2hcdTAxNGRcdTAxNGQgKDEyODhcdTIwMTMxMjkzKSIsIkVpbmluICgxMjkzXHUyMDEzMTI5OSkiLCJTaFx1MDE0ZGFuICgxMjk5XHUyMDEzMTMwMikiLCJLZW5nZW4gKDEzMDJcdTIwMTMxMzAzKSIsIkthZ2VuICgxMzAzXHUyMDEz''@;'; put 'put ''MTMwNikiLCJUb2t1amkgKDEzMDZcdTIwMTMxMzA4KSIsIkVua3lcdTAxNGQgKDEzMDhcdTIwMTMxMzExKSIsIlx1MDE0Y2NoXHUwMTRkICgxMzExXHUyMDEzMTMxMikiLCJTaFx1MDE0ZHdhICgxMzEyXHUyMDEzMTMxNykiLCJCdW5wXHUwMTRkICgxMzE3XHUyMDEzMTMxOSkiLCJHZW5cdTAx''@;'; put 'put ''NGQgKDEzMTlcdTIwMTMxMzIxKSIsIkdlbmtcdTAxNGQgKDEzMjFcdTIwMTMxMzI0KSIsIlNoXHUwMTRkY2hcdTAxNmIgKDEzMjRcdTIwMTMxMzI2KSIsIkthcnlha3UgKDEzMjZcdTIwMTMxMzI5KSIsIkdlbnRva3UgKDEzMjlcdTIwMTMxMzMxKSIsIkdlbmtcdTAxNGQgKDEzMzFcdTIwMTMx''@;'; put 'put ''MzM0KSIsIktlbm11ICgxMzM0XHUyMDEzMTMzNikiLCJFbmdlbiAoMTMzNlx1MjAxMzEzNDApIiwiS1x1MDE0ZGtva3UgKDEzNDBcdTIwMTMxMzQ2KSIsIlNoXHUwMTRkaGVpICgxMzQ2XHUyMDEzMTM3MCkiLCJLZW50b2t1ICgxMzcwXHUyMDEzMTM3MikiLCJCdW5jaFx1MDE2YiAoMTM3Mlx1''@;'; put 'put ''MjAxMzEzNzUpIiwiVGVuanUgKDEzNzVcdTIwMTMxMzc5KSIsIktcdTAxNGRyeWFrdSAoMTM3OVx1MjAxMzEzODEpIiwiS1x1MDE0ZHdhICgxMzgxXHUyMDEzMTM4NCkiLCJHZW5jaFx1MDE2YiAoMTM4NFx1MjAxMzEzOTIpIiwiTWVpdG9rdSAoMTM4NFx1MjAxMzEzODcpIiwiS2FrZWkgKDEz''@;'; put 'put ''ODdcdTIwMTMxMzg5KSIsIktcdTAxNGRcdTAxNGQgKDEzODlcdTIwMTMxMzkwKSIsIk1laXRva3UgKDEzOTBcdTIwMTMxMzk0KSIsIlx1MDE0Y2VpICgxMzk0XHUyMDEzMTQyOCkiLCJTaFx1MDE0ZGNoXHUwMTRkICgxNDI4XHUyMDEzMTQyOSkiLCJFaWt5XHUwMTRkICgxNDI5XHUyMDEzMTQ0''@;'; put 'put ''MSkiLCJLYWtpdHN1ICgxNDQxXHUyMDEzMTQ0NCkiLCJCdW5cdTIwMTlhbiAoMTQ0NFx1MjAxMzE0NDkpIiwiSFx1MDE0ZHRva3UgKDE0NDlcdTIwMTMxNDUyKSIsIkt5XHUwMTRkdG9rdSAoMTQ1Mlx1MjAxMzE0NTUpIiwiS1x1MDE0ZHNoXHUwMTRkICgxNDU1XHUyMDEzMTQ1NykiLCJDaFx1''@;'; put 'put ''MDE0ZHJva3UgKDE0NTdcdTIwMTMxNDYwKSIsIkthbnNoXHUwMTRkICgxNDYwXHUyMDEzMTQ2NikiLCJCdW5zaFx1MDE0ZCAoMTQ2Nlx1MjAxMzE0NjcpIiwiXHUwMTRjbmluICgxNDY3XHUyMDEzMTQ2OSkiLCJCdW5tZWkgKDE0NjlcdTIwMTMxNDg3KSIsIkNoXHUwMTRka3lcdTAxNGQgKDE0''@;'; put 'put ''ODdcdTIwMTMxNDg5KSIsIkVudG9rdSAoMTQ4OVx1MjAxMzE0OTIpIiwiTWVpXHUwMTRkICgxNDkyXHUyMDEzMTUwMSkiLCJCdW5raSAoMTUwMVx1MjAxMzE1MDQpIiwiRWlzaFx1MDE0ZCAoMTUwNFx1MjAxMzE1MjEpIiwiVGFpZWkgKDE1MjFcdTIwMTMxNTI4KSIsIkt5XHUwMTRkcm9rdSAo''@;'; put 'put ''MTUyOFx1MjAxMzE1MzIpIiwiVGVuYnVuICgxNTMyXHUyMDEzMTU1NSkiLCJLXHUwMTRkamkgKDE1NTVcdTIwMTMxNTU4KSIsIkVpcm9rdSAoMTU1OFx1MjAxMzE1NzApIiwiR2Vua2kgKDE1NzBcdTIwMTMxNTczKSIsIlRlbnNoXHUwMTRkICgxNTczXHUyMDEzMTU5MikiLCJCdW5yb2t1ICgx''@;'; put 'put ''NTkyXHUyMDEzMTU5NikiLCJLZWljaFx1MDE0ZCAoMTU5Nlx1MjAxMzE2MTUpIiwiR2VubmEgKDE2MTVcdTIwMTMxNjI0KSIsIkthblx1MjAxOWVpICgxNjI0XHUyMDEzMTY0NCkiLCJTaFx1MDE0ZGhvICgxNjQ0XHUyMDEzMTY0OCkiLCJLZWlhbiAoMTY0OFx1MjAxMzE2NTIpIiwiSlx1MDE0''@;'; put 'put ''ZFx1MDE0ZCAoMTY1Mlx1MjAxMzE2NTUpIiwiTWVpcmVraSAoMTY1NVx1MjAxMzE2NTgpIiwiTWFuamkgKDE2NThcdTIwMTMxNjYxKSIsIkthbmJ1biAoMTY2MVx1MjAxMzE2NzMpIiwiRW5wXHUwMTRkICgxNjczXHUyMDEzMTY4MSkiLCJUZW5uYSAoMTY4MVx1MjAxMzE2ODQpIiwiSlx1MDE0''@;'; put 'put ''ZGt5XHUwMTRkICgxNjg0XHUyMDEzMTY4OCkiLCJHZW5yb2t1ICgxNjg4XHUyMDEzMTcwNCkiLCJIXHUwMTRkZWkgKDE3MDRcdTIwMTMxNzExKSIsIlNoXHUwMTRkdG9rdSAoMTcxMVx1MjAxMzE3MTYpIiwiS3lcdTAxNGRoXHUwMTRkICgxNzE2XHUyMDEzMTczNikiLCJHZW5idW4gKDE3MzZc''@;'; put 'put ''dTIwMTMxNzQxKSIsIkthbnBcdTAxNGQgKDE3NDFcdTIwMTMxNzQ0KSIsIkVua3lcdTAxNGQgKDE3NDRcdTIwMTMxNzQ4KSIsIkthblx1MjAxOWVuICgxNzQ4XHUyMDEzMTc1MSkiLCJIXHUwMTRkcmVraSAoMTc1MVx1MjAxMzE3NjQpIiwiTWVpd2EgKDE3NjRcdTIwMTMxNzcyKSIsIkFuXHUy''@;'; put 'put ''MDE5ZWkgKDE3NzJcdTIwMTMxNzgxKSIsIlRlbm1laSAoMTc4MVx1MjAxMzE3ODkpIiwiS2Fuc2VpICgxNzg5XHUyMDEzMTgwMSkiLCJLeVx1MDE0ZHdhICgxODAxXHUyMDEzMTgwNCkiLCJCdW5rYSAoMTgwNFx1MjAxMzE4MTgpIiwiQnVuc2VpICgxODE4XHUyMDEzMTgzMCkiLCJUZW5wXHUw''@;'; put 'put ''MTRkICgxODMwXHUyMDEzMTg0NCkiLCJLXHUwMTRka2EgKDE4NDRcdTIwMTMxODQ4KSIsIkthZWkgKDE4NDhcdTIwMTMxODU0KSIsIkFuc2VpICgxODU0XHUyMDEzMTg2MCkiLCJNYW5cdTIwMTllbiAoMTg2MFx1MjAxMzE4NjEpIiwiQnVua3lcdTAxNmIgKDE4NjFcdTIwMTMxODY0KSIsIkdl''@;'; put 'put ''bmppICgxODY0XHUyMDEzMTg2NSkiLCJLZWlcdTAxNGQgKDE4NjVcdTIwMTMxODY4KSIsIk1laWppIiwiVGFpc2hcdTAxNGQiLCJTaFx1MDE0ZHdhIiwiSGVpc2VpIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJwbSI6IlBNIn19LCJwZXJzaWFuIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsi''@;'; put 'put ''MSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sInNob3J0IjpbIkZhcnZhcmRpbiIsIk9yZGliZWhlc2h0IiwiS2hvcmRhZCIsIlRpciIsIk1vcmRhZCIsIlNoYWhyaXZhciIsIk1laHIiLCJBYmFuIiwiQXphciIsIkRleSIsIkJhaG1hbiIsIkVzZmFu''@;'; put 'put ''ZCJdLCJsb25nIjpbIkZhcnZhcmRpbiIsIk9yZGliZWhlc2h0IiwiS2hvcmRhZCIsIlRpciIsIk1vcmRhZCIsIlNoYWhyaXZhciIsIk1laHIiLCJBYmFuIiwiQXphciIsIkRleSIsIkJhaG1hbiIsIkVzZmFuZCJdfSwiZGF5cyI6eyJuYXJyb3ciOlsiUyIsIk0iLCJUIiwiVyIsIlQiLCJGIiwi''@;'; put 'put ''UyJdLCJzaG9ydCI6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwibG9uZyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdfSwiZXJhcyI6eyJuYXJyb3ciOlsiQVAiXSwic2hv''@;'; put 'put ''cnQiOlsiQVAiXSwibG9uZyI6WyJBUCJdfSwiZGF5UGVyaW9kcyI6eyJhbSI6IkFNIiwicG0iOiJQTSJ9fSwicm9jIjp7Im1vbnRocyI6eyJuYXJyb3ciOlsiSiIsIkYiLCJNIiwiQSIsIk0iLCJKIiwiSiIsIkEiLCJTIiwiTyIsIk4iLCJEIl0sInNob3J0IjpbIkphbiIsIkZlYiIsIk1hciIs''@;'; put 'put ''IkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJsb25nIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRl''@;'; put 'put ''Y2VtYmVyIl19LCJkYXlzIjp7Im5hcnJvdyI6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl0sInNob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJsb25nIjpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2Rh''@;'; put 'put ''eSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LCJlcmFzIjp7Im5hcnJvdyI6WyJCZWZvcmUgUi5PLkMuIiwiTWluZ3VvIl0sInNob3J0IjpbIkJlZm9yZSBSLk8uQy4iLCJNaW5ndW8iXSwibG9uZyI6WyJCZWZvcmUgUi5PLkMuIiwiTWluZ3VvIl19LCJkYXlQZXJpb2RzIjp7ImFtIjoiQU0iLCJw''@;'; put 'put ''bSI6IlBNIn19fX0sIm51bWJlciI6eyJudSI6WyJsYXRuIl0sInBhdHRlcm5zIjp7ImRlY2ltYWwiOnsicG9zaXRpdmVQYXR0ZXJuIjoie251bWJlcn0iLCJuZWdhdGl2ZVBhdHRlcm4iOiJ7bWludXNTaWdufXtudW1iZXJ9In0sImN1cnJlbmN5Ijp7InBvc2l0aXZlUGF0dGVybiI6IntjdXJy''@;'; put 'put ''ZW5jeX17bnVtYmVyfSIsIm5lZ2F0aXZlUGF0dGVybiI6InttaW51c1NpZ259e2N1cnJlbmN5fXtudW1iZXJ9In0sInBlcmNlbnQiOnsicG9zaXRpdmVQYXR0ZXJuIjoie251bWJlcn17cGVyY2VudFNpZ259IiwibmVnYXRpdmVQYXR0ZXJuIjoie21pbnVzU2lnbn17bnVtYmVyfXtwZXJjZW50''@;'; put 'put ''U2lnbn0ifX0sInN5bWJvbHMiOnsibGF0biI6eyJkZWNpbWFsIjoiLiIsImdyb3VwIjoiLCIsIm5hbiI6Ik5hTiIsInBsdXNTaWduIjoiKyIsIm1pbnVzU2lnbiI6Ii0iLCJwZXJjZW50U2lnbiI6IiUiLCJpbmZpbml0eSI6Ilx1MjIxZSJ9fSwiY3VycmVuY2llcyI6eyJBVUQiOiJBJCIsIkJS''@;'; put 'put ''TCI6IlIkIiwiQ0FEIjoiQ0EkIiwiQ05ZIjoiQ05ceGE1IiwiRVVSIjoiXHUyMGFjIiwiR0JQIjoiXHhhMyIsIkhLRCI6IkhLJCIsIklMUyI6Ilx1MjBhYSIsIklOUiI6Ilx1MjBiOSIsIkpQWSI6Ilx4YTUiLCJLUlciOiJcdTIwYTkiLCJNWE4iOiJNWCQiLCJOWkQiOiJOWiQiLCJUV0QiOiJO''@;'; put 'put ''VCQiLCJVU0QiOiIkIiwiVk5EIjoiXHUyMGFiIiwiWEFGIjoiRkNGQSIsIlhDRCI6IkVDJCIsIlhPRiI6IkNGQSIsIlhQRiI6IkNGUEYifX19Jyl9fSxjPT57dmFyIGw9bj0+YyhjLnM9bik7bCgyNDA1MCksbCg5NjkzNSl9XSk7'';'; 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.6095c08a65f253f1-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 ''KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlLHM9e30scD17fTtmdW5jdGlvbiByKGUpe3ZhciBhPXBbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYS5leHBvcnRzO3ZhciB0PXBbZV09e2lkOmUsbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBzW2VdLmNhbGwodC5leHBvcnRzLHQsdC5leHBv''@;'; put 'put ''cnRzLHIpLHQubG9hZGVkPSEwLHQuZXhwb3J0c31yLm09cyxlPVtdLHIuTz0oYSx0LG8sbCk9PntpZighdCl7dmFyIGM9MS8wO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspe2Zvcih2YXJbdCxvLGxdPWVbbl0sZD0hMCxmPTA7Zjx0Lmxlbmd0aDtmKyspKCExJmx8fGM+PWwpJiZPYmplY3Qua2V5''@;'; put 'put ''cyhyLk8pLmV2ZXJ5KF89PnIuT1tfXSh0W2ZdKSk/dC5zcGxpY2UoZi0tLDEpOihkPSExLGw8YyYmKGM9bCkpO2lmKGQpe2Uuc3BsaWNlKG4tLSwxKTt2YXIgdT1vKCk7dm9pZCAwIT09dSYmKGE9dSl9fXJldHVybiBhfWw9bHx8MDtmb3IodmFyIG49ZS5sZW5ndGg7bj4wJiZlW24tMV1bMl0+''@;'; put 'put ''bDtuLS0pZVtuXT1lW24tMV07ZVtuXT1bdCxvLGxdfSxyLm49ZT0+e3ZhciBhPWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiByLmQoYSx7YX0pLGF9LHIuZD0oZSxhKT0+e2Zvcih2YXIgdCBpbiBhKXIubyhhLHQpJiYhci5vKGUsdCkmJk9iamVjdC5kZWZpbmVQ''@;'; put 'put ''cm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OmFbdF19KX0sci51PWU9PmUrIi4yNjg5NmQ5M2UwNTZkY2I5LmpzIixyLm89KGUsYSk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGEpLHIucj1lPT57dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmlu''@;'; put 'put ''Z1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sci5ubWQ9ZT0+KGUucGF0aHM9W10sZS5jaGlsZHJlbnx8KGUuY2hpbGRyZW49W10p''@;'; put 'put ''LGUpLCgoKT0+e3ZhciBlO3IudHQ9KCk9Pih2b2lkIDA9PT1lJiYoZT17Y3JlYXRlU2NyaXB0VVJMOmE9PmF9LHR5cGVvZiB0cnVzdGVkVHlwZXM8InUiJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5JiYoZT10cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJhbmd1bGFyI2J1bmRsZXIiLGUp''@;'; put 'put ''KSksZSl9KSgpLHIudHU9ZT0+ci50dCgpLmNyZWF0ZVNjcmlwdFVSTChlKSxyLnA9IiIsKCgpPT57ci5iPWRvY3VtZW50LmJhc2VVUkl8fHNlbGYubG9jYXRpb24uaHJlZjt2YXIgZT17MTIxOjB9O3IuTy5qPW89PjA9PT1lW29dO3ZhciBhPShvLGwpPT57dmFyIGYsdSxbbixjLGRdPWwsaT0w''@;'; put 'put ''O2lmKG4uc29tZSh2PT4wIT09ZVt2XSkpe2ZvcihmIGluIGMpci5vKGMsZikmJihyLm1bZl09Y1tmXSk7aWYoZCl2YXIgYj1kKHIpfWZvcihvJiZvKGwpO2k8bi5sZW5ndGg7aSsrKXIubyhlLHU9bltpXSkmJmVbdV0mJmVbdV1bMF0oKSxlW3VdPTA7cmV0dXJuIHIuTyhiKX0sdD1zZWxmLndl''@;'; put 'put ''YnBhY2tDaHVua2RhdGFjb250cm9sbGVyPXNlbGYud2VicGFja0NodW5rZGF0YWNvbnRyb2xsZXJ8fFtdO3QuZm9yRWFjaChhLmJpbmQobnVsbCwwKSksdC5wdXNoPWEuYmluZChudWxsLHQucHVzaC5iaW5kKHQpKX0pKCl9KSgpOw=='';'; 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.f418d7e71dbfd309-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 ''IWZ1bmN0aW9uKEMsUCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZ0eXBlb2YgbW9kdWxlPCJ1Ij9QKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLFApOlAoKEM9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRo''@;'; put 'put ''aXM6Q3x8c2VsZikubWFya2VkPXt9KX0odGhpcyxmdW5jdGlvbihDKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gUChhLGkpe2Zvcih2YXIgdD0wO3Q8aS5sZW5ndGg7dCsrKXt2YXIgdT1pW3RdO3UuZW51bWVyYWJsZT11LmVudW1lcmFibGV8fCExLHUuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp''@;'; put 'put ''biB1JiYodS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsInN5bWJvbCI9PXR5cGVvZihlPWZ1bmN0aW9uKHIsbil7aWYoIm9iamVjdCIhPXR5cGVvZiByfHxudWxsPT09cilyZXR1cm4gcjt2YXIgcz1yW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwPT09cylyZXR1''@;'; put 'put ''cm4gU3RyaW5nKHIpO2lmKCJvYmplY3QiIT10eXBlb2Yocz1zLmNhbGwociwic3RyaW5nIikpKXJldHVybiBzO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9KGU9dS5rZXkpKT9lOlN0cmluZyhlKSx1KX12YXIgZX1m''@;'; put 'put ''dW5jdGlvbiB2KCl7cmV0dXJuKHY9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihhKXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgdCx1PWFyZ3VtZW50c1tpXTtmb3IodCBpbiB1KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy''@;'; put 'put ''dHkuY2FsbCh1LHQpJiYoYVt0XT11W3RdKX1yZXR1cm4gYX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBKKGEsaSl7KG51bGw9PWl8fGk+YS5sZW5ndGgpJiYoaT1hLmxlbmd0aCk7Zm9yKHZhciB0PTAsdT1uZXcgQXJyYXkoaSk7dDxpO3QrKyl1W3RdPWFbdF07cmV0dXJuIHV9''@;'; put 'put ''ZnVuY3Rpb24gVShhLGkpe3ZhciB0LHU9dHlwZW9mIFN5bWJvbDwidSImJmFbU3ltYm9sLml0ZXJhdG9yXXx8YVsiQEBpdGVyYXRvciJdO2lmKHUpcmV0dXJuKHU9dS5jYWxsKGEpKS5uZXh0LmJpbmQodSk7aWYoQXJyYXkuaXNBcnJheShhKXx8KHU9ZnVuY3Rpb24oZSxyKXt2YXIgbjtpZihl''@;'; put 'put ''KXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9KKGUscik6Ik1hcCI9PT0obj0iT2JqZWN0Ij09PShuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKSkmJmUuY29uc3RydWN0b3I/ZS5jb25zdHJ1Y3Rvci5uYW1lOm4pfHwiU2V0Ij09PW4/QXJyYXkuZnJvbShl''@;'; put 'put ''KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0ooZSxyKTp2b2lkIDB9KGEpKXx8aSYmYSYmIm51bWJlciI9PXR5cGVvZiBhLmxlbmd0aClyZXR1cm4gdSYmKGE9dSksdD0wLGZ1bmN0aW9uKCl7cmV0dXJuIHQ+PWEu''@;'; put 'put ''bGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTphW3QrK119fTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZl''@;'; put 'put ''IGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG9lPTA7ZnVuY3Rpb24gSyhhKXtyZXR1cm4iX19wcml2YXRlXyIrb2UrKysiXyIrYX1mdW5jdGlvbiBHKGEsaSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsaSkpcmV0dXJuIGE7dGhyb3cgbmV3''@;'; put 'put ''IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHVzZSBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpfWZ1bmN0aW9uIFEoKXtyZXR1cm57YXN5bmM6ITEsYmFzZVVybDpudWxsLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIs''@;'; put 'put ''aGlnaGxpZ2h0Om51bGwsaG9va3M6bnVsbCxsYW5nUHJlZml4OiJsYW5ndWFnZS0iLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpudWxsLHNpbGVudDohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51''@;'; put 'put ''bGwseGh0bWw6ITF9fWZ1bmN0aW9uIFcoYSl7Qy5kZWZhdWx0cz1hfWZ1bmN0aW9uIFkoYSl7cmV0dXJuIGNlW2FdfUMuZGVmYXVsdHM9e2FzeW5jOiExLGJhc2VVcmw6bnVsbCxicmVha3M6ITEsZXh0ZW5zaW9uczpudWxsLGdmbTohMCxoZWFkZXJJZHM6ITAsaGVhZGVyUHJlZml4OiIiLGhp''@;'; put 'put ''Z2hsaWdodDpudWxsLGhvb2tzOm51bGwsbGFuZ1ByZWZpeDoibGFuZ3VhZ2UtIixtYW5nbGU6ITAscGVkYW50aWM6ITEscmVuZGVyZXI6bnVsbCxzYW5pdGl6ZTohMSxzYW5pdGl6ZXI6bnVsbCxzaWxlbnQ6ITEsc21hcnR5cGFudHM6ITEsdG9rZW5pemVyOm51bGwsd2Fsa1Rva2VuczpudWxs''@;'; put 'put ''LHhodG1sOiExfTt2YXIgZWU9L1smPD4iJ10vLGxlPW5ldyBSZWdFeHAoZWUuc291cmNlLCJnIiksdGU9L1s8PiInXXwmKD8hKCNcZHsxLDd9fCNbWHhdW2EtZkEtRjAtOV17MSw2fXxcdyspOykvLERlPW5ldyBSZWdFeHAodGUuc291cmNlLCJnIiksY2U9eyImIjoiJmFtcDsiLCI8IjoiJmx0''@;'; put 'put ''OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9O2Z1bmN0aW9uIHkoYSxpKXtpZihpKXtpZihlZS50ZXN0KGEpKXJldHVybiBhLnJlcGxhY2UobGUsWSl9ZWxzZSBpZih0ZS50ZXN0KGEpKXJldHVybiBhLnJlcGxhY2UoRGUsWSk7cmV0dXJuIGF9dmFyIHBlPS8mKCMoPzpc''@;'; put 'put ''ZCspfCg/OiN4WzAtOUEtRmEtZl0rKXwoPzpcdyspKTs/L2dpO2Z1bmN0aW9uIHVlKGEpe3JldHVybiBhLnJlcGxhY2UocGUsZnVuY3Rpb24oaSx0KXtyZXR1cm4iY29sb24iPT09KHQ9dC50b0xvd2VyQ2FzZSgpKT8iOiI6IiMiPT09dC5jaGFyQXQoMCk/IngiPT09dC5jaGFyQXQoMSk/U3Ry''@;'; put 'put ''aW5nLmZyb21DaGFyQ29kZShwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpOlN0cmluZy5mcm9tQ2hhckNvZGUoK3Quc3Vic3RyaW5nKDEpKToiIn0pfXZhciBoZT0vKF58W15cW10pXF4vZztmdW5jdGlvbiBFKGEsaSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/YTphLnNvdXJjZSxpPWl8fCIi''@;'; put 'put ''O3ZhciB0PXtyZXBsYWNlOmZ1bmN0aW9uKHUsZSl7cmV0dXJuIGU9KGU9ZS5zb3VyY2V8fGUpLnJlcGxhY2UoaGUsIiQxIiksYT1hLnJlcGxhY2UodSxlKSx0fSxnZXRSZWdleDpmdW5jdGlvbigpe3JldHVybiBuZXcgUmVnRXhwKGEsaSl9fTtyZXR1cm4gdH12YXIgZ2U9L1teXHc6XS9nLGZl''@;'; put 'put ''PS9eJHxeW2Etel1bYS16MC05Ky4tXSo6fF5bPyNdL2k7ZnVuY3Rpb24gbmUoYSxpLHQpe2lmKGEpe3RyeXt1PWRlY29kZVVSSUNvbXBvbmVudCh1ZSh0KSkucmVwbGFjZShnZSwiIikudG9Mb3dlckNhc2UoKX1jYXRjaHtyZXR1cm4gbnVsbH1pZigwPT09dS5pbmRleE9mKCJqYXZhc2NyaXB0''@;'; put 'put ''OiIpfHwwPT09dS5pbmRleE9mKCJ2YnNjcmlwdDoiKXx8MD09PXUuaW5kZXhPZigiZGF0YToiKSlyZXR1cm4gbnVsbH12YXIgdTtpJiYhZmUudGVzdCh0KSYmKGE9dCxNWyIgIisodT1pKV18fChNWyIgIit1XT1GZS50ZXN0KHUpP3UrIi8iOkgodSwiLyIsITApKSxpPS0xPT09KHU9TVsiICIr''@;'; put 'put ''dV0pLmluZGV4T2YoIjoiKSx0PSIvLyI9PT1hLnN1YnN0cmluZygwLDIpP2k/YTp1LnJlcGxhY2UoZGUsIiQxIikrYToiLyI9PT1hLmNoYXJBdCgwKT9pP2E6dS5yZXBsYWNlKEFlLCIkMSIpK2E6dSthKTt0cnl7dD1lbmNvZGVVUkkodCkucmVwbGFjZSgvJTI1L2csIiUiKX1jYXRjaHtyZXR1''@;'; put 'put ''cm4gbnVsbH1yZXR1cm4gdH12YXIgTT17fSxGZT0vXlteOl0rOlwvKlteL10qJC8sZGU9L14oW146XSs6KVtcc1xTXSokLyxBZT0vXihbXjpdKzpcLypbXi9dKilbXHNcU10qJC8sST17ZXhlYzpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHJlKGEsaSl7dmFyIHQ9YS5yZXBsYWNlKC9cfC9nLGZ1''@;'; put 'put ''bmN0aW9uKGUscixuKXtmb3IodmFyIHM9ITEscD1yOzA8PS0tcCYmIlxcIj09PW5bcF07KXM9IXM7cmV0dXJuIHM/InwiOiIgfCJ9KS5zcGxpdCgvIFx8LyksdT0wO2lmKHRbMF0udHJpbSgpfHx0LnNoaWZ0KCksMDx0Lmxlbmd0aCYmIXRbdC5sZW5ndGgtMV0udHJpbSgpJiZ0LnBvcCgpLHQu''@;'; put 'put ''bGVuZ3RoPmkpdC5zcGxpY2UoaSk7ZWxzZSBmb3IoO3QubGVuZ3RoPGk7KXQucHVzaCgiIik7Zm9yKDt1PHQubGVuZ3RoO3UrKyl0W3VdPXRbdV0udHJpbSgpLnJlcGxhY2UoL1xcXHwvZywifCIpO3JldHVybiB0fWZ1bmN0aW9uIEgoYSxpLHQpe3ZhciB1PWEubGVuZ3RoO2lmKDA9PT11KXJl''@;'; put 'put ''dHVybiIiO2Zvcih2YXIgZT0wO2U8dTspe3ZhciByPWEuY2hhckF0KHUtZS0xKTtpZigociE9PWl8fHQpJiYocj09PWl8fCF0KSlicmVhaztlKyt9cmV0dXJuIGEuc2xpY2UoMCx1LWUpfWZ1bmN0aW9uIGllKGEscix0LHUpe3ZhciBlPXIuaHJlZixuPShyPXIudGl0bGU/eShyLnRpdGxlKTpu''@;'; put 'put ''dWxsLGFbMV0ucmVwbGFjZSgvXFwoW1xbXF1dKS9nLCIkMSIpKTtyZXR1cm4iISIhPT1hWzBdLmNoYXJBdCgwKT8odS5zdGF0ZS5pbkxpbms9ITAsYT17dHlwZToibGluayIscmF3OnQsaHJlZjplLHRpdGxlOnIsdGV4dDpuLHRva2Vuczp1LmlubGluZVRva2VucyhuKX0sdS5zdGF0ZS5pbkxp''@;'; put 'put ''bms9ITEsYSk6e3R5cGU6ImltYWdlIixyYXc6dCxocmVmOmUsdGl0bGU6cix0ZXh0Onkobil9fXZhciBqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSh0KXt0aGlzLm9wdGlvbnM9dHx8Qy5kZWZhdWx0c312YXIgaT1hLnByb3RvdHlwZTtyZXR1cm4gaS5zcGFjZT1mdW5jdGlvbih0KXtpZigodD10''@;'; put 'put ''aGlzLnJ1bGVzLmJsb2NrLm5ld2xpbmUuZXhlYyh0KSkmJjA8dFswXS5sZW5ndGgpcmV0dXJue3R5cGU6InNwYWNlIixyYXc6dFswXX19LGkuY29kZT1mdW5jdGlvbihlKXt2YXIgdTtpZihlPXRoaXMucnVsZXMuYmxvY2suY29kZS5leGVjKGUpKXJldHVybiB1PWVbMF0ucmVwbGFjZSgvXiB7''@;'; put 'put ''MSw0fS9nbSwiIikse3R5cGU6ImNvZGUiLHJhdzplWzBdLGNvZGVCbG9ja1N0eWxlOiJpbmRlbnRlZCIsdGV4dDp0aGlzLm9wdGlvbnMucGVkYW50aWM/dTpIKHUsIlxuIil9fSxpLmZlbmNlcz1mdW5jdGlvbihzKXt2YXIgdSxlLHIsbjtpZihzPXRoaXMucnVsZXMuYmxvY2suZmVuY2VzLmV4''@;'; put 'put ''ZWMocykpcmV0dXJuIGU9dT1zWzBdLHI9c1szXXx8IiIsZT1udWxsPT09KGU9dS5tYXRjaCgvXihccyspKD86YGBgKS8pKT9yOihuPWVbMV0sci5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24ocCl7dmFyIGc9cC5tYXRjaCgvXlxzKy8pO3JldHVybiBudWxsIT09ZyYmZ1swXS5sZW5ndGg+PW4u''@;'; put 'put ''bGVuZ3RoP3Auc2xpY2Uobi5sZW5ndGgpOnB9KS5qb2luKCJcbiIpKSx7dHlwZToiY29kZSIscmF3OnUsbGFuZzpzWzJdJiZzWzJdLnRyaW0oKS5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpLHRleHQ6ZX19LGkuaGVhZGluZz1mdW5jdGlvbihyKXt2YXIgdSxlO2lm''@;'; put 'put ''KHI9dGhpcy5ydWxlcy5ibG9jay5oZWFkaW5nLmV4ZWMocikpcmV0dXJuIHU9clsyXS50cmltKCksLyMkLy50ZXN0KHUpJiYoZT1IKHUsIiMiKSwhdGhpcy5vcHRpb25zLnBlZGFudGljJiZlJiYhLyAkLy50ZXN0KGUpfHwodT1lLnRyaW0oKSkpLHt0eXBlOiJoZWFkaW5nIixyYXc6clswXSxk''@;'; put 'put ''ZXB0aDpyWzFdLmxlbmd0aCx0ZXh0OnUsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHUpfX0saS5ocj1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuYmxvY2suaHIuZXhlYyh0KSlyZXR1cm57dHlwZToiaHIiLHJhdzp0WzBdfX0saS5ibG9ja3F1b3RlPWZ1bmN0aW9uKG4pe3ZhciB1LGUs''@;'; put 'put ''cjtpZihuPXRoaXMucnVsZXMuYmxvY2suYmxvY2txdW90ZS5leGVjKG4pKXJldHVybiB1PW5bMF0ucmVwbGFjZSgvXiAqPlsgXHRdPy9nbSwiIiksZT10aGlzLmxleGVyLnN0YXRlLnRvcCx0aGlzLmxleGVyLnN0YXRlLnRvcD0hMCxyPXRoaXMubGV4ZXIuYmxvY2tUb2tlbnModSksdGhpcy5s''@;'; put 'put ''ZXhlci5zdGF0ZS50b3A9ZSx7dHlwZToiYmxvY2txdW90ZSIscmF3Om5bMF0sdG9rZW5zOnIsdGV4dDp1fX0saS5saXN0PWZ1bmN0aW9uKHQpe3ZhciB1PXRoaXMucnVsZXMuYmxvY2subGlzdC5leGVjKHQpO2lmKHUpe3ZhciBlLHIsbixzLHAsZyxELG8sRixkLHgsaD0xPChrPXVbMV0udHJp''@;'; put 'put ''bSgpKS5sZW5ndGgsbD17dHlwZToibGlzdCIscmF3OiIiLG9yZGVyZWQ6aCxzdGFydDpoPytrLnNsaWNlKDAsLTEpOiIiLGxvb3NlOiExLGl0ZW1zOltdfSxrPWg/IlxcZHsxLDl9XFwiK2suc2xpY2UoLTEpOiJcXCIrazt0aGlzLm9wdGlvbnMucGVkYW50aWMmJihrPWg/azoiWyorLV0iKTtm''@;'; put 'put ''b3IodmFyIGI9bmV3IFJlZ0V4cCgiXiggezAsM30iK2srIikoKD86W1x0IF1bXlxcbl0qKT8oPzpcXG58JCkpIik7dCYmKHg9ITEsdT1iLmV4ZWModCkpJiYhdGhpcy5ydWxlcy5ibG9jay5oci50ZXN0KHQpOyl7aWYodD10LnN1YnN0cmluZygoZT11WzBdKS5sZW5ndGgpLEQ9dVsyXS5zcGxp''@;'; put 'put ''dCgiXG4iLDEpWzBdLnJlcGxhY2UoL15cdCsvLGZ1bmN0aW9uKEwpe3JldHVybiIgIi5yZXBlYXQoMypMLmxlbmd0aCl9KSxvPXQuc3BsaXQoIlxuIiwxKVswXSx0aGlzLm9wdGlvbnMucGVkYW50aWM/KHM9MixkPUQudHJpbUxlZnQoKSk6KHM9dVsyXS5zZWFyY2goL1teIF0vKSxkPUQuc2xp''@;'; put 'put ''Y2Uocz00PHM/MTpzKSxzKz11WzFdLmxlbmd0aCkscD0hMSwhRCYmL14gKiQvLnRlc3QobykmJihlKz1vKyJcbiIsdD10LnN1YnN0cmluZyhvLmxlbmd0aCsxKSx4PSEwKSwheClmb3IodmFyIHc9bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMscy0xKSsifSg/OlsqKy1dfFxcZHsxLDl9''@;'; put 'put ''Wy4pXSkoKD86WyBcdF1bXlxcbl0qKT8oPzpcXG58JCkpIiksQT1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyxzLTEpKyJ9KCg/Oi0gKil7Myx9fCg/Ol8gKil7Myx9fCg/OlxcKiAqKXszLH0pKD86XFxuK3wkKSIpLEI9bmV3IFJlZ0V4cCgiXiB7MCwiK01hdGgubWluKDMscy0xKSsi''@;'; put 'put ''fSg/OmBgYHx+fn4pIiksXz1uZXcgUmVnRXhwKCJeIHswLCIrTWF0aC5taW4oMyxzLTEpKyJ9IyIpO3QmJihvPUY9dC5zcGxpdCgiXG4iLDEpWzBdLHRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKG89by5yZXBsYWNlKC9eIHsxLDR9KD89KCB7NH0pKlteIF0pL2csIiAgIikpLCFCLnRlc3Qobykp''@;'; put 'put ''JiYhXy50ZXN0KG8pJiYhdy50ZXN0KG8pJiYhQS50ZXN0KHQpOyl7aWYoby5zZWFyY2goL1teIF0vKT49c3x8IW8udHJpbSgpKWQrPSJcbiIrby5zbGljZShzKTtlbHNle2lmKHB8fDQ8PUQuc2VhcmNoKC9bXiBdLyl8fEIudGVzdChEKXx8Xy50ZXN0KEQpfHxBLnRlc3QoRCkpYnJlYWs7ZCs9''@;'; put 'put ''IlxuIitvfXB8fG8udHJpbSgpfHwocD0hMCksZSs9RisiXG4iLHQ9dC5zdWJzdHJpbmcoRi5sZW5ndGgrMSksRD1vLnNsaWNlKHMpfWwubG9vc2V8fChnP2wubG9vc2U9ITA6L1xuICpcbiAqJC8udGVzdChlKSYmKGc9ITApKSx0aGlzLm9wdGlvbnMuZ2ZtJiYocj0vXlxbWyB4WF1cXSAvLmV4''@;'; put 'put ''ZWMoZCkpJiYobj0iWyBdICIhPT1yWzBdLGQ9ZC5yZXBsYWNlKC9eXFtbIHhYXVxdICsvLCIiKSksbC5pdGVtcy5wdXNoKHt0eXBlOiJsaXN0X2l0ZW0iLHJhdzplLHRhc2s6ISFyLGNoZWNrZWQ6bixsb29zZTohMSx0ZXh0OmR9KSxsLnJhdys9ZX1sLml0ZW1zW2wuaXRlbXMubGVuZ3RoLTFd''@;'; put 'put ''LnJhdz1lLnRyaW1SaWdodCgpLGwuaXRlbXNbbC5pdGVtcy5sZW5ndGgtMV0udGV4dD1kLnRyaW1SaWdodCgpLGwucmF3PWwucmF3LnRyaW1SaWdodCgpO2Zvcih2YXIgeixhZT1sLml0ZW1zLmxlbmd0aCwkPTA7JDxhZTskKyspdGhpcy5sZXhlci5zdGF0ZS50b3A9ITEsbC5pdGVtc1skXS50''@;'; put 'put ''b2tlbnM9dGhpcy5sZXhlci5ibG9ja1Rva2VucyhsLml0ZW1zWyRdLnRleHQsW10pLGwubG9vc2V8fCh6PTA8KHo9bC5pdGVtc1skXS50b2tlbnMuZmlsdGVyKGZ1bmN0aW9uKEwpe3JldHVybiJzcGFjZSI9PT1MLnR5cGV9KSkubGVuZ3RoJiZ6LnNvbWUoZnVuY3Rpb24oTCl7cmV0dXJuL1xu''@;'; put 'put ''Lipcbi8udGVzdChMLnJhdyl9KSxsLmxvb3NlPXopO2lmKGwubG9vc2UpZm9yKCQ9MDskPGFlOyQrKylsLml0ZW1zWyRdLmxvb3NlPSEwO3JldHVybiBsfX0saS5odG1sPWZ1bmN0aW9uKGUpe3ZhciB1O2lmKGU9dGhpcy5ydWxlcy5ibG9jay5odG1sLmV4ZWMoZSkpcmV0dXJuIHU9e3R5cGU6''@;'; put 'put ''Imh0bWwiLGJsb2NrOiEwLHJhdzplWzBdLHByZTohdGhpcy5vcHRpb25zLnNhbml0aXplciYmKCJwcmUiPT09ZVsxXXx8InNjcmlwdCI9PT1lWzFdfHwic3R5bGUiPT09ZVsxXSksdGV4dDplWzBdfSx0aGlzLm9wdGlvbnMuc2FuaXRpemUmJihlPXRoaXMub3B0aW9ucy5zYW5pdGl6ZXI/dGhp''@;'; put 'put ''cy5vcHRpb25zLnNhbml0aXplcihlWzBdKTp5KGVbMF0pLHUudHlwZT0icGFyYWdyYXBoIix1LnRleHQ9ZSx1LnRva2Vucz10aGlzLmxleGVyLmlubGluZShlKSksdX0saS5kZWY9ZnVuY3Rpb24obil7dmFyIHUsZSxyO2lmKG49dGhpcy5ydWxlcy5ibG9jay5kZWYuZXhlYyhuKSlyZXR1cm4g''@;'; put 'put ''dT1uWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csIiAiKSxlPW5bMl0/blsyXS5yZXBsYWNlKC9ePCguKik+JC8sIiQxIikucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKToiIixyPW5bM10mJm5bM10uc3Vic3RyaW5nKDEsblszXS5sZW5ndGgtMSkucmVw''@;'; put 'put ''bGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKSx7dHlwZToiZGVmIix0YWc6dSxyYXc6blswXSxocmVmOmUsdGl0bGU6cn19LGkudGFibGU9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmJsb2NrLnRhYmxlLmV4ZWModCkpe3ZhciB1PXt0eXBlOiJ0YWJsZSIsaGVhZGVy''@;'; put 'put ''OnJlKHRbMV0pLm1hcChmdW5jdGlvbihnKXtyZXR1cm57dGV4dDpnfX0pLGFsaWduOnRbMl0ucmVwbGFjZSgvXiAqfFx8ICokL2csIiIpLnNwbGl0KC8gKlx8ICovKSxyb3dzOnRbM10mJnRbM10udHJpbSgpP3RbM10ucmVwbGFjZSgvXG5bIFx0XSokLywiIikuc3BsaXQoIlxuIik6W119O2lm''@;'; put 'put ''KHUuaGVhZGVyLmxlbmd0aD09PXUuYWxpZ24ubGVuZ3RoKXt1LnJhdz10WzBdO2Zvcih2YXIgZSxyLG4scz11LmFsaWduLmxlbmd0aCxwPTA7cDxzO3ArKyl1LmFsaWduW3BdPS9eICotKzogKiQvLnRlc3QodS5hbGlnbltwXSk/InJpZ2h0IjovXiAqOi0rOiAqJC8udGVzdCh1LmFsaWduW3Bd''@;'; put 'put ''KT8iY2VudGVyIjovXiAqOi0rICokLy50ZXN0KHUuYWxpZ25bcF0pPyJsZWZ0IjpudWxsO2ZvcihzPXUucm93cy5sZW5ndGgscD0wO3A8cztwKyspdS5yb3dzW3BdPXJlKHUucm93c1twXSx1LmhlYWRlci5sZW5ndGgpLm1hcChmdW5jdGlvbihnKXtyZXR1cm57dGV4dDpnfX0pO2ZvcihzPXUu''@;'; put 'put ''aGVhZGVyLmxlbmd0aCxlPTA7ZTxzO2UrKyl1LmhlYWRlcltlXS50b2tlbnM9dGhpcy5sZXhlci5pbmxpbmUodS5oZWFkZXJbZV0udGV4dCk7Zm9yKHM9dS5yb3dzLmxlbmd0aCxlPTA7ZTxzO2UrKylmb3Iobj11LnJvd3NbZV0scj0wO3I8bi5sZW5ndGg7cisrKW5bcl0udG9rZW5zPXRoaXMu''@;'; put 'put ''bGV4ZXIuaW5saW5lKG5bcl0udGV4dCk7cmV0dXJuIHV9fX0saS5saGVhZGluZz1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuYmxvY2subGhlYWRpbmcuZXhlYyh0KSlyZXR1cm57dHlwZToiaGVhZGluZyIscmF3OnRbMF0sZGVwdGg6Ij0iPT09dFsyXS5jaGFyQXQoMCk/MToyLHRleHQ6''@;'; put 'put ''dFsxXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFsxXSl9fSxpLnBhcmFncmFwaD1mdW5jdGlvbihlKXt2YXIgdTtpZihlPXRoaXMucnVsZXMuYmxvY2sucGFyYWdyYXBoLmV4ZWMoZSkpcmV0dXJuIHU9IlxuIj09PWVbMV0uY2hhckF0KGVbMV0ubGVuZ3RoLTEpP2VbMV0uc2xpY2UoMCwt''@;'; put 'put ''MSk6ZVsxXSx7dHlwZToicGFyYWdyYXBoIixyYXc6ZVswXSx0ZXh0OnUsdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lKHUpfX0saS50ZXh0PWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5ydWxlcy5ibG9jay50ZXh0LmV4ZWModCkpcmV0dXJue3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dFswXSx0''@;'; put 'put ''b2tlbnM6dGhpcy5sZXhlci5pbmxpbmUodFswXSl9fSxpLmVzY2FwZT1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuaW5saW5lLmVzY2FwZS5leGVjKHQpKXJldHVybnt0eXBlOiJlc2NhcGUiLHJhdzp0WzBdLHRleHQ6eSh0WzFdKX19LGkudGFnPWZ1bmN0aW9uKHQpe2lmKHQ9dGhpcy5y''@;'; put 'put ''dWxlcy5pbmxpbmUudGFnLmV4ZWModCkpcmV0dXJuIXRoaXMubGV4ZXIuc3RhdGUuaW5MaW5rJiYvXjxhIC9pLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pbkxpbms9ITA6dGhpcy5sZXhlci5zdGF0ZS5pbkxpbmsmJi9ePFwvYT4vaS50ZXN0KHRbMF0pJiYodGhpcy5sZXhlci5zdGF0''@;'; put 'put ''ZS5pbkxpbms9ITEpLCF0aGlzLmxleGVyLnN0YXRlLmluUmF3QmxvY2smJi9ePChwcmV8Y29kZXxrYmR8c2NyaXB0KShcc3w+KS9pLnRlc3QodFswXSk/dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSEwOnRoaXMubGV4ZXIuc3RhdGUuaW5SYXdCbG9jayYmL148XC8ocHJlfGNvZGV8a2Jk''@;'; put 'put ''fHNjcmlwdCkoXHN8PikvaS50ZXN0KHRbMF0pJiYodGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrPSExKSx7dHlwZTp0aGlzLm9wdGlvbnMuc2FuaXRpemU/InRleHQiOiJodG1sIixyYXc6dFswXSxpbkxpbms6dGhpcy5sZXhlci5zdGF0ZS5pbkxpbmssaW5SYXdCbG9jazp0aGlzLmxleGVy''@;'; put 'put ''LnN0YXRlLmluUmF3QmxvY2ssYmxvY2s6ITEsdGV4dDp0aGlzLm9wdGlvbnMuc2FuaXRpemU/dGhpcy5vcHRpb25zLnNhbml0aXplcj90aGlzLm9wdGlvbnMuc2FuaXRpemVyKHRbMF0pOnkodFswXSk6dFswXX19LGkubGluaz1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuaW5saW5lLmxp''@;'; put 'put ''bmsuZXhlYyh0KSl7dmFyIHU9dFsyXS50cmltKCk7aWYoIXRoaXMub3B0aW9ucy5wZWRhbnRpYyYmL148Ly50ZXN0KHUpKXtpZighLz4kLy50ZXN0KHUpKXJldHVybjt2YXIgcj1IKHUuc2xpY2UoMCwtMSksIlxcIik7aWYoKHUubGVuZ3RoLXIubGVuZ3RoKSUyPT0wKXJldHVybn1lbHNlLTE8''@;'; put 'put ''KHI9ZnVuY3Rpb24ocyxwKXtpZigtMSE9PXMuaW5kZXhPZihwWzFdKSlmb3IodmFyIGc9cy5sZW5ndGgsRD0wLG89MDtvPGc7bysrKWlmKCJcXCI9PT1zW29dKW8rKztlbHNlIGlmKHNbb109PT1wWzBdKUQrKztlbHNlIGlmKHNbb109PT1wWzFdJiYtLUQ8MClyZXR1cm4gbztyZXR1cm4tMX0o''@;'; put 'put ''dFsyXSwiKCkiKSkmJihuPSgwPT09dFswXS5pbmRleE9mKCIhIik/NTo0KSt0WzFdLmxlbmd0aCtyLHRbMl09dFsyXS5zdWJzdHJpbmcoMCxyKSx0WzBdPXRbMF0uc3Vic3RyaW5nKDAsbikudHJpbSgpLHRbM109IiIpO3I9dFsyXTt2YXIgZSxuPSIiO3JldHVybiB0aGlzLm9wdGlvbnMucGVk''@;'; put 'put ''YW50aWM/KGU9L14oW14nIl0qW15cc10pXHMrKFsnIl0pKC4qKVwyLy5leGVjKHIpKSYmKHI9ZVsxXSxuPWVbM10pOm49dFszXT90WzNdLnNsaWNlKDEsLTEpOiIiLHI9ci50cmltKCksaWUodCx7aHJlZjoocj0vXjwvLnRlc3Qocik/dGhpcy5vcHRpb25zLnBlZGFudGljJiYhLz4kLy50ZXN0''@;'; put 'put ''KHUpP3Iuc2xpY2UoMSk6ci5zbGljZSgxLC0xKTpyKSYmci5yZXBsYWNlKHRoaXMucnVsZXMuaW5saW5lLl9lc2NhcGVzLCIkMSIpLHRpdGxlOm4mJm4ucmVwbGFjZSh0aGlzLnJ1bGVzLmlubGluZS5fZXNjYXBlcywiJDEiKX0sdFswXSx0aGlzLmxleGVyKX19LGkucmVmbGluaz1mdW5jdGlv''@;'; put 'put ''bih0LHUpe3ZhciBlO2lmKGU9KGU9dGhpcy5ydWxlcy5pbmxpbmUucmVmbGluay5leGVjKHQpKXx8dGhpcy5ydWxlcy5pbmxpbmUubm9saW5rLmV4ZWModCkpcmV0dXJuKHQ9dVsodD0oZVsyXXx8ZVsxXSkucmVwbGFjZSgvXHMrL2csIiAiKSkudG9Mb3dlckNhc2UoKV0pP2llKGUsdCxlWzBd''@;'; put 'put ''LHRoaXMubGV4ZXIpOnt0eXBlOiJ0ZXh0IixyYXc6dT1lWzBdLmNoYXJBdCgwKSx0ZXh0OnV9fSxpLmVtU3Ryb25nPWZ1bmN0aW9uKHQsdSxlKXt2b2lkIDA9PT1lJiYoZT0iIik7dmFyIHI9dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcubERlbGltLmV4ZWModCk7aWYociYmKCFyWzNdfHwh''@;'; put 'put ''ZS5tYXRjaCgvKD86WzAtOUEtWmEtelx4QUFceEIyXHhCM1x4QjVceEI5XHhCQVx4QkMtXHhCRVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3''@;'; put 'put ''Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MC1cdTA1ODhcdTA1RDAtXHUwNUVBXHUwNUVGLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NjAtXHUwNjY5XHUw''@;'; put 'put ''NjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDMC1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQw''@;'; put 'put ''LVx1MDg1OFx1MDg2MC1cdTA4NkFcdTA4NzAtXHUwODg3XHUwODg5LVx1MDg4RVx1MDhBMC1cdTA4QzlcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk2Ni1cdTA5NkZcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5''@;'; put 'put ''QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RTYtXHUwOUYxXHUwOUY0LVx1MDlGOVx1MDlGQ1x1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEz''@;'; put 'put ''NVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTZGXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUx''@;'; put 'put ''XHUwQUU2LVx1MEFFRlx1MEFGOVx1MEIwNS1cdTBCMENcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjY2LVx1MEI2Rlx1MEI3MS1cdTBCNzdcdTBCODNcdTBCODUt''@;'; put 'put ''XHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEJFNi1cdTBCRjJcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEt''@;'; put 'put ''XHUwQzM5XHUwQzNEXHUwQzU4LVx1MEM1QVx1MEM1RFx1MEM2MFx1MEM2MVx1MEM2Ni1cdTBDNkZcdTBDNzgtXHUwQzdFXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDRERcdTBDREVcdTBDRTBc''@;'; put 'put ''dTBDRTFcdTBDRTYtXHUwQ0VGXHUwQ0YxXHUwQ0YyXHUwRDA0LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDU0LVx1MEQ1Nlx1MEQ1OC1cdTBENjFcdTBENjYtXHUwRDc4XHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIz''@;'; put 'put ''LVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBERTYtXHUwREVGXHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFNTAtXHUwRTU5XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg2LVx1MEU4QVx1MEU4Qy1cdTBFQTNcdTBFQTVcdTBFQTctXHUwRUIwXHUwRUIyXHUwRUIz''@;'; put 'put ''XHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEMC1cdTBFRDlcdTBFREMtXHUwRURGXHUwRjAwXHUwRjIwLVx1MEYzM1x1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0YtXHUxMDQ5XHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEw''@;'; put 'put ''NjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTA5MC1cdTEwOTlcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUx''@;'; put 'put ''Mjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzY5LVx1MTM3Q1x1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y1''@;'; put 'put ''XHUxM0Y4LVx1MTNGRFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUtXHUxNkY4XHUxNzAwLVx1MTcxMVx1MTcxRi1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUx''@;'; put 'put ''N0RDXHUxN0UwLVx1MTdFOVx1MTdGMC1cdTE3RjlcdTE4MTAtXHUxODE5XHUxODIwLVx1MTg3OFx1MTg4MC1cdTE4ODRcdTE4ODctXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUVcdTE5NDYtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5''@;'; put 'put ''XHUxOUQwLVx1MTlEQVx1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQTgwLVx1MUE4OVx1MUE5MC1cdTFBOTlcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Q1x1MUI1MC1cdTFCNTlcdTFCODMtXHUxQkEwXHUxQkFFLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNDAtXHUxQzQ5XHUx''@;'; put 'put ''QzRELVx1MUM3RFx1MUM4MC1cdTFDODhcdTFDOTAtXHUxQ0JBXHUxQ0JELVx1MUNCRlx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YzXHUxQ0Y1XHUxQ0Y2XHUxQ0ZBXHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAt''@;'; put 'put ''XHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3''@;'; put 'put ''MFx1MjA3MVx1MjA3NC1cdTIwNzlcdTIwN0YtXHUyMDg5XHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0''@;'; put 'put ''RVx1MjE1MC1cdTIxODlcdTI0NjAtXHUyNDlCXHUyNEVBLVx1MjRGRlx1Mjc3Ni1cdTI3OTNcdTJDMDAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkNGRFx1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJE''@;'; put 'put ''QTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMjlcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZc''@;'; put 'put ''dTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJGXHUzMTMxLVx1MzE4RVx1MzE5Mi1cdTMxOTVcdTMxQTAtXHUzMUJGXHUzMUYwLVx1MzFGRlx1MzIyMC1cdTMyMjlcdTMyNDgtXHUzMjRGXHUzMjUxLVx1MzI1Rlx1MzI4MC1cdTMyODlcdTMyQjEtXHUz''@;'; put 'put ''MkJGXHUzNDAwLVx1NERCRlx1NEUwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5RFx1QTZBMC1cdUE2RUZcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3Q0FcdUE3RDBcdUE3RDFcdUE3RDNc''@;'; put 'put ''dUE3RDUtXHVBN0Q5XHVBN0YyLVx1QTgwMVx1QTgwMy1cdUE4MDVcdUE4MDctXHVBODBBXHVBODBDLVx1QTgyMlx1QTgzMC1cdUE4MzVcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThEMC1cdUE4RDlcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOEZFXHVBOTAwLVx1QTkyNVx1QTkz''@;'; put 'put ''MC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRi1cdUE5RDlcdUE5RTAtXHVBOUU0XHVBOUU2LVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE1MC1cdUFBNTlcdUFBNjAtXHVBQTc2XHVBQTdBXHVBQTdFLVx1QUFBRlx1QUFCMVx1''@;'; put 'put ''QUFCNVx1QUFCNlx1QUFCOS1cdUFBQkRcdUFBQzBcdUFBQzJcdUFBREItXHVBQUREXHVBQUUwLVx1QUFFQVx1QUFGMi1cdUFBRjRcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1cdUFCMTZcdUFCMjAtXHVBQjI2XHVBQjI4LVx1QUIyRVx1QUIzMC1cdUFCNUFcdUFCNUMtXHVBQjY5''@;'; put 'put ''XHVBQjcwLVx1QUJFMlx1QUJGMC1cdUFCRjlcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVG''@;'; put 'put ''QjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYxMC1cdUZGMTlcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1c''@;'; put 'put ''dUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERDA3LVx1''@;'; put 'put ''REQzM1x1REQ0MC1cdURENzhcdUREOEFcdUREOEJcdURFODAtXHVERTlDXHVERUEwLVx1REVEMFx1REVFMS1cdURFRkJcdURGMDAtXHVERjIzXHVERjJELVx1REY0QVx1REY1MC1cdURGNzVcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZcdURGRDEtXHVERkQ1XXxcdUQ4''@;'; put 'put ''MDFbXHVEQzAwLVx1REM5RFx1RENBMC1cdURDQTlcdURDQjAtXHVEQ0QzXHVEQ0Q4LVx1RENGQlx1REQwMC1cdUREMjdcdUREMzAtXHVERDYzXHVERDcwLVx1REQ3QVx1REQ3Qy1cdUREOEFcdUREOEMtXHVERDkyXHVERDk0XHVERDk1XHVERDk3LVx1RERBMVx1RERBMy1cdUREQjFcdUREQjMt''@;'; put 'put ''XHVEREI5XHVEREJCXHVEREJDXHVERTAwLVx1REYzNlx1REY0MC1cdURGNTVcdURGNjAtXHVERjY3XHVERjgwLVx1REY4NVx1REY4Ny1cdURGQjBcdURGQjItXHVERkJBXXxcdUQ4MDJbXHVEQzAwLVx1REMwNVx1REMwOFx1REMwQS1cdURDMzVcdURDMzdcdURDMzhcdURDM0NcdURDM0YtXHVE''@;'; put 'put ''QzU1XHVEQzU4LVx1REM3Nlx1REM3OS1cdURDOUVcdURDQTctXHVEQ0FGXHVEQ0UwLVx1RENGMlx1RENGNFx1RENGNVx1RENGQi1cdUREMUJcdUREMjAtXHVERDM5XHVERDgwLVx1RERCN1x1RERCQy1cdUREQ0ZcdURERDItXHVERTAwXHVERTEwLVx1REUxM1x1REUxNS1cdURFMTdcdURFMTkt''@;'; put 'put ''XHVERTM1XHVERTQwLVx1REU0OFx1REU2MC1cdURFN0VcdURFODAtXHVERTlGXHVERUMwLVx1REVDN1x1REVDOS1cdURFRTRcdURFRUItXHVERUVGXHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNTgtXHVERjcyXHVERjc4LVx1REY5MVx1REZBOS1cdURGQUZdfFx1RDgwM1tcdURDMDAt''@;'; put 'put ''XHVEQzQ4XHVEQzgwLVx1RENCMlx1RENDMC1cdURDRjJcdURDRkEtXHVERDIzXHVERDMwLVx1REQzOVx1REU2MC1cdURFN0VcdURFODAtXHVERUE5XHVERUIwXHVERUIxXHVERjAwLVx1REYyN1x1REYzMC1cdURGNDVcdURGNTEtXHVERjU0XHVERjcwLVx1REY4MVx1REZCMC1cdURGQ0JcdURG''@;'; put 'put ''RTAtXHVERkY2XXxcdUQ4MDRbXHVEQzAzLVx1REMzN1x1REM1Mi1cdURDNkZcdURDNzFcdURDNzJcdURDNzVcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1RENGMC1cdURDRjlcdUREMDMtXHVERDI2XHVERDM2LVx1REQzRlx1REQ0NFx1REQ0N1x1REQ1MC1cdURENzJcdURENzZcdUREODMt''@;'; put 'put ''XHVEREIyXHVEREMxLVx1RERDNFx1REREMC1cdUREREFcdURERENcdURERTEtXHVEREY0XHVERTAwLVx1REUxMVx1REUxMy1cdURFMkJcdURFM0ZcdURFNDBcdURFODAtXHVERTg2XHVERTg4XHVERThBLVx1REU4RFx1REU4Ri1cdURFOURcdURFOUYtXHVERUE4XHVERUIwLVx1REVERVx1REVG''@;'; put 'put ''MC1cdURFRjlcdURGMDUtXHVERjBDXHVERjBGXHVERjEwXHVERjEzLVx1REYyOFx1REYyQS1cdURGMzBcdURGMzJcdURGMzNcdURGMzUtXHVERjM5XHVERjNEXHVERjUwXHVERjVELVx1REY2MV18XHVEODA1W1x1REMwMC1cdURDMzRcdURDNDctXHVEQzRBXHVEQzUwLVx1REM1OVx1REM1Ri1c''@;'; put 'put ''dURDNjFcdURDODAtXHVEQ0FGXHVEQ0M0XHVEQ0M1XHVEQ0M3XHVEQ0QwLVx1RENEOVx1REQ4MC1cdUREQUVcdURERDgtXHVERERCXHVERTAwLVx1REUyRlx1REU0NFx1REU1MC1cdURFNTlcdURFODAtXHVERUFBXHVERUI4XHVERUMwLVx1REVDOVx1REYwMC1cdURGMUFcdURGMzAtXHVERjNC''@;'; put 'put ''XHVERjQwLVx1REY0Nl18XHVEODA2W1x1REMwMC1cdURDMkJcdURDQTAtXHVEQ0YyXHVEQ0ZGLVx1REQwNlx1REQwOVx1REQwQy1cdUREMTNcdUREMTVcdUREMTZcdUREMTgtXHVERDJGXHVERDNGXHVERDQxXHVERDUwLVx1REQ1OVx1RERBMC1cdUREQTdcdUREQUEtXHVEREQwXHVEREUxXHVE''@;'; put 'put ''REUzXHVERTAwXHVERTBCLVx1REUzMlx1REUzQVx1REU1MFx1REU1Qy1cdURFODlcdURFOURcdURFQjAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNTAtXHVEQzZDXHVEQzcyLVx1REM4Rlx1REQwMC1cdUREMDZcdUREMDhcdUREMDlcdUREMEIt''@;'; put 'put ''XHVERDMwXHVERDQ2XHVERDUwLVx1REQ1OVx1REQ2MC1cdURENjVcdURENjdcdURENjhcdURENkEtXHVERDg5XHVERDk4XHVEREEwLVx1RERBOVx1REVFMC1cdURFRjJcdURGMDJcdURGMDQtXHVERjEwXHVERjEyLVx1REYzM1x1REY1MC1cdURGNTlcdURGQjBcdURGQzAtXHVERkQ0XXxcdUQ4''@;'; put 'put ''MDhbXHVEQzAwLVx1REY5OV18XHVEODA5W1x1REMwMC1cdURDNkVcdURDODAtXHVERDQzXXxcdUQ4MEJbXHVERjkwLVx1REZGMF18W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4MjJcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XHVEODgwLVx1RDg4''@;'; put 'put ''M1x1RDg4NS1cdUQ4ODddW1x1REMwMC1cdURGRkZdfFx1RDgwRFtcdURDMDAtXHVEQzJGXHVEQzQxLVx1REM0Nl18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REU2MC1cdURFNjlcdURFNzAtXHVERUJFXHVERUMwLVx1REVDOVx1REVE''@;'; put 'put ''MC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY1MC1cdURGNTlcdURGNUItXHVERjYxXHVERjYzLVx1REY3N1x1REY3RC1cdURGOEZdfFx1RDgxQltcdURFNDAtXHVERTk2XHVERjAwLVx1REY0QVx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFcdURGRTNdfFx1RDgy''@;'; put 'put ''MVtcdURDMDAtXHVERkY3XXxcdUQ4MjNbXHVEQzAwLVx1RENENVx1REQwMC1cdUREMDhdfFx1RDgyQltcdURGRjAtXHVERkYzXHVERkY1LVx1REZGQlx1REZGRFx1REZGRV18XHVEODJDW1x1REMwMC1cdUREMjJcdUREMzJcdURENTAtXHVERDUyXHVERDU1XHVERDY0LVx1REQ2N1x1REQ3MC1c''@;'; put 'put ''dURFRkJdfFx1RDgyRltcdURDMDAtXHVEQzZBXHVEQzcwLVx1REM3Q1x1REM4MC1cdURDODhcdURDOTAtXHVEQzk5XXxcdUQ4MzRbXHVERUMwLVx1REVEM1x1REVFMC1cdURFRjNcdURGNjAtXHVERjc4XXxcdUQ4MzVbXHVEQzAwLVx1REM1NFx1REM1Ni1cdURDOUNcdURDOUVcdURDOUZcdURD''@;'; put 'put ''QTJcdURDQTVcdURDQTZcdURDQTktXHVEQ0FDXHVEQ0FFLVx1RENCOVx1RENCQlx1RENCRC1cdURDQzNcdURDQzUtXHVERDA1XHVERDA3LVx1REQwQVx1REQwRC1cdUREMTRcdUREMTYtXHVERDFDXHVERDFFLVx1REQzOVx1REQzQi1cdUREM0VcdURENDAtXHVERDQ0XHVERDQ2XHVERDRBLVx1''@;'; put 'put ''REQ1MFx1REQ1Mi1cdURFQTVcdURFQTgtXHVERUMwXHVERUMyLVx1REVEQVx1REVEQy1cdURFRkFcdURFRkMtXHVERjE0XHVERjE2LVx1REYzNFx1REYzNi1cdURGNEVcdURGNTAtXHVERjZFXHVERjcwLVx1REY4OFx1REY4QS1cdURGQThcdURGQUEtXHVERkMyXHVERkM0LVx1REZDQlx1REZD''@;'; put 'put ''RS1cdURGRkZdfFx1RDgzN1tcdURGMDAtXHVERjFFXHVERjI1LVx1REYyQV18XHVEODM4W1x1REMzMC1cdURDNkRcdUREMDAtXHVERDJDXHVERDM3LVx1REQzRFx1REQ0MC1cdURENDlcdURENEVcdURFOTAtXHVERUFEXHVERUMwLVx1REVFQlx1REVGMC1cdURFRjldfFx1RDgzOVtcdURDRDAt''@;'; put 'put ''XHVEQ0VCXHVEQ0YwLVx1RENGOVx1REZFMC1cdURGRTZcdURGRTgtXHVERkVCXHVERkVEXHVERkVFXHVERkYwLVx1REZGRV18XHVEODNBW1x1REMwMC1cdURDQzRcdURDQzctXHVEQ0NGXHVERDAwLVx1REQ0M1x1REQ0Qlx1REQ1MC1cdURENTldfFx1RDgzQltcdURDNzEtXHVEQ0FCXHVEQ0FE''@;'; put 'put ''LVx1RENBRlx1RENCMS1cdURDQjRcdUREMDEtXHVERDJEXHVERDJGLVx1REQzRFx1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQt''@;'; put 'put ''XHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1''@;'; put 'put ''REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4M0NbXHVERDAwLVx1REQwQ118XHVEODNFW1x1REZGMC1cdURGRjldfFx1RDg2OVtcdURDMDAtXHVERURGXHVERjAwLVx1REZGRl18XHVEODZEW1x1REMwMC1cdURGMzlcdURGNDAtXHVERkZGXXxcdUQ4NkVbXHVEQzAwLVx1REMx''@;'; put 'put ''RFx1REMyMC1cdURGRkZdfFx1RDg3M1tcdURDMDAtXHVERUExXHVERUIwLVx1REZGRl18XHVEODdBW1x1REMwMC1cdURGRTBdfFx1RDg3RVtcdURDMDAtXHVERTFEXXxcdUQ4ODRbXHVEQzAwLVx1REY0QVx1REY1MC1cdURGRkZdfFx1RDg4OFtcdURDMDAtXHVERkFGXSkvKSkmJighclsxXSYm''@;'; put 'put ''IXJbMl18fCFlfHx0aGlzLnJ1bGVzLmlubGluZS5wdW5jdHVhdGlvbi5leGVjKGUpKSl7dmFyIG49clswXS5sZW5ndGgtMSxzPW4scD0wLGc9IioiPT09clswXVswXT90aGlzLnJ1bGVzLmlubGluZS5lbVN0cm9uZy5yRGVsaW1Bc3Q6dGhpcy5ydWxlcy5pbmxpbmUuZW1TdHJvbmcuckRlbGlt''@;'; put 'put ''VW5kO2ZvcihnLmxhc3RJbmRleD0wLHU9dS5zbGljZSgtMSp0Lmxlbmd0aCtuKTtudWxsIT0ocj1nLmV4ZWModSkpOyl7dmFyIEQsbz1yWzFdfHxyWzJdfHxyWzNdfHxyWzRdfHxyWzVdfHxyWzZdO2lmKG8paWYobz1vLmxlbmd0aCxyWzNdfHxyWzRdKXMrPW87ZWxzZSBpZigocls1XXx8cls2''@;'; put 'put ''XSkmJm4lMyYmISgobitvKSUzKSlwKz1vO2Vsc2UgaWYoISgwPChzLT1vKSkpcmV0dXJuIG89TWF0aC5taW4obyxvK3MrcCksRD10LnNsaWNlKDAsbityLmluZGV4K28rMSksTWF0aC5taW4obixvKSUyPyhvPUQuc2xpY2UoMSwtMSkse3R5cGU6ImVtIixyYXc6RCx0ZXh0Om8sdG9rZW5zOnRo''@;'; put 'put ''aXMubGV4ZXIuaW5saW5lVG9rZW5zKG8pfSk6KG89RC5zbGljZSgyLC0yKSx7dHlwZToic3Ryb25nIixyYXc6RCx0ZXh0Om8sdG9rZW5zOnRoaXMubGV4ZXIuaW5saW5lVG9rZW5zKG8pfSl9fX0saS5jb2Rlc3Bhbj1mdW5jdGlvbihuKXt2YXIgdSxlLHI7aWYobj10aGlzLnJ1bGVzLmlubGlu''@;'; put 'put ''ZS5jb2RlLmV4ZWMobikpcmV0dXJuIHI9blsyXS5yZXBsYWNlKC9cbi9nLCIgIiksdT0vW14gXS8udGVzdChyKSxlPS9eIC8udGVzdChyKSYmLyAkLy50ZXN0KHIpLHI9eShyPXUmJmU/ci5zdWJzdHJpbmcoMSxyLmxlbmd0aC0xKTpyLCEwKSx7dHlwZToiY29kZXNwYW4iLHJhdzpuWzBdLHRl''@;'; put 'put ''eHQ6cn19LGkuYnI9ZnVuY3Rpb24odCl7aWYodD10aGlzLnJ1bGVzLmlubGluZS5ici5leGVjKHQpKXJldHVybnt0eXBlOiJiciIscmF3OnRbMF19fSxpLmRlbD1mdW5jdGlvbih0KXtpZih0PXRoaXMucnVsZXMuaW5saW5lLmRlbC5leGVjKHQpKXJldHVybnt0eXBlOiJkZWwiLHJhdzp0WzBd''@;'; put 'put ''LHRleHQ6dFsyXSx0b2tlbnM6dGhpcy5sZXhlci5pbmxpbmVUb2tlbnModFsyXSl9fSxpLmF1dG9saW5rPWZ1bmN0aW9uKHIsdSl7dmFyIGU7aWYocj10aGlzLnJ1bGVzLmlubGluZS5hdXRvbGluay5leGVjKHIpKXJldHVybiB1PSJAIj09PXJbMl0/Im1haWx0bzoiKyhlPXkodGhpcy5vcHRp''@;'; put 'put ''b25zLm1hbmdsZT91KHJbMV0pOnJbMV0pKTplPXkoclsxXSkse3R5cGU6ImxpbmsiLHJhdzpyWzBdLHRleHQ6ZSxocmVmOnUsdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OmUsdGV4dDplfV19fSxpLnVybD1mdW5jdGlvbih0LHUpe3ZhciBlLHIsbixzO2lmKGU9dGhpcy5ydWxlcy5pbmxpbmUu''@;'; put 'put ''dXJsLmV4ZWModCkpe2lmKCJAIj09PWVbMl0pbj0ibWFpbHRvOiIrKHI9eSh0aGlzLm9wdGlvbnMubWFuZ2xlP3UoZVswXSk6ZVswXSkpO2Vsc2V7Zm9yKDtzPWVbMF0sZVswXT10aGlzLnJ1bGVzLmlubGluZS5fYmFja3BlZGFsLmV4ZWMoZVswXSlbMF0scyE9PWVbMF07KTtyPXkoZVswXSks''@;'; put 'put ''bj0id3d3LiI9PT1lWzFdPyJodHRwOi8vIitlWzBdOmVbMF19cmV0dXJue3R5cGU6ImxpbmsiLHJhdzplWzBdLHRleHQ6cixocmVmOm4sdG9rZW5zOlt7dHlwZToidGV4dCIscmF3OnIsdGV4dDpyfV19fX0saS5pbmxpbmVUZXh0PWZ1bmN0aW9uKHQsdSl7aWYodD10aGlzLnJ1bGVzLmlubGlu''@;'; put 'put ''ZS50ZXh0LmV4ZWModCkpcmV0dXJuIHU9dGhpcy5sZXhlci5zdGF0ZS5pblJhd0Jsb2NrP3RoaXMub3B0aW9ucy5zYW5pdGl6ZT90aGlzLm9wdGlvbnMuc2FuaXRpemVyP3RoaXMub3B0aW9ucy5zYW5pdGl6ZXIodFswXSk6eSh0WzBdKTp0WzBdOnkodGhpcy5vcHRpb25zLnNtYXJ0eXBhbnRz''@;'; put 'put ''P3UodFswXSk6dFswXSkse3R5cGU6InRleHQiLHJhdzp0WzBdLHRleHQ6dX19LGF9KCksZj17bmV3bGluZTovXig/OiAqKD86XG58JCkpKy8sY29kZTovXiggezR9W15cbl0rKD86XG4oPzogKig/OlxufCQpKSopPykrLyxmZW5jZXM6L14gezAsM30oYHszLH0oPz1bXmBcbl0qKD86XG58JCkp''@;'; put 'put ''fH57Myx9KShbXlxuXSopKD86XG58JCkoPzp8KFtcc1xTXSo/KSg/OlxufCQpKSg/OiB7MCwzfVwxW35gXSogKig/PVxufCQpfCQpLyxocjovXiB7MCwzfSgoPzotW1x0IF0qKXszLH18KD86X1sgXHRdKil7Myx9fCg/OlwqWyBcdF0qKXszLH0pKD86XG4rfCQpLyxoZWFkaW5nOi9eIHswLDN9''@;'; put 'put ''KCN7MSw2fSkoPz1cc3wkKSguKikoPzpcbit8JCkvLGJsb2NrcXVvdGU6L14oIHswLDN9PiA/KHBhcmFncmFwaHxbXlxuXSopKD86XG58JCkpKy8sbGlzdDovXiggezAsM31idWxsKShbIFx0XVteXG5dKz8pPyg/OlxufCQpLyxodG1sOiJeIHswLDN9KD86PChzY3JpcHR8cHJlfHN0eWxlfHRl''@;'; put 'put ''eHRhcmVhKVtcXHM+XVtcXHNcXFNdKj8oPzo8L1xcMT5bXlxcbl0qXFxuK3wkKXxjb21tZW50W15cXG5dKihcXG4rfCQpfDxcXD9bXFxzXFxTXSo/KD86XFw/Plxcbip8JCl8PCFbQS1aXVtcXHNcXFNdKj8oPzo+XFxuKnwkKXw8IVxcW0NEQVRBXFxbW1xcc1xcU10qPyg/OlxcXVxcXT5cXG4q''@;'; put 'put ''fCQpfDwvPyh0YWcpKD86ICt8XFxufC8/PilbXFxzXFxTXSo/KD86KD86XFxuICopK1xcbnwkKXw8KD8hc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSkoW2Etel1bXFx3LV0qKSg/OmF0dHJpYnV0ZSkqPyAqLz8+KD89WyBcXHRdKig/OlxcbnwkKSlbXFxzXFxTXSo/KD86KD86XFxuICopK1xc''@;'; put 'put ''bnwkKXw8Lyg/IXNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpW2Etel1bXFx3LV0qXFxzKj4oPz1bIFxcdF0qKD86XFxufCQpKVtcXHNcXFNdKj8oPzooPzpcXG4gKikrXFxufCQpKSIsZGVmOi9eIHswLDN9XFsobGFiZWwpXF06ICooPzpcbiAqKT8oW148XHNdW15cc10qfDwuKj8+KSg/Oig/''@;'; put 'put ''OiArKD86XG4gKik/fCAqXG4gKikodGl0bGUpKT8gKig/OlxuK3wkKS8sdGFibGU6SSxsaGVhZGluZzovXigoPzooPyFeYnVsbCApLnxcbig/IVxufGJ1bGwgKSkrPylcbiB7MCwzfSg9K3wtKykgKig/OlxuK3wkKS8sX3BhcmFncmFwaDovXihbXlxuXSsoPzpcbig/IWhyfGhlYWRpbmd8bGhl''@;'; put 'put ''YWRpbmd8YmxvY2txdW90ZXxmZW5jZXN8bGlzdHxodG1sfHRhYmxlfCArXG4pW15cbl0rKSopLyx0ZXh0Oi9eW15cbl0rLyxfbGFiZWw6Lyg/IVxzKlxdKSg/OlxcLnxbXlxbXF1cXF0pKy8sX3RpdGxlOi8oPzoiKD86XFwiP3xbXiJcXF0pKiJ8J1teJ1xuXSooPzpcblteJ1xuXSspKlxuPyd8''@;'; put 'put ''XChbXigpXSpcKSkvfSxjPShmLmRlZj1FKGYuZGVmKS5yZXBsYWNlKCJsYWJlbCIsZi5fbGFiZWwpLnJlcGxhY2UoInRpdGxlIixmLl90aXRsZSkuZ2V0UmVnZXgoKSxmLmJ1bGxldD0vKD86WyorLV18XGR7MSw5fVsuKV0pLyxmLmxpc3RJdGVtU3RhcnQ9RSgvXiggKikoYnVsbCkgKi8pLnJl''@;'; put 'put ''cGxhY2UoImJ1bGwiLGYuYnVsbGV0KS5nZXRSZWdleCgpLGYubGlzdD1FKGYubGlzdCkucmVwbGFjZSgvYnVsbC9nLGYuYnVsbGV0KS5yZXBsYWNlKCJociIsIlxcbisoPz1cXDE/KD86KD86LSAqKXszLH18KD86XyAqKXszLH18KD86XFwqICopezMsfSkoPzpcXG4rfCQpKSIpLnJlcGxhY2Uo''@;'; put 'put ''ImRlZiIsIlxcbisoPz0iK2YuZGVmLnNvdXJjZSsiKSIpLmdldFJlZ2V4KCksZi5fdGFnPSJhZGRyZXNzfGFydGljbGV8YXNpZGV8YmFzZXxiYXNlZm9udHxibG9ja3F1b3RlfGJvZHl8Y2FwdGlvbnxjZW50ZXJ8Y29sfGNvbGdyb3VwfGRkfGRldGFpbHN8ZGlhbG9nfGRpcnxkaXZ8ZGx8ZHR8''@;'; put 'put ''ZmllbGRzZXR8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGZvcm18ZnJhbWV8ZnJhbWVzZXR8aFsxLTZdfGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxtZXRhfG5hdnxub2ZyYW1lc3xvbHxvcHRncm91cHxvcHRpb258cHxwYXJh''@;'; put 'put ''bXxzZWN0aW9ufHNvdXJjZXxzdW1tYXJ5fHRhYmxlfHRib2R5fHRkfHRmb290fHRofHRoZWFkfHRpdGxlfHRyfHRyYWNrfHVsIixmLl9jb21tZW50PS88IS0tKD8hLT8+KVtcc1xTXSo/KD86LS0+fCQpLyxmLmh0bWw9RShmLmh0bWwsImkiKS5yZXBsYWNlKCJjb21tZW50IixmLl9jb21tZW50''@;'; put 'put ''KS5yZXBsYWNlKCJ0YWciLGYuX3RhZykucmVwbGFjZSgiYXR0cmlidXRlIiwvICtbYS16QS1aOl9dW1x3LjotXSooPzogKj0gKiJbXiJcbl0qInwgKj0gKidbXidcbl0qJ3wgKj0gKlteXHMiJz08PmBdKyk/LykuZ2V0UmVnZXgoKSxmLmxoZWFkaW5nPUUoZi5saGVhZGluZykucmVwbGFjZSgv''@;'; put 'put ''YnVsbC9nLGYuYnVsbGV0KS5nZXRSZWdleCgpLGYucGFyYWdyYXBoPUUoZi5fcGFyYWdyYXBoKS5yZXBsYWNlKCJociIsZi5ocikucmVwbGFjZSgiaGVhZGluZyIsIiB7MCwzfSN7MSw2fSAiKS5yZXBsYWNlKCJ8bGhlYWRpbmciLCIiKS5yZXBsYWNlKCJ8dGFibGUiLCIiKS5yZXBsYWNlKCJi''@;'; put 'put ''bG9ja3F1b3RlIiwiIHswLDN9PiIpLnJlcGxhY2UoImZlbmNlcyIsIiB7MCwzfSg/OmB7Myx9KD89W15gXFxuXSpcXG4pfH57Myx9KVteXFxuXSpcXG4iKS5yZXBsYWNlKCJsaXN0IiwiIHswLDN9KD86WyorLV18MVsuKV0pICIpLnJlcGxhY2UoImh0bWwiLCI8Lz8oPzp0YWcpKD86ICt8XFxu''@;'; put 'put ''fC8/Pil8PCg/OnNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWF8IS0tKSIpLnJlcGxhY2UoInRhZyIsZi5fdGFnKS5nZXRSZWdleCgpLGYuYmxvY2txdW90ZT1FKGYuYmxvY2txdW90ZSkucmVwbGFjZSgicGFyYWdyYXBoIixmLnBhcmFncmFwaCkuZ2V0UmVnZXgoKSxmLm5vcm1hbD12KHt9LGYp''@;'; put 'put ''LGYuZ2ZtPXYoe30sZi5ub3JtYWwse3RhYmxlOiJeICooW15cXG4gXS4qXFx8LiopXFxuIHswLDN9KD86XFx8ICopPyg6Py0rOj8gKig/OlxcfCAqOj8tKzo/ICopKikoPzpcXHwgKik/KD86XFxuKCg/Oig/ISAqXFxufGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0''@;'; put 'put ''bWwpLiooPzpcXG58JCkpKilcXG4qfCQpIn0pLGYuZ2ZtLnRhYmxlPUUoZi5nZm0udGFibGUpLnJlcGxhY2UoImhyIixmLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+IikucmVwbGFjZSgiY29kZSIsIiB7NH1bXlxc''@;'; put 'put ''bl0iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFbLildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8''@;'; put 'put ''cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLGYuX3RhZykuZ2V0UmVnZXgoKSxmLmdmbS5wYXJhZ3JhcGg9RShmLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixmLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiIHswLDN9I3sxLDZ9ICIpLnJlcGxhY2UoInxsaGVhZGluZyIs''@;'; put 'put ''IiIpLnJlcGxhY2UoInRhYmxlIixmLmdmbS50YWJsZSkucmVwbGFjZSgiYmxvY2txdW90ZSIsIiB7MCwzfT4iKS5yZXBsYWNlKCJmZW5jZXMiLCIgezAsM30oPzpgezMsfSg/PVteYFxcbl0qXFxuKXx+ezMsfSlbXlxcbl0qXFxuIikucmVwbGFjZSgibGlzdCIsIiB7MCwzfSg/OlsqKy1dfDFb''@;'; put 'put ''LildKSAiKS5yZXBsYWNlKCJodG1sIiwiPC8/KD86dGFnKSg/OiArfFxcbnwvPz4pfDwoPzpzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhfCEtLSkiKS5yZXBsYWNlKCJ0YWciLGYuX3RhZykuZ2V0UmVnZXgoKSxmLnBlZGFudGljPXYoe30sZi5ub3JtYWwse2h0bWw6RSgiXiAqKD86Y29tbWVu''@;'; put 'put ''dCAqKD86XFxufFxccyokKXw8KHRhZylbXFxzXFxTXSs/PC9cXDE+ICooPzpcXG57Mix9fFxccyokKXw8dGFnKD86XCJbXlwiXSpcInwnW14nXSonfFxcc1teJ1wiLz5cXHNdKikqPy8/PiAqKD86XFxuezIsfXxcXHMqJCkpIikucmVwbGFjZSgiY29tbWVudCIsZi5fY29tbWVudCkucmVwbGFj''@;'; put 'put ''ZSgvdGFnL2csIig/ISg/OmF8ZW18c3Ryb25nfHNtYWxsfHN8Y2l0ZXxxfGRmbnxhYmJyfGRhdGF8dGltZXxjb2RlfHZhcnxzYW1wfGtiZHxzdWJ8c3VwfGl8Ynx1fG1hcmt8cnVieXxydHxycHxiZGl8YmRvfHNwYW58YnJ8d2JyfGluc3xkZWx8aW1nKVxcYilcXHcrKD8hOnxbXlxcd1xcc0Bd''@;'; put 'put ''KkApXFxiIikuZ2V0UmVnZXgoKSxkZWY6L14gKlxbKFteXF1dKylcXTogKjw/KFteXHM+XSspPj8oPzogKyhbIihdW15cbl0rWyIpXSkpPyAqKD86XG4rfCQpLyxoZWFkaW5nOi9eKCN7MSw2fSkoLiopKD86XG4rfCQpLyxmZW5jZXM6SSxsaGVhZGluZzovXiguKz8pXG4gezAsM30oPSt8LSsp''@;'; put 'put ''ICooPzpcbit8JCkvLHBhcmFncmFwaDpFKGYubm9ybWFsLl9wYXJhZ3JhcGgpLnJlcGxhY2UoImhyIixmLmhyKS5yZXBsYWNlKCJoZWFkaW5nIiwiICojezEsNn0gKlteXG5dIikucmVwbGFjZSgibGhlYWRpbmciLGYubGhlYWRpbmcpLnJlcGxhY2UoImJsb2NrcXVvdGUiLCIgezAsM30+Iiku''@;'; put 'put ''cmVwbGFjZSgifGZlbmNlcyIsIiIpLnJlcGxhY2UoInxsaXN0IiwiIikucmVwbGFjZSgifGh0bWwiLCIiKS5nZXRSZWdleCgpfSkse2VzY2FwZTovXlxcKFshIiMkJSYnKCkqKyxcLS4vOjs8PT4/QFxbXF1cXF5fYHt8fX5dKS8sYXV0b2xpbms6L148KHNjaGVtZTpbXlxzXHgwMC1ceDFmPD5d''@;'; put 'put ''KnxlbWFpbCk+Lyx1cmw6SSx0YWc6Il5jb21tZW50fF48L1thLXpBLVpdW1xcdzotXSpcXHMqPnxePFthLXpBLVpdW1xcdy1dKig/OmF0dHJpYnV0ZSkqP1xccyovPz58XjxcXD9bXFxzXFxTXSo/XFw/PnxePCFbYS16QS1aXStcXHNbXFxzXFxTXSo/PnxePCFcXFtDREFUQVxcW1tcXHNcXFNd''@;'; put 'put ''Kj9cXF1cXF0+IixsaW5rOi9eIT9cWyhsYWJlbClcXVwoXHMqKGhyZWYpKD86XHMrKHRpdGxlKSk/XHMqXCkvLHJlZmxpbms6L14hP1xbKGxhYmVsKVxdXFsocmVmKVxdLyxub2xpbms6L14hP1xbKHJlZilcXSg/OlxbXF0pPy8scmVmbGlua1NlYXJjaDoicmVmbGlua3xub2xpbmsoPyFcXCgp''@;'; put 'put ''IixlbVN0cm9uZzp7bERlbGltOi9eKD86XCorKD86KCg/IVwqKVtwdW5jdF0pfFteXHMqXSkpfF5fKyg/OigoPyFfKVtwdW5jdF0pfChbXlxzX10pKS8sckRlbGltQXN0Oi9eW15fKl0qP19fW15fKl0qP1wqW15fKl0qPyg/PV9fKXxbXipdKyg/PVteKl0pfCg/IVwqKVtwdW5jdF0oXCorKSg/''@;'; put 'put ''PVtcc118JCl8W15wdW5jdFxzXShcKispKD8hXCopKD89W3B1bmN0XHNdfCQpfCg/IVwqKVtwdW5jdFxzXShcKispKD89W15wdW5jdFxzXSl8W1xzXShcKispKD8hXCopKD89W3B1bmN0XSl8KD8hXCopW3B1bmN0XShcKispKD8hXCopKD89W3B1bmN0XSl8W15wdW5jdFxzXShcKispKD89W15w''@;'; put 'put ''dW5jdFxzXSkvLHJEZWxpbVVuZDovXlteXypdKj9cKlwqW15fKl0qP19bXl8qXSo/KD89XCpcKil8W15fXSsoPz1bXl9dKXwoPyFfKVtwdW5jdF0oXyspKD89W1xzXXwkKXxbXnB1bmN0XHNdKF8rKSg/IV8pKD89W3B1bmN0XHNdfCQpfCg/IV8pW3B1bmN0XHNdKF8rKSg/PVtecHVuY3Rcc10p''@;'; put 'put ''fFtcc10oXyspKD8hXykoPz1bcHVuY3RdKXwoPyFfKVtwdW5jdF0oXyspKD8hXykoPz1bcHVuY3RdKS99LGNvZGU6L14oYCspKFteYF18W15gXVtcc1xTXSo/W15gXSlcMSg/IWApLyxicjovXiggezIsfXxcXClcbig/IVxzKiQpLyxkZWw6SSx0ZXh0Oi9eKGArfFteYF0pKD86KD89IHsyLH1c''@;'; put 'put ''bil8W1xzXFNdKj8oPzooPz1bXFw8IVxbYCpfXXxcYl98JCl8W14gXSg/PSB7Mix9XG4pKSkvLHB1bmN0dWF0aW9uOi9eKCg/IVsqX10pW1xzcHVuY3R1YXRpb25dKS99KTtmdW5jdGlvbiBrZShhKXtyZXR1cm4gYS5yZXBsYWNlKC8tLS0vZywiXHUyMDE0IikucmVwbGFjZSgvLS0vZywiXHUy''@;'; put 'put ''MDEzIikucmVwbGFjZSgvKF58Wy1cdTIwMTQvKFxbeyJcc10pJy9nLCIkMVx1MjAxOCIpLnJlcGxhY2UoLycvZywiXHUyMDE5IikucmVwbGFjZSgvKF58Wy1cdTIwMTQvKFxbe1x1MjAxOFxzXSkiL2csIiQxXHUyMDFjIikucmVwbGFjZSgvIi9nLCJcdTIwMWQiKS5yZXBsYWNlKC9cLnszfS9n''@;'; put 'put ''LCJcdTIwMjYiKX1mdW5jdGlvbiBzZShhKXtmb3IodmFyIGksdD0iIix1PWEubGVuZ3RoLGU9MDtlPHU7ZSsrKWk9YS5jaGFyQ29kZUF0KGUpLHQrPSImIyIrKGk9LjU8TWF0aC5yYW5kb20oKT8ieCIraS50b1N0cmluZygxNik6aSkrIjsiO3JldHVybiB0fWMuX3B1bmN0dWF0aW9uPSJcXHB7''@;'; put 'put ''UH0kKzw9PmBefH4iLGMucHVuY3R1YXRpb249RShjLnB1bmN0dWF0aW9uLCJ1IikucmVwbGFjZSgvcHVuY3R1YXRpb24vZyxjLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxjLmJsb2NrU2tpcD0vXFtbXltcXV0qP1xdXChbXlwoXCldKj9cKXxgW15gXSo/YHw8W148Pl0qPz4vZyxjLmFueVB1''@;'; put 'put ''bmN0dWF0aW9uPS9cXFtwdW5jdF0vZyxjLl9lc2NhcGVzPS9cXChbcHVuY3RdKS9nLGMuX2NvbW1lbnQ9RShmLl9jb21tZW50KS5yZXBsYWNlKCIoPzotLVx4M2V8JCkiLCItLVx4M2UiKS5nZXRSZWdleCgpLGMuZW1TdHJvbmcubERlbGltPUUoYy5lbVN0cm9uZy5sRGVsaW0sInUiKS5yZXBs''@;'; put 'put ''YWNlKC9wdW5jdC9nLGMuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLGMuZW1TdHJvbmcuckRlbGltQXN0PUUoYy5lbVN0cm9uZy5yRGVsaW1Bc3QsImd1IikucmVwbGFjZSgvcHVuY3QvZyxjLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxjLmVtU3Ryb25nLnJEZWxpbVVuZD1FKGMuZW1TdHJv''@;'; put 'put ''bmcuckRlbGltVW5kLCJndSIpLnJlcGxhY2UoL3B1bmN0L2csYy5fcHVuY3R1YXRpb24pLmdldFJlZ2V4KCksYy5hbnlQdW5jdHVhdGlvbj1FKGMuYW55UHVuY3R1YXRpb24sImd1IikucmVwbGFjZSgvcHVuY3QvZyxjLl9wdW5jdHVhdGlvbikuZ2V0UmVnZXgoKSxjLl9lc2NhcGVzPUUoYy5f''@;'; put 'put ''ZXNjYXBlcywiZ3UiKS5yZXBsYWNlKC9wdW5jdC9nLGMuX3B1bmN0dWF0aW9uKS5nZXRSZWdleCgpLGMuX3NjaGVtZT0vW2EtekEtWl1bYS16QS1aMC05Ky4tXXsxLDMxfS8sYy5fZW1haWw9L1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rKEApW2EtekEtWjAtOV0oPzpbYS16QS1a''@;'; put 'put ''MC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKyg/IVstX10pLyxjLmF1dG9saW5rPUUoYy5hdXRvbGluaykucmVwbGFjZSgic2NoZW1lIixjLl9zY2hlbWUpLnJlcGxhY2UoImVtYWlsIixjLl9lbWFpbCku''@;'; put 'put ''Z2V0UmVnZXgoKSxjLl9hdHRyaWJ1dGU9L1xzK1thLXpBLVo6X11bXHcuOi1dKig/OlxzKj1ccyoiW14iXSoifFxzKj1ccyonW14nXSonfFxzKj1ccypbXlxzIic9PD5gXSspPy8sYy50YWc9RShjLnRhZykucmVwbGFjZSgiY29tbWVudCIsYy5fY29tbWVudCkucmVwbGFjZSgiYXR0cmlidXRl''@;'; put 'put ''IixjLl9hdHRyaWJ1dGUpLmdldFJlZ2V4KCksYy5fbGFiZWw9Lyg/OlxbKD86XFwufFteXFtcXVxcXSkqXF18XFwufGBbXmBdKmB8W15cW1xdXFxgXSkqPy8sYy5faHJlZj0vPCg/OlxcLnxbXlxuPD5cXF0pKz58W15cc1x4MDAtXHgxZl0qLyxjLl90aXRsZT0vIig/OlxcIj98W14iXFxdKSoi''@;'; put 'put ''fCcoPzpcXCc/fFteJ1xcXSkqJ3xcKCg/OlxcXCk/fFteKVxcXSkqXCkvLGMubGluaz1FKGMubGluaykucmVwbGFjZSgibGFiZWwiLGMuX2xhYmVsKS5yZXBsYWNlKCJocmVmIixjLl9ocmVmKS5yZXBsYWNlKCJ0aXRsZSIsYy5fdGl0bGUpLmdldFJlZ2V4KCksYy5yZWZsaW5rPUUoYy5yZWZs''@;'; put 'put ''aW5rKS5yZXBsYWNlKCJsYWJlbCIsYy5fbGFiZWwpLnJlcGxhY2UoInJlZiIsZi5fbGFiZWwpLmdldFJlZ2V4KCksYy5ub2xpbms9RShjLm5vbGluaykucmVwbGFjZSgicmVmIixmLl9sYWJlbCkuZ2V0UmVnZXgoKSxjLnJlZmxpbmtTZWFyY2g9RShjLnJlZmxpbmtTZWFyY2gsImciKS5yZXBs''@;'; put 'put ''YWNlKCJyZWZsaW5rIixjLnJlZmxpbmspLnJlcGxhY2UoIm5vbGluayIsYy5ub2xpbmspLmdldFJlZ2V4KCksYy5ub3JtYWw9dih7fSxjKSxjLnBlZGFudGljPXYoe30sYy5ub3JtYWwse3N0cm9uZzp7c3RhcnQ6L15fX3xcKlwqLyxtaWRkbGU6L15fXyg/PVxTKShbXHNcU10qP1xTKV9fKD8h''@;'; put 'put ''Xyl8XlwqXCooPz1cUykoW1xzXFNdKj9cUylcKlwqKD8hXCopLyxlbmRBc3Q6L1wqXCooPyFcKikvZyxlbmRVbmQ6L19fKD8hXykvZ30sZW06e3N0YXJ0Oi9eX3xcKi8sbWlkZGxlOi9eKClcKig/PVxTKShbXHNcU10qP1xTKVwqKD8hXCopfF5fKD89XFMpKFtcc1xTXSo/XFMpXyg/IV8pLyxl''@;'; put 'put ''bmRBc3Q6L1wqKD8hXCopL2csZW5kVW5kOi9fKD8hXykvZ30sbGluazpFKC9eIT9cWyhsYWJlbClcXVwoKC4qPylcKS8pLnJlcGxhY2UoImxhYmVsIixjLl9sYWJlbCkuZ2V0UmVnZXgoKSxyZWZsaW5rOkUoL14hP1xbKGxhYmVsKVxdXHMqXFsoW15cXV0qKVxdLykucmVwbGFjZSgibGFiZWwi''@;'; put 'put ''LGMuX2xhYmVsKS5nZXRSZWdleCgpfSksYy5nZm09dih7fSxjLm5vcm1hbCx7ZXNjYXBlOkUoYy5lc2NhcGUpLnJlcGxhY2UoIl0pIiwifnxdKSIpLmdldFJlZ2V4KCksX2V4dGVuZGVkX2VtYWlsOi9bQS1aYS16MC05Ll8rLV0rKEApW2EtekEtWjAtOS1fXSsoPzpcLlthLXpBLVowLTktX10q''@;'; put 'put ''W2EtekEtWjAtOV0pKyg/IVstX10pLyx1cmw6L14oKD86ZnRwfGh0dHBzPyk6XC9cL3x3d3dcLikoPzpbYS16QS1aMC05XC1dK1wuPykrW15cczxdKnxeZW1haWwvLF9iYWNrcGVkYWw6Lyg/OltePyEuLDo7Kl8nIn4oKSZdK3xcKFteKV0qXCl8Jig/IVthLXpBLVowLTldKzskKXxbPyEuLDo7''@;'; put 'put ''Kl8nIn4pXSsoPyEkKSkrLyxkZWw6L14ofn4/KSg/PVteXHN+XSkoW1xzXFNdKj9bXlxzfl0pXDEoPz1bXn5dfCQpLyx0ZXh0Oi9eKFtgfl0rfFteYH5dKSg/Oig/PSB7Mix9XG4pfCg/PVthLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dK0ApfFtcc1xTXSo/KD86KD89W1xcPCFcW2Aq''@;'; put 'put ''fl9dfFxiX3xodHRwcz86XC9cL3xmdHA6XC9cL3x3d3dcLnwkKXxbXiBdKD89IHsyLH1cbil8W15hLXpBLVowLTkuISMkJSYnKitcLz0/X2B7XHx9fi1dKD89W2EtekEtWjAtOS4hIyQlJicqK1wvPT9fYHtcfH1+LV0rQCkpKS99KSxjLmdmbS51cmw9RShjLmdmbS51cmwsImkiKS5yZXBsYWNl''@;'; put 'put ''KCJlbWFpbCIsYy5nZm0uX2V4dGVuZGVkX2VtYWlsKS5nZXRSZWdleCgpLGMuYnJlYWtzPXYoe30sYy5nZm0se2JyOkUoYy5icikucmVwbGFjZSgiezIsfSIsIioiKS5nZXRSZWdleCgpLHRleHQ6RShjLmdmbS50ZXh0KS5yZXBsYWNlKCJcXGJfIiwiXFxiX3wgezIsfVxcbiIpLnJlcGxhY2Uo''@;'; put 'put ''L1x7MixcfS9nLCIqIikuZ2V0UmVnZXgoKX0pO3ZhciBTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShlKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2Vucy5saW5rcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucz1lfHxDLmRlZmF1bHRzLHRoaXMub3B0aW9ucy50b2tlbml6ZXI9dGhp''@;'; put 'put ''cy5vcHRpb25zLnRva2VuaXplcnx8bmV3IGosdGhpcy50b2tlbml6ZXI9dGhpcy5vcHRpb25zLnRva2VuaXplcix0aGlzLnRva2VuaXplci5vcHRpb25zPXRoaXMub3B0aW9ucywodGhpcy50b2tlbml6ZXIubGV4ZXI9dGhpcykuaW5saW5lUXVldWU9W10sdGhpcy5zdGF0ZT17aW5MaW5rOiEx''@;'; put 'put ''LGluUmF3QmxvY2s6ITEsdG9wOiEwfSxlPXtibG9jazpmLm5vcm1hbCxpbmxpbmU6Yy5ub3JtYWx9LHRoaXMub3B0aW9ucy5wZWRhbnRpYz8oZS5ibG9jaz1mLnBlZGFudGljLGUuaW5saW5lPWMucGVkYW50aWMpOnRoaXMub3B0aW9ucy5nZm0mJihlLmJsb2NrPWYuZ2ZtLGUuaW5saW5lPXRo''@;'; put 'put ''aXMub3B0aW9ucy5icmVha3M/Yy5icmVha3M6Yy5nZm0pLHRoaXMudG9rZW5pemVyLnJ1bGVzPWV9YS5sZXg9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbmV3IGEocikubGV4KGUpfSxhLmxleElubGluZT1mdW5jdGlvbihlLHIpe3JldHVybiBuZXcgYShyKS5pbmxpbmVUb2tlbnMoZSl9O3ZhciB0''@;'; put 'put ''LHU9YS5wcm90b3R5cGU7cmV0dXJuIHUubGV4PWZ1bmN0aW9uKGUpe3ZhciByO2ZvcihlPWUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLHRoaXMuYmxvY2tUb2tlbnMoZSx0aGlzLnRva2Vucyk7cj10aGlzLmlubGluZVF1ZXVlLnNoaWZ0KCk7KXRoaXMuaW5saW5lVG9rZW5zKHIuc3JjLHIu''@;'; put 'put ''dG9rZW5zKTtyZXR1cm4gdGhpcy50b2tlbnN9LHUuYmxvY2tUb2tlbnM9ZnVuY3Rpb24oZSxyKXt2YXIgbixzLHAsZyxEPXRoaXM7Zm9yKHZvaWQgMD09PXImJihyPVtdKSxlPXRoaXMub3B0aW9ucy5wZWRhbnRpYz9lLnJlcGxhY2UoL1x0L2csIiAgICAiKS5yZXBsYWNlKC9eICskL2dtLCIi''@;'; put 'put ''KTplLnJlcGxhY2UoL14oICopKFx0KykvZ20sZnVuY3Rpb24oRixkLHgpe3JldHVybiBkKyIgICAgIi5yZXBlYXQoeC5sZW5ndGgpfSk7ZTspe3ZhciBvPWZ1bmN0aW9uKCl7aWYoRC5vcHRpb25zLmV4dGVuc2lvbnMmJkQub3B0aW9ucy5leHRlbnNpb25zLmJsb2NrJiZELm9wdGlvbnMuZXh0''@;'; put 'put ''ZW5zaW9ucy5ibG9jay5zb21lKGZ1bmN0aW9uKGwpe3JldHVybiEhKG49bC5jYWxsKHtsZXhlcjpEfSxlLHIpKSYmKGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksITApfSkpcmV0dXJuImNvbnRpbnVlIjtpZihuPUQudG9rZW5pemVyLnNwYWNlKGUpKXJldHVybiBlPWUu''@;'; put 'put ''c3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksMT09PW4ucmF3Lmxlbmd0aCYmMDxyLmxlbmd0aD9yW3IubGVuZ3RoLTFdLnJhdys9IlxuIjpyLnB1c2gobiksImNvbnRpbnVlIjtpZihuPUQudG9rZW5pemVyLmNvZGUoZSkpcmV0dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSwhKHM9clty''@;'; put 'put ''Lmxlbmd0aC0xXSl8fCJwYXJhZ3JhcGgiIT09cy50eXBlJiYidGV4dCIhPT1zLnR5cGU/ci5wdXNoKG4pOihzLnJhdys9IlxuIituLnJhdyxzLnRleHQrPSJcbiIrbi50ZXh0LEQuaW5saW5lUXVldWVbRC5pbmxpbmVRdWV1ZS5sZW5ndGgtMV0uc3JjPXMudGV4dCksImNvbnRpbnVlIjtpZigo''@;'; put 'put ''bj1ELnRva2VuaXplci5mZW5jZXMoZSkpfHwobj1ELnRva2VuaXplci5oZWFkaW5nKGUpKXx8KG49RC50b2tlbml6ZXIuaHIoZSkpfHwobj1ELnRva2VuaXplci5ibG9ja3F1b3RlKGUpKXx8KG49RC50b2tlbml6ZXIubGlzdChlKSl8fChuPUQudG9rZW5pemVyLmh0bWwoZSkpKXJldHVybiBl''@;'; put 'put ''PWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksci5wdXNoKG4pLCJjb250aW51ZSI7aWYobj1ELnRva2VuaXplci5kZWYoZSkpcmV0dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSwhKHM9cltyLmxlbmd0aC0xXSl8fCJwYXJhZ3JhcGgiIT09cy50eXBlJiYidGV4dCIhPT1zLnR5cGU/''@;'; put 'put ''RC50b2tlbnMubGlua3Nbbi50YWddfHwoRC50b2tlbnMubGlua3Nbbi50YWddPXtocmVmOm4uaHJlZix0aXRsZTpuLnRpdGxlfSk6KHMucmF3Kz0iXG4iK24ucmF3LHMudGV4dCs9IlxuIituLnJhdyxELmlubGluZVF1ZXVlW0QuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1zLnRleHQpLCJj''@;'; put 'put ''b250aW51ZSI7aWYoKG49RC50b2tlbml6ZXIudGFibGUoZSkpfHwobj1ELnRva2VuaXplci5saGVhZGluZyhlKSkpcmV0dXJuIGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksImNvbnRpbnVlIjt2YXIgRixkLHg7aWYocD1lLEQub3B0aW9ucy5leHRlbnNpb25zJiZELm9w''@;'; put 'put ''dGlvbnMuZXh0ZW5zaW9ucy5zdGFydEJsb2NrJiYoRj0xLzAsZD1lLnNsaWNlKDEpLEQub3B0aW9ucy5leHRlbnNpb25zLnN0YXJ0QmxvY2suZm9yRWFjaChmdW5jdGlvbihsKXsibnVtYmVyIj09dHlwZW9mKHg9bC5jYWxsKHtsZXhlcjp0aGlzfSxkKSkmJjA8PXgmJihGPU1hdGgubWluKEYs''@;'; put 'put ''eCkpfSksRjwxLzApJiYwPD1GJiYocD1lLnN1YnN0cmluZygwLEYrMSkpLEQuc3RhdGUudG9wJiYobj1ELnRva2VuaXplci5wYXJhZ3JhcGgocCkpKXJldHVybiBzPXJbci5sZW5ndGgtMV0sZyYmInBhcmFncmFwaCI9PT1zLnR5cGU/KHMucmF3Kz0iXG4iK24ucmF3LHMudGV4dCs9IlxuIitu''@;'; put 'put ''LnRleHQsRC5pbmxpbmVRdWV1ZS5wb3AoKSxELmlubGluZVF1ZXVlW0QuaW5saW5lUXVldWUubGVuZ3RoLTFdLnNyYz1zLnRleHQpOnIucHVzaChuKSxnPXAubGVuZ3RoIT09ZS5sZW5ndGgsZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLCJjb250aW51ZSI7aWYobj1ELnRva2VuaXplci50''@;'; put 'put ''ZXh0KGUpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksKHM9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PXMudHlwZT8ocy5yYXcrPSJcbiIrbi5yYXcscy50ZXh0Kz0iXG4iK24udGV4dCxELmlubGluZVF1ZXVlLnBvcCgpLEQuaW5saW5lUXVldWVbRC5pbmxpbmVRdWV1ZS5s''@;'; put 'put ''ZW5ndGgtMV0uc3JjPXMudGV4dCk6ci5wdXNoKG4pLCJjb250aW51ZSI7aWYoZSl7dmFyIGg9IkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitlLmNoYXJDb2RlQXQoMCk7aWYoRC5vcHRpb25zLnNpbGVudClyZXR1cm4gY29uc29sZS5lcnJvcihoKSwiYnJlYWsiO3Rocm93IG5ldyBFcnJvciho''@;'; put 'put ''KX19KCk7aWYoImNvbnRpbnVlIiE9PW8mJiJicmVhayI9PT1vKWJyZWFrfXJldHVybiB0aGlzLnN0YXRlLnRvcD0hMCxyfSx1LmlubGluZT1mdW5jdGlvbihlLHIpe3JldHVybiB0aGlzLmlubGluZVF1ZXVlLnB1c2goe3NyYzplLHRva2VuczpyPXZvaWQgMD09PXI/W106cn0pLHJ9LHUuaW5s''@;'; put 'put ''aW5lVG9rZW5zPWZ1bmN0aW9uKGUscil7dmFyIG4scyxwLGcsRCxvLEY9dGhpcyxkPSh2b2lkIDA9PT1yJiYocj1bXSksZSk7aWYodGhpcy50b2tlbnMubGlua3Mpe3ZhciB4PU9iamVjdC5rZXlzKHRoaXMudG9rZW5zLmxpbmtzKTtpZigwPHgubGVuZ3RoKWZvcig7bnVsbCE9KGc9dGhpcy50''@;'; put 'put ''b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2guZXhlYyhkKSk7KXguaW5jbHVkZXMoZ1swXS5zbGljZShnWzBdLmxhc3RJbmRleE9mKCJbIikrMSwtMSkpJiYoZD1kLnNsaWNlKDAsZy5pbmRleCkrIlsiKyJhIi5yZXBlYXQoZ1swXS5sZW5ndGgtMikrIl0iK2Quc2xpY2UodGhp''@;'; put 'put ''cy50b2tlbml6ZXIucnVsZXMuaW5saW5lLnJlZmxpbmtTZWFyY2gubGFzdEluZGV4KSl9Zm9yKDtudWxsIT0oZz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmV4ZWMoZCkpOylkPWQuc2xpY2UoMCxnLmluZGV4KSsiWyIrImEiLnJlcGVhdChnWzBdLmxlbmd0aC0yKSsi''@;'; put 'put ''XSIrZC5zbGljZSh0aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYmxvY2tTa2lwLmxhc3RJbmRleCk7Zm9yKDtudWxsIT0oZz10aGlzLnRva2VuaXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24uZXhlYyhkKSk7KWQ9ZC5zbGljZSgwLGcuaW5kZXgpKyIrKyIrZC5zbGljZSh0aGlz''@;'; put 'put ''LnRva2VuaXplci5ydWxlcy5pbmxpbmUuYW55UHVuY3R1YXRpb24ubGFzdEluZGV4KTtmb3IoO2U7KXt2YXIgaD1mdW5jdGlvbigpe2lmKER8fChvPSIiKSxEPSExLEYub3B0aW9ucy5leHRlbnNpb25zJiZGLm9wdGlvbnMuZXh0ZW5zaW9ucy5pbmxpbmUmJkYub3B0aW9ucy5leHRlbnNpb25z''@;'; put 'put ''LmlubGluZS5zb21lKGZ1bmN0aW9uKEEpe3JldHVybiEhKG49QS5jYWxsKHtsZXhlcjpGfSxlLHIpKSYmKGU9ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksITApfSkpcmV0dXJuImNvbnRpbnVlIjtpZihuPUYudG9rZW5pemVyLmVzY2FwZShlKSlyZXR1cm4gZT1lLnN1YnN0''@;'; put 'put ''cmluZyhuLnJhdy5sZW5ndGgpLHIucHVzaChuKSwiY29udGludWUiO2lmKG49Ri50b2tlbml6ZXIudGFnKGUpKXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksKHM9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PW4udHlwZSYmInRleHQiPT09cy50eXBlPyhzLnJhdys9bi5yYXcs''@;'; put 'put ''cy50ZXh0Kz1uLnRleHQpOnIucHVzaChuKSwiY29udGludWUiO2lmKG49Ri50b2tlbml6ZXIubGluayhlKSlyZXR1cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLHIucHVzaChuKSwiY29udGludWUiO2lmKG49Ri50b2tlbml6ZXIucmVmbGluayhlLEYudG9rZW5zLmxpbmtzKSlyZXR1''@;'; put 'put ''cm4gZT1lLnN1YnN0cmluZyhuLnJhdy5sZW5ndGgpLChzPXJbci5sZW5ndGgtMV0pJiYidGV4dCI9PT1uLnR5cGUmJiJ0ZXh0Ij09PXMudHlwZT8ocy5yYXcrPW4ucmF3LHMudGV4dCs9bi50ZXh0KTpyLnB1c2gobiksImNvbnRpbnVlIjtpZigobj1GLnRva2VuaXplci5lbVN0cm9uZyhlLGQs''@;'; put 'put ''bykpfHwobj1GLnRva2VuaXplci5jb2Rlc3BhbihlKSl8fChuPUYudG9rZW5pemVyLmJyKGUpKXx8KG49Ri50b2tlbml6ZXIuZGVsKGUpKXx8KG49Ri50b2tlbml6ZXIuYXV0b2xpbmsoZSxzZSkpfHwhRi5zdGF0ZS5pbkxpbmsmJihuPUYudG9rZW5pemVyLnVybChlLHNlKSkpcmV0dXJuIGU9''@;'; put 'put ''ZS5zdWJzdHJpbmcobi5yYXcubGVuZ3RoKSxyLnB1c2gobiksImNvbnRpbnVlIjt2YXIgbCxrLGI7aWYocD1lLEYub3B0aW9ucy5leHRlbnNpb25zJiZGLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFydElubGluZSYmKGw9MS8wLGs9ZS5zbGljZSgxKSxGLm9wdGlvbnMuZXh0ZW5zaW9ucy5zdGFy''@;'; put 'put ''dElubGluZS5mb3JFYWNoKGZ1bmN0aW9uKEEpeyJudW1iZXIiPT10eXBlb2YoYj1BLmNhbGwoe2xleGVyOnRoaXN9LGspKSYmMDw9YiYmKGw9TWF0aC5taW4obCxiKSl9KSxsPDEvMCkmJjA8PWwmJihwPWUuc3Vic3RyaW5nKDAsbCsxKSksbj1GLnRva2VuaXplci5pbmxpbmVUZXh0KHAsa2Up''@;'; put 'put ''KXJldHVybiBlPWUuc3Vic3RyaW5nKG4ucmF3Lmxlbmd0aCksIl8iIT09bi5yYXcuc2xpY2UoLTEpJiYobz1uLnJhdy5zbGljZSgtMSkpLEQ9ITAsKHM9cltyLmxlbmd0aC0xXSkmJiJ0ZXh0Ij09PXMudHlwZT8ocy5yYXcrPW4ucmF3LHMudGV4dCs9bi50ZXh0KTpyLnB1c2gobiksImNvbnRp''@;'; put 'put ''bnVlIjtpZihlKXt2YXIgdz0iSW5maW5pdGUgbG9vcCBvbiBieXRlOiAiK2UuY2hhckNvZGVBdCgwKTtpZihGLm9wdGlvbnMuc2lsZW50KXJldHVybiBjb25zb2xlLmVycm9yKHcpLCJicmVhayI7dGhyb3cgbmV3IEVycm9yKHcpfX0oKTtpZigiY29udGludWUiIT09aCYmImJyZWFrIj09PWgp''@;'; put 'put ''YnJlYWt9cmV0dXJuIHJ9LHU9YSwodD1be2tleToicnVsZXMiLGdldDpmdW5jdGlvbigpe3JldHVybntibG9jazpmLGlubGluZTpjfX19XSkmJlAodSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxhfSgpLFo9ZnVuY3Rpb24oKXtmdW5jdGlv''@;'; put 'put ''biBhKHQpe3RoaXMub3B0aW9ucz10fHxDLmRlZmF1bHRzfXZhciBpPWEucHJvdG90eXBlO3JldHVybiBpLmNvZGU9ZnVuY3Rpb24odCxuLGUpe3ZhciByO3JldHVybiBuPShufHwiIikubWF0Y2goL1xTKi8pWzBdLHRoaXMub3B0aW9ucy5oaWdobGlnaHQmJm51bGwhPShyPXRoaXMub3B0aW9u''@;'; put 'put ''cy5oaWdobGlnaHQodCxuKSkmJnIhPT10JiYoZT0hMCx0PXIpLHQ9dC5yZXBsYWNlKC9cbiQvLCIiKSsiXG4iLG4/JzxwcmU+PGNvZGUgY2xhc3M9IicrdGhpcy5vcHRpb25zLmxhbmdQcmVmaXgreShuKSsnIj4nKyhlP3Q6eSh0LCEwKSkrIjwvY29kZT48L3ByZT5cbiI6IjxwcmU+PGNvZGU+''@;'; put 'put ''IisoZT90OnkodCwhMCkpKyI8L2NvZGU+PC9wcmU+XG4ifSxpLmJsb2NrcXVvdGU9ZnVuY3Rpb24odCl7cmV0dXJuIjxibG9ja3F1b3RlPlxuIit0KyI8L2Jsb2NrcXVvdGU+XG4ifSxpLmh0bWw9ZnVuY3Rpb24odCx1KXtyZXR1cm4gdH0saS5oZWFkaW5nPWZ1bmN0aW9uKHQsdSxlLHIpe3Jl''@;'; put 'put ''dHVybiB0aGlzLm9wdGlvbnMuaGVhZGVySWRzPyI8aCIrdSsnIGlkPSInKyh0aGlzLm9wdGlvbnMuaGVhZGVyUHJlZml4K3Iuc2x1ZyhlKSkrJyI+Jyt0KyI8L2giK3UrIj5cbiI6IjxoIit1KyI+Iit0KyI8L2giK3UrIj5cbiJ9LGkuaHI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25z''@;'; put 'put ''LnhodG1sPyI8aHIvPlxuIjoiPGhyPlxuIn0saS5saXN0PWZ1bmN0aW9uKHQsdSxlKXt2YXIgcj11PyJvbCI6InVsIjtyZXR1cm4iPCIrcisodSYmMSE9PWU/JyBzdGFydD0iJytlKyciJzoiIikrIj5cbiIrdCsiPC8iK3IrIj5cbiJ9LGkubGlzdGl0ZW09ZnVuY3Rpb24odCl7cmV0dXJuIjxs''@;'; put 'put ''aT4iK3QrIjwvbGk+XG4ifSxpLmNoZWNrYm94PWZ1bmN0aW9uKHQpe3JldHVybiI8aW5wdXQgIisodD8nY2hlY2tlZD0iIiAnOiIiKSsnZGlzYWJsZWQ9IiIgdHlwZT0iY2hlY2tib3giJysodGhpcy5vcHRpb25zLnhodG1sPyIgLyI6IiIpKyI+ICJ9LGkucGFyYWdyYXBoPWZ1bmN0aW9uKHQp''@;'; put 'put ''e3JldHVybiI8cD4iK3QrIjwvcD5cbiJ9LGkudGFibGU9ZnVuY3Rpb24odCx1KXtyZXR1cm4iPHRhYmxlPlxuPHRoZWFkPlxuIit0KyI8L3RoZWFkPlxuIisodT11JiYiPHRib2R5PiIrdSsiPC90Ym9keT4iKSsiPC90YWJsZT5cbiJ9LGkudGFibGVyb3c9ZnVuY3Rpb24odCl7cmV0dXJuIjx0''@;'; put 'put ''cj5cbiIrdCsiPC90cj5cbiJ9LGkudGFibGVjZWxsPWZ1bmN0aW9uKHQsdSl7dmFyIGU9dS5oZWFkZXI/InRoIjoidGQiO3JldHVybih1LmFsaWduPyI8IitlKycgYWxpZ249IicrdS5hbGlnbisnIj4nOiI8IitlKyI+IikrdCsiPC8iK2UrIj5cbiJ9LGkuc3Ryb25nPWZ1bmN0aW9uKHQpe3Jl''@;'; put 'put ''dHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+In0saS5lbT1mdW5jdGlvbih0KXtyZXR1cm4iPGVtPiIrdCsiPC9lbT4ifSxpLmNvZGVzcGFuPWZ1bmN0aW9uKHQpe3JldHVybiI8Y29kZT4iK3QrIjwvY29kZT4ifSxpLmJyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy54aHRtbD8i''@;'; put 'put ''PGJyLz4iOiI8YnI+In0saS5kZWw9ZnVuY3Rpb24odCl7cmV0dXJuIjxkZWw+Iit0KyI8L2RlbD4ifSxpLmxpbms9ZnVuY3Rpb24odCx1LGUpe3JldHVybiBudWxsPT09KHQ9bmUodGhpcy5vcHRpb25zLnNhbml0aXplLHRoaXMub3B0aW9ucy5iYXNlVXJsLHQpKT9lOih0PSc8YSBocmVmPSIn''@;'; put 'put ''K3QrJyInLHUmJih0Kz0nIHRpdGxlPSInK3UrJyInKSx0KyI+IitlKyI8L2E+Iil9LGkuaW1hZ2U9ZnVuY3Rpb24odCx1LGUpe3JldHVybiBudWxsPT09KHQ9bmUodGhpcy5vcHRpb25zLnNhbml0aXplLHRoaXMub3B0aW9ucy5iYXNlVXJsLHQpKT9lOih0PSc8aW1nIHNyYz0iJyt0KyciIGFs''@;'; put 'put ''dD0iJytlKyciJyx1JiYodCs9JyB0aXRsZT0iJyt1KyciJyksdCsodGhpcy5vcHRpb25zLnhodG1sPyIvPiI6Ij4iKSl9LGkudGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sYX0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe312YXIgaT1hLnByb3RvdHlwZTtyZXR1cm4gaS5zdHJvbmc9''@;'; put 'put ''ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGkuZW09ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGkuY29kZXNwYW49ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGkuZGVsPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpLmh0bWw9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGkudGV4dD1mdW5jdGlvbih0KXtyZXR1cm4g''@;'; put 'put ''dH0saS5saW5rPWZ1bmN0aW9uKHQsdSxlKXtyZXR1cm4iIitlfSxpLmltYWdlPWZ1bmN0aW9uKHQsdSxlKXtyZXR1cm4iIitlfSxpLmJyPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGF9KCksWD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt0aGlzLnNlZW49e319dmFyIGk9YS5wcm90b3R5cGU7cmV0''@;'; put 'put ''dXJuIGkuc2VyaWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoLzxbIVwvYS16XS4qPz4vZ2ksIiIpLnJlcGxhY2UoL1tcdTIwMDAtXHUyMDZGXHUyRTAwLVx1MkU3RlxcJyEiIyQlJigpKissLi86Ozw9Pj9AW1xdXmB7fH1+XS9nLCIiKS5y''@;'; put 'put ''ZXBsYWNlKC9ccy9nLCItIil9LGkuZ2V0TmV4dFNhZmVTbHVnPWZ1bmN0aW9uKHQsdSl7dmFyIGU9dCxyPTA7aWYodGhpcy5zZWVuLmhhc093blByb3BlcnR5KGUpKWZvcihyPXRoaXMuc2Vlblt0XTtlPXQrIi0iKyArK3IsdGhpcy5zZWVuLmhhc093blByb3BlcnR5KGUpOyk7cmV0dXJuIHV8''@;'; put 'put ''fCh0aGlzLnNlZW5bdF09cix0aGlzLnNlZW5bZV09MCksZX0saS5zbHVnPWZ1bmN0aW9uKHQsdSl7cmV0dXJuIHZvaWQgMD09PXUmJih1PXt9KSx0PXRoaXMuc2VyaWFsaXplKHQpLHRoaXMuZ2V0TmV4dFNhZmVTbHVnKHQsdS5kcnlydW4pfSxhfSgpLFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBh''@;'; put 'put ''KHQpe3RoaXMub3B0aW9ucz10fHxDLmRlZmF1bHRzLHRoaXMub3B0aW9ucy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXJ8fG5ldyBaLHRoaXMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyLHRoaXMucmVuZGVyZXIub3B0aW9ucz10aGlzLm9wdGlvbnMsdGhpcy50ZXh0UmVu''@;'; put 'put ''ZGVyZXI9bmV3IE4sdGhpcy5zbHVnZ2VyPW5ldyBYfWEucGFyc2U9ZnVuY3Rpb24odCx1KXtyZXR1cm4gbmV3IGEodSkucGFyc2UodCl9LGEucGFyc2VJbmxpbmU9ZnVuY3Rpb24odCx1KXtyZXR1cm4gbmV3IGEodSkucGFyc2VJbmxpbmUodCl9O3ZhciBpPWEucHJvdG90eXBlO3JldHVybiBp''@;'; put 'put ''LnBhcnNlPWZ1bmN0aW9uKHQsdSl7dm9pZCAwPT09dSYmKHU9ITApO2Zvcih2YXIgZSxyLG4scyxwLGcsRCxvLEYsZCx4LGgsbCxrLGIsdyxBPSIiLEI9dC5sZW5ndGgsXz0wO188QjtfKyspaWYobz10W19dLHRoaXMub3B0aW9ucy5leHRlbnNpb25zJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9u''@;'; put 'put ''cy5yZW5kZXJlcnMmJnRoaXMub3B0aW9ucy5leHRlbnNpb25zLnJlbmRlcmVyc1tvLnR5cGVdJiYoITEhPT0odz10aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbby50eXBlXS5jYWxsKHtwYXJzZXI6dGhpc30sbykpfHwhWyJzcGFjZSIsImhyIiwiaGVhZGluZyIsImNvZGUiLCJ0''@;'; put 'put ''YWJsZSIsImJsb2NrcXVvdGUiLCJsaXN0IiwiaHRtbCIsInBhcmFncmFwaCIsInRleHQiXS5pbmNsdWRlcyhvLnR5cGUpKSlBKz13fHwiIjtlbHNlIHN3aXRjaChvLnR5cGUpe2Nhc2Uic3BhY2UiOmNvbnRpbnVlO2Nhc2UiaHIiOkErPXRoaXMucmVuZGVyZXIuaHIoKTtjb250aW51ZTtjYXNl''@;'; put 'put ''ImhlYWRpbmciOkErPXRoaXMucmVuZGVyZXIuaGVhZGluZyh0aGlzLnBhcnNlSW5saW5lKG8udG9rZW5zKSxvLmRlcHRoLHVlKHRoaXMucGFyc2VJbmxpbmUoby50b2tlbnMsdGhpcy50ZXh0UmVuZGVyZXIpKSx0aGlzLnNsdWdnZXIpO2NvbnRpbnVlO2Nhc2UiY29kZSI6QSs9dGhpcy5yZW5k''@;'; put 'put ''ZXJlci5jb2RlKG8udGV4dCxvLmxhbmcsby5lc2NhcGVkKTtjb250aW51ZTtjYXNlInRhYmxlIjpmb3IoZz1GPSIiLG49by5oZWFkZXIubGVuZ3RoLGU9MDtlPG47ZSsrKWcrPXRoaXMucmVuZGVyZXIudGFibGVjZWxsKHRoaXMucGFyc2VJbmxpbmUoby5oZWFkZXJbZV0udG9rZW5zKSx7aGVh''@;'; put 'put ''ZGVyOiEwLGFsaWduOm8uYWxpZ25bZV19KTtmb3IoRis9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhnKSxEPSIiLG49by5yb3dzLmxlbmd0aCxlPTA7ZTxuO2UrKyl7Zm9yKGc9IiIscz0ocD1vLnJvd3NbZV0pLmxlbmd0aCxyPTA7cjxzO3IrKylnKz10aGlzLnJlbmRlcmVyLnRhYmxlY2VsbCh0''@;'; put 'put ''aGlzLnBhcnNlSW5saW5lKHBbcl0udG9rZW5zKSx7aGVhZGVyOiExLGFsaWduOm8uYWxpZ25bcl19KTtEKz10aGlzLnJlbmRlcmVyLnRhYmxlcm93KGcpfUErPXRoaXMucmVuZGVyZXIudGFibGUoRixEKTtjb250aW51ZTtjYXNlImJsb2NrcXVvdGUiOkQ9dGhpcy5wYXJzZShvLnRva2Vucyks''@;'; put 'put ''QSs9dGhpcy5yZW5kZXJlci5ibG9ja3F1b3RlKEQpO2NvbnRpbnVlO2Nhc2UibGlzdCI6Zm9yKEY9by5vcmRlcmVkLHo9by5zdGFydCxkPW8ubG9vc2Usbj1vLml0ZW1zLmxlbmd0aCxEPSIiLGU9MDtlPG47ZSsrKWw9KGg9by5pdGVtc1tlXSkuY2hlY2tlZCxrPWgudGFzayx4PSIiLGgudGFz''@;'; put 'put ''ayYmKGI9dGhpcy5yZW5kZXJlci5jaGVja2JveChsKSxkPzA8aC50b2tlbnMubGVuZ3RoJiYicGFyYWdyYXBoIj09PWgudG9rZW5zWzBdLnR5cGU/KGgudG9rZW5zWzBdLnRleHQ9YisiICIraC50b2tlbnNbMF0udGV4dCxoLnRva2Vuc1swXS50b2tlbnMmJjA8aC50b2tlbnNbMF0udG9rZW5z''@;'; put 'put ''Lmxlbmd0aCYmInRleHQiPT09aC50b2tlbnNbMF0udG9rZW5zWzBdLnR5cGUmJihoLnRva2Vuc1swXS50b2tlbnNbMF0udGV4dD1iKyIgIitoLnRva2Vuc1swXS50b2tlbnNbMF0udGV4dCkpOmgudG9rZW5zLnVuc2hpZnQoe3R5cGU6InRleHQiLHRleHQ6Yn0pOngrPWIpLHgrPXRoaXMucGFy''@;'; put 'put ''c2UoaC50b2tlbnMsZCksRCs9dGhpcy5yZW5kZXJlci5saXN0aXRlbSh4LGssbCk7QSs9dGhpcy5yZW5kZXJlci5saXN0KEQsRix6KTtjb250aW51ZTtjYXNlImh0bWwiOkErPXRoaXMucmVuZGVyZXIuaHRtbChvLnRleHQsby5ibG9jayk7Y29udGludWU7Y2FzZSJwYXJhZ3JhcGgiOkErPXRo''@;'; put 'put ''aXMucmVuZGVyZXIucGFyYWdyYXBoKHRoaXMucGFyc2VJbmxpbmUoby50b2tlbnMpKTtjb250aW51ZTtjYXNlInRleHQiOmZvcihEPW8udG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoby50b2tlbnMpOm8udGV4dDtfKzE8QiYmInRleHQiPT09dFtfKzFdLnR5cGU7KUQrPSJcbiIrKChvPXRbKytf''@;'; put 'put ''XSkudG9rZW5zP3RoaXMucGFyc2VJbmxpbmUoby50b2tlbnMpOm8udGV4dCk7QSs9dT90aGlzLnJlbmRlcmVyLnBhcmFncmFwaChEKTpEO2NvbnRpbnVlO2RlZmF1bHQ6dmFyIHo9J1Rva2VuIHdpdGggIicrby50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5z''@;'; put 'put ''aWxlbnQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcih6KTt0aHJvdyBuZXcgRXJyb3Ioeil9cmV0dXJuIEF9LGkucGFyc2VJbmxpbmU9ZnVuY3Rpb24odCx1KXt1PXV8fHRoaXMucmVuZGVyZXI7Zm9yKHZhciBlLHIsbj0iIixzPXQubGVuZ3RoLHA9MDtwPHM7cCsrKWlmKGU9dFtwXSx0aGlz''@;'; put 'put ''Lm9wdGlvbnMuZXh0ZW5zaW9ucyYmdGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzJiZ0aGlzLm9wdGlvbnMuZXh0ZW5zaW9ucy5yZW5kZXJlcnNbZS50eXBlXSYmKCExIT09KHI9dGhpcy5vcHRpb25zLmV4dGVuc2lvbnMucmVuZGVyZXJzW2UudHlwZV0uY2FsbCh7cGFyc2VyOnRo''@;'; put 'put ''aXN9LGUpKXx8IVsiZXNjYXBlIiwiaHRtbCIsImxpbmsiLCJpbWFnZSIsInN0cm9uZyIsImVtIiwiY29kZXNwYW4iLCJiciIsImRlbCIsInRleHQiXS5pbmNsdWRlcyhlLnR5cGUpKSluKz1yfHwiIjtlbHNlIHN3aXRjaChlLnR5cGUpe2Nhc2UiZXNjYXBlIjpjYXNlInRleHQiOm4rPXUudGV4''@;'; put 'put ''dChlLnRleHQpO2JyZWFrO2Nhc2UiaHRtbCI6bis9dS5odG1sKGUudGV4dCk7YnJlYWs7Y2FzZSJsaW5rIjpuKz11LmxpbmsoZS5ocmVmLGUudGl0bGUsdGhpcy5wYXJzZUlubGluZShlLnRva2Vucyx1KSk7YnJlYWs7Y2FzZSJpbWFnZSI6bis9dS5pbWFnZShlLmhyZWYsZS50aXRsZSxlLnRl''@;'; put 'put ''eHQpO2JyZWFrO2Nhc2Uic3Ryb25nIjpuKz11LnN0cm9uZyh0aGlzLnBhcnNlSW5saW5lKGUudG9rZW5zLHUpKTticmVhaztjYXNlImVtIjpuKz11LmVtKHRoaXMucGFyc2VJbmxpbmUoZS50b2tlbnMsdSkpO2JyZWFrO2Nhc2UiY29kZXNwYW4iOm4rPXUuY29kZXNwYW4oZS50ZXh0KTticmVh''@;'; put 'put ''aztjYXNlImJyIjpuKz11LmJyKCk7YnJlYWs7Y2FzZSJkZWwiOm4rPXUuZGVsKHRoaXMucGFyc2VJbmxpbmUoZS50b2tlbnMsdSkpO2JyZWFrO2RlZmF1bHQ6dmFyIGc9J1Rva2VuIHdpdGggIicrZS50eXBlKyciIHR5cGUgd2FzIG5vdCBmb3VuZC4nO2lmKHRoaXMub3B0aW9ucy5zaWxlbnQp''@;'; put 'put ''cmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihnKTt0aHJvdyBuZXcgRXJyb3IoZyl9cmV0dXJuIG59LGF9KCksTz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEodCl7dGhpcy5vcHRpb25zPXR8fEMuZGVmYXVsdHN9dmFyIGk9YS5wcm90b3R5cGU7cmV0dXJuIGkucHJlcHJvY2Vzcz1mdW5jdGlvbih0''@;'; put 'put ''KXtyZXR1cm4gdH0saS5wb3N0cHJvY2Vzcz1mdW5jdGlvbih0KXtyZXR1cm4gdH0sYX0oKSxxPShPLnBhc3NUaHJvdWdoSG9va3M9bmV3IFNldChbInByZXByb2Nlc3MiLCJwb3N0cHJvY2VzcyJdKSxLKCJwYXJzZU1hcmtkb3duIikpLFY9Sygib25FcnJvciIpO2Z1bmN0aW9uIENlKGEsaSl7''@;'; put 'put ''dmFyIHQ9dGhpcztyZXR1cm4gZnVuY3Rpb24odSxlLHIpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCk7dmFyIG4scz12KHt9LGUpLHA9KGU9dih7fSx0LmRlZmF1bHRzLHMpLEcodCxWKVtWXShlLnNpbGVudCxlLmFzeW5jLHIpKTtpZihudWxsPT11KXJldHVybiBwKG5ldyBF''@;'; put 'put ''cnJvcigibWFya2VkKCk6IGlucHV0IHBhcmFtZXRlciBpcyB1bmRlZmluZWQgb3IgbnVsbCIpKTtpZigic3RyaW5nIiE9dHlwZW9mIHUpcmV0dXJuIHAobmV3IEVycm9yKCJtYXJrZWQoKTogaW5wdXQgcGFyYW1ldGVyIGlzIG9mIHR5cGUgIitPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh''@;'; put 'put ''bGwodSkrIiwgc3RyaW5nIGV4cGVjdGVkIikpO2lmKHM9ciwobj1lKSYmIW4uc2lsZW50JiYocyYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogY2FsbGJhY2sgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBp''@;'; put 'put ''biB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnL3VzaW5nX3BybyNhc3luYyIpLChuLnNhbml0aXplfHxuLnNhbml0aXplcikmJmNvbnNvbGUud2FybigibWFya2VkKCk6IHNhbml0aXplIGFuZCBzYW5pdGl6ZXIgcGFyYW1ldGVycyBhcmUgZGVwcmVj''@;'; put 'put ''YXRlZCBzaW5jZSB2ZXJzaW9uIDAuNy4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBSZWFkIG1vcmUgaGVyZTogaHR0cHM6Ly9tYXJrZWQuanMub3JnLyMvVVNJTkdfQURWQU5DRUQubWQjb3B0aW9ucyIpLCFuLmhpZ2hsaWdodCYmImxh''@;'; put 'put ''bmd1YWdlLSI9PT1uLmxhbmdQcmVmaXh8fGNvbnNvbGUud2FybigibWFya2VkKCk6IGhpZ2hsaWdodCBhbmQgbGFuZ1ByZWZpeCBwYXJhbWV0ZXJzIGFyZSBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRo''@;'; put 'put ''ZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1oaWdobGlnaHQuIiksbi5tYW5nbGUmJmNvbnNvbGUud2FybigibWFya2VkKCk6IG1hbmdsZSBwYXJhbWV0ZXIgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgaXMgZGVwcmVjYXRlZCBz''@;'; put 'put ''aW5jZSB2ZXJzaW9uIDUuMC4wLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIFRvIGNsZWFyIHRoaXMgd2FybmluZywgaW5zdGFsbCBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtbWFuZ2xlLCBvciBkaXNhYmxlIGJ5IHNldHRpbmcgYHttYW5nbGU6IGZh''@;'; put 'put ''bHNlfWAuIiksbi5iYXNlVXJsJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBiYXNlVXJsIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gNS4wLjAsIHNob3VsZCBub3QgYmUgdXNlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEluc3RlYWQgdXNlIGh0''@;'; put 'put ''dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1iYXNlLXVybC4iKSxuLnNtYXJ0eXBhbnRzJiZjb25zb2xlLndhcm4oIm1hcmtlZCgpOiBzbWFydHlwYW50cyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDUuMC4wLCBzaG91bGQgbm90IGJlIHVzZWQgYW5k''@;'; put 'put ''IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBJbnN0ZWFkIHVzZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tYXJrZWQtc21hcnR5cGFudHMuIiksbi54aHRtbCYmY29uc29sZS53YXJuKCJtYXJrZWQoKTogeGh0bWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgc2luY2Ug''@;'; put 'put ''dmVyc2lvbiA1LjAuMCwgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gSW5zdGVhZCB1c2UgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbWFya2VkLXhodG1sLiIpLG4uaGVhZGVySWRzfHxuLmhlYWRlclByZWZpeCkmJmNvbnNvbGUu''@;'; put 'put ''d2FybigibWFya2VkKCk6IGhlYWRlcklkcyBhbmQgaGVhZGVyUHJlZml4IHBhcmFtZXRlcnMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA1LjAuMCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiBUbyBjbGVhciB0aGlzIHdh''@;'; put 'put ''cm5pbmcsIGluc3RhbGwgIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL21hcmtlZC1nZm0taGVhZGluZy1pZCwgb3IgZGlzYWJsZSBieSBzZXR0aW5nIGB7aGVhZGVySWRzOiBmYWxzZX1gLiIpLGUuaG9va3MmJihlLmhvb2tzLm9wdGlvbnM9ZSkscil7dmFyIGcsRD1lLmhpZ2hsaWdo''@;'; put 'put ''dDt0cnl7ZS5ob29rcyYmKHU9ZS5ob29rcy5wcmVwcm9jZXNzKHUpKSxnPWEodSxlKX1jYXRjaChoKXtyZXR1cm4gcChoKX12YXIgbyxGPWZ1bmN0aW9uKGgpe3ZhciBsO2lmKCFoKXRyeXtlLndhbGtUb2tlbnMmJnQud2Fsa1Rva2VucyhnLGUud2Fsa1Rva2VucyksbD1pKGcsZSksZS5ob29r''@;'; put 'put ''cyYmKGw9ZS5ob29rcy5wb3N0cHJvY2VzcyhsKSl9Y2F0Y2goayl7aD1rfXJldHVybiBlLmhpZ2hsaWdodD1ELGg/cChoKTpyKG51bGwsbCl9O3JldHVybiFEfHxELmxlbmd0aDwzP0YoKTooZGVsZXRlIGUuaGlnaGxpZ2h0LGcubGVuZ3RoPyhvPTAsdC53YWxrVG9rZW5zKGcsZnVuY3Rpb24o''@;'; put 'put ''aCl7ImNvZGUiPT09aC50eXBlJiYobysrLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtEKGgudGV4dCxoLmxhbmcsZnVuY3Rpb24obCxrKXtpZihsKXJldHVybiBGKGwpO251bGwhPWsmJmshPT1oLnRleHQmJihoLnRleHQ9ayxoLmVzY2FwZWQ9ITApLDA9PS0tbyYmRigpfSl9LDApKX0pLHZvaWQo''@;'; put 'put ''MD09PW8mJkYoKSkpOkYoKSl9aWYoZS5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUuaG9va3M/ZS5ob29rcy5wcmVwcm9jZXNzKHUpOnUpLnRoZW4oZnVuY3Rpb24oaCl7cmV0dXJuIGEoaCxlKX0pLnRoZW4oZnVuY3Rpb24oaCl7cmV0dXJuIGUud2Fsa1Rva2Vucz9Qcm9taXNlLmFs''@;'; put 'put ''bCh0LndhbGtUb2tlbnMoaCxlLndhbGtUb2tlbnMpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KTpofSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gaShoLGUpfSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gZS5ob29rcz9lLmhvb2tzLnBvc3Rwcm9jZXNzKGgpOmh9KS5jYXRjaChwKTt0''@;'; put 'put ''cnl7ZS5ob29rcyYmKHU9ZS5ob29rcy5wcmVwcm9jZXNzKHUpKTt2YXIgZD1hKHUsZSkseD0oZS53YWxrVG9rZW5zJiZ0LndhbGtUb2tlbnMoZCxlLndhbGtUb2tlbnMpLGkoZCxlKSk7cmV0dXJuIGUuaG9va3M/ZS5ob29rcy5wb3N0cHJvY2Vzcyh4KTp4fWNhdGNoKGgpe3JldHVybiBwKGgp''@;'; put 'put ''fX19ZnVuY3Rpb24gRWUoYSxpLHQpe3JldHVybiBmdW5jdGlvbih1KXt2YXIgZTtpZih1Lm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5jb20vbWFya2VkanMvbWFya2VkLiIsYSlyZXR1cm4gZT0iPHA+QW4gZXJyb3Igb2NjdXJyZWQ6PC9wPjxwcmU+''@;'; put 'put ''Iit5KHUubWVzc2FnZSsiIiwhMCkrIjwvcHJlPiIsaT9Qcm9taXNlLnJlc29sdmUoZSk6dD92b2lkIHQobnVsbCxlKTplO2lmKGkpcmV0dXJuIFByb21pc2UucmVqZWN0KHUpO2lmKCF0KXRocm93IHU7dCh1KX19ST1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtPYmplY3QuZGVmaW5lUHJvcGVy''@;'; put 'put ''dHkodGhpcyxWLHt2YWx1ZTpFZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHEse3ZhbHVlOkNlfSksdGhpcy5kZWZhdWx0cz17YXN5bmM6ITEsYmFzZVVybDpudWxsLGJyZWFrczohMSxleHRlbnNpb25zOm51bGwsZ2ZtOiEwLGhlYWRlcklkczohMCxoZWFkZXJQcmVmaXg6IiIsaGln''@;'; put 'put ''aGxpZ2h0Om51bGwsaG9va3M6bnVsbCxsYW5nUHJlZml4OiJsYW5ndWFnZS0iLG1hbmdsZTohMCxwZWRhbnRpYzohMSxyZW5kZXJlcjpudWxsLHNhbml0aXplOiExLHNhbml0aXplcjpudWxsLHNpbGVudDohMSxzbWFydHlwYW50czohMSx0b2tlbml6ZXI6bnVsbCx3YWxrVG9rZW5zOm51bGws''@;'; put 'put ''eGh0bWw6ITF9LHRoaXMub3B0aW9ucz10aGlzLnNldE9wdGlvbnMsdGhpcy5wYXJzZT1HKHRoaXMscSlbcV0oUy5sZXgsVC5wYXJzZSksdGhpcy5wYXJzZUlubGluZT1HKHRoaXMscSlbcV0oUy5sZXhJbmxpbmUsVC5wYXJzZUlubGluZSksdGhpcy5QYXJzZXI9VCx0aGlzLnBhcnNlcj1ULnBh''@;'; put 'put ''cnNlLHRoaXMuUmVuZGVyZXI9Wix0aGlzLlRleHRSZW5kZXJlcj1OLHRoaXMuTGV4ZXI9Uyx0aGlzLmxleGVyPVMubGV4LHRoaXMuVG9rZW5pemVyPWosdGhpcy5TbHVnZ2VyPVgsdGhpcy5Ib29rcz1PLHRoaXMudXNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgaT1hLnByb3RvdHlwZTty''@;'; put 'put ''ZXR1cm4gaS53YWxrVG9rZW5zPWZ1bmN0aW9uKHQsdSl7Zm9yKHZhciBlLHI9dGhpcyxuPVtdLHM9VSh0KTshKGU9cygpKS5kb25lOykhZnVuY3Rpb24oKXt2YXIgcD1lLnZhbHVlO3N3aXRjaChuPW4uY29uY2F0KHUuY2FsbChyLHApKSxwLnR5cGUpe2Nhc2UidGFibGUiOmZvcih2YXIgZz1V''@;'; put 'put ''KHAuaGVhZGVyKTshKEQ9ZygpKS5kb25lOyl7dmFyIEQ9RC52YWx1ZTtuPW4uY29uY2F0KHIud2Fsa1Rva2VucyhELnRva2Vucyx1KSl9Zm9yKHZhciBvLEY9VShwLnJvd3MpOyEobz1GKCkpLmRvbmU7KWZvcih2YXIgZD1VKG8udmFsdWUpOyEoeD1kKCkpLmRvbmU7KXt2YXIgeD14LnZhbHVl''@;'; put 'put ''O249bi5jb25jYXQoci53YWxrVG9rZW5zKHgudG9rZW5zLHUpKX1icmVhaztjYXNlImxpc3QiOm49bi5jb25jYXQoci53YWxrVG9rZW5zKHAuaXRlbXMsdSkpO2JyZWFrO2RlZmF1bHQ6ci5kZWZhdWx0cy5leHRlbnNpb25zJiZyLmRlZmF1bHRzLmV4dGVuc2lvbnMuY2hpbGRUb2tlbnMmJnIu''@;'; put 'put ''ZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1twLnR5cGVdP3IuZGVmYXVsdHMuZXh0ZW5zaW9ucy5jaGlsZFRva2Vuc1twLnR5cGVdLmZvckVhY2goZnVuY3Rpb24oaCl7bj1uLmNvbmNhdChyLndhbGtUb2tlbnMocFtoXSx1KSl9KTpwLnRva2VucyYmKG49bi5jb25jYXQoci53YWxr''@;'; put 'put ''VG9rZW5zKHAudG9rZW5zLHUpKSl9fSgpO3JldHVybiBufSxpLnVzZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLHU9dGhpcy5kZWZhdWx0cy5leHRlbnNpb25zfHx7cmVuZGVyZXJzOnt9LGNoaWxkVG9rZW5zOnt9fSxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248''@;'; put 'put ''ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgcCxnPXYoe30scyk7aWYoZy5hc3luYz10LmRlZmF1bHRzLmFzeW5jfHxnLmFzeW5jfHwhMSxzLmV4dGVuc2lvbnMmJihzLmV4dGVuc2lvbnMuZm9yRWFjaChmdW5jdGlvbihsKXtpZighbC5u''@;'; put 'put ''YW1lKXRocm93IG5ldyBFcnJvcigiZXh0ZW5zaW9uIG5hbWUgcmVxdWlyZWQiKTt2YXIgaztpZihsLnJlbmRlcmVyJiYodS5yZW5kZXJlcnNbbC5uYW1lXT0oaz11LnJlbmRlcmVyc1tsLm5hbWVdKT9mdW5jdGlvbigpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLHc9bmV3IEFycmF5KGIp''@;'; put 'put ''LEE9MDtBPGI7QSsrKXdbQV09YXJndW1lbnRzW0FdO3ZhciBCPWwucmVuZGVyZXIuYXBwbHkodGhpcyx3KTtyZXR1cm4hMT09PUI/ay5hcHBseSh0aGlzLHcpOkJ9OmwucmVuZGVyZXIpLGwudG9rZW5pemVyKXtpZighbC5sZXZlbHx8ImJsb2NrIiE9PWwubGV2ZWwmJiJpbmxpbmUiIT09bC5s''@;'; put 'put ''ZXZlbCl0aHJvdyBuZXcgRXJyb3IoImV4dGVuc2lvbiBsZXZlbCBtdXN0IGJlICdibG9jaycgb3IgJ2lubGluZSciKTt1W2wubGV2ZWxdP3VbbC5sZXZlbF0udW5zaGlmdChsLnRva2VuaXplcik6dVtsLmxldmVsXT1bbC50b2tlbml6ZXJdLGwuc3RhcnQmJigiYmxvY2siPT09bC5sZXZlbD91''@;'; put 'put ''LnN0YXJ0QmxvY2s/dS5zdGFydEJsb2NrLnB1c2gobC5zdGFydCk6dS5zdGFydEJsb2NrPVtsLnN0YXJ0XToiaW5saW5lIj09PWwubGV2ZWwmJih1LnN0YXJ0SW5saW5lP3Uuc3RhcnRJbmxpbmUucHVzaChsLnN0YXJ0KTp1LnN0YXJ0SW5saW5lPVtsLnN0YXJ0XSkpfWwuY2hpbGRUb2tlbnMm''@;'; put 'put ''Jih1LmNoaWxkVG9rZW5zW2wubmFtZV09bC5jaGlsZFRva2Vucyl9KSxnLmV4dGVuc2lvbnM9dSkscy5yZW5kZXJlcil7dmFyIEQsbz10LmRlZmF1bHRzLnJlbmRlcmVyfHxuZXcgWih0LmRlZmF1bHRzKTtmb3IoRCBpbiBzLnJlbmRlcmVyKSFmdW5jdGlvbihsKXt2YXIgaz1vW2xdO29bbF09''@;'; put 'put ''ZnVuY3Rpb24oKXtmb3IodmFyIGI9YXJndW1lbnRzLmxlbmd0aCx3PW5ldyBBcnJheShiKSxBPTA7QTxiO0ErKyl3W0FdPWFyZ3VtZW50c1tBXTt2YXIgQj1zLnJlbmRlcmVyW2xdLmFwcGx5KG8sdyk7cmV0dXJuITE9PT1CP2suYXBwbHkobyx3KTpCfX0oRCk7Zy5yZW5kZXJlcj1vfWlmKHMu''@;'; put 'put ''dG9rZW5pemVyKXt2YXIgRixkPXQuZGVmYXVsdHMudG9rZW5pemVyfHxuZXcgaih0LmRlZmF1bHRzKTtmb3IoRiBpbiBzLnRva2VuaXplcikhZnVuY3Rpb24obCl7dmFyIGs9ZFtsXTtkW2xdPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPWFyZ3VtZW50cy5sZW5ndGgsdz1uZXcgQXJyYXkoYiksQT0w''@;'; put 'put ''O0E8YjtBKyspd1tBXT1hcmd1bWVudHNbQV07dmFyIEI9cy50b2tlbml6ZXJbbF0uYXBwbHkoZCx3KTtyZXR1cm4hMT09PUI/ay5hcHBseShkLHcpOkJ9fShGKTtnLnRva2VuaXplcj1kfWlmKHMuaG9va3Mpe3ZhciB4LGg9dC5kZWZhdWx0cy5ob29rc3x8bmV3IE87Zm9yKHggaW4gcy5ob29r''@;'; put 'put ''cykhZnVuY3Rpb24obCl7dmFyIGs9aFtsXTtoW2xdPU8ucGFzc1Rocm91Z2hIb29rcy5oYXMobCk/ZnVuY3Rpb24oYil7cmV0dXJuIHQuZGVmYXVsdHMuYXN5bmM/UHJvbWlzZS5yZXNvbHZlKHMuaG9va3NbbF0uY2FsbChoLGIpKS50aGVuKGZ1bmN0aW9uKHcpe3JldHVybiBrLmNhbGwoaCx3''@;'; put 'put ''KX0pOihiPXMuaG9va3NbbF0uY2FsbChoLGIpLGsuY2FsbChoLGIpKX06ZnVuY3Rpb24oKXtmb3IodmFyIGI9YXJndW1lbnRzLmxlbmd0aCx3PW5ldyBBcnJheShiKSxBPTA7QTxiO0ErKyl3W0FdPWFyZ3VtZW50c1tBXTt2YXIgQj1zLmhvb2tzW2xdLmFwcGx5KGgsdyk7cmV0dXJuITE9PT1C''@;'; put 'put ''P2suYXBwbHkoaCx3KTpCfX0oeCk7Zy5ob29rcz1ofXMud2Fsa1Rva2VucyYmKHA9dC5kZWZhdWx0cy53YWxrVG9rZW5zLGcud2Fsa1Rva2Vucz1mdW5jdGlvbihsKXt2YXIgaz1bXTtyZXR1cm4gay5wdXNoKHMud2Fsa1Rva2Vucy5jYWxsKHRoaXMsbCkpLHA/ay5jb25jYXQocC5jYWxsKHRo''@;'; put 'put ''aXMsbCkpOmt9KSx0LmRlZmF1bHRzPXYoe30sdC5kZWZhdWx0cyxnKX0pLHRoaXN9LGkuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWZhdWx0cz12KHt9LHRoaXMuZGVmYXVsdHMsdCksdGhpc30sYX0oKTt2YXIgUj1uZXcgSShDLmRlZmF1bHRzKTtmdW5jdGlvbiBtKGEs''@;'; put 'put ''aSx0KXtyZXR1cm4gUi5wYXJzZShhLGksdCl9bS5vcHRpb25zPW0uc2V0T3B0aW9ucz1mdW5jdGlvbihhKXtyZXR1cm4gUi5zZXRPcHRpb25zKGEpLFcobS5kZWZhdWx0cz1SLmRlZmF1bHRzKSxtfSxtLmdldERlZmF1bHRzPVEsbS5kZWZhdWx0cz1DLmRlZmF1bHRzLG0udXNlPWZ1bmN0aW9u''@;'; put 'put ''KCl7cmV0dXJuIFIudXNlLmFwcGx5KFIsYXJndW1lbnRzKSxXKG0uZGVmYXVsdHM9Ui5kZWZhdWx0cyksbX0sbS53YWxrVG9rZW5zPWZ1bmN0aW9uKGEsaSl7cmV0dXJuIFIud2Fsa1Rva2VucyhhLGkpfSxtLnBhcnNlSW5saW5lPVIucGFyc2VJbmxpbmUsbS5QYXJzZXI9VCxtLnBhcnNlcj1U''@;'; put 'put ''LnBhcnNlLG0uUmVuZGVyZXI9WixtLlRleHRSZW5kZXJlcj1OLG0uTGV4ZXI9UyxtLmxleGVyPVMubGV4LG0uVG9rZW5pemVyPWosbS5TbHVnZ2VyPVgsbS5Ib29rcz1PO3ZhciBtZT0obS5wYXJzZT1tKS5vcHRpb25zLHhlPW0uc2V0T3B0aW9ucyxiZT1tLnVzZSx3ZT1tLndhbGtUb2tlbnMs''@;'; put 'put ''QmU9bS5wYXJzZUlubGluZSx5ZT1tLHZlPVQucGFyc2UsX2U9Uy5sZXg7Qy5Ib29rcz1PLEMuTGV4ZXI9UyxDLk1hcmtlZD1JLEMuUGFyc2VyPVQsQy5SZW5kZXJlcj1aLEMuU2x1Z2dlcj1YLEMuVGV4dFJlbmRlcmVyPU4sQy5Ub2tlbml6ZXI9aixDLmdldERlZmF1bHRzPVEsQy5sZXhlcj1f''@;'; put 'put ''ZSxDLm1hcmtlZD1tLEMub3B0aW9ucz1tZSxDLnBhcnNlPXllLEMucGFyc2VJbmxpbmU9QmUsQy5wYXJzZXI9dmUsQy5zZXRPcHRpb25zPXhlLEMudXNlPWJlLEMud2Fsa1Rva2Vucz13ZX0pOw=='';'; 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.6e6839fb8669c118-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 ''LyohCiAqIENvcHlyaWdodCAoYykgSEFORFNPTkNPREUgc3AuIHogby4gby4KICoKICogSEFORFNPTlRBQkxFIGlzIGEgc29mdHdhcmUgZGlzdHJpYnV0ZWQgYnkgSEFORFNPTkNPREUgc3AuIHogby4gby4sIGEgUG9saXNoIGNvcnBvcmF0aW9uIGJhc2VkIGluCiAqIEdkeW5pYSwgUG9sYW5k''@;'; put 'put ''LCBhdCBBbGVqYSBad3ljaWVzdHdhIDk2LTk4LCByZWdpc3RlcmVkIGJ5IHRoZSBEaXN0cmljdCBDb3VydCBpbiBHZGFuc2sgdW5kZXIgbnVtYmVyCiAqIDUzODY1MSwgRVUgdGF4IElEIG51bWJlcjogUEw1ODYyMjk0MDAyLCBzaGFyZSBjYXBpdGFsOiBQTE4gNjIsODAwLjAwLgogKgogKiBU''@;'; put 'put ''aGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBhcHBsaWNhYmxlIGNvcHlyaWdodCBsYXdzLCBpbmNsdWRpbmcgaW50ZXJuYXRpb25hbCB0cmVhdGllcywgYW5kIGR1YWwtCiAqIGxpY2Vuc2VkIC0gZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91ciB1c2UgZm9yIGNvbW1lcmNpYWwgcHVycG9z''@;'; put 'put ''ZXMsIG1lYW5pbmcgaW50ZW5kZWQgZm9yIG9yCiAqIHJlc3VsdGluZyBpbiBjb21tZXJjaWFsIGFkdmFudGFnZSBvciBtb25ldGFyeSBjb21wZW5zYXRpb24sIG9yIG5vdC4KICoKICogSWYgeW91ciB1c2UgaXMgc3RyaWN0bHkgcGVyc29uYWwgb3Igc29sZWx5IGZvciBldmFsdWF0aW9uIHB1''@;'; put 'put ''cnBvc2VzLCBtZWFuaW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZwogKiB0aGUgc3VpdGFiaWxpdHksIHBlcmZvcm1hbmNlLCBhbmQgdXNlZnVsbmVzcyBvZiB0aGlzIHNvZnR3YXJlIG91dHNpZGUgdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsCiAqIHlvdSBhZ3JlZSB0byBiZSBi''@;'; put 'put ''b3VuZCBieSB0aGUgdGVybXMgaW5jbHVkZWQgaW4gdGhlICJoYW5kc29udGFibGUtbm9uLWNvbW1lcmNpYWwtbGljZW5zZS5wZGYiIGZpbGUuCiAqCiAqIFlvdXIgdXNlIG9mIHRoaXMgc29mdHdhcmUgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgaW5j''@;'; put 'put ''bHVkZWQgaW4gYW4gYXBwbGljYWJsZQogKiBsaWNlbnNlIGFncmVlbWVudC4KICoKICogSW4gYW55IGNhc2UsIHlvdSBtdXN0IG5vdCBtYWtlIGFueSBzdWNoIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGFzIHRvIGRldmVsb3Agc29mdHdhcmUgd2hpY2ggbWF5IGJlCiAqIGNvbnNpZGVyZWQgY29t''@;'; put 'put ''cGV0aXRpdmUgd2l0aCB0aGlzIHNvZnR3YXJlLgogKgogKiBVTkxFU1MgRVhQUkVTU0xZIEFHUkVFRCBPVEhFUldJU0UsIEhBTkRTT05DT0RFIFBST1ZJREVTIFRISVMgU09GVFdBUkUgT04gQU4gIkFTIElTIgogKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg''@;'; put 'put ''QU5ZIEtJTkQsIEFORCBJTiBOTyBFVkVOVCBBTkQgVU5ERVIgTk8KICogTEVHQUwgVEhFT1JZLCBTSEFMTCBIQU5EU09OQ09ERSBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIERJUkVDVCwKICogSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SIENP''@;'; put 'put ''TlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkgQ0hBUkFDVEVSIEFSSVNJTkcgRlJPTQogKiBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSElTIFNPRlRXQVJFLgogKgogKiBWZXJzaW9uOiAxNC40LjAKICogUmVsZWFzZSBkYXRlOiAxMS8wNi8yMDI0IChidWlsdCBhdCAxMS8wNi8yMDI0IDA5''@;'; put 'put ''OjUxOjU3KQogKi8uaGFuZHNvbnRhYmxlIC50YWJsZSB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSB0ZHtib3JkZXItdG9wOm5vbmV9LmhhbmRzb250YWJsZSB0cntiYWNrZ3JvdW5kOiNmZmZ9LmhhbmRzb250YWJsZSB0ZHtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXR9LmhhbmRzb250YWJsZSAu''@;'; put 'put ''dGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlIC50YWJsZSBjYXB0aW9uK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRkLC5oYW5kc29udGFibGUgLnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUgLnRhYmxl''@;'; put 'put ''IGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRkLC5oYW5kc29udGFibGUgLnRhYmxlIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoLC5oYW5kc29udGFibGUgLnRhYmxlIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MXB4IHNv''@;'; put 'put ''bGlkICNDQ0NDQ0N9LmhhbmRzb250YWJsZSAudGFibGUtYm9yZGVyZWR7Ym9yZGVyOjA7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlfS5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRoLC5oYW5kc29udGFibGUgLnRhYmxlLWJvcmRlcmVkIHRke2JvcmRlci1sZWZ0Om5vbmV9LmhhbmRz''@;'; put 'put ''b250YWJsZSAudGFibGUtYm9yZGVyZWQgdGg6Zmlyc3QtY2hpbGQsLmhhbmRzb250YWJsZSAudGFibGUtYm9yZGVyZWQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNDQ0NDQ0N9LmhhbmRzb250YWJsZSAudGFibGU+dGJvZHk+dHI+dGQsLmhhbmRzb250YWJsZSAudGFi''@;'; put 'put ''bGU+dGJvZHk+dHI+dGgsLmhhbmRzb250YWJsZSAudGFibGU+dGZvb3Q+dHI+dGQsLmhhbmRzb250YWJsZSAudGFibGU+dGZvb3Q+dHI+dGgsLmhhbmRzb250YWJsZSAudGFibGU+dGhlYWQ+dHI+dGQsLmhhbmRzb250YWJsZSAudGFibGU+dGhlYWQ+dHI+dGh7bGluZS1oZWlnaHQ6MjFweDtw''@;'; put 'put ''YWRkaW5nOjB9LmNvbC1sZy0xLmhhbmRzb250YWJsZSwuY29sLWxnLTEwLmhhbmRzb250YWJsZSwuY29sLWxnLTExLmhhbmRzb250YWJsZSwuY29sLWxnLTEyLmhhbmRzb250YWJsZSwuY29sLWxnLTIuaGFuZHNvbnRhYmxlLC5jb2wtbGctMy5oYW5kc29udGFibGUsLmNvbC1sZy00LmhhbmRz''@;'; put 'put ''b250YWJsZSwuY29sLWxnLTUuaGFuZHNvbnRhYmxlLC5jb2wtbGctNi5oYW5kc29udGFibGUsLmNvbC1sZy03LmhhbmRzb250YWJsZSwuY29sLWxnLTguaGFuZHNvbnRhYmxlLC5jb2wtbGctOS5oYW5kc29udGFibGUsLmNvbC1tZC0xLmhhbmRzb250YWJsZSwuY29sLW1kLTEwLmhhbmRzb250''@;'; put 'put ''YWJsZSwuY29sLW1kLTExLmhhbmRzb250YWJsZSwuY29sLW1kLTEyLmhhbmRzb250YWJsZSwuY29sLW1kLTIuaGFuZHNvbnRhYmxlLC5jb2wtbWQtMy5oYW5kc29udGFibGUsLmNvbC1tZC00LmhhbmRzb250YWJsZSwuY29sLW1kLTUuaGFuZHNvbnRhYmxlLC5jb2wtbWQtNi5oYW5kc29udGFi''@;'; put 'put ''bGUsLmNvbC1tZC03LmhhbmRzb250YWJsZSwuY29sLW1kLTguaGFuZHNvbnRhYmxlLC5jb2wtbWQtOS5oYW5kc29udGFibGUgLmNvbC1zbS0xLmhhbmRzb250YWJsZSwuY29sLXNtLTEwLmhhbmRzb250YWJsZSwuY29sLXNtLTExLmhhbmRzb250YWJsZSwuY29sLXNtLTEyLmhhbmRzb250YWJs''@;'; put 'put ''ZSwuY29sLXNtLTIuaGFuZHNvbnRhYmxlLC5jb2wtc20tMy5oYW5kc29udGFibGUsLmNvbC1zbS00LmhhbmRzb250YWJsZSwuY29sLXNtLTUuaGFuZHNvbnRhYmxlLC5jb2wtc20tNi5oYW5kc29udGFibGUsLmNvbC1zbS03LmhhbmRzb250YWJsZSwuY29sLXNtLTguaGFuZHNvbnRhYmxlLC5j''@;'; put 'put ''b2wtc20tOS5oYW5kc29udGFibGUgLmNvbC14cy0xLmhhbmRzb250YWJsZSwuY29sLXhzLTEwLmhhbmRzb250YWJsZSwuY29sLXhzLTExLmhhbmRzb250YWJsZSwuY29sLXhzLTEyLmhhbmRzb250YWJsZSwuY29sLXhzLTIuaGFuZHNvbnRhYmxlLC5jb2wteHMtMy5oYW5kc29udGFibGUsLmNv''@;'; put 'put ''bC14cy00LmhhbmRzb250YWJsZSwuY29sLXhzLTUuaGFuZHNvbnRhYmxlLC5jb2wteHMtNi5oYW5kc29udGFibGUsLmNvbC14cy03LmhhbmRzb250YWJsZSwuY29sLXhzLTguaGFuZHNvbnRhYmxlLC5jb2wteHMtOS5oYW5kc29udGFibGV7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDow''@;'; put 'put ''fS5oYW5kc29udGFibGUgLnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLW9mLXR5cGUoMm4pe2JhY2tncm91bmQtY29sb3I6I2ZmZn0uaGFuZHNvbnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmhpZGV7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLnJlbGF0aXZl''@;'; put 'put ''e3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLnd0SGlkZXJ7d2lkdGg6MH0uaGFuZHNvbnRhYmxlIC53dFNwcmVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjA7aGVpZ2h0OmF1dG99LmhhbmRzb250YWJsZSB0YWJsZSwuaGFuZHNvbnRhYmxlIHRib2R5LC5oYW5kc29udGFi''@;'; put 'put ''bGUgdGhlYWQsLmhhbmRzb250YWJsZSB0ZCwuaGFuZHNvbnRhYmxlIHRoLC5oYW5kc29udGFibGUgaW5wdXQsLmhhbmRzb250YWJsZSB0ZXh0YXJlYSwuaGFuZHNvbnRhYmxlIGRpdntib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJv''@;'; put 'put ''eC1zaXppbmc6Y29udGVudC1ib3h9LmhhbmRzb250YWJsZSBpbnB1dCwuaGFuZHNvbnRhYmxlIHRleHRhcmVhe21pbi1oZWlnaHQ6aW5pdGlhbH0uaGFuZHNvbnRhYmxlIHRhYmxlLmh0Q29yZXtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyLXNwYWNpbmc6MDttYXJnaW46MDtib3Jk''@;'; put 'put ''ZXItd2lkdGg6MDt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MDtvdXRsaW5lLXdpZHRoOjA7Y3Vyc29yOmRlZmF1bHQ7bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDpub25lfS5oYW5kc29udGFibGUgY29sLC5oYW5kc29udGFibGUgY29sLnJvd0hlYWRlcnt3aWR0aDo1MHB4fS5oYW5kc29u''@;'; put 'put ''dGFibGUgdGgsLmhhbmRzb250YWJsZSB0ZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYztoZWlnaHQ6MjJweDtlbXB0eS1jZWxsczpzaG93O2xpbmUtaGVpZ2h0OjIx''@;'; put 'put ''cHg7cGFkZGluZzowIDRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7dmVydGljYWwtYWxpZ246dG9wO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOm5vbmU7b3V0bGluZS13aWR0aDowO3doaXRlLXNwYWNlOnByZS13cmFwfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGgsW2Rpcj1ydGxdLmhhbmRz''@;'; put 'put ''b250YWJsZSB0ZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY31bZGly''@;'; put 'put ''PXJ0bF0uaGFuZHNvbnRhYmxlIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9LmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZCwuaGFuZHNvbnRhYmxlIHRkOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9''@;'; put 'put ''W2Rpcj1ydGxdLmhhbmRzb250YWJsZSB0aDpmaXJzdC1jaGlsZCxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRkOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjfS5oYW5kc29udGFibGUgLmh0X2Nsb25lX3RvcCB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWxlZnQtd2lk''@;'; put 'put ''dGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRfY2xvbmVfdG9wIHRoOm50aC1jaGlsZCgyKXtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlLmh0Um93SGVhZGVycyB0aGVh''@;'; put 'put ''ZCB0ciB0aDpudGgtY2hpbGQoMil7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2N9W2Rpcj1ydGxdLmhhbmRzb250YWJsZS5odFJvd0hlYWRlcnMgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDIpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY30uaGFuZHNvbnRhYmxlIHRyOmZpcnN0LWNoaWxk''@;'; put 'put ''IHRoLC5oYW5kc29udGFibGUgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjY30uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGUgdGJvZHkgdHIgdGgsLmh0X21hc3Rlcjpub3QoLmlu''@;'; put 'put ''bmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRfY2xvbmVfdG9wKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY31bZGlyPXJ0bF0uaHRfbWFzdGVy''@;'; put 'put ''Om5vdCguaW5uZXJCb3JkZXJJbmxpbmVTdGFydCk6bm90KC5lbXB0eUNvbHVtbnMpfi5oYW5kc29udGFibGUgdGJvZHkgdHIgdGgsW2Rpcj1ydGxdLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVySW5saW5lU3RhcnQpOm5vdCguZW1wdHlDb2x1bW5zKX4uaGFuZHNvbnRhYmxlOm5vdCguaHRf''@;'; put 'put ''Y2xvbmVfdG9wKSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY30uaHRfbWFzdGVyOm5vdCguaW5uZXJCb3JkZXJUb3ApOm5vdCguaW5uZXJCb3JkZXJCb3R0b20pIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmh0''@;'; put 'put ''X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKSB0aGVhZCB0ci5sYXN0Q2hpbGQg''@;'; put 'put ''dGgsLmh0X21hc3Rlcjpub3QoLmlubmVyQm9yZGVyVG9wKTpub3QoLmlubmVyQm9yZGVyQm90dG9tKX4uaGFuZHNvbnRhYmxlIHRoZWFkIHRyLmxhc3RDaGlsZCB0aHtib3JkZXItYm90dG9tLXdpZHRoOjB9LmhhbmRzb250YWJsZSB0aHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Y29sb3I6''@;'; put 'put ''IzIyMjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5oYW5kc29udGFibGUgdGhlYWQgdGh7cGFkZGluZzowfS5oYW5kc29udGFibGUgdGguYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2NjY30uaGFuZHNvbnRhYmxlIHRoZWFkIHRoIC5yZWxh''@;'; put 'put ''dGl2ZXtwYWRkaW5nOjJweCA0cHh9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoxLjF9LmhhbmRzb250YWJsZSAud3RCb3JkZXJ7cG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjB9LmhhbmRzb250YWJsZSAud3RCb3JkZXIu''@;'; put 'put ''aGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAud3RCb3JkZXIuY3VycmVudHt6LWluZGV4OjEwfS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmFyZWF7ei1pbmRleDo4fS5oYW5kc29udGFibGUgLnd0Qm9yZGVyLmZpbGx7ei1pbmRleDo2fS5oYW5kc29udGFibGUg''@;'; put 'put ''Lnd0Qm9yZGVyLmNvcm5lcntmb250LXNpemU6MDtjdXJzb3I6Y3Jvc3NoYWlyfS5odF9jbG9uZV9tYXN0ZXJ7ei1pbmRleDoxMDB9Lmh0X2Nsb25lX2lubGluZV9zdGFydHt6LWluZGV4OjEyMH0uaHRfY2xvbmVfYm90dG9te3otaW5kZXg6MTMwfS5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0''@;'; put 'put ''YXJ0X2Nvcm5lcnt6LWluZGV4OjE1MH0uaHRfY2xvbmVfdG9we3otaW5kZXg6MTYwfS5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lcnt6LWluZGV4OjE4MH0uaGFuZHNvbnRhYmxlIGNvbC5oaWRkZW57d2lkdGg6MCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSB0ci5oaWRkZW4sLmhh''@;'; put 'put ''bmRzb250YWJsZSB0ci5oaWRkZW4gdGQsLmhhbmRzb250YWJsZSB0ci5oaWRkZW4gdGh7ZGlzcGxheTpub25lfS5odF9tYXN0ZXIsLmh0X2Nsb25lX2lubGluZV9zdGFydCwuaHRfY2xvbmVfdG9wLC5odF9jbG9uZV9ib3R0b217b3ZlcmZsb3c6aGlkZGVufS5odF9tYXN0ZXIgLnd0SG9sZGVy''@;'; put 'put ''e292ZXJmbG93OmF1dG99LmhhbmRzb250YWJsZSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZT50aGVhZCwuaGFuZHNvbnRhYmxlIC5odF9tYXN0ZXIgdGFibGUuaHRDb3JlPnRib2R5PnRyPnRoLC5oYW5kc29udGFibGUgLmh0X2Nsb25lX2lubGluZV9zdGFydCB0YWJsZS5odENvcmU+dGhlYWR7''@;'; put 'put ''dmlzaWJpbGl0eTpoaWRkZW59Lmh0X2Nsb25lX3RvcCAud3RIb2xkZXIsLmh0X2Nsb25lX2lubGluZV9zdGFydCAud3RIb2xkZXIsLmh0X2Nsb25lX2JvdHRvbSAud3RIb2xkZXJ7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGV7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjtmb250LWZh''@;'; put 'put ''bWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sT3h5Z2VuLFVidW50dSxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojMzczNzM3fS5oYW5kc29udGFibGUgYXtjb2xv''@;'; put 'put ''cjojMTA0YWNjfS5oYW5kc29udGFibGUuaHRBdXRvU2l6ZXt2aXNpYmlsaXR5OmhpZGRlbjtsZWZ0Oi05OTAwMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotOTkwMDBweH0uaGFuZHNvbnRhYmxlIHRkLmh0SW52YWxpZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmJlYmEhaW1wb3J0YW50fS5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuaHROb1dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS5oYW5kc29udGFibGUgdGQuaW52aXNpYmxlU2VsZWN0aW9uLC5oYW5kc29udGFibGUgdGguaW52aXNpYmxlU2VsZWN0aW9ue291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlIHRkLmludmlzaWJsZVNlbGVjdGlvbjo6c2Vs''@;'; put 'put ''ZWN0aW9uLC5oYW5kc29udGFibGUgdGguaW52aXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb257YmFja2dyb3VuZDojZmZmMH0uaG90LWRpc3BsYXktbGljZW5zZS1pbmZve2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxPeHlnZW4s''@;'; put 'put ''VWJ1bnR1LEhlbHZldGljYSBOZXVlLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMzNzM3Mzc7cGFkZGluZzo1cHggMCAzcHg7dGV4dC1hbGlnbjpsZWZ0fS5ob3QtZGlzcGxheS1saWNlbnNlLWluZm8gYXtjb2xvcjojMTA0YWNjO2ZvbnQt''@;'; put 'put ''c2l6ZToxMHB4fS5oYW5kc29udGFibGUgLmh0Rm9jdXNDYXRjaGVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6LTE7b3BhY2l0eTowO2JvcmRlcjowO21hcmdpbjowO3BhZGRpbmc6MDt3aWR0aDowO2hlaWdodDowfS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXJ7cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7dG9wOjA7Y3Vyc29yOmNvbC1yZXNpemU7ei1pbmRleDoyMTA7d2lkdGg6NXB4O2hlaWdodDoyNXB4fS5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2N1cnNvcjpyb3ctcmVzaXplO3otaW5kZXg6MjEwO2hlaWdodDo1''@;'; put 'put ''cHg7d2lkdGg6NTBweH0uaGFuZHNvbnRhYmxlIC5tYW51YWxDb2x1bW5SZXNpemVyOmhvdmVyLC5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXIuYWN0aXZlLC5oYW5kc29udGFibGUgLm1hbnVhbFJvd1Jlc2l6ZXI6aG92ZXIsLmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXpl''@;'; put 'put ''ci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMzRhOWRifS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDp1bnNldDt0b3A6MDtiYWNrZ3JvdW5kLWNvbG9yOiMzNGE5ZGI7ZGlzcGxheTpub25lO3dpZHRoOjA7Ym9yZGVyLXJp''@;'; put 'put ''Z2h0OjFweCBkYXNoZWQgIzc3Nztib3JkZXItbGVmdDpub25lO21hcmdpbi1sZWZ0OjVweDttYXJnaW4tcmlnaHQ6dW5zZXR9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAubWFudWFsQ29sdW1uUmVzaXplckd1aWRle2xlZnQ6dW5zZXQ7Ym9yZGVyLWxlZnQ6MXB4IGRhc2hlZCAjNzc3O2JvcmRl''@;'; put 'put ''ci1yaWdodDpub25lO21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWxlZnQ6dW5zZXR9LmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDtiYWNrZ3JvdW5kLWNvbG9yOiMzNGE5ZGI7ZGlzcGxheTpub25lO2hlaWdodDow''@;'; put 'put ''O2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCAjNzc3O21hcmdpbi10b3A6NXB4fS5oYW5kc29udGFibGUgLm1hbnVhbENvbHVtblJlc2l6ZXJHdWlkZS5hY3RpdmUsLmhhbmRzb250YWJsZSAubWFudWFsUm93UmVzaXplckd1aWRlLmFjdGl2ZXtkaXNwbGF5OmJsb2NrO3otaW5kZXg6MjA5fS5o''@;'; put 'put ''YW5kc29udGFibGUgLmNvbHVtblNvcnRpbmd7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuY29sdW1uU29ydGluZy5zb3J0QWN0aW9uOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1''@;'; put 'put ''bW5Tb3J0aW5nOmJlZm9yZXt0b3A6NTAlO21hcmdpbi10b3A6LTZweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotOXB4O2xlZnQ6dW5zZXQ7Y29udGVudDoiIjtoZWlnaHQ6MTBweDt3aWR0aDo1cHg7YmFja2dyb3VuZC1zaXplOmNv''@;'; put 'put ''bnRhaW47YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb24teDpyaWdodH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YmVmb3Jle3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDowO2xlZnQ6LTlweDty''@;'; put 'put ''aWdodDp1bnNldDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6bGVmdH0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuYXNjZW5kaW5nOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FB''@;'; put 'put ''QUJRQUFBQW9DQU1BQUFESjd5cnBBQUFBS2xCTVZFVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0U4NklBQUFBRFhSU1RsTUFCQkVtUkdwcmxKVzcyZTc3dFRrVEt3QUFBRk5KUkVGVWVBSHR6amtTZ0NBVUJOSFBnc295OTcrdWxHWFJx''@;'; put 'put ''SkU1TCt4a3hvWXQyVWRzTGI1YnFGSU56K2FMdXVMbjVySXUyUmtPM2ZacFdFTmltTmdpdzZpQllSVFBNTEpqR0Z4UVoxaHh4Yi94QkkxcUM4azM5Q2RLQUFBQUFFbEZUa1N1UW1DQyl9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLmRlc2NlbmRpbmc6YmVmb3Jl''@;'; put 'put ''e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBb0NBTUFBQURKN3lycEFBQUFLbEJNVkVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLRTg2SUFBQUFE''@;'; put 'put ''WFJTVGxNQUJCRW1SR3BybEpXNzJlNzd0VGtUS3dBQUFGSkpSRUZVZUFIdHpqa1NnQ0FRUk5GbVFZVVo3bjlkS1V2cnUwVG12UEFuM2JyMFFmZ2RaNXh4NngrclFuMjNHcVRZbnExRkRjbnV6WklPMldtZWRWcUlSVnhnR0tFeWpOZ1lSaktHa1oxaEZJWjNJNzBMeU0wVnRVOEFBQUFBU1VWT1JL''@;'; put 'put ''NUNZSUk9KX0uaHRHaG9zdFRhYmxlIC5odENvcmUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzpub3QoLmluZGljYXRvckRpc2FibGVkKTpiZWZvcmV7Y29udGVudDoiKiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDoyMHB4fS5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMiwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMywuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNCwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNiwuaGFu''@;'; put 'put ''ZHNvbnRhYmxlIHRkLmFyZWEtN3twb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0xOmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTM6YmVmb3JlLC5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS00OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS03OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7Ym90dG9tOi0x''@;'; put 'put ''MDAlIFwJO2JhY2tncm91bmQ6IzAwNWVmZn1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKXsuaGFuZHNvbnRhYmxlIHRkLmFyZWE6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS0xOmJlZm9yZSwuaGFuZHNv''@;'; put 'put ''bnRhYmxlIHRkLmFyZWEtMjpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTM6YmVmb3JlLC5oYW5kc29udGFibGUgdGQuYXJlYS00OmJlZm9yZSwuaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmUsLmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3JlLC5oYW5kc29udGFibGUgdGQu''@;'; put 'put ''YXJlYS03OmJlZm9yZXtib3R0b206LTEwMCV9fS5oYW5kc29udGFibGUgdGQuYXJlYTpiZWZvcmV7b3BhY2l0eTouMX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMTpiZWZvcmV7b3BhY2l0eTouMn0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtMjpiZWZvcmV7b3BhY2l0eTouMjd9LmhhbmRzb250YWJs''@;'; put 'put ''ZSB0ZC5hcmVhLTM6YmVmb3Jle29wYWNpdHk6LjM1fS5oYW5kc29udGFibGUgdGQuYXJlYS00OmJlZm9yZXtvcGFjaXR5Oi40MX0uaGFuZHNvbnRhYmxlIHRkLmFyZWEtNTpiZWZvcmV7b3BhY2l0eTouNDd9LmhhbmRzb250YWJsZSB0ZC5hcmVhLTY6YmVmb3Jle29wYWNpdHk6LjU0fS5oYW5k''@;'; put 'put ''c29udGFibGUgdGQuYXJlYS03OmJlZm9yZXtvcGFjaXR5Oi41OH0uaGFuZHNvbnRhYmxlIHRib2R5IHRoLmN1cnJlbnQsLmhhbmRzb250YWJsZSB0aGVhZCB0aC5jdXJyZW50e2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMnB4ICM0Yjg5ZmZ9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9faGln''@;'; put 'put ''aGxpZ2h0LC5oYW5kc29udGFibGUgdGhlYWQgdGguaHRfX2hpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNkY2RjZGN9LmhhbmRzb250YWJsZSB0Ym9keSB0aC5odF9fYWN0aXZlX2hpZ2hsaWdodCwuaGFuZHNvbnRhYmxlIHRoZWFkIHRoLmh0X19hY3RpdmVfaGlnaGxpZ2h0e2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6IzhlYjBlNztjb2xvcjojMDAwfS5oYW5kc29udGFibGVJbnB1dHtib3JkZXI6bm9uZTtvdXRsaW5lLXdpZHRoOjA7bWFyZ2luOjA7cGFkZGluZzoxcHggNXB4IDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtsaW5lLWhlaWdodDoyMXB4O2ZvbnQtc2l6ZTppbmhlcml0O2JveC1zaGFk''@;'; put 'put ''b3c6MCAwIDAgMnB4ICM1MjkyZjcgaW5zZXQ7cmVzaXplOm5vbmU7ZGlzcGxheTpibG9jaztjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmhhbmRzb250YWJsZUlucHV0OmZvY3Vze291dGxpbmU6bm9uZX0uaGFuZHNvbnRhYmxlSW5wdXRIb2xkZXJ7''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5odFNlbGVjdEVkaXRvcnstd2Via2l0LWFwcGVhcmFuY2U6bWVudWxpc3QtYnV0dG9uIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDphdXRvfS5odFNlbGVjdEVkaXRvcjpmb2N1c3tvdXRsaW5lOm5vbmV9LmhhbmRzb250''@;'; put 'put ''YWJsZSAuaHREaW1tZWR7Y29sb3I6Izc3N30uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnV7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDphZnRlcntjb250ZW50OiJcMjViNiI7Y29sb3I6Izc3Nztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHg7Zm9udC1zaXpl''@;'; put 'put ''OjlweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFN1Ym1lbnUgOmFmdGVye2NvbnRlbnQ6IiJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRTdWJtZW51IDpiZWZvcmV7Y29udGVudDoiXDI1YzAiO2NvbG9yOiM3Nzc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1cHg7Zm9udC1zaXplOjlw''@;'; put 'put ''eH0uaGFuZHNvbnRhYmxlIC5odExlZnR7dGV4dC1hbGlnbjpsZWZ0fS5oYW5kc29udGFibGUgLmh0Q2VudGVye3RleHQtYWxpZ246Y2VudGVyfS5oYW5kc29udGFibGUgLmh0UmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uaGFuZHNvbnRhYmxlIC5odEp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5''@;'; put 'put ''fS5oYW5kc29udGFibGUgLmh0VG9we3ZlcnRpY2FsLWFsaWduOnRvcH0uaGFuZHNvbnRhYmxlIC5odE1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRCb3R0b217dmVydGljYWwtYWxpZ246Ym90dG9tfS5oYW5kc29udGFibGUgLmh0UGxhY2Vob2xkZXJ7Y29s''@;'; put 'put ''b3I6Izk5OX0uaGFuZHNvbnRhYmxlLmxpc3Rib3h7bWFyZ2luOjB9LmhhbmRzb250YWJsZS5saXN0Ym94IC5odF9tYXN0ZXIgdGFibGV7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZTtiYWNrZ3JvdW5kOiNmZmZ9LmhhbmRzb250YWJsZS5saXN0Ym94IHRo''@;'; put 'put ''LC5oYW5kc29udGFibGUubGlzdGJveCB0cjpmaXJzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6bGFzdC1jaGlsZCB0aCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6Zmlyc3QtY2hpbGQgdGQsLmhhbmRzb250YWJsZS5saXN0Ym94IHRke2JvcmRlci1jb2xvcjp0cmFuc3Bh''@;'; put 'put ''cmVudCFpbXBvcnRhbnR9LmhhbmRzb250YWJsZS5saXN0Ym94IHRoLC5oYW5kc29udGFibGUubGlzdGJveCB0ZHt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdGQuaHREaW1tZWR7Y3Vyc29yOmRlZmF1bHQ7Y29sb3I6aW5o''@;'; put 'put ''ZXJpdDtmb250LXN0eWxlOmluaGVyaXR9LmhhbmRzb250YWJsZS5saXN0Ym94IC53dEJvcmRlcnt2aXNpYmlsaXR5OmhpZGRlbn0uaGFuZHNvbnRhYmxlLmxpc3Rib3ggdHIgdGQuY3VycmVudCwuaGFuZHNvbnRhYmxlLmxpc3Rib3ggdHI6aG92ZXIgdGR7YmFja2dyb3VuZDojZWVlfS5odF9l''@;'; put 'put ''ZGl0b3JfaGlkZGVue3otaW5kZXg6LTF9Lmh0X2VkaXRvcl92aXNpYmxle3otaW5kZXg6MjAwfS5oYW5kc29udGFibGUgdGQuaHRTZWFyY2hSZXN1bHR7YmFja2dyb3VuZDojZmNlZGQ5O2NvbG9yOiM1ODM3MDd9LmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3J7cG9zaXRpb246''@;'; put 'put ''YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtsZWZ0OnVuc2V0O3JpZ2h0OjVweDtib3JkZXI6MXB4IHNvbGlkICNBNkE2QTY7bGluZS1oZWlnaHQ6OHB4O2NvbG9yOiMyMjI7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxMHB4O3dpZHRoOjEwcHg7aGVp''@;'; put 'put ''Z2h0OjEwcHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNoYWRvdzowIDAgMCAzcHggI2VlZTtiYWNrZ3JvdW5kOiNlZWU7dGV4dC1hbGlnbjpjZW50ZXJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuY29sbGFwc2libGVJbmRpY2F0b3J7cmlnaHQ6dW5zZXQ7bGVmdDo1cHh9LmhhbmRzb250YWJsZS5t''@;'; put 'put ''b2JpbGUsLmhhbmRzb250YWJsZS5tb2JpbGUgLnd0SG9sZGVyey13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApOy13ZWJraXQtb3ZlcmZsb3ct''@;'; put 'put ''c2Nyb2xsaW5nOnRvdWNofS5oYW5kc29udGFibGUubW9iaWxlIC5oYW5kc29udGFibGVJbnB1dDpmb2N1c3tib3gtc2hhZG93OjAgMCAwIDJweCAjNTI5MmY3IGluc2V0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhhbmRsZSwuaGFuZHNvbnRh''@;'; put 'put ''YmxlIC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSwuaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUsLmhhbmRzb250YWJsZSAuYm90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWF7bGVmdDotMTAwMDBweDtyaWdodDp1bnNldDt0b3A6LTEwMDAwcHg7ei1pbmRleDo5OTk5''@;'; put 'put ''fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLnRvcFNlbGVjdGlvbkhhbmRsZSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC50b3BTZWxlY3Rpb25IYW5kbGUtSGl0QXJlYSxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5ib3R0b21TZWxlY3Rpb25IYW5kbGUsW2Rpcj1ydGxdLmhhbmRzb250YWJsZSAu''@;'; put 'put ''Ym90dG9tU2VsZWN0aW9uSGFuZGxlLUhpdEFyZWF7cmlnaHQ6LTEwMDAwcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmhpZGUtdHdlZW57YW5pbWF0aW9uOm9wYWNpdHktaGlkZSAuM3M7YW5pbWF0aW9uLWZpbGwtbW9kZTpmb3J3YXJkczstd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6''@;'; put 'put ''Zm9yd2FyZHN9LmhhbmRzb250YWJsZS5zaG93LXR3ZWVue2FuaW1hdGlvbjpvcGFjaXR5LXNob3cgLjNzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS8qIQogKiBQaWthZGF5CiAqIENvcHlyaWdodCDCqSAyMDE0IERh''@;'; put 'put ''dmlkIEJ1c2hlbGwgfCBCU0QgJiBNSVQgbGljZW5zZSB8IGh0dHBzOi8vZGJ1c2hlbGwuY29tLwogKi8ucGlrYS1zaW5nbGV7ei1pbmRleDo5OTk5O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2Nj''@;'; put 'put ''O2JvcmRlci1ib3R0b20tY29sb3I6I2JiYjtmb250LWZhbWlseTpIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0ucGlrYS1zaW5nbGU6YmVmb3JlLC5waWthLXNpbmdsZTphZnRlcntjb250ZW50OiIgIjtkaXNwbGF5OnRhYmxlfS5waWthLXNpbmdsZTphZnRlcntj''@;'; put 'put ''bGVhcjpib3RofS5waWthLXNpbmdsZS5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5waWthLXNpbmdsZS5pcy1ib3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2hhZG93OjAgNXB4IDE1cHggLTVweCAjMDAwMDAwODB9LnBpa2EtbGVuZGFye2Zsb2F0OmxlZnQ7d2lkdGg6MjQwcHg7bWFyZ2lu''@;'; put 'put ''OjhweH0ucGlrYS10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcn0ucGlrYS1sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTk7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3BhZGRpbmc6NXB4IDNweDtmb250LXNp''@;'; put 'put ''emU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnBpa2EtdGl0bGUgc2VsZWN0e2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5ODttYXJnaW46MDtsZWZ0OjA7dG9wOjVweDtvcGFjaXR5OjB9LnBp''@;'; put 'put ''a2EtcHJldiwucGlrYS1uZXh0e2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7b3V0bGluZTpub25lO2JvcmRlcjowO3BhZGRpbmc6MDt3aWR0aDoyMHB4O2hlaWdodDozMHB4O3RleHQtaW5kZW50OjIwcHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93''@;'; put 'put ''OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjc1JSA3NSU7b3BhY2l0eTouNX0ucGlrYS1wcmV2OmhvdmVyLC5waWthLW5leHQ6aG92''@;'; put 'put ''ZXJ7b3BhY2l0eToxfS5waWthLXByZXYsLmlzLXJ0bCAucGlrYS1uZXh0e2Zsb2F0OmxlZnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFlQ0FZQUFBQXNFajVyQUFBQVVrbEVRVlI0MnUzVk1Rb0FJQkFE''@;'; put 'put ''UWY4UGdqK09EOWhHMkN0T05KQjJ5bVFrS2UwSGJ3QVAweHVjRGlRV0FSSVRJREVCRW5NZ01ROFM4K0FxQklsNmtLZ0hpWHFRcUFlSmVwQm8vejM4Si9VMHVBSGxhQmtCbDlJNEd3QUFBQUJKUlU1RXJrSmdnZz09KX0ucGlrYS1uZXh0LC5pcy1ydGwgLnBpa2EtcHJldntmbG9hdDpyaWdodDti''@;'; put 'put ''YWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQWVDQVlBQUFBc0VqNXJBQUFBVTBsRVFWUjQydTNWT3dvQU1BZ0UwZHdmQW5OalUyNmJZa0JDRkd3ZmlMOVZWV29PK0JKNEdmM2d0c0VLS29GQk5UQ29DQVlWd2FB''@;'; put 'put ''aUdOUUdNVUhNa2pHYmdqazJtSU9OdVhvMG5DOFhuQ2YxSlhnQXJWSVpBUWg1VEtZQUFBQUFTVVZPUks1Q1lJST0pfS5waWthLXByZXYuaXMtZGlzYWJsZWQsLnBpa2EtbmV4dC5pcy1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi4yfS5waWthLXNlbGVjdHtkaXNwbGF5OmlubGlu''@;'; put 'put ''ZS1ibG9ja30ucGlrYS10YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO2JvcmRlcjowfS5waWthLXRhYmxlIHRoLC5waWthLXRhYmxlIHRke3dpZHRoOjE0LjI4NTcxNDI4NTclO3BhZGRpbmc6MH0ucGlrYS10YWJsZSB0aHtjb2xvcjoj''@;'; put 'put ''OTk5O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjI1cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5waWthLWJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRs''@;'; put 'put ''aW5lOm5vbmU7Ym9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTtwYWRkaW5nOjVweDtjb2xvcjojNjY2O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE1cHg7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDojZjVmNWY1O2hlaWdodDppbml0aWFsfS5waWthLXdlZWt7Zm9udC1zaXpl''@;'; put 'put ''OjExcHg7Y29sb3I6Izk5OX0uaXMtdG9kYXkgLnBpa2EtYnV0dG9ue2NvbG9yOiMzYWY7Zm9udC13ZWlnaHQ6NzAwfS5pcy1zZWxlY3RlZCAucGlrYS1idXR0b24sLmhhcy1ldmVudCAucGlrYS1idXR0b257Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDA7YmFja2dyb3VuZDojM2FmO2JveC1z''@;'; put 'put ''aGFkb3c6aW5zZXQgMCAxcHggM3B4ICMxNzhmZTU7Ym9yZGVyLXJhZGl1czozcHh9Lmhhcy1ldmVudCAucGlrYS1idXR0b257YmFja2dyb3VuZDojMDA1ZGE5O2JveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4ICMwMDc2Yzl9LmlzLWRpc2FibGVkIC5waWthLWJ1dHRvbiwuaXMtaW5yYW5nZSAu''@;'; put 'put ''cGlrYS1idXR0b257YmFja2dyb3VuZDojZDVlOWY3fS5pcy1zdGFydHJhbmdlIC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2JhY2tncm91bmQ6IzZjYjMxZDtib3gtc2hhZG93Om5vbmU7Ym9yZGVyLXJhZGl1czozcHh9LmlzLWVuZHJhbmdlIC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2JhY2tn''@;'; put 'put ''cm91bmQ6IzNhZjtib3gtc2hhZG93Om5vbmU7Ym9yZGVyLXJhZGl1czozcHh9LmlzLWRpc2FibGVkIC5waWthLWJ1dHRvbntwb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjpkZWZhdWx0O2NvbG9yOiM5OTk7b3BhY2l0eTouM30uaXMtb3V0c2lkZS1jdXJyZW50LW1vbnRoIC5waWthLWJ1dHRv''@;'; put 'put ''bntjb2xvcjojOTk5O29wYWNpdHk6LjN9LmlzLXNlbGVjdGlvbi1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjpkZWZhdWx0fS5waWthLWJ1dHRvbjpob3ZlciwucGlrYS1yb3cucGljay13aG9sZS13ZWVrOmhvdmVyIC5waWthLWJ1dHRvbntjb2xvcjojZmZmO2JhY2tncm91''@;'; put 'put ''bmQ6I2ZmODAwMDtib3gtc2hhZG93Om5vbmU7Ym9yZGVyLXJhZGl1czozcHh9LnBpa2EtdGFibGUgYWJicntib3JkZXItYm90dG9tOm5vbmU7Y3Vyc29yOmhlbHB9LmhhbmRzb250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tmbG9hdDpyaWdodDtmb250LXNpemU6MTBweDtjb2xvcjojYmJi''@;'; put 'put ''O2N1cnNvcjpkZWZhdWx0O3dpZHRoOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9W2Rpcj1ydGxdLmhhbmRzb250YWJsZSAuaHRBdXRvY29tcGxldGVBcnJvd3tmbG9hdDpsZWZ0fS5oYW5kc29udGFibGUgdGQuaHRJbnZhbGlkIC5odEF1dG9jb21wbGV0ZUFycm93e2NvbG9yOiM1NTV9LmhhbmRz''@;'; put 'put ''b250YWJsZSB0ZC5odEludmFsaWQgLmh0QXV0b2NvbXBsZXRlQXJyb3c6aG92ZXJ7Y29sb3I6IzFhMWExYX0uaGFuZHNvbnRhYmxlIHRkIC5odEF1dG9jb21wbGV0ZUFycm93OmhvdmVye2NvbG9yOiM3Nzd9LmhhbmRzb250YWJsZSB0ZC5hcmVhIC5odEF1dG9jb21wbGV0ZUFycm93e2NvbG9y''@;'; put 'put ''OiNkM2QzZDN9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXQubm9WYWx1ZXtvcGFjaXR5Oi41fS5oYW5kc29udGFibGUgLmh0Q2hlY2tib3hSZW5kZXJlckxhYmVs''@;'; put 'put ''e2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJMYWJlbC5mdWxsV2lkdGh7d2lkdGg6MTAwJX0uaGFuZHNvbnRhYmxlIC5odENvbW1lbnRDZWxs''@;'; put 'put ''e3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgLmh0Q29tbWVudENlbGw6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2xlZnQ6dW5zZXQ7Ym9yZGVyLWxlZnQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDpub25lO2JvcmRl''@;'; put 'put ''ci10b3A6NnB4IHNvbGlkIGJsYWNrfVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0Q29tbWVudENlbGw6YWZ0ZXJ7bGVmdDowO3JpZ2h0OnVuc2V0O2JvcmRlci1yaWdodDo2cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6bm9uZX0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21t''@;'; put 'put ''ZW50c3tkaXNwbGF5Om5vbmU7ei1pbmRleDoxMDU5O3Bvc2l0aW9uOmFic29sdXRlfS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRUZXh0QXJlYXtib3gtc2hhZG93OiMwMDAwMDAxZSAwIDFweCAzcHgsIzAwMDAwMDNkIDAgMXB4IDJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9y''@;'; put 'put ''ZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkICNjY2M7Ym9yZGVyLXJpZ2h0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO3dpZHRoOjIxNXB4O2hlaWdodDo5MHB4O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6NXB4O291dGxpbmU6MHB4IWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFu''@;'; put 'put ''Y2U6bm9uZX1bZGlyPXJ0bF0uaHRDb21tZW50c0NvbnRhaW5lciAuaHRDb21tZW50VGV4dEFyZWF7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjY2NjO2JvcmRlci1sZWZ0Om5vbmV9Lmh0Q29tbWVudHNDb250YWluZXIgLmh0Q29tbWVudFRleHRBcmVhOmZvY3Vze2JveC1zaGFkb3c6IzAwMDAw''@;'; put 'put ''MDFlIDAgMXB4IDNweCwjMDAwMDAwM2QgMCAxcHggMnB4LGluc2V0IDAgMCAwIDFweCAjNTI5MmY3O2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjNTI5MmY3O2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXS5odENvbW1lbnRzQ29udGFpbmVyIC5odENvbW1lbnRUZXh0QXJlYTpmb2N1c3tib3Jk''@;'; put 'put ''ZXItcmlnaHQ6M3B4IHNvbGlkICM1MjkyZjc7Ym9yZGVyLWxlZnQ6bm9uZX0vKiEKICogSGFuZHNvbnRhYmxlIENvbnRleHRNZW51CiAqLy5odENvbnRleHRNZW51Om5vdCguaHRHaG9zdFRhYmxlKXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDYwfS5odENvbnRl''@;'; put 'put ''eHRNZW51IC5odF9jbG9uZV90b3AsLmh0Q29udGV4dE1lbnUgLmh0X2Nsb25lX2JvdHRvbSwuaHRDb250ZXh0TWVudSAuaHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odENvbnRleHRNZW51IC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciwuaHRDb250ZXh0TWVudSAuaHRfY2xvbmVf''@;'; put 'put ''Ym90dG9tX2lubGluZV9zdGFydF9jb3JuZXJ7ZGlzcGxheTpub25lfS5odENvbnRleHRNZW51IC5odF9tYXN0ZXIgdGFibGUuaHRDb3Jle2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItdG9wLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXdpZHRoOjJweDtib3Jk''@;'; put 'put ''ZXItbGVmdC13aWR0aDoxcHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjJweH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIHRhYmxlLmh0Q29yZXtib3JkZXItcmlnaHQtd2lkdGg6MXB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweH0uaHRDb250ZXh0TWVudS5oYW5kc29udGFibGU6Zm9j''@;'; put 'put ''dXN7b3V0bGluZTpub25lfS5odENvbnRleHRNZW51IC53dEJvcmRlcnt2aXNpYmlsaXR5OmhpZGRlbn0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6''@;'; put 'put ''aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmln''@;'; put 'put ''aHQtd2lkdGg6MH1bZGlyPXJ0bF0uaHRDb250ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDowfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFs''@;'; put 'put ''O2NvbG9yOiMzMjMyMzJ9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuY3VycmVudHtiYWNrZ3JvdW5kOiNmM2YzZjN9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHRTZXBhcmF0b3J7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNjtoZWlnaHQ6MDtwYWRkaW5n''@;'; put 'put ''OjA7Y3Vyc29yOmRlZmF1bHR9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZHtjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0fS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM5OTk7''@;'; put 'put ''Y3Vyc29yOmRlZmF1bHR9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIuaHRIaWRkZW57ZGlzcGxheTpub25lfS5odENvbnRleHRNZW51IHRhYmxlIHRib2R5IHRyIHRkIC5odEl0ZW1XcmFwcGVye21hcmdpbi1sZWZ0OjEwcHg7bWFyZ2luLXJpZ2h0OjZweH1bZGlyPXJ0bF0uaHRDb250''@;'; put 'put ''ZXh0TWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tcmlnaHQ6MTBweDttYXJnaW4tbGVmdDo2cHh9Lmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7bWFyZ2luLXRvcDotMnB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6''@;'; put 'put ''NHB4O3JpZ2h0OjB9W2Rpcj1ydGxdLmh0Q29udGV4dE1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2VsZWN0ZWR7cmlnaHQ6NHB4O2xlZnQ6MH0uaHRDb250ZXh0TWVudSAuaHRfbWFzdGVyIC53dEhvbGRlcntvdmVyZmxvdzpoaWRkZW59dGV4dGFyZWEuSGFuZHNvbnRhYmxlQ29w''@;'; put 'put ''eVBhc3Rle3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7cmlnaHQ6MTAwJSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuO29wYWNpdHk6MDtvdXRsaW5lOjAgbm9uZSFpbXBvcnRhbnR9LyohCiAqIEhhbmRzb250YWJsZSBEcm9wZG93bk1lbnUKICovLmhhbmRzb250''@;'; put 'put ''YWJsZSAuY2hhbmdlVHlwZXtiYWNrZ3JvdW5kOiNlZWU7Ym9yZGVyLXJhZGl1czoycHg7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2NvbG9yOiNiYmI7Zm9udC1zaXplOjlweDtsaW5lLWhlaWdodDo5cHg7cGFkZGluZzoycHg7bWFyZ2luOjNweCAxcHggMCA1cHg7ZmxvYXQ6cmlnaHR9W2Rpcj1y''@;'; put 'put ''dGxdLmhhbmRzb250YWJsZSAuY2hhbmdlVHlwZXtmbG9hdDpsZWZ0fS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6YmVmb3Jle2NvbnRlbnQ6IlwyNWJjICAifS5oYW5kc29udGFibGUgLmNoYW5nZVR5cGU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjNzc3O2NvbG9yOiM3Nzc7Y3Vyc29yOnBv''@;'; put 'put ''aW50ZXJ9Lmh0RHJvcGRvd25NZW51Om5vdCguaHRHaG9zdFRhYmxlKXtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDYwfS5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wLC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfYm90dG9tLC5odERyb3Bkb3duTWVudSAu''@;'; put 'put ''aHRfY2xvbmVfaW5saW5lX3N0YXJ0LC5odERyb3Bkb3duTWVudSAuaHRfY2xvbmVfdG9wX2lubGluZV9zdGFydF9jb3JuZXIsLmh0RHJvcGRvd25NZW51IC5odF9jbG9uZV9ib3R0b21faW5saW5lX3N0YXJ0X2Nvcm5lcntkaXNwbGF5Om5vbmV9Lmh0RHJvcGRvd25NZW51IHRhYmxlLmh0Q29y''@;'; put 'put ''ZXtib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoycHh9W2Rpcj1ydGxdLmh0RHJvcGRvd25NZW51IHRhYmxlLmh0Q29y''@;'; put 'put ''ZXtib3JkZXItcmlnaHQtd2lkdGg6MXB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweH0uaHREcm9wZG93bk1lbnUuaGFuZHNvbnRhYmxlOmZvY3Vze291dGxpbmU6bm9uZX0uaHREcm9wZG93bk1lbnUgLnd0Qm9yZGVye3Zpc2liaWxpdHk6aGlkZGVufS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9k''@;'; put 'put ''eSB0ciB0ZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzo0cHggNnB4IDA7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZDpm''@;'; put 'put ''aXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci1sZWZ0LXdpZHRoOjB9W2Rpcj1ydGxdLmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0LXdpZHRo''@;'; put 'put ''OjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjB9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGltbWVke2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMzMjMyMzJ9Lmh0RHJvcGRvd25NZW51IHRhYmxlIHRib2R5IHRyIHRkLmN1cnJlbnR7YmFja2dyb3VuZDojZTllOWU5fS5odERy''@;'; put 'put ''b3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odFNlcGFyYXRvcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2O2hlaWdodDowO3BhZGRpbmc6MDtjdXJzb3I6ZGVmYXVsdH0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaXNhYmxlZHtjb2xvcjojOTk5fS5odERy''@;'; put 'put ''b3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZC5odERpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0fS5odERyb3Bkb3duTWVudTpub3QoLmh0R2hvc3RUYWJsZSkgdGFibGUgdGJvZHkgdHIuaHRIaWRkZW57ZGlzcGxheTpub25lfS5odERy''@;'; put 'put ''b3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tbGVmdDoxMHB4O21hcmdpbi1yaWdodDoxMHB4fVtkaXI9cnRsXS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCAuaHRJdGVtV3JhcHBlcnttYXJnaW4tcmlnaHQ6MTBweDttYXJnaW4tbGVm''@;'; put 'put ''dDoxMHB4fS5odERyb3Bkb3duTWVudSB0YWJsZSB0Ym9keSB0ciB0ZCBkaXYgc3Bhbi5zZWxlY3RlZHttYXJnaW4tdG9wOi0ycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo0cHg7cmlnaHQ6MH1bZGlyPXJ0bF0uaHREcm9wZG93bk1lbnUgdGFibGUgdGJvZHkgdHIgdGQgZGl2IHNwYW4uc2Vs''@;'; put 'put ''ZWN0ZWR7cmlnaHQ6NHB4O2xlZnQ6MH0uaHREcm9wZG93bk1lbnUgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6aGlkZGVufS8qIQogKiBIYW5kc29udGFibGUgRmlsdGVycwogKi8uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnU6bm90KC5odEdob3N0VGFibGUpe2Rpc3BsYXk6bm9uZTtw''@;'; put 'put ''b3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwNzB9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV90b3AsLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV9ib3R0b20sLmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV9pbmxpbmVfc3RhcnQsLmh0Rmls''@;'; put 'put ''dGVyc0NvbmRpdGlvbnNNZW51IC5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciwuaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X2Nsb25lX2JvdHRvbV9pbmxpbmVfc3RhcnRfY29ybmVye2Rpc3BsYXk6bm9uZX0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUuaHRDb3Jl''@;'; put 'put ''e2JvcmRlcjoxcHggc29saWQgI2JiYjtib3JkZXItYm90dG9tLXdpZHRoOjJweDtib3JkZXItcmlnaHQtd2lkdGg6MnB4fS5odEZpbHRlcnNDb25kaXRpb25zTWVudSAud3RCb3JkZXJ7dmlzaWJpbGl0eTpoaWRkZW59Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRk''@;'; put 'put ''e2JhY2tncm91bmQ6I2ZmZjtib3JkZXItd2lkdGg6MDtwYWRkaW5nOjRweCA2cHggMDtjdXJzb3I6cG9pbnRlcjtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRk''@;'; put 'put ''OmZpcnN0LWNoaWxke2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MH1bZGlyPXJ0bF0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVy''@;'; put 'put ''LWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MH0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuaHREaW1tZWR7Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6IzMyMzIzMn0uaHRGaWx0ZXJzQ29uZGl0aW9uc01lbnUgdGFibGUgdGJvZHkgdHIgdGQuY3Vy''@;'; put 'put ''cmVudHtiYWNrZ3JvdW5kOiNlOWU5ZTl9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0U2VwYXJhdG9ye2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTY7aGVpZ2h0OjA7cGFkZGluZzowfS5odEZpbHRlcnNDb25kaXRpb25zTWVudSB0YWJsZSB0Ym9keSB0''@;'; put 'put ''ciB0ZC5odERpc2FibGVke2NvbG9yOiM5OTl9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkLmh0RGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5''@;'; put 'put ''IHRyIHRkIC5odEl0ZW1XcmFwcGVye21hcmdpbi1sZWZ0OjEwcHg7bWFyZ2luLXJpZ2h0OjEwcHh9Lmh0RmlsdGVyc0NvbmRpdGlvbnNNZW51IHRhYmxlIHRib2R5IHRyIHRkIGRpdiBzcGFuLnNlbGVjdGVke21hcmdpbi10b3A6LTJweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjRweH0uaHRG''@;'; put 'put ''aWx0ZXJzQ29uZGl0aW9uc01lbnUgLmh0X21hc3RlciAud3RIb2xkZXJ7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgLmh0TWVudUZpbHRlcmluZ3tib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgI2NjYztoZWlnaHQ6MTM1cHg7b3ZlcmZsb3c6aGlkZGVufS5oYW5kc29udGFibGUgLmh0''@;'; put 'put ''X21hc3RlciB0YWJsZSB0ZC5odEN1c3RvbU1lbnVSZW5kZXJlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y3Vyc29yOmF1dG99LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudUxhYmVse2ZvbnQtc2l6ZTouNzVlbX0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51QWN0aW9uQmFye3RleHQt''@;'; put 'put ''YWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjEwcHg7cGFkZGluZy1ib3R0b206M3B4fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24uYm9yZGVye2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjY2NjIWltcG9ydGFudH0uaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51Q29u''@;'; put 'put ''ZGl0aW9uIC5odFVJSW5wdXR7cGFkZGluZzowIDAgNXB4fS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVWYWx1ZXtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgI2NjYyFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudVZhbHVlIC5odFVJTXVsdGlwbGVTZWxlY3RTZWFy''@;'; put 'put ''Y2h7cGFkZGluZzowfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc01lbnVDb25kaXRpb24gLmh0VUlJbnB1dCBpbnB1dCwuaGFuZHNvbnRhYmxlIC5odEZpbHRlcnNNZW51VmFsdWUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCBpbnB1dHtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTou''@;'; put 'put ''NzVlbTtwYWRkaW5nOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0uaHRVSU11bHRpcGxlU2VsZWN0IC5odF9tYXN0ZXIgLnd0SG9sZGVye292ZXJmbG93LXk6c2Nyb2xsfS5oYW5kc29udGFibGUgLmh0RmlsdGVyc0FjdGl2ZSAuY2hhbmdlVHlwZXtib3JkZXI6MXB4IHNv''@;'; put 'put ''bGlkICM1MDkyNzI7Y29sb3I6IzE4ODA0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNkMmUwZDl9LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDoxMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3RBbGx7bWFyZ2luLXJpZ2h0OjA7''@;'; put 'put ''bWFyZ2luLWxlZnQ6MTBweH0uaGFuZHNvbnRhYmxlIC5odFVJQ2xlYXJBbGwsLmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdEFsbHtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIC5odFVJQ2xlYXJBbGwgYSwuaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0QWxsIGF7Zm9udC1zaXpl''@;'; put 'put ''Oi43NWVtfS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3Rpb25Db250cm9sc3t0ZXh0LWFsaWduOnJpZ2h0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3Rpb25Db250cm9sc3t0ZXh0LWFsaWduOmxlZnR9LmhhbmRzb250YWJsZSAuaHRDaGVja2JveFJlbmRlcmVySW5wdXR7bWFy''@;'; put 'put ''Z2luOjAgNXB4IDAgMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7aGVpZ2h0OjFlbX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odENoZWNrYm94UmVuZGVyZXJJbnB1dHttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjB9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0e3BhZGRpbmc6M3B4IDAg''@;'; put 'put ''N3B4O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dCBpbnB1dHtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkICNkMmQxZDF9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0SWNvbntwb3NpdGlvbjphYnNvbHV0ZX0uaGFu''@;'; put 'put ''ZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbntjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbiBpbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Y29sb3I6IzAwMDtjdXJzb3I6cG9pbnRlcjtmb250LWZh''@;'; put 'put ''bWlseTppbmhlcml0O2ZvbnQtc2l6ZTouNzVlbTtmb250LXdlaWdodDo3MDA7aGVpZ2h0OjE5cHg7bWluLXdpZHRoOjY0cHh9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0Lmh0VUlCdXR0b24gaW5wdXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNiOWI5Yjl9LmhhbmRzb250YWJsZSAuaHRVSUlucHV0''@;'; put 'put ''Lmh0VUlCdXR0b25PS3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDoxMHB4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0dG9uT0t7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MTBweH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlu''@;'; put 'put ''cHV0e2JhY2tncm91bmQtY29sb3I6IzBmOWQ1ODtib3JkZXItY29sb3I6IzE4ODA0ZTtjb2xvcjojZmZmfS5oYW5kc29udGFibGUgLmh0VUlJbnB1dC5odFVJQnV0dG9uT0sgaW5wdXQ6Zm9jdXMtdmlzaWJsZXtiYWNrZ3JvdW5kLWNvbG9yOiM5MmRkOGQ7Ym9yZGVyLWNvbG9yOiM3Y2I4Nzg7''@;'; put 'put ''Y29sb3I6IzAwMH0uaGFuZHNvbnRhYmxlIC5odFVJSW5wdXQuaHRVSUJ1dHRvbk9LIGlucHV0OmhvdmVye2JvcmRlci1jb2xvcjojMWE2ZjQ2fS5oYW5kc29udGFibGUgLmh0VUlTZWxlY3R7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbTo3cHg7cG9zaXRpb246cmVsYXRpdmV9LmhhbmRz''@;'; put 'put ''b250YWJsZSAuaHRVSVNlbGVjdENhcHRpb257YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlcjoxcHggc29saWQgI2QyZDFkMTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTouNzVlbTtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMjBweCAz''@;'; put 'put ''cHggMTBweDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW59LmhhbmRzb250YWJsZSAuaHRVSVNlbGVjdENhcHRpb246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4O2JvcmRlcjoxcHggc29saWQgI2I5YjliOX0uaGFuZHNvbnRh''@;'; put 'put ''YmxlIC5odFVJU2VsZWN0RHJvcGRvd246YWZ0ZXJ7Y29udGVudDoiXDI1YjIiO2ZvbnQtc2l6ZTo3cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTBweDt0b3A6MH0uaGFuZHNvbnRhYmxlIC5odFVJU2VsZWN0RHJvcGRvd246YmVmb3Jle2NvbnRlbnQ6IlwyNWJjIjtmb250LXNpemU6N3B4''@;'; put 'put ''O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEwcHg7dG9wOjhweH0uaGFuZHNvbnRhYmxlIC5odFVJTXVsdGlwbGVTZWxlY3QgLmhhbmRzb250YWJsZSAuaHRDb3Jle2JvcmRlcjpub25lfS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdCAuaGFuZHNvbnRhYmxlIC5odENvcmUgdGQ6''@;'; put 'put ''aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5oYW5kc29udGFibGUgLmh0VUlNdWx0aXBsZVNlbGVjdFNlYXJjaCBpbnB1dHtib3JkZXItcmFkaXVzOjJweDtib3JkZXI6MXB4IHNvbGlkICNkMmQxZDE7cGFkZGluZzozcHh9LmhhbmRzb250YWJsZSAuaHRVSVJhZGlve2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjVweDtoZWlnaHQ6MTAwJX1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIC5odFVJUmFkaW97bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6NXB4fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbzpsYXN0LWNoaWxke21hcmdpbi1y''@;'; put 'put ''aWdodDowfS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDouNWV4fVtkaXI9cnRsXS5oYW5kc29udGFibGUgLmh0VUlSYWRpbz5pbnB1dFt0eXBlPXJhZGlvXXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDouNWV4''@;'; put 'put ''fS5oYW5kc29udGFibGUgLmh0VUlSYWRpbyBsYWJlbHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhhbmRzb250YWJsZSAuaHRGaWx0ZXJzTWVudU9wZXJhdG9yc3twYWRkaW5nLWJvdHRvbTo1cHh9LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW57cG9zaXRpb246cmVsYXRpdmV9''@;'; put 'put ''LmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Db2x1bW46YWZ0ZXIsLmhhbmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbjpiZWZvcmV7Y29sb3I6I2JiYjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2ZvbnQtc2l6ZTo1cHQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9Lmhh''@;'; put 'put ''bmRzb250YWJsZSB0aC5hZnRlckhpZGRlbkNvbHVtbntwb3NpdGlvbjpyZWxhdGl2ZX0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlbkNvbHVtbjphZnRlcntyaWdodDoxcHg7Y29udGVudDoiXDI1YzAifVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuQ29sdW1uOmFm''@;'; put 'put ''dGVye3JpZ2h0OmluaXRpYWw7bGVmdDoxcHg7Y29udGVudDoiXDI1YjYifS5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Db2x1bW46YmVmb3Jle2xlZnQ6MXB4O2NvbnRlbnQ6IlwyNWI2In1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuQ29sdW1uOmJlZm9yZXtyaWdo''@;'; put 'put ''dDoxcHg7bGVmdDppbml0aWFsO2NvbnRlbnQ6IlwyNWMwIn0vKiEKICogSGFuZHNvbnRhYmxlIEhpZGRlblJvd3MKICovLmhhbmRzb250YWJsZSB0aC5iZWZvcmVIaWRkZW5Sb3c6YmVmb3JlLC5oYW5kc29udGFibGUgdGguYWZ0ZXJIaWRkZW5Sb3c6YWZ0ZXJ7Y29sb3I6I2JiYjtmb250LXNp''@;'; put 'put ''emU6NnB0O2xpbmUtaGVpZ2h0OjZwdDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjJweH0uaGFuZHNvbnRhYmxlIHRoLmJlZm9yZUhpZGRlblJvdywuaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93e3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUgdGguYmVmb3JlSGlkZGVuUm93''@;'; put 'put ''OmJlZm9yZXtjb250ZW50OiJcMjViMiI7Ym90dG9tOjJweH0uaGFuZHNvbnRhYmxlIHRoLmFmdGVySGlkZGVuUm93OmFmdGVye2NvbnRlbnQ6IlwyNWJjIjt0b3A6MnB4fS5oYW5kc29udGFibGUuaHRfX3NlbGVjdGlvbi0tcm93cyB0Ym9keSB0aC5iZWZvcmVIaWRkZW5Sb3cuaHRfX2hpZ2hs''@;'; put 'put ''aWdodDpiZWZvcmUsLmhhbmRzb250YWJsZS5odF9fc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmFmdGVySGlkZGVuUm93Lmh0X19oaWdobGlnaHQ6YWZ0ZXJ7Y29sb3I6I2VlZX0uaGFuZHNvbnRhYmxlIHRkLmFmdGVySGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvdywuaGFuZHNvbnRhYmxlIHRo''@;'; put 'put ''LmFmdGVySGlkZGVuUm93LmZpcnN0VmlzaWJsZVJvd3tib3JkZXItdG9wOjFweCBzb2xpZCAjQ0NDfS5odFJvd0hlYWRlcnMgLmh0X21hc3Rlci5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5odF9jbG9uZV90b3BfaW5saW5lX3N0YXJ0X2Nvcm5lciB0aDpudGgtY2hpbGQoMiksLmh0Um93SGVh''@;'; put 'put ''ZGVycyAuaHRfbWFzdGVyLmlubmVyQm9yZGVySW5saW5lU3RhcnR+Lmh0X2Nsb25lX2lubGluZV9zdGFydCB0ZDpmaXJzdC1vZi10eXBle2JvcmRlci1sZWZ0OjAgbm9uZX0uaGFuZHNvbnRhYmxlLmh0X19tYW51YWxDb2x1bW5Nb3ZlLmFmdGVyLXNlbGVjdGlvbi0tY29sdW1ucyB0aGVhZCB0''@;'; put 'put ''aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5oYW5kc29udGFibGUuaHRfX21hbnVhbENvbHVtbk1vdmUub24tbW92aW5nLS1jb2x1bW5zICosLmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgdGhlYWQgdGguaHRfX2hp''@;'; put 'put ''Z2hsaWdodHtjdXJzb3I6bW92ZTtjdXJzb3I6Z3JhYmJpbmd9LmhhbmRzb250YWJsZS5odF9fbWFudWFsQ29sdW1uTW92ZS5vbi1tb3ZpbmctLWNvbHVtbnMgLm1hbnVhbENvbHVtblJlc2l6ZXJ7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlk''@;'; put 'put ''ZWxpbmUsLmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWJhY2tsaWdodHtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MTAwJTtkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbENvbHVtbk1vdmUtLWd1aWRlbGluZXtiYWNrZ3JvdW5kOiM3NTc1NzU7d2lk''@;'; put 'put ''dGg6MnB4O3RvcDowO21hcmdpbi1pbmxpbmUtc3RhcnQ6LTFweDttYXJnaW4taW5saW5lLWVuZDowO3otaW5kZXg6MjA1fS5oYW5kc29udGFibGUgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1iYWNrbGlnaHR7YmFja2dyb3VuZDojMzQzNDM0O2JhY2tncm91bmQ6IzM0MzQzNDQwO2Rpc3BsYXk6''@;'; put 'put ''bm9uZTt6LWluZGV4OjIwNTtwb2ludGVyLWV2ZW50czpub25lfS5oYW5kc29udGFibGUub24tbW92aW5nLS1jb2x1bW5zLnNob3ctdWkgLmh0X19tYW51YWxDb2x1bW5Nb3ZlLS1ndWlkZWxpbmUsLmhhbmRzb250YWJsZS5vbi1tb3ZpbmctLWNvbHVtbnMgLmh0X19tYW51YWxDb2x1bW5Nb3Zl''@;'; put 'put ''LS1iYWNrbGlnaHR7ZGlzcGxheTpibG9ja30uaGFuZHNvbnRhYmxlIC53dEhpZGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5oYW5kc29udGFibGUuaHRfX21hbnVhbFJvd01vdmUuYWZ0ZXItc2VsZWN0aW9uLS1yb3dzIHRib2R5IHRoLmh0X19oaWdobGlnaHR7Y3Vyc29yOm1vdmU7Y3Vyc29yOmdy''@;'; put 'put ''YWJ9LmhhbmRzb250YWJsZS5odF9fbWFudWFsUm93TW92ZS5vbi1tb3ZpbmctLXJvd3MgKiwuaGFuZHNvbnRhYmxlLmh0X19tYW51YWxSb3dNb3ZlLm9uLW1vdmluZy0tcm93cyB0Ym9keSB0aC5odF9faGlnaGxpZ2h0e2N1cnNvcjptb3ZlO2N1cnNvcjpncmFiYmluZ30uaGFuZHNvbnRhYmxl''@;'; put 'put ''Lmh0X19tYW51YWxSb3dNb3ZlLm9uLW1vdmluZy0tcm93cyAubWFudWFsUm93UmVzaXplcntkaXNwbGF5Om5vbmV9LmhhbmRzb250YWJsZSAuaHRfX21hbnVhbFJvd01vdmUtLWd1aWRlbGluZSwuaGFuZHNvbnRhYmxlIC5odF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0e3Bvc2l0aW9uOmFi''@;'; put 'put ''c29sdXRlO3dpZHRoOjEwMCU7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgLmh0X19tYW51YWxSb3dNb3ZlLS1ndWlkZWxpbmV7YmFja2dyb3VuZDojNzU3NTc1O2hlaWdodDoycHg7bGVmdDowO21hcmdpbi10b3A6LTFweDt6LWluZGV4OjIwNX0uaGFuZHNvbnRhYmxlIC5odF9fbWFudWFs''@;'; put 'put ''Um93TW92ZS0tYmFja2xpZ2h0e2JhY2tncm91bmQ6IzM0MzQzNDtiYWNrZ3JvdW5kOiMzNDM0MzQ0MDtkaXNwbGF5Om5vbmU7ei1pbmRleDoyMDU7cG9pbnRlci1ldmVudHM6bm9uZX0uaGFuZHNvbnRhYmxlLm9uLW1vdmluZy0tcm93cy5zaG93LXVpIC5odF9fbWFudWFsUm93TW92ZS0tZ3Vp''@;'; put 'put ''ZGVsaW5lLC5oYW5kc29udGFibGUub24tbW92aW5nLS1yb3dzIC5odF9fbWFudWFsUm93TW92ZS0tYmFja2xpZ2h0e2Rpc3BsYXk6YmxvY2t9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF06bm90KFtjbGFzcyo9ZnVsbHlTZWxl''@;'; put 'put ''Y3RlZE1lcmdlZENlbGxdKTpiZWZvcmV7b3BhY2l0eTowfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC1tdWx0aXBsZV06YmVmb3Jle29wYWNpdHk6LjF9LmhhbmRzb250''@;'; put 'put ''YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTBdOmJlZm9yZXtvcGFjaXR5Oi4xfS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGln''@;'; put 'put ''aHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0xXTpiZWZvcmV7b3BhY2l0eTouMn0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENlbGwtMl06YmVmb3Jle29wYWNp''@;'; put 'put ''dHk6LjI3fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC0zXTpiZWZvcmV7b3BhY2l0eTouMzV9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFtyb3dzcGFuXVtjbGFzcyo9YXJl''@;'; put 'put ''YV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTRdOmJlZm9yZXtvcGFjaXR5Oi40MX0uaGFuZHNvbnRhYmxlIHRib2R5IHRkW3Jvd3NwYW5dW2NsYXNzKj1hcmVhXVtjbGFzcyo9aGlnaGxpZ2h0XVtjbGFzcyo9ZnVsbHlTZWxlY3RlZE1lcmdlZENl''@;'; put 'put ''bGwtNV06YmVmb3Jle29wYWNpdHk6LjQ3fS5oYW5kc29udGFibGUgdGJvZHkgdGRbcm93c3Bhbl1bY2xhc3MqPWFyZWFdW2NsYXNzKj1oaWdobGlnaHRdW2NsYXNzKj1mdWxseVNlbGVjdGVkTWVyZ2VkQ2VsbC02XTpiZWZvcmV7b3BhY2l0eTouNTR9LmhhbmRzb250YWJsZSB0Ym9keSB0ZFty''@;'; put 'put ''b3dzcGFuXVtjbGFzcyo9YXJlYV1bY2xhc3MqPWhpZ2hsaWdodF1bY2xhc3MqPWZ1bGx5U2VsZWN0ZWRNZXJnZWRDZWxsLTddOmJlZm9yZXtvcGFjaXR5Oi41OH0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXJ7dG9wOjUwJTttYXJnaW4tdG9wOi0ycHg7''@;'; put 'put ''cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTE1cHg7bGVmdDp1bnNldDtwYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctcmlnaHQ6dW5zZXQ7Zm9udC1zaXplOjhweDtoZWlnaHQ6OHB4O2xpbmUtaGVpZ2h0OjEuMTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfVtkaXI9cnRsXS5oYW5kc29udGFi''@;'; put 'put ''bGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZzphZnRlcntsZWZ0Oi0xNXB4O3JpZ2h0OnVuc2V0O3BhZGRpbmctcmlnaHQ6NXB4O3BhZGRpbmctbGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmc6YWZ0ZXJ7dGV4dC1kZWNvcmF0aW9uOm5v''@;'; put 'put ''bmV9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nW2NsYXNzXj1zb3J0LV06YWZ0ZXIsLmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nW2NsYXNzKj0iIHNvcnQtIl06YWZ0ZXJ7Y29udGVudDoiKyJ9LmhhbmRzb250YWJsZSBzcGFuLmNv''@;'; put 'put ''bEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtMTphZnRlcntjb250ZW50OiIxIn0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC0yOmFmdGVye2NvbnRlbnQ6IjIifS5oYW5kc29udGFibGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTM6''@;'; put 'put ''YWZ0ZXJ7Y29udGVudDoiMyJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNDphZnRlcntjb250ZW50OiI0In0uaGFuZHNvbnRhYmxlIHNwYW4uY29sSGVhZGVyLmNvbHVtblNvcnRpbmcuc29ydC01OmFmdGVye2NvbnRlbnQ6IjUifS5oYW5kc29udGFi''@;'; put 'put ''bGUgc3Bhbi5jb2xIZWFkZXIuY29sdW1uU29ydGluZy5zb3J0LTY6YWZ0ZXJ7Y29udGVudDoiNiJ9LmhhbmRzb250YWJsZSBzcGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nLnNvcnQtNzphZnRlcntjb250ZW50OiI3In0uaHRHaG9zdFRhYmxlIHRoIGRpdiBidXR0b24uY2hhbmdlVHlwZStz''@;'; put 'put ''cGFuLmNvbEhlYWRlci5jb2x1bW5Tb3J0aW5nOm5vdCguaW5kaWNhdG9yRGlzYWJsZWQpe3BhZGRpbmctcmlnaHQ6NXB4fS5oYW5kc29udGFibGUgdGhlYWQgdGguaGlkZGVuSGVhZGVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSl7ZGlzcGxheTpub25lfS5oYW5kc29udGFibGUgdGguaHRfbmVzdGlu''@;'; put 'put ''Z0xldmVsc3t0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZy1sZWZ0OjdweH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoLmh0X25lc3RpbmdMZXZlbHN7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXJpZ2h0OjdweH0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTFweDtyaWdodDp1bnNldH1bZGlyPXJ0bF0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nTGV2ZWxze3JpZ2h0OjExcHg7bGVmdDp1bnNldH0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnQgdGggZGl2''@;'; put 'put ''Lmh0X25lc3RpbmdMZXZlbHMsLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdMZXZlbHN7cmlnaHQ6MTBweDtsZWZ0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3JkZXJJbmxpbmVTdGFydCB0aCBk''@;'; put 'put ''aXYuaHRfbmVzdGluZ0xldmVscyxbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0xldmVsc3tsZWZ0OjEwcHg7cmlnaHQ6dW5zZXR9LmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZlbHtk''@;'; put 'put ''aXNwbGF5OmlubGluZS1ibG9ja30uaGFuZHNvbnRhYmxlIHRoIHNwYW4uaHRfbmVzdGluZ0xldmVsX2VtcHR5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwcHg7aGVpZ2h0OjFweDtmbG9hdDpsZWZ0fVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggc3Bhbi5odF9uZXN0aW5nTGV2ZWxf''@;'; put 'put ''ZW1wdHl7ZmxvYXQ6cmlnaHR9LmhhbmRzb250YWJsZSB0aCBzcGFuLmh0X25lc3RpbmdMZXZlbDphZnRlcntjb250ZW50OiJcMjUxMCI7Zm9udC1zaXplOjlweDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3R0b206M3B4fS5oYW5kc29udGFibGUgdGggZGl2Lmh0''@;'; put 'put ''X25lc3RpbmdCdXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTJweDtsZWZ0OnVuc2V0O2N1cnNvcjpwb2ludGVyfVtkaXI9cnRsXS5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b257bGVmdDotMnB4O3JpZ2h0OnVuc2V0fS5oYW5k''@;'; put 'put ''c29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24uaHRfbmVzdGluZ0V4cGFuZDphZnRlcntjb250ZW50OiIrIn0uaGFuZHNvbnRhYmxlIHRoIGRpdi5odF9uZXN0aW5nQnV0dG9uLmh0X25lc3RpbmdDb2xsYXBzZTphZnRlcntjb250ZW50OiItIn0uaGFuZHNvbnRhYmxlLmlubmVyQm9y''@;'; put 'put ''ZGVySW5saW5lU3RhcnQgdGggZGl2Lmh0X25lc3RpbmdCdXR0b24sLmhhbmRzb250YWJsZS5pbm5lckJvcmRlcklubGluZVN0YXJ0fi5oYW5kc29udGFibGUgdGggZGl2Lmh0X25lc3RpbmdCdXR0b257cmlnaHQ6MDtsZWZ0OnVuc2V0fVtkaXI9cnRsXS5oYW5kc29udGFibGUuaW5uZXJCb3Jk''@;'; put 'put ''ZXJJbmxpbmVTdGFydCB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbixbZGlyPXJ0bF0uaGFuZHNvbnRhYmxlLmlubmVyQm9yZGVySW5saW5lU3RhcnR+LmhhbmRzb250YWJsZSB0aCBkaXYuaHRfbmVzdGluZ0J1dHRvbntsZWZ0OjA7cmlnaHQ6dW5zZXR9Y2xyLWljb257ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2s7bWFyZ2luOjA7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZmlsbDpjdXJyZW50Q29sb3J9Y2xyLWljb24gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTpjdXJyZW50Q29sb3J9Y2xyLWljb24uaXMtZ3JlZW4sY2xyLWljb24uaXMtc3Vj''@;'; put 'put ''Y2Vzc3tmaWxsOiMyZTg1MDB9Y2xyLWljb24uaXMtZ3JlZW4gLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tlLGNsci1pY29uLmlzLXN1Y2Nlc3MgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMmU4NTAwfWNsci1pY29uLmlzLXJlZCxjbHItaWNvbi5pcy1kYW5nZXIsY2xyLWljb24u''@;'; put 'put ''aXMtZXJyb3J7ZmlsbDojZTAyMjAwfWNsci1pY29uLmlzLXJlZCAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2UsY2xyLWljb24uaXMtZGFuZ2VyIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1lcnJvciAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNlMDIyMDB9''@;'; put 'put ''Y2xyLWljb24uaXMtd2FybmluZ3tmaWxsOiNjMjdiMDB9Y2xyLWljb24uaXMtd2FybmluZyAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNjMjdiMDB9Y2xyLWljb24uaXMtYmx1ZSxjbHItaWNvbi5pcy1pbmZve2ZpbGw6IzAwNzdiOH1jbHItaWNvbi5pcy1ibHVlIC50cmFuc3Bh''@;'; put 'put ''cmVudC1maWxsLXN0cm9rZSxjbHItaWNvbi5pcy1pbmZvIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzAwNzdiOH1jbHItaWNvbi5pcy13aGl0ZSxjbHItaWNvbi5pcy1pbnZlcnNle2ZpbGw6I2ZmZn1jbHItaWNvbi5pcy13aGl0ZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2Us''@;'; put 'put ''Y2xyLWljb24uaXMtaW52ZXJzZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiNmZmZ9Y2xyLWljb24uaXMtaGlnaGxpZ2h0e2ZpbGw6IzAwNzdiOH1jbHItaWNvbi5pcy1oaWdobGlnaHQgLnRyYW5zcGFyZW50LWZpbGwtc3Ryb2tle3N0cm9rZTojMDA3N2I4fWNsci1pY29uW3No''@;'; put 'put ''YXBlJD0iIHVwIl0gc3ZnLGNsci1pY29uW2Rpcj11cF0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoMCl9Y2xyLWljb25bc2hhcGUkPSIgZG93biJdIHN2ZyxjbHItaWNvbltkaXI9ZG93bl0gc3Zne3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX1jbHItaWNvbltzaGFwZSQ9IiByaWdodCJdIHN2Zyxj''@;'; put 'put ''bHItaWNvbltkaXI9cmlnaHRdIHN2Z3t0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX1jbHItaWNvbltzaGFwZSQ9IiBsZWZ0Il0gc3ZnLGNsci1pY29uW2Rpcj1sZWZ0XSBzdmd7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfWNsci1pY29uW2ZsaXA9aG9yaXpvbnRhbF0gc3Zne3RyYW5zZm9ybTpz''@;'; put 'put ''Y2FsZSgtMSkgcm90YXRlWCgxODBkZWcpfWNsci1pY29uW2ZsaXA9dmVydGljYWxdIHN2Z3t0cmFuc2Zvcm06c2NhbGUoLTEpIHJvdGF0ZVkoMTgwZGVnKX1jbHItaWNvbiAuY2xyLWktYmFkZ2V7ZmlsbDojZTAyMjAwfWNsci1pY29uIC5jbHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1z''@;'; put 'put ''dHJva2V7c3Ryb2tlOiNlMDIyMDB9Y2xyLWljb24+KntoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2s7cG9pbnRlci1ldmVudHM6bm9uZX1jbHItaWNvbj5zdmd7dHJhbnNpdGlvbjppbmhlcml0fWNsci1pY29uPnN2ZyB0aXRsZXtkaXNwbGF5Om5vbmV9Y2xyLWljb24gLmNs''@;'; put 'put ''ci1pLXNvbGlkLGNsci1pY29uIC5jbHItaS1zb2xpZC0tYmFkZ2VkLGNsci1pY29uIC5jbHItaS1zb2xpZC0tYWxlcnRlZHtkaXNwbGF5Om5vbmV9Y2xyLWljb24gLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWQ6bm90KC5jbHItaS1vdXRsaW5lKSxjbHItaWNvbiAuY2xyLWktb3V0bGluZS0tYmFk''@;'; put 'put ''Z2VkOm5vdCguY2xyLWktb3V0bGluZSl7ZGlzcGxheTpub25lfWNsci1pY29uW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQgLmNsci1pLW91dGxpbmUtLWFsZXJ0ZWR7ZGlzcGxheTpibG9ja31jbHItaWNvbltjbGFzcyo9aGFzLWFsZXJ0XSAuY2FuLWFsZXJ0IC5jbHItaS1vdXRsaW5l''@;'; put 'put ''Om5vdCguY2xyLWktb3V0bGluZS0tYWxlcnRlZCl7ZGlzcGxheTpub25lfWNsci1pY29uW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UgLmNsci1pLW91dGxpbmUtLWJhZGdlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UgLmNsci1pLW91''@;'; put 'put ''dGxpbmU6bm90KC5jbHItaS1vdXRsaW5lLS1iYWRnZWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlkIC5oYXMtc29saWQgLmNsci1pLW91dGxpbmUsY2xyLWljb24uaXMtc29saWQg''@;'; put 'put ''Lmhhcy1zb2xpZCAuY2xyLWktb3V0bGluZS0tYmFkZ2Vke2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYWxlcnRlZDpub3QoLmNsci1pLXNvbGlkKSxjbHItaWNvbi5pcy1zb2xpZCAuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYmFkZ2Vk''@;'; put 'put ''Om5vdCguY2xyLWktc29saWQpe2Rpc3BsYXk6bm9uZX1jbHItaWNvbi5pcy1zb2xpZFtjbGFzcyo9aGFzLWJhZGdlXSAuY2FuLWJhZGdlLmhhcy1zb2xpZCAuY2xyLWktc29saWQtLWJhZGdlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4t''@;'; put 'put ''YmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYmFkZ2VdIC5jYW4tYmFkZ2UuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLS1iYWRnZWQsY2xyLWljb24uaXMtc29saWRbY2xhc3MqPWhhcy1iYWRnZV0gLmNhbi1iYWRnZS5oYXMtc29s''@;'; put 'put ''aWQgLmNsci1pLXNvbGlkOm5vdCguY2xyLWktc29saWQtLWJhZGdlZCl7ZGlzcGxheTpub25lfWNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1zb2xpZC0tYWxlcnRlZHtkaXNwbGF5OmJsb2NrfWNsci1pY29uLmlzLXNvbGlk''@;'; put 'put ''W2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMtYWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1vdXRsaW5lLS1hbGVydGVkLGNsci1pY29uLmlzLXNvbGlkW2NsYXNzKj1oYXMt''@;'; put 'put ''YWxlcnRdIC5jYW4tYWxlcnQuaGFzLXNvbGlkIC5jbHItaS1zb2xpZDpub3QoLmNsci1pLXNvbGlkLS1hbGVydGVkKXtkaXNwbGF5Om5vbmV9Y2xyLWljb24uaGFzLWJhZGdlLS1zdWNjZXNzIC5jbHItaS1iYWRnZXtmaWxsOiMyZTg1MDB9Y2xyLWljb24uaGFzLWJhZGdlLS1zdWNjZXNzIC5j''@;'; put 'put ''bHItaS1iYWRnZSAudHJhbnNwYXJlbnQtZmlsbC1zdHJva2V7c3Ryb2tlOiMyZTg1MDB9Y2xyLWljb24uaGFzLWJhZGdlLS1lcnJvciAuY2xyLWktYmFkZ2V7ZmlsbDojZTAyMjAwfWNsci1pY29uLmhhcy1iYWRnZS0tZXJyb3IgLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9r''@;'; put 'put ''ZXtzdHJva2U6I2UwMjIwMH1jbHItaWNvbi5oYXMtYmFkZ2UtLWluZm8gLmNsci1pLWJhZGdle2ZpbGw6IzAwNzdiOH1jbHItaWNvbi5oYXMtYmFkZ2UtLWluZm8gLmNsci1pLWJhZGdlIC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6IzAwNzdiOH1jbHItaWNvbi5oYXMtYWxlcnQg''@;'; put 'put ''LmNsci1pLWFsZXJ0e2ZpbGw6I2MyN2IwMH1jbHItaWNvbi5oYXMtYWxlcnQgLmNsci1pLWFsZXJ0IC50cmFuc3BhcmVudC1maWxsLXN0cm9rZXtzdHJva2U6I2MyN2IwMH1jbHItaWNvbiAuaXMtb2ZmLXNjcmVlbntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50''@;'; put 'put ''O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LTFweCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLTFweCFpbXBvcnRhbnR9QGNoYXJzZXQgIlVURi04''@;'; put 'put ''Ijs6cm9vdHstLWNkcy1nbG9iYWwtYmFzZToyMDstLWNkcy1nbG9iYWwtc2NhbGUtc3BhY2U6MTstLWNkcy1nbG9iYWwtc2NhbGUtbGF5b3V0LXNwYWNlOjE7LS1jZHMtZ2xvYmFsLXNjYWxlLXR5cG9ncmFwaHk6MTstLWNkcy1nbG9iYWwtbGF5b3V0LWdyaWQtY29sczoxMjstLWNkcy1nbG9i''@;'; put 'put ''YWwtbGF5b3V0LXdpZHRoLXhzOjU3NnB4Oy0tY2RzLWdsb2JhbC1sYXlvdXQtd2lkdGgtc206NzY4cHg7LS1jZHMtZ2xvYmFsLWxheW91dC13aWR0aC1tZDo5OTJweDstLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLWxnOjEyMDBweDstLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXhsOjE0NDBw''@;'; put 'put ''eDstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4eHM6Y2FsYygyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4czpjYWxjKDQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2Ut''@;'; put 'put ''eHM6Y2FsYyg4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXNtOmNhbGMoMTIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbWQ6Y2FsYygxNiAqIHZhcigtLWNkcy1pbnRlcm5h''@;'; put 'put ''bC1zY2FsZS0xKSk7LS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1sZzpjYWxjKDI0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhsOmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlv''@;'; put 'put ''dXQtc3BhY2UteHhsOmNhbGMoNDggKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMSkpOy0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHh4bDpjYWxjKDY0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTEpKTstLWNkcy1nbG9iYWwtc3BhY2UtMDpjYWxjKDAgKiB2YXIoLS1jZHMtaW50''@;'; put 'put ''ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xOmNhbGMoMSAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTI6Y2FsYygyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtMzpjYWxjKDQgKiB2''@;'; put 'put ''YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS00OmNhbGMoNiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTU6Y2FsYyg4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''NjpjYWxjKDEyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtNzpjYWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtODpjYWxjKDE4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNk''@;'; put 'put ''cy1nbG9iYWwtc3BhY2UtOTpjYWxjKDI0ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtMTA6Y2FsYygzMiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTExOmNhbGMoMzYgKiB2YXIoLS1jZHMtaW50ZXJu''@;'; put 'put ''YWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xMjpjYWxjKDQ4ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtc3BhY2UtMTM6Y2FsYyg2NCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0yKSk7LS1jZHMtZ2xvYmFsLXNwYWNlLTE0OmNhbGMoNzIg''@;'; put 'put ''KiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMikpOy0tY2RzLWdsb2JhbC1zcGFjZS0xNTpjYWxjKDk2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTIpKTstLWNkcy1nbG9iYWwtY29sb3ItYmxhY2s6aHNsKDAsIDAlLCAwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlOmhzbCgwLCAw''@;'; put 'put ''JSwgMTAwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwOmhzbCg5MywgODAlLCA5NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0xMDA6aHNsKDkzLCA4MCUsIDgzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTIwMDpoc2woOTMsIDgwJSwgNzAlKTstLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItZ3JlZW4tMzAwOmhzbCg5MywgODAlLCA1NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDA6aHNsKDkzLCA4MCUsIDQ4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwMDpoc2woOTMsIDgwJSwgNDQlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwOmhzbCg5MywgODAl''@;'; put 'put ''LCAzNyUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDA6aHNsKDkzLCA4MCUsIDI4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgwMDpoc2woOTMsIDgwJSwgMjMlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwOmhzbCg5MywgODAlLCAxNyUpOy0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci1ncmVlbi0xMDAwOmhzbCg5MywgODAlLCAxMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwOmhzbCgxOTgsIDEwMCUsIDk1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzU6aHNsKDE5OCwgMTAwJSwgOTQlKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0xMDA6aHNsKDE5OCwgMTAw''@;'; put 'put ''JSwgODclKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDA6aHNsKDE5OCwgMTAwJSwgNzglKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDA6aHNsKDE5OCwgMTAwJSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDA6aHNsKDE5OCwgMTAwJSwgNTklKTstLWNkcy1nbG9iYWwt''@;'; put 'put ''Y29sb3ItYmx1ZS01MDA6aHNsKDE5OCwgMTAwJSwgNDglKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDA6aHNsKDE5OCwgMTAwJSwgNDMlKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDA6aHNsKDE5OCwgMTAwJSwgMzQlKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDA6aHNsKDE5''@;'; put 'put ''OCwgMTAwJSwgMjclKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS05MDA6aHNsKDE5OCwgMTAwJSwgMjElKTstLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0xMDAwOmhzbCgxOTgsIDEwMCUsIDE1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MDpoc2woMjgyLCAxMDAlLCA5NyUpOy0tY2Rz''@;'; put 'put ''LWdsb2JhbC1jb2xvci12aW9sZXQtMTAwOmhzbCgyODIsIDgwJSwgOTElKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTIwMDpoc2woMjgyLCA3MyUsIDgzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0zMDA6aHNsKDI4MiwgNjYlLCA3NCUpOy0tY2RzLWdsb2JhbC1jb2xvci12aW9s''@;'; put 'put ''ZXQtNDAwOmhzbCgyODIsIDYwJSwgNjUlKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTUwMDpoc2woMjgyLCA2MCUsIDU3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC02MDA6aHNsKDI4MiwgNjAlLCA0OSUpOy0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNzAwOmhzbCgyODMsIDgw''@;'; put 'put ''JSwgMzYlKTstLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTgwMDpoc2woMjgyLCAxMDAlLCAyNiUpOy0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtOTAwOmhzbCgyODIsIDEwMCUsIDE5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0xMDAwOmhzbCgyODIsIDEwMCUsIDE0JSk7LS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLXJlZC01MDpoc2woOSwgMTAwJSwgOTclKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMDpoc2woOSwgMTAwJSwgOTQlKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTIwMDpoc2woOSwgMTAwJSwgODglKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTMwMDpoc2woOSwgMTAw''@;'; put 'put ''JSwgNzklKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTQwMDpoc2woOSwgMTAwJSwgNzElKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwMDpoc2woOSwgMTAwJSwgNjUlKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTYwMDpoc2woOSwgMTAwJSwgNTklKTstLWNkcy1nbG9iYWwtY29sb3ItcmVk''@;'; put 'put ''LTcwMDpoc2woOSwgMTAwJSwgNDQlKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMDpoc2woOSwgMTAwJSwgMzglKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTkwMDpoc2woOSwgMTAwJSwgMjglKTstLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMDA6aHNsKDksIDEwMCUsIDIyJSk7LS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLW9jaHJlLTUwOmhzbCg0MSwgMTAwJSwgOTYlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwOmhzbCg0MSwgMTAwJSwgOTIlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMjAwOmhzbCg0MSwgMTAwJSwgODYlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMzAw''@;'; put 'put ''OmhzbCg0MSwgMTAwJSwgNzglKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNDAwOmhzbCg0MSwgMTAwJSwgNzAlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTAwOmhzbCg0MCwgMTAwJSwgNTklKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNjAwOmhzbCgzOSwgMTAwJSwgNTAlKTst''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNzAwOmhzbCgzOCwgMTAwJSwgNDIlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtODAwOmhzbCgzNywgMTAwJSwgMzIlKTstLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtOTAwOmhzbCgzNiwgMTAwJSwgMjclKTstLWNkcy1nbG9iYWwtY29sb3Itb2No''@;'; put 'put ''cmUtMTAwMDpoc2woMzUsIDEwMCUsIDE5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTUwOmhzbCgyMzgsIDEwMCUsIDk2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTEwMDpoc2woMjM4LCA1OCUsIDg4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTIwMDpoc2wo''@;'; put 'put ''MjM4LCA1MyUsIDc5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTMwMDpoc2woMjM4LCA1MiUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTQwMDpoc2woMjM4LCA1OCUsIDY0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTUwMDpoc2woMjM4LCA1OSUsIDU4''@;'; put 'put ''JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTYwMDpoc2woMjM4LCA2MCUsIDUyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTcwMDpoc2woMjM4LCA2OSUsIDQ1JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTgwMDpoc2woMjM4LCAxMDAlLCAzMiUpOy0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci1sYXZlbmRlci05MDA6aHNsKDIzOCwgMTAwJSwgMjIlKTstLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItMTAwMDpoc2woMjM4LCAxMDAlLCAxNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVyZS01MDpoc2woMjExLCAxMDAlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1h''@;'; put 'put ''enVyZS0xMDA6aHNsKDIxMSwgMTAwJSwgODglKTstLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMjAwOmhzbCgyMTEsIDEwMCUsIDgxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTMwMDpoc2woMjExLCAxMDAlLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVyZS00MDA6aHNsKDIxMSwg''@;'; put 'put ''MTAwJSwgNjIlKTstLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtNTAwOmhzbCgyMTEsIDEwMCUsIDU0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTYwMDpoc2woMjExLCAxMDAlLCA0NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVyZS03MDA6aHNsKDIxMSwgMTAwJSwgMzclKTstLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItYXp1cmUtODAwOmhzbCgyMTEsIDEwMCUsIDI2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWF6dXJlLTkwMDpoc2woMjExLCAxMDAlLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1henVyZS0xMDAwOmhzbCgyMTEsIDEwMCUsIDE0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEt''@;'; put 'put ''NTA6aHNsKDE4NCwgMTAwJSwgOTYlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0xMDA6aHNsKDE4NCwgMTAwJSwgODYlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0yMDA6aHNsKDE4NCwgMTAwJSwgNzUlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0zMDA6aHNsKDE4NCwgMTAwJSwgNjIl''@;'; put 'put ''KTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS00MDA6aHNsKDE4NCwgMTAwJSwgNDglKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MDA6aHNsKDE4NCwgMTAwJSwgNDMlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS02MDA6aHNsKDE4NCwgMTAwJSwgMzQlKTstLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''YXF1YS03MDA6aHNsKDE4NCwgMTAwJSwgMjUlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDA6aHNsKDE4NCwgMTAwJSwgMTglKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS05MDA6aHNsKDE4NCwgMTAwJSwgMTMlKTstLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0xMDAwOmhzbCgxODQsIDEw''@;'; put 'put ''MCUsIDEwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNTA6aHNsKDE2MCwgODMlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTEwMDpoc2woMTYwLCA4MiUsIDg4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtMjAwOmhzbCgxNjAsIDc4JSwgNzglKTstLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItamFkZS0zMDA6aHNsKDE2MCwgNjklLCA2NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTQwMDpoc2woMTYwLCA2OSUsIDUzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtNTAwOmhzbCgxNjAsIDY0JSwgNDUlKTstLWNkcy1nbG9iYWwtY29sb3ItamFkZS02MDA6aHNsKDE2MCwgNjkl''@;'; put 'put ''LCAzNiUpOy0tY2RzLWdsb2JhbC1jb2xvci1qYWRlLTcwMDpoc2woMTYwLCA2NCUsIDMwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtODAwOmhzbCgxNjAsIDEwMCUsIDIxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWphZGUtOTAwOmhzbCgxNjAsIDcwJSwgMTglKTstLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItamFkZS0xMDAwOmhzbCgxNjAsIDY5JSwgMTQlKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTUwOmhzbCg1MCwgMTAwJSwgOTUlKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTEwMDpoc2woNTAsIDEwMCUsIDg0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy0yMDA6aHNsKDUw''@;'; put 'put ''LCAxMDAlLCA3MyUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMzAwOmhzbCg1MCwgMTAwJSwgNTclKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTQwMDpoc2woNDYsIDEwMCUsIDUyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy01MDA6aHNsKDQ0LCAxMDAlLCA0NyUpOy0tY2Rz''@;'; put 'put ''LWdsb2JhbC1jb2xvci15ZWxsb3ctNjAwOmhzbCg0MiwgMTAwJSwgNDIlKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTcwMDpoc2woNDAsIDEwMCUsIDM3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy04MDA6aHNsKDQwLCAxMDAlLCAyNiUpOy0tY2RzLWdsb2JhbC1jb2xvci15ZWxs''@;'; put 'put ''b3ctOTAwOmhzbCg0MCwgMTAwJSwgMTglKTstLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTEwMDA6aHNsKDQwLCAxMDAlLCAxMyUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTUwOmhzbCg2NiwgMTAwJSwgOTQlKTstLWNkcy1nbG9iYWwtY29sb3ItbGltZS0xMDA6aHNsKDY2LCA5NSUsIDgz''@;'; put 'put ''JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtMjAwOmhzbCg2NiwgODUlLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTMwMDpoc2woNjYsIDgwJSwgNTglKTstLWNkcy1nbG9iYWwtY29sb3ItbGltZS00MDA6aHNsKDY2LCA4MCUsIDQ4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUt''@;'; put 'put ''NTAwOmhzbCg2NiwgOTAlLCA0MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTYwMDpoc2woNjYsIDkwJSwgMzYlKTstLWNkcy1nbG9iYWwtY29sb3ItbGltZS03MDA6aHNsKDY2LCAxMDAlLCAyOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1saW1lLTgwMDpoc2woNjYsIDEwMCUsIDIyJSk7LS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWNvbG9yLWxpbWUtOTAwOmhzbCg2NiwgMTAwJSwgMTIlKTstLWNkcy1nbG9iYWwtY29sb3ItbGltZS0xMDAwOmhzbCg2NiwgMTAwJSwgNyUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNTA6aHNsKDI1LCAxMDAlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5n''@;'; put 'put ''ZXJpbmUtMTAwOmhzbCgyNSwgMTAwJSwgODglKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTIwMDpoc2woMjUsIDk0JSwgNzglKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTMwMDpoc2woMjUsIDEwMCUsIDcyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS00MDA6''@;'; put 'put ''aHNsKDI1LCAxMDAlLCA2MiUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNTAwOmhzbCgyNSwgMTAwJSwgNDglKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTYwMDpoc2woMjUsIDEwMCUsIDQxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS03MDA6aHNsKDI1LCAx''@;'; put 'put ''MDAlLCAzNCUpOy0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtODAwOmhzbCgyNSwgMTAwJSwgMjUlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTkwMDpoc2woMjUsIDEwMCUsIDE5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS0xMDAwOmhzbCgyNSwgMTAwJSwgMTUl''@;'; put 'put ''KTstLWNkcy1nbG9iYWwtY29sb3ItbWFnZW50YS01MDpoc2woMzQ1LCAxMDAlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTEwMDpoc2woMzQ1LCAxMDAlLCA4NyUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTIwMDpoc2woMzQ1LCAxMDAlLCA3OSUpOy0tY2RzLWdsb2Jh''@;'; put 'put ''bC1jb2xvci1tYWdlbnRhLTMwMDpoc2woMzQ1LCAxMDAlLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTQwMDpoc2woMzQ1LCAxMDAlLCA2MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTUwMDpoc2woMzQ1LCA4MSUsIDUwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLW1hZ2Vu''@;'; put 'put ''dGEtNjAwOmhzbCgzNDUsIDgzJSwgNDAlKTstLWNkcy1nbG9iYWwtY29sb3ItbWFnZW50YS03MDA6aHNsKDM0NSwgOTElLCAzMSUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTgwMDpoc2woMzQ1LCAxMDAlLCAyNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTkwMDpoc2woMzQ1''@;'; put 'put ''LCAxMDAlLCAxOSUpOy0tY2RzLWdsb2JhbC1jb2xvci1tYWdlbnRhLTEwMDA6aHNsKDM0NSwgMTAwJSwgMTUlKTstLWNkcy1nbG9iYWwtY29sb3ItcGluay01MDpoc2woMzI0LCAxMDAlLCA5NyUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTEwMDpoc2woMzI0LCA5NSUsIDkxJSk7LS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLXBpbmstMjAwOmhzbCgzMjQsIDg0JSwgODElKTstLWNkcy1nbG9iYWwtY29sb3ItcGluay0zMDA6aHNsKDMyNCwgNzglLCA3MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTQwMDpoc2woMzI0LCA3OCUsIDYyJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXBpbmstNTAwOmhz''@;'; put 'put ''bCgzMjQsIDY0JSwgNTElKTstLWNkcy1nbG9iYWwtY29sb3ItcGluay02MDA6aHNsKDMyNCwgODAlLCAzOSUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTcwMDpoc2woMzI0LCAxMDAlLCAzMCUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTgwMDpoc2woMzI0LCAxMDAlLCAyNCUpOy0tY2Rz''@;'; put 'put ''LWdsb2JhbC1jb2xvci1waW5rLTkwMDpoc2woMzI0LCAxMDAlLCAxOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1waW5rLTEwMDA6aHNsKDMyNCwgMTAwJSwgMTUlKTstLWNkcy1nbG9iYWwtY29sb3Itd2FybS1ncmF5LTUwOmhzbCgyODIsIDMlLCA5NyUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJt''@;'; put 'put ''LWdyYXktMTAwOmhzbCgyODIsIDMlLCA5MiUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktMjAwOmhzbCgyODIsIDMlLCA4NCUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktMzAwOmhzbCgyODIsIDMlLCA3NCUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktNDAwOmhz''@;'; put 'put ''bCgyODIsIDMlLCA2MyUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktNTAwOmhzbCgyODIsIDMlLCA1NCUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktNjAwOmhzbCgyODIsIDMlLCA0MyUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktNzAwOmhzbCgyODIsIDMlLCAz''@;'; put 'put ''NSUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktODAwOmhzbCgyODIsIDMlLCAyOCUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktOTAwOmhzbCgyODIsIDMlLCAyMCUpOy0tY2RzLWdsb2JhbC1jb2xvci13YXJtLWdyYXktMTAwMDpoc2woMjgyLCAzJSwgMTQlKTstLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3Itc2xhdGUtNTA6aHNsKDIzOCwgMjAlLCA5NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS0xMDA6aHNsKDIzOCwgMjAlLCA5MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS0yMDA6aHNsKDIzOCwgMjAlLCA4MiUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS0zMDA6''@;'; put 'put ''aHNsKDIzOCwgMjAlLCA3MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS00MDA6aHNsKDIzOCwgMjAlLCA2MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS01MDA6aHNsKDIzOCwgMjMlLCA1NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS02MDA6aHNsKDIzOCwgMjQlLCA0OSUpOy0t''@;'; put 'put ''Y2RzLWdsb2JhbC1jb2xvci1zbGF0ZS03MDA6aHNsKDIzOCwgMjglLCAzOCUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS04MDA6aHNsKDIzOCwgMjglLCAyOSUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0ZS05MDA6aHNsKDIzOCwgMjglLCAyMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1zbGF0''@;'; put 'put ''ZS0xMDAwOmhzbCgyMzgsIDI4JSwgMTQlKTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTUwOmhzbCgyMTEsIDEwMCUsIDk3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS0xMDA6aHNsKDIxMSwgNTglLCA5MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtMjAwOmhzbCgyMTEsIDUzJSwgODElKTst''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItaWNlLTMwMDpoc2woMjExLCA0OSUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS00MDA6aHNsKDIxMSwgNDclLCA2MiUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtNTAwOmhzbCgyMTEsIDQ3JSwgNTMlKTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTYwMDpo''@;'; put 'put ''c2woMjExLCA1NiUsIDQ0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWljZS03MDA6aHNsKDIxMSwgNjklLCAzNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1pY2UtODAwOmhzbCgyMTEsIDY5JSwgMjclKTstLWNkcy1nbG9iYWwtY29sb3ItaWNlLTkwMDpoc2woMjExLCAxMDAlLCAyMCUpOy0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci1pY2UtMTAwMDpoc2woMjExLCAxMDAlLCAxNCUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktNTA6aHNsKDIxMSwgMjAlLCA5NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktMTAwOmhzbCgyMTEsIDIwJSwgOTAlKTstLWNkcy1nbG9iYWwtY29sb3ItY29v''@;'; put 'put ''bC1ncmF5LTIwMDpoc2woMjExLCAyMCUsIDgxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS0zMDA6aHNsKDIxMSwgMjAlLCA3MiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktNDAwOmhzbCgyMTEsIDIwJSwgNjElKTstLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTUw''@;'; put 'put ''MDpoc2woMjExLCAyMCUsIDUzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS02MDA6aHNsKDIxMSwgMjAlLCA0NCUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktNzAwOmhzbCgyMTEsIDIzJSwgMzYlKTstLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTgwMDpoc2woMjEx''@;'; put 'put ''LCAzMCUsIDI4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS05MDA6aHNsKDIxMSwgNDAlLCAyMiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb29sLWdyYXktMTAwMDpoc2woMjExLCA2MyUsIDE0JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLXRhbi01MDpoc2woNDEsIDIzJSwgOTYlKTstLWNk''@;'; put 'put ''cy1nbG9iYWwtY29sb3ItdGFuLTEwMDpoc2woNDEsIDIyJSwgOTElKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTIwMDpoc2woNDEsIDI3JSwgODIlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTMwMDpoc2woNDEsIDIzJSwgNjglKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTQwMDpoc2woNDEs''@;'; put 'put ''IDIzJSwgNTglKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTUwMDpoc2woNDEsIDIwJSwgNDclKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTYwMDpoc2woNDEsIDIwJSwgNDAlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTcwMDpoc2woNDEsIDIwJSwgMzIlKTstLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''dGFuLTgwMDpoc2woNDEsIDIzJSwgMjYlKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTkwMDpoc2woNDEsIDIzJSwgMjElKTstLWNkcy1nbG9iYWwtY29sb3ItdGFuLTEwMDA6aHNsKDQxLCAyMiUsIDE2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yNTpoc2woMTk4LCAzMyUs''@;'; put 'put ''IDk5JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDpoc2woMTk4LCAzNiUsIDk2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDA6aHNsKDE5OCwgMjAlLCA5MSUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwOmhzbCgxOTgsIDE0JSwg''@;'; put 'put ''ODIlKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMDpoc2woMTk4LCAxMCUsIDcxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDA6aHNsKDE5OCwgOSUsIDU2JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDA6aHNsKDE5OCwgMTAlLCA0''@;'; put 'put ''NiUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwOmhzbCgxOTgsIDE0JSwgMzYlKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTcwMDpoc2woMTk4LCAxOSUsIDI4JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDA6aHNsKDE5OCwgMjMlLCAy''@;'; put 'put ''MyUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tOTAwOmhzbCgxOTgsIDI4JSwgMTglKTstLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDA6aHNsKDE5OCwgMzAlLCAxNSUpOy0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTEwMDpoc2woMjAwLCAzMSUs''@;'; put 'put ''IDEzJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktMDpoc2woMCwgMCUsIDEwMCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTUwOmhzbCgwLCAwJSwgOTglKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JheS0xMDA6aHNsKDAsIDAlLCA5NSUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTIwMDpo''@;'; put 'put ''c2woMCwgMCUsIDkxJSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktMzAwOmhzbCgwLCAwJSwgODclKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JheS00MDA6aHNsKDAsIDAlLCA4MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTUwMDpoc2woMCwgMCUsIDcwJSk7LS1jZHMtZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWdyYXktNjAwOmhzbCgwLCAwJSwgNTUlKTstLWNkcy1nbG9iYWwtY29sb3ItZ3JheS03MDA6aHNsKDAsIDAlLCA0MCUpOy0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTgwMDpoc2woMCwgMCUsIDI3JSk7LS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktOTAwOmhzbCgwLCAwJSwgMjAlKTstLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItZ3JheS0xMDAwOmhzbCgwLCAwJSwgMCUpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1''@;'; put 'put ''Y3Rpb24tNjAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tOTAwKTstLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci00NTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQt''@;'; put 'put ''d2VpZ2h0LWxpZ2h0OjMwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1yZWd1bGFyOjQwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1tZWRpdW06NTAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1ib2xkOjYwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1leHRyYWJvbGQ6NjAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0wOmNhbGMoMTAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykp''@;'; put 'put ''Oy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0xOmNhbGMoMTEgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0yOmNhbGMoMTIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10''@;'; put 'put ''eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zOmNhbGMoMTMgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS00OmNhbGMoMTQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQt''@;'; put 'put ''c2l6ZS01OmNhbGMoMTYgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS02OmNhbGMoMjAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS03OmNhbGMoMjQg''@;'; put 'put ''KiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS04OmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtc2l6ZS05OmNhbGMoNDAgKiB2YXIoLS1jZHMtaW50''@;'; put 'put ''ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5OiJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRlci1mb250LWZhbWlseToiQ2xhcml0eSBDaXR5IiwgIkF2ZW5pciBOZXh0''@;'; put 'put ''Iiwgc2Fucy1zZXJpZjstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tb25vc3BhY2UtZm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLCBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgbW9ub3NwYWNlOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0Oi4xNDc1ZW07LS1jZHMtZ2xv''@;'; put 'put ''YmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0Oi4xNzAzZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQ6LjUxN2VtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtZ2xvYmFsLXR5cG9n''@;'; put 'put ''cmFwaHktbGluay1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci02MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmst''@;'; put 'put ''Y29sb3ItdmlzaXRlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTcwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1vbi1jb2xvcmJnOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXpl''@;'; put 'put ''OmNhbGMoMTQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQ6MS40Mjg1NzE0ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZzotLjAwNzE0Mjg2ZW07LS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHktYm9keS1mb250LXdlaWdodDo0MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXNpemU6Y2FsYyg0MCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodDoxLjFlbTstLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRpbmctZm9udC1zaXplOmNhbGMoMzIgKiB2YXIoLS1jZHMtaW50''@;'; put 'put ''ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGluZS1oZWlnaHQ6MS4xMjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRpbmctZm9udC13ZWln''@;'; put 'put ''aHQ6NTAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRsaW5lLWZvbnQtc2l6ZTpjYWxjKDMyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkbGluZS1saW5lLWhlaWdodDoxLjEyNWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LWhlYWRsaW5lLWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRsaW5lLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1mb250LXNpemU6Y2FsYygyNCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGluZS1oZWlnaHQ6MS4zMzMzMzNlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1sZXR0ZXItc3BhY2luZzotLjAwODMzMzMzZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWdsb2Jh''@;'; put 'put ''bC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplOmNhbGMoMjAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQ6MS4yZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2lu''@;'; put 'put ''ZzotLjAxZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodDo1MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemU6Y2FsYygxNiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''c3Vic2VjdGlvbi1saW5lLWhlaWdodDoxLjVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1l''@;'; put 'put ''c3NhZ2UtZm9udC1zaXplOmNhbGMoMTYgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQ6MS41ZW07LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNk''@;'; put 'put ''cy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtd2VpZ2h0OmNhbGMoNDAwICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZTpjYWxjKDEzICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMp''@;'; put 'put ''KTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQ6MS4yMzA3N2VtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZzotLjAwNzY5MmVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodDo0''@;'; put 'put ''MDA7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemU6Y2FsYygxMSAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodDoxLjQ1NDU0NWVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNh''@;'; put 'put ''cHRpb24tbGV0dGVyLXNwYWNpbmc6LjAxODE4MmVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWlnaHQ6NDAwOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemU6Y2FsYygxMCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0OjEuMmVtOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2luZzouMDVlbTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tZm9udC13ZWlnaHQ6NTAw''@;'; put 'put ''Oy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWluZm8taG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3VjY2Vzcy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''d2FybmluZy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTkwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGFuZ2VyLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcjp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItY29uc3RydWN0aW9uLTUwMCk7LS1jZHMtZ2xvYmFsLWFuaW1hdGlvbi1kdXJhdGlvbi1pbnN0YW50OjBzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tcXVpY2tlc3Q6LjFzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tcXVpY2tlcjouMTVzOy0tY2RzLWdsb2Jh''@;'; put 'put ''bC1hbmltYXRpb24tZHVyYXRpb24tcXVpY2s6LjJzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tc2Vjb25kYXJ5Oi4zczstLWNkcy1nbG9iYWwtYW5pbWF0aW9uLWR1cmF0aW9uLXByaW1hcnk6LjRzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tc2xvdzouNXM7LS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWFuaW1hdGlvbi1kdXJhdGlvbi1zbG93ZXI6LjdzOy0tY2RzLWdsb2JhbC1hbmltYXRpb24tZHVyYXRpb24tc2xvd2VzdDouOHM7LS1jZHMtZ2xvYmFsLWFuaW1hdGlvbi1lYXNpbmctcHJpbWFyeTpjdWJpYy1iZXppZXIoMCwuOTksMCwuOTkpOy0tY2RzLWdsb2JhbC1hbmlt''@;'; put 'put ''YXRpb24tZWFzaW5nLXNlY29uZGFyeTpjdWJpYy1iZXppZXIoMCwgMS41LCAuNSwgMSk7LS1jZHMtZ2xvYmFsLWFuaW1hdGlvbi1lYXNpbmctbG9vcDpjdWJpYy1iZXppZXIoLjE3LCAuNCwgLjgsIC43OSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwOmNhbGMoNCAqICgx''@;'; put 'put ''cmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTIwMDpjYWxjKDEyICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMzAwOjUwJTstLWNkcy1hbGlhcy1v''@;'; put 'put ''YmplY3QtYm9yZGVyLXdpZHRoLTEwMDpjYWxjKDEgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMDpjYWxjKDIgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtYm9y''@;'; put 'put ''ZGVyLXdpZHRoLTMwMDpjYWxjKDMgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTQwMDpjYWxjKDQgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvci10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvci1zaGFkZTp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMTAwOjAgY2FsYygoMSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSAqIDFyZW0pIGNhbGMoKDMgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVtKSAwIGhzbGEo''@;'; put 'put ''MTk4LCAzMCUsIDE1JSwgLjUpOy0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMjAwOjAgY2FsYygoMSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSAqIDFyZW0pIGNhbGMoKDMgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVtKSAwIGhzbGEoMTk4LCAzMCUsIDE1JSwg''@;'; put 'put ''LjMpOy0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMzAwOjAgY2FsYygoMSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSwgMjApKSAqIDFyZW0pIGNhbGMoKDMgLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UsIDIwKSkgKiAxcmVtKSAwIGhzbGEoMTk4LCAzMCUsIDE1JSwgLjIpOy0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1vcGFjaXR5LTA6aHNsYSgwLCAwJSwgMCUsIDApOy0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTEwMDpoc2xhKDAsIDAlLCAwJSwgLjIpOy0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTIwMDpoc2xhKDAsIDAlLCAwJSwgLjQpOy0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5''@;'; put 'put ''LTMwMDpoc2xhKDAsIDAlLCAwJSwgLjYpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lOkhpZ2hsaWdodCBzb2xpZCAycHg7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtd2Via2l0OjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjst''@;'; put 'put ''LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS1vZmZzZXQ6MXB4Oy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi10b3VjaC10YXJnZXQ6Y2FsYygzNiAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv''@;'; put 'put ''bi1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dy''@;'; put 'put ''b3VuZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVy''@;'; put 'put ''YWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTc1KTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2RzLWFs''@;'; put 'put ''aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''d2hpdGUpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24t''@;'; put 'put ''NzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVj''@;'; put 'put ''dGlvbi0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUt''@;'; put 'put ''OTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1zZWNvbmRhcnktaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgw''@;'; put 'put ''MCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3MtY2xpY2s6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVu''@;'; put 'put ''LTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctY2xpY2s6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS03MDApOy0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMCk7LS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1kYW5nZXItc2Vjb25kYXJ5LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwKTstLWNkcy1h''@;'; put 'put ''bGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtc2Vjb25kYXJ5LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW52ZXJzZS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNv''@;'; put 'put ''bnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbnZlcnNlLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWFwcC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3Ry''@;'; put 'put ''dWN0aW9uLTI1KTstLWNkcy1hbGlhcy1vYmplY3Qtb3ZlcmxheS1iYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2RzLWFsaWFzLW9iamVjdC1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQ6aHNsYSgwLCAwJSwgMCUsIC42KTstLWNkcy1hbGlhcy1vYmplY3Qt''@;'; put 'put ''Y29udGFpbmVyLWJhY2tncm91bmQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXIt''@;'; put 'put ''YmFja2dyb3VuZC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1kYXJrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNv''@;'; put 'put ''bnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2U6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtaW52ZXJzZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2Utc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tkcm9wLWJhY2tncm91bmQ6aHNsYSgwLCAwJSwgMTAwJSwgLjYpOy0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWluZm86dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWluZm8tdGlu''@;'; put 'put ''dDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNzAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy1zdGF0dXMtc3VjY2Vzcy10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tODAwKTstLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZzp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWNvbG9yLW9jaHJlLTUwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTEwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS02MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXN0YXR1cy13YXJuaW5nLWRhcms6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci1yZWQtNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLWRhcms6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbDp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItY29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTst''@;'; put 'put ''LWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTstLWNkcy1hbGlhcy1zdGF0dXMtYWx0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTcwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWFsdC10aW50OnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWFsdC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC05MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXV0aWxpdHktZ3JheS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LWdyYXktc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWJsdWU6dmFy''@;'; put 'put ''KC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LWJsdWUtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxp''@;'; put 'put ''YXMtdXRpbGl0eS1saWdodC1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1saWdodC1ibHVlLXNoYWRlOnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZGFyay1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtODAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWRhcmstYmx1ZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtNTApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXV0aWxpdHktZGFyay1ibHVlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbi10aW50OnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtY29sb3ItZ3JlZW4tNTApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JlZW4tc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93OnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNTAwKTstLWNkcy1hbGlhcy11''@;'; put 'put ''dGlsaXR5LXllbGxvdy10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXllbGxvdy1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTcwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci1yZWQtNzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTUwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC04MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdGFuZ2VyaW5lOnZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItdGFuZ2VyaW5lLTQwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS01MCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci10YW5nZXJpbmUtNjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXZpb2xldDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdmlvbGV0LXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTApOy0tY2RzLWFsaWFzLXV0aWxpdHkt''@;'; put 'put ''dmlvbGV0LXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTgwMCk7LS1jZHMtYWxpYXMtdml6LWJvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS01MCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMS1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1''@;'; put 'put ''ZS02MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTItdmlvbGV0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMy1hcXVhOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTQt''@;'; put 'put ''bGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtNzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC01LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNi1hcXVhOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0xMDAw''@;'; put 'put ''KTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC03LXZpb2xldDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC04MDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTgtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtOTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC05LWJsdWU6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTAtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtMTAwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTEtYXF1YTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNjAwKTst''@;'; put 'put ''LWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMi12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTMtdmlvbGV0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTcwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTQt''@;'; put 'put ''Ymx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTUtYXF1YTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNi1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS04''@;'; put 'put ''MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1uZXV0cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LXN1Y2Nlc3M6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDApOy0tY2RzLWFsaWFzLXZpei1zZXZl''@;'; put 'put ''cml0eS13YXJuaW5nOnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTcwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LWltbWVkaWF0ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS03MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1jcml0aWNhbDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLXJlZC03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTQw''@;'; put 'put ''MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJs''@;'; put 'put ''dWUtNjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtODAwKTstLWNkcy1hbGlhcy12aXotc2Vx''@;'; put 'put ''dWVudGlhbC1ibHVlLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ibHVlLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC01MDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0xMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9s''@;'; put 'put ''ZXQtMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC00MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXZpei1zZXF1ZW50aWFsLXZpb2xldC01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlv''@;'; put 'put ''bGV0LTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtODAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtOTAwOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItdmlvbGV0LTkwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS01''@;'; put 'put ''MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1''@;'; put 'put ''ZW50aWFsLW9jaHJlLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS01MDA6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1jb2xvci1vY2hyZS01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUt''@;'; put 'put ''NzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTkwMCk7LS1jZHMtYWxpYXMtdml6LXNl''@;'; put 'put ''cXVlbnRpYWwtb2NocmUtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTEwMDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWNvbG9yLWFxdWEtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtMzAwKTst''@;'; put 'put ''LWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1h''@;'; put 'put ''cXVhLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNv''@;'; put 'put ''bG9yLWFxdWEtODAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1hcXVhLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXZpei1zZXF1ZW50aWFsLWdyZWVuLTUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tMjAw''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWdyZWVuLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi02MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXZpei1zZXF1ZW50aWFsLWdyZWVuLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tODAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi05''@;'; put 'put ''MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xv''@;'; put 'put ''ci1yZWQtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVl''@;'; put 'put ''bnRpYWwtcmVkLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNTAwOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''Y29sb3ItcmVkLTUwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy12aXot''@;'; put 'put ''c2VxdWVudGlhbC1yZWQtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC0xMDAwOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItcmVkLTEwMDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtdi0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLXYtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItdmlvbGV0LTMwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS12LTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtdi01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9s''@;'; put 'put ''ZXQtNTAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLXYtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS12LTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC03MDAp''@;'; put 'put ''Oy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtbmV1dHJhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy12aW9sZXQtYXF1YS1hLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNDAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLWEtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlvbGV0LWFxdWEtYS02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTYwMCk7LS1jZHMtYWxpYXMtdml6LWRp''@;'; put 'put ''dmVyZ2luZy12aW9sZXQtYXF1YS1hLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLXZpb2xldC1hcXVhLWEtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctdmlv''@;'; put 'put ''bGV0LWFxdWEtYS05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTkwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTMwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi00MDA6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi02MDA6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1jb2xvci1ibHVlLTYwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtYi04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgw''@;'; put 'put ''MCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWphZGUtbmV1dHJhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWotMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS0zMDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWotNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWotNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS01MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmct''@;'; put 'put ''Ymx1ZS1qYWRlLWotNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS02MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWotNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS03MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1qYWRlLWotODAw''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItamFkZS04MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1iLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tYi00MDA6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWItNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1iLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJs''@;'; put 'put ''dWUtNjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tYi03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTcwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWItODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1uZXV0cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ibHVlLWdyZWVuLWctMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMzAwKTstLWNkcy1hbGlhcy12aXot''@;'; put 'put ''ZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tZy00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1nLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1i''@;'; put 'put ''bHVlLWdyZWVuLWctNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWJsdWUtZ3JlZW4tZy03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi03MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctYmx1ZS1ncmVlbi1n''@;'; put 'put ''LTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLWctMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQt''@;'; put 'put ''Zy0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0zMDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctZ3JlZW4teWVsbG93LXJlZC1nLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTQwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVk''@;'; put 'put ''LWctNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNTAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQtZy02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi02MDApOy0tY2RzLWFsaWFzLXZpei1kaXZlcmdpbmctZ3JlZW4teWVsbG93LXJl''@;'; put 'put ''ZC1nLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdml6LWRpdmVyZ2luZy1ncmVlbi15ZWxsb3ctcmVkLW5ldXRyYWw6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctMjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxv''@;'; put 'put ''dy1yZWQtci00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNDAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQtci01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1y''@;'; put 'put ''ZWQtci02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNjAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQtci03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNzAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQt''@;'; put 'put ''ci04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy12aXotZGl2ZXJnaW5nLWdyZWVuLXllbGxvdy1yZWQtci05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtOTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWNvbG9yLXdoaXRlKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7''@;'; put 'put ''LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tOTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LWNvbG9yLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWxpZ2h0OjMwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXI6NDAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9u''@;'; put 'put ''dC13ZWlnaHQtbWVkaXVtOjUwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWJvbGQ6NjAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtZXh0cmFib2xkOjYwMDstLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0wOmNhbGMoMTAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTE6Y2FsYygxMSAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1mb250LXNpemUtMjpjYWxjKDEyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0zOmNhbGMoMTMgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTQ6Y2Fs''@;'; put 'put ''YygxNCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtNTpjYWxjKDE2ICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS02OmNhbGMoMjAgKiB2YXIoLS1jZHMt''@;'; put 'put ''aW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTc6Y2FsYygyNCAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtODpjYWxjKDMyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMp''@;'; put 'put ''KTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS05OmNhbGMoNDAgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1mYW1pbHk6IkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWY7LS1jZHMtYWxpYXMt''@;'; put 'put ''dHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHk6IkNsYXJpdHkgQ2l0eSIsICJBdmVuaXIgTmV4dCIsIHNhbnMtc2VyaWY7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tb25vc3BhY2UtZm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLCBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgbW9ub3NwYWNl''@;'; put 'put ''Oy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQ6LjE0NzVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodDouMTcwM2VtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHkteC1oZWlnaHQ6LjUxN2VtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xv''@;'; put 'put ''cjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQ6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1jb2xvci1sYXZlbmRlci02MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGF2ZW5kZXItNzAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstb24tY29sb3JiZzp2YXIoLS1jZHMtZ2xvYmFsLWNv''@;'; put 'put ''bG9yLWJsYWNrKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplOmNhbGMoMTQgKiB2YXIoLS1jZHMtaW50ZXJuYWwtc2NhbGUtMykpOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodDoxLjQyODU3MTRlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJv''@;'; put 'put ''ZHktbGV0dGVyLXNwYWNpbmc6LS4wMDcxNDI4NmVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodDo0MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtc2l6ZTpjYWxjKDQwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlh''@;'; put 'put ''cy10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQ6MS4xZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nOi0uMDEyNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXdlaWdodDo1MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1o''@;'; put 'put ''ZWFkaW5nLWZvbnQtc2l6ZTpjYWxjKDMyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRpbmctbGluZS1oZWlnaHQ6MS4xMjVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRpbmctbGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW07LS1j''@;'; put 'put ''ZHMtYWxpYXMtdHlwb2dyYXBoeS1oZWFkaW5nLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWZvbnQtc2l6ZTpjYWxjKDMyICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWxpbmUtaGVp''@;'; put 'put ''Z2h0OjEuMTI1ZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1oZWFkbGluZS1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWZvbnQtd2VpZ2h0OjUwMDstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZTpjYWxjKDI0ICog''@;'; put 'put ''dmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0OjEuMzMzMzMzZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS10aXRsZS1sZXR0ZXItc3BhY2luZzotLjAwODMzMzMzZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS10aXRs''@;'; put 'put ''ZS1mb250LXdlaWdodDo1MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZTpjYWxjKDIwICogdmFyKC0tY2RzLWludGVybmFsLXNjYWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQ6MS4yZW07LS1jZHMtYWxpYXMtdHlwb2dy''@;'; put 'put ''YXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nOi0uMDFlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQ6NTAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemU6Y2FsYygxNiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7''@;'; put 'put ''LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0OjEuNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZzotLjAxMjVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQ6NTAwOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXNpemU6Y2FsYygxNiAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0OjEuNWVtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbWVzc2FnZS1sZXR0ZXItc3Bh''@;'; put 'put ''Y2luZzotLjAxMjVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC13ZWlnaHQ6Y2FsYyg0MDAgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemU6Y2FsYygxMyAqIHZhcigtLWNkcy1p''@;'; put 'put ''bnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQ6MS4yMzA3N2VtOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nOi0uMDA3NjkyZW07LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnkt''@;'; put 'put ''Zm9udC13ZWlnaHQ6NDAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemU6Y2FsYygxMSAqIHZhcigtLWNkcy1pbnRlcm5hbC1zY2FsZS0zKSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0OjEuNDU0NTQ1ZW07LS1jZHMtYWxpYXMtdHlw''@;'; put 'put ''b2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nOi4wMTgxODJlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWlnaHQ6NDAwOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtc2l6ZTpjYWxjKDEwICogdmFyKC0tY2RzLWludGVybmFsLXNj''@;'; put 'put ''YWxlLTMpKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1saW5lLWhlaWdodDoxLjJlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2luZzouMDVlbTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdo''@;'; put 'put ''dDo1MDA7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1pbmZvLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3VjY2Vzcy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTgwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS13YXJuaW5nLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtOTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC04MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcjp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWludGVybmFsLXNjYWxlLTE6Y2FsYygoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpICogdmFyKC0tY2RzLWdsb2JhbC1zY2FsZS1sYXlvdXQtc3BhY2UpKTstLWNkcy1pbnRlcm5hbC1zY2FsZS0yOmNhbGMoKDFyZW0gLyB2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWJhc2UpKSAqIHZhcigtLWNkcy1nbG9iYWwtc2NhbGUtc3BhY2UpKTstLWNkcy1pbnRlcm5hbC1zY2FsZS0zOmNhbGMoKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSAqIHZhcigtLWNkcy1nbG9iYWwtc2NhbGUtdHlwb2dyYXBoeSkpfWh0bWx7Zm9udC1zaXplOmNhbGMo''@;'; put 'put ''KHZhcigtLWNkcy1nbG9iYWwtYmFzZSkvMTYpKjEwMCUpO2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnR9Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmluaGVyaXQhaW1wb3J0YW50fVtjZHMtYmFzZS1mb250PSIxNiJdey0tY2RzLWdsb2JhbC1iYXNlOjE2fVtjZHMtdGhlbWVd''@;'; put 'put ''e2JhY2tncm91bmQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1hcHAtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTUwMCl9W2Nkcy1jb250cm9sXSA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBv''@;'; put 'put ''Z3JhcGh5LWNvbG9yLTIwMCl9W2Nkcy1jb250cm9sXSA6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMCl9W2Nkcy1jb250cm9sXVtfZGlzYWJsZWRdey0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTIwMDp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtc3RhdHVzLWRpc2FibGVkKX1odG1sW2Nkcy1mb2N1cy10cmFwXXtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3dpZHRoOjEwMHZ3O2hlaWdodDoxMDB2aH1bY2RzLXRleHRde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LWZhbWlseSk7bWFyZ2lu''@;'; put 'put ''LXRvcDowO21hcmdpbi1ib3R0b206MH1bY2RzLXRleHRdW2Nkcy1sYXlvdXR+PWdyaWRdOmFmdGVyLFtjZHMtdGV4dF1bY2RzLWxheW91dH49Z3JpZF06YmVmb3JlLFtjZHMtdGV4dF1bY2RzLWxheW91dH49aG9yaXpvbnRhbF06YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj1ob3Jpem9u''@;'; put 'put ''dGFsXTpiZWZvcmUsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF06YWZ0ZXIsW2Nkcy10ZXh0XVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF06YmVmb3Jle2Rpc3BsYXk6bm9uZX1bY2RzLXRleHQqPWRpc3BsYXldLFtjZHMtdGV4dCo9aGVhZGluZ10sW2Nkcy10ZXh0Kj1oZWFkbGluZV0s''@;'; put 'put ''W2Nkcy10ZXh0Kj1zZWN0aW9uXSxbY2RzLXRleHQqPXN1YnNlY3Rpb25dLFtjZHMtdGV4dCo9dGl0bGVde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci00MDAp''@;'; put 'put ''fVtjZHMtdGV4dCo9Ym9keV0sW2Nkcy10ZXh0Kj1jYXB0aW9uXSxbY2RzLXRleHQqPW1lc3NhZ2VdLFtjZHMtdGV4dCo9c2Vjb25kYXJ5XSxbY2RzLXRleHQqPXNtYWxsY2FwdGlvbl17Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTUwMCl9W2Nkcy10ZXh0Kj1pbmxp''@;'; put 'put ''bmVde3dpZHRoOmF1dG8haW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH1bY2RzLXRleHQqPWRpc3BsYXlde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlw''@;'; put 'put ''b2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlzcGxheS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4''@;'; put 'put ''dCo9ZGlzcGxheV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZGlz''@;'; put 'put ''cGxheS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9ZGlzcGxheV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10''@;'; put 'put ''b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRpc3BsYXktbGluZS1oZWlnaHQpIC0gMWVt''@;'; put 'put ''KS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWhlYWRpbmddLFtjZHMtdGV4dCo9aGVhZGxpbmVde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGluZy1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkaW5n''@;'; put 'put ''LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGluZy1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWhlYWRpbmctbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4dCo9aGVhZGluZ106YmVm''@;'; put 'put ''b3JlLFtjZHMtdGV4dCo9aGVhZGxpbmVdOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10''@;'; put 'put ''eXBvZ3JhcGh5LWhlYWRpbmctbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWhlYWRpbmddOmFmdGVyLFtjZHMtdGV4dCo9aGVhZGxpbmVdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2Fs''@;'; put 'put ''YygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtdHlwb2dyYXBoeS1oZWFkaW5nLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj10aXRsZV17Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10aXRsZS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlw''@;'; put 'put ''b2dyYXBoeS10aXRsZS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdGl0bGUtbGV0dGVyLXNwYWNpbmcpfVtjZHMtdGV4dCo9dGl0''@;'; put 'put ''bGVdOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxpbmUt''@;'; put 'put ''aGVpZ2h0KSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj10aXRsZV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdo''@;'; put 'put ''dCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4w''@;'; put 'put ''NDRlbSl9W2Nkcy10ZXh0Kj1zZWN0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKX1bY2RzLXRleHQqPXNlY3Rpb25dOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0''@;'; put 'put ''OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRl''@;'; put 'put ''eHQqPXNlY3Rpb25dOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2Vu''@;'; put 'put ''ZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zdWJzZWN0aW9uXXtmb250LXNp''@;'; put 'put ''emU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rp''@;'; put 'put ''b24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25dOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4t''@;'; put 'put ''Ym90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXN1YnNlY3Rpb25d''@;'; put 'put ''OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkg''@;'; put 'put ''LSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1ib2R5XXtmb250LXdlaWdodDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO2xpbmUtaGVpZ2h0''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KX1bY2RzLXRleHQqPWJvZHldOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9w''@;'; put 'put ''LWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjFlbSl9W2Nkcy10ZXh0Kj1ib2R5XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9w''@;'; put 'put ''OmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfWJvZHlbY2RzLXRleHQqPWJvZHldOmFmdGVyLGJvZHlbY2RzLXRleHQqPWJvZHldOmJlZm9yZXtjb250ZW50Om5vbmV9W2Nkcy10ZXh0Kj1tZXNzYWdlXXtmb250LXNpemU6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbWVzc2FnZS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQpO2xl''@;'; put 'put ''dHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxldHRlci1zcGFjaW5nKX1bY2RzLXRleHQqPW1lc3NhZ2VdOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1lc3NhZ2UtbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPW1lc3NhZ2VdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9j''@;'; put 'put ''aztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkt''@;'; put 'put ''eC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1tZXNzYWdlLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnlde2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZv''@;'; put 'put ''bnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9W2Nkcy10ZXh0Kj1zZWNvbmRhcnldOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdh''@;'; put 'put ''cC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNlY29uZGFyeS1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c2Vjb25kYXJ5XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDtt''@;'; put 'put ''YXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCh2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1jYXB0aW9uXXtmb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRl''@;'; put 'put ''ci1zcGFjaW5nKX1bY2RzLXRleHQqPWNhcHRpb25dOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQpIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWNhcHRpb25dOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9u''@;'; put 'put ''LWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1zbWFsbGNhcHRpb25de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5''@;'; put 'put ''LXNtYWxsY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1sZXR0ZXItc3BhY2luZyl9''@;'; put 'put ''W2Nkcy10ZXh0Kj1zbWFsbGNhcHRpb25dOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygodmFyKC0tY2RzLWdsb2JhbC10''@;'; put 'put ''eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1saW5lLWhlaWdodCkgLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9c21hbGxjYXB0aW9uXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc21h''@;'; put 'put ''bGxjYXB0aW9uLWxpbmUtaGVpZ2h0KSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0fj1saW5rXXtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvcikhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50O2xpbmUtaGVp''@;'; put 'put ''Z2h0OmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOmZvY3Vze291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lKTtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWlu''@;'; put 'put ''dGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0KX1bY2RzLXRleHR+PWxpbmtdOmhvdmVye2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyKSFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1saW5rXTp2aXNpdGVkOm5vdChbY2RzLXRleHR+PXN0YXRpY10pLFtjZHMt''@;'; put 'put ''dGV4dH49bGlua11bY2RzLXRleHR+PXZpc2l0ZWRde2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpbmtdOnZpc2l0ZWQ6bm90KFtjZHMtdGV4dH49c3RhdGljXSk6aG92ZXIsW2Nkcy10ZXh0fj1saW5r''@;'; put 'put ''XVtjZHMtdGV4dH49dmlzaXRlZF06aG92ZXJ7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3ZlcikhaW1wb3J0YW50fUBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApe1tjZHMtdGV4dD1saW5rXTpmb2N1c3tvdXRs''@;'; put 'put ''aW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS13ZWJraXQpfX1bY2RzLXRleHR+PWNvZGVde2NvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEuMWVtfVtjZHMtZGl2aWRlcl17ZGlz''@;'; put 'put ''cGxheTpibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcikgMCAwIDAgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgt''@;'; put 'put ''MTAwKSBpbnNldH1bY2RzLXRleHR+PWV4dHJhYm9sZF17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWV4dHJhYm9sZCkhaW1wb3J0YW50fVtjZHMtdGV4dH49Ym9sZF17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZv''@;'; put 'put ''bnQtd2VpZ2h0LWJvbGQpIWltcG9ydGFudH1bY2RzLXRleHR+PXNlbWlib2xkXXtmb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpIWltcG9ydGFudH1bY2RzLXRleHR+PW1lZGl1bV17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSkhaW1wb3J0YW50fVtjZHMtdGV4dH49cmVndWxhcl17Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpIWltcG9ydGFudH1bY2RzLXRleHR+PWxpZ2h0XXtmb250LXdlaWdodDp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtbGlnaHQpIWltcG9ydGFudH1bY2RzLXRleHR+PWNhcGl0YWxpemVde3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemUhaW1wb3J0YW50fVtjZHMtdGV4dH49dXBwZXJjYXNlXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtdGV4dH49bG93ZXJjYXNlXXt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2UhaW1wb3J0YW50fVtjZHMtdGV4dH49dHJ1bmNhdGVde292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpcyFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLXRleHR+PXRydW5jYXRlXTphZnRlcixbY2RzLXRleHR+PXRydW5jYXRlXTpiZWZvcmV7Y29udGVudDpub25lfVtjZHMtdGV4dH49anVzdGlmeV17dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1bY2RzLXRleHR+PWxlZnRde3RleHQtYWxpZ246bGVmdCFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy10ZXh0fj1yaWdodF17dGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnR9W2Nkcy10ZXh0fj1jZW50ZXJde3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH1bY2RzLXRleHR+PW1vbm9zcGFjZV17Zm9udC1mYW1pbHk6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LW1vbm9zcGFj''@;'; put 'put ''ZS1mb250LWZhbWlseSl9W2Nkcy10ZXh0fj1saGVde3BhZGRpbmc6LjA1cHggMH1bY2RzLXRleHR+PWxoZV06YmVmb3Jle2NvbnRlbnQ6IiI7bWFyZ2luLXRvcDotLjEyNGVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy10ZXh0fj1saGVdOmFmdGVye2NvbnRlbnQ6IiI7bWFyZ2luLWJv''@;'; put 'put ''dHRvbTotLjIyMWVtO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjB9W2Nkcy1sYXlvdXR+PWRpc2FibGUtbGhlXTphZnRlcixbY2RzLWxheW91dH49ZGlzYWJsZS1saGVdOmJlZm9yZSxbY2RzLXRleHR+PWRpc2FibGUtbGhlXTphZnRlcixbY2RzLXRleHR+PWRpc2FibGUtbGhlXTpiZWZvcmV7Y29u''@;'; put 'put ''dGVudDpub25lfVtjZHMtdGV4dCo9aDBdLFtjZHMtdGV4dCo9aDFdLFtjZHMtdGV4dCo9aDJdLFtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtZmFtaWx5OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1oZWFkZXItZm9u''@;'; put 'put ''dC1mYW1pbHksICJDbGFyaXR5IENpdHkiLCAiQXZlbmlyIE5leHQiLCBzYW5zLXNlcmlmKTtmb250LXNpemU6MnJlbTtmb250LXdlaWdodDoyMDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7bGluZS1oZWlnaHQ6MS4yZW07bGV0dGVyLXNwYWNpbmc6LS4w''@;'; put 'put ''MTI1ZW19W2Nkcy10ZXh0Kj1oMF06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjJlbSAtIDFlbSkvMikpKi0xKSAr''@;'; put 'put ''IC4wMzdlbSl9W2Nkcy10ZXh0Kj1oMF06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9n''@;'; put 'put ''cmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS4yZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDFdLFtjZHMtdGV4dCo9aDJdLFtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtj''@;'; put 'put ''ZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtc2l6ZToxLjZyZW07bGluZS1oZWlnaHQ6MS41ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTU2ZW19W2Nkcy10ZXh0Kj1oMV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206''@;'; put 'put ''Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuMjVlbSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgxXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFy''@;'; put 'put ''KC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyAuMjVlbSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWgy''@;'; put 'put ''XSxbY2RzLXRleHQqPWgzXSxbY2RzLXRleHQqPWg0XSxbY2RzLXRleHQqPWg1XSxbY2RzLXRleHQqPWg2XXtmb250LXNpemU6MS40cmVtO2xpbmUtaGVpZ2h0OjEuNzE0M2VtO2xldHRlci1zcGFjaW5nOi0uMDE3ODU3ZW19W2Nkcy10ZXh0Kj1oMl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxh''@;'; put 'put ''eTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjcxNDNlbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1oMl06YWZ0ZXJ7Y29udGVudDoiIjtk''@;'; put 'put ''aXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''dHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS43MTQzZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDNdLFtjZHMtdGV4dCo9aDRdLFtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtc2l6ZToxLjFyZW07bGluZS1oZWlnaHQ6MS4wOTA5ZW07bGV0''@;'; put 'put ''dGVyLXNwYWNpbmc6LS4wMTM2MzZlbX1bY2RzLXRleHQqPWgzXTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuMDkw''@;'; put 'put ''OWVtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWgzXTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDllbSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1oNF0sW2Nkcy10ZXh0Kj1oNV0sW2Nkcy10ZXh0''@;'; put 'put ''Kj1oNl17Zm9udC1zaXplOi45cmVtO2xpbmUtaGVpZ2h0OjEuMzMzMzMzZW07bGV0dGVyLXNwYWNpbmc6LS4wMTExMTFlbX1bY2RzLXRleHQqPWg0XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuMzMzMzMzZW0gLSAxZW0pLzIpKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDRdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0g''@;'; put 'put ''LSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKDEuMzMzMzMzZW0gLSAxZW0pLzIpKSot''@;'; put 'put ''MSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9aDVdLFtjZHMtdGV4dCo9aDZde2ZvbnQtc2l6ZTouOHJlbTtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS41ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTI1ZW19W2Nkcy10ZXh0Kj1oNV06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazto''@;'; put 'put ''ZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuMjVlbSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPWg1XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6''@;'; put 'put ''MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyAuMjVl''@;'; put 'put ''bSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPWg2XXtmb250LXNpemU6LjdyZW07Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOi0uMDMxMjVlbX1bY2RzLXRleHQqPWg2XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRv''@;'; put 'put ''bTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIC4yNWVtKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9aDZdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIC4yNWVtKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9''@;'; put 'put ''cDBdLFtjZHMtdGV4dCo9cDFde2ZvbnQtc2l6ZToxLjJyZW07Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xvci01MDApO2xpbmUtaGVpZ2h0OjEuMTY2NjdlbTtsZXR0ZXItc3BhY2luZzotLjAwODMzM2VtfVtjZHMtdGV4dCo9cDBdOmJlZm9y''@;'; put 'put ''ZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tYm90dG9tOmNhbGMoKCh2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpICsgY2FsYygoMS4xNjY2N2VtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXAw''@;'; put 'put ''XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQp''@;'; put 'put ''IC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjE2NjY3ZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfVtjZHMtdGV4dCo9cDFde2ZvbnQtc2l6ZTouN3JlbTtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwKTtsaW5l''@;'; put 'put ''LWhlaWdodDoxLjcxNDI5ZW07bGV0dGVyLXNwYWNpbmc6LS4wMTQyODZlbX1bY2RzLXRleHQqPXAxXTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAt''@;'; put 'put ''aGVpZ2h0KSArIGNhbGMoKDEuNzE0MjllbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wMV06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBo''@;'; put 'put ''eS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS43MTQyOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXAyXSxb''@;'; put 'put ''Y2RzLXRleHQqPXAzXSxbY2RzLXRleHQqPXA0XSxbY2RzLXRleHQqPXA1XXtmb250LXNpemU6LjY1cmVtO2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwKTtsaW5lLWhlaWdodDoxLjg0NjE1ZW07bGV0dGVyLXNwYWNpbmc6LS4wMDc2''@;'; put 'put ''OTJlbX1bY2RzLXRleHQqPXAyXTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSArIGNhbGMoKDEuODQ2MTVlbSAtIDFlbSkvMikpKi0x''@;'; put 'put ''KSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wMl06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS44NDYxNWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXAzXSxbY2RzLXRleHQqPXA0XSxbY2RzLXRleHQqPXA1XXtmb250LXdlaWdo''@;'; put 'put ''dDo0MDB9W2Nkcy10ZXh0Kj1wM106YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyBjYWxjKCgxLjg0NjE1ZW0gLSAxZW0pLzIpKSot''@;'; put 'put ''MSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9cDNdOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10''@;'; put 'put ''eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHkteC1oZWlnaHQpKSArIGNhbGMoKDEuODQ2MTVlbSAtIDFlbSkvMikpKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1wNF0sW2Nkcy10ZXh0Kj1wNV17Zm9udC1zaXplOi42cmVtO2ZvbnQtd2Vp''@;'; put 'put ''Z2h0OjYwMDtsaW5lLWhlaWdodDoyZW07bGV0dGVyLXNwYWNpbmc6LS4wMDgzMzNlbX1bY2RzLXRleHQqPXA0XTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLWJvdHRvbTpjYWxjKCgodmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRv''@;'; put 'put ''cC1nYXAtaGVpZ2h0KSArIC41ZW0pKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wNF06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdo''@;'; put 'put ''dCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgLjVlbSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXA1XXtmb250LXdlaWdodDo0MDB9W2Nkcy10ZXh0Kj1wNV06YmVmb3Jl''@;'; put 'put ''e2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkgKyAuNWVtKSotMSkgKyAuMDM3ZW0pfVtjZHMtdGV4dCo9cDVdOmFmdGVye2NvbnRlbnQ6IiI7ZGlz''@;'; put 'put ''cGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi10b3A6Y2FsYygoKCgxZW0gLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktdG9wLWdhcC1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWFzY2VuZGVyLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHkteC1oZWlnaHQpKSArIC41ZW0pKi0xKSAtIC4wNDRlbSl9W2Nkcy10ZXh0Kj1wNl0sW2Nkcy10ZXh0Kj1wN10sW2Nkcy10ZXh0Kj1wOF17Zm9udC1zaXplOi41NXJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7''@;'; put 'put ''bGluZS1oZWlnaHQ6MS4wOTA5MDllbTtsZXR0ZXItc3BhY2luZzouMDE4MTgyZW19W2Nkcy10ZXh0Kj1wNl06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3At''@;'; put 'put ''Z2FwLWhlaWdodCkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXA2XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBv''@;'; put 'put ''Z3JhcGh5LXRvcC1nYXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQq''@;'; put 'put ''PXA3XSxbY2RzLXRleHQqPXA4XXtmb250LXdlaWdodDo0MDB9W2Nkcy10ZXh0Kj1wN106YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3AtZ2FwLWhlaWdodCkg''@;'; put 'put ''KyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpICsgLjAzN2VtKX1bY2RzLXRleHQqPXA3XTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoKCgoMWVtIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXRvcC1n''@;'; put 'put ''YXAtaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1hc2NlbmRlci1oZWlnaHQpIC0gdmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXgtaGVpZ2h0KSkgKyBjYWxjKCgxLjA5MDkwOWVtIC0gMWVtKS8yKSkqLTEpIC0gLjA0NGVtKX1bY2RzLXRleHQqPXA4XXtmb250LXNp''@;'; put 'put ''emU6LjVyZW07bGluZS1oZWlnaHQ6MS4yZW07bGV0dGVyLXNwYWNpbmc6LjAyZW19W2Nkcy10ZXh0Kj1wOF06YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDt3aWR0aDowO21hcmdpbi1ib3R0b206Y2FsYygoKHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS10b3At''@;'; put 'put ''Z2FwLWhlaWdodCkgKyBjYWxjKCgxLjJlbSAtIDFlbSkvMikpKi0xKSArIC4wMzdlbSl9W2Nkcy10ZXh0Kj1wOF06YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKCgoKDFlbSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBo''@;'; put 'put ''eS10b3AtZ2FwLWhlaWdodCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYXNjZW5kZXItaGVpZ2h0KSAtIHZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS14LWhlaWdodCkpICsgY2FsYygoMS4yZW0gLSAxZW0pLzIpKSotMSkgLSAuMDQ0ZW0pfTpob3N0LDpyb290ey0tXDNiNCAx''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4eHMpOy0tXDNiNCAyOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4cyk7LS1cM2I0IDM6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UteHMpOy0tXDNiNCA0OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXNt''@;'; put 'put ''KTstLVwzYjQgNTp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1zcGFjZS1tZCk7LS1cM2I0IDY6dmFyKC0tY2RzLWdsb2JhbC1sYXlvdXQtc3BhY2UtbGcpOy0tXDNiNCA3OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXhsKTstLVwzYjQgODp2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1z''@;'; put 'put ''cGFjZS14eGwpOy0tXDNiNCA5OnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXNwYWNlLXh4eGwpfVtjZHMtbGF5b3V0Kj0iYWxpZ246ZmlsbCJdPip7ZmxleC1ncm93OjEhaW1wb3J0YW50O2ZsZXgtYmFzaXM6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJ3cmFwOm5vbmUiXXtmbGV4LXdyYXA6''@;'; put 'put ''bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbjpzaHJpbmsiXXtmbGV4LXNocmluazoxIWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2''@;'; put 'put ''cHgpe1tjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6ZmlsbCJdPip7ZmxleC1ncm93OjEhaW1wb3J0YW50O2ZsZXgtYmFzaXM6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJ3cmFwQHhzOm5vbmUiXXtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduQHhzOnN0cmV0''@;'; put 'put ''Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzaHJpbmsiXXtmbGV4LXNocmluazoxIWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dCo9ImFsaWduQHNtOmZpbGwiXT4qe2Zs''@;'; put 'put ''ZXgtZ3JvdzoxIWltcG9ydGFudDtmbGV4LWJhc2lzOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0id3JhcEBzbTpub25lIl17ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpzdHJldGNoIl17ZmxleC1ncm93OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ25Ac206c2hyaW5rIl17ZmxleC1zaHJpbms6MSFpbXBvcnRhbnQ7ZmxleC1ncm93OjAhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpmaWxsIl0+KntmbGV4LWdyb3c6MSFpbXBvcnRhbnQ7ZmxleC1iYXNpczowIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49IndyYXBAbWQ6bm9uZSJde2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6c3RyZXRjaCJde2ZsZXgtZ3JvdzoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImFsaWduQG1kOnNocmluayJde2ZsZXgtc2hyaW5rOjEhaW1w''@;'; put 'put ''b3J0YW50O2ZsZXgtZ3JvdzowIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXtbY2RzLWxheW91dCo9ImFsaWduQGxnOmZpbGwiXT4qe2ZsZXgtZ3JvdzoxIWltcG9ydGFudDtmbGV4LWJhc2lzOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0id3JhcEBsZzpub25lIl17Zmxl''@;'; put 'put ''eC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpzdHJldGNoIl17ZmxleC1ncm93OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c2hyaW5rIl17ZmxleC1zaHJpbms6MSFpbXBvcnRhbnQ7ZmxleC1ncm93OjAhaW1wb3J0YW50fX1AbWVkaWEg''@;'; put 'put ''KG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6ZmlsbCJdPip7ZmxleC1ncm93OjEhaW1wb3J0YW50O2ZsZXgtYmFzaXM6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJ3cmFwQHhsOm5vbmUiXXtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH1bY2RzLWxheW91dCo9''@;'; put 'put ''ImFsaWduQHhsOnN0cmV0Y2giXXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpzaHJpbmsiXXtmbGV4LXNocmluazoxIWltcG9ydGFudDtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXXtkaXNwbGF5OmZsZXg7ZmxleC1k''@;'; put 'put ''aXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktaXRlbXM6ZmxleC1zdGFydDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjEwMCU7bWFyZ2luOjA7bWluLWhlaWdodDowfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dH49aG9yaXpvbnRhbF0sW2Nkcy1s''@;'; put 'put ''YXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0fj12ZXJ0aWNhbF0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtdGV4dF17d2lkdGg6aW5pdGlhbCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp0b3AiXXthbGlnbi1pdGVtczpm''@;'; put 'put ''bGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246Ym90dG9tIl17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250''@;'; put 'put ''ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduOmNlbnRlciJde2FsaWduLWl0ZW1zOmNl''@;'; put 'put ''bnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXI6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ246dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1jb250ZW50OnN0''@;'; put 'put ''cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0''@;'; put 'put ''cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ246c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0sW2Nk''@;'; put 'put ''cy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5''@;'; put 'put ''b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMt''@;'; put 'put ''bGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9y''@;'; put 'put ''aXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnRvcCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpib3R0b20iXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxh''@;'; put 'put ''eW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNv''@;'; put 'put ''bnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl17YWxpZ24t''@;'; put 'put ''aXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJvcmRlckB4czpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxd''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLXN0cmV0Y2giXXtq''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtc3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpz''@;'; put 'put ''dHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJhbGlnbkB4czpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpjZW50ZXIi''@;'; put 'put ''XSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJh''@;'; put 'put ''bGlnbkB4czp0b3AiXXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Ym90dG9tIl17YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpyaWdo''@;'; put 'put ''dCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF1b''@;'; put 'put ''Y2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpib3R0b20iXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9''@;'; put 'put ''ImFsaWduQHNtOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z25Ac206dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0''@;'; put 'put ''fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJvcmRlckBzbTpyZXZlcnNlIl17''@;'; put 'put ''ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6''@;'; put 'put ''b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwtc3RyZXRjaCJdPip7ZmxleC1ncm93''@;'; put 'put ''OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpzdHJl''@;'; put 'put ''dGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2Rz''@;'; put 'put ''LWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLWNlbnRlciJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRv''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp0b3AiXXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Ym90dG9tIl17YWxpZ24tc2VsZjpmbGV4LWVuZH1b''@;'; put 'put ''Y2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9''@;'; put 'put ''fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOnRvcCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXXthbGlnbi1p''@;'; put 'put ''dGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOnJpZ2h0Il17anVzdGlmeS1jb250ZW50''@;'; put 'put ''OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9y''@;'; put 'put ''aXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJvcmRlckBtZDpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDth''@;'; put 'put ''bGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtc3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpzdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJhbGlnbkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSxbY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLWNl''@;'; put 'put ''bnRlciJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp0b3AiXXthbGlnbi1zZWxmOmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltj''@;'; put 'put ''ZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl17YWxpZ24tc2VsZjpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxh''@;'; put 'put ''eW91dCo9ImFsaWduQG1kOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp0b3AiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0''@;'; put 'put ''fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PWhvcml6''@;'; put 'put ''b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpyaWdodCJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRl''@;'; put 'put ''cn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRl''@;'; put 'put ''cjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAbGc6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ25AbGc6dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1jb250''@;'; put 'put ''ZW50OnN0cmV0Y2g7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJde2Fs''@;'; put 'put ''aWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z25AbGc6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Y2VudGVyIl0sW2Nkcy1sYXlv''@;'; put 'put ''dXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1jZW50ZXIiXXttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dG9w''@;'; put 'put ''Il17YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOmJvdHRvbSJde2FsaWduLXNlbGY6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6cmlnaHQiXXttYXJnaW4t''@;'; put 'put ''bGVmdDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0iYWxpZ25AeGw6dG9wIl17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmJvdHRvbSJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6''@;'; put 'put ''bGVmdCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0''@;'; put 'put ''aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWhvcml6b250''@;'; put 'put ''YWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9Im9yZGVyQHhsOnJldmVyc2UiXXtmbGV4LWRpcmVj''@;'; put 'put ''dGlvbjpyb3ctcmV2ZXJzZX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNoO2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxh''@;'; put 'put ''eW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49aG9yaXpvbnRhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnN0cmV0Y2giXT4qe2Zs''@;'; put 'put ''ZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj1o''@;'; put 'put ''b3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdLFtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtY2VudGVyIl17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OmF1dG8haW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOnRvcCJde2FsaWduLXNlbGY6ZmxleC1zdGFydH1bY2RzLWxheW91dH49aG9yaXpvbnRhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpib3R0b20iXXthbGlnbi1zZWxmOmZsZXgtZW5kfVtjZHMtbGF5b3V0''@;'; put 'put ''fj1ob3Jpem9udGFsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PWhvcml6b250YWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6bGVmdCJde21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudH19W2Nkcy1sYXlv''@;'; put 'put ''dXR+PXZlcnRpY2FsXXt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpsZWZ0Il17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1b''@;'; put 'put ''Y2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpyaWdodCJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ246Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0ib3JkZXI6cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1b''@;'; put 'put ''Y2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNofVtjZHMtbGF5''@;'; put 'put ''b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0''@;'; put 'put ''fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbjpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246dmVydGljYWwtY2VudGVyIl17bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMt''@;'; put 'put ''bGF5b3V0Kj0iYWxpZ246Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnRvcCJde21hcmdpbi1ib3R0''@;'; put 'put ''b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0b31b''@;'; put 'put ''Y2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde21hcmdpbi1yaWdodDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1z''@;'; put 'put ''dGFydH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpib3R0b20iXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6bGVmdCJde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6cmlnaHQiXXthbGlnbi1pdGVtczpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1jZW50ZXIiXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0''@;'; put 'put ''fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmhvcml6b250YWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu''@;'; put 'put ''dGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9Im9yZGVyQHhzOnJldmVyc2UiXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1zdHJldGNoIl17anVzdGlmeS1jb250''@;'; put 'put ''ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtc3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1zdHJldGNoIl17YWxpZ24taXRl''@;'; put 'put ''bXM6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl0+''@;'; put 'put ''KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHhzOnZlcnRpY2FsLWNlbnRlciJde21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1''@;'; put 'put ''dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHhzOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLXNlbGY6Y2VudGVyfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp0b3AiXXttYXJnaW4tYm90dG9tOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpib3R0b20iXXttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbkB4czpyaWdodCJde21hcmdpbi1sZWZ0OmF1dG99W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXttYXJnaW4tcmlnaHQ6YXV0b319QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpe1tjZHMtbGF5b3V0fj12ZXJ0aWNhbF1b''@;'; put 'put ''Y2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJhbGlnbkBzbTpsZWZ0Il17YWxpZ24taXRlbXM6ZmxleC1zdGFydH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJde2FsaWduLWl0ZW1zOmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnZl''@;'; put 'put ''cnRpY2FsLWNlbnRlciJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25A''@;'; put 'put ''c206Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0ib3JkZXJAc206cmV2ZXJzZSJde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2Rz''@;'; put 'put ''LWxheW91dCo9ImFsaWduQHNtOnZlcnRpY2FsLXN0cmV0Y2giXXtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1zdHJldGNoIl0+KntmbGV4LWdyb3c6MX1bY2RzLWxheW91dH49dmVydGljYWxdW2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMt''@;'; put 'put ''bGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206''@;'; put 'put ''dmVydGljYWwtY2VudGVyIl17bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl0sW2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmhvcml6b250YWwt''@;'; put 'put ''Y2VudGVyIl17YWxpZ24tc2VsZjpjZW50ZXJ9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOmJvdHRvbSJde21h''@;'; put 'put ''cmdpbi10b3A6YXV0byFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHNtOnJpZ2h0Il17bWFyZ2luLWxlZnQ6YXV0b31bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25Ac206bGVmdCJde21hcmdpbi1yaWdodDphdXRv''@;'; put 'put ''fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl17anVzdGlm''@;'; put 'put ''eS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1l''@;'; put 'put ''bmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLWl0ZW1z''@;'; put 'put ''OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlckBtZDpyZXZlcnNlIl17ZmxleC1k''@;'; put 'put ''aXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOnZlcnRpY2Fs''@;'; put 'put ''LXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6c3RyZXRjaCJd''@;'; put 'put ''e2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQG1kOmNlbnRl''@;'; put 'put ''ciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpjZW50ZXIiXSxbY2RzLWxh''@;'; put 'put ''eW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dG9wIl17bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Ym90dG9tIl17bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNh''@;'; put 'put ''bF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNh''@;'; put 'put ''bF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtY2VudGVyIl17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbkBsZzpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91''@;'; put 'put ''dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlckBsZzpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNofVtj''@;'; put 'put ''ZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp2ZXJ0aWNhbC1jZW50ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0''@;'; put 'put ''fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGlnbi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0i''@;'; put 'put ''YWxpZ25AbGc6dG9wIl17bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl17bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z25AbGc6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99fUBtZWRpYSAobWluLXdpZHRoOjE0NDBweCl7W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0i''@;'; put 'put ''YWxpZ25AeGw6dG9wIl17anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9tIl17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhs''@;'; put 'put ''OmxlZnQiXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il17YWxpZ24taXRlbXM6ZmxleC1lbmR9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dmVydGljYWwtY2VudGVy''@;'; put 'put ''Il17anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXXth''@;'; put 'put ''bGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdW2Nkcy1sYXlvdXQqPSJvcmRlckB4bDpyZXZlcnNlIl17ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxp''@;'; put 'put ''Z25AeGw6dmVydGljYWwtc3RyZXRjaCJde2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnZlcnRpY2FsLXN0cmV0Y2giXT4qe2ZsZXgtZ3JvdzoxfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF1bY2RzLWxheW91dCo9ImFs''@;'; put 'put ''aWduQHhsOmhvcml6b250YWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PXZlcnRp''@;'; put 'put ''Y2FsXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6c3RyZXRjaCJdPip7ZmxleC1ncm93OjF9W2Nkcy1sYXlvdXR+PXZlcnRpY2FsXT5bY2RzLWxheW91dCo9ImFsaWduQHhsOmNlbnRlciJdLFtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0aWNhbC1jZW50''@;'; put 'put ''ZXIiXXttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXSxbY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6aG9yaXpvbnRhbC1jZW50ZXIiXXthbGln''@;'; put 'put ''bi1zZWxmOmNlbnRlcn1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl17bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6Ym90dG9tIl17bWFyZ2luLXRvcDphdXRv''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49dmVydGljYWxdPltjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6cmlnaHQiXXttYXJnaW4tbGVmdDphdXRvfVtjZHMtbGF5b3V0fj12ZXJ0aWNhbF0+W2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpsZWZ0Il17bWFyZ2luLXJpZ2h0OmF1dG99fVtjZHMtbGF5b3V0''@;'; put 'put ''fj1ncmlkXXtkaXNwbGF5OmdyaWQ7YWxpZ24taXRlbXM6c3RhcnQ7YWxpZ24tY29udGVudDpzdGFydDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KHZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LWdyaWQtY29scyksMWZyKTt3aWR0aDoxMDAlfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5''@;'; put 'put ''b3V0Kj1yb3dzXXtncmlkLXRlbXBsYXRlLXJvd3M6cmVwZWF0KDEyLGF1dG8pfVtjZHMtbGF5b3V0fj1ncmlkXT5bY2RzLWxheW91dCo9cm93XXthbGlnbi1zZWxmOnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJjb2xzOmF1dG8iXXtncmlkLWF1dG8tZmxvdzpjb2x1''@;'; put 'put ''bW47Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmluaXRpYWx9W2Nkcy1sYXlvdXQqPSJjb2xzQCJdPip7Z3JpZC1jb2x1bW46c3BhbiB2YXIoLS1jZHMtZ2xvYmFsLWxheW91dC1ncmlkLWNvbHMpfVtjZHMtbGF5b3V0Kj0iY29sQCJde2dyaWQtY29sdW1uOnNwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJj''@;'; put 'put ''b2xzOjEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJyb3dzOjEiXT4qe2dyaWQtcm93OnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJjb2xzOjIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJyb3dzOjIiXT4qe2dyaWQt''@;'; put 'put ''cm93OnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJjb2xzOjMiXT4qe2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJyb3dzOjMiXT4qe2dyaWQtcm93OnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJjb2xzOjQiXT4qe2dyaWQtY29sdW1uOnNwYW4gNC9zcGFu''@;'; put 'put ''IDR9W2Nkcy1sYXlvdXQqPSJyb3dzOjQiXT4qe2dyaWQtcm93OnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJjb2xzOjUiXT4qe2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJyb3dzOjUiXT4qe2dyaWQtcm93OnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJj''@;'; put 'put ''b2xzOjYiXT4qe2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJyb3dzOjYiXT4qe2dyaWQtcm93OnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJjb2xzOjciXT4qe2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJyb3dzOjciXT4qe2dyaWQt''@;'; put 'put ''cm93OnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJjb2xzOjgiXT4qe2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJyb3dzOjgiXT4qe2dyaWQtcm93OnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJjb2xzOjkiXT4qe2dyaWQtY29sdW1uOnNwYW4gOS9zcGFu''@;'; put 'put ''IDl9W2Nkcy1sYXlvdXQqPSJyb3dzOjkiXT4qe2dyaWQtcm93OnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJjb2xzOjEwIl0+KntncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJyb3dzOjEwIl0+KntncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJjb2xzOjExIl0+KntncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJyb3dzOjExIl0+KntncmlkLXJvdzpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJjb2xzOjEyIl0+KntncmlkLWNvbHVtbjpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJy''@;'; put 'put ''b3dzOjEyIl0+KntncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJjb2w6MSJde2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjEiXXtncmlkLXJvdzpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNv''@;'; put 'put ''bDoyIl17Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6MiJde2dyaWQtcm93OnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjMiXXtncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91''@;'; put 'put ''dCo9InJvdzozIl17Z3JpZC1yb3c6c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6NCJde2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjQiXXtncmlkLXJvdzpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImNvbDo1Il17Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6NSJde2dyaWQtcm93OnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjYiXXtncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dCo9InJvdzo2Il17Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6NyJde2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjciXXtncmlkLXJvdzpzcGFuIDcvc3BhbiA3IWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9ImNvbDo4Il17Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6OCJde2dyaWQtcm93OnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjkiXXtncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5IWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dCo9InJvdzo5Il17Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6MTAiXXtncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OjEwIl17Z3JpZC1yb3c6c3BhbiAxMC9z''@;'; put 'put ''cGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDoxMSJde2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6MTEiXXtncmlkLXJvdzpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOjEyIl17Z3JpZC1j''@;'; put 'put ''b2x1bW46c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzoxMiJde2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMSJde2dyaWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29s''@;'; put 'put ''OmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFy''@;'; put 'put ''dC0yIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTIiXXtncmlkLWNvbHVtbi1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVu''@;'; put 'put ''ZC0yIl17Z3JpZC1yb3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTMiXXtncmlkLWNvbHVtbi1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFy''@;'; put 'put ''dC0zIl17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTMiXXtncmlkLXJvdy1lbmQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC00''@;'; put 'put ''Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0YXJ0LTQiXXtncmlkLXJvdy1zdGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC01Il17''@;'; put 'put ''Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTUiXXtncmlkLWNvbHVtbi1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC01Il17''@;'; put 'put ''Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTYiXXtncmlkLWNvbHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC02Il17''@;'; put 'put ''Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTYiXXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC03Il17Z3Jp''@;'; put 'put ''ZC1jb2x1bW4tZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtNyJde2dyaWQtcm93LWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC04Il17Z3JpZC1j''@;'; put 'put ''b2x1bW4tc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtOCJde2dyaWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC04Il17Z3JpZC1y''@;'; put 'put ''b3ctZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTkiXXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtOSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC05Il17Z3JpZC1y''@;'; put 'put ''b3ctc3RhcnQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTkiXXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6ZW5kLTEwIl17Z3JpZC1j''@;'; put 'put ''b2x1bW4tZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOnN0YXJ0LTExIl17Z3Jp''@;'; put 'put ''ZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sOmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3c6ZW5kLTEx''@;'; put 'put ''Il17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDpzdGFydC0xMiJde2dyaWQtY29sdW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbDplbmQtMTIiXXtncmlkLWNvbHVtbi1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OnN0''@;'; put 'put ''YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93OmVuZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2w6c3RhcnQtMTMiXXtncmlkLWNvbHVtbi1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj''@;'; put 'put ''b2w6ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvdzplbmQtMTMiXXtncmlkLXJvdy1lbmQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj1n''@;'; put 'put ''cmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246dG9wIl17YWxpZ24tY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmJvdHRvbSJde2Fs''@;'; put 'put ''aWduLWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ246bGVmdCJde2p1c3RpZnktY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWdu''@;'; put 'put ''LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduOnN0cmV0''@;'; put 'put ''Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50''@;'; put 'put ''ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbjpj''@;'; put 'put ''ZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMS9z''@;'; put 'put ''cGFuIDF9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjEiXT4qe2dyaWQtcm93OnNwYW4gMS9zcGFuIDF9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDJ9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjIiXT4qe2dyaWQtcm93OnNwYW4gMi9zcGFuIDJ9W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJjb2xzQHhzOjMiXT4qe2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjMiXT4qe2dyaWQtcm93OnNwYW4gMy9zcGFuIDN9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjQiXT4qe2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJyb3dzQHhzOjQiXT4qe2dyaWQtcm93OnNwYW4gNC9zcGFuIDR9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjUiXT4qe2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjUiXT4qe2dyaWQtcm93OnNwYW4gNS9zcGFuIDV9W2Nkcy1sYXlvdXQqPSJjb2xz''@;'; put 'put ''QHhzOjYiXT4qe2dyaWQtY29sdW1uOnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjYiXT4qe2dyaWQtcm93OnNwYW4gNi9zcGFuIDZ9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjciXT4qe2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjci''@;'; put 'put ''XT4qe2dyaWQtcm93OnNwYW4gNy9zcGFuIDd9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjgiXT4qe2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjgiXT4qe2dyaWQtcm93OnNwYW4gOC9zcGFuIDh9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjkiXT4qe2dyaWQt''@;'; put 'put ''Y29sdW1uOnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjkiXT4qe2dyaWQtcm93OnNwYW4gOS9zcGFuIDl9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjEwIl0+KntncmlkLWNvbHVtbjpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjEwIl0+KntncmlkLXJv''@;'; put 'put ''dzpzcGFuIDEwL3NwYW4gMTB9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjExIl0+KntncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjExIl0+KntncmlkLXJvdzpzcGFuIDExL3NwYW4gMTF9W2Nkcy1sYXlvdXQqPSJjb2xzQHhzOjEyIl0+KntncmlkLWNv''@;'; put 'put ''bHVtbjpzcGFuIDEyL3NwYW4gMTJ9W2Nkcy1sYXlvdXQqPSJyb3dzQHhzOjEyIl0+KntncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTJ9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dCo9ImNvbHNAc206MSJdPip7Z3JpZC1jb2x1bW46c3BhbiAxL3NwYW4gMX1bY2RzLWxheW91''@;'; put 'put ''dCo9InJvd3NAc206MSJdPip7Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMX1bY2RzLWxheW91dCo9ImNvbHNAc206MiJdPip7Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMn1bY2RzLWxheW91dCo9InJvd3NAc206MiJdPip7Z3JpZC1yb3c6c3BhbiAyL3NwYW4gMn1bY2RzLWxheW91dCo9ImNvbHNA''@;'; put 'put ''c206MyJdPip7Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gM31bY2RzLWxheW91dCo9InJvd3NAc206MyJdPip7Z3JpZC1yb3c6c3BhbiAzL3NwYW4gM31bY2RzLWxheW91dCo9ImNvbHNAc206NCJdPip7Z3JpZC1jb2x1bW46c3BhbiA0L3NwYW4gNH1bY2RzLWxheW91dCo9InJvd3NAc206NCJd''@;'; put 'put ''Pip7Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNH1bY2RzLWxheW91dCo9ImNvbHNAc206NSJdPip7Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9InJvd3NAc206NSJdPip7Z3JpZC1yb3c6c3BhbiA1L3NwYW4gNX1bY2RzLWxheW91dCo9ImNvbHNAc206NiJdPip7Z3JpZC1j''@;'; put 'put ''b2x1bW46c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91dCo9InJvd3NAc206NiJdPip7Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNn1bY2RzLWxheW91dCo9ImNvbHNAc206NyJdPip7Z3JpZC1jb2x1bW46c3BhbiA3L3NwYW4gN31bY2RzLWxheW91dCo9InJvd3NAc206NyJdPip7Z3JpZC1yb3c6c3Bh''@;'; put 'put ''biA3L3NwYW4gN31bY2RzLWxheW91dCo9ImNvbHNAc206OCJdPip7Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9InJvd3NAc206OCJdPip7Z3JpZC1yb3c6c3BhbiA4L3NwYW4gOH1bY2RzLWxheW91dCo9ImNvbHNAc206OSJdPip7Z3JpZC1jb2x1bW46c3BhbiA5L3Nw''@;'; put 'put ''YW4gOX1bY2RzLWxheW91dCo9InJvd3NAc206OSJdPip7Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOX1bY2RzLWxheW91dCo9ImNvbHNAc206MTAiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTAvc3BhbiAxMH1bY2RzLWxheW91dCo9InJvd3NAc206MTAiXT4qe2dyaWQtcm93OnNwYW4gMTAvc3BhbiAx''@;'; put 'put ''MH1bY2RzLWxheW91dCo9ImNvbHNAc206MTEiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9InJvd3NAc206MTEiXT4qe2dyaWQtcm93OnNwYW4gMTEvc3BhbiAxMX1bY2RzLWxheW91dCo9ImNvbHNAc206MTIiXT4qe2dyaWQtY29sdW1uOnNwYW4gMTIvc3Bh''@;'; put 'put ''biAxMn1bY2RzLWxheW91dCo9InJvd3NAc206MTIiXT4qe2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMn19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0Kj0iY29sc0BtZDoxIl0+KntncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxIl0+''@;'; put 'put ''KntncmlkLXJvdzpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoyIl0+KntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoyIl0+KntncmlkLXJvdzpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDozIl0+KntncmlkLWNv''@;'; put 'put ''bHVtbjpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0icm93c0BtZDozIl0+KntncmlkLXJvdzpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo0Il0+KntncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo0Il0+KntncmlkLXJvdzpzcGFu''@;'; put 'put ''IDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo1Il0+KntncmlkLWNvbHVtbjpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo1Il0+KntncmlkLXJvdzpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo2Il0+KntncmlkLWNvbHVtbjpzcGFuIDYvc3Bh''@;'; put 'put ''biA2fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo2Il0+KntncmlkLXJvdzpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo3Il0+KntncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo3Il0+KntncmlkLXJvdzpzcGFuIDcvc3BhbiA3fVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iY29sc0BtZDo4Il0+KntncmlkLWNvbHVtbjpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0icm93c0BtZDo4Il0+KntncmlkLXJvdzpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDo5Il0+KntncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93c0BtZDo5Il0+KntncmlkLXJvdzpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoxMCJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxMCJdPip7Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0i''@;'; put 'put ''Y29sc0BtZDoxMSJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0icm93c0BtZDoxMSJdPip7Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0iY29sc0BtZDoxMiJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyfVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93c0BtZDoxMiJdPip7Z3JpZC1yb3c6c3BhbiAxMi9zcGFuIDEyfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0Kj0iY29sc0BsZzoxIl0+KntncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0icm93c0BsZzoxIl0+KntncmlkLXJvdzpzcGFu''@;'; put 'put ''IDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0iY29sc0BsZzoyIl0+KntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0icm93c0BsZzoyIl0+KntncmlkLXJvdzpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0iY29sc0BsZzozIl0+KntncmlkLWNvbHVtbjpzcGFuIDMvc3Bh''@;'; put 'put ''biAzfVtjZHMtbGF5b3V0Kj0icm93c0BsZzozIl0+KntncmlkLXJvdzpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0iY29sc0BsZzo0Il0+KntncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0icm93c0BsZzo0Il0+KntncmlkLXJvdzpzcGFuIDQvc3BhbiA0fVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iY29sc0BsZzo1Il0+KntncmlkLWNvbHVtbjpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0icm93c0BsZzo1Il0+KntncmlkLXJvdzpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0iY29sc0BsZzo2Il0+KntncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93c0BsZzo2Il0+KntncmlkLXJvdzpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0Kj0iY29sc0BsZzo3Il0+KntncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0icm93c0BsZzo3Il0+KntncmlkLXJvdzpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0iY29sc0Bs''@;'; put 'put ''Zzo4Il0+KntncmlkLWNvbHVtbjpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0icm93c0BsZzo4Il0+KntncmlkLXJvdzpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0iY29sc0BsZzo5Il0+KntncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0icm93c0BsZzo5Il0+''@;'; put 'put ''KntncmlkLXJvdzpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0iY29sc0BsZzoxMCJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0icm93c0BsZzoxMCJdPip7Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0iY29sc0BsZzoxMSJdPip7''@;'; put 'put ''Z3JpZC1jb2x1bW46c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0icm93c0BsZzoxMSJdPip7Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0iY29sc0BsZzoxMiJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyfVtjZHMtbGF5b3V0Kj0icm93c0BsZzoxMiJd''@;'; put 'put ''Pip7Z3JpZC1yb3c6c3BhbiAxMi9zcGFuIDEyfX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0Kj0iY29sc0B4bDoxIl0+KntncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxfVtjZHMtbGF5b3V0Kj0icm93c0B4bDoxIl0+KntncmlkLXJvdzpzcGFuIDEvc3BhbiAxfVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iY29sc0B4bDoyIl0+KntncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0icm93c0B4bDoyIl0+KntncmlkLXJvdzpzcGFuIDIvc3BhbiAyfVtjZHMtbGF5b3V0Kj0iY29sc0B4bDozIl0+KntncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93c0B4bDozIl0+KntncmlkLXJvdzpzcGFuIDMvc3BhbiAzfVtjZHMtbGF5b3V0Kj0iY29sc0B4bDo0Il0+KntncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo0Il0+KntncmlkLXJvdzpzcGFuIDQvc3BhbiA0fVtjZHMtbGF5b3V0Kj0iY29sc0B4''@;'; put 'put ''bDo1Il0+KntncmlkLWNvbHVtbjpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo1Il0+KntncmlkLXJvdzpzcGFuIDUvc3BhbiA1fVtjZHMtbGF5b3V0Kj0iY29sc0B4bDo2Il0+KntncmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo2Il0+''@;'; put 'put ''KntncmlkLXJvdzpzcGFuIDYvc3BhbiA2fVtjZHMtbGF5b3V0Kj0iY29sc0B4bDo3Il0+KntncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo3Il0+KntncmlkLXJvdzpzcGFuIDcvc3BhbiA3fVtjZHMtbGF5b3V0Kj0iY29sc0B4bDo4Il0+KntncmlkLWNv''@;'; put 'put ''bHVtbjpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo4Il0+KntncmlkLXJvdzpzcGFuIDgvc3BhbiA4fVtjZHMtbGF5b3V0Kj0iY29sc0B4bDo5Il0+KntncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0icm93c0B4bDo5Il0+KntncmlkLXJvdzpzcGFu''@;'; put 'put ''IDkvc3BhbiA5fVtjZHMtbGF5b3V0Kj0iY29sc0B4bDoxMCJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0icm93c0B4bDoxMCJdPip7Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwfVtjZHMtbGF5b3V0Kj0iY29sc0B4bDoxMSJdPip7Z3JpZC1jb2x1bW46c3Bh''@;'; put 'put ''biAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0icm93c0B4bDoxMSJdPip7Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExfVtjZHMtbGF5b3V0Kj0iY29sc0B4bDoxMiJdPip7Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyfVtjZHMtbGF5b3V0Kj0icm93c0B4bDoxMiJdPip7Z3JpZC1yb3c6c3Bh''@;'; put 'put ''biAxMi9zcGFuIDEyfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXQqPSJjb2xAeHM6MSJde2dyaWQtY29sdW1uOnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjEiXXtncmlkLXJvdzpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImNvbEB4czoyIl17Z3JpZC1jb2x1bW46c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6MiJde2dyaWQtcm93OnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjMiXXtncmlkLWNvbHVtbjpzcGFuIDMvc3BhbiAzIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czozIl17Z3JpZC1yb3c6c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6NCJde2dyaWQtY29sdW1uOnNwYW4gNC9zcGFuIDQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjQiXXtncmlkLXJvdzpzcGFu''@;'; put 'put ''IDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czo1Il17Z3JpZC1jb2x1bW46c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6NSJde2dyaWQtcm93OnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjYiXXtn''@;'; put 'put ''cmlkLWNvbHVtbjpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czo2Il17Z3JpZC1yb3c6c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6NyJde2dyaWQtY29sdW1uOnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93QHhzOjciXXtncmlkLXJvdzpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czo4Il17Z3JpZC1jb2x1bW46c3BhbiA4L3NwYW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6OCJde2dyaWQtcm93OnNwYW4gOC9zcGFuIDghaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjkiXXtncmlkLWNvbHVtbjpzcGFuIDkvc3BhbiA5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czo5Il17Z3JpZC1yb3c6c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6MTAiXXtncmlkLWNvbHVtbjpzcGFuIDEw''@;'; put 'put ''L3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOjEwIl17Z3JpZC1yb3c6c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czoxMSJde2dyaWQtY29sdW1uOnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6''@;'; put 'put ''MTEiXXtncmlkLXJvdzpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOjEyIl17Z3JpZC1jb2x1bW46c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czoxMiJde2dyaWQtcm93OnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9''@;'; put 'put ''fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dCo9ImNvbEBzbToxIl17Z3JpZC1jb2x1bW46c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206MSJde2dyaWQtcm93OnNwYW4gMS9zcGFuIDEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNt''@;'; put 'put ''OjIiXXtncmlkLWNvbHVtbjpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbToyIl17Z3JpZC1yb3c6c3BhbiAyL3NwYW4gMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206MyJde2dyaWQtY29sdW1uOnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0icm93QHNtOjMiXXtncmlkLXJvdzpzcGFuIDMvc3BhbiAzIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTo0Il17Z3JpZC1jb2x1bW46c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206NCJde2dyaWQtcm93OnNwYW4gNC9zcGFuIDQhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjUiXXtncmlkLWNvbHVtbjpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTo1Il17Z3JpZC1yb3c6c3BhbiA1L3NwYW4gNSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206NiJde2dyaWQtY29sdW1uOnNw''@;'; put 'put ''YW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjYiXXtncmlkLXJvdzpzcGFuIDYvc3BhbiA2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTo3Il17Z3JpZC1jb2x1bW46c3BhbiA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206NyJd''@;'; put 'put ''e2dyaWQtcm93OnNwYW4gNy9zcGFuIDchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjgiXXtncmlkLWNvbHVtbjpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTo4Il17Z3JpZC1yb3c6c3BhbiA4L3NwYW4gOCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJjb2xAc206OSJde2dyaWQtY29sdW1uOnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjkiXXtncmlkLXJvdzpzcGFuIDkvc3BhbiA5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbToxMCJde2dyaWQtY29sdW1uOnNwYW4gMTAvc3BhbiAxMCFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206MTAiXXtncmlkLXJvdzpzcGFuIDEwL3NwYW4gMTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOjExIl17Z3JpZC1jb2x1bW46c3BhbiAxMS9zcGFuIDExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbToxMSJde2dyaWQtcm93''@;'; put 'put ''OnNwYW4gMTEvc3BhbiAxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206MTIiXXtncmlkLWNvbHVtbjpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOjEyIl17Z3JpZC1yb3c6c3BhbiAxMi9zcGFuIDEyIWltcG9ydGFudH19QG1lZGlhIChtaW4t''@;'; put 'put ''d2lkdGg6OTkycHgpe1tjZHMtbGF5b3V0Kj0iY29sQG1kOjEiXXtncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDoxIl17Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6MiJde2dyaWQtY29s''@;'; put 'put ''dW1uOnNwYW4gMi9zcGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjIiXXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDozIl17Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dA''@;'; put 'put ''bWQ6MyJde2dyaWQtcm93OnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjQiXXtncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDo0Il17Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJjb2xAbWQ6NSJde2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjUiXXtncmlkLXJvdzpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDo2Il17Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNiFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6NiJde2dyaWQtcm93OnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjciXXtncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDo3Il17Z3JpZC1yb3c6c3Bh''@;'; put 'put ''biA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6OCJde2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjgiXXtncmlkLXJvdzpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDo5Il17''@;'; put 'put ''Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6OSJde2dyaWQtcm93OnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOjEwIl17Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dCo9InJvd0BtZDoxMCJde2dyaWQtcm93OnNwYW4gMTAvc3BhbiAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6MTEiXXtncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOjExIl17Z3JpZC1yb3c6c3BhbiAxMS9zcGFu''@;'; put 'put ''IDExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDoxMiJde2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6MTIiXXtncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgp''@;'; put 'put ''e1tjZHMtbGF5b3V0Kj0iY29sQGxnOjEiXXtncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzoxIl17Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6MiJde2dyaWQtY29sdW1uOnNwYW4gMi9z''@;'; put 'put ''cGFuIDIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjIiXXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzozIl17Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6MyJde2dyaWQt''@;'; put 'put ''cm93OnNwYW4gMy9zcGFuIDMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjQiXXtncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzo0Il17Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xA''@;'; put 'put ''bGc6NSJde2dyaWQtY29sdW1uOnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjUiXXtncmlkLXJvdzpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzo2Il17Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJyb3dAbGc6NiJde2dyaWQtcm93OnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjciXXtncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzo3Il17Z3JpZC1yb3c6c3BhbiA3L3NwYW4gNyFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6OCJde2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjgiXXtncmlkLXJvdzpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzo5Il17Z3JpZC1jb2x1bW46''@;'; put 'put ''c3BhbiA5L3NwYW4gOSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6OSJde2dyaWQtcm93OnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOjEwIl17Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0Bs''@;'; put 'put ''ZzoxMCJde2dyaWQtcm93OnNwYW4gMTAvc3BhbiAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6MTEiXXtncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOjExIl17Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9ImNvbEBsZzoxMiJde2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6MTIiXXtncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0''@;'; put 'put ''Kj0iY29sQHhsOjEiXXtncmlkLWNvbHVtbjpzcGFuIDEvc3BhbiAxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDoxIl17Z3JpZC1yb3c6c3BhbiAxL3NwYW4gMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6MiJde2dyaWQtY29sdW1uOnNwYW4gMi9zcGFuIDIhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjIiXXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDozIl17Z3JpZC1jb2x1bW46c3BhbiAzL3NwYW4gMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6MyJde2dyaWQtcm93OnNwYW4gMy9z''@;'; put 'put ''cGFuIDMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjQiXXtncmlkLWNvbHVtbjpzcGFuIDQvc3BhbiA0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDo0Il17Z3JpZC1yb3c6c3BhbiA0L3NwYW4gNCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6NSJde2dyaWQt''@;'; put 'put ''Y29sdW1uOnNwYW4gNS9zcGFuIDUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjUiXXtncmlkLXJvdzpzcGFuIDUvc3BhbiA1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDo2Il17Z3JpZC1jb2x1bW46c3BhbiA2L3NwYW4gNiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJy''@;'; put 'put ''b3dAeGw6NiJde2dyaWQtcm93OnNwYW4gNi9zcGFuIDYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjciXXtncmlkLWNvbHVtbjpzcGFuIDcvc3BhbiA3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDo3Il17Z3JpZC1yb3c6c3BhbiA3L3NwYW4gNyFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJjb2xAeGw6OCJde2dyaWQtY29sdW1uOnNwYW4gOC9zcGFuIDghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjgiXXtncmlkLXJvdzpzcGFuIDgvc3BhbiA4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDo5Il17Z3JpZC1jb2x1bW46c3BhbiA5L3NwYW4g''@;'; put 'put ''OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6OSJde2dyaWQtcm93OnNwYW4gOS9zcGFuIDkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOjEwIl17Z3JpZC1jb2x1bW46c3BhbiAxMC9zcGFuIDEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDoxMCJde2dyaWQt''@;'; put 'put ''cm93OnNwYW4gMTAvc3BhbiAxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6MTEiXXtncmlkLWNvbHVtbjpzcGFuIDExL3NwYW4gMTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOjExIl17Z3JpZC1yb3c6c3BhbiAxMS9zcGFuIDExIWltcG9ydGFudH1bY2RzLWxheW91''@;'; put 'put ''dCo9ImNvbEB4bDoxMiJde2dyaWQtY29sdW1uOnNwYW4gMTIvc3BhbiAxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6MTIiXXtncmlkLXJvdzpzcGFuIDEyL3NwYW4gMTIhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3Rh''@;'; put 'put ''cnQtMSJde2dyaWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9''@;'; put 'put ''InJvd0B4czplbmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC0yIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTIiXXtncmlkLWNvbHVtbi1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJyb3dAeHM6c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC0yIl17Z3JpZC1yb3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTMiXXtncmlkLWNvbHVtbi1zdGFydDozIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC0zIl17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTMiXXtncmlkLXJvdy1lbmQ6MyFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC00Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTQiXXtncmlkLXJvdy1z''@;'; put 'put ''dGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC01Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTUiXXtncmlk''@;'; put 'put ''LWNvbHVtbi1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC01Il17Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTYi''@;'; put 'put ''XXtncmlkLWNvbHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC02Il17Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dA''@;'; put 'put ''eHM6ZW5kLTYiXXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC03Il17Z3JpZC1jb2x1bW4tZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''Kj0icm93QHhzOnN0YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtNyJde2dyaWQtcm93LWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC04Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OCFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtOCJde2dyaWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC04Il17Z3JpZC1yb3ctZW5kOjghaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0LTkiXXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtOSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC05Il17Z3JpZC1yb3ctc3RhcnQ6''@;'; put 'put ''OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6ZW5kLTkiXXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTEwIl17Z3JpZC1j''@;'; put 'put ''b2x1bW4tZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOnN0YXJ0''@;'; put 'put ''LTExIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhzOmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeHM6c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJyb3dAeHM6ZW5kLTExIl17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czpzdGFydC0xMiJde2dyaWQtY29sdW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4czplbmQtMTIiXXtncmlkLWNvbHVtbi1lbmQ6MTIhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOnN0YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhzOmVuZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6c3RhcnQtMTMiXXtncmlkLWNvbHVtbi1z''@;'; put 'put ''dGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeHM6ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4czplbmQtMTMi''@;'; put 'put ''XXtncmlkLXJvdy1lbmQ6MTMhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtMSJde2dyaWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC0yIl17Z3JpZC1jb2x1bW4tc3Rh''@;'; put 'put ''cnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTIiXXtncmlkLWNvbHVtbi1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC0yIl17Z3JpZC1y''@;'; put 'put ''b3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTMiXXtncmlkLWNvbHVtbi1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC0z''@;'; put 'put ''Il17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTMiXXtncmlkLXJvdy1lbmQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNt''@;'; put 'put ''OmVuZC00Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTQiXXtncmlkLXJvdy1zdGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNv''@;'; put 'put ''bEBzbTpzdGFydC01Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTUiXXtncmlkLWNvbHVtbi1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0icm93QHNtOmVuZC01Il17Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTYiXXtncmlkLWNvbHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC02Il17Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTYiXXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0Ojch''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC03Il17Z3JpZC1jb2x1bW4tZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtNyJde2dyaWQtcm93LWVu''@;'; put 'put ''ZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC04Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtOCJde2dy''@;'; put 'put ''aWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVuZC04Il17Z3JpZC1yb3ctZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTkiXXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQt''@;'; put 'put ''OSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC05Il17Z3JpZC1yb3ctc3RhcnQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTkiXXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206''@;'; put 'put ''c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTEwIl17Z3JpZC1jb2x1bW4tZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTpzdGFydC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dCo9InJvd0BzbTplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOnN0YXJ0LTExIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHNtOmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAc206ZW5kLTExIl17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTpzdGFydC0xMiJde2dyaWQtY29s''@;'; put 'put ''dW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBzbTplbmQtMTIiXXtncmlkLWNvbHVtbi1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOnN0YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHNtOmVu''@;'; put 'put ''ZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206c3RhcnQtMTMiXXtncmlkLWNvbHVtbi1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAc206ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2RzLWxheW91''@;'; put 'put ''dCo9InJvd0BzbTpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BzbTplbmQtMTMiXXtncmlkLXJvdy1lbmQ6MTMhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtMSJde2dy''@;'; put 'put ''aWQtY29sdW1uLXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC0xIl17Z3JpZC1jb2x1bW4tZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTEiXXtncmlkLXJvdy1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpl''@;'; put 'put ''bmQtMSJde2dyaWQtcm93LWVuZDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC0yIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTIiXXtncmlkLWNvbHVtbi1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJy''@;'; put 'put ''b3dAbWQ6c3RhcnQtMiJde2dyaWQtcm93LXN0YXJ0OjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC0yIl17Z3JpZC1yb3ctZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0LTMiXXtncmlkLWNvbHVtbi1zdGFydDozIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImNvbEBtZDplbmQtMyJde2dyaWQtY29sdW1uLWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC0zIl17Z3JpZC1yb3ctc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTMiXXtncmlkLXJvdy1lbmQ6MyFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtNCJde2dyaWQtY29sdW1uLXN0YXJ0OjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC00Il17Z3JpZC1jb2x1bW4tZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOnN0YXJ0LTQiXXtncmlkLXJvdy1zdGFydDo0IWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtNCJde2dyaWQtcm93LWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC01Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTUiXXtncmlkLWNvbHVtbi1l''@;'; put 'put ''bmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtNSJde2dyaWQtcm93LXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC01Il17Z3JpZC1yb3ctZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0LTYiXXtncmlkLWNv''@;'; put 'put ''bHVtbi1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtNiJde2dyaWQtY29sdW1uLWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC02Il17Z3JpZC1yb3ctc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTYi''@;'; put 'put ''XXtncmlkLXJvdy1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtNyJde2dyaWQtY29sdW1uLXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC03Il17Z3JpZC1jb2x1bW4tZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1k''@;'; put 'put ''OnN0YXJ0LTciXXtncmlkLXJvdy1zdGFydDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtNyJde2dyaWQtcm93LWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC04Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJjb2xAbWQ6ZW5kLTgiXXtncmlkLWNvbHVtbi1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtOCJde2dyaWQtcm93LXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC04Il17Z3JpZC1yb3ctZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0Kj0iY29sQG1kOnN0YXJ0LTkiXXtncmlkLWNvbHVtbi1zdGFydDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtOSJde2dyaWQtY29sdW1uLWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC05Il17Z3JpZC1yb3ctc3RhcnQ6OSFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6ZW5kLTkiXXtncmlkLXJvdy1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtMTAiXXtncmlkLWNvbHVtbi1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTEwIl17Z3JpZC1jb2x1bW4tZW5k''@;'; put 'put ''OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC0xMCJde2dyaWQtcm93LXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtMTAiXXtncmlkLXJvdy1lbmQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOnN0YXJ0LTExIl17Z3Jp''@;'; put 'put ''ZC1jb2x1bW4tc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQG1kOmVuZC0xMSJde2dyaWQtY29sdW1uLWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbWQ6c3RhcnQtMTEiXXtncmlkLXJvdy1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dA''@;'; put 'put ''bWQ6ZW5kLTExIl17Z3JpZC1yb3ctZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDpzdGFydC0xMiJde2dyaWQtY29sdW1uLXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBtZDplbmQtMTIiXXtncmlkLWNvbHVtbi1lbmQ6MTIhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0icm93QG1kOnN0YXJ0LTEyIl17Z3JpZC1yb3ctc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QG1kOmVuZC0xMiJde2dyaWQtcm93LWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6c3RhcnQtMTMiXXtncmlkLWNvbHVtbi1zdGFydDoxMyFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbWQ6ZW5kLTEzIl17Z3JpZC1jb2x1bW4tZW5kOjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDpzdGFydC0xMyJde2dyaWQtcm93LXN0YXJ0OjEzIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BtZDplbmQtMTMiXXtncmlkLXJv''@;'; put 'put ''dy1lbmQ6MTMhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpe1tjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTEiXXtncmlkLWNvbHVtbi1zdGFydDoxIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtMSJde2dyaWQtY29sdW1uLWVuZDoxIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dCo9InJvd0BsZzpzdGFydC0xIl17Z3JpZC1yb3ctc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTEiXXtncmlkLXJvdy1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3RhcnQtMiJde2dyaWQtY29sdW1uLXN0YXJ0OjIhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC0yIl17Z3JpZC1jb2x1bW4tZW5kOjIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTIiXXtncmlkLXJvdy1zdGFydDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtMiJde2dyaWQtcm93LWVuZDoy''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC0zIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTMiXXtncmlkLWNvbHVtbi1lbmQ6MyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtMyJde2dyaWQt''@;'; put 'put ''cm93LXN0YXJ0OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC0zIl17Z3JpZC1yb3ctZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTQiXXtncmlkLWNvbHVtbi1zdGFydDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtNCJd''@;'; put 'put ''e2dyaWQtY29sdW1uLWVuZDo0IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC00Il17Z3JpZC1yb3ctc3RhcnQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTQiXXtncmlkLXJvdy1lbmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3Rh''@;'; put 'put ''cnQtNSJde2dyaWQtY29sdW1uLXN0YXJ0OjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC01Il17Z3JpZC1jb2x1bW4tZW5kOjUhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTUiXXtncmlkLXJvdy1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9''@;'; put 'put ''InJvd0BsZzplbmQtNSJde2dyaWQtcm93LWVuZDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC02Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTYiXXtncmlkLWNvbHVtbi1lbmQ6NiFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJyb3dAbGc6c3RhcnQtNiJde2dyaWQtcm93LXN0YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC02Il17Z3JpZC1yb3ctZW5kOjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTciXXtncmlkLWNvbHVtbi1zdGFydDo3IWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtNyJde2dyaWQtY29sdW1uLWVuZDo3IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC03Il17Z3JpZC1yb3ctc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTciXXtncmlkLXJvdy1lbmQ6NyFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3RhcnQtOCJde2dyaWQtY29sdW1uLXN0YXJ0OjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC04Il17Z3JpZC1jb2x1bW4tZW5kOjghaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTgiXXtncmlkLXJvdy1z''@;'; put 'put ''dGFydDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtOCJde2dyaWQtcm93LWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC05Il17Z3JpZC1jb2x1bW4tc3RhcnQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTkiXXtncmlk''@;'; put 'put ''LWNvbHVtbi1lbmQ6OSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtOSJde2dyaWQtcm93LXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC05Il17Z3JpZC1yb3ctZW5kOjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTEw''@;'; put 'put ''Il17Z3JpZC1jb2x1bW4tc3RhcnQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC0xMCJde2dyaWQtY29sdW1uLWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6c3RhcnQtMTAiXXtncmlkLXJvdy1zdGFydDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJyb3dAbGc6ZW5kLTEwIl17Z3JpZC1yb3ctZW5kOjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzpzdGFydC0xMSJde2dyaWQtY29sdW1uLXN0YXJ0OjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEBsZzplbmQtMTEiXXtncmlkLWNvbHVtbi1lbmQ6MTEhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0icm93QGxnOnN0YXJ0LTExIl17Z3JpZC1yb3ctc3RhcnQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QGxnOmVuZC0xMSJde2dyaWQtcm93LWVuZDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6c3RhcnQtMTIiXXtncmlkLWNvbHVtbi1zdGFy''@;'; put 'put ''dDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAbGc6ZW5kLTEyIl17Z3JpZC1jb2x1bW4tZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzpzdGFydC0xMiJde2dyaWQtcm93LXN0YXJ0OjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0BsZzplbmQtMTIiXXtn''@;'; put 'put ''cmlkLXJvdy1lbmQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOnN0YXJ0LTEzIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQGxnOmVuZC0xMyJde2dyaWQtY29sdW1uLWVuZDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dA''@;'; put 'put ''bGc6c3RhcnQtMTMiXXtncmlkLXJvdy1zdGFydDoxMyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAbGc6ZW5kLTEzIl17Z3JpZC1yb3ctZW5kOjEzIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC0xIl17Z3JpZC1jb2x1''@;'; put 'put ''bW4tc3RhcnQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTEiXXtncmlkLWNvbHVtbi1lbmQ6MSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtMSJde2dyaWQtcm93LXN0YXJ0OjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xIl17''@;'; put 'put ''Z3JpZC1yb3ctZW5kOjEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTIiXXtncmlkLWNvbHVtbi1zdGFydDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMiJde2dyaWQtY29sdW1uLWVuZDoyIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpz''@;'; put 'put ''dGFydC0yIl17Z3JpZC1yb3ctc3RhcnQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTIiXXtncmlkLXJvdy1lbmQ6MiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtMyJde2dyaWQtY29sdW1uLXN0YXJ0OjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0i''@;'; put 'put ''Y29sQHhsOmVuZC0zIl17Z3JpZC1jb2x1bW4tZW5kOjMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTMiXXtncmlkLXJvdy1zdGFydDozIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtMyJde2dyaWQtcm93LWVuZDozIWltcG9ydGFudH1bY2RzLWxheW91''@;'; put 'put ''dCo9ImNvbEB4bDpzdGFydC00Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTQiXXtncmlkLWNvbHVtbi1lbmQ6NCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQtNCJde2dyaWQtcm93LXN0YXJ0OjQhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC00Il17Z3JpZC1yb3ctZW5kOjQhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTUiXXtncmlkLWNvbHVtbi1zdGFydDo1IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtNSJde2dyaWQtY29sdW1uLWVuZDo1IWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC01Il17Z3JpZC1yb3ctc3RhcnQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTUiXXtncmlkLXJvdy1lbmQ6NSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtNiJde2dyaWQtY29sdW1uLXN0''@;'; put 'put ''YXJ0OjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC02Il17Z3JpZC1jb2x1bW4tZW5kOjYhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTYiXXtncmlkLXJvdy1zdGFydDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQtNiJde2dyaWQt''@;'; put 'put ''cm93LWVuZDo2IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC03Il17Z3JpZC1jb2x1bW4tc3RhcnQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTciXXtncmlkLWNvbHVtbi1lbmQ6NyFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6c3RhcnQt''@;'; put 'put ''NyJde2dyaWQtcm93LXN0YXJ0OjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC03Il17Z3JpZC1yb3ctZW5kOjchaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTgiXXtncmlkLWNvbHVtbi1zdGFydDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4''@;'; put 'put ''bDplbmQtOCJde2dyaWQtY29sdW1uLWVuZDo4IWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC04Il17Z3JpZC1yb3ctc3RhcnQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTgiXXtncmlkLXJvdy1lbmQ6OCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJj''@;'; put 'put ''b2xAeGw6c3RhcnQtOSJde2dyaWQtY29sdW1uLXN0YXJ0OjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC05Il17Z3JpZC1jb2x1bW4tZW5kOjkhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTkiXXtncmlkLXJvdy1zdGFydDo5IWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dCo9InJvd0B4bDplbmQtOSJde2dyaWQtcm93LWVuZDo5IWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC0xMCJde2dyaWQtY29sdW1uLXN0YXJ0OjEwIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMTAiXXtncmlkLWNvbHVtbi1lbmQ6MTAhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTEwIl17Z3JpZC1yb3ctc3RhcnQ6MTAhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xMCJde2dyaWQtcm93LWVuZDoxMCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6c3RhcnQtMTEiXXtncmlkLWNvbHVt''@;'; put 'put ''bi1zdGFydDoxMSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJjb2xAeGw6ZW5kLTExIl17Z3JpZC1jb2x1bW4tZW5kOjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDpzdGFydC0xMSJde2dyaWQtcm93LXN0YXJ0OjExIWltcG9ydGFudH1bY2RzLWxheW91dCo9InJvd0B4bDplbmQt''@;'; put 'put ''MTEiXXtncmlkLXJvdy1lbmQ6MTEhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOnN0YXJ0LTEyIl17Z3JpZC1jb2x1bW4tc3RhcnQ6MTIhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0iY29sQHhsOmVuZC0xMiJde2dyaWQtY29sdW1uLWVuZDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQq''@;'; put 'put ''PSJyb3dAeGw6c3RhcnQtMTIiXXtncmlkLXJvdy1zdGFydDoxMiFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJyb3dAeGw6ZW5kLTEyIl17Z3JpZC1yb3ctZW5kOjEyIWltcG9ydGFudH1bY2RzLWxheW91dCo9ImNvbEB4bDpzdGFydC0xMyJde2dyaWQtY29sdW1uLXN0YXJ0OjEzIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dCo9ImNvbEB4bDplbmQtMTMiXXtncmlkLWNvbHVtbi1lbmQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOnN0YXJ0LTEzIl17Z3JpZC1yb3ctc3RhcnQ6MTMhaW1wb3J0YW50fVtjZHMtbGF5b3V0Kj0icm93QHhsOmVuZC0xMyJde2dyaWQtcm93LWVuZDox''@;'; put 'put ''MyFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpyaWdodCJde2p1c3RpZnktY29u''@;'; put 'put ''dGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpib3R0b20iXXthbGlnbi1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhzOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRd''@;'; put 'put ''W2Nkcy1sYXlvdXQqPSJhbGlnbkB4czp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0''@;'; put 'put ''Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4czpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNo''@;'; put 'put ''fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0''@;'; put 'put ''aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeHM6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVu''@;'; put 'put ''dDpjZW50ZXJ9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHNtOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpyaWdodCJde2p1c3RpZnktY29udGVu''@;'; put 'put ''dDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpib3R0b20iXXthbGlnbi1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHNtOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nk''@;'; put 'put ''cy1sYXlvdXQqPSJhbGlnbkBzbTp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7''@;'; put 'put ''anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBzbTpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtj''@;'; put 'put ''ZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5''@;'; put 'put ''LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25Ac206Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpj''@;'; put 'put ''ZW50ZXJ9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQG1kOnRvcCJde2FsaWduLWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpyaWdodCJde2p1c3RpZnktY29udGVudDpl''@;'; put 'put ''bmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpib3R0b20iXXthbGlnbi1jb250ZW50OmVuZH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQG1kOmxlZnQiXXtqdXN0aWZ5LWNvbnRlbnQ6c3RhcnR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1s''@;'; put 'put ''YXlvdXQqPSJhbGlnbkBtZDp2ZXJ0aWNhbC1zdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpob3Jpem9udGFsLXN0cmV0Y2giXXtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBtZDpzdHJldGNoIl17YWxpZ24taXRlbXM6c3RyZXRjaDthbGlnbi1jb250ZW50OnN0cmV0Y2g7anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpzdHJldGNofVtjZHMt''@;'; put 'put ''bGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6dmVydGljYWwtY2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6aG9yaXpvbnRhbC1jZW50ZXIiXXtqdXN0aWZ5LWl0''@;'; put 'put ''ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbWQ6Y2VudGVyIl17YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktaXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50''@;'; put 'put ''ZXJ9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzp0b3AiXXthbGlnbi1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6cmlnaHQiXXtqdXN0aWZ5LWNvbnRlbnQ6ZW5k''@;'; put 'put ''fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6Ym90dG9tIl17YWxpZ24tY29udGVudDplbmR9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkBsZzpsZWZ0Il17anVzdGlmeS1jb250ZW50OnN0YXJ0fVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5''@;'; put 'put ''b3V0Kj0iYWxpZ25AbGc6dmVydGljYWwtc3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6aG9yaXpvbnRhbC1zdHJldGNoIl17anVzdGlmeS1pdGVtczpzdHJldGNoO2p1c3Rp''@;'; put 'put ''ZnktY29udGVudDpzdHJldGNofVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AbGc6c3RyZXRjaCJde2FsaWduLWl0ZW1zOnN0cmV0Y2g7YWxpZ24tY29udGVudDpzdHJldGNoO2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxh''@;'; put 'put ''eW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQGxnOnZlcnRpY2FsLWNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmhvcml6b250YWwtY2VudGVyIl17anVzdGlmeS1pdGVt''@;'; put 'put ''czpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQGxnOmNlbnRlciJde2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVy''@;'; put 'put ''fX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6dG9wIl17YWxpZ24tY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnJpZ2h0Il17anVzdGlmeS1jb250ZW50OmVuZH1b''@;'; put 'put ''Y2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmJvdHRvbSJde2FsaWduLWNvbnRlbnQ6ZW5kfVtjZHMtbGF5b3V0fj1ncmlkXVtjZHMtbGF5b3V0Kj0iYWxpZ25AeGw6bGVmdCJde2p1c3RpZnktY29udGVudDpzdGFydH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91''@;'; put 'put ''dCo9ImFsaWduQHhsOnZlcnRpY2FsLXN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhsOmhvcml6b250YWwtc3RyZXRjaCJde2p1c3RpZnktaXRlbXM6c3RyZXRjaDtqdXN0aWZ5''@;'; put 'put ''LWNvbnRlbnQ6c3RyZXRjaH1bY2RzLWxheW91dH49Z3JpZF1bY2RzLWxheW91dCo9ImFsaWduQHhsOnN0cmV0Y2giXXthbGlnbi1pdGVtczpzdHJldGNoO2FsaWduLWNvbnRlbnQ6c3RyZXRjaDtqdXN0aWZ5LWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDp2ZXJ0aWNhbC1jZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpob3Jpem9udGFsLWNlbnRlciJde2p1c3RpZnktaXRlbXM6''@;'; put 'put ''Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9W2Nkcy1sYXlvdXR+PWdyaWRdW2Nkcy1sYXlvdXQqPSJhbGlnbkB4bDpjZW50ZXIiXXthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7anVzdGlmeS1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn19''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJkaXNwbGF5Om5vbmUiXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheTpmbGV4Il17ZGlzcGxheTpmbGV4IWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXk6Y29udGVudHMiXXtkaXNwbGF5OmNvbnRlbnRzIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49ImRpc3BsYXk6YmxvY2siXXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXk6aW5saW5lIl17ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXtbY2RzLWxheW91dH49ImRpc3BsYXlAc206bm9uZSJd''@;'; put 'put ''e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHNtOmZsZXgiXXtkaXNwbGF5OmZsZXghaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBzbTpibG9jayJde2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBzbTppbmxp''@;'; put 'put ''bmUiXXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dH49ImRpc3BsYXlAbWQ6bm9uZSJde2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QG1kOmZsZXgiXXtkaXNwbGF5OmZsZXghaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBtZDpibG9jayJde2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBtZDppbmxpbmUiXXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7W2Nkcy1sYXlvdXR+PSJkaXNwbGF5''@;'; put 'put ''QGxnOm5vbmUiXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iZGlzcGxheUBsZzpmbGV4Il17ZGlzcGxheTpmbGV4IWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXlAbGc6YmxvY2siXXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3Bs''@;'; put 'put ''YXlAbGc6aW5saW5lIl17ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxNDQwcHgpe1tjZHMtbGF5b3V0fj0iZGlzcGxheUB4bDpub25lIl17ZGlzcGxheTpub25lIWltcG9ydGFudH1bY2RzLWxheW91dH49ImRpc3BsYXlAeGw6ZmxleCJde2Rpc3BsYXk6Zmxl''@;'; put 'put ''eCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHhsOmJsb2NrIl17ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJkaXNwbGF5QHhsOmlubGluZSJde2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19OjpzbG90dGVkKFtjZHMtbGF5b3V0fj0iZGlzcGxheTpzY3Jl''@;'; put 'put ''ZW4tcmVhZGVyLW9ubHkiXSksW2Nkcy1sYXlvdXR+PSJkaXNwbGF5OnNjcmVlbi1yZWFkZXItb25seSJde3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtjbGlwLXBhdGg6aW5zZXQoNTAlKTtwYWRkaW5nOjA7Ym9yZGVyOjA7aGVpZ2h0OjFw''@;'; put 'put ''eDt3aWR0aDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9W2Nkcy1sYXlvdXQqPSJnYXA6bm9uZSJde2dhcDowfVtjZHMtbGF5b3V0Kj0iZ2FwOnh4eHMiXXtnYXA6dmFyKC0tXDNiNCAxKX1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImdhcDp4eHMiXXtnYXA6dmFyKC0tXDNiNCAyKX1bY2RzLWxheW91dCo9ImdhcDp4cyJde2dhcDp2YXIoLS1cM2I0IDMpfVtjZHMtbGF5b3V0Kj0iZ2FwOnNtIl17Z2FwOnZhcigtLVwzYjQgNCl9W2Nkcy1sYXlvdXQqPSJnYXA6bWQiXXtnYXA6dmFyKC0tXDNiNCA1KX1bY2RzLWxh''@;'; put 'put ''eW91dCo9ImdhcDpsZyJde2dhcDp2YXIoLS1cM2I0IDYpfVtjZHMtbGF5b3V0Kj0iZ2FwOnhsIl17Z2FwOnZhcigtLVwzYjQgNyl9W2Nkcy1sYXlvdXQqPSJnYXA6eHhsIl17Z2FwOnZhcigtLVwzYjQgOCl9W2Nkcy1sYXlvdXQqPSJnYXA6eHh4bCJde2dhcDp2YXIoLS1cM2I0IDkpfVtjZHMt''@;'; put 'put ''bGF5b3V0fj0icDpub25lIl17cGFkZGluZzowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06bm9uZSJde21hcmdpbjowIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtOnh4eHMiXXttYXJnaW46''@;'; put 'put ''dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwOnh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtOnh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eHMiXXtwYWRkaW5nOnZhcigt''@;'; put 'put ''LVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTp4cyJde21hcmdpbjp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6c20iXXtwYWRkaW5nOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTpzbSJde21hcmdpbjp2YXIoLS1cM2I0IDQp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bWQiXXtwYWRkaW5nOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTptZCJde21hcmdpbjp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6bGciXXtwYWRkaW5nOnZhcigtLVwzYjQgNikhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0ibTpsZyJde21hcmdpbjp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InA6eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibTp4bCJde21hcmdpbjp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49InA6eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im06eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icDp4eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49Im06eHh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6bm9uZSJde3BhZGRpbmctdG9wOjAhaW1w''@;'; put 'put ''b3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14Onh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4eHhzIl17cGFkZGlu''@;'; put 'put ''Zy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXR+PSJwLXk6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFk''@;'; put 'put ''ZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14OnNtIl17cGFkZGluZy1s''@;'; put 'put ''ZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49InAteDptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15Om1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1i''@;'; put 'put ''b3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXg6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTpsZyJde3BhZGRpbmctdG9wOnZh''@;'; put 'put ''cigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14OnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJwLXk6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdo''@;'; put 'put ''dDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteTp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteDp4eHhsIl17cGFkZGluZy1sZWZ0OnZh''@;'; put 'put ''cigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXk6eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj0ibS14Om5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXk6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4eHhz''@;'; put 'put ''Il17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15Onh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXg6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15Onh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7''@;'; put 'put ''bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTp4cyJde21hcmdpbi10''@;'; put 'put ''b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49Im0teTpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2''@;'; put 'put ''YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQg''@;'; put 'put ''NikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4''@;'; put 'put ''bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teTp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49Im0teDp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXk6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtt''@;'; put 'put ''YXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14Onh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXk6eHh4bCJde21hcmdp''@;'; put 'put ''bi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6bm9uZSJde3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXR+PSJwLWI6bm9uZSJde3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC1yOnh4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOnh4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDp4eHhzIl17cGFkZGluZy1sZWZ0''@;'; put 'put ''OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10Onh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yOnh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6''@;'; put 'put ''eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10OnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJwLXI6eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOnhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0t''@;'; put 'put ''XDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtcjpzbSJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6c20iXXtwYWRk''@;'; put 'put ''aW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj0icC1yOm1kIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYjptZCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0fj0icC10OmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6bGciXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOmxnIl17cGFkZGluZy1ib3R0b206''@;'; put 'put ''dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWw6bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXQ6eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtcjp4bCJd''@;'; put 'put ''e3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbDp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49InAtdDp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtcjp4eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iOnh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwz''@;'; put 'put ''YjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXI6eHh4bCJde3Bh''@;'; put 'put ''ZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWI6eHh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PSJtLXQ6bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6bm9uZSJde21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjpub25lIl17bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDpu''@;'; put 'put ''b25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49''@;'; put 'put ''Im0tYjp4eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49Im0tcjp4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWI6eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDp4eHMiXXttYXJnaW4tbGVmdDp2''@;'; put 'put ''YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdDp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWI6eHMiXXtt''@;'; put 'put ''YXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj0ibS1yOnNtIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnNtIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbDpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0ibS10Om1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tcjptZCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjptZCJde21hcmdpbi1ib3R0b206dmFyKC0t''@;'; put 'put ''XDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWw6bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdDpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6bGciXXttYXJnaW4t''@;'; put 'put ''cmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWI6bGciXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJt''@;'; put 'put ''LXQ6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yOnhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49Im0tbDp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10Onh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQg''@;'; put 'put ''OCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iOnh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWw6eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXQ6eHh4bCJde21hcmdp''@;'; put 'put ''bi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXI6eHh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYjp4eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91''@;'; put 'put ''dH49Im0tbDp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpe1tjZHMtbGF5b3V0Kj0iZ2FwQHhzOm5vbmUiXXtnYXA6MH1bY2RzLWxheW91dCo9ImdhcEB4czp4eHhzIl17Z2FwOnZhcigtLVwzYjQgMSl9W2Nkcy1sYXlv''@;'; put 'put ''dXQqPSJnYXBAeHM6eHhzIl17Z2FwOnZhcigtLVwzYjQgMil9W2Nkcy1sYXlvdXQqPSJnYXBAeHM6eHMiXXtnYXA6dmFyKC0tXDNiNCAzKX1bY2RzLWxheW91dCo9ImdhcEB4czpzbSJde2dhcDp2YXIoLS1cM2I0IDQpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOm1kIl17Z2FwOnZhcigtLVwzYjQg''@;'; put 'put ''NSl9W2Nkcy1sYXlvdXQqPSJnYXBAeHM6bGciXXtnYXA6dmFyKC0tXDNiNCA2KX1bY2RzLWxheW91dCo9ImdhcEB4czp4bCJde2dhcDp2YXIoLS1cM2I0IDcpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOnh4bCJde2dhcDp2YXIoLS1cM2I0IDgpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhzOnh4eGwiXXtn''@;'; put 'put ''YXA6dmFyKC0tXDNiNCA5KX1bY2RzLWxheW91dH49InBAeHM6bm9uZSJde3BhZGRpbmc6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhzOm5vbmUiXXttYXJnaW46MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOnh4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0ibUB4czp4eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4czp4eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4czp4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAyKSFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOnhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6eHMiXXttYXJnaW46dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOnNtIl17cGFkZGluZzp2YXIoLS1cM2I0IDQpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6c20iXXttYXJnaW46dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOm1kIl17cGFkZGluZzp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6bWQiXXttYXJnaW46dmFyKC0tXDNiNCA1KSFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOmxnIl17cGFkZGluZzp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6bGciXXttYXJnaW46dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOnhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDcp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeHM6eGwiXXttYXJnaW46dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhzOnh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhzOnh4bCJde21hcmdpbjp2YXIoLS1cM2I0''@;'; put 'put ''IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeHM6eHh4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhzOnh4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6bm9uZSJde3BhZGRpbmct''@;'; put 'put ''bGVmdDowIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czp4eHhzIl17cGFkZGluZy1sZWZ0OnZh''@;'; put 'put ''cigtLVwzYjQgMSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0icC14QHhzOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOnh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O3Bh''@;'; put 'put ''ZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhzOnhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6eHMiXXtw''@;'; put 'put ''YWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFp''@;'; put 'put ''bXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4czptZCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14''@;'; put 'put ''QHhzOmxnIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeHM6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIo''@;'; put 'put ''LS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4czp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOnhsIl17cGFkZGluZy10b3A6dmFyKC0t''@;'; put 'put ''XDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJwLXlAeHM6eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeHM6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRk''@;'; put 'put ''aW5nLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhzOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czpub25lIl17''@;'; put 'put ''bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhzOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6eHh4cyJde21hcmdpbi1sZWZ0''@;'; put 'put ''OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0ibS14QHhzOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4czp4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50O21hcmdp''@;'; put 'put ''bi1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6eHMiXXttYXJnaW4t''@;'; put 'put ''dG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJtLXlAeHM6c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJn''@;'; put 'put ''aW4tcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6bGciXXttYXJnaW4t''@;'; put 'put ''bGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6bGciXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJtLXhAeHM6eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeHM6eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O21hcmdp''@;'; put 'put ''bi1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeHM6eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhzOnh4bCJde21hcmdp''@;'; put 'put ''bi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4czp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0ibS15QHhzOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0icC1yQHhzOm5vbmUiXXtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOm5vbmUiXXtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4czpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj0icC10QHhzOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4czp4eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4czp4eHhzIl17cGFkZGluZy1ib3R0b206dmFy''@;'; put 'put ''KC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6eHh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAt''@;'; put 'put ''ckB4czp4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOnh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0''@;'; put 'put ''IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhzOnhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4czp4cyJd''@;'; put 'put ''e3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOnhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhzOnNtIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9''@;'; put 'put ''W2Nkcy1sYXlvdXR+PSJwLXJAeHM6c20iXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnNtIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6c20iXXtwYWRkaW5nLWxl''@;'; put 'put ''ZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4czptZCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJwLWJAeHM6bWQiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4czptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4czpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQg''@;'; put 'put ''NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhzOmxnIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4czpsZyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhzOmxn''@;'; put 'put ''Il17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhzOnhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6eGwiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC1iQHhzOnhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeHM6eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6eHhsIl17cGFkZGluZy10''@;'; put 'put ''b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeHM6eHhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4czp4eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49InAtbEB4czp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeHM6eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhzOnh4eGwiXXtwYWRkaW5nLXJpZ2h0OnZh''@;'; put 'put ''cigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhzOnh4eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4czp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj0ibS10QHhzOm5vbmUiXXttYXJnaW4tdG9wOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOm5vbmUiXXttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6bm9uZSJde21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxA''@;'; put 'put ''eHM6bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnh4eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PSJtLWJAeHM6eHh4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeHM6eHh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnh4cyJde21hcmdpbi10b3A6''@;'; put 'put ''dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOnh4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJtLWxAeHM6eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOnhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4czp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnNtIl17bWFy''@;'; put 'put ''Z2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4czpzbSJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czpzbSJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJtLWxAeHM6c20iXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4czptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeHM6bWQiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNi''@;'; put 'put ''NCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6bWQiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhzOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeHM6bGci''@;'; put 'put ''XXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOmxnIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhzOmxnIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49Im0tbEB4czpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4czp4bCJde21hcmdpbi1yaWdodDp2YXIo''@;'; put 'put ''LS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czp4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeHM6eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4''@;'; put 'put ''czp4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4czp4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOCkhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhzOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhzOnh4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhzOnh4eGwiXXttYXJn''@;'; put 'put ''aW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeHM6eHh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeHM6eHh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fX1A''@;'; put 'put ''bWVkaWEgKG1pbi13aWR0aDo3NjhweCl7W2Nkcy1sYXlvdXQqPSJnYXBAc206bm9uZSJde2dhcDowfVtjZHMtbGF5b3V0Kj0iZ2FwQHNtOnh4eHMiXXtnYXA6dmFyKC0tXDNiNCAxKX1bY2RzLWxheW91dCo9ImdhcEBzbTp4eHMiXXtnYXA6dmFyKC0tXDNiNCAyKX1bY2RzLWxheW91dCo9Imdh''@;'; put 'put ''cEBzbTp4cyJde2dhcDp2YXIoLS1cM2I0IDMpfVtjZHMtbGF5b3V0Kj0iZ2FwQHNtOnNtIl17Z2FwOnZhcigtLVwzYjQgNCl9W2Nkcy1sYXlvdXQqPSJnYXBAc206bWQiXXtnYXA6dmFyKC0tXDNiNCA1KX1bY2RzLWxheW91dCo9ImdhcEBzbTpsZyJde2dhcDp2YXIoLS1cM2I0IDYpfVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iZ2FwQHNtOnhsIl17Z2FwOnZhcigtLVwzYjQgNyl9W2Nkcy1sYXlvdXQqPSJnYXBAc206eHhsIl17Z2FwOnZhcigtLVwzYjQgOCl9W2Nkcy1sYXlvdXQqPSJnYXBAc206eHh4bCJde2dhcDp2YXIoLS1cM2I0IDkpfVtjZHMtbGF5b3V0fj0icEBzbTpub25lIl17cGFkZGluZzow''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206bm9uZSJde21hcmdpbjowIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206eHh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHNtOnh4eHMiXXttYXJnaW46dmFyKC0tXDNiNCAxKSFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHNtOnh4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHNtOnh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206eHMiXXtwYWRkaW5nOnZhcigtLVwzYjQgMykh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTp4cyJde21hcmdpbjp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206c20iXXtwYWRkaW5nOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTpzbSJde21hcmdpbjp2YXIoLS1cM2I0IDQp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206bWQiXXtwYWRkaW5nOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTptZCJde21hcmdpbjp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206bGciXXtwYWRkaW5nOnZhcigtLVwzYjQg''@;'; put 'put ''NikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTpsZyJde21hcmdpbjp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBzbTp4bCJde21hcmdpbjp2YXIoLS1cM2I0''@;'; put 'put ''IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAc206eHhsIl17cGFkZGluZzp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBzbTp4eHhsIl17cGFkZGluZzp2YXIo''@;'; put 'put ''LS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1Ac206eHh4bCJde21hcmdpbjp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBzbTpub25lIl17cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PSJwLXlAc206bm9uZSJde3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDEpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49InAteUBzbTp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAc206eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikh''@;'; put 'put ''aW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw''@;'; put 'put ''LXhAc206eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBzbTp4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZh''@;'; put 'put ''cigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206c20iXXtwYWRkaW5nLXRvcDp2YXIo''@;'; put 'put ''LS1cM2I0IDQpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBzbTptZCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj0icC15QHNtOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAc206bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGlu''@;'; put 'put ''Zy1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBzbTpsZyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNikhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHNtOnhsIl17cGFkZGlu''@;'; put 'put ''Zy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAc206eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49InAteEBzbTp4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBzbTp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9y''@;'; put 'put ''dGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBzbTp4eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlA''@;'; put 'put ''c206eHh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHNtOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PSJtLXlAc206bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHNtOnh4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAc206eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAyKSFp''@;'; put 'put ''bXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHNtOnh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBz''@;'; put 'put ''bTp4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0''@;'; put 'put ''IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFp''@;'; put 'put ''bXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBz''@;'; put 'put ''bTptZCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTpsZyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0''@;'; put 'put ''IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBzbTp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykh''@;'; put 'put ''aW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBzbTp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBz''@;'; put 'put ''bTp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwz''@;'; put 'put ''YjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHNtOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAc206eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNi''@;'; put 'put ''NCA5KSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBzbTpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206bm9uZSJde3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJwLWJAc206bm9uZSJde3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHNtOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAc206eHh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC1yQHNtOnh4eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnh4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTp4eHhzIl17cGFk''@;'; put 'put ''ZGluZy1sZWZ0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNtOnh4cyJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHNtOnh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PSJwLWJAc206eHhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAc206eHhzIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNtOnhzIl17cGFkZGluZy10b3A6''@;'; put 'put ''dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206eHMiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnhzIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJwLWxAc206eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAc206c20iXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTpzbSJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA0''@;'; put 'put ''KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAc206c20iXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTpzbSJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBzbTptZCJd''@;'; put 'put ''e3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHNtOm1kIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBzbTptZCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC1sQHNtOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHNtOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206bGciXXtwYWRkaW5nLXJpZ2h0''@;'; put 'put ''OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOmxnIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAc206bGciXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJwLXRAc206eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTp4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAc206eGwiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0''@;'; put 'put ''IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBzbTp4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBzbTp4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBzbTp4eGwi''@;'; put 'put ''XXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHNtOnh4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHNtOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49InAtdEBzbTp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAc206eHh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAc206eHh4bCJde3Bh''@;'; put 'put ''ZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHNtOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206bm9uZSJde21hcmdpbi10b3A6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJtLXJAc206bm9uZSJde21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBzbTpub25lIl17bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTpub25lIl17bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRA''@;'; put 'put ''c206eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAc206eHh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBzbTp4eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTp4eHhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBzbTp4eHMiXXtt''@;'; put 'put ''YXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206eHhzIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49Im0tdEBzbTp4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAc206eHMiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206eHMiXXttYXJnaW4tYm90dG9tOnZh''@;'; put 'put ''cigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHNtOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206c20iXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNt''@;'; put 'put ''OnNtIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOnNtIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTpzbSJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBzbTptZCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBzbTptZCJde21hcmdpbi1ib3R0''@;'; put 'put ''b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206bWQiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBzbTpsZyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJt''@;'; put 'put ''LXJAc206bGciXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAc206bGciXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHNtOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHNtOnhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOnhsIl17bWFyZ2lu''@;'; put 'put ''LWJvdHRvbTp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTp4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHNtOnh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PSJtLXJAc206eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHNtOnh4bCJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAc206eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0t''@;'; put 'put ''XDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAc206eHh4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAc206eHh4bCJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBz''@;'; put 'put ''bTp4eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBzbTp4eHhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXtbY2RzLWxheW91dCo9ImdhcEBtZDpub25lIl17''@;'; put 'put ''Z2FwOjB9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6eHh4cyJde2dhcDp2YXIoLS1cM2I0IDEpfVtjZHMtbGF5b3V0Kj0iZ2FwQG1kOnh4cyJde2dhcDp2YXIoLS1cM2I0IDIpfVtjZHMtbGF5b3V0Kj0iZ2FwQG1kOnhzIl17Z2FwOnZhcigtLVwzYjQgMyl9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6c20i''@;'; put 'put ''XXtnYXA6dmFyKC0tXDNiNCA0KX1bY2RzLWxheW91dCo9ImdhcEBtZDptZCJde2dhcDp2YXIoLS1cM2I0IDUpfVtjZHMtbGF5b3V0Kj0iZ2FwQG1kOmxnIl17Z2FwOnZhcigtLVwzYjQgNil9W2Nkcy1sYXlvdXQqPSJnYXBAbWQ6eGwiXXtnYXA6dmFyKC0tXDNiNCA3KX1bY2RzLWxheW91dCo9''@;'; put 'put ''ImdhcEBtZDp4eGwiXXtnYXA6dmFyKC0tXDNiNCA4KX1bY2RzLWxheW91dCo9ImdhcEBtZDp4eHhsIl17Z2FwOnZhcigtLVwzYjQgOSl9W2Nkcy1sYXlvdXR+PSJwQG1kOm5vbmUiXXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDpub25lIl17bWFyZ2luOjAhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbWQ6eHh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAbWQ6eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDIp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbWQ6eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOnhzIl17bWFyZ2luOnZhcigtLVwzYjQg''@;'; put 'put ''MykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDpzbSJde3BhZGRpbmc6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOnNtIl17bWFyZ2luOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDptZCJde3BhZGRpbmc6dmFyKC0tXDNi''@;'; put 'put ''NCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOm1kIl17bWFyZ2luOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDpsZyJde3BhZGRpbmc6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOmxnIl17bWFyZ2luOnZhcigtLVwz''@;'; put 'put ''YjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQG1kOnhsIl17bWFyZ2luOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBtZDp4eGwiXXtwYWRkaW5nOnZhcigt''@;'; put 'put ''LVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQG1kOnh4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBtZDp4eHhsIl17bWFyZ2lu''@;'; put 'put ''OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1i''@;'; put 'put ''b3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6eHh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIo''@;'; put 'put ''LS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBtZDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49InAteUBtZDp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBtZDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRk''@;'; put 'put ''aW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6c20iXXtwYWRk''@;'; put 'put ''aW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbWQ6bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9y''@;'; put 'put ''dGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBtZDpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1k''@;'; put 'put ''OmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbWQ6eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1c''@;'; put 'put ''M2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QG1kOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1c''@;'; put 'put ''M2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QG1kOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0icC14QG1kOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBtZDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGlu''@;'; put 'put ''Zy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbWQ6bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50O21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBtZDpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJn''@;'; put 'put ''aW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbWQ6eHh4cyJde21hcmdpbi10b3A6dmFy''@;'; put 'put ''KC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEBtZDp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJtLXlAbWQ6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLXJp''@;'; put 'put ''Z2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnNtIl17bWFyZ2luLWxlZnQ6''@;'; put 'put ''dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOnNtIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj0ibS14QG1kOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tYm90''@;'; put 'put ''dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QG1kOmxnIl17bWFyZ2luLXRvcDp2''@;'; put 'put ''YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj0ibS15QG1kOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QG1kOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1y''@;'; put 'put ''aWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBtZDp4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbWQ6eHh4bCJde21hcmdpbi1s''@;'; put 'put ''ZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBtZDp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50''@;'; put 'put ''fVtjZHMtbGF5b3V0fj0icC10QG1kOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDpub25lIl17cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDpub25lIl17cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nk''@;'; put 'put ''cy1sYXlvdXR+PSJwLWxAbWQ6bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBtZDp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbWQ6eHh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNi''@;'; put 'put ''NCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6eHh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRA''@;'; put 'put ''bWQ6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbWQ6eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDp4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbWQ6eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDp4cyJde3Bh''@;'; put 'put ''ZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49InAtdEBtZDpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQG1kOnNtIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDpzbSJde3BhZGRpbmctYm90dG9t''@;'; put 'put ''OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw''@;'; put 'put ''LXJAbWQ6bWQiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQG1kOm1kIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbWQ6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1''@;'; put 'put ''KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbWQ6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDpsZyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbWQ6bGciXXtw''@;'; put 'put ''YWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBtZDpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBtZDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0icC1yQG1kOnhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDp4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQG1kOnhsIl17cGFkZGluZy1sZWZ0''@;'; put 'put ''OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQG1kOnh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+''@;'; put 'put ''PSJwLWJAbWQ6eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbWQ6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QG1kOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1c''@;'; put 'put ''M2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBtZDp4eHhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBtZDp4eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw''@;'; put 'put ''LWxAbWQ6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDpub25lIl17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0''@;'; put 'put ''fj0ibS1iQG1kOm5vbmUiXXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49Im0tckBtZDp4eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOnh4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnh4eHMiXXttYXJnaW4tbGVmdDp2''@;'; put 'put ''YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQG1kOnh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0t''@;'; put 'put ''YkBtZDp4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QG1kOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBtZDp4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbWQ6eHMiXXttYXJn''@;'; put 'put ''aW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbWQ6c20iXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PSJtLWJAbWQ6c20iXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1kOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbWQ6bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQg''@;'; put 'put ''NSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQG1kOm1kIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOm1kIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBtZDptZCJd''@;'; put 'put ''e21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QG1kOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDpsZyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49Im0tYkBtZDpsZyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbWQ6bGciXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4bCJde21hcmdpbi10b3A6dmFyKC0t''@;'; put 'put ''XDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbWQ6eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbWQ6eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQG1k''@;'; put 'put ''OnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbWQ6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXR+PSJtLWJAbWQ6eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBtZDp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBtZDp4eHhsIl17bWFyZ2lu''@;'; put 'put ''LXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBtZDp4eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQG1kOnh4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMt''@;'; put 'put ''bGF5b3V0fj0ibS1sQG1kOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXtbY2RzLWxheW91dCo9ImdhcEBsZzpub25lIl17Z2FwOjB9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6eHh4cyJde2dhcDp2YXIoLS1cM2I0IDEp''@;'; put 'put ''fVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOnh4cyJde2dhcDp2YXIoLS1cM2I0IDIpfVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOnhzIl17Z2FwOnZhcigtLVwzYjQgMyl9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6c20iXXtnYXA6dmFyKC0tXDNiNCA0KX1bY2RzLWxheW91dCo9ImdhcEBsZzptZCJde2dhcDp2''@;'; put 'put ''YXIoLS1cM2I0IDUpfVtjZHMtbGF5b3V0Kj0iZ2FwQGxnOmxnIl17Z2FwOnZhcigtLVwzYjQgNil9W2Nkcy1sYXlvdXQqPSJnYXBAbGc6eGwiXXtnYXA6dmFyKC0tXDNiNCA3KX1bY2RzLWxheW91dCo9ImdhcEBsZzp4eGwiXXtnYXA6dmFyKC0tXDNiNCA4KX1bY2RzLWxheW91dCo9ImdhcEBs''@;'; put 'put ''Zzp4eHhsIl17Z2FwOnZhcigtLVwzYjQgOSl9W2Nkcy1sYXlvdXR+PSJwQGxnOm5vbmUiXXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBsZzpub25lIl17bWFyZ2luOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzp4eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDEp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbGc6eHh4cyJde21hcmdpbjp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAbGc6eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AbGc6eHhzIl17bWFyZ2luOnZhcigtLVwz''@;'; put 'put ''YjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzp4cyJde3BhZGRpbmc6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOnhzIl17bWFyZ2luOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzpzbSJde3BhZGRpbmc6dmFyKC0t''@;'; put 'put ''XDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOnNtIl17bWFyZ2luOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzptZCJde3BhZGRpbmc6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOm1kIl17bWFyZ2luOnZhcigt''@;'; put 'put ''LVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzpsZyJde3BhZGRpbmc6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOmxnIl17bWFyZ2luOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzp4bCJde3BhZGRpbmc6dmFy''@;'; put 'put ''KC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQGxnOnhsIl17bWFyZ2luOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEBsZzp4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBsZzp4eGwiXXttYXJnaW46''@;'; put 'put ''dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQGxnOnh4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUBsZzp4eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOm5vbmUi''@;'; put 'put ''XXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBsZzpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6eHh4cyJde3BhZGRp''@;'; put 'put ''bmctbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49InAteEBsZzp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBsZzp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWlt''@;'; put 'put ''cG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEBsZzp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15''@;'; put 'put ''QGxnOnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6c20iXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIo''@;'; put 'put ''LS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBsZzpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOm1kIl17cGFkZGluZy1sZWZ0OnZhcigt''@;'; put 'put ''LVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAbGc6bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49InAteEBsZzpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1i''@;'; put 'put ''b3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAbGc6eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBsZzp4bCJde3BhZGRpbmct''@;'; put 'put ''dG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0icC15QGxnOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QGxnOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBv''@;'; put 'put ''cnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUBsZzp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhA''@;'; put 'put ''bGc6bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50O21hcmdpbi1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBsZzpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnh4eHMiXXtt''@;'; put 'put ''YXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49Im0teEBsZzp4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAbGc6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9y''@;'; put 'put ''dGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOnhz''@;'; put 'put ''Il17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOnNtIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBv''@;'; put 'put ''cnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOmxn''@;'; put 'put ''Il17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QGxnOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9y''@;'; put 'put ''dGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QGxnOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBsZzp4''@;'; put 'put ''eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAbGc6eHh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0''@;'; put 'put ''IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUBsZzp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dH49InAtckBsZzpub25lIl17cGFkZGluZy1yaWdodDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzpub25lIl17cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49InAtdEBsZzp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbGc6eHh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbGc6eHh4cyJde3BhZGRpbmct''@;'; put 'put ''Ym90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOnh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1s''@;'; put 'put ''YXlvdXR+PSJwLXJAbGc6eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBsZzp4eHMiXXtwYWRkaW5nLWxlZnQ6''@;'; put 'put ''dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBsZzp4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJw''@;'; put 'put ''LWJAbGc6eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEBsZzp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBsZzpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOnNtIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzpzbSJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOnNtIl17''@;'; put 'put ''cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAbGc6bWQiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0icC1iQGxnOm1kIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAbGc6bGciXXtwYWRkaW5nLXRvcDp2''@;'; put 'put ''YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBsZzpsZyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbGc6bGciXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49''@;'; put 'put ''InAtbEBsZzpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEBsZzp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOnhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcp''@;'; put 'put ''IWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4bCJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQGxnOnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOnh4bCJd''@;'; put 'put ''e3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQGxnOnh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAbGc6eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRh''@;'; put 'put ''bnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QGxnOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckBsZzp4eHhsIl17cGFkZGlu''@;'; put 'put ''Zy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkBsZzp4eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAbGc6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49Im0tdEBsZzpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzpub25lIl17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOm5vbmUiXXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0ibS1sQGxnOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBsZzp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzp4eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1w''@;'; put 'put ''b3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOnh4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBsZzp4eHMiXXtt''@;'; put 'put ''YXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOnh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzp4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtj''@;'; put 'put ''ZHMtbGF5b3V0fj0ibS1sQGxnOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QGxnOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzp4cyJde21hcmdpbi1yaWdodDp2YXIo''@;'; put 'put ''LS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzp4cyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBs''@;'; put 'put ''ZzpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbGc6c20iXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6c20iXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0''@;'; put 'put ''YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAbGc6bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQGxnOm1kIl17bWFyZ2luLXJpZ2h0''@;'; put 'put ''OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOm1kIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBsZzptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i''@;'; put 'put ''bS10QGxnOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzpsZyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkBsZzpsZyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFp''@;'; put 'put ''bXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAbGc6bGciXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBsZzp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAbGc6eGwiXXttYXJnaW4t''@;'; put 'put ''cmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PSJtLXRAbGc6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzp4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAbGc6eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1c''@;'; put 'put ''M2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEBsZzp4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEBsZzp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckBsZzp4''@;'; put 'put ''eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQGxnOnh4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQGxnOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWlt''@;'; put 'put ''cG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTQ0MHB4KXtbY2RzLWxheW91dCo9ImdhcEB4bDpub25lIl17Z2FwOjB9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6eHh4cyJde2dhcDp2YXIoLS1cM2I0IDEpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhsOnh4cyJde2dhcDp2YXIoLS1cM2I0IDIpfVtjZHMt''@;'; put 'put ''bGF5b3V0Kj0iZ2FwQHhsOnhzIl17Z2FwOnZhcigtLVwzYjQgMyl9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6c20iXXtnYXA6dmFyKC0tXDNiNCA0KX1bY2RzLWxheW91dCo9ImdhcEB4bDptZCJde2dhcDp2YXIoLS1cM2I0IDUpfVtjZHMtbGF5b3V0Kj0iZ2FwQHhsOmxnIl17Z2FwOnZhcigtLVwz''@;'; put 'put ''YjQgNil9W2Nkcy1sYXlvdXQqPSJnYXBAeGw6eGwiXXtnYXA6dmFyKC0tXDNiNCA3KX1bY2RzLWxheW91dCo9ImdhcEB4bDp4eGwiXXtnYXA6dmFyKC0tXDNiNCA4KX1bY2RzLWxheW91dCo9ImdhcEB4bDp4eHhsIl17Z2FwOnZhcigtLVwzYjQgOSl9W2Nkcy1sYXlvdXR+PSJwQHhsOm5vbmUi''@;'; put 'put ''XXtwYWRkaW5nOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDpub25lIl17bWFyZ2luOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDp4eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeGw6eHh4cyJde21hcmdpbjp2YXIoLS1c''@;'; put 'put ''M2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InBAeGw6eHhzIl17cGFkZGluZzp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im1AeGw6eHhzIl17bWFyZ2luOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDp4cyJde3BhZGRpbmc6dmFy''@;'; put 'put ''KC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOnhzIl17bWFyZ2luOnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDpzbSJde3BhZGRpbmc6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOnNtIl17bWFyZ2luOnZh''@;'; put 'put ''cigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDptZCJde3BhZGRpbmc6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOm1kIl17bWFyZ2luOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDpsZyJde3BhZGRpbmc6''@;'; put 'put ''dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOmxnIl17bWFyZ2luOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDp4bCJde3BhZGRpbmc6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtQHhsOnhsIl17bWFyZ2lu''@;'; put 'put ''OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icEB4bDp4eGwiXXtwYWRkaW5nOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDp4eGwiXXttYXJnaW46dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwQHhsOnh4eGwiXXtw''@;'; put 'put ''YWRkaW5nOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibUB4bDp4eHhsIl17bWFyZ2luOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOm5vbmUiXXtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDowIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dH49InAteUB4bDpub25lIl17cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6eHh4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigt''@;'; put 'put ''LVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhsOnh4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4bDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFy''@;'; put 'put ''KC0tXDNiNCAyKSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDp4eHMiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49InAteEB4bDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhsOnhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7cGFkZGlu''@;'; put 'put ''Zy1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6c20iXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDpzbSJde3BhZGRp''@;'; put 'put ''bmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOm1kIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA1KSFpbXBv''@;'; put 'put ''cnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXlAeGw6bWQiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteEB4bDpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9y''@;'; put 'put ''dGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhsOmxnIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXhAeGw6''@;'; put 'put ''eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAteUB4bDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwz''@;'; put 'put ''YjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOnh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC15QHhsOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwz''@;'; put 'put ''YjQgOCkhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC14QHhsOnh4eGwiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49InAteUB4bDp4eHhsIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeGw6bm9uZSJde21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50O21hcmdpbi1yaWdodDowIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFy''@;'; put 'put ''KC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeGw6eHh4cyJde21hcmdpbi10b3A6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teEB4bDp4eHMiXXttYXJnaW4tbGVmdDp2YXIo''@;'; put 'put ''LS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXlAeGw6eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0ibS14QHhsOnhzIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhsOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudDttYXJnaW4tYm90dG9t''@;'; put 'put ''OnZhcigtLVwzYjQgMykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhsOnNtIl17bWFyZ2luLXRvcDp2YXIo''@;'; put 'put ''LS1cM2I0IDQpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOm1kIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0ibS15QHhsOm1kIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDUpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOmxnIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0''@;'; put 'put ''OnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhsOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS14QHhsOnhsIl17bWFyZ2luLWxlZnQ6dmFy''@;'; put 'put ''KC0tXDNiNCA3KSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS15QHhsOnhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0ibS14QHhsOnh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDp4eGwiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50O21hcmdpbi1ib3R0''@;'; put 'put ''b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXhAeGw6eHh4bCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50O21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0teUB4bDp4eHhsIl17bWFyZ2luLXRv''@;'; put 'put ''cDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudDttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhsOm5vbmUiXXtwYWRkaW5nLXRvcDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDpub25lIl17cGFkZGluZy1yaWdodDowIWltcG9y''@;'; put 'put ''dGFudH1bY2RzLWxheW91dH49InAtYkB4bDpub25lIl17cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6bm9uZSJde3BhZGRpbmctbGVmdDowIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4bDp4eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAx''@;'; put 'put ''KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6eHh4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eHh4cyJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhs''@;'; put 'put ''Onh4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAxKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeGw6eHhzIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6eHhzIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDIpIWlt''@;'; put 'put ''cG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4bDp4eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4bDp4eHMiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCAyKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeGw6eHMiXXtw''@;'; put 'put ''YWRkaW5nLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDp4cyJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eHMiXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49InAtbEB4bDp4cyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtdEB4bDpzbSJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhsOnNtIl17cGFkZGluZy1yaWdodDp2''@;'; put 'put ''YXIoLS1cM2I0IDQpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4bDpzbSJde3BhZGRpbmctYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhsOnNtIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i''@;'; put 'put ''cC10QHhsOm1kIl17cGFkZGluZy10b3A6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXJAeGw6bWQiXXtwYWRkaW5nLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1iQHhsOm1kIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA1''@;'; put 'put ''KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6bWQiXXtwYWRkaW5nLWxlZnQ6dmFyKC0tXDNiNCA1KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLXRAeGw6bGciXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDpsZyJde3Bh''@;'; put 'put ''ZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6bGciXXtwYWRkaW5nLWJvdHRvbTp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtbEB4bDpsZyJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49InAtdEB4bDp4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1yQHhsOnhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDcpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4bDp4bCJde3BhZGRpbmctYm90dG9t''@;'; put 'put ''OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC1sQHhsOnhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhsOnh4bCJde3BhZGRpbmctdG9wOnZhcigtLVwzYjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0i''@;'; put 'put ''cC1yQHhsOnh4bCJde3BhZGRpbmctcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWJAeGw6eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6eHhsIl17cGFkZGluZy1sZWZ0OnZhcigtLVwz''@;'; put 'put ''YjQgOCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0icC10QHhsOnh4eGwiXXtwYWRkaW5nLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtckB4bDp4eHhsIl17cGFkZGluZy1yaWdodDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49InAtYkB4''@;'; put 'put ''bDp4eHhsIl17cGFkZGluZy1ib3R0b206dmFyKC0tXDNiNCA5KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJwLWxAeGw6eHh4bCJde3BhZGRpbmctbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDpub25lIl17bWFyZ2luLXRvcDowIWltcG9ydGFudH1b''@;'; put 'put ''Y2RzLWxheW91dH49Im0tckB4bDpub25lIl17bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhsOm5vbmUiXXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOm5vbmUiXXttYXJnaW4tbGVmdDowIWltcG9ydGFudH1bY2RzLWxh''@;'; put 'put ''eW91dH49Im0tdEB4bDp4eHhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4bDp4eHhzIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhsOnh4eHMiXXttYXJnaW4tYm90dG9tOnZh''@;'; put 'put ''cigtLVwzYjQgMSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnh4eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDEpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDp4eHMiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1y''@;'; put 'put ''QHhsOnh4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDIpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDp4eHMiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgMikhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnh4cyJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgMikh''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhsOnhzIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4bDp4cyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDp4cyJde21hcmdp''@;'; put 'put ''bi1ib3R0b206dmFyKC0tXDNiNCAzKSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeGw6eHMiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDMpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDpzbSJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlv''@;'; put 'put ''dXR+PSJtLXJAeGw6c20iXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeGw6c20iXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNCkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnNtIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNi''@;'; put 'put ''NCA0KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6bWQiXXttYXJnaW4tdG9wOnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1yQHhsOm1kIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1iQHhsOm1kIl17''@;'; put 'put ''bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDUpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDptZCJde21hcmdpbi1sZWZ0OnZhcigtLVwzYjQgNSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS10QHhsOmxnIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2Rz''@;'; put 'put ''LWxheW91dH49Im0tckB4bDpsZyJde21hcmdpbi1yaWdodDp2YXIoLS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tYkB4bDpsZyJde21hcmdpbi1ib3R0b206dmFyKC0tXDNiNCA2KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWxAeGw6bGciXXttYXJnaW4tbGVmdDp2YXIo''@;'; put 'put ''LS1cM2I0IDYpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDp4bCJde21hcmdpbi10b3A6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXJAeGw6eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeGw6''@;'; put 'put ''eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgNykhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnhsIl17bWFyZ2luLWxlZnQ6dmFyKC0tXDNiNCA3KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLXRAeGw6eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDgpIWltcG9ydGFu''@;'; put 'put ''dH1bY2RzLWxheW91dH49Im0tckB4bDp4eGwiXXttYXJnaW4tcmlnaHQ6dmFyKC0tXDNiNCA4KSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJtLWJAeGw6eHhsIl17bWFyZ2luLWJvdHRvbTp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tbEB4bDp4eGwiXXttYXJnaW4t''@;'; put 'put ''bGVmdDp2YXIoLS1cM2I0IDgpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tdEB4bDp4eHhsIl17bWFyZ2luLXRvcDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH1bY2RzLWxheW91dH49Im0tckB4bDp4eHhsIl17bWFyZ2luLXJpZ2h0OnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5''@;'; put 'put ''b3V0fj0ibS1iQHhsOnh4eGwiXXttYXJnaW4tYm90dG9tOnZhcigtLVwzYjQgOSkhaW1wb3J0YW50fVtjZHMtbGF5b3V0fj0ibS1sQHhsOnh4eGwiXXttYXJnaW4tbGVmdDp2YXIoLS1cM2I0IDkpIWltcG9ydGFudH19W2Nkcy1sYXlvdXQ9bm8tc2Nyb2xsaW5nXXtvdmVyZmxvdzpoaWRkZW4h''@;'; put 'put ''aW1wb3J0YW50fVtjZHMtbGF5b3V0fj0iY29udGFpbmVyOmZpbGwiXSxbY2RzLWxheW91dH49ZmlsbF17d2lkdGg6MTAwJSFpbXBvcnRhbnR9W2Nkcy1sYXlvdXR+PSJjb250YWluZXI6Y2VudGVyIl17bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b31bY2RzLWxheW91dH49ImNv''@;'; put 'put ''bnRhaW5lcjp4cyJde3dpZHRoOjEwMCU7bWF4LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXhzKX1bY2RzLWxheW91dH49ImNvbnRhaW5lcjpzbSJde3dpZHRoOjEwMCU7bWF4LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXNtKX1bY2RzLWxheW91dH49''@;'; put 'put ''ImNvbnRhaW5lcjptZCJde3dpZHRoOjEwMCU7bWF4LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLW1kKX1bY2RzLWxheW91dH49ImNvbnRhaW5lcjpsZyJde3dpZHRoOjEwMCU7bWF4LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLWxnKX1bY2RzLWxheW91''@;'; put 'put ''dH49ImNvbnRhaW5lcjp4bCJde3dpZHRoOjEwMCU7bWF4LXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtbGF5b3V0LXdpZHRoLXhsKX0qLDphZnRlciw6YmVmb3JlLDpob3N0e2JveC1zaXppbmc6Ym9yZGVyLWJveH1bY2RzLXRoZW1lfj1kYXJrXXstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jb2xv''@;'; put 'put ''ci01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMzAwOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItY29uc3RydWN0aW9uLTIwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29sb3ItMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2Rz''@;'; put 'put ''LWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktbGluay1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMjAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5r''@;'; put 'put ''LWNvbG9yLXZpc2l0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci0zMDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTIwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY29s''@;'; put 'put ''b3ItNDUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0b246dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tOTAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1kaXNhYmxlZDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWluZm8taG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTIwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc3VjY2Vzcy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWdyZWVuLTQwMCk7LS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktd2FybmluZy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy02MDApOy0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC00MDApOy0tY2RzLWdsb2Jh''@;'; put 'put ''bC10eXBvZ3JhcGh5LW5ldXRyYWwtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1saW5rLW9uLWNvbG9yYmc6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtdHlw''@;'; put 'put ''b2dyYXBoeS1jb2xvci01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFj''@;'; put 'put ''ayk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMjAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5''@;'; put 'put ''LWxpbmstY29sb3ItdmlzaXRlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxhdmVuZGVyLTMwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLXZpc2l0ZWQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1sYXZlbmRlci0yMDApOy0tY2RzLWFsaWFzLW9iamVjdC1hcHAt''@;'; put 'put ''YmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tkcm9wLWJhY2tncm91bmQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTMwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5l''@;'; put 'put ''ci1iYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRh''@;'; put 'put ''aW5lci1iYWNrZ3JvdW5kLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2U6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1v''@;'; put 'put ''YmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtaW52ZXJzZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWludmVyc2Utc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1''@;'; put 'put ''Y3Rpb24tODAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNkcy1hbGlhcy1vYmplY3Qtb3ZlcmxheS1iYWNrZ3JvdW5kOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTkwMCk7LS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3ItdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDApOy0tY2RzLWFsaWFzLW9iamVj''@;'; put 'put ''dC1ib3JkZXItY29sb3Itc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTEwMDowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSAwIHZhcigtLWNkcy1hbGlhcy1v''@;'; put 'put ''YmplY3Qtb3BhY2l0eS0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMjAwOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIDAgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTIwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LXNoYWRv''@;'; put 'put ''dy0zMDA6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgMCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1''@;'; put 'put ''Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25z''@;'; put 'put ''dHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1j''@;'; put 'put ''b2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcjp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNl''@;'; put 'put ''bGVjdGVkOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS05MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj''@;'; put 'put ''dGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKTst''@;'; put 'put ''LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0z''@;'; put 'put ''MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3MtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi00MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tc3VjY2Vzcy1zZWNvbmRhcnktaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0xMDAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXllbGxvdy0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTUwMCk7LS1jZHMtYWxpYXMt''@;'; put 'put ''b2JqZWN0LWludGVyYWN0aW9uLXdhcm5pbmctc2Vjb25kYXJ5LWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3IteWVsbG93LTEwMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1kYW5nZXItaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNDAwKTstLWNkcy1hbGlh''@;'; put 'put ''cy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWNsaWNrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1zZWNvbmRhcnktaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMCk7LS1jZHMtYWxpYXMt''@;'; put 'put ''b2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMjAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1jbGljazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1uZXV0cmFsLXNlY29uZGFyeS1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbnZlcnNlLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3Ry''@;'; put 'put ''dWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWludmVyc2UtY2xpY2s6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tODAwKTstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtZGFyazp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9y''@;'; put 'put ''LWNvbnN0cnVjdGlvbi04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy10aW50OnRyYW5zcGFyZW50Oy0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1i''@;'; put 'put ''bHVlLTgwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWluZm8tc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTUwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3M6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLXRpbnQ6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZzp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTQwMCk7LS1j''@;'; put 'put ''ZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS01MDApOy0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcms6dmFy''@;'; put 'put ''KC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS03MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy1z''@;'; put 'put ''dGF0dXMtZGFuZ2VyLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTYwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlci1kYXJrOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTkwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWw6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1j''@;'; put 'put ''b25zdHJ1Y3Rpb24tMzAwKTstLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTcwMCk7LS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNDAwKTst''@;'; put 'put ''LWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNjAwKTstLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi03MDApOy0tY2RzLWFsaWFzLXN0YXR1cy1kaXNh''@;'; put 'put ''YmxlZC1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi01MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbjp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi05MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNTAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWluZm8taG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1j''@;'; put 'put ''b2xvci1ibHVlLTIwMCk7LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWNjZXNzLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNDAwKTstLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXdhcm5pbmctaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci15ZWxsb3ctNjAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy10eXBvZ3JhcGh5LWRhbmdlci1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC00MDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGlu''@;'; put 'put ''ay1vbi1jb2xvcmJnOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0zMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheS10aW50OnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtY29sb3ItY29uc3RydWN0aW9uLTEwMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheS1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0yMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy11dGlsaXR5LWJsdWUtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDApOy0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZTp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLWNvbG9yLWJsdWUtNzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWxpZ2h0LWJsdWUtdGludDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1saWdodC1ibHVlLXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXV0aWxpdHktZGFyay1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LWRhcmstYmx1ZS10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1kYXJrLWJsdWUtc2hhZGU6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1henVyZS01MCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTQwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbi10aW50OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMTAwMCk7LS1jZHMt''@;'; put 'put ''YWxpYXMtdXRpbGl0eS1ncmVlbi1zaGFkZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTIwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS15ZWxsb3c6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS00MDApOy0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93LXRpbnQ6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93LXNoYWRlOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMzAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXJlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC01MDApOy0tY2RzLWFsaWFzLXV0aWxpdHkt''@;'; put 'put ''cmVkLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMjAwKTstLWNkcy1hbGlhcy11dGlsaXR5LXRhbmdlcmluZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmlu''@;'; put 'put ''ZS02MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdGFuZ2VyaW5lLXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUtc2hhZGU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci10YW5nZXJpbmUtNDAwKTstLWNkcy1hbGlh''@;'; put 'put ''cy11dGlsaXR5LXZpb2xldDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC00MDApOy0tY2RzLWFsaWFzLXV0aWxpdHktdmlvbGV0LXRpbnQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwMCk7LS1jZHMtYWxpYXMtdXRpbGl0eS12aW9sZXQtc2hhZGU6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci12aW9sZXQtMjAwKTstLWNkcy1hbGlhcy12aXotYm9yZGVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29vbC1ncmF5LTUwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xLWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdl''@;'; put 'put ''bmVyYWwtMi12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0zLWFxdWE6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTIwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtNC1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3ItbGltZS0zMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTUtYmx1ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMjAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC02LWFxdWE6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTUwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC03''@;'; put 'put ''LXZpb2xldDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0yMDApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTgtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtMTAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC05LWJsdWU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVl''@;'; put 'put ''LTMwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTAtbGltZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWxpbWUtNTApOy0tY2RzLWFsaWFzLXZpei1nZW5lcmFsLTExLWFxdWE6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTQwMCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTItdmlv''@;'; put 'put ''bGV0OnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTUwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xMy12aW9sZXQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNC1ibHVlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1''@;'; put 'put ''ZS01MCk7LS1jZHMtYWxpYXMtdml6LWdlbmVyYWwtMTUtYXF1YTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtMzAwKTstLWNkcy1hbGlhcy12aXotZ2VuZXJhbC0xNi1saW1lOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItbGltZS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1uZXV0''@;'; put 'put ''cmFsOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTMwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LXN1Y2Nlc3M6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS13YXJuaW5nOnZhcigtLWNkcy1nbG9iYWwtY29s''@;'; put 'put ''b3IteWVsbG93LTMwMCk7LS1jZHMtYWxpYXMtdml6LXNldmVyaXR5LWltbWVkaWF0ZTp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXRhbmdlcmluZS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXZlcml0eS1jcml0aWNhbDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC03MDApOy0tY2RzLWFsaWFz''@;'; put 'put ''LXZpei1zZXF1ZW50aWFsLWJsdWUtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMjAwOnZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS02''@;'; put 'put ''MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50''@;'; put 'put ''aWFsLWJsdWUtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmx1ZS0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtOTAwOnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtY29sb3ItYmx1ZS0xMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWJsdWUtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC01MDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0xMDAwKTstLWNk''@;'; put 'put ''cy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTkwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50''@;'; put 'put ''aWFsLXZpb2xldC0zMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItdmlvbGV0LTYwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTUwMDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC02MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''dmlvbGV0LTMwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtdmlvbGV0LTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXZpb2xldC05MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci12aW9sZXQtMTAwKTstLWNkcy1h''@;'; put 'put ''bGlhcy12aXotc2VxdWVudGlhbC12aW9sZXQtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXZpb2xldC01MCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0xMDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1v''@;'; put 'put ''Y2hyZS0xMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTIwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTgwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtMzAwOnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtY29sb3Itb2NocmUtNzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS00MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLW9jaHJlLTUwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTUwMCk7LS1j''@;'; put 'put ''ZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtNDAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS03MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1vY2hyZS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFs''@;'; put 'put ''LW9jaHJlLTgwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLW9jaHJlLTIwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtb2NocmUtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itb2NocmUtMTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1vY2hyZS0xMDAwOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3Itb2NocmUtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1hcXVhLTEwMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS05MDApOy0tY2Rz''@;'; put 'put ''LWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS04MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS03MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEt''@;'; put 'put ''NDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3It''@;'; put 'put ''YXF1YS00MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtNzAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtODAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0yMDApOy0tY2RzLWFsaWFzLXZpei1z''@;'; put 'put ''ZXF1ZW50aWFsLWFxdWEtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXF1YS0xMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWFxdWEtMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWFxdWEtNTApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTUwOnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtY29sb3ItZ3JlZW4tMTAwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tMTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tOTAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi04''@;'; put 'put ''MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTMwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNDAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tNjAwKTstLWNkcy1hbGlhcy12aXotc2Vx''@;'; put 'put ''dWVudGlhbC1ncmVlbi01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi01MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTYwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tNzAwOnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtY29sb3ItZ3JlZW4tMzAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1ncmVlbi04MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmVlbi0yMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLWdyZWVuLTkwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVu''@;'; put 'put ''LTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtZ3JlZW4tMTAwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyZWVuLTUwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtNTA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtMTAwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVl''@;'; put 'put ''bnRpYWwtcmVkLTEwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC05MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC0yMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtODAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtMzAwOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''Y29sb3ItcmVkLTcwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTQwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC02MDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC01MDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTAwKTstLWNkcy1hbGlhcy12aXot''@;'; put 'put ''c2VxdWVudGlhbC1yZWQtNjAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTQwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTcwMDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXJlZC0zMDApOy0tY2RzLWFsaWFzLXZpei1zZXF1ZW50aWFsLXJlZC04MDA6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1jb2xvci1yZWQtMjAwKTstLWNkcy1hbGlhcy12aXotc2VxdWVudGlhbC1yZWQtOTAwOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItcmVkLTEwMCk7LS1jZHMtYWxpYXMtdml6LXNlcXVlbnRpYWwtcmVkLTEwMDA6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1yZWQtNTApfTpyb290ey0tY2Rz''@;'; put 'put ''LWdsb2JhbC1iYXNlOjIwfWh0bWx7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtsaW5lLWhlaWdodDoxLjE1Oy1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCV9Ym9keXttYXJnaW46MH1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixm''@;'; put 'put ''aWd1cmUsZm9vdGVyLGhlYWRlcixtYWluLG1lbnUsbmF2LHNlY3Rpb24sc3VtbWFyeXtkaXNwbGF5OmJsb2NrfWF1ZGlvLGNhbnZhcyxwcm9ncmVzcyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9ja31hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lO2hlaWdodDowfXByb2dyZXNz''@;'; put 'put ''e3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXRlbXBsYXRlLFtoaWRkZW5de2Rpc3BsYXk6bm9uZX1he2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDpvYmplY3RzfWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZS13aWR0aDowfWFiYnJbdGl0''@;'; put 'put ''bGVde2JvcmRlci1ib3R0b206bm9uZTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6aW5oZXJpdH1iLHN0cm9uZ3tmb250''@;'; put 'put ''LXdlaWdodDpib2xkZXJ9ZGZue2ZvbnQtc3R5bGU6aXRhbGljfWgxe2ZvbnQtc2l6ZToyZW07bWFyZ2luOi42N2VtIDB9bWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZjA7Y29sb3I6IzAwMH1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bv''@;'; put 'put ''c2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19aW1ne2JvcmRlci1zdHlsZTpub25lfXN2Zzpub3QoOnJvb3Qpe292ZXJmbG93OmhpZGRlbn1jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTptb25vc3BhY2U7''@;'; put 'put ''Zm9udC1zaXplOjFlbX1maWd1cmV7bWFyZ2luOjFlbSA0MHB4fWhye2JveC1zaXppbmc6Y29udGVudC1ib3g7aGVpZ2h0OjA7b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDttYXJnaW46MH10ZXh0YXJlYXtsaW5lLWhl''@;'; put 'put ''aWdodDoxLjE1fW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OjcwMH1idXR0b24saW5wdXR7b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLGh0bWwgW3R5cGU9YnV0dG9uXSxbdHlwZT1yZXNldF0sW3R5cGU9c3VibWl0XXstd2Via2l0LWFwcGVh''@;'; put 'put ''cmFuY2U6YnV0dG9ufWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPXJlc2V0XTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1zdWJtaXRdOjotbW96LWZvY3VzLWlubmVye2JvcmRlci1zdHlsZTpub25lO3BhZGRpbmc6MH1idXR0''@;'; put 'put ''b246LW1vei1mb2N1c3JpbmcsW3R5cGU9YnV0dG9uXTotbW96LWZvY3VzcmluZyxbdHlwZT1yZXNldF06LW1vei1mb2N1c3JpbmcsW3R5cGU9c3VibWl0XTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOjFweCBkb3R0ZWQgQnV0dG9uVGV4dH1maWVsZHNldHtib3JkZXI6MXB4IHNvbGlkIHNpbHZl''@;'; put 'put ''cjttYXJnaW46MCAycHg7cGFkZGluZzouMzVlbSAuNjI1ZW0gLjc1ZW19bGVnZW5ke2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2Rpc3BsYXk6dGFibGU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzowO3doaXRlLXNwYWNlOm5vcm1hbH10ZXh0YXJlYXtvdmVyZmxvdzphdXRv''@;'; put 'put ''fVt0eXBlPWNoZWNrYm94XSxbdHlwZT1yYWRpb117Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1bdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2Vh''@;'; put 'put ''cmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6''@;'; put 'put ''LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9OnJvb3R7LS1jbHItY29sb3ItbmV1dHJhbC0wOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1uZXV0cmFsLTUwOmhzbCgxOTgsIDAlLCA5OCUpOy0tY2xyLWNvbG9y''@;'; put 'put ''LW5ldXRyYWwtMTAwOmhzbCgxOTgsIDAlLCA5NSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMjAwOmhzbCgxOTgsIDAlLCA5MSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMzAwOmhzbCgxOTgsIDAlLCA4NyUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNDAwOmhzbCgxOTgsIDAlLCA4MCUpOy0tY2xyLWNv''@;'; put 'put ''bG9yLW5ldXRyYWwtNTAwOmhzbCgxOTgsIDAlLCA3MCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNjAwOmhzbCgxOTgsIDAlLCA1NSUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtNzAwOmhzbCgxOTgsIDAlLCA0MCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtODAwOmhzbCgxOTgsIDAlLCAyNyUpOy0tY2xy''@;'; put 'put ''LWNvbG9yLW5ldXRyYWwtOTAwOmhzbCgxOTgsIDAlLCAyMCUpOy0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTA6aHNsKDE5OCwgMCUsIDAlKTst''@;'; put 'put ''LWNsci1jb2xvci1vbi1uZXV0cmFsLTEwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC0zMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1uZXV0cmFsLTQwMDpoc2woMTk4''@;'; put 'put ''LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtNzAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1uZXV0''@;'; put 'put ''cmFsLTgwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tbmV1dHJhbC05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLW5ldXRyYWwtMTAwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3ItYWN0aW9uLTUwOmhzbCgxOTgsIDgzJSwgOTQlKTstLWNs''@;'; put 'put ''ci1jb2xvci1hY3Rpb24tMTAwOmhzbCgxOTgsIDgxJSwgODglKTstLWNsci1jb2xvci1hY3Rpb24tMjAwOmhzbCgxOTgsIDc4JSwgNzglKTstLWNsci1jb2xvci1hY3Rpb24tMzAwOmhzbCgxOTgsIDY5JSwgNjklKTstLWNsci1jb2xvci1hY3Rpb24tNDAwOmhzbCgxOTgsIDY2JSwgNTclKTst''@;'; put 'put ''LWNsci1jb2xvci1hY3Rpb24tNTAwOmhzbCgxOTgsIDgwJSwgNDYlKTstLWNsci1jb2xvci1hY3Rpb24tNjAwOmhzbCgxOTgsIDEwMCUsIDMyJSk7LS1jbHItY29sb3ItYWN0aW9uLTcwMDpoc2woMTk4LCAxMDAlLCAyOCUpOy0tY2xyLWNvbG9yLWFjdGlvbi04MDA6aHNsKDE5OCwgMTAwJSwg''@;'; put 'put ''MjQlKTstLWNsci1jb2xvci1hY3Rpb24tOTAwOmhzbCgxOTgsIDEwMCUsIDIxJSk7LS1jbHItY29sb3ItYWN0aW9uLTEwMDA6aHNsKDE5OCwgMTAwJSwgMTUlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tNTA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tMTAwOmhzbCgx''@;'; put 'put ''OTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tYWN0aW9uLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0zMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1hY3Rpb24tNDAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tYWN0aW9uLTUw''@;'; put 'put ''MDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi04MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9y''@;'; put 'put ''LW9uLWFjdGlvbi05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWFjdGlvbi0xMDAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTUwOmhzbCgyODIsIDEwMCUsIDk1JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi0xMDA6''@;'; put 'put ''aHNsKDI4MiwgNTklLCA4NyUpOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tMjAwOmhzbCgyODIsIDUxJSwgNzglKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTMwMDpoc2woMjgyLCA0NSUsIDcwJSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi00MDA6aHNsKDI4Miwg''@;'; put 'put ''NDQlLCA2MiUpOy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tNTAwOmhzbCgyODIsIDQzJSwgNTQlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTYwMDpoc2woMjgyLCA1MCUsIDQ1JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi03MDA6aHNsKDI4MiwgNjklLCAzNyUp''@;'; put 'put ''Oy0tY2xyLWNvbG9yLXNlY29uZGFyeS1hY3Rpb24tODAwOmhzbCgyODIsIDEwMCUsIDI5JSk7LS1jbHItY29sb3Itc2Vjb25kYXJ5LWFjdGlvbi05MDA6aHNsKDI4MiwgMTAwJSwgMjIlKTstLWNsci1jb2xvci1zZWNvbmRhcnktYWN0aW9uLTEwMDA6aHNsKDI4MiwgMTAwJSwgMTQlKTstLWNs''@;'; put 'put ''ci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTUwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9y''@;'; put 'put ''LW9uLXNlY29uZGFyeS1hY3Rpb24tMzAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc2Vjb25kYXJ5LWFjdGlvbi00MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTUwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24t''@;'; put 'put ''c2Vjb25kYXJ5LWFjdGlvbi02MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLXNlY29uZGFyeS1hY3Rpb24tNzAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1zZWNvbmRhcnktYWN0aW9uLTgwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24t''@;'; put 'put ''c2Vjb25kYXJ5LWFjdGlvbi05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLXNlY29uZGFyeS1hY3Rpb24tMTAwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3ItZGFuZ2VyLTUwOmhzbCg5LCAxMDAlLCA5NyUpOy0tY2xyLWNvbG9yLWRhbmdlci0xMDA6aHNsKDks''@;'; put 'put ''IDk1JSwgOTIlKTstLWNsci1jb2xvci1kYW5nZXItMjAwOmhzbCg5LCA5MSUsIDg2JSk7LS1jbHItY29sb3ItZGFuZ2VyLTMwMDpoc2woOSwgODMlLCA3NiUpOy0tY2xyLWNvbG9yLWRhbmdlci00MDA6aHNsKDksIDg1JSwgNjclKTstLWNsci1jb2xvci1kYW5nZXItNTAwOmhzbCg5LCA4OCUs''@;'; put 'put ''IDYxJSk7LS1jbHItY29sb3ItZGFuZ2VyLTYwMDpoc2woOSwgOTIlLCA1MCUpOy0tY2xyLWNvbG9yLWRhbmdlci03MDA6aHNsKDksIDEwMCUsIDQzJSk7LS1jbHItY29sb3ItZGFuZ2VyLTgwMDpoc2woOSwgMTAwJSwgMzglKTstLWNsci1jb2xvci1kYW5nZXItOTAwOmhzbCg5LCAxMDAlLCAz''@;'; put 'put ''MCUpOy0tY2xyLWNvbG9yLWRhbmdlci0xMDAwOmhzbCg5LCAxMDAlLCAyMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci01MDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1kYW5nZXItMjAwOmhzbCgxOTgs''@;'; put 'put ''IDAlLCAwJSk7LS1jbHItY29sb3Itb24tZGFuZ2VyLTMwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci00MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1kYW5nZXItNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tZGFuZ2VyLTYwMDpo''@;'; put 'put ''c2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci04MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9uLWRhbmdlci05MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNvbG9yLW9u''@;'; put 'put ''LWRhbmdlci0xMDAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci13YXJuaW5nLTUwOmhzbCg0OCwgMTAwJSwgOTUlKTstLWNsci1jb2xvci13YXJuaW5nLTEwMDpoc2woNDgsIDEwMCUsIDg5JSk7LS1jbHItY29sb3Itd2FybmluZy0yMDA6aHNsKDQ4LCAxMDAlLCA4MyUpOy0tY2xy''@;'; put 'put ''LWNvbG9yLXdhcm5pbmctMzAwOmhzbCg0OCwgOTglLCA3MiUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNDAwOmhzbCg0OCwgOTQlLCA1NyUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNTAwOmhzbCg0OCwgOTUlLCA0OCUpOy0tY2xyLWNvbG9yLXdhcm5pbmctNjAwOmhzbCg0NiwgMTAwJSwgNDUlKTst''@;'; put 'put ''LWNsci1jb2xvci13YXJuaW5nLTcwMDpoc2woNDMsIDEwMCUsIDQyJSk7LS1jbHItY29sb3Itd2FybmluZy04MDA6aHNsKDQxLCAxMDAlLCAzNCUpOy0tY2xyLWNvbG9yLXdhcm5pbmctOTAwOmhzbCgzOCwgMTAwJSwgMjglKTstLWNsci1jb2xvci13YXJuaW5nLTEwMDA6aHNsKDMxLCAxMDAl''@;'; put 'put ''LCAxOSUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTEwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctMjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy0zMDA6''@;'; put 'put ''aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTQwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctNTAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy02MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13''@;'; put 'put ''YXJuaW5nLTcwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXdhcm5pbmctODAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24td2FybmluZy05MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi13YXJuaW5nLTEwMDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0t''@;'; put 'put ''Y2xyLWNvbG9yLXN1Y2Nlc3MtNTA6aHNsKDkzLCA1MiUsIDg4JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDA6aHNsKDkzLCA1OCUsIDc1JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0yMDA6aHNsKDkzLCA3NiUsIDQ5JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0zMDA6aHNsKDkzLCA3NyUsIDQ0JSk7''@;'; put 'put ''LS1jbHItY29sb3Itc3VjY2Vzcy00MDA6aHNsKDkzLCA3OSUsIDQwJSk7LS1jbHItY29sb3Itc3VjY2Vzcy01MDA6aHNsKDkzLCA2NyUsIDM4JSk7LS1jbHItY29sb3Itc3VjY2Vzcy02MDA6aHNsKDkzLCA4NSUsIDMyJSk7LS1jbHItY29sb3Itc3VjY2Vzcy03MDA6aHNsKDkzLCAxMDAlLCAy''@;'; put 'put ''NiUpOy0tY2xyLWNvbG9yLXN1Y2Nlc3MtODAwOmhzbCg5MywgMTAwJSwgMjElKTstLWNsci1jb2xvci1zdWNjZXNzLTkwMDpoc2woOTMsIDEwMCUsIDE2JSk7LS1jbHItY29sb3Itc3VjY2Vzcy0xMDAwOmhzbCg5MywgMTAwJSwgMTMlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwOmhzbCgx''@;'; put 'put ''OTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy0xMDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTIwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtMzAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vz''@;'; put 'put ''cy00MDA6aHNsKDE5OCwgMCUsIDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTUwMDpoc2woMTk4LCAwJSwgMCUpOy0tY2xyLWNvbG9yLW9uLXN1Y2Nlc3MtNjAwOmhzbCgxOTgsIDAlLCAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy03MDA6aHNsKDE5OCwgMCUsIDEwMCUpOy0tY2xyLWNv''@;'; put 'put ''bG9yLW9uLXN1Y2Nlc3MtODAwOmhzbCgxOTgsIDAlLCAxMDAlKTstLWNsci1jb2xvci1vbi1zdWNjZXNzLTkwMDpoc2woMTk4LCAwJSwgMTAwJSk7LS1jbHItY29sb3Itb24tc3VjY2Vzcy0xMDAwOmhzbCgxOTgsIDAlLCAxMDAlKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1jbG9zZS1jb2xv''@;'; put 'put ''cjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1jbG9zZS1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1jbG9zZS1jb2xvci1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1p''@;'; put 'put ''bnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWJhc2Vmb250LXNpemU6MTI1JTstLWNsci1nbG9iYWwtYm9yZGVycmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLWdsb2JhbC1ib3JkZXJ3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0''@;'; put 'put ''LWJvcmRlci13aWR0aC0xMDApOy0tY2xyLWdsb2JhbC1hcHAtYmFja2dyb3VuZDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWFwcC1iYWNrZ3JvdW5kKTstLWNsci1nbG9iYWwtc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxl''@;'; put 'put ''Y3RlZCk7LS1jbHItZ2xvYmFsLW9uLXNlbGVjdGlvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLXNlbGVjdGVkKTstLWNsci1nbG9iYWwtaG92ZXItY29sb3I6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWxpbmstY29sb3ItaG92ZXIpOy0tY2xy''@;'; put 'put ''LWdsb2JhbC1jb250ZW50LWhlYWRlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZ2xvYmFsLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1nbG9iYWwtc3VjY2Vzcy1jb2xvcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWdsb2JhbC1lcnJvci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcil9OnJvb3R7LS1jbHItcG9wb3Zlci1ib3gtc2hhZG93LWNvbG9yOnJnYmEoMTQwLCAxNDAsIDE0MCwgLjI1KX06cm9vdCBbY2RzLXRoZW1lXXst''@;'; put 'put ''LWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5Ok1ldHJvcG9saXMsICJBdmVuaXIgTmV4dCIsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmOy0tY2xyLWJvZHktZm9udDp2YXIoLS1jbHItbWV0cm9wb2xpcy1mb250LWZhbWlseSk7LS1jbHItZm9udDp2YXIoLS1jbHItYm9k''@;'; put 'put ''eS1mb250KTstLWNsci1kaXNwbGF5LWZvbnQ6dmFyKC0tY2xyLW1ldHJvcG9saXMtZm9udC1mYW1pbHkpOy0tY2xyLWZvbnQtd2VpZ2h0LWxpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LWxpZ2h0KTstLWNsci1mb250LXdlaWdodC1yZWd1bGFyOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLWZvbnQtd2VpZ2h0LXNlbWlib2xkOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci1mb250LXdlaWdodC1ib2xkOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5''@;'; put 'put ''LWZvbnQtd2VpZ2h0LWJvbGQpOy0tY2xyLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1leHRyYWJvbGQpOy0tY2xyLWgxLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMCk7LS1jbHItaDEtZm9udC1z''@;'; put 'put ''aXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC1zaXplKTstLWNsci1oMS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWZvbnQtd2VpZ2h0KTstLWNsci1oMS1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTst''@;'; put 'put ''LWNsci1oMS1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWxpbmUtaGVpZ2h0KTstLWNsci1oMS1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNwbGF5LWxldHRlci1zcGFjaW5nKTstLWNsci1oMi1jb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0zMDApOy0tY2xyLWgyLWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1oZWFkbGluZS1mb250LXNpemUpOy0tY2xyLWgyLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWhlYWRsaW5lLWZvbnQtd2VpZ2h0''@;'; put 'put ''KTstLWNsci1oMi1mb250LWZhbWlseTp2YXIoLS1jbHItZGlzcGxheS1mb250KTstLWNsci1oMi1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1oZWFkbGluZS1saW5lLWhlaWdodCk7LS1jbHItaDItbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw''@;'; put 'put ''aHktaGVhZGxpbmUtbGV0dGVyLXNwYWNpbmcpOy0tY2xyLWgzLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMCk7LS1jbHItaDMtZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWZvbnQtc2l6ZSk7LS1jbHItaDMtZm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktdGl0bGUtZm9udC13ZWlnaHQpOy0tY2xyLWgzLWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWgzLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXRpdGxlLWxpbmUtaGVpZ2h0KTstLWNsci1o''@;'; put 'put ''My1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS10aXRsZS1sZXR0ZXItc3BhY2luZyk7LS1jbHItaDQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwKTstLWNsci1oNC1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt''@;'; put 'put ''c2VjdGlvbi1mb250LXNpemUpOy0tY2xyLWg0LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpOy0tY2xyLWg0LWZvbnQtZmFtaWx5OnZhcigtLWNsci1kaXNwbGF5LWZvbnQpOy0tY2xyLWg0LWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpOy0tY2xyLWg0LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpOy0tY2xyLWg1LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTMwMCk7''@;'; put 'put ''LS1jbHItaDUtZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplKTstLWNsci1oNS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1oNS1mb250LWZhbWlseTp2YXIo''@;'; put 'put ''LS1jbHItZGlzcGxheS1mb250KTstLWNsci1oNS1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1oNS1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFj''@;'; put 'put ''aW5nKTstLWNsci1oNi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0zMDApOy0tY2xyLWg2LWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1tZXNzYWdlLWZvbnQtc2l6ZSk7LS1jbHItaDYtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9n''@;'; put 'put ''cmFwaHktbWVzc2FnZS1mb250LXdlaWdodCk7LS1jbHItaDYtZm9udC1mYW1pbHk6dmFyKC0tY2xyLWRpc3BsYXktZm9udCk7LS1jbHItaDYtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbWVzc2FnZS1saW5lLWhlaWdodCk7LS1jbHItaDYtbGV0dGVyLXNwYWNpbmc6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbWVzc2FnZS1sZXR0ZXItc3BhY2luZyk7LS1jbHItcDAtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wMC1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUp''@;'; put 'put ''Oy0tY2xyLXAwLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpOy0tY2xyLXAwLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpOy0tY2xyLXAwLWxldHRlci1zcGFjaW5nOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpOy0tY2xyLXAxLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItcDEtZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTstLWNsci1wMS1m''@;'; put 'put ''b250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTstLWNsci1wMS1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTstLWNsci1wMS1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlw''@;'; put 'put ''b2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTstLWNsci1wMi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXAyLWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci1wMi1mb250LXdl''@;'; put 'put ''aWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1tZWRpdW0pOy0tY2xyLXAyLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItcDItbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRl''@;'; put 'put ''ci1zcGFjaW5nKTstLWNsci1wMy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXAzLWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci1wMy1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC13ZWlnaHQpOy0tY2xyLXAzLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItcDMtbGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTstLWNs''@;'; put 'put ''ci1wNC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApOy0tY2xyLXA0LWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci1wNC1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1m''@;'; put 'put ''b250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItcDQtbGluZS1oZWlnaHQ6Y2FsYygyMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLXA0LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7LS1j''@;'; put 'put ''bHItcDUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wNS1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7LS1jbHItcDUtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt''@;'; put 'put ''c2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTstLWNsci1wNS1saW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLXA1LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7LS1jbHItcDYtY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDUwKTstLWNsci1wNi1mb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpOy0tY2xyLXA2LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWln''@;'; put 'put ''aHQpOy0tY2xyLXA2LWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQpOy0tY2xyLXA2LWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGV0dGVyLXNwYWNpbmcpOy0tY2xyLXA3LWNvbG9yOnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItcDctZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemUpOy0tY2xyLXA3LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlv''@;'; put 'put ''bi1mb250LXdlaWdodCk7LS1jbHItcDctbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1wNy1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGV0dGVyLXNwYWNp''@;'; put 'put ''bmcpOy0tY2xyLXA4LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItcDgtZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemUpOy0tY2xyLXA4LWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10''@;'; put 'put ''eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdodCk7LS1jbHItcDgtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1wOC1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFs''@;'; put 'put ''bGNhcHRpb24tbGV0dGVyLXNwYWNpbmcpOy0tY2xyLWxpc3QtaXRlbS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApfS5jbHItYWxpZ24tYmFzZWxpbmV7dmVydGljYWwtYWxpZ246YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tdG9we3ZlcnRpY2FsLWFs''@;'; put 'put ''aWduOnRvcCFpbXBvcnRhbnR9LmNsci1hbGlnbi1taWRkbGV7dmVydGljYWwtYWxpZ246bWlkZGxlIWltcG9ydGFudH0uY2xyLWFsaWduLWJvdHRvbXt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fS5jbHItYWxpZ24tdGV4dC1ib3R0b217dmVydGljYWwtYWxpZ246dGV4dC1ib3R0''@;'; put 'put ''b20haW1wb3J0YW50fS5jbHItYWxpZ24tdGV4dC10b3B7dmVydGljYWwtYWxpZ246dGV4dC10b3AhaW1wb3J0YW50fS5jbHItY2xlYXJmaXg6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmNsci1kaXNwbGF5LWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50''@;'; put 'put ''fS5jbHItZGlzcGxheS1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5jbHItZGlzcGxheS1pbmxpbmV7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fS5jbHItZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93IWltcG9ydGFudH0uY2xyLWZsZXgtY29sdW1ue2Zs''@;'; put 'put ''ZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtY29sdW1uLXJldmVyc2V7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC13''@;'; put 'put ''cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAtcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRh''@;'; put 'put ''bnR9LmNsci1mbGV4LWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXNocmluay0we2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWp1c3RpZnktY29udGVudC1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVye2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFs''@;'; put 'put ''aWduLWl0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24t''@;'; put 'put ''aXRlbXMtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLWNvbnRlbnQtZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFp''@;'; put 'put ''bXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWFyb3VuZHthbGlnbi1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtYXV0b3thbGlnbi1zZWxmOmF1''@;'; put 'put ''dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRh''@;'; put 'put ''bnR9LmNsci1hbGlnbi1zZWxmLWJhc2VsaW5le2FsaWduLXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rp''@;'; put 'put ''b246cm93IWltcG9ydGFudH0uY2xyLWZsZXgtc20tY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXJvdy1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtc20tY29sdW1uLXJldmVyc2V7ZmxleC1k''@;'; put 'put ''aXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1zbS13cmFwe2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtc20tbm93cmFwe2ZsZXgtd3JhcDpub3dyYXAhaW1wb3J0YW50fS5jbHItZmxleC1zbS13cmFwLXJldmVyc2V7ZmxleC13cmFwOndyYXAt''@;'; put 'put ''cmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWZpbGx7ZmxleDoxIDEgYXV0byFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWdyb3ctMHtmbGV4LWdyb3c6MCFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLWdyb3ctMXtmbGV4LWdyb3c6MSFpbXBvcnRhbnR9LmNsci1mbGV4LXNtLXNocmluay0w''@;'; put 'put ''e2ZsZXgtc2hyaW5rOjAhaW1wb3J0YW50fS5jbHItZmxleC1zbS1zaHJpbmstMXtmbGV4LXNocmluazoxIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1zbS1zdGFydHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tZW5k''@;'; put 'put ''e2p1c3RpZnktY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4haW1w''@;'; put 'put ''b3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tZW5ke2FsaWdu''@;'; put 'put ''LWl0ZW1zOmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXNtLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtc20tc3Ry''@;'; put 'put ''ZXRjaHthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tc3RhcnR7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtc20tZW5ke2FsaWduLWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxp''@;'; put 'put ''Z24tY29udGVudC1zbS1jZW50ZXJ7YWxpZ24tY29udGVudDpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1zbS1iZXR3ZWVue2FsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLWFyb3VuZHthbGlnbi1jb250ZW50OnNw''@;'; put 'put ''YWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXNtLXN0cmV0Y2h7YWxpZ24tY29udGVudDpzdHJldGNoIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtc20tYXV0b3thbGlnbi1zZWxmOmF1dG8haW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1zdGFydHthbGlnbi1z''@;'; put 'put ''ZWxmOmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1lbmR7YWxpZ24tc2VsZjpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWNlbnRlcnthbGlnbi1zZWxmOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLXNtLWJhc2VsaW5le2FsaWdu''@;'; put 'put ''LXNlbGY6YmFzZWxpbmUhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1zbS1zdHJldGNoe2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LW1k''@;'; put 'put ''LWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxleC1tZC1yb3ctcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9y''@;'; put 'put ''dGFudH0uY2xyLWZsZXgtbWQtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LW1kLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgtbWQtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1t''@;'; put 'put ''ZC1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC1tZC1ncm93LTB7ZmxleC1ncm93OjAhaW1wb3J0YW50fS5jbHItZmxleC1tZC1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC1tZC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWZsZXgtbWQtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1w''@;'; put 'put ''b3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LW1kLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1t''@;'; put 'put ''ZC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1tZC1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1pdGVtcy1tZC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLW1kLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBv''@;'; put 'put ''cnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LW1kLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtY2VudGVye2FsaWduLWNv''@;'; put 'put ''bnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbnthbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1tZC1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxp''@;'; put 'put ''Z24tY29udGVudC1tZC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLW1kLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbWQtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLXNlbGYtbWQtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1tZC1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLXNlbGYtbWQtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1mbGV4LWxnLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3chaW1wb3J0YW50fS5jbHItZmxleC1sZy1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29sdW1u''@;'; put 'put ''IWltcG9ydGFudH0uY2xyLWZsZXgtbGctcm93LXJldmVyc2V7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC1sZy1jb2x1bW4tcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXdyYXB7ZmxleC13''@;'; put 'put ''cmFwOndyYXAhaW1wb3J0YW50fS5jbHItZmxleC1sZy1ub3dyYXB7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXdyYXAtcmV2ZXJzZXtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgtbGctZmlsbHtmbGV4OjEgMSBhdXRvIWltcG9ydGFu''@;'; put 'put ''dH0uY2xyLWZsZXgtbGctZ3Jvdy0we2ZsZXgtZ3JvdzowIWltcG9ydGFudH0uY2xyLWZsZXgtbGctZ3Jvdy0xe2ZsZXgtZ3JvdzoxIWltcG9ydGFudH0uY2xyLWZsZXgtbGctc2hyaW5rLTB7ZmxleC1zaHJpbms6MCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLXNocmluay0xe2ZsZXgtc2hyaW5r''@;'; put 'put ''OjEhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1sZy1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC1s''@;'; put 'put ''Zy1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFj''@;'; put 'put ''ZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbGctc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxpZ24taXRlbXMtbGctY2VudGVye2FsaWdu''@;'; put 'put ''LWl0ZW1zOmNlbnRlciFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy1sZy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1z''@;'; put 'put ''dGFydHthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC1sZy1lbmR7YWxpZ24tY29udGVudDpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LWxnLWNlbnRlcnthbGlnbi1jb250ZW50OmNlbnRlciFpbXBvcnRhbnR9LmNsci1h''@;'; put 'put ''bGlnbi1jb250ZW50LWxnLWJldHdlZW57YWxpZ24tY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctYXJvdW5ke2FsaWduLWNvbnRlbnQ6c3BhY2UtYXJvdW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQtbGctc3RyZXRjaHthbGlnbi1j''@;'; put 'put ''b250ZW50OnN0cmV0Y2ghaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi1sZy1hdXRve2FsaWduLXNlbGY6YXV0byFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLXN0YXJ0e2FsaWduLXNlbGY6ZmxleC1zdGFydCFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLWVuZHthbGlnbi1zZWxm''@;'; put 'put ''OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctY2VudGVye2FsaWduLXNlbGY6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYtbGctYmFzZWxpbmV7YWxpZ24tc2VsZjpiYXNlbGluZSFpbXBvcnRhbnR9LmNsci1hbGlnbi1zZWxmLWxnLXN0cmV0Y2h7YWxpZ24t''@;'; put 'put ''c2VsZjpzdHJldGNoIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY2xyLWZsZXgteGwtcm93e2ZsZXgtZGlyZWN0aW9uOnJvdyFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50fS5jbHItZmxleC14bC1yb3ct''@;'; put 'put ''cmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZSFpbXBvcnRhbnR9LmNsci1mbGV4LXhsLWNvbHVtbi1yZXZlcnNle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlIWltcG9ydGFudH0uY2xyLWZsZXgteGwtd3JhcHtmbGV4LXdyYXA6d3JhcCFpbXBvcnRhbnR9LmNsci1mbGV4''@;'; put 'put ''LXhsLW5vd3JhcHtmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudH0uY2xyLWZsZXgteGwtd3JhcC1yZXZlcnNle2ZsZXgtd3JhcDp3cmFwLXJldmVyc2UhaW1wb3J0YW50fS5jbHItZmxleC14bC1maWxse2ZsZXg6MSAxIGF1dG8haW1wb3J0YW50fS5jbHItZmxleC14bC1ncm93LTB7ZmxleC1n''@;'; put 'put ''cm93OjAhaW1wb3J0YW50fS5jbHItZmxleC14bC1ncm93LTF7ZmxleC1ncm93OjEhaW1wb3J0YW50fS5jbHItZmxleC14bC1zaHJpbmstMHtmbGV4LXNocmluazowIWltcG9ydGFudH0uY2xyLWZsZXgteGwtc2hyaW5rLTF7ZmxleC1zaHJpbms6MSFpbXBvcnRhbnR9LmNsci1qdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQteGwtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItanVzdGlmeS1jb250ZW50LXhsLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2Vu''@;'; put 'put ''dGVyIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIWltcG9ydGFudH0uY2xyLWp1c3RpZnktY29udGVudC14bC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZCFpbXBvcnRhbnR9LmNsci1hbGln''@;'; put 'put ''bi1pdGVtcy14bC1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZCFpbXBvcnRhbnR9LmNsci1hbGlnbi1pdGVtcy14bC1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyIWltcG9ydGFudH0uY2xy''@;'; put 'put ''LWFsaWduLWl0ZW1zLXhsLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLWl0ZW1zLXhsLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLXN0YXJ0e2FsaWduLWNvbnRlbnQ6ZmxleC1zdGFy''@;'; put 'put ''dCFpbXBvcnRhbnR9LmNsci1hbGlnbi1jb250ZW50LXhsLWVuZHthbGlnbi1jb250ZW50OmZsZXgtZW5kIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtY2VudGVye2FsaWduLWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uY2xyLWFsaWduLWNvbnRlbnQteGwtYmV0d2VlbnthbGln''@;'; put 'put ''bi1jb250ZW50OnNwYWNlLWJldHdlZW4haW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1hcm91bmR7YWxpZ24tY29udGVudDpzcGFjZS1hcm91bmQhaW1wb3J0YW50fS5jbHItYWxpZ24tY29udGVudC14bC1zdHJldGNoe2FsaWduLWNvbnRlbnQ6c3RyZXRjaCFpbXBvcnRhbnR9LmNs''@;'; put 'put ''ci1hbGlnbi1zZWxmLXhsLWF1dG97YWxpZ24tc2VsZjphdXRvIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0IWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmQhaW1wb3J0YW50fS5jbHItYWxp''@;'; put 'put ''Z24tc2VsZi14bC1jZW50ZXJ7YWxpZ24tc2VsZjpjZW50ZXIhaW1wb3J0YW50fS5jbHItYWxpZ24tc2VsZi14bC1iYXNlbGluZXthbGlnbi1zZWxmOmJhc2VsaW5lIWltcG9ydGFudH0uY2xyLWFsaWduLXNlbGYteGwtc3RyZXRjaHthbGlnbi1zZWxmOnN0cmV0Y2ghaW1wb3J0YW50fX0uY2xy''@;'; put 'put ''LWZsZXgteHMtZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4LXhzLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgteHMtdW5vcmRlcmVke29yZGVyOjB9LmNsci1mbGV4LWl0ZW1zLXhzLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14cy1taWRkbGV7YWxpZ24taXRlbXM6''@;'; put 'put ''Y2VudGVyfS5jbHItZmxleC1pdGVtcy14cy1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9LmNsci1mbGV4LXhzLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LXhzLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgteHMtYm90dG9te2FsaWduLXNlbGY6Zmxl''@;'; put 'put ''eC1lbmR9LmNsci1mbGV4LWl0ZW1zLXhzLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXhzLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVtcy14cy1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4''@;'; put 'put ''LWl0ZW1zLXhzLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy14cy1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtc20tZmlyc3R7b3JkZXI6LTF9LmNsci1mbGV4''@;'; put 'put ''LXNtLWxhc3R7b3JkZXI6MX0uY2xyLWZsZXgtc20tdW5vcmRlcmVke29yZGVyOjB9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWZsZXgtaXRlbXMtc20tdG9we2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXNtLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9''@;'; put 'put ''LmNsci1mbGV4LWl0ZW1zLXNtLWJvdHRvbXthbGlnbi1pdGVtczpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItZmxleC1zbS10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5jbHItZmxleC1zbS1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LXNtLWJv''@;'; put 'put ''dHRvbXthbGlnbi1zZWxmOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbGV4LWl0ZW1zLXNtLWxlZnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1mbGV4LWl0ZW1zLXNtLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5jbHItZmxleC1pdGVt''@;'; put 'put ''cy1zbS1yaWdodHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsci1mbGV4LWl0ZW1zLXNtLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jbHItZmxleC1pdGVtcy1zbS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufX1AbWVkaWEgKG1pbi13aWR0''@;'; put 'put ''aDo3NjhweCl7LmNsci1mbGV4LW1kLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC1tZC1sYXN0e29yZGVyOjF9LmNsci1mbGV4LW1kLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNsci1mbGV4LWl0ZW1zLW1kLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0''@;'; put 'put ''fS5jbHItZmxleC1pdGVtcy1tZC1taWRkbGV7YWxpZ24taXRlbXM6Y2VudGVyfS5jbHItZmxleC1pdGVtcy1tZC1ib3R0b217YWxpZ24taXRlbXM6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZsZXgtbWQtdG9we2FsaWduLXNlbGY6ZmxleC1zdGFydH0uY2xyLWZs''@;'; put 'put ''ZXgtbWQtbWlkZGxle2FsaWduLXNlbGY6Y2VudGVyfS5jbHItZmxleC1tZC1ib3R0b217YWxpZ24tc2VsZjpmbGV4LWVuZH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxleC1pdGVtcy1tZC1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy1t''@;'; put 'put ''ZC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbWQtcmlnaHR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy1tZC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMtbWQtYmV0d2Vlbntq''@;'; put 'put ''dXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItZmxleC1sZy1maXJzdHtvcmRlcjotMX0uY2xyLWZsZXgtbGctbGFzdHtvcmRlcjoxfS5jbHItZmxleC1sZy11bm9yZGVyZWR7b3JkZXI6MH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgp''@;'; put 'put ''ey5jbHItZmxleC1pdGVtcy1sZy10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtbGctbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMtbGctYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7''@;'; put 'put ''LmNsci1mbGV4LWxnLXRvcHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmNsci1mbGV4LWxnLW1pZGRsZXthbGlnbi1zZWxmOmNlbnRlcn0uY2xyLWZsZXgtbGctYm90dG9te2FsaWduLXNlbGY6ZmxleC1lbmR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsZXgtaXRlbXMtbGctbGVm''@;'; put 'put ''dHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMtbGctY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmNsci1mbGV4LWl0ZW1zLWxnLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uY2xyLWZsZXgtaXRlbXMtbGctYXJvdW5ke2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpzcGFjZS1hcm91bmR9LmNsci1mbGV4LWl0ZW1zLWxnLWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1mbGV4LXhsLWZpcnN0e29yZGVyOi0xfS5jbHItZmxleC14bC1sYXN0e29yZGVyOjF9LmNsci1mbGV4''@;'; put 'put ''LXhsLXVub3JkZXJlZHtvcmRlcjowfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC1pdGVtcy14bC10b3B7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uY2xyLWZsZXgtaXRlbXMteGwtbWlkZGxle2FsaWduLWl0ZW1zOmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteGwtYm90dG9t''@;'; put 'put ''e2FsaWduLWl0ZW1zOmZsZXgtZW5kfX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC14bC10b3B7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5jbHItZmxleC14bC1taWRkbGV7YWxpZ24tc2VsZjpjZW50ZXJ9LmNsci1mbGV4LXhsLWJvdHRvbXthbGlnbi1zZWxmOmZsZXgtZW5k''@;'; put 'put ''fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxleC1pdGVtcy14bC1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5jbHItZmxleC1pdGVtcy14bC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uY2xyLWZsZXgtaXRlbXMteGwtcmlnaHR7anVzdGlmeS1jb250''@;'; put 'put ''ZW50OmZsZXgtZW5kfS5jbHItZmxleC1pdGVtcy14bC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uY2xyLWZsZXgtaXRlbXMteGwtYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn19LmNsci1mbG9hdC14cy1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50''@;'; put 'put ''fS5jbHItZmxvYXQteHMtcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQteHMtbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1mbG9hdC1zbS1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5jbHItZmxvYXQtc20tcmln''@;'; put 'put ''aHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fS5jbHItZmxvYXQtc20tbm9uZXtmbG9hdDpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItZmxvYXQtbWQtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LW1kLXJpZ2h0e2Zsb2F0OnJpZ2h0IWlt''@;'; put 'put ''cG9ydGFudH0uY2xyLWZsb2F0LW1kLW5vbmV7ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY2xyLWZsb2F0LWxnLWxlZnR7ZmxvYXQ6bGVmdCFpbXBvcnRhbnR9LmNsci1mbG9hdC1sZy1yaWdodHtmbG9hdDpyaWdodCFpbXBvcnRhbnR9LmNsci1mbG9h''@;'; put 'put ''dC1sZy1ub25le2Zsb2F0Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItZmxvYXQteGwtbGVmdHtmbG9hdDpsZWZ0IWltcG9ydGFudH0uY2xyLWZsb2F0LXhsLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0uY2xyLWZsb2F0LXhsLW5vbmV7ZmxvYXQ6''@;'; put 'put ''bm9uZSFpbXBvcnRhbnR9fS5jbHItaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudH0uY2xyLWhpZGRlbi14cy11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjU3NS45OHB4KXsuY2xyLWhpZGRlbi14cy1kb3due2Rpc3BsYXk6bm9uZSFpbXBv''@;'; put 'put ''cnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWhpZGRlbi1zbS11cHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjcuOThweCl7LmNsci1oaWRkZW4tc20tZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo3''@;'; put 'put ''NjhweCl7LmNsci1oaWRkZW4tbWQtdXB7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtYXgtd2lkdGg6OTkxLjk4cHgpey5jbHItaGlkZGVuLW1kLWRvd257ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6OTkycHgpey5jbHItaGlkZGVuLWxnLXVwe2Rp''@;'; put 'put ''c3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjExOTkuOThweCl7LmNsci1oaWRkZW4tbGctZG93bntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jbHItaGlkZGVuLXhsLXVwe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5j''@;'; put 'put ''bHItaGlkZGVuLXhsLWRvd24sLmNsci12aXNpYmxlLXByaW50LWJsb2Nre2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIHByaW50ey5jbHItdmlzaWJsZS1wcmludC1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZXtkaXNwbGF5Om5v''@;'; put 'put ''bmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQtaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH19LmNsci12aXNpYmxlLXByaW50LWlubGluZS1ibG9ja3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsuY2xyLXZpc2libGUtcHJpbnQt''@;'; put 'put ''aW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH19QG1lZGlhIHByaW50ey5jbHItaGlkZGVuLXByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fS5jbHItcm93e2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tcmlnaHQ6LS42cmVtO21hcmdpbi1s''@;'; put 'put ''ZWZ0Oi0uNnJlbX0uY2xyLW5vLWd1dHRlcnN7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MH0uY2xyLW5vLWd1dHRlcnM+LmNsci1jb2wsLmNsci1uby1ndXR0ZXJzPltjbGFzcyo9Y2xyLWNvbC1de3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH0uY2xyLWNvbC14bCwuY2xyLWNv''@;'; put 'put ''bC14bC1hdXRvLC5jbHItY29sLXhsLTEyLC5jbHItY29sLXhsLTExLC5jbHItY29sLXhsLTEwLC5jbHItY29sLXhsLTksLmNsci1jb2wteGwtOCwuY2xyLWNvbC14bC03LC5jbHItY29sLXhsLTYsLmNsci1jb2wteGwtNSwuY2xyLWNvbC14bC00LC5jbHItY29sLXhsLTMsLmNsci1jb2wteGwt''@;'; put 'put ''MiwuY2xyLWNvbC14bC0xLC5jbHItY29sLWxnLC5jbHItY29sLWxnLWF1dG8sLmNsci1jb2wtbGctMTIsLmNsci1jb2wtbGctMTEsLmNsci1jb2wtbGctMTAsLmNsci1jb2wtbGctOSwuY2xyLWNvbC1sZy04LC5jbHItY29sLWxnLTcsLmNsci1jb2wtbGctNiwuY2xyLWNvbC1sZy01LC5jbHIt''@;'; put 'put ''Y29sLWxnLTQsLmNsci1jb2wtbGctMywuY2xyLWNvbC1sZy0yLC5jbHItY29sLWxnLTEsLmNsci1jb2wtbWQsLmNsci1jb2wtbWQtYXV0bywuY2xyLWNvbC1tZC0xMiwuY2xyLWNvbC1tZC0xMSwuY2xyLWNvbC1tZC0xMCwuY2xyLWNvbC1tZC05LC5jbHItY29sLW1kLTgsLmNsci1jb2wtbWQt''@;'; put 'put ''NywuY2xyLWNvbC1tZC02LC5jbHItY29sLW1kLTUsLmNsci1jb2wtbWQtNCwuY2xyLWNvbC1tZC0zLC5jbHItY29sLW1kLTIsLmNsci1jb2wtbWQtMSwuY2xyLWNvbC1zbSwuY2xyLWNvbC1zbS1hdXRvLC5jbHItY29sLXNtLTEyLC5jbHItY29sLXNtLTExLC5jbHItY29sLXNtLTEwLC5jbHIt''@;'; put 'put ''Y29sLXNtLTksLmNsci1jb2wtc20tOCwuY2xyLWNvbC1zbS03LC5jbHItY29sLXNtLTYsLmNsci1jb2wtc20tNSwuY2xyLWNvbC1zbS00LC5jbHItY29sLXNtLTMsLmNsci1jb2wtc20tMiwuY2xyLWNvbC1zbS0xLC5jbHItY29sLC5jbHItY29sLWF1dG8sLmNsci1jb2wtMTIsLmNsci1jb2wt''@;'; put 'put ''MTEsLmNsci1jb2wtMTAsLmNsci1jb2wtOSwuY2xyLWNvbC04LC5jbHItY29sLTcsLmNsci1jb2wtNiwuY2xyLWNvbC01LC5jbHItY29sLTQsLmNsci1jb2wtMywuY2xyLWNvbC0yLC5jbHItY29sLTF7d2lkdGg6MTAwJTttaW4taGVpZ2h0Oi4wNXJlbTtwYWRkaW5nLXJpZ2h0Oi42cmVtO3Bh''@;'; put 'put ''ZGRpbmctbGVmdDouNnJlbX0uY2xyLWNvbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtMXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4''@;'; put 'put ''LjMzMzMzMzMzMzMlfS5jbHItY29sLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtNHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMz''@;'; put 'put ''MzMzMyV9LmNsci1jb2wtNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0u''@;'; put 'put ''Y2xyLWNvbC04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29sLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNv''@;'; put 'put ''bC0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0uY2xyLW9yZGVyLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLTB7b3JkZXI6''@;'; put 'put ''MH0uY2xyLW9yZGVyLTF7b3JkZXI6MX0uY2xyLW9yZGVyLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLTN7b3JkZXI6M30uY2xyLW9yZGVyLTR7b3JkZXI6NH0uY2xyLW9yZGVyLTV7b3JkZXI6NX0uY2xyLW9yZGVyLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLTd7b3JkZXI6N30uY2xyLW9yZGVyLTh7b3Jk''@;'; put 'put ''ZXI6OH0uY2xyLW9yZGVyLTl7b3JkZXI6OX0uY2xyLW9yZGVyLTEwe29yZGVyOjEwfS5jbHItb3JkZXItMTF7b3JkZXI6MTF9LmNsci1vcmRlci0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42''@;'; put 'put ''NjY2NjY2NjY3JX0uY2xyLW9mZnNldC0ze21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNsci1vZmZzZXQt''@;'; put 'put ''N3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LTExe21hcmdpbi1s''@;'; put 'put ''ZWZ0OjkxLjY2NjY2NjY2NjclfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWNvbC1zbXtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LmNsci1jb2wtc20tYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOm5vbmV9LmNsci1jb2wtc20t''@;'; put 'put ''MXtmbGV4OjAgMCA4LjMzMzMzMzMzMzMlO21heC13aWR0aDo4LjMzMzMzMzMzMzMlfS5jbHItY29sLXNtLTJ7ZmxleDowIDAgMTYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjE2LjY2NjY2NjY2NjclfS5jbHItY29sLXNtLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNsci1jb2wtc20t''@;'; put 'put ''NHtmbGV4OjAgMCAzMy4zMzMzMzMzMzMzJTttYXgtd2lkdGg6MzMuMzMzMzMzMzMzMyV9LmNsci1jb2wtc20tNXtmbGV4OjAgMCA0MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6NDEuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY2xyLWNvbC1z''@;'; put 'put ''bS03e2ZsZXg6MCAwIDU4LjMzMzMzMzMzMzMlO21heC13aWR0aDo1OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1zbS04e2ZsZXg6MCAwIDY2LjY2NjY2NjY2NjclO21heC13aWR0aDo2Ni42NjY2NjY2NjY3JX0uY2xyLWNvbC1zbS05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jbHItY29s''@;'; put 'put ''LXNtLTEwe2ZsZXg6MCAwIDgzLjMzMzMzMzMzMzMlO21heC13aWR0aDo4My4zMzMzMzMzMzMzJX0uY2xyLWNvbC1zbS0xMXtmbGV4OjAgMCA5MS42NjY2NjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjY2NjY2NyV9LmNsci1jb2wtc20tMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0u''@;'; put 'put ''Y2xyLW9yZGVyLXNtLWZpcnN0e29yZGVyOi0xfS5jbHItb3JkZXItc20tbGFzdHtvcmRlcjoxM30uY2xyLW9yZGVyLXNtLTB7b3JkZXI6MH0uY2xyLW9yZGVyLXNtLTF7b3JkZXI6MX0uY2xyLW9yZGVyLXNtLTJ7b3JkZXI6Mn0uY2xyLW9yZGVyLXNtLTN7b3JkZXI6M30uY2xyLW9yZGVyLXNt''@;'; put 'put ''LTR7b3JkZXI6NH0uY2xyLW9yZGVyLXNtLTV7b3JkZXI6NX0uY2xyLW9yZGVyLXNtLTZ7b3JkZXI6Nn0uY2xyLW9yZGVyLXNtLTd7b3JkZXI6N30uY2xyLW9yZGVyLXNtLTh7b3JkZXI6OH0uY2xyLW9yZGVyLXNtLTl7b3JkZXI6OX0uY2xyLW9yZGVyLXNtLTEwe29yZGVyOjEwfS5jbHItb3Jk''@;'; put 'put ''ZXItc20tMTF7b3JkZXI6MTF9LmNsci1vcmRlci1zbS0xMntvcmRlcjoxMn0uY2xyLW9mZnNldC1zbS0we21hcmdpbi1sZWZ0OjB9LmNsci1vZmZzZXQtc20tMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXNtLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NyV9LmNs''@;'; put 'put ''ci1vZmZzZXQtc20tM3ttYXJnaW4tbGVmdDoyNSV9LmNsci1vZmZzZXQtc20tNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1zbS01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXNtLTZ7bWFyZ2luLWxlZnQ6NTAlfS5jbHItb2Zmc2V0LXNt''@;'; put 'put ''LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtc20tOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1zbS05e21hcmdpbi1sZWZ0Ojc1JX0uY2xyLW9mZnNldC1zbS0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1z''@;'; put 'put ''bS0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NjY3JX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jbHItY29sLW1ke2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0uY2xyLWNvbC1tZC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6bm9u''@;'; put 'put ''ZX0uY2xyLWNvbC1tZC0xe2ZsZXg6MCAwIDguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjguMzMzMzMzMzMzMyV9LmNsci1jb2wtbWQtMntmbGV4OjAgMCAxNi42NjY2NjY2NjY3JTttYXgtd2lkdGg6MTYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbWQtM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1''@;'; put 'put ''JX0uY2xyLWNvbC1tZC00e2ZsZXg6MCAwIDMzLjMzMzMzMzMzMzMlO21heC13aWR0aDozMy4zMzMzMzMzMzMzJX0uY2xyLWNvbC1tZC01e2ZsZXg6MCAwIDQxLjY2NjY2NjY2NjclO21heC13aWR0aDo0MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6''@;'; put 'put ''NTAlfS5jbHItY29sLW1kLTd7ZmxleDowIDAgNTguMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjU4LjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTh7ZmxleDowIDAgNjYuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY2NjY2NjclfS5jbHItY29sLW1kLTl7ZmxleDowIDAgNzUlO21heC13aWR0''@;'; put 'put ''aDo3NSV9LmNsci1jb2wtbWQtMTB7ZmxleDowIDAgODMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzMzMzMzMlfS5jbHItY29sLW1kLTExe2ZsZXg6MCAwIDkxLjY2NjY2NjY2NjclO21heC13aWR0aDo5MS42NjY2NjY2NjY3JX0uY2xyLWNvbC1tZC0xMntmbGV4OjAgMCAxMDAlO21h''@;'; put 'put ''eC13aWR0aDoxMDAlfS5jbHItb3JkZXItbWQtZmlyc3R7b3JkZXI6LTF9LmNsci1vcmRlci1tZC1sYXN0e29yZGVyOjEzfS5jbHItb3JkZXItbWQtMHtvcmRlcjowfS5jbHItb3JkZXItbWQtMXtvcmRlcjoxfS5jbHItb3JkZXItbWQtMntvcmRlcjoyfS5jbHItb3JkZXItbWQtM3tvcmRlcjoz''@;'; put 'put ''fS5jbHItb3JkZXItbWQtNHtvcmRlcjo0fS5jbHItb3JkZXItbWQtNXtvcmRlcjo1fS5jbHItb3JkZXItbWQtNntvcmRlcjo2fS5jbHItb3JkZXItbWQtN3tvcmRlcjo3fS5jbHItb3JkZXItbWQtOHtvcmRlcjo4fS5jbHItb3JkZXItbWQtOXtvcmRlcjo5fS5jbHItb3JkZXItbWQtMTB7b3Jk''@;'; put 'put ''ZXI6MTB9LmNsci1vcmRlci1tZC0xMXtvcmRlcjoxMX0uY2xyLW9yZGVyLW1kLTEye29yZGVyOjEyfS5jbHItb2Zmc2V0LW1kLTB7bWFyZ2luLWxlZnQ6MH0uY2xyLW9mZnNldC1tZC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42''@;'; put 'put ''NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0uY2xyLW9mZnNldC1tZC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LW1kLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbWQtNnttYXJnaW4tbGVmdDo1MCV9''@;'; put 'put ''LmNsci1vZmZzZXQtbWQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1tZC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LW1kLTl7bWFyZ2luLWxlZnQ6NzUlfS5jbHItb2Zmc2V0LW1kLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMl''@;'; put 'put ''fS5jbHItb2Zmc2V0LW1kLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjclfX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCl7LmNsci1jb2wtbGd7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLWxnLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRv''@;'; put 'put ''O21heC13aWR0aDpub25lfS5jbHItY29sLWxnLTF7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC1sZy0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC1sZy0ze2ZsZXg6MCAwIDI1''@;'; put 'put ''JTttYXgtd2lkdGg6MjUlfS5jbHItY29sLWxnLTR7ZmxleDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLWxnLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTZ7ZmxleDowIDAg''@;'; put 'put ''NTAlO21heC13aWR0aDo1MCV9LmNsci1jb2wtbGctN3tmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1jb2wtbGctOXtmbGV4OjAg''@;'; put 'put ''MCA3NSU7bWF4LXdpZHRoOjc1JX0uY2xyLWNvbC1sZy0xMHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wtbGctMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5jbHItY29sLWxnLTEye2Zs''@;'; put 'put ''ZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LmNsci1vcmRlci1sZy1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLWxnLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci1sZy0we29yZGVyOjB9LmNsci1vcmRlci1sZy0xe29yZGVyOjF9LmNsci1vcmRlci1sZy0ye29yZGVyOjJ9LmNsci1vcmRl''@;'; put 'put ''ci1sZy0ze29yZGVyOjN9LmNsci1vcmRlci1sZy00e29yZGVyOjR9LmNsci1vcmRlci1sZy01e29yZGVyOjV9LmNsci1vcmRlci1sZy02e29yZGVyOjZ9LmNsci1vcmRlci1sZy03e29yZGVyOjd9LmNsci1vcmRlci1sZy04e29yZGVyOjh9LmNsci1vcmRlci1sZy05e29yZGVyOjl9LmNsci1v''@;'; put 'put ''cmRlci1sZy0xMHtvcmRlcjoxMH0uY2xyLW9yZGVyLWxnLTExe29yZGVyOjExfS5jbHItb3JkZXItbGctMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQtbGctMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LWxnLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xyLW9mZnNldC1sZy0ye21h''@;'; put 'put ''cmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LWxnLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xyLW9mZnNldC1sZy02e21h''@;'; put 'put ''cmdpbi1sZWZ0OjUwJX0uY2xyLW9mZnNldC1sZy03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LWxnLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQtbGctOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQtbGctMTB7bWFyZ2luLWxlZnQ6''@;'; put 'put ''ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQtbGctMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmNsci1jb2wteGx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5jbHItY29sLXhsLWF1dG97ZmxleDowIDAg''@;'; put 'put ''YXV0bzt3aWR0aDphdXRvO21heC13aWR0aDpub25lfS5jbHItY29sLXhsLTF7ZmxleDowIDAgOC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6OC4zMzMzMzMzMzMzJX0uY2xyLWNvbC14bC0ye2ZsZXg6MCAwIDE2LjY2NjY2NjY2NjclO21heC13aWR0aDoxNi42NjY2NjY2NjY3JX0uY2xyLWNvbC14''@;'; put 'put ''bC0ze2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jbHItY29sLXhsLTR7ZmxleDowIDAgMzMuMzMzMzMzMzMzMyU7bWF4LXdpZHRoOjMzLjMzMzMzMzMzMzMlfS5jbHItY29sLXhsLTV7ZmxleDowIDAgNDEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjQxLjY2NjY2NjY2NjclfS5jbHItY29s''@;'; put 'put ''LXhsLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNsci1jb2wteGwtN3tmbGV4OjAgMCA1OC4zMzMzMzMzMzMzJTttYXgtd2lkdGg6NTguMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtOHtmbGV4OjAgMCA2Ni42NjY2NjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjY2NjY2NyV9LmNsci1j''@;'; put 'put ''b2wteGwtOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY2xyLWNvbC14bC0xMHtmbGV4OjAgMCA4My4zMzMzMzMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMzMzMzMyV9LmNsci1jb2wteGwtMTF7ZmxleDowIDAgOTEuNjY2NjY2NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY2NjY2NjclfS5j''@;'; put 'put ''bHItY29sLXhsLTEye2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LmNsci1vcmRlci14bC1maXJzdHtvcmRlcjotMX0uY2xyLW9yZGVyLXhsLWxhc3R7b3JkZXI6MTN9LmNsci1vcmRlci14bC0we29yZGVyOjB9LmNsci1vcmRlci14bC0xe29yZGVyOjF9LmNsci1vcmRlci14bC0ye29y''@;'; put 'put ''ZGVyOjJ9LmNsci1vcmRlci14bC0ze29yZGVyOjN9LmNsci1vcmRlci14bC00e29yZGVyOjR9LmNsci1vcmRlci14bC01e29yZGVyOjV9LmNsci1vcmRlci14bC02e29yZGVyOjZ9LmNsci1vcmRlci14bC03e29yZGVyOjd9LmNsci1vcmRlci14bC04e29yZGVyOjh9LmNsci1vcmRlci14bC05''@;'; put 'put ''e29yZGVyOjl9LmNsci1vcmRlci14bC0xMHtvcmRlcjoxMH0uY2xyLW9yZGVyLXhsLTExe29yZGVyOjExfS5jbHItb3JkZXIteGwtMTJ7b3JkZXI6MTJ9LmNsci1vZmZzZXQteGwtMHttYXJnaW4tbGVmdDowfS5jbHItb2Zmc2V0LXhsLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzJX0uY2xy''@;'; put 'put ''LW9mZnNldC14bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY2NjclfS5jbHItb2Zmc2V0LXhsLTN7bWFyZ2luLWxlZnQ6MjUlfS5jbHItb2Zmc2V0LXhsLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY3JX0uY2xy''@;'; put 'put ''LW9mZnNldC14bC02e21hcmdpbi1sZWZ0OjUwJX0uY2xyLW9mZnNldC14bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMlfS5jbHItb2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjY2NyV9LmNsci1vZmZzZXQteGwtOXttYXJnaW4tbGVmdDo3NSV9LmNsci1vZmZzZXQteGwt''@;'; put 'put ''MTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMzMzMzMyV9LmNsci1vZmZzZXQteGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NyV9fS5jbHItYnJlYWstcm93e3dpZHRoOjEwMCV9Kiw6YmVmb3JlLDphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3h9dWwubGlzdC11bnN0eWxlZDpub3QoW2Nk''@;'; put 'put ''cy1saXN0XSl7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlLXBvc2l0aW9uOm91dHNpZGV9dWwubGlzdC11bnN0eWxlZDpub3QoW2Nkcy1saXN0XSkgbGk6Om1hcmtlcntjb2xvcjp0cmFuc3BhcmVudH1saXtjb2xvcjp2YXIoLS1jbHItbGlzdC1pdGVtLWNvbG9yKTtm''@;'; put 'put ''b250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQp''@;'; put 'put ''O2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfXVsOm5vdChbY2RzLWxpc3RdKSxvbDpub3QoW2Nkcy1saXN0XSl7bGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7bWFyZ2luLWxlZnQ6MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJv''@;'; put 'put ''dHRvbTowO3BhZGRpbmctbGVmdDowfXVsLmxpc3Q6bm90KFtjZHMtbGlzdF0pLG9sLmxpc3Q6bm90KFtjZHMtbGlzdF0pe2xpc3Qtc3R5bGUtcG9zaXRpb246b3V0c2lkZTttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfXVsLmxpc3Q6bm90KFtjZHMtbGlzdF0pLmNvbXBh''@;'; put 'put ''Y3Q+bGksb2wubGlzdDpub3QoW2Nkcy1saXN0XSkuY29tcGFjdD5saXttYXJnaW4tYm90dG9tOjB9dWw6bm90KC5saXN0LXVuc3R5bGVkKTpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxlZCxvbDpub3QoW2Nkcy1saXN0XSk+bGk+dWwubGlzdC11bnN0eWxlZHttYXJnaW4tbGVm''@;'; put 'put ''dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfWxpPnVsOm5vdChbY2RzLWxpc3RdKXttYXJnaW4tdG9wOjA7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX11bC5saXN0LWdyb3VwOm5vdChbY2RzLWxpc3RdKXttYXJnaW4tdG9wOjB9dWw6bm90KFtjZHMtbGlzdF0pLmxp''@;'; put 'put ''c3Qtc3BhY2VyLG9sOm5vdChbY2RzLWxpc3RdKS5saXN0LXNwYWNlcnttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9cHJle21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpIDB9cHJle2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0x''@;'; put 'put ''MDApIHNvbGlkIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKX1wcmUgY29kZXt3aGl0ZS1zcGFjZTpwcmV9Y29kZS5jbHItY29kZXtjb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtdXRpbGl0eS1yZWQpO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOjAgMH1oMTpub3QoW2Nkcy10ZXh0XSl7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTp2YXIoLS1jbHItaDEtZm9udC1mYW1pbHkpO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1oMS1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1oMS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oMS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWgxLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItaDEtbGV0dGVyLXNw''@;'; put 'put ''YWNpbmcpfWgyOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oMi1mb250LWZhbWlseSk7Y29sb3I6dmFyKC0tY2xyLWgyLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xyLWgy''@;'; put 'put ''LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWgyLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItaDItbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1oMi1sZXR0ZXItc3BhY2luZyl9aDM6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFy''@;'; put 'put ''KC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWgzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItaDMtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItaDMtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItaDMtZm9u''@;'; put 'put ''dC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1oMy1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLWgzLWxldHRlci1zcGFjaW5nKX1oNDpub3QoW2Nkcy10ZXh0XSl7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdpbi1ib3R0b206MDtm''@;'; put 'put ''b250LWZhbWlseTp2YXIoLS1jbHItaDQtZm9udC1mYW1pbHkpO2NvbG9yOnZhcigtLWNsci1oNC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNsci1oNC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1oNC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLWg0LWxpbmUt''@;'; put 'put ''aGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jbHItaDQtbGV0dGVyLXNwYWNpbmcpfWg1Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oNS1mb250LWZhbWlseSk7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWg1LWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xyLWg1LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWg1LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItaDUtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1oNS1sZXR0''@;'; put 'put ''ZXItc3BhY2luZyl9aDY6bm90KFtjZHMtdGV4dF0pe21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6dmFyKC0tY2xyLWg2LWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItaDYtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1j''@;'; put 'put ''bHItaDYtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItaDYtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1oNi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLWg2LWxldHRlci1zcGFjaW5nKX1ib2R5Om5vdChbY2RzLXRleHRdKXttYXJnaW4t''@;'; put 'put ''dG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MDtmb250LWZhbWlseTp2YXIoLS1jbHItZm9udCk7Y29sb3I6dmFyKC0tY2xyLXAxLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xyLXAxLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXAxLWZvbnQtd2VpZ2h0KTtsaW5lLWhl''@;'; put 'put ''aWdodDp2YXIoLS1jbHItcDEtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1wMS1sZXR0ZXItc3BhY2luZyl9Ym9keSBwOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDEtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDEtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDEtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wMS1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXAxLWxldHRlci1zcGFjaW5nKX1ib2R5IC5wMDpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnAwOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDAtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDAtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDAtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wMC1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXAwLWxldHRlci1zcGFjaW5nKX1ib2R5IC5wMjpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnAyOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDItY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDItZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDItZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wMi1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXAyLWxldHRlci1zcGFjaW5nKX1ib2R5IC5wMzpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnAzOm5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDMtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDMtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDMtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wMy1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXAzLWxldHRlci1zcGFjaW5nKX1ib2R5IC5wNDpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA0Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDQtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDQtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wNC1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXA0LWxldHRlci1zcGFjaW5nKX1ib2R5IC5wNTpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA1Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDUtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDUtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDUtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wNS1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXA1LWxldHRlci1zcGFjaW5nKX1ib2R5IC5wNjpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA2Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDYtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDYtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDYtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wNi1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXA2LWxldHRlci1zcGFjaW5nKX1ib2R5IC5wNzpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA3Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDctY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDctZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDctZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wNy1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXA3LWxldHRlci1zcGFjaW5nKX1ib2R5IC5wODpub3QoW2Nkcy10ZXh0XSksYm9keSBwLnA4Om5vdChbY2RzLXRleHRdKXttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowO2ZvbnQtZmFtaWx5OnZh''@;'; put 'put ''cigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS1jbHItcDgtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jbHItcDgtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItcDgtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1wOC1saW5lLWhlaWdo''@;'; put 'put ''dCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXA4LWxldHRlci1zcGFjaW5nKX0udGV4dC1saWdodHtmb250LXdlaWdodDp2YXIoLS1jbHItZm9udC13ZWlnaHQtbGlnaHQpfS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNl''@;'; put 'put ''bnRlciFpbXBvcnRhbnR9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS50ZXh0LWp1c3RpZnl7dGV4dC1hbGlnbjpqdXN0aWZ5IWltcG9ydGFudH1odG1sOm5vdChbY2RzLXRleHRdKXtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00NTApO2ZvbnQt''@;'; put 'put ''ZmFtaWx5OnZhcigtLWNsci1tZXRyb3BvbGlzLWZvbnQtZmFtaWx5KTtmb250LXNpemU6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpLzE2KjEwMCUpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWxpbmstYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29s''@;'; put 'put ''b3IpOy0tY2xyLWxpbmstY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvcik7LS1jbHItbGluay1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhvdmVyKTstLWNsci1saW5rLXZpc2l0ZWQtY29sb3I6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkKTstLWNsci1saW5rLXZpc2l0ZWQtY29sb3ItaG92ZXI6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkLWhvdmVyKX1odG1se2JveC1zaXppbmc6Ym9yZGVyLWJveH0qLDpiZWZvcmUsOmFmdGVye2Jv''@;'; put 'put ''eC1zaXppbmc6aW5oZXJpdH1odG1sey1tcy1vdmVyZmxvdy1zdHlsZTpzY3JvbGxiYXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9W3JvbGU9YnV0dG9uXXtjdXJzb3I6cG9pbnRlcn1hLGFyZWEsYnV0dG9uLFtyb2xl''@;'; put 'put ''PWJ1dHRvbl0saW5wdXQsbGFiZWwsc2VsZWN0LHN1bW1hcnksdGV4dGFyZWF7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbn1pbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2JvcmRlci1yYWRpdXM6MH1pbnB1dFt0eXBlPXJhZGlvXTpkaXNhYmxlZCxpbnB1dFt0eXBlPWNoZWNrYm94XTpk''@;'; put 'put ''aXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9aW5wdXRbdHlwZT1kYXRlXSxpbnB1dFt0eXBlPXRpbWVdLGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLGlucHV0W3R5cGU9bW9udGhdey13ZWJraXQtYXBwZWFyYW5jZTpsaXN0Ym94fXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1maWVsZHNl''@;'; put 'put ''dHttaW4td2lkdGg6MDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjB9bGVnZW5ke2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6aW5oZXJpdH1pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9W2hpZGRlbl17ZGlzcGxheTpu''@;'; put 'put ''b25lIWltcG9ydGFudH1kbHttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDoxcmVtfXRhYmxle2JvcmRlci1zcGFjaW5nOjB9YTpsaW5re2NvbG9yOnZhcigtLWNsci1saW5rLWNvbG9yKX1hOnZpc2l0ZWR7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvcil9YTp2aXNpdGVkOmhv''@;'; put 'put ''dmVye2NvbG9yOnZhcigtLWNsci1saW5rLXZpc2l0ZWQtY29sb3ItaG92ZXIpfWE6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IpfWE6YWN0aXZle2NvbG9yOnZhcigtLWNsci1saW5rLWFjdGl2ZS1jb2xvcil9LmNsci1zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO2Ns''@;'; put 'put ''aXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uYWxlcnQtaWNvbiwuY2xyLWljb257ZGlzcGxheTpp''@;'; put 'put ''bmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtwYWRkaW5nOjA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYWxl''@;'; put 'put ''cnQtaWNvbi5jbHItaWNvbi13YXJuaW5nLC5hbGVydC1pY29uLmljb24td2FybmluZywuY2xyLWljb24uY2xyLWljb24td2FybmluZywuY2xyLWljb24uaWNvbi13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVy''@;'; put 'put ''c2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjI1JTIwNSUyMDI2JTIwMjYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5r''@;'; put 'put ''JTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlM0NkZWZzJTNFJTNDc3R5bGUlMjB0eXBlJTNEJTIydGV4dCUyRmNzcyUyMiUzRSUwQSUwOS5jbHItaS1vdXRsaW5lJTdCZmlsbC1ydWxlJTNBZXZlbm9kZCUzQmNsaXAtcnVsZSUzQWV2ZW5vZGQlM0Jm''@;'; put 'put ''aWxsJTNBJTIzNzQ3NDc0JTNCJTdEJTNDJTJGc3R5bGUlM0UlM0MlMkZkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDdGl0bGUlM0VleGNsYW1hdGlvbi10cmlhbmdsZS1saW5lJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTE4JTJDMjEuMzJhMS4zJTJDMS4zJTJDMCUyQzAlMkMwJTJDMS4zLTEuM1YxNGExLjMlMkMxLjMlMkMw''@;'; put 'put ''JTJDMSUyQzAtMi42JTJDMHY2QTEuMyUyQzEuMyUyQzAlMkMwJTJDMCUyQzE4JTJDMjEuMzJaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQ2NpcmNsZSUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0yJTIyJTIwY3glM0QlMjIxNy45NSUyMiUyMGN5JTNEJTIy''@;'; put 'put ''MjQuMjclMjIlMjByJTNEJTIyMS41JTIyJTNFJTNDJTJGY2lyY2xlJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0zJTIyJTIwZCUzRCUyMk0zMC4zMyUyQzI1LjU0JTJDMjAuNTklMkM3LjZhMyUyQzMlMkMwJTJDMCUyQzAtNS4yNyUy''@;'; put 'put ''QzBMNS41NyUyQzI1LjU0QTMlMkMzJTJDMCUyQzAlMkMwJTJDOC4yMSUyQzMwSDI3LjY5YTMlMkMzJTJDMCUyQzAlMkMwJTJDMi42NC00LjQzWm0tMS43OCUyQzEuOTRhMSUyQzElMkMwJTJDMCUyQzEtLjg2LjQ5SDguMjFhMSUyQzElMkMwJTJDMCUyQzEtLjg4LTEuNDhMMTcuMDclMkM4LjU1''@;'; put 'put ''YTElMkMxJTJDMCUyQzAlMkMxJTJDMS43NiUyQzBsOS43NCUyQzE3Ljk0QTElMkMxJTJDMCUyQzAlMkMxJTJDMjguNTUlMkMyNy40OFolMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGc3ZnJTNFKX0uYWxlcnQtaWNvbi5jbHIt''@;'; put 'put ''aWNvbi13YXJuaW5nLXdoaXRlLC5jbHItaWNvbi5jbHItaWNvbi13YXJuaW5nLXdoaXRle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB2aWV3Qm94JTNEJTIyNSUyMDUlMjAyNiUyMDI2''@;'; put 'put ''JTIyJTIwcHJlc2VydmVBc3BlY3RSYXRpbyUzRCUyMnhNaWRZTWlkJTIwbWVldCUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIweG1sbnMlM0F4bGluayUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTIy''@;'; put 'put ''JTNFJTNDZGVmcyUzRSUzQ3N0eWxlJTIwdHlwZSUzRCUyMnRleHQlMkZjc3MlMjIlM0UlMEElMDkuY2xyLWktb3V0bGluZSU3QmZpbGwtcnVsZSUzQWV2ZW5vZGQlM0JjbGlwLXJ1bGUlM0FldmVub2RkJTNCZmlsbCUzQWhzbCgxOTgsIDAlLCAxMDAlKSUzQiU3RCUzQyUyRnN0eWxlJTNFJTND''@;'; put 'put ''JTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFZXhjbGFtYXRpb24tdHJpYW5nbGUtbGluZSUzQyUyRnRpdGxlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cGF0aCUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xOCUyQzIxLjMyYTEuMyUyQzEuMyUyQzAlMkMwJTJDMCUyQzEuMy0xLjNWMTRhMS4zJTJDMS4zJTJDMCUyQzElMkMwLTIuNiUyQzB2NkExLjMlMkMxLjMlMkMwJTJDMCUy''@;'; put 'put ''QzAlMkMxOCUyQzIxLjMyWiUyMiUzRSUzQyUyRnBhdGglM0UlM0NjaXJjbGUlMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMiUyMiUyMGN4JTNEJTIyMTcuOTUlMjIlMjBjeSUzRCUyMjI0LjI3JTIyJTIwciUzRCUyMjEuNSUyMiUzRSUzQyUyRmNpcmNs''@;'; put 'put ''ZSUzRSUzQ3BhdGglMjBjbGFzcyUzRCUyMmNsci1pLW91dGxpbmUlMjBjbHItaS1vdXRsaW5lLXBhdGgtMyUyMiUyMGQlM0QlMjJNMzAuMzMlMkMyNS41NCUyQzIwLjU5JTJDNy42YTMlMkMzJTJDMCUyQzAlMkMwLTUuMjclMkMwTDUuNTclMkMyNS41NEEzJTJDMyUyQzAlMkMwJTJDMCUyQzgu''@;'; put 'put ''MjElMkMzMEgyNy42OWEzJTJDMyUyQzAlMkMwJTJDMCUyQzIuNjQtNC40M1ptLTEuNzglMkMxLjk0YTElMkMxJTJDMCUyQzAlMkMxLS44Ni40OUg4LjIxYTElMkMxJTJDMCUyQzAlMkMxLS44OC0xLjQ4TDE3LjA3JTJDOC41NWExJTJDMSUyQzAlMkMwJTJDMSUyQzEuNzYlMkMwbDkuNzQlMkMx''@;'; put 'put ''Ny45NEExJTJDMSUyQzAlMkMwJTJDMSUyQzI4LjU1JTJDMjcuNDhaJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnN2ZyUzRSIpfS5hbGVydC1pY29uLmNsci12bXctbG9nbywuY2xyLWljb24uY2xyLXZtdy1sb2dve2JhY2tn''@;'; put 'put ''cm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMzYlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIl''@;'; put 'put ''MjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRXZtJTIwYnVnJTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUzQ2clMjBpZCUzRCUyMkhlYWRlcnMlMjIlMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUy''@;'; put 'put ''MkNMLUhlYWRlcnMtU3BlY3MlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoLTI2Mi4wMDAwMDAlMkMlMjAtMTc1LjAwMDAwMCklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjIwMSUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5z''@;'; put 'put ''bGF0ZSgyMzguMDAwMDAwJTJDJTIwMTYzLjAwMDAwMCklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NnJTIwaWQlM0QlMjJ2bS1idWclMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUoMjQuNzAzMTI1JTJDJTIwMTIuMDAwMDAw''@;'; put 'put ''KSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBpZCUzRCUyMlJlY3RhbmdsZS00MiUyMiUyMGZpbGwtb3BhY2l0eSUzRCUyMjAuMjUlMjIlMjBmaWxsJTNEJTIyJTIzREREREREJTIyJTIwb3BhY2l0''@;'; put 'put ''eSUzRCUyMjAuNiUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjAlMjIlMjB3aWR0aCUzRCUyMjM2JTIyJTIwaGVpZ2h0JTNEJTIyMzYlMjIlMjByeCUzRCUyMjMlMjIlM0UlM0MlMkZyZWN0JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNNy42Mzk0ODM3NiUyQzEzLjg3NjI0MDIlMjBDNy4zMjI2NTMyNCUyQzEzLjIwOTcwODIlMjA2LjUzOTc4MTUyJTJDMTIuOTA4NTEzOSUyMDUuODA5MjMwNDIlMkMxMy4yMTk5MzQlMjBDNS4wNzc3MTA0MyUyQzEzLjUzMjI4MzclMjA0LjgwOTMy''@;'; put 'put ''NDk1JTJDMTQuMzEwMzY5MSUyMDUuMTM5NzIwMDclMkMxNC45NzY5MDExJTIwTDguMjA3MjU5NTQlMkMyMS4zNzQ0OTIzJTIwQzguNjg5NzcyMDclMkMyMi4zNzg0NzM1JTIwOS4xOTg0NDQ5MSUyQzIyLjkwMzcwNDQlMjAxMC4xNTI4MTIxJTJDMjIuOTAzNzA0NCUyMEMxMS4xNzIwOTU1JTJD''@;'; put 'put ''MjIuOTAzNzA0NCUyMDExLjYxNjgyMDklMkMyMi4zMzEwNjMzJTIwMTIuMDk4MzY0NiUyQzIxLjM3NDQ5MjMlMjBDMTIuMDk4MzY0NiUyQzIxLjM3NDQ5MjMlMjAxNC43NzQ0NjgyJTJDMTUuNzg0NzM0MSUyMDE0LjgwMTU5NzQlMkMxNS43MjYxNjg1JTIwQzE0LjgyODcyNjYlMkMxNS42NjY2''@;'; put 'put ''NzMzJTIwMTQuOTE0OTU4OCUyQzE1LjQ4NjMyODYlMjAxNS4xODcyMTk5JTJDMTUuNDg3MjU4MiUyMEMxNS40MTc4MTgyJTJDMTUuNDkwMDQ3JTIwMTUuNjEwNjI5NCUyQzE1LjY2NTc0MzclMjAxNS42MTA2Mjk0JTJDMTUuOTAxODY1MiUyMEwxNS42MTA2Mjk0JTJDMjEuMzY5ODQ0MyUyMEMx''@;'; put 'put ''NS42MTA2Mjk0JTJDMjIuMjEyMDczJTIwMTYuMDk3OTg2NSUyQzIyLjkwMzcwNDQlMjAxNy4wMzQ5MTM0JTJDMjIuOTAzNzA0NCUyMEMxNy45NzE4NDAzJTJDMjIuOTAzNzA0NCUyMDE4LjQ3ODU3NTQlMkMyMi4yMTIwNzMlMjAxOC40Nzg1NzU0JTJDMjEuMzY5ODQ0MyUyMEwxOC40Nzg1NzU0''@;'; put 'put ''JTJDMTYuODk2NTUwMyUyMEMxOC40Nzg1NzU0JTJDMTYuMDMzODcwMiUyMDE5LjEyMTkyNTQlMkMxNS40NzQyNDM2JTIwMjAuMDAwNzE4MyUyQzE1LjQ3NDI0MzYlMjBDMjAuODc4NTQyMyUyQzE1LjQ3NDI0MzYlMjAyMS40NjM3NTgzJTJDMTYuMDUyNDYyNCUyMDIxLjQ2Mzc1ODMlMkMxNi44''@;'; put 'put ''OTY1NTAzJTIwTDIxLjQ2Mzc1ODMlMkMyMS4zNjk4NDQzJTIwQzIxLjQ2Mzc1ODMlMkMyMi4yMTIwNzMlMjAyMS45NTIwODQyJTJDMjIuOTAzNzA0NCUyMDIyLjg4ODA0MjMlMkMyMi45MDM3MDQ0JTIwQzIzLjgyNDAwMDMlMkMyMi45MDM3MDQ0JTIwMjQuMzMyNjczMSUyQzIyLjIxMjA3MyUy''@;'; put 'put ''MDI0LjMzMjY3MzElMkMyMS4zNjk4NDQzJTIwTDI0LjMzMjY3MzElMkMxNi44OTY1NTAzJTIwQzI0LjMzMjY3MzElMkMxNi4wMzM4NzAyJTIwMjQuOTc1MDU0MyUyQzE1LjQ3NDI0MzYlMjAyNS44NTM4NDcyJTJDMTUuNDc0MjQzNiUyMEMyNi43MzA3MDIzJTJDMTUuNDc0MjQzNiUyMDI3LjMx''@;'; put 'put ''Njg4NzElMkMxNi4wNTI0NjI0JTIwMjcuMzE2ODg3MSUyQzE2Ljg5NjU1MDMlMjBMMjcuMzE2ODg3MSUyQzIxLjM2OTg0NDMlMjBDMjcuMzE2ODg3MSUyQzIyLjIxMjA3MyUyMDI3LjgwNTIxMzElMkMyMi45MDM3MDQ0JTIwMjguNzQyMTQlMkMyMi45MDM3MDQ0JTIwQzI5LjY3NzEyOTElMkMy''@;'; put 'put ''Mi45MDM3MDQ0JTIwMzAuMTg0ODMzMSUyQzIyLjIxMjA3MyUyMDMwLjE4NDgzMzElMkMyMS4zNjk4NDQzJTIwTDMwLjE4NDgzMzElMkMxNi4yNzgzNTgyJTIwQzMwLjE4NDgzMzElMkMxNC40MDcwNDg4JTIwMjguNjE4MTIwNyUyQzEzLjA5NjI5NTYlMjAyNi43MzA3MDIzJTJDMTMuMDk2Mjk1''@;'; put 'put ''NiUyMEMyNC44NDUyMjE2JTJDMTMuMDk2Mjk1NiUyMDIzLjY2NTEwMDYlMkMxNC4zNDc1NTM2JTIwMjMuNjY1MTAwNiUyQzE0LjM0NzU1MzYlMjBDMjMuMDM3MjUzJTJDMTMuNTY2Njc5MyUyMDIyLjE3MjAyNDclMkMxMy4wOTcyMjUyJTIwMjAuNzA4OTg0NyUyQzEzLjA5NzIyNTIlMjBDMTku''@;'; put 'put ''MTY0NTU3JTJDMTMuMDk3MjI1MiUyMDE3LjgxMjk0MDYlMkMxNC4zNDc1NTM2JTIwMTcuODEyOTQwNiUyQzE0LjM0NzU1MzYlMjBDMTcuMTg0MTI0MSUyQzEzLjU2NjY3OTMlMjAxNi4xMTU0MjY3JTJDMTMuMDk3MjI1MiUyMDE1LjIzMDgyMDQlMkMxMy4wOTcyMjUyJTIwQzEzLjg2MTc2Mzgl''@;'; put 'put ''MkMxMy4wOTcyMjUyJTIwMTIuNzc0NjU3MiUyQzEzLjY3NTQ0NCUyMDEyLjExMTkyOTIlMkMxNS4xMzAyODcxJTIwTDEwLjE1MjgxMjElMkMxOS41NjA4MTg5JTIwTDcuNjM5NDgzNzYlMkMxMy44NzYyNDAyJTIyJTIwaWQlM0QlMjJGaWxsLTQlMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIy''@;'; put 'put ''JTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElM0MlMkZzdmclM0UiKX0uaXMtb2ZmLXNjcmVlbntwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2hlaWdodDoxcHghaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt0b3A6LjA1''@;'; put 'put ''cmVtIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjowIDAgLjA1cmVtIWltcG9ydGFudH0uY2xyLXBvcG92ZXItY29udGVudHtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwNTB9''@;'; put 'put ''OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItYnRuLXZlcnRpY2FsLW1hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpOy0tY2xyLWJ0bi1ob3Jpem9udGFsLW1hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpOy0tY2xyLWJ0bi1ob3Jpem9udGFsLXBhZGRpbmc6dmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1zcGFjZS02KTstLWNsci1idG4tdmVydGljYWwtcGFkZGluZzowOy0tY2xyLWJ0bi1wYWRkaW5nOnZhcigtLWNsci1idG4tdmVydGljYWwtcGFkZGluZykgdmFyKC0tY2xyLWJ0bi1ob3Jpem9udGFsLXBhZGRpbmcpOy0tY2xyLWJ0bi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS0xMSk7LS1jbHItYnRuLWhlaWdodC1zbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLWJ0bi1ib3JkZXItd2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0x''@;'; put 'put ''KTstLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQ6dmFyKC0tY2xyLWJ0bi1oZWlnaHQtc20pOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLWljb24t''@;'; put 'put ''c2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0taGVpZ2h0OnZhcigtLWNsci1idG4taGVpZ2h0KTstLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLXBhZGRpbmc6dmFyKC0tY2xyLWJ0bi1wYWRkaW5nKTstLWNsci1idG4tZ3JvdXAtZm9jdXMt''@;'; put 'put ''b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpOy0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItYnRuLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3Bh''@;'; put 'put ''cmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1idG4tZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1zZWNvbmRhcnktaG92ZXIpOy0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh''@;'; put 'put ''cGh5LWluZm8taG92ZXIpOy0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWRpc2Fi''@;'; put 'put ''bGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcik7''@;'; put 'put ''LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWluZm8taG92ZXIpOy0t''@;'; put 'put ''Y2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LWNo''@;'; put 'put ''ZWNrZWQtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uKTstLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxp''@;'; put 'put ''bmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91''@;'; put 'put ''dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbmZvLXNlY29uZGFyeS1ob3Zlcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1pbmZvLWhvdmVyKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5l''@;'; put 'put ''LWJnLWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJn''@;'; put 'put ''LWNvbG9yKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAw''@;'; put 'put ''KTstLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLXByaW1hcnkt''@;'; put 'put ''YmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1idG4tcHJpbWFyeS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1idG4tcHJpbWFyeS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9u''@;'; put 'put ''LWluZm8taG92ZXIpOy0tY2xyLWJ0bi1wcmltYXJ5LWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jb2xvcik7LS1jbHItYnRuLXByaW1hcnktYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLXByaW1hcnktYWN0aXZl''@;'; put 'put ''LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1jbGljayk7LS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1j''@;'; put 'put ''b2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3Rh''@;'; put 'put ''dHVzLWluZm8pOy0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbyk7LS1jbHItYnRuLXByaW1hcnktb3V0bGlu''@;'; put 'put ''ZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yOnZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW5mby1zZWNvbmRhcnktaG92ZXIpOy0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktaW5mby1ob3Zlcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1hY3RpdmUtYmct''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVm''@;'; put 'put ''YXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItYnRuLXN1Y2Nlc3MtYm9y''@;'; put 'put ''ZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3MtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLWhvdmVyKTstLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLXN1Y2Nlc3MtY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1zdWNjZXNzLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLXN1Y2Nlc3Mt''@;'; put 'put ''Y2xpY2spOy0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkLWJ1dHRvbik7LS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLXN1''@;'; put 'put ''Y2Nlc3MtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNvbG9yKTstLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1idG4tc3VjY2Vzcy1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1zdWNjZXNzLXNlY29uZGFyeS1ob3Zlcik7LS1j''@;'; put 'put ''bHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWNjZXNzLWhvdmVyKTstLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1iZy1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLXN1Y2Nlc3Mtb3V0bGluZS1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1zdWNjZXNz''@;'; put 'put ''LW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1zdWNjZXNz''@;'; put 'put ''LW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItYnRuLWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYmctY29sb3IpOy0tY2xyLWJ0''@;'; put 'put ''bi1kYW5nZXItaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1kYW5nZXItaG92ZXIpOy0tY2xyLWJ0bi1kYW5nZXItaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItYWN0aXZlLWJnLWNvbG9yOnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tZGFuZ2VyLWNsaWNrKTstLWNsci1idG4tZGFuZ2VyLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5''@;'; put 'put ''cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uKTstLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQp''@;'; put 'put ''Oy0tY2xyLWJ0bi1kYW5nZXItY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1iZy1jb2xvcik7LS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWJ0''@;'; put 'put ''bi1kYW5nZXItb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWRhbmdlci1zZWNvbmRhcnktaG92ZXIpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kYW5nZXItaG92''@;'; put 'put ''ZXIpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yKTstLWNsci1i''@;'; put 'put ''dG4tZGFuZ2VyLW91dGxpbmUtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLWRh''@;'; put 'put ''bmdlci1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tZGFuZ2Vy''@;'; put 'put ''LW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yKTstLWNsci1idG4td2FybmluZy1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNsci1idG4td2FybmluZy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdh''@;'; put 'put ''cm5pbmcpOy0tY2xyLWJ0bi13YXJuaW5nLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24td2FybmluZy1ob3Zlcik7LS1jbHItYnRuLXdh''@;'; put 'put ''cm5pbmctaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yKTstLWNsci1idG4td2FybmluZy1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi13YXJuaW5nLWNsaWNrKTstLWNsci1idG4td2FybmluZy1hY3RpdmUtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi13YXJuaW5nLWNvbG9yKTstLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZC1idXR0b24pOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlz''@;'; put 'put ''YWJsZWQpOy0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4td2FybmluZy1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1iZy1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmct''@;'; put 'put ''Y2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY29sb3IpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nLWRhcmspOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi1vdXRs''@;'; put 'put ''aW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyayk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9u''@;'; put 'put ''LXdhcm5pbmctc2Vjb25kYXJ5LWhvdmVyKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXdhcm5pbmctaG92ZXIpOy0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2Fy''@;'; put 'put ''bmluZy1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1kaXNhYmxlZCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1''@;'; put 'put ''cy1kaXNhYmxlZCk7LS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4td2FybmluZy1vdXRsaW5lLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUt''@;'; put 'put ''Y29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYnRuLW5ldXRyYWwtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1idG4tbmV1dHJhbC1ib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1uZXV0cmFsLWJnLWNvbG9yKTstLWNsci1idG4tbmV1dHJhbC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtaG92ZXIpOy0tY2xyLWJ0bi1uZXV0cmFsLWhvdmVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1jb2xv''@;'; put 'put ''cik7LS1jbHItYnRuLW5ldXRyYWwtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tbmV1dHJhbC1jbGljayk7LS1jbHItYnRuLW5ldXRyYWwtYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1jb2xvcik7LS1jbHItYnRuLW5ldXRyYWwt''@;'; put 'put ''ZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQtYnV0dG9uKTstLWNsci1idG4tbmV1dHJhbC1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tbmV1dHJhbC1kaXNhYmxlZC1ib3JkZXItY29s''@;'; put 'put ''b3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRuLW5ldXRyYWwtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtYmctY29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWNvbG9yKTst''@;'; put 'put ''LWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbCk7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1ib3JkZXIt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtY29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcik7LS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1ob3Zlci1iZy1jb2xvcjp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW5ldXRyYWwtc2Vjb25kYXJ5LWhvdmVyKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwpOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYWN0aXZlLWJn''@;'; put 'put ''LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWNoZWNrZWQtYmctY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYmctY29sb3IpOy0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1jb2xvcik7LS1jbHItYnRuLWxpbmstY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTst''@;'; put 'put ''LWNsci1idG4tbGluay1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''bGluay1jb2xvcik7LS1jbHItYnRuLWxpbmstYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWhvdmVy''@;'; put 'put ''LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWluZm8taG92ZXIpOy0tY2xyLWJ0bi1saW5rLXZpc2l0ZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvci12aXNpdGVkKTstLWNsci1idG4tbGluay12aXNpdGVkLWhvdmVyLWNvbG9yOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3ItdmlzaXRlZC1ob3Zlcik7LS1jbHItYnRuLWxpbmstZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNw''@;'; put 'put ''YXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0''@;'; put 'put ''bi1saW5rLWNoZWNrZWQtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTgwMCk7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3Bh''@;'; put 'put ''cmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstcHJpbWFyeS1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNs''@;'; put 'put ''ci1idG4tbGluay1wcmltYXJ5LWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWluZm8taG92ZXIpOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWNvbG9yKTstLWNsci1idG4tbGluay1wcmltYXJ5LWFj''@;'; put 'put ''dGl2ZS1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWJnLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1wcmltYXJ5LWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnktY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNs''@;'; put 'put ''ci1idG4tbGluay1zdWNjZXNzLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtaG92ZXIt''@;'; put 'put ''YmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWNjZXNzLWhvdmVyKTstLWNsci1idG4tbGluay1zdWNjZXNzLWFjdGl2ZS1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWxpbmstc3VjY2Vzcy1jb2xvcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1kaXNhYmxlZCk7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1zdWNjZXNzLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNv''@;'; put 'put ''bG9yKTstLWNsci1idG4tbGluay1zdWNjZXNzLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstc3VjY2Vzcy1jaGVja2VkLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWNvbG9yKTstLWNsci1idG4tbGlu''@;'; put 'put ''ay13YXJuaW5nLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy1kYXJrKTstLWNsci1idG4tbGluay13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctYm9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLXdhcm5pbmctaG92ZXItYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS13''@;'; put 'put ''YXJuaW5nLWhvdmVyKTstLWNsci1idG4tbGluay13YXJuaW5nLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHIt''@;'; put 'put ''YnRuLWxpbmstd2FybmluZy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1kaXNhYmxlZCk7LS1jbHItYnRuLWxpbmstd2FybmluZy1kaXNhYmxlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay13YXJu''@;'; put 'put ''aW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay13YXJuaW5nLWNoZWNrZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstd2FybmluZy1jaGVj''@;'; put 'put ''a2VkLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWNvbG9yKTstLWNsci1idG4tbGluay1kYW5nZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWJ0bi1saW5rLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNv''@;'; put 'put ''bG9yKTstLWNsci1idG4tbGluay1kYW5nZXItYm9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLWRhbmdlci1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1k''@;'; put 'put ''YW5nZXItaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGFuZ2VyLWhvdmVyKTstLWNsci1idG4tbGluay1kYW5nZXItYWN0aXZlLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItY29sb3IpOy0tY2xyLWJ0bi1saW5rLWRhbmdlci1hY3RpdmUtYmctY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1idG4tbGluay1kYW5nZXItZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10''@;'; put 'put ''cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1kYW5nZXItY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50''@;'; put 'put ''LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1kYW5nZXItY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbCk7LS1jbHItYnRuLWxpbmstbmV1dHJhbC1i''@;'; put 'put ''Zy1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXRyYW5zcGFyZW50LWJnLWNvbG9yKTstLWNsci1idG4tbGluay1uZXV0cmFsLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbmV1dHJhbC1ob3Zlcik7LS1jbHItYnRuLWxpbmstbmV1dHJhbC1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwt''@;'; put 'put ''Y29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWJ0''@;'; put 'put ''bi1saW5rLW5ldXRyYWwtZGlzYWJsZWQtYmctY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmstbmV1dHJhbC1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi10cmFuc3BhcmVudC1iZy1jb2xvcik7LS1jbHItYnRuLWxpbmst''@;'; put 'put ''bmV1dHJhbC1jaGVja2VkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtY2hlY2tlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1jb2xvcik7LS1jbHItYnRuLWludmVyc2UtY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jbHItYnRuLWludmVyc2UtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2xyLWJ0bi1pbnZlcnNlLWJnLWNvbG9yOnZhcigtLWNsci1idG4tdHJhbnNwYXJlbnQtYmctY29sb3IpOy0tY2xyLWJ0bi1pbnZlcnNlLWhv''@;'; put 'put ''dmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24taW52ZXJzZS1ob3Zlcik7LS1jbHItYnRuLWludmVyc2UtaG92ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yKTstLWNsci1idG4taW52ZXJzZS1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1pbnZlcnNlLWNsaWNrKTstLWNsci1idG4taW52ZXJzZS1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSk7LS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlz''@;'; put 'put ''YWJsZWQpOy0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJnLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJnLWNvbG9yKTstLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItYnRu''@;'; put 'put ''LWludmVyc2UtY2hlY2tlZC1iZy1jb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtYmctY29sb3IpOy0tY2xyLWJ0bi1pbnZlcnNlLWNoZWNrZWQtY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yKX0uYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bntjdXJzb3I6''@;'; put 'put ''cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2FsaWduLWl0ZW1zOmNlbnRlcjtwbGFjZS1jb250ZW50OmNlbnRlcjstd2Via2l0LWFwcGVhcmFuY2U6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOnZhcigtLWNsci1idG4tYm9yZGVyLXdpZHRo''@;'; put 'put ''KSBzb2xpZDtib3JkZXItcmFkaXVzOnZhcigtLWNsci1idG4tYm9yZGVyLXJhZGl1cyk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTQpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3Zl''@;'; put 'put ''cmZsb3c6ZWxsaXBzaXM7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWRlZmF1bHQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcik7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNp''@;'; put 'put ''emUtMik7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtoZWlnaHQ6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLWZvcm0taGVpZ2h0KTtwYWRkaW5nOnZh''@;'; put 'put ''cigtLWNsci1idG4tYXBwZWFyYW5jZS1mb3JtLXBhZGRpbmcpfS5idG46aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lfS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29u''@;'; put 'put ''LC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jb2xvcil9LmJ0bjpob3ZlciwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYnRuLWRlZmF1bHQtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zlci1jb2xvcil9LmJ0bjpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bjpob3ZlciBjbHItaWNvbiwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yKX0uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWFjdGl2ZS1jb2xvcil9LmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuOmFjdGl2ZSBjbHItaWNv''@;'; put 'put ''biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1hY3RpdmUtY29sb3IpfS5idG4uZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuZGlzYWJsZWQuYnRuLC5idG46ZGlzYWJsZWQs''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJnLWNvbG9yKTti''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5kaXNhYmxlZC5idG4gY2RzLWljb24sLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsIC5hbGVydC1pdGVtIC5kaXNhYmxlZC5idG4gY2xyLWljb24sLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p''@;'; put 'put ''dGVtIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWNvbG9yKX0uYnRuIC5jbHItbG9hZGluZy1idG4tY29udGVudCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gLmNsci1sb2FkaW5nLWJ0bi1jb250ZW50e2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTthbGlnbi1pdGVtczpjZW50ZXJ9LmJ0bi1ncm91cD4uYnRuIGNsci1pY29uLC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29ue3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLGNh''@;'; put 'put ''bGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSksMCl9YS5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0biwuYnRuLmJ0bi1zZWNvbmRhcnksLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS5idG4sLmJ0bi1zZWNvbmRhcnkgLmJ0biwu''@;'; put 'put ''YnRuLXNlY29uZGFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeSAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGVmYXVsdC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNvbG9yKX1hLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuIGNkcy1pY29uLGEuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0''@;'; put 'put ''ZW0gYS5idG4gY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnkuYnRuIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4t''@;'; put 'put ''c2Vjb25kYXJ5LmJ0biBjbHItaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5IC5idG4gY2RzLWlj''@;'; put 'put ''b24sLmJ0bi1zZWNvbmRhcnkgLmJ0biBjbHItaWNvbiwuYnRuLXNlY29uZGFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeSAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tZGVmYXVsdC1jb2xvcil9YS5idG46aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjpob3ZlciwuYnRuLmJ0bi1zZWNvbmRhcnk6aG92ZXIsLmJ0bi1zZWNvbmRhcnkgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1ob3Zl''@;'; put 'put ''ci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yKX1hLmJ0bjpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmhvdmVyIGNkcy1pY29uLGEuYnRuOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFs''@;'; put 'put ''ZXJ0LWl0ZW0gYS5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5OmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeTpob3ZlciBjbHItaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG46aG92ZXIgY2xyLWlj''@;'; put 'put ''b257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWhvdmVyLWNvbG9yKX1hLmJ0bjphY3RpdmUsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjphY3RpdmUsLmJ0bi5idG4tc2Vjb25kYXJ5OmFjdGl2ZSwuYnRuLXNlY29uZGFyeSAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1hY3RpdmUtY29sb3IpfWEuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmFjdGl2ZSBjZHMtaWNvbixhLmJ0bjph''@;'; put 'put ''Y3RpdmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5OmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnk6YWN0aXZlIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG46YWN0aXZlIGNk''@;'; put 'put ''cy1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1hY3RpdmUtY29sb3IpfWEuYnRuLmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gYS5kaXNhYmxlZC5idG4sYS5idG46ZGlzYWJsZWQsLmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmJ0bjpkaXNhYmxlZCwuYnRuLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4tc2Vjb25kYXJ5IC5idG4uZGlzYWJsZWQsLmJ0bi1zZWNvbmRhcnkgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWRlZmF1bHQtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1kaXNhYmxlZC1ib3JkZXItY29sb3Ip''@;'; put 'put ''fWEuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gYS5kaXNhYmxlZC5idG4gY2RzLWljb24sYS5idG4uZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSBhLmRpc2FibGVkLmJ0biBjbHItaWNvbixhLmJ0bjpkaXNh''@;'; put 'put ''YmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIGEuYnRuOmRpc2FibGVkIGNkcy1pY29uLGEuYnRuOmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gYS5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LmRp''@;'; put 'put ''c2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG4uZGlzYWJsZWQgY2RzLWljb24s''@;'; put 'put ''LmJ0bi1zZWNvbmRhcnkgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXNlY29uZGFyeSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5IC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0''@;'; put 'put ''bi1pbmZvLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvLmJ0biwuYnRuLWluZm8gLmJ0biwuYnRuLWluZm8gLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvIC5idG4sLmJ0bi5idG4tcHJp''@;'; put 'put ''bWFyeSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS5idG4sLmJ0bi1wcmltYXJ5IC5idG4sLmJ0bi1wcmltYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeSAuYnRue2Jv''@;'; put 'put ''cmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yKX0uYnRuLmJ0bi1pbmZvIGNkcy1pY29uLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvLmJ0biBjbHItaWNvbiwuYnRuLWluZm8gLmJ0biBjZHMtaWNvbiwuYnRuLWluZm8gLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZvIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvIC5idG4gY2xyLWljb24sLmJ0bi1pbmZvIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mbyAuYnRuIGNsci1pY29uLC5idG4uYnRuLXByaW1hcnkgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnkuYnRuIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnkgY2xyLWljb24sLmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnkuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5idG4tcHJpbWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1h''@;'; put 'put ''cnkgLmJ0biBjZHMtaWNvbiwuYnRuLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5IC5idG4gY2xyLWljb257Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1wcmltYXJ5LWNvbG9yKX0uYnRuLmJ0bi1pbmZvOmhvdmVyLC5idG4taW5mbyAuYnRuOmhvdmVyLC5idG4uYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5IC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktaG92ZXItYmctY29s''@;'; put 'put ''b3IpO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1ob3Zlci1jb2xvcil9LmJ0bi5idG4taW5mbzpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvOmhvdmVyIGNsci1pY29uLC5idG4taW5mbyAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4taW5mbyAuYnRuOmhvdmVyIGNsci1pY29uLC5i''@;'; put 'put ''dG4uYnRuLXByaW1hcnk6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeTpob3ZlciBjbHItaWNvbiwuYnRuLXByaW1hcnkgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLXByaW1hcnkgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktaG92ZXItY29s''@;'; put 'put ''b3IpfS5idG4uYnRuLWluZm86YWN0aXZlLC5idG4taW5mbyAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLXByaW1hcnktYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1pbmZvOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvOmFjdGl2ZSBjbHItaWNvbiwuYnRuLWluZm8gLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1pbmZvIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLXByaW1h''@;'; put 'put ''cnk6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnk6YWN0aXZlIGNsci1pY29uLC5idG4tcHJpbWFyeSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLXByaW1hcnkgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWFjdGl2ZS1jb2xvcil9LmJ0''@;'; put 'put ''bi5idG4taW5mby5kaXNhYmxlZCwuYnRuLmJ0bi1pbmZvOmRpc2FibGVkLC5idG4taW5mbyAuYnRuLmRpc2FibGVkLC5idG4taW5mbyAuYnRuOmRpc2FibGVkLC5idG4uYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi5idG4tcHJpbWFyeTpkaXNhYmxlZCwuYnRuLXByaW1hcnkgLmJ0bi5kaXNh''@;'; put 'put ''YmxlZCwuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1idG4tcHJpbWFyeS1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLWluZm8uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4taW5mby5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWluZm86ZGlzYWJsZWQg''@;'; put 'put ''Y2xyLWljb24sLmJ0bi1pbmZvIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1pbmZvIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1pbmZvIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1pbmZvIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tcHJpbWFyeS5kaXNhYmxl''@;'; put 'put ''ZCBjZHMtaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXByaW1hcnk6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeTpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXByaW1hcnkg''@;'; put 'put ''LmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXByaW1hcnkgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3MsLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXN1Y2Nlc3MuYnRuLC5idG4tc3VjY2VzcyAuYnRuLC5idG4tc3VjY2VzcyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXN1Y2Nlc3MgLmJ0bntib3JkZXItY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1zdWNjZXNzLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jb2xvcil9LmJ0bi5idG4tc3VjY2VzcyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVy''@;'; put 'put ''dC1pdGVtIC5idG4tc3VjY2Vzcy5idG4gY2RzLWljb24sLmJ0bi5idG4tc3VjY2VzcyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2Vzcy5idG4gY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG4gY2RzLWljb24sLmJ0bi1zdWNjZXNzIC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2VzcyAuYnRuIGNkcy1pY29uLC5idG4tc3VjY2VzcyAuYnRuIGNsci1pY29uLC5idG4tc3VjY2VzcyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xy''@;'; put 'put ''LWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYnRuLXN1Y2Nlc3MtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzczpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzOmhvdmVyIGNsci1pY29uLC5idG4tc3VjY2VzcyAuYnRuOmhvdmVyIGNk''@;'; put 'put ''cy1pY29uLC5idG4tc3VjY2VzcyAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1ob3Zlci1jb2xvcil9LmJ0bi5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNj''@;'; put 'put ''ZXNzLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tc3VjY2VzczphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tc3VjY2VzczphY3RpdmUgY2xyLWljb24sLmJ0bi1zdWNjZXNzIC5idG46YWN0aXZlIGNkcy1pY29uLC5i''@;'; put 'put ''dG4tc3VjY2VzcyAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQsLmJ0bi1zdWNjZXNzIC5idG4uZGlzYWJsZWQsLmJ0bi1zdWNjZXNz''@;'; put 'put ''IC5idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXN1''@;'; put 'put ''Y2Nlc3MtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3MuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tc3VjY2VzczpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzOmRpc2FibGVkIGNsci1p''@;'; put 'put ''Y29uLC5idG4tc3VjY2VzcyAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tc3VjY2VzcyAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tc3VjY2VzcyAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tc3VjY2VzcyAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1i''@;'; put 'put ''dG4tc3VjY2Vzcy1kaXNhYmxlZC1jb2xvcil9LmJ0bi5idG4td2FybmluZywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZy5idG4sLmJ0bi13YXJuaW5nIC5idG4sLmJ0bi13YXJuaW5nIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZyAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNv''@;'; put 'put ''bG9yKX0uYnRuLmJ0bi13YXJuaW5nIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5nIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLmJ0biBjbHItaWNv''@;'; put 'put ''biwuYnRuLXdhcm5pbmcgLmJ0biBjZHMtaWNvbiwuYnRuLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nIC5idG4gY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG4gY2xyLWlj''@;'; put 'put ''b24sLmJ0bi13YXJuaW5nIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZyAuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jb2xvcil9LmJ0bi5idG4td2Fybmlu''@;'; put 'put ''Zzpob3ZlciwuYnRuLXdhcm5pbmcgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nOmhvdmVyIGNkcy1pY29uLC5idG4u''@;'; put 'put ''YnRuLXdhcm5pbmc6aG92ZXIgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG46aG92ZXIgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdh''@;'; put 'put ''cm5pbmcgLmJ0bjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5n''@;'; put 'put ''OmFjdGl2ZSBjbHItaWNvbiwuYnRuLXdhcm5pbmcgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXdhcm5pbmcuZGlzYWJsZWQsLmJ0bi5idG4td2Fy''@;'; put 'put ''bmluZzpkaXNhYmxlZCwuYnRuLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCwuYnRuLXdhcm5pbmcgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2Fy''@;'; put 'put ''bmluZy1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLXdhcm5pbmcuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4td2FybmluZy5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi13YXJu''@;'; put 'put ''aW5nOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmc6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi13YXJuaW5nIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi13YXJuaW5nIC5idG46ZGlzYWJsZWQgY2RzLWljb24s''@;'; put 'put ''LmJ0bi13YXJuaW5nIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXIsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlci5idG4sLmJ0bi1kYW5nZXIgLmJ0biwuYnRuLWRh''@;'; put 'put ''bmdlciAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlciAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1k''@;'; put 'put ''YW5nZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXIgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlci5idG4gY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyIGNsci1pY29uLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXIuYnRuIGNsci1pY29uLC5idG4tZGFuZ2VyIC5idG4gY2RzLWljb24sLmJ0bi1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXIg''@;'; put 'put ''LmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlciAuYnRuIGNsci1pY29uLC5idG4tZGFuZ2VyIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1kYW5nZXItY29sb3IpfS5idG4uYnRuLWRhbmdlcjpob3ZlciwuYnRuLWRhbmdlciAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWhvdmVyLWNvbG9yKX0uYnRuLmJ0''@;'; put 'put ''bi1kYW5nZXI6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyOmhvdmVyIGNsci1pY29uLC5idG4tZGFuZ2VyIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1kYW5nZXIgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1ob3Zlci1jb2xvcil9LmJ0bi5i''@;'; put 'put ''dG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlciAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXI6YWN0aXZlIGNkcy1p''@;'; put 'put ''Y29uLC5idG4uYnRuLWRhbmdlcjphY3RpdmUgY2xyLWljb24sLmJ0bi1kYW5nZXIgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1kYW5nZXIgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXIuZGlzYWJs''@;'; put 'put ''ZWQsLmJ0bi5idG4tZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyIC5idG4uZGlzYWJsZWQsLmJ0bi1kYW5nZXIgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1kYW5nZXItZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLWRhbmdlci5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXIuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5i''@;'; put 'put ''dG4tZGFuZ2VyOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlcjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWRhbmdlciAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tZGFuZ2VyIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1kYW5nZXIgLmJ0bjpkaXNhYmxlZCBjZHMtaWNv''@;'; put 'put ''biwuYnRuLWRhbmdlciAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFsLmJ0biwuYnRuLW5ldXRyYWwgLmJ0biwuYnRu''@;'; put 'put ''LW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFsIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1uZXV0cmFsLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwuYnRuIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWwgY2xyLWljb24s''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwuYnRuIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYnRuIGNkcy1pY29uLC5idG4tbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRl''@;'; put 'put ''bSAuYnRuLW5ldXRyYWwgLmJ0biBjZHMtaWNvbiwuYnRuLW5ldXRyYWwgLmJ0biBjbHItaWNvbiwuYnRuLW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFsIC5idG4gY2xyLWlj''@;'; put 'put ''b257Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsOmhvdmVyLC5idG4tbmV1dHJhbCAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRy''@;'; put 'put ''YWwtaG92ZXItY29sb3IpfS5idG4uYnRuLW5ldXRyYWw6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbDpob3ZlciBjbHItaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LW5ldXRyYWwtaG92ZXItY29sb3IpfS5idG4uYnRuLW5ldXRyYWw6YWN0aXZlLC5idG4tbmV1dHJhbCAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1hY3RpdmUtY29s''@;'; put 'put ''b3IpfS5idG4uYnRuLW5ldXRyYWw6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWw6YWN0aXZlIGNsci1pY29uLC5idG4tbmV1dHJhbCAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFs''@;'; put 'put ''LWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC5kaXNhYmxlZCwuYnRuLmJ0bi1uZXV0cmFsOmRpc2FibGVkLC5idG4tbmV1dHJhbCAuYnRuLmRpc2FibGVkLC5idG4tbmV1dHJhbCAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1kaXNhYmxlZC1jb2xvcik7''@;'; put 'put ''Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC5kaXNhYmxlZCBjZHMt''@;'; put 'put ''aWNvbiwuYnRuLmJ0bi1uZXV0cmFsLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW5ldXRyYWw6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbDpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bi5k''@;'; put 'put ''aXNhYmxlZCBjbHItaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW5ldXRyYWwgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLW91dGxpbmUsLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUuYnRuLC5idG4uYnRuLW91dGxpbmUgLmJ0biwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc2Vjb25kYXJ5LW91dGxpbmUuYnRuLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5idG4sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0''@;'; put 'put ''ZW0gLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0biwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zZWNvbmRh''@;'; put 'put ''cnkgLmJ0biwuYnRuLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWJv''@;'; put 'put ''cmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtY29sb3IpfS5idG4uYnRuLW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRl''@;'; put 'put ''bSAuYnRuLW91dGxpbmUuYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG4gY2xy''@;'; put 'put ''LWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS1vdXRsaW5lLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVy''@;'; put 'put ''dC1pdGVtIC5idG4tc2Vjb25kYXJ5LW91dGxpbmUuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNv''@;'; put 'put ''bmRhcnkgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmJ0biBjbHItaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p''@;'; put 'put ''dGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxl''@;'; put 'put ''cnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5hbGVydC1hcHAtbGV2ZWwg''@;'; put 'put ''LmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0g''@;'; put 'put ''LmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tb3V0bGluZTpob3ZlciwuYnRuLmJ0bi1vdXRsaW5lIC5idG46aG92ZXIsLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6''@;'; put 'put ''aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUgLmJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVm''@;'; put 'put ''YXVsdC1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lOmhvdmVyIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0bjpo''@;'; put 'put ''b3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92''@;'; put 'put ''ZXIgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5i''@;'; put 'put ''dG46aG92ZXIgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4tb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tb3V0bGluZSAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWhv''@;'; put 'put ''dmVyLWNvbG9yKX0uYnRuLmJ0bi1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUsLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmFjdGl2''@;'; put 'put ''ZSwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46YWN0aXZlLC5idG4tb3V0bGluZSAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtYWN0''@;'; put 'put ''aXZlLWNvbG9yKX0uYnRuLmJ0bi1vdXRsaW5lOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tc2Vj''@;'; put 'put ''b25kYXJ5LW91dGxpbmU6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnk6YWN0aXZlIGNsci1pY29uLC5idG4t''@;'; put 'put ''c2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjphY3RpdmUgY2xy''@;'; put 'put ''LWljb24sLmJ0bi1vdXRsaW5lIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4tb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZTpkaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc2Vj''@;'; put 'put ''b25kYXJ5LmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLmRpc2FibGVkLC5i''@;'; put 'put ''dG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpkaXNhYmxlZCwuYnRuLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUgLmJ0bi5k''@;'; put 'put ''aXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRs''@;'; put 'put ''aW5lLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGNsci1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBj''@;'; put 'put ''ZHMtaWNvbiwuYnRuLXNlY29uZGFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1zZWNvbmRhcnktb3V0bGluZSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tc2Vjb25kYXJ5LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25k''@;'; put 'put ''YXJ5IC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1zZWNvbmRhcnkgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IC5idG46ZGlzYWJsZWQgY2xyLWljb24s''@;'; put 'put ''LmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1k''@;'; put 'put ''ZWZhdWx0LW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS1vdXRsaW5lLmJ0biwuYnRuLW91dGxpbmUtaW5mbyAuYnRuLC5idG4tb3V0bGluZS1pbmZvIC5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1pbmZvIC5idG4sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biwuYnRuLWluZm8tb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAu''@;'; put 'put ''YWxlcnQtaXRlbSAuYnRuLWluZm8tb3V0bGluZSAuYnRuLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5LW91dGxpbmUg''@;'; put 'put ''LmJ0biwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuLC5idG4tb3V0bGluZS1wcmltYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5''@;'; put 'put ''LC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXByaW1hcnkuYnRuLC5idG4uYnRuLW91dGxpbmUtaW5mbywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1pbmZvLmJ0biwuYnRuLmJ0bi1pbmZvLW91dGxpbmUsLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bCAuYWxlcnQtaXRlbSAuYnRuLWluZm8tb3V0bGluZS5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLXByaW1hcnktb3V0bGluZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtY29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS1vdXRsaW5lLmJ0biBjZHMt''@;'; put 'put ''aWNvbiwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXByaW1hcnktb3V0bGluZS5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtaW5mbyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQt''@;'; put 'put ''aXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWluZm8gLmJ0biBjbHItaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4taW5mby1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBj''@;'; put 'put ''ZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mby1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWluZm8tb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsIC5hbGVydC1pdGVtIC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtcHJpbWFyeS5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1w''@;'; put 'put ''cmltYXJ5IGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXByaW1hcnkuYnRuIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1pbmZvLmJ0biBjZHMt''@;'; put 'put ''aWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm8gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtaW5mby5idG4gY2xyLWljb24sLmJ0bi5idG4taW5mby1vdXRsaW5lIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbmZv''@;'; put 'put ''LW91dGxpbmUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4taW5mby1vdXRsaW5lLmJ0biBjbHItaWNv''@;'; put 'put ''biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmhvdmVyLC5idG4tb3V0bGluZS1pbmZvIC5idG46aG92ZXIsLmJ0bi1p''@;'; put 'put ''bmZvLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46aG92ZXIsLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyLC5idG4uYnRuLW91dGxpbmUtaW5mbzpob3ZlciwuYnRuLmJ0bi1pbmZvLW91dGxp''@;'; put 'put ''bmU6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtaG92ZXIt''@;'; put 'put ''Y29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtaW5mbyAuYnRuOmhvdmVyIGNsci1pY29uLC5i''@;'; put 'put ''dG4taW5mby1vdXRsaW5lIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi1vdXRs''@;'; put 'put ''aW5lLXByaW1hcnkgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0''@;'; put 'put ''bGluZS1pbmZvOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbzpob3ZlciBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6aG92ZXIgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi5i''@;'; put 'put ''dG4taW5mby1vdXRsaW5lOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6''@;'; put 'put ''YWN0aXZlLC5idG4tb3V0bGluZS1pbmZvIC5idG46YWN0aXZlLC5idG4taW5mby1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46YWN0aXZlLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTphY3RpdmUs''@;'; put 'put ''LmJ0bi5idG4tb3V0bGluZS1pbmZvOmFjdGl2ZSwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWFjdGl2ZS1i''@;'; put 'put ''Zy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZTphY3RpdmUgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjph''@;'; put 'put ''Y3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjphY3RpdmUg''@;'; put 'put ''Y2RzLWljb24sLmJ0bi1wcmltYXJ5LW91dGxpbmUgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2''@;'; put 'put ''ZSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbzphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6YWN0aXZlIGNkcy1pY29u''@;'; put 'put ''LC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCwuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtaW5mbyAu''@;'; put 'put ''YnRuOmRpc2FibGVkLC5idG4taW5mby1vdXRsaW5lIC5idG4uZGlzYWJsZWQsLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXByaW1h''@;'; put 'put ''cnkgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkLC5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtaW5mbzpkaXNhYmxlZCwuYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQsLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxl''@;'; put 'put ''cnQtaXRlbSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVy''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1wcmltYXJ5LW91''@;'; put 'put ''dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWluZm8gLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtaW5m''@;'; put 'put ''byAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1pbmZvIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWluZm8tb3V0bGluZSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4taW5mby1vdXRsaW5l''@;'; put 'put ''IC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1pbmZvLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tcHJpbWFyeS1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1wcmltYXJ5''@;'; put 'put ''LW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXByaW1hcnktb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwu''@;'; put 'put ''YnRuLW91dGxpbmUtcHJpbWFyeSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1wcmltYXJ5IC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCBj''@;'; put 'put ''bHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQg''@;'; put 'put ''Y2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1p''@;'; put 'put ''dGVtIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxlZCBjZHMt''@;'; put 'put ''aWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1pbmZvLW91dGxpbmU6ZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2xy''@;'; put 'put ''LWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2Vzcy1vdXRsaW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nl''@;'; put 'put ''c3MgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5idG4sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5h''@;'; put 'put ''bGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG4sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWJnLWNvbG9yKTtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1zdWNjZXNzLW91dGxpbmUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxl''@;'; put 'put ''cnQtaXRlbSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tc3VjY2Vzcy1vdXRsaW5lLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0''@;'; put 'put ''biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0''@;'; put 'put ''LWl0ZW0gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYnRuIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0''@;'; put 'put ''ZW0gLmJ0bi1zdWNjZXNzLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVt''@;'; put 'put ''IC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu''@;'; put 'put ''YnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0''@;'; put 'put ''bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyLC5idG4u''@;'; put 'put ''YnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6''@;'; put 'put ''aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciBjbHItaWNvbiwuYnRuLXN1''@;'; put 'put ''Y2Nlc3Mtb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6YWN0aXZlLC5idG4t''@;'; put 'put ''c3VjY2Vzcy1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1hY3Rp''@;'; put 'put ''dmUtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZTphY3RpdmUgY2xyLWljb24sLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzOmFjdGl2ZSBjbHItaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmFj''@;'; put 'put ''dGl2ZSBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nl''@;'; put 'put ''c3Mtb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZS5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6ZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4tc3VjY2Vzcy1vdXRsaW5l''@;'; put 'put ''IC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3Mtb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29u''@;'; put 'put ''LC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXN1Y2Nlc3Mtb3V0bGluZS5kaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxl''@;'; put 'put ''ZCBjbHItaWNvbiwuYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZS1zdWNjZXNzOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tc3VjY2Vzcy1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1z''@;'; put 'put ''dWNjZXNzLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXN1Y2Nlc3Mtb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCBjbHIt''@;'; put 'put ''aWNvbiwuYnRuLW91dGxpbmUtc3VjY2VzcyAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1zdWNjZXNzIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLXdhcm5pbmctb3V0''@;'; put 'put ''bGluZSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZy1vdXRsaW5lLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu''@;'; put 'put ''LW91dGxpbmUtd2FybmluZy5idG4sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biwuYnRuLXdhcm5pbmctb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLC5idG4tb3V0''@;'; put 'put ''bGluZS13YXJuaW5nIC5idG4sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91''@;'; put 'put ''dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvcil9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lIGNkcy1pY29uLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLW91dGxpbmUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmctb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVy''@;'; put 'put ''dC1pdGVtIC5idG4td2FybmluZy1vdXRsaW5lLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu''@;'; put 'put ''LW91dGxpbmUtd2FybmluZy5idG4gY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuYnRuIGNsci1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0''@;'; put 'put ''bi13YXJuaW5nLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4t''@;'; put 'put ''d2FybmluZy1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4td2FybmluZy1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0biBjZHMtaWNvbiwuYnRuLW91''@;'; put 'put ''dGxpbmUtd2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG4gY2xyLWljb24sLmJ0bi1vdXRs''@;'; put 'put ''aW5lLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jb2xvcil9LmJ0''@;'; put 'put ''bi5idG4td2FybmluZy1vdXRsaW5lOmhvdmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmhvdmVyLC5idG4tb3V0bGluZS13YXJuaW5n''@;'; put 'put ''IC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTpob3ZlciBjZHMtaWNvbiwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6aG92ZXIgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb24s''@;'; put 'put ''LmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciBjbHItaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46aG92ZXIgY2xyLWljb24sLmJ0''@;'; put 'put ''bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6YWN0aXZlLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46YWN0aXZlLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJu''@;'; put 'put ''aW5nIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLXdhcm5pbmctb3V0bGluZTphY3RpdmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtd2Fybmlu''@;'; put 'put ''ZzphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSBjbHItaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAu''@;'; put 'put ''YnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLXdhcm5pbmctb3V0bGluZS5kaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFs''@;'; put 'put ''ZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6ZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQsLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLC5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuLmRpc2FibGVkLC5idG4td2FybmluZy1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmRp''@;'; put 'put ''c2FibGVke2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1idG4td2FybmluZy1vdXRsaW5lLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4td2FybmluZy1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLXdh''@;'; put 'put ''cm5pbmctb3V0bGluZS5kaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi13YXJuaW5nLW91dGxpbmU6ZGlzYWJsZWQgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13''@;'; put 'put ''YXJuaW5nIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4td2FybmluZy1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxp''@;'; put 'put ''bmUtd2FybmluZy5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLXdh''@;'; put 'put ''cm5pbmctb3V0bGluZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4td2FybmluZy1vdXRsaW5lIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi13YXJuaW5nLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLXdhcm5pbmctb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1p''@;'; put 'put ''Y29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1vdXRsaW5lLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtd2FybmluZyAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS13YXJuaW5nIC5idG46ZGlz''@;'; put 'put ''YWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLW91dGxpbmUtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXItb3V0bGluZS5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVy''@;'; put 'put ''dC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0biwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1kYW5nZXIuYnRuLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biwuYnRuLWRhbmdlci1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwg''@;'; put 'put ''LmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1idG4tZGFuZ2VyLW91dGxpbmUtY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1kYW5nZXItb3V0bGluZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0g''@;'; put 'put ''LmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyLW91dGxpbmUuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24s''@;'; put 'put ''LmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW91dGxpbmUtZGFuZ2VyLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0''@;'; put 'put ''bGluZS1kYW5nZXIuYnRuIGNsci1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tZGFuZ2VyLW91''@;'; put 'put ''dGxpbmUgLmJ0biBjZHMtaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG4gY2xyLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWRhbmdlci1vdXRsaW5l''@;'; put 'put ''IC5idG4gY2xyLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuIGNkcy1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRu''@;'; put 'put ''IGNkcy1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biBjbHItaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0biBjbHIt''@;'; put 'put ''aWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyLC5idG4t''@;'; put 'put ''ZGFuZ2VyLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWhvdmVyLWNvbG9y''@;'; put 'put ''KX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQt''@;'; put 'put ''ZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIgY2xyLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmhvdmVyIGNkcy1pY29uLC5idG4tZGFu''@;'; put 'put ''Z2VyLW91dGxpbmUgLmJ0bjpob3ZlciBjbHItaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtaG92ZXItY29sb3IpfS5idG4u''@;'; put 'put ''YnRuLWRhbmdlci1vdXRsaW5lOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjphY3RpdmUsLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtZGFuZ2VyIC5i''@;'; put 'put ''dG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1kYW5nZXItb3V0bGluZTphY3RpdmUgY2RzLWljb24sLmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmU6YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46YWN0aXZlIGNsci1pY29uLC5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLWRhbmdlcjphY3RpdmUgY2xyLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46YWN0aXZlIGNsci1pY29uLC5idG4t''@;'; put 'put ''b3V0bGluZS1kYW5nZXIgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUuZGlzYWJsZWQsLmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpkaXNhYmxlZCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyLmRp''@;'; put 'put ''c2FibGVkLC5idG4uYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46ZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuLmRpc2FibGVkLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0''@;'; put 'put ''bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJ0bi1kYW5nZXItb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLWRhbmdlci1vdXRsaW5lLmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tZGFu''@;'; put 'put ''Z2VyLW91dGxpbmUuZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1kYW5nZXItb3V0bGluZTpkaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdl''@;'; put 'put ''ciAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWRhbmdlci1vdXRsaW5lOmRpc2FibGVkIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5idG46ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5n''@;'; put 'put ''ZXIuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1kYW5nZXItb3V0bGlu''@;'; put 'put ''ZSAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tZGFuZ2VyLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWRhbmdlci1vdXRsaW5lIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1kYW5nZXItb3V0bGluZSAuYnRuOmRpc2FibGVkIGNsci1pY29uLC5idG4tb3V0bGlu''@;'; put 'put ''ZS1kYW5nZXIgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtZGFuZ2VyIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1vdXRsaW5lLWRhbmdlciAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1kYW5nZXIgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYnRuLWRhbmdlci1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmUsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwtb3V0bGluZS5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1p''@;'; put 'put ''dGVtIC5idG4sLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLW5ldXRyYWwuYnRuLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5idG4sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAu''@;'; put 'put ''YnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0biwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuLC5idG4tb3V0bGluZS1uZXV0cmFsIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1p''@;'; put 'put ''dGVtIC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1u''@;'; put 'put ''ZXV0cmFsLW91dGxpbmUtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1dHJhbC1vdXRsaW5lLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0''@;'; put 'put ''biBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmUgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRyYWwtb3V0bGluZS5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24s''@;'; put 'put ''LmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5lLW5ldXRyYWwuYnRuIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbCBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4t''@;'; put 'put ''b3V0bGluZS1uZXV0cmFsLmJ0biBjbHItaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuIGNkcy1pY29uLC5idG4tbmV1dHJhbC1vdXRsaW5lIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbmV1''@;'; put 'put ''dHJhbC1vdXRsaW5lIC5idG4gY2RzLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0biBjbHItaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLW5ldXRy''@;'; put 'put ''YWwtb3V0bGluZSAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4gY2RzLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1vdXRsaW5l''@;'; put 'put ''LW5ldXRyYWwgLmJ0biBjZHMtaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuIGNsci1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tb3V0bGluZS1u''@;'; put 'put ''ZXV0cmFsIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bjpob3ZlciwuYnRuLmJ0bi1vdXRsaW5l''@;'; put 'put ''LW5ldXRyYWw6aG92ZXIsLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bjpob3ZlciwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbmV1''@;'; put 'put ''dHJhbC1vdXRsaW5lLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6aG92ZXIgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmhvdmVyIGNsci1p''@;'; put 'put ''Y29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWw6aG92ZXIgY2xyLWljb24sLmJ0bi1uZXV0cmFsLW91dGxp''@;'; put 'put ''bmUgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmhvdmVyIGNsci1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LW5ldXRyYWwtb3V0bGluZS1ob3Zlci1jb2xvcil9LmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bjphY3RpdmUsLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsOmFjdGl2ZSwuYnRuLW5ldXRyYWwtb3V0''@;'; put 'put ''bGluZSAuYnRuOmFjdGl2ZSwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtYWN0aXZlLWNvbG9yKX0u''@;'; put 'put ''YnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmU6YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxl''@;'; put 'put ''cnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmFjdGl2ZSBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWw6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDphY3RpdmUgY2xyLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bjphY3RpdmUgY2RzLWlj''@;'; put 'put ''b24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bjphY3RpdmUgY2xyLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUt''@;'; put 'put ''YWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmUuZGlzYWJsZWQsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQsLmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmRpc2FibGVkLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1''@;'; put 'put ''dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbC5kaXNhYmxlZCwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWw6ZGlzYWJsZWQsLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuOmRpc2Fi''@;'; put 'put ''bGVkLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4uZGlzYWJsZWQsLmJ0bi1vdXRsaW5lLW5ldXRyYWwgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1uZXV0cmFsLW91dGxpbmUtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLW5ldXRyYWwtb3V0bGluZS1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLW5ldXRyYWwtb3V0bGluZS5kaXNhYmxlZCBjZHMtaWNvbiwuYWxlcnQtYXBw''@;'; put 'put ''LWxldmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1uZXV0cmFsLW91dGxpbmUuZGlzYWJsZWQgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIC5hbGVydC1pdGVtIC5idG4uZGlzYWJsZWQgY2xyLWljb24s''@;'; put 'put ''LmJ0bi5idG4tbmV1dHJhbC1vdXRsaW5lOmRpc2FibGVkIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaXRlbSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLW5ldXRyYWwtb3V0bGluZTpkaXNhYmxlZCBjbHItaWNvbiwuYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsLmFsZXJ0LW5ldXRyYWwgLmFsZXJ0LWl0ZW0gLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWwuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tb3V0bGluZS1uZXV0cmFsLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLW91dGxpbmUtbmV1dHJhbDpk''@;'; put 'put ''aXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1vdXRsaW5lLW5ldXRyYWw6ZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW5ldXRyYWwtb3V0bGluZSAuYnRuLmRpc2FibGVkIGNsci1pY29uLC5idG4tbmV1dHJhbC1vdXRs''@;'; put 'put ''aW5lIC5idG46ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1uZXV0cmFsLW91dGxpbmUgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tb3V0bGluZS1uZXV0cmFsIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1v''@;'; put 'put ''dXRsaW5lLW5ldXRyYWwgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLW91dGxpbmUtbmV1dHJhbCAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbmV1dHJhbC1vdXRsaW5lLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1saW5rLC5hbGVydC1hcHAtbGV2ZWwg''@;'; put 'put ''LmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLmJ0biwuYnRuLWxpbmsgLmJ0biwuYnRuLWxpbmsgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1ib3Jk''@;'; put 'put ''ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY29sb3IpfS5idG4uYnRuLWxpbmsgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsuYnRuIGNkcy1pY29uLC5i''@;'; put 'put ''dG4uYnRuLWxpbmsgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsuYnRuIGNsci1pY29uLC5idG4tbGluayAuYnRuIGNkcy1pY29uLC5idG4tbGluayAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bCAuYWxlcnQtaXRlbSAuYnRuLWxpbmsgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0biBjbHItaWNvbiwuYnRuLWxpbmsgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rIC5idG4gY2xyLWlj''@;'; put 'put ''b257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yKX0uYnRuLmJ0bi1saW5rOmhvdmVyLC5idG4tbGluayAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3Ip''@;'; put 'put ''fS5idG4uYnRuLWxpbms6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tbGluazpob3ZlciBjbHItaWNvbiwuYnRuLWxpbmsgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3IpfS5idG4uYnRu''@;'; put 'put ''LWxpbms6YWN0aXZlLC5idG4tbGluayAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbms6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRu''@;'; put 'put ''LWxpbms6YWN0aXZlIGNsci1pY29uLC5idG4tbGluayAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay5kaXNhYmxlZCwuYnRuLmJ0bi1saW5rOmRpc2Fi''@;'; put 'put ''bGVkLC5idG4tbGluayAuYnRuLmRpc2FibGVkLC5idG4tbGluayAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJnLWNvbG9y''@;'; put 'put ''KTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWxpbms6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGlu''@;'; put 'put ''azpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmsgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmsgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmsgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWxpbmstZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWxpbmstcHJpbWFyeSwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1wcmltYXJ5LmJ0biwuYnRuLWxpbmstcHJpbWFyeSAuYnRuLC5idG4tbGluay1wcmltYXJ5IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0''@;'; put 'put ''LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1wcmltYXJ5IC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1iZy1j''@;'; put 'put ''b2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnktY29sb3IpfS5idG4uYnRuLWxpbmstcHJpbWFyeSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1wcmltYXJ5LmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXByaW1hcnkgY2xyLWlj''@;'; put 'put ''b24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstcHJpbWFyeS5idG4gY2xyLWljb24sLmJ0bi1saW5rLXByaW1hcnkgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstcHJpbWFyeSAuYnRuIGNkcy1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG4gY2xyLWljb24sLmJ0bi1saW5rLXByaW1hcnkgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFs''@;'; put 'put ''ZXJ0LWl0ZW0gLmJ0bi1saW5rLXByaW1hcnkgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5OmhvdmVyLC5idG4tbGluay1wcmltYXJ5IC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLWxpbmstcHJpbWFyeS1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnktaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstcHJpbWFyeTpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXByaW1hcnk6aG92ZXIgY2xyLWljb24sLmJ0bi1saW5rLXBy''@;'; put 'put ''aW1hcnkgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXByaW1hcnk6YWN0aXZlLC5idG4tbGluay1wcmltYXJ5IC5idG46YWN0''@;'; put 'put ''aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnktYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstcHJpbWFyeTphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluay1w''@;'; put 'put ''cmltYXJ5OmFjdGl2ZSBjbHItaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstcHJp''@;'; put 'put ''bWFyeS5kaXNhYmxlZCwuYnRuLmJ0bi1saW5rLXByaW1hcnk6ZGlzYWJsZWQsLmJ0bi1saW5rLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6''@;'; put 'put ''bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstcHJpbWFyeS1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1wcmltYXJ5LWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay1wcmltYXJ5LmRpc2Fi''@;'; put 'put ''bGVkIGNkcy1pY29uLC5idG4uYnRuLWxpbmstcHJpbWFyeS5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1saW5rLXByaW1hcnk6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1wcmltYXJ5OmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG4uZGlzYWJsZWQg''@;'; put 'put ''Y2RzLWljb24sLmJ0bi1saW5rLXByaW1hcnkgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstcHJpbWFyeSAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluay1wcmltYXJ5IC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXByaW1hcnkt''@;'; put 'put ''ZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLWxpbmstc3VjY2VzcywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1zdWNjZXNzLmJ0biwuYnRuLWxpbmstc3VjY2VzcyAuYnRuLC5idG4tbGluay1zdWNjZXNzIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwu''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1zdWNjZXNzIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtY29sb3IpfS5idG4uYnRuLWxpbmstc3VjY2VzcyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1zdWNjZXNzLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXN1Y2Nlc3MgY2xyLWljb24sLmFsZXJ0LWFw''@;'; put 'put ''cC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstc3VjY2Vzcy5idG4gY2xyLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxl''@;'; put 'put ''cnQtaXRlbSAuYnRuLWxpbmstc3VjY2VzcyAuYnRuIGNkcy1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG4gY2xyLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3MgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0''@;'; put 'put ''bi1saW5rLXN1Y2Nlc3MgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzOmhvdmVyLC5idG4tbGluay1zdWNjZXNzIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3Vj''@;'; put 'put ''Y2Vzcy1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstc3VjY2Vzczpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6aG92ZXIgY2xyLWljb24sLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bjpo''@;'; put 'put ''b3ZlciBjZHMtaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6YWN0aXZlLC5idG4tbGluay1zdWNjZXNzIC5idG46YWN0aXZle2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstc3VjY2VzczphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluay1zdWNjZXNzOmFjdGl2''@;'; put 'put ''ZSBjbHItaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstc3VjY2Vzcy5kaXNhYmxl''@;'; put 'put ''ZCwuYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6ZGlzYWJsZWQsLmJ0bi1saW5rLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstc3VjY2Vzcy1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1zdWNjZXNzLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay1zdWNjZXNzLmRpc2FibGVkIGNkcy1pY29u''@;'; put 'put ''LC5idG4uYnRuLWxpbmstc3VjY2Vzcy5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1saW5rLXN1Y2Nlc3M6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay1zdWNjZXNzOmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0''@;'; put 'put ''bi1saW5rLXN1Y2Nlc3MgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstc3VjY2VzcyAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluay1zdWNjZXNzIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXN1Y2Nlc3MtZGlzYWJsZWQtY29s''@;'; put 'put ''b3IpfS5idG4uYnRuLWxpbmstd2FybmluZywuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay13YXJuaW5nLmJ0biwuYnRuLWxpbmstd2FybmluZyAuYnRuLC5idG4tbGluay13YXJuaW5nIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biwuYWxlcnQtYXBwLWxl''@;'; put 'put ''dmVsIC5hbGVydC1pdGVtIC5idG4tbGluay13YXJuaW5nIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1saW5rLXdhcm5pbmctY29sb3IpfS5idG4uYnRuLWxpbmstd2FybmluZyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay13YXJuaW5nLmJ0biBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXdhcm5pbmcgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxl''@;'; put 'put ''cnQtaXRlbSAuYnRuLWxpbmstd2FybmluZy5idG4gY2xyLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRu''@;'; put 'put ''LWxpbmstd2FybmluZyAuYnRuIGNkcy1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG4gY2xyLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLXdhcm5p''@;'; put 'put ''bmcgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nOmhvdmVyLC5idG4tbGluay13YXJuaW5nIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1ob3Zlci1i''@;'; put 'put ''Zy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstd2FybmluZzpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLXdhcm5pbmc6aG92ZXIgY2xyLWljb24sLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bjpob3ZlciBjZHMtaWNv''@;'; put 'put ''biwuYnRuLWxpbmstd2FybmluZyAuYnRuOmhvdmVyIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLXdhcm5pbmc6YWN0aXZlLC5idG4tbGluay13YXJuaW5nIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstd2FybmluZzphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluay13YXJuaW5nOmFjdGl2ZSBjbHItaWNvbiwu''@;'; put 'put ''YnRuLWxpbmstd2FybmluZyAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1hY3RpdmUtY29sb3IpfS5idG4uYnRuLWxpbmstd2FybmluZy5kaXNhYmxlZCwuYnRuLmJ0bi1s''@;'; put 'put ''aW5rLXdhcm5pbmc6ZGlzYWJsZWQsLmJ0bi1saW5rLXdhcm5pbmcgLmJ0bi5kaXNhYmxlZCwuYnRuLWxpbmstd2FybmluZyAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItYnRuLWxpbmstd2FybmluZy1kaXNhYmxlZC1iZy1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4tbGluay13YXJuaW5nLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4tbGluay13YXJuaW5nLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWxp''@;'; put 'put ''bmstd2FybmluZy5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLmJ0bi1saW5rLXdhcm5pbmc6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4tbGluay13YXJuaW5nOmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG4uZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1saW5rLXdhcm5p''@;'; put 'put ''bmcgLmJ0bi5kaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstd2FybmluZyAuYnRuOmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluay13YXJuaW5nIC5idG46ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLXdhcm5pbmctZGlzYWJsZWQtY29sb3IpfS5idG4uYnRu''@;'; put 'put ''LWxpbmstZGFuZ2VyLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLWRhbmdlci5idG4sLmJ0bi1saW5rLWRhbmdlciAuYnRuLC5idG4tbGluay1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0g''@;'; put 'put ''LmJ0bi1saW5rLWRhbmdlciAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWNvbG9y''@;'; put 'put ''KX0uYnRuLmJ0bi1saW5rLWRhbmdlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1kYW5nZXIuYnRuIGNkcy1pY29uLC5idG4uYnRuLWxpbmstZGFuZ2VyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLWRhbmdl''@;'; put 'put ''ci5idG4gY2xyLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuIGNkcy1pY29uLC5idG4tbGluay1kYW5nZXIgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLWRhbmdlciAuYnRuIGNkcy1pY29u''@;'; put 'put ''LC5idG4tbGluay1kYW5nZXIgLmJ0biBjbHItaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1kYW5nZXIgLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWxpbmstZGFuZ2VyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLWRhbmdlcjpob3ZlciwuYnRuLWxpbmstZGFuZ2VyIC5idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmst''@;'; put 'put ''ZGFuZ2VyLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLWRhbmdlcjpob3ZlciBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLWRhbmdlcjpob3ZlciBjbHItaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuOmhvdmVyIGNsci1pY29u''@;'; put 'put ''e2NvbG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItaG92ZXItY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyOmFjdGl2ZSwuYnRuLWxpbmstZGFuZ2VyIC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRhbmdlci1hY3RpdmUtYmctY29sb3IpO2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1idG4tbGluay1kYW5nZXItYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1saW5rLWRhbmdlcjphY3RpdmUgY2RzLWljb24sLmJ0bi5idG4tbGluay1kYW5nZXI6YWN0aXZlIGNsci1pY29uLC5idG4tbGluay1kYW5nZXIgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1saW5r''@;'; put 'put ''LWRhbmdlciAuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4tbGluay1kYW5nZXIuZGlzYWJsZWQsLmJ0bi5idG4tbGluay1kYW5nZXI6ZGlzYWJsZWQsLmJ0bi1saW5rLWRhbmdlciAuYnRuLmRpc2FibGVk''@;'; put 'put ''LC5idG4tbGluay1kYW5nZXIgLmJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWJnLWNvbG9yKTtib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRhbmdlci1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLWxpbmstZGFuZ2VyLmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRuLWxpbmstZGFuZ2VyLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWxpbmstZGFuZ2VyOmRpc2FibGVk''@;'; put 'put ''IGNkcy1pY29uLC5idG4uYnRuLWxpbmstZGFuZ2VyOmRpc2FibGVkIGNsci1pY29uLC5idG4tbGluay1kYW5nZXIgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmstZGFuZ2VyIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1saW5rLWRhbmdlciAuYnRuOmRpc2FibGVkIGNkcy1p''@;'; put 'put ''Y29uLC5idG4tbGluay1kYW5nZXIgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGFuZ2VyLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstbmV1dHJhbC5idG4s''@;'; put 'put ''LmJ0bi1saW5rLW5ldXRyYWwgLmJ0biwuYnRuLWxpbmstbmV1dHJhbCAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWxpbmstbmV1dHJhbCAuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJh''@;'; put 'put ''bC1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWwgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQt''@;'; put 'put ''aXRlbSAuYnRuLWxpbmstbmV1dHJhbC5idG4gY2RzLWljb24sLmJ0bi5idG4tbGluay1uZXV0cmFsIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLW5ldXRyYWwuYnRuIGNsci1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG4gY2RzLWljb24sLmJ0bi1s''@;'; put 'put ''aW5rLW5ldXRyYWwgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLW5ldXRyYWwgLmJ0biBjZHMtaWNvbiwuYnRuLWxpbmstbmV1dHJhbCAuYnRuIGNsci1pY29uLC5idG4tbGluay1uZXV0cmFs''@;'; put 'put ''IC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4tbGluay1uZXV0cmFsIC5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJh''@;'; put 'put ''bDpob3ZlciwuYnRuLWxpbmstbmV1dHJhbCAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtaG92ZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWhvdmVyLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWw6''@;'; put 'put ''aG92ZXIgY2RzLWljb24sLmJ0bi5idG4tbGluay1uZXV0cmFsOmhvdmVyIGNsci1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG46aG92ZXIgY2RzLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1ob3Zl''@;'; put 'put ''ci1jb2xvcil9LmJ0bi5idG4tbGluay1uZXV0cmFsOmFjdGl2ZSwuYnRuLWxpbmstbmV1dHJhbCAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYWN0''@;'; put 'put ''aXZlLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWw6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLWxpbmstbmV1dHJhbDphY3RpdmUgY2xyLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjphY3RpdmUgY2RzLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjphY3RpdmUgY2xyLWljb257''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtYWN0aXZlLWNvbG9yKX0uYnRuLmJ0bi1saW5rLW5ldXRyYWwuZGlzYWJsZWQsLmJ0bi5idG4tbGluay1uZXV0cmFsOmRpc2FibGVkLC5idG4tbGluay1uZXV0cmFsIC5idG4uZGlzYWJsZWQsLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjpk''@;'; put 'put ''aXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstbmV1dHJhbC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLW5ldXRyYWwtZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LWxpbmstbmV1dHJhbC1kaXNhYmxlZC1ib3JkZXItY29sb3IpfS5idG4uYnRuLWxpbmstbmV1dHJhbC5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLmJ0bi1saW5rLW5ldXRyYWwuZGlzYWJsZWQgY2xyLWljb24sLmJ0bi5idG4tbGluay1uZXV0cmFsOmRpc2FibGVkIGNkcy1pY29uLC5idG4uYnRu''@;'; put 'put ''LWxpbmstbmV1dHJhbDpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWxpbmstbmV1dHJhbCAuYnRuLmRpc2FibGVkIGNkcy1pY29uLC5idG4tbGluay1uZXV0cmFsIC5idG4uZGlzYWJsZWQgY2xyLWljb24sLmJ0bi1saW5rLW5ldXRyYWwgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWxpbmst''@;'; put 'put ''bmV1dHJhbCAuYnRuOmRpc2FibGVkIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1uZXV0cmFsLWRpc2FibGVkLWNvbG9yKX0uYnRuLmJ0bi1pbnZlcnNlLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbnZlcnNlLmJ0biwuYnRuLWludmVyc2UgLmJ0biwuYnRu''@;'; put 'put ''LWludmVyc2UgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbnZlcnNlIC5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1pbnZlcnNlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY29sb3IpfS5idG4uYnRuLWludmVyc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWludmVyc2UuYnRuIGNkcy1pY29uLC5idG4uYnRuLWludmVyc2UgY2xyLWljb24s''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWludmVyc2UuYnRuIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuIGNkcy1pY29uLC5idG4taW52ZXJzZSAuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRl''@;'; put 'put ''bSAuYnRuLWludmVyc2UgLmJ0biBjZHMtaWNvbiwuYnRuLWludmVyc2UgLmJ0biBjbHItaWNvbiwuYnRuLWludmVyc2UgLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1pbnZlcnNlIC5idG4gY2xyLWlj''@;'; put 'put ''b257Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNvbG9yKX0uYnRuLmJ0bi1pbnZlcnNlOmhvdmVyLC5idG4taW52ZXJzZSAuYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVy''@;'; put 'put ''c2UtaG92ZXItY29sb3IpfS5idG4uYnRuLWludmVyc2U6aG92ZXIgY2RzLWljb24sLmJ0bi5idG4taW52ZXJzZTpob3ZlciBjbHItaWNvbiwuYnRuLWludmVyc2UgLmJ0bjpob3ZlciBjZHMtaWNvbiwuYnRuLWludmVyc2UgLmJ0bjpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRu''@;'; put 'put ''LWludmVyc2UtaG92ZXItY29sb3IpfS5idG4uYnRuLWludmVyc2U6YWN0aXZlLC5idG4taW52ZXJzZSAuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1hY3RpdmUtY29s''@;'; put 'put ''b3IpfS5idG4uYnRuLWludmVyc2U6YWN0aXZlIGNkcy1pY29uLC5idG4uYnRuLWludmVyc2U6YWN0aXZlIGNsci1pY29uLC5idG4taW52ZXJzZSAuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWludmVyc2UgLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNl''@;'; put 'put ''LWFjdGl2ZS1jb2xvcil9LmJ0bi5idG4taW52ZXJzZS5kaXNhYmxlZCwuYnRuLmJ0bi1pbnZlcnNlOmRpc2FibGVkLC5idG4taW52ZXJzZSAuYnRuLmRpc2FibGVkLC5idG4taW52ZXJzZSAuYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1kaXNhYmxlZC1jb2xvcik7''@;'; put 'put ''Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWRpc2FibGVkLWJvcmRlci1jb2xvcil9LmJ0bi5idG4taW52ZXJzZS5kaXNhYmxlZCBjZHMt''@;'; put 'put ''aWNvbiwuYnRuLmJ0bi1pbnZlcnNlLmRpc2FibGVkIGNsci1pY29uLC5idG4uYnRuLWludmVyc2U6ZGlzYWJsZWQgY2RzLWljb24sLmJ0bi5idG4taW52ZXJzZTpkaXNhYmxlZCBjbHItaWNvbiwuYnRuLWludmVyc2UgLmJ0bi5kaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWludmVyc2UgLmJ0bi5k''@;'; put 'put ''aXNhYmxlZCBjbHItaWNvbiwuYnRuLWludmVyc2UgLmJ0bjpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWludmVyc2UgLmJ0bjpkaXNhYmxlZCBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtZGlzYWJsZWQtY29sb3IpfS5idG4uYnRuLXNtLC5hbGVydC1hcHAtbGV2ZWwgLmFs''@;'; put 'put ''ZXJ0LWl0ZW0gLmJ0biwuYnRuLXNtIC5idG57Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtMSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzpjYWxjKC4yKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBl''@;'; put 'put ''YXJhbmNlLXN0YW5kYXJkLXBhZGRpbmcpfS5idG4tYmxvY2t7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5idG57bWFyZ2luOnZhcigtLWNsci1idG4tdmVydGljYWwtbWFyZ2luKSB2YXIoLS1jbHItYnRu''@;'; put 'put ''LWhvcml6b250YWwtbWFyZ2luKSB2YXIoLS1jbHItYnRuLXZlcnRpY2FsLW1hcmdpbikgMH0uYnRuLmJ0bi1saW5rLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bi1saW5rLmJ0bnttYXJnaW4tcmlnaHQ6MH0uYnRuLmJ0bi1saW5rLmJ0bi1pbnZlcnNle2JvcmRlci1jb2xvcjp0''@;'; put 'put ''cmFuc3BhcmVudH0uYnRuLXNtOm5vdCguYnRuLWxpbmspIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bjpub3QoLmJ0bi1saW5rKSBjbHItaWNvbnt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCxjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpLDApfS5i''@;'; put 'put ''dG4tc206bm90KC5idG4tbGluaykgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOm5vdCguYnRuLWxpbmspIGNsci1pY29uLC5idG4tc206bm90KC5idG4tbGluaykgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuOm5vdCguYnRuLWxp''@;'; put 'put ''bmspIGNkcy1pY29ue2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaWNvbi1zaXplKX0uYnRuLWljb257bWluLXdpZHRoOjB9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRv''@;'; put 'put ''d24tdG9nZ2xle2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNvbG9yKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10''@;'; put 'put ''b2dnbGUgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1jb2xvcil9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1saW5rLWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstaG92ZXItY29sb3IpfS5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6aG92ZXIgY2xyLWljb257''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWhvdmVyLWNvbG9yKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWFjdGl2''@;'; put 'put ''ZS1jb2xvcil9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tbGluay1hY3RpdmUtY29sb3IpfS5idG4tZ3JvdXAu''@;'; put 'put ''YnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZS5kaXNhYmxlZCwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYnRuLWxpbmstZGlzYWJsZWQtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGUuZGlzYWJsZWQgY2RzLWljb24sLmJ0bi1ncm91cC5idG4tbGluayAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLmRpc2FibGVkIGNsci1pY29uLC5idG4tZ3JvdXAuYnRuLWxpbmsgLmRyb3Bkb3duLXRvZ2dsZTpkaXNhYmxlZCBjZHMtaWNvbiwuYnRuLWdyb3VwLmJ0bi1saW5rIC5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5r''@;'; put 'put ''LWRpc2FibGVkLWNvbG9yKX0uYnRuLWdyb3VwLmJ0bi1zbSAuYnRuLWdyb3VwLW92ZXJmbG93Pi5kcm9wZG93bi10b2dnbGUsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYnRuLWdyb3VwLmJ0biAuYnRuLWdyb3VwLW92ZXJmbG93Pi5kcm9wZG93bi10b2dnbGV7Zm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtMSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzpjYWxjKC4yKigxcmVt''@;'; put 'put ''L3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7aGVpZ2h0OnZhcigtLWNsci1idG4tYXBwZWFyYW5jZS1zdGFuZGFyZC1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLWJ0bi1hcHBlYXJhbmNlLXN0YW5kYXJkLXBhZGRpbmcpfS5jaGVja2JveC5idG4s''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuLC5jaGVja2JveC1pbmxpbmUuYnRuLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4sLnJhZGlvLmJ0biwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5yYWRpby5idG4s''@;'; put 'put ''LnJhZGlvLWlubGluZS5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAucmFkaW8taW5saW5lLmJ0bntwYWRkaW5nOjB9LmNoZWNrYm94LmJ0biBsYWJlbCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4g''@;'; put 'put ''bGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbCwucmFkaW8uYnRuIGxhYmVsLC5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBsYWJlbCwucmFkaW8taW5saW5lLmJ0biBsYWJlbCwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''IC5hbGVydC1pdGVtIC5yYWRpby1pbmxpbmUuYnRuIGxhYmVse2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7YWxpZ24taXRlbXM6Y2VudGVyO3BsYWNlLWNvbnRlbnQ6Y2VudGVyOy13ZWJraXQtYXBwZWFyYW5jZTpub25l''@;'; put 'put ''IWltcG9ydGFudDtwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uY2hlY2tib3guYnRuLmRpc2FibGVkIGxhYmVsLC5jaGVja2JveC5idG46ZGlzYWJsZWQgbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uZGlzYWJsZWQgbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG46ZGlz''@;'; put 'put ''YWJsZWQgbGFiZWwsLnJhZGlvLmJ0bi5kaXNhYmxlZCBsYWJlbCwucmFkaW8uYnRuOmRpc2FibGVkIGxhYmVsLC5yYWRpby1pbmxpbmUuYnRuLmRpc2FibGVkIGxhYmVsLC5yYWRpby1pbmxpbmUuYnRuOmRpc2FibGVkIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2hlY2tib3guYnRuIGlu''@;'; put 'put ''cHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZSwuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVyLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZSwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBl''@;'; put 'put ''PWNoZWNrYm94XStsYWJlbDphZnRlcntjb250ZW50Om5vbmV9LnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDpiZWZvcmUsLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDphZnRlciwucmFkaW8taW5saW5lLmJ0biBpbnB1dFt0eXBlPXJhZGlvXStsYWJlbDpiZWZv''@;'; put 'put ''cmUsLnJhZGlvLWlubGluZS5idG4gaW5wdXRbdHlwZT1yYWRpb10rbGFiZWw6YWZ0ZXJ7Y29udGVudDpub25lfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh''@;'; put 'put ''YmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNo''@;'; put 'put ''ZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNr''@;'; put 'put ''ZWQ6aG92ZXIrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItY29sb3IpfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hl''@;'; put 'put ''Y2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWNvbG9yKX0uY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZl''@;'; put 'put ''K2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0aXZlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hl''@;'; put 'put ''Y2tlZC1hY3RpdmUtY29sb3IpfS5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5l''@;'; put 'put ''LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1h''@;'; put 'put ''Y3RpdmUtY29sb3IpfS5jaGVja2JveC5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uZGlzYWJsZWQgaW5wdXRb''@;'; put 'put ''dHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWJnLWNvbG9yKX0uY2hlY2tib3guYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''K2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGlu''@;'; put 'put ''ZS5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuOmRpc2FibGVkIGlu''@;'; put 'put ''cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xv''@;'; put 'put ''cil9LmNoZWNrYm94LmJ0biBsYWJlbCwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4gbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBsYWJlbHt3aWR0aDoxMDAl''@;'; put 'put ''fS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2ti''@;'; put 'put ''b3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBp''@;'; put 'put ''bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNr''@;'; put 'put ''Ym94LWlubGluZS5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNl''@;'; put 'put ''Y29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29u''@;'; put 'put ''ZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlu''@;'; put 'put ''bGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1i''@;'; put 'put ''Zy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24s''@;'; put 'put ''LmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5''@;'; put 'put ''LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGlu''@;'; put 'put ''ZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0''@;'; put 'put ''W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpj''@;'; put 'put ''aGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRb''@;'; put 'put ''dHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29u''@;'; put 'put ''LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5j''@;'; put 'put ''aGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHIt''@;'; put 'put ''aWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFi''@;'; put 'put ''ZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06''@;'; put 'put ''Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5l''@;'; put 'put ''IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGlu''@;'; put 'put ''ZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVj''@;'; put 'put ''a2JveC5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkt''@;'; put 'put ''b3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0''@;'; put 'put ''W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5w''@;'; put 'put ''dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hd''@;'; put 'put ''OmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVs''@;'; put 'put ''LC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJl''@;'; put 'put ''bCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFi''@;'; put 'put ''ZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpj''@;'; put 'put ''aGVja2VkOmhvdmVyK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWJnLWNvbG9yKTtjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3Zl''@;'; put 'put ''citsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1p''@;'; put 'put ''Y29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNk''@;'; put 'put ''cy1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3Zlcits''@;'; put 'put ''YWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3Zl''@;'; put 'put ''citsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNr''@;'; put 'put ''ZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRb''@;'; put 'put ''dHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0g''@;'; put 'put ''LmNoZWNrYm94LmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91''@;'; put 'put ''dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0''@;'; put 'put ''bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0''@;'; put 'put ''bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4u''@;'; put 'put ''YnRuLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlu''@;'; put 'put ''bGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0''@;'; put 'put ''W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWlu''@;'; put 'put ''Zm8tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNs''@;'; put 'put ''ci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4gaW5wdXRbdHlw''@;'; put 'put ''ZT1jaGVja2JveF06Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5m''@;'; put 'put ''byBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhvdmVyLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUr''@;'; put 'put ''bGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnkt''@;'; put 'put ''b3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5w''@;'; put 'put ''dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6''@;'; put 'put ''YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUr''@;'; put 'put ''bGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3Rp''@;'; put 'put ''dmUrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3Rp''@;'; put 'put ''dmUrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVj''@;'; put 'put ''a2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25k''@;'; put 'put ''YXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvIGlucHV0W3R5''@;'; put 'put ''cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpj''@;'; put 'put ''aGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVj''@;'; put 'put ''a2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1''@;'; put 'put ''dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUg''@;'; put 'put ''aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94''@;'; put 'put ''LmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xh''@;'; put 'put ''YmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFi''@;'; put 'put ''ZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0''@;'; put 'put ''aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZl''@;'; put 'put ''K2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0''@;'; put 'put ''aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFy''@;'; put 'put ''eS1vdXRsaW5lIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlu''@;'; put 'put ''bGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+''@;'; put 'put ''Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hl''@;'; put 'put ''Y2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1p''@;'; put 'put ''bmZvLW91dGxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWN0aXZlK2xhYmVs''@;'; put 'put ''PmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2Vk''@;'; put 'put ''OmFjdGl2ZStsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNl''@;'; put 'put ''Y29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hl''@;'; put 'put ''Y2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRu''@;'; put 'put ''LmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4t''@;'; put 'put ''b3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1z''@;'; put 'put ''ZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZS5k''@;'; put 'put ''aXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3guYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LmJ0bi5idG4taW5mby1v''@;'; put 'put ''dXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0''@;'; put 'put ''bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25k''@;'; put 'put ''YXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLmRpc2FibGVk''@;'; put 'put ''IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNo''@;'; put 'put ''ZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlw''@;'; put 'put ''ZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlu''@;'; put 'put ''cHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNh''@;'; put 'put ''YmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUu''@;'; put 'put ''ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5l''@;'; put 'put ''LmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCts''@;'; put 'put ''YWJlbHtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1iZy1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0''@;'; put 'put ''W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5''@;'; put 'put ''cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHIt''@;'; put 'put ''aWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwu''@;'; put 'put ''Y2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5j''@;'; put 'put ''bHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVj''@;'; put 'put ''a2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCBp''@;'; put 'put ''bnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpk''@;'; put 'put ''aXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUt''@;'; put 'put ''c2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRu''@;'; put 'put ''LmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24s''@;'; put 'put ''LmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LmJ0bi5k''@;'; put 'put ''aXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAu''@;'; put 'put ''YWxlcnQtaXRlbSAuY2hlY2tib3guYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06''@;'; put 'put ''Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2Jv''@;'; put 'put ''eF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQg''@;'; put 'put ''aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8uZGlz''@;'; put 'put ''YWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvOmRp''@;'; put 'put ''c2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGlu''@;'; put 'put ''ZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRu''@;'; put 'put ''LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUu''@;'; put 'put ''YnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2Rz''@;'; put 'put ''LWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXByaW1hcnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVj''@;'; put 'put ''a2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxp''@;'; put 'put ''bmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5s''@;'; put 'put ''aW5lLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFi''@;'; put 'put ''ZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgaW5wdXRbdHlw''@;'; put 'put ''ZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vj''@;'; put 'put ''b25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94''@;'; put 'put ''LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNr''@;'; put 'put ''ZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5l''@;'; put 'put ''LmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''LmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLmNoZWNrYm94LWlubGluZS5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hd''@;'; put 'put ''OmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5jaGVja2JveC1pbmxpbmUuYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWlu''@;'; put 'put ''Zm8tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAuY2hlY2tib3gtaW5saW5lLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xh''@;'; put 'put ''YmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hl''@;'; put 'put ''Y2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJs''@;'; put 'put ''ZWQgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsLC5jaGVj''@;'; put 'put ''a2JveC1pbmxpbmUuYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXByaW1hcnktY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtY29sb3IpfS5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLXByaW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3guYnRuLmJ0bi1wcmltYXJ5IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXBy''@;'; put 'put ''aW1hcnkgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jaGVja2VkLWNv''@;'; put 'put ''bG9yKX0uY2hlY2tib3guYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4t''@;'; put 'put ''c3VjY2Vzcy1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC5idG4uYnRuLXN1Y2Nlc3Mg''@;'; put 'put ''aW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9''@;'; put 'put ''Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4td2Fy''@;'; put 'put ''bmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5nLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi13YXJuaW5n''@;'; put 'put ''IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi13YXJuaW5nIGlucHV0W3R5cGU9Y2hlY2ti''@;'; put 'put ''b3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4t''@;'; put 'put ''ZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY2hlY2tlZC1iZy1jb2xvcik7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQr''@;'; put 'put ''bGFiZWw+Y2RzLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWRhbmdlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNv''@;'; put 'put ''bntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWwsLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJl''@;'; put 'put ''bHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tbGluay1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY2hlY2tlZC1jb2xvcil9LmNoZWNrYm94LmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5j''@;'; put 'put ''aGVja2JveC5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuY2hlY2tib3gtaW5saW5lLmJ0bi5idG4tbGluayBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1s''@;'; put 'put ''aW5rIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1saW5rLWNoZWNrZWQtY29sb3IpfS5jaGVja2JveC5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbCwuY2hlY2tib3gtaW5saW5l''@;'; put 'put ''LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1pbnZlcnNlLWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWNvbG9yKX0uY2hlY2tib3guYnRu''@;'; put 'put ''LmJ0bi1pbnZlcnNlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5jaGVja2JveC1pbmxpbmUuYnRuLmJ0bi1pbnZlcnNlIGlucHV0''@;'; put 'put ''W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmNoZWNrYm94LWlubGluZS5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY2hlY2tlZC1jb2xvcil9LnJhZGlv''@;'; put 'put ''LmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9d''@;'; put 'put ''OmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFi''@;'; put 'put ''ZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItY29sb3IpfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5j''@;'; put 'put ''bHItaWNvbiwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtaG92ZXItY29sb3IpfS5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWx7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5j''@;'; put 'put ''bHItaWNvbiwucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1jb2xvcil9LnJhZGlvLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xh''@;'; put 'put ''YmVsLC5yYWRpby5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1i''@;'; put 'put ''Zy1jb2xvcil9LnJhZGlvLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9cmFk''@;'; put 'put ''aW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bjpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWRpc2FibGVkLWNvbG9yKX0ucmFkaW8uYnRuIGxhYmVsLC5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBsYWJlbHt3aWR0aDoxMDAlfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8u''@;'; put 'put ''YnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGlu''@;'; put 'put ''ZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNo''@;'; put 'put ''ZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xh''@;'; put 'put ''YmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvIGlucHV0''@;'; put 'put ''W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwu''@;'; put 'put ''cmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRh''@;'; put 'put ''cnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCts''@;'; put 'put ''YWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1v''@;'; put 'put ''dXRsaW5lLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLnJhZGlv''@;'; put 'put ''LmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZDpob3ZlcitsYWJlbCwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsLC5yYWRpby5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWwsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1p''@;'; put 'put ''dGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2Vk''@;'; put 'put ''LWhvdmVyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1ob3Zlci1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlu''@;'; put 'put ''cHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3Zlcits''@;'; put 'put ''YWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4u''@;'; put 'put ''YnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLXNlY29u''@;'; put 'put ''ZGFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXBy''@;'; put 'put ''aW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSBp''@;'; put 'put ''bnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lIGlucHV0W3R5cGU9''@;'; put 'put ''cmFkaW9dOmNoZWNrZWQ6aG92ZXIrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5w''@;'; put 'put ''dXRbdHlwZT1yYWRpb106Y2hlY2tlZDpob3ZlcitsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUt''@;'; put 'put ''aW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmhvdmVyK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWhv''@;'; put 'put ''dmVyLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2''@;'; put 'put ''ZStsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWwsLnJhZGlvLmJ0bi5idG4t''@;'; put 'put ''aW5mby1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUt''@;'; put 'put ''aW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGVmYXVsdC1jaGVja2VkLWFjdGl2ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kZWZhdWx0LWNoZWNrZWQtYWN0aXZlLWNvbG9yKX0ucmFkaW8u''@;'; put 'put ''YnRuLmJ0bi1zZWNvbmRhcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8gaW5wdXRb''@;'; put 'put ''dHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZl''@;'; put 'put ''K2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeS1vdXRsaW5lIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29u''@;'; put 'put ''LC5yYWRpby5idG4uYnRuLXByaW1hcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwucmFk''@;'; put 'put ''aW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXByaW1hcnkgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0''@;'; put 'put ''bi5idG4tb3V0bGluZS1wcmltYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRu''@;'; put 'put ''LW91dGxpbmUtc2Vjb25kYXJ5IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0''@;'; put 'put ''LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1s''@;'; put 'put ''ZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphY3RpdmUrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1pbmZvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQ6YWN0aXZlK2xhYmVsPmNsci1pY29uLC5y''@;'; put 'put ''YWRpby5idG4uYnRuLW91dGxpbmUtaW5mbyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOmFjdGl2ZStsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1hY3RpdmUtY29sb3IpfS5yYWRpby5idG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCBpbnB1dFt0''@;'; put 'put ''eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0''@;'; put 'put ''bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRu''@;'; put 'put ''LmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLXNlY29uZGFyeS1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmlt''@;'; put 'put ''YXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQgaW5wdXRb''@;'; put 'put ''dHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xh''@;'; put 'put ''YmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWws''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwucmFk''@;'; put 'put ''aW8uYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1k''@;'; put 'put ''aXNhYmxlZC1iZy1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWlj''@;'; put 'put ''b24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5i''@;'; put 'put ''dG4taW5mby5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvOmRpc2FibGVkIGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mbzpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJl''@;'; put 'put ''bD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5i''@;'; put 'put ''dG4uYnRuLW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmlt''@;'; put 'put ''YXJ5LW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1wcmltYXJ5''@;'; put 'put ''LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRhcnktb3V0bGluZS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXNlY29uZGFy''@;'; put 'put ''eS1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4tc2Vjb25kYXJ5LW91dGxpbmU6ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zZWNvbmRh''@;'; put 'put ''cnktb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUt''@;'; put 'put ''cHJpbWFyeS5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtcHJp''@;'; put 'put ''bWFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1zZWNv''@;'; put 'put ''bmRhcnkuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc2Vj''@;'; put 'put ''b25kYXJ5OmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lLmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5h''@;'; put 'put ''bGVydC1pdGVtIC5yYWRpby5idG4uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1pbmZvLW91dGxpbmUuZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''LmFsZXJ0LWluZm8gLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0bi5kaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLWluZm8tb3V0bGluZTpkaXNhYmxlZCBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4taW5mby1vdXRsaW5lOmRpc2FibGVkIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFi''@;'; put 'put ''ZWw+Y2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pdGVtIC5yYWRpby5idG46ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRp''@;'; put 'put ''b106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tl''@;'; put 'put ''ZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1bHQtY2hlY2tlZC1kaXNhYmxlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tcHJp''@;'; put 'put ''bWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1wcmltYXJ5LWNoZWNrZWQtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1wcmltYXJ5IGlucHV0''@;'; put 'put ''W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tcHJpbWFyeSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tcHJpbWFyeS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zdWNjZXNz''@;'; put 'put ''IGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXN1Y2Nlc3MtY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXN1Y2Nlc3MgaW5wdXRbdHlw''@;'; put 'put ''ZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zdWNjZXNzIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLXdhcm5pbmcgaW5w''@;'; put 'put ''dXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4td2FybmluZy1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4td2FybmluZyBpbnB1dFt0eXBlPXJh''@;'; put 'put ''ZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tZGFuZ2VyIGlucHV0W3R5''@;'; put 'put ''cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hl''@;'; put 'put ''Y2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWRhbmdlci1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgaW5wdXRbdHlw''@;'; put 'put ''ZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2Vk''@;'; put 'put ''K2xhYmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1zdWNjZXNzLW91dGxpbmUtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tc3VjY2Vzcy1vdXRsaW5lIGlucHV0W3R5cGU9''@;'; put 'put ''cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1zdWNjZXNzLW91dGxpbmUgaW5wdXRbdHlw''@;'; put 'put ''ZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0''@;'; put 'put ''eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtc3VjY2VzcyBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1vdXRsaW5lLWNoZWNrZWQtY29sb3IpfS5yYWRpby5i''@;'; put 'put ''dG4uYnRuLXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS13''@;'; put 'put ''YXJuaW5nIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLXdhcm5pbmctb3V0bGluZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRu''@;'; put 'put ''LmJ0bi13YXJuaW5nLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWl0ZW0gLnJhZGlvLmJ0biBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5i''@;'; put 'put ''dG4uYnRuLXdhcm5pbmctb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb24sLnJhZGlv''@;'; put 'put ''LmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2xyLWljb24sLnJhZGlvLmJ0bi5idG4tb3V0bGluZS13YXJuaW5nIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0bi13YXJuaW5n''@;'; put 'put ''LW91dGxpbmUtY2hlY2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4tZGFuZ2VyLW91dGxpbmUgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbCwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtaXRlbSAucmFkaW8uYnRuIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQr''@;'; put 'put ''bGFiZWwsLnJhZGlvLmJ0bi5idG4tb3V0bGluZS1kYW5nZXIgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tZGFuZ2VyLW91dGxpbmUtY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGlu''@;'; put 'put ''ZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tl''@;'; put 'put ''ZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1kYW5nZXItb3V0bGluZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1pdGVtIC5yYWRpby5idG4gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tl''@;'; put 'put ''ZCtsYWJlbD5jZHMtaWNvbiwucmFkaW8uYnRuLmJ0bi1vdXRsaW5lLWRhbmdlciBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLW91dGxpbmUtZGFuZ2VyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJ0bi1kYW5nZXItb3V0bGluZS1jaGVja2VkLWNvbG9yKX0ucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWx7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYnRuLWxpbmstY2hlY2tlZC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJ0bi1saW5rLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLWxpbmsgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jbHItaWNvbiwucmFkaW8uYnRuLmJ0bi1saW5rIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrbGFiZWw+Y2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWJ0''@;'; put 'put ''bi1saW5rLWNoZWNrZWQtY29sb3IpfS5yYWRpby5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4taW52ZXJzZS1jaGVja2VkLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYnRuLWludmVyc2UtY2hl''@;'; put 'put ''Y2tlZC1jb2xvcil9LnJhZGlvLmJ0bi5idG4taW52ZXJzZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkK2xhYmVsPmNsci1pY29uLC5yYWRpby5idG4uYnRuLWludmVyc2UgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCtsYWJlbD5jZHMtaWNvbntjb2xvcjp2YXIoLS1jbHItYnRuLWludmVy''@;'; put 'put ''c2UtY2hlY2tlZC1jb2xvcil9LmJ0bi1ncm91cHtkaXNwbGF5OmlubGluZS1mbGV4O21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5idG4tZ3JvdXAgY2xyLWRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXAgY2xyLWRyb3Bk''@;'; put 'put ''b3duOmxhc3QtY2hpbGQgLmRyb3Bkb3duLXRvZ2dsZXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMpO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci1idG4tYm9yZGVyLXJhZGl1cyl9LmJ0bi1ncm91cCAuYnRue21hcmdpbjow''@;'; put 'put ''O292ZXJmbG93OmhpZGRlbn0uYnRuLWdyb3VwIC5idG4gbGFiZWx7aGVpZ2h0OjEwMCV9LmJ0bi1ncm91cCAuYnRuIGlucHV0W3R5cGU9cmFkaW9dOmhvdmVyLC5idG4tZ3JvdXAgLmJ0biBpbnB1dFt0eXBlPWNoZWNrYm94XTpob3ZlcnthcHBlYXJhbmNlOm5vbmU7b3BhY2l0eToxO3RvcDow''@;'; put 'put ''O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSl9LmJ0bi1ncm91cCAuYnRuIGlucHV0W3R5cGU9cmFkaW9dOmhvdmVyOjotbXMtY2hlY2ssLmJ0bi1ncm91cCAuYnRuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmhv''@;'; put 'put ''dmVyOjotbXMtY2hlY2t7ZGlzcGxheTpub25lfS5idG4tZ3JvdXAgLmJ0bjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAgLmJ0bjpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQt''@;'; put 'put ''cmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uYnRuLWdyb3VwIC5idG46ZGlzYWJsZWQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmlnaHQ6bm9uZX0uYnRuLWdyb3VwIC50b29sdGlwOm5vdCg6Zmlyc3QtY2hpbGQpIC5idG57Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czow''@;'; put 'put ''O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCkgLmJ0bntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmJ0bi1ncm91cC5idG4tcHJpbWFyeSAudG9vbHRpcDpub3QoOmxh''@;'; put 'put ''c3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cC5idG4tcHJpbWFyeT4uYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4tbmV1dHJhbCAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cC5idG4tbmV1dHJhbD4uYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1n''@;'; put 'put ''cm91cC5idG4tc3VjY2VzcyAudG9vbHRpcDpub3QoOmxhc3QtY2hpbGQpPi5idG4sLmJ0bi1ncm91cC5idG4tc3VjY2Vzcz4uYnRuOm5vdCg6bGFzdC1jaGlsZCksLmJ0bi1ncm91cC5idG4tZGFuZ2VyIC50b29sdGlwOm5vdCg6bGFzdC1jaGlsZCk+LmJ0biwuYnRuLWdyb3VwLmJ0bi1kYW5n''@;'; put 'put ''ZXI+LmJ0bjpub3QoOmxhc3QtY2hpbGQpLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmcgLnRvb2x0aXA6bm90KDpsYXN0LWNoaWxkKT4uYnRuLC5idG4tZ3JvdXAuYnRuLXdhcm5pbmc+LmJ0bjpub3QoOmxhc3QtY2hpbGQpe21hcmdpbjowIHZhcigtLWNsci1idG4tYm9yZGVyLXdpZHRoKSAwIDB9''@;'; put 'put ''LmJ0bi1ncm91cD4uYnRuLWdyb3VwLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS5idG4tZ3JvdXA+LmJ0bi1ncm91cC1vdmVyZmxvdzpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowIHZhcigtLWNsci1idG4tYm9yZGVyLXJh''@;'; put 'put ''ZGl1cykgdmFyKC0tY2xyLWJ0bi1ib3JkZXItcmFkaXVzKSAwfS5idG4tZ3JvdXA+LmJ0bi1ncm91cC1vdmVyZmxvdzpsYXN0LWNoaWxkOmZpcnN0LWNoaWxkPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItYnRuLWJvcmRlci1yYWRpdXMpfS5idG4tZ3JvdXAgLmJ0''@;'; put 'put ''bjpub3QoW2Rpc2FibGVkXSkrLmJ0bntib3JkZXItbGVmdDpub25lfS5idG4tZ3JvdXAgLnRvb2x0aXA6bm90KDpmaXJzdC1jaGlsZCkgLmJ0bntib3JkZXItbGVmdDpub25lfS5idG4tZ3JvdXAgLmJ0bjpub3QoW2Rpc2FibGVkXSkrLmJ0bi1ncm91cC1vdmVyZmxvdyAuYnRue2JvcmRlci1s''@;'; put 'put ''ZWZ0Om5vbmV9LmJ0bi1ncm91cC5idG4tbGluayAuZHJvcGRvd24tdG9nZ2xlLC5idG4tZ3JvdXAuYnRuLWljb24tbGluay5idG4tbGluayAuYnRuLC5idG4tZ3JvdXAuYnRuLWljb24gLmJ0bnttaW4td2lkdGg6MH0uYnRuLWdyb3VwIC5jbHItaWNvbi10aXRsZXtkaXNwbGF5Om5vbmU7dGV4''@;'; put 'put ''dC10cmFuc2Zvcm06bm9uZX0uYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGV7ZGlzcGxheTpibG9ja30uYnRuLWdyb3VwIC5kcm9wZG93bi1tZW51IGNkcy1pY29uLC5idG4tZ3JvdXAgLmRyb3Bkb3duLW1lbnUgY2xyLWljb257ZGlzcGxheTpub25lfS5idG4tZ3JvdXAgLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmNsci1pY29uLXRpdGxle2Rpc3BsYXk6aW5saW5lfS5jaGVja2JveCwucmFkaW97cG9zaXRpb246cmVsYXRpdmV9LmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLC5jaGVja2JveCBpbnB1dFt0eXBlPXJhZGlvXSwucmFkaW8gaW5wdXRbdHlwZT1jaGVja2JveF0sLnJhZGlvIGlu''@;'; put 'put ''cHV0W3R5cGU9cmFkaW9de2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MDt3aWR0aDowO29wYWNpdHk6MH0uZHJvcGRvd24tbWVudS5jbHItYnV0dG9uLWdyb3VwLW1lbnV7dmlzaWJpbGl0eTp2aXNpYmxlfWJ1dHRvbi5jbG9zZXtwYWRkaW5n''@;'; put 'put ''OjA7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjhyZW07dHJhbnNpdGlvbjpjb2xvciBsaW5lYXIgLjJzO2ZvbnQtd2VpZ2h0OjIwMDt0ZXh0LXNoYWRvdzpub25lO2xp''@;'; put 'put ''bmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6dmFyKC0tY2xyLWNsb3NlLWNvbG9yKX0uY2xvc2UgY2RzLWljb24sLmNsb3NlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWNsb3NlLWNvbG9yKX0uY2xvc2U6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWNsb3NlLWNvbG9yLWhvdmVyKX0uY2xvc2U6aG92''@;'; put 'put ''ZXIgY2RzLWljb24sLmNsb3NlOmhvdmVyIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWNsb3NlLWNvbG9yLWhvdmVyKX0uY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1jbG9zZS1jb2xvci1hY3RpdmUpfS5jbG9zZTphY3RpdmUgY2RzLWljb24sLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntm''@;'; put 'put ''aWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci1hY3RpdmUpfS5jbG9zZTpmb2N1c3tvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSk7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCl9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItYWxlcnQtYm9yZGVycmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLWFwcC1hbGVydC1wYWdlci13aWR0aDpjYWxjKDE0NCAqICgx''@;'; put 'put ''cmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xv''@;'; put 'put ''ci1hY3RpdmUpOy0tY2xyLWFsZXJ0LWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1jb2xvcik7LS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWFjdGl2ZS1jb2xvcik7LS1jbHItYXBwLWxldmVsLWFsZXJ0LWNv''@;'; put 'put ''bG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2xyLWFwcC1hbGVydC1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtbGV2ZWwtYWxlcnQtY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXRpbnQpOy0tY2xy''@;'; put 'put ''LWFsZXJ0LWluZm8tZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWFsZXJ0LWluZm8tYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbyk7LS1jbHItYWxlcnQtaW5mby1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1p''@;'; put 'put ''bmZvLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yKTstLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9yKTstLWNsci1hbGVydC1pbmZvLWFj''@;'; put 'put ''dGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcjp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MtdGludCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNj''@;'; put 'put ''ZXNzKTstLWNsci1hbGVydC1zdWNjZXNzLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3Mt''@;'; put 'put ''YWN0aW9uLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYWxlcnQtYWN0aW9uLWFjdGl2ZS1jb2xvcik7LS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKTstLWNsci1hbGVydC13YXJuaW5nLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtd2FybmluZy10aW50KTstLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1i''@;'; put 'put ''bGFjayk7LS1jbHItYWxlcnQtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy13YXJuaW5nKTstLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1p''@;'; put 'put ''Y29uLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YWxlcnQtYWN0aW9uLWFjdGl2ZS1jb2xvcik7LS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlci10''@;'; put 'put ''aW50KTstLWNsci1hbGVydC1kYW5nZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWFsZXJ0LWRhbmdlci1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWFsZXJ0LWRhbmdlci1pY29uLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci1hbGVydC1kYW5nZXItZm9udC1jb2xvcik7LS1jbHItYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItZm9u''@;'; put 'put ''dC1jb2xvcik7LS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWFjdGlvbi1hY3RpdmUtY29sb3IpOy0tY2xyLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1jbG9zZS1pY29uLWhvdmVyLWNvbG9y''@;'; put 'put ''KTstLWNsci1hbGVydC1uZXV0cmFsLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC10aW50KTstLWNsci1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1hbGVydC1uZXV0cmFsLWJvcmRlci1j''@;'; put 'put ''b2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwpOy0tY2xyLWFsZXJ0LW5ldXRyYWwtaWNvbi1jb2xvcjp2YXIoLS1jbHItYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKTstLWNsci1hbGVydC1uZXV0cmFsLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwt''@;'; put 'put ''Zm9udC1jb2xvcik7LS1jbHItYWxlcnQtbmV1dHJhbC1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7LS1jbHItYWxlcnQtbmV1dHJhbC1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hbGVydC1hY3Rpb24tYWN0aXZlLWNvbG9yKTstLWNsci1h''@;'; put 'put ''bGVydC1uZXV0cmFsLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWNsb3NlLWljb24taG92ZXItY29sb3IpOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtaW5mbyk7LS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWFwcC1hbGVydC1pbmZvLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1p''@;'; put 'put ''bmZvLWFjdGlvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYmctY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLXN0YXR1cy13YXJuaW5nKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWJvcmRlci1jb2xvcjpub25lOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWljb24tY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNv''@;'; put 'put ''bG9yLTEwMCk7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWljb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''YXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0''@;'; put 'put ''YXR1cy1zdWNjZXNzKTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOm5vbmU7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtZm9udC1jb2xvcik7LS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tYWN0aXZlLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yOnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLW5ldXRyYWwpOy0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt''@;'; put 'put ''Y29sb3ItMTAwKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1ib3JkZXItY29sb3I6bm9uZTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1pY29uLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1jbG9zZS1pY29uLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKTstLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1hY3Rpb24tY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWFjdGlvbi1hY3RpdmUtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWNsb3NlLWljb24taG92ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpOy0tY2xyLWFwcC1hbGVydC1wYWdlci10ZXh0LWNvbG9yOnZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItYXBwLWFsZXJ0LWluZm8tcGFnZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvLXNoYWRlKTstLWNsci1hcHAtYWxlcnQtd2FybmluZy1wYWdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVz''@;'; put 'put ''LXdhcm5pbmctc2hhZGUpOy0tY2xyLWFwcC1hbGVydC1kYW5nZXItcGFnZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItc2hhZGUpOy0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLXBhZ2VyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcy1zaGFk''@;'; put 'put ''ZSk7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtcGFnZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsLXNoYWRlKTstLWNsci1hcHAtYWxlcnQtaW5mby1wYWdlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYXBw''@;'; put 'put ''LWFsZXJ0LXdhcm5pbmctcGFnZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsYWNrKTstLWNsci1hcHAtYWxlcnQtZGFuZ2VyLXBhZ2VyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1w''@;'; put 'put ''YWdlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtcGFnZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWluZm8taWNv''@;'; put 'put ''bi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8pOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWluZm8tZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXdhcm5pbmctaWNvbi1jb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmctZGFyayk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtZGFuZ2VyLWljb24tY29sb3I6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMt''@;'; put 'put ''c3VjY2Vzcyk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtbmV1dHJhbC1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC1z''@;'; put 'put ''aGFkZSk7LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCl9LmFsZXJ0LWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtt''@;'; put 'put ''aW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmFsZXJ0LWljb24td3JhcHBlcntkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXg6MCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmFsZXJ0LWl0ZW17ZmxleDox''@;'; put 'put ''IDEgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCl9LmFsZXJ0LWl0ZW1ze2ZsZXg6MSAxIGF1dG87ZmxleC1mbG93OmNvbHVtbiBub3dyYXA7cGFkZGluZzp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDA7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7ZGlzcGxheTpmbGV4fS5hbGVydC1pdGVtPnNwYW4sLmFsZXJ0LXRleHR7ZmxleDoxIDE7dGV4dC1hbGlnbjpsZWZ0O2FsaWduLXNlbGY6Y2VudGVyfS5hbGVydHtmb250LXNpemU6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC1zaXplLTMpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6Y2FsYygyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bGV0dGVyLXNwYWNpbmc6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aWR0aDphdXRvO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWFsZXJ0LWJvcmRlcnJhZGl1cyk7cGFkZGlu''@;'; put 'put ''ZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZv''@;'; put 'put ''LWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1pbmZvLWJvcmRlci1jb2xvcil9LmFsZXJ0IGF7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0IC5hbGVydC1p''@;'; put 'put ''Y29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWljb24tY29sb3IpfS5hbGVydCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5m''@;'; put 'put ''by1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9y''@;'; put 'put ''ZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0IC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydCAuZHJv''@;'; put 'put ''cGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydCAuZHJvcGRvd24tdG9nZ2xlLmJ0bjph''@;'; put 'put ''Y3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNkcy1pY29uLC5hbGVydCAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2xyLWljb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBj''@;'; put 'put ''ZHMtaWNvbiwuYWxlcnQgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0IC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQgLmNsb3Nl''@;'; put 'put ''IGNkcy1pY29uLC5hbGVydCAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQgLmNsb3NlOmZvY3VzLC5hbGVydCAuY2xvc2U6aG92ZXIsLmFsZXJ0IC5jbG9zZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8t''@;'; put 'put ''Y2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0IC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydCAuY2xvc2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0IC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQgLmNsb3NlOmFjdGl2ZSBjZHMt''@;'; put 'put ''aWNvbiwuYWxlcnQgLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5hbGVydC1pbmZve2JhY2tncm91bmQ6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC1pbmZvLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1pbmZvLWJvcmRlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gYXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1mb250LWNvbG9y''@;'; put 'put ''KX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24t''@;'; put 'put ''Y29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNv''@;'; put 'put ''bG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29s''@;'; put 'put ''b3IpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9w''@;'; put 'put ''ZG93bi10b2dnbGUuYnRuIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtaW5mbyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRv''@;'; put 'put ''Z2dsZS5idG46YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtaW5mby1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmZv''@;'; put 'put ''Y3VzLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciwuYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQu''@;'; put 'put ''YWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWluZm8gLmNsb3NlOmhvdmVyIGNkcy1pY29uLC5hbGVydC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQuYWxlcnQtaW5mbyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVy''@;'; put 'put ''dC1pbmZvIC5jbG9zZTphY3RpdmUgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtc3VjY2Vzcy1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIGF7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nl''@;'; put 'put ''c3MtZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWFjdGlv''@;'; put 'put ''bi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjbHItaWNvbiwuYWxlcnQuYWxlcnQtc3Vj''@;'; put 'put ''Y2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmFjdGl2ZSwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0''@;'; put 'put ''LmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2V7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNkcy1pY29uLC5hbGVydC5h''@;'; put 'put ''bGVydC1zdWNjZXNzIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3Mg''@;'; put 'put ''LmNsb3NlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6Zm9jdXMgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC5hbGVy''@;'; put 'put ''dC1zdWNjZXNzIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6aG92ZXIgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2Zp''@;'; put 'put ''bGw6dmFyKC0tY2xyLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmd7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcik7Ym9yZGVy''@;'; put 'put ''OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyBhe2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpfS5hbGVydC5hbGVydC13''@;'; put 'put ''YXJuaW5nIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWljb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb25zIC5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xv''@;'; put 'put ''cik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1h''@;'; put 'put ''Y3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuLC5hbGVydC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVy''@;'; put 'put ''dC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG4gY2xyLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2Rz''@;'; put 'put ''LWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUsLmFsZXJ0LmFsZXJ0LXdhcm5p''@;'; put 'put ''bmcgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24u''@;'; put 'put ''YnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5n''@;'; put 'put ''LWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2UgY2xyLWljb257''@;'; put 'put ''ZmlsbDp2YXIoLS1jbHItYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTphY3RpdmV7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTpmb2N1cyBjbHItaWNvbiwuYWxlcnQuYWxlcnQtd2FybmluZyAuY2xvc2U6aG92ZXIgY2RzLWlj''@;'; put 'put ''b24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC5hbGVydC13YXJuaW5nIC5jbG9zZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC13YXJuaW5nLWNs''@;'; put 'put ''b3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13''@;'; put 'put ''aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hbGVydC1kYW5nZXItYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIGF7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1pY29ue2NvbG9yOnZhcigtLWNsci1h''@;'; put 'put ''bGVydC1kYW5nZXItaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXIt''@;'; put 'put ''YWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0''@;'; put 'put ''aW9uLmJ0biwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1kYW5nZXIgLmFs''@;'; put 'put ''ZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjbHItaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xy''@;'; put 'put ''LWljb257Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC5hbGVydC1kYW5nZXIgLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1k''@;'; put 'put ''YW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUu''@;'; put 'put ''YnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6dmFyKC0tY2xyLWFs''@;'; put 'put ''ZXJ0LWRhbmdlci1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdl''@;'; put 'put ''ciAuY2xvc2U6Zm9jdXMsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9j''@;'; put 'put ''dXMgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIgY2RzLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIgY2xyLWljb24sLmFsZXJ0LmFsZXJ0LWRhbmdlciAuY2xvc2U6''@;'; put 'put ''YWN0aXZlIGNkcy1pY29uLC5hbGVydC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9LmFsZXJ0LmFsZXJ0LW5ldXRyYWx7YmFja2dyb3VuZDp2YXIoLS1jbHItYWxlcnQtbmV1dHJh''@;'; put 'put ''bC1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFsZXJ0LW5ldXRyYWwtYm9yZGVyLWNvbG9yKX0uYWxlcnQuYWxlcnQtbmV1dHJh''@;'; put 'put ''bCBhe2NvbG9yOnZhcigtLWNsci1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpfS5hbGVydCAuYWxlcnQtaXRlbT5zcGFuLC5hbGVydCAuYWxlcnQtaXRlbSAuYWxlcnQtdGV4dCwuYWxlcnQgLmFsZXJ0LWl0ZW0gLmFsZXJ0LWFjdGlvbnN7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl''@;'; put 'put ''LTIpIDB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5hbGVydCAuYWxlcnQtaXRlbSAuY2xyLWlj''@;'; put 'put ''b24rLmFsZXJ0LXRleHR7cGFkZGluZy1sZWZ0OjB9LmFsZXJ0IC5hbGVydC1pdGVtIC5jbHItaWNvbisuYWxlcnQtdGV4dDpiZWZvcmV7Y29udGVudDpub25lfS5hbGVydCAuYWxlcnQtYWN0aW9uc3tkaXNwbGF5OmlubGluZS1mbGV4O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2Zs''@;'; put 'put ''ZXg6MCAwIGF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5hbGVydCAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24taXRlbXtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvcil9LmFsZXJ0IC5hbGVydC1hY3Rpb24sLmFsZXJ0IC5kcm9wZG93bi10b2dnbGV7dGV4dC1kZWNvcmF0aW9u''@;'; put 'put ''OnVuZGVybGluZX0uYWxlcnQgLmFsZXJ0LWFjdGlvbiBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tdGV4dC1jb2xvcil9LmFsZXJ0IC5kcm9wZG93bi10b2dnbGU6bm90KC5idG4p''@;'; put 'put ''e2JhY2tncm91bmQ6MCAwO2JvcmRlcjowfS5hbGVydCAuY2xvc2V7b3JkZXI6MTAwO2ZsZXg6MCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttYXJnaW46dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS01KSAwfS5hbGVydCAuY2xvc2UgY2RzLWljb24sLmFsZXJ0IC5jbG9zZSBjbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05''@;'; put 'put ''KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uYWxlcnQgLmFsZXJ0LXNwaW5uZXIuc3Bpbm5lci1pbmxpbmV7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtOSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luOjB9LmFsZXJ0IC5hbGVydC1zcGlubmVyLnNwaW5uZXItaW5saW5lOmJlZm9yZSwuYWxlcnQgLmFsZXJ0LXNwaW5uZXIuc3Bpbm5lci1pbmxpbmU6YWZ0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmFsZXJ0IC5jbG9zZX4uYWxlcnQtaXRlbT4uYWxlcnQtYWN0aW9uc3twYWRkaW5n''@;'; put 'put ''LXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmFsZXJ0IC5jbG9zZX4uYWxlcnQtaXRlbT4uYWxlcnQtYWN0aW9ucz4uYWxlcnQtYWN0aW9uOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0e2Jh''@;'; put 'put ''Y2tncm91bmQ6MCAwO2JvcmRlcjowfS5hbGVydC5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXN7cGFkZGluZzowfS5hbGVydC5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW17bWluLWhlaWdodDowO21hcmdpbjowfS5hbGVydC5hbGVydC1saWdodHdlaWdo''@;'; put 'put ''dCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0+c3BhbiwuYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1zIC5hbGVydC1pdGVtIC5hbGVydC1hY3Rpb25zLC5hbGVydC5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gLmFsZXJ0LXRleHR7Zm9udC1z''@;'; put 'put ''aXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0''@;'; put 'put ''ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQgLmNsb3Nle2Rpc3BsYXk6bm9uZX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQ6bm90KC5hbGVydC1zbSkgLmFsZXJ0LWljb257bWFyZ2luOjB9''@;'; put 'put ''LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LWluZm8gLmFsZXJ0LXRleHR7Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LWluZm8gLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWxp''@;'; put 'put ''Z2h0d2VpZ2h0LWFsZXJ0LWluZm8taWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LXRleHR7Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXdhcm5pbmctZm9udC1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFs''@;'; put 'put ''ZXJ0LXdhcm5pbmcgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LXdhcm5pbmctaWNvbi1jb2xvcil9LmFsZXJ0LmFsZXJ0LWxpZ2h0d2VpZ2h0LmFsZXJ0LWRhbmdlciAuYWxlcnQtdGV4dHtjb2xvcjp2YXIoLS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtZGFu''@;'; put 'put ''Z2VyLWZvbnQtY29sb3IpfS5hbGVydC5hbGVydC1saWdodHdlaWdodC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWxpZ2h0d2VpZ2h0LWFsZXJ0LWRhbmdlci1pY29uLWNvbG9yKX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQuYWxlcnQtc3VjY2VzcyAuYWxlcnQt''@;'; put 'put ''dGV4dHtjb2xvcjp2YXIoLS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQuYWxlcnQtc3VjY2VzcyAuYWxlcnQtaWNvbntjb2xvcjp2YXIoLS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtc3VjY2Vzcy1pY29uLWNvbG9yKX0u''@;'; put 'put ''YWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQuYWxlcnQtbmV1dHJhbCAuYWxlcnQtdGV4dHtjb2xvcjp2YXIoLS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtbmV1dHJhbC1mb250LWNvbG9yKX0uYWxlcnQuYWxlcnQtbGlnaHR3ZWlnaHQuYWxlcnQtbmV1dHJhbCAuYWxlcnQtaWNvbntjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItbGlnaHR3ZWlnaHQtYWxlcnQtbmV1dHJhbC1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVse21hcmdpbjowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZh''@;'; put 'put ''cigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYm9yZGVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIGF7Y29sb3I6dmFyKC0tY2xyLWFw''@;'; put 'put ''cC1hbGVydC1pbmZvLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xle2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0bntib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwgLmRyb3Bkb3duLXRvZ2ds''@;'; put 'put ''ZS5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''IC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2''@;'; put 'put ''ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0u''@;'; put 'put ''YWxlcnQtYXBwLWxldmVsIC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2UgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LWlu''@;'; put 'put ''Zm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9y''@;'; put 'put ''KX0uYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpmb2N1cyBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQt''@;'; put 'put ''YXBwLWxldmVsIC5jbG9zZTphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwgLmFsZXJ0LWl0ZW0gLmJ0bnttYXJn''@;'; put 'put ''aW46MH0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm97YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgt''@;'; put 'put ''MTAwKSBzb2xpZCB2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYm9yZGVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gYXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tZm9udC1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1pY29ue2Nv''@;'; put 'put ''bG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcik7Ym9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWlu''@;'; put 'put ''Zm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5kcm9wZG93bi10b2dnbGUuYnRue2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKTtj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmFsZXJ0LWFjdGlvbi5idG4gY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuIGNsci1pY29uLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZl''@;'; put 'put ''bC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtaW5mby1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5m''@;'; put 'put ''byAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmRyb3Bkb3duLXRvZ2dsZS5idG46YWN0aXZlIGNkcy1pY29uLC5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFs''@;'; put 'put ''ZXJ0LWluZm8tY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLWNsb3NlLWljb24tY29sb3IpfS5h''@;'; put 'put ''bGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6Zm9jdXMsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tY2xvc2UtaWNvbi1o''@;'; put 'put ''b3Zlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpmb2N1cyBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtaW5mbyAuY2xvc2U6aG92ZXIgY2RzLWljb24sLmFs''@;'; put 'put ''ZXJ0LWFwcC1sZXZlbC5hbGVydC1pbmZvIC5jbG9zZTpob3ZlciBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWluZm8gLmNsb3NlOmFjdGl2ZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1h''@;'; put 'put ''cHAtYWxlcnQtaW5mby1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlcntiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1mb250LWNvbG9yKTtib3Jk''@;'; put 'put ''ZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIGF7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItZm9udC1jb2xv''@;'; put 'put ''cil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbnMgLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGV7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWFjdGl2ZS1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbiwuYWxlcnQtYXBwLWxldmVs''@;'; put 'put ''LmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlvbi5idG4sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmRyb3Bkb3du''@;'; put 'put ''LXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWFjdGlvbi1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjZHMt''@;'; put 'put ''aWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0biBjbHItaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9n''@;'; put 'put ''Z2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xl''@;'; put 'put ''LmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuYWxlcnQtYWN0aW9uLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmFsZXJ0LWFjdGlv''@;'; put 'put ''bi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2xyLWljb257Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWFwcC1hbGVydC1kYW5nZXItYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2V7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlIGNk''@;'; put 'put ''cy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLWNsb3NlLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFs''@;'; put 'put ''ZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIsLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6Zm9j''@;'; put 'put ''dXMgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmZvY3VzIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtZGFuZ2VyIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6aG92ZXIgY2xyLWlj''@;'; put 'put ''b24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXIgLmNsb3NlOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LWRhbmdlciAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1kYW5nZXItY2xvc2UtaWNvbi1ob3Zlci1jb2xvcil9''@;'; put 'put ''LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFse2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdp''@;'; put 'put ''ZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWJvcmRlci1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1uZXV0cmFsIGF7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1uZXV0cmFsLWZvbnQtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2Fybmlu''@;'; put 'put ''Z3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1hcHAt''@;'; put 'put ''YWxlcnQtd2FybmluZy1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyBhe2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1mb250LWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWljb257Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWFwcC1hbGVydC13YXJuaW5nLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9yKTtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNsci1hcHAtYWxl''@;'; put 'put ''cnQtd2FybmluZy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2Fybmlu''@;'; put 'put ''Zy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlv''@;'; put 'put ''bi5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdh''@;'; put 'put ''cm5pbmctYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJu''@;'; put 'put ''aW5nLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwu''@;'; put 'put ''YWxlcnQtd2FybmluZyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctYWN0aW9uLWNvbG9y''@;'; put 'put ''KX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2Fy''@;'; put 'put ''bmluZyAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2''@;'; put 'put ''ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC13YXJuaW5nIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXdhcm5pbmcgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxl''@;'; put 'put ''cnQtd2FybmluZyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtd2FybmluZyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxl''@;'; put 'put ''cnQtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigt''@;'; put 'put ''LWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1ib3JkZXItY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyBhe2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1mb250LWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWljb257Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWljb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9ucyAuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKTtib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWFjdGlvbi1hY3RpdmUtY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xle2NvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmRyb3Bkb3duLXRvZ2dsZS5idG57Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1hcHAtYWxl''@;'; put 'put ''cnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpO2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1hY3Rpb24tY29sb3IpfS5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuYWxlcnQtYWN0aW9uLmJ0biBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFs''@;'; put 'put ''ZXJ0LWFjdGlvbi5idG4gY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0biBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBw''@;'; put 'put ''LWFsZXJ0LXN1Y2Nlc3MtYWN0aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFwcC1h''@;'; put 'put ''bGVydC1zdWNjZXNzLWFjdGlvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5hbGVydC1hY3Rpb24uYnRuOmFjdGl2ZSBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWFjdGlvbi5idG46YWN0aXZlIGNsci1pY29uLC5hbGVydC1h''@;'; put 'put ''cHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuZHJvcGRvd24tdG9nZ2xlLmJ0bjphY3RpdmUgY2RzLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5kcm9wZG93bi10b2dnbGUuYnRuOmFjdGl2ZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtYWN0''@;'; put 'put ''aW9uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3Nle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwu''@;'; put 'put ''YWxlcnQtc3VjY2VzcyAuY2xvc2UgY2xyLWljb257ZmlsbDp2YXIoLS1jbHItYXBwLWFsZXJ0LXN1Y2Nlc3MtY2xvc2UtaWNvbi1jb2xvcil9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5jbG9zZTpmb2N1cywuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhv''@;'; put 'put ''dmVyLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZle2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1jbG9zZS1pY29uLWhvdmVyLWNvbG9yKX0uYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmZvY3VzIGNkcy1pY29uLC5hbGVy''@;'; put 'put ''dC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6Zm9jdXMgY2xyLWljb24sLmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1zdWNjZXNzIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwuYWxlcnQtYXBwLWxldmVsLmFsZXJ0LXN1Y2Nlc3MgLmNsb3NlOmhvdmVyIGNsci1pY29uLC5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNkcy1pY29uLC5hbGVydC1hcHAtbGV2ZWwuYWxlcnQtc3VjY2VzcyAuY2xvc2U6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLWNsb3NlLWljb24taG92ZXItY29sb3IpfS5hbGVydC1hcHAt''@;'; put 'put ''bGV2ZWwgLmFsZXJ0LWl0ZW1ze2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtOSl9LmFsZXJ0LWFwcC1sZXZlbCAuYWxlcnQtaXRlbSAuYWxlcnQtYWN0aW9uc3twYWRkaW5nOjB9LmFsZXJ0LWFwcC1sZXZlbCAuY2xvc2V7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgMH0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb24sLmFsZXJ0''@;'; put 'put ''LWFwcC1sZXZlbCAuZHJvcGRvd24tdG9nZ2xle3RleHQtZGVjb3JhdGlvbjpub25lfS5hbGVydC1zbSAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW17bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1zbSAuYWxlcnQtaWNvbi13cmFwcGVye2Rpc3BsYXk6ZmxleDtm''@;'; put 'put ''bGV4LWJhc2lzOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmFsZXJ0LXNtIC5hbGVydC1pY29ue2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdo''@;'; put 'put ''dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1zbSAuYWxlcnQtaXRlbT5zcGFuLC5hbGVydC1zbSAuYWxlcnQtaXRlbSAuYWxlcnQtdGV4dCwuYWxlcnQtc20gLmFsZXJ0LWl0ZW0gLmFsZXJ0LWFjdGlvbnN7Zm9u''@;'; put 'put ''dC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5''@;'; put 'put ''LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6MH0uYWxlcnQtc20gLmNsb3Nle21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDB9LmFsZXJ0LXNtIC5hbGVydC1zcGlu''@;'; put 'put ''bmVyLnNwaW5uZXItaW5saW5le2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1z''@;'; put 'put ''bSAuYWxlcnQtc3Bpbm5lci5zcGlubmVyLWlubGluZTpiZWZvcmUsLmFsZXJ0LXNtIC5hbGVydC1zcGlubmVyLnNwaW5uZXItaW5saW5lOmFmdGVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodHtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MH0uYWxlcnQtc20uYWxlcnQtbGlnaHR3ZWlnaHQgLmFsZXJ0LWl0ZW1ze2dhcDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTMpfS5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW17cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDB9LmFsZXJ0LXNtLmFsZXJ0LWxpZ2h0d2VpZ2h0IC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbT5zcGFuLC5h''@;'; put 'put ''bGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gLmFsZXJ0LWFjdGlvbnMsLmFsZXJ0LXNtLmFsZXJ0LWxpZ2h0d2VpZ2h0IC5hbGVydC1pdGVtcyAuYWxlcnQtaXRlbSAuYWxlcnQtdGV4dHtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw''@;'; put 'put ''aHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGV0dGVyLXNwYWNpbmcpfS5hbGVydC1zbS5hbGVydC1saWdodHdlaWdodCAuYWxlcnQtaXRlbXMgLmFsZXJ0LWl0ZW0gLmFsZXJ0LWljb24td3JhcHBlcntmbGV4LWJhc2lzOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7aGVpZ2h0OnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtNyl9LmFsZXJ0LXNtLmFsZXJ0LWxpZ2h0d2VpZ2h0IC5jbG9zZXtkaXNwbGF5Om5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjhweCl7LmFsZXJ0IC5hbGVydC1pdGVte2ZsZXgtd3JhcDp3cmFwfS5hbGVydCAuYWxlcnQtaXRlbSAuYWxlcnQt''@;'; put 'put ''dGV4dHttYXgtd2lkdGg6OTAlO3dpZHRoOjkwJTtmbGV4LWJhc2lzOjkwJX0uYWxlcnQgLmFsZXJ0LWl0ZW0gLmFsZXJ0LWFjdGlvbnN7ZmxleDoxIDAgMTAwJX0uYWxlcnQtYXBwLWxldmVsIC5hbGVydC1hY3Rpb25ze21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpfX0u''@;'; put 'put ''YWxlcnQtaGlkZGVue2Rpc3BsYXk6bm9uZX0uYWxlcnRzIC5hbGVydHttYXJnaW4tdG9wOjB9LmFsZXJ0cyAuYWxlcnRzLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30uYWxlcnRzIC5hbGVydHMtd3JhcHBlciBjbHItYWxlcnR7ZmxleDoxIDEgMTAwJX0uYWxlcnRz''@;'; put 'put ''LmFsZXJ0LWluZm97YmFja2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWluZm8tcGFnZXItYmctY29sb3IpfS5hbGVydHMuYWxlcnQtd2FybmluZ3tiYWNrZ3JvdW5kOnZhcigtLWNsci1hcHAtYWxlcnQtd2FybmluZy1wYWdlci1iZy1jb2xvcil9LmFsZXJ0cy5hbGVydC1kYW5nZXJ7YmFj''@;'; put 'put ''a2dyb3VuZDp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1iZy1jb2xvcil9LmFsZXJ0cy5hbGVydC1zdWNjZXNze2JhY2tncm91bmQ6dmFyKC0tY2xyLWFwcC1hbGVydC1zdWNjZXNzLXBhZ2VyLWJnLWNvbG9yKX0uYWxlcnRzLmFsZXJ0LW5ldXRyYWx7YmFja2dyb3VuZDp2YXIo''@;'; put 'put ''LS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtcGFnZXItYmctY29sb3IpfS5hbGVydHMtcGFnZXJ7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1wYWdlci10ZXh0LWNvbG9yKTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO2ZsZXg6MSAwIHZhcigtLWNsci1hcHAtYWxlcnQt''@;'; put 'put ''cGFnZXItd2lkdGgpfS5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXJ7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC1pbmZvLXBhZ2VyLWZvbnQtY29sb3IpfS5hbGVydC13YXJuaW5nIC5hbGVydHMtcGFnZXJ7Y29sb3I6dmFyKC0tY2xyLWFwcC1hbGVydC13YXJuaW5nLXBhZ2VyLWZvbnQtY29s''@;'; put 'put ''b3IpfS5hbGVydC1kYW5nZXIgLmFsZXJ0cy1wYWdlcntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LWRhbmdlci1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQtc3VjY2VzcyAuYWxlcnRzLXBhZ2Vye2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1wYWdlci1mb250LWNvbG9yKX0u''@;'; put 'put ''YWxlcnQtbmV1dHJhbCAuYWxlcnRzLXBhZ2Vye2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtbmV1dHJhbC1wYWdlci1mb250LWNvbG9yKX0uYWxlcnRzLXBhZ2VyLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25l''@;'; put 'put ''Oy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5s''@;'; put 'put ''aW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDp2YXIoLS1jbHItYnRuLWFwcGVhcmFuY2Utc3RhbmRhcmQtaGVpZ2h0KX1idXR0b24uYWxlcnRzLXBhZ2VyLWJ1dHRvbntjdXJzb3I6cG9pbnRlcn0uYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnRzLXBhZ2VyLWJ1''@;'; put 'put ''dHRvbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXBhZ2VyLXRleHQtY29sb3IpfS5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1pbmZvIC5hbGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hcHAtYWxl''@;'; put 'put ''cnQtaW5mby1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtd2FybmluZyAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LXdhcm5pbmctcGFnZXItZm9udC1jb2xv''@;'; put 'put ''cil9LmFsZXJ0LWRhbmdlciAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwuYWxlcnQtZGFuZ2VyIC5hbGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtZGFuZ2VyLXBhZ2VyLWZvbnQtY29sb3IpfS5hbGVydC1zdWNjZXNzIC5hbGVydHMt''@;'; put 'put ''cGFnZXItYnV0dG9uIGNkcy1pY29uLC5hbGVydC1zdWNjZXNzIC5hbGVydHMtcGFnZXItYnV0dG9uIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1hcHAtYWxlcnQtc3VjY2Vzcy1wYWdlci1mb250LWNvbG9yKX0uYWxlcnQtbmV1dHJhbCAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjZHMtaWNvbiwu''@;'; put 'put ''YWxlcnQtbmV1dHJhbCAuYWxlcnRzLXBhZ2VyLWJ1dHRvbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jbHItYXBwLWFsZXJ0LW5ldXRyYWwtcGFnZXItZm9udC1jb2xvcil9LmFsZXJ0cy1wYWdlci1jb250cm9se2Rpc3BsYXk6ZmxleDt3aGl0ZS1zcGFjZTpub3dyYXA7aGVpZ2h0OjEwMCU7YWxp''@;'; put 'put ''Z24taXRlbXM6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5hbGVydHMtcGFnZXItY29udHJvbD4qe2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4OjEgMSBhdXRvfTpyb290IFtjZHMtdGhl''@;'; put 'put ''bWVdey0tY2xyLWNhcmQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItY2FyZC1kaXZpZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1jYXJkLXRpdGxlLWNvbG9yOnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItY2FyZC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCk7LS1jbHItY2FyZC1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1''@;'; put 'put ''cy0xMDApOy0tY2xyLWNhcmQtYm9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7LS1jbHItY2FyZC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWNhcmQtYm94LXNoYWRvdzp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtb2JqZWN0LXNoYWRvdy0zMDApOy0tY2xyLWNhcmQtY2xpY2thYmxlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1jYXJkLWNsaWNrYWJsZS1ib3gtc2hhZG93OjAgMCAwIHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtMSkgdmFyKC0tY2xyLWNhcmQtY2xpY2thYmxlLWJvcmRlci1jb2xvcik7LS1jbHItY2FyZC1oZWFkZXItdGl0bGUtY29sb3I6dmFyKC0tY2xyLWNhcmQtdGl0bGUtY29sb3IpOy0tY2xyLWNhcmQtY29udGVudC10aXRsZS1jb2xvcjp2YXIoLS1jbHItY2FyZC10aXRsZS1j''@;'; put 'put ''b2xvcik7LS1jbHItY2FyZC10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCl9LmNhcmR7Ym94LXNoYWRvdzp2YXIoLS1jbHItY2FyZC1ib3gtc2hhZG93KTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMpO2JvcmRlcjp2YXIo''@;'; put 'put ''LS1jbHItY2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1jYXJkLWJvcmRlci1jb2xvcil9LmNhcmQuY2xpY2thYmxlOmhvdmVye2JveC1zaGFkb3c6dmFyKC0tY2xyLWNhcmQtY2xpY2thYmxlLWJveC1zaGFkb3cpO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRl''@;'; put 'put ''ci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1jYXJkLWNsaWNrYWJsZS1ib3JkZXItY29sb3IpO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RyYW5zaXRpb246Ym9yZGVyIC4ycyBlYXNlLGJveC1zaGFkb3cgLjJzIGVhc2UsdHJhbnNmb3JtIC4ycyBlYXNlfS5jYXJk''@;'; put 'put ''LWJsb2NrIC5jYXJkLWRpdmlkZXIsLmNhcmQgLmNhcmQtdGl0bGUsLmNhcmQgLmNhcmQtdGV4dCwuY2FyZCAuY2FyZC1tZWRpYS1ibG9jaywuY2FyZCAubGlzdCwuY2FyZCAubGlzdC11bnN0eWxlZHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcp''@;'; put 'put ''fS5jYXJkLWJsb2NrIC5jYXJkLWRpdmlkZXI6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC10aXRsZTpsYXN0LWNoaWxkLC5jYXJkIC5jYXJkLXRleHQ6bGFzdC1jaGlsZCwuY2FyZCAuY2FyZC1tZWRpYS1ibG9jazpsYXN0LWNoaWxkLC5jYXJkIC5saXN0Omxhc3QtY2hpbGQsLmNhcmQgLmxpc3Qt''@;'; put 'put ''dW5zdHlsZWQ6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQuY2FyZC1pbWc+aW1nLC5jYXJkPi5jYXJkLWltZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkPmltZywuY2FyZC1pbWc+aW1ne2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OmF1dG87d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0u''@;'; put 'put ''Y2FyZHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNhcmQtYmctY29sb3IpO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5jYXJkIC5hbGVydHttYXJnaW46MCAwIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtNSkgMH0uY2FyZCAuYnRuLWxpbmt7bWluLXdpZHRoOjA7cGFkZGluZzowfS5jYXJkLmNsaWNrYWJsZXtjb2xvcjppbmhlcml0fS5jYXJkPi5saXN0LC5jYXJkPi5saXN0LXVuc3R5bGVke3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSB2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTgpfS5jYXJkIC5saXN0LWdyb3Vwe3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDtsaXN0LXN0eWxlOm5vbmV9LmNhcmQgLmxpc3QtZ3JvdXAtaXRlbXtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO3Bh''@;'; put 'put ''ZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1jYXJkLWJnLWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9yKX1Ac3VwcG9ydHMgKC1t''@;'; put 'put ''cy1pbWUtYWxpZ246YXV0byl7LmNhcmQgLmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikpfX0uY2FyZC1ibG9ja3twYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtNyl9LmNhcmQtZm9vdGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9aDMuY2FyZC1oZWFkZXIsLmNhcmQtaGVh''@;'; put 'put ''ZGVye2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlv''@;'; put 'put ''bi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2NvbG9yOnZhcigtLWNsci1jYXJkLWhlYWRlci10aXRsZS1jb2xvcil9aDQuY2FyZC10''@;'; put 'put ''aXRsZSwuY2FyZC10aXRsZXtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlh''@;'; put 'put ''cy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci1jYXJkLWNvbnRlbnQtdGl0bGUtY29sb3IpfWgxLmNhcmQtaGVhZGVyLGgx''@;'; put 'put ''LmNhcmQtdGl0bGUsaDIuY2FyZC1oZWFkZXIsaDIuY2FyZC10aXRsZSxoMy5jYXJkLWhlYWRlcixoMy5jYXJkLXRpdGxlLGg0LmNhcmQtaGVhZGVyLGg0LmNhcmQtdGl0bGUsaDUuY2FyZC1oZWFkZXIsaDUuY2FyZC10aXRsZSxoNi5jYXJkLWhlYWRlcixoNi5jYXJkLXRpdGxle21hcmdpbi10''@;'; put 'put ''b3A6MH0uY2FyZC10ZXh0e2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHkt''@;'; put 'put ''Ym9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7Y29sb3I6dmFyKC0tY2xyLWNhcmQtdGV4dC1jb2xvcil9LmNhcmQtaW1nOmZpcnN0LWNoaWxkPmltZ3tib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRv''@;'; put 'put ''cC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItY2FyZC1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItY2FyZC1ib3JkZXItcmFkaXVzKX0uY2FyZC1pbWc6bGFzdC1jaGlsZD5pbWd7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6''@;'; put 'put ''dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cyl9LmNhcmQuY2FyZC1pbWc+aW1nLC5jYXJkPi5jYXJkLWltZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkPmltZ3tib3JkZXItcmFkaXVzOnZh''@;'; put 'put ''cigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMpfS5jYXJkLWJsb2NrIC5idG4sLmNhcmQtYmxvY2sgLmJ0bi5idG4tbGluaywuY2FyZC1ibG9jayAuY2FyZC1saW5rLC5jYXJkLWZvb3RlciAuYnRuLC5jYXJkLWZvb3RlciAuYnRuLmJ0bi1saW5rLC5jYXJkLWZvb3RlciAuY2FyZC1saW5rLC5j''@;'; put 'put ''YXJkLWJsb2NrIC5idG4tZ3JvdXAgLmJ0biwuY2FyZC1mb290ZXIgLmJ0bi1ncm91cCAuYnRue21hcmdpbjowfS5jYXJkLWhlYWRlciwuY2FyZC1ibG9ja3tib3JkZXItYm90dG9tOnZhcigtLWNsci1jYXJkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWNhcmQtYm9yZGVyLWNvbG9y''@;'; put 'put ''KX0uY2FyZC1oZWFkZXI6bGFzdC1jaGlsZCwuY2FyZC1ibG9jazpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0uY2FyZC1kaXZpZGVye2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItY2FyZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1jYXJkLWRpdmlk''@;'; put 'put ''ZXItY29sb3IpfS5jYXJkLWJsb2NrIC5jYXJkLWRpdmlkZXJ7bWFyZ2luLWxlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpKTttYXJnaW4tcmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpKTt3aWR0aDphdXRvfS5jYXJkLWhlYWRlcisuY2FyZC1kaXZp''@;'; put 'put ''ZGVyLC5jYXJkLWJsb2NrKy5jYXJkLWRpdmlkZXJ7ZGlzcGxheTpub25lfS5jYXJkLW1lZGlhLWJsb2Nre2Rpc3BsYXk6ZmxleH0uY2FyZC1tZWRpYS1ibG9jayAuY2FyZC1tZWRpYS1pbWFnZXtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4OjAgMCBhdXRvO2hlaWdodDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTEzKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKTttYXgtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTMpO21heC13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKX0uY2FyZC1tZWRpYS1ibG9jayAuY2FyZC1tZWRpYS1kZXNjcmlwdGlvbntm''@;'; put 'put ''b250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGluZS1oZWlnaHQp''@;'; put 'put ''O2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Y29sb3I6dmFyKC0tY2xyLWNhcmQtdGV4dC1jb2xvcik7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS03KX0uY2FyZC1tZWRpYS1ibG9jayAuY2FyZC1tZWRpYS10aXRsZSwuY2FyZC1tZWRpYS1ibG9jayBzcGFuLC5jYXJkLW1lZGlhLWJsb2NrIC5jYXJkLW1lZGlhLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNhcmQtbWVkaWEtYmxvY2sud3JhcHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59''@;'; put 'put ''LmNhcmQtbWVkaWEtYmxvY2sud3JhcCAuY2FyZC1tZWRpYS1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2FyZC1ibG9jaz4ubGlzdCwuY2FyZC1ibG9jaz4ubGlzdC11bnN0eWxlZHtwYWRkaW5nOjB9QG1lZGlhIHNjcmVl''@;'; put 'put ''biBhbmQgKG1pbi13aWR0aDo1NzZweCl7LmNhcmQtY29sdW1uc3tjb2x1bW4tY291bnQ6Mztjb2x1bW4tZ2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7YnJlYWstaW5zaWRlOmF2b2lkO2NvbHVtbi1maWxsOmJhbGFuY2U7LXdlYmtpdC1wZXJzcGVjdGl2ZToxfS5jYXJkLWNvbHVtbnMu''@;'; put 'put ''Y2FyZC1jb2x1bW5zLTJ7Y29sdW1uLWNvdW50OjJ9LmNhcmQtY29sdW1ucy5jYXJkLWNvbHVtbnMtNHtjb2x1bW4tY291bnQ6NH0uY2FyZC1jb2x1bW5zIC5jYXJke2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5jYXJkLWNvbHVtbnMgLmNs''@;'; put 'put ''aWNrYWJsZXtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jYXJkIC5jaGVja2JveC5idG4gbGFiZWwsLmNhcmQgLmNoZWNrYm94LWlubGluZS5idG4gbGFiZWwsLmNhcmQgLnJhZGlvLmJ0biBsYWJlbCwuY2FyZCAucmFkaW8taW5s''@;'; put 'put ''aW5lLmJ0biBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9ja319OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWRyb3Bkb3duLWJnLWNvbG9yOnZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRyb3Bkb3duLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZHJvcGRvd24tZGl2aWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1j''@;'; put 'put ''b2xvci10aW50KTstLWNsci1kcm9wZG93bi1kaXZpZGVyLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpOy0tY2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZHJvcGRvd24tYmctaG92''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1kcm9wZG93bi1zZWxlY3Rpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1kcm9wZG93bi10''@;'; put 'put ''ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRyb3Bkb3duLWhlYWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWRyb3Bkb3duLWhlYWRlci1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1tZWRpdW0pOy0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTstLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qt''@;'; put 'put ''aW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRyb3Bkb3duLWl0ZW0tYmctY29sb3I6dHJhbnNwYXJlbnQ7LS1jbHItZHJvcGRvd24taXRlbS1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1kcm9wZG93bi1pdGVtLWhvdmVy''@;'; put 'put ''LWJnLWNvbG9yOnZhciggLS1jbHItZHJvcGRvd24tYmctaG92ZXItY29sb3IgKTstLWNsci1kcm9wZG93bi1pdGVtLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtYmctY29sb3I6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLXNlbGVjdGVkKTstLWNsci1kcm9wZG93bi1pdGVtLXNlbGVj''@;'; put 'put ''dGVkLWJnLWNvbG9yOnZhciggLS1jbHItZHJvcGRvd24tc2VsZWN0aW9uLWNvbG9yICk7LS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLWRy''@;'; put 'put ''b3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1hY3RpdmUpOy0tY2xyLWRyb3Bkb3duLWl0ZW0tZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj''@;'; put 'put ''dGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxlZC1iZy1jb2xvcjp0cmFuc3BhcmVudH0uZHJvcGRvd24tbWVudSAuYnRuLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4taW5mbywuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LW91dGxpbmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLC5kcm9wZG93bi1t''@;'; put 'put ''ZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLC5kcm9wZG93bi1tZW51IC5idG4tbGluaywuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuZHJvcGRvd24taXRlbSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVye292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3RleHQtYWxpZ246bGVmdH0uZHJvcGRvd257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmRy''@;'; put 'put ''b3Bkb3duIC5kcm9wZG93bi10b2dnbGV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNsci1pY29uW3NoYXBl''@;'; put 'put ''Xj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtjb2xvcjppbmhlcml0O2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUgY2RzLWljb25bc2hhcGVePWFuZ2xlXXttYXJnaW4tdG9wOnVuc2V0O2Nv''@;'; put 'put ''bG9yOmluaGVyaXQ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG57dGV4dC1vdmVyZmxvdzp1bnNldH0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5idG4gY2xyLWlj''@;'; put 'put ''b257dHJhbnNmb3JtOm5vbmV9LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1jYXJldF0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNkcy1pY29u''@;'; put 'put ''W3NoYXBlXj1hbmdsZV0sLmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUuYnRuIGNsci1pY29uW3NoYXBlXj1hbmdsZV17cmlnaHQ6dmFyKC0tY2xyLWJ0bi1ob3Jpem9udGFsLXBhZGRpbmcpfS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtwYWRkaW5nOjA7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWRyb3Bkb3duLWFjdGl2ZS10ZXh0LWNvbG9yKX0uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWNhcmV0XSwuZHJvcGRvd24g''@;'; put 'put ''LmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2RzLWljb25bc2hhcGVePWFuZ2xlXSwuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZTpub3QoLmJ0bikgY2xyLWljb25bc2hhcGVePWFuZ2xlXXtyaWdodDowfS5kcm9wZG93biBidXR0b24uZHJvcGRvd24tdG9nZ2xlOm5vdCguYnRuKXtiYWNr''@;'; put 'put ''Z3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24tYWN0aXZlLXRleHQtY29sb3IpfS5kcm9wZG93bi1tZW51Pip7ZGlzcGxheTpibG9jazt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpmbGV4O2ZsZXgtZGly''@;'; put 'put ''ZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOmNhbGMoMTIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtd2lkdGg6Y2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LXNoYWRvdy0yMDApO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgMDt2aXNpYmls''@;'; put 'put ''aXR5OmhpZGRlbjt6LWluZGV4OjEwNTB9LmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcntjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taGVhZGVyLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2xyLWRyb3Bkb3duLWhlYWRlci1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6MCB2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTcpO21hcmdpbjowfS5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1oZWFkZXJ+LmRyb3Bkb3duLWl0ZW0sLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlcn4uZHJvcGRvd24+LmRyb3Bkb3duLWl0ZW17cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''MTApfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnksLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeSwuZHJvcGRvd24tbWVudSAuYnRuLW91''@;'; put 'put ''dGxpbmUtc2Vjb25kYXJ5LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIsLmRyb3Bkb3duLW1lbnUg''@;'; put 'put ''LmJ0bi1wcmltYXJ5LC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZywuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVte2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNv''@;'; put 'put ''bmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNw''@;'; put 'put ''YWNpbmcpO2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWJnLWNvbG9yKTtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7YWxp''@;'; put 'put ''Z24taXRlbXM6Y2VudGVyO2hlaWdodDphdXRvO21hcmdpbjowO3dpZHRoOjEwMCU7dGV4dC10cmFuc2Zvcm06bm9uZX0uZHJvcGRvd24tbWVudSAuYnRuLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmFjdGl2ZSwu''@;'; put 'put ''ZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5hY3RpdmUs''@;'; put 'put ''LmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuYWN0aXZlLC5kcm9wZG93bi1t''@;'; put 'put ''ZW51IC5idG4td2FybmluZy5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3Rl''@;'; put 'put ''ZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1iZy1jb2xvcil9LmRyb3Bkb3duLW1lbnUgLmJ0bjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeTpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86aG92ZXIsLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIsLmRyb3Bk''@;'; put 'put ''b3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13''@;'; put 'put ''YXJuaW5nOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzczpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0taG92ZXItY29sb3IpO2JhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0taG92ZXItYmctY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfS5kcm9wZG93bi1tZW51IC5idG46aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LWluZm86aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIuYWN0aXZlLC5kcm9w''@;'; put 'put ''ZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzczpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5n''@;'; put 'put ''ZXI6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpob3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmhvdmVyLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6aG92ZXIuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluazpo''@;'; put 'put ''b3Zlci5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06aG92ZXIuYWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtaG92ZXItYmctY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG46YWN0aXZlLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tc2Vjb25kYXJ5OmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRh''@;'; put 'put ''cnk6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2VzczphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6''@;'; put 'put ''YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tbGluazphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmRyb3Bk''@;'; put 'put ''b3duLWl0ZW06YWN0aXZle2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtYmctY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG46YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVu''@;'; put 'put ''dSAuYnRuLXNlY29uZGFyeTphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZS5hY3RpdmUsLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlcjphY3RpdmUuYWN0aXZlLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tb3V0bGluZS1zdWNjZXNzOmFjdGl2ZS5hY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXI6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6YWN0aXZlLmFjdGl2ZSwuZHJvcGRv''@;'; put 'put ''d24tbWVudSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6YWN0aXZlLmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTphY3RpdmUuYWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0''@;'; put 'put ''ZWQtYWN0aXZlLWJnLWNvbG9yKX0uZHJvcGRvd24tbWVudSAuYnRuOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0''@;'; put 'put ''bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmZvY3VzLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeTpmb2N1cywuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmZvY3VzLC5k''@;'; put 'put ''cm9wZG93bi1tZW51IC5idG4tbGluazpmb2N1cywuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpmb2N1c3t6LWluZGV4OmluaGVyaXR9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25k''@;'; put 'put ''YXJ5LmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVk''@;'; put 'put ''LC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5l''@;'; put 'put ''LWRhbmdlci5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4tZGFuZ2VyLmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmRpc2Fi''@;'; put 'put ''bGVkLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZCwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZCwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLWxpbms6ZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxlZC1jb2xvcik7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxlZC1iZy1jb2xvcik7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRyb3Bkb3duLW1lbnUgLmJ0bi5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuOmRpc2FibGVkOmhv''@;'; put 'put ''dmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm86ZGlzYWJs''@;'; put 'put ''ZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRu''@;'; put 'put ''LW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5l''@;'; put 'put ''LXdhcm5pbmcuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2Fi''@;'; put 'put ''bGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1t''@;'; put 'put ''ZW51IC5idG4tZGFuZ2VyOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5kaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnk6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmRpc2FibGVkOmhvdmVyLC5kcm9w''@;'; put 'put ''ZG93bi1tZW51IC5idG4td2FybmluZzpkaXNhYmxlZDpob3ZlciwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzOmRpc2FibGVkOmhvdmVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5kaXNhYmxlZDpob3Zlciwu''@;'; put 'put ''ZHJvcGRvd24tbWVudSAuYnRuLWxpbms6ZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQ6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmRyb3Bkb3duLW1lbnUgLmJ0bi5k''@;'; put 'put ''aXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWlu''@;'; put 'put ''Zm8uZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4taW5mbzpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmU6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRs''@;'; put 'put ''aW5lLXNlY29uZGFyeTpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFu''@;'; put 'put ''Z2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJs''@;'; put 'put ''ZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlcjpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1h''@;'; put 'put ''cnk6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5kaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nOmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4tc3VjY2VzczpkaXNhYmxlZDphY3RpdmUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbms6ZGlzYWJsZWQ6YWN0aXZlLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmRpc2FibGVkOmFjdGl2ZSwuZHJvcGRv''@;'; put 'put ''d24tbWVudSAuZHJvcGRvd24taXRlbTpkaXNhYmxlZDphY3RpdmV7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lfS5kcm9wZG93bi1tZW51IC5idG4uZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4taW5m''@;'; put 'put ''by5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5i''@;'; put 'put ''dG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGUsLmRyb3Bkb3duLW1lbnUgLmJ0bi1kYW5nZXIuZXhwYW5kYWJsZSwuZHJv''@;'; put 'put ''cGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXdhcm5pbmcuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLXN1Y2Nlc3MuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZSwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''ZHJvcGRvd24taXRlbS5leHBhbmRhYmxle3BhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uZHJvcGRvd24tbWVudSAuYnRuLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAu''@;'; put 'put ''YnRuLWluZm8uZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUuZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtcHJpbWFyeS5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZXhw''@;'; put 'put ''YW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtd2FybmluZy5leHBhbmRhYmxlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1kYW5nZXIuZXhwYW5kYWJsZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxl''@;'; put 'put ''OmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNj''@;'; put 'put ''ZXNzLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFibGU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZTphZnRlcntjb250ZW50OiIiO21hc2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUz''@;'; put 'put ''Q3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTIlMjAxMiUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NzdHlsZSUzRS5jbHMtMSU3''@;'; put 'put ''QmZpbGwlM0Enbm9uZSclM0IlN0QlM0MlMkZzdHlsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlM0N0aXRsZSUzRUNhcmV0JTNDJTJGdGl0bGUlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNNiUy''@;'; put 'put ''QzlMMS4yJTJDNC4yYTAuNjglMkMwLjY4JTJDMCUyQzAlMkMxJTJDMS0xTDYlMkM3LjA4JTJDOS44NCUyQzMuMjRhMC42OCUyQzAuNjglMkMwJTJDMSUyQzElMkMxJTJDMVolMjIlMkYlM0UlMEElM0MlMkZzdmclM0UlMEEiKTstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJl''@;'; put 'put ''cGVhdDpuby1yZXBlYXQ7LXdlYmtpdC1tYXNrLXNpemU6Y292ZXI7bWFzay1zaXplOmNvdmVyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''Nik7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO21hcmdpbi1sZWZ0OmF1dG99LmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWlu''@;'; put 'put ''Zm8uZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGlu''@;'; put 'put ''ZS1zZWNvbmRhcnkuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24t''@;'; put 'put ''bWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1l''@;'; put 'put ''bnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGUuYWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlLmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3du''@;'; put 'put ''LWl0ZW0uZXhwYW5kYWJsZS5hY3RpdmU6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1zZWxlY3RlZC1jb2xvcil9LmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc2Vjb25kYXJ5LmV4cGFu''@;'; put 'put ''ZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1pbmZvLmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZXhwYW5kYWJsZTpo''@;'; put 'put ''b3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2Vy''@;'; put 'put ''LmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZXhwYW5kYWJsZTpob3ZlcjphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tcHJpbWFyeS5leHBh''@;'; put 'put ''bmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4td2FybmluZy5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlOmhvdmVyOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tbGluay5leHBhbmRhYmxlOmhvdmVyOmFm''@;'; put 'put ''dGVyLC5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtLmV4cGFuZGFibGU6aG92ZXI6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1ob3Zlci1jb2xvcil9LmRyb3Bkb3duLW1lbnUgLmJ0bi5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24t''@;'; put 'put ''bWVudSAuYnRuLXNlY29uZGFyeS5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWluZm8uZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4t''@;'; put 'put ''b3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRy''@;'; put 'put ''b3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc3VjY2Vzcy5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlOmFjdGl2ZTphZnRl''@;'; put 'put ''ciwuZHJvcGRvd24tbWVudSAuYnRuLXByaW1hcnkuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGU6YWN0aXZlOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tc3VjY2Vzcy5leHBhbmRhYmxlOmFjdGl2ZTphZnRlciwuZHJvcGRv''@;'; put 'put ''d24tbWVudSAuYnRuLWxpbmsuZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZTphY3RpdmU6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtY29sb3IpfS5kcm9wZG93bi1tZW51''@;'; put 'put ''IC5idG4uZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zZWNvbmRhcnkuZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLXNlY29uZGFyeS5l''@;'; put 'put ''eHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4taW5mby5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxl''@;'; put 'put ''LmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1wcmltYXJ5LmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXByaW1h''@;'; put 'put ''cnkuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93''@;'; put 'put ''bi1tZW51IC5idG4tb3V0bGluZS13YXJuaW5nLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLW91dGxpbmUtZGFuZ2VyLmV4cGFuZGFibGUuZGlz''@;'; put 'put ''YWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLWRhbmdlci5leHBhbmRhYmxlOmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tb3V0bGluZS1zdWNjZXNzLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1vdXRsaW5lLXN1''@;'; put 'put ''Y2Nlc3MuZXhwYW5kYWJsZTpkaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuYnRuLWRhbmdlci5leHBhbmRhYmxlLmRpc2FibGVkOmFmdGVyLC5kcm9wZG93bi1tZW51IC5idG4tZGFuZ2VyLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5''@;'; put 'put ''LmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1wcmltYXJ5LmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi13YXJuaW5nLmV4''@;'; put 'put ''cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1zdWNjZXNzLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFi''@;'; put 'put ''bGUuZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmJ0bi1saW5rLmV4cGFuZGFibGU6ZGlzYWJsZWQ6YWZ0ZXIsLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW0uZXhwYW5kYWJsZS5kaXNhYmxlZDphZnRlciwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbS5leHBhbmRhYmxl''@;'; put 'put ''OmRpc2FibGVkOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZGlzYWJsZWQtY29sb3IpfS5kcm9wZG93bi1tZW51IC5idG4sLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW17cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9QG1lZGlh''@;'; put 'put ''IHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRyb3Bkb3duLW1lbnUgLmJ0biwuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbXtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX19LmRyb3Bkb3duLW1lbnUgYS5kcm9wZG93''@;'; put 'put ''bi1pdGVte3RleHQtZGVjb3JhdGlvbjpub25lfS5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1kaXZpZGVye2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItYm9yZGVyLXdpZHRoKTtib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20tY29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWRyb3Bkb3duLWRpdmlkZXItY29sb3IpO21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5idG4tZ3JvdXAtb3ZlcmZsb3cub3Blbj4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRv''@;'; put 'put ''d24tbWVudSwudGFicy1vdmVyZmxvdy5vcGVuPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93Lm9wZW4+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tbWVudS13cmFw''@;'; put 'put ''cGVyPi5kcm9wZG93bi1tZW51e3Zpc2liaWxpdHk6dmlzaWJsZX0uYnRuLWdyb3VwLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cuYm90dG9tLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9w''@;'; put 'put ''ZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24uYm90dG9tLWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXt0b3A6MTAwJTtib3R0b206YXV0bzttYXJnaW46dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS0yKSAwIDAgMH0uYnRuLWdyb3VwLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmJvdHRvbS1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5ib3R0b20tbGVmdD4uZHJvcGRvd24tbWVudXtsZWZ0OjA7cmlnaHQ6YXV0''@;'; put 'put ''b30uYnRuLWdyb3VwLW92ZXJmbG93LmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5ib3R0b20tcmlnaHQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmJvdHRvbS1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uYnRuLWdyb3VwLW92ZXJm''@;'; put 'put ''bG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cudG9wLXJpZ2h0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LnRvcC1yaWdodD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24udG9w''@;'; put 'put ''LWxlZnQ+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnRvcC1yaWdodD4uZHJvcGRvd24tbWVudXt0b3A6YXV0bztib3R0b206MTAwJTttYXJnaW46MCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikgMH0uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC50YWJz''@;'; put 'put ''LW92ZXJmbG93LnRvcC1sZWZ0Pi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi50b3AtbGVmdD4uZHJvcGRvd24tbWVudXtsZWZ0OjA7cmlnaHQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnRvcC1yaWdodD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy50b3AtcmlnaHQ+LmRyb3Bkb3du''@;'; put 'put ''LW1lbnUsLmRyb3Bkb3duLnRvcC1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cu''@;'; put 'put ''bGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudXtyaWdodDoxMDAlO2xlZnQ6YXV0bzttYXJnaW46''@;'; put 'put ''MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIDAgMH0uYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDti''@;'; put 'put ''b3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93LmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93''@;'; put 'put ''LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93''@;'; put 'put ''bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudXtsZWZ0OjEwMCU7cmlnaHQ6YXV0bzttYXJnaW46MCAwIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LWJvdHRvbT4uZHJvcGRv''@;'; put 'put ''d24tbWVudSwudGFicy1vdmVyZmxvdy5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudXt0b3A6MDtib3R0b206YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93LnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxv''@;'; put 'put ''dy5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudXtib3R0b206MDt0b3A6YXV0b30uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93biAuZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUs''@;'; put 'put ''LmRyb3Bkb3duIC5kcm9wZG93biAuZHJvcGRvd24tbWVudXtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWNoaWxkLWJvcmRlci1jb2xvcik7cG9zaXRpb246YWJzb2x1dGV9LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLmJ0bi1n''@;'; put 'put ''cm91cC1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1t''@;'; put 'put ''ZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5sZWZ0LXRvcD4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7aW5zZXQ6MCAxMDAlIGF1dG8gYXV0bzttYXJn''@;'; put 'put ''aW4tdG9wOmNhbGMoKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLXJpZ2h0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSl9LmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9w''@;'; put 'put ''ZG93bi1tZW51LC5idG4tZ3JvdXAtb3ZlcmZsb3cgLmRyb3Bkb3duLnJpZ2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC10b3A+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cgLmRyb3Bkb3duLnJp''@;'; put 'put ''Z2h0LXRvcD4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ucmlnaHQtdG9wPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnV7aW5zZXQ6''@;'; put 'put ''MCBhdXRvIGF1dG8gMTAwJTttYXJnaW4tdG9wOmNhbGMoKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCkpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7bWFyZ2luLWxlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpKX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9w''@;'; put 'put ''ZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudS13cmFwcGVyPi5kcm9wZG93bi1tZW51LC50YWJzLW92ZXJmbG93IC5kcm9wZG93bi5sZWZ0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwu''@;'; put 'put ''dGFicy1vdmVyZmxvdyAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudSwuZHJvcGRvd24gLmRyb3Bkb3duLmxlZnQtYm90dG9tPi5kcm9wZG93bi1tZW51LC5kcm9wZG93biAuZHJvcGRvd24ubGVmdC1ib3R0b20+LmRyb3Bkb3duLW1l''@;'; put 'put ''bnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXtpbnNldDphdXRvIDEwMCUgMCBhdXRvO21hcmdpbi1ib3R0b206Y2FsYygoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTttYXJnaW4tcmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTMpKX0uYnRuLWdyb3VwLW92ZXJmbG93IC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmJ0bi1ncm91cC1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLnRhYnMtb3ZlcmZsb3cg''@;'; put 'put ''LmRyb3Bkb3duLnJpZ2h0LWJvdHRvbT4uZHJvcGRvd24tbWVudSwudGFicy1vdmVyZmxvdyAuZHJvcGRvd24ucmlnaHQtYm90dG9tPi5kcm9wZG93bi1tZW51LXdyYXBwZXI+LmRyb3Bkb3duLW1lbnUsLmRyb3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUsLmRy''@;'; put 'put ''b3Bkb3duIC5kcm9wZG93bi5yaWdodC1ib3R0b20+LmRyb3Bkb3duLW1lbnUtd3JhcHBlcj4uZHJvcGRvd24tbWVudXtpbnNldDphdXRvIGF1dG8gMCAxMDAlO21hcmdpbi1ib3R0b206Y2FsYygoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl''@;'; put 'put ''LTEpKTttYXJnaW4tbGVmdDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWxvZ2luLXRpdGxlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItbG9naW4taGludC1jb2xvcjp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWxvZ2luLWZvb3Rlci1nYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1sb2dpbi1jb3B5cmlnaHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktbGluay1jb2xvcik7LS1jbHItbG9naW4tYmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1sb2dpbi13ZWxjb21lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItbG9naW4tZXJyb3ItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWxl''@;'; put 'put ''cnQtZGFuZ2VyLWJnLWNvbG9yKTstLWNsci1sb2dpbi1lcnJvci1pY29uLWNvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItaWNvbi1jb2xvcik7LS1jbHItbG9naW4tbG9nby1jb2xvcjojNzE3MTc1Oy0tY2xyLWxvZ2luLXRyYWRlbWFyay1jb2xvcjp2YXIoLS1jbHItaDItY29sb3IpOy0t''@;'; put 'put ''Y2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXdlaWdodDp2YXIoLS1jbHItaDItZm9udC13ZWlnaHQpOy0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LWZhbWlseTp2YXIoLS1jbHItaDItZm9udC1mYW1pbHkpOy0tY2xyLWxvZ2luLXRyYWRlbWFyay1mb250LXNpemU6dmFyKC0tY2xyLWgyLWZv''@;'; put 'put ''bnQtc2l6ZSk7LS1jbHItbG9naW4tdHJhZGVtYXJrLWxldHRlci1zcGFjaW5nOnZhcigtLWNsci1oMi1sZXR0ZXItc3BhY2luZyl9OnJvb3QgW2Nkcy10aGVtZX49ZGFya117LS1jbHItbG9naW4tbG9nby1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdoaXRlKX0ubG9naW4td3JhcHBl''@;'; put 'put ''cntkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJ1dGYtOCUyMiUzRiUzRSUwRCUwQSUzQyUyMURPQ1RZUEUlMjBzdmclMjBQ''@;'; put 'put ''VUJMSUMlMjAlMjItJTJGJTJGVzNDJTJGJTJGRFREJTIwU1ZHJTIwMS4xJTJGJTJGRU4lMjIlMjAlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRkdyYXBoaWNzJTJGU1ZHJTJGMS4xJTJGRFREJTJGc3ZnMTEuZHRkJTIyJTNFJTBEJTBBJTNDc3ZnJTBEJTBBJTIwJTIwJTIwJTIwJTIwdmVy''@;'; put 'put ''c2lvbiUzRCUyMjEuMSUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMGlkJTNEJTIybm8tYXNwZWN0LXJhdGlvJTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB4bWxucyUzQXhs''@;'; put 'put ''aW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlMEQlMEElMjAlMjAlMjAlMjAlMjB4JTNEJTIyMHB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIweSUzRCUyMjBweCUyMiUwRCUwQSUyMCUyMCUyMCUyMCUyMGhlaWdodCUzRCUyMjIwNTUuNTVweCUyMiUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMHdpZHRoJTNEJTIyMTQ0MHB4JTIyJTBEJTBBJTIwJTIwJTIwJTIwJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjA1NS41NSUyMDE0NDAlMjIlMEQlMEElMjAlMjAlMjAlMjAlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pbllNaW4lMjBzbGljZSUyMiUz''@;'; put 'put ''RSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2Rlc2MlM0VMb2dpbiUyMEltYWdlJTNDJTJGZGVzYyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clMjBzdHJva2UlM0QlMjJub25lJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMSUy''@;'; put 'put ''MiUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUyMHRyYW5zZm9ybSUzRCUyMnRyYW5zbGF0ZSUyODAuMDAwMDAwJTJDJTIwLTQuMDAwMDAwJTI5JTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUzRSUwRCUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ2clM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NyZWN0JTIwZmlsbCUzRCUyMiUyM0ZBRkFGQSUyMiUyMHglM0QlMjIwJTIyJTIweSUzRCUyMjQlMjIlM0UlM0MlMkZyZWN0JTNFJTBE''@;'; put 'put ''JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjMwMDdDQkIlMjIlMjBvcGFjaXR5JTNEJTIyMC40JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG11bHRpcGx5JTNCJTIyJTIwcG9pbnRz''@;'; put 'put ''JTNEJTIyMTEwOC40MyUyMDE0NDMuNjMlMjAxMTA5LjA4JTIwMTQ0My42MyUyMDQ0My40NCUyMDc3Ny43NCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkz''@;'; put 'put ''RDhDQSUyMiUyMG9wYWNpdHklM0QlMjIwLjYlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwb3ZlcmxheSUzQiUyMiUyMHBvaW50cyUzRCUyMjAuNzklMjAzMzQuOTIlMjA0NDMuNDQlMjA3NzcuNzQlMjAwLjc5JTIwMzM0LjQ5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMC43OSUyMDIxMS44OCUyMDAuNzklMjAzMjkuNiUyMDU5LjYyJTIwMjcwLjc3JTIyJTNFJTNDJTJGcG9seWdvbiUz''@;'; put 'put ''RSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTYwLjY1JTIwMTY5Ljc0JTIwMC43OSUyMDkuNzMlMjAwLjc5JTIwMjExLjg4JTIwOTAuMjclMjAzMDEu''@;'; put 'put ''NDYlMjA1OS42MiUyMDI3MC43NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0NERTNFRSUyMiUyMHBvaW50cyUzRCUyMjUwMy43NyUyMDE0NDMuNjMlMjA2''@;'; put 'put ''OTcuNDclMjAxNDQzLjYzJTIwODAzLjc0JTIwMTMzNy4zNiUyMDcwNi45MyUyMDEyNDAuNDMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNDREUzRUUlMjIl''@;'; put 'put ''MjBwb2ludHMlM0QlMjIxNTguMzMlMjA2OTEuMTUlMjAwLjc5JTIwODQ4LjcyJTIwMC43OSUyMDE0MjcuNDMlMjA0NDcuNTIlMjA5ODAuNyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29u''@;'; put 'put ''JTIwZmlsbCUzRCUyMiUyM0NFRERFMCUyMiUyMHBvaW50cyUzRCUyMjI1Ny43MSUyMDU5MS43NSUyMDAuNzklMjAzMzQuNDklMjAwLjc5JTIwNTMzLjQyJTIwMTU4LjMzJTIwNjkxLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTlDOUQ1JTIyJTIwcG9pbnRzJTNEJTIyMC43OSUyMDUzMy40MiUyMDAuNzklMjA4NDguNzIlMjAxNTguMzMlMjA2OTEuMTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQ0RTclMjIlMjBwb2ludHMlM0QlMjI4MDYuNDYlMjAxMTQwLjg5JTIwNTQ2Ljk0JTIwODgxLjI4JTIwNDQ3LjUyJTIwOTgwLjclMjA3MDYuOTMlMjAxMjQwLjQzJTIyJTNFJTNDJTJGcG9seWdvbiUz''@;'; put 'put ''RSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEZDNERGJTIyJTIwcG9pbnRzJTNEJTIyNDQ3LjUyJTIwOTgwLjclMjAwLjc5JTIwMTQyNy40MyUyMDAuNzklMjAxNDQzLjYzJTIwNTAzLjc3JTIw''@;'; put 'put ''MTQ0My42MyUyMDcwNi45MyUyMDEyNDAuNDMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3MEMwREMlMjIlMjBwb2ludHMlM0QlMjI2MDguMjMlMjA4MTku''@;'; put 'put ''OTklMjA1NDYuOTQlMjA4ODEuMjglMjA4MDYuNDYlMjAxMTQwLjg5JTIwODY3LjY0JTIwMTA3OS43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RG''@;'; put 'put ''JTIyJTIwcG9pbnRzJTNEJTIyNDIwLjA1JTIwNDI5LjM5JTIwMzE5LjAxJTIwNTMwLjQ1JTIwNjA4LjIzJTIwODE5Ljk5JTIwNzA5LjMlMjA3MTguOTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTND''@;'; put 'put ''cG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2OUFGRDQlMjIlMjBwb2ludHMlM0QlMjI3MDkuMyUyMDcxOC45MSUyMDYwOC4yMyUyMDgxOS45OSUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2OC43NCUyMDk3OC42JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOEVCNUJDJTIyJTIwcG9pbnRzJTNEJTIyNjE5LjU5JTIwMjI5LjgyJTIwMzkzLjQyJTIwMy4xMiUyMDMyNy4yNyUyMDMuMTIlMjAxNjAuNjUlMjAxNjkuNzQlMjA0MjAuMDUlMjA0MjkuMzklMjIlM0Ul''@;'; put 'put ''M0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4RUI1QkMlMjIlMjBwb2ludHMlM0QlMjIzMTkuMDElMjA1MzAuNDUlMjAzMTkuMDElMjA1MzAuNDUlMjA5MC4yNyUyMDMw''@;'; put 'put ''MS40NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzdDQjBDNyUyMiUyMHBvaW50cyUzRCUyMjE2MC42NSUyMDE2OS43NCUyMDU5LjYyJTIwMjcwLjc3JTIw''@;'; put 'put ''OTAuMjclMjAzMDEuNDYlMjAzMTkuMDElMjA1MzAuNDUlMjA0MjAuMDUlMjA0MjkuMzklMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM4NEM0RDIlMjIlMjBw''@;'; put 'put ''b2ludHMlM0QlMjI1OS42MiUyMDI3MC43NyUyMDAuNzklMjAzMjkuNiUyMDAuNzklMjAzMzQuNDklMjAyNTcuNzElMjA1OTEuNzUlMjAzMTkuMDElMjA1MzAuNDUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3Q0IwQzclMjIlMjBwb2ludHMlM0QlMjI1MzcuNTUlMjAzLjEyJTIwMzkzLjQyJTIwMy4xMiUyMDYxOS41OSUyMDIyOS44MiUyMDY5MS43NCUyMDE1Ny42NiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzg3RDFEQiUyMiUyMHBvaW50cyUzRCUyMjg0Ni4yNSUyMDMuMTIlMjA1MzcuNTUlMjAzLjEyJTIwNjkxLjc0JTIwMTU3LjY2JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQ0RFM0VFJTIyJTIwcG9pbnRzJTNEJTIyOTA5Ljg3JTIwMTQ0My42MyUyMDg1MC4xOSUyMDEzODMuODclMjA3OTAuNDMlMjAxNDQzLjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUw''@;'; put 'put ''RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMzE5LjAxJTIwNTMwLjQ1JTIwMjU3LjcxJTIwNTkxLjc1JTIwNDQzLjQ0JTIwNzc3Ljc0JTIwNTQ2Ljk0JTIw''@;'; put 'put ''ODgxLjI4JTIwNjA4LjIzJTIwODE5Ljk5JTIwODY3LjY0JTIwMTA3OS43JTIwODY3LjY0JTIwMTA3OS43JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBE''@;'; put 'put ''RUVBJTIyJTIwcG9pbnRzJTNEJTIyODY3LjY0JTIwMTA3OS43JTIwODA2LjQ2JTIwMTE0MC44OSUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTA2NS41NyUyMDEwNzUuNTIlMjA5NjguNzQlMjA5NzguNiUyMDg2Ny42NCUyMDEwNzkuNyUyMDk2NC40NiUyMDExNzYuNjMlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjBwb2ludHMlM0QlMjI5NjQuNDYlMjAxMTc2LjYzJTIwODY3LjY0JTIwMTA3OS43JTIwODY3LjY0JTIwMTA3OS43JTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUz''@;'; put 'put ''QyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTIzMS4xNiUyMDE0NDMuNjMlMjAxMDEwLjky''@;'; put 'put ''JTIwMTIyMy4xMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEyNDAuMDglMjA3MDcuMjIlMjAxMTY3LjklMjA3''@;'; put 'put ''NzkuNCUyMDEyNjQuNjglMjA4NzYuNCUyMDEzMzYuODclMjA4MDQuMjIlMjAxMjQwLjA4JTIwNzA3LjIxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTZD''@;'; put 'put ''N0RGJTIyJTIwcG9pbnRzJTNEJTIyOTgwLjgzJTIwNDQ3LjM5JTIwNjkxLjc0JTIwMTU3LjY2JTIwNjE5LjU5JTIwMjI5LjgyJTIwOTA4LjY2JTIwNTE5LjU2JTIwOTgwLjgzJTIwNDQ3LjM5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRzJTNEJTIyNzA5LjMlMjA3MTguOTElMjA5NjguNzQlMjA5NzguNiUyMDExNjcuOTElMjA3NzkuNCUyMDkwOC42NiUyMDUxOS41NSUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzY5QUZENCUyMiUyMHBvaW50cyUzRCUyMjk4MC44MyUyMDQ0Ny4zOSUyMDkwOC42NiUyMDUxOS41NSUyMDExNjcuOTElMjA3NzkuNCUyMDEyNDAuMDglMjA3MDcu''@;'; put 'put ''MjElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxMDM0LjU5JTIwMy4xMiUyMDg0Ni4yNSUyMDMuMTIlMjA2OTEu''@;'; put 'put ''NzQlMjAxNTcuNjYlMjA5ODAuODMlMjA0NDcuMzklMjAxMjI5Ljc1JTIwMTk4LjQ3JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9p''@;'; put 'put ''bnRzJTNEJTIyMTI0MC4wOCUyMDcwNy4yMSUyMDEzMzYuODclMjA4MDQuMjIlMjAxNTg2LjAxJTIwNTU1LjA4JTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5''@;'; put 'put ''Z29uJTIwZmlsbCUzRCUyMiUyMzcwQzBEQyUyMiUyMHBvaW50cyUzRCUyMjEyMjkuNzUlMjAxOTguNDclMjA5ODAuODMlMjA0NDcuMzklMjAxMjQwLjA4JTIwNzA3LjIxJTIwMTQ4OS4xNCUyMDQ1OC4xMiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjEyOTIuMjIlMjAxMzAyLjM4JTIwMTQzMy4zMiUyMDE0NDMuNjMlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE0OTEuMTglMjAxMTAzLjQyJTIyJTNFJTNDJTJG''@;'; put 'put ''cG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQTBERUVBJTIyJTIwcG9pbnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjA5NDkuNzglMjAxMjg0LjI3JTIwMTEwOS4wOCUyMDE0''@;'; put 'put ''NDMuNjMlMjAxMTUwLjk4JTIwMTQ0My42MyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzVCOEM1JTIyJTIwcG9pbnRz''@;'; put 'put ''JTNEJTIyMTE1MC45OCUyMDE0NDMuNjMlMjAxMjMxLjE2JTIwMTQ0My42MyUyMDExOTEuMDklMjAxNDAzLjUxJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIz''@;'; put 'put ''OTZDN0RGJTIyJTIwcG9pbnRzJTNEJTIyMTI5Mi4yMiUyMDEzMDIuMzglMjAxMTEyLjAzJTIwMTEyMi4wMiUyMDEwMTAuOTIlMjAxMjIzLjEzJTIwMTE5MS4wOSUyMDE0MDMuNTElMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM2RUE0QkMlMjIlMjBwb2ludHMlM0QlMjIxMTkxLjA5JTIwMTQwMy41MSUyMDEyMzEuMTYlMjAxNDQzLjYzJTIwMTQzMy4zMiUyMDE0NDMuNjMlMjAxMjkyLjIyJTIwMTMwMi4zOCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQl''@;'; put 'put ''MEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwN0NCQiUyMiUyMG9wYWNpdHklM0QlMjIwLjQlMjIlMjBzdHlsZSUzRCUyMm1peC1ibGVuZC1tb2RlJTNBJTIwbXVsdGlwbHklM0IlMjIlMjBwb2ludHMl''@;'; put 'put ''M0QlMjIxMzgzLjMlMjA4NTAuNzUlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTQ5MS4xOCUyMDExMDMuNDIlMjAxNTYzLjM3JTIwMTAzMS4yMyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29u''@;'; put 'put ''JTIwZmlsbCUzRCUyMiUyM0I3Q0VEMiUyMiUyMHBvaW50cyUzRCUyMjE0OTEuMTglMjAxMTAzLjQyJTIwMTgzMC42MSUyMDE0NDMuNjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNkVBNEJDJTIyJTIwcG9pbnRzJTNEJTIyMTQ5MS4xOCUyMDExMDMuNDIlMjAxODMwLjYxJTIwMTQ0My42MyUyMDE5NzQuODYlMjAxNDQzLjYzJTIwMTU2My4zNyUyMDEwMzEuMjMlMjIlM0UlM0Ml''@;'; put 'put ''MkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBMERFRUElMjIlMjBwb2ludHMlM0QlMjIxODEyLjY1JTIwNzgxLjk1JTIwMTYzMi40NiUyMDYwMS41OSUyMDEzODMuMyUyMDg1''@;'; put 'put ''MC43NSUyMDE1NjMuMzclMjAxMDMxLjIzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTU2My4zNyUyMDEwMzEu''@;'; put 'put ''MjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDEwMjMuOTklMjAxODEyLjY1JTIwNzgxLjk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHln''@;'; put 'put ''b24lMjBmaWxsJTNEJTIyJTIzNzhDQUQ0JTIyJTIwcG9pbnRzJTNEJTIyMTU2My4zNyUyMDEwMzEuMjMlMjAxOTc0Ljg2JTIwMTQ0My42MyUyMDIwNTQuNDUlMjAxNDQzLjYzJTIwMjA1NC40NSUyMDEwMjMuOTklMjAxODEyLjY1JTIwNzgxLjk1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUw''@;'; put 'put ''QSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzOTFDNUUwJTIyJTIwcG9pbnRzJTNEJTIyODAzLjc0JTIwMTMzNy4zNiUyMDg1MC4xOSUyMDEzODMuODclMjA5NDkuNzglMjAxMjg0LjI3JTIwOTAzLjMxJTIw''@;'; put 'put ''MTIzNy43OCUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjEwNjUuNTclMjAxMDc1LjUyJTIwMTExMi4wMyUyMDEx''@;'; put 'put ''MjIuMDIlMjAxMzExLjEyJTIwOTIyLjk0JTIwMTI2NC42OSUyMDg3Ni40JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNzdCOEQ5JTIyJTIwcG9pbnRzJTNE''@;'; put 'put ''JTIyNjk3LjQ3JTIwMTQ0My42MyUyMDc5MC40MyUyMDE0NDMuNjMlMjA4NTAuMTklMjAxMzgzLjg3JTIwODAzLjc0JTIwMTMzNy4zNiUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIw''@;'; put 'put ''ZmlsbCUzRCUyMiUyM0EwREVFQSUyMiUyMHBvaW50cyUzRCUyMjk2NC40NiUyMDExNzYuNjMlMjA5MDMuMzElMjAxMjM3Ljc4JTIwOTQ5Ljc4JTIwMTI4NC4yNyUyMDEwMTAuOTIlMjAxMjIzLjEzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNURCNUQ2JTIyJTIwcG9pbnRzJTNEJTIyOTY0LjQ2JTIwMTE3Ni42MyUyMDkwMy4zMSUyMDEyMzcuNzglMjA5NDkuNzglMjAxMjg0LjI3JTIwMTAxMC45MiUyMDEyMjMuMTMlMjIlM0UlM0MlMkZwb2x5Z29u''@;'; put 'put ''JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM5NkM3REYlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxMDM4LjI0NzI5NyUyQyUyMDExNDkuMjc1NDI5JTI5JTIwcm90YXRlJTI4LTQ0''@;'; put 'put ''Ljk3MDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xMDM4LjI0NzI5NyUyQyUyMC0xMTQ5LjI3NTQyOSUyOSUyMCUyMiUyMHglM0QlMjI5NjYuNzUyMjk3JTIyJTIweSUzRCUyMjExMTYuNDEwNDMlMjIlMjB3aWR0aCUzRCUyMjE0Mi45OSUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJG''@;'; put 'put ''cmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzNTdBOEQwJTIyJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MTAzOC4yNDcyOTclMkMlMjAxMTQ5LjI3NTQyOSUyOSUyMHJvdGF0ZSUy''@;'; put 'put ''OC00NC45NzAwMDAlMjklMjB0cmFuc2xhdGUlMjgtMTAzOC4yNDcyOTclMkMlMjAtMTE0OS4yNzU0MjklMjklMjAlMjIlMjB4JTNEJTIyOTY2Ljc1MjI5NyUyMiUyMHklM0QlMjIxMTE2LjQxMDQzJTIyJTIwd2lkdGglM0QlMjIxNDIuOTklMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUz''@;'; put 'put ''QyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzk2QzdERiUyMiUyMHBvaW50cyUzRCUyMjEwMTAuOTIlMjAxMjIzLjEzJTIwMTAxMC45MiUyMDEyMjMuMTMlMjA5NjQuNDYlMjAx''@;'; put 'put ''MTc2LjYzJTIwOTY0LjQ2JTIwMTE3Ni42MyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzAwMDAwMCUyMiUyMG9wYWNpdHklM0QlMjIwLjQyJTIyJTIwcG9p''@;'; put 'put ''bnRzJTNEJTIyMTAxMC45MiUyMDEyMjMuMTMlMjAxMDEwLjkyJTIwMTIyMy4xMyUyMDk2NC40NiUyMDExNzYuNjMlMjA5NjQuNDYlMjAxMTc2LjYzJTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3Bv''@;'; put 'put ''bHlnb24lMjBmaWxsJTNEJTIyJTIzMDA3Q0JCJTIyJTIwb3BhY2l0eSUzRCUyMjAuNCUyMiUyMHN0eWxlJTNEJTIybWl4LWJsZW5kLW1vZGUlM0ElMjBtdWx0aXBseSUzQiUyMiUyMHBvaW50cyUzRCUyMjEzMzYuODclMjA4MDQuMjIlMjAxMjY0LjY5JTIwODc2LjQlMjAxMzExLjEyJTIwOTIy''@;'; put 'put ''Ljk0JTIwMTM4My4zJTIwODUwLjc1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzNTdBOEQwJTIyJTIwcG9pbnRzJTNEJTIyMTMzNi44NyUyMDgwNC4yMiUy''@;'; put 'put ''MDEyNjQuNjklMjA4NzYuNCUyMDEzMTEuMTIlMjA5MjIuOTQlMjAxMzgzLjMlMjA4NTAuNzUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM5M0Q4Q0ElMjIl''@;'; put 'put ''MjBvcGFjaXR5JTNEJTIyMC42JTIyJTIwc3R5bGUlM0QlMjJtaXgtYmxlbmQtbW9kZSUzQSUyMG92ZXJsYXklM0IlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTM4My4zJTIwODUwLjc1JTIwMTYzMi40NiUyMDYwMS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0Ml''@;'; put 'put ''MkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM1REI1RDYlMjIlMjBwb2ludHMlM0QlMjIxMzM2Ljg3JTIwODA0LjIyJTIwMTM4My4zJTIwODUwLjc1JTIwMTYzMi40NiUyMDYw''@;'; put 'put ''MS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjNBRkQzRTYlMjIlMjBwb2ludHMlM0QlMjIyMDU2JTIwMC4xMiUyMDE2''@;'; put 'put ''NDUuNDklMjAwLjEyJTIwMTY0OC40OSUyMDMuMTIlMjAxOTQ0LjA3JTIwMy4xMiUyMDE3OTYuMjIlMjAxNTAuOTklMjAxODkzLjEyJTIwMjQ3Ljk3JTIwMjA1NC40NSUyMDg2LjY0JTIwMjA1NC40NSUyMDE3OS42JTIwMTkzOS41OCUyMDI5NC40NyUyMDIwNTYlMjA0MTElMjIlM0UlM0MlMkZw''@;'; put 'put ''b2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcG9seWdvbiUyMGZpbGwlM0QlMjIlMjM3QUI5RDklMjIlMjBwb2ludHMlM0QlMjIxNjQ4LjQ5JTIwMy4xMiUyMDE3OTYuMjIlMjAxNTAuOTklMjAxOTQ0LjA3JTIwMy4xMiUy''@;'; put 'put ''MiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzY2QUVENCUyMiUyMHBvaW50cyUzRCUyMjIwNTQuNDUlMjA4Ni42NCUyMDE4OTMuMTIlMjAyNDcuOTclMjAxOTM5''@;'; put 'put ''LjU4JTIwMjk0LjQ3JTIwMjA1NC40NSUyMDE3OS42JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQjdDRUQyJTIyJTIwcG9pbnRzJTNEJTIyMTg4NC44MiUy''@;'; put 'put ''MDcwOS43OCUyMDIwNTQuNDUlMjA4NzkuNTclMjAyMDU0LjQ1JTIwNTQwLjE1JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZENEU3JTIyJTIwcG9pbnRz''@;'; put 'put ''JTNEJTIyMTQ4OS4xNCUyMDQ1OC4xMiUyMDE0ODkuMTQlMjA0NTguMTIlMjAxMzcxLjEzJTIwMzM5Ljk5JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BvbHlnb24lMjBmaWxsJTNEJTIyJTIzQUZE''@;'; put 'put ''NEU3JTIyJTIwcG9pbnRzJTNEJTIyMTc5Ni4yMiUyMDE1MC45OSUyMDE2NDguNDklMjAzLjEyJTIwMTQyNS4xJTIwMy4xMiUyMDEzMDEuOTElMjAxMjYuMzElMjAxNTYxLjMlMjAzODUuOTUlMjIlM0UlM0MlMkZwb2x5Z29uJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM5MUM1RTAlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNzk4Ljk1NDA2NiUyQyUyMDM4OC43OTg3ODElMjklMjByb3RhdGUlMjgtNDQuOTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE3OTguOTU0MDY2JTJD''@;'; put 'put ''JTIwLTM4OC43OTg3ODElMjklMjAlMjIlMjB4JTNEJTIyMTYzMi44MjQwNyUyMiUyMHklM0QlMjIzNTUuOTMzNzgxJTIyJTIwd2lkdGglM0QlMjIzMzIuMjYlMjIlMjBoZWlnaHQlM0QlMjI2NS43MyUyMiUzRSUzQyUyRnJlY3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzkxQzVFMCUyMiUyMHBvaW50cyUzRCUyMjE1ODYuMDElMjA1NTUuMDglMjAxNjMyLjQ2JTIwNjAxLjU5JTIwMTYzMi40NiUyMDYwMS41OSUyMDE1ODYuMDElMjA1NTUuMDglMjIlM0UlM0MlMkZwb2x5Z29uJTNF''@;'; put 'put ''JTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNTczLjcxMTU3NyUyQyUyMDQ3MC42MjAyNjMlMjklMjByb3RhdGUlMjgtNDUuMDAw''@;'; put 'put ''MDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE1NzMuNzExNTc3JTJDJTIwLTQ3MC42MjAyNjMlMjklMjAlMjIlMjB4JTNEJTIyMTUyMi42ODE1OCUyMiUyMHklM0QlMjI0MDIuMDg1MjYzJTIyJTIwd2lkdGglM0QlMjIxMDIuMDYlMjIlMjBoZWlnaHQlM0QlMjIxMzcuMDclMjIlM0UlM0MlMkZyZWN0''@;'; put 'put ''JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjNCM0VBRUUlMjIlMjB0cmFuc2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNzU4LjY3Njc1OCUyQyUyMDY1NS43NjcxMjAlMjklMjByb3RhdGUlMjgtNDQu''@;'; put 'put ''OTcwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE3NTguNjc2NzU4JTJDJTIwLTY1NS43NjcxMjAlMjklMjAlMjIlMjB4JTNEJTIyMTcwNy42NDY3NiUyMiUyMHklM0QlMjI1MjguMjkyMTIlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjI1NC45NSUyMiUzRSUzQyUyRnJl''@;'; put 'put ''Y3QlM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyM0IzRUFFRSUyMiUyMHBvaW50cyUzRCUyMjEzMDEuOTElMjAxMjYuMzElMjAxMTc4Ljg0JTIwMy4xMiUyMDEwMzQuNTklMjAzLjEyJTIwMTIy''@;'; put 'put ''OS43NSUyMDE5OC40NyUyMiUzRSUzQyUyRnBvbHlnb24lM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0Nwb2x5Z29uJTIwZmlsbCUzRCUyMiUyMzgzQzBDOCUyMiUyMHBvaW50cyUzRCUyMjE4MTIuNjUlMjA3ODEuOTUlMjAyMDU0LjQ1''@;'; put 'put ''JTIwMTAyMy45OSUyMDIwNTQuNDUlMjA4NzkuNTclMjAxODg0LjgyJTIwNzA5Ljc4JTIyJTNFJTNDJTJGcG9seWdvbiUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3JlY3QlMjBmaWxsJTNEJTIyJTIzN0RDNkRDJTIyJTIwdHJhbnNm''@;'; put 'put ''b3JtJTNEJTIydHJhbnNsYXRlJTI4MTM5NS41MTY5MDElMkMlMjAyOTIuMjA2NTE5JTI5JTIwcm90YXRlJTI4LTQ1LjAwMDAwMCUyOSUyMHRyYW5zbGF0ZSUyOC0xMzk1LjUxNjkwMSUyQyUyMC0yOTIuMjA2NTE5JTI5JTIwJTIyJTIweCUzRCUyMjEzNDQuNDkxOSUyMiUyMHklM0QlMjIxMDgu''@;'; put 'put ''NzAxNTE5JTIyJTIwd2lkdGglM0QlMjIxMDIuMDUlMjIlMjBoZWlnaHQlM0QlMjIzNjcuMDElMjIlM0UlM0MlMkZyZWN0JTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcmVjdCUyMGZpbGwlM0QlMjIlMjM2OEI4RDUlMjIlMjB0cmFu''@;'; put 'put ''c2Zvcm0lM0QlMjJ0cmFuc2xhdGUlMjgxNjQ1LjMxMzYxOSUyQyUyMDU0Mi4yNDk3NjAlMjklMjByb3RhdGUlMjgtNDUuMDAwMDAwJTI5JTIwdHJhbnNsYXRlJTI4LTE2NDUuMzEzNjE5JTJDJTIwLTU0Mi4yNDk3NjAlMjklMjAlMjIlMjB4JTNEJTIyMTU5NC4yODM2MiUyMiUyMHklM0QlMjI1''@;'; put 'put ''MDkuMzg0NzYlMjIlMjB3aWR0aCUzRCUyMjEwMi4wNiUyMiUyMGhlaWdodCUzRCUyMjY1LjczJTIyJTNFJTNDJTJGcmVjdCUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlM0NnJTIwdHJhbnNmb3JtJTNEJTIydHJhbnNsYXRlJTI4MC4wMDAwMDAlMkMlMjAzLjAwMDAwMCUyOSUyMiUyMHN0cm9rZSUzRCUyMiUyMzAwMDAwMCUyMiUyMG9wYWNpdHklM0QlMjIwLjE1JTIyJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNMC45NSUyQzAuMTIlMjBMMC45NSUyQzg0MC4xMiUyMiUyMGlkJTNEJTIyU2hhcGUlMjIlM0UlM0MlMkZwYXRoJTNFJTBEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGZyUzRSUwRCUwQSUyMCUyMCUyMCUyMCUyMCUy''@;'; put 'put ''MCUyMCUyMCUzQyUyRmclM0UlMEQlMEElMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBEJTBBJTNDJTJGc3ZnJTNFKTtiYWNrZ3JvdW5kLXNpemU6MTAwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNhbGMoNTgwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSAwO2JhY2tncm91bmQtcmVwZWF0''@;'; put 'put ''Om5vLXJlcGVhdH0ubG9naW4td3JhcHBlciAubG9naW57YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvcik7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9u''@;'; put 'put ''OmNvbHVtbjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7aGVpZ2h0OmF1dG87bWluLWhlaWdodDoxMDB2aDt3aWR0aDpjYWxjKDU4MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1mb290ZXIsLmxvZ2luLXdyYXBw''@;'; put 'put ''ZXIgLmxvZ2luIC5sb2dpbi1oZWFkZXJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcn0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWZvb3RlciAuYWN0aW9ucywubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWhlYWRl''@;'; put 'put ''ciAuYWN0aW9uc3ttYXJnaW4tbGVmdDphdXRvfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4taGVhZGVyIC5sb2dve2hlaWdodDoxNnB4O3dpZHRoOjEwMCU7bWFzazp1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCxcICUzQ3N2ZyUyMHdpZHRoJTNEJTIyMTA1JTIyJTIw''@;'; put 'put ''aGVpZ2h0JTNEJTIyMTYlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDUlMjAxNiUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk00NC45MzcxJTIwMTQuOEw0''@;'; put 'put ''MC4zNTk4JTIwMi4wMDA4MkM0MC4yOTMyJTIwMS44MDA5NCUyMDQwLjIyNjYlMjAxLjYwMTA2JTIwNDAuMjI2NiUyMDEuNDAxMTdDNDAuMjI2NiUyMDAuODY4MTUzJTIwNDAuNjkzJTIwMC4zNDE3OTclMjA0MS4zNTI2JTIwMC4zNDE3OTdDNDEuOTUyMiUyMDAuMzQxNzk3JTIwNDIuMzQ1MyUy''@;'; put 'put ''MDAuNzQxNTYzJTIwNDIuNDc4NiUyMDEuMjY3OTJMNDYuMjU2NCUyMDEyLjI3NDhMNTAuMTAwOCUyMDEuMjY3OTJDNTAuMzAwNyUyMDAuNzM0OSUyMDUwLjYzMzglMjAwLjM0MTc5NyUyMDUxLjIyNjglMjAwLjM0MTc5N0g1MS4zNkM1MS45NTk3JTIwMC4zNDE3OTclMjA1Mi4zNTI4JTIwMC43''@;'; put 'put ''NDE1NjMlMjA1Mi41NTI3JTIwMS4yNjc5Mkw1Ni4zMzA1JTIwMTIuMjc0OEw2MC4xNzQ5JTIwMS4yMDEyOUM2MC4zMDgyJTIwMC43MzQ5MDElMjA2MC42NDEzJTIwMC4zNDE3OTclMjA2MS4yMzQzJTIwMC4zNDE3OTdDNjEuOTAwNiUyMDAuMzQxNzk3JTIwNjIuMzYwMyUyMDAuODA4MTg4JTIw''@;'; put 'put ''NjIuMzYwMyUyMDEuNDAxMTdDNjIuMzYwMyUyMDEuNjAxMDYlMjA2Mi4yOTM2JTIwMS44Njc1NyUyMDYyLjIyNyUyMDIuMDAwODJMNTcuNTgzMSUyMDE0LjhDNTcuMzE2NiUyMDE1LjQ2NjMlMjA1Ni44NTAyJTIwMTUuNzkyOCUyMDU2LjMyMzglMjAxNS43OTI4SDU2LjI1NzJDNTUuNjU3NSUy''@;'; put 'put ''MDE1Ljc5MjglMjA1NS4yNjQ0JTIwMTUuNDU5NiUyMDU0Ljk5NzklMjAxNC44TDUxLjI4NjglMjAzLjkyNjM2TDQ3LjUwOSUyMDE0LjhDNDcuMzA5MSUyMDE1LjQ2NjMlMjA0Ni44NDk0JTIwMTUuNzkyOCUyMDQ2LjMxNjMlMjAxNS43OTI4SDQ2LjI0OTdDNDUuNjUwMSUyMDE1Ljc5MjglMjA0''@;'; put 'put ''NS4xOTAzJTIwMTUuNDU5NiUyMDQ0LjkyMzglMjAxNC44SDQ0LjkzNzFaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIyTTc4LjM1MjUlMjAxLjQ2NzhDNzguMzUyNSUyMDAuODY4MTUyJTIwNzguODE4OSUyMDAuMzQxNzk3JTIwNzkuNDc4NSUy''@;'; put 'put ''MDAuMzQxNzk3QzgwLjEzODIlMjAwLjM0MTc5NyUyMDgwLjYwNDUlMjAwLjgwODE4NyUyMDgwLjYwNDUlMjAxLjQ2NzhWNC4wNTI5NkM4MS43MzA2JTIwMS41MzQ0MyUyMDg0LjE4MjUlMjAwLjM0MTc5NyUyMDg1Ljg0MTUlMjAwLjM0MTc5N0M4Ni41MDExJTIwMC4zNDE3OTclMjA4Ni45Njc1''@;'; put 'put ''JTIwMC44MDgxODclMjA4Ni45Njc1JTIwMS40Njc4Qzg2Ljk2NzUlMjAyLjA2NzQ1JTIwODYuNTY3NyUyMDIuNTI3MTglMjA4NS45NzQ3JTIwMi41OTM4MUM4My4wNTY0JTIwMi45MjY5NSUyMDgwLjY3MTIlMjA1LjExMjM0JTIwODAuNjcxMiUyMDkuNDg5NzhWMTQuNTkzNUM4MC42NzEyJTIw''@;'; put 'put ''MTUuMTkzMSUyMDgwLjIwNDglMjAxNS43MTk1JTIwNzkuNTQ1MiUyMDE1LjcxOTVDNzguODg1NiUyMDE1LjcxOTUlMjA3OC40MTkyJTIwMTUuMTg2NCUyMDc4LjQxOTIlMjAxNC41OTM1VjEuNDYxMTQlMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0Ql''@;'; put 'put ''MjJNOTQuMTI5NCUyMDE1LjkyNzJDOTAuMDg1MSUyMDE1LjkyNzIlMjA4Ni43MDclMjAxMi43NDI0JTIwODYuNzA3JTIwOC4xNzE3VjguMTA1MDhDODYuNzA3JTIwMy43OTQyNyUyMDg5LjY5MTklMjAwLjM0OTYwOSUyMDkzLjgwMjklMjAwLjM0OTYwOUM5OC4xODAzJTIwMC4zNDk2MDklMjAx''@;'; put 'put ''MDAuNjk5JTIwMy45OTQxNSUyMDEwMC42OTklMjA3LjkxMTg2QzEwMC42OTklMjA4LjUxMTUxJTIwMTAwLjIzMiUyMDguOTcxMjMlMjA5OS42Mzk1JTIwOC45NzEyM0g4OC44OTkxQzg5LjIzMjIlMjAxMi4yMjI3JTIwOTEuNDg0MiUyMDE0LjAwODMlMjA5NC4xMzYlMjAxNC4wMDgzQzk1Ljk5''@;'; put 'put ''NDklMjAxNC4wMDgzJTIwOTcuMzIwOCUyMDEzLjI4MiUyMDk4LjM4MDIlMjAxMi4yODI2Qzk4LjU4MDElMjAxMi4xNDk0JTIwOTguNzglMjAxMi4wMTYxJTIwOTkuMDM5OCUyMDEyLjAxNjFDOTkuNTcyOCUyMDEyLjAxNjElMjAxMDAuMDMzJTIwMTIuNDgyNSUyMDEwMC4wMzMlMjAxMi45NDIy''@;'; put 'put ''QzEwMC4wMzMlMjAxMy4yMDg4JTIwOTkuODk5MyUyMDEzLjQ3NTMlMjA5OS42OTk0JTIwMTMuNjY4NUM5OC4zMDY5JTIwMTQuOTk0NCUyMDk2LjY0NzklMjAxNS45MjA1JTIwOTQuMTI5NCUyMDE1LjkyMDVWMTUuOTI3MlpNOTguNTA2OCUyMDcuMjM4OTFDOTguMzA2OSUyMDQuNTIwNTElMjA5''@;'; put 'put ''Ni43MTQ1JTIwMi4xMzUyMyUyMDkzLjgwMjklMjAyLjEzNTIzQzkxLjIxNzclMjAyLjEzNTIzJTIwODkuMjkyMiUyMDQuMzIwNjIlMjA4OC45NjU3JTIwNy4yMzg5MUg5OC41MTM1SDk4LjUwNjhaJTIyJTIwZmlsbCUzRCUyMiUyMzcxNzE3NSUyMiUyRiUzRSUwQSUzQ3BhdGglMjBkJTNEJTIy''@;'; put 'put ''TTYyLjM3NSUyMDExLjIxNThDNjIuMzc1JTIwNy45NjQ0JTIwNjUuMDI2OCUyMDYuMzA1MzclMjA2OC44MDQ2JTIwNi4zMDUzN0M3MC43MzAxJTIwNi4zMDUzNyUyMDcyLjEyMjYlMjA2LjU3MTg4JTIwNzMuNDQxOSUyMDYuOTcxNjVWNi40Mzg2M0M3My40NDE5JTIwMy43MjAyMiUyMDcxLjc4''@;'; put 'put ''MjglMjAyLjMyNzclMjA2OC45MzEyJTIwMi4zMjc3QzY3LjQwNTQlMjAyLjMyNzclMjA2Ni41NDU5JTIwMi41Mjc1OCUyMDY1LjQxOTklMjAyLjk5Mzk3QzY1LjI4NjYlMjAzLjA2MDYlMjA2NS4xNTM0JTIwMy4wNjA2JTIwNjUuMDIwMSUyMDMuMDYwNkM2NC40ODcxJTIwMy4wNjA2JTIwNjQu''@;'; put 'put ''MDI3NCUyMDIuNTk0MjElMjA2NC4wMjc0JTIwMi4wNjc4NUM2NC4wMjc0JTIwMS42MDE0NiUyMDY0LjIyNzMlMjAxLjM0MTYxJTIwNjQuNjI3JTIwMS4xNDE3MkM2Ni4wODYyJTIwMC40NzU0NDclMjA2Ny4yMTIyJTIwMC4yODIyMjclMjA2OS4xMzc3JTIwMC4yODIyMjdDNzEuMjU2NSUyMDAu''@;'; put 'put ''MjgyMjI3JTIwNzIuOTE1NSUyMDAuODE1MjUyJTIwNzMuOTc0OSUyMDEuOTQxMjZDNzQuOTY3NiUyMDIuOTM0MDElMjA3NS41MDA3JTIwNC4zOTMxNiUyMDc1LjUwMDclMjA2LjMxODdWMTQuNjA3MkM3NS41MDA3JTIwMTUuMjczNSUyMDc1LjAzNDMlMjAxNS43MzMyJTIwNzQuNDQxMyUyMDE1''@;'; put 'put ''LjczMzJDNzMuNzc1JTIwMTUuNzMzMiUyMDczLjM4MTklMjAxNS4yNjY4JTIwNzMuMzgxOSUyMDE0LjY3MzhWMTMuMjE0N0M3Mi4zMjI1JTIwMTQuNjA3MiUyMDcwLjU5NjklMjAxNS43OTk4JTIwNjcuOTQ1MSUyMDE1Ljc5OThDNjUuMjI2NyUyMDE1LjkzMzElMjA2Mi4zNzUlMjAxNC4zNDA3''@;'; put 'put ''JTIwNjIuMzc1JTIwMTEuMjIyNVYxMS4yMTU4Wk03My41MTUyJTIwMTAuMDg5OFY4LjYzMDY4QzcyLjM4OTElMjA4LjI5NzU0JTIwNzAuOTMlMjA3Ljk2NDQlMjA2OS4wNzExJTIwNy45NjQ0QzY2LjIxOTQlMjA3Ljk2NDQlMjA2NC42OTM3JTIwOS4yMjM2NiUyMDY0LjY5MzclMjAxMS4wODI2''@;'; put 'put ''VjExLjE0OTJDNjQuNjkzNyUyMDEzLjA3NDclMjA2Ni40MTkzJTIwMTQuMTM0MSUyMDY4LjQ3MTQlMjAxNC4xMzQxQzcxLjI1NjUlMjAxNC4xMzQxJTIwNzMuNTA4NSUyMDEyLjQ3NTElMjA3My41MDg1JTIwMTAuMDg5OEg3My41MTUyWiUyMiUyMGZpbGwlM0QlMjIlMjM3MTcxNzUlMjIlMkYl''@;'; put 'put ''M0UlMEElM0NwYXRoJTIwZCUzRCUyMk00LjEwMjIyJTIwMS4yNjg2MkMzLjYzNTgzJTIwMC4yMDkyMzclMjAyLjM3NjU2JTIwLTAuMzIzNzg3JTIwMS4yNTA1NSUyMDAuMjA5MjM1QzAuMTI0NTQ1JTIwMC43NDIyNTYlMjAtMC4yNzUyMTglMjAyLjAwMTUyJTIwMC4xOTExNzYlMjAzLjA2MDlM''@;'; put 'put ''NC45NjE3MiUyMDEzLjQ3NDhDNS42ODc5NiUyMDE1LjEzMzglMjA2LjQ4NzQ5JTIwMTUuOTI2NyUyMDguMDEzMjclMjAxNS45MjY3QzkuNTM5MDQlMjAxNS45MjY3JTIwMTAuMjY1MyUyMDE1LjAwMDYlMjAxMS4wNjQ4JTIwMTMuNDc0OEMxMS4wNjQ4JTIwMTMuNDc0OCUyMDE1LjI0MjQlMjA0''@;'; put 'put ''LjM4Njc5JTIwMTUuMzA5JTIwNC4zMjY4M0MxNS4zNzU2JTIwNC4yNjAyJTIwMTUuNTA4OSUyMDMuOTI3MDYlMjAxNS45MDg2JTIwMy45MjcwNkMxNi4yNDE4JTIwMy45MjcwNiUyMDE2LjU2ODMlMjA0LjE5MzU3JTIwMTYuNTY4MyUyMDQuNTkzMzRWMTMuNDgxNUMxNi41NjgzJTIwMTQuODc0''@;'; put 'put ''JTIwMTcuMjk0NSUyMDE2JTIwMTguODIwMyUyMDE2QzIwLjM0NjElMjAxNiUyMDIxLjA3MjMlMjAxNC44NzQlMjAyMS4wNzIzJTIwMTMuNDgxNVY2LjE4NTc0QzIxLjA3MjMlMjA0Ljc5MzIyJTIwMjIuMDY1JTIwMy44NjcxJTIwMjMuNDU3NiUyMDMuODY3MUMyNC44NTAxJTIwMy44NjcxJTIw''@;'; put 'put ''MjUuNzA5NiUyMDQuNzkzMjIlMjAyNS43MDk2JTIwNi4xODU3NFYxMy40ODE1QzI1LjcwOTYlMjAxNC44NzQlMjAyNi40NDI1JTIwMTYlMjAyNy45NjE2JTIwMTZDMjkuNDgwNyUyMDE2JTIwMzAuMjEzNiUyMDE0Ljg3NCUyMDMwLjIxMzYlMjAxMy40ODE1VjYuMTg1NzRDMzAuMjEzNiUyMDQu''@;'; put 'put ''NzkzMjIlMjAzMS4yMDY0JTIwMy44NjcxJTIwMzIuNTk4OSUyMDMuODY3MUMzMy45OTE0JTIwMy44NjcxJTIwMzQuODUwOSUyMDQuNzkzMjIlMjAzNC44NTA5JTIwNi4xODU3NFYxMy40ODE1QzM0Ljg1MDklMjAxNC44NzQlMjAzNS41NzcxJTIwMTYlMjAzNy4xMDI5JTIwMTZDMzguNjI4NyUy''@;'; put 'put ''MDE2JTIwMzkuMzU0OSUyMDE0Ljg3NCUyMDM5LjM1NDklMjAxMy40ODE1VjUuMTkyOTlDMzkuMzU0OSUyMDIuMTQxNDQlMjAzNi45MDMlMjAwLjAyMjY3ODElMjAzMy45ODQ3JTIwMC4wMjI2NzgxQzMxLjA2NjQlMjAwLjAyMjY3ODElMjAyOS4yMTQyJTIwMi4wODE0OCUyMDI5LjIxNDIlMjAy''@;'; put 'put ''LjA4MTQ4QzI4LjA4ODIlMjAwLjgyMjIxMyUyMDI2Ljc2MjMlMjAwLjAyMjY3ODElMjAyNC41MTAzJTIwMC4wMjI2NzgxQzIyLjEyNSUyMDAuMDIyNjc4MSUyMDE5Ljk5OTYlMjAyLjA4MTQ4JTIwMTkuOTk5NiUyMDIuMDgxNDhDMTkuMDA2OCUyMDAuODIyMjEzJTIwMTcuMzQ3OCUyMDAuMDIy''@;'; put 'put ''Njc4MSUyMDE1Ljk1NTMlMjAwLjAyMjY3ODFDMTMuODM2NSUyMDAuMDIyNjc4MSUyMDEyLjExMDklMjAwLjk0ODgwNSUyMDExLjExODElMjAzLjM0MDc0TDguMDY2NTclMjAxMC41Njk4TDQuMDg4ODklMjAxLjI4ODYxTDQuMTAyMjIlMjAxLjI2ODYyWiUyMiUyMGZpbGwlM0QlMjIlMjM3MTcx''@;'; put 'put ''NzUlMjIlMkYlM0UlMEElM0NwYXRoJTIwZCUzRCUyMk0xMDAuODkyJTIwMi4yMDA3MUMxMDAuODkyJTIwMS4xNDEzMyUyMDEwMS42ODQlMjAwLjM0MTc5NyUyMDEwMi43NTElMjAwLjM0MTc5N0MxMDMuODE3JTIwMC4zNDE3OTclMjAxMDQuNjA5JTIwMS4yMDEyOSUyMDEwNC42MDklMjAyLjIw''@;'; put 'put ''MDcxQzEwNC42MDklMjAzLjIwMDEzJTIwMTAzLjgxNyUyMDQuMDU5NjIlMjAxMDIuNzUxJTIwNC4wNTk2MkMxMDEuNzU4JTIwNC4wNTk2MiUyMDEwMC44OTIlMjAzLjIwMDEzJTIwMTAwLjg5MiUyMDIuMjAwNzFaTTEwNC4yNyUyMDIuMjAwNzFDMTA0LjI3JTIwMS4zNDEyMSUyMDEwMy42MSUy''@;'; put 'put ''MDAuNjc0OTM1JTIwMTAyLjc0NCUyMDAuNjc0OTM1QzEwMS44NzglMjAwLjY3NDkzNSUyMDEwMS4yMTglMjAxLjQwMTE4JTIwMTAxLjIxOCUyMDIuMjAwNzFDMTAxLjIxOCUyMDMuMDYwMjElMjAxMDEuODc4JTIwMy43MjY0OCUyMDEwMi43NDQlMjAzLjcyNjQ4QzEwMy42MSUyMDMuNzI2NDgl''@;'; put 'put ''MjAxMDQuMjclMjAzLjAwMDI0JTIwMTA0LjI3JTIwMi4yMDA3MVolMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDcGF0aCUyMGQlM0QlMjJNMTAyLjA4NSUyMDEuNDAyMDNDMTAyLjA4NSUyMDEuMjY4NzclMjAxMDIuMTUyJTIwMS4yMDIxNSUyMDEwMi4yODUlMjAxLjIw''@;'; put 'put ''MjE1SDEwMi44ODVDMTAzLjE1MSUyMDEuMjAyMTUlMjAxMDMuMjg0JTIwMS4yNjg3NyUyMDEwMy40MTglMjAxLjQwMjAzQzEwMy41NTElMjAxLjUzNTI4JTIwMTAzLjU1MSUyMDEuNjY4NTQlMjAxMDMuNTUxJTIwMS44MDE3OUMxMDMuNTUxJTIwMi4wNjgzJTIwMTAzLjQxOCUyMDIuMjY4MTkl''@;'; put 'put ''MjAxMDMuMjE4JTIwMi4zMzQ4MkwxMDMuNDg0JTIwMi42Njc5NkMxMDMuNTI5JTIwMi43MTIzNyUyMDEwMy41NTElMjAyLjc1Njc5JTIwMTAzLjU1MSUyMDIuODAxMjFDMTAzLjU1MSUyMDIuOTM0NDYlMjAxMDMuNDg0JTIwMy4wMDEwOSUyMDEwMy4zNTElMjAzLjAwMTA5QzEwMy4yODQlMjAz''@;'; put 'put ''LjAwMTA5JTIwMTAzLjIxOCUyMDIuOTM0NDclMjAxMDMuMTUxJTIwMi44Njc4NEwxMDIuNzUxJTIwMi40MDE0NEgxMDIuNDE4VjIuODAxMjFDMTAyLjQxOCUyMDIuOTM0NDYlMjAxMDIuMzUyJTIwMy4wMDEwOSUyMDEwMi4yMTglMjAzLjAwMTA5QzEwMi4wODUlMjAzLjAwMTA5JTIwMTAyLjAx''@;'; put 'put ''OSUyMDIuOTM0NDYlMjAxMDIuMDE5JTIwMi44MDEyMVYxLjQwODY5SDEwMi4wODVWMS40MDIwM1pNMTAyLjg3OCUyMDIuMTI4MjdDMTAzLjA3OCUyMDIuMTI4MjclMjAxMDMuMjExJTIwMS45OTUwMiUyMDEwMy4yMTElMjAxLjg2MTc2QzEwMy4yMTElMjAxLjY2MTg4JTIwMTAzLjA3OCUyMDEu''@;'; put 'put ''NTk1MjUlMjAxMDIuODc4JTIwMS41OTUyNUgxMDIuNDc4VjIuMTI4MjdIMTAyLjg3OFolMjIlMjBmaWxsJTNEJTIyJTIzNzE3MTc1JTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBKTstd2Via2l0LW1hc2stcmVwZWF0Om5vLXJlcGVhdDttYXNrLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItbG9naW4tbG9nby1jb2xvcil9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1mb290ZXJ7Z2FwOnZhcigtLWNsci1sb2dpbi1mb290ZXItZ2FwKX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWZvb3RlciBhLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAu''@;'; put 'put ''bG9naW4tZm9vdGVyIC5jb3B5cmlnaHR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItbG9naW4tY29weXJpZ2h0LWNvbG9yKX0ubG9naW4td3JhcHBlciAubG9naW4gLmxv''@;'; put 'put ''Z2luLWJvZHl7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDpjYWxjKDMyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2lu''@;'; put 'put ''IC50aXRsZXtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzcGxheS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRp''@;'; put 'put ''c3BsYXktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc3BsYXktbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci1sb2dpbi10aXRsZS1jb2xvcil9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50aXRsZSAud2VsY29tZXtjb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItbG9naW4td2VsY29tZS1jb2xvcik7bWFyZ2luOjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDB9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50aXRsZSAuc3VidGl0bGUsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC50aXRsZSAuaGludHtmb250LXNpemU6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFj''@;'; put 'put ''aW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci1sb2dpbi1oaW50LWNvbG9yKTttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwIDAgMH0ubG9naW4td3JhcHBlciAubG9naW4gLnRyYWRlbWFya3tjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItbG9naW4tdHJhZGVtYXJrLWNvbG9yKTtmb250LXdlaWdodDp2YXIoLS1jbHItbG9naW4tdHJhZGVtYXJrLWZvbnQtd2VpZ2h0KTtmb250LWZhbWlseTp2YXIoLS1jbHItbG9naW4tdHJhZGVtYXJrLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tY2xyLWxvZ2luLXRy''@;'; put 'put ''YWRlbWFyay1mb250LXNpemUpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1sb2dpbi10cmFkZW1hcmstbGV0dGVyLXNwYWNpbmcpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nLXRvcDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTEzKTt3aWR0aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmF1dGgtc291cmNlLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnVzZXJuYW1lLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnBhc3N3''@;'; put 'put ''b3JkLC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNoZWNrYm94LC5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luOjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIDB9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5s''@;'; put 'put ''b2dpbi1ncm91cCAuY2xyLWNoZWNrYm94LXdyYXBwZXJ7bWFyZ2luOjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKSAwfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmxvZ2luLXdy''@;'; put 'put ''YXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsLmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIg''@;'; put 'put ''LmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcj4uY2xyLWlucHV0e3dpZHRoOjEwMCV9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnt3aWR0''@;'; put 'put ''aDoxMDAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmNsci1jb250cm9sLWNvbnRhaW5lciAuY2xyLWlucHV0LXdyYXBwZXI+LmNsci1pbnB1dC1ncm91cHttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6Y2FsYygxMCooMXJlbS92YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWJhc2UpKSl9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcj4uY2xyLWlucHV0LWdyb3VwPi5jbHItaW5wdXR7d2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KSl9''@;'; put 'put ''LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAudG9vbHRpcC12YWxpZGF0aW9ue21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KX0ubG9naW4td3JhcHBlciAubG9naW4gLmxvZ2luLWdyb3VwIC50b29sdGlwLXZhbGlkYXRpb24gLnVzZXJuYW1lLC5sb2dpbi13''@;'; put 'put ''cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnRvb2x0aXAtdmFsaWRhdGlvbiAucGFzc3dvcmR7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjB9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3J7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29u''@;'; put 'put ''ZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6Y2FsYygyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9n''@;'; put 'put ''cmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtkaXNwbGF5Om5vbmU7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxvZ2luLWVycm9yLWJhY2tncm91bmQtY29sb3IpO2NvbG9yOnZhcigtLWNsci1hbGVydC1kYW5nZXItZm9udC1j''@;'; put 'put ''b2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItYWxlcnQtZGFuZ2VyLWJvcmRlci1jb2xvcil9LmxvZ2luLXdyYXBw''@;'; put 'put ''ZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3I6YmVmb3Jle2NvbnRlbnQ6IiI7bWFzazp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3glM0QlMjI1JTIwNSUyMDI2JTIwMjYlMjIlMjBwcmVzZXJ2ZUFz''@;'; put 'put ''cGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslMjIlM0UlM0NkZWZzJTNFJTND''@;'; put 'put ''c3R5bGUlM0UuY2xyLWktb3V0bGluZSU3QmZpbGwlM0Enbm9uZSclM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N0aXRsZSUzRWV4Y2xhbWF0aW9uLWNpcmNsZS1saW5lJTNDJTJGdGl0''@;'; put 'put ''bGUlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0bGluZS1wYXRoLTElMjIlMjBkJTNEJTIyTTE4JTJDNkExMiUyQzEyJTJDMCUyQzElMkMwJTJDMzAlMkMxOCUy''@;'; put 'put ''QzEyJTJDMTIlMkMwJTJDMCUyQzAlMkMxOCUyQzZabTAlMkMyMkExMCUyQzEwJTJDMCUyQzElMkMxJTJDMjglMkMxOCUyQzEwJTJDMTAlMkMwJTJDMCUyQzElMkMxOCUyQzI4WiUyMiUzRSUzQyUyRnBhdGglM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHItaS1vdXRsaW5lJTIwY2xyLWktb3V0''@;'; put 'put ''bGluZS1wYXRoLTIlMjIlMjBkJTNEJTIyTTE4JTJDMjAuMDdhMS4zJTJDMS4zJTJDMCUyQzAlMkMxLTEuMy0xLjN2LTZhMS4zJTJDMS4zJTJDMCUyQzElMkMxJTJDMi42JTJDMHY2QTEuMyUyQzEuMyUyQzAlMkMwJTJDMSUyQzE4JTJDMjAuMDdaJTIyJTNFJTNDJTJGcGF0aCUzRSUzQ2NpcmNs''@;'; put 'put ''ZSUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91dGxpbmUtcGF0aC0zJTIyJTIwY3glM0QlMjIxNy45NSUyMiUyMGN5JTNEJTIyMjMuMDIlMjIlMjByJTNEJTIyMS41JTIyJTNFJTNDJTJGY2lyY2xlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTNDJTJGc3ZnJTNFIik7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0Oy13ZWJraXQtbWFzay1zaXplOmNvdmVyO21hc2stc2l6ZTpjb3ZlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1sb2dpbi1lcnJvci1pY29uLWNvbG9yKTttYXJnaW46''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpIDAgMDtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmVycm9yLmFj''@;'; put 'put ''dGl2ZXtkaXNwbGF5OmZsZXh9LmxvZ2luLXdyYXBwZXIgLmxvZ2luIC5sb2dpbi1ncm91cCAuZXJyb3IuYWN0aXZlOmJlZm9yZXtmbGV4OjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLmJ0bnttYXJnaW46dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS01KSAwO21heC13aWR0aDpub25lfS5sb2dpbi13cmFwcGVyIC5sb2dpbiAubG9naW4tZ3JvdXAgLnNpZ251cHtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9n''@;'; put 'put ''cmFwaHktYm9keS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7dGV4dC1hbGlnbjpjZW50ZXJ9LmxvZ2luLXdyYXBwZXIgLmxvZ2luOmFm''@;'; put 'put ''dGVye3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibGFjayk7b3BhY2l0eTouMTt0b3A6MDtyaWdodDpjYWxjKC0xKnZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtc3BhY2UtMikpfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpey5sb2dpbi13cmFwcGVye2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1jbHItbG9naW4tYmFja2dyb3VuZC1jb2xvcil9LmxvZ2luLXdyYXBwZXIgLmxvZ2lu''@;'; put 'put ''e3dpZHRoOjEwMCU7bWFyZ2luLWxlZnQ6MDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgMjAlfS5sb2dpbi13cmFwcGVyIC5sb2dpbjphZnRlcntjb250ZW50Om5vbmV9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5sb2dpbi13cmFwcGVyIC5sb2dpbntw''@;'; put 'put ''YWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgMTUlfX0ubWFpbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwdmg7YmFja2dyb3VuZDp2YXIoLS1jbHItZ2xvYmFsLWFwcC1iYWNrZ3JvdW5kKX0ubWFpbi1jb250YWluZXIgLmFs''@;'; put 'put ''ZXJ0LmFsZXJ0LWFwcC1sZXZlbHtmbGV4OjAgMCBhdXRvO292ZXJmbG93LXg6aGlkZGVufS5tYWluLWNvbnRhaW5lciBoZWFkZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXJ7ZmxleDowIDAgdmFyKC0tY2xyLWhlYWRlci1oZWlnaHQpfS5tYWluLWNvbnRhaW5lciAuc3ViLW5hdiwubWFpbi1j''@;'; put 'put ''b250YWluZXIgLnN1Ym5hdntmbGV4OjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0ubWFpbi1jb250YWluZXIgLnUtbWFpbi1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMSBhdXRvO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWlu''@;'; put 'put ''ZXIgLmNvbnRlbnQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO21pbi1oZWlnaHQ6LjA1cmVtfS5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYXtmbGV4OjEgMSBhdXRvO292ZXJmbG93LXk6YXV0bzstd2Via2l0LW92ZXJmbG93LXNj''@;'; put 'put ''cm9sbGluZzp0b3VjaDtwYWRkaW5nOjEuMnJlbX0ubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jb250ZW50LWFyZWE+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubWFpbi1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2e2ZsZXg6MCAw''@;'; put 'put ''IGF1dG87b3JkZXI6LTF9QG1lZGlhIHByaW50ey5tYWluLWNvbnRhaW5lcntoZWlnaHQ6YXV0b319Ym9keS5uby1zY3JvbGxpbmcsYm9keVtjZHMtbGF5b3V0PW5vLXNjcm9sbGluZ10sYm9keS5uby1zY3JvbGxpbmcgLm1haW4tY29udGFpbmVyIC5jb250ZW50LWNvbnRhaW5lciAuY29udGVu''@;'; put 'put ''dC1hcmVhLGJvZHlbY2RzLWxheW91dD1uby1zY3JvbGxpbmddIC5tYWluLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgLmNvbnRlbnQtYXJlYXtvdmVyZmxvdzpoaWRkZW59OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItbW9kYWwtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2Jq''@;'; put 'put ''ZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1tb2RhbC1jbG9zZS1jb2xvcjp2YXIoLS1jbHItY2xvc2UtY29sb3IpOy0tY2xyLW1vZGFsLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLW1vZGFsLWNvbnRlbnQtYm94LXNoYWRv''@;'; put 'put ''dzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LXNoYWRvdy0zMDApOy0tY2xyLW1vZGFsLWJhY2tkcm9wLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3ZlcmxheS1iYWNrZHJvcC1iYWNrZ3JvdW5kKTstLWNsci1tb2RhbC1zbS13aWR0aDpjYWxjKDI4OCAqICgxcmVtIC8gdmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1iYXNlKSkpOy0tY2xyLW1vZGFsLW1kLXdpZHRoOmNhbGMoNTc2ICogKDFyZW0gLyB2YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7LS1jbHItbW9kYWwtbGctd2lkdGg6Y2FsYyg4NjQgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNsci1tb2RhbC14bC13aWR0''@;'; put 'put ''aDpjYWxjKDExNTIgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNsci1tb2RhbC10aXRsZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1z''@;'; put 'put ''ZWN0aW9uLWZvbnQtc2l6ZSk7LS1jbHItbW9kYWwtdGl0bGUtZm9udC1mYW1pbHk6dmFyKC0tY2xyLW1ldHJvcG9saXMtZm9udC1mYW1pbHkpOy0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpOy0tY2xy''@;'; put 'put ''LW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpOy0tY2xyLW1vZGFsLXRpdGxlLWxldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpfS5tb2RhbHtw''@;'; put 'put ''b3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MTA1MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpKjIpO21heC13aWR0aDox''@;'; put 'put ''MDAlfS5tb2RhbCAuYWxlcnQrLm1vZGFsLWhlYWRlciwubW9kYWwgLmFsZXJ0Ky5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGV7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpey5tb2RhbHtwYWRkaW5nOmNhbGMo''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KS8yKX19LnNpZGUtcGFuZWwgLm1vZGFse2xlZnQ6aW5pdGlhbDtwYWRkaW5nOjA7aGVpZ2h0OjEwMCV9LnNpZGUtcGFuZWwgLm1vZGFsIC5tb2RhbC1jb250ZW50LXdyYXBwZXJ7aGVpZ2h0OjEwMCV9LnNpZGUtcGFuZWwgLm1vZGFsIC5tb2RhbC1j''@;'; put 'put ''b250ZW50LXdyYXBwZXIgLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uc2lkZS1wYW5lbCAubW9kYWwgLm1vZGFsLWRpYWxvZ3tib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7aGVpZ2h0OjEwMCV9LnNpZGUtcGFuZWwgLm1vZGFs''@;'; put 'put ''Lm1vZGFsLWZ1bGwtc2NyZWVue2luc2V0OjA7cGFkZGluZzowfS5zaWRlLXBhbmVsIC5tb2RhbCAubW9kYWwtYm9keS13cmFwcGVye2ZsZXg6MSAxO21heC1oZWlnaHQ6MTAwJX0ubW9kYWwtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTA1MDt3aWR0aDp2YXIoLS1jbHItbW9k''@;'; put 'put ''YWwtbWQtd2lkdGgpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLW1vZGFsLWJvcmRlci1yYWRpdXMpO2JveC1zaGFkb3c6dmFyKC0tY2xyLW1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdyk7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1tb2RhbC1iZy1jb2xvcik7bWF4LXdpZHRoOjEwMCV9Lm1vZGFsLWRpYWxvZy5tb2RhbC1zbXt3aWR0aDp2YXIoLS1jbHItbW9kYWwtc20td2lkdGgpfS5tb2RhbC1kaWFs''@;'; put 'put ''b2cubW9kYWwtbGd7d2lkdGg6dmFyKC0tY2xyLW1vZGFsLWxnLXdpZHRoKX0ubW9kYWwtZGlhbG9nLm1vZGFsLXhse3dpZHRoOnZhcigtLWNsci1tb2RhbC14bC13aWR0aCl9Lm1vZGFsLWRpYWxvZyAubW9kYWwtY29udGVudHtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9Lm1v''@;'; put 'put ''ZGFsLWhlYWRlciwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxle2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIDB9Lm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47''@;'; put 'put ''YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubW9kYWwtaGVhZGVyIC5tb2RhbC10aXRsZSwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5tb2RhbC10aXRsZSwubW9kYWwtaGVhZGVyIC5zaWRlLXBhbmVsLXRpdGxlLC5tb2RhbC1oZWFkZXItLWFjY2Vzc2libGUgLnNpZGUtcGFuZWwtdGl0bGV7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tbGV0dGVyLXNwYWNpbmcpO21hcmdpbjowfS5tb2RhbC1oZWFkZXIgLm1vZGFsLXRpdGxlOm5vdChbY2RzLXRleHRdKSwu''@;'; put 'put ''bW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5tb2RhbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlciAuc2lkZS1wYW5lbC10aXRsZTpub3QoW2Nkcy10ZXh0XSksLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuc2lkZS1wYW5lbC10aXRsZTpub3QoW2Nkcy10ZXh0XSl7Zm9u''@;'; put 'put ''dC1mYW1pbHk6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLW1vZGFsLXRpdGxlLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItbW9kYWwtdGl0''@;'; put 'put ''bGUtbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNsci1tb2RhbC10aXRsZS1sZXR0ZXItc3BhY2luZyl9Lm1vZGFsLWhlYWRlciAuY2xvc2UsLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2V7Zm9udC1zaXplOmluaXRpYWw7bGluZS1oZWlnaHQ6aW5pdGlhbH0ubW9k''@;'; put 'put ''YWwtaGVhZGVyIC5jbG9zZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5jbG9zZSBjbHItaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZSBjbHItaWNvbntmaWxsOnZhcigtLWNsci1tb2RhbC1jbG9z''@;'; put 'put ''ZS1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubW9kYWwtaGVhZGVyIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZTpob3ZlciBjZHMtaWNvbiwubW9kYWwt''@;'; put 'put ''aGVhZGVyIC5jbG9zZTpob3ZlciBjbHItaWNvbiwubW9kYWwtaGVhZGVyLS1hY2Nlc3NpYmxlIC5jbG9zZTpob3ZlciBjbHItaWNvbntmaWxsOnZhcigtLWNsci1jbG9zZS1jb2xvci1ob3Zlcil9Lm1vZGFsLWhlYWRlciAuY2xvc2U6aG92ZXI6YWN0aXZlIGNkcy1pY29uLC5tb2RhbC1oZWFk''@;'; put 'put ''ZXItLWFjY2Vzc2libGUgLmNsb3NlOmhvdmVyOmFjdGl2ZSBjZHMtaWNvbiwubW9kYWwtaGVhZGVyIC5jbG9zZTpob3ZlcjphY3RpdmUgY2xyLWljb24sLm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZSAuY2xvc2U6aG92ZXI6YWN0aXZlIGNsci1pY29ue2ZpbGw6dmFyKC0tY2xyLWNsb3NlLWNv''@;'; put 'put ''bG9yLWFjdGl2ZSl9Lm1vZGFsLXRpdGxlLXdyYXBwZXJ7ZmxleDoxfS5tb2RhbC10aXRsZS13cmFwcGVyIC5tb2RhbC10aXRsZSBoMywubW9kYWwtdGl0bGUtd3JhcHBlciAuc2lkZS1wYW5lbC10aXRsZSBoM3ttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0Ojcw''@;'; put 'put ''dmg7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVufS5tb2RhbC1ib2R5LXdyYXBwZXIgLm1vZGFsLWJvZHksLm1vZGFsLWJvZHktd3JhcHBlciAuc2lkZS1wYW5lbC1ib2R5e2NvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7Zm9udC1zaXplOnZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2lu''@;'; put 'put ''Zzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0ubW9kYWwtYm9keS13cmFwcGVyPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9Lm1vZGFsLWJvZHktd3JhcHBlcj46bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9Lm1vZGFsLWZvb3Rlciwuc2lkZS1w''@;'; put 'put ''YW5lbC1mb290ZXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgMCAwIDA7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9Lm1vZGFsLWZvb3RlciAuYnRuLC5zaWRlLXBhbmVsLWZvb3RlciAuYnRue21h''@;'; put 'put ''cmdpbjowfS5zaWRlLXBhbmVsLWZvb3RlcntwYWRkaW5nLXRvcDowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY4cHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKXsubW9kYWwtYm9keS13cmFwcGVye21heC1oZWlnaHQ6NTV2aH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13''@;'; put 'put ''aWR0aDo1NzZweCl7Lm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0OjU1dmh9fS5tb2RhbC1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLW1vZGFsLWJhY2tkcm9wLWNvbG9yKTt6LWluZGV4OjEwNDB9Lm1vZGFsIC5tb2RhbC1u''@;'; put 'put ''YXZ7ZGlzcGxheTpub25lfS5tb2RhbC5tb2RhbC1mdWxsLXNjcmVlbntwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7aGVpZ2h0OjEwMCV9Lm1vZGFsLm1vZGFsLWZ1bGwtc2NyZWVuIC5tb2RhbC1kaWFsb2d7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Lm1v''@;'; put 'put ''ZGFsLm1vZGFsLWZ1bGwtc2NyZWVuIC5tb2RhbC1kaWFsb2cgLm1vZGFsLWNvbnRlbnQtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjF9Lm1vZGFsLm1vZGFsLWZ1bGwtc2NyZWVuIC5tb2RhbC1kaWFsb2cgLm1vZGFsLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9u''@;'; put 'put ''OmNvbHVtbjtmbGV4LWdyb3c6MX0ubW9kYWwubW9kYWwtZnVsbC1zY3JlZW4gLm1vZGFsLWRpYWxvZyAubW9kYWwtYm9keS13cmFwcGVyLC5tb2RhbC5tb2RhbC1mdWxsLXNjcmVlbiAubW9kYWwtZGlhbG9nIC5tb2RhbC1ib2R5e2ZsZXgtZ3JvdzoxO21heC1oZWlnaHQ6MTAwJX06cm9vdCBb''@;'; put 'put ''Y2RzLXRoZW1lXXstLWNsci1oZWFkZXItaGVpZ2h0OmNhbGMoNjAgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNsci1oZWFkZXItZGl2aWRlci1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi02MDApOy0tY2xyLWhlYWRlci1iZy1jb2xvcjp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvb2wtZ3JheS0xMDAwKTstLWNsci1oZWFkZXItMi1iZy1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi04MDApOy0tY2xyLWhlYWRlci0zLWJnLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYXp1cmUtOTAwKTstLWNs''@;'; put 'put ''ci1oZWFkZXItNC1iZy1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTMtYmctY29sb3IpOy0tY2xyLWhlYWRlci01LWJnLWNvbG9yOnZhcigtLWNsci1oZWFkZXItMy1iZy1jb2xvcik7LS1jbHItaGVhZGVyLTYtYmctY29sb3I6dmFyKC0tY2xyLWhlYWRlci1iZy1jb2xvcik7LS1jbHItaGVhZGVy''@;'; put 'put ''LTctYmctY29sb3I6dmFyKC0tY2xyLWhlYWRlci0yLWJnLWNvbG9yKTstLWNsci1oZWFkZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi0xMDApOy0tY2xyLWhlYWRlci1mb250LWNvbG9yLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3Ry''@;'; put 'put ''dWN0aW9uLTUwKTstLWNsci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC13ZWlnaHQpOy0tY2xyLWhlYWRlci10aXRsZS1mb250LWZhbWlseTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktaGVhZGVyLWZvbnQt''@;'; put 'put ''ZmFtaWx5KTstLWNsci1oZWFkZXItc2VhcmNoLWljb24tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLWhlYWRlci1zZWFyY2gtbWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTstLWNsci1oZWFkZXItc2VhcmNoLW1hcmdpbi1yaWdodDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTcpOy0tY2xyLWhlYWRlci1zZWFyY2gtZ2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7LS1jbHItaGVhZGVyLXNlYXJjaC1pbnB1dC1mb250LWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3Itd2hpdGUpOy0tY2xyLWhlYWRlci1zZWFyY2gtcGxhY2Vob2xkZXIt''@;'; put 'put ''Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXJlZ3VsYXIpOy0tY2xyLWhlYWRlci1zZWFyY2gtcGxhY2Vob2xkZXItdGV4dC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWNvbnN0cnVjdGlvbi00MDApOy0tY2xyLWhlYWRlci1zZWFyY2gt''@;'; put 'put ''Ym9yZGVyLWFjdGl2ZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIEhpZ2hsaWdodDstLWNsci1oZWFkZXItc2VhcmNoLWJvcmRlci1ob3Zlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtY29sb3ItY29uc3RydWN0aW9uLTQwMCl9aGVhZGVyLC5oZWFkZXJ7ZGlzcGxheTpmbGV4O2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWJnLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci1oZWlnaHQp''@;'; put 'put ''O3doaXRlLXNwYWNlOm5vd3JhcH1oZWFkZXIuaGVhZGVyLTEsLmhlYWRlci5oZWFkZXItMXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IpfWhlYWRlci5oZWFkZXItMiwuaGVhZGVyLmhlYWRlci0ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci0y''@;'; put 'put ''LWJnLWNvbG9yKX1oZWFkZXIuaGVhZGVyLTMsLmhlYWRlci5oZWFkZXItM3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItMy1iZy1jb2xvcil9aGVhZGVyLmhlYWRlci00LC5oZWFkZXIuaGVhZGVyLTR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTQtYmctY29s''@;'; put 'put ''b3IpfWhlYWRlci5oZWFkZXItNSwuaGVhZGVyLmhlYWRlci01e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci01LWJnLWNvbG9yKX1oZWFkZXIuaGVhZGVyLTYsLmhlYWRlci5oZWFkZXItNntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItNi1iZy1jb2xvcil9aGVh''@;'; put 'put ''ZGVyLmhlYWRlci03LC5oZWFkZXIuaGVhZGVyLTd7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLTctYmctY29sb3IpfWhlYWRlci5oZWFkZXItOCwuaGVhZGVyLmhlYWRlci04e2JhY2tncm91bmQtY29sb3I6IzBmMTcxY31oZWFkZXIgLmJyYW5kaW5nLC5oZWFkZXIgLmJyYW5k''@;'; put 'put ''aW5ne2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO21pbi13aWR0aDpjYWxjKDIwNCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9aGVhZGVyIC5icmFuZGluZz5hLGhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5rLC5o''@;'; put 'put ''ZWFkZXIgLmJyYW5kaW5nPmEsLmhlYWRlciAuYnJhbmRpbmc+Lm5hdi1saW5re2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS01KX1oZWFkZXIgLmJyYW5kaW5nPmE6Zm9jdXMsaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuYnJhbmRpbmc+YTpmb2N1cywuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbms6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTQpKX1oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbixoZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLGhlYWRlciAuYnJhbmRpbmcgY2xyLWljb24sLmhlYWRlciAuYnJhbmRpbmcgLmNsci1pY29uLC5oZWFkZXIgLmJyYW5kaW5nIGNkcy1pY29uLC5oZWFkZXIgLmJyYW5kaW5nIGNsci1p''@;'; put 'put ''Y29ue2ZsZXgtZ3JvdzowO2ZsZXgtc2hyaW5rOjA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpfWhlYWRlciAuYnJhbmRpbmcgLnRpdGxlLC5oZWFkZXIgLmJyYW5kaW5nIC50aXRsZXtjb2xvcjp2YXIoLS1jbHItaGVh''@;'; put 'put ''ZGVyLWZvbnQtY29sb3IpO2ZvbnQtZmFtaWx5OnZhcigtLWNsci1oZWFkZXItdGl0bGUtZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci10aXRsZS1mb250LXdl''@;'; put 'put ''aWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncyAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtdGV4dCwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMg''@;'; put 'put ''Lm5hdi10ZXh0e2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXIt''@;'; put 'put ''c3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX1oZWFkZXIgLnNldHRpbmdzIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIGNsci1pY29uLC5oZWFkZXIgLnNldHRpbmdzIGNsci1p''@;'; put 'put ''Y29uLC5oZWFkZXIgLmhlYWRlci1uYXYgY2xyLWljb24sLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluayxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLGhlYWRlciAu''@;'; put 'put ''aGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluaywuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluaywuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmt7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246''@;'; put 'put ''cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1oZWFkZXIgLnNldHRpbmdzIC5uYXYt''@;'; put 'put ''bGluazpob3ZlcixoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rOmhvdmVyLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpob3ZlciwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpob3ZlciwuaGVhZGVyIC5o''@;'; put 'put ''ZWFkZXItYWN0aW9ucyAubmF2LWxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLWhvdmVyKX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpkaXNhYmxlZCxoZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLWFjdGlv''@;'; put 'put ''bnMgLm5hdi1saW5rOmRpc2FibGVkLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluazpkaXNhYmxlZCwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpkaXNhYmxlZCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWhlYWRl''@;'; put 'put ''ciAuc2V0dGluZ3MgLm5hdi1saW5rIGNkcy1pY29uLGhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgY2RzLWljb24saGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluayBjbHItaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25z''@;'; put 'put ''IC5uYXYtbGluayBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjbHItaWNvbiwuaGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsgY2RzLWljb24sLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5r''@;'; put 'put ''IGNkcy1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''OSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0''@;'; put 'put ''LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLm5hdi1pY29uLXRleHR7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCl9''@;'; put 'put ''aGVhZGVyIC5zZXR0aW5ncyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRl''@;'; put 'put ''ci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2xyLWljb24saGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbixoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLnNldHRp''@;'; put 'put ''bmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNkcy1pY29uLC5oZWFkZXIgLnNldHRpbmdzIC5uYXYtbGluay5uYXYtaWNvbi10ZXh0IGNsci1pY29uLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rLm5hdi1pY29uLXRleHQgY2RzLWljb24sLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2''@;'; put 'put ''LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjZHMtaWNvbiwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsubmF2LWljb24tdGV4dCBjbHItaWNvbnt0cmFuc2Zvcm06bm9uZX1oZWFkZXIg''@;'; put 'put ''LnNldHRpbmdzIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsgLm5hdi1pY29uKy5uYXYtdGV4dCxoZWFkZXIgLmhlYWRlci1hY3Rpb25zIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLnNldHRpbmdzIC5uYXYt''@;'; put 'put ''bGluayAubmF2LWljb24rLm5hdi10ZXh0LC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHR7ZGlzcGxheTpub25lfWhlYWRlciAuc2V0dGluZ3MgLm5hdi1s''@;'; put 'put ''aW5rLmFjdGl2ZSAubmF2LXRleHQsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi10ZXh0LGhlYWRlciAuaGVhZGVyLWFjdGlvbnMgLm5hdi1saW5rLmFjdGl2ZSAubmF2LXRleHQsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rLmFjdGl2ZSAubmF2LXRleHQsLmhl''@;'; put 'put ''YWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtdGV4dCwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbmsuYWN0aXZlIC5uYXYtdGV4dHtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigt''@;'; put 'put ''LWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfWhlYWRlciAuc2V0dGluZ3MgLm5h''@;'; put 'put ''di1saW5rOmZvY3VzLGhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zm9jdXMsaGVhZGVyIC5oZWFkZXItYWN0aW9ucyAubmF2LWxpbms6Zm9jdXMsLmhlYWRlciAuc2V0dGluZ3MgLm5hdi1saW5rOmZvY3VzLC5oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmZvY3VzLC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1hY3Rpb25zIC5uYXYtbGluazpmb2N1c3tvdXRsaW5lLW9mZnNldDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkpfWhlYWRlciAuaGVhZGVyLW5hdiwuaGVhZGVyIC5oZWFkZXItbmF2e2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO2FsaWduLWl0ZW1zOmNlbnRl''@;'; put 'put ''cjtwb3NpdGlvbjpyZWxhdGl2ZX1oZWFkZXIgLmhlYWRlci1uYXY6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1uYXY6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXIt''@;'; put 'put ''Y29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6MH1oZWFkZXIgLmhlYWRlci1uYXYgLm5hdi1saW5rOmZpcnN0LW9mLXR5''@;'; put 'put ''cGUsaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGUsLmhlYWRlciAuaGVhZGVyLW5hdiAubmF2LWxpbms6Zmlyc3Qtb2YtdHlwZSwuaGVhZGVyIC5oZWFkZXItbmF2IC5uYXYtbGluazpsYXN0LW9mLXR5cGV7cG9zaXRpb246cmVsYXRpdmV9aGVhZGVyIC5zZXR0aW5n''@;'; put 'put ''cyxoZWFkZXIgLmhlYWRlci1hY3Rpb25zLC5oZWFkZXIgLnNldHRpbmdzLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25ze2ZsZXg6MSAwIGF1dG87ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH1oZWFkZXIgLnNldHRpbmdzPjpub3QoLmRyb3Bkb3duKTpiZWZvcmUsaGVhZGVy''@;'; put 'put ''IC5zZXR0aW5ncz4uZHJvcGRvd24+LmRyb3Bkb3duLXRvZ2dsZTpiZWZvcmUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz46bm90KC5kcm9wZG93bik6YmVmb3JlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YmVmb3JlLC5oZWFkZXIgLnNldHRpbmdz''@;'; put 'put ''Pjpub3QoLmRyb3Bkb3duKTpiZWZvcmUsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6YmVmb3JlLC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPjpub3QoLmRyb3Bkb3duKTpiZWZvcmUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93''@;'; put 'put ''bi10b2dnbGU6YmVmb3Jle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6MH1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGUsLmhl''@;'; put 'put ''YWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGUsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGV7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTgpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yKX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93''@;'; put 'put ''bj4uZHJvcGRvd24tdG9nZ2xlOmhvdmVyLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6aG92ZXIsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3du''@;'; put 'put ''Pi5kcm9wZG93bi10b2dnbGU6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1mb250LWNvbG9yLWhvdmVyKX1oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlOmRpc2FibGVkLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dn''@;'; put 'put ''bGU6ZGlzYWJsZWQsLmhlYWRlciAuc2V0dGluZ3M+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWQsLmhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duPi5kcm9wZG93bi10b2dnbGU6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfWhlYWRlciAuc2V0dGluZ3M+LmRy''@;'; put 'put ''b3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSxoZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksaGVhZGVyIC5oZWFkZXItYWN0aW9u''@;'; put 'put ''cz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLGhlYWRlciAuaGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2xyLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5z''@;'; put 'put ''ZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjZHMtaWNvbjpub3QoW3NoYXBlXj1hbmdsZV0pLC5oZWFkZXIgLnNldHRpbmdzPi5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlLm5hdi1pY29uIGNsci1pY29uOm5vdChbc2hhcGVePWFuZ2xlXSksLmhlYWRlciAu''@;'; put 'put ''aGVhZGVyLWFjdGlvbnM+LmRyb3Bkb3duIC5kcm9wZG93bi10b2dnbGUubmF2LWljb24gY2RzLWljb246bm90KFtzaGFwZV49YW5nbGVdKSwuaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZS5uYXYtaWNvbiBjbHItaWNvbjpub3QoW3NoYXBlXj1hbmds''@;'; put 'put ''ZV0pe2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9aGVhZGVyIC5zZXR0aW5ncz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsaGVhZGVyIC5oZWFkZXItYWN0aW9ucz4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsLmhlYWRl''@;'; put 'put ''ciAuc2V0dGluZ3M+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51LC5oZWFkZXIgLmhlYWRlci1hY3Rpb25zPi5kcm9wZG93biAuZHJvcGRvd24tbWVudXttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSk7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtNSk7bGVmdDphdXRvO3JpZ2h0OjB9aGVhZGVyIC5zZWFyY2gtYm94LGhlYWRlciAuc2VhcmNoLC5oZWFkZXIgLnNlYXJjaC1ib3gsLmhlYWRlciAuc2VhcmNoe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDowIDAgYXV0bzttYXgtd2lkdGg6Y2FsYygyODgqKDFyZW0v''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3BhZGRpbmc6MDtwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpfWhlYWRlciAuc2VhcmNoLWJveDpob3ZlcixoZWFkZXIgLnNlYXJjaDpob3ZlciwuaGVhZGVyIC5zZWFyY2gtYm94OmhvdmVyLC5oZWFk''@;'; put 'put ''ZXIgLnNlYXJjaDpob3Zlcntjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3ItaG92ZXIpfWhlYWRlciAuc2VhcmNoLWJveDpkaXNhYmxlZCxoZWFkZXIgLnNlYXJjaDpkaXNhYmxlZCwuaGVhZGVyIC5zZWFyY2gtYm94OmRpc2FibGVkLC5oZWFkZXIgLnNlYXJjaDpkaXNhYmxlZHtj''@;'; put 'put ''dXJzb3I6bm90LWFsbG93ZWR9aGVhZGVyIC5zZWFyY2gtYm94OmJlZm9yZSxoZWFkZXIgLnNlYXJjaDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoLWJveDpiZWZvcmUsLmhlYWRlciAuc2VhcmNoOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIi''@;'; put 'put ''O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWhlYWRlci1kaXZpZGVyLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtsZWZ0''@;'; put 'put ''OmF1dG99aGVhZGVyIC5zZWFyY2gtYm94Pi5uYXYtaWNvbixoZWFkZXIgLnNlYXJjaD4ubmF2LWljb24sLmhlYWRlciAuc2VhcmNoLWJveD4ubmF2LWljb24sLmhlYWRlciAuc2VhcmNoPi5uYXYtaWNvbnttYXJnaW46MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpIGNhbGMoMyooMXJlbS92''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsaGVhZGVyIC5zZWFyY2ggbGFiZWwsLmhlYWRlciAuc2VhcmNoLWJveCBsYWJlbCwuaGVhZGVyIC5zZWFyY2ggbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7''@;'; put 'put ''cGFkZGluZy1sZWZ0OnZhcigtLWNsci1oZWFkZXItc2VhcmNoLWdhcCk7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtbWFyZ2luLWxlZnQpO21hcmdpbi1yaWdodDp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1tYXJnaW4tcmlnaHQpO3RleHQtYWxpZ246Y2VudGVyfWhlYWRl''@;'; put 'put ''ciAuc2VhcmNoLWJveCBsYWJlbDpiZWZvcmUsaGVhZGVyIC5zZWFyY2ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWw6YmVmb3JlLC5oZWFkZXIgLnNlYXJjaCBsYWJlbDpiZWZvcmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtiYWNrZ3JvdW5kLWltYWdl''@;'; put 'put ''OnVybChkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAzNiUyMiUzRSUzQ2RlZnMlM0UlM0NzdHlsZSUzRS5jbHMtMSU3QmZp''@;'; put 'put ''bGwlM0ElMjNmZmZmZmYlM0IlN0QlM0MlMkZzdHlsZSUzRSUzQyUyRmRlZnMlM0UlM0N0aXRsZSUzRVNlYXJjaCUzQyUyRnRpdGxlJTNFJTNDZyUyMGlkJTNEJTIyaWNvbnMlMjIlM0UlM0NwYXRoJTIwY2xhc3MlM0QlMjJjbHMtMSUyMiUyMGQlM0QlMjJNMTUlMkM0LjA1QTEwLjk1JTJDMTAu''@;'; put 'put ''OTUlMkMwJTJDMSUyQzElMkM0LjA1JTJDMTUlMkMxMSUyQzExJTJDMCUyQzAlMkMxJTJDMTUlMkM0LjA1TTE1JTJDMkExMyUyQzEzJTJDMCUyQzElMkMwJTJDMjglMkMxNSUyQzEzJTJDMTMlMkMwJTJDMCUyQzAlMkMxNSUyQzJaJTIyJTJGJTNFJTNDcGF0aCUyMGNsYXNzJTNEJTIyY2xzLTEl''@;'; put 'put ''MjIlMjAlMjBkJTNEJTIyTTMzLjcxJTJDMzIuMjlsLTcuMzctNy40Mi0xLjQyJTJDMS40MSUyQzcuMzclMkM3LjQyYTElMkMxJTJDMCUyQzElMkMwJTJDMS40Mi0xLjQxWiUyMiUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0UpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3Jv''@;'; put 'put ''dW5kLXNpemU6Y29udGFpbjtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1pY29uLXNpemUpO21pbi1oZWlnaHQ6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaWNvbi1zaXplKTttaW4t''@;'; put 'put ''d2lkdGg6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaWNvbi1zaXplKTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjA7bWFyZ2luLXJpZ2h0OmNhbGMoLTEqKHZhcigtLWNsci1oZWFkZXItc2VhcmNoLWljb24tc2l6ZSkgKyB2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1nYXApKSl9aGVh''@;'; put 'put ''ZGVyIC5zZWFyY2gtYm94IGxhYmVsIGlucHV0LGhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0LC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwgaW5wdXQsLmhlYWRlciAuc2VhcmNoIGxhYmVsIGlucHV0e2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luOmF1dG99''@;'; put 'put ''aGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0saGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF0sLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF17Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y29s''@;'; put 'put ''b3I6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtaW5wdXQtZm9udC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzowIDAgMCBjYWxjKHZhcigtLWNsci1o''@;'; put 'put ''ZWFkZXItc2VhcmNoLWljb24tc2l6ZSkgKyAyKnZhcigtLWNsci1oZWFkZXItc2VhcmNoLWdhcCkpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfWhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRd''@;'; put 'put ''Oi13ZWJraXQtYXV0b2ZpbGwsaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOi13ZWJraXQtYXV0b2ZpbGwsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTotd2Via2l0''@;'; put 'put ''LWF1dG9maWxsOmZvY3VzLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTotd2Via2l0LWF1dG9maWxsLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTotd2Via2l0LWF1dG9maWxsOmZvY3VzLC5oZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOi13''@;'; put 'put ''ZWJraXQtYXV0b2ZpbGwsLmhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06LXdlYmtpdC1hdXRvZmlsbDpmb2N1c3std2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwcyA2MDAwMDBzLGNvbG9yIDBzIDYwMDAwMHM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDBz''@;'; put 'put ''IDYwMDAwMHMsY29sb3IgMHMgNjAwMDAwc31oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXIsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXIsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOjpwbGFjZWhv''@;'; put 'put ''bGRlciwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tY2xyLWhlYWRlci1zZWFyY2gtcGxhY2Vob2xkZXItdGV4dC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdl''@;'; put 'put ''aWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpfWhlYWRlciAuc2VhcmNo''@;'; put 'put ''LWJveCBpbnB1dFt0eXBlPXRleHRdOmhvdmVyLGhlYWRlciAuc2VhcmNoIGlucHV0W3R5cGU9dGV4dF06aG92ZXIsLmhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmhvdmVyLC5oZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmhvdmVye2JvcmRlcjp2YXIoLS1jbHIt''@;'; put 'put ''aGVhZGVyLXNlYXJjaC1ib3JkZXItaG92ZXIpfWhlYWRlciAuc2VhcmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLXZpc2libGUsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cy12aXNpYmxlLC5oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1''@;'; put 'put ''cy12aXNpYmxlLC5oZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLXZpc2libGV7b3V0bGluZTowO2JvcmRlcjp2YXIoLS1jbHItaGVhZGVyLXNlYXJjaC1ib3JkZXItYWN0aXZlKX1oZWFkZXIgLnNlYXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxoZWFkZXIgLnNl''@;'; put 'put ''YXJjaC1ib3ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmUsaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxoZWFkZXIgLnNlYXJjaCBpbnB1dFt0eXBlPXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2gtYm94IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsLmhlYWRlciAuc2Vh''@;'; put 'put ''cmNoLWJveCBpbnB1dFt0eXBlPXRleHRdOmFjdGl2ZSwuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTpmb2N1cywuaGVhZGVyIC5zZWFyY2ggaW5wdXRbdHlwZT10ZXh0XTphY3RpdmV7YmFja2dyb3VuZDowIDB9aGVhZGVyIC5icmFuZGluZysuc2VhcmNoLGhlYWRlciAuYnJhbmRp''@;'; put 'put ''bmcrLnNlYXJjaC1ib3gsLmhlYWRlciAuYnJhbmRpbmcrLnNlYXJjaCwuaGVhZGVyIC5icmFuZGluZysuc2VhcmNoLWJveHtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2OHB4KXtoZWFkZXIgLnNlYXJjaC1ib3gsaGVhZGVyIC5zZWFyY2gsLmhlYWRl''@;'; put 'put ''ciAuc2VhcmNoLWJveCwuaGVhZGVyIC5zZWFyY2h7ZmxleDoxIDAgYXV0bzttYXgtd2lkdGg6bm9uZTtkaXNwbGF5Om5vbmV9aGVhZGVyIC5zZWFyY2gtYm94IGxhYmVsLGhlYWRlciAuc2VhcmNoIGxhYmVsLC5oZWFkZXIgLnNlYXJjaC1ib3ggbGFiZWwsLmhlYWRlciAuc2VhcmNoIGxhYmVs''@;'; put 'put ''e3BhZGRpbmc6MH19YTpsaW5rOm5vdCguYnRuLC5uYXYtbGluaywuZHJvcGRvd24taXRlbSwuYWxlcnQtYWN0aW9uLC5iYWRnZSl7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtcmVndWxhcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LWZvbnQtc2l6ZS0zKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOmNhbGMoLS4xKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX1hLmxpbmstbm9ybWFsOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstY29sb3IpfWEubGlu''@;'; put 'put ''ay1ob3ZlcmVkOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstaG92ZXItY29sb3IpfWEubGluay1jbGlja2VkOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstYWN0aXZlLWNvbG9yKX1hLmxpbmstdmlzaXRlZDpsaW5re2NvbG9yOnZhcigtLWNsci1saW5rLXZpc2l0ZWQtY29sb3IpfWEubGlu''@;'; put 'put ''ay12aXNpdGVkLWhvdmVyOmxpbmt7Y29sb3I6dmFyKC0tY2xyLWxpbmstdmlzaXRlZC1jb2xvci1ob3Zlcil9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLW5hdi1hY3RpdmUtYmct''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItbmF2LXNlbGVjdGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci1uYXYtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9i''@;'; put 'put ''amVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1uYXYtc2VsZWN0ZWQtaG92ZXItYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLW5hdi1zZWxlY3RlZC1hY3RpdmUt''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlKTstLWNsci1uYXYtbGluay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1uYXYtbGluay1hY3RpdmUt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpfUBtZWRpYSBzY3JlZW57c2VjdGlvblthcmlhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9fVtkYXRhLWhpZGRlbj10cnVlXXtkaXNwbGF5Om5vbmV9YnV0dG9uLm5hdi1saW5re2JvcmRlci1y''@;'; put 'put ''YWRpdXM6MDt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO21pbi13aWR0aDowfS50YWJzLW92ZXJmbG93e3Bvc2l0aW9uOnJlbGF0aXZlfS50YWJzLW92ZXJmbG93IC5kcm9wZG93bi1tZW51e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0wKTtib3gtc2hhZG93OnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy1vYmplY3Qtc2hhZG93LTEwMCk7b3ZlcmZsb3c6aGlkZGVufS50YWJzLW92ZXJmbG93IC5idG57bGluZS1oZWlnaHQ6Y2FsYygyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS00KTtwYWRk''@;'; put 'put ''aW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMCl9LnRhYi1jb250ZW50e2Rpc3BsYXk6aW5saW5lfV86LW1zLWZ1bGxzY3JlZW4gLnRhYi1jb250ZW50LDpyb290IC50YWIt''@;'; put 'put ''Y29udGVudHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS50YWJzLXZlcnRpY2Fse2Rpc3BsYXk6ZmxleH0udGFicy12ZXJ0aWNhbD4ubmF2e2hlaWdodDphdXRvO2JveC1zaGFkb3c6bm9uZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDttYXJnaW4t''@;'; put 'put ''cmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtvdmVyZmxvdzphdXRvO2ZsZXgtc2hyaW5rOjA7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1zcGFjZS0xMik7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxpbmt7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2JvcmRlcjowO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXRvcDowO21hcmdp''@;'; put 'put ''bi1sZWZ0OjA7d2lkdGg6MTAwJX0udGFicy12ZXJ0aWNhbD4ubmF2IC5uYXYtbGluay5idG57bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS50YWJzLXZlcnRpY2FsPi5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLnRhYnMtdmVydGljYWw+Lm5hdiAubmF2LWxp''@;'; put 'put ''bms6aG92ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2Jq''@;'; put 'put ''ZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0IC4ycyBlYXNlLWlufS5uYXZ7ZGlzcGxheTpmbGV4O2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTtsaXN0LXN0eWxlLXR5cGU6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7''@;'; put 'put ''bWFyZ2luOjA7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym94LXNoYWRvdzowIGNhbGMoLTEqdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSkgMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IpIGluc2V0O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTkpfS5uYXYgLm5hdi1pdGVte2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5uYXYgLm5hdi1pdGVtLmFjdGl2ZT4ubmF2LWxpbmt7Y29sb3I6dmFyKC0tY2xyLW5hdi1saW5rLWFjdGl2ZS1jb2xvcik7Ym94LXNoYWRvdzowIGNhbGMoLTEqdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXIt''@;'; put 'put ''d2lkdGgtMTAwKSkgMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IpIGluc2V0fS5uYXYgLm5hdi1saW5re3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOnZhcigtLWNsci1uYXYtbGluay1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1z''@;'; put 'put ''aXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5''@;'; put 'put ''LWxldHRlci1zcGFjaW5nKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtkaXNwbGF5OmlubGluZS1ibG9ja30ubmF2IC5uYXYtbGluay5idG57dGV4dC10cmFuc2Zvcm06bm9uZTttYXJnaW46MCAwIGNhbGMoLTEqdmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS0xKSk7Ym9yZGVyLXJhZGl1czowfS5uYXYgLm5hdi1saW5rLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9Lm5hdiAubmF2LWxpbmsuZHJvcGRvd24tdG9nZ2xlIGNkcy1pY29ue2NvbG9yOnZhcigtLWNsci1uYXYtbGluay1j''@;'; put 'put ''b2xvcil9Lm5hdiAubmF2LWxpbms6aG92ZXIsLm5hdiAubmF2LWxpbms6Zm9jdXMsLm5hdiAubmF2LWxpbms6YWN0aXZle2NvbG9yOmluaGVyaXR9Lm5hdiAubmF2LWxpbms6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLW5hdi1hY3RpdmUtYmctY29sb3IpfS5uYXYgLm5hdi1s''@;'; put 'put ''aW5rOmhvdmVyOmJlZm9yZSwubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0''@;'; put 'put ''aC0zMDApIHNvbGlkIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQpO3RyYW5zaXRpb246Ym9yZGVyLWJvdHRvbSAuMnMgZWFzZS1pbn0ubmF2IC5uYXYtbGluazpob3ZlciwubmF2IC5uYXYtbGluazpmb2N1cywubmF2IC5uYXYtbGluazph''@;'; put 'put ''Y3RpdmUsLm5hdiAubmF2LWxpbmsuYWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItbmF2LWxpbmstYWN0aXZlLWNvbG9yKX0ubmF2IC5uYXYtbGluay5hY3RpdmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''bmF2LXNlbGVjdGVkLWhvdmVyLWJhY2tncm91bmQtY29sb3IpfS5uYXYgLm5hdi1saW5rLmFjdGl2ZTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbmF2LXNlbGVjdGVkLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0ubmF2IC5uYXYtbGluay5uYXYtaXRlbXttYXJnaW4tcmln''@;'; put 'put ''aHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1zdWJuYXYtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCl9LnN1Yi1uYXYsLnN1Ym5hdntkaXNwbGF5OmZsZXg7Ym94LXNoYWRvdzowIGNhbGMoLTEq''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSkgMCB2YXIoLS1jbHItbmF2LWJveC1zaGFkb3ctY29sb3IpIGluc2V0O2JveC1zaGFkb3c6MCAtLjA1cmVtIDAgdmFyKC0tY2xyLW5hdi1ib3gtc2hhZG93LWNvbG9yLCBoc2woMTk4LCAwJSwgODAlKSkgaW5zZXQ7anVz''@;'; put 'put ''dGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN1Ym5hdi1iZy1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpfS5zdWItbmF2IC5uYXYsLnN1Ym5hdiAubmF2e2ZsZXg6MSAxIGF1dG87''@;'; put 'put ''cGFkZGluZy1sZWZ0OjEuMnJlbX0uc3ViLW5hdiAubmF2LWl0ZW0sLnN1Yi1uYXYgLm5hdi1pdGVtIGEsLnN1Ym5hdiAubmF2LWl0ZW0sLnN1Ym5hdiAubmF2LWl0ZW0gYXt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3ViLW5hdiBhc2lkZSwuc3VibmF2IGFzaWRle2ZsZXg6MCAwIGF1dG87ZGlz''@;'; put 'put ''cGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzowIDEuMnJlbX0uc3ViLW5hdiBhc2lkZT46bGFzdC1jaGlsZCwuc3VibmF2IGFzaWRlPjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowO3BhZGRpbmctcmlnaHQ6MH06''@;'; put 'put ''cm9vdCBbY2RzLXRoZW1lXXstLWNsci12ZXJ0aWNhbC1uYXYtZGl2aWRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItdmVydGljYWwtbmF2LWljb24tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLXZlcnRpY2FsLW5hdi1pY29u''@;'; put 'put ''LWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1yaWdodC1tYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTstLWNsci12ZXJ0aWNhbC1uYXYtY29sbGFwc2VkLWNhcmV0LXNpemU6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1zcGFjZS0xMCk7LS1jbHItdmVydGljYWwtbmF2LWl0ZW0tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24t''@;'; put 'put ''Y29sb3ItYWN0aXZlKTstLWNsci12ZXJ0aWNhbC1uYXYtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1zaGFkZSk7LS1jbHItdmVydGljYWwtbmF2LWl0ZW0tcGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNoaWxkLXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpIHZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7LS1jbHItdmVydGljYWwtbmF2LWl0ZW0taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApOy0tY2xyLXZlcnRpY2FsLW5hdi1taW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7LS1jbHItdmVy''@;'; put 'put ''dGljYWwtbmF2LWl0ZW0tYWN0aXZlLWZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3Vu''@;'; put 'put ''ZC1zZWxlY3RlZCk7LS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWhvdmVyLWJnLWNvbG9yOnZhciggLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIgKTstLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yOnZh''@;'; put 'put ''ciggLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlICk7LS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlKTstLWNsci12ZXJ0aWNh''@;'; put 'put ''bC1uYXYtYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS10b3AtbGV2ZWwtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTst''@;'; put 'put ''LWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7''@;'; put 'put ''LS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFj''@;'; put 'put ''dGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWJ1dHRvbi1zaXplOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtMTApOy0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1kaXZpZGVyLWJvcmRlci13aWR0aDp2YXIoLS1jbHItZ2xvYmFs''@;'; put 'put ''LWJvcmRlcndpZHRoKTstLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dlci1jb2xsYXBzZWQtbWFyZ2luOm1peGlucy5iYXNlbGluZVB4KDMpOy0tY2xyLXZlcnRpY2FsLW5hdi1oZWFkZXItZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xk''@;'; put 'put ''KTstLWNsci12ZXJ0aWNhbC1uYXYtaGVhZGVyLXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfTpyb290IFtjZHMtdGhlbWV+PWRhcmtdey0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNv''@;'; put 'put ''bnRhaW5lci1iYWNrZ3JvdW5kKX0uY2xyLXZlcnRpY2FsLW5hdntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yKTt3aWxsLWNoYW5nZTp3aWR0aDt0cmFuc2l0aW9uOndpZHRoIC4ycyBlYXNlLWluLW91dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWRpdmlkZXJ7Ym9yZGVyLXdpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdHJpZ2dl''@;'; put 'put ''ci1kaXZpZGVyLWJvcmRlci13aWR0aCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtY29udGVudHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rp''@;'; put 'put ''b246Y29sdW1uO2ZsZXg6MSAxIGF1dG87Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW59LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cHtkaXNwbGF5OmJs''@;'; put 'put ''b2NrO2ZsZXg6MCAwIGF1dG87aGVpZ2h0OmF1dG87bWluLWhlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0taGVpZ2h0KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xv''@;'; put 'put ''cil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYmctY29sb3IpO3Bvc2l0aW9uOnJl''@;'; put 'put ''bGF0aXZlfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudC5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1i''@;'; put 'put ''b3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0IC4ycyBlYXNlLWlufS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudC5hY3RpdmUgLm5hdi1p''@;'; put 'put ''Y29ue2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50LmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtaG92ZXItYmctY29sb3Ip''@;'; put 'put ''fS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudC5hY3RpdmU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudDpob3Zlcntjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IpO3RleHQtZGVjb3JhdGlvbjpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudDphY3RpdmV7''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbmt7ZmxleDoxIDEgYXV0bztwYWRk''@;'; put 'put ''aW5nLWxlZnQ6MDttaW4td2lkdGg6MH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1pY29ue21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50IC5uYXYtdGV4dHtwYWRkaW5nLWxl''@;'; put 'put ''ZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1pY29uKy5uYXYtdGV4dHtwYWRkaW5nLWxlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdGV4dHtk''@;'; put 'put ''aXNwbGF5Om5vbmV9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50Pi5uYXYtbGluay5hY3RpdmUsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jb250ZW50Pi5uYXYtbGluazphY3RpdmV7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2''@;'; put 'put ''ZS1mb250LXdlaWdodCl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC1jaGlsZHJlbntvdmVyZmxvdy15OmhpZGRlbn0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2Vye2ZsZXg6MCAwIHZhcigtLWNsci12ZXJ0aWNh''@;'; put 'put ''bC1uYXYtdG9nZ2xlLWJ1dHRvbi1zaXplKTtib3JkZXI6MDtoZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtYnV0dG9uLXNpemUpO3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpwb2ludGVyO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqY2Fs''@;'; put 'put ''Yyg1KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0''@;'; put 'put ''aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV0sLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV17Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1j''@;'; put 'put ''b2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06aG92ZXIsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06aG92ZXIsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91''@;'; put 'put ''cC10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06aG92ZXIsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10b2dnbGUtaWNvbi1ob3Zlci1j''@;'; put 'put ''b2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyIGNkcy1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06YWN0aXZlLC5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlciBjbHItaWNvbltzaGFwZT1hbmdsZS1kb3VibGVdOmFjdGl2ZSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdy''@;'; put 'put ''b3VwLXRyaWdnZXIgY2RzLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXTphY3RpdmUsLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlLWRvdWJsZV06YWN0aXZle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtdG9nZ2xlLWljb24tYWN0''@;'; put 'put ''aXZlLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXI6ZGlzYWJsZWQgY2RzLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXI6ZGlzYWJsZWQgY2xyLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5h''@;'; put 'put ''diAubmF2LXRyaWdnZXIuZGlzYWJsZWQgY2RzLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIuZGlzYWJsZWQgY2xyLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXI6ZGlzYWJs''@;'; put 'put ''ZWQgY2RzLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXI6ZGlzYWJsZWQgY2xyLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXIuZGlzYWJsZWQgY2RzLWljb25bc2hh''@;'; put 'put ''cGU9YW5nbGUtZG91YmxlXSwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXIuZGlzYWJsZWQgY2xyLWljb25bc2hhcGU9YW5nbGUtZG91YmxlXXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1pY29uLWRpc2FibGVkLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5h''@;'; put 'put ''diAubmF2LXRyaWdnZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7aGVpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTcpO21hcmdpbi1ib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIgY2RzLWljb257bWFyZ2luLXJpZ2h0OjA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS03KX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIub24tY29sbGFwc2V7ZGlzcGxheTpibG9ja30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIub24tY29sbGFwc2UgY2RzLWljb257bWFyZ2luOjB9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10cmlnZ2Vye2Rpc3Bs''@;'; put 'put ''YXk6ZmxleDtmbGV4OjEgMSBhdXRvO2NvbG9yOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtYWxpZ246bGVmdH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLXRyaWdnZXIgLm5hdi1ncm91cC10cmlnZ2VyLWljb257ZmxleC1zaHJpbms6MDt3aWR0aDp2YXIoLS1jbHItdmVydGlj''@;'; put 'put ''YWwtbmF2LWljb24tc2l6ZSk7bWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7YWxpZ24tc2VsZjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fS5jbHItdmVydGljYWwtbmF2IC5uYXYtdHJpZ2dlci1pY29ue3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91''@;'; put 'put ''dH0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LXRyaWdnZXIrLm5hdi1jb250ZW50e2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLXdpZHRoKTtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXZlcnRpY2FsLW5hdi10cmlnZ2VyLWRpdmlkZXItYm9yZGVyLWNvbG9yKTtwYWRkaW5nLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtdGV4dCwuY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7aGVpZ2h0OnZhcigtLWNsci12ZXJ0''@;'; put 'put ''aWNhbC1uYXYtaXRlbS1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLXBhZGRpbmcpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1m''@;'; put 'put ''b250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO291dGxpbmUtb2Zmc2V0OmNhbGMo''@;'; put 'put ''LTEqY2FsYyg1KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1ncm91cC10ZXh0LC5jbHItdmVydGljYWwtbmF2IC5uYXYtdGV4dHtmbGV4OjEgMSBhdXRvO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxv''@;'; put 'put ''dzplbGxpcHNpc30uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWxpbmt7ZGlzcGxheTpmbGV4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rLmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''dmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYmctY29sb3IpO3Bvc2l0aW9uOnJlbGF0aXZlfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3Jle2NvbnRlbnQ6IiI7cG9z''@;'; put 'put ''aXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGln''@;'; put 'put ''aGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0IC4ycyBlYXNlLWlufS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvcil9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rLmFj''@;'; put 'put ''dGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtaG92ZXItYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3Rl''@;'; put 'put ''ZC1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IpO3RleHQtZGVj''@;'; put 'put ''b3JhdGlvbjpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtbGluazphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2''@;'; put 'put ''IC5uYXYtaGVhZGVye3BhZGRpbmc6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1oZWFkZXItcGFkZGluZyk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtc2l6ZS0yKTtmb250LXdlaWdodDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWhlYWRlci1mb250LXdlaWdodCk7''@;'; put 'put ''bGluZS1oZWlnaHQ6MS4zMzMzMzNlbTtsZXR0ZXItc3BhY2luZzotLjAwODMzMzMzZW19LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1pY29ue2ZsZXg6MCAwIHZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTthbGlnbi1zZWxmOmNlbnRlcjtoZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2Fs''@;'; put 'put ''LW5hdi1pY29uLXNpemUpO3dpZHRoOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLXNpemUpO21hcmdpbi1yaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTMpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uY2xyLXZlcnRpY2FsLW5hdiBjbHItdmVydGljYWwtbmF2LWdyb3VwLWNoaWxkcmVue2Rpc3BsYXk6YmxvY2t9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1idG57ZmxleDoxIDEgYXV0bztwYWRkaW5nOjA7bWFyZ2luOjA7''@;'; put 'put ''YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSpjYWxjKDUqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpKX0uY2xyLXZlcnRpY2FsLW5hdj4ubmF2LWxpbmssLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1jb250ZW50Pi5uYXYt''@;'; put 'put ''bGlua3tmbGV4OjAgMCB2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1idXR0b24tc2l6ZSl9LmNsci12ZXJ0aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCB2YXIoLS1jbHItdmVydGljYWwtbmF2LXRvZ2dsZS1idXR0b24tc2l6ZSl9LmNsci12ZXJ0''@;'; put 'put ''aWNhbC1uYXYgLm5hdi1saW5rKy5uYXYtZ3JvdXAtdHJpZ2dlciAubmF2LWdyb3VwLXRleHR7ZGlzcGxheTpub25lfS5jbHItdmVydGljYWwtbmF2IC5uYXYtaWNvbisubmF2LWdyb3VwLXRleHR7cGFkZGluZy1sZWZ0OjB9LmNsci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1n''@;'; put 'put ''cm91cCAubmF2LWdyb3VwLXRleHQsLmNsci12ZXJ0aWNhbC1uYXYuaGFzLW5hdi1ncm91cHMgLm5hdi1ncm91cCAubmF2LWdyb3VwLXRyaWdnZXJ7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLXRvcC1sZXZlbC1mb250LXdlaWdodCl9LmNsci12ZXJ0aWNhbC1uYXYu''@;'; put 'put ''aGFzLW5hdi1ncm91cHMgLm5hdi1ncm91cC1jaGlsZHJlbiAubmF2LWxpbmssLmNsci12ZXJ0aWNhbC1uYXYuaGFzLWljb25zIC5uYXYtZ3JvdXAtY2hpbGRyZW4gLm5hdi1saW5re3BhZGRpbmc6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWNoaWxkLXBhZGRpbmcpfS5jbHItdmVydGlj''@;'; put 'put ''YWwtbmF2IC5uYXYtZ3JvdXAuYWN0aXZlOm5vdCguaXMtZXhwYW5kZWQpIC5uYXYtZ3JvdXAtY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAuYWN0aXZlOm5vdCguaXMt''@;'; put 'put ''ZXhwYW5kZWQpIC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWljb257ZmlsbDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tYWN0aXZlLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rLmFjdGl2ZX4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rOmhvdmVyfi5uYXYtZ3JvdXAtdHJpZ2dlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYt''@;'; put 'put ''aG92ZXItYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2IC5uYXYtZ3JvdXAtY29udGVudCAubmF2LWxpbms6YWN0aXZlfi5uYXYtZ3JvdXAtdHJpZ2dlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYWN0aXZlLWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAu''@;'; put 'put ''bmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rLmFjdGl2ZTpob3Zlcn4ubmF2LWdyb3VwLXRyaWdnZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXNlbGVjdGVkLWhvdmVyLWJnLWNvbG9yKX0uY2xyLXZlcnRpY2FsLW5hdiAubmF2LWdyb3VwLWNvbnRlbnQgLm5h''@;'; put 'put ''di1saW5rLmFjdGl2ZTphY3RpdmV+Lm5hdi1ncm91cC10cmlnZ2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5jbHItdmVydGljYWwtbmF2Om5vdCguaXMtY29sbGFwc2VkKSAubmF2LWxpbmsrLm5hdi1ncm91cC10''@;'; put 'put ''cmlnZ2Vye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWR7d2lkdGg6dmFyKC0tY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi1taW4td2lkdGgpO21pbi13aWR0aDp2YXIoLS1jbHItdmVydGljYWwtbmF2LW1pbi13aWR0aCk7bWF4LXdpZHRoOmNhbGModmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1taW4td2lkdGgpICsgY2FsYygxNCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkpO2N1cnNvcjpwb2lu''@;'; put 'put ''dGVyfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtaWNvbnttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwIHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAu''@;'; put 'put ''bmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5re2ZsZXg6MCAwIHZhcigtLWNsci12ZXJ0aWNhbC1uYXYtbWluLXdpZHRoKX0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGlj''@;'; put 'put ''YWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLWNvbnRlbnQgLm5hdi1saW5rfi5uYXYtZ3JvdXAtdHJpZ2dlcntmbGV4OjAgMCBjYWxjKHZhcigtLWNsci12ZXJ0aWNhbC1uYXYtY29sbGFwc2VkLWNhcmV0LXNpemUpICsgdmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLXJpZ2h0LW1h''@;'; put 'put ''cmdpbikpO3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygtMSp2YXIoLS1jbHItdmVydGljYWwtbmF2LWljb24tc2l6ZSkpKTtwb2ludGVyLWV2ZW50czpub25lfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdl''@;'; put 'put ''ci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtbGluaywubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAu''@;'; put 'put ''bmF2LWdyb3VwLXRyaWdnZXJ7cGFkZGluZzowfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlcntwYWRk''@;'; put 'put ''aW5nLWxlZnQ6MH0ubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWdyb3VwLXRyaWdnZXIgY2xyLWljb24ubmF2LWdyb3VwLXRy''@;'; put 'put ''aWdnZXItaWNvbntoZWlnaHQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWhlaWdodCk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW4tbGVmdDpjYWxjKDMqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21hcmdpbi1yaWdodDowfS5tYWluLWNvbnRhaW5l''@;'; put 'put ''cjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkIC5uYXYtZ3JvdXAtdHJpZ2dlciBjZHMtaWNvbi5uYXYtZ3JvdXAtdHJpZ2dlci1pY29ue3dpZHRoOnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtc3BhY2UtNyk7bWFyZ2luOjB9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQgLm5hdi1ncm91cCwubWFpbi1jb250YWlu''@;'; put 'put ''ZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2LmlzLWNvbGxhcHNlZCAubmF2LWxpbmt7ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lcjpub3QoW2NsYXNzKj1vcGVuLW92ZXJmbG93''@;'; put 'put ''LW1lbnVdKTpub3QoW2NsYXNzKj1vcGVuLWhhbWJ1cmdlci1tZW51XSkgLmNsci12ZXJ0aWNhbC1uYXYuaXMtY29sbGFwc2VkLmhhcy1pY29ucyAubmF2LWdyb3Vwe2Rpc3BsYXk6YmxvY2t9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xh''@;'; put 'put ''c3MqPW9wZW4taGFtYnVyZ2VyLW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtbGlua3tkaXNwbGF5OmZsZXh9Lm1haW4tY29udGFpbmVyOm5vdChbY2xhc3MqPW9wZW4tb3ZlcmZsb3ctbWVudV0pOm5vdChbY2xhc3MqPW9wZW4taGFtYnVyZ2Vy''@;'; put 'put ''LW1lbnVdKSAuY2xyLXZlcnRpY2FsLW5hdi5pcy1jb2xsYXBzZWQuaGFzLWljb25zIC5uYXYtZ3JvdXAtdGV4dCwubWFpbi1jb250YWluZXI6bm90KFtjbGFzcyo9b3Blbi1vdmVyZmxvdy1tZW51XSk6bm90KFtjbGFzcyo9b3Blbi1oYW1idXJnZXItbWVudV0pIC5jbHItdmVydGljYWwtbmF2''@;'; put 'put ''LmlzLWNvbGxhcHNlZC5oYXMtaWNvbnMgLm5hdi10ZXh0e3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2NsaXAtcGF0aDppbnNldCg1MCUpO3BhZGRpbmc6MDtib3JkZXI6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3Bh''@;'; put 'put ''Y2U6bm93cmFwO3RvcDowO2xlZnQ6MH0uY2xyLXZlcnRpY2FsLW5hdi5uYXYtdHJpZ2dlci0tYm90dG9tIC5uYXYtdHJpZ2dlcntvcmRlcjoyO21hcmdpbi10b3A6MH0uY2xyLXZlcnRpY2FsLW5hdi5uYXYtdHJpZ2dlci0tYm90dG9tIC5uYXYtdHJpZ2dlcisubmF2LWNvbnRlbnR7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItd2lkdGgpO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LXRyaWdnZXItZGl2aWRlci1ib3JkZXItY29sb3Ip''@;'; put 'put ''O2JvcmRlci10b3A6bm9uZTtwYWRkaW5nLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXNsaWRpbmctcGFuZWwtdGV4dC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWdyYXktNzAwKTstLWNsci1uYXYtYmFja2dyb3VuZC1jb2xvcjp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLWRhcmspOy0tY2xyLXJlc3BvbnNpdmUtbmF2LXRyaWdnZXItYmctY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ncmF5LTApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LXRyaWdnZXItYm9yZGVyLXJhZGl1czp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1yZXNwb25zaXZlLW5hdi1vdmVyZmxvdy1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLXJlc3BvbnNpdmUtbmF2LWhhbWJ1cmdlci1ib3JkZXItcmFk''@;'; put 'put ''aXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApfS5jbHItbmF2LWNsb3Nle21hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY29sb3I6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci13aGl0ZSl9LmNsci1uYXYtY2xvc2U6aG92ZXIsLmNsci1uYXYtY2xv''@;'; put 'put ''c2U6Zm9jdXN7LS1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLXdhcm0tZ3JheS0xMDApfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIsLmhlYWRlci1vdmVyZmxvdy10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW4sLmhlYWRlci1oYW1idXJn''@;'; put 'put ''ZXItdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2U+c3BhbiwuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXNwYWNlLTIpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7YmFja2dyb3VuZDp2YXIoLS1jbHItcmVzcG9uc2l2ZS1uYXYtdHJpZ2dlci1iZy1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKX0u''@;'; put 'put ''aGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW4sLmNsci1uYXYtY2xvc2U+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YWZ0ZXIs''@;'; put 'put ''LmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MH0uaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RvcDpjYWxjKC0x''@;'; put 'put ''KnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye2JvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZl''@;'; put 'put ''PnNwYW4sLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW57YmFja2dyb3VuZDowIDB9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbjpiZWZvcmUsLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3Bhbjpi''@;'; put 'put ''ZWZvcmUsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3RyYW5zZm9ybS1vcmlnaW46OSU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlci5hY3RpdmU+c3BhbjpiZWZvcmUs''@;'; put 'put ''LmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5oZWFk''@;'; put 'put ''ZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuLC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmJlZm9yZSwuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI+c3BhbjphZnRlciwuY2xyLW5hdi1jbG9zZT5zcGFuLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46''@;'; put 'put ''YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1yZXNwb25zaXZlLW5hdi10cmlnZ2VyLWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMyl9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW4sLmNsci1uYXYtY2xvc2U+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YmVmb3JlLC5oZWFkZXItb3ZlcmZsb3ct''@;'; put 'put ''dHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjB9LmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlPnNwYW46''@;'; put 'put ''YmVmb3Jle3RvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcj5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3NlPnNwYW46YWZ0ZXJ7Ym90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSl9LmhlYWRlci1vdmVyZmxv''@;'; put 'put ''dy10cmlnZ2VyLmFjdGl2ZT5zcGFuLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFue2JhY2tncm91bmQ6MCAwfS5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlci5hY3RpdmU+c3BhbjpiZWZvcmUsLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLmFjdGl2ZT5zcGFuOmFmdGVyLC5jbHItbmF2LWNsb3Nl''@;'; put 'put ''LmFjdGl2ZT5zcGFuOmJlZm9yZSwuY2xyLW5hdi1jbG9zZS5hY3RpdmU+c3BhbjphZnRlcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTt0cmFuc2Zv''@;'; put 'put ''cm0tb3JpZ2luOi0zJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0uaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIuYWN0aXZlPnNwYW46YmVmb3JlLC5jbHItbmF2LWNsb3NlLmFjdGl2ZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uaGVhZGVyLW92ZXJmbG93LXRy''@;'; put 'put ''aWdnZXIuYWN0aXZlPnNwYW46YWZ0ZXIsLmNsci1uYXYtY2xvc2UuYWN0aXZlPnNwYW46YWZ0ZXJ7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTkycHgpey5tYWluLWNvbnRhaW5lciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyLC5tYWlu''@;'; put 'put ''LWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7aGVpZ2h0OnZhcigtLWNsci1oZWFkZXItaGVpZ2h0KTt3''@;'; put 'put ''aWR0aDp2YXIoLS1jbHItaGVhZGVyLWhlaWdodCk7cGFkZGluZzowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1jbHItaGVhZGVyLWZvbnQtY29sb3IpfS5tYWluLWNvbnRhaW5lciAuaGVhZGVy''@;'; put 'put ''LWhhbWJ1cmdlci10cmlnZ2VyOmZvY3VzLC5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXI6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcjpo''@;'; put 'put ''b3ZlciwubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmhvdmVye2NvbG9yOnZhcigtLWNsci1oZWFkZXItZm9udC1jb2xvci1ob3Zlcil9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItaGFtYnVyZ2VyLXRyaWdnZXI6ZGlzYWJsZWQsLm1haW4tY29udGFpbmVyIC5oZWFk''@;'; put 'put ''ZXItb3ZlcmZsb3ctdHJpZ2dlcjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYt''@;'; put 'put ''bGV2ZWwtMSwubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MCBhdXRvIDAgMDtiYWNrZ3JvdW5kOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtYmctY29s''@;'; put 'put ''b3IpO3otaW5kZXg6MTAzOTtoZWlnaHQ6MTAwdmg7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKC0xKmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSkpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2''@;'; put 'put ''LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rp''@;'; put 'put ''b246Y29sdW1uO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjAgMCAwIGF1dG87YmFja2dyb3VuZDp2YXIoLS1jbHItdmVydGljYWwtbmF2LWJnLWNvbG9yKTt6LWluZGV4OjEwMzk7aGVpZ2h0OjEwMHZoO3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1i''@;'; put 'put ''YXNlKSkpKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2''@;'; put 'put ''ZWwtMSAubmF2LC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTEgYXNpZGUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRlLC5tYWluLWNvbnRhaW5lciAu''@;'; put 'put ''c3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNofS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSBhc2lkZSwu''@;'; put 'put ''bWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIGFzaWRlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiBhc2lkZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIGFzaWRle2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lk''@;'; put 'put ''dGg6MTAwJX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYsLm1haW4tY29udGFpbmVyIC5zdWIt''@;'; put 'put ''bmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2e3BhZGRpbmctbGVmdDowO2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtaXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0x''@;'; put 'put ''IC5uYXYgLm5hdi1pdGVtLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtaXRlbSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1pdGVte2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttYXJn''@;'; put 'put ''aW4tcmlnaHQ6MH0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluaywubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5h''@;'; put 'put ''diAubmF2LWxpbmssLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGlua3twYWRkaW5nOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1wYWRkaW5nKTt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJm''@;'; put 'put ''bG93OmVsbGlwc2lzO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5h''@;'; put 'put ''di1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1u''@;'; put 'put ''YXYtaXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcik7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpiZWZv''@;'; put 'put ''cmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmU6YmVmb3JlLC5tYWluLWNvbnRhaW5lciAuc3ViLW5h''@;'; put 'put ''di5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDoxMDAlO2JvcmRlcjowO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRo''@;'; put 'put ''LTMwMCkgc29saWQgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7dHJhbnNpdGlvbjpib3JkZXItbGVmdCAuMnMgZWFzZS1pbn0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbmsuYWN0aXZl''@;'; put 'put ''IC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29u''@;'; put 'put ''dGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29ue2ZpbGw6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pY29uLWFjdGl2ZS1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5r''@;'; put 'put ''LmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmhvdmVyLC5tYWluLWNvbnRhaW5l''@;'; put 'put ''ciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYg''@;'; put 'put ''Lm5hdi1saW5rLmFjdGl2ZTphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZlLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluay5hY3RpdmU6YWN0aXZlLC5t''@;'; put 'put ''YWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZlOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yKX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2''@;'; put 'put ''LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFp''@;'; put 'put ''bmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2IC5uYXYtbGluazpob3Zlcntjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWl0ZW0tYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaG92ZXItYmctY29sb3IpO3RleHQtZGVjb3Jh''@;'; put 'put ''dGlvbjpub25lfS5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5h''@;'; put 'put ''di1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''dmVydGljYWwtbmF2LWFjdGl2ZS1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFp''@;'; put 'put ''bmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2IC5uYXYtbGluazpob3ZlciwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIgLm5hdiAubmF2LWxp''@;'; put 'put ''bms6aG92ZXIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2''@;'; put 'put ''LWxldmVsLTIgLm5hdiAubmF2LWxpbmsuYWN0aXZle2JveC1zaGFkb3c6bm9uZX0ubWFpbi1jb250YWluZXIgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdiAubmF2LWxpbms6aG92ZXI6bm90KC5hY3RpdmUpOmJlZm9yZSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZl''@;'; put 'put ''bC0xIC5uYXYgLm5hdi1saW5rOmhvdmVyOm5vdCguYWN0aXZlKTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYgLm5hdi1saW5rOmhvdmVyOm5vdCguYWN0aXZlKTpiZWZvcmUsLm1haW4tY29udGFpbmVyIC5zdWItbmF2LmNsci1uYXYtbGV2ZWwt''@;'; put 'put ''MiAubmF2IC5uYXYtbGluazpob3Zlcjpub3QoLmFjdGl2ZSk6YmVmb3Jle2NvbnRlbnQ6bm9uZX0ubWFpbi1jb250YWluZXIgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7Ym9yZGVyLXJp''@;'; put 'put ''Z2h0Om5vbmV9Lm1haW4tY29udGFpbmVyIC5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWFpbi1jb250YWluZXIgLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyOmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7''@;'; put 'put ''YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItaGVhZGVyLWRpdmlkZXItY29sb3IpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xlZnQ6''@;'; put 'put ''MH0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuYnJhbmRpbmd7bWF4LXdpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisu''@;'; put 'put ''YnJhbmRpbmd7cGFkZGluZy1sZWZ0OjA7bWFyZ2luLWxlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0ubWFpbi1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWhhbWJ1cmdlci10cmlnZ2VyKy5icmFuZGluZyAuY2xyLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIg''@;'; put 'put ''LmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgLmxvZ28sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJhbmRpbmcgY2RzLWljb24sLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1oYW1idXJnZXItdHJpZ2dlcisuYnJh''@;'; put 'put ''bmRpbmcgY2xyLWljb257ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5icmFuZGluZysuaGVhZGVyLW92ZXJmbG93LXRyaWdnZXIsLm1haW4tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1uYXYrLmhlYWRlci1vdmVyZmxvdy10cmlnZ2VyLC5tYWluLWNvbnRhaW5lciAu''@;'; put 'put ''aGVhZGVyIC5oZWFkZXItbmF2Ky5jZGstdmlzdWFsbHktaGlkZGVuKy5oZWFkZXItb3ZlcmZsb3ctdHJpZ2dlcnttYXJnaW4tbGVmdDphdXRvfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcCwubWFpbi1jb250YWluZXIub3Blbi1v''@;'; put 'put ''dmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTAzOH0ubWFpbi1jb250YWlu''@;'; put 'put ''ZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5l''@;'; put 'put ''ci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5re2ZsZXg6MCAwIGF1dG87b3Bh''@;'; put 'put ''Y2l0eToxO2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1i''@;'; put 'put ''dXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24sLm1haW4tY29udGFp''@;'; put 'put ''bmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5mYSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LWljb24s''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLmZhLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5r''@;'; put 'put ''IC5uYXYtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAuZmF7ZGlzcGxheTpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYu''@;'; put 'put ''Y2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5o''@;'; put 'put ''ZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluayAubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsgLm5hdi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2Nr''@;'; put 'put ''O3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aGl0ZS1zcGFjZTpub3JtYWw7Y29sb3I6dmFyKC0tY2xyLXNsaWRpbmctcGFuZWwtdGV4dC1jb2xvcik7bGluZS1oZWlnaHQ6dmFy''@;'; put 'put ''KC0tY2RzLWdsb2JhbC1zcGFjZS05KTtmb250LXdlaWdodDo0MDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFt''@;'; put 'put ''YnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rIC5uYXYtaWNvbisubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsgLm5hdi1p''@;'; put 'put ''Y29uKy5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluayAubmF2LWljb24rLm5hdi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdl''@;'; put 'put ''ci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZSwubWFpbi1jb250YWluZXIu''@;'; put 'put ''b3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZle2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1iZy1jb2xvcik7cG9zaXRpb246cmVsYXRpdmV9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAu''@;'; put 'put ''aGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9w''@;'; put 'put ''ZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlOmJlZm9yZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmU6''@;'; put 'put ''YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLWxlZnQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMzAwKSBzb2xpZCB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVy''@;'; put 'put ''YWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTt0cmFuc2l0aW9uOmJvcmRlci1sZWZ0IC4ycyBlYXNlLWlufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5t''@;'; put 'put ''YWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmUgLm5hdi1pY29uLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVs''@;'; put 'put ''LTEgLm5hdi1saW5rLmFjdGl2ZSAubmF2LWljb24sLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlIC5uYXYtaWNvbntmaWxsOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaWNvbi1hY3Rp''@;'; put 'put ''dmUtY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHIt''@;'; put 'put ''bmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTpob3ZlciwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluay5hY3RpdmU6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAu''@;'; put 'put ''aGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbmsuYWN0aXZlOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1ob3Zlci1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRl''@;'; put 'put ''ciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZTphY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZTphY3RpdmUsLm1haW4tY29udGFpbmVy''@;'; put 'put ''Lm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlOmFjdGl2ZSwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3Rp''@;'; put 'put ''dmU6YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1zZWxlY3RlZC1hY3RpdmUtYmctY29sb3IpfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGluazpob3Zlciwu''@;'; put 'put ''bWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxp''@;'; put 'put ''bms6aG92ZXIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMiAubmF2LWxpbms6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1pdGVtLWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdmVydGljYWwtbmF2LWhvdmVyLWJnLWNvbG9yKTt0ZXh0LWRlY29yYXRpb246bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6YWN0aXZlLC5tYWluLWNvbnRhaW5lci5vcGVu''@;'; put 'put ''LWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluazphY3RpdmUsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbms6YWN0aXZlLC5tYWluLWNv''@;'; put 'put ''bnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdmVydGljYWwtbmF2LWFj''@;'; put 'put ''dGl2ZS1iZy1jb2xvcil9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuaGVhZGVy''@;'; put 'put ''LW5hdi5jbHItbmF2LWxldmVsLTIgLm5hdi1saW5rLmFjdGl2ZT4ubmF2LXRleHQsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyIC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmsuYWN0aXZlPi5uYXYtdGV4dCwubWFpbi1jb250YWluZXIub3Bl''@;'; put 'put ''bi1vdmVyZmxvdy1tZW51IC5oZWFkZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yIC5uYXYtbGluay5hY3RpdmU+Lm5hdi10ZXh0e2NvbG9yOmluaGVyaXR9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2VyLC5tYWlu''@;'; put 'put ''LWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYgLm5hdi10cmlnZ2Vye2Rpc3BsYXk6bm9uZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZ3twb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6''@;'; put 'put ''aGlkZGVuO3dpZHRoOmNhbGMoMzYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtd2lkdGg6Y2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO3otaW5kZXg6MTA0MDtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubWFpbi1jb250''@;'; put 'put ''YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZz4ubmF2LWxpbmt7b3ZlcmZsb3c6aGlkZGVufS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIC5jbHItaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXIt''@;'; put 'put ''bWVudSAuaGVhZGVyIC5icmFuZGluZyAubG9nbywubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbiwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjbHItaWNvbntkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1ibG9ja30ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyIC5icmFuZGluZyBjZHMtaWNvbltzaGFwZT12bS1idWddLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXIgLmJyYW5kaW5nIGNsci1pY29uW3NoYXBlPXZtLWJ1Z10s''@;'; put 'put ''Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLmNsci12bXctbG9nb3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1oZWFkZXItYmctY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEw''@;'; put 'put ''MCl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRpbmcgLnRpdGxle2NvbG9yOnZhcigtLWNsci12ZXJ0aWNhbC1uYXYtaXRlbS1jb2xvcik7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59Lm1haW4tY29udGFpbmVyLm9wZW4t''@;'; put 'put ''aGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2V7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6YXV0bztsZWZ0OjA7ei1pbmRleDoxMDM5O3RyYW5zZm9ybTp0cmFuc2xhdGUoY2FsYyhjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTYpKSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjZzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItbmF2LWNsb3NlPnNw''@;'; put 'put ''YW57YmFja2dyb3VuZDowIDB9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjpiZWZvcmUsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntsZWZ0OnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtMyk7dHJhbnNmb3JtLW9yaWdpbjo5JTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Bl''@;'; put 'put ''bi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZT5zcGFuOmFmdGVye3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1l''@;'; put 'put ''bnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEsLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMXtwYWRkaW5n''@;'; put 'put ''LXRvcDpjYWxjKHZhcigtLWNsci1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5j''@;'; put 'put ''bHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1t''@;'; put 'put ''ZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRh''@;'; put 'put ''aW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTJ7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0ubWFpbi1jb250YWluZXIub3Bl''@;'; put 'put ''bi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bGVmdDphdXRvO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoLTEqY2FsYyhjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTYpKSkpO3RyYW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYt''@;'; put 'put ''Y2xvc2U+c3BhbntiYWNrZ3JvdW5kOjAgMH0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcntoZWlnaHQ6dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS0yKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpKTt0cmFuc2Zvcm0tb3JpZ2luOi0zJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVy''@;'; put 'put ''Zmxvdy1tZW51IC5jbHItbmF2LWNsb3NlPnNwYW46YmVmb3Jle3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U+c3BhbjphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1haW4tY29udGFpbmVyLm9w''@;'; put 'put ''ZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwt''@;'; put 'put ''MSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMzYwKigxcmVtL3Zhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTE6YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xOmJlZm9yZSwubWFpbi1j''@;'; put 'put ''b250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTE6YmVmb3JlLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMTpiZWZvcmV7Y29udGVudDpub25lfS5tYWluLWNvbnRhaW5l''@;'; put 'put ''ci5vcGVuLWhhbWJ1cmdlci1tZW51IC5oZWFkZXItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTEgLm5hdi1saW5rLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51''@;'; put 'put ''IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSAubmF2LWxpbmssLm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmNsci12ZXJ0aWNhbC1uYXYuY2xyLW5hdi1sZXZlbC0xIC5uYXYtbGlua3t3aWR0aDoxMDAlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmhl''@;'; put 'put ''YWRlci1uYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLnN1Ym5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3ViLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyLm9wZW4t''@;'; put 'put ''b3ZlcmZsb3ctbWVudSAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTJ7d2lkdGg6Y2FsYygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9fUBtZWRpYSBzY3JlZW4gYW5kICht''@;'; put 'put ''YXgtd2lkdGg6NTc2cHgpey5tYWluLWNvbnRhaW5lciAuaGVhZGVyIC5icmFuZGluZ3ttYXgtd2lkdGg6Y2FsYygxNDQqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbn0ubWFpbi1jb250YWluZXIgLmhlYWRlci1uYXYuY2xyLW5hdi1s''@;'; put 'put ''ZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIgLnN1Yi1uYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lciAuY2xyLXZlcnRpY2FsLW5hdi5jbHItbmF2LWxldmVsLTF7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKC0x''@;'; put 'put ''KmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSkpfS5tYWluLWNvbnRhaW5lciAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVsLTIsLm1haW4tY29udGFpbmVyIC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0yLC5tYWluLWNvbnRhaW5lciAuc3ViLW5hdi5jbHItbmF2LWxldmVs''@;'; put 'put ''LTIsLm1haW4tY29udGFpbmVyIC5jbHItdmVydGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlciAuYnJhbmRp''@;'; put 'put ''bmd7d2lkdGg6Y2FsYygyODgqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9Lm1haW4tY29udGFpbmVyLm9wZW4taGFtYnVyZ2VyLW1lbnUgLmhlYWRlci1uYXYuY2xyLW5hdi1sZXZlbC0xLC5t''@;'; put 'put ''YWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWJuYXYuY2xyLW5hdi1sZXZlbC0xLC5tYWluLWNvbnRhaW5lci5vcGVuLWhhbWJ1cmdlci1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMSwubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLXZlcnRp''@;'; put 'put ''Y2FsLW5hdi5jbHItbmF2LWxldmVsLTF7b3ZlcmZsb3c6aW5oZXJpdDt3aWR0aDpjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJn''@;'; put 'put ''ZXItbWVudSAuY2xyLW5hdi1jbG9zZXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDphdXRvO2xlZnQ6MDt6LWluZGV4OjEwMzk7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKGNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''NikpKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNnMgZWFzZX0ubWFpbi1jb250YWluZXIub3Blbi1oYW1idXJnZXItbWVudSAuY2xyLW5hdi1jbG9zZTphZnRlcntjb250ZW50Om5vbmV9Lm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuaGVhZGVyLW5hdi5jbHItbmF2LWxldmVs''@;'; put 'put ''LTIsLm1haW4tY29udGFpbmVyLm9wZW4tb3ZlcmZsb3ctbWVudSAuc3VibmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5zdWItbmF2LmNsci1uYXYtbGV2ZWwtMiwubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItdmVy''@;'; put 'put ''dGljYWwtbmF2LmNsci1uYXYtbGV2ZWwtMnt3aWR0aDpjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0ubWFpbi1jb250YWluZXIub3Blbi1vdmVyZmxvdy1tZW51IC5jbHItbmF2''@;'; put 'put ''LWNsb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bGVmdDphdXRvO3otaW5kZXg6MTAzOTt0cmFuc2Zvcm06dHJhbnNsYXRlKGNhbGMoLTEqY2FsYyhjYWxjKDI4OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKSkpO3Ry''@;'; put 'put ''YW5zaXRpb246dHJhbnNmb3JtIC42cyBlYXNlfS5tYWluLWNvbnRhaW5lci5vcGVuLW92ZXJmbG93LW1lbnUgLmNsci1uYXYtY2xvc2U6YWZ0ZXJ7Y29udGVudDpub25lfX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1iYWRnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGls''@;'; put 'put ''aXR5LWdyYXkpOy0tY2xyLWJhZGdlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2UtaW5mby1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ibHVlKTstLWNsci1iYWRnZS1pbmZvLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbik7LS1jbHItYmFkZ2Utc3VjY2Vzcy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLXdhcm5pbmctYmct''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93KTstLWNsci1iYWRnZS13YXJuaW5nLWNvbG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQpOy0tY2xyLWJhZGdlLWRh''@;'; put 'put ''bmdlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLWdyYXktYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheSk7LS1jbHItYmFkZ2UtZ3JheS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDAp''@;'; put 'put ''Oy0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS12aW9sZXQpOy0tY2xyLWJhZGdlLXB1cnBsZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWJhZGdlLWJsdWUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LXV0aWxpdHktZGFyay1ibHVlKTstLWNsci1iYWRnZS1ibHVlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7LS1jbHItYmFkZ2Utb3JhbmdlLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LXRhbmdlcmluZSk7LS1jbHItYmFkZ2Utb3JhbmdlLWNv''@;'; put 'put ''bG9yOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItYmxhY2spOy0tY2xyLWJhZGdlLWxpZ2h0LWJsdWUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktbGlnaHQtYmx1ZSk7LS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01''@;'; put 'put ''MDApfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1iYWRnZS1i''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtib3JkZXItcmFkaXVzOmNhbGMoMip2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1m''@;'; put 'put ''b250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpO3doaXRlLXNwYWNlOm5vd3JhcDt0''@;'; put 'put ''ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtY29sb3IpfS5iYWRnZTp2aXNpdGVke2NvbG9yOnZhcigtLWNsci1iYWRnZS1jb2xvcil9LmJhZGdlOmxpbmt7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYmFkZ2UtZ3JheS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWJhZGdlLWdyYXktY29sb3IpfS5iYWRnZS5iYWRnZS1ncmF5LC5iYWRnZS5iYWRnZS0xe2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWdyYXktYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1ncmF5LWNvbG9yKX0uYmFkZ2UuYmFkZ2UtcHVycGxlLC5iYWRnZS5iYWRnZS0ye2Jh''@;'; put 'put ''Y2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXB1cnBsZS1jb2xvcil9LmJhZGdlLmJhZGdlLWJsdWUsLmJhZGdlLmJhZGdlLTN7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtYmx1ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWJhZGdlLWJsdWUtY29sb3IpfS5iYWRnZS5iYWRnZS1vcmFuZ2UsLmJhZGdlLmJhZGdlLTR7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yKX0uYmFkZ2UuYmFkZ2UtbGlnaHQtYmx1ZSwuYmFk''@;'; put 'put ''Z2UuYmFkZ2UtNXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtbGlnaHQtYmx1ZS1jb2xvcil9LmJhZGdlLmJhZGdlLWluZm97YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtaW5mby1iZy1jb2xvcik7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWJhZGdlLWluZm8tY29sb3IpfS5iYWRnZS5iYWRnZS1zdWNjZXNze2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXN1Y2Nlc3MtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1zdWNjZXNzLWNvbG9yKX0uYmFkZ2UuYmFkZ2UtZGFuZ2Vye2JhY2tncm91bmQ6dmFy''@;'; put 'put ''KC0tY2xyLWJhZGdlLWRhbmdlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWRhbmdlci1jb2xvcil9LmJhZGdlLmJhZGdlLXdhcm5pbmd7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utd2FybmluZy1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctY29s''@;'; put 'put ''b3IpfV86LW1zLWlucHV0LXBsYWNlaG9sZGVyIC5iYWRnZSw6cm9vdCAuYmFkZ2V7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpIGNhbGMoMyooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSkgMH1Ac3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246YXV0byl7LmJhZGdle3BhZGRp''@;'; put 'put ''bmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSBjYWxjKDMqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpIDB9fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWxhYmVsLWZvbnQtY29sb3ItbGlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1sYWJl''@;'; put 'put ''bC1mb250LWNvbG9yLWRhcms6dmFyKC0tY2xyLWNvbG9yLW5ldXRyYWwtMTAwMCk7LS1jbHItbGFiZWwtZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheSk7LS1jbHItbGFiZWwtZGVmYXVsdC1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9w''@;'; put 'put ''YWNpdHktMCk7LS1jbHItbGFiZWwtYmctaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1sYWJlbC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNs''@;'; put 'put ''ci1sYWJlbC1iZy1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItbGFiZWwtYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci1sYWJlbC1i''@;'; put 'put ''Zy1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtZGlzYWJsZWQpOy0tY2xyLWxhYmVsLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1sYWJlbC1kaXNhYmxlZC1ib3JkZXIt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItbGFiZWwtZ3JheS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItbGFiZWwtZ3JheS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktZ3JheSk7LS1jbHIt''@;'; put 'put ''bGFiZWwtZ3JheS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLXB1cnBsZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItbGFiZWwtcHVycGxlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''dXRpbGl0eS12aW9sZXQpOy0tY2xyLWxhYmVsLXB1cnBsZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLWJsdWUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLWxhYmVsLWJsdWUtYm9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LWRhcmstYmx1ZSk7LS1jbHItbGFiZWwtYmx1ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLW9yYW5nZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1j''@;'; put 'put ''bHItbGFiZWwtb3JhbmdlLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS10YW5nZXJpbmUpOy0tY2xyLWxhYmVsLW9yYW5nZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYmctY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LWxpZ2h0LWJsdWUpOy0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAw''@;'; put 'put ''KTstLWNsci1sYWJlbC1pbmZvLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy11dGlsaXR5LWJsdWUtdGludCk7LS1jbHItbGFiZWwtaW5mby1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtaW5mby1ib3JkZXItY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLXV0aWxpdHktYmx1ZSk7LS1jbHItbGFiZWwtc3VjY2Vzcy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbi10aW50KTstLWNsci1sYWJlbC1zdWNjZXNzLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1s''@;'; put 'put ''YWJlbC1zdWNjZXNzLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1ncmVlbik7LS1jbHItbGFiZWwtd2FybmluZy1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS15ZWxsb3ctdGludCk7LS1jbHItbGFiZWwtd2FybmluZy1mb250LWNvbG9yOnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtd2FybmluZy1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHkteWVsbG93KTstLWNsci1sYWJlbC1kYW5nZXItYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLXV0aWxpdHktcmVkLXRpbnQpOy0tY2xyLWxhYmVs''@;'; put 'put ''LWRhbmdlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItbGFiZWwtZGFuZ2VyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdXRpbGl0eS1yZWQpOy0tY2xyLWxhYmVsLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0''@;'; put 'put ''LWJvcmRlci13aWR0aC0xMDApfS5sYWJlbCxhLmxhYmVse2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1z''@;'; put 'put ''OmNlbnRlcjtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLWRlZmF1bHQt''@;'; put 'put ''Ym9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0yMDApO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO21hcmdpbjowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSAw''@;'; put 'put ''O3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZm9udC1jb2xvci1saWdodCk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmxhYmVsPi5iYWRnZSwubGFiZWw+Y2RzLWljb24sYS5sYWJlbD4uYmFkZ2UsYS5sYWJlbD5jZHMtaWNvbnttYXJnaW46MDt0ZXh0LWRlY29yYXRp''@;'; put 'put ''b246bm9uZX0ubGFiZWwgY2RzLWljb24sYS5sYWJlbCBjZHMtaWNvbnttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5sYWJlbCAuYmFkZ2UrY2RzLWljb24sYS5sYWJlbCAuYmFkZ2UrY2RzLWljb257bWFyZ2luLWxlZnQ6MH0ubGFiZWw+Y2RzLWljb246bGFzdC1jaGls''@;'; put 'put ''ZCwubGFiZWw+c3BhbjpsYXN0LWNoaWxkLmJhZGdlLGEubGFiZWw+Y2RzLWljb246bGFzdC1jaGlsZCxhLmxhYmVsPnNwYW46bGFzdC1jaGlsZC5iYWRnZXttYXJnaW4tcmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpKX0ubGFiZWwuY2xpY2thYmxlPi50ZXh0LGEubGFi''@;'; put 'put ''ZWwuY2xpY2thYmxlPi50ZXh0e3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmxhYmVsOnZpc2l0ZWQsYS5sYWJlbDp2aXNpdGVke2NvbG9yOnZhcigtLWNsci1sYWJlbC1mb250LWNvbG9yLWxpZ2h0KX0ubGFiZWw6Zm9jdXMsLmxhYmVsOmhvdmVyLC5sYWJlbDphY3RpdmUsYS5sYWJlbDpm''@;'; put 'put ''b2N1cyxhLmxhYmVsOmhvdmVyLGEubGFiZWw6YWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS5sYWJlbC5jbGlja2FibGU6bm90KC5kaXNhYmxlZCk6aG92ZXIsYS5sYWJlbC5jbGlja2FibGU6bm90KC5kaXNhYmxlZCk6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDp2''@;'; put 'put ''YXIoLS1jbHItbGFiZWwtYmctaG92ZXItY29sb3IpO2NvbG9yOnZhcigtLWNsci1sYWJlbC1ob3Zlci1jb2xvcil9LmxhYmVsLmNsaWNrYWJsZTpub3QoLmRpc2FibGVkKTphY3RpdmUsYS5sYWJlbC5jbGlja2FibGU6bm90KC5kaXNhYmxlZCk6YWN0aXZle2NvbG9yOnZhcigtLWNsci1sYWJl''@;'; put 'put ''bC1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWFjdGl2ZS1jb2xvcik7dHJhbnNmb3JtOnRyYW5zbGF0ZVkodmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LmxhYmVsLmxhYmVsLWdyYXksLmxhYmVsLmxhYmVsLTEsYS5sYWJlbC5sYWJlbC1ncmF5LGEubGFi''@;'; put 'put ''ZWwubGFiZWwtMXtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLWdyYXktYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1sYWJlbC1ncmF5LWJnLWNvbG9yKX0ubGFiZWwubGFiZWwtZ3JheT4uYmFkZ2UsYS5s''@;'; put 'put ''YWJlbC5sYWJlbC1ncmF5Pi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1ncmF5LWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2UtZ3JheS1jb2xvcil9LmxhYmVsLmxhYmVsLXB1cnBsZSwubGFiZWwubGFiZWwtMixhLmxhYmVsLmxhYmVsLXB1cnBsZSxhLmxhYmVsLmxh''@;'; put 'put ''YmVsLTJ7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1sYWJlbC1wdXJwbGUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1sYWJlbC1wdXJwbGUtYmctY29sb3IpfS5sYWJlbC5sYWJlbC1wdXJwbGU+LmJhZGdlLGEu''@;'; put 'put ''bGFiZWwubGFiZWwtcHVycGxlPi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1wdXJwbGUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1wdXJwbGUtY29sb3IpfS5sYWJlbC5sYWJlbC1ibHVlLC5sYWJlbC5sYWJlbC0zLGEubGFiZWwubGFiZWwtYmx1ZSxhLmxhYmVs''@;'; put 'put ''LmxhYmVsLTN7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1sYWJlbC1ibHVlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbGFiZWwtYmx1ZS1iZy1jb2xvcil9LmxhYmVsLmxhYmVsLWJsdWU+LmJhZGdlLGEubGFi''@;'; put 'put ''ZWwubGFiZWwtYmx1ZT4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtYmx1ZS1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWJsdWUtY29sb3IpfS5sYWJlbC5sYWJlbC1vcmFuZ2UsLmxhYmVsLmxhYmVsLTQsYS5sYWJlbC5sYWJlbC1vcmFuZ2UsYS5sYWJlbC5sYWJl''@;'; put 'put ''bC00e2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItbGFiZWwtb3JhbmdlLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItbGFiZWwtb3JhbmdlLWJnLWNvbG9yKX0ubGFiZWwubGFiZWwtb3JhbmdlPi5iYWRnZSxhLmxh''@;'; put 'put ''YmVsLmxhYmVsLW9yYW5nZT4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utb3JhbmdlLWNvbG9yKX0ubGFiZWwubGFiZWwtbGlnaHQtYmx1ZSwubGFiZWwubGFiZWwtNSxhLmxhYmVsLmxhYmVsLWxpZ2h0LWJs''@;'; put 'put ''dWUsYS5sYWJlbC5sYWJlbC01e2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItbGFiZWwtbGlnaHQtYmx1ZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWxhYmVsLWxpZ2h0LWJsdWUtYmctY29sb3IpfS5sYWJlbC5s''@;'; put 'put ''YWJlbC1saWdodC1ibHVlPi5iYWRnZSxhLmxhYmVsLmxhYmVsLWxpZ2h0LWJsdWU+LmJhZGdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLWxpZ2h0LWJsdWUtYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS1saWdodC1ibHVlLWNvbG9yKX0ubGFiZWwubGFiZWwtaW5mbyxhLmxh''@;'; put 'put ''YmVsLmxhYmVsLWluZm97YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtaW5mby1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLWluZm8tZm9udC1jb2xvcik7Ym9yZGVyOnZhcigtLWNsci1sYWJlbC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1sYWJlbC1pbmZvLWJvcmRl''@;'; put 'put ''ci1jb2xvcil9LmxhYmVsLmxhYmVsLWluZm8+LmJhZGdlLGEubGFiZWwubGFiZWwtaW5mbz4uYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItYmFkZ2UtaW5mby1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWJhZGdlLWluZm8tY29sb3IpfS5sYWJlbC5sYWJlbC1zdWNjZXNzLGEubGFiZWwu''@;'; put 'put ''bGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kOnZhcigtLWNsci1sYWJlbC1zdWNjZXNzLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItbGFiZWwtc3VjY2Vzcy1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLXN1Y2Nl''@;'; put 'put ''c3MtYm9yZGVyLWNvbG9yKX0ubGFiZWwubGFiZWwtc3VjY2Vzcz4uYmFkZ2UsYS5sYWJlbC5sYWJlbC1zdWNjZXNzPi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1zdWNjZXNzLWJnLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItYmFkZ2Utc3VjY2Vzcy1jb2xvcil9LmxhYmVsLmxh''@;'; put 'put ''YmVsLXdhcm5pbmcsYS5sYWJlbC5sYWJlbC13YXJuaW5ne2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLXdhcm5pbmctYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1sYWJlbC13YXJuaW5nLWZvbnQtY29sb3IpO2JvcmRlcjp2YXIoLS1jbHItbGFiZWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2''@;'; put 'put ''YXIoLS1jbHItbGFiZWwtd2FybmluZy1ib3JkZXItY29sb3IpfS5sYWJlbC5sYWJlbC13YXJuaW5nPi5iYWRnZSxhLmxhYmVsLmxhYmVsLXdhcm5pbmc+LmJhZGdle2JhY2tncm91bmQ6dmFyKC0tY2xyLWJhZGdlLXdhcm5pbmctYmctY29sb3IpO2NvbG9yOnZhcigtLWNsci1iYWRnZS13YXJu''@;'; put 'put ''aW5nLWNvbG9yKX0ubGFiZWwubGFiZWwtZGFuZ2VyLGEubGFiZWwubGFiZWwtZGFuZ2Vye2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWRhbmdlci1iZy1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWxhYmVsLWRhbmdlci1mb250LWNvbG9yKTtib3JkZXI6dmFyKC0tY2xyLWxhYmVsLWJvcmRl''@;'; put 'put ''ci13aWR0aCkgc29saWQgdmFyKC0tY2xyLWxhYmVsLWRhbmdlci1ib3JkZXItY29sb3IpfS5sYWJlbC5sYWJlbC1kYW5nZXI+LmJhZGdlLGEubGFiZWwubGFiZWwtZGFuZ2VyPi5iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1iYWRnZS1kYW5nZXItYmctY29sb3IpO2NvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1iYWRnZS1kYW5nZXItY29sb3IpfS5sYWJlbC5kaXNhYmxlZCwubGFiZWw6ZGlzYWJsZWQsYS5sYWJlbC5kaXNhYmxlZCxhLmxhYmVsOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZDtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQ6dmFyKC0tY2xyLWxhYmVsLWJnLWRpc2FibGVk''@;'; put 'put ''LWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0ubGFiZWwuZGlzYWJsZWQgLmJhZGdlLC5sYWJlbDpkaXNhYmxlZCAuYmFkZ2UsYS5sYWJlbC5kaXNhYmxlZCAuYmFk''@;'; put 'put ''Z2UsYS5sYWJlbDpkaXNhYmxlZCAuYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1jbHItbGFiZWwtZGlzYWJsZWQtY29sb3IpfUAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKXsubGFiZWwsYS5sYWJlbHt2ZXJ0aWNhbC1hbGlnbjpib3R0b219fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXByb2dy''@;'; put 'put ''ZXNzLWRlZmF1bHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMTp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyLXNo''@;'; put 'put ''YWRlKTstLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMzp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXdhcm5pbmcpOy0tY2xyLXByb2dyZXNzLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQtc2hhZGUpOy0tY2xyLXByb2dyZXNzLWxhYmVsLWNvbG9y''@;'; put 'put ''OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCl9LnByb2dyZXNzLC5wcm9ncmVzcy1zdGF0aWN7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7bWFy''@;'; put 'put ''Z2luOjA7b3ZlcmZsb3c6aGlkZGVuO21heC1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5wcm9ncmVzcz5wcm9ncmVzc3std2Via2l0LWFwcGVhcmFuY2U6bm9uZTst''@;'; put 'put ''bW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcik7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1iZy1jb2xvcik7Ym9yZGVy''@;'; put 'put ''OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcil9LnByb2dyZXNzPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhcntiYWNrZ3Jv''@;'; put 'put ''dW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9yKX0ucHJvZ3Jlc3M+cHJvZ3Jlc3NbdmFsdWU9IjAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBl''@;'; put 'put ''YXJhbmNlOm5vbmU7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnByb2dyZXNzPnByb2dyZXNzW3ZhbHVlPSIwIl06''@;'; put 'put ''Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5wcm9ncmVzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1iYXJ7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9y''@;'; put 'put ''KX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0ucHJvZ3Jlc3M+cHJvZ3Jlc3M6Oi13ZWJraXQt''@;'; put 'put ''cHJvZ3Jlc3MtdmFsdWV7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbjt0cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbjtib3JkZXItcmFkaXVzOjB9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3N7Y29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xKX0u''@;'; put 'put ''cHJvZ3Jlc3Muc3VjY2Vzcz5wcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLnN1Y2Nlc3M+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0xKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzc3tjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMpfS5wcm9ncmVzcy53YXJuaW5nPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zKX0ucHJvZ3Jlc3Mud2FybmluZz5wcm9ncmVzczo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTMpfS5wcm9ncmVzcy5kYW5nZXI+cHJvZ3Jlc3N7Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXByb2dyZXNzLWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZGFuZ2VyPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJh''@;'; put 'put ''cntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMil9LnByb2dyZXNzLmxhYmVsZWQsLnByb2dyZXNzLXN0YXRpYy5sYWJlbGVke3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLXByb2dyZXNzLWxhYmVsLWNvbG9yKX0ucHJvZ3Jlc3MubGFiZWxlZD5zcGFuLC5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD5zcGFue2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDttYXJnaW4tdG9wOjA7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10''@;'; put 'put ''eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh''@;'; put 'put ''cGh5LWNhcHRpb24tbGV0dGVyLXNwYWNpbmcpfS5wcm9ncmVzcy5jb21wYWN0Om5vdCgubGFiZWxlZCksLnByb2dyZXNzLXN0YXRpYy5jb21wYWN0Om5vdCgubGFiZWxlZCl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LnByb2dyZXNzLmNvbXBhY3QubGFiZWxlZD4ucHJvZ3Jl''@;'; put 'put ''c3MtbWV0ZXIsLnByb2dyZXNzLXN0YXRpYy5jb21wYWN0LmxhYmVsZWQ+LnByb2dyZXNzLW1ldGVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfUBrZXlmcmFtZXMgY2xyLXByb2dyZXNzLWZhZGV7MCV7b3BhY2l0eToxfXRv''@;'; put 'put ''e29wYWNpdHk6MH19LnByb2dyZXNzLnByb2dyZXNzLWZhZGU+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdLC5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlPnByb2dyZXNzW3ZhbHVlPSIxMDAiXStzcGFue2FuaW1hdGlvbjpjbHItcHJvZ3Jlc3MtZmFkZSAuM3MgbGluZWFyIC41cyBmb3J3YXJkc30ucHJv''@;'; put 'put ''Z3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc3t0cmFuc2l0aW9uOmNvbG9yIC4xcyBlYXNlLW91dCAxc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVlLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVz''@;'; put 'put ''czo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zczt0cmFuc2l0aW9uOndpZHRoIC4yM3MgZWFzZS1pbixiYWNrZ3JvdW5kLWNvbG9yIC4xcyBlYXNlLW91dCAuM3N9LnBy''@;'; put 'put ''b2dyZXNzLmZsYXNoLWRhbmdlcj5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVlLC5wcm9ncmVzcy5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMCJdOjotd2Via2l0LXByb2dyZXNzLXZhbHVley13ZWJraXQtdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZX0u''@;'; put 'put ''cHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhciwucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFyey1tb3otdHJhbnNpdGlvbjp3aWR0aCAuMjNzIGVhc2UtaW4sYmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1vdXQgLjNzO3Ry''@;'; put 'put ''YW5zaXRpb246d2lkdGggLjIzcyBlYXNlLWluLGJhY2tncm91bmQtY29sb3IgLjFzIGVhc2Utb3V0IC4zc30ucHJvZ3Jlc3MuZmxhc2g+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJde2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3Zh''@;'; put 'put ''bHVlPSIxMDAiXTo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1j''@;'; put 'put ''bHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEpfS5wcm9ncmVzcy5wcm9ncmVzcy1mYWRlLmZsYXNoPnByb2dyZXNzW3ZhbHVlPSIxMDAiXSwucHJvZ3Jlc3MucHJvZ3Jlc3MtZmFkZS5mbGFzaD5wcm9ncmVzc1t2YWx1ZT0iMTAwIl0rc3BhbnthbmltYXRpb246Y2xyLXByb2dyZXNzLWZhZGUgLjZz''@;'; put 'put ''IGxpbmVhciAxcyBmb3J3YXJkc30ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXXtjb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTIpfS5wcm9ncmVzcy5mbGFzaC1kYW5nZXI+cHJvZ3Jlc3NbdmFsdWU9IjEwMCJdOjotd2Via2l0LXByb2dyZXNz''@;'; put 'put ''LXZhbHVle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0ucHJvZ3Jlc3MuZmxhc2gtZGFuZ2VyPnByb2dyZXNzW3ZhbHVlPSIxMDAiXTo6LW1vei1wcm9ncmVzcy1iYXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9y''@;'; put 'put ''LTIpfUBrZXlmcmFtZXMgY2xyLXByb2dyZXNzLWxvb3BlcnswJXtsZWZ0Oi0xMDAlfXRve2xlZnQ6MTAwJX19LnByb2dyZXNzLmxvb3B7cG9zaXRpb246cmVsYXRpdmV9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3N7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnRyYW5zcGFyZW50fS5wcm9ncmVzcy5s''@;'; put 'put ''b29wPnByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnByb2dyZXNzLmxvb3A+cHJvZ3Jlc3M6Oi1tb3otcHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnByb2dyZXNzLmxvb3A6YWZ0ZXJ7YW5pbWF0''@;'; put 'put ''aW9uOmNsci1wcm9ncmVzcy1sb29wZXIgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7Y29udGVudDoiICI7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcik7''@;'; put 'put ''d2lkdGg6NTAlfS5wcm9ncmVzcy5sb29wLmRhbmdlcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMil9LnByb2dyZXNzLmxvb3Aud2FybmluZzphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMyl9''@;'; put 'put ''LnByb2dyZXNzLmxvb3Auc3VjY2VzczphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1hbHQtY29sb3ItMSl9LnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVy''@;'; put 'put ''e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWJnLWNvbG9yKTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjB9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWRl''@;'; put 'put ''ZmF1bHQtY29sb3IpO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7Y29udGVudDoiICJ9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9n''@;'; put 'put ''cmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMiXTpiZWZvcmV7d2lkdGg6MiV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNCJdOmJlZm9yZSwucHJvZ3Jlc3Mt''@;'; put 'put ''c3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNyJdOmJlZm9yZXt3aWR0aDo1''@;'; put 'put ''JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTAiXTpi''@;'; put 'put ''ZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMTIiXTpiZWZvcmV7d2lkdGg6MTAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2Rh''@;'; put 'put ''dGEtdmFsdWU9IjEzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1l''@;'; put 'put ''dGVyW2RhdGEtdmFsdWU9IjE2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjE3Il06YmVmb3Jle3dpZHRoOjE1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3Rh''@;'; put 'put ''dGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIxOSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMSJdOmJlZm9yZSwucHJvZ3Jl''@;'; put 'put ''c3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIyMiJdOmJlZm9yZXt3aWR0aDoyMCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjQi''@;'; put 'put ''XTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMjYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1''@;'; put 'put ''ZT0iMjciXTpiZWZvcmV7d2lkdGg6MjUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjI5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNz''@;'; put 'put ''LW1ldGVyW2RhdGEtdmFsdWU9IjMwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjMyIl06YmVmb3Jle3dpZHRoOjMwJX0ucHJvZ3Jlc3Mt''@;'; put 'put ''c3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzMyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNSJdOmJlZm9yZSwucHJv''@;'; put 'put ''Z3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNiJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSIzNyJdOmJlZm9yZXt3aWR0aDozNSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0i''@;'; put 'put ''MzgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iMzkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12''@;'; put 'put ''YWx1ZT0iNDEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNDIiXTpiZWZvcmV7d2lkdGg6NDAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQzIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dy''@;'; put 'put ''ZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ0Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+''@;'; put 'put ''LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjQ3Il06YmVmb3Jle3dpZHRoOjQ1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI0OSJdOmJlZm9yZSwu''@;'; put 'put ''cHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI1MiJdOmJl''@;'; put 'put ''Zm9yZXt3aWR0aDo1MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0''@;'; put 'put ''YS12YWx1ZT0iNTUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNTciXTpiZWZvcmV7d2lkdGg6NTUlfS5wcm9ncmVzcy1zdGF0aWM+LnBy''@;'; put 'put ''b2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU4Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjU5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0''@;'; put 'put ''aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYxIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjYyIl06YmVmb3Jle3dpZHRoOjYwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2MyJdOmJlZm9y''@;'; put 'put ''ZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NiJd''@;'; put 'put ''OmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI2NyJdOmJlZm9yZXt3aWR0aDo2NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNjgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJb''@;'; put 'put ''ZGF0YS12YWx1ZT0iNjkiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzAiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iNzEiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3Mt''@;'; put 'put ''bWV0ZXJbZGF0YS12YWx1ZT0iNzIiXTpiZWZvcmV7d2lkdGg6NzAlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjczIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc0Il06YmVmb3JlLC5wcm9ncmVzcy1z''@;'; put 'put ''dGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc1Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc2Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijc3Il06YmVmb3Jle3dpZHRo''@;'; put 'put ''Ojc1JX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI3OSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4''@;'; put 'put ''MCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI4MiJdOmJlZm9yZXt3aWR0aDo4MCV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0''@;'; put 'put ''ZXJbZGF0YS12YWx1ZT0iODMiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODQiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODUiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jl''@;'; put 'put ''c3MtbWV0ZXJbZGF0YS12YWx1ZT0iODYiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iODciXTpiZWZvcmV7d2lkdGg6ODUlfS5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg4Il06YmVmb3JlLC5wcm9ncmVz''@;'; put 'put ''cy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9Ijg5Il06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkwIl06YmVmb3JlLC5wcm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkxIl06YmVmb3JlLC5w''@;'; put 'put ''cm9ncmVzcy1zdGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjkyIl06YmVmb3Jle3dpZHRoOjkwJX0ucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5MyJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVl''@;'; put 'put ''PSI5NCJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NSJdOmJlZm9yZSwucHJvZ3Jlc3Mtc3RhdGljPi5wcm9ncmVzcy1tZXRlcltkYXRhLXZhbHVlPSI5NiJdOmJlZm9yZXt3aWR0aDo5NSV9LnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3Mt''@;'; put 'put ''bWV0ZXJbZGF0YS12YWx1ZT0iOTciXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTgiXTpiZWZvcmUsLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJbZGF0YS12YWx1ZT0iOTkiXTpiZWZvcmV7d2lkdGg6OTglfS5wcm9ncmVzcy1z''@;'; put 'put ''dGF0aWM+LnByb2dyZXNzLW1ldGVyW2RhdGEtdmFsdWU9IjEwMCJdOmJlZm9yZXt3aWR0aDoxMDAlfS5wcm9ncmVzcy1zdGF0aWMubGFiZWxlZD4ucHJvZ3Jlc3MtbWV0ZXJ7cmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSl9LnByb2dyZXNzLXN0YXRpYy5zdWNjZXNzPi5wcm9ncmVz''@;'; put 'put ''cy1tZXRlcjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItcHJvZ3Jlc3MtYWx0LWNvbG9yLTEpfS5wcm9ncmVzcy1zdGF0aWMud2FybmluZz4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0zKX0ucHJv''@;'; put 'put ''Z3Jlc3Mtc3RhdGljLmRhbmdlcj4ucHJvZ3Jlc3MtbWV0ZXI6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXByb2dyZXNzLWFsdC1jb2xvci0yKX0uY2FyZC1ibG9jayAucHJvZ3Jlc3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLXN0YXRpYywuY2FyZC1mb290ZXIgLnByb2dyZXNz''@;'; put 'put ''LC5jYXJkLWZvb3RlciAucHJvZ3Jlc3Mtc3RhdGlje2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDttYXJnaW46Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSAwIDB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLnRvcCwuY2Fy''@;'; put 'put ''ZC1ibG9jayAucHJvZ3Jlc3Mtc3RhdGljLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLnRvcCwuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYy50b3B7bWFyZ2luLXRvcDowO3RvcDowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWNhcmQtYm9yZGVyLXJhZGl1cywgdmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCkpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci1jYXJkLWJvcmRlci1yYWRpdXMsIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApKX0uY2FyZC1ibG9jayAucHJvZ3Jlc3M+cHJvZ3Jl''@;'; put 'put ''c3MsLmNhcmQtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXIsLmNhcmQtZm9vdGVyIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1mb290ZXIgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGV9LnByb2dyZXNzLWJsb2Nre2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2NvbG9yOnZhcigtLWNsci1wcm9ncmVzcy1sYWJlbC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3Jh''@;'; put 'put ''cGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5wcm9ncmVzcy1ibG9jaz4qe2ZsZXg6MCAwIGF1dG87cGFkZGluZy1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5wcm9ncmVzcy1ibG9jaz46bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0''@;'; put 'put ''OjB9LnByb2dyZXNzLWJsb2NrPmxhYmVsLC5wcm9ncmVzcy1ibG9jaz5zcGFue21heC13aWR0aDozMyV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcywucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLXN0YXRpY3tmbGV4OjAgMSBhdXRvfS5wcm9ncmVzcy1ibG9jaz4ucHJvZ3Jlc3MtZ3JvdXB7''@;'; put 'put ''ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDphdXRvO2ZsZXg6MCAxIGF1dG87ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LnByb2dyZXNzLWJsb2NrPi5wcm9ncmVzcy1ncm91cCAuY2xyLXJvd3ttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2NvbG9yOnZhcigtLWNsci1wcm9ncmVz''@;'; put 'put ''cy1sYWJlbC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dy''@;'; put 'put ''YXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKX0ucHJvZ3Jlc3MtYmxvY2s+LnByb2dyZXNzLWdyb3VwIC5jbHItcm93PltjbGFzcyo9Y2xyLWNvbC1de3BhZGRpbmctbGVmdDow''@;'; put 'put ''O3BhZGRpbmctcmlnaHQ6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2t7bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3BhZGRpbmc6MH0uY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2s6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQtYmxvY2sgLnBy''@;'; put 'put ''b2dyZXNzLWJsb2NrPmxhYmVse21heC13aWR0aDozMyV9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpY3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02''@;'; put 'put ''KTttYXJnaW4tdG9wOjB9LmNhcmQtYmxvY2sgLnByb2dyZXNzLWJsb2NrIC5wcm9ncmVzcz5wcm9ncmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzPi5wcm9ncmVzcy1tZXRlciwuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz5wcm9n''@;'; put 'put ''cmVzcywuY2FyZC1ibG9jayAucHJvZ3Jlc3MtYmxvY2sgLnByb2dyZXNzLXN0YXRpYz4ucHJvZ3Jlc3MtbWV0ZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9XzotbXMtaW5wdXQtcGxhY2Vob2xkZXIgLnByb2dyZXNzLWJsb2NrPmxhYmVsLDpyb290IC5wcm9ncmVzcy1ibG9j''@;'; put 'put ''az5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9ja306cm9vdCBbY2RzLXRoZW1lXXstLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE0KTstLWNsci1zcGlubmVyLW1lZGl1bS1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpOy0tY2xyLXNwaW5u''@;'; put 'put ''ZXItc21hbGwtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpOy0tY2xyLXNwaW5uZXItaW5zaWRlLWJ1dHRvbi1zdHJva2Utd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTstLWNsci1zcGlubmVyLWluc2lkZS10cmVldmlldy1zdHJva2Utd2lkdGg6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTstLWNsci1zcGlubmVyLWRlZmF1bHQtc3Ryb2tlLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7LS1jbHItc3Bpbm5lci1tZWRpdW0tc3Ryb2tlLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVy''@;'; put 'put ''LXdpZHRoLTQwMCk7LS1jbHItc3Bpbm5lci1zbWFsbC1zdHJva2Utd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKTstLWNsci1zcGlubmVyLWZpbGwtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1zaGFkZSk7''@;'; put 'put ''LS1jbHItc3Bpbm5lci1maWxsLWludmVyc2UtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC1pbnZlcnNlKTstLWNsci1zcGlubmVyLWZpbGwtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1pbmZvKTstLWNsci1zcGlubmVyLWZpbGwtaW52''@;'; put 'put ''ZXJzZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWluZm8tdGludCk7LS1jbHItc3Bpbm5lci1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0zMDApOy0tY2xyLXNwaW5uZXItbWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''Nil9LnNwaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQt''@;'; put 'put ''c2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdo''@;'; put 'put ''dCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO2FuaW1hdGlvbjpzcGluIDFzIGxpbmVhciBpbmZpbml0''@;'; put 'put ''ZTttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nOjA7dGV4dC1pbmRlbnQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwfS5zcGlubmVyOmFmdGVye2NvbnRlbnQ6IiI7aGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLXNwaW5u''@;'; put 'put ''ZXItZGVmYXVsdC1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NsaXAtcGF0aDplbGxpcHNlKDEwMCUgNTMuNSUgYXQg''@;'; put 'put ''MCAwKTtib3JkZXI6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zdHJva2Utd2lkdGgpIHNvbGlkIHZhcigtLWNsci1zcGlubmVyLWZpbGwtY29sb3IpO2JvcmRlci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6''@;'; put 'put ''dmFyKC0tY2xyLXNwaW5uZXItYm9yZGVyLXJhZGl1cyl9LnNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IiI7aGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItZGVmYXVsdC1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVy''@;'; put 'put ''LWRlZmF1bHQtc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1zcGlubmVyLWRlZmF1bHQtc2l6ZSk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2JvcmRlcjp2YXIoLS1jbHItc3Bpbm5lci1kZWZhdWx0LXN0cm9rZS13aWR0aCkgc29saWQgdmFyKC0tY2xyLXNwaW5uZXItZmlsbC1i''@;'; put 'put ''Zy1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItc3Bpbm5lci1ib3JkZXItcmFkaXVzKX0uc3Bpbm5lci5zcGlubmVyLW1ke2hlaWdodDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO21pbi1oZWlnaHQ6dmFy''@;'; put 'put ''KC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc2l6ZSl9LnNwaW5uZXIuc3Bpbm5lci1tZDpiZWZvcmUsLnNwaW5uZXIuc3Bpbm5lci1tZDphZnRlcntoZWlnaHQ6dmFyKC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO3dpZHRo''@;'; put 'put ''OnZhcigtLWNsci1zcGlubmVyLW1lZGl1bS1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLW1lZGl1bS1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItbWVkaXVtLXNpemUpO2JvcmRlci13aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1tZWRpdW0tc3Ryb2tlLXdpZHRo''@;'; put 'put ''KX0uc3Bpbm5lci5zcGlubmVyLWlubGluZSwuc3Bpbm5lci5zcGlubmVyLXNte2hlaWdodDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKTt3aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1zcGlubmVyLXNtYWxsLXNpemUpO21pbi13''@;'; put 'put ''aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKX0uc3Bpbm5lci5zcGlubmVyLWlubGluZTpiZWZvcmUsLnNwaW5uZXIuc3Bpbm5lci1pbmxpbmU6YWZ0ZXIsLnNwaW5uZXIuc3Bpbm5lci1zbTpiZWZvcmUsLnNwaW5uZXIuc3Bpbm5lci1zbTphZnRlcntoZWlnaHQ6dmFyKC0tY2xy''@;'; put 'put ''LXNwaW5uZXItc21hbGwtc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItc21hbGwtc2l6ZSk7bWluLWhlaWdodDp2YXIoLS1jbHItc3Bpbm5lci1zbWFsbC1zaXplKTttaW4td2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItc21hbGwtc2l6ZSk7Ym9yZGVyLXdpZHRoOnZhcigtLWNsci1zcGlu''@;'; put 'put ''bmVyLXNtYWxsLXN0cm9rZS13aWR0aCl9LnNwaW5uZXIuc3Bpbm5lci1pbmxpbmV7dmVydGljYWwtYWxpZ246dGV4dC1ib3R0b207bWFyZ2luLXJpZ2h0OnZhcigtLWNsci1zcGlubmVyLW1hcmdpbi1yaWdodCl9LnNwaW5uZXIuc3Bpbm5lci1pbnZlcnNlOmJlZm9yZXtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLXNwaW5uZXItZmlsbC1pbnZlcnNlLWJnLWNvbG9yKX0uc3Bpbm5lci5zcGlubmVyLWludmVyc2U6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1zcGlubmVyLWZpbGwtaW52ZXJzZS1jb2xvcik7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0''@;'; put 'put ''b20tY29sb3I6dHJhbnNwYXJlbnR9LnNwaW5uZXIuc3Bpbm5lci1uZXV0cmFsLTA6YmVmb3Jle2JvcmRlci1jb2xvcjojMDAwfS5zcGlubmVyLnNwaW5uZXItbmV1dHJhbC0wOmFmdGVye2JvcmRlci1jb2xvcjp2YXIoLS1jbHItc3Bpbm5lci1maWxsLWNvbG9yKTtib3JkZXItcmlnaHQtY29s''@;'; put 'put ''b3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudH0uc3Bpbm5lci5zcGlubmVyLWNoZWNre2FuaW1hdGlvbjpub25lO21hc2s6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHZpZXdCb3gl''@;'; put 'put ''M0QlMjIwJTIwMCUyMDM2JTIwMzYlMjIlMjBwcmVzZXJ2ZUFzcGVjdFJhdGlvJTNEJTIyeE1pZFlNaWQlMjBtZWV0JTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB4bWxucyUzQXhsaW5rJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5v''@;'; put 'put ''cmclMkYxOTk5JTJGeGxpbmslMjIlMjBmb2N1c2FibGUlM0QlMjJmYWxzZSUyMiUyMGFyaWEtaGlkZGVuJTNEJTIydHJ1ZSUyMiUyMHJvbGUlM0QlMjJpbWclMjIlM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzc0NzQ3NCUyMiUyMGNsYXNzJTNEJTIyY2xyLWktb3V0bGluZSUyMGNsci1pLW91''@;'; put 'put ''dGxpbmUtcGF0aC0xJTIyJTIwZCUzRCUyMk0xMy43MiUyQzI3LjY5JTJDMy4yOSUyQzE3LjI3YTElMkMxJTJDMCUyQzAlMkMxJTJDMS40MS0xLjQxbDklMkM5TDMxLjI5JTJDNy4yOWExJTJDMSUyQzAlMkMwJTJDMSUyQzEuNDElMkMxLjQxWiUyMiUzRSUzQyUyRnBhdGglM0UlM0MlMkZzdmcl''@;'; put 'put ''M0UpOy13ZWJraXQtbWFzay1yZXBlYXQ6bm8tcmVwZWF0O21hc2stcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1idG4tc3VjY2Vzcy1jaGVja2VkLWNvbG9yKX0uc3Bpbm5lci5zcGlubmVyLWNoZWNrOmFmdGVyLC5zcGlubmVyLnNwaW5uZXItY2hlY2s6YmVm''@;'; put 'put ''b3Jle2JvcmRlcjowfS5idG4gLnNwaW5uZXJ7bWFyZ2luLXJpZ2h0OjA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLXdpZHRoOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtNyl9LmJ0biAuc3Bpbm5lcjpiZWZvcmUsLmJ0biAuc3Bpbm5lcjphZnRlcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lk''@;'; put 'put ''dGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXNwaW5uZXItaW5zaWRlLWJ1dHRvbi1zdHJva2Utd2lkdGgpfS5idG4taWNvbjpub3QoLmJ0bi1zbSkgLnNwaW5uZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1zcGFjZS03KTttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci10cmVlbm9kZS1zcGlubmVyLWNvbnRhaW5lciAuc3Bpbm5lcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03''@;'; put 'put ''KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLXRyZWVub2RlLXNwaW5uZXItY29udGFpbmVyIC5zcGlubmVyOmJlZm9yZSwuY2xyLXRyZWVu''@;'; put 'put ''b2RlLXNwaW5uZXItY29udGFpbmVyIC5zcGlubmVyOmFmdGVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTcpO2JvcmRlci13aWR0aDp2YXIoLS1jbHItc3Bpbm5lci1pbnNpZGUtdHJlZXZpZXctc3Ryb2tlLXdpZHRoKX1Aa2V5ZnJhbWVzIHNwaW57MCV7dHJhbnNmb3JtOnJvdGF0ZSgwKX10b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXRh''@;'; put 'put ''YmxlLWJvcmRlcndpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7LS1jbHItdGFibGUtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzOnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLXRhYmxlLWNlbGwtcGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItdGFibGUtY2VsbC1jb21wYWN0LXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0z''@;'; put 'put ''KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLXRhYmxlLW5vYm9yZGVyLWJvcmRlcndpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMCk7LS1jbHItdGFibGUtZGF0YS1jZWxsLWZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC1zaXplLTQpOy0tY2xy''@;'; put 'put ''LXRhYmxlLWRhdGEtY2VsbC1saW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpOy0tY2xyLXRhYmxlLWRhdGEtY2VsbC1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtcmVndWxhcik7LS1jbHItdGFibGUtaGVhZGVyLWNlbGwtZm9u''@;'; put 'put ''dC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXNpemUtMSk7LS1jbHItdGFibGUtaGVhZGVyLWNlbGwtbGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci10YWJsZS1oZWFkZXItY2VsbC1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5''@;'; put 'put ''cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpOy0tY2xyLXRhYmxlLWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItdGhlYWQtYmdjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLXRpbnQp''@;'; put 'put ''Oy0tY2xyLXRhYmxlLWhlYWRlci1ib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci10YWJsZS1mb290ZXItYm9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItdGFibGUtYm9y''@;'; put 'put ''ZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItdGFibGUtZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xv''@;'; put 'put ''ci00MDApOy0tY2xyLXRhYmxlLW1hcmdpbjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpIDAgMCAwOy0tY2xyLXRoZWFkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItdGFibGUtc21hbGxwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7''@;'; put 'put ''LS1jbHItdGFibGUtYm90dG9tY2VsbHBhZGRpbmc6Y2FsYyh2YXIoLS1jbHItdGFibGUtY2VsbHBhZGRpbmcpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7LS1jbHItdGFibGUtdG9wY2VsbHBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci10YWJsZS1mb250c2l6''@;'; put 'put ''ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci10YWJsZS1saW5laGVpZ2h0Om1peGlucy5iYXNlbGluZVB4KDE0KTstLWNsci10YWJsZS1jZWxscGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpOy0tY2xyLXRhYmxlLWNvbXBhY3Qt''@;'; put 'put ''cm93LWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpOy0tY2xyLXRhYmxlLWNvbXBhY3QtdmVydGljYWwtcGFkZGluZzpjYWxjKCAodmFyKC0tY2xyLXRhYmxlLWNvbXBhY3Qtcm93LWhlaWdodCkgLSB2YXIoLS1jbHItdGFibGUtbGluZWhlaWdodCkpICogLjUgKX0udGFibGV7Ym9y''@;'; put 'put ''ZGVyLWNvbGxhcHNlOnNlcGFyYXRlO2JvcmRlcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpIHNvbGlkIHZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LXRhYmxlLWJnY29sb3IpO2NvbG9yOnZhcigtLWNsci10YWJsZS1mb250LWNvbG9yKTttYXJnaW46dmFyKC0tY2xyLXRhYmxlLW1hcmdpbik7bWF4LXdpZHRoOjEwMCU7d2lkdGg6MTAwJX0udGFibGUgdGgsLnRhYmxlIHRke2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRvcC13aWR0''@;'; put 'put ''aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlcm93LWJvcmRlcmNvbG9yKTtwYWRkaW5nOnZhcigtLWNsci10YWJsZS1jZWxsLXBhZGRpbmcpO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOnRvcH0udGFibGUgdGgu''@;'; put 'put ''bGVmdCwudGFibGUgdGQubGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRhYmxlIHRoLmxlZnQ6Zmlyc3QtY2hpbGQsLnRhYmxlIHRkLmxlZnQ6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LnRhYmxlIHRoLnJpZ2h0LC50YWJsZSB0ZC5yaWdodHt0ZXh0''@;'; put 'put ''LWFsaWduOnJpZ2h0fS50YWJsZSB0ZHtmb250LXNpemU6dmFyKC0tY2xyLXRhYmxlLWRhdGEtY2VsbC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtbGluZS1o''@;'; put 'put ''ZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyl9LnRhYmxlIHRoe2NvbG9yOnZhcigtLWNsci10aGVhZC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1z''@;'; put 'put ''aXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw''@;'; put 'put ''aHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQtYmdjb2xvcik7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgp''@;'; put 'put ''O2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MCBub25lfS50YWJsZSB0Ym9keSt0Ym9keXtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRl''@;'; put 'put ''ci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS50YWJsZSB0aGVhZCB0aDpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1jbHIt''@;'; put 'put ''dGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRhYmxlIHRoZWFkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRk''@;'; put 'put ''OmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1i''@;'; put 'put ''b3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJjZWxscmFkaXVzKX0udGFibGUtY29tcGFjdCB0aCwudGFibGUtY29tcGFjdCB0ZHtwYWRkaW5nOnZhcigtLWNsci10YWJsZS1jZWxsLWNvbXBhY3QtcGFkZGluZyl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoZWFkIHRo''@;'; put 'put ''e2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtkaXNwbGF5Om5vbmV9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoe2JvcmRlci1ib3R0b206MDtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItdG9wLWNvbG9y''@;'; put 'put ''OnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpO3ZlcnRpY2FsLWFsaWduOnRvcH0udGFibGUudGFibGUtdmVydGljYWwgdGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRoe3RleHQtYWxpZ246bGVmdDtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LnRhYmxl''@;'; put 'put ''LnRhYmxlLXZlcnRpY2FsIHRkOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS12ZXJ0aWNhbCB0aDpmaXJzdC1jaGlsZHtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigt''@;'; put 'put ''LWNsci10YWJsZS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9m''@;'; put 'put ''LXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGg6Zmly''@;'; put 'put ''c3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMpfS50YWJsZS50YWJs''@;'; put 'put ''ZS12ZXJ0aWNhbCB0Ym9keTpmaXJzdC1vZi10eXBlIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5OmZpcnN0LW9mLXR5cGUgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1y''@;'; put 'put ''YWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMpfS50YWJsZS50YWJsZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpm''@;'; put 'put ''aXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LnRhYmxlLnRhYmxlLXZlcnRpY2FsIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC50YWJsZS50YWJs''@;'; put 'put ''ZS12ZXJ0aWNhbCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNlbGxyYWRpdXMpfS50YWJsZS50YWJsZS1ub2JvcmRlcntib3JkZXItcmFk''@;'; put 'put ''aXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjB9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoe2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDowIG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRo''@;'; put 'put ''OmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDowIG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRke2JvcmRlci10b3A6MCBub25lO3BhZGRpbmctdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRkOmZpcnN0LWNoaWxke2JvcmRlci1yaWdodDow''@;'; put 'put ''IG5vbmV9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoZWFkIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS1ub2JvcmRlciB0aGVhZCB0aDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MH0udGFibGUudGFibGUtbm9ib3JkZXIgdGgsLnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRke2JvcmRlci1y''@;'; put 'put ''YWRpdXM6MCFpbXBvcnRhbnR9LnRhYmxlLnRhYmxlLW5vYm9yZGVyIHRoOmZpcnN0LWNoaWxkLC50YWJsZS50YWJsZS1ub2JvcmRlciB0ZDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10b29sdGlwLWJh''@;'; put 'put ''Y2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXRvb2x0aXAtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMTAwKTstLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7LS1jbHItdG9vbHRpcC1mb250LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCl9LnRvb2x0aXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O292''@;'; put 'put ''ZXJmbG93OnZpc2libGV9LnRvb2x0aXA+LnRvb2x0aXAtY29udGVudHt2aXNpYmlsaXR5OmhpZGRlbjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBsaW5lYXI7d2hpdGUtc3BhY2U6bm9ybWFsO3otaW5kZXg6MTA1MH0udG9vbHRpcD4udG9vbHRpcC1jb250ZW50OmFmdGVye3Bv''@;'; put 'put ''c2l0aW9uOmFic29sdXRlO2luc2V0Oi0yMHB4O2NvbnRlbnQ6IiI7ei1pbmRleDotMX0udG9vbHRpcDpob3Zlcj4udG9vbHRpcC1jb250ZW50LC50b29sdGlwOmZvY3VzPi50b29sdGlwLWNvbnRlbnR7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MX0udG9vbHRpcDpob3Zlcj4udG9vbHRp''@;'; put 'put ''cC1jb250ZW50OmVtcHR5LC50b29sdGlwOmZvY3VzPi50b29sdGlwLWNvbnRlbnQ6ZW1wdHl7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowfS50b29sdGlwOmZvY3Vze291dGxpbmU6MH0udG9vbHRpcDpmb2N1cz46Zmlyc3QtY2hpbGR7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCk7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUpfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAudG9vbHRpcC10b3AtcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRp''@;'; put 'put ''cCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLXJpZ2h0e21hcmdpbjowO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1z''@;'; put 'put ''cGFjZS02KTtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNs''@;'; put 'put ''ci10b29sdGlwLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OmF1dG8gYXV0byAxMDAlIDUw''@;'; put 'put ''JTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7bWFyZ2luLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS50b29sdGlwPi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50''@;'; put 'put ''b29sdGlwLWNvbnRlbnQudG9vbHRpcC10b3AtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtsZWZ0OjA7dG9wOmF1dG87cmlnaHQ6YXV0bztib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXIt''@;'; put 'put ''bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItYm90dG9t''@;'; put 'put ''OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNv''@;'; put 'put ''bnRlbnQudG9vbHRpcC10b3AtbGVmdHttYXJnaW46MDt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7Y29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250''@;'; put 'put ''LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDphdXRvIDUwJSAxMDAlIGF1dG87Ym9yZGVyLWJvdHRv''@;'; put 'put ''bS1yaWdodC1yYWRpdXM6MDttYXJnaW4tYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LnRvb2x0aXAudG9vbHRpcC10b3AtbGVmdD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtdG9wLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6''@;'; put 'put ''IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtyaWdodDowO3RvcDphdXRvO2xlZnQ6YXV0bztib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXItcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHIt''@;'; put 'put ''dG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2Jv''@;'; put 'put ''cmRlci1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tcmlnaHQ+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLXJpZ2h0e21hcmdpbjowO3dpZHRoOmNh''@;'; put 'put ''bGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtjb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvcik7YmFja2dyb3VuZC1jb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlwLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjEwMCUgYXV0byBhdXRvIDUwJTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTkpfS50b29sdGlwLnRvb2x0aXAtYm90dG9tLXJpZ2h0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9u''@;'; put 'put ''ZTtsZWZ0OjA7Ym90dG9tOmF1dG87cmlnaHQ6YXV0bzt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXItbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1ib3R0b206''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29s''@;'; put 'put ''aWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1ib3R0b20tbGVmdHttYXJnaW46MDt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7Ym9y''@;'; put 'put ''ZGVyLXJhZGl1czp2YXIoLS1jbHItdG9vbHRpcC1ib3JkZXItcmFkaXVzKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7Y29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Zm9u''@;'; put 'put ''dC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItdG9vbHRpcC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlw''@;'; put 'put ''b2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxMDAlIDUwJSBhdXRvIGF1dG87Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LnRvb2x0aXAudG9vbHRpcC1ib3R0b20tbGVmdD4u''@;'; put 'put ''dG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtyaWdodDowO2JvdHRvbTphdXRvO2xlZnQ6YXV0bzt0b3A6Y2FsYygt''@;'; put 'put ''MSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXItcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSBzb2xpZCB2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xy''@;'; put 'put ''LXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1yaWdodD4udG9v''@;'; put 'put ''bHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1yaWdodHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDo1MCUgYXV0byBhdXRvIDEwMCU7bWFyZ2luOjA7d2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JvcmRlci1yYWRpdXM6''@;'; put 'put ''dmFyKC0tY2xyLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2NvbG9yOnZhcigtLWNsci10b29sdGlwLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLXRvb2x0aXAtZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9k''@;'; put 'put ''eS1sZXR0ZXItc3BhY2luZyk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LnRvb2x0aXAudG9vbHRpcC1yaWdodD4udG9vbHRpcC1jb250ZW50OmJlZm9yZSwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAtcmln''@;'; put 'put ''aHQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtib3R0b206YXV0bztyaWdodDphdXRvO2xlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtib3JkZXItdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkg''@;'; put 'put ''c29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNv''@;'; put 'put ''bGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnR9LnRvb2x0aXAudG9vbHRpcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQsLnRvb2x0aXAgLnRvb2x0aXAtY29udGVudC50b29sdGlwLWxlZnR7cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7aW5zZXQ6NTAlIDEwMCUgYXV0byBhdXRvO21hcmdpbjowO3dpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10b29sdGlwLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtj''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItdG9vbHRpcC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci10b29sdGlw''@;'; put 'put ''LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktbGV0dGVyLXNwYWNpbmcpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7bWFyZ2luLXJpZ2h0OnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtOSl9LnRvb2x0aXAudG9vbHRpcC1sZWZ0Pi50b29sdGlwLWNvbnRlbnQ6YmVmb3JlLC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1sZWZ0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7Ym90''@;'; put 'put ''dG9tOmF1dG87bGVmdDphdXRvO3JpZ2h0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSk7Ym9yZGVyLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHZhcigtLWNsci10b29sdGlwLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1sZWZ0OnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtNSkgc29saWQgdmFyKC0tY2xyLXRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFy''@;'; put 'put ''ZW50fS50b29sdGlwLnRvb2x0aXAteHM+LnRvb2x0aXAtY29udGVudCwudG9vbHRpcCAudG9vbHRpcC1jb250ZW50LnRvb2x0aXAteHN7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNCl9LnRvb2x0aXAudG9vbHRpcC1zbT4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlw''@;'; put 'put ''LWNvbnRlbnQudG9vbHRpcC1zbXt3aWR0aDpjYWxjKDEyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXAudG9vbHRpcC1tZD4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1tZHt3aWR0aDpjYWxjKDI0MCooMXJlbS92YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXAudG9vbHRpcC1sZz4udG9vbHRpcC1jb250ZW50LC50b29sdGlwIC50b29sdGlwLWNvbnRlbnQudG9vbHRpcC1sZ3t3aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LnRvb2x0aXA+LmJ0bisudG9vbHRpcC1j''@;'; put 'put ''b250ZW50LC50b29sdGlwLnRvb2x0aXAtdG9wLXJpZ2h0Pi5idG4rLnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLXRvcC1sZWZ0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSktdmFyKC0tY2xyLWJ0bi12ZXJ0aWNh''@;'; put 'put ''bC1tYXJnaW4pfS50b29sdGlwLnRvb2x0aXAtYm90dG9tLXJpZ2h0Pi5idG4rLnRvb2x0aXAtY29udGVudCwudG9vbHRpcC50b29sdGlwLWJvdHRvbS1sZWZ0Pi5idG4rLnRvb2x0aXAtY29udGVudHttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSktdmFyKC0tY2xyLWJ0bi12''@;'; put 'put ''ZXJ0aWNhbC1tYXJnaW4pfS50b29sdGlwLnRvb2x0aXAtcmlnaHQ+LmJ0bisudG9vbHRpcC1jb250ZW50e21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSktdmFyKC0tY2xyLWJ0bi1ob3Jpem9udGFsLW1hcmdpbil9LnRvb2x0aXA+LmNsci1pY29ue21hcmdpbi1yaWdodDow''@;'; put 'put ''fS50b29sdGlwPnN2Z3twb2ludGVyLWV2ZW50czpub25lfS50b29sdGlwLXRyaWdnZXI6Zm9jdXMrLnRvb2x0aXAtY29udGVudHt2aXNpYmlsaXR5OnZpc2libGV9OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItZm9ybXMtYmFzZWxpbmU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTstLWNsci1m''@;'; put 'put ''b3Jtcy1pY29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy1sYWJlbC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''dHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWZvcm1zLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci1mb3Jtcy1pbnZhbGlkLXRleHQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItZm9ybXMtdmFsaWQtdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWZvcm1z''@;'; put 'put ''LXN1YnRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItMzAwKTstLWNsci1mb3Jtcy1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0yMDApOy0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2Jq''@;'; put 'put ''ZWN0LWludGVyYWN0aW9uLWJvcmRlci1jb2xvcik7LS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1zdWJ0ZXh0LWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10''@;'; put 'put ''eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1k''@;'; put 'put ''aXNhYmxlZCk7LS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWZvcm1zLXBsYWNlaG9sZGVyLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWRpc2FibGVkKTstLWNsci1mb3Jt''@;'; put 'put ''cy1sYWJlbC1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItZm9ybXMtaW5wdXQtcGFkZGluZzowIGNhbGMoNCAqIHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkgLyAzKTstLWNsci1mb3Jtcy1pbnB1dC13cmFwcGVyLWhl''@;'; put 'put ''aWdodDpjYWxjKDQgKiB2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTstLWNsci1mb3Jtcy1pbnB1dC1ncm91cC1pY29uLWFjdGlvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItZm9ybXMtY2hlY2tib3gtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1j''@;'; put 'put ''bHItZm9ybXMtY2hlY2tib3gtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1mb3Jtcy1jaGVja2JveC1sYWJlbC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtbGFiZWwtY29sb3IpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWJhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hs''@;'; put 'put ''aWdodCk7LS1jbHItZm9ybXMtY2hlY2tib3gtbWFyay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWxhYmVsLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1kaXNhYmxlZC1jb2xvcik7''@;'; put 'put ''LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1jaGVja2VkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1''@;'; put 'put ''cy1kaXNhYmxlZCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWluZGV0ZXJtaW5hdGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNh''@;'; put 'put ''YmxlZCk7LS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtbWFyay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQpOy0tY2xyLWZvcm1zLXJhZGlvLWxhYmVsLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvcik7LS1jbHItZm9ybXMt''@;'; put 'put ''cmFkaW8tbGFiZWwtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLWZvcm1zLXJhZGlvLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7LS1jbHItZm9ybXMtcmFk''@;'; put 'put ''aW8tZGlzYWJsZWQtbWFyay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0xMDApOy0tY2xyLWZvcm1zLXJhZGlvLXNlbGVjdGVkLXNoYWRvdzppbnNldCAwIDAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rp''@;'; put 'put ''b24tYmFja2dyb3VuZC1oaWdobGlnaHQpOy0tY2xyLWZvcm1zLXJhZGlvLWNoZWNrZWQtZGlzYWJsZWQtc2hhZG93Omluc2V0IDAgMCAwIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9y''@;'; put 'put ''bXMtcGFzc3dvcmQtZXllLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItZm9ybXMtcGFzc3dvcmQtZGlzYWJsZWQtZXllLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7LS1jbHItZm9ybXMtcmFuZ2Ut''@;'; put 'put ''cHJvZ3Jlc3MtZmlsbC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kLXNoYWRlKTstLWNsci1m''@;'; put 'put ''b3Jtcy1yYW5nZS10cmFjay1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItZm9ybXMtcmFuZ2UtdHJh''@;'; put 'put ''Y2staGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7LS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpOy0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWJvcmRlci13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpOy0t''@;'; put 'put ''Y2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxl''@;'; put 'put ''ZC10aW50KTstLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItY29sb3ItZGlzYWJsZWQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItZm9ybXMtc2VsZWN0LWhvdmVyLWJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LS1jbHItZm9ybXMt''@;'; put 'put ''c2VsZWN0LWhvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1mb3Jtcy1zZWxlY3QtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xy''@;'; put 'put ''LWZvcm1zLXNlbGVjdC1jYXJldC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItZm9ybXMt''@;'; put 'put ''c2VsZWN0LWNhcmV0LXNpemU6Y2FsYygxMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLWZvcm1zLXNlbGVjdC1vcHRpb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWJhY2tncm91''@;'; put 'put ''bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1mb3Jtcy1zZWxlY3Qt''@;'; put 'put ''bXVsdGlwbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtb3B0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxl''@;'; put 'put ''LXNlbGVjdGVkLW9wdGlvbi1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZCk7LS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNr''@;'; put 'put ''Z3JvdW5kKTstLWNsci1mb3Jtcy10ZXh0YXJlYS1kaXNhYmxlZC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWZvcm1zLXRleHRhcmVhLWJvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVz''@;'; put 'put ''LTEwMCk7LS1jbHItZm9ybXMtZGF0YWxpc3QtY2FyZXQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1uZXV0cmFsKTstLWNsci1mb3Jtcy1kYXRhbGlzdC1jYXJldC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRpc2FibGVkKTstLWNsci1mb3Jtcy1kYXRhbGlz''@;'; put 'put ''dC1jYXJldC1pY29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KX0uY2xyLWRhdGUtY29udGFpbmVyIC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6LW1vei1maXQtY29udGVudDttYXgtd2lkdGg6Zml0LWNvbnRlbnR9LmNsci1mb3JtLWNvbnRyb2x7bWFyZ2luLXRvcDpjYWxj''@;'; put 'put ''KDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5jbHItZm9ybS1jb250cm9sIGlucHV0OjotbXMtcmV2ZWFsLC5jbHItZm9ybS1jb250cm9sIGlucHV0OjotbXMtY2xlYXJ7ZGlzcGxh''@;'; put 'put ''eTpub25lfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCBsYWJlbCwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNvbnRyb2wtbGFiZWx7Y29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWZvcm1zLWxhYmVsLWRpc2FibGVkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWlucHV0LC5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItdGV4dGFyZWEsLmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3R7Y29sb3I6dmFyKC0t''@;'; put 'put ''Y2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IpO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWJvcmRlci1kaXNhYmxlZC1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iLC5jbHItZm9y''@;'; put 'put ''bS1jb250cm9sLWRpc2FibGVkIGlucHV0W3R5cGU9cmFuZ2VdOjotbW96LXJhbmdlLXRodW1ie2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3ItZGlzYWJsZWQsIHZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9y''@;'; put 'put ''LWRpc2FibGVkKSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zdWJ0ZXh0e2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zdWJ0ZXh0LWRpc2FibGVkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1tdWx0aXtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9LmNsci1mb3Jt''@;'; put 'put ''LWNvbnRyb2wtbXVsdGkgLmNsci1jb250cm9sLWxhYmVse3dpZHRoOjEwMCV9LmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQt''@;'; put 'put ''c2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFy''@;'; put 'put ''eS1sZXR0ZXItc3BhY2luZyl9LmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWNvbnRyb2wtaW5saW5le2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1jb250cm9sLWlubGluZSAuY2xyLWNvbnRy''@;'; put 'put ''b2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OmNhbGMoMip2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTt3aWR0aDphdXRvfS5jbHItc3VidGV4dHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQt''@;'; put 'put ''c2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFw''@;'; put 'put ''aHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXN1YnRleHQtY29sb3IpO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKX0uY2xyLXN1YnRleHQuZXJyb3J7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtdGV4dC1jb2xvcil9LmNs''@;'; put 'put ''ci1zdWJ0ZXh0LnN1Y2Nlc3N7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLXRleHQtY29sb3IpfS5jbHItc3VidGV4dC13cmFwcGVye2ZsZXgtYmFzaXM6MTAwJTtkaXNwbGF5OmZsZXh9LmNsci12YWxpZGF0ZS1pY29ue2hlaWdodDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTt3aWR0''@;'; put 'put ''aDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItZm9ybXMtaWNvbi1zaXplKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7ZmlsbDp2YXIoLS1jbHItZm9ybXMtaW52''@;'; put 'put ''YWxpZC1jb2xvcik7ZGlzcGxheTpub25lfS5jbHItc3VjY2VzcyAuY2xyLXZhbGlkYXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtmaWxsOnZhcigtLWNsci1mb3Jtcy12YWxpZC1jb2xvcil9LmNsci1lcnJvciAuY2xyLXZh''@;'; put 'put ''bGlkYXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1mb3JtLWhvcml6b250YWwgLmNsci1mb3JtLWNvbnRyb2w+LmNsci1jb250cm9sLWxhYmVsLC5jbHItZm9ybS1ob3Jpem9udGFsIC5jbHItZm9ybS1jb250cm9sPi5jbHItZm9ybS1jb250cm9sLmNsci1mb3JtLWNvbnRyb2wt''@;'; put 'put ''bXVsdGkgLmNsci1jb250cm9sLWxhYmVse3dpZHRoOmNhbGMoMzIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7ZmxleC1zaHJpbms6MDttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyl9LmNsci1mb3JtLWhvcml6b250YWwuY2xyLXJvdyAuY2xyLWNvbnRyb2wtbGFiZWx7''@;'; put 'put ''d2lkdGg6YXV0b30uY2xyLWZvcm0taG9yaXpvbnRhbCAuY2xyLWZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZm9ybTpub3QoLmNsci1mb3JtLWNvbXBhY3QpIC5jbHItY29udHJvbC1jb250YWluZXIuY2xyLWVycm9yPi5jbHItc3VidGV4dC13cmFw''@;'; put 'put ''cGVyLC5jbHItZm9ybTpub3QoLmNsci1mb3JtLWNvbXBhY3QpIC5jbHItY29udHJvbC1jb250YWluZXIuY2xyLWVycm9yPi5jbHItdmFsaWRhdGUtaWNvbiwuY2xyLWZvcm06bm90KC5jbHItZm9ybS1jb21wYWN0KSAuY2xyLWNvbnRyb2wtY29udGFpbmVyLmNsci1zdWNjZXNzPi5jbHItc3Vi''@;'; put 'put ''dGV4dC13cmFwcGVyLC5jbHItZm9ybTpub3QoLmNsci1mb3JtLWNvbXBhY3QpIC5jbHItY29udHJvbC1jb250YWluZXIuY2xyLXN1Y2Nlc3M+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSl9LmNsci1mb3JtLWNvbXBhY3Qg''@;'; put 'put ''LmNsci1mb3JtLWNvbnRyb2w+LmNsci1jb250cm9sLWxhYmVse3dpZHRoOmNhbGMoMzIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7bWluLXdpZHRoOmNhbGMoMzIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1mb3JtLWNvbnRyb2wuY2xyLXJv''@;'; put 'put ''dz4uY2xyLWNvbnRyb2wtbGFiZWx7d2lkdGg6YXV0bzttaW4td2lkdGg6YXV0b30uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZm9ybS1jb250cm9se2Rpc3BsYXk6''@;'; put 'put ''ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7bWFyZ2luLXRvcDpjYWxjKDIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jb250cm9sLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5s''@;'; put 'put ''aW5lLWJsb2NrO21hcmdpbi1sZWZ0OnZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZXJyb3IgLmNsci1zdWJ0ZXh0LC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1z''@;'; put 'put ''cGFjZS0zKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItc3VidGV4dC5lcnJvciwuY2xyLWZvcm0tY29tcGFjdCAuY2xyLWVycm9yIC5jbHItc3VidGV4dC5zdWNjZXNzLC5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VjY2VzcyAuY2xyLXN1YnRleHQuZXJyb3IsLmNsci1mb3Jt''@;'; put 'put ''LWNvbXBhY3QgLmNsci1zdWNjZXNzIC5jbHItc3VidGV4dC5zdWNjZXNze21hcmdpbi1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1lcnJvciAuY2xyLXZhbGlkYXRlLWljb24sLmNsci1mb3JtLWNvbXBhY3QgLmNsci1zdWNjZXNzIC5jbHIt''@;'; put 'put ''dmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItZm9ybS1jb21wYWN0IC5jbHItc3VidGV4dC13cmFwcGVye2ZsZXgtYmFzaXM6YXV0bztkaXNwbGF5OmlubGluZS1ibG9ja30uY2xyLWZvcm0sLmNsci1mb3JtLWdyb3Vwe3BhZGRpbmc6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0u''@;'; put 'put ''Y2xyLXJlcXVpcmVkLW1hcms6YWZ0ZXJ7Y29udGVudDoiKiI7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpO2ZpbGw6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXNpemUtMyk7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWNoZWNrYm94LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4fS5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6YmxvY2t9LmNsci1jaGVj''@;'; put 'put ''a2JveC13cmFwcGVyfi5jbHItdmFsaWRhdGUtaWNvbnttYXJnaW4tbGVmdDowfS5jbHItY2hlY2tib3gtd3JhcHBlcn4uY2xyLXN1YnRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNw''@;'; put 'put ''bGF5OmJsb2NrO21hcmdpbi10b3A6MDtjdXJzb3I6cG9pbnRlcjttaW4taGVpZ2h0OmNhbGModmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSo0KTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIGNhbGModmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1zcGFjZS03KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpO2NvbG9yOnZhcigtLWNsci1mb3Jtcy1sYWJlbC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHIt''@;'; put 'put ''Y2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7bGVmdDowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''Nyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoKGNhbGModmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSo0KSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykpKi41''@;'; put 'put ''KTtsZWZ0OjA7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2JvcmRlcjouMDVyZW0gc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJh''@;'; put 'put ''ZGl1czp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtYm9yZGVyLXJhZGl1cyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7b3V0bGluZTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91''@;'; put 'put ''dGxpbmUpO291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZS1vZmZzZXQpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRy''@;'; put 'put ''b2wtbGFiZWw6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDoiIjtkaXNwbGF5Om5vbmU7aGVpZ2h0OmNhbGMoY2FsYyhjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykqLjUpKi41KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpO3dpZHRoOmNhbGModmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1zcGFjZS03KSouNSk7Ym9yZGVyLWxlZnQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKi4xMjUpIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1tYXJrLWNvbG9yKTtib3JkZXItYm90dG9tOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSouMTI1KSBzb2xp''@;'; put 'put ''ZCB2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtbWFyay1jb2xvcik7dG9wOmNhbGMoKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykpKi41KTtsZWZ0OmNhbGMoY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKi41KSouNSk7dHJhbnNm''@;'; put 'put ''b3JtOnRyYW5zbGF0ZVkoY2FsYyhjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykqLjUpKi41KSkgcm90YXRlKC00NWRlZyl9LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kOnZh''@;'; put 'put ''cigtLWNsci1mb3Jtcy1jaGVja2JveC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6MH0uY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1jaGVja2JveC13cmFw''@;'; put 'put ''cGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdLmNsci1pbmRldGVybWluYXRlKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmUsLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3JkZXI6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3IpfS5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XS5jbHItaW5kZXRlcm1pbmF0ZSsuY2xyLWNvbnRy''@;'; put 'put ''b2wtbGFiZWw6YWZ0ZXIsLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmluZGV0ZXJtaW5hdGUrLmNsci1jb250cm9sLWxhYmVsOmFmdGVye2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtaW5kZXRl''@;'; put 'put ''cm1pbmF0ZS1ib3JkZXItY29sb3IpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zZm9ybTp0cmFuc2xhdGVZKGNhbGMoY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKi41KSouNSkpfS5jbHItY2hlY2tib3gtd3JhcHBlci5jbHItY2hlY2tib3gtaW5saW5le2Rpc3BsYXk6ZmxleDtm''@;'; put 'put ''bGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmNsci1jaGVja2JveC13cmFwcGVyLmNsci1jaGVja2JveC1pbmxpbmUgLmNsci1jb250cm9sLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDpjYWxjKDIqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5l''@;'; put 'put ''KSk7d2lkdGg6YXV0b30uY2xyLWVycm9yIC5jbHItY2hlY2tib3gtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQg''@;'; put 'put ''LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWxhYmVsLWRpc2FibGVkLWNvbG9yKX0uY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3JtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yKX0uY2xyLWZvcm0t''@;'; put 'put ''Y29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLWNoZWNrYm94LWRpc2FibGVkLWNoZWNrZWQtYmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcik7Ym9yZGVyOjB9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrLmNsci1jb250cm9sLWxhYmVsOmFmdGVye2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtY2hlY2tib3gtZGlzYWJsZWQt''@;'; put 'put ''bWFyay1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdLmNsci1pbmRldGVybWluYXRlKy5jbHItY29udHJvbC1sYWJlbDphZnRlciwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLWNoZWNrYm94''@;'; put 'put ''LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06aW5kZXRlcm1pbmF0ZSsuY2xyLWNvbnRyb2wtbGFiZWw6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1jaGVja2JveC1kaXNhYmxlZC1pbmRldGVybWluYXRlLWNvbG9yKTtib3JkZXItbGVmdDpub25lfS5jbHItZm9ybS1j''@;'; put 'put ''b21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlcnttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24tY29udGVudDpmbGV4LXN0YXJ0O2hlaWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1jaGVj''@;'; put 'put ''a2JveC13cmFwcGVyfi5jbHItc3VidGV4dHttYXJnaW4tbGVmdDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OmNhbGMoMip2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTt3aWR0aDphdXRvfS5jbHItZm9ybS1jb21wYWN0IC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7bWFyZ2luLXRvcDowfS5jbHItZmlsZS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6dmFyKC0tY2xy''@;'; put 'put ''LWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZpbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7Zm9udC13ZWlnaHQ6NDAwO2Rpc3BsYXk6YmxvY2t9LmNsci1maWxlLXdyYXBwZXJ+LmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1maWxlLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0''@;'; put 'put ''e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItZmlsZS13cmFwcGVyIC5idG57bWFyZ2luOjB9LmNsci1maWxle2hlaWdodDowO3dpZHRoOjA7b3BhY2l0eTowO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13''@;'; put 'put ''cmFwcGVye21heC13aWR0aDoxMDAlO21hcmdpbi10b3A6MH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlcn4uY2xyLXZh''@;'; put 'put ''bGlkYXRlLWljb257bGluZS1oZWlnaHQ6Y2FsYyh2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKjQpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyfi5jbHItc3VidGV4dHtsaW5lLWhlaWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqNCk7bWFyZ2luLXRvcDow''@;'; put 'put ''fS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOjA7bGluZS1oZWlnaHQ6MS4wOHJlbX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLWZpbGUtd3JhcHBlciAuYnRue2hlaWdodDoxLjJyZW19LmNsci1maWxlLWlucHV0LXdyYXBw''@;'; put 'put ''ZXJ7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5jbHItZmlsZS1pbnB1dC13cmFwcGVyIC5jbHItZmlsZS1pbnB1dHtoZWlnaHQ6MDt3aWR0aDowO29wYWNpdHk6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7ei1pbmRl''@;'; put 'put ''eDotMX0uY2xyLWZpbGUtaW5wdXQtd3JhcHBlciAuY2xyLWZpbGUtaW5wdXQtYnJvd3NlLWJ1dHRvbiwuY2xyLWZpbGUtaW5wdXQtd3JhcHBlciAuY2xyLWZpbGUtaW5wdXQtY2xlYXItYnV0dG9ue21hcmdpbjowO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpfS5jbHIt''@;'; put 'put ''ZmlsZS1pbnB1dC13cmFwcGVyIC5jbHItZmlsZS1pbnB1dC1jbGVhci1idXR0b257cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMikhaW1wb3J0YW50O21pbi13aWR0aDp1bnNldDtib3JkZXI6MH0uY2xyLWZpbGUtaW5wdXQtd3JhcHBlciAuY2xyLWZpbGUtaW5wdXQtYnJvd3Nl''@;'; put 'put ''LWJ1dHRvbi10ZXh0e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5jbHItZm9ybS1jb21wYWN0IC5jbHItZmlsZS1pbnB1dC13cmFwcGVye21hcmdpbi10b3A6MH1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsuY2xyLWZvcm0taG9yaXpvbnRhbCAu''@;'; put 'put ''Y2xyLWZpbGUtaW5wdXQtd3JhcHBlcnttYXJnaW4tdG9wOjB9fS5jbHItaW5wdXQtd3JhcHBlcnt3aGl0ZS1zcGFjZTpub3dyYXA7bWF4LWhlaWdodDp2YXIoLS1jbHItZm9ybXMtaW5wdXQtd3JhcHBlci1oZWlnaHQpfS5jbHItaW5wdXR7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1h''@;'; put 'put ''cHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7aGVpZ2h0OmNhbGMoNCp2YXIoLS1jbHItZm9ybXMtYmFzZWxp''@;'; put 'put ''bmUpKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvcik7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6dmFyKC0t''@;'; put 'put ''Y2xyLWZvcm1zLWlucHV0LXBhZGRpbmcpO21heC1oZWlnaHQ6Y2FsYyg0KnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1zZWNvbmRhcnktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKX0uY2xyLWlucHV0OmZvY3Vze291dGxpbmU6MH0uY2xyLWlu''@;'; put 'put ''cHV0W3JlYWRvbmx5XXtib3JkZXI6MH0uY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6''@;'; put 'put ''MCAxMDAlO3RyYW5zaXRpb246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKTti''@;'; put 'put ''YWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItaW5wdXQ6ZGlzYWJsZWR7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWlucHV0OmRpc2FibGVkOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jbHItZm9ybXMtcGxh''@;'; put 'put ''Y2Vob2xkZXItZGlzYWJsZWQtY29sb3IpfS5jbHItZXJyb3IgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSl7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1''@;'; put 'put ''JSx2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcikgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLWVycm9yIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pOmZvY3VzLC5jbHItZXJyb3IgLmNs''@;'; put 'put ''ci1pbnB1dDpub3QoW3JlYWRvbmx5XSkuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFsaWQtY29sb3IpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1zdWNjZXNzIC5jbHItaW5wdXQ6bm90KFtyZWFkb25seV0pe2JvcmRlci1ib3R0b20t''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKSA5NSUpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MCAxMDAlO3RyYW5zaXRp''@;'; put 'put ''b246YmFja2dyb3VuZC1zaXplIC4ycyBlYXNlfS5jbHItc3VjY2VzcyAuY2xyLWlucHV0Om5vdChbcmVhZG9ubHldKTpmb2N1cywuY2xyLXN1Y2Nlc3MgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSkuY2xyLWZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWludmFs''@;'; put 'put ''aWQtY29sb3IpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItaW5wdXQtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2xyLWZvcm1zLWljb24tc2l6ZSkpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItaW5wdXR7bWF4LXdpZHRo''@;'; put 'put ''OjEwMCV9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1pbnB1dH4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX0uY2xyLWZvcm0tY29udHJvbC1yZWFkb25seSAuY2xyLWlucHV0e2JvcmRlcjowfS5jbHItZm9ybS1jb250cm9sLW11bHRpIC5jbHItaW5w''@;'; put 'put ''dXR7bWF4LXdpZHRoOmNhbGMoMTAwJSArIHZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpKX06OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWNsci1mb3Jtcy1wbGFjZWhvbGRlci1jb2xvcil9LmNsci1pbnB1dC1ncm91cHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1jb2xvcik7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbTp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx0cmFuc3BhcmVudCA5NSUsdmFyKC0t''@;'; put 'put ''Y2xyLWZvcm1zLWZvY3VzZWQtY29sb3IpIDk1JSkgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTowIDEwMCU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXNpemUgLjJzIGVhc2U7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9''@;'; put 'put ''LmNsci1pbnB1dC1ncm91cDpmb2N1cywuY2xyLWlucHV0LWdyb3VwLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItaW5wdXQtZ3JvdXAuY2xyLWZvY3Vze3dpZHRoOmF1dG99''@;'; put 'put ''LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0e2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO21hcmdpbi1yaWdodDowO21heC13aWR0aDoxMDAlfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dDpub3QoW3JlYWRvbmx5XSk6Zm9jdXN7YmFja2dyb3VuZC1zaXplOjA7Ym9yZGVyOjB9LmNsci1p''@;'; put 'put ''bnB1dC1ncm91cCBzZWxlY3QsLmNsci1pbnB1dC1ncm91cCAuY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdCwuY2xyLWlucHV0LWdyb3VwIC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3R7Ym9yZGVyOjB9LmNsci1pbnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWFkZG9ue2NvbG9y''@;'; put 'put ''OnZhcigtLWNsci1mb3Jtcy1zdWJ0ZXh0LWNvbG9yKX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGR7cGFkZGluZzowIDAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0uY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtYWRkb246''@;'; put 'put ''bGFzdC1jaGlsZHtwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkgMCAwfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1v''@;'; put 'put ''LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtwYWRkaW5nOjAgY2FsYygxLjUqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSk7Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uLmNsci1p''@;'; put 'put ''bnB1dC1ncm91cCAuY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9ue2N1cnNvcjpwb2ludGVyfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvbiBjZHMtaWNvbiwuY2xyLWlucHV0LWdyb3VwIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb24gY2xyLWljb257''@;'; put 'put ''ZmlsbDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWlucHV0LWdyb3VwLWljb24tYWN0aW9uLXNpemUpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1pbnB1dC1ncm91cC1pY29uLWFjdGlvbi1zaXplKTt0cmFuc2Zvcm06dHJh''@;'; put 'put ''bnNsYXRlKGNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSksY2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1pbnB1dC1ncm91cHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXIt''@;'; put 'put ''ZGlzYWJsZWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb257Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtZGlzYWJsZWQtY29sb3IpO2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXB7Ym9y''@;'; put 'put ''ZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcik7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcikgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAg''@;'; put 'put ''MTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLWVycm9yIC5jbHItaW5wdXQtZ3JvdXA6Zm9jdXMsLmNsci1lcnJvciAuY2xyLWlucHV0LWdyb3VwLmNsci1mb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKTti''@;'; put 'put ''YWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlfS5jbHItc3VjY2VzcyAuY2xyLWlucHV0LWdyb3Vwe2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sdHJhbnNwYXJlbnQgOTUlLHZhcigtLWNs''@;'; put 'put ''ci1mb3Jtcy12YWxpZC1jb2xvcikgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLXN1Y2Nlc3MgLmNsci1pbnB1dC1ncm91cDpmb2N1cywuY2xyLXN1Y2Nlc3MgLmNsci1pbnB1dC1ncm91cC5jbHIt''@;'; put 'put ''Zm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9LmNsci1mb3JtLWhvcml6b250YWwgLmNsci1pbnB1dC1ncm91cHttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjB9LmNsci1yYWRpby13cmFw''@;'; put 'put ''cGVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleH0uY2xyLXJhZGlvLXdyYXBwZXIgLmNsci1jb250cm9sLWxhYmVse2ZvbnQtd2VpZ2h0OjQwMDtkaXNwbGF5OmJsb2NrfS5jbHItcmFkaW8td3JhcHBlcn4uY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0uY2xyLXJhZGlv''@;'; put 'put ''LXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXXtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMyk7bGVmdDowO2hlaWdodDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MDtjdXJzb3I6cG9pbnRlcjttaW4taGVpZ2h0OmNhbGModmFyKC0t''@;'; put 'put ''Y2xyLWZvcm1zLWJhc2VsaW5lKSo0KTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIGNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpO2NvbG9yOnZhcigtLWNsci1mb3Jt''@;'; put 'put ''cy1yYWRpby1sYWJlbC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFs''@;'; put 'put ''aWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItcmFkaW8td3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWw6ZW1wdHl7cGFkZGluZy1sZWZ0OjB9''@;'; put 'put ''LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dKy5jbHItY29udHJvbC1sYWJlbDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoKGNhbGModmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSo0KSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykpKi41KTtsZWZ0OjA7''@;'; put 'put ''Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2JvcmRlcjouMDVyZW0gc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo1MCV9''@;'; put 'put ''LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3gtc2hhZG93OnZhcigtLWNsci1mb3Jtcy1yYWRpby1zZWxlY3RlZC1zaGFkb3cpO2JvcmRlcjowfS5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlv''@;'; put 'put ''XTpmb2N1cysuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lKTtvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWlu''@;'; put 'put ''dGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0KX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106Zm9jdXM6Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle291dGxpbmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lKTtvdXRsaW5lLWNv''@;'; put 'put ''bG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLW91dGxpbmUtb2Zmc2V0KX0uY2xyLXJhZGlvLXdyYXBwZXIgaW5wdXRbdHlwZT1yYWRpb106ZGlzYWJsZWQrLmNsci1jb250cm9sLWxhYmVsOmJlZm9y''@;'; put 'put ''ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYWRpby1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCl9LmNsci1yYWRpby13cmFwcGVyIGlucHV0W3R5cGU9cmFk''@;'; put 'put ''aW9dOmNoZWNrZWQ6ZGlzYWJsZWQrLmNsci1jb250cm9sLWxhYmVsOmJlZm9yZXtib3gtc2hhZG93OnZhcigtLWNsci1mb3Jtcy1yYWRpby1jaGVja2VkLWRpc2FibGVkLXNoYWRvdyl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1s''@;'; put 'put ''YWJlbHtjdXJzb3I6bm90LWFsbG93ZWQ7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhZGlvLWxhYmVsLWRpc2FibGVkLWNvbG9yKX0uY2xyLWVycm9yIC5jbHItcmFkaW8td3JhcHBlciBpbnB1dFt0eXBlPXJhZGlvXSsuY2xyLWNvbnRyb2wtbGFiZWw6YmVmb3Jle2JvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcil9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVye21heC13aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1jb250ZW50OmZsZXgtc3RhcnQ7aGVpZ2h0OmNhbGMoNCp2YXIoLS1jbHItZm9ybXMtYmFz''@;'; put 'put ''ZWxpbmUpKX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXJhZGlvLXdyYXBwZXJ+LmNsci1zdWJ0ZXh0e21hcmdpbi1sZWZ0OnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHtkaXNwbGF5OmlubGlu''@;'; put 'put ''ZS1ibG9jazttYXJnaW4tcmlnaHQ6Y2FsYygyKnZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkpO3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbXBhY3QgLmNsci1yYWRpby13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHttYXJnaW4tdG9wOjB9LmNsci1zZWxlY3Qtd3JhcHBlciwuY2xyLW11bHRp''@;'; put 'put ''c2VsZWN0LXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7d2hpdGUtc3BhY2U6bm93cmFwfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0LC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3R7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVh''@;'; put 'put ''cmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQt''@;'; put 'put ''Y29sb3IpO2JvcmRlci1ib3R0b206dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yKTtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6dmFyKC0tY2xyLXAyLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7cG9zaXRpb246''@;'; put 'put ''cmVsYXRpdmU7cGFkZGluZzowIGNhbGModmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1zaXplKSArIHZhcigtLWNsci1mb3Jtcy1iYXNlbGluZSkqMikgMCB2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6Mn0uY2xyLXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdDpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0OmZvY3Vze291dGxpbmU6MH0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSksLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDpub3QoW211bHRpcGxlXSl7YmFja2dyb3VuZDpsaW5l''@;'; put 'put ''YXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDk1JSx2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcikgOTUlKSBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjAgMTAwJTt0cmFuc2l0aW9uOmJhY2tncm91bmQtc2l6ZSAuMnMgZWFzZX0uY2xyLXNlbGVjdC13cmFwcGVyIHNl''@;'; put 'put ''bGVjdDpub3QoW211bHRpcGxlXSk6Zm9jdXMsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6bm90KFttdWx0aXBsZV0pLmNsci1mb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0Om5vdChbbXVsdGlwbGVdKTpmb2N1cywuY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgc2VsZWN0''@;'; put 'put ''Om5vdChbbXVsdGlwbGVdKS5jbHItZm9jdXN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJX0uY2xyLXNlbGVjdC13cmFwcGVyIHNlbGVjdFttdWx0aXBsZV06Zm9jdXMsLmNsci1tdWx0aXNlbGVjdC13''@;'; put 'put ''cmFwcGVyIHNlbGVjdFttdWx0aXBsZV06Zm9jdXN7b3V0bGluZS1jb2xvcjpIaWdobGlnaHQ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1zdHlsZTpzb2xpZDtvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LmNsci1zZWxlY3Qt''@;'; put 'put ''d3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6YWN0aXZlLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXIsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxl''@;'; put 'put ''Y3QtaG92ZXItYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtaG92ZXItYmFja2dyb3VuZCl9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXI6ZGlzYWJsZWQsLmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6YWN0aXZlOmRpc2FibGVkLC5jbHIt''@;'; put 'put ''bXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6aG92ZXI6ZGlzYWJsZWQsLmNsci1tdWx0aXNlbGVjdC13cmFwcGVyIHNlbGVjdDphY3RpdmU6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWRpc2FibGVkLWJvcmRlci1jb2xv''@;'; put 'put ''cil9LmNsci1zZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWQgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6ZGlzYWJsZWQgb3B0aW9ue2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1zZWxl''@;'; put 'put ''Y3Qtd3JhcHBlciBzZWxlY3Qgb3B0aW9uLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Qgb3B0aW9ue2NvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3Qtb3B0aW9uLWJhY2tncm91bmQt''@;'; put 'put ''Y29sb3IpfS5jbHItc2VsZWN0LXdyYXBwZXIgc2VsZWN0OjotbXMtZXhwYW5kLC5jbHItbXVsdGlzZWxlY3Qtd3JhcHBlciBzZWxlY3Q6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfS5jbHItc2VsZWN0LXdyYXBwZXJ7bWF4LWhlaWdodDpjYWxjKDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5l''@;'; put 'put ''KSk7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OiIiO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LWNhcmV0LXNpemUpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtc2l6ZSk7dG9w''@;'; put 'put ''OmNhbGMoLjUqKDQqdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSAtIHZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtc2l6ZSkpKTtyaWdodDp2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpO21hcmdpbjowO21hc2s6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3Zn''@;'; put 'put ''JTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMiUyMDEyJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3N0eWxlJTNFLmNscy0xJTdCZmls''@;'; put 'put ''bCUzQSUyMzlhOWE5YSUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJD''@;'; put 'put ''OUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFMNiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSk7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBl''@;'; put 'put ''YXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1jb2xvcil9LmNsci1zZWxlY3Qtd3JhcHBlcjpob3ZlcjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtY2FyZXQtaG92ZXItY29sb3IpfS5jbHItZXJy''@;'; put 'put ''b3IgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlciwuY2xyLXN1Y2Nlc3MgLmNsci1zZWxlY3Qtd3JhcHBlcjphZnRlcntyaWdodDpjYWxjKHZhcigtLWNsci1mb3Jtcy1pY29uLXNpemUpICsgdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1tdWx0aXNlbGVjdC13cmFwcGVye2Rpc3Bs''@;'; put 'put ''YXk6ZmxleH0uY2xyLW11bHRpc2VsZWN0LXdyYXBwZXIgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9c2VsZWN0W211bHRpcGxlXSxzZWxlY3Rbc2l6ZV17cGFkZGluZzowO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApIHNvbGlkIHZhcigt''@;'; put 'put ''LWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1mb3Jtcy1zZWxlY3QtbXVsdGlwbGUtYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtoZWlnaHQ6''@;'; put 'put ''YXV0bzttaW4td2lkdGg6Y2FsYygxMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfXNlbGVjdFttdWx0aXBsZV06aG92ZXIsc2VsZWN0W211bHRpcGxlXTphY3RpdmUsc2VsZWN0W3NpemVdOmhvdmVyLHNlbGVjdFtzaXplXTphY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1jbHItZm9y''@;'; put 'put ''bXMtc2VsZWN0LW11bHRpcGxlLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLWJvcmRlci1jb2xvcil9c2VsZWN0W211bHRpcGxlXSBvcHRpb24sc2VsZWN0W3NpemVdIG9wdGlvbntwYWRkaW5nOmNhbGModmFyKC0tY2xyLWZv''@;'; put 'put ''cm1zLWJhc2VsaW5lKSouNSkgdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKTtjb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLW9wdGlvbi1jb2xvcil9c2VsZWN0W211bHRpcGxlXSBvcHRpb246Y2hlY2tlZCxzZWxlY3Rbc2l6ZV0gb3B0aW9uOmNoZWNrZWR7YmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGVkLW9wdGlvbi1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWVycm9yIHNlbGVjdDpub3QoW211bHRpcGxlXSl7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcil9LmNsci1l''@;'; put 'put ''cnJvciBzZWxlY3RbbXVsdGlwbGVde2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcil9LmNsci1zdWNjZXNzIHNlbGVjdDpub3QoW211bHRpcGxlXSl7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpfS5jbHItc3VjY2VzcyBz''@;'; put 'put ''ZWxlY3RbbXVsdGlwbGVde2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93''@;'; put 'put ''ZWR9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ6aG92ZXI6YWZ0ZXJ7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXNlbGVjdC1jYXJldC1jb2xvcil9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1zZWxlY3QuZGlzYWJsZWQ+c2VsZWN0LC5jbHIt''@;'; put 'put ''Zm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0IHNlbGVjdDpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dC1kaXNhYmxlZC1jb2xvcik7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5jbHItc2VsZWN0LmRpc2FibGVkPnNlbGVj''@;'; put 'put ''dDpob3ZlciwuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZCAuY2xyLXNlbGVjdCBzZWxlY3Q6ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDA7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1ib3JkZXItY29sb3IpfS5jbHItZm9ybS1jb21wYWN0IC5jbHItbXVsdGlzZWxlY3Qtd3Jh''@;'; put 'put ''cHBlcnttYXJnaW4tdG9wOjB9LmNsci10ZXh0YXJlYS13cmFwcGVye3doaXRlLXNwYWNlOm5vd3JhcDtkaXNwbGF5OmZsZXg7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdGV4dGFyZWEtd3JhcHBlciAuY2xyLXZhbGlkYXRlLWljb257bWFyZ2luLWxlZnQ6MH0u''@;'; put 'put ''Y2xyLXRleHRhcmVhe21heC13aWR0aDpjYWxjKDEwMCUgLSB2YXIoLS1jbHItZm9ybXMtYmFzZWxpbmUpKTtoZWlnaHQ6YXV0bztyZXNpemU6dmVydGljYWw7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWZvcm1zLWJvcmRl''@;'; put 'put ''ci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJvcmRlci1yYWRpdXMpO3BhZGRpbmc6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1zcGFjZS03KTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDpjYWxjKDIwKigxcmVt''@;'; put 'put ''L3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdGV4dGFyZWE6Zm9jdXN7b3V0bGluZS1jb2xvcjpIaWdobGlnaHQ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3Vz''@;'; put 'put ''LXJpbmctY29sb3I7b3V0bGluZS1zdHlsZTpzb2xpZDtvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7b3V0bGluZS1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1mb2N1c2VkLWNvbG9yKX0uY2xy''@;'; put 'put ''LXRleHRhcmVhOmRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdGV4dGFyZWEtZGlzYWJsZWQtYmFja2dyb3VuZCk7Ym9yZGVyLWNvbG9yOnZhcigtLWNs''@;'; put 'put ''ci1mb3Jtcy1ib3JkZXItZGlzYWJsZWQtY29sb3IpfS5jbHItc3VjY2VzcyAuY2xyLXRleHRhcmVhe2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZm9ybXMtdmFsaWQtY29sb3IpO291dGxpbmUtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXZhbGlkLWNvbG9yKX0uY2xyLWVycm9yIC5jbHItdGV4dGFy''@;'; put 'put ''ZWF7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKTtvdXRsaW5lLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1pbnZhbGlkLWNvbG9yKX0uY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOmF1dG99LmNsci1mb3JtLWNvbnRyb2wucm93IC5jbHItdGV4''@;'; put 'put ''dGFyZWEtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gdmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKSl9LmNsci1mb3JtLWNvbXBhY3QgLmNsci10ZXh0YXJlYS13cmFwcGVye21hcmdpbi10b3A6MH0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci10ZXh0''@;'; put 'put ''YXJlYXttYXgtd2lkdGg6MTAwJX0uY2xyLWZvcm0tY29tcGFjdCAuY2xyLXRleHRhcmVhLXdyYXBwZXIgLmNsci10ZXh0YXJlYX4uY2xyLXN1YnRleHR7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLWZvcm1zLWJhc2VsaW5lKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10b2dnbGUtYmctY29sb3It''@;'; put 'put ''b2ZmOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbCk7LS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItdG9nZ2xlLWhhbmRsZS1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91''@;'; put 'put ''bmQpOy0tY2xyLXRvZ2dsZS1oYW5kbGUtYm9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb2ZmKTstLWNsci10b2dnbGUtaGFuZGxlLWJvcmRlci1jb2xvci1vbjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uKTstLWNsci10b2dnbGUtZGlzYWJsZWQtZGVmYXVsdC1i''@;'; put 'put ''b3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCk7LS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItdG9nZ2xl''@;'; put 'put ''LWRpc2FibGVkLW9mZi1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1iZy1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtaGFuZGxlLWNvbG9yKTstLWNsci10''@;'; put 'put ''b2dnbGUtZGlzYWJsZWQtb2ZmLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLWRlZmF1bHQtYm9yZGVy''@;'; put 'put ''LWNvbG9yKTstLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYmctY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZhdWx0LWJvcmRlci1jb2xvcik7LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWhhbmRsZS1ib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1kZWZh''@;'; put 'put ''dWx0LWJvcmRlci1jb2xvcil9LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZX0uY2xyLXRvZ2dsZS13cmFwcGVye3Zl''@;'; put 'put ''cnRpY2FsLWFsaWduOm1pZGRsZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5jbHItdG9nZ2xlLXdyYXBwZXIgbGFiZWx7ZGlzcGxheTppbmxpbmUt''@;'; put 'put ''YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5jbHIt''@;'; put 'put ''dG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF17cG9zaXRpb246YWJzb2x1dGU7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7cmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTcpO29wYWNpdHk6MH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmlubGluZS1ibG9jaztjb250ZW50OiIiO2JvcmRlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRl''@;'; put 'put ''ci13aWR0aC0yMDApIHNvbGlkIHZhcigtLWNsci10b2dnbGUtYmctY29sb3Itb2ZmKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0yMDApO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtMTApO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1iZy1jb2xvci1vZmYpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3JpZ2h0OjA7bGVmdDpjYWxjKC0xKmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUp''@;'; put 'put ''KSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47dHJhbnNpdGlvbi1wcm9wZXJ0eTpib3JkZXItY29sb3IsYmFja2dyb3VuZC1jb2xvcn0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzK2xhYmVs''@;'; put 'put ''OmJlZm9yZXtvdXRsaW5lOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tb3V0bGluZSk7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1vdXRsaW5lLW9mZnNldCl9''@;'; put 'put ''LmNsci10b2dnbGUtd3JhcHBlciBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkK2xhYmVsOmJlZm9yZXtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1iZy1jb2xvci1vbik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWJnLWNvbG9yLW9uKTt0cmFuc2l0aW9uLWR1''@;'; put 'put ''cmF0aW9uOi4xNXM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbjt0cmFuc2l0aW9uLXByb3BlcnR5OmJvcmRlci1jb2xvcixiYWNrZ3JvdW5kLWNvbG9yfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF0rbGFiZWw6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1''@;'; put 'put ''dGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29udGVudDoiIjtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSBzb2xpZCB2YXIoLS1jbHItdG9nZ2xlLWhhbmRsZS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1i''@;'; put 'put ''b3JkZXItcmFkaXVzLTMwMCk7cmlnaHQ6MDt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtaGFuZGxlLWJnLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTcpO2xlZnQ6Y2FsYygtMSpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSkpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO3RyYW5zaXRpb24tcHJvcGVydHk6cmln''@;'; put 'put ''aHQsbGVmdH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtaGFuZGxlLWJvcmRlci1jb2xvci1vbik7cmlnaHQ6Y2FsYygtMSpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''MTApICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSkpO2xlZnQ6Y2FsYygtMSpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSkpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNl''@;'; put 'put ''LWluO3RyYW5zaXRpb24tcHJvcGVydHk6cmlnaHQsbGVmdH0uY2xyLXRvZ2dsZS13cmFwcGVyLmRpc2FibGVkIGxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRvZ2dsZS13cmFwcGVyLmRpc2FibGVkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWw6YmVmb3Jle2JvcmRl''@;'; put 'put ''ci1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdG9nZ2xlLWRpc2FibGVkLW9uLWJnLWNvbG9yKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVse2N1''@;'; put 'put ''cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb2ZmLWJnLWNvbG9yKTtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2ds''@;'; put 'put ''ZS1kaXNhYmxlZC1vZmYtYm9yZGVyLWNvbG9yKX0uY2xyLXRvZ2dsZS13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmRpc2FibGVkK2xhYmVsOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vZmYtYmctY29sb3IpO2JvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdG9nZ2xlLWRpc2FibGVkLW9mZi1oYW5kbGUtYm9yZGVyLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5w''@;'; put 'put ''dXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10b2dnbGUtZGlzYWJsZWQtb24tYmctY29sb3IpfS5jbHIt''@;'; put 'put ''dG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpkaXNhYmxlZCtsYWJlbDphZnRlcntib3JkZXItY29sb3I6dmFyKC0tY2xyLXRvZ2dsZS1kaXNhYmxlZC1vbi1oYW5kbGUtYm9yZGVyLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0''@;'; put 'put ''aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2xlZnQ6Y2FsYygtMSpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSkpfS5jbHItdG9nZ2xlLXdyYXBwZXIgaW5wdXRbdHlwZT1j''@;'; put 'put ''aGVja2JveF06ZGlzYWJsZWQrbGFiZWw6YWZ0ZXJ7bGVmdDpjYWxjKC0xKmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSl9LmNsci10b2dnbGUtd3JhcHBlci5yaWdodC1sYWJlbCBsYWJlbHttYXJnaW4tbGVmdDpjYWxjKHZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMTApICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSk7bWFyZ2luLXJpZ2h0OjB9LmNsci10b2dnbGUtd3JhcHBlci5yaWdodC1sYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XStsYWJlbDpiZWZvcmV7cmlnaHQ6MDtsZWZ0OmNhbGMoLTEqY2FsYyh2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTEwKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpKX0uY2xyLXRvZ2dsZS13cmFwcGVyLnJpZ2h0LWxhYmVsIGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmFmdGVye3JpZ2h0OjA7bGVmdDpjYWxjKC0xKmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0x''@;'; put 'put ''MCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpsZWZ0fS5jbHItdG9nZ2xlLXdyYXBwZXIucmlnaHQtbGFiZWwgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDphZnRlcntsZWZ0OmNhbGMoLTEqY2FsYyh2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTEwKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpKTt0cmFuc2l0aW9uLXByb3BlcnR5OmxlZnR9LmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTpibG9jaztmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5''@;'; put 'put ''LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGluZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlh''@;'; put 'put ''cy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpIDA7bWFyZ2luLXRvcDowfS5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxv''@;'; put 'put ''Y2s7bWFyZ2luLXJpZ2h0OjB9LmNsci10b2dnbGUtcmlnaHQgbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpfS5jbHItdG9nZ2xlLXJp''@;'; put 'put ''Z2h0IGlucHV0W3R5cGU9Y2hlY2tib3hdK2xhYmVsOmJlZm9yZXtsZWZ0OnVuc2V0O3JpZ2h0OmNhbGMoLTEqY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpKX0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XSts''@;'; put 'put ''YWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0OmNhbGMoLTEqY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpKTt0cmFuc2l0aW9uLXByb3BlcnR5OnJpZ2h0fS5jbHItdG9nZ2xlLXJpZ2h0IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNo''@;'; put 'put ''ZWNrZWQrbGFiZWw6YWZ0ZXJ7bGVmdDp1bnNldDtyaWdodDpjYWxjKC0xKmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKSk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpyaWdodH0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNr''@;'; put 'put ''Ym94XTpkaXNhYmxlZCtsYWJlbDphZnRlcntsZWZ0OnVuc2V0O3JpZ2h0OmNhbGMoLTEqY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpKX0uY2xyLXRvZ2dsZS1yaWdodCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmRpc2Fi''@;'; put 'put ''bGVkK2xhYmVsOmFmdGVye2xlZnQ6dW5zZXQ7cmlnaHQ6Y2FsYygtMSpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApICsgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSkpfS5jbHItdG9nZ2xlLXJpZ2h0IC5jbHItY29udHJvbC1pbmxpbmUgLmNsci10b2dnbGUtd3JhcHBlciAuY2xy''@;'; put 'put ''LWNvbnRyb2wtbGFiZWx7bWFyZ2luLXJpZ2h0OmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKX0uY2xyLXJhbmdlLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0''@;'; put 'put ''O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNsci1yYW5nZS13cmFwcGVyIC5maWxsLWlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWln''@;'; put 'put ''aHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7cG9pbnRlci1ldmVudHM6bm9uZTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjEwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXByb2dyZXNzLWZpbGwtY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0t''@;'; put 'put ''Y2xyLWZvcm1zLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO2JvcmRlci1zdHlsZTpub25lfS5jbHItcmFuZ2V7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6ZmxleC1lbmQ7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQp''@;'; put 'put ''fS5jbHItcmFuZ2U6ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6YXV0bztjdXJzb3I6bm90LWFsbG93ZWQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bGVmdDowO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2staGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jt''@;'; put 'put ''cy1yYW5nZS10cmFjay1jb2xvci1kaXNhYmxlZCl9LmNsci1yYW5nZTpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KS8yIC0gdmFy''@;'; put 'put ''KC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCkvMiArIHZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItd2lkdGgpKSk7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxl''@;'; put 'put ''ZCk7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfS5jbHItcmFuZ2U6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1j''@;'; put 'put ''b2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZCk7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfS5jbHItcmFuZ2U6ZGlzYWJsZWQrLmZp''@;'; put 'put ''bGwtaW5wdXR7cG9pbnRlci1ldmVudHM6YXV0bztjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvci1kaXNhYmxlZCl9aW5wdXRbdHlwZT1yYW5nZV17cGFkZGluZzowOy13ZWJraXQtYXBwZWFyYW5jZTpu''@;'; put 'put ''b25lO2xlZnQ6MDtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IpO2JvcmRlcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIo''@;'; put 'put ''LS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKX1pbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7dHJhbnNm''@;'; put 'put ''b3JtOnRyYW5zbGF0ZVkoY2FsYyh2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KS8yIC0gdmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCkvMiArIHZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItd2lkdGgpKSk7Ym9yZGVyLXJhZGl1czo1MCU7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfWlucHV0W3R5cGU9cmFuZ2VdOmRpc2Fi''@;'; put 'put ''bGVke2JvcmRlcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stYm9yZGVyLWNvbG9yLWRpc2FibGVkKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVz''@;'; put 'put ''KX1pbnB1dFt0eXBlPXJhbmdlXTo6LW1vei1yYW5nZS10aHVtYntib3JkZXI6MDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yKTtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRodW1iLWhlaWdo''@;'; put 'put ''dCk7d2lkdGg6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRodW1iLWhlaWdodCl9QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItcmFuZ2Utd3JhcHBlciAuZmlsbC1pbnB1dHtkaXNwbGF5Om5vbmV9LmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1y''@;'; put 'put ''YW5nZV06Oi1tcy1maWxsLWxvd2Vye2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2staGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS1wcm9ncmVzcy1maWxsLWNvbG9yKX1pbnB1dFt0eXBlPXJhbmdlXXtib3JkZXI6MDttYXJnaW46MDstd2Vi''@;'; put 'put ''a2l0LWFwcGVhcmFuY2U6bm9uZTtsZWZ0OjA7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9aW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFja3ttYXJnaW46MDtib3JkZXI6MDtoZWlnaHQ6dmFyKC0tY2xyLWZv''@;'; put 'put ''cm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2stY29sb3IpfWlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcik7aGVpZ2h0OnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfX1fOi1tcy1mdWxsc2NyZWVuIC5jbHItcmFuZ2Utd3JhcHBlciAu''@;'; put 'put ''ZmlsbC1pbnB1dCw6cm9vdCAuY2xyLXJhbmdlLXdyYXBwZXIgLmZpbGwtaW5wdXR7ZGlzcGxheTpub25lfV86LW1zLWZ1bGxzY3JlZW4gLmNsci1yYW5nZS13cmFwcGVyLnByb2dyZXNzLWZpbGwgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy1maWxsLWxvd2VyLDpyb290IC5jbHItcmFuZ2Utd3Jh''@;'; put 'put ''cHBlci5wcm9ncmVzcy1maWxsIGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtZmlsbC1sb3dlcntoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLXJhbmdlLXRyYWNrLWhlaWdodCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcil9XzotbXMtZnVs''@;'; put 'put ''bHNjcmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRvb2x0aXAsOnJvb3QgaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10b29sdGlwe3Zpc2liaWxpdHk6aGlkZGVufV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV0sOnJvb3QgaW5wdXRbdHlwZT1yYW5nZV17Ym9yZGVyOjA7bWFy''@;'; put 'put ''Z2luOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bGVmdDowO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdGh1bWItaGVpZ2h0KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fV86LW1zLWZ1bGxzY3JlZW4gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFjayw6cm9vdCBpbnB1''@;'; put 'put ''dFt0eXBlPXJhbmdlXTo6LW1zLXRyYWNre2JvcmRlcjowO21hcmdpbjowO2hlaWdodDp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtdHJhY2staGVpZ2h0KTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10cmFjay1jb2xvcil9XzotbXMtZnVsbHNj''@;'; put 'put ''cmVlbiBpbnB1dFt0eXBlPXJhbmdlXTo6LW1zLXRodW1iLDpyb290IGlucHV0W3R5cGU9cmFuZ2VdOjotbXMtdGh1bWJ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtcmFuZ2UtcHJvZ3Jlc3MtZmlsbC1jb2xvcik7aGVpZ2h0OnZh''@;'; put 'put ''cigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpO3dpZHRoOnZhcigtLWNsci1mb3Jtcy1yYW5nZS10aHVtYi1oZWlnaHQpfWlucHV0W2NsckRhdGFsaXN0SW5wdXRde3Bvc2l0aW9uOnJlbGF0aXZlfWlucHV0W2NsckRhdGFsaXN0SW5wdXRdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tl''@;'; put 'put ''ci1pbmRpY2F0b3J7b3BhY2l0eTowO2N1cnNvcjp0ZXh0fS5jbHItaW5wdXQtZ3JvdXAgaW5wdXRbY2xyRGF0YWxpc3RJbnB1dF17ei1pbmRleDoyfS5jbHItaW5wdXQtZ3JvdXAgLmNsci1kYXRhbGlzdC1jYXJldHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjUlO3JpZ2h0OnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtc3BhY2UtNSk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0LWNhcmV0LWNvbG9yKTtjdXJzb3I6dGV4dDtoZWlnaHQ6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0LWNhcmV0LWljb24tc2l6ZSk7d2lkdGg6dmFyKC0tY2xyLWZvcm1zLWRhdGFsaXN0LWNhcmV0LWljb24tc2l6''@;'; put 'put ''ZSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmNsci1kYXRhbGlzdC1jYXJldHtjb2xvcjp2YXIoLS1jbHItZm9ybXMtZGF0YWxpc3QtY2FyZXQtZGlzYWJsZWQtY29sb3IpfWNsci1kYXRhbGlzdC1jb250YWluZXIgLmNsci1pbnB1dC1ncm91cHtwYWRkaW5nLXJpZ2h0OjB9LmNsci1p''@;'; put 'put ''bnB1dC13cmFwcGVyIGlucHV0W2NsclBhc3N3b3JkXStidXR0b24uY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uIC5jbHItcGFzc3dvcmQtZXllLWljb257Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXBhc3N3b3JkLWV5ZS1pY29uLWNvbG9yKX0uY2xyLWlucHV0LXdyYXBwZXIgaW5wdXRbY2xy''@;'; put 'put ''UGFzc3dvcmRdK2J1dHRvbi5jbHItaW5wdXQtZ3JvdXAtaWNvbi1hY3Rpb25bZGlzYWJsZWRdIC5jbHItcGFzc3dvcmQtZXllLWljb257Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXBhc3N3b3JkLWRpc2FibGVkLWV5ZS1pY29uLWNvbG9yKX0uY2xyLWlucHV0LXdyYXBwZXIgaW5wdXRbY2xyUGFz''@;'; put 'put ''c3dvcmRdW2Rpc2FibGVkXXtjb2xvcjp2YXIoLS1jbHItZm9ybXMtcGFzc3dvcmQtZGlzYWJsZWQtZXllLWljb24tY29sb3IpfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLWNhbGVuZGFyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3Vu''@;'; put 'put ''ZCk7LS1jbHItY2FsZW5kYXItYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yLXNoYWRlKTstLWNsci1jYWxlbmRhci1idG4tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItY2FsZW5kYXItdG9kYXktZGF0''@;'; put 'put ''ZS1jZWxsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1jYWxlbmRh''@;'; put 'put ''ci1hY3RpdmUtZm9jdXMtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQpOy0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTEwMCk7''@;'; put 'put ''LS1jbHItY2FsZW5kYXItYnRuLXBpY2tlci10cmlnZ2VyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3IpOy0tY2xyLWNhbGVuZGFyLWJ0bi1waWNrZXItdHJpZ2dlci1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1saW5rLWNvbG9yLWhv''@;'; put 'put ''dmVyKTstLWNsci1jYWxlbmRhci1idG4tcGlja2VyLXRyaWdnZXItYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWxpbmstY29sb3IpOy0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJh''@;'; put 'put ''Y2tncm91bmQtaG92ZXIpOy0tY2xyLWNhbGVuZGFyLWJ0bi1ob3Zlci1mb2N1cy1jb2xvci10ZXh0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpOy0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRl''@;'; put 'put ''cmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3ItYmc6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItY2FsZW5kYXItd2Vla2RheS1mb250LXNpemU6dmFyKC0tY2RzLWdsb2JhbC10eXBv''@;'; put 'put ''Z3JhcGh5LWZvbnQtc2l6ZS0zKTstLWNsci1jYWxlbmRhci10b2RheS1kYXRlLWNlbGwtZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTstLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXR5cG9ncmFwaHktZm9udC1zaXplLTYpOy0tY2xyLWNhbGVuZGFyLXBpY2tlci1idG4tZm9udC13ZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmRhdGVwaWNrZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXJnaW4t''@;'; put 'put ''dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOmNhbGMoKDcqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkpICsgKDIqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSkgKyAoMip2YXIoLS1jZHMtYWxpYXMtb2JqZWN0''@;'; put 'put ''LWJvcmRlci13aWR0aC0xMDApKSk7aGVpZ2h0OmNhbGMoKDgqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkpICsgKDIqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSkgKyAoMip2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKSk7YmFja2dyb3VuZDp2YXIoLS1jbHIt''@;'; put 'put ''Y2FsZW5kYXItYmFja2dyb3VuZC1jb2xvcik7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWNhbGVuZGFyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMt''@;'; put 'put ''MTAwKTtib3gtc2hhZG93OnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtc2hhZG93LTEwMCk7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MTA1MH0uY2FsZW5kYXItaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXJ9LmNhbGVu''@;'; put 'put ''ZGFyLXN3aXRjaGVycywueWVhci1zd2l0Y2hlcnN7ZGlzcGxheTpmbGV4fS55ZWFyLXN3aXRjaGVyc3tmbGV4OjAgMCBhdXRvO2FsaWduLXNlbGY6Y2VudGVyO3dpZHRoOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkqMyl9LmNhbGVuZGFyLXRhYmxle2ZsZXg6MSAxIGF1dG87d2lk''@;'; put 'put ''dGg6MTAwJX0uY2FsZW5kYXItY2VsbCwuY2FsZW5kYXItdGFibGUgLmNhbGVuZGFyLWNlbGx7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLXdp''@;'; put 'put ''ZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmNlbnRlcn0uZGF5e2Rpc3BsYXk6aW5saW5lLWJsb2NrfS53ZWVrZGF5c3tmbGV4OjAgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0ud2Vla2RheXtmb250LXNpemU6dmFyKC0tY2xyLWNhbGVu''@;'; put 'put ''ZGFyLXdlZWtkYXktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jYWxlbmRhci1idG57aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0x''@;'; put 'put ''MSk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO3BhZGRpbmc6MDttYXJnaW46MCFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO2JhY2tncm91bmQ6MCAwO2N1''@;'; put 'put ''cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTp2YXIoLS1jbHItY2FsZW5kYXItcGlja2VyLWJ0bi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1jYWxlbmRhci1waWNrZXItYnRuLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9u''@;'; put 'put ''LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKX0uY2FsZW5kYXItYnRuOmhvdmVyLC5jYWxlbmRhci1idG46Zm9jdXN7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWhvdmVyLWZvY3Vz''@;'; put 'put ''LWNvbG9yKX0uY2FsZW5kYXItYnRuOmZvY3Vze291dGxpbmU6MH0uY2FsZW5kYXItYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1idG4tYWN0aXZlLWNvbG9yLWJnKX0uZGF5LWJ0bntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGluZzowO21hcmdpbjowIWltcG9ydGFudDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1v''@;'; put 'put ''YmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO2JhY2tncm91bmQ6MCAwO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9u''@;'; put 'put ''dC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTt3aWR0aDoxMDAlO2NvbG9yOmluaGVyaXR9LmRheS1idG46aG92ZXIsLmRheS1idG46''@;'; put 'put ''Zm9jdXN7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWhvdmVyLWZvY3VzLWNvbG9yKX0uZGF5LWJ0bjpmb2N1c3tvdXRsaW5lOjB9LmRheS1idG46YWN0aXZle2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3ItYmcpfS5kYXktYnRuOmhvdmVy''@;'; put 'put ''LC5kYXktYnRuOmZvY3Vze2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3ItdGV4dCl9LmRheS1idG46YWN0aXZle2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4tYWN0aXZlLWNvbG9yKX0uZGF5LWJ0bi5pcy10b2RheXtjb2xvcjp2YXIoLS1jbHItY2Fs''@;'; put 'put ''ZW5kYXItdG9kYXktZGF0ZS1jZWxsLWNvbG9yKTtmb250LXdlaWdodDp2YXIoLS1jbHItY2FsZW5kYXItdG9kYXktZGF0ZS1jZWxsLWZvbnQtd2VpZ2h0KX0uZGF5LWJ0bi5pcy1leGNsdWRlZHtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVk''@;'; put 'put ''KX0uZGF5LWJ0bi5pcy1leGNsdWRlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF5LWJ0bi5pcy1zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLWNsci1jYWxlbmRhci1hY3RpdmUtY2VsbC1iYWNrZ3JvdW5kLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtY29s''@;'; put 'put ''b3IpfS5kYXktYnRuLmlzLXNlbGVjdGVkOmZvY3Vze2JhY2tncm91bmQ6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1mb2N1cy1jZWxsLWJhY2tncm91bmQtY29sb3IpfS5kYXktYnRuLmlzLWRpc2FibGVke2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3It''@;'; put 'put ''ZGlzYWJsZWQpO3BvaW50ZXItZXZlbnRzOm5vbmV9LmRheS1idG4uaXMtZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmNhbGVuZGFyLXBpY2tlcnN7ZGlzcGxheTpmbGV4fS5zd2l0Y2hlcntjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWNvbG9yKX0uc3dpdGNoZXI6aG92ZXIs''@;'; put 'put ''LnN3aXRjaGVyOmZvY3Vze2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3ItdGV4dCl9LnN3aXRjaGVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItY2FsZW5kYXItYnRuLWFjdGl2ZS1jb2xvcil9LnN3aXRjaGVyIGNkcy1pY29uLC5zd2l0Y2hlciBjbHItaWNv''@;'; put 'put ''bntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpfS5tb250aHBpY2tlci10cmlnZ2VyLC55ZWFycGlja2VyLXRyaWdnZXJ7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMyk7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFy''@;'; put 'put ''LWJ0bi1waWNrZXItdHJpZ2dlci1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tb250aHBpY2tlciwueWVhcnBpY2tlcnttaW4taGVpZ2h0OmNhbGMoNip2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTEyKSl9Lm1vbnRocGlja2VyLC55ZWFycGlja2VyLC55ZWFyc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbn0ueWVhcnBpY2tlcntnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0ubW9udGhwaWNrZXIsLnllYXJze2ZsZXgtd3JhcDp3''@;'; put 'put ''cmFwfS5tb250aCwueWVhcntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7cGFkZGlu''@;'; put 'put ''ZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7bWFyZ2luOjAhaW1wb3J0YW50O2NvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtmb250LXNp''@;'; put 'put ''emU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGlu''@;'; put 'put ''ZS1oZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpO3dpZHRoOmNhbGMoLjUqY2FsYygoNyp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSkgKyAo''@;'; put 'put ''Mip2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKSArICgyKnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkpKSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNykgLSB2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKX0ubW9udGg6aG92ZXIsLm1v''@;'; put 'put ''bnRoOmZvY3VzLC55ZWFyOmhvdmVyLC55ZWFyOmZvY3Vze2NvbG9yOnZhcigtLWNsci1jYWxlbmRhci1idG4taG92ZXItZm9jdXMtY29sb3ItdGV4dCl9Lm1vbnRoOmFjdGl2ZSwueWVhcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWJ0bi1hY3RpdmUtY29sb3IpfS5tb250aC5p''@;'; put 'put ''cy1kaXNhYmxlZCwueWVhci5pcy1kaXNhYmxlZHtjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTtwb2ludGVyLWV2ZW50czpub25lfS5tb250aC5pcy1kaXNhYmxlZDpob3ZlciwueWVhci5pcy1kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5k''@;'; put 'put ''OjAgMH0ubW9udGguaXMtc2VsZWN0ZWQsLnllYXIuaXMtc2VsZWN0ZWR7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWNlbGwtYmFja2dyb3VuZC1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWNhbGVuZGFyLWFjdGl2ZS1jZWxsLWNvbG9yKX0ubW9udGguaXMtc2VsZWN0ZWQ6''@;'; put 'put ''Zm9jdXMsLnllYXIuaXMtc2VsZWN0ZWQ6Zm9jdXN7YmFja2dyb3VuZDp2YXIoLS1jbHItY2FsZW5kYXItYWN0aXZlLWZvY3VzLWNlbGwtYmFja2dyb3VuZC1jb2xvcil9Lm1vbnRoe3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVy''@;'; put 'put ''ZmxvdzplbGxpcHNpc30ueWVhcnt0ZXh0LWFsaWduOmNlbnRlcn06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1jb21ib2JveC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWNvbWJvYm94LWlucHV0LWJhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZC10aW50KTstLWNsci1jb21ib2JveC1waWxsLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1jb21ib2JveC1waWxsLWJvcmRlci1jb2xvcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7LS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItY29tYm9ib3gtZmlsdGVyLWhpZ2hsaWdodDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0''@;'; put 'put ''aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1jb21ib2JveC1taW4td2lkdGg6Y2FsYygxNjggKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTstLWNsci1jb21ib2JveC1tdWx0aS1taW4td2lkdGg6Y2FsYygzNjAgKiAoMXJlbSAvIHZhcigtLWNkcy1nbG9iYWwtYmFz''@;'; put 'put ''ZSkpKTstLWNsci1jb21ib2JveC1taW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItY29tYm9ib3gtZm9udC1zaXplOnZhcigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1zaXplKTstLWNsci1jb21ib2JveC1mb250LXdlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTstLWNsci1jb21ib2JveC10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItY29tYm9ib3gtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRl''@;'; put 'put ''ci1yYWRpdXMtMTAwKTstLWNsci1jb21ib2JveC1wYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTstLWNsci1jb21ib2JveC10cmlnZ2VyLXBhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpOy0tY2xyLWNvbWJvYm94LXRyaWdnZXItcGFkZGluZy1yaWdo''@;'; put 'put ''dDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpOy0tY2xyLWNvbWJvYm94LXRyaWdnZXItZ2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItY29tYm9ib3gtdHJpZ2dlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWNv''@;'; put 'put ''bWJvYm94LWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci1jb21ib2JveC1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91''@;'; put 'put ''bmQtYWN0aXZlKTstLWNsci1jb21ib2JveC1waWxsLXBhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpOy0tY2xyLWNvbWJvYm94LXBpbGwtbWFyZ2luOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSAwIDA7LS1jbHItY29tYm9ib3gt''@;'; put 'put ''cGlsbC1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1jb21ib2JveC1waWxsLXJlbW92ZS1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWNvbWJvYm94LWNhcmV0LWljb24tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTcpOy0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKX0uY2xyLWNvbWJvYm94LWZvcm0tY29udHJvbHthbGlnbi1pdGVtczpzdHJldGNofS5jbHItY29tYm9ib3gtZm9ybS1jb250cm9sIC5jbHIt''@;'; put 'put ''ZXJyb3IgLmNsci12YWxpZGF0ZS1pY29ue21hcmdpbi1sZWZ0OjB9LmNsci1mb2N1cy1pbmRpY2F0b3J7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtZm9jdXNlZC1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7d2lkdGg6MDt0cmFuc2l0aW9uOndpZHRo''@;'; put 'put ''IC4ycyBlYXNlO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpO2xlZnQ6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2''@;'; put 'put ''YXIoLS1jbHItY29tYm9ib3gtYm9yZGVyLXJhZGl1cyl9LmNsci1mb2N1c3t3aWR0aDoxMDAlfS5jbHItZXJyb3IgLmNsci1mb2N1cy1pbmRpY2F0b3J7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZm9ybXMtaW52YWxpZC1jb2xvcil9LmNsci1jb21ib2JveC13cmFwcGVye3Bvc2l0aW9u''@;'; put 'put ''OnJlbGF0aXZlO3BhZGRpbmc6MCBjYWxjKHZhcigtLWNsci1jb21ib2JveC10cmlnZ2VyLWdhcCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpICsgdmFyKC0tY2xyLWNvbWJvYm94LXRyaWdnZXItcGFkZGluZy1yaWdodCkpIDAgdmFyKC0tY2xyLWNvbWJvYm94LXRyaWdnZXItcGFkZGlu''@;'; put 'put ''Zy1sZWZ0KTttaW4taGVpZ2h0OnZhcigtLWNsci1jb21ib2JveC1taW4taGVpZ2h0KTttaW4td2lkdGg6dmFyKC0tY2xyLWNvbWJvYm94LW1pbi13aWR0aCk7Zm9udC1zaXplOnZhcigtLWNsci1jb21ib2JveC1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNsci1jb21ib2JveC1mb250''@;'; put 'put ''LXdlaWdodCk7Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHQtY29sb3IpO2JvcmRlci1ib3R0b206dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItZm9ybXMtYm9yZGVyLWNvbG9yKTtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1jb21ib2JveC1ib3JkZXItY29s''@;'; put 'put ''b3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLWNvbWJvYm94LWJvcmRlci1yYWRpdXMpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWlucHV0e3BhZGRpbmc6MDttYXgtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItaW5wdXQ6''@;'; put 'put ''bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXRleHQtY29sb3IpfS5jbHItY29tYm9ib3gtd3JhcHBlci5tdWx0aXttaW4td2lkdGg6bWluKHZhcigtLWNsci1jb21ib2JveC1tdWx0aS1taW4td2lkdGgpLDEwMCUpO3BhZGRpbmctYm90dG9tOmNhbGMoMyooMXJlbS92''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItaW5wdXQuY2xyLWNvbWJvYm94LWlucHV0OmZvY3Vze2JhY2tncm91bmQ6MCAwfS5jbHItY29tYm9ib3gtd3JhcHBlci5pbnZhbGlke2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLWZvcm1zLWlu''@;'; put 'put ''dmFsaWQtY29sb3IpfS5jbHItY29tYm9ib3gtd3JhcHBlciAuY2xyLWNvbWJvYm94LWlucHV0e2JhY2tncm91bmQ6MCAwO2JvcmRlci1ib3R0b206bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmNsci1jb21ib2JveC13cmFwcGVyIC5jbHItY29tYm9ib3gtcmVtb3ZlLWJ0bntiYWNrZ3Jv''@;'; put 'put ''dW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZzowO2NvbG9yOnZhcigtLWNsci1jb21ib2JveC1waWxsLXJlbW92ZS1pY29uLWNvbG9yKX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGx7Zm9udC1zaXplOnZhcigtLWNk''@;'; put 'put ''cy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXIt''@;'; put 'put ''c3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5nKTtoZWlnaHQ6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtaGVpZ2h0KTttYXJnaW46dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtbWFyZ2luKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1j''@;'; put 'put ''b21ib2JveC1waWxsLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO2JvcmRlci1zdHlsZTpzb2xpZDthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1ib3JkZXItcmFkaXVzKTtib3Jk''@;'; put 'put ''ZXItY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LXBpbGwtYm9yZGVyLWNvbG9yKTtwYWRkaW5nOnZhcigtLWNsci1jb21ib2JveC1waWxsLXBhZGRpbmcpfS5jbHItY29tYm9ib3gtd3JhcHBlciAubGFiZWwtY29tYm9ib3gtcGlsbCAuY2xyLWNvbWJvYm94LXBpbGwtY29udGVudHtmb250LXNp''@;'; put 'put ''emU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWlnaHQpO2NvbG9yOnZhcigtLWNsci1jb21ib2JveC1waWxsLWZvbnQtY29sb3IpO3BhZGRpbmc6MH0uY2xy''@;'; put 'put ''LWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2RzLWljb24sLmNsci1jb21ib2JveC13cmFwcGVyIC5sYWJlbC1jb21ib2JveC1waWxsIGNsci1pY29ue21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uY2xyLWNvbWJvYm94LXdyYXBw''@;'; put 'put ''ZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2RzLWljb25bc2hhcGU9d2luZG93LWNsb3NlXSwuY2xyLWNvbWJvYm94LXdyYXBwZXIgLmxhYmVsLWNvbWJvYm94LXBpbGwgY2xyLWljb25bc2hhcGU9d2luZG93LWNsb3NlXXtjb2xvcjp2YXIoLS1jbHItY29tYm9ib3gtcGlsbC1mb250LWNvbG9y''@;'; put 'put ''KX0uY2xyLWNvbWJvYm94LXdyYXBwZXIgLmNsci1jb21ib2JveC1pbnB1dC13cmFwcGVye2JvcmRlcjowO2JhY2tncm91bmQ6MCAwfS5jbHItY29tYm9ib3gtd3JhcHBlcjpub3QoLmRpc2FibGVkKTpob3ZlciwuY2xyLWNvbWJvYm94LXdyYXBwZXI6Zm9jdXMtd2l0aGlue2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LWhvdmVyLWJhY2tncm91bmQtY29sb3IpfS5jbHItY29tYm9ib3gtdHJpZ2dlcntwYWRkaW5nLWxlZnQ6dmFyKC0tY2xyLWNvbWJvYm94LXRyaWdnZXItcGFkZGluZy1sZWZ0KTtwYWRkaW5nLXJpZ2h0OnZhcigtLWNsci1jb21ib2JveC10cmlnZ2Vy''@;'; put 'put ''LXBhZGRpbmctcmlnaHQpO21hcmdpbjphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjA7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Y29sb3I6Y3VycmVudENvbG9yO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MH0uY2xyLWNvbWJvYm94LXRyaWdnZXI6ZGlzYWJs''@;'; put 'put ''ZWR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1kaXNhYmxlZCl9LmNsci1jb21ib2JveC10cmlnZ2VyOmRpc2FibGVkIGNkcy1pY29uW3NoYXBlPWFuZ2xlXSwuY2xyLWNvbWJvYm94LXRyaWdnZXI6ZGlzYWJsZWQgY2xyLWljb25bc2hhcGU9YW5nbGVd''@;'; put 'put ''e2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItZGlzYWJsZWQpfS5jbHItY29tYm9ib3gtdHJpZ2dlciBjZHMtaWNvbltzaGFwZT1hbmdsZV0sLmNsci1jb21ib2JveC10cmlnZ2VyIGNsci1pY29uW3NoYXBlPWFuZ2xlXXtjb2xvcjp2YXIoLS1jbHItY29t''@;'; put 'put ''Ym9ib3gtdHJpZ2dlci1mb250LWNvbG9yKTtoZWlnaHQ6Y2xyLWNvbWJvYm94LWNhcmV0LWljb24tc2l6ZTt3aWR0aDpjbHItY29tYm9ib3gtY2FyZXQtaWNvbi1zaXplO21pbi1oZWlnaHQ6Y2xyLWNvbWJvYm94LWNhcmV0LWljb24tc2l6ZTttaW4td2lkdGg6Y2xyLWNvbWJvYm94LWNhcmV0''@;'; put 'put ''LWljb24tc2l6ZX0uY2xyLWNvbWJvYm94LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTAwJTtsZWZ0OjA7bWluLXdpZHRoOmNhbGMoMTIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtd2lkdGg6Y2Fs''@;'; put 'put ''YygzNjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWJnLWNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1kcm9wZG93bi1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCk7Ym94LXNoYWRvdzp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LXNoYWRvdy0yMDApO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2Jh''@;'; put 'put ''bC1zcGFjZS0yKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgMDt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwNTA7cG9zaXRpb246c3RhdGljO21heC1oZWlnaHQ6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO292ZXJmbG93LXk6YXV0bzt2aXNp''@;'; put 'put ''YmlsaXR5OnZpc2libGV9LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9ucy1sb2FkaW5ne3BhZGRpbmc6Y2FsYygzKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xy''@;'; put 'put ''LWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtbG9hZGluZy10ZXh0e3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5jbHItY29tYm9ib3gtb3B0aW9ucyAuY2xyLWNvbWJvYm94LW9wdGlvbnMtZW1wdHktdGV4dHtwYWRkaW5nLWxl''@;'; put 'put ''ZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uY2xyLWNvbWJvYm94LW9wdGlvbntmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tZm9udC13ZWlnaHQpO2xpbmUtaGVp''@;'; put 'put ''Z2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJv''@;'; put 'put ''cGRvd24taXRlbS1iZy1jb2xvcik7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6YXV0bzttYXJnaW46MDt3aWR0aDoxMDAlO3RleHQtdHJhbnNmb3JtOm5vbmV9LmNsci1j''@;'; put 'put ''b21ib2JveC1vcHRpb24uYWN0aXZle2NvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLXNlbGVjdGVkLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kcm9wZG93bi1pdGVtLXNlbGVjdGVkLWJnLWNvbG9yKX0uY2xyLWNvbWJvYm94LW9wdGlvbjpob3Zlcntjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItZHJvcGRvd24taXRlbS1ob3Zlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1ob3Zlci1iZy1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNsci1jb21ib2JveC1vcHRpb246aG92ZXIuYWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFy''@;'; put 'put ''KC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtaG92ZXItYmctY29sb3IpfS5jbHItY29tYm9ib3gtb3B0aW9uOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tYWN0aXZl''@;'; put 'put ''LWJnLWNvbG9yKX0uY2xyLWNvbWJvYm94LW9wdGlvbjphY3RpdmUuYWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQtYWN0aXZlLWJnLWNvbG9yKX0uY2xyLWNvbWJvYm94LW9wdGlvbjpmb2N1c3t6LWluZGV4OmluaGVyaXR9LmNsci1jb21i''@;'; put 'put ''b2JveC1vcHRpb24uZGlzYWJsZWQsLmNsci1jb21ib2JveC1vcHRpb246ZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZHJvcGRvd24taXRlbS1kaXNhYmxl''@;'; put 'put ''ZC1iZy1jb2xvcik7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmNsci1jb21ib2JveC1vcHRpb24uZGlzYWJsZWQ6aG92ZXIsLmNsci1jb21ib2JveC1vcHRpb246ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDB9LmNsci1jb21ib2JveC1vcHRpb24uZGlz''@;'; put 'put ''YWJsZWQ6YWN0aXZlLC5jbHItY29tYm9ib3gtb3B0aW9uOmRpc2FibGVkOmFjdGl2ZXtiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmV9LmNsci1jb21ib2JveC1vcHRpb24uY2xyLWZvY3Vze2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWNvbWJvYm94LWFjdGl2ZS1iYWNrZ3JvdW5k''@;'; put 'put ''LWNvbG9yKX0uY2xyLWNvbWJvYm94LW9wdGlvbnMgLmNsci1jb21ib2JveC1vcHRpb257cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmNsci1jb21ib2JveC1vcHRpb25zIC5jbHItY29tYm9ib3gtb3B0aW9u''@;'; put 'put ''e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfX0uY2xyLWNvbWJvYm94LWRpc2FibGVke2NvbG9yOnZhcigtLWNsci1mb3Jtcy10ZXh0LWRpc2FibGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1jb21ib2JveC1kaXNh''@;'; put 'put ''YmxlZCAuY2xyLWNvbWJvYm94LWlucHV0LC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2JveC1yZW1vdmUtYnRuLC5jbHItY29tYm9ib3gtZGlzYWJsZWQgLmNsci1jb21ib2JveC10cmlnZ2Vye2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLWZpbHRlci1oaWdobGlnaHQgYntmb250''@;'; put 'put ''LXdlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktZm9udC13ZWlnaHQtc2VtaWJvbGQpO2NvbG9yOnZhcigtLWNsci1jb21ib2JveC1maWx0ZXItaGlnaGxpZ2h0KX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1zdGFjay12aWV3LWJvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''b2JqZWN0LWJvcmRlci13aWR0aC0xMDApOy0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1jb2xvcik7''@;'; put 'put ''LS1jbHItc3RhY2stYmxvY2stY2hhbmdlZC1ib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcik7LS1jbHItc3RhY2stdmlldy10aXRsZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXN0YWNrLXZpZXctcm93''@;'; put 'put ''LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItc3RhY2stdmlldy1yb3ctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1jb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZCk7LS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1ob3Zlcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWJnLWhvdmVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxl''@;'; put 'put ''LXJvdy1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJsZS1yb3ctYmctYWN0aXZlOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1hY3RpdmUpOy0tY2xyLXN0''@;'; put 'put ''YWNrLXZpZXctZXhwYW5kZWQtcm93LWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQpOy0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtcm93LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1z''@;'; put 'put ''ZWxlY3RlZCk7LS1jbHItc3RhY2stdmlldy1leHBhbmRlZC1ob3Zlci1yb3ctYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyKTstLWNsci1zdGFjay12aWV3LWV4cGFuZGVkLWFjdGl2ZS1yb3ctYmctY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZSk7LS1jbHItc3RhY2stdmlldy1yb3ctZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpOy0tY2xyLXN0YWNrLXZpZXctcm93LWZvbnQt''@;'; put 'put ''d2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7LS1jbHItc3RhY2stdmlldy1yb3ctbGluZS1oZWlnaHQ6Y2FsYygyMCAqICgxcmVtIC8gdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpOy0tY2xyLXN0YWNrLXZpZXctcm93LWxldHRlci1zcGFj''@;'; put 'put ''aW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1sZXR0ZXItc3BhY2luZyk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1ib3JkZXItYm90dG9tOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJl''@;'; put 'put ''bi1zdGFjay1ibG9jay1ib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFjay1jaGlsZHJlbi1zdGFjay1ibG9jay1sYWJlbC1hbmQtY29udGVudC1iZy1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1iZy1j''@;'; put 'put ''b2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1jYXJldC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1jb2xvcik7LS1jbHItc3RhY2stdmlldy1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1yb3ctY29sb3IpOy0tY2xyLXN0YWNrLXZpZXctYmct''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctcm93LWJnLWNvbG9yKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWZvbnQtc2l6ZTp2YXIoLS1jbHItc3RhY2stdmlldy1yb3ctZm9udC1zaXplKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWZvbnQtd2Vp''@;'; put 'put ''Z2h0OnZhcigtLWNsci1zdGFjay12aWV3LXJvdy1mb250LXdlaWdodCk7LS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1saW5lLWhlaWdodDp2YXIoLS1jbHItc3RhY2stdmlldy1yb3ctbGluZS1oZWlnaHQpOy0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtbGV0''@;'; put 'put ''dGVyLXNwYWNpbmc6dmFyKC0tY2xyLXN0YWNrLXZpZXctcm93LWxldHRlci1zcGFjaW5nKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGVkLWJnLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGVkLXJvdy1iZy1jb2xvcik7LS1jbHItc3RhY2stdmlldy1zdGFj''@;'; put 'put ''ay1ibG9jay1leHBhbmRhYmxlLWhvdmVyOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWhvdmVyKTstLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWV4cGFuZGVkLXRleHQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kZWQtcm93LWNvbG9yKX0uc3RhY2st''@;'; put 'put ''aGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZH0uc3RhY2staGVhZGVyIC5zdGFjay10aXRsZXtkaXNwbGF5OmJsb2NrO2ZsZXg6MSAxIGF1dG87bWFyZ2luOjA7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDA7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZp''@;'; put 'put ''ZXctdGl0bGUtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZyl9LnN0YWNrLWhlYWRlciAuc3RhY2stYWN0aW9uc3tkaXNwbGF5OmJsb2NrO2ZsZXg6MCAwIGF1dG99LnN0''@;'; put 'put ''YWNrLWhlYWRlciAuc3RhY2stYWN0aW9ucyAuc3RhY2stYWN0aW9ue21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0uc3RhY2stdmlld3tvdmVyZmxvdy15OmF1dG87d29yZC13cmFwOmJyZWFrLXdvcmQ7bWFyZ2luLXRvcDowO2JvcmRlcjp2YXIoLS1jbHItc3RhY2stdmll''@;'; put 'put ''dy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItc3RhY2stdmlldy1ib3JkZXItcmFkaXVzKX0uc3RhY2stdmlldyBkZCwuc3RhY2stdmlldyBkdHttYXJnaW4taW5saW5lLXN0YXJ0OjA7bWFyZ2lu''@;'; put 'put ''LWxlZnQ6MH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2t7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgd3JhcDtvdmVyZmxvdy15OmhpZGRlbjtib3JkZXItYm90dG9tLXdpZHRoOnZhcigtLWNsci1zdGFjay12aWV3LWJvcmRlci13aWR0aCk7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDti''@;'; put 'put ''b3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWJvcmRlci1ib3R0b20pfS5zdGFjay12aWV3Pi5zdGFjay1ibG9jazpsYXN0LWNoaWxkLC5zdGFjay12aWV3PjpsYXN0LWNoaWxkIC5zdGFjay1ibG9jazpsYXN0LW9mLXR5cGV7Ym9yZGVyLWJvdHRv''@;'; put 'put ''bTpub25lfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1jaGFuZ2VkOmJlZm9yZXtjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MDt3aWR0aDowO2JvcmRlci10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSBzb2xpZCB2YXIoLS1jbHItc3RhY2stYmxvY2stY2hhbmdl''@;'; put 'put ''ZC1ib3JkZXItdG9wLWNvbG9yKTtib3JkZXItcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KSBzb2xpZCB0cmFuc3BhcmVudH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY2FyZXR7YWxpZ24tc2VsZjpjZW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWxhYmVse3BhZGRpbmc6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2NvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWJnLWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xyLXN0YWNrLXZpZXct''@;'; put 'put ''c3RhY2stYmxvY2stbGFiZWwtZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1sYWJlbC1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stbGFiZWwtbGluZS1oZWlnaHQpO2xldHRlci1z''@;'; put 'put ''cGFjaW5nOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWxhYmVsLWxldHRlci1zcGFjaW5nKTtmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtkaXNwbGF5OmlubGluZS1ibG9j''@;'; put 'put ''aztjb250ZW50OiIiO2Zsb2F0OmxlZnQ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDAgMDt0ZXh0LWFsaWduOmNl''@;'; put 'put ''bnRlcn0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stbGFiZWw6Zm9jdXN7b3V0bGluZS1jb2xvcjpIaWdobGlnaHQ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1zdHlsZTphdXRvO291dGxpbmUtd2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTtv''@;'; put 'put ''dXRsaW5lLW9mZnNldDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zdGFjay12aWV3IC5zdGFjay12aWV3LWtleXtmbGV4OjAgMCA0MCU7bWF4LXdpZHRoOjQwJTttYXJnaW46MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpIDAgMH0uc3RhY2stdmlldyAuc3RhY2stYmxv''@;'; put 'put ''Y2stY2FyZXR7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTtmaWxsOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWJsb2NrLWNhcmV0LWNvbG9yKX0u''@;'; put 'put ''c3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudHtmbGV4OjEgMSBhdXRvO3dpZHRoOjYwJTttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWNvbnRlbnQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stY29udGVudD46''@;'; put 'put ''bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVue2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2Nre2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3Rh''@;'; put 'put ''Y2stY2hpbGRyZW4tc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbS1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuPi5zdGFjay1ibG9jazpsYXN0LWNoaWxkLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbj46bGFzdC1jaGlsZCAuc3RhY2stYmxvY2s6bGFzdC1vZi10eXBle2Jv''@;'; put 'put ''cmRlci1ib3R0b206bm9uZX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1jaGlsZHJlbiAuc3RhY2stYmxvY2stY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LXN0YWNrLWNoaWxkcmVu''@;'; put 'put ''LXN0YWNrLWJsb2NrLWxhYmVsLWFuZC1jb250ZW50LWJnLWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVse3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlPi5z''@;'; put 'put ''dGFjay1ibG9jay1sYWJlbHtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1iZy1jb2xvcik7Y3Vyc29yOnBvaW50ZXJ9LnN0YWNrLXZpZXcgLnN0YWNrLWJs''@;'; put 'put ''b2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHZpZXdCb3gl''@;'; put 'put ''M0QlMjIwJTIwMCUyMDEyJTIwMTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NkZWZzJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDc3R5bGUlM0UuY2xzLTElN0JmaWxsJTNBdmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yKSUzQiU3RCUzQyUyRnN0eWxlJTNFJTBBJTIwJTIw''@;'; put 'put ''JTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ3RpdGxlJTNFQ2FyZXQlM0MlMkZ0aXRsZSUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBjbGFzcyUzRCUyMmNscy0xJTIyJTIwZCUzRCUyMk02JTJDOUwxLjIlMkM0LjJhMC42OCUyQzAuNjglMkMwJTJDMCUyQzElMkMxLTFM''@;'; put 'put ''NiUyQzcuMDglMkM5Ljg0JTJDMy4yNGEwLjY4JTJDMC42OCUyQzAlMkMxJTJDMSUyQzElMkMxWiUyMiUyRiUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNm''@;'; put 'put ''b3JtOnJvdGF0ZSgtOTBkZWcpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGU+LnN0YWNrLWJsb2NrLWxhYmVsLC5zdGFjay12aWV3IC5zdGFjay1ibG9jay1l''@;'; put 'put ''eHBhbmRhYmxlPi5zdGFjay1ibG9jay1jb250ZW50e3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMnMgZWFzZS1pbi1vdXQsY29sb3IgLjJzIGVhc2UtaW4tb3V0fS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlOm5vdCguc3RhY2stYmxvY2stZXhwYW5kZWQpPi5zdGFj''@;'; put 'put ''ay1ibG9jay1sYWJlbDpob3Zlcntjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRhYmxlLWhvdmVyKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWJnLWhvdmVyKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2st''@;'; put 'put ''ZXhwYW5kYWJsZTpub3QoLnN0YWNrLWJsb2NrLWV4cGFuZGVkKT4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXIgLnN0YWNrLWJsb2NrLWNhcmV0e2ZpbGw6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kYWJsZS1ob3Zlcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4''@;'; put 'put ''cGFuZGFibGU6bm90KC5zdGFjay1ibG9jay1leHBhbmRlZCk+LnN0YWNrLWJsb2NrLWxhYmVsOmhvdmVyOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRhYmxlLXJvdy1hY3RpdmUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctZXhwYW5kYWJs''@;'; put 'put ''ZS1yb3ctYmctYWN0aXZlKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZTpub3QoLnN0YWNrLWJsb2NrLWV4cGFuZGVkKT4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXI6YWN0aXZlIC5zdGFjay1ibG9jay1jYXJldHtmaWxsOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFi''@;'; put 'put ''bGUtcm93LWFjdGl2ZSl9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVse2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2xyLXN0YWNrLXZpZXctYm9yZGVyLXdpZHRoKTtib3JkZXItYm90dG9tLXN0eWxl''@;'; put 'put ''OnNvbGlkO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stYm9yZGVyLWJvdHRvbSk7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kZWQtdGV4dC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3Rh''@;'; put 'put ''Y2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC1iZy1jb2xvcil9LnN0YWNrLXZpZXcgLnN0YWNrLWJsb2NrLWV4cGFuZGFibGUuc3RhY2stYmxvY2stZXhwYW5kZWQ+LnN0YWNrLWJsb2NrLWxhYmVsOmJlZm9yZXt0cmFuc2Zvcm06cm90YXRlKDApfS5zdGFjay12aWV3IC5zdGFjay1ibG9j''@;'; put 'put ''ay1leHBhbmRhYmxlLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1sYWJlbCAuc3RhY2stYmxvY2stY2FyZXR7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRlZC10ZXh0LWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJs''@;'; put 'put ''ZS5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLXN0YWNrLXZpZXctc3RhY2stYmxvY2stZXhwYW5kYWJsZS1ob3Zlcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItc3RhY2stdmlldy1leHBhbmRlZC1ob3Zlci1yb3ctYmct''@;'; put 'put ''Y29sb3IpfS5zdGFjay12aWV3IC5zdGFjay1ibG9jay1leHBhbmRhYmxlLnN0YWNrLWJsb2NrLWV4cGFuZGVkPi5zdGFjay1ibG9jay1sYWJlbDpob3ZlciAuc3RhY2stYmxvY2stY2FyZXR7ZmlsbDp2YXIoLS1jbHItc3RhY2stdmlldy1zdGFjay1ibG9jay1leHBhbmRhYmxlLWhvdmVyKX0u''@;'; put 'put ''c3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZS5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXI6YWN0aXZle2NvbG9yOnZhcigtLWNsci1zdGFjay12aWV3LWV4cGFuZGFibGUtcm93LWFjdGl2ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''c3RhY2stdmlldy1leHBhbmRlZC1hY3RpdmUtcm93LWJnLWNvbG9yKX0uc3RhY2stdmlldyAuc3RhY2stYmxvY2stZXhwYW5kYWJsZS5zdGFjay1ibG9jay1leHBhbmRlZD4uc3RhY2stYmxvY2stbGFiZWw6aG92ZXI6YWN0aXZlIC5zdGFjay1ibG9jay1jYXJldHtmaWxsOnZhcigtLWNsci1z''@;'; put 'put ''dGFjay12aWV3LWV4cGFuZGFibGUtcm93LWFjdGl2ZSl9Lm1vZGFsIC5zdGFjay12aWV3e21hcmdpbi1ib3R0b206MH0uc3RhY2stdmlldyBjbHItc3RhY2stYmxvY2suc3RhY2stYmxvY2stZXhwYW5kYWJsZSAuc3RhY2stYmxvY2stbGFiZWw6YmVmb3Jle2NvbnRlbnQ6bm9uZX0uc3RhY2st''@;'; put 'put ''dmlldyAuc3RhY2stY2hpbGRyZW4gY2xyLXN0YWNrLWJsb2NrIC5zdGFjay1ibG9jay1sYWJlbCwuc3RhY2stdmlldyAuc3RhY2stY2hpbGRyZW4gLnN0YWNrLWJsb2NrLWxhYmVse3BhZGRpbmctbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKX0uc3RhY2stdmlldyAuc3RhY2stY2hp''@;'; put 'put ''bGRyZW4gY2xyLXN0YWNrLWJsb2NrIC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmUsLnN0YWNrLXZpZXcgLnN0YWNrLWNoaWxkcmVuIC5zdGFjay1ibG9jay1sYWJlbDpiZWZvcmV7ZGlzcGxheTpub25lfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXRyZWUtYm9yZGVyLXJhZGl1czp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci10cmVlLWxpbmstaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyKTstLWNsci10cmVlLWxpbmstc2VsZWN0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1v''@;'; put 'put ''YmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZCk7LS1jbHItdHJlZS1saW5rLXRleHQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItdHJlZS1ub2RlLWNhcmV0LWxpbmstaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9i''@;'; put 'put ''amVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcik7LS1jbHItdHJlZS1ub2RlLWNhcmV0LWxpbmstYWN0aXZlLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci10cmVlLW5vZGUtY2FyZXQtbGluay1kaXNhYmxlZC1jb2xvcjp2YXIo''@;'; put 'put ''LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci10cmVlLW5vZGUtY2FyZXQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItdHJlZS1ub2RlLWNhcmV0LWhvdmVyLWNvbG9yOnZhcigtLWNsci10cmVl''@;'; put 'put ''LW5vZGUtY2FyZXQtbGluay1ob3Zlci1jb2xvcik7LS1jbHItdHJlZS1ub2RlLWNhcmV0LWFjdGl2ZS1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNhcmV0LWxpbmstYWN0aXZlLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY2FyZXQtZGlzYWJsZWQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9k''@;'; put 'put ''ZS1jYXJldC1saW5rLWRpc2FibGVkLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY29udGVudC10ZXh0LW9ubHktY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci10cmVlLW5vZGUtY29udGVudC1jb2xvcjp2YXIoLS1jbHItdHJlZS1saW5rLXRleHQtY29s''@;'; put 'put ''b3IpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKTstLWNsci10cmVlLW5vZGUtY29udGVudC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci10cmVl''@;'; put 'put ''LW5vZGUtY29udGVudC1iZy1ob3Zlci1jb2xvcjp2YXIoLS1jbHItdHJlZS1saW5rLWhvdmVyLWNvbG9yKTstLWNsci10cmVlLW5vZGUtY29udGVudC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLXRyZWUtbm9kZS1j''@;'; put 'put ''b250ZW50LWJnLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlKTstLWNsci10cmVlLW5vZGUtY29udGVudC1zZWxlY3RlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLXNlbGVjdGVk''@;'; put 'put ''KTstLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1zZWxlY3RlZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1saW5rLXNlbGVjdGlvbi1jb2xvcik7LS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctc2VsZWN0ZWQtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1i''@;'; put 'put ''YWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyKTstLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1zZWxlY3RlZC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZSk7LS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtZGlz''@;'; put 'put ''YWJsZWQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktZGlzYWJsZWQpOy0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0wKX0uY2xyLXRyZWUtbm9kZXtkaXNwbGF5OmJsb2NrfS5jbHItdHJlZS1u''@;'; put 'put ''b2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVye2N1cnNvcjpub3QtYWxsb3dlZH0uY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWxpbmt7cG9pbnRlci1ldmVudHM6bm9uZX0uY2xy''@;'; put 'put ''LXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWxpbmssLmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXIgLmNsci10cmVlbm9kZS1jb250ZW50LC5jbHItdHJlZS1ub2Rl''@;'; put 'put ''LmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY2hlY2tib3ggLmNsci1jb250cm9sLWxhYmVse2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1kaXNhYmxlZC1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdHJl''@;'; put 'put ''ZS1ub2RlLWNvbnRlbnQtYmctZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtbGluayBjZHMtaWNvbiwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50''@;'; put 'put ''LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWxpbmsgY2xyLWljb24sLmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXIgLmNsci10cmVlbm9kZS1jb250ZW50IGNkcy1pY29uLC5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2Rl''@;'; put 'put ''LWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY29udGVudCBjbHItaWNvbiwuY2xyLXRyZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWNoZWNrYm94IC5jbHItY29udHJvbC1sYWJlbCBjZHMtaWNvbiwuY2xyLXRy''@;'; put 'put ''ZWUtbm9kZS5kaXNhYmxlZCAuY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lciAuY2xyLXRyZWVub2RlLWNoZWNrYm94IC5jbHItY29udHJvbC1sYWJlbCBjbHItaWNvbntmaWxsOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLmRp''@;'; put 'put ''c2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY2FyZXR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jbHItdHJlZS1ub2RlLmRpc2FibGVkIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyIC5jbHItdHJlZW5vZGUtY2FyZXQgY2RzLWljb24s''@;'; put 'put ''LmNsci10cmVlLW5vZGUuZGlzYWJsZWQgLmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXIgLmNsci10cmVlbm9kZS1jYXJldCBjbHItaWNvbntmaWxsOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtZGlzYWJsZWQtY29sb3IpfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVy''@;'; put 'put ''e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyPi5jbHItdHJlZW5vZGUt''@;'; put 'put ''Y2hlY2tib3guY2xyLWNoZWNrYm94LXdyYXBwZXJ7d2lkdGg6MTAwJTtwYWRkaW5nOjB9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci10cmVlbm9kZS1jaGVja2JveC5jbHItY2hlY2tib3gtd3JhcHBlcjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTEwKX0uY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcj4uY2xyLXRyZWVub2RlLWNoZWNrYm94LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbHt3aWR0aDoxMDAlO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCl9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI+LmNsci10cmVlbm9kZS1jaGVja2JveC5jbHItY2hlY2tib3gtd3JhcHBlciAuY2xyLWNvbnRyb2wtbGFiZWw6''@;'; put 'put ''YmVmb3Jle2xlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbnRhaW5lcj4uY2xyLXRyZWVub2RlLWNoZWNrYm94LmNsci1jaGVja2JveC13cmFwcGVyIC5jbHItY29udHJvbC1sYWJlbDph''@;'; put 'put ''ZnRlcntsZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjB9LmNsci10cmVlLW5vZGUtY29udGVudC1jb250YWluZXI6Zm9jdXM+LmNs''@;'; put 'put ''ci10cmVlbm9kZS1jb250ZW50LC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyOmZvY3VzPi5jbHItdHJlZW5vZGUtY2hlY2tib3ggLmNsci1jb250cm9sLWxhYmVse291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSk7''@;'; put 'put ''b3V0bGluZS1jb2xvcjpIaWdobGlnaHQ7b3V0bGluZS1jb2xvcjotd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1zdHlsZTpzb2xpZDtvdXRsaW5lLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCl9LmNsci10cmVlbm9kZS1jb250ZW50e2ZsZXg6''@;'; put 'put ''MSAxIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC10ZXh0LW9ubHktY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9k''@;'; put 'put ''ZS1jb250ZW50LWJnLWNvbG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNsci10cmVlLWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS1jbHItdHJlZS1ib3JkZXItcmFkaXVzKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQ6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS0xMCl9LmNsci10cmVlbm9kZS1jb250ZW50LmNsci10cmVlbm9kZS10ZXh0LW9ubHl7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmNsci10cmVlbm9kZS1jb250ZW50IGNkcy1pY29uLC5jbHItdHJlZW5vZGUtY29udGVudCBjbHItaWNvbntoZWlnaHQ6dmFyKC0t''@;'; put 'put ''Y2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtdGV4dC1v''@;'; put 'put ''bmx5LWNvbG9yKTttYXJnaW4tcmlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluay5hY3RpdmUsLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpj''@;'; put 'put ''aGVja2VkKy5jbHItY29udHJvbC1sYWJlbHtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtc2VsZWN0ZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLXNlbGVjdGVkLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNs''@;'; put 'put ''ci10cmVlbm9kZS1saW5rLC5jbHItdHJlZW5vZGUtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVse2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXRyZWUtYm9yZGVyLXJhZGl1cyk7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWNvbG9yKTti''@;'; put 'put ''YWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1jb2xvcil9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluayBjZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rIGNsci1pY29uLC5jbHItdHJlZW5v''@;'; put 'put ''ZGUtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsIGNkcy1pY29uLC5jbHItdHJlZW5vZGUtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0rLmNsci1jb250cm9sLWxhYmVsIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVu''@;'; put 'put ''dC1jb2xvcil9LmNsci10cmVlbm9kZS1jb250ZW50IC5jbHItdHJlZW5vZGUtbGluazpob3ZlciwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbDpob3Zlcntjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtaG92ZXIt''@;'; put 'put ''Y29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWJnLWhvdmVyLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmhvdmVyIGNkcy1pY29uLC5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbms6''@;'; put 'put ''aG92ZXIgY2xyLWljb24sLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXIgY2RzLWljb24sLmNsci10cmVlbm9kZS1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXIgY2xy''@;'; put 'put ''LWljb257Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWhvdmVyLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmFjdGl2ZSwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbDph''@;'; put 'put ''Y3RpdmV7Y29sb3I6dmFyKC0tY2xyLXRyZWUtbm9kZS1jb250ZW50LWFjdGl2ZS1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctYWN0aXZlLWNvbG9yKX0uY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmFjdGl2ZSBj''@;'; put 'put ''ZHMtaWNvbiwuY2xyLXRyZWVub2RlLWNvbnRlbnQgLmNsci10cmVlbm9kZS1saW5rOmFjdGl2ZSBjbHItaWNvbiwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdKy5jbHItY29udHJvbC1sYWJlbDphY3RpdmUgY2RzLWljb24sLmNsci10cmVlbm9kZS1jaGVja2Jv''@;'; put 'put ''eCBpbnB1dFt0eXBlPWNoZWNrYm94XSsuY2xyLWNvbnRyb2wtbGFiZWw6YWN0aXZlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1hY3RpdmUtY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLXRyZWVub2RlLWxpbmsuYWN0aXZlOmhvdmVyLC5jbHIt''@;'; put 'put ''dHJlZW5vZGUtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCsuY2xyLWNvbnRyb2wtbGFiZWw6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNvbnRlbnQtYmctc2VsZWN0ZWQtaG92ZXItY29sb3IpfS5jbHItdHJlZW5vZGUtY29udGVudCAu''@;'; put 'put ''Y2xyLXRyZWVub2RlLWxpbmsuYWN0aXZlOmFjdGl2ZSwuY2xyLXRyZWVub2RlLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrLmNsci1jb250cm9sLWxhYmVsOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY29udGVudC1iZy1zZWxlY3Rl''@;'; put 'put ''ZC1hY3RpdmUtY29sb3IpfS5jbHItdHJlZW5vZGUtY2FyZXR7ZmxleDowIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTttaW4taGVp''@;'; put 'put ''Z2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKTtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1jbHItdHJlZS1ub2RlLWNhcmV0LWNvbG9yKX0uY2xyLXRyZWVub2RlLWNhcmV0''@;'; put 'put ''OmhvdmVye2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtaG92ZXItY29sb3IpfS5jbHItdHJlZW5vZGUtY2FyZXQ6YWN0aXZle2NvbG9yOnZhcigtLWNsci10cmVlLW5vZGUtY2FyZXQtYWN0aXZlLWNvbG9yKX0uY2xyLXRyZWUtbm9kZS1jYXJldC1pY29ue2hlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7dmVydGljYWwtYWxpZ246bWlkZGxlfS5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJ7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtMTApO3BhZGRpbmc6Y2FsYygodmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpKSouNSl9LmNsci10cmVlbm9kZS1zcGlubmVye2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''Nyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItdHJlZW5vZGUtY2hpbGRyZW57bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7d2lsbC1jaGFuZ2U6aGVpZ2h0O292ZXJmbG93''@;'; put 'put ''LXk6aGlkZGVufS5jbHItdHJlZW5vZGUtbGlua3tkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21hcmdpbjowO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''NSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KTtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmxlZnR9LmNsci10cmVlbm9kZS1saW5rOmhvdmVyLC5jbHItdHJlZW5vZGUtbGluazpmb2N1c3t0ZXh0LWRlY29yYXRpb246bm9uZX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1k''@;'; put 'put ''YXRhZ3JpZC1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTUwMCk7LS1jbHItZGF0YWdyaWQtZGVmYXVsdC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWljb24tY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItZGF0YWdyaWQtcm93LWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''b2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItZm9udC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci01MDApOy0tY2xyLWRhdGFncmlkLWFjdGlvbi10b2dnbGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9i''@;'; put 'put ''amVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3IpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24tYnRuLWRpc2FibGVkLWNvbG9yOnZhcigtLWNkcy1h''@;'; put 'put ''bGlhcy1zdGF0dXMtZGlzYWJsZWQpOy0tY2xyLWRhdGFncmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1wYWdpbmF0aW9uLWlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjp2YXIoLS1jbHIt''@;'; put 'put ''Zm9ybXMtZm9jdXNlZC1jb2xvcik7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1j''@;'; put 'put ''b2xvcik7LS1jbHItZGF0YWdyaWQtcG9wb3Zlci1mb250LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtYWN0aW9uLXBvcG92ZXItaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5k''@;'; put 'put ''LWhvdmVyKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQt''@;'; put 'put ''c2VsZWN0ZWQpOy0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZC1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtaG92ZXItYmFja2dy''@;'; put 'put ''b3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXIpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1j''@;'; put 'put ''bHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc3dpdGNoLWhlYWRlci1mb250LWhvdmVyLWFjdGl2ZTp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2ZSk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb24tb3Blbi1iZy1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtaGlnaGxpZ2h0KTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtY2Fy''@;'; put 'put ''ZXQtaWNvbi1vcGVuLWljb24tY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci0yMDApOy0tY2xyLWRhdGFncmlkLWxvYWRpbmct''@;'; put 'put ''YmFja2dyb3VuZDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZHJvcC1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWdhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtcGFkZGluZzowIHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvcjp2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtb2JqZWN0LW9wYWNpdHktMCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jbHItYnRuLWRlZmF1''@;'; put 'put ''bHQtZGlzYWJsZWQtY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWhvdmVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItYWN0aXZlKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtaG92ZXItY29sb3I6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtaG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNTAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJvcmRlci1h''@;'; put 'put ''Y3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1vcGFjaXR5LTApOy0tY2xyLWRhdGFncmlkLWNvbHVtbi10''@;'; put 'put ''b2dnbGUtdGV4dC1hY3RpdmUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50LXBhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZS1p''@;'; put 'put ''Y29uLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTstLWNsci1kYXRhZ3JpZC1kZXRhaWwtYm9keS10ZXh0LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItZGF0YWdyaWQtZGV0YWlsLWhlYWRlci10aXRsZS1jb2xvcjp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2Jq''@;'; put 'put ''ZWN0LWJvcmRlci1jb2xvcik7LS1jbHItZGF0YWdyaWQtcGxhY2Vob2xkZXItZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1saW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1sZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5nKTstLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tncm91bmQpOy0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFkb3c6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLW9iamVjdC1zaGFkb3ctMTAwKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWhlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtMSk7LS1jbHItZGF0YWdyaWQtY29sdW1uLXJlc2l6ZS1oYW5kbGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTstLWNsci1kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTstLWNs''@;'; put 'put ''ci1kYXRhZ3JpZC1mb290ZXItcGFnaW5hdGlvbi1nYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci1kYXRhZ3JpZC1maXhlZC1jb2x1bW4tc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTstLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWV4cGFuZGJ5OnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtNik7LS1jbHItZGF0YWdyaWQtaWNvbi1zaXplOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7LS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTstLWNsci1kYXRhZ3JpZC1jb21wYWN0LW91dGxpbmUtb2Zm''@;'; put 'put ''c2V0OmNhbGMoLTEgKiB0b2tlbnMuJGNkcy1nbG9iYWwtc3BhY2UtMyk7LS1jbHItZGF0YWdyaWQtaG9yaXpvbnRhbC1wYWRkaW5nOm1peGlucy5iYXNlbGluZVB4KDkpfS5kYXRhZ3JpZHtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7Ym9yZGVyOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0''@;'; put 'put ''aCkgc29saWQgdmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jbHItdGFibGUtYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYmdjb2xvcik7Y29sb3I6dmFyKC0tY2xyLXRhYmxlLWZvbnQtY29sb3IpO21hcmdp''@;'; put 'put ''bjp2YXIoLS1jbHItdGFibGUtbWFyZ2luKTttYXgtd2lkdGg6MTAwJTt3aWR0aDoxMDAlfS5kYXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1uLC5kYXRhZ3JpZCAuZGF0YWdyaWQtY2VsbHtib3JkZXItdG9wLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRl''@;'; put 'put ''cndpZHRoKTtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZXJvdy1ib3JkZXJjb2xvcik7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtY2VsbC1wYWRkaW5nKTt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4ubGVmdCwu''@;'; put 'put ''ZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdHt0ZXh0LWFsaWduOmxlZnR9LmRhdGFncmlkIC5kYXRhZ3JpZC1jb2x1bW4ubGVmdDpmaXJzdC1jaGlsZCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwubGVmdDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS03KX0uZGF0YWdyaWQgLmRhdGFncmlkLWNvbHVtbi5yaWdodCwuZGF0YWdyaWQgLmRhdGFncmlkLWNlbGwucmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uZGF0YWdyaWQgLmRhdGFncmlkLWNlbGx7Zm9udC1zaXplOnZhcigtLWNsci10YWJsZS1kYXRhLWNlbGwtZm9udC1zaXplKTtmb250LXdl''@;'; put 'put ''aWdodDp2YXIoLS1jbHItdGFibGUtZGF0YS1jZWxsLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jbHItdGFibGUtZGF0YS1jZWxsLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5k''@;'; put 'put ''YXRhZ3JpZCAuZGF0YWdyaWQtY29sdW1ue2NvbG9yOnZhcigtLWNsci10aGVhZC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1p''@;'; put 'put ''Ym9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1sZXR0ZXItc3BhY2luZyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGhlYWQt''@;'; put 'put ''Ymdjb2xvcik7dmVydGljYWwtYWxpZ246bWlkZGxlO2JvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcik7Ym9yZGVyLXRv''@;'; put 'put ''cDowIG5vbmV9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5IC5kYXRhZ3JpZC1yb3c6Zmlyc3QtY2hpbGQgLmRhdGFncmlkLWNlbGx7Ym9yZGVyLXRvcDowIG5vbmV9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5Ky5kYXRhZ3JpZC1ib2R5e2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLXRv''@;'; put 'put ''cC13aWR0aDp2YXIoLS1jbHItdGFibGUtYm9yZGVyd2lkdGgpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbjpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRv''@;'; put 'put ''cC1sZWZ0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVyY2VsbHJhZGl1cyl9LmRhdGFncmlkIC5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbjpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItdGFibGUtY29ybmVy''@;'; put 'put ''Y2VsbHJhZGl1cyl9LmRhdGFncmlkIC5kYXRhZ3JpZC1ib2R5Omxhc3QtY2hpbGQgLmRhdGFncmlkLXJvdzpsYXN0LWNoaWxkIC5kYXRhZ3JpZC1jZWxsOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci10YWJsZS1jb3JuZXJj''@;'; put 'put ''ZWxscmFkaXVzKX0uZGF0YWdyaWQgLmRhdGFncmlkLWJvZHk6bGFzdC1jaGlsZCAuZGF0YWdyaWQtcm93Omxhc3QtY2hpbGQgLmRhdGFncmlkLWNlbGw6bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6dmFyKC0tY2xyLXRhYmxlLWNvcm5lcmNl''@;'; put 'put ''bGxyYWRpdXMpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGx7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtY2VsbC1jb21wYWN0LXBhZGRpbmcpfS5kYXRhZ3JpZC1ob3N0e2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29s''@;'; put 'put ''dW1uIG5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0uZGF0YWdyaWR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7LW1zLW92ZXJmbG93LXN0eWxlOi1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtvdmVyZmxvdzphdXRvO2ZsZXg6MSAxIGF1''@;'; put 'put ''dG87bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5kYXRhZ3JpZC1jb250YWluZXJ7d2lkdGg6YXV0bztmb250LXNpemU6dmFyKC0tY2xyLXRhYmxlLWZvbnRzaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTts''@;'; put 'put ''aW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKTtwYWRkaW5nOnZhcigtLWNsci10YWJsZS10b3BjZWxscGFkZGluZykgdmFyKC0t''@;'; put 'put ''Y2xyLXRhYmxlLWNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtYm90dG9tY2VsbHBhZGRpbmcpfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSB2YXIoLS1jbHItZGF0YWdyaWQtaG9yaXpvbnRhbC1wYWRkaW5nKSB2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTMpO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1v''@;'; put 'put ''LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1z''@;'; put 'put ''cGFjZS0xMCl9YnV0dG9uLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb257Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWRhdGFncmlkLWljb24tY29sb3IpfS5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0LWljb24gc3Zne3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLWluLW91dH0uZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldCAuc3Bpbm5lcnttYXJnaW4t''@;'; put 'put ''dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCl9LmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLXRvcGNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtY2VsbHBhZGRpbmcpIHZhcigtLWNsci10YWJsZS1ib3R0b21j''@;'; put 'put ''ZWxscGFkZGluZyl9LmRhdGFncmlkLWhlYWRlciwuZGF0YWdyaWQtYm9keSwuZGF0YWdyaWQtcm93LC5kYXRhZ3JpZC1jb2x1bW4sLmRhdGFncmlkLWNlbGwsLmRhdGFncmlkLWZpeGVkLWNvbHVtbntkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1yb3d7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDti''@;'; put 'put ''b3JkZXItdG9wLXdpZHRoOnZhcigtLWNsci10YWJsZS1ib3JkZXJ3aWR0aCk7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKX0uZGF0YWdyaWQtcm93OmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXRvcDpub25lfS5kYXRhZ3JpZC1yb3c6aG92ZXIsLmRhdGFncmlk''@;'; put 'put ''LXJvdzpob3ZlciAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctaG92ZXItY29sb3IpfS5kYXRhZ3JpZC1yb3cuZGF0YWdyaWQtc2VsZWN0ZWQsLmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZCAuZGF0YWdyaWQtcm93LXN0''@;'; put 'put ''aWNreXtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LXNlbGVjdGVkKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvcil9LmRhdGFncmlkLXJvdy5kYXRhZ3JpZC1zZWxlY3RlZDpob3ZlciwuZGF0YWdyaWQtcm93LmRh''@;'; put 'put ''dGFncmlkLXNlbGVjdGVkOmhvdmVyIC5kYXRhZ3JpZC1yb3ctc3RpY2t5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1zZWxlY3RlZC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yKX0uZGF0YWdyaWQtcm93LmRhdGFncmlkLXNlbGVjdGVkOmFjdGl2ZSwuZGF0YWdyaWQt''@;'; put 'put ''cm93LmRhdGFncmlkLXNlbGVjdGVkOmFjdGl2ZSAuZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1yb3ctc2VsZWN0ZWQtYWN0aXZlLWJhY2tncm91bmQtY29sb3IpfS5kYXRhZ3JpZC1yb3c6YWN0aXZlLC5kYXRhZ3JpZC1yb3c6YWN0aXZl''@;'; put 'put ''IC5kYXRhZ3JpZC1yb3ctc3RpY2t5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXJvdy1hY3RpdmUtY29sb3IpfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXJvdy1kZXRhaWwtd3JhcHBlcntmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleH0uZGF0YWdyaWQtcm93IC5kYXRh''@;'; put 'put ''Z3JpZC1yb3ctZGV0YWlse3dpZHRoOmF1dG99LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtcm93LWRldGFpbCAuZGF0YWdyaWQtY2VsbHtwYWRkaW5nLXRvcDowO2JvcmRlcjowfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdHttaW4td2lkdGg6Y2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTUpIC0gdmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKSk7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNlbGVjdCwuZGF0YWdyaWQtcm93IC5k''@;'; put 'put ''YXRhZ3JpZC1zZWxlY3QgaW5wdXR7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2VsZWN0LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQsLmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2VsZWN0LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgaW5wdXR7Y3Vyc29yOm5v''@;'; put 'put ''dC1hbGxvd2VkfS5kYXRhZ3JpZC1yb3cgLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0e21hcmdpbjpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpIDA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLXJvdyAuZGF0YWdyaWQtc2ln''@;'; put 'put ''bnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXJ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1iZ2NvbG9yKTtkaXNwbGF5''@;'; put 'put ''OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtwb3NpdGlvbjpzdGlja3k7bGVmdDowO3otaW5kZXg6NTAwfS5kYXRhZ3JpZC1yb3ctc3RpY2t5IC5kYXRhZ3JpZC1jZWxsOmxhc3QtY2hpbGQ6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvci13''@;'; put 'put ''aWR0aCk7aGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLWhlaWdodCk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS5kYXRh''@;'; put 'put ''Z3JpZC1yb3ctc2Nyb2xsYWJsZXtmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcH0uZGF0YWdyaWQtcm93LXNjcm9sbGFibGUuaXMtcmVwbGFjZWR7ZmxleC1kaXJlY3Rpb246cm93fS5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZS5pcy1yZXBsYWNlZCAu''@;'; put 'put ''ZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxze2ZsZXg6MCAwIGF1dG99LmRhdGFncmlkLXJvdy1zY3JvbGxhYmxlIC5kYXRhZ3JpZC1jb2x1bW46bGFzdC1jaGlsZCAuZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvcntkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXJvdy1mbGV4e2ZsZXg6MSAxIGF1dG87''@;'; put 'put ''ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwfS5kYXRhZ3JpZC1yb3ctZmxleCAuZGF0YWdyaWQtcm93LWRldGFpbHtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLXJvdy1mbGV4IC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxse3Bh''@;'; put 'put ''ZGRpbmctdG9wOjB9LmRhdGFncmlkLXNjcm9sbGluZy1jZWxscywuZGF0YWdyaWQtc2Nyb2xsaW5nLWRldGFpbHN7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87ZmxleC1mbG93OnJvdyBub3dyYXB9LmRhdGFncmlkLWFjdGlvbi1iYXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNw''@;'; put 'put ''YWNlLTkpfS5kYXRhZ3JpZC1hY3Rpb24tYmFyfi5kYXRhZ3JpZC1zcGlubmVye2hlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpKTt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uZGF0YWdyaWQtaGVhZGVye3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWlu''@;'; put 'put ''ZGV4OjUwMTt3aWR0aDphdXRvfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbntib3JkZXItYm90dG9tOm5vbmV9LmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpO2JvcmRlci10b3A6bm9uZTtib3Jk''@;'; put 'put ''ZXItYm90dG9tLXN0eWxlOnNvbGlkO2JvcmRlci1ib3R0b20td2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdyAu''@;'; put 'put ''ZGF0YWdyaWQtcm93LXN0aWNreXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci10aGVhZC1iZ2NvbG9yKTt6LWluZGV4OjUwMn0uZGF0YWdyaWQtaGVhZGVyIC5kYXRhZ3JpZC1yb3c6aG92ZXIsLmRhdGFncmlkLWhlYWRlciAuZGF0YWdyaWQtcm93OmhvdmVyIC5kYXRhZ3JpZC1yb3ctc3Rp''@;'; put 'put ''Y2t5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpfS5kYXRhZ3JpZC1oZWFkZXIgLmRhdGFncmlkLXJvdy1zY3JvbGxhYmxle2ZsZXgtZGlyZWN0aW9uOnJvd30uZGF0YWdyaWQtdGFibGUtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttaW4taGVp''@;'; put 'put ''Z2h0OjEwMCV9LmRhdGFncmlkLXRhYmxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDEgYXV0bzthbGlnbi1jb250ZW50OmZsZXgtc3RhcnR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1sb2FkaW5nLW1vcmUtaXRlbXMtcm93IC5kYXRhZ3JpZC1sb2FkaW5n''@;'; put 'put ''LW1vcmUtaXRlbXMtY2VsbHtkaXNwbGF5OmZsZXg7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtYm9k''@;'; put 'put ''eXt3aWR0aDphdXRvfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1ue3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdDttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNSk7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87dmVydGljYWwtYWxpZ246dG9wO2Jv''@;'; put 'put ''cmRlcjowfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uOmZvY3Vze291dGxpbmU6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIHNvbGlkIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMik7b3V0bGluZS1vZmZzZXQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKX0uZGF0''@;'; put 'put ''YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiBjbHItZGctZmlsdGVyLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGNsci1kZy1zdHJpbmctZmlsdGVyLC5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGNsci1kZy1udW1lcmljLWZpbHRlcntkaXNwbGF5OmZsZXg7''@;'; put 'put ''b3JkZXI6OTk7bWFyZ2luLWxlZnQ6YXV0bzthbGlnbi1pdGVtczpjZW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci1pbnB1dC1zcGFjZXJ7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTtkaXNwbGF5OmlubGluZS1ibG9ja30uZGF0''@;'; put 'put ''YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtbnVtZXJpYy1maWx0ZXItaW5wdXR7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNCl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGV7LXdlYmtpdC1hcHBlYXJh''@;'; put 'put ''bmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6''@;'; put 'put ''cmlnaHQ7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS1zaXplKTt3aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1maWx0ZXItdG9nZ2xlLXNp''@;'; put 'put ''emUpO21pbi13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS1zaXplKTttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn1idXR0b24uZGF0YWdyaWQtdGFibGUg''@;'; put 'put ''LmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZSBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQt''@;'; put 'put ''ZmlsdGVyLXRvZ2dsZSBjbHItaWNvbntjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZTpob3ZlciBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZTpob3ZlciBjbHItaWNvbntjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS5kYXRh''@;'; put 'put ''Z3JpZC1maWx0ZXItb3BlbiBjZHMtaWNvbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtZmlsdGVyLXRvZ2dsZS5kYXRhZ3JpZC1maWx0ZXItb3BlbiBjbHItaWNvbntjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWFjdGl2''@;'; put 'put ''ZSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUuZGF0YWdyaWQtZmlsdGVyZWQgY2RzLWljb24sLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWZpbHRlci10b2dnbGUuZGF0YWdyaWQtZmlsdGVyZWQgY2xy''@;'; put 'put ''LWljb257Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1zZWxlY3RlZCl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4uZGF0YWdyaWQtZml4ZWQtd2lkdGh7ZmxleDowIDAgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAu''@;'; put 'put ''ZGF0YWdyaWQtY29sdW1uLWZsZXh7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG99LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpu''@;'; put 'put ''b25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtjb2xvcjp2YXIoLS1jbHItdGFibGUtZm9udC1jb2xvcik7dGV4dC1hbGlnbjpsZWZ0O2ZsZXg6MSAxIGF1dG87YWxp''@;'; put 'put ''Z24taXRlbXM6Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO2Rpc3BsYXk6ZmxleH1idXR0b24uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0YWdyaWQtY29sdW1uLXRpdGxle2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3Jp''@;'; put 'put ''ZC1jb2x1bW4tdGl0bGUgLnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb24uYnRue2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi10aXRsZSAuY2xyLWNoZWNrYm94LXdyYXBwZXIgLmNsci1j''@;'; put 'put ''b250cm9sLWxhYmVse21hcmdpbi10b3A6Y2FsYygtMSoxMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gYnV0dG9uLmRhdGFncmlkLWNvbHVtbi10aXRsZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNv''@;'; put 'put ''cjpwb2ludGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLnNvcnQtaWNvbntjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTttYXJnaW4tbGVmdDphdXRvO2hlaWdodDp2YXIoLS1jbHIt''@;'; put 'put ''ZGF0YWdyaWQtaWNvbi1zaXplKTt3aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtaWNvbi1zaXplKTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gYnV0dG9uLmRhdGFncmlkLWNvbHVtbi10aXRsZSAuc29ydC1pY29uOmhvdmVye2NvbG9yOnZh''@;'; put 'put ''cigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3ItaG92ZXIpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIGJ1dHRvbi5kYXRhZ3JpZC1jb2x1bW4tdGl0bGUgLnNvcnQtaWNvbjphY3RpdmV7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv''@;'; put 'put ''bi1jb2xvci1hY3RpdmUpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9ye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDowIDAgYXV0bzt3aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0x''@;'; put 'put ''MDApO29yZGVyOjEwMDttYXJnaW4tbGVmdDphdXRvO2hlaWdodDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1j''@;'; put 'put ''b2x1bW4tc2VwYXJhdG9yLWhlaWdodCk7d2lkdGg6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3Itd2lkdGgpO3JpZ2h0OjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNvbHVtbiAuZGF0''@;'; put 'put ''YWdyaWQtY29sdW1uLXNlcGFyYXRvciAuZGF0YWdyaWQtY29sdW1uLWhhbmRsZXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVy''@;'; put 'put ''LXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kOjAgMDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNikgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTtyaWdodDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkp''@;'; put 'put ''O3RvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNCkpO2N1cnNvcjpjb2wtcmVzaXplO2hlaWdodDpjYWxjKDEwMCUgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpIC0gdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSk7ei1pbmRleDo1MDF9YnV0dG9u''@;'; put 'put ''LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmRhdGFncmlkLWNvbHVtbi1oYW5kbGV7Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmRhdGFn''@;'; put 'put ''cmlkLWNvbHVtbi1yZXNpemUtdHJhY2tlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtkaXNwbGF5Om5vbmU7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKTtoZWlnaHQ6MDtib3JkZXItcmlnaHQtc3R5bGU6ZG90dGVkO2Jv''@;'; put 'put ''cmRlci1yaWdodC1jb2xvcjp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtMzAwKTtib3JkZXItcmlnaHQtd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO2N1cnNvcjpjb2wtcmVzaXplfS5kYXRhZ3JpZC10YWJs''@;'; put 'put ''ZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yIC5kYXRhZ3JpZC1jb2x1bW4tcmVzaXplLXRyYWNrZXIub24tYXJyb3cta2V5LXJlc2l6ZXt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZS1vdXR9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4g''@;'; put 'put ''LmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3IgLmV4Y2VlZGVkLW1heHtib3JkZXItcmlnaHQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBkb3R0ZWQgdmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXItZGFyayl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1j''@;'; put 'put ''b2x1bW4gLmRhdGFncmlkLXNpZ25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0e21hcmdpbjpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkpIDA7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLXNp''@;'; put 'put ''Z25wb3N0LXRyaWdnZXIgLnNpZ25wb3N0IC5zaWducG9zdC10cmlnZ2Vye2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4uZGF0YWdyaWQtc2VsZWN0LC5kYXRhZ3JpZC10YWJsZSAuZGF0''@;'; put 'put ''YWdyaWQtY29sdW1uLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQsLmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jb2x1bW4uZGF0YWdyaWQtcm93LWFjdGlvbnN7bWF4LXdpZHRoOnZhcigtLWNsci1kYXRhZ3JpZC1maXhlZC1jb2x1bW4tc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1kYXRh''@;'; put 'put ''Z3JpZC1maXhlZC1jb2x1bW4tc2l6ZSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxse2ZsZXg6MSAxIGF1dG87dGV4dC1hbGlnbjpsZWZ0O21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTE1KTtib3JkZXI6MH0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0''@;'; put 'put ''YWdyaWQtZml4ZWQtd2lkdGh7ZmxleDowIDAgYXV0b30uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwuZGF0YWdyaWQtZml4ZWQtY29sdW1ue2ZsZXg6MCAwIHZhcigtLWNsci1kYXRhZ3JpZC1maXhlZC1jb2x1bW4tc2l6ZSk7bWF4LXdpZHRoOnZhcigtLWNsci1kYXRhZ3JpZC1maXhl''@;'; put 'put ''ZC1jb2x1bW4tc2l6ZSk7bWluLXdpZHRoOnZhcigtLWNsci1kYXRhZ3JpZC1maXhlZC1jb2x1bW4tc2l6ZSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLXJvdy1hY3Rpb25ze2JhY2tncm91bmQ6MCAwfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbC5kYXRh''@;'; put 'put ''Z3JpZC1leHBhbmRhYmxlLWNhcmV0e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSB2YXIoLS1jbHItZGF0YWdyaWQtaG9yaXpvbnRhbC1wYWRkaW5nKSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO3RleHQtYWxpZ246Y2VudGVyfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQt''@;'; put 'put ''Y2VsbDpmb2N1c3tvdXRsaW5lOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciBzb2xpZCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpO291dGxpbmUtb2Zmc2V0OmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3Jp''@;'; put 'put ''ZC1hY3Rpb24tdG9nZ2xley13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tn''@;'; put 'put ''cm91bmQ6MCAwfWJ1dHRvbi5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZXtjdXJzb3I6cG9pbnRlcn0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGUgY2RzLWljb24sLmRhdGFncmlkLXRhYmxl''@;'; put 'put ''IC5kYXRhZ3JpZC1jZWxsIC5kYXRhZ3JpZC1hY3Rpb24tdG9nZ2xlIGNsci1pY29ue2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1pY29uLWNvbG9yKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWNlbGwgLmRhdGFncmlkLWFjdGlvbi10b2dnbGU6YWN0aXZlIGNkcy1pY29uLC5kYXRhZ3Jp''@;'; put 'put ''ZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuZGF0YWdyaWQtYWN0aW9uLXRvZ2dsZTphY3RpdmUgY2xyLWljb257Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi10b2dnbGUtY29sb3IpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtY2VsbCAuY2xyLXRvZ2dsZS13cmFwcGVye21hcmdp''@;'; put 'put ''bi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtwYWRkaW5nLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXItY29udGFpbmVye2ZsZXg6MSAxIGF1dG87ZGlzcGxheTpmbGV4O2p1c3RpZnktY29u''@;'; put 'put ''dGVudDpjZW50ZXI7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtib3JkZXItdG9wLWNvbG9yOnZhcigtLWNsci10YWJsZS1ib3JkZXItY29sb3IpO2JvcmRlci10b3Atd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKX0uZGF0YWdyaWQtdGFibGUgLmRhdGFncmlk''@;'; put 'put ''LXBsYWNlaG9sZGVye2JhY2tncm91bmQ6dmFyKC0tY2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWJhY2tncm91bmQtY29sb3IpO2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXIuZGF0YWdyaWQtZW1wdHl7Ym9yZGVyLXRvcDowO2Rp''@;'; put 'put ''c3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2ZvbnQtc2l6ZTp2YXIoLS1jbHIt''@;'; put 'put ''ZGF0YWdyaWQtcGxhY2Vob2xkZXItZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtcGxhY2Vob2xkZXItZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1wbGFjZWhvbGRlci1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0t''@;'; put 'put ''Y2xyLWRhdGFncmlkLXBsYWNlaG9sZGVyLWxldHRlci1zcGFjaW5nKTtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGxhY2Vob2xkZXItY29sb3IpfS5kYXRhZ3JpZC10YWJsZSAuZGF0YWdyaWQtcGxhY2Vob2xkZXIgLmRhdGFncmlkLXBsYWNlaG9sZGVyLWltYWdle2hlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTEzKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW47YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uv''@;'; put 'put ''c3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwNjAlMjA3MiUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHhtbG5zJTNBeGxpbmslM0QlMjJodHRwJTNB''@;'; put 'put ''JTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4bGluayUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2RlZnMlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NlbGxpcHNlJTIwaWQlM0QlMjJwYXRoLTElMjIlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjI2MS43NjY2NjY3JTIyJTIwcngl''@;'; put 'put ''M0QlMjIxNS40NTEyOTA0JTIyJTIwcnklM0QlMjI0LjczMzMzMzMzJTIyJTNFJTNDJTJGZWxsaXBzZSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ21hc2slMjBpZCUzRCUyMm1hc2stMiUyMiUyMG1hc2tDb250ZW50VW5pdHMlM0QlMjJ1c2VyU3BhY2VPblVzZSUyMiUyMG1hc2tV''@;'; put 'put ''bml0cyUzRCUyMm9iamVjdEJvdW5kaW5nQm94JTIyJTIweCUzRCUyMjAlMjIlMjB5JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzAuOTAyNTgwOCUyMiUyMGhlaWdodCUzRCUyMjkuNDY2NjY2NjclMjIlMjBmaWxsJTNEJTIyd2hpdGUlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAl''@;'; put 'put ''MjAlMjAlMjAlMjAlM0N1c2UlMjB4bGluayUzQWhyZWYlM0QlMjIlMjNwYXRoLTElMjIlM0UlM0MlMkZ1c2UlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZtYXNrJTNFJTBBJTIwJTIwJTIwJTIwJTNDJTJGZGVmcyUzRSUwQSUyMCUyMCUyMCUyMCUzQ2clMjBpZCUzRCUyMlBh''@;'; put 'put ''Z2UtMSUyMiUyMHN0cm9rZSUzRCUyMm5vbmUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIxJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZyUyMGlkJTNEJTIyQXJ0Ym9hcmQlMjIlM0UlMEEl''@;'; put 'put ''MjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0N1c2UlMjBpZCUzRCUyMk92YWwtMTAlMjIlMjBzdHJva2UlM0QlMjIlMjNDMURGRUYlMjIlMjBtYXNrJTNEJTIydXJsKCUyM21hc2stMiklMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyLjglMjIlMjBzdHJva2UtbGluZWNhcCUz''@;'; put 'put ''RCUyMnNxdWFyZSUyMiUyMHN0cm9rZS1kYXNoYXJyYXklM0QlMjIzJTJDNiUyQzMlMkM1JTIyJTIweGxpbmslM0FocmVmJTNEJTIyJTIzcGF0aC0xJTIyJTNFJTNDJTJGdXNlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNMzguNDYx''@;'; put 'put ''MzY0NyUyQzE4LjE2NDI0NTYlMjBMMzAuOTg5MDEzNyUyQzM0LjkxNDE4NDYlMjBMMzElMkM0NyUyMEwzMi41OTc3NzgzJTJDNDYuNTE2NzIzNiUyMEwzMi41OTc3NzgzJTJDMzQuOTE0MTg0NiUyMEw1MS4wNjczMjE4JTJDMTUuNzU2MDQyNSUyMEM1MS4wNjczMjE4JTJDMTUuNzU2MDQyNSUy''@;'; put 'put ''MDQ4LjYyOTUxNjYlMkMxNi42NTQyOTY5JTIwNDQuOTYyODkwNiUyQzE3LjMzOTIzMzQlMjBDNDEuMjk2MjY0NiUyQzE4LjAyNDE2OTklMjAzOC40NjEzNjQ3JTJDMTguMTY0MjQ1NiUyMDM4LjQ2MTM2NDclMkMxOC4xNjQyNDU2JTIwWiUyMiUyMGlkJTNEJTIyUGF0aC0xOTUlMjIlMjBmaWxs''@;'; put 'put ''JTNEJTIyJTIzQzFERkVGJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTQuNzQ2MzkyMjYlMkMxMi41NjYxODU1JTIwTDQuNjIwNjU3MjYlMkMxMi4xNjA1MzQ4JTIwTDUuMzUxNTQxNCUyQzExLjE2MjUw''@;'; put 'put ''NDQlMjBMNS43NzYyMjM4NSUyQzExLjE1OTkzOSUyMEw2LjIwOTM2MzA5JTJDMTIuNTU3MzQ4MSUyMEw0Ljc0NjM5MjI2JTJDMTIuNTY2MTg1NSUyMFolMjBNNi4yMDkzNjMwOSUyQzEyLjU1NzM0ODElMjBMNi4zMjU0MjYzMiUyQzEyLjkzMTc5NTQlMjBMMjguNDk2Mzg1NSUyQzM0Ljg3OTY3''@;'; put 'put ''MTglMjBMMjguNDk2Mzg1NSUyQzQ3LjgwOTY2OTElMjBMMzIuNiUyQzQ2LjQ4MzY1MTMlMjBMMzIuNiUyQzM0Ljg5OTIzNjUlMjBMNTMuOTczNDk0JTJDMTIuNzAzNTgxMyUyMEw1My45NzM0OTQlMkMxMi4yNjg4MjAxJTIwTDYuMjA5MzYzMDklMkMxMi41NTczNDgxJTIwWiUyME01NS4zNzM0''@;'; put 'put ''OTQlMkMxMC44NjAzMzc2JTIwTDU1LjM3MzQ5NCUyQzEzLjI2ODA2NjQlMjBMMzQlMkMzNS40NjM3MjE2JTIwTDM0JTJDNDcuNTAyNTQwMSUyMEwyNy4wOTYzODU1JTJDNDkuNzMzMzMzMyUyMEwyNy4wOTYzODU1JTJDMzUuNDYzNzIxOSUyMEw1LjA5MTc5Njg4JTJDMTMuNjgwNTQyJTIwTDQu''@;'; put 'put ''MzEzMjUzMDElMkMxMS4xNjg3NzY0JTIwTDU1LjM3MzQ5NCUyQzEwLjg2MDMzNzYlMjBaJTIyJTIwaWQlM0QlMjJQYXRoLTE0OSUyMiUyMGZpbGwlM0QlMjIlMjM3RkJEREQlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDZWxsaXBz''@;'; put 'put ''ZSUyMGlkJTNEJTIyT3ZhbC05JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMGN4JTNEJTIyMzAlMjIlMjBjeSUzRCUyMjExLjc4NTY1NCUyMiUyMHJ4JTNEJTIyMjYlMjIlMjByeSUzRCUyMjYuNzg1NjU0MDElMjIlM0UlM0MlMkZlbGxpcHNlJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIw''@;'; put 'put ''JTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNMzAlMkMxNy4xNzEzMDglMjBDMzYuODc3MjE3NyUyQzE3LjE3MTMwOCUyMDQzLjMxMTIyODIlMkMxNi40NjEwNzAxJTIwNDguMDMxMjM3MSUyQzE1LjIyOTIxMDYlMjBDNTAuMjc3NzYxMSUyQzE0LjY0Mjg5NzclMjA1Mi4wNTA3''@;'; put 'put ''NjE5JTJDMTMuOTU3OTY3NyUyMDUzLjIyMTYyMzElMkMxMy4yMzU0OTczJTIwQzU0LjE5Mzg1NjUlMkMxMi42MzU1ODg2JTIwNTQuNiUyQzEyLjExNzU4OTElMjA1NC42JTJDMTEuNzg1NjU0JTIwQzU0LjYlMkMxMS40NTM3MTg5JTIwNTQuMTkzODU2NSUyQzEwLjkzNTcxOTQlMjA1My4yMjE2''@;'; put 'put ''MjMxJTJDMTAuMzM1ODEwNyUyMEM1Mi4wNTA3NjE5JTJDOS42MTMzNDAzMiUyMDUwLjI3Nzc2MTElMkM4LjkyODQxMDM0JTIwNDguMDMxMjM3MSUyQzguMzQyMDk3NDYlMjBDNDMuMzExMjI4MiUyQzcuMTEwMjM3OTUlMjAzNi44NzcyMTc3JTJDNi40JTIwMzAlMkM2LjQlMjBDMjMuMTIyNzgy''@;'; put 'put ''MyUyQzYuNCUyMDE2LjY4ODc3MTglMkM3LjExMDIzNzk1JTIwMTEuOTY4NzYyOSUyQzguMzQyMDk3NDYlMjBDOS43MjIyMzg4NiUyQzguOTI4NDEwMzQlMjA3Ljk0OTIzODE0JTJDOS42MTMzNDAzMiUyMDYuNzc4Mzc2ODklMkMxMC4zMzU4MTA3JTIwQzUuODA2MTQzNSUyQzEwLjkzNTcxOTQl''@;'; put 'put ''MjA1LjQlMkMxMS40NTM3MTg5JTIwNS40JTJDMTEuNzg1NjU0JTIwQzUuNCUyQzEyLjExNzU4OTElMjA1LjgwNjE0MzUlMkMxMi42MzU1ODg2JTIwNi43NzgzNzY4OSUyQzEzLjIzNTQ5NzMlMjBDNy45NDkyMzgxNCUyQzEzLjk1Nzk2NzclMjA5LjcyMjIzODg2JTJDMTQuNjQyODk3NyUyMDEx''@;'; put 'put ''Ljk2ODc2MjklMkMxNS4yMjkyMTA2JTIwQzE2LjY4ODc3MTglMkMxNi40NjEwNzAxJTIwMjMuMTIyNzgyMyUyQzE3LjE3MTMwOCUyMDMwJTJDMTcuMTcxMzA4JTIwWiUyME0zMCUyQzE4LjU3MTMwOCUyMEMxNS42NDA1OTY1JTJDMTguNTcxMzA4JTIwNCUyQzE1LjUzMzI2NzIlMjA0JTJDMTEu''@;'; put 'put ''Nzg1NjU0JTIwQzQlMkM4LjAzODA0MDc4JTIwMTUuNjQwNTk2NSUyQzUlMjAzMCUyQzUlMjBDNDQuMzU5NDAzNSUyQzUlMjA1NiUyQzguMDM4MDQwNzglMjA1NiUyQzExLjc4NTY1NCUyMEM1NiUyQzE1LjUzMzI2NzIlMjA0NC4zNTk0MDM1JTJDMTguNTcxMzA4JTIwMzAlMkMxOC41NzEzMDgl''@;'; put 'put ''MjBaJTIyJTIwaWQlM0QlMjJPdmFsLTktQ29weSUyMiUyMGZpbGwlM0QlMjIlMjM3RkJEREQlMjIlM0UlM0MlMkZwYXRoJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGQlM0QlMjJNMTguMjYwODY0MyUyQzcuMTQ1NjI5ODglMjBMMjIuNzI3MzU2''@;'; put 'put ''JTJDMTYuOTA0NzI0MSUyMEMyMi43MjczNTYlMkMxNi45MDQ3MjQxJTIwMTUuMzAwNjU5MiUyQzE2LjM5MTE3NDMlMjAxMC4yNzYwMDElMkMxNC43NTExNTk3JTIwQzUuMjUxMzQyNzclMkMxMy4xMTExNDUlMjA1LjM4MDMxMDA2JTJDMTEuODI4NDMwMiUyMDUuMzgwMzEwMDYlMkMxMS42ODgy''@;'; put 'put ''OTM1JTIwQzUuMzgwMzEwMDYlMkMxMC40ODMyODMxJTIwOC4xNjYzMzE1MiUyQzkuNDE4Nzc3MTYlMjAxMS4xMTQ1NjMlMkM4LjU3MzI0MjE5JTIwQzE0LjU0OTMxOSUyQzcuNTg4MTc0OTIlMjAxOC4yNjA4NjQzJTJDNy4xNDU2Mjk4OCUyMDE4LjI2MDg2NDMlMkM3LjE0NTYyOTg4JTIwWiUy''@;'; put 'put ''MiUyMGlkJTNEJTIyUGF0aC0xOTYlMjIlMjBmaWxsJTNEJTIyJTIzQzFERkVGJTIyJTNFJTNDJTJGcGF0aCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRmclM0UlMEElMjAlMjAlMjAlMjAlM0MlMkZnJTNFJTBBJTNDJTJGc3ZnJTNFIil9LmRhdGFncmlkLXRhYmxlIC5kYXRh''@;'; put 'put ''Z3JpZC1oaWRkZW4tY29sdW1uLmRhdGFncmlkLWNvbHVtbiwuZGF0YWdyaWQtdGFibGUgLmRhdGFncmlkLWhpZGRlbi1jb2x1bW4uZGF0YWdyaWQtY2VsbHtkaXNwbGF5Om5vbmV9LmRhdGFncmlkLXRhYmxlIC5kYXRhZ3JpZC1yb3ctc2Nyb2xsYWJsZSAuZGF0YWdyaWQtY29sdW1uIC5kYXRh''@;'; put 'put ''Z3JpZC1jb2x1bW4tc2VwYXJhdG9yOmFmdGVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1yZXNpemUtaGFuZGxlci1jb2xvcil9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtc2Nyb2xsaW5nLWNlbGxzIC5kYXRhZ3JpZC1jZWxsOm5vdCguZGF0''@;'; put 'put ''YWdyaWQtZXhwYW5kYWJsZS1jYXJldCk6bm90KC5kYXRhZ3JpZC1yb3ctYWN0aW9ucyk6bm90KC5kYXRhZ3JpZC1zZWxlY3Qpe2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxse2Rpc3BsYXk6YmxvY2s7cGFkZGlu''@;'; put 'put ''Zy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsIC5kYXRhZ3JpZC1jZWxsLmRhdGFncmlkLWhpZGRlbi1jb2x1bW57ZGlzcGxheTpub25lfS5kYXRhZ3JpZC1yb3ctcmVwbGFjZWQgLmRhdGFncmlkLXJvdy1k''@;'; put 'put ''ZXRhaWwgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uZGF0YWdyaWQtcm93LXJlcGxhY2VkIC5kYXRhZ3JpZC1yb3ctZGV0YWlsLmRhdGFncmlkLWNvbnRhaW5lcntib3JkZXItdG9wOnZhcigtLWNkcy1hbGlhcy1vYmpl''@;'; put 'put ''Y3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LmRhdGFncmlkLXJvdy1yZXBsYWNlZCAuZGF0YWdyaWQtcm93LWRldGFpbC5kYXRhZ3JpZC1jb250YWluZXIgLmRhdGFncmlkLWNlbGx7Ym9yZGVyLXRvcDpub25lfS5kYXRhZ3JpZC1mb290''@;'; put 'put ''ZXJ7ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7ZmxleC1mbG93OnJvdyBub3dyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6c3RyZXRjaDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtmb250''@;'; put 'put ''LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGluZS1o''@;'; put 'put ''ZWlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tbGV0dGVyLXNwYWNpbmcpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXRoZWFkLWJnY29sb3IpO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlLWZv''@;'; put 'put ''b3Rlci1ib3JkZXItdG9wLWNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKTtib3JkZXItdG9wOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVy''@;'; put 'put ''LXJhZGl1cy0xMDApO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItcmFkaXVzLTEwMCl9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnkt''@;'; put 'put ''Y29udGVudDpmbGV4LWVuZDtnYXA6dmFyKC0tY2xyLWRhdGFncmlkLWZvb3Rlci1wYWdpbmF0aW9uLWdhcCl9LmRhdGFncmlkLWZvb3RlciAucGFnaW5hdGlvbi1zaXple2Rpc3BsYXk6YmxvY2s7ZmxleDoxIDEgYXV0bzt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpyaWdodH0uZGF0''@;'; put 'put ''YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLXNpemUgLmNsci1wYWdlLXNpemUtc2VsZWN0e2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24t''@;'; put 'put ''Zm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxldHRlci1zcGFjaW5nKTttYXJnaW4tbGVmdDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXNwYWNlLTYpO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLWRlc2NyaXB0aW9ue3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9u''@;'; put 'put ''LWxpc3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZmxleDowIDAgYXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVt''@;'; put 'put ''bi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9ue21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpO3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7cGFkZGluZzp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1wYWRkaW5nKTtib3JkZXItY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtY29sb3IpO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLXRleHQtY29sb3IpO21hcmdp''@;'; put 'put ''bjowfS5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uLmRpc2FibGVkLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmRpc2FibGVkLC5kYXRhZ3JpZC1mb290ZXIg''@;'; put 'put ''LmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uLmRpc2FibGVkOmhvdmVyLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1zd2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uOmRpc2FibGVkOmhvdmVyLC5kYXRhZ3JpZC1mb290ZXIgLmNvbHVtbi1z''@;'; put 'put ''d2l0Y2gtd3JhcHBlciAuY29sdW1uLXRvZ2dsZS0tYWN0aW9uLmRpc2FibGVkOmFjdGl2ZSwuZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjpkaXNhYmxlZDphY3RpdmV7Y3Vyc29yOm5vdC1hbGxvd2VkO2JvcmRlci1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1kaXNhYmxlZC1jb2xvcik7Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZGlzYWJsZWQtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi10b2dnbGUtZmlsbC1jb2xvcil9''@;'; put 'put ''LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb246aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWJvcmRlci1ob3Zlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0''@;'; put 'put ''YWdyaWQtY29sdW1uLXRvZ2dsZS1maWxsLWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWhvdmVyLWNvbG9yKX0uZGF0YWdyaWQtZm9vdGVyIC5jb2x1bW4tc3dpdGNoLXdyYXBwZXIgLmNvbHVtbi10b2dnbGUtLWFjdGlvbjphY3RpdmUs''@;'; put 'put ''LmRhdGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb246Zm9jdXN7Ym94LXNoYWRvdzpub25lO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS1ib3JkZXItYWN0aXZlLWNvbG9yKTtiYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1jb2x1bW4tdG9nZ2xlLWZpbGwtYWN0aXZlLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10ZXh0LWFjdGl2ZS1jb2xvcil9LmRhdGFncmlkLWZvb3RlciAuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZHtkaXNwbGF5''@;'; put 'put ''OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxMDAlfS5jbHItZm9ybS1jb250cm9sLWRpc2FibGVkIC5kYXRhZ3JpZC1mb290ZXItc2VsZWN0LmNsci1jaGVja2JveC13cmFwcGVyIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQrbGFiZWx7Y3Vyc29yOmRlZmF1bHQ7bWFyZ2lu''@;'; put 'put ''LXJpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSl9LmNsci1mb3JtLWNvbnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbDpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2''@;'; put 'put ''YXIoLS1jbHItZm9ybXMtbGFiZWwtZGlzYWJsZWQtY29sb3IpfS5kYXRhZ3JpZC1zcGlubmVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMDAlO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNl''@;'; put 'put ''LTYpO2hlaWdodDpjYWxjKDEwMCUgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1sb2FkaW5nLWJhY2tncm91bmQpO3otaW5kZXg6NTkwfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1oZWFkZXJ7bWluLWhlaWdodDp2''@;'; put 'put ''YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1jb2x1bW4gLmRhdGFncmlkLWNvbHVtbi1zZXBhcmF0b3I6YWZ0ZXJ7aGVpZ2h0OmNhbGMoMTAwJSAtICguNSp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXNlcGFyYXRvci1leHBhbmRieSkpKX0u''@;'; put 'put ''ZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1zZWxlY3R7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWNlbGwgY2xyLWljb257bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3Bh''@;'; put 'put ''Y2UtMykgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTttYXJnaW4tYm90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoY2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFn''@;'; put 'put ''cmlkLWNlbGwgY2RzLWljb257bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMykgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKTttYXJnaW4tYm90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0zKSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFn''@;'; put 'put ''cmlkLWNlbGwgLmJhZGdle21hcmdpbi10b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpKTttYXJnaW4tYm90dG9tOmNhbGMoLTEqdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSl9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXR7dGV4dC1hbGln''@;'; put 'put ''bjpjZW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLnNwaW5uZXJ7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1leHBhbmRhYmxlLWNhcmV0IC5kYXRhZ3JpZC1leHBhbmRhYmxl''@;'; put 'put ''LWNhcmV0LWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lOy1vLWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZTtiYWNrZ3Jv''@;'; put 'put ''dW5kOjAgMDtoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO291dGxpbmUtb2Zmc2V0OnZhcigtLWNsci1kYXRhZ3JpZC1jb21wYWN0LW91dGxpbmUtb2Zmc2V0KX1idXR0b24uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQt''@;'; put 'put ''ZXhwYW5kYWJsZS1jYXJldCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC1idXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWNvbXBhY3QgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQgLmRhdGFncmlkLWV4cGFuZGFibGUtY2FyZXQtaWNvbnttYXJnaW46MH0uZGF0YWdyaWQtY29t''@;'; put 'put ''cGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jZWxse3BhZGRpbmc6MH0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZXhwYW5kYWJsZS1jYXJldC5kYXRhZ3JpZC1jb2x1bW57cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1jbHItdGFibGUtY29tcGFjdC12ZXJ0aWNh''@;'; put 'put ''bC1wYWRkaW5nKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpO3BhZGRpbmctYm90dG9tOnZhcigtLWNsci10YWJsZS1jb21wYWN0LXZlcnRpY2FsLXBhZGRpbmcpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1zaWducG9zdC10cmlnZ2VyIC5zaWducG9zdCAuc2lnbnBvc3QtdHJp''@;'; put 'put ''Z2dlciBjZHMtaWNvbjpub3QoW3NoYXBlPWluZm8tY2lyY2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tdHJpYW5nbGVdLFtzaGFwZT1leGNsYW1hdGlvbi1jaXJjbGVdLFtzaGFwZT1jaGVjay1jaXJjbGVdLFtzaGFwZT1pbmZvXSxbc2hhcGU9ZXJyb3JdKSwuZGF0YWdyaWQtY29tcGFjdCAuZGF0''@;'; put 'put ''YWdyaWQtc2lnbnBvc3QtdHJpZ2dlciAuc2lnbnBvc3QgLnNpZ25wb3N0LXRyaWdnZXIgY2xyLWljb246bm90KFtzaGFwZT1pbmZvLWNpcmNsZV0sW3NoYXBlPWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXSxbc2hhcGU9ZXhjbGFtYXRpb24tY2lyY2xlXSxbc2hhcGU9Y2hlY2stY2lyY2xlXSxbc2hh''@;'; put 'put ''cGU9aW5mb10sW3NoYXBlPWVycm9yXSl7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVye3BhZGRpbmc6MCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xpbmUt''@;'; put 'put ''aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSktdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKX0uZGF0YWdyaWQtY29tcGFjdCAuZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9ue2xpbmUtaGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9LmRhdGFncmlkLWNvbXBhY3QgLmRh''@;'; put 'put ''dGFncmlkLWZvb3RlciAuY29sdW1uLXN3aXRjaC13cmFwcGVyIC5jb2x1bW4tdG9nZ2xlLS1hY3Rpb257b3V0bGluZS1vZmZzZXQ6dmFyKC0tY2xyLWRhdGFncmlkLWNvbXBhY3Qtb3V0bGluZS1vZmZzZXQpfS5kYXRhZ3JpZC1jb21wYWN0IC5kYXRhZ3JpZC1mb290ZXIgLmNsci1mb3JtLWNv''@;'; put 'put ''bnRyb2wtZGlzYWJsZWQgLmRhdGFncmlkLWZvb3Rlci1zZWxlY3QuY2xyLWNoZWNrYm94LXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCtsYWJlbHt0b3A6MH0uZGF0YWdyaWQtZm9vdGVyLWRlc2NyaXB0aW9ue2ZsZXg6MSAxIGF1dG87ZmxleC13cmFwOm5vd3JhcDt3aGl0''@;'; put 'put ''ZS1zcGFjZTpub3dyYXA7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbjphdXRvIDB9LnBhZ2luYXRpb24tbGlzdHtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpyb3cgbm93cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6c3Ry''@;'; put 'put ''ZXRjaH0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWN1cnJlbnR7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNtYWxsY2FwdGlvbi1mb250LXdlaWdo''@;'; put 'put ''dCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc21hbGxjYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zbWFsbGNhcHRpb24tbGV0dGVyLXNwYWNpbmcpO2JhY2tncm91bmQ6MCAwO2JhY2tncm91bmQt''@;'; put 'put ''Y29sb3I6dmFyKC0tY2xyLWZvcm1zLXRleHRhcmVhLWJhY2tncm91bmQtY29sb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcGFnaW5hdGlvbi1pbnB1dC1ib3JkZXItY29sb3IpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDAp''@;'; put 'put ''O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LnBhZ2luYXRp''@;'; put 'put ''b24tbGlzdCAucGFnaW5hdGlvbi1jdXJyZW50OmZvY3VzLC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tY3VycmVudC5jbHItZm9jdXN7YmFja2dyb3VuZDowIDA7Ym9yZGVyOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLWRhdGFn''@;'; put 'put ''cmlkLXBhZ2luYXRpb24taW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yKX0ucGFnaW5hdGlvbi1saXN0Pip7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1maXJzdCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3Qs''@;'; put 'put ''LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91cywucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59LnBhZ2luYXRp''@;'; put 'put ''b24tbGlzdCAucGFnaW5hdGlvbi1maXJzdDpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWxhc3Q6ZGlzYWJsZWQsLnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1wcmV2aW91czpkaXNhYmxlZCwucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLW5leHQ6ZGlzYWJs''@;'; put 'put ''ZWR7Y29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kaXNhYmxlZCk7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6MX0ucGFnaW5hdGlvbi1saXN0IC5wYWdpbmF0aW9uLWZpcnN0LC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tcHJldmlvdXN7bWFyZ2luLXJpZ2h0OnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtc3BhY2UtNil9LnBhZ2luYXRpb24tbGlzdCAucGFnaW5hdGlvbi1sYXN0LC5wYWdpbmF0aW9uLWxpc3QgLnBhZ2luYXRpb24tbmV4dHttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpfS5wYWdpbmF0aW9uLWxpc3QgYnV0dG9uey13ZWJraXQtYXBwZWFyYW5j''@;'; put 'put ''ZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lOy1tcy1hcHBlYXJhbmNlOm5vbmU7LW8tYXBwZWFyYW5jZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2JhY2tncm91bmQ6MCAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3Jp''@;'; put 'put ''ZC1wYWdpbmF0aW9uLWJ0bi1jb2xvcik7Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uLnBhZ2luYXRpb24tbGlzdCBidXR0b257Y3Vyc29yOnBvaW50ZXJ9LmRhdGFncmlkLWNlbGwtd2lkdGgtemVyb3tib3JkZXI6MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDt3aWR0aDowO2ZsZXg6MCAw''@;'; put 'put ''IGF1dG8haW1wb3J0YW50O21pbi13aWR0aDowIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3RvcDowO2xlZnQ6MH0uZGF0YWdyaWQtb3V0ZXItd3JhcHBlcntkaXNwbGF5OmZs''@;'; put 'put ''ZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmF1dG99LmRhdGFncmlkLWlubmVyLXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTtvdmVyZmxvdzphdXRvO21pbi13aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWJhc2UpKSl9LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyIGRpdi5kYXRhZ3JpZC10YWJsZXttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW59LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRh''@;'; put 'put ''Z3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyPi5jZGstdmlydHVhbC1zY3JvbGxhYmxlIGRpdi5kYXRhZ3JpZC10YWJsZXtvdmVyZmxvdzp1bnNldH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4+LmRhdGFncmlkLW91dGVyLXdyYXBwZXI+LmRhdGFncmlkLWlubmVyLXdy''@;'; put 'put ''YXBwZXIgY2xyLWRnLWNlbGx7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVyIGNsci1kZy1jb2x1bW46Zmlyc3QtY2hpbGR7d2lkdGg6YXV0byFpbXBvcnRhbnR9LmRhdGFncmlk''@;'; put 'put ''LWRldGFpbC1vcGVuIC5kYXRhZ3JpZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1yaWdodDpub25lfS5kYXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtaW5uZXItd3JhcHBlcnt3aWR0aDozNCV9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1wbGFjZWhvbGRl''@;'; put 'put ''ci1jb250YWluZXIsLmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRhZ3JpZC1yb3d7Ym9yZGVyLXJpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQgdmFyKC0tY2xyLXRhYmxlLWJvcmRlci1jb2xvcil9LmRhdGFncmlkLWRldGFpbC1vcGVuIC5kYXRh''@;'; put 'put ''Z3JpZC1mb290ZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb257d2lkdGg6MTAwJX0uZGF0YWdyaWQtZGV0YWlsLW9wZW4gLnBhZ2luYXRpb24tZGVzY3JpcHRpb24tY29tcGFjdHt0ZXh0LWFsaWduOmxlZnQ7ZmxleDoxfS5k''@;'; put 'put ''YXRhZ3JpZC1kZXRhaWwtb3BlbiAuZGF0YWdyaWQtZm9vdGVyIC5wYWdpbmF0aW9uLWxpc3R7bWFyZ2luLXJpZ2h0OjB9LmRhdGFncmlkLXJvdy1kZXRhaWwtb3Blbntwb3NpdGlvbjpyZWxhdGl2ZX0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVuOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6''@;'; put 'put ''aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItdGFibGUtYm9yZGVyLWNvbG9yKTt0b3A6Y2FsYygxMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LWJhc2UpKSk7cmlnaHQ6MH0uZGF0YWdyaWQtcm93LWRldGFpbC1vcGVuOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LWNv''@;'; put 'put ''bG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yKTt0b3A6Y2FsYygxMSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uZGF0YWdyaWQtZGV0YWlsLXBhbmV7bWFyZ2luLXRvcDp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTYpO2JvcmRlci13aWR0aDp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcik7Ym9yZGVyLWxlZnQ6bm9u''@;'; put 'put ''ZTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3Jp''@;'; put 'put ''ZC1kZXRhaWwtcGFuZS1iZy1jb2xvcik7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7ZmxleC1ncm93OjI7d2lkdGg6NjYlfS5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MTAw''@;'; put 'put ''JTtwYWRkaW5nOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jb250ZW50LXBhZGRpbmcpfS5kYXRhZ3JpZC1kZXRhaWwtYm9keXtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KSAwO2NvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtYm9k''@;'; put 'put ''eS10ZXh0LWNvbG9yKX0uZGF0YWdyaWQtZGV0YWlsLWhlYWRlcntmbGV4OjAgMCBhdXRvO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1mb250LXdlaWdo''@;'; put 'put ''dCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7bWFyZ2luLXRvcDowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVj''@;'; put 'put ''dGlvbjpyb3d9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1oZWFkZXItdGl0bGV7ZmxleDoxIDEgYXV0bztjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLWhlYWRlci10aXRsZS1jb2xvcil9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRl''@;'; put 'put ''dGFpbC1wYW5lLWNsb3Nle2ZsZXg6MSAxIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWRldGFpbC1oZWFkZXIgLmRhdGFncmlkLWRldGFpbC1wYW5lLWNsb3NlIC5idG4uYnRuLWxpbmt7bWluLXdpZHRo''@;'; put 'put ''OmF1dG87bWFyZ2luOjA7cGFkZGluZy1yaWdodDowfS5kYXRhZ3JpZC1kZXRhaWwtaGVhZGVyIC5kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZSAuYnRuLmJ0bi1saW5rIGNkcy1pY29ue2hlaWdodDp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXplKTt3aWR0''@;'; put 'put ''aDp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXplKTttaW4taGVpZ2h0OnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1jbG9zZS1pY29uLXNpemUpO21pbi13aWR0aDp2YXIoLS1jbHItZGF0YWdyaWQtZGV0YWlsLXBhbmUtY2xvc2UtaWNvbi1zaXpl''@;'; put 'put ''KTtjb2xvcjp2YXIoLS1jbHItbW9kYWwtY2xvc2UtY29sb3IpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmRhdGFncmlkLWRldGFpbC1jYXJldC5kYXRhZ3JpZC1jZWxse3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0z''@;'; put 'put ''KSAwfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7LW1zLWFwcGVhcmFuY2U6bm9uZTstby1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRl''@;'; put 'put ''cjowO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7YmFja2dyb3VuZDowIDA7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1idXR0b24uZGF0YWdyaWQtZGV0YWlsLWNhcmV0IC5kYXRh''@;'; put 'put ''Z3JpZC1kZXRhaWwtY2FyZXQtYnV0dG9ue2N1cnNvcjpwb2ludGVyfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24uaXMtb3BlbntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtY2FyZXQtaWNvbi1vcGVuLWJnLWNv''@;'; put 'put ''bG9yKTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLmRhdGFncmlkLWRldGFpbC1jYXJldC1idXR0b24uaXMtb3BlbiAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb257Y29sb3I6dmFyKC0tY2xy''@;'; put 'put ''LWRhdGFncmlkLWRldGFpbC1jYXJldC1pY29uLW9wZW4taWNvbi1jb2xvcil9LmRhdGFncmlkLWRldGFpbC1jYXJldCAuZGF0YWdyaWQtZGV0YWlsLWNhcmV0LWljb257Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWljb24tY29sb3IpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQgLnNwaW5uZXJ7''@;'; put 'put ''bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTQpfS5kYXRhZ3JpZC1kZXRhaWwtY2FyZXQuZGF0YWdyaWQtY29sdW1ue3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLXRvcGNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtY2VsbHBhZGRpbmcpIHZhcigtLWNsci10YWJsZS1ib3R0''@;'; put 'put ''b21jZWxscGFkZGluZyl9LmRhdGFncmlkLWRldGFpbC1vdmVybGF5LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVye2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtZGV0YWlsLW92ZXJsYXkgLmRhdGFncmlkLWRldGFpbC1w''@;'; put 'put ''YW5le2JvcmRlci1sZWZ0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkgc29saWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1kZXRhaWwtcGFuZS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXIt''@;'; put 'put ''cmFkaXVzLTEwMCl9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo1NzZweCl7LmRhdGFncmlkLWRldGFpbC1vcGVuPi5kYXRhZ3JpZC1vdXRlci13cmFwcGVyPi5kYXRhZ3JpZC1pbm5lci13cmFwcGVye2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtZGV0YWlsLXBhbmV7Ym9yZGVyLWxlZnQ6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWRldGFpbC1wYW5lLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKX19LmNv''@;'; put 'put ''bHVtbi1zd2l0Y2h7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcik7Ym9yZGVyLXdp''@;'; put 'put ''ZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXJzLWJveC1zaGFk''@;'; put 'put ''b3cpO3dpZHRoOmNhbGMoMjUwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3otaW5kZXg6MTA1MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJl''@;'; put 'put ''dHdlZW47Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXN1YnNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1zdWJzZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWxldHRlci1zcGFjaW5nKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMSwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMiwuY29s''@;'; put 'put ''dW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoMywuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNCwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNSwuY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBoNntjb2xvcjp2YXIoLS1jbHItcDEtY29sb3IpO2ZvbnQtc2l6ZTp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zdWJzZWN0aW9uLWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1saW5l''@;'; put 'put ''LWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc3Vic2VjdGlvbi1sZXR0ZXItc3BhY2luZyk7bWFyZ2luOjB9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9ue21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpO21hcmdp''@;'; put 'put ''bjowO3BhZGRpbmc6MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWhlYWRlciBidXR0b24gY2RzLWljb257Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWNvbHVtbi1zd2l0Y2gtaGVhZGVyLWZvbnQtY29sb3IpfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtaGVhZGVyIGJ1dHRvbiBjZHMtaWNvbjpo''@;'; put 'put ''b3Zlcntjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFkZXItZm9udC1ob3Zlci1jb2xvcil9LmNvbHVtbi1zd2l0Y2ggLnN3aXRjaC1oZWFkZXIgYnV0dG9uIGNkcy1pY29uOmFjdGl2ZXtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtY29sdW1uLXN3aXRjaC1oZWFk''@;'; put 'put ''ZXItZm9udC1hY3RpdmUtY29sb3IpfS5jb2x1bW4tc3dpdGNoIC5zd2l0Y2gtY29udGVudHttYXgtaGVpZ2h0OmNhbGMoMzAwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtvdmVyZmxvdy15OmF1dG87bWluLWhlaWdodDpjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgKyB2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci13aWR0aC0xMDApKX0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWNvbnRlbnQgbGl7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtwYWRkaW5nLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uY29sdW1uLXN3aXRj''@;'; put 'put ''aCAuc3dpdGNoLWZvb3RlciAuYnRue21hcmdpbjowO3BhZGRpbmc6MH0uY29sdW1uLXN3aXRjaCAuc3dpdGNoLWZvb3RlciAuYWN0aW9uLXJpZ2h0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmRhdGFncmlkLWZpbHRlcnttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtMyk7YmFja2dyb3VuZDp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcik7Ym9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQt''@;'; put 'put ''cG9wb3Zlci1ib3JkZXItY29sb3IpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS04KTtib3gtc2hhZG93OnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVycy1ib3gtc2hhZG93KTtib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApO2Zv''@;'; put 'put ''bnQtd2VpZ2h0OjQwMH0uZGF0YWdyaWQtZmlsdGVyIC5kYXRhZ3JpZC1maWx0ZXItY2xvc2Utd3JhcHBlcnt0ZXh0LWFsaWduOnJpZ2h0fS5kYXRhZ3JpZC1maWx0ZXIgLmRhdGFncmlkLWZpbHRlci1jbG9zZS13cmFwcGVyIC5jbG9zZXtmbG9hdDpub25lfS5kYXRhZ3JpZC1maWx0ZXIgLmRh''@;'; put 'put ''dGFncmlkLWZpbHRlci1hcHBseXttYXJnaW4tYm90dG9tOjB9LmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvd3twb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJnLWNvbG9yKTtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7bWFy''@;'; put 'put ''Z2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci1kYXRhZ3JpZC1wb3BvdmVyLWJvcmRlci1jb2xvcik7Ym94''@;'; put 'put ''LXNoYWRvdzp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3ZlcnMtYm94LXNoYWRvdyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6''@;'; put 'put ''YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxMDAlO2hlaWdodDowO3dpZHRoOjA7bWFyZ2luLXRvcDpjYWxjKC0xKnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6ZSkpO2JvcmRlci10b3A6dmFyKC0tY2xyLWRhdGFncmlkLWFjdGlv''@;'; put 'put ''bi1hcnJvdy1zaXplKSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6ZSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0LXdpZHRoOnZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6ZSk7Ym9yZGVy''@;'; put 'put ''LXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1ib3JkZXItY29sb3IpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3c6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjEwMCU7aGVpZ2h0''@;'; put 'put ''OjA7d2lkdGg6MDttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi1hcnJvdy1zaXplKSArIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpO2JvcmRlci10b3A6Y2FsYyh2YXIoLS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemUpIC0gdmFyKC0tY2RzLWds''@;'; put 'put ''b2JhbC1zcGFjZS0xKSkgc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTpjYWxjKHZhcigtLWNsci1kYXRhZ3JpZC1hY3Rpb24tYXJyb3ctc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKSBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtd2lkdGg6Y2FsYyh2YXIo''@;'; put 'put ''LS1jbHItZGF0YWdyaWQtYWN0aW9uLWFycm93LXNpemUpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSk7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcG9wb3Zlci1iZy1jb2xvcil9LmRhdGFncmlkLWFjdGlvbi1vdmVy''@;'; put 'put ''ZmxvdyAuYWN0aW9uLWl0ZW17Y29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLXBvcG92ZXItZm9udC1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29u''@;'; put 'put ''ZGFyeS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rp''@;'; put 'put ''c3BsYXk6YmxvY2s7bWFyZ2luOjA7cGFkZGluZzowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgMCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3RleHQtYWxpZ246bGVmdDt3aWR0aDoxMDAlfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmhvdmVyLC5kYXRhZ3Jp''@;'; put 'put ''ZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWRhdGFncmlkLWFjdGlvbi1wb3BvdmVyLWhvdmVyLWNvbG9yKX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5hY3Rp''@;'; put 'put ''dmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWNvbG9yKTtjb2xvcjp2YXIoLS1jbHItZGF0YWdyaWQtcm93LWhvdmVyLWZvbnQtY29sb3IpfS5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmZvY3Vze291dGxpbmU6MH0uZGF0YWdy''@;'; put 'put ''aWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZCwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZGF0''@;'; put 'put ''YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxlZDpob3ZlciwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbTpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMH0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbS5kaXNhYmxl''@;'; put 'put ''ZDphY3RpdmUsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW0uZGlzYWJsZWQ6Zm9jdXMsLmRhdGFncmlkLWFjdGlvbi1vdmVyZmxvdyAuYWN0aW9uLWl0ZW06ZGlzYWJsZWQ6YWN0aXZlLC5kYXRhZ3JpZC1hY3Rpb24tb3ZlcmZsb3cgLmFjdGlvbi1pdGVtOmRpc2FibGVk''@;'; put 'put ''OmZvY3Vze2JhY2tncm91bmQ6MCAwO2JveC1zaGFkb3c6bm9uZX0uZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjZHMtaWNvbiwuZGF0YWdyaWQtYWN0aW9uLW92ZXJmbG93IC5hY3Rpb24taXRlbSBjbHItaWNvbnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dHJhbnNmb3Jt''@;'; put 'put ''OnRyYW5zbGF0ZTNkKDAsY2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKSwwKX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZXtkaXNwbGF5OmJsb2NrfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZCwuZGF0YWdyaWQt''@;'; put 'put ''aG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtZm9vdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctbWFzdGVyLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1yb3ctY2xpY2th''@;'; put 'put ''Ymxle2Rpc3BsYXk6bm9uZX0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGV7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6YXV0b30uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQt''@;'; put 'put ''Y2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhlYWRlcntkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH0uZGF0YWdyaWQtaG9zdC5kYXRhZ3JpZC1jYWxjdWxhdGUtbW9kZSAuZGF0YWdyaWQtY2FsY3VsYXRpb24tdGFibGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLWhl''@;'; put 'put ''YWRlciAuZGF0YWdyaWQtY29sdW1ue2Rpc3BsYXk6dGFibGUtY2VsbDttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNSl9LmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlkLWNhbGN1bGF0aW9uLXRhYmxlIC5kYXRhZ3JpZC1jYWxjdWxhdGlv''@;'; put 'put ''bi1oZWFkZXIgLmRhdGFncmlkLWNvbHVtbntib3JkZXItY29sb3I6dmFyKC0tY2xyLXRhYmxlcm93LWJvcmRlcmNvbG9yKTtib3JkZXItd2lkdGg6dmFyKC0tY2xyLXRhYmxlLWJvcmRlcndpZHRoKTtib3JkZXItc3R5bGU6c29saWQ7cGFkZGluZzp2YXIoLS1jbHItdGFibGUtdG9wY2VsbHBh''@;'; put 'put ''ZGRpbmcpIHZhcigtLWNsci10YWJsZS1jZWxscGFkZGluZykgdmFyKC0tY2xyLXRhYmxlLWJvdHRvbWNlbGxwYWRkaW5nKTt2ZXJ0aWNhbC1hbGlnbjp0b3A7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxldHRlci1zcGFjaW5n''@;'; put 'put ''KTttYXJnaW4tdG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7bWFyZ2luLWJvdHRvbTowfS5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtcm93e2Rpc3BsYXk6dGFibGUtcm93fS5kYXRhZ3JpZC1o''@;'; put 'put ''b3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jYWxjdWxhdGlvbi10YWJsZSAuZGF0YWdyaWQtcm93IC5kYXRhZ3JpZC1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbDttaW4td2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xNSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlh''@;'; put 'put ''cy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO2xldHRlci1zcGFjaW5nOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5''@;'; put 'put ''LWJvZHktbGV0dGVyLXNwYWNpbmcpO3BhZGRpbmc6dmFyKC0tY2xyLXRhYmxlLXRvcGNlbGxwYWRkaW5nKSB2YXIoLS1jbHItdGFibGUtY2VsbHBhZGRpbmcpIHZhcigtLWNsci10YWJsZS1ib3R0b21jZWxscGFkZGluZyk7dmVydGljYWwtYWxpZ246dG9wfS5kYXRhZ3JpZC1ob3N0LmRhdGFn''@;'; put 'put ''cmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1jb2x1bW4tc2VwYXJhdG9yLC5kYXRhZ3JpZC1ob3N0LmRhdGFncmlkLWNhbGN1bGF0ZS1tb2RlIC5kYXRhZ3JpZC1wbGFjZWhvbGRlci1jb250YWluZXIsLmRhdGFncmlkLWhvc3QuZGF0YWdyaWQtY2FsY3VsYXRlLW1vZGUgLmRhdGFncmlk''@;'; put 'put ''LWZpeGVkLWNvbHVtbntkaXNwbGF5Om5vbmV9LmZhZGV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZS1pbi1vdXQ7d2lsbC1jaGFuZ2U6b3BhY2l0eX0uZmFkZS5pbntvcGFjaXR5OjF9LmZhZGVEb3due29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKTt0''@;'; put 'put ''cmFuc2l0aW9uOm9wYWNpdHkgLjJzIGVhc2UtaW4tb3V0LHRyYW5zZm9ybSAuMnMgZWFzZS1pbi1vdXQ7d2lsbC1jaGFuZ2U6b3BhY2l0eSx0cmFuc2Zvcm19LmZhZGVEb3duLmlue29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfTpyb290IFtjZHMtdGhlbWVdey0tY2xyLXdpemFy''@;'; put 'put ''ZC1kZWZhdWx0LXNwYWNlOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7LS1jbHItd2l6YXJkLW1haW4tYmdjb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LW92ZXJsYXktYmFja2dyb3VuZCk7LS1jbHItd2l6YXJkLW1haW4tdGV4dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBo''@;'; put 'put ''eS1jb2xvci00MDApOy0tY2xyLXdpemFyZC1zdGVwbmF2LWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kKTstLWNsci13aXphcmQtc3RlcG5hdi10ZXh0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQwMCk7LS1jbHItd2l6YXJk''@;'; put 'put ''LXN0ZXBuYXYtdGV4dC0tYWN0aXZlOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tY29sb3Itc2VsZWN0ZWQpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0tYm9yZGVyLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtbmV1dHJhbC10aW50KTstLWNsci13aXphcmQtc3Rl''@;'; put 'put ''cG5hdi1ib3JkZXItc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0tYm9yZGVyLWNvbG9yLS1hY3RpdmU6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1zdWNjZXNzKTstLWNsci13aXphcmQtc3RlcG5hdi1hY3RpdmUtYmdjb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQpOy0tY2xyLXdpemFyZC1zdGVwbmF2LXNlbGVjdGVkLWJnY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWFjdGl2ZS1iZ2NvbG9yKTstLWNsci13aXphcmQtc3RlcG5hdi1zZWxlY3RlZC1ob3Zlci1i''@;'; put 'put ''Z2NvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZC1ob3Zlcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtc2VsZWN0ZWQtYWN0aXZlLWJnY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVj''@;'; put 'put ''dGVkLWFjdGl2ZSk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1lcnJvci1pY29uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYm9yZGVyLWNvbG9y''@;'; put 'put ''KTstLWNsci13aXphcmQtc3RlcG5hdi1saW5rLWhvdmVyLWJnLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1hY3RpdmUtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRl''@;'; put 'put ''cmFjdGlvbi1iYWNrZ3JvdW5kLWFjdGl2ZSk7LS1jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1wYWRkaW5nOmNhbGModmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAtIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkpOy0tY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0tZXJyb3ItYm9yZGVyLWNvbG9y''@;'; put 'put ''OnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtZGFuZ2VyKTstLWNsci13aXphcmQtdGl0bGUtdGV4dDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXdpemFyZC1mb290ZXItaGVpZ2h0OmF1dG87LS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvcik7LS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3ItLWhvdmVyZWQ6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcik7LS1jbHItd2l6YXJkLWJveC1zaGFkb3c6dmFyKC0tY2RzLWFsaWFz''@;'; put 'put ''LW9iamVjdC1zaGFkb3ctMzAwKTstLWNsci13aXphcmQtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci13aXphcmQtY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJhY2tn''@;'; put 'put ''cm91bmQpfS5jbHItd2l6YXJkIC5tb2RhbC1kaWFsb2d7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNoYWRvdzp2YXIoLS1jbHItd2l6YXJkLWJveC1zaGFkb3cpO2hlaWdodDo1MCU7bWF4LWhlaWdodDoxMDAlfS5jbHItd2l6YXJk''@;'; put 'put ''IC5tb2RhbC1jb250ZW50e2JvcmRlci1yYWRpdXM6MCB2YXIoLS1jbHItd2l6YXJkLWJvcmRlci1yYWRpdXMpIHZhcigtLWNsci13aXphcmQtYm9yZGVyLXJhZGl1cykgMDtib3gtc2hhZG93Om5vbmU7cGFkZGluZzp2YXIoLS1jbHItd2l6YXJkLWRlZmF1bHQtc3BhY2UpO2ZsZXg6MiAyIGF1''@;'; put 'put ''dG87d2lkdGg6NjYlO2hlaWdodDppbml0aWFsO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSl9LmNsci13aXphcmQgLm1vZGFsLWhlYWRlci0t''@;'; put 'put ''YWNjZXNzaWJsZXtmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCU7cGFkZGluZzowfS5jbHItd2l6YXJkIC5tb2RhbC10aXRsZXtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLXRpdGxlLXRleHQpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAubW9k''@;'; put 'put ''YWwtYm9keXtmbGV4OjEgMSBhdXRvO2NvbG9yOnZhcigtLWNsci13aXphcmQtbWFpbi10ZXh0LWNvbG9yKTt3aWR0aDoxMDAlfS5jbHItd2l6YXJkIC5tb2RhbC1mb290ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2ZsZXg6MCAwIHZhcigtLWNsci13aXphcmQtZm9vdGVyLWhlaWdodCk7''@;'; put 'put ''aGVpZ2h0OnZhcigtLWNsci13aXphcmQtZm9vdGVyLWhlaWdodCk7bWluLWhlaWdodDp2YXIoLS1jbHItd2l6YXJkLWZvb3Rlci1oZWlnaHQpO21heC1oZWlnaHQ6dmFyKC0tY2xyLXdpemFyZC1mb290ZXItaGVpZ2h0KTtwYWRkaW5nOjB9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRue21h''@;'; put 'put ''cmdpbjowO21heC13aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQgLm1vZGFsLXRpdGxlLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleDowIDEgYXV0bzt3aWR0aDoxMDAlO291dGxpbmU6MH0uY2xyLXdpemFyZCAubW9kYWwtdGl0bGUtd3JhcHBlcnt3aWR0aDoxMDAl''@;'; put 'put ''fS5jbHItd2l6YXJkIC5tb2RhbC1oZWFkZXItYWN0aW9ucy13cmFwcGVye2ZsZXg6MSAwIGF1dG87aGVpZ2h0OnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7cGFkZGluZy1sZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNik7cGFkZGluZy1yaWdodDp2YXIoLS1jZHMtZ2xvYmFs''@;'; put 'put ''LXNwYWNlLTMpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24td3JhcHBlcntkaXNwbGF5OmlubGluZS1mbGV4fS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257aGVpZ2h0OnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7d2lkdGg6dmFyKC0t''@;'; put 'put ''Y2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlKTtib3JkZXI6MDtwYWRkaW5nOjA7bWFyZ2luOjA7bWluLXdpZHRoOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7bGluZS1oZWlnaHQ6dmFyKC0tY2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlKTtmb250LXNpemU6dmFyKC0tY2xyLXdpemFy''@;'; put 'put ''ZC1kZWZhdWx0LXNwYWNlKTtjb2xvcjp2YXIoLS1jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24tY29sb3IpO3RyYW5zaXRpb246Y29sb3IgbGluZWFyIC4yc30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uIGF7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1oZWFkZXItYWN0aW9u''@;'; put 'put ''LWNvbG9yKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uOmhvdmVyLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb246YWN0aXZlLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb246Zm9jdXN7Y29sb3I6dmFyKC0tY2xyLXdpemFyZC1o''@;'; put 'put ''ZWFkZXItYWN0aW9uLWNvbG9yLS1ob3ZlcmVkKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1oZWFkZXItYWN0aW9uIGNkcy1pY29uLC5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb24gY2xyLWljb257aGVpZ2h0OnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7d2lk''@;'; put 'put ''dGg6dmFyKC0tY2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXJ7ZmxleDoxIDEgYXV0bztoZWlnaHQ6MTAwJTt3aWR0aDozNCU7bWF4LXdpZHRoOjM0JTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO29yZGVy''@;'; put 'put ''Oi0xO292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1nbG9iYWwtYm9yZGVyd2lkdGgpIHNvbGlkIHZhcigtLWNsci13aXphcmQtc3RlcG5hdi1ib3JkZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2''@;'; put 'put ''LWJnY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKSAwIDAgdmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2e3BhZGRpbmc6MCAwIHZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFj''@;'; put 'put ''ZSkgdmFyKC0tY2xyLXdpemFyZC1kZWZhdWx0LXNwYWNlKTtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi10ZXh0KTt3aWR0aDoxMDAlO2ZsZXg6MSAxIGF1dG99LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saXN0e2Rpc3BsYXk6YmxvY2s7Ym94''@;'; put 'put ''LXNoYWRvdzpub25lO2NvdW50ZXItcmVzZXQ6YTt3aGl0ZS1zcGFjZTpub3dyYXA7aGVpZ2h0OmF1dG87bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjA7d2lkdGg6MTAwJX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW17ZGlzcGxheTpibG9jaztib3JkZXItbGVmdDp2''@;'; put 'put ''YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtYm9yZGVyLXNpemUpIHNvbGlkIHZhcigtLWNsci13aXphcmQtc3RlcG5hdi1pdGVtLWJvcmRlci1jb2xvcik7bWFyZ2luOjAgMCBjYWxjKC0xKnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTEwMCkpIDA7cGFkZGluZzp2YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLXNwYWNlLTQpIDAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS00KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTMpO2NvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi10ZXh0KX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uYWN0aXZle2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci13aXphcmQtc3RlcG5hdi10ZXh0LS1hY3RpdmUpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS5hY3RpdmUgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2NvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi10ZXh0LS1hY3RpdmUpO2JhY2tncm91bmQtY29sb3I6''@;'; put 'put ''dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LXNlbGVjdGVkLWJnY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKSAwIDAgdmFyKC0tY2xyLXdpemFyZC1ib3JkZXItcmFkaXVzKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW06bm90''@;'; put 'put ''KC5kaXNhYmxlZCk6aG92ZXIgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2NvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi10ZXh0LS1hY3RpdmUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstaG92ZXItYmctY29sb3IpfS5jbHItd2l6YXJkIC5j''@;'; put 'put ''bHItd2l6YXJkLXN0ZXBuYXYtaXRlbTpub3QoLmRpc2FibGVkKTpob3Zlci5hY3RpdmUgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LXNlbGVjdGVkLWhvdmVyLWJnY29sb3IpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJk''@;'; put 'put ''LXN0ZXBuYXYtaXRlbTpub3QoLmRpc2FibGVkKTphY3RpdmUgLmNsci13aXphcmQtc3RlcG5hdi1saW5re2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstYWN0aXZlLWJnLWNvbG9yKX0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW06bm90''@;'; put 'put ''KC5kaXNhYmxlZCk6YWN0aXZlLmFjdGl2ZSAuY2xyLXdpemFyZC1zdGVwbmF2LWxpbmt7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItd2l6YXJkLXN0ZXBuYXYtc2VsZWN0ZWQtYWN0aXZlLWJnY29sb3IpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbSAuY2xyLXdpemFy''@;'; put 'put ''ZC1zdGVwbmF2LWxpbmstdGl0bGV7d29yZC1icmVhazpicmVhay13b3JkO3doaXRlLXNwYWNlOm5vcm1hbH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uY29tcGxldGV7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1pdGVtLWJvcmRlci1jb2xvci0t''@;'; put 'put ''YWN0aXZlKTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMnMgZWFzZS1pbn0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1zdGVwbmF2LWl0ZW0uZXJyb3J7Ym9yZGVyLWNvbG9yOnZhcigtLWNsci13aXphcmQtc3RlcG5hdi1pdGVtLWVycm9yLWJvcmRlci1jb2xvcik7dHJhbnNpdGlvbjpib3Jk''@;'; put 'put ''ZXItY29sb3IgLjJzIGVhc2UtaW59LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1pdGVtLm5vLWNsaWNrIGJ1dHRvbntwb2ludGVyLWV2ZW50czpub25lfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGlua3t3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDtwbGFjZS1jb250''@;'; put 'put ''ZW50Om5vcm1hbDtnYXA6MDtjb2xvcjppbmhlcml0O2FsaWduLWl0ZW1zOmNlbnRlcjt0ZXh0LWFsaWduOmxlZnQ7dGV4dC10cmFuc2Zvcm06bm9uZTttYXJnaW46MDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSk7aGVpZ2h0OmF1dG87bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTExKTttYXgtd2lkdGg6aW5oZXJpdDtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSk7bGluZS1oZWlnaHQ6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyl9LmNsci13aXphcmQgLmNsci13aXphcmQtc3RlcG5hdi1saW5rIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluay1zdWZm''@;'; put 'put ''aXh7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7cGFkZGluZy1yaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItd2l6YXJkIC5jbHItd2l6YXJkLXN0ZXBuYXYtbGluayAuY2xyLXdpemFyZC1z''@;'; put 'put ''dGVwbmF2LWxpbmstc3VmZml4IC5jbHItd2l6YXJkLXN0ZXBuYXYtaXRlbS1lcnJvci1pY29ue3RyYW5zZm9ybTpub25lO2ZpbGw6dmFyKC0tY2xyLXdpemFyZC1zdGVwbmF2LWxpbmstZXJyb3ItaWNvbi1jb2xvcil9LmNsci13aXphcmQgLmNsci13aXphcmQtdGl0bGV7bWFyZ2luLXRvcDow''@;'; put 'put ''O2ZsZXg6MCAwIGF1dG87Y29sb3I6dmFyKC0tY2xyLXdpemFyZC10aXRsZS10ZXh0KTtwYWRkaW5nOnZhcigtLWNsci13aXphcmQtZGVmYXVsdC1zcGFjZSk7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY3Rpb24tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWN0aW9uLWxldHRlci1zcGFjaW5n''@;'; put 'put ''KX0uY2xyLXdpemFyZCAubW9kYWwtY29udGVudC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleDoxIDEgMTAwJTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2xyLXdpemFyZCAubW9kYWwtY29udGVudC13cmFwcGVyIC5tb2RhbC1u''@;'; put 'put ''YXZ7aGVpZ2h0OmF1dG99LmNsci13aXphcmQgLmNsci13aXphcmQtZm9vdGVyLWJ1dHRvbnN7dGV4dC1hbGlnbjpyaWdodDttYXJnaW46MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1mb290ZXItYnV0dG9ucy13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13''@;'; put 'put ''cmFwOm5vd3JhcDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyl9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLXdyYXBwZXJ7ZmxleDowIDEgYXV0b30uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1idG4td3JhcHBlclthcmlhLWhpZGRlbj10''@;'; put 'put ''cnVlXXtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQgLmNsci13aXphcmQtYnRuLmJ0bi1saW5re3BhZGRpbmc6MH0uY2xyLXdpemFyZCAuY2xyLXdpemFyZC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQgLmNsci13aXphcmQtcGFnZTpub3QoW2FyaWEtaGlkZGVuPXRydWVdKXtk''@;'; put 'put ''aXNwbGF5OmJsb2NrfS5jbHItd2l6YXJkIC5tb2RhbC1kaWFsb2d7aGVpZ2h0Ojc1dmh9LmNsci13aXphcmQgLm1vZGFsLWJvZHktd3JhcHBlcnttYXgtaGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO3dpZHRoOjEwMCU7cGFkZGluZy10b3A6dmFyKC0tY2RzLWdsb2JhbC1z''@;'; put 'put ''cGFjZS02KX0uY2xyLXdpemFyZC53aXphcmQtbWQgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OmNhbGMoNDIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtaGVpZ2h0OmNhbGMoNTA0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQt''@;'; put 'put ''bWQgLm1vZGFsLWNvbnRlbnQsLmNsci13aXphcmQud2l6YXJkLW1kIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttYXgtaGVpZ2h0OmNhbGMoNTA0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQtbWQgLmNsci13aXphcmQtc3RlcG5hdi13cmFw''@;'; put 'put ''cGVye21pbi13aWR0aDpjYWxjKDIxNiooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm1vZGFsLWRpYWxvZ3ttaW4taGVpZ2h0OmNhbGMoNDIwKigxcmVt''@;'; put 'put ''L3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttYXgtaGVpZ2h0OmNhbGMoNzIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm1vZGFsLWNvbnRlbnQsLmNsci13aXphcmQud2l6YXJkLWxnIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcntt''@;'; put 'put ''YXgtaGVpZ2h0OmNhbGMoNzIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQtbGcgLm5hdi1wYW5lbCwuY2xyLXdpemFyZC53aXphcmQtbGcgLmNsci13aXphcmQtc3RlcG5hdi13cmFwcGVye21pbi13aWR0aDpjYWxjKDI0MCooMXJlbS92YXIoLS1j''@;'; put 'put ''ZHMtZ2xvYmFsLWJhc2UpKSk7bWF4LXdpZHRoOmNhbGMoMjg4KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX0uY2xyLXdpemFyZC53aXphcmQteGwgLm1vZGFsLWRpYWxvZ3toZWlnaHQ6NzV2aDttYXgtaGVpZ2h0Om5vbmV9LmNsci13aXphcmQud2l6YXJkLXhsIC5uYXYtcGFuZWws''@;'; put 'put ''LmNsci13aXphcmQud2l6YXJkLXhsIC5jbHItd2l6YXJkLXN0ZXBuYXYtd3JhcHBlcnttaW4td2lkdGg6Y2FsYygyNDAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDMyMCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9LmNsci13aXphcmQgLnNw''@;'; put 'put ''aW5uZXI6bm90KC5zcGlubmVyLWlubGluZSk6bm90KC5jbHItdHJlZW5vZGUtc3Bpbm5lcil7bGVmdDpjYWxjKDUwJSArIGNhbGMoMTE1KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKSk7cG9zaXRpb246YWJzb2x1dGU7dG9wOjQwJX0uY2xyLXdpemFyZC1wYWdlPjpmaXJzdC1jaGls''@;'; put 'put ''ZHttYXJnaW4tdG9wOjB9LmNsci13aXphcmQtcGFnZT46Zmlyc3QtY2hpbGQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uY2xyLXdpemFyZC1wYWdlPmZvcm06Zmlyc3QtY2hpbGR7cGFkZGluZy10b3A6MH0uY2xyLXdpemFyZC1wYWdlPmZvcm06Zmlyc3QtY2hpbGQ+LmZvcm0tYmxvY2s6''@;'; put 'put ''Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5jbHItd2l6YXJkLS1pbmxpbmV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmU+Y2xyLW1vZGFsPi5tb2RhbDpmb2N1c3tvdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1jb2xvcjp0cmFuc3BhcmVudH0uY2xyLXdp''@;'; put 'put ''emFyZC0taW5saW5lIGNsci1tb2RhbHtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2t9LmNsci13aXphcmQtLWlubGluZSAubW9kYWx7cGFkZGluZzowO3Bvc2l0aW9uOnN0YXRpYztoZWlnaHQ6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAubW9k''@;'; put 'put ''YWwgLmNvbnRlbnQtY29udGFpbmVye2hlaWdodDoxMDAlfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5jb250ZW50LWNvbnRhaW5lciAubmF2LXBhbmVse2hlaWdodDo5OSU7d2lkdGg6OTklfS5jbHItd2l6YXJkLS1pbmxpbmUgLm1vZGFsIC5tb2RhbC1jb250ZW50e2JveC1zaGFkb3c6''@;'; put 'put ''bm9uZX0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbCAubW9kYWwtZGlhbG9ne21pbi1oZWlnaHQ6MTAwJTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3otaW5kZXg6YXV0b30uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1ib2R5LXdyYXBwZXJ7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlu''@;'; put 'put ''bGluZSAubW9kYWwtaGVhZGVyIC5jbG9zZXtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQtLWlubGluZSAubmF2Lm5hdkxpc3R7cGFkZGluZy10b3A6MH0uY2xyLXdpemFyZC0taW5saW5lIC5tb2RhbC1kaWFsb2cgLm1vZGFsLWNvbnRlbnQgLm1vZGFsLWJvZHkgLmNvbnRlbnQtYXJlYXtvdmVy''@;'; put 'put ''Zmxvdy15OmF1dG99LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtYmFja2Ryb3B7aGVpZ2h0OjA7d2lkdGg6MDtkaXNwbGF5Om5vbmV9LmNsci13aXphcmQtLWlubGluZSAubW9kYWwtY29udGVudC13cmFwcGVye2FsaWduLWl0ZW1zOnN0cmV0Y2g7aGVpZ2h0OjEwMCV9LmNsci13aXphcmQt''@;'; put 'put ''LWlubGluZSAuY2xyLXdpemFyZC1zdGVwbmF2LXdyYXBwZXIsLmNsci13aXphcmQtLWlubGluZS5jbHItd2l6YXJkIC5tb2RhbC1jb250ZW50e21pbi1oZWlnaHQ6MTAwJTtoZWlnaHQ6YXV0bzttYXgtaGVpZ2h0OjEwMCV9LmNsci13aXphcmQtLWlubGluZSAuY2xyLXdpemFyZC1zdGVwbmF2''@;'; put 'put ''LXdyYXBwZXIgLmNsci13aXphcmQtc3RlcG5hdiwuY2xyLXdpemFyZC0taW5saW5lLmNsci13aXphcmQgLm1vZGFsLWNvbnRlbnQgLmNsci13aXphcmQtc3RlcG5hdntoZWlnaHQ6MTAwJX0uY2xyLXdpemFyZC0tbm8tc2hhZG93IC5tb2RhbC1jb250ZW50LXdyYXBwZXIsLmNsci13aXphcmQt''@;'; put 'put ''LW5vLXNoYWRvdyAubW9kYWwtZGlhbG9ne2JveC1zaGFkb3c6bm9uZX0uY2xyLXdpemFyZC0tbm8tdGl0bGUgLmNsci13aXphcmQtdGl0bGV7ZGlzcGxheTpub25lfS5jbHItd2l6YXJkLS1uby10aXRsZSAuY2xyLXdpemFyZC1zdGVwbmF2e3BhZGRpbmctdG9wOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtOSl9QG1lZGlhIHNjcmVlbnsuY2xyLXdpemFyZC1wYWdlW2FyaWEtaGlkZGVuPXRydWVde2Rpc3BsYXk6bm9uZX19QHN1cHBvcnRzICgtbXMtaW1lLWFsaWduOmF1dG8pey5jbHItd2l6YXJkIC5jbHItd2l6YXJkLWhlYWRlci1hY3Rpb257bWFyZ2luLXRvcDpjYWxjKC0zKigxcmVt''@;'; put 'put ''L3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX19OnJvb3QgW2Nkcy10aGVtZV17LS1jbHItc2lnbnBvc3QtY29udGVudC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVj''@;'; put 'put ''dC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1ib3JkZXItY29sb3IpOy0tY2xyLXNpZ25wb3N0LWFjdGlvbi1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVy''@;'; put 'put ''YWN0aW9uLWNvbG9yKTstLWNsci1zaWducG9zdC1hY3Rpb24taG92ZXItY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1ob3Zlcik7LS1jbHItc2lnbnBvc3QtYWN0aW9uLWFjdGl2ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9u''@;'; put 'put ''LWNvbG9yLWFjdGl2ZSk7LS1jbHItc2lnbnBvc3QtYm9yZGVyLXJhZGl1czp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWJvcmRlci1yYWRpdXMtMTAwKTstLWNsci1zaWducG9zdC1wb2ludGVyLXNpemU6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS02KTstLWNsci1zaWducG9zdC1wb2ludGVyLWJv''@;'; put 'put ''cmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKSBzb2xpZCB2YXIoLS1jbHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3IpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcjp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKSBzb2xpZCB0''@;'; put 'put ''cmFuc3BhcmVudDstLWNsci1zaWducG9zdC1wb2ludGVyLXBzZXVkby1ib3JkZXI6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItc2l6ZSkgc29saWQgdmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3IpOy0tY2xyLXNpZ25wb3N0LXBvaW50ZXItcHN1ZWRvLWJvcmRlcjp2YXIo''@;'; put 'put ''LS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc2V1ZG8tYm9yZGVyKTstLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1zaXplKX0uc2lnbnBvc3R7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNpZ25wb3N0OmhvdmVye2N1cnNvcjpwb2ludGVyfS5zaWdu''@;'; put 'put ''cG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2Upe21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXItd2lkdGg6MDtjb2xvcjp2YXIoLS1jbHItc2lnbnBvc3QtYWN0aW9uLWNvbG9yKX0uc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKSBjZHMtaWNvbiwuc2lnbnBvc3Qg''@;'; put 'put ''LnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKSBjbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTkpO2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24tY29sb3IpfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0''@;'; put 'put ''aW9uOm5vdCguY2xvc2UpIGNkcy1pY29uOmhvdmVyLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpIGNsci1pY29uOmhvdmVyLC5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpOmhvdmVye2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24taG92''@;'; put 'put ''ZXItY29sb3IpfS5zaWducG9zdCAuc2lnbnBvc3QtYWN0aW9uOm5vdCguY2xvc2UpLmFjdGl2ZSBjZHMtaWNvbiwuc2lnbnBvc3QgLnNpZ25wb3N0LWFjdGlvbjpub3QoLmNsb3NlKS5hY3RpdmUgY2xyLWljb24sLnNpZ25wb3N0IC5zaWducG9zdC1hY3Rpb246bm90KC5jbG9zZSkuYWN0aXZl''@;'; put 'put ''e2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1hY3Rpb24tYWN0aXZlLWNvbG9yKX0uc2lnbnBvc3QgLnNpZ25wb3N0LWNvbnRlbnQtaGVhZGVyIGJ1dHRvbntsaW5lLWhlaWdodDowO2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2Ut''@;'; put 'put ''Nyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIgYnV0dG9uIGNkcy1pY29uLC5zaWducG9zdCAuc2lnbnBvc3QtY29udGVudC1oZWFkZXIgYnV0''@;'; put 'put ''dG9uIGNsci1pY29ue2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5zaWducG9zdC10cmln''@;'; put 'put ''Z2Vye21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWZsZXh9LnNpZ25wb3N0LWNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDttaW4td2lkdGg6Y2FsYygyMTYqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpO21heC13aWR0aDpjYWxjKDM2MCooMXJlbS92YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLWJhc2UpKSk7bWluLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEyKTttYXgtaGVpZ2h0OmNhbGMoNTA0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjEwNTB9LnNpZ25wb3N0''@;'; put 'put ''LWNvbnRlbnQ6aG92ZXJ7Y3Vyc29yOmRlZmF1bHR9LnNpZ25wb3N0LWNvbnRlbnQgLnBvcG92ZXItcG9pbnRlcntoZWlnaHQ6MDt3aWR0aDowO3Bvc2l0aW9uOmFic29sdXRlfS5zaWducG9zdC1jb250ZW50IC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IiI7aGVpZ2h0OjA7d2lk''@;'; put 'put ''dGg6MDtwb3NpdGlvbjphYnNvbHV0ZX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXIt''@;'; put 'put ''dG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7Ym90dG9tOmNhbGMoLTEqdmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1zaXplKSl9LnNpZ25wb3N0LWNvbnRlbnQudG9wLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRs''@;'; put 'put ''ZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKTtib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0u''@;'; put 'put ''c2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LnRvcC1sZWZ0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJv''@;'; put 'put ''cmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC50b3AtbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTtyaWdodDp2YXIo''@;'; put 'put ''LS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LnRvcC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQudG9wLW1pZGRsZSAu''@;'; put 'put ''cG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWducG9zdC1jb250ZW50LnRvcC1yaWdodCAuc2lnbnBvc3Qtd3JhcHtib3JkZXItYm90''@;'; put 'put ''dG9tLWxlZnQtcmFkaXVzOjB9LnNpZ25wb3N0LWNvbnRlbnQudG9wLXJpZ2h0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2ln''@;'; put 'put ''bnBvc3QtY29udGVudC50b3AtcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO2xlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVm''@;'; put 'put ''dCAucG9wb3Zlci1wb2ludGVyLC5zaWducG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWJvcmRlcik7''@;'; put 'put ''dG9wOmNhbGMoLTEqdmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1zaXplKSl9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLWxlZnQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3Qt''@;'; put 'put ''Y29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmV7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKTt0b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAuc2ln''@;'; put 'put ''bnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1sZWZ0IC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWxlZnQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jZHMt''@;'; put 'put ''Z2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tbGVmdCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTtyaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5zaWdu''@;'; put 'put ''cG9zdC1jb250ZW50LmJvdHRvbS1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDo1MCV9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLW1pZGRsZSAucG9wb3Zlci1wb2ludGVyOmJlZm9y''@;'; put 'put ''ZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXNpemUpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSl9LnNpZ25wb3N0LWNvbnRlbnQuYm90dG9tLXJpZ2h0''@;'; put 'put ''IC5zaWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5ib3R0b20tcmlnaHQgLnBvcG92ZXItcG9pbnRlcntib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDpjYWxjKC0xKnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LmJvdHRvbS1yaWdodCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItcmlnaHQ6dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7bGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEp''@;'; put 'put ''fS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQubGVmdC1taWRkbGUgLnBvcG92ZXItcG9pbnRlciwuc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVye2JvcmRlci1sZWZ0OnZhcigtLWNsci1zaWdu''@;'; put 'put ''cG9zdC1wb2ludGVyLWJvcmRlcik7cmlnaHQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXNpemUpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5sZWZ0LW1pZGRsZSAucG9wb3Zlci1wb2ludGVy''@;'; put 'put ''OmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItbGVmdDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAuc2lnbnBvc3Qtd3JhcHtib3JkZXIt''@;'; put 'put ''Ym90dG9tLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtdG9wIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXRvcDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTtib3R0b206Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0u''@;'; put 'put ''c2lnbnBvc3QtY29udGVudC5sZWZ0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xv''@;'; put 'put ''YmFsLXNwYWNlLTEpKTtyaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpfS5zaWducG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTt0b3A6NTAlfS5zaWdu''@;'; put 'put ''cG9zdC1jb250ZW50LmxlZnQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSk7bGVmdDpjYWxjKC0xKnZhcigtLWNsci1zaWdu''@;'; put 'put ''cG9zdC1ib3JkZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTIpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAuc2lnbnBvc3Qtd3JhcHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5zaWducG9zdC1jb250ZW50LmxlZnQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7''@;'; put 'put ''Ym9yZGVyLWJvdHRvbTp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1pbnZpc2libGUtYm9yZGVyKTt0b3A6Y2FsYygtMSp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5sZWZ0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9t''@;'; put 'put ''OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpO2xlZnQ6Y2FsYygtMSp2YXIoLS1jbHItc2lnbnBvc3QtYm9yZGVyLXNpemUpIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKSl9LnNpZ25wb3N0LWNvbnRl''@;'; put 'put ''bnQucmlnaHQtdG9wIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXIsLnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXJ7Ym9yZGVyLXJpZ2h0OnZhcigtLWNsci1zaWducG9zdC1wb2ludGVy''@;'; put 'put ''LWJvcmRlcik7bGVmdDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3JkZXItc2l6ZSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZSwuc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcjpiZWZvcmUsLnNp''@;'; put 'put ''Z25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1yaWdodDp2YXIoLS1jbHItc2lnbnBvc3QtcG9pbnRlci1wc3VlZG8tYm9yZGVyKTtsZWZ0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMil9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtdG9w''@;'; put 'put ''IC5zaWducG9zdC13cmFwe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC10b3AgLnBvcG92ZXItcG9pbnRlcntib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO2JvdHRvbTpjYWxjKC0xKnZhcigt''@;'; put 'put ''LWNkcy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LXRvcCAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItdG9wOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDpjYWxjKC0xKnZhcigtLWNsci1zaWducG9zdC1ib3Jk''@;'; put 'put ''ZXItc2l6ZSkgLSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpKX0uc2lnbnBvc3QtY29udGVudC5yaWdodC1taWRkbGUgLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDo1MCV9LnNpZ25wb3N0LWNv''@;'; put 'put ''bnRlbnQucmlnaHQtbWlkZGxlIC5wb3BvdmVyLXBvaW50ZXI6YmVmb3Jle2JvcmRlci1ib3R0b206dmFyKC0tY2xyLXNpZ25wb3N0LXBvaW50ZXItaW52aXNpYmxlLWJvcmRlcik7dG9wOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSl9LnNpZ25wb3N0LWNvbnRlbnQucmlnaHQtYm90dG9tIC5z''@;'; put 'put ''aWducG9zdC13cmFwe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uc2lnbnBvc3QtY29udGVudC5yaWdodC1ib3R0b20gLnBvcG92ZXItcG9pbnRlcntib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDpjYWxjKC0xKnZhcigtLWNk''@;'; put 'put ''cy1nbG9iYWwtc3BhY2UtMSkpfS5zaWducG9zdC1jb250ZW50LnJpZ2h0LWJvdHRvbSAucG9wb3Zlci1wb2ludGVyOmJlZm9yZXtib3JkZXItYm90dG9tOnZhcigtLWNsci1zaWducG9zdC1wb2ludGVyLWludmlzaWJsZS1ib3JkZXIpO3RvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpfS5z''@;'; put 'put ''aWducG9zdC1jb250ZW50LWhlYWRlcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3dpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O3RvcDowO2JvcmRlci1yYWRpdXM6dmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1yYWRpdXMpfS5zaWducG9zdC13cmFw''@;'; put 'put ''e2dhcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpO3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtib3JkZXI6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMTAwKSBzb2xpZCB2YXIoLS1jbHItc2lnbnBvc3QtY29udGVudC1ib3JkZXItY29sb3IpO2JvcmRl''@;'; put 'put ''ci1yYWRpdXM6dmFyKC0tY2xyLXNpZ25wb3N0LWJvcmRlci1yYWRpdXMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLXNpZ25wb3N0LWNvbnRlbnQtYmctY29sb3IpO3otaW5kZXg6MTA1MDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5z''@;'; put 'put ''aWducG9zdC1jb250ZW50LWJvZHl7cGFkZGluZzowO2NvbG9yOnZhcigtLWNsci1zaWducG9zdC1jb250ZW50LWNvbG9yKTt0ZXh0LWFsaWduOmxlZnQ7bWF4LWhlaWdodDpjYWxjKDQ4MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7b3ZlcmZsb3cteTphdXRvO2ZvbnQtc2l6ZTp2''@;'; put 'put ''YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxp''@;'; put 'put ''YXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0uY2xyLWFjY29yZGlvbntkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX0uY2xyLWFjY29yZGlvbi1wYW5lbHtkaXNwbGF5OmJsb2NrfS5jbHItYWNjb3JkaW9uLWhlYWRlcntjb2xv''@;'; put 'put ''cjp2YXIoLS1jbHItYWNjb3JkaW9uLXRleHQtY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItbGVmdC1pbmRpY2F0b3IpO2JhY2tncm91bmQ6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItYmFja2dyb3VuZC1jb2xvcik7dHJhbnNpdGlvbjphbGwgLjJzIGVh''@;'; put 'put ''c2UtaW4tb3V0O2JvcmRlcjp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEpIHNvbGlkIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tLXdpZHRoOjA7d2lkdGg6MTAwJTtmb250LXNpemU6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZv''@;'; put 'put ''bnQtc2l6ZSk7Zm9udC13ZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDpjYWxjKDIwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1z''@;'; put 'put ''ZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpO3RleHQtYWxpZ246bGVmdH0uY2xyLWFjY29yZGlvbi1oZWFkZXI6aG92ZXJ7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLWhvdmVyKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWhvdmVyLWJh''@;'; put 'put ''Y2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLWhlYWRlcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLWFjdGl2ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcil9LmNsci1h''@;'; put 'put ''Y2NvcmRpb24tcGFuZWwtZGlzYWJsZWQ+ZGl2Pi5jbHItYWNjb3JkaW9uLWhlYWRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWJhY2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkPmRpdj4uY2xyLWFjY29yZGlvbi1oZWFk''@;'; put 'put ''ZXI6aG92ZXIsLmNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQ+ZGl2Pi5jbHItYWNjb3JkaW9uLWhlYWRlcjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZD4u''@;'; put 'put ''Y2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVyLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkPi5jbHItYWNjb3JkaW9uLXBh''@;'; put 'put ''bmVsLW9wZW4+LmNsci1hY2NvcmRpb24taGVhZGVyOmhvdmVyLC5jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2FibGVkPi5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4+LmNsci1hY2NvcmRpb24taGVhZGVyOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNsci1hY2NvcmRpb24taGVhZGVy''@;'; put 'put ''LWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNsci1hY2NvcmRpb24tY29udGVudCwuY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tOnZhcigtLWNkcy1nbG9i''@;'; put 'put ''YWwtc3BhY2UtMSkgc29saWQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItY29sb3IpfS5jbHItYWNjb3JkaW9uLW51bWJlcntwYWRkaW5nOjAgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTtkaXNwbGF5Om5vbmV9LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbntkaXNwbGF5OmZsZXg7''@;'; put 'put ''ZmxleC1mbG93OnJvdyB3cmFwO2ZsZXg6MSAxIDA7d2lkdGg6MTAwJTtib3JkZXI6MDtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7YmFja2dyb3VuZDowIDA7dGV4dC1hbGlnbjpsZWZ0O2N1cnNvcjpwb2ludGVyO2NvbG9yOmluaGVyaXQ7Z2FwOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''c3BhY2UtNSl9QG1lZGlhIChtaW4td2lkdGg6NTc2cHgpey5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257ZmxleC1mbG93OnJvd319LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbjpk''@;'; put 'put ''aXNhYmxlZCAuY2xyLWFjY29yZGlvbi1zdGF0dXMsLmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbjpkaXNhYmxlZCAuY2xyLWFjY29yZGlvbi10aXRsZSwuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9uOmRpc2FibGVkIC5jbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9ue2NvbG9yOnZhcigt''@;'; put 'put ''LWNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXN0YXR1c3t3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmNsci1hY2NvcmRpb24tdGl0bGV7ZGlzcGxheTppbmxp''@;'; put 'put ''bmUtYmxvY2t9LmNsci1hY2NvcmRpb24taGVhZGVyLWhhcy1kZXNjcmlwdGlvbiAuY2xyLWFjY29yZGlvbi10aXRsZXttaW4td2lkdGg6dmFyKC0tY2xyLWFjY29yZGlvbi1zdGVwLXRpdGxlLW1pbi13aWR0aCk7bWF4LXdpZHRoOmNhbGMoMjY0KigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFz''@;'; put 'put ''ZSkpKX1AbWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRpb24taGVhZGVyLWhhcy1kZXNjcmlwdGlvbiAuY2xyLWFjY29yZGlvbi10aXRsZXttYXJnaW4tbGVmdDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfX0uY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbntkaXNwbGF5Omlu''@;'; put 'put ''bGluZS1ibG9jazttYXgtd2lkdGg6Y2FsYyg2NTAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfUBtZWRpYSAobWluLXdpZHRoOjU3NnB4KXsuY2xyLWFjY29yZGlvbi1kZXNjcmlwdGlvbnttYXJnaW4tbGVmdDpjYWxjKDQwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKX19''@;'; put 'put ''LmNsci1hY2NvcmRpb24tY29udGVudHtiYWNrZ3JvdW5kOnZhcigtLWNsci1hY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yKTtib3JkZXI6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xKSBzb2xpZCB2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1jb2xvcik7Ym9yZGVyLWJvdHRv''@;'; put 'put ''bTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCk7ZGlzcGxheTpub25lfS5jbHItYWNjb3JkaW9uLWNvbnRlbnQgLmNsci1mb3JtLC5jbHItYWNjb3JkaW9uLWNvbnRlbnQubmctdHJpZ2dlcntwYWRkaW5nOjB9QG1lZGlhIChtaW4td2lkdGg6NTc2''@;'; put 'put ''cHgpey5jbHItYWNjb3JkaW9uLWNvbnRlbnR7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTgpIGNhbGMoNTQqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfX0uY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1A''@;'; put 'put ''bWVkaWEgKG1pbi13aWR0aDo1NzZweCl7LmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOCkgY2FsYyg1NCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSl9fS5jbHItYWNjb3JkaW9uLWFuZ2xle3RyYW5zaXRpb246YWxsIC4y''@;'; put 'put ''cyBlYXNlLWluLW91dDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uY2xyLWFjY29yZGlvbi1lcnJvci1pY29uLC5jbHItYWNjb3JkaW9uLWNvbXBsZXRlLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSk7d2lkdGg6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KTtkaXNwbGF5''@;'; put 'put ''Om5vbmU7cGFkZGluZzowO21hcmdpbjowIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmNsci1hY2NvcmRpb24tcGFuZWwtb3BlbiAuY2xyLWFjY29yZGlvbi1oZWFkZXJ7Ym94LXNoYWRvdzp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWN1cnJlbnQtaW5kaWNhdG9yKX0uY2xy''@;'; put 'put ''LWFjY29yZGlvbi1wYW5lbC1vcGVuIC5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hhZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxl''@;'; put 'put ''dGUpfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4gLmNsci1hY2NvcmRpb24tcGFuZWwtZXJyb3IgLmNsci1hY2NvcmRpb24taGVhZGVye2JveC1zaGFkb3c6aW5zZXQgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSAwIDAgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1l''@;'; put 'put ''cnJvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1jb250ZW50LXJlZ2lvbiAuY2xyLWFjY29yZGlvbi1jb250ZW50e2Rpc3BsYXk6YmxvY2t9LmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1oZWFkZXJ7YmFja2dyb3VuZDp2YXIoLS1j''@;'; put 'put ''bHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWJhY2tncm91bmQtY29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9wZW4+LmNsci1hY2NvcmRpb24taGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1oZWFkZXItb3Blbi1ob3Zlci1iYWNrZ3JvdW5kLWNv''@;'; put 'put ''bG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlcjphY3RpdmV7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi10ZXh0LWNvbG9yLWFjdGl2ZSk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWFjdGl2ZS1iYWNr''@;'; put 'put ''Z3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1vcGVuPi5jbHItYWNjb3JkaW9uLWhlYWRlciAuY2xyLWFjY29yZGlvbi1hbmdsZXt2aXNpYmlsaXR5OnZpc2libGU7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNj''@;'; put 'put ''b3JkaW9uLWNvbXBsZXRlLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1jb2xvcil9LmNsci1hY2NvcmRpb24tcGFuZWwtY29tcGxldGUgLmNsci1hY2NvcmRpb24tYW5nbGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItYWNjb3Jk''@;'; put 'put ''aW9uLXBhbmVsLWNvbXBsZXRlIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hhZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLWxlZnQtY29sb3ItY29tcGxldGUpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWNvbXBsZXRl''@;'; put 'put ''IC5uZy10cmlnZ2VyLmNsci1hY2NvcmRpb24tY29udGVudHtkaXNwbGF5OmJsb2NrfS5jbHItYWNjb3JkaW9uLXBhbmVsLWVycm9yIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hhZG93Omluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNsci1hY2NvcmRpb24t''@;'; put 'put ''Ym9yZGVyLWxlZnQtY29sb3ItZXJyb3IpO2JvcmRlci1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWVycm9yLWNvbG9yKTtib3JkZXItYm90dG9tOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMSkgc29saWQgdmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvcik7YmFj''@;'; put 'put ''a2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKX0uY2xyLWFjY29yZGlvbi1wYW5lbC1lcnJvciAuY2xyLWFjY29yZGlvbi1lcnJvci1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOnZhcigtLWNsci1hY2NvcmRpb24tZXJyb3It''@;'; put 'put ''Y29sb3IpfS5jbHItYWNjb3JkaW9uLXBhbmVsLWVycm9yIC5jbHItYWNjb3JkaW9uLW51bWJlciwuY2xyLWFjY29yZGlvbi1wYW5lbC1jb21wbGV0ZSAuY2xyLWFjY29yZGlvbi1udW1iZXJ7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDFweCwxcHgsMXB4LDFweCk7Y2xpcC1wYXRoOmlu''@;'; put 'put ''c2V0KDUwJSk7cGFkZGluZzowO2JvcmRlcjowO2hlaWdodDoxcHg7d2lkdGg6MXB4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dG9wOjA7bGVmdDowfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3gtc2hh''@;'; put 'put ''ZG93Om5vbmV9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFuZWw6Zmlyc3QtY2hpbGQgLmNsci1hY2NvcmRpb24taGVhZGVye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKTtib3Jk''@;'; put 'put ''ZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1jbHItYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMpfS5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXBhbmVsOmxhc3QtY2hpbGQgLmNsci1hY2NvcmRpb24tY29udGVudCwuY2xyLWFjY29yZGlvbjpu''@;'; put 'put ''b3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1wYW5lbDpsYXN0LWNoaWxkIC5jbHItYWNjb3JkaW9uLWhlYWRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWNsci1hY2NvcmRpb24tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6''@;'; put 'put ''dmFyKC0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzKX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1oZWFkZXItYnV0dG9ue2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS02KX0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MH0uY2xyLWFjY29yZGlvbjpub3QoLmNsci1zdGVwcGVyLWZvcm1zKSAuY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6''@;'; put 'put ''dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTYpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSk7Y29sb3I6dmFyKC0tY2xyLWFjY29yZGlvbi1jb250ZW50LWNvbG9yKTtmb250LXNpemU6dmFyKC0tY2xy''@;'; put 'put ''LWFjY29yZGlvbi1jb250ZW50LWZvbnQtc2l6ZSl9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tcGFuZWwtZGlzYWJsZWQgLmNsci1hY2NvcmRpb24taW5uZXItY29udGVudHtjb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLXBhbmVsLWRpc2Fi''@;'; put 'put ''bGVkLWNvbG9yKTtjdXJzb3I6bm90LWFsbG93ZWR9LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVze3dpZHRoOmF1dG99LmNsci1hY2NvcmRpb246bm90KC5jbHItc3RlcHBlci1mb3JtcykgLmNsci1hY2NvcmRpb24tc3RhdHVzIGNk''@;'; put 'put ''cy1pY29uLC5jbHItYWNjb3JkaW9uOm5vdCguY2xyLXN0ZXBwZXItZm9ybXMpIC5jbHItYWNjb3JkaW9uLXN0YXR1cyBjbHItaWNvbntoZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS03KTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTcpfS5jbHItYWNjb3JkaW9uLXBhbmVsLW9w''@;'; put 'put ''ZW4+LmNsci1hY2NvcmRpb24taGVhZGVye2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MCFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudH06cm9vdCBbY2RzLXRoZW1lXXstLWNsci1hY2NvcmRpb24tdGV4''@;'; put 'put ''dC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yKTstLWNsci1hY2NvcmRpb24tdGV4dC1jb2xvci1ob3Zlcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWhvdmVyKTstLWNsci1hY2NvcmRpb24tdGV4dC1jb2xvci1hY3RpdmU6''@;'; put 'put ''dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1jb2xvci1hY3RpdmUpOy0tY2xyLWFjY29yZGlvbi1wYW5lbC1kaXNhYmxlZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWNvbG9yLWRpc2FibGVkKTstLWNsci1hY2NvcmRpb24tYWN0aXZlLWJhY2tn''@;'; put 'put ''cm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkKTstLWNsci1hY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYXBwLWJhY2tncm91bmQpOy0tY2xyLWFjY29yZGlvbi1j''@;'; put 'put ''b250ZW50LWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNvbG9yLTQ1MCk7LS1jbHItYWNjb3JkaW9uLWNvbnRlbnQtZm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpOy0tY2xyLWFjY29yZGlvbi1oZWFkZXItYmFja2dyb3Vu''@;'; put 'put ''ZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZ3JvdW5kKTstLWNsci1hY2NvcmRpb24taGVhZGVyLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1jb250YWluZXItYmFja2dyb3VuZCk7LS1jbHItYWNjb3JkaW9uLWhl''@;'; put 'put ''YWRlci1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1ob3Zlcik7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJh''@;'; put 'put ''Y2tncm91bmQtYWN0aXZlKTstLWNsci1hY2NvcmRpb24taGVhZGVyLW9wZW4tYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jbHItYWNjb3JkaW9uLWFjdGl2ZS1iYWNrZ3JvdW5kLWNvbG9yKTstLWNsci1hY2NvcmRpb24taGVhZGVyLW9wZW4tYWN0aXZlLWJhY2tncm91bmQtY29sb3I6dmFyKC0t''@;'; put 'put ''Y2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWFjdGl2ZSk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1vcGVuLWhvdmVyLWJhY2tncm91bmQtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWhv''@;'; put 'put ''dmVyKTstLWNsci1hY2NvcmRpb24tZXJyb3ItY29sb3I6dmFyKC0tY2RzLWFsaWFzLXN0YXR1cy1kYW5nZXIpOy0tY2xyLWFjY29yZGlvbi1jb21wbGV0ZS1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLXN1Y2Nlc3MpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItY29sb3I6dmFyKC0tY2Rz''@;'; put 'put ''LWFsaWFzLW9iamVjdC1ib3JkZXItY29sb3IpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItcmFkaXVzOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXJhZGl1cy0xMDApOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1jb21wbGV0ZTp2YXIoLS1jZHMtYWxpYXMtc3RhdHVz''@;'; put 'put ''LXN1Y2Nlc3MpOy0tY2xyLWFjY29yZGlvbi1ib3JkZXItbGVmdC1jb2xvci1lcnJvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWluZGljYXRvcjppbnNldCB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIDAgMCB2YXIoLS1jZHMt''@;'; put 'put ''YWxpYXMtc3RhdHVzLW5ldXRyYWwtdGludCk7LS1jbHItYWNjb3JkaW9uLWhlYWRlci1sZWZ0LWN1cnJlbnQtaW5kaWNhdG9yOmluc2V0IHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNSkgMCAwIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1oaWdobGlnaHQp''@;'; put 'put ''Oy0tY2xyLWFjY29yZGlvbi1zdGVwLXRpdGxlLW1pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEzKX0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvbnthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTIpO21p''@;'; put 'put ''bi1oZWlnaHQ6Y2FsYyg1NiooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7cGFkZGluZzp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpIHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSkgdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEwKX1AbWVk''@;'; put 'put ''aWEgKG1heC13aWR0aDo1NzZweCl7LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLWhlYWRlci1idXR0b257Z2FwOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtOSl9fS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1wYW5lbC1pbmFjdGl2ZSAuY2xyLWFjY29yZGlvbi1h''@;'; put 'put ''bmdsZXt2aXNpYmlsaXR5OmhpZGRlbn0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24tcGFuZWwtb3Blbj4uY2xyLWFjY29yZGlvbi1oZWFkZXIgLmNsci1hY2NvcmRpb24tYW5nbGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1z''@;'; put 'put ''dGF0dXN7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTQpfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi1udW1iZXJ7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMt''@;'; put 'put ''dHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1sZXR0ZXItc3BhY2luZyk7cGFkZGluZzowIHZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNsci1zdGVwcGVyLWZvcm1zIC5jbHItYWNjb3JkaW9uLWRlc2NyaXB0aW9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jbHItc3RlcHBlci1mb3JtcyAuY2xyLWFjY29yZGlvbi10aXRsZXtmb250LXNpemU6dmFy''@;'; put 'put ''KC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXIt''@;'; put 'put ''c3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5nKX0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1hY2NvcmRpb24tZGVzY3JpcHRpb257Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWJvZHktZm9udC1zaXplKTtmb250LXdlaWdo''@;'; put 'put ''dDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1ib2R5LWxldHRlci1zcGFjaW5n''@;'; put 'put ''KX0uY2xyLXN0ZXBwZXItZm9ybXMgLmNsci1zdGVwLWJ1dHRvbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS05KX1jbHItc3RlcHBlci1wYW5lbCAuY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50e3BhZGRpbmc6dmFyKC0tY2RzLWdsb2JhbC1zcGFj''@;'; put 'put ''ZS05KSB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX06cm9vdCBbY2RzLXRoZW1lXXstLWNsci10aW1lbGluZS1saW5lLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTstLWNsci10aW1lbGluZS1zdGVwLWhlYWRlci1jb2xvcjp2YXIoLS1j''@;'; put 'put ''ZHMtYWxpYXMtdHlwb2dyYXBoeS1jb2xvci00MDApOy0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtY29sb3I6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktY29sb3ItNDAwKTstLWNsci10aW1lbGluZS1zdGVwLWRlc2NyaXB0aW9uLWNvbG9yOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5''@;'; put 'put ''LWNvbG9yLTQwMCk7LS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYm9yZGVyLWNvbG9yKTstLWNsci10aW1lbGluZS1jdXJyZW50LXN0ZXAtY29sb3I6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv''@;'; put 'put ''bi1iYWNrZ3JvdW5kLWhpZ2hsaWdodCk7LS1jbHItdGltZWxpbmUtc3VjY2Vzcy1zdGVwLWNvbG9yOnZhcigtLWNkcy1hbGlhcy1zdGF0dXMtc3VjY2Vzcyk7LS1jbHItdGltZWxpbmUtZXJyb3Itc3RlcC1jb2xvcjp2YXIoLS1jZHMtYWxpYXMtc3RhdHVzLWRhbmdlcik7LS1jbHItdGltZWxp''@;'; put 'put ''bmUtc3RlcC10aXRsZS1mb250LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNil9LmNsci10aW1lbGluZXtkaXNwbGF5OmZsZXg7''@;'; put 'put ''cGFkZGluZzp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlO21pbi13aWR0aDpjYWxjKDE3NSooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7''@;'; put 'put ''bWFyZ2luLWxlZnQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS01KX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb24sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29ue2hlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTt3aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKTttaW4t''@;'; put 'put ''aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpO21pbi13aWR0aDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9Y2lyY2xlXXtjb2xvcjp2YXIo''@;'; put 'put ''LS1jbHItdGltZWxpbmUtaW5jb21wbGV0ZS1zdGVwLWNvbG9yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2RzLWljb25bc2hhcGU9ZG90LWNpcmNsZV0sLmNsci10aW1lbGluZS1zdGVwIGNsci1pY29uW3NoYXBlPWRvdC1jaXJjbGVde2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1jdXJyZW50LXN0''@;'; put 'put ''ZXAtY29sb3IpfS5jbHItdGltZWxpbmUtc3RlcCBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9c3VjY2Vzcy1zdGFuZGFyZF17Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN1Y2Nlc3Mtc3RlcC1jb2xvcil9LmNsci10''@;'; put 'put ''aW1lbGluZS1zdGVwIGNkcy1pY29uW3NoYXBlPWVycm9yLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLWljb25bc2hhcGU9ZXJyb3Itc3RhbmRhcmRde2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1lcnJvci1zdGVwLWNvbG9yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5u''@;'; put 'put ''ZXIuc3Bpbm5lcnttYXJnaW46dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0yKX0uY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lciwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5lcjphZnRlciwuY2xyLXRpbWVsaW5lLXN0ZXAgY2xyLXNwaW5uZXIuc3Bpbm5l''@;'; put 'put ''cjpiZWZvcmV7aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO3dpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApO21pbi1oZWlnaHQ6dmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMCk7bWluLXdpZHRoOnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTApfS5jbHItdGltZWxpbmUt''@;'; put 'put ''c3RlcDpub3QoOmxhc3Qtb2YtdHlwZSkgLmNsci10aW1lbGluZS1zdGVwLWJvZHk6YmVmb3Jle2NvbnRlbnQ6IiI7YmFja2dyb3VuZDp2YXIoLS1jbHItdGltZWxpbmUtbGluZS1jb2xvcik7aGVpZ2h0OnZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCk7d2lkdGg6Y2Fs''@;'; put 'put ''YygxMDAlIC0gdmFyKC0tY2RzLWdsb2JhbC1zcGFjZS0xMSkgKyB2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKSk7dHJhbnNmb3JtOnRyYW5zbGF0ZShjYWxjKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpIC0gdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXIt''@;'; put 'put ''d2lkdGgtMjAwKSksY2FsYygtLjUqKHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkgKyB2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTExKSkpKX0uY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVye3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOnZhcigtLWNsci10''@;'; put 'put ''aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpO2NvbG9yOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWhlYWRlci1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LXNlY29uZGFyeS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWNkcy1hbGlhcy10eXBv''@;'; put 'put ''Z3JhcGh5LWZvbnQtd2VpZ2h0LW1lZGl1bSk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdGlt''@;'; put 'put ''ZWxpbmUtc3RlcC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb24sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb257aGVpZ2h0OnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtNyk7d2lkdGg6dmFyKC0tY2Rz''@;'; put 'put ''LWdsb2JhbC1zcGFjZS03KTttaW4td2lkdGg6aW5pdGlhbDttaW4taGVpZ2h0OmluaXRpYWx9LmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2RzLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5l''@;'; put 'put ''LXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjZHMtaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF0sLmNsci10aW1lbGluZS1zdGVwLWJvZHkgY2xyLWljb25bc2hhcGU9Y2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAt''@;'; put 'put ''Ym9keSBjbHItaWNvbltzaGFwZT1kb3QtY2lyY2xlXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1zdWNjZXNzLXN0YW5kYXJkXSwuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keSBjbHItaWNvbltzaGFwZT1lcnJvci1zdGFuZGFyZF17Y29sb3I6aW5oZXJpdH0uY2xyLXRp''@;'; put 'put ''bWVsaW5lLXN0ZXAtdGl0bGV7bWFyZ2luOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpIDA7Y29sb3I6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtdGl0bGUtY29sb3IpO2ZvbnQtc2l6ZTp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1zZWNvbmRhcnktZm9udC1z''@;'; put 'put ''aXplKTtmb250LXdlaWdodDp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC10aXRsZS1mb250LXdlaWdodCk7bGluZS1oZWlnaHQ6dmFyKC0tY2RzLWFsaWFzLXR5cG9ncmFwaHktc2Vjb25kYXJ5LWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1z''@;'; put 'put ''ZWNvbmRhcnktbGV0dGVyLXNwYWNpbmcpfS5jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbntjb2xvcjp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1kZXNjcmlwdGlvbi1jb2xvcik7Zm9udC1zaXplOnZhcigtLWNkcy1hbGlhcy10eXBvZ3JhcGh5LWNhcHRpb24tZm9udC1zaXplKTtmb250''@;'; put 'put ''LXdlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9uLWxpbmUtaGVpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS1jZHMtYWxpYXMtdHlwb2dyYXBoeS1jYXB0aW9u''@;'; put 'put ''LWxldHRlci1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gYnV0dG9ue2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDp2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKX0uY2xyLXRpbWVsaW5lLXN0ZXAtZGVzY3JpcHRpb24gaW1ne3dpZHRoOjEw''@;'; put 'put ''MCU7bWFyZ2luLXRvcDp2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTUpfS5jbHItdGltZWxpbmUuY2xyLXRpbWVsaW5lLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6Y2FsYygzMjAqKDFyZW0vdmFyKC0tY2RzLWdsb2JhbC1iYXNlKSkpfS5jbHItdGltZWxpbmUuY2xy''@;'; put 'put ''LXRpbWVsaW5lLXZlcnRpY2FsIC5jbHItdGltZWxpbmUtc3RlcHtmbGV4LWRpcmVjdGlvbjpyb3c7bWFyZ2luLWxlZnQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXA6bm90KDpsYXN0LW9mLXR5cGUpe21h''@;'; put 'put ''cmdpbi1ib3R0b206dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtaW50ZXJuYWwtc3BhY2luZyl9LmNsci10aW1lbGluZS5jbHItdGltZWxpbmUtdmVydGljYWwgLmNsci10aW1lbGluZS1zdGVwOm5vdCg6bGFzdC1vZi10eXBlKSAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keTpiZWZvcmV7cG9zaXRp''@;'; put 'put ''b246YWJzb2x1dGU7d2lkdGg6dmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKTtoZWlnaHQ6Y2FsYygxMDAlIC0gKC41KnZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpICsgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSkpO3RyYW5zZm9ybTp0''@;'; put 'put ''cmFuc2xhdGUoY2FsYygtLjUqKHZhcigtLWNkcy1nbG9iYWwtc3BhY2UtMTEpICsgdmFyKC0tY2RzLWFsaWFzLW9iamVjdC1ib3JkZXItd2lkdGgtMjAwKSkgLSB2YXIoLS1jbHItdGltZWxpbmUtc3RlcC1pbnRlcm5hbC1zcGFjaW5nKSksY2FsYyh2YXIoLS1jZHMtZ2xvYmFsLXNwYWNlLTEx''@;'; put 'put ''KSAtIHZhcigtLWNkcy1hbGlhcy1vYmplY3QtYm9yZGVyLXdpZHRoLTIwMCkpKX0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXAtaGVhZGVye3RleHQtYWxpZ246cmlnaHQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstd29y''@;'; put 'put ''ZDt3aWR0aDpjYWxjKDYwKigxcmVtL3ZhcigtLWNkcy1nbG9iYWwtYmFzZSkpKTttaW4td2lkdGg6Y2FsYyg2MCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJhc2UpKSk7bWFyZ2luOnZhcigtLWNsci10aW1lbGluZS1zdGVwLWludGVybmFsLXNwYWNpbmcpIHZhcigtLWNsci10aW1lbGluZS1z''@;'; put 'put ''dGVwLWludGVybmFsLXNwYWNpbmcpIDAgMH0uY2xyLXRpbWVsaW5lLmNsci10aW1lbGluZS12ZXJ0aWNhbCAuY2xyLXRpbWVsaW5lLXN0ZXAtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDpjYWxjKDE3OCooMXJlbS92YXIoLS1jZHMtZ2xvYmFsLWJh''@;'; put 'put ''c2UpKSk7bWFyZ2luLWxlZnQ6dmFyKC0tY2xyLXRpbWVsaW5lLXN0ZXAtaW50ZXJuYWwtc3BhY2luZyl9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUZR''@;'; put 'put ''Z0FCTUFBQUFBbThBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY2FBQUFPZGp5K2VqbEhVMVZDQUFBSk1BQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJQUFBbFFBQUFB''@;'; put 'put ''VFFBQUFHQm9QcXpyWTIxaGNBQUFDYUFBQUFKc0FBQURubmRERDdGamRuUWdBQUFNREFBQUFEQUFBQUE4RVk0QmpHWndaMjBBQUF3OEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuZ0FBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNnQUFBTm5NQUFHZ1V4RklnTjJobFlXUUFBRWowQUFBQU5nQUFB''@;'; put 'put ''RFlMWVlnVWFHaGxZUUFBU1N3QUFBQWhBQUFBSkFkMkJESm9iWFI0QUFCSlVBQUFBb2dBQUFUdXVQSS9GR3h2WTJFQUFFdllBQUFDY2dBQUFucUphbkJ3YldGNGNBQUFUa3dBQUFBZ0FBQUFJQUtFQWVsdVlXMWxBQUJPYkFBQUFZSUFBQU5XTGRDRTlYQnZjM1FBQUUvd0FBQURvUUFBQmlHWEZq''@;'; put 'put ''MktjSEpsY0FBQVU1UUFBQUNCQUFBQWpSbFFBaEIzWldKbUFBQlVHQUFBQUFZQUFBQUc5bmhZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYxRDRCN200MDQ4''@;'; put 'put ''RE9sb3BObHY2NDVTZVhYTFQ1MXNYelNhK1czQUYzQUFBQUhqYWpWY0JiRmJWRmY3T3VmZSt2LzBMV0VvTENCMERVaGt4VFdXRVNVVkdpV01Gc1ZQRG1FRUhabHVjWTYxUTdCalppREZLSFpxbDZZekREcEUwcUF5TU5zQlFzU0t5cHF2T09VZGtZNlloWUZ3SHlEWW0wN25GQ1BMMnZmTis2Rjlv''@;'; put 'put ''dC9HRmo4TzU5OTE3enpuZjdibUZBTWhpTWhaQzV0WFdMVVlCUEQySVl6aitJMUM0aG04M3JVVHBpbTgyTmFCOFJjT0tCczRHL2Nsb09pTmh4Kyt5R0kwSm1HSWVod3JVdVk1ME5GcGxxMHJVaW9nZnlmRFYvR0tjK1FKS0wwQlFHN2VTQTJhakJaOGlsbkZRSG9QelpLd2NRUkdHOFdSL2o3dmo3''@;'; put 'put ''WEZ2ZkJSRC9Jay9HSExrdDRONis3aDMvditQeHo4ZGNvWDNoaHdaK2p4L2pQY09NYkk5N292M0piakkzOHUvdjBrdzJCNXhLN09rbU1oTVQyRzJQa2NvcWdpSHF3aVA2VVRBRjRnSU00a01yaUVLTUlzb1pHNW5zMUpyQ01IOStCRm5Qa2dFWnJ5Ri9oY0l3WXVFNENWQ2NaRHcrQVBoY1pRSStE''@;'; put 'put ''TVI0VGdSNFQwaXdta2lndytJRE00UWhhemVwMXd0SnJKU0xNVW9sQklwSVpkS0tYa2NLNXZsMnRPb2tncCtjeVVoZHU3MHhHb25kblppYnljT21FY1VvSllveEFJaWkwVkVFUnJ4ZmE2UVJCSlpKSkZGRXZBVFBNcjViVVFoZm9aTm5QOEVmczc1MjRraTdDUXkyRVVVNEJkRUJydUpBanhIWlBB''@;'; put 'put ''OFVZQTlSQ0U2aVVMc0o3TG9JckxvSnJMb0liSjRsUkQ4bWhETFRvUjNpQ0w4aVVqem9wWVh0Yng0eTB1d3ZBVExpN2U4ZU11TGx6RXlodm02WEM0bkp6a0tYTFdLR1pyQ0dsZXh0dE5aMDVuTXpDeG1wQkdyY0RlYThEMnNaaTN2eHpvMDR3Rm00VUZHdjVNUlBjZEt2c2dLSG1UbGpySml4MW1w''@;'; put 'put ''MHp6SkdidFp4ZHkzTkxsZmVxL2R3OWVraVhFUHA3cjJVWGV0OGI4R1VhdU5ESFlITG95Y1NqRElsNmVIdkJ1bnppdWU5L3BvM0J3M1h6eVMzcnA0Yzd4NTBKRy8yRGVLY3RPRW1DWVVYeU1jYmlVOGJpTUNsaElSRmZFbzV5UnFFRk9EbWhvVUhVU0VIVVJrbFJhcnRGaWx4U290VmxmRk1jTGhC''@;'; put 'put ''T0Z3a25BNFN3U2NJeUlaS1NOWjExRXlpbHdtWmVTa29tSVZGUmt2NDdtK29oS1hFVVVZU1F3enBZc3BYVTNwTHFmMCtVUyswcjNGRStYRmt6R2x1NXpTK3pYdUxTcHZVV1VzcXZOS1R6V2VxbnN2TWJTdWsyaTlhVlp6RVNiS2RSWm54dlRyVEwrYWl6bFJzZVlpVDdTc2VmSG5LOXBaRmpJeVRh''@;'; put 'put ''N2g3c2xQcjFwR3VJajF1cFZ4TFdVa2JZeGtJeDVqTkUvZ1NUeUZyWXhvT3lQWndkdll5ZE4yOFpROVBOMHgxdUFrVDNhT0p4akYzY1p3bC9GY2NZTHBXVEhDT2txSnFhT0V1OVRRRXJOcjJJbU9SQlBJZmN4L3Q2eVhGbmxFTmtxN2JKVm5aSmZza1gzU0xhL0xBVGtraCtWZE9TR241RVA1V002''@;'; put 'put ''cDE2d1c2Mmd0MThrNlZhdDBoczdTdVZxcmRicElsK2p0ZW9mVzZ5cGRvL2ZvT24xSVczV0RidEl0dWswN2RMZDI2bjd0MFRmMExYMWJqMmlmbnRUMzlTUDl4TUZGYnBncmNXUGRCRmZocm5UVDNOVnV0cnZPTFhBM3VzWHVOdmNOZDZlN3l6VzVIN2g3M1FQdXgrNWgxK1kydXlmZDAyNkhlOTd0''@;'; put 'put ''ZFYzdU5mZW0rNzNyZGUrNFkrNnY3aC91Mys2c1YxL2dSL2hTUDg1UDlGTjhwWi91cS8wY1A4OHY5RGY3Vy94Uy95Mi8zSy8wcS8xYWY1OWY3MXY4STM2amIvZGIvVE4rbDkvajkvbHUvN28vNEEvNXcvNWRmOEtmOGgvNmovMjU0RU0yRklmUm9UeE1EbE5EVlpnUlpvVzVvVGJVaFVWaFNiZzkz''@;'; put 'put ''QkhxdzZxd0p0d1Qxb1dIUW12WUVEYUZMV0ZiNkFpN1EyZllIM3JDRytHdDhIWTRFdnJDeWZCKytDaDhFaUdLb21HOEhVMjZrOXhzUE4rNHhuaER3bWcwYmpQUDJuNS9qbTh3cmpTKzFuaGx3bHBtOXZYR2M0d3JsRDlUNVFyanE0eXJFMGE5Y2J1K1RHNHdmNlh4YlBQM0dwOHh6MFRqeDQwbkdV''@;'; put 'put ''ZkdDMXc5K1NuanBzRlpmNVVYWTQzNUwyRjgyWGlMY1dNL3k3STBkclB2TW43VmVNT2xuR2JBN0V2NWV1TUs3ZnBmck04T3lGWFhZSXk1eG84YjEvY3pzOWRsMmZ2dm5PYXphMUNlbE1kTmVXY2VZT2ZWdE5uOFY1Zy8zNTV2T1d3eGUxbGU1dE1vQnRnMm1xb2kzNTltdFRxMWJVNnFtYlE2YWRT''@;'; put 'put ''cFBuTjJ6cC9NYVRPNzNhMDVyOTZjeGc2YTNaUFl1WnFtR1Z1YlUzSzR5SitlSWMzYkFiUFhXbzBPSmZOZHFzQWJiSzllbTJNM0l0WHRBSCtsMldkeU5kcDVRZFg1L3ZRR1hadW5tYlFpK2ZaV3M3K2UrbTIrM1FzdE03L3BJYWUwU1huMkhPUElQRVBaZnpQN2JvdXUxdXczemM1ZnVTYitKYmtx''@;'; put 'put ''M245UnBmSjNyTTdkN3E3L2d3Zk9WSHpXM3FYZ3Uyc3FzNUs4VGoyN2RpVzdZUExDanZCNXZzUXltSUZxOXJDa2M0OWczLzRpZTNyU3VVZmFHN1hFT3Zjby9sNjFrSDJvamlqRFRleHpvOW5wYnVIdlBrdUljdXZsbjJIWFc4YXUxY2kzMjBSN3ZjMWtSMi9uZWx2WStiNWl2ZStyN0g0dnMwTytn''@;'; put 'put ''Z1A0RGw5MHAvRkRlMVZ1eEQ4bDRERjI0dkhvc0o3YXlmT0tYR2EvbTBXUWVMMnA4RDdjU1Y3UGJsZUVzZHlyZ2hGTnc5VTg5WFU4NVkxWXpORVhUTHUvTXo1c2JIZUdHdTNuZzhiTGpiY1o5eG1mTlM3Q2w3alBjbnhYTWxJZ2haS1ZJaGt1SXk0OTBYOEF0bEtYV0FBQUFBRUFBQUFLQUJ3QUhn''@;'; put 'put ''QUJSRVpNVkFBSUFBUUFBQUFBLy84QUFBQUFBQUI0Mm1OZ1pySmduTURBeXNEQzFNVVV3Y0RBNEEyaEdlTVlSQmpOZ0h5Z0ZCeXdNeUNCVU85d1B3WUhCZ1hWUDh6Uy80MFpHSmlQTXFvcU1EQk1Cc2t4c1RLdEIxSUtERXdBeGxjS05nQUFBSGphdFpOWlVJNVJITVovLzdkOUVTb1U5ZmIyYWRO''@;'; put 'put ''R29oUkY5cVhJdnBTczJiS3YyUnJyRUVORlVzaWVKS01aRTFOVHRodnV1RFZqakw3UGxWdnVEQjNIVjB3enpMaHladDV6M25QT25PZWNlWjdmSDNDaDZ3dEJkSTlVNnBrNDU2NVNyTWNsak1PTmdaUndpenJ1MGtnVHpiVFFKaDRTSUlNa1RBWkxuQ1JKcXFSTHBreVZITW1UUWltU0VpUFZlR1c4''@;'; put 'put ''ZDRreWo1dXQ1aFB6aStWdUJWckJWcWhsczZLc1lWYTZkZC9tSC9sTktYMkh4WTBlMm85cDQ1bjRTbjh4eFNheGtpZ3BraVlaa2lYWmtpc0Zza0UyYSsyWHhsdXRmY2hzTWR2Tno1WmhCVmhCVm9oVGU2aVY5a3RiZlZRdjFIUDFWTFdyVnZWSU5hdUhxa2sxcWdaVnIrclVOVldyYWxTMXFsS1Zx''@;'; put 'put ''a0tWcVRPcVZKM29mTk9aMVpuMC9aT2ozRkhneUhmRTJBZmEvZXcrZGkrN205M28rTnJ4dWVQd2g1QjN5VjFlL2FmbWJuZzdrK0NQV3dTais4LzRoMGJYU1JkY2RYYnVlT0NKRjk3NDRFc3YvT2hOSC9yaVR3Q0I5S00vQXdnaVdHYzhTS2NlaWttWVRpUWNHNE9KSUpJb29vbGhDTEhFRVU4Q2lR''@;'; put 'put ''eGxHRWtNSjVrUmpDU0ZWRWFSUmpxakdVTUdtWXpWekdReG5nbE1aQktUbWNKVXBqR2RHV1NUdzB4bWtjdHM1akNYZWN4bkFRdFp4R0pOV2g3NUxLV0FaU3huaFg3L0RuYXltMklPY1p6VGxGTkdCZWM1UnlWVlZIT1JHaTV4aGN2VWNwWHIzTlFVL1dUME5nMmFwWHVhcHA5dEZhdTFIZEZzNEd5''@;'; put 'put ''M04rdFpvL3RkblBqdFZ1RmZITHhBUFp0WjJXTmxMWnNrUm85YjJNNHg3RGdrWFBNWktWRzZBaUs0bzNjZW9HbVdCRjBQOGQxbmlweGh4TEtOdld4bEgzczR3RUZkUy9zNXdsRzlkWmhTVG5HUzE3cWFlckZPdk1SYmZOZ29mcHAvengrUXphcm9lTnBqWU1BQ0hJSFFrc0dTYVQwREE5TnVKbFlH''@;'; put 'put ''aHY4aHpOTC9qWmwyLy8vQ2RJQko4UCtYLzM0Z1BnRElQUTBpZU5xdFZtbDMwMFlVbGJ4bEl4dFphRkZMeDB5Y3B0SElwQlNDQVFOQml1MUN1amhiSzBGcHBUaEo5d1c2MFgxZjhLOTVjdHB6NkRkK1d1OGIyU2FCaEo3MjFCLzA3c3k3TTIrYmVXTXlsQ0JqM2E4RVFpemROWWFXbHlpM2VzMm5V''@;'; put 'put ''eGJOQk9HMmFLNzdsQ3BFZi9VYXZVYWpJVGVzZko2TWdBeFBMcllNMC9CQzF5RlRrUWkzSFVvcHNTbm9YcDB5MDlkYU0yYS9WMmxVS0ZmeDg1UXVCQ3ZYL2J6TVcwMWZVTDJPcVlYQUVsUmlWQW9DRVNmc2FKTm1NTlVlQ1pwai9Sd3o3OVY5QVcrYWthRCt1aDlpUnJDdW45RThvL25RQ29NZ3NN''@;'; put 'put ''aTBnMENTVWZlM2dzQ2h0QkxZSjFPSTRGbldxL3VVbFM3bHBJczRBakpEaHpKS3dpK3hHV2MzWE1FYTl0aEtQT0F2U0pVR3BXZnpVSHFpS1pvd0VNOWxDd2h5MlEvclZyUVMrRExJQjRJV1ZuM29MQTZ0YmQraHJLSWV6MjRacVNSVE9ReWxLNUZ4NlVhVTJ0Z21zd0VEbEoxMXFFY0pkblhBYTl6''@;'; put 'put ''TkdCdUNkNkNGTUdCS3VLaGQ3Vld0bmdIRHE3aXorVzd1KzlUZVd2UW51NWcyWFBBUWR5Z3FUUmx4WFhTK0RJdHpTc0tDa3gwdlVSMFpMU1ltQmc1WVRsTllaVmozUTl1OTZKRFNBYlVHK3RNb3RpWHp3V3plb1VFVnAxSVYyb3dXSFJwU0lBcEJoN3lydkJ4QXVnRU44bWdGbzBHTUhCckdOaU02''@;'; put 'put ''SlFJWmFNQXVEWG1oYUlhQ2hwQTBoMGJVMHBvZlp6WVhneWthM0pLM0hScFZTOHYrMG1veWFlVXhQNmJuRDZ2WUdQYlcvWGg0R0FXTVhCcTIrY3ppSkx2eElmNE00a1BtSkNxUkx0VDltSk9IYU4wbTZzdG1aL01TeXpyWVN2UzhCRmVCWndKRVVvUC9OY3p1TGRVQkJZd05ZMHdpV3g0WkYxdW1h''@;'; put 'put ''ZXBhalNrak5sS1ZOWitHcFNzcU5JREQxdy9Eb1N0Q21QOXpkTlEwaGd6WGJZYng0WnhOZDJ6ck9OSTBqdGpHYkljbVZHeXluRVNlV1I1UmNacmxZeXJPc0h4Y3hWbVdSMVdjWTJtcHVJZmxFeXJ1WmZta2l2dFlQcU5rSisrVUM1RmhLWXBrM3VBTDR0RHNMdVZrVjNrelVkcTdsTk5kNWExRWVV''@;'; put 'put ''d1pOR2ovaC9pZVFuekg0SmRBZkN6emlJL2xjY1RIVWlJK2xsT0lqMlVCOGJHY1Jud3NuMFo4TEdjUUgwdWxSRmtmVTBmQjdHZ29QSGJCMDZYRTFWTjhWb3VLSEpzYzNNSVR1QUExY1VBVlpWU1MzQkVmeWJBNCtybHVhYzFKT2pFYlo4MkppbzlHeGdFK3V6c3pENnRQS25GYSsvc2NlR2JsWVNP''@;'; put 'put ''NG5mc2E1M2xqOGcrRGY0c1haU2srYVU1d2NLZVFBSGk4djhPNEZWSEpvZE9xZUtUczBQdy9VWEdDRzZDZlFVMk15WUlvaWhyZmZPVHlTck5aa3pXMENoOVBCRG9yMnNHOGFVNk1JNlVsdEtoSkdnRXRnNjVaMERUcTgreXRabEVLVVc1aXY3TjdLYUtZN0VVWnpJQXBLT1Ntc2JEczc2UkVXbGc3''@;'; put 'put ''cWVuMDBjRGxSdHFMbml3MVcxWnhoYjBINzJQSXpTeDVOMUpldUNrcDdVV2JVS2U4eUFJT3VaRTl1Q2FDVzJqdnNvcGlTbGlvSWo0SWJRWDc3V05FSmkwemd5NkJJbVJ4c3JJUDdZb2RPYUtDZGdMZmV0SXE3OXRDN2M5MThpQXdtNTF1NTBHV2thTHpYUlgxYW4xVjF0Z29WNi9jVFI4SDA4Nndz''@;'; put 'put ''ZVlYUlJsUExudmZuaFRzVjZjRXVRSkdWM2EvN2tueDlqdlc3VXBKUHRzWGRubmlkVW9WOGwrQUIwUHVsUGNpR2tXUnMxaWxFYyt2VzNneVJUa294a1Z6SEJmMDBoN3RpbFhmbzEzWWQrMmpWbHhXVkxJZlpkQlZkTlp1d2pjK1h3anFRQ29LV3FRaVZuZzZaRDZiblpyd3NaUzRMRVhjczJUWFJm''@;'; put 'put ''UWRQQ0VkNHI4NHhMWC82OXh5Rk55aXloSmRhTmNKeVFkdEh5dm9yU1c3azRjcVJtZnR2R3hub2gxSk4rZ2FncDVJTGpqK1h1QXVqeFhwRk83ejh3Zk1YOEYyNXZnWW5RYStxdWdNeEJMbnJZSUVpeXJlMGs2bVhsQjhoR2tKOEVYVlFyTUNlQW5BWlBDeWFwbDZwZzZnWjVhWlV3RllZUTZEVmVZ''@;'; put 'put ''d1dHTU9nM1cxZzY1M0dlZ1ZJRk9qVjlXT21jejVRTWxjd0R5VDBUWG1hWFNkZVJxOXhqeU5ickJORCtCMXRzbmdEYmJKSUdTYkRDTG1WQUUybU1PZ3dSd0dtOHhoc0tYOWNvRzJ0VitNM3RSK01YcEwrOFhvYmUwWG8zZTBYNHplMVg0eGVrLzd4ZWg5NVBoY3Q0QWY2QkZkQlB3d2daY0FQK0tr''@;'; put 'put ''NjlFQ1JqZnhqTFk1dHhMSW5JODF4Mnh6UHNIaTg5MWRQOVVqdmVLekJQS0t6eFBJOU52WXAwMzRJb0ZNK0RLQlRQZ0szSEozdjYvMVNOTy9TU0RUdjAwZzA3L0R5amJoK3dReTRZY0VNdUZIY0M5MDkvdEpqelQ5NXdReS9aY0VNdjFYckd3VGZrc2dFMzVQSUJQdXFKMitUS3J6WjlXMXFYZUww''@;'; put 'put ''bFAxMjUxMzJQa2JaVE82TEFBQUFBRUFBZi8vQUE5NDJyVjlDWGhiVjVub09lZEt1cElsMmI1YUxjdWJyTlhXYW11enZNalhTN3d2Y2J6RlNSeG5jNXkwS1YzU2xpNGhwTFFORkFxVUFXWllocjR1MEtGTVM1SzJkS0h0RkNoUTJxSExERytBZWNNSDVRMHpMRy9ZQmpvd2JYMDkvem4zWGxtMjdL''@;'; put 'put ''YndmUysxSlB2cXJQLzU5K1VVbGFIRnRTVCtGT2RHSEtwQWR1UkNYdFNFMGlpSHV0QVFjb21PM254bmV6YVRiQTc2NnF1ckhFS2xRVU5RV1NLczlRZ2UzcDYwZSszSnREZWRUUFBzazRkZjFhZjBHZjJrMzhDVHRQcTcwb1oxeUNiVCtGUFNzN2pyUDN0NjcrdnR2ZSsrM2thUHA3ZTM5MGl2NTli''@;'; put 'put ''N2pqUjZqbmp1dSs4K3o1RWp0dzRNM0hkMG9PRkY3bWQ5SHI4SGZtNDYxamd3NERzSXZ3MTRPbnNiajl6UTVvenZ2UExLQjYrOGNtZDh4UlAzd0E5Q0JFMnYvUjZkSStmWTN2eGlJOElZTFNLRXlrY1JJZHlTQm5PY2t4dlRhRFFWbW5LL1VLbmxuV0Zya3ZNNkF1bFVKdG5xc050MDN2M0Q1b1RH''@;'; put 'put ''N2JaWnE2dXQ1SnhrZWRGdHM3amRGcHNib2JVMU5JZ2Z4V1BrazVXTnFBeWhTZzdlSDBGMDNpQzhYUWZ6dWxFOXVtSDB2SGZuYmpGVW9TTkl5eEZNRUY0MllvT2hmTFM4MHN6eHZIN1JWRWIwZW1GVWd3bXBJR051TVVBZnNDK1JuajlhMms5cHVDRFdJVlJmVjFzRDA3aXJYVlZPV0xCVktQemph''@;'; put 'put ''OE9ZVC9KZTNwdGxyMnlTdlpJOGUvSDBTL3liekkzbUcyTnRzYnZnZGEzNTJzdzd6ZGNwZjkxZ2Z2aXV6RjM0YTk5TlB3Yi8wdDlOUHc3LzB0OEZTTWJXSGlVUjhnZmtRU0VVUjUxaUx1YjMxZFZXdTV3MnM2bk1ZT2FJRGlPT2pDRENrWnNSUnZnV0NtYTBCSEJ4b3JHbXBxWjRVOXhoRnl4YTNo''@;'; put 'put ''SDJsV1BBa1hRTUI3TU9weERENlZRZVp3RlpIRTRlbmdsMTJJNGN6blE1ZkdUU3FVQlFJSkhVa1IxaXo4bG9hT2Z4b3dkYTkrYkVLeFpEdnBubzVlK1E5b3M3T2thd2VXWjA2dWE1Tk5mZHkyY2pyVHNyY1dYMXJxSGtiRnJYMldXY2JmVkdlT2xOOSs1SlhKTzIvWjRmYnBXeUk2bVdEb2YwSnF4''@;'; put 'put ''TmkrSnIvMFgrbFh3Sk1NVUtweFpISGVpRjBmTlZjSEpoSTlhV1lhelQ0aFdrUTNxRFRuOE1hVFJvaVdDS1NXWTRFbTdKeEJPT3ErREczS1BuZzlBbC9wWmRFRFJsL2ZnbEUrWjVKdzlubnR5aUJ5SFFsblpEVy9kYVdCQURpVVJEZzgyR1VLSWowWjVKTmNRYllxR0FyZDVXVjExbHRRaVZzSm55''@;'; put 'put ''UURsdkQxdGs0Q1piQWFhMmN1ekZTZXkxVUtCNkczVjJteU9KTm4yZngrdmYvZlZBTURRWWlRN0NleFIvcUZOcTdyd20xeDZKdExXSDhkUkFLRGdZbGIrS3RkR0h1UWhlakU3RVczWkdvNU9KbG9rbzNyVTZoVDg0a000TURtVFRBOUx4NkVSTFlpSVduWXkzVEVZVEE1bjBJUDBLOXNlaHByWGZr''@;'; put 'put ''eFBrTVlCOUdQaFBYdXlJUi8xMU5XNlgwNERMT0ZMUGtJcGlQbDRDTW5hTWFvdXdLaEpwYUlpa0k2bUdjRU56dUZFSG1LVU42cnlOZEUvWjRvM0JOODVNMXFuam5ZanV6Q252MHBJTkJPSFBPcHdraWFWOUp6dVA1Tzd4MUVYR0U1SGg4TnhjNXNwSVV5YVJ2RnI2ZEZkdC9VUmZyamswZmpwL3Ru''@;'; put 'put ''bW9tVCt3M0xLUXUya2dPdWlMaklUREk4MzVVWi80VHZGQTFmSGhhOGp4OWxoTlY2Z2hHMjd1V2owM2Q4dFkxLzZRNkFWaUFINkJQa0UraVV3b09ucmVBWWhpcEN5Sm5TOEdKS2hFOU05NStCTXZVdElaWDNqRTdpT3dIV3VCSTFWZzcyeDVsU0E0eS9rZy9vOUQzc29xcCtBOWxJSFcrYlU1SENO''@;'; put 'put ''UHdkaTZoMDFhbkFnek5wWjFBdm5ZblB6bkw3bmtzSGR1NFp4MzE0OXZ1T0hIdS8yN3YzN1ZEeTRFWUNLZzV6bGNwL2JUUVQ4bkk3YXNETERZdVlVNTcySG9mTXVGSDF6MWRlakh1dE4rSGZnbTRIMWZRck5JRkx2OEdKUEpIZDJ4UnBkTnEwZDRGOVlpYm9URFdJT1JGcU1WSGRacXlSSkZhTzBZ''@;'; put 'put ''N0c0V3pRd1BaZEpOd2RvYU4wK3hFMWJhalhuZ0JuQnFRZmdqbStuR3dZRDhXN0xWNmFqSHdTSUlaTExBSnRoenV3MDZWV0NIMDhGK1o3M2hQeWRqM1Y4MkczVGVpb1p5cmNiTWE4cWMwWEFrWmkvVDhHYXR4dExzMHhuTXdLejB1c3BLTG1UVGFzMDhWeWFFZFJHbkkrd280M2l6VHVNSU9ZdzZ2''@;'; put 'put ''ZG1BYnpMcmExcWFhOHhWUEdmU2E0eThXUkFzRmlOdjFPaE5YRmxqVFhOTGpkNXMxanRhNDZaeXJzSEltWFJhRTE4bUVHZ2ltSGlUVm1maXloc3MrbmlyUTIrbUI0djYwSEZTVGxMSWlBS0FFeG9PYTJZQmw0RXpZQTR0QTduVG85ZmdjY2JESzNWOGRSaDdxZlJNVXltYUpPWGZ6RC8zWFA2Yk9Q''@;'; put 'put ''NU4rZ3NkYjNMdE5Ib003VVRseUNrQzZhSkJGYVdBTUh3V2lqMkE4NDNySW8yZkRKcXRJTkdjTmZXaDQ5RUVGVzMrdWxxeGxZN1ZobjZMTzNBTXFMRkt0RE5rbkYxSFJxR1NvYUxIN21uRG5MU0tZMTFzUDhNZ1l6OEg4eHVwdGtDZkFKZkQySW5wUVJ0Um1ZK0RBeTZXcUVjVWFXb3FTRks4OXB1''@;'; put 'put ''MVIvSEh5VTloWGtFc3A0T0M1TUJYeXhOU1ZvVW5CNlM3QjhoUDMzd1pNZm5hQWJ6aUdIa1MyRnM5aW9oTmdGaHN4ekpYd0NEWTJRSXFnWjRxNnl2cnFoeU1EK3BnSVpyTmZJNmtVekhzYmFSRUFnd0E0M2NQRHI1N2F1cjA0T0RwcWZ6QlRPWmdQbjhva3ptVU4rMjlaMlhsN3IxNzcxNVp1V2R2''@;'; put 'put ''NTlqWnVkbjNqbzZlblpzN084WmdVQTN2YjRDODF5RzNXQVZIeVFHOFJtU3VqUUUveHdRckF4MGZ6Q1lGNzVPMzFENllFc21CMlphVHExT0k5VytCVGVsaFB5N1VMQWFOWmJBZHdBWkNSaGc0R2J1akNzc2lZakpHY1BxQ0dyNHFuUFZUL2tWWHp3Y0xISzRDdy9tMHdLbjBOdTFvdW1KbkxIcjlj''@;'; put 'put ''T2VoM05qTXQvQkpxYW50WC9LWHBwcDZBNWY3eGY3VVlxN3YxTkNEOGhtR0FKNWFtRCtNdXNWT2R6WE01UU9DaGhYQU1rQ1NRd3NDY29uak5FdUFvTEFZa0pkTGxLYWRqSnpEcU5ubjkvajlQTytDazZhY0k5bktXR3NZcDUydEdYbU5PajZZVWJtd0F2eFhUa1dpdnFQNXhGajQwTnlPZ2JGOXpj''@;'; put 'put ''T1J6RUpUZVBIOStTUHRBMjJkVTUyWDlKcDYycHVUV1g5UFU3NjNFL2QzK3ZPK2RDcDBLakdYN3RvbGxNLzJaZmVtR0Q2RTRDMEY4QzlEWmhRVm0wMFlVSEJFcDRWOVlBVDY2bEVBSVJPbEZab3hvOUZvTmdJTkM1Wkt1bDYvSjRpVEF0Vll2V2tCNDl1a3p4dnd6UGlsbDRyU3p4OXN3eTlJdVk0''@;'; put 'put ''SGY0WnZrTTdLNTlRR2NITENQQTFVNzNFQWV4TXFPYUpCR0U0SzNwR0dBWWtzeXBKN0k1QWFVSDJqWUEyVUFFaytQMHBWZkthQWxqOStWNlM1ZWFVOVBoR0pUQ1FtUjFzTitJUFNRM3pmWE9keVovNUVyNms5R1k4bHcyUFJ5RkFvVzRXWHVsNXZTUi9JOTZ5ME0xaDB3aHI5Y0padTBPTjd4VzRn''@;'; put 'put ''SW80RXFvaFdRMFowd0dJMFdrNnpnZ3BpbEljRnF0eWlwZ2FobXFhYWtLOFJPbGQ3L1FFOUtNUklXUkxsSUJUTG5IeUFra3N0aGo4czZnYm9rU2J4ZTQ1MmRaM29QWDFtOE5UWU8yWjlvM081L1pucXkzcjlFNUhZUkx6L3NMbHkzeEIrTUhPd08zK3M2OGs3Vi83bXdLN1c0YW5iNTJ6cGJ1bE1m''@;'; put 'put ''THc1UHR3MDNyVjdXWVp6QjJ6RXdPaXBYcXdCR1lJWk5WRStoSm51RHRvdmFEY2NMQTk3MGg0N01JaW5wSGZqbDZUdkRKT3J1bHBXMzBQMWlSVEFvWWJCSVF6ajlZczlOaDBCYmp2Q0Z3RkI0UnA2QUFLR3MySmNJeEtoY0loMFJOcFRyVFhobW1ZWkdoRURaV09VZTJRMnFSUUtmQXF3a0ZtSlUv''@;'; put 'put ''azdXRTRZWi9uSjVUMnp2WjNEM2NjNk9vOTFqN1gzenZaYzBkYzBFbytNUkVCN2lJK0VXbllsVXRPUnlLNTBZbGVMcVdVKzI3WGY3cGpMcHFaanNabFVidGJtMk4rWm5XL0J0M3R5Zmw5SFkyT0hMNUJySU5JRlh6NFE2dlppN08wT0JmSSt0Tlg1MTFYQzBSdjBZRDhRMkxvV0NGbExWb0FVT05n''@;'; put 'put ''dnh6bEdpNlNGZXY2TkRYVEhBYStmbmI5RFBuNVEwU25DZG1INmh3SUJDNFhGT3ZQODNLYVQ3Mkw0c0lPZGZBdkRBdkxreHBPWHNVRTZRMDlleGdGNUQweW00TmRCZnNDeVJzOUhRVk55VXFiT1ZpckkxcHRXdHQ3Y1ZGREJkOENrVm9xZkw0Z1drd2toazlQa3NGUXlRYVJUTkExVkVKRXRoSkpO''@;'; put 'put ''K2NSMzFsaXBkTExXU0hPcW5BSjdqOGxhL0RyWWV4V3dEaDRKeUlTL2dBd1hNSDRjZitGOE1reHhONHNXc1VTbUFYZDFEK3NJNkZQV3ROOXV4dllzZms2NkFaL0ZYWmxYODA4L25XZjc3RU5mSmVYNFh3QmJlZFFvMWxNY3AyWWUyRTRjbVZWWVB1R29MbEJKT1Q3bEV2Uy9QdnozVXBxOS9pVi9a''@;'; put 'put ''eDdtSEVPTHhLck95Y0djMlNoT2ErM2FNWHdXNW54T3luMGFabncxOHlxZDA3MzJlL3d0d0k4cTVFTlpNZVV3R1NtTHhKVE5jekR4NlNLWlF4bStGbXMwVHMyWXkrWHl1YnorS2w5UVJ4ZWl5czExcnM1TXVXSTUvMHo3M3FTdnB5azc3dy92Tzl1K21FcnViZTh4cStDOVdodnM4RFoyK3BMeDVw''@;'; put 'put ''TXRNOG5JenB6eFBVV21OVjFuWk8xMmJnZTVGM1dqQ1ZqTCtUckFBYUhSUS9SY2c0Vm85SjBkWUdkeUkrNzFad2IxMllMY09HUTBFQTNJQVIzbHlyb3kwQzM1dzBoaGRzQkU5SHB1Q1RZbzZLbk5WZy90bzJCY2E3QmhIcjNkVGszVU5nU1k2UTJjZnVXaW5iV0FxUzFVSm5CSXU3SjlMNTdYelNP''@;'; put 'put ''ZGpsOWkzU2NYd01hckVrV0V4QWx4ZkdnQWdKRVBCSm9DdmtEQXhMdEx0Sm5HUUxDSU9sc2R6cXlUWnlaYzYwYm1sR3hsZG9HWHF0SE16cU9QSFVuY2YvN1lWVis1NHNpRFI1TlRzV2ludm02MkpUN2MzSE84dlhYUVltNHZpNFRxNjlvRGk1L1p1L3pGbGYxMzdjc2Z6bHJhMzlFZjNHTWc3ZW40''@;'; put 'put ''emtSUDZ1cWpEeDY1L0N0WEh2enMwc1JsR2JCREU1R0paUC9KdnBpM1Y5djZUKzZHUUhpaGQvWmo4eXZubHZkK1pySEc0L1kzdkxZOGFpdEw1ek1McWJZQmR1WU44UFoxNFBzOFNQS3dHREpnQU13SVlDQ2dwQWFrT0JXcllGUlFqVXF2MTVmcHkyUVZ1UXFrT005TTJxQVJrNngwN2VBQWp0T2Z3''@;'; put 'put ''L2ZmZjg4OTVOenExS3Y0akhRR2dMNGZ4ajhHNDFlQ3B0V0l1c1IyNFB3d2d3Nm9EdVNqZGhuT1ZuRVE4VmpXeE9sYzdtcUw0S212Ym5RM1Zqa0VsOFVWYWRBelJYaWpBUEJncXVxQXptTzNLcjhJKzNGcmRpNlJqTGYzcFJZN3BLL2hVTWZvZU5kUGZ0TTNOOWYzRzNJdU10R1NIbmRXTDdabDVo''@;'; put 'put ''TDQxcjUwcXUvWDBxUGpIUjFqMG04cEg2SHk2d05BcDdVb0pvYXJYY1l5aWlRaktydDJiSEJod1lOYVZCUHdCNmdMUzdOKy9uenBtZVBzdlFjTzNMczRjS1lsRXJva04zN0x4TVF0NDdsTFFwR1dNd01tT0xtbGV3OW1XeU5OaWFuM1RrNitieXJSSEcxcGczT2hjSHVFNlZkMlpyVVV3TVFNY2dW''@;'; put 'put ''TUpxUE5ZclNiN0lFRzZ0dXhxbGdaeGxrRi9TaEVmbjdKZll1TDkxM3k4NS9QM3pZK2Z0djgvZVRjN3I4K2ZQZ3p1enVHMzdOcjEwM0RxODh4K1Q4Sjg4VmdQaU9LaXhHVksxSmRTck1Jb3F1OFdCdG1Wb1pSOW5pQmFtV2wvRkdRWDNmZzY2VDM0VHNsRC80UnVlcTF2Q1Ixa1hOZGhmSFRNTDRC''@;'; put 'put ''TllrQmRYeks2ZGlvcW9vQlh4aVFnWTdNZUI0YjJjdkdQU1hkMG9QL25RMzZWWFZNZWw1M3dubDVVRnBzQmEwTGNmV0VhTFJNaWRkcUVFTXVaZ003cUNiS1dDeG9HNkFSQnJ5eW1lY1JOaEx2cHNOTGUvRUhzTFhsanVGRmRvRERkOEFCWHQ4bEgyRDZSTk4zOEdIcHYrTTUrUWpiRWxIMUNQMmU4''@;'; put 'put ''Nml3NTZzWVRJT2lUMUZYbDBGSHB2dWxmcWtLdEJtV21PNFdYa2w0SjFlSjBxSW80bnNwT2VGdXVtM3BKZHdxajRzK3pIeXNWdXJBV0xkNVpITVJESjVKVWFTOXFKMEVzdWNaYUN0UUxHTG1CY05vcGl5VEpRNlF5Y25BTHFCS20xOEQzWXMwWlZnR0piTUhUelpFblh0Ynd2MEJFYXd6VTNjeUhz''@;'; put 'put ''MUZkcmJpZjVSaWZaZDB3aHo3WUtncjJENGJ4RnFEWGt1WWRNUE04OGJKbmxPcnhTTEwwNlNBa3dhZ0NSQmQrMFI4NmF6MEtrNU5TNys3R3RZcm5RU2Qrem5wL1hqazFFc01mdjB3TG9GeHRWUW5aWXVtb3pFNmtFR25SVnBCb0l2MkE1NGtCVUtrWHJFTFVHNzFRNncvcGFGZnJLK0wzMkpkTmtG''@;'; put 'put ''ZGx3R01FcTlnZ0JQWUwySWQxb21pOUxyME9sMldEZi9INmhRSnNzOS9Wc2Y5UzRiTGRhS2JKNlJrVkV0aFZBekw4c3BqUGc0akR0RmplWUlNd25pRHEwOVEva3R4K0hmL1AreHFtZW5zdi92QWdidjNqOTg4TVhIenVJeTRDc3M1ZU8vUzBtY1BkazY5YjNMeXZWTXkzako1UUhIMklPek5CSHdI''@;'; put 'put ''TEdOWUJaQXFoNm1iWk4yUkQxc3NOOXNzWm51NVhRZzA2S2dUMzFQZ1BYYXZ5cGFGU1Z3OWNHVlB6NVVELzBmRUZmTW5Uc3kvVE02MUhjNkRISk53eDh6ZzRLejBmREVNYkdCVjVzUU05YXRyaVE3TVBPYUI1RENIaDlmTnAyTGZ0dDF1RDltRHNVQ1FNbUdRNUU1K2d6U0dGWkZzTU92Y0pJcko3''@;'; put 'put ''eUpOWTAwNzQxZDJMYW93V3B1NHB1bTZCbDhCU0xqcTJrUnZZa2NnWEFDVzlQMzhjdUpZOEZDcUdGeEY4Q3FIOVlEOEpOUUJwNXFteTZDS0tPeE5JWGVmenlNSVZzcDdZTFZXYnhCc1lJRkJUcHRVWUVZT1hqYi82TWpEejRrTWRGTHNaUVkyZk12VjVSTDhZK0Q3TklXYzdFZDhqVVRJVXloSTVa''@;'; put 'put ''WERUdTFpUXJWS0ZWVFV5VnNrcjRJbzRJdjRLS2dvalNzcVNpQ29RbXVkK3ptY0NrNzk4djNwMEpGYjB4Tk5lNDllZlZuSFNzOHRKMExoNDluWVVOT2VvMWRlbVRzeFlzeWxXbzk0TzcyWnJpcjM5SGgyVC9KUWEzUGMyK1ZyYVhPNWQrL01MaVJsUGhnRkdBMHpIVVAyMVJUTVN0bTVvcWphMkF0''@;'; put 'put ''MnBSZW94ZjByVXZNckVjektMb1dPNXdBL3prSi9PL0tJZFlwREgrUGlyZG1SemVhenFhS1k4cTJOTEF6WG5oa1Vzd3p6eE1FelU2YVJXMmJ3SjZXVnZ1TWRIY2Y3Nkc4enQ0eklhMVgxSVIyZFM4dnNZT0NhQ3NPVXVRNm8vRExYb1h3TStBYjV1dlFQQS9DRFRkaEV1UzY4N2lJSFlDdy9tRWth''@;'; put 'put ''Umtzd1ZobmwrOEFvYUZpSmlYRzJlZUFVbGtvdGxhSkpONlkvbk5lSXZmNmhiend6K0pXdkQvMjg1eHZmN0lIaG5pTDk3RFZGZHE5K1hsNG55RkJ5TStOdHdCc05PaGdhanA2eW4vSlJMT09heFdJUktGeGhsVENrZ1kyT1QySGQ1STkrTklsNTZiOG5mL1RxSko2WDdzYys2UWQ0SHUrR2Q1ODh0''@;'; put 'put ''Z1hHUGdOajYxR3RXSzNqZ0FnTERFN3hCRmdFNmdsUXhvUWpDMG0vMlBuVG4wOUkvNjhQVitHL2tqNFBveDJYZmtiSGFvZXhSRlh1VTNpdXU5a0t2b1dDbTgwaXNCVm5aUmNEQ1A5Mi9JQzBGNzhoVGVNTHE2OG5TWGRYY3ZXcnN1eWZXdnNnYmlNL2ZKdFdYQklRQzE1VFB6MTM3cWZraDYyclZ1''@;'; put 'put ''cDdYWHRqN1ZGODF6WStVQTUwVyswQVhwSmRvQmkxd0h4VmhmbGsvOXd5b21vWjlkZlMrZEQ2ZkU1ZyttbDR0Y0IwUCswaHYyeDk4eHdkUG9NL2d4K1VjZXVDN2tpLzZBRHV6cnlXTURQMTRGNnRlRmd1NkZDL05RbnNnZmQrTDNOWCswMDM1MEFLL2VyVlYrbWFwYlYza2wxcjUyRzZCamJHTmo1''@;'; put 'put ''ak9nUVBBQ1JrWnZXQm5UbjVYTHVKaU40a0wwTmZKK3RyZ3A1RDhNM1ZGaERIOHF4WnA3ZTc5OFlzK1VyRmgyWCsxZ3I2d3krSWdLb0I0M2FLNDFXWTB6aEJJQWlneGRmVmFqbWRWa1BOV0syT2FHVnZKZFhpWFl4V1J2VllwMU9WTGplWW1PNkEyKytwaDVGY1ByL1hhZ0E0SVljZEFGWHM2bUsy''@;'; put 'put ''RWJWd0xhQitxZUV3ZlBwRTNuMGl1K3VTekdMN3hOTEF6b0ZwMS80RjF5WGxzNU05dXljNmlIRE5RZWtidXlLdGUwZGFKeUwxOXI1OXNXU3I1TTYzVFZmM3RDYTc1SmcweVlOOHNZQUYwaTEyVnBRUnJZYnh5Y3JSZ2x2R3hYU29EYzQ1cXhVaGE2UFY0M1pCVDJEYm01eHpRWXBUUXJGUFRoVzlI''@;'; put 'put ''enVSejUvbzdUNWNuOC9YSCs0T3pTUVNNOG4wZEN3Mm5TYkM0STFqWTZjR085UEw1RW5wMzlLZFVrM2JvYzdPZzIzVTdYMHdDMmVVQUhqL0J1Qzl0UTNpMnQ0R2NieWxEZkxiR3dZSGJ4aEtMdnJEN3FGZ2RsODZ2UzhiR25hSC9mdFRwcUYzall5Y0dncjVtbXNiY2djN09nN2xQSFhOL2laNjlo''@;'; put 'put ''bUFtMmNkYmdMSDRFYWh4UURIVkd2bHJIbm16MU1VN0dLNFdRSmVnY0lOS3dlOXZrcUJiSmJMSGdxdVhoVjROekdJSlJuMHlKT3JPNWJUbllPbnhzWnVCT0JoOStwVldRcXhUTnZCenM1RDFGNEN1QkVmd00ySjZxaVZDVHlHSTB3UUUwNURsZ3ZMYzQzcWl2U0hxaXFFcXVxcWF0M1Y4SmNEREFP''@;'; put 'put ''NlVwOE1zV0l0d2xOSGtrVEhlMkN4K01nQmQ3RGgrdmIrNndaM1hMTmo3QjBkMHFnMk01dWF1TFFNWDZzN01CbjExVFo3bzBPbnhrWnZIQnkrZFNFOTM0TC9kbm5uMUJGR2Z5QVA4QlI1QmFUVkhyR3NBdXUwbFJqcHlJanNES2xCT3AxMkNUU0dLbVp3bzBYUWZtVEhHOHRRcUFabFZ3ZDB0bEw2''@;'; put 'put ''NVlKWTV2V3kyQlhQdTJWZTU2WDhoem1HbVBOWVozL3MxbHZ6TXpQOXFWU2t3UkdvOWhGdFRrcmhiK2NHMjBjOE1VZXpSNmIxK05vTXFRRVkwbGo4a0xpanJwTG90SW9mRTJnWkdKNk9yRkQ2aG9sQnNhRnVHVmZCbVdsRll3MGdPK1Z3T0l4UUgvRDdmWlRHc2FDUUM3TXFNaHU4bVlBRjZSSXNx''@;'; put 'put ''T20rY3FqelNsOU53MkxMd3JHNkZiSDMwcTZ1UzN0N2p0YmRPcHRJekthVDAvSDRkSkpvcGRiZWxmWkFmV3V0Wisvay9uUzdlTVhBaml2RVhQcVF0Q2N4bHdYN3ZtVXVEZEJuY0IrSHR6OEFIdHRwcE1JaSs3WVpEb095eHJ4dHJpSnpERlFKd2VhMVVmdVQwanFBVW5IWENBcTU0OHNXV3ZJVCtl''@;'; put 'put ''aElPSiszTDdZUm9YVlBUbm9FOS9kTUIzcUQwbU5BMTYrRk13eWUzZkQrY2ZJVmtORVYxQUlzdUZPcjZNRUpvNm8xWFZGdU5qRjNxWGFUdTVRSEViTGI1YkpZNEFXOGhGemlzZ2pWMVlMRnRiejZCb3kvOXRUYUJQb0lHOTlOY2I0QytISTUxc0JwYVl0bTRqaUdKeHJnY2hxTld6UEdYTFJ1VTdY''@;'; put 'put ''VFlSWFlySHlKazFZNUtxWTg2Ynd6eWdyZUVhMG9NL3NGdHpmZm4xcGZ5cHMvTWZCcExkOVVUektyTDdRTk0zZ0RTd0RxZXhKRzk0b05CZzNRRzZleVc3b2FWVDhSckV6YVl5cm9HQzhGMkZiL1lPTEx5L2s4YnByQ1ZkTFBmblgwZlFET1doeVY1UmM5bnZmRHVLcmRXMWxpOTQ0QmxJQlZ5RzI1''@;'; put 'put ''SU9DeUY2WEVsb1pxMmU3VmFnVkdYTG9sTUFaMU90ZW9oc2I5NUhQM29rYXZZUFZhdlRZRFVGSFIwZXMyL0pLMHkzZ0w3K1MrNlZoK3FFMmN5Zy9TdDd4MUt0MCtaNi9jMzFtRUVoUDU5VStpSFd1S2Q2WkFKQlZ3VXRpRWs4S2ZnWlAydDRHVDJsbUdrZ3FmSElSNU45bWJyb3ZhbTQ2M3RqZGZP''@;'; put 'put ''elU4ZkdwdzhNYmg0UnNITTR2WjdHSW1TOSt6cHBGM0RRMmRvaElHNUV5dS9YQXVkNmk5L1ZDdS9WQzd2SjVwNERsNVdFK0piQmFLWmZPNldLWUFzdUtMeW1ZVk1IK1diSlorVFM0c2w4aG1LZzluUUI0S1c4aERvVWdlcm92Q1Vaa3ZiaWNQaFl0eHdyZVFoOXJWU1N5c0M4UmxLYlJCSG1JMERm''@;'; put 'put ''aTFBR3MxMFN3OE9UcXI0dGU2SmdIQ1E3REpPcmNsazdRWE1PcHZUZ3kwNzAwQ0diN1NrNHRQcDZVZkVlMGwxSTREM2VScEdET3dwYjNwMm14dkJwRGZGeTYyTnpQRjVxWkRrVXpVMmlUczJMNTlWZFN6YnlFOTJEZXdmekkrMVJvLzBGeS9jNlNscjJ0bmRqRGNNcHN5TmZsaXZTMytZTlR1N3Nz''@;'; put 'put ''MDkvcnIzWW1XcUsreHFWcnc1Y0xoL29ETUkveXd4aW55VVpEbmNUSGl4RHEyYjhMZFRGa2lXYVRPVTRDQlRxZHFBRXh1V2h1cDRQVExlcWlnNUgwQVI2SnUvRXdXVDlsYXExUDlNelA1OTd6SFYyMnBOOW9yaFpGMlBKUDcwSWR5MGdPZVpsTVo0MDB3NzM4UnJVelBITTB1R2RFQ2Q2R3pVZjBJ''@;'; put 'put ''VWVKQ2FwS0dIZG05TmkvemNSYnBSWlRkeWxhNWdQK0xrbkdiU3RSdzNHOEFCUU5SNHpIcEtVYlVlRmplTCtqVnhFYTBhaDZFYXFtcHVvRmdZUmFGVlRZdDNUc2VmMnpIcTFrUW5pUDRVU3BETUxBOXhGbWhmNm1OS3J5MWplcnR2ZTB2TWg5NWYrK0QrUTkrS0E4alR1Q0g2R3YxRFh5L05GK3dw''@;'; put 'put ''ZkVmWVd5V2QxUEdhN0NHc2pscTZjRFlIQ2x5Z0lLdFN2SEVBeGFQTlpoMFpwTzhGWis3OTk3aGIzMWwrTk9mSG43bXVlOS9IK3RYWDN4eFZmb2pIYmR1Yll5NFlGeUJ3dHFvSjdCa2pNRUFWb1l1b0tHYlV6eWJGcHVYb2FHTWhkMllZN3NveC94aGYyV3R0N2FwdlA1Zis1LzVVdCt2cXNheWp3''@;'; put 'put ''alpDcWVyajVpbEx2enM2cE9kV1N6dkJkZ25mZ25tM01hT0ZkN2FqczNnUHVsWmZJZjBGQjZRanJYZ1QzYTBTQ3NkYk56dzJoNjhsendCSEFWZzVHSnlvQkxqb1VhV1ZRUU41aFdDeFdoU2NGQXhwNG5oTGd6c1AwMTFLWnE5NlN3bmRxY2NGT0ZwR0p6SHBsbC9JdHNXOTgrT2FEdnlMdXp6Qjd6''@;'; put 'put ''WWxlL1EzaG5xVDM4d0ZXMkpwVzdQOUFmMWNYMU5vdm1PZU5aa3ppUStIRTdVNk9Nd3kyVnJqNks3dDdHSnFZUzlMSlZTa29Lby8ya1Azcy9XSGhMOWVtYkxDbUJSTm1JOHVKNVd0MFJCTlVtelpRbHZDenRCYkFUbGdINld4dXF6ZGFRV0E5YmJHM1h3Q1NjU1l5c09CSHhzeFNPei9uaGJOZ0U3''@;'; put 'put ''ZVNjc052emhlTlpzeXNidmFLYUwxUWY3TTdlbllpM1IxQWZUL1NIOTJocnF3YzM0TlA2Q3dHUHptaVQ5RWhrdUlQeTQ5RXNXSmFheVp0ZmFIUG9pRVZSOWpLMk9DanpYcUpwRFlpVWwraGpUaWVSa0x0QU9raDlWNHFtK1lYT0NDR3I4ZEhVSC9wVXFYeDhGKzIwYzFRQmxBWmRzcUs5eFZ6bHRW''@;'; put 'put ''ck8yVEZhQzFCUmRXWGxtUEVpb2x0R0Zoc3U5NlJoUmMzTHBXZEtrWEhyR1ByQ1hnRHZqbDJaall2NUlMbmNrTDhhbUc4TlYrVVp2ZDFWWXVtbStyMisrSWNSMTl4ckhydXJ0dldyVUtIWnhRVTl6ZFQwbnpXc2FxcHV2UGluZ3U0V1RjdTVVRmhZYVlYR3VQbEdFbzZWSkdvaW51WjQ4SHRaaUFr''@;'; put 'put ''eVRKOHpseTVSOG1xM0I4MFZ1OTFwVUs5ajhQdERmcUtya3QzdlNXWll0dDlIOHJNVTB4NGRFSkdOSExnY3lkTWRKVjd4eUlRZWMrc1VYdTdycTYxN00zZDUvb2xOTVJXTnQwYW5rN2JrWE4vaWVITlFUYk1QSWdNSDJRRHpMTmppcXd3VFVGQTNobHN0WVdyYWNYK1N3V3kxcUNuYWxrU1poczNS''@;'; put 'put ''NHU1ckVCeTlHOFBpMmgxNTU1WlUrZUQzMFIrcXR3djI1UGJucnJvTTNmQ2wxV2JIejZ5ZDc4Qng1Z09WQnRESXZTWkFtQ2dJeU04ZmxrcGFqd01LVFcyUTZVQWRLc1NMZFd2VDd2cW9xb2RKVkpaeFRQc2tlK3VtcXBML0xuNEMvWVpUR1g4Wi9WOW1JdzFwVXllRXdlbEx4Mjh6aWE4alp0K1B6''@;'; put 'put ''b2ZrSzNUZ2p2VURPdHJ4ZG40K1Q5ejdSZHpaTFhxNDRJL082NE5wTGdNUG40TFJCZjBkVWZDSnltb3JPOTFBeHh0eDJ6RzBiWUZJQkt6cE1CMVZwcVAvVzJMK1NhenZjOWR2MGpXa2NidG1keSsxdVdhMG5YMXpkSmVkaS9nUjlDbmNBME9wRWR4R1hJSlI5VEJZbE1HYUtvTGRZWGMxTWtKKzRy''@;'; put 'put ''UFRENmxMOFdXc2llbzFtUWFKcjJkNHFuVGJBWmFzQnhKZWU4bWV3ckUxZ1dUZUFPZzN5V0hNRnpiWUFycjJ5emxnUDBHRjJ1a1VQYXdLWWRYcTdOZ3NpelNWMUlaZlY1L05Sd1UxQng2TFJ6TFpWdEJ2cXV3TGhsVW0rRkd3TFZjVXFMYlUrUjUzZGFpdXY5Q1NxTlBxb3Y4WVhxekFIS1JKWWpj''@;'; put 'put ''SkVEck9haGhTYys3UHMzQ004UGZjSWVsckp4eGpCLzh6NGxRKzFpOW5HS3FkSlErVHdBa0YwclF3aFpRWUcwdWNBVWtTZXordDIyYTBGdkVURkxFeEpqcUp1SVoycWZRS3p3U0dGcjNtMnlDRlo1M1BTbVMyeVNOZ2VtTitjdTc2eUVkWks4M1Q2MEVmUkY1RCtBc0huNVRTZExkb2N4ODV0MnB4''@;'; put 'put ''VTIyQWVmWEdiTml1Rk5tWjB4elp0NWdwekhVV2ZrOXVRelcyK1VSakhpTDY5c1kyY0g4RTl4R2pCZ2diRmZvSHlJaWIxOVFnREY5TERPZWcxeXdaZ2tMcEYwQ3NWZjdaVzFweVlHV1dwdEVEdkNvVkJHWUZqWWpWaW5xWkpGS0FoZ0NWaFV5UG4wbXY3Ui9EdFJDZDVmcWFFMEdsQ1JaZjBEdndS''@;'; put 'put ''NlhLa3hMMUZscWVRUWErTDdrdzZHTkR3T2pkZ2FqVU5tYmtxQUkvTE1lRzBDdnBIYUN5S3cxZkFHOUs4US9VeU9VWVI4SFRGcEFMcGR3RFc3U1kweWNaR00zTm9INFExcDk5dUoxcHZFOXZRaVR0MXNWNWllSE1IbWcxRmptelJENDNSdEJ4andOOE0xR2NGQTZvR3BHVUZWdm5EWmdxVVplaFdy''@;'; put 'put ''bEN5ZUcxUHVVWmZ1NWs4cStZL1ByOVZqa1k4eTNueFJxcHQweC81eko2U3BBMktUeXlIZ3VGM1NLR0I5ek44d2tWNHVibk5jZlR3Tm0xT3FtMkFCbTdjcHMxY1laeWo2Q3E1elRwK3IxRXQ3Y05zcm9pOG5yVTd0aG9IVnhhMU9ZNXNtOXVzL1FMR2VZMnRKeUt2WisxdlM5cjhPN1Q1STF1UFBN''@;'; put 'put ''N1J0WHMycmdkb3FSbmVYbUN4MGxxYXpidFIwMWpVWXhvb05SU3BHaFVWOEZGYlVjTktyZXpRelF3eXAyemQwR2ZHVTFKUWpYeWdxeVFQNWl0K1RrNTRHUmxSVTE2K2cvK3hrUGFDdS9PNGRmVjJPZm5sRDNsV2lnUndZREY5eGxOYUZKN3lpUkpZc1RnMWcxV3JjcjZQbGZDZHpXMk80OXcyYlU2''@;'; put 'put ''cWJlQjhYOW1telVxaGpSazl0RTJidWNKY1I5RnptL2dYUnJ2UVgrS3ZFUjBJQTkzRGVwb2JDVXBsRUVna21IVm1uVGh6ZStSMitlZURZVHloL25iNzdXR2s1dlAranVYSSsxQ2MxZ2RGd3JVMUxvZkpvR2MrR3BhMm83ZzlISEw0UkZjVVB2SDcvWEYvTEdnTldsa0d0cHJWR2dBYkwxdVVMNWZr''@;'; put 'put ''a2NPSkZUSkZja2dhVSsvSE02a0RkKzl2dnpTV0hwNkxaNEEyMjA5RTA4T3pxLzhXOHVOVC92a1kwQ2crY2ZORXlDZmRBbitSbW5mdldQcnN3WUMzNjFETG1SMUFuZlEzNlRzcklmeHdUVDBRcWZUOXFmZE5abzgyU2VNMTlReDJMS2JNenFsTk9jc25TczU3YzV2ajZQOXUwK2FrMmdiTzhndmJ0''@;'; put 'put ''SmtyakhNVTNiMlpWbVc5bDgzVnFjejE5TVp4TnVVYXhCajNoSFBRTHV1d0V1VW9GSzJCNUtsdzJDcWNsVTRoNEtuazVRaG9zaWhEdzEvSTBPajU1NUlNalZNc1JhUHRwbWRtQmdkbnBCZGttVFBEY25HZUJScHVFV05HVU1LWkdnSUNoMXRSRXk2Wld4c3Y2dVIwUWF2UDQvZEV2Q3drVVpLN0hj''@;'; put 'put ''YnA5WUlGbFhGVC8rcE1lbDh1dHkvVkdtbnJTZTNKN2hrSTd3ak45ZTNvNkJpZmJHK2ZGSWs1T1oxSVRDZFRNMVh1L2RuMGZFdUhyenZZTWRveGttNGJIYyt0U2dCSE9WNzVNc0N4SDJRdlFYMlh5L1M5OFRrSDhQMUUwZlBuMWZhWVAxRGMvdW5DYzNOdjhmTUhDdU1mblM5Nnpya0w3WTFVT3dN''@;'; put 'put ''YWd1ZmNYYUREUlVITDYwSEh4T1VhZ0ozSERVcUNIZXRKRHV2S0RLQjQ4am90RGFPVzZValpDdElqSGEvWExac05STTBHZG8yV0cwMGNGWWJVdHdPMGxVN0hZZ2lsZTlKaVozc3NGVXUySkdDQ2lOWG45Zmw5L2dvQXVSckVrdE5UUzZLcnNnTjdVMmdMMFZ4ek5lWktYcFhqWEgzWGV1dXVHZHA3''@;'; put 'put ''YVhIb2RmQ0F3M3Q1VDBuc1M3cGxJa3BEc3BQOWNoUnNvS05qWUdGc1BTYmJsYzNraTJOaTBreDROQnFvN21sTmRjbzRsbGdUV2V3emd5Nkk3a1RjMDZEUmF1eFlwMDJCV3E4cnFQV3FYdVBuNFN1Q2RWZWc0aFQ3UWxDS25xTWJxYnBKZ0RYVzZrQnBmc3ZXb3JlMEliVUUwSkZDZXcydEFnWEpC''@;'; put 'put ''TXZNeUFxSm5xOE9hLzVFUllRVzBXV1MrSENKSXRKemFkZFdrZHJHdVVSNWlRR1IwNDllczZNa2VOc1kwalJpaXBOeVRKVGkvSkJNQ3pmSXVMcnhPYVdGZTR1ZVA2KzJ4L3lseGUwZktJeHo5QkI3dmtaWncyMXNuSmZrOFQ4Z3R4OEZnQm1MbmgrdmtOdi9HM3o4aG8zL2tqeitmZkx6SDhQSDc5''@;'; put 'put ''ajRjdnVqbjFtdnEyZ2xmdy9hUWhUdEVhMlZ6S3RhQytvQWFBTTJxNlVNRDhsNTV3N1ZCUzFzeUE1eml6YWFwc0Zoc2xMOEdDeTV1cnE2YUYwazRBdjRhZDZzS3BrS2lWQUJLaURwU2RKczdzMWVlZnhQaStLVnc4Tlg5WFNkNkQvV0Z6NTh5bm13UHRzVkRCOXlqbFRNeG1PemJablplR0l1UXl4''@;'; put 'put ''Zk9MRHo5RUR2dGFQREozdG1adWF6cVhDMXI3ckdHMGw1Vmw5STdtdHYyNU5LN3NtMTcwMEJ2T1JZRU9VMVV6S3ZHVm1IK3lDRDR5NTJUbjNvdlZzK1A0N09GejEvWG5rTzhMMnVlSnluQzgvTmU0cWZQNkErUjBjdmwzbFdIenBOeWtrZDg1TzUwU0c1d0xxR1ZpdFExd3ZTOEZpcjBSN1dxVUZH''@;'; put 'put ''Rnkya2JVUklwNWFFcU8yMFdzMDhrSTEyaVhXWVhCQWR6Q0J5VjFhRGNGS2RiSHBxb1JZSFBjRXVLaTVxd0E3Rk12MHBMYi80amxyTzhEWFZKSjNOWDFpdll1QUs4UzBuV0c3TnJBWUpMUHRRc05ybE5PcTBHajNHV2s0SmhLd25NR3pXWER3ZVQ3T255VzhKV2pab0xzV0tDOU5ibkZpT3dta1Vy''@;'; put 'put ''UVc0WmtOdytNYkI2ZjZHNFc1dmFQalU0SzdCaG1GUk90bUNUYWw4ZGpHTDhXTFc1WlJlUytieHgvZW5odDQxMHVJZkRoeElEWjBhYVEyTVNtL21jWHVnL1ZEdXUrMkhjNEdCR3VrNVA1eVJIRmVnWjcxYnBqR0ZKamMrcHpqd3NhTG56NnZ0TWIrdnVQMERoWEdPVHN2UFpWODZIV2VmTXM3SGkr''@;'; put 'put ''SnlGOHVaK2JQaWNzS2ZINWZqVnJaSW1pbmF4d1BLUG1CL002akl4azhVL0FESEZMMitXSStXWmZyWmdrdy9ObExjZDIvQlAyQlE5TGJTdmhjS2N0OHdMZk91aHJWcHpncTZtaE5WVS9pNXNJN1RZNEtkSUZHNEVaQXhpQm8vUjVrT3pTNlhHRlcxS0N0TlM2bXFycXIyQ1lMZzhGRFpvbFc4Tjlt''@;'; put 'put ''Z1hIUWhTK2pXckpGd1ZtOUx2TU11OUJjcU1Hb2FQYlVOMWgvY2YvOGR0Ym1FczhuMEtWYU4wZWl1YmJEakhhd21nK1owVFpNYzBFZ3ppTEJGY1EvVlNOeVlLaVE4aVVVTm5KN1hZNjIrbVNaQlU2V0UxeE8rVUlucW91dXNBQ3ROcjFkam5Fb3dEZFlkRG9jejRYVEFad1UxSk9RcEF5TzlzUEww''@;'; put 'put ''Tm1xSVhWQTNFeWhLK0NJNXVpMjNveVRwNi9BSmVYOC9WNU8vNkM3ZFVXUGZ4dXd2bWhER3R2eVJRaGFZYWk5OWdPbllBVVhIL2tPSnJpN25YMUY2R0ZEbzRaTkZmVStxZmJFZVBiTk4zK2VWdmdUckQ2N2Jsbyt3dmtHbDc4MGxlRVJ6cmI1R25vUTJnNnhOQldqeEZtU0FObzl6RnRvSTJpajJN''@;'; put 'put ''MkRvdTVHYW4zVUlhTFFhdmhrUSt5d2FZdERUYWtzdFRaeldvbVU0bXNwQ0JaWEM1NmpqblBFOUp4bHp1OTNON3FZZ2pZQUd2SXJyM0Z1U3A2VVd3cVBONGVsRFBSdmkwK2ZQNTN2V1VIR1FlblQxUzBWSlczOGI2KzFkZldSRG1Mcmd4MGdVL0JqSFlObGJ3QlgwajdNRi9lUFlMTnJLQjRMTDBQ''@;'; put 'put ''ZTI2YXZxTGh5MFVlcGRnQVpvdlVzTjllcFZnb3dRTUszWFZUTkpLWUx6aTRqbkZZY2VaWGNWbzB5WUFRRllXWDF4RGFvUmJGNmEwUzFRWEZmcllMd3FSanRsNU04V0ZjWk15dWhiUTlHN1JucTJVQ1hEa0RVTXVCeXFZY1V0Tkk1MG1PV3owUnRmem9oV3Z3LzRiemtHeFJRMEdoNEVyd2EwWUEr''@;'; put 'put ''dHVVTTZFTFE2elRLTjBhZ0hyVno5d0JJUUdKbGFxWWoycTAwWkFQRGhyWHJRYkxKS2RtVk16T1cxQnZ4ZUx3M3hhRFp1U0ZlU0hDZHJ0THlhSTNkOVlaTUdXOW1tVExrV3NDdHNZdUJ2RktPaHNsYlp1Y05HaXRQbXdJSndlTXZ3OTFqeTNCWStNZjBXUHJITitxdGVrWldzVG9qeDhXYUZqejli''@;'; put 'put ''MGxmT2ZhTjhmRVRtNHl0S1grblh0TVpJN2d2NFUwR01URWRpN1RucWxJcWhQRG9zSG9qV0V6MWY1YVNHT0syRFIwTkc2aHptOUpvVmc2b29sUVAxNlhRQ2RXc3lOSkxqamt0eTNERWVwKzZ1ZUQ3ZWxVMVh4Q3BpNFNhdnA2YmFicVZ1cnlxVHFpVFJxMVJrdmNqNUorYlZZYmVyeGxzWE1BaE9w''@;'; put 'put ''K1dYYnl2RmJxK251cm90NmdpSDZPVW5jMjgzM3c3MCtmOE4rRlhHYUZyMkJSNWIrM2lKdi9CbGFLTmxOQzNyL01mdVVISUcxcWJSRDRFdXJUVE9UaVdtVlk2enEyWG9GR1NxdlBHQmZHVHAxcXFVQWQxQ0piNGZVdXlydG9zeXdWRXhVUjB4a2JzVlVjaGs5Tm9iTU5jVExOYm5vVGVxMkcxRXcz''@;'; put 'put ''bXdYTFpmT0RKVldhd29FQWtMRWpmVWdSWGlxREJ2bVVKblZSZmtwT1UvNnBJV3FOVldWVlU1U1pmbWRWdnk5ZkxpMUZpZ1VMWHFnSFhXdCtoNS9NZlZONVNGQWc3U1NzMi9XdmV0QWcvak4vbUdXTTRkMkdMYVFtNmNVSkliTjVyUDB6d1NHRzhmNFBRVklFY2FBWGNaVHVOdnlYWWJQT2NZcms4''@;'; put 'put ''b3oyOWp6MWtkRnBPYmNVVnVscFhRRDRBRWwzTzNRcHRKcFkwRlBTcTNlVlJ0STlkelBhbU9BK05meFdRY0xwSnhkSnd3YXpPcHRMbHVZeHM1ajVaMEFZNllhUWFieVZobUFNMmUweE8xc20xVGtaZ1ptZTJGSWpFK1RaRWthK2NGMGlYMTd0a2pmdVFqWFYyNExpYkc4SlQweXFnNEtrbW9rS3VM''@;'; put 'put ''V1E1amcxaHJMT04xVktqcWxlcTVTcVVZeE00dWU4RThhTFhLd0JoUDVjZkg4MVA0UUxQMEFuYUd4QkErSWozWlhPeGp2bDcxTVFPTWZsVUNSOWtXZkZteEJhbitjWmZjRjg3bUw5bVp0U2huODN1NXZmUnJta2VvdG9mbjl4WE5kYkxnejliRGFXdzkxL01GdTFOL0RCWDVsUk1Gdi9JeDlPVVNm''@;'; put 'put ''VVcyczg0V2JNZGpoOUJXL205Y2p2NnhKTzYyMFg0bHVQeTByRE9uZ0xFK0MrZHFBWXUvWGN3V3FsRDFwRkNHYXFEbGRtcWVEVE0yYXEwMURodExySk1Gc1dzOXZLYXlReHBoVzFkYi9MSW9YdjJIL2ZjY09IRFBmaEtYUER2bGdJOGlqSGQvZXYvUzNmdTdWbDhnMllsYkp5ZmVQYVRZbGR3YkxK''@;'; put 'put ''ODBpZHJSbERqaHhIb2RkZDB4clFFNHZWYXZXVFlaaUU0blYxVzZSbzE4R1VkMWVzVmxsMHI1d0lwSXRhZHkyWXd2Nld1Tk5OT1VVNnN2NFBPYllkRWJIWGJyZkx4SXlEWnM0dWhJbHJaY2greXBHN3FoMGZ1dWtVR1doem44THEvbnVxR0N6SldPRldWazRqTWJjdFhIZTNzbTVCek44VzV4VEJh''@;'; put 'put ''K3hXbWFhdjY2SW9NUHNyTk5LL2o3VEFsZXlIbUg5R3huWmQvUG1LS3JBZjRlWlBpYlZ2RDBDYms5NE84Q3c5OVo1Ym14YUs2VDZseUF2Ky9kY3E3OURIOW5aZnkxeVhPeHVqaTJ6b3l5enJ0S2NGL09aYVRybkpQWHFjUldZMnNpcTZrVDBSdWlNOW5hVUsvUjZkMDA2bDVkQ2FLZHBsaHJGUDlq''@;'; put 'put ''ZEdOY0ZmVEZKUkRzRHRrZzB1S3RBNnV4VFlIVmkvZWkzc3Y0NWtEcHhickpRZDh0UXF0YmRKUmpxeVpmeEVkVEc2d1dBNWdCUHRrOXVVMTBGVis4ZXBCRTBrZDJWR3dWYUIyOFByRjlUZUhOODZtU2VHdE8yeFovaXlwRGxwY3FzcnpVUEp4WlRXdExmWjFHeTIrTWhXdEczS0R4RG04WkVPZDUz''@;'; put 'put ''UktpeWVCbzNaZHgwWUQ0UlR0dEdSQy9TSzl0QStLbC9aU0F1QzhjZW5zQmNYeXhCRno4OUtHUkxRUGppYVhBdGxtNW83dTBqU1duRmF6ZlBrMjNtRDVQcXZRSnRIMXNHL3A4WHFWUHJNOHF0YVJBbjdTVzFJTWVGdTFWY0xUSWFRYUpZS0tYWjQxNHNFWTk1Q2FFYUlycEZTeEVSVTVSUjVXYW9N''@;'; put 'put ''RjBPVUx3QVpEa2Jxd2VWalB0b0VIYzZiZlJRd3h1YWt3TEFnaytzcWtQaXhUUTRuNUdXUFNNMkkxVFc1NFF0YnRwK1N1ZXRXNXhDalZsdENZMnRnbldmVVUxc242Z0FacjNIRWZQaWE0bXJPZWE3Y1NnajlvSU1aUkVUaUpJcTlIZVhJWnBiWS9oQ2hCZUFGNWEyY054bWtXZFhOOVRFa0NKcnZm''@;'; put 'put ''Ukc4anBpM1VDY0c3WlhnbW1GSFhqS0pBczBDMk80aXdiMnduQW9xNkliU0lxdURSRDI4a3dId2RLY0RlU1hjL2FibWp3VjJ3UlFCbE1GbWR5eDZwMGZqa25pOVVzTXh6TktqajZ6aEljcGJubVAyQzY2cnlzcTVLbUVuMVdqdjBtQ3JIZlkraGpwYm96ODgyZUxmaG1qdzJnb3JqeE53cXhaU1A2''@;'; put 'put ''VmtuY21QVmxjVWZaMzJ1OEFXMFZ1d1k5N1BOYjlRV0x2K0JieHVWTFNLbTNubWIxMW43VUliWTVnQ1dWdzhtQzZNUGNpSEo3aFhwSEtuUDdyaHRGME1QdnEvTDZmZkpkRnJMWGZKTTNaRk45TmprN2VHYktyS3NxZUF5cURseXRWR3FUYzZ3dUcxc2FGQmVCdjlyeHlSUEZkZHNzNzM2YTdBQzdo''@;'; put 'put ''NjNWQUxhaUhtczVQNmEzRWluSi90UmZXVWkvTDNaWCttaE5UY2hESTlRYi9aUWJjL0hYYlVxeVEzWkxGcWZtNTljTlRIZlVPTEE1U2I5Z3hqRjhvZlhnREtmYTVWd0JQRldDQzNJK1B1VjdlNWcreEtQdkZlVUhuRlR6QStENXJTVjlaUi80ODZvUEhQT0xxS2p2WENHMzRDZzZWWUlMckU2YjRV''@;'; put 'put ''dVhvak05VkRLK25BTlA4V1ZSMXBrVVhKUDd6cWw5d1Q3OTdqWjlIMUQ2VWovY25VVjlUeGI2NnRFTjIvUjlYcDBYNjNzWm5yTDZ0MXZoN0N1b3I0Qm01ZEs2QmVZckVOYXZOM0V6eEt4QTVWWjJ2WWx1VTNXYnZxaXE3YUhOcFd4eS9pd2VJYysvelpwdEo2M1ovbHpYc2ZUVXpqUjUvcmJGeGEz''@;'; put 'put ''SEtOUnBFSFF6ME03VlNwV0dNa1kyeVh1NzB6dW4wc2U2eVBPTGk3Y3BZNHpqdytRQ3ZXMlJqZEZJOHdZMDFORlZta0pyUmlZL1YwaElWdmJMekl2N3grcENqbXh0YmRZUnFoMXJJdU4xZFNHNzAya1AxZGJMYyt4QmR6Qi9TSUROOFpiNXVadXpuZWNWNzhhNk4wT3VnWVIxbXprM3k2ZHVZNlBT''@;'; put 'put ''WWo2YVVieWl4UnpHM0h5aDhJeDdXMW5WeGZjazM5alpHUTdEcTlybnEzYjUvUzR5THY4ZDdtenl1K1NIY3A3d05GcEZOaVNnZHJhQ3VNclBhS1VrQXlHdGNnRDVQcys0R1VlL21aUXJSM3dPalpKWnJkenRXK1RjdmFIRDYyNHBPSFFmWko0Ym0rTEpsZStkSlYzNERIa2FkdDdMNXMzYUFJWjY1''@;'; put 'put ''cyt5WWp3RVFwRFZlQkNNVnRqTkJmTnFjVGZoSnBtUzV3QlJxRlVRQTFITlRiMTRsT3JZZEJIMGFndHp2VXR3bUVPbVpqNFJ0TFBmZzJiNk8rbXpXQ3ZLaC9oc3Avb3BuMGMzZnB6bGcvT29tcTJxUWd2WU9FU3QxS3V0bGtJZXVaUDMrcFhFY0p6dFBac2hMMWZjOUdHV0lJN1g1cVJmcnoyOGRq''@;'; put 'put ''OHFSejQyZ3F0OGkyb1ZYMkVzZnVObHVGK1FmWkEyVjQzM0RkbTN5UHlNQmY1NHZjb2ZVUi9PYk1NZlgxYjVJK3BEVHhYeDF2Vyt4L0dYTDlyM09CYUwrczRWK2g3RlF5WDhVZTc3UUtIdlVlcTNaUGNUTHRBNFFuRU00czAxV1FkNGMwM1JBUkpydTZrdlgvWkxzemJmZkZPU1l6dHZTa29iMmIr''@;'; put 'put ''OVVoakhETHh1YS8vMjB3WC90bmtjYlprNzFyZUZqckV4emt0UTN3bmxmbFgwbjhTQW94ZS9mL2dmcERpT2RxaDl1UGEzMFljamIwcHFuMkg4YlhTQjNBazQwL293b012UXBzdTRYWnN1NDVhcmhoWWVrYkhJcWpxOVpTRjlnVjZuWEcybjF5bVRXK2w5eWhhM2ZKOHloU1ArRm5xTWZBcWdVSUdv''@;'; put 'put ''TEdBMVFHU2tVQU1FNjhBbjJUcHFVZnNqdGVWRVhZcVpGZGF6KytMWllxd2J5ajQ0eHY0V0h2VlYrU3pzUnBHTkszSnV1OEIvM1dhdHJ0SjE0K3ZJcHlxRDhyclorcjhLNjdjVTFrOVJTdDBJdlhQcmNkeU5QLzJuMVZIOHI3NitlTHkzTi82NC9CSHZrL0ZuR1BBcWhIWUNiZ2lBRzE1NC95ckRj''@;'; put 'put ''UUhmREExNGVrKy9abmZSUGYzZGFCUm0rdy81cnY2V0Nxd3RsNi9SMTJPZENaY1pkV1hGVis5YnpSYk9hT1NXQkVNbHJ5bStzVDk5a1k3czluMjVOMDk3YzhxOS9ia3QrMjF4YzM5Slh6QTBNbU5qb3FqZTREODJQemEzYTZjNEtvNE05Q2U2RS9tMnpKYTMrZHYrak52OEd6Yjk3U3RxMjVENWsy''@;'; put 'put ''LzZ4OE9Ed2NJZjBoUHF2ZjkzNS83VS93SEFsdjh6Z1BYL0tRQzlWeWlOMXZEZjBkc21IdFppbkFoM1l5ZkFMbkJ2NWhPZnlMeitkZE5qVDVpVk81M1NvR1FyN1RqV0xwaDE4dEZQZkNMOTJjLzJQdkdZNmV2ZllMTGlaOHFkaW5FMEtZN1Z1SWxHQitMUGlPbk51Qm9xQ2pYY3NnR1RNb3lOTkEr''@;'; put 'put ''OGtQbHZ3a2FqNnVsZ3RtRXNFbTV1RWl4K3NQa0VxOTlNZlZTRmV6cUNZQkJTMHdJKzhxU1FiS2VqbVVRQVpDZDgwUGpYaS9LVmkyTzNMVHYyVFhLNlhZZGNSMjRaVmhMK1p6N2t4Y1BTWjNrTlhwTE8xMzkwVDRKZHc5aDdjaWpuZEhycWMzMlhkckpzL3dNVHVWcHZ0UzAzZTBLVzd6aE95dkZs''@;'; put 'put ''d0FkMUQ0TkNsMkJjVDc0cDlqSjZSeXhUZEVEVjRZQXJld1FQNFZaWDZZdnhvU1RBcFU2cEpkZC95V1UxYTBsaWkwdFNTb3ZDNjk2cUtQeU41VzFyd29ITzVUbEJCdUNFRWx0NGdORy8vUHlDOG53OTlpay9mNzd3bkwrNitQa0Q2bk4wOU5MaTUrdmo5NEZhdGY3OGJLSDlzZjFJZ2NFMHVReGdR''@;'; put 'put ''R01GK2k4MWVhMFlZRkJpaXFtUVdMZkRBcHRoY3Bsc2x4VURSckhML3JNSVBvcU5ObGNFSXNVOCs0c05XUW5yYTZaMnRid1hzTDMvb21ndlR4ZGdZcDZUNVNoTisva0l1NXRDeFlXazRKMVdycU9nMzYvTndQZmEwdSsxcTVQb2Z3QVBmbng1QUFBQkFBQUFBUUFBdENjQXdsOFBQUFVBSHdQb0FB''@;'; put 'put ''QUFBTlBCbllZQUFBQUExTDZtOWY5Vy91OEVXQVBGQUFBQUNBQUNBQUFBQUFBQWVOcGpZR1JnWUQ3Njd6WURBMHZILzdEL2sxa2lHSUFpeUlEUkdnQ2xoZ2F2QUFBQWVOcU5sRTFvRTFFVWhjKzdrNVVMd1Q4VUJTbHFFbHVicEsyaERhWTBsQlJiYlVyU2puWVJha1doQ3hkYVlyVzZGdEc2RXhF''@;'; put 'put ''WFhma0RVdmN1QmJIdVJNZ211TktLK0VNVVdseGtJUzA0bnZ1YXFYWFNnb0hETnpPNWI5Njc1NTE1cG9ZejRNOE1VUWNvQTlmY1I3ODhSRlRPSSs3c1FFSWVvQmtmMFcvRzBFUEZ6UXpTTW95c0FmSm1DaWtzNG9TNTYvMlVKMGliSXZiS1NiUkxEdzdMQkZWQVNzNmhXMDV6VEFGSnZiYjFITXU2''@;'; put 'put ''TG4wUG1UTTE3SE5LYUpVdmFKSkhHSmM1MXRiSUNkWVZxU3J2WHlHUEJWN3Y0aHczTVNhSDBPY01zSVoxVHBULzMwRGU4aFpydUhhWlJremVZMVRmR1dwR1dKNGhJdmV3WGE3am1MbUFZYTU1aFd3M245RXBCZSszU1NNalhlaVFLM0JsTjlySVRuSFJ4cDdETWtrZnNoaENCUm04OVY3SU5nemlI''@;'; put 'put ''WExPRkhMNlhLN1plbGZIbUt2MGNCRXhNOGx4V2Y2ZllHOUpISlE5N0cwQSswVlljd2RIekZaY0pPUG1KWHJwKzRpZHMwaFB1RVl6aXo2enhKcm55TmgxalNPS0QvUTh5ZnNsSk9uWHFsY2J5UGxPcW4vcTNUcGh3U3VyZitRUDZwdXpCUzIrZDBISlRveFlxbi9ycGY3UlorbkFLZXZWQm5MS3BQ''@;'; put 'put ''YmkvaXRVdkRmMGI1RDhTbjJTUzh5RjcxMVFtZ3RsMXZyN1YrcWYrcXpVZm5YT0lMVjNuZCtuNW9qN1l2dTl6VDFWUDNSTm0xR3pwdnRkSjcycWNMM3FYUk81UWg3WFBtd0dtUVBOb1daaGpXY1JOaEh1dmM2ci9RVm9mV1Z2YTF4R010VENlWmxielU0RG1XWE5Vd09uNnhuenFmdWpIbTFDL1Fa''@;'; put 'put ''c0RuVVAxYi82dDZCNURGSXp6bXhtckI0ejgyVXlSM1ZUcjVuRFgzd0diOVIvWjVBTm50Ym5aRzdoVkZmUEd5eFRUd0hwUmNxNWpCVFBCSHN1bUhseW5weWx2eVZlODF3S3pTQmhXaEdoWWpMblZXMCtISTR0NGVoL2labUIrd2ViUC9VTWVOcE53bDFJR2dFQUFHRHp2MU5QTy9XNjgrNjZYKzl1''@;'; put 'put ''ZXVlZGR4RVJFVEpFUWlRa1lrajBFTkZEUkVRUFEwSmt4QWpwSVh5SWlCZ2pJbVNFaEl3WUlTTjZrQmdSd3dlSkhpUWlJaVFpZWhnU01tVHNaUS9qK3d3R3cvSS9lNFp5RDlLemJvd2JUNHdQSm9NSk4xVk5kMmFybVRLL05VK2JEOHcxaTlFeVo5bXhQRnFUMWlYcm95MXAyN0VkMnM1czk3YU9Q''@;'; put 'put ''ZFdiNk0zMi9nUWdJQW5rZ0JMUWRsQ09JY2VDWTl2eHpYSG50RG9ubkJ2T2xvdHpyYnAyWFhWWEcyVEFOSmdGRDhCenNBbDIzUVB1VWZjN2Q5VURlcVk4WlUrM0w5Vlg3V3RESExRQ2ZZYU92VWJ2bUxmZ3ZmRnB2aGxmeGZmazUvMEovM3YvdnI4SlcrRUplQjQrZ2svaGwvNVlmN0cvampnUkJC''@;'; put 'put ''bEMwc2dIcElUYVVSKzZpT2JSSXJxUEhxUG42SFdBQ2p3SC9tQWVqTUVHc1FTV3dSYXhQSGFKM1dBdnVBR0hjQTRmd3Fmd0duNkZ0L0FPQVJBNE1VMVVpTy9FRDZKQjNCSlB4T3ZBSmpsSXhzZ1VtU0hueVJVeVQyNlEyNVNkOGxFVUpWSERWSnhLVXhVYXBoazZRby9RQ1hxU0x0TW45QVY5UmJm''@;'; put 'put ''b1gweU1PV1hxVEpONVpqb3N3T0lzeHhiWVhiYkVuckExRHVJK2NVZGNsYnZrcnJuNzRFcndZN0FZUE9jUlBzVEgrQlNmNFJmNVBGL2s5L2tHM3hWQUlTRHdnaWJFaGJRd0p5d0xhOEttMEJSbnhHVXhKeGJFTGJFa2ZoVnJZdjNOWVdndHRCWGFDNGZDamZCRCtGV3lTejZKbHpRcExxV2xMMUpY''@;'; put 'put ''QnVXQUxNbkRjbEtla1Jma25GeVFkK1dTZkMxM0lvRklLcEtOVkNOdFpVeVpWVGFWUGFXc25Db1hTbE5wS1IwVlVIRlZWRWZVeEg5bTFaeGFVYytpUUpTSmprY3owWXcyb2MxcFdlMUJhK3RHZlZRZjE2ZjBXWDFKWDlYWDlZWitxei9wdndlQnYwdEF2U29BQUFBQkFBQUJQQUJZQUFvQVB3QUVB''@;'; put 'put ''QUlBS0FBNUFJc0FBQUNEQVJZQUF3QUJlTnFGa3MxT3drQVVoYzhVSklER0tERXVHaGQ5QWZsVEllcFN3MFpRSXdvN0VoQUVJbEF0eFlUWDhDbjBUZng1QWQyNGR1M2FoWWZodHFEQmtFazczOHk1OTl5NTB3S0k0UU1CcUdBRXdDR2ZNU3RZWEkzWndETHF3Z0ZrNEFnSGtjU0Q4QUpNdkFtSG1Q''@;'; put 'put ''c2xIRVpheFlRak1KWG51WWh0VlJGZVFrbmRDNjlnVFgwS3J5S3F2b1dmc0c2RWhKK1JORGFFWHhBMjhzS3ZpQnJuWTM0UHdEUXFPSUNOR3d4NTRqYWFhTUhseVI3NXBIbnlGRHV4VUtOcU1hNmxZL3JrSXVjdXMvck03U0dPQWhyTWM3U1RqWTVFNVgzSE0rcE5ES2hVR1pWaVJsS1BmVnpnQ0dV''@;'; put 'put ''Y2syWjViRTU1ekt0aC9hbFM0c3BoVEZ1ZjBacXFPcTlTaVhUSjJXYk1xUE1UNWpjNGovTHExS3JrVStwRFhkL2wzdjkzTS9KenVkcERndVB1bDdPdGZidSthNXlhemJXWDA1ZXNKbFdYdXdOK0NTOG13ZG1yMmRWZFRtb21ablk0YTIvU2M1bHFEVmM2My9WdnF5QjNsOU9xeFpIUldwWW5TMkdY''@;'; put 'put ''N3kzcytQOUtGdGVNYTJoL1IrNDk1enNXY2NzTzJsUWN4blIrQUdpaWd2Y0FBSGphYlpOWGJCeFZGSWEvMzdGMzNUWk83NzFYeDE3M3hDa3VhOGV4WXljdWNlekVTY2E3WTJmeGVoZkd1M0ZzdWdRQ0hrRHd3alBsQ1JDOUNpUjRRS0pYMFhzSDBYbWtCKy9jQ1Y0azdzTjgveG1kODU4ejk5NGhD''@;'; put 'put ''M2VkRzJBZS83TlVtMzZReFF5eXljR0huMXp5eUtlQVFnTE1wSWhaekdZT2M2ZnE1N09BaFN4aU1VdFl5aktXczRLVnJHSTFhMWpMT3RhemdZMXNZak5iMk1vMnRsUE1Ea29vSlVnWjVWUlFTUlhWMUxDVFhkU3ltejNzWlI5MTFOTkFJeUdhYUdZL0xSeWdsVFlPMGs0SGh6aE1KMTEwMDhNUmVq''@;'; put 'put ''bEtILzBjNHpnRG5PQWtwN0M0bmF1NG1wdTVnVHQ0bit1NWxxZjVtRHU1amJ0NW5tZTVoMEhDM0VpRUY3RjVqaGQ0bFpkNG1WZjRsaUhlNERWZTUxNkcrWVdiZUpzM2VZdlRmTStQWE1jRlJCbGhsQmh4YmlIQlJWeUl3eGdwa3B4aG5PODR5eVFUWE15bFhNSmozTXJsWE1ZVlhNa1AvTVRqeXRJ''@;'; put 'put ''TVpTdEhQdm41aTc4NUo1U3JQT1ZMS2xDaEFwcXBJczNTYk0zaFYzN1RYTTNUZkMzUVFpM2lkOTdSWWkzUlVpM1RjcTNnYzc3UVNxM1NhcTNSV3EzVGVtM1FSbTNpUHU3WFptM1JWbTNUZGhWcmgwcjRnei81a3E5VXFxREtWSzRLVmFwSzFhclJUdTFTclhacmovWnFIMCtvVHZWcVVDTmY4NDFD''@;'; put 'put ''dk10bmZNQ0hmTVNudk1jbmFsS3o5cXRGQjlTcU5oMVV1enAwU0lmVnFTNTFxMGRIMU1zRFBNZ2pQTXBEUE13MTNLV2pQTU9UUEtVK2ZsYS9qdW00Qm5SQ0ozVktsZ1lWVmtTMmh2eDFvMWJZU2NUOWxxR3ZidEN4ejlnK3k0Vy9MakdjaU5zamZzdlExeGkyMGtrUmc4YXBDaXZwRDNrV3RtRitL''@;'; put 'put ''SkpJV3VHd0hVL20yLzlLZjhpenNqMnJrUEd3WFJRMmh4T2pvNVpKTFJ6T0NQd3RubnZVWTR2bkV6VXNiTTJzSE1rSWZHMVdPSlcwZlRHRE50TXZadEJ1WHNaZEZMWm5lc1F6UGRwTmV0eUZ2OE9iSVdFWTZEaWRpZzliVG1vMFpxV1NnVVJtNU9zMEhSelRvVE96ZzVQWm9kTjBjQXk2VE5XWUMz''@;'; put 'put ''OHFIaTBwclF4NkxQTjFtNlNrbWFiSG15WmxtTlBqUk9QRE9hbjBNOUR6bjhsU21aRy94OXZCbEdGQmJ6anFoRk9qUXpIN2JNRjRodTdMMEJQVDJ0ZHZacHgwa2Q4L2ZkcVQwNmVkbmpoWVZ1V3lMRmpwNngxMnJLbHJOVzdRYXh6R1hlVDFScUsyWTQ5RngvTEd6NnQwWFdtb3Z0cGpqY2NHajQy''@;'; put 'put ''K1BtTTA0U0w5TmxoU0V2Ulk1ckhjWTRYSFNzTmdVM1lvNVNUY29LS3BJY2NxdG1MSmZNdWR4VWozN3FkbGtUWDkyZWs0WUowZjBDUzYzZE95d1B0OWpEYjdtdFo1VnZvMFRISXlHb3U0eWJuVzJOUWVSV3duTDJKNzZoKzNaYmNoQUFBQWVOcGo4TjdCY0NJb1lpTWpZMS9rQnNhZEhBd2NETWtG''@;'; put 'put ''R3huWW5UWkpNakpvZ1JpYmVUZ1lPU0FzTVRZd2k4TnBGN01EQXlNREo1RE42YlNMQWNwbVpuRFpxTUxZRVJpeHdhRWpZaU56aXN0R05SQnZGMGNEQXlPTFEwZHlTQVJJU1NRUWJPYmpZT1RSMnNINHYzVURTKzlHSmdhWHphd3BiQXd1TGdEK0hDVmdBQUFBQUFGWW1QWjNBQUE9KSBmb3JtYXQo''@;'; put 'put ''IndvZmYiKTtmb250LXdlaWdodDoyMDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUZVa0FCTUFBQUFBcFFnQUFRQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmTkg1NWtkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY1hBQUFPZGo1OGZFeEhVMVZDQUFBSkxBQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJQUFBbE1BQUFBVFFBQUFHQm9RS3p6WTIxaGNB''@;'; put 'put ''QUFDWndBQUFKc0FBQURubmRERDdGamRuUWdBQUFNQ0FBQUFEQUFBQUE4RWF3QnBHWndaMjBBQUF3NEFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVuUUFBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNmQUFBTjR3QUFIRzQvN0hHREdobFlXUUFBRW9JQUFBQU5nQUFBRFlMWllnU2FHaGxZUUFBU2tB''@;'; put 'put ''QUFBQWhBQUFBSkFkNkJDQm9iWFI0QUFCS1pBQUFBb1lBQUFUYXExTStWV3h2WTJFQUFFenNBQUFDY3dBQUFucE43akxtYldGNGNBQUFUMkFBQUFBZ0FBQUFJQUtFQXBGdVlXMWxBQUJQZ0FBQUFYRUFBQU1RSSt4NFlYQnZjM1FBQUZEMEFBQURvUUFBQmlHWEZqMktjSEpsY0FBQVZKZ0FBQUNC''@;'; put 'put ''QUFBQWpSbFFBaEIzWldKbUFBQlZIQUFBQUFZQUFBQUc5bmRZbUFBQUFBRUFBQUFBMUZHMWFnQUFBQURUd1oyR0FBQUFBTlMrcHZWNDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYxRDRCN200MDQ4RE9sb3BObHY2NDVTZVhYTFQ1''@;'; put 'put ''MXNYelNhK1czQUYzQUFBQUhqYWpWY05iSmJWRlg3T3VmZSszOWV2Z0tXVUg2RWdJVmdiMHhSR21BaXlhUmhVUnlxU2ppa2FadmJqbklQeDEyRXpGdWY0Y1dnV1VoZUhEQWxwRVBreDJnQ2lZa1hHdW9ZeHh6WUN5Z3hoWUZ3SHlCWW0wK2xDUkhuM3ZPZjlzQy9RYnVNSkQ0ZHo3M3Z2UGVjOHQr''@;'; put 'put ''Y1dBcUNBRVpnS21WeFhQd041ZUhvUXgzRDhSNkJ3Yzc3ZE9BOFZjNy9ST0FlVmMrZk1uY1Bab0Q4WlRXY2s3UGhkQVFNd0RGWG1jUmlKZXRlYWprWUxiRldKbWhIeEkrbTlpRjhNTmw5QXhXY1ExTVhONUlDSldJbFBFY3RnS0kvQmVUSklqcUVVdlhpeWY4UWQ4WmI0U0h3Y1BmeUozKzl4NVBm''@;'; put 'put ''ZGVqdTVkL2IvSitPZjk3akN1ejJPOUh5ZVA4VzdlaGpaRW5mR3V4TmM1ai9Ddjc5TDBOMGVjVE96cEJqT1RGY3hXOWNSaWxyQ1lSVGhNWVlJK0R3UllSeVJ3M2dpandsRUNYTTdrWlZxSWdSTDhSUE9mSlFJelBoSytsOG1CSzhRZ2xjSnhTSEM0MDNDNHpnUjhGY2l3a2tpd3J0RWhMTkVEdThU''@;'; put 'put ''T1p3blNsaTlUN2xhVEJTa1RNcFFJdVZTVHE2UUN2SmdWcmJBdFVkVEpTUDV6ZldFMkxuVEU2dWQyTm1KdlowNFlES1JSeDFSZ3R1SUFocUlVc3pIZzF3aGlTU3lTQ0tMSk9CeFBNbjVxNGtTL0FKck9mOXBiT0w4TFVRcHRoRTViQ2Z5ZUlISVlRZVJ4NHRFRGk4UmVld2tTdEJHbEdBUFVVQTdV''@;'; put 'put ''VUFIVWNCZW9vRGZFSUxmRW1MWmlmQTJVWXEvRUdsZTFQS2lsaGR2ZVFtV2wyQjU4WllYYjNueE1sQUdNbDlYeTlYa0pFZUJxOVl5UTFXc2NTMXJPNFkxSGNmTVRHQkc1bU1CRnFJUjM4Y2kxbklwbG1FNUhtRVdIbVgwMnhqUmk2emtLNnpnSVZidU9DdDJrcFU2eTVPY3Q1dFZ4bjBya3Z1bEQ5''@;'; put 'put ''czkzQ2VOakxzMzFiV2J1bXVPUCtwR3JUYlMzUjM0Yk9STWdtNitQTnZqM1RoelVmRzgxOGZqNWZIeXkwZlNXeGV2aTlkMU8vSTMrMFpSYVpvUTA0VGlxNFREM1lUSFBVVEFMQ0tpSXA3a25FUU5ZbXBRVTRPaWxZaXdsWWlzMG1LVkZxdTBXS1hGNnFvNFFUaWNJaHhPRXc2ZkVBRVhpRWo2U2wv''@;'; put 'put ''V3RaLzBJL2VYL3VTa29tSVZGUmtpUTdpK29nWlhFYVhvUy9ReXBZc3BYVTNwcnFqMFc0bXMwcjNGRTJYaXlablNYVkhwWFJyM0ZwVzNxSElXMVVXbHB4cFAxYjJMNkZuWFNiVGVOS3ZGQ0JQbE9vc3paL3AxcGw4dHhweW9XSXVSSjFyV1RQeFpSVHZMUWs1R3kzanVudnowcW1PRURhelgzWXhy''@;'; put 'put ''RmlOWnpValc0Q2xHOHpRMjRCbHNaRVJiR01sVzNzWTJucmFkcDl6TDA1MWdEVTd6WkJkNGduN2NiU0IzR2NJVmg1bWVGWDJzbzVTYk9zcTV5ODIweE95YjJZbU9SY1BJbmN4L2g2eVFsZktFckpFVzJTalB5WGJaS2J1bFExNlhBM0pZanNvN2Nrck95QWR5VGk2bzE0S1c2UUN0MUJGYXJiVTZW''@;'; put 'put ''aWZvTFZxbjlkcWdNL1ZldlU5bjZ3SnQwb2QwbVQ2bXpicEsxK3A2M2F5dHVrUGJkSS91MWYxNlVOL1NZOXFwcC9VOS9WQS9kbkNSNitYSzNTQTN6STEwMTd2UjdnWTMwVTF5dDdscGJvYTd4MzNkM2UrKzV4cmREOXpEN2hIM1UvY3p0OXF0Y3h2Y3MyNnJlOG50Y3UxdW4vdURlOE1kY1crN0Ur''@;'; put 'put ''N3Y3cC91Mys0VHJ6N3YrL2dLUDlnUDkxVyt4by94Ti9vditzbCtxcC91Ny9Tei9EZjlBMzZlWCtSLzZKZjRGWDZsZjhLdjhTMStvMy9PYi9jNy9XN2Y0Vi8zQi94aGY5Uy80MC81TS80RGY4NWZDRDRVUWxrWUVDckRpRkFkYXNQWU1DSGNFdXBDZldnSU04Tzk0YjR3T3l3SVRlR2hzQ3c4RnBy''@;'; put 'put ''RHFyQTJyQStiUTJ2WUVkckNuckEzN0E4SHcxdmhXT2dNcDhONzRjUHdjWVFvaW5yeGRpeldiZVFseG5VWlhwVXdtb3hiekxPMHkxL2thY1kxeGpjWlA1aXdEalY3dXZFazQydVZQMU9sMm5pVThaU0VzZEI0azc1R2JqVC9lT09KNXU4MFBtK2U2NHczR0ZjWjU0MGIzR3p5ODhhTHUyZDlNeHVq''@;'; put 'put ''K2E5Z1RETisxcmlwaStXdU5IYXo1eG52TTE1MUphY1pNUHRLbm01OHJiYi9MOWFObCtTcXZUdkdsNDJmTVY3WXhjeGV1Mlh2djNPYXovWnV1U3JEaXpObnZzVE8xSFNKK2F2Tm43WFRyRDV1OWwyWnpJL3FHcjFvMjJpcWlxdy96ZXFVMUxZNXFXYlM2cVJScC9vczJrVi9NcWZGN0UydTZhSjZp''@;'; put 'put ''eHA3dyt6OWlWMnNhWnF4Vk51cDlyTCs5QXhwM2c2YS9TT3IwWjlONStkc2ZxcWNUcHRqTnlMVjdTWCtHclBQcDdiTlNWV2Q5YWMzNkthTVp0S0taTzBYelA1VzZyZjVkaTkwcVBrM21EOVZXbFhHbm1TY04wOVA5a2ZwZmJIbzdqRDdzTm5abGV2aVh5WFZpZmRjVnFuc2psT0t0N3Y5LytCTFp5''@;'; put 'put ''cXVzWGNwK082cVpsYVMxNmxuMTY1aEYweGUyQkUreDVkWURtTnhJM3RZMHJuN3NHOS9nVDA5NmR4OTdZMWFicDI3SDMrdm1zbytWRS8weHgzc2N3UFk2ZTdrN3o0emlVcnI1VVBaOWI3R3JqV2ZiN2ZoOW5vYng0N2V3dlhXcy9QZGJyM3ZLK3grcjdGRC9oSUg4QjIrNk01aXNiMHExK0JmRXZB''@;'; put 'put ''VU8vRVF0RnBQYmVONVJhNnkzODBpU1B4alUrRVMzRTlld1c1WGlrSGNheVFqR28wYmVPcEpQT1Uwek9Eb3IwMjdmelErYW14M0J2c3lmTWg0cnZGbTQxUlZPYk5MOFNYdTh3QytLem5KUzRrVXBGUjZTNThyVC9RZjZqNmJLUUFBQVFBQUFBb0FIQUFlQUFGRVJreFVBQWdBQkFBQUFBRC8vd0FB''@;'; put 'put ''QUFBQUFIamFZMkJtY21DY3dNREt3TUxVeFJUQndNRGdEYUVaNHhoRUdNMkFmS0FVSExBeklJRlE3M0EvQmdjR0JkVS96TkwvalJrWW1JOHlxaXN3TUV3R3lUR3hNcTBIVWdvTVRBREpaUXBBQUFBQWVOcTFrMWxRamxFY3huLy90MzBSS2hUMTl2WnAwMGFpRkVYMnBjaStsS3pac3EvWkd1c1FR''@;'; put 'put ''MFZTeUo0a294a1RVMU8yRys2NE5XT012cytWVys0TUhjZFhURFBNdUhKbTNuUGVjODZjNTV4NW50OGZjS0hyQzBGMGoxVHFtVGpucmxLc3h5V013NDJCbEhDTE91N1NTQlBOdE5BbUhoSWdneVJNQmt1Y0pFbXFwRXVtVEpVY3laTkNLWklTSTlWNFpieDNpVEtQbTYzbUUvT0w1VzRGV3NGV3FH''@;'; put 'put ''V3pvcXhoVnJwMTMrWWYrVTBwZllmRmpSN2FqMm5qbWZoS2Z6SEZKckdTS0NtU0pobVNKZG1TS3dXeVFUWnI3WmZHVzYxOXlHd3gyODNQbG1FRldFRldpRk43cUpYMlMxdDlWQy9VYy9WVXRhdFc5VWcxcTRlcVNUV3FCbFd2NnRRMVZhdHFWTFdxVXBXcVFwV3BNNnBVbmVoODA1blZtZlQ5azZQ''@;'; put 'put ''Y1VlRElkOFRZQjlyOTdENTJMN3ViM2VqNDJ2RzU0L0NIa0hmSlhWNzlwK1p1ZUR1VDRJOWJCS1A3ei9pSFJ0ZEpGMXgxZHU1NDRJa1gzdmpnU3kvODZFMGYrdUpQQUlIMG96OERDQ0pZWnp4SXB4NktTWmhPSkJ3Ymc0a2draWlpaVdFSXNjUVJUd0tKREdVWVNRd25tUkdNSklWVVJwRkdPcU1a''@;'; put 'put ''UXdhWmpOWE1aREdlQ1V4a0VwT1p3bFNtTVowWlpKUERUR2FSeTJ6bU1KZDV6R2NCQzFuRVlrMWFIdmtzcFlCbExHZUZmdjhPZHJLYllnNXhuTk9VVTBZRjV6bEhKVlZVYzVFYUxuR0Z5OVJ5bGV2YzFCVDlaUFEyRFpxbGU1cW1uMjBWcTdVZDBXemdiTGMzNjFtaisxMmMrTzFXNFY4Y3ZFQTlt''@;'; put 'put ''MW5aWTJVdG15UkdqMXZZempIc09DUmM4eGtwVWJvQ0lyaWpkeDZnYVpZRVhRL3gzV2VLbkdIRXNvMjliR1VmZXpqQVFWMUwrem5DVWIxMW1GSk9jWkxYdXBwNnNVNjh4RnQ4MkNoK21uL1BINUROcXVoNDJtTmd3QUw4Z2RDWndabHBQUU1EMDI0bVZnYUcveUhNMHYrTm1YYi8vOEowakVudy81''@;'; put 'put ''Zi9maUErQU05UERWaDQycTFXYVhmVFJoU1Z2R1VqRzFsb1VVdkhUSnltMGNpa0ZJSUJBMEdLN1VLNk9Gc3JRV21sT0VuM0JiclJmVi93cjNseTJuUG9OMzVhN3h2WkpvR0VudmJVSC9UdXpMc3piNXQ1WXpLVUlHUGRyd1JDTE4wMWhwYVhLTGQ2emFkVEZzMEU0YlpvcnZ1VUtrUi85UnE5UnFN''@;'; put 'put ''aE42eDhub3lBREU4dXRnelQ4RUxYSVZPUkNMY2RTaW14S2VoZW5UTFQxMW96WnI5WGFWUW9WL0h6bEM0RUs5Zjl2TXhiVFY5UXZZNnBoY0FTVkdKVUNnSVJKK3hvazJZdzFSNEptbVA5SERQdjFYMEJiNXFSb1A2NkgySkdzSzZmMFR5aitkQUtneUN3eUxTRFFKSlI5N2VDd0tHMEV0Z25VNGpn''@;'; put 'put ''V2Rhcis1U1ZMdVdraXpnQ01rT0hNa3JDTDdFWlp6ZGN3UnIyMkVvODRDOUlsUWFsWi9OUWVxSXBtakFRejJVTENITFpEK3RXdEJMNE1zZ0hnaFpXZmVnc0RxMXQzNkdzb2g3UGJobXBKRk01REtVcmtYSHBScFRhMkNhekFRT1VuWFdvUndsMmRjQnIzTTBZRzRKM29JVXdZRXE0cUYzdFZhMmVB''@;'; put 'put ''Y09ydUxQNWJ1NzcxTjVhOUNlN21EWmM4QkIzS0NwTkdYRmRkTDRNaTNOS3dvS1RIUzlSSFJrdEppWUdEbGhPVTFobFdQZEQyNzNva05JQnRRYjYweWkySmZQQmJONmhRUlduVWhYYWpCWWRHbElnQ2tHSHZLdThIRUM2QVEzeWFBV2pRWXdjR3NZMkl6b2xBaGxvd0M0TmVhRm9ob0tHa0RTSFJ0''@;'; put 'put ''VFNtaDluTmhlREtScmNrcmNkR2xWTHkvN1NhakpwNVRFL3B1Y1BxOWdZOXRiOWVIZ1lCWXhjR3JiNXpPSWt1L0VoL2d6aVErWWtLcEV1MVAyWWs0ZG8zU2JxeTJabjh4TExPdGhLOUx3RVY0Rm5Ba1JTZy84MXpPNHQxUUVGakExalRDSmJIaGtYVzZacDZscU5LU00yVXBVMW40YWxLeW8wZ01Q''@;'; put 'put ''WEQ4T2hLMEtZLzNOMDFEU0dETmR0aHZIaG5FMTNiT3M0MGpTTzJNWnNoeVpVYkxLY1JKNVpIbEZ4bXVWaktzNndmRnpGV1paSFZaeGphYW00aCtVVEt1NWwrYVNLKzFnK28yUW43NVFMa1dFcGltVGU0QXZpME93dTVXUlhlVE5SMnJ1VTAxM2xyVVI1VEJrMGFQK0grSjVDZk1mZ2wwQjhMUE9J''@;'; put 'put ''aitWeHhNZFNJajZXVTRpUFpRSHhzWnhHZkN5ZlJud3NaeEFmUzZWRVdSOVRSOEhzYUNnOGRzSFRwY1RWVTN4V2k0b2NteHpjd2hPNEFEVnhRQlZsVkpMY0VSL0pzRGo2dVc1cHpVazZNUnRuelltS2owYkdBVDY3T3pNUHEwOHFjVnI3K3h4NFp1VmhJN2lkK3hybmVXUHlENE4vaXhkbEtUNXBU''@;'; put 'put ''bkJ3cDVBQWVMeS93N2dWVWNtaDA2cDRwT3pRL0Q5UmNZSWJvSjlCVFl6SmdpaUtHdDk4NVBKS3MxbVROYlFLSDA4RU9pdmF3YnhwVG93anBTVzBxRWthQVMyRHJsblFOT3J6N0sxbVVRcFJibUsvczNzcG9wanNSUm5NZ0NrbzVLYXhzT3p2cEVSYVdEdXA2ZlRSd09WRzJvdWVMRFZiVm5HRnZR''@;'; put 'put ''ZnZZOGpOTEhrM1VsNjRLU250Ulp0UXA3eklBZzY1a1QyNEpvSmJhTyt5aW1KS1dLZ2lQZ2h0QmZ2dFkwUW1MVE9ETG9FaVpIR3lzZy90aWgwNW9vSjJBdDk2MGlydjIwTHR6M1h5SURDYm5XN25RWmFSb3ZOZEZmVnFmVlhXMkNoWHI5eE5Id2ZUenJDeDVoZEZHVTh1ZTkrZUZPeFhwd1M1QWta''@;'; put 'put ''WGRyL3VTZkgyTzlidFNraysyeGQyZWVKMVNoWHlYNEFIUSs2VTl5SWFSWkd6V0tVUno2OWJlREpGT1NqR1JYTWNGL1RTSHUyS1ZkK2pYZGgzN2FOV1hGWlVzaDlsMEZWMDFtN0NOejVmQ09wQUtncGFwQ0pXZURwa1BwdWRtdkN4bExnc1JkeXpaTmRGOUIwOElSM2l2empFdGYvcjNISVUzS0xL''@;'; put 'put ''RWwxbzF3bkpCMjBmSytpdEpidVRoeXBHWisyOGJHZWlIVWszNkJxQ25rZ3VPUDVlNEM2UEZla1U3dlB6Qjh4ZndYYm0rQmlkQnI2cTZBekVFdWV0Z2dTTEt0N1NUcVplVUh5RWFRbndSZFZDc3dKNENjQms4TEpxbVhxbURxQm5scGxUQVZoaERvTlY1akJZWXc2RGRiV0RybmNaNkJVZ1U2Tlgx''@;'; put 'put ''WTZaelBsQXlWekFQSlBSTmVacGRKMTVHcjNHUEkxdXNFMFA0SFcyeWVBTnRza2daSnNNSXVaVUFUYVl3NkRCSEFhYnpHR3dwZjF5Z2JhMVg0emUxSDR4ZWt2N3hlaHQ3UmVqZDdSZmpON1ZmakY2VC92RjZIM2srRnkzZ0Ivb0VWMEUvRENCbHdBLzRxVHIwUUpHTi9HTXRqbTNFc2ljanpYSGJI''@;'; put 'put ''TSt3ZUx6M1YwLzFTTzk0ck1FOG9yUEU4ajAyOWluVGZnaWdVejRNb0ZNK0FyY2NuZS9yL1ZJMDc5SklOTy9UU0RUdjhQS051SDdCRExoaHdReTRVZHdMM1QzKzBtUE5QM25CREw5bHdReS9WZXNiQk4rU3lBVGZrOGdFKzZvbmI1TXF2Tm4xYldwZDR2U1UvWGJuWGZZK1J0bE03b3NBQUFBQVFB''@;'; put 'put ''Qi8vOEFEM2phdFgwSmVHUFZlZWc1NTBxNmtqZnRrbVY1MFM3YnNpVGIycnhidHJ4S3R1eXh4K1BaUEo1aHh1TVpHQWlUR1FqTERFc0lKU1NrU1VOQzJnUkNDRHhhYUZrbXdMQk1GZ2hmU2lZTEpDOXRtclJaMnJRcDlBWFN0RWxMK3NEeSs4ODU5MHF5SmM4TStiNEhZOG0rT3V0Ly9uMDVRaFZv''@;'; put 'put ''YVQyQ1B5dllrWUMweUl4c3lJMWFVQXgxbzM0MGdXeEp5L0JBWDA4aUhtbjFlNXJxYWkxNm5VWkJVRVY3UU9uVU8wVnp4T3cyUjJMdVdDUW1zbmNSZnBXZjBtZjBuWDRDVDJMeTcxSWIxaUVSaWVIUDVsN0cvZjg1TlB6dzhQREREdys3bk03aDRlRkR3ODdiSHo3a2NoNXlQdnp3dzg1RGgyNGZH''@;'; put 'put ''M3Y0OEpqanU4SWJLYWZYQ2Y5dVBlSWFHL01jZ04vR25IM0Rya00zZEZuRHM4ZVBQM2I4K0d4NDFSbDJ3aitFQ0pwZi94MzZHbm1DN2MyYmRDR00wUkpDcUNhRENCR1dGVmdRck1LVVFxSFFLbXE4ZXAxU3RBYU1FY0Z0OGNXaThVaW54V3hTdVpmMm1tS0N3MkcxTkRWWnlCTTV3M2NkVnJQRFli''@;'; put 'put ''WTZFRnBmUitQNE1ieElIdFM1VUFWQ09nRmVuMFowWGorODNBRHoybEVUdWlIelpPZnN6bVN6VmtXUVVpQ1lJTHhTaVRXYW1reU5ybG9RUmZWU1ZRVlJxL1VaQlNaRVM2YnNTUjk5d0Q1RWF2RndhVCtwNGE1a0kwSk5qUTMxTUkyOXpsWnJoUVViOWZuL3hJWUFGaU9pVzNRbjJFOGl3bjRpSXZz''@;'; put 'put ''UjZZZjR2NkxYYXE4TkRnZnZnWi9qMnVQUjkydFBTSDlkbzMzdW51ZzkrS3V2OWo4Ri8vVy8ydjgwL05mL0trQXl0SDZXaE1uYnFCRjVVUnRxVHdiYkFpNm52YTdXYWpaVVZxakZHa1NVQUdhU0JqQ1EyeEJHK0VNQUVpdWFhdExyQlFDd1J3Vm9FZlA1RXhackxJUmowUUdjQVBTd1dFV2YzOXlJ''@;'; put 'put ''elFnZTE4QmJQQmFGQnlSOC9FajJwcjBkMDNzdjI5KzVzeXQ3MWE3MmlabkwzNWM3M05VYlNXSXltUnEvL0VveE9hemIzVCt0WDdQTlp6dTJ4OFgrL3BxNS90R2EzOVR0bk1mMmR2MVBOVU90dVpHUlVEQm1lZ3NXb2tUaDlmOG1iNUpuQUNPTWNEcGgxSXUrbFhteUZrNG9VSW1WRlJpcmxIZ1Zx''@;'; put 'put ''WkJhbzFJZlFRb0ZXaWFZWWt3MWdGNVlyaEtKSUdpRktYdm1TVDkwQ1Yrd0M0S21ySis0WElWRjBTckMyVWJLOUNBRTJ0SnVxSHl2WGJ1U3Z2WjJoOE5rUXFpOXQ3MG5IbldFSGFGbW42bkoxRmhYYXpUb2RiQ1pHbCtOYUE0WU9FZ2puUUJLVXcxMjR3aDJHeWdzM1M2VjJXU0pvRTJmRCtEQ1ox''@;'; put 'put ''K1liRzZaRElYWUsvN29jSzUxK05wNG9yVTEzdFdDWnlkYjhoOEYyTU5FSzE0S1pVTWRNNkhRVExoOUpvam4xcmJodTFPZGtaRlV0RE9WT3hpY2FRL1R6NkJGTUo2S2RJN1FqMkIvQW1wWi94MDVTWjVGRGhRQVBqT1E3QTBIdlUwTjlYVzFGYmhDSUE2TUJKS21HSTZYZ1Z3dEdTVVFLWU1Nb0ZC''@;'; put 'put ''Ym05UFpGbXVMT2dQTzFqYVhTclFFbEg2VjIwWDNGRThVN3d3K3NzWVRWcFZvUmJBMUs5K2xJZUh6QTJyQlRrbHc5OUkxL1FlN3BtY2I2NE96bmNGMFlQdjIvdjN0alVNZG9mZm5QdGNWbitqdjhEVk5uaHp1R1p6dkYvZnNEKy9zVFIxMHQwejRncE9Cd0dSZ2NObzV2akkrMzNEbDBFbXlPeEtJ''@;'; put 'put ''ajliSFc1cmpheTlucjV1MVo4SzlZNER6d0JmUWcrUkJWSU9DbVNkYkFGRXFLZXRoNTRzQkNYU0kvcmtJZitJbFNpSFR1NTYyZUFsc3h4RExzeDdSSkxwMzZ1MUdvMTB2dHVFZmtlT3RScnZkMkhxY0JLREh3UG9PbkNCZlJ0Vkk5VlMxRXJjSEdNdEtXTm4yck9Lang0NnROQzlzMzc3UXZQQ3pX''@;'; put 'put ''Mjc5NlVMcnpoYytjTzI1eFFDZEVPaDNCL2JMZlVYb3k4SGpUM0RBaFZpL0ZSamg1c1Z6MTM3Z2haMnRDeis5OVphZkxiQyt2Zmc2dkVTK0Nqc1pUZzR1VG8wbi9QVldVUTJjS2QyUFVUVWMyaVMwQXVRbk55RWlZQ0tjb2l5V0g2UXdCU01zbzMxenMrMGhsME1wbWdJR3R1WjRRaVhDLzI2WHp3''@;'; put 'put ''OS9KK0tEMk05L28yZHB0Y0QvUGo4N1lNNlFvUzN0US8raS9FNVVhYkdWL3diWTdLSmQvUllyMjRuNzYxbzFGaFRWdGMxV3BWSlZwVkJVMWdjRGdXQjlwVUpScFZJcHJNMjExUW9CcTdVVkZmbDJDdFdGMnVIcnFqWFdpRXJicURHNUdPTldWcXQwT3IxZXAxTlZLOVdpS0ZTN1RKcEdyU3BpMVZS''@;'; put 'put ''ZmVrc0cxeFE2U21wSUZGVWlYOUtOWURyRkF1QTlBQklMYUFWWUEwVVRCWjVtZkYybkV1c0MyRTBsYW94SzFnaXBlVEh6SXZ6RExTKyttSDdwSlRyZTlQcU42Q1cwSC9EUG1nUXlSK015K2dFUmVRd1UwNEE4WEFVeEo4NDBWMWxBeXRVN0hjR2pvVEFWZDBGMzQyQVhIYXNML1FyMzRpaFFibTNT''@;'; put 'put ''ekJCM29ZQzRlaDBkek9nME83dXdrRnZEMFVtMm4wbVF1OC9BL0pWVWc2QlBnQ05pYk1VVUJ5cFJoVWNBVmxVc1pZOUtFcllxTDEzeCttL1d6K0tIeU9zd3J6NVpRd2NGWVlKUDhna3BXOE16QzdrSEZzanI3NzZHbU16dEJiNXlMVGtIckxBSnRTVmJnS3V5SFhNT2drSFlzd1hvZ1BaMFRickdX''@;'; put 'put ''Z3ZqbVNDTUFvck5QSkhFb2lGQUprcE1qVENUNm9PVGt4K2NuNFBYVytmNzlrV2orL3I2OXNWaSsvcXE5bnh4ZGZXQlBYc2VXRjM5NHA2SnlWdm41bTZkbUtDdkhBWjFsQlJBQjFBaGU3SVdqbElBZUtVNWg4ZFlpNmYwUmdZNjBaK0k2TjFQWCtkNlpEQkxack05SjlhMklkYS9BelpWQ2Z1eG9k''@;'; put 'put ''YWt2Nm9TdGdQWVFFaWFnWk94UnFyRUxDRW1qL1JXajE4aDFnWUdNU1ZtdW5xVjZJOUx6RkNMNFh3NjNwa1lhaDcyZHUveUpaWSszWGVvTjdQNE5GN0srWVorT0xBYWJlNTNkRVdDSCtyYzJ6ZDZZK2JlTkorL0dlQ3BoL2xiMEdDeXoxWUxjN2t3a0RTc0F3dFV1QU9WNHhXWVhiRU1DQXFMQWRt''@;'; put 'put ''NnJNSktwVlZKVDdrRk5YczhUbzlYRkcxdzBwUzVSRHFwSEFyZ21OVWlDYVRDQ2tVSjlOKy90VG51UHRRL3NYUGYvR1I2ZlBmaVVIeUhQN3JuRTBPcnZabWUvc1crSzhlcWhtS1JVSFNpdDI5Z0F1T2g3dmhZWnpoOGZYZ2hQakNucjlrKzByMDd3bkdoR1Y0R0FQWVZ3T1dDeWRZcTRFazRyVkxD''@;'; put 'put ''SGpBQy9mVXdnSStKWEsxaXFyS3lzcnF5R3VqS29LTnI5VHI5T0tLbkdxdzdwc2Y0enR3akZYaGg5K3BxTnZmN1B4L0NyK1FHeC8vODEvaGc3ajRPb3k2QVVTUE0wNGo2a3QwbWpCWGFHb0VvNE56VENGNlJBb1M4SUpBbEx1RTNBcWdSTmJqMFJxOUhCcEFsMGlrSlk5RlA2VW1NNXhIeVo5Y0hJ''@;'; put 'put ''enN2RDZkYjlrN01qWGRYNEh0eVo4V1JtY0hWL3NIM2pWWDFSTHIzTjQ4Rmh1ZGk5ZmhBK3ZWUTVNQndhclVMWU5BSGE0dkErVFdnVnNxdERYbzRPMzhkVVNwSVdnVnNSYUVVRktzb0wyWkZXSmpNSVJwQnIyeHNiV3p4dXFGenZkZnJVNFBlaHFURlVLNUJpUVhFRENlU0JrQzVpRUZXSkVSS01Y''@;'; put 'put ''Y2RIUmk0YXV6Mlc5STNUL2Z0YXdsNEprTHgzVEhIU3I4bjA3eHZmR2lwV3JjNGloK0RoUTRlNmZ2S3ZTdC9jYUMxdWQvdG5ibGptNll6a2Z0SWNNSS9DdHVjTzBEbERaeGpGYU9ocG1TOUFnaUlVUkRsUFpqcDhLQUZnL1pEMVVyc2pEbk53QlNleU4yRnY1LzcwVzZ5a3U1ZHU0dnFHMUdBUXl2''@;'; put 'put ''QXdRNXc2RUVqeVNHVGlnQ0hUWXRGUUpBNGhScUFnT0dNR0tjSUJPcnJFUXIwQkxvakhmV3Q5UzBlRnd4UjE2YWhyS3VjeGlIQng1QW5RTW85ck5LZi9ockNtTWtiN3g5ZVNBMU1ERjNSUDNERlVLWjNlR0g0eEpobkl0d3lIaGphMVQ3dUJwVXBQdXZ6emNaQnFhcHFYK3dlMkd1dTNkYWRtRzhM''@;'; put 'put ''emlkNlp5Mld2ZjNkaSszNEU0MXhyeXZlTkJMeHhSdEk3bmxIdDlmZjU4VFkyZWYzZGpzWS9tODZlNGNCanIxQ0F6WUVnVzByZ1hDVlpCWFFYNEM5Q29JbFV5UWQ1TE9IM2NMWis3eGVkdllXNmVnNUhRL2dma3ovbFBadm9KRGc3TklTd1UrVm5Qb2d3NFlVTy9ZT2lnSGszT1pUNTdpUSt3Zzlk''@;'; put 'put ''bmIrc0FjbVEvQTZ5QXNyNWVlVWY3TkY2cm54cHVUR1cxVVZRbFhXS290Qnh3UUw1ZWVHSXNGQ3lnZ1pxL1NPNzVhbFRlNkEvQnZZZEV4MjRuV3c2YlF3bVlqMFFNYjNJODBaakovRDl6OFpDVkM2VDZDZE9FY1dBUzlWVDZrSTZGREdtTmRjamMwSjRCQzM0ZE80cC9jWFk4OC9QODdPSW9YT2tS''@;'; put 'put ''cjhUNENKSW5JbG15aitVbE1PRkNTQkxFZ3NuQWhVdHVzb0I2ZTBULzlQNFcvbll1em5uOUtmVE1PY1UyZ25NY3B6Q2pCbklvaGpTck55Q3ArR09WL0pkZC8vL1BOanYrajlCWjNUdnY0Ny9CcWNmeTN5b0VReWFxbXFwR3dQVTdZdHdNUTNGY2tReXNDVldLR3dLcVpzTnB2SDV2YldldndxdWhC''@;'; put 'put ''WkRoYjRkQTBHMjYxWWJqL1hzeWZpSEdpT3pua2plLzlvWUg4MHNxZG5SaStEOTVUUzArVm9Tamc3ZzVFVDdkc2piYk85VmJjVW1jOTBuVzNyZHdtam9DY1BvaXgrSnZOa0JXaktCcWVEcUlYaEpvT2dVUGYxRWtEUU5CaGJWUnMrMFJSOVl0cWlUN25tdTNidDRwTTBWMnFJQW1TQ2luSm9WUVVH''@;'; put 'put ''cmZJZ2toZ2dNQmExV2xnR3dPalZVOUxVUVRDOEZWaXppQzYxaytrOVR0TDBoMHhDRFlzQUhLaGFJNmhYTDlwWkNZWkhCeFZDQWxLdWJ0MUxGRldBWXlweG1YV2YyVVgvUzlZbWt3Z2xzOG5waVRFNHF3R2ZyOVhyOGZtcVJIdUo4dVNpTmxhUmtBQWpySU5abDUweVg1VFVxazVtcm9BQm11RGFn''@;'; put 'put ''TVErUnA0ODh2NFhyejcwMk9Ib1hDalVyMjZjNzVoY1NoM3I2UncxVktmMEhrOWpZN2QzNmI0OUs0K3Y3dnZDM29HRENVUFBWU1BOTzlVNEhndG13LzJSazRjZk8vUytGNDhmZUdnNWUyVTgxT3dQNzU4ZU9aRUtlb2FWQzJldFRlNld4ZUdGVHkydVByR3k1NzZsZXFmZDYxaTdiRXJVUm5xaU96''@;'; put 'put ''cGlReFFmQVMzSkQwRGVpS0E1QkpMTkdneHdTUU4xQUxrb1FHdWdZbHpBVEh0VHE5VVY2Z3F1anRlQzFpQXlVOXRmaVVsMzd0YlJCUnltLzFidS84Szk5NUluMXJiOUt6NmErd3pBZkIrTWZ4ekcxNEZXNTBMOXlSNlFPRENEQ2pnQ3lHVWxWYWNrQjVXSXVkWlA1N0xYR2ZUT3BqcVgzVlZyMGRz''@;'; put 'put ''TXRqYUhtaW5kR3dXUEUwc0tsdGtvLzdJUDl5WjJ0SGQwOUExRmwzcHp6Mk4vOStSazk0OS9tZHkyTGZsTDhrUmJ0aU02MXRDNHB5dStveDNmTmREZVB2Q1QzTG54cnE3eEhOTnRxTno4S0pNaG9XU2d6bFpaUVhFa0xZc0t5d1lYR2p4ZzBzSkhYV2g1bE1pckNNVUhqaE1QN3QvLzROTFlMUjB4''@;'; put 'put ''MzBwaThuUW1jM295c2VLTGRkd3lWZ1hudHZ6Z2dVUm52Q1UwZlZ0bTZvUFpVRXU4ZytveUZHNHZNSDNPekN5a1BKaVlvMEFDVTFXbHlWQnByakw3d0xvRThNZ29HY0FKQ2ZjQ1dML3ZqV09QTEM4L2N1eU5OeFp1ejJSdVgvZ3NlV0xudlFjUDNyZHpmT3pVek15Tlkycy9aM3VmZ2ZuNllMNUtG''@;'; put 'put ''RTYyeVJ5YjZtNktKUkNiTmNXYU43Tm9Lcm5IRFZRNW8xbmkzM3FuK2ZQNG10eEg4ZWR6UnZ3V1dmbEYrdC9UNUFsSnQ1YkgxNkNXcEU4ZW4zSmhOcXFzMnNBSEdxU2hJek4rekVaMXkrUE84RUZ6ci9CQitYbmREK2ZsUkxGa0o1aEpTR2dpUktGa0JvTlNnUmh5a1dVWTJVSTFYOGIrUWNzeHdx''@;'; put 'put ''RzV1VW5wMUJjSjlkTERpN254WGRqWWZ2ZkVFanZBaVUrRlk5N3J1dmtCdHEvNnZvRXZ6LzIydlpzZllYZDczTi9PajlEZDhGQmh6N2N3bVBxVEhrazlYZ0dkbk82WCtzdTBhRE1zTWQwdC9FVGdsZHlTelYyUnplSlBVM0xDM1hUYnViL0JiWHhjZEIvejhScXBZNlZnWDNIVEZJeXJtV3lXOXFJ''@;'; put 'put ''MkdjakZ2MmIwQjFqRVRCbUcwVXc1SjhzQ0lKT1ZnVjJIdEVhdkFyb1hUQmRZQmFXeUp6L1ExRzFhRFBkbnM0bURnMVhKenE1QTE5NUovRnF1WStSWUg5L24zdncrSGNrR2pWcEptT1RGekNNb2NNK3QwV0Rnc2o2aXh4RU4wQVNJMWIxWnZIYzE5M01jWGNtOWN3eldtL3NRUHBYN2E4Q2Y1UHRm''@;'; put 'put ''WmVPT3dMZ2FHRmRKZFdHMmFEb2FKUTBKZEVxazFPdnBvcjJBSnhFOTBlUjZzMm5BdWJYUHNmNlVobjVmV0pkWVpsMG12Ynd1RFJoQmJuMGxuTUMrTEZwSDY5bnMranBkbEJQL2ZHMGJFZG43LzZEOHVBOHhYRzVNMmtWQ1NrWTE1RWZGc0N3M0d4TS9tczNtZHRCaitUNEp3NGpodGU5VC9rdHgr''@;'; put 'put ''TGYvUDJ4NHpuVDJQYkIvL3dQN0prK24wNmNuT2VKS0xPZkFnOHZMRHgyWXlINXdLblBiTk1kYnBwOVFuRDBJZTZzQ3ZnTldPS3dDU0ZYQTFDVlRDQ1RBRm11cVRZWnFjNDFaNzNPb2FCREJtZWM5WnJmTWx2VXoyRHAyTXBVNk9YWStpelVMcTZzTDU4Z1RYU3VEZ3l0ZGIrT2g3TWhJTnZlVFlo''@;'; put 'put ''aVlhQndtMlVrZCswcWlBck5TSU5RMVdqRFpGRVdlVWJQWjNHSnVEdnY4bEFHREVMZUsvbUppcG83MWVNS2ZzRzRTd3VTM3pkN3B6dG53OGY0bEdVQzVWN2U3citpOHFxNGhEeU5jZjNVNDFUUG1EK1JobGZ1WHB2cWxubVhQWXFnWVhFWHdxb0UxZ2Z3RWdhSEFzaW04QXBxSXhONGtjdmQ0bkhx''@;'; put 'put ''OWtmSWV1bUszSDJ4dVBZT2NVdllWa0lOSDVyKzA2L0d6V1FhNlhNODVCalo4MndsRDd1MjNHZlErU1FFbitUWC9pNFRKbHdGcUlLOXFyUVFrTnNGRjRLTE81eUo1MVlLYXZVRVBCWmRGdG1xb0Z6UkVTdGdmOXljQ09POTdYMGY0cXBISWhIZnhzc3lCV04vUm9jbHJJdTF0aDJJdEk3NGRCNjg2''@;'; put 'put ''a2JocXV2TEsvbkRVbVhCRUUxWkRXNlk3dmpzYUNmZTNocHlKcG81SWJkMnU3VjI3bzJ5dFFZRFRKTk16dUc4b2I5SnlaNDVrQ21BMzJMUnVvQmpUNjZUKzlTeVl0R21KbG5jQWpud0srcHVSTTlrb0JSc3dMdDZlR1psTUhwTXNqaW56a3ZZbzhUSHN1bTB5RzEvdTYxdU9aeWR2bTYrYXVtTUgv''@;'; put 'put ''bVR1cXFIVm5wN1ZJZnJiamp1bU9IM0xPcEdLenFWa05qaHdUb2xwY3M0REpnbm5QSlNYQWU4Z1A4aDlmd0grWVJCcGxQUEN6eGt5QTJONUVWS1lHRDNCV0JXVTl3T3pvS0V0SnNyWjVvRmJHSFJLS2tramRrei9DZTVLN1BidS9Pclp4Yk5mM2ZtcjZhKzlPQTNEL1ExcFl6L2J5T1RhczN5ZElF''@;'; put 'put ''ZkozWXkvQVgvVXFHQm9PSDdLZ21veW1PT2J3V0RRVTdqQ0ttRklEUnNkWkpxNC8rLytiaG1MdWY5aDd6dHpmNEZ0dWRmeEl2ejJPcmJ4c1EwdzlzZGdiRFZxU05hcEJLRERQSk9UdkJBR0Z0eVN4b1FqOCtkK2RlQ25QOStYZTNNTzErTFA1SjdDMDdtanVUZm9XRDB3MXJncyt5azhDMjY5dkY4''@;'; put 'put ''ajc5WXo2Tm1LRTl5OUFRcEFEK2dUUnduSkhjQVBydjEyZ1BqVEEycy81dkovMi9ySGNELzUyU1ZhbVJGQUxQalo5dWFqajc1SmZ0YTk1dXlHSHV2dnJKL0ZUMnpoY3hWQXYxVXU0R1h1Y3NXb0ErWnJ5TThuK3dPcGFrYjl3M1ErVkpqUENvdy9CajhkTU4yYlBlVG4zZTgrUVllUDQvdncweHkz''@;'; put 'put ''enFnT2pTUXR3T0dabHhSbXBoN2prNUozNTR3S2pSZ2pScmRmZFArbzk0R2htMjVPZ2l6NjlULzhBMTF6YnYzOVpHNzlHWmpPd2NiWXdrZE5oeEFCZ0lSc1gvdXJUSXFmNnlCSllwRjhEL3BhV2Q4cTZEa0JuNXcwZ0VqbXN5YXM3c0daNjN2SVZ3MmY0RHl1RTNTSTN4QTlzaU0vK2tIU1pNT0Nv''@;'; put 'put ''aGFFZ2g0MCthWkdwYUJTS3RMY3lIUkFZNldLVUdNTGJHeXEwTnN5YXF4U29XVUpIeVhqMGxPbUhTVXQxbGpXMHlTYjh1SmpYdHB3MUtnelUvOVd2Yi9lNTNKUXo1Ykg2elpxNEtpUXhReG5WV1RFV1F2ZVdnT29nWEs0RU45K1JjYStFcCsvUExHVXlPNU9UcmtuQTQySGRsZ08xa3pOOXM1UGRo''@;'; put 'put ''SDlOUWR5MzlqVzFyRTcwemtUYURBT0x0b3MvWjA1YjNka3h0d1hDaWVRRko4bkV5RHJER0FOUFhkV1cwR1VJQzg0OUJvQWFYV1p2SlBLSm5rbzZUYXRlZEE1TnplaXF0OEdYNllFdDR1TWRna0RVWWlaakVhRWpDNmowMjZESllQczJ1UVo5Vk9pMHN2dTBHTDk0NzRyQndhdVRQVWZhTXhrR2cv''@;'; put 'put ''MGUyYmEybVk2TzJmYjJtWTdpWDcweG16MjFHaDM5QUE1bC91M2FIZk9COFphNzk1b2RHOXY3MUtVNDJrNzROemJnSFBsYlRIYjFyYVk1WUsyMkgrZG1wdzhOUjVkOWticlJueVJ4UWo4ODQzWm85NERzYXIwNlltSlUrbG1UNlRla2RnWFR5eDFPUnNqM2xaNlpuRTRzMEQrelBSQzhabFIyREV3''@;'; put 'put ''TWtPakdNb0ZkSGR1YnNTUVUyU3UxdzI0ZnBIUkxtR2cwak16K054NmVtWllRdkVDZVBSa3MyNFVvRWVWa2cvdUZEdXRUblp5NU56YTZJRm85K2lwYlBaR09EaHNYVHUxK2N3SVBUUGlnVE16bzNwcTZRT1BGd2hUaG9pZ0lDdjVaZG95cWlJOXptSUJiYmZlWXJmVlVnbHU4REgzcTRlZlZtR3ha''@;'; put 'put ''aWRkbjBwMHduTHh3YVhha1BNRFhhUFhUWTVlTTNyeTF0d3U5VXBtOGxBRjNxdmVrVTU0NmpvOGJXT25wek9ueHI1NDUvUmwrRE43MHVrOUhLZEFGdVB0d1Bzc2FIZXlRb3RWU2gxR0twTG0yU3IxU0tWU0xvUEdWc3NjSG1oSmdTWFBLOHRRcVFOalF3VmNaclgwdzEzSkNvK2J4U2xGMGM3bGpK''@;'; put 'put ''dnlmdVkwNUVpb01yOTA4ODJaYmR2R0UvRldyNlplYjNVU1pTbzNnTCtlR3U5Sk94T2FLbTg5MDRPM2t4YUFIODNSK0hheXFsRkhWRXFObXZtd0pmNEtEQTFram9xc1VzMXlXVlFRaVhBWk1JMEYvcHB2UjVraHJKTzJScVZ0VFpjMDVxVU54L2lyQTFRbm5xa0JtMmp5ZWIwZXlsK3h2dGlYSHQv''@;'; put 'put ''Z1NnYzhqSlhnWWN2UWlYVC8xUjVuNDg3MlhZY0FKVWVQOWZjZkc5Mk1rc3BjNS9CcWo2K3B0OEd4ZldwN2Uyenc2dkh4cXdkaTdidHloMExib3BGdG9kQzJTSFJiaUovOU5DQ29BbWpZVEtOakJoNVhZYlFFQ2p2ekJ0dUtUSEpBUkwzSmJhSStDTXJxNERnbGY1MWU0bmI0aGwwZG1ZbnV3R1Ji''@;'; put 'put ''Sm1OZGloTjlaRTlQN2xrOE9EanJHWERubmdXMjluWnJqTkhFSUx4K2tmdzE2R2hhNmdYSSsvUnJLZkxvTTdKSFJWdFRYY1hjK2NwTjdud1JWSWk5RFExbVUwT0R5WmZKa0lPTkp2cXJxWEhmMmpzdy92b3I2MWxwZkR1bE9TM0k1UnBRUVVsYVdUU1RJREJjVmV4WHdVYnRDaDVDc0ZmVldTMUdQ''@;'; put 'put ''WnRWTEFraUZEc0JWUGtWWEJYVVZsVjV0YmFtekhpaXNKUjNmNlVSQjVRcVR3T0pySDIzaCt0bXdKcFlMTFVTdVpNT2pRTG9YV0NtaVk2dlJ0WlA5VWFtN1dHcTZEQlJBckJ0L3NtK3A1WXlHV3pmajJ0emIveHk3NTBBempiY3lNK1JIczluWUZ6Wjk2RXI4WDFNQVpTQVcvRzJRZ1RveVkzKzlL''@;'; put 'put ''eWpqcmsrT0IxWktCRXJsOVdpU2xBcTlSa0ZqVFFYMkRXUU9qeWtUVlRRaEtoVXR1SVdwZ3YwdjFCWFNoOTB3VzdrY3V1TmJxUGJwQUZ1VVlSZXFnMi9STXljT09DVlBMazluRWxGQjdMOEpXT2FpZlRzTk92MjloYWhYYWJvblNpbldzSzlrYzYrQXQ1VG52emhaemphY3hBWW1mV2twTlN1bHpG''@;'; put 'put ''ZjJyK1Y0MHNKWVVpYkw5dHp5MDUwMjlVWEl5bnpKWkNVY2g0b2lzdVljZGpQSm4rSjdhTCtFc3VGL1NWY01SaS9jWEx5eHZGT3FoZDBjdTFBVWd2U3B5WW1UcWRUWFV1SitMNEVWdytRcE05dEIzMU9YMTZmbzNKYUJXSVFDTDJnV0ZFZ0dYR3hQcWN2VmRNMk5qUmRmTFJMR09pUzlEbjVPUDRn''@;'; put 'put ''ZlM3M1czTG1RRGw5anVwUTIwR0gwcGZWb1FvN3N4VXBNNWtOSW8ycFB2cE5xdEhtaHFhTGozWUpBMTFRaDlKZlRIWmRRSWRTcnMzZzZvSVNkU0RYV2FyM3pzUExZWUJURmJyK0daN0V3WUdrWjZKV3dKTHVTM1VTRGhpelRIZ0Z4WmgvYUNyZmE0c09zT216ZWhPM3ZRM3hpRGxQbXM5Y1B0NnpK''@;'; put 'put ''d0xzK0cvNlU3Q0ozTTlwMEFhaklPam5MOEk2ZmFnakdUTERRaTFnYkNOUzhOYlpOcnVmZk1qckNYRDNFMC8raUxNMEFUblR6U3I2NUF5Q1JrSmwwSGVPaC95N2RrUUdYWkhnY3Zid1RIaC9xMmQ2SXRSWEYrMUtqSVN1bUt0cTlpYUcycngxYmxPMWZTZ3hPdDlrNytsbzlvQW1hZEE3dWtOak82''@;'; put 'put ''aStCMnZjVHU0R2ZTK2NiTE5nRlpQNVJMaU5pa2F5UkFNcEFBZXdKUGR6VFpUcGNFWW5WZUs4TkRzdnBwZlN6VUF3MFhCZVBJRzN0OFlUNDl1MlpXNisyV25WMTJ2TXpuUVBUcWYrK0k5VHViUDEzaW9ObFRuQW53QzVHYjhWYUVLYnpHK0JZVW9DZjdONVlKVS9vc284a3JJSEMwWkIyWjViZGly''@;'; put 'put ''d1c3UGI1R1pobENMTm4wcHpIcGpVRTRHeTJTNlo2UUp5dmdNY0ZwZ3Vuc3k5eEpndW5vVDkySUY0YTRsU3p1bVN2VUN5N3FzM01HK0ZrYnV0N052LzZwSHRQNTRBeld3ZVAwYjFFd3ppRGdrTzZGL3EvOUpmMlAvbG5yMzFZME1mdTNYMjhmRTdQem9PSXk3akIralAyanY0dnR6QmdwOU9oTEZa''@;'; put 'put ''RG1HRnFNQUtLdCtvRndYR0ZraFJnTVZnTUZERWMvcEZ0OUVmc1NZaW9oRS84Ymw3ZDM3enhaMmZ1bnZuMTE1NTlWV3NYbnY1NWJYYzcrbTRqZXRUeEFYajZxbXVXS2tHdklZaEFibWxvU2xlNzZkcnR6TzgxaU9kd2VTVzNLb1VUUWF4d0haUmc4VmpYa09kdTg2bGJmeW4rV2YrY3R1YmRWT0pw''@;'; put 'put ''L1hKYWxOZGtvaTVPZno0Mmt2SmJzejNFb2VYVjJIT0xYeGsrZ3Y3eU9LNEkvZTMrQk81VjNFMGQ2UVgzemJlbXpzOXpzWU5yTy9HZThuendIVUJSamFtQU9nd25uQ3hERWxvc0NneEFveG05QmFxUWlsQ3VCK0RiSTVSUlozbXFsdHJpTm5LZzY0aXBVNFJheGE5d1ZnczZGMmNWdlgzV3JEWDUv''@;'; put 'put ''TmlhMitmNnZQTkk3R1BkYllsZ3AxM3hWUE42cGltcnEzbEU2RkVkVTBpOVBIV29FMFRnMW11WEQrTEh0bkMzMGExdHl2NytxUUVSK3JmM28yWDJkcWJrMTQxODVQcE1ZSzE0L0ZDT3ZFeUJkVU1yUVlnb2lsZ0JiSHU1NGxLQ2NwZEVvMmtBUVBLbTEwcWVJY1RDZlgxV3ZtS0xiMzlxdW44VG81''@;'; put 'put ''cmJNSFdqNGNTTmRXSjBDZGEydW8wTVhWektuNVhaekRSMXZteDJFaXplbjBkRGVCV2ZETitWQy9pNnZXMTNGdEljd2JoNTNKdnNRd1pLdVBtMW5lZ3J4SzlyT3V6MVZHRnhKYVJjK0tNcEVUWFovbzJUMHdGclREeWVTbVhKTGpYRkNONk9YZGtiUlQvV3JheHorSzN5VFNxUTA2S0tZME5kVGFy''@;'; put 'put ''eFdUVVZTdEpGWS90d2F3TFV0a0hxSDkxTE9lU2x5QndUejh0UHFESENMSWVyR3lQeFFvaXpZeC9PQmZLOWgzczdqN1lsdzNPT3FOdEE0T2hhTzdEMmQ3ZXJLdFpPWmlxbmo0K09IaDh1bXFvWCtsdmluUm9jbGRXZGtaT1hXbkVkeGl2VFBIOElFVDZRUyt2UjZsa0VvNlRKcHdoa2VhMWkzaFNp''@;'; put 'put ''UWt3WDVHd01CSXpIV25tbVNpeWlCSW4wbnBVVDNNRHdSNmdhckhYN0l3bFdMWnZzU3NIanBDbUtaTCt0Zjg3TkRDUU9EZzRlbTF0ZC9XT1JILzJXOTlLcDMyZWM2azdSbzcxU1JIS08xTG5pdjNZRnRTZGpKc3cwdUMwR2hhR0tTYzdyTUlFMUViUVpGY3FXSmtKejQrMG1JMEd1YVJFVjBtTFNs''@;'; put 'put ''aDVqMWxPUUlZZlJ1RDRzNCsvOXRwcmMvRHorTytvNXh0UHBtWlRKMDdBQ3o1TTNkL2MvaU1MZUE4NXczSzZPcG5IMVUrVG5BRjVXUkJrV1NsUVFPR1pNbGxkMUJsYmJKUjFGdjIrMjA3ejVPM0d4NlIzc21BM0d1cnJEZlIzL2c3NDJvYWkrSWY0UlowTEIxUklKK0FBK283a0E1N0QxNUE3TDhW''@;'; put 'put ''L1RIT3pCbkU4OXkxeVorSlMvY2RXMGYzY3pCLzNrTzhaYnVLOHpiLytLbDZITTlCU1d4QWhwaWpjUk1YdkI2bmdZaUVBRmdMeU1TbUFKZldxbDJwYk5CWlVNM3FrcCt2Z1lHN2dtZ0hjMHJHenUzdFg1MW9UK2ZPMVhUeEcvRlAwbDNnRWdOYVl0QmR4QlVMWnhVeFI4blc4Q0hxWE5UWmF6STJO''@;'; put 'put ''NXA4Mldpd05EUmFMWkZzT3JpZlIvOUFNYm5RdDI1dk9hZ0k4TnRJc1FqWGx4Mmt1cngxZzRJQmdWMXhOTTh1QVM2OFdHT2wrT3N3c0tKbXNDV0RXVFZ1MTRWTGFobXhHajhkRHBUUUZIYy9pZCtYVkk1WWFDOElxSHZuZi9xNVdXMWhuYkFBTngyUTAxZWljMFZxRkdQUTJlSUs2cWxhcldhODFW''@;'; put 'put ''dXF6VkpqQXVVZmgzSC9HenIxTnBPZmVocjRyNVo2bDhUOHkvdVJCUGNtRXE5WmFwU0E4WEVrUVhTdERTTTZ3UU5yc1I1S0k4N2p0TnJNeGo1ZW9tR1ZKV1o3VXZhcVNGV1BnTUxoVDRtUE5aZkxsQ253dGQxMlpqRG0yQnhhREUyN1F1V0N0TkNjeGhmNEVQWXJVWndoKzhsSEdjTXUwT1lycnQy''@;'; put 'put ''aHpRbTZEUmZUVUZtMVc4MjJxMFdlMmFMTW5QOWRoOUZlOERkbmM1aHY1Y1NyUkR6YTI0ZmxXd25sR0N3WTBsa3pwS1h1a2NGY2pERXhJRGNlZ1ZxeG9nRGVxbGtBMWxVSmpTcTRvTWF2V29ETkFaNjNFbnlxQldXSTVBU2RHYzdKQUlRRHJLaUFuNHVSK3YzczN2b3MwNUl3LzVSazVORDBybmJz''@;'; put 'put ''VjM1eTdsZWZRSkZuT1V4eTlrNnlQeC93K2hhaXFFd0FyYkZyQTN4b01MMms3SVA4a3gzMmFmZ0lNNjJwNFFZcXJaSmVwSllPQW1VdTJKb2k2L2JCcWU5NElDZEkrQ0N0dXV0Uk9idWdVMnRCSk9IV3hYc25BNWc0MDdaTWNLdE9QVzNpVlBtOHJrSjRSREx0NmtJOWFMRE9IemVSWEpqNHVJVHha''@;'; put 'put ''K3NCUWpVSnMzRXlidFRzK3VhTmN3bGM0b1hEaGpTVGJyVGwwNzY2U0REREFKWll2eFhDN1djTC8yeGt1NFNLYzNOem1LSHAyaXpZbjVEYUEvN2RzMFdaUGZwekQ2SHJlcG9EYjYxUnkzTWZtYXVQcldmOVl1WEd3bzZqTlVlQnZtOXFzL3p1TXM4N1cwOGJYcy81a1NSc2FORmF3OWZCeERxOC9z''@;'; put 'put ''bkU5UUVjME1QTnRsbmZSUUNzUk5tb1lTMnBNa3k0MFJTcUdWZ3R2RGRwNlZqWnFobTdWSUc4cUNyNFBaaVZGOUxMZkE0Z3FJb0xReHkvejVMblJVVGw5N2x2NGZENkZEbmVuY2R2YW4vSkV1bCttL3hOZ3dIS0RHQy9wa0hqSi9TVndZdmt1REU2ZDB0aytWc0p2TnJjNWloTmJ0RGtodDRHemZY''@;'; put 'put ''V0xOcXY1TnRYb1MxdTAyWk9mNnpCNlpSUGZ3bWdPZlJKL200QXBoVlJQcVduK04yaVFmcUFPZjhLYXNPS1JPMkozZkRqMllmb3ZpbWZZRy9zamh1UjZoTit5dWg0M0NtSlJNb2d0V0VFQ3JRMzF0aXFWVXFIQlNKbFBlNllmQ1VVZllXVSs3N2xzcjdJZDhwblB0Y3pWUTlNaUxCbFZtWWlxZytj''@;'; put 'put ''ZlN2NGdDNCtEcWtvRHFsdVBjL0VoS01PcEFXNFQ5TFQ1akg0anF4RXFsQmlJN2tUQm93VGlIbG1zbUR0SEVVL1J3WllJZVRHeS80RjlYWmNISXdzN1F4SGdMdDJYdDhHdmE3L3hPUEFWNDR2QVpQRHUwMm1QSTNmUCtDS3huUjVaZnVpQXg5V3owbkY2RkxnTC9TMzM5L3Q5K1A0NDhKamN2MlEv''@;'; put 'put ''T0JYWjc4c2RpQ04yL2l5M2h1RmFsNFNQVDVmZzdPWTJSOUcvYnRIbWhOd0c4UEdKTGRyc3lZOXpHUDNGWmw3RGRYWTJWNTgwMTBzYng5bVVkeFZpekYrcHdNb1ZGWmFpamZuQ1loQ2JXb3RKYTlWWjlUNm5UdVNaSUpHaWJEVnZQbHR0OXBXU2JMWHJlYnJhVGQrVXM5VW9MV3lIdVhYa1pkUkNm''@;'; put 'put ''VjhWWUVBd0ZZcm1xNjNLdWVjc3ZJT1hWRHgxMnVoMWVwd0JOd3NQNW4zUW9yeUVXTDVPTEY4UVJVTUEyMW11VXV3eWxzcThtS0lwekttRXQ5YzEyZDA5bVNVMTBmbFFhRDU2cEp0bk00L1RMT1p4WjhJUlM0M0cxOWI1dWZLOGplOEJIRWRBY1NBb2RhamNjd0hnZTAvUjgvTnlleXd1RjdmL1N2''@;'; put 'put ''NTVkYXI0K1puOCtJZDNGajBYN1BuMmxUY2p4Z2ZndWZCbm9IKzJvUWhLb2lQSmxRYUFuYXNlTkJ3enJsQjNZVldGQnBSbVVhV2tWUnNWS2xLeGl0UklKYXBWSzlVYUlsZHQyREkxbFZVQ2xlVVMrVVdqd1NCQzBXUjBzTGM3R0FsMnRvZGhnb0FCcU0zcjhXb0I1SEl3ZVVPZWZsR0tCNCt5Ykl3''@;'; put 'put ''eEkxcnhJK2Q5a0IveGdQUFFTWS96NU1pK294dlNQMGFYclo3TCt6ZEZvWE4zVHJiUnBKRDBFSTlIRDNiRmh4YXpSVmtoaVk2T1JDRThuVHZTTXRMc00vZUYydU04OXlISmNoL2lXSkdzYnc4N0hRcWxJZ3FtaUpnM1JSUnBNMWJKT2xrUVRHa1ZuTmJWTEVaN2xXeGkyMmljVnJVTUNoQUxBREF2''@;'; put 'put ''cHozUHpVS3NrMHFrZGN1WDFvdHFaZUdOdmZDcGkzVkx0cFgwb0lZUU9sU21veW9mSTR1anVKbXJaOVFab0hpUGFsa05wc29jUGxLaWxpV1BEWlJML25BdHRtdExiS2x1emZRMXd5WDVJSzRXd2MxdExKN3JRR2xvZ3RQV1Zhak1jMHBiWHloNmZsNXVqOFdqeGUzUDVNYzVmQmw3dnY0S3ZOM0R4''@;'; put 'put ''bm1Wai85aDNqNEQwTE1YUFQ5cTR1My9EN3o5WHpiK3Ezejh2K1RQLzVtK3NmRjUrOE1Qb1h5OVhJSjhCN1NuSU5xZE5PcVlxN3FobnQxcVlUSWFLdkJFNXNrNkd1cVUvZm42RGRtMzlxU0pwcitCTkZ3dGZneFdiV05qWTdDeHplZnhlV2xOZ2l6a1pQbG05VkdsZ2QyRmtiQ0ttNE1uK0I4WGt5''@;'; put 'put ''Y20weWVIK2k1UEhSeHAyWGVEZlUvY1B0WGlPR2dmdDgyMEJXWmpuYk50d1cwUlV2V0Y1Ym1iSjFMWFppYmVuOXcyT3hjZmFHNDJORFhaMndZY2F6OXEzNUdJTG5TR0YyS0p4UTVhMjhiaW41UjNiZU84YTdFQTkzRUd4emtPM3h2TFBhZm45MWpSOC9OeWV5eGVXOXorSy9ubjFidUxuNS9KajMv''@;'; put 'put ''NGZad0hwdEMxcEliNG1JL1FqaTdqOTNEUTVBL21oa0lLRVNzVnlvTXFPWGh2bzZFOUYwSXE1ckJhTGJSVEtoV0xRRVBLWmRaaFpsZlN3cXhEdTY0T2hKM3NZRlJUYTcwNG1RQ014T0ppTm15VXJQVFhhZG5kOStReXRoZGs4M3c4L1ZTaGVrM0l4MTZ0WU1XMjVQVTRFMmhrZmwrZHpWb0p1cGQ2''@;'; put 'put ''Z3g0SEh3bEZIeFhyY2VWNmxlMVFSbyt6YmFuSEZjZjFMcTdIMmNycGNSY2NndWx4VHFlenhkbnNOZmdORy9TNFlqV09hbkVLcTVFcmNSYUs1WDRCNUlqTE8zbmorT3hJdzhLd3l3ZWNhR2FzY1NHVnU2bmxuWTQ0c0tKL1g0ejQzd2tuOENmM1JpWk9wME91YWM5eUJCaFEySjE5SjQ1OUx1QkIz''@;'; put 'put ''K2xhU2d4MzUvN2VDZmpGNDB3VVQzZHkvRDNNOFc3amM0cS9mMXIwL0x6Y0hvc0hpdHVmeVk5eldNSmZIZ09oNCt5Vnh2bE1VYnliNThJTkp2dWtnSGY1WE1PaTJQT2xoSjMxZjNqWVdWZ3RtMGVZMzhjWmFSK3d2MTJveUZjVHlmdHpqa2gyV3JGZHhQV2JPL1A2elpGTWNkL0w4bjRlamFURGx2''@;'; put 'put ''WjlMcThEYWJaenZ1dFlueGRjekI5dG8vQ3J4U3BCcE5GVHJDUkNXc1FxUkEzWnc4eWVZSmNlWldTTjBvaW1yRmFyeldyejZQVjZzMU10MWdXVTNBdVg4UE5hUEs2c2RDWXFpZUJ5ZDNUMDFZL2s2L0pzemlaN28vN2Y3di9DSnhxNk81dnJQOHRLOUJ3MmU2TVJqN0pDUFNuUGQ1NE1BbjBIVUFK''@;'; put 'put ''ZnpvbXVucXBvOVpocWFDSUpoelNDV2dTeVZBZEErMURKWkY2MmpiTFF4blRSY1M0OFJKNER0TUFhUlRVUlYrVTdHR3hnNHF2VjNHZHBaYUhjalhsd3dkSU9BRTZ0MUF1VmRqSzl0MW5lNHdTVWUramIydG9TYlhHZnh3ajZhYk96UXF5WGp6R2VpRzJsbjVyMTh0bjZpdEtSeVNBOVpZdStOQ1Y1''@;'; put 'put ''OVFwKzRMK1NVNVBwc1Z0YnE4WTI1U2JUZkdXR0JaOHU1Q2hML29DUE12dkxKOWxmLzFGaXgvSDhYTW9meGlUKzhHZEZmVS9JZmJFYXZiQkYzL05TWDRMVlhPZmhOWStzcjEvcWUwc0pYZEZjM0IrUmM5Qm1uTFhSQ2w2aEdtbWd6WE5DTlcwRWJTVGZFRkRzelVqTzN6MEdQS3NPUHZuN3N3WUYw''@;'; put 'put ''YWpsc0x5UGlrK01CQ1ZhZ1lQUzVjdU5iUmthRWVLWHVHanp5VHF0VzdabWtvSjJZWkxEbXZkOVh1cjQ3MlZvaWtZR3U5M2VhbS94MDR3Rm4xc0tVN2xMVW56bEMzUFE1aXlWWTBNYjBsUWVmVFF6bFB0OWNhN0s1TnF6UmZtKy82c3ptVno3OGdidW12Y2JSdkord3lQb1dMbXpCdjMyenJ4K2Uy''@;'; put 'put ''UUJsZk01NGdyMDR5MzZ5cnF4QUcyK3p1c3FnVS9SV3RKNk5KNGMwWUhLb01mMGpnKzVBb1FTbjdpRVJGSHlubE9ScE0wd1pRbUkwNmlVdzQwbU42M0cwbE1TbEd0WTNUS2RXU1hXV2xUVU9zTnB5a0dKcmk3M2dsemh5dWluQStqTDI4RHJVbW1NOWlETGc2YTN4ZDJTTkxwZElDTnJNRkdxUUdN''@;'; put 'put ''V1FkbWc1UkpPV2k2UFZLRElxUlFyTkJaYXNJYjRPV2ZrR3d0WWRwZFhic29BZ0ErVzYwRXprWFUrbjYvTkY2aDFHWHhldDV0WlR4czNwTnFjVk0waU42S2NXbjA2djBXMVdyc2h3VG9FTm5CTDlrSEp3TlhXU2JzMkdYRWgyUnBzM1RZci9pN0x1QzdqZTFhWDhUMXZ0b3ZVa2wzRWFudVpqRzJW''@;'; put 'put ''Wk96TFpmeW9ORitheXRnMGw3RW5wYjY1dDJoZE1POExlS01sQnNrUENlMEZLNnBCSVNBSU1ha1BOaEcxV0d1bERpTjZWdzZhNEV3aFVFa0RNWUphc2FxUjlmQWFHajVRTGxlb2lGTEp3L25MUEp3dmNZWnd1UzRWV0tYUzg0Nm90SnZwdmM3MG5pZWhqTUlSRGxQWGQzZ2czSitJYVVQYVVLREY3''@;'; put 'put ''YXl2TXh1cEM3eTJTallRS0E1d204RDZIcE8xc2FQZTduTzROY1k2dS9FL0xpbHZlNGV2MFJadHR6Yjc3VWFEZmR1bEpuR0RMVXVMbi9TTTMvQzR3SkgxZTB0aUJ6K0VObFdNMzNCNzk4aG5rSlFITTQvZUJKNWhwRmtUYXRDNGpEeS9ScjVXaDZkWGNUbnQwVnVjcklSTEZzeWdtOHFNNFUxS0d5''@;'; put 'put ''WmRsak1ESmxlYnE4akRramJGOUNoWXhUeDZrY1g4blNpWjdEZWJpRUp3WW40TlVlR1VKVk5EbXlkZ2xoemlhQVFMM0tLdExwdVdiWlFYWktWbHhmS1M5a2s1QUROMGFVMFdhOGJMRjFmSUNWaXp3enJyMnpVaS9wKzFkNlNGQXAzUXVQMURoVGdMOEZmTkpqOHJ5K05HOXhCbFB0OWFYNUp2bmNs''@;'; put 'put ''a2FQSVlqTGNYNk80V2tMc3VvQzlHZC9pSDNHY0J6L1dNSHJQUzgwK3o1NnkrbStrWllVblAwSmJRT0lBRU53aC9CRzFtcERZV2RKYTNPU3UzNFhYaTUrUnhZUHk3bUU2QWkzUUNPczRJYXpNanRmbVRqVzE0ZlFqcEJ4eXBwcG5GVlpVVkdqQkNCVFdSSytZM0ZaOVhvMnB6dnZoY2pGRWtTWmhG''@;'; put 'put ''TStuUDljN1Baei95a1hRYW13T1pBSjdKL1hnOE0vNWJxZjZraHVYRU81SU5sUldpaWtwOHRWU1JyNU9LUzgzc3Nqb3Nna1VrRFlwcjVqSlRVNWs1ZkZscjdwdFk3OC80OFhMdW02MEZuZWtoQnNNT0NUNy9XUUpEN2dQNW51UURvYnJhbzd3dm5NdEQ3THc2SkQ1SmVIdDRyaUI2dVQzQTZvV2l1''@;'; put 'put ''VTdrWTF0cWRHNkx1YzduL1MzcUU2Z294aFRKeDVpT1NIb2gyU1FMeGhudGNwL0prY3RRdVZnWXJrSG5TMkx2bS93NXVPWmFidE9BR1NoOEg4N1VnQnBvemtQK1pnczF5Vjl0b2FFbC9ISnVIVE5VRzR6MUZoUEwrK1VLZ3EwUVk1ZFpJUTJ6RjlTcENGY1IxbDdlOThYOSs3KzREM0RBT0R0NU9w''@;'; put 'put ''TStuZVpLd3VLZjdWdis0djcwMmorVHB1bGJNNW5yVWtqeXB3aEFHY0FsT2xBWDJwYk1XckZhUlYzZ1RKc0JWcTlVSzFhcU5FU2xrdjBWbFdLRlVPU3g2T3gwdVJEcTdPcE14S0t1RGxkN2F6T001VEI0ZkI1dk5TeDZvK083d01NTHd0K3hpWmtqcmdZSWJYS0ZsZHQ3L2VnNFM0MGZ2YzdyT2pr''@;'; put 'put ''aUtRTzVxNHRTNVBIMUcydXYrbnJIZWRMOFdFL3ZLRlVMaXJQbTgvVllrbjV3a0oxclRNTGRyNVhnQk0rSHB1ZTZ3UDJkODFKZndOR0RESGRqRW82K3lOdm4zcUw1MDFKNytyeXBhSzRUOGx5QXV4OHVPOWNWREhjWE9PN1c4N2xZblQxYloxeGE1MzBsZU0vem9lazZkL0IxSGtOU0RtT1MxZWdQ''@;'; put 'put ''MC95S1dMU3BVYUVVN1RUcnBrNEhhb2VXNVZmVWI1bGZJWXJNTlc3SmV3RXVKYi9pb3AzSzVsZGNwTmVXK1JXbC9hVDhDbSt3bWVaWEdGaCtCZmZKbDArdzhGM0tiUVFrSEZtWjBKWkx0dmpvWlJlOG8rQ1Bkc1lGOSthc2k4b0RGNzYxZ0o5ZGNEM0pjdHdIVVM3WjFJRkZWV2RUbzZBVU42YkhL''@;'; put 'put ''QytRSGlQQnh2YUhISi90RHpvKzJ4OTRmTGFTNC9NRW1pOHRQUVpmTkprZnYzaGdxbXllVEhpZmIrc1UvK3lDc2lSYlJ1bHZ1a0RTZjRGV1Q4aTBDblIrZUF0YVBTL1RLbGJIOHVmTjdxaHdvaGVTT2xyaGpxelZJQm1xNkNXZ1V1NGZERUF6eTY5bTBWNXlpdm81cFVRdGpab3daWTRRdkIvRXVS''@;'; put 'put ''M0xSOVZHdXlpUWNOTWw5VW0yYkdwTzd4a2crRkJKTHdXOUpGc1A2M1lpS3FSb0dxR1JtckxzR3MyeUowWGRBL1IyRGJ4Z0xITVk5ZFgweW8zUUpvaW44bGR3c0hxS0pLdW5DS05Ya3JZV3JCWmF6VVNqRHBvSTBlUWprOHEwVEFsS2hmSzJDa3pyVnpWWGd6QURNTlA2VVVGUUxLbDRGV2xKZERG''@;'; put 'put ''WTZLUFdrSnN1MWluWldyNjlGR0VzNmlaUVdGRWJNSXpDck1yREN0Q2lMcE10UW91NHRQVER5a2dBdDVYaWNIZWhIc1JiNzlXVlJoTEY4V2h4a1VqQ292YnlHQ0s3RTRYaGFrTEMxV3RLY0pYV3NQeWE2YTJMWEc4bHZTVzZMYytwaU9SektvNmd6NVhxMGN6UGYyZmV6MzlrdWpqMzR4djVuSTFL''@;'; put 'put ''OUZwSlBnYnJ5K0w1TEtZQWJXNHRseE1DZXRtalpmc0dDbkVLWExNWFNmZTV6TFA3WER5b045bGxCdDVVRFNjTC9CUUxhZW1HTFBsK2VCWkNLQmhJME1QanFYVjdQUHkrTEpaQnNjbHBzK242Ri9LcHlkdm10ZWE4WjhOeTJRZWtlMkRJRSt6V0YxMkQ1TXh3TmxqdWZWL3hwVEJTelNtc2RRNXNJ''@;'; put 'put ''Qzk2bXpzSWFqUmdQS294RnJ5NDZMWkc2YW15OE5SVXB1M21abm52ZHIxVWtFUnJlYlp5YUR1a050VEhuQy82S2VQRHZ2QllGeCtHU29BS0R5M1liR2IxVUJ0ZDFCc0xpUXEyTVpuakR1bml1cUpNa2FIY1dqV3h1Y0lvYjQ0eVhLZDM1VEI2Nk9INVEzaXhCSTk1UFJIbDNic1pMb3JvSjBVNVF5''@;'; put 'put ''ZmtuQ0Y0L3BHU3Zqd1dkRjZPQldGeFB5cnF1eWVmYjNRWTNWYUN4K3dPRzRici9aSU8rRlRKK0x5R2grTDZFdGNCcjBkRmZmZklmY0hPL3RzdCtwNlIrbEpmNStlSytwN0k5MVdqVTF2MFBTL1BpOVhEREc5WmJUaTEzYlhVNTBHckRHamRGZk41c0NJbXNwOGFGWFpHVkZwVVUrNzZONVZiS0ty''@;'; put 'put ''NC90TG1NbStwSG1DR25ML0UrMnlzOUQ2YkI4Y085OHhrdThuNU8zZnNLRDlHdnM2TXdFa1FjbEtxTXBQR1NFUkU5MkIzZHFibjhCZzV2MlBIbmRJWTAvZ2dlUTZzY3FuS29vTFFPb3MwbUZQVXoxRmFGMUNOcXJ4Q3ZzcEMyalN6bHg2WmFneWJZblYxTVZPNFlhcUZURGZDbnhZTC9OSEU1bGxB''@;'; put 'put ''bjJPK0hSK2I1NEkxQjVzck9IYVhWR3RJTlNMVHVGcXdzeHFSTGpacWtENEhEVzFWaVFWZ0hZdjU0bWJoa2lwRmlyL2o0c2ErdmtBQWZtcmQ3bHI2UTZiNTM0RytOdjZnMXMxckgrWXhKWDA5Nm1FckNOZkFaclFVWTlKS1Z1SEJLclVBcG91TUd3djBreGxlL2VheEtLUnFFZWs3R1lxYzZEZjJO''@;'; put 'put ''Vm42ODQ3eng1Z1h5aWk1ek5tNURaRisvRUh5RmRqNU1KczNBYklBYTVodnpvVHhoQm9MckU0TnpuS1YzZXkwS0YvOFFvUVpwcTFhUUpRckplUkE5SXNUQ2xsZCtib0VYTjFrMDF1cVRiV3FrRzdXWFBRN0dUUVl0VFVPai9nQitaMmZ4eUIramRXNGlLaU9yVXFyQkl5Y29GYjNTYU1oWHh0akZk''@;'; put 'put ''MWVxZGdGRC9HS2w1cy9iampOYUc5YjdxMzFwOVlmUnpYSXcwYXcxWlNwdVBQa3h4STNmam5CNDl5ZldsdHY5NzNML2FUTVo1cm5rVGZJUEJLbGNIUUxIdms5bVVlaUZIcXVpTDhXK2g0Rm0vbGlmWS9pMGFLK2UvSjlEK1BaRWg3Sis1N0o5ejBNZkk3WjN1dmJhYnltT05iejdqclhZZDVkbDNT''@;'; put 'put ''WWRwQ3hIbWEzVDBodHZ2NXVqc2YxM3MxSmJYZzhZVFUvVGpVNnRFVTg0U3Y1ZUVMMU5DcWJVNXBDSDk5Q1Bud3ZueXVRV3BIdXZFZHZFZzJPWFB6N0lMNmZDK1BJdU54SDZMbUVQZ0o1TnlmM0djZGZSdWZJQTRBem5VOEJ1a3hrbnJRVWY1R0tiZE1YcWZES3gxMVBjeXd5eWc1OExxaWZwMTl2''@;'; put 'put ''MFZSTHY5NkMzRTYvMzhMczROOXZRWDEwK0t2b0pmSWdRRUVMVUVueE9rYVN5dGN4d2pyd2JXd2REYWpuNllZYUlpK2xtbDErdzc3cmh5M0d1S0dVVFdEc2I5ZFpUNjNId0c1YzI3Z2k2NVlMZkd1THRkYVhyaHZmU1I3VStmbTYyZnEvQ2VzMzVOZFBVVXJlQ0FZcy9CS2V4QSs4dDlxd0I4YkhP''@;'; put 'put ''enJHeGpxK3hOODZ4am4rVEFKZWphTDlnQnRnYytuYzhQcE5odU42VEM5SkUrbDNMQ2tPRkgzSDBpREt3R3h2OHZ5dURpMVcxdkN2UUZKalZSV3VxRlJWRkg5dGtySGFJRlJXQ3N0NmpVNVVGSC9iVXV3aUhkazNKL0hlSXUwdFNOKzUxRjIyWDVsdlhTcnBDNHBmZkdvcW1aUy9mV2xxY1dySDNH''@;'; put 'put ''d3lrMHlQamJRUHRnOTB4Y3QrRTVQcEQvZ21Kc2VtdnoxRmJSM3g5L3d0VFhpaTZJL2NXZms3bSs1L3oxL2VWUGFMbkFwZjZFVHZYWXppQ3VDZFNxUjZDclRyOXNBZ3RnTHNmQStrN3I0NzljNDNkRTgvcTVmdXZJeGl2ZHhPWU8zOENhc1loRllQUERENjdOTzZiN3pDWk1VYjByM1RZVFNUbktx''@;'; put 'put ''M0V3Vzl2YUlTMDI4dVVJQUFKQXBoUllOSkJjYVZ0TDRsWDlCVWhTc3JaWmNOczIxRGJZSFdGcjNCQ3phcjN1aXRCdnUyY0krV0h3eGFhaHZCMndBcFZOVFNqRUQ2ZlZGTzVnN0czK2JYVW1jK3ZHSmR5aExsdGtOMUIyK2JrT3FZcGova3dvbmNHWldBNTNJdk9qNHkxOGV1cWs0ZUgwL1ZhZTJP''@;'; put 'put ''MVBDUlhsYkV0RGlXcW04eW0xTFp5L2ozL09BV1VvTlBBQjlVUFFWS1hUdmpldnltL3hPc1dKa3FPcURxQ01DVm5Yb25FZGJXNkE4cTNMdkc3d3hSUDJNelZpdEplNWw3ek43akhSenZITmp5Q2c0cHY0VFpxN2hkaXBXY3plZWRCR2lzbVQwdnhKcjU4L1A1NStMTnhjL1B5TS9SNGV1S254ZkdU''@;'; put 'put ''NkVQRlQyL005Lyt5Qlh5dlNuejVBYUFBWTE5cUo5cGNSc3h3S0RFSEpNaFViREZmSnRoY2dPM3pZb0JJOWxtLzEwRUg4bE8yMUVFSXNsRXU2YzB0NDZ0bWZvRitGNXdKYnEvYUM5ZnljT2srbUQrYmhQMGVYWjNrNHdMRWIxN1hycXVpWDYrdmgwK1Y1WitybHliUWY4UDJ6K2Mwd0FCQUFBQUFR''@;'; put 'put ''QUEzNXZtaGw4UFBQVUFId1BvQUFBQUFOUEJuWVlBQUFBQTFMNm05ZjlSL3UwRVlRUEZBQUFBQ0FBQ0FBQUFBQUFBZU5wallHUmdZRDc2N3lZREE4dkUvNEgvVzFnU0dZQWl5SURSRUFDbElBYWhBQUFBZU5wMWxEOU1VMUVVeHI5elhnZWlnOEhCUVNzYURWUXRmNldCS21odEpLTFNwaTNQb0RG''@;'; put 'put ''YXc4QmswQWdKTGtZUzQ4UkFRdUtpQXlRZERIRXpjWEZ3Y3REQlJDWUhuUWhMYllpU3lBVFI1M2N1TFdKYjJuejV0ZS9kKys0NTMvM2VsWFhjQmorU3BvNVJqZkJsSG9OYVFFVEgwTzZGMGFIek9Ja1NCbVVNNTZsMmVZNCt6ZUdpTkNBdGs0ampONjdJUXJDbXI5RW5vemlvYVhUcFZaelErOVIx''@;'; put 'put ''eE1sK3ZjRTVlY1RzdHh2UHVSelRhODhoVTdLSlE5NER0T292SE5WWHlPc2l4MjZRazhqb0tQV2QvejhqZzFYK0RuT05aN2lsVVF4NEk4aDdTa1Y0L3lreWpqTWN3enAxQ20xYXdvZzlNM1FHemZvV0xicUEvVHFOczNJUE9kYThTWFpKQ1QyYURmN0lKU1QwSEU3clkvamFoRTZ5UjMxMHloM09m''@;'; put 'put ''Y1RuWnBIR01oSllEajdvRVF4aEJTbHZHaW03cmcvZGVOL215Qk42dUlZMm1lQzhMTzkzczdja2ptdUV2ZVhRcE1veE00aktBWXlUN2ZLT3ZqWmkySzE1bDU2d1JubkJXdmFnVmQ0ZzRlb2FSd1EvTUNCeGR6MUd2N2E4cXFNUVNQUFB2TnNockFhZnpEL3lKMVgwOXVKVXhidHE2V0VNTzVwL08y''@;'; put 'put ''WCswV2U5Z0d2T3F6cnlQcExXaS8rL3pEZjZOMFNXcUJYVzFML3RYYlVzRjhhczgvZWZ6RC96MldqOTJwclZ0TjV0L1FvdFI5d1g2MWZudUtmbWg5VzBHeTFydHQ5bDBxdHZyUGNMdll1U0FYblorbkFaWkE0c2g1YUZiVEl2MG8xbTg5YjZxNkg1eXQ0cUREVWdGZ3B6WGViV3NsTkRlK2VZcHhw''@;'; put 'put ''T2xUTldvZTJQZWJRTDdSMXdPYlE5TlAvSzc0TGxzWnEyVnpMTDdKa0t6UHhYTWtVbHFQZEk2ajVlUTVDclBMT2FOWjZXMTVSMXdDdHVuVGZZb0Y0Q21rVGNtMENjWjhLZ08xT1d5Q1d5Z0pzNnk3T0M1MUpvRGgzU2l4YXFUUmVEb3N1SHg3bmMxenBmSC81ZjdSendwQUFBZU5wTndsOUlHbkVB''@;'; put 'put ''QUdBei81U2VwNlhwZWQ2ZHQvTThyN3ZUenArLzAyTU0yVU5FaU1Ud29jZUlJUkU5UkE4aEVURmloRWhFUkE4UkVqNkVqQkVTTVlhSVJJeUlpT0ZEaE1RSWtSRXloZ3pwUVNTa2g3M3NZWHlmUnFOWi9xZWdPUm5BQnRhMHF2WkUrNkI5SG5RT1hnNjJkVGFkb0V2cTBycVNycVpIOUV2Nmd2NlBZ''@;'; put 'put ''Y2F3WW1nYms4YWNNVzg4TTlhTjdhSDRjSGE0YkVKTUtkTzJxV3BxbWFGNTNwd3hmemJYelYyRVJxYVFYZVRHd2xuU2xxcmxBYldoVVRTTjdxTVZ0R1UxV0FscjNEcHYvV0E5dE1WdGR5UFlTR25rWlRRNTJyZEg3UXYyTC9hbXZldklPSnBqM0ZqVk9lTThkblpkSWRlQnEreHFZVFlzZ1dXd0M2''@;'; put 'put ''enVKdHlTZTg1OTR1N2hVWHdWMzhRTGVBWC81VUU4SzU0Tno1Mm41ZWtSUXdST1NFU2N5SklwTWsxbXlCeVpKMHZrQlhsTFBsSWg2aTJWb3RKVWhzcFJlYXJpelhuejNwTDN3bnZyZmFScGVwWGVwSGZvUTdwSW45SG5yOTR4REJOaVhqTlRUSXFaWTVhWURQT1I2Zm0wUHRTSCt6Z2Y4TVY5Uit4''@;'; put 'put ''N2RwbGRaN1BzUGx0Z2UzNnQzK0duL2NBZjkrOXdlOXd4ZDhwOTQycGNrM3ZpbmdQRlFEbHdHYWdIZnZJeS81Vy81dS80RnYvRXY0dzN4anZqZlVFV3RvUURvU1JVaEN2aFh2Z3Q5RVZFZkNNdWlHdmlscmduSG9tbllsV3NpVC9FdHRpVEpxVXI2VjU2bERwU1A0Z0VzYUFRaklZY29jNkVaZ0ta''@;'; put 'put ''T0pJbjVWbDVVVjZYcy9LaFhKVEw4bVVZQzlmQ3pYQTcvQUtHQUE0a29JSUVtQVdMWUJWOEFqZWdIYUVpMDVIdHlEVzBRUURuNEFyY2dMc3dEMHV3QXIvREJ1ekF2b0lvMkgrQWtsUTJsVDJsb1hTamVGU0lDakU2Qm1QVHNYTHNPbFpYVVJWWE9SV29jVFdoenFwRjlVdzlWMnRxNHk5TU04bWdB''@;'; put 'put ''QUFCQUFBQlBBQmdBQW9BUUFBRUFBSUFLQUE1QUlzQUFBQ0RBYlVBQXdBQmVOcU5rczFPd2xBUWhjOXQwWUFhNDhLNFlHRzZNTzZFZ2dRaUxqVnNGRFFTd1MwSUFwRmFMY1hFclUvaTF2Y3d4cDhYMEkyUDRETjRlanRVSlkweE4rVitkODZabWQ0cEFKYndDQk1xa1FLd3l5ZGtoV1dlUWphd2lC''@;'; put 'put ''TmhFMldjQ1Nld2hqdmhHYVR4SUR6TCtJZHdFbmxsQ0tlUVZnWGhlUlJVVFhnQkRYVXIvSVFWOVNiOERGdDlDcjhnYWF3S3YyTE9XQS81M1VUYXNMRURGNWU0Z1ljQmV1akRoNFY3UG5uWXlLRklhbE8xNk90cno0aGM1KzR3YThUY0MyUlFSWmQ1bnE3a1lxaGRSNHoxTU9hcFJTVkhsNjNYTm82''@;'; put 'put ''eGh5WnFwTGk4amFuTU9JODE1V253NURFKzBPOWovZWoybnc0TlJrL3Bjc25CVFE5WW84czl5TzFRYTVFUHFRZmFQdmZPSDdNSTV1ZnpWRWFXNi9wWFpWZlhkYUtxR1dvdXo1T2NrV1QxcVBxTWpqbjVpU2ZMZmRMVDBUZjk3cG1OdldXVHNUYi9iNEhEajJaU2xRbFZ0R3B4RmJWV1l1OGN0dmk3''@;'; put 'put ''aVVMMDlVczRwNitycTNveTNVcFVzWTRydnVPQWlrZlA4QXZjdlhoekFBQUFlTnB0azFkc0hGVVVoci9mc1hmZE5rN3Z2VmZIWHZmRUtTNXJ4N0ZqSnk1eDdNUkp4cnRqWi9GNkY4YTdjV3k2QkFJZVFQRENNK1VKRUwwS0pIaEFvbGZSZXdmUmVhUUg3OXdKWGlUdXczei9HWjN6bnpQMzNpRUxk''@;'; put 'put ''NTBiWUI3L3MxU2JmcERGRExMSndZZWZYUExJcDRCQ0FzeWtpRm5NWmc1enArcm5zNENGTEdJeFMxaktNcGF6Z3BXc1lqVnJXTXM2MXJPQmpXeGlNMXZZeWphMlU4d09TaWdsU0JubFZGQkpGZFhVc0pOZDFMS2JQZXhsSDNYVTAwQWpJWnBvWmo4dEhLQ1ZOZzdTVGdlSE9Fd25YWFRUd3hGNk9V''@;'; put 'put ''b2YvUnpqT0FPYzRDU25zTGlkcTdpYW03bUJPM2lmNjdtV3AvbVlPN21OdTNtZVo3bUhRY0xjU0lRWHNYbU9GM2lWbDNpWlYvaVdJZDdnTlY3blhvYjVoWnQ0bXpkNWk5Tjh6NDljeHdWRUdXR1VHSEZ1SWNGRlhJakRHQ21TbkdHYzd6akxKQk5jektWY3dtUGN5dVZjeGhWY3lRLzh4T1BLMGd4''@;'; put 'put ''bEswYysrZm1MdnprbmxLczg1VXNxVUtFQ21xa2l6ZEpzemVGWGZ0TmN6ZE44TGRCQ0xlSjMzdEZpTGRGU0xkTnlyZUJ6dnRCS3JkSnFyZEZhcmRONmJkQkdiZUkrN3RkbWJkRldiZE4yRld1SFN2aURQL21TcjFTcW9NcFVyZ3BWcWtyVnF0Rk83Vkt0ZG11UDltb2ZUNmhPOVdwUUkxL3pqVUs4''@;'; put 'put ''eTJkOHdJZDh4S2U4eHlkcVVyUDJxMFVIMUtvMkhWUzdPblJJaDlXcExuV3JSMGZVeXdNOHlDTTh5a004ekRYY3BhTTh3NU04cFQ1K1ZyK082YmdHZEVJbmRVcVdCaFZXUkxhRy9IV2pWdGhKeFAyV29hOXUwTEhQMkQ3TGhiOHVNWnlJMnlOK3k5RFhHTGJTU1JHRHhxa0tLK2tQZVJhMllYNG9r''@;'; put 'put ''a2hhNGJBZFQrYmIvMHAveUxPeVBhdVE4YkJkRkRhSEU2T2psa2t0SE00SS9DMmVlOVJqaStjVE5TeHN6YXdjeVFoOGJWWTRsYlI5TVlNMjB5OW0wRzVleGwwVXRtZDZ4RE05MmsxNjNJVy93NXNoWVJqb09KMktEMXRPYWpSbXBaS0JSR2JrNnpRZEhOT2hNN09EazltaDAzUndETHBNMVpnTGZ5''@;'; put 'put ''b2VMU210REhvczgzV2JwS1NacHNlYkptV1kwK05FNDhNNXFmUXowUE9meVZLWmtiL0gyOEdVWVVGdk9PcUVVNk5ETWZ0c3dYaUc3c3ZRRTlQYTEyOW1uSFNSM3o5OTJwUFRwNTJlT0ZoVzViSXNXT25ySFhhc3FXczFidEJySE1aZDVQVkdvclpqajBYSDhzYlBxM1JkYWFpKzJtT054d2FQamI0''@;'; put 'put ''K1l6VGhJdjAyV0ZJUzlGam1zZHhqaGNkS3cyQlRkaWpsSk55Z29xa2h4eXEyWXNsOHk1M0ZTUGZ1cDJXUk5mM1o2VGhnblIvUUpMcmQwN0xBKzMyTU52dWExbmxXK2pSTWNqSWFpN2pKdWRiWTFCNUZiQ2N2WW52cUg3ZGx0eUVBQUFCNDJtUHczc0Z3SWloaUl5TmpYK1FHeHAwY0RCd015UVVi''@;'; put 'put ''R2RpZE5ra3lNbWlCR0p0NU9CZzVJQ3d4TmpDTHcya1hzd01ESXdNbmtNM3B0SXNCeW1abWNObW93dGdSR0xIQm9TTmlJM09LeTBZMUVHOFhSd01ESTR0RFIzSklCRWhKSkJCczV1Tmc1Tkhhd2ZpL2RRTkw3MFltQnBmTnJDbHNEQzR1QVA0Y0pXQUFBQUFBQVZpWTluWUFBQT09KSBmb3JtYXQo''@;'; put 'put ''IndvZmYiKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNZXRyb3BvbGlzO3NyYzp1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUZYd0FCTUFBQUFBb09BQUFRQUFB''@;'; put 'put ''QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJxQUFBQUJ3QUFBQWNmS1RiTEVkRVJVWUFBQUhFQUFBQVRRQUFBR0lIMVFmOFIxQlBVd0FBQWhRQUFBY2ZBQUFPZGoraGZYUkhVMVZDQUFBSk5BQUFBQ0FBQUFBZ1JIWk1kVTlUTHpJQUFBbFVBQUFBVGdBQUFHQm9xYTMrWTIxaGNB''@;'; put 'put ''QUFDYVFBQUFKc0FBQURubmRERDdGamRuUWdBQUFNRUFBQUFEQUFBQUE4RWQ4QnkyWndaMjBBQUF4QUFBQUdPZ0FBRFJaMlpIMTJaMkZ6Y0FBQUVud0FBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQVNoQUFBT0RrQUFHMDhzTkd5TldobFlXUUFBRXJBQUFBQU5nQUFBRFlMYTRZSGFHaGxZUUFBU3Zn''@;'; put 'put ''QUFBQWhBQUFBSkFlRUJDQm9iWFI0QUFCTEhBQUFBb3NBQUFUYXNuZzVQbXh2WTJFQUFFMm9BQUFDYndBQUFucHlWVmZhYldGNGNBQUFVQmdBQUFBZ0FBQUFJQUtSQWg1dVlXMWxBQUJRT0FBQUFZVUFBQU5rTCthR1NuQnZjM1FBQUZIQUFBQURvUUFBQmlHWEZqMktjSEpsY0FBQVZXUUFBQUNC''@;'; put 'put ''QUFBQWpSbFFBaEIzWldKbUFBQlY2QUFBQUFZQUFBQUc5RzFZbUFBQUFBRUFBQUFBMUNTWXVnQUFBQURUd1oyR0FBQUFBTlMrcE90NDJnMk1RUXFFUUJERUVrZjBNTFBvZjd5cEwvRG9mWGZWL3ovQUlnUkMwVFFDTFI2Y2RGUmtqVnNvN0h6VHYxRDRCN200MDQ4RE9sb3BObHY2NDVTZVhYTFQ1''@;'; put 'put ''MXNYelNhK1czQUYzQUFBQUhqYWpWY0xiRlZWRmwzN2ZPNXIzd01zcFh5RVVna2hVQWhXaGpDaUNLTnhtbHBJUnhtc0JBMFlOWTRma005VVpLYkd5R2NVelVqcXhKR0taRUxRTXRwZ0JVVEZxa2hlQ1A2SUlmZ0pFaXdFSzJMOUFTb2FJOHAxM1gwZmNFdjdadXhLVjNmM09mZmNzL2RlNSszeklB''@;'; put 'put ''RFNHSW9wa01xcW1sb1V3TkdETUlUbEg0R0JuZk9YdW5rb21YdGozUnlVenAwemR3NW5nLzVvTko0UnNlVnphZlJER1lhcngySVlhbXhMUEJvczBGVWxhRURBaDZUblFqNHhVSDBlSmFjaHFBb2J5QjRUc1FLL0lKU0JNTndHNThrQWFVTUdQYml6STJFMmJBNzNodnVSNXlmOEp1L0k3bTY5bjJC''@;'; put 'put ''QXAvOC9DLytkZDRXT3ZDTnRlVWYyaHRrOEk4M2h3WEJyaExPZjRPL09DRjEyaXZEenNJRlpNaGpDVEE5bnRrWVFCaFdFeFFXRXcxakM0L2RFZ1BGRUNoY1RCWmhBRkRLM0UxbXBSWVJnS2U3bnpBY0l6NHl2b1A5RlF2QVNJWGlaTUhpWGNIaWZjTmhQZUh4Q0JQaVVDUEFaRWVBb2tjSTNSQW9u''@;'; put 'put ''aUVKVzd4ZXVGaEpwS1pJaUZFcXhGSk5McElROGtKVk5jKzB4Vk1rd1BqT0tFTjEzdkdPak83YTZZNmM3OXFna0NsQkZGS0thU0dNYWtjRjgzTVVWb2tnQ2pTVFFTRHdleGtyT2J5UUs4UmhXYy80VCtDL25QMDFrc0pGSVlSTlJnT2VJRkRZVEJYaWVTT0VGb2dCYmlFSzBFb1hZUnFTUkpkTFlU''@;'; put 'put ''cVN4ZzBqamRVTHdKaUdhblFBSGlBdytKdUs4R00yTDBidzR6WXZYdkhqTmk5TzhPTTJMay83U24vazZWODRsUnpueVhMV0NHUnJPR2xld3RtTlowL0hNekFSbVpENFc0SytvdzUxWXlGb3V4VEw4QS9jeEN3OHcrbzJNNkhsVzhpVlc4RjFXYmo4cjlpa3JkWlE3T2FFbnE0anZMWW5PbDdsWHor''@;'; put 'put ''RWJVc2U0ZTFKZlc2bTdodkQ3YnRTcUk5SDV5RHZ5SlhHc215ZVA1VDBiWCtiKzdndS9EZytFRDRVUG5UMlNPNUZOWWRQcC83NUlqSHl1enhpVXFpWkVOV0Z3RFdGeExlRndIZUV4a3dpb2lKV2NFNmxCVkExRzFXRFFRZ1RZUUFSYWFkRktpMVphdE5LaWRUVTRSRmdjSml3NkNJdWZDWStUUkND''@;'; put 'put ''OXBUZnIya2Y2a1B0S1gzSlVVZEdLaWd5U1FWemZZRFRPSVRMb1RmUlFwWXNxM2FqU2JVN3BWeEJKcFR1TkowakVrMUtsMjV6U3oyamNhVlJPbzBwcFZLZVVIbXM4VnZjclJINWRSOUU2MWF6SlJSZ3AxMnFjS2RXdlZmMmFYTXlSaWswdThrakxKaEYvVXRGV3M1Q1NNWEl4M3g1OWVsVXh3bW1z''@;'; put 'put ''MTdXTWF5WWphV1FrcS9BNG8za0NUNklKNnhqUjA0eGtBMDlqSzNlYjVTNTNjSGVIV0lNTzd1d2tkOUNIYit2UHR3emlpbVdxWjROZTJsR0t3NlcwaTluZkxxVWxhbC9LVHRRV2xKSGJtZi90c2x4V3lDT3lTdGJJT2xrdm0yU0xiSlh0OHBic2tnOWtueHlVdy9LVmZDcy95a25qVE5vVW1YNm0x''@;'; put 'put ''QXcxNWFiQ2pETVR6R1dteXRTWWFXYUd1ZDdjYkdhYkJXYVJ1Y2NzTXcrYUJ2T29XVzNXbXFkTWk5bHNXczAyczhQc05Mdk5IdE5tMmsySE9XS09tNThzYkdCNzJHSTd3SmJaWVhhVUhXTXZ0QlB0NWJiYVhtbHI3WFgyQm51THZjUFcyYi9iZSsxOTlwLzJYN2JSL3NjK2FadnRCdnVDZmNWbTdS''@;'; put 'put ''djJIZnVlM1dzUDJFUDJDM3ZNL21CL2RzWVZ1RjZ1eEExMFE5eHdOOXFOZFJlNVA3aEtOOFZOZGRQZFRIZVR1ODNOY3d2ZDNXNkpXKzVXdUVmY0tyZkdyWFByM1NhM3hXMTEyOTFiYnBmN3dPMXpCOTFoOTVYNzF2M29UbnJuMDc3STkvT2xmcWd2OXhWK25KL2dML05WdnNaUDh6UDg5ZjVtUDlz''@;'; put 'put ''djhJdjhQWDZaZjlBMytFZjlhci9XUCtWYi9HYmY2cmY1SFg2bjMrMzMrRGJmN2p2OEVYL2MveFFnQ0lJZVBCMzFaaU41aVhLbGNyVnlZOFJZck55c25tWEtLeE04VmJsQ2VaTHkzeUkyZzlXdVZhNVNIbUg0bVNybHloWEtreU5HdmZLejV0VlR0bHlpUEVuOTdjb24xRE5LdVVsNXBISkcrYzky''@;'; put 'put ''TnZrWjVmcnVtVlUvRTJPMStyc3dwaXR2Vmw1OGhtVldITHZhODVUZlZGN1psZU1NcU4yVmE1VkhtT3ovWTJvM21hdHNkNHlweWkzSzlXZVkyY3RxOXY0M3gvbk1kc3NqRTF5ZjJITW5PMUhUSmVvdlYzL1NydFFjUHFiMnJFVG00eWc2MlRrVitiUDhqV3BQam0yZEUyc21yazRjZGF6UG5KM3pS''@;'; put 'put ''M09hMVg3V0xqcWwzcHpHUGxUNy9jak8xVFRPV0t6dFdIdEpmMXpaT0cvdnFiMVlhL1NSNnZ4cm5UOVYzOVd1Yy9SRXhMcnQ1SzlRKzBTdWdodFBxenJwajAvUXBJUm00b29rN2VmVXZqWDI2M3c5RjJhdytwdlVIeXR0Wk1LdVVzNm9KNTk5WE8yN05icXIxTjZqZG5MbDZuQUwrWHpsWktXU2I1''@;'; put 'put ''eWNPOTNaMzhDZFp4cWNwL2RTOE41VnpxeEV0MVBIcmoyYVhUQzZZUWY0SFc5aUtZekRSZXhoVWVmdXhiNDlpVDA5NnR5OTlZNWFySjI3RC92T0ZQYWhHcUl2cm1LZjY4ZE9ONTNmZldZUXBkckxCN1ByeldMWG1zKzcyeEM5dlkxblIxL0Q5ZGF5OC8xSmU5L1Y3SDZ2c2tPK2hsMjRsVGU2bzZq''@;'; put 'put ''WFcrVXFmQ2NlajdNVEQwS0w5dFJXN2xma0hQMXVGa0RDV0lWTGNBdDVPYnRkaHQ5MXloamJLTjY5TCtTdUwrY3VyMFF0Ujk5VzdlNVZQcWlzWndhN0U2eVZ3RjNLNjVVLzFxejFWVHVEUC9JOXQrRjJTVW1CRkVwYU10SlRlblhkMGE5OWw1OTBBQUFCQUFBQUNnQWNBQjRBQVVSR1RGUUFDQUFF''@;'; put 'put ''QUFBQUFQLy9BQUFBQUFBQWVOcGpZR1p5Wi96Q3dNckF3dFRGRk1IQXdPQU5vUm5qR0VRWXpZQjhCallHT0dCblFBS2gzdUYrREE0TUNxcC9tS1gvR3pNd01KOWsxRkZnWUpnTWttTmlaVm9QcEJRWW1BRHdiUXExQUFCNDJyV1RXVkNPVVJ6R2YvKzNmUkVxRlBYMjltblRScUlVUmZhbHlMNlVy''@;'; put 'put ''Tm15cjlrYTZ4QkRSVkxJbmlTakdSTlRVN1liN3JnMVk0eSt6NVZiN2d3ZHgxZE1NOHk0Y21iZWM5NXp6cHpubkhtZTN4OXdvZXNMUVhTUFZPcVpPT2V1VXF6SEpZekRqWUdVY0lzNjd0SklFODIwMENZZUVpQ0RKRXdHUzV3a1NhcWtTNlpNbFJ6SmswSXBraElqMVhobHZIZUpNbyticmVZVDg0''@;'; put 'put ''dmxiZ1Zhd1Zhb1piT2lyR0ZXdW5YZjVoLzVUU2w5aDhXTkh0cVBhZU9aK0VwL01jVW1zWklvS1pJbUdaSWwyWklyQmJKQk5tdnRsOFpiclgzSWJESGJ6YytXWVFWWVFWYUlVM3VvbGZaTFczMVVMOVJ6OVZTMXExYjFTRFdyaDZwSk5hb0dWYS9xMURWVnEycFV0YXBTbGFwQ2xha3pxbFNkNkh6''@;'; put 'put ''VG1kV1o5UDJUbzl4UjRNaDN4TmdIMnYzc1BuWXZ1NXZkNlBqYThibmo4SWVRZDhsZFh2Mm41bTU0TzVQZ2oxc0VvL3ZQK0lkRzEwa1hYSFYyN25qZ2lSZmUrT0JMTC96b1RSLzY0azhBZ2ZTalB3TUlJbGhuUEVpbkhvcEptRTRrSEJ1RGlTQ1NLS0tKWVFpeHhCRlBBb2tNWlJoSkRDZVpFWXdr''@;'; put 'put ''aFZSR2tVWTZveGxEQnBtTTFjeGtNWjRKVEdRU2s1bkNWS1l4blJsa2s4Tk1acEhMYk9Zd2wzbk1ad0VMV2NSaVRWb2UrU3lsZ0dVc1o0VisvdzUyc3B0aURuR2MwNVJUUmdYbk9VY2xWVlJ6a1JvdWNZWEwxSEtWNjl6VUZQMWs5RFlObXFWN21xYWZiUldydFIzUmJPQnN0emZyV2FQN1haejQ3''@;'; put 'put ''VmJoWHh5OFFEMmJXZGxqWlMyYkpFYVBXOWpPTWV3NEpGenpHU2xSdWdJaXVLTjNIcUJwbGdSZEQvSGRaNHFjWWNTeWpiMXNaUjk3T01CQlhVdjdPY0pSdlhXWVVrNXhrdGU2bW5xeFRyekVXM3pZS0g2YWY4OGZrTTJxNkhqYVkyREFBcEtCTUl3aGpHazlBd1BUYmlaV0JvYi9JY3pTLzQyWmR2''@;'; put 'put ''Ly93blNKU2ZEL2wvOStJRDRBMnM4TnNuamFyVlpwZDlOR0ZKVzhaU01iV1doUlM4ZE1uS2JSeUtRVWdnRURRWXJ0UXJvNFd5dEJhYVU0U2ZjRnV0RjlYL0N2ZVhMYWMrZzNmbHJ2RzlrbWdZU2U5dFFmOU83TXV6TnZtM2xqTXBRZ1k5MnZCRUlzM1RXR2xwY290M3JOcDFNV3pRVGh0bWl1KzVR''@;'; put 'put ''cVJILzFHcjFHb3lFM3JIeWVqSUFNVHk2MkROUHdRdGNoVTVFSXR4MUtLYkVwNkY2ZE10UFhXak5tdjFkcFZDaFg4Zk9VTGdRcjEvMjh6RnROWDFDOWpxbUZ3QkpVWWxRS0FoRW43R2lUWmpEVkhnbWFZLzBjTSsvVmZRRnZtcEdnL3JvZllrYXdycC9SUEtQNTBBcURJTERJdElOQWtsSDN0NExB''@;'; put 'put ''b2JRUzJDZFRpT0JaMXF2N2xKVXU1YVNMT0FJeVE0Y3lTc0l2c1Jsbk4xekJHdmJZU2p6Z0wwaVZCcVZuODFCNm9pbWFNQkRQWlFzSWN0a1A2MWEwRXZneXlBZUNGbFo5NkN3T3JXM2ZvYXlpSHM5dUdha2tVemtNcFN1UmNlbEdsTnJZSnJNQkE1U2RkYWhIQ1haMXdHdmN6UmdiZ25lZ2hUQmdT''@;'; put 'put ''cmlvWGUxVnJaNEJ3NnU0cy9sdTd2dlUzbHIwSjd1WU5sendFSGNvS2swWmNWMTB2Z3lMYzByQ2dwTWRMMUVkR1MwbUpnWU9XRTVUV0dWWTkwUGJ2ZWlRMGdHMUJ2clRLTFlsODhGczNxRkJGYWRTRmRxTUZoMGFVaUFLUVllOHE3d2NRTG9CRGZKb0JhTkJqQndheGpZak9pVUNHV2pBTGcxNW9X''@;'; put 'put ''aUdnb2FRTklkRzFOS2FIMmMyRjRNcEd0eVN0eDBhVlV2TC90SnFNbW5sTVQrbTV3K3IyQmoyMXYxNGVCZ0ZqRndhdHZuTTRpUzc4U0grRE9KRDVpUXFrUzdVL1ppVGgyamRKdXJMWm1mekVzczYyRXIwdkFSWGdXY0NSRktEL3pYTTdpM1ZBUVdNRFdOTUlsc2VHUmRicG1ucVdvMHBJelpTbFRX''@;'; put 'put ''ZmhxVXJLalNBdzljUHc2RXJRcGovYzNUVU5JWU0xMjJHOGVHY1RYZHM2empTTkk3WXhteUhKbFJzc3B4RW5sa2VVWEdhNVdNcXpyQjhYTVZabGtkVm5HTnBxYmlINVJNcTdtWDVwSXI3V0Q2alpDZnZsQXVSWVNtS1pON2dDK0xRN0M3bFpGZDVNMUhhdTVUVFhlV3RSSGxNR1RSby80ZjRua0o4''@;'; put 'put ''eCtDWFFId3M4NGlQNVhIRXgxSWlQcFpUaUk5bEFmR3huRVo4TEo5R2ZDeG5FQjlMcFVSWkgxTkh3ZXhvS0R4MndkT2x4TlZUZkZhTGloeWJITnpDRTdnQU5YRkFGV1ZVa3R3Ukg4bXdPUHE1Ym1uTlNUb3hHMmZOaVlxUFJzWUJQcnM3TXcrclR5cHhXdnY3SEhobTVXRWp1SjM3R3VkNVkvSVBn''@;'; put 'put ''MytMRjJVcFBtbE9jSENua0FCNHZML0R1QlZSeWFIVHFuaWs3TkQ4UDFGeGdodWduMEZOak1tQ0tJb2EzM3prOGtxeldaTTF0QW9mVHdRNks5ckJ2R2xPakNPbEpiU29TUm9CTFlPdVdkQTA2dlBzcldaUkNsRnVZcit6ZXltaW1PeEZHY3lBS1Nqa3ByR3c3TytrUkZwWU82bnA5TkhBNVViYWk1''@;'; put 'put ''NHNOVnRXY1lXOUIrOWp5TTBzZVRkU1hyZ3BLZTFGbTFDbnZNZ0NEcm1SUGJnbWdsdG83N0tLWWtwWXFDSStDRzBGKysxalJDWXRNNE11Z1NKa2NiS3lEKzJLSFRtaWduWUMzM3JTS3UvYlF1M1BkZklnTUp1ZGJ1ZEJscEdpODEwVjlXcDlWZGJZS0ZldjNFMGZCOVBPc0xIbUYwVVpUeTU3MzU0''@;'; put 'put ''VTdGZW5CTGtDUmxkMnYrNUo4Zlk3MXUxS1NUN2JGM1o1NG5WS0ZmSmZnQWREN3BUM0locEZrYk5ZcFJIUHIxdDRNa1U1S01aRmN4d1g5TkllN1lwVjM2TmQySGZ0bzFaY1ZsU3lIMlhRVlhUV2JzSTNQbDhJNmtBcUNscWtJbFo0T21RK201MmE4TEdVdUN4RjNMTmsxMFgwSFR3aEhlSy9PTVMx''@;'; put 'put ''Lyt2Y2NoVGNvc29TWFdqWENja0hiUjhyNkswbHU1T0hLa1puN2J4c1o2SWRTVGZvR29LZVNDNDQvbDdnTG84VjZSVHU4L01IekYvQmR1YjRHSjBHdnFyb0RNUVM1NjJDQklzcTN0Sk9wbDVRZklScENmQkYxVUt6QW5nSndHVHdzbXFaZXFZT29HZVdtVk1CV0dFT2cxWG1NRmhqRG9OMXRZT3Vk''@;'; put 'put ''eG5vRlNCVG8xZlZqcG5NK1VESlhNQThrOUUxNW1sMG5Ya2F2Y1k4alc2d1RRL2dkYmJKNEEyMnlTQmttd3dpNWxRQk5wakRvTUVjQnB2TVliQ2wvWEtCdHJWZmpON1VmakY2Uy92RjZHM3RGNk4zdEYrTTN0VitNWHBQKzhYb2ZlVDRYTGVBSCtnUlhRVDhNSUdYQUQvaXBPdlJBa1kzOFl5Mk9i''@;'; put 'put ''Y1N5SnlQTmNkc2N6N0I0dlBkWFQvVkk3M2lzd1R5aXM4VHlQVGIyS2ROK0NLQlRQZ3lnVXo0Q3R4eWQ3K3Y5VWpUdjBrZzA3OU5JTk8vdzhvMjRmc0VNdUdIQkRMaFIzQXZkUGY3U1k4MC9lY0VNdjJYQkRMOVY2eHNFMzVMSUJOK1R5QVQ3cWlkdmt5cTgyZlZ0YWwzaTlKVDlkdWRkOWo1RzJV''@;'; put 'put ''enVpd0FBQUFCQUFILy93QVBlTnExZlFsNFpGV1o2RG5uVnRXdExhblVucVN5MVo2bGt0cFNxZXlwN0V0bDZYUm43ZTRrdlNYcHBxRnA2SVZGUUJBYkJrVlJuSEVieFVFUUIxa2FCRnFVWlJ4R0JaNDlMaU1PT283b20zRkdIYmZuRzBaMEpEZnZQK2ZjVzNXek5UamY5NkNUVk83OXovYWZmei8v''@;'; put 'put ''ZjRLTWFHRTlpVDh1ZUpDQUxNaUpTcEFmMWFBVWFrRWRhQWlWWkZ3OW5lMnQ2YVprYlRoUVdWcnNzaFlaTkFRWlkzVmFyOVVyT3BOT3Z6T1o4cWVTS1pIOUZPR2o4cFErb3ovcEczaVNVajdMTUt4Qk9wbkNINWYrRG5mODMrNmVCM3A2SG5pZ3grZjE5dlQwSE9ueG5udmdpTTk3eFB2QUF3OTRq''@;'; put 'put ''eHc1TnpEd3dNcEExZDhMUCt2MUJyM3c3NWFqdm9HQndFSDROT0J0Ny9FZHViN1pIZDExMVZXUFhIWFZydWlxTitxRmZ3Z1JOTHIrT3ZvV09jL1dGc3o0RU1ab0FTRlVtRVdFQ0VzYUxBaHVZVlNqMFZnMGhVRnJrVlowMTltVGd0OFZTalUySlJNdXAwUG5uemxUMHFjTmg4czhvWkNIbkpkOFA2''@;'; put 'put ''d3VLdzJIUzh1cUVWcGZSMzM0WG53RGViREloNHdJRlFudy9TVkV4dzNBdHh0aFhBK3FSTU9aQVl1T0lLMUFNRUY0MllRTmhzSnNZVkdCSUlyNkJiT1I2UFhXckFZVFlpR2pDRlZXbEpkQkswOXBTYkVieHJkYmMvK0o1WFZZVElwKzBaOW1YK2trKzBxSzdFdWtML0dic1N2dEp5SzdJdStOVEVR''@;'; put 'put ''dXR4K1BYV0cvQWo2OUY1NmNzUDNOZTJQdnhSZWV6ejRDLzJXZnp6NEsvMldmUjRDWjBQb0Ywa2JlUUJVb2lDS29QbE1icWZONVBhWEZicWZOWk5TTGhZaG9BVzFrQkphRkNUNEk2M09qMFVxclZRQnNCWFN3eDZsUU9PMXlweHB3cXJFVHAyR3ZYVzR4RkhaV1lDZUN4NFhZYVd0S05jSUQwbmJt''@;'; put 'put ''c3FsM0hlakk3ajF5SkxtdmRlckt4ZGIrOFJOWFNaZEhFM1ZOdjg2MFpLNDRLV1o2aXZabGgydy9LcDNlbFp4cEZqczZ6YnRITzYzLzZKbWJ3dTRhNnd1R0ZyODAzMVpkM1dEOUpzeERpeUxydnlOcjVDbllYVHRnT29yYTBQL0tQbGE4YXk1VFo4SmFJOFk2TFY1Rk9xUTM2UFJIa1VhRGxnaW11''@;'; put 'put ''MThBZXlBc21VVWlDQlpoMUpOOUxBeE5vcGRzZ2dDVXRST1h6RmdVM2VLb0o1UGNwZ1VoQUV1Ym9lMWJ6YzluUXJGWVZaWERnVkNzTGRiYTFGZ1ZyV3FvRGprcUhSV2x4WGFidFFnV1V4Z3FGSjExTm83UlpBSXc2U2pFZnB6RWZvWkt2MC9uZExpU2FOUDdUcHgvOTZtUm10cVJXQXkrWjZQNHZi''@;'; put 'put ''dWs4TVRwUkRJVWppZERlTzlJTFR6a3I2cmo5R0VpalBjMWpFZmp1eG9hSm1MeGlYbzh0VGFKLzdJakd1M3NpRFYwU3Z2cUorSlIrZzRnNnJ2cDQ4NkdhQ2VpdEJOY2Y1M2NRTDZBdktnZU5hSE9URnM4R3E2cUtQZVVtSWhSSUY2TUJESkNhUnN2QWV1NXNscGdPSVlab0tDR0JwK3ZvYWtoNWF2''@;'; put 'put ''M1JTSituZWlxMDRiQ09yK1BMcW9wclY0YXZITTNwZDA2MFkzbzJ0eDhuYlkwZ05PbGtxQXZzZTkwMTNKTGRxSzhOTHFuTVRaUlB6RTkxRmRYT1JHTm5aVCtNbGxjMnROVTczY01YTkd4T3BvMitocm5ZblB0dlFmOE5mMmhobXdra3Exdkh3M3NHZWlhREN6M25TSWowWEJwMmxzYUR3Y1NhNjkx''@;'; put 'put ''WHoyY21tektJSVFwbjZNbnlZUElqT3laSWlwRjJQYmlVV2VBd01SdGVYa2grcWV0WHJmYmE3WEU4SDhzZTkwK245dTdQSXhvSDYzck03aVBQSXNLa082SkFpMk8xVEV4azNZRGc4Q2l4QWV2dkhLMWNXclg1SjdHMlIvZDhxN1g5alJOUDNYcTFGTlRhZGEyRnRvMkttMUZhTXVSRUU1ei9OVHVt''@;'; put 'put ''WVIycTlERHFlbW5yajcxNUV6VG50ZmVkY3VQOXJDMktYd0NIeURQbzRPb09aUGFPekhVVkYzaDF1bGhFU01DeGhxTXRCaXQ2ckJXUzVhQWVGMWFFRUlBZW1EUDdzNzJXSVBQV3lkU1NvU1pwcHZTT2hIKzkvdkMvRGZnOVFZY0R2SGZrZ20zQy81bnYzRlVBQ3hBTlBGWDdOZENEQnRaZ2ZsdnRK''@;'; put 'put ''c3d0SGU1bVpoOTNtclVFYnVqMnFyVFdRMGFjM0dEd1cwMnV3ME54V2FOc1VpanQxWTc3RVJudEpvTEtKelJaZ2c1R1dBQkE3U1dhcUtPQWdib0RCbHNSZ3BaZ0U5WVRLVUpuN25BN2pNS0Z0RmdFUXN0R3IxV3E5ZFlDdlVXdlZpa01mcnNCV1pmb3RSazRaQmlrZWd6QXlpOFphQ2lBVnZOSE5U''@;'; put 'put ''c2c1Y2NsdUcwR3kwVEIybEdKaFRLK0pGR3dKcHBvRzJRRkZoQXk4RCtlQUVCYXNlWTRDN1NpYVYxMkU4MVlJcHF3aVJ4UEx2L21XZjJQNHU5eno0Ny8venp0TCtCOVd2UXQ5RjFxQkM1TThES2FGQ2hNV0NVZ0kzU0dIQ0FUMFZtdTJvTFBLRndtVGNjamgyTHhFRTloVk8xL3VFMDdhc1IvUVMz''@;'; put 'put ''NDA3Z3p1S01FOUdPcHVtY1lVWUlabFJFTzdON25kNUdySmQranp2M3N2WDBncDU4RWNZM1VZMVBuNERVdzlpTktUR1lrREVnQUJHb3RlSmxza1kwNTdRaFh2L1YrZ1Y4Z2Z3VXhyVm1DbW1udDhMWXAvbUFWSFRoa2N1bCt5NG5QMzJUaW01UUprMGdPMjRoejRDNHEwU1JUQTBRSDFzeGx4SVls''@;'; put 'put ''RE9iUUZFUktOYktvb3BpRjVPTG9HL3FOSnZsSGtrMU5tQy9qekpTQll3azNwYk4zalk5ZlM2YlBUZWRub25GWnRMcDJYaDhObTNlOStuVjFYdjM3YnQzZGZYVCt4WjZyeDBkdmFhMzk1clIwV3Q3R1E1ZzNiZ2NkTFlPZVRMRnNKVUM0R3VFUzNHTUxYalVhbWVvRThQcHBOWC9oV3RxbjlxOVF0''@;'; put 'put ''S2p3KzlZbTBTc2ZSUVdWUXpyS1VhMW1iREpDTXNCYWlCa2hLR1RpVDlxZEN3Z3BuT3M3a0JJSXhiWGRXRkZhb3ZoSmxuY1dUQnNUL1ROdnJiUnBxYVpVTitCajJlT2RZek0zWXVISmZlZWI3VXNScHU2R3hQdDV4cVhPdnF2SGZxelJUYTJIM0JaQVdQWG9LNU1lMGt4ak9QRG1NRG9NQVdtdUJI''@;'; put 'put ''Qnl6Q3laZ21JRXlZQ3VuT0o4cnlic1hzTnFnNEV2SUdnS0piQUxsT2hra3hRUFFPV21qdlJ0SGw2b296MmZ6aFgyeDA0MU5xemEybzhtKzJkM05XZW5BcDFMWHk0LzNqN1NHdkhUT2RWdytaTXFyY3VrV2xNcGZGZTNKeU1kVWJyTzYrTFRUZTE3N1lWN3VsdDNaZmtkT0NIYjFuQXV4R2tHMWdm''@;'; put 'put ''WmpBeThJaE9DMnZBQ0d6TkZVQWRVNmtXemFqSlpDb3dGUUJQMllyb1hJUGVNRTVhcWJYcFQxa0ZmS3Ywa0FtUFhYdjQ4UEp2NzVuRVg1YUc1dTk1QS9kTHo4RHE0NENmR2hpakRMVm5XbXdnOWdyTUJHdkFuaGxCOEIxcFFJRUxBbG5nMm5zamNzQWM4MW50QVQ5RERoZzZTUmtqWXBoeWtkaVVJ''@;'; put 'put ''OE8vT05JMXQ5S3paMC92Wk0rZ0VYOVcrcUt1WjZ6emFFZjNxUkh6NVVQN3h0dmFoaE5WZUhYeFlpUjVxS2Z2V0V1T0I3cGczenlvR3ZXRDdRTnJ0d0xSQkl1SlZpT002RUNhYUxTQ1poWGxOS2dJODFJRVExa1p6SzY2TE96M1F2dlNRRENrQjRzTXliT2h3b0x5aUZ2a3JBSENPR25MMFJwbGs0''@;'; put 'put ''OGU2OHhjUFhqSDdkbHplNjZjYnd6MFJ4cW5FcmpxVUl1N056alQzVEpWV0RqZWpUL2ZlTENuKzdMMjV6NngrdGtERStOZWIvOTEyYnFZOU5IcWJuL0hTRWRpYkpiU0hnZ2Q0bVo4VTVrcEEzMkNHZGRRZVlPWm5RMTJMVmcxMUZyRTNwVFhDWUxncjZTUDRCOUxQenBOSmhkSDF6NUo3WWdvNENI''@;'; put 'put ''RjhCQUczNk12MCszUUVaQ3FJNklLQTdKMDBBTUdNT3dQa3c3VjFSUUoxYW5xeG1oOVdiZ3M1S3VpcUlnWXFMamF6cENRa2FPeW90ejBNK2loUWtKdGlaK2Y3WnZzYnUvcnZiS3IrOHFld1pidVhmMW5oMUp6ayszdHUyWlR2WHRqd3dIL2NIeHZyemsyMjlxeHoxVzhxN2w1S2xJL2xXN2Q1WEx2''@;'; put 'put ''YTIrZGkrS1B0c2ZxTzlvYjRtMkM5Sld1aEsrcEF1T0tKbCtpaSs1MUd0YVl5ZTkxUlJIc3NRRzRWRSsxQnF4VUN6eXFKYXRBNlFJc1R4QmNXWlVTVVBhYUx6QVlDTEs5ZHZHdDVod0wycGIrSWkvWVJwZk9aYUlyaWIrNFpaY3piUGU3MkRiWDB4MG56MnpjWmI3ejBrZm9OclA5cG10Z2VvTG9R''@;'; put 'put ''Q2U0cWN5bU1wck4wTW9kS2kxM3FNeG1oTXh1czh0V3hKU0hUcllnRk9WQnRsRWtaZkpQZkl1aVVhUlR5aWZ3czVoK0pEcndzMEQvV2tWa0JlbjhQbVI0SE9Pbjhmc2VTOVp4T3B3aGhNd0RIZXFlMEJHd2tleXBvTE1BTzlQNDY5TDc4Q2tjSC92QnpFTVB6VEsrNjBaUEVBZitCVkNlaUh5WlNr''@;'; put 'put ''cXYxRGRENEJDUWFWbE1FNEhxN3lJcXBTbW4wLys3OFhla2V2YjFpL25iNW1ITUVSalRxWXdwd0pqcGVwelNPclVqK0JTTStYVXA5Y2hERDgzOFlPd0hkRXozK3V2NE83RC9UckNXMDVsR3UwRlB4UnVtNGxtQWdXOVM2UWtxcUxWWW8zRnJSbDB1bDlkVkZTejJCM1YwSWpJSDU2UXhNTFp6Zzcv''@;'; put 'put ''NnhPNmpmYzB6QTUyTHQzY2Rhb3JQcFE4NEZNemVxdXVPMUhWTmRWNFZuMm1NVExhYVQvd2c3OHJTK1VYVzd4VDZ5WDJBbXduMG80eTV5a2FNaHM0T0lvS1F6RDdtQndjcEJZYU9RZEFZYmpKam94WWJaNUVXSkxXb3hVZVJhTUo2VVg4WTZYU0szMFA5SzFpRzFVQzlxeHBvbkZRYXcySU5Sc0d3''@;'; put 'put ''K3BhZDZNRERhc20xUWtnbklOM3F6cTMxZW5FV2dVdTl4THFaQUQrcnBLY0hvWjZKbnZIaFFWaFVKaFFLMjBPQlVLaEFMTnRpUXZoQ1lSWHZKRnp1dEZ2a0VpRkJNYTZ5TGhMTVl2Y3JvbFRtcjk3SFZxLys4c25sUjViVE05Rm9oN0ZpVnpRMld0ZHpXV3U4ejI2ZUx0SzREZDd5OHJSLzN5ZjJM''@;'; put 'put ''eis2c25EUFlzZHl5dDV5c3RmZUYwekVhZ2RybTZPblZ4NWV2dkxMVngyNGIzSGl5blFrSEtxUDdHcnNQZFZYNSsvU1RialB0SmdxcW1xbXU2WS9PTFA2NlBMK1Qrd3ZyeW9MZUxFeHRpY1JiWXhPMU1mYjJmNlZ3cmZ2Z1J3V1FaUFdaYW9OV0VQd0NGQVJrSlVHdENoVmJXRHdVMHRHcjljYjlV''@;'; put 'put ''WnVtaGFERmhXWmF4azJZUktSUHQ1K0VvZnB2OE4zd24vay9OcmtUL0dBOUNYQSs2d2MweWhDSmNpSE9qS3RJSWxoQkIxd2psWkR0TlM4a0lNckl1WVdNQjNMVTJxemVpdExmUjVmc2N0YVlpdUpWT21aQWJwUklIc3gwNnAxMkdsWFBzemlnWmI1UkR6ZTBkMTBvRU42Qk5jMzl2UTB2dlJxNi9C''@;'; put 'put ''dzY2dmtmR1E4M2pqc3FkamIwalFkd3g5TTE5VTFmMVY2cVN1UjZQb1haZy9GUU5iZURieFdqaG95ZGFVbEpxT0dHaFdLUEhWdENQL0FnM0pVRmdxR2FQaEhreWNCY2V1dTQ2YjdEeDI2ZjJubzFzUmdZTEd4OTB4Ly81bmV4c1hBWU9MV0lmUEIrNWVXN2p2WWt1d0xSNGF1SFJpNGJpZ1M3a3Uy''@;'; put 'put ''d0w1UXZIMloyVGRPNWkzazBNUWNZeGxOWnBQRFpuS2FuYUVxTFVXUFFwaDFPQzBUWUIyMnp2N3F4Q01IRHo1eTRsZi9PWEY5Zi84N3h0OVB6czk5NHZEaFQ4N3R6NXdhSHI0Nkl4blkyc0dBSVgwd25nbEZNeEZGc2xGN1JyTUF1cVZRYllVeTY5N0V3MHRnM3RpZHNweXplcDJQNDh1bFA4Y2Zr''@;'; put 'put ''a1Q4QnpMNWxjVnZMNUx6aTJoRC93WlVrd2twL1ZOcHhYcFZWRDY4TUNBRDdabkpMZGFyWCtsM2hYYjYwcUwwWGQ0cDM2LzdZYis4S0pWSmdNdUFoRXBDTkZwbVBHczFpQkVYOTArcEpjakVKR2gvTzJ5YW43dFhYdXRHL3QyMGVTay8vak5jRnZ1TDRhWFBIRHIwbWFXUlA0OE4razgwOWRFTjdJ''@;'; put 'put ''dnM4eitOcjVaK0hXL2pXOWlhNkF2Vjh5MnM4SHdnditZN0dVN0RtWUJzTWk2RGpVclhTK05ERnJRWmw1aXVGcjZTOEozY3VTemRzYnlNcjZIc2hLUFN0OGw1NlRYc2cxNW9xOGRaZkpMR0ZWUytCbmZUd05FWVhWNm1yUURXQ2Zyakc0ei9nSXFZYWM4b21obXNaRWtBWW5JenRCY2hpejJvZ2Va''@;'; put 'put ''NVV4NW1RYm5zc2V1OWcvWmRkYzJEeXkzTDNlWk1vcjg2dWFjYnRGUzg3L0oydnM0WjZPcERiSjFWbVhLRFhrdVloc0lzQWlid0dLWGRadU02TVduRlNRUDJnMnZvbjFuR2ZiZEkvNDdyMy9sZlIyQzYwc2Z4aXZSMTZUYmNlUHhsM2k4SVl2Q1h6eU10dFJIWnBHbHZpRzQrUjUwV2FhMVdPdWtn''@;'; put 'put ''MEVuU1NoeFN3OG9pME56YWVkWWVlQWdJSURjdmNadDVPYXpLdkR6Z0ZQaXRKdGlCMmVYZi9uYVpmc0djdXZEZkF2Si9UbjlLYnJsUDhqQ2o0NHFNUnlSa1M0KzJYSThZcHVSbi9lSDNMaTlMWitpV3ZFRU1hNVB3OVFhVnZaUitmLy8vdzVmbEFnZW84dUI5UzcybisvdFA5M0twSTRzYmVMcDAv''@;'; put 'put ''OEdGb2VzR0JxNGQ0alRMZEFHbDErT3dOalBJSFBCR1lSYkFwZ0ttb1lsOEFCeVdXRmpnc0JVNEM1M1dVSldPQnIrOU9ibmo5Q3NpMlpyRjNpRVk5L1RRczh2WW50MjNML3NvT2QreW1zbXN0dndHancyMHR3OUliNnB4NEtBMmZDWkJBOWhFSzFCSFJxQmh3THdQbzFGRkFaMU9aOWdacWcrRnFm''@;'; put 'put ''QkZNQWR4Z3lLbU1lUjBPTzF1Mm9BVjh2dVFmN2gxTEhwVis1S0NIdWxYUFlkYWwrdHorTUVWVnpSMDlmV0dhbko0a3Y2UW1PNmI2NTlRSVNxUHAwS1lDK2hNUWdOaWlrdTRqTFJhV2FUSkxBNU9zdFZxcC9LR3p0UWZCci9UeWpDbVRjcTRJc2NQVHB3Ly9kZjNMRE9VU2YyUE1uVGhXMDQ1Ly9D''@;'; put 'put ''YjN6Q3N2WXNpak5GMGFQMi9TQnQ1RnJ3QjBGRXVKL1ZIQ1ZhaGlRWllWVHFxR29XREVUOUZVOTRMRFRlUWJRU2VXNmFsajUzcVdMNnhiM1JpWWZ4d2M4Y1ZmYVBYcDFvank0M0JkbDlvc092VW1kYXJKa3duc2djNklnMXhwNjFodEsxbGZ5b1JIYTJPbE1jOGxkVWVpMmR1cG0xL2lzNnpCbkEw''@;'; put 'put ''eWV3S0hoZkp1WFk4a0NHYnlOZ1B2cDBmdU1UNHYwbjF2eXlEYTdjbzgrNHVvSXQ3b0QzWXZaa0tPWmlPc1hwcFR1UndCQnlLK3FYQ2l2c3ppdHpDdnR1enkvSDU1dWE1K01yb2JkUG1zVHRtOGZ1bDB4MEhtc0Ewd0hkS1Y4L2VNY2JsakdJRDZlaFlXdWFMZ3FTVWhTU1hOR0NxYzBsam9CRjFE''@;'; put 'put ''eWJmazc1L0V2N1IvUUdHUHIvMkhWTFArZ0t2UUZQQ2VBajZNbEpaRHdLQ251RXcxYzBXRHhMQ1ZxU2xtcE1LSGZnbitFM1lYM255d1lkUFB2emd5WDlaZnVvTFZGSzhUc3pzYTVMNDEzNklsTDdKcDVnOEEzbG8wRUhYaElaanFZMkdPYTNaYkRZcnhTdk1Fcm8wc043eEo3RHdqcTk5N1Rvc1NH''@;'; put 'put ''dlhmKzNGNi9DYzlOZFlsUDZBWitIVEg3REkreTZBdmo4R2ZldFJlYVpVUjNrdko5aGtiOXpHem03a1BtSExxcVJmWGYvMzN6b2ovZVlvTHNDZmxwN0hQZEtpOUorMHJ5Ym9hN2VpNnlrKzh5R3RuSCtmQzJuWnJHekdhZTdtZzhKdnd1K1Qza0dLcEZQNGcydi9Oa0hJNHNTYXhQWDkrUHE3Y1Qv''@;'; put 'put ''NTd0djB2cEpBV1BBMS9zWm5Qdk1HK2U3QVdoc3dFRjcvL2ZvRi9MYzd4QnNGc0dmMWwrTUZIbTdFS0FyamhYUGpLZkV3YW9yUjJDZ2REK1hIYzRPd1Q4Rlg5SUVIZnYvN0p2TFZnVGZQMCs0VCtKUDRDNXkySHRjZDZjdTRRS3F6Q0NHTVRLT2xwK1VveCtNNjFHZFAydjFoMGYvdDRVK09uemt6''@;'; put 'put ''QnRybjE5LzhKcDJ6dEg0bDJiMytOQXhYeGZyWUlUNUx1eEFCZ1lSTXJUMDhOTXozdFl0a3NKdThBbTNkckswWldsSnBmOW9HUGlBZk5lMzJkeDI0ZG9oODJmSG4zS2VyQjV2aEQ4UUtmQkZDTjJZY3hWalF1RUVSV01GeXJ5alhDanF0Qm53N0I3aG5WUUNzMVJIdEt2TTlxUUZma3RWajZvcko5''@;'; put 'put ''T2dCdTJjckNPVXFCcWVZWlBNWnA4ZURrQ2ZrQ1hvcllkaVNRTkJ2TndCU2tjc0pXRlVIcG5LT3JBM3NNK1hjQ3Q5KzljR3lwZmpVOGZSU3k4anV6c0hPcWNEUi9iWjVjL2RvYXFRN1FheG5EMGt2RG9ZamU3T0ppYnF5b3BheHV1RkdLWjZzNzNjMDFkVEUrWnJIUU41TWd4NnlnWmZ5N0FXTEVU''@;'; put 'put ''UVFsbGRaRHNSVmxNMUZXRXJrY0JwZEl1Z2k4RlM5QU9UZERFUk5zZzJCTjltbDlTcUhmVHNEQW96cXRXTHViNENaQjAvVlliY2paUGZadlo0U21EYm9tRTJodkRCbEFLc1N3VlBiQjUrN29yUHppdDYycFlwRGh5b1gyOXdqTlRVajBZYmhtcHJoQm1JRkYySDhodjVVZkM5NVJ2cHRMQ1cxUktk''@;'; put 'put ''VHFhbG9kQ3FWbW81eW1vb0FmVWhBSCtXb01STTNBaDVLVERESlVtQnlJZWN0bGV6c0xia3U2UzI5ZnROSTlzYmhwa09oWG5kM29HRWlHcDJJQm5xS2U4T0htODBqTnc0TjNUQlNHK29zclVoTXh4UFRpVXBQUnpqQzk0L2FFYzI1L2JNSzZ2MmppR1I3dzV3QjlmNVo4dnUzR1lnUnFjakNocHhJ''@;'; put 'put ''bGYyamdJV1hCR1Q3SjcrbDBNeDQyZ2l6ZGY5c0liK1Y3aCtXQ1Q2UEpDdlp0SCtrK1ZERlVsc3YzOFRGeXF2WnprWFpMcEpuMXZyM3hsUDlONHlQdjZNL0ZjT1d0YnMyN3grTjJieE93ckIvTHRpVVRLYUQwSTFqaDY1Z3d4QkJRNVp6TTVYbkx4T2RHeXhnZDdtN3JMUUVtanJCajZMekRmQnRV''@;'; put 'put ''eHRmWGpwSG5laUZLZU9GYVhlbjc1cm1vZXVIK3M4T2pwOXNrNDRaNTN1NjVzMjR5VENhR2EwcXpnUWlBemVNajc1aklQdWUvVDI3OFJYWnJxNHNwVEV2ZkZzazM0Smg5MmFNUlZpbnRXS2tvekVsdWxsbFNLZlRMb0dsVmN5Q0UyaEJnK1ZvSWlncVQ2WVVIQU1kU0ozVnJTL25NOGFnbjUydmlh''@;'; put 'put ''S0g2d2cvbGRzOEZNYnBVZWY4MXZYWEh4d2ZIMjB2YTNJRzlPVkZya3FpblpJbThPTlRuWjBURG11UDN1VDNVRHhHMTZkSUkrQ3hFdFdoYXpPV2lpS2kwK1pqczdLSUJEa0hha05IVnFsaHVDUnFpTXp6REtsMkppSnpJRlE4d2t3cElOb0VCaUt5cWdxaHFycXEybEFBUnF3TUJZTUJLaUt4VmVa''@;'; put 'put ''MjdyVjE0STNFa3lLcXMzL1MySHZOYU5lcFVMaHNOcnBucVhLeHRmZDRSOGZ4M3RhbENxREgvdjY1dVg2aWxSSTlxNjJoeWhGUHhXaHZ0ajdlZFhKdzhHUm5NckpIdW1idndNRDgvTUFBUC91amhyQ1Z4U1ZQUG1WakpoUGZHamRpYkFRbU1ZdEZsaWhXc013OWJ1N3NiMzBOYi9JUFdiUkRmZ09N''@;'; put 'put ''VXNDdFBhdkQ3NkJoQVNyaFlOZmtRSnBWRm5MNDl2bjR3ZDdHVUUvNDBLSGllZGlXNUw1VzZRdTR1WFhZMit5Vi9nYWsyVnExTE9zNzRQdVQ1Qi9BanJLZ0FUNXRWeTRvWFV3cHhTcmJxWjZNQSt3NVRBMk5WZFhqZVdvNldBb0x6Q3hTcmQwVXFSYkJDampnOTVjVSsvM0ZpY09IeWI1QWNiRS80''@;'; put 'put ''QzRPekt6OWtZNi8vdEw2dUR4K0tUcVNNVnBBdHhaaURjbFJ0MVkxRjBGZ3BLczVvQVBNZURTTXVoRUFDSWlkUG0xOENUS0ZSZEZMelNVdXB4eEhGN2ZFMFdWSGdKckp1dHhFVDhhTENrcjh4UldIeHpyeUUzN3pQNDM2TWFQZlF3SnJyM2J1WXZzK0NBdWdaNFltdFBRRkEzUFNsSjIzY2cxSTU0''@;'; put 'put ''UTM3TG1WYXp6MUM5aHRjSFlYMks4YjNzelBYN0JaN2N3aXhOUVlZaW9NWE9tdTc1Nzk5SjVEaDlhdXhSN3AzNzQvZFE2MnN3ZnJPUjJpejhGOEJOVE9wMkdpd1F3NUlDSlB3S1NLa1hqWWIwb0FiWDcreVh6UVpPalFJU28ra2JKT29ROTQyMC9sVHluRzJpcU1XRXliTXJXTENoYnRrbDdVQ1Zx''@;'; put 'put ''dE5hdWhwN1pzV1NCNTRIZjZWZ2R2aVU1WGtuczV6MEkxZnVUelcrMSt1OTloQVBtam9tVGRoZzlKSitkZStFNytaanAyc0NQZVBNQytIVDdzR0lzM3o3cHQrOW9VQ205dEdlcE5TYzhwUDRsMktGemZISXMxSXhXZldzRy9IcnRnTlJQT3FIUU5kdVpPYWFrOHNxcTVrTkhVRnY3a1RPaEFkcGo4''@;'; put 'put ''WmliVWljcU1aUjVzMnEwN2ZMaDRUczJEblEzUzQwU2JEY2NVL1RNS2M5b1U5eWg1eTdpSDY5SnhqOWR2eklMcE1IVGpDQmdLekhKb2lPNkt3ai9aY0JpNVlRamV6WURkRUo5T2NBTkNzZjJtd1Bhek10dmg2R2JiajJweUhiZ3Z3UHg1QTR4aXlNNDFQWk1LbTIxREZjemJzTk1VOVAyUDdEVHB2''@;'; put 'put ''OG5qODl2WmFkUW1tZ0tiU0ZuWFJwc292NjRTbFdHU1ZYUVNzM0tzbTJ5bURUQ1hzRitzbTFYUW4yQy9hTmNtc0M1dndNeEwvVnZ0VDNEYjhVbFlsd24xWEREcHFLY3VyOHJLRkNiWU10ejhaTWFBVTZIb3ZGbEs3WUFMSUdXWW1MRTFKWjBLQ2IrODNMUHJtSGo0TVA3SHRwbkpQdW1maVBZd2o3''@;'; put 'put ''bThqbCtFOFlMVTNuVmdncDNnSGNPd0lQeHlrWmVTelpHWElBb0VhZ1BNM2cycFFpOVlzVFM0VHFaeEYwTEY4c3RuR3FLemM1R201bzZsUGNmMnhBL1hSY1lHcXBQdWhrVHpZUHpFakxrNk9OZ1ZyS2lxc3BiMmRBeE1WNVVOeDd4bGptS0h4VnJaSGh1YW8vWVN6SEdSZkFqc3BXZ200c1k2R3VZ''@;'; put 'put ''RnMrNVdxa3ZJQWowMEFDU0FaM2FBbTNMTUJyTDdxQkVVNU82VlZjNHpBb2xMRDdDYTBualIyVlRXUGpvK2Z2RDY2eXRkUmVYNkVxdGpvaFBIcHQ3Ly9pbnBWWS9mcE9jNVNLOERQclZNdnRoaFFKS1RMeUJhWkkycGNnZmR5bE5aOE9jOVFDNWZRTVg3V2V4ZlpRWlRSY1ZtWkNVV0tsYWFGU0VE''@;'; put 'put ''eFBKSEVDa2daUEN3OUJJVk1uaEN6c2toZFVTcjVPUW9rUXpGQnJUYW1NZHQ1NkVYMS9GNzd6bitUd3RnK0p6QWQxTUZqY0VxUmtJMXROOGF3N0ZlT29aVHZuek56Vk0zbjExK2ROOE5OKzZESHQrSmI2RmZhMy9FTjBzMzUyTk5OdWliNVlBWlJRM05KNkdkWXd4OUMwUjFLR0N6MlNqMWVNT2kz''@;'; put 'put ''eDVPdXROSjBZN3ZlOS83VDN6MXVaUHZQbmZpMmE4Ky96eldyMzMrODI5S2I5QitTOVpIU1QzMGE2WFpNQ1k5Z1NsVEk0SElYVlBpUEVEbjdtSEVhVVZGTm9jNkxOaUZCYmFLUWl3ZXIzV1YrMHA4NXRMWExudmdrNnMvOGV4dWVkSTFXbVJ6cFlsZU9vby91bmF4TDRQNVdrQjg0dS9CbUR2RWVh''@;'; put 'put ''eVhqdk1rc0UvNkNiNUhlZzBIcEwwaitORDhpSFRQUE91M2VuMHZQa0srQ0ZLck9oTXNZY1lsYUdrODVQTVNtdU1HSUxNeVAyTTBZWFZSL1UxRGdHbFFSaWxnc3pCTktIWVhFcWViSHhXS2xNdEViTjVmamVzYlV4RmN2VENoYjJ0MTRsQW9ITVN1bGpiOVBUVURUYmZGNjNycTR1ZlNBOVg2Ym9P''@;'; put 'put ''N3R2bzlEZW1Dd25UREhkVzF4WVp1R09leTlRdm9DUlkzMmprL0RteUl5NGFIbFZ3MW1uKzVGNit5ZFFCKzlDenVRMCtwaG53WUQ3SXVadVhUZTRRbmFPNDJFUjExYnRCcFlaNkJrcVlaSm1rUUR5S1FQOGdvV0E5c1QyMWJpd3VtSGdwaFoydWJmaGRkRkJXdTFmdDNMUnVLYTZ2dmFFZ1hGcVFi''@;'; put 'put ''M2xOZDZ6WjA2NnNIMHVmWXdtNUw5OWZvYWU1NUM2N0d0K0ZIclNJdVdGK1hmb2tNanlQOHRQUkxsZzNCYzk5bjBMZVliTFd3VXlzNlFhcVFtVkhPY3AzczlMeG9vL0hMREV1ZWFBaTJUZkpCT1htZzVVd0ptRkJLdnNCYVAzNU44VDh2WUltTUFTOTRLV1lxeWt0TDNDNkh2YWhBUzh6OGZBcEdu''@;'; put 'put ''WmJUN2tIY2w3SWNPcDQxem1QWE5GK2NiaXJvVG5BL0ErQWpnMnJCUDV5S1RuVWNibTA1MGpIVnNOdmJHMmh0Qy9WS2QvYzBOdllFYTdXWlB2UFlWVjFkVjQ0VjlIUnFxNzJkdFNicEwweVJqcHNQMlBHQzdXQWJ6NEZFWkF4c3lUTFVtOG5BVHRGa0lpVFNYR1FSRDJzeEFhRXFFblljd3Z3em1s''@;'; put 'put ''VWtpdHk1Unp6cHE4eHFEd1pBczFEakx1ajBwdElzZTFNZDdOQ1ZZNXA2UnNiV2ZqcVV5YlNzWkFhdTh3d1dUTVNiaDU1N2JtNnVvZmFod1hOOWw3ZkxwMnkzREQ2a2pzMjZVRXVteVlHUkFZK0FpeWt5dDJSRmh3bVlUV0RHTFJ0WmpRRFBlWE01N1RhbEJxRElSS3NBV0htRlUwa29oUy9HOFBq''@;'; put 'put ''UmU3N3lsYThjaGE5N1dEUVhEdzVtQjArY2dHLzRLQTNwc3YzcUlwUDRhdkljeTk5SnNDaGltQ2F0QXYyeXdQNlNWcUNJd2hQYlpQRFFBS1BhKzBpb1BpOVdWcnBkVlpYdXg5alBLaGVacEQrOVR2cU0vd1I2clVGSi9IL3czeFg1Y0owV0ZRbTREcjBxeHpYSDhTM2tycmNURTZWNU9GMjRSM3Fl''@;'; put 'put ''M05YOWRtT2lidEYvNGVBSGhzZ3JEbGx1QjlhL0FYN1BvN0RUL2d6NDRhRHBFTG1KcXRWM1VTM0d3dHJzV0NQRXRBSld6Qjk2bUV2UE53b0hMbXR0WHM3ZzhyR3pZemdRbjI5dDNadFlxeUlmWFRzS2ZYZWlWOUNYUUhXWjZKbWlTakFRS2pJbVZNbTBUU3JzSFFvRVNrdmg2eFg0NGZmRFJ6bmV1''@;'; put 'put ''OTZKMXFGQk1UckQxbVlCZTBWak41QjhWTUpNb3hKZzNJT3ExcHlrU1VRZ3RGZnpVdlVBTzMwQkM1Q0JBR0hkdEJNTTE5bkZ5RzBQQkFKVVoxUE1zUVFORm81UTVUelNXcE5YcTFzakpUR3JzOXp2OEFCdFdteFY3Y1g2U0tnODJGQlVFSFU3TElVMm8yMHN6ZXBqWXJEbnYyTjdIdEhSUFkrZzd6''@;'; put 'put ''RTZESytQNEg5bHNzbUxXalBwU3FmRHJDSDg2STBnT2xGR2pGeFlnZVk1Z0dSMTU2MHFkdG10T1pwRWFuSEZVM0VTYWJkT01WbEJ0dUNrTE1GaW0vT2k4dUpNdW1welpoU2JPenRMRW00cTh0RnFIcXVJZXRHZm9jOGgvZU1FUC9ZNUptUzNnVG1HSFR2QW5GVmdzSWdlM0FIbThoeE1BZnJvRGpD''@;'; put 'put ''cnViRlcwTDBjaG15R2VUblhqd2w5Y3lNTXp4TVNYZ01aWkFGVGZ6RFRaNlh5aDJsNmNNSkI4dENzTkwxbTJRQUNVYmNBZHFaOHhxUGwxaEp6NVd4Rk5taHRrWVdTQ1NRa1ZqSkhValNaQ0t3Q2NGR3lTZ2FKdExibkRMNlRORXZpdDNrcXlWMTNrZk9MMG9meE1la2pMUGVqaytYcXBEREpsTmJX''@;'; put 'put ''Q0VRajZpcUFOTXV4QnBmWmdHNnRtQWhhbWR6cjZkR3NnRS9DTjZRNW9RUVBaZmt0TzJ1ZzNRN0FuRDJFUmcyb0FkdEFHeUdzdWVsdHQ2cWs5VUFiV2drM3ZHV3pUR1J6QzVyWFI0NXMxNURIL1drY0lZVWFnN1hBZGw0blZUVThCbXZCc21qWXpIM2JudmNtOGN1TGdjR0c2M29LOVpXYldkTTlj''@;'; put 'put ''L2ZNNW95bHlVaTRMOXFzOFc3azJHYmprVS9NYmN4Z1FveW1XTDRQby9GcW1RL2V5V2dLcTJoek04d3g5UGdPTUdjVkdPQ0RhM2VBV2MzMXM0Sk9jcGc4amE5ZnBEa3piS3dJbjgvNis3YjBBNklDSjFRd3g1Qm5NOHo2cndIR3h1WVQ0Zk5aUDc4RjV0OEJwb1ROaC9lenN2N1pqZk1CZnFxRmI5''@;'; put 'put ''OW5PUVRsTkx0OG8zV3hvR2RuREFhVmVXR3h3STl5U3htcjhYTkNzd0xRTmNaOEhJRTVURW1yRWtNQTNrcUtvUER4MTNueTE4REFyNlo1K3RleitKbGNDaGh1V01UK3RVZDRJdGlMaS84QU9HRDVMVXlteEdXWmN1OFdQTEdjRFlhbmhMeTNuOWtpZHpiREhNT3hIV0RPS2pDd3QxL2RBZWJ5SEV3''@;'; put 'put ''QmVuSUhtTlhjV0N2b3VVM3lpK1pNM1lGZkpRNVFBcm9uZEFqSDZvSmg0SXh3bXVac3V2R0h6NzA3Yys2Mjd0dk9kYjc3M0IzbjN0M0pQbWZlZlE2eGVqVWxSNFZXdWRhamM3Si82OElhVWxkYlhsWmkxdEdVYktRVlJqenNxYUI2aXVIcFBHOVF6SUlwOUxqZWxkVnRPRUVFZzBKOXBPVGlSNEk2''@;'; put 'put ''OVhGZnBoQ1l2VDRRQ2RuRGRsWnhvV1J4aDhBOVRLc3lVSk1pY3JreEQ0MGpYdTZGWFVueTFlVEIrNWJTcTVHR0kvTU5qY0RhVFVjajlVZm1KRlJaaGtlN3NzRGhPSE82djZKTWVpS1RKY1UzOUMzZGY5QlhtVnFKMzlnSHZPMnRiRnlSZmp6dHd6ZFREcGYrTUhUZFFNTzBYN3E1bnVLZTVXbXdm''@;'; put 'put ''VzZXYWVIUkxmU3lHZVlZK3ZFT01HY1ZHS0NGeis0QXM1cnJad1Y5YWpPZmMxdVpqZFV1ai9YY3huNDI1ZTgwWk9xQU9yUWFyRjNXWWZuNEsxZUVDWnJMNG5KWTNFVnVhOGhiSlBLc2dxUXEyeW1ZeTNaYWVXWkx0dE9abHRWTTkwckw5ZDhiYUcvdmw5WnlzU3ZpSlY4RFNUWC9sQkhzZGhvdXFR''@;'; put 'put ''ZnFxQUFkQUVwTW9NZEUrWFJUdktERGN0aTZURTVxWE0wQnFsN1BaNHoyZ0RmZ3JmT3pZNjFjakZSVXBwcFNjbzFTaWw2Z2NlYXhsaU9aek9IbWcrMDBXM1ozZTh2d2NFdDdKTm5iMDVqc1hTYm1wdWxvZExycFdMcGlYM1BUZEd5ZTVzbk9kRWFpN1oxeG1qTUt1T1o1QXE4QXJ2dEF2eFBVdTRp''@;'; put 'put ''MmVTN0FIbnhBOWZ5aUFvL0ZXVFg4QzdubkJRUHE1OC9sK2wrWlVEMFhLblB3cGhzNW44Sno0VU5nSDBaUUVtVndONi9wTFNzRExIczlZSTA0c1ZIZmpIVkdBeUdpam5wMnVoRzVpSGRIR0JPRnliODJiUE42ZnA2UEV3SENvbFdHcTBpUGRLSmV0MXhnSUVwR2ZrbTIwR1FXcUJiUEp3M1FjWnN1''@;'; put 'put ''MmNhTWN5MnloZGhrVWdtTXpPYUdLTitNRmc2L1pSZGdSbFExTnRiWEk5U1lhZXhxYTZsUDFpZGlVY0JjblQzZ0R3UURRVXZPckZEUzNMZGtZUER6aVUwSHZpQnpPbkR1dlBGbGZ2cWJPUm4wWHRtN2RFS1ZuakhYdlZBU1dHM2JmQ0lzZmFBM1RMTTJlbHI0MlhCTEl0RXlONVpQMjRqWFJ4S3Fr''@;'; put 'put ''MkxwRG4rYlArQm9xcW1Oc2J5RVRwYVhrRUlQWmNxRFdLdHBEQkdkTmxWS2tLNEVDNmk0RURhNEFMeG1uV3dXQm1oNUFBRmpRUWNjcFdPc3gwcmRlTkxGQVpEQ0hxellkVUVLQzNBM1hSbzQ0OXNDeHdyZ2orVEF0UlQzeGhDejNoaTNCblIvb3VGR0V5WHdEK2JpbHEyR1czSDM4YTd0c2ljQ2Ra''@;'; put 'put ''c050eGJEMk9tZUxka1VuTDk0ZmdEbDN5SE8xOHZiUGFkOC9SSFY4NHNLUEJZWDFmRFA1ZnBabVdIUDE3L0d6dXhvUDkvZy9kL080V2xRTEtKNmZzeko0WDhHejgycy8yL3cvaC9rejM4TXorMnNmdzYvY2krUEw5R2FxVTd5VFZRR1Z0YmVqTDJJMVFiS2xwUERialBpb2V4anBmUVlUd25lV3pk''@;'; put 'put ''a2w5SkRYd3lhQUpOVjlXTndkOHZMeTJ2TGF3SytVSkRtMnlzcVdORys3aEExS1VMY3BpQnk4cW1PMjlvL24rNDVreDA5Mjl0MnJPZEFiM2pmbWZMSnFvYWwvZ01WUFFWejFjT3hnWGw2OUdINTFOS2VXNFo3ejQ0T1hkVTFQanJSMkJzb3JneW42M3JMMTM2MmxJMk8xaThPeDhjakZFLzhUSS9L''@;'; put 'put ''eTBrdUwvZm04VDNLOExlYjQvWDBkcy9wdmoyZ2VuNVJnY2ZpRldyNEYzTFBDL2FybnorWDYzOWxtY3ZkYm5SRXJtdTJnTVhjbGdIdHJGUE96QkVMVFNFTmtQOHNrTDkyU1FTKzFFNHdqOUJUVkFyYVZZa2s2cWxycmo1R0I4ZFFYYU9FcmNHZ3B5UVFLUGtGcmFYNmx2d0wvbEtvdENRWUxDa05k''@;'; put 'put ''YzAvcjN5RU9TbG5qRzVVaFdweU5wc0RiTFl3UUxsTllKM3BGWnNObmdxcXA5dmFiQ1hiMld6cUE3THRiRGF2MTF2anJRN2F3cllOTnB2YVpLTVdtOFp0NXdhYml4cHNZUUVFWnpnNGN1UFFaRS9aL2g1ZkNCaDZvcjlzZnk4SXU1L1V4S0s3b3Y4OEVmWENKL3pCL1ltaEcwY2lWV09oaFNTd2Ny''@;'; put 'put ''MTMvTGR4YlBJQU4zOFIyTGs5S3IzaFlmdkd6MmpvL3M5eHVqaUl0bmxPNmVKRHF1Y1hGWGdzN2xYRFA1ZnJaMlUzZjg3UEhtZy8rK1YrN2xhZHEvS2NyQS9uejFXM1RaZmJlcmE2UTdyY3RvZXcyNytXTStmb0llemJQSVcxL3M5UFlZWFZyZWx5T2R3OEorTUdjRGFKVkRHWGxseGM1aWo2MkJh''@;'; put 'put ''L2h0cy9kK1hzbjZPRGFMdVlEamFnKzNab203T2RzR0dTeThiUzlUMkNGMnhmTi9UU2tXa3R3VUI5V0lmSmlCNU1idGhxc3NMS2ZlaTlNMERQU2xtZEhZMFdGeGVYRnBjR2FPekc0YVZCQnkyUG9hWDlZVjRLeGxWK0ltMGlndGVmaUhlNEM5cHpkV0hGRmVVbFpSYnB6anZ2cW1oTkJNdDRpVmlG''@;'; put 'put ''dTloanhaMnNVRXpPTzkxRGVvQm42VTFDVDNNR0xQT0E2VldLaWVDQXFkVkg5SUplRkRIVzE4Q1VtV1cyM1d1dC9Gcm00UnJvV2RRVGNWV3BaQzhCeDFxdjU1RkN0M3FKbmt6OVZsaFEzQmE1QWRvRVA1K3gxdGJXcG1vYlF3RTdHRTFocjFFc3k2RWx0WVBONUxRcWlBcXBNbGhKRDBWWnlaWWsx''@;'; put 'put ''cFdyT2VwK3F5U3pVZ1NHeS9vM0pyUFMvRmFHelkvbGsxcGx2L2h1NWd1RlpGL281MXQ4S3A3TFNYbDNRT2JkRDZyYW5sWGFZajE2YkllMkYrVzJCT3ZuT0gyeTJqWFdOaXkzUGIydHovNWI4Z3pBRERJWWk5QUJKcmtCWUo0V01BVUNHRGxHQXBUL3pseU81N1VnVDByaHpXc1hiQnBpMEN1bnpT''@;'; put 'put ''R3FWakFTdEdnWk5nZ2tpMTR2NTlEUlV4RitNUVZQQ0tMU3AzWkhhQ2JGYVJNbTFkMUVFVU1iV3hSZXNzVUc0RHljVGlmbjhhcUJhVHpQNXZGNGFqMDFZWG9pSC9MTHh6WCtMV21neWtVZ2FITTJ4YldaRGVrVTk5OS9LQ1A5VXAxVDBiLzJqQ29uOUdPdDdlMXJYOStRVlpHTG9iWGtZbWhINGY5''@;'; put 'put ''dDlodnN1YnR5OXR6UmNiUmQvQTBiMFhkMmFLdllnZ0xBZkpIWHlBSFA5N0U3RmdZemZVV2dpSzJBTzM2R1RMUDdLZU9KQzBnVTVZQXlGZktXTERNa2dESHRXdVhZemVHblZUWld5b0JLUGFKZjRUTzN6SkdxQXNWaHpsVVZURTVKVHlqVmlveUhtcG1JNGpXRzlLeHloZVhLaGxBOWVtZkdScjJL''@;'; put 'put ''RUNaYXNCMklBV3dCbWdsZkJ2UlJEZWErUnF2VExOTmdyYkxqOHUwNExHT0dTUSttcllJS0tGcy9QcnhkQzVxb1doUU9oK3ZERVpmUEhtcjBCMW1ZVjl5MEl0Mld0RnZxR3lBNTlmYkgyY0xjSW5XNmdvMHB1TlhnbVVtL2tiMnVVbmVoc25LYkZhdnljY0VIdzJkNFN1NDJzVmo5TnJIWXpiNkFY''@;'; put 'put ''dllGV0swbW81RmFXV2Q5ZVV0Ym5rOUxhV1NFNjZ4VGNsdnBaN1RPazdjRjJyR1FVc1R2ZndCNHdZOEtVUU5xUmZka0hQV1ZSQzhxNVFvQ3ZRNEVEWEg1VUdlaVJ4U0NYck5xd1BsNlhsSFVMb0VicmRYeTArMGxmcnJ0b1pkNmJZVTJZcDNPeXR1Z1RTM0FtWTVHYVlRMjJocHRTU1V0RFphR3Vo''@;'; put 'put ''cS90NnpVYWFlUjJtS3pZdHJTKzZpNE5lditFOUoyY1dWVlZkZ2ZNRGdycTF6Ly9aWVp2Sk4xdnJLMmhwSmdUYVhMVlRYNnR0SjV3WmQ2RFlpeGl2RS9qMWtmWGYvVWxyajI5d0NtbFBFLzk3ZU9mb3pIdE9McmU5RHJ3TU1PbnVkQXNJUG5nU2hYZWZBY0lLNHpBMTZYbDVYTHlDZHdhVm9rcVhE''@;'; put 'put ''cTY1UlVMZVpsSFdkUHF1c2NnUUx5a0d3cjBOelpkUmpyQlhZVzdhVzU2MDRIMFFoZUpqSjBxbzJWVFhOTGpxTlkwa0pWUldteDIyVXAyRFl2MXE1TXlLMmUwU0g1akhxWXpxekNiVDhjNTFQTG4xV3ZWY0VzeTJNbUhYNTk3WS95TklGbWFmbk5VL2t6QUpCM3hrMXhTSlpqQ242d05sZkhhOTFT''@;'; put 'put ''eHp0NCtEQk5jb0wrWm9BSFBnUzYwQWUwem5nQS95djNtZUY1QmVPTmNmbjVwOWx6Vmp2TGRIOVUxdjNXTGZ3R0hJcnJoZmNBeklRTTQwSVhPTXdGQlliWDRENmo5QVA5UDh6ME5GYnBhZHJQWVFZekljT2Mzd2pEOC9sSkw5QklBYzM0Tkp1TUJuQzFCRDFScXBFM0ZmWVdvQUpucnJCWFRGRWlT''@;'; put 'put ''VHRGSittVkduYnRXcm4xMXNWRnNBRVhhdkNJOVBQZWhkNGZ5dlVDWHBhWG5NMFVtSXlpam1wZ2ZUNHYzUVFmaStSNnZseGFjTDdFejhOK1V3NWI1dWVmZExMN3N6RE5DNVRIeDk3SlEyTmpoeWJ4d1JycEphd0xMNFR4blBTRG10eVp5VTNLbVFuZzhSZmI0UnA4OWxka241M2FXZmR6V3duMjcy''@;'; put 'put ''RzJyM0ZadHZIWTZoQTh0eEtyQWc4NGZTRm5XejNNWkhCY2xzR2YzMkdzaTduNGdQNDRVcDJUdE9UT1NZNmlwN2JZWmR4dnZpdm40eDlkUU51ZDUrREN6V2NzY3R1cGZQd0JGMTRtNTZHQ3NINFY5dDZHeXVtNWZlNTJBVDNKWFM5Z29LWFVTcTRZODlUSzdXVXVCOHNyNVlxOUpIOWNuRXV1Y0dK''@;'; put 'put ''cjNnenE0NnA5N2ZrRDl4ODhkUDhTNlpIRVlYcDBlYnFQSy9lNWp5OHUzYnUwS0pueGZ3MmNIUmk0a3Q5RkNITVcvaDMwTzExWEM1cktUTHF4WG1jZ3RBQ1poUWVBaGpSYXZXYlpiQ0E2blJJS01JbEdRUlVNU0NiOWZvU1NMY25tcHBRLzRZL1gxVUIzWG5zZ0ZBZ1d3THczaGxIek1sNmx0aldi''@;'; put 'put ''YkRwWmhRdGxQSDdhZXpvWVBOTXp6TktiZTA0SEF5ZTdGVFV1WGFQS2M4YlhicWlyNld4S2RmSE01NDdHVkR2VDUwU2QvSXl2cEpwZDF1dkgyZDZtWlByOTRoYTY0RG0zZEcrbmVXd3VLOXQrUUtmSEdmMm1aRHE5eU9HbG45RWNYUm1lUG8vbWJJampqSDVUTXYzZXZPMVlaeGo5VG5QNnRmR3hX''@;'; put 'put ''TzB6bTJlVFBNK1BiS0Y5bnF0TDV6bkQ1M2tFeVhYVG5heHV1Z3Y5ZDhZVmo1V1hhWFQ2RXF6QnhZVkUwQlNBdWFEWlBsY0F6TThsMFBrdTd2ZHA4ZFpUZjlzMnVRSnYzV3JiWElHM2FyWmpyc0EyRFhtdWdEa1k4ZFAwSEsvVkFGN0ZKVUxOb2JkUkhrN2FycjFpbTZDeiszMnJseW9aUDM1U3R6''@;'; put 'put ''bjJiRHgweVJKeWViOVl6blVIV2dmakNvdTZXQVhSaXVYQWs2VzA0RkM5YzZLOGM1R05PeWVLdWlWRUt6QlFQaUswSmNtamZ0UEd2V1dqeWkyN0RidndGcTNZRWVOMjI3YTFIZDgxVTZDMm1tMmFIdnlaUzUwUDRMZktMTWN2SGh6ZkxzRWp2aFRlTWQxODE0eDJjNWFITmx5NWMvNjVpamZQS3J3''@;'; put 'put ''SmZMMjRBMjllVkhnVDYrczRiOVlBYjlLN0FxclFGek1XTnhhUXl3ekt3RVR2SXBTM0ZnQTE3S1NHbm55U0cyaVFUMDR6TXVnSnMvTzJITmhFYUJNTlBZaDVPMjB5Tlp2QTVXT2JMYTAwTkpZSUpoNU10b282N0hTYnFOZnBGWGZZSStySTB6c084RDc3MW4zd09PbTlCNXV5NEhweTF5Q3d2UDVP''@;'; put 'put ''bHRmZmdMNldLYTdCZXFIV1NReDZCeWFHWEZLZk5rZi9XbzMyVmlPR2lXTERTVkJjZ0dGYVV5Z0ltZ1Vkcnl6a3VYdklneFFzMWVmYjZBM2twcmRxbEtuZEhwNmxCcUlqcW1ZQ3hST1YydzJvbmhVYnVBRlROTEtoMllHU3R4WWd1Q25oNC9nVzJrMjA1MnNTQW1YVlJadXpDSnYxbzJsMW1VS2Yy''@;'; put 'put ''eGhnOU1mdXBHQTBtcFpwOUlvdE5Pb0ZHMFpndHV3c3QyWEp4Qlo3bCtjaHRPVHlFSTV1bzRkNHJQeXVYS3o4NkFoUzVUQzhuTXR6TUtHLzM1TER3TnF5ODIwV2x3ZVltN2ZMb3dBYjdCUGJ0bTNQeC9weDRXNGszNmV4aDkybkVhRG5NMDRRUndXd3JZVkE0c3hObHROUDhuSDF2Tk1FTFFLQllu''@;'; put 'put ''L1F3ZThuWXRrRW04SVFtNjdmSVBlTTNqYXR0K1ZpRDQ0ajE4bjNjSkR6N05ZTlM2a2NiUEI1M1BlY1ZGL0t3ZWM2QUhPZEE3L0lqMjdpVXRwU3JJZE5FVEVXL0ZpSDZabE5FWHZpWjVGcjRGRThMQWQ3eStSS0YxcFpzazE4dDBwK1RXTzZ1ZXFUalNGZFk0Q1d1SVc5b2lyRXZiVVNKWm1MNHBJ''@;'; put 'put ''NUZrUlMxNlVjenJ1dndiTE5CU3FLa3doN3hlNEtZZlRZeW5OZThOZ1dPdUsxS0ZSbTdtVzBJS0x2cVBKY3ppcDVMdkQ4M1Z2YThyT0hpOHJaQXhibmthcnRhaTVIWmdYZHNJV08yQjBlak5ZNlpGdHJTNTZiWFA5QmFXMkIyMXJ5ZVNOdnU2cTBCZC8zMnp1MGZVNXVTK09CSDFhMVBadHJxMGRu''@;'; put 'put ''ZDJoN1VSa1g2OXNZM2JDNld1cFBGOUk0Qk0xSXB6VTdMQTdCQ21ESUFXcTlleGhSRjZJQ2UwQzU3a3BWRG12SWw4Ritma3Z0SzgwYlAwd3V2czI3UE56MExvL1B6SzcyajQvMWtZdDM3dDY5ZlIrNStpU0NiZ1dlT3kxWEo4bDlwSk9pdjZ0dmJMeC9kWlpjM0wzN1RybVBFWHdGZVE3MlVjN0dO''@;'; put 'put ''eEthano5aUFCVTV0RjMrZUFFeUI0VmNOcjRjY21KT3ljUGpsWTJPVkdscHl0RllNVkZMUnFvcVVnNlh5NUdxcUdMalRLS0hXS3dseE1hNVpHNzY1a3gvSmJzL0h5bVJhd2xHc0VPb1pMVUV6YXhYZW04T3phWmYxV0lCT0h3MlZ3UXF2SzJLQXZYOTlUZDFkVVVpblowUmVvRTYvU0lqL1BkSVY0''@;'; put 'put ''SS9jUHQ0anZ3ZVFMb2JXVkVybTBHMEVCWmpvZFF5b21XVkFPeFdHTURwTEpPRUFuMHp3YXVtQWk2TlhGVWczOE91Q2pMZjBGSGg3czhGbGg5aFVTRzNIRkxtZDdtVGRudzdlUUZHN21IanBwM1FzNEZWYVRrd0h0SmpZWkFlbUpOWnFrNkJmbGVWS3pTSU1NR01ReGZvVUsxTUhJaWFmTW9WeS9T''@;'; put 'put ''R2RLNHkvYmpBVjJ4MW0reHViYnBvMnNrKzI5eTZ0R1dHZE5xc0JRVVZYc003K0UvOURYdy91dkIvc0ZvSUVaWHlpZ0V0SUdlSXVyYW43YlpjRFlWYjlBZmxvZ2ljUGZDQlFmS0s0NVlQT2Q3SitLNVgrdG42ayt0ZkFxWUtzQjVLK0Yza0crdTBBcm0reEkyWGtsL2dnVTFQVlZWNG5RY3RXUUF6''@;'; put 'put ''Sng5dlV1UWo2c1YxTzhqSFZ4VDVpSHJSNHdodDAvWVlmdm90Mng3RFhhcTJxN20ySzdoL2kzemtiWi9MdFYxQlgrZis3Zm9nUGM5UW40VzgrVHR1UDd6NU85bCtpQUJNbVBuR1F6TE0wd3lHcUdCNHJQM3lYRDhGUUEzYng5cGZ5TVhhQzhiUXRqbVF2ZWk5TytpR1YzTG4wcjBIdU81dFJQOUdU''@;'; put 'put ''TGpqcmUrQmYxV3F3UjF6U2h1aC9XMjBFZlJ2L2w1cDA0MC9neTZTendMTmxERjZHZHBjRU1mcHhhN0V5M2xzOW9YOEJmYms5ZzAzMkRQYkIzOFdmWnM4Q0N1MkFBWml2TGFOeEhLMWJUQW0vbXMyWmptOTBhbThFT2g4UXlHVHdJUmFvRGhnWXpkSWJSeGJ1K05Vc0c2SGFWV3BQdlA1NFVmSWcw''@;'; put 'put ''VmhQajgyejMrR2VkcHk4NlJrb2t5WVl2Rmh2QXZXWk5tcExvald4Yk82b0UxMThZKzMrbnp3cjRYK2V4ZytlZW52WHZqQThkUUxkUE5PZEIzc1BUZ3lSWDc0L3MrTWhxM0FJd2prUUdUOWQ1b3pxcitQMGdYVU9JdCt5Zk1jNHhhc0xlUi92a1NQZFdac05PbU02ajk1WWkrd0NTYVRzR1ExRklr''@;'; put 'put ''YTlWOUtTYjFGUS9aWFQzaHJrYllXNUwrWDBySnR1MjMrWXNxV3R1Q0JOSTJPWmpMS1gwNFpuUjJkMmIwcms4Mk1EUFRGdW1LZHpVM2IvaFVWeC8vZ3I2aFViZm85b0lLdGF2cVQvOElLSHNrcXY0eEVwZlBLMzF2NUsvb2g4YWY4NFpYODU0bUczQjloeWY4eEZneldmUktYNEwrak4rWThBUVp6''@;'; put 'put ''cks0THV3RjNnZnQyMzMzMzdqZGZ0RDl4d2NGcldRR3VRb0VUR0Z3NDdSWnJQL2pCM1ovKzlPQ0ZKK3d2dnN4MHdTL2tPM1NqYUNJeld1WWhHbnJIZ0lsWjZScFFjT0JiTHhzd01XSnNvclVPdVJvWE0wdE81UkVRK0I1RkRaRzYyaHFyTFFqT29OVWVMS0RCcTl4RlEySHdGRm5tU1NyWlNmS1Zs''@;'; put 'put ''VFJoREpEczlyS1FLaXR2U2R3Nk5QYWVGZmZNSU5FTTd5OVp2bTFFTG1rWnVOYUxLNldYWUNHdDB2Y3Jic3BPc210M3U2OGU3Qzh1QUNYZWUxazdLMmdaNitvdks3SGIrZ2RtWlpubEpRNThQY2c1M1JPRTFoRFljN2Q3WDAvdjlXYUdESmd5QWtoZHI5VkxoTFUxK3BYTFhXaVI3MkxRUDFWaUw5''@;'; put 'put ''Q1MyRFozUFcyOUs2SGw4Q1h1U3ZqajNoMnZTcEJqOWkxVXh1T1lmT2J3K1Z3c3Y0WHFMdlpjZGM3S25sL01QUmV2UTl2Qm81V3IxTS96L2ZmS2ZpcC9mbGNPL3VneDVUNktQZVJkZ0FNdmlnTU9xbjAyRERqWTdHTXBpTWg3V0lITktIa1g4N2pVYUpFOXJuV2tRZzkzdjlRSWtsMnZlemZuUHJE''@;'; put 'put ''NVVuK2Jyd1A4N1UrcDF2RkNEaDhGUjNNNS9PZzh1M05Hb1lPazFUK20zQjZEYWQ0YnZOZHVmYTlkbTBEL0Q1RDhFaUlBQUFBQUFRQUFBQUVBQUE4Q0creGZEenoxQUI4RDZBQUFBQURUd1oyR0FBQUFBTlMrcE92L1EvN29CSFVEeVFBQUFBZ0FBZ0FBQUFBQUFIamFZMkJrWUdBKytlOEtBd1BM''@;'; put 'put ''b3YvTy95dFlTaG1BSXNpQTBSQUFwZklHcXdBQUFIamFkWlEvYUpOUkZNWFB2VjhHUlJ5c1dGRnNhekhXSmtTYTF0aHF3Y1kweFZTVFNGdHJnMElYY1ZBUnNhQ3A0dUpTc1E0dTR1UmtFRjBzNnVSVy93emk0SzZUT0VsVVdtZ29XQXIxODl4bklqR0pDWWNmZWZuZWUvZWVkNzRueTVnRVA1S2xX''@;'; put 'put ''cWtkeU1ockRHa0JRYjJJRGkrTWlEN0VicXhnU0M2aG53ckxmZXpYY1NTa0NVZGtDakZaajZRODh4ZjBKWG9sajJiKzE2V2oyS1hUMUNTNk5ZOWVQWVUrUGN2eFBQcmM4NXlyR1k1eEhmS1lyR0tyTjhXOVN0aXV6NUhUT1VSMWxieUd0SjZuaXZ6OUVXbXNJYU90Mk1LYUpuUWZCcjNUeUhrZUZl''@;'; put 'put ''TC9zMGc3M3VQenJGMnZJNlFMR0xFMUF3ZlFwdlBVRTJ6VVc2enpDbzZ6NWhXeVM3NmhSMGY4WHpLQnVCN0dYcDFCVm5leWxobXVOWWFJbkVPNzNtVHRPUXhqQ1lldzVML1hUcVJRd3JCM0J5a2JaNTBSTjQ5elpCWlpLYUZEYm5CZWpuMG0wT3dOb1VVajdHMGMyM1FkZXVRdU9xVUZGOGl3dk1K''@;'; put 'put ''Qjg5M3RPWTJZMVNndldFc2JRanlMdUt2ck5vTDRpUUVaY09OUityWEhlZFZBZ1NiUy9EUHZxb1ExLzRQNVJ5NVNYNzNOQ0ZlOHE1VUdrWEUwLzZwbC90Rm5ubG5XZWRWQTNqeHB2WXo5Sy9yMmp2Nmx5Q0wxUmEveS9DdmUxY3B5WVRUL3FtWCttYzlHNjlmMnJLWDFidnRYYURuaXVWaS8rcURz''@;'; put 'put ''eTVqYnB6RXRhM2JlWmRLcno2ejNFNzNySm4zeXFQWGhNc2djV0E0dEMzOTVCdTB5aUhiejF2cXJZOGpWRUtrd3NBSFJ3Q2J1eTl4YWR1cklMRnVlNnNoOHU0eFZhT2RqSHYySDlnNjRITm9abW4vbGQ4SHlXRXZMdUJTWVBkTlR4UEdkUEVFbHFEZm8xekRINENjcmE5YXl6dFB5bnJJTWVNVS85''@;'; put 'put ''dzFXcWNlQXhoSHpMdk1lYVNyZktZdmtJdmtJSi9VdDd3cmVTNEVDMzhNa2dsUlk1L3dmTGg4ZTUvSmNHM3l6eVA0R2o1Znd0QUI0MmtYQ1hVZ2FjUUFBY0x1dU03OHVNenZQMjNtZmVwOTVudi96N2tFaVFpSkNJcUluaWVIRGlCZ3hZc1NJaUlneHhoNUdSRVFQRVNJUnNZYzlEQW1KRVNFajlo''@;'; put 'put ''QWpJa1JpakpBaEVoSWlNVWFJak5qTFlQeCtOcHR0OForODdXT1hyU3NMVWRBMlZJVEswSDMzWHZkWmR3T0c0REE4REwrRkQrRmF6MmpQVWs4SllaQVVVclJqOWhuN25IM1ZucmNYZStIZXVzUHZXSEFVSEEwbjdrdzV0NTBsWjhXRnVJQnJ4clhtT25EZHVjUHVkZmVweCt2UlBmT2VEYytKcDRH''@;'; put 'put ''aWFCSjlpaTZoTytneFdrRmJmYy83SHIwVDNtcS8zdi9HWi9ObGZYbmZuNEd4Z1pjREZUL2xuL2VYQjBjR2x3ZlBNUmlid2hheEhIWWVnQUphWUNXd0hiZ0pOSEVLWDhDUDhZZGdJamdhekFaWGdoK0NGNFJHSklrTklrOFVpRE9pUXR3UzdTZWpwSmZreUFRNVRtYklCWEtOM0NUM3lTYjVHUEtH''@;'; put 'put ''dUZBaU5CN0toSllwbU1Jb2lVcFNrMVNXeXRFUWpkSUVMZENBSHFIVFRKcHBNUjBXWVgwc3hTcXN4YWJZS2JiRWZtT3YyUnJiWWpzY3drMXoxMXlOYTNFZEh1RjkvQTYvengveEpmNkt2d2tyNFhLNEhyNlBRQkUwd2tSQUpCbHBSRG9DSXVCQ1dIZ2xkRVMzaUl1S2FJa3BzU0YySkVRYWxyYWtB''@;'; put 'put ''K216OUZXNmttclNieG1SY1hsQ2ZpZnZ5b2R5UVQ2VkwrVWZjbE51SzA0RlUrYVVXNld0d3FwWEpWVk5UYXFUYW1aSWovWkdpYWdRTFdxejJndHRYZHZTY3RvbjdVUzcwTDdIdE5oQnJCajdFaXZIcXJGN0hkSlJuZEdIOUJFOXJhL3FPYjJrLzRxVDhXeDhMMTRIQ0FCZ0RFeURaMkFSdkFZYklB''@;'; put 'put ''OEs0QXhjZ3ArZytaK0JHSXlSTm1hTlBlUElxQm90bzVXb0o5cW0yMXcxMzV1N1p0bXNtbmZtZ3dWWnFFVlk4OWFTdFc1dFd2bS9hbXpBVFFBQUFRQUFBVHdBWWdBS0FEOEFCQUFDQUNnQU9RQ0xBQUFBa0FGQkFBTUFBWGphaFpMTlRzSkFGSVZQQ3hxSWhLQXhMcnBxWExpVHZ5Z1lYR3JjQ0dv''@;'; put 'put ''a2xwMEpTQVZpc2RBV0UxL0ZOekR4UWZ4NUFqYytnMHVYbmc2M0NBWWxrMmErbVh2dXVUTzNBMkFOSDRoQml5Y0JIUEliczRaTnJzYXNJNDFyNFJqMkVBakhVY1NUOEJLTWljOHljNytFRXlocWhuQVNobFlWWHNHT0ZubW1ZR2tQd2htc2E1L0NxMGpwY2VGbmJPZ1o0UmZrOVMzaFZ5UjBTL2dO''@;'; put 'put ''YWYxeXpPOHhHTHFEQTdnWTRCNGVldWlneTVPYmVPUlhSQjRGbEVndFJrM3F1a3Jqayt1Yys4enltWHVMTEdxd21lY3BKeGVPcU1MZE5ubEU3VG01UTNMUXBLN0FuTHdhKzdqQU1SbzRJYzF6Mlo1eFdWekgvRlhKNHNxanFxZE9hazVWWGx6TjRueEZqVXRWMklGVE90aFQ5WnJrTThiRFdKVnor''@;'; put 'put ''NThlaFgwTnVLb2d4M0UzNCt3cTMvN0VOY3VZeTNXVTQwdFdoOUdBdXlQK2tVaVQ0eHpWN0t0Ny90VE16YjNqWDN2UnJSdmtGdDl5NkJCTU9sYVQvaDJwcU1sUlVyRXl6MVpndklKZHZwam8xWlJ4UTUzTkNnUHB2MDF2bjltUmF4MUQ3dlFZOHhoenZnSEZmWVZqQUFBQWVOcHRrMWRzSEZVVWhy''@;'; put 'put ''L2ZzWGZkTms3dnZWZkhYdmZFS1M1cng3RmpKeTV4N01SSnhydGpaL0Y2RjhhN2NXeTZCQUllUVBEQ00rVUpFTDBLSkhoQW9sZlJld2ZSZWFRSDc5d0pYaVR1dzN6L0daM3puelAzM2lFTGQ1MGJZQjcvczFTYmZwREZETExKd1llZlhQTElwNEJDQXN5a2lGbk1aZzV6cCtybnM0Q0ZMR0l4UzFq''@;'; put 'put ''S01wYXpncFdzWWpWcldNczYxck9Cald4aU0xdll5amEyVTh3T1NpZ2xTQm5sVkZCSkZkWFVzSk5kMUxLYlBleGxIM1hVMDBBaklacG9aajh0SEtDVk5nN1NUZ2VIT0V3blhYVFR3eEY2T1VvZi9SempPQU9jNENTbnNMaWRxN2lhbTdtQk8zaWY2N21XcC9tWU83bU51M21lWjdtSFFjTGNTSVFY''@;'; put 'put ''c1htT0YzaVZsM2laVi9pV0lkN2dOVjduWG9iNWhadDRtemQ1aTlOOHo0OWN4d1ZFR1dHVUdIRnVJY0ZGWElqREdDbVNuR0djN3pqTEpCTmN6S1Zjd21QY3l1VmN4aFZjeVEvOHhPUEswZ3hsSzBjKytmbUx2emtubEtzODVVc3FVS0VDbXFraXpkSnN6ZUZYZnROY3pkTjhMZEJDTGVKMzN0RmlM''@;'; put 'put ''ZEZTTGROeXJlQnp2dEJLcmRKcXJkRmFyZE42YmRCR2JlSSs3dGRtYmRGV2JkTjJGV3VIU3ZpRFAvbVNyMVNxb01wVXJncFZxa3JWcXRGTzdWS3RkbXVQOW1vZlQ2aE85V3BRSTEvempVSzh5MmQ4d0lkOHhLZTh4eWRxVXJQMnEwVUgxS28ySFZTN09uUkloOVdwTG5XclIwZlV5d004eUNNOHlr''@;'; put 'put ''TTh6RFhjcGFNOHc1TThwVDUrVnIrTzZiZ0dkRUluZFVxV0JoVldSTGFHL0hXalZ0aEp4UDJXb2E5dTBMSFAyRDdMaGI4dU1aeUkyeU4reTlEWEdMYlNTUkdEeHFrS0sra1BlUmEyWVg0b2traGE0YkFkVCtiYi8wcC95TE95UGF1UThiQmRGRGFIRTZPamxra3RITTRJL0MyZWU5UmppK2NUTlN4''@;'; put 'put ''c3phd2N5UWg4YlZZNGxiUjlNWU0yMHk5bTBHNWV4bDBVdG1kNnhETTkyazE2M0lXL3c1c2hZUmpvT0oyS0QxdE9halJtcFpLQlJHYms2elFkSE5PaE03T0RrOW1oMDNSd0RMcE0xWmdMZnlvZUxTbXRESG9zODNXYnBLU1pwc2ViSm1XWTArTkU0OE01cWZRejBQT2Z5Vktaa2IvSDI4R1VZVUZ2''@;'; put 'put ''T09xRVU2TkRNZnRzd1hpRzdzdlFFOVBhMTI5bW5IU1Izejk5MnBQVHA1MmVPRmhXNWJJc1dPbnJIWGFzcVdzMWJ0QnJITVpkNVBWR29yWmpqMFhIOHNiUHEzUmRhYWkrMm1PTnh3YVBqYjQrWXpUaEl2MDJXRklTOUZqbXNkeGpoY2RLdzJCVGRpamxKTnlnb3FraHh5cTJZc2w4eTUzRlNQZnVw''@;'; put 'put ''MldSTmYzWjZUaGduUi9RSkxyZDA3TEErMzJNTnZ1YTFubFcralJNY2pJYWk3akp1ZGJZMUI1RmJDY3ZZbnZxSDdkbHR5RUFBQUI0Mm1QdzNzRndJaWhpSXlOalgrUUd4cDBjREJ3TXlRVWJHZGlkTmtreU1taUJHSnQ1T0JnNUlDd3hOakNMdzJrWHN3TURJd01ua00zcHRJc0J5bVptY05tb3d0''@;'; put 'put ''Z1JHTEhCb1NOaUkzT0t5MFkxRUc4WFJ3TURJNHREUjNKSUJFaEpKQkJzNXVOZzVOSGF3ZmkvZFFOTDcwWW1CcGZOckNsc0RDNHVBUDRjSldBQUFBQUFBVmlZOUd3QUFBPT0pIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbH1AZm9udC1mYWNle2ZvbnQt''@;'; put 'put ''ZmFtaWx5Ok1ldHJvcG9saXM7c3JjOnVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxkMDlHUmdBQkFBQUFBRmFFQUJNQUFBQUFvdUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBQnFBQUFBQndBQUFBY2ZOSDU1a2RFUlVZ''@;'; put 'put ''QUFBSEVBQUFBVFFBQUFHSUgxUWY4UjFCUFV3QUFBaFFBQUFjWUFBQU9ka0RDZnBaSFUxVkNBQUFKTEFBQUFDQUFBQUFnUkhaTWRVOVRMeklBQUFsTUFBQUFUUUFBQUdCcEVxOEpZMjFoY0FBQUNad0FBQUpzQUFBRG5uZEREN0ZqZG5RZ0FBQU1DQUFBQURBQUFBQThFaEVCOFdad1oyMEFBQXc0''@;'; put 'put ''QUFBR09nQUFEUloyWkgxMloyRnpjQUFBRW5RQUFBQUlBQUFBQ0FBQUFCQm5iSGxtQUFBU2ZBQUFPTXdBQUc4a0hkN1lsMmhsWVdRQUFFdElBQUFBTmdBQUFEWUxjNGdSYUdobFlRQUFTNEFBQUFBaEFBQUFKQWVSQkNCb2JYUjRBQUJMcEFBQUFvd0FBQVRhdVk0MEoyeHZZMkVBQUU0d0FBQUNk''@;'; put 'put ''QUFBQW5yVSs3bjJiV0Y0Y0FBQVVLUUFBQUFnQUFBQUlBS1VBMUJ1WVcxbEFBQlF4QUFBQVk0QUFBTjZNZ2lJV25CdmMzUUFBRkpVQUFBRG9RQUFCaUdYRmoyS2NISmxjQUFBVmZnQUFBQ0JBQUFBalJsUUFoQjNaV0ptQUFCV2ZBQUFBQVlBQUFBRzluaFltQUFBQUFFQUFBQUExRkcxYWdBQUFB''@;'; put 'put ''RFR3WjJHQUFBQUFOUytwdlY0MmcyTVFRcUVRQkRFRWtmME1MUG9mN3lwTC9Eb2ZYZlYvei9BSWdSQzBUUUNMUjZjZEZSa2pWc283SHpUdjFENEI3bTQwNDhET2xvcE5sdjY0NVNlWFhMVDUxc1h6U2ErVzNBRjNBQUFBSGphalZjTmJKYlZGWDdPdWZlK1gvc1ZhaW5sUitnWUlZUWhhVG9nVEpR''@;'; put 'put ''Z0drWTYweFJVeGx3MWFMYnBuSU1oakRIQ051Y0tjMkFXQXBzL1hTVUxRKzEwa2dxc0NuYldrWVl3UnR4Q1pCTERvREFHRmFweE1vUXRCcFYzejN2ZUQvdld0dE0rNmRQVGMrOTczM3ZPZWU1MzdnY0JrTWM0MUVMbTFOUXRRQkU4UFloak9QNFJLTnppYnk2L0R4Vkx2cjU4TVNxWExGNnltTE5C''@;'; put 'put ''ZnpLYXpralk4Yms4aG1NTUpwakhZVHpxWEVzNkdpMnpWU1hhZ0lnUHllQVZmR0tVK1FJcVBvS2dKdDVBRHBpSjlmZ1FzWXlDY2h1Y0p5T2xFeVVZeEoyZGpUdmlaK1BEOFRFTThCT2ZHM0RrVUwvZUxsVDIrdit0K0pFQlYzaHp3SkdqQTQvRSt3WVllVFkrSHJjbitKai9NSC8va3FEdjIrUFg0''@;'; put 'put ''bzN4UnVaMUxETTlnZG42SEtHb0podytUM2hNSlFLK1FFU1lUdVJ3TFZHRUdVUXhjenVUbFZwSkNGYmpaNXk1amdqTStIcjZkeEtDRnduQkh3akZRY0xqTmNMakdCRndpb2p3QmhIaERCSGhMSkhET1NLSDk0bGlWdTlEcmhZVGVTbVRNaFJMdVpTVEs2U0NQSXFWelhQdHlWVEplRDR6aVJEYmQ3''@;'; put 'put ''cGp0UjA3MjdHM0hRZk1JWXBRUXhUalJpS1ArVVFKbHVMN1hDR0pKTEpJSW9za1lDTWU0L3hHb2hpL3dpYk9md0svNWZ4bmlCSnNKM0xZUVJUaDkwUU9yVVFSbmlkeWVJRW93aTZpR0cxRU1YWVRlWFFRZWV3aDh0aEw1UEVuUXZCblFpdzdFWTRUSmZnbmtlWkZMUzlxZWZHV2wyQjVDWllYYjNu''@;'; put 'put ''eGxoY3ZJMlFFODNXbFhFbE9jaFM0YWpVek5JRTFybVp0cDdLbTA1bVpHY3pJVWl6RGQ3RWMzOE1LMW5JMTF1Q25lSkJaV01mb3R6T2k1MW5KRjFuQmc2emNNVmJzRFZicUxIZnl2cDJzTXI2M0lqbGYrb0NkdzMyeW5IRVBwcjdhcWJ1TjhYLzZVYXVOOE8rWkFVZmVKQzcwOCtUNVR6cFBjV2Y4''@;'; put 'put ''ci9nZjhTTTlKeTk3MHVJejhkWjQ2MGYvZFdlZnQyZVVKempSaEpnbUZGOGhIRzRqUEc0bkFoWVNFUlh4R09ja2FoQlRnNW9hRkMxRWhHMUVaSlVXcTdSWXBjVXFMVlpYUlJmaGNKcHc2Q1ljUGlBQ0xoR1JESkVock90UUdVb2VKc1BJU1VYRktpb3lXa1p6ZlVVVnJpQktNSVFZWkVvWFU3cWEw''@;'; put 'put ''bDFCNlY4aXNrcjNGaytVaVNkblNuY0ZwZmRvM0Z0VTNxTEtXVlNYbFo1cVBGWDNTOFRBdWs2aTlhWlpMVVNZS05kWm5EblRyelA5YWlIbVJNVmFpRHpSc21iaXp5cmFXUlp5TWxtdTVkdVRUNjhhUmppZjlicU5jUzFrSkkyTXBBbVBNNW9uOENTZVFqTWplb2FSYk9OcGJPTnVPN2pMdmR4ZEYy''@;'; put 'put ''dlF6WjFkNGc2RzhtMGorSmJSWEhHTTZWbFJhaDJsUFA0SjdYTE13L1cweE96cjJZazZvekhrazh6L0hsa3I2K1ZoYVpMTjBpeGJaWWZza3BkbGoreVhBM0pJanNnSk9TMXZ5N3Z5bmx4U3Iza3QwK0ZhcWVOMG9sYnJOSjJoTjJpTjF1bDhyZGM3OVc1ZHBNdDBwZDZ2YS9RaDNhQ1A2aWJkb2s5''@;'; put 'put ''cmk3WnFtKzdXdmZxS3ZxcXZhNmVlMUc1OVJ5L29SUWNYdVVHdTNJMTBZOXg0TjhsTmRsZTdtVzYydTlITmN3dmM3ZTVyN2g3M0hiZmNyWElQdUFmZHo5MHZYS1A3dFh2Uy9jNXRjeSs0bDF5SDIrZis2djdtRHJ2anJzdTk1Zjd0L3VzKzhPcUxmS212OEtQOFdEL0JWL21wL2hvL3k4L3h0ZjVt''@;'; put 'put ''ZjZ0ZjZML2g3L1gzK1JYK2g3N0JyL1hyL2NPK3lXLzJ6WDZyMytGMytaZjlIci9mSC9DSC9CRi93cC8yYi90My9YditVdkFoSDhyQzhGQVp4b1dKb1RwTUN6UENEYUVtMUlYNW9UN2NHZTRPaThLeXNETGNIOWFFaDhLRzhHallGTGFFcDBOTGFBMXRZWGZZRzE0SnI0YlhRMmM0R2JyRE8rRkN1''@;'; put 'put ''QmdoaXFKQlBCMnJkRHU1d1hpMmNhMXhVOEpZWjl4cW5qWEdqUm0reFhpSzhTeGpXNDExU3V6NnpHcVRsSitwY3BWeHRmSGNoTEhhZUtlMmt4dk1mMTBQNDVUeHhjeFR6Y1pWeHFYR3Q3aEY1QmJqVmYyem5zdkVXR3YrUG93N2pOdU4xL1d3M0pYR2J2WVM0LzNHalgwNXpjQUFPNmszbnFRZG44''@;'; put 'put ''VDZ5MTY1NnVpUDhWWGpuY2FyZTVoNSt6VDhmMVptYm50NFZXYlB2ZXhNVFJ2TWY1WDVzL1pzeStGdnpMNHJrL24wTGIxc0cwM3JtL1UzbVQwM3RXMU9xcG0wT21uVXFUNExkc0dmekdrMWU2ZGJlVm05QlkxMW1uMDBzUXMxVFhPU2Fqdk5UTmJmbUxFUG1kMWdOVHBxT2ovVm8wQnF0ZVB5aVVC''@;'; put 'put ''Zi94U3pMNmEyelVsVm5mV25KMmhXUmpQVm1jeW45ZzZ6RjJXcVlIblRTdk0zbXo5VldsWEdUck5hbXNsOFgvdTgyVCt5Nkc0eSsrOW1aMWV1amJjbEs4ZlBmYXhTMlRmT0xaenVqay9CdldjcVBtdjNVdkRlTlpGWlNXNm5ubDI3aWwwd3VXRkhtTUtiV0E3VGNBMTdXTks1UzltM3IyTlBUenIz''@;'; put 'put ''RUx1amxsdm5Ic3J2VmJYc1EzWEVNTnpFUGplY25lNVdmdmVwSnlxdGwzK0dYZThPZHEybHZMdU50ZHZiZEhiMHpWeHZDenZmWE90OVgyYjNhMmVIL0NNTzRGdTgwWjNGRCt4VzJZVHpFdkE0Ty9Gb3RGaFBiZU4rUmE2dzcyWVJKRjVoS216QVBlUzE3SFlsR01sM2pXZEVrM0UxZHoyYnU1eUhC''@;'; put 'put ''Unc5YU5ydE1qNXRiR2NHUnpKODFQakh4czhabjdDc2pUTzdCRi9rZSs3RnR5VW5SVklzZVNtUndWTGFkMGYvQTNJRm9iY0FBUUFBQUFvQUhBQWVBQUZFUmt4VUFBZ0FCQUFBQUFELy93QUFBQUFBQUhqYVkyQm04bVdLWUdCbFlHSHFBdElNRE40UW1qR09RWVRSRE1obllHZUFBeVFtQTBPb2Q3''@;'; put 'put ''Z2Znd09EZ3VvZlp1bi94Z3dNek9jWURSVVlHQ2FENUpoWW1kWURLUVVHSmdDOGlRb3JBQUFBZU5xMWsxbFFqbEVjeG4vL3QzMFJLaFQxOXZacDAwYWlGRVgycGNpK2xLelpzcS9aR3VzUVEwVlN5SjRrb3hrVFUxTzJHKzY0TldPTXZzK1ZXKzRNSGNkWFREUE11SEptM25QZWM4NmM1NXg1bnQ4''@;'; put 'put ''ZmNLSHJDMEYwajFUcW1Uam5ybEtzeHlXTXc0MkJsSENMT3U3U1NCUE50TkFtSGhJZ2d5Uk1Ca3VjSkVtcXBFdW1USlVjeVpOQ0taSVNJOVY0WmJ4M2lUS1BtNjNtRS9PTDVXNEZXc0ZXcUdXem9xeGhWcnAxMytZZitVMHBmWWZGalI3YWoybmptZmhLZnpIRkpyR1NLQ21TSmhtU0pkbVNLd1d5''@;'; put 'put ''UVRacjdaZkdXNjE5eUd3eDI4M1BsbUVGV0VGV2lGTjdxSlgyUzF0OVZDL1VjL1ZVdGF0VzlVZzFxNGVxU1RXcUJsV3Y2dFExVmF0cVZMV3FVcFdxUXBXcE02cFVuZWg4MDVuVm1mVDlrNlBjVWVESWQ4VFlCOXI5N0Q1Mkw3dWIzZWo0MnZHNTQvQ0hrSGZKWFY3OXArWnVlRHVUNEk5YkJLUDd6''@;'; put 'put ''L2lIUnRkSkYxeDFkdTU0NElrWDN2amdTeS84NkUwZit1SlBBSUgwb3o4RENDSllaenhJcHg2S1NaaE9KQndiZzRrZ2tpaWlpV0VJc2NRUlR3S0pER1VZU1F3bm1SR01KSVZVUnBGR09xTVpRd2Faak5YTVpER2VDVXhrRXBPWndsU21NWjBaWkpQRFRHYVJ5MnptTUpkNXpHY0JDMW5FWWsxYUh2''@;'; put 'put ''a3NwWUJsTEdlRmZ2OE9kcktiWWc1eG5OT1VVMFlGNXpsSEpWVlVjNUVhTG5HRnk5UnlsZXZjMUJUOVpQUTJEWnFsZTVxbW4yMFZxN1VkMFd6Z2JMYzM2MW1qKzEyYytPMVc0VjhjdkVBOW0xblpZMlV0bXlSR2oxdll6akhzT0NSYzh4a3BVYm9DSXJpamR4NmdhWllFWFEveDNXZUtuR0hFc28y''@;'; put 'put ''OWJHVWZlempBUVYxTCt6bkNVYjExbUZKT2NaTFh1cHA2c1U2OHhGdDgyQ2grbW4vUEg1RE5xdWg0Mm1OZ3dBTEtnVENESVlOcFBRTUQwMjRtVmdhRy95SE0wditObVhiLy84SjBqMG53LzVmL2ZpQStBT1lMRGdwNDJxMVdhWGZUUmhTVnZHVWpHMWxvVVV2SFRKeW0wY2lrRklJQkEwR0s3VUs2''@;'; put 'put ''T0ZzclFXbWxPRW4zQmJyUmZWL3dyM2x5Mm5Qb04zNWE3eHZaSm9HRW52YlVIL1R1ekxzemI1dDVZektVSUdQZHJ3UkNMTjAxaHBhWEtMZDZ6YWRURnMwRTRiWm9ydnVVS2tSLzlScTlScU1oTjZ4OG5veUFERTh1dGd6VDhFTFhJVk9SQ0xjZFNpbXhLZWhlblRMVDExb3pacjlYYVZRb1YvSHps''@;'; put 'put ''QzRFSzlmOXZNeGJUVjlRdlk2cGhjQVNWR0pVQ2dJUkoreG9rMll3MVI0Sm1tUDlIRFB2MVgwQmI1cVJvUDY2SDJKR3NLNmYwVHlqK2RBS2d5Q3d5TFNEUUpKUjk3ZUN3S0cwRXRnblU0amdXZGFyKzVTVkx1V2tpemdDTWtPSE1rckNMN0VaWnpkY3dScjIyRW84NEM5SWxRYWxaL05RZXFJcG1q''@;'; put 'put ''QVF6MlVMQ0hMWkQrdFd0Qkw0TXNnSGdoWldmZWdzRHExdDM2R3NvaDdQYmhtcEpGTTVES1Vya1hIcFJwVGEyQ2F6QVFPVW5YV29Sd2wyZGNCcjNNMFlHNEozb0lVd1lFcTRxRjN0VmEyZUFjT3J1TFA1YnU3NzFONWE5Q2U3bURaYzhCQjNLQ3BOR1hGZGRMNE1pM05Ld29LVEhTOVJIUmt0SmlZ''@;'; put 'put ''R0RsaE9VMWhsV1BkRDI3M29rTklCdFFiNjB5aTJKZlBCYk42aFFSV25VaFhhakJZZEdsSWdDa0dIdkt1OEhFQzZBUTN5YUFXalFZd2NHc1kySXpvbEFobG93QzROZWFGb2hvS0drRFNIUnRUU21oOW5OaGVES1JyY2tyY2RHbFZMeS83U2FqSnA1VEUvcHVjUHE5Z1k5dGI5ZUhnWUJZeGNHcmI1''@;'; put 'put ''ek9Ja3UvRWgvZ3ppUStZa0twRXUxUDJZazRkbzNTYnF5MlpuOHhMTE90aEs5THdFVjRGbkFrUlNnLzgxek80dDFRRUZqQTFqVENKYkhoa1hXNlpwNmxxTktTTTJVcFUxbjRhbEt5bzBnTVBYRDhPaEswS1kvM04wMURTR0ROZHRodkhobkUxM2JPczQwalNPMk1ac2h5WlViTEtjUko1WkhsRnht''@;'; put 'put ''dVZqS3M2d2ZGekZXWlpIVlp4amFhbTRoK1VUS3U1bCthU0srMWcrbzJRbjc1UUxrV0VwaW1UZTRBdmkwT3d1NVdSWGVUTlIycnVVMDEzbHJVUjVUQmswYVArSCtKNUNmTWZnbDBCOExQT0lqK1Z4eE1kU0lqNldVNGlQWlFIeHNaeEdmQ3lmUm53c1p4QWZTNlZFV1I5VFI4SHNhQ2c4ZHNIVHBj''@;'; put 'put ''VFZVM3hXaTRvY214emN3aE80QURWeFFCVmxWSkxjRVIvSnNEajZ1VzVwelVrNk1SdG56WW1LajBiR0FUNjdPek1QcTA4cWNWcjcreHg0WnVWaEk3aWQreHJuZVdQeUQ0Ti9peGRsS1Q1cFRuQndwNUFBZUx5L3c3Z1ZVY21oMDZwNHBPelEvRDlSY1lJYm9KOUJUWXpKZ2lpS0d0OTg1UEpLczFt''@;'; put 'put ''VE5iUUtIMDhFT2l2YXdieHBUb3dqcFNXMHFFa2FBUzJEcmxuUU5Pcno3SzFtVVFwUmJtSy9zM3Nwb3Bqc1JSbk1nQ2tvNUtheHNPenZwRVJhV0R1cDZmVFJ3T1ZHMm91ZUxEVmJWbkdGdlFmdlk4ak5MSGszVWw2NEtTbnRSWnRRcDd6SUFnNjVrVDI0Sm9KYmFPK3lpbUpLV0tnaVBnaHRCZnZ0''@;'; put 'put ''WTBRbUxUT0RMb0VpWkhHeXNnL3RpaDA1b29KMkF0OTYwaXJ2MjBMdHozWHlJRENiblc3blFaYVJvdk5kRmZWcWZWWFcyQ2hYcjl4Tkh3ZlR6ckN4NWhkRkdVOHVlOStlRk94WHB3UzVBa1pYZHIvdVNmSDJPOWJ0U2trKzJ4ZDJlZUoxU2hYeVg0QUhRKzZVOXlJYVJaR3pXS1VSejY5YmVESkZP''@;'; put 'put ''U2pHUlhNY0YvVFNIdTJLVmQralhkaDM3YU5XWEZaVXNoOWwwRlYwMW03Q056NWZDT3BBS2dwYXBDSldlRHBrUHB1ZG12Q3hsTGdzUmR5elpOZEY5QjA4SVIzaXZ6akV0Zi9yM0hJVTNLTEtFbDFvMXduSkIyMGZLK2l0SmJ1VGh5cEdaKzI4YkdlaUhVazM2QnFDbmtndU9QNWU0QzZQRmVrVTd2''@;'; put 'put ''UHpCOHhmd1hibStCaWRCcjZxNkF6RUV1ZXRnZ1NMS3Q3U1RxWmVVSHlFYVFud1JkVkNzd0o0Q2NCazhMSnFtWHFtRHFCbmxwbFRBVmhoRG9OVjVqQllZdzZEZGJXRHJuY1o2QlVnVTZOWDFZNlp6UGxBeVZ6QVBKUFJOZVpwZEoxNUdyM0dQSTF1c0UwUDRIVzJ5ZUFOdHNrZ1pKc01JdVpVQVRh''@;'; put 'put ''WXc2REJIQWFiekdHd3BmMXlnYmExWDR6ZTFINHhla3Y3eGVodDdSZWpkN1Jmak43VmZqRjZUL3ZGNkgzaytGeTNnQi9vRVYwRS9EQ0Jsd0EvNHFUcjBRSkdOL0dNdGptM0VzaWNqelhIYkhNK3dlTHozVjAvMVNPOTRyTUU4b3JQRThqMDI5aW5UZmdpZ1V6NE1vRk0rQXJjY25lL3IvVkkwNzlK''@;'; put 'put ''SU5PL1RTRFR2OFBLTnVIN0JETGhod1F5NFVkd0wzVDMrMG1QTlAzbkJETDlsd1F5L1Zlc2JCTitTeUFUZms4Z0UrNm9uYjVNcXZObjFiV3BkNHZTVS9YYm5YZlkrUnRsTTdvc0FBQUFBUUFCLy84QUQzamF0WDBKZEZ6RmxXaFZ2ZTczZWxPcjk1YlUybHE5U2QydDF0SnF0ZlorV216dHEyMWsy''@;'; put 'put ''UmF5c0MzSjJHQmJack94TWVDUUJRSWhKTTVrZzRTUVl6SWhZSlpBSUNReldTWWh6b0ovZnVZUEp3bVRTZUNmSkgreVRENGhrOG1BbnY2dHF2ZGFyYzA0ODgvWVVxdjd2VnYxcXU1K2I5MnFSaVkwdlp6RUh4ZDhTRUQ1eUkwS1VRQlZvUlJxUnUyb0R4WEtucTZPdHBaMFl6SWFDWllWRlhqc05x''@;'; put 'put ''T09JRk50VE8rMyt5VjMwaDF3SjFPQlZESWxzYjhTdk5XdTBtdjBMNzBEVjFMYWV4V0dOVWduVS9qanlqZHgreHVkWGVlN3VzNmY3NnJ3Kzd1NnV2WjMrZTg2djcvQ3Y5OS8vdng1Ly83OWQyM2RlbjV1YS9rUGhGOTMrME4rK0xsam9XTHIxdUFzdk52cWIrdXEySCt5eVZzemR1elk0OGVPamRY''@;'; put 'put ''TSsydjg4SU1RUVZ1WDMwU3Zrd3RzYmlHNUFtR01waEZDMWtGRWlEQ2p3NExnRllaME9sMit6aHF5Mi9TU04rWk1DZ0ZQT05YUW1LejN1RjFpWVBTK2t1MkdSS0tpTEZGZFRpNG85YityOFpjbEVtWCtHb1NXbDFFblBvY2ZKaGRzRmNpRWtFMkExMWNSZlc0RnZOd096L1doTXRRdmI4MFhDZElM''@;'; put 'put ''QkJPRUQ1aXgwV2dkdE5yeUJFa3lURnRNeEdDd0Qrb3dJZmxrQ0tHeTBwSmlhT1VyS2l6d3d2T2Q5dXcvcVNTR3BhUVVrQUpwOXB0T3N0K2t4SDRsZXBPUStFSHZRblE2ZWlaNmRYUy9aMzk4empNUDc4N0FsWG5QdDg3RXorREhIOThGQ0QyLzYvRmRuNE4vdXg1SGdKbXk1ZWRJTC9rektrRkJG''@;'; put 'put ''RU1KT1JhTCtzdUxDcjBlbDkxc01raFdSUENBSGlQY0QvUENCTS9DQkwxb3FOUnVGd0JkUVJHSW5BcEgwaDV2S29FQmJXbWd0Y2NyaFNQdVV1eEdjTldLM1k3R1ZBTmNJTDBuRHUxKzk3NitnY241K2NVOXUyKzR1cWRuNE5oeDVWZzRHb3kvMmxqVGRHUlJrcnR0dTZlNm5kLzA3WmdZWHpTM2Qx''@;'; put 'put ''akc5N1RhdmxLMDh5cnNET2FmTjlhVUtrZnJLL3dSMjlOSWo2cVcvMTJ3a21lQnNrN0FjZzFxUmQ4ZGZMSmdiS2NjTTJPOUNXTlJqK2VSaUF4RzBiQ0FkRG8wUXpDbGZCN2dYNWl4U0VRUThvVWgzK0NURVdoU2M5a21DRUJaTzJuR2dpWEpLdzM1NU9RR0xRZ0JXTm9NYmR4cWFrb08xOWFXbDd0''@;'; put 'put ''Y0NOVzIxclkwTnBUWGxDY3F3NjR5VjJsUmdkTmh0OEZrckdHcjVJNDVLREk3Y0xJZXNPaXk0Z0JPNGdCRFk2QkNkTHM4U2JUbWZnZGV1ZmVwb1doMHVMWnVPQm9icXNQdjM2T0U5aXdtRW9GZ2RTS0E1NFppY0xGdWlONEtKbW9DQVhweEtqRmFXemVXU0l6QmF6VythbWtjZnpZZGl6ZWxxMk5w''@;'; put 'put ''WlNJeFdsYzdWbFBESUFiVDhWZ1R2WVVvMy9pWC8wamVSYjZFeWxFY05hSU91YlUyRVM0cktTNHFNQmtGVWc2OExwQUJ5dGQ0QnNUT002Z0hZV09ZQWVhcHJ2YjdxeHVyVS82NFB4YXZFQ1ZQVEI4UkF4V2NnWEpuQnJlOGpXbXZLSGtSblpxWFQ5T1JEa2VBcldDcXBIaGthckZ6dnFWdnRMaWdi''@;'; put 'put ''cktoWVh2TjBMYjZ2cXFTNmJyRTljb25FcDdDdHBwb21Ta3oyUk9MOWRUbGpZL1ZUclYzVHdjck84T0prVVQxY0UzellMaDFxSDBndms4K1RscmlnY0xhMG9KNG9LSjY2UytwM1dNRnpjRzZGb1F3bFhIMExaQmxDM0xLTnFwQkdIbnhrRHRJWU9DT0ZWMGhCYTV5UjN5K0NQQTdmdlZ3MEZkWjZR''@;'; put 'put ''c2U3a1cwajhibHEvQVkrUXJLUStJemVYcGNHMk1xSnUxbHMvQktuMXRjUEpnWkh4NGV6K3o2K2Rtei96TGV0ZTNDa1NOUGJPdG1iY1BRVnRiYVN0Q1dZeUdTNWdnS1R3d1BUMlFPUWcvejI1NDRjdVRDdHE0eDZPUG5ZNnh0QXUvSCs4amZvWG1VbGh0bWhucWFxZ0NYTUljQkFXTWRSaURXOHlM''@;'; put 'put ''VzY4a004SzVIRC9vSElPZW1KdVdPdXBxQVB5WlJSb1NCcGh2VG9nVC9BeFhoQ1AvWUNCVGc3eW1sdkI1dktmYXl6eG9xUktrUmJxWHBSeSs3WU1VU0pTYUZkTHZnVTZBQ09ramdDTDhnQmw1MG1VV1NWeEJ3NlkxR20wNXZMWWlXVzYybDFWNnJYbWMzaUFadmhXUTNFOUhzeXJPNlRGZ1U3QzRo''@;'; put 'put ''NE9DZ0JzbGVyUzl3dXdwcVhaSWhCMW9Rc1FsRVk3L0Q0a3VVNWhzOWZyUE9hRFNZSElhOFBKTW9tdktzQm9kWk1waDAxbkxSWnNndlRmZ3NEb2ZGVmFzcmRPYzVoRElUQlRZYThuV21mQ0lhamFMTm9yTWFEQ1lOM2wyb3EzVlpIQlRISFdpV0ZKSTJaRVpoT1lCMEF0YnRBRjRIellFRmRBRFVB''@;'; put 'put ''WjVHZ090aHBzUnRvbFFVd3dGcURWUFVLaVpKNFpldSt4TDg0S0lYWGxqNDhwZHBmNW5sUmZRTDlFRmtSVjRaeG85Nk5aNER3UWs2S00rQlNGVGs0SG84WVNtclRwU0hFOVhKYXhPMU5lWGxpZmJheXUyTnRLODY5TSs0QS9lQnRCYklia1E3MmtINUFrYUVZRVEyMnBuVDcvYlg0VHpsajdqdkVP''@;'; put 'put ''T1pkckNaUDRIbm02bjFwMWRBQzJMc3haUTd6TWdVRklBcmNpM2tJZFU2V3JLV0VTLy9adms1L0IzeUszaXVYYmJTVHMvQ3MyL2dENlNxREc4NXE1dy9TMzcxOWlYRTdHWGQ4cHZrSHZJaXFMOHlGSmVyZ0J2WmpMbld3R0NvMlFCc05qQ3laYmJTQWcvVGsyQjZZcnExZXBDa0doTEFYRlN3U3VG''@;'; put 'put ''SmhydUhoKytlbkh6ZjBORDdKdXRINC9IUit2cXhlSHlzM3JMN00vUHpEKy9lL2ZEOC9HZDJMM1pjdjNYcjllM3Q5TFdENFlBU05nMHlMeUtmWEFDa0ZBQmZBMXlyWTV5UGgreE9oam9wa2s3YUF5L2VsUHo2L2xPa2JIRG4yYVZ4eE5ySFlWSmhtRThCaXNvUnN3bW1BOXhBeUFCREoxT0gxQUda''@;'; put 'put ''UnN3RzJiM0JzRTRxaUdXd3BzV2xTS09xLy9JeGtLZDZTVzdjVXB2Y1Zqays5MkRQZFpuK3lmdHhXcEhtdnB2Y0hxdHBxYXNkZkhmak5SMWJidTYrWVpFOXV4UndHWVZuVjZHTTNGWllBTStwd0pqQTAyRUlBOVNHZzBFL0FFL1d6UUJ6d2tBUTBzOVFKZUJsOGwrRktvTkJmekFrU1lWQVphcGtr''@;'; put 'put ''dlhNN2tpcHBLZHg3ZkFrRmUzL2VIZDhLTFEzM2Q0MzJEODgzTkhYMTFRM0hoclkrOG0rNjl2N1d0cTN5emNNV1RLcGlhcEVVM1dpQmgvR2RmRm9LbDQxZEtKMlIyUGJoTjI2dmJOMWR3UG5nMUo0MlFsNE40RzJxNWFqRnZBMzhJQ29oemxnQkg3bkhLQ09tZGg4M1pEWmJNNHo1NEZNT1d4MHJD''@;'; put 'put ''Ri9CQ2Z0MVBNTUZHSUJuMVlldCtDdDUyWm1UdjNrM0N4K1FSay9kQTVJR0ZGK3pPa1RBeHcxd0hPS0tZNGNvQXZ6TEVTQXpyRWVBWTUwQUtFRHV5NElaSm9iOWRVNEFnK3R3dTRNQmhpT3dQVlJNVlFoUmFnd1NZMVpicnovd01EVTNvN0JvZmFSamgwbS9MenlWUkhlTGJSMzNUSml1WFpxY2t0''@;'; put 'put ''RFNxNE40dXNXbjRvbXIrbmVlbTBMeDBFdGpHMEE2T2RERWRRbmI3RUJEdXpBUEFWWUo0U3dYcWNiRUVHeDZQU0NiaDVsamFzRVk5TjBSSEV4akRCU0hBNzRvWXVpWUNoc0FEOE5xU09pZW9PcGJJbExpUVFmSEZtMjh5VHhJd2M3dW03c3YvZmU0WHQySHQvVkh1aU8xUTRsZE9WWE54ZzcvS010''@;'; put 'put ''ZFlQNUJUZmlMelhzNitvKzFQYVZUeDU4ZEdaNHBxeXNlYUU3VktVOFd0RmNudTVNeGo5TThadUVpUVNZL0pUSnhXQm9NSk1lcW5jdzg3M0Ixd1Z2aHpxUTJKL3l1MEVoUEtBOGpQK2cvTzk3U2Z2aTFVc1hxSDhSQlR4MHFuaElvUjY1MHlVUzBLNERVczcwVlMxaGdPbGpJQkRURXBXVkZBT1Zx''@;'; put 'put ''Y3FHbW1xS2g0cHlpb2U0a2FxdGpUd01GVE01M3BXWHZnZmJaQ1hVeC9qWGsxdUhNODJkV3hhN3VvLzNkRFhKUTcwbkIrdEcraHNiKzBacTI4ZGpYUkN3eE1iYkxUVlRyVzFUM29MUnB1YnQ4ZXJ0VGMyajNnSzRzck1HUDlRWXJVdzNWc1VhQk9WU1U3eTBwb2lRb3BwUzZrUVJWQTl6SEZxaGRT''@;'; put 'put ''blFGK2l0TjRMQUdnQnJPcGlzSHNSVlQrYUI2UVdZb1NCNEJuUHNnVVpyZnhtZFl5Z1lZclQyY0ZKejRRVXJURCtvYzNhQTVlYmFFV2o5OSt1b0xEUHFOMU15VjFLQ2t4ZFhVNWxUWG5rRXlNeklUZWZBN0FXeGdHM3dVdDFOZFRVYlhpRVBzdlE4eUxKWUVMSjRMUjZIalJrUlVYVXROQ05DTmpB''@;'; put 'put ''b0ZlcGZmRVN6TE1wZDJqdUl2WmlkSkJhSXZmSVJza3ZJRG9pNkZSbWZ3dmg1Zk91VHlSamx3elRhVGtTeUcvaFFmRVlrNERzNVV5RjNIbmFuOFNYbGIvQkJISm45MGR5REQ4NHp1ZXRBajVGQy9DZmdQQWwxREQ1WkJtR0JBMUV2VnBqVjRrWTdCcysvZ0hJeWplUVFoQkJraDZySWlUQTg5Unkx''@;'; put 'put ''OEZTVFV6VkEvM2ZnbnlvaDl2dW5oWk1MTUo0K0dJOVhHNDhBNDBsWDQ1VGVyZS9EQjJFOGw1UzZGeDk4Y081SHN6K2k0M0V1djRsZkFkNXdJejlxbDFzMG5uQUMrd3RVbWdRZEVnN0F5TGp6UnJWaVZrZDVQQjYvcHp6a0RRYVpiblNxQWk1RlZyamV2U3JLZldKb2IwZjljR2QvOVEyOW5mdlQ4''@;'; put 'put ''K1BIdkJydTc5WTFWNFliK3dhU3JmVTdHN3V2Yyt6NVB5c0JNRUh4NWZjTFc4Z2pTRVlqNkpMczlwZVhDUWFoR3hzTkRxd3p0cmNSRVZpWVIxalZFUGZxc0hFUzFEaEVUVlM3aWlicUV1NURxdVlDdldBd0NET2dkTzBHR3BaVjBVZ09pR0V3Q29iNWQyeXNCOExVVVRVdElQMzg1cTBrU1p4RW9p''@;'; put 'put ''ak5zT2FqRUpBVmRBSVRkNDUwRHZkdGhWbGt3dUZZS0JnT1d5VGZPdGVpZ2dZZFdRWHE4ZEt3aEF0U1BjVnZqdGRSenp4NzBDZ1ozTEFpYlowWDVoYS9kblQrQy91YmQ5WFZ0bHVLUnhLRDA1MEhXMnE2blpaNWE1N1pXdTRyYnFpWStzVDAzQmZtOWp3NDAzWWc1V28rMXUzdkYzRWlGcEhERGRF''@;'; put 'put ''YkRueGg3c2pYanUxOWVIcjhXRk1zRW83dEcrcyszbDNsYnpQMGRUU08yb3JMS3JlMzcvakE5cmtuRHV6NXhKNlM4cEtnSDNzbk1yWllmYXkzcXJxUjJ4WW52THdLZWxrQ0N4dVRLNDFZeDRKN0hYQzBEcXdydFhVUUdWQVB4OENjWGU2eUZvQjFsVmdJR2pGalVxcDhzZUVlWEFZL2Q4K2VPSEhx''@;'; put 'put ''Rkxtd05QNXI3RmYrQmRBT1VRZDVIL1NmRDU0UDQxclFYL0FFRWVSRnJ5TjY2bmFvQ1JnSmM4K1lQcXVvMEc0ckx5MzBGL205Ymx1QnZTQldibUNPS2NPOHBwLzltRm5aR0hZN3RUZGplTHgxVDhOc1cxZlQvb3p5R1p4TXRMWW12blF4MmRtWnZFZ3V4RWZyOWplVTdHNXEzRkdMUDFJWEN0Yzly''@;'; put 'put ''dnhUT2haTC93UFZDOVdnZHo4R3NsV0NHdVE2Q09OUm9SbHNhUkdZV1JBdFZYOTVWaVdKNEVJSktnNkh3alJKbEdVTmoyWkhjK21PRzgvdjIzZCs3OEM3azFQbFUzVWRoMlg1Y0VmZGxIOW4vWHNHTExPZm5abDVaTGExWVZzbzFuVkU3anpTRlExUHBGb1piU2p1dnNWOEh6ZUxKTEtvWWtHMGlp''@;'; put 'put ''cUwyZVV3dXkzdWNMbWVva2hqemhnT3FVd1l3L2F4TjQ0K3VXL2ZrMGZmUU10OVJ6T1pvMzEza2dzN1A3bHYzNE03ajdVZTdPNWVhRldTRkFjUW1ZTHR1UURxdUVhT2F6cU5LaERkTk9nU2E2Nkh5angvTTA5RFVYM2lWdldiM2UvK0I3eFBlUkMvZCtrdG9pZnQ1eGVmV1NRWEZybVBwZlZ2UkZW''@;'; put 'put ''eVdPc2ZlRTNIZXRYY0FMaGhSRWJhTStVejFyTTlvUFY3bW5iNnhLTHlPdStVMCsxdmdXNSsxQ28zMllCY2R2RE55N0FPbUF3NnBscFJyME9NelZhMEluT1J3Qzl3QXZFQ1BBRHoyM05NNG5vaXBnTDRYVGhVZDI1dzl0RjkreDZkSGZwdzNWVDVnV1RtT2xtK0xoTVpLMzhNbjFUK05kbk9TZG1X''@;'; put 'put ''ekpLeXlIdGFtL2RIR1Y0amNsRDFKUStBRDB2blRQTkorV2d0UGpHZE1md200WlY4OUxUeXQ2ZFA0MGtxVmppay9KUmNVSDZOQzZDWGZtajFMWmJMcEhtSW5GaUVoM0VRaVBSellRUllPOWlPZndKWUcrVWs1dnJqQWU1N3dlQm1CR0FvTDBPOURlVTdRenBvdnVMcXd5aW91RDE1dW1LN295K1M3''@;'; put 'put ''RHpWdXRCbGtlc25nalg5TGZnbHBhN25jQnVuN3loMGRaN05zMXd1TVJyMEJCeDBQSUJaeGt6ZytVeW53OEh0WWRLT2swWWNnTkF4TUhvYVYzOU0rUjJPZlB6MTZkTXd1U2Z4bVBKRDVYWmN1ZjhmZUwvVXFTaUZmdlhVZDJTRHByMmhxNUdHT2ozUzIrMTAwQ0hnbGFRZEZGTGcxQ0x3M2RJM1dY''@;'; put 'put ''dVFJOEc2TWk1cGczRzU3TnE0ZkJBMEJPeG1vTURZNmRkZVAzWHE5ZGZvbUtieEk0RDg3OUcvU2tydGszeVI4WEtwN0pNSVdkZWpJOXNqaGlFRldILzQwS2xUeWpuYVh3bCtIZnA3WFNtaGNrNTVXUG52aUhXNTJ0bDcvcHByenUvdE9KVEpIT3JndWtkVk9yT1B6TXg4ZG5heDYwaW5mS1NMY3l6''@;'; put 'put ''VE81UmZqN1A4bHB0R3F6QUtFRlVCMDlURlNySWNwbWpOY3pueTNGYTNQVnd1MGtTNVA2dDczSUdzYnU3RnNmNGJ1N3R2N0gvaU5DN3BIQjN0L0RTNTBMTFExYlhROGl1OHE3MmhvZjAxbElzREYvWHQ1WHFhN0NaNmdlaDFvUFFFQ0pPemdZMHVKMnZvZHJzajduQjFPRUpWTU5oeXJ4VEpGV01Z''@;'; put 'put ''alM0ZFNYc2JWMkdGS01HS0xWMEROVWZiOW1yb1VYN1dNdFcxSjVERkR5NjdOdDQyTEFjcnMzaDZvMnBrZUt5MWV6MmVUZ0NlckRDV3BGeWJSK1dheG9yVWRCNEFSMFNORlVXQk1MR0VJYnZ0UURwazlWTXA5OGI4RVloTjdYN1YvL0txY1hVTTQ5OTg1cTdUREcyN2hyNmdESDZhWWUxWHYySjRH''@;'; put 'put ''MTRzZUpQampjdEcyZktmU0MvNUNxcEVkWExDQzVGaEFWZ3NSSEl4UmozREhLTlZpU0toNmlERkdCVnhIcXBDYUpNZ3EzUWZpM3BVdHZyOXVaYSsrVnZiZS95ZDdXTnpyWmxqdlNPM04vWlVIMGdtTy90MjNueEwrNDFqNXViR3FlbUdTSEdnME9xc0h1NW9uV21zcTlrVGlhWkNsVlV1MzlSa3gw''@;'; put 'put ''eUtqVFdveHZLU21rUEpobjg4NmFHNnlqZ0E4VjhBSkFhOVNocGVQUVhoMzZJcXgvM0FJNDlDZS9CLzVWSTFFWTl4N3R6Y3lPVUt1alNEVEJVWEQzZzBIWWI5ZDQrY1Rvd25HOFlUcDRidjNta1p1V2NudmxzNTJiU3J2bjVYRTM2M2N0UE9lMFk0WGwwdzFuOW04U284UzgvaVZkQ2Fxc0xrV2dk''@;'; put 'put ''Y2RxNTFqRFFiNzhQa241VmYzS1A4NHU2Zi9JVHFYUGo5TXpHeXZnb1IwcFV5ZVlLK1RGVHZnN0tnYXovTWxMUEpnN1p3MlBUVWtsSUZCRDlDd0l3RGhlLzcwQ1B2L2N5SDN2ZmowMTk0SEJTNTRzSy9wYitnT1JTRjhIRkM3RUUrejNRYjZFYWpDRjBUbXN1bGZJZTVhWEU0SEhhS1Z4aGxCSHcy''@;'; put 'put ''SWVsTkovRmphUG5Eeno3M0liUzhmTzdaNXg3QU81WFB2ZmttbnNRNzMzd1QralNvZXR5QVN1UWlrY3BmVnJtcGticURMZlVZMlVoQnMrRUM1UThmK3VyWDdsUCs3eG5nd01lVml6aXRiRk1VTGU2ZjFtdyt4ZU5LMmlzYisyZlRYZzQ3RzJtYXB3REE4Q2Z4cmNyN1FaMi9HNTlaK3FjWi9MUEZH''@;'; put 'put ''YVdDMi8yQjVWdnhDUGsrajh3OEcwUm10aXVQek1ET3V2MERXUGZ3dzhyYjVQdmJsblpzWTdoZC92Zmw1L0NQTnNsWkN1RDdtczdpWFR4bFNmMlFXM0hkNnZIUWxBVWJEOU1ENm5pMGJCdDE1bWptbFk0SDVZN0hDOFlpQlg1VTljTVBZNTN5ZGoxNWJOdmJGeml0YS9DRCtNdWNKNThTOS9mSUhy''@;'; put 'put ''QU1MQXNKSTZNWjJSdlVETXBUSXVweEpwMlUzQmNuUDc3NzBLRmR3RHUvLytZMzZaeVU1VU5rWXZsRmVHZzU2Mk9USEREdFFnSUNFTEo5NlF0Ynh2anpNeVNEdytRVmFPdGxiUzJZeHE4STNlREFZSXpZVTlQZVFHYnh4aDNrNjU2UDh2Z2lBakpMaUozbE0yNlh2WVZZMEJXQU1YRkFGRkJXU2tR''@;'; put 'put ''OXNJU29oNGpRQlNnckIzaTlTR2k0SnVobWFEeFFPR2pBb29obVZGYjJnZnUwSG9RS0pJUFQvTG9wMmEybFFYaXFKeGdPT0kyQVcrUnhBM0p6VFlSWERZTWJhUjRrcGEyWDRidHZ1Ymw0S3BIZVdkKzh0Nld2djcycll5UjYvVjdycUtsbFMwSnVqaFA3emZ1VWl4MkJTTlZnWGYxSXZOaGEzeFBa''@;'; put 'put ''MGFpMEpTSXRycHBnTUs2dU01TlpzR2NPVklwK3hLZG55c2M2d1lTUm5nejR0QStBaG9FcGZydUVNc2xnTnF0VHFLYnc2TlRCMVBrNFYvblhBbEdQYjFXeVR3MlUvZHJhNCthQUFKTnpXNHNvVnNGTVFUenNja0tNNkN4MWxoUjZZVFoydTNOTitqQkM1Y2ZPTWtrcks0NzQrY1B0N1lkN212ZVVu''@;'; put 'put ''VHhadHFlNWZQdjJUbmxpUWliMkxiZU9qSnphVWxjOVFWNVUvcU82VGhtOHVyOS9lcnEvLzJyZ3IwckFtUjU0NVhJeFdPSG1NWmpuc2pIWUg4OE1EZDArMEh3Z1BPSHVLSS8yUmVISG4vRk1ST2JhTEFPbisvcE9EVlJIK2dxS3E0ZmoxY1BWSllXOVZRbk92M0VZMDFhVmpsK1RUWGFJandWR1Fw''@;'; put 'put ''Vm9GSHVNSUN5OHlDVmEvZ3JSMWdJeGpwVllpcEp6ckVZMENtaTlMQ0FqbW5xWFFqTmR0eHBtUGRFYzRZQ2RFZzJ2NFg2UDEwNXlpRWEyQXEyYWVoamxtdmFVVFFEQk9vRnc1TVdsTFdQeDJpMm5Sa1p1M1ZJYngrTFN3MW1pWldVOEJuVHpBREZrdVoxUWdtSG10ZWxBNytySWdlem8xREdyM09Y''@;'; put 'put ''MXdwOFNiM0ZSSVRSMVF6Ukd4eGprNU1wMTR2elVheE1sUHhBVjd4enlEUHR2YVI2NHRYL3JMZjJqaTIzS1NmTnd1bUU0RDl2TTNhbTlwWjZ4UVBYV1V5TkR0MjRkdW5lbXNSdHZhVXNtMjZqdUFrY2JMNUQvQVk4OUk1dHNXTlJEbkNoU0tsSUNGU05SMU0rQXgxYkFraDFvV2dmMHM2dkd6c2Ry''@;'; put 'put ''Q0xJd25vMWc1Q0lJUWtSUVRmUHJid0k1VEtFQVcreVRKQjlZZU9yZDJPbHlIOHUyYWY3V3Y5eDQ0ODJEZ3hOeVNhc25ZUFRsZTBxSS9vQ3lGMy82UUdQbmRvOXp4R2lxS0FKY1I1ZTNrdzdBZFJtS29ZOXdIblNVWXIxZ3cwUmNTUkw3MkVYZDZvdXFuaWtIVlFrbVNDVHpNQmxoUmdLRzV1cUJr''@;'; put 'put ''Y1hKdEd3V2hHcFltQWNGUkd2QVFNdVdseU5VSGl1UGhvTXduckp3S0JTa1doYmJWY1hBNDhkMnZKcmxVcXRZcmdNVVF1ZU5sZFcrcXhKRHU4cDJwN3NPdGJVZDZrcGZYVHcyTnRiUlBqYmFRZlJLZmRkOFM3aHNxckNrcDdVN21zZ2M3ZTA5MmxGYk5heThiNnlqWTNTMG8yTU02QXNlT1NsaDhj''@;'; put 'put ''UFJaKzEwS1ZzbHJSY3gwWU1yTTNwbUxVaFdOS3ZVMjlhTmJzT2RsWXNzODZMZUFXcm1BUUpjeUdsM0JsdzBSVUZWSVJDVXo0a0c3VzZZS0Q0M1dYZFRlMjNEd01tVEJWY2xpVDI1dTBYNUVxNUxkWGNsbEpkQW9zTFZYSFpvcHVmYjVHZmd2K1dqclh6SW5tekN2SUJ5a0YzMWozMHkrS1J3Q3p5''@;'; put 'put ''SStaekxVOVExeWJmbVdWZ1dYYjhtaXk2Qk43Ry9xcXFrdUtxcXVPUGtTYkl0V2t6ZkZrZEhsdDZpejEvK3p2S0krbndmMmsrdEVoR3NvT095a3FIUEdZc2dNSmJXN1JVQkt6NGQ0M29FQUFKaVMyT3JiNElPWWhsK242WEk2M0hhMmVpa2RUbiszQnlEbUIzcFlxTTkzK1MzZWtwT2J1dGFHZkxi''@;'; put 'put ''YjVrTjB6cXhvb2k0bDE3cjJiR1NHNGdCM2MxbzVrdEdGaXhxbExkelUwbkhoVmZSM001TlkrNE5vRFlFM2RQczQ2bzdVMVBQT2V4TzVwVmk2bEF4V3dmKzgxVXYzL2RBLzhtVFA3OGZseXF2dlR4OEIxaXpIWCtpNDZFVkdsOGwxTDlxNDhNd1UxOVVUY3lvQXpEbjVHcDg3Sk9Xekp1YSt1Sks4''@;'; put 'put ''cVliNkFXcWw4OFQrRnZZQVhJZlFGYzlWMTVFc0I2ckZzaERGWTUreGlDSmdsNXZIOVRSbFdVMkpkQkk4Sm5lRmVFdUVjWEM3TTBwbGk0S29Jb0E4REJ3c1JIVTBsb3VYczNPOWJUU0prbCtNRmwzYzFPOFBuTnpVM1dkZlBLa2E2aTJjYkxBdWF0RjQrOVVzck85UnZtbTlwZm90NGJqRFlucUZK''@;'; put 'put ''OURONU5STzhqT09MV2tXTENBWHRJc3FaT0ZjbnFxamV5NVVzajRhcDE4WGxZSXBUVkNXTnNyVWltc3o1SENwcWp5QXRGdkNURmZqZm9kRXpDdU5mbVh3bmZNdjNndW4zK2hMc2VaZ1FIMkd1Mkx4Y0RwNkkvRitxT3F3ekZ3cXEvdjlNQUMrQnZ4NFdydWVIQ2RzQlYwL0N5TWgvb2NoNW1uU0V5''@;'; put 'put ''NVBnZnpBRVNCK3RVNTNockZrcE43Q0V3N3JIVWtjMkN1MEtsei83Vk9uVUtlbWxqbDAxSC9hVHY0VDN3dVoxUS9tRHRSbVB2QjhFRVFWdnZCMmVrVjV2ZzFnNXB4WWs2U2ZZM0x0UXJteXQyZjFKVzRQL3FsMGJkWDNKOHhaWExGKzhGb0s3eWNJRlM5ZFQ1clpzVUpmQloyWmluQkRlSWVLL01S''@;'; put 'put ''M0JvenIzaXkxRDE0RGhRTTB6Q094cVJiazdrZnoyYTJ6WjA4aWY5WDI4S3VBZVV0b3QvUFphaDgrVTM4QTNoZUpmV1JQZkJBTDBUbjRDV3pKVUExNVZPNFVjb252aWJsRTk0ZzQxT0t2YVdFS3VadjM1SkliOXNWU3RTbE04UHh1cW5taHJsNE1qaGM0WSs1b3ZHbWdlVFIzWmFxMEk2MmtnS2ZM''@;'; put 'put ''OThXYkk3WERsVDVTNmE4QllWdW05dVdsMStScVIrWW9qNFhqSFdCZkFoOHJobzU3c1VpVFRtRGEzaVcyaFF5VFJjeEFCc1EzdTNsN2lCemtad1YxRWNLOFhVMXUxb1RCY3hJRjlVYTAzakIwMW9pVHd3TzNuempqU1dlZkoreHhPblozb205Qis2Nzc0RHlIMFVWSmlPekNTRFBQcUxuZXNhWjlV''@;'; put 'put ''WlZQUU1xUnJXZU9YR2xWN3VxR29DVlVKTHJHVmZBRldEckVUazhSRzBXRzVXZCtLaDZhZEtVRFhETVc2QmFRTm5nZnVVU1ZUYTRWNjBoQXQ5TnI5VVFhVmtWelUrME8xajA3dVRwSDhjZEgvblFuVDg5RHU3UGUvRXQxRml6WEk5UUMrM1g1NUhzbDg4akZadzhmSHp1aGtNbm56aHk1UG9qME9P''@;'; put 'put ''bjhDejlYWG9MWDZNOHRKTHZBbytUMTZ5WkpCM1cwWlFYelNwQTN3TEpXYVJ3T0J4NmxyeVVBczRJVFNaSlR2eVIyODdjOVkwWDNuM1RUWGU5OEkzSEg4ZUdwWWNmZmx2NU0rdDNlWWcwUWI4MldyMWpOdEFoVTJZbGF0ZVVVZmZTc2ZzRWRmWEI0Y3hsMUF3VzJDeEU2UVB0M3FKQVdjTGwrZWtk''@;'; put 'put ''ZjNQZmJUOXR2dVdMMXJ5ZHpvb0VNU3EzNFR1WFhybVA4UHBHZUhrZG5yZEp2c20rYWI1Sm92bW1CSFlvYitMSHNmSTc3RkVHcDNEbm9Tbmw3dyt4M09YeUxueVl2SUQ4cUZJT0ZiQjhJRmhxM09jdnAzbGdtc3VjVkFVYm8xRzdoOXB3bW9KTWczWkpnYmhGUU5JZ3JpRnVMMXUrbEtpb1NUaC9O''@;'; put 'put ''b3FyRzFKeEhOdTd6ZFRjNU1iRGtUQjJOeldiUGhYdGF6cFRFeDJPMXQ3VzNGZHBHRFo0SStHN0pvdXM2ZXAzaGFzOGhtRk9zN25sNTlEZnNmelU1clY4NEVmTTdkeXAxZFZoaU5WMjRldlpQQUEvQnBZL3N1VVQxT2ZIakVjeG1sUXIwaEFlcFNYblJITEZ2R0RYSWcyTjZUQk1KNEhCWlNNd0FR''@;'; put 'put ''L1RWVjR3RjFLRURqMFVHYUpETjI2YmplRjRRd1BNYVhiYmxNRlRGWDVYZGRwYU5IbFhPT0tGZVZUMk5kOVdDL09xT2RQVUY1V1dsMUVLUi9COStHbTdoUE1RVVg2RGpFOGgvTHp5RzFhdFFXMWh6L0pWNkJkTXYrYXoxVE02T0dxUW1WUE9FbXRPdW02MTJnRm16aVV2aUFUL0p2bU1XcnJRZTEv''@;'; put 'put ''SmRtTFhxaFdXdHVDWCtUTXFsNThqZWpLTUNsRTV4VXBKY1dHQngrMTA1RnQwMk1MWHllQ3BPOVRFSWtiRFJhem1Na2pyM0xrT3BTWHVsS0RoaUIyaTF5Q0UxZUFCNEsvdjI5VitvS1ZsZjhldTJ1M2xFeFcxOVlFSjVaUHBlRHhOTEhKUDN2RFJUT2JJY0Y1WGh4aXQ2QXVibEJmTmtkNTNiWGZp''@;'; put 'put ''bEhON2t0VnAwcnpwaTZnWWRjc3kwSklXT2lHSjFrOUx1RjhQY1IzR0VtRkxNaXd5b3hWUGtzU1RBWWhYcEJYYm5hRWdtQmJxM0lYYy9sU2FWWml1MHZnbG1KYkhrZW1sZnh6dDdtNWQ2TjV5VzhtT3ZQNVlmZGVUVDg3TnBlbytNWGkyNTNDYnV0SjM2K0FuVUU1dTJJT2E1VVlYUmtZOEFOR2x4''@;'; put 'put ''TUtTT1JFVGNKbkF1Qjh3c1QwTnZDNlA0bExiczJBejAxMExiRHVJV3l0NmhWOG01UGpySDNqaGhSZk9QUC84OC9mOWttYVRjYy9nbHNHREIrRUZINklwWlVhckRCbkM3eU1YV1cxUlBjdENSbWhoTGZBdFcxQ1kwUXNVVVhoMGcrb2ltcURNalQ3cWM5N3ZDd2FMQ2tQQm9tZUNJZmFYRE5HLzRZ''@;'; put 'put ''S2lrUFlYZURXQzZva1JmOXRXZ1dNNlpCTndETDJtNWtVSDhMM2szSlhrVkdrZFVBYVBLRStUYzROWG1sUDFTb0V2TGo2d2c3eml1WlBMc0gvNVpkSk9uZ0JLQjJTSXdObUN6MjNVbk41SkxSZExxN1BsbERDekJGanpkK2lDTWwxWHNmWWVhbTJlNjhSdGUyN2VnOHZxZDdXMDdxbGZLaWQzTDkw''@;'; put 'put ''RWZUZWo3Nkh2NE4yQXRGTFpsNk1RQ0ZVVm96a0Z2NDI1Mkl0R1MwdWkwWkx2UlV0TG8vUlh6UmN2dDRNWk1ZUGR1cEhOTGQrRmljNXBKRHdoSVlCQnR0SjhCRGoyQXNHNm80aXVYUWhrZmtXYjdtVXJyZUR5TVJCZ3JOczJnK0YydWdCNW5jRmdrTnBwaWpsZVIxNFJYbFdRU2ZmRy9MU3FOVkZV''@;'; put 'put ''YnlzbzhUc0w3WFpIbnF1OHUwQWZENWVFRTdhOEJxOGpQODltY2cybDJYNmVPTkRjeW1nZTExT2F4OUhyZkQvUDhnRCtKZE5MZnRRcGQ1UUI1N3RnWUc3cXpRNGdQU0lDTGRHam1CTTFiY1hLYXlFeVJzaGZYdWgxMmxXTlJZTmlsS3V4MUJLaWxUUVkzVUtERzFRbDFyeTJNR3RGb3luWHJpM05R''@;'; put 'put ''bXdPck1aSHVNTldRVmZnN0JMRVliZWp6eVBEVXdRLytYbW1hRGVBT1FqNmVHT1lFeG9NbHRCRG04QWN5OExrb1k5dUFuTTgrNnc1OUdFT1E5YkN2Snp0eHd4OHVRb0dhQUEraS9CSFZsdmtRRnZsYmp0VmpSVGxCb1JCQVJtUWpoaDBCNHlnRjhWcGNEUFZwU1k5ZDVSWU5PZXdPYUJ4dnFxYnpL''@;'; put 'put ''QW9zVmJJa3FMMVRYNDN0Z3Zra0ZiUXNvd0dQNERmVDdZdHZmVXRYdGx5NTUza3dxTHlHTjZoUE1aclVkcFpEVkVLRzJWL0ZSYjFVVUlnTEFmMVdJSjF1TmdCSEd6SFJCQUhTdW5tS2M3OTFiUWFSTUJINFFYcHJsL0pNVEoxcnNac1lPajJ3dGg5TEJmcGdFWUoyZ2hoM1cxWDNLcVVibWxhMVVv''@;'; put 'put ''NDlZN041UGphRmlCOUF0bS9VVU8rVmtEVENpblVFSXFDRlByZDFQTHdkRzQrVmpYRldtRmNFNE5vaFFzdlRmbDNKazcyV1BWbGF5WFZPL25BanJXbFZIUFI4RVJkaTg2L1dvQ2JUQWMrdm5OMWFSWHdGYXRCWW54ZXFjckNDY1pYT0ljLzE4SWNSSTl0QW5OQ2d3RlpPTG9KelBGc1AzUHduOEdz''@;'; put 'put ''OFBueTkyZ05EM3RXbkk5bitmM3IrZ0dteGwwNU1BZkJ1cStCV2Y0dHdBVFplT0o4UE11UHI0TUJhNFhqYkR5OG43bmxSMWFQQjJTcUNsNSt5V29hU2xDYjNMemEwNWcyc1BVSlk0NnJrWjhQZjByeWk5bitSRGMweXdPN1kxckpKYkNBS1dubkplVzBHTTJkbE1ENDR4L3hnclMrdmpkMjhJcTBM''@;'; put 'put ''K0RIc2xWcE9MQ0lpNWErd1d2VC9uYnhhY0FCcTdkaGVxVk8xU3VmV1ljblZrUEM4RlN2MHZhVDYzVFBXcGlEdUdvVG1CTWFETkQySzV2QUhNdkM1S0huTm9FNW5uM1dISHA2alE2anRXRzNRN3hTQXBaQWZFWkV1RFlXaW9CWVJOTGV0RmZ5NG8vY2VlZkFuV2VIejk0eGNNZWR0NS9OdmorTDJP''@;'; put 'put ''S3lWalBqQlJzVVJYZXA4YTBMNjBobHhGZmtOWXQ2SFJoYXZURGdZMWVGbktzWXJxcjVsZ0tXU2FFbEE1NUJjZFdTSXpnWHVjdFJIcjZHS09hdUQ4cldpb3FLYUVWVjJCRnhzQjBpMlZKektaQ3RxcWN4SXZKNE1hOTgxVkZPaUdCUGtud3ZlYzM1dmRmdXJqeStNNUVFbVQ1STN5bjVSUVc0cGlr''@;'; put 'put ''RGtvMHJEMlhxbEI4Mlo0ajMxcDZaejg2MjFzelhuZXFoRWwwenIveDZ1QXhmRXdDeGZxUHJTT2RFcC9KUWdOczZWaVBDNk51azhzQ2o2K1ZwRGN4QjlPTk5ZRTVvTUZsYnR4N21lTFlmelk3bHlEZjNsOW16MnRSbnZiQzZuNXg2SzFwSGxKQmp3QlY2SGRZZkVMRzZmSmJkUEFwbUs5L2p5dmZh''@;'; put 'put ''dlBhdzN5YXg2akozTXFmcUtwU3R1anAxWWFYcVNoNWpWVmZIV2hjNnV4WmFidnAxUjBORCsrdHFYV0tTZkJka2Z1cFpNL2p0TkhmbEI0NG9CYVV2UU1BeHJ4VlRlL2p5c0lqVmxIV3hXbFk1bndYTXVUMGxtNXhCZjlBZkQ3RFZyblg3S21JNHBSVTZwVFJMUUpOZXZhM1hkbmNmYkUwbVdQWHVj''@;'; put 'put ''S3ErczdNK1ZWSGQxbEpUMDNxS0dKdDIxdFh0YkdvWUwrUVZ2SWRwNWU1Y1k3aXFvVEd1T0RudGVhM0JLNERySGpEdUJIVlBiWFJkQUJyY2szUDlrZ2FQcGJGYytKZXkxL01HY3E5ZnpQWS90elhudWhETXdwdFBjL21FNjhKOTRDTldvd1lrazBPRFQ1cm9pa3BGTVJEVkIzNkFHNXRJRXhaTjhH''@;'; put 'put ''RFJLQkFraVFOZ3FjMEFVN1l4RERaTDRFeVlKUXBtdVlLdWJGZldWZWxhTU1NR1lDc1F4bzBocHVnL1BzVVlNb25FTkdtQW1GQ1VpSGdnejBpbzk4c1QrRmF6UmFCT3cwcGRBNTF4Nm5KTkxEamJZTkNLemViY3hwYS8vbm0yLzUvblVXUTFnc3pTNXZNZzNhSmt1T0xXc3J5MklWcHBSdmVGdjJN''@;'; put 'put ''WERNbHllU3FWU0lDakphY3lyYzJKaGtTeXJoWjRMRTVEbjFBd2xKLzF1dFpzVVBEbWJQbGd5emxyMXRaUll6dk81c0pmNU92c0hZZkQ1WWU3OWg1ZnFZTnB1cnEyZlhkUmFIL0wyc1YzNWZPRHREeW1wWTZ2d3RkWHg1TlRROW55bU9LaWVGVmxkYzZpdlBJNU9lRjMxUVJEM0E1V2d1OU1hejhh''@;'; put 'put ''MEdOeVNSRHJkY2tRRWZVTmhVQ2ZBZ3pCY1I1SUdNVEdSRlNqUm9nS1JHRDBvMGdFRFNReVZjWGlLMTdKc2hjc2xROXI5QXBSV0lDNzdmTEFjc1U2T0hhK3dmNHN1SjZ0NVllWmU4dnkxTHEvMHJHbHRTajRLd2Z5MS91MUJaM1haVGFxVDhHbXRXNnRjZmlHcm5YbEtsazlGR042cm8vcnYybTB3''@;'; put 'put ''WFdxL3o2UWMvMlNCbytsN2Jud0Y3UDl6SEg5dC93dHRyWkorM21aOS85dUR0OE5CR3pMdVg3UXcrRi9DZGRMV2Y4djgvNGY1ZGRmaGV0aDFqK0huM3VRNStIcVdhM04vMlMxWXJ0a3A0MHRwMlFQdm5DWWNCOHZ4ZkJvQ3gzMlZkWEFkSUVjZzhYRVpENzM4cFNjVjF6TWE4SENJYnBIUW5OUnN1''@;'; put 'put ''NUplTVhseWwwUHdtOXM3N2xsZVBoa1Q4dEMxNTdPOE9TUnN0NkJZNTNUNWEwbDQrT2Q4dmhFSjdFL2RQWDJzd1BkTnczMUhzc01EZmJYOVpjbmF4cWkvYjZsdit6b2txL2ExdGw5bFlZZlVzTHN5VGkzSnlwZCtMb2p4ZHNFeCtmaGphNVRlajJVYy8yU0JvK2xmYm53TDJXdnIrNy9ZcmIvdVNs''@;'; put 'put ''dWx6clFObEpJK2xsTzFVZjNUUURmYTNVRmlLWHZrQTVZZnBKdElKTkFGdldqTEZ6MjJZckErOUF5clFhYXQ4Z3ROWUNvT1hjSEdjNlB4a3FMbzFVbGY2RDczWDZvZnNCZnBuK2p4YVd4cG9XWHRMY3dKbTBOMWt0enNGbGYxdXNpT2hJSkZ4WHE5RHF6Z2FpK0xMMHFyRnpkMEpjdDNNaVh6VjAx''@;'; put 'put ''M01pWDlmdjlWZjdLMER2NXNqcXZ1bVhTdzF4WkNkUmxQRHgwWm1CNFM5Rys3b29JdkJ2WldyU3ZSemxYL0hLd010b2YrMDVmelBjRGZ4Ui9jRTk5MyttQmFPbElhRG9KRWh3ckcvMWwvTjg4SU1PUGdoRFh4WDd2cHVmSHNMVXJTdnVkcTJSNDlmVVZHZWJYTDJud1dSbm0xeTltKzFGbFdGMlBv''@;'; put 'put ''ZjNzVWZ1NU4yZk5tZGU1ZlR5M1ZIR1R1c1AxNjg2YjFCMXV1RUM5OFcyMUJKRXVVUDkzbFIwcXd2eWFzc01zVGk2cU9BRmM5ZVhtelRMWlBOVUNlbUJkak1kOXduTlpuM0NoSjdmdDRXeit5b2dlM0tUdE43SitvM0ZVM1pPM3ZFMm9nSGlnQUtTelhXNHB3cEt1QUl1WURCZ2dEQUVTa3ptMkhV''@;'; put 'put ''dlA5aFd3RlZTMUpLdXdzTkJYNkF2NjdYYTd5MCt6TDNxZVZFd0hJbnk3WHBLanFUNk53ZCt2Q05mWHRidkxHcks3OTdDbjJGZFFZRk4rYytMRWZXVnQ5VUVmM3ozazgzZ0tiRGpOTnZTcDlYN2JTQy9JYWd5bDBRdGM4SHdsV0tjdmhoakNndzFDVFlJWURVYU1qVEVzWWZCRU43OEw1bHlWM0tp''@;'; put 'put ''MlJaTXBIYkM0aFlOMERRSFBpSVRQVWswMHNSS0F4SHBnRm55d0preSt2YmtOcG1SSFBCNVB4eHZEUVdjZ0dBNjQvSFFWSW91YlRRcUNRWXZaTlhTRmM0cURTUy9EbTNsOWdmRGNMUnlCZjlFS2hUa1cxeFlLMCtKaGh0TlBhZ1hEYXE3Z1l5eE9ES3R4NGkvV3hadThQcGJLN2xaVmR1L081aGsr''@;'; put 'put ''eG1KVjFoWWIwUGxOMmw1UzJ4SnNHT1Y4eXZZWXNyWVJ0ZTNDT2o2TlF4eGpKaThDVEMrRHlSZDJrRDhoSThBOFQvNUVnUUJHelJ1QkJKekoxczIrQy9SSkVZenBOZG5rQU1McmdPYmFLbnlZbWhXTUJEMDZBUHhyeSs3MDFhaE9zRll3UmJWUGRGTm90SnJxUkZORHExdFlMOXRpRmZBS25DaXFC''@;'; put 'put ''ZEc1d05UOWR2aDh2ckF2RktMVkN1R0F1cVFWV0Y5Ym9oWXZvTndTazNkMXJLb3hlZWloa3gzS3YydUZKcDFMZjU5VFovditycWFtcFIvbjZpbWVUOHhrODRrTGFQODZPblBmN1Z6V2QxdFFkZG1hWENRMm9SOXMwbGJ6K3dTQWVZcm5xRURlaDluWkdLQ05pckVCczExT2VsSEg5MVdxSjJMUStu''@;'; put 'put ''dUpTU0VnVVJNOXBvdTRObHFST0xwTFZQc2YwRVNNRERPeFVoNGpldVVXbm5IdjRlTEVwWWhjV0tRcGR5WTRUQWN0c0pyakVJcWpNN0tEUmd3aFRQUUdjQUJCdHlDNnlid0krS0FTWEhrZGpQUUF6VlJybEZXUE4yTGxRc3lQWkZZcHBJR3lPZU45RzdVZ3RIUXVIQTdId3pGUGhUTWNESVJZamx0''@;'; put 'put ''UzUrRFZWTXJhNm1YcTl5TzFndm0xclJZNnEySTZYWjF0ZFNGekVLSXU1UzlxUUZYc3RUcGhzaG1ZdnNXUlU5UU00UldlWlhYTkcrU2hEUnZrb2RmNitRYlZSMkI3WjVtTmlxbzI2cXZyMnZKNlkycWpCcmlOV2xUYktxL1RmYmU4TGZCS1B2RWpma1lId0FzMXlJb1NxQVg5bVV1N3R4cEwraktz''@;'; put 'put ''TTBBb3AvTmlJdWpvRVM2b3o4ZnVpQnZjVWExQ3pFeVhjUVNEYnQ2SVZ6WmhTNUorQnNKb3F2YTFmYjFPa25OdzIvb21KaXlLZHQ0UXJXMG1WeU5rcE9lODRQbHMwOHZBMC9pN3BvYW12V3RhYXBwVHlmeEVmaUpXRmZBWEY3bWROUDFkWU5IOFlub2NBSGVGOVg5RlJUUXVEUVdyUWlGallTQlVp''@;'; put 'put ''SVYzckk0ZXFndVhkY2FMQTVWMC9icjNDa3FsSWY3Nk9UQjRndWtSdmc2d3NQend1cldDbndCTUpkTWpQRVpiK0FSZjAyMWEzb1lVMEFVdXVqT1VybmpTNDFjSTdzK2U0OElMcXpUcDkvalpuaVpOTHVoT1dFM2dGU2J2dWxPVzFWS3UraHZVaGlCNDFyZlpXcjhmSFpMTmJ1cjIrMEhRcVJFSjBK''@;'; put 'put ''VmpNWWNwVk84K1B5dXNqTGFsTExSWktWQmVBekJGdDJtVmx4WkJoSm1mdDJHSnNsTmRsazE3YzhjK3I1WUxiS0Z6S1BIbW4yemprMWdwRzFnS3czeEthdlAwK04rVzNsSm5wSzdsb0crdHJNR0Fqald0eVFkck5jVDY3TDV1KzdwOTNiUTBXTC8wRnZRM0NuSjRucDAzbWVCeWlIL1AvWCs0SG1Q''@;'; put 'put ''eU9hSmVmNEpmcDN1cG1aOVJvL29aem5VeXorSjU0VjZBR1ZWaFBPZzVEdk9jQnNQM1pMK285UVA5ZjUvNUJEakhKNkQ5M01sZ1JqZUc0ZnN5U0Ivd1V4NnR2TFdZVFVaUkR4Skl0TjNwYXpaNjU2RTh0N2JST3lXbDByUVkyeTI1U1o4U0FQLysxS25GeGJjaVJ5SjRpL0tmbWFNZDM5SDJmVFN3''@;'; put 'put ''K3ZCQk9jOXNra1JxNlEwSWExWGlabmhyVS9kMFpzdXpWN1o1K3RnbmJiRnJhdXFMYmxiN2d5VXc5K3J6Y2NQNHlhR2hrK040YjVWeThUL0RSOEo0UXZsdEZjcXVXZDJoclZrQkhsL2ZDTmVraFBsMDQ2dGkvVEdnM3hjWlhldFUvV3JsOEhDOWhOZzFlTURwUmJUeXJCUFo5VEVEK3R3bXo3cVV6''@;'; put 'put ''VU1ZOXFHY2RhcE1kcDFxQVQyNXpnZms4Zm01YkM1aFlSSnR0SjZHcld2WHVOUzIrMWJ5SE5pcTdoc0N4U3ZRUGJZT29GS0xuTTZlT0dFZzJTTW5qSFJydlZhdnh5TENFbWV4eDhXS2VxbHJZYUlGTHBvemtTMTBjV1A3eW5idkhlcnkvUXV6ZEIvOExPbGRlcXNyYzBqT0hNN3dSZnlwVDF3OTgr''@;'; put 'put ''bXJGNVVVL2w3bXNDelBOek03Qm1NV2ZnNytCWjFYTTlvdWozc3hqVVQwT3BwZTF3c0R3RU02dlVGM3dHSWtvcWlsSE15U1NjaEpPaVNUZ1FCQ3llWmtVMk1xVUIrb2kxVkJkMzVuTUJ3TTVjRzRWeWRwVjh4Qmp0K2dXM09Pak9wRENIazhPOXQ1SkJ3NUt2TUM4OHpSU1BDNmpPWklLTGZsMUp2''@;'; put 'put ''alcxYnRqMnFzcTAzekN2VEdtdG9VY3lsMHVVWG91Sjg2RjZwdmNZTFJOcVh5NzlQcitJTFhQMVBhN3VDNVB6WCs3UVUrUGNINE42WHk2U3NjWG5tZDFrdXI4UFI2UjlZL1BjSDRONlh5NzgwYlB1dDJ4cjg3T1A4YStiUFlIbmcyemtaMW5BK3M0MzFlTjAzSGVSVWY1MjV0LzN3NzJ6L2ZnZDZX''@;'; put 'put ''UytyQUdha3ZLUmIwVWhIZGZZaDF1TUFLTGtrZUs5cmdlZWY0Nm5vTlNSSm53UFAxREtLVk5NYTZjbzNxTmVVYTc5aW9kRjJOaDNEcW5WcXhkY09OaWpYV3QrTzFHdVpRZFlTV2FkZ05VbkVzS0c2YXliNkNRd0pJNzZuck44aHBleDg0ZUpsekE2NWZGQ3ZXcExZdHM1YzdSa0N0ZjI5bjllOHlY''@;'; put 'put ''U2VvdzZLK3ZwVG94SklpZ25UZ0xpR2dGeEh5VnE4VDZOZzZnYlpTcWRhdWJMSk9vS05uYU4xMmVXQzZUckFHVGwwbjBNQkZ2dWN2WGduNFphdWdsMEV2TGFoOXA0cDgvSU85b3h2aE4zbE4rSEpsK3RzbXBUV0xCMmt4VW5iWnV2MGNlVHFoeVJQSTR1UW04blJKa3lkc0tPZnlGQVI1b21jOGxL''@;'; put 'put ''TVg1SHd2VU1SakFZcVk2WG1US2tWaUdrVW82c2dwbWdCVTY3T01Cc0w4czNXRWlXY1JmaVZ0NUtvMTRDcDUxclhTVVRMWllkamxxSndHODFRYVRDQU1mbWtUV3RFZ254NFhnR2VkNjZuaEs2WG5WYXlwSXV6TUhsL0I5a08wcy8wUUNmUnR1YUFLRzRTb214Z05Ma3lNMmFKSWZWYk42SFg2c3lZ''@;'; put 'put ''TUE4WEdvMkJzQU1OME42WWc2S1pGdmllVDF6NGlYM1pac25xbGpjRklibnVuUm5KMFkzaFdXb24yNXpRVEtKN29lUVlKVk0wMmFYZ0JVelRyb2R1RW85ZHYzUEJTQWNDcGRSeWNrbGYyY2dSOGNkdmFLc3kwYWF3NWQzdkhSSUVseFBpUG5TWENlRFN0OHVqNlhFZ0orQjBGelArYzVQNG51V2Fk''@;'; put 'put ''ajhwck9ETFpHbzZGRFd3SHo2V2Z5K2JTdFp3S2IvdHl0a1pFcTFITXJmOWdiVmx0QU12YkE4d2RHOVdnZ045MDM0WnRoMWZXQXJDMUQ2bm5vR3hqNTZBRTZOcU5DN1ErTFJyT28vc3FCdFJUcGJRengxbk9YUXQyMkphL1FMQWdFSFR4TTZab1VMb21jN0htMUJUeTZQRGRrN1pzdXNJeGYwbzlQ''@;'; put 'put ''WVZjWUdlbFdMMXFnc0pmNUgzNFdPNVJLbndmempZeUMzRk1DTjNHdzNrcm1GUUJZbTFkQ0FON0RmaFdYU0RaVlp3U3ZiYkRhK1AwcjUvZjV5bGZiVVZuVGNiWEhQUTdBNjZBeTArdDI3cFU3OHJXbmFROW14TW5zeXdpemMvZHluTVM1MGFuYXpmMWFKRWQwSXFkOGNMNHNZWFhDK0d1ZFh6RTkr''@;'; put 'put ''OVFuYm1MOFlLRXZwdFRJM1JDcXhHQzY3ZXRhOHZYS0M1cGF4Ullta0E1Ylk5bjY0dm0wQTNyK0lpZHdjSjRyWDNUZWthK2I0YnkyalQzajQ2Z25MYkh0YlliNWcxNTI0dHFXNW8zL0dCTzJ4UFp0aHZscG5qYlM5cHpzYUdCbjcxQzl5WFRHRGlmN3NpZ0ZmMTBueE1aUU9xbUliS1hldHcreHRU''@;'; put 'put ''NXlMclJrV1ZpSUQ5bkcvSFRHK3dkcHJYM041TkxWM2llaXBlZXAzSis0ZURZOE5Bb3VYVC82T2pHZldUM2RSRjBGdGp5Qm5WWGw5cEhPaWtGTXFORHcyTUhGOGlsa1pINzFUNTZvWTl2UUhTcjdtZ3dFYnFuWVlDR0duMGIxZURuSVV0SXlPNW9VQ2ZOZ29rbngvd3Ryb2Fpb2daWFMvbDRqUFQ2''@;'; put 'put ''eTF0Y1hpOTg4TFBuREtFWFdUNGx6SjV6MmZyK3Ric2x0QjBTS3lrT2RUOUdMd2I5eHZaak5MRmU2U1pXdWlOaEhxUVVZMkV5dTRsV3VLSmRHYm5mVzNCN1oyZDFRcFlUM3ZKeXI4ZnY5NURlemdUOW5PaHM4bnY0UmI3UFlCdldnMDJ6b3hZMmdob3JUQ2FmY2d6OW1vbys5ZVFld09razA0WUN2''@;'; put 'put ''VU9uYWtlMm9FZW43c3hRejkrdldGR0lwOXBMdk1OYy9FSDdQYzdTT1Q0bThKa3lScmNrYWNQdkp5K0JYSGV4NTZicGZrd2oyOTNteHJqUGdJVmVkaWpSSkRXcHdNUHoydEVsUkJqbHV4V0NJYmJaalQ0ZjBjUHYyVkhhM0FOVWFTb0dzQ1ZRNkhDYkhCNTl4cENzY1dzZjVQemRwTjF1czVoOXBV''@;'; put 'put ''YTZROGhpTGk0MTNhN1NKRVBYaWRpNXRVVjg1NFVldUxLUGhxVTNPQjNadlNoZUtSQlNONWZnSGNmNERwTy84ZHpCNUs5UmVYMzV1ZVZ2SXlzS3NoNEsrYm56cS9lNUJiTjlDYXNQb1A4S3oxK1doSUpWeWpMUFRiSThKZGNwWEZmZW9lbEsxSTByTnRHVnIyaTZFblVEeEVadEQrSW4zN0h0UWR5''@;'; put 'put ''UzAvWjR0dTBjYmxxbkszbmJpOW0yYytoclBENWRicUZuVithdW43ejllKzVMdlAxNzFaZUlMRGZUTlFtZVoyY3dGOTcrSFY4bmUvdDNLZ3pQMXgvTDlwT0hydDBrWC85U05sK2ZONEkyckNYdFJ1L1p4RTY4a2wzTDdsYmozRHIwTTJMQnZlOTg3ajg5bTdqM29OWkdhTCtDTm9MbDdUZTFOaTM0''@;'; put 'put ''QStoVjhnVHdUVEhqbWI2MW13bzV6emkxMURoUHJuNTM1UXNMeU4ycnZyR0F6aW1ENzBlL0lCZGd4dmswNjhqM0NKTFM3QjVCZUNiK1BudG1DYXFReTBxc3dPdXJOb1VKVExrRkM0SU9kdUxYNm1mck54MEtMdDlrV01HYzkzeDgrSWZBR3hFK1BqYk9QOEE0SGRseE1wZXpWTXZ2anFIemVCSS9E''@;'; put 'put ''bENiN0xHaTV3dXdQVlpyemhkNHFqMFliQThFMk0vNVlGdVF2NE5MSEUvdHdEZGZSaDhFMmtOUVl3dkE2eDhZRDl2eHp3RkFvdCtQbzdzNzUvdHhNbWdRbnZ4YlhsUlZsNC8xVnY3MU5RWXNXckRKTEpweXYvTEdtZWNRekdaaHhtNjBTYnJjYjhwSnZVTkQ5cTAzdkxWRVd3dnE5K1UwYjlodWcy''@;'; put 'put ''L01XZGNXb3BIR29TRloxcjQ1WjJoeTZLcUpNWGxRSHRqYVU1dXA3V2hxM1BCYmRGei9oVy9SS1Yvek9aZ0RXOTc0VjMvRERoNWtmK2lINFZybGM5cjM3WHdLM2dCczhNcS9lRWQ5UDFhVCt5VThLMS9HZzhIVHI4Y1IvRzE2S3RFemVveHJZeG5zQmR3RkhwbTkvLzdacFl1ZXA1LzE4djNBQUJm''@;'; put 'put ''VDRBUUdGMGw3cFFoQVBmSkkvN05QZXk1K2o5bUQzNm5uSTllZ0hmS0VENmhXakhVaW9XVWtHSm5wcWZRNk1IY1FiUjh3WW1MQzJFeDNqR1MzQ1ZsWURTdFBQY0ZyRFVyRVk5RXF1eU1FNGFIZEdjcURVSExsMktjSXhJN2NXVTkya0pWY0NDMHZBMVI3L1N3eHluWUkxYjluWU9UZWVlOVlGeEc2''@;'; put 'put ''ZHhUT3YzZEkzUldVdWE0TWk4clA5UVFIbERkS0Y3dm4ySkhLbmNmN2VqM21Razl2eitGMnRpZW91Nm0zMEdQMjlIWU0wZTlzd1VXa0VOOEp1azU4aHRCOUdNN3NhZTEzMG5QYW1WTURibzBBbXRkdjl4TmhhWW4rNXB3UnhzKzRNRHpyZGVicFNlMS8vYkNKdDhZMlBHeUMxMkhBYzBDMzQxcDFy''@;'; put 'put ''ZUFKclQ0RHJuOUR2YjZ5UnN1dlg4cGVsNDduWHIrb1hVZHpCM092djVLOTNuMHE5L3E1N1BXRmVlMXN0RzNrSHBZalQ4QzhJd0VuaG5sdlhGWURzMC9tVk5QazRPRWVGblJaYzVGeGtqdGRmMUp4d21PdlhLeW9jZGRqYTNGRDQyeU9HNGl6UDUwejlwZXlPTWk3anR0RFdyci9OWFpPajBidnBE''@;'; put 'put ''MndWVHR4QjlONk9MaXZYMzlmdnpTSy9oL2lFeno2QUFFQUFBQUJBQUJWRXJUK1h3ODg5UUFmQStnQUFBQUEwOEdkaGdBQUFBRFV2cWIxL3piKzR3U0tBODRBQUFBSUFBSUFBQUFBQUFCNDJtTmdaR0JnUHZmdlBBTUR5K2IvWnY5eldMb1lnQ0xJZ05FUUFLY05CcmdBQUFCNDJuV1V6V3NUVVJU''@;'; put 'put ''Rno3MHpGRUVJMkVSUVFvekdZRXhNcWttMTBXb3RhV3BpQld2c1JxeFlGMUlYTGxTNlVFUUZrYTVFUlYyNGMxWHAwb1ZLZDNhaENBWDlDMFJRdXRDQ0NoVktvUzZNNXo0ekVwT2FjRGp6OGQ2OGUzL3Z6TWdTVG9NL09VcEZxUlFxTW8rU1RpR2hFNGg3UmFUMUNiWklCMHB5QlQzVU5ubUFMajJC''@;'; put 'put ''Z3h6Zkx4ZVJsL1hvazluNlYzM0o0OXZvMUZQSTh2NG12VW1keFE2OWpsMDZpbTQ5and5UEMyNDg1K293aXZZYyttRlpRZGk3eEhtTENPc01hdm9NT1YyaDMwQ1ZkVlQxQzg4L29pb2hER2tjNi9RcGp1a0JsTHd6cUhrK2xlSDllNmc2Zit6bXhMbFdrczhiMGgrSStFVnMxTmZZd0hscjlDNjY1''@;'; put 'put ''UnFPc09abGVrNFdzRk5yOVY4eXpwcktTT2tkVkRTQjdmU3NqaUFsRTRqcEpHc2Z3NEFJOW92VTU3UkFIb0t5OXdnRHZGN1dxMjU4eGViSWZUSmN3bWFaNUx3eHNxeWgwNnR5N1R3aTdEZWlJWFRKUXlRbGlYUDBsTHpDSG5JZmRHdmVRdDVxbERuV3NwdjMzcEd4MVRYRlBRRDJTZGxkejVKWGdu''@;'; put 'put ''MkZuUmIvbFova0dzYlAyRFZKUXZXM3hvLytqWnIzb2tnSDdGcWxtUVpMNDljczQwZk9lcEl5VnF2SWUwRzNYc2l1V2VUMnhwalJQMU1mOURJS2Y5bTF5bkpoYnZ5YVpmeU1zN24xYTJ1MnV2VnU2d2R1T2VLK1dML01jdGJ4c0pxYS9YalR1V1hOOXJ2aFpQV0o5YjRudTcyc0g0NGgrM0FaWkE0''@;'; put 'put ''c2grNDg4SEhFWkFReFkydjl0Ymx4WlcrQit5SGsvQTdXeWR4YWR0cWNXYlk4dFRuejdUSVd1TzJQTWZxUDJ6dmdjbWg3YVB3YTc0TGxzZFV0NHpMRDdEV0VuL1JSYXBDYTVaaER2SVo2VC9ETVZtOWoybGlUZGNOYitQTzk0VE9CYVVEN2tQY3U4TnNSUmEvN0xxeEZMOVV2MCtTMTdMNFY4Sjhq''@;'; put 'put ''TGNQWVNuRi82OTlkUGp6TzViNnU4cStnOGhzcFk5Zk9lTnBGd2wxSTRuQUFBUEMxbHQrdU1wdE85M0grTjZlYk83ZTVOVUY2a2lQaUNCL2lpQWlKSG82SU9PUTRJcUtISXlUaWtCNE9rWkNJT0VJaUl1S0lFTG1Ia09naFlrUVBJUkVSUi9RZ0l0SkR5Q0VSOTNKdy9INFFCR1grMlliMnU2Q3VO''@;'; put 'put ''RXpBMytFaitBcHVkZi9vUHU5dUlSWkVRSkpJRHRsSDZqMGpQY3M5NXliQk5HWTZNYjh4cDgwWjg2cTViRFlzbEtWdDVhekwxalByaTAyMFRkajJiTmUyaHAyd2o5cm43SGw3eFFFNUVvNkNvK1lVbldQT3JIUFBXVU1obEVQSDBWVjBFelhRVnEramwrdmQ2UnZ1Vyt2MzlzLzNYN3FtWEdWWGUy''@;'; put 'put ''QmlZSHZnd2kyNmw5elZRVzV3WS9BU1k3RVo3QUF6c0k2SDgweDdjcDVyVDh1cmUwZThTOTVUSE1WVCtEcGV4TXY0RmY3cVkzMXJ2cnl2N3V2NEhYN0tML3VUL2cvK0xTSkRyQkI1b2tTVWlYUGlsbWdTcitSN01rMW15QlV5VDViSU1ubE5UVk9mcVN4Vm9IYXBDdlZNcCtrNWVvRmVvZGZwSWww''@;'; put 'put ''S0pBSjNnWHJnR1VEQUFieUFCVElZQm52Z0dGU0JBVzdBSTNoaUVzd0pjOEhVbUFlbXhYVFlKWGFWM1dCMzJHTzJHdXdML2dvYXdadGdJOWptTEp5UEE1ekIzWE1ON2lWa0NZMkhhcUY2NkRsc0NydkNWUGlKaDNtVWY4Y2Y4bFcreGovd0xRRVNYQUlyNk1Lc1VCTEt3cWx3S2R3S1RlRlB4QmJC''@;'; put 'put ''SXVHSUZzbUtpSWlKUUl5S0NYRk1uQlRueGNXM3FTZ1VkVVdwNklFMExuMlVGcVZ2VWtIYWxZNmtNK2xLWnVWTitVQ3V5QmR5VGE3TEhjV2tlQlZXMFpXa3NxQnNLQldsR2NOaWs3RkM3TGNLcTdLYVZGUHFqUHBKL2FybTFDMzFVSzJxaG5xdk52N1RFSTNTUnJWSnJhajkxTzYwcHRZY2VoaHE2''@;'; put 'put ''elo5V2MvcFJkM1FiL1JIL1VsL2lWdmk3dmhVZkRiK0paNk41LzhDREJETXlBQUJBQUFCUEFCb0FBb0FRUUFFQUFJQUtBQTVBSXNBQUFDVEFtc0FBd0FCZU5xTmtzdE93a0FVaHY4V05LREdLREhHc09yS0dCTzVxZUJ0WWRTd1VkUkloSzBnRlJyQllpbEdYZm8yYmx6NkRGNmV3STJQNERQNGR6''@;'; put 'put ''aXROMkxJcEoxdjV2em5Qek9uQlJERE8wTFF3bEVBTzN4NnJHR09xeDdyR0VkVE9JUU4zQXFIc1lKSDRTSEU4U0U4akZrdEloeEJSa3NJUnhIWFRvUkhzYVQ1UG1Nb2FRL0NFNWpTdzhLVGlPa3p3aytZMXVlRm41SFNONFZmRU5IYndxOFkwYTk3L0JaQ1hML0RObXkwY1FNSEZ1cG93SVdCZXo0''@;'; put 'put ''WnBKQkdsbFJsMUtDdW9UUWRjcEZ6aTFrZDVsNGdnUUpNNWpuS3lXWWZmSlZKbFVYYVVyczFISEduamk2NVFuV2FtU2sxMW5HTVhaU3hUK3JudFJCNCtVNkRWalIrMVN4eDVWQnJxWk1iMzg0d1dOMFMrWlE2bTBxdkt3ZDBNVGw3MlRYR0t1UkR4cjNZSHVmYVAzM3pldTF5dFlZa3g5VVBaMXY1''@;'; put 'put ''dGdMWEJHTTIxMzVPUjdMcWpMcmM3ZklyK1pva1o3OW1TOTMxcTJheTd6Mzc3ZjN0WlprN1Zad3BIemZvWFVFNm1WZFJneU9yWWptZU1JMVZ2aGV4SFB4UE9aeFRaNm82am55RmZPQll4Q1Z2WWpIaVVOUDhCTGhaaDVjQUFIamFiWk5YYkJ4VkZJYS8zN0YzM1RaTzc3MVh4MTczeENrdWE4ZXhZ''@;'; put 'put ''eWN1Y2V6RVNjYTdZMmZ4ZWhmR3UzRnN1Z1FDSGtEd3dqUGxDUkM5Q2lSNFFLSlgwWHNIMFhta0IrL2NDVjRrN3NOOC94bWQ4NTh6OTk0aEMzZWRHMkFlLzdOVW0zNlF4UXl5eWNHSG4xenl5S2VBUWdMTXBJaFp6R1lPYzZmcTU3T0FoU3hpTVV0WXlqS1dzNEtWckdJMWExakxPdGF6Z1kxc1lq''@;'; put 'put ''TmIyTW8ydGxQTURrb29KVWdaNVZSUVNSWFYxTENUWGRTeW16M3NaUjkxMU5OQUl5R2FhR1kvTFJ5Z2xUWU8wazRIaHpoTUoxMTAwOE1SZWpsS0gvMGM0emdEbk9Ba3A3QzRuYXU0bXB1NWdUdDRuK3U1bHFmNW1EdTVqYnQ1bm1lNWgwSEMzRWlFRjdGNWpoZDRsWmQ0bVZmNGxpSGU0RFZlNTE2''@;'; put 'put ''RytZV2JlSnMzZVl2VGZNK1BYTWNGUkJsaGxCaHhiaUhCUlZ5SXd4Z3BrcHhobk84NHl5UVRYTXlsWE1KajNNcmxYTVlWWE1rUC9NVGp5dElNWlN0SFB2bjVpNzg1SjVTclBPVkxLbENoQXBxcElzM1NiTTNoVjM3VFhNM1RmQzNRUWkzaWQ5N1JZaTNSVWkzVGNxM2djNzdRU3EzU2FxM1JXcTNU''@;'; put 'put ''ZW0zUVJtM2lQdTdYWm0zUlZtM1RkaFZyaDByNGd6LzVrcTlVcXFES1ZLNEtWYXBLMWFyUlR1MVNyWFpyai9acUgwK29UdlZxVUNOZjg0MUN2TXRuZk1DSGZNU252TWNuYWxLejlxdEZCOVNxTmgxVXV6cDBTSWZWcVM1MXEwZEgxTXNEUE1nalBNcERQTXcxM0tXalBNT1RQS1UrZmxhL2p1bTRC''@;'; put 'put ''blJDSjNWS2xnWVZWa1MyaHZ4MW8xYllTY1Q5bHFHdmJ0Q3h6OWcreTRXL0xqR2NpTnNqZnN2UTF4aTIwa2tSZzhhcENpdnBEM2tXdG1GK0tKSklXdUd3SFUvbTIvOUtmOGl6c2oycmtQR3dYUlEyaHhPam81WkpMUnpPQ1B3dG5udlVZNHZuRXpVc2JNMnNITWtJZkcxV09KVzBmVEdETnRNdlp0''@;'; put 'put ''QnVYc1pkRkxabmVzUXpQZHBOZXR5RnY4T2JJV0VZNkRpZGlnOWJUbW8wWnFXU2dVUm01T3MwSFJ6VG9UT3pnNVBab2ROMGNBeTZUTldZQzM4cUhpMHByUXg2TFBOMW02U2ttYWJIbXlabG1OUGpST1BET2FuME05RHpuOGxTbVpHL3g5dkJsR0ZCYnpqcWhGT2pRekg3Yk1GNGh1N0wwQlBUMnRk''@;'; put 'put ''dlpweDBrZDgvZmRxVDA2ZWRuamhZVnVXeUxGanA2eDEycktsck5XN1FheHpHWGVUMVJxSzJZNDlGeC9MR3o2dDBYV21vdnRwampjY0dqNDIrUG1NMDRTTDlObGhTRXZSWTVySGNZNFhIU3NOZ1UzWW81U1Rjb0tLcEljY3F0bUxKZk11ZHhVajM3cWRsa1RYOTJlazRZSjBmMENTNjNkT3l3UHQ5''@;'; put 'put ''akRiN210WjVWdm8wVEhJeUdvdTR5Ym5XMk5RZVJXd25MMko3NmgrM1piY2hBQUFBZU5wajhON0JjQ0lvWWlNalkxL2tCc2FkSEF3Y0RNa0ZHeG5ZblRaSk1qSm9nUmliZVRnWU9TQXNNVFl3aThOcEY3TURBeU1ESjVETjZiU0xBY3BtWm5EWnFNTFlFUml4d2FFallpTnppc3RHTlJCdkYwY0RB''@;'; put 'put ''eU9MUTBkeVNBUklTU1FRYk9iallPVFIyc0g0djNVRFMrOUdKZ2FYemF3cGJBd3VMZ0QrSENWZ0FBQUFBQUZZbVBaM0FBQT0pIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXN0eWxlOm5vcm1hbH1bY2RzLXRoZW1lXXstLWNkcy1hbGlhcy1vYmplY3QtY29udGFpbmVyLWJh''@;'; put 'put ''Y2tkcm9wLWJhY2tncm91bmQ6aHNsYSgwLCAwJSwgMTAwJSwgLjYpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTUwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dy''@;'; put 'put ''b3VuZC1hY3RpdmU6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tMTAwKTstLWNkcy1hbGlhcy1vYmplY3QtaW50ZXJhY3Rpb24tYmFja2dyb3VuZC1zZWxlY3RlZDp2YXIoLS1jZHMtZ2xvYmFsLWNvbG9yLWJsdWUtNzUpOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlv''@;'; put 'put ''bi1iYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTEwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTIw''@;'; put 'put ''MCl9W2Nkcy10aGVtZX49ZGFya117LS1jZHMtYWxpYXMtb2JqZWN0LWNvbnRhaW5lci1iYWNrZHJvcC1iYWNrZ3JvdW5kOnZhcigtLWNkcy1hbGlhcy1vYmplY3Qtb3BhY2l0eS0zMDApOy0tY2RzLWFsaWFzLW9iamVjdC1pbnRlcmFjdGlvbi1iYWNrZ3JvdW5kLWhvdmVyOnZhcigtLWNkcy1n''@;'; put 'put ''bG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTgwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2Vs''@;'; put 'put ''ZWN0ZWQ6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1ibHVlLTkwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtYWN0aXZlOnZhcigtLWNkcy1nbG9iYWwtY29sb3ItY29uc3RydWN0aW9uLTYwMCk7LS1jZHMtYWxpYXMtb2JqZWN0LWludGVyYWN0''@;'; put 'put ''aW9uLWJhY2tncm91bmQtc2VsZWN0ZWQtaG92ZXI6dmFyKC0tY2RzLWdsb2JhbC1jb2xvci1jb25zdHJ1Y3Rpb24tNzAwKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OnRleHQtc2VjdXJpdHktZGlzYztzcmM6dXJsKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ub3BwYS90ZXh0''@;'; put 'put ''LXNlY3VyaXR5L21hc3Rlci9kaXN0L3RleHQtc2VjdXJpdHktZGlzYy53b2ZmKX1ib2R5W2Nkcy10aGVtZT1kYXJrXXtzY3JvbGxiYXItd2lkdGg6dGhpbjtzY3JvbGxiYXItY29sb3I6IzNiNTI2OCAjMjczODQ5fWJvZHlbY2RzLXRoZW1lPWRhcmtdOjotd2Via2l0LXNjcm9sbGJhcnt3aWR0''@;'; put 'put ''aDoxMXB4fWJvZHlbY2RzLXRoZW1lPWRhcmtdOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kOiMzYjUyNjh9Ym9keVtjZHMtdGhlbWU9ZGFya106Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQtY29sb3I6IzI3Mzg0OTtib3JkZXItcmFkaXVzOjZweDtib3Jk''@;'; put 'put ''ZXI6M3B4IHNvbGlkICMzYjUyNjh9Ym9keVtjZHMtdGhlbWU9ZGFya10gY2xyLWljb24uaXMtaGlnaGxpZ2h0e2ZpbGw6IzRlYzBmZn1ib2R5LGh0bWx7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtwYWRkaW5nOjA7bWFyZ2luOjB9Ym9keS5zaG91bGQtbG9naW4gY2xyLW1vZGFsLGh0bWwu''@;'; put 'put ''c2hvdWxkLWxvZ2luIGNsci1tb2RhbHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWJvZHlbY2RzLXRoZW1lPWRhcmtdIGJ1dHRvbjpmb2N1c3tvdXRsaW5lOm5vbmV9Ym9keVtjZHMtdGhlbWU9ZGFya10gYnV0dG9uOmZvY3VzLXZpc2libGV7b3V0bGluZToxcHggc29saWQgcmdiKDI1NSwyNTUs''@;'; put 'put ''MjU1KX1ib2R5W2Nkcy10aGVtZT1saWdodF0gYnV0dG9uOmZvY3Vze291dGxpbmU6bm9uZX1ib2R5W2Nkcy10aGVtZT1saWdodF0gYnV0dG9uOmZvY3VzLXZpc2libGV7b3V0bGluZToxcHggc29saWQgcmdiKDAsMCwwKX1bY2RzLXRleHQ9bGFiZWxde2NvbG9yOnZhcigtLWNkcy1nbG9iYWwt''@;'; put 'put ''dHlwb2dyYXBoeS1jb2xvci0yMDApfVtjZHMtdGV4dD1sYWJlbExpbmtde2xpbmUtaGVpZ2h0OjEuOCFpbXBvcnRhbnR9W2Nkcy10ZXh0PWNhcHRpb25fY2xlYW5de2ZvbnQtc2l6ZTp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZh''@;'; put 'put ''cigtLWNkcy1nbG9iYWwtdHlwb2dyYXBoeS1jYXB0aW9uLWZvbnQtd2VpZ2h0KTtsaW5lLWhlaWdodDp2YXIoLS1jZHMtZ2xvYmFsLXR5cG9ncmFwaHktY2FwdGlvbi1saW5lLWhlaWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tY2RzLWdsb2JhbC10eXBvZ3JhcGh5LWNhcHRpb24tbGV0dGVy''@;'; put 'put ''LXNwYWNpbmcpfVtjZHMtdGV4dD1jYXB0aW9uX2NsZWFuXTphZnRlcixbY2RzLXRleHQ9Y2FwdGlvbl9jbGVhbl06YmVmb3Jle2Rpc3BsYXk6bm9uZX0ubG9nLXdyYXBwZXJ7bWluLWhlaWdodDo1MHB4O3BhZGRpbmc6MTBweDttYXJnaW4tdG9wOjEwcHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7''@;'; put 'put ''Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlMmUyO2hlaWdodDo0OHZoO292ZXJmbG93OmF1dG99LnNsaWRlcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMjBweDttYXJnaW4tbGVmdDo3NXB4O21hcmdpbi10b3A6NzBweDtoZWlnaHQ6NXB4O292ZXJmbG93LXg6aGlk''@;'; put 'put ''ZGVufS5saW5le3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6LjQ7YmFja2dyb3VuZDojNzNkNTQ0O3dpZHRoOjE1MCU7aGVpZ2h0OjVweH0uc3VibGluZXtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOiM3M2Q1NDQ7aGVpZ2h0OjVweH0uaW5je2FuaW1hdGlvbjppbmNyZWFzZSAycyBp''@;'; put 'put ''bmZpbml0ZX0uZGVje2FuaW1hdGlvbjpkZWNyZWFzZSAycyAuNXMgaW5maW5pdGV9QGtleWZyYW1lcyBpbmNyZWFzZXswJXtsZWZ0Oi01JTt3aWR0aDo1JX10b3tsZWZ0OjEzMCU7d2lkdGg6MTAwJX19QGtleWZyYW1lcyBkZWNyZWFzZXswJXtsZWZ0Oi04MCU7d2lkdGg6ODAlfXRve2xlZnQ6''@;'; put 'put ''MTEwJTt3aWR0aDoxMCV9fS5hcHAtbG9hZGluZ3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQ6IzMxNDM1MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ei1pbmRleDoyMDAwO3Bvc2l0aW9uOmZpeGVk''@;'; put 'put ''O2luc2V0OjB9LnNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5oLWF1dG97aGVpZ2h0OmF1dG99LmgtdW5zZXQtaXtoZWlnaHQ6dW5zZXQhaW1wb3J0YW50fS5taW4taC01MHZoe21pbi1oZWlnaHQ6NTB2aH0uaC0yNHZoLC5oLTI1dmh7aGVp''@;'; put 'put ''Z2h0OjI1dmh9LmgtNzB2aHtoZWlnaHQ6NzB2aH0uaC04MHZoe2hlaWdodDo4MHZofS5oLTEwMHtoZWlnaHQ6MTAwJX0udy01MHZ3e3dpZHRoOjUwdnd9LnctMTAwe3dpZHRoOjEwMCV9LnctMTAwLWl7d2lkdGg6MTAwJSFpbXBvcnRhbnR9LnctNDB7d2lkdGg6NDAlfS5taW4tdy0we21pbi13''@;'; put 'put ''aWR0aDowcHh9Lm14LTV7bWFyZ2luOjAgNXB4fS5teS01e21hcmdpbjo1cHggMH0ubXktMTV7bWFyZ2luOjE1cHggMH0ubXktMTAtbXgtYXV0b3ttYXJnaW46MTBweCBhdXRvfS5tLTB7bWFyZ2luOjAhaW1wb3J0YW50fS5tLTEwe21hcmdpbjoxMHB4fS5tdC0we21hcmdpbi10b3A6MH0ubXQt''@;'; put 'put ''MC1pe21hcmdpbi10b3A6MCFpbXBvcnRhbnR9Lm10LTMtbmVnYXRpdmV7bWFyZ2luLXRvcDotM3B4fS5tdC01e21hcmdpbi10b3A6NXB4fS5tdC01LWl7bWFyZ2luLXRvcDo1cHghaW1wb3J0YW50fS5tdC0ye21hcmdpbi10b3A6MnB4fS5tdC0yLWl7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50''@;'; put 'put ''fS5tdC0xMHttYXJnaW4tdG9wOjEwcHh9Lm10LTE1e21hcmdpbi10b3A6MTVweH0ubXQtMjB7bWFyZ2luLXRvcDoyMHB4fS5tbC0we21hcmdpbi1sZWZ0OjB9Lm1sLTN7bWFyZ2luLWxlZnQ6M3B4fS5tbC01e21hcmdpbi1sZWZ0OjVweH0ubWwtNS1pe21hcmdpbi1sZWZ0OjVweCFpbXBvcnRh''@;'; put 'put ''bnR9Lm1sLTEwe21hcmdpbi1sZWZ0OjEwcHh9Lm1sLTE1e21hcmdpbi1sZWZ0OjE1cHh9Lm1sLTIwe21hcmdpbi1sZWZ0OjIwcHh9Lm1sLTIwLWl7bWFyZ2luLWxlZnQ6MjBweCFpbXBvcnRhbnR9Lm1yLTB7bWFyZ2luLXJpZ2h0OjB9Lm1yLTV7bWFyZ2luLXJpZ2h0OjVweH0ubXItNWl7bWFy''@;'; put 'put ''Z2luLXJpZ2h0OjVweCFpbXBvcnRhbnR9Lm1yLTEwe21hcmdpbi1yaWdodDoxMHB4fS5tci0xMnttYXJnaW4tcmlnaHQ6MTJweH0ubXItMjB7bWFyZ2luLXJpZ2h0OjIwcHh9Lm1iLTB7bWFyZ2luLWJvdHRvbTowfS5tYi0waXttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50fS5tYi01e21hcmdp''@;'; put 'put ''bi1ib3R0b206NXB4fS5tYi0xMHttYXJnaW4tYm90dG9tOjEwcHh9Lm1iLTEwLWl7bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudH0ubWItMTV7bWFyZ2luLWJvdHRvbToxNXB4fS5tYi0yMHttYXJnaW4tYm90dG9tOjIwcHh9Lm1iLTMwe21hcmdpbi1ib3R0b206MzBweH0ucC0we3BhZGRp''@;'; put 'put ''bmc6MH0ucC0xMHtwYWRkaW5nOjEwcHh9LnBiLTB7cGFkZGluZy1ib3R0b206MH0ucGItMTB7cGFkZGluZy1ib3R0b206MTBweH0ucHktNXtwYWRkaW5nOjVweCAwfS5weS0xMHtwYWRkaW5nOjEwcHggMH0uYmFja2dyb3VuZC10cmFuc3BhcmVudHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5i''@;'; put 'put ''YWNrZ3JvdW5kLXRyYW5zcGFyZW50LWl7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnR9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIC5jb2xvci1ncmF5e2NvbG9yOiM1YTVhNWF9Ym9keVtjZHMtdGhlbWU9bGlnaHRdIC5jb2xvci1kYXJrLWdyYXl7Y29sb3I6IzQ5NTk2N31ib2R5W2Nk''@;'; put 'put ''cy10aGVtZT1saWdodF0gLmNvbG9yLWRhcmtlci1ncmF5e2NvbG9yOiMzMTQzNTF9LmNvbG9yLXdoaXRle2NvbG9yOiNmZmZ9LmNvbG9yLXdoaXRlLWl7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LmNvbG9yLWdyZWVue2NvbG9yOiM0YjllNGJ9LmNvbG9yLWRjLWdyZWVue2NvbG9yOiM4MWI0NDB9''@;'; put 'put ''LmNvbG9yLXJlZHtjb2xvcjojZTQ1NDU0fS5jb2xvci1vcmFuZ2V7Y29sb3I6I2U2N2UyMn0uY29sb3ItYmx1ZXtjb2xvcjojM2Y4Y2MzfS5jb2xvci15ZWxsb3d7Y29sb3I6I2YxYzQwZn0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmN1cnNvci1kZWZ1YWx0e2N1cnNvcjpkZWZh''@;'; put 'put ''dWx0fS5jdXJzb3ItZGVmYXVsdC1pe2N1cnNvcjpkZWZhdWx0IWltcG9ydGFudH0uYmFja2dyb3VuZC10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5wb2ludGVyLWV2ZW50cy1ub25le3BvaW50ZXItZXZlbnRzOm5vbmV9LndoaXRlc3BhY2Utbm93cmFwe3doaXRl''@;'; put 'put ''LXNwYWNlOm5vd3JhcH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZvbnQtc2l6ZS0xNXtmb250LXNpemU6MTVweH0uZm9udC1zaXplLTE4e2ZvbnQtc2l6ZToxOHB4fS5mb250LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS5mb250LWJvbGQtaXtmb250LXdlaWdodDo3MDAhaW1wb3J0''@;'; put 'put ''YW50fS5mb250LXdlaWdodC0zMDB7Zm9udC13ZWlnaHQ6MzAwfS5mb250LXdlaWdodC03MDB7Zm9udC13ZWlnaHQ6NzAwfS53b3JkLWJyZWFre3dvcmQtYnJlYWs6YnJlYWstd29yZH0ud29yZC1icmVhay1hbGx7d29yZC1icmVhazpicmVhay1hbGx9LnBvc2l0aW9uLXJlbGF0aXZle3Bvc2l0''@;'; put 'put ''aW9uOnJlbGF0aXZlfS5wb3NpdGlvbi1hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZC1ub25le2Rpc3BsYXk6bm9uZX0uZC1ibG9ja3tkaXNwbGF5OmJsb2NrfS5kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uZC1mbGV4e2Rpc3BsYXk6ZmxleH0uZC1jb250ZW50c3tk''@;'; put 'put ''aXNwbGF5OmNvbnRlbnRzfS5mbGV4LXVuc2V0e2ZsZXg6dW5zZXR9LmFsaWduLXNlbGYtZW5ke2FsaWduLXNlbGY6ZmxleC1lbmR9LmFsaWduLXNlbGYtc3RhcnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5hbGlnbi1pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5qdXN0aWZ5LWNv''@;'; put 'put ''bnRlbnQtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktY29udGVudC1jZW50ZXItaXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudH0uanVzdGlmeS1jb250ZW50LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWNvbnRlbnQtZW5k''@;'; put 'put ''e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uanVzdGlmeS1jb250ZW50LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY29udGVudC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZmxleC1jb2x1bW57ZmxleC1kaXJlY3Rpb246Y29s''@;'; put 'put ''dW1ufS5jbHItZ2FwLTV7Z2FwOjVweH0uY2xyLWdhcC0we2dhcDowfS5vdmVyZmxvdy1hdXRve292ZXJmbG93OmF1dG99LnotaW5kZXgtaGlnaGVzdHt6LWluZGV4OjEwMDAwMDAwfS52ZXJ0aWNhbC1hbGlnbi1taWRkbGV7dmVydGljYWwtYWxpZ246bWlkZGxlfS5pY29uLWRjLWZpbGx7Zmls''@;'; put 'put ''bDojODFiNDQwfS5kYXRhZ3JpZC1jdXN0b20tZm9vdGVyIC5kYXRhZ3JpZC1vdXRlci13cmFwcGVyLC50ZXh0LWFyZWEtZnVsbC13aWR0aCAuY2xyLWNvbnRyb2wtY29udGFpbmVyLC50ZXh0LWFyZWEtZnVsbC13aWR0aCAuY2xyLWNvbnRyb2wtY29udGFpbmVyIHRleHRhcmVhe3dpZHRoOjEw''@;'; put 'put ''MCV9LnRleHQtYXJlYS1mdWxsLXdpZHRoIGNsci10ZXh0YXJlYS1jb250YWluZXJ7bWFyZ2luOjAhaW1wb3J0YW50fS50ZXh0LWFyZWEtZnVsbC13aWR0aCAuY2xyLXRleHRhcmVhLXdyYXBwZXJ7bWFyZ2luOjAhaW1wb3J0YW50fS5wcm9ncmVzU3RhdGlje21hcmdpbi10b3A6LTZweCFpbXBv''@;'; put 'put ''cnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3otaW5kZXg6MTAwMDAhaW1wb3J0YW50fS5wcm9ncmVzcywucHJvZ3Jlc3Mtc3RhdGlje2JhY2tncm91bmQtY29sb3I6I2Y1ZjZmZTtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OjZweDttYXJnaW46MDtt''@;'; put 'put ''YXgtaGVpZ2h0Oi41ODMzMzNyZW07bWluLWhlaWdodDouMTY2NjY3cmVtO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO3dpZHRoOmNhbGMoMTAwJSAtIDYzcHgpfS5wcm9ncmVzcy5sb29wOmFmdGVye2FuaW1hdGlvbjpjbHItcHJvZ3Jlc3MtbG9vcGVyIDEuNXMgZWFzZS1pbi1vdXQg''@;'; put 'put ''aW5maW5pdGU7Y29udGVudDoiICI7dG9wOi4xNjY2NjdyZW07Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjojNjBiNTE1O3dpZHRoOjc1JX0uYmFkZ2Utd2FybmluZ3tjb2xvcjojZmZmIWltcG9ydGFudH0uY29udGVudC1j''@;'; put 'put ''b250YWluZXIgLmNvbnRlbnQtYXJlYSAuY2FyZC1oZWFkZXIgaDN7bWFyZ2luLXRvcDoxMHB4fS5tb2RhbC1oZWFkZXIgLmNsb3NlIGNsci1pY29ue2Rpc3BsYXk6bm9uZX0uc2hvdy1jbG9zZSAubW9kYWwtaGVhZGVyIC5jbG9zZSBjbHItaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztwb3Np''@;'; put 'put ''dGlvbjpyZWxhdGl2ZTt0b3A6LTE4cHg7cmlnaHQ6LTEwcHh9LmFsZXJ0LWFwcC1sZXZlbC5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZDojZDk0YjJlO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmV9LmNhcmQtaGVhZGVye2ZvbnQtd2VpZ2h0OjMwMH0uc2VsZWN0IHNlbGVjdDpmb2N1c3tib3JkZXIt''@;'; put 'put ''Ym90dG9tOjFweCBzb2xpZCAjNDk1OTY3O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZyx0cmFuc3BhcmVudCA5NSUsIzQ5NWE2NyAwKSBuby1yZXBlYXR9LmNsci10cmVlbm9kZS1jaGlsZHJlbnttYXJnaW4tbGVmdDouMnJlbSFpbXBvcnRhbnR9LnRhYmxlLWFjdGl2ZTpmb2N1''@;'; put 'put ''c3tiYWNrZ3JvdW5kOiNkOGUzZTl9Y2xyLXNlbGVjdC1jb250YWluZXIgLmNsci1jb250cm9sLWNvbnRhaW5lcixjbHItc2VsZWN0LWNvbnRhaW5lciAuY2xyLWNvbnRyb2wtY29udGFpbmVyIC5jbHItc2VsZWN0LXdyYXBwZXIsY2xyLXNlbGVjdC1jb250YWluZXIgc2VsZWN0e3dpZHRoOjEw''@;'; put 'put ''MCV9dGJvZHl7Zm9udC13ZWlnaHQ6NDAwfWgzLGg0e2NvbG9yOiM1ODU4NTg7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDoxcmVtO21hcmdpbi10b3A6MXJlbTttYXJnaW4tYm90dG9tOjB9aDEsaDJ7Y29sb3I6IzU4NTg1ODtmb250LXdlaWdodDo0''@;'; put 'put ''MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjJyZW07bWFyZ2luLXRvcDoxcmVtO21hcmdpbi1ib3R0b206MH1jbHItaWNvbi5pcy1pbmZve2ZpbGw6IzgwYjQ0MX0uZGF0YWdyaWQtaG9zdCwuZGF0YWdyaWQtb3ZlcmxheS13cmFwcGVye2Rpc3BsYXk6LW1zLWZsZXhib3g7''@;'; put 'put ''ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnR9LmJ0biAuY2xyLWxvYWRpbmctYnRuLWNvbnRlbnR7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYnRuLmJ0bi1kYW5nZXIsLmJ0bi5idG4td2FybmluZ3tib3JkZXItY29sb3I6I2VmNGYyZTtiYWNrZ3JvdW5kLWNvbG9yOiNkOTRiMmU7Y29s''@;'; put 'put ''b3I6I2ZmZn0uYnRuLmJ0bi1zbTpoYXMoY2xyLWljb24pe2xpbmUtaGVpZ2h0OjJ9LmQtbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5kLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5jbHItZmxleC0xe2ZsZXg6MX0uY2xyLWZsZXgtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNv''@;'; put 'put ''bHVtbn0uY2xyLWZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uYm9yZGVyLTB7Ym9yZGVyOjB9LmJveC1zaGFkb3ctbm9uZXtib3gtc2hhZG93Om5vbmV9LmJveC1zaGFkb3ctbm9uZS1pe2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9Lmh0Q3VzdG9tSGlkZGVue2Rpc3BsYXk6bm9uZX1i''@;'; put 'put ''b2R5W2Nkcy10aGVtZT1kYXJrXSAuaHREYXJre2JhY2tncm91bmQ6Izg4ODtjb2xvcjojZmZmfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgLmh0RGFya3tiYWNrZ3JvdW5kOiMzYzU2NjI7Y29sb3I6I2VlZX1ib2R5W2Nkcy10aGVtZT1kYXJrXSAuaGFuZHNvbnRhYmxlIC5k''@;'; put 'put ''YXJrVEg6bm90KC5wcmltYXJ5S2V5SGVhZGVyU3R5bGUpe2JhY2tncm91bmQ6IzQ4N2Q5Njtjb2xvcjojZWVlfWJvZHlbY2RzLXRoZW1lPWRhcmtdIC5oYW5kc29udGFibGUgLmRhcmtUSC5odF9faGlnaGxpZ2h0e2JhY2tncm91bmQ6IzNiNmI4MX0uaGFuZHNvbnRhYmxlIC5odEF1dG9jb21w''@;'; put 'put ''bGV0ZUFycm93e2NvbG9yOiM4MjgyODJ9LmhhbmRzb250YWJsZS5saXN0Ym94e3BhZGRpbmc6NXB4IDAgNXB4IDVweDtib3gtc2hhZG93OjAgNHB4IDIwcHggIzAwMDAwMDcwfS5oYW5kc29udGFibGUgdGQuaHRJbnZhbGlke2JhY2tncm91bmQ6I2U2MjcwMGFkIWltcG9ydGFudDtib3JkZXI6''@;'; put 'put ''MXB4IHNvbGlkIHJlZCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9LmhhbmRzb250YWJsZSAubnVtZXJpY0xpc3Rib3h7dGV4dC1hbGlnbjpyaWdodH0ubWFyZ2luLXRvcC0yMHttYXJnaW4tdG9wOjIwcHh9LmhpZGRlbntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS51bnZpc2libGV7''@;'; put 'put ''dmlzaWJpbGl0eTpoaWRkZW59Lm5vLWJvcmRlcnN7Ym9yZGVyOjB9LmNhcmQubm8tYm9yZGVycywuY2FyZC5uby1ib3JkZXJzIC5jYXJkLWhlYWRlciwuY2FyZC5uby1ib3JkZXJzIC5jYXJkLWJsb2NrLC5jYXJkLm5vLWJvcmRlcnMgLmNhcmQtZm9vdGVyLC5jYXJkLm5vLWlubmVyLWJvcmRl''@;'; put 'put ''cnMgLmNhcmQtaGVhZGVyLC5jYXJkLm5vLWlubmVyLWJvcmRlcnMgLmNhcmQtYmxvY2ssLmNhcmQubm8taW5uZXItYm9yZGVycyAuY2FyZC1mb290ZXJ7Ym9yZGVyOjA7Ym94LXNoYWRvdzpub25lfUBtZWRpYSAobWluLXdpZHRoOiA1NzZweCl7LmQtc20tbm9uZXtkaXNwbGF5Om5vbmUhaW1w''@;'; put 'put ''b3J0YW50fS5kLXNtLWlubGluZXtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnR9LmQtc20taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0uZC1zbS1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uZC1zbS10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFu''@;'; put 'put ''dH0uZC1zbS10YWJsZS1jZWxse2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmQtc20tZmxleHtkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5kLXNtLWlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS5jbHItZmxleC1zbS1jb2x1bW57ZmxleC1kaXJlY3Rpb246''@;'; put 'put ''Y29sdW1ufS5jbHItZmxleC1zbS1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5jbHItZ2FwLXNtLTV7Z2FwOjVweH0uY2xyLWdhcC1zbS0we2dhcDowfX1AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpey5kLW1kLW5vbmV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZC1tZC1pbmxpbmV7ZGlzcGxh''@;'; put 'put ''eTppbmxpbmUhaW1wb3J0YW50fS5kLW1kLWlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnR9LmQtbWQtYmxvY2t7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmQtbWQtdGFibGV7ZGlzcGxheTp0YWJsZSFpbXBvcnRhbnR9LmQtbWQtdGFibGUtY2VsbHtkaXNwbGF5''@;'; put 'put ''OnRhYmxlLWNlbGwhaW1wb3J0YW50fS5kLW1kLWZsZXh7ZGlzcGxheTpmbGV4IWltcG9ydGFudH0uZC1tZC1pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudH0uY2xyLWZsZXgtbWQtY29sdW1ue2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2xyLWZsZXgtbWQtcm93e2Zs''@;'; put 'put ''ZXgtZGlyZWN0aW9uOnJvd30uY2xyLWdhcC1tZC01e2dhcDo1cHh9LmNsci1nYXAtbWQtMHtnYXA6MH19QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KXsuZC1sZy1ub25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmQtbGctaW5saW5le2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZC1sZy1p''@;'; put 'put ''bmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5kLWxnLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5kLWxnLXRhYmxle2Rpc3BsYXk6dGFibGUhaW1wb3J0YW50fS5kLWxnLXRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH0uZC1s''@;'; put 'put ''Zy1mbGV4e2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnR9LmQtbGctaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleCFpbXBvcnRhbnR9LmNsci1mbGV4LWxnLWNvbHVtbntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNsci1mbGV4LWxnLXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNsci1nYXAt''@;'; put 'put ''bGctNXtnYXA6NXB4fS5jbHItZ2FwLWxnLTB7Z2FwOjB9fS5kYXRhZ3JpZC1ib2R5e3BhZGRpbmctYm90dG9tOjJyZW0haW1wb3J0YW50fS5hYm9ydE1zZ3t3aGl0ZS1zcGFjZTpwcmUtd3JhcDtmb250LWZhbWlseTptb25vc3BhY2V9I2dyYXBoIHN2Z3toZWlnaHQ6MTAwJTt3aWR0aDoxMDAl''@;'; put 'put ''fS5uby10YWJsZS1zZWxlY3RlZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dmFyKC0tY2xyLXZlcnRpY2FsLW5hdi1iZy1jb2xvcik7ei1pbmRl''@;'; put 'put ''eDoxMDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowfS5jb3B5UmlnaHR7YmFja2dyb3VuZDojNDk1OTY3IWltcG9ydGFudDtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo1cHggMCA0''@;'; put 'put ''cHg7ei1pbmRleDoxMDB9Lm5hdi10cmVlPmNsci10cmVlLW5vZGUuY2xyLWV4cGFuZGVke2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH1jbHItdHJlZS1ub2Rle292ZXJmbG93LXk6dmlzaWJsZX1jbHItdHJlZS1ub2RlOmZvY3Vze291dGxpbmU6bm9uZSFpbXBvcnRhbnR9Y2xyLXRy''@;'; put 'put ''ZWUtbm9kZSAuY2xyLXRyZWVub2RlLWNhcmV0e3dpZHRoOmF1dG8haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudH1jbHItdHJlZS1ub2RlIC5jbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJ7cGFkZGluZzowIDhweDt3aWR0aDphdXRvO2hlaWdodDphdXRvO2FsaWduLWl0ZW1z''@;'; put 'put ''OmNlbnRlcn1jbHItdHJlZS1ub2RlIC5jbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyOmZvY3Vze291dGxpbmU6bm9uZSFpbXBvcnRhbnR9LmNsci10cmVlbm9kZS1jb250ZW50IHB7d2hpdGUtc3BhY2U6bm93cmFwfS5zZWFyY2gtbm9kZXttYXJnaW4tYm90dG9tOjVweH0udHJlZS1z''@;'; put 'put ''ZWFyY2gtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS50cmVlLXNlYXJjaC13cmFwcGVyIGNsci1pbnB1dC1jb250YWluZXJ7bWFyZ2luOjB9LnRyZWUtc2VhcmNoLXdyYXBwZXIgY2xyLWljb257cG9zaXRpb246YWJzb2x1dGU7cmln''@;'; put 'put ''aHQ6MDtib3R0b206MDttYXJnaW46MCAwIDNweDtjdXJzb3I6cG9pbnRlcn0uY2xyLXRyZWUtbm9kZXtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0uY29udGVudC1jb250YWluZXJ7d2lkdGg6MTAwJX1ALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCl7Lnd0SG9sZGVye3dpZHRoOjEwMCUh''@;'; put 'put ''aW1wb3J0YW50fX1pbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX1AbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXtjbHItdHJlZS1ub2RlLmNsci1leHBhbmRlZHtwYWRkaW5nLWJvdHRvbToyMHB4O21pbi1oZWln''@;'; put 'put ''aHQ6YXV0b30uY2xyLXRyZWUtbm9kZXttaW4taGVpZ2h0OjI0cHh9LmNsci10cmVlbm9kZS1jaGlsZHJlbntvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5jbHItdHJlZW5vZGUtY29udGVudCAuY2xyLWljb24sLmNsci10cmVlbm9kZS1jb250ZW50IGNsci1pY29ue21pbi13aWR0aDoxNnB4''@;'; put 'put ''O21pbi1oZWlnaHQ6MTZweH0udHJlZS1zZWFyY2gtd3JhcHBlciBjbHItaWNvbntib3R0b206MnB4fS5jb250ZW50LWNvbnRhaW5lcntoZWlnaHQ6MTAwJX0uY29udGVudC1hcmVhPi5jYXJke21hcmdpbi1ib3R0b206MjBweH0ucmVjb3JkLWVkaXQtbW9kYWwgdGV4dGFyZWF7bWluLWhlaWdo''@;'; put 'put ''dDo0MnB4fX0uYm9yZGVyLWJvdHRvbS1kaXZpZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkM2QzZDN9LmxvYWRpbmdTcGlubmVye2hlaWdodDo3MHZoO2ZsZXg6MTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRl''@;'; put 'put ''bXM6Y2VudGVyfS5kaXNhYmxlLXBhc3N3b3JkLW1hbmFnZXJ7LXdlYmtpdC10ZXh0LXNlY3VyaXR5OmRpc2M7LW1vei10ZXh0LXNlY3VyaXR5OmRpc2M7dGV4dC1zZWN1cml0eTpkaXNjO2ZvbnQtZmFtaWx5OnRleHQtc2VjdXJpdHktZGlzY30ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9''@;'; put 'put ''aHIubGlnaHR7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RlZGVkZX0uc3Bpbm5lcntiYWNrZ3JvdW5kOnVybCgvU0FTU3RvcmVkUHJvY2Vzcy8/X1BST0dSQU09cFpLZDZGOTVqRUN2UlFsTjBMQ2ZkQT09L3dlYjkvaW1hZ2VzL3NwaW5uZXIuMTZmNzYzY2ViYzZiNjRkZi1z''@;'; put 'put ''dmcpIWltcG9ydGFudH0uY2xyLXNlbGVjdC13cmFwcGVyOmFmdGVye2JhY2tncm91bmQ6dXJsKC9TQVNTdG9yZWRQcm9jZXNzLz9fUFJPR1JBTT1wWktkNkY5NWpFQ3ZSUWxOMExDZmRBPT0vd2ViOS9pbWFnZXMvY2FyZXQuNjVmMWZjMGFjYmU0YzdmZi1zdmcpIWltcG9ydGFudH1ib2R5W2Nk''@;'; put 'put ''cy10aGVtZT1kYXJrXSAudGFibGUtc2VhcmNoLXdyYXBwZXJ7YmFja2dyb3VuZDojMjEzMzNifS50YWJsZS1zZWFyY2gtd3JhcHBlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO21pbi13aWR0aDox''@;'; put 'put ''NzBweH0udGFibGUtc2VhcmNoLXdyYXBwZXIgLmlucHV0LXdyYXBwZXIgY2xyLWljb24sLnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFwcGVyIC5zcGlubmVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE5cHg7dG9wOjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyIC5pbnB1dC13cmFw''@;'; put 'put ''cGVyIGNsci1pY29ue2N1cnNvcjpwb2ludGVyfS50YWJsZS1zZWFyY2gtd3JhcHBlciAuaW5wdXQtd3JhcHBlciBbbmFtZT1zZWFyY2gtaW5wdXRde3BhZGRpbmctcmlnaHQ6MjVweH0udGFibGUtc2VhcmNoLXdyYXBwZXIgY2xyLWlucHV0LWNvbnRhaW5lcnttYXJnaW4tdG9wOi01cHg7bWFy''@;'; put 'put ''Z2luLXJpZ2h0OjB9LnRhYmxlLXNlYXJjaC13cmFwcGVyIGNsci1pbnB1dC1jb250YWluZXIgbGFiZWx7ZGlzcGxheTpub25lfS50YWJsZS1zZWFyY2gtd3JhcHBlciBjbHItY2hlY2tib3gtY29udGFpbmVye21hcmdpbi10b3A6MH0udGFibGUtc2VhcmNoLXdyYXBwZXIgaW5wdXR7Ym9yZGVy''@;'; put 'put ''LWJvdHRvbTpub25lO2JvcmRlcjoxcHggc29saWQgIzk5OX0udGFibGUtc2VhcmNoLXdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sLnRhYmxlLXNlYXJjaC13cmFwcGVyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpu''@;'; put 'put ''b25lO21hcmdpbjowfS50YWJsZS1zZWFyY2gtd3JhcHBlciBpbnB1dFt0eXBlPW51bWJlcl17LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZH0uZGMtbG9ja2VkLWNvbnRyb2x7b3BhY2l0eTouNDtjdXJzb3I6bm90LWFsbG93ZWQhaW1wb3J0YW50fS5saW5rLWl0e2N1cnNvcjpwb2ludGVyO3Rl''@;'; put 'put ''eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Cg=='';'; 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;